diff --git a/backend/globals.js b/backend/globals.js index 17d69ec..2455ae5 100644 --- a/backend/globals.js +++ b/backend/globals.js @@ -1,5 +1,7 @@ // -- Excalidraw settings -- -// @TODO replace with "true" once Preact is integrated to ExcalidrawCanvas +// @TODO replace with "true" once Preact is integrated into ExcalidrawCanvas var process = { env: { IS_PREACT: "false" } }; +// @TODO probably remove or update once Preact is integrated into ExcalidrawCanvas window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = { isDisabled: true }; +window.EXCALIDRAW_ASSET_PATH = "/_api/public/excalidraw/"; // -- / -- diff --git a/frontend/typescript/excalidraw_canvas/README.md b/frontend/typescript/excalidraw_canvas/README.md index 955d111..43b1d4c 100644 --- a/frontend/typescript/excalidraw_canvas/README.md +++ b/frontend/typescript/excalidraw_canvas/README.md @@ -13,3 +13,13 @@ Created with commands: - `npm i -E roughjs @excalidraw/laser-pointer jotai browser-fs-access` - `npm i -D esbuild typescript` - `locales/en.json` downloaded from `https://raw.githubusercontent.com/excalidraw/excalidraw/refs/tags/v0.17.6/src/locales/en.json` +- `excalidraw-assets-dev` and `excalidraw-assets` from `FastWave2.0\frontend\typescript\excalidraw_canvas\node_modules\@excalidraw\excalidraw\dist` copied into `FastWave2.0\public\excalidraw` +- Lines added to `FastWave2.0\backend\globals.js`: + ```js + // -- Excalidraw settings -- + // @TODO replace with "true" once Preact is integrated into ExcalidrawCanvas + var process = { env: { IS_PREACT: "false" } }; + // @TODO probably remove or update once Preact is integrated into ExcalidrawCanvas + window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = { isDisabled: true }; + window.EXCALIDRAW_ASSET_PATH = "/_api/public/excalidraw/"; + ``` diff --git a/public/excalidraw/excalidraw-assets-dev/Assistant-Bold.woff2 b/public/excalidraw/excalidraw-assets-dev/Assistant-Bold.woff2 new file mode 100644 index 0000000..751ba1c Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Assistant-Bold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/Assistant-Medium.woff2 b/public/excalidraw/excalidraw-assets-dev/Assistant-Medium.woff2 new file mode 100644 index 0000000..d5d809a Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Assistant-Medium.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/Assistant-Regular.woff2 b/public/excalidraw/excalidraw-assets-dev/Assistant-Regular.woff2 new file mode 100644 index 0000000..e17d6ec Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Assistant-Regular.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/Assistant-SemiBold.woff2 b/public/excalidraw/excalidraw-assets-dev/Assistant-SemiBold.woff2 new file mode 100644 index 0000000..d17aa74 Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Assistant-SemiBold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/Cascadia.woff2 b/public/excalidraw/excalidraw-assets-dev/Cascadia.woff2 new file mode 100644 index 0000000..b2eae9f Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Cascadia.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/Virgil.woff2 b/public/excalidraw/excalidraw-assets-dev/Virgil.woff2 new file mode 100644 index 0000000..cb22225 Binary files /dev/null and b/public/excalidraw/excalidraw-assets-dev/Virgil.woff2 differ diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ar-SA-json-f35c4f87e6e2dcf7c20a.js b/public/excalidraw/excalidraw-assets-dev/locales/ar-SA-json-f35c4f87e6e2dcf7c20a.js new file mode 100644 index 0000000..6f74a2e --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ar-SA-json-f35c4f87e6e2dcf7c20a.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ar-SA-json"],{ + +/***/ "../../locales/ar-SA.json": +/*!********************************!*\ + !*** ../../locales/ar-SA.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"لصق","pasteAsPlaintext":"اللصق كنص عادي","pasteCharts":"لصق الرسوم البيانية","selectAll":"تحديد الكل","multiSelect":"إضافة عنصر للتحديد","moveCanvas":"نقل لوح الرسم","cut":"قص","copy":"نسخ","copyAsPng":"نسخ إلى الحافظة بصيغة PNG","copyAsSvg":"نسخ إلى الحافظة بصيغة SVG","copyText":"نسخ إلى الحافظة كنص","bringForward":"جلب للأمام","sendToBack":"أرسل للخلف","bringToFront":"أحضر للأمام","sendBackward":"أرسل للخلف","delete":"حذف","copyStyles":"نسخ الأنماط","pasteStyles":"لصق الأنماط","stroke":"الخط","background":"الخلفية","fill":"التعبئة","strokeWidth":"سُمك الخط","strokeStyle":"نمط الخط","strokeStyle_solid":"متصل","strokeStyle_dashed":"متقطع","strokeStyle_dotted":"منقط","sloppiness":"الإمالة","opacity":"الشفافية","textAlign":"محاذاة النص","edges":"الحواف","sharp":"حادة","round":"دائرية","arrowheads":"رؤوس الأسهم","arrowhead_none":"لا شيء","arrowhead_arrow":"سهم","arrowhead_bar":"شريط","arrowhead_dot":"نقطة","arrowhead_triangle":"مثلث","fontSize":"حجم الخط","fontFamily":"نوع الخط","addWatermark":"إضافة \\"مصنوعة بواسطة Excalidraw\\"","handDrawn":"رسم باليد","normal":"عادي","code":"رمز","small":"صغير","medium":"متوسط","large":"كبير","veryLarge":"كبير جدا","solid":"كامل","hachure":"خطوط","zigzag":"متعرج","crossHatch":"خطوط متقطعة","thin":"نحيف","bold":"داكن","left":"الـيسار","center":"وسط","right":"يمين","extraBold":"عريض","architect":"معماري","artist":"رسام","cartoonist":"كرتوني","fileTitle":"إسم الملف","colorPicker":"منتقي اللون","canvasColors":"تستخدم على القماش","canvasBackground":"خلفية اللوحة","drawingCanvas":"لوحة الرسم","layers":"الطبقات","actions":"الإجراءات","language":"اللغة","liveCollaboration":"التعاون المباشر...","duplicateSelection":"تكرار","untitled":"غير معنون","name":"الاسم","yourName":"اسمك","madeWithExcalidraw":"مصنوعة بواسطة Excalidraw","group":"تحديد مجموعة","ungroup":"إلغاء تحديد مجموعة","collaborators":"المتعاونون","showGrid":"إظهار الشبكة","addToLibrary":"أضف إلى المكتبة","removeFromLibrary":"حذف من المكتبة","libraryLoadingMessage":"جارٍ تحميل المكتبة…","libraries":"تصفح المكتبات","loadingScene":"جاري تحميل المشهد…","align":"محاذاة","alignTop":"محاذاة إلى اﻷعلى","alignBottom":"محاذاة إلى اﻷسفل","alignLeft":"محاذاة إلى اليسار","alignRight":"محاذاة إلى اليمين","centerVertically":"توسيط عمودي","centerHorizontally":"توسيط أفقي","distributeHorizontally":"التوزيع الأفقي","distributeVertically":"التوزيع عمودياً","flipHorizontal":"قلب عامودي","flipVertical":"قلب أفقي","viewMode":"نمط العرض","share":"مشاركة","showStroke":"إظهار منتقي لون الخط","showBackground":"إظهار منتقي لون الخلفية","toggleTheme":"غير النمط","personalLib":"المكتبة الشخصية","excalidrawLib":"مكتبتنا","decreaseFontSize":"تصغير حجم الخط","increaseFontSize":"تكبير حجم الخط","unbindText":"فك ربط النص","bindText":"ربط النص بالحاوية","createContainerFromText":"نص مغلف في حاوية","link":{"edit":"تعديل الرابط","editEmbed":"تحرير الرابط وإدراجه","create":"إنشاء رابط","createEmbed":"إنشاء رابط و إدراجه","label":"رابط","labelEmbed":"رابط و إدراج","empty":"لم يتم تعيين رابط"},"lineEditor":{"edit":"تحرير السطر","exit":"الخروج من المُحرر"},"elementLock":{"lock":"قفل","unlock":"فتح","lockAll":"قفل الكل","unlockAll":"فتح الكل"},"statusPublished":"نُشر","sidebarLock":"إبقاء الشريط الجانبي مفتوح","selectAllElementsInFrame":"تحديد جميع العناصر في الإطار","removeAllElementsFromFrame":"إزالة جميع العناصر من الإطار","eyeDropper":"اختيار اللون من القماش"},"library":{"noItems":"لا توجد عناصر أضيفت بعد...","hint_emptyLibrary":"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.","hint_emptyPrivateLibrary":"حدد عنصر على القماش لإضافته هنا."},"buttons":{"clearReset":"إعادة تعيين اللوحة","exportJSON":"صدر الملف","exportImage":"تصدير الصورة...","export":"حفظ إلى...","copyToClipboard":"نسخ إلى الحافظة","save":"احفظ للملف الحالي","saveAs":"حفظ كـ","load":"فتح","getShareableLink":"احصل على رابط المشاركة","close":"غلق","selectLanguage":"اختر اللغة","scrollBackToContent":"الرجوع إلى المحتوى","zoomIn":"تكبير","zoomOut":"تصغير","resetZoom":"إعادة تعيين الشاشة","menu":"القائمة","done":"تم","edit":"تعديل","undo":"تراجع","redo":"إعادة تنفيذ","resetLibrary":"إعادة ضبط المكتبة","createNewRoom":"إنشاء غرفة جديدة","fullScreen":"شاشة كاملة","darkMode":"الوضع المظلم","lightMode":"الوضع المضيء","zenMode":"وضع التأمل","objectsSnapMode":"التقط إلى العناصر","exitZenMode":"إلغاء الوضع الليلى","cancel":"إلغاء","clear":"مسح","remove":"إزالة","embed":"تبديل الإدراج","publishLibrary":"انشر","submit":"أرسل","confirm":"تأكيد","embeddableInteractionButton":"اضغط للتفاعل"},"alerts":{"clearReset":"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟","couldNotCreateShareableLink":"تعذر إنشاء رابطة المشاركة.","couldNotCreateShareableLinkTooBig":"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا","couldNotLoadInvalidFile":"تعذر التحميل، الملف غير صالح","importBackendFailed":"فشل الاستيراد من الخادوم.","cannotExportEmptyCanvas":"لا يمكن تصدير لوحة فارغة.","couldNotCopyToClipboard":"تعذر النسخ إلى الحافظة.","decryptFailed":"تعذر فك تشفير البيانات.","uploadedSecurly":"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.","loadSceneOverridePrompt":"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟","collabStopOverridePrompt":"إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟\\n\\n(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)","errorAddingToLibrary":"تعذر إضافة العنصر للمكتبة","errorRemovingFromLibrary":"تعذر إزالة العنصر من المكتبة","confirmAddLibrary":"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟","imageDoesNotContainScene":"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟","cannotRestoreFromImage":"تعذر استعادة المشهد من ملف الصورة","invalidSceneUrl":"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.","resetLibrary":"هذا سوف يمسح مكتبتك. هل أنت متأكد؟","removeItemsFromsLibrary":"حذف {{count}} عنصر (عناصر) من المكتبة؟","invalidEncryptionKey":"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.","collabOfflineWarning":"لا يوجد اتصال بالانترنت.\\nلن يتم حفظ التغييرات التي قمت بها!"},"errors":{"unsupportedFileType":"نوع الملف غير مدعوم.","imageInsertError":"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...","fileTooBig":"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.","svgImageInsertError":"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.","failedToFetchImage":"","invalidSVGString":"SVG غير صالح.","cannotResolveCollabServer":"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.","importLibraryError":"تعذر تحميل المكتبة","collabSaveFailed":"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.","collabSaveFailed_sizeExceeded":"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.","brave_measure_text_error":{"line1":"يبدو أنك تستخدم متصفح Brave مع إعداد حظر صارم لتتبع البصمة.","line2":"قد يؤدي هذا إلى كسر عناصر النص في الرسومات الخاصة بك.","line3":"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع هذه الخطوات لفعل ذلك.","line4":"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة بلاغ على حسابنا في GitHub، أو راسلنا على Discord"},"libraryElementTypeError":{"embeddable":"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.","image":"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"}},"toolBar":{"selection":"تحديد","image":"إدراج صورة","rectangle":"مستطيل","diamond":"مضلع","ellipse":"دائرة","arrow":"سهم","line":"خط","freedraw":"رسم","text":"نص","library":"مكتبة","lock":"الحفاظ على أداة التحديد نشطة بعد الرسم","penMode":"وضع القلم - امنع اللمس","link":"إضافة/تحديث الرابط للشكل المحدد","eraser":"ممحاة","frame":"أداة الإطار","embeddable":"تضمين ويب","laser":"مؤشر ليزر","hand":"يد (أداة الإزاحة)","extraTools":"المزيد من أﻷدوات"},"headings":{"canvasActions":"إجراءات اللوحة","selectedShapeActions":"إجراءات الشكل المحدد","shapes":"الأشكال"},"hints":{"canvasPanning":"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد","linearElement":"انقر لبدء نقاط متعددة، اسحب لخط واحد","freeDraw":"انقر واسحب، افرج عند الانتهاء","text":"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار","embeddable":"اضغط مع السحب لإنشاء موقع ويب مضمّن","text_selected":"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص","text_editing":"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل","linearElementMulti":"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء","lockAngle":"يمكنك تقييد الزاوية بالضغط على SHIFT","resize":"يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،\\nاضغط على ALT لتغيير الحجم من المركز","resizeImage":"يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،\\nاضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز","rotate":"يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران","lineEditor_info":"اضغط على مفتاح (Ctrl أو Cmd) و انقر بشكل مزدوج، أو اضغط على مفتاحي (Ctrl أو Cmd) و (Enter) لتعديل النقاط","lineEditor_pointSelected":"اضغط على حذف لإزالة النقطة (النِّقَاط)، Ctrl/Cmd+D للتكرار، أو اسحب للانتقال","lineEditor_nothingSelected":"اختر نقطة لتعديلها (اضغط على SHIFT لتحديد عدة نِقَاط),\\nأو اضغط على ALT و انقر بالفأرة لإضافة نِقَاط جديدة","placeImage":"انقر لوضع الصورة، أو انقر واسحب لتعيين حجمها يدوياً","publishLibrary":"نشر مكتبتك","bindTextToElement":"اضغط على إدخال لإضافة نص","deepBoxSelect":"اضغط على Ctrl\\\\Cmd للاختيار العميق، ولمنع السحب","eraserRevert":"اضغط على Alt لاستعادة العناصر المعلَّمة للحذف","firefox_clipboard_write":"يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم \\"dom.events.asyncClipboard.clipboardItem\\" إلى \\"true\\". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة \\"about:config\\".","disableSnapping":"اضغط على Ctrl أو Cmd لتعطيل الالتقاط"},"canvasError":{"cannotShowPreview":"تعذر عرض المعاينة","canvasTooBig":"قد تكون اللوحة كبيرة جداً.","canvasTooBigTip":"نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً."},"errorSplash":{"headingMain":"حدث خطأ. حاول .","clearCanvasMessage":"إذا لم تعمل إعادة التحميل، حاول مرة أخرى ","clearCanvasCaveat":" هذا سيؤدي إلى فقدان العمل ","trackedToSentry":"تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.","openIssueMessage":"حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة نرجو المتابعة على . نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.","sceneContent":"محتوى المشهد:"},"roomDialog":{"desc_intro":"يمكنك دعوة الآخرين لمشاركتك نفس الجلسة التي تعمل عليها.","desc_privacy":"لا تقلق، الجلسة تستخدم التشفير من النهاية إلى النهاية، لذلك فإن أي شيء ترسمه سيبقى خاصاً. لن يتمكن حتى الخادوم الخاص بنا من رؤية ما توصلت إليه.","button_startSession":"بدء الجلسة","button_stopSession":"إيقاف الجلسة","desc_inProgressIntro":"تجري الآن المشاركة الحية.","desc_shareLink":"شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:","desc_exitSession":"إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد، محليا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، و سيظلون قادرين على التعاون في إصدارهم.","shareTitle":"الانضمام إلى جلسة تعاون حية على Excalidraw"},"errorDialog":{"title":"خطأ"},"exportDialog":{"disk_title":"حفظ الملف للجهاز","disk_details":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً.","disk_button":"إحفظ لملف","link_title":"رابط قابل للمشاركة","link_details":"صدر الملف للمشاهدة فقط.","link_button":"التصدير كرابط","excalidrawplus_description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.","excalidrawplus_button":"تصدير","excalidrawplus_exportError":"تعذر التصدير إلى +Excalidraw في الوقت الحالي..."},"helpDialog":{"blog":"اقرأ مدونتنا","click":"انقر","deepSelect":"تحديد عميق","deepBoxSelect":"تحديد عميق داخل المربع، ومنع السحب","curvedArrow":"سهم مائل","curvedLine":"خط مائل","documentation":"دليل الاستخدام","doubleClick":"انقر مرتين","drag":"اسحب","editor":"المحرر","editLineArrowPoints":"تحرير سطر/نقاط سهم","editText":"تعديل النص / إضافة تسمية","github":"عثرت على مشكلة؟ إرسال","howto":"اتبع التعليمات","or":"أو","preventBinding":"منع ارتبط السهم","tools":"الأدوات","shortcuts":"اختصارات لوحة المفاتيح","textFinish":"إنهاء التعديل (محرر النص)","textNewLine":"أضف سطر جديد (محرر نص)","title":"المساعدة","view":"عرض","zoomToFit":"تكبير للملائمة","zoomToSelection":"تكبير للعنصر المحدد","toggleElementLock":"إغلاق/فتح المحدد","movePageUpDown":"نقل الصفحة أعلى/أسفل","movePageLeftRight":"نقل الصفحة يسار/يمين"},"clearCanvasDialog":{"title":"مسح اللوحة"},"publishDialog":{"title":"نشر المكتبة","itemName":"إسم العنصر","authorName":"إسم المؤلف","githubUsername":"اسم المستخدم في جيت هب","twitterUsername":"اسم المستخدم في تويتر","libraryName":"اسم المكتبة","libraryDesc":"وصف المكتبة","website":"الموقع","placeholder":{"authorName":"اسمك أو اسم المستخدم","libraryName":"اسم مكتبتك","libraryDesc":"وصف مكتبتك لمساعدة الناس على فهم استخدامها","githubHandle":"معالج GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة","twitterHandle":"اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر","website":"رابط إلى موقعك الشخصي أو في مكان آخر (اختياري)"},"errors":{"required":"مطلوب","website":"أدخل عنوان URL صالح"},"noteDescription":"تقديم مكتبتك لتضمينها في مستودع المكتبة العامة لأشخاص آخرين لاستخدامها في رسومهم.","noteGuidelines":"تحتاج المكتبة إلى الموافقة أولا. يرجى قراءة المعايير قبل تقديمها. سوف تحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكن ليس مطلوبا بشكل صارم.","noteLicense":"تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت MIT ترخيص، ما يعني أن لأي أحد الحق في استخدامها دون قيود.","noteItems":"يجب أن يكون لكل عنصر مكتبة اسمه الخاص حتى يكون قابلاً للتصفية. سيتم تضمين عناصر المكتبة التالية:","atleastOneLibItem":"يرجى تحديد عنصر مكتبة واحد على الأقل للبدء","republishWarning":"ملاحظة: بعض العناصر المحددة معينة على أنه نشرها أو تقديمها من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها."},"publishSuccessDialog":{"title":"تم إرسال المكتبة","content":"شكرا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة"},"confirmDialog":{"resetLibrary":"إعادة ضبط المكتبة","removeItemsFromLib":"إزالة العناصر المحددة من المكتبة"},"imageExportDialog":{"header":"تصدير الصورة","label":{"withBackground":"الخلفية","onlySelected":"المحدد فقط","darkMode":"الوضع الداكن","embedScene":"تضمين المشهد","scale":"الحجم","padding":"الهوامش"},"tooltip":{"embedScene":"سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدّر بحيث يمكن استعادة المشهد منه.\\nسيزيد حجم الملف المصدر."},"title":{"exportToPng":"تصدير بصيغة PNG","exportToSvg":"تصدير بصيغة SVG","copyPngToClipboard":"نسخ الـ PNG إلى الحافظة"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"نسخ إلى الحافظة"}},"encrypted":{"tooltip":"رسوماتك مشفرة من النهاية إلى النهاية حتى أن خوادم Excalidraw لن تراها أبدا.","link":"مشاركة المدونة في التشفير من النهاية إلى النهاية في Excalidraw"},"stats":{"angle":"الزاوية","element":"عنصر","elements":"العناصر","height":"الارتفاع","scene":"المشهد","selected":"المحدد","storage":"التخزين","title":"إحصائيات للمهووسين","total":"المجموع","version":"الإصدار","versionCopy":"انقر للنسخ","versionNotAvailable":"الإصدار غير متوفر","width":"العرض"},"toast":{"addedToLibrary":"تمت الاضافة الى المكتبة!","copyStyles":"نسخت الانماط.","copyToClipboard":"نسخ إلى الحافظة.","copyToClipboardAsPng":"تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG\\n({{exportColorScheme}})","fileSaved":"تم حفظ الملف.","fileSavedToFilename":"حفظ باسم {filename}","canvas":"لوحة الرسم","selection":"العنصر المحدد","pasteAsSingleElement":"استخدم {{shortcut}} للصق كعنصر واحد،\\nأو لصق في محرر نص موجود","unableToEmbed":"تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغاً على GitHub لطلب عنوان Url القائمة البيضاء","unrecognizedLinkFormat":"الرابط الذي ضمنته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص \'المضمن\' المُزوَد من موقع المصدر"},"colors":{"transparent":"شفاف","black":"أسود","white":"أبيض","red":"أحمر","pink":"وردي","grape":"عنبي","violet":"بنفسجي","gray":"رمادي","blue":"أزرق","cyan":"سماوي","teal":"أزرق مخضر","green":"أخضر","yellow":"أصفر","orange":"برتقالي","bronze":"برونزي"},"welcomeScreen":{"app":{"center_heading":"جميع بياناتك محفوظة محليا في المتصفح الخاص بك.","center_heading_plus":"هل تريد الذهاب إلى Excalidraw+ بدلاً من ذلك؟","menuHint":"التصدير والتفضيلات واللغات ..."},"defaults":{"menuHint":"التصدير والتفضيلات وغيرها...","center_heading":"الرسم البياني التصويري. بشكل مبسط.","toolbarHint":"اختر أداة و ابدأ الرسم!","helpHint":"الاختصارات و المساعدة"}},"colorPicker":{"mostUsedCustomColors":"الألوان المخصصة الأكثر استخداما","colors":"الألوان","shades":"الدرجات","hexCode":"رمز Hex","noShades":"لا تتوفر درجات لهذا اللون"},"overwriteConfirm":{"action":{"exportToImage":{"title":"تصدير كصورة","button":"تصدير كصورة","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"saveToDisk":{"title":"حفظ الملف للجهاز","button":"حفظ الملف للجهاز","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"excalidrawPlus":{"title":"Excalidraw+","button":"تصدير إلى Excalidraw+","description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك."}},"modal":{"loadFromFile":{"title":"تحميل من ملف","button":"تحميل من ملف","description":"سيتم التحميل من الملف استبدال المحتوى الموجود.

يمكنك النسخ الاحتياطي لرسمك أولاً باستخدام أحد الخيارات أدناه."},"shareableLink":{"title":"تحميل من رابط","button":"استبدال محتواي","description":"سيتسبب تحميل رسمة خارجية باستبدال محتواك الموجود حالياً.

بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/az-AZ-json-5d70eb8bf3f20abc3bac.js b/public/excalidraw/excalidraw-assets-dev/locales/az-AZ-json-5d70eb8bf3f20abc3bac.js new file mode 100644 index 0000000..02237df --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/az-AZ-json-5d70eb8bf3f20abc3bac.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/az-AZ-json"],{ + +/***/ "../../locales/az-AZ.json": +/*!********************************!*\ + !*** ../../locales/az-AZ.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Yapışdır","pasteAsPlaintext":"Düz mətn kimi yapışdırın","pasteCharts":"Diaqramları yapışdırın","selectAll":"Hamısını seç","multiSelect":"Seçimə element əlavə edin","moveCanvas":"Kanvası köçürün","cut":"Kəs","copy":"Kopyala","copyAsPng":"PNG olaraq panoya kopyala","copyAsSvg":"SVG olaraq panoya kopyala","copyText":"Mətn olaraq panoya kopyala","bringForward":"Önə daşı","sendToBack":"Geriyə göndərin","bringToFront":"Önə gətirin","sendBackward":"Geriyə göndərin","delete":"Sil","copyStyles":"Stilləri kopyalayın","pasteStyles":"Stilləri yapışdırın","stroke":"Strok rəngi","background":"Arxa fon","fill":"Doldur","strokeWidth":"Strok eni","strokeStyle":"Strok stili","strokeStyle_solid":"Solid","strokeStyle_dashed":"Kəsik","strokeStyle_dotted":"Nöqtəli","sloppiness":"Səliqəsizlik","opacity":"Şəffaflıq","textAlign":"Mətni uyğunlaşdır","edges":"Kənarlar","sharp":"Kəskin","round":"Dəyirmi","arrowheads":"Ox ucları","arrowhead_none":"Heç biri","arrowhead_arrow":"Ox","arrowhead_bar":"Çubuq","arrowhead_dot":"Nöqtə","arrowhead_triangle":"Üçbucaq","fontSize":"Şrift ölçüsü","fontFamily":"Şrift qrupu","addWatermark":"\\"Made with Excalidraw\\" əlavə et","handDrawn":"Əllə çəkilmiş","normal":"Normal","code":"Kod","small":"Kiçik","medium":"Orta","large":"Böyük","veryLarge":"Çox böyük","solid":"Solid","hachure":"Ştrix","zigzag":"Ziqzaq","crossHatch":"Çarpaz dəlik","thin":"İncə","bold":"Qalın","left":"Sol","center":"Mərkəz","right":"Sağ","extraBold":"Ekstra qalın","architect":"Memar","artist":"Rəssam","cartoonist":"Karikaturaçı","fileTitle":"Fayl adı","colorPicker":"Rəng seçən","canvasColors":"Kanvas üzərində istifadə olunur","canvasBackground":"Kanvas arxa fonu","drawingCanvas":"Kanvas çəkmək","layers":"Qatlar","actions":"Hərəkətlər","language":"Dil","liveCollaboration":"Canlı əməkdaşlıq...","duplicateSelection":"Dublikat","untitled":"Başlıqsız","name":"Ad","yourName":"Adınız","madeWithExcalidraw":"Excalidraw ilə hazırlanmışdır","group":"Qrup şəklində seçim","ungroup":"Qrupsuz seçim","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/bg-BG-json-88cced5fd8a6d8298501.js b/public/excalidraw/excalidraw-assets-dev/locales/bg-BG-json-88cced5fd8a6d8298501.js new file mode 100644 index 0000000..3a05b4e --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/bg-BG-json-88cced5fd8a6d8298501.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/bg-BG-json"],{ + +/***/ "../../locales/bg-BG.json": +/*!********************************!*\ + !*** ../../locales/bg-BG.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Постави","pasteAsPlaintext":"Постави като обикновен текст","pasteCharts":"Постави графики","selectAll":"Маркирай всичко","multiSelect":"Добави елемент към селекция","moveCanvas":"Премести платно","cut":"Изрежи","copy":"Копирай","copyAsPng":"Копиране в клипборда","copyAsSvg":"Копирано в клипборда като SVG","copyText":"","bringForward":"Преместване напред","sendToBack":"Изнасяне назад","bringToFront":"Изнасяне отпред","sendBackward":"Изпрати отзад","delete":"Изтрий","copyStyles":"Копирайте стилове","pasteStyles":"Постави стилове","stroke":"Щрих","background":"Фон","fill":"Наситеност","strokeWidth":"Ширина на щриха","strokeStyle":"Стил на линия","strokeStyle_solid":"Плътен","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Пунктирано","sloppiness":"Небрежност","opacity":"Прозрачност","textAlign":"Подравняване на текста","edges":"Крайща","sharp":"Остър","round":"Закръглено","arrowheads":"Стрелки","arrowhead_none":"Без","arrowhead_arrow":"Стрелка","arrowhead_bar":"Връх на стрелката","arrowhead_dot":"Точка","arrowhead_triangle":"Триъгълник","fontSize":"Размер на шрифта","fontFamily":"Семейство шрифтове","addWatermark":"Добави \\"Направено с Excalidraw\\"","handDrawn":"Нарисувано на ръка","normal":"Нормален","code":"Код","small":"Малък","medium":"Среден","large":"Голям","veryLarge":"Много голям","solid":"Солиден","hachure":"Хералдика","zigzag":"Зигзаг","crossHatch":"Двойно-пресечено","thin":"Тънък","bold":"Ясно очертан","left":"Ляво","center":"Център","right":"Дясно","extraBold":"Много ясно очертан","architect":"Архитект","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Име на файл","colorPicker":"Избор на цвят","canvasColors":"Използван на платно","canvasBackground":"Фон на платно","drawingCanvas":"Платно за рисуване","layers":"Слоеве","actions":"Действия","language":"Език","liveCollaboration":"","duplicateSelection":"Дублирай","untitled":"Неозаглавено","name":"Име","yourName":"Вашето име","madeWithExcalidraw":"Направено с Excalidraw","group":"Групирай селекцията","ungroup":"Спри групирането на селекцията","collaborators":"Сътрудници","showGrid":"Показване на мрежа","addToLibrary":"Добавяне към библиотеката","removeFromLibrary":"Премахване от библиотеката","libraryLoadingMessage":"Зареждане на библиотеката…","libraries":"Разглеждане на библиотеките","loadingScene":"Зареждане на сцена…","align":"Подравняване","alignTop":"Подравняване отгоре","alignBottom":"Подравняване отдолу","alignLeft":"Подравняване отляво","alignRight":"Подравняване отдясно","centerVertically":"Центрирай вертикално","centerHorizontally":"Центрирай хоризонтално","distributeHorizontally":"Разпредели хоризонтално","distributeVertically":"Разпредели вертикално","flipHorizontal":"Хоризонтално обръщане","flipVertical":"Вертикално обръщане","viewMode":"Изглед","share":"Сподели","showStroke":"","showBackground":"","toggleTheme":"Включи тема","personalLib":"Лична Библиотека","excalidrawLib":"Excalidraw Библиотека","decreaseFontSize":"Намали размера на шрифта","increaseFontSize":"Увеличи размера на шрифта","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Редактирай линк","editEmbed":"","create":"","createEmbed":"","label":"Линк","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Заключи","unlock":"Отключи","lockAll":"Заключи всички","unlockAll":"Отключи всички"},"statusPublished":"Публикувани","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Избери цвят от платното"},"library":{"noItems":"Няма добавени неща все още...","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Нулиране на платно","exportJSON":"","exportImage":"","export":"Запази на...","copyToClipboard":"Копиране в клипборда","save":"Запази към текущ файл","saveAs":"Запиши като","load":"Отвори","getShareableLink":"Получаване на връзка за споделяне","close":"Затвори","selectLanguage":"Избор на език","scrollBackToContent":"Превъртете обратно към съдържанието","zoomIn":"Приближаване","zoomOut":"Отдалечаване","resetZoom":"Стандартен мащаб","menu":"Меню","done":"Завършено","edit":"Редактиране","undo":"Отмяна","redo":"Повтори","resetLibrary":"Нулиране на библиотеката","createNewRoom":"Създай нова стая","fullScreen":"На цял екран","darkMode":"Тъмен режим","lightMode":"Светъл режим","zenMode":"Режим Zen","objectsSnapMode":"","exitZenMode":"Спиране на Zen режим","cancel":"Отмени","clear":"Изчисти","remove":"Премахване","embed":"","publishLibrary":"Публикувай","submit":"Изпрати","confirm":"Потвърждаване","embeddableInteractionButton":""},"alerts":{"clearReset":"Това ще изчисти цялото платно. Сигурни ли сте?","couldNotCreateShareableLink":"Връзката не може да бъде създадена.","couldNotCreateShareableLinkTooBig":"Не може да се създаде връзка за споделяне: сцената е твърде голяма","couldNotLoadInvalidFile":"Невалиден файл не може да се зареди","importBackendFailed":"Импортирането от бекенд не беше успешно.","cannotExportEmptyCanvas":"Не може да се експортира празно платно.","couldNotCopyToClipboard":"Не можем да копираме в клипбоарда.","decryptFailed":"Данните не можаха да се дешифрират.","uploadedSecurly":"Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.","loadSceneOverridePrompt":"Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?","collabStopOverridePrompt":"Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?\\n\\n(Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)","errorAddingToLibrary":"Не можем да заредим от библиотеката","errorRemovingFromLibrary":"Не можем да премахнем елемент от библиотеката","confirmAddLibrary":"Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?","imageDoesNotContainScene":"","cannotRestoreFromImage":"Не може да бъде възстановена сцена от този файл","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Изтрий {{count}} елемент(а) от библиотеката?","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Този файлов формат не се поддържа.","imageInsertError":"","fileTooBig":"Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Невалиден SVG.","cannotResolveCollabServer":"","importLibraryError":"Не можем да заредим библиотеката","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"Силно препоръчваме да изключите тази настройка. Можете да следвате тези стъпки за това как да го направите.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Селекция","image":"Вмъкване на изображение","rectangle":"Правоъгълник","diamond":"Диамант","ellipse":"Елипс","arrow":"Стрелка","line":"Линия","freedraw":"Рисуване","text":"Текст","library":"Библиотека","lock":"Поддържайте избрания инструмент активен след рисуване","penMode":"","link":"","eraser":"Гума","frame":"","embeddable":"","laser":"","hand":"","extraTools":"Още инструменти"},"headings":{"canvasActions":"Действия по платното","selectedShapeActions":"Избрани действия","shapes":"Фигури"},"hints":{"canvasPanning":"","linearElement":"Кликнете, за да стартирате няколко точки, плъзнете за една линия","freeDraw":"Натиснете и влачете, пуснете като сте готови","text":"Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"Кликнете върху последната точка или натиснете Escape или Enter, за да завършите","lockAngle":"Можете да ограничите ъгъла, като задържите SHIFT","resize":"Може да ограничите при преоразмеряване като задържите SHIFT,\\nзадръжте ALT за преоразмерите през центъра","resizeImage":"","rotate":"Можете да ограничите ъглите, като държите SHIFT, докато се въртите","lineEditor_info":"","lineEditor_pointSelected":"Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Натиснете Enter, за да добавите","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Невъзможност за показване на preview","canvasTooBig":"Платното е твърде голямо.","canvasTooBigTip":"Подсказка: пробвайте да приближите далечните елементи по-близко."},"errorSplash":{"headingMain":"Среща грешка. Опитайте ","clearCanvasMessage":"Ако презареждането не работи, опитайте ","clearCanvasCaveat":" Това ще доведе до загуба на работа ","trackedToSentry":"Грешката с идентификатор {{eventId}} беше проследен в нашата система.","openIssueMessage":"Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата Моля, включете информация по-долу, като я копирате и добавите в GitHub.","sceneContent":"Съдържание на сцената:"},"roomDialog":{"desc_intro":"Можете да поканите хора на текущата си сцена да си сътрудничат с вас.","desc_privacy":"Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.","button_startSession":"Стартирайте сесията","button_stopSession":"Стоп на сесията","desc_inProgressIntro":"Сесията за сътрудничество на живо е в ход.","desc_shareLink":"Споделете тази връзка с всеки, с когото искате да си сътрудничите:","desc_exitSession":"Спирането на сесията ще ви изключи от стаята, но ще можете да продължите да работите със сцената, локално. Имайте предвид, че това няма да засегне други хора и те все още ще могат да си сътрудничат с тяхната версия.","shareTitle":""},"errorDialog":{"title":"Грешка"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Експорт","excalidrawplus_exportError":""},"helpDialog":{"blog":"Прочетете нашия блог","click":"клик","deepSelect":"","deepBoxSelect":"","curvedArrow":"Извита стрелка","curvedLine":"Извита линия","documentation":"Документация","doubleClick":"двойно-щракване","drag":"плъзнете","editor":"Редактор","editLineArrowPoints":"","editText":"","github":"Намерихте проблем? Изпратете","howto":"Следвайте нашите ръководства","or":"или","preventBinding":"Спри прилепяне на стрелките","tools":"Инструменти","shortcuts":"Клавиши за бърз достъп","textFinish":"Завърши редактиране (текстов редактор)","textNewLine":"Добави нова линия (текстов редактор)","title":"Помощ","view":"Преглед","zoomToFit":"Приближи докато се виждат всички елементи","zoomToSelection":"Приближи селекцията","toggleElementLock":"Заключи/Отключи селекция","movePageUpDown":"Премести страница нагоре/надолу","movePageLeftRight":"Премести страница наляво/надясно"},"clearCanvasDialog":{"title":"Изчисти платното"},"publishDialog":{"title":"Публикувай библиотека","itemName":"Име","authorName":"Авторско име","githubUsername":"GitHub потребителско име","twitterUsername":"Twitter потребителско име","libraryName":"Име на библиотеката","libraryDesc":"Описание на библиотеката","website":"Уебсайт","placeholder":{"authorName":"Името или потребителското Ви име","libraryName":"Име на библиотеката Ви","libraryDesc":"Описание на библиотеката ви, за да помогнете на хората да разберат приложенията ѝ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Задължително","website":"Въведете валиден URL адрес"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Нулирай библиотека","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"Фон","onlySelected":"Само избраното","darkMode":"Тъмен режим","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Изнасяне в PNG","exportToSvg":"Изнасяне в SVG","copyPngToClipboard":"Копирай PNG в клипборда"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копиране в клипборда"}},"encrypted":{"tooltip":"Вашите рисунки са криптирани от край до край, така че сървърите на Excalidraw няма да могат да ги виждат.","link":""},"stats":{"angle":"Ъгъл","element":"Елемент","elements":"Елементи","height":"Височина","scene":"Сцена","selected":"Селектирано","storage":"Съхранение на данни","title":"Статистика за хакери","total":"Общо","version":"Версия","versionCopy":"Настисни за да копираш","versionNotAvailable":"Версията не е налична","width":"Широчина"},"toast":{"addedToLibrary":"Добавена към библиотеката","copyStyles":"Копирани стилове.","copyToClipboard":"Копирано в клипборда.","copyToClipboardAsPng":"Копира {{exportSelection}} в клипборда като PNG\\n({{exportColorScheme}})","fileSaved":"Файлът е запазен.","fileSavedToFilename":"Запазен към {filename}","canvas":"платно","selection":"селекция","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачен","black":"Черен","white":"Бял","red":"Червен","pink":"Розов","grape":"Грозде","violet":"Виолетово","gray":"Сив","blue":"Син","cyan":"Синьозелено","teal":"Тъмно синьо-зелено","green":"Зелено","yellow":"Жълто","orange":"Оранжево","bronze":"Бронзово"},"welcomeScreen":{"app":{"center_heading":"Всичките Ви данни са запазени локално в браузъра Ви.","center_heading_plus":"","menuHint":"Експорт, предпочитания, езици, ..."},"defaults":{"menuHint":"Експорт, предпочитания, и още...","center_heading":"Диаграми. Направени. Просто.","toolbarHint":"Изберете инструмент & Започнете да рисувате!","helpHint":"Преки пътища & помощ"}},"colorPicker":{"mostUsedCustomColors":"Най-често използвани цветове","colors":"Цветове","shades":"Нюанси","hexCode":"Шестнадесетичен код","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Изнеси като изображение","button":"Изнеси като изображение","description":""},"saveToDisk":{"title":"Запази към диск","button":"Запази към диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортирай към Excalidraw+","description":"Запази сцената към Excalidraw+ работното място."}},"modal":{"loadFromFile":{"title":"Зареди от файл","button":"Зареди от файл","description":""},"shareableLink":{"title":"Зареди от линк","button":"Замени моето съдържание","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/bn-BD-json-a06588c61947851c8579.js b/public/excalidraw/excalidraw-assets-dev/locales/bn-BD-json-a06588c61947851c8579.js new file mode 100644 index 0000000..b7769ac --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/bn-BD-json-a06588c61947851c8579.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/bn-BD-json"],{ + +/***/ "../../locales/bn-BD.json": +/*!********************************!*\ + !*** ../../locales/bn-BD.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"পেস্ট করুন","pasteAsPlaintext":"প্লেইনটেক্সট হিসাবে পেস্ট করুন","pasteCharts":"চার্ট পেস্ট করুন","selectAll":"সবটা সিলেক্ট করুন","multiSelect":"একাধিক সিলেক্ট করুন","moveCanvas":"ক্যানভাস সরান","cut":"কাট করুন","copy":"কপি করুন","copyAsPng":"পীএনজী ছবির মতন কপি করুন","copyAsSvg":"এসভীজী ছবির মতন কপি করুন","copyText":"লিখিত তথ্যের মতন কপি করুন","bringForward":"অধিকতর সামনে আনুন","sendToBack":"অধিকতর পিছনে নিয়ে যান","bringToFront":"সবার সামনে আনুন","sendBackward":"সবার পিছনে নিয়ে যান","delete":"মুছা","copyStyles":"ডিজাইন কপি করুন","pasteStyles":"ডিজাইন পেস্ট করুন","stroke":"রেখাংশ","background":"পটভূমি","fill":"রং","strokeWidth":"রেখাংশের বেধ","strokeStyle":"রেখাংশের ডিজাইন","strokeStyle_solid":"পুরু","strokeStyle_dashed":"পাতলা","strokeStyle_dotted":"বিন্দুবিন্দু","sloppiness":"ভ্রান্তি","opacity":"দৃশ্যমানতা","textAlign":"লেখ অনুভূমি","edges":"কোণ","sharp":"তীক্ষ্ণ","round":"গোল","arrowheads":"তীরের শীর্ষভাগ","arrowhead_none":"কিছু না","arrowhead_arrow":"তীর","arrowhead_bar":"রেখাংশ","arrowhead_dot":"বিন্দু","arrowhead_triangle":"ত্রিভূজ","fontSize":"লেখনীর মাত্রা","fontFamily":"লেখনীর হরফ","addWatermark":"এক্সক্যালিড্র দ্বারা প্রস্তুত","handDrawn":"হাতে আঁকা","normal":"স্বাভাবিক","code":"কোড","small":"ছোট","medium":"মাঝারি","large":"বড়","veryLarge":"অনেক বড়","solid":"দৃঢ়","hachure":"ভ্রুলেখা","zigzag":"আঁকাবাঁকা","crossHatch":"ক্রস হ্যাচ","thin":"পাতলা","bold":"পুরু","left":"বাম","center":"কেন্দ্র","right":"ডান","extraBold":"অতি পুরু","architect":"স্থপতি","artist":"শিল্পী","cartoonist":"চিত্রকার","fileTitle":"ফাইলের নাম","colorPicker":"রং পছন্দ করুন","canvasColors":"ক্যানভাসের রং","canvasBackground":"ক্যানভাসের পটভূমি","drawingCanvas":"ব্যবহৃত ক্যানভাস","layers":"মাত্রা","actions":"ক্রিয়া","language":"ভাষা","liveCollaboration":"সরাসরি পারস্পরিক সহযোগিতা...","duplicateSelection":"সদৃশ সিলেক্ট","untitled":"অনামী","name":"নাম","yourName":"আপনার নাম","madeWithExcalidraw":"এক্সক্যালিড্র দ্বারা তৈরি","group":"দল গঠন করুন","ungroup":"দল বিভেদ করুন","collaborators":"সহযোগী","showGrid":"গ্রিড দেখান","addToLibrary":"সংগ্রহে যোগ করুন","removeFromLibrary":"সংগ্রহ থেকে বের করুন","libraryLoadingMessage":"সংগ্রহ তৈরি হচ্ছে","libraries":"সংগ্রহ দেখুন","loadingScene":"দৃশ্য তৈরি হচ্ছে","align":"পংক্তিবিন্যাস","alignTop":"উপর পংক্তি","alignBottom":"নিম্ন পংক্তি","alignLeft":"বাম পংক্তি","alignRight":"ডান পংক্তি","centerVertically":"উলম্ব কেন্দ্রিত","centerHorizontally":"অনুভূমিক কেন্দ্রিত","distributeHorizontally":"অনুভূমিকভাবে বিতরণ করুন","distributeVertically":"উল্লম্বভাবে বিতরণ করুন","flipHorizontal":"অনুভূমিক আবর্তন","flipVertical":"উলম্ব আবর্তন","viewMode":"দৃশ্য","share":"ভাগ করুন","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"লেখনীর মাত্রা কমান","increaseFontSize":"লেখনীর মাত্রা বাড়ান","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"লিঙ্ক সংশোধন","editEmbed":"","create":"লিঙ্ক তৈরী","createEmbed":"","label":"লিঙ্ক নামকরণ","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"আবদ্ধ করুন","unlock":"বিচ্ছিন্ন করুন","lockAll":"সব আবদ্ধ করুন","unlockAll":"সব বিচ্ছিন্ন করুন"},"statusPublished":"প্রকাশিত","sidebarLock":"লক","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"সংগ্রহে কিছু যোগ করা হয়নি","hint_emptyLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷","hint_emptyPrivateLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন"},"buttons":{"clearReset":"ক্যানভাস সাফ করুন","exportJSON":"জেসন নিবদ্ধ করুন","exportImage":"","export":"","copyToClipboard":"ক্লিপবোর্ডে কপি করুন","save":"জমা করুন","saveAs":"অন্যভাবে জমা করুন","load":"","getShareableLink":"ভাগযোগ্য লিঙ্ক পান","close":"বন্ধ করুন","selectLanguage":"ভাষা চিহ্নিত করুন","scrollBackToContent":"বিষয়বস্তুতে ফেরত যান","zoomIn":"বড় করুন","zoomOut":"ছোট করুন","resetZoom":"স্বাভাবিক করুন","menu":"তালিকা","done":"সম্পন্ন","edit":"সংশোধন করুন","undo":"ফেরত যান","redo":"পুনরায় করুন","resetLibrary":"সংগ্রহ সাফ করুন","createNewRoom":"নতুন রুম বানান","fullScreen":"পূর্ণস্ক্রীন","darkMode":"ডার্ক মোড","lightMode":"লাইট মোড","zenMode":"জেন মোড","objectsSnapMode":"","exitZenMode":"জেন মোড বন্ধ করুন","cancel":"বাতিল","clear":"সাফ","remove":"বিয়োগ","embed":"","publishLibrary":"সংগ্রহ প্রকাশ করুন","submit":"জমা করুন","confirm":"নিশ্চিত করুন","embeddableInteractionButton":""},"alerts":{"clearReset":"এটি পুরো ক্যানভাস সাফ করবে। আপনি কি নিশ্চিত?","couldNotCreateShareableLink":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি।","couldNotCreateShareableLinkTooBig":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি: দৃশ্যটি খুব বড়","couldNotLoadInvalidFile":"অবৈধ ফাইল লোড করা যায়নি","importBackendFailed":"ব্যাকেন্ড থেকে আপলোড ব্যর্থ হয়েছে।","cannotExportEmptyCanvas":"খালি ক্যানভাস নিবদ্ধ করা যাবে না।","couldNotCopyToClipboard":"ক্লিপবোর্ডে কপি করা যায়নি।","decryptFailed":"তথ্য ডিক্রিপ্ট করা যায়নি।","uploadedSecurly":"আপলোডটি এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে সুরক্ষিত করা হয়েছে, যার অর্থ হল এক্সক্যালিড্র সার্ভার এবং তৃতীয় পক্ষের দ্বারা পড়তে পারা সম্ভব নয়।","loadSceneOverridePrompt":"বাহ্যিক অঙ্কন লোড করা আপনার বিদ্যমান দৃশ্য প্রতিস্থাপন করবে। আপনি কি অবিরত করতে চান?","collabStopOverridePrompt":"অধিবেশন বন্ধ করা আপনার পূর্ববর্তী, স্থানীয়ভাবে সঞ্চিত অঙ্কন ওভাররাইট করবে। আপনি কি নিশ্চিত?\\n\\n(যদি আপনি আপনার স্থানীয় অঙ্কন রাখতে চান, তাহলে শুধু ব্রাউজার ট্যাবটি বন্ধ করুন।)","errorAddingToLibrary":"বস্তুটি সংগ্রহে যোগ করা যায়নি","errorRemovingFromLibrary":"বস্তুটি সংগ্রহ থেকে বিয়োগ করা যায়নি","confirmAddLibrary":"এটি আপনার সংগ্রহে {{numShapes}} আকার(গুলি) যোগ করবে। আপনি কি নিশ্চিত?","imageDoesNotContainScene":"এই ছবিতে কোনো দৃশ্যের তথ্য আছে বলে মনে হয় না৷ আপনি কি নিবদ্ধ করার সময় দৃশ্য এমবেডিং করতে সক্ষম?","cannotRestoreFromImage":"এই ফাইল থেকে দৃশ্য পুনরুদ্ধার করা যায়নি","invalidSceneUrl":"সরবরাহ করা লিঙ্ক থেকে দৃশ্য লোড করা যায়নি৷ এটি হয় বিকৃত, অথবা বৈধ এক্সক্যালিড্র জেসন তথ্য নেই৷","resetLibrary":"এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?","removeItemsFromsLibrary":"সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?","invalidEncryptionKey":"অবৈধ এনক্রীপশন কী।","collabOfflineWarning":""},"errors":{"unsupportedFileType":"অসমর্থিত ফাইল।","imageInsertError":"ছবি সন্নিবেশ করা যায়নি। পরে আবার চেষ্টা করুন...","fileTooBig":"ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷","svgImageInsertError":"এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","failedToFetchImage":"","invalidSVGString":"এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","cannotResolveCollabServer":"কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।","importLibraryError":"সংগ্রহ লোড করা যায়নি","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"বাছাই","image":"চিত্র সন্নিবেশ","rectangle":"আয়তক্ষেত্র","diamond":"রুহিতন","ellipse":"উপবৃত্ত","arrow":"তীর","line":"রেখা","freedraw":"কলম","text":"লেখা","library":"সংগ্রহ","lock":"আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন","penMode":"","link":"একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন","eraser":"ঝাড়ন","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ক্যানভাস কার্যকলাপ","selectedShapeActions":"বাছাই করা আকার(গুলি)র কার্যকলাপ","shapes":"আকার(গুলি)"},"hints":{"canvasPanning":"","linearElement":"একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন","freeDraw":"ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন","text":"বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন","embeddable":"","text_selected":"লেখা সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন","text_editing":"লেখা সম্পাদনা শেষ করতে এসকেপ বা কন্ট্রোল/কম্যান্ড যোগে এন্টার টিপুন","linearElementMulti":"শেষ বিন্দুতে ক্লিক করুন অথবা শেষ করতে এসকেপ বা এন্টার টিপুন","lockAngle":"ঘোরানোর সময় আপনি শিফ্ট ধরে রেখে কোণ সীমাবদ্ধ করতে পারেন","resize":"আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,\\nকেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন","resizeImage":"আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন","rotate":"আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন","lineEditor_info":"","lineEditor_pointSelected":"বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন","lineEditor_nothingSelected":"সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),\\nঅথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন","placeImage":"ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন","publishLibrary":"আপনার নিজস্ব সংগ্রহ প্রকাশ করুন","bindTextToElement":"লেখা যোগ করতে এন্টার টিপুন","deepBoxSelect":"","eraserRevert":"মুছে ফেলার জন্য চিহ্নিত উপাদানগুলিকে ফিরিয়ে আনতে অল্ট ধরে রাখুন","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"প্রিভিউ দেখাতে অপারগ","canvasTooBig":"ক্যানভাস অনেক বড়।","canvasTooBigTip":"বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।"},"errorSplash":{"headingMain":"একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন ","clearCanvasMessage":"যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন ","clearCanvasCaveat":" এর ফলে কাজের ক্ষতি হবে ","trackedToSentry":"ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।","openIssueMessage":"আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।","sceneContent":"দৃশ্য বিষয়বস্তু:"},"roomDialog":{"desc_intro":"আপনি আপনার সাথে সহযোগিতা করার জন্য আপনার বর্তমান দৃশ্যে লোকেদের আমন্ত্রণ জানাতে পারেন৷","desc_privacy":"চিন্তা করবেন না, সেশনটি এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করে, তাই আপনি যা আঁকবেন তা গোপন থাকবে। এমনকি আমাদের সার্ভার আপনি যা নিয়ে এসেছেন তা দেখতে সক্ষম হবে না।","button_startSession":"সেশন শুরু করুন","button_stopSession":"সেশন বন্ধ করুন","desc_inProgressIntro":"লাইভ-সহযোগীতার সেশন এখন চলছে।","desc_shareLink":"আপনি যার সাথে সহযোগিতা করতে চান তাদের সাথে এই লিঙ্কটি ভাগ করুন: ","desc_exitSession":"অধিবেশন বন্ধ করা আপনাকে রুম থেকে সংযোগ বিচ্ছিন্ন করবে, কিন্তু আপনি স্থানীয়ভাবে দৃশ্যের সাথে কাজ চালিয়ে যেতে সক্ষম হবেন। মনে রাখবেন যে এটি অন্য লোকেদের প্রভাবিত করবে না এবং তারা এখনও তাদের সংস্করণে সহযোগিতা করতে সক্ষম হবে।","shareTitle":"এক্সক্যালিড্র লাইভ সহযোগিতা সেশনে যোগ দিন"},"errorDialog":{"title":"ত্রুটি"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"নিবদ্ধ","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"ক্লিক","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"অথবা","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"কোণ","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"প্রস্থ"},"toast":{"addedToLibrary":"সংগ্রহশালায় যুক্ত হয়েছে","copyStyles":"","copyToClipboard":"ক্লিপবোর্ডে কপি করা হয়েছে।","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"বাছাই","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ca-ES-json-9b25933a25836cc0be23.js b/public/excalidraw/excalidraw-assets-dev/locales/ca-ES-json-9b25933a25836cc0be23.js new file mode 100644 index 0000000..b10489d --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ca-ES-json-9b25933a25836cc0be23.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ca-ES-json"],{ + +/***/ "../../locales/ca-ES.json": +/*!********************************!*\ + !*** ../../locales/ca-ES.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Enganxa","pasteAsPlaintext":"Enganxar com a text pla","pasteCharts":"Enganxa els diagrames","selectAll":"Selecciona-ho tot","multiSelect":"Afegeix un element a la selecció","moveCanvas":"Mou el llenç","cut":"Retalla","copy":"Copia","copyAsPng":"Copia al porta-retalls com a PNG","copyAsSvg":"Copia al porta-retalls com a SVG","copyText":"Copia al porta-retalls com a text","bringForward":"Porta endavant","sendToBack":"Envia enrere","bringToFront":"Porta al davant","sendBackward":"Envia al fons","delete":"Elimina","copyStyles":"Copia els estils","pasteStyles":"Enganxa els estils","stroke":"Color del traç","background":"Color del fons","fill":"Estil del fons","strokeWidth":"Amplada del traç","strokeStyle":"Estil del traç","strokeStyle_solid":"Sòlid","strokeStyle_dashed":"Guions","strokeStyle_dotted":"Punts","sloppiness":"Estil del traç","opacity":"Opacitat","textAlign":"Alineació del text","edges":"Vores","sharp":"Agut","round":"Arrodonit","arrowheads":"Puntes de fletxa","arrowhead_none":"Cap","arrowhead_arrow":"Fletxa","arrowhead_bar":"Barra","arrowhead_dot":"Punt","arrowhead_triangle":"Triangle","fontSize":"Mida de lletra","fontFamily":"Tipus de lletra","addWatermark":"Afegeix-hi «Fet amb Excalidraw»","handDrawn":"Dibuixat a mà","normal":"Normal","code":"Codi","small":"Petit","medium":"Mitjà","large":"Gran","veryLarge":"Molt gran","solid":"Sòlid","hachure":"Ratlletes","zigzag":"","crossHatch":"Ratlletes creuades","thin":"Fi","bold":"Negreta","left":"Esquerra","center":"Centre","right":"Dreta","extraBold":"Extra negreta","architect":"Arquitecte","artist":"Artista","cartoonist":"Dibuixant","fileTitle":"Nom del fitxer","colorPicker":"Selector de colors","canvasColors":"Usat al llenç","canvasBackground":"Fons del llenç","drawingCanvas":"Llenç de dibuix","layers":"Capes","actions":"Accions","language":"Llengua","liveCollaboration":"Col·laboració en directe...","duplicateSelection":"Duplica","untitled":"Sense títol","name":"Nom","yourName":"El vostre nom","madeWithExcalidraw":"Fet amb Excalidraw","group":"Agrupa la selecció","ungroup":"Desagrupa la selecció","collaborators":"Col·laboradors","showGrid":"Mostra la graella","addToLibrary":"Afegir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"S\'està carregant la biblioteca…","libraries":"Explora les biblioteques","loadingScene":"S\'està carregant l\'escena…","align":"Alinea","alignTop":"Alinea a la part superior","alignBottom":"Alinea a la part inferior","alignLeft":"Alinea a l’esquerra","alignRight":"Alinea a la dreta","centerVertically":"Centra verticalment","centerHorizontally":"Centra horitzontalment","distributeHorizontally":"Distribueix horitzontalment","distributeVertically":"Distribueix verticalment","flipHorizontal":"Capgira horitzontalment","flipVertical":"Capgira verticalment","viewMode":"Mode de visualització","share":"Comparteix","showStroke":"Mostra el selector de color del traç","showBackground":"Mostra el selector de color de fons","toggleTheme":"Activa o desactiva el tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca d\'Excalidraw","decreaseFontSize":"Redueix la mida de la lletra","increaseFontSize":"Augmenta la mida de la lletra","unbindText":"Desvincular el text","bindText":"Ajusta el text al contenidor","createContainerFromText":"","link":{"edit":"Edita l\'enllaç","editEmbed":"","create":"Crea un enllaç","createEmbed":"","label":"Enllaç","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar línia","exit":"Sortir de l\'editor de línia"},"elementLock":{"lock":"Bloca","unlock":"Desbloca","lockAll":"Bloca-ho tot","unlockAll":"Desbloca-ho tot"},"statusPublished":"Publicat","sidebarLock":"Manté la barra lateral oberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Encara no s\'hi han afegit elements...","hint_emptyLibrary":"Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.","hint_emptyPrivateLibrary":"Trieu un element o un llenç per a afegir-lo aquí."},"buttons":{"clearReset":"Neteja el llenç","exportJSON":"Exporta a un fitxer","exportImage":"Exporta la imatge...","export":"Guardar a...","copyToClipboard":"Copia al porta-retalls","save":"Desa al fitxer actual","saveAs":"Anomena i desa","load":"Obrir","getShareableLink":"Obté l\'enllaç per a compartir","close":"Tanca","selectLanguage":"Trieu la llengua","scrollBackToContent":"Torna al contingut","zoomIn":"Apropa\'t","zoomOut":"Allunya\'t","resetZoom":"Restableix el zoom","menu":"Menú","done":"Fet","edit":"Edita","undo":"Desfés","redo":"Refés","resetLibrary":"Restableix la biblioteca","createNewRoom":"Crea una sala nova","fullScreen":"Pantalla completa","darkMode":"Mode fosc","lightMode":"Mode clar","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Surt de mode zen","cancel":"Cancel·la","clear":"Neteja","remove":"Suprimeix","embed":"","publishLibrary":"Publica","submit":"Envia","confirm":"Confirma","embeddableInteractionButton":""},"alerts":{"clearReset":"S\'esborrarà tot el llenç. N\'esteu segur?","couldNotCreateShareableLink":"No s\'ha pogut crear un enllaç per a compartir.","couldNotCreateShareableLinkTooBig":"No s’ha pogut crear un enllaç per a compartir: l’escena és massa gran","couldNotLoadInvalidFile":"No s\'ha pogut carregar un fitxer no vàlid","importBackendFailed":"Importació fallida.","cannotExportEmptyCanvas":"No es pot exportar un llenç buit.","couldNotCopyToClipboard":"No s\'ha pogut copiar al porta-retalls.","decryptFailed":"No s\'ha pogut desencriptar.","uploadedSecurly":"La càrrega s\'ha assegurat amb xifratge punta a punta, cosa que significa que el servidor Excalidraw i tercers no poden llegir el contingut.","loadSceneOverridePrompt":"Si carregas aquest dibuix extern, substituirá el que tens. Vols continuar?","collabStopOverridePrompt":"Aturar la sessió provocarà la sobreescriptura del dibuix previ, que hi ha desat en l\'emmagatzematge local. N\'esteu segur?\\n\\n(Si voleu conservar el dibuix local, tanqueu la pentanya del navegador en comptes d\'aturar la sessió).","errorAddingToLibrary":"No s\'ha pogut afegir l\'element a la biblioteca","errorRemovingFromLibrary":"No s\'ha pogut eliminar l\'element de la biblioteca","confirmAddLibrary":"Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?","imageDoesNotContainScene":"Aquesta imatge no sembla contenir cap dada d\'escena. Heu activat l\'incrustació de l\'escena durant l\'exportació?","cannotRestoreFromImage":"L’escena no s’ha pogut restaurar des d’aquest fitxer d’imatge","invalidSceneUrl":"No s\'ha pogut importar l\'escena des de l\'adreça URL proporcionada. Està malformada o no conté dades Excalidraw JSON vàlides.","resetLibrary":"Això buidarà la biblioteca. N\'esteu segur?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la biblioteca?","invalidEncryptionKey":"La clau d\'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.","collabOfflineWarning":"Sense connexió a internet disponible.\\nEls vostres canvis no seran guardats!"},"errors":{"unsupportedFileType":"Tipus de fitxer no suportat.","imageInsertError":"No s\'ha pogut insertar la imatge, torneu-ho a provar més tard...","fileTooBig":"El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.","svgImageInsertError":"No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.","failedToFetchImage":"","invalidSVGString":"SVG no vàlid.","cannotResolveCollabServer":"No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.","importLibraryError":"No s\'ha pogut carregar la biblioteca","collabSaveFailed":"No s\'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","collabSaveFailed_sizeExceeded":"No s\'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selecció","image":"Insereix imatge","rectangle":"Rectangle","diamond":"Rombe","ellipse":"El·lipse","arrow":"Fletxa","line":"Línia","freedraw":"Dibuix","text":"Text","library":"Biblioteca","lock":"Mantenir activa l\'eina seleccionada desprès de dibuixar","penMode":"Mode de llapis - evita tocar","link":"Afegeix / actualitza l\'enllaç per a la forma seleccionada","eraser":"Esborrador","frame":"","embeddable":"","laser":"","hand":"Mà (eina de desplaçament)","extraTools":""},"headings":{"canvasActions":"Accions del llenç","selectedShapeActions":"Accions per a les formes seleccionades","shapes":"Formes"},"hints":{"canvasPanning":"Per moure el llenç, manteniu premuda la roda del ratolí o la barra espaiadora mentre arrossegueu o utilitzeu l\'eina manual","linearElement":"Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia","freeDraw":"Feu clic i arrossegueu, deixeu anar per a finalitzar","text":"Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l\'eina de selecció","embeddable":"","text_selected":"Feu doble clic o premeu Retorn per a editar el text","text_editing":"Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l\'edició","linearElementMulti":"Feu clic a l\'ultim punt, o pitgeu Esc o Retorn per a finalitzar","lockAngle":"Per restringir els angles, mantenir premut el majúscul (SHIFT)","resize":"Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT","resizeImage":"Podeu redimensionar lliurement prement MAJÚSCULA;\\nper a redimensionar des del centre, premeu ALT","rotate":"Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)","lineEditor_info":"Mantingueu premut Ctrl o Cmd i feu doble clic o premeu Ctrl o Cmd + Retorn per editar els punts","lineEditor_pointSelected":"Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure\'l","lineEditor_nothingSelected":"Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu\\nselecció múltiple), o manteniu Alt i feu clic per a afegir més punts","placeImage":"Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment","publishLibrary":"Publiqueu la vostra pròpia llibreria","bindTextToElement":"Premeu enter per a afegir-hi text","deepBoxSelect":"Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l\'arrossegament","eraserRevert":"Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar","firefox_clipboard_write":"És probable que aquesta funció es pugui activar posant la marca \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Per canviar les marques del navegador al Firefox, visiteu la pàgina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"No es pot mostrar la previsualització","canvasTooBig":"Pot ser que el llenç sigui massa gran.","canvasTooBigTip":"Consell: proveu d’acostar una mica els elements més allunyats."},"errorSplash":{"headingMain":"S\'ha produït un error. Proveu ","clearCanvasMessage":"Si la recàrrega no funciona, proveu ","clearCanvasCaveat":" Això resultarà en la pèrdua de feina ","trackedToSentry":"L\'error amb l\'identificador {{eventId}} s\'ha rastrejat en el nostre sistema.","openIssueMessage":"Anàvem amb molta cura de no incloure la informació de la vostra escena en l\'error. Si l\'escena no és privada, podeu fer-ne el seguiment al nostre Incloeu la informació a continuació copiant i enganxant a GitHub Issues.","sceneContent":"Contingut de l\'escena:"},"roomDialog":{"desc_intro":"Podeu convidar persones a la vostra escena actual a col·laborar amb vós.","desc_privacy":"No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.","button_startSession":"Inicia la sessió","button_stopSession":"Atura la sessió","desc_inProgressIntro":"La sessió de col·laboració en directe està en marxa.","desc_shareLink":"Comparteix aquest enllaç amb qualsevol persona amb qui vulgueu col·laborar:","desc_exitSession":"Si atureu la sessió, us desconectareu de la sala, però podreu continuar treballant amb el dibuix localment. Tingues en compte que això no afectarà a altres persones, i encara podran col·laborar en la seva versió.","shareTitle":"Uniu-vos a una sessió de col·laboració en directe a Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Desa al disc","disk_details":"Exporta les dades de l\'escena a un fitxer que després podreu importar.","disk_button":"Desa en un fitxer","link_title":"Enllaç per a compartir","link_details":"Exporta com a un enllaç de només lectura.","link_button":"Exporta a un enllaç","excalidrawplus_description":"Desa l\'escena en el vostre espai de treball Excalidraw+.","excalidrawplus_button":"Exporta","excalidrawplus_exportError":"No és possible exportar a Excalidraw+ ara mateix..."},"helpDialog":{"blog":"Llegiu el nostre blog","click":"clic","deepSelect":"Selecció profunda","deepBoxSelect":"Seleccioneu profundament dins del quadre i eviteu arrossegar","curvedArrow":"Fletxa corba","curvedLine":"Línia corba","documentation":"Documentació","doubleClick":"doble clic","drag":"arrossega","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Hi heu trobat un problema? Informeu-ne","howto":"Seguiu les nostres guies","or":"o","preventBinding":"Prevenir vinculació de la fletxa","tools":"Eines","shortcuts":"Dreceres de teclat","textFinish":"Finalitza l\'edició (editor de text)","textNewLine":"Afegeix una línia nova (editor de text)","title":"Ajuda","view":"Visualització","zoomToFit":"Zoom per veure tots els elements","zoomToSelection":"Zoom per veure la selecció","toggleElementLock":"Blocar/desblocar la selecció","movePageUpDown":"Mou la pàgina cap amunt/a baix","movePageLeftRight":"Mou la pàgina cap a l\'esquerra/dreta"},"clearCanvasDialog":{"title":"Neteja el llenç"},"publishDialog":{"title":"Publica la biblioteca","itemName":"Nom de l\'element","authorName":"Nom de l\'autor/a","githubUsername":"Nom d\'usuari de GitHub","twitterUsername":"Nom d\'usuari de Twitter","libraryName":"Nom de la biblioteca","libraryDesc":"Descripció de la biblioteca","website":"Lloc web","placeholder":{"authorName":"Nom o usuari","libraryName":"Nom de la vostra biblioteca","libraryDesc":"Descripció de la biblioteca per a ajudar a la gent a entendre\'n el funcionament","githubHandle":"Identificador de GitHub (opcional), per tal que pugueu editar la biblioteca una vegada enviada per a ser revisada","twitterHandle":"Usuari de twitter (opcional), per tal que puguem donar-vos crèdit quan fem la promoció a Twitter","website":"Enllaç al vostre lloc web personal o a qualsevol altre (opcional)"},"errors":{"required":"Requerit","website":"Introduïu una URL vàlida"},"noteDescription":"Envieu la vostra biblioteca perquè sigui inclosa al repositori públicper tal que altres persones puguin fer-ne ús en els seus dibuixos.","noteGuidelines":"La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les directrius abans d\'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible.","noteLicense":"Quan l\'envieu, accepteu que la biblioteca sigui publicada sota la llicència MIT, que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions.","noteItems":"Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S\'hi inclouran els elements següents:","atleastOneLibItem":"Si us plau, seleccioneu si més no un element de la biblioteca per a començar","republishWarning":"Nota: alguns dels elements seleccionats s\'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l\'estataquí"},"confirmDialog":{"resetLibrary":"Restableix la biblioteca","removeItemsFromLib":"Suprimeix els elements seleccionats de la llibreria"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Els vostres dibuixos estan xifrats de punta a punta de manera que els servidors d’Excalidraw no els veuran mai.","link":"Article del blog sobre encriptació d\'extrem a extrem a Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Altura","scene":"Escena","selected":"Seleccionat","storage":"Emmagatzematge","title":"Estadístiques per nerds","total":"Total","version":"Versió","versionCopy":"Feu clic per a copiar","versionNotAvailable":"Versió no disponible","width":"Amplada"},"toast":{"addedToLibrary":"Afegit a la biblioteca","copyStyles":"S\'han copiat els estils.","copyToClipboard":"S\'ha copiat al porta-retalls.","copyToClipboardAsPng":"S\'ha copiat {{exportSelection}} al porta-retalls en format PNG\\n({{exportColorScheme}})","fileSaved":"S\'ha desat el fitxer.","fileSavedToFilename":"S\'ha desat a {filename}","canvas":"el llenç","selection":"la selecció","pasteAsSingleElement":"Fer servir {{shortcut}} per enganxar com un sol element,\\no enganxeu-lo en un editor de text existent","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparent","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totes les vostres dades es guarden localment al vostre navegador.","center_heading_plus":"Vols anar a Excalidraw+ en comptes?","menuHint":"Exportar, preferències, llenguatges..."},"defaults":{"menuHint":"Exportar, preferències i més...","center_heading":"Diagrames. Fer. Simple.","toolbarHint":"Selecciona una eina i comença a dibuixar!","helpHint":"Dreceres i ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/cs-CZ-json-1d6c97ea271d017058c9.js b/public/excalidraw/excalidraw-assets-dev/locales/cs-CZ-json-1d6c97ea271d017058c9.js new file mode 100644 index 0000000..871d4b1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/cs-CZ-json-1d6c97ea271d017058c9.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/cs-CZ-json"],{ + +/***/ "../../locales/cs-CZ.json": +/*!********************************!*\ + !*** ../../locales/cs-CZ.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Vložit","pasteAsPlaintext":"Vložit jako prostý text","pasteCharts":"Vložit grafy","selectAll":"Vybrat vše","multiSelect":"Přidat prvek do výběru","moveCanvas":"Posunout plátno","cut":"Vyjmout","copy":"Kopírovat","copyAsPng":"Zkopírovat do schránky jako PNG","copyAsSvg":"Zkopírovat do schránky jako SVG","copyText":"Zkopírovat do schránky jako text","bringForward":"Přenést blíž","sendToBack":"Přenést do pozadí","bringToFront":"Přenést do popředí","sendBackward":"Přenést dál","delete":"Smazat","copyStyles":"Kopírovat styly","pasteStyles":"Vložit styly","stroke":"Obrys","background":"Pozadí","fill":"Výplň","strokeWidth":"Tloušťka tahu","strokeStyle":"Styl tahu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čárkovaný","strokeStyle_dotted":"Tečkovaný","sloppiness":"Stylizace","opacity":"Průhlednost","textAlign":"Zarovnání textu","edges":"Hrany","sharp":"Ostré","round":"Zaoblené","arrowheads":"Styl šipky","arrowhead_none":"Žádný","arrowhead_arrow":"Šipka","arrowhead_bar":"Kóta","arrowhead_dot":"Tečka","arrowhead_triangle":"Trojúhelník","fontSize":"Velikost písma","fontFamily":"Písmo","addWatermark":"Přidat \\"Vyrobeno s Excalidraw\\"","handDrawn":"Od ruky","normal":"Normální","code":"Kód","small":"Malé","medium":"Střední","large":"Velké","veryLarge":"Velmi velké","solid":"Plný","hachure":"Hachure","zigzag":"Klikatě","crossHatch":"Křížový šrafování","thin":"Tenký","bold":"Tlustý","left":"Vlevo","center":"Na střed","right":"Vpravo","extraBold":"Extra tlustý","architect":"Architekt","artist":"Umělec","cartoonist":"Kartoonista","fileTitle":"Název souboru","colorPicker":"Výběr barvy","canvasColors":"Použito na plátně","canvasBackground":"Pozadí plátna","drawingCanvas":"Kreslicí plátno","layers":"Vrstvy","actions":"Akce","language":"Jazyk","liveCollaboration":"Živá spolupráce...","duplicateSelection":"Duplikovat","untitled":"Bez názvu","name":"Název","yourName":"Vaše jméno","madeWithExcalidraw":"Vytvořeno v Excalidraw","group":"Sloučit výběr do skupiny","ungroup":"Zrušit sloučení skupiny","collaborators":"Spolupracovníci","showGrid":"Zobrazit mřížku","addToLibrary":"Přidat do knihovny","removeFromLibrary":"Odebrat z knihovny","libraryLoadingMessage":"Načítání knihovny…","libraries":"Procházet knihovny","loadingScene":"Načítání scény…","align":"Zarovnání","alignTop":"Zarovnat nahoru","alignBottom":"Zarovnat dolů","alignLeft":"Zarovnat vlevo","alignRight":"Zarovnejte vpravo","centerVertically":"Vycentrovat svisle","centerHorizontally":"Vycentrovat vodorovně","distributeHorizontally":"Rozložit horizontálně","distributeVertically":"Rozložit svisle","flipHorizontal":"Převrátit vodorovně","flipVertical":"Převrátit svisle","viewMode":"Náhled","share":"Sdílet","showStroke":"Zobrazit výběr barvy","showBackground":"Zobrazit výběr barev pozadí","toggleTheme":"Přepnout tmavý řežim","personalLib":"Osobní knihovna","excalidrawLib":"Exkalidraw knihovna","decreaseFontSize":"Zmenšit písmo","increaseFontSize":"Zvětšit písmo","unbindText":"Zrušit vazbu textu","bindText":"Vázat text s kontejnerem","createContainerFromText":"Zabalit text do kontejneru","link":{"edit":"Upravit odkaz","editEmbed":"","create":"Vytvořit odkaz","createEmbed":"","label":"Odkaz","labelEmbed":"","empty":""},"lineEditor":{"edit":"Upravit čáru","exit":"Ukončit editor řádků"},"elementLock":{"lock":"Uzamknout","unlock":"Odemknout","lockAll":"Uzamknout vše","unlockAll":"Odemknout vše"},"statusPublished":"Zveřejněno","sidebarLock":"Ponechat postranní panel otevřený","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Vyberte barvu z plátna"},"library":{"noItems":"Dosud neexistují žádné položky...","hint_emptyLibrary":"Vyberte položku na plátně a přidejte ji sem nebo nainstalujte knihovnu z veřejného úložiště níže.","hint_emptyPrivateLibrary":"Vyberte položku na plátně a přidejte ji sem."},"buttons":{"clearReset":"Resetovat plátno","exportJSON":"Exportovat do souboru","exportImage":"Exportovat obrázek...","export":"Uložit jako...","copyToClipboard":"Kopírovat do schránky","save":"Uložit do aktuálního souboru","saveAs":"Uložit jako","load":"Otevřít","getShareableLink":"Získat odkaz pro sdílení","close":"Zavřít","selectLanguage":"Zvolit jazyk","scrollBackToContent":"Přejít zpět na obsah","zoomIn":"Přiblížit","zoomOut":"Oddálit","resetZoom":"Resetovat přiblížení","menu":"Menu","done":"Hotovo","edit":"Upravit","undo":"Zpět","redo":"Znovu","resetLibrary":"Obnovit knihovnu","createNewRoom":"Vytvořit novou místnost","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Světlý režim","zenMode":"Zen mód","objectsSnapMode":"","exitZenMode":"Opustit zen mód","cancel":"Zrušit","clear":"Vyčistit","remove":"Odstranit","embed":"","publishLibrary":"Zveřejnit","submit":"Odeslat","confirm":"Potvrdit","embeddableInteractionButton":""},"alerts":{"clearReset":"Toto vymaže celé plátno. Jste si jisti?","couldNotCreateShareableLink":"Nepodařilo se vytvořit sdílitelný odkaz.","couldNotCreateShareableLinkTooBig":"Nepodařilo se vytvořit sdílený odkaz: scéna je příliš velká","couldNotLoadInvalidFile":"Nepodařilo se načíst neplatný soubor","importBackendFailed":"Import z backendu se nezdařil.","cannotExportEmptyCanvas":"Nelze exportovat prázdné plátno.","couldNotCopyToClipboard":"Nelze zkopírovat do schránky.","decryptFailed":"Nelze dešifrovat data.","uploadedSecurly":"Nahrávání je zabezpečeno koncovým šifrováním, což znamená, že server Excalidraw ani třetí strany nemohou obsah přečíst.","loadSceneOverridePrompt":"Načítání externího výkresu nahradí váš existující obsah. Přejete si pokračovat?","collabStopOverridePrompt":"Zastavení relace přepíše vaše předchozí, lokálně uložené kresby. Jste si jisti?\\n\\n(Pokud chcete zachovat místní kresbu, jednoduše zavřete kartu prohlížeče)","errorAddingToLibrary":"Položku nelze přidat do knihovny","errorRemovingFromLibrary":"Položku nelze odstranit z knihovny","confirmAddLibrary":"Tímto přidáte {{numShapes}} tvarů do tvé knihovny. Jste si jisti?","imageDoesNotContainScene":"Zdá se, že tento obrázek neobsahuje žádná data o scéně. Zapnuli jste při exportu vkládání scény?","cannotRestoreFromImage":"Scénu nelze obnovit z tohoto souboru obrázku","invalidSceneUrl":"Nelze importovat scénu z zadané URL. Je buď poškozená, nebo neobsahuje platná JSON data Excalidraw.","resetLibrary":"Tímto vymažete vaši knihovnu. Jste si jisti?","removeItemsFromsLibrary":"Smazat {{count}} položek z knihovny?","invalidEncryptionKey":"Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.","collabOfflineWarning":"Není k dispozici žádné internetové připojení.\\nVaše změny nebudou uloženy!"},"errors":{"unsupportedFileType":"Nepodporovaný typ souboru.","imageInsertError":"Nelze vložit obrázek. Zkuste to později...","fileTooBig":"Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.","svgImageInsertError":"Nelze vložit SVG obrázek. Značení SVG je neplatné.","failedToFetchImage":"","invalidSVGString":"Neplatný SVG.","cannotResolveCollabServer":"Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.","importLibraryError":"Nelze načíst knihovnu","collabSaveFailed":"Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","collabSaveFailed_sizeExceeded":"Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","brave_measure_text_error":{"line1":"Vypadá to, že používáte Brave prohlížeč s povoleným nastavením Aggressively Block Fingerprinting.","line2":"To by mohlo vést k narušení Textových elementů ve vašich výkresech.","line3":"Důrazně doporučujeme zakázat toto nastavení. Můžete sledovat tyto kroky jak to udělat.","line4":"Pokud vypnutí tohoto nastavení neopravuje zobrazení textových prvků, prosím, otevřete problém na našem GitHubu, nebo nám napište na Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Výběr","image":"Vložit obrázek","rectangle":"Obdélník","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šipka","line":"Čára","freedraw":"Kreslení","text":"Text","library":"Knihovna","lock":"Po kreslení ponechat vybraný nástroj aktivní","penMode":"Režim Pera - zabránit dotyku","link":"Přidat/aktualizovat odkaz pro vybraný tvar","eraser":"Guma","frame":"","embeddable":"","laser":"","hand":"Ruka (nástroj pro posouvání)","extraTools":""},"headings":{"canvasActions":"Akce plátna","selectedShapeActions":"Akce vybraného tvaru","shapes":"Tvary"},"hints":{"canvasPanning":"Chcete-li přesunout plátno, podržte kolečko nebo mezerník při tažení nebo použijte nástroj Ruka","linearElement":"Kliknutím pro více bodů, táhnutím pro jednu čáru","freeDraw":"Klikněte a táhněte, pro ukončení pusťte","text":"Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr","embeddable":"","text_selected":"Dvojklikem nebo stisknutím klávesy ENTER upravíte text","text_editing":"Stiskněte Escape nebo Ctrl/Cmd+ENTER pro dokončení úprav","linearElementMulti":"Klikněte na poslední bod nebo stiskněte Escape anebo Enter pro dokončení","lockAngle":"Úhel můžete omezit podržením SHIFT","resize":"Můžete omezit proporce podržením SHIFT při změně velikosti,\\npodržte ALT pro změnu velikosti od středu","resizeImage":"Můžete volně změnit velikost podržením SHIFT,\\npodržením klávesy ALT změníte velikosti od středu","rotate":"Úhly můžete omezit podržením SHIFT při otáčení","lineEditor_info":"Podržte Ctrl/Cmd a dvakrát klikněte nebo stiskněte Ctrl/Cmd + Enter pro úpravu bodů","lineEditor_pointSelected":"Stisknutím tlačítka Delete odstraňte bod(y),\\nCtrl/Cmd+D pro duplicitu nebo táhnutím pro přesun","lineEditor_nothingSelected":"Vyberte bod, který chcete upravit (podržením klávesy SHIFT vyberete více položek),\\nnebo podržením klávesy Alt a kliknutím přidáte nové body","placeImage":"Kliknutím umístěte obrázek, nebo klepnutím a přetažením ručně nastavíte jeho velikost","publishLibrary":"Publikovat vlastní knihovnu","bindTextToElement":"Stiskněte Enter pro přidání textu","deepBoxSelect":"Podržte Ctrl/Cmd pro hluboký výběr a pro zabránění táhnutí","eraserRevert":"Podržením klávesy Alt vrátíte prvky označené pro smazání","firefox_clipboard_write":"Tato funkce může být povolena nastavením vlajky \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Náhled nelze zobrazit","canvasTooBig":"Plátno je možná příliš velké.","canvasTooBigTip":"Tip: zkus posunout nejvzdálenější prvky trochu blíže k sobě."},"errorSplash":{"headingMain":"Chyba. Zkuste .","clearCanvasMessage":"Pokud opětovné načtení nefunguje, zkuste .","clearCanvasCaveat":" To povede ke ztrátě dat ","trackedToSentry":"Chyba identifikátoru {{eventId}} byl zaznamenán v našem systému.","openIssueMessage":"Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem . Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Můžete pozvat lidi na vaši aktuální scénu ke spolupráci s vámi.","desc_privacy":"Nebojte se, relace používá end-to-end šifrování, takže cokoliv nakreslíte zůstane soukromé. Ani náš server nebude schopen vidět, s čím budete pracovat.","button_startSession":"Zahájit relaci","button_stopSession":"Ukončit relaci","desc_inProgressIntro":"Živá spolupráce právě probíhá.","desc_shareLink":"Sdílejte tento odkaz s každým, s kým chcete spolupracovat:","desc_exitSession":"Zastavením relace se odpojíte od místnosti, ale budete moci pokračovat v práci s touto scénou lokálně. Všimněte si, že to nebude mít vliv na ostatní lidi a budou stále moci spolupracovat na jejich verzi.","shareTitle":"Připojte se k aktivní spolupráci na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložit na disk","disk_details":"Exportovat data scény do souboru, ze kterého můžete importovat později.","disk_button":"Uložit do souboru","link_title":"Odkaz pro sdílení","link_details":"Exportovat jako odkaz pouze pro čtení.","link_button":"Exportovat do odkazu","excalidrawplus_description":"Uložit scénu do vašeho pracovního prostoru Excalidraw+.","excalidrawplus_button":"Exportovat","excalidrawplus_exportError":"Export do Excalidraw+ se v tuto chvíli nezdařil..."},"helpDialog":{"blog":"Přečtěte si náš blog","click":"kliknutí","deepSelect":"Hluboký výběr","deepBoxSelect":"Hluboký výběr uvnitř boxu a zabránění táhnnutí","curvedArrow":"Zakřivená šipka","curvedLine":"Zakřivená čára","documentation":"Dokumentace","doubleClick":"dvojklik","drag":"tažení","editor":"Editor","editLineArrowPoints":"Upravit body linií/šipek","editText":"Upravit text / přidat popis","github":"Našel jsi problém? Nahlaš ho","howto":"Sledujte naše návody","or":"nebo","preventBinding":"Zabránit vázání šipky","tools":"Nástroje","shortcuts":"Klávesové zkratky","textFinish":"Dokončit úpravy (textový editor)","textNewLine":"Přidat nový řádek (textový editor)","title":"Nápověda","view":"Zobrazení","zoomToFit":"Přiblížit na zobrazení všech prvků","zoomToSelection":"Přiblížit na výběr","toggleElementLock":"Zamknout/odemknout výběr","movePageUpDown":"Posunout stránku nahoru/dolů","movePageLeftRight":"Přesunout stránku doleva/doprava"},"clearCanvasDialog":{"title":"Vymazat plátno"},"publishDialog":{"title":"Publikovat knihovnu","itemName":"Název položky","authorName":"Jméno autora","githubUsername":"GitHub uživatelské jméno","twitterUsername":"Twitter uživatelské jméno","libraryName":"Název knihovny","libraryDesc":"Popis knihovny","website":"Webová stránka","placeholder":{"authorName":"Jméno nebo uživatelské jméno","libraryName":"Název vaší knihovny","libraryDesc":"Popis Vaší knihovny, který pomůže lidem pochopit její využití","githubHandle":"Github uživatelské jméno (nepovinné), abyste mohli upravovat knihovnu poté co je odeslána ke kontrole","twitterHandle":"Twitter uživatelské jméno (nepovinné), abychom věděli koho označit při propagaci na Twitteru","website":"Odkaz na Vaši osobní webovou stránku nebo jinam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadejte platnou URL adresu"},"noteDescription":"Odešlete svou knihovnu, pro zařazení do veřejného úložiště knihoven, odkud ji budou moci při kreslení využít i ostatní uživatelé.","noteGuidelines":"Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím pokyny","noteLicense":"Odesláním souhlasíte s tím, že knihovna bude zveřejněna pod MIT licencí, stručně řečeno, kdokoli ji může používat bez omezení.","noteItems":"Každá položka knihovny musí mít svůj vlastní název, aby byla filtrovatelná. Následující položky knihovny budou zahrnuty:","atleastOneLibItem":"Vyberte alespoň jednu položku knihovny, kterou chcete začít","republishWarning":"Poznámka: některé z vybraných položek jsou označeny jako již zveřejněné/odeslané. Položky byste měli znovu odeslat pouze při aktualizaci existující knihovny nebo podání."},"publishSuccessDialog":{"title":"Knihovna byla odeslána","content":"Děkujeme vám {{authorName}}. Vaše knihovna byla odeslána k posouzení. Stav můžete sledovat zde"},"confirmDialog":{"resetLibrary":"Resetovat knihovnu","removeItemsFromLib":"Odstranit vybrané položky z knihovny"},"imageExportDialog":{"header":"Exportovat obrázek","label":{"withBackground":"Pozadí","onlySelected":"Pouze vybrané","darkMode":"Tmavý režim","embedScene":"Vložit scénu","scale":"Měřítko","padding":"Odsazení"},"tooltip":{"embedScene":"Data scény budou uložena do exportovaného souboru PNG/SVG tak, aby z něj mohla být scéna obnovena.\\nZvýší se velikost exportovaného souboru."},"title":{"exportToPng":"Exportovat do PNG","exportToSvg":"Exportovat do SVG","copyPngToClipboard":"Kopírovat PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovat do schránky"}},"encrypted":{"tooltip":"Vaše kresby jsou end-to-end šifrované, takže servery Excalidraw je nikdy neuvidí.","link":"Blog příspěvek na end-to-end šifrování v Excalidraw"},"stats":{"angle":"Úhel","element":"Prvek","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybráno","storage":"Úložiště","title":"Statistika pro nerdy","total":"Celkem","version":"Verze","versionCopy":"Kliknutím zkopírujete","versionNotAvailable":"Verze není k dispozici","width":"Šířka"},"toast":{"addedToLibrary":"Přidáno do knihovny","copyStyles":"Styly byly zkopírovány.","copyToClipboard":"Zkopírováno do schránky.","copyToClipboardAsPng":"{{exportSelection}} zkopírován do schránky jako PNG\\n({{exportColorScheme}})","fileSaved":"Soubor byl uložen.","fileSavedToFilename":"Uloženo do {filename}","canvas":"plátno","selection":"výběr","pasteAsSingleElement":"Pomocí {{shortcut}} vložte jako jeden prvek,\\nnebo vložte do existujícího textového editoru","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Průhledná","black":"Černá","white":"Bílá","red":"Červená","pink":"Růžová","grape":"Vínová","violet":"Fialová","gray":"Šedá","blue":"Modrá","cyan":"Azurová","teal":"Modrozelená","green":"Zelená","yellow":"Žlutá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všechna vaše data jsou uložena lokálně ve vašem prohlížeči.","center_heading_plus":"Chcete místo toho přejít na Excalidraw+?","menuHint":"Export, nastavení, jazyky, ..."},"defaults":{"menuHint":"Export, nastavení a další...","center_heading":"Diagramy. Vytvořeny. Jednoduše.","toolbarHint":"Vyberte nástroj a začněte kreslit!","helpHint":"Zkratky a pomoc"}},"colorPicker":{"mostUsedCustomColors":"Nejpoužívanější vlastní barvy","colors":"Barvy","shades":"Stíny","hexCode":"Hex kód","noShades":"Pro tuto barvu nejsou k dispozici žádné odstíny"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/da-DK-json-34a60c9843cecd71376f.js b/public/excalidraw/excalidraw-assets-dev/locales/da-DK-json-34a60c9843cecd71376f.js new file mode 100644 index 0000000..7bc45d9 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/da-DK-json-34a60c9843cecd71376f.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/da-DK-json"],{ + +/***/ "../../locales/da-DK.json": +/*!********************************!*\ + !*** ../../locales/da-DK.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Indsæt","pasteAsPlaintext":"Indsæt som klartekst","pasteCharts":"Indsæt diagrammer","selectAll":"Marker alle","multiSelect":"Tilføj element til markering","moveCanvas":"Flyt lærred","cut":"Klip","copy":"Kopier","copyAsPng":"Kopier til klippebord som PNG","copyAsSvg":"Kopier til klippebord som SVG","copyText":"Kopiér til udklipsholder som tekst","bringForward":"Flyt fremad","sendToBack":"Placer bagest","bringToFront":"Placer forrest","sendBackward":"Send bagud","delete":"Fjern","copyStyles":"Kopier stil","pasteStyles":"Indsæt stil","stroke":"Linje","background":"Baggrund","fill":"Udfyld","strokeWidth":"Linjebredde","strokeStyle":"Linjeform","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Sjuskethed","opacity":"Gennemsigtighed","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilehoveder","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Bjælke","arrowhead_dot":"Prik","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Skrifttypefamilie","addWatermark":"Tilføj \\"Lavet med Excalidraw\\"","handDrawn":"Hånd-tegnet","normal":"Normal","code":"Kode","small":"Lille","medium":"Mellem","large":"Stor","veryLarge":"Meget stor","solid":"Solid","hachure":"Skravering","zigzag":"Zigzag","crossHatch":"Krydsskravering","thin":"Tynd","bold":"Fed","left":"Venstre","center":"Centrere","right":"Højre","extraBold":"Extra fed","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegneserietegner","fileTitle":"Filnavn","colorPicker":"Farvevælger","canvasColors":"Brugt på lærred","canvasBackground":"Lærredsbaggrund","drawingCanvas":"Tegnelærred","layers":"Lag","actions":"Handlinger","language":"Sprog","liveCollaboration":"Live samarbejde...","duplicateSelection":"Duplikér","untitled":"Unavngivet","name":"Navn","yourName":"Dit navn","madeWithExcalidraw":"Fremstillet med Excalidraw","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"Del","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"Kopier til klippebord","save":"","saveAs":"Gem som","load":"","getShareableLink":"Lav et delbart link","close":"Luk","selectLanguage":"Vælg sprog","scrollBackToContent":"Scroll tilbage til indhold","zoomIn":"Zoom ind","zoomOut":"Zoom ud","resetZoom":"Nulstil zoom","menu":"Menu","done":"Færdig","edit":"Rediger","undo":"Fortryd","redo":"Gendan","resetLibrary":"Nulstil bibliotek","createNewRoom":"Opret nyt rum","fullScreen":"Fuld skærm","darkMode":"Mørk tilstand","lightMode":"Lys baggrund","zenMode":"Zentilstand","objectsSnapMode":"","exitZenMode":"Stop zentilstand","cancel":"Annuller","clear":"Ryd","remove":"Fjern","embed":"","publishLibrary":"Publicér","submit":"Gem","confirm":"Bekræft","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil rydde hele lærredet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke oprette delbart link.","couldNotCreateShareableLinkTooBig":"Kunne ikke oprette delbart link: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke indlæse ugyldig fil","importBackendFailed":"Import fra backend mislykkedes.","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"Klik og træk, slip når du er færdig","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":" Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.","sceneContent":"Scene indhold:"},"roomDialog":{"desc_intro":"Du kan invitere folk til din nuværende scene, så de kan samarbejde med dig.","desc_privacy":"Bare rolig, sessionen bruger end-to-end kryptering, så uanset hvad du tegner vil det forblive privat. Ikke engang vores server vil kunne se, hvad du kommer op med.","button_startSession":"Start session","button_stopSession":"Stop session","desc_inProgressIntro":"Live-samarbejde session er nu begyndt.","desc_shareLink":"Del dette link med enhver, du ønsker at samarbejde med:","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Fejl"},"exportDialog":{"disk_title":"Gem til disk","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"Læs vores blog","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"Statistik for nørder","total":"","version":"","versionCopy":"Klik for at kopiere","versionNotAvailable":"","width":"Bredde"},"toast":{"addedToLibrary":"","copyStyles":"Kopieret stilarter.","copyToClipboard":"Kopieret til klippebord.","copyToClipboardAsPng":"Kopieret {{exportSelection}} til klippebord som PNG\\n({{exportColorScheme}})","fileSaved":"Fil gemt.","fileSavedToFilename":"Gemt som {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/de-DE-json-d13450595b795867412b.js b/public/excalidraw/excalidraw-assets-dev/locales/de-DE-json-d13450595b795867412b.js new file mode 100644 index 0000000..d03160b --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/de-DE-json-d13450595b795867412b.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/de-DE-json"],{ + +/***/ "../../locales/de-DE.json": +/*!********************************!*\ + !*** ../../locales/de-DE.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Einfügen","pasteAsPlaintext":"Als reinen Text einfügen","pasteCharts":"Diagramme einfügen","selectAll":"Alle auswählen","multiSelect":"Element zur Auswahl hinzufügen","moveCanvas":"Leinwand verschieben","cut":"Ausschneiden","copy":"Kopieren","copyAsPng":"In Zwischenablage kopieren (PNG)","copyAsSvg":"In Zwischenablage kopieren (SVG)","copyText":"In die Zwischenablage als Text kopieren","bringForward":"Nach vorne","sendToBack":"In den Hintergrund","bringToFront":"In den Vordergrund","sendBackward":"Nach hinten","delete":"Löschen","copyStyles":"Formatierung kopieren","pasteStyles":"Formatierung übernehmen","stroke":"Strich","background":"Hintergrund","fill":"Füllung","strokeWidth":"Strichstärke","strokeStyle":"Konturstil","strokeStyle_solid":"Durchgezogen","strokeStyle_dashed":"Gestrichelt","strokeStyle_dotted":"Gepunktet","sloppiness":"Sauberkeit","opacity":"Deckkraft","textAlign":"Textausrichtung","edges":"Kanten","sharp":"Scharf","round":"Rund","arrowheads":"Pfeilspitzen","arrowhead_none":"Keine","arrowhead_arrow":"Pfeil","arrowhead_bar":"Balken","arrowhead_dot":"Punkt","arrowhead_triangle":"Dreieck","fontSize":"Schriftgröße","fontFamily":"Schriftfamilie","addWatermark":"\\"Made with Excalidraw\\" hinzufügen","handDrawn":"Handgezeichnet","normal":"Normal","code":"Code","small":"Klein","medium":"Mittel","large":"Groß","veryLarge":"Sehr groß","solid":"Deckend","hachure":"Schraffiert","zigzag":"Zickzack","crossHatch":"Kreuzschraffiert","thin":"Dünn","bold":"Fett","left":"Links","center":"Zentriert","right":"Rechts","extraBold":"Extra Fett","architect":"Architekt","artist":"Künstler","cartoonist":"Karikaturist","fileTitle":"Dateiname","colorPicker":"Farbauswähler","canvasColors":"Auf Leinwand verwendet","canvasBackground":"Zeichenflächenhintergrund","drawingCanvas":"Leinwand","layers":"Ebenen","actions":"Aktionen","language":"Sprache","liveCollaboration":"Live-Zusammenarbeit...","duplicateSelection":"Duplizieren","untitled":"Unbenannt","name":"Name","yourName":"Dein Name","madeWithExcalidraw":"Made with Excalidraw","group":"Auswahl gruppieren","ungroup":"Gruppierung aufheben","collaborators":"Mitarbeitende","showGrid":"Raster anzeigen","addToLibrary":"Zur Bibliothek hinzufügen","removeFromLibrary":"Aus Bibliothek entfernen","libraryLoadingMessage":"Lade Bibliothek…","libraries":"Bibliotheken durchsuchen","loadingScene":"Lade Zeichnung…","align":"Ausrichten","alignTop":"Obere Kanten","alignBottom":"Untere Kanten","alignLeft":"Linke Kanten","alignRight":"Rechte Kanten","centerVertically":"Vertikal zentrieren","centerHorizontally":"Horizontal zentrieren","distributeHorizontally":"Horizontal verteilen","distributeVertically":"Vertikal verteilen","flipHorizontal":"Horizontal spiegeln","flipVertical":"Vertikal spiegeln","viewMode":"Ansichtsmodus","share":"Teilen","showStroke":"Auswahl für Strichfarbe anzeigen","showBackground":"Hintergrundfarbe auswählen","toggleTheme":"Design umschalten","personalLib":"Persönliche Bibliothek","excalidrawLib":"Excalidraw Bibliothek","decreaseFontSize":"Schriftgröße verkleinern","increaseFontSize":"Schrift vergrößern","unbindText":"Text lösen","bindText":"Text an Container binden","createContainerFromText":"Text in Container einbetten","link":{"edit":"Link bearbeiten","editEmbed":"Link bearbeiten & einbetten","create":"Link erstellen","createEmbed":"Link erstellen & einbetten","label":"Link","labelEmbed":"Verlinken & einbetten","empty":"Kein Link festgelegt"},"lineEditor":{"edit":"Linie bearbeiten","exit":"Linieneditor verlassen"},"elementLock":{"lock":"Sperren","unlock":"Entsperren","lockAll":"Alle sperren","unlockAll":"Alle entsperren"},"statusPublished":"Veröffentlicht","sidebarLock":"Seitenleiste offen lassen","selectAllElementsInFrame":"Alle Elemente im Rahmen auswählen","removeAllElementsFromFrame":"Alle Elemente aus dem Rahmen entfernen","eyeDropper":"Farbe von der Zeichenfläche auswählen"},"library":{"noItems":"Noch keine Elemente hinzugefügt...","hint_emptyLibrary":"Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.","hint_emptyPrivateLibrary":"Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen."},"buttons":{"clearReset":"Zeichenfläche löschen & Hintergrundfarbe zurücksetzen","exportJSON":"In Datei exportieren","exportImage":"Exportiere Bild...","export":"Speichern als...","copyToClipboard":"In Zwischenablage kopieren","save":"In aktueller Datei speichern","saveAs":"Speichern unter","load":"Öffnen","getShareableLink":"Teilbaren Link erhalten","close":"Schließen","selectLanguage":"Sprache auswählen","scrollBackToContent":"Zurück zum Inhalt","zoomIn":"Vergrößern","zoomOut":"Verkleinern","resetZoom":"Zoom zurücksetzen","menu":"Menü","done":"Fertig","edit":"Bearbeiten","undo":"Rückgängig machen","redo":"Wiederholen","resetLibrary":"Bibliothek zurücksetzen","createNewRoom":"Neuen Raum erstellen","fullScreen":"Vollbildanzeige","darkMode":"Dunkles Design","lightMode":"Helles Design","zenMode":"Zen-Modus","objectsSnapMode":"Einrasten an Objekten","exitZenMode":"Zen-Modus verlassen","cancel":"Abbrechen","clear":"Löschen","remove":"Entfernen","embed":"Einbettung umschalten","publishLibrary":"Veröffentlichen","submit":"Absenden","confirm":"Bestätigen","embeddableInteractionButton":"Klicken, um zu interagieren"},"alerts":{"clearReset":"Dies wird die ganze Zeichenfläche löschen. Bist du dir sicher?","couldNotCreateShareableLink":"Konnte keinen teilbaren Link erstellen.","couldNotCreateShareableLinkTooBig":"Konnte keinen teilbaren Link erstellen: Die Zeichnung ist zu groß","couldNotLoadInvalidFile":"Ungültige Datei konnte nicht geladen werden","importBackendFailed":"Import vom Server ist fehlgeschlagen.","cannotExportEmptyCanvas":"Leere Zeichenfläche kann nicht exportiert werden.","couldNotCopyToClipboard":"Kopieren in die Zwischenablage fehlgeschlagen.","decryptFailed":"Daten konnten nicht entschlüsselt werden.","uploadedSecurly":"Der Upload wurde mit Ende-zu-Ende-Verschlüsselung gespeichert. Weder Excalidraw noch Dritte können den Inhalt einsehen.","loadSceneOverridePrompt":"Das Laden einer externen Zeichnung ersetzt den vorhandenen Inhalt. Möchtest du fortfahren?","collabStopOverridePrompt":"Das Stoppen der Sitzung wird deine vorherige, lokal gespeicherte Zeichnung überschreiben. Bist du dir sicher?\\n\\n(Wenn du deine lokale Zeichnung behalten möchtest, schließe stattdessen den Browser-Tab.)","errorAddingToLibrary":"Das Element konnte nicht zur Bibliothek hinzugefügt werden","errorRemovingFromLibrary":"Das Element konnte nicht aus der Bibliothek entfernt werden","confirmAddLibrary":"Dies fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du dir sicher?","imageDoesNotContainScene":"Dieses Bild scheint keine Szenendaten zu enthalten. Hast Du das Einbetten der Szene während des Exports aktiviert?","cannotRestoreFromImage":"Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden","invalidSceneUrl":"Die Szene konnte nicht von der angegebenen URL importiert werden. Sie ist entweder fehlerhaft oder enthält keine gültigen Excalidraw JSON-Daten.","resetLibrary":"Dieses löscht deine Bibliothek. Bist du sicher?","removeItemsFromsLibrary":"{{count}} Element(e) aus der Bibliothek löschen?","invalidEncryptionKey":"Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.","collabOfflineWarning":"Keine Internetverbindung verfügbar.\\nDeine Änderungen werden nicht gespeichert!"},"errors":{"unsupportedFileType":"Nicht unterstützter Dateityp.","imageInsertError":"Das Bild konnte nicht eingefügt werden. Versuche es später erneut...","fileTooBig":"Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.","svgImageInsertError":"SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.","failedToFetchImage":"Bild konnte nicht abgerufen werden.","invalidSVGString":"Ungültige SVG.","cannotResolveCollabServer":"Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.","importLibraryError":"Bibliothek konnte nicht geladen werden","collabSaveFailed":"Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","collabSaveFailed_sizeExceeded":"Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","brave_measure_text_error":{"line1":"Sieht so aus, als ob Du den Brave-Browser verwendest und die aggressive Blockierung von Fingerabdrücken aktiviert hast.","line2":"Dies könnte dazu führen, dass die Textelemente in Ihren Zeichnungen zerstört werden.","line3":"Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du diesen Schritten folgen.","line4":"Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein Ticket auf unserem GitHub oder schreibe uns auf Discord"},"libraryElementTypeError":{"embeddable":"Einbettbare Elemente können der Bibliothek nicht hinzugefügt werden.","image":"Unterstützung für das Hinzufügen von Bildern in die Bibliothek kommt bald!"}},"toolBar":{"selection":"Auswahl","image":"Bild einfügen","rectangle":"Rechteck","diamond":"Raute","ellipse":"Ellipse","arrow":"Pfeil","line":"Linie","freedraw":"Zeichnen","text":"Text","library":"Bibliothek","lock":"Ausgewähltes Werkzeug nach Zeichnen aktiv lassen","penMode":"Stift-Modus - Berührung verhindern","link":"Link für ausgewählte Form hinzufügen / aktualisieren","eraser":"Radierer","frame":"Rahmenwerkzeug","embeddable":"Web-Einbettung","laser":"Laserpointer","hand":"Hand (Schwenkwerkzeug)","extraTools":"Weitere Werkzeuge"},"headings":{"canvasActions":"Aktionen für Zeichenfläche","selectedShapeActions":"Aktionen für Auswahl","shapes":"Formen"},"hints":{"canvasPanning":"Um die Zeichenfläche zu verschieben, halte das Mausrad oder die Leertaste während des Ziehens, oder verwende das Hand-Werkzeug","linearElement":"Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie","freeDraw":"Klicke und ziehe. Lass los, wenn du fertig bist","text":"Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst","embeddable":"Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen","text_selected":"Doppelklicken oder Eingabetaste drücken, um Text zu bearbeiten","text_editing":"Drücke Escape oder CtrlOrCmd+Eingabetaste, um die Bearbeitung abzuschließen","linearElementMulti":"Zum Beenden auf den letzten Punkt klicken oder Escape oder Eingabe drücken","lockAngle":"Du kannst Winkel einschränken, indem du SHIFT gedrückt hältst","resize":"Du kannst die Proportionen einschränken, indem du SHIFT während der Größenänderung gedrückt hältst. Halte ALT gedrückt, um die Größe vom Zentrum aus zu ändern","resizeImage":"Du kannst die Größe frei ändern, indem du SHIFT gedrückt hältst; halte ALT, um die Größe vom Zentrum aus zu ändern","rotate":"Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst","lineEditor_info":"CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten","lineEditor_pointSelected":"Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben","lineEditor_nothingSelected":"Wähle einen zu bearbeitenden Punkt (halte SHIFT gedrückt um mehrere Punkte auszuwählen),\\noder halte Alt gedrückt und klicke um neue Punkte hinzuzufügen","placeImage":"Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen","publishLibrary":"Veröffentliche deine eigene Bibliothek","bindTextToElement":"Zum Hinzufügen Eingabetaste drücken","deepBoxSelect":"Halte CtrlOrCmd gedrückt, um innerhalb der Gruppe auszuwählen, und um Ziehen zu vermeiden","eraserRevert":"Halte Alt gedrückt, um die zum Löschen markierten Elemente zurückzusetzen","firefox_clipboard_write":"Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \\"dom.events.asyncClipboard.clipboardItem\\" auf \\"true\\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \\"about:config\\".","disableSnapping":"Halte CtrlOrCmd gedrückt, um das Einrasten zu deaktivieren"},"canvasError":{"cannotShowPreview":"Vorschau kann nicht angezeigt werden","canvasTooBig":"Die Leinwand ist möglicherweise zu groß.","canvasTooBigTip":"Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen."},"errorSplash":{"headingMain":"Es ist ein Fehler aufgetreten. Versuche ","clearCanvasMessage":"Wenn das Neuladen nicht funktioniert, versuche ","clearCanvasCaveat":" Dies wird zum Verlust von Daten führen ","trackedToSentry":"Der Fehler mit der Kennung {{eventId}} wurde in unserem System registriert.","openIssueMessage":"Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren . Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).","sceneContent":"Zeichnungsinhalt:"},"roomDialog":{"desc_intro":"Du kannst Leute zu deiner aktuellen Zeichnung einladen um mit ihnen zusammenzuarbeiten.","desc_privacy":"Keine Sorge, die Sitzung nutzt eine Ende-zu-Ende-Verschlüsselung. Alles was du zeichnest, bleibt privat. Auch unser Server sieht nicht, was du dir einfallen lässt.","button_startSession":"Sitzung starten","button_stopSession":"Sitzung beenden","desc_inProgressIntro":"Die Live-Sitzung wird nun ausgeführt.","desc_shareLink":"Teile diesen Link mit allen, mit denen du zusammenarbeiten möchtest:","desc_exitSession":"Wenn du die Sitzung beendest, wird deine Verbindung zum Raum getrennt. Du kannst jedoch lokal weiter an der Zeichnung arbeiten. Beachte, dass dies keine Auswirkungen auf andere hat und diese weiterhin gemeinsam an ihrer Version arbeiten können.","shareTitle":"An einer Live-Kollaborationssitzung auf Excalidraw teilnehmen"},"errorDialog":{"title":"Fehler"},"exportDialog":{"disk_title":"Auf Festplatte speichern","disk_details":"Exportiere die Zeichnungsdaten in eine Datei, die Du später importieren kannst.","disk_button":"Als Datei speichern","link_title":"Teilbarer Link","link_details":"Als schreibgeschützten Link exportieren.","link_button":"Als Link exportieren","excalidrawplus_description":"Speichere die Szene in deinem Excalidraw+ Arbeitsbereich.","excalidrawplus_button":"Exportieren","excalidrawplus_exportError":"Konnte nicht nach Excalidraw+ exportieren..."},"helpDialog":{"blog":"Lies unseren Blog","click":"klicken","deepSelect":"Auswahl innerhalb der Gruppe","deepBoxSelect":"Auswahl innerhalb der Gruppe, und Ziehen vermeiden","curvedArrow":"Gebogener Pfeil","curvedLine":"Gebogene Linie","documentation":"Dokumentation","doubleClick":"doppelklicken","drag":"ziehen","editor":"Editor","editLineArrowPoints":"Linien-/Pfeil-Punkte bearbeiten","editText":"Text bearbeiten / Label hinzufügen","github":"Ein Problem gefunden? Informiere uns","howto":"Folge unseren Anleitungen","or":"oder","preventBinding":"Pfeil-Bindung verhindern","tools":"Werkzeuge","shortcuts":"Tastaturkürzel","textFinish":"Bearbeitung beenden (Texteditor)","textNewLine":"Neue Zeile hinzufügen (Texteditor)","title":"Hilfe","view":"Ansicht","zoomToFit":"Zoomen um alle Elemente einzupassen","zoomToSelection":"Auf Auswahl zoomen","toggleElementLock":"Auswahl sperren/entsperren","movePageUpDown":"Seite nach oben/unten verschieben","movePageLeftRight":"Seite nach links/rechts verschieben"},"clearCanvasDialog":{"title":"Zeichenfläche löschen"},"publishDialog":{"title":"Bibliothek veröffentlichen","itemName":"Elementname","authorName":"Name des Autors","githubUsername":"GitHub-Benutzername","twitterUsername":"Twitter-Benutzername","libraryName":"Name der Bibliothek","libraryDesc":"Beschreibung der Bibliothek","website":"Webseite","placeholder":{"authorName":"Dein Name oder Benutzername","libraryName":"Name deiner Bibliothek","libraryDesc":"Beschreibung deiner Bibliothek, um anderen Nutzern bei der Verwendung zu helfen","githubHandle":"GitHub-Handle (optional), damit du die Bibliothek bearbeiten kannst, wenn sie zur Überprüfung eingereicht wurde","twitterHandle":"Twitter-Benutzername (optional), damit wir wissen, wen wir bei Werbung über Twitter nennen können","website":"Link zu deiner persönlichen Webseite oder zu anderer Seite (optional)"},"errors":{"required":"Erforderlich","website":"Gültige URL eingeben"},"noteDescription":"Sende deine Bibliothek ein, um in die öffentliche Bibliotheks-Repository aufgenommen zu werdendamit andere Nutzer sie in ihren Zeichnungen verwenden können.","noteGuidelines":"Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die Richtlinien vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich.","noteLicense":"Mit dem Absenden stimmst du zu, dass die Bibliothek unter der MIT-Lizenz, die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann.","noteItems":"Jedes Bibliothekselement muss einen eigenen Namen haben, damit es gefiltert werden kann. Die folgenden Bibliothekselemente werden hinzugefügt:","atleastOneLibItem":"Bitte wähle mindestens ein Bibliothekselement aus, um zu beginnen","republishWarning":"Hinweis: Einige der ausgewählten Elemente sind bereits als veröffentlicht/eingereicht markiert. Du solltest Elemente nur erneut einreichen, wenn Du eine existierende Bibliothek oder Einreichung aktualisierst."},"publishSuccessDialog":{"title":"Bibliothek übermittelt","content":"Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgenhier"},"confirmDialog":{"resetLibrary":"Bibliothek zurücksetzen","removeItemsFromLib":"Ausgewählte Elemente aus der Bibliothek entfernen"},"imageExportDialog":{"header":"Bild exportieren","label":{"withBackground":"Hintergrund","onlySelected":"Nur ausgewählte","darkMode":"Dunkler Modus","embedScene":"Szene einbetten","scale":"Skalierung","padding":"Abstand"},"tooltip":{"embedScene":"Die Zeichnungsdaten werden in der exportierten PNG/SVG-Datei gespeichert, sodass das Dokument später weiter bearbeitet werden kann. \\nDieses wird die exportierte Datei vergrößern."},"title":{"exportToPng":"Als PNG exportieren","exportToSvg":"Als SVG exportieren","copyPngToClipboard":"PNG in die Zwischenablage kopieren"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"In Zwischenablage kopieren"}},"encrypted":{"tooltip":"Da deine Zeichnungen Ende-zu-Ende verschlüsselt werden, sehen auch unsere Excalidraw-Server sie niemals.","link":"Blogbeitrag über Ende-zu-Ende-Verschlüsselung in Excalidraw"},"stats":{"angle":"Winkel","element":"Element","elements":"Elemente","height":"Höhe","scene":"Zeichnung","selected":"Ausgewählt","storage":"Speicher","title":"Statistiken für Nerds","total":"Gesamt","version":"Version","versionCopy":"Zum Kopieren klicken","versionNotAvailable":"Version nicht verfügbar","width":"Breite"},"toast":{"addedToLibrary":"Zur Bibliothek hinzugefügt","copyStyles":"Formatierungen kopiert.","copyToClipboard":"In die Zwischenablage kopiert.","copyToClipboardAsPng":"{{exportSelection}} als PNG in die Zwischenablage kopiert\\n({{exportColorScheme}})","fileSaved":"Datei gespeichert.","fileSavedToFilename":"Als {filename} gespeichert","canvas":"Zeichenfläche","selection":"Auswahl","pasteAsSingleElement":"Verwende {{shortcut}} , um als einzelnes Element\\neinzufügen oder in einen existierenden Texteditor einzufügen","unableToEmbed":"Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen","unrecognizedLinkFormat":"Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den \'embed\' String einzufügen, der von der Quellseite zur Verfügung gestellt wird"},"colors":{"transparent":"Transparent","black":"Schwarz","white":"Weiß","red":"Rot","pink":"Pink","grape":"Traube","violet":"Violett","gray":"Grau","blue":"Blau","cyan":"Cyan","teal":"Blaugrün","green":"Grün","yellow":"Gelb","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Alle Daten werden lokal in Deinem Browser gespeichert.","center_heading_plus":"Möchtest du stattdessen zu Excalidraw+ gehen?","menuHint":"Exportieren, Einstellungen, Sprachen, ..."},"defaults":{"menuHint":"Exportieren, Einstellungen und mehr...","center_heading":"Diagramme. Einfach. Gemacht.","toolbarHint":"Wähle ein Werkzeug & beginne zu zeichnen!","helpHint":"Kurzbefehle & Hilfe"}},"colorPicker":{"mostUsedCustomColors":"Beliebteste benutzerdefinierte Farben","colors":"Farben","shades":"Schattierungen","hexCode":"Hex-Code","noShades":"Keine Schattierungen für diese Farbe verfügbar"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Als Bild exportieren","button":"Als Bild exportieren","description":"Exportiere die Zeichnungsdaten als ein Bild, von dem Du später importieren kannst."},"saveToDisk":{"title":"Auf Festplatte speichern","button":"Auf Festplatte speichern","description":"Exportiere die Zeichnungsdaten in eine Datei, von der Du später importieren kannst."},"excalidrawPlus":{"title":"Excalidraw+","button":"Export nach Excalidraw+","description":"Speichere die Szene in deinem Excalidraw+-Arbeitsbereich."}},"modal":{"loadFromFile":{"title":"Aus Datei laden","button":"Aus Datei laden","description":"Das Laden aus einer Datei wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."},"shareableLink":{"title":"Aus Link laden","button":"Meinen Inhalt ersetzen","description":"Das Laden einer externen Zeichnung wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/el-GR-json-c854b199f3ac07d40294.js b/public/excalidraw/excalidraw-assets-dev/locales/el-GR-json-c854b199f3ac07d40294.js new file mode 100644 index 0000000..890e140 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/el-GR-json-c854b199f3ac07d40294.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/el-GR-json"],{ + +/***/ "../../locales/el-GR.json": +/*!********************************!*\ + !*** ../../locales/el-GR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Επικόλληση","pasteAsPlaintext":"Επικόλληση ως απλό κείμενο","pasteCharts":"Επικόλληση γραφημάτων","selectAll":"Επιλογή όλων","multiSelect":"Προσθέστε το στοιχείο στην επιλογή","moveCanvas":"Μετακίνηση καμβά","cut":"Αποκοπή","copy":"Αντιγραφή","copyAsPng":"Αντιγραφή στο πρόχειρο ως PNG","copyAsSvg":"Αντιγραφή στο πρόχειρο ως SVG","copyText":"Αντιγραφή στο πρόχειρο ως κείμενο","bringForward":"Στο προσκήνιο","sendToBack":"Ένα επίπεδο πίσω","bringToFront":"Ένα επίπεδο μπροστά","sendBackward":"Στο παρασκήνιο","delete":"Διαγραφή","copyStyles":"Αντιγραφή εμφάνισης","pasteStyles":"Επικόλληση εμφάνισης","stroke":"Μολυβιά","background":"Φόντο","fill":"Γέμισμα","strokeWidth":"Πάχος μολυβιάς","strokeStyle":"Στυλ περιγράμματος","strokeStyle_solid":"Συμπαγής","strokeStyle_dashed":"Διακεκομμένη με παύλες","strokeStyle_dotted":"Διακεκομμένη με τελείες","sloppiness":"Ακαταστασία","opacity":"Διαφάνεια","textAlign":"Στοίχιση κειμένου","edges":"Άκρες","sharp":"Οξύ","round":"Στρογγυλό","arrowheads":"Σύμβολα βελών","arrowhead_none":"Κανένα","arrowhead_arrow":"Βέλος","arrowhead_bar":"Μπάρα","arrowhead_dot":"Τελεία","arrowhead_triangle":"Τρίγωνο","fontSize":"Μέγεθος γραμματοσειράς","fontFamily":"Γραμματοσειρά","addWatermark":"Προσθήκη \\"Φτιαγμένο με Excalidraw\\"","handDrawn":"Σχεδιασμένο στο χέρι","normal":"Κανονική","code":"Κώδικας","small":"Μικρό","medium":"Μεσαίο","large":"Μεγάλο","veryLarge":"Πολύ μεγάλο","solid":"Συμπαγής","hachure":"Εκκόλαψη","zigzag":"","crossHatch":"Διασταυρούμενη εκκόλαψη","thin":"Λεπτή","bold":"Έντονη","left":"Αριστερά","center":"Κέντρο","right":"Δεξιά","extraBold":"Πολύ έντονη","architect":"Αρχιτέκτονας","artist":"Καλλιτέχνης","cartoonist":"Σκιτσογράφος","fileTitle":"Όνομα αρχείου","colorPicker":"Επιλογή Χρώματος","canvasColors":"Χρησιμοποείται στον καμβά","canvasBackground":"Φόντο καμβά","drawingCanvas":"Σχεδίαση καμβά","layers":"Στρώματα","actions":"Ενέργειες","language":"Γλώσσα","liveCollaboration":"Live συνεργασία...","duplicateSelection":"Δημιουργία αντιγράφου","untitled":"Χωρίς τίτλο","name":"Όνομα","yourName":"Το όνομά σου","madeWithExcalidraw":"Φτιαγμένο με Excalidraw","group":"Δημιουργία ομάδας από επιλογή","ungroup":"Κατάργηση ομάδας από επιλογή","collaborators":"Συνεργάτες","showGrid":"Προβολή πλέγματος","addToLibrary":"Προσθήκη στη βιβλιοθήκη","removeFromLibrary":"Αφαίρεση από τη βιβλιοθήκη","libraryLoadingMessage":"Φόρτωση βιβλιοθήκης…","libraries":"Άλλες βιβλιοθήκες","loadingScene":"Φόρτωση σκηνής…","align":"Στοίχιση","alignTop":"Στοίχιση πάνω","alignBottom":"Στοίχιση κάτω","alignLeft":"Στοίχιση αριστερά","alignRight":"Στοίχιση δεξιά","centerVertically":"Κέντρο κάθετα","centerHorizontally":"Κέντρο οριζόντια","distributeHorizontally":"Οριζόντια κατανομή","distributeVertically":"Κατακόρυφη κατανομή","flipHorizontal":"Οριζόντια αναστροφή","flipVertical":"Κατακόρυφη αναστροφή","viewMode":"Λειτουργία προβολής","share":"Κοινοποίηση","showStroke":"Εμφάνιση επιλογέα χρωμάτων πινελιάς","showBackground":"Εμφάνιση επιλογέα χρώματος φόντου","toggleTheme":"Εναλλαγή θέματος","personalLib":"Προσωπική Βιβλιοθήκη","excalidrawLib":"Βιβλιοθήκη Excalidraw","decreaseFontSize":"Μείωση μεγέθους γραμματοσειράς","increaseFontSize":"Αύξηση μεγέθους γραμματοσειράς","unbindText":"Αποσύνδεση κειμένου","bindText":"Δέσμευση κειμένου στο δοχείο","createContainerFromText":"","link":{"edit":"Επεξεργασία συνδέσμου","editEmbed":"","create":"Δημιουργία συνδέσμου","createEmbed":"","label":"Σύνδεσμος","labelEmbed":"","empty":""},"lineEditor":{"edit":"Επεξεργασία γραμμής","exit":"Έξοδος επεξεργαστή κειμένου"},"elementLock":{"lock":"Κλείδωμα","unlock":"Ξεκλείδωμα","lockAll":"Κλείδωμα όλων","unlockAll":"Ξεκλείδωμα όλων"},"statusPublished":"Δημοσιευμένο","sidebarLock":"Κρατήστε την πλαϊνή μπάρα ανοιχτή","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Δεν έχουν προστεθεί αντικείμενα ακόμη...","hint_emptyLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.","hint_emptyPrivateLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ."},"buttons":{"clearReset":"Επαναφορά του καμβά","exportJSON":"Εξαγωγή σε αρχείο","exportImage":"Εξαγωγή εικόνας...","export":"Αποθήκευση ως...","copyToClipboard":"Αντιγραφή στο πρόχειρο","save":"Αποθήκευση στο τρέχον αρχείο","saveAs":"Αποθήκευση ως","load":"Άνοιγμα","getShareableLink":"Δημόσιος σύνδεσμος","close":"Κλείσιμο","selectLanguage":"Επιλογή γλώσσας","scrollBackToContent":"Μετακινηθείτε πίσω στο περιεχόμενο","zoomIn":"Μεγέθυνση","zoomOut":"Σμίκρυνση","resetZoom":"Επαναφορά μεγέθυνσης","menu":"Μενού","done":"Τέλος","edit":"Επεξεργασία","undo":"Αναίρεση","redo":"Επαναφορά","resetLibrary":"Καθαρισμός βιβλιοθήκης","createNewRoom":"Δημιουργία νέου χώρου","fullScreen":"Πλήρης οθόνη","darkMode":"Σκοτεινή λειτουργία","lightMode":"Φωτεινή λειτουργία","zenMode":"Λειτουργία Zεν","objectsSnapMode":"","exitZenMode":"Έξοδος από την λειτουργία Zen","cancel":"Ακύρωση","clear":"Καθαρισμός","remove":"Κατάργηση","embed":"","publishLibrary":"Δημοσίευση","submit":"Υποβολή","confirm":"Επιβεβαίωση","embeddableInteractionButton":""},"alerts":{"clearReset":"Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;","couldNotCreateShareableLink":"Δεν ήταν δυνατή η δημιουργία συνδέσμου κοινής χρήσης.","couldNotCreateShareableLinkTooBig":"Δεν ήταν δυνατή η δημιουργία κοινόχρηστου συνδέσμου: η σκηνή είναι πολύ μεγάλη","couldNotLoadInvalidFile":"Δεν μπόρεσε να ανοίξει εσφαλμένο αρχείο","importBackendFailed":"Η εισαγωγή από το backend απέτυχε.","cannotExportEmptyCanvas":"Δεν είναι δυνατή η εξαγωγή κενού καμβά.","couldNotCopyToClipboard":"Αδυναμία αντιγραφής στο πρόχειρο.","decryptFailed":"Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.","uploadedSecurly":"Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.","loadSceneOverridePrompt":"Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;","collabStopOverridePrompt":"Η διακοπή της συνεδρίας θα αντικαταστήσει το προηγούμενο, τοπικά αποθηκευμένο σχέδιο. Είστε σίγουροι?\\n\\n(Αν θέλετε να διατηρήσετε το τοπικό σας σχέδιο, απλά κλείστε την καρτέλα του προγράμματος περιήγησης.)","errorAddingToLibrary":"Αδυναμία προσθήκης αντικειμένου στη βιβλιοθήκη","errorRemovingFromLibrary":"Αδυναμία αφαίρεσης αντικειμένου από τη βιβλιοθήκη","confirmAddLibrary":"Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβλιοθήκη σας. Είστε σίγουροι;","imageDoesNotContainScene":"Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει την ενσωμάτωση σκηνής κατά την εξαγωγή;","cannotRestoreFromImage":"Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας","invalidSceneUrl":"Δεν ήταν δυνατή η εισαγωγή σκηνής από το URL που δώσατε. Είτε έχει λάθος μορφή, είτε δεν περιέχει έγκυρα δεδομένα JSON Excalidraw.","resetLibrary":"Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;","removeItemsFromsLibrary":"Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;","invalidEncryptionKey":"Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.","collabOfflineWarning":"Δεν υπάρχει διαθέσιμη σύνδεση στο internet.\\nΟι αλλαγές σας δεν θα αποθηκευτούν!"},"errors":{"unsupportedFileType":"Μη υποστηριζόμενος τύπος αρχείου.","imageInsertError":"Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...","fileTooBig":"Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.","svgImageInsertError":"Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.","failedToFetchImage":"","invalidSVGString":"Μη έγκυρο SVG.","cannotResolveCollabServer":"Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.","importLibraryError":"Αδυναμία φόρτωσης βιβλιοθήκης","collabSaveFailed":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.","collabSaveFailed_sizeExceeded":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Επιλογή","image":"Εισαγωγή εικόνας","rectangle":"Ορθογώνιο","diamond":"Ρόμβος","ellipse":"Έλλειψη","arrow":"Βέλος","line":"Γραμμή","freedraw":"Σχεδίαση","text":"Κείμενο","library":"Βιβλιοθήκη","lock":"Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο","penMode":"Λειτουργία μολυβιού - αποτροπή αφής","link":"Προσθήκη/ Ενημέρωση συνδέσμου για ένα επιλεγμένο σχήμα","eraser":"Γόμα","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Ενέργειες καμβά","selectedShapeActions":"Επιλεγμένες ενέργειες σχήματος","shapes":"Σχήματα"},"hints":{"canvasPanning":"","linearElement":"Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή","freeDraw":"Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει","text":"Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών","embeddable":"","text_selected":"Κάντε διπλό κλικ ή πατήστε ENTER για να επεξεργαστείτε το κείμενο","text_editing":"Πατήστε Escape ή CtrlOrCmd+ENTER για να ολοκληρώσετε την επεξεργασία","linearElementMulti":"Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις","lockAngle":"Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT","resize":"Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,\\nκράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο","resizeImage":"Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,\\nκρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο","rotate":"Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή","lineEditor_info":"Κρατήστε πατημένο Ctrl ή Cmd και πατήστε το πλήκτρο Ctrl ή Cmd + Enter για επεξεργασία σημείων","lineEditor_pointSelected":"Πατήστε Διαγραφή για αφαίρεση σημείου(ων),\\nCtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση","lineEditor_nothingSelected":"Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),\\nή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία","placeImage":"Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα","publishLibrary":"Δημοσιεύστε τη δική σας βιβλιοθήκη","bindTextToElement":"Πατήστε Enter για προσθήκη κειμένου","deepBoxSelect":"Κρατήστε πατημένο το CtrlOrCmd για να επιλέξετε βαθιά, και να αποτρέψετε τη μεταφορά","eraserRevert":"Κρατήστε πατημένο το Alt για να επαναφέρετε τα στοιχεία που σημειώθηκαν για διαγραφή","firefox_clipboard_write":"Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση \\"dom.events.asyncClipboard.clipboardItem\\" σε \\"true\\". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Αδυναμία εμφάνισης προεπισκόπησης","canvasTooBig":"Ο καμβάς μπορεί να είναι μεγάλος.","canvasTooBigTip":"Συμβουλή: προσπαθήστε να μετακινήσετε τα πιο απομακρυσμένα στοιχεία λίγο πιο κοντά μαζί."},"errorSplash":{"headingMain":"Συνέβη κάποιο σφάλμα. Προσπάθησε ","clearCanvasMessage":"Εάν το παραπάνω δεν δουλέψει, προσπάθησε ","clearCanvasCaveat":" Αυτό θα προκαλέσει απώλεια της δουλειάς σου ","trackedToSentry":"Το σφάλμα με αναγνωριστικό {{eventId}} παρακολουθήθηκε στο σύστημά μας.","openIssueMessage":"Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.","sceneContent":"Περιεχόμενο σκηνής:"},"roomDialog":{"desc_intro":"Μπορείς να προσκαλέσεις άλλους να δουλέψουν μαζί σου.","desc_privacy":"Μην ανησυχείς, η συνεδρία χρησιμοποιεί κρυπτογράφηση από σημείο σε σημείο, άρα οτιδήποτε κάνεις θα παραμείνει ανοιχτό μόνο σε εσένα. Ούτε οι μηχανές μας μπορούν να δουν τι κάνεις.","button_startSession":"Έναρξη Συνεδρίας","button_stopSession":"Τερματισμός Συνεδρίας","desc_inProgressIntro":"Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.","desc_shareLink":"Μοιραστείτε τον σύνδεσμο με όποιον θέλετε να δουλέψετε μαζί:","desc_exitSession":"Η διακοπή θα σας αποσυνδέσει από το δωμάτιο, αλλά θα μπορείτε να συνεχίσετε να δουλεύετε στον πίνακα, τοπικά. Σημειώσατε ότι αυτό δεν θα επηρεάσει τον πίνακα άλλων, και θα μπορούν ακόμα να συνεισφέρουν στην δική τους έκδοση.","shareTitle":"Συμμετάσχετε σε μια ζωντανή συνεδρία συνεργασίας για το Excalidraw"},"errorDialog":{"title":"Σφάλμα"},"exportDialog":{"disk_title":"Αποθήκευση στο δίσκο","disk_details":"Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα.","disk_button":"Αποθήκευση σε αρχείο","link_title":"Κοινόχρηστος σύνδεσμος","link_details":"Εξαγωγή ως σύνδεσμο μόνο για ανάγνωση.","link_button":"Εξαγωγή σε Σύνδεση","excalidrawplus_description":"Αποθηκεύστε τη σκηνή στο χώρο εργασίας σας Excalidraw+.","excalidrawplus_button":"Εξαγωγή","excalidrawplus_exportError":"Δεν ήταν δυνατή η εξαγωγή στο Excalidraw+ αυτή τη στιγμή..."},"helpDialog":{"blog":"Διαβάστε το Blog μας","click":"κλικ","deepSelect":"Βαθιά επιλογή","deepBoxSelect":"Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος","curvedArrow":"Κυρτό βέλος","curvedLine":"Κυρτή γραμμή","documentation":"Εγχειρίδιο","doubleClick":"διπλό κλικ","drag":"σύρε","editor":"Επεξεργαστής","editLineArrowPoints":"","editText":"","github":"Βρήκατε πρόβλημα; Υποβάλετε το","howto":"Ακολουθήστε τους οδηγούς μας","or":"ή","preventBinding":"Αποτροπή δέσμευσης βέλων","tools":"Εργαλεία","shortcuts":"Συντομεύσεις πληκτρολογίου","textFinish":"Ολοκλήρωση επεξεργασίας (επεξεργαστής κειμένου)","textNewLine":"Προσθήκη νέας γραμμής (επεξεργαστής κειμένου)","title":"Βοήθεια","view":"Προβολή","zoomToFit":"Zoom ώστε να χωρέσουν όλα τα στοιχεία","zoomToSelection":"Ζουμ στην επιλογή","toggleElementLock":"Κλείδωμα/Ξεκλείδωμα επιλογής","movePageUpDown":"Μετακίνηση σελίδας πάνω/κάτω","movePageLeftRight":"Μετακίνηση σελίδας αριστερά/δεξιά"},"clearCanvasDialog":{"title":"Καθαρισμός καμβά"},"publishDialog":{"title":"Δημοσίευση βιβλιοθήκης","itemName":"Όνομα αντικειμένου","authorName":"Όνομα δημιουργού","githubUsername":"GitHub username","twitterUsername":"Twitter username","libraryName":"Όνομα βιβλιοθήκης","libraryDesc":"Περιγραφή βιβλιοθήκης","website":"Ιστοσελίδα","placeholder":{"authorName":"Όνομα ή όνομα χρήστη","libraryName":"Όνομα της βιβλιοθήκης σας","libraryDesc":"Περιγραφή της βιβλιοθήκης σας ώστε να βοηθήσει το κοινό να κατανοήσει τη χρήση της","githubHandle":"Όνομα χρήστη στο GitHub (προαιρετικό), ώστε να μπορείτε να επεξεργαστείτε τη βιβλιοθήκη αφού υποβληθεί για αξιολόγηση","twitterHandle":"Όνομα χρήστη Twitter (προαιρετικό), ώστε να γνωρίζουμε σε ποιον/η να δώσουμε εύσημα κατά την προώθηση μέσω Twitter","website":"Σύνδεσμος για την προσωπική σας ιστοσελίδα ή αλλού (προαιρετικό)"},"errors":{"required":"Απαιτείται","website":"Εισάγετε μια έγκυρη διεύθυνση URL"},"noteDescription":"Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο δημόσιο αποθετήριο βιβλιοθήκηςώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους.","noteGuidelines":"Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους οδηγίες πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ\' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση.","noteLicense":"Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την Άδεια MIT, που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς.","noteItems":"Κάθε αντικείμενο της βιβλιοθήκης πρέπει να έχει το δικό του όνομα ώστε να μπορεί να φιλτραριστεί. Θα συμπεριληφθούν τα ακόλουθα αντικείμενα βιβλιοθήκης:","atleastOneLibItem":"Παρακαλώ επιλέξτε τουλάχιστον ένα αντικείμενο βιβλιοθήκης για να ξεκινήσετε","republishWarning":"Σημείωση: μερικά από τα επιλεγμένα αντικέιμενα έχουν ήδη επισημανθεί ως δημοσιευμένα/υποβεβλημένα. Θα πρέπει να υποβάλετε αντικείμενα εκ νέου μόνο για να ενημερώσετε μία ήδη υπάρχουσα βιβλιοθήκη ή υποβολή."},"publishSuccessDialog":{"title":"Η βιβλιοθήκη υποβλήθηκε","content":"Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασίαεδώ"},"confirmDialog":{"resetLibrary":"Καθαρισμός βιβλιοθήκης","removeItemsFromLib":"Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα είναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw.","link":"Blog post στην κρυπτογράφηση end-to-end στο Excalidraw"},"stats":{"angle":"Γωνία","element":"Στοιχείο","elements":"Στοιχεία","height":"Ύψος","scene":"Σκηνή","selected":"Επιλεγμένα","storage":"Χώρος","title":"Στατιστικά για σπασίκλες","total":"Σύνολο ","version":"Έκδοση","versionCopy":"Κάνε κλικ για αντιγραφή","versionNotAvailable":"Έκδοση μη διαθέσιμη","width":"Πλάτος"},"toast":{"addedToLibrary":"Προστέθηκε στη βιβλιοθήκη","copyStyles":"Αντιγράφηκαν στυλ.","copyToClipboard":"Αντιγράφηκε στο πρόχειρο.","copyToClipboardAsPng":"Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG\\n({{exportColorScheme}})","fileSaved":"Το αρχείο αποθηκεύτηκε.","fileSavedToFilename":"Αποθηκεύτηκε στο {filename}","canvas":"καμβάς","selection":"επιλογή","pasteAsSingleElement":"Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,\\nή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Διαφανές","black":"Μαύρο","white":"Λευκό","red":"Κόκκινο","pink":"Ροζ","grape":"Σταφυλί","violet":"Βιολετί","gray":"Γκρι","blue":"Μπλε","cyan":"Κυανό","teal":"Τιρκουάζ","green":"Πράσινο","yellow":"Κίτρινο","orange":"Πορτοκαλί","bronze":"Χαλκινο"},"welcomeScreen":{"app":{"center_heading":"Όλα τα δεδομένα σας αποθηκεύονται τοπικά στο πρόγραμμα περιήγησης.","center_heading_plus":"Μήπως θέλατε να πάτε στο Excalidraw+;","menuHint":"Εξαγωγή, προτιμήσεις, γλώσσες, ..."},"defaults":{"menuHint":"Εξαγωγή, προτιμήσεις και άλλες επιλογές...","center_heading":"Διαγράμματα. Εύκολα. Γρήγορα.","toolbarHint":"Επιλέξτε ένα εργαλείο και ξεκινήστε να σχεδιάζεται!","helpHint":"Συντομεύσεις και βοήθεια"}},"colorPicker":{"mostUsedCustomColors":"Πιο χρησιμοποιούμενα χρώματα","colors":"Χρώματα","shades":"Αποχρώσεις","hexCode":"Κωδικός Hex","noShades":"Δεν υπάρχουν διαθέσιμες αποχρώσεις για αυτό το χρώμα"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/es-ES-json-6a667bfbf4ff3d0181a7.js b/public/excalidraw/excalidraw-assets-dev/locales/es-ES-json-6a667bfbf4ff3d0181a7.js new file mode 100644 index 0000000..062aac9 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/es-ES-json-6a667bfbf4ff3d0181a7.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/es-ES-json"],{ + +/***/ "../../locales/es-ES.json": +/*!********************************!*\ + !*** ../../locales/es-ES.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar como texto sin formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Añadir elemento a la selección","moveCanvas":"Mover el lienzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar al portapapeles como PNG","copyAsSvg":"Copiar al portapapeles como SVG","copyText":"Copiar al portapapeles como texto","bringForward":"Traer hacia delante","sendToBack":"Enviar al fondo","bringToFront":"Traer al frente","sendBackward":"Enviar atrás","delete":"Borrar","copyStyles":"Copiar estilos","pasteStyles":"Pegar estilos","stroke":"Trazo","background":"Fondo","fill":"Rellenar","strokeWidth":"Grosor del trazo","strokeStyle":"Estilo del trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Discontinua","strokeStyle_dotted":"Punteado","sloppiness":"Estilo de trazo","opacity":"Opacidad","textAlign":"Alineado de texto","edges":"Bordes","sharp":"Afilado","round":"Redondo","arrowheads":"Puntas de flecha","arrowhead_none":"Ninguna","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño de la fuente","fontFamily":"Tipo de fuente","addWatermark":"Agregar \\"Hecho con Excalidraw\\"","handDrawn":"Dibujado a mano","normal":"Normal","code":"Código","small":"Pequeña","medium":"Mediana","large":"Grande","veryLarge":"Muy grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Rayado transversal","thin":"Fino","bold":"Grueso","left":"Izquierda","center":"Centrado","right":"Derecha","extraBold":"Extra negrita","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nombre del archivo","colorPicker":"Selector de color","canvasColors":"Usado en lienzo","canvasBackground":"Fondo del lienzo","drawingCanvas":"Lienzo de dibujo","layers":"Capas","actions":"Acciones","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sin título","name":"Nombre","yourName":"Tu nombre","madeWithExcalidraw":"Hecho con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Añadir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Alinear","alignTop":"Alineación superior","alignBottom":"Alineación inferior","alignLeft":"Alinear a la izquierda","alignRight":"Alinear a la derecha","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Girar horizontalmente","flipVertical":"Girar verticalmente","viewMode":"Modo presentación","share":"Compartir","showStroke":"Mostrar selector de color de trazo","showBackground":"Mostrar el selector de color de fondo","toggleTheme":"Cambiar tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Disminuir tamaño de letra","increaseFontSize":"Aumentar el tamaño de letra","unbindText":"Desvincular texto","bindText":"Vincular texto al contenedor","createContainerFromText":"Envolver el texto en un contenedor","link":{"edit":"Editar enlace","editEmbed":"Editar enlace e incrustar","create":"Crear enlace","createEmbed":"Crear enlace e incrustar","label":"Enlace","labelEmbed":"Enlazar e incrustar","empty":"No se ha establecido un enlace"},"lineEditor":{"edit":"Editar línea","exit":"Salir del editor en línea"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Mantener barra lateral abierta","selectAllElementsInFrame":"Seleccionar todos los elementos en el marco","removeAllElementsFromFrame":"Eliminar todos los elementos del marco","eyeDropper":"Seleccionar un color del lienzo"},"library":{"noItems":"No hay elementos añadidos todavía...","hint_emptyLibrary":"Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento del lienzo para añadirlo aquí."},"buttons":{"clearReset":"Limpiar lienzo y reiniciar el color de fondo","exportJSON":"Exportar a archivo","exportImage":"Exportar imagen...","export":"Guardar en...","copyToClipboard":"Copiar al portapapeles","save":"Guardar en archivo actual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obtener enlace para compartir","close":"Cerrar","selectLanguage":"Elegir idioma","scrollBackToContent":"Volver al contenido","zoomIn":"Acercarse","zoomOut":"Alejarse","resetZoom":"Restablecer zoom","menu":"Menú","done":"Hecho","edit":"Editar","undo":"Deshacer","redo":"Rehacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nueva sala","fullScreen":"Pantalla completa","darkMode":"Modo oscuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"Ajustar a los objetos","exitZenMode":"Salir del modo Zen","cancel":"Cancelar","clear":"Borrar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Pulsa para interactuar"},"alerts":{"clearReset":"Esto limpiará todo el lienzo. Estás seguro?","couldNotCreateShareableLink":"No se pudo crear un enlace para compartir.","couldNotCreateShareableLinkTooBig":"No se pudo crear el enlace para compartir: la escena es demasiado grande","couldNotLoadInvalidFile":"No se pudo cargar el archivo no válido","importBackendFailed":"La importación falló.","cannotExportEmptyCanvas":"No se puede exportar un lienzo vació","couldNotCopyToClipboard":"No se pudo copiar al portapapeles.","decryptFailed":"No se pudieron descifrar los datos.","uploadedSecurly":"La carga ha sido asegurada con cifrado de principio a fin, lo que significa que el servidor de Excalidraw y terceros no pueden leer el contenido.","loadSceneOverridePrompt":"Si carga este dibujo externo, reemplazará el que tiene. ¿Desea continuar?","collabStopOverridePrompt":"Detener la sesión sobrescribirá su dibujo anterior almacenado localmente. ¿Está seguro?\\n\\n(Si desea mantener su dibujo local, simplemente cierre la pestaña del navegador.)","errorAddingToLibrary":"No se pudo agregar el elemento a la biblioteca","errorRemovingFromLibrary":"No se pudo quitar el elemento de la biblioteca","confirmAddLibrary":"Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?","imageDoesNotContainScene":"Esta imagen no parece contener datos de escena. ¿Ha habilitado la inserción de la escena durante la exportación?","cannotRestoreFromImage":"No se pudo restaurar la escena desde este archivo de imagen","invalidSceneUrl":"No se ha podido importar la escena desde la URL proporcionada. Está mal formada, o no contiene datos de Excalidraw JSON válidos.","resetLibrary":"Esto borrará tu biblioteca. ¿Estás seguro?","removeItemsFromsLibrary":"¿Eliminar {{count}} elemento(s) de la biblioteca?","invalidEncryptionKey":"La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.","collabOfflineWarning":"No hay conexión a internet disponible.\\n¡No se guardarán los cambios!"},"errors":{"unsupportedFileType":"Tipo de archivo no admitido.","imageInsertError":"No se pudo insertar la imagen. Inténtelo de nuevo más tarde...","fileTooBig":"Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.","svgImageInsertError":"No se pudo insertar la imagen SVG. El código SVG parece inválido.","failedToFetchImage":"","invalidSVGString":"SVG no válido.","cannotResolveCollabServer":"No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.","importLibraryError":"No se pudo cargar la librería","collabSaveFailed":"No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.","collabSaveFailed_sizeExceeded":"No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.","brave_measure_text_error":{"line1":"Parece que estás usando el navegador Brave con el ajuste Forzar el bloqueo de huellas digitales habilitado.","line2":"Esto podría resultar en errores en los Elementos de Texto en tus dibujos.","line3":"Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir estos pasos sobre cómo hacerlo.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Insertar imagen","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Flecha","line":"Línea","freedraw":"Dibujar","text":"Texto","library":"Biblioteca","lock":"Mantener la herramienta seleccionada activa después de dibujar","penMode":"Modo Lápiz - previene toque","link":"Añadir/Actualizar enlace para una forma seleccionada","eraser":"Borrar","frame":"","embeddable":"Incrustar Web","laser":"Puntero láser","hand":"Mano (herramienta de panoramización)","extraTools":"Más herramientas"},"headings":{"canvasActions":"Acciones del lienzo","selectedShapeActions":"Acciones de la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover el lienzo, mantenga la rueda del ratón o la barra espaciadora mientras arrastra o utilice la herramienta de mano","linearElement":"Haz clic para dibujar múltiples puntos, arrastrar para solo una línea","freeDraw":"Haz clic y arrastra, suelta al terminar","text":"Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección","embeddable":"Haga clic y arrastre para crear un sitio web incrustado","text_selected":"Doble clic o pulse ENTER para editar el texto","text_editing":"Pulse Escape o Ctrl/Cmd + ENTER para terminar de editar","linearElementMulti":"Haz clic en el último punto o presiona Escape o Enter para finalizar","lockAngle":"Puedes restringir el ángulo manteniendo presionado el botón SHIFT","resize":"Para mantener las proporciones mantén SHIFT presionado mientras modificas el tamaño, \\nmantén presionado ALT para modificar el tamaño desde el centro","resizeImage":"Puede redimensionar libremente pulsando SHIFT,\\npulse ALT para redimensionar desde el centro","rotate":"Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras","lineEditor_info":"Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo","lineEditor_nothingSelected":"Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),\\no mantenga pulsado Alt y haga click para añadir nuevos puntos","placeImage":"Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente","publishLibrary":"Publica tu propia biblioteca","bindTextToElement":"Presione Entrar para agregar","deepBoxSelect":"Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar","eraserRevert":"Mantenga pulsado Alt para revertir los elementos marcados para su eliminación","firefox_clipboard_write":"Esta característica puede ser habilitada estableciendo la bandera \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar las banderas del navegador en Firefox, visite la página \\"about:config\\".","disableSnapping":"Mantén pulsado CtrlOrCmd para desactivar el ajuste"},"canvasError":{"cannotShowPreview":"No se puede mostrar la vista previa","canvasTooBig":"El lienzo podría ser demasiado grande.","canvasTooBigTip":"Sugerencia: intenta acercar un poco más los elementos más lejanos."},"errorSplash":{"headingMain":"Se encontró un error. Intente ","clearCanvasMessage":"Si la recarga no funciona, intente ","clearCanvasCaveat":" Esto provocará la pérdida de su trabajo ","trackedToSentry":"El error con el identificador {{eventId}} fue rastreado en nuestro sistema.","openIssueMessage":"Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.","sceneContent":"Contenido de la escena:"},"roomDialog":{"desc_intro":"Puede invitar a otras personas a tu actual escena para que colaboren contigo.","desc_privacy":"No te preocupes, la sesión usa encriptación de punta a punta, por lo que todo lo que se dibuje se mantendrá privadamente. Ni siquiera nuestro servidor podrá ver lo que haces.","button_startSession":"Iniciar sesión","button_stopSession":"Detener sesión","desc_inProgressIntro":"La sesión de colaboración en vivo está ahora en progreso.","desc_shareLink":"Comparte este enlace con cualquier persona con quien quieras colaborar:","desc_exitSession":"Detener la sesión te desconectará de la sala, pero podrás seguir trabajando con la escena en su computadora, esto es de modo local. Ten en cuenta que esto no afectará a otras personas, y que las mismas seguirán siendo capaces de colaborar en tu escena.","shareTitle":"Únase a una sesión colaborativa en vivo en Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Guardar en disco","disk_details":"Exportar los datos de la escena a un archivo desde el cual pueda importar más tarde.","disk_button":"Guardar en archivo","link_title":"Enlace para compartir","link_details":"Exportar como enlace de sólo lectura.","link_button":"Exportar a Link","excalidrawplus_description":"Guarde la escena en su espacio de trabajo de Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"No se pudo exportar a Excalidraw+ en este momento..."},"helpDialog":{"blog":"Lea nuestro blog","click":"click","deepSelect":"Selección profunda","deepBoxSelect":"Seleccione en profundidad dentro de la caja, y evite arrastrar","curvedArrow":"Flecha curva","curvedLine":"Línea curva","documentation":"Documentación","doubleClick":"doble clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"Editar puntos de línea/flecha","editText":"Editar texto / añadir etiqueta","github":"¿Ha encontrado un problema? Envíelo","howto":"Siga nuestras guías","or":"o","preventBinding":"Evitar enlace de flechas","tools":"Herramientas","shortcuts":"Atajos del teclado","textFinish":"Finalizar edición (editor de texto)","textNewLine":"Añadir nueva linea (editor de texto)","title":"Ayuda","view":"Vista","zoomToFit":"Ajustar la vista para mostrar todos los elementos","zoomToSelection":"Ampliar selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover página hacia arriba/abajo","movePageLeftRight":"Mover página hacia la izquierda/derecha"},"clearCanvasDialog":{"title":"Borrar lienzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nombre del artículo","authorName":"Nombre del autor","githubUsername":"Nombre de usuario de GitHub","twitterUsername":"Nombre de usuario de Twitter","libraryName":"Nombre de la biblioteca","libraryDesc":"Descripción de la biblioteca","website":"Sitio Web","placeholder":{"authorName":"Nombre o nombre de usuario","libraryName":"Nombre de tu biblioteca","libraryDesc":"Descripción de su biblioteca para ayudar a la gente a entender su uso","githubHandle":"Nombre de usuario de GitHub (opcional), así podrá editar la biblioteca una vez enviada para su revisión","twitterHandle":"Nombre de usuario de Twitter (opcional), así sabemos a quién acreditar cuando se promociona en Twitter","website":"Enlace a su sitio web personal o en cualquier otro lugar (opcional)"},"errors":{"required":"Requerido","website":"Introduce una URL válida"},"noteDescription":"Envía tu biblioteca para ser incluida en el repositorio de librería públicapara que otras personas utilicen en sus dibujos.","noteGuidelines":"La biblioteca debe ser aprobada manualmente primero. Por favor, lea la pautas antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario.","noteLicense":"Al enviar, usted acepta que la biblioteca se publicará bajo el Licencia MIT que en breve significa que cualquiera puede utilizarlos sin restricciones.","noteItems":"Cada elemento de la biblioteca debe tener su propio nombre para que sea filtrable. Los siguientes elementos de la biblioteca serán incluidos:","atleastOneLibItem":"Por favor, seleccione al menos un elemento de la biblioteca para empezar","republishWarning":"Nota: algunos de los elementos seleccionados están marcados como ya publicados/enviados. Sólo debería volver a enviar elementos cuando se actualice una biblioteca o envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estadoaquí"},"confirmDialog":{"resetLibrary":"Reiniciar biblioteca","removeItemsFromLib":"Eliminar elementos seleccionados de la biblioteca"},"imageExportDialog":{"header":"Exportar imagen","label":{"withBackground":"Fondo","onlySelected":"Sólo seleccionados","darkMode":"Modo oscuro","embedScene":"Incrustar escena","scale":"Escalar","padding":"Espaciado"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG al portapapeles"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar al portapapeles"}},"encrypted":{"tooltip":"Tus dibujos están cifrados de punto a punto, por lo que los servidores de Excalidraw nunca los verán.","link":"Entrada en el blog sobre cifrado de extremo a extremo"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamiento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Click para copiar","versionNotAvailable":"Versión no disponible","width":"Ancho"},"toast":{"addedToLibrary":"Añadido a la biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado en el portapapeles.","copyToClipboardAsPng":"Copiado {{exportSelection}} al portapapeles como PNG\\n({{exportColorScheme}})","fileSaved":"Archivo guardado.","fileSavedToFilename":"Guardado en {filename}","canvas":"lienzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un solo elemento,\\no pegar en un editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Blanco","red":"Rojo","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"Cian","teal":"Turquesa","green":"Verde","yellow":"Amarillo","orange":"Naranja","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda su información es guardada localmente en su navegador.","center_heading_plus":"¿Quieres ir a Excalidraw+?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias y más...","center_heading":"Diagramas. Hecho. Simplemente.","toolbarHint":"¡Elige una herramienta y empieza a dibujar!","helpHint":"Atajos y ayuda"}},"colorPicker":{"mostUsedCustomColors":"Colores personalizados más utilizados","colors":"Colores","shades":"","hexCode":"Código Hexadecimal","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagen","button":"Exportar como imagen","description":""},"saveToDisk":{"title":"Guardar en el disco","button":"Guardar en el disco","description":"Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde."},"excalidrawPlus":{"title":"","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar desde un archivo","button":"Cargar desde un archivo","description":""},"shareableLink":{"title":"Cargar desde un enlace","button":"Reemplazar mi contenido","description":"Cargar un dibujo externo reemplazará tu contenido existente.

Puedes primero hacer una copia de seguridad de tu dibujo usando una de las opciones de abajo."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/eu-ES-json-3ec11367a80491b09056.js b/public/excalidraw/excalidraw-assets-dev/locales/eu-ES-json-3ec11367a80491b09056.js new file mode 100644 index 0000000..66635e9 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/eu-ES-json-3ec11367a80491b09056.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/eu-ES-json"],{ + +/***/ "../../locales/eu-ES.json": +/*!********************************!*\ + !*** ../../locales/eu-ES.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Itsatsi","pasteAsPlaintext":"Itsatsi testu arrunt gisa","pasteCharts":"Itsatsi grafikoak","selectAll":"Hautatu dena","multiSelect":"Gehitu elementua hautapenera","moveCanvas":"Mugitu oihala","cut":"Ebaki","copy":"Kopiatu","copyAsPng":"Kopiatu arbelera PNG gisa","copyAsSvg":"Kopiatu arbelera SVG gisa","copyText":"Kopiatu arbelera testu gisa","bringForward":"Ekarri aurrerago","sendToBack":"Eraman atzera","bringToFront":"Ekarri aurrera","sendBackward":"Eraman atzerago","delete":"Ezabatu","copyStyles":"Kopiatu estiloak","pasteStyles":"Itsatsi estiloak","stroke":"Marra","background":"Atzeko planoa","fill":"Bete","strokeWidth":"Marraren zabalera","strokeStyle":"Marraren estiloa","strokeStyle_solid":"Solidoa","strokeStyle_dashed":"Marratua","strokeStyle_dotted":"Puntukatua","sloppiness":"Marraren trazoa","opacity":"Opakotasuna","textAlign":"Testuaren lerrokapena","edges":"Ertzak","sharp":"Ertz bizia","round":"Borobildua","arrowheads":"Gezi-puntak","arrowhead_none":"Bat ere ez","arrowhead_arrow":"Gezia","arrowhead_bar":"Barra","arrowhead_dot":"Puntua","arrowhead_triangle":"Hirukia","fontSize":"Letra-tamaina","fontFamily":"Letra-tipoa","addWatermark":"Gehitu \\"Excalidraw bidez egina\\"","handDrawn":"Eskuz marraztua","normal":"Normala","code":"Kodea","small":"Txikia","medium":"Ertaina","large":"Handia","veryLarge":"Oso handia","solid":"Solidoa","hachure":"Itzalduna","zigzag":"Sigi-saga","crossHatch":"Marraduna","thin":"Mehea","bold":"Lodia","left":"Ezkerrean","center":"Erdian","right":"Eskuinean","extraBold":"Oso lodia","architect":"Arkitektoa","artist":"Artista","cartoonist":"Marrazkilaria","fileTitle":"Fitxategi izena","colorPicker":"Kolore-hautatzailea","canvasColors":"Oihalean erabilita","canvasBackground":"Oihalaren atzeko planoa","drawingCanvas":"Marrazteko oihala","layers":"Geruzak","actions":"Ekintzak","language":"Hizkuntza","liveCollaboration":"Zuzeneko elkarlana...","duplicateSelection":"Bikoiztu","untitled":"Izengabea","name":"Izena","yourName":"Zure izena","madeWithExcalidraw":"Excalidraw bidez egina","group":"Hautapena taldea bihurtu","ungroup":"Desegin hautapenaren taldea","collaborators":"Kolaboratzaileak","showGrid":"Erakutsi sareta","addToLibrary":"Gehitu liburutegira","removeFromLibrary":"Kendu liburutegitik","libraryLoadingMessage":"Liburutegia kargatzen…","libraries":"Arakatu liburutegiak","loadingScene":"Eszena kargatzen…","align":"Lerrokatu","alignTop":"Lerrokatu goian","alignBottom":"Lerrokatu behean","alignLeft":"Lerrokatu ezkerrean","alignRight":"Lerrokatu eskuinean","centerVertically":"Erdiratu bertikalki","centerHorizontally":"Erdiratu horizontalki","distributeHorizontally":"Banandu horizontalki","distributeVertically":"Banandu bertikalki","flipHorizontal":"Irauli horizontalki","flipVertical":"Irauli bertikalki","viewMode":"Ikuspegia","share":"Partekatu","showStroke":"Erakutsi marraren kolore-hautatzailea","showBackground":"Erakutsi atzeko planoaren kolore-hautatzailea","toggleTheme":"Aldatu gaia","personalLib":"Liburutegi pertsonala","excalidrawLib":"Excalidraw liburutegia","decreaseFontSize":"Txikitu letra tamaina","increaseFontSize":"Handitu letra tamaina","unbindText":"Askatu testua","bindText":"Lotu testua edukiontziari","createContainerFromText":"Bilatu testua edukiontzi batean","link":{"edit":"Editatu esteka","editEmbed":"Editatu esteka eta kapsulatu","create":"Sortu esteka","createEmbed":"Sortu esteka eta kapsulatu","label":"Esteka","labelEmbed":"Esteka eta kapsula","empty":"Ez da estekarik ezarri"},"lineEditor":{"edit":"Editatu lerroa","exit":"Irten lerro-editoretik"},"elementLock":{"lock":"Blokeatu","unlock":"Desblokeatu","lockAll":"Blokeatu guztiak","unlockAll":"Desblokeatu guztiak"},"statusPublished":"Argitaratua","sidebarLock":"Mantendu alboko barra irekita","selectAllElementsInFrame":"Hautatu markoko elementu guztiak","removeAllElementsFromFrame":"Kendu markoko elementu guztiak","eyeDropper":"Aukeratu kolorea oihaletik"},"library":{"noItems":"Oraindik ez da elementurik gehitu...","hint_emptyLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.","hint_emptyPrivateLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko."},"buttons":{"clearReset":"Garbitu oihala","exportJSON":"Esportatu fitxategira","exportImage":"Esportatu irudia...","export":"Gorde hemen...","copyToClipboard":"Kopiatu arbelera","save":"Gorde uneko fitxategian","saveAs":"Gorde honela","load":"Ireki","getShareableLink":"Lortu partekatzeko esteka","close":"Itxi","selectLanguage":"Hautatu hizkuntza","scrollBackToContent":"Joan atzera edukira","zoomIn":"Handiagotu","zoomOut":"Txikiagotu","resetZoom":"Leheneratu zooma","menu":"Menua","done":"Egina","edit":"Editatu","undo":"Desegin","redo":"Berregin","resetLibrary":"Leheneratu liburutegia","createNewRoom":"Sortu gela berria","fullScreen":"Pantaila osoa","darkMode":"Modu iluna","lightMode":"Modu argia","zenMode":"Zen modua","objectsSnapMode":"Atxiki objektuei","exitZenMode":"Irten Zen modutik","cancel":"Utzi","clear":"Garbitu","remove":"Kendu","embed":"Aldatu kapsulatzea","publishLibrary":"Argitaratu","submit":"Bidali","confirm":"Bai","embeddableInteractionButton":"Egin klik elkar eragiteko"},"alerts":{"clearReset":"Honek oihal osoa garbituko du. Ziur zaude?","couldNotCreateShareableLink":"Ezin izan da partekatzeko estekarik sortu.","couldNotCreateShareableLinkTooBig":"Ezin izan da partekatzeko estekarik sortu: eszena handiegia da","couldNotLoadInvalidFile":"Ezin izan da kargatu, fitxategiak ez du balio","importBackendFailed":"Inportazioak huts egin du.","cannotExportEmptyCanvas":"Ezin izan da oihal hutsa esportatu.","couldNotCopyToClipboard":"Ezin izan da arbelean kopiatu.","decryptFailed":"Ezin izan da deszifratu.","uploadedSecurly":"Kargatzea muturretik muturrerako zifratze bidez ziurtatu da, hau da, Excalidraw zerbitzariak eta hirugarrenek ezin dutela edukia irakurri.","loadSceneOverridePrompt":"Kanpoko marrazkia kargatzeak lehendik duzun edukia ordezkatuko du. Jarraitu nahi duzu?","collabStopOverridePrompt":"Saioa gelditzeak lokalean gordetako zure aurreko marrazkia gainidatziko du. Ziur zaude?\\n\\n(Zure marrazki lokala mantendu nahi baduzu, itxi arakatzailearen fitxa.)","errorAddingToLibrary":"Ezin izan da elementua liburutegian gehitu","errorRemovingFromLibrary":"Ezin izan da elementua liburutegitik kendu","confirmAddLibrary":"Honek {{numShapes}} forma gehituko ditu zure liburutegian. Ziur zaude?","imageDoesNotContainScene":"Irudi honek ez dirudi eszena daturik duenik. Eszena kapsulatzea gaitu al duzu esportazioan?","cannotRestoreFromImage":"Ezin izan da eszena leheneratu irudi fitxategi honetatik","invalidSceneUrl":"Ezin izan da eszena inportatu emandako URLtik. Gaizki eratuta dago edo ez du baliozko Excalidraw JSON daturik.","resetLibrary":"Honek zure liburutegia garbituko du. Ziur zaude?","removeItemsFromsLibrary":"Liburutegitik {{count}} elementu ezabatu?","invalidEncryptionKey":"Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.","collabOfflineWarning":"Ez dago Interneteko konexiorik.\\nZure aldaketak ez dira gordeko!"},"errors":{"unsupportedFileType":"Onartu gabeko fitxategi mota.","imageInsertError":"Ezin izan da irudia txertatu. Saiatu berriro geroago...","fileTooBig":"Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.","svgImageInsertError":"Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.","failedToFetchImage":"","invalidSVGString":"SVG baliogabea.","cannotResolveCollabServer":"Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.","importLibraryError":"Ezin izan da liburutegia kargatu","collabSaveFailed":"Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.","collabSaveFailed_sizeExceeded":"Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.","brave_measure_text_error":{"line1":"Brave arakatzailea erabiltzen ari zarela dirudi Blokeatu hatz-markak erasokorki ezarpena gaituta.","line2":"Honek zure marrazkietako Testu-elementuak hautsi ditzake.","line3":"Ezarpen hau desgaitzea gomendatzen dugu. urrats hauek jarrai ditzakezu hori nola egin jakiteko.","line4":"Ezarpen hau desgaituz gero, testu-elementuen bistaratzea konpontzen ez bada, ireki arazo gure GitHub-en edo idatzi iezaguzu Discord helbidera"},"libraryElementTypeError":{"embeddable":"Kapsulatutako elementuak ezin dira liburutegira gehitu.","image":"Laster egongo da irudiak liburutegian gehitzeko laguntza!"}},"toolBar":{"selection":"Hautapena","image":"Txertatu irudia","rectangle":"Laukizuzena","diamond":"Diamantea","ellipse":"Elipsea","arrow":"Gezia","line":"Lerroa","freedraw":"Marraztu","text":"Testua","library":"Liburutegia","lock":"Mantendu aktibo hautatutako tresna marraztu ondoren","penMode":"Luma modua - ukipena saihestu","link":"Gehitu / Eguneratu esteka hautatutako forma baterako","eraser":"Borragoma","frame":"Marko tresna","embeddable":"Web kapsulatzea","laser":"Laser punteroa","hand":"Eskua (panoratze tresna)","extraTools":"Tresna gehiago"},"headings":{"canvasActions":"Canvas ekintzak","selectedShapeActions":"Hautatutako formaren ekintzak","shapes":"Formak"},"hints":{"canvasPanning":"Oihala mugitzeko, eutsi saguaren gurpila edo zuriune-barra arrastatzean, edo erabili esku tresna","linearElement":"Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako","freeDraw":"Egin klik eta arrastatu, askatu amaitutakoan","text":"Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin","embeddable":"Egin klik eta arrastatu webgunea kapsulatzeko","text_selected":"Egin klik bikoitza edo sakatu SARTU testua editatzeko","text_editing":"Sakatu Esc edo Ctrl+SARTU editatzen amaitzeko","linearElementMulti":"Egin klik azken puntuan edo sakatu Esc edo Sartu amaitzeko","lockAngle":"SHIFT sakatuta angelua mantendu dezakezu","resize":"Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.\\nsakatu ALT erditik tamaina aldatzeko","resizeImage":"Tamaina libreki alda dezakezu SHIFT sakatuta,\\nsakatu ALT erditik tamaina aldatzeko","rotate":"Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean","lineEditor_info":"Eutsi sakatuta Ctrl edo Cmd eta egin klik bikoitza edo sakatu Ctrl edo Cmd + Sartu puntuak editatzeko","lineEditor_pointSelected":"Sakatu Ezabatu puntuak kentzeko,\\nKtrl+D bikoizteko, edo arrastatu mugitzeko","lineEditor_nothingSelected":"Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),\\nedo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko","placeImage":"Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko","publishLibrary":"Argitaratu zure liburutegia","bindTextToElement":"Sakatu Sartu testua gehitzeko","deepBoxSelect":"Eutsi Ctrl edo Cmd sakatuta aukeraketa sakona egiteko eta arrastatzea saihesteko","eraserRevert":"Eduki Alt sakatuta ezabatzeko markatutako elementuak leheneratzeko","firefox_clipboard_write":"Ezaugarri hau \\"dom.events.asyncClipboard.clipboardItem\\" marka \\"true\\" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu \\"about:config\\" orrialdera.","disableSnapping":"Eduki sakatuta Ctrl edo Cmd tekla atxikipena desgaitzeko"},"canvasError":{"cannotShowPreview":"Ezin da oihala aurreikusi","canvasTooBig":"Agian oihala handiegia da.","canvasTooBigTip":"Aholkua: saiatu urrunen dauden elementuak pixka bat hurbiltzen."},"errorSplash":{"headingMain":"Errore bat aurkitu da. Saiatu ","clearCanvasMessage":"Birkargatzea ez bada burutzen, saiatu ","clearCanvasCaveat":" Honen ondorioz lana galduko da ","trackedToSentry":"Identifikatzailearen errorea {{eventId}} gure sistemak behatu du.","openIssueMessage":"Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.","sceneContent":"Eszenaren edukia:"},"roomDialog":{"desc_intro":"Jendea zure uneko eszenara gonbida dezakezu zurekin elkarlanean aritzeko.","desc_privacy":"Ez kezkatu, saioak muturretik muturrerako enkriptatzea erabiltzen du, beraz, marrazten duzuna pribatua izango da. Gure zerbitzariak ere ezingo du ikusi zer egiten duzun.","button_startSession":"Hasi saioa","button_stopSession":"Itxi saioa","desc_inProgressIntro":"Zuzeneko lankidetza saioa abian da.","desc_shareLink":"Partekatu esteka hau elkarlanean aritu nahi duzun edonorekin:","desc_exitSession":"Saioa ixteak aretotik deskonektatuko zaitu, baina eszenarekin lanean jarraitu ahal izango duzu lokalean. Kontuan izan honek ez diela beste pertsonei eragingo, eta euren bertsioan elkarlanean aritu ahal izango dira.","shareTitle":"Sartu Excalidraw-en zuzeneko lankidetza-saio batean"},"errorDialog":{"title":"Errorea"},"exportDialog":{"disk_title":"Gorde diskoan","disk_details":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan.","disk_button":"Gorde fitxategian","link_title":"Partekatzeko esteka","link_details":"Esportatu irakurtzeko soilik moduko esteka.","link_button":"Esportatu esteka","excalidrawplus_description":"Gorde eszena zure Excalidraw+ laneko areara.","excalidrawplus_button":"Esportatu","excalidrawplus_exportError":"Une honetan ezin izan da esportatu Excalidraw+era..."},"helpDialog":{"blog":"Irakurri gure bloga","click":"sakatu","deepSelect":"Hautapen sakona","deepBoxSelect":"Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea","curvedArrow":"Gezi kurbatua","curvedLine":"Lerro kurbatua","documentation":"Dokumentazioa","doubleClick":"klik bikoitza","drag":"arrastatu","editor":"Editorea","editLineArrowPoints":"Editatu lerroak/gezi-puntuak","editText":"Editatu testua / gehitu etiketa","github":"Arazorik izan al duzu? Eman horren berri","howto":"Jarraitu gure gidak","or":"edo","preventBinding":"Saihestu gezien gainjartzea","tools":"Tresnak","shortcuts":"Laster-teklak","textFinish":"Bukatu edizioa (testu editorea)","textNewLine":"Gehitu lerro berri bat (testu editorea)","title":"Laguntza","view":"Bistaratu","zoomToFit":"Egin zoom elementu guztiak ikusteko","zoomToSelection":"Zooma hautapenera","toggleElementLock":"Blokeatu/desbloketatu hautapena","movePageUpDown":"Mugitu orria gora/behera","movePageLeftRight":"Mugitu orria ezker/eskuin"},"clearCanvasDialog":{"title":"Garbitu oihala"},"publishDialog":{"title":"Argitaratu liburutegia","itemName":"Elementuaren izena","authorName":"Egilearen izena","githubUsername":"GitHub-eko erabiltzaile-izena","twitterUsername":"Twitter-eko erabiltzaile-izena","libraryName":"Liburutegiaren izena","libraryDesc":"Liburutegiaren deskripzioa","website":"Webgunea","placeholder":{"authorName":"Zure izena edo erabiltzaile-izena","libraryName":"Zure liburutegiaren izena","libraryDesc":"Zure liburutegiaren deskripzioa laguntzeko jendeari ulertzen haren erabilpena","githubHandle":"GitHub heldulekua (aukerakoa), liburutegia editatu ahal izateko berrikustera bidalitakoan","twitterHandle":"Twitter-eko erabiltzaile-izena (aukerakoa), badakigu nori kreditatu behar dugun Twitter bidez sustatzeko","website":"Estekatu zure webgunera edo nahi duzun tokira (aukerakoa)"},"errors":{"required":"Beharrezkoa","website":"Sartu baliozko URL bat"},"noteDescription":"Bidali zure liburutegira sartu ahal izateko zure liburutegiko biltegianbeste jendeak bere marrazkietan erabili ahal izateko.","noteGuidelines":"Liburutegia eskuz onartu behar da. Irakurri gidalerroak bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa.","noteLicense":"Bidaltzen baduzu, onartzen duzu liburutegia MIT lizentziarekin argitaratuko dela, zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe.","noteItems":"Liburutegiko elementu bakoitzak bere izena eduki behar du iragazi ahal izateko. Liburutegiko hurrengo elementuak barne daude:","atleastOneLibItem":"Hautatu gutxienez liburutegiko elementu bat gutxienez hasi ahal izateko","republishWarning":"Oharra: hautatutako elementu batzuk dagoeneko argitaratuta/bidalita bezala markatuta daude. Elementuak berriro bidali behar dituzu lehendik dagoen liburutegi edo bidalketa eguneratzen duzunean."},"publishSuccessDialog":{"title":"Liburutegia bidali da","content":"Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoerahemen"},"confirmDialog":{"resetLibrary":"Leheneratu liburutegia","removeItemsFromLib":"Kendu hautatutako elementuak liburutegitik"},"imageExportDialog":{"header":"Esportatu irudia","label":{"withBackground":"Atzeko planoa","onlySelected":"Hautapena soilik","darkMode":"Modu iluna","embedScene":"Txertatu eszena","scale":"Eskala","padding":"Betegarria"},"tooltip":{"embedScene":"Eszenaren datuak esportatutako PNG/SVG fitxategian gordeko dira, eszena bertatik berrezartzeko.\\nEsportatutako fitxategien tamaina handituko da."},"title":{"exportToPng":"Esportatu PNG gisa","exportToSvg":"Esportatu SVG gisa","copyPngToClipboard":"Kopiatu PNG arbelera"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiatu arbelean"}},"encrypted":{"tooltip":"Zure marrazkiak muturretik muturrera enkriptatu dira, beraz Excalidraw-ren zerbitzariek ezingo dituzte ikusi.","link":"Excalidraw-ren muturretik muturrerako enkriptatzearen gaineko mezua blogean"},"stats":{"angle":"Angelua","element":"Elementua","elements":"Elementuak","height":"Altuera","scene":"Eszena","selected":"Hautatua","storage":"Biltegia","title":"Datuak","total":"Guztira","version":"Bertsioa","versionCopy":"Klikatu kopiatzeko","versionNotAvailable":"Bertsio ez eskuragarria","width":"Zabalera"},"toast":{"addedToLibrary":"Liburutegira gehitu da","copyStyles":"Estiloak kopiatu dira.","copyToClipboard":"Arbelean kopiatu da.","copyToClipboardAsPng":"{{exportSelection}} kopiatu da arbelean PNG gisa\\n({{exportColorScheme}})","fileSaved":"Fitxategia gorde da.","fileSavedToFilename":"{filename}-n gorde da","canvas":"oihala","selection":"hautapena","pasteAsSingleElement":"Erabili {{shortcut}} elementu bakar gisa itsasteko,\\nedo itsatsi lehendik dagoen testu-editore batean","unableToEmbed":"Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko","unrecognizedLinkFormat":"Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako \'kapsulatu\' katea itsasten"},"colors":{"transparent":"Gardena","black":"Beltza","white":"Zuria","red":"Gorria","pink":"Arrosa","grape":"Mahats kolorea","violet":"Bioleta","gray":"Grisa","blue":"Urdina","cyan":"Ziana","teal":"Berde urdinxka","green":"Berdea","yellow":"Horia","orange":"Laranja","bronze":"Brontzea"},"welcomeScreen":{"app":{"center_heading":"Zure datu guztiak lokalean gordetzen dira zure nabigatzailean.","center_heading_plus":"Horren ordez Excalidraw+-era joan nahi al zenuen?","menuHint":"Esportatu, hobespenak, hizkuntzak..."},"defaults":{"menuHint":"Esportatu, hobespenak eta gehiago...","center_heading":"Diagramak. Egina. Sinplea.","toolbarHint":"Aukeratu tresna bat eta hasi marrazten!","helpHint":"Lasterbideak eta laguntza"}},"colorPicker":{"mostUsedCustomColors":"Gehien erabilitako kolore pertsonalizatuak","colors":"Koloreak","shades":"Ñabardurak","hexCode":"Hez kodea","noShades":"Kolore honetarako ez dago ñabardurarik eskuragarri"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esportatu irudi gisa","button":"Esportatu irudi gisa","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun irudi gisa."},"saveToDisk":{"title":"Gorde diskoan","button":"Gorde diskoan","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esportatu Excalidraw+ra","description":"Gorde eszena zure Excalidraw+ laneko areara."}},"modal":{"loadFromFile":{"title":"Fitxategitik kargatu","button":"Fitxategitik kargatu","description":"Fitxategi batetik kargatzeak lehendik duzun edukia ordezkatuko du.

Lehenengo marrazkiaren babeskopia egin dezakezu beheko aukeretako bat erabiliz."},"shareableLink":{"title":"Estekatik kargatu","button":"Ordeztu nire edukia","description":"Kanpoko irudi bat kargatzeak lehendik duzun edukia ordezkatuko du.

. Zure marrazkiaren babeskopia egin dezakezu lehenik beheko aukeretako bat erabiliz."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/fa-IR-json-e459964936177074abe7.js b/public/excalidraw/excalidraw-assets-dev/locales/fa-IR-json-e459964936177074abe7.js new file mode 100644 index 0000000..c4ac168 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/fa-IR-json-e459964936177074abe7.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/fa-IR-json"],{ + +/***/ "../../locales/fa-IR.json": +/*!********************************!*\ + !*** ../../locales/fa-IR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"جای گذاری","pasteAsPlaintext":"جای‌گذاری به عنوان متن ساده","pasteCharts":"قراردادن نمودارها","selectAll":"انتخاب همه","multiSelect":"یک ایتم به انتخاب شده ها اضافه کنید.","moveCanvas":"جابجایی بوم","cut":"بریدن","copy":"کپی","copyAsPng":"کپی در حافطه موقت به صورت PNG","copyAsSvg":"کپی در حافطه موقت به صورت SVG","copyText":"کپی در حافطه موقت به صورت متن","bringForward":"جلو آوردن","sendToBack":"پس فرستادن","bringToFront":"جلو آوردن","sendBackward":"پس فرستادن","delete":"حذف","copyStyles":"کپی سبک","pasteStyles":"جای گذاری سبک","stroke":"حاشیه","background":"پس زمینه","fill":"رنگ آمیزی","strokeWidth":"ضخامت حاشیه","strokeStyle":"استایل حاشیه","strokeStyle_solid":"یکدست","strokeStyle_dashed":"خط چین","strokeStyle_dotted":"نقطه چین","sloppiness":"دقت","opacity":"شفافیت","textAlign":"چیدمان متن","edges":"لبه ها","sharp":"تیز","round":"دور","arrowheads":"سر پیکان","arrowhead_none":"هیچ کدام","arrowhead_arrow":"پیکان","arrowhead_bar":"میله ای","arrowhead_dot":"نقطه","arrowhead_triangle":"مثلث","fontSize":"اندازه قلم","fontFamily":"نوع قلم","addWatermark":"\\"ساخته شده با Excalidraw\\" را اضافه کن","handDrawn":"دست نویس","normal":"عادی","code":"کد","small":"کوچک","medium":"متوسط","large":"بزرگ","veryLarge":"بسیار بزرگ","solid":"توپر","hachure":"هاشور","zigzag":"زیگزاگ","crossHatch":"هاشور متقاطع","thin":"نازک","bold":"ضخیم","left":"چپ","center":"وسط","right":"راست","extraBold":"خیلی ضخیم","architect":"معمار","artist":"هنرمند","cartoonist":"کارتونیست","fileTitle":"نام فایل","colorPicker":"انتخابگر رنگ","canvasColors":"رنگ های بوم","canvasBackground":"بوم","drawingCanvas":"بوم نقاشی","layers":"لایه ها","actions":"عملیات","language":"زبان","liveCollaboration":"همکاری آنلاین...","duplicateSelection":"تکرار","untitled":"بدون عنوان","name":"نام","yourName":"نام شما","madeWithExcalidraw":"ساخته شده با Excalidraw","group":"گروهبندی انتخابها","ungroup":"حذف گروهبندی انتخابها","collaborators":"همکاران","showGrid":"نمایش گرید","addToLibrary":"افزودن به کتابخانه","removeFromLibrary":"حذف از کتابخانه","libraryLoadingMessage":"بارگذاری کتابخانه…","libraries":"مرور کردن کتابخانه ها","loadingScene":"باگذاری صحنه…","align":"تراز","alignTop":"تراز به بالا","alignBottom":"تراز به پایین","alignLeft":"تراز به چپ","alignRight":"تراز به راست","centerVertically":"وسط قرار دادن به صورت عمودی","centerHorizontally":"وسط قرار دادن به صورت افقی","distributeHorizontally":"توزیع کردن به صورت افقی","distributeVertically":"توزیع کردن به صورت عمودی","flipHorizontal":"چرخش افقی","flipVertical":"چرخش عمودی","viewMode":"حالت نمایش","share":"اشتراک‌گذاری","showStroke":"نمایش انتخاب کننده رنگ حاشیه","showBackground":"نمایش انتخاب کننده رنگ پس زمینه","toggleTheme":"تغییر تم","personalLib":"کتابخانه شخصی","excalidrawLib":"کتابخانه","decreaseFontSize":"کاهش اندازه فونت","increaseFontSize":"افزایش دادن اندازه فونت","unbindText":"بازکردن نوشته","bindText":"بستن نوشته","createContainerFromText":"متن را در یک جایگاه بپیچید","link":{"edit":"ویرایش لینک","editEmbed":"","create":"ایجاد پیوند","createEmbed":"","label":"لینک","labelEmbed":"","empty":""},"lineEditor":{"edit":"ویرایش لینک","exit":"خروج از ویرایشگر"},"elementLock":{"lock":"قفل","unlock":"باز کردن","lockAll":"قفل همه","unlockAll":"باز کردن قفل همه"},"statusPublished":"منتشر شده","sidebarLock":"باز نگه داشتن سایدبار","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"انتخاب رنگ از کرباس"},"library":{"noItems":"آیتمی به اینجا اضافه نشده...","hint_emptyLibrary":"یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.","hint_emptyPrivateLibrary":"یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید."},"buttons":{"clearReset":"پاکسازی بوم نقاشی","exportJSON":"خروجی در فایل","exportImage":"خروجی گرفتن از تصویر...","export":"ذخیره در...","copyToClipboard":"کپی در حافظه موقت","save":"ذخیره در همین فایل","saveAs":"ذخیره با نام","load":"باز کردن","getShareableLink":"دریافت لینک قابل اشتراک","close":"بستن","selectLanguage":"انتخاب زبان","scrollBackToContent":"به محتوا بروید","zoomIn":"بزرگ نمایی","zoomOut":"کوچک نمایی","resetZoom":"اندازه اصلی","menu":"فهرست","done":"انجام شد","edit":"ویرایش","undo":"بازگرد","redo":"از سر","resetLibrary":"تنظیم مجدد کتابخانه","createNewRoom":"ایجاد یک اتاق جدید","fullScreen":"تمام‌صفحه","darkMode":"حالت تیره","lightMode":"حالت روشن","zenMode":"حالت ذن","objectsSnapMode":"","exitZenMode":"خروج از حالت تمرکز","cancel":"لغو","clear":"پاک کردن","remove":"پاک کردن","embed":"","publishLibrary":"انتشار","submit":"ارسال","confirm":"تایید","embeddableInteractionButton":""},"alerts":{"clearReset":"این کار کل صفحه را پاک میکند. آیا مطمئنید؟","couldNotCreateShareableLink":"عدم توانایی در ساخت یک لینک قابل اشتراک.","couldNotCreateShareableLinkTooBig":"لینک قابل اشتراک گذاری ایجاد نشد: محتوای صحنه بسیار بزرگ است","couldNotLoadInvalidFile":"عدم توانایی در بازگذاری فایل نامعتبر","importBackendFailed":"بارگیری از پشت صحنه با شکست مواجه شد.","cannotExportEmptyCanvas":"بوم خالی قابل تبدیل نیست.","couldNotCopyToClipboard":"به کلیپ بورد کپی نشد.","decryptFailed":"رمزگشایی داده ها امکان پذیر نیست.","uploadedSecurly":"آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.","loadSceneOverridePrompt":"بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟","collabStopOverridePrompt":"با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟\\n\\n(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)","errorAddingToLibrary":"مورد به کتابخانه اضافه نشد","errorRemovingFromLibrary":"مورد از کتابخانه حذف نشد","confirmAddLibrary":"{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟","imageDoesNotContainScene":"به نظر نمی رسد این تصویر حاوی داده های بوم نقاشی باشد. آیا جاسازی صحنه را در حین خروجی فعال کرده اید?","cannotRestoreFromImage":"صحنه را نمی توان از این فایل تصویری بازیابی کرد","invalidSceneUrl":"بوم نقاشی از آدرس ارائه شده وارد نشد. این یا نادرست است، یا حاوی داده Excalidraw JSON معتبر نیست.","resetLibrary":"ین کار کل صفحه را پاک میکند. آیا مطمئنید?","removeItemsFromsLibrary":"حذف {{count}} آیتم(ها) از کتابخانه?","invalidEncryptionKey":"کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.","collabOfflineWarning":"اتصال به اینترنت در دسترس نیست.\\nتغییرات شما ذخیره نمی شود!"},"errors":{"unsupportedFileType":"نوع فایل پشتیبانی نشده.","imageInsertError":"عکس ارسال نشد. بعداً دوباره تلاش کنید...","fileTooBig":"فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.","svgImageInsertError":"تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.","failedToFetchImage":"","invalidSVGString":"SVG نادرست.","cannotResolveCollabServer":"به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.","importLibraryError":"داده‌ها بارگذاری نشدند","collabSaveFailed":"در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","collabSaveFailed_sizeExceeded":"در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","brave_measure_text_error":{"line1":"به نظر می‌رسد از مرورگر Brave با تنظیم مسدود کردن شدید اثرانگشت استفاده می‌کنید.","line2":"این می تواند منجر به شکستن عناصر متن در نقاشی های شما شود.","line3":"اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار می‌توانید این مراحل را دنبال کنید.","line4":"اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک مشکل را در GitHub ما باز کنید یا برای ما در Discord بنویسید."},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"گزینش","image":"وارد کردن تصویر","rectangle":"مستطیل","diamond":"لوزی","ellipse":"بیضی","arrow":"پیکان","line":"خط","freedraw":"کشیدن","text":"متن","library":"کتابخانه","lock":"ابزار انتخاب شده را بعد از کشیدن نگه دار","penMode":"حالت قلم - جلوگیری از تماس","link":"افزودن/به‌روزرسانی پیوند برای شکل انتخابی","eraser":"پاک کن","frame":"","embeddable":"","laser":"","hand":"دست (ابزار پانینگ)","extraTools":"ابزارهای بیشتر"},"headings":{"canvasActions":"عملیات روی بوم","selectedShapeActions":"عملیات روی شکل انتخاب شده","shapes":"شکل‌ها"},"hints":{"canvasPanning":"برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید","linearElement":"برای چند نقطه کلیک و برای یک خط بکشید","freeDraw":"کلیک کنید و بکشید و وقتی کار تمام شد رها کنید","text":"نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید","embeddable":"","text_selected":"دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید","text_editing":"Escape یا CtrlOrCmd+ENTER را فشار دهید تا ویرایش تمام شود","linearElementMulti":"روی آخرین نقطه کلیک کنید یا کلید ESC را بزنید یا کلید Enter را بزنید برای اتمام کار","lockAngle":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","resize":"می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید","resizeImage":"با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\\nبرای تغییر اندازه از مرکز، ALT را نگه دارید","rotate":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","lineEditor_info":"CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.","lineEditor_pointSelected":"برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید","lineEditor_nothingSelected":"یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید","placeImage":"برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود","publishLibrary":"کتابخانه خود را منتشر کنید","bindTextToElement":"برای افزودن اینتر را بزنید","deepBoxSelect":"CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید","eraserRevert":"Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند","firefox_clipboard_write":"احتمالاً می‌توان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \\"about:config\\" دیدن کنید.","disableSnapping":""},"canvasError":{"cannotShowPreview":"پیش نمایش نشان داده نمی شود","canvasTooBig":"بوم نقاشی بسیار بزرگ است.","canvasTooBigTip":"نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید."},"errorSplash":{"headingMain":"","clearCanvasMessage":"اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ","clearCanvasCaveat":" این باعث میشود کارهای شما ذخیره نشود ","trackedToSentry":"","openIssueMessage":"","sceneContent":"محتوای صحنه:"},"roomDialog":{"desc_intro":"می توانید افرادی را به صحنه فعلی خود دعوت کنید تا با شما همکاری کنند.","desc_privacy":"نگران نباشید، این جلسه از رمزگذاری دوطرفه استفاده می کند، پس هر چیزی بکشید خصوصی خواهد ماند. حتی سرور ما نمیتواند ببیند چیزی که شما طراحی میکنید.","button_startSession":"شروع جلسه","button_stopSession":"پایان جلسه","desc_inProgressIntro":"جلسه همکاری آنلاین در حال انجام است.","desc_shareLink":"این لینک را با هر کسی که می خواهید با او همکاری کنید به اشتراک بگذارید:","desc_exitSession":"با پایان دادن جلسه، شما از اتاق حذف میکند، اما می توانید به صورت محلی کار خود را با بوم ادامه دهید. توجه داشته باشید که این مورد بر سایر افراد تأثیر نمی گذارد و همچنان می توانند در نسخه خود همکاری کنند.","shareTitle":"به یک جلسه همکاری زنده در Excalidraw بپیوندید"},"errorDialog":{"title":"خطا"},"exportDialog":{"disk_title":"ذخیره در دیسک","disk_details":"داده های صحنه را به فایلی که بعداً می توانید از آن وارد کنید صادر کنید.","disk_button":"ذخیره در فایل","link_title":"لینک قابل اشتراک‌گذاری","link_details":"خروجی به عنوان یک پیوند فقط خواندنی.","link_button":"خروجی در فایل","excalidrawplus_description":"صحنه را در فضای کاری Excalidraw+ خود ذخیره کنید.","excalidrawplus_button":"خروجی گرفتن","excalidrawplus_exportError":"در حال حاضر نمی‌توان به Excalidraw+ صادر کرد..."},"helpDialog":{"blog":"بلاگ ما را بخوانید","click":"کلیک","deepSelect":"انتخاب عمیق","deepBoxSelect":"انتخاب عمیق در کادر، و جلوگیری از کشیدن","curvedArrow":"فلش خمیده","curvedLine":"منحنی","documentation":"مستندات","doubleClick":"دابل کلیک","drag":"کشیدن","editor":"ویرایشگر","editLineArrowPoints":"نقاط خط/پیکان را ویرایش کنید","editText":"ویرایش متن / افزودن برچسب","github":"اشکالی می بینید؟ گزارش دهید","howto":"راهنمای ما را دنبال کنید","or":"یا","preventBinding":"مانع شدن از چسبیدن فلش ها","tools":"ابزار","shortcuts":"میانبرهای صفحه کلید","textFinish":"پایان ویرایش (ویرایشگر متن)","textNewLine":"افزودن خط جدید (ویرایشگر متن)","title":"راهنما","view":"مشاهده","zoomToFit":"بزرگنمایی برای دیدن تمام آیتم ها","zoomToSelection":"بزرگنمایی قسمت انتخاب شده","toggleElementLock":"قفل/بازکردن انتخاب شده ها","movePageUpDown":"حرکت صفحه به بالا/پایین","movePageLeftRight":"حرکت صفحه به چپ/راست"},"clearCanvasDialog":{"title":"پاک کردن بوم"},"publishDialog":{"title":"انتشار کتابخانه","itemName":"نام آیتم","authorName":"نام نویسنده","githubUsername":"نام کاربری گیت هاب","twitterUsername":"نام کاربری توییتر","libraryName":"نام کتابخانه","libraryDesc":"توضیحات کتابخانه","website":"تارنما","placeholder":{"authorName":"نام یا نام کاربری شما","libraryName":"اسم کتابخانه","libraryDesc":"شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن","githubHandle":"دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید","twitterHandle":"نام کاربری توییتر (اختیاری)، بنابراین می دانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم","website":"پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)"},"errors":{"required":"لازم","website":"وارد کردن آدرس درست"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:","atleastOneLibItem":"لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید","republishWarning":"توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام به‌روزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید."},"publishSuccessDialog":{"title":"کتابخانه ارسال شد","content":"تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید"},"confirmDialog":{"resetLibrary":"تنظیم مجدد کتابخانه","removeItemsFromLib":"موارد انتخاب شده از موارد پسندیده حذف شوند"},"imageExportDialog":{"header":"","label":{"withBackground":"پس زمینه","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"شما در یک محیط رمزگزاری شده دو طرفه در حال طراحی هستید پس Excalidraw هرگز طرح های شما را نمیبند.","link":"پست وبلاگ در مورد رمزگذاری سرتاسر در Excalidraw"},"stats":{"angle":"زاویه","element":"اِلمان","elements":"اِلمان ها","height":"ارتفاع","scene":"صحنه","selected":"انتخاب شده","storage":"حافظه","title":"آمار برای نردها","total":"مجموع","version":"نسخه","versionCopy":"برای کپی کردن کلیک کنید","versionNotAvailable":"نسخه غیرقابل دسترس","width":"عرض"},"toast":{"addedToLibrary":"به مجموعه اضافه شد","copyStyles":"کپی سبک.","copyToClipboard":"در کلیپ‌بورد کپی شد.","copyToClipboardAsPng":"کپی {{exportSelection}} در کلیپبورد به عنوان PNG\\n({{exportColorScheme}})","fileSaved":"فایل ذخیره شد.","fileSavedToFilename":"ذخیره در {filename}","canvas":"بوم","selection":"انتخاب","pasteAsSingleElement":"از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\\nیا در یک ویرایشگر متن موجود جایگذاری کنید","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"شفاف","black":"سیاه","white":"سفید","red":"قرمز","pink":"صورتی","grape":"یاقوتی","violet":"بنفش","gray":"خاکستری","blue":"آبی","cyan":"فیروزه‌ای","teal":"سبزآبی","green":"سبز","yellow":"زرد","orange":"نارنجی","bronze":"برنزی"},"welcomeScreen":{"app":{"center_heading":"تمام داده های شما به صورت محلی در مرورگر شما ذخیره می شود.","center_heading_plus":"آیا می‌خواهید به جای آن به Excalidraw+ بروید؟","menuHint":"خروجی، ترجیحات، زبان ها، ..."},"defaults":{"menuHint":"خروجی، ترجیحات، وبیشتر ...","center_heading":"نمودارها .ساخته شده. ساده.","toolbarHint":"ابزاری را انتخاب کنید و نقاشی را شروع کنید!","helpHint":"میانبرها و راهنما"}},"colorPicker":{"mostUsedCustomColors":"","colors":"رنگ‌ها","shades":"جلوه‌ها","hexCode":"کدِ هگز","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"ذخیره در دیسک","button":"ذخیره در دیسک","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"بارگذاری از فایل","button":"بارگذاری از فایل","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/fi-FI-json-f7839bb6f5ad0a3c7e0d.js b/public/excalidraw/excalidraw-assets-dev/locales/fi-FI-json-f7839bb6f5ad0a3c7e0d.js new file mode 100644 index 0000000..7f94a39 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/fi-FI-json-f7839bb6f5ad0a3c7e0d.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/fi-FI-json"],{ + +/***/ "../../locales/fi-FI.json": +/*!********************************!*\ + !*** ../../locales/fi-FI.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Liitä","pasteAsPlaintext":"Liitä pelkkänä tekstinä","pasteCharts":"Liitä kaaviot","selectAll":"Valitse kaikki","multiSelect":"Lisää kohde valintaan","moveCanvas":"Siirrä piirtoaluetta","cut":"Leikkaa","copy":"Kopioi","copyAsPng":"Kopioi leikepöydälle PNG-tiedostona","copyAsSvg":"Kopioi leikepöydälle SVG-tiedostona","copyText":"Kopioi tekstinä","bringForward":"Tuo eteenpäin","sendToBack":"Vie taakse","bringToFront":"Tuo eteen","sendBackward":"Vie taaksepäin","delete":"Poista","copyStyles":"Kopioi tyyli","pasteStyles":"Liitä tyyli","stroke":"Piirto","background":"Tausta","fill":"Täyttö","strokeWidth":"Viivan leveys","strokeStyle":"Viivan tyyli","strokeStyle_solid":"Yhtenäinen","strokeStyle_dashed":"Katkoviiva","strokeStyle_dotted":"Pisteviiva","sloppiness":"Viivan tarkkuus","opacity":"Peittävyys","textAlign":"Tekstin tasaus","edges":"Reunat","sharp":"Terävä","round":"Pyöristetty","arrowheads":"Nuolenkärjet","arrowhead_none":"Ei mitään","arrowhead_arrow":"Nuoli","arrowhead_bar":"Tasapää","arrowhead_dot":"Piste","arrowhead_triangle":"Kolmio","fontSize":"Kirjasinkoko","fontFamily":"Kirjasintyyppi","addWatermark":"Lisää \\"Tehty Excalidrawilla\\"","handDrawn":"Käsinpiirretty","normal":"Tavallinen","code":"Koodi","small":"Pieni","medium":"Keskikoko","large":"Suuri","veryLarge":"Erittäin suuri","solid":"Yhtenäinen","hachure":"Vinoviivoitus","zigzag":"","crossHatch":"Ristiviivoitus","thin":"Ohut","bold":"Lihavoitu","left":"Vasen","center":"Keskitä","right":"Oikea","extraBold":"Erittäin lihavoitu","architect":"Arkkitehti","artist":"Taiteilija","cartoonist":"Sarjakuva","fileTitle":"Tiedostonimi","colorPicker":"Värin valinta","canvasColors":"Käytössä piirtoalueella","canvasBackground":"Piirtoalueen tausta","drawingCanvas":"Piirtoalue","layers":"Tasot","actions":"Toiminnot","language":"Kieli","liveCollaboration":"Live Yhteistyö...","duplicateSelection":"Monista","untitled":"Nimetön","name":"Nimi","yourName":"Nimesi","madeWithExcalidraw":"Tehty Excalidrawilla","group":"Ryhmitä valinta","ungroup":"Pura valittu ryhmä","collaborators":"Yhteistyökumppanit","showGrid":"Näytä ruudukko","addToLibrary":"Lisää kirjastoon","removeFromLibrary":"Poista kirjastosta","libraryLoadingMessage":"Ladataan kirjastoa…","libraries":"Selaa kirjastoja","loadingScene":"Ladataan työtä…","align":"Tasaa","alignTop":"Tasaa ylös","alignBottom":"Tasaa alas","alignLeft":"Tasaa vasemmalle","alignRight":"Tasaa oikealle","centerVertically":"Keskitä pystysuunnassa","centerHorizontally":"Keskitä vaakasuunnassa","distributeHorizontally":"Jaa vaakasuunnassa","distributeVertically":"Jaa pystysuunnassa","flipHorizontal":"Käännä vaakasuunnassa","flipVertical":"Käännä pystysuunnassa","viewMode":"Katselutila","share":"Jaa","showStroke":"Näytä viivan värin valitsin","showBackground":"Näytä taustavärin valitsin","toggleTheme":"Vaihda teema","personalLib":"Oma kirjasto","excalidrawLib":"Excalidraw kirjasto","decreaseFontSize":"Pienennä kirjasinkokoa","increaseFontSize":"Kasvata kirjasinkokoa","unbindText":"Irroita teksti","bindText":"Kiinnitä teksti säiliöön","createContainerFromText":"","link":{"edit":"Muokkaa linkkiä","editEmbed":"","create":"Luo linkki","createEmbed":"","label":"Linkki","labelEmbed":"","empty":""},"lineEditor":{"edit":"Muokkaa riviä","exit":"Poistu rivieditorista"},"elementLock":{"lock":"Lukitse","unlock":"Poista lukitus","lockAll":"Lukitse kaikki","unlockAll":"Poista lukitus kaikista"},"statusPublished":"Julkaistu","sidebarLock":"Pidä sivupalkki avoinna","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Kirjastossa ei ole vielä yhtään kohdetta...","hint_emptyLibrary":"Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.","hint_emptyPrivateLibrary":"Valitse lisättävä kohde piirtoalueelta."},"buttons":{"clearReset":"Tyhjennä piirtoalue","exportJSON":"Vie tiedostoon","exportImage":"Vie kuva...","export":"Tallenna nimellä...","copyToClipboard":"Kopioi leikepöydälle","save":"Tallenna nykyiseen tiedostoon","saveAs":"Tallenna nimellä","load":"Avaa","getShareableLink":"Hae jaettava linkki","close":"Sulje","selectLanguage":"Valitse kieli","scrollBackToContent":"Näytä sisältö","zoomIn":"Lähennä","zoomOut":"Loitonna","resetZoom":"Nollaa suurennuksen taso","menu":"Valikko","done":"Valmis","edit":"Muokkaa","undo":"Kumoa","redo":"Tee uudelleen","resetLibrary":"Tyhjennä kirjasto","createNewRoom":"Luo huone","fullScreen":"Koko näyttö","darkMode":"Tumma tila","lightMode":"Vaalea tila","zenMode":"Zen-tila","objectsSnapMode":"","exitZenMode":"Poistu zen-tilasta","cancel":"Peruuta","clear":"Pyyhi","remove":"Poista","embed":"","publishLibrary":"Julkaise","submit":"Lähetä","confirm":"Vahvista","embeddableInteractionButton":""},"alerts":{"clearReset":"Tämä tyhjentää koko piirtoalueen. Jatketaanko?","couldNotCreateShareableLink":"Jaettavan linkin luominen epäonnistui.","couldNotCreateShareableLinkTooBig":"Jaettavaa linkkiä ei voitu luoda: teos on liian suuri","couldNotLoadInvalidFile":"Virheellistä tiedostoa ei voitu avata","importBackendFailed":"Palvelimelta tuonti epäonnistui.","cannotExportEmptyCanvas":"Tyhjää piirtoaluetta ei voi viedä.","couldNotCopyToClipboard":"Leikepöydälle vieminen epäonnistui.","decryptFailed":"Salauksen purkaminen epäonnistui.","uploadedSecurly":"Lähetys on turvattu päästä-päähän-salauksella. Excalidrawin palvelin ja kolmannet osapuolet eivät voi lukea sisältöä.","loadSceneOverridePrompt":"Ulkopuolisen piirroksen lataaminen korvaa nykyisen sisältösi. Jatketaanko?","collabStopOverridePrompt":"Istunnon lopettaminen korvaa aiemman, paikallisesti tallennetun piirustuksen. Jatketaanko?\\n\\n(Jos haluat säilyttää paikallisesti tallennetun piirustuksen, sulje selaimen välilehti lopettamisen sijaan.)","errorAddingToLibrary":"Kohdetta ei voitu lisätä kirjastoon","errorRemovingFromLibrary":"Kohdetta ei voitu poistaa kirjastosta","confirmAddLibrary":"Tämä lisää {{numShapes}} muotoa kirjastoosi. Jatketaanko?","imageDoesNotContainScene":"Tämä kuva ei näytä sisältävän piirrostietoja. Oletko ottanut käyttöön piirroksen tallennuksen viennin aikana?","cannotRestoreFromImage":"Teosta ei voitu palauttaa tästä kuvatiedostosta","invalidSceneUrl":"Teosta ei voitu tuoda annetusta URL-osoitteesta. Tallenne on vioittunut, tai osoitteessa ei ole Excalidraw JSON-dataa.","resetLibrary":"Tämä tyhjentää kirjastosi. Jatketaanko?","removeItemsFromsLibrary":"Poista {{count}} kohdetta kirjastosta?","invalidEncryptionKey":"Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.","collabOfflineWarning":"Internet-yhteyttä ei ole saatavilla.\\nMuutoksiasi ei tallenneta!"},"errors":{"unsupportedFileType":"Tiedostotyyppiä ei tueta.","imageInsertError":"Kuvan lisääminen epäonnistui. Yritä myöhemmin uudelleen...","fileTooBig":"Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.","svgImageInsertError":"SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.","failedToFetchImage":"","invalidSVGString":"Virheellinen SVG.","cannotResolveCollabServer":"Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.","importLibraryError":"Kokoelman lataaminen epäonnistui","collabSaveFailed":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","collabSaveFailed_sizeExceeded":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Valinta","image":"Lisää kuva","rectangle":"Suorakulmio","diamond":"Vinoneliö","ellipse":"Soikio","arrow":"Nuoli","line":"Viiva","freedraw":"Piirrä","text":"Teksti","library":"Kirjasto","lock":"Pidä valittu työkalu aktiivisena piirron jälkeen","penMode":"Kynätila - estä kosketus","link":"Lisää/päivitä linkki valitulle muodolle","eraser":"Poistotyökalu","frame":"","embeddable":"","laser":"","hand":"Käsi (panning-työkalu)","extraTools":""},"headings":{"canvasActions":"Piirtoalueen toiminnot","selectedShapeActions":"Valitun muodon toiminnot","shapes":"Muodot"},"hints":{"canvasPanning":"Piirtoalueen liikuttamiseksi pidä hiiren pyörää tai välilyöntiä pohjassa tai käytä käsityökalua","linearElement":"Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva","freeDraw":"Paina ja raahaa, päästä irti kun olet valmis","text":"Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla","embeddable":"","text_selected":"Kaksoisnapsauta tai paina ENTER muokataksesi tekstiä","text_editing":"Paina Escape tai CtrlOrCmd+ENTER lopettaaksesi muokkaamisen","linearElementMulti":"Lopeta klikkaamalla viimeistä pistettä, painamalla Escape- tai Enter-näppäintä","lockAngle":"Voit rajoittaa kulmaa pitämällä SHIFT-näppäintä alaspainettuna","resize":"Voit rajoittaa mittasuhteet pitämällä SHIFT-näppäintä alaspainettuna kun muutat kokoa, pidä ALT-näppäintä alaspainettuna muuttaaksesi kokoa keskipisteen suhteen","resizeImage":"Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri","rotate":"Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi","lineEditor_info":"Pidä CtrlOrCmd pohjassa ja kaksoisnapsauta tai paina CtrlOrCmd + Enter muokataksesi pisteitä","lineEditor_pointSelected":"Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla","lineEditor_nothingSelected":"Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä","placeImage":"Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti","publishLibrary":"Julkaise oma kirjasto","bindTextToElement":"Lisää tekstiä painamalla enter","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus painamalla CtrlOrCmd","eraserRevert":"Pidä Alt alaspainettuna, kumotaksesi merkittyjen elementtien poistamisen","firefox_clipboard_write":"Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla \\"dom.events.asyncClipboard.clipboardItem\\" kohta \\"true\\":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy \\"about:config\\" sivulla.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Esikatselua ei voitu näyttää","canvasTooBig":"Piirtoalue saattaa olla liian suuri.","canvasTooBigTip":"Vinkki: yritä siirtää kaukaisimpia elementtejä hieman lähemmäs toisiaan."},"errorSplash":{"headingMain":"Tapahtui virhe. Yritä ","clearCanvasMessage":"Mikäli sivun lataaminen uudelleen ei auta, yritä ","clearCanvasCaveat":" Tämä johtaa työn menetykseen ","trackedToSentry":"Virhe tunnisteella {{eventId}} tallennettiin järjestelmäämme.","openIssueMessage":"Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.","sceneContent":"Piirroksen tiedot:"},"roomDialog":{"desc_intro":"Voit kutsua ihmisiä piirrokseesi tekemään yhteistyötä kanssasi.","desc_privacy":"Älä huoli, istunto käyttää päästä-päähän-salausta, joten mitä tahansa piirrätkin, se pysyy salassa. Edes palvelimemme eivät näe mitä keksit.","button_startSession":"Aloita istunto","button_stopSession":"Lopeta istunto","desc_inProgressIntro":"Jaettu istunto on nyt käynnissä.","desc_shareLink":"Jaa tämä linkki kenelle tahansa, jonka kanssa haluat tehdä yhteistyötä:","desc_exitSession":"Istunnon pysäyttäminen katkaisee yhteyden huoneeseen, mutta voit vielä jatkaa työskentelyä paikallisesti. Huomaa, että tämä ei vaikuta muihin käyttäjiin ja he voivat jatkaa oman versionsa parissa työskentelyä.","shareTitle":"Liity Excalidraw live-yhteistyöistuntoon"},"errorDialog":{"title":"Virhe"},"exportDialog":{"disk_title":"Tallenna levylle","disk_details":"Vie työn tiedot tiedostoon, josta sen voi tuoda myöhemmin.","disk_button":"Tallenna tiedostoon","link_title":"Jaettava linkki","link_details":"Vie vain luku -linkkinä.","link_button":"Vie linkkinä","excalidrawplus_description":"Tallenna teos Excalidraw+ tilaan.","excalidrawplus_button":"Vie","excalidrawplus_exportError":"Ei voitu viedä Excalidraw+-palveluun tällä hetkellä..."},"helpDialog":{"blog":"Lue blogiamme","click":"klikkaa","deepSelect":"Syvävalinta","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus","curvedArrow":"Kaareva nuoli","curvedLine":"Kaareva viiva","documentation":"Käyttöohjeet","doubleClick":"kaksoisnapsautus","drag":"vedä","editor":"Muokkausohjelma","editLineArrowPoints":"","editText":"","github":"Löysitkö ongelman? Kerro meille","howto":"Seuraa oppaitamme","or":"tai","preventBinding":"Estä nuolten kiinnitys","tools":"Työkalut","shortcuts":"Pikanäppäimet","textFinish":"Lopeta muokkaus (tekstieditori)","textNewLine":"Lisää uusi rivi (tekstieditori)","title":"Ohjeet","view":"Näkymä","zoomToFit":"Näytä kaikki elementit","zoomToSelection":"Näytä valinta","toggleElementLock":"Lukitse / poista lukitus valinta","movePageUpDown":"Siirrä sivua ylös/alas","movePageLeftRight":"Siirrä sivua vasemmalle/oikealle"},"clearCanvasDialog":{"title":"Pyyhi piirtoalue"},"publishDialog":{"title":"Julkaise kirjasto","itemName":"Kohteen nimi","authorName":"Tekijän nimi","githubUsername":"GitHub-käyttäjätunnus","twitterUsername":"Twitter-käyttäjätunnus","libraryName":"Kirjaston nimi","libraryDesc":"Kirjaston kuvaus","website":"Verkkosivu","placeholder":{"authorName":"Nimesi tai käyttäjänimesi","libraryName":"Kirjastosi nimi","libraryDesc":"Kirjaston kuvaus, joka auttaa ihmisiä ymmärtämään sen käyttötarkoitukset","githubHandle":"GitHub-tunnuksesi (valinnainen), jotta voit muokata kirjastoa sen jälkeen kun se on lähetetty tarkastettavaksi","twitterHandle":"Twitter-tunnus (valinnainen), jotta tiedämme ketä kiittää kun viestimme Twitterissä","website":"Linkki henkilökohtaiselle verkkosivustollesi tai muualle (valinnainen)"},"errors":{"required":"Pakollinen","website":"Syötä oikeamuotoinen URL-osoite"},"noteDescription":"Lähetä kirjastosi, jotta se voidaan sisällyttää julkisessa kirjastolistauksessamuiden käyttöön omissa piirrustuksissaan.","noteGuidelines":"Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue ohjeet ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä.","noteLicense":"Lähettämällä hyväksyt että kirjasto julkaistaan MIT-lisenssin alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia.","noteItems":"Jokaisella kirjaston kohteella on oltava oma nimensä suodatusta varten. Seuraavat kirjaston kohteet sisältyvät:","atleastOneLibItem":"Valitse vähintään yksi kirjaston kohde aloittaaksesi","republishWarning":"Huom! Osa valituista kohteista on merkitty jo julkaistu/lähetetyiksi. Lähetä kohteita uudelleen vain päivitettäessä olemassa olevaa kirjastoa tai ehdotusta."},"publishSuccessDialog":{"title":"Kirjasto lähetetty","content":"Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaatäällä"},"confirmDialog":{"resetLibrary":"Tyhjennä kirjasto","removeItemsFromLib":"Poista valitut kohteet kirjastosta"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Piirroksesi ovat päästä-päähän-salattuja, joten Excalidrawin palvelimet eivät koskaan näe niitä.","link":"Blogiartikkeli päästä päähän -salauksesta Excalidraw:ssa"},"stats":{"angle":"Kulma","element":"Elementti","elements":"Elementit","height":"Korkeus","scene":"Teos","selected":"Valitut","storage":"Tallennustila","title":"Tilastoja nörteille","total":"Yhteensä","version":"Versio","versionCopy":"Klikkaa kopioidaksesi","versionNotAvailable":"Versio ei saatavilla","width":"Leveys"},"toast":{"addedToLibrary":"Lisätty kirjastoon","copyStyles":"Tyylit kopioitiin.","copyToClipboard":"Kopioitiin leikepöydälle.","copyToClipboardAsPng":"Kopioitiin {{exportSelection}} leikepöydälle PNG:nä\\n({{exportColorScheme}})","fileSaved":"Tiedosto tallennettu.","fileSavedToFilename":"Tallennettiin kohteeseen {filename}","canvas":"piirtoalue","selection":"valinta","pasteAsSingleElement":"Käytä {{shortcut}} liittääksesi yhtenä elementtinä,\\ntai liittääksesi olemassa olevaan tekstieditoriin","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Läpinäkyvä","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Kaikki tietosi on tallennettu paikallisesti selaimellesi.","center_heading_plus":"Haluatko sen sijaan mennä Excalidraw+:aan?","menuHint":"Vie, asetukset, kielet, ..."},"defaults":{"menuHint":"Vie, asetukset ja lisää...","center_heading":"Kaaviot. Tehty. Yksinkertaiseksi.","toolbarHint":"Valitse työkalu ja aloita piirtäminen!","helpHint":"Pikanäppäimet & ohje"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/fr-FR-json-20e8535e2675a6736c81.js b/public/excalidraw/excalidraw-assets-dev/locales/fr-FR-json-20e8535e2675a6736c81.js new file mode 100644 index 0000000..c865c8d --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/fr-FR-json-20e8535e2675a6736c81.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/fr-FR-json"],{ + +/***/ "../../locales/fr-FR.json": +/*!********************************!*\ + !*** ../../locales/fr-FR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Coller","pasteAsPlaintext":"Coller comme texte brut","pasteCharts":"Coller les graphiques","selectAll":"Tout sélectionner","multiSelect":"Ajouter l\'élément à la sélection","moveCanvas":"Déplacer le canevas","cut":"Couper","copy":"Copier","copyAsPng":"Copier dans le presse-papier en PNG","copyAsSvg":"Copier dans le presse-papier en SVG","copyText":"Copier dans le presse-papier en tant que texte","bringForward":"Envoyer vers l\'avant","sendToBack":"Déplacer à l\'arrière-plan","bringToFront":"Mettre au premier plan","sendBackward":"Reculer d\'un plan","delete":"Supprimer","copyStyles":"Copier les styles","pasteStyles":"Coller les styles","stroke":"Trait","background":"Arrière-plan","fill":"Remplissage","strokeWidth":"Largeur du contour","strokeStyle":"Style du trait","strokeStyle_solid":"Continu","strokeStyle_dashed":"Tirets","strokeStyle_dotted":"Pointillés","sloppiness":"Style de tracé","opacity":"Transparence","textAlign":"Alignement du texte","edges":"Angles","sharp":"Pointus","round":"Arrondis","arrowheads":"Extrémités","arrowhead_none":"Sans","arrowhead_arrow":"Flèche","arrowhead_bar":"Barre","arrowhead_dot":"Point","arrowhead_triangle":"Triangle","fontSize":"Taille de la police","fontFamily":"Police","addWatermark":"Ajouter \\"Réalisé avec Excalidraw\\"","handDrawn":"À main levée","normal":"Normale","code":"Code","small":"Petite","medium":"Moyenne","large":"Grande","veryLarge":"Très grande","solid":"Solide","hachure":"Hachures","zigzag":"Zigzag","crossHatch":"Hachures croisées","thin":"Fine","bold":"Épaisse","left":"À gauche","center":"Au centre","right":"À droite","extraBold":"Très épaisse","architect":"Architecte","artist":"Artiste","cartoonist":"Caricaturiste","fileTitle":"Nom du fichier","colorPicker":"Sélecteur de couleur","canvasColors":"Utilisé sur la zone de dessin","canvasBackground":"Arrière-plan du canevas","drawingCanvas":"Zone de dessin","layers":"Disposition","actions":"Actions","language":"Langue","liveCollaboration":"Collaboration en direct...","duplicateSelection":"Dupliquer","untitled":"Sans-titre","name":"Nom","yourName":"Votre nom","madeWithExcalidraw":"Fait avec Excalidraw","group":"Grouper la sélection","ungroup":"Dégrouper la sélection","collaborators":"Collaborateurs","showGrid":"Afficher la grille","addToLibrary":"Ajouter à la bibliothèque","removeFromLibrary":"Supprimer de la bibliothèque","libraryLoadingMessage":"Chargement de la bibliothèque…","libraries":"Parcourir les bibliothèques","loadingScene":"Chargement de la scène…","align":"Alignement","alignTop":"Aligner en haut","alignBottom":"Aligner en bas","alignLeft":"Aligner à gauche","alignRight":"Aligner à droite","centerVertically":"Centrer verticalement","centerHorizontally":"Centrer horizontalement","distributeHorizontally":"Répartir horizontalement","distributeVertically":"Répartir verticalement","flipHorizontal":"Retourner horizontalement","flipVertical":"Retourner verticalement","viewMode":"Mode présentation","share":"Partager","showStroke":"Afficher le sélecteur de couleur de trait","showBackground":"Afficher le sélecteur de couleur de fond","toggleTheme":"Changer le thème","personalLib":"Bibliothèque personnelle","excalidrawLib":"Bibliothèque Excalidraw","decreaseFontSize":"Diminuer la taille de police","increaseFontSize":"Augmenter la taille de la police","unbindText":"Dissocier le texte","bindText":"Associer le texte au conteneur","createContainerFromText":"Encadrer le texte dans un conteneur","link":{"edit":"Modifier le lien","editEmbed":"Éditer le lien & intégrer","create":"Ajouter un lien","createEmbed":"Créer un lien & intégrer","label":"Lien","labelEmbed":"","empty":"Aucun lien défini"},"lineEditor":{"edit":"Modifier la ligne","exit":"Quitter l\'éditeur de ligne"},"elementLock":{"lock":"Verrouiller","unlock":"Déverrouiller","lockAll":"Tout verrouiller","unlockAll":"Tout déverrouiller"},"statusPublished":"Publié","sidebarLock":"Maintenir la barre latérale ouverte","selectAllElementsInFrame":"Sélectionner tous les éléments du cadre","removeAllElementsFromFrame":"Supprimer tous les éléments du cadre","eyeDropper":""},"library":{"noItems":"Aucun élément n\'a encore été ajouté ...","hint_emptyLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.","hint_emptyPrivateLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici."},"buttons":{"clearReset":"Réinitialiser le canevas","exportJSON":"Exporter comme fichier","exportImage":"Exporter l\'image...","export":"Enregistrer sous...","copyToClipboard":"Copier dans le presse-papier","save":"Enregistrer dans le fichier actuel","saveAs":"Enregistrer sous","load":"Ouvrir","getShareableLink":"Obtenir un lien de partage","close":"Fermer","selectLanguage":"Choisir une langue","scrollBackToContent":"Revenir au contenu","zoomIn":"Zoomer","zoomOut":"Dézoomer","resetZoom":"Réinitialiser le zoom","menu":"Menu","done":"Terminé","edit":"Modifier","undo":"Annuler","redo":"Rétablir","resetLibrary":"Réinitialiser la bibliothèque","createNewRoom":"Créer une nouvelle salle","fullScreen":"Plein écran","darkMode":"Mode sombre","lightMode":"Mode clair","zenMode":"Mode zen","objectsSnapMode":"Aimanter aux objets","exitZenMode":"Quitter le mode zen","cancel":"Annuler","clear":"Effacer","remove":"Supprimer","embed":"Activer/Désactiver l\'intégration","publishLibrary":"Publier","submit":"Envoyer","confirm":"Confirmer","embeddableInteractionButton":"Cliquez pour interagir"},"alerts":{"clearReset":"L\'intégralité du canevas va être effacée. Êtes-vous sûr ?","couldNotCreateShareableLink":"Impossible de créer un lien de partage.","couldNotCreateShareableLinkTooBig":"Impossible de créer un lien de partage : la scène est trop volumineuse","couldNotLoadInvalidFile":"Impossible de charger un fichier invalide","importBackendFailed":"L\'importation depuis le serveur a échoué.","cannotExportEmptyCanvas":"Impossible d\'exporter un canevas vide.","couldNotCopyToClipboard":"Impossible de copier dans le presse-papiers.","decryptFailed":"Les données n\'ont pas pu être déchiffrées.","uploadedSecurly":"Le téléchargement a été sécurisé avec un chiffrement de bout en bout, ce qui signifie que ni Excalidraw ni personne d\'autre ne peut en lire le contenu.","loadSceneOverridePrompt":"Le chargement d\'un dessin externe remplacera votre contenu actuel. Souhaitez-vous continuer ?","collabStopOverridePrompt":"Arrêter la session écrasera votre précédent dessin stocké localement. Êtes-vous sûr·e ?\\n\\n(Si vous voulez garder votre dessin local, fermez simplement l\'onglet du navigateur à la place.)","errorAddingToLibrary":"Impossible d\'ajouter l\'élément à la bibliothèque","errorRemovingFromLibrary":"Impossible de retirer l\'élément de la bibliothèque","confirmAddLibrary":"Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?","imageDoesNotContainScene":"Cette image ne semble pas contenir de données de scène. Avez-vous activé l\'intégration de scène lors de l\'exportation ?","cannotRestoreFromImage":"Impossible de restaurer la scène depuis ce fichier image","invalidSceneUrl":"Impossible d\'importer la scène depuis l\'URL fournie. Elle est soit incorrecte, soit ne contient pas de données JSON Excalidraw valides.","resetLibrary":"Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?","removeItemsFromsLibrary":"Supprimer {{count}} élément(s) de la bibliothèque ?","invalidEncryptionKey":"La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.","collabOfflineWarning":"Aucune connexion internet disponible.\\nVos modifications ne seront pas enregistrées !"},"errors":{"unsupportedFileType":"Type de fichier non supporté.","imageInsertError":"Impossible d\'insérer l\'image. Réessayez plus tard...","fileTooBig":"Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.","svgImageInsertError":"Impossible d\'insérer l\'image SVG. Le balisage SVG semble invalide.","failedToFetchImage":"","invalidSVGString":"SVG invalide.","cannotResolveCollabServer":"Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.","importLibraryError":"Impossible de charger la bibliothèque","collabSaveFailed":"Impossible d\'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.","collabSaveFailed_sizeExceeded":"Impossible d\'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.","brave_measure_text_error":{"line1":"On dirait que vous utilisez le navigateur Brave avec l\'option Bloquer agressivement le fichage activée.","line2":"Cela pourrait entraîner des problèmes avec les Éléments Textuels dans vos dessins.","line3":"Nous recommandons fortement de désactiver cette option. Vous pouvez suivre ces instructions pour savoir comment faire.","line4":"Si désactiver cette option de résout pas le problème d\'affichage des éléments textuels, veuillez ouvrir un ticket sur notre GitHub, ou écrivez-nous sur notre Discord"},"libraryElementTypeError":{"embeddable":"Les éléments intégrés ne peuvent pas être ajoutés à la librairie.","image":"Le support pour l\'ajout d\'images à la librairie arrive bientôt !"}},"toolBar":{"selection":"Sélection","image":"Insérer une image","rectangle":"Rectangle","diamond":"Losange","ellipse":"Ellipse","arrow":"Flèche","line":"Ligne","freedraw":"Dessiner","text":"Texte","library":"Bibliothèque","lock":"Garder l\'outil sélectionné actif après le dessin","penMode":"Mode stylo - évite le toucher","link":"Ajouter/mettre à jour le lien pour une forme sélectionnée","eraser":"Gomme","frame":"Outil de cadre","embeddable":"Intégration Web","laser":"","hand":"Mains (outil de déplacement de la vue)","extraTools":"Plus d\'outils"},"headings":{"canvasActions":"Actions du canevas","selectedShapeActions":"Actions pour la forme sélectionnée","shapes":"Formes"},"hints":{"canvasPanning":"Pour déplacer la zone de dessin, maintenez la molette de la souris enfoncée ou la barre d\'espace tout en faisant glisser, ou utiliser l\'outil main.","linearElement":"Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne","freeDraw":"Cliquez et faites glissez, relâchez quand vous avez terminé","text":"Astuce : vous pouvez aussi ajouter du texte en double-cliquant n\'importe où avec l\'outil de sélection","embeddable":"Cliquez et glissez pour créer une intégration de site web","text_selected":"Double-cliquez ou appuyez sur ENTRÉE pour modifier le texte","text_editing":"Appuyez sur ÉCHAP ou Ctrl/Cmd+ENTRÉE pour terminer l\'édition","linearElementMulti":"Cliquez sur le dernier point ou appuyez sur Échap ou Entrée pour terminer","lockAngle":"Vous pouvez restreindre l\'angle en maintenant MAJ","resize":"Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre","resizeImage":"Vous pouvez redimensionner librement en maintenant SHIFT,\\nmaintenez ALT pour redimensionner depuis le centre","rotate":"Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation","lineEditor_info":"Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points","lineEditor_pointSelected":"Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer","lineEditor_nothingSelected":"Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),\\nou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points","placeImage":"Cliquez pour placer l\'image, ou cliquez et faites glisser pour définir sa taille manuellement","publishLibrary":"Publier votre propre bibliothèque","bindTextToElement":"Appuyer sur Entrée pour ajouter du texte","deepBoxSelect":"Maintenir Ctrl ou Cmd pour sélectionner dans les groupes et empêcher le déplacement","eraserRevert":"Maintenez Alt enfoncé pour annuler les éléments marqués pour suppression","firefox_clipboard_write":"Cette fonctionnalité devrait pouvoir être activée en définissant l\'option \\"dom.events.asyncClipboard.clipboard.clipboardItem\\" à \\"true\\". Pour modifier les paramètres du navigateur dans Firefox, visitez la page \\"about:config\\".","disableSnapping":"Maintenez CtrlOuCmd pour désactiver l\'aimantation"},"canvasError":{"cannotShowPreview":"Impossible d’afficher l’aperçu","canvasTooBig":"Le canevas est peut-être trop grand.","canvasTooBigTip":"Astuce : essayez de rapprocher un peu les éléments les plus éloignés."},"errorSplash":{"headingMain":"Une erreur est survenue. Essayez ","clearCanvasMessage":"Si le rechargement ne résout pas l\'erreur, essayez ","clearCanvasCaveat":" Cela entraînera une perte du travail ","trackedToSentry":"L\'erreur avec l\'identifiant {{eventId}} a été enregistrée dans notre système.","openIssueMessage":"Nous avons fait très attention à ne pas inclure les informations de votre scène dans l\'erreur. Si votre scène n\'est pas privée, veuillez envisager de poursuivre sur notre Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.","sceneContent":"Contenu de la scène :"},"roomDialog":{"desc_intro":"Vous pouvez inviter des personnes à collaborer avec vous sur votre scène actuelle.","desc_privacy":"Pas d\'inquiétude, la session utilise le chiffrement de bout en bout, donc tout ce que vous dessinez restera privé. Même notre serveur ne pourra voir ce que vous faites.","button_startSession":"Démarrer la session","button_stopSession":"Arrêter la session","desc_inProgressIntro":"La session de collaboration en direct est maintenant en cours.","desc_shareLink":"Partagez ce lien avec les personnes avec lesquelles vous souhaitez collaborer :","desc_exitSession":"Arrêter la session vous déconnectera de la salle, mais vous pourrez continuer à travailler avec la scène, localement. Notez que cela n\'affectera pas les autres personnes, et ils pourront toujours collaborer sur leur version.","shareTitle":"Rejoindre une session de collaboration en direct sur Excalidraw"},"errorDialog":{"title":"Erreur"},"exportDialog":{"disk_title":"Enregistrer sur le disque","disk_details":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement.","disk_button":"Enregistrer comme fichier","link_title":"Lien partageable","link_details":"Exporter comme un lien en lecture seule.","link_button":"Exporter comme lien","excalidrawplus_description":"Enregistrer la scène dans votre espace de travail Excalidraw+.","excalidrawplus_button":"Exporter","excalidrawplus_exportError":"Impossible d\'exporter vers Excalidraw+ pour le moment..."},"helpDialog":{"blog":"Lire notre blog","click":"clic","deepSelect":"Sélection dans les groupes","deepBoxSelect":"Sélectionner dans les groupes, et empêcher le déplacement","curvedArrow":"Flèche courbée","curvedLine":"Ligne courbée","documentation":"Documentation","doubleClick":"double-clic","drag":"glisser","editor":"Éditeur","editLineArrowPoints":"Modifier les points de ligne/flèche","editText":"Modifier le texte / ajouter un libellé","github":"Problème trouvé ? Soumettre","howto":"Suivez nos guides","or":"ou","preventBinding":"Empêcher la liaison de flèche","tools":"Outils","shortcuts":"Raccourcis clavier","textFinish":"Terminer l\'édition (éditeur de texte)","textNewLine":"Ajouter une nouvelle ligne (éditeur de texte)","title":"Aide","view":"Affichage","zoomToFit":"Zoomer pour voir tous les éléments","zoomToSelection":"Zoomer sur la sélection","toggleElementLock":"Verrouiller/déverrouiller la sélection","movePageUpDown":"Déplacer la page vers le haut/bas","movePageLeftRight":"Déplacer la page vers la gauche/droite"},"clearCanvasDialog":{"title":"Effacer la zone de dessin"},"publishDialog":{"title":"Publier la bibliothèque","itemName":"Nom de l’élément","authorName":"Nom de l\'auteur","githubUsername":"Nom d\'utilisateur GitHub","twitterUsername":"Nom d\'utilisateur Twitter","libraryName":"Nom de la bibliothèque","libraryDesc":"Description de la bibliothèque","website":"Site web","placeholder":{"authorName":"Votre nom ou nom d\'utilisateur","libraryName":"Nom de votre bibliothèque","libraryDesc":"Description de votre bibliothèque pour aider les gens à comprendre son usage","githubHandle":"Nom d\'utilisateur GitHub (optionnel), pour que tu puisses modifier la bibliothèque une fois soumise pour vérification","twitterHandle":"Nom d\'utilisateur Twitter (optionnel), pour savoir qui créditer lors de la promotion sur Twitter","website":"Lien vers votre site web personnel ou autre (optionnel)"},"errors":{"required":"Requis","website":"Entrer une URL valide"},"noteDescription":"Soumets ta bibliothèque pour l\'inclure au dépôt de bibliothèque publiquepour permettre son utilisation par autrui dans leurs dessins.","noteGuidelines":"La bibliothèque doit d\'abord être approuvée manuellement. Veuillez lire les lignes directrices avant de la soumettre. Vous aurez besoin d\'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n\'est pas obligatoire.","noteLicense":"En soumettant, vous acceptez que la bibliothèque soit publiée sous la Licence MIT, ce qui en gros signifie que tout le monde peut l\'utiliser sans restrictions.","noteItems":"Chaque élément de la bibliothèque doit avoir son propre nom afin qu\'il soit filtrable. Les éléments de bibliothèque suivants seront inclus :","atleastOneLibItem":"Veuillez sélectionner au moins un élément de bibliothèque pour commencer","republishWarning":"Remarque : certains des éléments sélectionnés sont marqués comme étant déjà publiés/soumis. Vous devez uniquement resoumettre des éléments lors de la mise à jour d\'une bibliothèque ou d\'une soumission existante."},"publishSuccessDialog":{"title":"Bibliothèque soumise","content":"Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statutici"},"confirmDialog":{"resetLibrary":"Réinitialiser la bibliothèque","removeItemsFromLib":"Enlever les éléments sélectionnés de la bibliothèque"},"imageExportDialog":{"header":"Exporter l\'image","label":{"withBackground":"Fond","onlySelected":"Uniquement la sélection","darkMode":"Mode sombre","embedScene":"Intégrer la scène","scale":"Échelle","padding":""},"tooltip":{"embedScene":"Les données de la scène seront sauvegardées dans le fichier PNG/SVG exporté afin que la scène puisse être restaurée depuis celui-ci.\\nCela augmentera la taille du fichier exporté."},"title":{"exportToPng":"Exporter en PNG","exportToSvg":"Exporter en SVG","copyPngToClipboard":"Copier le PNG dans le presse-papier"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copier dans le presse-papier"}},"encrypted":{"tooltip":"Vos dessins sont chiffrés de bout en bout, les serveurs d\'Excalidraw ne les verront jamais.","link":"Article de blog sur le chiffrement de bout en bout dans Excalidraw"},"stats":{"angle":"Angle","element":"Élément","elements":"Éléments","height":"Hauteur","scene":"Scène","selected":"Sélection","storage":"Stockage","title":"Stats pour les nerds","total":"Total","version":"Version","versionCopy":"Cliquer pour copier","versionNotAvailable":"Version non disponible","width":"Largeur"},"toast":{"addedToLibrary":"Ajouté à la bibliothèque","copyStyles":"Styles copiés.","copyToClipboard":"Copié dans le presse-papier.","copyToClipboardAsPng":"{{exportSelection}} copié dans le presse-papier en PNG\\n({{exportColorScheme}})","fileSaved":"Fichier enregistré.","fileSavedToFilename":"Enregistré sous {filename}","canvas":"canevas","selection":"sélection","pasteAsSingleElement":"Utiliser {{shortcut}} pour coller comme un seul élément,\\nou coller dans un éditeur de texte existant","unableToEmbed":"Intégrer cet URL n\'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche","unrecognizedLinkFormat":"Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d\'intégration fournie par le site source"},"colors":{"transparent":"Transparent","black":"Noir","white":"Blanc","red":"Rouge","pink":"Rose","grape":"Mauve","violet":"Violet","gray":"Gris","blue":"Bleu","cyan":"Cyan","teal":"Turquoise","green":"Vert","yellow":"Jaune","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Toutes vos données sont sauvegardées en local dans votre navigateur.","center_heading_plus":"Vouliez-vous plutôt aller à Excalidraw+ à la place ?","menuHint":"Exportation, préférences, langues, ..."},"defaults":{"menuHint":"Exportation, préférences et plus...","center_heading":"Diagrammes. Rendus. Simples.","toolbarHint":"Choisissez un outil et commencez à dessiner !","helpHint":"Raccourcis et aide"}},"colorPicker":{"mostUsedCustomColors":"Couleurs personnalisées les plus fréquemment utilisées","colors":"Couleurs","shades":"Nuances","hexCode":"Code hex","noShades":"Aucune nuance disponible pour cette couleur"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exporter en image","button":"Exporter en image","description":"Exporter les données de la scène comme une image que vous pourrez importer ultérieurement."},"saveToDisk":{"title":"Sauvegarder sur le disque","button":"Sauvegarder sur le disque","description":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exporter vers Excalidraw+","description":"Enregistrer la scène dans votre espace de travail Excalidraw+."}},"modal":{"loadFromFile":{"title":"Charger depuis un fichier","button":"Charger depuis un fichier","description":"Charger depuis un fichier va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."},"shareableLink":{"title":"Charger depuis un lien","button":"Remplacer mon contenu","description":"Charger un dessin externe va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/gl-ES-json-861f534b46c0db1fa8db.js b/public/excalidraw/excalidraw-assets-dev/locales/gl-ES-json-861f534b46c0db1fa8db.js new file mode 100644 index 0000000..d1a40fb --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/gl-ES-json-861f534b46c0db1fa8db.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/gl-ES-json"],{ + +/***/ "../../locales/gl-ES.json": +/*!********************************!*\ + !*** ../../locales/gl-ES.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar coma texto sen formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Engadir elemento á selección","moveCanvas":"Mover o lenzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar no portapapeis como PNG","copyAsSvg":"Copiar no portapapeis como SVG","copyText":"Copia no portapapeis como texto","bringForward":"Traer cara adiante","sendToBack":"Enviar cara atrás","bringToFront":"Traer á fronte","sendBackward":"Enviar ao fondo","delete":"Borrar","copyStyles":"Copiar estilo","pasteStyles":"Pegar estilo","stroke":"Trazo","background":"Fondo","fill":"Recheo","strokeWidth":"Largo do trazo","strokeStyle":"Estilo do trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Liña de trazos","strokeStyle_dotted":"Liña de puntos","sloppiness":"Estilo de trazo","opacity":"Opacidade","textAlign":"Aliñar texto","edges":"Bordos","sharp":"Agudo","round":"Redondo","arrowheads":"Puntas de frecha","arrowhead_none":"Ningunha","arrowhead_arrow":"Frecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño da fonte","fontFamily":"Tipo de fonte","addWatermark":"Engadir \\"Feito con Excalidraw\\"","handDrawn":"Debuxado a man","normal":"Normal","code":"Código","small":"Pequeno","medium":"Mediano","large":"Grande","veryLarge":"Moi grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Raiado transversal","thin":"Estreito","bold":"Groso","left":"Esquerda","center":"Centrado","right":"Dereita","extraBold":"Moi groso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nome do arquivo","colorPicker":"Selector de cor","canvasColors":"Usado en lenzo","canvasBackground":"Fondo do lenzo","drawingCanvas":"Lenzo de debuxo","layers":"Capas","actions":"Accións","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sen título","name":"Nome","yourName":"O teu nome","madeWithExcalidraw":"Feito con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Engadir á biblioteca","removeFromLibrary":"Eliminar da biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Aliñamento","alignTop":"Aliñamento superior","alignBottom":"Aliñamento inferior","alignLeft":"Aliñar a esquerda","alignRight":"Aliñar a dereita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuír horizontalmente","distributeVertically":"Distribuír verticalmente","flipHorizontal":"Virar horizontalmente","flipVertical":"Virar verticalmente","viewMode":"Modo de visualización","share":"Compartir","showStroke":"Mostrar selector de cores do trazo","showBackground":"Mostrar selector de cores do fondo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Persoal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Diminuír tamaño da fonte","increaseFontSize":"Aumentar o tamaño da fonte","unbindText":"Desvincular texto","bindText":"Ligar o texto ao contedor","createContainerFromText":"Envolver o texto nun contedor","link":{"edit":"Editar ligazón","editEmbed":"","create":"Crear ligazón","createEmbed":"","label":"Ligazón","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar liña","exit":"Saír do editor de liñas"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Aínda non hai elementos engadidos...","hint_emptyLibrary":"Seleccione un elemento no lenzo para engadilo aquí, ou instale unha biblioteca dende o repositorio público, como se detalla a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento do lenzo para engadilo aquí."},"buttons":{"clearReset":"Limpar o lenzo","exportJSON":"Exportar a arquivo","exportImage":"Exportar imaxe...","export":"Gardar en...","copyToClipboard":"Copiar ao portapapeis","save":"Gardar no ficheiro actual","saveAs":"Gardar como","load":"Abrir","getShareableLink":"Obter unha ligazón que se poida compartir","close":"Pechar","selectLanguage":"Seleccionar idioma","scrollBackToContent":"Volver ao contido","zoomIn":"Ampliar","zoomOut":"Reducir","resetZoom":"Reiniciar zoom","menu":"Menú","done":"Feito","edit":"Editar","undo":"Desfacer","redo":"Refacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nova sala","fullScreen":"Pantalla completa","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Saír do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Faga clic para interactuar"},"alerts":{"clearReset":"Isto limpará todo o lenzo. Estás seguro?","couldNotCreateShareableLink":"Non se puido crear unha ligazón para compartir.","couldNotCreateShareableLinkTooBig":"Non se puido crear a ligazón para compartir: a escena é demasiado grande","couldNotLoadInvalidFile":"Non se puido cargar o ficheiro non válido","importBackendFailed":"A importación dende o backend fallou.","cannotExportEmptyCanvas":"Non se pode exportar un lenzo baleiro.","couldNotCopyToClipboard":"Non se puido copiar ao portapapeis.","decryptFailed":"Non se poideron descifrar os datos.","uploadedSecurly":"A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poden ler o contido.","loadSceneOverridePrompt":"A carga dun debuxo externo substituirá o contido existente. Desexa continuar?","collabStopOverridePrompt":"Deter a sesión, sobrescribirá o seu debuxo local previamente almacenado. Está seguro?\\n\\n(Se quere manter o seu debuxo local, simplemente peche a lapela do navegador.)","errorAddingToLibrary":"Non se puido engadir o elemento á biblioteca","errorRemovingFromLibrary":"Non se puido eliminar o elemento da biblioteca","confirmAddLibrary":"Isto engadirá {{numShapes}} forma(s) a túa biblioteca. Estás seguro?","imageDoesNotContainScene":"Esta imaxe non parece conter ningún dato da escena. Activou a inserción de escenas durante a exportación?","cannotRestoreFromImage":"Non se puido restaurar a escena dende este arquivo de imaxe","invalidSceneUrl":"Non se puido importar a escena dende a URL proporcionada. Ou ben está malformada ou non contén un JSON con información válida para Excalidraw.","resetLibrary":"Isto limpará a súa biblioteca. Está seguro?","removeItemsFromsLibrary":"Eliminar {{count}} elemento(s) da biblioteca?","invalidEncryptionKey":"A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.","collabOfflineWarning":"Non hai conexión a Internet dispoñible.\\nOs teus cambios non serán gardados!"},"errors":{"unsupportedFileType":"Tipo de ficheiro non soportado.","imageInsertError":"Non se puido inserir a imaxe. Probe de novo máis tarde...","fileTooBig":"O ficheiro é demasiado grande. O tamaño máximo permitido é {{maxSize}}.","svgImageInsertError":"Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.","importLibraryError":"Non se puido cargar a biblioteca","collabSaveFailed":"Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","collabSaveFailed_sizeExceeded":"Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Inserir imaxe","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Frecha","line":"Liña","freedraw":"Debuxar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta seleccionada activa despois de debuxar","penMode":"Modo lapis - evitar o contacto","link":"Engadir/ Actualizar ligazón para a forma seleccionada","eraser":"Goma de borrar","frame":"","embeddable":"Inserir na web","laser":"Punteiro láser","hand":"Man (ferramenta de desprazamento)","extraTools":"Máis ferramentas"},"headings":{"canvasActions":"Accións do lenzo","selectedShapeActions":"Accións da forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover o lenzo, manteña pulsada a roda do rato ou a barra de espazo mentres arrastra, ou utilice a ferramenta da man","linearElement":"Faga clic para iniciar varios puntos, arrastre para unha sola liña","freeDraw":"Fai clic e arrastra, solta cando acabes","text":"Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección","embeddable":"Faga clic e arrastre para crear un sitio web embebido","text_selected":"Dobre-clic ou prema ENTER para editar o texto","text_editing":"Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición","linearElementMulti":"Faga clic no último punto ou prema Escape ou Enter para rematar","lockAngle":"Pode reducir o ángulo mantendo SHIFT","resize":"Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\\nmanteña ALT para axustalo dende o centro","resizeImage":"Pode axustar o tamaño libremente mantendo SHIFT,\\nmanteña ALT para axustalo dende o centro","rotate":"Podes reducir os ángulos mantendo SHIFT mentres os rotas","lineEditor_info":"Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Prema Suprimir para eliminar o(s) punto(s)\\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos","lineEditor_nothingSelected":"Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),\\nou manteña pulsado Alt e faga clic para engadir novos puntos","placeImage":"Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente","publishLibrary":"Publica a túa propia biblioteca","bindTextToElement":"Prema a tecla enter para engadir texto","deepBoxSelect":"Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre","eraserRevert":"Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación","firefox_clipboard_write":"Esta función pódese activar establecendo a opción \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar as opcións do navegador en Firefox, visita a páxina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Non se pode mostrar a vista previa","canvasTooBig":"Pode que o lenzo sexa demasiado grande.","canvasTooBigTip":"Consello: Probe a acercar un pouco os elementos máis afastados."},"errorSplash":{"headingMain":"Atopouse un erro. Probe ","clearCanvasMessage":"Se recargar non funcionou, probe ","clearCanvasCaveat":" Isto resultará nunha perda do seu traballo ","trackedToSentry":"O erro con identificador {{eventId}} foi rastrexado no noso sistema.","openIssueMessage":"Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.","sceneContent":"Contido da escena:"},"roomDialog":{"desc_intro":"Podes invitar xente a colaborar contigo na túa escena actual.","desc_privacy":"Non te preocupes, a sesión usa cifrado de punto a punto, polo que calquera cousa que debuxes mantense privada. Nin tan sequera o noso servidor será capaz de ver o que fas.","button_startSession":"Comezar sesión","button_stopSession":"Rematar sesión","desc_inProgressIntro":"A sesión de colaboración en directo está agora en progreso.","desc_shareLink":"Comparte esta ligazón con calquera que queiras colaborar:","desc_exitSession":"Deter a sesión desconectarao da sala, pero poderá seguir traballando coa escena de maneira local. Teña en conta que isto non afectará a outras persoas, que poderán seguir colaborando na súa versión.","shareTitle":"Únase a unha sesión de colaboración en directo en Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Gardar no disco","disk_details":"Exporte os datos da escena a un ficheiro que poderás importar máis tarde.","disk_button":"Gardar nun ficheiro","link_title":"Ligazón para compartir","link_details":"Exportar como unha ligazón de só lectura.","link_button":"Exportar a unha ligazón","excalidrawplus_description":"Garde a escena no seu espazo de traballo en Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Non se puido exportar a Excalidraw+ neste momento..."},"helpDialog":{"blog":"Le o noso blog","click":"clic","deepSelect":"Selección en profundidade","deepBoxSelect":"Selección en profundidade dentro da caixa, evitando o arrastre","curvedArrow":"Frecha curva","curvedLine":"Liña curva","documentation":"Documentación","doubleClick":"dobre-clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Encontrou un problema? Envíeo","howto":"Sigue as nosas normas","or":"ou","preventBinding":"Evitar a unión de frechas","tools":"Ferramentas","shortcuts":"Atallos de teclado","textFinish":"Rematar de editar (editor de texto)","textNewLine":"Engadir unha nova liña (editor de texto)","title":"Axuda","view":"Vista","zoomToFit":"Zoom que se axuste a todos os elementos","zoomToSelection":"Zoom á selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover páxina cara enriba/abaixo","movePageLeftRight":"Mover páxina cara a esquerda/dereita"},"clearCanvasDialog":{"title":"Limpar lenzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do elemento","authorName":"Nome do autor","githubUsername":"Nome de usuario en Github","twitterUsername":"Nome de usuario en Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrición da biblioteca","website":"Páxina web","placeholder":{"authorName":"O seu nome ou nome de usuario","libraryName":"Nome da súa biblioteca","libraryDesc":"Descrición da súa biblioteca para axudar a xente a entender o seu uso","githubHandle":"Nome de usuario de GitHub (opcional), así poderás editar a biblioteca unha vez enviada para a súa revisión","twitterHandle":"Nome de usuario en Twitter(opcional), así sabemos a quen darlle crédito cando se lle de promoción a través de Twitter","website":"Ligazón ao teu sitio web persoal ou a outro sitio (opcional)"},"errors":{"required":"Obrigatorio","website":"Introduza unha URL válida"},"noteDescription":"Envíe a súa biblioteca para que sexa incluída no repositorio público de bibliotecaspara que outra xente a poida usar nos seus debuxos.","noteGuidelines":"A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as normas antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario.","noteLicense":"Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a Licenza MIT, o cal significa que, en resumo, calquera pode usalo sen restricións.","noteItems":"Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:","atleastOneLibItem":"Por favor seleccione polo menos un elemento da biblioteca para comezar","republishWarning":"Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estadoaquí"},"confirmDialog":{"resetLibrary":"Restablecer biblioteca","removeItemsFromLib":"Eliminar os elementos seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imaxe","label":{"withBackground":"Fondo","onlySelected":"","darkMode":"Modo escuro","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG ao portapapeis"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar ao portapapeis"}},"encrypted":{"tooltip":"Os teus debuxos están cifrados de punto a punto, polo que os servidores de Excalidraw nunca os verán.","link":"Entrada do blog acerca do cifrado de punto a punto en Excalidraw"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Faga clic para copiar","versionNotAvailable":"Versión non dispoñible","width":"Ancho"},"toast":{"addedToLibrary":"Engadido á biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado ao portapapeis.","copyToClipboardAsPng":"Copiar {{exportSelection}} ao portapapeis como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro gardado.","fileSavedToFilename":"Gardado en {filename}","canvas":"lenzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un único elemento\\nou pega nun editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Branco","red":"Vermello","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Marelo","orange":"Laranxa","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda a información é gardada de maneira local no seu navegador.","center_heading_plus":"Queres ir a Excalidraw+ no seu lugar?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias, e máis...","center_heading":"Diagramas. Feito. Sinxelo.","toolbarHint":"Escolle unha ferramenta & Comeza a debuxar!","helpHint":"Atallos & axuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imaxe","button":"Exportar como imaxe","description":""},"saveToDisk":{"title":"Gardar no disco","button":"Gardar no disco","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar dende arquivo","button":"Cargar dende arquivo","description":""},"shareableLink":{"title":"Cargar dende un enlace","button":"Substituír o meu contido","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/he-IL-json-504d78736487793ffccd.js b/public/excalidraw/excalidraw-assets-dev/locales/he-IL-json-504d78736487793ffccd.js new file mode 100644 index 0000000..d71603d --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/he-IL-json-504d78736487793ffccd.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/he-IL-json"],{ + +/***/ "../../locales/he-IL.json": +/*!********************************!*\ + !*** ../../locales/he-IL.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"הדבק","pasteAsPlaintext":"הדבק ללא עיצוב","pasteCharts":"הדבק גרפים","selectAll":"בחר הכל","multiSelect":"הוסף רכיב לבחירה","moveCanvas":"הזז את הקנבס","cut":"גזור","copy":"העתק","copyAsPng":"העתק ללוח כ PNG","copyAsSvg":"העתק ללוח כ SVG","copyText":"העתק ללוח כטקסט","bringForward":"הבא שכבה קדימה","sendToBack":"שלח אחורה","bringToFront":"העבר לחזית","sendBackward":"העבר שכבה אחורה","delete":"מחק","copyStyles":"העתק סגנון","pasteStyles":"הדבק סגנון","stroke":"קו מתאר","background":"רקע","fill":"מילוי","strokeWidth":"עובי קו מתאר","strokeStyle":"סגנון קו המתאר","strokeStyle_solid":"מלא","strokeStyle_dashed":"מקווקו","strokeStyle_dotted":"מנוקד","sloppiness":"רישול","opacity":"אטימות","textAlign":"יישור טקסט","edges":"קצוות","sharp":"חד","round":"עגול","arrowheads":"ראשי חצים","arrowhead_none":"ללא","arrowhead_arrow":"חץ","arrowhead_bar":"קצה אנכי","arrowhead_dot":"נקודה","arrowhead_triangle":"משולש","fontSize":"גודל גופן","fontFamily":"גופן","addWatermark":"הוסף \\"נוצר באמצעות Excalidraw\\"","handDrawn":"ציור יד","normal":"רגיל","code":"קוד","small":"קטן","medium":"בינוני","large":"גדול","veryLarge":"גדול מאוד","solid":"מוצק","hachure":"קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה","zigzag":"זיגזג","crossHatch":"קווים מוצלבים שתי וערב","thin":"דק","bold":"מודגש","left":"שמאל","center":"מרכז","right":"ימין","extraBold":"מודגש במיוחד","architect":"ארכיטקט","artist":"אמן","cartoonist":"קריקטוריסט","fileTitle":"שם קובץ","colorPicker":"בוחר צבעים","canvasColors":"בשימוש בקנבס","canvasBackground":"רקע קנבס","drawingCanvas":"קנבס ציור","layers":"שכבות","actions":"פעולות","language":"שפה","liveCollaboration":"התחל שיתוף חי...","duplicateSelection":"שכפל","untitled":"ללא כותרת","name":"שם","yourName":"שמך","madeWithExcalidraw":"נוצר באמצעות Excalidraw","group":"קבץ","ungroup":"פרק קבוצה","collaborators":"שותפים","showGrid":"הצג רשת","addToLibrary":"הוסף לספריה","removeFromLibrary":"הסר מספריה","libraryLoadingMessage":"טוען ספריה…","libraries":"עיין בספריות","loadingScene":"טוען תצוגה…","align":"יישר","alignTop":"יישר למעלה","alignBottom":"יישר למטה","alignLeft":"יישר לשמאל","alignRight":"יישר לימין","centerVertically":"מרכז אנכית","centerHorizontally":"מרכז אופקית","distributeHorizontally":"חלוקה אופקית","distributeVertically":"חלוקה אנכית","flipHorizontal":"הפוך אופקית","flipVertical":"הפוך אנכית","viewMode":"מצב תצוגה","share":"שתף","showStroke":"הצג בוחר צבע מברשת","showBackground":"הצג בוחר צבע רקע","toggleTheme":"שינוי ערכת העיצוב","personalLib":"ספריה פרטית","excalidrawLib":"הספריה של Excalidraw","decreaseFontSize":"הקטן את גודל הגופן","increaseFontSize":"הגדל את גודל הגופן","unbindText":"ביטול קיבוע הטקסט","bindText":"קיבוע הטקסט למיכל","createContainerFromText":"ארוז טקסט במיכל","link":{"edit":"עריכת קישור","editEmbed":"ערוך קישור ושבץ","create":"יצירת קישור","createEmbed":"צור קישור ושבץ","label":"קישור","labelEmbed":"קשר ושבץ","empty":"לא נקבע קישור"},"lineEditor":{"edit":"ערוך קו","exit":"צא מעורך הקו"},"elementLock":{"lock":"נעילה","unlock":"ביטול נעילה","lockAll":"לנעול הכל","unlockAll":"שחרור הכול"},"statusPublished":"פורסם","sidebarLock":"שמור את סרגל הצד פתוח","selectAllElementsInFrame":"בחר את כל האלמנטים במסגרת","removeAllElementsFromFrame":"הסר את כל האלמנטים שבמסגרת","eyeDropper":""},"library":{"noItems":"עוד לא הוספת דברים...","hint_emptyLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן, או שתתקין ספריה מהספריה הציבורית מטה.","hint_emptyPrivateLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן."},"buttons":{"clearReset":"אפס את הקנבאס","exportJSON":"ייצא לקובץ","exportImage":"ייצוא התמונה...","export":"שמור ל...","copyToClipboard":"העתק ללוח","save":"שמור לקובץ נוכחי","saveAs":"שמירה בשם","load":"פתח","getShareableLink":"קבל קישור לשיתוף","close":"סגור","selectLanguage":"בחר שפה","scrollBackToContent":"גלול בחזרה לתוכן","zoomIn":"הגדל","zoomOut":"הקטן","resetZoom":"איפוס זום","menu":"תפריט","done":"בוצע","edit":"ערוך","undo":"בטל","redo":"בצע מחדש","resetLibrary":"איפוס ספריה","createNewRoom":"צור חדר חדש","fullScreen":"מסך מלא","darkMode":"מצב כהה","lightMode":"מצב בהיר","zenMode":"מצב זן","objectsSnapMode":"","exitZenMode":"צא ממצב זן","cancel":"ביטול","clear":"ניקוי","remove":"הסר","embed":"","publishLibrary":"פרסום","submit":"שליחה","confirm":"אשר","embeddableInteractionButton":""},"alerts":{"clearReset":"פעולה זו תנקה את כל הקנבס. אתה בטוח?","couldNotCreateShareableLink":"יצירת קישור לשיתוף נכשל.","couldNotCreateShareableLinkTooBig":"יצירת קישור לשיתוף נכשל: התצוגה גדולה מדי","couldNotLoadInvalidFile":"טעינת קובץ לא תקין נכשלה","importBackendFailed":"ייבוא מהשרת נכשל.","cannotExportEmptyCanvas":"לא ניתן לייצא קנבאס ריק.","couldNotCopyToClipboard":"לא ניתן היה להעתיק ללוח.","decryptFailed":"פיענוח ההצפנה של המידע נכשל.","uploadedSecurly":"ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.","loadSceneOverridePrompt":"טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?","collabStopOverridePrompt":"עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?\\n\\n(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)","errorAddingToLibrary":"לא ניתן להוסיף פריט לספרייה","errorRemovingFromLibrary":"לא ניתן להסיר פריט מהספריה","confirmAddLibrary":"זה יוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?","imageDoesNotContainScene":"נראה שהתמונה לא מכילה מידע על הסצינה. האם אפשרת הטמעת מידע הסצינה בעת השמירה?","cannotRestoreFromImage":"לא הצלחנו לשחזר את הסצנה מקובץ התמונה","invalidSceneUrl":"ייבוא מידע סצנה מהקישור שסופק כשל. או שהוא משובש, או שאינו מכיל מידע של Excalidraw בפורמט JSON.","resetLibrary":"פעולה זו תנקה את כל הספריה שלך. אתה בטוח?","removeItemsFromsLibrary":"מחק {{count}} פריט(ים) מהספריה?","invalidEncryptionKey":"מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.","collabOfflineWarning":"אין חיבור זמין לאינטרנט.\\nהשינויים שלך לא ישמרו!"},"errors":{"unsupportedFileType":"סוג הקובץ אינו נתמך.","imageInsertError":"לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...","fileTooBig":"הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.","svgImageInsertError":"לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.","failedToFetchImage":"","invalidSVGString":"SVG שגוי.","cannotResolveCollabServer":"לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.","importLibraryError":"לא ניתן היה לטעון את הספריה","collabSaveFailed":"לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","collabSaveFailed_sizeExceeded":"לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"בחירה","image":"הוספת תמונה","rectangle":"מלבן","diamond":"יהלום","ellipse":"אליפסה","arrow":"חץ","line":"קו","freedraw":"צייר","text":"טקסט","library":"ספריה","lock":"השאר את הכלי הנבחר פעיל גם לאחר סיום הציור","penMode":"מצב עט - מנע נגיעה","link":"הוספה/עדכון קישור של הצורה שנבחרה","eraser":"מחק","frame":"","embeddable":"","laser":"","hand":"יד (כלי הזזה)","extraTools":""},"headings":{"canvasActions":"פעולות קנבאס","selectedShapeActions":"פעולות על הצורות שנבחרו","shapes":"צורות"},"hints":{"canvasPanning":"כדי להזיז את הקנבס, החזק את גלגל העכבר לחוץ או את מקש הרווח לחוץ תוך כדי גרירה, או השתמש בכלי היד","linearElement":"לחץ להתחלת מספר נקודות, גרור לקו יחיד","freeDraw":"לחץ וגרור, שחרר כשסיימת","text":"טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה","embeddable":"","text_selected":"לחץ לחיצה כפולה או הקש על אנטר לעריכת הטקסט","text_editing":"כדי לסיים את העריכה לחץ על מקש Escape או על Ctrl (Cmd במחשבי אפל) ומקש Enter","linearElementMulti":"הקלק על הנקודה האחרונה או הקש Escape או Enter לסיום","lockAngle":"ניתן להגביל את הזוויות על ידי החזקה של מקש ה- SHIFT","resize":"ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,\\nהחזק ALT בשביל לשנות גודל ביחס למרכז","resizeImage":"אתה יכול לשנות את הגודל בחופשיות על ידי החזקת מקש SHIFT,\\nהחזק את מקש ALT כדי לבצע שינוי גודל מהמרכז","rotate":"ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב","lineEditor_info":"החזק Ctrl / Cmd ובצע לחיצה כפולה או לחץ Ctrl / Cmd + Enter לעריכת נקודות","lineEditor_pointSelected":"לחץ Delete למחיקת נקודה/ות,\\nCtrl / Cmd + D לשכפול, או גרור להזזה","lineEditor_nothingSelected":"בחר נקודה כדי לערוך (החזק SHIFT לבחירת כמה),\\nאו החזק Alt והקלק להוספת נקודות חדשות","placeImage":"הקלק להנחת התמונה, או הקלק וגרור להגדרת הגודל שלו ידנית","publishLibrary":"פרסם ספריה משלך","bindTextToElement":"הקש Enter כדי להוספת טקסט","deepBoxSelect":"החזק Ctrl / Cmd לבחירה עמוקה ולמניעת גרירה","eraserRevert":"החזק Alt להחזרת רכיבים מסומנים למחיקה","firefox_clipboard_write":"יכולות זה ניתנת להפעלה על ידי שינוי הדגל של \\"dom.events.asyncClipboard.clipboardItem\\" למצב \\"true\\". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.","disableSnapping":""},"canvasError":{"cannotShowPreview":"לא ניתן להראות תצוגה מקדימה","canvasTooBig":"הקנבס עלול להיות גדול מדי.","canvasTooBigTip":"טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני."},"errorSplash":{"headingMain":"","clearCanvasMessage":"אם טעינה מחדש לא עובדת, נסה ","clearCanvasCaveat":" זה יגרום לאובדן העבודה ","trackedToSentry":"","openIssueMessage":"","sceneContent":"תוכן הקנבאס:"},"roomDialog":{"desc_intro":"אתה יכול להזמין אנשים לקנבאס הנוכחי שלך לעבודה משותפת.","desc_privacy":"אל דאגה, השיתוף מוצפן מקצה לקצה, כך שכל מה שתצייר ישאר פרטי. אפילו השרתים שלנו לא יוכלו לראות את מה שאתה ממציא.","button_startSession":"התחל שיתוף","button_stopSession":"הפסק שיתוף","desc_inProgressIntro":"שיתוף חי פעיל כרגע.","desc_shareLink":"שתף את הקישור עם כל מי שאתה מעוניין לעבוד אתו:","desc_exitSession":"עצירת השיתוף תנתק אותך מהחדר, אבל עדיין תוכל להמשיך לעבוד על הקנבאס, מקומית. שים לב שזה לא ישפיע על אנשים אחרים, והם עדיין יוכלו לבצע שיתוף עם הגרסה שלהם.","shareTitle":"הצטרף לשיתוף לעבודה משותפת חיה, בזמן אמת, על גבי Excalidraw"},"errorDialog":{"title":"שגיאה"},"exportDialog":{"disk_title":"שמור לכונן","disk_details":"ייצא מידע של הקנבאס לקובץ שתוכל לייבא אחר כך.","disk_button":"שמירה לקובץ","link_title":"קבל קישור לשיתוף","link_details":"ייצוא כקישור לקריאה בלבד.","link_button":"ייצוא לקישור","excalidrawplus_description":"שמור את הקנבאס לסביבת העבודה שלך ב- +Excalidraw.","excalidrawplus_button":"ייצוא","excalidrawplus_exportError":"לא הצלחתי לייצא ל- +Excalidraw כרגע..."},"helpDialog":{"blog":"קרא את הבלוג שלנו","click":"קליק","deepSelect":"בחירה עמוקה","deepBoxSelect":"בחירה עמוקה בתוך קופסה ומניעת גרירה","curvedArrow":"חץ מעוגל","curvedLine":"קו מעוגל","documentation":"תיעוד","doubleClick":"לחיצה כפולה","drag":"גרור","editor":"עורך","editLineArrowPoints":"","editText":"","github":"מצאת בעיה? דווח","howto":"עקוב אחר המדריכים שלנו","or":"או","preventBinding":"למנוע נעיצת חיצים","tools":"כלים","shortcuts":"קיצורי מקלדת","textFinish":"סיים עריכה (עורך טקסט)","textNewLine":"הוסף שורה חדשה (עורך טקסט)","title":"עזרה","view":"תצוגה","zoomToFit":"זום להתאמת כל האלמנטים למסך","zoomToSelection":"התמקד בבחירה","toggleElementLock":"נעילה/ביטול הנעילה של הרכיבים הנבחרים","movePageUpDown":"זוז עמוד למעלה/למטה","movePageLeftRight":"זוז עמוד שמאלה/ימינה"},"clearCanvasDialog":{"title":"ניקוי הקנבס"},"publishDialog":{"title":"פרסם ספריה","itemName":"שם הפריט","authorName":"שם היוצר","githubUsername":"שם המשתמש שלך ב-GitHub","twitterUsername":"שם המשתמש שלך ב-Twitter","libraryName":"שם הספריה","libraryDesc":"תיאור הספריה","website":"אתר","placeholder":{"authorName":"שמך או שם המשתמש שלך","libraryName":"תנו שם לספריה","libraryDesc":"תיאור של הספריה שלך כדי לסייע למשתמשים להבין את השימוש בה","githubHandle":"כינוי GitHub (לא חובה), כדי שתוכל לערוך את הספרית לאחר שנשלחה לבדיקה","twitterHandle":"שם משתמש טוויטר (לא חובה), כדי שנדע למי לתת קרדיט כשאנחנו מפרסמים בטוויטר","website":"קישור לאתר הפרטי שלך או לכל מקום אחר (אופציונאלי)"},"errors":{"required":"נדרש","website":"הזינו כתובת URL תקינה"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:","atleastOneLibItem":"אנא בחר לפחות פריט אחד מספריה כדי להתחיל","republishWarning":"הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים."},"publishSuccessDialog":{"title":"הספריה הוגשה","content":"תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום"},"confirmDialog":{"resetLibrary":"איפוס ספריה","removeItemsFromLib":"הסר את הפריטים הנבחרים מהספריה"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"הציורים שלך מוצפנים מקצה לקצה כך שהשרתים של Excalidraw לא יראו אותם לעולם.","link":"פוסט בבלוג על הצפנה מקצה לקצב ב-Excalidraw"},"stats":{"angle":"זווית","element":"רכיב","elements":"רכיבים","height":"גובה","scene":"תצוגה","selected":"נבחר","storage":"אחסון","title":"סטטיסטיקות לחנונים","total":"סה״כ","version":"גרסה","versionCopy":"לחץ להעתקה","versionNotAvailable":"הגרסה אינה זמינה","width":"רוחב"},"toast":{"addedToLibrary":"נוסף לספריה","copyStyles":"סגנונות הועתקו.","copyToClipboard":"הועתק ללוח.","copyToClipboardAsPng":"{{exportSelection}} הועתקה ללוח כ-PNG\\n({{exportColorScheme}})","fileSaved":"קובץ נשמר.","fileSavedToFilename":"נשמר לקובץ {filename}","canvas":"קנבאס","selection":"בחירה","pasteAsSingleElement":"השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,\\nאו הדבק לתוך עורך טקסט קיים","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"שקוף","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"כל המידע שלח נשמר מקומית בדפדפן.","center_heading_plus":"אתה רוצה ללכת אל Excalidraw+ במקום?","menuHint":"ייצוא, העדפות, שפות, ..."},"defaults":{"menuHint":"ייצוא, העדפות, ועוד...","center_heading":"איורים. נעשים. פשוטים.","toolbarHint":"בחר כלי & והתחל לצייר!","helpHint":"קיצורים & עזרה"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/hi-IN-json-82d988431011c330242a.js b/public/excalidraw/excalidraw-assets-dev/locales/hi-IN-json-82d988431011c330242a.js new file mode 100644 index 0000000..d6417f6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/hi-IN-json-82d988431011c330242a.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/hi-IN-json"],{ + +/***/ "../../locales/hi-IN.json": +/*!********************************!*\ + !*** ../../locales/hi-IN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"चिपकाएँ","pasteAsPlaintext":"सादे पाठ के रूप में चिपकाएं","pasteCharts":"चार्ट चिपकाएँ","selectAll":"सभी चुनें","multiSelect":"आकार को चयन में जोड़ें","moveCanvas":"कैनवास को स्थानांतरित करें","cut":"काटें","copy":"प्रतिलिपि","copyAsPng":"क्लिपबोर्ड पर कॉपी करें ,पीएनजी के रूप में","copyAsSvg":"क्लिपबोर्ड पर कॉपी करें,एसवीजी के रूप में","copyText":"लेखन के रूप में पटल पर कॉपी करें","bringForward":"सामने लाएं","sendToBack":"पीछे भेजें","bringToFront":"सामने लाएँ","sendBackward":"पीचे भीजे","delete":"मिटाए","copyStyles":"कॉपी स्टाइल","pasteStyles":"स्टाइल पेस्ट करें","stroke":"रेखा","background":"पृष्ठभूमि","fill":"भरें","strokeWidth":"रेखा की चौड़ाई","strokeStyle":"स्ट्रोक का आकार","strokeStyle_solid":"ठोस","strokeStyle_dashed":"डैश","strokeStyle_dotted":"बिंदीदार","sloppiness":"बेढ़ंगापन","opacity":"अपारदर्शिता","textAlign":"टेक्स्ट संरेखन","edges":"किनारा","sharp":"नुकीला","round":"गोल","arrowheads":"तीर शीर्ष","arrowhead_none":"कोई भी नहीं","arrowhead_arrow":"तीर","arrowhead_bar":"बार","arrowhead_dot":"बिंदु","arrowhead_triangle":"त्रिकोण","fontSize":"फ़ॉन्ट का आकार","fontFamily":"फ़ॉन्ट का परिवार","addWatermark":"ऐड \\"मेड विथ एक्सकैलिडराव\\"","handDrawn":"हाथ से बनाया हुआ","normal":"साधारण","code":"कोड","small":"छोटा","medium":"मध्यम","large":"बड़ा","veryLarge":"बहुत बड़ा","solid":"दृढ़","hachure":"हैशूर","zigzag":"तेढ़ी मेढ़ी","crossHatch":"क्रॉस हैच","thin":"पतला","bold":"मोटा","left":"बाएं","center":"मध्य","right":"दाएँ","extraBold":"बहुत मोटा","architect":"वास्तुकार","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फ़ाइल का नाम","colorPicker":"रंग चयन","canvasColors":"कॅनवास पर प्रयोगित","canvasBackground":"कैनवास बैकग्राउंड","drawingCanvas":"कैनवास बना रहे हैं","layers":"परतें","actions":"कार्रवाई","language":"भाषा","liveCollaboration":"जीवंत सहयोग...","duplicateSelection":"डुप्लिकेट","untitled":"अशीर्षित","name":"नाम","yourName":"आपका नाम","madeWithExcalidraw":"मेड विथ एक्सकैलिडराव","group":"समूह चयन","ungroup":"समूह चयन असमूहीकृत करें","collaborators":"सहयोगी","showGrid":"ग्रिड दिखाएं","addToLibrary":"लाइब्रेरी से जोड़ें","removeFromLibrary":"लाइब्रेरी से निकालें","libraryLoadingMessage":"लाइब्रेरी खुल रही है","libraries":"लाइब्रेरी ब्राउज़ करें","loadingScene":"दृश्य खुल रहा है","align":"संरेखित करें","alignTop":"ऊपर संरेखित करें","alignBottom":"नीचे संरेखित करें","alignLeft":"बायें संरेखित करें","alignRight":"दायें संरेखित करें","centerVertically":"लंबवत केन्द्रित","centerHorizontally":"क्षैतिज केन्द्रित","distributeHorizontally":"क्षैतिज रूप से वितरित करें","distributeVertically":"खड़ी रूप से वितरित करें","flipHorizontal":"दायें बायें पलटे","flipVertical":"ऊपर नीचे पलटे","viewMode":"अलग अलग देखें","share":"शेयर करें","showStroke":"","showBackground":"पृष्ठभूमि रंग वरक़ दिखाये","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"आकार घटाइऐ","increaseFontSize":"फ़ॉन्ट आकार बढ़ाएँ","unbindText":"","bindText":"लेखन को कोश से जोड़े","createContainerFromText":"मूलपाठ कंटेनर में मोड के दिखाए","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेखा संपादित करे","exit":"रेखा संपादक के बाहर"},"elementLock":{"lock":"ताले में रखें","unlock":"ताले से बाहर","lockAll":"सब ताले के अंदर रखे","unlockAll":"सब ताले के बाहर निकाले"},"statusPublished":"प्रकाशित","sidebarLock":"साइडबार खुला रखे.","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलक से रंग चुने"},"library":{"noItems":"अभी तक कोई आइटम जोडा नहीं गया.","hint_emptyLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने, अथवा जन कोष से एक संग्रह नीचे स्थापित करें.","hint_emptyPrivateLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने."},"buttons":{"clearReset":"कैनवास रीसेट करें","exportJSON":"","exportImage":"प्रतिमा निर्यात करे...","export":"यंहा सुरक्षित करे...","copyToClipboard":"क्लिपबोर्ड पर प्रतिलिपि बनाएँ","save":"","saveAs":"सेव करे इस तरह","load":"खोलें","getShareableLink":"साझा करने योग्य लिंक प्राप्त करें","close":"बंद करें","selectLanguage":"भाषा चुनें","scrollBackToContent":"सामग्री पर वापस स्क्रॉल करें","zoomIn":"बड़ा करें","zoomOut":"छोटा करें","resetZoom":"ज़ूम रीसेट करें","menu":"मेन्यू","done":"समाप्त","edit":"संशोधन करें","undo":"पूर्ववत् करें","redo":"फिर से करें","resetLibrary":"","createNewRoom":"एक नया कमरा बनाएं","fullScreen":"पूरी स्क्रीन","darkMode":"डार्क मोड","lightMode":"लाइट मोड","zenMode":"ज़ेन मोड","objectsSnapMode":"वस्तुओं से पकड़े","exitZenMode":"जेन मोड से बाहर निकलें","cancel":"","clear":"साफ़ करे","remove":"हटाएं","embed":"","publishLibrary":"प्रकाशित करें","submit":"प्रस्तुत करे","confirm":"पुष्टि करें","embeddableInteractionButton":""},"alerts":{"clearReset":"इससे पूरा कैनवास साफ हो जाएगा। क्या आपको यकीन है?","couldNotCreateShareableLink":"साझा करने योग्य लिंक नहीं बनाया जा सका।","couldNotCreateShareableLinkTooBig":"लिंक शेयर नहीं कर सकता: दृश्य बहुत बड़ा","couldNotLoadInvalidFile":"अमान्य फ़ाइल लोड नहीं की जा सकी","importBackendFailed":"बैकएंड से आयात करना विफल रहा।","cannotExportEmptyCanvas":"खाली कैनवास निर्यात नहीं कर सकता।","couldNotCopyToClipboard":"क्लिपबोर्ड पर कॉपी नहीं किया जा सका","decryptFailed":"डेटा को डिक्रिप्ट नहीं किया जा सका।","uploadedSecurly":"अपलोड को एंड-टू-एंड एन्क्रिप्शन के साथ सुरक्षित किया गया है, जिसका मतलब है कि एक्सक्लूसिव सर्वर और थर्ड पार्टी कंटेंट नहीं पढ़ सकते हैं।","loadSceneOverridePrompt":"लोड हो रहा है बाहरी ड्राइंग आपके मौजूदा सामग्री को बदल देगा। क्या आप जारी रखना चाहते हैं?","collabStopOverridePrompt":"चालू सत्र समाप्ति से आपका संग्रहित पूर्व स्थानीय अधिलेखन नष्ट होकर पुनः अधिलेखित होगा, क्या आपको यक़ीन हैं? ( यदी आपको पूर्व स्थापित अधिलेखन सुरक्षित चाहिये तो बस ब्राउज़र टैब बंद करे)","errorAddingToLibrary":"संग्रह में जोडा न जा सका","errorRemovingFromLibrary":"संग्रह से हटाया नहीं जा सका","confirmAddLibrary":"लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या","imageDoesNotContainScene":"ऐसा लगता है कि इस छवि में कोई दृश्य डेटा नहीं है। क्या आपने निर्यात के दौरान दृश्य एम्बेडिंग अनुमतित की है?","cannotRestoreFromImage":"छवि फ़ाइल बहाल दृश्य नहीं है","invalidSceneUrl":"दिये गये युआरेल से दृश्य आयात नहीं किया जा सका. यह या तो अनुचित है, या इसमें उचित Excalidraw JSON डेटा नहीं है।","resetLibrary":"यह पूरा संग्रह रिक्त करेगा. क्या आपको यक़ीन हैं?","removeItemsFromsLibrary":"{{count}} वस्तु(यें) संग्रह से हटायें?","invalidEncryptionKey":"कूटलेखन कुंजी 22 अक्षरों की होनी चाहिये, इसलिये जीवंत सहयोग अक्षम हैं","collabOfflineWarning":"कोई इंटरनेट कनेक्शन उपलब्ध नहीं है।\\nआपके बदलाव सहेजे नहीं जाएंगे!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार","imageInsertError":"छवि सम्मिलित नहीं की जा सकी. पुनः प्रयत्न करे...","fileTooBig":"फ़ाइल ज़रूरत से ज़्यादा बड़ी हैं. अधिकतम अनुमित परिमाण {{maxSize}} हैं","svgImageInsertError":"एसवीजी छवि सम्मिलित नहीं कर सके, एसवीजी रचना अनुचित हैं","failedToFetchImage":"","invalidSVGString":"अनुचित SVG","cannotResolveCollabServer":"कॉलेब सर्वर से कनेक्शन नहीं हो पा रहा. कृपया पृष्ठ को पुनः लाने का प्रयास करे.","importLibraryError":"संग्रह प्रतिष्ठापित नहीं किया जा सका","collabSaveFailed":"किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","brave_measure_text_error":{"line1":"लगता है कि आप Brave ब्राउज़र का उपयोग कर रहे और साथ में आक्रामक उँगलियो के छाप का चयन किया हुवा है","line2":"यह आपके चित्रों के पाठ तत्वोंको खंडित कर सकता हैं","line3":"हमें आपसे ठोस आग्रह है की आप सेट्टिंग में इस विकल्प का चयन ना करे. इस अनुक्रम का पालन करके इसका पता लगा सकते हैं","line4":"यदि इस सेटिंग्स को अक्षम करने पर भी पृष्ठ ठीक नहीं दिखता हो तो, हमारे GitHub पर एक मुद्दा प्रस्तुत करे, या हमें डिस्कोर्ड पर लिखित सम्पर्क करें"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"चयन","image":"छवि सम्मिलित करें","rectangle":"आयात","diamond":"तिर्यग्वर्ग","ellipse":"दीर्घवृत्त","arrow":"तीर","line":"रेखा","freedraw":"चित्रांतित करे","text":"पाठ","library":"लाइब्रेरी","lock":"ड्राइंग के बाद चयनित टूल को सक्रिय रखें","penMode":"पेन का मोड - स्पर्श टाले","link":"","eraser":"रबड़","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हाथ ( खिसकाने का औज़ार)","extraTools":""},"headings":{"canvasActions":"कैनवास क्रिया","selectedShapeActions":"चयनित आकृति क्रियाएं","shapes":"आकृतियाँ"},"hints":{"canvasPanning":"कैनवास को सरकाने के लिए, ड्रैग करते समय माउस व्हील को पकड़े रखे या स्पेसबार को दबाए रखे, अथवा हाथ वाले औज़ार का उपयोग करें","linearElement":"कई बिंदुओं को शुरू करने के लिए क्लिक करें, सिंगल लाइन के लिए खींचें","freeDraw":"क्लिक करें और खींचें। समाप्त करने के लिए, छोड़ो","text":"आप चयन टूल से कहीं भी डबल-क्लिक करके टेक्स्ट जोड़ सकते हैं","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"अंतिम बिंदु पर क्लिक करें या समाप्त होने के लिए एस्केप या एंटर दबाएं","lockAngle":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को मोड़ सकते हैं","resize":"आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,\\nकेंद्र से आकार बदलने के लिए ALT दबाए रखें","resizeImage":"","rotate":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं","lineEditor_info":"बिंदुओं को सम्पादित करने के लिए CtrlOrCmd को दबायें रखते हुये डबल क्लिक करे, अथवा CtrlOrCmd + Enter साथ दबाये","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"मिटाने के लिए चुने हुए चीजों को ना चुनने के लिए Alt साथ में दबाए","firefox_clipboard_write":"\\"dom.events.asyncClipboard.clipboardItem\\" फ़्लैग को \\"true\\" पर सेट करके इस सुविधा को संभवतः सक्षम किया जा सकता है। Firefox में ब्राउज़र फ़्लैग बदलने के लिए, \\"about:config\\" पृष्ठ पर जाएँ।","disableSnapping":"स्नैपिंग को निष्क्रिय करने के लिए CtrlOrCmd दबाए रखें"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन नहीं दिखा सकते हैं","canvasTooBig":"कैनवास बहुत बड़ा","canvasTooBigTip":"कैनवास बहुत बड़ा टिप"},"errorSplash":{"headingMain":"एक त्रुटि का सामना करना पड़ा। प्रयत्न ","clearCanvasMessage":"यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें ","clearCanvasCaveat":" इससे काम का नुकसान होगा ","trackedToSentry":"पहचानकर्ता के साथ त्रुटि {{eventId}} हमारे सिस्टम पर नज़र रखी गई थी।","openIssueMessage":"हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।","sceneContent":"दृश्य सामग्री:"},"roomDialog":{"desc_intro":"आप अपने वर्तमान दृश्य के लोगों को अपने साथ सहयोग करने के लिए आमंत्रित कर सकते हैं।","desc_privacy":"चिंता न करें, सत्र अंत-से-अंत एन्क्रिप्शन का उपयोग करता है, इसलिए आप जो भी ड्रा करेंगे वह निजी रहेगा। यहां तक कि हमारा सर्वर भी नहीं देख पाएगा कि आप क्या कर रहे हैं।","button_startSession":"सत्र प्रारंभ करें","button_stopSession":"सत्र रुकें","desc_inProgressIntro":"लाइव सहयोग सत्र अब जारी है।","desc_shareLink":"इस लिंक को आप जिस किसी के साथ भी सहयोग करना चाहते हैं, उसके साथ साझा करें","desc_exitSession":"सत्र रोकना आपको रूम से बाहर कर देगा, लेकिन आप स्थानीय स्तर पर दृश्य के साथ काम करना जारी रख पाएंगे। ध्यान दें कि यह अन्य लोगों को प्रभावित नहीं करेगा, और वे अभी भी अपने संस्करण पर सहयोग करने में सक्षम होंगे।","shareTitle":""},"errorDialog":{"title":"गलती"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"हमारा ब्लॉग पढे","click":"क्लिक करें","deepSelect":"","deepBoxSelect":"","curvedArrow":"वक्र तीर","curvedLine":"वक्र रेखा","documentation":"","doubleClick":"","drag":"खींचें","editor":"संपादक","editLineArrowPoints":"रेखा/तीर बिंदु सम्पादित करे","editText":"पाठ्य सम्पादित करे/ लेबल जोड़े","github":"मुद्दा मिला? प्रस्तुत करें","howto":"हमारे गाइड का पालन करें","or":"या","preventBinding":"तीर बंधन रोकें","tools":"औज़ार","shortcuts":"कीबोर्ड के शॉर्टकट्स","textFinish":"","textNewLine":"","title":"मदद","view":"दृश्य","zoomToFit":"सभी तत्वों को फिट करने के लिए ज़ूम करें","zoomToSelection":"चयन तक ज़ूम करे","toggleElementLock":"ताले के अंदर/बाहर चुनाव","movePageUpDown":"पृष्ठ ऊपर/नीचे करे","movePageLeftRight":"पृष्ठ बायी/दायी तरफ करे"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":"मान्य URL प्रविष्ट करें"},"noteDescription":"संग्रह सम्मिलित करने हेतु प्रस्तुत करें सार्वजनिक संग्रहालयअन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये","noteGuidelines":"संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें दिशा-निर्देश","noteLicense":"जमा करके, आप सहमत हैं कि संग्रहण को MIT लाइसेंस के तहत प्रकाशित किया जाएगा, जिसका संक्षिप्त अर्थ है कि कोई भी बिना किसी प्रतिबंध के उनका उपयोग कर सकता है।","noteItems":"","atleastOneLibItem":"","republishWarning":"टिप्पणी: कुछ चुने हुवे आइटम पहले ही प्रकाशित/प्रस्तुत किए जा चुके हैं। किसी प्रकाशित संग्रह को अद्यतन करते समय या पहले से प्रस्तुत आइटम को पुन्हा प्रस्तुत करते समय, आप बस उसे केवल अद्यतन करें ।"},"publishSuccessDialog":{"title":"","content":"{{authorName}} धन्यवाद. आपका संग्रहण समीक्षा के लिए दर्ज हो चुका है. समीक्षा स्थिति यहाँजान सकते हैं."},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"आपके चित्र अंत-से-अंत एन्क्रिप्टेड हैं, इसलिए एक्सक्लूसिव्रॉव के सर्वर उन्हें कभी नहीं देखेंगे।","link":""},"stats":{"angle":"कोण","element":"एलिमेंट","elements":"एलिमेंट","height":"ऊंचाई","scene":"दृश्य","selected":"चयनित","storage":"संग्रह","title":"बेवकूफ के लिए आँकड़े","total":"कुल","version":"संस्करण","versionCopy":"काॅपी करने के लिए क्लिक करें","versionNotAvailable":"संस्करण उपलब्ध नहीं है","width":"चौड़ाई"},"toast":{"addedToLibrary":"","copyStyles":"काॅपी कीए स्टाइल","copyToClipboard":"क्लिपबोर्ड में कॉपी कीए","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"एक अवयव के रूप में चिपकाने के लिए {{shortcut}} का उपयोग करें,\\nया किसी मौजूदा पाठ संपादक में चिपकायें","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"काला","white":"सफ़ेद","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जामुनी","gray":"गहरा","blue":"नीला","cyan":"आसमानी","teal":"हरा-नीला","green":"हरा","yellow":"पीला","orange":"नारंगी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"आपका सर्व डेटा ब्राउज़र के भीतर स्थानिक जगह पे सुरक्षित किया गया.","center_heading_plus":"बजाय आपको Excalidraw+ पर जाना है?","menuHint":"निर्यात, पसंद, भाषायें, ..."},"defaults":{"menuHint":"निर्यात, पसंद, और भी...","center_heading":"चित्रांकन। बनाया गया। सरल।","toolbarHint":"एक औजार चुने और चित्रकारी प्रारंभ करे!","helpHint":"शॉर्ट्कट और सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"अधिकांश उपयोगित रंग","colors":"रंग","shades":"छाया","hexCode":"हेक्स कोड","noShades":"इस रंग की कोई छाया उपलब्ध नहीं हैं"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूप में निर्यात करे","button":"छवि स्वरूप निर्यात करे","description":"दृष्य डेटा छवि स्वरूप में निर्यात करे, उस स्वरूप से आप उसे पुनः आयात कर सकते हो"},"saveToDisk":{"title":"डिस्क में सम्हाले","button":"डिस्क में सम्हाले","description":"दृष्य डेटा बाहरी फ़ाइल में निर्यात करे, जहाँसे आप उसे पुनः आयात कर सकते हो"},"excalidrawPlus":{"title":"एक्षकालीड्रॉ+","button":"एक्षकालीड्रॉ+ में निर्यात करे","description":"दृष्य को आपके एक्षकालीड्रॉ+ के कर्यस्थल में सम्हाले"}},"modal":{"loadFromFile":{"title":"फ़ाइल से लोड करें:","button":"फ़ाइल से लोड करें:","description":"फ़ाइल से लोड करने पर यह आपके कार्य की जगह लेलेगा

आपकी ड्रॉइंग निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हैं"},"shareableLink":{"title":"लिंक से लोड करें:","button":"इस जगह प्रतिस्थापित करे","description":"बाहर का चित्र लोड करने पर यह आपके कार्य की जगह लेलेगा

आप आपकी ड्रॉइंग पहले निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हों."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/hu-HU-json-d4150250980011726fd9.js b/public/excalidraw/excalidraw-assets-dev/locales/hu-HU-json-d4150250980011726fd9.js new file mode 100644 index 0000000..0c4a2a2 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/hu-HU-json-d4150250980011726fd9.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/hu-HU-json"],{ + +/***/ "../../locales/hu-HU.json": +/*!********************************!*\ + !*** ../../locales/hu-HU.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Beillesztés","pasteAsPlaintext":"","pasteCharts":"Grafikon beillesztése","selectAll":"Összes kijelölése","multiSelect":"Elem hozzáadása a kijelöléshez","moveCanvas":"Vászon mozgatása","cut":"Kivágás","copy":"Másolás","copyAsPng":"Vágólapra másolás mint PNG","copyAsSvg":"Vágólapra másolás mint SVG","copyText":"","bringForward":"Előrébb hozás","sendToBack":"Hátraküldés","bringToFront":"Előrehozás","sendBackward":"Hátrébb küldés","delete":"Törlés","copyStyles":"Stílus másolása","pasteStyles":"Stílus beillesztése","stroke":"Körvonal","background":"Háttér","fill":"Kitöltés","strokeWidth":"Körvonal vastagsága","strokeStyle":"Körvonal stílusa","strokeStyle_solid":"Kitöltött","strokeStyle_dashed":"Szaggatott","strokeStyle_dotted":"Pontozott","sloppiness":"Stílus","opacity":"Áttetszőség","textAlign":"Szöveg igazítása","edges":"Szélek","sharp":"Éles","round":"Kerek","arrowheads":"Nyílhegyek","arrowhead_none":"Nincs","arrowhead_arrow":"Nyíl","arrowhead_bar":"Oszlop","arrowhead_dot":"Pont","arrowhead_triangle":"Háromszög","fontSize":"Betűméret","fontFamily":"Betűkészlet család","addWatermark":"Add hozzá, hogy \\"Excalidraw-val készült\\"","handDrawn":"Kézzel rajzolt","normal":"Normál","code":"Kód","small":"Kicsi","medium":"Közepes","large":"Nagy","veryLarge":"Nagyon nagy","solid":"Kitöltött","hachure":"Vonalkázott","zigzag":"","crossHatch":"Keresztcsíkozott","thin":"Vékony","bold":"Félkövér","left":"Bal","center":"Közép","right":"Jobb","extraBold":"Extra Félkövér","architect":"Tervezői","artist":"Művészi","cartoonist":"Karikatúrás","fileTitle":"Fájlnév","colorPicker":"Színválasztó","canvasColors":"Rajzvászonon használt","canvasBackground":"Vászon háttérszíne","drawingCanvas":"Rajzvászon","layers":"Rétegek","actions":"Műveletek","language":"Nyelv","liveCollaboration":"","duplicateSelection":"Duplikálás","untitled":"Névtelen","name":"Név","yourName":"Neved","madeWithExcalidraw":"Excalidraw-val készült","group":"Csoportosítás","ungroup":"Csoportbontás","collaborators":"Közreműködők","showGrid":"Rács megjelenítése","addToLibrary":"Hozzáadás a könyvtárhoz","removeFromLibrary":"Eltávólítás a könyvtárból","libraryLoadingMessage":"Könyvtár betöltése…","libraries":"Könyvtárak böngészése","loadingScene":"Jelenet betöltése…","align":"Igazítás","alignTop":"Felülre igazítás","alignBottom":"Alulra igazítás","alignLeft":"Balra igazítás","alignRight":"Jobbra igazítás","centerVertically":"Függőlegesen középre igazított","centerHorizontally":"Vízszintesen középre igazított","distributeHorizontally":"Vízszintes elosztás","distributeVertically":"Függőleges elosztás","flipHorizontal":"Vízszintes tükrözés","flipVertical":"Függőleges tükrözés","viewMode":"Nézet","share":"Megosztás","showStroke":"Körvonal színválasztó megjelenítése","showBackground":"Háttérszín-választó megjelenítése","toggleTheme":"Téma váltása","personalLib":"Személyes könyvtár","excalidrawLib":"Excalidraw könyvtár","decreaseFontSize":"Betűméret csökkentése","increaseFontSize":"Betűméret növelése","unbindText":"Szövegkötés feloldása","bindText":"","createContainerFromText":"","link":{"edit":"Hivatkozás szerkesztése","editEmbed":"","create":"Hivatkozás létrehozása","createEmbed":"","label":"Hivatkozás","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Vászon törlése","exportJSON":"Exportálás fájlba","exportImage":"","export":"","copyToClipboard":"Vágólapra másolás","save":"Mentés az aktuális fájlba","saveAs":"Mentés másként","load":"","getShareableLink":"Megosztható link létrehozása","close":"Bezárás","selectLanguage":"Nyelv kiválasztása","scrollBackToContent":"Visszagörgetés a tartalomhoz","zoomIn":"Nagyítás","zoomOut":"Kicsinyítés","resetZoom":"Nagyítás alaphelyzetbe","menu":"Menü","done":"Kész","edit":"Szerkesztés","undo":"Vissza","redo":"Újra","resetLibrary":"Könyvtár alaphelyzetbe állítása","createNewRoom":"Új szoba létrehozása","fullScreen":"Teljes képernyő","darkMode":"Sötét mód","lightMode":"Világos mód","zenMode":"Letisztult mód","objectsSnapMode":"","exitZenMode":"Kilépés a letisztult módból","cancel":"Mégsem","clear":"Kiűrítés","remove":"Eltávolítás","embed":"","publishLibrary":"Közzététel","submit":"Elküldés","confirm":"Megerősítés","embeddableInteractionButton":""},"alerts":{"clearReset":"Ez a művelet törli a vászont. Biztos benne?","couldNotCreateShareableLink":"Nem sikerült megosztható linket létrehozni.","couldNotCreateShareableLinkTooBig":"Nem sikerült megosztható linket látrehozni: túl nagy a jelenet","couldNotLoadInvalidFile":"Nem sikerült betölteni a helytelen fájlt","importBackendFailed":"Nem sikerült betölteni a szerverről.","cannotExportEmptyCanvas":"Üres vászont nem lehet exportálni.","couldNotCopyToClipboard":"","decryptFailed":"Nem sikerült visszafejteni a titkosított adatot.","uploadedSecurly":"A feltöltést végpontok közötti titkosítással biztosítottuk, ami azt jelenti, hogy egy harmadik fél nem tudja megnézni a tartalmát, beleértve az Excalidraw szervereit is.","loadSceneOverridePrompt":"A betöltött külső rajz felül fogja írnia meglévőt. Szeretnéd folytatni?","collabStopOverridePrompt":"A munkamenet leállítása felül fogja írni az előzőleg helyben tárolt rajzot. Biztosan ezt akarod?\\n(Ha meg akarod tartani a helyben tárolt rajzot, egyszerűen csak zárd be a böngésző fület)","errorAddingToLibrary":"A tétel nem addható hozzá a könyvtárhoz","errorRemovingFromLibrary":"A tétel nem távolítható el a könyvtárból","confirmAddLibrary":"Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?","imageDoesNotContainScene":"Úgy tűnik, hogy ez a kép nem tartalmaz jelenetadatokat. Engedélyezted a jelenetbeágyazást az exportálás során?","cannotRestoreFromImage":"A jelenet visszaállítása nem sikerült ebből a kép fájlból","invalidSceneUrl":"Nem sikerült importálni a jelenetet a megadott URL-ről. Rossz formátumú, vagy nem tartalmaz érvényes Excalidraw JSON-adatokat.","resetLibrary":"Ezzel törlöd a könyvtárát. biztos vagy ebben?","removeItemsFromsLibrary":"{{count}} elemet törölsz a könyvtárból?","invalidEncryptionKey":"A titkosítási kulcsnak 22 karakterből kell állnia. Az élő együttműködés le van tiltva.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nem támogatott fájltípus.","imageInsertError":"Nem sikerült beszúrni a képet. Próbáld újra később...","fileTooBig":"A fájl túl nagy. A megengedett maximális méret {{maxSize}}.","svgImageInsertError":"Nem sikerült beszúrni az SVG-képet. Az SVG szintaktika érvénytelennek tűnik.","failedToFetchImage":"","invalidSVGString":"Érvénytelen SVG.","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Kijelölés","image":"Kép beszúrása","rectangle":"Téglalap","diamond":"Rombusz","ellipse":"Ellipszis","arrow":"Nyíl","line":"Vonal","freedraw":"Rajzolás","text":"Szöveg","library":"Könyvtár","lock":"Rajzolás után az aktív eszközt tartsa kijelölve","penMode":"","link":"Hivatkozás hozzáadása/frissítése a kiválasztott alakzathoz","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Vászon műveletek","selectedShapeActions":"Kijelölt forma műveletei","shapes":"Alakzatok"},"hints":{"canvasPanning":"","linearElement":"Kattintással görbe, az eger húzásával pedig egyenes nyilat rajzolhatsz","freeDraw":"Kattints és húzd, majd engedd el, amikor végeztél","text":"Tipp: A kijelölés eszközzel a dupla kattintás új szöveget hoz létre","embeddable":"","text_selected":"Kattints duplán, vagy nyomj entert a szöveg szerkesztéséhez","text_editing":"Nyomjd meg az Escape vagy a Ctrl/Cmd+ENTER billentyűkombinációt a szerkesztés befejezéséhez","linearElementMulti":"Kattints a következő ív pozíciójára, vagy fejezd be a nyilat az Escape vagy Enter megnyomásával","lockAngle":"A SHIFT billentyű lenyomva tartásával korlátozhatja forgatás szögét","resize":"A SHIFT billentyű lenyomva tartásával az átméretezés megtartja az arányokat,\\naz ALT lenyomva tartásával pedig a középpont egy helyben marad","resizeImage":"A SHIFT billentyű lenyomva tartásával szabadon átméretezheted,\\ntartsd lenyomva az ALT billentyűt a középről való átméretezéshez","rotate":"A SHIFT billentyű lenyomva tartásával korlátozhatja a szögek illesztését","lineEditor_info":"","lineEditor_pointSelected":"Nyomd meg a Törlés gombot a pont(ok) eltávolításához,\\nA Ctrl/Cmd+D a többszörözéshez, vagy húzással mozgathatja","lineEditor_nothingSelected":"Válaszd ki a szerkeszteni kívánt pontot (több kijelöléséhez tartsd lenyomva a SHIFT billentyűt),\\nvagy Alt, és kattintson az új pontok hozzáadásához","placeImage":"Kattints a kép elhelyezéséhez, vagy kattints és méretezd manuálisan","publishLibrary":"Tedd közzé saját könyvtáradat","bindTextToElement":"Nyomd meg az Entert szöveg hozzáadáshoz","deepBoxSelect":"Tartsd lenyomva a Ctrl/Cmd billentyűt a mély kijelöléshez és a húzás megakadályozásához","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Előnézet nem jeleníthető meg","canvasTooBig":"A vászon talán túl nagy.","canvasTooBigTip":"Tipp: próbáld meg a legtávolabbi elemeket közelebb hozni egy máshoz."},"errorSplash":{"headingMain":"Hiba történt. Próbáld ","clearCanvasMessage":"Ha az újratöltés nem működik, próbáld ","clearCanvasCaveat":" Ezzel az eddigi munka elveszik ","trackedToSentry":"A hibakód azonosítóval {{eventId}} nyomon van követve a rendszerünkben.","openIssueMessage":"Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a Kérjük, másolja be az alábbi információkat a GitHub problémába.","sceneContent":"Jelenet tartalma:"},"roomDialog":{"desc_intro":"Meghívhat embereket a jelenlegi jelenetbe, hogy együttműködjenek önnel.","desc_privacy":"Ne aggódj, a munkamenet végpontok közötti titkosítást használ, tehát bármit rajzolsz, privát marad. Még a szerverünkről se lehet belenézni.","button_startSession":"Munkamenet indítása","button_stopSession":"Munkamenet leállítása","desc_inProgressIntro":"Az élő együttműködési munkamenet folyamatban van.","desc_shareLink":"Ossza meg ezt a linket bárkivel, akivel együtt szeretne működni:","desc_exitSession":"Az munkamenet leállítása kilépteti önt a szobából, de folytathatja a munkát a saját gépén. Vegye figyelembe, hogy ez nem érinti más emberek munkáját és ők továbbra is együttműködhetnek a saját változatukon.","shareTitle":"Csatlakozás egy élő együttműködési munkamenethez az Excalidraw-ban"},"errorDialog":{"title":"Hiba"},"exportDialog":{"disk_title":"Mentés lemezre","disk_details":"Exportálja a jelenetadatokat egy fájlba, amelyből később importálhatja.","disk_button":"Mentés fájlba","link_title":"Megosztható hivatkozás","link_details":"Exportálás csak olvasható hivatkozásként.","link_button":"Exportálás hivatkozásba","excalidrawplus_description":"Mentse el a jelenetet az Excalidraw+ munkaterületére.","excalidrawplus_button":"Exportálás","excalidrawplus_exportError":"Jelenleg nem lehet exportálni az Excalidraw+-ba..."},"helpDialog":{"blog":"Olvasd a blogunkat","click":"kattintás","deepSelect":"Mély kijelölés","deepBoxSelect":"Mély kijelölés a dobozon belül, és a húzás megakadályozása","curvedArrow":"Ívelt nyíl","curvedLine":"Ívelt vonal","documentation":"Dokumentáció","doubleClick":"dupla kattintás","drag":"vonszolás","editor":"Szerkesztő","editLineArrowPoints":"","editText":"","github":"Hibát találtál? Küld be","howto":"Kövesd az útmutatóinkat","or":"vagy","preventBinding":"A nyíl ne ragadjon","tools":"","shortcuts":"Gyorsbillentyűk","textFinish":"Szerkesztés befejezése (szöveg)","textNewLine":"Új sor hozzáadása (szöveg)","title":"Segítség","view":"Nézet","zoomToFit":"Az összes elem látótérbe hozása","zoomToSelection":"Kijelölésre nagyítás","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Rajzvászon alaphelyzetbe"},"publishDialog":{"title":"Könyvtár közzététele","itemName":"Tétel neve","authorName":"Szerző neve","githubUsername":"GitHub felhasználónév","twitterUsername":"Twitter felhasználónév","libraryName":"Könyvtár neve","libraryDesc":"Könyvtár leírása","website":"Weboldal","placeholder":{"authorName":"Neved vagy felhasználóneved","libraryName":"A könyvtárad neve","libraryDesc":"A könyvtárad használatát segítő leírás","githubHandle":"GitHub-handle(opcionális), így szerkesztheted a könyvtárat, miután elküldted ellenőrzésre","twitterHandle":"Twitter-felhasználónév (opcionális), így tudjuk, kinek kell jóváírni a Twitteren keresztüli reklámozást","website":"Hivatkozás személyes webhelyedre vagy máshová (nem kötelező)"},"errors":{"required":"Kötelező","website":"Adj meg egy érvényes URL-t"},"noteDescription":"Küld be könyvtáradat, hogy bekerüljön a nyilvános könyvtár tárolóbahogy mások is felhasználhassák a rajzaikban.","noteGuidelines":"A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a segédletet benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges.","noteLicense":"A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre MIT Licensz ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket.","noteItems":"Minden könyvtárelemnek saját nevével kell rendelkeznie, hogy szűrhető legyen. A következő könyvtári tételek kerülnek bele:","atleastOneLibItem":"A kezdéshez válassz ki legalább egy könyvtári elemet","republishWarning":""},"publishSuccessDialog":{"title":"A könyvtár beküldve","content":"Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapototitt"},"confirmDialog":{"resetLibrary":"Könyvtár alaphelyzetbe állítása","removeItemsFromLib":"A kiválasztott elemek eltávolítása a könyvtárból"},"imageExportDialog":{"header":"Kép exportálása","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"A rajzaidat végpontok közötti titkosítással tároljuk, tehát az Excalidraw szervereiről se tud más belenézni.","link":"Blogbejegyzés a végpontok közötti titkosításról az Excalidraw-ban"},"stats":{"angle":"Szög","element":"Elem","elements":"Elemek","height":"Magasság","scene":"Jelenet","selected":"Kijelölt","storage":"Tárhely","title":"Statisztikák","total":"Összesen","version":"Verzió","versionCopy":"Kattints a másoláshoz","versionNotAvailable":"A verzió nem elérhető","width":"Szélesség"},"toast":{"addedToLibrary":"Könyvtárhoz adva","copyStyles":"Másolt stílusok.","copyToClipboard":"Vágólapra másolva.","copyToClipboardAsPng":"Az {{exportSelection}} PNG formátumban a vágólapra másolva \\n({{exportColorScheme}})","fileSaved":"Fájl elmentve.","fileSavedToFilename":"Mentve mint {filename}","canvas":"rajzvászon","selection":"kijelölés","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Átlátszó","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/id-ID-json-82e300d4fe1e87adba9b.js b/public/excalidraw/excalidraw-assets-dev/locales/id-ID-json-82e300d4fe1e87adba9b.js new file mode 100644 index 0000000..86d5c94 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/id-ID-json-82e300d4fe1e87adba9b.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/id-ID-json"],{ + +/***/ "../../locales/id-ID.json": +/*!********************************!*\ + !*** ../../locales/id-ID.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Tempel","pasteAsPlaintext":"Tempel sebagai teks biasa","pasteCharts":"Tempel diagram","selectAll":"Pilih semua","multiSelect":"Tambahkan elemen ke pilihan","moveCanvas":"Pindahkan kanvas","cut":"Potong","copy":"Salin","copyAsPng":"Salin ke papan klip sebagai PNG","copyAsSvg":"Salin ke papan klip sebagai SVG","copyText":"Salin ke papan klip sebagai teks","bringForward":"Bawa maju","sendToBack":"Kirim ke belakang","bringToFront":"Bawa ke depan","sendBackward":"Kirim mundur","delete":"Hapus","copyStyles":"Salin gaya","pasteStyles":"Tempelkan gaya","stroke":"Guratan","background":"Latar","fill":"Isian","strokeWidth":"Lebar guratan","strokeStyle":"Gaya guratan","strokeStyle_solid":"Padat","strokeStyle_dashed":"Putus-putus","strokeStyle_dotted":"Titik-titik","sloppiness":"Kecerobohan","opacity":"Keburaman","textAlign":"Perataan teks","edges":"Tepi","sharp":"Tajam","round":"Bulat","arrowheads":"Mata panah","arrowhead_none":"Tidak ada","arrowhead_arrow":"Panah","arrowhead_bar":"Batang","arrowhead_dot":"Titik","arrowhead_triangle":"Segitiga","fontSize":"Ukuran font","fontFamily":"Jenis font","addWatermark":"Tambahkan \\"Dibuat dengan Excalidraw\\"","handDrawn":"Tulisan tangan","normal":"Normal","code":"Kode","small":"Kecil","medium":"Sedang","large":"Besar","veryLarge":"Sangat besar","solid":"Padat","hachure":"Garis-garis","zigzag":"Zigzag","crossHatch":"Asiran silang","thin":"Lembut","bold":"Tebal","left":"Kiri","center":"Tengah","right":"Kanan","extraBold":"Sangat tebal","architect":"Arsitek","artist":"Artis","cartoonist":"Kartunis","fileTitle":"Nama file","colorPicker":"Pilihan Warna","canvasColors":"Digunakan di kanvas","canvasBackground":"Latar Kanvas","drawingCanvas":"Kanvas","layers":"Lapisan","actions":"Aksi","language":"Bahasa","liveCollaboration":"Kolaborasi langsung...","duplicateSelection":"Duplikat","untitled":"Tanpa judul","name":"Nama","yourName":"Nama Anda","madeWithExcalidraw":"Dibuat dengan Excalidraw","group":"Kelompokan pilihan","ungroup":"Pisahkan pilihan","collaborators":"Kolaborator","showGrid":"Tampilkan grid","addToLibrary":"Tambahkan ke pustaka","removeFromLibrary":"Hapus dari pustaka","libraryLoadingMessage":"Memuat pustaka…","libraries":"Telusur pustaka","loadingScene":"Memuat pemandangan…","align":"Perataan","alignTop":"Rata atas","alignBottom":"Rata bawah","alignLeft":"Rata kiri","alignRight":"Rata kanan","centerVertically":"Pusatkan secara vertikal","centerHorizontally":"Pusatkan secara horizontal","distributeHorizontally":"Distribusikan horizontal","distributeVertically":"Distribusikan vertikal","flipHorizontal":"Balikkan horizontal","flipVertical":"Balikkan vertikal","viewMode":"Mode tampilan","share":"Bagikan","showStroke":"Tampilkan garis pengambil warna","showBackground":"Tampilkan latar pengambil warna","toggleTheme":"Ubah tema","personalLib":"Pustaka Pribadi","excalidrawLib":"Pustaka Excalidraw","decreaseFontSize":"Kecilkan ukuran font","increaseFontSize":"Besarkan ukuran font","unbindText":"Lepas teks","bindText":"Kunci teks ke kontainer","createContainerFromText":"Bungkus teks dalam kontainer","link":{"edit":"Edit tautan","editEmbed":"","create":"Buat tautan","createEmbed":"","label":"Tautan","labelEmbed":"","empty":""},"lineEditor":{"edit":"Edit tautan","exit":"Keluar editor garis"},"elementLock":{"lock":"Kunci","unlock":"Lepas","lockAll":"Kunci semua","unlockAll":"Lepas semua"},"statusPublished":"Telah terbit","sidebarLock":"Biarkan sidebar tetap terbuka","selectAllElementsInFrame":"Pilih semua elemen di bingkai","removeAllElementsFromFrame":"Hapus semua elemen dari bingkai","eyeDropper":"Ambil warna dari kanvas"},"library":{"noItems":"Belum ada item yang ditambahkan...","hint_emptyLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini, atau pasang pustaka dari gudang di bawah ini.","hint_emptyPrivateLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini."},"buttons":{"clearReset":"Setel Ulang Kanvas","exportJSON":"Ekspor ke file","exportImage":"Ekspor gambar...","export":"Simpan ke...","copyToClipboard":"Salin ke Papan Klip","save":"Simpan ke file sekarang","saveAs":"Simpan sebagai","load":"Buka","getShareableLink":"Buat Tautan yang Bisa Dibagian","close":"Tutup","selectLanguage":"Pilih bahasa","scrollBackToContent":"Gulir kembali ke konten","zoomIn":"Besarkan","zoomOut":"Kecilkan","resetZoom":"Reset Pembesaran","menu":"Menu","done":"Selesai","edit":"Edit","undo":"Urungkan","redo":"Ulangi","resetLibrary":"Reset pustaka","createNewRoom":"Buat ruang baru","fullScreen":"Layar penuh","darkMode":"Mode gelap","lightMode":"Mode terang","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Keluar dari mode zen","cancel":"Batal","clear":"Hapus","remove":"Hapus","embed":"","publishLibrary":"Terbitkan","submit":"Kirimkan","confirm":"Konfirmasi","embeddableInteractionButton":""},"alerts":{"clearReset":"Ini akan menghapus semua yang ada dikanvas. Apakah kamu yakin ?","couldNotCreateShareableLink":"Tidak bisa membuat tautan yang bisa dibagikan","couldNotCreateShareableLinkTooBig":"Tidak dapat membuat tautan yang dapat dibagikan: pemandangan terlalu besar","couldNotLoadInvalidFile":"Tidak dapat memuat berkas yang tidak valid","importBackendFailed":"Gagal mengimpor dari backend","cannotExportEmptyCanvas":"Tidak bisa mengekspor kanvas kosong","couldNotCopyToClipboard":"Tidak bisa menyalin ke papan klip.","decryptFailed":"Tidak dapat mengdekripsi data.","uploadedSecurly":"Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya","loadSceneOverridePrompt":"Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?","collabStopOverridePrompt":"Menghentikan sesi akan menimpa gambar Anda yang tersimpan secara lokal. Anda yakin?\\n\\n(Jika Anda ingin menyimpan gambar lokal Anda, gantinya cukup tutup tab browser.)","errorAddingToLibrary":"Tidak dapat menambahkan item ke pustaka","errorRemovingFromLibrary":"Tidak dapat membuang item dari pustaka","confirmAddLibrary":"Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?","imageDoesNotContainScene":"Gambar ini sepertinya tidak terdapat data pemandangan. Sudahkah Anda mengaktifkan penyematan pemandangan ketika ekspor?","cannotRestoreFromImage":"Pemandangan tidak dapat dipulihkan dari file gambar ini","invalidSceneUrl":"Tidak dapat impor pemandangan dari URL. Kemungkinan URL itu rusak atau tidak berisi data JSON Excalidraw yang valid.","resetLibrary":"Ini akan menghapus pustaka Anda. Anda yakin?","removeItemsFromsLibrary":"Hapus {{count}} item dari pustaka?","invalidEncryptionKey":"Sandi enkripsi harus 22 karakter. Kolaborasi langsung dinonaktifkan.","collabOfflineWarning":"Tidak ada koneksi internet.\\nPerubahan tidak akan disimpan!"},"errors":{"unsupportedFileType":"Tipe file tidak didukung.","imageInsertError":"Tidak dapat menyisipkan gambar. Coba lagi nanti...","fileTooBig":"File terlalu besar. Ukuran maksimum yang dibolehkan {{maxSize}}.","svgImageInsertError":"Tidak dapat menyisipkan gambar SVG. Markup SVG sepertinya tidak valid.","failedToFetchImage":"","invalidSVGString":"SVG tidak valid.","cannotResolveCollabServer":"Tidak dapat terhubung ke server kolab. Muat ulang laman dan coba lagi.","importLibraryError":"Tidak dapat memuat pustaka","collabSaveFailed":"Tidak dapat menyimpan ke dalam basis data server. Jika masih berlanjut, Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","collabSaveFailed_sizeExceeded":"Tidak dapat menyimpan ke dalam basis data server, tampaknya ukuran kanvas terlalu besar. Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","brave_measure_text_error":{"line1":"Sepertinya Anda menggunkan peramban Brave dengan pengaturan Blokir Fingerprinting yang Agresif diaktifkan.","line2":"Ini dapat membuat Elemen Teks dalam gambar mu.","line3":"Kami sangat menyarankan mematikan pengaturan ini. Anda dapat mengikuti langkah-langkah ini untuk melakukannya.","line4":"Jika mematikan pengaturan ini tidak membenarkan tampilan elemen teks, mohon buka\\nisu di GitHub kami, atau chat kami di Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Pilihan","image":"Sisipkan gambar","rectangle":"Persegi","diamond":"Berlian","ellipse":"Elips","arrow":"Panah","line":"Garis","freedraw":"Gambar","text":"Teks","library":"Pustaka","lock":"Biarkan alat yang dipilih aktif setelah menggambar","penMode":"Mode pena - mencegah sentuhan","link":"Tambah/Perbarui tautan untuk bentuk yang dipilih","eraser":"Penghapus","frame":"Alat bingkai","embeddable":"","laser":"","hand":"Tangan (alat panning)","extraTools":"Alat-alat lain"},"headings":{"canvasActions":"Opsi Kanvas","selectedShapeActions":"Opsi bentuk yang dipilih","shapes":"Bentuk"},"hints":{"canvasPanning":"Untuk memindahkan kanvas, tekan roda mouse atau spacebar sambil menyeret, atau menggunakan alat tangan","linearElement":"Klik untuk memulai banyak poin, seret untuk satu baris","freeDraw":"Klik dan seret, lepaskan jika Anda selesai","text":"Tip: Anda juga dapat menambahkan teks dengan klik ganda di mana saja dengan alat pemilihan","embeddable":"","text_selected":"Klik ganda atau tekan ENTER untuk edit teks","text_editing":"Tekan Escape atau CtrlAtauCmd+ENTER untuk selesai mengedit","linearElementMulti":"Klik pada titik akhir atau tekan Escape atau Enter untuk menyelesaikan","lockAngle":"Anda dapat menjaga sudut dengan menahan SHIFT","resize":"Anda dapat menjaga proposi dengan menekan SHIFT sambil mengubah ukuran,\\ntekan AlT untuk mengubah ukuran dari tengah","resizeImage":"Anda dapat mengubah secara bebas dengan menekan SHIFT,\\nTekan ALT untuk mengubah dari tengah","rotate":"Anda dapat menjaga sudut dengan menahan SHIFT sambil memutar","lineEditor_info":"Tekan Ctrl/Cmd dan Dobel-klik atau tekan Ctrl/Cmd +Enter untuk mengedit poin","lineEditor_pointSelected":"Tekan Delete untuk menghapus titik, Ctrl/Cmd + D untuk menduplikasi, atau seret untuk memindahkan","lineEditor_nothingSelected":"Pilih titik untuk mengedit (tekan SHIFT untuk pilih banyak), atau tekan Alt dan klik untuk tambahkan titik baru","placeImage":"Klik untuk tempatkan gambar, atau klik dan jatuhkan untuk tetapkan ukuran secara manual","publishLibrary":"Terbitkan pustaka Anda","bindTextToElement":"Tekan enter untuk tambahkan teks","deepBoxSelect":"Tekan Ctrl atau Cmd untuk memilih yang di dalam, dan mencegah penggeseran","eraserRevert":"Tahan Alt untuk mengembalikan elemen yang ditandai untuk dihapus","firefox_clipboard_write":"Fitur ini dapat diaktifkan melalui pengaturan flag \\"dom.events.asyncClipboard.clipboardItem\\" ke \\"true\\". Untuk mengganti flag di Firefox, pergi ke laman \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Tidak dapat menampilkan pratinjau","canvasTooBig":"Kanvas mungkin terlalu besar.","canvasTooBigTip":"Tip: coba pindahkan elemen-terjauh lebih dekat bersama."},"errorSplash":{"headingMain":"Mengalami sebuah kesalahan. Cobalah ","clearCanvasMessage":"Jika memuat ulang tidak bekerja, cobalah ","clearCanvasCaveat":" Ini akan menghasilkan hilangnya pekerjaan ","trackedToSentry":"Kesalahan dengan pengidentifikasi {{eventId}} dilacak di sistem kami.","openIssueMessage":"Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.","sceneContent":"Pemandangan konten:"},"roomDialog":{"desc_intro":"Anda dapat mengundang orang ke pemandangan Anda saat ini untuk berkolaborasi dengan Anda.","desc_privacy":"Jangan khawatir, sesi menggunakan enkripsi end-to-end, sehingga apa pun yang Anda gambar akan tetap bersifat pribadi. Bahkan server kami tidak dapat melihat apa yang Anda lakukan.","button_startSession":"Mulai sesi","button_stopSession":"Hentikan sesi","desc_inProgressIntro":"Sesi kolaborasi sedang berlangsung sekarang.","desc_shareLink":"Bagikan tautan ini dengan siapa pun yang Anda inginkan untuk kolaborasi bersama:","desc_exitSession":"Menghentikan sesi akan memutuskan hubungan Anda dari ruangan, tetapi Anda dapat melanjutkan bekerja dengan pemandangan Anda secara lokal. Perhatikan bahwa ini tidak memengaruhi orang lain, dan mereka masih dapat berkolaborasi pada versi mereka.","shareTitle":"Gabung sesi kolaborasi langsung di Excalidraw"},"errorDialog":{"title":"Kesalahan"},"exportDialog":{"disk_title":"Simpan ke disk","disk_details":"Ekspor data pemandangan ke file yang mana Anda dapat impor nanti.","disk_button":"Simpan ke file","link_title":"Tautan","link_details":"Ekspor sebagai tautan yang hanya dibaca.","link_button":"Ekspor ke tautan","excalidrawplus_description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda.","excalidrawplus_button":"Ekspor","excalidrawplus_exportError":"Tidak dapat ekspor ke Excalidraw+ saat ini..."},"helpDialog":{"blog":"Baca blog kami","click":"klik","deepSelect":"Pilih dalam","deepBoxSelect":"Pilih dalam kotak, dan cegah penggeseran","curvedArrow":"Panah lengkung","curvedLine":"Garis lengkung","documentation":"Dokumentasi","doubleClick":"klik-ganda","drag":"seret","editor":"Editor","editLineArrowPoints":"Edit titik garis/panah","editText":"Edit teks / tambah label","github":"Menemukan masalah? Kirimkan","howto":"Ikuti panduan kami","or":"atau","preventBinding":"Cegah pengikatan panah","tools":"Alat","shortcuts":"Pintasan keyboard","textFinish":"Selesai mengedit (editor teks)","textNewLine":"Tambahkan garis baru (editor teks)","title":"Bantuan","view":"Tampilan","zoomToFit":"Perbesar agar sesuai dengan semua elemen","zoomToSelection":"Perbesar ke seleksi","toggleElementLock":"Kunci/lepas seleksi","movePageUpDown":"Pindah halaman keatas/kebawah","movePageLeftRight":"Pindah halaman kebawah/keatas"},"clearCanvasDialog":{"title":"Hapus kanvas"},"publishDialog":{"title":"Terbitkan pustaka","itemName":"Nama item","authorName":"Nama pembuat","githubUsername":"Nama pengguna github","twitterUsername":"Nama pengguna Twitter","libraryName":"Nama Pustaka","libraryDesc":"Deskripsi pustaka","website":"Situs Web","placeholder":{"authorName":"Nama atau nama pengguna Anda","libraryName":"Nama dari pustaka Anda","libraryDesc":"Deskripsi pustaka Anda untuk membantu orang mengerti penggunaannya","githubHandle":"Akun GitHub (opsional), jadi Anda dapat mengubah pustaka ketika diserahkan untuk review","twitterHandle":"Nama pengguna Twitter (opsional), jadi kami tahu siapa dipuji ketika mempromosikannya melalui Twitter","website":"Hubungkan ke situs personal Anda atau lainnya (opsional)"},"errors":{"required":"Dibutuhkan","website":"Masukkan URL valid"},"noteDescription":"Kirimkan pustaka Anda untuk disertakan di repositori pustaka publikuntuk orang lain menggunakannya dalam gambar mereka.","noteGuidelines":"Pustaka butuh disetujui secara manual terlebih dahulu. Baca pedoman sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan.","noteLicense":"Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah Lisensi MIT, yang artinya siapa pun dapat menggunakannya tanpa batasan.","noteItems":"Setiap item pustaka harus memiliki nama, sehingga bisa disortir. Item pustaka di bawah ini akan dimasukan:","atleastOneLibItem":"Pilih setidaknya satu item pustaka untuk mulai","republishWarning":"Catatan: beberapa item yang dipilih telah ditandai sebagai sudah dipublikasikan/diserahkan. Anda hanya dapat menyerahkan kembali item-item ketika memperbarui pustaka atau pengumpulan."},"publishSuccessDialog":{"title":"Pustaka telah dikirm","content":"Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnyadi sini"},"confirmDialog":{"resetLibrary":"Reset pustaka","removeItemsFromLib":"Hapus item yang dipilih dari pustaka"},"imageExportDialog":{"header":"Ekspor gambar","label":{"withBackground":"Latar","onlySelected":"Hanya yang dipilih","darkMode":"Mode gelap","embedScene":"Sematkan pemandangan","scale":"Skala","padding":"Lapisan"},"tooltip":{"embedScene":"Data pemandangan akan disimpan dalam file PNG/SVG yang diekspor sehingga pemandangan itu dapat dipulihkan darinya.\\nAkan membesarkan ukuran file yang diekspor."},"title":{"exportToPng":"Ekspor ke PNG","exportToSvg":"Ekspor ke SVG","copyPngToClipboard":"Salin PNG ke papan klip"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Salin ke papan klip"}},"encrypted":{"tooltip":"Gambar anda terenkripsi end-to-end sehingga server Excalidraw tidak akan pernah dapat melihatnya.","link":"Pos blog tentang enkripsi ujung ke ujung di Excalidraw"},"stats":{"angle":"Sudut","element":"Elemen","elements":"Elemen","height":"Tinggi","scene":"Pemandangan","selected":"Terpilih","storage":"Penyimpanan","title":"Statistik untuk nerd","total":"Total","version":"Versi","versionCopy":"Klik untuk salin","versionNotAvailable":"Versi tidak tersedia","width":"Lebar"},"toast":{"addedToLibrary":"Tambahkan ke pustaka","copyStyles":"Gaya tersalin.","copyToClipboard":"Tersalin ke papan klip.","copyToClipboardAsPng":"Tersalin {{exportSelection}} ke clipboard sebagai PNG\\n({{exportColorScheme}})","fileSaved":"File tersimpan.","fileSavedToFilename":"Disimpan ke {filename}","canvas":"kanvas","selection":"pilihan","pasteAsSingleElement":"Gunakan {{shortcut}} untuk menempelkan sebagai satu elemen,\\natau tempelkan ke teks editor yang ada","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparan","black":"Hitam","white":"Putih","red":"Merah","pink":"Pink","grape":"Ungu","violet":"Violet","gray":"Abu-abu","blue":"Biru","cyan":"Cyan","teal":"Teal","green":"Hijau","yellow":"Kuning","orange":"Jingga","bronze":"Tembaga"},"welcomeScreen":{"app":{"center_heading":"Semua data Anda disimpan secara lokal di peramban Anda.","center_heading_plus":"Apa Anda ingin berpindah ke Excalidraw+?","menuHint":"Ekspor, preferensi, bahasa, ..."},"defaults":{"menuHint":"Ekspor, preferensi, dan selebihnya...","center_heading":"Diagram. Menjadi. Mudah.","toolbarHint":"Pilih alat & mulai menggambar!","helpHint":"Pintasan & bantuan"}},"colorPicker":{"mostUsedCustomColors":"Warna yang sering dipakai","colors":"Warna","shades":"Nuansa","hexCode":"Kode hexa","noShades":"Tidak ada nuansa untuk warna ini"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Ekspor sebagai gambar","button":"Ekspor sebagai gambar","description":"Ekspor data pemandangan sebagai gambar yang dapat anda impor nanti."},"saveToDisk":{"title":"Simpan ke disk","button":"Simpan ke disk","description":"Ekspor data pemandangan ke file yang dapat Anda dapat impor nanti."},"excalidrawPlus":{"title":"Excalidraw+","button":"Ekspor ke Excalidraw+","description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda."}},"modal":{"loadFromFile":{"title":"Muat dari file","button":"Muat dari file","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."},"shareableLink":{"title":"Muat dari link","button":"Ganti konten saya","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/it-IT-json-6ecc9aec005faab90f41.js b/public/excalidraw/excalidraw-assets-dev/locales/it-IT-json-6ecc9aec005faab90f41.js new file mode 100644 index 0000000..3cc98d7 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/it-IT-json-6ecc9aec005faab90f41.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/it-IT-json"],{ + +/***/ "../../locales/it-IT.json": +/*!********************************!*\ + !*** ../../locales/it-IT.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Incolla","pasteAsPlaintext":"Incolla come testo normale","pasteCharts":"Incolla grafici","selectAll":"Seleziona tutto","multiSelect":"Aggiungi elemento alla selezione","moveCanvas":"Sposta tela","cut":"Taglia","copy":"Copia","copyAsPng":"Copia negli appunti come PNG","copyAsSvg":"Copia negli appunti come SVG","copyText":"Copia negli appunti come testo","bringForward":"Porta avanti","sendToBack":"Manda in fondo","bringToFront":"Porta in cima","sendBackward":"Manda dietro","delete":"Elimina","copyStyles":"Copia stili","pasteStyles":"Incolla stili","stroke":"Tratto","background":"Sfondo","fill":"Riempimento","strokeWidth":"Spessore del tratto","strokeStyle":"Stile del tratto","strokeStyle_solid":"Pieno","strokeStyle_dashed":"Tratteggiato","strokeStyle_dotted":"Punteggiato","sloppiness":"Imprecisione","opacity":"Opacità","textAlign":"Allineamento del testo","edges":"Bordi","sharp":"Acuto","round":"Rotondo","arrowheads":"Punta della freccia","arrowhead_none":"Nessuno","arrowhead_arrow":"Freccia","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triangolo","fontSize":"Dimensione carattere","fontFamily":"Carattere","addWatermark":"Aggiungi \\"Creato con Excalidraw\\"","handDrawn":"A mano libera","normal":"Normale","code":"Codice","small":"Piccolo","medium":"Medio","large":"Grande","veryLarge":"Molto grande","solid":"Pieno","hachure":"Tratteggio obliquo","zigzag":"Zig zag","crossHatch":"Tratteggio incrociato","thin":"Sottile","bold":"Grassetto","left":"Sinistra","center":"Centro","right":"Destra","extraBold":"Extra Grassetto","architect":"Architetto","artist":"Artista","cartoonist":"Fumettista","fileTitle":"Nome del file","colorPicker":"Selettore colore","canvasColors":"Usato su tela","canvasBackground":"Sfondo tela","drawingCanvas":"Area di disegno","layers":"Livelli","actions":"Azioni","language":"Lingua","liveCollaboration":"Collaborazione dal vivo...","duplicateSelection":"Duplica","untitled":"Senza titolo","name":"Nome","yourName":"Il vostro nome","madeWithExcalidraw":"Creato con Excalidraw","group":"Crea gruppo da selezione","ungroup":"Dividi gruppo da selezione","collaborators":"Collaboratori","showGrid":"Visualizza griglia","addToLibrary":"Aggiungi alla libreria","removeFromLibrary":"Rimuovi dalla libreria","libraryLoadingMessage":"Caricamento libreria…","libraries":"Sfoglia librerie","loadingScene":"Caricamento della scena…","align":"Allinea","alignTop":"Allinea in alto","alignBottom":"Allinea in basso","alignLeft":"Allinea a sinistra","alignRight":"Allinea a destra","centerVertically":"Centra Verticalmente","centerHorizontally":"Centra orizzontalmente","distributeHorizontally":"Distribuisci orizzontalmente","distributeVertically":"Distribuisci verticalmente","flipHorizontal":"Capovolgi orizzontalmente","flipVertical":"Capovolgi verticalmente","viewMode":"Modalità visualizzazione","share":"Condividi","showStroke":"Mostra selettore colore del tratto","showBackground":"Mostra selettore colore di sfondo","toggleTheme":"Cambia tema","personalLib":"Libreria Personale","excalidrawLib":"Libreria di Excalidraw","decreaseFontSize":"Riduci dimensione dei caratteri","increaseFontSize":"Aumenta la dimensione dei caratteri","unbindText":"Scollega testo","bindText":"Associa il testo al container","createContainerFromText":"Avvolgi il testo in un container","link":{"edit":"Modifica link","editEmbed":"Modifica collegamento e incorpora","create":"Crea link","createEmbed":"Crea collegamento e incorpora","label":"Link","labelEmbed":"Collega & incorpora","empty":"Nessun collegamento impostato"},"lineEditor":{"edit":"Modifica linea","exit":"Esci dall\'editor di linea"},"elementLock":{"lock":"Blocca","unlock":"Sblocca","lockAll":"Blocca tutto","unlockAll":"Sblocca tutto"},"statusPublished":"Pubblicato","sidebarLock":"Mantieni aperta la barra laterale","selectAllElementsInFrame":"Seleziona tutti gli elementi nel riquadro","removeAllElementsFromFrame":"Rimuovi tutti gli elementi dal riquadro","eyeDropper":"Scegli il colore della tela"},"library":{"noItems":"Nessun elemento ancora aggiunto...","hint_emptyLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui, o installa una libreria dal repository pubblico qui sotto.","hint_emptyPrivateLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui."},"buttons":{"clearReset":"Svuota la tela","exportJSON":"Esporta su file","exportImage":"Esporta immagine...","export":"Salva in...","copyToClipboard":"Copia negli appunti","save":"Salva sul file corrente","saveAs":"Salva con nome","load":"Apri","getShareableLink":"Ottieni link condivisibile","close":"Chiudi","selectLanguage":"Seleziona lingua","scrollBackToContent":"Scorri indietro fino al contenuto","zoomIn":"Aumenta ingrandimento","zoomOut":"Riduci ingrandimento","resetZoom":"Ripristina ingrandimento","menu":"Menù","done":"Fatto","edit":"Modifica","undo":"Annulla","redo":"Ripeti","resetLibrary":"Ripristina libreria","createNewRoom":"Crea nuova stanza","fullScreen":"Schermo intero","darkMode":"Tema scuro","lightMode":"Tema chiaro","zenMode":"Modalità Zen","objectsSnapMode":"Aggancia agli oggetti","exitZenMode":"Uscire dalla modalità zen","cancel":"Annulla","clear":"Cancella","remove":"Rimuovi","embed":"Attiva/disattiva incorporamento","publishLibrary":"Pubblica","submit":"Invia","confirm":"Conferma","embeddableInteractionButton":"Clicca per interagire"},"alerts":{"clearReset":"Questa azione cancellerà l\'intera tela. Sei sicuro?","couldNotCreateShareableLink":"Non riesco a creare un link condivisibile.","couldNotCreateShareableLinkTooBig":"Impossibile creare il link condivisibile: la scena è troppo grande","couldNotLoadInvalidFile":"Impossibile caricare un file no valido","importBackendFailed":"Importazione dal server fallita.","cannotExportEmptyCanvas":"Non è possibile esportare una tela vuota.","couldNotCopyToClipboard":"Impossibile copiare negli appunti.","decryptFailed":"Impossibile decriptare i dati.","uploadedSecurly":"L\'upload è stato protetto con la crittografia end-to-end, il che significa che il server Excalidraw e terze parti non possono leggere il contenuto.","loadSceneOverridePrompt":"Se carichi questo disegno esterno, sostituirà quello che hai. Vuoi continuare?","collabStopOverridePrompt":"Interrompere la sessione sovrascriverà il precedente disegno memorizzato localmente. Sei sicuro?\\n\\n(Se vuoi mantenere il tuo disegno locale, chiudi semplicemente la scheda del browser.)","errorAddingToLibrary":"Impossibile aggiungere l\'elemento alla libreria","errorRemovingFromLibrary":"Impossibile rimuovere l\'elemento dalla libreria","confirmAddLibrary":"Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?","imageDoesNotContainScene":"Questa immagine pare non contenere alcuna scena. Avevi incluso la scena durante l\'esportazione?","cannotRestoreFromImage":"Impossibile ripristinare la scena da questo file immagine","invalidSceneUrl":"Impossibile importare la scena dall\'URL fornito. Potrebbe essere malformato o non contenere dati JSON Excalidraw validi.","resetLibrary":"Questa azione cancellerà l\'intera libreria. Sei sicuro?","removeItemsFromsLibrary":"Eliminare {{count}} elementi dalla libreria?","invalidEncryptionKey":"La chiave di cifratura deve essere composta da 22 caratteri. La collaborazione live è disabilitata.","collabOfflineWarning":"Nessuna connessione internet disponibile.\\nLe tue modifiche non verranno salvate!"},"errors":{"unsupportedFileType":"Tipo di file non supportato.","imageInsertError":"Non è stato possibile inserire l\'immagine. Riprova più tardi...","fileTooBig":"Il file è troppo grande. La dimensione massima consentita è {{maxSize}}.","svgImageInsertError":"Impossibile inserire l\'immagine SVG. Il markup SVG non sembra corretto.","failedToFetchImage":"","invalidSVGString":"SVG non valido.","cannotResolveCollabServer":"Impossibile connettersi al server di collab. Ricarica la pagina e riprova.","importLibraryError":"Impossibile caricare la libreria","collabSaveFailed":"Impossibile salvare nel database di backend. Se i problemi persistono, dovresti salvare il tuo file localmente per assicurarti di non perdere il tuo lavoro.","collabSaveFailed_sizeExceeded":"Impossibile salvare nel database di backend, la tela sembra essere troppo grande. Dovresti salvare il file localmente per assicurarti di non perdere il tuo lavoro.","brave_measure_text_error":{"line1":"Sembra che tu stia utilizzando il browser Brave con l\'impostazione Blocco aggressivo delle impronte digitali abilitata.","line2":"Ciò potrebbe causare la rottura degli Elementi di testo nei tuoi disegni.","line3":"Consigliamo vivamente di disabilitare questa impostazione. Puoi seguire questi passaggi su come farlo.","line4":"Se la disattivazione di questa impostazione non risolve la visualizzazione degli elementi di testo, apri un problema sul nostro GitHub o scrivici su Discord"},"libraryElementTypeError":{"embeddable":"Gli elementi incorporabili non possono essere aggiunti alla libreria.","image":"Il supporto per l\'aggiunta d\'immagini alla libreria verrà aggiunto a breve!"}},"toolBar":{"selection":"Selezione","image":"Inserisci immagine","rectangle":"Rettangolo","diamond":"Rombo","ellipse":"Ellisse","arrow":"Freccia","line":"Linea","freedraw":"Disegno","text":"Testo","library":"Libreria","lock":"Mantieni lo strumento selezionato attivo dopo aver disegnato","penMode":"Modalità penna - previene il tocco","link":"Aggiungi/ aggiorna il link per una forma selezionata","eraser":"Gomma","frame":"Strumento riquadro","embeddable":"Incorporamento Web","laser":"Puntatore laser","hand":"Mano (strumento di panoramica)","extraTools":"Altri strumenti"},"headings":{"canvasActions":"Azioni sulla Tela","selectedShapeActions":"Impostazioni della forma selezionata","shapes":"Forme"},"hints":{"canvasPanning":"Per spostare la tela, tieni premuta la rotellina del mouse o la barra spaziatrice mentre trascini oppure usa lo strumento mano","linearElement":"Clicca per iniziare una linea in più punti, trascina per singola linea","freeDraw":"Clicca e trascina, rilascia quando avrai finito","text":"Suggerimento: puoi anche aggiungere del testo facendo doppio clic ovunque con lo strumento di selezione","embeddable":"Fare click e trascina per creare un incorporamento web","text_selected":"Fai doppio click o premi INVIO per modificare il testo","text_editing":"Premi ESC o CtrlOCmd+INVIO per completare le modifiche","linearElementMulti":"Clicca sull\'ultimo punto o premi Esc o Invio per finire","lockAngle":"Puoi limitare l\'angolo tenendo premuto SHIFT","resize":"Per vincolare le proporzioni, tieni premuto MAIUSC durante il ridimensionamento;\\nper ridimensionare dal centro, tieni premuto ALT","resizeImage":"Puoi ridimensionare liberamente tenendo premuto SHIFT,\\ntieni premuto ALT per ridimensionare dal centro","rotate":"Puoi mantenere gli angoli tenendo premuto SHIFT durante la rotazione","lineEditor_info":"Tieni premuto Ctrl o Cmd e doppio clic oppure premi Ctrl o Cmd + Invio per modificare i punti","lineEditor_pointSelected":"Premi Elimina per rimuovere il punto(i),\\nCtrlOCmd+D per duplicare o trascinare per spostare","lineEditor_nothingSelected":"Seleziona un punto da modificare (tieni premuto MAIUSC per selezionare più punti),\\noppure tieni premuto Alt e fai clic per aggiungere nuovi punti","placeImage":"Fai click per posizionare l\'immagine, o click e trascina per impostarne la dimensione manualmente","publishLibrary":"Pubblica la tua libreria","bindTextToElement":"Premi invio per aggiungere il testo","deepBoxSelect":"Tieni premuto CtrlOCmd per selezionare in profondità e per impedire il trascinamento","eraserRevert":"Tieni premuto Alt per ripristinare gli elementi contrassegnati per l\'eliminazione","firefox_clipboard_write":"Questa funzione può essere abilitata impostando il flag \\"dom.events.asyncClipboard.clipboardItem\\" su \\"true\\". Per modificare i flag del browser in Firefox, visitare la pagina \\"about:config\\".","disableSnapping":"Tieni premuto Ctrl o Cmd per disabilitare lo snap"},"canvasError":{"cannotShowPreview":"Impossibile visualizzare l\'anteprima","canvasTooBig":"La tela potrebbe essere troppo grande.","canvasTooBigTip":"Suggerimento: prova a spostare gli elementi più lontani più vicini tra loro."},"errorSplash":{"headingMain":"Si è verificato un errore. Provare ","clearCanvasMessage":"Se ricaricare non funziona, prova ","clearCanvasCaveat":" Questo risulterà nella perdita del lavoro ","trackedToSentry":"L\'errore con identificativo {{eventId}} è stato tracciato nel nostro sistema.","openIssueMessage":"Siamo stati molto cauti nel non includere informazioni della scena nell\'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.","sceneContent":"Contenuto della scena:"},"roomDialog":{"desc_intro":"Puoi invitare persone nella tua scena attuale per collaborare con te.","desc_privacy":"Non preoccuparti, la sessione utilizza la crittografia end-to-end, quindi qualsiasi cosa disegni rimarrà privata. Nemmeno il nostro server sarà in grado di vedere cosa hai creato.","button_startSession":"Avvia sessione","button_stopSession":"Termina sessione","desc_inProgressIntro":"La sessione di collaborazione è attualmente in corso.","desc_shareLink":"Condividi questo link con chiunque desideri collaborare:","desc_exitSession":"Interrompere la sessione scollegherà la tua stanza ma potrai continuare a lavorare con la scena, localmente. Tieni presente che questo non influirà sulle altre persone, e che saranno ancora in grado di collaborare alla loro versione.","shareTitle":"Partecipa a una sessione di collaborazione live su Excalidraw"},"errorDialog":{"title":"Errore"},"exportDialog":{"disk_title":"Salva su disco","disk_details":"Esporta i dati della scena su file, dal quale potrai importare in seguito.","disk_button":"Salva su file","link_title":"Link condivisibile","link_details":"Esporta come link di sola lettura.","link_button":"Esporta come Link","excalidrawplus_description":"Salva la scena nel tuo spazio di lavoro Excalidraw+.","excalidrawplus_button":"Esporta","excalidrawplus_exportError":"Non è stato possibile esportare su Excalidraw+ al questo momento..."},"helpDialog":{"blog":"Leggi il nostro blog","click":"click","deepSelect":"Selezione profonda","deepBoxSelect":"Seleziona in profondità all\'interno della casella e previene il trascinamento","curvedArrow":"Freccia curva","curvedLine":"Linea curva","documentation":"Documentazione","doubleClick":"doppio-click","drag":"trascina","editor":"Editor","editLineArrowPoints":"Modifica punti linea/freccia","editText":"Modifica testo / aggiungi etichetta","github":"Trovato un problema? Segnalalo","howto":"Segui le nostre guide","or":"oppure","preventBinding":"Impedisci legame della freccia","tools":"Stumenti","shortcuts":"Scorciatoie da tastiera","textFinish":"Completa la modifica (editor di testo)","textNewLine":"Aggiungi nuova riga (editor di testo)","title":"Guida","view":"Vista","zoomToFit":"Adatta zoom per mostrare tutti gli elementi","zoomToSelection":"Zoom alla selezione","toggleElementLock":"Blocca/sblocca selezione","movePageUpDown":"Sposta la pagina su/giù","movePageLeftRight":"Sposta la pagina a sinistra/destra"},"clearCanvasDialog":{"title":"Svuota la tela"},"publishDialog":{"title":"Pubblica la libreria","itemName":"Nome dell\'elemento","authorName":"Nome dell\'autore","githubUsername":"Nome utente di GitHub","twitterUsername":"Nome utente di Twitter","libraryName":"Nome della libreria","libraryDesc":"Descrizione della libreria","website":"Sito Web","placeholder":{"authorName":"Il tuo nome o nome utente","libraryName":"Nome della tua libreria","libraryDesc":"Descrizione della tua libreria per aiutare le persone a comprenderne lo scopo","githubHandle":"Handle di GitHub (opzionale), così che tu possa modificare la libreria una volta inviata per la revisione","twitterHandle":"Nome utente di Twitter (opzionale), così che sappiamo chi accreditare promuovendo su Twitter","website":"Link al tuo sito web personale o altro (opzionale)"},"errors":{"required":"Obbligatorio","website":"Inserisci un URL valido"},"noteDescription":"Invia la tua libreria da includere nella repository della libreria pubblicaperché sia usata da altri nei loro disegni.","noteGuidelines":"La libreria dev\'esser prima approvata manualmente. Sei pregato di leggere le linee guida prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario.","noteLicense":"Inviando, acconsenti che la libreria sarà pubblicata sotto la Licenza MIT, che in breve significa che chiunque possa usarla senza restrizioni.","noteItems":"Ogni elemento della libreria deve avere il proprio nome, così che sia filtrabile. Gli elementi della seguente libreria saranno inclusi:","atleastOneLibItem":"Sei pregato di selezionare almeno un elemento della libreria per iniziare","republishWarning":"Nota: alcuni degli elementi selezionati sono contrassegnati come già pubblicati/presentati. È necessario reinviare gli elementi solo quando si aggiorna una libreria o una presentazione esistente."},"publishSuccessDialog":{"title":"Libreria inviata","content":"Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo statoqui"},"confirmDialog":{"resetLibrary":"Ripristina la libreria","removeItemsFromLib":"Rimuovi gli elementi selezionati dalla libreria"},"imageExportDialog":{"header":"Esporta immagine","label":{"withBackground":"Sfondo","onlySelected":"Solo selezionato","darkMode":"Tema scuro","embedScene":"Includi scena","scale":"Scala","padding":"Rientro"},"tooltip":{"embedScene":"I dati della scena saranno salvati nel file PNG/SVG esportato in modo che la scena possa essere ripristinata da esso.\\nQuesto aumenterà la dimensione del file esportato."},"title":{"exportToPng":"Esporta come PNG","exportToSvg":"Esporta come SVG","copyPngToClipboard":"Copia PNG negli appunti"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copia negli appunti"}},"encrypted":{"tooltip":"I tuoi disegni sono crittografati end-to-end in modo che i server di Excalidraw non li possano mai vedere.","link":"Articolo del blog sulla crittografia end-to-end di Excalidraw"},"stats":{"angle":"Angolo","element":"Elemento","elements":"Elementi","height":"Altezza","scene":"Scena","selected":"Selezionato","storage":"Memoria","title":"Statistiche per nerd","total":"Totale","version":"Versione","versionCopy":"Clicca per copiare","versionNotAvailable":"Versione non disponibile","width":"Larghezza"},"toast":{"addedToLibrary":"Aggiunto alla libreria","copyStyles":"Stili copiati.","copyToClipboard":"Copiato negli appunti.","copyToClipboardAsPng":"{{exportSelection}} copiato negli appunti come PNG\\n({{exportColorScheme}})","fileSaved":"File salvato.","fileSavedToFilename":"Salvato in {filename}","canvas":"tela","selection":"selezione","pasteAsSingleElement":"Usa {{shortcut}} per incollare come un singolo elemento,\\no incollare in un editor di testo esistente","unableToEmbed":"Incorporare questo url non è permesso. Crea una issue su GitHub per richiedere che l\'url sia autorizzato","unrecognizedLinkFormat":"Il link che hai incorporato non corrisponde al formato previsto. Prova a incollare la stringa \'embed\' fornita dal sito di origine"},"colors":{"transparent":"Trasparente","black":"Nero","white":"Bianco","red":"Rosso","pink":"Rosa","grape":"Uva","violet":"Viola","gray":"Grigio","blue":"Blu","cyan":"Ciano","teal":"Verde acqua","green":"Verde","yellow":"Giallo","orange":"Arancio","bronze":"Bronzo"},"welcomeScreen":{"app":{"center_heading":"Tutti i tuoi dati sono salvati localmente nel browser.","center_heading_plus":"Volevi invece andare su Excalidraw+?","menuHint":"Esporta, preferenze, lingue, ..."},"defaults":{"menuHint":"Esporta, preferenze, e altro...","center_heading":"Diagrammi. Fatto. Semplice.","toolbarHint":"Scegli uno strumento & Inizia a disegnare!","helpHint":"Scorciatoie & aiuto"}},"colorPicker":{"mostUsedCustomColors":"Colori personalizzati più utilizzati","colors":"Colori","shades":"Sfumature","hexCode":"Codice esadecimale","noShades":"Nessuna sfumatura disponibile per questo colore"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esporta come immagine","button":"Esporta come immagine","description":"Esporta i dati della scena come immagine, che potrai importare in seguito."},"saveToDisk":{"title":"Salva su disco","button":"Salva su disco","description":"Esporta i dati della scena su file, che potrai importare in seguito."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esporta su Excalidraw+","description":"Salva la scena sul tuo spazio di lavoro Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carica da file","button":"Carica da file","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."},"shareableLink":{"title":"Carica da link","button":"Sostituisci il mio contenuto","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ja-JP-json-3c6a065f0f1303b297fa.js b/public/excalidraw/excalidraw-assets-dev/locales/ja-JP-json-3c6a065f0f1303b297fa.js new file mode 100644 index 0000000..4f90e71 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ja-JP-json-3c6a065f0f1303b297fa.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ja-JP-json"],{ + +/***/ "../../locales/ja-JP.json": +/*!********************************!*\ + !*** ../../locales/ja-JP.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"貼り付け","pasteAsPlaintext":"書式なしテキストとして貼り付け","pasteCharts":"チャートの貼り付け","selectAll":"すべて選択","multiSelect":"複数選択","moveCanvas":"キャンバスを移動","cut":"切り取り","copy":"コピー","copyAsPng":"PNGとしてクリップボードへコピー","copyAsSvg":"SVGとしてクリップボードへコピー","copyText":"テキストとしてクリップボードにコピー","bringForward":"前面に移動","sendToBack":"最背面に移動","bringToFront":"最前面に移動","sendBackward":"背面に移動","delete":"削除","copyStyles":"スタイルのコピー","pasteStyles":"スタイルの貼り付け","stroke":"線","background":"背景","fill":"塗りつぶし","strokeWidth":"線の太さ","strokeStyle":"線の種類","strokeStyle_solid":"実線","strokeStyle_dashed":"破線","strokeStyle_dotted":"点線","sloppiness":"ばらつき加減","opacity":"透明度","textAlign":"文字の配置","edges":"角","sharp":"四角","round":"丸","arrowheads":"線の終点","arrowhead_none":"なし","arrowhead_arrow":"矢印","arrowhead_bar":"バー","arrowhead_dot":"ドット","arrowhead_triangle":"三角","fontSize":"フォントの大きさ","fontFamily":"フォントの種類","addWatermark":"\\"Made with Excalidraw\\"と表示","handDrawn":"手描き風","normal":"普通","code":"コード","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"ベタ塗り","hachure":"斜線","zigzag":"ジグザグ","crossHatch":"網掛け","thin":"細","bold":"太字","left":"左寄せ","center":"中央寄せ","right":"右寄せ","extraBold":"極太","architect":"正確","artist":"アート","cartoonist":"漫画風","fileTitle":"ファイル名","colorPicker":"色選択","canvasColors":"キャンバス上で使用","canvasBackground":"キャンバスの背景","drawingCanvas":"キャンバスの描画","layers":"レイヤー","actions":"操作","language":"言語","liveCollaboration":"共同編集...","duplicateSelection":"複製","untitled":"無題","name":"名前","yourName":"あなたの名前","madeWithExcalidraw":"Excalidrawで作成","group":"グループ化","ungroup":"グループ化を解除","collaborators":"共同編集者","showGrid":"グリッドを表示","addToLibrary":"ライブラリに追加","removeFromLibrary":"ライブラリから削除","libraryLoadingMessage":"ライブラリを読み込み中…","libraries":"ライブラリを参照する","loadingScene":"シーンを読み込み中…","align":"配置","alignTop":"上揃え","alignBottom":"下揃え","alignLeft":"左揃え","alignRight":"右揃え","centerVertically":"縦方向に中央揃え","centerHorizontally":"横方向に中央揃え","distributeHorizontally":"水平方向に分散配置","distributeVertically":"垂直方向に分散配置","flipHorizontal":"水平方向に反転","flipVertical":"垂直方向に反転","viewMode":"閲覧モード","share":"共有","showStroke":"ストロークカラーピッカーを表示","showBackground":"背景色ピッカーを表示","toggleTheme":"テーマの切り替え","personalLib":"個人ライブラリ","excalidrawLib":"Excalidrawライブラリ","decreaseFontSize":"フォントサイズを縮小","increaseFontSize":"フォントサイズを拡大","unbindText":"テキストのバインド解除","bindText":"テキストをコンテナにバインド","createContainerFromText":"コンテナ内でテキストを折り返す","link":{"edit":"リンクを編集","editEmbed":"リンクの編集と埋め込み","create":"リンクを作成","createEmbed":"リンクの作成と埋め込み","label":"リンク","labelEmbed":"リンクと埋め込み","empty":"リンクが設定されていません"},"lineEditor":{"edit":"行を編集","exit":"行エディタを終了"},"elementLock":{"lock":"ロック","unlock":"ロック解除","lockAll":"すべてロック","unlockAll":"すべてのロックを解除"},"statusPublished":"公開済み","sidebarLock":"サイドバーを開いたままにする","selectAllElementsInFrame":"フレーム内のすべての要素を選択","removeAllElementsFromFrame":"フレーム内のすべての要素を削除","eyeDropper":"キャンバスから色を選択"},"library":{"noItems":"まだアイテムが追加されていません…","hint_emptyLibrary":"キャンバス上のアイテムを選択してここに追加するか、以下の公開リポジトリからライブラリをインストールしてください。","hint_emptyPrivateLibrary":"キャンバス上のアイテムを選択すると、ここに追加されます。"},"buttons":{"clearReset":"キャンバスのリセット","exportJSON":"ファイルへエクスポート","exportImage":"画像のエクスポート...","export":"名前を付けて保存...","copyToClipboard":"クリップボードにコピー","save":"現在のファイルに保存","saveAs":"名前を付けて保存","load":"開く","getShareableLink":"共有URLの取得","close":"閉じる","selectLanguage":"言語の選択","scrollBackToContent":"コンテンツまでスクロールで戻る","zoomIn":"拡大","zoomOut":"縮小","resetZoom":"拡大/縮小をリセット","menu":"メニュー","done":"完了","edit":"編集","undo":"元に戻す","redo":"やり直し","resetLibrary":"ライブラリをリセット","createNewRoom":"新しい部屋を作成する","fullScreen":"フルスクリーン","darkMode":"ダークモード","lightMode":"ライトモード","zenMode":"Zenモード","objectsSnapMode":"","exitZenMode":"集中モードをやめる","cancel":"キャンセル","clear":"消去","remove":"削除","embed":"埋め込みの切り替え","publishLibrary":"公開","submit":"送信","confirm":"確認","embeddableInteractionButton":""},"alerts":{"clearReset":"この操作によってキャンバス全体が消えます。よろしいですか?","couldNotCreateShareableLink":"共有URLを作成できませんでした。","couldNotCreateShareableLinkTooBig":"共有可能なリンクを作成できませんでした: シーンが大きすぎます","couldNotLoadInvalidFile":"無効なファイルを読み込めませんでした。","importBackendFailed":"サーバーからの読み込みに失敗しました。","cannotExportEmptyCanvas":"空のキャンバスはエクスポートできません。","couldNotCopyToClipboard":"クリップボードにコピーできませんでした。","decryptFailed":"データを復号できませんでした。","uploadedSecurly":"データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。","loadSceneOverridePrompt":"外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか?","collabStopOverridePrompt":"セッションを停止すると、ローカルに保存されている図が上書きされます。 本当によろしいですか?\\n\\n(ローカルの図を保持したい場合は、セッションを停止せずにブラウザタブを閉じてください。)","errorAddingToLibrary":"アイテムをライブラリに追加できませんでした","errorRemovingFromLibrary":"ライブラリからアイテムを削除できませんでした","confirmAddLibrary":"{{numShapes}} 個の図形をライブラリに追加します。よろしいですか?","imageDoesNotContainScene":"この画像にはシーンデータが含まれていないようです。エクスポート時にシーンの埋め込みを有効にしましたか?","cannotRestoreFromImage":"このイメージファイルからシーンを復元できませんでした","invalidSceneUrl":"指定された URL からシーンをインポートできませんでした。不正な形式であるか、有効な Excalidraw JSON データが含まれていません。","resetLibrary":"ライブラリを消去します。本当によろしいですか?","removeItemsFromsLibrary":"{{count}} 個のアイテムをライブラリから削除しますか?","invalidEncryptionKey":"暗号化キーは22文字でなければなりません。ライブコラボレーションは無効化されています。","collabOfflineWarning":"インターネットに接続されていません。\\n変更は保存されません!"},"errors":{"unsupportedFileType":"サポートされていないファイル形式です。","imageInsertError":"画像を挿入できませんでした。後でもう一度お試しください...","fileTooBig":"ファイルが大きすぎます。許可される最大サイズは {{maxSize}} です。","svgImageInsertError":"SVGイメージを挿入できませんでした。SVGマークアップは無効に見えます。","failedToFetchImage":"","invalidSVGString":"無効なSVGです。","cannotResolveCollabServer":"コラボレーションサーバに接続できませんでした。ページを再読み込みして、もう一度お試しください。","importLibraryError":"ライブラリを読み込めませんでした。","collabSaveFailed":"バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","collabSaveFailed_sizeExceeded":"キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","brave_measure_text_error":{"line1":"Aggressly Block Fingerprinting の設定が有効なBraveブラウザを使用しているようです。","line2":"これにより、図面の テキスト要素 が壊れる可能性があります。","line3":"この設定を無効にすることを強く推奨します。 設定手順 をこちらから確認できます。","line4":"この設定を無効にすると、テキスト要素の表示が修正されません。 GitHub で Issue を開くか、 Discord にご記入ください"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"選択","image":"画像を挿入","rectangle":"矩形","diamond":"ひし形","ellipse":"楕円","arrow":"矢印","line":"直線","freedraw":"描画","text":"テキスト","library":"ライブラリ","lock":"描画後も使用中のツールを選択したままにする","penMode":"ペンモード - タッチ防止","link":"選択した図形のリンクを追加/更新","eraser":"消しゴム","frame":"フレームツール","embeddable":"Web埋め込み","laser":"","hand":"手 (パンニングツール)","extraTools":"その他のツール"},"headings":{"canvasActions":"キャンバス操作","selectedShapeActions":"選択された図形に対する操作","shapes":"図形"},"hints":{"canvasPanning":"キャンバスを移動するには、マウスホイールまたはスペースバーを押しながらドラッグするか、手ツールを使用します","linearElement":"クリックすると複数の頂点からなる曲線を開始、ドラッグすると直線","freeDraw":"クリックしてドラッグします。離すと終了します","text":"ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます","embeddable":"","text_selected":"テキストを編集するには、ダブルクリックまたはEnterキーを押します","text_editing":"Esc キーまたは CtrlOrCmd+ENTER キーを押して編集を終了します","linearElementMulti":"最後のポイントをクリックするか、エスケープまたはEnterを押して終了します","lockAngle":"SHIFTを押したままにすると、角度を制限することができます","resize":"サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます","resizeImage":"SHIFTを長押しすると自由にサイズを変更できます。\\n中央からサイズを変更するにはALTを長押しします","rotate":"回転中にSHIFT キーを押すと角度を制限することができます","lineEditor_info":"CtrlOrCmd を押したままダブルクリックするか、CtrlOrCmd + Enter を押して点を編集します","lineEditor_pointSelected":"Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動","lineEditor_nothingSelected":"編集する点を選択(SHIFTを押したままで複数選択)、\\nAltキーを押しながらクリックすると新しい点を追加","placeImage":"クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します","publishLibrary":"自分のライブラリを公開","bindTextToElement":"Enterを押してテキストを追加","deepBoxSelect":"CtrlOrCmd を押し続けることでドラッグを抑止し、深い選択を行います","eraserRevert":"Alt を押し続けることで削除マークされた要素を元に戻す","firefox_clipboard_write":"この機能は、\\"dom.events.asyncClipboard.clipboardItem\\" フラグを \\"true\\" に設定することで有効になる可能性があります。Firefox でブラウザーの設定を変更するには、\\"about:config\\" ページを参照してください。","disableSnapping":""},"canvasError":{"cannotShowPreview":"プレビューを表示できません","canvasTooBig":"キャンバスが大きすぎます。","canvasTooBigTip":"ヒント: 最も遠い要素をもう少し近づけてみてください。"},"errorSplash":{"headingMain":"エラーが発生しました。もう一度やり直してください。 ","clearCanvasMessage":"再読み込みがうまくいかない場合は、 ","clearCanvasCaveat":" これにより作業が失われます ","trackedToSentry":"識別子のエラー {{eventId}} が我々のシステムで追跡されました。","openIssueMessage":"エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 GitHub のIssueに以下の情報をコピーして貼り付けてください。","sceneContent":"シーンの内容:"},"roomDialog":{"desc_intro":"他の人を編集中のあなたの画面に招待して共同編集することができます。","desc_privacy":"このセッションはエンドツーエンド暗号化されており、描画内容は保護されています。運営サーバーからも内容は見えません。","button_startSession":"セッションを開始する","button_stopSession":"セッションを終了する","desc_inProgressIntro":"共同編集セッションが有効になっています。","desc_shareLink":"下記URLを共同編集したい人に共有してください:","desc_exitSession":"セッションを終了するとあなたはルームから切断されますが、ローカルで作業を続けることができます。セッションを終了しても他のメンバには影響はなく、引き続き共同作業を行うことができます。","shareTitle":"Excalidrawの共同編集セッションに参加する"},"errorDialog":{"title":"エラー"},"exportDialog":{"disk_title":"ディスクに保存","disk_details":"シーンデータを後からインポートできるファイルにエクスポートします。","disk_button":"ファイルへ保存","link_title":"共有可能なリンク","link_details":"読み取り専用リンクとしてエクスポート","link_button":"リンクとしてエクスポート","excalidrawplus_description":"Excalidraw+ ワークスペースにシーンを保存します。","excalidrawplus_button":"エクスポート","excalidrawplus_exportError":"Excalidraw+ にエクスポートできませんでした..."},"helpDialog":{"blog":"公式ブログを読む","click":"クリック","deepSelect":"深い選択","deepBoxSelect":"ボックス内の深い選択、およびドラッグの抑止","curvedArrow":"カーブした矢印","curvedLine":"曲線","documentation":"ドキュメント","doubleClick":"ダブルクリック","drag":"ドラッグ","editor":"エディタ","editLineArrowPoints":"","editText":"テキストの編集 / ラベルの追加","github":"不具合報告はこちら","howto":"ヘルプ・マニュアル","or":"または","preventBinding":"矢印を結合しない","tools":"ツール","shortcuts":"キーボードショートカット","textFinish":"編集を終了 (テキストエディタ)","textNewLine":"新しい行を追加 (テキスト)","title":"ヘルプ","view":"表示","zoomToFit":"すべての要素が収まるようにズーム","zoomToSelection":"選択要素にズーム","toggleElementLock":"選択したアイテムをロック/ロック解除","movePageUpDown":"ページを上下に移動","movePageLeftRight":"ページを左右に移動"},"clearCanvasDialog":{"title":"キャンバスを消去"},"publishDialog":{"title":"ライブラリを公開","itemName":"アイテム名","authorName":"作成者名","githubUsername":"GitHub ユーザ名","twitterUsername":"Twitter ユーザ名","libraryName":"ライブラリ名","libraryDesc":"ライブラリの説明","website":"Webサイト","placeholder":{"authorName":"お名前またはユーザー名","libraryName":"あなたのライブラリ名","libraryDesc":"ライブラリの使い方を理解するための説明","githubHandle":"GitHubハンドル(任意)。一度レビューのために送信されると、ライブラリを編集できます","twitterHandle":"Twitterのユーザー名 (任意)。Twitterでプロモーションする際にクレジットする人を知っておくためのものです","website":"個人のウェブサイトまたは他のサイトへのリンク (任意)"},"errors":{"required":"必須項目","website":"有効な URL を入力してください"},"noteDescription":"以下に含めるライブラリを提出してください 公開ライブラリのリポジトリ他の人が作図に使えるようにするためです","noteGuidelines":"最初にライブラリを手動で承認する必要があります。次をお読みください ガイドライン 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。","noteLicense":"提出することにより、ライブラリが次の下で公開されることに同意します: MIT ライセンス つまり誰でも制限なく使えるということです","noteItems":"各ライブラリ項目は、フィルタリングのために独自の名前を持つ必要があります。以下のライブラリアイテムが含まれます:","atleastOneLibItem":"開始するには少なくとも1つのライブラリ項目を選択してください","republishWarning":"注意: 選択された項目の中には、すでに公開/投稿済みと表示されているものがあります。既存のライブラリや投稿を更新する場合のみ、アイテムを再投稿してください。"},"publishSuccessDialog":{"title":"ライブラリを送信しました","content":"{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。こちら"},"confirmDialog":{"resetLibrary":"ライブラリをリセット","removeItemsFromLib":"選択したアイテムをライブラリから削除"},"imageExportDialog":{"header":"画像をエクスポート","label":{"withBackground":"背景","onlySelected":"","darkMode":"ダークモード","embedScene":"","scale":"スケール","padding":"余白"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG にエクスポート","exportToSvg":"SVG にエクスポート","copyPngToClipboard":"クリップボードにPNGをコピー"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"クリップボードにコピー"}},"encrypted":{"tooltip":"描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。","link":"Excalidrawのエンドツーエンド暗号化に関するブログ記事"},"stats":{"angle":"角度","element":"要素","elements":"要素","height":"高さ","scene":"シーン","selected":"選択済み","storage":"ストレージ","title":"詳細統計情報","total":"合計","version":"バージョン","versionCopy":"クリックしてコピー","versionNotAvailable":"利用できないバージョン","width":"幅"},"toast":{"addedToLibrary":"ライブラリに追加しました","copyStyles":"スタイルをコピーしました。","copyToClipboard":"クリップボードにコピー","copyToClipboardAsPng":"{{exportSelection}} を PNG 形式でクリップボードにコピーしました\\n({{exportColorScheme}})","fileSaved":"ファイルを保存しました","fileSavedToFilename":"{filename} に保存しました","canvas":"キャンバス","selection":"選択","pasteAsSingleElement":"{{shortcut}} を使用して単一の要素として貼り付けるか、\\n既存のテキストエディタに貼り付け","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"透明","black":"黒","white":"白","red":"赤","pink":"ピンク","grape":"グレープ","violet":"バイオレット","gray":"灰色","blue":"青","cyan":"シアン","teal":"ティール","green":"緑","yellow":"黄","orange":"オレンジ","bronze":"ブロンズ"},"welcomeScreen":{"app":{"center_heading":"すべてのデータはブラウザにローカル保存されます。","center_heading_plus":"代わりにExcalidraw+を開きますか?","menuHint":"エクスポート、設定、言語..."},"defaults":{"menuHint":"エクスポート、設定、その他...","center_heading":"ダイアグラムを簡単に。","toolbarHint":"ツールを選んで描き始めよう!","helpHint":"ショートカットとヘルプ"}},"colorPicker":{"mostUsedCustomColors":"最も使用されているカスタム色","colors":"色","shades":"影","hexCode":"Hexコード","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"画像としてエクスポート","button":"画像としてエクスポート","description":""},"saveToDisk":{"title":"ディスクに保存","button":"ディスクに保存","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+にエクスポート","description":"Excalidraw+ ワークスペースにシーンを保存します。"}},"modal":{"loadFromFile":{"title":"ファイルからロード","button":"ファイルからロード","description":""},"shareableLink":{"title":"リンクからロード","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/kaa-json-983a9ccc652aa01980f3.js b/public/excalidraw/excalidraw-assets-dev/locales/kaa-json-983a9ccc652aa01980f3.js new file mode 100644 index 0000000..aa3adff --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/kaa-json-983a9ccc652aa01980f3.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/kaa-json"],{ + +/***/ "../../locales/kaa.json": +/*!******************************!*\ + !*** ../../locales/kaa.json ***! + \******************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Qoyıw","pasteAsPlaintext":"Ápiwayı tekst retinde qoyıw","pasteCharts":"Diagrammalardı qoyıw","selectAll":"Barlıǵın tańlaw","multiSelect":"","moveCanvas":"","cut":"Qıyıw","copy":"Kóshirip alıw","copyAsPng":"Almasıw buferine PNG retinde kóshirip alıw","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Óshiriw","copyStyles":"","pasteStyles":"","stroke":"Jiyek","background":"Fon","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"Qırlar","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"Jebe","arrowhead_bar":"","arrowhead_dot":"Noqat","arrowhead_triangle":"","fontSize":"Shrift ólshemi","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"Kod","small":"","medium":"","large":"Úlken","veryLarge":"Júdá úlken","solid":"","hachure":"","zigzag":"Zigzag","crossHatch":"","thin":"Jińishke","bold":"Qalıń","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Fayl ataması","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"Háreketler","language":"Til","liveCollaboration":"","duplicateSelection":"Nusqa","untitled":"Atamasız","name":"Ataması","yourName":"Atıńız","madeWithExcalidraw":"Excalidraw járdeminde islengen","group":"","ungroup":"","collaborators":"Qatnasıwshılar","showGrid":"","addToLibrary":"Kitapxanaǵa qosıw","removeFromLibrary":"Kitapxanadan alıp taslaw","libraryLoadingMessage":"Kitapxana júklenbekte…","libraries":"Kitapxanalardı kóriw","loadingScene":"Saxna júklenbekte…","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"Kóriw rejimi","share":"Bólisiw","showStroke":"","showBackground":"","toggleTheme":"Temanı ózgertiw","personalLib":"Jeke kitapxana","excalidrawLib":"Excalidraw kitapxanası","decreaseFontSize":"Shrift ólshemin kishireytiw","increaseFontSize":"Shrift ólshemin úlkeytiw","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Siltemeni ózgertiw","editEmbed":"","create":"Siltemeni jaratıw","createEmbed":"","label":"Silteme","labelEmbed":"","empty":""},"lineEditor":{"edit":"Qatardı ózgertiw","exit":"Qatardı ózgertiw redaktorınan shıǵıw"},"elementLock":{"lock":"Qulıplaw","unlock":"Qulıptan shıǵarıw","lockAll":"Barlıǵın qulıplaw","unlockAll":"Barlıǵın qulıptan shıǵarıw"},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"Súwretti eksportlaw...","export":"Retinde saqlaw...","copyToClipboard":"Almasıw buferine kóshirip alındı","save":"Ámeldegi faylǵa saqlaw","saveAs":"Retinde saqlaw","load":"Ashıw","getShareableLink":"","close":"Jabıw","selectLanguage":"Tildi tańlaw","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Menyu","done":"Tayın","edit":"Ózgertiw","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"Tolıq ekran","darkMode":"Qarańǵı tema","lightMode":"Jaqtı tema","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"Biykarlaw","clear":"Tazalaw","remove":"Óshiriw","embed":"","publishLibrary":"","submit":"Jiberiw","confirm":"Tastıyıqlaw","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"Almasıw buferine kóshirip alıw ámelge aspadı.","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Jaramsız SVG.","cannotResolveCollabServer":"","importLibraryError":"Kitapxananı júklew ámelge aspadı","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Súwret qoyıw","rectangle":"Tórt múyeshlik","diamond":"","ellipse":"","arrow":"","line":"Sızıq","freedraw":"Sızıw","text":"Tekst","library":"Kitapxana","lock":"","penMode":"","link":"","eraser":"Óshirgish","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"Figuralar"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Tekst qosıw ushın Enter túymesin basıń","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Qátelik"},"exportDialog":{"disk_title":"Diskke saqlaw","disk_details":"","disk_button":"Faylǵa saqlaw","link_title":"","link_details":"","link_button":"Siltemege eksportlaw","excalidrawplus_description":"","excalidrawplus_button":"Eksportlaw","excalidrawplus_exportError":""},"helpDialog":{"blog":"Biziń blogtı oqıń","click":"basıw","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"Hújjetshilik","doubleClick":"","drag":"","editor":"Redaktor","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"yamasa","preventBinding":"","tools":"Ásbaplar","shortcuts":"","textFinish":"","textNewLine":"","title":"Járdem","view":"Kóriw","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"Avtor atı","githubUsername":"GitHub paydalanıwshı atı","twitterUsername":"Twitter paydalanıwshı atı","libraryName":"Kitapxana ataması","libraryDesc":"","website":"Veb-sayt","placeholder":{"authorName":"Atıńız yamasa paydalanıwshı atı","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Kitapxananı qayta ornatıw","removeItemsFromLib":""},"imageExportDialog":{"header":"Súwretti eksportlaw","label":{"withBackground":"Fon","onlySelected":"","darkMode":"Qarańǵı tema","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Almasıw buferine kóshirip alıw"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Element","elements":"Elementler","height":"","scene":"Saxna","selected":"Tańlandı","storage":"","title":"","total":"","version":"Versiya","versionCopy":"Kóshirip alıw ushın basıń","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"Kitapxanaǵa qosıldı","copyStyles":"","copyToClipboard":"Almasıw buferine kóshirip alındı.","copyToClipboardAsPng":"","fileSaved":"Fayl saqlandı.","fileSavedToFilename":"{filename} saqlandı","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"Qara","white":"Aq","red":"Qızıl","pink":"Qızǵılt","grape":"","violet":"Qızǵılt kók","gray":"","blue":"Kók","cyan":"Kók aspan","teal":"Piruza","green":"Jasıl","yellow":"Sarı","orange":"Qızǵılt sarı","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":"Eksportlaw, sazlawlar, tiller, ..."},"defaults":{"menuHint":"Eksportlaw, sazlawlar hám basqa...","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"Reńler","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Súwret retinde eksportlaw","button":"Súwret retinde eksportlaw","description":""},"saveToDisk":{"title":"Diskke saqlaw","button":"Diskke saqlaw","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"","description":""}},"modal":{"loadFromFile":{"title":"Fayldan júklew","button":"Fayldan júklew","description":""},"shareableLink":{"title":"Siltemeden júklew","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/kab-KAB-json-cac3cf66f1db5c1a6e19.js b/public/excalidraw/excalidraw-assets-dev/locales/kab-KAB-json-cac3cf66f1db5c1a6e19.js new file mode 100644 index 0000000..27f6484 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/kab-KAB-json-cac3cf66f1db5c1a6e19.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/kab-KAB-json"],{ + +/***/ "../../locales/kab-KAB.json": +/*!**********************************!*\ + !*** ../../locales/kab-KAB.json ***! + \**********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Senṭeḍ","pasteAsPlaintext":"","pasteCharts":"Senṭeḍ udlifen","selectAll":"Fren akk","multiSelect":"Rnu aferdis ɣer tefrayt","moveCanvas":"Smutti taɣzut n usuneɣ","cut":"Gzem","copy":"Nɣel","copyAsPng":"Nɣel ɣer tecfawit am PNG","copyAsSvg":"Nɣel ɣer tecfawit am SVG","copyText":"Nɣel ɣer tecfawit am uḍris","bringForward":"Awi ɣer sdat","sendToBack":"Awi s agilal","bringToFront":"Err ɣer deffir","sendBackward":"Awi ɣer deffir","delete":"Kkes","copyStyles":"Nɣel iɣunab","pasteStyles":"Senṭeḍ iɣunab","stroke":"Azizdew","background":"Agilal","fill":"Taččart","strokeWidth":"Tehri n yizirig","strokeStyle":"Aɣanib n tizirig","strokeStyle_solid":"Aččuran","strokeStyle_dashed":"S tjerriḍin","strokeStyle_dotted":"S tenqiḍin","sloppiness":"Astehzi","opacity":"Tiḍullest","textAlign":"Areyyec n uḍris","edges":"Leryuf","sharp":"Yemsed","round":"Imdewer","arrowheads":"Ixfawen n tenccabt","arrowhead_none":"Ulac","arrowhead_arrow":"Taneccabt","arrowhead_bar":"Afeggag","arrowhead_dot":"Tanqiḍt","arrowhead_triangle":"Akerdis","fontSize":"Tiddi n tsefsit","fontFamily":"Tawacult n tsefsiyin","addWatermark":"Seddu \\"Yettwaxdem s Excalidraw\\"","handDrawn":"Asuneɣ s ufus","normal":"Amagnu","code":"Tangalt","small":"Meẓẓi","medium":"Alemmas","large":"Ameqran","veryLarge":"Meqqer aṭas","solid":"Aččuran","hachure":"Azerreg","zigzag":"","crossHatch":"Azerreg anmidag","thin":"Arqaq","bold":"Azuran","left":"Azelmaḍ","center":"Talemmast","right":"Ayfus","extraBold":"Azuran aṭas","architect":"Amasdag","artist":"Anaẓur","cartoonist":"Amefɣul","fileTitle":"Isem n ufaylu","colorPicker":"Amafran n yini","canvasColors":"Yettwaseqdec di teɣzut n usuneɣ","canvasBackground":"Agilal n teɣzut n usuneɣ","drawingCanvas":"Taɣzut n usuneɣ","layers":"Tissiyin","actions":"Tigawin","language":"Tutlayt","liveCollaboration":"Amɛiwen s srid...","duplicateSelection":"Sisleg","untitled":"War azwel","name":"Isem","yourName":"Isem-ik (im)","madeWithExcalidraw":"Yettwaxdem s Excalidraw","group":"Segrew tafrayt","ungroup":"Kkess asegrew i tefrayt","collaborators":"Imɛiwnen","showGrid":"Beqqeḍ aferrug","addToLibrary":"Rnu ɣer temkarḍit","removeFromLibrary":"Kkes si temkarḍit","libraryLoadingMessage":"Asali n temkarḍit…","libraries":"Snirem timkarḍiyin","loadingScene":"Asali n usayes…","align":"Reyyec","alignTop":"Areyyec uksawen","alignBottom":"Areyyec ukessar","alignLeft":"Reyyec s azelmaḍ","alignRight":"Areyyec s ayfus","centerVertically":"Di tlemmast s ibeddi","centerHorizontally":"Di tlemmast s uglawi","distributeHorizontally":"Freq s uglawi","distributeVertically":"Freq s yibeddi","flipHorizontal":"Tuttya taglawant","flipVertical":"Tuttya tubdidt","viewMode":"Askar n tmuɣli","share":"Bḍu","showStroke":"Beqqeḍ amelqaḍ n yini n yizirig","showBackground":"Beqqeḍ amelqaḍ n yini n ugilal","toggleTheme":"Snifel asentel","personalLib":"Tamkarḍit tudmawant","excalidrawLib":"Tamkarḍit n Excalidraw","decreaseFontSize":"Senqes tiddi n tsefsit","increaseFontSize":"Sali tiddi n tsefsit","unbindText":"Serreḥ iweḍris","bindText":"Arez aḍris s anagbar","createContainerFromText":"","link":{"edit":"Ẓreg aseɣwen","editEmbed":"","create":"Snulfu-d aseɣwen","createEmbed":"","label":"Aseɣwen","labelEmbed":"","empty":""},"lineEditor":{"edit":"Ẓreg izirig","exit":"Ffeɣ seg umaẓrag n yizirig"},"elementLock":{"lock":"Sekkeṛ","unlock":"Serreḥ","lockAll":"Sekkeṛ akk","unlockAll":"Serreḥ akk"},"statusPublished":"Yeffeɣ-d","sidebarLock":"Eǧǧ afeggag n yidis yeldi","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ulac iferdisen yettwarnan yakan...","hint_emptyLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi, neɣ sbedd tamkarḍit seg usarsay azayez, ukessar-agi.","hint_emptyPrivateLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi."},"buttons":{"clearReset":"Ales awennez n teɣzut n usuneɣ","exportJSON":"Sifeḍ afaylu","exportImage":"Sifeḍ tugna...","export":"Sekles di...","copyToClipboard":"Nɣel ɣer tecfawit","save":"Sekles deg ufaylu amiran","saveAs":"Sekles am","load":"Ldi","getShareableLink":"Awi-d aseɣwen n beṭṭu","close":"Mdel","selectLanguage":"Fren tutlayt","scrollBackToContent":"Uɣal s agbur","zoomIn":"Simɣur","zoomOut":"Simẓi","resetZoom":"Ales awennez n usemɣer","menu":"Umuɣ","done":"Ifukk","edit":"Ẓreg","undo":"Sefsex","redo":"Err-d","resetLibrary":"Ales awennez n temkarḍit","createNewRoom":"Snulfu-d taxxamt tamaynutt","fullScreen":"Agdil aččuran","darkMode":"Askar imsulles","lightMode":"Askar afaw","zenMode":"Askar Zen","objectsSnapMode":"","exitZenMode":"Ffeɣ seg uskar Zen","cancel":"Sefsex","clear":"Sfeḍ","remove":"Kkes","embed":"","publishLibrary":"Ẓreg","submit":"Azen","confirm":"Sentem","embeddableInteractionButton":""},"alerts":{"clearReset":"Ayagi ad isfeḍ akk taɣzut n usuneɣ. Tetḥeqqeḍ?","couldNotCreateShareableLink":"D awezɣi asnulfu n useɣwen n beṭṭu.","couldNotCreateShareableLinkTooBig":"D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas","couldNotLoadInvalidFile":"D awezɣi asali n ufaylu armeɣtu","importBackendFailed":"Takterḍ seg uɣawas n deffir ur teddi ara.","cannotExportEmptyCanvas":"D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.","couldNotCopyToClipboard":"Ulamek anɣal ɣer tecfawit.","decryptFailed":"D awezɣi tukksa n uwgelhen i yisefka.","uploadedSecurly":"Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.","loadSceneOverridePrompt":"Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?","collabStopOverridePrompt":"Aḥbas n tɣimit ad yesefsex unuɣ-inek (m) yettwaḥerzen yakan s wudem adigan. Tetḥeqqeḍ?\\n(Ma tebɣiḍ ad teǧǧeḍ unuɣ-inek (m) adigan, mdel iccer n yiminig, deg umḍiq.)","errorAddingToLibrary":"Ulamek ara yettwarnu uferdis ɣer temkarḍit","errorRemovingFromLibrary":"Ulamek ara yettwakkes uferdis si temkarḍit","confirmAddLibrary":"Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?","imageDoesNotContainScene":"Tugna-agi tettban-d ur tesɛi ara isefka n usayes. Tesremdeḍ aseddu n usayes deg usifeḍ?","cannotRestoreFromImage":"Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna","invalidSceneUrl":"Ulamek taktert n usayes seg URL i d-ittunefken. Ahat mačči d tameɣtut neɣ ur tegbir ara isefka JSON n Excalidraw.","resetLibrary":"Ayagi ad isfeḍ tamkarḍit-inek•m. Tetḥeqqeḍ?","removeItemsFromsLibrary":"Ad tekkseḍ {{count}} n uferdis (en) si temkarḍit?","invalidEncryptionKey":"Tasarut n uwgelhen isefk ad tesɛu 22 n yiekkilen. Amɛiwen srid yensa.","collabOfflineWarning":"Ulac tuqqna n internet.\\nIbedilen-ik ur ttwaklasen ara!"},"errors":{"unsupportedFileType":"Anaw n ufaylu ur yettwasefrak ara.","imageInsertError":"D awezɣi tugra n tugna. Eɛreḍ tikkelt-nniḍen ardeqqal...","fileTooBig":"Afaylu meqqer aṭas. Tiddi tafellayt yurgen d {{maxSize}}.","svgImageInsertError":"D awezɣi tugra n tugna SVG. Acraḍ SVG yettban-d d armeɣtu.","failedToFetchImage":"","invalidSVGString":"SVG armeɣtu.","cannotResolveCollabServer":"Ulamek tuqqna s aqeddac n umyalel. Ma ulac uɣilif ales asali n usebter sakin eɛreḍ tikkelt-nniḍen.","importLibraryError":"Ur d-ssalay ara tamkarḍit","collabSaveFailed":"Ulamek asekles deg uzadur n yisefka deg ugilal. Ma ikemmel wugur, isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","collabSaveFailed_sizeExceeded":"Ulamek asekles deg uzadur n yisefka deg ugilal, taɣzut n usuneɣ tettban-d temqer aṭas. Isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","brave_measure_text_error":{"line1":"","line2":"Ayagi yezmer ad d-iglu s truẓi nIferdisen n uḍrisdeg wunuɣen-inek.","line3":"Ad k-nsemter ad tsexsiḍ aɣewwar-agi. Tzemreḍ ad tḍefreḍisurifen-agi ɣef wamek ara txedmeḍ.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Tafrayt","image":"Ger tugna","rectangle":"Asrem","diamond":"Ameɣṛun","ellipse":"Taglayt","arrow":"Taneccabt","line":"Izirig","freedraw":"Suneɣ","text":"Aḍris","library":"Tamkarḍit","lock":"Eǧǧ afecku n tefrayt yermed mbaɛd asuneɣ","penMode":"Askar n yimru - gdel tanalit","link":"Rnu/leqqem aseɣwen i talɣa yettwafernen","eraser":"Sfeḍ","frame":"","embeddable":"","laser":"","hand":"Afus (afecku n usmutti n tmuɣli)","extraTools":""},"headings":{"canvasActions":"Tigawin n teɣzut n usuneɣ","selectedShapeActions":"Tigawin n talɣa yettwafernen","shapes":"Talɣiwin"},"hints":{"canvasPanning":"Akken ad tesmuttiḍ taɣzut n usuneɣ, ṭṭef ṛṛuda n umumed, neɣ seqdec afecku Afus","linearElement":"Ssit akken ad tebduḍ aṭas n tenqiḍin, zuɣer i yiwen n yizirig","freeDraw":"Ssit yerna zuɣer, serreḥ ticki tfukeḍ","text":"Tixidest: tzemreḍ daɣen ad ternuḍ aḍris s usiti snat n tikkal anida tebɣiḍ s ufecku n tefrayt","embeddable":"","text_selected":"Ssit snat n tikkal neɣ ssed taqeffalt Kcem akken ad tẓergeḍ aḍris","text_editing":"Ssit Escape neɣ CtrlOrCmd+ENTER akken ad tfakkeḍ asiẓreg","linearElementMulti":"Ssit ɣef tenqiḍt taneggarut neɣ ssed taqeffalt Escape neɣ taqeffalt Kcem akken ad tfakkeḍ","lockAngle":"Tzemreḍ ad tḥettmeḍ tiɣmert s tuṭṭfa n tqeffalt SHIFT","resize":"Tzemreḍ ad tḥettemeḍ assaɣ s tuṭṭfa n tqeffalt SHIFT mi ara tettbeddileḍ tiddi,\\nma teṭṭfeḍ ALT abeddel n tiddi ad yili si tlemmast","resizeImage":"Tzemreḍ ad talseḍ tiddi s tilelli s tuṭṭfa n SHIFT,\\nṭṭef ALT akken ad talseḍ tiddi si tlemmast","rotate":"Tzemreḍ ad tḥettemeḍ tiɣemmar s tuṭṭfa n SHIFT di tuzzya","lineEditor_info":"Ssed ɣef CtrlOrCmd yerna ssit snat n tikkal neɣ ssed ɣef CtrlOrCmd + Kcem akken ad tẓergeḍ tineqqiḍin","lineEditor_pointSelected":"Ssed taqeffalt kkes akken ad tekkseḍ tanqiḍ (tinqiḍin),\\nCtrlOrCmd+D akken ad tsiselgeḍ, neɣ zuɣer akken ad tesmuttiḍ","lineEditor_nothingSelected":"Fren tanqiḍt akken ad tẓergeḍ (ṭṭef SHIFT akken ad tferneḍ aṭas),\\nneɣ ṭṭef Alt akken ad ternuḍ tinqiḍin timaynutin","placeImage":"Ssit akken ad tserseḍ tugna, neɣ ssit u zuɣer akken ad tesbaduḍ tiddi-ines s ufus","publishLibrary":"Siẓreg tamkarḍit-inek•inem","bindTextToElement":"Ssed ɣef kcem akken ad ternuḍ aḍris","deepBoxSelect":"Ṭṭef CtrlOrCmd akken ad tferneḍ s telqey, yerna ad trewleḍ i uzuɣer","eraserRevert":"Ssed Alt akken ad tsefsxeḍ iferdisen yettwacerḍen i tukksa","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Ulamek abeqqeḍ n teskant","canvasTooBig":"Taɣzut n usuneɣ tezmer ad tili temeqqer aṭas.","canvasTooBigTip":"Tixidest: eɛreḍ ad tesqerbeḍ ciṭ iferdisen yembaɛaden."},"errorSplash":{"headingMain":"Teḍra-d tuccḍa. Eɛreḍ ","clearCanvasMessage":"Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ ","clearCanvasCaveat":" Ayagi ad d-iglu s usṛuḥu n umahil ","trackedToSentry":"Tuccḍa akked umesmagi {{eventId}} tettwasekles deg unagraw-nneɣ.","openIssueMessage":"Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.","sceneContent":"Agbur n usayes:"},"roomDialog":{"desc_intro":"Tzemreḍ ad d-teɛerḍeḍ medden ɣer usayes-inek (m) amiran akken ad ttekkin yid-k.","desc_privacy":"Ur tqelliq ara, tiɣimit tsseqdac awgelhen ixef s ixef, dɣa ayen ara tsunɣeḍ ad iqqim d amaẓlay. Ula d aqeddac-nneɣ ur yezmir ara ad iwali acu txeddemeḍ.","button_startSession":"Bdu tiɣimit","button_stopSession":"Ḥbes tiɣimit","desc_inProgressIntro":"Tiɣimit n umɛawen s srid tetteddu akka tura.","desc_shareLink":"Bḍu aseɣwen-agi akked medden ukud tebɣiḍ ad temɛawaneḍ:","desc_exitSession":"Aḥbas n tɣimit ad k (m) yesenser si texxamt, maca ad tizmireḍ ad tkemmeleḍ amahil s usayes, s wudem adigan. Ẓer belli ayagi ur yettḥaz ara imdanen-nniḍen, yerna ad izmiren ad kemmelen ad mɛawanen di tsuffeɣt-nnsen.","shareTitle":"Rnu ɣer tɣimit n umɛiwen s srid n Excalidraw"},"errorDialog":{"title":"Tuccḍa"},"exportDialog":{"disk_title":"Sekles deg uḍebsi","disk_details":"Sekles isefka n usayes deg ufaylu ansi ara tizmireḍ ad d-tketreḍ areḍqal.","disk_button":"Sekles deg ufaylu","link_title":"Aseɣwen n beṭṭu","link_details":"Sifeḍ am useɣwen n tɣuri kan.","link_button":"Sifeḍ deg useɣwen","excalidrawplus_description":"Sekles asayes-inek•inem di tallunt n umahil Excalidraw+.","excalidrawplus_button":"Sifeḍ","excalidrawplus_exportError":"Ulamek asifeḍ ɣer Excalidraw+ akka tura..."},"helpDialog":{"blog":"Ɣeṛ ablug-nneɣ","click":"ssit","deepSelect":"Afran s telqey","deepBoxSelect":"Afran s telqey s tnaka, yerna ad tyrewleḍ i uzuɣer","curvedArrow":"Taneccabt izelgen","curvedLine":"Izirig izelgen","documentation":"Tasemlit","doubleClick":"ssit snat n tikkal","drag":"zuɣer","editor":"Amaẓrag","editLineArrowPoints":"Ẓreg tinqiḍin n yizirig/taneccabt","editText":"Ẓreg aḍris/rnu tabzimt","github":"Tufiḍ-d ugur? Azen-aɣ-d","howto":"Ḍfer imniren-nneɣ","or":"neɣ","preventBinding":"Seḥbes tuqqna n tneccabin","tools":"Ifecka","shortcuts":"Inegzumen n unasiw","textFinish":"Fak asiẓreg (amaẓrag n uḍris)","textNewLine":"Rnu ajerriḍ amaynut (amaẓrag n uḍris)","title":"Tallelt","view":"Tamuɣli","zoomToFit":"Simɣur akken ad twliḍ akk iferdisen","zoomToSelection":"Simɣur ɣer tefrayt","toggleElementLock":"Sekkeṛ/kkes asekker i tefrayt","movePageUpDown":"Smutti asebter d asawen/akessar","movePageLeftRight":"Smutti asebter s azelmaḍ/ayfus"},"clearCanvasDialog":{"title":"Sfeḍ taɣzut n usuneɣ"},"publishDialog":{"title":"Suffeɣ-d tamkarḍit","itemName":"Isem n uferdis","authorName":"Isem n umeskar","githubUsername":"Isem n useqdac n GitHub","twitterUsername":"Isem n useqdac n Twitter","libraryName":"Isem n temkarḍit","libraryDesc":"Aglam n temkarḍit","website":"Asmel n web","placeholder":{"authorName":"Isem neɣ isem n useqdac inek•inem","libraryName":"Isem n temkarḍit-inek•inem","libraryDesc":"Aglam n temkarḍit-inek•inem akken ad tɛiwneḍ medden ad fehmen aseqdec-inec","githubHandle":"Isem n useqdac n GitHub ( d anefrunan) akken ad tizmireḍ ad tisẓrigeḍ tamkarḍit ticki tuzneḍ-tt i uselken","twitterHandle":"Isem n useqdac n Twitter (d anefrunan) akken ad nẓer anwa ara nsenmer deg udellel di Twitter","website":"Aseɣwen ɣer usmel-inek•inem neɣ wayeḍ (d anefrunan)"},"errors":{"required":"Yettwasra","website":"Sekcem URL ameɣtu"},"noteDescription":"Azen tamkarḍit-inek•inem akken ad teddu di akaram azayez n temkarḍiti yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen.","noteGuidelines":"Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer iwellihen send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen.","noteLicense":"Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s Turagt MIT, ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist.","noteItems":"Yal aferdis n temkarḍit isefk ad isɛu isem-is i yiman-is akken ad yili wamek ara yettusizdeg. Iferdisen-agi n temkarḍit ad ddun:","atleastOneLibItem":"Ma ulac uɣilif fern ma drus yiwen n uferdis n temkarḍit akken ad tebduḍ","republishWarning":"Tamawt: kra n yiferdisen yettwafernen ttwacerḍen ffeɣen-d/ttwaznen. Isefk ad talseḍ tuzzna n yiferdisen anagar mi ara tleqqemeḍ tamkarḍit neɣ tuzzna yellan."},"publishSuccessDialog":{"title":"Tamkarḍit tettwazen","content":"Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayerdagi"},"confirmDialog":{"resetLibrary":"Ales awennez n temkarḍit","removeItemsFromLib":"Kkes iferdisen yettafernen si temkarḍit"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Unuɣen-inek (m) ttuwgelhnen seg yixef s ixef dɣa iqeddacen n Excalidraw werǧin ad ten-walin. ","link":"Amagrad ɣef uwgelhen ixef s ixef di Excalidraw"},"stats":{"angle":"Tiɣmeṛt","element":"Aferdis","elements":"Iferdisen","height":"Tattayt","scene":"Asayes","selected":"Yettwafren","storage":"Aḥraz","title":"","total":"Aɣrud","version":"Alqem","versionCopy":"Sit ad tneɣleḍ","versionNotAvailable":"Ur inuḥ ulqem","width":"Tehri"},"toast":{"addedToLibrary":"Yettwarna ɣer temkarḍit","copyStyles":"Iɣunab yettwaneɣlen.","copyToClipboard":"Yettwaɣel ɣer tecfawit.","copyToClipboardAsPng":"{{exportSelection}} yettwanɣel ɣer tecfawit am PNG\\n({{exportColorScheme}})","fileSaved":"Afaylu yettwasekles.","fileSavedToFilename":"Yettwasekles di {filename}","canvas":"taɣzut n usuneɣ","selection":"tafrayt","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Afrawan","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.","center_heading_plus":"Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?","menuHint":"Asifeḍ, ismenyifen, tutlayin, ..."},"defaults":{"menuHint":"Asifeḍ, ismenyifen, d wayen-nniḍen...","center_heading":"","toolbarHint":"Fren afecku tebduḍ asuneɣ!","helpHint":"Inegzumen akked tallelt"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/kk-KZ-json-e9dd81c22419efd44478.js b/public/excalidraw/excalidraw-assets-dev/locales/kk-KZ-json-e9dd81c22419efd44478.js new file mode 100644 index 0000000..3eb43f7 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/kk-KZ-json-e9dd81c22419efd44478.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/kk-KZ-json"],{ + +/***/ "../../locales/kk-KZ.json": +/*!********************************!*\ + !*** ../../locales/kk-KZ.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Қою","pasteAsPlaintext":"","pasteCharts":"Диаграммаларды қою","selectAll":"Бәрін таңдау","multiSelect":"","moveCanvas":"","cut":"Қию","copy":"Көшіру","copyAsPng":"","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Жою","copyStyles":"Стильдерді көшіру","pasteStyles":"Стильдерді қою","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"Нұсқар ұштары","arrowhead_none":"Жоқ","arrowhead_arrow":"Нұсқар","arrowhead_bar":"Тосқауыл","arrowhead_dot":"Нүкте","arrowhead_triangle":"","fontSize":"Қаріп өлшемі","fontFamily":"Қаріп тобы","addWatermark":"","handDrawn":"","normal":"Қалыпты","code":"","small":"Кіші","medium":"Орта","large":"Үлкен","veryLarge":"Өте үлкен","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"","bold":"","left":"Солға","center":"Ортаға","right":"Оңға","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Файл атауы","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"","language":"Тіл","liveCollaboration":"","duplicateSelection":"Көшірме","untitled":"Атауысыз","name":"","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"Жабу","selectLanguage":"Тілді таңдау","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Mәзір","done":"Дайын","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"Суретті жүктеу мүмкін болмады. Кейінірек қайталап көріңіз...","fileTooBig":"Файл өте үлкен. Максималды рұқсат етілген көлем {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Суретті қою","rectangle":"","diamond":"","ellipse":"","arrow":"Нұсқар","line":"","freedraw":"","text":"Мәтін","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Қате"},"exportDialog":{"disk_title":"","disk_details":"Сахна деректерін кейін қайта импорттауға болатын файлға экспорттаңыз.","disk_button":"Файлға сақтау","link_title":"Ортақ сілтеме","link_details":"Тек оқуға арналған сілтеме ретінде экспорттау.","link_button":"Сілтемеге экспорттау","excalidrawplus_description":"Сахнаны өзіңіздің Excalidraw+ жұмыс кеңістігінде сақтаңыз.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Қазіргі уақытта Excalidraw+ үшін экспорттау мүмкін емес..."},"helpDialog":{"blog":"Біздің блогты оқу","click":"шерту","deepSelect":"","deepBoxSelect":"","curvedArrow":"Майысқан нұсқар","curvedLine":"Майысқан сызық","documentation":"Құжаттама","doubleClick":"қос шерту","drag":"апару","editor":"Өңдеу","editLineArrowPoints":"","editText":"","github":"Қате таптыңыз ба? Жолдаңыз","howto":"Біздің нұсқаулықтарды орындаңыз","or":"немесе","preventBinding":"Нұсқарды байланыстыруға жол бермеу","tools":"","shortcuts":"Пернетақта пәрмендері","textFinish":"Өңдеуді аяқтау (мәтіндік редактор)","textNewLine":"Жаңа жолға көшу (мәтіндік редактор)","title":"Көмек","view":"Көру","zoomToFit":"Барлық элементтердің көлеміне сәйкес үлкейту","zoomToSelection":"Таңдалғанды үлкейту","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Сіздің сызбаларыңыз өтпелі шифрлеу арқылы шифрланған, сондықтан Excalidraw серверлері оларды ешқашан көрмейді.","link":"Excalidraw қолданатын өтпелі шифрлеу туралы блог жазбасы"},"stats":{"angle":"Бұрыш","element":"Элемент","elements":"Элементтер","height":"Биіктігі","scene":"Сахна","selected":"Таңдалды","storage":"Сақтау көлемі","title":"","total":"Барлығы","version":"Нұсқа","versionCopy":"Көшіру үшін басыңыз","versionNotAvailable":"Бұл нұсқа қолжетімсіз","width":"Ені"},"toast":{"addedToLibrary":"","copyStyles":"Стильдер көшірілді.","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"Файл сақталды.","fileSavedToFilename":"{filename} сақталды","canvas":"","selection":"таңдау","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/km-KH-json-be77acee611d96d88dda.js b/public/excalidraw/excalidraw-assets-dev/locales/km-KH-json-be77acee611d96d88dda.js new file mode 100644 index 0000000..03c1ed1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/km-KH-json-be77acee611d96d88dda.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/km-KH-json"],{ + +/***/ "../../locales/km-KH.json": +/*!********************************!*\ + !*** ../../locales/km-KH.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"បិទភ្ជាប់","pasteAsPlaintext":"បិទភ្ជាប់ជាអត្ថបទធម្មតា","pasteCharts":"បិទភ្ជាប់តារាង","selectAll":"ជ្រើសរើស​ទាំងអស់","multiSelect":"បន្ថែមធាតុទៅលើការជ្រើសរើស","moveCanvas":"ផ្លាស់ទីបាវ","cut":"កាត់","copy":"ចម្លង","copyAsPng":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ PNG","copyAsSvg":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ SVG","copyText":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​អត្ថបទ","bringForward":"នាំយកទៅលើ","sendToBack":"នាំយកទៅក្រោយបង្អស់","bringToFront":"នាំយកទៅលើបង្អស់","sendBackward":"នាំយកទៅក្រោយ","delete":"លុប","copyStyles":"ចម្លងរចនាប័ទ្ម","pasteStyles":"បិទភ្ជាប់រចនាប័ទ្ម","stroke":"ខ្វាច់","background":"ផ្ទៃខាងក្រោយ","fill":"បំពេញ","strokeWidth":"ទទឹងខ្វាច់","strokeStyle":"រចនាប័ទ្មរបស់ខ្វាច់","strokeStyle_solid":"តាន់","strokeStyle_dashed":"ដាច់ៗ","strokeStyle_dotted":"ចំណុចៗ","sloppiness":"រចនាប័ទ្មបន្ទាត់","opacity":"ភាពច្បាស់","textAlign":"តម្រឹមអត្ថបទ","edges":"គែម","sharp":"មុត","round":"រាងមូល","arrowheads":"ក្បាលព្រួញ","arrowhead_none":"គ្មាន","arrowhead_arrow":"ព្រួញ","arrowhead_bar":"របារ","arrowhead_dot":"ចំណុច","arrowhead_triangle":"ត្រីកោណ","fontSize":"ទំហំពុម្ពអក្សរ","fontFamily":"ក្រុម​ពុម្ពអក្សរ","addWatermark":"បន្ថែមវ៉ាត់ធើម៉ាក \\"Made with Excalidraw\\"","handDrawn":"គូរដោយដៃ","normal":"ធម្មតា","code":"កូដ","small":"តូច","medium":"មធ្យម","large":"ធំ","veryLarge":"ធំខ្លាំង","solid":"តាន់","hachure":"Hachure","zigzag":"Zigzag","crossHatch":"បន្ទាត់ឆ្នូតៗ","thin":"ស្តើង","bold":"ដឹត","left":"ខាងឆ្វេង","center":"កណ្ដាល","right":"នៅខាងស្ដាំ","extraBold":"ដិតបន្ថែម","architect":"ស្ថាបត្យករ","artist":"សិល្បៈករ","cartoonist":"អ្នកគំនូរជីវចល","fileTitle":"ឈ្មោះ​ឯកសារ","colorPicker":"ឧបករណ៍​ជ្រើស​ពណ៌","canvasColors":"ប្រើលើបាវ","canvasBackground":"ផ្ទៃខាងក្រោយបាវ","drawingCanvas":"តំបន់គំនូរ","layers":"ស្រទាប់","actions":"សកម្មភាព","language":"ភាសា","liveCollaboration":"សហការគ្នាផ្ទាល់...","duplicateSelection":"ចម្លង","untitled":"គ្មានឈ្មោះ","name":"ឈ្មោះ","yourName":"ឈ្មោះ​របស់​អ្នក","madeWithExcalidraw":"បង្កើតជាមួយ Excalidraw","group":"ការជ្រើសរើសជាក្រុម","ungroup":"បំបែកក្រុមការជ្រើសរើសជាក្រុម","collaborators":"អ្នកសហការ","showGrid":"បង្ហាញក្រឡាចត្រង្គ","addToLibrary":"បន្ថែមទៅបណ្ណាល័យ","removeFromLibrary":"លុបចេញពីបណ្ណាល័យ","libraryLoadingMessage":"កំពុងផ្ទុកបណ្ណាល័យ...","libraries":"រកមើលបណ្ណាល័យ","loadingScene":"កំពុង​ផ្ទុក​ស៊ីន...","align":"តម្រឹម","alignTop":"តម្រឹមផ្នែកខាងលើ","alignBottom":"តម្រឹមផ្នែកខាងក្រោម","alignLeft":"​តម្រឹម​ឆ្វេង","alignRight":"តម្រឹម​ស្តាំ","centerVertically":"កណ្តាល​បញ្ឈរ","centerHorizontally":"កណ្តាល​ផ្ដេក","distributeHorizontally":"ចែកចាយផ្ដេក","distributeVertically":"ចែកចាយបញ្ឈរ","flipHorizontal":"ត្រឡប់​ដោយ​ផ្ដេក","flipVertical":"ត្រឡប់​ដោយ​បញ្ឈរ","viewMode":"ម៉ូដ​បង្ហាញ","share":"ចែករំលែក","showStroke":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ខ្វាច់","showBackground":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ផ្ទៃខាងក្រោយ","toggleTheme":"បិទ/បើកប្រធានបទ","personalLib":"បណ្ណាល័យផ្ទាល់ខ្លួន","excalidrawLib":"បណ្ណាល័យ Excalidraw","decreaseFontSize":"បន្ថយទំហំពុម្ពអក្សរ","increaseFontSize":"បង្កើនទំហំពុម្ពអក្សរ","unbindText":"ស្រាយអត្ថបទ","bindText":"ភ្ជាប់អត្ថបទទៅប្រអប់","createContainerFromText":"រុំអត្ថបទក្នុងប្រអប់មួយ","link":{"edit":"កែតំណភ្ជាប់","editEmbed":"","create":"បង្កើតតំណភ្ជាប់","createEmbed":"","label":"តំណ","labelEmbed":"","empty":""},"lineEditor":{"edit":"កែសម្រួលបន្ទាត់","exit":"ចាកចេញពីការកែសម្រួលបន្ទាត់"},"elementLock":{"lock":"ចាក់សោ","unlock":"ដោះសោ","lockAll":"ចាក់សោទាំងអស់","unlockAll":"ដោះសោទាំងអស់"},"statusPublished":"ត្រូវបានបោះពុម្ពផ្សាយ","sidebarLock":"ទុករបារចំហៀងបើក","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"មិនទាន់មានធាតុបន្ថែមទេ...","hint_emptyLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ ឬដំឡើងបណ្ណាល័យពីឃ្លាំងសាធារណៈខាងក្រោម។","hint_emptyPrivateLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ"},"buttons":{"clearReset":"កំណត់បាវឡើងវិញ","exportJSON":"នាំចេញជាឯកសារ","exportImage":"នាំរូបភាពចេញ","export":"រក្សាទុក​នៅ...","copyToClipboard":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់","save":"រក្សាទុកទៅឯកសារបច្ចុប្បន្ន","saveAs":"រក្សាទុក​ជា","load":"បើក","getShareableLink":"យកតំណដែលអាចចែករំលែកបាន","close":"បិទ","selectLanguage":"រើសភាសា","scrollBackToContent":"រំកិលត្រឡប់ទៅមាតិកាវិញ","zoomIn":"ពង្រីក","zoomOut":"បង្រួម","resetZoom":"កំណត់ការពង្រីកឡើងវិញ","menu":"ម៉ឺនុយ","done":"រួចរាល់","edit":"កែ","undo":"ត្រឡប់វិញ","redo":"ធ្វើ​វិញ","resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","createNewRoom":"បង្កើតបន្ទប់ថ្មី","fullScreen":"ពេញ​អេក្រង់","darkMode":"ម៉ូដងងឹត","lightMode":"ម៉ូដភ្លឺ","zenMode":"ម៉ូត Zen","objectsSnapMode":"","exitZenMode":"ចេញពី zen​ ម៉ូត","cancel":"បោះបង់","clear":"សម្អាត","remove":"ដកចេញ","embed":"","publishLibrary":"បោះពុម្ពផ្សាយ","submit":"ដាក់​ស្នើ","confirm":"បញ្ជាក់","embeddableInteractionButton":""},"alerts":{"clearReset":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","couldNotCreateShareableLink":"មិនអាចបង្កើតតំណដែលអាចចែករំលែកបានទេ។","couldNotCreateShareableLinkTooBig":"មិន​អាច​បង្កើត​តំណ​ដែល​អាច​ចែក​រំលែក​បាន៖ ស៊ីន​ធំ​ពេក","couldNotLoadInvalidFile":"មិនអាចផ្ទុកឯកសារមិនត្រឹមត្រូវបានទេ។","importBackendFailed":"ការនាំចូលពីម៉ាស៊ីនមេបានបរាជ័យ។","cannotExportEmptyCanvas":"មិនអាចនាំចេញបាវទទេបានទេ។","couldNotCopyToClipboard":"មិនអាចចម្លងទៅក្ដារតម្បៀតខ្ទាស់បានទេ។","decryptFailed":"មិនអាចឌិគ្រីបទិន្នន័យបានទេ។","uploadedSecurly":"ការបង្ហោះត្រូវបានការពារដោយការអ៊ិនគ្រីបពីចុងដល់ចប់ មានន័យថា ទាំងម៉ាស៊ីនមេរបស់ Excalidraw ឬភាគីទីបីមិនអាចអានខ្លឹមសារបានទេ។","loadSceneOverridePrompt":"ការផ្ទុកគំនូរខាងក្រៅនឹងជំនួសមាតិកាដែលមានស្រាប់របស់អ្នក។ តើអ្នកចង់បន្តទេ?","collabStopOverridePrompt":"ការបញ្ឈប់សម័យនឹងសរសេរជាន់លើគំនូរដែលបានរក្សាទុកនៅលើកុំព្យូទ័ររបស់អ្នកពីមុន។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?\\n\\n(ប្រសិនបើអ្នកចង់រក្សាគំនូរដែលនៅលើកុំព្យូទ័ររបស់អ្នក គ្រាន់តែបិទផ្ទាំងកម្មវិធីរុករក។)","errorAddingToLibrary":"មិនអាចបន្ថែមធាតុទៅបណ្ណាល័យបានទេ","errorRemovingFromLibrary":"មិនអាចលុបធាតុចេញពីបណ្ណាល័យបានទេ","confirmAddLibrary":"វានឹងបន្ថែមរូបរាង {{numShapes}} ទៅបណ្ណាល័យរបស់អ្នក។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","imageDoesNotContainScene":"រូបភាពនេះហាក់ដូចជាមិនមានទិន្នន័យស៊ីនណាមួយទេ។ តើអ្នកបានបើកការបង្កប់ស៊ីននៅពេលនាំចេញទេ?","cannotRestoreFromImage":"មិនអាចស្ដារស៊ីនពីឯកសាររូបភាពនេះបានទេ","invalidSceneUrl":"មិន​អាច​នាំចូល​ស៊ីន​ពី URL ដែល​បាន​ផ្តល់​ឱ្យ​ទេ។ វាមានទម្រង់ខុស ឬមិនមានទិន្នន័យ Excalidraw JSON ដែលត្រឹមត្រូវ។","resetLibrary":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","removeItemsFromsLibrary":"តើអ្នកប្រាកដថាចង់លុប {{count}} ធាតុចេញពីបណ្ណាល័យទេ?","invalidEncryptionKey":"សោអ៊ីនគ្រីបត្រូវតែមាន 22 តួអក្សរ។ ការសហការផ្ទាល់ត្រូវបានបិទ។","collabOfflineWarning":"គ្មានការតភ្ជាប់អ៊ីនធឺណិត។\\nការផ្លាស់ប្តូររបស់អ្នកនឹងមិនត្រូវបានរក្សាទុកទេ!"},"errors":{"unsupportedFileType":"ប្រភេទឯកសារមិនត្រូវបានគាំទ្រទេ។","imageInsertError":"មិនអាចបញ្ចូលរូបភាពបានទេ។ សូម​ព្យាយាម​ម្តង​ទៀត​នៅ​ពេល​ក្រោយ……","fileTooBig":"ឯកសារធំពេក។ ទំហំអតិបរមាដែលអនុញ្ញាតគឺ {{maxSize}}។","svgImageInsertError":"មិនអាចបញ្ចូលរូបភាព SVG បានទេ។ ស្លាក SVG ហាក់ដូចជាមិនត្រឹមត្រូវ។","failedToFetchImage":"","invalidSVGString":"SVG មិន​ត្រឹមត្រូវ។","cannotResolveCollabServer":"មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសហការផ្ទាល់បានទេ។ សូមផ្ទុកទំព័រឡើងវិញ ហើយព្យាយាមម្តងទៀត។","importLibraryError":"មិនអាចផ្ទុកបណ្ណាល័យបានទេ។","collabSaveFailed":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ។ ប្រសិនបើបញ្ហានៅតែបន្តកើតមាន​ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","collabSaveFailed_sizeExceeded":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ, ផ្ទាំងបាវហាក់ដូចជាធំពេក។ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","brave_measure_text_error":{"line1":"អ្នកហាក់ដូចជាកំពុងប្រើប្រាស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត Brave ជាមួយនឹងការកំណត់ ការពារស្នាមម្រាមដៃយ៉ាងធ្ងន់ធ្ងរ ត្រូវបានបើក។","line2":"វាអាចបណ្តាលឱ្យមានការបំបែក ធាតុអត្ថបទ នៅក្នុងគំនូររបស់អ្នក។","line3":"យើងណែនាំយ៉ាងមុតមាំឱ្យបិទការកំណត់នេះ។ អ្នកអាចអនុវត្តតាម ជំហានទាំងនេះ ដើម្បីបិទការកំណត់នេះ។","line4":"ប្រសិនបើការបិទការកំណត់នេះមិនបានជួសជុលការបង្ហាញធាតុអត្ថបទទេ សូមដាក់ issue នៅលើ GitHub ឬរាយការណ៍នៅលើ Discord របស់យើង"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ការជ្រើសរើស","image":"បញ្ចូលរូបភាព","rectangle":"ចតុ​កោណ​កែង​","diamond":"ពេជ្រ","ellipse":"ពងក្រពើ","arrow":"ព្រួញ","line":"បន្ទាត់","freedraw":"គូរ","text":"អត្ថបទ","library":"បណ្ណាល័យ","lock":"រក្សារឧបករណ៍ដែលបានជ្រើសរើសបន្ទាប់ពីគូររួច","penMode":"របៀបប៊ិច - ជៀសវាងការប៉ះ","link":"បន្ថែម/ធ្វើបច្ចុប្បន្នភាពតំណភ្ជាប់សម្រាប់រូបរាងដែលបានជ្រើសរើស","eraser":"ជ័រលុប","frame":"","embeddable":"","laser":"","hand":"ដៃ (panning tool)","extraTools":""},"headings":{"canvasActions":"សកម្មភាពបាវ","selectedShapeActions":"សកម្មភាពរបស់រាងដែលបានជ្រើសរើស","shapes":"រាង"},"hints":{"canvasPanning":"ដើម្បីផ្លាស់ទីបាវ សូមសង្កត់កង់កណ្ដុរឬគ្រាប់ចុចspacebarខណៈពេលកំពុងអូស ឬប្រើឧបករណ៍ដៃ។","linearElement":"ចុចដើម្បីបង្កើតចំណុចច្រើន អូសដើម្បីបង្កើតបន្ទាត់មួយ","freeDraw":"ចុច​ហើយ​អូស លែង​ពេល​រួចរាល់","text":"គន្លឹះ៖ អ្នកក៏អាចបន្ថែមអត្ថបទដោយចុចពីរដងនៅកន្លែងណាមួយដោយប្រើឧបករណ៍ជ្រើសរើស","embeddable":"","text_selected":"ចុចពីរដង ឬចុច ENTER ដើម្បីកែសម្រួលអត្ថបទ","text_editing":"ចុច Escape ឬ CtrlOrCmd +ENTER ដើម្បីបញ្ចប់ការកែសម្រួល","linearElementMulti":"ចុចលើចំណុចចុងក្រោយ ឬចុច Esc/Enter ដើម្បីបញ្ចប់","lockAngle":"អ្នកអាចសង្កត់ Shift ដើម្បីកំណត់មុំ","resize":"អ្នកអាចសង្កត់ SHIFT ដើម្បីបងំ្ខឲមានសមាមាត្រ ខណៈពេលដែលប្តូរទំហំ\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","resizeImage":"អ្នកអាចប្តូរទំហំរូបភាពដោយសេរីដោយសង្កត់ SHIFT,\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","rotate":"អ្នកអាចសង្កត់ Shift ខណៈពេលកំពុងបង្វិល ដើម្បីកម្រិតមុំ","lineEditor_info":"សង្កត់ CtrlOrCmd ហើយចុចពីរដង ឬចុច CtrlOrCmd + Enter ដើម្បីកែសម្រួលចំណុច","lineEditor_pointSelected":"ចុច Delete ដើម្បីលុបចំណុច(ច្រើន)\\nCtrlOrCmd+D ដើម្បីចម្លង, ឬអូសដើម្បីផ្លាស់ទី","lineEditor_nothingSelected":"ជ្រើសរើសចំណុចដែលត្រូវកែសម្រួល (សង្កត់ SHIFT ដើម្បីជ្រើសរើសច្រើនចំណុច)\\nឬ សង្កត់ Alt ហើយចុចដើម្បីបន្ថែមចំណុចថ្មី។","placeImage":"ចុចដើម្បីដាក់រូបភាព ឬចុចហើយអូសដើម្បីកំណត់ទំហំរបស់រូបភាពដោយដៃ","publishLibrary":"បោះពុម្ពផ្សាយបណ្ណាល័យផ្ទាល់ខ្លួនរបស់អ្នក","bindTextToElement":"ចុច Enter ដើម្បីបន្ថែមអត្ថបទ","deepBoxSelect":"សង្កត់ CtrlOrCmd ដើម្បីជ្រើសរើសយ៉ាងជ្រៅ និងជៀសវាងការអូស","eraserRevert":"សង្កត់ Alt ដើម្បីដកការជ្រើសរើសធាតុដែលត្រូវបានសម្គាល់សម្រាប់ការលុប","firefox_clipboard_write":"បើកមុខងារនេះដោយកំណត់ទង់ \\"dom.events.asyncClipboard.clipboardItem\\" ទៅ \\"true\\" \\nដើម្បីផ្លាស់ប្តូរទង់កម្មវិធីរុករកនៅក្នុង Firefox សូមចូលទៅកាន់ទំព័រ \\"about:config\\"។","disableSnapping":""},"canvasError":{"cannotShowPreview":"មិនអាចបង្ហាញការមើលជាមុនបាន","canvasTooBig":"បាវអាចមានទំហំធំពេក។","canvasTooBigTip":"គន្លឹះ៖ ព្យាយាមផ្លាស់ទីធាតុដែលឆ្ងាយបំផុតឱ្យទៅជិតគ្នាបន្តិច។"},"errorSplash":{"headingMain":"បានជួបប្រទះកំហុសមួយ។ សូមព្យាយាម ។","clearCanvasMessage":"ប្រសិនបើការផ្ទុកឡើងវិញមិនអាចដោះស្រាយកំហុសបានទេ សូមសាកល្បង ","clearCanvasCaveat":" នេះនឹងបណ្តាលឱ្យបាត់បង់ការងារ ","trackedToSentry":"កំហុសជាមួយលេខសម្គាល់ {{eventId}} ត្រូវបានតាមដាននៅលើប្រព័ន្ធរបស់យើង។","openIssueMessage":"យើងមានការប្រុងប្រយ័ត្នខ្លាំងណាស់ក្នុងការមិនបញ្ចូលព័ត៌មានរបស់ស៊ីនរបស់អ្នកទៅលើកំហុស។ ប្រសិនបើស៊ីនរបស់អ្នកមិនមានលក្ខណៈឯកជនទេ សូមពិចារណាបន្តទៅកាន់ សូមបញ្ចូលព័ត៌មានខាងក្រោមដោយចម្លង និងបិទភ្ជាប់វាទៅក្នុងបញ្ហារបស់ GitHub។","sceneContent":"មាតិកាបាវ៖"},"roomDialog":{"desc_intro":"អ្នកអាចអញ្ជើញអ្នកដទៃឱ្យសហការជាមួយអ្នកនៅលើស៊ីនបច្ចុប្បន្ន។","desc_privacy":"កុំបារម្ភ វគ្គប្រើការអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះអ្វីដែលអ្នកគូរនឹងនៅតែជាឯកជន។ សូម្បីតែម៉ាស៊ីនមេរបស់យើងក៏នឹងមិនអាចមើលឃើញអ្វីដែលអ្នកកំពុងធ្វើដែរ។","button_startSession":"ចាប់ផ្តើមវគ្គ","button_stopSession":"បញ្ឈប់វគ្គ","desc_inProgressIntro":"វគ្គសហការផ្ទាល់ឥឡូវនេះកំពុងដំណើរការ។","desc_shareLink":"ចែករំលែកតំណនេះជាមួយអ្នកដែលអ្នកចង់សហការជាមួយ៖","desc_exitSession":"ការបញ្ឈប់វគ្គនេះនឹងផ្តាច់អ្នកចេញពីបន្ទប់ ប៉ុន្តែអ្នកនឹងនៅតែអាចបន្តប្រើបាវនៅលើកុំព្យូទ័ររបស់អ្នក។ សូមចំណាំថាវានឹងមិនប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតទេ​ ហើយពួកគេនឹងនៅតែអាចបន្តសហការលើកំណែរបស់ពួកគេ។","shareTitle":"ចូលរួមវគ្គសហការផ្ទាល់នៅលើ Excalidraw"},"errorDialog":{"title":"មានកំហុស"},"exportDialog":{"disk_title":"រក្សាទុកទៅថាស","disk_details":"នាំចេញទិន្នន័យរបស់ស៊ីនជាឯកសារដែលអ្នកអាចនាំចូលនៅពេលក្រោយ។","disk_button":"រក្សាទុកក្នុងឯកសារ","link_title":"តំណដែលអាចចែករំលែកបាន","link_details":"នាំចេញជាតំណបានតែមើលឬអាន។","link_button":"នាំចេញជាតំណ","excalidrawplus_description":"រក្សាទុកស៊ីនទៅកន្លែងធ្វើការ Excalidraw+ របស់អ្នក។","excalidrawplus_button":"នាំចេញ","excalidrawplus_exportError":"មិនអាចនាំចេញទៅ Excalidraw+ បានទេនៅពេលនេះ..."},"helpDialog":{"blog":"អានប្លក់របស់យើង","click":"ចុច","deepSelect":"ការជ្រើសរើសជាក្រុម","deepBoxSelect":"ជ្រើសរើសជាក្រុម និង ជៀសវាងការអូសទាញផ្លាស់ទី","curvedArrow":"ព្រួញកោង","curvedLine":"ព្រួញកោង","documentation":"ឯកសារ","doubleClick":"ចុច​ពីរ​ដង","drag":"អូស","editor":"កម្មវិធីនិពន្ធ","editLineArrowPoints":"កែសម្រួលចំណុចនៃបន្ទាត់ ឬព្រួញ","editText":"បន្ថែម ឬកែសម្រួលអត្ថបទ","github":"រកឃើញបញ្ហា? ដាក់ស្នើ","howto":"ឯកសារជំនួយ","or":"ឬ","preventBinding":"ទប់ស្កាត់ការចងព្រួញ","tools":"ឧបករណ៍","shortcuts":"ផ្លូវកាត់ក្តារចុច","textFinish":"បញ្ចប់ការកែសម្រួល (កម្មវិធីនិពន្ធអត្ថបទ)","textNewLine":"ចុះបន្ទាត់ (កម្មវិធីនិពន្ធអត្ថបទ)","title":"ជំនួយ","view":"បង្ហាញ","zoomToFit":"ធ្វើមាត្រដ្ឋានឱ្យសមនឹងធាតុទាំងអស់។","zoomToSelection":"ពង្រីកទៅការជ្រើសរើស","toggleElementLock":"ចាក់សោ/ដោះសោការជ្រើសរើស","movePageUpDown":"ផ្លាស់ទីទំព័រឡើងលើ/ចុះក្រោម","movePageLeftRight":"ផ្លាស់ទីទំព័រទៅឆ្វេង/ស្ដាំ"},"clearCanvasDialog":{"title":"សម្អាតបាវ"},"publishDialog":{"title":"បោះពុម្ពបណ្ណាល័យ","itemName":"ឈ្មោះ​ធាតុ","authorName":"ឈ្មោះអ្នកនិពន្ធ","githubUsername":"ឈ្មោះអ្នកប្រើ GitHub","twitterUsername":"ឈ្មោះអ្នកប្រើ Twitter","libraryName":"ឈ្មោះបណ្ណាល័យ","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យ","website":"គេហទំព័រ","placeholder":{"authorName":"ឈ្មោះរបស់អ្នក ឬឈ្មោះអ្នកប្រើប្រាស់","libraryName":"ឈ្មោះបណ្ណាល័យរបស់អ្នក","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យរបស់អ្នក នឹងអនុញ្ញាតឱ្យអ្នក​ផ្សេងយល់ពីការប្រើប្រាស់របស់វា។","githubHandle":"ឈ្មោះអ្នកប្រើ GitHub (ជាជម្រើស) ដូច្នេះអ្នកអាចកែសម្រួលបណ្ណាល័យបាននៅពេលដាក់ស្នើសម្រាប់ការពិនិត្យ","twitterHandle":"ឈ្មោះអ្នកប្រើប្រាស់ Twitter (ជាជម្រើស) ដូច្នេះយើងដឹងថាអ្នកណាដែលត្រូវផ្តល់ក្រេឌីតនៅពេលផ្សព្វផ្សាយតាម Twitter","website":"ភ្ជាប់ទៅគេហទំព័រផ្ទាល់ខ្លួនរបស់អ្នក ឬគេហទំព័រផ្សេងទៀត (ជាជម្រើស)"},"errors":{"required":"ត្រូវបានទាមទារ","website":"សូមវាយបញ្ចូល URL ​ដែលត្រឹមត្រូវ"},"noteDescription":"ដាក់ស្នើបណ្ណាល័យរបស់អ្នកដើម្បីដាក់បញ្ចូលក្នុង ឃ្លាំងបណ្ណាល័យសាធារណៈ សម្រាប់ឲ្យអ្នកផ្សេងប្រើក្នុងគំនូររបស់ពួកគេ។","noteGuidelines":"បណ្ណាល័យត្រូវតែអនុម័តដោយដៃជាមុនសិន។ សូមអាន ការណែនាំ មុនពេលដាក់ស្នើ។ ការប្រាស្រ័យទាក់ទងជាបន្តបន្ទាប់ និងការផ្លាស់ប្តូរបណ្ណាល័យទាមទារឱ្យអ្នកមានគណនី GitHub ប៉ុន្តែមិនត្រូវបានទាមទារយ៉ាងតឹងរ៉ឹងទេ។","noteLicense":"តាមរយៈការដាក់ស្នើ អ្នកយល់ព្រមថាបណ្ណាល័យនឹងត្រូវបានបោះពុម្ពផ្សាយក្រោម អាជ្ញាប័ណ្ណ MIT ដែលមានន័យយ៉ាងខ្លី អ្នកណាក៏អាចប្រើប្រាស់វាបានដោយគ្មានការរឹតត្បិត។","noteItems":"ធាតុនីមួយៗនៅក្នុងបណ្ណាល័យត្រូវតែមានឈ្មោះផ្ទាល់ខ្លួនដើម្បីយើងអាចត្រងវាបាន។ ធាតុខាងក្រោមនឹងត្រូវបានរួមបញ្ចូល:","atleastOneLibItem":"សូមជ្រើសរើសយ៉ាងហោចណាស់ធាតុបណ្ណាល័យមួយដើម្បីចាប់ផ្តើម","republishWarning":"ចំណាំ៖ ធាតុដែលត្រូវបានជ្រើសរើសមួយចំនួនត្រូវបានសម្គាល់ថាបានបោះពុម្ព/បញ្ជូនរួចរាល់ហើយ។ អ្នកគួរតែបញ្ជូនធាតុឡើងវិញនៅពេលដែលធ្វើបច្ចុប្បន្នភាពបណ្ណាល័យដែលមានស្រាប់ ឬការបញ្ជូន។"},"publishSuccessDialog":{"title":"បណ្ណាល័យត្រូវបានដាក់ស្នើ","content":"សូមអរគុណ {{authorName}}។ បណ្ណាល័យរបស់អ្នកត្រូវបានបញ្ជូនមកពិនិត្យ។ សូមចុច ទីនេះ ដើម្បីតាមដានស្ថានភាពនៃការដាក់ស្នើនេះ។"},"confirmDialog":{"resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","removeItemsFromLib":"លុបធាតុដែលបានជ្រើសរើសចេញពីបណ្ណាល័យ"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"គំនូររបស់អ្នកត្រូវបានអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះម៉ាស៊ីនមេរបស់ Excalidraw នឹងមិនឃើញពួកវាទេ។","link":"ប្លក់ផុសលើការអ៊ិនគ្រីបពីចុងដល់ចុងក្នុង Excalidraw"},"stats":{"angle":"មុំ","element":"ធាតុ","elements":"ធាតុច្រើន","height":"កម្ពស់","scene":"ស៊ីន","selected":"បានជ្រើសរើស","storage":"ការផ្ទុក","title":"ស្ថិតិសម្រាប់ nerds","total":"សរុប","version":"ជំនាន់:","versionCopy":"ចុចដើម្បីចម្លង","versionNotAvailable":"កំណែមិនអាចប្រើបាន","width":"ទទឹង​"},"toast":{"addedToLibrary":"បានបន្ថែមទៅបណ្ណាល័យ","copyStyles":"រចនាប័ទ្មត្រូវបានចម្លង។","copyToClipboard":"បានចម្លងទៅក្ដារតម្បៀតខ្ទាស់។","copyToClipboardAsPng":"បានចម្លង {{exportSelection}} ទៅក្ដារតម្បៀតខ្ទាស់ជា PNG\\n({{exportColorScheme}})","fileSaved":"ឯកសារត្រូវបានរក្សាទុក។","fileSavedToFilename":"បានរក្សាទុកនៅក្នុង {filename}","canvas":"តំបន់គំនូរ","selection":"ការជ្រើសរើស","pasteAsSingleElement":"ប្រើ {{shortcut}} ដើម្បីបិទភ្ជាប់ជាធាតុតែមួយ,\\nឬបិទភ្ជាប់ទៅក្នុងកម្មវិធីនិពន្ធអត្ថបទដែលមានស្រាប់","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ថ្លាមើលធ្លុះ","black":"ពណ៍ខ្មៅ","white":"ពណ៌ស","red":"ពណ៌ក្រហម","pink":"ពណ៌ផ្កាឈូក","grape":"ពណ៌ទំពាំងបាយជូរ","violet":"ពណ៌ស្វាយ","gray":"ពណ៌ប្រផេះ","blue":"ពណ៌ខៀវ","cyan":"ពណ៌ផ្ទៃមេឃ","teal":"ពណ៌​ខៀវបៃតង","green":"ពណ៌បៃតង","yellow":"ពណ៌លឿង","orange":"ពណ៌ទឹកក្រូច","bronze":"ពណ៌សំរិទ្ធ"},"welcomeScreen":{"app":{"center_heading":"ទិន្នន័យទាំងអស់របស់អ្នក ត្រូវបានរក្សាទុកនៅក្នុង browser របស់អ្នក ។","center_heading_plus":"តើ​អ្នក​ចង់​ទៅ Excalidraw+ ​វិញ ឬ មែន?","menuHint":"នាំចេញ ចំណូលចិត្ត ភាសា ..."},"defaults":{"menuHint":"ការនាំចេញ ចំណូលចិត្ត និង ច្រើនទៀត...","center_heading":"ងាយស្រួល ។ ធ្វើ ។​ ដ្យាក្រាម ។","toolbarHint":"ជ្រើសរើសឧបករណ៍មួយ និង ចាប់ផ្តើមគូរ!","helpHint":"ផ្លូវកាត់ &​ ជំនួយ"}},"colorPicker":{"mostUsedCustomColors":"ពណ៌ផ្ទាល់ខ្លួនដែលប្រើច្រើនបំផុត","colors":"ពណ៌","shades":"ស្រមោល","hexCode":"លេខកូដ hex","noShades":"មិនមានស្រមោលសម្រាប់ពណ៌នេះទេ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ko-KR-json-ad8e9d31d52b26f3fbc2.js b/public/excalidraw/excalidraw-assets-dev/locales/ko-KR-json-ad8e9d31d52b26f3fbc2.js new file mode 100644 index 0000000..af37a33 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ko-KR-json-ad8e9d31d52b26f3fbc2.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ko-KR-json"],{ + +/***/ "../../locales/ko-KR.json": +/*!********************************!*\ + !*** ../../locales/ko-KR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"붙여넣기","pasteAsPlaintext":"일반 텍스트로 붙여넣기","pasteCharts":"차트 붙여넣기","selectAll":"전체 선택","multiSelect":"선택 영역에 추가하기","moveCanvas":"캔버스 이동","cut":"잘라내기","copy":"복사","copyAsPng":"클립보드로 PNG 이미지 복사","copyAsSvg":"클립보드로 SVG 이미지 복사","copyText":"클립보드로 텍스트 복사","bringForward":"앞으로 가져오기","sendToBack":"맨 뒤로 보내기","bringToFront":"맨 앞으로 가져오기","sendBackward":"뒤로 보내기","delete":"삭제","copyStyles":"스타일 복사하기","pasteStyles":"스타일 붙여넣기","stroke":"선 색상","background":"배경색","fill":"채우기","strokeWidth":"선 굵기","strokeStyle":"선","strokeStyle_solid":"실선","strokeStyle_dashed":"파선","strokeStyle_dotted":"점선","sloppiness":"대충 긋기","opacity":"불투명도","textAlign":"텍스트 정렬","edges":"가장자리","sharp":"뾰족하게","round":"둥글게","arrowheads":"화살촉","arrowhead_none":"없음","arrowhead_arrow":"화살표","arrowhead_bar":"막대","arrowhead_dot":"점","arrowhead_triangle":"삼각형","fontSize":"글자 크기","fontFamily":"글꼴","addWatermark":"\\"Made with Excalidraw\\" 추가","handDrawn":"손글씨","normal":"일반","code":"코드","small":"작게","medium":"보통","large":"크게","veryLarge":"매우 크게","solid":"단색","hachure":"평행선","zigzag":"지그재그","crossHatch":"교차선","thin":"얇게","bold":"굵게","left":"왼쪽","center":"가운데","right":"오른쪽","extraBold":"매우 굵게","architect":"건축가","artist":"예술가","cartoonist":"만화가","fileTitle":"파일 이름","colorPicker":"색상 선택기","canvasColors":"캔버스에서 사용되었음","canvasBackground":"캔버스 배경","drawingCanvas":"캔버스 그리기","layers":"레이어","actions":"동작","language":"언어","liveCollaboration":"실시간 협업...","duplicateSelection":"복제","untitled":"제목 없음","name":"이름","yourName":"이름 입력","madeWithExcalidraw":"Made with Excalidraw","group":"그룹 생성","ungroup":"그룹 해제","collaborators":"공동 작업자","showGrid":"그리드 보기","addToLibrary":"라이브러리에 추가","removeFromLibrary":"라이브러리에서 제거","libraryLoadingMessage":"라이브러리 불러오는 중…","libraries":"라이브러리 찾기","loadingScene":"화면 불러오는 중…","align":"정렬","alignTop":"상단 정렬","alignBottom":"하단 정렬","alignLeft":"왼쪽 정렬","alignRight":"오른쪽 정렬","centerVertically":"수직으로 중앙 정렬","centerHorizontally":"수평으로 중앙 정렬","distributeHorizontally":"수평으로 분배","distributeVertically":"수직으로 분배","flipHorizontal":"좌우반전","flipVertical":"상하반전","viewMode":"보기 모드","share":"공유","showStroke":"윤곽선 색상 선택기 열기","showBackground":"배경 색상 선택기 열기","toggleTheme":"테마 전환","personalLib":"개인 라이브러리","excalidrawLib":"Excalidraw 라이브러리","decreaseFontSize":"폰트 사이즈 줄이기","increaseFontSize":"폰트 사이즈 키우기","unbindText":"텍스트 분리","bindText":"텍스트를 컨테이너에 결합","createContainerFromText":"텍스트를 컨테이너에 담기","link":{"edit":"링크 수정하기","editEmbed":"링크 & 임베드 수정하기","create":"링크 만들기","createEmbed":"링크 & 임베드 만들기","label":"링크","labelEmbed":"링크 & 임베드","empty":"링크를 지정하지 않았습니다"},"lineEditor":{"edit":"선 수정하기","exit":"선 편집기 종료"},"elementLock":{"lock":"잠금","unlock":"잠금 해제","lockAll":"모두 잠금","unlockAll":"모두 잠금 해제"},"statusPublished":"게시됨","sidebarLock":"사이드바 유지","selectAllElementsInFrame":"프레임의 모든 요소 선택","removeAllElementsFromFrame":"프레임의 모든 요소 삭제","eyeDropper":"캔버스에서 색상 고르기"},"library":{"noItems":"추가된 아이템 없음","hint_emptyLibrary":"캔버스 위에서 아이템을 선택하여 여기에 추가를 하거나, 아래의 공용 저장소에서 라이브러리를 설치하세요.","hint_emptyPrivateLibrary":"캔버스 위에서 아이템을 선택하여 여기 추가하세요."},"buttons":{"clearReset":"캔버스 초기화","exportJSON":"파일로 내보내기","exportImage":"이미지 내보내기","export":"다른 이름으로 저장...","copyToClipboard":"클립보드로 복사","save":"현재 파일에 저장","saveAs":"다른 이름으로 저장","load":"열기","getShareableLink":"공유 가능한 링크 생성","close":"닫기","selectLanguage":"언어 선택","scrollBackToContent":"콘텐츠 영역으로 스크롤하기","zoomIn":"확대","zoomOut":"축소","resetZoom":"확대/축소 초기화","menu":"메뉴","done":"완료","edit":"수정","undo":"실행 취소","redo":"다시 실행","resetLibrary":"라이브러리 리셋","createNewRoom":"방 만들기","fullScreen":"전체화면","darkMode":"다크 모드","lightMode":"밝은 모드","zenMode":"젠 모드","objectsSnapMode":"다른 요소들에 정렬시키기","exitZenMode":"젠 모드 종료하기","cancel":"취소","clear":"지우기","remove":"삭제","embed":"임베딩 토글","publishLibrary":"게시하기","submit":"제출","confirm":"확인","embeddableInteractionButton":"클릭하여 상호작용"},"alerts":{"clearReset":"모든 작업 내용이 초기화됩니다. 계속하시겠습니까?","couldNotCreateShareableLink":"공유 가능한 링크를 생성할 수 없습니다.","couldNotCreateShareableLinkTooBig":"공유 가능한 링크를 생성할 수 없습니다: 화면이 너무 큽니다.","couldNotLoadInvalidFile":"유효하지 않은 파일입니다.","importBackendFailed":"서버로부터 불러 오지 못했습니다.","cannotExportEmptyCanvas":"빈 캔버스를 내보낼 수 없습니다.","couldNotCopyToClipboard":"클립보드로 복사하지 못했습니다.","decryptFailed":"데이터를 복호화하지 못했습니다.","uploadedSecurly":"업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.","loadSceneOverridePrompt":"외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?","collabStopOverridePrompt":"협업 세션을 종료하면 로컬 저장소에 있는 그림이 협업 세션의 그림으로 대체됩니다. 진행하겠습니까?\\n\\n(로컬 저장소에 있는 그림을 유지하려면 현재 브라우저 탭을 닫아주세요.)","errorAddingToLibrary":"아이템을 라이브러리에 추가 할수 없습니다","errorRemovingFromLibrary":"라이브러리에서 아이템을 삭제할수 없습니다","confirmAddLibrary":"{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?","imageDoesNotContainScene":"이 이미지는 화면 데이터를 포함하고 있지 않은 것 같습니다. 내보낼 때 화면을 첨부하도록 설정하셨나요?","cannotRestoreFromImage":"이미지 파일에서 화면을 복구할 수 없었습니다","invalidSceneUrl":"제공된 URL에서 화면을 가져오는데 실패했습니다. 주소가 잘못되거나, 유효한 Excalidraw JSON 데이터를 포함하고 있지 않은 것일 수 있습니다.","resetLibrary":"당신의 라이브러리를 초기화 합니다. 계속하시겠습니까?","removeItemsFromsLibrary":"{{count}}개의 아이템을 라이브러리에서 삭제하시겠습니까?","invalidEncryptionKey":"암호화 키는 반드시 22글자여야 합니다. 실시간 협업이 비활성화됩니다.","collabOfflineWarning":"인터넷에 연결되어 있지 않습니다.\\n변경 사항들이 저장되지 않습니다!"},"errors":{"unsupportedFileType":"지원하지 않는 파일 형식 입니다.","imageInsertError":"이미지를 삽입할 수 없습니다. 나중에 다시 시도 하십시오","fileTooBig":"파일이 너무 큽니다. 최대 크기는 {{maxSize}} 입니다.","svgImageInsertError":"SVG 이미지를 삽입하지 못했습니다. SVG 문법이 유효하지 않은 것 같습니다.","failedToFetchImage":"이미지를 가져오는데 실패했습니다.","invalidSVGString":"유효하지 않은 SVG입니다.","cannotResolveCollabServer":"협업 서버에 접속하는데 실패했습니다. 페이지를 새로고침하고 다시 시도해보세요.","importLibraryError":"라이브러리를 불러오지 못했습니다.","collabSaveFailed":"데이터베이스에 저장하지 못했습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","collabSaveFailed_sizeExceeded":"데이터베이스에 저장하지 못했습니다. 캔버스가 너무 큰 거 같습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","brave_measure_text_error":{"line1":"귀하께서는 강력한 지문 차단 설정이 활성화된 Brave browser를 사용하고 계신 것 같습니다.","line2":"이 기능으로 인해 화이트보드의 텍스트 요소들이 손상될 수 있습니다.","line3":"저희는 해당 기능을 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는 이 게시글을 참고해주세요.","line4":"만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희 Github에 이슈를 올려주시거나 Discord로 알려주세요."},"libraryElementTypeError":{"embeddable":"임베드 요소들은 라이브러리에 추가할 수 없습니다.","image":"라이브러리에 이미지 삽입 기능은 곧 지원될 예정입니다!"}},"toolBar":{"selection":"선택","image":"이미지 삽입","rectangle":"사각형","diamond":"다이아몬드","ellipse":"타원","arrow":"화살표","line":"선","freedraw":"그리기","text":"텍스트","library":"라이브러리","lock":"선택된 도구 유지하기","penMode":"펜 모드 - 터치 방지","link":"선택한 도형에 대해서 링크를 추가/업데이트","eraser":"지우개","frame":"프레임 도구","embeddable":"웹 임베드","laser":"레이저 포인터","hand":"손 (패닝 도구)","extraTools":"다른 도구"},"headings":{"canvasActions":"캔버스 동작","selectedShapeActions":"선택된 모양 동작","shapes":"모양"},"hints":{"canvasPanning":"캔버스를 옮기려면 마우스 휠이나 스페이스바를 누르고 드래그하거나, 손 도구를 사용하기","linearElement":"여러 점을 연결하려면 클릭하고, 직선을 그리려면 바로 드래그하세요.","freeDraw":"클릭 후 드래그하세요. 완료되면 놓으세요.","text":"팁: 선택 툴로 아무 곳이나 더블 클릭해 텍스트를 추가할 수도 있습니다.","embeddable":"클릭 및 드래그하여 웹사이트 임베드 만들기","text_selected":"더블 클릭 또는 ENTER를 눌러서 텍스트 수정","text_editing":"ESC나 CtrlOrCmd+ENTER를 눌러서 수정을 종료하기","linearElementMulti":"마지막 지점을 클릭하거나 Esc 또는 Enter 키를 눌러 완료하세요.","lockAngle":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","resize":"SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.\\nALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.","resizeImage":"SHIFT를 눌러서 자유롭게 크기를 변경하거나,\\nALT를 눌러서 중앙을 고정하고 크기를 변경하기","rotate":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","lineEditor_info":"꼭짓점을 수정하려면 CtrlOrCmd 키를 누르고 더블 클릭을 하거나 CtrlOrCmd + Enter를 누르세요.","lineEditor_pointSelected":"Delete 키로 꼭짓점을 제거하거나,\\nCtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기","lineEditor_nothingSelected":"꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),\\nAlt를 누르고 클릭해서 새로운 꼭짓점 추가하기","placeImage":"클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기","publishLibrary":"당신만의 라이브러리를 게시하기","bindTextToElement":"Enter 키를 눌러서 텍스트 추가하기","deepBoxSelect":"CtrlOrCmd 키를 눌러서 깊게 선택하고, 드래그하지 않도록 하기","eraserRevert":"Alt를 눌러서 삭제하도록 지정된 요소를 되돌리기","firefox_clipboard_write":"이 기능은 설정에서 \\"dom.events.asyncClipboard.clipboardItem\\" 플래그를 \\"true\\"로 설정하여 활성화할 수 있습니다. Firefox에서 브라우저 플래그를 수정하려면, \\"about:config\\" 페이지에 접속하세요.","disableSnapping":"CtrlOrCmd 키를 눌러서 다른 요소와의 정렬 무시하기"},"canvasError":{"cannotShowPreview":"미리보기를 볼 수 없습니다","canvasTooBig":"캔버스가 너무 큽니다.","canvasTooBigTip":"팁: 멀리 있는 요소들을 좀 더 가까이로 붙여 보세요."},"errorSplash":{"headingMain":"오류가 발생했습니다. ","clearCanvasMessage":"새로고침으로 해결되지 않을 경우, ","clearCanvasCaveat":" 작업 내용을 잃게 됩니다 ","trackedToSentry":"오류 {{eventId}} 가 시스템에서 발견되었습니다.","openIssueMessage":"저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요. 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.","sceneContent":"화면 내용:"},"roomDialog":{"desc_intro":"현재 화면에 공동 작업자를 초대해 협업할 수 있습니다.","desc_privacy":"안심하세요, 세션은 종단 간 암호화를 사용하므로 당신의 작업은 비공개로 유지되며 서버조차도 작업 내용을 알 수 없습니다.","button_startSession":"세션 시작","button_stopSession":"세션 중단","desc_inProgressIntro":"실시간 협업 세션이 진행 중입니다.","desc_shareLink":"공동 작업자에게 이 링크를 공유하세요.","desc_exitSession":"세션을 중단하면 연결은 끊어지나 작업을 이어갈 수 있습니다. 이 작업은 다른 작업자에게 영향을 미치지 않으며 각자의 공동 작업은 계속 유지됩니다.","shareTitle":"Excalidraw의 실시간 협업 세션에 참가하기"},"errorDialog":{"title":"오류"},"exportDialog":{"disk_title":"디스크에 저장","disk_details":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다.","disk_button":"파일로 저장","link_title":"공유 가능한 링크 생성","link_details":"읽기 전용 링크로 내보냅니다.","link_button":"링크로 내보내기","excalidrawplus_description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다.","excalidrawplus_button":"내보내기","excalidrawplus_exportError":"지금은 Excalidraw+로 내보낼 수 없습니다..."},"helpDialog":{"blog":"블로그 읽어보기","click":"클릭","deepSelect":"깊게 선택","deepBoxSelect":"영역을 깊게 선택하고, 드래그하지 않도록 하기","curvedArrow":"곡선 화살표","curvedLine":"곡선","documentation":"설명서","doubleClick":"더블 클릭","drag":"드래그","editor":"에디터","editLineArrowPoints":"직선 / 화살표 꼭짓점 수정","editText":"텍스트 수정 / 라벨 추가","github":"문제 제보하기","howto":"가이드 참고하기","or":"또는","preventBinding":"화살표가 붙지 않게 하기","tools":"도구","shortcuts":"키보드 단축키","textFinish":"편집 완료 (텍스트 에디터)","textNewLine":"줄바꿈(텍스트 에디터)","title":"도움말","view":"보기","zoomToFit":"모든 요소가 보이도록 확대/축소","zoomToSelection":"선택 영역으로 확대/축소","toggleElementLock":"선택한 항목을 잠금/잠금 해제","movePageUpDown":"페이지 움직이기 위/아래","movePageLeftRight":"페이지 움직이기 좌/우"},"clearCanvasDialog":{"title":"캔버스 지우기"},"publishDialog":{"title":"라이브러리 게시하기","itemName":"아이템 이름","authorName":"저자명","githubUsername":"깃허브 사용자이름","twitterUsername":"트위터 사용자이름","libraryName":"라이브러리 이름","libraryDesc":"라이브러리 설명","website":"웹사이트","placeholder":{"authorName":"이름 또는 사용자명","libraryName":"당신의 라이브러리 이름","libraryDesc":"사람들에게 라이브러리의 용도를 알기 쉽게 설명해주세요","githubHandle":"GitHub 사용자명 (선택), 제출한 뒤에도 심사를 위해서 라이브러리를 수정할 때 사용됩니다","twitterHandle":"Twitter 사용자명 (선택), Twitter를 통해서 홍보할 때 제작자를 밝히기 위해 사용됩니다","website":"개인 웹사이트나 다른 어딘가의 링크 (선택)"},"errors":{"required":"필수사항","website":"유효한 URL을 입력하세요"},"noteDescription":"당신의 라이브러리를 제출하여 공개 라이브러리 저장소에서 다른 사람들의 그림에 사용할 수 있도록 하세요.","noteGuidelines":"라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 가이드라인을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다.","noteLicense":"제출함으로써, 당신은 라이브러리가 MIT 라이선스 하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다.","noteItems":"각각의 라이브러리는 분류할 수 있도록 고유한 이름을 가져야 합니다. 다음의 라이브러리 항목이 포함됩니다:","atleastOneLibItem":"최소한 하나의 라이브러리를 선택해주세요","republishWarning":"참고: 선택된 항목의 일부는 이미 제출/게시되었습니다. 기존의 라이브러리나 제출물을 업데이트하는 경우에만 제출하세요."},"publishSuccessDialog":{"title":"라이브러리 제출됨","content":"{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을여기에서 확인하실 수 있습니다."},"confirmDialog":{"resetLibrary":"라이브러리 리셋","removeItemsFromLib":"선택한 항목을 라이브러리에서 제거"},"imageExportDialog":{"header":"이미지 내보내기","label":{"withBackground":"배경","onlySelected":"선택한 항목만","darkMode":"다크 모드","embedScene":"화면을 담기","scale":"크기","padding":"여백"},"tooltip":{"embedScene":"화면 정보가 내보내는 PNG/SVG 파일에 저장되어 이후에 파일에서 화면을 복구할 수 있습니다. 파일 크기가 증가합니다."},"title":{"exportToPng":"PNG로 내보내기","exportToSvg":"SVG로 내보내기","copyPngToClipboard":"클립보드로 PNG 복사"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"클립보드로 복사"}},"encrypted":{"tooltip":"그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다.","link":"Excalidraw의 종단 간 암호화에 대한 블로그 포스트"},"stats":{"angle":"각도","element":"요소","elements":"요소","height":"높이","scene":"화면","selected":"선택됨","storage":"저장공간","title":"덕후들을 위한 통계","total":"합계","version":"버전","versionCopy":"복사하려면 클릭","versionNotAvailable":"해당 버전 사용 불가능","width":"너비"},"toast":{"addedToLibrary":"라이브러리에 추가되었습니다","copyStyles":"스타일 복사.","copyToClipboard":"클립보드로 복사.","copyToClipboardAsPng":"{{exportSelection}}를 클립보드에 PNG로 복사했습니다\\n({{exportColorScheme}})","fileSaved":"파일이 저장되었습니다.","fileSavedToFilename":"{filename} 로 저장되었습니다","canvas":"캔버스","selection":"선택한 요소","pasteAsSingleElement":"단일 요소로 붙여넣거나, 기존 텍스트 에디터에 붙여넣으려면 {{shortcut}} 을 사용하세요.","unableToEmbed":"이 URL의 임베딩이 허용되지 않았습니다. GitHub에 이슈를 남겨서 이 URL이 화이트리스트에 등재될 수 있도록 요청하세요","unrecognizedLinkFormat":"임베딩하려는 링크의 형식이 잘못된 것 같습니다. 원본 사이트에서 제공하는 \\"임베딩\\" 텍스트를 그대로 붙여 넣어 주세요"},"colors":{"transparent":"투명","black":"블랙","white":"화이트","red":"레드","pink":"핑크","grape":"그레이프","violet":"바이올렛","gray":"그레이","blue":"블루","cyan":"시안","teal":"틸","green":"그린","yellow":"옐로우","orange":"오렌지","bronze":"브론즈"},"welcomeScreen":{"app":{"center_heading":"모든 데이터는 브라우저에 안전하게 저장됩니다.","center_heading_plus":"대신 Excalidraw+로 이동하시겠습니까?","menuHint":"내보내기, 설정, 언어, ..."},"defaults":{"menuHint":"내보내기, 설정, 등등...","center_heading":"간단하게 만드는 다이어그램.","toolbarHint":"도구를 선택하고, 그리세요!","helpHint":"단축키 & 도움말"}},"colorPicker":{"mostUsedCustomColors":"가장 많이 사용된 색상들","colors":"색상","shades":"색조","hexCode":"Hex 코드","noShades":"사용할 수 있는 색조가 없음"},"overwriteConfirm":{"action":{"exportToImage":{"title":"이미지로 내보내기","button":"이미지로 내보내기","description":"나중에 다시 불러올 수 있도록 화면 데이터를 이미지로 내보냅니다."},"saveToDisk":{"title":"디스크에 저장","button":"디스크에 저장","description":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다."},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+로 내보내기","description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다."}},"modal":{"loadFromFile":{"title":"파일에서 불러오기","button":"파일에서 불러오기","description":"파일을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."},"shareableLink":{"title":"주소에서 불러오기","button":"컨텐츠를 덮어쓰기","description":"외부 작업물을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ku-TR-json-ed67af91ae1920f114a8.js b/public/excalidraw/excalidraw-assets-dev/locales/ku-TR-json-ed67af91ae1920f114a8.js new file mode 100644 index 0000000..9e207b0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ku-TR-json-ed67af91ae1920f114a8.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ku-TR-json"],{ + +/***/ "../../locales/ku-TR.json": +/*!********************************!*\ + !*** ../../locales/ku-TR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"دانانەوە","pasteAsPlaintext":"دایبنێ وەک دەقی سادە","pasteCharts":"دانانەوەی خشتەکان","selectAll":"دیاریکردنی هەموو","multiSelect":"زیادکردنی بۆ دیاریکراوەکان","moveCanvas":"تابلۆ بجوڵێنە","cut":"بڕین","copy":"لەبەرگرتنەوە","copyAsPng":"PNGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyAsSvg":"SVGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyText":"لەبەرگرتنەوە بۆ تەختەنووس وەک نوسین","bringForward":"بهێنە پێشتر","sendToBack":"بنێرە دواوە","bringToFront":"بهێنە پێشەوە","sendBackward":"بنێرە دواتر","delete":"سڕینەوە","copyStyles":"لەبەرگرتنەوەی ستایل","pasteStyles":"دانانەوەی ستایل","stroke":"هێڵکار","background":"پاشبنەما","fill":"پڕکردنەوە","strokeWidth":"پانی هێڵکاری","strokeStyle":"ستایلی هێڵکاری","strokeStyle_solid":"سادە","strokeStyle_dashed":"پچڕ پچڕ","strokeStyle_dotted":"خاڵدار","sloppiness":"لێژی","opacity":"ڕوونی","textAlign":"ڕێکخستنی دەق","edges":"لێوارەکان","sharp":"تیژ","round":"چەماوە","arrowheads":"سەرەتیر","arrowhead_none":"هیچیان","arrowhead_arrow":"تیر","arrowhead_bar":"هێڵ","arrowhead_dot":"خاڵ","arrowhead_triangle":"سێگۆشە","fontSize":"قەبارەی فۆنت","fontFamily":"خێزانی فۆنت","addWatermark":"زیادبکە \\"Made with Excalidraw\\"","handDrawn":"دەست کێشراو","normal":"ئاسایی","code":"کۆد","small":"بچووک","medium":"ناوەند","large":"گه‌وره‌","veryLarge":"زۆر گه‌وره‌","solid":"سادە","hachure":"هاچور","zigzag":"زیگزاگ","crossHatch":"کرۆس هاتچ","thin":"تەنک","bold":"تۆخ","left":"چەپ","center":"ناوه‌ند","right":"ڕاست","extraBold":"زۆر تۆخ","architect":"تەلارساز","artist":"هونەرمەند","cartoonist":"کارتۆنی","fileTitle":"ناوی فایل","colorPicker":"ڕەنگ هەڵگر","canvasColors":"بەکارهاتووە لەسەر تابلۆ","canvasBackground":"پاشبنەمای تابلۆ","drawingCanvas":"کێشانی تابلۆ","layers":"چینەکان","actions":"کردارەکان","language":"زمان","liveCollaboration":"هاوکاریکردنی زیندو...","duplicateSelection":"لەبەرگرتنەوە","untitled":"بێ ناونیشان","name":"ناو","yourName":"ناوەکەت","madeWithExcalidraw":"دروستکراوە بە Excalidraw","group":"دیاریکردنی گروپ","ungroup":"گروپی دیاریکراوەکان لابەرە","collaborators":"هاوکارەکان","showGrid":"گرید نیشانبدە","addToLibrary":"زیادکردن بۆ کتێبخانە","removeFromLibrary":"لابردن لە کتێبخانە","libraryLoadingMessage":"...بارکردنی کتێبخانە","libraries":"گەڕانی کتێبخانە","loadingScene":"...بارکردنی دیمەنەکە","align":"لاچەنکردن","alignTop":"لاچەنکردن بۆ سەرەوە","alignBottom":"لاچەنکردن بۆ خوارەوە","alignLeft":"لاچەنکردن بۆ چەپ","alignRight":"لاچەنکردن بۆ ڕاست","centerVertically":"بە ستونی ناوەند بکە","centerHorizontally":"بە ئاسۆی ناوەند بکە","distributeHorizontally":"بە ئاسۆی دابەشی بکە","distributeVertically":"بە ستونی دابەشی بکە","flipHorizontal":"هەڵگەڕانەوەی ئاسۆیی","flipVertical":"هەڵگەڕانەوەی ستونی","viewMode":"دۆخی بینین","share":"هاوبەشی پێکردن","showStroke":"ڕەنگهەڵگری هێڵکار نیشانبدە","showBackground":"ڕەنگهەڵگری باکگراوند نیشانبدە","toggleTheme":"دۆخی ڕوکار بگۆڕە","personalLib":"کتێبخانەی کەسی","excalidrawLib":"کتێبخانەی Excalidraw","decreaseFontSize":"کەمکردنەوەی قەبارەی فۆنت","increaseFontSize":"زایدکردنی قەبارەی فۆنت","unbindText":"دەقەکە جیابکەرەوە","bindText":"دەقەکە ببەستەوە بە کۆنتەینەرەکەوە","createContainerFromText":"دەق لە چوارچێوەیەکدا بپێچە","link":{"edit":"دەستکاریکردنی بەستەر","editEmbed":"","create":"دروستکردنی بەستەر","createEmbed":"","label":"بەستەر","labelEmbed":"","empty":""},"lineEditor":{"edit":"دەستکاری کردنی دێڕ","exit":"دەرچوون لە دەستکاریکەری دێڕ"},"elementLock":{"lock":"قفڵکردن","unlock":"کردنەوە","lockAll":"قفڵکردنی هەموو","unlockAll":"کردنەوەی قفلی هەمووی"},"statusPublished":"بڵاوکراوەتەوە","sidebarLock":"هێشتنەوەی شریتی لا بە کراوەیی","selectAllElementsInFrame":"هەموو توخمەکانی ناو چوارچێوەکە دیاری بکە","removeAllElementsFromFrame":"هەموو توخمەکانی ناو چوارچێوەکە لابەرە","eyeDropper":"ڕەنگێک لەسەر تابلۆکە هەڵبژێرە"},"library":{"noItems":"هێشتا هیچ بڕگەیەک زیاد نەکراوە...","hint_emptyLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت، یان کتێبخانەیەک لە کۆگا گشتیەکەوە دابمەزرێنە، لە خوارەوە.","hint_emptyPrivateLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت."},"buttons":{"clearReset":"تابلۆکە وەک سەرەتا لێبکەوە","exportJSON":"هەناردەکردن بۆ فایل","exportImage":"وێنە هەناردە بکە...","export":"پاشەکەوت بکە بۆ...","copyToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس","save":"پاشەکەوت بکە بۆ فایلی بەردەست","saveAs":"پاشەکەوتکردن وەک","load":"بکەرەوە","getShareableLink":"بەستەری هاوبەشیپێکردن بەدەستبهێنە","close":"داخستن","selectLanguage":"دیاریکردنی زمان","scrollBackToContent":"گەڕاندنەوە بۆ ناوەڕۆک","zoomIn":"نزیک خستنەوە","zoomOut":"دوورخستنەوە","resetZoom":"ڕێستکردنی زووم","menu":"پێڕست","done":"تەواو","edit":"دەستکاری کردن","undo":"گه‌ڕانه‌وه‌ بۆ پێشوو","redo":"گه‌ڕانه‌وه‌ بۆ داهاتوو","resetLibrary":"ڕێکخستنەوەی کتێبخانە","createNewRoom":"ژوورێکی نوێ دروست بکە","fullScreen":"پڕ بە شاشە","darkMode":"دۆخی تاریک","lightMode":"دۆخی ڕووناک","zenMode":"دۆخی زێن","objectsSnapMode":"","exitZenMode":"بەجێهێشتنی دۆخی زێن","cancel":"هەڵوەشاندنەوە","clear":"خاوێنکردنەوە","remove":"لابردن","embed":"","publishLibrary":"بڵاوکردنەوە","submit":"پێشکەشکردن","confirm":"دوپاتکردنەوە","embeddableInteractionButton":""},"alerts":{"clearReset":"ئەمە هەموو تابلۆکە خاوێن دەکاتەوە، دڵنیایت؟","couldNotCreateShareableLink":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت","couldNotCreateShareableLinkTooBig":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت: دیمەنەکە زۆر گەورەیە","couldNotLoadInvalidFile":"ناتوانرا باربکرێت، فایلەکە دروستنییە","importBackendFailed":"هاوردەکردن لە پاشکۆکە سەرکەوتوو نەبوو.","cannotExportEmptyCanvas":"ناتوانرێت تابلۆی بەتاڵ هەناردەبکرێت.","couldNotCopyToClipboard":"ناتوانرا لەبەربگیرێتەوە بۆ تەختەنوس","decryptFailed":"ناتوانرا داتاکان شیبکرێتەوە","uploadedSecurly":"بارکردنەکە بە کۆدکردنی کۆتایی بۆ کۆتایی پارێزراوە، ئەمەش واتە سێرڤەری Excalidraw و لایەنی سێیەم ناتوانن ناوەڕۆکەکە بخوێننەوە.","loadSceneOverridePrompt":"بارکردنی وێنەکێشانی دەرەکی جێگەی ناوەڕۆکی بەردەستت دەگرێتەوە. دەتەوێت بەردەوام بیت؟","collabStopOverridePrompt":"وەستاندنی دانیشتنەکە وێنەکێشانی پێشووت دەنووسێتەوە کە لە ناوخۆدا هەڵگیراوە. ئایا دڵنیایت?\\n\\n(ئەگەر دەتەوێت وێنەکێشانی ناوخۆیی خۆت بهێڵیتەوە، لەبری ئەوە تەنها تابی وێبگەڕەکە دابخە).","errorAddingToLibrary":"نەیتوانی بڕگە زیاد بکات بۆ کتێبخانە","errorRemovingFromLibrary":"نەیتوانی بڕگە لە کتێبخانە بسڕێتەوە","confirmAddLibrary":"ئەمە {{numShapes}} شێوە(ەکان) زیاد دەکات بۆ کتێبخانەکەت. ئایا دڵنیایت?","imageDoesNotContainScene":"وادیارە ئەم وێنەیە هیچ داتایەکی دیمەنی تێدا نییە. ئایا دیمەنی چەسپاندنت لە کاتی هەناردەدا چالاک کردووە؟","cannotRestoreFromImage":"ناتوانرێت دیمەنەکە بگەڕێندرێتەوە لەم فایلە وێنەیە","invalidSceneUrl":"ناتوانێت دیمەنەکە هاوردە بکات لە URL ی دابینکراو. یان نادروستە، یان داتای \\"ئێکسکالیدراو\\" JSON ی دروستی تێدا نییە.","resetLibrary":"ئەمە کتێبخانەکەت خاوێن دەکاتەوە. ئایا دڵنیایت?","removeItemsFromsLibrary":"سڕینەوەی {{count}} ئایتم(ەکان) لە کتێبخانە؟","invalidEncryptionKey":"کلیلی رەمزاندن دەبێت لە 22 پیت بێت. هاوکاری ڕاستەوخۆ لە کارخراوە.","collabOfflineWarning":"هێڵی ئینتەرنێت بەردەست نییە.\\n گۆڕانکارییەکانت سەیڤ ناکرێن!"},"errors":{"unsupportedFileType":"جۆری فایلی پشتگیری نەکراو.","imageInsertError":"نەیتوانی وێنە داخڵ بکات. دواتر هەوڵ بدە","fileTooBig":"فایلەکە زۆر گەورەیە. زۆرترین قەبارەی ڕێگەپێدراو {{maxSize}}}.","svgImageInsertError":"نەیتوانی وێنەی SVG داخڵ بکات. نیشانەی ئێس ڤی جی نادروست دیارە.","failedToFetchImage":"","invalidSVGString":"ئێس ڤی جی نادروستە.","cannotResolveCollabServer":"ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.","importLibraryError":"نەیتوانی کتێبخانە بار بکات","collabSaveFailed":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت. ئەگەر کێشەکان بەردەوام بوون، پێویستە فایلەکەت لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","collabSaveFailed_sizeExceeded":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت، پێدەچێت تابلۆکە زۆر گەورە بێت. پێویستە فایلەکە لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","brave_measure_text_error":{"line1":"وادیارە وێبگەڕی Brave بەکاردەهێنیت و ڕێکخستنی Aggressively Block Fingerprinting ـت چالاک کردووە.","line2":"ئەمە ئەکرێ ببێتە هۆی تێکدانی دانە دەقییەکان لە وێنەکێشانەکانتدا.","line3":"ئێمە بە توندی پێشنیاری لەکارخستنی ئەم ڕێکخستنە دەکەین. بۆ لە کارخستنی دەتوانیت بەم هەنگاوانەدا بڕۆیت.","line4":"ئەگەر لەکارخستنی ئەم ڕێکخستنە نەبوە هۆی چاککردنەوەی پێشاندانی دانە دەقییەکان، تکایە کێشەیەک بکەرەوە لەسەر گیتهەبەکەمان، یان بۆمان بنوسە لەسەر دیسکۆرد"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"دەستنیشانکردن","image":"داخڵکردنی وێنە","rectangle":"لاکێشە","diamond":"ئەڵماس","ellipse":"هێلکەیی","arrow":"تیر","line":"هێڵ","freedraw":"کێشان","text":"دەق","library":"کتێبخانە","lock":"ئامێرە دیاریکراوەکان چالاک بهێڵەوە دوای وێنەکێشان","penMode":"شێوازی قەڵەم - دەست لێدان ڕابگرە","link":"زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو","eraser":"سڕەر","frame":"ئامرازی چوارچێوە","embeddable":"","laser":"","hand":"دەست (ئامرازی پانکردن)","extraTools":"ئامرازی زیاتر"},"headings":{"canvasActions":"کردارەکانی تابلۆ","selectedShapeActions":"کردارەکانی شێوەی دەستنیشانکراو","shapes":"شێوەکان"},"hints":{"canvasPanning":"بۆ جوڵاندنی تابلۆ، ویلی ماوسەکەت یان دوگمەی سپەیس بگرە لەکاتی ڕاکێشاندە، یانیش ئامرازی دەستەکە بەکاربهێنە","linearElement":"کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ","freeDraw":"کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە","text":"زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن","embeddable":"","text_selected":"دووجار کلیک بکە یان ENTER بکە بۆ دەستکاریکردنی دەق","text_editing":"بۆ تەواوکردنی دەستکاریکردنەکە Escape یان Ctrl/Cmd+ENTER بکە","linearElementMulti":"کلیک لەسەر کۆتا خاڵ بکە یان Escape یان Enter بکە بۆ تەواوکردن","lockAngle":"دەتوانیت گۆشە سنووردار بکەیت بە ڕاگرتنی SHIFT","resize":"دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","resizeImage":"دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","rotate":"دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا","lineEditor_info":"یان Ctrl یان Cmd بگرە و دوانە کلیک بکە یانیش پەنجە بنێ بە Ctrl یان Cmd + ئینتەر بۆ دەستکاریکردنی خاڵەکان","lineEditor_pointSelected":"بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە","lineEditor_nothingSelected":"خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،\\nیان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان","placeImage":"کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت","publishLibrary":"کتێبخانەی تایبەت بە خۆت بڵاوبکەرەوە","bindTextToElement":"بۆ زیادکردنی دەق enter بکە","deepBoxSelect":"CtrlOrCmd ڕابگرە بۆ هەڵبژاردنی قووڵ، و بۆ ڕێگریکردن لە ڕاکێشان","eraserRevert":"بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە","firefox_clipboard_write":"ئەم تایبەتمەندییە بە ئەگەرێکی زۆرەوە دەتوانرێت چالاک بکرێت بە ڕێکخستنی ئاڵای \\"dom.events.asyncClipboard.clipboardItem\\" بۆ \\"true\\". بۆ گۆڕینی ئاڵاکانی وێبگەڕ لە فایەرفۆکسدا، سەردانی لاپەڕەی \\"about:config\\" بکە.","disableSnapping":""},"canvasError":{"cannotShowPreview":"ناتوانرێ پێشبینین پیشان بدرێت","canvasTooBig":"تابلۆکە لەوانەیە زۆر گەورەبێت.","canvasTooBigTip":"زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە."},"errorSplash":{"headingMain":"تووشی هەڵەیەک بوو. هەوڵ بدە ","clearCanvasMessage":"ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ","clearCanvasCaveat":" ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ","trackedToSentry":"هەڵەکە لەگەڵ ناسێنەری {{eventId}} لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.","openIssueMessage":"ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.","sceneContent":"پێکهاتەی ناو دیمەنەکە:"},"roomDialog":{"desc_intro":"دەتوانیت خەڵک بانگهێشت بکەیت بۆ دیمەنی ئێستات بۆ هاوکاری کردن لەگەڵت.","desc_privacy":"نیگەران مەبە، دانیشتنەکە کۆدکردنی کۆتایی بە کۆتایی بەکاردەهێنێت، بۆیە هەرچییەک بکێشیت بە تایبەتی دەمێنێتەوە. تەنانەت سێرڤەرەکەمان ناتوانێت بزانێت کە تۆ چیت دروستکردووە.","button_startSession":"دەستپێکردنی دانیشتن","button_stopSession":"وەستاندنی دانیشتن","desc_inProgressIntro":"دانیشتنی هاوکاری ڕاستەوخۆ ئێستا لە ئارادایە.","desc_shareLink":"هاوبەشکردنی ئەم لینکە لەگەڵ هەر کەسێک کە دەتەوێت هاوکاری بکەیت لەگەڵ:","desc_exitSession":"وەستاندنی دانیشتنەکە پەیوەندیت لەگەڵ ژوورەکە دەپچڕێنێت، بەڵام تۆ دەتوانیت بەردەوام بیت لە کارکردن لەگەڵ دیمەنەکە، لە ناوخۆدا. تێبینی بکە کە ئەمە کاریگەری لەسەر کەسانی تر نابێت، وە ئەوان هێشتا دەتوانن هاوکاری بکەن لەسەر وەشانەکەیان.","shareTitle":"بەشداری بکە لە دانیشتنی هاریکاری ڕاستەوخۆ لە ئێکسکالیدراو"},"errorDialog":{"title":"هه‌ڵه‌ ڕوویدا"},"exportDialog":{"disk_title":"پاشەکەوت بکە لە دیسک","disk_details":"هەناردەکردنی داتای دیمەنەکە بۆ فایلێک کە دواتر دەتوانیت لێی هاوردە بکەیت.","disk_button":"پاشەکەوت بکە بۆ فایل","link_title":"بەستەری هاوبەشیپێکردن","link_details":"ناردن وەک بەستەری تەنها-خوێندنەوە.","link_button":"هەناردەکردن بۆ بەستەر","excalidrawplus_description":"دیمەنەکە لە شوێنی کارکردنی Excalidraw+ هەڵبگرە.","excalidrawplus_button":"هەناردەکردن","excalidrawplus_exportError":"لەم ساتەدا نەتوانرا هەناردە بکرێت بۆ Excalidrow+..."},"helpDialog":{"blog":"بلۆگەکەمان بخوێنەوە","click":"گرتە","deepSelect":"دەستنیشانکردنی قوڵ","deepBoxSelect":"لەناو بۆکسەکەدا بە قووڵی هەڵبژێرە، و ڕێگری لە ڕاکێشان بکە","curvedArrow":"تیری نوشتاوە","curvedLine":"هێڵی نوشتاوە","documentation":"دۆکیومێنتەیشن","doubleClick":"دوو گرتە","drag":"راکێشان","editor":"دەستکاریکەر","editLineArrowPoints":"دەستکاری خاڵەکانی هێڵ/تیر بکە","editText":"دەستکاری دەق بکە / لەیبڵێک زیاد بکە","github":"کێشەیەکت دۆزیەوە؟ پێشکەشکردن","howto":"شوێن ڕینماییەکانمان بکەوە","or":"یان","preventBinding":"ڕێگریبکە لە نوشتاناوەی تیر","tools":"ئامرازەکان","shortcuts":"کورتکراوەکانی تەختەکلیل","textFinish":"تەواوکردنی دەستکاریکردن (دەستکاریکەری دەق)","textNewLine":"زیادکردنی دێڕی نوێ (دەستکاریکەری دەق)","title":"یارماتی","view":"دیمەن","zoomToFit":"زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت","zoomToSelection":"زووم بکە بۆ دەستنیشانکراوەکان","toggleElementLock":"قفڵ/کردنەوەی دەستنیشانکراوەکان","movePageUpDown":"لاپەڕەکە بجوڵێنە بۆ سەرەوە/خوارەوە","movePageLeftRight":"لاپەڕەکە بجوڵێنە بۆ چەپ/ڕاست"},"clearCanvasDialog":{"title":"تابلۆکە خاوێن بکەرەوە"},"publishDialog":{"title":"پێشکەشکردنی کتێبخانە","itemName":"ناوی بڕگە","authorName":"ناوی نوسەر","githubUsername":"ناوی بەکارهێنەری Github","twitterUsername":"ناوی بەکارهێنەری Twitter","libraryName":"ناوی کتێبخانە","libraryDesc":"وەسفی کتێبخانە","website":"ماڵپەڕ","placeholder":{"authorName":"ناوەکات یاخود ناوی بەکارهێنەر","libraryName":"ناوی کتێبخانەکەت","libraryDesc":"وەسفی کتێبخانەکەت بۆ یارمەتیدانی خەڵک بۆ تێگەیشتن لە بەکارهێنانی","githubHandle":"ناوی GitHub (ئارەزوومەندانە)، بۆیە دەتوانیت دەستکاری کتێبخانەکە بکەیت کاتێک پێشکەش دەکرێت بۆ پێداچوونەوە","twitterHandle":"ناوی بەکارهێنەری تویتەر (ئارەزوومەندانە)، بۆیە بزانین لەکاتی بانگەشەکردن لە ڕێگەی تویتەرەوە کریدت بۆ کێ بکەین","website":"لینکی ماڵپەڕی تایبەتی خۆت یان شوێنێکی تر (ئارەزومەندانە)"},"errors":{"required":"داواکراوە","website":"URLێکی دروست تێبنووسە"},"noteDescription":"کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو کۆگای کتێبخانەی گشتیبۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن.","noteGuidelines":"کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی ڕێنماییەکان پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە.","noteLicense":"بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی مۆڵەتی MIT، کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت","noteItems":"هەر شتێکی کتێبخانە دەبێت ناوی تایبەتی خۆی هەبێت بۆ ئەوەی بتوانرێت فلتەر بکرێت. ئەم بابەتانەی کتێبخانانەی خوارەوە لەخۆدەگرێت:","atleastOneLibItem":"تکایە بەلایەنی کەمەوە یەک بڕگەی کتێبخانە دیاریبکە بۆ دەستپێکردن","republishWarning":"تێبینی: هەندێک لە ئایتمە دیاریکراوەکان نیشانکراون وەک ئەوەی پێشتر بڵاوکراونەتەوە/نێردراون. تەنها پێویستە شتەکان دووبارە پێشکەش بکەیتەوە لە کاتی نوێکردنەوەی کتێبخانەیەکی هەبوو یان پێشکەشکردن."},"publishSuccessDialog":{"title":"کتێبخانە پێشکەش کرا","content":"سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیتلێرە"},"confirmDialog":{"resetLibrary":"ڕێکخستنەوەی کتێبخانە","removeItemsFromLib":"لابردنی ئایتمە دیاریکراوەکان لە کتێبخانە"},"imageExportDialog":{"header":"وێنە هەناردە بکە","label":{"withBackground":"پاشبنەما","onlySelected":"تەنها دیاریکراوەکان","darkMode":"دۆخی تاریک","embedScene":"دیمەنەکە بەکاربهێنەرەوە","scale":"قەبارە","padding":"بۆشایی"},"tooltip":{"embedScene":"داتاکانی دیمەنەکە لە فایلە هەناردەکراوەکەی PNG/SVG هەڵدەگیرێن بۆ ئەوەی دیمەنەکە لێیەوە بگەڕێتەوە.\\nقەبارەی پەڕگەی هەناردەکراو زیاد دەکات."},"title":{"exportToPng":"هەناردە بکە وەک PNG","exportToSvg":"هەناردە بکە وەک SVG","copyPngToClipboard":"لەبەربگرەوە بۆ سەر تەختەنوس"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس"}},"encrypted":{"tooltip":"وێنەکێشانەکانت لە کۆتاییەوە بۆ کۆتایی کۆد کراون بۆیە سێرڤەرەکانی ئێکسکالیدرا هەرگیز نایانبینن.","link":"بلۆگ پۆست لەسەر کۆدکردنی کۆتای بۆ کۆتای لە ئێکسکالیدرەو"},"stats":{"angle":"گۆشە","element":"توخم","elements":"توخمەکان","height":"بەرزی","scene":"دیمەنەکە","selected":"دەستنیشانکراوەکان","storage":"بیرگە","title":"ئامار بۆ نێردەکان","total":"گشتی","version":"وەشان","versionCopy":"کلیک بۆ لەبەرگرتنەوە","versionNotAvailable":"وەشان بەردەست نییە","width":"پانی"},"toast":{"addedToLibrary":"زیادکرا بۆ کتێبخانە","copyStyles":"ستایلی کۆپیکراو.","copyToClipboard":"لەبەرگیرایەوە بۆ تەختەنوس.","copyToClipboardAsPng":"کۆپی کراوە {{exportSelection}} بۆ کلیپبۆرد وەک PNG\\n({{exportColorScheme}})","fileSaved":"فایل هەڵگیرا.","fileSavedToFilename":"هەڵگیراوە بۆ {filename}","canvas":"تابلۆ","selection":"دەستنیشانکراوەکان","pasteAsSingleElement":"بۆ دانانەوە وەکو یەک توخم یان دانانەوە بۆ نێو دەسکاریکەرێکی دەق کە بوونی هەیە {{shortcut}} بەکاربهێنە","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ڕوون","black":"ڕەش","white":"سپی","red":"سور","pink":"پەمەیی","grape":"مێوژی","violet":"مۆری کاڵ","gray":"خۆڵەمێشی","blue":"شین","cyan":"شینی ئاسمانی","teal":"شەدری","green":"سه‌وز","yellow":"زەرد","orange":"پرتەقاڵی","bronze":"برۆنزی"},"welcomeScreen":{"app":{"center_heading":"هەموو داتاکانت لە ناوخۆی وێنگەڕەکەتدا پاشەکەوت کراوە.","center_heading_plus":"ویستت بڕۆیت بۆ Excalidraw+?","menuHint":"هەناردەکردن، ڕێکخستنەکان، زمانەکان، ..."},"defaults":{"menuHint":"هەناردەکردن، ڕێکخستنەکان، و زیاتر...","center_heading":"دایاگرامەکان. ئاسان. کراون.","toolbarHint":"ئامرازێک هەڵبگرە و دەستبکە بە کێشان!","helpHint":"قەدبڕەکان و یارمەتی"}},"colorPicker":{"mostUsedCustomColors":"زۆرترین ڕەنگە باوە بەکارهاتووەکان","colors":"ڕەنگەکان","shades":"سێبەرەکان","hexCode":"کۆدی هێکس","noShades":"هیچ سێبەرێک بۆ ئەم ڕەنگە بەردەست نییە"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/lt-LT-json-2c3d35d6fb5dbf95a27e.js b/public/excalidraw/excalidraw-assets-dev/locales/lt-LT-json-2c3d35d6fb5dbf95a27e.js new file mode 100644 index 0000000..5672dee --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/lt-LT-json-2c3d35d6fb5dbf95a27e.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/lt-LT-json"],{ + +/***/ "../../locales/lt-LT.json": +/*!********************************!*\ + !*** ../../locales/lt-LT.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Įklijuoti","pasteAsPlaintext":"Įklijuoti kaip paprastą tekstą","pasteCharts":"Įklijuoti diagramas","selectAll":"Pažymėti viską","multiSelect":"Pridėkite elementą prie pasirinktų","moveCanvas":"Judinti drobę","cut":"Iškirpti","copy":"Kopijuoti","copyAsPng":"Kopijuoti į iškarpinę kaip PNG","copyAsSvg":"Kopijuoti į iškarpinę kaip SVG","copyText":"Kopijuoti į iškarpinę kaip tekstą","bringForward":"Kelti priekio link","sendToBack":"Nustumti į užnugarį","bringToFront":"Iškelti į priekį","sendBackward":"Nustumti link užnugario","delete":"Ištrinti","copyStyles":"Kopijuoti stilius","pasteStyles":"Įklijuoti stilius","stroke":"Linija","background":"Fonas","fill":"Užpildymas","strokeWidth":"Linijos storis","strokeStyle":"Linijos stilius","strokeStyle_solid":"Ištisinė","strokeStyle_dashed":"Brūkšniuota","strokeStyle_dotted":"Taškuota","sloppiness":"Netvarkingumas","opacity":"Nepermatomumas","textAlign":"Teksto lygiavimas","edges":"Kraštai","sharp":"Aštrus","round":"Užapvalintas","arrowheads":"Rodyklės viršūnės","arrowhead_none":"Jokios","arrowhead_arrow":"Rodyklė","arrowhead_bar":"Brukšnys","arrowhead_dot":"Taškas","arrowhead_triangle":"Trikampis","fontSize":"Šrifto dydis","fontFamily":"Šriftas","addWatermark":"Sukurta su Excalidraw","handDrawn":"Ranka rašytas","normal":"Normalus","code":"Kodas","small":"Mažas","medium":"Vidutinis","large":"Didelis","veryLarge":"Labai didelis","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"Plonas","bold":"Pastorintas","left":"Kairėje","center":"Centre","right":"Dešinėje","extraBold":"Labiau pastorintas","architect":"Architektas","artist":"Menininkas","cartoonist":"Karikatūristas","fileTitle":"Failo pavadinimas","colorPicker":"Spalvos parinkiklis","canvasColors":"","canvasBackground":"Drobės fonas","drawingCanvas":"","layers":"Sluoksniai","actions":"Veiksmai","language":"Kalba","liveCollaboration":"Bendradarbiavimas gyvai...","duplicateSelection":"","untitled":"","name":"","yourName":"Jūsų vardas","madeWithExcalidraw":"Sukurta su Excalidraw","group":"Grupuoti pasirinkimą","ungroup":"Išgrupuoti pasirinkimą","collaborators":"Bendradarbiautojai","showGrid":"Rodyti tinklelį","addToLibrary":"Pridėti į biblioteką","removeFromLibrary":"Pašalinti iš bibliotekos","libraryLoadingMessage":"","libraries":"Naršyti bibliotekas","loadingScene":"","align":"Lygiuoti","alignTop":"Lygiuoti viršuje","alignBottom":"Lygiuoti apačioje","alignLeft":"Lygiuoti kairėje","alignRight":"Lygiuoti dešinėje","centerVertically":"Centruoti vertikaliai","centerHorizontally":"Centruoti horizontaliai","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"Apversti horizontaliai","flipVertical":"Apversti vertikaliai","viewMode":"","share":"Dalintis","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"Asmeninė biblioteka","excalidrawLib":"Exaclidraw biblioteka","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Redeguoti nuorodą","editEmbed":"","create":"Sukurti nuorodą","createEmbed":"","label":"Nuoroda","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Užrakinti","unlock":"Atrakinti","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"Eksportuoti į failą","exportImage":"","export":"","copyToClipboard":"Kopijuoti į iškarpinę","save":"","saveAs":"Išsaugoti kaip","load":"","getShareableLink":"Gauti nuorodą dalinimuisi","close":"Uždaryti","selectLanguage":"Pasirinkite kalbą","scrollBackToContent":"","zoomIn":"Priartinti","zoomOut":"Nutolinti","resetZoom":"","menu":"Meniu","done":"","edit":"Redaguoti","undo":"Anuliuoti","redo":"","resetLibrary":"Atstatyti biblioteką","createNewRoom":"Sukurti naują kambarį","fullScreen":"Visas ekranas","darkMode":"Tamsus režimas","lightMode":"Šviesus režimas","zenMode":"„Zen“ režimas","objectsSnapMode":"","exitZenMode":"Išeiti iš „Zen“ režimo","cancel":"Atšaukti","clear":"Išvalyti","remove":"Pašalinti","embed":"","publishLibrary":"Paskelbti","submit":"Pateikti","confirm":"Patvirtinti","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Sesijos nutraukimas perrašys ankstesnį, lokaliai išsaugotą piešinį. Ar tikrai to nori?\\n\\n(Jei nori išlaikyti lokalų piešinį, tiesiog uždaryk naršyklės skirtuką.)","errorAddingToLibrary":"Nepavyko įtraukti elemento į biblioteką","errorRemovingFromLibrary":"Nepavyko pašalinti elemento iš bibliotekos","confirmAddLibrary":"Tai įtrauks {{numShapes}} figūrą/-as į tavo biblioteką. Ar tikrai to nori?","imageDoesNotContainScene":"Panašu, jog šis paveiksliukas neturi scenos duomenų. Ar yra įjuntas scenos įtraukimas ekportavimo metu?","cannotRestoreFromImage":"Nepavyko atstatyti scenos iš šio nuotraukos failo","invalidSceneUrl":"Nepavyko suimportuoti scenos iš pateiktos nuorodos (URL). Ji arba blogai suformatuota, arba savyje neturi teisingų Excalidraw JSON duomenų.","resetLibrary":"Tai išvalys tavo biblioteką. Ar tikrai to nori?","removeItemsFromsLibrary":"Ištrinti {{count}} elementą/-us iš bibliotekos?","invalidEncryptionKey":"Šifravimo raktas turi būti iš 22 simbolių. Redagavimas gyvai yra išjungtas.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nepalaikomas failo tipas.","imageInsertError":"Nepyko įkelti paveiksliuko. Pabandyk vėliau...","fileTooBig":"Per didelis failas. Didžiausias leidžiamas dydis yra {{maxSize}}.","svgImageInsertError":"Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.","failedToFetchImage":"","invalidSVGString":"Nevalidus SVG.","cannotResolveCollabServer":"Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.","importLibraryError":"Nepavyko įkelti bibliotekos","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Žymėjimas","image":"Įkelti paveiksliuką","rectangle":"Stačiakampis","diamond":"Deimantas","ellipse":"Elipsė","arrow":"Rodyklė","line":"Linija","freedraw":"Piešti","text":"Tekstas","library":"Biblioteka","lock":"Baigus piešti, išlaikyti pasirinktą įrankį","penMode":"Rašyklio režimas - neleisti prisilietimų","link":"Pridėti / Atnaujinti pasirinktos figūros nuorodą","eraser":"Trintukas","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Veiksmai su drobe","selectedShapeActions":"Veiksmai su pasirinkta figūra","shapes":"Figūros"},"hints":{"canvasPanning":"","linearElement":"Paspaudimai sukurs papildomus taškus, nepertraukiamas tempimas sukurs liniją","freeDraw":"Spausk ir tempk, paleisk kai norėsi pabaigti","text":"Užuomina: tekstą taip pat galima pridėti bet kur su dvigubu pelės paspaudimu, kol parinkas žymėjimo įrankis","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"Pradėti seansą","button_stopSession":"Sustabdyti seansą","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Klaida"},"exportDialog":{"disk_title":"Įrašyti į diską","disk_details":"","disk_button":"Įrašyti į failą","link_title":"Nuoroda dalinimuisi","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Eksportuoti","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"paspaudimas","deepSelect":"","deepBoxSelect":"","curvedArrow":"Banguota rodyklė","curvedLine":"Banguota linija","documentation":"Dokumentacija","doubleClick":"dvigubas paspaudimas","drag":"vilkti","editor":"Redaktorius","editLineArrowPoints":"","editText":"","github":"Radai klaidą? Pateik","howto":"Vadovaukis mūsų gidu","or":"arba","preventBinding":"","tools":"Įrankiai","shortcuts":"Spartieji klavišai","textFinish":"Baigti redagavimą (teksto redaktoriuje)","textNewLine":"Pridėti naują eilutę (tekto redaktoriuje)","title":"Pagalba","view":"","zoomToFit":"","zoomToSelection":"Priartinti iki pažymėtos vietos","toggleElementLock":"","movePageUpDown":"Pajudinti puslapį aukštyn/žemyn","movePageLeftRight":"Pajudinti puslapį kairėn/dešinėn"},"clearCanvasDialog":{"title":"Išvalyti drobę"},"publishDialog":{"title":"Paviešinti biblioteką","itemName":"Elemento pavadinimas","authorName":"Autoriaus vardas","githubUsername":"Github spalyvardis","twitterUsername":"Twitter slapyvardis","libraryName":"Bibliotekos pavadinimas","libraryDesc":"Bibliotekos aprašas","website":"Tinklalapis","placeholder":{"authorName":"Tavo vardas arba spalyvardis","libraryName":"Tavo bibliotekos pavadinimas","libraryDesc":"Tavo bibliotekos aprašas, padėti žmonėms geriau suprasti jos paskirtį","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Privalomas","website":"Įveskite teisingą nuorodą (URL)"},"noteDescription":"Pateik savo biblioteką, jog ji galėtų būti įtraukta į jog kiti žmonės galėtų tai naudoti savo piešiniuose.","noteGuidelines":"Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti gairės","noteLicense":"MIT licencija, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Biblioteka pateikta","content":"Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būsenąčia"},"confirmDialog":{"resetLibrary":"Atstatyti biblioteką","removeItemsFromLib":"Pašalinti pasirinktus elementus iš bibliotekos"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Elementas","elements":"Elementai","height":"Aukštis","scene":"Scena","selected":"Pasirinkta","storage":"Saugykla","title":"Informacija moksliukams","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"Plotis"},"toast":{"addedToLibrary":"Pridėta į biblioteką","copyStyles":"","copyToClipboard":"Nukopijuota į iškarpinę.","copyToClipboardAsPng":"","fileSaved":"Failas išsaugotas.","fileSavedToFilename":"Išsaugota į {filename}","canvas":"drobė","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Permatoma","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/lv-LV-json-fa8973c231afb2ddafe9.js b/public/excalidraw/excalidraw-assets-dev/locales/lv-LV-json-fa8973c231afb2ddafe9.js new file mode 100644 index 0000000..6d45a98 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/lv-LV-json-fa8973c231afb2ddafe9.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/lv-LV-json"],{ + +/***/ "../../locales/lv-LV.json": +/*!********************************!*\ + !*** ../../locales/lv-LV.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Ielīmēt","pasteAsPlaintext":"Ielīmēt kā vienkāršu tekstu","pasteCharts":"Ielīmēt grafikus","selectAll":"Atlasīt visu","multiSelect":"Pievienot elementu atlasei","moveCanvas":"Pārvietot tāfeli","cut":"Izgriezt","copy":"Kopēt","copyAsPng":"Kopēt starpliktuvē kā PNG","copyAsSvg":"Kopēt starpliktuvē kā SVG","copyText":"Kopēt starpliktuvē kā tekstu","bringForward":"Pārvietot vienu slāni augstāk","sendToBack":"Pārvietot uz zemāko slāni","bringToFront":"Pārvietot uz virsējo slāni","sendBackward":"Pārvietot par vienu slāni zemāk","delete":"Dzēst","copyStyles":"Kopēt stilus","pasteStyles":"Ielīmēt stilus","stroke":"Svītras krāsa","background":"Fona krāsa","fill":"Aizpildījums","strokeWidth":"Svītras platums","strokeStyle":"Svītras stils","strokeStyle_solid":"Vienlaidu","strokeStyle_dashed":"Raustīta līnija","strokeStyle_dotted":"Punktota līnija","sloppiness":"Precizitāte","opacity":"Necaurspīdīgums","textAlign":"Teksta līdzināšana","edges":"Malas","sharp":"Asas","round":"Apaļas","arrowheads":"Bultas","arrowhead_none":"Nekādas","arrowhead_arrow":"Bulta","arrowhead_bar":"Svītra","arrowhead_dot":"Punkts","arrowhead_triangle":"Trijstūris","fontSize":"Teksta lielums","fontFamily":"Fontu saime","addWatermark":"Pievienot \\"Radīts ar Excalidraw\\"","handDrawn":"Rokraksts","normal":"Parasts","code":"Kods","small":"Mazs","medium":"Vidējs","large":"Liels","veryLarge":"Ļoti liels","solid":"Pilns","hachure":"Svītrots","zigzag":"Zigzaglīnija","crossHatch":"Šķērssvītrots","thin":"Šaurs","bold":"Trekns","left":"Pa kreisi","center":"Vidū","right":"Pa labi","extraBold":"Īpaši trekns","architect":"Arhitekts","artist":"Mākslinieks","cartoonist":"Karikatūrists","fileTitle":"Datnes nosaukums","colorPicker":"Krāsu atlasītājs","canvasColors":"Izmantots tāfelei","canvasBackground":"Ainas fons","drawingCanvas":"Tāfele","layers":"Slāņi","actions":"Darbības","language":"Valoda","liveCollaboration":"Sadarbība tiešsaistē...","duplicateSelection":"Izveidot kopiju","untitled":"Bez nosaukuma","name":"Vārds","yourName":"Jūsu vārds","madeWithExcalidraw":"Radīts ar Excalidraw","group":"Grupēt atlasīto","ungroup":"Atgrupēt atlasīto","collaborators":"Dalībnieki","showGrid":"Rādīt režģi","addToLibrary":"Pievienot bibliotēkai","removeFromLibrary":"Izņemt no bibliotēkas","libraryLoadingMessage":"Ielādē bibliotēku…","libraries":"Apskatīt bibliotēkas","loadingScene":"Ielādē ainu…","align":"Līdzināt","alignTop":"Līdzināt augšpusē","alignBottom":"Līdzināt lejā","alignLeft":"Līdzināt pa kreisi","alignRight":"Līdzināt pa labi","centerVertically":"Centrēt vertikāli","centerHorizontally":"Centrēt horizontāli","distributeHorizontally":"Izdalīt horizontāli","distributeVertically":"Izdalīt vertikāli","flipHorizontal":"Apmest horizontāli","flipVertical":"Apmest vertikāli","viewMode":"Skata režīms","share":"Kopīgot","showStroke":"Rādīt svītras krāsas atlasītāju","showBackground":"Rādīt fona krāsas atlasītāju","toggleTheme":"Pārslēgt krāsu tēmu","personalLib":"Personīgā bibliotēka","excalidrawLib":"Excalidraw bibliotēka","decreaseFontSize":"Samazināt fonta izmēru","increaseFontSize":"Palielināt fonta izmēru","unbindText":"Atdalīt tekstu","bindText":"Piesaistīt tekstu figūrai","createContainerFromText":"Ietilpināt tekstu figurā","link":{"edit":"Rediģēt saiti","editEmbed":"","create":"Izveidot saiti","createEmbed":"","label":"Saite","labelEmbed":"","empty":""},"lineEditor":{"edit":"Rediģēt līniju","exit":"Aizvērt līnijas redaktoru"},"elementLock":{"lock":"Fiksēt","unlock":"Atbrīvot","lockAll":"Fiksēt visu","unlockAll":"Atbrīvot visu"},"statusPublished":"Publicēts","sidebarLock":"Paturēt atvērtu sānjoslu","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Neviena vienība vēl nav pievienota...","hint_emptyLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu, vai pievienojiet publisku bibliotēku zemāk.","hint_emptyPrivateLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu."},"buttons":{"clearReset":"Atiestatīt tāfeli","exportJSON":"Eksportēt kā failu","exportImage":"Eksportēt attēlu...","export":"Saglabāt uz...","copyToClipboard":"Kopēt starpliktuvē","save":"Saglabāt pašreizējo datni","saveAs":"Saglabāt kā","load":"Atvērt","getShareableLink":"Iegūt kopīgošanas saiti","close":"Aizvērt","selectLanguage":"Izvēlieties valodu","scrollBackToContent":"Atgriezties pie satura","zoomIn":"Tuvināt","zoomOut":"Tālināt","resetZoom":"Atiestatīt tuvinājumu","menu":"Izvēlne","done":"Gatavs","edit":"Rediģēt","undo":"Atsaukt","redo":"Atcelt atsaukšanu","resetLibrary":"Atiestatīt bibliotēku","createNewRoom":"Izveidot jaunu telpu","fullScreen":"Pilnekrāna režīms","darkMode":"Tumšais režīms","lightMode":"Gaišais režīms","zenMode":"Zen režīms","objectsSnapMode":"","exitZenMode":"Pamest Zen režīmu","cancel":"Atcelt","clear":"Notīrīt","remove":"Noņemt","embed":"","publishLibrary":"Publicēt","submit":"Iesniegt","confirm":"Apstiprināt","embeddableInteractionButton":""},"alerts":{"clearReset":"Šī funkcija notīrīs visu tāfeli. Vai turpināt?","couldNotCreateShareableLink":"Nevarēja izveidot kopīgojamo saiti.","couldNotCreateShareableLinkTooBig":"Nevarēja izveidot kopīgojamo saiti – aina ir par lielu","couldNotLoadInvalidFile":"Nevarēja ielādēt nederīgu datni","importBackendFailed":"Ielāde no krātuves neizdevās.","cannotExportEmptyCanvas":"Nevar eksportēt tukšu tāfeli.","couldNotCopyToClipboard":"Nevarēja nokopēt starpliktuvē.","decryptFailed":"Nevarēja atšifrēt datus.","uploadedSecurly":"Augšuplāde nodrošināta ar šifrēšanu no gala līdz galam, kas nozīmē, ka Excalidraw serveri un trešās puses nevar lasīt saturu.","loadSceneOverridePrompt":"Ārēja satura ielāde aizstās jūsu pašreizējo saturu. Vai vēlaties turpināt?","collabStopOverridePrompt":"Sesijas pārtraukšana pārrakstīs jūsu iepriekšējo zīmējumu, kas saglabāts jūsu pārlūkā. Vai turpināt?\\n\\n(Ja vēlaties paturēt zīmējumu, kas saglabāts jūsu pārlūkā, vienkārši aizveriet pārlūka cilni.)","errorAddingToLibrary":"Nevarēja pievienot vienumu bibliotēkai","errorRemovingFromLibrary":"Nevarēja izņemt vienumu no bibliotēkas","confirmAddLibrary":"Šī funkcija pievienos {{numShapes}} formu(-as) jūsu bibliotēkai. Vai turpināt?","imageDoesNotContainScene":"Šķiet, ka attēls nesatur ainas datus. Vai iespējojāt ainas iegulšanu, kad eksportējāt?","cannotRestoreFromImage":"Ainu nevarēja atgūt no attēla datnes","invalidSceneUrl":"Nevarēja importēt ainu no norādītā URL. Vai nu tas ir nederīgs, vai nesatur derīgus Excalidraw JSON datus.","resetLibrary":"Šī funkcija iztukšos bibliotēku. Vai turpināt?","removeItemsFromsLibrary":"Vai izņemt {{count}} vienumu(s) no bibliotēkas?","invalidEncryptionKey":"Šifrēšanas atslēgai jābūt 22 simbolus garai. Tiešsaistes sadarbība ir izslēgta.","collabOfflineWarning":"Nav pieejams interneta pieslēgums.\\nJūsu izmaiņas netiks saglabātas!"},"errors":{"unsupportedFileType":"Neatbalstīts datnes veids.","imageInsertError":"Nevarēja ievietot attēlu. Mēģiniet vēlāk...","fileTooBig":"Datne ir par lielu. Lielākais atļautais izmērs ir {{maxSize}}.","svgImageInsertError":"Nevarēja ievietot SVG attēlu. Šķiet, ka SVG marķējums nav derīgs.","failedToFetchImage":"","invalidSVGString":"Nederīgs SVG.","cannotResolveCollabServer":"Nevarēja savienoties ar sadarbošanās serveri. Lūdzu, pārlādējiet lapu un mēģiniet vēlreiz.","importLibraryError":"Nevarēja ielādēt bibliotēku","collabSaveFailed":"Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","collabSaveFailed_sizeExceeded":"Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Atlase","image":"Ievietot attēlu","rectangle":"Taisnstūris","diamond":"Rombs","ellipse":"Elipse","arrow":"Bulta","line":"Līnija","freedraw":"Zīmēt","text":"Teksts","library":"Bibliotēka","lock":"Paturēt izvēlēto rīku pēc darbības","penMode":"Pildspalvas režīms – novērst pieskaršanos","link":"Pievienot/rediģēt atlasītās figūras saiti","eraser":"Dzēšgumija","frame":"","embeddable":"","laser":"","hand":"Roka (panoramēšanas rīks)","extraTools":""},"headings":{"canvasActions":"Tāfeles darbības","selectedShapeActions":"Izvēlētās formas darbības","shapes":"Formas"},"hints":{"canvasPanning":"Lai bīdītu tāfeli, turiet nospiestu ritināšanas vai atstarpes taustiņu, vai izmanto rokas rīku","linearElement":"Klikšķiniet, lai sāktu zīmēt vairākus punktus; velciet, lai zīmētu līniju","freeDraw":"Spiediet un velciet; atlaidiet, kad pabeidzat","text":"Ieteikums: lai pievienotu tekstu, varat arī jebkur dubultklikšķināt ar atlases rīku","embeddable":"","text_selected":"Dubultklikšķiniet vai spiediet ievades taustiņu, lai rediģētu tekstu","text_editing":"Spiediet iziešanas taustiņu vai CtrlOrCmd+ENTER, lai beigtu rediģēt","linearElementMulti":"Klikšķiniet uz pēdējā punkta vai spiediet izejas vai ievades taustiņu, lai pabeigtu","lockAngle":"Varat ierobežot leņķi, turot nospiestu SHIFT","resize":"Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,\\nvai arī ALT, lai mainītu izmēru ap centru","resizeImage":"Varat brīvi mainīt izmēru, turot nospiestu SHIFT;\\nturiet nospiestu ALT, lai mainītu izmēru ap centru","rotate":"Rotējot varat ierobežot leņķi, turot nospiestu SHIFT","lineEditor_info":"Turiet CtrlOrCmd un dubultklikšķiniet, vai spiediet CtrlOrCmd + Enter, lai rediģētu punktus","lineEditor_pointSelected":"Spiediet dzēšanas taustiņu, lai noņemtu punktus, – CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu","lineEditor_nothingSelected":"Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),\\nvai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus","placeImage":"Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru","publishLibrary":"Publicēt savu bibliotēku","bindTextToElement":"Spiediet ievades taustiņu, lai pievienotu tekstu","deepBoxSelect":"Turient nospiestu Ctrl vai Cmd, lai atlasītu dziļumā un lai nepieļautu objektu pavilkšanu","eraserRevert":"Turiet Alt, lai noņemtu elementus no dzēsšanas atlases","firefox_clipboard_write":"Šis iestatījums var tikt ieslēgts ar \\"dom.events.asyncClipboard.clipboardItem\\" marķieri pārslēgtu uz \\"true\\". Lai mainītu pārlūka marķierus Firefox, apmeklē \\"about:config\\" lapu.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Nevar rādīt priekšskatījumu","canvasTooBig":"Iespējams, tāfele ir par lielu.","canvasTooBigTip":"Ieteikums: mēģiniet satuvināt pašus tālākos elementus."},"errorSplash":{"headingMain":"Notikusi kļūda. Mēģiniet ","clearCanvasMessage":"Ja pārlādēšana nestrādā, mēģiniet ","clearCanvasCaveat":" Tas novedīs pie darba zaudēšanas ","trackedToSentry":"Kļūda ar kodu {{eventId}} tika noteikta mūsu sistēmā.","openIssueMessage":"Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.","sceneContent":"Ainas saturs:"},"roomDialog":{"desc_intro":"Varat ielūgt cilvēkus pašreizējajā ainā, lai sadarbotos ar tiem.","desc_privacy":"Neuztraucieties, sesija izmanto šifrēšanu no gala līdz galam, tātad jūsu zīmējums paliks privāts. Pat mūsu serveri nevarēs redzēt, ar ko esat nācis klajā.","button_startSession":"Sākt sesiju","button_stopSession":"Beigt sesiju","desc_inProgressIntro":"Notiek tiešsaistes sadarbības sesija.","desc_shareLink":"Dalieties ar šo saiti ar jebkuru, ar ko vēlaties sadarboties:","desc_exitSession":"Sesijas beigšana jūs atvienos no sadarbošanās, bet jūs vēl joprojām varēsiet strādāt ar ainu savā datorā. Ievērojiet, ka šis neietekmēs citus dalībniekus, un viņi vēl joprojām varēs sadarboties savā ainas versijā.","shareTitle":"Pievienoties tiešsaistes sadarbībai programmā Excalidraw"},"errorDialog":{"title":"Kļūda"},"exportDialog":{"disk_title":"Saglabāt diskā","disk_details":"Eksportēt ainas datus datnē, ko vēlāk varēsiet importēt.","disk_button":"Saglabāt datnē","link_title":"Kopīgošanas saite","link_details":"Eksportēt kā tikai lasāmu saiti.","link_button":"Eksportēt kā saiti","excalidrawplus_description":"Saglabāt ainu savā Excalidraw+ darbvietā.","excalidrawplus_button":"Eksportēt","excalidrawplus_exportError":"Pašreiz nevarēja eksportēt uz Excalidraw+..."},"helpDialog":{"blog":"Lasīt mūsu blogu","click":"klikšķis","deepSelect":"Atlasīt dziļumā","deepBoxSelect":"Atlasīt dziļumā kastes ietvaros, un nepieļaut pavilkšanu","curvedArrow":"Liekta bulta","curvedLine":"Liekta līnija","documentation":"Dokumentācija","doubleClick":"dubultklikšķis","drag":"vilkt","editor":"Redaktors","editLineArrowPoints":"Rediģēt līniju/bultu punktus","editText":"Rediģēt tekstu/pievienot birku","github":"Sastapāt kļūdu? Ziņot","howto":"Sekojiet mūsu instrukcijām","or":"vai","preventBinding":"Novērst bultu piesaistīšanos","tools":"Rīki","shortcuts":"Tastatūras saīsnes","textFinish":"Pabeigt rediģēšanu (teksta redaktorā)","textNewLine":"Nākamā rindiņa (teksta redaktorā)","title":"Palīdzība","view":"Skatīt","zoomToFit":"Iestatīt mērogu, kas iekļauj visus elementus","zoomToSelection":"Iestatīt mērogu, lai rādītu atlasi","toggleElementLock":"Fiksēt/atbrīvot atlasīto","movePageUpDown":"Pārvietot lapu augšup/lejup","movePageLeftRight":"Pārvietot lapu pa labi/kreisi"},"clearCanvasDialog":{"title":"Notīrīt tāfeli"},"publishDialog":{"title":"Publicēt bibliotēku","itemName":"Vienuma nosaukums","authorName":"Autora vārds","githubUsername":"GitHub lietotājvārds","twitterUsername":"Twitter lietotājvārds","libraryName":"Bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts","website":"Mājaslapa","placeholder":{"authorName":"Jūsu vārds vai lietotājvārds","libraryName":"Jūsu bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts, kas palīdzēs citiem saprast tās pielietojumu","githubHandle":"GitHub lietotājvārds (neobligāts), lai jūs varētu rediģēt bibliotēku pēc tās iesniegšanas izskatīšanai","twitterHandle":"Twitter lietotājvārds (neobligāts), lai mēs varētu jūs pieminēt kā autoru, kad reklamēsim bibliotēku platformā Twitter","website":"Saikne uz jūsu personīgo mājaslapu vai kādu citu lapu (neobligāta)"},"errors":{"required":"Obligāts","website":"Ievadiet derīgu URL"},"noteDescription":"Iesniegt savu bibliotēku iekļaušanai publiskajā bibliotēku datubāzē, lai citi to varētu izmantot savos zīmējumos.","noteGuidelines":"Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet norādījumus pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams.","noteLicense":"Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar MIT Licenci, kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem.","noteItems":"Katram bibliotēkas vienumam jābūt savam nosaukumam, lai to varētu atrast filtrējot. Tiks iekļauti sekojošie bibliotēkas vienumi:","atleastOneLibItem":"Lūdzu, atlasiet vismaz vienu bibliotēkas vienumu, lai sāktu darbu","republishWarning":"Ievēro: daži no atzīmētajiem objektiem jau atzīmēti kā publicēti vai iesniegti publicēšanai. Tos vajadzētu atkārtoti iesniegt tikai tad, ja vēlies labot esošo bibliotēku."},"publishSuccessDialog":{"title":"Bibliotēka iesniegta","content":"Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusamšeit"},"confirmDialog":{"resetLibrary":"Atiestatīt bibliotēku","removeItemsFromLib":"Noņemt atlasītos vienumus no bibliotēkas"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Jūsu zīmējumi ir šifrēti no gala līdz galam; līdz ar to Excalidraw serveri tos nekad neredzēs.","link":"Ieraksts par šifrēšanu no gala līdz galam Excalidraw blogā"},"stats":{"angle":"Leņķis","element":"Elements","elements":"Elementi","height":"Augstums","scene":"Aina","selected":"Atlasīti","storage":"Krātuve","title":"Statistika entuziastiem","total":"Kopā","version":"Versija","versionCopy":"Klikšķiniet, lai nokopētu","versionNotAvailable":"Versija nav pieejama","width":"Platums"},"toast":{"addedToLibrary":"Pievienots bibliotēkai","copyStyles":"Nokopēja stilus.","copyToClipboard":"Nokopēja starpliktuvē.","copyToClipboardAsPng":"Nokopēja {{exportSelection}} starpliktuvē kā PNG ({{exportColorScheme}})","fileSaved":"Datne saglabāta.","fileSavedToFilename":"Saglabāts kā {filename}","canvas":"tāfeli","selection":"atlasi","pasteAsSingleElement":"Izmantojiet {{shortcut}}, lai ielīmētu kā jaunu elementu, vai ielīmētu esošā teksta lauciņā","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Caurspīdīgs","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.","center_heading_plus":"Vai tā vietā vēlies doties uz Excalidraw+?","menuHint":"Eksportēšana, iestatījumi, valodas..."},"defaults":{"menuHint":"Eksportēšana, iestatījumi un vēl...","center_heading":"Diagrammas. Izveidotas. Vienkārši.","toolbarHint":"Izvēlies rīku un sāc zīmēt!","helpHint":"Īsceļi un palīdzība"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/mr-IN-json-2949146743072eb11b40.js b/public/excalidraw/excalidraw-assets-dev/locales/mr-IN-json-2949146743072eb11b40.js new file mode 100644 index 0000000..a146719 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/mr-IN-json-2949146743072eb11b40.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/mr-IN-json"],{ + +/***/ "../../locales/mr-IN.json": +/*!********************************!*\ + !*** ../../locales/mr-IN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"चिटकवा","pasteAsPlaintext":"साधा मजकूर च्या रुपात पेस्ट करा","pasteCharts":"चार्ट चिकटवा","selectAll":"समस्त निवडा","multiSelect":"निवडित तत्व जोडा","moveCanvas":"पटल हलवा","cut":"कापा","copy":"प्रतिलिपी","copyAsPng":"PNG रूपे फळी वर कॉपी करा","copyAsSvg":"SVG रूपे फळी वर कॉपी करा","copyText":"लिखित रूपे फळी वर कॉपी करा","bringForward":"पुढे पुढे आणा","sendToBack":"सर्वात मागे करा","bringToFront":"सर्वात पुढे आणा","sendBackward":"मागे मागे करा","delete":"हटवा","copyStyles":"शैली कॉपी करा","pasteStyles":"कॉपी केलेली शैली वापरा","stroke":"रेघे चा रंग","background":"पार्श्वभूमी","fill":"भरा","strokeWidth":"रेघ रुंदी","strokeStyle":"रेघ शैली","strokeStyle_solid":"भरीव","strokeStyle_dashed":"तुटित तुटित","strokeStyle_dotted":"ठिपके ठिपके","sloppiness":"गबाळेपणा","opacity":"अपारदर्शक्ता","textAlign":"मजकूर संरेखन","edges":"किनारी","sharp":"टोचरं","round":"गोलाकार","arrowheads":"बाण टोक","arrowhead_none":"कुठलाहि नाही","arrowhead_arrow":"बाण","arrowhead_bar":"दांडुक","arrowhead_dot":"ठिपका","arrowhead_triangle":"त्रिकोण","fontSize":"अक्षर आकार","fontFamily":"अक्षर समूह","addWatermark":"\\"एक्सकेलीड्रॉ ने बनवलेलं\\" जोडा","handDrawn":"हातानी बनवलेलं","normal":"सामान्य","code":"सांकेतिक लिपि","small":"छोटे","medium":"मध्यम","large":"मोठं","veryLarge":"फार मोठं","solid":"भरीव","hachure":"हैशूर रेखांकन","zigzag":"वाकडी तिकड़ी","crossHatch":"आडव्या रेघा","thin":"पातळ","bold":"जाड","left":"डावं","center":"मधे","right":"उजवं","extraBold":"जास्त जाड","architect":"वास्तुविद्याविशारद","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फाईलचे नाव","colorPicker":"रंग निवडक","canvasColors":"कॅनवास वर वापरलेले","canvasBackground":"पटल पार्श्वभूमि","drawingCanvas":"चित्र पटल","layers":"स्तर","actions":"क्रिया","language":"भाषा","liveCollaboration":"ज्वलंत सहयोग...","duplicateSelection":"प्रतिलिपि","untitled":"अशीर्षकांकित","name":"नाव","yourName":"तुमचे नाव","madeWithExcalidraw":"एक्सकेलीड्रॉ ने बनवलेलं","group":"समूह निवड","ungroup":"समूह निवड ला रद्द करा","collaborators":"Sahayog","showGrid":"ग्रिड दाखवा","addToLibrary":"संग्रह मधे सम्मिलित करा","removeFromLibrary":"संग्रहातून काढ़ा","libraryLoadingMessage":"संग्रह लोड होत आहे…","libraries":"संग्रह देखे","loadingScene":"दृश्य लोड होत आहे…","align":"संरेखित करा","alignTop":"वर संरेखित करा","alignBottom":"खाली संरेखित करा","alignLeft":"डावा बाजूला संरेखित करा","alignRight":"उजव्या बाजूला संरेखित करा","centerVertically":"मधल्या मधे उभं संरेखित करा","centerHorizontally":"मधल्या मधे आडवं संरेखित करा","distributeHorizontally":"आडवं वितरित करा","distributeVertically":"उभं वितरित करा","flipHorizontal":"आडवं फ्लिप करा","flipVertical":"उभं फ्लिप करा","viewMode":"पहायची पद्धत","share":"सामायिक करा","showStroke":"रेघ रंग निवड यंत्र दाखवा","showBackground":"पार्श्वभूमि: रंग निवड यंत्र दाखवा","toggleTheme":"शैली बदला","personalLib":"वैयक्तिक संग्रह","excalidrawLib":"एक्सकेलीड्रॉ संग्रह","decreaseFontSize":"अक्षर आकार छोटा करा","increaseFontSize":"अक्षर आकार मोठा करा","unbindText":"लेखन संबंध संपवा","bindText":"शब्द समूह ला पात्रात घ्या","createContainerFromText":"मजकूर कंटेनर मधे मोडून दाखवा","link":{"edit":"दुवा संपादन","editEmbed":"","create":"दुवा तयार करा","createEmbed":"","label":"दुवा","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेघ संपादन","exit":"रेघ संपादकाबाहेर"},"elementLock":{"lock":"कुलूपात ठेवा","unlock":"कुलूपातून बाहेर","lockAll":"सर्व कुलूपात ठेवा","unlockAll":"सर्व कुलूपातून बाहेर"},"statusPublished":"प्रकाशित करा","sidebarLock":"साइडबार उघडं ठेवा","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलकातून रंग निवडा"},"library":{"noItems":"अजून कोणतेही आइटम जोडलेले नाही...","hint_emptyLibrary":"पटल वर एक वस्तु निवडुन एथे जोडा, किव्हा एक संग्रह जन कोष कडुन खाली स्थापित करा.","hint_emptyPrivateLibrary":"ईथे जोडण्या साठी पटल वरून एक वस्तु निवडा."},"buttons":{"clearReset":"पटल पुसा","exportJSON":"फ़ाइलमधे बाहेर ठेवा","exportImage":"प्रतिमा निर्यात करा...","export":"येथे सुरक्षित करा...","copyToClipboard":"फळी वर कॉपी करा","save":"वर्तमान फ़ाइल मधे जतन करा","saveAs":"ह्या नावाने जतन करा","load":"उघडा","getShareableLink":"सामायिके साठी दुवा प्राप्त करा","close":"बंद करा","selectLanguage":"भाषा निवड करा","scrollBackToContent":"पहलेचा मजकुर वर मागे स्क्रॉल करा","zoomIn":"मोठं करून पहा","zoomOut":"छोटं करून पहा","resetZoom":"छोटं मोठं करणं बंद करा","menu":"यादि","done":"झालं","edit":"संपादित करा","undo":"पूर्ववत करा","redo":"पुन्हा करा(&R)","resetLibrary":"संग्रह पुनर्स्थित करा","createNewRoom":"एक नवी खोली बनवा","fullScreen":"पूर्ण दृश्यपटल","darkMode":"अंधार स्थिथि","lightMode":"उजेड स्थिति","zenMode":"ध्यानग्र स्थिति","objectsSnapMode":"वस्तूंपासून पकड़ा","exitZenMode":"ध्यानग्र स्थितितून बाहेर","cancel":"रद्द","clear":"स्वछ","remove":"हटवा","embed":"","publishLibrary":"प्रकाशित करा","submit":"जमा करा","confirm":"पुष्टि करा","embeddableInteractionButton":""},"alerts":{"clearReset":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","couldNotCreateShareableLink":"सामायी करण करण्या योग्य दुवा नाही बनवता आला.","couldNotCreateShareableLinkTooBig":"सामायी करण करण्या योग्य दुवा नाही बनवता आला: दृश्य फार मोठं आहे","couldNotLoadInvalidFile":"अवैध फ़ाइल लोड करता आली नाही","importBackendFailed":"बैकएंड हून मागवणे विफल झाले.","cannotExportEmptyCanvas":"रिकामा पटल जतन करता येत नाही.","couldNotCopyToClipboard":"पटल वर कॉपी नाही झाली.","decryptFailed":"डीक्रिप्ट करता आले नाही.","uploadedSecurly":"अपलोड या टोकापासून त्या टोकापर्यंत कूटबद्धित करून सुरक्षित केले गेले आहे, हयाचा अर्थ असा की एक्सकेलीड्रॉ सर्व्हर आणि तृतीय पक्ष मजकूर वाचू शकत नाहीत.","loadSceneOverridePrompt":"बाह्य रेखाचित्र लोड केल्याने तुमची तुमचा विद्यमान मजकूर बदलेल. हे काम तुम्हाला चालू ठेवायचे आहे का?","collabStopOverridePrompt":"सत्र थांबवल्याने तुमचे पूर्वीचे, स्थानिकरित्या संग्रहित रेखाचित्र अधिलिखित होईल. तुला खात्री आहे?\\n\\n(तुम्हाला तुमचे स्थानिक रेखाचित्र ठेवायचे असल्यास, त्याऐवजी फक्त ब्राउझर टॅब बंद करा.)","errorAddingToLibrary":"संग्रहात तत्व जोडू शकलो नाही","errorRemovingFromLibrary":"संग्रहातून तत्व काढू शकलो नाही","confirmAddLibrary":"हे तुमच्या संग्राहात {{numShapes}} आकार (एक किव्हा अनेक) जोडेल. तुला खात्री आहे?","imageDoesNotContainScene":"या प्रतिमेमध्ये कोणताही दृश्य डेटा असल्याचे दिसत नाही. बाहेर जतन करताना तुम्ही दृश्य रुतवले होते का?","cannotRestoreFromImage":"प्रतिमा फ़ाइल पासून दृश्य पुनः रचित नाही झाला","invalidSceneUrl":"दिलेल्या यू-आर-एल पासून दृश्य आणू शकलो नाही. तो एकतर बरोबार नाही आहे किंवा त्यात वैध एक्सकेलीड्रॉ जेसन डेटा नाही.","resetLibrary":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","removeItemsFromsLibrary":"संग्रहातून {{count}} तत्व (एक किव्हा अनेक) काढू?","invalidEncryptionKey":"कूटबद्धन कुंजी 22 अक्षरांची असणे आवश्यक आहे. थेट सहयोग अक्षम केले आहे.","collabOfflineWarning":"इंटरनेट कनेक्शन उपलब्ध नाही.\\nतुमचे बदल जतन केले जाणार नाहीत!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार.","imageInsertError":"प्रतिमा आत घालता येत नाही. नंतर पुन्हा प्रयत्न करा...","fileTooBig":"फाइल फार मोठी आहे. आकाराची कमाल परवानगी {{maxSize}} आहे.","svgImageInsertError":"एस-वी-जी प्रतिमा आत घालवू शकलो नाही. एस-वी-जी-मार्क-अप यंत्र अयोग्य आहे.","failedToFetchImage":"","invalidSVGString":"अयोग्य एस-वी-जी.","cannotResolveCollabServer":"कॉलेब-सर्वर हे पोहोचत नाही आहे. पान परत लोड करायचा प्रयत्न करावे.","importLibraryError":"संग्रह प्रतिस्थापित नाही करता आला","collabSaveFailed":"काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।\\n\\nबॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी.","brave_measure_text_error":{"line1":"असं वाटते की तुम्हीं Brave ब्राउज़र वापरतात आहात आणि त्या बरोबार आक्रामक पद्धति चें बोटांचे ठसे हां सेटिंग्स चा विकल्प चयन केलेला आहे.","line2":"हे तुमच्या चित्रांच्या पाठ तत्वांनां खंडित करू शकतात.","line3":"तुम्हाला आमच्या कड़ून खूप आग्रह आहे की हे सेटिंग्स मधले चयन नका करु. हे अनुक्रम हे कसे करावे हे दाखवु शकते.","line4":"ही सेटिंग अक्षम करूनही पृष्ठ योग्यरित्या प्रदर्शित होत नसल्यास, आमच्या GitHub वर समस्या सबमिट करा, किव्हा डिस्कॉर्ड वर आम्हाला लिहा"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"निवड","image":"प्रतिमा आत घाला","rectangle":"आयत","diamond":"चौकोन आकाराचा","ellipse":"अंडाकार","arrow":"बाण","line":"रेखा","freedraw":"रेखांकित करा","text":"टेक्स्ट","library":"संग्रह","lock":"निवडलेले यंत्र चित्रकरण झाल्या नंतर ही सक्रिय ठेवा","penMode":"पेन चा मोड - स्पर्श टाळा","link":"निवडलेल्या आकारासाठी दुवा जोडा/बदल करा","eraser":"खोड रबर","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हात ( सरकवण्या चे उपकरण)","extraTools":""},"headings":{"canvasActions":"पटल क्रिया","selectedShapeActions":"निवडित आकार क्रिया","shapes":"आकार"},"hints":{"canvasPanning":"कॅनव्हास सरकवण्या साठी, ड्रॅग करताना माउस व्हील धरा किंवा स्पेसबार दाबून ठेवा अथवा हात वालं उपकरण वापरा","linearElement":"अनेक बिंदु साठी क्लिक करा, रेघे साठी ड्रैग करा","freeDraw":"क्लिक आणि ड्रैग करा, झालं तेव्हा सोडा","text":"टीप: तुम्हीं निवड यंत्रानी कोठेही दुहेरी क्लिक करून टेक्स्ट जोडू शकता","embeddable":"","text_selected":"लेखन संपादन साठी दुहेरी क्लिक करा किव्हा एंटर दाबा","text_editing":"संपादन संपवायचं असल्यास एस्केप दाबा किव्हा कंट्रोल या कम्मांड बरोबार एंटर दाबा","linearElementMulti":"शेवटच्या बिंदु वर क्लिक करा किव्हा एस्केप या एंटर दाबा","lockAngle":"शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","resize":"आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, \\nकेंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा","resizeImage":"SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,\\nकेंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा","rotate":"फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","lineEditor_info":"पॉइंट संपादित करण्यासाठी CtrlOrCmd दाबून ठेवुन डबल-क्लिक करा किंवा CtrlOrCmd + Enter बरोबर दाबा","lineEditor_pointSelected":"बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,\\nCtrlOrCmd बरोबार D प्रति साठी,\\nकिव्हा ड्रेग हलवण्या साठी","lineEditor_nothingSelected":"संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),\\nकिंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा","placeImage":"प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा","publishLibrary":"आपला खाजगी संग्रह प्रकाशित करा","bindTextToElement":"मजकूर जोडण्यासाठी एंटर की दाबा","deepBoxSelect":"खोल निवड ह्या साठी कंट्रोल किव्हा कमांड दाबून ठेवा, आणि बाहेर खेचणे वाचवण्या साठी पण","eraserRevert":"खोडण्या साठी घेतलेल्या वस्तु ना घेण्या साठी Alt दाबून ठेवावे","firefox_clipboard_write":"हे वैशिष्ट्य \\"dom.events.asyncClipboard.clipboardItem\\" फ्लॅग \\"सत्य\\" वर सेट करून शक्यतो सक्षम केले जाऊ शकते. Firefox मध्ये ब्राउझर फ्लॅग बदलण्यासाठी, \\"about:config\\" पृष्ठावर जा.","disableSnapping":"स्नैपिंग अक्षम करण्या साठी CtrlOrCmd दाबून ठेवा"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन दाखवू शकत नाही","canvasTooBig":"पटल खूप जास्त मोठा असू शकतो.","canvasTooBigTip":"टीप: दूर चा तत्व थोडं जवळ आणण्याचा प्रयत्न करावा."},"errorSplash":{"headingMain":"त्रुटि आली. परत प्रयत्न करा ","clearCanvasMessage":"रीलोडिंग होत नसल्यास, परत प्रयत्न करा ","clearCanvasCaveat":" त्यामुळे केलेल्या कामाचे नुकसान होईल ","trackedToSentry":"त्रुटि क्रमांक के साथ त्रुटि {{eventId}} आमच्या प्रणाली नी निरीक्षण केले होते.","openIssueMessage":"त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.","sceneContent":"दृश्य विषय:"},"roomDialog":{"desc_intro":"तुम्‍ही तुमच्‍या सध्‍याच्‍या दृश्यासाठी लोकांना आपल्‍यासह सहयोग करण्‍यासाठी आमंत्रित करू शकता.","desc_privacy":"काळजी करू नका, सत्र या टोकापासून त्या टोकापर्यंत कूटबद्धता वापरते, त्यामुळे तुम्ही जे काही काढाल ते खाजगी राहील. तुम्ही काय घेऊन आला आहात हे आमचा सर्व्हर ही देखील पाहू शकत नाही.","button_startSession":"सत्र सुरु करा","button_stopSession":"सत्र थाम्बवा","desc_inProgressIntro":"थेट सहयोग सत्र चालू आहे.","desc_shareLink":"तुम्ही ज्यांच्याशी सहयोग करू इच्छिता त्यांच्याशी ही दुवा सामायिक करा:","desc_exitSession":"सत्र थांबवल्याने तुम्हीं खोली तून बाहेर याल, तरिही तुम्ही स्थानिक पातळीवर दृश्यासह काम करु शकाल. लक्षात ठेवा की याचा इतर लोकांवर परिणाम होणार नाही आणि ते त्यांच्या आवृत्तीवर सहयोग करित राहातील.","shareTitle":"एक्सकेलीड्रॉ वर थेट सहयोग सत्रात सामील व्हा"},"errorDialog":{"title":"त्रुटि"},"exportDialog":{"disk_title":"डिस्क मधे जतन करा","disk_details":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुम तो डेटा नंतर परत आणु शकता.","disk_button":"फ़ाइल मधे जतन करा","link_title":"सामायिके साठी दुवा","link_details":"नुसतं वाचु देणारा दुवा चा स्वरूपे बाहेर ठेवा.","link_button":"दुवा स्वरूपे बाहेर ठेवा","excalidrawplus_description":"दृश्य तुमच्या एक्सकेलीड्रॉ कार्यक्षेत्र मधे जतन करा.","excalidrawplus_button":"बाहेर ठेवा","excalidrawplus_exportError":"एक्सकेलीड्रॉ मधे बाहेर ठेवता नाही येत..."},"helpDialog":{"blog":"आमचा ब्लॉग वाचा","click":"क्लिक करा","deepSelect":"खोल निवड","deepBoxSelect":"चौकट मधे खोल निवड करा आणि बाहेर ओढणे वाचवा","curvedArrow":"वक्र बाण","curvedLine":"वक्र रेघ","documentation":"कागदपत्रे","doubleClick":"दुहेरी क्लिक","drag":"ओढा","editor":"संपादक","editLineArrowPoints":"रेघ/तीर बिंदु सम्पादित करा","editText":"पाठ्य सम्पादित करा/ लेबल जोडा","github":"समस्या मिळाली? प्रस्तुत करा","howto":"आमच्या मार्गदर्शकाचे अनुसरण करा","or":"किंवा","preventBinding":"बाण बंधन होणं टाळा","tools":"अवजार","shortcuts":"कीबोर्ड शॉर्टकट","textFinish":"संपादन संपले (मजकूर संपादन)","textNewLine":"नवी ओळ जोडा (मजकूर संपादक)","title":"मदत","view":"दृश्य","zoomToFit":"सर्व तत्व दिसतील असे दृश्यरूप आकार करा","zoomToSelection":"निवडी प्रयंत दृश्यरूप आकार करा","toggleElementLock":"कुलूपातून आत/बाहेर निवड","movePageUpDown":"पान वर/खाली करा","movePageLeftRight":"पान डावी/उजवी कडे करा"},"clearCanvasDialog":{"title":"पटल स्वच्छ करा"},"publishDialog":{"title":"संग्रह प्रकाशित करा","itemName":"वस्तु चे नाव","authorName":"लेखक चे नाव","githubUsername":"गिटहब वापरकर्तानाव","twitterUsername":"ट्विटर वापरकर्तानाव","libraryName":"संग्रहाचे नाव","libraryDesc":"संग्रहाचे वर्णन","website":"वेबसाइट","placeholder":{"authorName":"तुमचे नाव किव्हा वापरकर्तानाव","libraryName":"तुमचा संग्रहाचे नाव","libraryDesc":"तुमचा संग्रहाचे वर्णन लोकांना संग्रहा बद्दल जाणकारी देतील","githubHandle":"गिटहब हैंडल (वैकल्पिक), एकदा संग्रह पुनरावलोकना साठी जमा केल्या नंतर ही तुम्हीं सम्पादित करु शकता","twitterHandle":"ट्विटर वापरकार्यक नाव (वैकल्पिक), त्यामुळे ट्विटर वर ज़हीरांति साठी कोणाला गुण द्यायचे हे आम्हाला समजेल","website":"दुवा तुमच्या वैयक्तिक वेब-साइट किव्हा कुठे दूसरिकडे (ऐच्छिक) करावा"},"errors":{"required":"आवश्यक आहे","website":"वैध यू-आर-एल द्या"},"noteDescription":"समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा सार्वजनिक संग्रहाचे कोठारइतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी.","noteGuidelines":"संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा मार्गदर्शक तत्त्वे जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे.","noteLicense":"जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल एम-आइ-टी परवाना, ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो.","noteItems":"प्रतैक संग्रहाचे नाव, नीट शोधनासाठी, असणे आवश्यक आहे. खाली दिलेल्या वस्तु समाविष्ट केल्या जातील:","atleastOneLibItem":"सुरु करण्यासाठी, कृपया करून, कमित कमी एक वस्तु तरी निवडा","republishWarning":"टीप: काही निवडक आयटम आधीच प्रकाशित/प्रस्तुत केलेले आहेत. विद्यमान लायब्ररी किंवा प्रस्तुतित आयटम अद्यावित करताना तुम्ही फक्त तो पुन्हा प्रस्तुत करा."},"publishSuccessDialog":{"title":"संग्रह जमा केला","content":"धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकताइकडे"},"confirmDialog":{"resetLibrary":"संग्रह पुनर्स्थित करा","removeItemsFromLib":"निवडलेले आयटम्स संग्रहातून काढा"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"तुमचे चित्रे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत, त्या कारणांनी ऐक्सकैलिड्रॉ सर्वर्स ह्यानां ते पहाणं कधीच जमणार नाही.","link":"ब्लॉग पोस्ट ऐक्सकैलिड्रॉ मधे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत"},"stats":{"angle":"कोण","element":"वस्तु","elements":"वस्तु","height":"उंची","scene":"दृश्य","selected":"निवडलेले","storage":"साठवण","title":"अभ्यासू लोगो के लिये आंकडे","total":"योग","version":"आवृत्ती","versionCopy":"कॉपी करायला क्लिक करा","versionNotAvailable":"आवृति उपलब्ध नाही","width":"रुंदी"},"toast":{"addedToLibrary":"संग्रह मधे सम्मिलित","copyStyles":"कॉपी केलेली शैली.","copyToClipboard":"फळी वर कॉपी झाली.","copyToClipboardAsPng":"{{exportSelection}} फळी वर पी-एन-जी स्वरूपात कॉपी झाली\\n({{exportColorScheme}})","fileSaved":"फ़ाइल जतन झाली.","fileSavedToFilename":"{filename} मधे जतन झाली","canvas":"पटल","selection":"निवड","pasteAsSingleElement":"एक घटक म्हणून चिपकावण्या साठी {{shortcut}} वापरा,\\nकिंवा विद्यमान मजकूर संपादकात चिपकवा","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"पारदर्शक","black":"काळा","white":"पांढरा","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जांभळा","gray":"राखाडी","blue":"निळा","cyan":"आकाशी","teal":"हिरवट निळा","green":"हिरवा","yellow":"पिवळा","orange":"केशरी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"तुमचा सर्व डेटा तुमच्या ब्राउझरमध्ये स्थानिक पातळीवर जतन केला जातो.","center_heading_plus":"त्याऐवजी तुम्हाला Excalidraw+ वर जायचे आहे का?","menuHint":"निर्यात, आवड़ी-निवडी, भाषा, ..."},"defaults":{"menuHint":"निर्यात, आवड़ी निवडी आणि आणकिही...","center_heading":"आकृत्या. काढणे. सोपे.","toolbarHint":"एक साधन निवडा आणि चित्रीकरण सुरु करा!","helpHint":"शॉर्टकट आणि सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"सर्वात जास्त वापरणीस रंग","colors":"रंग","shades":"रंगछटा","hexCode":"हेक्स कोड","noShades":"ह्या रंगाच्या छटा उपलब्ध नाहित"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूपे निर्यात करा","button":"छवि स्वरूपे निर्यात करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"saveToDisk":{"title":"डिस्क मधे जतन करा","button":"डिस्क मधे जतन करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"excalidrawPlus":{"title":"एक्षकालीड्रॉ +","button":"एक्षकाली ड्रॉ+ मधे निर्यात करा","description":"दृष्य तुमच्या एक्षकालीड्रॉ+ चा कार्यस्थल मधे जतन करा."}},"modal":{"loadFromFile":{"title":"फ़ाइल मधुन लोड करा","button":"फ़ाइल मधुन लोड करा","description":"फ़ाइल मधुन लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."},"shareableLink":{"title":"लिंक पासून लोड करा","button":"माझ सध्याचे कार्य बदला","description":"बाहरी चित्र लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/my-MM-json-4c04ffe415641f69ed75.js b/public/excalidraw/excalidraw-assets-dev/locales/my-MM-json-4c04ffe415641f69ed75.js new file mode 100644 index 0000000..4a577f6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/my-MM-json-4c04ffe415641f69ed75.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/my-MM-json"],{ + +/***/ "../../locales/my-MM.json": +/*!********************************!*\ + !*** ../../locales/my-MM.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"ထား","pasteAsPlaintext":"","pasteCharts":"","selectAll":"အကုန်ရွေး","multiSelect":"ရွေးထားသည့်ထဲပုံထည့်","moveCanvas":"ကားချပ်ရွှေ့","cut":"","copy":"ကူး","copyAsPng":"PNG အနေဖြင့်ကူး","copyAsSvg":"SVG အနေဖြင့်ကူး","copyText":"","bringForward":"ရှေ့ပို့","sendToBack":"နောက်ဆုံးထား","bringToFront":"ရှေ့ဆုံးထား","sendBackward":"နောက်ပို့","delete":"ဖျက်","copyStyles":"ပုံစံကူး","pasteStyles":"ပုံစံထား","stroke":"မျဉ်း","background":"နောက်ခံ","fill":"ဖြည့်","strokeWidth":"မျဉ်းအထူ","strokeStyle":"မျဉ်းပုံစံ","strokeStyle_solid":"အပြည့်","strokeStyle_dashed":"မျဉ်းပြတ်","strokeStyle_dotted":"မျဉ်းစက်","sloppiness":"သေသပ်မှု","opacity":"ထင်ရှားမှု","textAlign":"စာသားညှိ","edges":"အစွန်း","sharp":"ထောင့်ချွန်","round":"ထောင့်ဝိုင်း","arrowheads":"မြှားခေါင်း","arrowhead_none":"ဘာမျှမရှိ","arrowhead_arrow":"မြှား","arrowhead_bar":"","arrowhead_dot":"အစက်","arrowhead_triangle":"","fontSize":"စာလုံးအရွယ်","fontFamily":"စာလုံးပုံစံ","addWatermark":"\\"Excalidraw ဖြင့်ဖန်တီးသည်။\\" စာသားထည့်","handDrawn":"လက်ရေး","normal":"ပုံမှန်","code":"ကုဒ်","small":"အသေး","medium":"အလတ်","large":"အကြီး","veryLarge":"ပိုကြီး","solid":"အပြည့်","hachure":"မျဉ်းစောင်း","zigzag":"","crossHatch":"ဇကာကွက်","thin":"ပါး","bold":"ထူ","left":"ဘယ်","center":"အလယ်","right":"ညာ","extraBold":"ပိုထူ","architect":"ဗိသုကာ","artist":"ပန်းချီ","cartoonist":"ကာတွန်း","fileTitle":"","colorPicker":"အရောင်ရွေး","canvasColors":"","canvasBackground":"ကားချပ်နောက်ခံ","drawingCanvas":"ပုံဆွဲကားချပ်","layers":"အလွှာများ","actions":"လုပ်ဆောင်ချက်များ","language":"ဘာသာစကား","liveCollaboration":"","duplicateSelection":"ပွား","untitled":"အမည်မရှိ","name":"အမည်","yourName":"သင့်အမည်","madeWithExcalidraw":"Excalidraw ဖြင့်ဖန်တီးသည်။","group":"အုပ်စုဖွဲ့","ungroup":"အုပ်စုဖျက်သိမ်း","collaborators":"ပူးပေါင်းပါဝင်သူများ","showGrid":"","addToLibrary":"မှတ်တမ်းတင်","removeFromLibrary":"မှတ်တမ်းမှထုတ်","libraryLoadingMessage":"မှတ်တမ်းအား တင်သွင်းနေသည်…","libraries":"စာကြည့်တိုက်တွင်ရှာဖွေပါ","loadingScene":"မြင်ကွင်းဖော်နေသည်…","align":"ချိန်ညှိ","alignTop":"ထိပ်ညှိ","alignBottom":"အခြေညှိ","alignLeft":"ဘယ်ညှိ","alignRight":"ညာညှိ","centerVertically":"ဒေါင်လိုက်အလယ်ညှိ","centerHorizontally":"အလျားလိုက်အလယ်ညှိ","distributeHorizontally":"အလျားလိုက်","distributeVertically":"ထောင်လိုက်","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"ကားချပ်ရှင်းလင်း","exportJSON":"","exportImage":"","export":"","copyToClipboard":"ကူးယူ","save":"","saveAs":"ပြောင်းသိမ်း","load":"","getShareableLink":"မျှဝေရန် လင့်ခ်ရယူ","close":"ပိတ်","selectLanguage":"ဘာသာစကားရွေးပါ","scrollBackToContent":"ကားချပ်ပြန်တည်","zoomIn":"ချဲ့","zoomOut":"ချုံ့","resetZoom":"ပုံမှန်ပြန်ထား","menu":"မီနူး","done":"ပြီးပြီ","edit":"ပြင်ဆင်","undo":"ပြန်ထား","redo":"ထပ်လုပ်","resetLibrary":"","createNewRoom":"အခန်းသစ်ဖွဲ့","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"ဇင်မြင်ကွင်းမှထွက်","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"ကားချပ်တစ်ခုလုံးရှင်းလင်းပါတော့မည်။ အတည်ပြုပါ။","couldNotCreateShareableLink":"မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotCreateShareableLinkTooBig":"မြင်ကွင်းအရမ်းကြီးနေသဖြင့် မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotLoadInvalidFile":"လွဲမှားနေသောဖိုင်အား တင်၍မရပါ။","importBackendFailed":"Backend မှမလုပ်ဆောင်နိုင်သေးပါ။","cannotExportEmptyCanvas":"ကားချပ်အလွတ်အားထုတ်ယူ၍မရပါ။","couldNotCopyToClipboard":"","decryptFailed":"အချက်အလက်ဖော်ယူ၍မရပါ။","uploadedSecurly":"တင်သွင်းအချက်အလက်များအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်စနစ်အသုံးပြု၍လုံခြုံစွာထိန်းသိမ်းထားပါသဖြင့် Excalidraw ဆာဗာနှင့်ဆက်စပ်အဖွဲ့အစည်းများပင်လျှင်မဖတ်ရှုနိုင်ပါ။","loadSceneOverridePrompt":"လက်ရှိရေးဆွဲထားသမျှအား ပြင်ပမှတင်သွင်းသောပုံနှင့်အစားထိုးပါမည်။ ဆက်လက်ဆောင်ရွက်လိုပါသလား။","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။","imageDoesNotContainScene":"","cannotRestoreFromImage":"ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ရွေးချယ်","image":"","rectangle":"စတုဂံ","diamond":"စိန်","ellipse":"အဝိုင်း","arrow":"မြှား","line":"မျဉ်း","freedraw":"","text":"စာသား","library":"မှတ်တမ်း","lock":"ရွေးချယ်ထားသောကိရိယာကိုသာဆက်သုံး","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ကားချပ်လုပ်ဆောင်ချက်","selectedShapeActions":"ပုံသဏ္ဌာန်လုပ်ဆောင်ချက်","shapes":"ပုံသဏ္ဌာန်များ"},"hints":{"canvasPanning":"","linearElement":"အမှတ်များချမှတ်ရေးဆွဲရန်ကလစ်နှိပ်ပါ၊ မျဉ်းတစ်ကြောင်းတည်းအတွက် တရွတ်ဆွဲပါ။","freeDraw":"ကလစ်နှိပ်၍ တရွတ်ဆွဲပါ၊ ပြီးလျှင်လွှတ်ပါ။","text":"မှတ်ချက်။ ။မည်သည့်ကိရိယာရွေးထားသည်ဖြစ်စေ ကလစ်နှစ်ချက်နှိပ်၍စာသားထည့်နိုင်သည်","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"နောက်ဆုံးအမှတ်ပေါ်တွင်ကလစ်နှိပ်ခြင်း၊ Escape (သို့) Enter နှိပ်ခြင်းတို့ဖြင့်အဆုံးသတ်နိုင်","lockAngle":"","resize":"အချိုးအစားကန့်သတ်ရန် Shift နှင့် ဗဟိုမှချိန်ညှိရန် Alt တို့ကိုနှိပ်ထားနိုင်သည်","resizeImage":"","rotate":"Shift ကိုနှိပ်ထားခြင်းဖြင့် ထောင့်အလိုက်လှည့်နိုင်သည်","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"နမူနာမပြသနိုင်ပါ","canvasTooBig":"ကားချပ်အလွန်ကြီးကောင်းကြီးနေနိုင်သည်။","canvasTooBigTip":"မှတ်ချက်။ ။ဝေးကွာနေသော ပုံများ၊ စာများအား ပိုမိုနီးကပ်အောင်ရွှေ့ကြည့်ပါ။"},"errorSplash":{"headingMain":"ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် ","clearCanvasMessage":"အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်","clearCanvasCaveat":" ရေးဆွဲထားသည်များ ဆုံးရှုံးနိုင်သည် ","trackedToSentry":"ချို့ယွင်းမှုသတ်မှတ်ချက် {{eventId}} အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။","openIssueMessage":"ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။","sceneContent":"မြင်ကွင်းပါအချက်အလက်။ ။"},"roomDialog":{"desc_intro":"လက်ရှိမြင်ကွင်းတွင်ပူးပေါင်းရေးဆွဲရန် အခြားသူများအား ဖိတ်ကြားနိုင်သည်။","desc_privacy":"နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့်ရေးဆွဲသမျှအား ဆာဗာပေါ်မှပင်လျှင်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ။ မစိုးရိမ်ပါနှင့်။","button_startSession":"ပူးပေါင်းမှုစတင်","button_stopSession":"ပူးပေါင်းမှုအဆုံးသတ်","desc_inProgressIntro":"တိုက်ရိုက်ပူးပေါင်းရေးဆွဲမှုများပြုလုပ်နေပါသည်။","desc_shareLink":"ဤလင့်ခ်အား ပူးပေါင်းရေးဆွဲလိုသူများထံပေးပို့ပါ။ ။ ","desc_exitSession":"ပူးပေါင်းမှုရပ်တန့်ပါက အဖွဲ့အတွင်းမှထွက်ခွာသွားမည်ဖြစ်သော်လည်း မိမိမြင်ကွင်းတွင်ဆက်လက်ရေးဆွဲနိုင်ပါမည်။ အဖွဲ့အတွင်းကျန်ရှိနေခဲ့သောအခြားပါဝင်သူများသည်လည်း ဆက်လက်ပူးပေါင်းရေးဆွဲနေနိုင်ပါလိမ့်မည်။","shareTitle":""},"errorDialog":{"title":"ချို့ယွင်းချက်"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"ရေးဆွဲထားသောပုံများအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့် Excalidraw ၏ဆာဗာများပင်လျှင်မြင်တွေ့ရမည်မဟုတ်ပါ။","link":""},"stats":{"angle":"ထောင့်","element":"","elements":"","height":"အမြင့်","scene":"မြင်ကွင်း","selected":"ရွေးချယ်သည်","storage":"သိုလှောင်ခန်း","title":"အက္ခရာများအတွက်အချက်အလက်များ","total":"စုစုပေါင်း","version":"","versionCopy":"","versionNotAvailable":"","width":"အကျယ်"},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/nb-NO-json-b8d7a5b70562dacdad45.js b/public/excalidraw/excalidraw-assets-dev/locales/nb-NO-json-b8d7a5b70562dacdad45.js new file mode 100644 index 0000000..c0c3208 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/nb-NO-json-b8d7a5b70562dacdad45.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/nb-NO-json"],{ + +/***/ "../../locales/nb-NO.json": +/*!********************************!*\ + !*** ../../locales/nb-NO.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"Lim inn som klartekst","pasteCharts":"Lim inn diagrammer","selectAll":"Velg alt","multiSelect":"Legg til element i utvalg","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til PNG","copyAsSvg":"Kopier til utklippstavlen som SVG","copyText":"Kopier til utklippstavlen som tekst","bringForward":"Flytt framover","sendToBack":"Send bakerst","bringToFront":"Flytt forrest","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stiler","pasteStyles":"Lim inn stiler","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strektykkelse","strokeStyle":"Strekstil","strokeStyle_solid":"Heltrukket","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Ujevnhet","opacity":"Synlighet","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilspisser","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Søyle","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Fontfamilie","addWatermark":"Legg til \\"Laget med Excalidraw\\"","handDrawn":"Håndtegnet","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Helfarge","hachure":"Skravert","zigzag":"Sikk-sakk","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tykk","left":"Venstre","center":"Midtstill","right":"Høyre","extraBold":"Ekstra tykk","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegner","fileTitle":"Filnavn","colorPicker":"Fargevelger","canvasColors":"Brukes på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlinger","language":"Språk","liveCollaboration":"Sanntids-samarbeid...","duplicateSelection":"Dupliser","untitled":"Uten navn","name":"Navn","yourName":"Ditt navn","madeWithExcalidraw":"Laget med Excalidraw","group":"Gruppér utvalg","ungroup":"Avgruppér utvalg","collaborators":"Samarbeidspartnere","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern fra bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Bla gjennom biblioteker","loadingScene":"Laster inn scene…","align":"Juster","alignTop":"Juster øverst","alignBottom":"Juster nederst","alignLeft":"Juster venstre","alignRight":"Juster høyre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Distribuer horisontalt","distributeVertically":"Distribuer vertikalt","flipHorizontal":"Snu horisontalt","flipVertical":"Snu vertikalt","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargevelger for kantfarge","showBackground":"Vis fargevelger for bakgrunnsfarge","toggleTheme":"Veksle tema","personalLib":"Personlig bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Reduser skriftstørrelse","increaseFontSize":"Øk skriftstørrelse","unbindText":"Avbind tekst","bindText":"Bind tekst til beholderen","createContainerFromText":"La tekst flyte i en beholder","link":{"edit":"Rediger lenke","editEmbed":"Rediger lenke og bygg inn","create":"Opprett lenke","createEmbed":"Opprett lenke og bygg inn","label":"Lenke","labelEmbed":"Lenk & bygg inn","empty":"Ingen lenke er valgt"},"lineEditor":{"edit":"Rediger linje","exit":"Avslutt linjeredigering"},"elementLock":{"lock":"Lås","unlock":"Lås opp","lockAll":"Lås alle","unlockAll":"Lås opp alle"},"statusPublished":"Publisert","sidebarLock":"Holde sidemenyen åpen","selectAllElementsInFrame":"Velg alle elementene i rammen","removeAllElementsFromFrame":"Fjern alle elementer fra rammen","eyeDropper":"Velg farge fra lerretet"},"library":{"noItems":"Ingen elementer lagt til ennå...","hint_emptyLibrary":"Velg et objekt på lerretet for å legge det til her, eller installer et bibliotek fra den offentlige samlingen under.","hint_emptyPrivateLibrary":"Velg et objekt på lerretet for å legge det til her."},"buttons":{"clearReset":"Tøm lerretet og tilbakestill bakgrunnsfargen","exportJSON":"Eksporter til fil","exportImage":"Eksporter bilde...","export":"Lagre som...","copyToClipboard":"Kopier til utklippstavle","save":"Lagre til aktiv fil","saveAs":"Lagre som","load":"Åpne","getShareableLink":"Få delingslenke","close":"Lukk","selectLanguage":"Velg språk","scrollBackToContent":"Skroll tilbake til innhold","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjør om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Opprett et nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"Slå av/på innebygging","publishLibrary":"Publiser","submit":"Send inn","confirm":"Bekreft","embeddableInteractionButton":"Klikk for å samhandle"},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke lage delbar lenke.","couldNotCreateShareableLinkTooBig":"Kunne ikke opprette lenke til deling: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke laste inn ugyldig fil","importBackendFailed":"Importering av backend feilet.","cannotExportEmptyCanvas":"Kan ikke eksportere et tomt lerret.","couldNotCopyToClipboard":"Kunne ikke kopiere til utklippstavlen.","decryptFailed":"Kunne ikke dekryptere data.","uploadedSecurly":"Opplastingen er kryptert og kan ikke leses av Excalidraw-serveren eller tredjeparter.","loadSceneOverridePrompt":"Å laste inn ekstern tegning vil erstatte det eksisterende innholdet. Ønsker du å fortsette?","collabStopOverridePrompt":"Hvis du slutter økten, overskrives din forrige, lokalt lagrede tegning. Er du sikker?\\n\\n(Hvis du ønsker å beholde din lokale tegning, bare lukk nettleserfanen i stedet.)","errorAddingToLibrary":"Kunne ikke legge element i biblioteket","errorRemovingFromLibrary":"Kunne ikke fjerne element fra biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Det ser ikke ut til at dette bildet inneholder noen scenedata. Har du aktivert innebygging av scene under eksporten?","cannotRestoreFromImage":"Scenen kunne ikke gjenopprettes fra denne bildefilen","invalidSceneUrl":"Kunne ikke importere scene fra den oppgitte URL-en. Den er enten ødelagt, eller inneholder ikke gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil tømme biblioteket ditt. Er du sikker?","removeItemsFromsLibrary":"Slett {{count}} element(er) fra biblioteket?","invalidEncryptionKey":"Krypteringsnøkkel må ha 22 tegn. Live-samarbeid er deaktivert.","collabOfflineWarning":"Ingen Internett-tilkobling tilgjengelig.\\nEndringer dine vil ikke bli lagret!"},"errors":{"unsupportedFileType":"Filtypen støttes ikke.","imageInsertError":"Kunne ikke sette inn bildet. Prøv igjen senere...","fileTooBig":"Filen er for stor. Maksimal tillatt størrelse er {{maxSize}}.","svgImageInsertError":"Kunne ikke sette inn SVG-bilde. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikke koble til samarbeidsserveren. Vennligst oppdater siden og prøv på nytt.","importLibraryError":"Kunne ikke laste bibliotek","collabSaveFailed":"Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.","collabSaveFailed_sizeExceeded":"Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt.","brave_measure_text_error":{"line1":"Ser ut som om du bruker Brave nettleser med Aggressivt Block Finger -innstillingen aktivert.","line2":"Dette kan resultere i å bryte tekst-elementene i tegningene.","line3":"Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge disse trinnene om hvordan du gjør det.","line4":"Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, vennligst åpne en sak på vår GitHub, eller skriv oss på Discord"},"libraryElementTypeError":{"embeddable":"Innebygde elementer kan ikke legges til i biblioteket.","image":"Støtte for å legge til bilder i biblioteket kommer snart!"}},"toolBar":{"selection":"Velg","image":"Sett inn bilde","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Tegn","text":"Tekst","library":"Bibliotek","lock":"Behold merket verktøy som aktivt","penMode":"Pennemodus - forhindre berøring","link":"Legg til / oppdater link for en valgt figur","eraser":"Viskelær","frame":"Rammeverktøy","embeddable":"Nettinnbygging","laser":"","hand":"Hånd (panoreringsverktøy)","extraTools":"Flere verktøy"},"headings":{"canvasActions":"Handlinger: lerret","selectedShapeActions":"Handlinger: valgt objekt","shapes":"Former"},"hints":{"canvasPanning":"For å flytte lerretet, hold musehjulet eller mellomromstasten mens du drar, eller bruk hånd-verktøyet","linearElement":"Klikk for å starte linje med flere punkter, eller dra for en enkel linje","freeDraw":"Klikk og dra, slipp når du er ferdig","text":"Tips: du kan også legge til tekst ved å dobbeltklikke hvor som helst med utvalgsverktøyet","embeddable":"Klikk og dra for å opprette en nettside innebygd","text_selected":"Dobbeltklikk eller trykk ENTER for å redigere tekst","text_editing":"Trykk Escape eller Ctrl/Cmd+Enter for å fullføre redigering","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan låse vinkelen ved å holde nede SHIFT","resize":"Du kan beholde forholdet ved å trykke SHIFT mens du endrer størrelse,\\ntrykk ALT for å endre størrelsen fra midten","resizeImage":"Du kan endre størrelse fritt ved å holde SHIFT,\\nhold ALT for å endre størrelse fra midten","rotate":"Du kan låse vinklene ved å holde SHIFT mens du roterer","lineEditor_info":"Hold Ctrl/Cmd og dobbelklikk eller trykk Ctrl/Cmd + Enter for å endre punkter","lineEditor_pointSelected":"Trykk på Slett for å fjerne punktet, Ctrl / Cmd+D for å duplisere, eller dra for å flytte","lineEditor_nothingSelected":"Velg et punkt å redigere (hold SHIFT for å velge flere),\\neller hold Alt og klikk for å legge til nye punkter","placeImage":"Klikk for å plassere bildet, eller klikk og dra for å angi størrelsen manuelt","publishLibrary":"Publiser ditt eget bibliotek","bindTextToElement":"Trykk Enter for å legge til tekst","deepBoxSelect":"Hold CTRL/CMD for å markere dypt og forhindre flytting","eraserRevert":"Hold Alt for å reversere elementene merket for sletting","firefox_clipboard_write":"Denne funksjonen kan sannsynligvis aktiveres ved å sette \\"dom.events.asyncClipboard.clipboardItem\\" flagget til \\"true\\". For å endre nettleserens flagg i Firefox, besøk \\"about:config\\"-siden.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikke vise forhåndsvisning","canvasTooBig":"Lerretet kan være for stort.","canvasTooBigTip":"Tips: Prøv å flytte de ytterste elementene litt tettere sammen."},"errorSplash":{"headingMain":"En feil oppsto. Prøv ","clearCanvasMessage":"Om ny sidelasting ikke fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} ble logget i vårt system.","openIssueMessage":"Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.","sceneContent":"Scene-innhold:"},"roomDialog":{"desc_intro":"Du kan invitere personer til scenen din for å samarbeide med deg.","desc_privacy":"Ta det med ro, sesjonen bruker ende-til-ende-kryptering, så alt du tegner forblir privat. Ikke en gang serveren vår kan se hva du lager.","button_startSession":"Start økt","button_stopSession":"Stopp sesjon","desc_inProgressIntro":"Sanntids-samarbeidsøkt er nå i gang.","desc_shareLink":"Del denne linken med de du vil samarbeide med:","desc_exitSession":"Dersom du avslutter sesjonen blir du frakoblet rommet, men du kan fortsette å arbeide med scenen lokalt. Vær oppmerksom på at dette ikke vil påvirke andre personer, og de vil fortsatt ha mulighet til å samarbeide på deres versjon.","shareTitle":"Bli med i en live samarbeidsøkt på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scene-dataene til en fil som du kan importere fra senere.","disk_button":"Lagre til fil","link_title":"Delbar lenke","link_details":"Eksporter som en skrivebeskyttet lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scenen til ditt Excalidraw+ arbeidsområde.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikke eksportere til Excalidraw+ for øyeblikket..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker dypt","deepBoxSelect":"Marker dypt innad i boks og forhindre flytting","curvedArrow":"Buet pil","curvedLine":"Buet linje","documentation":"Dokumentasjon","doubleClick":"dobbeltklikk","drag":"dra","editor":"Redigeringsvisning","editLineArrowPoints":"Rediger linje/pilpunkter","editText":"Rediger tekst / legg til etikett","github":"Funnet et problem? Send inn","howto":"Følg våre veiledninger","or":"eller","preventBinding":"Forhindre pilbinding","tools":"Verktøy","shortcuts":"Tastatursnarveier","textFinish":"Fullfør redigering (teksteditor)","textNewLine":"Legg til ny linje (teksteditor)","title":"Hjelp","view":"Vis","zoomToFit":"Zoom for å se alle elementer","zoomToSelection":"Zoom til utvalg","toggleElementLock":"Lås/lås opp utvalg","movePageUpDown":"Flytt side opp/ned","movePageLeftRight":"Flytt siden til venstre/høyre"},"clearCanvasDialog":{"title":"Tøm lerret"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnavn","authorName":"Forfatterens navn","githubUsername":"GitHub-brukernavnet","twitterUsername":"Twitter-brukernavn","libraryName":"Biblioteknavn","libraryDesc":"Beskrivelse av bibliotek","website":"Nettsted","placeholder":{"authorName":"Ditt navn eller brukernavn","libraryName":"Navnet på biblioteket ditt","libraryDesc":"Beskrivelse av biblioteket ditt for å hjelpe folk med å forstå bruken","githubHandle":"Github-brukernavn (valgfritt), slik at du kan redigere biblioteket når du har sendt inn for gjennomgang","twitterHandle":"Twitter-brukernavn (valgfritt), slik at vi vet hvem vi skal kreditere når promotert på Twitter","website":"Lenke til din personlige nettside eller et annet sted (valgfritt)"},"errors":{"required":"Påkrevd","website":"Angi en gyldig nettadresse"},"noteDescription":"Send inn biblioteket ditt som skal inkluderes i kildekode for offentlig bibliotekfor andre å bruke dem i tegninger.","noteGuidelines":"Biblioteket må godkjennes manuelt først. Les retningslinjene før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd.","noteLicense":"Ved å sende inn godtar du at biblioteket blir publisert under MIT-lisens, som kortfattet betyr at andre kan bruke dem uten begrensninger.","noteItems":"Hvert bibliotek må ha sitt eget navn, så det er filtrerbart. Følgende bibliotekselementer vil bli inkludert:","atleastOneLibItem":"Vennligst velg minst ett bibliotek for å komme i gang","republishWarning":"Merk: noen av de valgte elementene er merket som allerede publisert/sendt. Du bør kun sende inn elementer på nytt når du oppdaterer et eksisterende bibliotek eller innlevering."},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusenher"},"confirmDialog":{"resetLibrary":"Nullstill bibliotek","removeItemsFromLib":"Fjern valgte elementer fra bibliotek"},"imageExportDialog":{"header":"Eksporter bilde","label":{"withBackground":"Bakgrunn","onlySelected":"Kun valgte","darkMode":"Mørk modus","embedScene":"Bygg inn scene","scale":"Skalering","padding":"Avstand"},"tooltip":{"embedScene":"Scenedata vil bli lagret i den eksporterte PNG/SVG-filen, slik at scenen kan gjenopprettes fra den.\\nDet vil øke den eksporterte filstørrelsen."},"title":{"exportToPng":"Eksporter til PNG","exportToSvg":"Eksporter til SVG","copyPngToClipboard":"Kopier PNG til utklippstavlen"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopier til utklippstavle"}},"encrypted":{"tooltip":"Dine tegninger er ende-til-ende-krypterte slik at Excalidraw sine servere aldri vil se dem.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Elementer","height":"Høyde","scene":"Scene","selected":"Valgt","storage":"Lagring","title":"Statistikk for nerder","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjon ikke tilgjengelig","width":"Bredde"},"toast":{"addedToLibrary":"Lagt til i biblioteket","copyStyles":"Kopierte stiler.","copyToClipboard":"Kopiert til utklippstavlen.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavlen som PNG\\n({{exportColorScheme}})","fileSaved":"Fil lagret.","fileSavedToFilename":"Lagret til {filename}","canvas":"lerret","selection":"utvalg","pasteAsSingleElement":"Bruk {{shortcut}} for å lime inn som ett enkelt element,\\neller lim inn i en eksisterende tekstbehandler","unableToEmbed":"Innbygging av denne nettadressen er ikke tillatt. Oppret en sak på GitHub for å be om url-hvitelisting","unrecognizedLinkFormat":"Linken du bygget inn samsvarer ikke med det forventede formatet. Prøv å lime inn \\"bygg inn\\"-strengen fra kildesiden"},"colors":{"transparent":"Gjennomsiktig","black":"Svart","white":"Hvit","red":"Rød","pink":"Rosa","grape":"Drue","violet":"Fiolett","gray":"Grå","blue":"Blå","cyan":"Turkis","teal":"Blågrønn","green":"Grønn","yellow":"Gul","orange":"Oransje","bronze":"Bronse"},"welcomeScreen":{"app":{"center_heading":"Alle dine data lagres lokalt i din nettleser.","center_heading_plus":"Ønsker du å gå til Excalidraw+ i stedet?","menuHint":"Eksporter, innstillinger, språk, ..."},"defaults":{"menuHint":"Eksporter, innstillinger og mer...","center_heading":"Diagrammer. Gjort. Enkelt.","toolbarHint":"Velg et verktøy og start å tegne!","helpHint":"Snarveier & hjelp"}},"colorPicker":{"mostUsedCustomColors":"Mest brukte egendefinerte farger","colors":"Farger","shades":"Toner","hexCode":"Heksadesimal kode","noShades":"Ingen toner tilgjengelig for denne fargen"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksporter som bilde","button":"Eksporter som bilde","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"saveToDisk":{"title":"Lagre til disk","button":"Lagre til disk","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksporter til Excalidraw+","description":"Lagre scenen til ditt Excalidraw+-arbeidsområde."}},"modal":{"loadFromFile":{"title":"Last inn fra fil","button":"Last inn fra fil","description":"Å laste fra en fil vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene under."},"shareableLink":{"title":"Last inn fra lenke","button":"Erstatt innholdet mitt","description":"Lasting av ekstern tegning vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene nedenfor."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/nl-NL-json-a65f82a25fe038c45d35.js b/public/excalidraw/excalidraw-assets-dev/locales/nl-NL-json-a65f82a25fe038c45d35.js new file mode 100644 index 0000000..3add9d4 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/nl-NL-json-a65f82a25fe038c45d35.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/nl-NL-json"],{ + +/***/ "../../locales/nl-NL.json": +/*!********************************!*\ + !*** ../../locales/nl-NL.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Plakken","pasteAsPlaintext":"Plakken als platte tekst","pasteCharts":"Plak grafieken","selectAll":"Alles selecteren","multiSelect":"Voeg element toe aan selectie","moveCanvas":"Canvas verplaatsen","cut":"Knip","copy":"Kopiëren","copyAsPng":"Kopieer als PNG","copyAsSvg":"Kopieer naar klembord als SVG","copyText":"Kopieer naar klembord als tekst","bringForward":"Breng naar voren","sendToBack":"Stuur naar achtergrond","bringToFront":"Breng naar voorgrond","sendBackward":"Breng naar achter","delete":"Verwijderen","copyStyles":"Kopieer opmaak","pasteStyles":"Plak opmaak","stroke":"Lijn","background":"Achtergrond","fill":"Invulling","strokeWidth":"Lijnbreedte","strokeStyle":"Lijnstijl","strokeStyle_solid":"Ononderbroken","strokeStyle_dashed":"Gestreept","strokeStyle_dotted":"Gestippeld","sloppiness":"Slordigheid","opacity":"Doorzichtigheid","textAlign":"Uitlijning","edges":"Randen","sharp":"Hoekig","round":"Rond","arrowheads":"Pijlpunten","arrowhead_none":"Geen","arrowhead_arrow":"Pijl","arrowhead_bar":"Balk","arrowhead_dot":"Punt","arrowhead_triangle":"Driehoek","fontSize":"Tekstgrootte","fontFamily":"Lettertype","addWatermark":"Voeg \\"Gemaakt met Excalidraw\\" toe","handDrawn":"Handgetekend","normal":"Normaal","code":"Code","small":"Klein","medium":"Medium","large":"Groot","veryLarge":"Zeer groot","solid":"Ingekleurd","hachure":"Arcering","zigzag":"","crossHatch":"Tweemaal gearceerd","thin":"Dun","bold":"Vet","left":"Links","center":"Midden","right":"Rechts","extraBold":"Zwaar","architect":"Architect","artist":"Artiest","cartoonist":"Cartoonist","fileTitle":"Bestandsnaam","colorPicker":"Kleurenkiezer","canvasColors":"Gebruikt op canvas","canvasBackground":"Canvas achtergrond","drawingCanvas":"Canvas","layers":"Lagen","actions":"Acties","language":"Taal","liveCollaboration":"Live Samenwerking...","duplicateSelection":"Dupliceer","untitled":"Naamloos","name":"Naam","yourName":"Jouw naam","madeWithExcalidraw":"Gemaakt met Excalidraw","group":"Groeperen","ungroup":"Groep opheffen","collaborators":"Deelnemers","showGrid":"Raster weergeven","addToLibrary":"Voeg toe aan bibliotheek","removeFromLibrary":"Verwijder uit bibliotheek","libraryLoadingMessage":"Bibliotheek laden…","libraries":"Blader door bibliotheken","loadingScene":"Scène laden…","align":"Uitlijnen","alignTop":"Boven uitlijnen","alignBottom":"Onder uitlijnen","alignLeft":"Links uitlijnen","alignRight":"Rechts uitlijnen","centerVertically":"Verticaal Centreren","centerHorizontally":"Horizontaal Centreren","distributeHorizontally":"Horizontaal verspreiden","distributeVertically":"Verticaal distribueren","flipHorizontal":"Horizontaal spiegelen","flipVertical":"Verticaal spiegelen","viewMode":"Weergavemodus","share":"Deel","showStroke":"Toon lijn kleur kiezer","showBackground":"Toon achtergrondkleur kiezer","toggleTheme":"Thema aan/uit","personalLib":"Persoonlijke bibliotheek","excalidrawLib":"Excalidraw bibliotheek","decreaseFontSize":"Letters verkleinen","increaseFontSize":"Letters vergroten","unbindText":"Ontkoppel tekst","bindText":"Koppel tekst aan de container","createContainerFromText":"","link":{"edit":"Wijzig link","editEmbed":"Link bewerken & insluiten","create":"Maak link","createEmbed":"Link maken en insluiten","label":"Link","labelEmbed":"Link toevoegen & insluiten","empty":"Er is geen link ingesteld"},"lineEditor":{"edit":"Bewerk regel","exit":"Verlaat regel-editor"},"elementLock":{"lock":"Vergrendel","unlock":"Ontgrendel","lockAll":"Vergrendel alles","unlockAll":"Ontgrendel alles"},"statusPublished":"Gepubliceerd","sidebarLock":"Zijbalk open houden","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Nog geen items toegevoegd...","hint_emptyLibrary":"Selecteer een item op het canvas om het hier toe te voegen of installeer een bibliotheek uit de openbare repository, hieronder.","hint_emptyPrivateLibrary":"Selecteer een item op het canvas om het hier toe te voegen."},"buttons":{"clearReset":"Canvas opnieuw instellen","exportJSON":"Exporteren naar bestand","exportImage":"Exporteer afbeelding...","export":"Sla op...","copyToClipboard":"Kopieer","save":"Opslaan naar huidige bestand","saveAs":"Opslaan als","load":"Open","getShareableLink":"Maak een deelbare link","close":"Sluiten","selectLanguage":"Taal selecteren","scrollBackToContent":"Scroll terug naar inhoud","zoomIn":"Inzoomen","zoomOut":"Uitzoomen","resetZoom":"Zoom terugzetten","menu":"Menu","done":"Klaar","edit":"Bewerken","undo":"Ongedaan maken","redo":"Herstel ongedaan maken","resetLibrary":"Bibliotheek Resetten","createNewRoom":"Creëer live-samenwerkingssessie","fullScreen":"Volledig scherm","darkMode":"Donkere modus","lightMode":"Lichte modus","zenMode":"Zen modus","objectsSnapMode":"","exitZenMode":"Verlaat zen modus","cancel":"Annuleren","clear":"Wissen","remove":"Verwijderen","embed":"Insluiten in-/uitschakelen","publishLibrary":"Publiceren","submit":"Versturen","confirm":"Bevestigen","embeddableInteractionButton":"Klik voor interactie"},"alerts":{"clearReset":"Dit zal het hele canvas verwijderen. Weet je het zeker?","couldNotCreateShareableLink":"Kon geen deelbare link aanmaken.","couldNotCreateShareableLinkTooBig":"Kan geen deelbare link aanmaken: de scène is te groot","couldNotLoadInvalidFile":"Kan ongeldig bestand niet laden","importBackendFailed":"Importeren vanuit backend mislukt.","cannotExportEmptyCanvas":"Kan geen leeg canvas exporteren.","couldNotCopyToClipboard":"Kon niet naar klembord kopiëren.","decryptFailed":"Kan gegevens niet decoderen.","uploadedSecurly":"De upload is beveiligd met end-to-end encryptie, wat betekent dat de Excalidraw server en derden de inhoud niet kunnen lezen.","loadSceneOverridePrompt":"Het inladen van een externe tekening zal je bestaande inhoud vervangen. Wil je verdergaan?","collabStopOverridePrompt":"Wanneer de sessie wordt gestopt, overschrijft u de eerdere, lokaal opgeslagen tekening. Weet je het zeker?\\n\\n(Als je de lokale tekening wilt behouden, sluit je in plaats daarvan het browsertabblad)","errorAddingToLibrary":"Kan item niet toevoegen aan de bibliotheek","errorRemovingFromLibrary":"Kan item niet uit de bibliotheek verwijderen","confirmAddLibrary":"Dit zal {{numShapes}} vorm(en) toevoegen aan je bibliotheek. Weet je het zeker?","imageDoesNotContainScene":"Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je scène embedding tijdens het exporteren ingeschakeld?","cannotRestoreFromImage":"Scène kan niet worden hersteld vanuit dit afbeeldingsbestand","invalidSceneUrl":"Kan scène niet importeren vanuit de opgegeven URL. Het is onjuist of bevat geen geldige Excalidraw JSON-gegevens.","resetLibrary":"Dit zal je bibliotheek wissen. Weet je het zeker?","removeItemsFromsLibrary":"Verwijder {{count}} item(s) uit bibliotheek?","invalidEncryptionKey":"Encryptiesleutel moet 22 tekens zijn. Live samenwerking is uitgeschakeld.","collabOfflineWarning":"Geen internetverbinding beschikbaar.\\nJe wijzigingen worden niet opgeslagen!"},"errors":{"unsupportedFileType":"Niet-ondersteund bestandstype.","imageInsertError":"Afbeelding invoegen mislukt. Probeer het later opnieuw...","fileTooBig":"Bestand is te groot. Maximale grootte is {{maxSize}}.","svgImageInsertError":"Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.","failedToFetchImage":"","invalidSVGString":"Ongeldige SVG.","cannotResolveCollabServer":"Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.","importLibraryError":"Kon bibliotheek niet laden","collabSaveFailed":"Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","collabSaveFailed_sizeExceeded":"Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"Ingesloten elementen kunnen niet worden toegevoegd aan de bibliotheek.","image":"Ondersteuning voor het toevoegen van afbeeldingen aan de bibliotheek komt binnenkort!"}},"toolBar":{"selection":"Selectie","image":"Voeg afbeelding in","rectangle":"Rechthoek","diamond":"Ruit","ellipse":"Ovaal","arrow":"Pijl","line":"Lijn","freedraw":"Teken","text":"Tekst","library":"Bibliotheek","lock":"Geselecteerde tool actief houden na tekenen","penMode":"Pen modus - Blokkeer aanraken","link":"Link toevoegen / bijwerken voor een geselecteerde vorm","eraser":"Gum","frame":"","embeddable":"Web insluiten","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Canvasacties","selectedShapeActions":"Acties van geselecteerde vorm","shapes":"Vormen"},"hints":{"canvasPanning":"Om de canvas te verplaatsen, houd muiswiel of spatiebalk ingedrukt tijdens slepen, of gebruik het handgereedschap","linearElement":"Klik om meerdere punten te starten, sleep voor één lijn","freeDraw":"Klik en sleep, laat los als je klaar bent","text":"Tip: je kunt tekst toevoegen door ergens dubbel te klikken met de selectietool","embeddable":"Klink-sleep om een website-insluiting te maken","text_selected":"Dubbelklik of druk op ENTER om tekst te bewerken","text_editing":"Druk op Escape of CtrlOrCmd+ENTER om het bewerken te voltooien","linearElementMulti":"Klik op het laatste punt of druk op Escape of Enter om te stoppen","lockAngle":"Je kunt de hoek beperken door SHIFT ingedrukt te houden","resize":"Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,\\ngebruik ALT om vanuit het midden te vergroten/verkleinen","resizeImage":"","rotate":"Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait","lineEditor_info":"Houd CtrlOrCmd en Dubbelklik of druk op CtrlOrCmd + Enter om punten te bewerken","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"Publiceer je eigen bibliotheek","bindTextToElement":"Druk op enter om tekst toe te voegen","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan voorbeeld niet tonen","canvasTooBig":"Het canvas is mogelijk te groot.","canvasTooBigTip":"Tip: beweeg de verste elementen iets dichter bij elkaar."},"errorSplash":{"headingMain":"Fout opgetreden. Probeer ","clearCanvasMessage":"Als herladen niet werkt, probeer ","clearCanvasCaveat":" Dit zal leiden tot verlies van je werk ","trackedToSentry":"De fout met ID {{eventId}} was gevolgd op ons systeem.","openIssueMessage":"We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze Kopieer de informatie hieronder naar de GitHub issue.","sceneContent":"Scène-inhoud:"},"roomDialog":{"desc_intro":"Je kunt mensen uitnodigen om met je samen te werken.","desc_privacy":"Geen zorgen, de sessie gebruikt end-to-end encryptie, dus wat je tekent blijft privé. Zelfs onze server zal niet kunnen zien wat je tekent.","button_startSession":"Start sessie","button_stopSession":"Stop sessie","desc_inProgressIntro":"De live-samenwerkingssessie is nu gestart.","desc_shareLink":"Deel deze link met iedereen waarmee je wil samenwerken:","desc_exitSession":"Het stoppen van de sessie zal je loskoppelen van de kamer, maar je kunt lokaal doorwerken met de scène.\\nPas op: dit heeft geen invloed op andere mensen en dat zij nog steeds in staat zullen zijn om samen te werken aan hun versie.","shareTitle":"Neem deel aan een live samenwerkingssessie op Excalidraw"},"errorDialog":{"title":"Fout"},"exportDialog":{"disk_title":"Opslaan op schijf","disk_details":"De scènegegevens exporteren naar een bestand waaruit u later kunt importeren.","disk_button":"Opslaan naar bestand","link_title":"Deelbare link","link_details":"Exporteren als een alleen-lezen link.","link_button":"Exporteer naar link","excalidrawplus_description":"Sla de scène op in je Excalidraw+ werkruimte.","excalidrawplus_button":"Exporteer","excalidrawplus_exportError":"Kan op dit moment niet exporteren naar Excalidraw+..."},"helpDialog":{"blog":"Lees onze blog","click":"klik","deepSelect":"Deep selecteer","deepBoxSelect":"","curvedArrow":"Gebogen pijl","curvedLine":"Kromme lijn","documentation":"Documentatie","doubleClick":"dubbelklikken","drag":"slepen","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Probleem gevonden? Verzenden","howto":"Volg onze handleidingen","or":"of","preventBinding":"Pijlbinding voorkomen","tools":"Tools","shortcuts":"Sneltoetsen","textFinish":"Voltooi het bewerken (teksteditor)","textNewLine":"Nieuwe regel toevoegen (teksteditor)","title":"Help","view":"Weergave","zoomToFit":"Zoom in op alle elementen","zoomToSelection":"Inzoomen op selectie","toggleElementLock":"","movePageUpDown":"Pagina omhoog/omlaag","movePageLeftRight":"Verplaats pagina links/rechts"},"clearCanvasDialog":{"title":"Wis canvas"},"publishDialog":{"title":"Publiceer bibliotheek","itemName":"Itemnaam","authorName":"Naam auteur","githubUsername":"GitHub gebruikersnaam","twitterUsername":"Twitter gebruikersnaam","libraryName":"Naam bibliotheek","libraryDesc":"Beschrijving van de bibliotheek","website":"Website","placeholder":{"authorName":"Je naam of gebruikersnaam","libraryName":"Naam van je bibliotheek","libraryDesc":"Beschrijving van je bibliotheek om mensen te helpen het gebruik ervan te begrijpen","githubHandle":"","twitterHandle":"","website":"Link naar je persoonlijke website of elders (optioneel)"},"errors":{"required":"Vereist","website":"Vul een geldige URL in"},"noteDescription":"openbare repository","noteGuidelines":"richtlijnen","noteLicense":"MIT-licentie, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotheek ingediend","content":"Hier"},"confirmDialog":{"resetLibrary":"Reset bibliotheek","removeItemsFromLib":"Verwijder geselecteerde items uit bibliotheek"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Je tekeningen zijn beveiligd met end-to-end encryptie, dus Excalidraw\'s servers zullen nooit zien wat je tekent.","link":"Blog post over end-to-end versleuteling in Excalidraw"},"stats":{"angle":"Hoek","element":"Element","elements":"Elementen","height":"Hoogte","scene":"Scene","selected":"Geselecteerd","storage":"Opslag","title":"Statistieken voor nerds","total":"Totaal","version":"Versie","versionCopy":"Klik om te kopiëren","versionNotAvailable":"Versie niet beschikbaar","width":"Breedte"},"toast":{"addedToLibrary":"Toegevoegd aan bibliotheek","copyStyles":"Stijlen gekopieerd.","copyToClipboard":"Gekopieerd naar het klembord.","copyToClipboardAsPng":"{{exportSelection}} naar klembord gekopieerd als PNG\\n({{exportColorScheme}})","fileSaved":"Bestand opgeslagen.","fileSavedToFilename":"Opgeslagen als {filename}","canvas":"canvas","selection":"selectie","pasteAsSingleElement":"Gebruik {{shortcut}} om te plakken als een enkel element,\\nof plak in een bestaande teksteditor","unableToEmbed":"Het insluiten van deze url is momenteel niet toegestaan. Zet een probleem op GitHub om de URL op de whitelist te zetten","unrecognizedLinkFormat":"De link die u hebt ingesloten komt niet overeen met het verwachte formaat. Probeer de \'embed\' string van de bronsite te plakken"},"colors":{"transparent":"Transparant","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"Exporteren, voorkeuren en meer...","center_heading":"Diagrammen. Eenvoudig. Gemaakt.","toolbarHint":"Kies een tool & begin met tekenen!","helpHint":"Snelkoppelingen en hulp"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/nn-NO-json-858fbccbc5be386977db.js b/public/excalidraw/excalidraw-assets-dev/locales/nn-NO-json-858fbccbc5be386977db.js new file mode 100644 index 0000000..fdf465d --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/nn-NO-json-858fbccbc5be386977db.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/nn-NO-json"],{ + +/***/ "../../locales/nn-NO.json": +/*!********************************!*\ + !*** ../../locales/nn-NO.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"","pasteCharts":"Lim inn diagram","selectAll":"Vel alt","multiSelect":"Legg til element i utval","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til utklippstavla som PNG","copyAsSvg":"Kopier til utklippstavla som SVG","copyText":"","bringForward":"Flytt framover","sendToBack":"Send heilt bak","bringToFront":"Flytt heilt fram","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stilar","pasteStyles":"Lim inn stilar","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strekbreidd","strokeStyle":"Strekstil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stipla","strokeStyle_dotted":"Prikka","sloppiness":"Ujamnheit","opacity":"Synlegheit","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhovud","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstorleik","fontFamily":"Skrifttype","addWatermark":"Legg til «Laga med Excalidraw»","handDrawn":"Handteikna","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Solid","hachure":"Skravert","zigzag":"","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tjukk","left":"Venstre","center":"Midstill","right":"Høgre","extraBold":"Ekstra tjukk","architect":"Arkitekt","artist":"Kunstnar","cartoonist":"Teiknar","fileTitle":"Filnamn","colorPicker":"Fargeveljar","canvasColors":"Brukt på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlingar","language":"Språk","liveCollaboration":"","duplicateSelection":"Dupliser","untitled":"Utan namn","name":"Namn","yourName":"Namnet ditt","madeWithExcalidraw":"Laga med Excalidraw","group":"Grupper utval","ungroup":"Avgrupper utval","collaborators":"Samarbeidarar","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern frå bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Blad gjennom bibliotek","loadingScene":"Laster scene…","align":"Juster","alignTop":"Juster til topp","alignBottom":"Juster til botn","alignLeft":"Juster til venstre","alignRight":"Juster til høgre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Sprei horisontalt","distributeVertically":"Sprei vertikalt","flipHorizontal":"Vipp vassrett","flipVertical":"Vipp loddrett","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargeveljar for linjer","showBackground":"Vis fargeveljar for bakgrunn","toggleTheme":"Veksle tema","personalLib":"Personleg bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Gjer skriftstorleik mindre","increaseFontSize":"Gjer skriftstorleik større","unbindText":"Avbind tekst","bindText":"","createContainerFromText":"","link":{"edit":"Rediger lenke","editEmbed":"","create":"Lag lenke","createEmbed":"","label":"Lenke","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Tilbakestill lerretet","exportJSON":"Eksporter til fil","exportImage":"","export":"","copyToClipboard":"Kopier til utklippstavla","save":"Lagre til noverande fil","saveAs":"Lagre som","load":"","getShareableLink":"Hent delingslenke","close":"Lukk","selectLanguage":"Vel språk","scrollBackToContent":"Skroll tilbake til innhald","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjer om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Lag nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"","publishLibrary":"Publiser","submit":"Send inn","confirm":"Stadfest","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikkje lage delingslenke.","couldNotCreateShareableLinkTooBig":"Kunne ikkje opprette deleleg lenke: scena er for stor","couldNotLoadInvalidFile":"Kunne ikkje laste inn ugyldig fil","importBackendFailed":"Importering av backend feila.","cannotExportEmptyCanvas":"Kan ikkje eksportere eit tomt lerret.","couldNotCopyToClipboard":"","decryptFailed":"Kunne ikkje dekryptere data.","uploadedSecurly":"Opplastinga er kryptert og er ikkje mogleg å lese av Excalidraw-serveren eller tredjepartar.","loadSceneOverridePrompt":"Innlasting av ekstern teikning erstattar ditt eksisterande innhald. Ynskjer du å fortsette?","collabStopOverridePrompt":"Viss du avsluttar økta overskriv du den førre, lokalt lagra teikninga di. Er du sikker?\\n\\n(Ønsker du å halde fram med denne? Då er det berre å lukke denne fana.)","errorAddingToLibrary":"Kunne ikkje legge elementet i biblioteket","errorRemovingFromLibrary":"Kunne ikkje fjerne elementet frå biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Dette biletet ser ikkje ut til å ha noko scenedata. Har du skrutt på innbygging av scene medan eksporteringa heldt på?","cannotRestoreFromImage":"Scena kunne ikkje gjenopprettast frå denne biletfila","invalidSceneUrl":"Kunne ikkje hente noko scene frå den URL-en. Ho er anten øydelagd eller inneheld ikkje gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil fjerne alt innhald frå biblioteket. Er du sikker?","removeItemsFromsLibrary":"Slette {{count}} element frå biblioteket?","invalidEncryptionKey":"Krypteringsnøkkelen må ha 22 teikn. Sanntidssamarbeid er deaktivert.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Filtypen er ikkje støtta.","imageInsertError":"Kunne ikkje sette inn biletet. Prøv igjen seinare...","fileTooBig":"Fila er for stor. Maksimal tillate storleik er {{maxSize}}.","svgImageInsertError":"Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikkje kople til samarbeidsserveren. Ver vennleg å oppdatere inn sida og prøv på nytt.","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Vel","image":"Sett in bilete","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Teikn","text":"Tekst","library":"Bibliotek","lock":"Hald fram med valt verktøy","penMode":"","link":"Legg til/ oppdater lenke til valt figur","eraser":"Viskelêr","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Handlingar: lerret","selectedShapeActions":"Handlingar: valt objekt","shapes":"Formar"},"hints":{"canvasPanning":"","linearElement":"Klikk for å starte linje med fleire punkt, eller drag for ei enkel linje","freeDraw":"Klikk og drag, slepp når du er ferdig","text":"Tips: du kan òg leggje til tekst ved å dobbeltklikke kor som helst med utvalgsverktyet","embeddable":"","text_selected":"Dobbelklikk eller trykk ENTER for å redigere teksta","text_editing":"Trykk Escape eller CtrlOrCmd+ENTER for å fullføre redigeringa","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan begrense vinkelen ved å holde nede SKIFT","resize":"Du kan halde fram med forholdet ved å trykke SHIFT medan du endrar storleik,\\ntrykk ALT for å endre storleiken frå midten","resizeImage":"Du kan endre storleiken fritt ved å halde inne SHIFT,\\nhald ALT for å endre storleik frå sentrum","rotate":"Du kan låse vinklane ved å halde SHIFT medan du roterer","lineEditor_info":"","lineEditor_pointSelected":"Trykk på Slett for å fjerne punkt(a),\\nCtrl / Cmd+D for å duplisere, eller drag for å flytte","lineEditor_nothingSelected":"Vel eit punkt å redigere (hald inne SHIFT for å velje fleire),\\neller hald inne Alt og klikk for å legge til nye punkt","placeImage":"Klikk for å plassere biletet, eller klikk og drag for å velje storleik manuelt","publishLibrary":"Publiser ditt eige bibliotek","bindTextToElement":"Trykk på enter for å legge til tekst","deepBoxSelect":"Hald inne Ctrl / Cmd for å velje djupt, og forhindre flytting","eraserRevert":"Hald inne Alt for å reversere markering av element for sletting","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikkje vise førehandsvising","canvasTooBig":"Lerretet er mogleg for stort.","canvasTooBigTip":"Tips: prøv å flytte elementa som er lengst frå kvarandre, litt nærare kvarandre."},"errorSplash":{"headingMain":"Ein feil oppstod. Prøv ","clearCanvasMessage":"Om ny sidelasting ikkje fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} vart logga i systemet vårt.","openIssueMessage":"Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.","sceneContent":"Scene-innhald:"},"roomDialog":{"desc_intro":"Du kan invitere personar til scena di for å samarbeide med deg.","desc_privacy":"Ta det med ro; økta brukar ende-til-ende-kryptering, så alt du teiknar held fram med å vere privat. Ikkje ein gong serveren vår kan sjå kva du lagar.","button_startSession":"Start økt","button_stopSession":"Stopp økt","desc_inProgressIntro":"Sanntids-samarbeidsøkt er no i gang.","desc_shareLink":"Del denne lenka med dei du vil samarbeide med:","desc_exitSession":"Dersom du avsluttar økta blir du kopla frå rommet, men du kan halde fram med å arbeide med scena lokalt. Ver merksam på at dette ikkje vil påverke andre personar, og desse vil framleis ha moglegheit til å samarbeide på deira eigen versjon.","shareTitle":"Bli med på eit sanntidssamarbeid på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scenedataa til ei fil du kan importere seinare.","disk_button":"Lagre til fil","link_title":"Deleleg lenke","link_details":"Eksporter som skrivebeskytta lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scena til Excalidraw+-arbeidsområdet ditt.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikkje eksportere til Excalidraw+ akkurat no..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker djupt","deepBoxSelect":"Marker djupt inni boksen og forhindr flytting","curvedArrow":"Boga pil","curvedLine":"Boga linje","documentation":"Dokumentasjon","doubleClick":"dobbelklikk","drag":"drag","editor":"Redigering","editLineArrowPoints":"","editText":"","github":"Funne eit problem? Send inn","howto":"Følg vegleiinga vår","or":"eller","preventBinding":"Hindre pilkopling","tools":"","shortcuts":"Tastatursnarvegar","textFinish":"Fullfør redigering (teksthandsamar)","textNewLine":"Legg til ny linje (teksthandsamar)","title":"Hjelp","view":"Vising","zoomToFit":"Zoom for å sjå alle elementa","zoomToSelection":"Zoom til utval","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Tøm lerretet"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnamn","authorName":"Eigaren sitt namn","githubUsername":"GitHub-brukarnamn","twitterUsername":"Twitter-brukarnamn","libraryName":"Biblioteknamn","libraryDesc":"Bibliotekskildring","website":"Nettstad","placeholder":{"authorName":"Namnet eller brukarnamnet ditt","libraryName":"Namnet på biblioteket ditt","libraryDesc":"Skildring av biblioteket ditt sånn at andre forstår bruken av det","githubHandle":"GitHub-brukarnamn (valfritt), slik at du kan redigere bibiloteket når det er sendt inn til vurdering","twitterHandle":"Twitter-brukarnamn (valfritt), så vi veit kven vi skal kreditere på Twitter","website":"Lenke til den personlege nettstaden din eller ein anna stad (valfritt)"},"errors":{"required":"Kravt","website":"Fyll inn ein gyldig URL"},"noteDescription":"Send inn biblioteket ditt til inkludering i den offentlege bibliotek-kjeldekodaslik at andre kan bruke det i teikningane deira.","noteGuidelines":"Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese retningslinjene før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.","noteLicense":"Ved å sende inn godkjenner du at biblioteket vert publisert under MIT-lisensen, som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.","noteItems":"Kvart bibliotekselement må ha eit eige namn, slik at det er mogleg å filtrere. Dei følgande bibliotekselementa blir inkludert:","atleastOneLibItem":"Ver vennleg å markere minst eitt bibliotekselement for å starte","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på statusher"},"confirmDialog":{"resetLibrary":"Tilbakestill bibliotek","removeItemsFromLib":"Fjern valde element frå biblioteket"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Teikningane dine er ende-til-ende-krypterte slik at Excalidraw sine serverar aldri får sjå dei.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Høgde","scene":"Scene","selected":"Valde","storage":"Lagring","title":"Statistikk for nerdar","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjonen er ikkje tilgjengeleg","width":"Breidde"},"toast":{"addedToLibrary":"Lagt til i bibliotek","copyStyles":"Kopierte stilane.","copyToClipboard":"Kopiert til utklippstavla.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavla som PNG\\n({{exportColorScheme}})","fileSaved":"Fila er lagra.","fileSavedToFilename":"Lagra som {filename}","canvas":"lerret","selection":"val","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Gjennomsiktig","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/oc-FR-json-a68ea08272c8da3c0e3f.js b/public/excalidraw/excalidraw-assets-dev/locales/oc-FR-json-a68ea08272c8da3c0e3f.js new file mode 100644 index 0000000..d1e517a --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/oc-FR-json-a68ea08272c8da3c0e3f.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/oc-FR-json"],{ + +/***/ "../../locales/oc-FR.json": +/*!********************************!*\ + !*** ../../locales/oc-FR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar en tèxt brut","pasteCharts":"Pegar los grafics","selectAll":"Tot seleccionar","multiSelect":"Apondre un element a la seleccion","moveCanvas":"Desplaçar lo canabàs","cut":"Talhar","copy":"Copiar","copyAsPng":"Copiar al quichapapièrs coma PNG","copyAsSvg":"Copiar al quichapapièrs coma SVG","copyText":"Copiar al quichapapièrs coma tèxt","bringForward":"En avant","sendToBack":"En arrièr","bringToFront":"A l’endavant","sendBackward":"Endarrièr","delete":"Suprimir","copyStyles":"Copiar los estiles","pasteStyles":"Pegar los estils","stroke":"Contorn","background":"Rèireplan","fill":"Empliment","strokeWidth":"Largor de contorn","strokeStyle":"Estil de contorn","strokeStyle_solid":"Solide","strokeStyle_dashed":"Tiret","strokeStyle_dotted":"Puntilhat","sloppiness":"Estil de traça","opacity":"Opacitat","textAlign":"Alinhament tèxt","edges":"Angles","sharp":"Ponchut","round":"Arredonit","arrowheads":"Cap de la flècha","arrowhead_none":"Cap","arrowhead_arrow":"Sageta","arrowhead_bar":"Barra","arrowhead_dot":"Ponch","arrowhead_triangle":"Triangle","fontSize":"Talha polissa","fontFamily":"Familha de polissa","addWatermark":"Apondre « Fabricat amb Excalidraw »","handDrawn":"A la man levada","normal":"Normala","code":"Còdi","small":"Pichona","medium":"Mejana","large":"Granda","veryLarge":"Gradassa","solid":"Solide","hachure":"Raia","zigzag":"","crossHatch":"Raia crosada","thin":"Fin","bold":"Espés","left":"Esquèrra","center":"Centre","right":"Drecha","extraBold":"Espesàs","architect":"Arquitècte","artist":"Artista","cartoonist":"Dessenhaire","fileTitle":"Nom del fichièr","colorPicker":"Selector de color","canvasColors":"Utilizada suls canabassses","canvasBackground":"Rèireplan del canabàs","drawingCanvas":"Zòna de dessenh","layers":"Calques","actions":"Accions","language":"Lenga","liveCollaboration":"Collaboracion en dirèct...","duplicateSelection":"Duplicar","untitled":"Sens títol","name":"Nom","yourName":"Vòstre nom","madeWithExcalidraw":"Fabricat amb Excalidraw","group":"Gropar la seleccion","ungroup":"Desunir la seleccion","collaborators":"Collaborators","showGrid":"Afichar la gresilha","addToLibrary":"Apondre a la bibliotèca","removeFromLibrary":"Suprimir de la bibliotèca","libraryLoadingMessage":"Cargament de la bibliotèca…","libraries":"Percórrer las bibliotècas","loadingScene":"Cargament de la scèna…","align":"Alinhament","alignTop":"Alinhar ennaut","alignBottom":"Alinhar enbàs","alignLeft":"Alinhar a esquèrra","alignRight":"Alinhar a drecha","centerVertically":"Centrar verticalament","centerHorizontally":"Centrar orizontalament","distributeHorizontally":"Distribuir orizontalament","distributeVertically":"Distribuir verticalament","flipHorizontal":"Virar orizontalament","flipVertical":"Virar verticalament","viewMode":"Mòde de vista","share":"Partejar","showStroke":"Mostrar lo selector de color de contorn","showBackground":"Mostrar lo selector de color de fons","toggleTheme":"Alternar tèma","personalLib":"Bibliotèca personala","excalidrawLib":"Bibliotèca Excalidraw","decreaseFontSize":"Reduire talha polissa","increaseFontSize":"Aumentar talha polissa","unbindText":"Dessociar lo tèxte","bindText":"Ligar lo tèxt al contenidor","createContainerFromText":"","link":{"edit":"Modificar lo ligam","editEmbed":"","create":"Crear un ligam","createEmbed":"","label":"Ligam","labelEmbed":"","empty":""},"lineEditor":{"edit":"Modificar la linha","exit":"Sortir de l’editor de linha"},"elementLock":{"lock":"Verrolhar","unlock":"Desverrolhar","lockAll":"Tot verrolhar","unlockAll":"Tot desverrolhar"},"statusPublished":"Publicat","sidebarLock":"Gardar la barra laterala dobèrta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Cap d’element pas encara apondut...","hint_emptyLibrary":"Seleccionatz un element d’apondre aquí, o installatz una bibliotèca del depaus public, çai-jos.","hint_emptyPrivateLibrary":"Seleccionatz un element d’apondre aquí pel canabàs."},"buttons":{"clearReset":"Reïnicializar lo canabàs","exportJSON":"Exportar en fichièr","exportImage":"Exportar imatges...","export":"Enregistrar dins...","copyToClipboard":"Copiar al quichapapièrs","save":"Salvar al fichièr actual","saveAs":"Enregistrar jos","load":"Dobrir","getShareableLink":"Obténer lo ligam de partatge","close":"Tampar","selectLanguage":"Causir una lenga","scrollBackToContent":"Tornar al contengut","zoomIn":"Zoom avant","zoomOut":"Zoom arrièr","resetZoom":"Tirar lo zoom","menu":"Menú","done":"Acabat","edit":"Modificar","undo":"Anullar","redo":"Restablir","resetLibrary":"Reïnicializar la bibliotèca","createNewRoom":"Crear sala novèla","fullScreen":"Ecran complèt","darkMode":"Mòde escur","lightMode":"Mòde clar","zenMode":"Mòde escur","objectsSnapMode":"","exitZenMode":"Sortir del mòde zen","cancel":"Anullar","clear":"Escafar","remove":"Tirar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Aquò suprimirà lo canabàs complèt. O volètz vertadièrament ?","couldNotCreateShareableLink":"Creacion impossibla del ligam de partatge.","couldNotCreateShareableLinkTooBig":"Creacion impossibla del ligam de partatge : la scèna es tròp granda","couldNotLoadInvalidFile":"Cargament impossible d’un fichièr invalid","importBackendFailed":"Importacion fracassada.","cannotExportEmptyCanvas":"Impossible d’exportar los canabasses voids.","couldNotCopyToClipboard":"Còpia impossibla al quichapapièrs.","decryptFailed":"Deschiframent impossible de las donadas.","uploadedSecurly":"Lo telecargament es estat securizat amb un chiframent del cap a la fin, significa que los servidors d’Excalidraw o que quina tèrça part que siá pòdon pas legir lo contengut.","loadSceneOverridePrompt":"Cargar un dessenh extèrn remplaçarà vòstre contengut existent. Volètz contunhar ?","collabStopOverridePrompt":"Arrestar la session remplaçarà vòstre precedent dessenh gardat localament. O volètz vertadièrament ?\\n\\n(Se volètz gardar vòstre dessenh local, tampatz simplament l’onglet del navegador a la plaça)","errorAddingToLibrary":"Apondon impossible de l’element a la bibliotèca","errorRemovingFromLibrary":"Supression impossibla de l’element a la bibliotèca","confirmAddLibrary":"Apondrà {{numShapes}} forma(s) a vòstra bibliotèca. Confirmatz ?","imageDoesNotContainScene":"Aqueste imatge sembla pas conténer cap de donadas de scèna. Avètz activat l’integracion de scèna pendent l’exportacion ?","cannotRestoreFromImage":"Restauracion impossibla de la scèna a partir del fichièr imatge","invalidSceneUrl":"Importacion impossibla de la scèna a partir de l’URL provesida. Es siá mal formatada o siá conten pas cap de donada JSON Excalidraw valida.","resetLibrary":"Aquò suprimirà vòstra bibliotèca. O volètz vertadièrament ?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la bibliotèca ?","invalidEncryptionKey":"La clau de chiframent deu conténer 22 caractèrs. La collaboracion en dirèct es desactivada.","collabOfflineWarning":"Cap de connexion pas disponibla.\\nVòstras modificacions seràn pas salvadas !"},"errors":{"unsupportedFileType":"Tipe de fichièr pas pres en carga.","imageInsertError":"Insercion d’imatge impossibla. Tornatz ensajar mai tard...","fileTooBig":"Fichièr tròp pesuc. La talha maximala autorizada es {{maxSize}}.","svgImageInsertError":"Insercion d’imatge SVG impossibla. Las balisas SVG semblan invalidas.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Connexion impossibla al servidor collab. Mercés de recargar la pagina e tornar ensajar.","importLibraryError":"Impossible de cargar la bibliotèca","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleccion","image":"Inserir imatge","rectangle":"Rectangle","diamond":"Lausange","ellipse":"Ellipsa","arrow":"Sageta","line":"Linha","freedraw":"Dessenhar","text":"Tèxt","library":"Bibliotèca","lock":"Mantenir activa l’aisina aprèp dessenhar","penMode":"Mòde estilo - empachar lo contact","link":"Apondre/Actualizar lo ligam per una fòrma seleccionada","eraser":"Goma","frame":"","embeddable":"","laser":"","hand":"Man (aisina de desplaçament de la vista)","extraTools":""},"headings":{"canvasActions":"Accions del canabàs","selectedShapeActions":"Accions per la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"","linearElement":"Clicatz per començar mantun punt, lisatz per una sola linha","freeDraw":"Clicatz e lisatz, relargatz un còp acabat","text":"Astúcia : podètz tanben apondre de tèxt en doble clicant ont que siá amb l’aisina de seleccion","embeddable":"","text_selected":"Clicatz dos còps o quichatz ENTRADA per modificar lo tèxt","text_editing":"Quichatz ESCAPAR o CtrlOrCmd+ENTRADA per acabar la modificacion","linearElementMulti":"Clicatz sul darrièr punt o quichatz Ecap o Entrada per acabar","lockAngle":"Podètz restrénger l’angle en mantenent MAJ","resize":"Podètz servar las proporcions en mantenent la tòca MAJ pendent lo redimensionament,\\nmantenètz la tòca ALT per redimensionar a partir del centre","resizeImage":"Podètz retalhar liurament en quichant CTRL,\\nquichatz ALT per retalhar a partir del centre","rotate":"Podètz restrénger los angles en mantenent MAJ pendent la rotacion","lineEditor_info":"Tenètz quichat Ctrl o Cmd e doble clic o quichatz Ctrl o Cmd + Entrada per modificar los ponches","lineEditor_pointSelected":"Quichar Suprimir per tirar lo(s) punt(s),\\nCtrlOCmd+D per duplicar, o lisatz per desplaçar","lineEditor_nothingSelected":"Seleccionar un punt d’editar (manténer Maj. per ne seleccionar mantun),\\no manténer Alt e clicar per n’apondre de novèls","placeImage":"Clicatz per plaçar l’imatge, o clicatz e lisatz per definir sa talha manualament","publishLibrary":"Publicar vòstra pròpria bibliotèca","bindTextToElement":"Quichatz Entrada per apondre de tèxte","deepBoxSelect":"Gardar CtrlOCmd per una seleccion gropada e empachar lo desplaçament","eraserRevert":"Tenètz quichat Alt per anullar los elements marcats per supression","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Afichatge impossible de l’apercebut","canvasTooBig":"Lo canabàs pòt èsser tròp grand.","canvasTooBigTip":"Astúcia : ensajatz de sarrar los elements mai alonhats."},"errorSplash":{"headingMain":"Una error s’es producha. Ensajatz ","clearCanvasMessage":"Se recargar fonciona pas, ensajatz ","clearCanvasCaveat":" Menarà a una pèrda del trabalh ","trackedToSentry":"Error amb l’identificant {{eventId}} es estada enregistrada sus nòstre sistèma.","openIssueMessage":"Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.","sceneContent":"Contengut de la scèna :"},"roomDialog":{"desc_intro":"Podètz convidar lo monde a vòstra scèna actuala per participar amb vos.","desc_privacy":"Vos en fagatz pas, la session utiliza lo chiframent del cap a la fin, çò que dessenetz demorarà privat. Mai nòstres servidors poiràn pas veire vòstra creacion.","button_startSession":"Començar la session","button_stopSession":"Arrestar la session","desc_inProgressIntro":"La session de collaboracion es ara en cors.","desc_shareLink":"Partejatz aqueste ligam amb lo monde amb qui volètz collaborar :","desc_exitSession":"Arrestar la session vos desconnectarà de la sala, mas poiretz contunhar de trabalhar a la scèna, en local. Notatz qu’aquò afectarà pas los autres, e poiràn collaborar a lor version.","shareTitle":"Rejonhètz una session collaborativa sus Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Salvar al disc","disk_details":"Exportar las donadas de la scèna cap a un fichièr que podètz importar mai tard.","disk_button":"Salvar al fichièr","link_title":"Ligam de partejar","link_details":"Exportar coma un ligam de lectura sola.","link_button":"Exportar en ligam","excalidrawplus_description":"Enregistrar la scèna dins vòstre espaci de trabalh Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Export impossibla cap a Excalidraw+ pel moment..."},"helpDialog":{"blog":"Legir nòstre blog","click":"clic","deepSelect":"Seleccion prigonda","deepBoxSelect":"Seleccionar demest un grop e empacha lo desplaçament","curvedArrow":"Sageta corba","curvedLine":"Linha corba","documentation":"Documentacion","doubleClick":"doble clic","drag":"lisar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Problèma trobat ? Senhalatz-lo","howto":"Seguissètz nòstras guidas","or":"o","preventBinding":"Empachar la fixacion de sagetas","tools":"Aisinas","shortcuts":"Acorchis clavièr","textFinish":"Terminar l’edicion (editor de tèxt)","textNewLine":"Apondre linha novèl (editor de tèxt)","title":"Ajuda","view":"Vista","zoomToFit":"Zoomar per veire totes los elements","zoomToSelection":"Zoomar la seleccion","toggleElementLock":"Verrolhar/Desverrolhar la seleccion","movePageUpDown":"Desplaçar la pagina ennaut/enbàs","movePageLeftRight":"Desplaçar la pagina a esquèrra/drecha"},"clearCanvasDialog":{"title":"Escafar canabàs"},"publishDialog":{"title":"Publicar la bibliotèca","itemName":"Nom de l’element","authorName":"Nom de l’autor","githubUsername":"Nom d’utilizaire GitHub","twitterUsername":"Nom d’utilizaire Twitter","libraryName":"Nom de la bibliotèca","libraryDesc":"Descripcion de la bibliotèca","website":"Site web","placeholder":{"authorName":"Vòstre nom o nom d’utilizaire","libraryName":"Nom de vòstra bibliotèca","libraryDesc":"Descripcion de vòstra bibliotèca per ajudar lo monde a comprendre son utilizacion","githubHandle":"GitHub handle(opcional), per poder modificar la bibliotèca un còp enviada per repassa","twitterHandle":"Nom d’utilizaire Twitter (opcional), per saber qual mercejar quand ne parlam sus Twitter","website":"Ligam cap a vòstre site web personal o endacòm mai (opcional)"},"errors":{"required":"Requerit","website":"Picatz una URL valida"},"noteDescription":"Enviatz vòstra bibliotèca per èsser compresa al repertòri public de bibliotècaper que los autres l’utilizen dins lor dessenhs.","noteGuidelines":"Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las linhas directrises abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri.","noteLicense":"En sometent, acceptatz que la bibliotèca siá publicada sota la Licéncia MIT, que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion.","noteItems":"Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses :","atleastOneLibItem":"Volgatz seleccionar almens un element de bibliotèca per començar","republishWarning":"Nòta : d’unes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent l’actualizacion d’una bibliotèca existenta o un mandadís."},"publishSuccessDialog":{"title":"Bibliotèca somesa","content":"Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançamentaquí"},"confirmDialog":{"resetLibrary":"Reïnicializar la bibliotèca","removeItemsFromLib":"Tirar los elements seleccionats de la bibliotèca"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Vòstres dessenhs son chifrats del cap a la fin en consequéncia los servidors d’Excalidraw los veiràn pas jamai.","link":"Article de blòg sul chiframent del cap a la fin dins Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Nautor","scene":"Scèna","selected":"Seleccionat","storage":"Emmagazinatge","title":"Estatisticas pels nerds","total":"Total","version":"Version","versionCopy":"Clicar per copiar","versionNotAvailable":"Version pas disponibla","width":"Largor"},"toast":{"addedToLibrary":"Apondut a la bibliotèca","copyStyles":"Estiles copiats.","copyToClipboard":"Copiats al quichapapièrs.","copyToClipboardAsPng":"{{exportSelection}} copiat coma PNG ({{exportColorScheme}})","fileSaved":"Fichièr enregistrat.","fileSavedToFilename":"Enregistrat jos {filename}","canvas":"canabàs","selection":"seleccion","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparéncia","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totas las donadas son enregistradas dins vòstre navegador.","center_heading_plus":"Voliatz puslèu utilizar Excalidraw+ a la plaça ?","menuHint":"Exportar, preferéncias, lengas, ..."},"defaults":{"menuHint":"Exportar, preferéncias, e mai...","center_heading":"Diagram. Tot. Simplament.","toolbarHint":"Prenètz un esplech e començatz de dessenhar !","helpHint":"Acorchis e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/pa-IN-json-90a2b3775bd7d8983def.js b/public/excalidraw/excalidraw-assets-dev/locales/pa-IN-json-90a2b3775bd7d8983def.js new file mode 100644 index 0000000..898dc87 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/pa-IN-json-90a2b3775bd7d8983def.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/pa-IN-json"],{ + +/***/ "../../locales/pa-IN.json": +/*!********************************!*\ + !*** ../../locales/pa-IN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"ਪੇਸਟ ਕਰੋ","pasteAsPlaintext":"ਸਾਦੇ ਪਾਠ ਵਜੋਂ ਪੇਸਟ ਕਰੋ","pasteCharts":"ਚਾਰਟ ਪੇਸਟ ਕਰੋ","selectAll":"ਸਾਰੇ ਚੁਣੋ","multiSelect":"ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ","moveCanvas":"ਕੈਨਵਸ ਹਿਲਾਓ","cut":"ਕੱਟੋ","copy":"ਕਾਪੀ ਕਰੋ","copyAsPng":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyAsSvg":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ SVG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyText":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਪਾਠ ਵਜੋਂ ਕਾਪੀ ਕਰੋ","bringForward":"ਅੱਗੇ ਲਿਆਓ","sendToBack":"ਸਭ ਤੋਂ ਪਿੱਛੇ ਭੇਜੋ","bringToFront":"ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ","sendBackward":"ਪਿੱਛੇ ਭੇਜੋ","delete":"ਮਿਟਾਓ","copyStyles":"ਸਟਾਇਲ ਕਾਪੀ ਕਰੋ","pasteStyles":"ਸਟਾਇਲ ਪੇਸਟ ਕਰੋ","stroke":"ਰੇਖਾ","background":"ਬੈਕਗਰਾਉਂਡ","fill":"ਭਰਨਾ","strokeWidth":"ਰੇਖਾ ਦੀ ਚੌੜਾਈ","strokeStyle":"ਰੇਖਾ ਦਾ ਸਟਾਇਲ","strokeStyle_solid":"ਠੋਸ","strokeStyle_dashed":"ਡੈਸ਼ ਵਾਲੀ","strokeStyle_dotted":"ਬਿੰਦੀਆਂ ਵਾਲੀ","sloppiness":"ਬੇਤਰਤੀਬੀ","opacity":"ਅਪਾਰਦਰਸ਼ਤਾ","textAlign":"ਲਿਖਤ ਇਕਸਾਰਤਾ","edges":"ਕਿਨਾਰੇ","sharp":"ਤਿੱਖੇ","round":"ਗੋਲ","arrowheads":"ਤੀਰ ਦੇ ਸਿਰੇ","arrowhead_none":"ਕੋਈ ਨਹੀਂ","arrowhead_arrow":"ਤੀਰ","arrowhead_bar":"ਡੰਡੀ","arrowhead_dot":"ਬਿੰਦੀ","arrowhead_triangle":"ਤਿਕੋਣ","fontSize":"ਫੌਂਟ ਅਕਾਰ","fontFamily":"ਫੌਂਟ ਪਰਿਵਾਰ","addWatermark":"\\"Excalidraw ਨਾਲ ਬਣਾਇਆ\\" ਜੋੜੋ","handDrawn":"ਹੱਥਲਿਖਤ","normal":"ਆਮ","code":"ਕੋਡ","small":"ਛੋਟਾ","medium":"ਮੱਧਮ","large":"ਵੱਡਾ","veryLarge":"ਬਹੁਤ ਵੱਡਾ","solid":"ਠੋਸ","hachure":"ਤਿਰਛੀਆਂ ਗਰਿੱਲਾਂ","zigzag":"ਵਿੰਗ-ਤੜਿੰਗ","crossHatch":"ਜਾਲੀ","thin":"ਪਤਲੀ","bold":"ਮੋਟੀ","left":"ਖੱਬੇ","center":"ਵਿਚਕਾਰ","right":"ਸੱਜੇ","extraBold":"ਬਹੁਤ ਮੋਟੀ","architect":"ਭਵਨ ਨਿਰਮਾਣਕਾਰੀ","artist":"ਕਲਾਕਾਰ","cartoonist":"ਕਾਰਟੂਨਿਸਟ","fileTitle":"ਫਾਈਲ ਦਾ ਨਾਂ","colorPicker":"ਰੰਗ ਚੋਣਕਾਰ","canvasColors":"ਕੈਨਵਸ \'ਤੇ ਵਰਤਿਆ","canvasBackground":"ਕੈਨਵਸ ਦਾ ਬੈਕਗਰਾਉਂਡ","drawingCanvas":"ਡਰਾਇੰਗ ਕੈਨਵਸ","layers":"ਪਰਤਾਂ","actions":"ਕਾਰਵਾਈਆਂ","language":"ਭਾਸ਼ਾ","liveCollaboration":"ਲਾਇਵ ਸਹਿਯੋਗ...","duplicateSelection":"ਡੁਪਲੀਕੇਟ ਬਣਾਓ","untitled":"ਬੇ-ਸਿਰਨਾਵਾਂ","name":"ਨਾਂ","yourName":"ਤੁਹਾਡਾ ਨਾਂ","madeWithExcalidraw":"Excalidraw ਨਾਲ ਬਣਾਇਆ","group":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ","ungroup":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ","collaborators":"ਸਹਿਯੋਗੀ","showGrid":"ਜਾਲੀ ਦਿਖਾਓ","addToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ","removeFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ \'ਚੋਂ ਹਟਾਓ","libraryLoadingMessage":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…","libraries":"ਲਾਇਬ੍ਰੇਰੀਆਂ ਬਰਾਉਜ਼ ਕਰੋ","loadingScene":"ਦ੍ਰਿਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…","align":"ਇਕਸਾਰ","alignTop":"ਉੱਪਰ ਇਕਸਾਰ ਕਰੋ","alignBottom":"ਹੇਠਾਂ ਇਕਸਾਰ ਕਰੋ","alignLeft":"ਖੱਬੇ ਇਕਸਾਰ ਕਰੋ","alignRight":"ਸੱਜੇ ਇਕਸਾਰ ਕਰੋ","centerVertically":"ਲੇਟਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","centerHorizontally":"ਖੜ੍ਹਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","distributeHorizontally":"ਖੜ੍ਹਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","distributeVertically":"ਲੇਟਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","flipHorizontal":"ਲੇਟਵੇਂ ਪਾਸੇ ਪਲਟੋ","flipVertical":"ਖੜ੍ਹਵੇਂ ਪਾਸੇ ਪਲਟੋ","viewMode":"ਦੇਖਣ ਵਾਲਾ ਮੋਡ","share":"ਸਾਂਝਾ ਕਰੋ","showStroke":"ਰੇਖਾ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","showBackground":"ਬੈਕਗਰਾਉਂਡ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","toggleTheme":"ਥੀਮ ਬਦਲੋ","personalLib":"ਨਿੱਜੀ ਲਾਇਬ੍ਰੇਰੀ","excalidrawLib":"ਐਕਸਕਲੀਡਰਾਅ ਲਾਇਬ੍ਰੇਰੀ","decreaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਘਟਾਓ","increaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਵਧਾਓ","unbindText":"ਪਾਠ ਨੂੰ ਵੱਖ ਕਰੋ","bindText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਨਾਲ ਬੰਨ੍ਹੋ","createContainerFromText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ","link":{"edit":"ਕੜੀ ਸੋਧੋ","editEmbed":"","create":"ਕੜੀ ਬਣਾਓ","createEmbed":"","label":"ਕੜੀ","labelEmbed":"","empty":""},"lineEditor":{"edit":"ਪੰਕਤੀ ਸੋਧੋ","exit":"ਪੰਕਤੀ ਸੋਧਕ \'ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ"},"elementLock":{"lock":"ਲਾਕ ਕਰੋ","unlock":"ਅਨਲਾਕ ਕਰੋ","lockAll":"ਸਭ ਲਾਕ ਕਰੋ","unlockAll":"ਸਭ ਅਨਲਾਕ ਕਰੋ"},"statusPublished":"ਪ੍ਰਕਾਸ਼ਤ ਹੈ","sidebarLock":"ਸਾਈਡਬਾਰ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖੋ","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ਹਾਲੇ ਤੱਕ ਕੋਈ ਚੀਜ ਜੋੜੀ ਨਹੀਂ ਗਈ...","hint_emptyLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ, ਜਾਂ ਹੇਠਾਂ ਪਬਲਿਕ ਰਿਪਾਜ਼ੀਟਰੀ ‘ਚੋਂ ਲਾਇਬ੍ਰੇਰੀ ਸਥਾਪਤ ਕਰੋ।","hint_emptyPrivateLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ।"},"buttons":{"clearReset":"ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ","exportJSON":"ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportImage":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ...","export":"ਇਸ ਵਿੱਚ ਸਾਂਭੋ...","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕਰੋ","save":"ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","saveAs":"ਇਸ ਵਜੋਂ ਸਾਂਭੋ","load":"ਖੋਲ੍ਹੋ","getShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ","close":"ਬੰਦ ਕਰੋ","selectLanguage":"ਭਾਸ਼ਾ ਚੁਣੋ","scrollBackToContent":"ਸਮੱਗਰੀ \'ਤੇ ਵਾਪਸ ਸਕਰੋਲ ਕਰੋ","zoomIn":"ਜ਼ੂਮ ਵਧਾਓ","zoomOut":"ਜ਼ੂਮ ਘਟਾਓ","resetZoom":"ਜ਼ੂਮ ਰੀਸੈੱਟ ਕਰੋ","menu":"ਮੇਨੂ","done":"ਹੋ ਗਿਆ","edit":"ਸੋਧੋ","undo":"ਅਣਕੀਤਾ ਕਰੋ","redo":"ਮੁੜ-ਕਰੋ","resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","createNewRoom":"ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ","fullScreen":"ਪੂਰੀ ਸਕਰੀਨ","darkMode":"ਡਾਰਕ ਮੋਡ","lightMode":"ਲਾਇਟ ਮੋਡ","zenMode":"ਜ਼ੈੱਨ ਮੋਡ","objectsSnapMode":"","exitZenMode":"ਜ਼ੈੱਨ ਮੋਡ \'ਚੋਂ ਬਾਹਰ ਨਿਕਲੋ","cancel":"ਰੱਦ ਕਰੋ","clear":"ਸਾਫ਼ ਕਰੋ","remove":"ਹਟਾਓ","embed":"","publishLibrary":"ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","submit":"ਜਮ੍ਹਾ ਕਰਵਾਓ","confirm":"ਪੁਸ਼ਟੀ ਕਰੋ","embeddableInteractionButton":""},"alerts":{"clearReset":"ਇਹ ਸਾਰਾ ਕੈਨਵਸ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","couldNotCreateShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ।","couldNotCreateShareableLinkTooBig":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ: ਦ੍ਰਿਸ਼ ਬਹੁਤ ਵੱਡਾ ਹੈ","couldNotLoadInvalidFile":"ਨਜਾਇਜ਼ ਫਾਈਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕੇ","importBackendFailed":"ਬੈਕਐੱਨਡ ਤੋਂ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।","cannotExportEmptyCanvas":"ਖਾਲੀ ਕੈਨਵਸ ਨੂੰ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ।","couldNotCopyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।","decryptFailed":"ਡਾਟਾ ਡੀਕਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕੇ।","uploadedSecurly":"ਅੱਪਲੋਡ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤੀ ਹੋਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ Excalidraw ਸਰਵਰ ਅਤੇ ਤੀਜੀ ਧਿਰ ਦੇ ਬੰਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੇ।","loadSceneOverridePrompt":"ਬਾਹਰੀ ਡਰਾਇੰਗ ਨੂੰ ਲੋਡ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸਮੱਗਰੀ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?","collabStopOverridePrompt":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਪਿਛਲੀ ਲੋਕਲ ਸਾਂਭੀ ਡਰਾਇੰਗ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?\\n\\n(ਜੇ ਤੁਸੀਂ ਆਪਣੀ ਲੋਕਲ ਡਰਾਇੰਗ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਹ ਕਰਨ ਦੀ ਬਜਾਏ ਬੱਸ ਆਪਣਾ ਟੈਬ ਬੰਦ ਕਰ ਦਿਉ।)","errorAddingToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸਮੱਗਰੀ ਨਹੀਂ ਜੋੜ ਸਕੇ","errorRemovingFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਸਮੱਗਰੀ ਨਹੀਂ ਹਟਾ ਸਕੇ","confirmAddLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","imageDoesNotContainScene":"ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਤੁਸੀਂ ਨਿਰਯਾਤ ਕਰਦੇ ਸਮੇਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਮੜ੍ਹਣਾ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?","cannotRestoreFromImage":"ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ","invalidSceneUrl":"ਦਿੱਤੀ ਗਈ URL \'ਚੋਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ। ਇਹ ਜਾਂ ਤਾਂ ਖਰਾਬ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਾਇਜ਼ Excalidraw JSON ਡਾਟਾ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।","resetLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","removeItemsFromsLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ {{count}} ਚੀਜ਼(-ਜ਼ਾਂ) ਮਿਟਾਉਣੀਆਂ ਹਨ?","invalidEncryptionKey":"ਇਨਕਰਿਪਸ਼ਨ ਕੁੰਜੀ ‌‌22 ਅੱਖਰਾਂ ਦੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਲਾਇਵ ਸਹਿਯੋਗ ਬੰਦ ਹੈ।","collabOfflineWarning":"ਕੋਈ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ\\nਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੀਆਂ ਨਹੀਂ ਜਾਣਗੀਆਂ।"},"errors":{"unsupportedFileType":"ਫਾਈਲ ਦੀ ਕਿਸਮ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।","imageInsertError":"ਚਿੱਤਰ ਸ਼ਾਮਲ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ...","fileTooBig":"ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ। ਵੱਧ-ਤੋਂ-ਵੱਧ ਪ੍ਰਵਾਨਤ ਅਕਾਰ {{maxSize}} ਹੈ।","svgImageInsertError":"SVG ਤਸਵੀਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕਰ ਸਕੇ। SVG ਮਾਰਕ-ਅੱਪ ਨਜਾਇਜ਼ ਲੱਗ ਰਿਹਾ ਹੈ।","failedToFetchImage":"","invalidSVGString":"SVG ਨਜਾਇਜ਼ ਹੈ।","cannotResolveCollabServer":"","importLibraryError":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ਚੋਣਕਾਰ","image":"ਤਸਵੀਰ ਸ਼ਾਮਲ ਕਰੋ","rectangle":"ਆਇਤ","diamond":"ਹੀਰਾ","ellipse":"ਅੰਡਾਕਾਰ","arrow":"ਤੀਰ","line":"ਲਕੀਰ","freedraw":"ਵਾਹੋ","text":"ਪਾਠ","library":"ਲਾਇਬ੍ਰੇਰੀ","lock":"ਡਰਾਇੰਗ ਤੋਂ ਬਾਅਦ ਵੀ ਚੁਣੇ ਹੋਏ ਸੰਦ ਨੂੰ ਸਰਗਰਮ ਰੱਖੋ ","penMode":"ਪੈੱਨ ਮੋਡ - ਟੱਚ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ","link":"","eraser":"ਰਬੜ","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ਕੈਨਵਸ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","selectedShapeActions":"ਚੁਣੀ ਆਕ੍ਰਿਤੀ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","shapes":"ਆਕ੍ਰਿਤੀਆਂ"},"hints":{"canvasPanning":"","linearElement":"ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਬਿੰਦੂਆਂ ਲਈ ਕਲਿੱਕ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ, ਇਕਹਿਰੀ ਲਕੀਰ ਲਈ ਘਸੀਟੋ","freeDraw":"ਕਲਿੱਕ ਕਰਕੇ ਘਸੀਟੋ, ਪੂਰਾ ਹੋਣ \'ਤੇ ਛੱਡ ਦਿਉ","text":"ਨੁਸਖਾ: ਤੁਸੀਂ ਚੋਣਕਾਰ ਸੰਦ ਰਾਹੀਂ ਕਿਤੇ ਵੀ ਡਬਲ-ਕਲਿੱਕ ਕਰਕੇ ਵੀ ਪਾਠ ਜੋੜ ਸਕਦੇ ਹੋ","embeddable":"","text_selected":"ਪਾਠ ਨੂੰ ਸੋਧਣ ਲਈ ਡਬਲ-ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","text_editing":"ਸੋਧ ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਐਸਕੇਪ (Esc) ਜਾਂ Ctrl-ਜਾਂ-Cmd+ਐਂਟਰ (enter) ਦਬਾਓ","linearElementMulti":"ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਆਖਰੀ ਬਿੰਦੂ \'ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਇਸਕੇਪ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","lockAngle":"ਤੁਸੀਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","resize":"ਤੁਸੀਂ ਅਕਾਰ ਬਦਲਦੇ ਸਮੇਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਅਨੁਪਾਤ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ, ਵਿਚਕਾਰ ਤੋਂ ਅਕਾਰ ਬਦਲਣ ਲਈ ALT ਦਬਾਓ","resizeImage":"","rotate":"ਤੁਸੀਂ ਘੁਮਾਉਂਦੇ ਹੋਏ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ","bindTextToElement":"ਪਾਠ ਜੋੜਨ ਲਈ ਐੰਟਰ ਦਬਾਓ","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"ਝਲਕ ਨਹੀਂ ਦਿਖਾ ਸਕਦੇ","canvasTooBig":"ਸ਼ਾਇਦ ਕੈਨਵਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡਾ ਹੈ।","canvasTooBigTip":"ਨੁਸਖਾ: ਸਭ ਤੋਂ ਦੂਰ ਸਥਿੱਤ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਨੇੜੇ ਲਿਆ ਕੇ ਦੇਖੋ।"},"errorSplash":{"headingMain":"ਕੋਈ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ। ਕਰਕੇ ਦੇਖੋ।","clearCanvasMessage":"ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ ","clearCanvasCaveat":" ਇਹ ਸਾਰਾ ਕੰਮ ਗਵਾ ਦੇਵੇਗਾ ","trackedToSentry":"ਸੂਚਕ {{eventId}} ਵਾਲੀ ਸਮੱਸਿਆ ਸਾਡੇ ਸਿਸਟਮ \'ਤੇ ਟਰੈਕ ਕੀਤੀ ਗਈ ਸੀ।","openIssueMessage":"ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ \'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।","sceneContent":"ਦ੍ਰਿਸ਼ ਦੀ ਸਮੱਗਰੀ:"},"roomDialog":{"desc_intro":"ਤੁਸੀਂ ਲੋਕਾਂ ਨੂੰ ਆਪਣੇ ਨਾਲ ਮੌਜੂਦਾ ਦ੍ਰਿਸ਼ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਲਈ ਸੱਦਾ ਭੇਜ ਸਕਦੇ ਹੋ।","desc_privacy":"ਫਿਕਰ ਨਾ ਕਰੋ, ਇਜਲਾਸ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਵਰਤਦਾ ਹੈ, ਸੋ ਜੋ ਕੁਝ ਵੀ ਤੁਸੀਂ ਵਾਹੁੰਦੇ ਹੋ ਉਹ ਨਿੱਜੀ ਹੀ ਰਹਿੰਦਾ ਹੈ। ਇੱਥੋਂ ਤੱਕ ਕਿ ਸਾਡੇ ਸਰਵਰ ਵੀ ਨਹੀਂ ਜਾਣ ਸਕਣਗੇ ਕਿ ਤੁਸੀਂ ਕੀ ਬਣਾਇਆ ਹੈ।","button_startSession":"ਇਜਲਾਸ ਸ਼ੁਰੂ ਕਰੋ","button_stopSession":"ਇਜਲਾਸ ਰੋਕੋ","desc_inProgressIntro":"ਲਾਇਵ ਸਹਿਯੋਗ ਇਜਲਾਸ ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ।","desc_shareLink":"ਇਸ ਲਿੰਕ ਨੂੰ ਉਹਨਾਂ ਨਾਲ ਸਾਂਝਾ ਕਰੋ ਜਿਹਨਾਂ ਨਾਲ ਤੁਸੀਂ ਸਹਿਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ:","desc_exitSession":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਤੁਹਾਡਾ ਕਮਰੇ ਨਾਲੋਂ ਨਾਤਾ ਤੋੜ ਦੇਵੇਗਾ, ਪਰ ਤੁਸੀਂ ਸਥਾਨਕ ਪੱਧਰ \'ਤੇ ਦ੍ਰਿਸ਼ ਨਾਲ ਕੰਮ ਕਰਨਾ ਜਾਰੀ ਰੱਖ ਸਕੋਗੇ। ਇਹ ਧਿਆਨ \'ਚ ਰੱਖੋ ਕਿ ਇਹ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰੇਗਾ , ਅਤੇ ਉਹ ਹਾਲੇ ਵੀ ਆਪਣੇ ਸੰਸਕਰਨ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਦੇ ਕਾਬਲ ਹੋਣਗੇ।","shareTitle":"Excalidraw \'ਤੇ ਲਾਈਵ ਇਜਲਾਸ ਦਾ ਹਿੱਸਾ ਬਣੋ"},"errorDialog":{"title":"ਗਲਤੀ"},"exportDialog":{"disk_title":"ਡਿਸਕ ਵਿੱਚ ਸਾਂਭੋ","disk_details":"ਦ੍ਰਿਸ਼ ਦਾ ਡਾਟਾ ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ ਜਿੱਥੋਂ ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਆਯਾਤ ਕਰ ਸਕਦੇ ਹੋ।","disk_button":"ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","link_title":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ","link_details":"ਸਿਰਫ ਦੇਖੇ-ਜਾਣ ਵਾਲੀ ਲਿੰਕ ਵਜੋਂ ਨਿਰਯਾਤ ਕਰੋ।","link_button":"ਲਿੰਕ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_description":"ਆਪਣੇ ਦ੍ਰਿਸ਼ ਦੇ ਡਾਟੇ ਨੂੰ Excalidraw+ ਵਰਕਸਪੇਸ ਵਿੱਚ ਸਾਂਭੋ।","excalidrawplus_button":"ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_exportError":"ਇਸ ਸਮੇਂ Excalidraw+ ਵਿੱਚ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ..."},"helpDialog":{"blog":"ਸਾਡਾ ਬਲੌਗ ਪੜ੍ਹੋ","click":"ਕਲਿੱਕ","deepSelect":"","deepBoxSelect":"","curvedArrow":"ਵਿੰਗਾ ਤੀਰ","curvedLine":"ਵਿੰਗੀ ਲਕੀਰ","documentation":"ਕਾਗਜ਼ਾਤ","doubleClick":"ਡਬਲ-ਕਲਿੱਕ","drag":"ਘਸੀਟੋ","editor":"ਸੋਧਕ","editLineArrowPoints":"","editText":"","github":"ਕੋਈ ਸਮੱਸਿਆ ਲੱਭੀ? ਜਮ੍ਹਾਂ ਕਰਵਾਓ","howto":"ਸਾਡੀਆਂ ਗਾਈਡਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ","or":"ਜਾਂ","preventBinding":"ਤੀਰ ਬੱਝਣਾ ਰੋਕੋ","tools":"ਟੂਲ","shortcuts":"ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ","textFinish":"ਸੋਧਣਾ ਮੁਕੰਮਲ ਕਰੋ (ਪਾਠ ਸੋਧਕ)","textNewLine":"ਨਵੀਂ ਪੰਕਤੀ ਜੋੜੋ (ਪਾਠ ਸੋਧਕ)","title":"ਮਦਦ","view":"ਦਿੱਖ","zoomToFit":"ਸਾਰੇ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ","zoomToSelection":"ਚੋਣ ਤੱਕ ਜ਼ੂਮ ਕਰੋ","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"ਕੈਨਵਸ ਨੂੰ ਸਾਫ਼ ਕਰੋ"},"publishDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","itemName":"ਚੀਜ਼ ਦਾ ਨਾਂ","authorName":"ਲੇਖਕ ਦਾ ਨਾਂ","githubUsername":"ਗਿੱਟਹੱਬ ਵਰਤੋਂਕਾਰ ਨਾਂ","twitterUsername":"ਟਵਿੱਟਰ ਦਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ","website":"ਵੈੱਬਸਾਇਟ","placeholder":{"authorName":"ਤੁਹਾਡਾ ਨਾਂ ਜਾਂ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਤੁਹਾਡੀ ਲਾਇਬਰ੍ਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ ਤਾਂ ਜੋ ਲੋਕਾਂ ਨੂੰ ਇਸ ਤੋੰਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨ ਸਬੰਧੀ ਮਦਦ ਮਿਲ ਸਕੇ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"ਲੋੜੀਂਦਾ","website":"ਜਾਇਜ਼ URL ਭਰੋ"},"noteDescription":"ਹੋਰ ਲੋਕਾਂ ਵੱਲੋਂ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਵਰਤਣ ਲਈ ਸਕਣ ਇਸ ਲਈਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ ਵਿੱਚ ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਕਰਵਾਉਣ ਲਈ ਜਮ੍ਹਾ ਕਰਵਾਓ","noteGuidelines":"ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼","noteLicense":"MIT ਲਾਇਸੈਂਸ, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਜਮ੍ਹਾਂ ਕਰਵਾਈ","content":"ਧੰਨਵਾਦ {{authorName}} ਜੀਉ। ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਮੀਖਿਆ ਲਈ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਉਸਦੀ ਸਥਿਤੀ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ।"},"confirmDialog":{"resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","removeItemsFromLib":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ"},"imageExportDialog":{"header":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ","label":{"withBackground":"ਪਿਛੋਕੜ","onlySelected":"ਸਿਰਫ ਚੁਣੇ ਹੋਏ","darkMode":"ਡਾਰਕ ਮੋਡ","embedScene":"ਦ੍ਰਿਸ਼ ਮੜ੍ਹੋ","scale":"ਸਕੇਲ","padding":"ਪੈਡਿੰਗ"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportToSvg":"SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","copyPngToClipboard":"PNG ਨੂੰ ਕਲਿੱਪੋਬਰਡ ‘ਤੇ ਕਾਪੀ ਕਰੋ"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"ਗੱਤੇ \'ਤੇ ਕਾਪੀ ਕਰੋ"}},"encrypted":{"tooltip":"ਤੁਹਾਡੀ ਡਰਾਇੰਗਾਂ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਟ ਕੀਤੀਆਂ ਹੋਈਆਂ ਹਨ, ਇਸ ਲਈ Excalidraw ਦੇ ਸਰਵਰ ਉਹਨਾਂ ਨੂੰ ਕਦੇ ਵੀ ਨਹੀਂ ਦੇਖਣਗੇ।","link":"Excalidraw ਵਿੱਚ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕ੍ਰਿਪਸ਼ਨ \'ਤੇ ਬਲੌਗ ਸੰਪਾਦਨਾ"},"stats":{"angle":"ਕੋਣ","element":"ਐਲੀਮੈਂਟ","elements":"ਐਲੀਮੈਂਟ","height":"ਉਚਾਈ","scene":"ਦ੍ਰਿਸ਼","selected":"ਚੁਣੇ","storage":"ਸਟੋਰੇਜ","title":"ਪੜਾਕੂਆਂ ਲਈ ਅੰਕੜੇ","total":"ਕੁੱਲ","version":"ਸੰਸਕਰਨ","versionCopy":"ਕਾਪੀ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ","versionNotAvailable":"ਸੰਸਕਰਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ","width":"ਚੌੜਾਈ"},"toast":{"addedToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜਿਆ","copyStyles":"ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕੀਤਾ।","copyToClipboardAsPng":"{{exportSelection}} ਨੂੰ ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ ({{exportColorScheme}})","fileSaved":"ਫਾਈਲ ਸਾਂਭੀ ਗਈ।","fileSavedToFilename":"{filename} ਵਿੱਚ ਸਾਂਭੀ","canvas":"ਕੈਨਵਸ","selection":"ਚੋਣ","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ਪਾਰਦਰਸ਼ੀ","black":"ਕਾਲੀ","white":"ਸਫ਼ੈਦ","red":"ਲਾਲ","pink":"ਗੁਲਾਬੀ","grape":"ਅੰਗੂਰੀ","violet":"ਜਾਮਣੀ","gray":"ਸੁਰਮਈ","blue":"ਨੀਲਾ","cyan":"ਫਿਰੋਜੀ","teal":"ਟੀਲ","green":"ਹਰਾ","yellow":"ਪੀਲਾ","orange":"ਸੰਤਰੀ","bronze":"ਕਾਂਸੇਰੰਗਾ"},"welcomeScreen":{"app":{"center_heading":"ਤੁਹਾਡਾ ਸਾਰਾ ਡਾਟਾ ਤੁਹਾਡੇ ਲੋਕਲ ਬਰਾਉਜ਼ਰ ਵਿੱਚ ਸਾਂਭਿਆ ਹੋਇਆ ਹੈ।","center_heading_plus":"","menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਭਾਸ਼ਾਵਾਂ, …"},"defaults":{"menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਅਤੇ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ…","center_heading":"ਡਾਇਆਗ੍ਰਾਮਾਂ। ਕੀਤੀਆਂ। ਸੁਖਾਲੀਆਂ।","toolbarHint":"","helpHint":"ਸ਼ਾਰਟਕੱਟ ਤੇ ਮਦਦ"}},"colorPicker":{"mostUsedCustomColors":"ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕਸਟਮ ਰੰਗ","colors":"ਰੰਗ","shades":"ਸ਼ੇਡਾਂ","hexCode":"ਹੈਕਸ ਕੋਡ","noShades":"ਇਸ ਰੰਗ ਦੀ ਕੋਈ ਸ਼ੇਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/pl-PL-json-9bb55330d5aaf336646e.js b/public/excalidraw/excalidraw-assets-dev/locales/pl-PL-json-9bb55330d5aaf336646e.js new file mode 100644 index 0000000..93620f2 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/pl-PL-json-9bb55330d5aaf336646e.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/pl-PL-json"],{ + +/***/ "../../locales/pl-PL.json": +/*!********************************!*\ + !*** ../../locales/pl-PL.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Wklej","pasteAsPlaintext":"Wklej jako zwykły tekst","pasteCharts":"Wklej wykresy","selectAll":"Zaznacz wszystko","multiSelect":"Dodaj element do zaznaczenia","moveCanvas":"Przesuń obszar roboczy","cut":"Wytnij","copy":"Kopiuj","copyAsPng":"Skopiuj do schowka jako plik PNG","copyAsSvg":"Skopiuj do schowka jako plik SVG","copyText":"Skopiuj do schowka jako tekst","bringForward":"Przenieś wyżej","sendToBack":"Przenieś na spód","bringToFront":"Przenieś na wierzch","sendBackward":"Przenieś niżej","delete":"Usuń","copyStyles":"Kopiuj style","pasteStyles":"Wklej style","stroke":"Kolor obramowania","background":"Kolor wypełnienia","fill":"Wypełnienie","strokeWidth":"Grubość obramowania","strokeStyle":"Styl obrysu","strokeStyle_solid":"Pełny","strokeStyle_dashed":"Kreskowany","strokeStyle_dotted":"Kropkowany","sloppiness":"Styl kreski","opacity":"Przeźroczystość","textAlign":"Wyrównanie tekstu","edges":"Krawędzie","sharp":"Ostry","round":"Zaokrąglij","arrowheads":"Groty","arrowhead_none":"Brak","arrowhead_arrow":"Strzałka","arrowhead_bar":"Kreska","arrowhead_dot":"Kropka","arrowhead_triangle":"Trójkąt","fontSize":"Rozmiar tekstu","fontFamily":"Krój pisma","addWatermark":"Dodaj \\"Zrobione w Excalidraw\\"","handDrawn":"Odręczny","normal":"Normalny","code":"Kod","small":"Mały","medium":"Średni","large":"Duży","veryLarge":"Bardzo duży","solid":"Pełne","hachure":"Linie","zigzag":"Zygzak","crossHatch":"Zakreślone","thin":"Cienkie","bold":"Pogrubione","left":"Do lewej","center":"Do środka","right":"Do prawej","extraBold":"Ekstra pogrubione","architect":"Dokładny","artist":"Artystyczny","cartoonist":"Rysunkowy","fileTitle":"Nazwa pliku","colorPicker":"Paleta kolorów","canvasColors":"Używane na płótnie","canvasBackground":"Kolor dokumentu","drawingCanvas":"Obszar roboczy","layers":"Warstwy","actions":"Akcje","language":"Język","liveCollaboration":"Współpraca w czasie rzeczywistym...","duplicateSelection":"Powiel","untitled":"Bez tytułu","name":"Nazwa","yourName":"Twoje imię","madeWithExcalidraw":"Zrobione w Excalidraw","group":"Zgrupuj wybrane","ungroup":"Rozgrupuj wybrane","collaborators":"Współtwórcy","showGrid":"Pokaż siatkę","addToLibrary":"Dodaj do biblioteki","removeFromLibrary":"Usuń z biblioteki","libraryLoadingMessage":"Wczytywanie biblioteki…","libraries":"Przeglądaj biblioteki","loadingScene":"Wczytywanie sceny…","align":"Wyrównaj","alignTop":"Wyrównaj do góry","alignBottom":"Wyrównaj do dołu","alignLeft":"Wyrównaj do lewej","alignRight":"Wyrównaj do prawej","centerVertically":"Wyśrodkuj w pionie","centerHorizontally":"Wyśrodkuj w poziomie","distributeHorizontally":"Rozłóż poziomo","distributeVertically":"Rozłóż pionowo","flipHorizontal":"Odwróć w poziomie","flipVertical":"Odwróć w pionie","viewMode":"Tryb widoku","share":"Udostępnij","showStroke":"Pokaż próbnik kolorów obrysu","showBackground":"Pokaż próbnik koloru tła","toggleTheme":"Przełącz motyw","personalLib":"Biblioteka prywatna","excalidrawLib":"Biblioteka Excalidraw","decreaseFontSize":"Zmniejsz rozmiar czcionki","increaseFontSize":"Zwiększ rozmiar czcionki","unbindText":"Odłącz tekst od kontenera","bindText":"Połącz tekst z kontenerem","createContainerFromText":"Zawijaj tekst w kontenerze","link":{"edit":"Edytuj łącze","editEmbed":"Edytuj i osadź link","create":"Utwórz łącze","createEmbed":"Stwórz i osadź link","label":"Łącze","labelEmbed":"Podlinkuj i osadź","empty":"Brakujący link"},"lineEditor":{"edit":"Edytuj linię","exit":"Wyjdź z edytora linii"},"elementLock":{"lock":"Zablokuj","unlock":"Odblokuj","lockAll":"Zablokuj wszystko","unlockAll":"Odblokuj wszystko"},"statusPublished":"Opublikowano","sidebarLock":"Panel boczny zawsze otwarty","selectAllElementsInFrame":"Zaznacz wszystkie elementy w ramce","removeAllElementsFromFrame":"Usuń wszystkie elementy z ramki","eyeDropper":"Wybierz kolor z płótna"},"library":{"noItems":"Nie dodano jeszcze żadnych elementów...","hint_emptyLibrary":"Wybierz element na płótnie, aby go tutaj dodać, lub zainstaluj bibliotekę z poniższego publicznego repozytorium.","hint_emptyPrivateLibrary":"Wybierz element, aby dodać go tutaj."},"buttons":{"clearReset":"Wyczyść dokument i zresetuj kolor dokumentu","exportJSON":"Eksportuj do pliku","exportImage":"Eksportuj obraz...","export":"Zapisz jako...","copyToClipboard":"Skopiuj do schowka","save":"Zapisz do bieżącego pliku","saveAs":"Zapisz jako","load":"Otwórz","getShareableLink":"Udostępnij","close":"Zamknij","selectLanguage":"Wybierz język","scrollBackToContent":"Wróć do obszaru roboczego","zoomIn":"Powiększ","zoomOut":"Pomniejsz","resetZoom":"Zresetuj powiększenie","menu":"Menu","done":"Gotowe","edit":"Edytuj","undo":"Cofnij","redo":"Przywróć","resetLibrary":"Resetuj bibliotekę","createNewRoom":"Utwórz nowy pokój","fullScreen":"Pełny ekran","darkMode":"Ciemny motyw","lightMode":"Jasny motyw","zenMode":"Tryb Zen","objectsSnapMode":"Przyciąganie do obiektów","exitZenMode":"Wyjdź z trybu Zen","cancel":"Anuluj","clear":"Wyczyść","remove":"Usuń","embed":"Przełącz osadzenie","publishLibrary":"Opublikuj","submit":"Prześlij","confirm":"Zatwierdź","embeddableInteractionButton":"Kliknij, aby wejść w interakcję"},"alerts":{"clearReset":"To spowoduje usunięcie wszystkiego z dokumentu. Czy chcesz kontynuować?","couldNotCreateShareableLink":"Wystąpił błąd przy generowaniu linka do udostępniania.","couldNotCreateShareableLinkTooBig":"Nie można utworzyć linku do udostępnienia: scena jest za duża","couldNotLoadInvalidFile":"Nie udało się otworzyć pliku. Wybrany plik jest nieprawidłowy.","importBackendFailed":"Wystąpił błąd podczas importowania pliku.","cannotExportEmptyCanvas":"Najpierw musisz coś narysować, aby zapisać dokument.","couldNotCopyToClipboard":"Nie udało się skopiować do schowka.","decryptFailed":"Nie udało się odszyfrować danych.","uploadedSecurly":"By zapewnić Ci prywatność, udostępnianie projektu jest zabezpieczone szyfrowaniem end-to-end, co oznacza, że poza tobą i osobą z którą podzielisz się linkiem, nikt nie ma dostępu do tego co udostępniasz.","loadSceneOverridePrompt":"Wczytanie zewnętrznego rysunku zastąpi istniejącą zawartość. Czy chcesz kontynuować?","collabStopOverridePrompt":"Zatrzymanie sesji nadpisze poprzedni, zapisany lokalnie rysunek. Czy jesteś pewien?\\n\\n(Jeśli chcesz zachować swój lokalny rysunek, po prostu zamknij zakładkę przeglądarki.)","errorAddingToLibrary":"Nie udało się dodać elementu do biblioteki","errorRemovingFromLibrary":"Nie udało się usunąć elementu z biblioteki","confirmAddLibrary":"To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?","imageDoesNotContainScene":"Ten obraz nie zawiera żadnych informacji o scenie. Czy włączyłeś osadzanie sceny podczas eksportu?","cannotRestoreFromImage":"Scena nie mogła zostać przywrócona z pliku obrazu","invalidSceneUrl":"Nie udało się zaimportować sceny z podanego adresu URL. Jest ona wadliwa lub nie zawiera poprawnych danych Excalidraw w formacie JSON.","resetLibrary":"To wyczyści twoją bibliotekę. Jesteś pewien?","removeItemsFromsLibrary":"Usunąć {{count}} element(ów) z biblioteki?","invalidEncryptionKey":"Klucz szyfrowania musi składać się z 22 znaków. Współpraca na żywo jest wyłączona.","collabOfflineWarning":"Brak połączenia z Internetem.\\nTwoje zmiany nie zostaną zapisane!"},"errors":{"unsupportedFileType":"Nieobsługiwany typ pliku.","imageInsertError":"Nie udało się wstawić obrazu. Spróbuj ponownie później...","fileTooBig":"Plik jest zbyt duży. Maksymalny dozwolony rozmiar to {{maxSize}}.","svgImageInsertError":"Nie udało się wstawić obrazu SVG. Znacznik SVG wygląda na nieprawidłowy.","failedToFetchImage":"Nie udało się załadować obrazu.","invalidSVGString":"Nieprawidłowy SVG.","cannotResolveCollabServer":"Nie można połączyć się z serwerem współpracy w czasie rzeczywistym. Proszę odświeżyć stronę i spróbować ponownie.","importLibraryError":"Wystąpił błąd w trakcie ładowania biblioteki","collabSaveFailed":"Nie udało się zapisać w bazie danych. Jeśli problemy nie ustąpią, zapisz plik lokalnie, aby nie utracić swojej pracy.","collabSaveFailed_sizeExceeded":"Nie udało się zapisać w bazie danych — dokument jest za duży. Zapisz plik lokalnie, aby nie utracić swojej pracy.","brave_measure_text_error":{"line1":"Wygląda na to, że używasz przeglądarki Brave z włączonym ustawieniem Agressively Block Fingerprinting.","line2":"Może to doprowadzić do złamania elementów tekstu na rysunkach.","line3":"Zdecydowanie zalecamy wyłączenie tego ustawienia. Możesz wykonać te kroki, aby to zrobić.","line4":"Jeśli wyłączenie tego ustawienia nie naprawia wyświetlania elementów tekstowych, zgłoś problem na naszym GitHubie lub napisz do nas na Discordzie"},"libraryElementTypeError":{"embeddable":"Elementy osadzone nie mogą zostać dodane do biblioteki.","image":"Dodawania obrazów do biblioteki nadejdzie wkrótce!"}},"toolBar":{"selection":"Zaznaczenie","image":"Wstaw obraz","rectangle":"Prostokąt","diamond":"Romb","ellipse":"Elipsa","arrow":"Strzałka","line":"Linia","freedraw":"Rysuj","text":"Tekst","library":"Biblioteka","lock":"Zablokuj wybrane narzędzie","penMode":"Tryb pióra — zapobiegaj dotknięciom","link":"Dodaj/aktualizuj link dla wybranego kształtu","eraser":"Gumka","frame":"Ramka","embeddable":"Osadzenie z internetu","laser":"Wskaźnik laserowy","hand":"Ręka (narzędzie do przesuwania)","extraTools":"Więcej narzędzi"},"headings":{"canvasActions":"Narzędzia","selectedShapeActions":"Wybrane narzędzie","shapes":"Kształty"},"hints":{"canvasPanning":"Aby przesunąć płótno, przytrzymaj kółko myszy lub spację podczas przeciągania, albo użyj narzędzia ręki","linearElement":"Naciśnij, aby zrobić punkt, przeciągnij, aby narysować linię","freeDraw":"Naciśnij i przeciągnij by rysować, puść kiedy skończysz","text":"Wskazówka: możesz również dodać tekst klikając dwukrotnie gdziekolwiek za pomocą narzędzia zaznaczania","embeddable":"Kliknij i przeciągnij, aby stworzyć osadzenie strony","text_selected":"Kliknij dwukrotnie lub naciśnij ENTER, aby edytować tekst","text_editing":"Naciśnij Escape lub Ctrl (Cmd w macOS) + ENTER, aby zakończyć edycję","linearElementMulti":"Aby zakończyć krzywą, ponownie kliknij w ostatni punkt, bądź naciśnij Esc albo Enter","lockAngle":"Możesz ograniczyć kąt trzymając SHIFT","resize":"Możesz zachować proporcję trzymająć wcisnięty SHIFT, przytrzymaj ALT by zmienić rozmiar względem środka","resizeImage":"Możesz zmienić rozmiar swobodnie trzymając SHIFT,\\nprzytrzymaj ALT, aby przeskalować względem środka obiektu","rotate":"Możesz obracać element w równych odstępach trzymając wciśnięty SHIFT","lineEditor_info":"Przytrzymaj CtrlOrCmd i kliknij dwukrotnie lub naciśnij CtrlOrCmd + Enter, aby edytować punkty","lineEditor_pointSelected":"Naciśnij przycisk Delete, aby usunąć punkt. Ctrl/Cmd+D, aby go zduplikować. Przeciągnij, aby go przenieść","lineEditor_nothingSelected":"Wybierz punkt do edycji (przytrzymaj SHIFT, aby wybrać wiele),\\nlub przytrzymaj Alt i kliknij, aby dodać nowe punkty","placeImage":"Kliknij, aby umieścić obraz, lub kliknij i przeciągnij, aby ustawić jego rozmiar ręcznie","publishLibrary":"Opublikuj własną bibliotekę","bindTextToElement":"Wciśnij enter, aby dodać tekst","deepBoxSelect":"Przytrzymaj CtrlOrCmd, aby wybrać w obrębie grupy i uniknąć przeciągania","eraserRevert":"Przytrzymaj Alt, aby przywrócić elementy oznaczone do usunięcia","firefox_clipboard_write":"Ta funkcja może być włączona poprzez ustawienie flagi \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Aby zmienić flagi przeglądarki w Firefox, odwiedź stronę \\"about:config\\".","disableSnapping":"Przytrzymaj Ctrl lub Cmd, aby wyłączyć przyciąganie"},"canvasError":{"cannotShowPreview":"Nie można wyświetlić podglądu","canvasTooBig":"Obszar roboczy może być za duży.","canvasTooBigTip":"Wskazówka: spróbuj nieco zbliżyć najdalej wysunięte elementy."},"errorSplash":{"headingMain":"Wystąpił błąd. Spróbuj ","clearCanvasMessage":"Jeśli odświeżenie strony nie zadziałało, spróbuj ","clearCanvasCaveat":" Pamiętaj tylko, że spowoduje to utratę całej twojej pracy ","trackedToSentry":"Błąd o identyfikatorze {{eventId}} został zaraportowany w naszym systemie.","openIssueMessage":"Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.","sceneContent":"Zawartość dokumentu:"},"roomDialog":{"desc_intro":"Będziesz w stanie pracować wraz z osobami które zaprosisz do współpracy.","desc_privacy":"By zapewnić Ci prywatność, sesja współpracy na żywo jest zabezpieczona szyfrowaniem end-to-end, co oznacza, że poza tobą i osobami z którymi podzielisz się linkiem, nikt nie ma dostępu do tego co będziecie tworzyć.","button_startSession":"Rozpocznij sesję","button_stopSession":"Zakończ sesję","desc_inProgressIntro":"Sesja współpracy na żywo właśnie się rozpoczęła.","desc_shareLink":"Udostępnij ten link osobom, z którymi chcesz współpracować:","desc_exitSession":"Zakończenie sesji spowoduje odłączenie ciebie od pokoju, ale nadal będziesz mógł lokalnie kontynuować pracę. Zauważ, że osoby z którymi współpracowałeś nadal będą mogły współpracować.","shareTitle":"Dołącz do sesji współpracy na żywo w Excalidraw"},"errorDialog":{"title":"Wystąpił błąd"},"exportDialog":{"disk_title":"Zapisz na dysku","disk_details":"Eksportuj dane sceny do pliku, z którego możesz importować później.","disk_button":"Zapisz do pliku","link_title":"Link do udostępnienia","link_details":"Eksportuj jako link tylko do odczytu.","link_button":"Wygeneruj link","excalidrawplus_description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+.","excalidrawplus_button":"Eksportuj","excalidrawplus_exportError":"W tej chwili nie można wyeksportować do Excalidraw+..."},"helpDialog":{"blog":"Przeczytaj na naszym blogu","click":"kliknięcie","deepSelect":"Wybór w obrębie grupy","deepBoxSelect":"Wybór w obrębie grupy i unikanie przeciągania","curvedArrow":"Zakrzywiona strzałka","curvedLine":"Zakrzywiona linia","documentation":"Dokumentacja","doubleClick":"podwójne kliknięcie","drag":"przeciągnij","editor":"Edytor","editLineArrowPoints":"Edytuj punkty linii/strzałki","editText":"Edytuj tekst/dodaj etykietę","github":"Znalazłeś problem? Prześlij","howto":"Skorzystaj z instrukcji","or":"lub","preventBinding":"Zapobiegaj wiązaniu strzałek","tools":"Narzędzia","shortcuts":"Skróty klawiszowe","textFinish":"Zakończ edycję (edytor tekstu)","textNewLine":"Dodaj nowy wiersz (edytor tekstu)","title":"Pomoc","view":"Widok","zoomToFit":"Powiększ, aby wyświetlić wszystkie elementy","zoomToSelection":"Przybliż do zaznaczenia","toggleElementLock":"Zablokuj/odblokuj zaznaczenie","movePageUpDown":"Przesuń stronę w górę/w dół","movePageLeftRight":"Przenieś stronę w lewo/prawo"},"clearCanvasDialog":{"title":"Wyczyść płótno"},"publishDialog":{"title":"Opublikuj bibliotekę","itemName":"Nazwa elementu","authorName":"Nazwa autora","githubUsername":"Nazwa użytkownika na GitHubie","twitterUsername":"Nazwa użytkownika Twitter","libraryName":"Nazwa biblioteki","libraryDesc":"Opis biblioteki","website":"Strona internetowa","placeholder":{"authorName":"Twoje imię lub nazwa użytkownika","libraryName":"Nazwa twojej biblioteki","libraryDesc":"Opis twojej biblioteki, aby pomóc innym zrozumieć jej działanie","githubHandle":"Uchwyt GitHub (opcjonalny), dzięki czemu możesz edytować bibliotekę po przesłaniu do sprawdzenia","twitterHandle":"Nazwa użytkownika w serwisie Twitter (opcjonalna), aby wiedzieć kogo oznaczyć przy promowaniu na Twitterze","website":"Link do Twojej osobistej strony internetowej lub gdzie indziej (opcjonalnie)"},"errors":{"required":"Wymagane","website":"Wprowadź prawidłowy adres URL"},"noteDescription":"dla innych osób do wykorzystania w swoich rysunkach.","noteGuidelines":"Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj wytyczne","noteLicense":"Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod Licencja MIT, w skrócie, każdy może z nich korzystać bez ograniczeń.","noteItems":"Każdy element biblioteki musi mieć własną nazwę, aby był filtrowalny. Uwzględnione zostaną następujące elementy biblioteki:","atleastOneLibItem":"Proszę wybrać co najmniej jeden element biblioteki, by rozpocząć","republishWarning":"Uwaga: niektóre z wybranych elementów są oznaczone jako już opublikowane/wysłane. Powinieneś ponownie przesłać elementy tylko wtedy, gdy aktualizujesz istniejącą bibliotekę lub zgłoszenie."},"publishSuccessDialog":{"title":"Biblioteka została przesłana","content":"Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stantutaj"},"confirmDialog":{"resetLibrary":"Zresetuj Bibliotekę","removeItemsFromLib":"Usuń wybrane elementy z biblioteki"},"imageExportDialog":{"header":"Eksportuj obraz","label":{"withBackground":"Tło","onlySelected":"Tylko wybrane","darkMode":"Tryb ciemny","embedScene":"Osadź scenę","scale":"Skala","padding":"Dopełnienie"},"tooltip":{"embedScene":"Dane sceny zostaną zapisane w eksportowanym pliku PNG/SVG tak, aby scena mogła zostać z niego przywrócona.\\nZwiększy to rozmiar eksportowanego pliku."},"title":{"exportToPng":"Zapisz jako PNG","exportToSvg":"Zapisz jako SVG","copyPngToClipboard":"Skopiuj do schowka jako PNG"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Skopiuj do schowka"}},"encrypted":{"tooltip":"Twoje rysunki są zabezpieczone szyfrowaniem end-to-end, tak więc nawet w Excalidraw nie jesteśmy w stanie zobaczyć tego co tworzysz.","link":"Wpis na blogu dotyczący szyfrowania end-to-end w Excalidraw"},"stats":{"angle":"Kąt","element":"Element","elements":"Elementy","height":"Wysokość","scene":"Scena","selected":"Zaznaczenie","storage":"Pamięć","title":"Statystyki dla nerdów","total":"Łącznie","version":"Wersja","versionCopy":"Kliknij, aby skopiować","versionNotAvailable":"Wersja niedostępna","width":"Szerokość"},"toast":{"addedToLibrary":"Dodano do biblioteki","copyStyles":"Skopiowano style.","copyToClipboard":"Skopiowano do schowka.","copyToClipboardAsPng":"Skopiowano {{exportSelection}} do schowka jako PNG\\n({{exportColorScheme}})","fileSaved":"Zapisano plik.","fileSavedToFilename":"Zapisano jako {filename}","canvas":"płótno","selection":"zaznaczenie","pasteAsSingleElement":"Użyj {{shortcut}}, aby wkleić jako pojedynczy element,\\nlub wklej do istniejącego edytora tekstu","unableToEmbed":"Osadzenie tego linku jest obecnie niedozwolone. Zgłoś propozycję na portalu GitHub, aby dodać go do listy dozwolonych wyjątków","unrecognizedLinkFormat":"Osadzony link ma niewłaściwy format. Spróbuj wkleić całą zawartość pola \\"embed\\" z oryginalnej strony."},"colors":{"transparent":"Przezroczysty","black":"Czarny","white":"Biały","red":"Czerwony","pink":"Różowy","grape":"Winogronowy","violet":"Fioletowy","gray":"Szary","blue":"Niebieski","cyan":"Cyjanowy","teal":"Turkusowy","green":"Zielony","yellow":"Żółty","orange":"Pomarańczowy","bronze":"Brązowy"},"welcomeScreen":{"app":{"center_heading":"Wszystkie dane są zapisywane lokalnie w przeglądarce.","center_heading_plus":"Czy zamiast tego chcesz przejść do Excalidraw+?","menuHint":"Eksportuj, preferencje, języki..."},"defaults":{"menuHint":"Eksportuj, preferencje i więcej...","center_heading":"Schematy uproszczone.","toolbarHint":"Wybierz narzędzie i zacznij rysować!","helpHint":"Skróty klawiaturowe i pomoc"}},"colorPicker":{"mostUsedCustomColors":"Najczęściej używane kolory","colors":"Kolory","shades":"Odcienie","hexCode":"Kod HEX","noShades":"Brak dostępnych odcieni dla tego koloru"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksportuj jako obraz","button":"Eksportuj jako obraz","description":"Eksportuj zawartość sceny jako obraz z możliwością importowania."},"saveToDisk":{"title":"Zapisz na dysku","button":"Zapisz na dysku","description":"Eksportuj zawartość sceny jako plik z możliwością importowania."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksportuj do Excalidraw+","description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+."}},"modal":{"loadFromFile":{"title":"Wczytaj z pliku","button":"Wczytaj z pliku","description":"Wczytanie z pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."},"shareableLink":{"title":"Wczytaj z linku","button":"Nadpisz moją zawartość","description":"Wczytanie zewnętrznego pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/pt-BR-json-3635e753c1b6e5b681fa.js b/public/excalidraw/excalidraw-assets-dev/locales/pt-BR-json-3635e753c1b6e5b681fa.js new file mode 100644 index 0000000..ea80ec5 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/pt-BR-json-3635e753c1b6e5b681fa.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/pt-BR-json"],{ + +/***/ "../../locales/pt-BR.json": +/*!********************************!*\ + !*** ../../locales/pt-BR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto sem formatação","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Recortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para área de transferência como texto","bringForward":"Trazer para a frente","sendToBack":"Enviar para o fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contorno","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Precisão do traço","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Pontudo","round":"Arredondado","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fonte","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Hachura","zigzag":"Zigue-zague","crossHatch":"Hachura cruzada","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquiteto","artist":"Artista","cartoonist":"Cartunista","fileTitle":"Nome do arquivo","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da tela","drawingCanvas":"Tela de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"Seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grade","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"Carregando biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"Carregando cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar embaixo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centralizar verticalmente","centerHorizontally":"Centralizar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Compartilhar","showStroke":"Exibir seletor de cores do traço","showBackground":"Exibir seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Diminuir o tamanho da fonte","increaseFontSize":"Aumentar o tamanho da fonte","unbindText":"Desvincular texto","bindText":"Vincular texto ao contêiner","createContainerFromText":"Envolver texto em um contêiner","link":{"edit":"Editar link","editEmbed":"","create":"Criar link","createEmbed":"","label":"Link","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear tudo","unlockAll":"Desbloquear tudo"},"statusPublished":"Publicado","sidebarLock":"Manter barra lateral aberta","selectAllElementsInFrame":"Selecionar todos os elementos no quadro","removeAllElementsFromFrame":"Remover todos os elementos do quadro","eyeDropper":"Escolher cor da tela"},"library":{"noItems":"Nenhum item adicionado ainda...","hint_emptyLibrary":"Selecione um item na tela para adicioná-lo aqui, ou instale uma biblioteca do repositório público, abaixo.","hint_emptyPrivateLibrary":"Selecione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar o canvas e redefinir a cor de fundo","exportJSON":"Exportar arquivo","exportImage":"Exportar imagem...","export":"Salvar como...","copyToClipboard":"Copiar para o clipboard","save":"Salvar para o arquivo atual","saveAs":"Salvar como","load":"Abrir","getShareableLink":"Obter um link de compartilhamento","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar para o conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Redefinir biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Tela cheia","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a tela. Você tem certeza?","couldNotCreateShareableLink":"Não foi possível criar um link de compartilhamento.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link compartilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o arquivo inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar um canvas vazio.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível descriptografar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Carregar um desenho externo substituirá o seu conteúdo existente. Deseja continuar?","collabStopOverridePrompt":"Ao interromper a sessão, você substituirá seu desenho anterior, armazenado localmente. Você tem certeza?\\n\\n(Se você deseja manter seu desenho local, simplesmente feche a aba do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Você ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste arquivo de imagem","invalidSceneUrl":"Não foi possível importar a cena da URL fornecida. Ela está incompleta ou não contém dados JSON válidos do Excalidraw.","resetLibrary":"Isto limpará a sua biblioteca. Você tem certeza?","removeItemsFromsLibrary":"Excluir {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"A chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desabilitada.","collabOfflineWarning":"Sem conexão com a internet disponível.\\nSuas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de arquivo não suportado.","imageInsertError":"Não foi possível inserir imagem. Tente novamente mais tarde...","fileTooBig":"O arquivo é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG Inválido.","cannotResolveCollabServer":"Não foi possível conectar-se ao servidor colaborativo. Por favor, recarregue a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","brave_measure_text_error":{"line1":"Parece que você está usando o navegador Brave com a configuração Bloquear Impressões Digitais no modo agressivo.","line2":"Isso pode acabar quebrando Elementos de Texto em seus desenhos.","line3":"Recomendamos fortemente desativar essa configuração. Você pode acessar o passo a passo sobre como fazer isso.","line4":"Se desativar essa configuração não corrigir a exibição de elementos de texto, por favor abra uma issue em nosso GitHub, ou mande uma mensagem em nosso Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter ativa a ferramenta selecionada após desenhar","penMode":"Modo caneta — impede o toque","link":"Adicionar/Atualizar link para uma forma selecionada","eraser":"Borracha","frame":"Ferramenta de quadro","embeddable":"","laser":"","hand":"Mão (ferramenta de rolagem)","extraTools":"Mais ferramentas"},"headings":{"canvasActions":"Ações da tela","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, segure a roda do mouse ou a barra de espaço enquanto arrasta ou use a ferramenta de mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Toque e arraste, solte quando terminar","text":"Dica: você também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duplo ou tecle ENTER para editar o texto","text_editing":"Pressione Esc ou Ctrl/Cmd+ENTER para encerrar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Você pode restringir o ângulo segurando o SHIFT","resize":"Você pode restringir proporções segurando SHIFT enquanto redimensiona,\\nsegure ALT para redimensionar do centro","resizeImage":"Você pode redimensionar livremente segurando SHIFT,\\nsegure ALT para redimensionar a partir do centro","rotate":"Você pode restringir os ângulos segurando SHIFT enquanto gira","lineEditor_info":"Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos","lineEditor_pointSelected":"Pressione Delete para remover o(s) ponto(s),\\nCtrl/Cmd+D para duplicar ou arraste para mover","lineEditor_nothingSelected":"Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos","placeImage":"Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho","publishLibrary":"Publicar sua própria biblioteca","bindTextToElement":"Pressione Enter para adicionar o texto","deepBoxSelect":"Segure Ctrl/Cmd para seleção profunda e para evitar arrastar","eraserRevert":"Segure a tecla Alt para inverter os elementos marcados para exclusão","firefox_clipboard_write":"Esse recurso pode ser ativado configurando a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar pré-visualização","canvasTooBig":"A tela pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se recarregar a página não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Você pode convidar pessoas para sua cena atual para colaborar com você.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta a ponta; portanto, o que você desenhar permanecerá privado. Nem mesmo nosso servidor poderá ver o que você cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Compartilhe este link com qualquer pessoa com quem você queira colaborar:","desc_exitSession":"Interrompendo a sessão você irá se desconectar da sala, mas você poderá continuar trabalhando com a cena localmente. Observe que isso não afetará outras pessoas, e elas ainda poderão colaborar em suas versões.","shareTitle":"Participe de uma sessão ao vivo de colaboração no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Salvar no computador","disk_details":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde.","disk_button":"Salvar em um arquivo","link_title":"Link compartilhável","link_details":"Exportar como link de apenas leitura.","link_button":"Exportar link","excalidrawplus_description":"Salvar a cena na sua área de trabalho Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não é possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blog","click":"clicar","deepSelect":"Seleção profunda","deepBoxSelect":"Use a seleção profunda dentro da caixa para previnir arrastar","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar linha/ponta da seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Nos informe","howto":"Siga nossos guias","or":"ou","preventBinding":"Evitar fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Encerrar edição (editor de texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajudar","view":"Visualizar","zoomToFit":"Ampliar para encaixar todos os elementos","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Bloquear/desbloquear seleção","movePageUpDown":"Mover a página para cima/baixo","movePageLeftRight":"Mover a página para esquerda/direita"},"clearCanvasDialog":{"title":"Limpar a tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de usuário do GitHub","twitterUsername":"Nome de usuário do Twitter","libraryName":"Nome da Biblioteca","libraryDesc":"Descrição da biblioteca","website":"Site","placeholder":{"authorName":"Seu nome ou nome de usuário","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição para ajudar as pessoas a entenderem o uso da sua da sua biblioteca","githubHandle":"Identificador do GitHub (opcional), para que você possa editar a biblioteca depois de enviar para revisão","twitterHandle":"Nome de usuário do Twitter (opcional), para que saibamos quem deve ser creditado se promovermos no Twitter","website":"Link para o seu site pessoal ou outro lugar (opcional)"},"errors":{"required":"Obrigatório","website":"Informe uma URL válida"},"noteDescription":"Envie sua biblioteca para ser incluída no repositório de biblioteca públicapara outras pessoas usarem em seus desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o orientações antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário.","noteLicense":"Ao enviar, você concorda que a biblioteca será publicada sob a Licença MIT, o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições.","noteItems":"Cada item da biblioteca deve ter seu próprio nome para que seja filtrável. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, selecione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens selecionados estão marcados como já publicado/enviado. Você só deve reenviar itens ao atualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Redefinir biblioteca","removeItemsFromLib":"Remover itens selecionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"Fundo","onlySelected":"Somente selecionados","darkMode":"Modo escuro","embedScene":"Incorporar cena","scale":"Escala","padding":"Margem interna"},"tooltip":{"embedScene":"Os dados da cena serão salvos no arquivo PNG/SVG exportado para que a cena possa ser restaurada a partir dele.\\nIsso aumentará o tamanho do arquivo exportado."},"title":{"exportToPng":"Exportar como PNG","exportToSvg":"Exportar como SVG","copyPngToClipboard":"Copiar PNG para área de transferência"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar para a área de transferência"}},"encrypted":{"tooltip":"Seus desenhos são criptografados de ponta a ponta, então os servidores do Excalidraw nunca os verão.","link":"Publicação de blog com criptografia de ponta a ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Adicionado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG ({{exportColorScheme}})","fileSaved":"Arquivo salvo.","fileSavedToFilename":"Salvo em {filename}","canvas":"tela","selection":"seleção","pasteAsSingleElement":"Use {{shortcut}} para colar como um único elemento,\\nou cole em um editor de texto já existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"Ciano","teal":"Verde-azulado","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são salvos localmente no seu navegador.","center_heading_plus":"Você queria ir para o Excalidraw+ em vez disso?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e mais...","center_heading":"Diagramas, Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"Cores personalizadas mais usadas","colors":"Cores","shades":"Tons","hexCode":"Código hexadecimal","noShades":"Sem tons disponíveis para essa cor"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagem","button":"Exportar como imagem","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"saveToDisk":{"title":"Salvar no computador","button":"Salvar no computador","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar para Excalidraw+","description":"Salvar a cena na sua área de trabalho Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carregar de arquivo","button":"Carregar de arquivo","description":"Carregar de um arquivo irá substituir o conteúdo existente.

Você pode salvar seu desenho primeiro usando uma das opções abaixo."},"shareableLink":{"title":"Carregar de um link","button":"Substituir meu conteúdo","description":"Carregar um desenho externo irá substituir seu conteúdo existente.

Você pode salvar seu desenho antes utilizando uma das opções abaixo."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/pt-PT-json-0d3694a92e0134549086.js b/public/excalidraw/excalidraw-assets-dev/locales/pt-PT-json-0d3694a92e0134549086.js new file mode 100644 index 0000000..1bb0c4e --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/pt-PT-json-0d3694a92e0134549086.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/pt-PT-json"],{ + +/***/ "../../locales/pt-PT.json": +/*!********************************!*\ + !*** ../../locales/pt-PT.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto simples","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para Área de Transferência como texto","bringForward":"Trazer para o primeiro plano","sendToBack":"Enviar para o plano de fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contornos","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Desleixo","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Aguçado","round":"Redondo","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Seta","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fontes","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Eclosão","zigzag":"ziguezague","crossHatch":"Sombreado","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricaturista","fileTitle":"Nome do ficheiro","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da área de desenho","drawingCanvas":"Área de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"O seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grelha","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"A carregar a biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"A carregar a cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar ao fundo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Partilhar","showStroke":"Mostrar seletor de cores do traço","showBackground":"Mostrar seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Reduzir o tamanho do tipo de letra","increaseFontSize":"Aumentar o tamanho do tipo de letra","unbindText":"Desvincular texto","bindText":"Ligar texto ao recipiente","createContainerFromText":"Envolver texto num recipiente","link":{"edit":"Editar ligação","editEmbed":"","create":"Criar ligação","createEmbed":"","label":"Ligação","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todos","unlockAll":"Desbloquear todos"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ainda não foram adicionados nenhuns itens...","hint_emptyLibrary":"Seleccione um item na tela para adicioná-lo aqui, ou então instale uma biblioteca do repositório público abaixo.","hint_emptyPrivateLibrary":"Seleccione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar a área de desenho e redefinir a cor de fundo","exportJSON":"Exportar para ficheiro","exportImage":"Exportar imagem...","export":"Guardar para...","copyToClipboard":"Copiar para o clipboard","save":"Guardar no ficheiro atual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obter um link de partilha","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar ao conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Repor a biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Ecrã inteiro","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a área de desenho. Tem a certeza?","couldNotCreateShareableLink":"Não foi possível criar um link partilhável.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link partilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o ficheiro inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar uma área de desenho vazia.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível desencriptar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Se carregar um desenho externo substituirá o conteúdo existente. Quer continuar?","collabStopOverridePrompt":"Ao interromper a sessão irá substituir o último desenho guardado. Tem a certeza?\\n\\n(Caso queira manter o último desenho, simplesmente feche a janela do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem a certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste ficheiro de imagem","invalidSceneUrl":"Não foi possível importar a cena a partir do URL fornecido. Ou está mal formado ou não contém dados JSON do Excalidraw válidos.","resetLibrary":"Isto irá limpar a sua biblioteca. Tem a certeza?","removeItemsFromsLibrary":"Apagar {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"Chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desativada.","collabOfflineWarning":"Sem ligação à internet disponível.\\nAs suas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de ficheiro não suportado.","imageInsertError":"Não foi possível inserir a imagem, tente novamente mais tarde...","fileTooBig":"O ficheiro é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta selecionada ativa após desenhar","penMode":"Modo caneta - impedir toque","link":"Acrescentar/ Adicionar ligação para uma forma seleccionada","eraser":"Borracha","frame":"","embeddable":"","laser":"","hand":"Mão (ferramenta de movimento da tela)","extraTools":""},"headings":{"canvasActions":"Ações da área de desenho","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, carregue na roda do rato ou na barra de espaço enquanto arrasta, ou use a ferramenta da mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Clique e arraste, large quando terminar","text":"Dica: também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duas vezes ou pressione a tecla Enter para editar o texto","text_editing":"Pressione a tecla Escape ou CtrlOrCmd+ENTER para terminar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Pode restringir o ângulo mantendo premida a tecla SHIFT","resize":"Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,\\nmantenha a tecla ALT premida para redimensionar a partir do centro","resizeImage":"Pode redimensionar livremente mantendo pressionada a tecla SHIFT,\\nmantenha pressionada a tecla ALT para redimensionar do centro","rotate":"Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda","lineEditor_info":"Pressione CtrlOrCmd e faça um duplo-clique ou pressione CtrlOrCmd + Enter para editar pontos","lineEditor_pointSelected":"Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover","lineEditor_nothingSelected":"Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),\\nou carregue em Alt e clique para acrescentar novos pontos","placeImage":"Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente","publishLibrary":"Publique a sua própria biblioteca","bindTextToElement":"Carregue Enter para acrescentar texto","deepBoxSelect":"Mantenha a tecla CtrlOrCmd carregada para selecção profunda, impedindo o arrastamento","eraserRevert":"Carregue também em Alt para reverter os elementos marcados para serem apagados","firefox_clipboard_write":"Esta função pode provavelmente ser ativada definindo a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar uma pré-visualização","canvasTooBig":"A área de desenho pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se a recarga não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Pode convidar pessoas para colaborarem na sua cena atual.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta-a-ponta, por isso o que desenhar permanecerá privado. Nem mesmo o nosso servidor poderá ver o que cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Partilhe este link com qualquer pessoa com quem queira colaborar:","desc_exitSession":"Interrompendo a sessão irá desconectar-se da sala, mas poderá continuar a trabalhar com a cena localmente. Note que isso não afetará outras pessoas e elas ainda poderão colaborar nas versões deles.","shareTitle":"Participe numa sessão de colaboração ao vivo no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Guardar no disco","disk_details":"Exportar os dados da cena para um ficheiro do qual poderá importar mais tarde.","disk_button":"Guardar num ficheiro","link_title":"Link partilhável","link_details":"Exportar como um link de apenas leitura.","link_button":"Exportar para link","excalidrawplus_description":"Guardar a cena no seu espaço de trabalho Excalidraw+","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não foi possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blogue","click":"clicar","deepSelect":"Selecção profunda","deepBoxSelect":"Selecção profunda dentro da caixa, impedindo que seja arrastada","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar pontos de linha/seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Informe-nos","howto":"Siga os nossos guias","or":"ou","preventBinding":"Prevenir fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Finalizar edição (editor texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajuda","view":"Visualizar","zoomToFit":"Ajustar para todos os elementos caberem","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Trancar/destrancar selecção","movePageUpDown":"Mover página para cima / baixo","movePageLeftRight":"Mover página para esquerda / direita"},"clearCanvasDialog":{"title":"Apagar tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de utilizador do GitHub","twitterUsername":"Nome de utilizador no Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrição da biblioteca","website":"Página web","placeholder":{"authorName":"Introduza o seu nome ou nome de utilizador","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição da sua biblioteca para ajudar as pessoas a entender a utilização dela","githubHandle":"Identificador do GitHub (opcional), para que possa editar a biblioteca depois desta ser enviada para revisão","twitterHandle":"Nome do Twitter (opcional), para que saibamos quem merece os créditos na promoção via Twitter","website":"Ligação para a sua página pessoal ou qualquer outra (opcional)"},"errors":{"required":"Obrigatório","website":"Introduza um URL válido"},"noteDescription":"Envie a sua biblioteca para ser incluída no repositório de bibliotecas públicaspara outras pessoas a poderem usar nos seus próprios desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia orientações antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.","noteLicense":"Ao enviar, concorda que a biblioteca será publicada sob a Licença MIT, o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.","noteItems":"Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, seleccione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Repor a biblioteca","removeItemsFromLib":"Remover os itens seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"Cena embutida","scale":"","padding":"Espaçamento"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar em PNG","exportToSvg":"Exportar em SVG","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"Os seus desenhos são encriptados de ponta-a-ponta, por isso os servidores do Excalidraw nunca os verão.","link":"Publicação de blogue na encriptação ponta-a-ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Acrescentado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para a área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro guardado.","fileSavedToFilename":"Guardado como {filename}","canvas":"área de desenho","selection":"seleção","pasteAsSingleElement":"Usar {{shortcut}} para colar como um único elemento,\\nou colar num editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são guardados no seu navegador local.","center_heading_plus":"Queria antes ir para o Excalidraw+?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e outros...","center_heading":"Diagramas. Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"Tons","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"Guardar no disco","button":"Guardar no disco","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"Carregar a partir de ficheiro","button":"Carregar a partir de ficheiro","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ro-RO-json-e83fda16c860c6d0b383.js b/public/excalidraw/excalidraw-assets-dev/locales/ro-RO-json-e83fda16c860c6d0b383.js new file mode 100644 index 0000000..6892511 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ro-RO-json-e83fda16c860c6d0b383.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ro-RO-json"],{ + +/***/ "../../locales/ro-RO.json": +/*!********************************!*\ + !*** ../../locales/ro-RO.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Lipire","pasteAsPlaintext":"Inserare ca text simplu","pasteCharts":"Lipire diagrame","selectAll":"Selectare totală","multiSelect":"Adaugă element la selecție","moveCanvas":"Mutare pânză","cut":"Decupare","copy":"Copiere","copyAsPng":"Copiere în memoria temporară ca PNG","copyAsSvg":"Copiere în memoria temporară ca SVG","copyText":"Copiere în memoria temporară ca text","bringForward":"Aducere în plan apropiat","sendToBack":"Trimitere în ultimul plan","bringToFront":"Aducere în prim plan","sendBackward":"Trimitere în plan secundar","delete":"Ștergere","copyStyles":"Copiere stiluri","pasteStyles":"Lipire stiluri","stroke":"Contur","background":"Fundal","fill":"Umplere","strokeWidth":"Lățimea conturului","strokeStyle":"Stilul conturului","strokeStyle_solid":"Neîntrerupt","strokeStyle_dashed":"Liniuțe","strokeStyle_dotted":"Punctat","sloppiness":"Aspectul trasării","opacity":"Opacitate","textAlign":"Alinierea textului","edges":"Margini","sharp":"Ascuțite","round":"Rotunde","arrowheads":"Vârfuri de săgeată","arrowhead_none":"Niciunul","arrowhead_arrow":"Săgeată","arrowhead_bar":"Bară","arrowhead_dot":"Bulină","arrowhead_triangle":"Triunghi","fontSize":"Dimensiune font","fontFamily":"Familia de fonturi","addWatermark":"Adaugă „Realizat cu Excalidraw”","handDrawn":"Scris de mână","normal":"Normal","code":"Cod","small":"Mică","medium":"Medie","large":"Mare","veryLarge":"Foarte mare","solid":"Plină","hachure":"Hașură","zigzag":"Zigzag","crossHatch":"Hașură transversală","thin":"Subțire","bold":"Îngroșată","left":"Stânga","center":"Centru","right":"Dreapta","extraBold":"Extra îngroșată","architect":"Arhitect","artist":"Artist","cartoonist":"Caricaturist","fileTitle":"Nume de fișier","colorPicker":"Selector de culoare","canvasColors":"Folosite pe pânză","canvasBackground":"Fundalul pânzei","drawingCanvas":"Pânză pentru desenat","layers":"Straturi","actions":"Acțiuni","language":"Limbă","liveCollaboration":"Colaborare în direct...","duplicateSelection":"Duplicare","untitled":"Nedenumit","name":"Nume","yourName":"Numele tău","madeWithExcalidraw":"Realizat cu Excalidraw","group":"Grupare selecție","ungroup":"Degrupare selecție","collaborators":"Colaboratori","showGrid":"Afișare grilă","addToLibrary":"Adăugare la bibliotecă","removeFromLibrary":"Eliminare din bibliotecă","libraryLoadingMessage":"Se încarcă biblioteca…","libraries":"Răsfoiește bibliotecile","loadingScene":"Se încarcă scena…","align":"Aliniere","alignTop":"Aliniere sus","alignBottom":"Aliniere jos","alignLeft":"Aliniere la stânga","alignRight":"Aliniere la dreapta","centerVertically":"Centrare verticală","centerHorizontally":"Centrare orizontală","distributeHorizontally":"Distribuie orizontal","distributeVertically":"Distribuie vertical","flipHorizontal":"Răsturnare orizontală","flipVertical":"Răsturnare verticală","viewMode":"Mod de vizualizare","share":"Distribuie","showStroke":"Afișare selector culoare contur","showBackground":"Afișare selector culoare fundal","toggleTheme":"Comutare temă","personalLib":"Biblioteca personală","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Micșorează dimensiunea fontului","increaseFontSize":"Mărește dimensiunea fontului","unbindText":"Deconectare text","bindText":"Legare text de container","createContainerFromText":"Încadrare text într-un container","link":{"edit":"Editare URL","editEmbed":"Editare URL și încorporare","create":"Creare URL","createEmbed":"Creare URL și încorporare","label":"URL","labelEmbed":"URL și încorporare","empty":"Nu este setat niciun URL"},"lineEditor":{"edit":"Editare linie","exit":"Părăsire editor de linii"},"elementLock":{"lock":"Blocare","unlock":"Deblocare","lockAll":"Blocare toate","unlockAll":"Deblocare toate"},"statusPublished":"Publicat","sidebarLock":"Păstrează deschisă bara laterală","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Alegere culoare din pânză"},"library":{"noItems":"Niciun element adăugat încă...","hint_emptyLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici sau instalează o bibliotecă din depozitul public, de mai jos.","hint_emptyPrivateLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici."},"buttons":{"clearReset":"Resetare pânză","exportJSON":"Exportare la fișiere","exportImage":"Exportare imagine...","export":"Salvare în...","copyToClipboard":"Copiere în memoria temporară","save":"Salvare în fișierul curent","saveAs":"Salvare ca","load":"Deschidere","getShareableLink":"Obține URL partajabil","close":"Închidere","selectLanguage":"Selectare limbă","scrollBackToContent":"Derulare înapoi la conținut","zoomIn":"Apropiere","zoomOut":"Depărtare","resetZoom":"Resetare transfocare","menu":"Meniu","done":"Efectuat","edit":"Edit","undo":"Anulare","redo":"Refacere","resetLibrary":"Resetare bibliotecă","createNewRoom":"Creare cameră nouă","fullScreen":"Ecran complet","darkMode":"Mod întunecat","lightMode":"Mod luminos","zenMode":"Mod zen","objectsSnapMode":"Ancorare la obiecte","exitZenMode":"Ieșire din modul zen","cancel":"Anulare","clear":"Ștergere","remove":"Eliminare","embed":"Comutare încorporare","publishLibrary":"Publicare","submit":"Trimitere","confirm":"Confirmare","embeddableInteractionButton":"Clic pentru interacționare"},"alerts":{"clearReset":"Această opțiune va șterge întreaga pânză. Confirmi?","couldNotCreateShareableLink":"Nu s-a putut crea un URL partajabil.","couldNotCreateShareableLinkTooBig":"Nu s-a putut crea un URL partajabil: scena este prea mare","couldNotLoadInvalidFile":"Fișierul invalid nu a putut fi încărcat","importBackendFailed":"Importarea de la nivel de server a eșuat.","cannotExportEmptyCanvas":"Nu se poate exporta pânza goală.","couldNotCopyToClipboard":"Nu s-a putut copia în memoria temporară.","decryptFailed":"Datele nu au putut fi decriptate.","uploadedSecurly":"Încărcarea a fost securizată prin criptare integrală, însemnând că serverul Excalidraw și terții nu pot citi conținutul.","loadSceneOverridePrompt":"Încărcarea desenului extern va înlocui conținutul existent. Dorești să continui?","collabStopOverridePrompt":"Oprirea sesiunii va suprascrie desenul anterior stocat local. Confirmi alegerea?\\n\\n(Dacă vrei să păstrezi desenul local, pur și simplu închide fila navigatorului în schimb.)","errorAddingToLibrary":"Elementul nu a putut fi adăugat în bibliotecă","errorRemovingFromLibrary":"Elementul nu a putut fi eliminat din bibliotecă","confirmAddLibrary":"Această acțiune va adăuga {{numShapes}} formă(e) la biblioteca ta. Confirmi?","imageDoesNotContainScene":"Această imagine nu pare să conțină date de scenă. Ai activat încorporarea scenei în timpul exportului?","cannotRestoreFromImage":"Scena nu a putut fi restaurată din acest fișier de imagine","invalidSceneUrl":"Scena nu a putut fi importată din URL-ul furnizat. Este fie incorect formată, fie nu conține date JSON Excalidraw valide.","resetLibrary":"Această opțiune va elimina conținutul din bibliotecă. Confirmi?","removeItemsFromsLibrary":"Ștergi {{count}} element(e) din bibliotecă?","invalidEncryptionKey":"Cheia de criptare trebuie să aibă 22 de caractere. Colaborarea în direct este dezactivată.","collabOfflineWarning":"Nu este disponibilă nicio conexiune la internet.\\nModificările nu vor fi salvate!"},"errors":{"unsupportedFileType":"Tip de fișier neacceptat.","imageInsertError":"Imaginea nu a putut fi introdusă. Reîncearcă mai târziu...","fileTooBig":"Fișierul este prea mare. Dimensiunea maximă permisă este de {{maxSize}}.","svgImageInsertError":"Imaginea SVG nu a putut fi introdus. Marcajul SVG pare invalid.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Nu a putut fi realizată conexiunea la serverul de colaborare. Reîncarcă pagina și încearcă din nou.","importLibraryError":"Biblioteca nu a putut fi încărcată","collabSaveFailed":"Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","collabSaveFailed_sizeExceeded":"Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","brave_measure_text_error":{"line1":"Se pare că folosești navigatorul Brave cu opțiunea strictă pentru blocarea amprentării.","line2":"Acest lucru poate duce la întreruperea elementelor text din desene.","line3":"Îți recomandăm ferm să dezactivezi această setare. Poți urma acești pași pentru a face acest lucru.","line4":"Dacă dezactivarea acestei setări nu duce la remedierea afișării elementelor text, deschide un tichet de problemă pe pagina noastră de GitHub sau scrie-ne pe Discord"},"libraryElementTypeError":{"embeddable":"Elementele încorporabile nu pot fi adăugate la bibliotecă.","image":"În curând vor putea fi adăugate imagini în bibliotecă!"}},"toolBar":{"selection":"Selecție","image":"Introducere imagine","rectangle":"Dreptunghi","diamond":"Romb","ellipse":"Elipsă","arrow":"Săgeată","line":"Linie","freedraw":"Desenare","text":"Text","library":"Bibliotecă","lock":"Menține activ instrumentul selectat după desenare","penMode":"Mod stilou – împiedică atingerea","link":"Adăugare/actualizare URL pentru forma selectată","eraser":"Radieră","frame":"","embeddable":"Încorporare web","laser":"Indicator laser","hand":"Mână (instrument de panoramare)","extraTools":""},"headings":{"canvasActions":"Acțiuni pentru pânză","selectedShapeActions":"Acțiuni pentru forma selectată","shapes":"Forme"},"hints":{"canvasPanning":"Pentru a muta pânză, ține apăsată rotița mausului sau bara de spațiu sau folosește instrumentul în formă de mână","linearElement":"Dă clic pentru a crea mai multe puncte, glisează pentru a forma o singură linie","freeDraw":"Dă clic pe pânză și glisează cursorul, apoi eliberează-l când ai terminat","text":"Sfat: poți adăuga text și dând dublu clic oriunde cu instrumentul de selecție","embeddable":"Dă clic și trage pentru a crea un cod de încorporare de pagină web","text_selected":"Dă dublu clic sau apasă tasta Enter pentru a edita textul","text_editing":"Apasă tasta Escape sau Ctrl sau Cmd + Enter pentru a finaliza editarea","linearElementMulti":"Dă clic pe ultimul punct sau apasă tasta Escape sau tasta Enter pentru a termina","lockAngle":"Poți constrânge unghiul prin ținerea apăsată a tastei SHIFT","resize":"Poți constrânge proporțiile, ținând apăsată tasta SHIFT în timp ce redimensionezi,\\nține apăsată tasta ALT pentru a redimensiona de la centru","resizeImage":"Poți redimensiona liber ținând apăsată tasta SHIFT,\\nține apăsată tasta ALT pentru a redimensiona din centru","rotate":"Poți constrânge unghiurile, ținând apăsată tasta SHIFT în timp ce rotești","lineEditor_info":"Ține apăsată tasta Ctrl sau Cmd și dă dublu clic sau apasă tasta Ctrl sau Cmd + Enter pentru a edita puncte","lineEditor_pointSelected":"Apasă tasta Delete pentru a elimina punctele,\\ncombinația de taste Ctrl sau Cmd + D pentru a le duplica sau glisează-le pentru a le schimba poziția","lineEditor_nothingSelected":"Selectează un punct pentru a-l edita (ține apăsată tasta SHIFT pentru a selecta mai multe),\\nsau ține apăsată tasta Alt și dă clic pentru a adăuga puncte noi","placeImage":"Dă clic pentru a poziționa imaginea sau dă clic și glisează pentru a seta manual dimensiunea imaginii","publishLibrary":"Publică propria bibliotecă","bindTextToElement":"Apasă tasta Enter pentru a adăuga text","deepBoxSelect":"Ține apăsată tasta Ctrl sau Cmd pentru a efectua selectarea de adâncime și pentru a preveni glisarea","eraserRevert":"Ține apăsată tasta Alt pentru a anula elementele marcate pentru ștergere","firefox_clipboard_write":"Această caracteristică poate fi probabil activată prin setarea preferinței „dom.events.asyncClipboard.clipboardItem” ca „true”. Pentru a schimba preferințele navigatorului în Firefox, accesează pagina „about:config”.","disableSnapping":"Ține apăsat CtrlOrCmd pentru a dezactiva ancorarea"},"canvasError":{"cannotShowPreview":"Nu se poate afișa previzualizarea","canvasTooBig":"Pânza poate fi prea mare.","canvasTooBigTip":"Sfat: încearcă să apropii puțin mai mult elementele cele mai îndepărtate."},"errorSplash":{"headingMain":"A apărut o eroare. Încearcă .","clearCanvasMessage":"Dacă reîncărcarea nu funcționează, încearcă .","clearCanvasCaveat":" Acest lucru va duce la pierderea progresului ","trackedToSentry":"Eroarea cu identificatorul {{eventId}} a fost urmărită în sistemul nostru.","openIssueMessage":"Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, oferă-ne mai multe informații în . Include informațiile de mai jos copiindu-le și lipindu-le în tichetul cu problemă de pe GitHub.","sceneContent":"Conținutul scenei:"},"roomDialog":{"desc_intro":"Poți invita alte persoane pentru a colabora la scena actuală.","desc_privacy":"Nu te îngrijora. Sesiunea utilizează criptarea integrală, astfel încât orice desenezi va rămâne privat. Nici măcar serverul nostru nu va putea vedea pe ce ai lucrat.","button_startSession":"Pornire sesiune","button_stopSession":"Oprire sesiune","desc_inProgressIntro":"Sesiunea de colaborare în direct este în curs de desfășurare.","desc_shareLink":"Distribuie acest URL persoanelor cu care dorești să colaborezi:","desc_exitSession":"Oprirea sesiunii te va deconecta de la sală, însă vei putea lucra în continuare, pe plan local, cu scena. Reține că această opțiune nu va afecta alte persoane, iar acestea vor putea să colaboreze în continuare pe versiunea lor.","shareTitle":"Alătură-te unei sesiuni de colaborare în direct pe Excalidraw"},"errorDialog":{"title":"Eroare"},"exportDialog":{"disk_title":"Salvare pe disc","disk_details":"Exportă datele scenei pe un fișier din care poți importa mai târziu.","disk_button":"Salvare în fișier","link_title":"URL partajabil","link_details":"Exportă ca URL doar în citire.","link_button":"Exportare în URL","excalidrawplus_description":"Salvează scena în spațiul de lucru Excalidraw+.","excalidrawplus_button":"Exportare","excalidrawplus_exportError":"Excalidraw+ nu a putut fi exportat în acest moment..."},"helpDialog":{"blog":"Citește blogul nostru","click":"clic","deepSelect":"Selectare de adâncime","deepBoxSelect":"Selectare de adâncime în casetă și prevenire glisare","curvedArrow":"Săgeată curbată","curvedLine":"Linie curbată","documentation":"Documentație","doubleClick":"dublu clic","drag":"glisare","editor":"Editor","editLineArrowPoints":"Editare puncte de săgeată/rând","editText":"Editare text/adăugare etichetă","github":"Ai întâmpinat o problemă? Trimite un raport","howto":"Urmărește ghidurile noastre","or":"sau","preventBinding":"Împiedică legarea săgeții","tools":"Instrumente","shortcuts":"Comenzi rapide de la tastatură","textFinish":"Finalizează editarea (editor de text)","textNewLine":"Adaugă o linie nouă (editor de text)","title":"Ajutor","view":"Vizualizare","zoomToFit":"Transfocare pentru a cuprinde totul","zoomToSelection":"Transfocare la selecție","toggleElementLock":"Blocare/deblocare selecție","movePageUpDown":"Deplasare pagină sus/jos","movePageLeftRight":"Deplasare pagină stânga/dreapta"},"clearCanvasDialog":{"title":"Ștergere pânză"},"publishDialog":{"title":"Publicare bibliotecă","itemName":"Denumirea elementului","authorName":"Numele autorului","githubUsername":"Numele de utilizator GitHub","twitterUsername":"Numele de utilizator Twitter","libraryName":"Denumirea bibliotecii","libraryDesc":"Descrierea bibliotecii","website":"Pagină de internet","placeholder":{"authorName":"Numele sau numele tău de utilizator","libraryName":"Numele bibliotecii tale","libraryDesc":"Descrierea bibliotecii tale pentru a ajuta oamenii să înțeleagă utilizarea acesteia","githubHandle":"Numele de utilizator GitHub (opțional), pentru a putea edita biblioteca odată ce este trimisă spre revizuire","twitterHandle":"Numele de utilizator Twitter (opțional), pentru a indica sursa la promovarea pe Twitter","website":"Trimitere către pagina ta personală de internet sau altundeva (opțional)"},"errors":{"required":"Obligatoriu","website":"Introdu un URL valid"},"noteDescription":"Trimite-ți biblioteca pentru a fi inclusă în depozitul de biblioteci publice în vederea utilizării de către alte persoane în desenele lor.","noteGuidelines":"Biblioteca trebuie aprobată manual mai întâi. Citește orientările înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar.","noteLicense":"Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub Licența MIT, care, pe scurt, înseamnă că oricine o poate folosi fără restricții.","noteItems":"Fiecare element din bibliotecă trebuie să aibă propriul nume astfel încât să fie filtrabil. Următoarele elemente din bibliotecă vor fi incluse:","atleastOneLibItem":"Selectează cel puțin un element din bibliotecă pentru a începe","republishWarning":"Observație: unele dintre elementele selectate sunt marcate ca fiind deja publicate/trimise. Ar trebui să retrimiți elemente numai atunci când actualizezi o trimitere sau o bibliotecă existentă."},"publishSuccessDialog":{"title":"Bibliotecă trimisă","content":"Îți mulțumim, {{authorName}}. Biblioteca a fost trimisă spre revizuire. Poți urmări starea aici"},"confirmDialog":{"resetLibrary":"Resetare bibliotecă","removeItemsFromLib":"Elimină elementele selectate din bibliotecă"},"imageExportDialog":{"header":"Exportare imagine","label":{"withBackground":"Fundal","onlySelected":"Numai selecția","darkMode":"Mod întunecat","embedScene":"Încorporare scenă","scale":"Scală","padding":"Spațiere"},"tooltip":{"embedScene":"Datele scenei vor fi salvate în fișierul PNG/SVG exportat, astfel că scena va putea fi restaurată din acesta.\\nVa crește dimensiunea fișierului exportat."},"title":{"exportToPng":"Exportare ca PNG","exportToSvg":"Exportare ca SVG","copyPngToClipboard":"Copiere PNG în memoria temporară"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiere în memoria temporară"}},"encrypted":{"tooltip":"Desenele tale sunt criptate integral, astfel că serverele Excalidraw nu le vor vedea niciodată.","link":"Articol de blog pe criptarea integrală din Excalidraw"},"stats":{"angle":"Unghi","element":"Element","elements":"Elemente","height":"Înălțime","scene":"Scenă","selected":"Selectate","storage":"Stocare","title":"Statistici pentru pasionați","total":"Total","version":"Versiune","versionCopy":"Clic pentru copiere","versionNotAvailable":"Versiune indisponibilă","width":"Lățime"},"toast":{"addedToLibrary":"Adăugat în bibliotecă","copyStyles":"Stiluri copiate.","copyToClipboard":"Copiat în memoria temporară.","copyToClipboardAsPng":"S-a copiat {{exportSelection}} în memoria temporară sub formă de PNG\\n({{exportColorScheme}})","fileSaved":"Fișier salvat.","fileSavedToFilename":"Salvat în {filename}","canvas":"pânza","selection":"selecția","pasteAsSingleElement":"Folosește {{shortcut}} pentru a insera ca un singur element\\nsau insera într-un editor de text existent","unableToEmbed":"Încorporarea acestui URL nu este permisă momentan. Deschideți un tichet cu probleme pe GitHub pentru a solicita adăugarea acestui URL în lista albă","unrecognizedLinkFormat":"URL-ul pe care l-ai încorporat nu coincide cu formatul așteptat. Încearcă să lipești șirul „de încorporat” furnizat de pagina sursă"},"colors":{"transparent":"Transparent","black":"Negru","white":"Alb","red":"Roșu","pink":"Roz","grape":"Struguriu","violet":"Violet","gray":"Gri","blue":"Albastru","cyan":"Cyan","teal":"Cyan-verde","green":"Verde","yellow":"Galben","orange":"Portocaliu","bronze":"Bronz"},"welcomeScreen":{"app":{"center_heading":"Toate datele tale sunt salvate local în navigatorul tău.","center_heading_plus":"Ai vrut să mergi în schimb la Excalidraw+?","menuHint":"Exportare, preferințe, limbi, ..."},"defaults":{"menuHint":"Exportare, preferințe și mai multe...","center_heading":"Diagrame. Făcute. Simple.","toolbarHint":"Alege un instrument și începe să desenezi!","helpHint":"Comenzi rapide și ajutor"}},"colorPicker":{"mostUsedCustomColors":"Cele mai utilizate culori personalizate","colors":"Culori","shades":"Nuanțe","hexCode":"Cod hexa","noShades":"Nu este disponibilă nicio nuanță pentru această culoare"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportare ca imagine","button":"Exportare ca imagine","description":"Exportă datele scenei ca fișier din care poți importa mai târziu."},"saveToDisk":{"title":"Salvare pe disc","button":"Salvare pe disc","description":"Exportă datele scenei pe un fișier din care poți importa mai târziu."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportare în Excalidraw+","description":"Salvează scena în spațiul de lucru Excalidraw+."}},"modal":{"loadFromFile":{"title":"Încărcare din fișier","button":"Încărcare din fișier","description":"Încărcarea dintr-un fișier va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."},"shareableLink":{"title":"Încărcare din lnk","button":"Înlocuiește conținutul meu","description":"Încărcarea unui desen extern va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ru-RU-json-ddc13261ce5d864d36a9.js b/public/excalidraw/excalidraw-assets-dev/locales/ru-RU-json-ddc13261ce5d864d36a9.js new file mode 100644 index 0000000..7baf25e --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ru-RU-json-ddc13261ce5d864d36a9.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ru-RU-json"],{ + +/***/ "../../locales/ru-RU.json": +/*!********************************!*\ + !*** ../../locales/ru-RU.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Вставить","pasteAsPlaintext":"Вставить как обычный текст","pasteCharts":"Вставить диаграммы","selectAll":"Выбрать всё","multiSelect":"Добавить элемент в выделенный фрагмент","moveCanvas":"Переместить холст","cut":"Вырезать","copy":"Копировать","copyAsPng":"Скопировать в буфер обмена как PNG","copyAsSvg":"Скопировать в буфер обмена как SVG","copyText":"Скопировать в буфер обмена как текст","bringForward":"Переместить вперед","sendToBack":"На задний план","bringToFront":"На передний план","sendBackward":"Переместить назад","delete":"Удалить","copyStyles":"Скопировать стили","pasteStyles":"Вставить стили","stroke":"Обводка","background":"Фон","fill":"Заливка","strokeWidth":"Толщина штриха","strokeStyle":"Стиль обводки","strokeStyle_solid":"Сплошная","strokeStyle_dashed":"Пунктирная","strokeStyle_dotted":"Точечная","sloppiness":"Стиль обводки","opacity":"Непрозрачность","textAlign":"Выравнивание текста","edges":"Края","sharp":"Острые","round":"Скругленные","arrowheads":"Стрелка","arrowhead_none":"Нет","arrowhead_arrow":"Cтрелка","arrowhead_bar":"Черта","arrowhead_dot":"Точка","arrowhead_triangle":"Треугольник","fontSize":"Размер шрифта","fontFamily":"Семейство шрифтов","addWatermark":"Добавить «Создано в Excalidraw»","handDrawn":"От руки","normal":"Обычный","code":"Код","small":"Малый","medium":"Средний","large":"Большой","veryLarge":"Очень большой","solid":"Однотонная","hachure":"Штрихованная","zigzag":"Зигзаг","crossHatch":"Перекрестная","thin":"Тонкая","bold":"Жирная","left":"Слева","center":"Центр","right":"Справа","extraBold":"Очень жирная","architect":"Архитектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Имя файла","colorPicker":"Выбор цвета","canvasColors":"Используется на холсте","canvasBackground":"Фон холста","drawingCanvas":"Полотно","layers":"Слои","actions":"Действия","language":"Язык","liveCollaboration":"Онлайн взаимодействие...","duplicateSelection":"Дубликат","untitled":"Безымянный","name":"Имя","yourName":"Ваше имя","madeWithExcalidraw":"Сделано в Excalidraw","group":"Сгруппировать выделение","ungroup":"Разделить выделение","collaborators":"Участники","showGrid":"Показать сетку","addToLibrary":"Добавить в библиотеку","removeFromLibrary":"Удалить из библиотеки","libraryLoadingMessage":"Загрузка библиотеки…","libraries":"Просмотреть библиотеки","loadingScene":"Загрузка сцены…","align":"Выровнять","alignTop":"Выровнять по верхнему краю","alignBottom":"Выровнять по нижнему краю","alignLeft":"Выровнять по левому краю","alignRight":"Выровнять по правому краю","centerVertically":"Центрировать по вертикали","centerHorizontally":"Центрировать по горизонтали","distributeHorizontally":"Распределить по горизонтали","distributeVertically":"Распределить по вертикали","flipHorizontal":"Переворот по горизонтали","flipVertical":"Переворот по вертикали","viewMode":"Вид","share":"Поделиться","showStroke":"Показать выбор цвета обводки","showBackground":"Показать выбор цвета фона","toggleTheme":"Переключить тему","personalLib":"Личная библиотека","excalidrawLib":"Библиотека Excalidraw","decreaseFontSize":"Уменьшить шрифт","increaseFontSize":"Увеличить шрифт","unbindText":"Отвязать текст","bindText":"Привязать текст к контейнеру","createContainerFromText":"Поместить текст в контейнер","link":{"edit":"Редактировать ссылку","editEmbed":"","create":"Создать ссылку","createEmbed":"","label":"Ссылка","labelEmbed":"","empty":""},"lineEditor":{"edit":"Редактирование строки","exit":"Выход из редактора строки"},"elementLock":{"lock":"Блокировать","unlock":"Разблокировать","lockAll":"Заблокировать все","unlockAll":"Разблокировать все"},"statusPublished":"Опубликовано","sidebarLock":"Держать боковую панель открытой","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Взять образец цвета с холста"},"library":{"noItems":"Пока ничего не добавлено...","hint_emptyLibrary":"Выберите объект на холсте, чтобы добавить его сюда, или установите библиотеку из публичного репозитория ниже.","hint_emptyPrivateLibrary":"Выберите объект на холсте, чтобы добавить его сюда."},"buttons":{"clearReset":"Очистить холст и сбросить цвет фона","exportJSON":"Сохранить в","exportImage":"Экспортировать изображение...","export":"Сохранить как...","copyToClipboard":"Скопировать в буфер обмена","save":"Сохранить в текущий файл","saveAs":"Сохранить как","load":"Открыть","getShareableLink":"Получить доступ по ссылке","close":"Закрыть","selectLanguage":"Выбрать язык","scrollBackToContent":"Вернуться к содержимому","zoomIn":"Увеличить","zoomOut":"Уменьшить","resetZoom":"Сбросить масштаб","menu":"Меню","done":"Готово","edit":"Изменить","undo":"Шаг назад","redo":"Шаг вперед","resetLibrary":"Сброс библиотеки","createNewRoom":"Создать новую комнату","fullScreen":"Полный экран","darkMode":"Темная тема","lightMode":"Светлая тема","zenMode":"Режим Дзен","objectsSnapMode":"Привязка к объектам","exitZenMode":"Выключить режим концентрации внимания","cancel":"Отменить","clear":"Очистить","remove":"Удалить","embed":"","publishLibrary":"Опубликовать","submit":"Отправить","confirm":"Подтвердить","embeddableInteractionButton":""},"alerts":{"clearReset":"Это очистит весь холст. Вы уверены?","couldNotCreateShareableLink":"Не удалось создать общедоступную ссылку.","couldNotCreateShareableLinkTooBig":"Нельзя создать ссылку, чтобы поделиться. Сцена слишком большая","couldNotLoadInvalidFile":"Не удалось загрузить недопустимый файл","importBackendFailed":"Не удалось импортировать из бэкэнда.","cannotExportEmptyCanvas":"Не может экспортировать пустой холст.","couldNotCopyToClipboard":"Не удалось скопировать в буфер обмена.","decryptFailed":"Не удалось расшифровать данные.","uploadedSecurly":"Загружаемые данные защищена сквозным шифрованием, что означает, что сервер Excalidraw и третьи стороны не могут прочитать содержимое.","loadSceneOverridePrompt":"Загрузка рисунка приведёт к замене имеющегося содержимого. Вы хотите продолжить?","collabStopOverridePrompt":"Остановка сессии перезапишет ваш предыдущий, локально сохранённый рисунок. Вы уверены? \\n\\n(Если вы хотите оставить ваш локальный рисунок, просто закройте вкладку браузера)","errorAddingToLibrary":"Не удалось добавить объект в библиотеку","errorRemovingFromLibrary":"Не удалось удалить объект из библиотеки","confirmAddLibrary":"Будет добавлено {{numShapes}} фигур в вашу библиотеку. Продолжить?","imageDoesNotContainScene":"Это изображение не содержит данных сцены. Вы включили встраивание сцены во время экспорта?","cannotRestoreFromImage":"Сцена не может быть восстановлена из этого изображения","invalidSceneUrl":"Невозможно импортировать сцену с предоставленного URL. Неверный формат, или не содержит верных Excalidraw JSON данных.","resetLibrary":"Это очистит вашу библиотеку. Вы уверены?","removeItemsFromsLibrary":"Удалить {{count}} объект(ов) из библиотеки?","invalidEncryptionKey":"Ключ шифрования должен состоять из 22 символов. Одновременное редактирование отключено.","collabOfflineWarning":"Отсутствует интернет-соединение.\\nВаши изменения не будут сохранены!"},"errors":{"unsupportedFileType":"Неподдерживаемый тип файла.","imageInsertError":"Не удалось вставить изображение. Попробуйте позже...","fileTooBig":"Очень большой файл. Максимально разрешенный размер {{maxSize}}.","svgImageInsertError":"Не удалось вставить изображение SVG. Разметка SVG выглядит недействительной.","failedToFetchImage":"Не удалось получить изображение.","invalidSVGString":"Некорректный SVG.","cannotResolveCollabServer":"Не удалось подключиться к серверу совместного редактирования. Перезагрузите страницу и повторите попытку.","importLibraryError":"Не удалось загрузить библиотеку","collabSaveFailed":"Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","collabSaveFailed_sizeExceeded":"Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","brave_measure_text_error":{"line1":"Похоже, вы используете браузер Brave с включенной опцией Агрессивно блокировать отслеживание.","line2":"Это может привести к поломке Текстовых объектов на рисунке.","line3":"Мы настоятельно рекомендуем отключить эту настройку. Для этого нужно выполнить эти шаги.","line4":"Если отключение этой настройки не исправит отображение текстовых объектов, создайте issue на нашем GitHub или напишите нам в Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Выделение области","image":"Вставить изображение","rectangle":"Прямоугольник","diamond":"Ромб","ellipse":"Эллипс","arrow":"Cтрелка","line":"Линия","freedraw":"Чертить","text":"Текст","library":"Библиотека","lock":"Сохранять выбранный инструмент активным после рисования","penMode":"Режим пера - предотвращение касания","link":"Добавить/обновить ссылку для выбранной фигуры","eraser":"Ластик","frame":"","embeddable":"","laser":"Лазерная указка","hand":"Рука (перемещение холста)","extraTools":""},"headings":{"canvasActions":"Операции холста","selectedShapeActions":"Операции выбранной фигуры","shapes":"Фигуры"},"hints":{"canvasPanning":"Чтобы двигать холст, удерживайте колесо мыши или пробел во время перетаскивания, или используйте инструмент \\"Рука\\"","linearElement":"Нажмите, чтобы начать несколько точек, перетащите для одной линии","freeDraw":"Нажмите и перетаскивайте, отпустите по завершении","text":"Совет: при выбранном инструменте выделения дважды щёлкните в любом месте, чтобы добавить текст","embeddable":"","text_selected":"Дважды щелкните мышью или нажмите ENTER, чтобы редактировать текст","text_editing":"Нажмите Escape либо Ctrl или Cmd + ENTER для завершения редактирования","linearElementMulti":"Кликните на последней точке или нажмите Escape или Enter чтобы закончить","lockAngle":"Вы можете ограничить угол удерживая SHIFT","resize":"Вы можете ограничить пропорции, удерживая SHIFT во время изменения размеров,\\nудерживайте ALT чтобы изменить размер из центра","resizeImage":"Вы можете свободно изменять размеры, удерживая кнопку SHIFT,\\nудерживайте кнопку ALT, чтобы изменять размер относительно центра","rotate":"Вы можете ограничить углы, удерживая SHIFT во время вращения","lineEditor_info":"Удерживайте CtrlOrCmd и дважды кликните или нажмите CtrlOrCmd + Enter для редактирования точек","lineEditor_pointSelected":"Нажмите Delete для удаления точки (точек),\\nCtrl+D или Cmd+D для дублирования, перетащите для перемещения","lineEditor_nothingSelected":"Выберите точку для редактирования (удерживайте SHIFT выбора нескольких точек),\\nили удерживайте Alt и кликните для добавления новых точек","placeImage":"Щелкните, чтобы разместить изображение, или нажмите и перетащите, чтобы установить его размер вручную","publishLibrary":"Опубликовать свою собственную библиотеку","bindTextToElement":"Нажмите Enter для добавления текста","deepBoxSelect":"Удерживайте Ctrl или Cmd для глубокого выделения, чтобы предотвратить перетаскивание","eraserRevert":"Удерживайте Alt, чтобы вернуть элементы, отмеченные для удаления","firefox_clipboard_write":"Эта функция может быть включена при изменении значения флага \\"dom.events.asyncClipboard.clipboardItem\\" на \\"true\\". Чтобы изменить флаги браузера в Firefox, посетите страницу \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не удается отобразить предпросмотр","canvasTooBig":"Сцена слишком большая.","canvasTooBigTip":"Совет: попробуйте сблизить элементы рисунка."},"errorSplash":{"headingMain":"Возникла ошибка. Попробуйте ","clearCanvasMessage":"Если перезагрузка страницы не помогла, попробуйте ","clearCanvasCaveat":" Текущая работа будет утеряна ","trackedToSentry":"Ошибка с идентификатором {{eventId}} отслеживается в нашей системе.","openIssueMessage":"Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.","sceneContent":"Содержание сцены:"},"roomDialog":{"desc_intro":"Вы можете пригласить людей в текущую сцену для совместной работы.","desc_privacy":"Не беспокойтесь — во время сеанса используется сквозное шифрование. Всё, что вы нарисуете, останется конфиденциальным и не будет доступно даже нашему серверу.","button_startSession":"Начать сеанс","button_stopSession":"Завершить сеанс","desc_inProgressIntro":"Сеанс совместной работы запущен.","desc_shareLink":"Поделитесь этой ссылкой со всеми участниками:","desc_exitSession":"Завершив сеанс, вы выйдете из комнаты, но сможете продолжить работать с документом локально. Это не повлияет на работу других пользователей — они смогут продолжить совместную работу с их версией документа.","shareTitle":"Присоединиться к активной совместной сессии на Excalidraw"},"errorDialog":{"title":"Ошибка"},"exportDialog":{"disk_title":"Сохранить на диск","disk_details":"Экспортировать данные сцены в файл, из которого можно импортировать позже.","disk_button":"Сохранить в файл","link_title":"Поделитесь ссылкой","link_details":"Экспорт ссылки только для чтения.","link_button":"Экспорт в ссылку","excalidrawplus_description":"Сохраните сцену в ваше рабочее пространство Excalidraw+.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Не удалось экспортировать в Excalidraw+ на данный момент..."},"helpDialog":{"blog":"Прочитайте наш блог","click":"нажать","deepSelect":"Глубокое выделение","deepBoxSelect":"Глубокое выделение рамкой, и предотвращение перетаскивания","curvedArrow":"Изогнутая стрелка","curvedLine":"Изогнутая линия","documentation":"Документация","doubleClick":"двойной клик","drag":"перетащить","editor":"Редактор","editLineArrowPoints":"Редактировать концы линий/стрелок","editText":"Редактировать текст / добавить метку","github":"Нашли проблему? Отправьте","howto":"Следуйте нашим инструкциям","or":"или","preventBinding":"Предотвращать привязку стрелок","tools":"Инструменты","shortcuts":"Горячие клавиши","textFinish":"Закончить редактирование (текстовый редактор)","textNewLine":"Добавить новую строку (текстовый редактор)","title":"Помощь","view":"Просмотр","zoomToFit":"Отмастштабировать, чтобы поместились все элементы","zoomToSelection":"Увеличить до выделенного","toggleElementLock":"Заблокировать/разблокировать выделение","movePageUpDown":"Сдвинуть страницу вверх/вниз","movePageLeftRight":"Сдвинуть страницу вправо/влево"},"clearCanvasDialog":{"title":"Очистить холст"},"publishDialog":{"title":"Опубликовать библиотеку","itemName":"Название объекта","authorName":"Имя автора","githubUsername":"Имя пользователя GitHub","twitterUsername":"Имя пользователя в Twitter","libraryName":"Название библиотеки","libraryDesc":"Описание библиотеки","website":"Веб-сайт","placeholder":{"authorName":"Ваше имя или имя пользователя","libraryName":"Название вашей библиотеки","libraryDesc":"Описание вашей библиотеки, которое поможет людям понять её назначение","githubHandle":"Имя пользователя GitHub (необязательно), чтобы вы смогли редактировать библиотеку после её отправки на проверку","twitterHandle":"Имя пользователя в Twitter (необязательно), чтобы мы знали, кого упомянуть при продвижении в Twitter","website":"Ссылка на ваш личный или какой-то другой сайт (необязательно)"},"errors":{"required":"Обязательно","website":"Введите допустимый URL-адрес"},"noteDescription":"Отправить вашу библиотеку для включения в хранилище публичных библиотек, чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках.","noteGuidelines":"Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите рекомендации перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно.","noteLicense":"Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под лицензией MIT, , что, вкратце, означает, что каждый может использовать её без ограничений.","noteItems":"Каждый объект в библиотеке должен иметь свое собственное имя, чтобы по нему можно было фильтровать. Следующие объекты библиотеки будут включены:","atleastOneLibItem":"Пожалуйста, выберите хотя бы один объект в библиотеке, чтобы начать","republishWarning":"Примечание: некоторые из выбранных элементов помечены как уже опубликованные/отправленные. Вы должны повторно отправить элементы только при обновлении существующей библиотеки или сдаче работы."},"publishSuccessDialog":{"title":"Библиотека отправлена","content":"Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статусздесь"},"confirmDialog":{"resetLibrary":"Сброс библиотеки","removeItemsFromLib":"Удалить выбранные объекты из библиотеки"},"imageExportDialog":{"header":"Экспортировать изображение","label":{"withBackground":"Фон","onlySelected":"Только выделенное","darkMode":"Темная тема","embedScene":"Встроить сцену","scale":"Масштаб","padding":"Отступ"},"tooltip":{"embedScene":"Сцена будет сохранена в PNG/SVG файл так, чтобы всю сцену можно будет восстановить из этого файла. Это увеличит размер файла."},"title":{"exportToPng":"Экспорт в PNG","exportToSvg":"Экспорт в SVG","copyPngToClipboard":"Скопировать PNG в буфер обмена"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Скопировать в буфер обмена"}},"encrypted":{"tooltip":"Ваши данные защищены сквозным (End-to-end) шифрованием. Серверы Excalidraw никогда не получат доступ к ним.","link":"Запись блога о сквозном шифровании в Excalidraw"},"stats":{"angle":"Угол","element":"Элемент","elements":"Элементы","height":"Высота","scene":"Сцены","selected":"Выбран","storage":"Хранилище","title":"Статистика для ботаников","total":"Всего","version":"Версия","versionCopy":"Копировать","versionNotAvailable":"Версия не доступна","width":"Ширина"},"toast":{"addedToLibrary":"Добавлено в библиотеку","copyStyles":"Скопированы стили.","copyToClipboard":"Скопировано в буфер обмена.","copyToClipboardAsPng":"{{exportSelection}} скопировано как PNG ({{exportColorScheme}})","fileSaved":"Файл сохранён.","fileSavedToFilename":"Сохранено в {filename}","canvas":"холст","selection":"выделение","pasteAsSingleElement":"Используйте {{shortcut}}, чтобы вставить один объект,\\nили вставьте в существующий текстовый редактор","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачный","black":"Чёрный","white":"Белый","red":"Красный","pink":"Розовый","grape":"Виноградный","violet":"Фиолетовый","gray":"Серый","blue":"Синий","cyan":"Голубой","teal":"Бирюзовый","green":"Зелёный","yellow":"Жёлтый","orange":"Оранжевый","bronze":"Бронзовый"},"welcomeScreen":{"app":{"center_heading":"Все ваши данные сохраняются локально в вашем браузере.","center_heading_plus":"Хотите перейти на Excalidraw+?","menuHint":"Экспорт, настройки, языки, ..."},"defaults":{"menuHint":"Экспорт, настройки и другое...","center_heading":"Диаграммы. Просто.","toolbarHint":"Выберите инструмент и начните рисовать!","helpHint":"Сочетания клавиш и помощь"}},"colorPicker":{"mostUsedCustomColors":"Часто используемые пользовательские цвета","colors":"Цвета","shades":"Оттенки","hexCode":"Шестнадцатеричный код","noShades":"Нет доступных оттенков для этого цвета"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Экспортировать как изображение","button":"Экспортировать как изображение","description":""},"saveToDisk":{"title":"Сохранить на диск","button":"Сохранить на диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Экспорт в Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Загрузить из файла","button":"Загрузить из файла","description":""},"shareableLink":{"title":"Загрузить по ссылке","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/si-LK-json-16eb66dbfc6c55fc85b1.js b/public/excalidraw/excalidraw-assets-dev/locales/si-LK-json-16eb66dbfc6c55fc85b1.js new file mode 100644 index 0000000..ddc6331 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/si-LK-json-16eb66dbfc6c55fc85b1.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/si-LK-json"],{ + +/***/ "../../locales/si-LK.json": +/*!********************************!*\ + !*** ../../locales/si-LK.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"අලවන්න","pasteAsPlaintext":"","pasteCharts":"ප්‍රස්ථාරය","selectAll":"සියල්ලම","multiSelect":"තෝරා ගැනීමට අංගය එකතු කරන්න","moveCanvas":"කැන්වසය චලනය කරන්න","cut":"කපන්න","copy":"පිටපත් කරන්න","copyAsPng":"PNG ලෙස පිටපත් කරන්න","copyAsSvg":"SVG ලෙස පිටපත් කරන්න","copyText":"","bringForward":"ඉදිරියට ගෙන්න","sendToBack":"පසුපසටම ගෙනියන්න","bringToFront":"ඉදිරියටම ගෙන්න","sendBackward":"පසුපසට ගෙනියන්න","delete":"මකන්න","copyStyles":"","pasteStyles":"","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"","arrowhead_bar":"","arrowhead_dot":"","arrowhead_triangle":"","fontSize":"","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"","small":"","medium":"","large":"","veryLarge":"ඉතා විශාල","solid":"විශාල","hachure":"මධ්‍යම","zigzag":"","crossHatch":"","thin":"කෙට්ටු","bold":"තද","left":"වම","center":"මැද","right":"දකුණ","extraBold":"ඉතා තද","architect":"වාස්තුවේදීයා","artist":"කලාකරු","cartoonist":"සැකිලිරූකරු","fileTitle":"ගොනු නාමය","colorPicker":"පාට තෝරකය","canvasColors":"","canvasBackground":"කැන්වස පසුබිම","drawingCanvas":"චිත්‍රක කැන්වසය","layers":"ලේයර","actions":"ක්‍රියාකාරකම","language":"භාෂාව ","liveCollaboration":"","duplicateSelection":"","untitled":"","name":"නම","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/sk-SK-json-782ead8707f2ad0e8e4e.js b/public/excalidraw/excalidraw-assets-dev/locales/sk-SK-json-782ead8707f2ad0e8e4e.js new file mode 100644 index 0000000..3b24f72 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/sk-SK-json-782ead8707f2ad0e8e4e.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/sk-SK-json"],{ + +/***/ "../../locales/sk-SK.json": +/*!********************************!*\ + !*** ../../locales/sk-SK.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Vložiť","pasteAsPlaintext":"Vložiť ako obyčajný text","pasteCharts":"Vložiť grafy","selectAll":"Vybrať všetko","multiSelect":"Pridať prvok do výberu","moveCanvas":"Pohyb plátna","cut":"Vystrihnúť","copy":"Kopírovať","copyAsPng":"Kopírovať do schránky ako PNG","copyAsSvg":"Kopírovať do schránky ako SVG","copyText":"Kopírovať do schránky ako text","bringForward":"Presunúť o úroveň dopredu","sendToBack":"Presunúť dozadu","bringToFront":"Presunúť dopredu","sendBackward":"Presunúť o úroveň dozadu","delete":"Vymazať","copyStyles":"Kopírovať štýly","pasteStyles":"Vložiť štýly","stroke":"Obrys","background":"Pozadie","fill":"Výplň","strokeWidth":"Hrúbka obrysu","strokeStyle":"Štýl obrysu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čiarkovaný","strokeStyle_dotted":"Bodkovaný","sloppiness":"Štylizácia","opacity":"Priehľadnosť","textAlign":"Zarovnanie textu","edges":"Okraje","sharp":"Ostré","round":"Zaokrúhlené","arrowheads":"Zakončenie šípky","arrowhead_none":"Žiadne","arrowhead_arrow":"Šípka","arrowhead_bar":"Čiara","arrowhead_dot":"Bod","arrowhead_triangle":"Trojuholník","fontSize":"Veľkosť písma","fontFamily":"Písmo","addWatermark":"Pridať \\"Vytvorené s Excalidraw\\"","handDrawn":"Ručne písané","normal":"Normálne","code":"Kód","small":"Malé","medium":"Stredné","large":"Veľké","veryLarge":"Veľmi veľké","solid":"Plná","hachure":"Šrafovaná","zigzag":"Cik-cak","crossHatch":"Mriežkovaná","thin":"Tenká","bold":"Hrubá","left":"Doľava","center":"Na stred","right":"Doprava","extraBold":"Veľmi hrubá","architect":"Architekt","artist":"Umelec","cartoonist":"Ilustrátor","fileTitle":"Názov súboru","colorPicker":"Výber farby","canvasColors":"Použité na plátne","canvasBackground":"Pozadie plátna","drawingCanvas":"Kresliace plátno","layers":"Vrstvy","actions":"Akcie","language":"Jazyk","liveCollaboration":"Živá spolupráca...","duplicateSelection":"Duplikovať","untitled":"Bez názvu","name":"Meno","yourName":"Vaše meno","madeWithExcalidraw":"Vytvorené s Excalidraw","group":"Zoskupiť","ungroup":"Zrušiť zoskupenie","collaborators":"Spolupracovníci","showGrid":"Zobraziť mriežku","addToLibrary":"Pridať do knižnice","removeFromLibrary":"Odstrániť z knižnice","libraryLoadingMessage":"Načítavanie knižnice…","libraries":"Prehliadať knižnice","loadingScene":"Načítavanie scény…","align":"Zarovnanie","alignTop":"Zarovnať nahor","alignBottom":"Zarovnať nadol","alignLeft":"Zarovnať doľava","alignRight":"Zarovnať doprava","centerVertically":"Zarovnať zvislo na stred","centerHorizontally":"Zarovnať vodorovne na stred","distributeHorizontally":"Rozmiestniť vodorovne","distributeVertically":"Rozmiestniť zvisle","flipHorizontal":"Prevrátiť vodorovne","flipVertical":"Prevrátiť zvislo","viewMode":"Režim zobrazenia","share":"Zdieľať","showStroke":"Zobraziť výber farby pre obrys","showBackground":"Zobraziť výber farby pre pozadie","toggleTheme":"Prepnúť tému","personalLib":"Moja knižnica","excalidrawLib":"Excalidraw knižnica","decreaseFontSize":"Zmenšiť veľkosť písma","increaseFontSize":"Zväčšiť veľkosť písma","unbindText":"Zrušiť previazanie textu","bindText":"Previazať text s kontajnerom","createContainerFromText":"Zabaliť text do kontajneru","link":{"edit":"Upraviť odkaz","editEmbed":"Editovať a zapustiť odkaz","create":"Vytvoriť odkaz","createEmbed":"Vytvoriť a zapustiť odkaz","label":"Odkaz","labelEmbed":"Zapustiť odkaz","empty":"Nie je nastavený žiaden odkaz"},"lineEditor":{"edit":"Upraviť čiaru","exit":"Ukončiť editovanie čiary"},"elementLock":{"lock":"Zamknúť","unlock":"Odomknúť","lockAll":"Zamknúť všetko","unlockAll":"Odomknúť všetko"},"statusPublished":"Zverejnené","sidebarLock":"Nechať bočný panel otvorený","selectAllElementsInFrame":"Vybrať všetky prvky v ráme","removeAllElementsFromFrame":"Odstrániť všetky prvky z rámu","eyeDropper":"Vybrať farbu z plátna"},"library":{"noItems":"Zatiaľ neboli pridané žiadne položky...","hint_emptyLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice alebo použite knižnicu z verejného zoznamu knižníc nižšie.","hint_emptyPrivateLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice."},"buttons":{"clearReset":"Obnoviť plátno","exportJSON":"Exportovať do súboru","exportImage":"Exportovať obrázok...","export":"Uložiť do...","copyToClipboard":"Kopírovať do schránky","save":"Uložiť do aktuálneho súboru","saveAs":"Uložiť ako","load":"Otvoriť","getShareableLink":"Získať odkaz na zdieľanie","close":"Zavrieť","selectLanguage":"Zvoliť jazyk","scrollBackToContent":"Vrátiť sa späť na obsah","zoomIn":"Priblížiť","zoomOut":"Oddialiť","resetZoom":"Obnoviť priblíženie","menu":"Ponuka","done":"Hotovo","edit":"Upraviť","undo":"Späť","redo":"Znova","resetLibrary":"Obnoviť knižnicu","createNewRoom":"Vytvoriť novú miestnosť","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Svetlý režim","zenMode":"Režim zen","objectsSnapMode":"Prichytiť k objektom","exitZenMode":"Zrušiť režim zen","cancel":"Zrušiť","clear":"Vymazať","remove":"Odstrániť","embed":"Prepnúť zapustenie","publishLibrary":"Uverejniť","submit":"Potvrdiť","confirm":"Potvrdiť","embeddableInteractionButton":"Kliknite pre interakciu"},"alerts":{"clearReset":"Týmto sa vyčistí celé plátno. Ste si istí?","couldNotCreateShareableLink":"Nepodarilo sa vytvoriť odkaz na zdieľanie.","couldNotCreateShareableLinkTooBig":"Nepodarilo sa vytvoriť odkaz na zdieľanie: scéna je príliš veľká","couldNotLoadInvalidFile":"Nepodarilo sa načítať nevalidný súbor","importBackendFailed":"Nepdarilo sa importovanie zo serveru.","cannotExportEmptyCanvas":"Nie je možné exportovať prázdne plátno.","couldNotCopyToClipboard":"Kopírovanie do schránky sa nepodarilo.","decryptFailed":"Nepodarilo sa rozšifrovať údaje.","uploadedSecurly":"Nahratie je zabezpečené end-to-end šifrovaním, takže Excalidraw server a tretie strany nedokážu prečítať jeho obsah.","loadSceneOverridePrompt":"Nahratie externej kresby nahradí existujúci obsah. Prajete si pokračovať?","collabStopOverridePrompt":"Ukončenie schôdze nahradí vašu predchádzajúcu lokálne uloženú scénu. Ste si istý?\\n\\n(Ak si chcete ponechať lokálnu scénu, jednoducho iba zavrite kartu prehliadača.)","errorAddingToLibrary":"Nepodarilo sa pridať položku do knižnice","errorRemovingFromLibrary":"Nepodarilo sa odstrániť položku z knižnice","confirmAddLibrary":"Týmto sa pridá {{numShapes}} tvar(ov) do vašej knižnice. Ste si istí?","imageDoesNotContainScene":"Tento obrázok neobsahuje žiadne údaje scény. Zvolili ste možnosť zahrnúť scénu počas exportu?","cannotRestoreFromImage":"Nepodarilo sa obnoviť scénu z tohto obrázkového súboru","invalidSceneUrl":"Nepodarilo sa načítať scénu z poskytnutej URL. Je nevalidná alebo neobsahuje žiadne validné Excalidraw JSON dáta.","resetLibrary":"Týmto vyprázdnite vašu knižnicu. Ste si istý?","removeItemsFromsLibrary":"Odstrániť {{count}} položiek z knižnice?","invalidEncryptionKey":"Šifrovací kľúč musí mať 22 znakov. Živá spolupráca je vypnutá.","collabOfflineWarning":"Internetové pripojenie nie je dostupné.\\nVaše zmeny nebudú uložené!"},"errors":{"unsupportedFileType":"Nepodporovaný typ súboru.","imageInsertError":"Nepodarilo sa vložiť obrázok. Skúste to znova neskôr...","fileTooBig":"Súbor je príliš veľký. Maximálna povolená veľkosť je {{maxSize}}.","svgImageInsertError":"Nepodarilo sa vložiť SVG obrázok. SVG formát je pravdepodobne nevalidný.","failedToFetchImage":"","invalidSVGString":"Nevalidné SVG.","cannotResolveCollabServer":"Nepodarilo sa pripojiť ku kolaboračnému serveru. Prosím obnovte stránku a skúste to znovu.","importLibraryError":"Nepodarilo sa načítať knižnicu","collabSaveFailed":"Uloženie do databázy sa nepodarilo. Ak tento problém pretrváva uložte si váš súbor lokálne aby ste nestratili vašu prácu.","collabSaveFailed_sizeExceeded":"Uloženie do databázy sa nepodarilo, pretože veľkosť plátna je príliš veľká. Uložte si váš súbor lokálne aby ste nestratili vašu prácu.","brave_measure_text_error":{"line1":"Vyzerá to, že používate prehliadač Brave so zapnutým nastavením pre agresívne blokovanie.","line2":"To môže spôsobiť nesprávne zobrazenie textových prvkov vo vašej kresbe.","line3":"Dôrazne odporúčame vypnutie toho nastavenia. Môžete tak spraviť vykonaním týchto krokov.","line4":"Ak vypnutie toho nastavenia nevyrieši problém so zobrazením textových prvkov, prosím ohláste problém na našom GitHub-e alebo nám napíšte na náš Discord"},"libraryElementTypeError":{"embeddable":"Zapustené prvky nie je možné pridať do knižnice.","image":"Podpora pre pridávanie obrázkov do knižnice bude dostupná už čoskoro!"}},"toolBar":{"selection":"Výber","image":"Vložiť obrázok","rectangle":"Obdĺžnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šípka","line":"Čiara","freedraw":"Kresliť","text":"Text","library":"Knižnica","lock":"Nechať zvolený nástroj aktívny po skončení kreslenia","penMode":"Režim pera – zabrániť dotyku","link":"Pridať/ Upraviť odkaz pre vybraný tvar","eraser":"Guma","frame":"Nástroj rám","embeddable":"Web Embed","laser":"","hand":"Ruka (nástroj pre pohyb plátna)","extraTools":"Ďalšie nástroje"},"headings":{"canvasActions":"Akcie plátna","selectedShapeActions":"Akcie tvarov z výberu","shapes":"Tvary"},"hints":{"canvasPanning":"Pre pohyb plátna podržte koliesko myši alebo medzerník počas ťahania, alebo použite nástroj ruka","linearElement":"Kliknite na vloženie viacerých bodov, potiahnite na vytvorenie jednej priamky","freeDraw":"Kliknite a ťahajte, pustite na ukončenie","text":"Tip: text môžete pridať aj dvojklikom kdekoľvek, ak je zvolený nástroj výber","embeddable":"Kliknite a ťahajte pre zapustenie webovej stránky","text_selected":"Použite dvojklik alebo stlačte Enter na editáciu textu","text_editing":"Stlačte Escape alebo CtrlOrCmd+ENTER na ukončenie editovania","linearElementMulti":"Kliknite na počiatočný bod alebo stlačte Escape alebo Enter na ukončenie","lockAngle":"Počas rotácie obmedzíte uhol podržaním SHIFT","resize":"Počas zmeny veľkosti zachováte proporcie podržaním SHIFT,\\\\npodržaním ALT meníte veľkosť so zachovaním stredu","resizeImage":"Podržte SHIFT pre voľnú zmenu veľkosti, podržte ALT pre zmenu veľkosti od stredu","rotate":"Počas rotácie obmedzíte uhol podržaním SHIFT","lineEditor_info":"Podržte CtrlOrCmd a kliknite dva krát alebo stlačte CtrlOrCmd + Enter pre editáciu bodov","lineEditor_pointSelected":"Stačte Delete na vymazanie bodu (bodov), CtrlOrCmd+D na duplikovanie, alebo potiahnite na presunutie","lineEditor_nothingSelected":"Zvoľte bod na upravovanie (podržte SHIFT pre zvolenie viacerých bodov) alebo podržte Alt a kliknite na pridanie nového bodu","placeImage":"Kliknite pre umiestnenie obrázka alebo kliknite a ťahajte pre zmenu jeho veľkosti","publishLibrary":"Uverejniť vašu knižnicu","bindTextToElement":"Stlačte enter na pridanie textu","deepBoxSelect":"Podržte CtrlOrCmd na výber v skupine alebo zamedzeniu poťiahnutia","eraserRevert":"Podržte Alt pre prehodenie položiek určených na vymazanie","firefox_clipboard_write":"Táto sa funkcionalita sa dá zapnúť nastavením \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Pre zmenu nastavení vo Firefox-e otvorte stránku \\"about:config\\".","disableSnapping":"Podržte CtrlOrCmd pre vypnutie prichytávania"},"canvasError":{"cannotShowPreview":"Nie je možné zobraziť náhľad plátna","canvasTooBig":"Plátno je možno príliš veľké.","canvasTooBigTip":"Tip: skúste presunúť najvzdialenejšie prvky bližšie k sebe."},"errorSplash":{"headingMain":"Nastala chyba. Vyskúšajte ","clearCanvasMessage":"Ak obnovenie stránky nepomáha, vyskúšajte ","clearCanvasCaveat":" To bude mať za následok stratu práce ","trackedToSentry":"Chyba s identifikátorom {{eventId}} bola zaznamenaná v našom systéme.","openIssueMessage":"Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Pozvite niekoho do svojej aktuálnej scény a pracujte spoločne.","desc_privacy":"Nemajte obavy, schôdza používa end-to-end šifrovanie, takže všetko čo nakreslíte je súkromné. Dokonca, ani náš server dedokáže prečítať, čo ste vytvorili.","button_startSession":"Začať schôdzu","button_stopSession":"Ukončiť schôdzu","desc_inProgressIntro":"Práve prebieha živá schôdza.","desc_shareLink":"Zdieľajte tento odkaz s osobou, s ktorou chcete spolupracovať:","desc_exitSession":"Ukončenie schôdze vás odpojí z miestnosti, avšak naďalej budete môcť pokračovať v práci na scéne lokálne. Toto neovplyvní ostatných spolupracovníkov a stále budú môcť spolupracovať na ich verzii.","shareTitle":"Pripojiť sa k živej schôdzi na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložiť na disk","disk_details":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované.","disk_button":"Uložiť do súboru","link_title":"Odkaz na zdieľanie","link_details":"Exportovať ako odkaz iba na čítanie.","link_button":"Exportovať ako odkaz","excalidrawplus_description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru.","excalidrawplus_button":"Exportovať","excalidrawplus_exportError":"Nepodarilo sa vykonať export do Excalidraw+..."},"helpDialog":{"blog":"Prečítajte si náš blog","click":"kliknutie","deepSelect":"Výber v skupine","deepBoxSelect":"Výber v skupine alebo zamedzenie poťiahnutia","curvedArrow":"Zakrivená šípka","curvedLine":"Zakrivená čiara","documentation":"Dokumentácia","doubleClick":"dvojklik","drag":"potiahnutie","editor":"Editovanie","editLineArrowPoints":"Editácia bodov čiary/šípky","editText":"Editácia textu / pridanie štítku","github":"Objavili ste problém? Nahláste ho","howto":"Postupujte podľa naších návodov","or":"alebo","preventBinding":"Zakázať pripájanie šípky","tools":"Nástroje","shortcuts":"Klávesové skratky","textFinish":"Ukončenie editovania (text editor)","textNewLine":"Vložiť nový riadok (text editor)","title":"Pomocník","view":"Zobrazenie","zoomToFit":"Priblížiť aby boli zahrnuté všetky prvky","zoomToSelection":"Priblížiť na výber","toggleElementLock":"Zamknúť/odomknúť vybrané","movePageUpDown":"Posunúť stranu hore/dole","movePageLeftRight":"Posunúť stranu doľava/doprava"},"clearCanvasDialog":{"title":"Vyčistiť plátno"},"publishDialog":{"title":"Uverejniť knižnicu","itemName":"Názov položky","authorName":"Meno autora","githubUsername":"Github užívateľské meno","twitterUsername":"Twitter užívateľské meno","libraryName":"Názov knižnice","libraryDesc":"Popis knižnice","website":"Webová stránka","placeholder":{"authorName":"Vaše meno alebo užívateľské meno","libraryName":"Názov vašej knižnice","libraryDesc":"Popis vašej knižnice, ktorý ostatným pomôže porozumieť jej vhodnému použitiu","githubHandle":"GitHub užívateľské meno (nepovinné), aby ste mohli robiť úpravy po tom, čo bude knižnica uverejnená na schválenie","twitterHandle":"Twitter užívateľské meno (nepovinné), aby sme vedeli komu pripísať zásluhu pri propagovaní cez Twitter","website":"Odkaz na vašu osobnú webovú stránku alebo niekam inam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadajte platnú adresu URL"},"noteDescription":"Uverejnite vašu knižnicu vo verejnom zozname knižnícaby ju aj ostatní mohli použiť v ich náčrtoch.","noteGuidelines":"Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si pokyny pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné.","noteLicense":"Potvrdením súhlasíte, že knižnica bude zverejnená s MIT licenciou, čo v skratke znamená, že ju môže použiť hocikto bez obmedzení.","noteItems":"Každá položka v knižnici musí mať svoje vlastné meno, aby sa dala vyhľadať. Súčasťou knižnice budú nasledujúce položky:","atleastOneLibItem":"Začnite prosím zvolením aspoň jednej položky z knižnice","republishWarning":"Poznámka: Niektoré z vybraných položiek sú už označené ako zverejnené. Ich znovu uverejnenie by ste mali vykovať iba vtedy ak aktualizujete už existujúcu knižnicu alebo požiadavku na uverejnenie."},"publishSuccessDialog":{"title":"Knižnica uverejnená","content":"Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovaťtu"},"confirmDialog":{"resetLibrary":"Obnoviť knižnicu","removeItemsFromLib":"Odstrániť zvolené položky z knižnice"},"imageExportDialog":{"header":"Exportovať obrázok","label":{"withBackground":"Pozadie","onlySelected":"Iba vybrané","darkMode":"Tmavý režim","embedScene":"Zahrnúť scénu","scale":"Mierka","padding":"Odsadenie"},"tooltip":{"embedScene":"Údaje scény budú uložené do exportovaného PNG/SVG súboru, takže scéna z neho môže byť opäť obnovená.\\nBude to mať za následok zvýšenie veľkosti súboru."},"title":{"exportToPng":"Exportovať do PNG","exportToSvg":"Exportovať do SVG","copyPngToClipboard":"Kopírovať PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovať do schránky"}},"encrypted":{"tooltip":"Vaše kresby používajú end-to-end šifrovanie, takže ich Excalidraw server nedokáže prečítať.","link":"Blog o end-to-end šifrovaní v Excalidraw"},"stats":{"angle":"Uhol","element":"Prvok","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybrané","storage":"Úložisko","title":"Štatistiky","total":"Celkom","version":"Verzia","versionCopy":"Kliknutím skopírujete","versionNotAvailable":"Verzia nie je k dispozícii","width":"Šírka"},"toast":{"addedToLibrary":"Pridané do knižnice","copyStyles":"Štýly skopírované.","copyToClipboard":"Skopírované do schránky.","copyToClipboardAsPng":"Kopírovanie {{exportSelection}} do schránky ako PNG prebehlo úspešne\\n({{exportColorScheme}})","fileSaved":"Súbor uložený.","fileSavedToFilename":"Uložený ako {filename}","canvas":"plátna","selection":"výberu","pasteAsSingleElement":"Použitím {{shortcut}} vložte ako samostatný prvok alebo vložte do existujúceho editovaného textu","unableToEmbed":"Zapustenie tejto URL nie je povolené. Vytvorte issue na GitHub-e a požiadajte povolenie tejto URL","unrecognizedLinkFormat":"Odkaz, ktorý sa snažíte zapustiť nie je v očakávanom formáte. Prosím skúste vložiť \'odkaz na zdieľanie\' poskytnutý zdrojovou webovou stránkou"},"colors":{"transparent":"Priehľadná","black":"Čierna","white":"Biela","red":"Červená","pink":"Ružová","grape":"Hroznová fialová","violet":"Fialová","gray":"Sivá","blue":"Modrá","cyan":"Azúrová","teal":"Modrozelená","green":"Zelená","yellow":"Žltá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všetky vaše dáta sú uložené lokálne vo vašom prehliadači.","center_heading_plus":"Chceli ste namiesto toho prejsť do Excalidraw+?","menuHint":"Exportovanie, nastavenia, jazyky, ..."},"defaults":{"menuHint":"Exportovanie, nastavenia a ďalšie...","center_heading":"Diagramy. Jednoducho.","toolbarHint":"Zvoľte nástroj a začnite kresliť!","helpHint":"Klávesové skratky a pomocník"}},"colorPicker":{"mostUsedCustomColors":"Najpoužívanejšie vlastné farby","colors":"Farby","shades":"Odtiene","hexCode":"Hex kód","noShades":"Pre túto farbu nie sú dostupné žiadne odtiene"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportovať ako obrázok","button":"Exportovať ako obrázok","description":"Exportovať údaje scény ako obrázok, z ktorého môžu byť neskôr importované."},"saveToDisk":{"title":"Uložiť na disk","button":"Uložiť na disk","description":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportovať ako Excalidraw+","description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru."}},"modal":{"loadFromFile":{"title":"Načítať zo súboru","button":"Načítať zo súboru","description":"Načítanie zo súboru nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."},"shareableLink":{"title":"Načítať z odkazu","button":"Nahradiť môj obsah","description":"Načítanie externej kresby nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/sl-SI-json-82e55cf7cdbdc7d7f959.js b/public/excalidraw/excalidraw-assets-dev/locales/sl-SI-json-82e55cf7cdbdc7d7f959.js new file mode 100644 index 0000000..33d8183 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/sl-SI-json-82e55cf7cdbdc7d7f959.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/sl-SI-json"],{ + +/***/ "../../locales/sl-SI.json": +/*!********************************!*\ + !*** ../../locales/sl-SI.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Prilepi","pasteAsPlaintext":"Prilepi kot navadno besedilo","pasteCharts":"Prilepi grafikone","selectAll":"Izberi vse","multiSelect":"Dodaj element v izbor","moveCanvas":"Premakni platno","cut":"Izreži","copy":"Kopiraj","copyAsPng":"Kopiraj v odložišče kot PNG","copyAsSvg":"Kopiraj v odložišče kot SVG","copyText":"Kopiraj v odložišče kot besedilo","bringForward":"Postavi naprej","sendToBack":"Pomakni v ozadje","bringToFront":"Pomakni v ospredje","sendBackward":"Pošlji nazaj","delete":"Izbriši","copyStyles":"Kopiraj slog","pasteStyles":"Prilepi slog","stroke":"Poteza","background":"Ozadje","fill":"Polnilo","strokeWidth":"Debelina poteze","strokeStyle":"Slog poteze","strokeStyle_solid":"Polna","strokeStyle_dashed":"Črtkana","strokeStyle_dotted":"Pikasta","sloppiness":"Površnost","opacity":"Prekrivnost","textAlign":"Poravnava besedila","edges":"Robovi","sharp":"Ostri","round":"Okrogli","arrowheads":"Puščice","arrowhead_none":"Brez","arrowhead_arrow":"Puščica","arrowhead_bar":"Palica","arrowhead_dot":"Pika","arrowhead_triangle":"Trikotnik","fontSize":"Velikost pisave","fontFamily":"Družina pisave","addWatermark":"Dodaj \\"Izdelano z Excalidraw\\"","handDrawn":"Ročno narisano","normal":"Običajno","code":"Koda","small":"Majhna","medium":"Srednja","large":"Velika","veryLarge":"Zelo velika","solid":"Polno","hachure":"Šrafura","zigzag":"Cikcak","crossHatch":"Križno","thin":"Tanko","bold":"Krepko","left":"Levo","center":"Sredina","right":"Desno","extraBold":"Ekstra krepko","architect":"Arhitekt","artist":"Umetnik","cartoonist":"Risar","fileTitle":"Ime datoteke","colorPicker":"Izbor barve","canvasColors":"Uporabljeno na platnu","canvasBackground":"Ozadje platna","drawingCanvas":"Platno za risanje","layers":"Plasti","actions":"Dejanja","language":"Jezik","liveCollaboration":"Sodelovanje v živo...","duplicateSelection":"Podvoji","untitled":"Neimenovana","name":"Ime","yourName":"Vaše ime","madeWithExcalidraw":"Izdelano z Excalidraw","group":"Združi izbor","ungroup":"Razdruži izbor","collaborators":"Sodelavci","showGrid":"Prikaži mrežo","addToLibrary":"Dodaj v knjižnico","removeFromLibrary":"Odstrani iz knjižnice","libraryLoadingMessage":"Nalaganje knjižnice ...","libraries":"Brskaj po knjižnicah","loadingScene":"Nalaganje scene...","align":"Poravnava","alignTop":"Poravnaj na vrh","alignBottom":"Poravnaj na dno","alignLeft":"Poravnaj levo","alignRight":"Poravnaj desno","centerVertically":"Navpično na sredini","centerHorizontally":"Vodoravno na sredini","distributeHorizontally":"Porazdeli vodoravno","distributeVertically":"Porazdeli navpično","flipHorizontal":"Obrni vodoravno","flipVertical":"Obrni navpično","viewMode":"Način ogleda","share":"Deli","showStroke":"Prikaži izbirnik barv poteze","showBackground":"Prikaži izbirnik barv ozadja","toggleTheme":"Obrni temo","personalLib":"Osebna knjižnica","excalidrawLib":"Knjižnica Excalidraw","decreaseFontSize":"Zmanjšaj velikost pisave","increaseFontSize":"Povečaj velikost pisave","unbindText":"Veži besedilo","bindText":"Veži besedilo na element","createContainerFromText":"Zavij besedilo v vsebnik","link":{"edit":"Uredi povezavo","editEmbed":"Uredi povezavo in vdelaj","create":"Ustvari povezavo","createEmbed":"Ustvari povezavo in vdelaj","label":"Povezava","labelEmbed":"Povezava in vdelovanje","empty":"Povezava ni nastavljena"},"lineEditor":{"edit":"Uredi črto","exit":"Zapri urejanje črte"},"elementLock":{"lock":"Zakleni","unlock":"Odkleni","lockAll":"Zakleni vse","unlockAll":"Odkleni vse"},"statusPublished":"Objavljeno","sidebarLock":"Obdrži stransko vrstico odprto","selectAllElementsInFrame":"Izberi vse elemente v okvirju","removeAllElementsFromFrame":"Izbriši vse elemente v okvirju","eyeDropper":"Izberi barvo s platna"},"library":{"noItems":"Dodan še ni noben element...","hint_emptyLibrary":"Izberite element na platnu, da ga dodate sem, ali namestite knjižnico iz javnega skladišča spodaj.","hint_emptyPrivateLibrary":"Izberite element na platnu, da ga dodate sem."},"buttons":{"clearReset":"Ponastavi platno","exportJSON":"Izvozi v datoteko","exportImage":"Izvozi sliko...","export":"Shrani v...","copyToClipboard":"Kopiraj v odložišče","save":"Shrani v trenutno datoteko","saveAs":"Shrani kot","load":"Odpri","getShareableLink":"Pridobi povezavo za deljenje","close":"Zapri","selectLanguage":"Izberi jezik","scrollBackToContent":"Pomakni se nazaj na vsebino","zoomIn":"Povečaj","zoomOut":"Pomanjšaj","resetZoom":"Ponastavi povečavo","menu":"Meni","done":"Končano","edit":"Uredi","undo":"Razveljavi","redo":"Ponovi","resetLibrary":"Ponastavi knjižnico","createNewRoom":"Ustvari novo sobo","fullScreen":"Celozaslonski način","darkMode":"Temni način","lightMode":"Svetli način","zenMode":"Način Zen","objectsSnapMode":"Pripenjanje na predmete","exitZenMode":"Zapri način Zen","cancel":"Prekliči","clear":"Počisti","remove":"Odstrani","embed":"Preklopi vdelavo","publishLibrary":"Objavi","submit":"Pošlji","confirm":"Potrdi","embeddableInteractionButton":"Kliknite za interakcijo"},"alerts":{"clearReset":"To bo počistilo celotno platno. Ali ste prepričani?","couldNotCreateShareableLink":"Povezave za deljenje ni bilo mogoče ustvariti.","couldNotCreateShareableLinkTooBig":"Povezave za deljenje ni bilo mogoče ustvariti: scena je prevelika","couldNotLoadInvalidFile":"Neveljavne datoteke ni bilo mogoče naložiti","importBackendFailed":"Uvoz iz zaledja ni uspel.","cannotExportEmptyCanvas":"Izvoz prazne scene ni mogoč.","couldNotCopyToClipboard":"Kopiranje v odložišče ni uspelo.","decryptFailed":"Dešifriranje podatkov ni uspelo.","uploadedSecurly":"Nalaganje je bilo zaščiteno s šifriranjem od konca do konca, kar pomeni, da strežnik Excalidraw in tretje osebe ne morejo brati vsebine.","loadSceneOverridePrompt":"Nalaganje zunanje risbe bo nadomestilo vašo obstoječo vsebino. Ali želite nadaljevati?","collabStopOverridePrompt":"Ustavitev seje bo prepisala vašo prejšnjo, lokalno shranjeno risbo. Ali ste prepričani?\\n\\n(Če želite obdržati lokalno risbo, preprosto zaprite zavihek brskalnika.)","errorAddingToLibrary":"Elementa ni bilo mogoče dodati v knjižnico","errorRemovingFromLibrary":"Elementa ni bilo mogoče izbrisati iz knjižnice","confirmAddLibrary":"S tem boste v vašo knjižnico dodali oblike ({{numShapes}}). Ali ste prepričani?","imageDoesNotContainScene":"Zdi se, da ta slika ne vsebuje podatkov o sceni. Ali ste med izvozom omogočili vdelavo scene?","cannotRestoreFromImage":"Scene ni bilo mogoče obnoviti iz te slikovne datoteke","invalidSceneUrl":"S priloženega URL-ja ni bilo mogoče uvoziti scene. Je napačno oblikovana ali pa ne vsebuje veljavnih podatkov Excalidraw JSON.","resetLibrary":"To bo počistilo vašo knjižnico. Ali ste prepričani?","removeItemsFromsLibrary":"Izbriši elemente ({{count}}) iz knjižnice?","invalidEncryptionKey":"Ključ za šifriranje mora vsebovati 22 znakov. Sodelovanje v živo je onemogočeno.","collabOfflineWarning":"Internetna povezava ni na voljo.\\nVaše spremembe ne bodo shranjene!"},"errors":{"unsupportedFileType":"Nepodprt tip datoteke.","imageInsertError":"Vstavljanje slike ni bilo uspešno. Poskusite ponovno kasneje...","fileTooBig":"Datoteka je prevelika. Največja dovoljena velikost je {{maxSize}}.","svgImageInsertError":"Vstavljanje slike SVG ni uspelo. Oznake SVG so videti neveljavne.","failedToFetchImage":"Pridobivanje slike ni uspelo.","invalidSVGString":"Neveljaven SVG.","cannotResolveCollabServer":"Povezave s strežnikom za sodelovanje ni bilo mogoče vzpostaviti. Ponovno naložite stran in poskusite znova.","importLibraryError":"Nalaganje knjižnice ni uspelo","collabSaveFailed":"Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.","collabSaveFailed_sizeExceeded":"Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela.","brave_measure_text_error":{"line1":"Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo Agresivno blokiranje prstnih odtisov.","line2":"To bi lahko povzročilo motnje v obnašanju besedilnih elementov v vaših risbah.","line3":"Močno priporočamo, da onemogočite to nastavitev. Sledite tem korakom, kako to storiti.","line4":"Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite vprašanje na našem GitHubu ali nam pišite na Discord"},"libraryElementTypeError":{"embeddable":"Vdelani elementi ne morejo biti dodani v knjižnico.","image":"Podpora za dodajanje slik v knjižnico prihaja kmalu!"}},"toolBar":{"selection":"Izbor","image":"Vstavi sliko","rectangle":"Pravokotnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Puščica","line":"Črta","freedraw":"Risanje","text":"Besedilo","library":"Knjižnica","lock":"Ohrani izbrano orodje aktivno po risanju","penMode":"Način peresa - prepreči dotik","link":"Dodaj/posodobi povezavo za izbrano obliko","eraser":"Radirka","frame":"Okvir","embeddable":"Spletna vdelava","laser":"Laserski kazalec","hand":"Roka (orodje za premikanje)","extraTools":"Več orodij"},"headings":{"canvasActions":"Dejanja za platno","selectedShapeActions":"Dejanja za izbrane oblike","shapes":"Oblike"},"hints":{"canvasPanning":"Za premikanje platna med vlečenjem držite kolesce miške ali preslednico ali uporabite orodje roka","linearElement":"Kliknite za začetek več točk, povlecite za posamezno črto","freeDraw":"Kliknite in povlecite, spustite, ko končate","text":"Namig: besedilo lahko dodate tudi z dvoklikom kjer koli z orodjem za izbiro","embeddable":"Kliknite in povlecite, da ustvarite spletno vdelavo","text_selected":"Dvokliknite ali pritisnite tipko Enter, da uredite besedilo","text_editing":"Pritisnite tipko Escape ali CtrlOrCmd+Enter za zaključek urejanja","linearElementMulti":"Kliknite zadnjo točko ali pritisnite Escape ali Enter, da končate","lockAngle":"Kot lahko omejite tako, da držite tipko Shift","resize":"Razmerja lahko omejite tako, da držite tipko Shift med spreminjanjem velikosti. Držite tipko Alt, da spremenite velikost od središča","resizeImage":"Velikost lahko prosto spreminjate tako, da držite tipko Shift. Držite tipko Alt, da spremenite velikost od središča","rotate":"Kote lahko omejite tako, da med vrtenjem držite tipko Shift","lineEditor_info":"Držite CtrlOrCmd in dvokliknite ali pritisnite CtrlOrCmd + Enter za urejanje točk","lineEditor_pointSelected":"Pritisnite tipko Delete, da odstranite točko(e), CtrlOrCmd+D za podvojitev ali povlecite za premikanje","lineEditor_nothingSelected":"Izberite točko za urejanje (pridržite tipko Shift za izbiro več točk), ali držite tipko Alt in kliknite za dodajanje novih točk","placeImage":"Kliknite, da postavite sliko, ali kliknite in povlecite, da ročno nastavite njeno velikost","publishLibrary":"Objavi svojo knjižnico","bindTextToElement":"Pritisnite tipko Enter za dodajanje besedila","deepBoxSelect":"Držite tipko CtrlOrCmd za globoko izbiro in preprečitev vlečenja","eraserRevert":"Pridržite tipko Alt, da razveljavite elemente, označene za brisanje","firefox_clipboard_write":"To funkcijo lahko verjetno omogočite z nastavitvijo zastavice \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Če želite spremeniti zastavice brskalnika v Firefoxu, obiščite stran \\"about:config\\".","disableSnapping":"Držite CtrlOrCmd, da onemogočite pripenjanje"},"canvasError":{"cannotShowPreview":"Predogleda ni bilo mogoče prikazati","canvasTooBig":"Morda je platno preveliko.","canvasTooBigTip":"Nasvet: poskusite premakniti najbolj oddaljene elemente nekoliko bližje skupaj."},"errorSplash":{"headingMain":"Prišlo je do napake. Poskusite ","clearCanvasMessage":"Če ponovno nalaganje ne deluje, poskusite ","clearCanvasCaveat":" To bo povzročilo izgubo dela ","trackedToSentry":"Napaka z identifikatorjem {{eventId}} smo zabeležili v naš sistem.","openIssueMessage":"Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.","sceneContent":"Vsebina scene:"},"roomDialog":{"desc_intro":"Na vašo trenutno sceno lahko povabite osebe, ki bodo sodelovale z vami.","desc_privacy":"Brez skrbi. Seja uporablja šifriranje od konca do konca, tako da bo vse, kar narišete, ostalo zasebno. Niti naš strežnik ne bo mogel videti, kaj si izmislite.","button_startSession":"Začni sejo","button_stopSession":"Ustavi sejo","desc_inProgressIntro":"Seja sodelovanja v živo je v teku.","desc_shareLink":"Delite to povezavo z vsemi, s katerimi želite sodelovati:","desc_exitSession":"Ustavitev seje vas bo odklopila od sobe, vendar boste lahko lokalno nadaljevali delo s sceno. To pa ne bo vplivalo na druge osebe. Druge osebe bodo še vedno lahko sodelovale v svoji različici.","shareTitle":"Pridruži se seji sodelovanja v živo na Excalidraw"},"errorDialog":{"title":"Napaka"},"exportDialog":{"disk_title":"Shrani na disk","disk_details":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite.","disk_button":"Shrani v datoteko","link_title":"Povezava za deljenje","link_details":"Izvoz kot povezava samo za branje.","link_button":"Izvoz kot povezava","excalidrawplus_description":"Shrani sceno v svoj delovni prostor Excalidraw+.","excalidrawplus_button":"Izvoz","excalidrawplus_exportError":"Trenutno ni bilo mogoče izvoziti v Excalidraw+..."},"helpDialog":{"blog":"Preberite naš blog","click":"klik","deepSelect":"Globoka izbira","deepBoxSelect":"Globoka izbira znotraj polja in preprečitev vlečenja","curvedArrow":"Ukrivljena puščica","curvedLine":"Ukrivljena črta","documentation":"Dokumentacija","doubleClick":"dvojni klik","drag":"vleci","editor":"Urejevalnik","editLineArrowPoints":"Uredi črto/točke puščice","editText":"Uredi besedilo / dodaj oznako","github":"Ste našli težavo? Pošljite","howto":"Sledite našim vodičem","or":"ali","preventBinding":"Prepreči vezanje puščice","tools":"Orodja","shortcuts":"Bližnjice na tipkovnici","textFinish":"Zaključi urejanje (urejevalnik besedila)","textNewLine":"Dodaj novo vrstico (urejevalnik besedila)","title":"Pomoč","view":"Pogled","zoomToFit":"Približaj na vse elemente","zoomToSelection":"Približaj na izbor","toggleElementLock":"Zakleni/odkleni izbor","movePageUpDown":"Premakni stran gor/dol","movePageLeftRight":"Premakni stran levo/desno"},"clearCanvasDialog":{"title":"Počisti platno"},"publishDialog":{"title":"Objavi knjižnico","itemName":"Ime elementa","authorName":"Ime avtorja","githubUsername":"GitHub uporabniško ime","twitterUsername":"Twitter uporabniško ime","libraryName":"Ime knjižnice","libraryDesc":"Opis knijžnice","website":"Spletna stran","placeholder":{"authorName":"Vaše ime ali uporabniško ime","libraryName":"Ime vaše knjižnice","libraryDesc":"Opis vaše knjižnice, da bodo ljudje lažje razumeli njeno uporabo","githubHandle":"GitHub uporabniško ime (neobvezno), tako da lahko urejate knjižnico potem, ko jo pošljete v pregled","twitterHandle":"Twitter uporabniško ime (neobvezno), tako da vemo, koga omeniti pri promociji prek Twitterja","website":"Povezava na vašo osebno spletno stran ali drugam (neobvezno)"},"errors":{"required":"Obvezno","website":"Vnesite veljaven URL"},"noteDescription":"Predložite svojo knjižnico, da bo vključena v javno skladišče knjižnic,da jih drugi lahko uporabljajo v svojih risbah.","noteGuidelines":"Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše smernice.Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno.","noteLicense":"Z oddajo se strinjate, da bo knjižnica objavljena pod licenco MIT, kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev.","noteItems":"Vsak element knjižnice mora imeti svoje ime, tako da ga je mogoče filtrirati. Vključeni bodo naslednji elementi knjižnice:","atleastOneLibItem":"Za začetek izberite vsaj en element knjižnice","republishWarning":"Opomba: nekateri izbrani predmeti so označeni kot že objavljeni/oddani. Elemente lahko znova oddate samo, ko posodabljate obstoječo knjižnico ali oddajo."},"publishSuccessDialog":{"title":"Knjižnica oddana","content":"{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljatetukaj"},"confirmDialog":{"resetLibrary":"Ponastavi knjižnico","removeItemsFromLib":"Odstran izbrane elemente iz knjižnice"},"imageExportDialog":{"header":"Izvozi sliko","label":{"withBackground":"Ozadje","onlySelected":"Samo izbor","darkMode":"Temni način","embedScene":"Vdelaj sceno","scale":"Povečava","padding":"Odmik"},"tooltip":{"embedScene":"Podatki o sceni bodo shranjeni v izvoženo datoteko PNG/SVG, tako da bo sceno mogoče obnoviti iz nje.\\nTo bo povečalo velikost izvožene datoteke."},"title":{"exportToPng":"Izvozi v PNG","exportToSvg":"Izvozi v SVG","copyPngToClipboard":"Kopiraj PNG v odložišče"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiraj v odložišče"}},"encrypted":{"tooltip":"Vaše risbe so šifrirane od konca do konca, tako da jih strežniki Excalidraw nikoli ne bodo videli.","link":"Blog objava o šifriranju od konca do konca v Excalidraw"},"stats":{"angle":"Kot","element":"Element","elements":"Elementi","height":"Višina","scene":"Scena","selected":"Izbrano","storage":"Shramba","title":"Statistika za napredne uporabnike","total":"Skupaj","version":"Različica","versionCopy":"Kliknite za kopiranje","versionNotAvailable":"Različica ni na voljo","width":"Širina"},"toast":{"addedToLibrary":"Dodano v knjižnico","copyStyles":"Slogi kopirani.","copyToClipboard":"Kopirano v odložišče.","copyToClipboardAsPng":"Kopirano v odložišče kot PNG ({{exportSelection}}, {{exportColorScheme}})","fileSaved":"Datoteka shranjena.","fileSavedToFilename":"Shranjeno v {filename}","canvas":"platno","selection":"izbor","pasteAsSingleElement":"Uporabite {{shortcut}}, da prilepite kot en element,\\n ali prilepite v obstoječ urejevalnik besedil","unableToEmbed":"Vdelava tega URL-ja trenutno ni dovoljena. Ustvarite vprašanje na GitHub-u in prosite za vmestitev URL-ja na seznam dovoljenih","unrecognizedLinkFormat":"Povezava, ki ste jo vdelali, se ne ujema s pričakovano obliko. Poskusite prilepiti niz za vdelavo, ki ste ga prejeli na izvorni strani"},"colors":{"transparent":"Prosojno","black":"Črna","white":"Bela","red":"Rdeča","pink":"Roza","grape":"Grozdje","violet":"Vijolična","gray":"Siva","blue":"Modra","cyan":"Cijan","teal":"Turkizna","green":"Zelena","yellow":"Rumena","orange":"Oranžna","bronze":"Bronasta"},"welcomeScreen":{"app":{"center_heading":"Vsi vaši podatki so shranjeni lokalno v vašem brskalniku.","center_heading_plus":"Ste namesto tega želeli odpreti Excalidraw+?","menuHint":"Izvoz, nastavitve, jeziki, ..."},"defaults":{"menuHint":"Izvoz, nastavitve in več ...","center_heading":"Diagrami. Enostavno.","toolbarHint":"Izberi orodje in začni z risanjem!","helpHint":"Bližnjice in pomoč"}},"colorPicker":{"mostUsedCustomColors":"Najpogosteje uporabljene barve po meri","colors":"Barve","shades":"Odtenki","hexCode":"Hex koda","noShades":"Odtenki za to barvo niso na voljo"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Izvozi kot sliko","button":"Izvozi kot sliko","description":"Izvozite podatke scene kot sliko, iz katere jo lahko pozneje uvozite."},"saveToDisk":{"title":"Shrani na disk","button":"Shrani na disk","description":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite."},"excalidrawPlus":{"title":"Excalidraw+","button":"Izvozi v Excalidraw+","description":"Shrani sceno v svoj delovni prostor Excalidraw+."}},"modal":{"loadFromFile":{"title":"Naloži iz datoteke","button":"Naloži iz datoteke","description":"Nalaganje iz datoteke bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."},"shareableLink":{"title":"Naloži iz povezave","button":"Zamenjaj mojo vsebino","description":"Nalaganje zunanje risbe bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/sv-SE-json-2f362899d3ac4089534f.js b/public/excalidraw/excalidraw-assets-dev/locales/sv-SE-json-2f362899d3ac4089534f.js new file mode 100644 index 0000000..c5f2548 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/sv-SE-json-2f362899d3ac4089534f.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/sv-SE-json"],{ + +/***/ "../../locales/sv-SE.json": +/*!********************************!*\ + !*** ../../locales/sv-SE.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Klistra in","pasteAsPlaintext":"Klistra som oformaterad text","pasteCharts":"Klistra in diagram","selectAll":"Markera alla","multiSelect":"Lägg till element till markering","moveCanvas":"Flytta canvas","cut":"Klipp ut","copy":"Kopiera","copyAsPng":"Kopiera till urklipp som PNG","copyAsSvg":"Kopiera till urklipp som SVG","copyText":"Kopiera till urklipp som text","bringForward":"Flytta framåt","sendToBack":"Flytta underst","bringToFront":"Flytta främst","sendBackward":"Skicka bakåt","delete":"Ta bort","copyStyles":"Kopiera stil","pasteStyles":"Klistra in stil","stroke":"Linje","background":"Bakgrund","fill":"Fyllnad","strokeWidth":"Linjebredd","strokeStyle":"Linjestil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Streckad","strokeStyle_dotted":"Punktad","sloppiness":"Slarvighet","opacity":"Genomskinlighet","textAlign":"Textjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhuvuden","arrowhead_none":"Inga","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Punkt","arrowhead_triangle":"Triangel","fontSize":"Teckenstorlek","fontFamily":"Teckensnitt","addWatermark":"Lägg till \\"Skapad med Excalidraw\\"","handDrawn":"Handritad","normal":"Normal","code":"Kod","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Mycket stor","solid":"Solid","hachure":"Skraffering","zigzag":"Sicksack","crossHatch":"Skraffera med kors","thin":"Tunn","bold":"Fet","left":"Vänster","center":"Centrera","right":"Höger","extraBold":"Extra fet","architect":"Arkitekt","artist":"Artist","cartoonist":"Serietecknare","fileTitle":"Filnamn","colorPicker":"Färgväljare","canvasColors":"Används på canvas","canvasBackground":"Canvas-bakgrund","drawingCanvas":"Ritar canvas","layers":"Lager","actions":"Åtgärder","language":"Språk","liveCollaboration":"Samarbeta live...","duplicateSelection":"Duplicera","untitled":"Namnlös","name":"Namn","yourName":"Ditt namn","madeWithExcalidraw":"Skapad med Excalidraw","group":"Gruppera markering","ungroup":"Avgruppera markering","collaborators":"Medarbetare","showGrid":"Visa rutnät","addToLibrary":"Lägg till i biblioteket","removeFromLibrary":"Ta bort från bibliotek","libraryLoadingMessage":"Laddar bibliotek…","libraries":"Bläddra i bibliotek","loadingScene":"Laddar skiss…","align":"Justera","alignTop":"Justera överkant","alignBottom":"Justera underkant","alignLeft":"Justera vänster","alignRight":"Justera höger","centerVertically":"Centrera vertikalt","centerHorizontally":"Centrera horisontellt","distributeHorizontally":"Fördela horisontellt","distributeVertically":"Fördela vertikalt","flipHorizontal":"Vänd horisontellt","flipVertical":"Vänd vertikalt","viewMode":"Visningsläge","share":"Dela","showStroke":"Visa färgväljare för linjefärg","showBackground":"Visa färgväljare för bakgrundsfärg","toggleTheme":"Växla tema","personalLib":"Personligt bibliotek","excalidrawLib":"Excalidraw bibliotek","decreaseFontSize":"Minska fontstorleken","increaseFontSize":"Öka fontstorleken","unbindText":"Koppla bort text","bindText":"Bind texten till behållaren","createContainerFromText":"Radbryt text i en avgränsad yta","link":{"edit":"Redigera länk","editEmbed":"Redigera länk & bädda in","create":"Skapa länk","createEmbed":"Skapa länk & bädda in","label":"Länk","labelEmbed":"Länka & bädda in","empty":"Ingen länk är angiven"},"lineEditor":{"edit":"Redigera linje","exit":"Avsluta linjeredigerare"},"elementLock":{"lock":"Lås","unlock":"Lås upp","lockAll":"Lås alla","unlockAll":"Lås upp alla"},"statusPublished":"Publicerad","sidebarLock":"Håll sidofältet öppet","selectAllElementsInFrame":"Markera alla element i rutan","removeAllElementsFromFrame":"Ta bort alla element från rutan","eyeDropper":"Välj färg från canvas"},"library":{"noItems":"Inga objekt tillagda ännu...","hint_emptyLibrary":"Välj ett objekt på canvasen för att lägga till det här, eller installera ett bibliotek från det publika arkivet, nedan.","hint_emptyPrivateLibrary":"Välj ett objekt på canvasen för att lägga till det här."},"buttons":{"clearReset":"Återställ canvasen","exportJSON":"Exportera till fil","exportImage":"Exportera bild...","export":"Spara till...","copyToClipboard":"Kopiera till urklipp","save":"Spara till aktuell fil","saveAs":"Spara som","load":"Öppna","getShareableLink":"Hämta delbar länk","close":"Stäng","selectLanguage":"Välj språk","scrollBackToContent":"Bläddra tillbaka till innehållet","zoomIn":"Zooma in","zoomOut":"Zooma ut","resetZoom":"Återställ zoom","menu":"Meny","done":"Klart","edit":"Redigera","undo":"Ångra","redo":"Gör om","resetLibrary":"Återställ bibliotek","createNewRoom":"Skapa ett nytt rum","fullScreen":"Helskärm","darkMode":"Mörkt läge","lightMode":"Ljust läge","zenMode":"Zen-läge","objectsSnapMode":"Fäst mot objekt","exitZenMode":"Gå ur zen-läge","cancel":"Avbryt","clear":"Rensa","remove":"Ta bort","embed":"Växla inbäddning","publishLibrary":"Publicera","submit":"Skicka","confirm":"Bekräfta","embeddableInteractionButton":"Klicka för att interagera"},"alerts":{"clearReset":"Detta rensar hela canvasen. Är du säker?","couldNotCreateShareableLink":"Kunde inte skapa delbar länk.","couldNotCreateShareableLinkTooBig":"Kunde inte skapa delbar länk: skissen är för stor","couldNotLoadInvalidFile":"Kunde inte ladda ogiltig fil","importBackendFailed":"Importering från backend misslyckades.","cannotExportEmptyCanvas":"Kan inte exportera tom canvas.","couldNotCopyToClipboard":"Kunde inte kopiera till urklipp.","decryptFailed":"Kunde inte avkryptera data.","uploadedSecurly":"Uppladdning har säkrats med kryptering från ände till ände. vilket innebär att Excalidraw server och tredje part inte kan läsa innehållet.","loadSceneOverridePrompt":"Laddning av extern skiss kommer att ersätta ditt befintliga innehåll. Vill du fortsätta?","collabStopOverridePrompt":"Att stoppa sessionen kommer att skriva över din föregående, lokalt lagrade skiss. Är du säker?\\n\\n(Om du vill behålla din lokala skiss, stäng bara webbläsarfliken istället.)","errorAddingToLibrary":"Kunde inte lägga till objekt i biblioteket","errorRemovingFromLibrary":"Kunde inte ta bort objekt från biblioteket","confirmAddLibrary":"Detta kommer att lägga till {{numShapes}} form(er) till ditt bibliotek. Är du säker?","imageDoesNotContainScene":"Den här bilden verkar inte innehålla någon skissdata. Har du aktiverat inbäddning av skiss under export?","cannotRestoreFromImage":"Skiss kunde inte återställas från denna bildfil","invalidSceneUrl":"Det gick inte att importera skiss från den angivna webbadressen. Antingen har den fel format, eller så innehåller den ingen giltig Excalidraw JSON data.","resetLibrary":"Detta kommer att rensa ditt bibliotek. Är du säker?","removeItemsFromsLibrary":"Ta bort {{count}} objekt från biblioteket?","invalidEncryptionKey":"Krypteringsnyckeln måste vara 22 tecken. Livesamarbetet är inaktiverat.","collabOfflineWarning":"Ingen internetanslutning tillgänglig.\\nDina ändringar kommer inte att sparas!"},"errors":{"unsupportedFileType":"Filtypen stöds inte.","imageInsertError":"Kunde inte infoga bild. Försök igen senare...","fileTooBig":"Filen är för stor. Maximal tillåten storlek är {{maxSize}}.","svgImageInsertError":"Kunde inte infoga SVG-bild. SVG-koden ser ogiltig ut.","failedToFetchImage":"Kunde inte hämta bilden.","invalidSVGString":"Ogiltig SVG.","cannotResolveCollabServer":"Det gick inte att ansluta till samarbets-servern. Ladda om sidan och försök igen.","importLibraryError":"Kunde inte ladda bibliotek","collabSaveFailed":"Det gick inte att spara i backend-databasen. Om problemen kvarstår bör du spara filen lokalt för att se till att du inte förlorar ditt arbete.","collabSaveFailed_sizeExceeded":"Det gick inte att spara till backend-databasen, whiteboarden verkar vara för stor. Du bör spara filen lokalt för att du inte ska förlora ditt arbete.","brave_measure_text_error":{"line1":"Det ser ut som om du använder Brave-webbläsaren med Aggressivt Blockera fingeravtryck inställningen aktiverad.","line2":"Detta kan resultera i trasiga Textelement i dina ritningar.","line3":"Vi rekommenderar starkt att du inaktiverar den här inställningen. Du kan följa dessa steg för att inaktivera den.","line4":"Om inaktivering av denna inställning inte åtgärdar visningen av textelement, öppna ett ärende på vår GitHub, eller skriv till oss på Discord"},"libraryElementTypeError":{"embeddable":"Inbäddbara element kan inte läggas till i biblioteket.","image":"Stöd för att lägga till bilder till biblioteket kommer snart!"}},"toolBar":{"selection":"Markering","image":"Infoga bild","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellips","arrow":"Pil","line":"Linje","freedraw":"Rita","text":"Text","library":"Bibliotek","lock":"Håll valt verktyg aktivt efter ritande","penMode":"Pennläge - förhindra touch","link":"Lägg till / Uppdatera länk för en vald form","eraser":"Radergummi","frame":"Rutverktyg","embeddable":"Bädda in (web)","laser":"Laserpekare","hand":"Hand (panoreringsverktyg)","extraTools":"Fler verktyg"},"headings":{"canvasActions":"Canvas-åtgärder","selectedShapeActions":"Valda formåtgärder","shapes":"Former"},"hints":{"canvasPanning":"För att flytta whiteboarden, håll mushjulet eller mellanslagstangenten medan du drar eller använd handverktyget","linearElement":"Klicka för att starta flera punkter, dra för en linje","freeDraw":"Klicka och dra, släpp när du är klar","text":"Tips: du kan också lägga till text genom att dubbelklicka var som helst med markeringsverktyget","embeddable":"Klicka-dra för att skapa en webbplats-inbäddning","text_selected":"Dubbelklicka eller tryck ENTER för att redigera text","text_editing":"Tryck Escape eller CtrlOrCmd + ENTER för att slutföra redigeringen","linearElementMulti":"Klicka på sista punkten eller tryck Escape eller Enter för att avsluta","lockAngle":"Du kan begränsa vinkeln genom att hålla SKIFT","resize":"Du kan behålla proportioner genom att hålla SHIFT medan du ändrar storlek,\\nhåller du ALT ändras storlek relativt mitten","resizeImage":"Du kan ändra storlek fritt genom att hålla SHIFT,\\nhåll ALT för att ändra storlek från mitten","rotate":"Du kan begränsa vinklar genom att hålla SHIFT medan du roterar","lineEditor_info":"Håll Ctrl/Cmd och dubbelklicka eller tryck på Ctrl/Cmd + Enter för att redigera punkter","lineEditor_pointSelected":"Tryck på Ta bort för att ta bort punkt(er), Ctrl + D eller Cmd + D för att duplicera, eller dra för att flytta","lineEditor_nothingSelected":"Välj en punkt att redigera (håll SHIFT för att välja flera),\\neller håll ned Alt och klicka för att lägga till nya punkter","placeImage":"Klicka för att placera bilden, eller klicka och dra för att ställa in dess storlek manuellt","publishLibrary":"Publicera ditt eget bibliotek","bindTextToElement":"Tryck på Enter för att lägga till text","deepBoxSelect":"Håll Ctrl eller Cmd för att djupvälja, och för att förhindra att dra","eraserRevert":"Håll Alt för att återställa de element som är markerade för borttagning","firefox_clipboard_write":"Denna funktion kan sannolikt aktiveras genom att ställa in \\"dom.events.asyncClipboard.clipboardItem\\" flaggan till \\"true\\". För att ändra webbläsarens flaggor i Firefox, besök \\"about:config\\" sidan.","disableSnapping":"Håll Ctrl eller Cmd för att inaktivera fästning"},"canvasError":{"cannotShowPreview":"Kan inte visa förhandsgranskning","canvasTooBig":"Canvasen kan vara för stor.","canvasTooBigTip":"Tips: prova att flytta de mest avlägsna elementen lite närmare varandra."},"errorSplash":{"headingMain":"Ett fel uppstod. Försök ","clearCanvasMessage":"Om omladdning inte fungerar, försök ","clearCanvasCaveat":" Detta kommer att leda till förlust av arbete ","trackedToSentry":"Felet med identifieraren {{eventId}} spårades på vårt system.","openIssueMessage":"Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.","sceneContent":"Skissinnehåll:"},"roomDialog":{"desc_intro":"Du kan bjuda in personer till din nuvarande skiss för att samarbeta med dig.","desc_privacy":"Oroa dig inte, sessionen använder kryptering från ände till ände, så vad du än ritar kommer att förbli privat. Inte ens vår server kommer att kunna se vad du skissar.","button_startSession":"Starta sessionen","button_stopSession":"Stoppa session","desc_inProgressIntro":"Nu pågår en live-samarbetssession.","desc_shareLink":"Dela denna länk med någon du vill samarbeta med:","desc_exitSession":"Att avbryta sessionen kommer att koppla bort dig från rummet, men du kommer att kunna fortsätta arbeta med skissen, lokalt. Observera att detta inte påverkar andra människor, och de kommer fortfarande att kunna samarbeta på deras version.","shareTitle":"Delta i en live-samarbetssession på Excalidraw"},"errorDialog":{"title":"Fel"},"exportDialog":{"disk_title":"Spara till disk","disk_details":"Exportera skissdata till en fil som du kan importera från senare.","disk_button":"Spara till fil","link_title":"Delbar länk","link_details":"Exportera som en skrivskyddad länk.","link_button":"Exportera till länk","excalidrawplus_description":"Spara skissen till din Excalidraw+ arbetsyta.","excalidrawplus_button":"Exportera","excalidrawplus_exportError":"Det gick inte att exportera till Excalidraw+ just nu..."},"helpDialog":{"blog":"Läs vår blogg","click":"klicka","deepSelect":"Djupval","deepBoxSelect":"Djupval inom boxen, och förhindra att dra","curvedArrow":"Böjd pil","curvedLine":"Böjd linje","documentation":"Dokumentation","doubleClick":"dubbelklicka","drag":"dra","editor":"Redigerare","editLineArrowPoints":"Redigera linje-/pilpunkter","editText":"Redigera text / lägg till etikett","github":"Hittat ett problem? Rapportera","howto":"Följ våra guider","or":"eller","preventBinding":"Förhindra pilbindning","tools":"Verktyg","shortcuts":"Tangentbordsgenvägar","textFinish":"Slutför redigering (text)","textNewLine":"Lägg till ny rad (text)","title":"Hjälp","view":"Visa","zoomToFit":"Zooma för att rymma alla element","zoomToSelection":"Zooma till markering","toggleElementLock":"Lås/Lås upp valda","movePageUpDown":"Flytta sida upp/ner","movePageLeftRight":"Flytta sida vänster/höger"},"clearCanvasDialog":{"title":"Rensa canvas"},"publishDialog":{"title":"Publicera bibliotek","itemName":"Objektnamn","authorName":"Upphovsmannens namn","githubUsername":"GitHub-användarnamn","twitterUsername":"Twitter-användarnamn","libraryName":"Biblioteksnamn","libraryDesc":"Biblioteksbeskrivning","website":"Webbplats","placeholder":{"authorName":"Ditt namn eller användarnamn","libraryName":"Namn på ditt bibliotek","libraryDesc":"Beskrivning av ditt bibliotek för att hjälpa människor att förstå dess användning","githubHandle":"Github-användarnamn (valfritt), så att du kan redigera biblioteket när du har skickat in det för granskning","twitterHandle":"Twitter-användarnamn (valfritt), så vi vet vem att kreditera när du marknadsför på Twitter","website":"Länk till din personliga webbplats eller någon annan (valfritt)"},"errors":{"required":"Obligatoriskt","website":"Ange en giltig URL"},"noteDescription":"Skicka ditt bibliotek för att inkluderas i det offentliga bibliotekets arkivför andra människor att använda i sina skisser.","noteGuidelines":"Biblioteket måste godkännas manuellt först. Vänligen läs riktlinjerna innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte.","noteLicense":"Genom att skicka in godkänner du att biblioteket kommer att publiceras under MIT-licens, vilket kort sagt betyder att vem som helst kan använda det utan restriktioner.","noteItems":"Varje objekt måste ha sitt eget namn så att det är filtrerbart. Följande objekt kommer att inkluderas:","atleastOneLibItem":"Välj minst ett biblioteksobjekt för att komma igång","republishWarning":"Obs: några av de markerade objekten är redan markerade som publicerade/skickade. Du bör endast skicka objekt igen när du uppdaterar ett befintligt bibliotek eller inlämning."},"publishSuccessDialog":{"title":"Bibliotek inskickat","content":"Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa statushär"},"confirmDialog":{"resetLibrary":"Återställ bibliotek","removeItemsFromLib":"Ta bort markerade objekt från biblioteket"},"imageExportDialog":{"header":"Exportera bild","label":{"withBackground":"Bakgrund","onlySelected":"Endast markerade","darkMode":"Mörkt läge","embedScene":"Bädda in skiss","scale":"Skala","padding":"Utfyllnad"},"tooltip":{"embedScene":"Skissdata kommer att sparas i den exporterade PNG/SVG-filen så att skissen kan återställas från den.\\nKommer att öka exporterad filstorlek."},"title":{"exportToPng":"Exportera till PNG","exportToSvg":"Exportera till SVG","copyPngToClipboard":"Kopiera PNG till urklipp"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiera till urklipp"}},"encrypted":{"tooltip":"Dina skisser är krypterade från ände till ände så Excalidraws servrar kommer aldrig att se dem.","link":"Blogginlägg om kryptering från ände till ände i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Höjd","scene":"Skiss","selected":"Valda","storage":"Lagring","title":"Statistik för nördar","total":"Totalt","version":"Version","versionCopy":"Klicka för att kopiera","versionNotAvailable":"Versionen är inte tillgänglig","width":"Bredd"},"toast":{"addedToLibrary":"Tillagd i biblioteket","copyStyles":"Kopierade stilar.","copyToClipboard":"Kopierad till urklipp.","copyToClipboardAsPng":"Kopierade {{exportSelection}} till urklipp som PNG\\n({{exportColorScheme}})","fileSaved":"Fil sparad.","fileSavedToFilename":"Sparad till {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"Använd {{shortcut}} för att klistra in som ett enda element,\\neller klistra in i en befintlig textredigerare","unableToEmbed":"Att bädda in denna webbadress är för närvarande inte tillåtet. Skapa en problemrapport på GitHub för att begära att webbadressen vitlistas.","unrecognizedLinkFormat":"Länken du bäddade in matchar inte det förväntade formatet. Försök klistra in \'embed\'-strängen som tillhandahålls av källwebbplatsen"},"colors":{"transparent":"Genomskinlig","black":"Svart","white":"Vit","red":"Röd","pink":"Rosa","grape":"Lila","violet":"Violett","gray":"Grå","blue":"Blå","cyan":"Turkos","teal":"Blågrön","green":"Grön","yellow":"Gul","orange":"Orange","bronze":"Brons"},"welcomeScreen":{"app":{"center_heading":"All data sparas lokalt i din webbläsare.","center_heading_plus":"Ville du gå till Excalidraw+ istället?","menuHint":"Exportera, inställningar, språk, ..."},"defaults":{"menuHint":"Exportera, inställningar och mer...","center_heading":"Förenklade. Diagram.","toolbarHint":"Välj ett verktyg & börja rita!","helpHint":"Genvägar & hjälp"}},"colorPicker":{"mostUsedCustomColors":"Mest frekvent använda anpassade färger","colors":"Färger","shades":"Nyanser","hexCode":"Hex-kod","noShades":"Inga nyanser tillgängliga för denna färg"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportera som bild","button":"Exportera som bild","description":"Exportera scendata som en bild från vilken du kan importera senare."},"saveToDisk":{"title":"Spara till disk","button":"Spara till disk","description":"Exportera scendata till en fil från vilken du kan importera senare."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportera till Excalidraw+","description":"Spara skissen till din Excalidraw+ arbetsyta."}},"modal":{"loadFromFile":{"title":"Läs in från fil","button":"Läs in från fil","description":"Laddar från en fil kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först med hjälp av ett av alternativen nedan."},"shareableLink":{"title":"Läs in från länk","button":"Ersätt mitt innehåll","description":"Inläsning av en extern ritning kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först genom att använda ett av alternativen nedan."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/ta-IN-json-07623a485202da63a84b.js b/public/excalidraw/excalidraw-assets-dev/locales/ta-IN-json-07623a485202da63a84b.js new file mode 100644 index 0000000..24e278a --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/ta-IN-json-07623a485202da63a84b.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/ta-IN-json"],{ + +/***/ "../../locales/ta-IN.json": +/*!********************************!*\ + !*** ../../locales/ta-IN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"ஒட்டு","pasteAsPlaintext":"அலங்காரமின்றி ஒட்டு","pasteCharts":"விளக்கப்படங்களை ஒட்டு","selectAll":"எல்லாம் தேர்ந்தெடு","multiSelect":"உறுப்பைத் தெரிவில் சேர்","moveCanvas":"கித்தானை நகர்த்து","cut":"வெட்டு","copy":"நகலெடு","copyAsPng":"நகலகத்திற்கு PNG ஆக நகலெடு","copyAsSvg":"நகலகத்திற்கு SVG ஆக நகலெடு","copyText":"நகலகத்திற்கு உரையாக நகலெடு","bringForward":"முன்நோக்கி கொண்டுவா","sendToBack":"பின்னே அனுப்பு","bringToFront":"முன்னே கொண்டுவா","sendBackward":"பின்நோக்கி அனுப்பு","delete":"அழி","copyStyles":"ஒயில்களை நகலெடு","pasteStyles":"ஒயில்களை ஒட்டு","stroke":"கீறல்","background":"பின்புலம்","fill":"நிரப்பல்","strokeWidth":"கீறல் அகலம்","strokeStyle":"கீறல் ஒயில்","strokeStyle_solid":"திடமான","strokeStyle_dashed":"கோடிட்ட","strokeStyle_dotted":"புள்ளியிட்ட","sloppiness":"அசட்டுத்தனம்","opacity":"ஒளிபுகாவியல்பு","textAlign":"உரைச் சீரமைப்பு","edges":"விளிம்புகள்","sharp":"கூர்மை","round":"வட்டம்","arrowheads":"அம்புத்தலைகள்","arrowhead_none":"ஏதுமில்லை","arrowhead_arrow":"அம்பு","arrowhead_bar":"பட்டை","arrowhead_dot":"புள்ளி","arrowhead_triangle":"முக்கோணம்","fontSize":"எழுத்துரு அளவு","fontFamily":"எழுத்துரு குடும்பம்","addWatermark":"\\"எக்ஸ்கேலிட்ரா கொண்டு ஆனது\\"-ஐச் சேர்","handDrawn":"கையால்-வரைந்த","normal":"இயல்பு","code":"குறியீடு","small":"சிறிய","medium":"நடுத்தரமான","large":"பெரிய","veryLarge":"மிகப் பெரிய","solid":"திடமான","hachure":"மலைக்குறிக்கோடு","zigzag":"கோணல்மாணல்","crossHatch":"குறுக்குகதவு","thin":"மெல்லிய","bold":"பட்டை","left":"இடது","center":"மையம்","right":"வலது","extraBold":"கூடுதல் பட்டை","architect":"கட்டடக்கலைஞர்","artist":"கலைஞர்","cartoonist":"கேலிச்சித்திர ஓவியர்","fileTitle":"கோப்புப் பெயர்","colorPicker":"நிறத் தேர்வி","canvasColors":"கித்தானில் பயன்படுத்தப்பட்டது","canvasBackground":"கித்தான் பின்னணி","drawingCanvas":"கித்தான் வரைகிறது","layers":"அடுக்குகள்","actions":"செயல்கள்","language":"மொழி","liveCollaboration":"நேரடி கூட்டுப்பணி...","duplicateSelection":"நகலாக்கு","untitled":"தலைப்பற்றது","name":"பெயர்","yourName":"உங்கள் பெயர்","madeWithExcalidraw":"எக்ஸ்கேலிட்ரா கொண்டு ஆனது","group":"தேர்ந்ததை ஒன்றிணை","ungroup":"தேர்ந்ததைப் பிரி","collaborators":"கூட்டுப்பணியினர்","showGrid":"கட்டதைக் காட்டு","addToLibrary":"நூலகத்தில் சேர்","removeFromLibrary":"நூலகத்திலிருந்து நீக்கு","libraryLoadingMessage":"நூலகத்தை ஏற்றுகிறது…","libraries":"நூலகங்களை உலாவு","loadingScene":"காட்சியை ஏற்றுகிறது…","align":"சீரமை","alignTop":"மேலே சீரமை","alignBottom":"கீழே சீரமை","alignLeft":"இடதில் சீரமை","alignRight":"வலதில் சீரமை","centerVertically":"செங்குத்தாக மையப்படுத்து","centerHorizontally":"கிடைமட்டமாக மையப்படுத்து","distributeHorizontally":"கிடைமட்டமாக விநியோகி","distributeVertically":"செங்குத்தாக விநியோகி","flipHorizontal":"கிடைமட்டமாக புரட்டு","flipVertical":"செங்குத்தாக புரட்டு","viewMode":"பார்வை பயன்முறை","share":"பகிர்","showStroke":"கீறல் நிற எடுப்பானைக் காட்டு","showBackground":"பின்னணி நிற எடுப்பானைக் காட்டு","toggleTheme":"தோற்றத்தை நிலைமாற்று","personalLib":"தனக்குரிய நூலகம்","excalidrawLib":"எக்ஸ்கேலிட்ரா நூலகம்","decreaseFontSize":"எழுத்துரு அளவைக் குறை","increaseFontSize":"எழுத்துரு அளவை அதிகரி","unbindText":"உரையைப் பிணைவவிழ்","bindText":"உரையைக் கொள்கலனுக்குப் பிணை","createContainerFromText":"உரையைக் கொள்கலனுள் சுருட்டு","link":{"edit":"தொடுப்பைத் திருத்து","editEmbed":"","create":"தொடுப்பைப் படை","createEmbed":"","label":"தொடுப்பு","labelEmbed":"","empty":""},"lineEditor":{"edit":"தொடுப்பைத் திருத்து","exit":"வரி திருத்தியிலிருந்து வெளியேறு"},"elementLock":{"lock":"பூட்டு","unlock":"பூட்டவிழ்","lockAll":"எல்லாம் பூட்டு","unlockAll":"எல்லாம் பூட்டவிழ்"},"statusPublished":"வெளியிடப்பட்டது","sidebarLock":"பக்கப்பட்டையைத் திறந்தே வை","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"கித்தானிலிருந்து நிறம் தேர்ந்தெடு"},"library":{"noItems":"இதுவரை உருப்படிகள் சேரக்கப்படவில்லை...","hint_emptyLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு, அல்லது கீழுள்ள பொது களஞ்சியத்திலிருந்து நூலகத்தை நிறுவு.","hint_emptyPrivateLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு."},"buttons":{"clearReset":"கித்தானை அகரமாக்கு","exportJSON":"கோப்புக்கு ஏற்றுமதிசெய்","exportImage":"படத்தை ஏற்றுமதிசெய்...","export":"இதில் சேமி...","copyToClipboard":"நகலகத்திற்கு நகலெடு","save":"தற்போதைய கோப்புக்குச் சேமி","saveAs":"இப்படி சேமி","load":"திற","getShareableLink":"பகிரக்கூடிய தொடுப்பைப் பெறு","close":"மூடு","selectLanguage":"மொழியைத் தேர்ந்தெடு","scrollBackToContent":"உருட்டி உள்ளடக்கத்துக்குத் திரும்பு","zoomIn":"பெரிதாக்கு","zoomOut":"சிறிதாக்கு","resetZoom":"உருவளவை அகரமாக்கு","menu":"சிறுபட்டி","done":"முடிந்தது","edit":"திருத்து","undo":"செயல்தவிர்","redo":"மீண்டும்செய்","resetLibrary":"நூலகத்தை அகரமாக்கு","createNewRoom":"புதிய அறையை உருவாக்கு","fullScreen":"முழுத் திரை","darkMode":"கருமை பயன்முறை","lightMode":"வெளிர்ந்த பயன்முறை","zenMode":"ஜென் பயன்முறை","objectsSnapMode":"","exitZenMode":"ஜென் பயன்முறையை விலகு","cancel":"ரத்துசெய்","clear":"துடை","remove":"நீக்கு","embed":"","publishLibrary":"பிரசுரி","submit":"சமர்ப்பி","confirm":"உறுதிசெய்","embeddableInteractionButton":""},"alerts":{"clearReset":"இது முழு கித்தானையும் துடைக்கும். நீங்கள் உறுதியா?","couldNotCreateShareableLink":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை.","couldNotCreateShareableLinkTooBig":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை: காட்சி மிகப்பெரிதாக உள்ளது","couldNotLoadInvalidFile":"செல்லாத கோப்பை ஏற்ற முடியவில்லை","importBackendFailed":"தேகத்திலிருந்து இறக்குமதி தோல்வி.","cannotExportEmptyCanvas":"காலியான கித்தானை ஏற்றுமதிசெய்ய முடியாது.","couldNotCopyToClipboard":"நகலகத்திற்கு நகலெடுக்க முடியவில்லை.","decryptFailed":"தரவை மறைநீக்க முடியவில்லை.","uploadedSecurly":"பதிவேற்றம் இருமுனை மறையாகத்தால் பாதுகாக்கப்பட்டுள்ளது, எனவே எக்ஸ்கேலிட்ரா சேவையகமும் மூன்றாம் தரப்பினரும் உள்ளடக்கத்தை வாசிக்கமுடியாது.","loadSceneOverridePrompt":"வெளிப்புறச்சித்திரமேற்றல் இருக்கிற உள்ளடக்கத்தை இடங்கொள்ளும். தொடர விருப்பமா?","collabStopOverridePrompt":"அமர்வை நிறுத்துதல் முன்னர் அகமாக தேக்கிய உம் சித்திரத்தை மேலெழுதும். நீங்கள் உறுதியா?\\n\\n(உம் அக சித்திரத்தை வைக்கவேண்டுமெனில், சும்மா உலாவி தாவலை மூடுக அதற்குபதிலாக.)","errorAddingToLibrary":"உருப்படியை நூலகத்தில் சேர்க்க இயலா","errorRemovingFromLibrary":"உருப்படியை நூலகத்திலிருந்து நீக்க இயலா","confirmAddLibrary":"இதனால் {{numShapes}} வடிவம்(கள்) உம் நூலகத்தில் சேரும். நீங்கள் உறுதியா?","imageDoesNotContainScene":"இப்படத்தில் காட்சி தரவு ஏதும் இருப்பதுபோல் தெரியவில்லை. ஏற்றுமதியின்போது காட்சி உட்பதிதலை இயக்கினீரா?","cannotRestoreFromImage":"இப்படக்கோப்பிலிருந்து காட்சி மீட்டெடுக்கப்பட முடியாது","invalidSceneUrl":"வழங்கப்பட்ட உரலியிலிருந்து காட்சியை இறக்கவியலா. இது தவறான வடிவத்தில் உள்ளது, அ செல்லத்தக்க எக்ஸ்கேலிட்ரா JSON தரவைக் கொண்டில்லை.","resetLibrary":"இது உங்கள் நுலகத்தைத் துடைக்கும். நீங்கள் உறுதியா?","removeItemsFromsLibrary":"{{count}} உருப்படி(கள்)-ஐ உம் நூலகத்திலிருந்து அழிக்கவா?","invalidEncryptionKey":"மறையாக்க விசை 22 வரியுருக்கள் கொண்டிருக்கவேண்டும். நேரடி கூட்டுப்பணி முடக்கப்பட்டது.","collabOfflineWarning":"இணைய இணைப்பு இல்லை.\\nஉமது மாற்றங்கள் சேமிக்கப்படா!"},"errors":{"unsupportedFileType":"ஆதரிக்கப்படா கோப்பு வகை.","imageInsertError":"படத்தைப் புகுத்தவியலா. பிறகு மீண்டும் முயலவும்...","fileTooBig":"கோப்பு மிகப்பெரிது. அனுமதிக்கப்பட்ட அதிகபட்ச அளவு {{maxSize}}.","svgImageInsertError":"எஸ்விஜி படத்தைப் புகுத்தவியலா. எஸ்விஜியின் மார்க்அப் செல்லாததாக தெரிகிறது.","failedToFetchImage":"","invalidSVGString":"செல்லாத SVG.","cannotResolveCollabServer":"கூட்டுப்பணிச் சேவையகத்துடன் இணைக்க முடியவில்லை. பக்கத்தை மீளேற்றி மீண்டும் முயலவும்.","importLibraryError":"நூலகத்தை ஏற்ற முடியவில்லை","collabSaveFailed":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை. சிக்கல்கள் நீடித்தால், உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","collabSaveFailed_sizeExceeded":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை, கித்தான் மிகப்பெரிதாகத் தெரிகிறது. உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"தெரிவு","image":"படத்தைப் புகுத்து","rectangle":"செவ்வகம்","diamond":"வைரம்","ellipse":"நீள்வட்டம்","arrow":"அம்பு","line":"வரி","freedraw":"வரை","text":"உரை","library":"நூலகம்","lock":"தேர்ந்த கருவியை வரைந்த பின்பும் வைத்திரு","penMode":"பேனா - தடுப்பு தொடுதல்","link":"தேர்தெடுத்த வடிவத்திற்குத் தொடுப்பைச் சேர்/ புதுப்பி","eraser":"அழிப்பி","frame":"சட்டகம் கருவி","embeddable":"","laser":"","hand":"கை (பார்வை நகர்கும் கருவி)","extraTools":"மற்ற கருவிகள்"},"headings":{"canvasActions":"கித்தான் செயல்கள்","selectedShapeActions":"தேர்ந்த வடிவம் செயல்கள்","shapes":"வடிவங்கள்"},"hints":{"canvasPanning":"","linearElement":"பல புள்ளிகளைத் துவக்க சொடுக்கு, ஒற்றை வரிக்கு பிடித்திழு","freeDraw":"சொடுக்கி பிடித்திழு, முடித்ததும் விடுவி","text":"துணுக்குதவி: தெரிவு கருவி கொண்டு எங்காவது இரு-சொடுக்கி உரையைச் சேர்க்கலாம்","embeddable":"","text_selected":"உரையைத் திருத்த இரு-சொடுக்கு அ ENTERஐ அழுத்து","text_editing":"திருத்துவதை முடிக்க Escape அ CtrlOrCmd+ENTERஐ அழுத்து","linearElementMulti":"கடைசி புள்ளியில் சொடுக்கு அ முடிக்க Escape அ Enter அழுத்து","lockAngle":"SHIFTஐ அழுத்திப்பிடித்து கோணத்தை வற்புறுத்தலாம்","resize":"மறுஅளவிடுகையில் SHIFTஐ அழுத்திப்பிடித்து விகிதசமத்தை வற்புறுத்தலாம்,\\nமையத்திலிருந்து மறுஅளவிட ALTஐ அழுத்திப்பிடி","resizeImage":"SHIFTஐ நீண்டழுத்தி கட்டற்று அளவுமாற்றலாம்,\\nமையத்திலிருந்து அளவுமாற்ற ALTஐ நீண்டழுத்துக","rotate":"சுழற்றுகையில் SHIFTஐ அழுத்திப்பிடித்து கோணங்களை வற்புறுத்தலாம்","lineEditor_info":"","lineEditor_pointSelected":"புள்ளி(கள்)ஐ நீக்க Deleteஐ அழுத்து,\\nநகலாக்க CtrlOrCmd+D, அ நகர்த்த பிடித்திழு","lineEditor_nothingSelected":"திருத்த புள்ளியைத் தேர்ந்தெடு (பலவற்றை தேர SHIFTஐ அழுத்திப்பிடி),\\nஅ புதிய புள்ளிகளைச் சேர்க்க Altஐ அழுத்திப்பிடித்துச் சொடுக்கு","placeImage":"படத்தை வைக்கச் சொடுக்கு, அ கைமுறையாக அளவு அமைக்க சொடுக்கி பிடித்திழு","publishLibrary":"உம் சொந்த நூலகத்தைப் பிரசுரி","bindTextToElement":"உரையைச் சேர்க்க enterஐ அழுத்து","deepBoxSelect":"ஆழ்ந்துத் தேரவும் பிடித்திழுத்தலைத் தவிர்க்கவும் CtrlOrCmdஐ அழுத்திப்பிடி","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"முன்னோட்டம் காட்ட இயலவில்லை","canvasTooBig":"கித்தான் மிகப்பெரிதாக இருக்கலாம்.","canvasTooBigTip":"துணுக்குதவி: தூரத்திலுள்ள உறுப்புகளைப் நெருக்கமாக நகர்த்தப்பார்."},"errorSplash":{"headingMain":"பிழையைச் சந்தித்தீரா. முயலவும் ","clearCanvasMessage":"மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி ","clearCanvasCaveat":" இது வேலையை இழக்கக்கூடும் ","trackedToSentry":"இனங்காணியில் பிழை {{eventId}} எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.","openIssueMessage":"பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.","sceneContent":"காட்சி உள்ளடக்கம்:"},"roomDialog":{"desc_intro":"உம்முடன் கூட்டுப்பணிசெய்ய மக்களை தற்போதைய காட்சிக்கு அழைப்பிடலாம்.","desc_privacy":"வருந்தாதீர், அமர்வு இருமுனை மறையகத்தைப் பயன்படுத்துகிறது, ஆக நீங்கள் வரைவது எதுவும் தனிப்பட்டதாக இருக்கும். எங்கள் சேவையகத்தால் கூட நீங்கள் என்ன செய்ததைப் பார்க்கவியலாது.","button_startSession":"அமர்வைத் துவக்கு","button_stopSession":"அமர்வை நிறுத்து","desc_inProgressIntro":"நேரடி-கூட்டுப்பணி அமர்வு தற்போது செயலிலுள்ளது.","desc_shareLink":"கூட்டுப்பணிபுரிய விரும்பும் எவருனும் இத்தொடுப்பைப் பகிர்க:","desc_exitSession":"அமர்வை நிறுத்தல் உம்மை அறையிலிருந்து துண்டிக்கும், ஆனால் காட்சியுடன் தொடர்ந்து பணிபுரிய உம்மாலியலும், அகமாக. இது பிற மக்களைப் பாதிக்காதென்பதைக் குறி, மற்றும் அவர்களாலவர்களுடைய பதிப்பில் இன்னும் கூட்டுப்பணிபுரியவியலும்.","shareTitle":"எக்ஸ்கேலிட்ராவில் நேரடி கூட்டுப்பணி அமர்வில் சேர்"},"errorDialog":{"title":"பிழை"},"exportDialog":{"disk_title":"வட்டில் சேமி","disk_details":"காட்சித் தரவை நீங்கள் பின்னர் இறக்குமதி செய்யக்கூடிய ஒரு கோப்பிற்கு ஏற்றுமதிசெய்க.","disk_button":"கோப்பில் சேமி","link_title":"பகிரக்கூடிய தொடுப்பு","link_details":"வாசிக்க-மட்டும் தொடுப்பாக ஏற்றுமதிசெய்.","link_button":"தொடுப்புக்கு ஏற்றுமதிசெய்","excalidrawplus_description":"காட்சியை உன் எக்ஸ்கேலிட்ரா பணியிடத்தில் சேமி.","excalidrawplus_button":"ஏற்றுமதி","excalidrawplus_exportError":"இத்தருணத்தில் எக்ஸ்கேலிட்ரா+ க்கு ஏற்றுமதிசெய்ய முடியவில்லை..."},"helpDialog":{"blog":"எமது வலைப்பூவை வாசி","click":"சொடுக்கு","deepSelect":"ஆழ்ந்துத் தேர்","deepBoxSelect":"பெட்டியினுள் ஆழ்ந்துத் தேர், மற்றும் பிடித்திழுத்தலைத் தவிர்","curvedArrow":"வளைந்த அம்பு","curvedLine":"வளைந்த வரி","documentation":"ஆவணமாக்கல்","doubleClick":"இரு-சொடுக்கு","drag":"பிடித்திழு","editor":"திருத்தி","editLineArrowPoints":"","editText":"","github":"சிக்கலைக் கண்டீரா? சமர்ப்பி","howto":"எங்கள் கையேடுகளைப் பின்பற்றுக","or":"அ","preventBinding":"அம்பு பிணைதலைத் தவிர்","tools":"கருவிகள்","shortcuts":"விசைப்பலகை குறுக்குவழிகள்","textFinish":"திருத்துதலை முடி (உரை திருத்தி)","textNewLine":"புதிய வரியைச் சேர் (உரை திருத்தி)","title":"உதவி","view":"பார்","zoomToFit":"அனைத்துறுப்புகளும் பொருந்தும்படி விரிவாக்கு","zoomToSelection":"தெரிவுக்கு விரிவாக்கு","toggleElementLock":"தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்","movePageUpDown":"மேலே/கீழே நகர்த்தவும்","movePageLeftRight":"இடது/வலது பக்கம் நகர்த்தவும்"},"clearCanvasDialog":{"title":"கித்தானைத் துடை"},"publishDialog":{"title":"நூலகத்தைப் பிரசுரி","itemName":"உருப்படியின் பெயர்","authorName":"ஆசிரியர் பெயர்","githubUsername":"GitHub பயனர்பெயர்","twitterUsername":"டுவிட்டர் பயனர்பெயர்","libraryName":"நூலக பெயர்","libraryDesc":"நூலக விவரிப்பு","website":"வலைத்தளம்","placeholder":{"authorName":"உம் பெயர் அ பயனர்பெயர்","libraryName":"உம் நூலகத்தின் பெயர்","libraryDesc":"உம் நூலகத்தின் விவரிப்பு இதன் பயன்பாட்டை மக்கள் புரிந்துகொள்ளவுதவ","githubHandle":"GitHub கைப்பிடி (விரும்பினால்), ஆதலால் நீங்கள் நூலகத்தை மதிப்பாய்விற்காக சமர்ப்பித்தவுடன் திருத்தமுடியும்","twitterHandle":"டுவிட்டர் பயனர்பெயர் (விரும்பினால்), ஆதலால் டுவிட்டரில் முன்னிறுத்தும்போது யாமெவரைப் புகழ்வதென்றறிவோம்","website":"உமக்குரிய வலைத்தளத்திற்கு அ வேறெங்கிற்குமான தொடுப்பு (விரும்பினால்)"},"errors":{"required":"தேவைப்டுகிறது","website":"செல்லத்தக்க உரலியை உள்ளிடு"},"noteDescription":"உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு பொது நூலக களஞ்சியத்தில்பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த.","noteGuidelines":"நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் வழிகாட்டுதல்களைச் சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல.","noteLicense":"சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் MIT உரிமம், சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது.","noteItems":"வடிக்கட்டக்கூடியதாகவிருக்க ஒவ்வொரு நூலகவுருப்படிக்கும் சொந்த பெயர் இருக்கவேண்டும். பின்வரும் நூலகவுருப்படிகள் உள்ளடக்கப்படும்:","atleastOneLibItem":"ஆரம்பிக்க ஒரு நூலக உருப்படியையாவது தேர்ந்தெடுக்கவும்","republishWarning":""},"publishSuccessDialog":{"title":"நூலகம் சமர்ப்பிக்கப்பட்டது","content":"நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்இங்கே"},"confirmDialog":{"resetLibrary":"நூலகத்தை அகரமாக்கு","removeItemsFromLib":"நூலகத்திலிருந்து தேர்ந்தெடுத்த உருப்படிகளை நீக்கு"},"imageExportDialog":{"header":"படத்தை ஏற்றுமதிதல","label":{"withBackground":"பின்னணி","onlySelected":"தேர்ந்ததை மட்டும்","darkMode":"இருள் பயன்முறை","embedScene":"காட்சியை உட்பொதி","scale":"அளவுகோல்","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNGக்கு ஏற்றுமதிசெய்","exportToSvg":"SVGக்கு ஏற்றுமதிசெய்","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"உம் சித்திரங்கள் இருமுனை மறையாக்கம் செய்யப்பட்டவையாதலால் எக்ஸ்கேலிட்ராவின் சேவையகங்கள் அவற்றை ஒருபோதும் பார்க்கா.","link":"எக்ஸ்கேலிட்ராவில் இருமுனை மறையாக்கம் மீதான வலைப்பூ இடுகை"},"stats":{"angle":"கோணம்","element":"உறுப்பு","elements":"உறுப்புகள்","height":"உயரம்","scene":"காட்சி","selected":"தேர்ந்தவை","storage":"சேமிப்பகம்","title":"மேதாவிகளுக்கான புள்ளிவிவரங்கள்","total":"மொத்தம்","version":"பதிப்பு","versionCopy":"நகலெடுக்க சொடுக்கு","versionNotAvailable":"பதிப்பு கிடைக்கவில்லை","width":"அகலம்"},"toast":{"addedToLibrary":"நூலகத்தில் சேர்க்கப்பட்டது","copyStyles":"ஒயில்கள் நகலெடுக்கப்பட்டன.","copyToClipboard":"நகலகத்திற்கு நகலெடுக்கப்பட்டது.","copyToClipboardAsPng":"{{exportSelection}}-ஐ நகலகத்திற்கு PNG ஆக நகலெடுத்தது\\n({{exportColorScheme}})","fileSaved":"கோப்பு சேமிக்கப்பட்டது.","fileSavedToFilename":"{filename}-க்கு சேமிக்கப்பட்டது","canvas":"கித்தான்","selection":"தெரிவு","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ஒளிபுகுத்தன்மை","black":"கருப்பு","white":"வெள்ளை","red":"சிவப்பு","pink":"இளஞ்சிவப்பு","grape":"திராட்சை","violet":"ஊதா","gray":"சாம்பல்","blue":"நீலம்","cyan":"மயில்நிறம்","teal":"டீல்","green":"பச்சை","yellow":"மஞ்சள்","orange":"ஆரஞ்சு","bronze":"வெண்கலம்"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"எளிமையாக வரைபடங்கள் உருவாக்க!","toolbarHint":"கருவியைத் தேர்ந்தெடு & வரை!","helpHint":"குறுக்குவழிகள் & உதவி"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/th-TH-json-4e4b97f5f6e905191383.js b/public/excalidraw/excalidraw-assets-dev/locales/th-TH-json-4e4b97f5f6e905191383.js new file mode 100644 index 0000000..7139f71 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/th-TH-json-4e4b97f5f6e905191383.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/th-TH-json"],{ + +/***/ "../../locales/th-TH.json": +/*!********************************!*\ + !*** ../../locales/th-TH.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"วาง","pasteAsPlaintext":"วางโดยไม่มีการจัดรูปแบบ","pasteCharts":"วางแผนภูมิ","selectAll":"เลือกทั้งหมด","multiSelect":"","moveCanvas":"","cut":"ตัด","copy":"คัดลอก","copyAsPng":"คัดลองไปยังคลิปบอร์ดเป็น PNG","copyAsSvg":"คัดลองไปยังคลิปบอร์ดเป็น SVG","copyText":"คัดลองไปยังคลิปบอร์ดเป็นข้อความ","bringForward":"นำขึ้นข้างบน","sendToBack":"ย้ายไปข้างล่าง","bringToFront":"นำขึ้นข้างหน้า","sendBackward":"ย้ายไปข้างหลัง","delete":"ลบ","copyStyles":"คัดลอกรูปแบบ","pasteStyles":"วางรูปแบบ","stroke":"เส้นขอบ","background":"พื้นหลัง","fill":"เติมสี","strokeWidth":"น้ำหนักเส้นขอบ","strokeStyle":"รูปแบบเส้น","strokeStyle_solid":"เส้นทึบ","strokeStyle_dashed":"เส้นประ","strokeStyle_dotted":"จุด","sloppiness":"ความเลอะเทอะ","opacity":"ความทึบแสง","textAlign":"จัดข้อความ","edges":"ขอบ","sharp":"","round":"","arrowheads":"หัวลูกศร","arrowhead_none":"ไม่มี","arrowhead_arrow":"ลูกศร","arrowhead_bar":"แถบ","arrowhead_dot":"จุด","arrowhead_triangle":"สามเหลี่ยม","fontSize":"ขนาดตัวอักษร","fontFamily":"แบบตัวอักษร","addWatermark":"เพิ่มลายน้ำ \\"สร้างด้วย Excalidraw\\"","handDrawn":"ลายมือ","normal":"ปกติ","code":"โค้ด","small":"เล็ก","medium":"กลาง","large":"ใหญ่","veryLarge":"ใหญ่มาก","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"บาง","bold":"หนา","left":"ซ้าย","center":"กลาง","right":"ขวา","extraBold":"หนาพิเศษ","architect":"","artist":"ศิลปิน","cartoonist":"","fileTitle":"ชื่อไฟล์","colorPicker":"เลือกสีที่กำหนดเอง","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"การกระทำ","language":"ภาษา","liveCollaboration":"","duplicateSelection":"ทำสำเนา","untitled":"ไม่มีชื่อ","name":"ชื่อ","yourName":"ชื่อของคุณ","madeWithExcalidraw":"","group":"จัดกลุ่ม","ungroup":"ยกเลิกการจัดกลุ่ม","collaborators":"","showGrid":"แสดงเส้นตาราง","addToLibrary":"เพิ่มไปในคลัง","removeFromLibrary":"นำออกจากคลัง","libraryLoadingMessage":"กำลังโหลดคลัง...","libraries":"","loadingScene":"กำลังโหลดฉาก","align":"จัดตำแหน่ง","alignTop":"จัดชิดด้านบน","alignBottom":"จัดชิดด้านล่าง","alignLeft":"จัดชิดซ้าย","alignRight":"จัดชิดขวา","centerVertically":"กึ่งกลางแนวตั้ง","centerHorizontally":"กึ่งกลางแนวนอน","distributeHorizontally":"กระจายแนวนอน","distributeVertically":"กระจายแนวตั้ง","flipHorizontal":"พลิกแนวนอน","flipVertical":"พลิกแนวตั้ง","viewMode":"โหมดมุมมอง","share":"แชร์","showStroke":"","showBackground":"","toggleTheme":"สลับธีม","personalLib":"คลังของฉัน","excalidrawLib":"คลังของ Excalidraw","decreaseFontSize":"ลดขนาดตัวอักษร","increaseFontSize":"เพิ่มขนาดตัวอักษร","unbindText":"ยกเลิกการผูกติด","bindText":"","createContainerFromText":"","link":{"edit":"แก้ไขลิงก์","editEmbed":"แก้ไขลิงค์และการฝัง","create":"สร้างลิงค์","createEmbed":"สร้างลิงค์และการฝัง","label":"ลิงค์","labelEmbed":"ลิงค์และการฝัง","empty":"ไม่ได้ใส่ลิงค์"},"lineEditor":{"edit":"แก้ไขเส้น","exit":""},"elementLock":{"lock":"ล็อก","unlock":"ปลดล็อก","lockAll":"ล็อกทั้งหมด","unlockAll":"ปลดล็อกทั้งหมด"},"statusPublished":"เผยแพร่","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ยังไม่มีรายการที่เพิ่มเข้าไปได้","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"รีเซ็ทผืนผ้าใบ","exportJSON":"ส่งออกไปยังไฟล์","exportImage":"ส่งออกเป็นรูปภาพ","export":"บันทึกไปยัง","copyToClipboard":"คัดลอกไปยังคลิปบอร์ด","save":"บันทึกเป็นไฟล์ปัจจุบัน","saveAs":"บันทึกเป็น","load":"เปิด","getShareableLink":"สร้างลิงค์ที่แชร์ได้","close":"ปิด","selectLanguage":"เลือกภาษา","scrollBackToContent":"เลื่อนกลับไปด้านบน","zoomIn":"ซูมเข้า","zoomOut":"ซูมออก","resetZoom":"รีเซ็ตการซูม","menu":"เมนู","done":"เสร็จสิ้น","edit":"แก้ไข","undo":"เลิกทำ","redo":"ทำซ้ำ","resetLibrary":"รีเซ็ตคลัง","createNewRoom":"สร้างห้องใหม่","fullScreen":"เต็มหน้าจอ","darkMode":"โหมดกลางคืน","lightMode":"โหมดกลางวัน","zenMode":"โหมด Zen","objectsSnapMode":"","exitZenMode":"ออกจากโหมด Zen","cancel":"ยกเลิก","clear":"เคลียร์","remove":"ลบ","embed":"สลับการฝัง","publishLibrary":"เผยแพร่","submit":"ตกลง","confirm":"ยืนยัน","embeddableInteractionButton":"คลิกเพื่อปฏิสัมพันธ์"},"alerts":{"clearReset":"","couldNotCreateShareableLink":"ไม่สามารถสร้างลิงค์ได้","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"ไม่สามารถโหลดไฟล์ที่ผิดพลาดได้","importBackendFailed":"เกิดข้อผิดพลาดจากการนำเข้าจากระบบหลังบ้าน","cannotExportEmptyCanvas":"ไม่สามารถนำออกจากผืนผ้าใบที่ว่างเปล่าได้","couldNotCopyToClipboard":"ไม่สามารถคัดลอกไปยังคลิปบอร์ดได้","decryptFailed":"ไม่สามารถถอดรหัสข้อมูลได้","uploadedSecurly":"การอัพโหลดได้ถูกเข้ารหัสแบบ end-to-end หมายความว่าเซิร์ฟเวอร์ของ Excalidraw และบุคคลอื่นไม่สามารถอ่านข้อมูลได้","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"ไม่สามารถเพิ่มรายการเข้าไปในคลังได้","errorRemovingFromLibrary":"ไม่สามารถลบรายการนี้ออกจากคลังได้","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"ไม่รองรับชนิดของไฟล์นี้","imageInsertError":"ไม่สามารถเพิ่มรูปภาพได้ ลองอีกครั้งในภายหลัง","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"ไฟล์ SVG ผิดพลาด","cannotResolveCollabServer":"ไม่สามารถเชื่อต่อกับ collab เซิร์ฟเวอร์ได้ โปรดลองโหลดหน้านี้ใหม่และลองอีกครั้ง","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"การเพิ่มองค์ประกอบที่ฝังยังไม่สามารถเพิ่มเข้าไปในไลบลารีได้","image":"การสนับสนุนสำหรับเพิ่มรูปภาพลงในไลบลารีจะมาในเร็ว ๆ นี้"}},"toolBar":{"selection":"","image":"","rectangle":"สี่เหลี่ยมผืนผ้า","diamond":"","ellipse":"วงรี","arrow":"ลูกศร","line":"","freedraw":"","text":"ข้อความ","library":"คลัง","lock":"","penMode":"","link":"","eraser":"ยางลบ","frame":"","embeddable":"ฝังเว็บ","laser":"","hand":"","extraTools":"เครื่องมืออื่นๆ"},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"รูปร่าง"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"คลิกและลากเพื่อสร้างการฝังสำหรับเว็บไซต์","text_selected":"คลิกสองครั้งหรือกด ENTER เพื่อแก้ไขข้อความ","text_editing":"กดปุ่ม Esc หรือกด Ctrl, Cmd + Enter เพื่อเสร็จการแก้ไข","linearElementMulti":"คลิกที่จุดสุดท้ายหรือกด Escape หรือ Enter เพื่อเสร็จสิ้น","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"กดปุ่ม Delete เพื่อลบจุด\\nกด Ctrl หรือ Cmd + D เพื่อทำซ้ำหรือลากเพื่อเคลื่อนย้าย","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"ถ้าโหลดไม่ได้ ให้ลอง ","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"เริ่มเซสชัน","button_stopSession":"หยุดเซสชัน","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":"ไม่สามารถส่งออกไปที่ Excalidraw+ ได้ในขณะนี้"},"helpDialog":{"blog":"อ่านบล็อกของพวกเรา","click":"คลิก","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"ดับเบิลคลิก","drag":"ลาก","editor":"","editLineArrowPoints":"","editText":"แก้ไขข้อความ / เพิ่มข้อความ","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"ช่วยเหลือ","view":"ดู","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":"ย้ายหน้าไปด้าน ซ้าย/ขวา"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"ชื่อเจ้าของ","githubUsername":"ชื่อผู้ใช้ GitHub","twitterUsername":"ชื่อผู้ใช้ Twitter","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"โหมดกลางคืน","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"ส่งออกไปเป็น SVG","exportToSvg":"ส่งออกไปเป็น SVG","copyPngToClipboard":"คัดลอก PNG ไปยังคลิปบอร์ด"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"คัดลอกไปยังคลิปบอร์ด"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"ฟ้าน้ำทะเล","green":"เขียว","yellow":"เหลือง","orange":"ส้ม","bronze":"ทองแดง"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/tr-TR-json-003be1cf6ebf0b787dec.js b/public/excalidraw/excalidraw-assets-dev/locales/tr-TR-json-003be1cf6ebf0b787dec.js new file mode 100644 index 0000000..dcdfc3f --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/tr-TR-json-003be1cf6ebf0b787dec.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/tr-TR-json"],{ + +/***/ "../../locales/tr-TR.json": +/*!********************************!*\ + !*** ../../locales/tr-TR.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Yapıştır","pasteAsPlaintext":"Düz metin olarak yapıştır","pasteCharts":"Grafikleri yapıştır","selectAll":"Tümünü seç","multiSelect":"Seçime öge ekle","moveCanvas":"Tuvali taşı","cut":"Kes","copy":"Kopyala","copyAsPng":"Panoya PNG olarak kopyala","copyAsSvg":"Panoya SVG olarak kopyala","copyText":"Panoya metin olarak kopyala","bringForward":"Bir öne getir","sendToBack":"Arkaya gönder","bringToFront":"En öne getir","sendBackward":"Bir geriye gönder","delete":"Sil","copyStyles":"Stilleri kopyala","pasteStyles":"Stilleri yapıştır","stroke":"Vurgu","background":"Arka plan","fill":"Doldur","strokeWidth":"Kontur genişliği","strokeStyle":"Kontur stili","strokeStyle_solid":"Dolu","strokeStyle_dashed":"Kesik çizgili","strokeStyle_dotted":"Noktalı","sloppiness":"Üstün körülük","opacity":"Opaklık","textAlign":"Metin hizala","edges":"Kenarlar","sharp":"Keskin","round":"Yuvarlak","arrowheads":"Ok uçları","arrowhead_none":"Yok","arrowhead_arrow":"Ok","arrowhead_bar":"Çizgi","arrowhead_dot":"Nokta","arrowhead_triangle":"Üçgen","fontSize":"Yazı tipi boyutu","fontFamily":"Yazı tipi ailesi","addWatermark":"\\"Excalidraw ile yapıldı\\" yazısını ekle","handDrawn":"El-yazısı","normal":"Normal","code":"Kod","small":"Küçük","medium":"Orta","large":"Büyük","veryLarge":"Çok geniş","solid":"Dolu","hachure":"Taralı","zigzag":"Zikzak","crossHatch":"Çapraz-taralı","thin":"İnce","bold":"Kalın","left":"Sol","center":"Ortala","right":"Sağ","extraBold":"Ekstra kalın","architect":"Mimar","artist":"Sanatçı","cartoonist":"Karikatürist","fileTitle":"Dosya adı","colorPicker":"Renk seçici","canvasColors":"Tuvalin üzerinde kullanıldı","canvasBackground":"Tuval arka planı","drawingCanvas":"Çizim tuvali","layers":"Katmanlar","actions":"Eylemler","language":"Dil","liveCollaboration":"Canlı ortak çalışma alanı...","duplicateSelection":"Çoğalt","untitled":"Adsız","name":"İsim","yourName":"İsminiz","madeWithExcalidraw":"Excalidraw ile yapıldı","group":"Seçimi grup yap","ungroup":"Seçilen grubu dağıt","collaborators":"Ortaklar","showGrid":"Izgarayı göster","addToLibrary":"Kütüphaneye ekle","removeFromLibrary":"Kütüphaneden kaldır","libraryLoadingMessage":"Kütüphane yükleniyor…","libraries":"Kütüphanelere gözat","loadingScene":"Sahne yükleniyor…","align":"Hizala","alignTop":"Yukarı hizala","alignBottom":"Aşağı hizala","alignLeft":"Sola hizala","alignRight":"Sağa hizala","centerVertically":"Dikeyde ortala","centerHorizontally":"Yatayda ortala","distributeHorizontally":"Yatay dağıt","distributeVertically":"Dikey dağıt","flipHorizontal":"Yatay döndür","flipVertical":"Dikey döndür","viewMode":"Görünüm modu","share":"Paylaş","showStroke":"Kontur için renk seçiciyi göster","showBackground":"Arkaplan için renk seçiciyi göster","toggleTheme":"Temayı etkinleştir/devre dışı bırak","personalLib":"Kişisel Kitaplık","excalidrawLib":"Excalidraw Kitaplığı","decreaseFontSize":"Yazı Tipi Boyutunu Küçült","increaseFontSize":"Yazı Tipi Boyutunu Büyült","unbindText":"Metni çöz","bindText":"Metni taşıyıcıya bağla","createContainerFromText":"Metni bileşen içinde sar","link":{"edit":"Bağlantıyı düzenle","editEmbed":"Bağlantıyı düzenle & yerleştir","create":"Bağlantı oluştur","createEmbed":"Bağlantı oluştur & yerleştir","label":"Bağlantı","labelEmbed":"Bağlantı & yerleştirme","empty":"Herhangi bir bağlantı oluşturulmadı"},"lineEditor":{"edit":"Çizgiyi düzenle","exit":"Çizgi düzenlemeden çık"},"elementLock":{"lock":"Kilitle","unlock":"Kilidi Kaldır","lockAll":"Hepsini kilitle","unlockAll":"Hepsinin kilidini kaldır"},"statusPublished":"Yayınlandı","sidebarLock":"Kenar çubuğu açık kalsın","selectAllElementsInFrame":"Çerçevedeki tüm bileşenleri seç","removeAllElementsFromFrame":"Çerçevedeki tüm bileşenleri sil","eyeDropper":"Tuvalden renk seç"},"library":{"noItems":"Öğe eklenmedi...","hint_emptyLibrary":"Öğelerden birini eklemek için öğeyi seçiniz veya aşağıdaki genel kütüphaneden öğeleri ekleyin.","hint_emptyPrivateLibrary":"Tuvalden bir eleman seçerek sayfaya ekleyin."},"buttons":{"clearReset":"Tuvali sıfırla","exportJSON":"Dosyaya aktar","exportImage":"Resimleri dışa aktar...","export":"Şuraya kaydet...","copyToClipboard":"Panoya kopyala","save":"Geçerli dosyaya kaydet","saveAs":"Farklı kaydet","load":"Aç","getShareableLink":"Paylaşılabilir bağlantı al","close":"Kapat","selectLanguage":"Dil seçin","scrollBackToContent":"İçeriğe geri dön","zoomIn":"Yakınlaştır","zoomOut":"Uzaklaştır","resetZoom":"Yakınlaştırmayı sıfırla","menu":"Menü","done":"Tamam","edit":"Düzenle","undo":"Geri Al","redo":"Yeniden yap","resetLibrary":"Kütüphaneyi sıfırla","createNewRoom":"Yeni oda oluştur","fullScreen":"Tam ekran","darkMode":"Koyu tema","lightMode":"Açık tema","zenMode":"Zen modu","objectsSnapMode":"Nesnelere hizala","exitZenMode":"Zen modundan çık","cancel":"İptal","clear":"Temizle","remove":"Kaldır","embed":"","publishLibrary":"Yayınla","submit":"Gönder","confirm":"Onayla","embeddableInteractionButton":"Etkileşime girmek için tıkla"},"alerts":{"clearReset":"Tuvalin tamamı temizlenecek. Emin misiniz?","couldNotCreateShareableLink":"Paylaşılabilir bağlantı oluşturulamadı.","couldNotCreateShareableLinkTooBig":"Paylaşılabilir bağlantı oluşturulamadı: sahne çok büyük","couldNotLoadInvalidFile":"Bilinmeyen dosya yüklenemiyor","importBackendFailed":"Sunucudan içe aktarma başarısız.","cannotExportEmptyCanvas":"Boş tuval dışarıya aktarılamaz.","couldNotCopyToClipboard":"Panoya kopyalanamıyor.","decryptFailed":"Şifrelenmiş veri çözümlenemedi.","uploadedSecurly":"Yükleme uçtan uca şifreleme ile korunmaktadır. Excalidraw sunucusu ve üçüncül şahıslar içeriği okuyamayacaktır.","loadSceneOverridePrompt":"Harici çizimler yüklemek mevcut olan içeriği değiştirecektir. Devam etmek istiyor musunuz?","collabStopOverridePrompt":"Oturumu sonlandırmak daha önceki, yerel olarak kaydedilmiş çizimin üzerine kaydedilmesine sebep olacak. Emin misiniz?\\n\\n(Yerel çiziminizi kaybetmemek için tarayıcı sekmesini kapatabilirsiniz.)","errorAddingToLibrary":"Öğe kütüphaneye eklenemedi","errorRemovingFromLibrary":"Öğe kütüphaneden silinemedi","confirmAddLibrary":"Bu, kitaplığınıza {{numShapes}} tane şekil ekleyecek. Emin misiniz?","imageDoesNotContainScene":"Bu görüntü herhangi bir sahne verisi içermiyor gibi görünüyor. Dışa aktarma sırasında sahne yerleştirmeyi etkinleştirdiniz mi?","cannotRestoreFromImage":"Sahne bu resim dosyasından geri yüklenemedi","invalidSceneUrl":"Verilen bağlantıdan çalışma alanı yüklenemedi. Dosya bozuk olabilir veya geçerli bir Excalidraw JSON verisi bulundurmuyor olabilir.","resetLibrary":"Bu işlem kütüphanenizi sıfırlayacak. Emin misiniz?","removeItemsFromsLibrary":"{{count}} öğe(ler) kitaplıktan kaldırılsın mı?","invalidEncryptionKey":"Şifreleme anahtarı 22 karakter olmalı. Canlı işbirliği devre dışı bırakıldı.","collabOfflineWarning":"İnternet bağlantısı bulunamadı. Değişiklikleriniz kaydedilmeyecek!"},"errors":{"unsupportedFileType":"Desteklenmeyen dosya türü.","imageInsertError":"Görsel eklenemedi. Daha sonra tekrar deneyin...","fileTooBig":"Dosya çok büyük. İzin verilen maksimum boyut {{maxSize}}.","svgImageInsertError":"SVG resmi eklenemedi. SVG işaretlemesi geçersiz görünüyor.","failedToFetchImage":"","invalidSVGString":"Geçersiz SVG.","cannotResolveCollabServer":"İş birliği sunucusuna bağlanılamıyor. Lütfen sayfayı yenileyip tekrar deneyin.","importLibraryError":"Kütüphane yüklenemedi","collabSaveFailed":"Backend veritabanına kaydedilemedi. Eğer problem devam ederse, çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","collabSaveFailed_sizeExceeded":"Backend veritabanına kaydedilemedi; tuval çok büyük. Çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":"Resimleri kütüphaneye ekleme desteği yakında geliyor!"}},"toolBar":{"selection":"Seçme","image":"Görsel ekle","rectangle":"Dikdörtgen","diamond":"Elmas","ellipse":"Elips","arrow":"Ok","line":"Çizgi","freedraw":"Çiz","text":"Yazı","library":"Kütüphane","lock":"Seçilen aracı çizimden sonra aktif tut","penMode":"Kalem modu - dokunmayı engelle","link":"Seçilen şekil için bağlantı Ekle/Güncelle","eraser":"Silgi","frame":"Çerçeve aracı","embeddable":"Web Yerleştirme","laser":"Lazer işaretçisi","hand":"","extraTools":"Daha fazla araç"},"headings":{"canvasActions":"Tuval eylemleri","selectedShapeActions":"Seçilen şekil aksiyonları","shapes":"Şekiller"},"hints":{"canvasPanning":"","linearElement":"Birden fazla nokta için tıklayın, tek çizgi için sürükleyin","freeDraw":"Tıkla ve sürükle, bitirdiğinde serbest bırak","text":"İpucu: seçme aracıyla herhangi bir yere çift tıklayarak da yazı ekleyebilirsin","embeddable":"Web sitesi yerleştirmek için sürükle bırak","text_selected":"Metni düzenlemek için çift tıklayın veya ENTER\'a basın","text_editing":"Düzenlemeyi bitirmek için ESC veya Ctrl/Cmd+ENTER tuşlarına basın","linearElementMulti":"Bitirmek için son noktaya tıklayın ya da Escape veya Enter tuşuna basın","lockAngle":"SHIFT tuşuna basılı tutarak açıyı koruyabilirsiniz","resize":"Yeniden boyutlandırırken SHIFT tuşunu basılı tutarak oranları sınırlayabilirsiniz,\\nmerkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","resizeImage":"SHIFT\'e basılı tutarak serbestçe yeniden boyutlandırabilirsiniz, merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","rotate":"Döndürürken SHIFT tuşuna basılı tutarak açıları koruyabilirsiniz","lineEditor_info":"Puanları düzenlemek için ctrl veya cmd tuşuna basılı tutup çift tıklayın veya enter tuşuna basın","lineEditor_pointSelected":"Sil tuşuna basarak noktaları silin,\\nCtrl/Cmd + D ile çoğaltın, ya da sürükleyerek taşıyın","lineEditor_nothingSelected":"Düzenlemek için bir nokta seçin (birden fazla seçmek için SHIFT tuşunu basılı tutun),\\nveya Alt tuşunu basılı tutun ve yeni noktalar eklemek için tıklayın","placeImage":"Resmi yerleştirmek için tıklayın ya da boyutunu manuel olarak ayarlamak için tıklayıp sürükleyin","publishLibrary":"Kendi kitaplığınızı yayınlayın","bindTextToElement":"Enter tuşuna basarak metin ekleyin","deepBoxSelect":"Ctrl/Cmd tuşuna basılı tutarak derin seçim yapın ya da sürüklemeyi engelleyin","eraserRevert":"Alt tuşuna basılı tutarak silinme için işaretlenmiş ögeleri tersine çevirin","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Önizleme gösterilemiyor","canvasTooBig":"Kanvas çok büyük olabilir.","canvasTooBigTip":"İpucu: En uzaktaki elemanları birbirine yakınlaştırmayı deneyin."},"errorSplash":{"headingMain":"Hata oluştu. Lütfen ","clearCanvasMessage":"Yenileme sonrası sorun devam ediyorsa, lütfen ","clearCanvasCaveat":" Bu, yaptığınız değişiklikleri sıfırlayacak ","trackedToSentry":"Tanımlayıcı ile ilgili hata {{eventId}} sistemimize yakalandı.","openIssueMessage":"Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.","sceneContent":"Sahne içeriği:"},"roomDialog":{"desc_intro":"Çalışma alanınıza, sizinle birlikte çalışabilmeleri için başkalarını da ekleyebilirsiniz.","desc_privacy":"Çalışma ortamında yaptıklarınız ve çizimleriniz uçtan uca şifrelemeyle saklanmaktadır. Sunucularımız dahi bu verileri şifrelenmemiş haliyle göremez.","button_startSession":"Oturumu başlat","button_stopSession":"Oturumu sonlandır","desc_inProgressIntro":"Ortak çalışma ortamı oluşturuldu.","desc_shareLink":"Bu bağlantıyı birlikte çalışacağınız kişilerle paylaşabilirsiniz:","desc_exitSession":"Çalışma ortamını kapattığınızda ortak çalışmadan ayrılmış olursunuz ancak kendi versiyonunuzda çalışmaya devam edebilirsiniz. Bu durumda ortak çalıştığınız diğer kişiler etkilenmeyecek, çalışma ortamındaki versiyon üzerinden çalışmaya devam edebilecekler.","shareTitle":"Excalidraw\'da canlı ortak calışma oturumuna katıl"},"errorDialog":{"title":"Hata"},"exportDialog":{"disk_title":"Belleğe kaydet","disk_details":"Sahne verilerini daha sonra içe aktarabileceğiniz bir dosyaya aktarın.","disk_button":"Dosyaya kaydet","link_title":"Paylaşılabilir bağlantı","link_details":"Salt okunur bir bağlantı olarak dışa aktarın.","link_button":"Bağlantı olarak dışa aktar","excalidrawplus_description":"Sahneyi Excalidraw+ çalışma alanınıza kaydedin.","excalidrawplus_button":"Dışa aktar","excalidrawplus_exportError":"Şu anda Excalidraw+\'a aktarılamadı..."},"helpDialog":{"blog":"Blog\'umuzu okuyun","click":"tıkla","deepSelect":"Derin seçim","deepBoxSelect":"Kutu içerisinde derin seçim yapın, sürüklemeyi engelleyin","curvedArrow":"Eğri ok","curvedLine":"Eğri çizgi","documentation":"Dokümantasyon","doubleClick":"çift-tıklama","drag":"sürükle","editor":"Düzenleyici","editLineArrowPoints":"Çizgi/ok noktalarını düzenle","editText":"Etiket / metin düzenle","github":"Bir hata mı buldun? Bildir","howto":"Rehberlerimizi takip edin","or":"veya","preventBinding":"Ok bağlamayı önleyin","tools":"Araçlar","shortcuts":"Klavye kısayolları","textFinish":"Düzenlemeyi bitir (metin düzenleyici)","textNewLine":"Yeni satır ekle (metin düzenleyici)","title":"Yardım","view":"Görünüm","zoomToFit":"Tüm öğeleri sığdırmak için yakınlaştır","zoomToSelection":"Seçime yakınlaş","toggleElementLock":"Seçimi Kilitle/çöz","movePageUpDown":"Sayfayı yukarı/aşağı kaydır","movePageLeftRight":"Sayfayı sola/sağa kaydır"},"clearCanvasDialog":{"title":"Tuvali temizle"},"publishDialog":{"title":"Kitaplığı yayınla","itemName":"Öğe adı","authorName":"Yazar adı","githubUsername":"GıtHub kullanıcı adı","twitterUsername":"Twitter kullanıcı adı","libraryName":"Kitaplık adı","libraryDesc":"Kitaplık açıklaması","website":"Web sitesi","placeholder":{"authorName":"Adınız ya da kullanıcı adınız","libraryName":"Kitaplığınızın adı","libraryDesc":"İnsanların kullanımını anlamasına yardımcı olmak için kitaplığınızın açıklaması","githubHandle":"Github bağlantısı ( tercihe bağlı), kütüphane gözden geçirme için onaylandığında düzenleyebiliesiniz diye","twitterHandle":"Twitter kullanıcı adı ( tercihe bağlı), bu sayede Twitter üzerinde paylaşıren çalışmanızı size atfedebiliriz","website":"Kişisel web sayfanızı ya da başka bir yeri bağlayın (tercihe bağlı)"},"errors":{"required":"Gerekli","website":"Geçerli bir URL girin"},"noteDescription":"Submit your library to be included in the genel kütüphane reposudiğer insanlar çizimlerinde kullanabilsin diye.","noteGuidelines":"Önce kütüphane elle onaylanmalı. şunu okuyun yönergeler onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil.","noteLicense":"Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz MIT Lisans, ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir.","noteItems":"Her kütüphane kendi ismine sahip olmalı ki tarama yapabilelim. Şu kütüphane ögeleri dahil edilecek:","atleastOneLibItem":"Lütfen başlamak için en az bir tane kütüphane ögesi seçin","republishWarning":"Not: seçilen ögelerden bir kısmı zaten yayınlanmış/gönderilmiş. Yalnızca mevcut kütüphane ve gönderileri güncellerken yeniden gönderme işlemi yapmalısınız."},"publishSuccessDialog":{"title":"Kütüphane gönderildi","content":"Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsinizburada"},"confirmDialog":{"resetLibrary":"Kütüphaneyi sıfırla","removeItemsFromLib":"Seçilen ögeleri kütüphaneden kaldır"},"imageExportDialog":{"header":"Resmi dışa aktar","label":{"withBackground":"Arka plan","onlySelected":"Sadece seçilen","darkMode":"Karanlık mod","embedScene":"Sahne yerleştir","scale":"Ölçeklendir","padding":"Dış boşluk"},"tooltip":{"embedScene":"Sahne verisi, sahnenin geri yüklenebilmesi için dışarı aktarılan PNG/SVG dosyasına kaydedilecektir. Bu, dışa aktarılan dosya boyutunu arttıracaktır."},"title":{"exportToPng":"PNG olarak dışa aktar","exportToSvg":"SVG olarak dışa aktar","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Panoya kopyala"}},"encrypted":{"tooltip":"Çizimleriniz uçtan-uca şifrelenmiştir, Excalidraw\'ın sunucuları bile onları göremez.","link":"Excalidraw\'da uçtan uca şifreleme hakkında blog yazısı"},"stats":{"angle":"Açı","element":"Bileşen","elements":"Bileşenler","height":"Yükseklik","scene":"Sahne","selected":"Seçili","storage":"Depolama","title":"İnekler için istatistikler","total":"Toplam","version":"Sürüm","versionCopy":"Kopyalamak için tıkla","versionNotAvailable":"Sürüm mevcut değil","width":"Genişlik"},"toast":{"addedToLibrary":"Kütüphaneye eklendi","copyStyles":"Stiller kopyalandı.","copyToClipboard":"Panoya kopyalandı.","copyToClipboardAsPng":"{{exportSelection}} panoya PNG olarak\\n({{exportColorScheme}}) kopyalandı","fileSaved":"Dosya kaydedildi.","fileSavedToFilename":"{filename} kaydedildi","canvas":"tuval","selection":"seçim","pasteAsSingleElement":"Tekil obje olarak yapıştırmak için veya var olan bir metin editörüne yapıştırmak için {{shortcut}} kullanın","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Şeffaf","black":"Siyah","white":"Beyaz","red":"Kırmızı","pink":"Pembe","grape":"Koyu Mor","violet":"Menekşe rengi","gray":"Gri","blue":"Mavi","cyan":"Camgöbeği","teal":"Deniz mavisi","green":"Yeşil","yellow":"Sarı","orange":"Turuncu","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"Ecalidraw+\'a mı gitmek istediniz?","menuHint":"Dışa aktar, seçenekler, diller, ..."},"defaults":{"menuHint":"Dışa aktar, seçenekler, ve daha fazlası...","center_heading":"","toolbarHint":"Bir araç seçin ve çizime başlayın!","helpHint":"Kısayollar & yardım"}},"colorPicker":{"mostUsedCustomColors":"En çok kullanılan özel renkler","colors":"Renkler","shades":"","hexCode":"Hex kodu","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"Diske Kaydet","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/uk-UA-json-ca6ea1156db2649d3e27.js b/public/excalidraw/excalidraw-assets-dev/locales/uk-UA-json-ca6ea1156db2649d3e27.js new file mode 100644 index 0000000..ad10deb --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/uk-UA-json-ca6ea1156db2649d3e27.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/uk-UA-json"],{ + +/***/ "../../locales/uk-UA.json": +/*!********************************!*\ + !*** ../../locales/uk-UA.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Вставити","pasteAsPlaintext":"Вставити як простий текст","pasteCharts":"Вставити діаграми","selectAll":"Вибрати все","multiSelect":"Додати елемент до вибраного","moveCanvas":"Перемістити полотно","cut":"Вирізати","copy":"Копіювати","copyAsPng":"Копіювати як PNG","copyAsSvg":"Копіювати як SVG","copyText":"Копіювати в буфер обміну як текст","bringForward":"Перемістити вперед","sendToBack":"На задній план","bringToFront":"На передній план","sendBackward":"Перемістити назад","delete":"Видалити","copyStyles":"Копіювати стилі","pasteStyles":"Вставити стилі","stroke":"Контур","background":"Тло","fill":"Заповнити","strokeWidth":"Товщина контуру","strokeStyle":"Стиль контуру","strokeStyle_solid":"Суцільний","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Крапки","sloppiness":"Охайність","opacity":"Прозорість","textAlign":"Вирівнювання тексту","edges":"Краї","sharp":"Гострі","round":"Круглі","arrowheads":"Закінчення стрілки","arrowhead_none":"Жоден","arrowhead_arrow":"Стрілка","arrowhead_bar":"Колона","arrowhead_dot":"Точка","arrowhead_triangle":"Трикутник","fontSize":"Розмір шрифту","fontFamily":"Шрифт","addWatermark":"Додати «Накреслене в Excalidraw»","handDrawn":"Ручний апарат","normal":"Звичайний","code":"Код","small":"Малий","medium":"Середній","large":"Великий","veryLarge":"Дуже великий","solid":"Суцільна","hachure":"Штриховка","zigzag":"Зиґзаґ","crossHatch":"Перехресна штриховка","thin":"Тонкий","bold":"Жирний","left":"Зліва","center":"По центру","right":"Справа","extraBold":"Товстий","architect":"Архітектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Назва файла","colorPicker":"Палітра кольорів","canvasColors":"Використовується на полотні","canvasBackground":"Тло полотна","drawingCanvas":"Полотно","layers":"Шари","actions":"Дії","language":"Мова","liveCollaboration":"Спільна робота наживо...","duplicateSelection":"Дублювати","untitled":"Без назви","name":"Ім’я","yourName":"Ваше ім’я","madeWithExcalidraw":"Накреслене в Excalidraw","group":"Групувати виділене","ungroup":"Розгрупувати виділене","collaborators":"Співавтори","showGrid":"Показати сітку","addToLibrary":"Додати до бібліотеки","removeFromLibrary":"Видалити з бібліотеки","libraryLoadingMessage":"Завантажити бібліотеку…","libraries":"Всі бібліотеки","loadingScene":"Завантаження сцени…","align":"Вирівнювання","alignTop":"Вирівняти по верхньому краю","alignBottom":"Вирівняти по нижньому краю","alignLeft":"Вирівняти по лівому краю","alignRight":"Вирівнювання по правому краю","centerVertically":"Центрувати по вертикалі","centerHorizontally":"Центрувати по горизонталі","distributeHorizontally":"Розподілити по горизонталі","distributeVertically":"Розподілити вертикально","flipHorizontal":"Віддзеркалити горизонтально","flipVertical":"Віддзеркалити вертикально","viewMode":"Режим перегляду","share":"Поділитися","showStroke":"Показати палітру для контура","showBackground":"Показати палітру для фону","toggleTheme":"Перемкнути тему","personalLib":"Персональна бібліотека","excalidrawLib":"Бібліотека Excalidraw","decreaseFontSize":"Зменшити розмір шрифту","increaseFontSize":"Збільшити розмір шрифту","unbindText":"Відв\'язати текст","bindText":"Прив’язати текст до контейнера","createContainerFromText":"Огорнути текст у контейнер","link":{"edit":"Редагування посилання","editEmbed":"Редагування посилання і вкладення","create":"Створити посилання","createEmbed":"Створити посилання і вкладення","label":"Посилання","labelEmbed":"Посилання і вкладення","empty":"Посилання відсутнє"},"lineEditor":{"edit":"Редагувати лінію","exit":"Закінчити редагування лінії"},"elementLock":{"lock":"Блокувати","unlock":"Розблокувати","lockAll":"Заблокувати все","unlockAll":"Розблокувати все"},"statusPublished":"Опубліковано","sidebarLock":"Не закривати бокове меню","selectAllElementsInFrame":"Обрати всі елементи у фреймі","removeAllElementsFromFrame":"Видалити всі елементи з фрейму","eyeDropper":"Вибрати колір з полотна"},"library":{"noItems":"Тут поки пусто...","hint_emptyLibrary":"Виберіть об\'єкт на полотні, щоб додати його сюди або встановіть бібліотеку з публічного репозиторію, що нижче.","hint_emptyPrivateLibrary":"Виберіть елемент на полотні, щоб додати його сюди."},"buttons":{"clearReset":"Очистити полотно","exportJSON":"Експорт у файл","exportImage":"Експорт зображення...","export":"Зберегти як...","copyToClipboard":"Скопіювати до буферу обміну","save":"Зберегти до поточного файлу","saveAs":"Зберегти як","load":"Відкрити","getShareableLink":"Отримати посилання","close":"Закрити","selectLanguage":"Обрати мову","scrollBackToContent":"Повернутися до вмісту","zoomIn":"Збільшити","zoomOut":"Зменшити","resetZoom":"Скинути масштаб","menu":"Меню","done":"Готово","edit":"Редагувати","undo":"Відмінити","redo":"Повторити","resetLibrary":"Очистити бібліотеку","createNewRoom":"Створити нову кімнату","fullScreen":"Повноекранний режим","darkMode":"Темна тема","lightMode":"Світла тема","zenMode":"Режим Дзен","objectsSnapMode":"","exitZenMode":"Вийти з дзен-режиму","cancel":"Скасувати","clear":"Очистити","remove":"Видалити","embed":"Перемкнути вкладення","publishLibrary":"Опублікувати","submit":"Надіслати","confirm":"Підтвердити","embeddableInteractionButton":"Натисніть для взаємодії"},"alerts":{"clearReset":"Це очистить все полотно. Впевнені?","couldNotCreateShareableLink":"Не вдалося створити посилання.","couldNotCreateShareableLinkTooBig":"Не вдалося створити посилання для обміну: сцена занадто велика","couldNotLoadInvalidFile":"Файл з помилками не відкрився","importBackendFailed":"Імпортування невдале.","cannotExportEmptyCanvas":"Не вийшло експортувати пусте полотно.","couldNotCopyToClipboard":"Не вдалося скопіювати до буфера обміну.","decryptFailed":"Не вдалося розшифрувати дані.","uploadedSecurly":"Це завантаження було захищене наскрізним шифруванням, а це означає що сервер Excalidraw та інші не зможуть прочитати вміст.","loadSceneOverridePrompt":"Завантаження зовнішнього креслення замінить ваш наявний контент. Продовжити?","collabStopOverridePrompt":"Зупинка сесії перезапише ваш попередній, локально збережений малюнок. Ви впевнені?\\n\\n(Якщо ви хочете зберегти локальний малюнок, просто закрийте замість нього вкладку браузера.)","errorAddingToLibrary":"Не вдалося додати елемент до бібліотеки","errorRemovingFromLibrary":"Не вдалося видалити елемент з бібліотеки","confirmAddLibrary":"Це призведе до додавання {{numShapes}} фігур до вашої бібліотеки. Ви впевнені?","imageDoesNotContainScene":"Виглядає ніби зображення не містить корисної інформації. Ви увімкнули вбудовування сцени при експорті?","cannotRestoreFromImage":"Сцена не може бути відновлена з цього файлу зображення","invalidSceneUrl":"Не вдалося імпортувати сцену з наданого URL. Він або недоформований, або не містить дійсних даних Excalidraw JSON.","resetLibrary":"Це призведе до очищення бібліотеки. Ви впевнені?","removeItemsFromsLibrary":"Видалити {{count}} елемент(ів) з бібліотеки?","invalidEncryptionKey":"Ключ шифрування повинен бути довжиною до 22 символів. Спільну роботу вимкнено.","collabOfflineWarning":"Немає підключення до Інтернету.\\nВаші зміни не будуть збережені!"},"errors":{"unsupportedFileType":"Непідтримуваний тип файлу.","imageInsertError":"Не вдалося вставити зображення. Повторіть спробу пізніше...","fileTooBig":"Занадто великий розмір файлу, максимальний розмір файлу {{maxSize}}.","svgImageInsertError":"Не вдалося вставити SVG-зображення. Помилка розмітки SVG.","failedToFetchImage":"","invalidSVGString":"Недійсний SVG.","cannotResolveCollabServer":"Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.","importLibraryError":"Не вдалося завантажити бібліотеку","collabSaveFailed":"Не вдалося зберегти у базу даних сервера. Якщо проблеми не зникнуть, Вам слід зберегти файл локально, щоб не втратити роботу.","collabSaveFailed_sizeExceeded":"Полотно завелике! Не вдалося зберегти у базу даних сервера. Вам слід зберегти файл локально, щоб не втратити свою роботу.","brave_measure_text_error":{"line1":"Ви використовуєте браузер Brave з увімкненим налаштуванням Агресивного Блокування Розпізнавання Пристрою.","line2":"Це може нашкодити текстовим елементам у ваших малюнках.","line3":"Ми наполегливо рекомендуємо вимкнути це налаштування. Виконайте наступні кроки, щоб виправити це.","line4":"Якщо вимкнення цього параметра не вирішує показ текстових елементів, тоді створіть, будь ласка, запит на розв\'язання проблеми на нашому GitHub або напишіть нам у Discord"},"libraryElementTypeError":{"embeddable":"Вбудовані елементи не можна додати в бібліотеку.","image":"Підтримка додавання зображень в бібліотеку найближчим часом!"}},"toolBar":{"selection":"Виділення","image":"Вставити зображення","rectangle":"Прямокутник","diamond":"Ромб","ellipse":"Еліпс","arrow":"Стрілка","line":"Лінія","freedraw":"Малювати","text":"Текст","library":"Бібліотека","lock":"Залишити обраний інструмент після креслення","penMode":"Режим пера - запобігання дотику","link":"Додати/Оновити посилання для вибраної форми","eraser":"Очищувач","frame":"Інструмент фрейму","embeddable":"Веб вкладення","laser":"","hand":"Рука (інструмент для панорамування)","extraTools":"Інші інструменти"},"headings":{"canvasActions":"Дії з полотном","selectedShapeActions":"Вибрані дії з фігурою","shapes":"Фігури"},"hints":{"canvasPanning":"Щоб перемістити полотно, утримуйте коліщатко миші або пробіл під час перетягування, або скористайтеся інструментом Рука","linearElement":"Натисніть щоб додати кілька точок. Перетягніть щоб намалювати одну лінію","freeDraw":"Натисніть і потягніть, відпустіть коли завершите","text":"Порада: можна також додати текст, двічі клацнувши по будь-якому місці інструментом вибору","embeddable":"Клікніть та перетягніть для створення вбудованого вебсайту","text_selected":"Подвійний клік або натисніть клавішу ENTER, щоб редагувати текст","text_editing":"Натисніть клавішу Escape або Ctrl/Cmd+ENTER, щоб завершити редагування","linearElementMulti":"Натисніть на останню точку, клацніть Esc або Enter щоб завершити","lockAngle":"Ви можете обмежити кут, утримуюючи SHIFT","resize":"Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,\\nутримуйте ALT для змінення розміру від центру","resizeImage":"Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру","rotate":"Ви можете обмежити кути, утримуючи SHIFT під час обертання","lineEditor_info":"Утримуйте CtrlOrCmd і двічі клацніть або натисніть CtrlOrCmd + Enter, щоб редагувати цятки","lineEditor_pointSelected":"Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично","lineEditor_nothingSelected":"Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок","placeImage":"Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір","publishLibrary":"Опублікувати свою власну бібліотеку","bindTextToElement":"Натисніть Enter, щоб додати текст","deepBoxSelect":"Втримуйте Ctrl/Cmd для глибокого виділення та щоб попередити перетягування","eraserRevert":"Втримуйте клавішу Alt, щоб повернути елементи позначені для видалення","firefox_clipboard_write":"Цю функцію можна ввімкнути, встановивши значення \\"true\\" для налаштування \\"dom.events.asyncClipboard.clipboardItem\\". Перейдіть на сторінку «about:config», щоб змінити налаштування браузера у Firefox.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не вдається показати попередній перегляд","canvasTooBig":"Полотно може бути завеликим.","canvasTooBigTip":"Порада: спробуйте підсунути найвіддаленіші елементи ближче один до одного."},"errorSplash":{"headingMain":"Сталася помилка. Спробуйте ","clearCanvasMessage":"Якщо перезавантаження не допоможе, спробуйте ","clearCanvasCaveat":" Це призведе до втрати роботи ","trackedToSentry":"Помилка з ідентифікатором {{eventId}} було відслідковано в нашій системі.","openIssueMessage":"Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.","sceneContent":"Вміст сцени:"},"roomDialog":{"desc_intro":"Ви можете запросити людей для спільної роботи.","desc_privacy":"Не хвилюйтеся, сесія захищена наскрізним шифруванням, тому ваше креслення залишиться приватним. Навіть наш сервер не побачить вашу роботу.","button_startSession":"Почати сесію","button_stopSession":"Закрити сесію","desc_inProgressIntro":"Сесія спільної роботи над кресленням триває.","desc_shareLink":"Поділіться цим посиланням з будь-ким для спільної роботи:","desc_exitSession":"Зупинка сесії відключить вас від кімнати, але ви зможете продовжити роботу з полотном локально. Зверніть увагу, що це не вплине на інших людей, і вони все одно зможуть працювати над їх версією.","shareTitle":"Приєднатися до сеансу спільної роботи на Excalidraw"},"errorDialog":{"title":"Помилка"},"exportDialog":{"disk_title":"Зберегти на диск","disk_details":"Експорт даних сцени в файл, з якого можна імпортувати пізніше.","disk_button":"Зберегти до файлу","link_title":"Доступ за посиланням","link_details":"Експортувати як посилання тільки для читання.","link_button":"Експортувати у посилання","excalidrawplus_description":"Збережіть сцену у вашому обліковому записі Excalidraw+.","excalidrawplus_button":"Експортувати","excalidrawplus_exportError":"Не вдалося експортувати у Excalidraw+..."},"helpDialog":{"blog":"Наш блог","click":"натиснути","deepSelect":"Глибокий вибір","deepBoxSelect":"Глибоке виділення в межах рамки, та обмеження перетягування","curvedArrow":"Крива стрілка","curvedLine":"Крива лінія","documentation":"Документація","doubleClick":"подвійний клік","drag":"перетягнути","editor":"Редактор","editLineArrowPoints":"Редагувати лінію/стрілки","editText":"Редагувати текст / додати позначку","github":"Знайшли помилку? Повідомте","howto":"Дотримуйтесь наших інструкцій","or":"або","preventBinding":"Запобігти зв\'язування зі стрілками","tools":"Інструменти","shortcuts":"Гарячі клавіші","textFinish":"Завершити редагування (текстовий редактор)","textNewLine":"Додати новий рядок (текстовий редактор)","title":"Допомога","view":"Вигляд","zoomToFit":"Збільшити щоб умістити всі елементи","zoomToSelection":"Наблизити вибране","toggleElementLock":"Заблокувати/розблокувати вибране","movePageUpDown":"Пересунути сторінку вгору/вниз","movePageLeftRight":"Пересунути сторінку вліво/вправо"},"clearCanvasDialog":{"title":"Очистити полотно"},"publishDialog":{"title":"Опублікувати бібліотеку","itemName":"Назва елементу","authorName":"Ім\'я автора","githubUsername":"Ім\'я користувача Github","twitterUsername":"Ім\'я користувача Твитер","libraryName":"Назва бібліотеки","libraryDesc":"Опис бібліотеки","website":"Вебсайт","placeholder":{"authorName":"Ваше ім\'я або ім\'я користувача","libraryName":"Назва вашої бібліотеки","libraryDesc":"Опис вашої бібліотеки, щоб допомогти людям зрозуміти її використання","githubHandle":"Ім\'я користувача в GitHub (необов\'язково), щоб ви могли редагувати бібліотеку під час перевірки","twitterHandle":"Ім\'я користувача у Twitter (необов\'язково), щоб ми могли згадати вас під час промоції у Twitter","website":"Посилання на ваш особистий сайт або інший сайт (опціонально)"},"errors":{"required":"Обов’язково","website":"Введіть дійсну URL-адресу"},"noteDescription":"Подати бібліотеку, щоб вона була включена до публічного репозиторія бібліотекдля інших людей, для використання у їхніх полотнах.","noteGuidelines":"Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте настанови перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов\'язково.","noteLicense":"Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під Ліцензія MIT, , простими словами, це означає що нею зможе користуватися будь-хто без обмежень.","noteItems":"Кожен об\'єкт в бібліотеці повинен мати назву, це потрібно для пошуку та фільтрування. Наступні об\'єкти бібліотеки будуть включені:","atleastOneLibItem":"Будь ласка, виберіть принаймні один елемент бібліотеки, щоб почати","republishWarning":"Зауважте, деякі з вибраних елементів позначені як вже опубліковані/надіслані. Ви повинні повторно надсилати елементи тільки при оновленні вже опублікованої бібліотеки чи при публікації бібліотеки."},"publishSuccessDialog":{"title":"Бібліотека відправлена","content":"Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статустут"},"confirmDialog":{"resetLibrary":"Очистити бібліотеку","removeItemsFromLib":"Видалити вибрані елементи з бібліотеки"},"imageExportDialog":{"header":"Експортувати зображення","label":{"withBackground":"Тло","onlySelected":"Тільки вибране","darkMode":"Темний режим","embedScene":"Вбудована сцена","scale":"Масштабування","padding":"Відступ"},"tooltip":{"embedScene":"Дані сцени будуть збережені в експортований файл PNG/SVG. Ця сцена може бути відновлена з нього, однак це збільшить розмір експортованого файлу."},"title":{"exportToPng":"Експортувати в PNG","exportToSvg":"Експортувати у SVG","copyPngToClipboard":"Скопіювати PNG в буфер обміну"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копіювати в буфер обміну"}},"encrypted":{"tooltip":"Ваші креслення захищені наскрізним шифруванням — сервери Excalidraw ніколи їх не побачать.","link":"Допис у блозі на наскрізному шифруванні в Excalidraw"},"stats":{"angle":"Кут","element":"Елемент","elements":"Елементи","height":"Висота","scene":"Сцена","selected":"Обрано","storage":"Сховище","title":"Статистика","total":"Всього","version":"Версія","versionCopy":"Натисніть, щоб скопіювати","versionNotAvailable":"Версія недоступна","width":"Ширина"},"toast":{"addedToLibrary":"Додано до бібліотеки","copyStyles":"Скопійовані стилі.","copyToClipboard":"Скопіювати до буферу обміну.","copyToClipboardAsPng":"Скопійовано {{exportSelection}} до буфера обміну як PNG\\n({{exportColorScheme}})","fileSaved":"Файл збережено.","fileSavedToFilename":"Збережено в {filename}","canvas":"полотно","selection":"виділення","pasteAsSingleElement":"Використайте {{shortcut}} для вставки самостійного зразка або використайте в текстовому редакторі","unableToEmbed":"Вбудування цієї url на даний час не допускається. Підніміть питання на GitHub, щоб попросити внести URL-адресу до білого списку","unrecognizedLinkFormat":"Посилання, яке ви вставили, не відповідає очікуваному формату. Будь ласка, спробуйте вставити рядок \\"embed\\", наданий сайтом-джерелом"},"colors":{"transparent":"Прозорий","black":"Чорний","white":"Білий","red":"Червоний","pink":"Рожевий","grape":"Виноградний","violet":"Фіолетовий","gray":"Сірий","blue":"Синій","cyan":"Ціан","teal":"Бірюзовий","green":"Зелений","yellow":"Жовтий","orange":"Помаранчевий","bronze":"Бронзовий"},"welcomeScreen":{"app":{"center_heading":"Всі ваші дані збережено локально у Вашому браузері.","center_heading_plus":"Чи бажаєте перейти до Excalidraw+?","menuHint":"Експорт, налаштування, мови, ..."},"defaults":{"menuHint":"Експорт, налаштування та багато іншого...","center_heading":"Діаграми. Робити. Просто.","toolbarHint":"Оберіть інструмент і почніть малювати!","helpHint":"Гарячі клавіші і допомога"}},"colorPicker":{"mostUsedCustomColors":"Найбільш використовувані користувацькі кольори","colors":"Кольори","shades":"Тіні","hexCode":"Hex-код","noShades":"Немає доступних відтінків цього кольору"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Експортувати як зображення","button":"Експортувати як зображення","description":"Експорт даних сцени у вигляді зображення, з якого можна імпортувати пізніше."},"saveToDisk":{"title":"Зберегти на диск","button":"Зберегти на диск","description":"Експорт даних сцени в файл, з якого можна імпортувати пізніше."},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортувати до Excalidraw+","description":"Зберегти сцену до робочого простору Excalidraw+."}},"modal":{"loadFromFile":{"title":"Завантажити з файлу","button":"Завантажити з файлу","description":"Завантаження з файлу замінить наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."},"shareableLink":{"title":"Завантажити з посилання","button":"Замінити мій контент","description":"Завантаження зовнішнього малюнка замінить ваш наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/vi-VN-json-9a5e5fab41a1a120a916.js b/public/excalidraw/excalidraw-assets-dev/locales/vi-VN-json-9a5e5fab41a1a120a916.js new file mode 100644 index 0000000..efe2a59 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/vi-VN-json-9a5e5fab41a1a120a916.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/vi-VN-json"],{ + +/***/ "../../locales/vi-VN.json": +/*!********************************!*\ + !*** ../../locales/vi-VN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"Dán","pasteAsPlaintext":"Dán kiểu văn bản thuần","pasteCharts":"Dán biểu đồ","selectAll":"Chọn tất cả","multiSelect":"Thêm mới vào Select","moveCanvas":"Di chuyển canvas","cut":"Cắt","copy":"Sao chép","copyAsPng":"Sao chép vào bộ nhớ tạm dưới dạng PNG","copyAsSvg":"Sao chép vào bộ nhớ tạm dưới dạng SVG","copyText":"Sao chép vào bộ nhớ tạm dưới dạng chữ","bringForward":"Đưa ra trước","sendToBack":"Hạ xuống dưới","bringToFront":"Đưa ra đầu tiên","sendBackward":"Hạ xuống cuối","delete":"Xóa","copyStyles":"Sao chép định dạng","pasteStyles":"Dán định dạng","stroke":"Nét","background":"Nền","fill":"Fill","strokeWidth":"Độ dày nét","strokeStyle":"Kiểu nét","strokeStyle_solid":"Khối","strokeStyle_dashed":"Gạch ngang","strokeStyle_dotted":"Nhiều chấm","sloppiness":"Hoa văn nét","opacity":"Độ trong suốt","textAlign":"Căn chỉnh văn bản","edges":"Cạnh","sharp":"Nhọn","round":"Tròn","arrowheads":"Đầu mũi tên","arrowhead_none":"Không","arrowhead_arrow":"Mũi tên","arrowhead_bar":"Thanh","arrowhead_dot":"Chấm","arrowhead_triangle":"Tam giác","fontSize":"Cỡ chữ","fontFamily":"Phông chữ","addWatermark":"Làm với Excalidraw\\"","handDrawn":"Vẽ tay","normal":"Bình thường","code":"Mã","small":"Nhỏ","medium":"Vừa","large":"Lớn","veryLarge":"Rất lớn","solid":"Đặc","hachure":"Nét gạch gạch","zigzag":"Zigzag","crossHatch":"Nét gạch chéo","thin":"Mỏng","bold":"In đậm","left":"Trái","center":"Giữa","right":"Phải","extraBold":"Nét siêu đậm","architect":"Kiến trúc sư","artist":"Nghệ sỹ","cartoonist":"Hoạt hình","fileTitle":"Tên tập tin","colorPicker":"Chọn màu","canvasColors":"Đã dùng trên canvas","canvasBackground":"Nền canvas","drawingCanvas":"Canvas vẽ","layers":"Lớp","actions":"Chức năng","language":"Ngôn ngữ","liveCollaboration":"Hợp tác trực tiếp...","duplicateSelection":"Tạo bản sao","untitled":"Không có tiêu đề","name":"Tên","yourName":"Tên của bạn","madeWithExcalidraw":"Làm với Excalidraw","group":"Gộp nhóm lại lựa chọn","ungroup":"Tách nhóm lựa chọn","collaborators":"Cộng tác viên","showGrid":"Hiển thị lưới","addToLibrary":"Thêm vào thư viện","removeFromLibrary":"Xóa khỏi thư viện","libraryLoadingMessage":"Đang tải thư viện…","libraries":"Xem thư viện","loadingScene":"Đang tải về…","align":"Căn chỉnh","alignTop":"Căn trên","alignBottom":"Căn dưới","alignLeft":"Canh trái","alignRight":"Canh phải","centerVertically":"Giữa theo chiều dọc","centerHorizontally":"Giữa theo chiều ngang","distributeHorizontally":"Phân bố theo chiều ngang","distributeVertically":"Phân bố theo chiều dọc","flipHorizontal":"Lật ngang","flipVertical":"Lật dọc","viewMode":"Chế độ xem","share":"Chia sẻ","showStroke":"Hiển thị chọn màu","showBackground":"Hiện thị chọn màu nền","toggleTheme":"","personalLib":"Thư viện cá nhân","excalidrawLib":"Thư viện Excalidraw","decreaseFontSize":"Giảm cỡ chữ","increaseFontSize":"Tăng cỡ chữ","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Sửa liên kết","editEmbed":"","create":"Tạo liên kết","createEmbed":"","label":"Liên kết","labelEmbed":"","empty":""},"lineEditor":{"edit":"Điều chỉnh nét","exit":"Thoát chỉnh nét"},"elementLock":{"lock":"Khoá","unlock":"Mở khoá","lockAll":"Khóa tất cả","unlockAll":"Mở khóa tất cả"},"statusPublished":"Đã đăng tải","sidebarLock":"Giữ thanh bên luôn mở","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Chưa có món nào...","hint_emptyLibrary":"Chọn một món trên canvas để thêm nó vào đây, hoặc cài đặt thư viện từ kho lưu trữ công cộng, ở bên dưới.","hint_emptyPrivateLibrary":"Chọn một món trên canvas để thêm nó vào đây."},"buttons":{"clearReset":"Reset canvas","exportJSON":"Xuất ra tập tin","exportImage":"Xuất file ảnh...","export":"Lưu vào...","copyToClipboard":"Sao chép vào bộ nhớ tạm","save":"Lưu vào tập tin hiện tại","saveAs":"Lưu thành","load":"Mở","getShareableLink":"Tạo liên kết để chia sẻ","close":"Đóng","selectLanguage":"Chọn ngôn ngữ","scrollBackToContent":"Cuộn về nội dung chính","zoomIn":"Phóng to","zoomOut":"Thu nhỏ","resetZoom":"Đặt lại thu phóng","menu":"Bảng chọn","done":"Xong","edit":"Chỉnh sửa","undo":"Hoàn tác","redo":"Làm lại","resetLibrary":"","createNewRoom":"Tạo phòng mới","fullScreen":"Toàn màn hình","darkMode":"Chế độ tối","lightMode":"Chế độ sáng","zenMode":"Chế độ zen","objectsSnapMode":"","exitZenMode":"Thoát chể độ zen","cancel":"Hủy","clear":"Làm sạch","remove":"Xóa","embed":"","publishLibrary":"Đăng tải","submit":"Gửi","confirm":"Xác nhận","embeddableInteractionButton":""},"alerts":{"clearReset":"Điều này sẽ dọn hết canvas. Bạn có chắc không?","couldNotCreateShareableLink":"Không thể tạo đường dẫn chia sẻ.","couldNotCreateShareableLinkTooBig":"Không thể tạo đường dẫn chia sẻ: bản vẽ quá lớn","couldNotLoadInvalidFile":"Không thể load tập tin không hợp lệ","importBackendFailed":"","cannotExportEmptyCanvas":"Không thể xuất canvas trống.","couldNotCopyToClipboard":"","decryptFailed":"Không thể giải mã dữ liệu.","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?\\n\\n(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)","errorAddingToLibrary":"Không thể thêm món vào thư viện","errorRemovingFromLibrary":"Không thể xoá món khỏi thư viện","confirmAddLibrary":"Hình {{numShapes}} sẽ được thêm vào thư viện. Bạn chắc chứ?","imageDoesNotContainScene":"Hình ảnh này dường như không chứa bất kỳ dữ liệu cảnh nào. Bạn đã bật tính năng nhúng cảnh khi xuất chưa?","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Xoá {{count}} món từ thư viện?","invalidEncryptionKey":"Khóa mã hóa phải có 22 ký tự. Hợp tác trực tiếp bị vô hiệu hóa.","collabOfflineWarning":"Không có kết nối internet.\\nThay đổi của bạn sẽ không được lưu!"},"errors":{"unsupportedFileType":"Loại tập tin không được hỗ trợ.","imageInsertError":"Không thể thêm ảnh. Hãy thử lại sau...","fileTooBig":"Tệp tin quá lớn. Dung lượng tối đa cho phép là {{maxSize}}.","svgImageInsertError":"Không thể thêm ảnh SVG. Mã SVG có vẻ sai.","failedToFetchImage":"","invalidSVGString":"SVG không hợp lệ.","cannotResolveCollabServer":"Không thể kết nối với máy chủ hợp tác. Hãy tải lại trang và thử lại.","importLibraryError":"Không thể tải thư viện","collabSaveFailed":"Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.","collabSaveFailed_sizeExceeded":"Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Lựa chọn","image":"Chèn ảnh","rectangle":"Hình chữ nhật","diamond":"Kim cương","ellipse":"Hình elíp","arrow":"Mũi tên","line":"Đường kẻ","freedraw":"Vẽ","text":"Văn bản","library":"Thư viện","lock":"Giữ dụng cũ hiện tại sau khi vẽ","penMode":"Chế độ bút vẽ - ngăn ngừa chạm nhầm","link":"Thêm/ Chỉnh sửa liên kết cho hình được chọn","eraser":"Xóa","frame":"","embeddable":"","laser":"","hand":"Tay kéo","extraTools":""},"headings":{"canvasActions":"Hành động canvas","selectedShapeActions":"Các hành động cho hình dạng đã chọn","shapes":"Các hình khối"},"hints":{"canvasPanning":"Để di chuyển canvas, giữ con lăn chuột hoặc phím cách trong khi kéo, hoặc sử dụng công cụ cầm tay","linearElement":"Ấn để bắt đầu nhiểm điểm vẽ, kéo để vẽ một đường thẳng","freeDraw":"Ấn bà kéo, thả khi bạn xong","text":"Mẹo: bạn có thể thêm văn bản tại bất cứ đâu bằng cách ấn hai lần bằng tool lựa chọn","embeddable":"","text_selected":"Ấn 2 lần hoặc nhấn ENTER để chỉnh văn bản","text_editing":"Nhấn Escape hoặc Ctrl/Cmd+ENTER để hoàn thành chỉnh sửa","linearElementMulti":"Nhấn vào điểm cuối hoặc nhấn Escape hoặc Enter để kết thúc","lockAngle":"Bạn có thể chỉnh lại góc bằng cách giữ phím SHIFT","resize":"Bạn có thể chỉnh tỷ lệ bằng cách giữ SHIFT khi chỉnh kích cỡ,\\ngiữ ALT để chỉnh kích cỡ từ trung tâm","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"Tính năng này có thể được bật bằng cách đặt cờ \\"dom.events.asyncClipboard.clipboardItem\\" thành \\"true\\". Để thay đổi cờ trình duyệt trong Firefox, hãy truy cập trang \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Không thể xem trước","canvasTooBig":"Canvas này có thể hơi lớn.","canvasTooBigTip":"Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút."},"errorSplash":{"headingMain":"","clearCanvasMessage":"Nếu không tải lại được, hãy thử ","clearCanvasCaveat":" Điều này sẽ dẫn đến mất dữ liệu bạn đã làm ","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Dọn canvas"},"publishDialog":{"title":"","itemName":"Tên món","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:","atleastOneLibItem":"Vui lòng chọn ít nhất một món thư viện để bắt đầu","republishWarning":"Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi."},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":"Xóa món đã chọn khỏi thư viện"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"canvas","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/zh-CN-json-670c28a6ae1e3ddecaa4.js b/public/excalidraw/excalidraw-assets-dev/locales/zh-CN-json-670c28a6ae1e3ddecaa4.js new file mode 100644 index 0000000..983715c --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/zh-CN-json-670c28a6ae1e3ddecaa4.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/zh-CN-json"],{ + +/***/ "../../locales/zh-CN.json": +/*!********************************!*\ + !*** ../../locales/zh-CN.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"粘贴","pasteAsPlaintext":"粘贴为纯文本","pasteCharts":"粘贴图表","selectAll":"全部选中","multiSelect":"添加元素到选区","moveCanvas":"移动画布","cut":"剪切","copy":"拷贝","copyAsPng":"复制为 PNG 到剪贴板","copyAsSvg":"复制为 SVG 到剪贴板","copyText":"复制文本到剪贴板","bringForward":"上移一层","sendToBack":"置于底层","bringToFront":"置于顶层","sendBackward":"下移一层","delete":"删除","copyStyles":"拷贝样式","pasteStyles":"粘贴样式","stroke":"描边","background":"背景","fill":"填充","strokeWidth":"描边宽度","strokeStyle":"边框样式","strokeStyle_solid":"实线","strokeStyle_dashed":"虚线","strokeStyle_dotted":"点虚线","sloppiness":"线条风格","opacity":"透明度","textAlign":"文本对齐","edges":"边角","sharp":"尖锐","round":"圆润","arrowheads":"端点","arrowhead_none":"无","arrowhead_arrow":"箭头","arrowhead_bar":"条状","arrowhead_dot":"圆点","arrowhead_triangle":"三角箭头","fontSize":"字体大小","fontFamily":"字体","addWatermark":"添加 “使用 Excalidraw 创建” 水印","handDrawn":"手写","normal":"普通","code":"代码","small":"小","medium":"中","large":"大","veryLarge":"加大","solid":"实心","hachure":"线条","zigzag":"之字形折线","crossHatch":"交叉线条","thin":"细","bold":"粗","left":"左对齐","center":"居中","right":"右对齐","extraBold":"特粗","architect":"朴素","artist":"艺术","cartoonist":"漫画家","fileTitle":"文件名","colorPicker":"取色器","canvasColors":"画布上的","canvasBackground":"画布背景","drawingCanvas":"绘制 Canvas","layers":"图层","actions":"操作","language":"语言","liveCollaboration":"实时协作...","duplicateSelection":"复制","untitled":"无标题","name":"名字","yourName":"您的姓名","madeWithExcalidraw":"使用 Excalidraw 创建","group":"编组","ungroup":"解除编组","collaborators":"协作者","showGrid":"显示网格","addToLibrary":"添加到素材库中","removeFromLibrary":"从素材库中移除","libraryLoadingMessage":"正在加载素材库…","libraries":"浏览素材库","loadingScene":"正在加载绘图…","align":"对齐","alignTop":"顶部对齐","alignBottom":"底端对齐","alignLeft":"左对齐","alignRight":"右对齐","centerVertically":"垂直居中","centerHorizontally":"水平居中","distributeHorizontally":"水平等距分布","distributeVertically":"垂直等距分布","flipHorizontal":"水平翻转","flipVertical":"垂直翻转","viewMode":"查看模式","share":"分享","showStroke":"显示描边颜色选择器","showBackground":"显示背景颜色选择器","toggleTheme":"切换主题","personalLib":"个人素材库","excalidrawLib":"Excalidraw 素材库","decreaseFontSize":"缩小字体大小","increaseFontSize":"放大字体大小","unbindText":"取消文本绑定","bindText":"将文本绑定到容器","createContainerFromText":"将文本包围在容器中","link":{"edit":"编辑链接","editEmbed":"编辑链接与嵌入","create":"新建链接","createEmbed":"创建链接与嵌入","label":"链接","labelEmbed":"链接与嵌入","empty":"未设定链接"},"lineEditor":{"edit":"编辑线条","exit":"退出线条编辑"},"elementLock":{"lock":"锁定","unlock":"解除锁定","lockAll":"全部锁定","unlockAll":"全部解锁"},"statusPublished":"已发布","sidebarLock":"侧边栏常驻","selectAllElementsInFrame":"选择画框中的所有元素","removeAllElementsFromFrame":"分离出画框中的所有元素","eyeDropper":"从画布上取色"},"library":{"noItems":"尚未添加任何项目……","hint_emptyLibrary":"选中画布上的项目添加到此处,或从下方的公共素材库中导入。","hint_emptyPrivateLibrary":"选中画布上的项目添加到此处。"},"buttons":{"clearReset":"重置画布","exportJSON":"导出为文件","exportImage":"导出图片...","export":"保存到...","copyToClipboard":"复制到剪贴板","save":"保存至当前文件","saveAs":"保存为","load":"打开","getShareableLink":"获取共享链接","close":"关闭","selectLanguage":"选择语言","scrollBackToContent":"滚动回到内容","zoomIn":"放大","zoomOut":"缩小","resetZoom":"重置缩放","menu":"菜单","done":"完成","edit":"编辑","undo":"撤销","redo":"重做","resetLibrary":"重置素材库","createNewRoom":"新建会议室","fullScreen":"全屏","darkMode":"深色模式","lightMode":"浅色模式","zenMode":"禅模式","objectsSnapMode":"吸附至对象","exitZenMode":"退出禅模式","cancel":"取消","clear":"清除","remove":"删除","embed":"切换嵌入","publishLibrary":"发布","submit":"提交","confirm":"确定","embeddableInteractionButton":"点击以开始交互"},"alerts":{"clearReset":"这将会清除整个画布。您是否要继续?","couldNotCreateShareableLink":"无法创建共享链接","couldNotCreateShareableLinkTooBig":"无法创建可共享链接:画布过大","couldNotLoadInvalidFile":"无法加载无效的文件","importBackendFailed":"从后端导入失败。","cannotExportEmptyCanvas":"无法导出空白画布。","couldNotCopyToClipboard":"无法复制到剪贴板。","decryptFailed":"无法解密数据。","uploadedSecurly":"上传已被端到端加密保护,这意味着 Excalidraw 的服务器和第三方都无法读取内容。","loadSceneOverridePrompt":"加载外部绘图将取代您现有的内容。您想要继续吗?","collabStopOverridePrompt":"停止会话将覆盖您先前本地存储的绘图。 您确定吗?\\n\\n(如果您想保持本地绘图,只需关闭浏览器选项卡。)","errorAddingToLibrary":"无法将项目添加到素材库中","errorRemovingFromLibrary":"无法从素材库中移除项目","confirmAddLibrary":"这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗?","imageDoesNotContainScene":"此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能?","cannotRestoreFromImage":"无法从此图像文件恢复画布","invalidSceneUrl":"无法从提供的 URL 导入场景。它或者格式不正确,或者不包含有效的 Excalidraw JSON 数据。","resetLibrary":"这将会清除你的素材库。你确定要这么做吗?","removeItemsFromsLibrary":"确定要从素材库中删除 {{count}} 个项目吗?","invalidEncryptionKey":"密钥必须包含22个字符。实时协作已被禁用。","collabOfflineWarning":"无网络连接。\\n您的改动将不会被保存!"},"errors":{"unsupportedFileType":"不支持的文件格式。","imageInsertError":"无法插入图像。请稍后再试……","fileTooBig":"文件过大。最大允许的大小为 {{maxSize}}。","svgImageInsertError":"无法插入 SVG 图像。该 SVG 标记似乎是无效的。","failedToFetchImage":"","invalidSVGString":"无效的 SVG。","cannotResolveCollabServer":"无法连接到实时协作服务器。请重新加载页面并重试。","importLibraryError":"无法加载素材库","collabSaveFailed":"无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。","collabSaveFailed_sizeExceeded":"无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。","brave_measure_text_error":{"line1":"您似乎正在使用 Brave 浏览器并启用了积极阻止指纹识别的设置。","line2":"这可能会破坏绘图中的 文本元素。","line3":"我们强烈建议禁用此设置。您可以按照这些步骤来设置。","line4":"如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 issue ,或者在 Discord 上反馈"},"libraryElementTypeError":{"embeddable":"嵌入元素不能添加到素材库。","image":"我们不久将支持添加图片到素材库"}},"toolBar":{"selection":"选择","image":"插入图像","rectangle":"矩形","diamond":"菱形","ellipse":"椭圆","arrow":"箭头","line":"线条","freedraw":"自由书写","text":"文字","library":"素材库","lock":"绘制后保持所选的工具栏状态","penMode":"笔模式 – 避免误触","link":"为选中的形状添加/更新链接","eraser":"橡皮","frame":"画框工具","embeddable":"嵌入网页","laser":"激光笔","hand":"抓手(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"画布动作","selectedShapeActions":"选定形状操作","shapes":"形状"},"hints":{"canvasPanning":"要移动画布,请按住鼠标滚轮或空格键同时拖拽鼠标,或使用抓手工具。","linearElement":"点击创建多个点 拖动创建直线","freeDraw":"点击并拖动,完成时松开","text":"提示:您也可以使用选择工具双击任意位置来添加文字","embeddable":"点击并拖动以创建嵌入网页","text_selected":"双击或按回车键以编辑文本","text_editing":"按下 Escape 或 CtrlOrCmd+ENTER 完成编辑","linearElementMulti":"点击最后一个点或按下 Esc/Enter 来完成","lockAngle":"可以按住 Shift 来约束角度","resize":"您可以按住SHIFT来限制比例大小,\\n按住ALT来调整中心大小","resizeImage":"按住SHIFT可以自由缩放,\\n按住ALT可以从中间缩放","rotate":"旋转时可以按住 Shift 来约束角度","lineEditor_info":"按住 CtrlOrCmd 并双击或按 CtrlOrCmd + Enter 来编辑点","lineEditor_pointSelected":"按下 Delete 移除点,CtrlOrCmd+D 以复制,拖动以移动","lineEditor_nothingSelected":"选择要编辑的点 (按住 SHIFT 选择多个),\\n或按住 Alt 并点击以添加新点","placeImage":"点击放置图像,或者点击并拖动以手动设置图像大小","publishLibrary":"发布您自己的素材库","bindTextToElement":"按下 Enter 以添加文本","deepBoxSelect":"按住 CtrlOrCmd 以深度选择,并避免拖拽","eraserRevert":"按住 Alt 以反选被标记删除的元素","firefox_clipboard_write":"将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项,请前往“about:config”页面。","disableSnapping":"按住 CtrlOrCmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"无法显示预览","canvasTooBig":"画布可能过大。","canvasTooBigTip":"提示:尝试将最远的元素移动到和其它元素更近一些。"},"errorSplash":{"headingMain":"遇到异常。请尝试。","clearCanvasMessage":"如果重新加载页面无效,请尝试。","clearCanvasCaveat":"这会造成当前工作丢失","trackedToSentry":"标识符为{{eventId}}的错误已在我们的系统中被记录","openIssueMessage":"我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。","sceneContent":"画布内容:"},"roomDialog":{"desc_intro":"你可以邀请其他人到目前的画面中与你协作。","desc_privacy":"别担心,该会话使用端到端加密,无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。","button_startSession":"开始会话","button_stopSession":"结束会话","desc_inProgressIntro":"实时协作会话进行中。","desc_shareLink":"分享此链接给你要协作的用户","desc_exitSession":"停止会话将中断您与房间的连接,但您依然可以在本地继续使用画布。请注意,这不会影响到其他用户,他们仍可以在他们的版本上继续协作。","shareTitle":"加入 Excalidraw 实时协作会话"},"errorDialog":{"title":"错误"},"exportDialog":{"disk_title":"保存到本地","disk_details":"将画布数据导出为文件,以便以后导入","disk_button":"保存为文件","link_title":"分享链接","link_details":"导出为只读链接。","link_button":"导出链接","excalidrawplus_description":"将画布保存到您的 Excalidraw+ 工作区。","excalidrawplus_button":"导出","excalidrawplus_exportError":"暂时无法导出到 Excalidraw+ ..."},"helpDialog":{"blog":"浏览我们的博客","click":"单击","deepSelect":"深度选择","deepBoxSelect":"在方框内深度选择并避免拖拽","curvedArrow":"曲线箭头","curvedLine":"曲线","documentation":"文档","doubleClick":"双击","drag":"拖动","editor":"编辑器","editLineArrowPoints":"编辑线条或箭头的点","editText":"添加或编辑文本","github":"提交问题","howto":"帮助文档","or":"或","preventBinding":"禁用箭头吸附","tools":"工具","shortcuts":"快捷键列表","textFinish":"完成编辑 (文本编辑器)","textNewLine":"添加新行(文本编辑器)","title":"帮助","view":"视图","zoomToFit":"缩放以适应所有元素","zoomToSelection":"缩放到选区","toggleElementLock":"锁定/解锁","movePageUpDown":"上下移动页面","movePageLeftRight":"左右移动页面"},"clearCanvasDialog":{"title":"清除画布"},"publishDialog":{"title":"发布素材库","itemName":"项目名称","authorName":"作者名","githubUsername":"GitHub 用户名","twitterUsername":"Twitter 用户名","libraryName":"名称","libraryDesc":"简介","website":"网址","placeholder":{"authorName":"您的名字或用户名","libraryName":"素材库名称","libraryDesc":"介绍您的素材库,让人们了解其用途","githubHandle":"GitHub 用户名(可选),填写后,您可以编辑已提交待审的素材库","twitterHandle":"Twitter 用户名(可选),填写后,当我们在Twitter发布推广信息时便可提及您","website":"您个人网站的或任意的链接(可选)"},"errors":{"required":"必填","website":"输入一个有效的URL"},"noteDescription":"提交后,您的素材库将被包含在公共素材库广场以供其他人在绘图中使用。","noteGuidelines":"提交的素材库需先经人工审核。在提交之前,请先阅读指南 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。","noteLicense":"提交即表明您已同意素材库将遵循 MIT 许可证,简而言之,任何人都可以不受限制地使用它们。","noteItems":"素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:","atleastOneLibItem":"请选择至少一个素材库以开始","republishWarning":"注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。"},"publishSuccessDialog":{"title":"素材库已提交","content":"谢谢你 {{authorName}}。您的素材库已被提交审核。请点击此处跟进此次提交的状态"},"confirmDialog":{"resetLibrary":"重置素材库","removeItemsFromLib":"从素材库中删除选中的项目"},"imageExportDialog":{"header":"导出图片","label":{"withBackground":"背景","onlySelected":"仅选中","darkMode":"深色模式","embedScene":"包含画布数据","scale":"缩放比例","padding":"内边距"},"tooltip":{"embedScene":"画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。\\n将会增加导出文件的大小。"},"title":{"exportToPng":"导出为 PNG","exportToSvg":"导出为 SVG","copyPngToClipboard":"复制 PNG 到剪切板"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"复制到剪贴板"}},"encrypted":{"tooltip":"您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。","link":"Excalidraw 中关于端到端加密的博客"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"画布","selected":"选中","storage":"存储","title":"详细统计信息","total":"总计","version":"版本","versionCopy":"点击复制","versionNotAvailable":"版本不可用","width":"宽度"},"toast":{"addedToLibrary":"添加到素材库中","copyStyles":"样式已拷贝。","copyToClipboard":"已复制到剪切板。","copyToClipboardAsPng":"已将 {{exportSelection}} 作为 PNG 复制到剪贴板\\n({{exportColorScheme}})","fileSaved":"文件已保存。","fileSavedToFilename":"保存到 {filename}","canvas":"画布","selection":"所选项","pasteAsSingleElement":"使用 {{shortcut}} 粘贴为单个元素,\\n或粘贴到现有的文本编辑器里","unableToEmbed":"目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单","unrecognizedLinkFormat":"您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"红","pink":"粉红","grape":"紫红","violet":"蓝紫","gray":"灰","blue":"蓝","cyan":"青","teal":"蓝绿","green":"绿","yellow":"黄","orange":"橙","bronze":"古铜"},"welcomeScreen":{"app":{"center_heading":"您的所有数据都储存在浏览器本地。","center_heading_plus":"是否前往 Excalidraw+ ?","menuHint":"导出、首选项、语言……"},"defaults":{"menuHint":"导出、首选项……","center_heading":"图,化繁为简。","toolbarHint":"选择工具并开始绘图!","helpHint":"快捷键和帮助"}},"colorPicker":{"mostUsedCustomColors":"常用自定义颜色","colors":"颜色","shades":"色调明暗","hexCode":"十六进制值","noShades":"此颜色没有可用的明暗变化"},"overwriteConfirm":{"action":{"exportToImage":{"title":"导出为图片","button":"导出为图片","description":"将画布数据导出为图片,以便以后导入。"},"saveToDisk":{"title":"保存到本地","button":"保存到本地","description":"将画布数据导出为文件,以便以后导入。"},"excalidrawPlus":{"title":"Excalidraw+","button":"导出到 Excalidraw+","description":"将画布保存到您的 Excalidraw+ 工作区。"}},"modal":{"loadFromFile":{"title":"从文件加载","button":"从文件加载","description":"从文件加载将替换您现有的内容

您可以先使用下列方式备份您的绘图。"},"shareableLink":{"title":"从链接加载","button":"替换我的内容","description":"加载外部绘图将替换您现有的内容

您可以先使用下列方式备份您的绘图。"}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/zh-HK-json-93b9b676d4f4b5702797.js b/public/excalidraw/excalidraw-assets-dev/locales/zh-HK-json-93b9b676d4f4b5702797.js new file mode 100644 index 0000000..35481c0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/zh-HK-json-93b9b676d4f4b5702797.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/zh-HK-json"],{ + +/***/ "../../locales/zh-HK.json": +/*!********************************!*\ + !*** ../../locales/zh-HK.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"多重選取","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以 PNG 格式複製","copyAsSvg":"以 SVG 格式複製","copyText":"","bringForward":"往上一層移動","sendToBack":"移到最底層","bringToFront":"移到最上層","sendBackward":"往下一層移動","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"套用樣式","stroke":"筆跡顏色","background":"填充顏色","fill":"背景樣式","strokeWidth":"筆跡寬度","strokeStyle":"筆跡線條","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線(較密)","strokeStyle_dotted":"虛線(較疏)","sloppiness":"筆跡風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊角樣式","sharp":"銳角","round":"圓角","arrowheads":"箭嘴","arrowhead_none":"無箭嘴","arrowhead_arrow":"普通箭嘴","arrowhead_bar":"平頭條狀","arrowhead_dot":"圓點","arrowhead_triangle":"三角箭嘴","fontSize":"字型大小","fontFamily":"字體","addWatermark":"加入「使用 Excalidraw 製圖」水印","handDrawn":"手繪體","normal":"電腦字體","code":"等寬體","small":"細","medium":"中","large":"大","veryLarge":"勁大","solid":"實心","hachure":"斜線","zigzag":"","crossHatch":"交叉格仔","thin":"幼","bold":"粗","left":"靠左對齊","center":"置中對齊","right":"靠右對齊","extraBold":"勁粗","architect":"手繪風格","artist":"藝術家風格","cartoonist":"卡通風格","fileTitle":"檔案名稱","colorPicker":"","canvasColors":"","canvasBackground":"畫布背景顏色","drawingCanvas":"畫布","layers":"圖層","actions":"動作","language":"🌏 語言","liveCollaboration":"","duplicateSelection":"製作副本","untitled":"未命名的作品","name":"","yourName":"你的名稱","madeWithExcalidraw":"使用 Excalidraw 製圖","group":"建立物件群組","ungroup":"取消物件群組","collaborators":"已連線的協作者","showGrid":"顯示網格","addToLibrary":"加入作品庫","removeFromLibrary":"從作品庫中移除","libraryLoadingMessage":"正在載入作品庫…","libraries":"瀏覽作品庫","loadingScene":"載入畫布中…","align":"物件對齊","alignTop":"水平置頂","alignBottom":"水平置底","alignLeft":"垂直靠左對齊","alignRight":"垂直靠右對齊","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"左右等距","distributeVertically":"上下等距","flipHorizontal":"左右反轉","flipVertical":"上下反轉","viewMode":"唯讀模式","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"清空畫布","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"【‼️ 警告 ‼️ 無法復原的動作】你確定要清空呢塊畫布嗎?","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"無嘢可以匯出喎~畫吓嘢先?","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"畫布動作","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"塊畫布太大啦,縮細啲先啦?","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"如果重新整理頁面都係睇唔到,你可以","clearCanvasCaveat":"(注意:呢個動作會直接丟棄你嘅作品,並且無法復原)","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"畫布","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/locales/zh-TW-json-805d10b0eed9ca51b318.js b/public/excalidraw/excalidraw-assets-dev/locales/zh-TW-json-805d10b0eed9ca51b318.js new file mode 100644 index 0000000..18e502c --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/locales/zh-TW-json-805d10b0eed9ca51b318.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["locales/zh-TW-json"],{ + +/***/ "../../locales/zh-TW.json": +/*!********************************!*\ + !*** ../../locales/zh-TW.json ***! + \********************************/ +/***/ ((module) => { + +module.exports = JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"以純文字貼上","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"將物件加入選取範圍","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以PNG格式儲存到剪貼板","copyAsSvg":"以SVG格式複製到剪貼板","copyText":"以文字格式複製至剪貼簿","bringForward":"上移一層","sendToBack":"移到最底層","bringToFront":"置於最頂層","sendBackward":"往後移一層","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"貼上樣式","stroke":"筆畫","background":"背景","fill":"填滿","strokeWidth":"筆跡寬度","strokeStyle":"筆畫樣式","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線","strokeStyle_dotted":"點線","sloppiness":"線條風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊緣","sharp":"尖銳","round":"平滑","arrowheads":"箭頭","arrowhead_none":"無","arrowhead_arrow":"箭頭","arrowhead_bar":"條狀箭頭","arrowhead_dot":"點箭頭","arrowhead_triangle":"三角形","fontSize":"字型大小","fontFamily":"字體集","addWatermark":"加上 \\"Made with Excalidraw\\" 浮水印","handDrawn":"手寫","normal":"一般","code":"代碼","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"實心","hachure":"斜線筆觸","zigzag":"Z字形","crossHatch":"交叉筆觸","thin":"細","bold":"粗","left":"左側","center":"置中","right":"右側","extraBold":"極粗","architect":"精確","artist":"藝術","cartoonist":"卡通","fileTitle":"檔案名稱","colorPicker":"色彩選擇工具","canvasColors":"使用於畫布","canvasBackground":"Canvas 背景","drawingCanvas":"繪圖 canvas","layers":"圖層","actions":"動作","language":"語言","liveCollaboration":"即時協作...","duplicateSelection":"複製","untitled":"無標題","name":"名稱","yourName":"你的名稱","madeWithExcalidraw":"以 Excalidraw 製作","group":"建立群組","ungroup":"取消群組","collaborators":"協作者","showGrid":"顯示格線","addToLibrary":"加入資料庫","removeFromLibrary":"從資料庫中移除","libraryLoadingMessage":"資料庫讀取中…","libraries":"瀏覽資料庫","loadingScene":"場景讀取中…","align":"對齊","alignTop":"對齊頂部","alignBottom":"對齊底部","alignLeft":"對齊左側","alignRight":"對齊右側","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"水平分布","distributeVertically":"垂直分布","flipHorizontal":"水平翻轉","flipVertical":"垂直翻轉","viewMode":"檢視模式","share":"共享","showStroke":"顯示線條檢色器","showBackground":"顯示背景檢色器","toggleTheme":"切換主題","personalLib":"個人資料庫","excalidrawLib":"Excalidraw 資料庫","decreaseFontSize":"縮小文字","increaseFontSize":"放大文字","unbindText":"取消綁定文字","bindText":"結合文字至容器","createContainerFromText":"將文字包於容器中","link":{"edit":"編輯連結","editEmbed":"編輯連結&嵌入","create":"建立連結","createEmbed":"建立連結&嵌入","label":"連結","labelEmbed":"連結&嵌入","empty":"未設定連結"},"lineEditor":{"edit":"編輯線條","exit":"結束線條編輯"},"elementLock":{"lock":"鎖定","unlock":"解鎖","lockAll":"全部鎖定","unlockAll":"全部解鎖"},"statusPublished":"已發布","sidebarLock":"側欄維持開啟","selectAllElementsInFrame":"選取框架內的所有元素","removeAllElementsFromFrame":"從框架內移除所有元素","eyeDropper":"從畫布中選取顏色"},"library":{"noItems":"尚未加入任何物件...","hint_emptyLibrary":"選取畫布上的物件以加入,或從下方的公開 repository 中安裝資料庫","hint_emptyPrivateLibrary":"選擇畫布上的物件以在此加入"},"buttons":{"clearReset":"重置 canvas","exportJSON":"匯出至檔案","exportImage":"匯出圖片","export":"儲存至...","copyToClipboard":"複製至剪貼簿","save":"儲存目前檔案","saveAs":"儲存為","load":"開啟","getShareableLink":"取得共享連結","close":"關閉","selectLanguage":"選擇語言","scrollBackToContent":"捲動回到內容","zoomIn":"放大","zoomOut":"縮小","resetZoom":"重設縮放","menu":"選單","done":"完成","edit":"編輯","undo":"復原","redo":"重做","resetLibrary":"重設資料庫","createNewRoom":"建立新協作會議室","fullScreen":"全螢幕","darkMode":"深色模式","lightMode":"淺色模式","zenMode":"專注模式","objectsSnapMode":"吸附至物件","exitZenMode":"離開專注模式","cancel":"取消","clear":"清除","remove":"刪除","embed":"切換嵌入","publishLibrary":"發布","submit":"送出","confirm":"確認","embeddableInteractionButton":"點擊以互動"},"alerts":{"clearReset":"這將會清除整個 canvas。你確定嗎?","couldNotCreateShareableLink":"無法建立共享連結。","couldNotCreateShareableLinkTooBig":"無法建立共享連結:場景太大","couldNotLoadInvalidFile":"無法讀取失效的檔案。","importBackendFailed":"後端讀取失敗。","cannotExportEmptyCanvas":"無法輸出空白的 canvas。","couldNotCopyToClipboard":"無法複製到剪貼簿","decryptFailed":"無法解密資料。","uploadedSecurly":"上傳已通過 end-to-end 加密,Excalidraw 伺服器和第三方無法皆讀取其內容。","loadSceneOverridePrompt":"讀取外部圖樣將取代目前的內容。是否要繼續?","collabStopOverridePrompt":"停止連線將覆蓋您先前於本機儲存的繪圖進度,是否確認?\\n\\n(如要保留原有的本機繪圖進度,直接關閉瀏覽器分頁即可。)","errorAddingToLibrary":"無法於此資料庫加入項目","errorRemovingFromLibrary":"無法由此資料庫移除項目","confirmAddLibrary":"這將會將 {{numShapes}} 個圖形加入你的資料庫,你確定嗎?","imageDoesNotContainScene":"此圖檔中未包含場景資料。輸出檔案時是否有包含場景資料?","cannotRestoreFromImage":"無法由此檔案回復場景。","invalidSceneUrl":"無法由提供的 URL 匯入場景。可能是發生異常,或未包含有效的 Excalidraw JSON 資料。","resetLibrary":"這會清除您的資料庫,是否確定?","removeItemsFromsLibrary":"從資料庫刪除 {{count}} 項?","invalidEncryptionKey":"加密鍵必須為22字元。即時協作已停用。","collabOfflineWarning":"沒有可用的網路連線。\\n變更無法儲存!"},"errors":{"unsupportedFileType":"不支援的檔案類型。","imageInsertError":"無法插入圖片。請稍後再試…","fileTooBig":"檔案過大。可接受的最大尺寸為 {{maxSize}} 。","svgImageInsertError":"無法插入 SVG 圖片。此 SVG 檔案有問題。","failedToFetchImage":"無法獲取圖片。","invalidSVGString":"無效的 SVG。","cannotResolveCollabServer":"無法連結至 collab 伺服器。請重新整理後再試一次。","importLibraryError":"無法載入資料庫","collabSaveFailed":"無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。","collabSaveFailed_sizeExceeded":"無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。","brave_measure_text_error":{"line1":"看起來您開啟了 Brave 瀏覽器的 Aggressively Block Fingerprinting 設定。","line2":"這可能造成您畫布中 文字元素 的異常。","line3":"我們強烈建議您關閉此設定。您可以依照 這些步驟 來進行。","line4":"若關閉此設定並未修復文字元素的顯示問題,請回報於我們 GitHub 上的 issue,或在 Discord 上告訴我們。"},"libraryElementTypeError":{"embeddable":"可嵌入元素無法加入資料庫","image":"即將支援加入圖片至資料庫!"}},"toolBar":{"selection":"選取","image":"插入圖片","rectangle":"長方形","diamond":"菱形","ellipse":"橢圓","arrow":"箭頭","line":"線條","freedraw":"繪圖","text":"文字","library":"資料庫","lock":"可連續使用選取的工具","penMode":"筆模式 - 避免觸摸","link":"為所選的形狀增加\\b/更新連結","eraser":"橡皮擦","frame":"框架工具","embeddable":"嵌入網站","laser":"雷射筆","hand":"手形(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"canvas 動作","selectedShapeActions":"選取圖形動作","shapes":"形狀"},"hints":{"canvasPanning":"若要移動畫布,請在拖曳時按住滑鼠滾輪或空白鍵,或使用手形工具","linearElement":"點擊以繪製多點曲線;或拖曳以繪製直線","freeDraw":"點擊並拖曳來繪圖,放開即結束","text":"提示:亦可使用選取工具在任何地方雙擊來加入文字","embeddable":"點擊並拖移以建立嵌入網站","text_selected":"雙擊滑鼠或按 Enter 以編輯文字","text_editing":"按跳脫鍵或 Ctrl 或 Cmd + Enter 以結束編輯","linearElementMulti":"按下 Escape 或 Enter 以結束繪製","lockAngle":"按住 SHIFT 可限制旋轉角度","resize":"縮放時按住 Shift 可保持原比例縮放;\\\\n按住 Alt 可由中心點進行縮放","resizeImage":"按住 SHIFT 可任意縮放,按住 ALT 可由中央縮放。","rotate":"旋轉時按住 Shift 可限制旋轉角度","lineEditor_info":"按住 Ctrl 或 Cmd 並雙擊或按住 Ctrl 或 Cmd + Enter 來編輯控制點","lineEditor_pointSelected":"按下 Delete 可移除錨點;Ctrl 或 Cmd + D 可複製;或可拖曳來移動","lineEditor_nothingSelected":"選擇要編輯的錨點(按住 SHIFT 可多選),\\n或按住 Alt 並點擊以增加新錨點。","placeImage":"點擊以放置圖片,或點擊並拖曳以手動調整其尺寸。","publishLibrary":"發布個人資料庫","bindTextToElement":"按下 Enter 以加入文字。","deepBoxSelect":"按住 Ctrl 或 Cmd 以深度選取並避免拖曳","eraserRevert":"按住 Alt 以反選取已標記待刪除的元素","firefox_clipboard_write":"此功能有機會透過將 \\"dom.events.asyncClipboard.clipboardItem\\" 設定為 \\"true\\" 來開啟。\\n若要變更 Firefox 瀏覽器的此設定值,請至 \\"about:config\\" 頁面。","disableSnapping":"按住 Ctrl 或 Cmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"畫布可能過大","canvasTooBigTip":"提示:可嘗試將最遠的元素移動至較集中的位置"},"errorSplash":{"headingMain":"發生錯誤,嘗試","clearCanvasMessage":"若重新載入仍無法解決問題,嘗試","clearCanvasCaveat":"此動作將造成目前的作品被移除。","trackedToSentry":"此錯誤與其識別碼{{eventId}}將由系統記錄。","openIssueMessage":"我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的請將下列資訊複製貼上至 GitHub issue 中。","sceneContent":"作品內容:"},"roomDialog":{"desc_intro":"你可以邀請其他人一起協作目前的作品。","desc_privacy":"連線使用 end-to-end 加密故無須擔心作品的安全性。即使是我們的伺服器也無法取得其內容。","button_startSession":"開始連線","button_stopSession":"停止連線","desc_inProgressIntro":"即時協作連線正在進行中。","desc_shareLink":"將此連結分享給欲協作的對象:","desc_exitSession":"停止連線將中斷你與協作會議室的連結,但你仍可於本機編輯此作品。意指停止連線後你的編輯不會被先前共同協作的人看見,且他們可繼續共同協作另一個版本。","shareTitle":"加入 Excalidraw 上的即時協作會議室"},"errorDialog":{"title":"錯誤"},"exportDialog":{"disk_title":"儲存至硬碟","disk_details":"將場景匯出為可供匯入之檔案","disk_button":"儲存至檔案","link_title":"可共享連結","link_details":"匯出為唯讀連結","link_button":"匯出為連結","excalidrawplus_description":"將此場景儲存至你的 Excalidraw+ 工作區","excalidrawplus_button":"輸出","excalidrawplus_exportError":"目前無法輸出至 Excalidraw+"},"helpDialog":{"blog":"閱讀部落格","click":"點擊","deepSelect":"深度選取","deepBoxSelect":"在容器內深度選取並避免拖曳","curvedArrow":"曲箭頭","curvedLine":"曲線","documentation":"文件","doubleClick":"雙擊","drag":"拖曳","editor":"編輯器","editLineArrowPoints":"編輯線/箭頭控制點","editText":"編輯文字/增加標籤","github":"發現異常?回報問題","howto":"參照我們的說明","or":"或","preventBinding":"避免箭號連結","tools":"工具","shortcuts":"鍵盤快速鍵","textFinish":"完成編輯(文字編輯器)","textNewLine":"換行(文字編輯器)","title":"說明","view":"檢視","zoomToFit":"放大至填滿畫面","zoomToSelection":"縮放至選取區","toggleElementLock":"鎖定/解鎖已選的項目","movePageUpDown":"向上/下移動頁面","movePageLeftRight":"向左/右移動頁面"},"clearCanvasDialog":{"title":"清除畫布"},"publishDialog":{"title":"發布資料庫","itemName":"項目名稱","authorName":"作者名稱","githubUsername":"GitHub 帳號","twitterUsername":"Twitter 帳號","libraryName":"資料庫名稱","libraryDesc":"資料庫說明","website":"網站","placeholder":{"authorName":"您的名稱或帳號","libraryName":"您的資料庫名稱","libraryDesc":"提供您的資料庫說明以利他人理解其用途","githubHandle":"Github handle(選填),填寫後您可編輯已送出待審查的資料庫","twitterHandle":"Twitter 帳號(選填),填寫後若我們在 Twitter 推廣時可提及您","website":"您個人網站或其他網站的連結(選填)"},"errors":{"required":"必填","website":"請輸入有效的 URL"},"noteDescription":"送出您的資料庫後將被包含於公開資料庫 repository以利他人在其繪圖中使用。","noteGuidelines":"資料庫需先經人工審查。請閱讀說明文件再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。","noteLicense":"送出即代表您同意此資料庫將發布時使用 MIT 授權,簡單來說是指任何人都能不受限制的使用。","noteItems":"每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目:","atleastOneLibItem":"請選擇至少一項資料庫項目","republishWarning":"注意:部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。"},"publishSuccessDialog":{"title":"資料庫已送出","content":"感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態在此"},"confirmDialog":{"resetLibrary":"重設資料庫","removeItemsFromLib":"從資料庫移除所選的項目"},"imageExportDialog":{"header":"匯出圖片","label":{"withBackground":"背景","onlySelected":"僅選取物件","darkMode":"深色模式","embedScene":"嵌入場景","scale":"縮放比例","padding":"內間距"},"tooltip":{"embedScene":"用於回復場景的場景資料會被包含在輸出的 PNG/SVG 檔案中。\\n會增加輸出的檔案大小。"},"title":{"exportToPng":"輸出成 PNG","exportToSvg":"輸出成 SVG","copyPngToClipboard":"複製 PNG 至剪貼簿"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"複製至剪貼簿"}},"encrypted":{"tooltip":"你的作品已使用 end-to-end 方式加密,Excalidraw 的伺服器也無法取得其內容。","link":"Excalidraw 端到端加密的相關部落格文章"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"場景","selected":"已選","storage":"儲存","title":"詳細統計","total":"合計","version":"版本","versionCopy":"點擊複製","versionNotAvailable":"無法取得版本","width":"寬度"},"toast":{"addedToLibrary":"加入資料庫","copyStyles":"已複製樣式","copyToClipboard":"複製至剪貼簿。","copyToClipboardAsPng":"以 PNG 格式將 {{exportSelection}} 複製至剪貼簿\\n({{exportColorScheme}})","fileSaved":"已儲存檔案。","fileSavedToFilename":"儲存為 {filename}","canvas":"畫布","selection":"已選項目","pasteAsSingleElement":"使用 {{shortcut}} 以做為單一物件貼上,\\n或貼上至現有的文字編輯器","unableToEmbed":"目前不允許嵌入此網址。您可至 GitHub 提出 issue 以要求將此網址加入合格名單。","unrecognizedLinkFormat":"您嵌入的連結格式不符。請嘗試貼入原網站所提供的「嵌入」字串。"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"紅","pink":"粉紅","grape":"深紫","violet":"藍紫","gray":"灰","blue":"藍","cyan":"青","teal":"藍綠","green":"綠","yellow":"黃","orange":"橘","bronze":"銅"},"welcomeScreen":{"app":{"center_heading":"所有資料皆已在瀏覽器中儲存於本機","center_heading_plus":"您是否是要前往 Excalidraw+ ?","menuHint":"輸出、偏好設定、語言..."},"defaults":{"menuHint":"輸出、偏好設定及其他...","center_heading":"圖表。製作。超簡單。","toolbarHint":"選個工具開始畫圖吧!","helpHint":"快速鍵與說明"}},"colorPicker":{"mostUsedCustomColors":"最常使用的自訂顏色","colors":"顏色","shades":"漸變色","hexCode":"Hex 碼","noShades":"沒有此顏色的漸變色"},"overwriteConfirm":{"action":{"exportToImage":{"title":"匯出為圖片","button":"匯出為圖片","description":"將場景匯出為可供匯入的圖片檔案"},"saveToDisk":{"title":"儲存至硬碟","button":"儲存至硬碟","description":"將場景匯出為可供匯入的檔案"},"excalidrawPlus":{"title":"Excalidraw+","button":"匯出至 Excalidraw+","description":"將此場景儲存至您的 Excalidraw+ 工作區"}},"modal":{"loadFromFile":{"title":"從檔案載入","button":"從檔案載入","description":"從檔案載入將取代您目前的內容

可先使用下方的選項備份您的繪圖。"},"shareableLink":{"title":"從連結載入","button":"取代我的內容","description":"載入外部繪圖將取代您目前的內容

可先使用下方的選項備份您的繪圖。"}}}}'); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets-dev/vendor-39727f4653a274cf18f6.js b/public/excalidraw/excalidraw-assets-dev/vendor-39727f4653a274cf18f6.js new file mode 100644 index 0000000..d7fa966 --- /dev/null +++ b/public/excalidraw/excalidraw-assets-dev/vendor-39727f4653a274cf18f6.js @@ -0,0 +1,11393 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || []).push([["vendor"],{ + +/***/ "../../../node_modules/@excalidraw/markdown-to-text/dist/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/markdown-to-text/dist/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.removeMarkdown = void 0;\n/**\n * @function removeMarkdown\n *\n * @description\n * Parse the markdown and returns a string\n *\n * @param markdown - The markdown string to parse\n * @param options - The options for the function\n *\n * @returns The parsed plain text\n */\nvar removeMarkdown = function (markdown, options) {\n if (options === void 0) { options = {\n listUnicodeChar: \"\",\n }; }\n options = options || {};\n options.listUnicodeChar = options.hasOwnProperty(\"listUnicodeChar\")\n ? options.listUnicodeChar\n : false;\n options.stripListLeaders = options.hasOwnProperty(\"stripListLeaders\")\n ? options.stripListLeaders\n : true;\n options.gfm = options.hasOwnProperty(\"gfm\") ? options.gfm : true;\n options.useImgAltText = options.hasOwnProperty(\"useImgAltText\")\n ? options.useImgAltText\n : true;\n options.preserveLinks = options.hasOwnProperty(\"preserveLinks\")\n ? options.preserveLinks\n : false;\n var output = markdown || \"\";\n // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*$/gm, \"\");\n try {\n if (options.stripListLeaders) {\n if (options.listUnicodeChar)\n output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + \" $1\");\n else\n output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, \"$1\");\n }\n if (options.gfm) {\n output = output\n // Header\n .replace(/\\n={2,}/g, \"\\n\")\n // Fenced codeblocks\n .replace(/~{3}.*\\n/g, \"\")\n // Strikethrough\n .replace(/~~/g, \"\")\n // Fenced codeblocks\n .replace(/`{3}.*\\n/g, \"\");\n }\n if (options.preserveLinks) {\n // Remove inline links while preserving the links\n output = output.replace(/\\[(.*?)\\][\\[\\(](.*?)[\\]\\)]/g, \"$1 ($2)\");\n }\n output = output\n // Remove HTML tags\n .replace(/<[^>]*>/g, \"\")\n // Remove setext-style headers\n .replace(/^[=\\-]{2,}\\s*$/g, \"\")\n // Remove footnotes?\n .replace(/\\[\\^.+?\\](\\: .*?$)?/g, \"\")\n .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, \"\")\n // Remove images\n .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? \"$1\" : \"\")\n // Remove inline links\n .replace(/\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, \"$1\")\n // Remove blockquotes\n .replace(/^\\s{0,3}>\\s?/g, \"\")\n .replace(/(^|\\n)\\s{0,3}>\\s?/g, \"\\n\\n\")\n // Remove reference-style links?\n .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, \"\")\n // Remove atx-style headers\n .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} {0,}(\\n)?\\s{0,}$/gm, \"$1$2$3\")\n // Remove emphasis (repeat the line to remove double emphasis)\n .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, \"$2\")\n .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, \"$2\")\n // Remove code blocks\n .replace(/(`{3,})(.*?)\\1/gm, \"$2\")\n // Remove inline code\n .replace(/`(.+?)`/g, \"$1\")\n // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n .replace(/\\n{2,}/g, \"\\n\\n\");\n }\n catch (e) {\n console.error(e);\n return markdown;\n }\n return output;\n};\nexports.removeMarkdown = removeMarkdown;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21hcmtkb3duLXRvLXRleHQvZGlzdC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxHQUFHO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLEdBQUc7QUFDakM7QUFDQSw0QkFBNEIsRUFBRTtBQUM5QjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsRUFBRTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsR0FBRztBQUNoQztBQUNBO0FBQ0EseUJBQXlCLElBQUk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixJQUFJO0FBQzlCLCtCQUErQixJQUFJO0FBQ25DO0FBQ0EsMEJBQTBCLElBQUk7QUFDOUI7QUFDQSwrQkFBK0IsR0FBRyxFQUFFLElBQUksTUFBTSxHQUFHLFFBQVEsR0FBRyxFQUFFLEtBQUssR0FBRyxRQUFRLEdBQUc7QUFDakY7QUFDQSw2QkFBNkIsSUFBSSxVQUFVLElBQUk7QUFDL0MsNkJBQTZCLElBQUksVUFBVSxJQUFJO0FBQy9DO0FBQ0EseUJBQXlCLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21hcmtkb3duLXRvLXRleHQvZGlzdC9pbmRleC5qcz9jMDcyIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZW1vdmVNYXJrZG93biA9IHZvaWQgMDtcbi8qKlxuICogQGZ1bmN0aW9uIHJlbW92ZU1hcmtkb3duXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBQYXJzZSB0aGUgbWFya2Rvd24gYW5kIHJldHVybnMgYSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gbWFya2Rvd24gLSBUaGUgbWFya2Rvd24gc3RyaW5nIHRvIHBhcnNlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb25cbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHBsYWluIHRleHRcbiAqL1xudmFyIHJlbW92ZU1hcmtkb3duID0gZnVuY3Rpb24gKG1hcmtkb3duLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge1xuICAgICAgICBsaXN0VW5pY29kZUNoYXI6IFwiXCIsXG4gICAgfTsgfVxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIG9wdGlvbnMubGlzdFVuaWNvZGVDaGFyID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcImxpc3RVbmljb2RlQ2hhclwiKVxuICAgICAgICA/IG9wdGlvbnMubGlzdFVuaWNvZGVDaGFyXG4gICAgICAgIDogZmFsc2U7XG4gICAgb3B0aW9ucy5zdHJpcExpc3RMZWFkZXJzID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInN0cmlwTGlzdExlYWRlcnNcIilcbiAgICAgICAgPyBvcHRpb25zLnN0cmlwTGlzdExlYWRlcnNcbiAgICAgICAgOiB0cnVlO1xuICAgIG9wdGlvbnMuZ2ZtID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcImdmbVwiKSA/IG9wdGlvbnMuZ2ZtIDogdHJ1ZTtcbiAgICBvcHRpb25zLnVzZUltZ0FsdFRleHQgPSBvcHRpb25zLmhhc093blByb3BlcnR5KFwidXNlSW1nQWx0VGV4dFwiKVxuICAgICAgICA/IG9wdGlvbnMudXNlSW1nQWx0VGV4dFxuICAgICAgICA6IHRydWU7XG4gICAgb3B0aW9ucy5wcmVzZXJ2ZUxpbmtzID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInByZXNlcnZlTGlua3NcIilcbiAgICAgICAgPyBvcHRpb25zLnByZXNlcnZlTGlua3NcbiAgICAgICAgOiBmYWxzZTtcbiAgICB2YXIgb3V0cHV0ID0gbWFya2Rvd24gfHwgXCJcIjtcbiAgICAvLyBSZW1vdmUgaG9yaXpvbnRhbCBydWxlcyAoc3RyaXBMaXN0SGVhZGVycyBjb25mbGljdCB3aXRoIHRoaXMgcnVsZSwgd2hpY2ggaXMgd2h5IGl0IGhhcyBiZWVuIG1vdmVkIHRvIHRoZSB0b3ApXG4gICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL14oLVxccyo/fFxcKlxccyo/fF9cXHMqPyl7Myx9XFxzKiQvZ20sIFwiXCIpO1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChvcHRpb25zLnN0cmlwTGlzdExlYWRlcnMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmxpc3RVbmljb2RlQ2hhcilcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXihbXFxzXFx0XSopKFtcXCpcXC1cXCtdfFxcZCtcXC4pXFxzKy9nbSwgb3B0aW9ucy5saXN0VW5pY29kZUNoYXIgKyBcIiAkMVwiKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQucmVwbGFjZSgvXihbXFxzXFx0XSopKFtcXCpcXC1cXCtdfFxcZCtcXC4pXFxzKy9nbSwgXCIkMVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5nZm0pIHtcbiAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dFxuICAgICAgICAgICAgICAgIC8vIEhlYWRlclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXG49ezIsfS9nLCBcIlxcblwiKVxuICAgICAgICAgICAgICAgIC8vIEZlbmNlZCBjb2RlYmxvY2tzXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL357M30uKlxcbi9nLCBcIlwiKVxuICAgICAgICAgICAgICAgIC8vIFN0cmlrZXRocm91Z2hcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvfn4vZywgXCJcIilcbiAgICAgICAgICAgICAgICAvLyBGZW5jZWQgY29kZWJsb2Nrc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9gezN9LipcXG4vZywgXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VydmVMaW5rcykge1xuICAgICAgICAgICAgLy8gUmVtb3ZlIGlubGluZSBsaW5rcyB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBsaW5rc1xuICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcWyguKj8pXFxdW1xcW1xcKF0oLio/KVtcXF1cXCldL2csIFwiJDEgKCQyKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXQgPSBvdXRwdXRcbiAgICAgICAgICAgIC8vIFJlbW92ZSBIVE1MIHRhZ3NcbiAgICAgICAgICAgIC5yZXBsYWNlKC88W14+XSo+L2csIFwiXCIpXG4gICAgICAgICAgICAvLyBSZW1vdmUgc2V0ZXh0LXN0eWxlIGhlYWRlcnNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eWz1cXC1dezIsfVxccyokL2csIFwiXCIpXG4gICAgICAgICAgICAvLyBSZW1vdmUgZm9vdG5vdGVzP1xuICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xcXi4rP1xcXShcXDogLio/JCk/L2csIFwiXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxzezAsMn1cXFsuKj9cXF06IC4qPyQvZywgXCJcIilcbiAgICAgICAgICAgIC8vIFJlbW92ZSBpbWFnZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXCFcXFsoLio/KVxcXVtcXFtcXChdLio/W1xcXVxcKV0vZywgb3B0aW9ucy51c2VJbWdBbHRUZXh0ID8gXCIkMVwiIDogXCJcIilcbiAgICAgICAgICAgIC8vIFJlbW92ZSBpbmxpbmUgbGlua3NcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXFsoLio/KVxcXVtcXFtcXChdLio/W1xcXVxcKV0vZywgXCIkMVwiKVxuICAgICAgICAgICAgLy8gUmVtb3ZlIGJsb2NrcXVvdGVzXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcc3swLDN9Plxccz8vZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oXnxcXG4pXFxzezAsM30+XFxzPy9nLCBcIlxcblxcblwiKVxuICAgICAgICAgICAgLy8gUmVtb3ZlIHJlZmVyZW5jZS1zdHlsZSBsaW5rcz9cbiAgICAgICAgICAgIC5yZXBsYWNlKC9eXFxzezEsMn1cXFsoLio/KVxcXTogKFxcUyspKCBcIi4qP1wiKT9cXHMqJC9nLCBcIlwiKVxuICAgICAgICAgICAgLy8gUmVtb3ZlIGF0eC1zdHlsZSBoZWFkZXJzXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXG4pP1xcc3swLH0jezEsNn1cXHMrfCB7MCx9KFxcbik/XFxzezAsfSN7MCx9IHswLH0oXFxuKT9cXHN7MCx9JC9nbSwgXCIkMSQyJDNcIilcbiAgICAgICAgICAgIC8vIFJlbW92ZSBlbXBoYXNpcyAocmVwZWF0IHRoZSBsaW5lIHRvIHJlbW92ZSBkb3VibGUgZW1waGFzaXMpXG4gICAgICAgICAgICAucmVwbGFjZSgvKFtcXCpfXXsxLDN9KShcXFMuKj9cXFN7MCwxfSlcXDEvZywgXCIkMlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoLyhbXFwqX117MSwzfSkoXFxTLio/XFxTezAsMX0pXFwxL2csIFwiJDJcIilcbiAgICAgICAgICAgIC8vIFJlbW92ZSBjb2RlIGJsb2Nrc1xuICAgICAgICAgICAgLnJlcGxhY2UoLyhgezMsfSkoLio/KVxcMS9nbSwgXCIkMlwiKVxuICAgICAgICAgICAgLy8gUmVtb3ZlIGlubGluZSBjb2RlXG4gICAgICAgICAgICAucmVwbGFjZSgvYCguKz8pYC9nLCBcIiQxXCIpXG4gICAgICAgICAgICAvLyBSZXBsYWNlIHR3byBvciBtb3JlIG5ld2xpbmVzIHdpdGggZXhhY3RseSB0d28/IE5vdCBlbnRpcmVseSBzdXJlIHRoaXMgYmVsb25ncyBoZXJlLi4uXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxuezIsfS9nLCBcIlxcblxcblwiKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgcmV0dXJuIG1hcmtkb3duO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufTtcbmV4cG9ydHMucmVtb3ZlTWFya2Rvd24gPSByZW1vdmVNYXJrZG93bjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/markdown-to-text/dist/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/cose-base/cose-base.js": +/*!****************************************************!*\ + !*** ../../../node_modules/cose-base/cose-base.js ***! + \****************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! layout-base */ \"../../../node_modules/layout-base/layout-base.js\"));\n\telse {}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_643__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_643__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_643__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_643__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__nested_webpack_require_643__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_643__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_643__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__nested_webpack_require_643__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__nested_webpack_require_643__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_643__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_643__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_643__(__nested_webpack_require_643__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __nested_webpack_require_3185__) {\n\n\"use strict\";\n\n\nvar FDLayoutConstants = __nested_webpack_require_3185__(0).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; // make this true when cose is used incrementally as a part of other non-incremental layout\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __nested_webpack_require_4002__) {\n\n\"use strict\";\n\n\nvar FDLayoutEdge = __nested_webpack_require_4002__(0).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __nested_webpack_require_4409__) {\n\n\"use strict\";\n\n\nvar LGraph = __nested_webpack_require_4409__(0).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __nested_webpack_require_4790__) {\n\n\"use strict\";\n\n\nvar LGraphManager = __nested_webpack_require_4790__(0).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __nested_webpack_require_5205__) {\n\n\"use strict\";\n\n\nvar FDLayoutNode = __nested_webpack_require_5205__(0).FDLayoutNode;\nvar IMath = __nested_webpack_require_5205__(0).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n this.displacementX = layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY = layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // a simple node, just move it\n if (this.child == null) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // an empty compound node, again just move it\n else if (this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // non-empty compound node, propogate movement to children as well\n else {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.moveBy(dX, dY);\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __nested_webpack_require_8085__) {\n\n\"use strict\";\n\n\nvar FDLayout = __nested_webpack_require_8085__(0).FDLayout;\nvar CoSEGraphManager = __nested_webpack_require_8085__(4);\nvar CoSEGraph = __nested_webpack_require_8085__(3);\nvar CoSENode = __nested_webpack_require_8085__(5);\nvar CoSEEdge = __nested_webpack_require_8085__(2);\nvar CoSEConstants = __nested_webpack_require_8085__(1);\nvar FDLayoutConstants = __nested_webpack_require_8085__(0).FDLayoutConstants;\nvar LayoutConstants = __nested_webpack_require_8085__(0).LayoutConstants;\nvar Point = __nested_webpack_require_8085__(0).Point;\nvar PointD = __nested_webpack_require_8085__(0).PointD;\nvar Layout = __nested_webpack_require_8085__(0).Layout;\nvar Integer = __nested_webpack_require_8085__(0).Integer;\nvar IGeometry = __nested_webpack_require_8085__(0).IGeometry;\nvar LGraph = __nested_webpack_require_8085__(0).LGraph;\nvar Transform = __nested_webpack_require_8085__(0).Transform;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations;\n this.coolingAdjuster = 1;\n }\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n this.initSpringEmbedder();\n this.runSpringEmbedder();\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin) {\n x += compoundHorizontalMargin;\n y += compoundVerticalMargin;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding\n };\n\n // Sort the nodes in ascending order of their areas\n nodes.sort(function (n1, n2) {\n if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1;\n if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1;\n return 0;\n });\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __nested_webpack_require_45620__) {\n\n\"use strict\";\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __nested_webpack_require_45620__(0);\ncoseBase.CoSEConstants = __nested_webpack_require_45620__(1);\ncoseBase.CoSEEdge = __nested_webpack_require_45620__(2);\ncoseBase.CoSEGraph = __nested_webpack_require_45620__(3);\ncoseBase.CoSEGraphManager = __nested_webpack_require_45620__(4);\ncoseBase.CoSELayout = __nested_webpack_require_45620__(6);\ncoseBase.CoSENode = __nested_webpack_require_45620__(5);\n\nmodule.exports = coseBase;\n\n/***/ })\n/******/ ]);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nvc2UtYmFzZS9jb3NlLWJhc2UuanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxJQUFJLElBQXlEO0FBQzdELDJCQUEyQixtQkFBTyxDQUFDLHFFQUFhO0FBQ2hELE1BQU0sRUFLMkM7QUFDakQsQ0FBQztBQUNELHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsOEJBQW1CO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxvQ0FBb0MsNEJBQTRCO0FBQ2hFLDBDQUEwQztBQUMxQyxXQUFXLDhCQUFtQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CLGtDQUFrQztBQUMvRDtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBLGlDQUFpQywrQkFBbUI7O0FBRXBEOzs7QUFHQSx3QkFBd0IsK0JBQW1COztBQUUzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7O0FBRXJEOztBQUVBLE9B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QSxrQkFBa0IsMkJBQTJCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxPQUFPO0FBQ1A7QUFDQSxpQ0FBaUMsZ0NBQW1COztBQUVwRDs7O0FBR0E7O0FBRUEsc0JBQXNCLGdDQUFtQjtBQUN6Qyx5QkFBeUIsZ0NBQW1CO0FBQzVDLG9CQUFvQixnQ0FBbUI7QUFDdkMscUJBQXFCLGdDQUFtQjtBQUN4Qyw0QkFBNEIsZ0NBQW1CO0FBQy9DLHNCQUFzQixnQ0FBbUI7QUFDekMsb0JBQW9CLGdDQUFtQjs7QUFFdkM7O0FBRUEsT0FBTztBQUNQO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY29zZS1iYXNlL2Nvc2UtYmFzZS5qcz9jZGU5Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImxheW91dC1iYXNlXCIpKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtcImxheW91dC1iYXNlXCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNvc2VCYXNlXCJdID0gZmFjdG9yeShyZXF1aXJlKFwibGF5b3V0LWJhc2VcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImNvc2VCYXNlXCJdID0gZmFjdG9yeShyb290W1wibGF5b3V0QmFzZVwiXSk7XG59KSh0aGlzLCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXykge1xucmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDcpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfMF9fO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5GRExheW91dENvbnN0YW50cztcblxuZnVuY3Rpb24gQ29TRUNvbnN0YW50cygpIHt9XG5cbi8vQ29TRUNvbnN0YW50cyBpbmhlcml0cyBzdGF0aWMgcHJvcHMgaW4gRkRMYXlvdXRDb25zdGFudHNcbmZvciAodmFyIHByb3AgaW4gRkRMYXlvdXRDb25zdGFudHMpIHtcbiAgQ29TRUNvbnN0YW50c1twcm9wXSA9IEZETGF5b3V0Q29uc3RhbnRzW3Byb3BdO1xufVxuXG5Db1NFQ29uc3RhbnRzLkRFRkFVTFRfVVNFX01VTFRJX0xFVkVMX1NDQUxJTkcgPSBmYWxzZTtcbkNvU0VDb25zdGFudHMuREVGQVVMVF9SQURJQUxfU0VQQVJBVElPTiA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEg7XG5Db1NFQ29uc3RhbnRzLkRFRkFVTFRfQ09NUE9ORU5UX1NFUEVSQVRJT04gPSA2MDtcbkNvU0VDb25zdGFudHMuVElMRSA9IHRydWU7XG5Db1NFQ29uc3RhbnRzLlRJTElOR19QQURESU5HX1ZFUlRJQ0FMID0gMTA7XG5Db1NFQ29uc3RhbnRzLlRJTElOR19QQURESU5HX0hPUklaT05UQUwgPSAxMDtcbkNvU0VDb25zdGFudHMuVFJFRV9SRURVQ1RJT05fT05fSU5DUkVNRU5UQUwgPSBmYWxzZTsgLy8gbWFrZSB0aGlzIHRydWUgd2hlbiBjb3NlIGlzIHVzZWQgaW5jcmVtZW50YWxseSBhcyBhIHBhcnQgb2Ygb3RoZXIgbm9uLWluY3JlbWVudGFsIGxheW91dFxuXG5tb2R1bGUuZXhwb3J0cyA9IENvU0VDb25zdGFudHM7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgRkRMYXlvdXRFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5GRExheW91dEVkZ2U7XG5cbmZ1bmN0aW9uIENvU0VFZGdlKHNvdXJjZSwgdGFyZ2V0LCB2RWRnZSkge1xuICBGRExheW91dEVkZ2UuY2FsbCh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdkVkZ2UpO1xufVxuXG5Db1NFRWRnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEZETGF5b3V0RWRnZS5wcm90b3R5cGUpO1xuZm9yICh2YXIgcHJvcCBpbiBGRExheW91dEVkZ2UpIHtcbiAgQ29TRUVkZ2VbcHJvcF0gPSBGRExheW91dEVkZ2VbcHJvcF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29TRUVkZ2U7XG5cbi8qKiovIH0pLFxuLyogMyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTEdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MR3JhcGg7XG5cbmZ1bmN0aW9uIENvU0VHcmFwaChwYXJlbnQsIGdyYXBoTWdyLCB2R3JhcGgpIHtcbiAgTEdyYXBoLmNhbGwodGhpcywgcGFyZW50LCBncmFwaE1nciwgdkdyYXBoKTtcbn1cblxuQ29TRUdyYXBoLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEdyYXBoLnByb3RvdHlwZSk7XG5mb3IgKHZhciBwcm9wIGluIExHcmFwaCkge1xuICBDb1NFR3JhcGhbcHJvcF0gPSBMR3JhcGhbcHJvcF07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29TRUdyYXBoO1xuXG4vKioqLyB9KSxcbi8qIDQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExHcmFwaE1hbmFnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxHcmFwaE1hbmFnZXI7XG5cbmZ1bmN0aW9uIENvU0VHcmFwaE1hbmFnZXIobGF5b3V0KSB7XG4gIExHcmFwaE1hbmFnZXIuY2FsbCh0aGlzLCBsYXlvdXQpO1xufVxuXG5Db1NFR3JhcGhNYW5hZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEdyYXBoTWFuYWdlci5wcm90b3R5cGUpO1xuZm9yICh2YXIgcHJvcCBpbiBMR3JhcGhNYW5hZ2VyKSB7XG4gIENvU0VHcmFwaE1hbmFnZXJbcHJvcF0gPSBMR3JhcGhNYW5hZ2VyW3Byb3BdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvU0VHcmFwaE1hbmFnZXI7XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgRkRMYXlvdXROb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5GRExheW91dE5vZGU7XG52YXIgSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLklNYXRoO1xuXG5mdW5jdGlvbiBDb1NFTm9kZShnbSwgbG9jLCBzaXplLCB2Tm9kZSkge1xuICBGRExheW91dE5vZGUuY2FsbCh0aGlzLCBnbSwgbG9jLCBzaXplLCB2Tm9kZSk7XG59XG5cbkNvU0VOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRkRMYXlvdXROb2RlLnByb3RvdHlwZSk7XG5mb3IgKHZhciBwcm9wIGluIEZETGF5b3V0Tm9kZSkge1xuICBDb1NFTm9kZVtwcm9wXSA9IEZETGF5b3V0Tm9kZVtwcm9wXTtcbn1cblxuQ29TRU5vZGUucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsYXlvdXQgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRMYXlvdXQoKTtcbiAgdGhpcy5kaXNwbGFjZW1lbnRYID0gbGF5b3V0LmNvb2xpbmdGYWN0b3IgKiAodGhpcy5zcHJpbmdGb3JjZVggKyB0aGlzLnJlcHVsc2lvbkZvcmNlWCArIHRoaXMuZ3Jhdml0YXRpb25Gb3JjZVgpIC8gdGhpcy5ub09mQ2hpbGRyZW47XG4gIHRoaXMuZGlzcGxhY2VtZW50WSA9IGxheW91dC5jb29saW5nRmFjdG9yICogKHRoaXMuc3ByaW5nRm9yY2VZICsgdGhpcy5yZXB1bHNpb25Gb3JjZVkgKyB0aGlzLmdyYXZpdGF0aW9uRm9yY2VZKSAvIHRoaXMubm9PZkNoaWxkcmVuO1xuXG4gIGlmIChNYXRoLmFicyh0aGlzLmRpc3BsYWNlbWVudFgpID4gbGF5b3V0LmNvb2xpbmdGYWN0b3IgKiBsYXlvdXQubWF4Tm9kZURpc3BsYWNlbWVudCkge1xuICAgIHRoaXMuZGlzcGxhY2VtZW50WCA9IGxheW91dC5jb29saW5nRmFjdG9yICogbGF5b3V0Lm1heE5vZGVEaXNwbGFjZW1lbnQgKiBJTWF0aC5zaWduKHRoaXMuZGlzcGxhY2VtZW50WCk7XG4gIH1cblxuICBpZiAoTWF0aC5hYnModGhpcy5kaXNwbGFjZW1lbnRZKSA+IGxheW91dC5jb29saW5nRmFjdG9yICogbGF5b3V0Lm1heE5vZGVEaXNwbGFjZW1lbnQpIHtcbiAgICB0aGlzLmRpc3BsYWNlbWVudFkgPSBsYXlvdXQuY29vbGluZ0ZhY3RvciAqIGxheW91dC5tYXhOb2RlRGlzcGxhY2VtZW50ICogSU1hdGguc2lnbih0aGlzLmRpc3BsYWNlbWVudFkpO1xuICB9XG5cbiAgLy8gYSBzaW1wbGUgbm9kZSwganVzdCBtb3ZlIGl0XG4gIGlmICh0aGlzLmNoaWxkID09IG51bGwpIHtcbiAgICB0aGlzLm1vdmVCeSh0aGlzLmRpc3BsYWNlbWVudFgsIHRoaXMuZGlzcGxhY2VtZW50WSk7XG4gIH1cbiAgLy8gYW4gZW1wdHkgY29tcG91bmQgbm9kZSwgYWdhaW4ganVzdCBtb3ZlIGl0XG4gIGVsc2UgaWYgKHRoaXMuY2hpbGQuZ2V0Tm9kZXMoKS5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5tb3ZlQnkodGhpcy5kaXNwbGFjZW1lbnRYLCB0aGlzLmRpc3BsYWNlbWVudFkpO1xuICAgIH1cbiAgICAvLyBub24tZW1wdHkgY29tcG91bmQgbm9kZSwgcHJvcG9nYXRlIG1vdmVtZW50IHRvIGNoaWxkcmVuIGFzIHdlbGxcbiAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9wb2dhdGVEaXNwbGFjZW1lbnRUb0NoaWxkcmVuKHRoaXMuZGlzcGxhY2VtZW50WCwgdGhpcy5kaXNwbGFjZW1lbnRZKTtcbiAgICAgIH1cblxuICBsYXlvdXQudG90YWxEaXNwbGFjZW1lbnQgKz0gTWF0aC5hYnModGhpcy5kaXNwbGFjZW1lbnRYKSArIE1hdGguYWJzKHRoaXMuZGlzcGxhY2VtZW50WSk7XG5cbiAgdGhpcy5zcHJpbmdGb3JjZVggPSAwO1xuICB0aGlzLnNwcmluZ0ZvcmNlWSA9IDA7XG4gIHRoaXMucmVwdWxzaW9uRm9yY2VYID0gMDtcbiAgdGhpcy5yZXB1bHNpb25Gb3JjZVkgPSAwO1xuICB0aGlzLmdyYXZpdGF0aW9uRm9yY2VYID0gMDtcbiAgdGhpcy5ncmF2aXRhdGlvbkZvcmNlWSA9IDA7XG4gIHRoaXMuZGlzcGxhY2VtZW50WCA9IDA7XG4gIHRoaXMuZGlzcGxhY2VtZW50WSA9IDA7XG59O1xuXG5Db1NFTm9kZS5wcm90b3R5cGUucHJvcG9nYXRlRGlzcGxhY2VtZW50VG9DaGlsZHJlbiA9IGZ1bmN0aW9uIChkWCwgZFkpIHtcbiAgdmFyIG5vZGVzID0gdGhpcy5nZXRDaGlsZCgpLmdldE5vZGVzKCk7XG4gIHZhciBub2RlO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgIGlmIChub2RlLmdldENoaWxkKCkgPT0gbnVsbCkge1xuICAgICAgbm9kZS5tb3ZlQnkoZFgsIGRZKTtcbiAgICAgIG5vZGUuZGlzcGxhY2VtZW50WCArPSBkWDtcbiAgICAgIG5vZGUuZGlzcGxhY2VtZW50WSArPSBkWTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5wcm9wb2dhdGVEaXNwbGFjZW1lbnRUb0NoaWxkcmVuKGRYLCBkWSk7XG4gICAgfVxuICB9XG59O1xuXG5Db1NFTm9kZS5wcm90b3R5cGUuc2V0UHJlZDEgPSBmdW5jdGlvbiAocHJlZDEpIHtcbiAgdGhpcy5wcmVkMSA9IHByZWQxO1xufTtcblxuQ29TRU5vZGUucHJvdG90eXBlLmdldFByZWQxID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcHJlZDE7XG59O1xuXG5Db1NFTm9kZS5wcm90b3R5cGUuZ2V0UHJlZDIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBwcmVkMjtcbn07XG5cbkNvU0VOb2RlLnByb3RvdHlwZS5zZXROZXh0ID0gZnVuY3Rpb24gKG5leHQpIHtcbiAgdGhpcy5uZXh0ID0gbmV4dDtcbn07XG5cbkNvU0VOb2RlLnByb3RvdHlwZS5nZXROZXh0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV4dDtcbn07XG5cbkNvU0VOb2RlLnByb3RvdHlwZS5zZXRQcm9jZXNzZWQgPSBmdW5jdGlvbiAocHJvY2Vzc2VkKSB7XG4gIHRoaXMucHJvY2Vzc2VkID0gcHJvY2Vzc2VkO1xufTtcblxuQ29TRU5vZGUucHJvdG90eXBlLmlzUHJvY2Vzc2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcHJvY2Vzc2VkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDb1NFTm9kZTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBGRExheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuRkRMYXlvdXQ7XG52YXIgQ29TRUdyYXBoTWFuYWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG52YXIgQ29TRUdyYXBoID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBDb1NFTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG52YXIgQ29TRUVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xudmFyIENvU0VDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5GRExheW91dENvbnN0YW50cztcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxheW91dENvbnN0YW50cztcbnZhciBQb2ludCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuUG9pbnQ7XG52YXIgUG9pbnREID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5Qb2ludEQ7XG52YXIgTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5MYXlvdXQ7XG52YXIgSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuSW50ZWdlcjtcbnZhciBJR2VvbWV0cnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLklHZW9tZXRyeTtcbnZhciBMR3JhcGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkxHcmFwaDtcbnZhciBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLlRyYW5zZm9ybTtcblxuZnVuY3Rpb24gQ29TRUxheW91dCgpIHtcbiAgRkRMYXlvdXQuY2FsbCh0aGlzKTtcblxuICB0aGlzLnRvQmVUaWxlZCA9IHt9OyAvLyBNZW1vcml6ZSBpZiBhIG5vZGUgaXMgdG8gYmUgdGlsZWQgb3IgaXMgdGlsZWRcbn1cblxuQ29TRUxheW91dC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEZETGF5b3V0LnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3AgaW4gRkRMYXlvdXQpIHtcbiAgQ29TRUxheW91dFtwcm9wXSA9IEZETGF5b3V0W3Byb3BdO1xufVxuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5uZXdHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBnbSA9IG5ldyBDb1NFR3JhcGhNYW5hZ2VyKHRoaXMpO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IGdtO1xuICByZXR1cm4gZ207XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5uZXdHcmFwaCA9IGZ1bmN0aW9uICh2R3JhcGgpIHtcbiAgcmV0dXJuIG5ldyBDb1NFR3JhcGgobnVsbCwgdGhpcy5ncmFwaE1hbmFnZXIsIHZHcmFwaCk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5uZXdOb2RlID0gZnVuY3Rpb24gKHZOb2RlKSB7XG4gIHJldHVybiBuZXcgQ29TRU5vZGUodGhpcy5ncmFwaE1hbmFnZXIsIHZOb2RlKTtcbn07XG5cbkNvU0VMYXlvdXQucHJvdG90eXBlLm5ld0VkZ2UgPSBmdW5jdGlvbiAodkVkZ2UpIHtcbiAgcmV0dXJuIG5ldyBDb1NFRWRnZShudWxsLCBudWxsLCB2RWRnZSk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5pbml0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgRkRMYXlvdXQucHJvdG90eXBlLmluaXRQYXJhbWV0ZXJzLmNhbGwodGhpcywgYXJndW1lbnRzKTtcbiAgaWYgKCF0aGlzLmlzU3ViTGF5b3V0KSB7XG4gICAgaWYgKENvU0VDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCA8IDEwKSB7XG4gICAgICB0aGlzLmlkZWFsRWRnZUxlbmd0aCA9IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlkZWFsRWRnZUxlbmd0aCA9IENvU0VDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSDtcbiAgICB9XG5cbiAgICB0aGlzLnVzZVNtYXJ0SWRlYWxFZGdlTGVuZ3RoQ2FsY3VsYXRpb24gPSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX0lERUFMX0VER0VfTEVOR1RIX0NBTENVTEFUSU9OO1xuICAgIHRoaXMuc3ByaW5nQ29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1NQUklOR19TVFJFTkdUSDtcbiAgICB0aGlzLnJlcHVsc2lvbkNvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEg7XG4gICAgdGhpcy5ncmF2aXR5Q29uc3RhbnQgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfU1RSRU5HVEg7XG4gICAgdGhpcy5jb21wb3VuZEdyYXZpdHlDb25zdGFudCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9TVFJFTkdUSDtcbiAgICB0aGlzLmdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG4gICAgdGhpcy5jb21wb3VuZEdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG5cbiAgICAvLyB2YXJpYWJsZXMgZm9yIHRyZWUgcmVkdWN0aW9uIHN1cHBvcnRcbiAgICB0aGlzLnBydW5lZE5vZGVzQWxsID0gW107XG4gICAgdGhpcy5ncm93VHJlZUl0ZXJhdGlvbnMgPSAwO1xuICAgIHRoaXMuYWZ0ZXJHcm93dGhJdGVyYXRpb25zID0gMDtcbiAgICB0aGlzLmlzVHJlZUdyb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzR3Jvd3RoRmluaXNoZWQgPSBmYWxzZTtcblxuICAgIC8vIHZhcmlhYmxlcyBmb3IgY29vbGluZ1xuICAgIHRoaXMuY29vbGluZ0N5Y2xlID0gMDtcbiAgICB0aGlzLm1heENvb2xpbmdDeWNsZSA9IHRoaXMubWF4SXRlcmF0aW9ucyAvIEZETGF5b3V0Q29uc3RhbnRzLkNPTlZFUkdFTkNFX0NIRUNLX1BFUklPRDtcbiAgICB0aGlzLmZpbmFsVGVtcGVyYXR1cmUgPSBGRExheW91dENvbnN0YW50cy5DT05WRVJHRU5DRV9DSEVDS19QRVJJT0QgLyB0aGlzLm1heEl0ZXJhdGlvbnM7XG4gICAgdGhpcy5jb29saW5nQWRqdXN0ZXIgPSAxO1xuICB9XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjcmVhdGVCZW5kc0FzTmVlZGVkID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRDtcbiAgaWYgKGNyZWF0ZUJlbmRzQXNOZWVkZWQpIHtcbiAgICB0aGlzLmNyZWF0ZUJlbmRwb2ludHMoKTtcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbEVkZ2VzKCk7XG4gIH1cblxuICB0aGlzLmxldmVsID0gMDtcbiAgcmV0dXJuIHRoaXMuY2xhc3NpY0xheW91dCgpO1xufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUuY2xhc3NpY0xheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5ub2Rlc1dpdGhHcmF2aXR5ID0gdGhpcy5jYWxjdWxhdGVOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvblRvKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyLnNldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKHRoaXMubm9kZXNXaXRoR3Jhdml0eSk7XG4gIHRoaXMuY2FsY05vT2ZDaGlsZHJlbkZvckFsbE5vZGVzKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvcnMoKTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIuY2FsY0luY2x1c2lvblRyZWVEZXB0aHMoKTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmNhbGNFc3RpbWF0ZWRTaXplKCk7XG4gIHRoaXMuY2FsY0lkZWFsRWRnZUxlbmd0aHMoKTtcblxuICBpZiAoIXRoaXMuaW5jcmVtZW50YWwpIHtcbiAgICB2YXIgZm9yZXN0ID0gdGhpcy5nZXRGbGF0Rm9yZXN0KCk7XG5cbiAgICAvLyBUaGUgZ3JhcGggYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5b3V0IGlzIGZsYXQgYW5kIGEgZm9yZXN0XG4gICAgaWYgKGZvcmVzdC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uTm9kZXNSYWRpYWxseShmb3Jlc3QpO1xuICAgIH1cbiAgICAvLyBUaGUgZ3JhcGggYXNzb2NpYXRlZCB3aXRoIHRoaXMgbGF5b3V0IGlzIG5vdCBmbGF0IG9yIGEgZm9yZXN0XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFJlZHVjZSB0aGUgdHJlZXMgd2hlbiBpbmNyZW1lbnRhbCBtb2RlIGlzIG5vdCBlbmFibGVkIGFuZCBncmFwaCBpcyBub3QgYSBmb3Jlc3QgXG4gICAgICAgIHRoaXMucmVkdWNlVHJlZXMoKTtcbiAgICAgICAgLy8gVXBkYXRlIG5vZGVzIHRoYXQgZ3Jhdml0eSB3aWxsIGJlIGFwcGxpZWRcbiAgICAgICAgdGhpcy5ncmFwaE1hbmFnZXIucmVzZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbigpO1xuICAgICAgICB2YXIgYWxsTm9kZXMgPSBuZXcgU2V0KHRoaXMuZ2V0QWxsTm9kZXMoKSk7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSB0aGlzLm5vZGVzV2l0aEdyYXZpdHkuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgcmV0dXJuIGFsbE5vZGVzLmhhcyh4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JhcGhNYW5hZ2VyLnNldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKGludGVyc2VjdGlvbik7XG5cbiAgICAgICAgdGhpcy5wb3NpdGlvbk5vZGVzUmFuZG9tbHkoKTtcbiAgICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoQ29TRUNvbnN0YW50cy5UUkVFX1JFRFVDVElPTl9PTl9JTkNSRU1FTlRBTCkge1xuICAgICAgLy8gUmVkdWNlIHRoZSB0cmVlcyBpbiBpbmNyZW1lbnRhbCBtb2RlIGlmIG9ubHkgdGhpcyBjb25zdGFudCBpcyBzZXQgdG8gdHJ1ZSBcbiAgICAgIHRoaXMucmVkdWNlVHJlZXMoKTtcbiAgICAgIC8vIFVwZGF0ZSBub2RlcyB0aGF0IGdyYXZpdHkgd2lsbCBiZSBhcHBsaWVkXG4gICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uKCk7XG4gICAgICB2YXIgYWxsTm9kZXMgPSBuZXcgU2V0KHRoaXMuZ2V0QWxsTm9kZXMoKSk7XG4gICAgICB2YXIgaW50ZXJzZWN0aW9uID0gdGhpcy5ub2Rlc1dpdGhHcmF2aXR5LmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gYWxsTm9kZXMuaGFzKHgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmdyYXBoTWFuYWdlci5zZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbihpbnRlcnNlY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuaW5pdFNwcmluZ0VtYmVkZGVyKCk7XG4gIHRoaXMucnVuU3ByaW5nRW1iZWRkZXIoKTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNvU0VMYXlvdXQucHJvdG90eXBlLnRpY2sgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMudG90YWxJdGVyYXRpb25zKys7XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zID09PSB0aGlzLm1heEl0ZXJhdGlvbnMgJiYgIXRoaXMuaXNUcmVlR3Jvd2luZyAmJiAhdGhpcy5pc0dyb3d0aEZpbmlzaGVkKSB7XG4gICAgaWYgKHRoaXMucHJ1bmVkTm9kZXNBbGwubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pc1RyZWVHcm93aW5nID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zICUgRkRMYXlvdXRDb25zdGFudHMuQ09OVkVSR0VOQ0VfQ0hFQ0tfUEVSSU9EID09IDAgJiYgIXRoaXMuaXNUcmVlR3Jvd2luZyAmJiAhdGhpcy5pc0dyb3d0aEZpbmlzaGVkKSB7XG4gICAgaWYgKHRoaXMuaXNDb252ZXJnZWQoKSkge1xuICAgICAgaWYgKHRoaXMucHJ1bmVkTm9kZXNBbGwubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmlzVHJlZUdyb3dpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb29saW5nQ3ljbGUrKztcblxuICAgIGlmICh0aGlzLmxheW91dFF1YWxpdHkgPT0gMCkge1xuICAgICAgLy8gcXVhbGl0eSAtIFwiZHJhZnRcIlxuICAgICAgdGhpcy5jb29saW5nQWRqdXN0ZXIgPSB0aGlzLmNvb2xpbmdDeWNsZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGF5b3V0UXVhbGl0eSA9PSAxKSB7XG4gICAgICAvLyBxdWFsaXR5IC0gXCJkZWZhdWx0XCJcbiAgICAgIHRoaXMuY29vbGluZ0FkanVzdGVyID0gdGhpcy5jb29saW5nQ3ljbGUgLyAzO1xuICAgIH1cblxuICAgIC8vIGNvb2xpbmcgc2NoZWR1bGUgaXMgYmFzZWQgb24gaHR0cDovL3d3dy5idGx1a2UuY29tL3NpbWFuZjEuaHRtbCAtPiBjb29saW5nIHNjaGVkdWxlIDNcbiAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBNYXRoLm1heCh0aGlzLmluaXRpYWxDb29saW5nRmFjdG9yIC0gTWF0aC5wb3codGhpcy5jb29saW5nQ3ljbGUsIE1hdGgubG9nKDEwMCAqICh0aGlzLmluaXRpYWxDb29saW5nRmFjdG9yIC0gdGhpcy5maW5hbFRlbXBlcmF0dXJlKSkgLyBNYXRoLmxvZyh0aGlzLm1heENvb2xpbmdDeWNsZSkpIC8gMTAwICogdGhpcy5jb29saW5nQWRqdXN0ZXIsIHRoaXMuZmluYWxUZW1wZXJhdHVyZSk7XG4gICAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSBNYXRoLmNlaWwodGhpcy5pbml0aWFsQW5pbWF0aW9uUGVyaW9kICogTWF0aC5zcXJ0KHRoaXMuY29vbGluZ0ZhY3RvcikpO1xuICB9XG4gIC8vIE9wZXJhdGlvbnMgd2hpbGUgdHJlZSBpcyBncm93aW5nIGFnYWluIFxuICBpZiAodGhpcy5pc1RyZWVHcm93aW5nKSB7XG4gICAgaWYgKHRoaXMuZ3Jvd1RyZWVJdGVyYXRpb25zICUgMTAgPT0gMCkge1xuICAgICAgaWYgKHRoaXMucHJ1bmVkTm9kZXNBbGwubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmdyYXBoTWFuYWdlci51cGRhdGVCb3VuZHMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVHcmlkKCk7XG4gICAgICAgIHRoaXMuZ3Jvd1RyZWUodGhpcy5wcnVuZWROb2Rlc0FsbCk7XG4gICAgICAgIC8vIFVwZGF0ZSBub2RlcyB0aGF0IGdyYXZpdHkgd2lsbCBiZSBhcHBsaWVkXG4gICAgICAgIHRoaXMuZ3JhcGhNYW5hZ2VyLnJlc2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24oKTtcbiAgICAgICAgdmFyIGFsbE5vZGVzID0gbmV3IFNldCh0aGlzLmdldEFsbE5vZGVzKCkpO1xuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gdGhpcy5ub2Rlc1dpdGhHcmF2aXR5LmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgIHJldHVybiBhbGxOb2Rlcy5oYXMoeCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyYXBoTWFuYWdlci5zZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbihpbnRlcnNlY3Rpb24pO1xuXG4gICAgICAgIHRoaXMuZ3JhcGhNYW5hZ2VyLnVwZGF0ZUJvdW5kcygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQoKTtcbiAgICAgICAgdGhpcy5jb29saW5nRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT09MSU5HX0ZBQ1RPUl9JTkNSRU1FTlRBTDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNUcmVlR3Jvd2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzR3Jvd3RoRmluaXNoZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmdyb3dUcmVlSXRlcmF0aW9ucysrO1xuICB9XG4gIC8vIE9wZXJhdGlvbnMgYWZ0ZXIgZ3Jvd3RoIGlzIGZpbmlzaGVkXG4gIGlmICh0aGlzLmlzR3Jvd3RoRmluaXNoZWQpIHtcbiAgICBpZiAodGhpcy5pc0NvbnZlcmdlZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWZ0ZXJHcm93dGhJdGVyYXRpb25zICUgMTAgPT0gMCkge1xuICAgICAgdGhpcy5ncmFwaE1hbmFnZXIudXBkYXRlQm91bmRzKCk7XG4gICAgICB0aGlzLnVwZGF0ZUdyaWQoKTtcbiAgICB9XG4gICAgdGhpcy5jb29saW5nRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT09MSU5HX0ZBQ1RPUl9JTkNSRU1FTlRBTCAqICgoMTAwIC0gdGhpcy5hZnRlckdyb3d0aEl0ZXJhdGlvbnMpIC8gMTAwKTtcbiAgICB0aGlzLmFmdGVyR3Jvd3RoSXRlcmF0aW9ucysrO1xuICB9XG5cbiAgdmFyIGdyaWRVcGRhdGVBbGxvd2VkID0gIXRoaXMuaXNUcmVlR3Jvd2luZyAmJiAhdGhpcy5pc0dyb3d0aEZpbmlzaGVkO1xuICB2YXIgZm9yY2VUb05vZGVTdXJyb3VuZGluZ1VwZGF0ZSA9IHRoaXMuZ3Jvd1RyZWVJdGVyYXRpb25zICUgMTAgPT0gMSAmJiB0aGlzLmlzVHJlZUdyb3dpbmcgfHwgdGhpcy5hZnRlckdyb3d0aEl0ZXJhdGlvbnMgJSAxMCA9PSAxICYmIHRoaXMuaXNHcm93dGhGaW5pc2hlZDtcblxuICB0aGlzLnRvdGFsRGlzcGxhY2VtZW50ID0gMDtcbiAgdGhpcy5ncmFwaE1hbmFnZXIudXBkYXRlQm91bmRzKCk7XG4gIHRoaXMuY2FsY1NwcmluZ0ZvcmNlcygpO1xuICB0aGlzLmNhbGNSZXB1bHNpb25Gb3JjZXMoZ3JpZFVwZGF0ZUFsbG93ZWQsIGZvcmNlVG9Ob2RlU3Vycm91bmRpbmdVcGRhdGUpO1xuICB0aGlzLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2VzKCk7XG4gIHRoaXMubW92ZU5vZGVzKCk7XG4gIHRoaXMuYW5pbWF0ZSgpO1xuXG4gIHJldHVybiBmYWxzZTsgLy8gTGF5b3V0IGlzIG5vdCBlbmRlZCB5ZXQgcmV0dXJuIGZhbHNlXG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5nZXRQb3NpdGlvbnNEYXRhID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxOb2RlcygpO1xuICB2YXIgcERhdGEgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciByZWN0ID0gYWxsTm9kZXNbaV0ucmVjdDtcbiAgICB2YXIgaWQgPSBhbGxOb2Rlc1tpXS5pZDtcbiAgICBwRGF0YVtpZF0gPSB7XG4gICAgICBpZDogaWQsXG4gICAgICB4OiByZWN0LmdldENlbnRlclgoKSxcbiAgICAgIHk6IHJlY3QuZ2V0Q2VudGVyWSgpLFxuICAgICAgdzogcmVjdC53aWR0aCxcbiAgICAgIGg6IHJlY3QuaGVpZ2h0XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBwRGF0YTtcbn07XG5cbkNvU0VMYXlvdXQucHJvdG90eXBlLnJ1blNwcmluZ0VtYmVkZGVyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmluaXRpYWxBbmltYXRpb25QZXJpb2QgPSAyNTtcbiAgdGhpcy5hbmltYXRpb25QZXJpb2QgPSB0aGlzLmluaXRpYWxBbmltYXRpb25QZXJpb2Q7XG4gIHZhciBsYXlvdXRFbmRlZCA9IGZhbHNlO1xuXG4gIC8vIElmIGFtaW5hdGUgb3B0aW9uIGlzICdkdXJpbmcnIHNpZ25hbCB0aGF0IGxheW91dCBpcyBzdXBwb3NlZCB0byBzdGFydCBpdGVyYXRpbmdcbiAgaWYgKEZETGF5b3V0Q29uc3RhbnRzLkFOSU1BVEUgPT09ICdkdXJpbmcnKSB7XG4gICAgdGhpcy5lbWl0KCdsYXlvdXRzdGFydGVkJyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgYW1pbmF0ZSBvcHRpb24gaXMgJ2R1cmluZycgdGljaygpIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9uIGluZGV4LmpzXG4gICAgd2hpbGUgKCFsYXlvdXRFbmRlZCkge1xuICAgICAgbGF5b3V0RW5kZWQgPSB0aGlzLnRpY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyYXBoTWFuYWdlci51cGRhdGVCb3VuZHMoKTtcbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUuY2FsY3VsYXRlTm9kZXNUb0FwcGx5R3Jhdml0YXRpb25UbyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vZGVMaXN0ID0gW107XG4gIHZhciBncmFwaDtcblxuICB2YXIgZ3JhcGhzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0R3JhcGhzKCk7XG4gIHZhciBzaXplID0gZ3JhcGhzLmxlbmd0aDtcbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBncmFwaCA9IGdyYXBoc1tpXTtcblxuICAgIGdyYXBoLnVwZGF0ZUNvbm5lY3RlZCgpO1xuXG4gICAgaWYgKCFncmFwaC5pc0Nvbm5lY3RlZCkge1xuICAgICAgbm9kZUxpc3QgPSBub2RlTGlzdC5jb25jYXQoZ3JhcGguZ2V0Tm9kZXMoKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVMaXN0O1xufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUuY3JlYXRlQmVuZHBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2VzID0gW107XG4gIGVkZ2VzID0gZWRnZXMuY29uY2F0KHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbEVkZ2VzKCkpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG5cbiAgICBpZiAoIXZpc2l0ZWQuaGFzKGVkZ2UpKSB7XG4gICAgICB2YXIgc291cmNlID0gZWRnZS5nZXRTb3VyY2UoKTtcbiAgICAgIHZhciB0YXJnZXQgPSBlZGdlLmdldFRhcmdldCgpO1xuXG4gICAgICBpZiAoc291cmNlID09IHRhcmdldCkge1xuICAgICAgICBlZGdlLmdldEJlbmRwb2ludHMoKS5wdXNoKG5ldyBQb2ludEQoKSk7XG4gICAgICAgIGVkZ2UuZ2V0QmVuZHBvaW50cygpLnB1c2gobmV3IFBvaW50RCgpKTtcbiAgICAgICAgdGhpcy5jcmVhdGVEdW1teU5vZGVzRm9yQmVuZHBvaW50cyhlZGdlKTtcbiAgICAgICAgdmlzaXRlZC5hZGQoZWRnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZWRnZUxpc3QgPSBbXTtcblxuICAgICAgICBlZGdlTGlzdCA9IGVkZ2VMaXN0LmNvbmNhdChzb3VyY2UuZ2V0RWRnZUxpc3RUb05vZGUodGFyZ2V0KSk7XG4gICAgICAgIGVkZ2VMaXN0ID0gZWRnZUxpc3QuY29uY2F0KHRhcmdldC5nZXRFZGdlTGlzdFRvTm9kZShzb3VyY2UpKTtcblxuICAgICAgICBpZiAoIXZpc2l0ZWQuaGFzKGVkZ2VMaXN0WzBdKSkge1xuICAgICAgICAgIGlmIChlZGdlTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgaztcbiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBlZGdlTGlzdC5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICB2YXIgbXVsdGlFZGdlID0gZWRnZUxpc3Rba107XG4gICAgICAgICAgICAgIG11bHRpRWRnZS5nZXRCZW5kcG9pbnRzKCkucHVzaChuZXcgUG9pbnREKCkpO1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUR1bW15Tm9kZXNGb3JCZW5kcG9pbnRzKG11bHRpRWRnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVkZ2VMaXN0LmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIHZpc2l0ZWQuYWRkKGVkZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZpc2l0ZWQuc2l6ZSA9PSBlZGdlcy5sZW5ndGgpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUucG9zaXRpb25Ob2Rlc1JhZGlhbGx5ID0gZnVuY3Rpb24gKGZvcmVzdCkge1xuICAvLyBXZSB0aWxlIHRoZSB0cmVlcyB0byBhIGdyaWQgcm93IGJ5IHJvdzsgZmlyc3QgdHJlZSBzdGFydHMgYXQgKDAsMClcbiAgdmFyIGN1cnJlbnRTdGFydGluZ1BvaW50ID0gbmV3IFBvaW50KDAsIDApO1xuICB2YXIgbnVtYmVyT2ZDb2x1bW5zID0gTWF0aC5jZWlsKE1hdGguc3FydChmb3Jlc3QubGVuZ3RoKSk7XG4gIHZhciBoZWlnaHQgPSAwO1xuICB2YXIgY3VycmVudFkgPSAwO1xuICB2YXIgY3VycmVudFggPSAwO1xuICB2YXIgcG9pbnQgPSBuZXcgUG9pbnREKDAsIDApO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZm9yZXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGkgJSBudW1iZXJPZkNvbHVtbnMgPT0gMCkge1xuICAgICAgLy8gU3RhcnQgb2YgYSBuZXcgcm93LCBtYWtlIHRoZSB4IGNvb3JkaW5hdGUgMCwgaW5jcmVtZW50IHRoZVxuICAgICAgLy8geSBjb29yZGluYXRlIHdpdGggdGhlIG1heCBoZWlnaHQgb2YgdGhlIHByZXZpb3VzIHJvd1xuICAgICAgY3VycmVudFggPSAwO1xuICAgICAgY3VycmVudFkgPSBoZWlnaHQ7XG5cbiAgICAgIGlmIChpICE9IDApIHtcbiAgICAgICAgY3VycmVudFkgKz0gQ29TRUNvbnN0YW50cy5ERUZBVUxUX0NPTVBPTkVOVF9TRVBFUkFUSU9OO1xuICAgICAgfVxuXG4gICAgICBoZWlnaHQgPSAwO1xuICAgIH1cblxuICAgIHZhciB0cmVlID0gZm9yZXN0W2ldO1xuXG4gICAgLy8gRmluZCB0aGUgY2VudGVyIG9mIHRoZSB0cmVlXG4gICAgdmFyIGNlbnRlck5vZGUgPSBMYXlvdXQuZmluZENlbnRlck9mVHJlZSh0cmVlKTtcblxuICAgIC8vIFNldCB0aGUgc3RhcmluZyBwb2ludCBvZiB0aGUgbmV4dCB0cmVlXG4gICAgY3VycmVudFN0YXJ0aW5nUG9pbnQueCA9IGN1cnJlbnRYO1xuICAgIGN1cnJlbnRTdGFydGluZ1BvaW50LnkgPSBjdXJyZW50WTtcblxuICAgIC8vIERvIGEgcmFkaWFsIGxheW91dCBzdGFydGluZyB3aXRoIHRoZSBjZW50ZXJcbiAgICBwb2ludCA9IENvU0VMYXlvdXQucmFkaWFsTGF5b3V0KHRyZWUsIGNlbnRlck5vZGUsIGN1cnJlbnRTdGFydGluZ1BvaW50KTtcblxuICAgIGlmIChwb2ludC55ID4gaGVpZ2h0KSB7XG4gICAgICBoZWlnaHQgPSBNYXRoLmZsb29yKHBvaW50LnkpO1xuICAgIH1cblxuICAgIGN1cnJlbnRYID0gTWF0aC5mbG9vcihwb2ludC54ICsgQ29TRUNvbnN0YW50cy5ERUZBVUxUX0NPTVBPTkVOVF9TRVBFUkFUSU9OKTtcbiAgfVxuXG4gIHRoaXMudHJhbnNmb3JtKG5ldyBQb2ludEQoTGF5b3V0Q29uc3RhbnRzLldPUkxEX0NFTlRFUl9YIC0gcG9pbnQueCAvIDIsIExheW91dENvbnN0YW50cy5XT1JMRF9DRU5URVJfWSAtIHBvaW50LnkgLyAyKSk7XG59O1xuXG5Db1NFTGF5b3V0LnJhZGlhbExheW91dCA9IGZ1bmN0aW9uICh0cmVlLCBjZW50ZXJOb2RlLCBzdGFydGluZ1BvaW50KSB7XG4gIHZhciByYWRpYWxTZXAgPSBNYXRoLm1heCh0aGlzLm1heERpYWdvbmFsSW5UcmVlKHRyZWUpLCBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfUkFESUFMX1NFUEFSQVRJT04pO1xuICBDb1NFTGF5b3V0LmJyYW5jaFJhZGlhbExheW91dChjZW50ZXJOb2RlLCBudWxsLCAwLCAzNTksIDAsIHJhZGlhbFNlcCk7XG4gIHZhciBib3VuZHMgPSBMR3JhcGguY2FsY3VsYXRlQm91bmRzKHRyZWUpO1xuXG4gIHZhciB0cmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtKCk7XG4gIHRyYW5zZm9ybS5zZXREZXZpY2VPcmdYKGJvdW5kcy5nZXRNaW5YKCkpO1xuICB0cmFuc2Zvcm0uc2V0RGV2aWNlT3JnWShib3VuZHMuZ2V0TWluWSgpKTtcbiAgdHJhbnNmb3JtLnNldFdvcmxkT3JnWChzdGFydGluZ1BvaW50LngpO1xuICB0cmFuc2Zvcm0uc2V0V29ybGRPcmdZKHN0YXJ0aW5nUG9pbnQueSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSB0cmVlW2ldO1xuICAgIG5vZGUudHJhbnNmb3JtKHRyYW5zZm9ybSk7XG4gIH1cblxuICB2YXIgYm90dG9tUmlnaHQgPSBuZXcgUG9pbnREKGJvdW5kcy5nZXRNYXhYKCksIGJvdW5kcy5nZXRNYXhZKCkpO1xuXG4gIHJldHVybiB0cmFuc2Zvcm0uaW52ZXJzZVRyYW5zZm9ybVBvaW50KGJvdHRvbVJpZ2h0KTtcbn07XG5cbkNvU0VMYXlvdXQuYnJhbmNoUmFkaWFsTGF5b3V0ID0gZnVuY3Rpb24gKG5vZGUsIHBhcmVudE9mTm9kZSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGRpc3RhbmNlLCByYWRpYWxTZXBhcmF0aW9uKSB7XG4gIC8vIEZpcnN0LCBwb3NpdGlvbiB0aGlzIG5vZGUgYnkgZmluZGluZyBpdHMgYW5nbGUuXG4gIHZhciBoYWxmSW50ZXJ2YWwgPSAoZW5kQW5nbGUgLSBzdGFydEFuZ2xlICsgMSkgLyAyO1xuXG4gIGlmIChoYWxmSW50ZXJ2YWwgPCAwKSB7XG4gICAgaGFsZkludGVydmFsICs9IDE4MDtcbiAgfVxuXG4gIHZhciBub2RlQW5nbGUgPSAoaGFsZkludGVydmFsICsgc3RhcnRBbmdsZSkgJSAzNjA7XG4gIHZhciB0ZXRhID0gbm9kZUFuZ2xlICogSUdlb21ldHJ5LlRXT19QSSAvIDM2MDtcblxuICAvLyBNYWtlIHBvbGFyIHRvIGphdmEgY29yZGluYXRlIGNvbnZlcnNpb24uXG4gIHZhciBjb3NfdGV0YSA9IE1hdGguY29zKHRldGEpO1xuICB2YXIgeF8gPSBkaXN0YW5jZSAqIE1hdGguY29zKHRldGEpO1xuICB2YXIgeV8gPSBkaXN0YW5jZSAqIE1hdGguc2luKHRldGEpO1xuXG4gIG5vZGUuc2V0Q2VudGVyKHhfLCB5Xyk7XG5cbiAgLy8gVHJhdmVyc2UgYWxsIG5laWdoYm9ycyBvZiB0aGlzIG5vZGUgYW5kIHJlY3Vyc2l2ZWx5IGNhbGwgdGhpc1xuICAvLyBmdW5jdGlvbi5cbiAgdmFyIG5laWdoYm9yRWRnZXMgPSBbXTtcbiAgbmVpZ2hib3JFZGdlcyA9IG5laWdoYm9yRWRnZXMuY29uY2F0KG5vZGUuZ2V0RWRnZXMoKSk7XG4gIHZhciBjaGlsZENvdW50ID0gbmVpZ2hib3JFZGdlcy5sZW5ndGg7XG5cbiAgaWYgKHBhcmVudE9mTm9kZSAhPSBudWxsKSB7XG4gICAgY2hpbGRDb3VudC0tO1xuICB9XG5cbiAgdmFyIGJyYW5jaENvdW50ID0gMDtcblxuICB2YXIgaW5jRWRnZXNDb3VudCA9IG5laWdoYm9yRWRnZXMubGVuZ3RoO1xuICB2YXIgc3RhcnRJbmRleDtcblxuICB2YXIgZWRnZXMgPSBub2RlLmdldEVkZ2VzQmV0d2VlbihwYXJlbnRPZk5vZGUpO1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBlZGdlcywgcHJ1bmUgdGhlbSB1bnRpbCB0aGVyZSByZW1haW5zIG9ubHkgb25lXG4gIC8vIGVkZ2UuXG4gIHdoaWxlIChlZGdlcy5sZW5ndGggPiAxKSB7XG4gICAgLy9uZWlnaGJvckVkZ2VzLnJlbW92ZShlZGdlcy5yZW1vdmUoMCkpO1xuICAgIHZhciB0ZW1wID0gZWRnZXNbMF07XG4gICAgZWRnZXMuc3BsaWNlKDAsIDEpO1xuICAgIHZhciBpbmRleCA9IG5laWdoYm9yRWRnZXMuaW5kZXhPZih0ZW1wKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgbmVpZ2hib3JFZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBpbmNFZGdlc0NvdW50LS07XG4gICAgY2hpbGRDb3VudC0tO1xuICB9XG5cbiAgaWYgKHBhcmVudE9mTm9kZSAhPSBudWxsKSB7XG4gICAgLy9hc3NlcnQgZWRnZXMubGVuZ3RoID09IDE7XG4gICAgc3RhcnRJbmRleCA9IChuZWlnaGJvckVkZ2VzLmluZGV4T2YoZWRnZXNbMF0pICsgMSkgJSBpbmNFZGdlc0NvdW50O1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0SW5kZXggPSAwO1xuICB9XG5cbiAgdmFyIHN0ZXBBbmdsZSA9IE1hdGguYWJzKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgLyBjaGlsZENvdW50O1xuXG4gIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBicmFuY2hDb3VudCAhPSBjaGlsZENvdW50OyBpID0gKytpICUgaW5jRWRnZXNDb3VudCkge1xuICAgIHZhciBjdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvckVkZ2VzW2ldLmdldE90aGVyRW5kKG5vZGUpO1xuXG4gICAgLy8gRG9uJ3QgYmFjayB0cmF2ZXJzZSB0byByb290IG5vZGUgaW4gY3VycmVudCB0cmVlLlxuICAgIGlmIChjdXJyZW50TmVpZ2hib3IgPT0gcGFyZW50T2ZOb2RlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRTdGFydEFuZ2xlID0gKHN0YXJ0QW5nbGUgKyBicmFuY2hDb3VudCAqIHN0ZXBBbmdsZSkgJSAzNjA7XG4gICAgdmFyIGNoaWxkRW5kQW5nbGUgPSAoY2hpbGRTdGFydEFuZ2xlICsgc3RlcEFuZ2xlKSAlIDM2MDtcblxuICAgIENvU0VMYXlvdXQuYnJhbmNoUmFkaWFsTGF5b3V0KGN1cnJlbnROZWlnaGJvciwgbm9kZSwgY2hpbGRTdGFydEFuZ2xlLCBjaGlsZEVuZEFuZ2xlLCBkaXN0YW5jZSArIHJhZGlhbFNlcGFyYXRpb24sIHJhZGlhbFNlcGFyYXRpb24pO1xuXG4gICAgYnJhbmNoQ291bnQrKztcbiAgfVxufTtcblxuQ29TRUxheW91dC5tYXhEaWFnb25hbEluVHJlZSA9IGZ1bmN0aW9uICh0cmVlKSB7XG4gIHZhciBtYXhEaWFnb25hbCA9IEludGVnZXIuTUlOX1ZBTFVFO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBub2RlID0gdHJlZVtpXTtcbiAgICB2YXIgZGlhZ29uYWwgPSBub2RlLmdldERpYWdvbmFsKCk7XG5cbiAgICBpZiAoZGlhZ29uYWwgPiBtYXhEaWFnb25hbCkge1xuICAgICAgbWF4RGlhZ29uYWwgPSBkaWFnb25hbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF4RGlhZ29uYWw7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5jYWxjUmVwdWxzaW9uUmFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGZvcm11bGEgaXMgMiB4IChsZXZlbCArIDEpIHggaWRlYWxFZGdlTGVuZ3RoXG4gIHJldHVybiAyICogKHRoaXMubGV2ZWwgKyAxKSAqIHRoaXMuaWRlYWxFZGdlTGVuZ3RoO1xufTtcblxuLy8gVGlsaW5nIG1ldGhvZHNcblxuLy8gR3JvdXAgemVybyBkZWdyZWUgbWVtYmVycyB3aG9zZSBwYXJlbnRzIGFyZSBub3QgdG8gYmUgdGlsZWQsIGNyZWF0ZSBkdW1teSBwYXJlbnRzIHdoZXJlIG5lZWRlZCBhbmQgZmlsbCBtZW1iZXJHcm91cHMgYnkgdGhlaXIgZHVtbXAgcGFyZW50IGlkJ3NcbkNvU0VMYXlvdXQucHJvdG90eXBlLmdyb3VwWmVyb0RlZ3JlZU1lbWJlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgLy8gYXJyYXkgb2YgW3BhcmVudF9pZCB4IG9uZURlZ3JlZU5vZGVfaWRdXG4gIHZhciB0ZW1wTWVtYmVyR3JvdXBzID0ge307IC8vIEEgdGVtcG9yYXJ5IG1hcCBvZiBwYXJlbnQgbm9kZSBhbmQgaXRzIHplcm8gZGVncmVlIG1lbWJlcnNcbiAgdGhpcy5tZW1iZXJHcm91cHMgPSB7fTsgLy8gQSBtYXAgb2YgZHVtbXkgcGFyZW50IG5vZGUgYW5kIGl0cyB6ZXJvIGRlZ3JlZSBtZW1iZXJzIHdob3NlIHBhcmVudHMgYXJlIG5vdCB0byBiZSB0aWxlZFxuICB0aGlzLmlkVG9EdW1teU5vZGUgPSB7fTsgLy8gQSBtYXAgb2YgaWQgdG8gZHVtbXkgbm9kZSBcblxuICB2YXIgemVyb0RlZ3JlZSA9IFtdOyAvLyBMaXN0IG9mIHplcm8gZGVncmVlIG5vZGVzIHdob3NlIHBhcmVudHMgYXJlIG5vdCB0byBiZSB0aWxlZFxuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxOb2RlcygpO1xuXG4gIC8vIEZpbGwgemVybyBkZWdyZWUgbGlzdFxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBhbGxOb2Rlc1tpXTtcbiAgICB2YXIgcGFyZW50ID0gbm9kZS5nZXRQYXJlbnQoKTtcbiAgICAvLyBJZiBhIG5vZGUgaGFzIHplcm8gZGVncmVlIGFuZCBpdHMgcGFyZW50IGlzIG5vdCB0byBiZSB0aWxlZCBpZiBleGlzdHMgYWRkIHRoYXQgbm9kZSB0byB6ZXJvRGVncmVzIGxpc3RcbiAgICBpZiAodGhpcy5nZXROb2RlRGVncmVlV2l0aENoaWxkcmVuKG5vZGUpID09PSAwICYmIChwYXJlbnQuaWQgPT0gdW5kZWZpbmVkIHx8ICF0aGlzLmdldFRvQmVUaWxlZChwYXJlbnQpKSkge1xuICAgICAgemVyb0RlZ3JlZS5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1hcCBvZiBwYXJlbnQgbm9kZSBhbmQgaXRzIHplcm8gZGVncmVlIG1lbWJlcnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB6ZXJvRGVncmVlLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSB6ZXJvRGVncmVlW2ldOyAvLyBaZXJvIGRlZ3JlZSBub2RlIGl0c2VsZlxuICAgIHZhciBwX2lkID0gbm9kZS5nZXRQYXJlbnQoKS5pZDsgLy8gUGFyZW50IGlkXG5cbiAgICBpZiAodHlwZW9mIHRlbXBNZW1iZXJHcm91cHNbcF9pZF0gPT09IFwidW5kZWZpbmVkXCIpIHRlbXBNZW1iZXJHcm91cHNbcF9pZF0gPSBbXTtcblxuICAgIHRlbXBNZW1iZXJHcm91cHNbcF9pZF0gPSB0ZW1wTWVtYmVyR3JvdXBzW3BfaWRdLmNvbmNhdChub2RlKTsgLy8gUHVzaCBub2RlIHRvIHRoZSBsaXN0IGJlbG9uZ3MgdG8gaXRzIHBhcmVudCBpbiB0ZW1wTWVtYmVyR3JvdXBzXG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIG5vZGVzIGF0IGEgbGV2ZWwsIGNyZWF0ZSBhIGR1bW15IGNvbXBvdW5kIGZvciB0aGVtXG4gIE9iamVjdC5rZXlzKHRlbXBNZW1iZXJHcm91cHMpLmZvckVhY2goZnVuY3Rpb24gKHBfaWQpIHtcbiAgICBpZiAodGVtcE1lbWJlckdyb3Vwc1twX2lkXS5sZW5ndGggPiAxKSB7XG4gICAgICB2YXIgZHVtbXlDb21wb3VuZElkID0gXCJEdW1teUNvbXBvdW5kX1wiICsgcF9pZDsgLy8gVGhlIGlkIG9mIGR1bW15IGNvbXBvdW5kIHdoaWNoIHdpbGwgYmUgY3JlYXRlZCBzb29uXG4gICAgICBzZWxmLm1lbWJlckdyb3Vwc1tkdW1teUNvbXBvdW5kSWRdID0gdGVtcE1lbWJlckdyb3Vwc1twX2lkXTsgLy8gQWRkIGR1bW15IGNvbXBvdW5kIHRvIG1lbWJlckdyb3Vwc1xuXG4gICAgICB2YXIgcGFyZW50ID0gdGVtcE1lbWJlckdyb3Vwc1twX2lkXVswXS5nZXRQYXJlbnQoKTsgLy8gVGhlIHBhcmVudCBvZiB6ZXJvIGRlZ3JlZSBub2RlcyB3aWxsIGJlIHRoZSBwYXJlbnQgb2YgbmV3IGR1bW15IGNvbXBvdW5kXG5cbiAgICAgIC8vIENyZWF0ZSBhIGR1bW15IGNvbXBvdW5kIHdpdGggY2FsY3VsYXRlZCBpZFxuICAgICAgdmFyIGR1bW15Q29tcG91bmQgPSBuZXcgQ29TRU5vZGUoc2VsZi5ncmFwaE1hbmFnZXIpO1xuICAgICAgZHVtbXlDb21wb3VuZC5pZCA9IGR1bW15Q29tcG91bmRJZDtcbiAgICAgIGR1bW15Q29tcG91bmQucGFkZGluZ0xlZnQgPSBwYXJlbnQucGFkZGluZ0xlZnQgfHwgMDtcbiAgICAgIGR1bW15Q29tcG91bmQucGFkZGluZ1JpZ2h0ID0gcGFyZW50LnBhZGRpbmdSaWdodCB8fCAwO1xuICAgICAgZHVtbXlDb21wb3VuZC5wYWRkaW5nQm90dG9tID0gcGFyZW50LnBhZGRpbmdCb3R0b20gfHwgMDtcbiAgICAgIGR1bW15Q29tcG91bmQucGFkZGluZ1RvcCA9IHBhcmVudC5wYWRkaW5nVG9wIHx8IDA7XG5cbiAgICAgIHNlbGYuaWRUb0R1bW15Tm9kZVtkdW1teUNvbXBvdW5kSWRdID0gZHVtbXlDb21wb3VuZDtcblxuICAgICAgdmFyIGR1bW15UGFyZW50R3JhcGggPSBzZWxmLmdldEdyYXBoTWFuYWdlcigpLmFkZChzZWxmLm5ld0dyYXBoKCksIGR1bW15Q29tcG91bmQpO1xuICAgICAgdmFyIHBhcmVudEdyYXBoID0gcGFyZW50LmdldENoaWxkKCk7XG5cbiAgICAgIC8vIEFkZCBkdW1teSBjb21wb3VuZCB0byBwYXJlbnQgdGhlIGdyYXBoXG4gICAgICBwYXJlbnRHcmFwaC5hZGQoZHVtbXlDb21wb3VuZCk7XG5cbiAgICAgIC8vIEZvciBlYWNoIHplcm8gZGVncmVlIG5vZGUgaW4gdGhpcyBsZXZlbCByZW1vdmUgaXQgZnJvbSBpdHMgcGFyZW50IGdyYXBoIGFuZCBhZGQgaXQgdG8gdGhlIGdyYXBoIG9mIGR1bW15IHBhcmVudFxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZW1wTWVtYmVyR3JvdXBzW3BfaWRdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gdGVtcE1lbWJlckdyb3Vwc1twX2lkXVtpXTtcblxuICAgICAgICBwYXJlbnRHcmFwaC5yZW1vdmUobm9kZSk7XG4gICAgICAgIGR1bW15UGFyZW50R3JhcGguYWRkKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5jbGVhckNvbXBvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNoaWxkR3JhcGhNYXAgPSB7fTtcbiAgdmFyIGlkVG9Ob2RlID0ge307XG5cbiAgLy8gR2V0IGNvbXBvdW5kIG9yZGVyaW5nIGJ5IGZpbmRpbmcgdGhlIGlubmVyIG9uZSBmaXJzdFxuICB0aGlzLnBlcmZvcm1ERlNPbkNvbXBvdW5kcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb21wb3VuZE9yZGVyLmxlbmd0aDsgaSsrKSB7XG5cbiAgICBpZFRvTm9kZVt0aGlzLmNvbXBvdW5kT3JkZXJbaV0uaWRdID0gdGhpcy5jb21wb3VuZE9yZGVyW2ldO1xuICAgIGNoaWxkR3JhcGhNYXBbdGhpcy5jb21wb3VuZE9yZGVyW2ldLmlkXSA9IFtdLmNvbmNhdCh0aGlzLmNvbXBvdW5kT3JkZXJbaV0uZ2V0Q2hpbGQoKS5nZXROb2RlcygpKTtcblxuICAgIC8vIFJlbW92ZSBjaGlsZHJlbiBvZiBjb21wb3VuZHNcbiAgICB0aGlzLmdyYXBoTWFuYWdlci5yZW1vdmUodGhpcy5jb21wb3VuZE9yZGVyW2ldLmdldENoaWxkKCkpO1xuICAgIHRoaXMuY29tcG91bmRPcmRlcltpXS5jaGlsZCA9IG51bGw7XG4gIH1cblxuICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbE5vZGVzKCk7XG5cbiAgLy8gVGlsZSB0aGUgcmVtb3ZlZCBjaGlsZHJlblxuICB0aGlzLnRpbGVDb21wb3VuZE1lbWJlcnMoY2hpbGRHcmFwaE1hcCwgaWRUb05vZGUpO1xufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUuY2xlYXJaZXJvRGVncmVlTWVtYmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgdGlsZWRaZXJvRGVncmVlUGFjayA9IHRoaXMudGlsZWRaZXJvRGVncmVlUGFjayA9IFtdO1xuXG4gIE9iamVjdC5rZXlzKHRoaXMubWVtYmVyR3JvdXBzKS5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBjb21wb3VuZE5vZGUgPSBzZWxmLmlkVG9EdW1teU5vZGVbaWRdOyAvLyBHZXQgdGhlIGR1bW15IGNvbXBvdW5kXG5cbiAgICB0aWxlZFplcm9EZWdyZWVQYWNrW2lkXSA9IHNlbGYudGlsZU5vZGVzKHNlbGYubWVtYmVyR3JvdXBzW2lkXSwgY29tcG91bmROb2RlLnBhZGRpbmdMZWZ0ICsgY29tcG91bmROb2RlLnBhZGRpbmdSaWdodCk7XG5cbiAgICAvLyBTZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGR1bW15IGNvbXBvdW5kIGFzIGNhbGN1bGF0ZWRcbiAgICBjb21wb3VuZE5vZGUucmVjdC53aWR0aCA9IHRpbGVkWmVyb0RlZ3JlZVBhY2tbaWRdLndpZHRoO1xuICAgIGNvbXBvdW5kTm9kZS5yZWN0LmhlaWdodCA9IHRpbGVkWmVyb0RlZ3JlZVBhY2tbaWRdLmhlaWdodDtcbiAgfSk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5yZXBvcHVsYXRlQ29tcG91bmRzID0gZnVuY3Rpb24gKCkge1xuICBmb3IgKHZhciBpID0gdGhpcy5jb21wb3VuZE9yZGVyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxDb21wb3VuZE5vZGUgPSB0aGlzLmNvbXBvdW5kT3JkZXJbaV07XG4gICAgdmFyIGlkID0gbENvbXBvdW5kTm9kZS5pZDtcbiAgICB2YXIgaG9yaXpvbnRhbE1hcmdpbiA9IGxDb21wb3VuZE5vZGUucGFkZGluZ0xlZnQ7XG4gICAgdmFyIHZlcnRpY2FsTWFyZ2luID0gbENvbXBvdW5kTm9kZS5wYWRkaW5nVG9wO1xuXG4gICAgdGhpcy5hZGp1c3RMb2NhdGlvbnModGhpcy50aWxlZE1lbWJlclBhY2tbaWRdLCBsQ29tcG91bmROb2RlLnJlY3QueCwgbENvbXBvdW5kTm9kZS5yZWN0LnksIGhvcml6b250YWxNYXJnaW4sIHZlcnRpY2FsTWFyZ2luKTtcbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUucmVwb3B1bGF0ZVplcm9EZWdyZWVNZW1iZXJzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB0aWxlZFBhY2sgPSB0aGlzLnRpbGVkWmVyb0RlZ3JlZVBhY2s7XG5cbiAgT2JqZWN0LmtleXModGlsZWRQYWNrKS5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBjb21wb3VuZE5vZGUgPSBzZWxmLmlkVG9EdW1teU5vZGVbaWRdOyAvLyBHZXQgdGhlIGR1bW15IGNvbXBvdW5kIGJ5IGl0cyBpZFxuICAgIHZhciBob3Jpem9udGFsTWFyZ2luID0gY29tcG91bmROb2RlLnBhZGRpbmdMZWZ0O1xuICAgIHZhciB2ZXJ0aWNhbE1hcmdpbiA9IGNvbXBvdW5kTm9kZS5wYWRkaW5nVG9wO1xuXG4gICAgLy8gQWRqdXN0IHRoZSBwb3NpdGlvbnMgb2Ygbm9kZXMgd3J0IGl0cyBjb21wb3VuZFxuICAgIHNlbGYuYWRqdXN0TG9jYXRpb25zKHRpbGVkUGFja1tpZF0sIGNvbXBvdW5kTm9kZS5yZWN0LngsIGNvbXBvdW5kTm9kZS5yZWN0LnksIGhvcml6b250YWxNYXJnaW4sIHZlcnRpY2FsTWFyZ2luKTtcbiAgfSk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5nZXRUb0JlVGlsZWQgPSBmdW5jdGlvbiAobm9kZSkge1xuICB2YXIgaWQgPSBub2RlLmlkO1xuICAvL2ZpcnN0bHkgY2hlY2sgdGhlIHByZXZpb3VzIHJlc3VsdHNcbiAgaWYgKHRoaXMudG9CZVRpbGVkW2lkXSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMudG9CZVRpbGVkW2lkXTtcbiAgfVxuXG4gIC8vb25seSBjb21wb3VuZCBub2RlcyBhcmUgdG8gYmUgdGlsZWRcbiAgdmFyIGNoaWxkR3JhcGggPSBub2RlLmdldENoaWxkKCk7XG4gIGlmIChjaGlsZEdyYXBoID09IG51bGwpIHtcbiAgICB0aGlzLnRvQmVUaWxlZFtpZF0gPSBmYWxzZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgY2hpbGRyZW4gPSBjaGlsZEdyYXBoLmdldE5vZGVzKCk7IC8vIEdldCB0aGUgY2hpbGRyZW4gbm9kZXNcblxuICAvL2EgY29tcG91bmQgbm9kZSBpcyBub3QgdG8gYmUgdGlsZWQgaWYgYWxsIG9mIGl0cyBjb21wb3VuZCBjaGlsZHJlbiBhcmUgbm90IHRvIGJlIHRpbGVkXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdGhlQ2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgIGlmICh0aGlzLmdldE5vZGVEZWdyZWUodGhlQ2hpbGQpID4gMCkge1xuICAgICAgdGhpcy50b0JlVGlsZWRbaWRdID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy9wYXNzIHRoZSBjaGlsZHJlbiBub3QgaGF2aW5nIHRoZSBjb21wb3VuZCBzdHJ1Y3R1cmVcbiAgICBpZiAodGhlQ2hpbGQuZ2V0Q2hpbGQoKSA9PSBudWxsKSB7XG4gICAgICB0aGlzLnRvQmVUaWxlZFt0aGVDaGlsZC5pZF0gPSBmYWxzZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nZXRUb0JlVGlsZWQodGhlQ2hpbGQpKSB7XG4gICAgICB0aGlzLnRvQmVUaWxlZFtpZF0gPSBmYWxzZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdGhpcy50b0JlVGlsZWRbaWRdID0gdHJ1ZTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBHZXQgZGVncmVlIG9mIGEgbm9kZSBkZXBlbmRpbmcgb2YgaXRzIGVkZ2VzIGFuZCBpbmRlcGVuZGVudCBvZiBpdHMgY2hpbGRyZW5cbkNvU0VMYXlvdXQucHJvdG90eXBlLmdldE5vZGVEZWdyZWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICB2YXIgaWQgPSBub2RlLmlkO1xuICB2YXIgZWRnZXMgPSBub2RlLmdldEVkZ2VzKCk7XG4gIHZhciBkZWdyZWUgPSAwO1xuXG4gIC8vIEZvciB0aGUgZWRnZXMgY29ubmVjdGVkXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgIGlmIChlZGdlLmdldFNvdXJjZSgpLmlkICE9PSBlZGdlLmdldFRhcmdldCgpLmlkKSB7XG4gICAgICBkZWdyZWUgPSBkZWdyZWUgKyAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVncmVlO1xufTtcblxuLy8gR2V0IGRlZ3JlZSBvZiBhIG5vZGUgd2l0aCBpdHMgY2hpbGRyZW5cbkNvU0VMYXlvdXQucHJvdG90eXBlLmdldE5vZGVEZWdyZWVXaXRoQ2hpbGRyZW4gPSBmdW5jdGlvbiAobm9kZSkge1xuICB2YXIgZGVncmVlID0gdGhpcy5nZXROb2RlRGVncmVlKG5vZGUpO1xuICBpZiAobm9kZS5nZXRDaGlsZCgpID09IG51bGwpIHtcbiAgICByZXR1cm4gZGVncmVlO1xuICB9XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuZ2V0Q2hpbGQoKS5nZXROb2RlcygpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgZGVncmVlICs9IHRoaXMuZ2V0Tm9kZURlZ3JlZVdpdGhDaGlsZHJlbihjaGlsZCk7XG4gIH1cbiAgcmV0dXJuIGRlZ3JlZTtcbn07XG5cbkNvU0VMYXlvdXQucHJvdG90eXBlLnBlcmZvcm1ERlNPbkNvbXBvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jb21wb3VuZE9yZGVyID0gW107XG4gIHRoaXMuZmlsbENvbXBleE9yZGVyQnlERlModGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCkpO1xufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUuZmlsbENvbXBleE9yZGVyQnlERlMgPSBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChjaGlsZC5nZXRDaGlsZCgpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZmlsbENvbXBleE9yZGVyQnlERlMoY2hpbGQuZ2V0Q2hpbGQoKS5nZXROb2RlcygpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ2V0VG9CZVRpbGVkKGNoaWxkKSkge1xuICAgICAgdGhpcy5jb21wb3VuZE9yZGVyLnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4qIFRoaXMgbWV0aG9kIHBsYWNlcyBlYWNoIHplcm8gZGVncmVlIG1lbWJlciB3cnQgZ2l2ZW4gKHgseSkgY29vcmRpbmF0ZXMgKHRvcCBsZWZ0KS5cbiovXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5hZGp1c3RMb2NhdGlvbnMgPSBmdW5jdGlvbiAob3JnYW5pemF0aW9uLCB4LCB5LCBjb21wb3VuZEhvcml6b250YWxNYXJnaW4sIGNvbXBvdW5kVmVydGljYWxNYXJnaW4pIHtcbiAgeCArPSBjb21wb3VuZEhvcml6b250YWxNYXJnaW47XG4gIHkgKz0gY29tcG91bmRWZXJ0aWNhbE1hcmdpbjtcblxuICB2YXIgbGVmdCA9IHg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmdhbml6YXRpb24ucm93cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciByb3cgPSBvcmdhbml6YXRpb24ucm93c1tpXTtcbiAgICB4ID0gbGVmdDtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gMDtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgbG5vZGUgPSByb3dbal07XG5cbiAgICAgIGxub2RlLnJlY3QueCA9IHg7IC8vICsgbG5vZGUucmVjdC53aWR0aCAvIDI7XG4gICAgICBsbm9kZS5yZWN0LnkgPSB5OyAvLyArIGxub2RlLnJlY3QuaGVpZ2h0IC8gMjtcblxuICAgICAgeCArPSBsbm9kZS5yZWN0LndpZHRoICsgb3JnYW5pemF0aW9uLmhvcml6b250YWxQYWRkaW5nO1xuXG4gICAgICBpZiAobG5vZGUucmVjdC5oZWlnaHQgPiBtYXhIZWlnaHQpIG1heEhlaWdodCA9IGxub2RlLnJlY3QuaGVpZ2h0O1xuICAgIH1cblxuICAgIHkgKz0gbWF4SGVpZ2h0ICsgb3JnYW5pemF0aW9uLnZlcnRpY2FsUGFkZGluZztcbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUudGlsZUNvbXBvdW5kTWVtYmVycyA9IGZ1bmN0aW9uIChjaGlsZEdyYXBoTWFwLCBpZFRvTm9kZSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMudGlsZWRNZW1iZXJQYWNrID0gW107XG5cbiAgT2JqZWN0LmtleXMoY2hpbGRHcmFwaE1hcCkuZm9yRWFjaChmdW5jdGlvbiAoaWQpIHtcbiAgICAvLyBHZXQgdGhlIGNvbXBvdW5kIG5vZGVcbiAgICB2YXIgY29tcG91bmROb2RlID0gaWRUb05vZGVbaWRdO1xuXG4gICAgc2VsZi50aWxlZE1lbWJlclBhY2tbaWRdID0gc2VsZi50aWxlTm9kZXMoY2hpbGRHcmFwaE1hcFtpZF0sIGNvbXBvdW5kTm9kZS5wYWRkaW5nTGVmdCArIGNvbXBvdW5kTm9kZS5wYWRkaW5nUmlnaHQpO1xuXG4gICAgY29tcG91bmROb2RlLnJlY3Qud2lkdGggPSBzZWxmLnRpbGVkTWVtYmVyUGFja1tpZF0ud2lkdGg7XG4gICAgY29tcG91bmROb2RlLnJlY3QuaGVpZ2h0ID0gc2VsZi50aWxlZE1lbWJlclBhY2tbaWRdLmhlaWdodDtcbiAgfSk7XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS50aWxlTm9kZXMgPSBmdW5jdGlvbiAobm9kZXMsIG1pbldpZHRoKSB7XG4gIHZhciB2ZXJ0aWNhbFBhZGRpbmcgPSBDb1NFQ29uc3RhbnRzLlRJTElOR19QQURESU5HX1ZFUlRJQ0FMO1xuICB2YXIgaG9yaXpvbnRhbFBhZGRpbmcgPSBDb1NFQ29uc3RhbnRzLlRJTElOR19QQURESU5HX0hPUklaT05UQUw7XG4gIHZhciBvcmdhbml6YXRpb24gPSB7XG4gICAgcm93czogW10sXG4gICAgcm93V2lkdGg6IFtdLFxuICAgIHJvd0hlaWdodDogW10sXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiBtaW5XaWR0aCwgLy8gYXNzdW1lIG1pbkhlaWdodCBlcXVhbHMgdG8gbWluV2lkdGhcbiAgICB2ZXJ0aWNhbFBhZGRpbmc6IHZlcnRpY2FsUGFkZGluZyxcbiAgICBob3Jpem9udGFsUGFkZGluZzogaG9yaXpvbnRhbFBhZGRpbmdcbiAgfTtcblxuICAvLyBTb3J0IHRoZSBub2RlcyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlaXIgYXJlYXNcbiAgbm9kZXMuc29ydChmdW5jdGlvbiAobjEsIG4yKSB7XG4gICAgaWYgKG4xLnJlY3Qud2lkdGggKiBuMS5yZWN0LmhlaWdodCA+IG4yLnJlY3Qud2lkdGggKiBuMi5yZWN0LmhlaWdodCkgcmV0dXJuIC0xO1xuICAgIGlmIChuMS5yZWN0LndpZHRoICogbjEucmVjdC5oZWlnaHQgPCBuMi5yZWN0LndpZHRoICogbjIucmVjdC5oZWlnaHQpIHJldHVybiAxO1xuICAgIHJldHVybiAwO1xuICB9KTtcblxuICAvLyBDcmVhdGUgdGhlIG9yZ2FuaXphdGlvbiAtPiB0aWxlIG1lbWJlcnNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBsTm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgaWYgKG9yZ2FuaXphdGlvbi5yb3dzLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmluc2VydE5vZGVUb1Jvdyhvcmdhbml6YXRpb24sIGxOb2RlLCAwLCBtaW5XaWR0aCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNhbkFkZEhvcml6b250YWwob3JnYW5pemF0aW9uLCBsTm9kZS5yZWN0LndpZHRoLCBsTm9kZS5yZWN0LmhlaWdodCkpIHtcbiAgICAgIHRoaXMuaW5zZXJ0Tm9kZVRvUm93KG9yZ2FuaXphdGlvbiwgbE5vZGUsIHRoaXMuZ2V0U2hvcnRlc3RSb3dJbmRleChvcmdhbml6YXRpb24pLCBtaW5XaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5zZXJ0Tm9kZVRvUm93KG9yZ2FuaXphdGlvbiwgbE5vZGUsIG9yZ2FuaXphdGlvbi5yb3dzLmxlbmd0aCwgbWluV2lkdGgpO1xuICAgIH1cblxuICAgIHRoaXMuc2hpZnRUb0xhc3RSb3cob3JnYW5pemF0aW9uKTtcbiAgfVxuXG4gIHJldHVybiBvcmdhbml6YXRpb247XG59O1xuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5pbnNlcnROb2RlVG9Sb3cgPSBmdW5jdGlvbiAob3JnYW5pemF0aW9uLCBub2RlLCByb3dJbmRleCwgbWluV2lkdGgpIHtcbiAgdmFyIG1pbkNvbXBvdW5kU2l6ZSA9IG1pbldpZHRoO1xuXG4gIC8vIEFkZCBuZXcgcm93IGlmIG5lZWRlZFxuICBpZiAocm93SW5kZXggPT0gb3JnYW5pemF0aW9uLnJvd3MubGVuZ3RoKSB7XG4gICAgdmFyIHNlY29uZERpbWVuc2lvbiA9IFtdO1xuXG4gICAgb3JnYW5pemF0aW9uLnJvd3MucHVzaChzZWNvbmREaW1lbnNpb24pO1xuICAgIG9yZ2FuaXphdGlvbi5yb3dXaWR0aC5wdXNoKG1pbkNvbXBvdW5kU2l6ZSk7XG4gICAgb3JnYW5pemF0aW9uLnJvd0hlaWdodC5wdXNoKDApO1xuICB9XG5cbiAgLy8gVXBkYXRlIHJvdyB3aWR0aFxuICB2YXIgdyA9IG9yZ2FuaXphdGlvbi5yb3dXaWR0aFtyb3dJbmRleF0gKyBub2RlLnJlY3Qud2lkdGg7XG5cbiAgaWYgKG9yZ2FuaXphdGlvbi5yb3dzW3Jvd0luZGV4XS5sZW5ndGggPiAwKSB7XG4gICAgdyArPSBvcmdhbml6YXRpb24uaG9yaXpvbnRhbFBhZGRpbmc7XG4gIH1cblxuICBvcmdhbml6YXRpb24ucm93V2lkdGhbcm93SW5kZXhdID0gdztcbiAgLy8gVXBkYXRlIGNvbXBvdW5kIHdpZHRoXG4gIGlmIChvcmdhbml6YXRpb24ud2lkdGggPCB3KSB7XG4gICAgb3JnYW5pemF0aW9uLndpZHRoID0gdztcbiAgfVxuXG4gIC8vIFVwZGF0ZSBoZWlnaHRcbiAgdmFyIGggPSBub2RlLnJlY3QuaGVpZ2h0O1xuICBpZiAocm93SW5kZXggPiAwKSBoICs9IG9yZ2FuaXphdGlvbi52ZXJ0aWNhbFBhZGRpbmc7XG5cbiAgdmFyIGV4dHJhSGVpZ2h0ID0gMDtcbiAgaWYgKGggPiBvcmdhbml6YXRpb24ucm93SGVpZ2h0W3Jvd0luZGV4XSkge1xuICAgIGV4dHJhSGVpZ2h0ID0gb3JnYW5pemF0aW9uLnJvd0hlaWdodFtyb3dJbmRleF07XG4gICAgb3JnYW5pemF0aW9uLnJvd0hlaWdodFtyb3dJbmRleF0gPSBoO1xuICAgIGV4dHJhSGVpZ2h0ID0gb3JnYW5pemF0aW9uLnJvd0hlaWdodFtyb3dJbmRleF0gLSBleHRyYUhlaWdodDtcbiAgfVxuXG4gIG9yZ2FuaXphdGlvbi5oZWlnaHQgKz0gZXh0cmFIZWlnaHQ7XG5cbiAgLy8gSW5zZXJ0IG5vZGVcbiAgb3JnYW5pemF0aW9uLnJvd3Nbcm93SW5kZXhdLnB1c2gobm9kZSk7XG59O1xuXG4vL1NjYW5zIHRoZSByb3dzIG9mIGFuIG9yZ2FuaXphdGlvbiBhbmQgcmV0dXJucyB0aGUgb25lIHdpdGggdGhlIG1pbiB3aWR0aFxuQ29TRUxheW91dC5wcm90b3R5cGUuZ2V0U2hvcnRlc3RSb3dJbmRleCA9IGZ1bmN0aW9uIChvcmdhbml6YXRpb24pIHtcbiAgdmFyIHIgPSAtMTtcbiAgdmFyIG1pbiA9IE51bWJlci5NQVhfVkFMVUU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcmdhbml6YXRpb24ucm93cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChvcmdhbml6YXRpb24ucm93V2lkdGhbaV0gPCBtaW4pIHtcbiAgICAgIHIgPSBpO1xuICAgICAgbWluID0gb3JnYW5pemF0aW9uLnJvd1dpZHRoW2ldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcjtcbn07XG5cbi8vU2NhbnMgdGhlIHJvd3Mgb2YgYW4gb3JnYW5pemF0aW9uIGFuZCByZXR1cm5zIHRoZSBvbmUgd2l0aCB0aGUgbWF4IHdpZHRoXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5nZXRMb25nZXN0Um93SW5kZXggPSBmdW5jdGlvbiAob3JnYW5pemF0aW9uKSB7XG4gIHZhciByID0gLTE7XG4gIHZhciBtYXggPSBOdW1iZXIuTUlOX1ZBTFVFO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgb3JnYW5pemF0aW9uLnJvd3MubGVuZ3RoOyBpKyspIHtcblxuICAgIGlmIChvcmdhbml6YXRpb24ucm93V2lkdGhbaV0gPiBtYXgpIHtcbiAgICAgIHIgPSBpO1xuICAgICAgbWF4ID0gb3JnYW5pemF0aW9uLnJvd1dpZHRoW2ldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByO1xufTtcblxuLyoqXG4qIFRoaXMgbWV0aG9kIGNoZWNrcyB3aGV0aGVyIGFkZGluZyBleHRyYSB3aWR0aCB0byB0aGUgb3JnYW5pemF0aW9uIHZpb2xhdGVzXG4qIHRoZSBhc3BlY3QgcmF0aW8oMSkgb3Igbm90LlxuKi9cbkNvU0VMYXlvdXQucHJvdG90eXBlLmNhbkFkZEhvcml6b250YWwgPSBmdW5jdGlvbiAob3JnYW5pemF0aW9uLCBleHRyYVdpZHRoLCBleHRyYUhlaWdodCkge1xuXG4gIHZhciBzcmkgPSB0aGlzLmdldFNob3J0ZXN0Um93SW5kZXgob3JnYW5pemF0aW9uKTtcblxuICBpZiAoc3JpIDwgMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFyIG1pbiA9IG9yZ2FuaXphdGlvbi5yb3dXaWR0aFtzcmldO1xuXG4gIGlmIChtaW4gKyBvcmdhbml6YXRpb24uaG9yaXpvbnRhbFBhZGRpbmcgKyBleHRyYVdpZHRoIDw9IG9yZ2FuaXphdGlvbi53aWR0aCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGhEaWZmID0gMDtcblxuICAvLyBBZGRpbmcgdG8gYW4gZXhpc3Rpbmcgcm93XG4gIGlmIChvcmdhbml6YXRpb24ucm93SGVpZ2h0W3NyaV0gPCBleHRyYUhlaWdodCkge1xuICAgIGlmIChzcmkgPiAwKSBoRGlmZiA9IGV4dHJhSGVpZ2h0ICsgb3JnYW5pemF0aW9uLnZlcnRpY2FsUGFkZGluZyAtIG9yZ2FuaXphdGlvbi5yb3dIZWlnaHRbc3JpXTtcbiAgfVxuXG4gIHZhciBhZGRfdG9fcm93X3JhdGlvO1xuICBpZiAob3JnYW5pemF0aW9uLndpZHRoIC0gbWluID49IGV4dHJhV2lkdGggKyBvcmdhbml6YXRpb24uaG9yaXpvbnRhbFBhZGRpbmcpIHtcbiAgICBhZGRfdG9fcm93X3JhdGlvID0gKG9yZ2FuaXphdGlvbi5oZWlnaHQgKyBoRGlmZikgLyAobWluICsgZXh0cmFXaWR0aCArIG9yZ2FuaXphdGlvbi5ob3Jpem9udGFsUGFkZGluZyk7XG4gIH0gZWxzZSB7XG4gICAgYWRkX3RvX3Jvd19yYXRpbyA9IChvcmdhbml6YXRpb24uaGVpZ2h0ICsgaERpZmYpIC8gb3JnYW5pemF0aW9uLndpZHRoO1xuICB9XG5cbiAgLy8gQWRkaW5nIGEgbmV3IHJvdyBmb3IgdGhpcyBub2RlXG4gIGhEaWZmID0gZXh0cmFIZWlnaHQgKyBvcmdhbml6YXRpb24udmVydGljYWxQYWRkaW5nO1xuICB2YXIgYWRkX25ld19yb3dfcmF0aW87XG4gIGlmIChvcmdhbml6YXRpb24ud2lkdGggPCBleHRyYVdpZHRoKSB7XG4gICAgYWRkX25ld19yb3dfcmF0aW8gPSAob3JnYW5pemF0aW9uLmhlaWdodCArIGhEaWZmKSAvIGV4dHJhV2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgYWRkX25ld19yb3dfcmF0aW8gPSAob3JnYW5pemF0aW9uLmhlaWdodCArIGhEaWZmKSAvIG9yZ2FuaXphdGlvbi53aWR0aDtcbiAgfVxuXG4gIGlmIChhZGRfbmV3X3Jvd19yYXRpbyA8IDEpIGFkZF9uZXdfcm93X3JhdGlvID0gMSAvIGFkZF9uZXdfcm93X3JhdGlvO1xuXG4gIGlmIChhZGRfdG9fcm93X3JhdGlvIDwgMSkgYWRkX3RvX3Jvd19yYXRpbyA9IDEgLyBhZGRfdG9fcm93X3JhdGlvO1xuXG4gIHJldHVybiBhZGRfdG9fcm93X3JhdGlvIDwgYWRkX25ld19yb3dfcmF0aW87XG59O1xuXG4vL0lmIG1vdmluZyB0aGUgbGFzdCBub2RlIGZyb20gdGhlIGxvbmdlc3Qgcm93IGFuZCBhZGRpbmcgaXQgdG8gdGhlIGxhc3Rcbi8vcm93IG1ha2VzIHRoZSBib3VuZGluZyBib3ggc21hbGxlciwgZG8gaXQuXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5zaGlmdFRvTGFzdFJvdyA9IGZ1bmN0aW9uIChvcmdhbml6YXRpb24pIHtcbiAgdmFyIGxvbmdlc3QgPSB0aGlzLmdldExvbmdlc3RSb3dJbmRleChvcmdhbml6YXRpb24pO1xuICB2YXIgbGFzdCA9IG9yZ2FuaXphdGlvbi5yb3dXaWR0aC5sZW5ndGggLSAxO1xuICB2YXIgcm93ID0gb3JnYW5pemF0aW9uLnJvd3NbbG9uZ2VzdF07XG4gIHZhciBub2RlID0gcm93W3Jvdy5sZW5ndGggLSAxXTtcblxuICB2YXIgZGlmZiA9IG5vZGUud2lkdGggKyBvcmdhbml6YXRpb24uaG9yaXpvbnRhbFBhZGRpbmc7XG5cbiAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIG9uIHRoZSBsYXN0IHJvd1xuICBpZiAob3JnYW5pemF0aW9uLndpZHRoIC0gb3JnYW5pemF0aW9uLnJvd1dpZHRoW2xhc3RdID4gZGlmZiAmJiBsb25nZXN0ICE9IGxhc3QpIHtcbiAgICAvLyBSZW1vdmUgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbG9uZ2VzdCByb3dcbiAgICByb3cuc3BsaWNlKC0xLCAxKTtcblxuICAgIC8vIFB1c2ggaXQgdG8gdGhlIGxhc3Qgcm93XG4gICAgb3JnYW5pemF0aW9uLnJvd3NbbGFzdF0ucHVzaChub2RlKTtcblxuICAgIG9yZ2FuaXphdGlvbi5yb3dXaWR0aFtsb25nZXN0XSA9IG9yZ2FuaXphdGlvbi5yb3dXaWR0aFtsb25nZXN0XSAtIGRpZmY7XG4gICAgb3JnYW5pemF0aW9uLnJvd1dpZHRoW2xhc3RdID0gb3JnYW5pemF0aW9uLnJvd1dpZHRoW2xhc3RdICsgZGlmZjtcbiAgICBvcmdhbml6YXRpb24ud2lkdGggPSBvcmdhbml6YXRpb24ucm93V2lkdGhbaW5zdGFuY2UuZ2V0TG9uZ2VzdFJvd0luZGV4KG9yZ2FuaXphdGlvbildO1xuXG4gICAgLy8gVXBkYXRlIGhlaWdodHMgb2YgdGhlIG9yZ2FuaXphdGlvblxuICAgIHZhciBtYXhIZWlnaHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocm93W2ldLmhlaWdodCA+IG1heEhlaWdodCkgbWF4SGVpZ2h0ID0gcm93W2ldLmhlaWdodDtcbiAgICB9XG4gICAgaWYgKGxvbmdlc3QgPiAwKSBtYXhIZWlnaHQgKz0gb3JnYW5pemF0aW9uLnZlcnRpY2FsUGFkZGluZztcblxuICAgIHZhciBwcmV2VG90YWwgPSBvcmdhbml6YXRpb24ucm93SGVpZ2h0W2xvbmdlc3RdICsgb3JnYW5pemF0aW9uLnJvd0hlaWdodFtsYXN0XTtcblxuICAgIG9yZ2FuaXphdGlvbi5yb3dIZWlnaHRbbG9uZ2VzdF0gPSBtYXhIZWlnaHQ7XG4gICAgaWYgKG9yZ2FuaXphdGlvbi5yb3dIZWlnaHRbbGFzdF0gPCBub2RlLmhlaWdodCArIG9yZ2FuaXphdGlvbi52ZXJ0aWNhbFBhZGRpbmcpIG9yZ2FuaXphdGlvbi5yb3dIZWlnaHRbbGFzdF0gPSBub2RlLmhlaWdodCArIG9yZ2FuaXphdGlvbi52ZXJ0aWNhbFBhZGRpbmc7XG5cbiAgICB2YXIgZmluYWxUb3RhbCA9IG9yZ2FuaXphdGlvbi5yb3dIZWlnaHRbbG9uZ2VzdF0gKyBvcmdhbml6YXRpb24ucm93SGVpZ2h0W2xhc3RdO1xuICAgIG9yZ2FuaXphdGlvbi5oZWlnaHQgKz0gZmluYWxUb3RhbCAtIHByZXZUb3RhbDtcblxuICAgIHRoaXMuc2hpZnRUb0xhc3RSb3cob3JnYW5pemF0aW9uKTtcbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUudGlsaW5nUHJlTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoQ29TRUNvbnN0YW50cy5USUxFKSB7XG4gICAgLy8gRmluZCB6ZXJvIGRlZ3JlZSBub2RlcyBhbmQgY3JlYXRlIGEgY29tcG91bmQgZm9yIGVhY2ggbGV2ZWxcbiAgICB0aGlzLmdyb3VwWmVyb0RlZ3JlZU1lbWJlcnMoKTtcbiAgICAvLyBUaWxlIGFuZCBjbGVhciBjaGlsZHJlbiBvZiBlYWNoIGNvbXBvdW5kXG4gICAgdGhpcy5jbGVhckNvbXBvdW5kcygpO1xuICAgIC8vIFNlcGFyYXRlbHkgdGlsZSBhbmQgY2xlYXIgemVybyBkZWdyZWUgbm9kZXMgZm9yIGVhY2ggbGV2ZWxcbiAgICB0aGlzLmNsZWFyWmVyb0RlZ3JlZU1lbWJlcnMoKTtcbiAgfVxufTtcblxuQ29TRUxheW91dC5wcm90b3R5cGUudGlsaW5nUG9zdExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKENvU0VDb25zdGFudHMuVElMRSkge1xuICAgIHRoaXMucmVwb3B1bGF0ZVplcm9EZWdyZWVNZW1iZXJzKCk7XG4gICAgdGhpcy5yZXBvcHVsYXRlQ29tcG91bmRzKCk7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBUcmVlIFJlZHVjdGlvbiBtZXRob2RzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVkdWNlIHRyZWVzIFxuQ29TRUxheW91dC5wcm90b3R5cGUucmVkdWNlVHJlZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBwcnVuZWROb2Rlc0FsbCA9IFtdO1xuICB2YXIgY29udGFpbnNMZWFmID0gdHJ1ZTtcbiAgdmFyIG5vZGU7XG5cbiAgd2hpbGUgKGNvbnRhaW5zTGVhZikge1xuICAgIHZhciBhbGxOb2RlcyA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzKCk7XG4gICAgdmFyIHBydW5lZE5vZGVzSW5TdGVwVGVtcCA9IFtdO1xuICAgIGNvbnRhaW5zTGVhZiA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZSA9IGFsbE5vZGVzW2ldO1xuICAgICAgaWYgKG5vZGUuZ2V0RWRnZXMoKS5sZW5ndGggPT0gMSAmJiAhbm9kZS5nZXRFZGdlcygpWzBdLmlzSW50ZXJHcmFwaCAmJiBub2RlLmdldENoaWxkKCkgPT0gbnVsbCkge1xuICAgICAgICBwcnVuZWROb2Rlc0luU3RlcFRlbXAucHVzaChbbm9kZSwgbm9kZS5nZXRFZGdlcygpWzBdLCBub2RlLmdldE93bmVyKCldKTtcbiAgICAgICAgY29udGFpbnNMZWFmID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvbnRhaW5zTGVhZiA9PSB0cnVlKSB7XG4gICAgICB2YXIgcHJ1bmVkTm9kZXNJblN0ZXAgPSBbXTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJ1bmVkTm9kZXNJblN0ZXBUZW1wLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChwcnVuZWROb2Rlc0luU3RlcFRlbXBbal1bMF0uZ2V0RWRnZXMoKS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIHBydW5lZE5vZGVzSW5TdGVwLnB1c2gocHJ1bmVkTm9kZXNJblN0ZXBUZW1wW2pdKTtcbiAgICAgICAgICBwcnVuZWROb2Rlc0luU3RlcFRlbXBbal1bMF0uZ2V0T3duZXIoKS5yZW1vdmUocHJ1bmVkTm9kZXNJblN0ZXBUZW1wW2pdWzBdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcHJ1bmVkTm9kZXNBbGwucHVzaChwcnVuZWROb2Rlc0luU3RlcCk7XG4gICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbE5vZGVzKCk7XG4gICAgICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbEVkZ2VzKCk7XG4gICAgfVxuICB9XG4gIHRoaXMucHJ1bmVkTm9kZXNBbGwgPSBwcnVuZWROb2Rlc0FsbDtcbn07XG5cbi8vIEdyb3cgdHJlZSBvbmUgc3RlcCBcbkNvU0VMYXlvdXQucHJvdG90eXBlLmdyb3dUcmVlID0gZnVuY3Rpb24gKHBydW5lZE5vZGVzQWxsKSB7XG4gIHZhciBsZW5ndGhPZlBydW5lZE5vZGVzSW5TdGVwID0gcHJ1bmVkTm9kZXNBbGwubGVuZ3RoO1xuICB2YXIgcHJ1bmVkTm9kZXNJblN0ZXAgPSBwcnVuZWROb2Rlc0FsbFtsZW5ndGhPZlBydW5lZE5vZGVzSW5TdGVwIC0gMV07XG5cbiAgdmFyIG5vZGVEYXRhO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBydW5lZE5vZGVzSW5TdGVwLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZURhdGEgPSBwcnVuZWROb2Rlc0luU3RlcFtpXTtcblxuICAgIHRoaXMuZmluZFBsYWNlZm9yUHJ1bmVkTm9kZShub2RlRGF0YSk7XG5cbiAgICBub2RlRGF0YVsyXS5hZGQobm9kZURhdGFbMF0pO1xuICAgIG5vZGVEYXRhWzJdLmFkZChub2RlRGF0YVsxXSwgbm9kZURhdGFbMV0uc291cmNlLCBub2RlRGF0YVsxXS50YXJnZXQpO1xuICB9XG5cbiAgcHJ1bmVkTm9kZXNBbGwuc3BsaWNlKHBydW5lZE5vZGVzQWxsLmxlbmd0aCAtIDEsIDEpO1xuICB0aGlzLmdyYXBoTWFuYWdlci5yZXNldEFsbE5vZGVzKCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyLnJlc2V0QWxsRWRnZXMoKTtcbn07XG5cbi8vIEZpbmQgYW4gYXBwcm9wcmlhdGUgcG9zaXRpb24gdG8gcmVwbGFjZSBwcnVuZWQgbm9kZSwgdGhpcyBtZXRob2QgY2FuIGJlIGltcHJvdmVkXG5Db1NFTGF5b3V0LnByb3RvdHlwZS5maW5kUGxhY2Vmb3JQcnVuZWROb2RlID0gZnVuY3Rpb24gKG5vZGVEYXRhKSB7XG5cbiAgdmFyIGdyaWRGb3JQcnVuZWROb2RlO1xuICB2YXIgbm9kZVRvQ29ubmVjdDtcbiAgdmFyIHBydW5lZE5vZGUgPSBub2RlRGF0YVswXTtcbiAgaWYgKHBydW5lZE5vZGUgPT0gbm9kZURhdGFbMV0uc291cmNlKSB7XG4gICAgbm9kZVRvQ29ubmVjdCA9IG5vZGVEYXRhWzFdLnRhcmdldDtcbiAgfSBlbHNlIHtcbiAgICBub2RlVG9Db25uZWN0ID0gbm9kZURhdGFbMV0uc291cmNlO1xuICB9XG4gIHZhciBzdGFydEdyaWRYID0gbm9kZVRvQ29ubmVjdC5zdGFydFg7XG4gIHZhciBmaW5pc2hHcmlkWCA9IG5vZGVUb0Nvbm5lY3QuZmluaXNoWDtcbiAgdmFyIHN0YXJ0R3JpZFkgPSBub2RlVG9Db25uZWN0LnN0YXJ0WTtcbiAgdmFyIGZpbmlzaEdyaWRZID0gbm9kZVRvQ29ubmVjdC5maW5pc2hZO1xuXG4gIHZhciB1cE5vZGVDb3VudCA9IDA7XG4gIHZhciBkb3duTm9kZUNvdW50ID0gMDtcbiAgdmFyIHJpZ2h0Tm9kZUNvdW50ID0gMDtcbiAgdmFyIGxlZnROb2RlQ291bnQgPSAwO1xuICB2YXIgY29udHJvbFJlZ2lvbnMgPSBbdXBOb2RlQ291bnQsIHJpZ2h0Tm9kZUNvdW50LCBkb3duTm9kZUNvdW50LCBsZWZ0Tm9kZUNvdW50XTtcblxuICBpZiAoc3RhcnRHcmlkWSA+IDApIHtcbiAgICBmb3IgKHZhciBpID0gc3RhcnRHcmlkWDsgaSA8PSBmaW5pc2hHcmlkWDsgaSsrKSB7XG4gICAgICBjb250cm9sUmVnaW9uc1swXSArPSB0aGlzLmdyaWRbaV1bc3RhcnRHcmlkWSAtIDFdLmxlbmd0aCArIHRoaXMuZ3JpZFtpXVtzdGFydEdyaWRZXS5sZW5ndGggLSAxO1xuICAgIH1cbiAgfVxuICBpZiAoZmluaXNoR3JpZFggPCB0aGlzLmdyaWQubGVuZ3RoIC0gMSkge1xuICAgIGZvciAodmFyIGkgPSBzdGFydEdyaWRZOyBpIDw9IGZpbmlzaEdyaWRZOyBpKyspIHtcbiAgICAgIGNvbnRyb2xSZWdpb25zWzFdICs9IHRoaXMuZ3JpZFtmaW5pc2hHcmlkWCArIDFdW2ldLmxlbmd0aCArIHRoaXMuZ3JpZFtmaW5pc2hHcmlkWF1baV0ubGVuZ3RoIC0gMTtcbiAgICB9XG4gIH1cbiAgaWYgKGZpbmlzaEdyaWRZIDwgdGhpcy5ncmlkWzBdLmxlbmd0aCAtIDEpIHtcbiAgICBmb3IgKHZhciBpID0gc3RhcnRHcmlkWDsgaSA8PSBmaW5pc2hHcmlkWDsgaSsrKSB7XG4gICAgICBjb250cm9sUmVnaW9uc1syXSArPSB0aGlzLmdyaWRbaV1bZmluaXNoR3JpZFkgKyAxXS5sZW5ndGggKyB0aGlzLmdyaWRbaV1bZmluaXNoR3JpZFldLmxlbmd0aCAtIDE7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydEdyaWRYID4gMCkge1xuICAgIGZvciAodmFyIGkgPSBzdGFydEdyaWRZOyBpIDw9IGZpbmlzaEdyaWRZOyBpKyspIHtcbiAgICAgIGNvbnRyb2xSZWdpb25zWzNdICs9IHRoaXMuZ3JpZFtzdGFydEdyaWRYIC0gMV1baV0ubGVuZ3RoICsgdGhpcy5ncmlkW3N0YXJ0R3JpZFhdW2ldLmxlbmd0aCAtIDE7XG4gICAgfVxuICB9XG4gIHZhciBtaW4gPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIG1pbkNvdW50O1xuICB2YXIgbWluSW5kZXg7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgY29udHJvbFJlZ2lvbnMubGVuZ3RoOyBqKyspIHtcbiAgICBpZiAoY29udHJvbFJlZ2lvbnNbal0gPCBtaW4pIHtcbiAgICAgIG1pbiA9IGNvbnRyb2xSZWdpb25zW2pdO1xuICAgICAgbWluQ291bnQgPSAxO1xuICAgICAgbWluSW5kZXggPSBqO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbFJlZ2lvbnNbal0gPT0gbWluKSB7XG4gICAgICBtaW5Db3VudCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChtaW5Db3VudCA9PSAzICYmIG1pbiA9PSAwKSB7XG4gICAgaWYgKGNvbnRyb2xSZWdpb25zWzBdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbMV0gPT0gMCAmJiBjb250cm9sUmVnaW9uc1syXSA9PSAwKSB7XG4gICAgICBncmlkRm9yUHJ1bmVkTm9kZSA9IDE7XG4gICAgfSBlbHNlIGlmIChjb250cm9sUmVnaW9uc1swXSA9PSAwICYmIGNvbnRyb2xSZWdpb25zWzFdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbM10gPT0gMCkge1xuICAgICAgZ3JpZEZvclBydW5lZE5vZGUgPSAwO1xuICAgIH0gZWxzZSBpZiAoY29udHJvbFJlZ2lvbnNbMF0gPT0gMCAmJiBjb250cm9sUmVnaW9uc1syXSA9PSAwICYmIGNvbnRyb2xSZWdpb25zWzNdID09IDApIHtcbiAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMztcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xSZWdpb25zWzFdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbMl0gPT0gMCAmJiBjb250cm9sUmVnaW9uc1szXSA9PSAwKSB7XG4gICAgICBncmlkRm9yUHJ1bmVkTm9kZSA9IDI7XG4gICAgfVxuICB9IGVsc2UgaWYgKG1pbkNvdW50ID09IDIgJiYgbWluID09IDApIHtcbiAgICB2YXIgcmFuZG9tID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMik7XG4gICAgaWYgKGNvbnRyb2xSZWdpb25zWzBdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbMV0gPT0gMCkge1xuICAgICAgO1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xSZWdpb25zWzBdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbMl0gPT0gMCkge1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xSZWdpb25zWzBdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbM10gPT0gMCkge1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xSZWdpb25zWzFdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbMl0gPT0gMCkge1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRyb2xSZWdpb25zWzFdID09IDAgJiYgY29udHJvbFJlZ2lvbnNbM10gPT0gMCkge1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJhbmRvbSA9PSAwKSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyaWRGb3JQcnVuZWROb2RlID0gMztcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAobWluQ291bnQgPT0gNCAmJiBtaW4gPT0gMCkge1xuICAgIHZhciByYW5kb20gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA0KTtcbiAgICBncmlkRm9yUHJ1bmVkTm9kZSA9IHJhbmRvbTtcbiAgfSBlbHNlIHtcbiAgICBncmlkRm9yUHJ1bmVkTm9kZSA9IG1pbkluZGV4O1xuICB9XG5cbiAgaWYgKGdyaWRGb3JQcnVuZWROb2RlID09IDApIHtcbiAgICBwcnVuZWROb2RlLnNldENlbnRlcihub2RlVG9Db25uZWN0LmdldENlbnRlclgoKSwgbm9kZVRvQ29ubmVjdC5nZXRDZW50ZXJZKCkgLSBub2RlVG9Db25uZWN0LmdldEhlaWdodCgpIC8gMiAtIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLSBwcnVuZWROb2RlLmdldEhlaWdodCgpIC8gMik7XG4gIH0gZWxzZSBpZiAoZ3JpZEZvclBydW5lZE5vZGUgPT0gMSkge1xuICAgIHBydW5lZE5vZGUuc2V0Q2VudGVyKG5vZGVUb0Nvbm5lY3QuZ2V0Q2VudGVyWCgpICsgbm9kZVRvQ29ubmVjdC5nZXRXaWR0aCgpIC8gMiArIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggKyBwcnVuZWROb2RlLmdldFdpZHRoKCkgLyAyLCBub2RlVG9Db25uZWN0LmdldENlbnRlclkoKSk7XG4gIH0gZWxzZSBpZiAoZ3JpZEZvclBydW5lZE5vZGUgPT0gMikge1xuICAgIHBydW5lZE5vZGUuc2V0Q2VudGVyKG5vZGVUb0Nvbm5lY3QuZ2V0Q2VudGVyWCgpLCBub2RlVG9Db25uZWN0LmdldENlbnRlclkoKSArIG5vZGVUb0Nvbm5lY3QuZ2V0SGVpZ2h0KCkgLyAyICsgRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSCArIHBydW5lZE5vZGUuZ2V0SGVpZ2h0KCkgLyAyKTtcbiAgfSBlbHNlIHtcbiAgICBwcnVuZWROb2RlLnNldENlbnRlcihub2RlVG9Db25uZWN0LmdldENlbnRlclgoKSAtIG5vZGVUb0Nvbm5lY3QuZ2V0V2lkdGgoKSAvIDIgLSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIIC0gcHJ1bmVkTm9kZS5nZXRXaWR0aCgpIC8gMiwgbm9kZVRvQ29ubmVjdC5nZXRDZW50ZXJZKCkpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENvU0VMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgY29zZUJhc2UgPSB7fTtcblxuY29zZUJhc2UubGF5b3V0QmFzZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5jb3NlQmFzZS5Db1NFQ29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbmNvc2VCYXNlLkNvU0VFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbmNvc2VCYXNlLkNvU0VHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5jb3NlQmFzZS5Db1NFR3JhcGhNYW5hZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbmNvc2VCYXNlLkNvU0VMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuY29zZUJhc2UuQ29TRU5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvc2VCYXNlO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/cose-base/cose-base.js\n"); + +/***/ }), + +/***/ "../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js ***! + \******************************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory(__webpack_require__(/*! cose-base */ \"../../../node_modules/cose-base/cose-base.js\"));\n\telse {}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_659__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_659__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_659__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_659__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__nested_webpack_require_659__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_659__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_659__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__nested_webpack_require_659__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__nested_webpack_require_659__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_659__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_659__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_659__(__nested_webpack_require_659__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __nested_webpack_require_3201__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __nested_webpack_require_3201__(0).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __nested_webpack_require_3201__(0).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __nested_webpack_require_3201__(0).CoSEConstants;\nvar CoSELayout = __nested_webpack_require_3201__(0).CoSELayout;\nvar CoSENode = __nested_webpack_require_3201__(0).CoSENode;\nvar PointD = __nested_webpack_require_3201__(0).layoutBase.PointD;\nvar DimensionD = __nested_webpack_require_3201__(0).layoutBase.DimensionD;\n\nvar defaults = {\n // Called on `layoutready`\n ready: function ready() {},\n // Called on `layoutstop`\n stop: function stop() {},\n // 'draft', 'default' or 'proof\" \n // - 'draft' fast cooling rate \n // - 'default' moderate cooling rate \n // - \"proof\" slow cooling rate\n quality: 'default',\n // include labels in node dimensions\n nodeDimensionsIncludeLabels: false,\n // number of ticks per frame; higher is faster but more jerky\n refresh: 30,\n // Whether to fit the network view after when done\n fit: true,\n // Padding on fit\n padding: 10,\n // Whether to enable incremental mode\n randomize: true,\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: 4500,\n // Ideal edge (non nested) length\n idealEdgeLength: 50,\n // Divisor to compute edge forces\n edgeElasticity: 0.45,\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 0.1,\n // Gravity force (constant)\n gravity: 0.25,\n // Maximum number of iterations to perform\n numIter: 2500,\n // For enabling tiling\n tile: true,\n // Type of layout animation. The option set is {'during', 'end', false}\n animate: 'end',\n // Duration for animate:end\n animationDuration: 500,\n // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingVertical: 10,\n // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingHorizontal: 10,\n // Gravity range (constant) for compounds\n gravityRangeCompound: 1.5,\n // Gravity force (constant) for compounds\n gravityCompound: 1.0,\n // Gravity range (constant)\n gravityRange: 3.8,\n // Initial cooling factor for incremental layout\n initialEnergyOnIncremental: 0.5\n};\n\nfunction extend(defaults, options) {\n var obj = {};\n\n for (var i in defaults) {\n obj[i] = defaults[i];\n }\n\n for (var i in options) {\n obj[i] = options[i];\n }\n\n return obj;\n};\n\nfunction _CoSELayout(_options) {\n this.options = extend(defaults, _options);\n getUserOptions(this.options);\n}\n\nvar getUserOptions = function getUserOptions(options) {\n if (options.nodeRepulsion != null) CoSEConstants.DEFAULT_REPULSION_STRENGTH = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = options.nodeRepulsion;\n if (options.idealEdgeLength != null) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;\n if (options.edgeElasticity != null) CoSEConstants.DEFAULT_SPRING_STRENGTH = FDLayoutConstants.DEFAULT_SPRING_STRENGTH = options.edgeElasticity;\n if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n if (options.quality == 'draft') LayoutConstants.QUALITY = 0;else if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 1;\n\n CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n CoSEConstants.TILE = options.tile;\n CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n};\n\n_CoSELayout.prototype.run = function () {\n var ready;\n var frameId;\n var options = this.options;\n var idToLNode = this.idToLNode = {};\n var layout = this.layout = new CoSELayout();\n var self = this;\n\n self.stopped = false;\n\n this.cy = this.options.cy;\n\n this.cy.trigger({ type: 'layoutstart', layout: this });\n\n var gm = layout.newGraphManager();\n this.gm = gm;\n\n var nodes = this.options.eles.nodes();\n var edges = this.options.eles.edges();\n\n this.root = gm.addRoot();\n this.processChildrenList(this.root, this.getTopMostNodes(nodes), layout);\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var sourceNode = this.idToLNode[edge.data(\"source\")];\n var targetNode = this.idToLNode[edge.data(\"target\")];\n if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n e1.id = edge.id();\n }\n }\n\n var getPositions = function getPositions(ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var theId = ele.data('id');\n var lNode = self.idToLNode[theId];\n\n return {\n x: lNode.getRect().getCenterX(),\n y: lNode.getRect().getCenterY()\n };\n };\n\n /*\n * Reposition nodes in iterations animatedly\n */\n var iterateAnimated = function iterateAnimated() {\n // Thigs to perform after nodes are repositioned on screen\n var afterReposition = function afterReposition() {\n if (options.fit) {\n options.cy.fit(options.eles, options.padding);\n }\n\n if (!ready) {\n ready = true;\n self.cy.one('layoutready', options.ready);\n self.cy.trigger({ type: 'layoutready', layout: self });\n }\n };\n\n var ticksPerFrame = self.options.refresh;\n var isDone;\n\n for (var i = 0; i < ticksPerFrame && !isDone; i++) {\n isDone = self.stopped || self.layout.tick();\n }\n\n // If layout is done\n if (isDone) {\n // If the layout is not a sublayout and it is successful perform post layout.\n if (layout.checkLayoutSuccess() && !layout.isSubLayout) {\n layout.doPostLayout();\n }\n\n // If layout has a tilingPostLayout function property call it.\n if (layout.tilingPostLayout) {\n layout.tilingPostLayout();\n }\n\n layout.isLayoutFinished = true;\n\n self.options.eles.nodes().positions(getPositions);\n\n afterReposition();\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n self.cy.one('layoutstop', self.options.stop);\n self.cy.trigger({ type: 'layoutstop', layout: self });\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n\n ready = false;\n return;\n }\n\n var animationData = self.layout.getPositionsData(); // Get positions of layout nodes note that all nodes may not be layout nodes because of tiling\n\n // Position nodes, for the nodes whose id does not included in data (because they are removed from their parents and included in dummy compounds)\n // use position of their ancestors or dummy ancestors\n options.eles.nodes().positions(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n // If ele is a compound node, then its position will be defined by its children\n if (!ele.isParent()) {\n var theId = ele.id();\n var pNode = animationData[theId];\n var temp = ele;\n // If pNode is undefined search until finding position data of its first ancestor (It may be dummy as well)\n while (pNode == null) {\n pNode = animationData[temp.data('parent')] || animationData['DummyCompound_' + temp.data('parent')];\n animationData[theId] = pNode;\n temp = temp.parent()[0];\n if (temp == undefined) {\n break;\n }\n }\n if (pNode != null) {\n return {\n x: pNode.x,\n y: pNode.y\n };\n } else {\n return {\n x: ele.position('x'),\n y: ele.position('y')\n };\n }\n }\n });\n\n afterReposition();\n\n frameId = requestAnimationFrame(iterateAnimated);\n };\n\n /*\n * Listen 'layoutstarted' event and start animated iteration if animate option is 'during'\n */\n layout.addListener('layoutstarted', function () {\n if (self.options.animate === 'during') {\n frameId = requestAnimationFrame(iterateAnimated);\n }\n });\n\n layout.runLayout(); // Run cose layout\n\n /*\n * If animate option is not 'during' ('end' or false) perform these here (If it is 'during' similar things are already performed)\n */\n if (this.options.animate !== \"during\") {\n self.options.eles.nodes().not(\":parent\").layoutPositions(self, self.options, getPositions); // Use layout positions to reposition the nodes it considers the options parameter\n ready = false;\n }\n\n return this; // chaining\n};\n\n//Get the top most ones of a list of nodes\n_CoSELayout.prototype.getTopMostNodes = function (nodes) {\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n};\n\n_CoSELayout.prototype.processChildrenList = function (parent, children, layout) {\n var size = children.length;\n for (var i = 0; i < size; i++) {\n var theChild = children[i];\n var children_of_children = theChild.children();\n var theNode;\n\n var dimensions = theChild.layoutDimensions({\n nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels\n });\n\n if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n } else {\n theNode = parent.add(new CoSENode(this.graphManager));\n }\n // Attach id to the layout node\n theNode.id = theChild.data(\"id\");\n // Attach the paddings of cy node to layout node\n theNode.paddingLeft = parseInt(theChild.css('padding'));\n theNode.paddingTop = parseInt(theChild.css('padding'));\n theNode.paddingRight = parseInt(theChild.css('padding'));\n theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n //Attach the label properties to compound if labels will be included in node dimensions \n if (this.options.nodeDimensionsIncludeLabels) {\n if (theChild.isParent()) {\n var labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false }).w;\n var labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false }).h;\n var labelPos = theChild.css(\"text-halign\");\n theNode.labelWidth = labelWidth;\n theNode.labelHeight = labelHeight;\n theNode.labelPos = labelPos;\n }\n }\n\n // Map the layout node\n this.idToLNode[theChild.data(\"id\")] = theNode;\n\n if (isNaN(theNode.rect.x)) {\n theNode.rect.x = 0;\n }\n\n if (isNaN(theNode.rect.y)) {\n theNode.rect.y = 0;\n }\n\n if (children_of_children != null && children_of_children.length > 0) {\n var theNewGraph;\n theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n this.processChildrenList(theNewGraph, children_of_children, layout);\n }\n }\n};\n\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\n_CoSELayout.prototype.stop = function () {\n this.stopped = true;\n\n return this; // chaining\n};\n\nvar register = function register(cytoscape) {\n // var Layout = getLayout( cytoscape );\n\n cytoscape('layout', 'cose-bilkent', _CoSELayout);\n};\n\n// auto reg for globals\nif (typeof cytoscape !== 'undefined') {\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ })\n/******/ ]);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2N5dG9zY2FwZS1jb3NlLWJpbGtlbnQvY3l0b3NjYXBlLWNvc2UtYmlsa2VudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLElBQUksSUFBeUQ7QUFDN0QsMkJBQTJCLG1CQUFPLENBQUMsK0RBQVc7QUFDOUMsTUFBTSxFQUtxRDtBQUMzRCxDQUFDO0FBQ0QscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhCQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBFQUEwRSw4QkFBbUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CLHVCQUF1QjtBQUNwRDtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0IsZUFBZSw4QkFBbUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEUsMENBQTBDO0FBQzFDLFdBQVcsOEJBQW1CO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUIsa0NBQWtDO0FBQy9EO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQjtBQUM3QjtBQUNBO0FBQ0EsaUJBQWlCLDhCQUFtQixDQUFDLDhCQUFtQjtBQUN4RCxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLCtCQUFtQjs7QUFFcEQ7OztBQUdBLHNCQUFzQiwrQkFBbUI7QUFDekMsd0JBQXdCLCtCQUFtQjtBQUMzQyxvQkFBb0IsK0JBQW1CO0FBQ3ZDLGlCQUFpQiwrQkFBbUI7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QSxlQUFlO0FBQ2Y7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2N5dG9zY2FwZS1jb3NlLWJpbGtlbnQvY3l0b3NjYXBlLWNvc2UtYmlsa2VudC5qcz9lNWRiIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcImNvc2UtYmFzZVwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXCJjb3NlLWJhc2VcIl0sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiY3l0b3NjYXBlQ29zZUJpbGtlbnRcIl0gPSBmYWN0b3J5KHJlcXVpcmUoXCJjb3NlLWJhc2VcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImN5dG9zY2FwZUNvc2VCaWxrZW50XCJdID0gZmFjdG9yeShyb290W1wiY29zZUJhc2VcIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV8wX18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFXzBfXztcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmxheW91dEJhc2UuTGF5b3V0Q29uc3RhbnRzO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5sYXlvdXRCYXNlLkZETGF5b3V0Q29uc3RhbnRzO1xudmFyIENvU0VDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLkNvU0VDb25zdGFudHM7XG52YXIgQ29TRUxheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuQ29TRUxheW91dDtcbnZhciBDb1NFTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuQ29TRU5vZGU7XG52YXIgUG9pbnREID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5sYXlvdXRCYXNlLlBvaW50RDtcbnZhciBEaW1lbnNpb25EID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5sYXlvdXRCYXNlLkRpbWVuc2lvbkQ7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgLy8gQ2FsbGVkIG9uIGBsYXlvdXRyZWFkeWBcbiAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gIC8vIENhbGxlZCBvbiBgbGF5b3V0c3RvcGBcbiAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHt9LFxuICAvLyAnZHJhZnQnLCAnZGVmYXVsdCcgb3IgJ3Byb29mXCIgXG4gIC8vIC0gJ2RyYWZ0JyBmYXN0IGNvb2xpbmcgcmF0ZSBcbiAgLy8gLSAnZGVmYXVsdCcgbW9kZXJhdGUgY29vbGluZyByYXRlIFxuICAvLyAtIFwicHJvb2ZcIiBzbG93IGNvb2xpbmcgcmF0ZVxuICBxdWFsaXR5OiAnZGVmYXVsdCcsXG4gIC8vIGluY2x1ZGUgbGFiZWxzIGluIG5vZGUgZGltZW5zaW9uc1xuICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHM6IGZhbHNlLFxuICAvLyBudW1iZXIgb2YgdGlja3MgcGVyIGZyYW1lOyBoaWdoZXIgaXMgZmFzdGVyIGJ1dCBtb3JlIGplcmt5XG4gIHJlZnJlc2g6IDMwLFxuICAvLyBXaGV0aGVyIHRvIGZpdCB0aGUgbmV0d29yayB2aWV3IGFmdGVyIHdoZW4gZG9uZVxuICBmaXQ6IHRydWUsXG4gIC8vIFBhZGRpbmcgb24gZml0XG4gIHBhZGRpbmc6IDEwLFxuICAvLyBXaGV0aGVyIHRvIGVuYWJsZSBpbmNyZW1lbnRhbCBtb2RlXG4gIHJhbmRvbWl6ZTogdHJ1ZSxcbiAgLy8gTm9kZSByZXB1bHNpb24gKG5vbiBvdmVybGFwcGluZykgbXVsdGlwbGllclxuICBub2RlUmVwdWxzaW9uOiA0NTAwLFxuICAvLyBJZGVhbCBlZGdlIChub24gbmVzdGVkKSBsZW5ndGhcbiAgaWRlYWxFZGdlTGVuZ3RoOiA1MCxcbiAgLy8gRGl2aXNvciB0byBjb21wdXRlIGVkZ2UgZm9yY2VzXG4gIGVkZ2VFbGFzdGljaXR5OiAwLjQ1LFxuICAvLyBOZXN0aW5nIGZhY3RvciAobXVsdGlwbGllcikgdG8gY29tcHV0ZSBpZGVhbCBlZGdlIGxlbmd0aCBmb3IgbmVzdGVkIGVkZ2VzXG4gIG5lc3RpbmdGYWN0b3I6IDAuMSxcbiAgLy8gR3Jhdml0eSBmb3JjZSAoY29uc3RhbnQpXG4gIGdyYXZpdHk6IDAuMjUsXG4gIC8vIE1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcGVyZm9ybVxuICBudW1JdGVyOiAyNTAwLFxuICAvLyBGb3IgZW5hYmxpbmcgdGlsaW5nXG4gIHRpbGU6IHRydWUsXG4gIC8vIFR5cGUgb2YgbGF5b3V0IGFuaW1hdGlvbi4gVGhlIG9wdGlvbiBzZXQgaXMgeydkdXJpbmcnLCAnZW5kJywgZmFsc2V9XG4gIGFuaW1hdGU6ICdlbmQnLFxuICAvLyBEdXJhdGlvbiBmb3IgYW5pbWF0ZTplbmRcbiAgYW5pbWF0aW9uRHVyYXRpb246IDUwMCxcbiAgLy8gUmVwcmVzZW50cyB0aGUgYW1vdW50IG9mIHRoZSB2ZXJ0aWNhbCBzcGFjZSB0byBwdXQgYmV0d2VlbiB0aGUgemVybyBkZWdyZWUgbWVtYmVycyBkdXJpbmcgdGhlIHRpbGluZyBvcGVyYXRpb24oY2FuIGFsc28gYmUgYSBmdW5jdGlvbilcbiAgdGlsaW5nUGFkZGluZ1ZlcnRpY2FsOiAxMCxcbiAgLy8gUmVwcmVzZW50cyB0aGUgYW1vdW50IG9mIHRoZSBob3Jpem9udGFsIHNwYWNlIHRvIHB1dCBiZXR3ZWVuIHRoZSB6ZXJvIGRlZ3JlZSBtZW1iZXJzIGR1cmluZyB0aGUgdGlsaW5nIG9wZXJhdGlvbihjYW4gYWxzbyBiZSBhIGZ1bmN0aW9uKVxuICB0aWxpbmdQYWRkaW5nSG9yaXpvbnRhbDogMTAsXG4gIC8vIEdyYXZpdHkgcmFuZ2UgKGNvbnN0YW50KSBmb3IgY29tcG91bmRzXG4gIGdyYXZpdHlSYW5nZUNvbXBvdW5kOiAxLjUsXG4gIC8vIEdyYXZpdHkgZm9yY2UgKGNvbnN0YW50KSBmb3IgY29tcG91bmRzXG4gIGdyYXZpdHlDb21wb3VuZDogMS4wLFxuICAvLyBHcmF2aXR5IHJhbmdlIChjb25zdGFudClcbiAgZ3Jhdml0eVJhbmdlOiAzLjgsXG4gIC8vIEluaXRpYWwgY29vbGluZyBmYWN0b3IgZm9yIGluY3JlbWVudGFsIGxheW91dFxuICBpbml0aWFsRW5lcmd5T25JbmNyZW1lbnRhbDogMC41XG59O1xuXG5mdW5jdGlvbiBleHRlbmQoZGVmYXVsdHMsIG9wdGlvbnMpIHtcbiAgdmFyIG9iaiA9IHt9O1xuXG4gIGZvciAodmFyIGkgaW4gZGVmYXVsdHMpIHtcbiAgICBvYmpbaV0gPSBkZWZhdWx0c1tpXTtcbiAgfVxuXG4gIGZvciAodmFyIGkgaW4gb3B0aW9ucykge1xuICAgIG9ialtpXSA9IG9wdGlvbnNbaV07XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcblxuZnVuY3Rpb24gX0NvU0VMYXlvdXQoX29wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKGRlZmF1bHRzLCBfb3B0aW9ucyk7XG4gIGdldFVzZXJPcHRpb25zKHRoaXMub3B0aW9ucyk7XG59XG5cbnZhciBnZXRVc2VyT3B0aW9ucyA9IGZ1bmN0aW9uIGdldFVzZXJPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMubm9kZVJlcHVsc2lvbiAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfUkVQVUxTSU9OX1NUUkVOR1RIID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEggPSBvcHRpb25zLm5vZGVSZXB1bHNpb247XG4gIGlmIChvcHRpb25zLmlkZWFsRWRnZUxlbmd0aCAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIID0gb3B0aW9ucy5pZGVhbEVkZ2VMZW5ndGg7XG4gIGlmIChvcHRpb25zLmVkZ2VFbGFzdGljaXR5ICE9IG51bGwpIENvU0VDb25zdGFudHMuREVGQVVMVF9TUFJJTkdfU1RSRU5HVEggPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX1NQUklOR19TVFJFTkdUSCA9IG9wdGlvbnMuZWRnZUVsYXN0aWNpdHk7XG4gIGlmIChvcHRpb25zLm5lc3RpbmdGYWN0b3IgIT0gbnVsbCkgQ29TRUNvbnN0YW50cy5QRVJfTEVWRUxfSURFQUxfRURHRV9MRU5HVEhfRkFDVE9SID0gRkRMYXlvdXRDb25zdGFudHMuUEVSX0xFVkVMX0lERUFMX0VER0VfTEVOR1RIX0ZBQ1RPUiA9IG9wdGlvbnMubmVzdGluZ0ZhY3RvcjtcbiAgaWYgKG9wdGlvbnMuZ3Jhdml0eSAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfR1JBVklUWV9TVFJFTkdUSCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfR1JBVklUWV9TVFJFTkdUSCA9IG9wdGlvbnMuZ3Jhdml0eTtcbiAgaWYgKG9wdGlvbnMubnVtSXRlciAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLk1BWF9JVEVSQVRJT05TID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX0lURVJBVElPTlMgPSBvcHRpb25zLm51bUl0ZXI7XG4gIGlmIChvcHRpb25zLmdyYXZpdHlSYW5nZSAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfR1JBVklUWV9SQU5HRV9GQUNUT1IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0dSQVZJVFlfUkFOR0VfRkFDVE9SID0gb3B0aW9ucy5ncmF2aXR5UmFuZ2U7XG4gIGlmIChvcHRpb25zLmdyYXZpdHlDb21wb3VuZCAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9TVFJFTkdUSCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9TVFJFTkdUSCA9IG9wdGlvbnMuZ3Jhdml0eUNvbXBvdW5kO1xuICBpZiAob3B0aW9ucy5ncmF2aXR5UmFuZ2VDb21wb3VuZCAhPSBudWxsKSBDb1NFQ29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfUkFOR0VfRkFDVE9SID0gb3B0aW9ucy5ncmF2aXR5UmFuZ2VDb21wb3VuZDtcbiAgaWYgKG9wdGlvbnMuaW5pdGlhbEVuZXJneU9uSW5jcmVtZW50YWwgIT0gbnVsbCkgQ29TRUNvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT09MSU5HX0ZBQ1RPUl9JTkNSRU1FTlRBTCA9IG9wdGlvbnMuaW5pdGlhbEVuZXJneU9uSW5jcmVtZW50YWw7XG5cbiAgaWYgKG9wdGlvbnMucXVhbGl0eSA9PSAnZHJhZnQnKSBMYXlvdXRDb25zdGFudHMuUVVBTElUWSA9IDA7ZWxzZSBpZiAob3B0aW9ucy5xdWFsaXR5ID09ICdwcm9vZicpIExheW91dENvbnN0YW50cy5RVUFMSVRZID0gMjtlbHNlIExheW91dENvbnN0YW50cy5RVUFMSVRZID0gMTtcblxuICBDb1NFQ29uc3RhbnRzLk5PREVfRElNRU5TSU9OU19JTkNMVURFX0xBQkVMUyA9IEZETGF5b3V0Q29uc3RhbnRzLk5PREVfRElNRU5TSU9OU19JTkNMVURFX0xBQkVMUyA9IExheW91dENvbnN0YW50cy5OT0RFX0RJTUVOU0lPTlNfSU5DTFVERV9MQUJFTFMgPSBvcHRpb25zLm5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVscztcbiAgQ29TRUNvbnN0YW50cy5ERUZBVUxUX0lOQ1JFTUVOVEFMID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9JTkNSRU1FTlRBTCA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX0lOQ1JFTUVOVEFMID0gIW9wdGlvbnMucmFuZG9taXplO1xuICBDb1NFQ29uc3RhbnRzLkFOSU1BVEUgPSBGRExheW91dENvbnN0YW50cy5BTklNQVRFID0gTGF5b3V0Q29uc3RhbnRzLkFOSU1BVEUgPSBvcHRpb25zLmFuaW1hdGU7XG4gIENvU0VDb25zdGFudHMuVElMRSA9IG9wdGlvbnMudGlsZTtcbiAgQ29TRUNvbnN0YW50cy5USUxJTkdfUEFERElOR19WRVJUSUNBTCA9IHR5cGVvZiBvcHRpb25zLnRpbGluZ1BhZGRpbmdWZXJ0aWNhbCA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMudGlsaW5nUGFkZGluZ1ZlcnRpY2FsLmNhbGwoKSA6IG9wdGlvbnMudGlsaW5nUGFkZGluZ1ZlcnRpY2FsO1xuICBDb1NFQ29uc3RhbnRzLlRJTElOR19QQURESU5HX0hPUklaT05UQUwgPSB0eXBlb2Ygb3B0aW9ucy50aWxpbmdQYWRkaW5nSG9yaXpvbnRhbCA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMudGlsaW5nUGFkZGluZ0hvcml6b250YWwuY2FsbCgpIDogb3B0aW9ucy50aWxpbmdQYWRkaW5nSG9yaXpvbnRhbDtcbn07XG5cbl9Db1NFTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciByZWFkeTtcbiAgdmFyIGZyYW1lSWQ7XG4gIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICB2YXIgaWRUb0xOb2RlID0gdGhpcy5pZFRvTE5vZGUgPSB7fTtcbiAgdmFyIGxheW91dCA9IHRoaXMubGF5b3V0ID0gbmV3IENvU0VMYXlvdXQoKTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHNlbGYuc3RvcHBlZCA9IGZhbHNlO1xuXG4gIHRoaXMuY3kgPSB0aGlzLm9wdGlvbnMuY3k7XG5cbiAgdGhpcy5jeS50cmlnZ2VyKHsgdHlwZTogJ2xheW91dHN0YXJ0JywgbGF5b3V0OiB0aGlzIH0pO1xuXG4gIHZhciBnbSA9IGxheW91dC5uZXdHcmFwaE1hbmFnZXIoKTtcbiAgdGhpcy5nbSA9IGdtO1xuXG4gIHZhciBub2RlcyA9IHRoaXMub3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gIHZhciBlZGdlcyA9IHRoaXMub3B0aW9ucy5lbGVzLmVkZ2VzKCk7XG5cbiAgdGhpcy5yb290ID0gZ20uYWRkUm9vdCgpO1xuICB0aGlzLnByb2Nlc3NDaGlsZHJlbkxpc3QodGhpcy5yb290LCB0aGlzLmdldFRvcE1vc3ROb2Rlcyhub2RlcyksIGxheW91dCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgdmFyIHNvdXJjZU5vZGUgPSB0aGlzLmlkVG9MTm9kZVtlZGdlLmRhdGEoXCJzb3VyY2VcIildO1xuICAgIHZhciB0YXJnZXROb2RlID0gdGhpcy5pZFRvTE5vZGVbZWRnZS5kYXRhKFwidGFyZ2V0XCIpXTtcbiAgICBpZiAoc291cmNlTm9kZSAhPT0gdGFyZ2V0Tm9kZSAmJiBzb3VyY2VOb2RlLmdldEVkZ2VzQmV0d2Vlbih0YXJnZXROb2RlKS5sZW5ndGggPT0gMCkge1xuICAgICAgdmFyIGUxID0gZ20uYWRkKGxheW91dC5uZXdFZGdlKCksIHNvdXJjZU5vZGUsIHRhcmdldE5vZGUpO1xuICAgICAgZTEuaWQgPSBlZGdlLmlkKCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGdldFBvc2l0aW9ucyA9IGZ1bmN0aW9uIGdldFBvc2l0aW9ucyhlbGUsIGkpIHtcbiAgICBpZiAodHlwZW9mIGVsZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgZWxlID0gaTtcbiAgICB9XG4gICAgdmFyIHRoZUlkID0gZWxlLmRhdGEoJ2lkJyk7XG4gICAgdmFyIGxOb2RlID0gc2VsZi5pZFRvTE5vZGVbdGhlSWRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGxOb2RlLmdldFJlY3QoKS5nZXRDZW50ZXJYKCksXG4gICAgICB5OiBsTm9kZS5nZXRSZWN0KCkuZ2V0Q2VudGVyWSgpXG4gICAgfTtcbiAgfTtcblxuICAvKlxuICAgKiBSZXBvc2l0aW9uIG5vZGVzIGluIGl0ZXJhdGlvbnMgYW5pbWF0ZWRseVxuICAgKi9cbiAgdmFyIGl0ZXJhdGVBbmltYXRlZCA9IGZ1bmN0aW9uIGl0ZXJhdGVBbmltYXRlZCgpIHtcbiAgICAvLyBUaGlncyB0byBwZXJmb3JtIGFmdGVyIG5vZGVzIGFyZSByZXBvc2l0aW9uZWQgb24gc2NyZWVuXG4gICAgdmFyIGFmdGVyUmVwb3NpdGlvbiA9IGZ1bmN0aW9uIGFmdGVyUmVwb3NpdGlvbigpIHtcbiAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICBvcHRpb25zLmN5LmZpdChvcHRpb25zLmVsZXMsIG9wdGlvbnMucGFkZGluZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVhZHkpIHtcbiAgICAgICAgcmVhZHkgPSB0cnVlO1xuICAgICAgICBzZWxmLmN5Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgICAgc2VsZi5jeS50cmlnZ2VyKHsgdHlwZTogJ2xheW91dHJlYWR5JywgbGF5b3V0OiBzZWxmIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgdGlja3NQZXJGcmFtZSA9IHNlbGYub3B0aW9ucy5yZWZyZXNoO1xuICAgIHZhciBpc0RvbmU7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpY2tzUGVyRnJhbWUgJiYgIWlzRG9uZTsgaSsrKSB7XG4gICAgICBpc0RvbmUgPSBzZWxmLnN0b3BwZWQgfHwgc2VsZi5sYXlvdXQudGljaygpO1xuICAgIH1cblxuICAgIC8vIElmIGxheW91dCBpcyBkb25lXG4gICAgaWYgKGlzRG9uZSkge1xuICAgICAgLy8gSWYgdGhlIGxheW91dCBpcyBub3QgYSBzdWJsYXlvdXQgYW5kIGl0IGlzIHN1Y2Nlc3NmdWwgcGVyZm9ybSBwb3N0IGxheW91dC5cbiAgICAgIGlmIChsYXlvdXQuY2hlY2tMYXlvdXRTdWNjZXNzKCkgJiYgIWxheW91dC5pc1N1YkxheW91dCkge1xuICAgICAgICBsYXlvdXQuZG9Qb3N0TGF5b3V0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGxheW91dCBoYXMgYSB0aWxpbmdQb3N0TGF5b3V0IGZ1bmN0aW9uIHByb3BlcnR5IGNhbGwgaXQuXG4gICAgICBpZiAobGF5b3V0LnRpbGluZ1Bvc3RMYXlvdXQpIHtcbiAgICAgICAgbGF5b3V0LnRpbGluZ1Bvc3RMYXlvdXQoKTtcbiAgICAgIH1cblxuICAgICAgbGF5b3V0LmlzTGF5b3V0RmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICBzZWxmLm9wdGlvbnMuZWxlcy5ub2RlcygpLnBvc2l0aW9ucyhnZXRQb3NpdGlvbnMpO1xuXG4gICAgICBhZnRlclJlcG9zaXRpb24oKTtcblxuICAgICAgLy8gdHJpZ2dlciBsYXlvdXRzdG9wIHdoZW4gdGhlIGxheW91dCBzdG9wcyAoZS5nLiBmaW5pc2hlcylcbiAgICAgIHNlbGYuY3kub25lKCdsYXlvdXRzdG9wJywgc2VsZi5vcHRpb25zLnN0b3ApO1xuICAgICAgc2VsZi5jeS50cmlnZ2VyKHsgdHlwZTogJ2xheW91dHN0b3AnLCBsYXlvdXQ6IHNlbGYgfSk7XG5cbiAgICAgIGlmIChmcmFtZUlkKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgICAgfVxuXG4gICAgICByZWFkeSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhbmltYXRpb25EYXRhID0gc2VsZi5sYXlvdXQuZ2V0UG9zaXRpb25zRGF0YSgpOyAvLyBHZXQgcG9zaXRpb25zIG9mIGxheW91dCBub2RlcyBub3RlIHRoYXQgYWxsIG5vZGVzIG1heSBub3QgYmUgbGF5b3V0IG5vZGVzIGJlY2F1c2Ugb2YgdGlsaW5nXG5cbiAgICAvLyBQb3NpdGlvbiBub2RlcywgZm9yIHRoZSBub2RlcyB3aG9zZSBpZCBkb2VzIG5vdCBpbmNsdWRlZCBpbiBkYXRhIChiZWNhdXNlIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSB0aGVpciBwYXJlbnRzIGFuZCBpbmNsdWRlZCBpbiBkdW1teSBjb21wb3VuZHMpXG4gICAgLy8gdXNlIHBvc2l0aW9uIG9mIHRoZWlyIGFuY2VzdG9ycyBvciBkdW1teSBhbmNlc3RvcnNcbiAgICBvcHRpb25zLmVsZXMubm9kZXMoKS5wb3NpdGlvbnMoZnVuY3Rpb24gKGVsZSwgaSkge1xuICAgICAgaWYgKHR5cGVvZiBlbGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgZWxlID0gaTtcbiAgICAgIH1cbiAgICAgIC8vIElmIGVsZSBpcyBhIGNvbXBvdW5kIG5vZGUsIHRoZW4gaXRzIHBvc2l0aW9uIHdpbGwgYmUgZGVmaW5lZCBieSBpdHMgY2hpbGRyZW5cbiAgICAgIGlmICghZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgdmFyIHRoZUlkID0gZWxlLmlkKCk7XG4gICAgICAgIHZhciBwTm9kZSA9IGFuaW1hdGlvbkRhdGFbdGhlSWRdO1xuICAgICAgICB2YXIgdGVtcCA9IGVsZTtcbiAgICAgICAgLy8gSWYgcE5vZGUgaXMgdW5kZWZpbmVkIHNlYXJjaCB1bnRpbCBmaW5kaW5nIHBvc2l0aW9uIGRhdGEgb2YgaXRzIGZpcnN0IGFuY2VzdG9yIChJdCBtYXkgYmUgZHVtbXkgYXMgd2VsbClcbiAgICAgICAgd2hpbGUgKHBOb2RlID09IG51bGwpIHtcbiAgICAgICAgICBwTm9kZSA9IGFuaW1hdGlvbkRhdGFbdGVtcC5kYXRhKCdwYXJlbnQnKV0gfHwgYW5pbWF0aW9uRGF0YVsnRHVtbXlDb21wb3VuZF8nICsgdGVtcC5kYXRhKCdwYXJlbnQnKV07XG4gICAgICAgICAgYW5pbWF0aW9uRGF0YVt0aGVJZF0gPSBwTm9kZTtcbiAgICAgICAgICB0ZW1wID0gdGVtcC5wYXJlbnQoKVswXTtcbiAgICAgICAgICBpZiAodGVtcCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocE5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwTm9kZS54LFxuICAgICAgICAgICAgeTogcE5vZGUueVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IGVsZS5wb3NpdGlvbigneCcpLFxuICAgICAgICAgICAgeTogZWxlLnBvc2l0aW9uKCd5JylcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhZnRlclJlcG9zaXRpb24oKTtcblxuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaXRlcmF0ZUFuaW1hdGVkKTtcbiAgfTtcblxuICAvKlxuICAqIExpc3RlbiAnbGF5b3V0c3RhcnRlZCcgZXZlbnQgYW5kIHN0YXJ0IGFuaW1hdGVkIGl0ZXJhdGlvbiBpZiBhbmltYXRlIG9wdGlvbiBpcyAnZHVyaW5nJ1xuICAqL1xuICBsYXlvdXQuYWRkTGlzdGVuZXIoJ2xheW91dHN0YXJ0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNlbGYub3B0aW9ucy5hbmltYXRlID09PSAnZHVyaW5nJykge1xuICAgICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShpdGVyYXRlQW5pbWF0ZWQpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGF5b3V0LnJ1bkxheW91dCgpOyAvLyBSdW4gY29zZSBsYXlvdXRcblxuICAvKlxuICAgKiBJZiBhbmltYXRlIG9wdGlvbiBpcyBub3QgJ2R1cmluZycgKCdlbmQnIG9yIGZhbHNlKSBwZXJmb3JtIHRoZXNlIGhlcmUgKElmIGl0IGlzICdkdXJpbmcnIHNpbWlsYXIgdGhpbmdzIGFyZSBhbHJlYWR5IHBlcmZvcm1lZClcbiAgICovXG4gIGlmICh0aGlzLm9wdGlvbnMuYW5pbWF0ZSAhPT0gXCJkdXJpbmdcIikge1xuICAgIHNlbGYub3B0aW9ucy5lbGVzLm5vZGVzKCkubm90KFwiOnBhcmVudFwiKS5sYXlvdXRQb3NpdGlvbnMoc2VsZiwgc2VsZi5vcHRpb25zLCBnZXRQb3NpdGlvbnMpOyAvLyBVc2UgbGF5b3V0IHBvc2l0aW9ucyB0byByZXBvc2l0aW9uIHRoZSBub2RlcyBpdCBjb25zaWRlcnMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyXG4gICAgcmVhZHkgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxuLy9HZXQgdGhlIHRvcCBtb3N0IG9uZXMgb2YgYSBsaXN0IG9mIG5vZGVzXG5fQ29TRUxheW91dC5wcm90b3R5cGUuZ2V0VG9wTW9zdE5vZGVzID0gZnVuY3Rpb24gKG5vZGVzKSB7XG4gIHZhciBub2Rlc01hcCA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZXNNYXBbbm9kZXNbaV0uaWQoKV0gPSB0cnVlO1xuICB9XG4gIHZhciByb290cyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWxlLCBpKSB7XG4gICAgaWYgKHR5cGVvZiBlbGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGVsZSA9IGk7XG4gICAgfVxuICAgIHZhciBwYXJlbnQgPSBlbGUucGFyZW50KClbMF07XG4gICAgd2hpbGUgKHBhcmVudCAhPSBudWxsKSB7XG4gICAgICBpZiAobm9kZXNNYXBbcGFyZW50LmlkKCldKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQoKVswXTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiByb290cztcbn07XG5cbl9Db1NFTGF5b3V0LnByb3RvdHlwZS5wcm9jZXNzQ2hpbGRyZW5MaXN0ID0gZnVuY3Rpb24gKHBhcmVudCwgY2hpbGRyZW4sIGxheW91dCkge1xuICB2YXIgc2l6ZSA9IGNoaWxkcmVuLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICB2YXIgdGhlQ2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICB2YXIgY2hpbGRyZW5fb2ZfY2hpbGRyZW4gPSB0aGVDaGlsZC5jaGlsZHJlbigpO1xuICAgIHZhciB0aGVOb2RlO1xuXG4gICAgdmFyIGRpbWVuc2lvbnMgPSB0aGVDaGlsZC5sYXlvdXREaW1lbnNpb25zKHtcbiAgICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogdGhpcy5vcHRpb25zLm5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsc1xuICAgIH0pO1xuXG4gICAgaWYgKHRoZUNoaWxkLm91dGVyV2lkdGgoKSAhPSBudWxsICYmIHRoZUNoaWxkLm91dGVySGVpZ2h0KCkgIT0gbnVsbCkge1xuICAgICAgdGhlTm9kZSA9IHBhcmVudC5hZGQobmV3IENvU0VOb2RlKGxheW91dC5ncmFwaE1hbmFnZXIsIG5ldyBQb2ludEQodGhlQ2hpbGQucG9zaXRpb24oJ3gnKSAtIGRpbWVuc2lvbnMudyAvIDIsIHRoZUNoaWxkLnBvc2l0aW9uKCd5JykgLSBkaW1lbnNpb25zLmggLyAyKSwgbmV3IERpbWVuc2lvbkQocGFyc2VGbG9hdChkaW1lbnNpb25zLncpLCBwYXJzZUZsb2F0KGRpbWVuc2lvbnMuaCkpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoZU5vZGUgPSBwYXJlbnQuYWRkKG5ldyBDb1NFTm9kZSh0aGlzLmdyYXBoTWFuYWdlcikpO1xuICAgIH1cbiAgICAvLyBBdHRhY2ggaWQgdG8gdGhlIGxheW91dCBub2RlXG4gICAgdGhlTm9kZS5pZCA9IHRoZUNoaWxkLmRhdGEoXCJpZFwiKTtcbiAgICAvLyBBdHRhY2ggdGhlIHBhZGRpbmdzIG9mIGN5IG5vZGUgdG8gbGF5b3V0IG5vZGVcbiAgICB0aGVOb2RlLnBhZGRpbmdMZWZ0ID0gcGFyc2VJbnQodGhlQ2hpbGQuY3NzKCdwYWRkaW5nJykpO1xuICAgIHRoZU5vZGUucGFkZGluZ1RvcCA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcbiAgICB0aGVOb2RlLnBhZGRpbmdSaWdodCA9IHBhcnNlSW50KHRoZUNoaWxkLmNzcygncGFkZGluZycpKTtcbiAgICB0aGVOb2RlLnBhZGRpbmdCb3R0b20gPSBwYXJzZUludCh0aGVDaGlsZC5jc3MoJ3BhZGRpbmcnKSk7XG5cbiAgICAvL0F0dGFjaCB0aGUgbGFiZWwgcHJvcGVydGllcyB0byBjb21wb3VuZCBpZiBsYWJlbHMgd2lsbCBiZSBpbmNsdWRlZCBpbiBub2RlIGRpbWVuc2lvbnMgIFxuICAgIGlmICh0aGlzLm9wdGlvbnMubm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzKSB7XG4gICAgICBpZiAodGhlQ2hpbGQuaXNQYXJlbnQoKSkge1xuICAgICAgICB2YXIgbGFiZWxXaWR0aCA9IHRoZUNoaWxkLmJvdW5kaW5nQm94KHsgaW5jbHVkZUxhYmVsczogdHJ1ZSwgaW5jbHVkZU5vZGVzOiBmYWxzZSB9KS53O1xuICAgICAgICB2YXIgbGFiZWxIZWlnaHQgPSB0aGVDaGlsZC5ib3VuZGluZ0JveCh7IGluY2x1ZGVMYWJlbHM6IHRydWUsIGluY2x1ZGVOb2RlczogZmFsc2UgfSkuaDtcbiAgICAgICAgdmFyIGxhYmVsUG9zID0gdGhlQ2hpbGQuY3NzKFwidGV4dC1oYWxpZ25cIik7XG4gICAgICAgIHRoZU5vZGUubGFiZWxXaWR0aCA9IGxhYmVsV2lkdGg7XG4gICAgICAgIHRoZU5vZGUubGFiZWxIZWlnaHQgPSBsYWJlbEhlaWdodDtcbiAgICAgICAgdGhlTm9kZS5sYWJlbFBvcyA9IGxhYmVsUG9zO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1hcCB0aGUgbGF5b3V0IG5vZGVcbiAgICB0aGlzLmlkVG9MTm9kZVt0aGVDaGlsZC5kYXRhKFwiaWRcIildID0gdGhlTm9kZTtcblxuICAgIGlmIChpc05hTih0aGVOb2RlLnJlY3QueCkpIHtcbiAgICAgIHRoZU5vZGUucmVjdC54ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4odGhlTm9kZS5yZWN0LnkpKSB7XG4gICAgICB0aGVOb2RlLnJlY3QueSA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkcmVuX29mX2NoaWxkcmVuICE9IG51bGwgJiYgY2hpbGRyZW5fb2ZfY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHRoZU5ld0dyYXBoO1xuICAgICAgdGhlTmV3R3JhcGggPSBsYXlvdXQuZ2V0R3JhcGhNYW5hZ2VyKCkuYWRkKGxheW91dC5uZXdHcmFwaCgpLCB0aGVOb2RlKTtcbiAgICAgIHRoaXMucHJvY2Vzc0NoaWxkcmVuTGlzdCh0aGVOZXdHcmFwaCwgY2hpbGRyZW5fb2ZfY2hpbGRyZW4sIGxheW91dCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBicmllZiA6IGNhbGxlZCBvbiBjb250aW51b3VzIGxheW91dHMgdG8gc3RvcCB0aGVtIGJlZm9yZSB0aGV5IGZpbmlzaFxuICovXG5fQ29TRUxheW91dC5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbn07XG5cbnZhciByZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGN5dG9zY2FwZSkge1xuICAvLyAgdmFyIExheW91dCA9IGdldExheW91dCggY3l0b3NjYXBlICk7XG5cbiAgY3l0b3NjYXBlKCdsYXlvdXQnLCAnY29zZS1iaWxrZW50JywgX0NvU0VMYXlvdXQpO1xufTtcblxuLy8gYXV0byByZWcgZm9yIGdsb2JhbHNcbmlmICh0eXBlb2YgY3l0b3NjYXBlICE9PSAndW5kZWZpbmVkJykge1xuICByZWdpc3RlcihjeXRvc2NhcGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlZ2lzdGVyO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/cytoscape/dist/cytoscape.umd.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/cytoscape/dist/cytoscape.umd.js ***! + \*************************************************************/ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +eval("/**\n * Copyright (c) 2016-2023, The Cytoscape Consortium.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the “Software”), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to do\n * so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n(function (global, factory) {\n true ? module.exports = factory() :\n 0;\n})(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var _window = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef\n\n var navigator = _window ? _window.navigator : null;\n _window ? _window.document : null;\n\n var typeofstr = _typeof('');\n\n var typeofobj = _typeof({});\n\n var typeoffn = _typeof(function () {});\n\n var typeofhtmlele = typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement);\n\n var instanceStr = function instanceStr(obj) {\n return obj && obj.instanceString && fn$6(obj.instanceString) ? obj.instanceString() : null;\n };\n\n var string = function string(obj) {\n return obj != null && _typeof(obj) == typeofstr;\n };\n var fn$6 = function fn(obj) {\n return obj != null && _typeof(obj) === typeoffn;\n };\n var array = function array(obj) {\n return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array);\n };\n var plainObject = function plainObject(obj) {\n return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object;\n };\n var object = function object(obj) {\n return obj != null && _typeof(obj) === typeofobj;\n };\n var number$1 = function number(obj) {\n return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj);\n };\n var integer = function integer(obj) {\n return number$1(obj) && Math.floor(obj) === obj;\n };\n var htmlElement = function htmlElement(obj) {\n if ('undefined' === typeofhtmlele) {\n return undefined;\n } else {\n return null != obj && obj instanceof HTMLElement;\n }\n };\n var elementOrCollection = function elementOrCollection(obj) {\n return element(obj) || collection(obj);\n };\n var element = function element(obj) {\n return instanceStr(obj) === 'collection' && obj._private.single;\n };\n var collection = function collection(obj) {\n return instanceStr(obj) === 'collection' && !obj._private.single;\n };\n var core = function core(obj) {\n return instanceStr(obj) === 'core';\n };\n var stylesheet = function stylesheet(obj) {\n return instanceStr(obj) === 'stylesheet';\n };\n var event = function event(obj) {\n return instanceStr(obj) === 'event';\n };\n var emptyString = function emptyString(obj) {\n if (obj === undefined || obj === null) {\n // null is empty\n return true;\n } else if (obj === '' || obj.match(/^\\s+$/)) {\n return true; // empty string is empty\n }\n\n return false; // otherwise, we don't know what we've got\n };\n var domElement = function domElement(obj) {\n if (typeof HTMLElement === 'undefined') {\n return false; // we're not in a browser so it doesn't matter\n } else {\n return obj instanceof HTMLElement;\n }\n };\n var boundingBox = function boundingBox(obj) {\n return plainObject(obj) && number$1(obj.x1) && number$1(obj.x2) && number$1(obj.y1) && number$1(obj.y2);\n };\n var promise = function promise(obj) {\n return object(obj) && fn$6(obj.then);\n };\n var ms = function ms() {\n return navigator && navigator.userAgent.match(/msie|trident|edge/i);\n }; // probably a better way to detect this...\n\n var memoize$1 = function memoize(fn, keyFn) {\n if (!keyFn) {\n keyFn = function keyFn() {\n if (arguments.length === 1) {\n return arguments[0];\n } else if (arguments.length === 0) {\n return 'undefined';\n }\n\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n return args.join('$');\n };\n }\n\n var memoizedFn = function memoizedFn() {\n var self = this;\n var args = arguments;\n var ret;\n var k = keyFn.apply(self, args);\n var cache = memoizedFn.cache;\n\n if (!(ret = cache[k])) {\n ret = cache[k] = fn.apply(self, args);\n }\n\n return ret;\n };\n\n memoizedFn.cache = {};\n return memoizedFn;\n };\n\n var camel2dash = memoize$1(function (str) {\n return str.replace(/([A-Z])/g, function (v) {\n return '-' + v.toLowerCase();\n });\n });\n var dash2camel = memoize$1(function (str) {\n return str.replace(/(-\\w)/g, function (v) {\n return v[1].toUpperCase();\n });\n });\n var prependCamel = memoize$1(function (prefix, str) {\n return prefix + str[0].toUpperCase() + str.substring(1);\n }, function (prefix, str) {\n return prefix + '$' + str;\n });\n var capitalize = function capitalize(str) {\n if (emptyString(str)) {\n return str;\n }\n\n return str.charAt(0).toUpperCase() + str.substring(1);\n };\n\n var number = '(?:[-+]?(?:(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[Ee][+-]?\\\\d+)?))';\n var rgba = 'rgb[a]?\\\\((' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)\\\\s*,\\\\s*(' + number + '[%]?)(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\n var rgbaNoBackRefs = 'rgb[a]?\\\\((?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)\\\\s*,\\\\s*(?:' + number + '[%]?)(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\n var hsla = 'hsl[a]?\\\\((' + number + ')\\\\s*,\\\\s*(' + number + '[%])\\\\s*,\\\\s*(' + number + '[%])(?:\\\\s*,\\\\s*(' + number + '))?\\\\)';\n var hslaNoBackRefs = 'hsl[a]?\\\\((?:' + number + ')\\\\s*,\\\\s*(?:' + number + '[%])\\\\s*,\\\\s*(?:' + number + '[%])(?:\\\\s*,\\\\s*(?:' + number + '))?\\\\)';\n var hex3 = '\\\\#[0-9a-fA-F]{3}';\n var hex6 = '\\\\#[0-9a-fA-F]{6}';\n\n var ascending = function ascending(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n };\n var descending = function descending(a, b) {\n return -1 * ascending(a, b);\n };\n\n var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n var args = arguments;\n\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n\n if (obj == null) {\n continue;\n }\n\n var keys = Object.keys(obj);\n\n for (var j = 0; j < keys.length; j++) {\n var k = keys[j];\n tgt[k] = obj[k];\n }\n }\n\n return tgt;\n };\n\n var hex2tuple = function hex2tuple(hex) {\n if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') {\n return;\n }\n\n var shortHex = hex.length === 4;\n var r, g, b;\n var base = 16;\n\n if (shortHex) {\n r = parseInt(hex[1] + hex[1], base);\n g = parseInt(hex[2] + hex[2], base);\n b = parseInt(hex[3] + hex[3], base);\n } else {\n r = parseInt(hex[1] + hex[2], base);\n g = parseInt(hex[3] + hex[4], base);\n b = parseInt(hex[5] + hex[6], base);\n }\n\n return [r, g, b];\n }; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0)\n\n var hsl2tuple = function hsl2tuple(hsl) {\n var ret;\n var h, s, l, a, r, g, b;\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n var m = new RegExp('^' + hsla + '$').exec(hsl);\n\n if (m) {\n // get hue\n h = parseInt(m[1]);\n\n if (h < 0) {\n h = (360 - -1 * h % 360) % 360;\n } else if (h > 360) {\n h = h % 360;\n }\n\n h /= 360; // normalise on [0, 1]\n\n s = parseFloat(m[2]);\n\n if (s < 0 || s > 100) {\n return;\n } // saturation is [0, 100]\n\n\n s = s / 100; // normalise on [0, 1]\n\n l = parseFloat(m[3]);\n\n if (l < 0 || l > 100) {\n return;\n } // lightness is [0, 100]\n\n\n l = l / 100; // normalise on [0, 1]\n\n a = m[4];\n\n if (a !== undefined) {\n a = parseFloat(a);\n\n if (a < 0 || a > 1) {\n return;\n } // alpha is [0, 1]\n\n } // now, convert to rgb\n // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n\n\n if (s === 0) {\n r = g = b = Math.round(l * 255); // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = Math.round(255 * hue2rgb(p, q, h + 1 / 3));\n g = Math.round(255 * hue2rgb(p, q, h));\n b = Math.round(255 * hue2rgb(p, q, h - 1 / 3));\n }\n\n ret = [r, g, b, a];\n }\n\n return ret;\n }; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0)\n\n var rgb2tuple = function rgb2tuple(rgb) {\n var ret;\n var m = new RegExp('^' + rgba + '$').exec(rgb);\n\n if (m) {\n ret = [];\n var isPct = [];\n\n for (var i = 1; i <= 3; i++) {\n var channel = m[i];\n\n if (channel[channel.length - 1] === '%') {\n isPct[i] = true;\n }\n\n channel = parseFloat(channel);\n\n if (isPct[i]) {\n channel = channel / 100 * 255; // normalise to [0, 255]\n }\n\n if (channel < 0 || channel > 255) {\n return;\n } // invalid channel value\n\n\n ret.push(Math.floor(channel));\n }\n\n var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3];\n var allArePct = isPct[1] && isPct[2] && isPct[3];\n\n if (atLeastOneIsPct && !allArePct) {\n return;\n } // must all be percent values if one is\n\n\n var alpha = m[4];\n\n if (alpha !== undefined) {\n alpha = parseFloat(alpha);\n\n if (alpha < 0 || alpha > 1) {\n return;\n } // invalid alpha value\n\n\n ret.push(alpha);\n }\n }\n\n return ret;\n };\n var colorname2tuple = function colorname2tuple(color) {\n return colors[color.toLowerCase()];\n };\n var color2tuple = function color2tuple(color) {\n return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color);\n };\n var colors = {\n // special colour names\n transparent: [0, 0, 0, 0],\n // NB alpha === 0\n // regular colours\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n };\n\n var setMap = function setMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n\n if (plainObject(key)) {\n throw Error('Tried to set map with object key');\n }\n\n if (i < keys.length - 1) {\n // extend the map if necessary\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n } else {\n // set the value\n obj[key] = options.value;\n }\n }\n }; // gets the value in a map even if it's not built in places\n\n var getMap = function getMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n\n if (plainObject(key)) {\n throw Error('Tried to get map with object key');\n }\n\n obj = obj[key];\n\n if (obj == null) {\n return obj;\n }\n }\n\n return obj;\n }; // deletes the entry in the map\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n var isObject_1 = isObject;\n\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof self !== 'undefined' ? self : {};\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n var _freeGlobal = freeGlobal;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = _freeGlobal || freeSelf || Function('return this')();\n\n var _root = root;\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = function() {\n return _root.Date.now();\n };\n\n var now_1 = now;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n var _trimmedEndIndex = trimmedEndIndex;\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n var _baseTrim = baseTrim;\n\n /** Built-in value references. */\n var Symbol$1 = _root.Symbol;\n\n var _Symbol = Symbol$1;\n\n /** Used for built-in method references. */\n var objectProto$5 = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty$4 = objectProto$5.hasOwnProperty;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString$1 = objectProto$5.toString;\n\n /** Built-in value references. */\n var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty$4.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n }\n\n var _getRawTag = getRawTag;\n\n /** Used for built-in method references. */\n var objectProto$4 = Object.prototype;\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto$4.toString;\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n var _objectToString = objectToString;\n\n /** `Object#toString` result references. */\n var nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n /** Built-in value references. */\n var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? _getRawTag(value)\n : _objectToString(value);\n }\n\n var _baseGetTag = baseGetTag;\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n var isObjectLike_1 = isObjectLike;\n\n /** `Object#toString` result references. */\n var symbolTag = '[object Symbol]';\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike_1(value) && _baseGetTag(value) == symbolTag);\n }\n\n var isSymbol_1 = isSymbol;\n\n /** Used as references for various `Number` constants. */\n var NAN = 0 / 0;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseInt = parseInt;\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol_1(value)) {\n return NAN;\n }\n if (isObject_1(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject_1(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = _baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n var toNumber_1 = toNumber;\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeMax = Math.max,\n nativeMin = Math.min;\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n wait = toNumber_1(wait) || 0;\n if (isObject_1(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber_1(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now_1();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now_1());\n }\n\n function debounced() {\n var time = now_1(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n var debounce_1 = debounce;\n\n var performance = _window ? _window.performance : null;\n var pnow = performance && performance.now ? function () {\n return performance.now();\n } : function () {\n return Date.now();\n };\n\n var raf = function () {\n if (_window) {\n if (_window.requestAnimationFrame) {\n return function (fn) {\n _window.requestAnimationFrame(fn);\n };\n } else if (_window.mozRequestAnimationFrame) {\n return function (fn) {\n _window.mozRequestAnimationFrame(fn);\n };\n } else if (_window.webkitRequestAnimationFrame) {\n return function (fn) {\n _window.webkitRequestAnimationFrame(fn);\n };\n } else if (_window.msRequestAnimationFrame) {\n return function (fn) {\n _window.msRequestAnimationFrame(fn);\n };\n }\n }\n\n return function (fn) {\n if (fn) {\n setTimeout(function () {\n fn(pnow());\n }, 1000 / 60);\n }\n };\n }();\n\n var requestAnimationFrame = function requestAnimationFrame(fn) {\n return raf(fn);\n };\n var performanceNow = pnow;\n\n var DEFAULT_HASH_SEED = 9261;\n var K = 65599; // 37 also works pretty well\n\n var DEFAULT_HASH_SEED_ALT = 5381;\n var hashIterableInts = function hashIterableInts(iterator) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n // sdbm/string-hash\n var hash = seed;\n var entry;\n\n for (;;) {\n entry = iterator.next();\n\n if (entry.done) {\n break;\n }\n\n hash = hash * K + entry.value | 0;\n }\n\n return hash;\n };\n var hashInt = function hashInt(num) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED;\n // sdbm/string-hash\n return seed * K + num | 0;\n };\n var hashIntAlt = function hashIntAlt(num) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT;\n // djb2/string-hash\n return (seed << 5) + seed + num | 0;\n };\n var combineHashes = function combineHashes(hash1, hash2) {\n return hash1 * 0x200000 + hash2;\n };\n var combineHashesArray = function combineHashesArray(hashes) {\n return hashes[0] * 0x200000 + hashes[1];\n };\n var hashArrays = function hashArrays(hashes1, hashes2) {\n return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])];\n };\n var hashIntsArray = function hashIntsArray(ints, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = ints.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = ints[i++];\n } else {\n entry.done = true;\n }\n\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n };\n var hashString = function hashString(str, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = str.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = str.charCodeAt(i++);\n } else {\n entry.done = true;\n }\n\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n };\n var hashStrings = function hashStrings() {\n return hashStringsArray(arguments);\n };\n var hashStringsArray = function hashStringsArray(strs) {\n var hash;\n\n for (var i = 0; i < strs.length; i++) {\n var str = strs[i];\n\n if (i === 0) {\n hash = hashString(str);\n } else {\n hash = hashString(str, hash);\n }\n }\n\n return hash;\n };\n\n /*global console */\n var warningsEnabled = true;\n var warnSupported = console.warn != null; // eslint-disable-line no-console\n\n var traceSupported = console.trace != null; // eslint-disable-line no-console\n\n var MAX_INT$1 = Number.MAX_SAFE_INTEGER || 9007199254740991;\n var trueify = function trueify() {\n return true;\n };\n var falsify = function falsify() {\n return false;\n };\n var zeroify = function zeroify() {\n return 0;\n };\n var noop$1 = function noop() {};\n var error = function error(msg) {\n throw new Error(msg);\n };\n var warnings = function warnings(enabled) {\n if (enabled !== undefined) {\n warningsEnabled = !!enabled;\n } else {\n return warningsEnabled;\n }\n };\n var warn = function warn(msg) {\n /* eslint-disable no-console */\n if (!warnings()) {\n return;\n }\n\n if (warnSupported) {\n console.warn(msg);\n } else {\n console.log(msg);\n\n if (traceSupported) {\n console.trace();\n }\n }\n };\n /* eslint-enable */\n\n var clone = function clone(obj) {\n return extend({}, obj);\n }; // gets a shallow copy of the argument\n\n var copy = function copy(obj) {\n if (obj == null) {\n return obj;\n }\n\n if (array(obj)) {\n return obj.slice();\n } else if (plainObject(obj)) {\n return clone(obj);\n } else {\n return obj;\n }\n };\n var copyArray$1 = function copyArray(arr) {\n return arr.slice();\n };\n var uuid = function uuid(a, b\n /* placeholders */\n ) {\n for ( // loop :)\n b = a = ''; // b - result , a - numeric letiable\n a++ < 36; //\n b += a * 51 & 52 // if \"a\" is not 9 or 14 or 19 or 24\n ? // return a random number or 4\n (a ^ 15 // if \"a\" is not 15\n ? // generate a random number from 0 to 15\n 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless \"a\" is 20, in which case a random number from 8 to 11\n : 4 // otherwise 4\n ).toString(16) : '-' // in other cases (if \"a\" is 9,14,19,24) insert \"-\"\n ) {\n }\n\n return b;\n };\n var _staticEmptyObject = {};\n var staticEmptyObject = function staticEmptyObject() {\n return _staticEmptyObject;\n };\n var defaults$g = function defaults(_defaults) {\n var keys = Object.keys(_defaults);\n return function (opts) {\n var filledOpts = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var optVal = opts == null ? undefined : opts[key];\n filledOpts[key] = optVal === undefined ? _defaults[key] : optVal;\n }\n\n return filledOpts;\n };\n };\n var removeFromArray = function removeFromArray(arr, ele, oneCopy) {\n for (var i = arr.length - 1; i >= 0; i--) {\n if (arr[i] === ele) {\n arr.splice(i, 1);\n\n if (oneCopy) {\n break;\n }\n }\n }\n };\n var clearArray = function clearArray(arr) {\n arr.splice(0, arr.length);\n };\n var push = function push(arr, otherArr) {\n for (var i = 0; i < otherArr.length; i++) {\n var el = otherArr[i];\n arr.push(el);\n }\n };\n var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n return obj[propName];\n };\n var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n obj[propName] = value;\n };\n\n /* global Map */\n var ObjectMap = /*#__PURE__*/function () {\n function ObjectMap() {\n _classCallCheck(this, ObjectMap);\n\n this._obj = {};\n }\n\n _createClass(ObjectMap, [{\n key: \"set\",\n value: function set(key, val) {\n this._obj[key] = val;\n return this;\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this._obj[key] = undefined;\n return this;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = {};\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return this._obj[key] !== undefined;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this._obj[key];\n }\n }]);\n\n return ObjectMap;\n }();\n\n var Map$2 = typeof Map !== 'undefined' ? Map : ObjectMap;\n\n /* global Set */\n var undef = \"undefined\" ;\n\n var ObjectSet = /*#__PURE__*/function () {\n function ObjectSet(arrayOrObjectSet) {\n _classCallCheck(this, ObjectSet);\n\n this._obj = Object.create(null);\n this.size = 0;\n\n if (arrayOrObjectSet != null) {\n var arr;\n\n if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) {\n arr = arrayOrObjectSet.toArray();\n } else {\n arr = arrayOrObjectSet;\n }\n\n for (var i = 0; i < arr.length; i++) {\n this.add(arr[i]);\n }\n }\n }\n\n _createClass(ObjectSet, [{\n key: \"instanceString\",\n value: function instanceString() {\n return 'set';\n }\n }, {\n key: \"add\",\n value: function add(val) {\n var o = this._obj;\n\n if (o[val] !== 1) {\n o[val] = 1;\n this.size++;\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(val) {\n var o = this._obj;\n\n if (o[val] === 1) {\n o[val] = 0;\n this.size--;\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = Object.create(null);\n }\n }, {\n key: \"has\",\n value: function has(val) {\n return this._obj[val] === 1;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var _this = this;\n\n return Object.keys(this._obj).filter(function (key) {\n return _this.has(key);\n });\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback, thisArg) {\n return this.toArray().forEach(callback, thisArg);\n }\n }]);\n\n return ObjectSet;\n }();\n\n var Set$1 = (typeof Set === \"undefined\" ? \"undefined\" : _typeof(Set)) !== undef ? Set : ObjectSet;\n\n var Element = function Element(cy, params) {\n var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (cy === undefined || params === undefined || !core(cy)) {\n error('An element must have a core reference and parameters set');\n return;\n }\n\n var group = params.group; // try to automatically infer the group if unspecified\n\n if (group == null) {\n if (params.data && params.data.source != null && params.data.target != null) {\n group = 'edges';\n } else {\n group = 'nodes';\n }\n } // validate group\n\n\n if (group !== 'nodes' && group !== 'edges') {\n error('An element must be of type `nodes` or `edges`; you specified `' + group + '`');\n return;\n } // make the element array-like, just like a collection\n\n\n this.length = 1;\n this[0] = this; // NOTE: when something is added here, add also to ele.json()\n\n var _p = this._private = {\n cy: cy,\n single: true,\n // indicates this is an element\n data: params.data || {},\n // data object\n position: params.position || {\n x: 0,\n y: 0\n },\n // (x, y) position pair\n autoWidth: undefined,\n // width and height of nodes calculated by the renderer when set to special 'auto' value\n autoHeight: undefined,\n autoPadding: undefined,\n compoundBoundsClean: false,\n // whether the compound dimensions need to be recalculated the next time dimensions are read\n listeners: [],\n // array of bound listeners\n group: group,\n // string; 'nodes' or 'edges'\n style: {},\n // properties as set by the style\n rstyle: {},\n // properties for style sent from the renderer to the core\n styleCxts: [],\n // applied style contexts from the styler\n styleKeys: {},\n // per-group keys of style property values\n removed: true,\n // whether it's inside the vis; true if removed (set true here since we call restore)\n selected: params.selected ? true : false,\n // whether it's selected\n selectable: params.selectable === undefined ? true : params.selectable ? true : false,\n // whether it's selectable\n locked: params.locked ? true : false,\n // whether the element is locked (cannot be moved)\n grabbed: false,\n // whether the element is grabbed by the mouse; renderer sets this privately\n grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false,\n // whether the element can be grabbed\n pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false,\n // whether the element has passthrough panning enabled\n active: false,\n // whether the element is active from user interaction\n classes: new Set$1(),\n // map ( className => true )\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n rscratch: {},\n // object in which the renderer can store information\n scratch: params.scratch || {},\n // scratch objects\n edges: [],\n // array of connected edges\n children: [],\n // array of children\n parent: params.parent && params.parent.isNode() ? params.parent : null,\n // parent ref\n traversalCache: {},\n // cache of output of traversal functions\n backgrounding: false,\n // whether background images are loading\n bbCache: null,\n // cache of the current bounding box\n bbCacheShift: {\n x: 0,\n y: 0\n },\n // shift applied to cached bb to be applied on next get\n bodyBounds: null,\n // bounds cache of element body, w/o overlay\n overlayBounds: null,\n // bounds cache of element body, including overlay\n labelBounds: {\n // bounds cache of labels\n all: null,\n source: null,\n target: null,\n main: null\n },\n arrowBounds: {\n // bounds cache of edge arrows\n source: null,\n target: null,\n 'mid-source': null,\n 'mid-target': null\n }\n };\n\n if (_p.position.x == null) {\n _p.position.x = 0;\n }\n\n if (_p.position.y == null) {\n _p.position.y = 0;\n } // renderedPosition overrides if specified\n\n\n if (params.renderedPosition) {\n var rpos = params.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n _p.position = {\n x: (rpos.x - pan.x) / zoom,\n y: (rpos.y - pan.y) / zoom\n };\n }\n\n var classes = [];\n\n if (array(params.classes)) {\n classes = params.classes;\n } else if (string(params.classes)) {\n classes = params.classes.split(/\\s+/);\n }\n\n for (var i = 0, l = classes.length; i < l; i++) {\n var cls = classes[i];\n\n if (!cls || cls === '') {\n continue;\n }\n\n _p.classes.add(cls);\n }\n\n this.createEmitter();\n var bypass = params.style || params.css;\n\n if (bypass) {\n warn('Setting a `style` bypass at element creation should be done only when absolutely necessary. Try to use the stylesheet instead.');\n this.style(bypass);\n }\n\n if (restore === undefined || restore) {\n this.restore();\n }\n };\n\n var defineSearch = function defineSearch(params) {\n params = {\n bfs: params.bfs || !params.dfs,\n dfs: params.dfs || !params.bfs\n }; // from pseudocode on wikipedia\n\n return function searchFn(roots, fn, directed) {\n var options;\n\n if (plainObject(roots) && !elementOrCollection(roots)) {\n options = roots;\n roots = options.roots || options.root;\n fn = options.visit;\n directed = options.directed;\n }\n\n directed = arguments.length === 2 && !fn$6(fn) ? fn : directed;\n fn = fn$6(fn) ? fn : function () {};\n var cy = this._private.cy;\n var v = roots = string(roots) ? this.filter(roots) : roots;\n var Q = [];\n var connectedNodes = [];\n var connectedBy = {};\n var id2depth = {};\n var V = {};\n var j = 0;\n var found;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges; // enqueue v\n\n\n for (var i = 0; i < v.length; i++) {\n var vi = v[i];\n var viId = vi.id();\n\n if (vi.isNode()) {\n Q.unshift(vi);\n\n if (params.bfs) {\n V[viId] = true;\n connectedNodes.push(vi);\n }\n\n id2depth[viId] = 0;\n }\n }\n\n var _loop = function _loop() {\n var v = params.bfs ? Q.shift() : Q.pop();\n var vId = v.id();\n\n if (params.dfs) {\n if (V[vId]) {\n return \"continue\";\n }\n\n V[vId] = true;\n connectedNodes.push(v);\n }\n\n var depth = id2depth[vId];\n var prevEdge = connectedBy[vId];\n var src = prevEdge != null ? prevEdge.source() : null;\n var tgt = prevEdge != null ? prevEdge.target() : null;\n var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0];\n var ret = void 0;\n ret = fn(v, prevEdge, prevNode, j++, depth);\n\n if (ret === true) {\n found = v;\n return \"break\";\n }\n\n if (ret === false) {\n return \"break\";\n }\n\n var vwEdges = v.connectedEdges().filter(function (e) {\n return (!directed || e.source().same(v)) && edges.has(e);\n });\n\n for (var _i2 = 0; _i2 < vwEdges.length; _i2++) {\n var e = vwEdges[_i2];\n var w = e.connectedNodes().filter(function (n) {\n return !n.same(v) && nodes.has(n);\n });\n var wId = w.id();\n\n if (w.length !== 0 && !V[wId]) {\n w = w[0];\n Q.push(w);\n\n if (params.bfs) {\n V[wId] = true;\n connectedNodes.push(w);\n }\n\n connectedBy[wId] = e;\n id2depth[wId] = id2depth[vId] + 1;\n }\n }\n };\n\n while (Q.length !== 0) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n if (_ret === \"break\") break;\n }\n\n var connectedEles = cy.collection();\n\n for (var _i = 0; _i < connectedNodes.length; _i++) {\n var node = connectedNodes[_i];\n var edge = connectedBy[node.id()];\n\n if (edge != null) {\n connectedEles.push(edge);\n }\n\n connectedEles.push(node);\n }\n\n return {\n path: cy.collection(connectedEles),\n found: cy.collection(found)\n };\n };\n }; // search, spanning trees, etc\n\n\n var elesfn$v = {\n breadthFirstSearch: defineSearch({\n bfs: true\n }),\n depthFirstSearch: defineSearch({\n dfs: true\n })\n }; // nice, short mathematical alias\n\n elesfn$v.bfs = elesfn$v.breadthFirstSearch;\n elesfn$v.dfs = elesfn$v.depthFirstSearch;\n\n var heap$1 = createCommonjsModule(function (module, exports) {\n // Generated by CoffeeScript 1.8.0\n (function() {\n var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup;\n\n floor = Math.floor, min = Math.min;\n\n\n /*\n Default comparison function to be used\n */\n\n defaultCmp = function(x, y) {\n if (x < y) {\n return -1;\n }\n if (x > y) {\n return 1;\n }\n return 0;\n };\n\n\n /*\n Insert item x in list a, and keep it sorted assuming a is sorted.\n \n If x is already in a, insert it to the right of the rightmost x.\n \n Optional args lo (default 0) and hi (default a.length) bound the slice\n of a to be searched.\n */\n\n insort = function(a, x, lo, hi, cmp) {\n var mid;\n if (lo == null) {\n lo = 0;\n }\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (lo < 0) {\n throw new Error('lo must be non-negative');\n }\n if (hi == null) {\n hi = a.length;\n }\n while (lo < hi) {\n mid = floor((lo + hi) / 2);\n if (cmp(x, a[mid]) < 0) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return ([].splice.apply(a, [lo, lo - lo].concat(x)), x);\n };\n\n\n /*\n Push item onto heap, maintaining the heap invariant.\n */\n\n heappush = function(array, item, cmp) {\n if (cmp == null) {\n cmp = defaultCmp;\n }\n array.push(item);\n return _siftdown(array, 0, array.length - 1, cmp);\n };\n\n\n /*\n Pop the smallest item off the heap, maintaining the heap invariant.\n */\n\n heappop = function(array, cmp) {\n var lastelt, returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n lastelt = array.pop();\n if (array.length) {\n returnitem = array[0];\n array[0] = lastelt;\n _siftup(array, 0, cmp);\n } else {\n returnitem = lastelt;\n }\n return returnitem;\n };\n\n\n /*\n Pop and return the current smallest value, and add the new item.\n \n This is more efficient than heappop() followed by heappush(), and can be\n more appropriate when using a fixed size heap. Note that the value\n returned may be larger than item! That constrains reasonable use of\n this routine unless written as part of a conditional replacement:\n if item > array[0]\n item = heapreplace(array, item)\n */\n\n heapreplace = function(array, item, cmp) {\n var returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n returnitem = array[0];\n array[0] = item;\n _siftup(array, 0, cmp);\n return returnitem;\n };\n\n\n /*\n Fast version of a heappush followed by a heappop.\n */\n\n heappushpop = function(array, item, cmp) {\n var _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (array.length && cmp(array[0], item) < 0) {\n _ref = [array[0], item], item = _ref[0], array[0] = _ref[1];\n _siftup(array, 0, cmp);\n }\n return item;\n };\n\n\n /*\n Transform list into a heap, in-place, in O(array.length) time.\n */\n\n heapify = function(array, cmp) {\n var i, _i, _len, _ref1, _results, _results1;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n _ref1 = (function() {\n _results1 = [];\n for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); }\n return _results1;\n }).apply(this).reverse();\n _results = [];\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n i = _ref1[_i];\n _results.push(_siftup(array, i, cmp));\n }\n return _results;\n };\n\n\n /*\n Update the position of the given item in the heap.\n This function should be called every time the item is being modified.\n */\n\n updateItem = function(array, item, cmp) {\n var pos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n pos = array.indexOf(item);\n if (pos === -1) {\n return;\n }\n _siftdown(array, 0, pos, cmp);\n return _siftup(array, pos, cmp);\n };\n\n\n /*\n Find the n largest elements in a dataset.\n */\n\n nlargest = function(array, n, cmp) {\n var elem, result, _i, _len, _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n result = array.slice(0, n);\n if (!result.length) {\n return result;\n }\n heapify(result, cmp);\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n heappushpop(result, elem, cmp);\n }\n return result.sort(cmp).reverse();\n };\n\n\n /*\n Find the n smallest elements in a dataset.\n */\n\n nsmallest = function(array, n, cmp) {\n var elem, los, result, _i, _j, _len, _ref, _ref1, _results;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (n * 10 <= array.length) {\n result = array.slice(0, n).sort(cmp);\n if (!result.length) {\n return result;\n }\n los = result[result.length - 1];\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n if (cmp(elem, los) < 0) {\n insort(result, elem, 0, null, cmp);\n result.pop();\n los = result[result.length - 1];\n }\n }\n return result;\n }\n heapify(array, cmp);\n _results = [];\n for (_j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; 0 <= _ref1 ? ++_j : --_j) {\n _results.push(heappop(array, cmp));\n }\n return _results;\n };\n\n _siftdown = function(array, startpos, pos, cmp) {\n var newitem, parent, parentpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n newitem = array[pos];\n while (pos > startpos) {\n parentpos = (pos - 1) >> 1;\n parent = array[parentpos];\n if (cmp(newitem, parent) < 0) {\n array[pos] = parent;\n pos = parentpos;\n continue;\n }\n break;\n }\n return array[pos] = newitem;\n };\n\n _siftup = function(array, pos, cmp) {\n var childpos, endpos, newitem, rightpos, startpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n endpos = array.length;\n startpos = pos;\n newitem = array[pos];\n childpos = 2 * pos + 1;\n while (childpos < endpos) {\n rightpos = childpos + 1;\n if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) {\n childpos = rightpos;\n }\n array[pos] = array[childpos];\n pos = childpos;\n childpos = 2 * pos + 1;\n }\n array[pos] = newitem;\n return _siftdown(array, startpos, pos, cmp);\n };\n\n Heap = (function() {\n Heap.push = heappush;\n\n Heap.pop = heappop;\n\n Heap.replace = heapreplace;\n\n Heap.pushpop = heappushpop;\n\n Heap.heapify = heapify;\n\n Heap.updateItem = updateItem;\n\n Heap.nlargest = nlargest;\n\n Heap.nsmallest = nsmallest;\n\n function Heap(cmp) {\n this.cmp = cmp != null ? cmp : defaultCmp;\n this.nodes = [];\n }\n\n Heap.prototype.push = function(x) {\n return heappush(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pop = function() {\n return heappop(this.nodes, this.cmp);\n };\n\n Heap.prototype.peek = function() {\n return this.nodes[0];\n };\n\n Heap.prototype.contains = function(x) {\n return this.nodes.indexOf(x) !== -1;\n };\n\n Heap.prototype.replace = function(x) {\n return heapreplace(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pushpop = function(x) {\n return heappushpop(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.heapify = function() {\n return heapify(this.nodes, this.cmp);\n };\n\n Heap.prototype.updateItem = function(x) {\n return updateItem(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.clear = function() {\n return this.nodes = [];\n };\n\n Heap.prototype.empty = function() {\n return this.nodes.length === 0;\n };\n\n Heap.prototype.size = function() {\n return this.nodes.length;\n };\n\n Heap.prototype.clone = function() {\n var heap;\n heap = new Heap();\n heap.nodes = this.nodes.slice(0);\n return heap;\n };\n\n Heap.prototype.toArray = function() {\n return this.nodes.slice(0);\n };\n\n Heap.prototype.insert = Heap.prototype.push;\n\n Heap.prototype.top = Heap.prototype.peek;\n\n Heap.prototype.front = Heap.prototype.peek;\n\n Heap.prototype.has = Heap.prototype.contains;\n\n Heap.prototype.copy = Heap.prototype.clone;\n\n return Heap;\n\n })();\n\n (function(root, factory) {\n {\n return module.exports = factory();\n }\n })(this, function() {\n return Heap;\n });\n\n }).call(commonjsGlobal);\n });\n\n var heap = heap$1;\n\n var dijkstraDefaults = defaults$g({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n });\n var elesfn$u = {\n dijkstra: function dijkstra(options) {\n if (!plainObject(options)) {\n var args = arguments;\n options = {\n root: args[0],\n weight: args[1],\n directed: args[2]\n };\n }\n\n var _dijkstraDefaults = dijkstraDefaults(options),\n root = _dijkstraDefaults.root,\n weight = _dijkstraDefaults.weight,\n directed = _dijkstraDefaults.directed;\n\n var eles = this;\n var weightFn = weight;\n var source = string(root) ? this.filter(root)[0] : root[0];\n var dist = {};\n var prev = {};\n var knownDist = {};\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n edges.unmergeBy(function (ele) {\n return ele.isLoop();\n });\n\n var getDist = function getDist(node) {\n return dist[node.id()];\n };\n\n var setDist = function setDist(node, d) {\n dist[node.id()] = d;\n Q.updateItem(node);\n };\n\n var Q = new heap(function (a, b) {\n return getDist(a) - getDist(b);\n });\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n dist[node.id()] = node.same(source) ? 0 : Infinity;\n Q.push(node);\n }\n\n var distBetween = function distBetween(u, v) {\n var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges);\n var smallestDistance = Infinity;\n var smallestEdge;\n\n for (var _i = 0; _i < uvs.length; _i++) {\n var edge = uvs[_i];\n\n var _weight = weightFn(edge);\n\n if (_weight < smallestDistance || !smallestEdge) {\n smallestDistance = _weight;\n smallestEdge = edge;\n }\n }\n\n return {\n edge: smallestEdge,\n dist: smallestDistance\n };\n };\n\n while (Q.size() > 0) {\n var u = Q.pop();\n var smalletsDist = getDist(u);\n var uid = u.id();\n knownDist[uid] = smalletsDist;\n\n if (smalletsDist === Infinity) {\n continue;\n }\n\n var neighbors = u.neighborhood().intersect(nodes);\n\n for (var _i2 = 0; _i2 < neighbors.length; _i2++) {\n var v = neighbors[_i2];\n var vid = v.id();\n var vDist = distBetween(u, v);\n var alt = smalletsDist + vDist.dist;\n\n if (alt < getDist(v)) {\n setDist(v, alt);\n prev[vid] = {\n node: u,\n edge: vDist.edge\n };\n }\n } // for\n\n } // while\n\n\n return {\n distanceTo: function distanceTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n return knownDist[target.id()];\n },\n pathTo: function pathTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n var S = [];\n var u = target;\n var uid = u.id();\n\n if (target.length > 0) {\n S.unshift(target);\n\n while (prev[uid]) {\n var p = prev[uid];\n S.unshift(p.edge);\n S.unshift(p.node);\n u = p.node;\n uid = u.id();\n }\n }\n\n return eles.spawn(S);\n }\n };\n }\n };\n\n var elesfn$t = {\n // kruskal's algorithm (finds min spanning tree, assuming undirected graph)\n // implemented from pseudocode from wikipedia\n kruskal: function kruskal(weightFn) {\n weightFn = weightFn || function (edge) {\n return 1;\n };\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var numNodes = nodes.length;\n var forest = new Array(numNodes);\n var A = nodes; // assumes byGroup() creates new collections that can be safely mutated\n\n var findSetIndex = function findSetIndex(ele) {\n for (var i = 0; i < forest.length; i++) {\n var eles = forest[i];\n\n if (eles.has(ele)) {\n return i;\n }\n }\n }; // start with one forest per node\n\n\n for (var i = 0; i < numNodes; i++) {\n forest[i] = this.spawn(nodes[i]);\n }\n\n var S = edges.sort(function (a, b) {\n return weightFn(a) - weightFn(b);\n });\n\n for (var _i = 0; _i < S.length; _i++) {\n var edge = S[_i];\n var u = edge.source()[0];\n var v = edge.target()[0];\n var setUIndex = findSetIndex(u);\n var setVIndex = findSetIndex(v);\n var setU = forest[setUIndex];\n var setV = forest[setVIndex];\n\n if (setUIndex !== setVIndex) {\n A.merge(edge); // combine forests for u and v\n\n setU.merge(setV);\n forest.splice(setVIndex, 1);\n }\n }\n\n return A;\n }\n };\n\n var aStarDefaults = defaults$g({\n root: null,\n goal: null,\n weight: function weight(edge) {\n return 1;\n },\n heuristic: function heuristic(edge) {\n return 0;\n },\n directed: false\n });\n var elesfn$s = {\n // Implemented from pseudocode from wikipedia\n aStar: function aStar(options) {\n var cy = this.cy();\n\n var _aStarDefaults = aStarDefaults(options),\n root = _aStarDefaults.root,\n goal = _aStarDefaults.goal,\n heuristic = _aStarDefaults.heuristic,\n directed = _aStarDefaults.directed,\n weight = _aStarDefaults.weight;\n\n root = cy.collection(root)[0];\n goal = cy.collection(goal)[0];\n var sid = root.id();\n var tid = goal.id();\n var gScore = {};\n var fScore = {};\n var closedSetIds = {};\n var openSet = new heap(function (a, b) {\n return fScore[a.id()] - fScore[b.id()];\n });\n var openSetIds = new Set$1();\n var cameFrom = {};\n var cameFromEdge = {};\n\n var addToOpenSet = function addToOpenSet(ele, id) {\n openSet.push(ele);\n openSetIds.add(id);\n };\n\n var cMin, cMinId;\n\n var popFromOpenSet = function popFromOpenSet() {\n cMin = openSet.pop();\n cMinId = cMin.id();\n openSetIds[\"delete\"](cMinId);\n };\n\n var isInOpenSet = function isInOpenSet(id) {\n return openSetIds.has(id);\n };\n\n addToOpenSet(root, sid);\n gScore[sid] = 0;\n fScore[sid] = heuristic(root); // Counter\n\n var steps = 0; // Main loop\n\n while (openSet.size() > 0) {\n popFromOpenSet();\n steps++; // If we've found our goal, then we are done\n\n if (cMinId === tid) {\n var path = [];\n var pathNode = goal;\n var pathNodeId = tid;\n var pathEdge = cameFromEdge[pathNodeId];\n\n for (;;) {\n path.unshift(pathNode);\n\n if (pathEdge != null) {\n path.unshift(pathEdge);\n }\n\n pathNode = cameFrom[pathNodeId];\n\n if (pathNode == null) {\n break;\n }\n\n pathNodeId = pathNode.id();\n pathEdge = cameFromEdge[pathNodeId];\n }\n\n return {\n found: true,\n distance: gScore[cMinId],\n path: this.spawn(path),\n steps: steps\n };\n } // Add cMin to processed nodes\n\n\n closedSetIds[cMinId] = true; // Update scores for neighbors of cMin\n // Take into account if graph is directed or not\n\n var vwEdges = cMin._private.edges;\n\n for (var i = 0; i < vwEdges.length; i++) {\n var e = vwEdges[i]; // edge must be in set of calling eles\n\n if (!this.hasElementWithId(e.id())) {\n continue;\n } // cMin must be the source of edge if directed\n\n\n if (directed && e.data('source') !== cMinId) {\n continue;\n }\n\n var wSrc = e.source();\n var wTgt = e.target();\n var w = wSrc.id() !== cMinId ? wSrc : wTgt;\n var wid = w.id(); // node must be in set of calling eles\n\n if (!this.hasElementWithId(wid)) {\n continue;\n } // if node is in closedSet, ignore it\n\n\n if (closedSetIds[wid]) {\n continue;\n } // New tentative score for node w\n\n\n var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if:\n // w not present in openSet\n // OR\n // tentative gScore is less than previous value\n // w not in openSet\n\n if (!isInOpenSet(wid)) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n addToOpenSet(w, wid);\n cameFrom[wid] = cMin;\n cameFromEdge[wid] = e;\n continue;\n } // w already in openSet, but with greater gScore\n\n\n if (tempScore < gScore[wid]) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n cameFrom[wid] = cMin;\n cameFromEdge[wid] = e;\n }\n } // End of neighbors update\n\n } // End of main loop\n // If we've reached here, then we've not reached our goal\n\n\n return {\n found: false,\n distance: undefined,\n path: undefined,\n steps: steps\n };\n }\n }; // elesfn\n\n var floydWarshallDefaults = defaults$g({\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n });\n var elesfn$r = {\n // Implemented from pseudocode from wikipedia\n floydWarshall: function floydWarshall(options) {\n var cy = this.cy();\n\n var _floydWarshallDefault = floydWarshallDefaults(options),\n weight = _floydWarshallDefault.weight,\n directed = _floydWarshallDefault.directed;\n\n var weightFn = weight;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var N = nodes.length;\n var Nsq = N * N;\n\n var indexOf = function indexOf(node) {\n return nodes.indexOf(node);\n };\n\n var atIndex = function atIndex(i) {\n return nodes[i];\n }; // Initialize distance matrix\n\n\n var dist = new Array(Nsq);\n\n for (var n = 0; n < Nsq; n++) {\n var j = n % N;\n var i = (n - j) / N;\n\n if (i === j) {\n dist[n] = 0;\n } else {\n dist[n] = Infinity;\n }\n } // Initialize matrix used for path reconstruction\n // Initialize distance matrix\n\n\n var next = new Array(Nsq);\n var edgeNext = new Array(Nsq); // Process edges\n\n for (var _i = 0; _i < edges.length; _i++) {\n var edge = edges[_i];\n var src = edge.source()[0];\n var tgt = edge.target()[0];\n\n if (src === tgt) {\n continue;\n } // exclude loops\n\n\n var s = indexOf(src);\n var t = indexOf(tgt);\n var st = s * N + t; // source to target index\n\n var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes\n\n\n if (dist[st] > _weight) {\n dist[st] = _weight;\n next[st] = t;\n edgeNext[st] = edge;\n } // If undirected graph, process 'reversed' edge\n\n\n if (!directed) {\n var ts = t * N + s; // target to source index\n\n if (!directed && dist[ts] > _weight) {\n dist[ts] = _weight;\n next[ts] = s;\n edgeNext[ts] = edge;\n }\n }\n } // Main loop\n\n\n for (var k = 0; k < N; k++) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n var ik = _i2 * N + k;\n\n for (var _j = 0; _j < N; _j++) {\n var ij = _i2 * N + _j;\n var kj = k * N + _j;\n\n if (dist[ik] + dist[kj] < dist[ij]) {\n dist[ij] = dist[ik] + dist[kj];\n next[ij] = next[ik];\n }\n }\n }\n }\n\n var getArgEle = function getArgEle(ele) {\n return (string(ele) ? cy.filter(ele) : ele)[0];\n };\n\n var indexOfArgEle = function indexOfArgEle(ele) {\n return indexOf(getArgEle(ele));\n };\n\n var res = {\n distance: function distance(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n return dist[i * N + j];\n },\n path: function path(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n var fromNode = atIndex(i);\n\n if (i === j) {\n return fromNode.collection();\n }\n\n if (next[i * N + j] == null) {\n return cy.collection();\n }\n\n var path = cy.collection();\n var prev = i;\n var edge;\n path.merge(fromNode);\n\n while (i !== j) {\n prev = i;\n i = next[i * N + j];\n edge = edgeNext[prev * N + i];\n path.merge(edge);\n path.merge(atIndex(i));\n }\n\n return path;\n }\n };\n return res;\n } // floydWarshall\n\n }; // elesfn\n\n var bellmanFordDefaults = defaults$g({\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n root: null\n });\n var elesfn$q = {\n // Implemented from pseudocode from wikipedia\n bellmanFord: function bellmanFord(options) {\n var _this = this;\n\n var _bellmanFordDefaults = bellmanFordDefaults(options),\n weight = _bellmanFordDefaults.weight,\n directed = _bellmanFordDefaults.directed,\n root = _bellmanFordDefaults.root;\n\n var weightFn = weight;\n var eles = this;\n var cy = this.cy();\n\n var _this$byGroup = this.byGroup(),\n edges = _this$byGroup.edges,\n nodes = _this$byGroup.nodes;\n\n var numNodes = nodes.length;\n var infoMap = new Map$2();\n var hasNegativeWeightCycle = false;\n var negativeWeightCycles = [];\n root = cy.collection(root)[0]; // in case selector passed\n\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numEdges = edges.length;\n\n var getInfo = function getInfo(node) {\n var obj = infoMap.get(node.id());\n\n if (!obj) {\n obj = {};\n infoMap.set(node.id(), obj);\n }\n\n return obj;\n };\n\n var getNodeFromTo = function getNodeFromTo(to) {\n return (string(to) ? cy.$(to) : to)[0];\n };\n\n var distanceTo = function distanceTo(to) {\n return getInfo(getNodeFromTo(to)).dist;\n };\n\n var pathTo = function pathTo(to) {\n var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root;\n var end = getNodeFromTo(to);\n var path = [];\n var node = end;\n\n for (;;) {\n if (node == null) {\n return _this.spawn();\n }\n\n var _getInfo = getInfo(node),\n edge = _getInfo.edge,\n pred = _getInfo.pred;\n\n path.unshift(node[0]);\n\n if (node.same(thisStart) && path.length > 0) {\n break;\n }\n\n if (edge != null) {\n path.unshift(edge);\n }\n\n node = pred;\n }\n\n return eles.spawn(path);\n }; // Initializations { dist, pred, edge }\n\n\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i];\n var info = getInfo(node);\n\n if (node.same(root)) {\n info.dist = 0;\n } else {\n info.dist = Infinity;\n }\n\n info.pred = null;\n info.edge = null;\n } // Edges relaxation\n\n\n var replacedEdge = false;\n\n var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) {\n var dist = info1.dist + weight;\n\n if (dist < info2.dist && !edge.same(info1.edge)) {\n info2.dist = dist;\n info2.pred = node1;\n info2.edge = edge;\n replacedEdge = true;\n }\n };\n\n for (var _i = 1; _i < numNodes; _i++) {\n replacedEdge = false;\n\n for (var e = 0; e < numEdges; e++) {\n var edge = edges[e];\n var src = edge.source();\n var tgt = edge.target();\n\n var _weight = weightFn(edge);\n\n var srcInfo = getInfo(src);\n var tgtInfo = getInfo(tgt);\n checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge\n\n if (!directed) {\n checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight);\n }\n }\n\n if (!replacedEdge) {\n break;\n }\n }\n\n if (replacedEdge) {\n // Check for negative weight cycles\n var negativeWeightCycleIds = [];\n\n for (var _e = 0; _e < numEdges; _e++) {\n var _edge = edges[_e];\n\n var _src = _edge.source();\n\n var _tgt = _edge.target();\n\n var _weight2 = weightFn(_edge);\n\n var srcDist = getInfo(_src).dist;\n var tgtDist = getInfo(_tgt).dist;\n\n if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) {\n if (!hasNegativeWeightCycle) {\n warn('Graph contains a negative weight cycle for Bellman-Ford');\n hasNegativeWeightCycle = true;\n }\n\n if (options.findNegativeWeightCycles !== false) {\n var negativeNodes = [];\n\n if (srcDist + _weight2 < tgtDist) {\n negativeNodes.push(_src);\n }\n\n if (!directed && tgtDist + _weight2 < srcDist) {\n negativeNodes.push(_tgt);\n }\n\n var numNegativeNodes = negativeNodes.length;\n\n for (var n = 0; n < numNegativeNodes; n++) {\n var start = negativeNodes[n];\n var cycle = [start];\n cycle.push(getInfo(start).edge);\n var _node = getInfo(start).pred;\n\n while (cycle.indexOf(_node) === -1) {\n cycle.push(_node);\n cycle.push(getInfo(_node).edge);\n _node = getInfo(_node).pred;\n }\n\n cycle = cycle.slice(cycle.indexOf(_node));\n var smallestId = cycle[0].id();\n var smallestIndex = 0;\n\n for (var c = 2; c < cycle.length; c += 2) {\n if (cycle[c].id() < smallestId) {\n smallestId = cycle[c].id();\n smallestIndex = c;\n }\n }\n\n cycle = cycle.slice(smallestIndex).concat(cycle.slice(0, smallestIndex));\n cycle.push(cycle[0]);\n var cycleId = cycle.map(function (el) {\n return el.id();\n }).join(\",\");\n\n if (negativeWeightCycleIds.indexOf(cycleId) === -1) {\n negativeWeightCycles.push(eles.spawn(cycle));\n negativeWeightCycleIds.push(cycleId);\n }\n }\n } else {\n break;\n }\n }\n }\n }\n\n return {\n distanceTo: distanceTo,\n pathTo: pathTo,\n hasNegativeWeightCycle: hasNegativeWeightCycle,\n negativeWeightCycles: negativeWeightCycles\n };\n } // bellmanFord\n\n }; // elesfn\n\n var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one\n // Updates the remaining edge lists\n // Receives as a paramater the edge which causes the collapse\n\n var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) {\n if (remainingEdges.length === 0) {\n error(\"Karger-Stein must be run on a connected (sub)graph\");\n }\n\n var edgeInfo = remainingEdges[edgeIndex];\n var sourceIn = edgeInfo[1];\n var targetIn = edgeInfo[2];\n var partition1 = nodeMap[sourceIn];\n var partition2 = nodeMap[targetIn];\n var newEdges = remainingEdges; // re-use array\n // Delete all edges between partition1 and partition2\n\n for (var i = newEdges.length - 1; i >= 0; i--) {\n var edge = newEdges[i];\n var src = edge[1];\n var tgt = edge[2];\n\n if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) {\n newEdges.splice(i, 1);\n }\n } // All edges pointing to partition2 should now point to partition1\n\n\n for (var _i = 0; _i < newEdges.length; _i++) {\n var _edge = newEdges[_i];\n\n if (_edge[1] === partition2) {\n // Check source\n newEdges[_i] = _edge.slice(); // copy\n\n newEdges[_i][1] = partition1;\n } else if (_edge[2] === partition2) {\n // Check target\n newEdges[_i] = _edge.slice(); // copy\n\n newEdges[_i][2] = partition1;\n }\n } // Move all nodes from partition2 to partition1\n\n\n for (var _i2 = 0; _i2 < nodeMap.length; _i2++) {\n if (nodeMap[_i2] === partition2) {\n nodeMap[_i2] = partition1;\n }\n }\n\n return newEdges;\n }; // Contracts a graph until we reach a certain number of meta nodes\n\n\n var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) {\n while (size > sizeLimit) {\n // Choose an edge randomly\n var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge\n\n remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges);\n size--;\n }\n\n return remainingEdges;\n };\n\n var elesfn$p = {\n // Computes the minimum cut of an undirected graph\n // Returns the correct answer with high probability\n kargerStein: function kargerStein() {\n var _this = this;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numNodes = nodes.length;\n var numEdges = edges.length;\n var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2));\n var stopSize = Math.floor(numNodes / sqrt2);\n\n if (numNodes < 2) {\n error('At least 2 nodes are required for Karger-Stein algorithm');\n return undefined;\n } // Now store edge destination as indexes\n // Format for each edge (edge index, source node index, target node index)\n\n\n var edgeIndexes = [];\n\n for (var i = 0; i < numEdges; i++) {\n var e = edges[i];\n edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]);\n } // We will store the best cut found here\n\n\n var minCutSize = Infinity;\n var minCutEdgeIndexes = [];\n var minCutNodeMap = new Array(numNodes); // Initial meta node partition\n\n var metaNodeMap = new Array(numNodes);\n var metaNodeMap2 = new Array(numNodes);\n\n var copyNodesMap = function copyNodesMap(from, to) {\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n to[_i3] = from[_i3];\n }\n }; // Main loop\n\n\n for (var iter = 0; iter <= numIter; iter++) {\n // Reset meta node partition\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n metaNodeMap[_i4] = _i4;\n } // Contract until stop point (stopSize nodes)\n\n\n var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize);\n var edgesState2 = edgesState.slice(); // copy\n // Create a copy of the colapsed nodes state\n\n copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state\n\n var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2);\n var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far?\n\n if (res1.length <= res2.length && res1.length < minCutSize) {\n minCutSize = res1.length;\n minCutEdgeIndexes = res1;\n copyNodesMap(metaNodeMap, minCutNodeMap);\n } else if (res2.length <= res1.length && res2.length < minCutSize) {\n minCutSize = res2.length;\n minCutEdgeIndexes = res2;\n copyNodesMap(metaNodeMap2, minCutNodeMap);\n }\n } // end of main loop\n // Construct result\n\n\n var cut = this.spawn(minCutEdgeIndexes.map(function (e) {\n return edges[e[0]];\n }));\n var partition1 = this.spawn();\n var partition2 = this.spawn(); // traverse metaNodeMap for best cut\n\n var witnessNodePartition = minCutNodeMap[0];\n\n for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) {\n var partitionId = minCutNodeMap[_i5];\n var node = nodes[_i5];\n\n if (partitionId === witnessNodePartition) {\n partition1.merge(node);\n } else {\n partition2.merge(node);\n }\n } // construct components corresponding to each disjoint subset of nodes\n\n\n var constructComponent = function constructComponent(subset) {\n var component = _this.spawn();\n\n subset.forEach(function (node) {\n component.merge(node);\n node.connectedEdges().forEach(function (edge) {\n // ensure edge is within calling collection and edge is not in cut\n if (_this.contains(edge) && !cut.contains(edge)) {\n component.merge(edge);\n }\n });\n });\n return component;\n };\n\n var components = [constructComponent(partition1), constructComponent(partition2)];\n var ret = {\n cut: cut,\n components: components,\n // n.b. partitions are included to be compatible with the old api spec\n // (could be removed in a future major version)\n partition1: partition1,\n partition2: partition2\n };\n return ret;\n }\n }; // elesfn\n\n var copyPosition = function copyPosition(p) {\n return {\n x: p.x,\n y: p.y\n };\n };\n var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) {\n return {\n x: p.x * zoom + pan.x,\n y: p.y * zoom + pan.y\n };\n };\n var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) {\n return {\n x: (p.x - pan.x) / zoom,\n y: (p.y - pan.y) / zoom\n };\n };\n var array2point = function array2point(arr) {\n return {\n x: arr[0],\n y: arr[1]\n };\n };\n var min = function min(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var min = Infinity;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n min = Math.min(val, min);\n }\n }\n\n return min;\n };\n var max = function max(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var max = -Infinity;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n max = Math.max(val, max);\n }\n }\n\n return max;\n };\n var mean = function mean(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var total = 0;\n var n = 0;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n total += val;\n n++;\n }\n }\n\n return total / n;\n };\n var median = function median(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n if (copy) {\n arr = arr.slice(begin, end);\n } else {\n if (end < arr.length) {\n arr.splice(end, arr.length - end);\n }\n\n if (begin > 0) {\n arr.splice(0, begin);\n }\n } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start\n\n\n var off = 0; // offset from non-finite values\n\n for (var i = arr.length - 1; i >= 0; i--) {\n var v = arr[i];\n\n if (includeHoles) {\n if (!isFinite(v)) {\n arr[i] = -Infinity;\n off++;\n }\n } else {\n // just remove it if we don't want to consider holes\n arr.splice(i, 1);\n }\n }\n\n if (sort) {\n arr.sort(function (a, b) {\n return a - b;\n }); // requires copy = true if you don't want to change the orig\n }\n\n var len = arr.length;\n var mid = Math.floor(len / 2);\n\n if (len % 2 !== 0) {\n return arr[mid + 1 + off];\n } else {\n return (arr[mid - 1 + off] + arr[mid + off]) / 2;\n }\n };\n var deg2rad = function deg2rad(deg) {\n return Math.PI * deg / 180;\n };\n var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) {\n return Math.atan2(dispY, dispX) - Math.PI / 2;\n };\n var log2 = Math.log2 || function (n) {\n return Math.log(n) / Math.log(2);\n };\n var signum = function signum(x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n };\n var dist = function dist(p1, p2) {\n return Math.sqrt(sqdist(p1, p2));\n };\n var sqdist = function sqdist(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return dx * dx + dy * dy;\n };\n var inPlaceSumNormalize = function inPlaceSumNormalize(v) {\n var length = v.length; // First, get sum of all elements\n\n var total = 0;\n\n for (var i = 0; i < length; i++) {\n total += v[i];\n } // Now, divide each by the sum of all elements\n\n\n for (var _i = 0; _i < length; _i++) {\n v[_i] = v[_i] / total;\n }\n\n return v;\n };\n\n var qbezierAt = function qbezierAt(p0, p1, p2, t) {\n return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2;\n };\n var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) {\n return {\n x: qbezierAt(p0.x, p1.x, p2.x, t),\n y: qbezierAt(p0.y, p1.y, p2.y, t)\n };\n };\n var lineAt = function lineAt(p0, p1, t, d) {\n var vec = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var vecDist = dist(p0, p1);\n var normVec = {\n x: vec.x / vecDist,\n y: vec.y / vecDist\n };\n t = t == null ? 0 : t;\n d = d != null ? d : t * vecDist;\n return {\n x: p0.x + normVec.x * d,\n y: p0.y + normVec.y * d\n };\n };\n var bound = function bound(min, val, max) {\n return Math.max(min, Math.min(max, val));\n }; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params\n\n var makeBoundingBox = function makeBoundingBox(bb) {\n if (bb == null) {\n return {\n x1: Infinity,\n y1: Infinity,\n x2: -Infinity,\n y2: -Infinity,\n w: 0,\n h: 0\n };\n } else if (bb.x1 != null && bb.y1 != null) {\n if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x2,\n y2: bb.y2,\n w: bb.x2 - bb.x1,\n h: bb.y2 - bb.y1\n };\n } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x1 + bb.w,\n y2: bb.y1 + bb.h,\n w: bb.w,\n h: bb.h\n };\n }\n }\n };\n var copyBoundingBox = function copyBoundingBox(bb) {\n return {\n x1: bb.x1,\n x2: bb.x2,\n w: bb.w,\n y1: bb.y1,\n y2: bb.y2,\n h: bb.h\n };\n };\n var clearBoundingBox = function clearBoundingBox(bb) {\n bb.x1 = Infinity;\n bb.y1 = Infinity;\n bb.x2 = -Infinity;\n bb.y2 = -Infinity;\n bb.w = 0;\n bb.h = 0;\n };\n var updateBoundingBox = function updateBoundingBox(bb1, bb2) {\n // update bb1 with bb2 bounds\n bb1.x1 = Math.min(bb1.x1, bb2.x1);\n bb1.x2 = Math.max(bb1.x2, bb2.x2);\n bb1.w = bb1.x2 - bb1.x1;\n bb1.y1 = Math.min(bb1.y1, bb2.y1);\n bb1.y2 = Math.max(bb1.y2, bb2.y2);\n bb1.h = bb1.y2 - bb1.y1;\n };\n var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) {\n bb.x1 = Math.min(bb.x1, x);\n bb.x2 = Math.max(bb.x2, x);\n bb.w = bb.x2 - bb.x1;\n bb.y1 = Math.min(bb.y1, y);\n bb.y2 = Math.max(bb.y2, y);\n bb.h = bb.y2 - bb.y1;\n };\n var expandBoundingBox = function expandBoundingBox(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n bb.x1 -= padding;\n bb.x2 += padding;\n bb.y1 -= padding;\n bb.y2 += padding;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n return bb;\n };\n var expandBoundingBoxSides = function expandBoundingBoxSides(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0];\n var top, right, bottom, left;\n\n if (padding.length === 1) {\n top = right = bottom = left = padding[0];\n } else if (padding.length === 2) {\n top = bottom = padding[0];\n left = right = padding[1];\n } else if (padding.length === 4) {\n var _padding = _slicedToArray(padding, 4);\n\n top = _padding[0];\n right = _padding[1];\n bottom = _padding[2];\n left = _padding[3];\n }\n\n bb.x1 -= left;\n bb.x2 += right;\n bb.y1 -= top;\n bb.y2 += bottom;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n return bb;\n };\n\n var assignBoundingBox = function assignBoundingBox(bb1, bb2) {\n bb1.x1 = bb2.x1;\n bb1.y1 = bb2.y1;\n bb1.x2 = bb2.x2;\n bb1.y2 = bb2.y2;\n bb1.w = bb1.x2 - bb1.x1;\n bb1.h = bb1.y2 - bb1.y1;\n };\n var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) {\n // case: one bb to right of other\n if (bb1.x1 > bb2.x2) {\n return false;\n }\n\n if (bb2.x1 > bb1.x2) {\n return false;\n } // case: one bb to left of other\n\n\n if (bb1.x2 < bb2.x1) {\n return false;\n }\n\n if (bb2.x2 < bb1.x1) {\n return false;\n } // case: one bb above other\n\n\n if (bb1.y2 < bb2.y1) {\n return false;\n }\n\n if (bb2.y2 < bb1.y1) {\n return false;\n } // case: one bb below other\n\n\n if (bb1.y1 > bb2.y2) {\n return false;\n }\n\n if (bb2.y1 > bb1.y2) {\n return false;\n } // otherwise, must have some overlap\n\n\n return true;\n };\n var inBoundingBox = function inBoundingBox(bb, x, y) {\n return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\n };\n var pointInBoundingBox = function pointInBoundingBox(bb, pt) {\n return inBoundingBox(bb, pt.x, pt.y);\n };\n var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) {\n return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2);\n };\n var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var halfWidth = width / 2;\n var halfHeight = height / 2; // Check intersections with straight line segments\n\n var straightLineIntersections; // Top segment, left to right\n\n {\n var topStartX = nodeX - halfWidth + cornerRadius - padding;\n var topStartY = nodeY - halfHeight - padding;\n var topEndX = nodeX + halfWidth - cornerRadius + padding;\n var topEndY = topStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Right segment, top to bottom\n\n {\n var rightStartX = nodeX + halfWidth + padding;\n var rightStartY = nodeY - halfHeight + cornerRadius - padding;\n var rightEndX = rightStartX;\n var rightEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Bottom segment, left to right\n\n {\n var bottomStartX = nodeX - halfWidth + cornerRadius - padding;\n var bottomStartY = nodeY + halfHeight + padding;\n var bottomEndX = nodeX + halfWidth - cornerRadius + padding;\n var bottomEndY = bottomStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Left segment, top to bottom\n\n {\n var leftStartX = nodeX - halfWidth - padding;\n var leftStartY = nodeY - halfHeight + cornerRadius - padding;\n var leftEndX = leftStartX;\n var leftEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Check intersections with arc segments\n\n var arcIntersections; // Top Left\n\n {\n var topLeftCenterX = nodeX - halfWidth + cornerRadius;\n var topLeftCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Top Right\n\n {\n var topRightCenterX = nodeX + halfWidth - cornerRadius;\n var topRightCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Bottom Right\n\n {\n var bottomRightCenterX = nodeX + halfWidth - cornerRadius;\n var bottomRightCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Bottom Left\n\n {\n var bottomLeftCenterX = nodeX - halfWidth + cornerRadius;\n var bottomLeftCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n return []; // if nothing\n };\n var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) {\n var t = tolerance;\n var x1 = Math.min(lx1, lx2);\n var x2 = Math.max(lx1, lx2);\n var y1 = Math.min(ly1, ly2);\n var y2 = Math.max(ly1, ly2);\n return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t;\n };\n var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) {\n var bb = {\n x1: Math.min(x1, x3, x2) - tolerance,\n x2: Math.max(x1, x3, x2) + tolerance,\n y1: Math.min(y1, y3, y2) - tolerance,\n y2: Math.max(y1, y3, y2) + tolerance\n }; // if outside the rough bounding box for the bezier, then it can't be a hit\n\n if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) {\n // console.log('bezier out of rough bb')\n return false;\n } else {\n // console.log('do more expensive check');\n return true;\n }\n };\n var solveQuadratic = function solveQuadratic(a, b, c, val) {\n c -= val;\n var r = b * b - 4 * a * c;\n\n if (r < 0) {\n return [];\n }\n\n var sqrtR = Math.sqrt(r);\n var denom = 2 * a;\n var root1 = (-b + sqrtR) / denom;\n var root2 = (-b - sqrtR) / denom;\n return [root1, root2];\n };\n var solveCubic = function solveCubic(a, b, c, d, result) {\n // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where\n // r is the real component, i is the imaginary component\n // An implementation of the Cardano method from the year 1545\n // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots\n var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value\n\n if (a === 0) {\n a = epsilon;\n }\n\n b /= a;\n c /= a;\n d /= a;\n var discriminant, q, r, dum1, s, t, term1, r13;\n q = (3.0 * c - b * b) / 9.0;\n r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b));\n r /= 54.0;\n discriminant = q * q * q + r * r;\n result[1] = 0;\n term1 = b / 3.0;\n\n if (discriminant > 0) {\n s = r + Math.sqrt(discriminant);\n s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0);\n t = r - Math.sqrt(discriminant);\n t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0);\n result[0] = -term1 + s + t;\n term1 += (s + t) / 2.0;\n result[4] = result[2] = -term1;\n term1 = Math.sqrt(3.0) * (-t + s) / 2;\n result[3] = term1;\n result[5] = -term1;\n return;\n }\n\n result[5] = result[3] = 0;\n\n if (discriminant === 0) {\n r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0);\n result[0] = -term1 + 2.0 * r13;\n result[4] = result[2] = -(r13 + term1);\n return;\n }\n\n q = -q;\n dum1 = q * q * q;\n dum1 = Math.acos(r / Math.sqrt(dum1));\n r13 = 2.0 * Math.sqrt(q);\n result[0] = -term1 + r13 * Math.cos(dum1 / 3.0);\n result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0);\n result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0);\n return;\n };\n var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) {\n // Find minimum distance by using the minimum of the distance\n // function between the given point and the curve\n // This gives the coefficients of the resulting cubic equation\n // whose roots tell us where a possible minimum is\n // (Coefficients are divided by 4)\n var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3;\n var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3;\n var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y;\n var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug(\"coefficients: \" + a / a + \", \" + b / a + \", \" + c / a + \", \" + d / a);\n\n var roots = []; // Use the cubic solving algorithm\n\n solveCubic(a, b, c, d, roots);\n var zeroThreshold = 0.0000001;\n var params = [];\n\n for (var index = 0; index < 6; index += 2) {\n if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) {\n params.push(roots[index]);\n }\n }\n\n params.push(1.0);\n params.push(0.0);\n var minDistanceSquared = -1;\n var curX, curY, distSquared;\n\n for (var i = 0; i < params.length; i++) {\n curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3;\n curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3;\n distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + \": \" + Math.sqrt(distSquared));\n\n if (minDistanceSquared >= 0) {\n if (distSquared < minDistanceSquared) {\n minDistanceSquared = distSquared;\n }\n } else {\n minDistanceSquared = distSquared;\n }\n }\n\n return minDistanceSquared;\n };\n var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) {\n var offset = [x - x1, y - y1];\n var line = [x2 - x1, y2 - y1];\n var lineSq = line[0] * line[0] + line[1] * line[1];\n var hypSq = offset[0] * offset[0] + offset[1] * offset[1];\n var dotProduct = offset[0] * line[0] + offset[1] * line[1];\n var adjSq = dotProduct * dotProduct / lineSq;\n\n if (dotProduct < 0) {\n return hypSq;\n }\n\n if (adjSq > lineSq) {\n return (x - x2) * (x - x2) + (y - y2) * (y - y2);\n }\n\n return hypSq - adjSq;\n };\n var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) {\n var x1, y1, x2, y2;\n var y3; // Intersect with vertical line through (x, y)\n\n var up = 0; // let down = 0;\n\n for (var i = 0; i < points.length / 2; i++) {\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n\n if (i + 1 < points.length / 2) {\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n } else {\n x2 = points[(i + 1 - points.length / 2) * 2];\n y2 = points[(i + 1 - points.length / 2) * 2 + 1];\n }\n\n if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) {\n y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1;\n\n if (y3 > y) {\n up++;\n } // if( y3 < y ){\n // down++;\n // }\n\n } else {\n continue;\n }\n }\n\n if (up % 2 === 0) {\n return false;\n } else {\n return true;\n }\n };\n var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) {\n var transformedPoints = new Array(basePoints.length); // Gives negative angle\n\n var angle;\n\n if (direction[0] != null) {\n angle = Math.atan(direction[1] / direction[0]);\n\n if (direction[0] < 0) {\n angle = angle + Math.PI / 2;\n } else {\n angle = -angle - Math.PI / 2;\n }\n } else {\n angle = direction;\n }\n\n var cos = Math.cos(-angle);\n var sin = Math.sin(-angle); // console.log(\"base: \" + basePoints);\n\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin);\n transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin);\n transformedPoints[i * 2] += centerX;\n transformedPoints[i * 2 + 1] += centerY;\n }\n\n var points;\n\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n\n return pointInsidePolygonPoints(x, y, points);\n };\n var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) {\n var cutPolygonPoints = new Array(basePoints.length);\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n var squaredCornerRadius = cornerRadius * cornerRadius;\n\n for (var i = 0; i < basePoints.length / 4; i++) {\n var sourceUv = void 0,\n destUv = void 0;\n\n if (i === 0) {\n sourceUv = basePoints.length - 2;\n } else {\n sourceUv = i * 4 - 2;\n }\n\n destUv = i * 4 + 2;\n var px = centerX + halfW * basePoints[i * 4];\n var py = centerY + halfH * basePoints[i * 4 + 1];\n var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * basePoints[sourceUv];\n var cp0y = py - offset * basePoints[sourceUv + 1];\n var cp1x = px + offset * basePoints[destUv];\n var cp1y = py + offset * basePoints[destUv + 1];\n cutPolygonPoints[i * 4] = cp0x;\n cutPolygonPoints[i * 4 + 1] = cp0y;\n cutPolygonPoints[i * 4 + 2] = cp1x;\n cutPolygonPoints[i * 4 + 3] = cp1y;\n var orthx = basePoints[sourceUv + 1];\n var orthy = -basePoints[sourceUv];\n var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];\n\n if (cosAlpha < 0) {\n orthx *= -1;\n orthy *= -1;\n }\n\n var cx = cp0x + orthx * cornerRadius;\n var cy = cp0y + orthy * cornerRadius;\n var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2);\n\n if (squaredDistance <= squaredCornerRadius) {\n return true;\n }\n }\n\n return pointInsidePolygonPoints(x, y, cutPolygonPoints);\n };\n var joinLines = function joinLines(lineSet) {\n var vertices = new Array(lineSet.length / 2);\n var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY;\n var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY;\n\n for (var i = 0; i < lineSet.length / 4; i++) {\n currentLineStartX = lineSet[i * 4];\n currentLineStartY = lineSet[i * 4 + 1];\n currentLineEndX = lineSet[i * 4 + 2];\n currentLineEndY = lineSet[i * 4 + 3];\n\n if (i < lineSet.length / 4 - 1) {\n nextLineStartX = lineSet[(i + 1) * 4];\n nextLineStartY = lineSet[(i + 1) * 4 + 1];\n nextLineEndX = lineSet[(i + 1) * 4 + 2];\n nextLineEndY = lineSet[(i + 1) * 4 + 3];\n } else {\n nextLineStartX = lineSet[0];\n nextLineStartY = lineSet[1];\n nextLineEndX = lineSet[2];\n nextLineEndY = lineSet[3];\n }\n\n var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true);\n vertices[i * 2] = intersection[0];\n vertices[i * 2 + 1] = intersection[1];\n }\n\n return vertices;\n };\n var expandPolygon = function expandPolygon(points, pad) {\n var expandedLineSet = new Array(points.length * 2);\n var currentPointX, currentPointY, nextPointX, nextPointY;\n\n for (var i = 0; i < points.length / 2; i++) {\n currentPointX = points[i * 2];\n currentPointY = points[i * 2 + 1];\n\n if (i < points.length / 2 - 1) {\n nextPointX = points[(i + 1) * 2];\n nextPointY = points[(i + 1) * 2 + 1];\n } else {\n nextPointX = points[0];\n nextPointY = points[1];\n } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY]\n // Assume CCW polygon winding\n\n\n var offsetX = nextPointY - currentPointY;\n var offsetY = -(nextPointX - currentPointX); // Normalize\n\n var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY);\n var normalizedOffsetX = offsetX / offsetLength;\n var normalizedOffsetY = offsetY / offsetLength;\n expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad;\n expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad;\n }\n\n return expandedLineSet;\n };\n var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) {\n var dispX = centerX - x;\n var dispY = centerY - y;\n dispX /= ellipseWradius;\n dispY /= ellipseHradius;\n var len = Math.sqrt(dispX * dispX + dispY * dispY);\n var newLength = len - 1;\n\n if (newLength < 0) {\n return [];\n }\n\n var lenProportion = newLength / len;\n return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y];\n };\n var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) {\n x -= centerX;\n y -= centerY;\n x /= width / 2 + padding;\n y /= height / 2 + padding;\n return x * x + y * y <= 1;\n }; // Returns intersections of increasing distance from line's start point\n\n var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) {\n // Calculate d, direction vector of line\n var d = [x2 - x1, y2 - y1]; // Direction vector of line\n\n var f = [x1 - centerX, y1 - centerY];\n var a = d[0] * d[0] + d[1] * d[1];\n var b = 2 * (f[0] * d[0] + f[1] * d[1]);\n var c = f[0] * f[0] + f[1] * f[1] - radius * radius;\n var discriminant = b * b - 4 * a * c;\n\n if (discriminant < 0) {\n return [];\n }\n\n var t1 = (-b + Math.sqrt(discriminant)) / (2 * a);\n var t2 = (-b - Math.sqrt(discriminant)) / (2 * a);\n var tMin = Math.min(t1, t2);\n var tMax = Math.max(t1, t2);\n var inRangeParams = [];\n\n if (tMin >= 0 && tMin <= 1) {\n inRangeParams.push(tMin);\n }\n\n if (tMax >= 0 && tMax <= 1) {\n inRangeParams.push(tMax);\n }\n\n if (inRangeParams.length === 0) {\n return [];\n }\n\n var nearIntersectionX = inRangeParams[0] * d[0] + x1;\n var nearIntersectionY = inRangeParams[0] * d[1] + y1;\n\n if (inRangeParams.length > 1) {\n if (inRangeParams[0] == inRangeParams[1]) {\n return [nearIntersectionX, nearIntersectionY];\n } else {\n var farIntersectionX = inRangeParams[1] * d[0] + x1;\n var farIntersectionY = inRangeParams[1] * d[1] + y1;\n return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY];\n }\n } else {\n return [nearIntersectionX, nearIntersectionY];\n }\n };\n var midOfThree = function midOfThree(a, b, c) {\n if (b <= a && a <= c || c <= a && a <= b) {\n return a;\n } else if (a <= b && b <= c || c <= b && b <= a) {\n return b;\n } else {\n return c;\n }\n }; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4)\n\n var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) {\n var dx13 = x1 - x3;\n var dx21 = x2 - x1;\n var dx43 = x4 - x3;\n var dy13 = y1 - y3;\n var dy21 = y2 - y1;\n var dy43 = y4 - y3;\n var ua_t = dx43 * dy13 - dy43 * dx13;\n var ub_t = dx21 * dy13 - dy21 * dx13;\n var u_b = dy43 * dx21 - dx43 * dy21;\n\n if (u_b !== 0) {\n var ua = ua_t / u_b;\n var ub = ub_t / u_b;\n var flptThreshold = 0.001;\n\n var _min = 0 - flptThreshold;\n\n var _max = 1 + flptThreshold;\n\n if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) {\n return [x1 + ua * dx21, y1 + ua * dy21];\n } else {\n if (!infiniteLines) {\n return [];\n } else {\n return [x1 + ua * dx21, y1 + ua * dy21];\n }\n }\n } else {\n if (ua_t === 0 || ub_t === 0) {\n // Parallel, coincident lines. Check if overlap\n // Check endpoint of second line\n if (midOfThree(x1, x2, x4) === x4) {\n return [x4, y4];\n } // Check start point of second line\n\n\n if (midOfThree(x1, x2, x3) === x3) {\n return [x3, y3];\n } // Endpoint of first line\n\n\n if (midOfThree(x3, x4, x2) === x2) {\n return [x2, y2];\n }\n\n return [];\n } else {\n // Parallel, non-coincident\n return [];\n }\n }\n }; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding )\n // intersect a node polygon (pts transformed)\n //\n // math.polygonIntersectLine( x, y, basePoints, centerX, centerY )\n // intersect the points (no transform)\n\n var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n var intersections = [];\n var intersection;\n var transformedPoints = new Array(basePoints.length);\n var doTransform = true;\n\n if (width == null) {\n doTransform = false;\n }\n\n var points;\n\n if (doTransform) {\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = basePoints[i * 2] * width + centerX;\n transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY;\n }\n\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n } else {\n points = basePoints;\n }\n\n var currentX, currentY, nextX, nextY;\n\n for (var _i2 = 0; _i2 < points.length / 2; _i2++) {\n currentX = points[_i2 * 2];\n currentY = points[_i2 * 2 + 1];\n\n if (_i2 < points.length / 2 - 1) {\n nextX = points[(_i2 + 1) * 2];\n nextY = points[(_i2 + 1) * 2 + 1];\n } else {\n nextX = points[0];\n nextY = points[1];\n }\n\n intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY);\n\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n\n return intersections;\n };\n var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n var intersections = [];\n var intersection;\n var lines = new Array(basePoints.length);\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n\n for (var i = 0; i < basePoints.length / 4; i++) {\n var sourceUv = void 0,\n destUv = void 0;\n\n if (i === 0) {\n sourceUv = basePoints.length - 2;\n } else {\n sourceUv = i * 4 - 2;\n }\n\n destUv = i * 4 + 2;\n var px = centerX + halfW * basePoints[i * 4];\n var py = centerY + halfH * basePoints[i * 4 + 1];\n var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * basePoints[sourceUv];\n var cp0y = py - offset * basePoints[sourceUv + 1];\n var cp1x = px + offset * basePoints[destUv];\n var cp1y = py + offset * basePoints[destUv + 1];\n\n if (i === 0) {\n lines[basePoints.length - 2] = cp0x;\n lines[basePoints.length - 1] = cp0y;\n } else {\n lines[i * 4 - 2] = cp0x;\n lines[i * 4 - 1] = cp0y;\n }\n\n lines[i * 4] = cp1x;\n lines[i * 4 + 1] = cp1y;\n var orthx = basePoints[sourceUv + 1];\n var orthy = -basePoints[sourceUv];\n var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1];\n\n if (cosAlpha < 0) {\n orthx *= -1;\n orthy *= -1;\n }\n\n var cx = cp0x + orthx * cornerRadius;\n var cy = cp0y + orthy * cornerRadius;\n intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius);\n\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n\n for (var _i3 = 0; _i3 < lines.length / 4; _i3++) {\n intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false);\n\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n\n if (intersections.length > 2) {\n var lowestIntersection = [intersections[0], intersections[1]];\n var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2);\n\n for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) {\n var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2);\n\n if (squaredDistance <= lowestSquaredDistance) {\n lowestIntersection[0] = intersections[_i4 * 2];\n lowestIntersection[1] = intersections[_i4 * 2 + 1];\n lowestSquaredDistance = squaredDistance;\n }\n }\n\n return lowestIntersection;\n }\n\n return intersections;\n };\n var shortenIntersection = function shortenIntersection(intersection, offset, amount) {\n var disp = [intersection[0] - offset[0], intersection[1] - offset[1]];\n var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]);\n var lenRatio = (length - amount) / length;\n\n if (lenRatio < 0) {\n lenRatio = 0.00001;\n }\n\n return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]];\n };\n var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {\n var points = generateUnitNgonPoints(sides, rotationRadians);\n points = fitPolygonToSquare(points);\n return points;\n };\n var fitPolygonToSquare = function fitPolygonToSquare(points) {\n var x, y;\n var sides = points.length / 2;\n var minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n for (var i = 0; i < sides; i++) {\n x = points[2 * i];\n y = points[2 * i + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n } // stretch factors\n\n\n var sx = 2 / (maxX - minX);\n var sy = 2 / (maxY - minY);\n\n for (var _i5 = 0; _i5 < sides; _i5++) {\n x = points[2 * _i5] = points[2 * _i5] * sx;\n y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy;\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n\n if (minY < -1) {\n for (var _i6 = 0; _i6 < sides; _i6++) {\n y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY);\n }\n }\n\n return points;\n };\n var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) {\n var increment = 1.0 / sides * 2 * Math.PI;\n var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0;\n startAngle += rotationRadians;\n var points = new Array(sides * 2);\n var currentAngle;\n\n for (var i = 0; i < sides; i++) {\n currentAngle = i * increment + startAngle;\n points[2 * i] = Math.cos(currentAngle); // x\n\n points[2 * i + 1] = Math.sin(-currentAngle); // y\n }\n\n return points;\n }; // Set the default radius, unless half of width or height is smaller than default\n\n var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) {\n return Math.min(width / 4, height / 4, 8);\n }; // Set the default radius\n\n var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) {\n return Math.min(width / 10, height / 10, 8);\n };\n var getCutRectangleCornerLength = function getCutRectangleCornerLength() {\n return 8;\n };\n var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) {\n return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0];\n }; // get curve width, height, and control point position offsets as a percentage of node height / width\n\n var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) {\n return {\n heightOffset: Math.min(15, 0.05 * height),\n widthOffset: Math.min(100, 0.25 * width),\n ctrlPtOffsetPct: 0.05\n };\n };\n\n var pageRankDefaults = defaults$g({\n dampingFactor: 0.8,\n precision: 0.000001,\n iterations: 200,\n weight: function weight(edge) {\n return 1;\n }\n });\n var elesfn$o = {\n pageRank: function pageRank(options) {\n var _pageRankDefaults = pageRankDefaults(options),\n dampingFactor = _pageRankDefaults.dampingFactor,\n precision = _pageRankDefaults.precision,\n iterations = _pageRankDefaults.iterations,\n weight = _pageRankDefaults.weight;\n\n var cy = this._private.cy;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var numNodes = nodes.length;\n var numNodesSqd = numNodes * numNodes;\n var numEdges = edges.length; // Construct transposed adjacency matrix\n // First lets have a zeroed matrix of the right size\n // We'll also keep track of the sum of each column\n\n var matrix = new Array(numNodesSqd);\n var columnSum = new Array(numNodes);\n var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix\n\n for (var i = 0; i < numNodes; i++) {\n for (var j = 0; j < numNodes; j++) {\n var n = i * numNodes + j;\n matrix[n] = 0;\n }\n\n columnSum[i] = 0;\n } // Now, process edges\n\n\n for (var _i = 0; _i < numEdges; _i++) {\n var edge = edges[_i];\n var srcId = edge.data('source');\n var tgtId = edge.data('target'); // Don't include loops in the matrix\n\n if (srcId === tgtId) {\n continue;\n }\n\n var s = nodes.indexOfId(srcId);\n var t = nodes.indexOfId(tgtId);\n var w = weight(edge);\n\n var _n = t * numNodes + s; // Update matrix\n\n\n matrix[_n] += w; // Update column sum\n\n columnSum[s] += w;\n } // Add additional probability based on damping factor\n // Also, take into account columns that have sum = 0\n\n\n var p = 1.0 / numNodes + additionalProb; // Shorthand\n // Traverse matrix, column by column\n\n for (var _j = 0; _j < numNodes; _j++) {\n if (columnSum[_j] === 0) {\n // No 'links' out from node jth, assume equal probability for each possible node\n for (var _i2 = 0; _i2 < numNodes; _i2++) {\n var _n2 = _i2 * numNodes + _j;\n\n matrix[_n2] = p;\n }\n } else {\n // Node jth has outgoing link, compute normalized probabilities\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n var _n3 = _i3 * numNodes + _j;\n\n matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb;\n }\n }\n } // Compute dominant eigenvector using power method\n\n\n var eigenvector = new Array(numNodes);\n var temp = new Array(numNodes);\n var previous; // Start with a vector of all 1's\n // Also, initialize a null vector which will be used as shorthand\n\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n eigenvector[_i4] = 1;\n }\n\n for (var iter = 0; iter < iterations; iter++) {\n // Temp array with all 0's\n for (var _i5 = 0; _i5 < numNodes; _i5++) {\n temp[_i5] = 0;\n } // Multiply matrix with previous result\n\n\n for (var _i6 = 0; _i6 < numNodes; _i6++) {\n for (var _j2 = 0; _j2 < numNodes; _j2++) {\n var _n4 = _i6 * numNodes + _j2;\n\n temp[_i6] += matrix[_n4] * eigenvector[_j2];\n }\n }\n\n inPlaceSumNormalize(temp);\n previous = eigenvector;\n eigenvector = temp;\n temp = previous;\n var diff = 0; // Compute difference (squared module) of both vectors\n\n for (var _i7 = 0; _i7 < numNodes; _i7++) {\n var delta = previous[_i7] - eigenvector[_i7];\n diff += delta * delta;\n } // If difference is less than the desired threshold, stop iterating\n\n\n if (diff < precision) {\n break;\n }\n } // Construct result\n\n\n var res = {\n rank: function rank(node) {\n node = cy.collection(node)[0];\n return eigenvector[nodes.indexOf(node)];\n }\n };\n return res;\n } // pageRank\n\n }; // elesfn\n\n var defaults$f = defaults$g({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n alpha: 0\n });\n var elesfn$n = {\n degreeCentralityNormalized: function degreeCentralityNormalized(options) {\n options = defaults$f(options);\n var cy = this.cy();\n var nodes = this.nodes();\n var numNodes = nodes.length;\n\n if (!options.directed) {\n var degrees = {};\n var maxDegree = 0;\n\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i]; // add current node to the current options object and call degreeCentrality\n\n options.root = node;\n var currDegree = this.degreeCentrality(options);\n\n if (maxDegree < currDegree.degree) {\n maxDegree = currDegree.degree;\n }\n\n degrees[node.id()] = currDegree.degree;\n }\n\n return {\n degree: function degree(node) {\n if (maxDegree === 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return degrees[node.id()] / maxDegree;\n }\n };\n } else {\n var indegrees = {};\n var outdegrees = {};\n var maxIndegree = 0;\n var maxOutdegree = 0;\n\n for (var _i = 0; _i < numNodes; _i++) {\n var _node = nodes[_i];\n\n var id = _node.id(); // add current node to the current options object and call degreeCentrality\n\n\n options.root = _node;\n\n var _currDegree = this.degreeCentrality(options);\n\n if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree;\n if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree;\n indegrees[id] = _currDegree.indegree;\n outdegrees[id] = _currDegree.outdegree;\n }\n\n return {\n indegree: function indegree(node) {\n if (maxIndegree == 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return indegrees[node.id()] / maxIndegree;\n },\n outdegree: function outdegree(node) {\n if (maxOutdegree === 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return outdegrees[node.id()] / maxOutdegree;\n }\n };\n }\n },\n // degreeCentralityNormalized\n // Implemented from the algorithm in Opsahl's paper\n // \"Node centrality in weighted networks: Generalizing degree and shortest paths\"\n // check the heading 2 \"Degree\"\n degreeCentrality: function degreeCentrality(options) {\n options = defaults$f(options);\n var cy = this.cy();\n var callingEles = this;\n var _options = options,\n root = _options.root,\n weight = _options.weight,\n directed = _options.directed,\n alpha = _options.alpha;\n root = cy.collection(root)[0];\n\n if (!directed) {\n var connEdges = root.connectedEdges().intersection(callingEles);\n var k = connEdges.length;\n var s = 0; // Now, sum edge weights\n\n for (var i = 0; i < connEdges.length; i++) {\n s += weight(connEdges[i]);\n }\n\n return {\n degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha)\n };\n } else {\n var edges = root.connectedEdges();\n var incoming = edges.filter(function (edge) {\n return edge.target().same(root) && callingEles.has(edge);\n });\n var outgoing = edges.filter(function (edge) {\n return edge.source().same(root) && callingEles.has(edge);\n });\n var k_in = incoming.length;\n var k_out = outgoing.length;\n var s_in = 0;\n var s_out = 0; // Now, sum incoming edge weights\n\n for (var _i2 = 0; _i2 < incoming.length; _i2++) {\n s_in += weight(incoming[_i2]);\n } // Now, sum outgoing edge weights\n\n\n for (var _i3 = 0; _i3 < outgoing.length; _i3++) {\n s_out += weight(outgoing[_i3]);\n }\n\n return {\n indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha),\n outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha)\n };\n }\n } // degreeCentrality\n\n }; // elesfn\n // nice, short mathematical alias\n\n elesfn$n.dc = elesfn$n.degreeCentrality;\n elesfn$n.dcn = elesfn$n.degreeCentralityNormalised = elesfn$n.degreeCentralityNormalized;\n\n var defaults$e = defaults$g({\n harmonic: true,\n weight: function weight() {\n return 1;\n },\n directed: false,\n root: null\n });\n var elesfn$m = {\n closenessCentralityNormalized: function closenessCentralityNormalized(options) {\n var _defaults = defaults$e(options),\n harmonic = _defaults.harmonic,\n weight = _defaults.weight,\n directed = _defaults.directed;\n\n var cy = this.cy();\n var closenesses = {};\n var maxCloseness = 0;\n var nodes = this.nodes();\n var fw = this.floydWarshall({\n weight: weight,\n directed: directed\n }); // Compute closeness for every node and find the maximum closeness\n\n for (var i = 0; i < nodes.length; i++) {\n var currCloseness = 0;\n var node_i = nodes[i];\n\n for (var j = 0; j < nodes.length; j++) {\n if (i !== j) {\n var d = fw.distance(node_i, nodes[j]);\n\n if (harmonic) {\n currCloseness += 1 / d;\n } else {\n currCloseness += d;\n }\n }\n }\n\n if (!harmonic) {\n currCloseness = 1 / currCloseness;\n }\n\n if (maxCloseness < currCloseness) {\n maxCloseness = currCloseness;\n }\n\n closenesses[node_i.id()] = currCloseness;\n }\n\n return {\n closeness: function closeness(node) {\n if (maxCloseness == 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node)[0].id();\n } else {\n // from is a node\n node = node.id();\n }\n\n return closenesses[node] / maxCloseness;\n }\n };\n },\n // Implemented from pseudocode from wikipedia\n closenessCentrality: function closenessCentrality(options) {\n var _defaults2 = defaults$e(options),\n root = _defaults2.root,\n weight = _defaults2.weight,\n directed = _defaults2.directed,\n harmonic = _defaults2.harmonic;\n\n root = this.filter(root)[0]; // we need distance from this node to every other node\n\n var dijkstra = this.dijkstra({\n root: root,\n weight: weight,\n directed: directed\n });\n var totalDistance = 0;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.same(root)) {\n var d = dijkstra.distanceTo(n);\n\n if (harmonic) {\n totalDistance += 1 / d;\n } else {\n totalDistance += d;\n }\n }\n }\n\n return harmonic ? totalDistance : 1 / totalDistance;\n } // closenessCentrality\n\n }; // elesfn\n // nice, short mathematical alias\n\n elesfn$m.cc = elesfn$m.closenessCentrality;\n elesfn$m.ccn = elesfn$m.closenessCentralityNormalised = elesfn$m.closenessCentralityNormalized;\n\n var defaults$d = defaults$g({\n weight: null,\n directed: false\n });\n var elesfn$l = {\n // Implemented from the algorithm in the paper \"On Variants of Shortest-Path Betweenness Centrality and their Generic Computation\" by Ulrik Brandes\n betweennessCentrality: function betweennessCentrality(options) {\n var _defaults = defaults$d(options),\n directed = _defaults.directed,\n weight = _defaults.weight;\n\n var weighted = weight != null;\n var cy = this.cy(); // starting\n\n var V = this.nodes();\n var A = {};\n var _C = {};\n var max = 0;\n var C = {\n set: function set(key, val) {\n _C[key] = val;\n\n if (val > max) {\n max = val;\n }\n },\n get: function get(key) {\n return _C[key];\n }\n }; // A contains the neighborhoods of every node\n\n for (var i = 0; i < V.length; i++) {\n var v = V[i];\n var vid = v.id();\n\n if (directed) {\n A[vid] = v.outgoers().nodes(); // get outgoers of every node\n } else {\n A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node\n }\n\n C.set(vid, 0);\n }\n\n var _loop = function _loop(s) {\n var sid = V[s].id();\n var S = []; // stack\n\n var P = {};\n var g = {};\n var d = {};\n var Q = new heap(function (a, b) {\n return d[a] - d[b];\n }); // queue\n // init dictionaries\n\n for (var _i = 0; _i < V.length; _i++) {\n var _vid = V[_i].id();\n\n P[_vid] = [];\n g[_vid] = 0;\n d[_vid] = Infinity;\n }\n\n g[sid] = 1; // sigma\n\n d[sid] = 0; // distance to s\n\n Q.push(sid);\n\n while (!Q.empty()) {\n var _v = Q.pop();\n\n S.push(_v);\n\n if (weighted) {\n for (var j = 0; j < A[_v].length; j++) {\n var w = A[_v][j];\n var vEle = cy.getElementById(_v);\n var edge = void 0;\n\n if (vEle.edgesTo(w).length > 0) {\n edge = vEle.edgesTo(w)[0];\n } else {\n edge = w.edgesTo(vEle)[0];\n }\n\n var edgeWeight = weight(edge);\n w = w.id();\n\n if (d[w] > d[_v] + edgeWeight) {\n d[w] = d[_v] + edgeWeight;\n\n if (Q.nodes.indexOf(w) < 0) {\n //if w is not in Q\n Q.push(w);\n } else {\n // update position if w is in Q\n Q.updateItem(w);\n }\n\n g[w] = 0;\n P[w] = [];\n }\n\n if (d[w] == d[_v] + edgeWeight) {\n g[w] = g[w] + g[_v];\n P[w].push(_v);\n }\n }\n } else {\n for (var _j = 0; _j < A[_v].length; _j++) {\n var _w = A[_v][_j].id();\n\n if (d[_w] == Infinity) {\n Q.push(_w);\n d[_w] = d[_v] + 1;\n }\n\n if (d[_w] == d[_v] + 1) {\n g[_w] = g[_w] + g[_v];\n\n P[_w].push(_v);\n }\n }\n }\n }\n\n var e = {};\n\n for (var _i2 = 0; _i2 < V.length; _i2++) {\n e[V[_i2].id()] = 0;\n }\n\n while (S.length > 0) {\n var _w2 = S.pop();\n\n for (var _j2 = 0; _j2 < P[_w2].length; _j2++) {\n var _v2 = P[_w2][_j2];\n e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]);\n }\n\n if (_w2 != V[s].id()) {\n C.set(_w2, C.get(_w2) + e[_w2]);\n }\n }\n };\n\n for (var s = 0; s < V.length; s++) {\n _loop(s);\n }\n\n var ret = {\n betweenness: function betweenness(node) {\n var id = cy.collection(node).id();\n return C.get(id);\n },\n betweennessNormalized: function betweennessNormalized(node) {\n if (max == 0) {\n return 0;\n }\n\n var id = cy.collection(node).id();\n return C.get(id) / max;\n }\n }; // alias\n\n ret.betweennessNormalised = ret.betweennessNormalized;\n return ret;\n } // betweennessCentrality\n\n }; // elesfn\n // nice, short mathematical alias\n\n elesfn$l.bc = elesfn$l.betweennessCentrality;\n\n // Implemented by Zoe Xi @zoexi for GSOC 2016\n /* eslint-disable no-unused-vars */\n\n var defaults$c = defaults$g({\n expandFactor: 2,\n // affects time of computation and cluster granularity to some extent: M * M\n inflateFactor: 2,\n // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j)\n multFactor: 1,\n // optional self loops for each node. Use a neutral value to improve cluster computations.\n maxIterations: 20,\n // maximum number of iterations of the MCL algorithm in a single run\n attributes: [// attributes/features used to group nodes, ie. similarity values between nodes\n function (edge) {\n return 1;\n }]\n });\n /* eslint-enable */\n\n var setOptions$3 = function setOptions(options) {\n return defaults$c(options);\n };\n /* eslint-enable */\n\n\n var getSimilarity$1 = function getSimilarity(edge, attributes) {\n var total = 0;\n\n for (var i = 0; i < attributes.length; i++) {\n total += attributes[i](edge);\n }\n\n return total;\n };\n\n var addLoops = function addLoops(M, n, val) {\n for (var i = 0; i < n; i++) {\n M[i * n + i] = val;\n }\n };\n\n var normalize = function normalize(M, n) {\n var sum;\n\n for (var col = 0; col < n; col++) {\n sum = 0;\n\n for (var row = 0; row < n; row++) {\n sum += M[row * n + col];\n }\n\n for (var _row = 0; _row < n; _row++) {\n M[_row * n + col] = M[_row * n + col] / sum;\n }\n }\n }; // TODO: blocked matrix multiplication?\n\n\n var mmult = function mmult(A, B, n) {\n var C = new Array(n * n);\n\n for (var i = 0; i < n; i++) {\n for (var j = 0; j < n; j++) {\n C[i * n + j] = 0;\n }\n\n for (var k = 0; k < n; k++) {\n for (var _j = 0; _j < n; _j++) {\n C[i * n + _j] += A[i * n + k] * B[k * n + _j];\n }\n }\n }\n\n return C;\n };\n\n var expand = function expand(M, n, expandFactor\n /** power **/\n ) {\n var _M = M.slice(0);\n\n for (var p = 1; p < expandFactor; p++) {\n M = mmult(M, _M, n);\n }\n\n return M;\n };\n\n var inflate = function inflate(M, n, inflateFactor\n /** r **/\n ) {\n var _M = new Array(n * n); // M(i,j) ^ inflatePower\n\n\n for (var i = 0; i < n * n; i++) {\n _M[i] = Math.pow(M[i], inflateFactor);\n }\n\n normalize(_M, n);\n return _M;\n };\n\n var hasConverged = function hasConverged(M, _M, n2, roundFactor) {\n // Check that both matrices have the same elements (i,j)\n for (var i = 0; i < n2; i++) {\n var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places\n\n var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor);\n\n if (v1 !== v2) {\n return false;\n }\n }\n\n return true;\n };\n\n var assign$2 = function assign(M, n, nodes, cy) {\n var clusters = [];\n\n for (var i = 0; i < n; i++) {\n var cluster = [];\n\n for (var j = 0; j < n; j++) {\n // Row-wise attractors and elements that they attract belong in same cluster\n if (Math.round(M[i * n + j] * 1000) / 1000 > 0) {\n cluster.push(nodes[j]);\n }\n }\n\n if (cluster.length !== 0) {\n clusters.push(cy.collection(cluster));\n }\n }\n\n return clusters;\n };\n\n var isDuplicate = function isDuplicate(c1, c2) {\n for (var i = 0; i < c1.length; i++) {\n if (!c2[i] || c1[i].id() !== c2[i].id()) {\n return false;\n }\n }\n\n return true;\n };\n\n var removeDuplicates = function removeDuplicates(clusters) {\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j < clusters.length; j++) {\n if (i != j && isDuplicate(clusters[i], clusters[j])) {\n clusters.splice(j, 1);\n }\n }\n }\n\n return clusters;\n };\n\n var markovClustering = function markovClustering(options) {\n var nodes = this.nodes();\n var edges = this.edges();\n var cy = this.cy(); // Set parameters of algorithm:\n\n var opts = setOptions$3(options); // Map each node to its position in node array\n\n var id2position = {};\n\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n } // Generate stochastic matrix M from input graph G (should be symmetric/undirected)\n\n\n var n = nodes.length,\n n2 = n * n;\n\n var M = new Array(n2),\n _M;\n\n for (var _i = 0; _i < n2; _i++) {\n M[_i] = 0;\n }\n\n for (var e = 0; e < edges.length; e++) {\n var edge = edges[e];\n var _i2 = id2position[edge.source().id()];\n var j = id2position[edge.target().id()];\n var sim = getSimilarity$1(edge, opts.attributes);\n M[_i2 * n + j] += sim; // G should be symmetric and undirected\n\n M[j * n + _i2] += sim;\n } // Begin Markov cluster algorithm\n // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal\n\n\n addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M );\n\n normalize(M, n);\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false; // Step 3:\n\n _M = expand(M, n, opts.expandFactor); // Step 4:\n\n M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached\n\n if (!hasConverged(M, _M, n2, 4)) {\n isStillMoving = true;\n }\n\n iterations++;\n } // Build clusters from matrix\n\n\n var clusters = assign$2(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix\n\n clusters = removeDuplicates(clusters);\n return clusters;\n };\n\n var markovClustering$1 = {\n markovClustering: markovClustering,\n mcl: markovClustering\n };\n\n // Common distance metrics for clustering algorithms\n\n var identity = function identity(x) {\n return x;\n };\n\n var absDiff = function absDiff(p, q) {\n return Math.abs(q - p);\n };\n\n var addAbsDiff = function addAbsDiff(total, p, q) {\n return total + absDiff(p, q);\n };\n\n var addSquaredDiff = function addSquaredDiff(total, p, q) {\n return total + Math.pow(q - p, 2);\n };\n\n var sqrt = function sqrt(x) {\n return Math.sqrt(x);\n };\n\n var maxAbsDiff = function maxAbsDiff(currentMax, p, q) {\n return Math.max(currentMax, absDiff(p, q));\n };\n\n var getDistance = function getDistance(length, getP, getQ, init, visit) {\n var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity;\n var ret = init;\n var p, q;\n\n for (var dim = 0; dim < length; dim++) {\n p = getP(dim);\n q = getQ(dim);\n ret = visit(ret, p, q);\n }\n\n return post(ret);\n };\n\n var distances = {\n euclidean: function euclidean(length, getP, getQ) {\n if (length >= 2) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt);\n } else {\n // for single attr case, more efficient to avoid sqrt\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n }\n },\n squaredEuclidean: function squaredEuclidean(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff);\n },\n manhattan: function manhattan(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n },\n max: function max(length, getP, getQ) {\n return getDistance(length, getP, getQ, -Infinity, maxAbsDiff);\n }\n }; // in case the user accidentally doesn't use camel case\n\n distances['squared-euclidean'] = distances['squaredEuclidean'];\n distances['squaredeuclidean'] = distances['squaredEuclidean'];\n function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) {\n var impl;\n\n if (fn$6(method)) {\n impl = method;\n } else {\n impl = distances[method] || distances.euclidean;\n }\n\n if (length === 0 && fn$6(method)) {\n return impl(nodeP, nodeQ);\n } else {\n return impl(length, getP, getQ, nodeP, nodeQ);\n }\n }\n\n var defaults$b = defaults$g({\n k: 2,\n m: 2,\n sensitivityThreshold: 0.0001,\n distance: 'euclidean',\n maxIterations: 10,\n attributes: [],\n testMode: false,\n testCentroids: null\n });\n\n var setOptions$2 = function setOptions(options) {\n return defaults$b(options);\n };\n /* eslint-enable */\n\n\n var getDist = function getDist(type, node, centroid, attributes, mode) {\n var noNodeP = mode !== 'kMedoids';\n var getP = noNodeP ? function (i) {\n return centroid[i];\n } : function (i) {\n return attributes[i](centroid);\n };\n\n var getQ = function getQ(i) {\n return attributes[i](node);\n };\n\n var nodeP = centroid;\n var nodeQ = node;\n return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ);\n };\n\n var randomCentroids = function randomCentroids(nodes, k, attributes) {\n var ndim = attributes.length;\n var min = new Array(ndim);\n var max = new Array(ndim);\n var centroids = new Array(k);\n var centroid = null; // Find min, max values for each attribute dimension\n\n for (var i = 0; i < ndim; i++) {\n min[i] = nodes.min(attributes[i]).value;\n max[i] = nodes.max(attributes[i]).value;\n } // Build k centroids, each represented as an n-dim feature vector\n\n\n for (var c = 0; c < k; c++) {\n centroid = [];\n\n for (var _i = 0; _i < ndim; _i++) {\n centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value\n }\n\n centroids[c] = centroid;\n }\n\n return centroids;\n };\n\n var classify = function classify(node, centroids, distance, attributes, type) {\n var min = Infinity;\n var index = 0;\n\n for (var i = 0; i < centroids.length; i++) {\n var dist = getDist(distance, node, centroids[i], attributes, type);\n\n if (dist < min) {\n min = dist;\n index = i;\n }\n }\n\n return index;\n };\n\n var buildCluster = function buildCluster(centroid, nodes, assignment) {\n var cluster = [];\n var node = null;\n\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n];\n\n if (assignment[node.id()] === centroid) {\n //console.log(\"Node \" + node.id() + \" is associated with medoid #: \" + m);\n cluster.push(node);\n }\n }\n\n return cluster;\n };\n\n var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) {\n return Math.abs(v2 - v1) <= sensitivityThreshold;\n };\n\n var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) {\n for (var i = 0; i < v1.length; i++) {\n for (var j = 0; j < v1[i].length; j++) {\n var diff = Math.abs(v1[i][j] - v2[i][j]);\n\n if (diff > sensitivityThreshold) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n var seenBefore = function seenBefore(node, medoids, n) {\n for (var i = 0; i < n; i++) {\n if (node === medoids[i]) return true;\n }\n\n return false;\n };\n\n var randomMedoids = function randomMedoids(nodes, k) {\n var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater,\n // so we need to check to see if we've already seen or chose this node before.\n\n if (nodes.length < 50) {\n // Randomly select k medoids from the n nodes\n for (var i = 0; i < k; i++) {\n var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets).\n // Instead choose a different random node.\n\n while (seenBefore(node, medoids, i)) {\n node = nodes[Math.floor(Math.random() * nodes.length)];\n }\n\n medoids[i] = node;\n }\n } else {\n // Relatively large data set, so pretty safe to not check and just select random nodes\n for (var _i2 = 0; _i2 < k; _i2++) {\n medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)];\n }\n }\n\n return medoids;\n };\n\n var findCost = function findCost(potentialNewMedoid, cluster, attributes) {\n var cost = 0;\n\n for (var n = 0; n < cluster.length; n++) {\n cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids');\n }\n\n return cost;\n };\n\n var kMeans = function kMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc.\n\n var opts = setOptions$2(options); // Begin k-means algorithm\n\n var clusters = new Array(opts.k);\n var assignment = {};\n var centroids; // Step 1: Initialize centroid positions\n\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') {\n // TODO: implement a seeded random number generator.\n opts.testCentroids;\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n } else if (_typeof(opts.testCentroids) === 'object') {\n centroids = opts.testCentroids;\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest centroid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #\n\n assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans');\n } // Step 3: For each of the k clusters, update its centroid\n\n\n isStillMoving = false;\n\n for (var c = 0; c < opts.k; c++) {\n // Get all nodes that belong to this cluster\n var cluster = buildCluster(c, nodes, assignment);\n\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n } // Update centroids by calculating avg of all nodes within the cluster.\n\n\n var ndim = opts.attributes.length;\n var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ]\n\n var newCentroid = new Array(ndim);\n var sum = new Array(ndim);\n\n for (var d = 0; d < ndim; d++) {\n sum[d] = 0.0;\n\n for (var i = 0; i < cluster.length; i++) {\n node = cluster[i];\n sum[d] += opts.attributes[d](node);\n }\n\n newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change\n\n if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n }\n\n centroids[c] = newCentroid;\n clusters[c] = cy.collection(cluster);\n }\n\n iterations++;\n }\n\n return clusters;\n };\n\n var kMedoids = function kMedoids(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null;\n var opts = setOptions$2(options); // Begin k-medoids algorithm\n\n var clusters = new Array(opts.k);\n var medoids;\n var assignment = {};\n var curCost;\n var minCosts = new Array(opts.k); // minimum cost configuration for each cluster\n // Step 1: Initialize k medoids\n\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') {\n medoids = opts.testCentroids;\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest medoid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #\n\n assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids');\n }\n\n isStillMoving = false; // Step 3: For each medoid m, and for each node associated with mediod m,\n // select the node with the lowest configuration cost as new medoid.\n\n for (var m = 0; m < medoids.length; m++) {\n // Get all nodes that belong to this medoid\n var cluster = buildCluster(m, nodes, assignment);\n\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n }\n\n minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost\n // Select different medoid if its configuration has the lowest cost\n\n for (var _n = 0; _n < cluster.length; _n++) {\n curCost = findCost(cluster[_n], cluster, opts.attributes);\n\n if (curCost < minCosts[m]) {\n minCosts[m] = curCost;\n medoids[m] = cluster[_n];\n isStillMoving = true;\n }\n }\n\n clusters[m] = cy.collection(cluster);\n }\n\n iterations++;\n }\n\n return clusters;\n };\n\n var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) {\n var numerator, denominator;\n\n for (var n = 0; n < nodes.length; n++) {\n for (var c = 0; c < centroids.length; c++) {\n weight[n][c] = Math.pow(U[n][c], opts.m);\n }\n }\n\n for (var _c = 0; _c < centroids.length; _c++) {\n for (var dim = 0; dim < opts.attributes.length; dim++) {\n numerator = 0;\n denominator = 0;\n\n for (var _n2 = 0; _n2 < nodes.length; _n2++) {\n numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]);\n denominator += weight[_n2][_c];\n }\n\n centroids[_c][dim] = numerator / denominator;\n }\n }\n };\n\n var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) {\n // Save previous step\n for (var i = 0; i < U.length; i++) {\n _U[i] = U[i].slice();\n }\n\n var sum, numerator, denominator;\n var pow = 2 / (opts.m - 1);\n\n for (var c = 0; c < centroids.length; c++) {\n for (var n = 0; n < nodes.length; n++) {\n sum = 0;\n\n for (var k = 0; k < centroids.length; k++) {\n // against all other centroids\n numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans');\n denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans');\n sum += Math.pow(numerator / denominator, pow);\n }\n\n U[n][c] = 1 / sum;\n }\n }\n };\n\n var assign$1 = function assign(nodes, U, opts, cy) {\n var clusters = new Array(opts.k);\n\n for (var c = 0; c < clusters.length; c++) {\n clusters[c] = [];\n }\n\n var max;\n var index;\n\n for (var n = 0; n < U.length; n++) {\n // for each node (U is N x C matrix)\n max = -Infinity;\n index = -1; // Determine which cluster the node is most likely to belong in\n\n for (var _c2 = 0; _c2 < U[0].length; _c2++) {\n if (U[n][_c2] > max) {\n max = U[n][_c2];\n index = _c2;\n }\n }\n\n clusters[index].push(nodes[n]);\n } // Turn every array into a collection of nodes\n\n\n for (var _c3 = 0; _c3 < clusters.length; _c3++) {\n clusters[_c3] = cy.collection(clusters[_c3]);\n }\n\n return clusters;\n };\n\n var fuzzyCMeans = function fuzzyCMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions$2(options); // Begin fuzzy c-means algorithm\n\n var clusters;\n var centroids;\n var U;\n\n var _U;\n\n var weight; // Step 1: Initialize letiables.\n\n _U = new Array(nodes.length);\n\n for (var i = 0; i < nodes.length; i++) {\n // N x C matrix\n _U[i] = new Array(opts.k);\n }\n\n U = new Array(nodes.length);\n\n for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n // N x C matrix\n U[_i3] = new Array(opts.k);\n }\n\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var total = 0;\n\n for (var j = 0; j < opts.k; j++) {\n U[_i4][j] = Math.random();\n total += U[_i4][j];\n }\n\n for (var _j = 0; _j < opts.k; _j++) {\n U[_i4][_j] = U[_i4][_j] / total;\n }\n }\n\n centroids = new Array(opts.k);\n\n for (var _i5 = 0; _i5 < opts.k; _i5++) {\n centroids[_i5] = new Array(opts.attributes.length);\n }\n\n weight = new Array(nodes.length);\n\n for (var _i6 = 0; _i6 < nodes.length; _i6++) {\n // N x C matrix\n weight[_i6] = new Array(opts.k);\n } // end init FCM\n\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false; // Step 2: Calculate the centroids for each step.\n\n updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U.\n\n updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence.\n\n if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n\n iterations++;\n } // Assign nodes to clusters with highest probability.\n\n\n clusters = assign$1(nodes, U, opts, cy);\n return {\n clusters: clusters,\n degreeOfMembership: U\n };\n };\n\n var kClustering = {\n kMeans: kMeans,\n kMedoids: kMedoids,\n fuzzyCMeans: fuzzyCMeans,\n fcm: fuzzyCMeans\n };\n\n // Implemented by Zoe Xi @zoexi for GSOC 2016\n var defaults$a = defaults$g({\n distance: 'euclidean',\n // distance metric to compare nodes\n linkage: 'min',\n // linkage criterion : how to determine the distance between clusters of nodes\n mode: 'threshold',\n // mode:'threshold' => clusters must be threshold distance apart\n threshold: Infinity,\n // the distance threshold\n // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters\n addDendrogram: false,\n // whether to add the dendrogram to the graph for viz\n dendrogramDepth: 0,\n // depth at which dendrogram branches are merged into the returned clusters\n attributes: [] // array of attr functions\n\n });\n var linkageAliases = {\n 'single': 'min',\n 'complete': 'max'\n };\n\n var setOptions$1 = function setOptions(options) {\n var opts = defaults$a(options);\n var preferredAlias = linkageAliases[opts.linkage];\n\n if (preferredAlias != null) {\n opts.linkage = preferredAlias;\n }\n\n return opts;\n };\n\n var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) {\n // Find two closest clusters from cached mins\n var minKey = 0;\n var min = Infinity;\n var dist;\n var attrs = opts.attributes;\n\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n };\n\n for (var i = 0; i < clusters.length; i++) {\n var key = clusters[i].key;\n var _dist = dists[key][mins[key]];\n\n if (_dist < min) {\n minKey = key;\n min = _dist;\n }\n }\n\n if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) {\n return false;\n }\n\n var c1 = index[minKey];\n var c2 = index[mins[minKey]];\n var merged; // Merge two closest clusters\n\n if (opts.mode === 'dendrogram') {\n merged = {\n left: c1,\n right: c2,\n key: c1.key\n };\n } else {\n merged = {\n value: c1.value.concat(c2.value),\n key: c1.key\n };\n }\n\n clusters[c1.index] = merged;\n clusters.splice(c2.index, 1);\n index[c1.key] = merged; // Update distances with new merged cluster\n\n for (var _i = 0; _i < clusters.length; _i++) {\n var cur = clusters[_i];\n\n if (c1.key === cur.key) {\n dist = Infinity;\n } else if (opts.linkage === 'min') {\n dist = dists[c1.key][cur.key];\n\n if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'max') {\n dist = dists[c1.key][cur.key];\n\n if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'mean') {\n dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size);\n } else {\n if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]);\n }\n\n dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric\n } // Update cached mins\n\n\n for (var _i2 = 0; _i2 < clusters.length; _i2++) {\n var key1 = clusters[_i2].key;\n\n if (mins[key1] === c1.key || mins[key1] === c2.key) {\n var _min = key1;\n\n for (var j = 0; j < clusters.length; j++) {\n var key2 = clusters[j].key;\n\n if (dists[key1][key2] < dists[key1][_min]) {\n _min = key2;\n }\n }\n\n mins[key1] = _min;\n }\n\n clusters[_i2].index = _i2;\n } // Clean up meta data used for clustering\n\n\n c1.key = c2.key = c1.index = c2.index = null;\n return true;\n };\n\n var getAllChildren = function getAllChildren(root, arr, cy) {\n if (!root) return;\n\n if (root.value) {\n arr.push(root.value);\n } else {\n if (root.left) getAllChildren(root.left, arr);\n if (root.right) getAllChildren(root.right, arr);\n }\n };\n\n var buildDendrogram = function buildDendrogram(root, cy) {\n if (!root) return '';\n\n if (root.left && root.right) {\n var leftStr = buildDendrogram(root.left, cy);\n var rightStr = buildDendrogram(root.right, cy);\n var node = cy.add({\n group: 'nodes',\n data: {\n id: leftStr + ',' + rightStr\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: leftStr,\n target: node.id()\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: rightStr,\n target: node.id()\n }\n });\n return node.id();\n } else if (root.value) {\n return root.value.id();\n }\n };\n\n var buildClustersFromTree = function buildClustersFromTree(root, k, cy) {\n if (!root) return [];\n var left = [],\n right = [],\n leaves = [];\n\n if (k === 0) {\n // don't cut tree, simply return all nodes as 1 single cluster\n if (root.left) getAllChildren(root.left, left);\n if (root.right) getAllChildren(root.right, right);\n leaves = left.concat(right);\n return [cy.collection(leaves)];\n } else if (k === 1) {\n // cut at root\n if (root.value) {\n // leaf node\n return [cy.collection(root.value)];\n } else {\n if (root.left) getAllChildren(root.left, left);\n if (root.right) getAllChildren(root.right, right);\n return [cy.collection(left), cy.collection(right)];\n }\n } else {\n if (root.value) {\n return [cy.collection(root.value)];\n } else {\n if (root.left) left = buildClustersFromTree(root.left, k - 1, cy);\n if (root.right) right = buildClustersFromTree(root.right, k - 1, cy);\n return left.concat(right);\n }\n }\n };\n /* eslint-enable */\n\n\n var hierarchicalClustering = function hierarchicalClustering(options) {\n var cy = this.cy();\n var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc.\n\n var opts = setOptions$1(options);\n var attrs = opts.attributes;\n\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n }; // Begin hierarchical algorithm\n\n\n var clusters = [];\n var dists = []; // distances between each pair of clusters\n\n var mins = []; // closest cluster for each cluster\n\n var index = []; // hash of all clusters by key\n // In agglomerative (bottom-up) clustering, each node starts as its own cluster\n\n for (var n = 0; n < nodes.length; n++) {\n var cluster = {\n value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]],\n key: n,\n index: n\n };\n clusters[n] = cluster;\n index[n] = cluster;\n dists[n] = [];\n mins[n] = 0;\n } // Calculate the distance between each pair of clusters\n\n\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j <= i; j++) {\n var dist = void 0;\n\n if (opts.mode === 'dendrogram') {\n // modes store cluster values differently\n dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value);\n } else {\n dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]);\n }\n\n dists[i][j] = dist;\n dists[j][i] = dist;\n\n if (dist < dists[i][mins[i]]) {\n mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j\n }\n }\n } // Find the closest pair of clusters and merge them into a single cluster.\n // Update distances between new cluster and each of the old clusters, and loop until threshold reached.\n\n\n var merged = mergeClosest(clusters, index, dists, mins, opts);\n\n while (merged) {\n merged = mergeClosest(clusters, index, dists, mins, opts);\n }\n\n var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges\n // in addition to returning the clusters.\n\n if (opts.mode === 'dendrogram') {\n retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy);\n if (opts.addDendrogram) buildDendrogram(clusters[0], cy);\n } else {\n // Regular mode simply returns the clusters\n retClusters = new Array(clusters.length);\n clusters.forEach(function (cluster, i) {\n // Clean up meta data used for clustering\n cluster.key = cluster.index = null;\n retClusters[i] = cy.collection(cluster.value);\n });\n }\n\n return retClusters;\n };\n\n var hierarchicalClustering$1 = {\n hierarchicalClustering: hierarchicalClustering,\n hca: hierarchicalClustering\n };\n\n // Implemented by Zoe Xi @zoexi for GSOC 2016\n var defaults$9 = defaults$g({\n distance: 'euclidean',\n // distance metric to compare attributes between two nodes\n preference: 'median',\n // suitability of a data point to serve as an exemplar\n damping: 0.8,\n // damping factor between [0.5, 1)\n maxIterations: 1000,\n // max number of iterations to run\n minIterations: 100,\n // min number of iterations to run in order for clustering to stop\n attributes: [// functions to quantify the similarity between any two points\n // e.g. node => node.data('weight')\n ]\n });\n\n var setOptions = function setOptions(options) {\n var dmp = options.damping;\n var pref = options.preference;\n\n if (!(0.5 <= dmp && dmp < 1)) {\n error(\"Damping must range on [0.5, 1). Got: \".concat(dmp));\n }\n\n var validPrefs = ['median', 'mean', 'min', 'max'];\n\n if (!(validPrefs.some(function (v) {\n return v === pref;\n }) || number$1(pref))) {\n error(\"Preference must be one of [\".concat(validPrefs.map(function (p) {\n return \"'\".concat(p, \"'\");\n }).join(', '), \"] or a number. Got: \").concat(pref));\n }\n\n return defaults$9(options);\n };\n /* eslint-enable */\n\n\n var getSimilarity = function getSimilarity(type, n1, n2, attributes) {\n var attr = function attr(n, i) {\n return attributes[i](n);\n }; // nb negative because similarity should have an inverse relationship to distance\n\n\n return -clusteringDistance(type, attributes.length, function (i) {\n return attr(n1, i);\n }, function (i) {\n return attr(n2, i);\n }, n1, n2);\n };\n\n var getPreference = function getPreference(S, preference) {\n // larger preference = greater # of clusters\n var p = null;\n\n if (preference === 'median') {\n p = median(S);\n } else if (preference === 'mean') {\n p = mean(S);\n } else if (preference === 'min') {\n p = min(S);\n } else if (preference === 'max') {\n p = max(S);\n } else {\n // Custom preference number, as set by user\n p = preference;\n }\n\n return p;\n };\n\n var findExemplars = function findExemplars(n, R, A) {\n var indices = [];\n\n for (var i = 0; i < n; i++) {\n if (R[i * n + i] + A[i * n + i] > 0) {\n indices.push(i);\n }\n }\n\n return indices;\n };\n\n var assignClusters = function assignClusters(n, S, exemplars) {\n var clusters = [];\n\n for (var i = 0; i < n; i++) {\n var index = -1;\n var max = -Infinity;\n\n for (var ei = 0; ei < exemplars.length; ei++) {\n var e = exemplars[ei];\n\n if (S[i * n + e] > max) {\n index = e;\n max = S[i * n + e];\n }\n }\n\n if (index > 0) {\n clusters.push(index);\n }\n }\n\n for (var _ei = 0; _ei < exemplars.length; _ei++) {\n clusters[exemplars[_ei]] = exemplars[_ei];\n }\n\n return clusters;\n };\n\n var assign = function assign(n, S, exemplars) {\n var clusters = assignClusters(n, S, exemplars);\n\n for (var ei = 0; ei < exemplars.length; ei++) {\n var ii = [];\n\n for (var c = 0; c < clusters.length; c++) {\n if (clusters[c] === exemplars[ei]) {\n ii.push(c);\n }\n }\n\n var maxI = -1;\n var maxSum = -Infinity;\n\n for (var i = 0; i < ii.length; i++) {\n var sum = 0;\n\n for (var j = 0; j < ii.length; j++) {\n sum += S[ii[j] * n + ii[i]];\n }\n\n if (sum > maxSum) {\n maxI = i;\n maxSum = sum;\n }\n }\n\n exemplars[ei] = ii[maxI];\n }\n\n clusters = assignClusters(n, S, exemplars);\n return clusters;\n };\n\n var affinityPropagation = function affinityPropagation(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions(options); // Map each node to its position in node array\n\n var id2position = {};\n\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n } // Begin affinity propagation algorithm\n\n\n var n; // number of data points\n\n var n2; // size of matrices\n\n var S; // similarity matrix (1D array)\n\n var p; // preference/suitability of a data point to serve as an exemplar\n\n var R; // responsibility matrix (1D array)\n\n var A; // availability matrix (1D array)\n\n n = nodes.length;\n n2 = n * n; // Initialize and build S similarity matrix\n\n S = new Array(n2);\n\n for (var _i = 0; _i < n2; _i++) {\n S[_i] = -Infinity; // for cases where two data points shouldn't be linked together\n }\n\n for (var _i2 = 0; _i2 < n; _i2++) {\n for (var j = 0; j < n; j++) {\n if (_i2 !== j) {\n S[_i2 * n + j] = getSimilarity(opts.distance, nodes[_i2], nodes[j], opts.attributes);\n }\n }\n } // Place preferences on the diagonal of S\n\n\n p = getPreference(S, opts.preference);\n\n for (var _i3 = 0; _i3 < n; _i3++) {\n S[_i3 * n + _i3] = p;\n } // Initialize R responsibility matrix\n\n\n R = new Array(n2);\n\n for (var _i4 = 0; _i4 < n2; _i4++) {\n R[_i4] = 0.0;\n } // Initialize A availability matrix\n\n\n A = new Array(n2);\n\n for (var _i5 = 0; _i5 < n2; _i5++) {\n A[_i5] = 0.0;\n }\n\n var old = new Array(n);\n var Rp = new Array(n);\n var se = new Array(n);\n\n for (var _i6 = 0; _i6 < n; _i6++) {\n old[_i6] = 0.0;\n Rp[_i6] = 0.0;\n se[_i6] = 0;\n }\n\n var e = new Array(n * opts.minIterations);\n\n for (var _i7 = 0; _i7 < e.length; _i7++) {\n e[_i7] = 0;\n }\n\n var iter;\n\n for (iter = 0; iter < opts.maxIterations; iter++) {\n // main algorithmic loop\n // Update R responsibility matrix\n for (var _i8 = 0; _i8 < n; _i8++) {\n var max = -Infinity,\n max2 = -Infinity,\n maxI = -1,\n AS = 0.0;\n\n for (var _j = 0; _j < n; _j++) {\n old[_j] = R[_i8 * n + _j];\n AS = A[_i8 * n + _j] + S[_i8 * n + _j];\n\n if (AS >= max) {\n max2 = max;\n max = AS;\n maxI = _j;\n } else if (AS > max2) {\n max2 = AS;\n }\n }\n\n for (var _j2 = 0; _j2 < n; _j2++) {\n R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2];\n }\n\n R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI];\n } // Update A availability matrix\n\n\n for (var _i9 = 0; _i9 < n; _i9++) {\n var sum = 0;\n\n for (var _j3 = 0; _j3 < n; _j3++) {\n old[_j3] = A[_j3 * n + _i9];\n Rp[_j3] = Math.max(0, R[_j3 * n + _i9]);\n sum += Rp[_j3];\n }\n\n sum -= Rp[_i9];\n Rp[_i9] = R[_i9 * n + _i9];\n sum += Rp[_i9];\n\n for (var _j4 = 0; _j4 < n; _j4++) {\n A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4];\n }\n\n A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9];\n } // Check for convergence\n\n\n var K = 0;\n\n for (var _i10 = 0; _i10 < n; _i10++) {\n var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0;\n e[iter % opts.minIterations * n + _i10] = E;\n K += E;\n }\n\n if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) {\n var _sum = 0;\n\n for (var _i11 = 0; _i11 < n; _i11++) {\n se[_i11] = 0;\n\n for (var _j5 = 0; _j5 < opts.minIterations; _j5++) {\n se[_i11] += e[_j5 * n + _i11];\n }\n\n if (se[_i11] === 0 || se[_i11] === opts.minIterations) {\n _sum++;\n }\n }\n\n if (_sum === n) {\n // then we have convergence\n break;\n }\n }\n } // Identify exemplars (cluster centers)\n\n\n var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters\n\n var clusterIndices = assign(n, S, exemplarsIndices);\n var clusters = {};\n\n for (var c = 0; c < exemplarsIndices.length; c++) {\n clusters[exemplarsIndices[c]] = [];\n }\n\n for (var _i12 = 0; _i12 < nodes.length; _i12++) {\n var pos = id2position[nodes[_i12].id()];\n\n var clusterIndex = clusterIndices[pos];\n\n if (clusterIndex != null) {\n // the node may have not been assigned a cluster if no valid attributes were specified\n clusters[clusterIndex].push(nodes[_i12]);\n }\n }\n\n var retClusters = new Array(exemplarsIndices.length);\n\n for (var _c = 0; _c < exemplarsIndices.length; _c++) {\n retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]);\n }\n\n return retClusters;\n };\n\n var affinityPropagation$1 = {\n affinityPropagation: affinityPropagation,\n ap: affinityPropagation\n };\n\n var hierholzerDefaults = defaults$g({\n root: undefined,\n directed: false\n });\n var elesfn$k = {\n hierholzer: function hierholzer(options) {\n if (!plainObject(options)) {\n var args = arguments;\n options = {\n root: args[0],\n directed: args[1]\n };\n }\n\n var _hierholzerDefaults = hierholzerDefaults(options),\n root = _hierholzerDefaults.root,\n directed = _hierholzerDefaults.directed;\n\n var eles = this;\n var dflag = false;\n var oddIn;\n var oddOut;\n var startVertex;\n if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id();\n var nodes = {};\n var edges = {};\n\n if (directed) {\n eles.forEach(function (ele) {\n var id = ele.id();\n\n if (ele.isNode()) {\n var ind = ele.indegree(true);\n var outd = ele.outdegree(true);\n var d1 = ind - outd;\n var d2 = outd - ind;\n\n if (d1 == 1) {\n if (oddIn) dflag = true;else oddIn = id;\n } else if (d2 == 1) {\n if (oddOut) dflag = true;else oddOut = id;\n } else if (d2 > 1 || d1 > 1) {\n dflag = true;\n }\n\n nodes[id] = [];\n ele.outgoers().forEach(function (e) {\n if (e.isEdge()) nodes[id].push(e.id());\n });\n } else {\n edges[id] = [undefined, ele.target().id()];\n }\n });\n } else {\n eles.forEach(function (ele) {\n var id = ele.id();\n\n if (ele.isNode()) {\n var d = ele.degree(true);\n\n if (d % 2) {\n if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true;\n }\n\n nodes[id] = [];\n ele.connectedEdges().forEach(function (e) {\n return nodes[id].push(e.id());\n });\n } else {\n edges[id] = [ele.source().id(), ele.target().id()];\n }\n });\n }\n\n var result = {\n found: false,\n trail: undefined\n };\n if (dflag) return result;else if (oddOut && oddIn) {\n if (directed) {\n if (startVertex && oddOut != startVertex) {\n return result;\n }\n\n startVertex = oddOut;\n } else {\n if (startVertex && oddOut != startVertex && oddIn != startVertex) {\n return result;\n } else if (!startVertex) {\n startVertex = oddOut;\n }\n }\n } else {\n if (!startVertex) startVertex = eles[0].id();\n }\n\n var walk = function walk(v) {\n var currentNode = v;\n var subtour = [v];\n var adj, adjTail, adjHead;\n\n while (nodes[currentNode].length) {\n adj = nodes[currentNode].shift();\n adjTail = edges[adj][0];\n adjHead = edges[adj][1];\n\n if (currentNode != adjHead) {\n nodes[adjHead] = nodes[adjHead].filter(function (e) {\n return e != adj;\n });\n currentNode = adjHead;\n } else if (!directed && currentNode != adjTail) {\n nodes[adjTail] = nodes[adjTail].filter(function (e) {\n return e != adj;\n });\n currentNode = adjTail;\n }\n\n subtour.unshift(adj);\n subtour.unshift(currentNode);\n }\n\n return subtour;\n };\n\n var trail = [];\n var subtour = [];\n subtour = walk(startVertex);\n\n while (subtour.length != 1) {\n if (nodes[subtour[0]].length == 0) {\n trail.unshift(eles.getElementById(subtour.shift()));\n trail.unshift(eles.getElementById(subtour.shift()));\n } else {\n subtour = walk(subtour.shift()).concat(subtour);\n }\n }\n\n trail.unshift(eles.getElementById(subtour.shift())); // final node\n\n for (var d in nodes) {\n if (nodes[d].length) {\n return result;\n }\n }\n\n result.found = true;\n result.trail = this.spawn(trail, true);\n return result;\n }\n };\n\n var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() {\n var eles = this;\n var nodes = {};\n var id = 0;\n var edgeCount = 0;\n var components = [];\n var stack = [];\n var visitedEdges = {};\n\n var buildComponent = function buildComponent(x, y) {\n var i = stack.length - 1;\n var cutset = [];\n var component = eles.spawn();\n\n while (stack[i].x != x || stack[i].y != y) {\n cutset.push(stack.pop().edge);\n i--;\n }\n\n cutset.push(stack.pop().edge);\n cutset.forEach(function (edge) {\n var connectedNodes = edge.connectedNodes().intersection(eles);\n component.merge(edge);\n connectedNodes.forEach(function (node) {\n var nodeId = node.id();\n var connectedEdges = node.connectedEdges().intersection(eles);\n component.merge(node);\n\n if (!nodes[nodeId].cutVertex) {\n component.merge(connectedEdges);\n } else {\n component.merge(connectedEdges.filter(function (edge) {\n return edge.isLoop();\n }));\n }\n });\n });\n components.push(component);\n };\n\n var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) {\n if (root === parent) edgeCount += 1;\n nodes[currentNode] = {\n id: id,\n low: id++,\n cutVertex: false\n };\n var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles);\n\n if (edges.size() === 0) {\n components.push(eles.spawn(eles.getElementById(currentNode)));\n } else {\n var sourceId, targetId, otherNodeId, edgeId;\n edges.forEach(function (edge) {\n sourceId = edge.source().id();\n targetId = edge.target().id();\n otherNodeId = sourceId === currentNode ? targetId : sourceId;\n\n if (otherNodeId !== parent) {\n edgeId = edge.id();\n\n if (!visitedEdges[edgeId]) {\n visitedEdges[edgeId] = true;\n stack.push({\n x: currentNode,\n y: otherNodeId,\n edge: edge\n });\n }\n\n if (!(otherNodeId in nodes)) {\n biconnectedSearch(root, otherNodeId, currentNode);\n nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low);\n\n if (nodes[currentNode].id <= nodes[otherNodeId].low) {\n nodes[currentNode].cutVertex = true;\n buildComponent(currentNode, otherNodeId);\n }\n } else {\n nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id);\n }\n }\n });\n }\n };\n\n eles.forEach(function (ele) {\n if (ele.isNode()) {\n var nodeId = ele.id();\n\n if (!(nodeId in nodes)) {\n edgeCount = 0;\n biconnectedSearch(nodeId, nodeId);\n nodes[nodeId].cutVertex = edgeCount > 1;\n }\n }\n });\n var cutVertices = Object.keys(nodes).filter(function (id) {\n return nodes[id].cutVertex;\n }).map(function (id) {\n return eles.getElementById(id);\n });\n return {\n cut: eles.spawn(cutVertices),\n components: components\n };\n };\n\n var hopcroftTarjanBiconnected$1 = {\n hopcroftTarjanBiconnected: hopcroftTarjanBiconnected,\n htbc: hopcroftTarjanBiconnected,\n htb: hopcroftTarjanBiconnected,\n hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected\n };\n\n var tarjanStronglyConnected = function tarjanStronglyConnected() {\n var eles = this;\n var nodes = {};\n var index = 0;\n var components = [];\n var stack = [];\n var cut = eles.spawn(eles);\n\n var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) {\n stack.push(sourceNodeId);\n nodes[sourceNodeId] = {\n index: index,\n low: index++,\n explored: false\n };\n var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles);\n connectedEdges.forEach(function (edge) {\n var targetNodeId = edge.target().id();\n\n if (targetNodeId !== sourceNodeId) {\n if (!(targetNodeId in nodes)) {\n stronglyConnectedSearch(targetNodeId);\n }\n\n if (!nodes[targetNodeId].explored) {\n nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low);\n }\n }\n });\n\n if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) {\n var componentNodes = eles.spawn();\n\n for (;;) {\n var nodeId = stack.pop();\n componentNodes.merge(eles.getElementById(nodeId));\n nodes[nodeId].low = nodes[sourceNodeId].index;\n nodes[nodeId].explored = true;\n\n if (nodeId === sourceNodeId) {\n break;\n }\n }\n\n var componentEdges = componentNodes.edgesWith(componentNodes);\n var component = componentNodes.merge(componentEdges);\n components.push(component);\n cut = cut.difference(component);\n }\n };\n\n eles.forEach(function (ele) {\n if (ele.isNode()) {\n var nodeId = ele.id();\n\n if (!(nodeId in nodes)) {\n stronglyConnectedSearch(nodeId);\n }\n }\n });\n return {\n cut: cut,\n components: components\n };\n };\n\n var tarjanStronglyConnected$1 = {\n tarjanStronglyConnected: tarjanStronglyConnected,\n tsc: tarjanStronglyConnected,\n tscc: tarjanStronglyConnected,\n tarjanStronglyConnectedComponents: tarjanStronglyConnected\n };\n\n var elesfn$j = {};\n [elesfn$v, elesfn$u, elesfn$t, elesfn$s, elesfn$r, elesfn$q, elesfn$p, elesfn$o, elesfn$n, elesfn$m, elesfn$l, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$k, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) {\n extend(elesfn$j, props);\n });\n\n /*!\n Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable\n Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)\n Licensed under The MIT License (http://opensource.org/licenses/MIT)\n */\n\n /* promise states [Promises/A+ 2.1] */\n var STATE_PENDING = 0;\n /* [Promises/A+ 2.1.1] */\n\n var STATE_FULFILLED = 1;\n /* [Promises/A+ 2.1.2] */\n\n var STATE_REJECTED = 2;\n /* [Promises/A+ 2.1.3] */\n\n /* promise object constructor */\n\n var api = function api(executor) {\n /* optionally support non-constructor/plain-function call */\n if (!(this instanceof api)) return new api(executor);\n /* initialize object */\n\n this.id = 'Thenable/1.0.7';\n this.state = STATE_PENDING;\n /* initial state */\n\n this.fulfillValue = undefined;\n /* initial value */\n\n /* [Promises/A+ 1.3, 2.1.2.2] */\n\n this.rejectReason = undefined;\n /* initial reason */\n\n /* [Promises/A+ 1.5, 2.1.3.2] */\n\n this.onFulfilled = [];\n /* initial handlers */\n\n this.onRejected = [];\n /* initial handlers */\n\n /* provide optional information-hiding proxy */\n\n this.proxy = {\n then: this.then.bind(this)\n };\n /* support optional executor function */\n\n if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this));\n };\n /* promise API methods */\n\n\n api.prototype = {\n /* promise resolving methods */\n fulfill: function fulfill(value) {\n return deliver(this, STATE_FULFILLED, 'fulfillValue', value);\n },\n reject: function reject(value) {\n return deliver(this, STATE_REJECTED, 'rejectReason', value);\n },\n\n /* \"The then Method\" [Promises/A+ 1.1, 1.2, 2.2] */\n then: function then(onFulfilled, onRejected) {\n var curr = this;\n var next = new api();\n /* [Promises/A+ 2.2.7] */\n\n curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill'));\n /* [Promises/A+ 2.2.2/2.2.6] */\n\n curr.onRejected.push(resolver(onRejected, next, 'reject'));\n /* [Promises/A+ 2.2.3/2.2.6] */\n\n execute(curr);\n return next.proxy;\n /* [Promises/A+ 2.2.7, 3.3] */\n }\n };\n /* deliver an action */\n\n var deliver = function deliver(curr, state, name, value) {\n if (curr.state === STATE_PENDING) {\n curr.state = state;\n /* [Promises/A+ 2.1.2.1, 2.1.3.1] */\n\n curr[name] = value;\n /* [Promises/A+ 2.1.2.2, 2.1.3.2] */\n\n execute(curr);\n }\n\n return curr;\n };\n /* execute all handlers */\n\n\n var execute = function execute(curr) {\n if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason);\n };\n /* execute particular set of handlers */\n\n\n var execute_handlers = function execute_handlers(curr, name, value) {\n /* global setImmediate: true */\n\n /* global setTimeout: true */\n\n /* short-circuit processing */\n if (curr[name].length === 0) return;\n /* iterate over all handlers, exactly once */\n\n var handlers = curr[name];\n curr[name] = [];\n /* [Promises/A+ 2.2.2.3, 2.2.3.3] */\n\n var func = function func() {\n for (var i = 0; i < handlers.length; i++) {\n handlers[i](value);\n }\n /* [Promises/A+ 2.2.5] */\n\n };\n /* execute procedure asynchronously */\n\n /* [Promises/A+ 2.2.4, 3.1] */\n\n\n if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0);\n };\n /* generate a resolver function */\n\n\n var resolver = function resolver(cb, next, method) {\n return function (value) {\n if (typeof cb !== 'function')\n /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */\n next[method].call(next, value);\n /* [Promises/A+ 2.2.7.3, 2.2.7.4] */\n else {\n var result;\n\n try {\n result = cb(value);\n }\n /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */\n catch (e) {\n next.reject(e);\n /* [Promises/A+ 2.2.7.2] */\n\n return;\n }\n\n resolve(next, result);\n /* [Promises/A+ 2.2.7.1] */\n }\n };\n };\n /* \"Promise Resolution Procedure\" */\n\n /* [Promises/A+ 2.3] */\n\n\n var resolve = function resolve(promise, x) {\n /* sanity check arguments */\n\n /* [Promises/A+ 2.3.1] */\n if (promise === x || promise.proxy === x) {\n promise.reject(new TypeError('cannot resolve promise with itself'));\n return;\n }\n /* surgically check for a \"then\" method\n (mainly to just call the \"getter\" of \"then\" only once) */\n\n\n var then;\n\n if (_typeof(x) === 'object' && x !== null || typeof x === 'function') {\n try {\n then = x.then;\n }\n /* [Promises/A+ 2.3.3.1, 3.5] */\n catch (e) {\n promise.reject(e);\n /* [Promises/A+ 2.3.3.2] */\n\n return;\n }\n }\n /* handle own Thenables [Promises/A+ 2.3.2]\n and similar \"thenables\" [Promises/A+ 2.3.3] */\n\n\n if (typeof then === 'function') {\n var resolved = false;\n\n try {\n /* call retrieved \"then\" method */\n\n /* [Promises/A+ 2.3.3.3] */\n then.call(x,\n /* resolvePromise */\n\n /* [Promises/A+ 2.3.3.3.1] */\n function (y) {\n if (resolved) return;\n resolved = true;\n /* [Promises/A+ 2.3.3.3.3] */\n\n if (y === x)\n /* [Promises/A+ 3.6] */\n promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y);\n },\n /* rejectPromise */\n\n /* [Promises/A+ 2.3.3.3.2] */\n function (r) {\n if (resolved) return;\n resolved = true;\n /* [Promises/A+ 2.3.3.3.3] */\n\n promise.reject(r);\n });\n } catch (e) {\n if (!resolved)\n /* [Promises/A+ 2.3.3.3.3] */\n promise.reject(e);\n /* [Promises/A+ 2.3.3.3.4] */\n }\n\n return;\n }\n /* handle other values */\n\n\n promise.fulfill(x);\n /* [Promises/A+ 2.3.4, 2.3.3.4] */\n }; // so we always have Promise.all()\n\n\n api.all = function (ps) {\n return new api(function (resolveAll, rejectAll) {\n var vals = new Array(ps.length);\n var doneCount = 0;\n\n var fulfill = function fulfill(i, val) {\n vals[i] = val;\n doneCount++;\n\n if (doneCount === ps.length) {\n resolveAll(vals);\n }\n };\n\n for (var i = 0; i < ps.length; i++) {\n (function (i) {\n var p = ps[i];\n var isPromise = p != null && p.then != null;\n\n if (isPromise) {\n p.then(function (val) {\n fulfill(i, val);\n }, function (err) {\n rejectAll(err);\n });\n } else {\n var val = p;\n fulfill(i, val);\n }\n })(i);\n }\n });\n };\n\n api.resolve = function (val) {\n return new api(function (resolve, reject) {\n resolve(val);\n });\n };\n\n api.reject = function (val) {\n return new api(function (resolve, reject) {\n reject(val);\n });\n };\n\n var Promise$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef\n\n var Animation = function Animation(target, opts, opts2) {\n var isCore = core(target);\n var isEle = !isCore;\n\n var _p = this._private = extend({\n duration: 1000\n }, opts, opts2);\n\n _p.target = target;\n _p.style = _p.style || _p.css;\n _p.started = false;\n _p.playing = false;\n _p.hooked = false;\n _p.applying = false;\n _p.progress = 0;\n _p.completes = [];\n _p.frames = [];\n\n if (_p.complete && fn$6(_p.complete)) {\n _p.completes.push(_p.complete);\n }\n\n if (isEle) {\n var pos = target.position();\n _p.startPosition = _p.startPosition || {\n x: pos.x,\n y: pos.y\n };\n _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);\n }\n\n if (isCore) {\n var pan = target.pan();\n _p.startPan = {\n x: pan.x,\n y: pan.y\n };\n _p.startZoom = target.zoom();\n } // for future timeline/animations impl\n\n\n this.length = 1;\n this[0] = this;\n };\n\n var anifn = Animation.prototype;\n extend(anifn, {\n instanceString: function instanceString() {\n return 'animation';\n },\n hook: function hook() {\n var _p = this._private;\n\n if (!_p.hooked) {\n // add to target's animation queue\n var q;\n var tAni = _p.target._private.animation;\n\n if (_p.queue) {\n q = tAni.queue;\n } else {\n q = tAni.current;\n }\n\n q.push(this); // add to the animation loop pool\n\n if (elementOrCollection(_p.target)) {\n _p.target.cy().addToAnimationPool(_p.target);\n }\n\n _p.hooked = true;\n }\n\n return this;\n },\n play: function play() {\n var _p = this._private; // autorewind\n\n if (_p.progress === 1) {\n _p.progress = 0;\n }\n\n _p.playing = true;\n _p.started = false; // needs to be started by animation loop\n\n _p.stopped = false;\n this.hook(); // the animation loop will start the animation...\n\n return this;\n },\n playing: function playing() {\n return this._private.playing;\n },\n apply: function apply() {\n var _p = this._private;\n _p.applying = true;\n _p.started = false; // needs to be started by animation loop\n\n _p.stopped = false;\n this.hook(); // the animation loop will apply the animation at this progress\n\n return this;\n },\n applying: function applying() {\n return this._private.applying;\n },\n pause: function pause() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n return this;\n },\n stop: function stop() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n _p.stopped = true; // to be removed from animation queues\n\n return this;\n },\n rewind: function rewind() {\n return this.progress(0);\n },\n fastforward: function fastforward() {\n return this.progress(1);\n },\n time: function time(t) {\n var _p = this._private;\n\n if (t === undefined) {\n return _p.progress * _p.duration;\n } else {\n return this.progress(t / _p.duration);\n }\n },\n progress: function progress(p) {\n var _p = this._private;\n var wasPlaying = _p.playing;\n\n if (p === undefined) {\n return _p.progress;\n } else {\n if (wasPlaying) {\n this.pause();\n }\n\n _p.progress = p;\n _p.started = false;\n\n if (wasPlaying) {\n this.play();\n }\n }\n\n return this;\n },\n completed: function completed() {\n return this._private.progress === 1;\n },\n reverse: function reverse() {\n var _p = this._private;\n var wasPlaying = _p.playing;\n\n if (wasPlaying) {\n this.pause();\n }\n\n _p.progress = 1 - _p.progress;\n _p.started = false;\n\n var swap = function swap(a, b) {\n var _pa = _p[a];\n\n if (_pa == null) {\n return;\n }\n\n _p[a] = _p[b];\n _p[b] = _pa;\n };\n\n swap('zoom', 'startZoom');\n swap('pan', 'startPan');\n swap('position', 'startPosition'); // swap styles\n\n if (_p.style) {\n for (var i = 0; i < _p.style.length; i++) {\n var prop = _p.style[i];\n var name = prop.name;\n var startStyleProp = _p.startStyle[name];\n _p.startStyle[name] = prop;\n _p.style[i] = startStyleProp;\n }\n }\n\n if (wasPlaying) {\n this.play();\n }\n\n return this;\n },\n promise: function promise(type) {\n var _p = this._private;\n var arr;\n\n switch (type) {\n case 'frame':\n arr = _p.frames;\n break;\n\n default:\n case 'complete':\n case 'completed':\n arr = _p.completes;\n }\n\n return new Promise$1(function (resolve, reject) {\n arr.push(function () {\n resolve();\n });\n });\n }\n });\n anifn.complete = anifn.completed;\n anifn.run = anifn.play;\n anifn.running = anifn.playing;\n\n var define$3 = {\n animated: function animated() {\n return function animatedImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = all[0];\n\n if (ele) {\n return ele._private.animation.current.length > 0;\n }\n };\n },\n // animated\n clearQueue: function clearQueue() {\n return function clearQueueImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n ele._private.animation.queue = [];\n }\n\n return this;\n };\n },\n // clearQueue\n delay: function delay() {\n return function delayImpl(time, complete) {\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n return this.animate({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n delayAnimation: function delayAnimation() {\n return function delayAnimationImpl(time, complete) {\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n return this.animation({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n animation: function animation() {\n return function animationImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n var isCore = !selfIsArrayLike;\n var isEles = !isCore;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var style = cy.style();\n properties = extend({}, properties, params);\n var propertiesEmpty = Object.keys(properties).length === 0;\n\n if (propertiesEmpty) {\n return new Animation(all[0], properties); // nothing to animate\n }\n\n if (properties.duration === undefined) {\n properties.duration = 400;\n }\n\n switch (properties.duration) {\n case 'slow':\n properties.duration = 600;\n break;\n\n case 'fast':\n properties.duration = 200;\n break;\n }\n\n if (isEles) {\n properties.style = style.getPropsList(properties.style || properties.css);\n properties.css = undefined;\n }\n\n if (isEles && properties.renderedPosition != null) {\n var rpos = properties.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n properties.position = renderedToModelPosition(rpos, zoom, pan);\n } // override pan w/ panBy if set\n\n\n if (isCore && properties.panBy != null) {\n var panBy = properties.panBy;\n var cyPan = cy.pan();\n properties.pan = {\n x: cyPan.x + panBy.x,\n y: cyPan.y + panBy.y\n };\n } // override pan w/ center if set\n\n\n var center = properties.center || properties.centre;\n\n if (isCore && center != null) {\n var centerPan = cy.getCenterPan(center.eles, properties.zoom);\n\n if (centerPan != null) {\n properties.pan = centerPan;\n }\n } // override pan & zoom w/ fit if set\n\n\n if (isCore && properties.fit != null) {\n var fit = properties.fit;\n var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding);\n\n if (fitVp != null) {\n properties.pan = fitVp.pan;\n properties.zoom = fitVp.zoom;\n }\n } // override zoom (& potentially pan) w/ zoom obj if set\n\n\n if (isCore && plainObject(properties.zoom)) {\n var vp = cy.getZoomedViewport(properties.zoom);\n\n if (vp != null) {\n if (vp.zoomed) {\n properties.zoom = vp.zoom;\n }\n\n if (vp.panned) {\n properties.pan = vp.pan;\n }\n } else {\n properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed\n }\n }\n\n return new Animation(all[0], properties);\n };\n },\n // animate\n animate: function animate() {\n return function animateImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n if (params) {\n properties = extend({}, properties, params);\n } // manually hook and run the animation\n\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var queue = ele.animated() && (properties.queue === undefined || properties.queue);\n var ani = ele.animation(properties, queue ? {\n queue: true\n } : undefined);\n ani.play();\n }\n\n return this; // chaining\n };\n },\n // animate\n stop: function stop() {\n return function stopImpl(clearQueue, jumpToEnd) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var _p = ele._private;\n var anis = _p.animation.current;\n\n for (var j = 0; j < anis.length; j++) {\n var ani = anis[j];\n var ani_p = ani._private;\n\n if (jumpToEnd) {\n // next iteration of the animation loop, the animation\n // will go straight to the end and be removed\n ani_p.duration = 0;\n }\n } // clear the queue of future animations\n\n\n if (clearQueue) {\n _p.animation.queue = [];\n }\n\n if (!jumpToEnd) {\n _p.animation.current = [];\n }\n } // we have to notify (the animation loop doesn't do it for us on `stop`)\n\n\n cy.notify('draw');\n return this;\n };\n } // stop\n\n }; // define\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n var isArray_1 = isArray;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray_1(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol_1(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n var _isKey = isKey;\n\n /** `Object#toString` result references. */\n var asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject_1(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = _baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n var isFunction_1 = isFunction;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = _root['__core-js_shared__'];\n\n var _coreJsData = coreJsData;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData && _coreJsData.keys && _coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n var _isMasked = isMasked;\n\n /** Used for built-in method references. */\n var funcProto$1 = Function.prototype;\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString$1 = funcProto$1.toString;\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString$1.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n var _toSource = toSource;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used for built-in method references. */\n var funcProto = Function.prototype,\n objectProto$3 = Object.prototype;\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty$3 = objectProto$3.hasOwnProperty;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty$3).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject_1(value) || _isMasked(value)) {\n return false;\n }\n var pattern = isFunction_1(value) ? reIsNative : reIsHostCtor;\n return pattern.test(_toSource(value));\n }\n\n var _baseIsNative = baseIsNative;\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue$1(object, key) {\n return object == null ? undefined : object[key];\n }\n\n var _getValue = getValue$1;\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = _getValue(object, key);\n return _baseIsNative(value) ? value : undefined;\n }\n\n var _getNative = getNative;\n\n /* Built-in method references that are verified to be native. */\n var nativeCreate = _getNative(Object, 'create');\n\n var _nativeCreate = nativeCreate;\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = _nativeCreate ? _nativeCreate(null) : {};\n this.size = 0;\n }\n\n var _hashClear = hashClear;\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n var _hashDelete = hashDelete;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED$1 = '__lodash_hash_undefined__';\n\n /** Used for built-in method references. */\n var objectProto$2 = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty$2 = objectProto$2.hasOwnProperty;\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED$1 ? undefined : result;\n }\n return hasOwnProperty$2.call(data, key) ? data[key] : undefined;\n }\n\n var _hashGet = hashGet;\n\n /** Used for built-in method references. */\n var objectProto$1 = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty$1 = objectProto$1.hasOwnProperty;\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$1.call(data, key);\n }\n\n var _hashHas = hashHas;\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n var _hashSet = hashSet;\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = _hashClear;\n Hash.prototype['delete'] = _hashDelete;\n Hash.prototype.get = _hashGet;\n Hash.prototype.has = _hashHas;\n Hash.prototype.set = _hashSet;\n\n var _Hash = Hash;\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n var _listCacheClear = listCacheClear;\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n var eq_1 = eq;\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq_1(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n var _assocIndexOf = assocIndexOf;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype;\n\n /** Built-in value references. */\n var splice = arrayProto.splice;\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n var _listCacheDelete = listCacheDelete;\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n var _listCacheGet = listCacheGet;\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return _assocIndexOf(this.__data__, key) > -1;\n }\n\n var _listCacheHas = listCacheHas;\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = _assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n var _listCacheSet = listCacheSet;\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = _listCacheClear;\n ListCache.prototype['delete'] = _listCacheDelete;\n ListCache.prototype.get = _listCacheGet;\n ListCache.prototype.has = _listCacheHas;\n ListCache.prototype.set = _listCacheSet;\n\n var _ListCache = ListCache;\n\n /* Built-in method references that are verified to be native. */\n var Map$1 = _getNative(_root, 'Map');\n\n var _Map = Map$1;\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash,\n 'map': new (_Map || _ListCache),\n 'string': new _Hash\n };\n }\n\n var _mapCacheClear = mapCacheClear;\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n var _isKeyable = isKeyable;\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return _isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n var _getMapData = getMapData;\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = _getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n var _mapCacheDelete = mapCacheDelete;\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return _getMapData(this, key).get(key);\n }\n\n var _mapCacheGet = mapCacheGet;\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return _getMapData(this, key).has(key);\n }\n\n var _mapCacheHas = mapCacheHas;\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = _getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n var _mapCacheSet = mapCacheSet;\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = _mapCacheClear;\n MapCache.prototype['delete'] = _mapCacheDelete;\n MapCache.prototype.get = _mapCacheGet;\n MapCache.prototype.has = _mapCacheHas;\n MapCache.prototype.set = _mapCacheSet;\n\n var _MapCache = MapCache;\n\n /** Error message constants. */\n var FUNC_ERROR_TEXT = 'Expected a function';\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = _MapCache;\n\n var memoize_1 = memoize;\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize_1(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n var _memoizeCapped = memoizeCapped;\n\n /** Used to match property names within property paths. */\n var rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = _memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n var _stringToPath = stringToPath;\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n var _arrayMap = arrayMap;\n\n /** Used as references for various `Number` constants. */\n var INFINITY$1 = 1 / 0;\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray_1(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return _arrayMap(value, baseToString) + '';\n }\n if (isSymbol_1(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY$1) ? '-0' : result;\n }\n\n var _baseToString = baseToString;\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString$1(value) {\n return value == null ? '' : _baseToString(value);\n }\n\n var toString_1 = toString$1;\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray_1(value)) {\n return value;\n }\n return _isKey(value, object) ? [value] : _stringToPath(toString_1(value));\n }\n\n var _castPath = castPath;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0;\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol_1(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n var _toKey = toKey;\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = _castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[_toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n var _baseGet = baseGet;\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : _baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n var get_1 = get;\n\n var defineProperty = (function() {\n try {\n var func = _getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n var _defineProperty = defineProperty;\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && _defineProperty) {\n _defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n var _baseAssignValue = baseAssignValue;\n\n /** Used for built-in method references. */\n var objectProto = Object.prototype;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq_1(objValue, value)) ||\n (value === undefined && !(key in object))) {\n _baseAssignValue(object, key, value);\n }\n }\n\n var _assignValue = assignValue;\n\n /** Used as references for various `Number` constants. */\n var MAX_SAFE_INTEGER = 9007199254740991;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n var _isIndex = isIndex;\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject_1(object)) {\n return object;\n }\n path = _castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = _toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject_1(objValue)\n ? objValue\n : (_isIndex(path[index + 1]) ? [] : {});\n }\n }\n _assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n var _baseSet = baseSet;\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : _baseSet(object, path, value);\n }\n\n var set_1 = set;\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n var _copyArray = copyArray;\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray_1(value)) {\n return _arrayMap(value, _toKey);\n }\n return isSymbol_1(value) ? [value] : _copyArray(_stringToPath(toString_1(value)));\n }\n\n var toPath_1 = toPath;\n\n var define$2 = {\n // access data field\n data: function data(params) {\n var defaults = {\n field: 'data',\n bindingEvent: 'data',\n allowBinding: false,\n allowSetting: false,\n allowGetting: false,\n settingEvent: 'data',\n settingTriggersEvent: false,\n triggerFnName: 'trigger',\n immutableKeys: {},\n // key => true if immutable\n updateStyle: false,\n beforeGet: function beforeGet(self) {},\n beforeSet: function beforeSet(self, obj) {},\n onSet: function onSet(self) {},\n canSet: function canSet(self) {\n return true;\n }\n };\n params = extend({}, defaults, params);\n return function dataImpl(name, value) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...)\n\n if (string(name)) {\n // set or get property\n var isPathLike = name.indexOf('.') !== -1; // there might be a normal field with a dot \n\n var path = isPathLike && toPath_1(name); // .data('foo')\n\n if (p.allowGetting && value === undefined) {\n // get\n var ret;\n\n if (single) {\n p.beforeGet(single); // check if it's path and a field with the same name doesn't exist\n\n if (path && single._private[p.field][name] === undefined) {\n ret = get_1(single._private[p.field], path);\n } else {\n ret = single._private[p.field][name];\n }\n }\n\n return ret; // .data('foo', 'bar')\n } else if (p.allowSetting && value !== undefined) {\n // set\n var valid = !p.immutableKeys[name];\n\n if (valid) {\n var change = _defineProperty$1({}, name, value);\n\n p.beforeSet(self, change);\n\n for (var i = 0, l = all.length; i < l; i++) {\n var ele = all[i];\n\n if (p.canSet(ele)) {\n if (path && single._private[p.field][name] === undefined) {\n set_1(ele._private[p.field], path, value);\n } else {\n ele._private[p.field][name] = value;\n }\n }\n } // update mappers if asked\n\n\n if (p.updateStyle) {\n self.updateStyle();\n } // call onSet callback\n\n\n p.onSet(self);\n\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n }\n }\n } // .data({ 'foo': 'bar' })\n\n } else if (p.allowSetting && plainObject(name)) {\n // extend\n var obj = name;\n var k, v;\n var keys = Object.keys(obj);\n p.beforeSet(self, obj);\n\n for (var _i = 0; _i < keys.length; _i++) {\n k = keys[_i];\n v = obj[k];\n\n var _valid = !p.immutableKeys[k];\n\n if (_valid) {\n for (var j = 0; j < all.length; j++) {\n var _ele = all[j];\n\n if (p.canSet(_ele)) {\n _ele._private[p.field][k] = v;\n }\n }\n }\n } // update mappers if asked\n\n\n if (p.updateStyle) {\n self.updateStyle();\n } // call onSet callback\n\n\n p.onSet(self);\n\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n } // .data(function(){ ... })\n\n } else if (p.allowBinding && fn$6(name)) {\n // bind to event\n var fn = name;\n self.on(p.bindingEvent, fn); // .data()\n } else if (p.allowGetting && name === undefined) {\n // get whole object\n var _ret;\n\n if (single) {\n p.beforeGet(single);\n _ret = single._private[p.field];\n }\n\n return _ret;\n }\n\n return self; // maintain chainability\n }; // function\n },\n // data\n // remove data field\n removeData: function removeData(params) {\n var defaults = {\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: false,\n immutableKeys: {} // key => true if immutable\n\n };\n params = extend({}, defaults, params);\n return function removeDataImpl(names) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n // .removeData('foo bar')\n\n if (string(names)) {\n // then get the list of keys, and delete them\n var keys = names.split(/\\s+/);\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n // delete each non-empty key\n var key = keys[i];\n\n if (emptyString(key)) {\n continue;\n }\n\n var valid = !p.immutableKeys[key]; // not valid if immutable\n\n if (valid) {\n for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) {\n all[i_a]._private[p.field][key] = undefined;\n }\n }\n }\n\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n } // .removeData()\n\n } else if (names === undefined) {\n // then delete all keys\n for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) {\n var _privateFields = all[_i_a]._private[p.field];\n\n var _keys = Object.keys(_privateFields);\n\n for (var _i2 = 0; _i2 < _keys.length; _i2++) {\n var _key = _keys[_i2];\n var validKeyToDelete = !p.immutableKeys[_key];\n\n if (validKeyToDelete) {\n _privateFields[_key] = undefined;\n }\n }\n }\n\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n }\n }\n\n return self; // maintain chaining\n }; // function\n } // removeData\n\n }; // define\n\n var define$1 = {\n eventAliasesOn: function eventAliasesOn(proto) {\n var p = proto;\n p.addListener = p.listen = p.bind = p.on;\n p.unlisten = p.unbind = p.off = p.removeListener;\n p.trigger = p.emit; // this is just a wrapper alias of .on()\n\n p.pon = p.promiseOn = function (events, selector) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 0);\n return new Promise$1(function (resolve, reject) {\n var callback = function callback(e) {\n self.off.apply(self, offArgs);\n resolve(e);\n };\n\n var onArgs = args.concat([callback]);\n var offArgs = onArgs.concat([]);\n self.on.apply(self, onArgs);\n });\n };\n }\n }; // define\n\n // use this module to cherry pick functions into your prototype\n var define = {};\n [define$3, define$2, define$1].forEach(function (m) {\n extend(define, m);\n });\n\n var elesfn$i = {\n animate: define.animate(),\n animation: define.animation(),\n animated: define.animated(),\n clearQueue: define.clearQueue(),\n delay: define.delay(),\n delayAnimation: define.delayAnimation(),\n stop: define.stop()\n };\n\n var elesfn$h = {\n classes: function classes(_classes) {\n var self = this;\n\n if (_classes === undefined) {\n var ret = [];\n\n self[0]._private.classes.forEach(function (cls) {\n return ret.push(cls);\n });\n\n return ret;\n } else if (!array(_classes)) {\n // extract classes from string\n _classes = (_classes || '').match(/\\S+/g) || [];\n }\n\n var changed = [];\n var classesSet = new Set$1(_classes); // check and update each ele\n\n for (var j = 0; j < self.length; j++) {\n var ele = self[j];\n var _p = ele._private;\n var eleClasses = _p.classes;\n var changedEle = false; // check if ele has all of the passed classes\n\n for (var i = 0; i < _classes.length; i++) {\n var cls = _classes[i];\n var eleHasClass = eleClasses.has(cls);\n\n if (!eleHasClass) {\n changedEle = true;\n break;\n }\n } // check if ele has classes outside of those passed\n\n\n if (!changedEle) {\n changedEle = eleClasses.size !== _classes.length;\n }\n\n if (changedEle) {\n _p.classes = classesSet;\n changed.push(ele);\n }\n } // trigger update style on those eles that had class changes\n\n\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n\n return self;\n },\n addClass: function addClass(classes) {\n return this.toggleClass(classes, true);\n },\n hasClass: function hasClass(className) {\n var ele = this[0];\n return ele != null && ele._private.classes.has(className);\n },\n toggleClass: function toggleClass(classes, toggle) {\n if (!array(classes)) {\n // extract classes from string\n classes = classes.match(/\\S+/g) || [];\n }\n\n var self = this;\n var toggleUndefd = toggle === undefined;\n var changed = []; // eles who had classes changed\n\n for (var i = 0, il = self.length; i < il; i++) {\n var ele = self[i];\n var eleClasses = ele._private.classes;\n var changedEle = false;\n\n for (var j = 0; j < classes.length; j++) {\n var cls = classes[j];\n var hasClass = eleClasses.has(cls);\n var changedNow = false;\n\n if (toggle || toggleUndefd && !hasClass) {\n eleClasses.add(cls);\n changedNow = true;\n } else if (!toggle || toggleUndefd && hasClass) {\n eleClasses[\"delete\"](cls);\n changedNow = true;\n }\n\n if (!changedEle && changedNow) {\n changed.push(ele);\n changedEle = true;\n }\n } // for j classes\n\n } // for i eles\n // trigger update style on those eles that had class changes\n\n\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n\n return self;\n },\n removeClass: function removeClass(classes) {\n return this.toggleClass(classes, false);\n },\n flashClass: function flashClass(classes, duration) {\n var self = this;\n\n if (duration == null) {\n duration = 250;\n } else if (duration === 0) {\n return self; // nothing to do really\n }\n\n self.addClass(classes);\n setTimeout(function () {\n self.removeClass(classes);\n }, duration);\n return self;\n }\n };\n elesfn$h.className = elesfn$h.classNames = elesfn$h.classes;\n\n var tokens = {\n metaChar: '[\\\\!\\\\\"\\\\#\\\\$\\\\%\\\\&\\\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\.\\\\/\\\\:\\\\;\\\\<\\\\=\\\\>\\\\?\\\\@\\\\[\\\\]\\\\^\\\\`\\\\{\\\\|\\\\}\\\\~]',\n // chars we need to escape in let names, etc\n comparatorOp: '=|\\\\!=|>|>=|<|<=|\\\\$=|\\\\^=|\\\\*=',\n // binary comparison op (used in data selectors)\n boolOp: '\\\\?|\\\\!|\\\\^',\n // boolean (unary) operators (used in data selectors)\n string: '\"(?:\\\\\\\\\"|[^\"])*\"' + '|' + \"'(?:\\\\\\\\'|[^'])*'\",\n // string literals (used in data selectors) -- doublequotes | singlequotes\n number: number,\n // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123\n meta: 'degree|indegree|outdegree',\n // allowed metadata fields (i.e. allowed functions to use from Collection)\n separator: '\\\\s*,\\\\s*',\n // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass\n descendant: '\\\\s+',\n child: '\\\\s+>\\\\s+',\n subject: '\\\\$',\n group: 'node|edge|\\\\*',\n directedEdge: '\\\\s+->\\\\s+',\n undirectedEdge: '\\\\s+<->\\\\s+'\n };\n tokens.variable = '(?:[\\\\w-.]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a variable name can have letters, numbers, dashes, and periods\n\n tokens.className = '(?:[\\\\w-]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a class name has the same rules as a variable except it can't have a '.' in the name\n\n tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number\n\n tokens.id = tokens.variable; // an element id (follows variable conventions)\n\n (function () {\n var ops, op, i; // add @ variants to comparatorOp\n\n ops = tokens.comparatorOp.split('|');\n\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n tokens.comparatorOp += '|@' + op;\n } // add ! variants to comparatorOp\n\n\n ops = tokens.comparatorOp.split('|');\n\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n\n if (op.indexOf('!') >= 0) {\n continue;\n } // skip ops that explicitly contain !\n\n\n if (op === '=') {\n continue;\n } // skip = b/c != is explicitly defined\n\n\n tokens.comparatorOp += '|\\\\!' + op;\n }\n })();\n\n /**\n * Make a new query object\n *\n * @prop type {Type} The type enum (int) of the query\n * @prop checks List of checks to make against an ele to test for a match\n */\n var newQuery = function newQuery() {\n return {\n checks: []\n };\n };\n\n /**\n * A check type enum-like object. Uses integer values for fast match() lookup.\n * The ordering does not matter as long as the ints are unique.\n */\n var Type = {\n /** E.g. node */\n GROUP: 0,\n\n /** A collection of elements */\n COLLECTION: 1,\n\n /** A filter(ele) function */\n FILTER: 2,\n\n /** E.g. [foo > 1] */\n DATA_COMPARE: 3,\n\n /** E.g. [foo] */\n DATA_EXIST: 4,\n\n /** E.g. [?foo] */\n DATA_BOOL: 5,\n\n /** E.g. [[degree > 2]] */\n META_COMPARE: 6,\n\n /** E.g. :selected */\n STATE: 7,\n\n /** E.g. #foo */\n ID: 8,\n\n /** E.g. .foo */\n CLASS: 9,\n\n /** E.g. #foo <-> #bar */\n UNDIRECTED_EDGE: 10,\n\n /** E.g. #foo -> #bar */\n DIRECTED_EDGE: 11,\n\n /** E.g. $#foo -> #bar */\n NODE_SOURCE: 12,\n\n /** E.g. #foo -> $#bar */\n NODE_TARGET: 13,\n\n /** E.g. $#foo <-> #bar */\n NODE_NEIGHBOR: 14,\n\n /** E.g. #foo > #bar */\n CHILD: 15,\n\n /** E.g. #foo #bar */\n DESCENDANT: 16,\n\n /** E.g. $#foo > #bar */\n PARENT: 17,\n\n /** E.g. $#foo #bar */\n ANCESTOR: 18,\n\n /** E.g. #foo > $bar > #baz */\n COMPOUND_SPLIT: 19,\n\n /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */\n TRUE: 20\n };\n\n var stateSelectors = [{\n selector: ':selected',\n matches: function matches(ele) {\n return ele.selected();\n }\n }, {\n selector: ':unselected',\n matches: function matches(ele) {\n return !ele.selected();\n }\n }, {\n selector: ':selectable',\n matches: function matches(ele) {\n return ele.selectable();\n }\n }, {\n selector: ':unselectable',\n matches: function matches(ele) {\n return !ele.selectable();\n }\n }, {\n selector: ':locked',\n matches: function matches(ele) {\n return ele.locked();\n }\n }, {\n selector: ':unlocked',\n matches: function matches(ele) {\n return !ele.locked();\n }\n }, {\n selector: ':visible',\n matches: function matches(ele) {\n return ele.visible();\n }\n }, {\n selector: ':hidden',\n matches: function matches(ele) {\n return !ele.visible();\n }\n }, {\n selector: ':transparent',\n matches: function matches(ele) {\n return ele.transparent();\n }\n }, {\n selector: ':grabbed',\n matches: function matches(ele) {\n return ele.grabbed();\n }\n }, {\n selector: ':free',\n matches: function matches(ele) {\n return !ele.grabbed();\n }\n }, {\n selector: ':removed',\n matches: function matches(ele) {\n return ele.removed();\n }\n }, {\n selector: ':inside',\n matches: function matches(ele) {\n return !ele.removed();\n }\n }, {\n selector: ':grabbable',\n matches: function matches(ele) {\n return ele.grabbable();\n }\n }, {\n selector: ':ungrabbable',\n matches: function matches(ele) {\n return !ele.grabbable();\n }\n }, {\n selector: ':animated',\n matches: function matches(ele) {\n return ele.animated();\n }\n }, {\n selector: ':unanimated',\n matches: function matches(ele) {\n return !ele.animated();\n }\n }, {\n selector: ':parent',\n matches: function matches(ele) {\n return ele.isParent();\n }\n }, {\n selector: ':childless',\n matches: function matches(ele) {\n return ele.isChildless();\n }\n }, {\n selector: ':child',\n matches: function matches(ele) {\n return ele.isChild();\n }\n }, {\n selector: ':orphan',\n matches: function matches(ele) {\n return ele.isOrphan();\n }\n }, {\n selector: ':nonorphan',\n matches: function matches(ele) {\n return ele.isChild();\n }\n }, {\n selector: ':compound',\n matches: function matches(ele) {\n if (ele.isNode()) {\n return ele.isParent();\n } else {\n return ele.source().isParent() || ele.target().isParent();\n }\n }\n }, {\n selector: ':loop',\n matches: function matches(ele) {\n return ele.isLoop();\n }\n }, {\n selector: ':simple',\n matches: function matches(ele) {\n return ele.isSimple();\n }\n }, {\n selector: ':active',\n matches: function matches(ele) {\n return ele.active();\n }\n }, {\n selector: ':inactive',\n matches: function matches(ele) {\n return !ele.active();\n }\n }, {\n selector: ':backgrounding',\n matches: function matches(ele) {\n return ele.backgrounding();\n }\n }, {\n selector: ':nonbackgrounding',\n matches: function matches(ele) {\n return !ele.backgrounding();\n }\n }].sort(function (a, b) {\n // n.b. selectors that are starting substrings of others must have the longer ones first\n return descending(a.selector, b.selector);\n });\n\n var lookup = function () {\n var selToFn = {};\n var s;\n\n for (var i = 0; i < stateSelectors.length; i++) {\n s = stateSelectors[i];\n selToFn[s.selector] = s.matches;\n }\n\n return selToFn;\n }();\n\n var stateSelectorMatches = function stateSelectorMatches(sel, ele) {\n return lookup[sel](ele);\n };\n var stateSelectorRegex = '(' + stateSelectors.map(function (s) {\n return s.selector;\n }).join('|') + ')';\n\n // so that values get compared properly in Selector.filter()\n\n var cleanMetaChars = function cleanMetaChars(str) {\n return str.replace(new RegExp('\\\\\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) {\n return $1;\n });\n };\n\n var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) {\n selector[selector.length - 1] = replacementQuery;\n }; // NOTE: add new expression syntax here to have it recognised by the parser;\n // - a query contains all adjacent (i.e. no separator in between) expressions;\n // - the current query is stored in selector[i]\n // - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward\n\n\n var exprs = [{\n name: 'group',\n // just used for identifying when debugging\n query: true,\n regex: '(' + tokens.group + ')',\n populate: function populate(selector, query, _ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n group = _ref2[0];\n\n query.checks.push({\n type: Type.GROUP,\n value: group === '*' ? group : group + 's'\n });\n }\n }, {\n name: 'state',\n query: true,\n regex: stateSelectorRegex,\n populate: function populate(selector, query, _ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n state = _ref4[0];\n\n query.checks.push({\n type: Type.STATE,\n value: state\n });\n }\n }, {\n name: 'id',\n query: true,\n regex: '\\\\#(' + tokens.id + ')',\n populate: function populate(selector, query, _ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n id = _ref6[0];\n\n query.checks.push({\n type: Type.ID,\n value: cleanMetaChars(id)\n });\n }\n }, {\n name: 'className',\n query: true,\n regex: '\\\\.(' + tokens.className + ')',\n populate: function populate(selector, query, _ref7) {\n var _ref8 = _slicedToArray(_ref7, 1),\n className = _ref8[0];\n\n query.checks.push({\n type: Type.CLASS,\n value: cleanMetaChars(className)\n });\n }\n }, {\n name: 'dataExists',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n variable = _ref10[0];\n\n query.checks.push({\n type: Type.DATA_EXIST,\n field: cleanMetaChars(variable)\n });\n }\n }, {\n name: 'dataCompare',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.value + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref11) {\n var _ref12 = _slicedToArray(_ref11, 3),\n variable = _ref12[0],\n comparatorOp = _ref12[1],\n value = _ref12[2];\n\n var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null;\n\n if (valueIsString) {\n value = value.substring(1, value.length - 1);\n } else {\n value = parseFloat(value);\n }\n\n query.checks.push({\n type: Type.DATA_COMPARE,\n field: cleanMetaChars(variable),\n operator: comparatorOp,\n value: value\n });\n }\n }, {\n name: 'dataBool',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.boolOp + ')\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n boolOp = _ref14[0],\n variable = _ref14[1];\n\n query.checks.push({\n type: Type.DATA_BOOL,\n field: cleanMetaChars(variable),\n operator: boolOp\n });\n }\n }, {\n name: 'metaCompare',\n query: true,\n regex: '\\\\[\\\\[\\\\s*(' + tokens.meta + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.number + ')\\\\s*\\\\]\\\\]',\n populate: function populate(selector, query, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 3),\n meta = _ref16[0],\n comparatorOp = _ref16[1],\n number = _ref16[2];\n\n query.checks.push({\n type: Type.META_COMPARE,\n field: cleanMetaChars(meta),\n operator: comparatorOp,\n value: parseFloat(number)\n });\n }\n }, {\n name: 'nextQuery',\n separator: true,\n regex: tokens.separator,\n populate: function populate(selector, query) {\n var currentSubject = selector.currentSubject;\n var edgeCount = selector.edgeCount;\n var compoundCount = selector.compoundCount;\n var lastQ = selector[selector.length - 1];\n\n if (currentSubject != null) {\n lastQ.subject = currentSubject;\n selector.currentSubject = null;\n }\n\n lastQ.edgeCount = edgeCount;\n lastQ.compoundCount = compoundCount;\n selector.edgeCount = 0;\n selector.compoundCount = 0; // go on to next query\n\n var nextQuery = selector[selector.length++] = newQuery();\n return nextQuery; // this is the new query to be filled by the following exprs\n }\n }, {\n name: 'directedEdge',\n separator: true,\n regex: tokens.directedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.DIRECTED_EDGE,\n source: source,\n target: target\n }); // the query in the selector should be the edge rather than the source\n\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++; // we're now populating the target query with expressions that follow\n\n return target;\n } else {\n // source/target\n var srcTgtQ = newQuery();\n var _source = query;\n\n var _target = newQuery();\n\n srcTgtQ.checks.push({\n type: Type.NODE_SOURCE,\n source: _source,\n target: _target\n }); // the query in the selector should be the neighbourhood rather than the node\n\n replaceLastQuery(selector, query, srcTgtQ);\n selector.edgeCount++;\n return _target; // now populating the target with the following expressions\n }\n }\n }, {\n name: 'undirectedEdge',\n separator: true,\n regex: tokens.undirectedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.UNDIRECTED_EDGE,\n nodes: [source, target]\n }); // the query in the selector should be the edge rather than the source\n\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++; // we're now populating the target query with expressions that follow\n\n return target;\n } else {\n // neighbourhood\n var nhoodQ = newQuery();\n var node = query;\n var neighbor = newQuery();\n nhoodQ.checks.push({\n type: Type.NODE_NEIGHBOR,\n node: node,\n neighbor: neighbor\n }); // the query in the selector should be the neighbourhood rather than the node\n\n replaceLastQuery(selector, query, nhoodQ);\n return neighbor; // now populating the neighbor with following expressions\n }\n }\n }, {\n name: 'child',\n separator: true,\n regex: tokens.child,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: child query\n var parentChildQuery = newQuery();\n var child = newQuery();\n var parent = selector[selector.length - 1];\n parentChildQuery.checks.push({\n type: Type.CHILD,\n parent: parent,\n child: child\n }); // the query in the selector should be the '>' itself\n\n replaceLastQuery(selector, query, parentChildQuery);\n selector.compoundCount++; // we're now populating the child query with expressions that follow\n\n return child;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n\n var _child = newQuery();\n\n var _parent = newQuery(); // set up the root compound q\n\n\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n }); // populate the subject and replace the q at the old spot (within left) with TRUE\n\n subject.checks = query.checks; // take the checks from the left\n\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n // set up the right q\n\n _parent.checks.push({\n type: Type.TRUE\n }); // parent implicitly refs the subject\n\n\n right.checks.push({\n type: Type.PARENT,\n // type is swapped on right side queries\n parent: _parent,\n child: _child // empty for now\n\n });\n replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`\n\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _child; // now populating the right side's child\n } else {\n // parent query\n // info for parent query\n var _parent2 = newQuery();\n\n var _child2 = newQuery();\n\n var pcQChecks = [{\n type: Type.PARENT,\n parent: _parent2,\n child: _child2\n }]; // the parent-child query takes the place of the query previously being populated\n\n _parent2.checks = query.checks; // the previous query contains the checks for the parent\n\n query.checks = pcQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _child2; // we're now populating the child\n }\n }\n }, {\n name: 'descendant',\n separator: true,\n regex: tokens.descendant,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: descendant query\n var ancChQuery = newQuery();\n var descendant = newQuery();\n var ancestor = selector[selector.length - 1];\n ancChQuery.checks.push({\n type: Type.DESCENDANT,\n ancestor: ancestor,\n descendant: descendant\n }); // the query in the selector should be the '>' itself\n\n replaceLastQuery(selector, query, ancChQuery);\n selector.compoundCount++; // we're now populating the descendant query with expressions that follow\n\n return descendant;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n\n var _descendant = newQuery();\n\n var _ancestor = newQuery(); // set up the root compound q\n\n\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n }); // populate the subject and replace the q at the old spot (within left) with TRUE\n\n subject.checks = query.checks; // take the checks from the left\n\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n // set up the right q\n\n _ancestor.checks.push({\n type: Type.TRUE\n }); // ancestor implicitly refs the subject\n\n\n right.checks.push({\n type: Type.ANCESTOR,\n // type is swapped on right side queries\n ancestor: _ancestor,\n descendant: _descendant // empty for now\n\n });\n replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`\n\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _descendant; // now populating the right side's descendant\n } else {\n // ancestor query\n // info for parent query\n var _ancestor2 = newQuery();\n\n var _descendant2 = newQuery();\n\n var adQChecks = [{\n type: Type.ANCESTOR,\n ancestor: _ancestor2,\n descendant: _descendant2\n }]; // the parent-child query takes the place of the query previously being populated\n\n _ancestor2.checks = query.checks; // the previous query contains the checks for the parent\n\n query.checks = adQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _descendant2; // we're now populating the child\n }\n }\n }, {\n name: 'subject',\n modifier: true,\n regex: tokens.subject,\n populate: function populate(selector, query) {\n if (selector.currentSubject != null && selector.currentSubject !== query) {\n warn('Redefinition of subject in selector `' + selector.toString() + '`');\n return false;\n }\n\n selector.currentSubject = query;\n var topQ = selector[selector.length - 1];\n var topChk = topQ.checks[0];\n var topType = topChk == null ? null : topChk.type;\n\n if (topType === Type.DIRECTED_EDGE) {\n // directed edge with subject on the target\n // change to target node check\n topChk.type = Type.NODE_TARGET;\n } else if (topType === Type.UNDIRECTED_EDGE) {\n // undirected edge with subject on the second node\n // change to neighbor check\n topChk.type = Type.NODE_NEIGHBOR;\n topChk.node = topChk.nodes[1]; // second node is subject\n\n topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type\n\n topChk.nodes = null;\n }\n }\n }];\n exprs.forEach(function (e) {\n return e.regexObj = new RegExp('^' + e.regex);\n });\n\n /**\n * Of all the expressions, find the first match in the remaining text.\n * @param {string} remaining The remaining text to parse\n * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }`\n */\n\n var consumeExpr = function consumeExpr(remaining) {\n var expr;\n var match;\n var name;\n\n for (var j = 0; j < exprs.length; j++) {\n var e = exprs[j];\n var n = e.name;\n var m = remaining.match(e.regexObj);\n\n if (m != null) {\n match = m;\n expr = e;\n name = n;\n var consumed = m[0];\n remaining = remaining.substring(consumed.length);\n break; // we've consumed one expr, so we can return now\n }\n }\n\n return {\n expr: expr,\n match: match,\n name: name,\n remaining: remaining\n };\n };\n /**\n * Consume all the leading whitespace\n * @param {string} remaining The text to consume\n * @returns The text with the leading whitespace removed\n */\n\n\n var consumeWhitespace = function consumeWhitespace(remaining) {\n var match = remaining.match(/^\\s+/);\n\n if (match) {\n var consumed = match[0];\n remaining = remaining.substring(consumed.length);\n }\n\n return remaining;\n };\n /**\n * Parse the string and store the parsed representation in the Selector.\n * @param {string} selector The selector string\n * @returns `true` if the selector was successfully parsed, `false` otherwise\n */\n\n\n var parse = function parse(selector) {\n var self = this;\n var remaining = self.inputText = selector;\n var currentQuery = self[0] = newQuery();\n self.length = 1;\n remaining = consumeWhitespace(remaining); // get rid of leading whitespace\n\n for (;;) {\n var exprInfo = consumeExpr(remaining);\n\n if (exprInfo.expr == null) {\n warn('The selector `' + selector + '`is invalid');\n return false;\n } else {\n var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery\n\n var ret = exprInfo.expr.populate(self, currentQuery, args);\n\n if (ret === false) {\n return false; // exit if population failed\n } else if (ret != null) {\n currentQuery = ret; // change the current query to be filled if the expr specifies\n }\n }\n\n remaining = exprInfo.remaining; // we're done when there's nothing left to parse\n\n if (remaining.match(/^\\s*$/)) {\n break;\n }\n }\n\n var lastQ = self[self.length - 1];\n\n if (self.currentSubject != null) {\n lastQ.subject = self.currentSubject;\n }\n\n lastQ.edgeCount = self.edgeCount;\n lastQ.compoundCount = self.compoundCount;\n\n for (var i = 0; i < self.length; i++) {\n var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations\n\n if (q.compoundCount > 0 && q.edgeCount > 0) {\n warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector');\n return false;\n }\n\n if (q.edgeCount > 1) {\n warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors');\n return false;\n } else if (q.edgeCount === 1) {\n warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.');\n }\n }\n\n return true; // success\n };\n /**\n * Get the selector represented as a string. This value uses default formatting,\n * so things like spacing may differ from the input text passed to the constructor.\n * @returns {string} The selector string\n */\n\n\n var toString = function toString() {\n if (this.toStringCache != null) {\n return this.toStringCache;\n }\n\n var clean = function clean(obj) {\n if (obj == null) {\n return '';\n } else {\n return obj;\n }\n };\n\n var cleanVal = function cleanVal(val) {\n if (string(val)) {\n return '\"' + val + '\"';\n } else {\n return clean(val);\n }\n };\n\n var space = function space(val) {\n return ' ' + val + ' ';\n };\n\n var checkToString = function checkToString(check, subject) {\n var type = check.type,\n value = check.value;\n\n switch (type) {\n case Type.GROUP:\n {\n var group = clean(value);\n return group.substring(0, group.length - 1);\n }\n\n case Type.DATA_COMPARE:\n {\n var field = check.field,\n operator = check.operator;\n return '[' + field + space(clean(operator)) + cleanVal(value) + ']';\n }\n\n case Type.DATA_BOOL:\n {\n var _operator = check.operator,\n _field = check.field;\n return '[' + clean(_operator) + _field + ']';\n }\n\n case Type.DATA_EXIST:\n {\n var _field2 = check.field;\n return '[' + _field2 + ']';\n }\n\n case Type.META_COMPARE:\n {\n var _operator2 = check.operator,\n _field3 = check.field;\n return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]';\n }\n\n case Type.STATE:\n {\n return value;\n }\n\n case Type.ID:\n {\n return '#' + value;\n }\n\n case Type.CLASS:\n {\n return '.' + value;\n }\n\n case Type.PARENT:\n case Type.CHILD:\n {\n return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject);\n }\n\n case Type.ANCESTOR:\n case Type.DESCENDANT:\n {\n return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject);\n }\n\n case Type.COMPOUND_SPLIT:\n {\n var lhs = queryToString(check.left, subject);\n var sub = queryToString(check.subject, subject);\n var rhs = queryToString(check.right, subject);\n return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs;\n }\n\n case Type.TRUE:\n {\n return '';\n }\n }\n };\n\n var queryToString = function queryToString(query, subject) {\n return query.checks.reduce(function (str, chk, i) {\n return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject);\n }, '');\n };\n\n var str = '';\n\n for (var i = 0; i < this.length; i++) {\n var query = this[i];\n str += queryToString(query, query.subject);\n\n if (this.length > 1 && i < this.length - 1) {\n str += ', ';\n }\n }\n\n this.toStringCache = str;\n return str;\n };\n var parse$1 = {\n parse: parse,\n toString: toString\n };\n\n var valCmp = function valCmp(fieldVal, operator, value) {\n var matches;\n var isFieldStr = string(fieldVal);\n var isFieldNum = number$1(fieldVal);\n var isValStr = string(value);\n var fieldStr, valStr;\n var caseInsensitive = false;\n var notExpr = false;\n var isIneqCmp = false;\n\n if (operator.indexOf('!') >= 0) {\n operator = operator.replace('!', '');\n notExpr = true;\n }\n\n if (operator.indexOf('@') >= 0) {\n operator = operator.replace('@', '');\n caseInsensitive = true;\n }\n\n if (isFieldStr || isValStr || caseInsensitive) {\n fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal;\n valStr = '' + value;\n } // if we're doing a case insensitive comparison, then we're using a STRING comparison\n // even if we're comparing numbers\n\n\n if (caseInsensitive) {\n fieldVal = fieldStr = fieldStr.toLowerCase();\n value = valStr = valStr.toLowerCase();\n }\n\n switch (operator) {\n case '*=':\n matches = fieldStr.indexOf(valStr) >= 0;\n break;\n\n case '$=':\n matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0;\n break;\n\n case '^=':\n matches = fieldStr.indexOf(valStr) === 0;\n break;\n\n case '=':\n matches = fieldVal === value;\n break;\n\n case '>':\n isIneqCmp = true;\n matches = fieldVal > value;\n break;\n\n case '>=':\n isIneqCmp = true;\n matches = fieldVal >= value;\n break;\n\n case '<':\n isIneqCmp = true;\n matches = fieldVal < value;\n break;\n\n case '<=':\n isIneqCmp = true;\n matches = fieldVal <= value;\n break;\n\n default:\n matches = false;\n break;\n } // apply the not op, but null vals for inequalities should always stay non-matching\n\n\n if (notExpr && (fieldVal != null || !isIneqCmp)) {\n matches = !matches;\n }\n\n return matches;\n };\n var boolCmp = function boolCmp(fieldVal, operator) {\n switch (operator) {\n case '?':\n return fieldVal ? true : false;\n\n case '!':\n return fieldVal ? false : true;\n\n case '^':\n return fieldVal === undefined;\n }\n };\n var existCmp = function existCmp(fieldVal) {\n return fieldVal !== undefined;\n };\n var data$1 = function data(ele, field) {\n return ele.data(field);\n };\n var meta = function meta(ele, field) {\n return ele[field]();\n };\n\n /** A lookup of `match(check, ele)` functions by `Type` int */\n\n var match = [];\n /**\n * Returns whether the query matches for the element\n * @param query The `{ type, value, ... }` query object\n * @param ele The element to compare against\n */\n\n var matches$1 = function matches(query, ele) {\n return query.checks.every(function (chk) {\n return match[chk.type](chk, ele);\n });\n };\n\n match[Type.GROUP] = function (check, ele) {\n var group = check.value;\n return group === '*' || group === ele.group();\n };\n\n match[Type.STATE] = function (check, ele) {\n var stateSelector = check.value;\n return stateSelectorMatches(stateSelector, ele);\n };\n\n match[Type.ID] = function (check, ele) {\n var id = check.value;\n return ele.id() === id;\n };\n\n match[Type.CLASS] = function (check, ele) {\n var cls = check.value;\n return ele.hasClass(cls);\n };\n\n match[Type.META_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(meta(ele, field), operator, value);\n };\n\n match[Type.DATA_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(data$1(ele, field), operator, value);\n };\n\n match[Type.DATA_BOOL] = function (check, ele) {\n var field = check.field,\n operator = check.operator;\n return boolCmp(data$1(ele, field), operator);\n };\n\n match[Type.DATA_EXIST] = function (check, ele) {\n var field = check.field;\n check.operator;\n return existCmp(data$1(ele, field));\n };\n\n match[Type.UNDIRECTED_EDGE] = function (check, ele) {\n var qA = check.nodes[0];\n var qB = check.nodes[1];\n var src = ele.source();\n var tgt = ele.target();\n return matches$1(qA, src) && matches$1(qB, tgt) || matches$1(qB, src) && matches$1(qA, tgt);\n };\n\n match[Type.NODE_NEIGHBOR] = function (check, ele) {\n return matches$1(check.node, ele) && ele.neighborhood().some(function (n) {\n return n.isNode() && matches$1(check.neighbor, n);\n });\n };\n\n match[Type.DIRECTED_EDGE] = function (check, ele) {\n return matches$1(check.source, ele.source()) && matches$1(check.target, ele.target());\n };\n\n match[Type.NODE_SOURCE] = function (check, ele) {\n return matches$1(check.source, ele) && ele.outgoers().some(function (n) {\n return n.isNode() && matches$1(check.target, n);\n });\n };\n\n match[Type.NODE_TARGET] = function (check, ele) {\n return matches$1(check.target, ele) && ele.incomers().some(function (n) {\n return n.isNode() && matches$1(check.source, n);\n });\n };\n\n match[Type.CHILD] = function (check, ele) {\n return matches$1(check.child, ele) && matches$1(check.parent, ele.parent());\n };\n\n match[Type.PARENT] = function (check, ele) {\n return matches$1(check.parent, ele) && ele.children().some(function (c) {\n return matches$1(check.child, c);\n });\n };\n\n match[Type.DESCENDANT] = function (check, ele) {\n return matches$1(check.descendant, ele) && ele.ancestors().some(function (a) {\n return matches$1(check.ancestor, a);\n });\n };\n\n match[Type.ANCESTOR] = function (check, ele) {\n return matches$1(check.ancestor, ele) && ele.descendants().some(function (d) {\n return matches$1(check.descendant, d);\n });\n };\n\n match[Type.COMPOUND_SPLIT] = function (check, ele) {\n return matches$1(check.subject, ele) && matches$1(check.left, ele) && matches$1(check.right, ele);\n };\n\n match[Type.TRUE] = function () {\n return true;\n };\n\n match[Type.COLLECTION] = function (check, ele) {\n var collection = check.value;\n return collection.has(ele);\n };\n\n match[Type.FILTER] = function (check, ele) {\n var filter = check.value;\n return filter(ele);\n };\n\n var filter = function filter(collection) {\n var self = this; // for 1 id #foo queries, just get the element\n\n if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) {\n return collection.getElementById(self[0].checks[0].value).collection();\n }\n\n var selectorFunction = function selectorFunction(element) {\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n\n if (matches$1(query, element)) {\n return true;\n }\n }\n\n return false;\n };\n\n if (self.text() == null) {\n selectorFunction = function selectorFunction() {\n return true;\n };\n }\n\n return collection.filter(selectorFunction);\n }; // filter\n // does selector match a single element?\n\n\n var matches = function matches(ele) {\n var self = this;\n\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n\n if (matches$1(query, ele)) {\n return true;\n }\n }\n\n return false;\n }; // matches\n\n\n var matching = {\n matches: matches,\n filter: filter\n };\n\n var Selector = function Selector(selector) {\n this.inputText = selector;\n this.currentSubject = null;\n this.compoundCount = 0;\n this.edgeCount = 0;\n this.length = 0;\n\n if (selector == null || string(selector) && selector.match(/^\\s*$/)) ; else if (elementOrCollection(selector)) {\n this.addQuery({\n checks: [{\n type: Type.COLLECTION,\n value: selector.collection()\n }]\n });\n } else if (fn$6(selector)) {\n this.addQuery({\n checks: [{\n type: Type.FILTER,\n value: selector\n }]\n });\n } else if (string(selector)) {\n if (!this.parse(selector)) {\n this.invalid = true;\n }\n } else {\n error('A selector must be created from a string; found ');\n }\n };\n\n var selfn = Selector.prototype;\n [parse$1, matching].forEach(function (p) {\n return extend(selfn, p);\n });\n\n selfn.text = function () {\n return this.inputText;\n };\n\n selfn.size = function () {\n return this.length;\n };\n\n selfn.eq = function (i) {\n return this[i];\n };\n\n selfn.sameText = function (otherSel) {\n return !this.invalid && !otherSel.invalid && this.text() === otherSel.text();\n };\n\n selfn.addQuery = function (q) {\n this[this.length++] = q;\n };\n\n selfn.selector = selfn.toString;\n\n var elesfn$g = {\n allAre: function allAre(selector) {\n var selObj = new Selector(selector);\n return this.every(function (ele) {\n return selObj.matches(ele);\n });\n },\n is: function is(selector) {\n var selObj = new Selector(selector);\n return this.some(function (ele) {\n return selObj.matches(ele);\n });\n },\n some: function some(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n\n if (ret) {\n return true;\n }\n }\n\n return false;\n },\n every: function every(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n\n if (!ret) {\n return false;\n }\n }\n\n return true;\n },\n same: function same(collection) {\n // cheap collection ref check\n if (this === collection) {\n return true;\n }\n\n collection = this.cy().collection(collection);\n var thisLength = this.length;\n var collectionLength = collection.length; // cheap length check\n\n if (thisLength !== collectionLength) {\n return false;\n } // cheap element ref check\n\n\n if (thisLength === 1) {\n return this[0] === collection[0];\n }\n\n return this.every(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n anySame: function anySame(collection) {\n collection = this.cy().collection(collection);\n return this.some(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n allAreNeighbors: function allAreNeighbors(collection) {\n collection = this.cy().collection(collection);\n var nhood = this.neighborhood();\n return collection.every(function (ele) {\n return nhood.hasElementWithId(ele.id());\n });\n },\n contains: function contains(collection) {\n collection = this.cy().collection(collection);\n var self = this;\n return collection.every(function (ele) {\n return self.hasElementWithId(ele.id());\n });\n }\n };\n elesfn$g.allAreNeighbours = elesfn$g.allAreNeighbors;\n elesfn$g.has = elesfn$g.contains;\n elesfn$g.equal = elesfn$g.equals = elesfn$g.same;\n\n var cache = function cache(fn, name) {\n return function traversalCache(arg1, arg2, arg3, arg4) {\n var selectorOrEles = arg1;\n var eles = this;\n var key;\n\n if (selectorOrEles == null) {\n key = '';\n } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) {\n key = selectorOrEles.id();\n }\n\n if (eles.length === 1 && key) {\n var _p = eles[0]._private;\n var tch = _p.traversalCache = _p.traversalCache || {};\n var ch = tch[name] = tch[name] || [];\n var hash = hashString(key);\n var cacheHit = ch[hash];\n\n if (cacheHit) {\n return cacheHit;\n } else {\n return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4);\n }\n } else {\n return fn.call(eles, arg1, arg2, arg3, arg4);\n }\n };\n };\n\n var elesfn$f = {\n parent: function parent(selector) {\n var parents = []; // optimisation for single ele call\n\n if (this.length === 1) {\n var parent = this[0]._private.parent;\n\n if (parent) {\n return parent;\n }\n }\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _parent = ele._private.parent;\n\n if (_parent) {\n parents.push(_parent);\n }\n }\n\n return this.spawn(parents, true).filter(selector);\n },\n parents: function parents(selector) {\n var parents = [];\n var eles = this.parent();\n\n while (eles.nonempty()) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n parents.push(ele);\n }\n\n eles = eles.parent();\n }\n\n return this.spawn(parents, true).filter(selector);\n },\n commonAncestors: function commonAncestors(selector) {\n var ancestors;\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var parents = ele.parents();\n ancestors = ancestors || parents;\n ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set\n }\n\n return ancestors.filter(selector);\n },\n orphans: function orphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isOrphan();\n }).filter(selector);\n },\n nonorphans: function nonorphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isChild();\n }).filter(selector);\n },\n children: cache(function (selector) {\n var children = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var eleChildren = ele._private.children;\n\n for (var j = 0; j < eleChildren.length; j++) {\n children.push(eleChildren[j]);\n }\n }\n\n return this.spawn(children, true).filter(selector);\n }, 'children'),\n siblings: function siblings(selector) {\n return this.parent().children().not(this).filter(selector);\n },\n isParent: function isParent() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.children.length !== 0;\n }\n },\n isChildless: function isChildless() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.children.length === 0;\n }\n },\n isChild: function isChild() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.parent != null;\n }\n },\n isOrphan: function isOrphan() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.parent == null;\n }\n },\n descendants: function descendants(selector) {\n var elements = [];\n\n function add(eles) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n elements.push(ele);\n\n if (ele.children().nonempty()) {\n add(ele.children());\n }\n }\n }\n\n add(this.children());\n return this.spawn(elements, true).filter(selector);\n }\n };\n\n function forEachCompound(eles, fn, includeSelf, recursiveStep) {\n var q = [];\n var did = new Set$1();\n var cy = eles.cy();\n var hasCompounds = cy.hasCompoundNodes();\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (includeSelf) {\n q.push(ele);\n } else if (hasCompounds) {\n recursiveStep(q, did, ele);\n }\n }\n\n while (q.length > 0) {\n var _ele = q.shift();\n\n fn(_ele);\n did.add(_ele.id());\n\n if (hasCompounds) {\n recursiveStep(q, did, _ele);\n }\n }\n\n return eles;\n }\n\n function addChildren(q, did, ele) {\n if (ele.isParent()) {\n var children = ele._private.children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (!did.has(child.id())) {\n q.push(child);\n }\n }\n }\n } // very efficient version of eles.add( eles.descendants() ).forEach()\n // for internal use\n\n\n elesfn$f.forEachDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addChildren);\n };\n\n function addParent(q, did, ele) {\n if (ele.isChild()) {\n var parent = ele._private.parent;\n\n if (!did.has(parent.id())) {\n q.push(parent);\n }\n }\n }\n\n elesfn$f.forEachUp = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParent);\n };\n\n function addParentAndChildren(q, did, ele) {\n addParent(q, did, ele);\n addChildren(q, did, ele);\n }\n\n elesfn$f.forEachUpAndDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParentAndChildren);\n }; // aliases\n\n\n elesfn$f.ancestors = elesfn$f.parents;\n\n var fn$5, elesfn$e;\n fn$5 = elesfn$e = {\n data: define.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n removeData: define.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n scratch: define.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeScratch: define.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n }),\n rscratch: define.data({\n field: 'rscratch',\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: true\n }),\n removeRscratch: define.removeData({\n field: 'rscratch',\n triggerEvent: false\n }),\n id: function id() {\n var ele = this[0];\n\n if (ele) {\n return ele._private.data.id;\n }\n }\n }; // aliases\n\n fn$5.attr = fn$5.data;\n fn$5.removeAttr = fn$5.removeData;\n var data = elesfn$e;\n\n var elesfn$d = {};\n\n function defineDegreeFunction(callback) {\n return function (includeLoops) {\n var self = this;\n\n if (includeLoops === undefined) {\n includeLoops = true;\n }\n\n if (self.length === 0) {\n return;\n }\n\n if (self.isNode() && !self.removed()) {\n var degree = 0;\n var node = self[0];\n var connectedEdges = node._private.edges;\n\n for (var i = 0; i < connectedEdges.length; i++) {\n var edge = connectedEdges[i];\n\n if (!includeLoops && edge.isLoop()) {\n continue;\n }\n\n degree += callback(node, edge);\n }\n\n return degree;\n } else {\n return;\n }\n };\n }\n\n extend(elesfn$d, {\n degree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(edge.target())) {\n return 2;\n } else {\n return 1;\n }\n }),\n indegree: defineDegreeFunction(function (node, edge) {\n if (edge.target().same(node)) {\n return 1;\n } else {\n return 0;\n }\n }),\n outdegree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(node)) {\n return 1;\n } else {\n return 0;\n }\n })\n });\n\n function defineDegreeBoundsFunction(degreeFn, callback) {\n return function (includeLoops) {\n var ret;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n var ele = nodes[i];\n var degree = ele[degreeFn](includeLoops);\n\n if (degree !== undefined && (ret === undefined || callback(degree, ret))) {\n ret = degree;\n }\n }\n\n return ret;\n };\n }\n\n extend(elesfn$d, {\n minDegree: defineDegreeBoundsFunction('degree', function (degree, min) {\n return degree < min;\n }),\n maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) {\n return degree > max;\n }),\n minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) {\n return degree < min;\n }),\n maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) {\n return degree > max;\n }),\n minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) {\n return degree < min;\n }),\n maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) {\n return degree > max;\n })\n });\n extend(elesfn$d, {\n totalDegree: function totalDegree(includeLoops) {\n var total = 0;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n total += nodes[i].degree(includeLoops);\n }\n\n return total;\n }\n });\n\n var fn$4, elesfn$c;\n\n var beforePositionSet = function beforePositionSet(eles, newPos, silent) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.locked()) {\n var oldPos = ele._private.position;\n var delta = {\n x: newPos.x != null ? newPos.x - oldPos.x : 0,\n y: newPos.y != null ? newPos.y - oldPos.y : 0\n };\n\n if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) {\n ele.children().shift(delta, silent);\n }\n\n ele.dirtyBoundingBoxCache();\n }\n }\n };\n\n var positionDef = {\n field: 'position',\n bindingEvent: 'position',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'position',\n settingTriggersEvent: true,\n triggerFnName: 'emitAndNotify',\n allowGetting: true,\n validKeys: ['x', 'y'],\n beforeGet: function beforeGet(ele) {\n ele.updateCompoundBounds();\n },\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, false);\n },\n onSet: function onSet(eles) {\n eles.dirtyCompoundBoundsCache();\n },\n canSet: function canSet(ele) {\n return !ele.locked();\n }\n };\n fn$4 = elesfn$c = {\n position: define.data(positionDef),\n // position but no notification to renderer\n silentPosition: define.data(extend({}, positionDef, {\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: false,\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, true);\n },\n onSet: function onSet(eles) {\n eles.dirtyCompoundBoundsCache();\n }\n })),\n positions: function positions(pos, silent) {\n if (plainObject(pos)) {\n if (silent) {\n this.silentPosition(pos);\n } else {\n this.position(pos);\n }\n } else if (fn$6(pos)) {\n var _fn = pos;\n var cy = this.cy();\n cy.startBatch();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n var _pos = void 0;\n\n if (_pos = _fn(ele, i)) {\n if (silent) {\n ele.silentPosition(_pos);\n } else {\n ele.position(_pos);\n }\n }\n }\n\n cy.endBatch();\n }\n\n return this; // chaining\n },\n silentPositions: function silentPositions(pos) {\n return this.positions(pos, true);\n },\n shift: function shift(dim, val, silent) {\n var delta;\n\n if (plainObject(dim)) {\n delta = {\n x: number$1(dim.x) ? dim.x : 0,\n y: number$1(dim.y) ? dim.y : 0\n };\n silent = val;\n } else if (string(dim) && number$1(val)) {\n delta = {\n x: 0,\n y: 0\n };\n delta[dim] = val;\n }\n\n if (delta != null) {\n var cy = this.cy();\n cy.startBatch();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i]; // exclude any node that is a descendant of the calling collection\n\n if (cy.hasCompoundNodes() && ele.isChild() && ele.ancestors().anySame(this)) {\n continue;\n }\n\n var pos = ele.position();\n var newPos = {\n x: pos.x + delta.x,\n y: pos.y + delta.y\n };\n\n if (silent) {\n ele.silentPosition(newPos);\n } else {\n ele.position(newPos);\n }\n }\n\n cy.endBatch();\n }\n\n return this;\n },\n silentShift: function silentShift(dim, val) {\n if (plainObject(dim)) {\n this.shift(dim, true);\n } else if (string(dim) && number$1(val)) {\n this.shift(dim, val, true);\n }\n\n return this;\n },\n // get/set the rendered (i.e. on screen) positon of the element\n renderedPosition: function renderedPosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var rpos = plainObject(dim) ? dim : undefined;\n var setting = rpos !== undefined || val !== undefined && string(dim);\n\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele = this[i];\n\n if (val !== undefined) {\n // set one dimension\n _ele.position(dim, (val - pan[dim]) / zoom);\n } else if (rpos !== undefined) {\n // set whole position\n _ele.position(renderedToModelPosition(rpos, zoom, pan));\n }\n }\n } else {\n // getting\n var pos = ele.position();\n rpos = modelToRenderedPosition(pos, zoom, pan);\n\n if (dim === undefined) {\n // then return the whole rendered position\n return rpos;\n } else {\n // then return the specified dimension\n return rpos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n },\n // get/set the position relative to the parent\n relativePosition: function relativePosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var ppos = plainObject(dim) ? dim : undefined;\n var setting = ppos !== undefined || val !== undefined && string(dim);\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele2 = this[i];\n var parent = hasCompoundNodes ? _ele2.parent() : null;\n var hasParent = parent && parent.length > 0;\n var relativeToParent = hasParent;\n\n if (hasParent) {\n parent = parent[0];\n }\n\n var origin = relativeToParent ? parent.position() : {\n x: 0,\n y: 0\n };\n\n if (val !== undefined) {\n // set one dimension\n _ele2.position(dim, val + origin[dim]);\n } else if (ppos !== undefined) {\n // set whole position\n _ele2.position({\n x: ppos.x + origin.x,\n y: ppos.y + origin.y\n });\n }\n }\n } else {\n // getting\n var pos = ele.position();\n\n var _parent = hasCompoundNodes ? ele.parent() : null;\n\n var _hasParent = _parent && _parent.length > 0;\n\n var _relativeToParent = _hasParent;\n\n if (_hasParent) {\n _parent = _parent[0];\n }\n\n var _origin = _relativeToParent ? _parent.position() : {\n x: 0,\n y: 0\n };\n\n ppos = {\n x: pos.x - _origin.x,\n y: pos.y - _origin.y\n };\n\n if (dim === undefined) {\n // then return the whole rendered position\n return ppos;\n } else {\n // then return the specified dimension\n return ppos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n }\n }; // aliases\n\n fn$4.modelPosition = fn$4.point = fn$4.position;\n fn$4.modelPositions = fn$4.points = fn$4.positions;\n fn$4.renderedPoint = fn$4.renderedPosition;\n fn$4.relativePoint = fn$4.relativePosition;\n var position = elesfn$c;\n\n var fn$3, elesfn$b;\n fn$3 = elesfn$b = {};\n\n elesfn$b.renderedBoundingBox = function (options) {\n var bb = this.boundingBox(options);\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var x1 = bb.x1 * zoom + pan.x;\n var x2 = bb.x2 * zoom + pan.x;\n var y1 = bb.y1 * zoom + pan.y;\n var y2 = bb.y2 * zoom + pan.y;\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2,\n w: x2 - x1,\n h: y2 - y1\n };\n };\n\n elesfn$b.dirtyCompoundBoundsCache = function () {\n var silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cy = this.cy();\n\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n }\n\n this.forEachUp(function (ele) {\n if (ele.isParent()) {\n var _p = ele._private;\n _p.compoundBoundsClean = false;\n _p.bbCache = null;\n\n if (!silent) {\n ele.emitAndNotify('bounds');\n }\n }\n });\n return this;\n };\n\n elesfn$b.updateCompoundBounds = function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled\n\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n } // save cycles when batching -- but bounds will be stale (or not exist yet)\n\n\n if (!force && cy.batching()) {\n return this;\n }\n\n function update(parent) {\n if (!parent.isParent()) {\n return;\n }\n\n var _p = parent._private;\n var children = parent.children();\n var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include';\n var min = {\n width: {\n val: parent.pstyle('min-width').pfValue,\n left: parent.pstyle('min-width-bias-left'),\n right: parent.pstyle('min-width-bias-right')\n },\n height: {\n val: parent.pstyle('min-height').pfValue,\n top: parent.pstyle('min-height-bias-top'),\n bottom: parent.pstyle('min-height-bias-bottom')\n }\n };\n var bb = children.boundingBox({\n includeLabels: includeLabels,\n includeOverlays: false,\n // updating the compound bounds happens outside of the regular\n // cache cycle (i.e. before fired events)\n useCache: false\n });\n var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h\n\n if (bb.w === 0 || bb.h === 0) {\n bb = {\n w: parent.pstyle('width').pfValue,\n h: parent.pstyle('height').pfValue\n };\n bb.x1 = pos.x - bb.w / 2;\n bb.x2 = pos.x + bb.w / 2;\n bb.y1 = pos.y - bb.h / 2;\n bb.y2 = pos.y + bb.h / 2;\n }\n\n function computeBiasValues(propDiff, propBias, propBiasComplement) {\n var biasDiff = 0;\n var biasComplementDiff = 0;\n var biasTotal = propBias + propBiasComplement;\n\n if (propDiff > 0 && biasTotal > 0) {\n biasDiff = propBias / biasTotal * propDiff;\n biasComplementDiff = propBiasComplement / biasTotal * propDiff;\n }\n\n return {\n biasDiff: biasDiff,\n biasComplementDiff: biasComplementDiff\n };\n }\n\n function computePaddingValues(width, height, paddingObject, relativeTo) {\n // Assuming percentage is number from 0 to 1\n if (paddingObject.units === '%') {\n switch (relativeTo) {\n case 'width':\n return width > 0 ? paddingObject.pfValue * width : 0;\n\n case 'height':\n return height > 0 ? paddingObject.pfValue * height : 0;\n\n case 'average':\n return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0;\n\n case 'min':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0;\n\n case 'max':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0;\n\n default:\n return 0;\n }\n } else if (paddingObject.units === 'px') {\n return paddingObject.pfValue;\n } else {\n return 0;\n }\n }\n\n var leftVal = min.width.left.value;\n\n if (min.width.left.units === 'px' && min.width.val > 0) {\n leftVal = leftVal * 100 / min.width.val;\n }\n\n var rightVal = min.width.right.value;\n\n if (min.width.right.units === 'px' && min.width.val > 0) {\n rightVal = rightVal * 100 / min.width.val;\n }\n\n var topVal = min.height.top.value;\n\n if (min.height.top.units === 'px' && min.height.val > 0) {\n topVal = topVal * 100 / min.height.val;\n }\n\n var bottomVal = min.height.bottom.value;\n\n if (min.height.bottom.units === 'px' && min.height.val > 0) {\n bottomVal = bottomVal * 100 / min.height.val;\n }\n\n var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal);\n var diffLeft = widthBiasDiffs.biasDiff;\n var diffRight = widthBiasDiffs.biasComplementDiff;\n var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal);\n var diffTop = heightBiasDiffs.biasDiff;\n var diffBottom = heightBiasDiffs.biasComplementDiff;\n _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value);\n _p.autoWidth = Math.max(bb.w, min.width.val);\n pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2;\n _p.autoHeight = Math.max(bb.h, min.height.val);\n pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2;\n }\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n\n if (!_p.compoundBoundsClean || force) {\n update(ele);\n\n if (!cy.batching()) {\n _p.compoundBoundsClean = true;\n }\n }\n }\n\n return this;\n };\n\n var noninf = function noninf(x) {\n if (x === Infinity || x === -Infinity) {\n return 0;\n }\n\n return x;\n };\n\n var updateBounds = function updateBounds(b, x1, y1, x2, y2) {\n // don't update with zero area boxes\n if (x2 - x1 === 0 || y2 - y1 === 0) {\n return;\n } // don't update with null dim\n\n\n if (x1 == null || y1 == null || x2 == null || y2 == null) {\n return;\n }\n\n b.x1 = x1 < b.x1 ? x1 : b.x1;\n b.x2 = x2 > b.x2 ? x2 : b.x2;\n b.y1 = y1 < b.y1 ? y1 : b.y1;\n b.y2 = y2 > b.y2 ? y2 : b.y2;\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n };\n\n var updateBoundsFromBox = function updateBoundsFromBox(b, b2) {\n if (b2 == null) {\n return b;\n }\n\n return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2);\n };\n\n var prefixedProperty = function prefixedProperty(obj, field, prefix) {\n return getPrefixedProperty(obj, field, prefix);\n };\n\n var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var halfArW = rstyle.arrowWidth / 2;\n var arrowType = ele.pstyle(prefix + '-arrow-shape').value;\n var x;\n var y;\n\n if (arrowType !== 'none') {\n if (prefix === 'source') {\n x = rstyle.srcX;\n y = rstyle.srcY;\n } else if (prefix === 'target') {\n x = rstyle.tgtX;\n y = rstyle.tgtY;\n } else {\n x = rstyle.midX;\n y = rstyle.midY;\n } // always store the individual arrow bounds\n\n\n var bbs = _p.arrowBounds = _p.arrowBounds || {};\n var bb = bbs[prefix] = bbs[prefix] || {};\n bb.x1 = x - halfArW;\n bb.y1 = y - halfArW;\n bb.x2 = x + halfArW;\n bb.y2 = y + halfArW;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n expandBoundingBox(bb, 1);\n updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2);\n }\n };\n\n var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n\n var prefixDash;\n\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var label = ele.pstyle(prefixDash + 'label').strValue;\n\n if (label) {\n var halign = ele.pstyle('text-halign');\n var valign = ele.pstyle('text-valign');\n var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix);\n var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix);\n var labelX = prefixedProperty(rstyle, 'labelX', prefix);\n var labelY = prefixedProperty(rstyle, 'labelY', prefix);\n var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var rotation = ele.pstyle(prefixDash + 'text-rotation');\n var outlineWidth = ele.pstyle('text-outline-width').pfValue;\n var borderWidth = ele.pstyle('text-border-width').pfValue;\n var halfBorderWidth = borderWidth / 2;\n var padding = ele.pstyle('text-background-padding').pfValue;\n var marginOfError = 2; // expand to work around browser dimension inaccuracies\n\n var lh = labelHeight;\n var lw = labelWidth;\n var lw_2 = lw / 2;\n var lh_2 = lh / 2;\n var lx1, lx2, ly1, ly2;\n\n if (isEdge) {\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n } else {\n switch (halign.value) {\n case 'left':\n lx1 = labelX - lw;\n lx2 = labelX;\n break;\n\n case 'center':\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n break;\n\n case 'right':\n lx1 = labelX;\n lx2 = labelX + lw;\n break;\n }\n\n switch (valign.value) {\n case 'top':\n ly1 = labelY - lh;\n ly2 = labelY;\n break;\n\n case 'center':\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n break;\n\n case 'bottom':\n ly1 = labelY;\n ly2 = labelY + lh;\n break;\n }\n } // shift by margin and expand by outline and border\n\n\n lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError;\n ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding - marginOfError;\n ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding + marginOfError; // always store the unrotated label bounds separately\n\n var bbPrefix = prefix || 'main';\n var bbs = _p.labelBounds;\n var bb = bbs[bbPrefix] = bbs[bbPrefix] || {};\n bb.x1 = lx1;\n bb.y1 = ly1;\n bb.x2 = lx2;\n bb.y2 = ly2;\n bb.w = lx2 - lx1;\n bb.h = ly2 - ly1;\n var isAutorotate = isEdge && rotation.strValue === 'autorotate';\n var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0;\n\n if (isAutorotate || isPfValue) {\n var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue;\n var cos = Math.cos(theta);\n var sin = Math.sin(theta); // rotation point (default value for center-center)\n\n var xo = (lx1 + lx2) / 2;\n var yo = (ly1 + ly2) / 2;\n\n if (!isEdge) {\n switch (halign.value) {\n case 'left':\n xo = lx2;\n break;\n\n case 'right':\n xo = lx1;\n break;\n }\n\n switch (valign.value) {\n case 'top':\n yo = ly2;\n break;\n\n case 'bottom':\n yo = ly1;\n break;\n }\n }\n\n var rotate = function rotate(x, y) {\n x = x - xo;\n y = y - yo;\n return {\n x: x * cos - y * sin + xo,\n y: x * sin + y * cos + yo\n };\n };\n\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n }\n\n var bbPrefixRot = bbPrefix + 'Rot';\n var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {};\n bbRot.x1 = lx1;\n bbRot.y1 = ly1;\n bbRot.x2 = lx2;\n bbRot.y2 = ly2;\n bbRot.w = lx2 - lx1;\n bbRot.h = ly2 - ly1;\n updateBounds(bounds, lx1, ly1, lx2, ly2);\n updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2);\n }\n\n return bounds;\n }; // get the bounding box of the elements (in raw model position)\n\n\n var boundingBoxImpl = function boundingBoxImpl(ele, options) {\n var cy = ele._private.cy;\n var styleEnabled = cy.styleEnabled();\n var headless = cy.headless();\n var bounds = makeBoundingBox();\n var _p = ele._private;\n var isNode = ele.isNode();\n var isEdge = ele.isEdge();\n var ex1, ex2, ey1, ey2; // extrema of body / lines\n\n var x, y; // node pos\n\n var rstyle = _p.rstyle;\n var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion\n // (other factors like width values will be considered later in this function anyway)\n\n var isDisplayed = function isDisplayed(ele) {\n return ele.pstyle('display').value !== 'none';\n };\n\n var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node\n && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target()));\n\n if (displayed) {\n // displayed suffices, since we will find zero area eles anyway\n var overlayOpacity = 0;\n var overlayPadding = 0;\n\n if (styleEnabled && options.includeOverlays) {\n overlayOpacity = ele.pstyle('overlay-opacity').value;\n\n if (overlayOpacity !== 0) {\n overlayPadding = ele.pstyle('overlay-padding').value;\n }\n }\n\n var underlayOpacity = 0;\n var underlayPadding = 0;\n\n if (styleEnabled && options.includeUnderlays) {\n underlayOpacity = ele.pstyle('underlay-opacity').value;\n\n if (underlayOpacity !== 0) {\n underlayPadding = ele.pstyle('underlay-padding').value;\n }\n }\n\n var padding = Math.max(overlayPadding, underlayPadding);\n var w = 0;\n var wHalf = 0;\n\n if (styleEnabled) {\n w = ele.pstyle('width').pfValue;\n wHalf = w / 2;\n }\n\n if (isNode && options.includeNodes) {\n var pos = ele.position();\n x = pos.x;\n y = pos.y;\n\n var _w = ele.outerWidth();\n\n var halfW = _w / 2;\n var h = ele.outerHeight();\n var halfH = h / 2; // handle node dimensions\n /////////////////////////\n\n ex1 = x - halfW;\n ex2 = x + halfW;\n ey1 = y - halfH;\n ey2 = y + halfH;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } else if (isEdge && options.includeEdges) {\n if (styleEnabled && !headless) {\n var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate)\n //////////////////////////////////////////////\n\n ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width\n\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges\n ////////////////\n\n if (curveStyle === 'haystack') {\n var hpts = rstyle.haystackPts;\n\n if (hpts && hpts.length === 2) {\n ex1 = hpts[0].x;\n ey1 = hpts[0].y;\n ex2 = hpts[1].x;\n ey2 = hpts[1].y;\n\n if (ex1 > ex2) {\n var temp = ex1;\n ex1 = ex2;\n ex2 = temp;\n }\n\n if (ey1 > ey2) {\n var _temp = ey1;\n ey1 = ey2;\n ey2 = _temp;\n }\n\n updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf);\n }\n } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') {\n var pts;\n\n switch (curveStyle) {\n case 'bezier':\n case 'unbundled-bezier':\n pts = rstyle.bezierPts;\n break;\n\n case 'segments':\n case 'taxi':\n pts = rstyle.linePts;\n break;\n }\n\n if (pts != null) {\n for (var j = 0; j < pts.length; j++) {\n var pt = pts[j];\n ex1 = pt.x - wHalf;\n ex2 = pt.x + wHalf;\n ey1 = pt.y - wHalf;\n ey2 = pt.y + wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n }\n }\n } // bezier-like or segment-like edge\n\n } else {\n // headless or style disabled\n // fallback on source and target positions\n //////////////////////////////////////////\n var n1 = ele.source();\n var n1pos = n1.position();\n var n2 = ele.target();\n var n2pos = n2.position();\n ex1 = n1pos.x;\n ex2 = n2pos.x;\n ey1 = n1pos.y;\n ey2 = n2pos.y;\n\n if (ex1 > ex2) {\n var _temp2 = ex1;\n ex1 = ex2;\n ex2 = _temp2;\n }\n\n if (ey1 > ey2) {\n var _temp3 = ey1;\n ey1 = ey2;\n ey2 = _temp3;\n } // take into account edge width\n\n\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } // headless or style disabled\n\n } // edges\n // handle edge arrow size\n /////////////////////////\n\n\n if (styleEnabled && options.includeEdges && isEdge) {\n updateBoundsFromArrow(bounds, ele, 'mid-source');\n updateBoundsFromArrow(bounds, ele, 'mid-target');\n updateBoundsFromArrow(bounds, ele, 'source');\n updateBoundsFromArrow(bounds, ele, 'target');\n } // ghost\n ////////\n\n\n if (styleEnabled) {\n var ghost = ele.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = ele.pstyle('ghost-offset-x').pfValue;\n var gy = ele.pstyle('ghost-offset-y').pfValue;\n updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy);\n }\n } // always store the body bounds separately from the labels\n\n\n var bbBody = _p.bodyBounds = _p.bodyBounds || {};\n assignBoundingBox(bbBody, bounds);\n expandBoundingBoxSides(bbBody, manualExpansion);\n expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies\n // overlay\n //////////\n\n if (styleEnabled) {\n ex1 = bounds.x1;\n ex2 = bounds.x2;\n ey1 = bounds.y1;\n ey2 = bounds.y2;\n updateBounds(bounds, ex1 - padding, ey1 - padding, ex2 + padding, ey2 + padding);\n } // always store the body bounds separately from the labels\n\n\n var bbOverlay = _p.overlayBounds = _p.overlayBounds || {};\n assignBoundingBox(bbOverlay, bounds);\n expandBoundingBoxSides(bbOverlay, manualExpansion);\n expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies\n // handle label dimensions\n //////////////////////////\n\n var bbLabels = _p.labelBounds = _p.labelBounds || {};\n\n if (bbLabels.all != null) {\n clearBoundingBox(bbLabels.all);\n } else {\n bbLabels.all = makeBoundingBox();\n }\n\n if (styleEnabled && options.includeLabels) {\n if (options.includeMainLabels) {\n updateBoundsFromLabel(bounds, ele, null);\n }\n\n if (isEdge) {\n if (options.includeSourceLabels) {\n updateBoundsFromLabel(bounds, ele, 'source');\n }\n\n if (options.includeTargetLabels) {\n updateBoundsFromLabel(bounds, ele, 'target');\n }\n }\n } // style enabled for labels\n\n } // if displayed\n\n\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n\n if (bounds.w > 0 && bounds.h > 0 && displayed) {\n expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides\n\n expandBoundingBox(bounds, 1);\n }\n\n return bounds;\n };\n\n var getKey = function getKey(opts) {\n var i = 0;\n\n var tf = function tf(val) {\n return (val ? 1 : 0) << i++;\n };\n\n var key = 0;\n key += tf(opts.incudeNodes);\n key += tf(opts.includeEdges);\n key += tf(opts.includeLabels);\n key += tf(opts.includeMainLabels);\n key += tf(opts.includeSourceLabels);\n key += tf(opts.includeTargetLabels);\n key += tf(opts.includeOverlays);\n return key;\n };\n\n var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) {\n if (ele.isEdge()) {\n var p1 = ele.source().position();\n var p2 = ele.target().position();\n\n var r = function r(x) {\n return Math.round(x);\n };\n\n return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]);\n } else {\n return 0;\n }\n };\n\n var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) {\n var _p = ele._private;\n var bb;\n var isEdge = ele.isEdge();\n var key = opts == null ? defBbOptsKey : getKey(opts);\n var usingDefOpts = key === defBbOptsKey;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame;\n\n var isDirty = function isDirty(ele) {\n return ele._private.bbCache == null || ele._private.styleDirty;\n };\n\n var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target());\n\n if (needRecalc) {\n if (!isPosKeySame) {\n ele.recalculateRenderedStyle(useCache);\n }\n\n bb = boundingBoxImpl(ele, defBbOpts);\n _p.bbCache = bb;\n _p.bbCachePosKey = currPosKey;\n } else {\n bb = _p.bbCache;\n } // not using def opts => need to build up bb from combination of sub bbs\n\n\n if (!usingDefOpts) {\n var isNode = ele.isNode();\n bb = makeBoundingBox();\n\n if (opts.includeNodes && isNode || opts.includeEdges && !isNode) {\n if (opts.includeOverlays) {\n updateBoundsFromBox(bb, _p.overlayBounds);\n } else {\n updateBoundsFromBox(bb, _p.bodyBounds);\n }\n }\n\n if (opts.includeLabels) {\n if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) {\n updateBoundsFromBox(bb, _p.labelBounds.all);\n } else {\n if (opts.includeMainLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.mainRot);\n }\n\n if (opts.includeSourceLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.sourceRot);\n }\n\n if (opts.includeTargetLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.targetRot);\n }\n }\n }\n\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n }\n\n return bb;\n };\n\n var defBbOpts = {\n includeNodes: true,\n includeEdges: true,\n includeLabels: true,\n includeMainLabels: true,\n includeSourceLabels: true,\n includeTargetLabels: true,\n includeOverlays: true,\n includeUnderlays: true,\n useCache: true\n };\n var defBbOptsKey = getKey(defBbOpts);\n var filledBbOpts = defaults$g(defBbOpts);\n\n elesfn$b.boundingBox = function (options) {\n var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options\n // specified s.t. the cache is used, so check for this case to make it faster by\n // avoiding the overhead of the rest of the function\n\n if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (options === undefined || options.useCache === undefined || options.useCache === true)) {\n if (options === undefined) {\n options = defBbOpts;\n } else {\n options = filledBbOpts(options);\n }\n\n bounds = cachedBoundingBoxImpl(this[0], options);\n } else {\n bounds = makeBoundingBox();\n options = options || defBbOpts;\n var opts = filledBbOpts(options);\n var eles = this;\n var cy = eles.cy();\n var styleEnabled = cy.styleEnabled();\n\n if (styleEnabled) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame && !_p.styleDirty;\n ele.recalculateRenderedStyle(useCache);\n }\n }\n\n this.updateCompoundBounds(!options.useCache);\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele = eles[_i];\n updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts));\n }\n }\n\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n return bounds;\n };\n\n elesfn$b.dirtyBoundingBoxCache = function () {\n for (var i = 0; i < this.length; i++) {\n var _p = this[i]._private;\n _p.bbCache = null;\n _p.bbCachePosKey = null;\n _p.bodyBounds = null;\n _p.overlayBounds = null;\n _p.labelBounds.all = null;\n _p.labelBounds.source = null;\n _p.labelBounds.target = null;\n _p.labelBounds.main = null;\n _p.labelBounds.sourceRot = null;\n _p.labelBounds.targetRot = null;\n _p.labelBounds.mainRot = null;\n _p.arrowBounds.source = null;\n _p.arrowBounds.target = null;\n _p.arrowBounds['mid-source'] = null;\n _p.arrowBounds['mid-target'] = null;\n }\n\n this.emitAndNotify('bounds');\n return this;\n }; // private helper to get bounding box for custom node positions\n // - good for perf in certain cases but currently requires dirtying the rendered style\n // - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer...\n // - try to use for only things like discrete layouts where the node position would change anyway\n\n\n elesfn$b.boundingBoxAt = function (fn) {\n var nodes = this.nodes();\n var cy = this.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n var parents = cy.collection();\n\n if (hasCompoundNodes) {\n parents = nodes.filter(function (node) {\n return node.isParent();\n });\n nodes = nodes.not(parents);\n }\n\n if (plainObject(fn)) {\n var obj = fn;\n\n fn = function fn() {\n return obj;\n };\n }\n\n var storeOldPos = function storeOldPos(node, i) {\n return node._private.bbAtOldPos = fn(node, i);\n };\n\n var getOldPos = function getOldPos(node) {\n return node._private.bbAtOldPos;\n };\n\n cy.startBatch();\n nodes.forEach(storeOldPos).silentPositions(fn);\n\n if (hasCompoundNodes) {\n parents.dirtyCompoundBoundsCache();\n parents.dirtyBoundingBoxCache();\n parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n }\n\n var bb = copyBoundingBox(this.boundingBox({\n useCache: false\n }));\n nodes.silentPositions(getOldPos);\n\n if (hasCompoundNodes) {\n parents.dirtyCompoundBoundsCache();\n parents.dirtyBoundingBoxCache();\n parents.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n }\n\n cy.endBatch();\n return bb;\n };\n\n fn$3.boundingbox = fn$3.bb = fn$3.boundingBox;\n fn$3.renderedBoundingbox = fn$3.renderedBoundingBox;\n var bounds = elesfn$b;\n\n var fn$2, elesfn$a;\n fn$2 = elesfn$a = {};\n\n var defineDimFns = function defineDimFns(opts) {\n opts.uppercaseName = capitalize(opts.name);\n opts.autoName = 'auto' + opts.uppercaseName;\n opts.labelName = 'label' + opts.uppercaseName;\n opts.outerName = 'outer' + opts.uppercaseName;\n opts.uppercaseOuterName = capitalize(opts.outerName);\n\n fn$2[opts.name] = function dimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n\n if (ele) {\n if (styleEnabled) {\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n return _p[opts.autoName] || 0;\n }\n\n var d = ele.pstyle(opts.name);\n\n switch (d.strValue) {\n case 'label':\n ele.recalculateRenderedStyle();\n return _p.rstyle[opts.labelName] || 0;\n\n default:\n return d.pfValue;\n }\n } else {\n return 1;\n }\n }\n };\n\n fn$2['outer' + opts.uppercaseName] = function outerDimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n\n if (ele) {\n if (styleEnabled) {\n var dim = ele[opts.name]();\n var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side\n\n var padding = 2 * ele.padding();\n return dim + border + padding;\n } else {\n return 1;\n }\n }\n };\n\n fn$2['rendered' + opts.uppercaseName] = function renderedDimImpl() {\n var ele = this[0];\n\n if (ele) {\n var d = ele[opts.name]();\n return d * this.cy().zoom();\n }\n };\n\n fn$2['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() {\n var ele = this[0];\n\n if (ele) {\n var od = ele[opts.outerName]();\n return od * this.cy().zoom();\n }\n };\n };\n\n defineDimFns({\n name: 'width'\n });\n defineDimFns({\n name: 'height'\n });\n\n elesfn$a.padding = function () {\n var ele = this[0];\n var _p = ele._private;\n\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n\n if (_p.autoPadding !== undefined) {\n return _p.autoPadding;\n } else {\n return ele.pstyle('padding').pfValue;\n }\n } else {\n return ele.pstyle('padding').pfValue;\n }\n };\n\n elesfn$a.paddedHeight = function () {\n var ele = this[0];\n return ele.height() + 2 * ele.padding();\n };\n\n elesfn$a.paddedWidth = function () {\n var ele = this[0];\n return ele.width() + 2 * ele.padding();\n };\n\n var widthHeight = elesfn$a;\n\n var ifEdge = function ifEdge(ele, getValue) {\n if (ele.isEdge()) {\n return getValue(ele);\n }\n };\n\n var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan());\n }\n };\n\n var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n var pan = cy.pan();\n var zoom = cy.zoom();\n return getPoints(ele).map(function (p) {\n return modelToRenderedPosition(p, zoom, pan);\n });\n }\n };\n\n var controlPoints = function controlPoints(ele) {\n return ele.renderer().getControlPoints(ele);\n };\n\n var segmentPoints = function segmentPoints(ele) {\n return ele.renderer().getSegmentPoints(ele);\n };\n\n var sourceEndpoint = function sourceEndpoint(ele) {\n return ele.renderer().getSourceEndpoint(ele);\n };\n\n var targetEndpoint = function targetEndpoint(ele) {\n return ele.renderer().getTargetEndpoint(ele);\n };\n\n var midpoint = function midpoint(ele) {\n return ele.renderer().getEdgeMidpoint(ele);\n };\n\n var pts = {\n controlPoints: {\n get: controlPoints,\n mult: true\n },\n segmentPoints: {\n get: segmentPoints,\n mult: true\n },\n sourceEndpoint: {\n get: sourceEndpoint\n },\n targetEndpoint: {\n get: targetEndpoint\n },\n midpoint: {\n get: midpoint\n }\n };\n\n var renderedName = function renderedName(name) {\n return 'rendered' + name[0].toUpperCase() + name.substr(1);\n };\n\n var edgePoints = Object.keys(pts).reduce(function (obj, name) {\n var spec = pts[name];\n var rName = renderedName(name);\n\n obj[name] = function () {\n return ifEdge(this, spec.get);\n };\n\n if (spec.mult) {\n obj[rName] = function () {\n return ifEdgeRenderedPositions(this, spec.get);\n };\n } else {\n obj[rName] = function () {\n return ifEdgeRenderedPosition(this, spec.get);\n };\n }\n\n return obj;\n }, {});\n\n var dimensions = extend({}, position, bounds, widthHeight, edgePoints);\n\n /*!\n Event object based on jQuery events, MIT license\n\n https://jquery.org/license/\n https://tldrlegal.com/license/mit-license\n https://github.com/jquery/jquery/blob/master/src/event.js\n */\n var Event = function Event(src, props) {\n this.recycle(src, props);\n };\n\n function returnFalse() {\n return false;\n }\n\n function returnTrue() {\n return true;\n } // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n Event.prototype = {\n instanceString: function instanceString() {\n return 'event';\n },\n recycle: function recycle(src, props) {\n this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse;\n\n if (src != null && src.preventDefault) {\n // Browser Event object\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse;\n } else if (src != null && src.type) {\n // Plain object containing all event details\n props = src;\n } else {\n // Event string\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props != null) {\n // more efficient to manually copy fields we use\n this.originalEvent = props.originalEvent;\n this.type = props.type != null ? props.type : this.type;\n this.cy = props.cy;\n this.target = props.target;\n this.position = props.position;\n this.renderedPosition = props.renderedPosition;\n this.namespace = props.namespace;\n this.layout = props.layout;\n }\n\n if (this.cy != null && this.position != null && this.renderedPosition == null) {\n // create a rendered position based on the passed position\n var pos = this.position;\n var zoom = this.cy.zoom();\n var pan = this.cy.pan();\n this.renderedPosition = {\n x: pos.x * zoom + pan.x,\n y: pos.y * zoom + pan.y\n };\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now();\n },\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n var e = this.originalEvent;\n\n if (!e) {\n return;\n } // if preventDefault exists run it on the original event\n\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n var e = this.originalEvent;\n\n if (!e) {\n return;\n } // if stopPropagation exists run it on the original event\n\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n this.stopPropagation();\n },\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse\n };\n\n var eventRegex = /^([^.]+)(\\.(?:[^.]+))?$/; // regex for matching event strings (e.g. \"click.namespace\")\n\n var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally\n\n var defaults$8 = {\n qualifierCompare: function qualifierCompare(q1, q2) {\n return q1 === q2;\n },\n eventMatches: function\n /*context, listener, eventObj*/\n eventMatches() {\n return true;\n },\n addEventFields: function\n /*context, evt*/\n addEventFields() {},\n callbackContext: function callbackContext(context\n /*, listener, eventObj*/\n ) {\n return context;\n },\n beforeEmit: function\n /* context, listener, eventObj */\n beforeEmit() {},\n afterEmit: function\n /* context, listener, eventObj */\n afterEmit() {},\n bubble: function\n /*context*/\n bubble() {\n return false;\n },\n parent: function\n /*context*/\n parent() {\n return null;\n },\n context: null\n };\n var defaultsKeys = Object.keys(defaults$8);\n var emptyOpts = {};\n\n function Emitter() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts;\n var context = arguments.length > 1 ? arguments[1] : undefined;\n\n // micro-optimisation vs Object.assign() -- reduces Element instantiation time\n for (var i = 0; i < defaultsKeys.length; i++) {\n var key = defaultsKeys[i];\n this[key] = opts[key] || defaults$8[key];\n }\n\n this.context = context || this.context;\n this.listeners = [];\n this.emitting = 0;\n }\n\n var p = Emitter.prototype;\n\n var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) {\n if (fn$6(qualifier)) {\n callback = qualifier;\n qualifier = null;\n }\n\n if (confOverrides) {\n if (conf == null) {\n conf = confOverrides;\n } else {\n conf = extend({}, conf, confOverrides);\n }\n }\n\n var eventList = array(events) ? events : events.split(/\\s+/);\n\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n\n if (emptyString(evt)) {\n continue;\n }\n\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var ret = handler(self, evt, type, namespace, qualifier, callback, conf);\n\n if (ret === false) {\n break;\n } // allow exiting early\n\n }\n }\n };\n\n var makeEventObj = function makeEventObj(self, obj) {\n self.addEventFields(self.context, obj);\n return new Event(obj.type, obj);\n };\n\n var forEachEventObj = function forEachEventObj(self, handler, events) {\n if (event(events)) {\n handler(self, events);\n return;\n } else if (plainObject(events)) {\n handler(self, makeEventObj(self, events));\n return;\n }\n\n var eventList = array(events) ? events : events.split(/\\s+/);\n\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n\n if (emptyString(evt)) {\n continue;\n }\n\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var eventObj = makeEventObj(self, {\n type: type,\n namespace: namespace,\n target: self.context\n });\n handler(self, eventObj);\n }\n }\n };\n\n p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) {\n forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) {\n if (fn$6(callback)) {\n self.listeners.push({\n event: event,\n // full event string\n callback: callback,\n // callback to run\n type: type,\n // the event type (e.g. 'click')\n namespace: namespace,\n // the event namespace (e.g. \".foo\")\n qualifier: qualifier,\n // a restriction on whether to match this emitter\n conf: conf // additional configuration\n\n });\n }\n }, events, qualifier, callback, conf, confOverrides);\n return this;\n };\n\n p.one = function (events, qualifier, callback, conf) {\n return this.on(events, qualifier, callback, conf, {\n one: true\n });\n };\n\n p.removeListener = p.off = function (events, qualifier, callback, conf) {\n var _this = this;\n\n if (this.emitting !== 0) {\n this.listeners = copyArray$1(this.listeners);\n }\n\n var listeners = this.listeners;\n\n var _loop = function _loop(i) {\n var listener = listeners[i];\n forEachEvent(_this, function (self, event, type, namespace, qualifier, callback\n /*, conf*/\n ) {\n if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) {\n listeners.splice(i, 1);\n return false;\n }\n }, events, qualifier, callback, conf);\n };\n\n for (var i = listeners.length - 1; i >= 0; i--) {\n _loop(i);\n }\n\n return this;\n };\n\n p.removeAllListeners = function () {\n return this.removeListener('*');\n };\n\n p.emit = p.trigger = function (events, extraParams, manualCallback) {\n var listeners = this.listeners;\n var numListenersBeforeEmit = listeners.length;\n this.emitting++;\n\n if (!array(extraParams)) {\n extraParams = [extraParams];\n }\n\n forEachEventObj(this, function (self, eventObj) {\n if (manualCallback != null) {\n listeners = [{\n event: eventObj.event,\n type: eventObj.type,\n namespace: eventObj.namespace,\n callback: manualCallback\n }];\n numListenersBeforeEmit = listeners.length;\n }\n\n var _loop2 = function _loop2(i) {\n var listener = listeners[i];\n\n if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) {\n var args = [eventObj];\n\n if (extraParams != null) {\n push(args, extraParams);\n }\n\n self.beforeEmit(self.context, listener, eventObj);\n\n if (listener.conf && listener.conf.one) {\n self.listeners = self.listeners.filter(function (l) {\n return l !== listener;\n });\n }\n\n var context = self.callbackContext(self.context, listener, eventObj);\n var ret = listener.callback.apply(context, args);\n self.afterEmit(self.context, listener, eventObj);\n\n if (ret === false) {\n eventObj.stopPropagation();\n eventObj.preventDefault();\n }\n } // if listener matches\n\n };\n\n for (var i = 0; i < numListenersBeforeEmit; i++) {\n _loop2(i);\n } // for listener\n\n\n if (self.bubble(self.context) && !eventObj.isPropagationStopped()) {\n self.parent(self.context).emit(eventObj, extraParams);\n }\n }, events);\n this.emitting--;\n return this;\n };\n\n var emitterOptions$1 = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(ele, listener, eventObj) {\n var selector = listener.qualifier;\n\n if (selector != null) {\n return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n\n return true;\n },\n addEventFields: function addEventFields(ele, evt) {\n evt.cy = ele.cy();\n evt.target = ele;\n },\n callbackContext: function callbackContext(ele, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : ele;\n },\n beforeEmit: function beforeEmit(context, listener\n /*, eventObj*/\n ) {\n if (listener.conf && listener.conf.once) {\n listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback);\n }\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(ele) {\n return ele.isChild() ? ele.parent() : ele.cy();\n }\n };\n\n var argSelector$1 = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n };\n\n var elesfn$9 = {\n createEmitter: function createEmitter() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions$1, ele);\n }\n }\n\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n var argSel = argSelector$1(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback);\n }\n\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n var argSel = argSelector$1(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeListener(events, argSel, callback);\n }\n\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeAllListeners();\n }\n\n return this;\n },\n one: function one(events, selector, callback) {\n var argSel = argSelector$1(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().one(events, argSel, callback);\n }\n\n return this;\n },\n once: function once(events, selector, callback) {\n var argSel = argSelector$1(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback, {\n once: true,\n onceCollection: this\n });\n }\n },\n emit: function emit(events, extraParams) {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().emit(events, extraParams);\n }\n\n return this;\n },\n emitAndNotify: function emitAndNotify(event, extraParams) {\n // for internal use only\n if (this.length === 0) {\n return;\n } // empty collections don't need to notify anything\n // notify renderer\n\n\n this.cy().notify(event, this);\n this.emit(event, extraParams);\n return this;\n }\n };\n define.eventAliasesOn(elesfn$9);\n\n var elesfn$8 = {\n nodes: function nodes(selector) {\n return this.filter(function (ele) {\n return ele.isNode();\n }).filter(selector);\n },\n edges: function edges(selector) {\n return this.filter(function (ele) {\n return ele.isEdge();\n }).filter(selector);\n },\n // internal helper to get nodes and edges as separate collections with single iteration over elements\n byGroup: function byGroup() {\n var nodes = this.spawn();\n var edges = this.spawn();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n if (ele.isNode()) {\n nodes.push(ele);\n } else {\n edges.push(ele);\n }\n }\n\n return {\n nodes: nodes,\n edges: edges\n };\n },\n filter: function filter(_filter, thisArg) {\n if (_filter === undefined) {\n // check this first b/c it's the most common/performant case\n return this;\n } else if (string(_filter) || elementOrCollection(_filter)) {\n return new Selector(_filter).filter(this);\n } else if (fn$6(_filter)) {\n var filterEles = this.spawn();\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles);\n\n if (include) {\n filterEles.push(ele);\n }\n }\n\n return filterEles;\n }\n\n return this.spawn(); // if not handled by above, give 'em an empty collection\n },\n not: function not(toRemove) {\n if (!toRemove) {\n return this;\n } else {\n if (string(toRemove)) {\n toRemove = this.filter(toRemove);\n }\n\n var elements = this.spawn();\n\n for (var i = 0; i < this.length; i++) {\n var element = this[i];\n var remove = toRemove.has(element);\n\n if (!remove) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n },\n absoluteComplement: function absoluteComplement() {\n var cy = this.cy();\n return cy.mutableElements().not(this);\n },\n intersect: function intersect(other) {\n // if a selector is specified, then filter by it instead\n if (string(other)) {\n var selector = other;\n return this.filter(selector);\n }\n\n var elements = this.spawn();\n var col1 = this;\n var col2 = other;\n var col1Smaller = this.length < other.length;\n var colS = col1Smaller ? col1 : col2;\n var colL = col1Smaller ? col2 : col1;\n\n for (var i = 0; i < colS.length; i++) {\n var ele = colS[i];\n\n if (colL.has(ele)) {\n elements.push(ele);\n }\n }\n\n return elements;\n },\n xor: function xor(other) {\n var cy = this._private.cy;\n\n if (string(other)) {\n other = cy.$(other);\n }\n\n var elements = this.spawn();\n var col1 = this;\n var col2 = other;\n\n var add = function add(col, other) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n\n if (!inOther) {\n elements.push(ele);\n }\n }\n };\n\n add(col1, col2);\n add(col2, col1);\n return elements;\n },\n diff: function diff(other) {\n var cy = this._private.cy;\n\n if (string(other)) {\n other = cy.$(other);\n }\n\n var left = this.spawn();\n var right = this.spawn();\n var both = this.spawn();\n var col1 = this;\n var col2 = other;\n\n var add = function add(col, other, retEles) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n\n if (inOther) {\n both.merge(ele);\n } else {\n retEles.push(ele);\n }\n }\n };\n\n add(col1, col2, left);\n add(col2, col1, right);\n return {\n left: left,\n right: right,\n both: both\n };\n },\n add: function add(toAdd) {\n var cy = this._private.cy;\n\n if (!toAdd) {\n return this;\n }\n\n if (string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n\n var elements = this.spawnSelf();\n\n for (var i = 0; i < toAdd.length; i++) {\n var ele = toAdd[i];\n var add = !this.has(ele);\n\n if (add) {\n elements.push(ele);\n }\n }\n\n return elements;\n },\n // in place merge on calling collection\n merge: function merge(toAdd) {\n var _p = this._private;\n var cy = _p.cy;\n\n if (!toAdd) {\n return this;\n }\n\n if (toAdd && string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n\n var map = _p.map;\n\n for (var i = 0; i < toAdd.length; i++) {\n var toAddEle = toAdd[i];\n var id = toAddEle._private.data.id;\n var add = !map.has(id);\n\n if (add) {\n var index = this.length++;\n this[index] = toAddEle;\n map.set(id, {\n ele: toAddEle,\n index: index\n });\n }\n }\n\n return this; // chaining\n },\n unmergeAt: function unmergeAt(i) {\n var ele = this[i];\n var id = ele.id();\n var _p = this._private;\n var map = _p.map; // remove ele\n\n this[i] = undefined;\n map[\"delete\"](id);\n var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection\n\n if (this.length > 1 && !unmergedLastEle) {\n var lastEleI = this.length - 1;\n var lastEle = this[lastEleI];\n var lastEleId = lastEle._private.data.id;\n this[lastEleI] = undefined;\n this[i] = lastEle;\n map.set(lastEleId, {\n ele: lastEle,\n index: i\n });\n } // the collection is now 1 ele smaller\n\n\n this.length--;\n return this;\n },\n // remove single ele in place in calling collection\n unmergeOne: function unmergeOne(ele) {\n ele = ele[0];\n var _p = this._private;\n var id = ele._private.data.id;\n var map = _p.map;\n var entry = map.get(id);\n\n if (!entry) {\n return this; // no need to remove\n }\n\n var i = entry.index;\n this.unmergeAt(i);\n return this;\n },\n // remove eles in place on calling collection\n unmerge: function unmerge(toRemove) {\n var cy = this._private.cy;\n\n if (!toRemove) {\n return this;\n }\n\n if (toRemove && string(toRemove)) {\n var selector = toRemove;\n toRemove = cy.mutableElements().filter(selector);\n }\n\n for (var i = 0; i < toRemove.length; i++) {\n this.unmergeOne(toRemove[i]);\n }\n\n return this; // chaining\n },\n unmergeBy: function unmergeBy(toRmFn) {\n for (var i = this.length - 1; i >= 0; i--) {\n var ele = this[i];\n\n if (toRmFn(ele)) {\n this.unmergeAt(i);\n }\n }\n\n return this;\n },\n map: function map(mapFn, thisArg) {\n var arr = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles);\n arr.push(ret);\n }\n\n return arr;\n },\n reduce: function reduce(fn, initialValue) {\n var val = initialValue;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n val = fn(val, eles[i], i, eles);\n }\n\n return val;\n },\n max: function max(valFn, thisArg) {\n var max = -Infinity;\n var maxEle;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n\n if (val > max) {\n max = val;\n maxEle = ele;\n }\n }\n\n return {\n value: max,\n ele: maxEle\n };\n },\n min: function min(valFn, thisArg) {\n var min = Infinity;\n var minEle;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n\n if (val < min) {\n min = val;\n minEle = ele;\n }\n }\n\n return {\n value: min,\n ele: minEle\n };\n }\n }; // aliases\n\n var fn$1 = elesfn$8;\n fn$1['u'] = fn$1['|'] = fn$1['+'] = fn$1.union = fn$1.or = fn$1.add;\n fn$1['\\\\'] = fn$1['!'] = fn$1['-'] = fn$1.difference = fn$1.relativeComplement = fn$1.subtract = fn$1.not;\n fn$1['n'] = fn$1['&'] = fn$1['.'] = fn$1.and = fn$1.intersection = fn$1.intersect;\n fn$1['^'] = fn$1['(+)'] = fn$1['(-)'] = fn$1.symmetricDifference = fn$1.symdiff = fn$1.xor;\n fn$1.fnFilter = fn$1.filterFn = fn$1.stdFilter = fn$1.filter;\n fn$1.complement = fn$1.abscomp = fn$1.absoluteComplement;\n\n var elesfn$7 = {\n isNode: function isNode() {\n return this.group() === 'nodes';\n },\n isEdge: function isEdge() {\n return this.group() === 'edges';\n },\n isLoop: function isLoop() {\n return this.isEdge() && this.source()[0] === this.target()[0];\n },\n isSimple: function isSimple() {\n return this.isEdge() && this.source()[0] !== this.target()[0];\n },\n group: function group() {\n var ele = this[0];\n\n if (ele) {\n return ele._private.group;\n }\n }\n };\n\n /**\n * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges),\n * and z-index (low to high). These styles affect how this applies:\n *\n * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the\n * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from\n * root to leaves of the compound graph. The last drawn is `top`.\n * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes.\n * `manual` ignores this convention and draws based on the `z-index` value setting.\n * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher\n * `z-index` will be drawn on top of an element with a lower `z-index`.\n */\n\n var zIndexSort = function zIndexSort(a, b) {\n var cy = a.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n function getDepth(ele) {\n var style = ele.pstyle('z-compound-depth');\n\n if (style.value === 'auto') {\n return hasCompoundNodes ? ele.zDepth() : 0;\n } else if (style.value === 'bottom') {\n return -1;\n } else if (style.value === 'top') {\n return MAX_INT$1;\n } // 'orphan'\n\n\n return 0;\n }\n\n var depthDiff = getDepth(a) - getDepth(b);\n\n if (depthDiff !== 0) {\n return depthDiff;\n }\n\n function getEleDepth(ele) {\n var style = ele.pstyle('z-index-compare');\n\n if (style.value === 'auto') {\n return ele.isNode() ? 1 : 0;\n } // 'manual'\n\n\n return 0;\n }\n\n var eleDiff = getEleDepth(a) - getEleDepth(b);\n\n if (eleDiff !== 0) {\n return eleDiff;\n }\n\n var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value;\n\n if (zDiff !== 0) {\n return zDiff;\n } // compare indices in the core (order added to graph w/ last on top)\n\n\n return a.poolIndex() - b.poolIndex();\n };\n\n var elesfn$6 = {\n forEach: function forEach(fn, thisArg) {\n if (fn$6(fn)) {\n var N = this.length;\n\n for (var i = 0; i < N; i++) {\n var ele = this[i];\n var ret = thisArg ? fn.apply(thisArg, [ele, i, this]) : fn(ele, i, this);\n\n if (ret === false) {\n break;\n } // exit each early on return false\n\n }\n }\n\n return this;\n },\n toArray: function toArray() {\n var array = [];\n\n for (var i = 0; i < this.length; i++) {\n array.push(this[i]);\n }\n\n return array;\n },\n slice: function slice(start, end) {\n var array = [];\n var thisSize = this.length;\n\n if (end == null) {\n end = thisSize;\n }\n\n if (start == null) {\n start = 0;\n }\n\n if (start < 0) {\n start = thisSize + start;\n }\n\n if (end < 0) {\n end = thisSize + end;\n }\n\n for (var i = start; i >= 0 && i < end && i < thisSize; i++) {\n array.push(this[i]);\n }\n\n return this.spawn(array);\n },\n size: function size() {\n return this.length;\n },\n eq: function eq(i) {\n return this[i] || this.spawn();\n },\n first: function first() {\n return this[0] || this.spawn();\n },\n last: function last() {\n return this[this.length - 1] || this.spawn();\n },\n empty: function empty() {\n return this.length === 0;\n },\n nonempty: function nonempty() {\n return !this.empty();\n },\n sort: function sort(sortFn) {\n if (!fn$6(sortFn)) {\n return this;\n }\n\n var sorted = this.toArray().sort(sortFn);\n return this.spawn(sorted);\n },\n sortByZIndex: function sortByZIndex() {\n return this.sort(zIndexSort);\n },\n zDepth: function zDepth() {\n var ele = this[0];\n\n if (!ele) {\n return undefined;\n } // let cy = ele.cy();\n\n\n var _p = ele._private;\n var group = _p.group;\n\n if (group === 'nodes') {\n var depth = _p.data.parent ? ele.parents().size() : 0;\n\n if (!ele.isParent()) {\n return MAX_INT$1 - 1; // childless nodes always on top\n }\n\n return depth;\n } else {\n var src = _p.source;\n var tgt = _p.target;\n var srcDepth = src.zDepth();\n var tgtDepth = tgt.zDepth();\n return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent\n }\n }\n };\n elesfn$6.each = elesfn$6.forEach;\n\n var defineSymbolIterator = function defineSymbolIterator() {\n var typeofUndef = \"undefined\" ;\n var isIteratorSupported = (typeof Symbol === \"undefined\" ? \"undefined\" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef\n\n if (isIteratorSupported) {\n elesfn$6[Symbol.iterator] = function () {\n var _this = this;\n\n // eslint-disable-line no-undef\n var entry = {\n value: undefined,\n done: false\n };\n var i = 0;\n var length = this.length;\n return _defineProperty$1({\n next: function next() {\n if (i < length) {\n entry.value = _this[i++];\n } else {\n entry.value = undefined;\n entry.done = true;\n }\n\n return entry;\n }\n }, Symbol.iterator, function () {\n // eslint-disable-line no-undef\n return this;\n });\n };\n }\n };\n\n defineSymbolIterator();\n\n var getLayoutDimensionOptions = defaults$g({\n nodeDimensionsIncludeLabels: false\n });\n var elesfn$5 = {\n // Calculates and returns node dimensions { x, y } based on options given\n layoutDimensions: function layoutDimensions(options) {\n options = getLayoutDimensionOptions(options);\n var dims;\n\n if (!this.takesUpSpace()) {\n dims = {\n w: 0,\n h: 0\n };\n } else if (options.nodeDimensionsIncludeLabels) {\n var bbDim = this.boundingBox();\n dims = {\n w: bbDim.w,\n h: bbDim.h\n };\n } else {\n dims = {\n w: this.outerWidth(),\n h: this.outerHeight()\n };\n } // sanitise the dimensions for external layouts (avoid division by zero)\n\n\n if (dims.w === 0 || dims.h === 0) {\n dims.w = dims.h = 1;\n }\n\n return dims;\n },\n // using standard layout options, apply position function (w/ or w/o animation)\n layoutPositions: function layoutPositions(layout, options, fn) {\n var nodes = this.nodes().filter(function (n) {\n return !n.isParent();\n });\n var cy = this.cy();\n var layoutEles = options.eles; // nodes & edges\n\n var getMemoizeKey = function getMemoizeKey(node) {\n return node.id();\n };\n\n var fnMem = memoize$1(fn, getMemoizeKey); // memoized version of position function\n\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n layout.animations = [];\n\n var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) {\n var center = {\n x: nodesBb.x1 + nodesBb.w / 2,\n y: nodesBb.y1 + nodesBb.h / 2\n };\n var spacingVector = {\n // scale from center of bounding box (not necessarily 0,0)\n x: (pos.x - center.x) * spacing,\n y: (pos.y - center.y) * spacing\n };\n return {\n x: center.x + spacingVector.x,\n y: center.y + spacingVector.y\n };\n };\n\n var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1;\n\n var spacingBb = function spacingBb() {\n if (!useSpacingFactor) {\n return null;\n }\n\n var bb = makeBoundingBox();\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = fnMem(node, i);\n expandBoundingBoxByPoint(bb, pos.x, pos.y);\n }\n\n return bb;\n };\n\n var bb = spacingBb();\n var getFinalPos = memoize$1(function (node, i) {\n var newPos = fnMem(node, i);\n\n if (useSpacingFactor) {\n var spacing = Math.abs(options.spacingFactor);\n newPos = calculateSpacing(spacing, bb, newPos);\n }\n\n if (options.transform != null) {\n newPos = options.transform(node, newPos);\n }\n\n return newPos;\n }, getMemoizeKey);\n\n if (options.animate) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var newPos = getFinalPos(node, i);\n var animateNode = options.animateFilter == null || options.animateFilter(node, i);\n\n if (animateNode) {\n var ani = node.animation({\n position: newPos,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(ani);\n } else {\n node.position(newPos);\n }\n }\n\n if (options.fit) {\n var fitAni = cy.animation({\n fit: {\n boundingBox: layoutEles.boundingBoxAt(getFinalPos),\n padding: options.padding\n },\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(fitAni);\n } else if (options.zoom !== undefined && options.pan !== undefined) {\n var zoomPanAni = cy.animation({\n zoom: options.zoom,\n pan: options.pan,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(zoomPanAni);\n }\n\n layout.animations.forEach(function (ani) {\n return ani.play();\n });\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n Promise$1.all(layout.animations.map(function (ani) {\n return ani.promise();\n })).then(function () {\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n });\n } else {\n nodes.positions(getFinalPos);\n\n if (options.fit) {\n cy.fit(options.eles, options.padding);\n }\n\n if (options.zoom != null) {\n cy.zoom(options.zoom);\n }\n\n if (options.pan) {\n cy.pan(options.pan);\n }\n\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n }\n\n return this; // chaining\n },\n layout: function layout(options) {\n var cy = this.cy();\n return cy.makeLayout(extend({}, options, {\n eles: this\n }));\n }\n }; // aliases:\n\n elesfn$5.createLayout = elesfn$5.makeLayout = elesfn$5.layout;\n\n function styleCache(key, fn, ele) {\n var _p = ele._private;\n var cache = _p.styleCache = _p.styleCache || [];\n var val;\n\n if ((val = cache[key]) != null) {\n return val;\n } else {\n val = cache[key] = fn(ele);\n return val;\n }\n }\n\n function cacheStyleFunction(key, fn) {\n key = hashString(key);\n return function cachedStyleFunction(ele) {\n return styleCache(key, fn, ele);\n };\n }\n\n function cachePrototypeStyleFunction(key, fn) {\n key = hashString(key);\n\n var selfFn = function selfFn(ele) {\n return fn.call(ele);\n };\n\n return function cachedPrototypeStyleFunction() {\n var ele = this[0];\n\n if (ele) {\n return styleCache(key, selfFn, ele);\n }\n };\n }\n\n var elesfn$4 = {\n recalculateRenderedStyle: function recalculateRenderedStyle(useCache) {\n var cy = this.cy();\n var renderer = cy.renderer();\n var styleEnabled = cy.styleEnabled();\n\n if (renderer && styleEnabled) {\n renderer.recalculateRenderedStyle(this, useCache);\n }\n\n return this;\n },\n dirtyStyleCache: function dirtyStyleCache() {\n var cy = this.cy();\n\n var dirty = function dirty(ele) {\n return ele._private.styleCache = null;\n };\n\n if (cy.hasCompoundNodes()) {\n var eles;\n eles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n eles.merge(eles.connectedEdges());\n eles.forEach(dirty);\n } else {\n this.forEach(function (ele) {\n dirty(ele);\n ele.connectedEdges().forEach(dirty);\n });\n }\n\n return this;\n },\n // fully updates (recalculates) the style for the elements\n updateStyle: function updateStyle(notifyRenderer) {\n var cy = this._private.cy;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n if (cy.batching()) {\n var bEles = cy._private.batchStyleEles;\n bEles.merge(this);\n return this; // chaining and exit early when batching\n }\n\n var hasCompounds = cy.hasCompoundNodes();\n var updatedEles = this;\n notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false;\n\n if (hasCompounds) {\n // then add everything up and down for compound selector checks\n updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n } // let changedEles = style.apply( updatedEles );\n\n\n var changedEles = updatedEles;\n\n if (notifyRenderer) {\n changedEles.emitAndNotify('style'); // let renderer know we changed style\n } else {\n changedEles.emit('style'); // just fire the event\n }\n\n updatedEles.forEach(function (ele) {\n return ele._private.styleDirty = true;\n });\n return this; // chaining\n },\n // private: clears dirty flag and recalculates style\n cleanStyle: function cleanStyle() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return;\n }\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n if (ele._private.styleDirty) {\n // n.b. this flag should be set before apply() to avoid potential infinite recursion\n ele._private.styleDirty = false;\n cy.style().apply(ele);\n }\n }\n },\n // get the internal parsed style object for the specified property\n parsedStyle: function parsedStyle(property) {\n var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var ele = this[0];\n var cy = ele.cy();\n\n if (!cy.styleEnabled()) {\n return;\n }\n\n if (ele) {\n this.cleanStyle();\n var overriddenStyle = ele._private.style[property];\n\n if (overriddenStyle != null) {\n return overriddenStyle;\n } else if (includeNonDefault) {\n return cy.style().getDefaultProperty(property);\n } else {\n return null;\n }\n }\n },\n numericStyle: function numericStyle(property) {\n var ele = this[0];\n\n if (!ele.cy().styleEnabled()) {\n return;\n }\n\n if (ele) {\n var pstyle = ele.pstyle(property);\n return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value;\n }\n },\n numericStyleUnits: function numericStyleUnits(property) {\n var ele = this[0];\n\n if (!ele.cy().styleEnabled()) {\n return;\n }\n\n if (ele) {\n return ele.pstyle(property).units;\n }\n },\n // get the specified css property as a rendered value (i.e. on-screen value)\n // or get the whole rendered style if no property specified (NB doesn't allow setting)\n renderedStyle: function renderedStyle(property) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var ele = this[0];\n\n if (ele) {\n return cy.style().getRenderedStyle(ele, property);\n }\n },\n // read the calculated css style of the element or override the style (via a bypass)\n style: function style(name, value) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var updateTransitions = false;\n var style = cy.style();\n\n if (plainObject(name)) {\n // then extend the bypass\n var props = name;\n style.applyBypass(this, props, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n } else if (string(name)) {\n if (value === undefined) {\n // then get the property from the style\n var ele = this[0];\n\n if (ele) {\n return style.getStylePropertyValue(ele, name);\n } else {\n // empty collection => can't get any value\n return;\n }\n } else {\n // then set the bypass with the property value\n style.applyBypass(this, name, value, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n }\n } else if (name === undefined) {\n var _ele = this[0];\n\n if (_ele) {\n return style.getRawStyle(_ele);\n } else {\n // empty collection => can't get any value\n return;\n }\n }\n\n return this; // chaining\n },\n removeStyle: function removeStyle(names) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var updateTransitions = false;\n var style = cy.style();\n var eles = this;\n\n if (names === undefined) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n style.removeAllBypasses(ele, updateTransitions);\n }\n } else {\n names = names.split(/\\s+/);\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele2 = eles[_i];\n style.removeBypasses(_ele2, names, updateTransitions);\n }\n }\n\n this.emitAndNotify('style'); // let the renderer know we've updated style\n\n return this; // chaining\n },\n show: function show() {\n this.css('display', 'element');\n return this; // chaining\n },\n hide: function hide() {\n this.css('display', 'none');\n return this; // chaining\n },\n effectiveOpacity: function effectiveOpacity() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return 1;\n }\n\n var hasCompoundNodes = cy.hasCompoundNodes();\n var ele = this[0];\n\n if (ele) {\n var _p = ele._private;\n var parentOpacity = ele.pstyle('opacity').value;\n\n if (!hasCompoundNodes) {\n return parentOpacity;\n }\n\n var parents = !_p.data.parent ? null : ele.parents();\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n var opacity = parent.pstyle('opacity').value;\n parentOpacity = opacity * parentOpacity;\n }\n }\n\n return parentOpacity;\n }\n },\n transparent: function transparent() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = this[0];\n var hasCompoundNodes = ele.cy().hasCompoundNodes();\n\n if (ele) {\n if (!hasCompoundNodes) {\n return ele.pstyle('opacity').value === 0;\n } else {\n return ele.effectiveOpacity() === 0;\n }\n }\n },\n backgrounding: function backgrounding() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = this[0];\n return ele._private.backgrounding ? true : false;\n }\n };\n\n function checkCompound(ele, parentOk) {\n var _p = ele._private;\n var parents = _p.data.parent ? ele.parents() : null;\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n\n if (!parentOk(parent)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n function defineDerivedStateFunction(specs) {\n var ok = specs.ok;\n var edgeOkViaNode = specs.edgeOkViaNode || specs.ok;\n var parentOk = specs.parentOk || specs.ok;\n return function () {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return true;\n }\n\n var ele = this[0];\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n if (ele) {\n var _p = ele._private;\n\n if (!ok(ele)) {\n return false;\n }\n\n if (ele.isNode()) {\n return !hasCompoundNodes || checkCompound(ele, parentOk);\n } else {\n var src = _p.source;\n var tgt = _p.target;\n return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode)));\n }\n }\n };\n }\n\n var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) {\n return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true);\n });\n elesfn$4.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({\n ok: eleTakesUpSpace\n }));\n var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) {\n return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele);\n });\n var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) {\n return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent);\n });\n elesfn$4.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({\n ok: eleInteractive,\n parentOk: parentInteractive,\n edgeOkViaNode: eleTakesUpSpace\n }));\n\n elesfn$4.noninteractive = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele.interactive();\n }\n };\n\n var eleVisible = cacheStyleFunction('eleVisible', function (ele) {\n return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele);\n });\n var edgeVisibleViaNode = eleTakesUpSpace;\n elesfn$4.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({\n ok: eleVisible,\n edgeOkViaNode: edgeVisibleViaNode\n }));\n\n elesfn$4.hidden = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele.visible();\n }\n };\n\n elesfn$4.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () {\n if (!this.cy().styleEnabled()) {\n return false;\n }\n\n return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace();\n });\n elesfn$4.bypass = elesfn$4.css = elesfn$4.style;\n elesfn$4.renderedCss = elesfn$4.renderedStyle;\n elesfn$4.removeBypass = elesfn$4.removeCss = elesfn$4.removeStyle;\n elesfn$4.pstyle = elesfn$4.parsedStyle;\n\n var elesfn$3 = {};\n\n function defineSwitchFunction(params) {\n return function () {\n var args = arguments;\n var changedEles = []; // e.g. cy.nodes().select( data, handler )\n\n if (args.length === 2) {\n var data = args[0];\n var handler = args[1];\n this.on(params.event, data, handler);\n } // e.g. cy.nodes().select( handler )\n else if (args.length === 1 && fn$6(args[0])) {\n var _handler = args[0];\n this.on(params.event, _handler);\n } // e.g. cy.nodes().select()\n // e.g. (private) cy.nodes().select(['tapselect'])\n else if (args.length === 0 || args.length === 1 && array(args[0])) {\n var addlEvents = args.length === 1 ? args[0] : null;\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var able = !params.ableField || ele._private[params.ableField];\n var changed = ele._private[params.field] != params.value;\n\n if (params.overrideAble) {\n var overrideAble = params.overrideAble(ele);\n\n if (overrideAble !== undefined) {\n able = overrideAble;\n\n if (!overrideAble) {\n return this;\n } // to save cycles assume not able for all on override\n\n }\n }\n\n if (able) {\n ele._private[params.field] = params.value;\n\n if (changed) {\n changedEles.push(ele);\n }\n }\n }\n\n var changedColl = this.spawn(changedEles);\n changedColl.updateStyle(); // change of state => possible change of style\n\n changedColl.emit(params.event);\n\n if (addlEvents) {\n changedColl.emit(addlEvents);\n }\n }\n\n return this;\n };\n }\n\n function defineSwitchSet(params) {\n elesfn$3[params.field] = function () {\n var ele = this[0];\n\n if (ele) {\n if (params.overrideField) {\n var val = params.overrideField(ele);\n\n if (val !== undefined) {\n return val;\n }\n }\n\n return ele._private[params.field];\n }\n };\n\n elesfn$3[params.on] = defineSwitchFunction({\n event: params.on,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: true\n });\n elesfn$3[params.off] = defineSwitchFunction({\n event: params.off,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: false\n });\n }\n\n defineSwitchSet({\n field: 'locked',\n overrideField: function overrideField(ele) {\n return ele.cy().autolock() ? true : undefined;\n },\n on: 'lock',\n off: 'unlock'\n });\n defineSwitchSet({\n field: 'grabbable',\n overrideField: function overrideField(ele) {\n return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;\n },\n on: 'grabify',\n off: 'ungrabify'\n });\n defineSwitchSet({\n field: 'selected',\n ableField: 'selectable',\n overrideAble: function overrideAble(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'select',\n off: 'unselect'\n });\n defineSwitchSet({\n field: 'selectable',\n overrideField: function overrideField(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'selectify',\n off: 'unselectify'\n });\n elesfn$3.deselect = elesfn$3.unselect;\n\n elesfn$3.grabbed = function () {\n var ele = this[0];\n\n if (ele) {\n return ele._private.grabbed;\n }\n };\n\n defineSwitchSet({\n field: 'active',\n on: 'activate',\n off: 'unactivate'\n });\n defineSwitchSet({\n field: 'pannable',\n on: 'panify',\n off: 'unpanify'\n });\n\n elesfn$3.inactive = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele._private.active;\n }\n };\n\n var elesfn$2 = {}; // DAG functions\n ////////////////\n\n var defineDagExtremity = function defineDagExtremity(params) {\n return function dagExtremityImpl(selector) {\n var eles = this;\n var ret = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n var disqualified = false;\n var edges = ele.connectedEdges();\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n\n if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) {\n disqualified = true;\n break;\n }\n }\n\n if (!disqualified) {\n ret.push(ele);\n }\n }\n\n return this.spawn(ret, true).filter(selector);\n };\n };\n\n var defineDagOneHop = function defineDagOneHop(params) {\n return function (selector) {\n var eles = this;\n var oEles = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n var edges = ele.connectedEdges();\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n\n if (params.outgoing && src === ele) {\n oEles.push(edge);\n oEles.push(tgt);\n } else if (params.incoming && tgt === ele) {\n oEles.push(edge);\n oEles.push(src);\n }\n }\n }\n\n return this.spawn(oEles, true).filter(selector);\n };\n };\n\n var defineDagAllHops = function defineDagAllHops(params) {\n return function (selector) {\n var eles = this;\n var sEles = [];\n var sElesIds = {};\n\n for (;;) {\n var next = params.outgoing ? eles.outgoers() : eles.incomers();\n\n if (next.length === 0) {\n break;\n } // done if none left\n\n\n var newNext = false;\n\n for (var i = 0; i < next.length; i++) {\n var n = next[i];\n var nid = n.id();\n\n if (!sElesIds[nid]) {\n sElesIds[nid] = true;\n sEles.push(n);\n newNext = true;\n }\n }\n\n if (!newNext) {\n break;\n } // done if touched all outgoers already\n\n\n eles = next;\n }\n\n return this.spawn(sEles, true).filter(selector);\n };\n };\n\n elesfn$2.clearTraversalCache = function () {\n for (var i = 0; i < this.length; i++) {\n this[i]._private.traversalCache = null;\n }\n };\n\n extend(elesfn$2, {\n // get the root nodes in the DAG\n roots: defineDagExtremity({\n noIncomingEdges: true\n }),\n // get the leaf nodes in the DAG\n leaves: defineDagExtremity({\n noOutgoingEdges: true\n }),\n // normally called children in graph theory\n // these nodes =edges=> outgoing nodes\n outgoers: cache(defineDagOneHop({\n outgoing: true\n }), 'outgoers'),\n // aka DAG descendants\n successors: defineDagAllHops({\n outgoing: true\n }),\n // normally called parents in graph theory\n // these nodes <=edges= incoming nodes\n incomers: cache(defineDagOneHop({\n incoming: true\n }), 'incomers'),\n // aka DAG ancestors\n predecessors: defineDagAllHops({\n incoming: true\n })\n }); // Neighbourhood functions\n //////////////////////////\n\n extend(elesfn$2, {\n neighborhood: cache(function (selector) {\n var elements = [];\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n // for all nodes\n var node = nodes[i];\n var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node\n\n for (var j = 0; j < connectedEdges.length; j++) {\n var edge = connectedEdges[j];\n var src = edge.source();\n var tgt = edge.target();\n var otherNode = node === src ? tgt : src; // need check in case of loop\n\n if (otherNode.length > 0) {\n elements.push(otherNode[0]); // add node 1 hop away\n } // add connected edge\n\n\n elements.push(edge[0]);\n }\n }\n\n return this.spawn(elements, true).filter(selector);\n }, 'neighborhood'),\n closedNeighborhood: function closedNeighborhood(selector) {\n return this.neighborhood().add(this).filter(selector);\n },\n openNeighborhood: function openNeighborhood(selector) {\n return this.neighborhood(selector);\n }\n }); // aliases\n\n elesfn$2.neighbourhood = elesfn$2.neighborhood;\n elesfn$2.closedNeighbourhood = elesfn$2.closedNeighborhood;\n elesfn$2.openNeighbourhood = elesfn$2.openNeighborhood; // Edge functions\n /////////////////\n\n extend(elesfn$2, {\n source: cache(function sourceImpl(selector) {\n var ele = this[0];\n var src;\n\n if (ele) {\n src = ele._private.source || ele.cy().collection();\n }\n\n return src && selector ? src.filter(selector) : src;\n }, 'source'),\n target: cache(function targetImpl(selector) {\n var ele = this[0];\n var tgt;\n\n if (ele) {\n tgt = ele._private.target || ele.cy().collection();\n }\n\n return tgt && selector ? tgt.filter(selector) : tgt;\n }, 'target'),\n sources: defineSourceFunction({\n attr: 'source'\n }),\n targets: defineSourceFunction({\n attr: 'target'\n })\n });\n\n function defineSourceFunction(params) {\n return function sourceImpl(selector) {\n var sources = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var src = ele._private[params.attr];\n\n if (src) {\n sources.push(src);\n }\n }\n\n return this.spawn(sources, true).filter(selector);\n };\n }\n\n extend(elesfn$2, {\n edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'),\n edgesTo: cache(defineEdgesWithFunction({\n thisIsSrc: true\n }), 'edgesTo')\n });\n\n function defineEdgesWithFunction(params) {\n return function edgesWithImpl(otherNodes) {\n var elements = [];\n var cy = this._private.cy;\n var p = params || {}; // get elements if a selector is specified\n\n if (string(otherNodes)) {\n otherNodes = cy.$(otherNodes);\n }\n\n for (var h = 0; h < otherNodes.length; h++) {\n var edges = otherNodes[h]._private.edges;\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var edgeData = edge._private.data;\n var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target);\n var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target);\n var edgeConnectsThisAndOther = thisToOther || otherToThis;\n\n if (!edgeConnectsThisAndOther) {\n continue;\n }\n\n if (p.thisIsSrc || p.thisIsTgt) {\n if (p.thisIsSrc && !thisToOther) {\n continue;\n }\n\n if (p.thisIsTgt && !otherToThis) {\n continue;\n }\n }\n\n elements.push(edge);\n }\n }\n\n return this.spawn(elements, true);\n };\n }\n\n extend(elesfn$2, {\n connectedEdges: cache(function (selector) {\n var retEles = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var node = eles[i];\n\n if (!node.isNode()) {\n continue;\n }\n\n var edges = node._private.edges;\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n retEles.push(edge);\n }\n }\n\n return this.spawn(retEles, true).filter(selector);\n }, 'connectedEdges'),\n connectedNodes: cache(function (selector) {\n var retEles = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var edge = eles[i];\n\n if (!edge.isEdge()) {\n continue;\n }\n\n retEles.push(edge.source()[0]);\n retEles.push(edge.target()[0]);\n }\n\n return this.spawn(retEles, true).filter(selector);\n }, 'connectedNodes'),\n parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'),\n codirectedEdges: cache(defineParallelEdgesFunction({\n codirected: true\n }), 'codirectedEdges')\n });\n\n function defineParallelEdgesFunction(params) {\n var defaults = {\n codirected: false\n };\n params = extend({}, defaults, params);\n return function parallelEdgesImpl(selector) {\n // micro-optimised for renderer\n var elements = [];\n var edges = this.edges();\n var p = params; // look at all the edges in the collection\n\n for (var i = 0; i < edges.length; i++) {\n var edge1 = edges[i];\n var edge1_p = edge1._private;\n var src1 = edge1_p.source;\n var srcid1 = src1._private.data.id;\n var tgtid1 = edge1_p.data.target;\n var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge\n\n for (var j = 0; j < srcEdges1.length; j++) {\n var edge2 = srcEdges1[j];\n var edge2data = edge2._private.data;\n var tgtid2 = edge2data.target;\n var srcid2 = edge2data.source;\n var codirected = tgtid2 === tgtid1 && srcid2 === srcid1;\n var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2;\n\n if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) {\n elements.push(edge2);\n }\n }\n }\n\n return this.spawn(elements, true).filter(selector);\n };\n } // Misc functions\n /////////////////\n\n\n extend(elesfn$2, {\n components: function components(root) {\n var self = this;\n var cy = self.cy();\n var visited = cy.collection();\n var unvisited = root == null ? self.nodes() : root.nodes();\n var components = [];\n\n if (root != null && unvisited.empty()) {\n // root may contain only edges\n unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides\n }\n\n var visitInComponent = function visitInComponent(node, component) {\n visited.merge(node);\n unvisited.unmerge(node);\n component.merge(node);\n };\n\n if (unvisited.empty()) {\n return self.spawn();\n }\n\n var _loop = function _loop() {\n // each iteration yields a component\n var cmpt = cy.collection();\n components.push(cmpt);\n var root = unvisited[0];\n visitInComponent(root, cmpt);\n self.bfs({\n directed: false,\n roots: root,\n visit: function visit(v) {\n return visitInComponent(v, cmpt);\n }\n });\n cmpt.forEach(function (node) {\n node.connectedEdges().forEach(function (e) {\n // connectedEdges() usually cached\n if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e); // forEach() only considers nodes -- sets N at call time\n }\n });\n });\n };\n\n do {\n _loop();\n } while (unvisited.length > 0);\n\n return components;\n },\n component: function component() {\n var ele = this[0];\n return ele.cy().mutableElements().components(ele)[0];\n }\n });\n elesfn$2.componentsOf = elesfn$2.components;\n\n var Collection = function Collection(cy, elements) {\n var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var removed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (cy === undefined) {\n error('A collection must have a reference to the core');\n return;\n }\n\n var map = new Map$2();\n var createdElements = false;\n\n if (!elements) {\n elements = [];\n } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) {\n createdElements = true; // make elements from json and restore all at once later\n\n var eles = [];\n var elesIds = new Set$1();\n\n for (var i = 0, l = elements.length; i < l; i++) {\n var json = elements[i];\n\n if (json.data == null) {\n json.data = {};\n }\n\n var _data = json.data; // make sure newly created elements have valid ids\n\n if (_data.id == null) {\n _data.id = uuid();\n } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) {\n continue; // can't create element if prior id already exists\n }\n\n var ele = new Element(cy, json, false);\n eles.push(ele);\n elesIds.add(_data.id);\n }\n\n elements = eles;\n }\n\n this.length = 0;\n\n for (var _i = 0, _l = elements.length; _i < _l; _i++) {\n var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements\n\n if (element$1 == null) {\n continue;\n }\n\n var id = element$1._private.data.id;\n\n if (!unique || !map.has(id)) {\n if (unique) {\n map.set(id, {\n index: this.length,\n ele: element$1\n });\n }\n\n this[this.length] = element$1;\n this.length++;\n }\n }\n\n this._private = {\n eles: this,\n cy: cy,\n\n get map() {\n if (this.lazyMap == null) {\n this.rebuildMap();\n }\n\n return this.lazyMap;\n },\n\n set map(m) {\n this.lazyMap = m;\n },\n\n rebuildMap: function rebuildMap() {\n var m = this.lazyMap = new Map$2();\n var eles = this.eles;\n\n for (var _i2 = 0; _i2 < eles.length; _i2++) {\n var _ele = eles[_i2];\n m.set(_ele.id(), {\n index: _i2,\n ele: _ele\n });\n }\n }\n };\n\n if (unique) {\n this._private.map = map;\n } // restore the elements if we created them from json\n\n\n if (createdElements && !removed) {\n this.restore();\n }\n }; // Functions\n ////////////////////////////////////////////////////////////////////////////////////////////////////\n // keep the prototypes in sync (an element has the same functions as a collection)\n // and use elefn and elesfn as shorthands to the prototypes\n\n\n var elesfn$1 = Element.prototype = Collection.prototype = Object.create(Array.prototype);\n\n elesfn$1.instanceString = function () {\n return 'collection';\n };\n\n elesfn$1.spawn = function (eles, unique) {\n return new Collection(this.cy(), eles, unique);\n };\n\n elesfn$1.spawnSelf = function () {\n return this.spawn(this);\n };\n\n elesfn$1.cy = function () {\n return this._private.cy;\n };\n\n elesfn$1.renderer = function () {\n return this._private.cy.renderer();\n };\n\n elesfn$1.element = function () {\n return this[0];\n };\n\n elesfn$1.collection = function () {\n if (collection(this)) {\n return this;\n } else {\n // an element\n return new Collection(this._private.cy, [this]);\n }\n };\n\n elesfn$1.unique = function () {\n return new Collection(this._private.cy, this, true);\n };\n\n elesfn$1.hasElementWithId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.has(id);\n };\n\n elesfn$1.getElementById = function (id) {\n id = '' + id; // id must be string\n\n var cy = this._private.cy;\n\n var entry = this._private.map.get(id);\n\n return entry ? entry.ele : new Collection(cy); // get ele or empty collection\n };\n\n elesfn$1.$id = elesfn$1.getElementById;\n\n elesfn$1.poolIndex = function () {\n var cy = this._private.cy;\n var eles = cy._private.elements;\n var id = this[0]._private.data.id;\n return eles._private.map.get(id).index;\n };\n\n elesfn$1.indexOf = function (ele) {\n var id = ele[0]._private.data.id;\n return this._private.map.get(id).index;\n };\n\n elesfn$1.indexOfId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.get(id).index;\n };\n\n elesfn$1.json = function (obj) {\n var ele = this.element();\n var cy = this.cy();\n\n if (ele == null && obj) {\n return this;\n } // can't set to no eles\n\n\n if (ele == null) {\n return undefined;\n } // can't get from no eles\n\n\n var p = ele._private;\n\n if (plainObject(obj)) {\n // set\n cy.startBatch();\n\n if (obj.data) {\n ele.data(obj.data);\n var _data2 = p.data;\n\n if (ele.isEdge()) {\n // source and target are immutable via data()\n var move = false;\n var spec = {};\n var src = obj.data.source;\n var tgt = obj.data.target;\n\n if (src != null && src != _data2.source) {\n spec.source = '' + src; // id must be string\n\n move = true;\n }\n\n if (tgt != null && tgt != _data2.target) {\n spec.target = '' + tgt; // id must be string\n\n move = true;\n }\n\n if (move) {\n ele = ele.move(spec);\n }\n } else {\n // parent is immutable via data()\n var newParentValSpecd = ('parent' in obj.data);\n var parent = obj.data.parent;\n\n if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) {\n if (parent === undefined) {\n // can't set undefined imperatively, so use null\n parent = null;\n }\n\n if (parent != null) {\n parent = '' + parent; // id must be string\n }\n\n ele = ele.move({\n parent: parent\n });\n }\n }\n }\n\n if (obj.position) {\n ele.position(obj.position);\n } // ignore group -- immutable\n\n\n var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) {\n var obj_k = obj[k];\n\n if (obj_k != null && obj_k !== p[k]) {\n if (obj_k) {\n ele[trueFnName]();\n } else {\n ele[falseFnName]();\n }\n }\n };\n\n checkSwitch('removed', 'remove', 'restore');\n checkSwitch('selected', 'select', 'unselect');\n checkSwitch('selectable', 'selectify', 'unselectify');\n checkSwitch('locked', 'lock', 'unlock');\n checkSwitch('grabbable', 'grabify', 'ungrabify');\n checkSwitch('pannable', 'panify', 'unpanify');\n\n if (obj.classes != null) {\n ele.classes(obj.classes);\n }\n\n cy.endBatch();\n return this;\n } else if (obj === undefined) {\n // get\n var json = {\n data: copy(p.data),\n position: copy(p.position),\n group: p.group,\n removed: p.removed,\n selected: p.selected,\n selectable: p.selectable,\n locked: p.locked,\n grabbable: p.grabbable,\n pannable: p.pannable,\n classes: null\n };\n json.classes = '';\n var i = 0;\n p.classes.forEach(function (cls) {\n return json.classes += i++ === 0 ? cls : ' ' + cls;\n });\n return json;\n }\n };\n\n elesfn$1.jsons = function () {\n var jsons = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n jsons.push(json);\n }\n\n return jsons;\n };\n\n elesfn$1.clone = function () {\n var cy = this.cy();\n var elesArr = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n var clone = new Element(cy, json, false); // NB no restore\n\n elesArr.push(clone);\n }\n\n return new Collection(cy, elesArr);\n };\n\n elesfn$1.copy = elesfn$1.clone;\n\n elesfn$1.restore = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var cy = self.cy();\n var cy_p = cy._private; // create arrays of nodes and edges, since we need to\n // restore the nodes first\n\n var nodes = [];\n var edges = [];\n var elements;\n\n for (var _i3 = 0, l = self.length; _i3 < l; _i3++) {\n var ele = self[_i3];\n\n if (addToPool && !ele.removed()) {\n // don't need to handle this ele\n continue;\n } // keep nodes first in the array and edges after\n\n\n if (ele.isNode()) {\n // put to front of array if node\n nodes.push(ele);\n } else {\n // put to end of array if edge\n edges.push(ele);\n }\n }\n\n elements = nodes.concat(edges);\n var i;\n\n var removeFromElements = function removeFromElements() {\n elements.splice(i, 1);\n i--;\n }; // now, restore each element\n\n\n for (i = 0; i < elements.length; i++) {\n var _ele2 = elements[i];\n var _private = _ele2._private;\n var _data3 = _private.data; // the traversal cache should start fresh when ele is added\n\n _ele2.clearTraversalCache(); // set id and validate\n\n\n if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) {\n _data3.id = uuid();\n } else if (number$1(_data3.id)) {\n _data3.id = '' + _data3.id; // now it's a string\n } else if (emptyString(_data3.id) || !string(_data3.id)) {\n error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id\n\n removeFromElements();\n continue;\n } else if (cy.hasElementWithId(_data3.id)) {\n error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id\n\n removeFromElements();\n continue;\n }\n\n var id = _data3.id; // id is finalised, now let's keep a ref\n\n if (_ele2.isNode()) {\n // extra checks for nodes\n var pos = _private.position; // make sure the nodes have a defined position\n\n if (pos.x == null) {\n pos.x = 0;\n }\n\n if (pos.y == null) {\n pos.y = 0;\n }\n }\n\n if (_ele2.isEdge()) {\n // extra checks for edges\n var edge = _ele2;\n var fields = ['source', 'target'];\n var fieldsLength = fields.length;\n var badSourceOrTarget = false;\n\n for (var j = 0; j < fieldsLength; j++) {\n var field = fields[j];\n var val = _data3[field];\n\n if (number$1(val)) {\n val = _data3[field] = '' + _data3[field]; // now string\n }\n\n if (val == null || val === '') {\n // can't create if source or target is not defined properly\n error('Can not create edge `' + id + '` with unspecified ' + field);\n badSourceOrTarget = true;\n } else if (!cy.hasElementWithId(val)) {\n // can't create edge if one of its nodes doesn't exist\n error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`');\n badSourceOrTarget = true;\n }\n }\n\n if (badSourceOrTarget) {\n removeFromElements();\n continue;\n } // can't create this\n\n\n var src = cy.getElementById(_data3.source);\n var tgt = cy.getElementById(_data3.target); // only one edge in node if loop\n\n if (src.same(tgt)) {\n src._private.edges.push(edge);\n } else {\n src._private.edges.push(edge);\n\n tgt._private.edges.push(edge);\n }\n\n edge._private.source = src;\n edge._private.target = tgt;\n } // if is edge\n // create mock ids / indexes maps for element so it can be used like collections\n\n\n _private.map = new Map$2();\n\n _private.map.set(id, {\n ele: _ele2,\n index: 0\n });\n\n _private.removed = false;\n\n if (addToPool) {\n cy.addToPool(_ele2);\n }\n } // for each element\n // do compound node sanity checks\n\n\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n // each node\n var node = nodes[_i4];\n var _data4 = node._private.data;\n\n if (number$1(_data4.parent)) {\n // then automake string\n _data4.parent = '' + _data4.parent;\n }\n\n var parentId = _data4.parent;\n var specifiedParent = parentId != null;\n\n if (specifiedParent || node._private.parent) {\n var parent = node._private.parent ? cy.collection().merge(node._private.parent) : cy.getElementById(parentId);\n\n if (parent.empty()) {\n // non-existant parent; just remove it\n _data4.parent = undefined;\n } else if (parent[0].removed()) {\n warn('Node added with missing parent, reference to parent removed');\n _data4.parent = undefined;\n node._private.parent = null;\n } else {\n var selfAsParent = false;\n var ancestor = parent;\n\n while (!ancestor.empty()) {\n if (node.same(ancestor)) {\n // mark self as parent and remove from data\n selfAsParent = true;\n _data4.parent = undefined; // remove parent reference\n // exit or we loop forever\n\n break;\n }\n\n ancestor = ancestor.parent();\n }\n\n if (!selfAsParent) {\n // connect with children\n parent[0]._private.children.push(node);\n\n node._private.parent = parent[0]; // let the core know we have a compound graph\n\n cy_p.hasCompoundNodes = true;\n }\n } // else\n\n } // if specified parent\n\n } // for each node\n\n\n if (elements.length > 0) {\n var restored = elements.length === self.length ? self : new Collection(cy, elements);\n\n for (var _i5 = 0; _i5 < restored.length; _i5++) {\n var _ele3 = restored[_i5];\n\n if (_ele3.isNode()) {\n continue;\n } // adding an edge invalidates the traversal caches for the parallel edges\n\n\n _ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes\n\n\n _ele3.source().clearTraversalCache();\n\n _ele3.target().clearTraversalCache();\n }\n\n var toUpdateStyle;\n\n if (cy_p.hasCompoundNodes) {\n toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent());\n } else {\n toUpdateStyle = restored;\n }\n\n toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer);\n\n if (notifyRenderer) {\n restored.emitAndNotify('add');\n } else if (addToPool) {\n restored.emit('add');\n }\n }\n\n return self; // chainability\n };\n\n elesfn$1.removed = function () {\n var ele = this[0];\n return ele && ele._private.removed;\n };\n\n elesfn$1.inside = function () {\n var ele = this[0];\n return ele && !ele._private.removed;\n };\n\n elesfn$1.remove = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var elesToRemove = [];\n var elesToRemoveIds = {};\n var cy = self._private.cy; // add connected edges\n\n function addConnectedEdges(node) {\n var edges = node._private.edges;\n\n for (var i = 0; i < edges.length; i++) {\n add(edges[i]);\n }\n } // add descendant nodes\n\n\n function addChildren(node) {\n var children = node._private.children;\n\n for (var i = 0; i < children.length; i++) {\n add(children[i]);\n }\n }\n\n function add(ele) {\n var alreadyAdded = elesToRemoveIds[ele.id()];\n\n if (removeFromPool && ele.removed() || alreadyAdded) {\n return;\n } else {\n elesToRemoveIds[ele.id()] = true;\n }\n\n if (ele.isNode()) {\n elesToRemove.push(ele); // nodes are removed last\n\n addConnectedEdges(ele);\n addChildren(ele);\n } else {\n elesToRemove.unshift(ele); // edges are removed first\n }\n } // make the list of elements to remove\n // (may be removing more than specified due to connected edges etc)\n\n\n for (var i = 0, l = self.length; i < l; i++) {\n var ele = self[i];\n add(ele);\n }\n\n function removeEdgeRef(node, edge) {\n var connectedEdges = node._private.edges;\n removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes\n\n node.clearTraversalCache();\n }\n\n function removeParallelRef(pllEdge) {\n // removing an edge invalidates the traversal caches for the parallel edges\n pllEdge.clearTraversalCache();\n }\n\n var alteredParents = [];\n alteredParents.ids = {};\n\n function removeChildRef(parent, ele) {\n ele = ele[0];\n parent = parent[0];\n var children = parent._private.children;\n var pid = parent.id();\n removeFromArray(children, ele); // remove parent => child ref\n\n ele._private.parent = null; // remove child => parent ref\n\n if (!alteredParents.ids[pid]) {\n alteredParents.ids[pid] = true;\n alteredParents.push(parent);\n }\n }\n\n self.dirtyCompoundBoundsCache();\n\n if (removeFromPool) {\n cy.removeFromPool(elesToRemove); // remove from core pool\n }\n\n for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) {\n var _ele4 = elesToRemove[_i6];\n\n if (_ele4.isEdge()) {\n // remove references to this edge in its connected nodes\n var src = _ele4.source()[0];\n\n var tgt = _ele4.target()[0];\n\n removeEdgeRef(src, _ele4);\n removeEdgeRef(tgt, _ele4);\n\n var pllEdges = _ele4.parallelEdges();\n\n for (var j = 0; j < pllEdges.length; j++) {\n var pllEdge = pllEdges[j];\n removeParallelRef(pllEdge);\n\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n }\n } else {\n // remove reference to parent\n var parent = _ele4.parent();\n\n if (parent.length !== 0) {\n removeChildRef(parent, _ele4);\n }\n }\n\n if (removeFromPool) {\n // mark as removed\n _ele4._private.removed = true;\n }\n } // check to see if we have a compound graph or not\n\n\n var elesStillInside = cy._private.elements;\n cy._private.hasCompoundNodes = false;\n\n for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) {\n var _ele5 = elesStillInside[_i7];\n\n if (_ele5.isParent()) {\n cy._private.hasCompoundNodes = true;\n break;\n }\n }\n\n var removedElements = new Collection(this.cy(), elesToRemove);\n\n if (removedElements.size() > 0) {\n // must manually notify since trigger won't do this automatically once removed\n if (notifyRenderer) {\n removedElements.emitAndNotify('remove');\n } else if (removeFromPool) {\n removedElements.emit('remove');\n }\n } // the parents who were modified by the removal need their style updated\n\n\n for (var _i8 = 0; _i8 < alteredParents.length; _i8++) {\n var _ele6 = alteredParents[_i8];\n\n if (!removeFromPool || !_ele6.removed()) {\n _ele6.updateStyle();\n }\n }\n\n return removedElements;\n };\n\n elesfn$1.move = function (struct) {\n var cy = this._private.cy;\n var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring\n // (our calls to remove/restore do not remove from the graph or make events)\n\n var notifyRenderer = false;\n var modifyPool = false;\n\n var toString = function toString(id) {\n return id == null ? id : '' + id;\n }; // id must be string\n\n\n if (struct.source !== undefined || struct.target !== undefined) {\n var srcId = toString(struct.source);\n var tgtId = toString(struct.target);\n var srcExists = srcId != null && cy.hasElementWithId(srcId);\n var tgtExists = tgtId != null && cy.hasElementWithId(tgtId);\n\n if (srcExists || tgtExists) {\n cy.batch(function () {\n // avoid duplicate style updates\n eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n\n eles.emitAndNotify('moveout');\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data5 = ele._private.data;\n\n if (ele.isEdge()) {\n if (srcExists) {\n _data5.source = srcId;\n }\n\n if (tgtExists) {\n _data5.target = tgtId;\n }\n }\n }\n\n eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n eles.emitAndNotify('move');\n }\n } else if (struct.parent !== undefined) {\n // move node to new parent\n var parentId = toString(struct.parent);\n var parentExists = parentId === null || cy.hasElementWithId(parentId);\n\n if (parentExists) {\n var pidToAssign = parentId === null ? undefined : parentId;\n cy.batch(function () {\n // avoid duplicate style updates\n var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n\n updated.emitAndNotify('moveout');\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data6 = ele._private.data;\n\n if (ele.isNode()) {\n _data6.parent = pidToAssign;\n }\n }\n\n updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n eles.emitAndNotify('move');\n }\n }\n\n return this;\n };\n\n [elesfn$j, elesfn$i, elesfn$h, elesfn$g, elesfn$f, data, elesfn$d, dimensions, elesfn$9, elesfn$8, elesfn$7, elesfn$6, elesfn$5, elesfn$4, elesfn$3, elesfn$2].forEach(function (props) {\n extend(elesfn$1, props);\n });\n\n var corefn$9 = {\n add: function add(opts) {\n var elements;\n var cy = this; // add the elements\n\n if (elementOrCollection(opts)) {\n var eles = opts;\n\n if (eles._private.cy === cy) {\n // same instance => just restore\n elements = eles.restore();\n } else {\n // otherwise, copy from json\n var jsons = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n jsons.push(ele.json());\n }\n\n elements = new Collection(cy, jsons);\n }\n } // specify an array of options\n else if (array(opts)) {\n var _jsons = opts;\n elements = new Collection(cy, _jsons);\n } // specify via opts.nodes and opts.edges\n else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) {\n var elesByGroup = opts;\n var _jsons2 = [];\n var grs = ['nodes', 'edges'];\n\n for (var _i = 0, il = grs.length; _i < il; _i++) {\n var group = grs[_i];\n var elesArray = elesByGroup[group];\n\n if (array(elesArray)) {\n for (var j = 0, jl = elesArray.length; j < jl; j++) {\n var json = extend({\n group: group\n }, elesArray[j]);\n\n _jsons2.push(json);\n }\n }\n }\n\n elements = new Collection(cy, _jsons2);\n } // specify options for one element\n else {\n var _json = opts;\n elements = new Element(cy, _json).collection();\n }\n\n return elements;\n },\n remove: function remove(collection) {\n if (elementOrCollection(collection)) ; else if (string(collection)) {\n var selector = collection;\n collection = this.$(selector);\n }\n\n return collection.remove();\n }\n };\n\n /* global Float32Array */\n\n /*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n function generateCubicBezier(mX1, mY1, mX2, mY2) {\n var NEWTON_ITERATIONS = 4,\n NEWTON_MIN_SLOPE = 0.001,\n SUBDIVISION_PRECISION = 0.0000001,\n SUBDIVISION_MAX_ITERATIONS = 10,\n kSplineTableSize = 11,\n kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\n float32ArraySupported = typeof Float32Array !== 'undefined';\n /* Must contain four arguments. */\n\n if (arguments.length !== 4) {\n return false;\n }\n /* Arguments must be numbers. */\n\n\n for (var i = 0; i < 4; ++i) {\n if (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\n return false;\n }\n }\n /* X values must be in the [0, 1] range. */\n\n\n mX1 = Math.min(mX1, 1);\n mX2 = Math.min(mX2, 1);\n mX1 = Math.max(mX1, 0);\n mX2 = Math.max(mX2, 0);\n var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function newtonRaphsonIterate(aX, aGuessT) {\n for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n\n function calcSampleValues() {\n for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) {\n mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2);\n }\n }\n\n function binarySubdivide(aX, aA, aB) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function getTForX(aX) {\n var intervalStart = 0.0,\n currentSample = 1,\n lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\n guessForT = intervalStart + dist * kSampleStepSize,\n initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\n }\n }\n\n var _precomputed = false;\n\n function precompute() {\n _precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n calcSampleValues();\n }\n }\n\n var f = function f(aX) {\n if (!_precomputed) {\n precompute();\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return aX;\n }\n\n if (aX === 0) {\n return 0;\n }\n\n if (aX === 1) {\n return 1;\n }\n\n return calcBezier(getTForX(aX), mY1, mY2);\n };\n\n f.getControlPoints = function () {\n return [{\n x: mX1,\n y: mY1\n }, {\n x: mX2,\n y: mY2\n }];\n };\n\n var str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\n\n f.toString = function () {\n return str;\n };\n\n return f;\n }\n\n /*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n\n /* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\n then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\n var generateSpringRK4 = function () {\n function springAccelerationForState(state) {\n return -state.tension * state.x - state.friction * state.v;\n }\n\n function springEvaluateStateWithDerivative(initialState, dt, derivative) {\n var state = {\n x: initialState.x + derivative.dx * dt,\n v: initialState.v + derivative.dv * dt,\n tension: initialState.tension,\n friction: initialState.friction\n };\n return {\n dx: state.v,\n dv: springAccelerationForState(state)\n };\n }\n\n function springIntegrateState(state, dt) {\n var a = {\n dx: state.v,\n dv: springAccelerationForState(state)\n },\n b = springEvaluateStateWithDerivative(state, dt * 0.5, a),\n c = springEvaluateStateWithDerivative(state, dt * 0.5, b),\n d = springEvaluateStateWithDerivative(state, dt, c),\n dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\n dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\n state.x = state.x + dxdt * dt;\n state.v = state.v + dvdt * dt;\n return state;\n }\n\n return function springRK4Factory(tension, friction, duration) {\n var initState = {\n x: -1,\n v: 0,\n tension: null,\n friction: null\n },\n path = [0],\n time_lapsed = 0,\n tolerance = 1 / 10000,\n DT = 16 / 1000,\n have_duration,\n dt,\n last_state;\n tension = parseFloat(tension) || 500;\n friction = parseFloat(friction) || 20;\n duration = duration || null;\n initState.tension = tension;\n initState.friction = friction;\n have_duration = duration !== null;\n /* Calculate the actual time it takes for this animation to complete with the provided conditions. */\n\n if (have_duration) {\n /* Run the simulation without a duration. */\n time_lapsed = springRK4Factory(tension, friction);\n /* Compute the adjusted time delta. */\n\n dt = time_lapsed / duration * DT;\n } else {\n dt = DT;\n }\n\n for (;;) {\n /* Next/step function .*/\n last_state = springIntegrateState(last_state || initState, dt);\n /* Store the position. */\n\n path.push(1 + last_state.x);\n time_lapsed += 16;\n /* If the change threshold is reached, break. */\n\n if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\n break;\n }\n }\n /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\n computed path and returns a snapshot of the position according to a given percentComplete. */\n\n\n return !have_duration ? time_lapsed : function (percentComplete) {\n return path[percentComplete * (path.length - 1) | 0];\n };\n };\n }();\n\n var cubicBezier = function cubicBezier(t1, p1, t2, p2) {\n var bezier = generateCubicBezier(t1, p1, t2, p2);\n return function (start, end, percent) {\n return start + (end - start) * bezier(percent);\n };\n };\n\n var easings = {\n 'linear': function linear(start, end, percent) {\n return start + (end - start) * percent;\n },\n // default easings\n 'ease': cubicBezier(0.25, 0.1, 0.25, 1),\n 'ease-in': cubicBezier(0.42, 0, 1, 1),\n 'ease-out': cubicBezier(0, 0, 0.58, 1),\n 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1),\n // sine\n 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715),\n 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1),\n 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95),\n // quad\n 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53),\n 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94),\n 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955),\n // cubic\n 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19),\n 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1),\n 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1),\n // quart\n 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22),\n 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1),\n 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1),\n // quint\n 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06),\n 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1),\n 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1),\n // expo\n 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035),\n 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1),\n 'ease-in-out-expo': cubicBezier(1, 0, 0, 1),\n // circ\n 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335),\n 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1),\n 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86),\n // user param easings...\n 'spring': function spring(tension, friction, duration) {\n if (duration === 0) {\n // can't get a spring w/ duration 0\n return easings.linear; // duration 0 => jump to end so impl doesn't matter\n }\n\n var spring = generateSpringRK4(tension, friction, duration);\n return function (start, end, percent) {\n return start + (end - start) * spring(percent);\n };\n },\n 'cubic-bezier': cubicBezier\n };\n\n function getEasedValue(type, start, end, percent, easingFn) {\n if (percent === 1) {\n return end;\n }\n\n if (start === end) {\n return end;\n }\n\n var val = easingFn(start, end, percent);\n\n if (type == null) {\n return val;\n }\n\n if (type.roundValue || type.color) {\n val = Math.round(val);\n }\n\n if (type.min !== undefined) {\n val = Math.max(val, type.min);\n }\n\n if (type.max !== undefined) {\n val = Math.min(val, type.max);\n }\n\n return val;\n }\n\n function getValue(prop, spec) {\n if (prop.pfValue != null || prop.value != null) {\n if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) {\n return prop.pfValue;\n } else {\n return prop.value;\n }\n } else {\n return prop;\n }\n }\n\n function ease(startProp, endProp, percent, easingFn, propSpec) {\n var type = propSpec != null ? propSpec.type : null;\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n var start = getValue(startProp, propSpec);\n var end = getValue(endProp, propSpec);\n\n if (number$1(start) && number$1(end)) {\n return getEasedValue(type, start, end, percent, easingFn);\n } else if (array(start) && array(end)) {\n var easedArr = [];\n\n for (var i = 0; i < end.length; i++) {\n var si = start[i];\n var ei = end[i];\n\n if (si != null && ei != null) {\n var val = getEasedValue(type, si, ei, percent, easingFn);\n easedArr.push(val);\n } else {\n easedArr.push(ei);\n }\n }\n\n return easedArr;\n }\n\n return undefined;\n }\n\n function step$1(self, ani, now, isCore) {\n var isEles = !isCore;\n var _p = self._private;\n var ani_p = ani._private;\n var pEasing = ani_p.easing;\n var startTime = ani_p.startTime;\n var cy = isCore ? self : self.cy();\n var style = cy.style();\n\n if (!ani_p.easingImpl) {\n if (pEasing == null) {\n // use default\n ani_p.easingImpl = easings['linear'];\n } else {\n // then define w/ name\n var easingVals;\n\n if (string(pEasing)) {\n var easingProp = style.parse('transition-timing-function', pEasing);\n easingVals = easingProp.value;\n } else {\n // then assume preparsed array\n easingVals = pEasing;\n }\n\n var name, args;\n\n if (string(easingVals)) {\n name = easingVals;\n args = [];\n } else {\n name = easingVals[1];\n args = easingVals.slice(2).map(function (n) {\n return +n;\n });\n }\n\n if (args.length > 0) {\n // create with args\n if (name === 'spring') {\n args.push(ani_p.duration); // need duration to generate spring\n }\n\n ani_p.easingImpl = easings[name].apply(null, args);\n } else {\n // static impl by name\n ani_p.easingImpl = easings[name];\n }\n }\n }\n\n var easing = ani_p.easingImpl;\n var percent;\n\n if (ani_p.duration === 0) {\n percent = 1;\n } else {\n percent = (now - startTime) / ani_p.duration;\n }\n\n if (ani_p.applying) {\n percent = ani_p.progress;\n }\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n if (ani_p.delay == null) {\n // then update\n var startPos = ani_p.startPosition;\n var endPos = ani_p.position;\n\n if (endPos && isEles && !self.locked()) {\n var newPos = {};\n\n if (valid(startPos.x, endPos.x)) {\n newPos.x = ease(startPos.x, endPos.x, percent, easing);\n }\n\n if (valid(startPos.y, endPos.y)) {\n newPos.y = ease(startPos.y, endPos.y, percent, easing);\n }\n\n self.position(newPos);\n }\n\n var startPan = ani_p.startPan;\n var endPan = ani_p.pan;\n var pan = _p.pan;\n var animatingPan = endPan != null && isCore;\n\n if (animatingPan) {\n if (valid(startPan.x, endPan.x)) {\n pan.x = ease(startPan.x, endPan.x, percent, easing);\n }\n\n if (valid(startPan.y, endPan.y)) {\n pan.y = ease(startPan.y, endPan.y, percent, easing);\n }\n\n self.emit('pan');\n }\n\n var startZoom = ani_p.startZoom;\n var endZoom = ani_p.zoom;\n var animatingZoom = endZoom != null && isCore;\n\n if (animatingZoom) {\n if (valid(startZoom, endZoom)) {\n _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom);\n }\n\n self.emit('zoom');\n }\n\n if (animatingPan || animatingZoom) {\n self.emit('viewport');\n }\n\n var props = ani_p.style;\n\n if (props && props.length > 0 && isEles) {\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var _name = prop.name;\n var end = prop;\n var start = ani_p.startStyle[_name];\n var propSpec = style.properties[start.name];\n var easedVal = ease(start, end, percent, easing, propSpec);\n style.overrideBypass(self, _name, easedVal);\n } // for props\n\n\n self.emit('style');\n } // if\n\n }\n\n ani_p.progress = percent;\n return percent;\n }\n\n function valid(start, end) {\n if (start == null || end == null) {\n return false;\n }\n\n if (number$1(start) && number$1(end)) {\n return true;\n } else if (start && end) {\n return true;\n }\n\n return false;\n }\n\n function startAnimation(self, ani, now, isCore) {\n var ani_p = ani._private;\n ani_p.started = true;\n ani_p.startTime = now - ani_p.progress * ani_p.duration;\n }\n\n function stepAll(now, cy) {\n var eles = cy._private.aniEles;\n var doneEles = [];\n\n function stepOne(ele, isCore) {\n var _p = ele._private;\n var current = _p.animation.current;\n var queue = _p.animation.queue;\n var ranAnis = false; // if nothing currently animating, get something from the queue\n\n if (current.length === 0) {\n var next = queue.shift();\n\n if (next) {\n current.push(next);\n }\n }\n\n var callbacks = function callbacks(_callbacks) {\n for (var j = _callbacks.length - 1; j >= 0; j--) {\n var cb = _callbacks[j];\n cb();\n }\n\n _callbacks.splice(0, _callbacks.length);\n }; // step and remove if done\n\n\n for (var i = current.length - 1; i >= 0; i--) {\n var ani = current[i];\n var ani_p = ani._private;\n\n if (ani_p.stopped) {\n current.splice(i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.frames);\n continue;\n }\n\n if (!ani_p.playing && !ani_p.applying) {\n continue;\n } // an apply() while playing shouldn't do anything\n\n\n if (ani_p.playing && ani_p.applying) {\n ani_p.applying = false;\n }\n\n if (!ani_p.started) {\n startAnimation(ele, ani, now);\n }\n\n step$1(ele, ani, now, isCore);\n\n if (ani_p.applying) {\n ani_p.applying = false;\n }\n\n callbacks(ani_p.frames);\n\n if (ani_p.step != null) {\n ani_p.step(now);\n }\n\n if (ani.completed()) {\n current.splice(i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.completes);\n }\n\n ranAnis = true;\n }\n\n if (!isCore && current.length === 0 && queue.length === 0) {\n doneEles.push(ele);\n }\n\n return ranAnis;\n } // stepElement\n // handle all eles\n\n\n var ranEleAni = false;\n\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n var handledThisEle = stepOne(ele);\n ranEleAni = ranEleAni || handledThisEle;\n } // each element\n\n\n var ranCoreAni = stepOne(cy, true); // notify renderer\n\n if (ranEleAni || ranCoreAni) {\n if (eles.length > 0) {\n cy.notify('draw', eles);\n } else {\n cy.notify('draw');\n }\n } // remove elements from list of currently animating if its queues are empty\n\n\n eles.unmerge(doneEles);\n cy.emit('step');\n } // stepAll\n\n var corefn$8 = {\n // pull in animation functions\n animate: define.animate(),\n animation: define.animation(),\n animated: define.animated(),\n clearQueue: define.clearQueue(),\n delay: define.delay(),\n delayAnimation: define.delayAnimation(),\n stop: define.stop(),\n addToAnimationPool: function addToAnimationPool(eles) {\n var cy = this;\n\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n\n\n cy._private.aniEles.merge(eles);\n },\n stopAnimationLoop: function stopAnimationLoop() {\n this._private.animationsRunning = false;\n },\n startAnimationLoop: function startAnimationLoop() {\n var cy = this;\n cy._private.animationsRunning = true;\n\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n // NB the animation loop will exec in headless environments if style enabled\n // and explicit cy.destroy() is necessary to stop the loop\n\n\n function headlessStep() {\n if (!cy._private.animationsRunning) {\n return;\n }\n\n requestAnimationFrame(function animationStep(now) {\n stepAll(now, cy);\n headlessStep();\n });\n }\n\n var renderer = cy.renderer();\n\n if (renderer && renderer.beforeRender) {\n // let the renderer schedule animations\n renderer.beforeRender(function rendererAnimationStep(willDraw, now) {\n stepAll(now, cy);\n }, renderer.beforeRenderPriorities.animations);\n } else {\n // manage the animation loop ourselves\n headlessStep(); // first call\n }\n }\n };\n\n var emitterOptions = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(cy, listener, eventObj) {\n var selector = listener.qualifier;\n\n if (selector != null) {\n return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n\n return true;\n },\n addEventFields: function addEventFields(cy, evt) {\n evt.cy = cy;\n evt.target = cy;\n },\n callbackContext: function callbackContext(cy, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : cy;\n }\n };\n\n var argSelector = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n };\n\n var elesfn = {\n createEmitter: function createEmitter() {\n var _p = this._private;\n\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions, this);\n }\n\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n this.emitter().on(events, argSelector(selector), callback);\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n this.emitter().removeListener(events, argSelector(selector), callback);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n one: function one(events, selector, callback) {\n this.emitter().one(events, argSelector(selector), callback);\n return this;\n },\n once: function once(events, selector, callback) {\n this.emitter().one(events, argSelector(selector), callback);\n return this;\n },\n emit: function emit(events, extraParams) {\n this.emitter().emit(events, extraParams);\n return this;\n },\n emitAndNotify: function emitAndNotify(event, eles) {\n this.emit(event);\n this.notify(event, eles);\n return this;\n }\n };\n define.eventAliasesOn(elesfn);\n\n var corefn$7 = {\n png: function png(options) {\n var renderer = this._private.renderer;\n options = options || {};\n return renderer.png(options);\n },\n jpg: function jpg(options) {\n var renderer = this._private.renderer;\n options = options || {};\n options.bg = options.bg || '#fff';\n return renderer.jpg(options);\n }\n };\n corefn$7.jpeg = corefn$7.jpg;\n\n var corefn$6 = {\n layout: function layout(options) {\n var cy = this;\n\n if (options == null) {\n error('Layout options must be specified to make a layout');\n return;\n }\n\n if (options.name == null) {\n error('A `name` must be specified to make a layout');\n return;\n }\n\n var name = options.name;\n var Layout = cy.extension('layout', name);\n\n if (Layout == null) {\n error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?');\n return;\n }\n\n var eles;\n\n if (string(options.eles)) {\n eles = cy.$(options.eles);\n } else {\n eles = options.eles != null ? options.eles : cy.$();\n }\n\n var layout = new Layout(extend({}, options, {\n cy: cy,\n eles: eles\n }));\n return layout;\n }\n };\n corefn$6.createLayout = corefn$6.makeLayout = corefn$6.layout;\n\n var corefn$5 = {\n notify: function notify(eventName, eventEles) {\n var _p = this._private;\n\n if (this.batching()) {\n _p.batchNotifications = _p.batchNotifications || {};\n var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection();\n\n if (eventEles != null) {\n eles.merge(eventEles);\n }\n\n return; // notifications are disabled during batching\n }\n\n if (!_p.notificationsEnabled) {\n return;\n } // exit on disabled\n\n\n var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528\n\n if (this.destroyed() || !renderer) {\n return;\n }\n\n renderer.notify(eventName, eventEles);\n },\n notifications: function notifications(bool) {\n var p = this._private;\n\n if (bool === undefined) {\n return p.notificationsEnabled;\n } else {\n p.notificationsEnabled = bool ? true : false;\n }\n\n return this;\n },\n noNotifications: function noNotifications(callback) {\n this.notifications(false);\n callback();\n this.notifications(true);\n },\n batching: function batching() {\n return this._private.batchCount > 0;\n },\n startBatch: function startBatch() {\n var _p = this._private;\n\n if (_p.batchCount == null) {\n _p.batchCount = 0;\n }\n\n if (_p.batchCount === 0) {\n _p.batchStyleEles = this.collection();\n _p.batchNotifications = {};\n }\n\n _p.batchCount++;\n return this;\n },\n endBatch: function endBatch() {\n var _p = this._private;\n\n if (_p.batchCount === 0) {\n return this;\n }\n\n _p.batchCount--;\n\n if (_p.batchCount === 0) {\n // update style for dirty eles\n _p.batchStyleEles.updateStyle();\n\n var renderer = this.renderer(); // notify the renderer of queued eles and event types\n\n Object.keys(_p.batchNotifications).forEach(function (eventName) {\n var eles = _p.batchNotifications[eventName];\n\n if (eles.empty()) {\n renderer.notify(eventName);\n } else {\n renderer.notify(eventName, eles);\n }\n });\n }\n\n return this;\n },\n batch: function batch(callback) {\n this.startBatch();\n callback();\n this.endBatch();\n return this;\n },\n // for backwards compatibility\n batchData: function batchData(map) {\n var cy = this;\n return this.batch(function () {\n var ids = Object.keys(map);\n\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var data = map[id];\n var ele = cy.getElementById(id);\n ele.data(data);\n }\n });\n }\n };\n\n var rendererDefaults = defaults$g({\n hideEdgesOnViewport: false,\n textureOnViewport: false,\n motionBlur: false,\n motionBlurOpacity: 0.05,\n pixelRatio: undefined,\n desktopTapThreshold: 4,\n touchTapThreshold: 8,\n wheelSensitivity: 1,\n debug: false,\n showFps: false\n });\n var corefn$4 = {\n renderTo: function renderTo(context, zoom, pan, pxRatio) {\n var r = this._private.renderer;\n r.renderTo(context, zoom, pan, pxRatio);\n return this;\n },\n renderer: function renderer() {\n return this._private.renderer;\n },\n forceRender: function forceRender() {\n this.notify('draw');\n return this;\n },\n resize: function resize() {\n this.invalidateSize();\n this.emitAndNotify('resize');\n return this;\n },\n initRenderer: function initRenderer(options) {\n var cy = this;\n var RendererProto = cy.extension('renderer', options.name);\n\n if (RendererProto == null) {\n error(\"Can not initialise: No such renderer `\".concat(options.name, \"` found. Did you forget to import it and `cytoscape.use()` it?\"));\n return;\n }\n\n if (options.wheelSensitivity !== undefined) {\n warn(\"You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.\");\n }\n\n var rOpts = rendererDefaults(options);\n rOpts.cy = cy;\n cy._private.renderer = new RendererProto(rOpts);\n this.notify('init');\n },\n destroyRenderer: function destroyRenderer() {\n var cy = this;\n cy.notify('destroy'); // destroy the renderer\n\n var domEle = cy.container();\n\n if (domEle) {\n domEle._cyreg = null;\n\n while (domEle.childNodes.length > 0) {\n domEle.removeChild(domEle.childNodes[0]);\n }\n }\n\n cy._private.renderer = null; // to be extra safe, remove the ref\n\n cy.mutableElements().forEach(function (ele) {\n var _p = ele._private;\n _p.rscratch = {};\n _p.rstyle = {};\n _p.animation.current = [];\n _p.animation.queue = [];\n });\n },\n onRender: function onRender(fn) {\n return this.on('render', fn);\n },\n offRender: function offRender(fn) {\n return this.off('render', fn);\n }\n };\n corefn$4.invalidateDimensions = corefn$4.resize;\n\n var corefn$3 = {\n // get a collection\n // - empty collection on no args\n // - collection of elements in the graph on selector arg\n // - guarantee a returned collection when elements or collection specified\n collection: function collection(eles, opts) {\n if (string(eles)) {\n return this.$(eles);\n } else if (elementOrCollection(eles)) {\n return eles.collection();\n } else if (array(eles)) {\n if (!opts) {\n opts = {};\n }\n\n return new Collection(this, eles, opts.unique, opts.removed);\n }\n\n return new Collection(this);\n },\n nodes: function nodes(selector) {\n var nodes = this.$(function (ele) {\n return ele.isNode();\n });\n\n if (selector) {\n return nodes.filter(selector);\n }\n\n return nodes;\n },\n edges: function edges(selector) {\n var edges = this.$(function (ele) {\n return ele.isEdge();\n });\n\n if (selector) {\n return edges.filter(selector);\n }\n\n return edges;\n },\n // search the graph like jQuery\n $: function $(selector) {\n var eles = this._private.elements;\n\n if (selector) {\n return eles.filter(selector);\n } else {\n return eles.spawnSelf();\n }\n },\n mutableElements: function mutableElements() {\n return this._private.elements;\n }\n }; // aliases\n\n corefn$3.elements = corefn$3.filter = corefn$3.$;\n\n var styfn$8 = {}; // keys for style blocks, e.g. ttfftt\n\n var TRUE = 't';\n var FALSE = 'f'; // (potentially expensive calculation)\n // apply the style to the element based on\n // - its bypass\n // - what selectors match it\n\n styfn$8.apply = function (eles) {\n var self = this;\n var _p = self._private;\n var cy = _p.cy;\n var updatedEles = cy.collection();\n\n for (var ie = 0; ie < eles.length; ie++) {\n var ele = eles[ie];\n var cxtMeta = self.getContextMeta(ele);\n\n if (cxtMeta.empty) {\n continue;\n }\n\n var cxtStyle = self.getContextStyle(cxtMeta);\n var app = self.applyContextStyle(cxtMeta, cxtStyle, ele);\n\n if (ele._private.appliedInitStyle) {\n self.updateTransitions(ele, app.diffProps);\n } else {\n ele._private.appliedInitStyle = true;\n }\n\n var hintsDiff = self.updateStyleHints(ele);\n\n if (hintsDiff) {\n updatedEles.push(ele);\n }\n } // for elements\n\n\n return updatedEles;\n };\n\n styfn$8.getPropertiesDiff = function (oldCxtKey, newCxtKey) {\n var self = this;\n var cache = self._private.propDiffs = self._private.propDiffs || {};\n var dualCxtKey = oldCxtKey + '-' + newCxtKey;\n var cachedVal = cache[dualCxtKey];\n\n if (cachedVal) {\n return cachedVal;\n }\n\n var diffProps = [];\n var addedProp = {};\n\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var oldHasCxt = oldCxtKey[i] === TRUE;\n var newHasCxt = newCxtKey[i] === TRUE;\n var cxtHasDiffed = oldHasCxt !== newHasCxt;\n var cxtHasMappedProps = cxt.mappedProperties.length > 0;\n\n if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) {\n var props = void 0;\n\n if (cxtHasDiffed && cxtHasMappedProps) {\n props = cxt.properties; // suffices b/c mappedProperties is a subset of properties\n } else if (cxtHasDiffed) {\n props = cxt.properties; // need to check them all\n } else if (cxtHasMappedProps) {\n props = cxt.mappedProperties; // only need to check mapped\n }\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter\n // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result\n // is cached)\n\n var laterCxtOverrides = false;\n\n for (var k = i + 1; k < self.length; k++) {\n var laterCxt = self[k];\n var hasLaterCxt = newCxtKey[k] === TRUE;\n\n if (!hasLaterCxt) {\n continue;\n } // can't override unless the context is active\n\n\n laterCxtOverrides = laterCxt.properties[prop.name] != null;\n\n if (laterCxtOverrides) {\n break;\n } // exit early as long as one later context overrides\n\n }\n\n if (!addedProp[name] && !laterCxtOverrides) {\n addedProp[name] = true;\n diffProps.push(name);\n }\n } // for props\n\n } // if\n\n } // for contexts\n\n\n cache[dualCxtKey] = diffProps;\n return diffProps;\n };\n\n styfn$8.getContextMeta = function (ele) {\n var self = this;\n var cxtKey = '';\n var diffProps;\n var prevKey = ele._private.styleCxtKey || ''; // get the cxt key\n\n for (var i = 0; i < self.length; i++) {\n var context = self[i];\n var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core'\n\n if (contextSelectorMatches) {\n cxtKey += TRUE;\n } else {\n cxtKey += FALSE;\n }\n } // for context\n\n\n diffProps = self.getPropertiesDiff(prevKey, cxtKey);\n ele._private.styleCxtKey = cxtKey;\n return {\n key: cxtKey,\n diffPropNames: diffProps,\n empty: diffProps.length === 0\n };\n }; // gets a computed ele style object based on matched contexts\n\n\n styfn$8.getContextStyle = function (cxtMeta) {\n var cxtKey = cxtMeta.key;\n var self = this;\n var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy\n\n if (cxtStyles[cxtKey]) {\n return cxtStyles[cxtKey];\n }\n\n var style = {\n _private: {\n key: cxtKey\n }\n };\n\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var hasCxt = cxtKey[i] === TRUE;\n\n if (!hasCxt) {\n continue;\n }\n\n for (var j = 0; j < cxt.properties.length; j++) {\n var prop = cxt.properties[j];\n style[prop.name] = prop;\n }\n }\n\n cxtStyles[cxtKey] = style;\n return style;\n };\n\n styfn$8.applyContextStyle = function (cxtMeta, cxtStyle, ele) {\n var self = this;\n var diffProps = cxtMeta.diffPropNames;\n var retDiffProps = {};\n var types = self.types;\n\n for (var i = 0; i < diffProps.length; i++) {\n var diffPropName = diffProps[i];\n var cxtProp = cxtStyle[diffPropName];\n var eleProp = ele.pstyle(diffPropName);\n\n if (!cxtProp) {\n // no context prop means delete\n if (!eleProp) {\n continue; // no existing prop means nothing needs to be removed\n // nb affects initial application on mapped values like control-point-distances\n } else if (eleProp.bypass) {\n cxtProp = {\n name: diffPropName,\n deleteBypassed: true\n };\n } else {\n cxtProp = {\n name: diffPropName,\n \"delete\": true\n };\n }\n } // save cycles when the context prop doesn't need to be applied\n\n\n if (eleProp === cxtProp) {\n continue;\n } // save cycles when a mapped context prop doesn't need to be applied\n\n\n if (cxtProp.mapped === types.fn // context prop is function mapper\n && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one)\n && eleProp.mapping != null // ele prop is a concrete value from from a mapper\n && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper\n ) {\n // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet)\n var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy\n\n var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss\n\n if (fnValue === mapping.prevFnValue) {\n continue;\n }\n }\n\n var retDiffProp = retDiffProps[diffPropName] = {\n prev: eleProp\n };\n self.applyParsedProperty(ele, cxtProp);\n retDiffProp.next = ele.pstyle(diffPropName);\n\n if (retDiffProp.next && retDiffProp.next.bypass) {\n retDiffProp.next = retDiffProp.next.bypassed;\n }\n }\n\n return {\n diffProps: retDiffProps\n };\n };\n\n styfn$8.updateStyleHints = function (ele) {\n var _p = ele._private;\n var self = this;\n var propNames = self.propertyGroupNames;\n var propGrKeys = self.propertyGroupKeys;\n\n var propHash = function propHash(ele, propNames, seedKey) {\n return self.getPropertiesHash(ele, propNames, seedKey);\n };\n\n var oldStyleKey = _p.styleKey;\n\n if (ele.removed()) {\n return false;\n }\n\n var isNode = _p.group === 'nodes'; // get the style key hashes per prop group\n // but lazily -- only use non-default prop values to reduce the number of hashes\n //\n\n var overriddenStyles = ele._private.style;\n propNames = Object.keys(overriddenStyles);\n\n for (var i = 0; i < propGrKeys.length; i++) {\n var grKey = propGrKeys[i];\n _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n }\n\n var updateGrKey1 = function updateGrKey1(val, grKey) {\n return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]);\n };\n\n var updateGrKey2 = function updateGrKey2(val, grKey) {\n return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]);\n };\n\n var updateGrKey = function updateGrKey(val, grKey) {\n updateGrKey1(val, grKey);\n updateGrKey2(val, grKey);\n };\n\n var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) {\n for (var j = 0; j < strVal.length; j++) {\n var ch = strVal.charCodeAt(j);\n updateGrKey1(ch, grKey);\n updateGrKey2(ch, grKey);\n }\n }; // - hashing works on 32 bit ints b/c we use bitwise ops\n // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function)\n // - raise up small numbers so more significant digits are seen by hashing\n // - make small numbers larger than a normal value to avoid collisions\n // - works in practice and it's relatively cheap\n\n\n var N = 2000000000;\n\n var cleanNum = function cleanNum(val) {\n return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val;\n };\n\n for (var _i = 0; _i < propNames.length; _i++) {\n var name = propNames[_i];\n var parsedProp = overriddenStyles[name];\n\n if (parsedProp == null) {\n continue;\n }\n\n var propInfo = this.properties[name];\n var type = propInfo.type;\n var _grKey = propInfo.groupKey;\n var normalizedNumberVal = void 0;\n\n if (propInfo.hashOverride != null) {\n normalizedNumberVal = propInfo.hashOverride(ele, parsedProp);\n } else if (parsedProp.pfValue != null) {\n normalizedNumberVal = parsedProp.pfValue;\n } // might not be a number if it allows enums\n\n\n var numberVal = propInfo.enums == null ? parsedProp.value : null;\n var haveNormNum = normalizedNumberVal != null;\n var haveUnitedNum = numberVal != null;\n var haveNum = haveNormNum || haveUnitedNum;\n var units = parsedProp.units; // numbers are cheaper to hash than strings\n // 1 hash op vs n hash ops (for length n string)\n\n if (type.number && haveNum && !type.multiple) {\n var v = haveNormNum ? normalizedNumberVal : numberVal;\n updateGrKey(cleanNum(v), _grKey);\n\n if (!haveNormNum && units != null) {\n updateGrKeyWStr(units, _grKey);\n }\n } else {\n updateGrKeyWStr(parsedProp.strValue, _grKey);\n }\n } // overall style key\n //\n\n\n var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT];\n\n for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) {\n var _grKey2 = propGrKeys[_i2];\n var grHash = _p.styleKeys[_grKey2];\n hash[0] = hashInt(grHash[0], hash[0]);\n hash[1] = hashIntAlt(grHash[1], hash[1]);\n }\n\n _p.styleKey = combineHashes(hash[0], hash[1]); // label dims\n //\n\n var sk = _p.styleKeys;\n _p.labelDimsKey = combineHashesArray(sk.labelDimensions);\n var labelKeys = propHash(ele, ['label'], sk.labelDimensions);\n _p.labelKey = combineHashesArray(labelKeys);\n _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys));\n\n if (!isNode) {\n var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions);\n _p.sourceLabelKey = combineHashesArray(sourceLabelKeys);\n _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys));\n var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions);\n _p.targetLabelKey = combineHashesArray(targetLabelKeys);\n _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys));\n } // node\n //\n\n\n if (isNode) {\n var _p$styleKeys = _p.styleKeys,\n nodeBody = _p$styleKeys.nodeBody,\n nodeBorder = _p$styleKeys.nodeBorder,\n backgroundImage = _p$styleKeys.backgroundImage,\n compound = _p$styleKeys.compound,\n pie = _p$styleKeys.pie;\n var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) {\n return k != null;\n }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]);\n _p.nodeKey = combineHashesArray(nodeKeys);\n _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT;\n }\n\n return oldStyleKey !== _p.styleKey;\n };\n\n styfn$8.clearStyleHints = function (ele) {\n var _p = ele._private;\n _p.styleCxtKey = '';\n _p.styleKeys = {};\n _p.styleKey = null;\n _p.labelKey = null;\n _p.labelStyleKey = null;\n _p.sourceLabelKey = null;\n _p.sourceLabelStyleKey = null;\n _p.targetLabelKey = null;\n _p.targetLabelStyleKey = null;\n _p.nodeKey = null;\n _p.hasPie = null;\n }; // apply a property to the style (for internal use)\n // returns whether application was successful\n //\n // now, this function flattens the property, and here's how:\n //\n // for parsedProp:{ bypass: true, deleteBypass: true }\n // no property is generated, instead the bypass property in the\n // element's style is replaced by what's pointed to by the `bypassed`\n // field in the bypass property (i.e. restoring the property the\n // bypass was overriding)\n //\n // for parsedProp:{ mapped: truthy }\n // the generated flattenedProp:{ mapping: prop }\n //\n // for parsedProp:{ bypass: true }\n // the generated flattenedProp:{ bypassed: parsedProp }\n\n\n styfn$8.applyParsedProperty = function (ele, parsedProp) {\n var self = this;\n var prop = parsedProp;\n var style = ele._private.style;\n var flatProp;\n var types = self.types;\n var type = self.properties[prop.name].type;\n var propIsBypass = prop.bypass;\n var origProp = style[prop.name];\n var origPropIsBypass = origProp && origProp.bypass;\n var _p = ele._private;\n var flatPropMapping = 'mapping';\n\n var getVal = function getVal(p) {\n if (p == null) {\n return null;\n } else if (p.pfValue != null) {\n return p.pfValue;\n } else {\n return p.value;\n }\n };\n\n var checkTriggers = function checkTriggers() {\n var fromVal = getVal(origProp);\n var toVal = getVal(prop);\n self.checkTriggers(ele, prop.name, fromVal, toVal);\n };\n\n if (prop && prop.name.substr(0, 3) === 'pie') {\n warn('The pie style properties are deprecated. Create charts using background images instead.');\n } // edge sanity checks to prevent the client from making serious mistakes\n\n\n if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers\n parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks\n parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) {\n prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass);\n }\n\n if (prop[\"delete\"]) {\n // delete the property and use the default value on falsey value\n style[prop.name] = undefined;\n checkTriggers();\n return true;\n }\n\n if (prop.deleteBypassed) {\n // delete the property that the\n if (!origProp) {\n checkTriggers();\n return true; // can't delete if no prop\n } else if (origProp.bypass) {\n // delete bypassed\n origProp.bypassed = undefined;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypassed\n }\n } // check if we need to delete the current bypass\n\n\n if (prop.deleteBypass) {\n // then this property is just here to indicate we need to delete\n if (!origProp) {\n checkTriggers();\n return true; // property is already not defined\n } else if (origProp.bypass) {\n // then replace the bypass property with the original\n // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary)\n style[prop.name] = origProp.bypassed;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypass\n }\n }\n\n var printMappingErr = function printMappingErr() {\n warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined');\n }; // put the property in the style objects\n\n\n switch (prop.mapped) {\n // flatten the property if mapped\n case types.mapData:\n {\n // flatten the field (e.g. data.foo.bar)\n var fields = prop.field.split('.');\n var fieldVal = _p.data;\n\n for (var i = 0; i < fields.length && fieldVal; i++) {\n var field = fields[i];\n fieldVal = fieldVal[field];\n }\n\n if (fieldVal == null) {\n printMappingErr();\n return false;\n }\n\n var percent;\n\n if (!number$1(fieldVal)) {\n // then don't apply and fall back on the existing style\n warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)');\n return false;\n } else {\n var fieldWidth = prop.fieldMax - prop.fieldMin;\n\n if (fieldWidth === 0) {\n // safety check -- not strictly necessary as no props of zero range should be passed here\n percent = 0;\n } else {\n percent = (fieldVal - prop.fieldMin) / fieldWidth;\n }\n } // make sure to bound percent value\n\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n if (type.color) {\n var r1 = prop.valueMin[0];\n var r2 = prop.valueMax[0];\n var g1 = prop.valueMin[1];\n var g2 = prop.valueMax[1];\n var b1 = prop.valueMin[2];\n var b2 = prop.valueMax[2];\n var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3];\n var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3];\n var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)];\n flatProp = {\n // colours are simple, so just create the flat property instead of expensive string parsing\n bypass: prop.bypass,\n // we're a bypass if the mapping property is a bypass\n name: prop.name,\n value: clr,\n strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')'\n };\n } else if (type.number) {\n var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent;\n flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping);\n } else {\n return false; // can only map to colours and numbers\n }\n\n if (!flatProp) {\n // if we can't flatten the property, then don't apply the property and fall back on the existing style\n printMappingErr();\n return false;\n }\n\n flatProp.mapping = prop; // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n // direct mapping\n\n case types.data:\n {\n // flatten the field (e.g. data.foo.bar)\n var _fields = prop.field.split('.');\n\n var _fieldVal = _p.data;\n\n for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) {\n var _field = _fields[_i3];\n _fieldVal = _fieldVal[_field];\n }\n\n if (_fieldVal != null) {\n flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping);\n }\n\n if (!flatProp) {\n // if we can't flatten the property, then don't apply and fall back on the existing style\n printMappingErr();\n return false;\n }\n\n flatProp.mapping = prop; // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n\n case types.fn:\n {\n var fn = prop.value;\n var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function\n\n prop.prevFnValue = fnRetVal;\n\n if (fnRetVal == null) {\n warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)');\n return false;\n }\n\n flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping);\n\n if (!flatProp) {\n warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)');\n return false;\n }\n\n flatProp.mapping = copy(prop); // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n\n case undefined:\n break;\n // just set the property\n\n default:\n return false;\n // not a valid mapping\n } // if the property is a bypass property, then link the resultant property to the original one\n\n\n if (propIsBypass) {\n if (origPropIsBypass) {\n // then this bypass overrides the existing one\n prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass\n } else {\n // then link the orig prop to the new bypass\n prop.bypassed = origProp;\n }\n\n style[prop.name] = prop; // and set\n } else {\n // prop is not bypass\n if (origPropIsBypass) {\n // then keep the orig prop (since it's a bypass) and link to the new prop\n origProp.bypassed = prop;\n } else {\n // then just replace the old prop with the new one\n style[prop.name] = prop;\n }\n }\n\n checkTriggers();\n return true;\n };\n\n styfn$8.cleanElements = function (eles, keepBypasses) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n this.clearStyleHints(ele);\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache();\n\n if (!keepBypasses) {\n ele._private.style = {};\n } else {\n var style = ele._private.style;\n var propNames = Object.keys(style);\n\n for (var j = 0; j < propNames.length; j++) {\n var propName = propNames[j];\n var eleProp = style[propName];\n\n if (eleProp != null) {\n if (eleProp.bypass) {\n eleProp.bypassed = null;\n } else {\n style[propName] = null;\n }\n }\n }\n }\n }\n }; // updates the visual style for all elements (useful for manual style modification after init)\n\n\n styfn$8.update = function () {\n var cy = this._private.cy;\n var eles = cy.mutableElements();\n eles.updateStyle();\n }; // diffProps : { name => { prev, next } }\n\n\n styfn$8.updateTransitions = function (ele, diffProps) {\n var self = this;\n var _p = ele._private;\n var props = ele.pstyle('transition-property').value;\n var duration = ele.pstyle('transition-duration').pfValue;\n var delay = ele.pstyle('transition-delay').pfValue;\n\n if (props.length > 0 && duration > 0) {\n var style = {}; // build up the style to animate towards\n\n var anyPrev = false;\n\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var styProp = ele.pstyle(prop);\n var diffProp = diffProps[prop];\n\n if (!diffProp) {\n continue;\n }\n\n var prevProp = diffProp.prev;\n var fromProp = prevProp;\n var toProp = diffProp.next != null ? diffProp.next : styProp;\n var diff = false;\n var initVal = void 0;\n var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity)\n\n if (!fromProp) {\n continue;\n } // consider px values\n\n\n if (number$1(fromProp.pfValue) && number$1(toProp.pfValue)) {\n diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy\n\n initVal = fromProp.pfValue + initDt * diff; // consider numerical values\n } else if (number$1(fromProp.value) && number$1(toProp.value)) {\n diff = toProp.value - fromProp.value; // nonzero is truthy\n\n initVal = fromProp.value + initDt * diff; // consider colour values\n } else if (array(fromProp.value) && array(toProp.value)) {\n diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2];\n initVal = fromProp.strValue;\n } // the previous value is good for an animation only if it's different\n\n\n if (diff) {\n style[prop] = toProp.strValue; // to val\n\n this.applyBypass(ele, prop, initVal); // from val\n\n anyPrev = true;\n }\n } // end if props allow ani\n // can't transition if there's nothing previous to transition from\n\n\n if (!anyPrev) {\n return;\n }\n\n _p.transitioning = true;\n new Promise$1(function (resolve) {\n if (delay > 0) {\n ele.delayAnimation(delay).play().promise().then(resolve);\n } else {\n resolve();\n }\n }).then(function () {\n return ele.animation({\n style: style,\n duration: duration,\n easing: ele.pstyle('transition-timing-function').value,\n queue: false\n }).play().promise();\n }).then(function () {\n // if( !isBypass ){\n self.removeBypasses(ele, props);\n ele.emitAndNotify('style'); // }\n\n _p.transitioning = false;\n });\n } else if (_p.transitioning) {\n this.removeBypasses(ele, props);\n ele.emitAndNotify('style');\n _p.transitioning = false;\n }\n };\n\n styfn$8.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) {\n var prop = this.properties[name];\n var triggerCheck = getTrigger(prop);\n\n if (triggerCheck != null && triggerCheck(fromValue, toValue)) {\n onTrigger(prop);\n }\n };\n\n styfn$8.checkZOrderTrigger = function (ele, name, fromValue, toValue) {\n var _this = this;\n\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersZOrder;\n }, function () {\n _this._private.cy.notify('zorder', ele);\n });\n };\n\n styfn$8.checkBoundsTrigger = function (ele, name, fromValue, toValue) {\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersBounds;\n }, function (prop) {\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid,\n // then dirty the pll edge bb cache as well\n\n if ( // only for beziers -- so performance of other edges isn't affected\n prop.triggersBoundsOfParallelBeziers && (name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') || name === 'display' && (fromValue === 'none' || toValue === 'none'))) {\n ele.parallelEdges().forEach(function (pllEdge) {\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n });\n }\n });\n };\n\n styfn$8.checkTriggers = function (ele, name, fromValue, toValue) {\n ele.dirtyStyleCache();\n this.checkZOrderTrigger(ele, name, fromValue, toValue);\n this.checkBoundsTrigger(ele, name, fromValue, toValue);\n };\n\n var styfn$7 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily\n // returns true iff application was successful for at least 1 specified property\n\n styfn$7.applyBypass = function (eles, name, value, updateTransitions) {\n var self = this;\n var props = [];\n var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them\n\n if (name === '*' || name === '**') {\n // apply to all property names\n if (value !== undefined) {\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var _name = prop.name;\n var parsedProp = this.parse(_name, value, true);\n\n if (parsedProp) {\n props.push(parsedProp);\n }\n }\n }\n } else if (string(name)) {\n // then parse the single property\n var _parsedProp = this.parse(name, value, true);\n\n if (_parsedProp) {\n props.push(_parsedProp);\n }\n } else if (plainObject(name)) {\n // then parse each property\n var specifiedProps = name;\n updateTransitions = value;\n var names = Object.keys(specifiedProps);\n\n for (var _i = 0; _i < names.length; _i++) {\n var _name2 = names[_i];\n var _value = specifiedProps[_name2];\n\n if (_value === undefined) {\n // try camel case name too\n _value = specifiedProps[dash2camel(_name2)];\n }\n\n if (_value !== undefined) {\n var _parsedProp2 = this.parse(_name2, _value, true);\n\n if (_parsedProp2) {\n props.push(_parsedProp2);\n }\n }\n }\n } else {\n // can't do anything without well defined properties\n return false;\n } // we've failed if there are no valid properties\n\n\n if (props.length === 0) {\n return false;\n } // now, apply the bypass properties on the elements\n\n\n var ret = false; // return true if at least one succesful bypass applied\n\n for (var _i2 = 0; _i2 < eles.length; _i2++) {\n // for each ele\n var ele = eles[_i2];\n var diffProps = {};\n var diffProp = void 0;\n\n for (var j = 0; j < props.length; j++) {\n // for each prop\n var _prop = props[j];\n\n if (updateTransitions) {\n var prevProp = ele.pstyle(_prop.name);\n diffProp = diffProps[_prop.name] = {\n prev: prevProp\n };\n }\n\n ret = this.applyParsedProperty(ele, copy(_prop)) || ret;\n\n if (updateTransitions) {\n diffProp.next = ele.pstyle(_prop.name);\n }\n } // for props\n\n\n if (ret) {\n this.updateStyleHints(ele);\n }\n\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n\n\n return ret;\n }; // only useful in specific cases like animation\n\n\n styfn$7.overrideBypass = function (eles, name, value) {\n name = camel2dash(name);\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var prop = ele._private.style[name];\n var type = this.properties[name].type;\n var isColor = type.color;\n var isMulti = type.mutiple;\n var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value;\n\n if (!prop || !prop.bypass) {\n // need a bypass if one doesn't exist\n this.applyBypass(ele, name, value);\n } else {\n prop.value = value;\n\n if (prop.pfValue != null) {\n prop.pfValue = value;\n }\n\n if (isColor) {\n prop.strValue = 'rgb(' + value.join(',') + ')';\n } else if (isMulti) {\n prop.strValue = value.join(' ');\n } else {\n prop.strValue = '' + value;\n }\n\n this.updateStyleHints(ele);\n }\n\n this.checkTriggers(ele, name, oldValue, value);\n }\n };\n\n styfn$7.removeAllBypasses = function (eles, updateTransitions) {\n return this.removeBypasses(eles, this.propertyNames, updateTransitions);\n };\n\n styfn$7.removeBypasses = function (eles, props, updateTransitions) {\n var isBypass = true;\n\n for (var j = 0; j < eles.length; j++) {\n var ele = eles[j];\n var diffProps = {};\n\n for (var i = 0; i < props.length; i++) {\n var name = props[i];\n var prop = this.properties[name];\n var prevProp = ele.pstyle(prop.name);\n\n if (!prevProp || !prevProp.bypass) {\n // if a bypass doesn't exist for the prop, nothing needs to be removed\n continue;\n }\n\n var value = ''; // empty => remove bypass\n\n var parsedProp = this.parse(name, value, true);\n var diffProp = diffProps[prop.name] = {\n prev: prevProp\n };\n this.applyParsedProperty(ele, parsedProp);\n diffProp.next = ele.pstyle(prop.name);\n } // for props\n\n\n this.updateStyleHints(ele);\n\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n\n };\n\n var styfn$6 = {}; // gets what an em size corresponds to in pixels relative to a dom element\n\n styfn$6.getEmSizeInPixels = function () {\n var px = this.containerCss('font-size');\n\n if (px != null) {\n return parseFloat(px);\n } else {\n return 1; // for headless\n }\n }; // gets css property from the core container\n\n\n styfn$6.containerCss = function (propName) {\n var cy = this._private.cy;\n var domElement = cy.container();\n var containerWindow = cy.window();\n\n if (containerWindow && domElement && containerWindow.getComputedStyle) {\n return containerWindow.getComputedStyle(domElement).getPropertyValue(propName);\n }\n };\n\n var styfn$5 = {}; // gets the rendered style for an element\n\n styfn$5.getRenderedStyle = function (ele, prop) {\n if (prop) {\n return this.getStylePropertyValue(ele, prop, true);\n } else {\n return this.getRawStyle(ele, true);\n }\n }; // gets the raw style for an element\n\n\n styfn$5.getRawStyle = function (ele, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var rstyle = {};\n\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal);\n\n if (val != null) {\n rstyle[prop.name] = val;\n rstyle[dash2camel(prop.name)] = val;\n }\n }\n\n return rstyle;\n }\n };\n\n styfn$5.getIndexedStyle = function (ele, property, subproperty, index) {\n var pstyle = ele.pstyle(property)[subproperty][index];\n return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0];\n };\n\n styfn$5.getStylePropertyValue = function (ele, propName, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var prop = self.properties[propName];\n\n if (prop.alias) {\n prop = prop.pointsTo;\n }\n\n var type = prop.type;\n var styleProp = ele.pstyle(prop.name);\n\n if (styleProp) {\n var value = styleProp.value,\n units = styleProp.units,\n strValue = styleProp.strValue;\n\n if (isRenderedVal && type.number && value != null && number$1(value)) {\n var zoom = ele.cy().zoom();\n\n var getRenderedValue = function getRenderedValue(val) {\n return val * zoom;\n };\n\n var getValueStringWithUnits = function getValueStringWithUnits(val, units) {\n return getRenderedValue(val) + units;\n };\n\n var isArrayValue = array(value);\n var haveUnits = isArrayValue ? units.every(function (u) {\n return u != null;\n }) : units != null;\n\n if (haveUnits) {\n if (isArrayValue) {\n return value.map(function (v, i) {\n return getValueStringWithUnits(v, units[i]);\n }).join(' ');\n } else {\n return getValueStringWithUnits(value, units);\n }\n } else {\n if (isArrayValue) {\n return value.map(function (v) {\n return string(v) ? v : '' + getRenderedValue(v);\n }).join(' ');\n } else {\n return '' + getRenderedValue(value);\n }\n }\n } else if (strValue != null) {\n return strValue;\n }\n }\n\n return null;\n }\n };\n\n styfn$5.getAnimationStartStyle = function (ele, aniProps) {\n var rstyle = {};\n\n for (var i = 0; i < aniProps.length; i++) {\n var aniProp = aniProps[i];\n var name = aniProp.name;\n var styleProp = ele.pstyle(name);\n\n if (styleProp !== undefined) {\n // then make a prop of it\n if (plainObject(styleProp)) {\n styleProp = this.parse(name, styleProp.strValue);\n } else {\n styleProp = this.parse(name, styleProp);\n }\n }\n\n if (styleProp) {\n rstyle[name] = styleProp;\n }\n }\n\n return rstyle;\n };\n\n styfn$5.getPropsList = function (propsObj) {\n var self = this;\n var rstyle = [];\n var style = propsObj;\n var props = self.properties;\n\n if (style) {\n var names = Object.keys(style);\n\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n var val = style[name];\n var prop = props[name] || props[camel2dash(name)];\n var styleProp = this.parse(prop.name, val);\n\n if (styleProp) {\n rstyle.push(styleProp);\n }\n }\n }\n\n return rstyle;\n };\n\n styfn$5.getNonDefaultPropertiesHash = function (ele, propNames, seed) {\n var hash = seed.slice();\n var name, val, strVal, chVal;\n var i, j;\n\n for (i = 0; i < propNames.length; i++) {\n name = propNames[i];\n val = ele.pstyle(name, false);\n\n if (val == null) {\n continue;\n } else if (val.pfValue != null) {\n hash[0] = hashInt(chVal, hash[0]);\n hash[1] = hashIntAlt(chVal, hash[1]);\n } else {\n strVal = val.strValue;\n\n for (j = 0; j < strVal.length; j++) {\n chVal = strVal.charCodeAt(j);\n hash[0] = hashInt(chVal, hash[0]);\n hash[1] = hashIntAlt(chVal, hash[1]);\n }\n }\n }\n\n return hash;\n };\n\n styfn$5.getPropertiesHash = styfn$5.getNonDefaultPropertiesHash;\n\n var styfn$4 = {};\n\n styfn$4.appendFromJson = function (json) {\n var style = this;\n\n for (var i = 0; i < json.length; i++) {\n var context = json[i];\n var selector = context.selector;\n var props = context.style || context.css;\n var names = Object.keys(props);\n style.selector(selector); // apply selector\n\n for (var j = 0; j < names.length; j++) {\n var name = names[j];\n var value = props[name];\n style.css(name, value); // apply property\n }\n }\n\n return style;\n }; // accessible cy.style() function\n\n\n styfn$4.fromJson = function (json) {\n var style = this;\n style.resetToDefault();\n style.appendFromJson(json);\n return style;\n }; // get json from cy.style() api\n\n\n styfn$4.json = function () {\n var json = [];\n\n for (var i = this.defaultLength; i < this.length; i++) {\n var cxt = this[i];\n var selector = cxt.selector;\n var props = cxt.properties;\n var css = {};\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n css[prop.name] = prop.strValue;\n }\n\n json.push({\n selector: !selector ? 'core' : selector.toString(),\n style: css\n });\n }\n\n return json;\n };\n\n var styfn$3 = {};\n\n styfn$3.appendFromString = function (string) {\n var self = this;\n var style = this;\n var remaining = '' + string;\n var selAndBlockStr;\n var blockRem;\n var propAndValStr; // remove comments from the style string\n\n remaining = remaining.replace(/[/][*](\\s|.)+?[*][/]/g, '');\n\n function removeSelAndBlockFromRemaining() {\n // remove the parsed selector and block from the remaining text to parse\n if (remaining.length > selAndBlockStr.length) {\n remaining = remaining.substr(selAndBlockStr.length);\n } else {\n remaining = '';\n }\n }\n\n function removePropAndValFromRem() {\n // remove the parsed property and value from the remaining block text to parse\n if (blockRem.length > propAndValStr.length) {\n blockRem = blockRem.substr(propAndValStr.length);\n } else {\n blockRem = '';\n }\n }\n\n for (;;) {\n var nothingLeftToParse = remaining.match(/^\\s*$/);\n\n if (nothingLeftToParse) {\n break;\n }\n\n var selAndBlock = remaining.match(/^\\s*((?:.|\\s)+?)\\s*\\{((?:.|\\s)+?)\\}/);\n\n if (!selAndBlock) {\n warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining);\n break;\n }\n\n selAndBlockStr = selAndBlock[0]; // parse the selector\n\n var selectorStr = selAndBlock[1];\n\n if (selectorStr !== 'core') {\n var selector = new Selector(selectorStr);\n\n if (selector.invalid) {\n warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block\n\n removeSelAndBlockFromRemaining();\n continue;\n }\n } // parse the block of properties and values\n\n\n var blockStr = selAndBlock[2];\n var invalidBlock = false;\n blockRem = blockStr;\n var props = [];\n\n for (;;) {\n var _nothingLeftToParse = blockRem.match(/^\\s*$/);\n\n if (_nothingLeftToParse) {\n break;\n }\n\n var propAndVal = blockRem.match(/^\\s*(.+?)\\s*:\\s*(.+?)(?:\\s*;|\\s*$)/);\n\n if (!propAndVal) {\n warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr);\n invalidBlock = true;\n break;\n }\n\n propAndValStr = propAndVal[0];\n var propStr = propAndVal[1];\n var valStr = propAndVal[2];\n var prop = self.properties[propStr];\n\n if (!prop) {\n warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block\n\n removePropAndValFromRem();\n continue;\n }\n\n var parsedProp = style.parse(propStr, valStr);\n\n if (!parsedProp) {\n warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block\n\n removePropAndValFromRem();\n continue;\n }\n\n props.push({\n name: propStr,\n val: valStr\n });\n removePropAndValFromRem();\n }\n\n if (invalidBlock) {\n removeSelAndBlockFromRemaining();\n break;\n } // put the parsed block in the style\n\n\n style.selector(selectorStr);\n\n for (var i = 0; i < props.length; i++) {\n var _prop = props[i];\n style.css(_prop.name, _prop.val);\n }\n\n removeSelAndBlockFromRemaining();\n }\n\n return style;\n };\n\n styfn$3.fromString = function (string) {\n var style = this;\n style.resetToDefault();\n style.appendFromString(string);\n return style;\n };\n\n var styfn$2 = {};\n\n (function () {\n var number$1 = number;\n var rgba = rgbaNoBackRefs;\n var hsla = hslaNoBackRefs;\n var hex3$1 = hex3;\n var hex6$1 = hex6;\n\n var data = function data(prefix) {\n return '^' + prefix + '\\\\s*\\\\(\\\\s*([\\\\w\\\\.]+)\\\\s*\\\\)$';\n };\n\n var mapData = function mapData(prefix) {\n var mapArg = number$1 + '|\\\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1;\n return '^' + prefix + '\\\\s*\\\\(([\\\\w\\\\.]+)\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*\\\\,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + mapArg + ')\\\\s*\\\\,\\\\s*(' + mapArg + ')\\\\)$';\n };\n\n var urlRegexes = ['^url\\\\s*\\\\(\\\\s*[\\'\"]?(.+?)[\\'\"]?\\\\s*\\\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it\n\n styfn$2.types = {\n time: {\n number: true,\n min: 0,\n units: 's|ms',\n implicitUnits: 'ms'\n },\n percent: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%'\n },\n percentages: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%',\n multiple: true\n },\n zeroOneNumber: {\n number: true,\n min: 0,\n max: 1,\n unitless: true\n },\n zeroOneNumbers: {\n number: true,\n min: 0,\n max: 1,\n unitless: true,\n multiple: true\n },\n nOneOneNumber: {\n number: true,\n min: -1,\n max: 1,\n unitless: true\n },\n nonNegativeInt: {\n number: true,\n min: 0,\n integer: true,\n unitless: true\n },\n position: {\n enums: ['parent', 'origin']\n },\n nodeSize: {\n number: true,\n min: 0,\n enums: ['label']\n },\n number: {\n number: true,\n unitless: true\n },\n numbers: {\n number: true,\n unitless: true,\n multiple: true\n },\n positiveNumber: {\n number: true,\n unitless: true,\n min: 0,\n strictMin: true\n },\n size: {\n number: true,\n min: 0\n },\n bidirectionalSize: {\n number: true\n },\n // allows negative\n bidirectionalSizeMaybePercent: {\n number: true,\n allowPercent: true\n },\n // allows negative\n bidirectionalSizes: {\n number: true,\n multiple: true\n },\n // allows negative\n sizeMaybePercent: {\n number: true,\n min: 0,\n allowPercent: true\n },\n axisDirection: {\n enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto']\n },\n paddingRelativeTo: {\n enums: ['width', 'height', 'average', 'min', 'max']\n },\n bgWH: {\n number: true,\n min: 0,\n allowPercent: true,\n enums: ['auto'],\n multiple: true\n },\n bgPos: {\n number: true,\n allowPercent: true,\n multiple: true\n },\n bgRelativeTo: {\n enums: ['inner', 'include-padding'],\n multiple: true\n },\n bgRepeat: {\n enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],\n multiple: true\n },\n bgFit: {\n enums: ['none', 'contain', 'cover'],\n multiple: true\n },\n bgCrossOrigin: {\n enums: ['anonymous', 'use-credentials', 'null'],\n multiple: true\n },\n bgClip: {\n enums: ['none', 'node'],\n multiple: true\n },\n bgContainment: {\n enums: ['inside', 'over'],\n multiple: true\n },\n color: {\n color: true\n },\n colors: {\n color: true,\n multiple: true\n },\n fill: {\n enums: ['solid', 'linear-gradient', 'radial-gradient']\n },\n bool: {\n enums: ['yes', 'no']\n },\n bools: {\n enums: ['yes', 'no'],\n multiple: true\n },\n lineStyle: {\n enums: ['solid', 'dotted', 'dashed']\n },\n lineCap: {\n enums: ['butt', 'round', 'square']\n },\n borderStyle: {\n enums: ['solid', 'dotted', 'dashed', 'double']\n },\n curveStyle: {\n enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi']\n },\n fontFamily: {\n regex: '^([\\\\w- \\\\\"]+(?:\\\\s*,\\\\s*[\\\\w- \\\\\"]+)*)$'\n },\n fontStyle: {\n enums: ['italic', 'normal', 'oblique']\n },\n fontWeight: {\n enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900]\n },\n textDecoration: {\n enums: ['none', 'underline', 'overline', 'line-through']\n },\n textTransform: {\n enums: ['none', 'uppercase', 'lowercase']\n },\n textWrap: {\n enums: ['none', 'wrap', 'ellipsis']\n },\n textOverflowWrap: {\n enums: ['whitespace', 'anywhere']\n },\n textBackgroundShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle']\n },\n nodeShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'right-rhomboid', 'polygon']\n },\n overlayShape: {\n enums: ['roundrectangle', 'round-rectangle', 'ellipse']\n },\n compoundIncludeLabels: {\n enums: ['include', 'exclude']\n },\n arrowShape: {\n enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']\n },\n arrowFill: {\n enums: ['filled', 'hollow']\n },\n display: {\n enums: ['element', 'none']\n },\n visibility: {\n enums: ['hidden', 'visible']\n },\n zCompoundDepth: {\n enums: ['bottom', 'orphan', 'auto', 'top']\n },\n zIndexCompare: {\n enums: ['auto', 'manual']\n },\n valign: {\n enums: ['top', 'center', 'bottom']\n },\n halign: {\n enums: ['left', 'center', 'right']\n },\n justification: {\n enums: ['left', 'center', 'right', 'auto']\n },\n text: {\n string: true\n },\n data: {\n mapping: true,\n regex: data('data')\n },\n layoutData: {\n mapping: true,\n regex: data('layoutData')\n },\n scratch: {\n mapping: true,\n regex: data('scratch')\n },\n mapData: {\n mapping: true,\n regex: mapData('mapData')\n },\n mapLayoutData: {\n mapping: true,\n regex: mapData('mapLayoutData')\n },\n mapScratch: {\n mapping: true,\n regex: mapData('mapScratch')\n },\n fn: {\n mapping: true,\n fn: true\n },\n url: {\n regexes: urlRegexes,\n singleRegexMatchValue: true\n },\n urls: {\n regexes: urlRegexes,\n singleRegexMatchValue: true,\n multiple: true\n },\n propList: {\n propList: true\n },\n angle: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad'\n },\n textRotation: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad',\n enums: ['none', 'autorotate']\n },\n polygonPointList: {\n number: true,\n multiple: true,\n evenMultiple: true,\n min: -1,\n max: 1,\n unitless: true\n },\n edgeDistances: {\n enums: ['intersection', 'node-position']\n },\n edgeEndpoint: {\n number: true,\n multiple: true,\n units: '%|px|em|deg|rad',\n implicitUnits: 'px',\n enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],\n singleEnum: true,\n validate: function validate(valArr, unitsArr) {\n switch (valArr.length) {\n case 2:\n // can be % or px only\n return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad';\n\n case 1:\n // can be enum, deg, or rad only\n return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad';\n\n default:\n return false;\n }\n }\n },\n easing: {\n regexes: ['^(spring)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$', '^(cubic-bezier)\\\\s*\\\\(\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + ')\\\\s*\\\\)$'],\n enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ']\n },\n gradientDirection: {\n enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top' // different order\n ]\n },\n boundsExpansion: {\n number: true,\n multiple: true,\n min: 0,\n validate: function validate(valArr) {\n var length = valArr.length;\n return length === 1 || length === 2 || length === 4;\n }\n }\n };\n var diff = {\n zeroNonZero: function zeroNonZero(val1, val2) {\n if ((val1 == null || val2 == null) && val1 !== val2) {\n return true; // null cases could represent any value\n }\n\n if (val1 == 0 && val2 != 0) {\n return true;\n } else if (val1 != 0 && val2 == 0) {\n return true;\n } else {\n return false;\n }\n },\n any: function any(val1, val2) {\n return val1 != val2;\n },\n emptyNonEmpty: function emptyNonEmpty(str1, str2) {\n var empty1 = emptyString(str1);\n var empty2 = emptyString(str2);\n return empty1 && !empty2 || !empty1 && empty2;\n }\n }; // define visual style properties\n //\n // - n.b. adding a new group of props may require updates to updateStyleHints()\n // - adding new props to an existing group gets handled automatically\n\n var t = styfn$2.types;\n var mainLabel = [{\n name: 'label',\n type: t.text,\n triggersBounds: diff.any,\n triggersZOrder: diff.emptyNonEmpty\n }, {\n name: 'text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }];\n var sourceLabel = [{\n name: 'source-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'source-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var targetLabel = [{\n name: 'target-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'target-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var labelDimensions = [{\n name: 'font-family',\n type: t.fontFamily,\n triggersBounds: diff.any\n }, {\n name: 'font-style',\n type: t.fontStyle,\n triggersBounds: diff.any\n }, {\n name: 'font-weight',\n type: t.fontWeight,\n triggersBounds: diff.any\n }, {\n name: 'font-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-transform',\n type: t.textTransform,\n triggersBounds: diff.any\n }, {\n name: 'text-wrap',\n type: t.textWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-overflow-wrap',\n type: t.textOverflowWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-max-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-outline-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'line-height',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }];\n var commonLabel = [{\n name: 'text-valign',\n type: t.valign,\n triggersBounds: diff.any\n }, {\n name: 'text-halign',\n type: t.halign,\n triggersBounds: diff.any\n }, {\n name: 'color',\n type: t.color\n }, {\n name: 'text-outline-color',\n type: t.color\n }, {\n name: 'text-outline-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-color',\n type: t.color\n }, {\n name: 'text-background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-border-color',\n type: t.color\n }, {\n name: 'text-border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-style',\n type: t.borderStyle,\n triggersBounds: diff.any\n }, {\n name: 'text-background-shape',\n type: t.textBackgroundShape,\n triggersBounds: diff.any\n }, {\n name: 'text-justification',\n type: t.justification\n }];\n var behavior = [{\n name: 'events',\n type: t.bool\n }, {\n name: 'text-events',\n type: t.bool\n }];\n var visibility = [{\n name: 'display',\n type: t.display,\n triggersZOrder: diff.any,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'visibility',\n type: t.visibility,\n triggersZOrder: diff.any\n }, {\n name: 'opacity',\n type: t.zeroOneNumber,\n triggersZOrder: diff.zeroNonZero\n }, {\n name: 'text-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'min-zoomed-font-size',\n type: t.size\n }, {\n name: 'z-compound-depth',\n type: t.zCompoundDepth,\n triggersZOrder: diff.any\n }, {\n name: 'z-index-compare',\n type: t.zIndexCompare,\n triggersZOrder: diff.any\n }, {\n name: 'z-index',\n type: t.nonNegativeInt,\n triggersZOrder: diff.any\n }];\n var overlay = [{\n name: 'overlay-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'overlay-color',\n type: t.color\n }, {\n name: 'overlay-opacity',\n type: t.zeroOneNumber,\n triggersBounds: diff.zeroNonZero\n }, {\n name: 'overlay-shape',\n type: t.overlayShape,\n triggersBounds: diff.any\n }];\n var underlay = [{\n name: 'underlay-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'underlay-color',\n type: t.color\n }, {\n name: 'underlay-opacity',\n type: t.zeroOneNumber,\n triggersBounds: diff.zeroNonZero\n }, {\n name: 'underlay-shape',\n type: t.overlayShape,\n triggersBounds: diff.any\n }];\n var transition = [{\n name: 'transition-property',\n type: t.propList\n }, {\n name: 'transition-duration',\n type: t.time\n }, {\n name: 'transition-delay',\n type: t.time\n }, {\n name: 'transition-timing-function',\n type: t.easing\n }];\n\n var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) {\n if (parsedProp.value === 'label') {\n return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway)\n } else {\n return parsedProp.pfValue;\n }\n };\n\n var nodeBody = [{\n name: 'height',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'width',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'shape',\n type: t.nodeShape,\n triggersBounds: diff.any\n }, {\n name: 'shape-polygon-points',\n type: t.polygonPointList,\n triggersBounds: diff.any\n }, {\n name: 'background-color',\n type: t.color\n }, {\n name: 'background-fill',\n type: t.fill\n }, {\n name: 'background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'background-blacken',\n type: t.nOneOneNumber\n }, {\n name: 'background-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'background-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'background-gradient-direction',\n type: t.gradientDirection\n }, {\n name: 'padding',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'padding-relative-to',\n type: t.paddingRelativeTo,\n triggersBounds: diff.any\n }, {\n name: 'bounds-expansion',\n type: t.boundsExpansion,\n triggersBounds: diff.any\n }];\n var nodeBorder = [{\n name: 'border-color',\n type: t.color\n }, {\n name: 'border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'border-style',\n type: t.borderStyle\n }];\n var backgroundImage = [{\n name: 'background-image',\n type: t.urls\n }, {\n name: 'background-image-crossorigin',\n type: t.bgCrossOrigin\n }, {\n name: 'background-image-opacity',\n type: t.zeroOneNumbers\n }, {\n name: 'background-image-containment',\n type: t.bgContainment\n }, {\n name: 'background-image-smoothing',\n type: t.bools\n }, {\n name: 'background-position-x',\n type: t.bgPos\n }, {\n name: 'background-position-y',\n type: t.bgPos\n }, {\n name: 'background-width-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-height-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-repeat',\n type: t.bgRepeat\n }, {\n name: 'background-fit',\n type: t.bgFit\n }, {\n name: 'background-clip',\n type: t.bgClip\n }, {\n name: 'background-width',\n type: t.bgWH\n }, {\n name: 'background-height',\n type: t.bgWH\n }, {\n name: 'background-offset-x',\n type: t.bgPos\n }, {\n name: 'background-offset-y',\n type: t.bgPos\n }];\n var compound = [{\n name: 'position',\n type: t.position,\n triggersBounds: diff.any\n }, {\n name: 'compound-sizing-wrt-labels',\n type: t.compoundIncludeLabels,\n triggersBounds: diff.any\n }, {\n name: 'min-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-left',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-right',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-top',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-bottom',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }];\n var edgeLine = [{\n name: 'line-style',\n type: t.lineStyle\n }, {\n name: 'line-color',\n type: t.color\n }, {\n name: 'line-fill',\n type: t.fill\n }, {\n name: 'line-cap',\n type: t.lineCap\n }, {\n name: 'line-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'line-dash-pattern',\n type: t.numbers\n }, {\n name: 'line-dash-offset',\n type: t.number\n }, {\n name: 'line-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'line-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'curve-style',\n type: t.curveStyle,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'haystack-radius',\n type: t.zeroOneNumber,\n triggersBounds: diff.any\n }, {\n name: 'source-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'target-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'control-point-step-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'control-point-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'control-point-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'segment-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'segment-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn',\n type: t.bidirectionalSizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn-min-distance',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'taxi-direction',\n type: t.axisDirection,\n triggersBounds: diff.any\n }, {\n name: 'edge-distances',\n type: t.edgeDistances,\n triggersBounds: diff.any\n }, {\n name: 'arrow-scale',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }, {\n name: 'loop-direction',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'loop-sweep',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'source-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'target-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }];\n var ghost = [{\n name: 'ghost',\n type: t.bool,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-opacity',\n type: t.zeroOneNumber\n }];\n var core = [{\n name: 'selection-box-color',\n type: t.color\n }, {\n name: 'selection-box-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'selection-box-border-color',\n type: t.color\n }, {\n name: 'selection-box-border-width',\n type: t.size\n }, {\n name: 'active-bg-color',\n type: t.color\n }, {\n name: 'active-bg-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'active-bg-size',\n type: t.size\n }, {\n name: 'outside-texture-bg-color',\n type: t.color\n }, {\n name: 'outside-texture-bg-opacity',\n type: t.zeroOneNumber\n }]; // pie backgrounds for nodes\n\n var pie = [];\n styfn$2.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use)\n\n pie.push({\n name: 'pie-size',\n type: t.sizeMaybePercent\n });\n\n for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n pie.push({\n name: 'pie-' + i + '-background-color',\n type: t.color\n });\n pie.push({\n name: 'pie-' + i + '-background-size',\n type: t.percent\n });\n pie.push({\n name: 'pie-' + i + '-background-opacity',\n type: t.zeroOneNumber\n });\n } // edge arrows\n\n\n var edgeArrow = [];\n var arrowPrefixes = styfn$2.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'];\n [{\n name: 'arrow-shape',\n type: t.arrowShape,\n triggersBounds: diff.any\n }, {\n name: 'arrow-color',\n type: t.color\n }, {\n name: 'arrow-fill',\n type: t.arrowFill\n }].forEach(function (prop) {\n arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var type = prop.type,\n triggersBounds = prop.triggersBounds;\n edgeArrow.push({\n name: name,\n type: type,\n triggersBounds: triggersBounds\n });\n });\n }, {});\n var props = styfn$2.properties = [].concat(behavior, transition, visibility, overlay, underlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core);\n var propGroups = styfn$2.propertyGroups = {\n // common to all eles\n behavior: behavior,\n transition: transition,\n visibility: visibility,\n overlay: overlay,\n underlay: underlay,\n ghost: ghost,\n // labels\n commonLabel: commonLabel,\n labelDimensions: labelDimensions,\n mainLabel: mainLabel,\n sourceLabel: sourceLabel,\n targetLabel: targetLabel,\n // node props\n nodeBody: nodeBody,\n nodeBorder: nodeBorder,\n backgroundImage: backgroundImage,\n pie: pie,\n compound: compound,\n // edge props\n edgeLine: edgeLine,\n edgeArrow: edgeArrow,\n core: core\n };\n var propGroupNames = styfn$2.propertyGroupNames = {};\n var propGroupKeys = styfn$2.propertyGroupKeys = Object.keys(propGroups);\n propGroupKeys.forEach(function (key) {\n propGroupNames[key] = propGroups[key].map(function (prop) {\n return prop.name;\n });\n propGroups[key].forEach(function (prop) {\n return prop.groupKey = key;\n });\n }); // define aliases\n\n var aliases = styfn$2.aliases = [{\n name: 'content',\n pointsTo: 'label'\n }, {\n name: 'control-point-distance',\n pointsTo: 'control-point-distances'\n }, {\n name: 'control-point-weight',\n pointsTo: 'control-point-weights'\n }, {\n name: 'edge-text-rotation',\n pointsTo: 'text-rotation'\n }, {\n name: 'padding-left',\n pointsTo: 'padding'\n }, {\n name: 'padding-right',\n pointsTo: 'padding'\n }, {\n name: 'padding-top',\n pointsTo: 'padding'\n }, {\n name: 'padding-bottom',\n pointsTo: 'padding'\n }]; // list of property names\n\n styfn$2.propertyNames = props.map(function (p) {\n return p.name;\n }); // allow access of properties by name ( e.g. style.properties.height )\n\n for (var _i = 0; _i < props.length; _i++) {\n var prop = props[_i];\n props[prop.name] = prop; // allow lookup by name\n } // map aliases\n\n\n for (var _i2 = 0; _i2 < aliases.length; _i2++) {\n var alias = aliases[_i2];\n var pointsToProp = props[alias.pointsTo];\n var aliasProp = {\n name: alias.name,\n alias: true,\n pointsTo: pointsToProp\n }; // add alias prop for parsing\n\n props.push(aliasProp);\n props[alias.name] = aliasProp; // allow lookup by name\n }\n })();\n\n styfn$2.getDefaultProperty = function (name) {\n return this.getDefaultProperties()[name];\n };\n\n styfn$2.getDefaultProperties = function () {\n var _p = this._private;\n\n if (_p.defaultProperties != null) {\n return _p.defaultProperties;\n }\n\n var rawProps = extend({\n // core props\n 'selection-box-color': '#ddd',\n 'selection-box-opacity': 0.65,\n 'selection-box-border-color': '#aaa',\n 'selection-box-border-width': 1,\n 'active-bg-color': 'black',\n 'active-bg-opacity': 0.15,\n 'active-bg-size': 30,\n 'outside-texture-bg-color': '#000',\n 'outside-texture-bg-opacity': 0.125,\n // common node/edge props\n 'events': 'yes',\n 'text-events': 'no',\n 'text-valign': 'top',\n 'text-halign': 'center',\n 'text-justification': 'auto',\n 'line-height': 1,\n 'color': '#000',\n 'text-outline-color': '#000',\n 'text-outline-width': 0,\n 'text-outline-opacity': 1,\n 'text-opacity': 1,\n 'text-decoration': 'none',\n 'text-transform': 'none',\n 'text-wrap': 'none',\n 'text-overflow-wrap': 'whitespace',\n 'text-max-width': 9999,\n 'text-background-color': '#000',\n 'text-background-opacity': 0,\n 'text-background-shape': 'rectangle',\n 'text-background-padding': 0,\n 'text-border-opacity': 0,\n 'text-border-width': 0,\n 'text-border-style': 'solid',\n 'text-border-color': '#000',\n 'font-family': 'Helvetica Neue, Helvetica, sans-serif',\n 'font-style': 'normal',\n 'font-weight': 'normal',\n 'font-size': 16,\n 'min-zoomed-font-size': 0,\n 'text-rotation': 'none',\n 'source-text-rotation': 'none',\n 'target-text-rotation': 'none',\n 'visibility': 'visible',\n 'display': 'element',\n 'opacity': 1,\n 'z-compound-depth': 'auto',\n 'z-index-compare': 'auto',\n 'z-index': 0,\n 'label': '',\n 'text-margin-x': 0,\n 'text-margin-y': 0,\n 'source-label': '',\n 'source-text-offset': 0,\n 'source-text-margin-x': 0,\n 'source-text-margin-y': 0,\n 'target-label': '',\n 'target-text-offset': 0,\n 'target-text-margin-x': 0,\n 'target-text-margin-y': 0,\n 'overlay-opacity': 0,\n 'overlay-color': '#000',\n 'overlay-padding': 10,\n 'overlay-shape': 'round-rectangle',\n 'underlay-opacity': 0,\n 'underlay-color': '#000',\n 'underlay-padding': 10,\n 'underlay-shape': 'round-rectangle',\n 'transition-property': 'none',\n 'transition-duration': 0,\n 'transition-delay': 0,\n 'transition-timing-function': 'linear',\n // node props\n 'background-blacken': 0,\n 'background-color': '#999',\n 'background-fill': 'solid',\n 'background-opacity': 1,\n 'background-image': 'none',\n 'background-image-crossorigin': 'anonymous',\n 'background-image-opacity': 1,\n 'background-image-containment': 'inside',\n 'background-image-smoothing': 'yes',\n 'background-position-x': '50%',\n 'background-position-y': '50%',\n 'background-offset-x': 0,\n 'background-offset-y': 0,\n 'background-width-relative-to': 'include-padding',\n 'background-height-relative-to': 'include-padding',\n 'background-repeat': 'no-repeat',\n 'background-fit': 'none',\n 'background-clip': 'node',\n 'background-width': 'auto',\n 'background-height': 'auto',\n 'border-color': '#000',\n 'border-opacity': 1,\n 'border-width': 0,\n 'border-style': 'solid',\n 'height': 30,\n 'width': 30,\n 'shape': 'ellipse',\n 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1',\n 'bounds-expansion': 0,\n // node gradient\n 'background-gradient-direction': 'to-bottom',\n 'background-gradient-stop-colors': '#999',\n 'background-gradient-stop-positions': '0%',\n // ghost props\n 'ghost': 'no',\n 'ghost-offset-y': 0,\n 'ghost-offset-x': 0,\n 'ghost-opacity': 0,\n // compound props\n 'padding': 0,\n 'padding-relative-to': 'width',\n 'position': 'origin',\n 'compound-sizing-wrt-labels': 'include',\n 'min-width': 0,\n 'min-width-bias-left': 0,\n 'min-width-bias-right': 0,\n 'min-height': 0,\n 'min-height-bias-top': 0,\n 'min-height-bias-bottom': 0\n }, {\n // node pie bg\n 'pie-size': '100%'\n }, [{\n name: 'pie-{{i}}-background-color',\n value: 'black'\n }, {\n name: 'pie-{{i}}-background-size',\n value: '0%'\n }, {\n name: 'pie-{{i}}-background-opacity',\n value: 1\n }].reduce(function (css, prop) {\n for (var i = 1; i <= styfn$2.pieBackgroundN; i++) {\n var name = prop.name.replace('{{i}}', i);\n var val = prop.value;\n css[name] = val;\n }\n\n return css;\n }, {}), {\n // edge props\n 'line-style': 'solid',\n 'line-color': '#999',\n 'line-fill': 'solid',\n 'line-cap': 'butt',\n 'line-opacity': 1,\n 'line-gradient-stop-colors': '#999',\n 'line-gradient-stop-positions': '0%',\n 'control-point-step-size': 40,\n 'control-point-weights': 0.5,\n 'segment-weights': 0.5,\n 'segment-distances': 20,\n 'taxi-turn': '50%',\n 'taxi-turn-min-distance': 10,\n 'taxi-direction': 'auto',\n 'edge-distances': 'intersection',\n 'curve-style': 'haystack',\n 'haystack-radius': 0,\n 'arrow-scale': 1,\n 'loop-direction': '-45deg',\n 'loop-sweep': '-90deg',\n 'source-distance-from-node': 0,\n 'target-distance-from-node': 0,\n 'source-endpoint': 'outside-to-node',\n 'target-endpoint': 'outside-to-node',\n 'line-dash-pattern': [6, 3],\n 'line-dash-offset': 0\n }, [{\n name: 'arrow-shape',\n value: 'none'\n }, {\n name: 'arrow-color',\n value: '#999'\n }, {\n name: 'arrow-fill',\n value: 'filled'\n }].reduce(function (css, prop) {\n styfn$2.arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var val = prop.value;\n css[name] = val;\n });\n return css;\n }, {}));\n var parsedProps = {};\n\n for (var i = 0; i < this.properties.length; i++) {\n var prop = this.properties[i];\n\n if (prop.pointsTo) {\n continue;\n }\n\n var name = prop.name;\n var val = rawProps[name];\n var parsedProp = this.parse(name, val);\n parsedProps[name] = parsedProp;\n }\n\n _p.defaultProperties = parsedProps;\n return _p.defaultProperties;\n };\n\n styfn$2.addDefaultStylesheet = function () {\n this.selector(':parent').css({\n 'shape': 'rectangle',\n 'padding': 10,\n 'background-color': '#eee',\n 'border-color': '#ccc',\n 'border-width': 1\n }).selector('edge').css({\n 'width': 3\n }).selector(':loop').css({\n 'curve-style': 'bezier'\n }).selector('edge:compound').css({\n 'curve-style': 'bezier',\n 'source-endpoint': 'outside-to-line',\n 'target-endpoint': 'outside-to-line'\n }).selector(':selected').css({\n 'background-color': '#0169D9',\n 'line-color': '#0169D9',\n 'source-arrow-color': '#0169D9',\n 'target-arrow-color': '#0169D9',\n 'mid-source-arrow-color': '#0169D9',\n 'mid-target-arrow-color': '#0169D9'\n }).selector(':parent:selected').css({\n 'background-color': '#CCE1F9',\n 'border-color': '#aec8e5'\n }).selector(':active').css({\n 'overlay-color': 'black',\n 'overlay-padding': 10,\n 'overlay-opacity': 0.25\n });\n this.defaultLength = this.length;\n };\n\n var styfn$1 = {}; // a caching layer for property parsing\n\n styfn$1.parse = function (name, value, propIsBypass, propIsFlat) {\n var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway\n\n if (fn$6(value)) {\n return self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n }\n\n var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat;\n var bypassKey = propIsBypass ? 't' : 'f';\n var valueKey = '' + value;\n var argHash = hashStrings(name, valueKey, bypassKey, flatKey);\n var propCache = self.propCache = self.propCache || [];\n var ret;\n\n if (!(ret = propCache[argHash])) {\n ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden\n // - mappings can't be shared b/c mappings are per-element\n\n\n if (propIsBypass || propIsFlat === 'mapping') {\n // need a copy since props are mutated later in their lifecycles\n ret = copy(ret);\n\n if (ret) {\n ret.value = copy(ret.value); // because it could be an array, e.g. colour\n }\n }\n\n return ret;\n };\n\n styfn$1.parseImplWarn = function (name, value, propIsBypass, propIsFlat) {\n var prop = this.parseImpl(name, value, propIsBypass, propIsFlat);\n\n if (!prop && value != null) {\n warn(\"The style property `\".concat(name, \": \").concat(value, \"` is invalid\"));\n }\n\n if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') {\n warn('The style value of `label` is deprecated for `' + prop.name + '`');\n }\n\n return prop;\n }; // parse a property; return null on invalid; return parsed property otherwise\n // fields :\n // - name : the name of the property\n // - value : the parsed, native-typed value of the property\n // - strValue : a string value that represents the property value in valid css\n // - bypass : true iff the property is a bypass property\n\n\n styfn$1.parseImpl = function (name, value, propIsBypass, propIsFlat) {\n var self = this;\n name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName')\n\n var property = self.properties[name];\n var passedValue = value;\n var types = self.types;\n\n if (!property) {\n return null;\n } // return null on property of unknown name\n\n\n if (value === undefined) {\n return null;\n } // can't assign undefined\n // the property may be an alias\n\n\n if (property.alias) {\n property = property.pointsTo;\n name = property.name;\n }\n\n var valueIsString = string(value);\n\n if (valueIsString) {\n // trim the value to make parsing easier\n value = value.trim();\n }\n\n var type = property.type;\n\n if (!type) {\n return null;\n } // no type, no luck\n // check if bypass is null or empty string (i.e. indication to delete bypass property)\n\n\n if (propIsBypass && (value === '' || value === null)) {\n return {\n name: name,\n value: value,\n bypass: true,\n deleteBypass: true\n };\n } // check if value is a function used as a mapper\n\n\n if (fn$6(value)) {\n return {\n name: name,\n value: value,\n strValue: 'fn',\n mapped: types.fn,\n bypass: propIsBypass\n };\n } // check if value is mapped\n\n\n var data, mapData;\n\n if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n\n\n var mapped = types.data;\n return {\n name: name,\n value: data,\n strValue: '' + value,\n mapped: mapped,\n field: data[1],\n bypass: propIsBypass\n };\n } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n\n\n if (type.multiple) {\n return false;\n } // impossible to map to num\n\n\n var _mapped = types.mapData; // we can map only if the type is a colour or a number\n\n if (!(type.color || type.number)) {\n return false;\n }\n\n var valueMin = this.parse(name, mapData[4]); // parse to validate\n\n if (!valueMin || valueMin.mapped) {\n return false;\n } // can't be invalid or mapped\n\n\n var valueMax = this.parse(name, mapData[5]); // parse to validate\n\n if (!valueMax || valueMax.mapped) {\n return false;\n } // can't be invalid or mapped\n // check if valueMin and valueMax are the same\n\n\n if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) {\n warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`');\n return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range\n } else if (type.color) {\n var c1 = valueMin.value;\n var c2 = valueMax.value;\n var same = c1[0] === c2[0] // red\n && c1[1] === c2[1] // green\n && c1[2] === c2[2] // blue\n && ( // optional alpha\n c1[3] === c2[3] // same alpha outright\n || (c1[3] == null || c1[3] === 1 // full opacity for colour 1?\n ) && (c2[3] == null || c2[3] === 1) // full opacity for colour 2?\n );\n\n if (same) {\n return false;\n } // can't make a mapper without a range\n\n }\n\n return {\n name: name,\n value: mapData,\n strValue: '' + value,\n mapped: _mapped,\n field: mapData[1],\n fieldMin: parseFloat(mapData[2]),\n // min & max are numeric\n fieldMax: parseFloat(mapData[3]),\n valueMin: valueMin.value,\n valueMax: valueMax.value,\n bypass: propIsBypass\n };\n }\n\n if (type.multiple && propIsFlat !== 'multiple') {\n var vals;\n\n if (valueIsString) {\n vals = value.split(/\\s+/);\n } else if (array(value)) {\n vals = value;\n } else {\n vals = [value];\n }\n\n if (type.evenMultiple && vals.length % 2 !== 0) {\n return null;\n }\n\n var valArr = [];\n var unitsArr = [];\n var pfValArr = [];\n var strVal = '';\n var hasEnum = false;\n\n for (var i = 0; i < vals.length; i++) {\n var p = self.parse(name, vals[i], propIsBypass, 'multiple');\n hasEnum = hasEnum || string(p.value);\n valArr.push(p.value);\n pfValArr.push(p.pfValue != null ? p.pfValue : p.value);\n unitsArr.push(p.units);\n strVal += (i > 0 ? ' ' : '') + p.strValue;\n }\n\n if (type.validate && !type.validate(valArr, unitsArr)) {\n return null;\n }\n\n if (type.singleEnum && hasEnum) {\n if (valArr.length === 1 && string(valArr[0])) {\n return {\n name: name,\n value: valArr[0],\n strValue: valArr[0],\n bypass: propIsBypass\n };\n } else {\n return null;\n }\n }\n\n return {\n name: name,\n value: valArr,\n pfValue: pfValArr,\n strValue: strVal,\n bypass: propIsBypass,\n units: unitsArr\n };\n } // several types also allow enums\n\n\n var checkEnums = function checkEnums() {\n for (var _i = 0; _i < type.enums.length; _i++) {\n var en = type.enums[_i];\n\n if (en === value) {\n return {\n name: name,\n value: value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n\n return null;\n }; // check the type and return the appropriate object\n\n\n if (type.number) {\n var units;\n var implicitUnits = 'px'; // not set => px\n\n if (type.units) {\n // use specified units if set\n units = type.units;\n }\n\n if (type.implicitUnits) {\n implicitUnits = type.implicitUnits;\n }\n\n if (!type.unitless) {\n if (valueIsString) {\n var unitsRegex = 'px|em' + (type.allowPercent ? '|\\\\%' : '');\n\n if (units) {\n unitsRegex = units;\n } // only allow explicit units if so set\n\n\n var match = value.match('^(' + number + ')(' + unitsRegex + ')?' + '$');\n\n if (match) {\n value = match[1];\n units = match[2] || implicitUnits;\n }\n } else if (!units || type.implicitUnits) {\n units = implicitUnits; // implicitly px if unspecified\n }\n }\n\n value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid\n\n if (isNaN(value) && type.enums === undefined) {\n return null;\n } // check if this number type also accepts special keywords in place of numbers\n // (i.e. `left`, `auto`, etc)\n\n\n if (isNaN(value) && type.enums !== undefined) {\n value = passedValue;\n return checkEnums();\n } // check if value must be an integer\n\n\n if (type.integer && !integer(value)) {\n return null;\n } // check value is within range\n\n\n if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) {\n return null;\n }\n\n var ret = {\n name: name,\n value: value,\n strValue: '' + value + (units ? units : ''),\n units: units,\n bypass: propIsBypass\n }; // normalise value in pixels\n\n if (type.unitless || units !== 'px' && units !== 'em') {\n ret.pfValue = value;\n } else {\n ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value;\n } // normalise value in ms\n\n\n if (units === 'ms' || units === 's') {\n ret.pfValue = units === 'ms' ? value : 1000 * value;\n } // normalise value in rad\n\n\n if (units === 'deg' || units === 'rad') {\n ret.pfValue = units === 'rad' ? value : deg2rad(value);\n } // normalize value in %\n\n\n if (units === '%') {\n ret.pfValue = value / 100;\n }\n\n return ret;\n } else if (type.propList) {\n var props = [];\n var propsStr = '' + value;\n\n if (propsStr === 'none') ; else {\n // go over each prop\n var propsSplit = propsStr.split(/\\s*,\\s*|\\s+/);\n\n for (var _i2 = 0; _i2 < propsSplit.length; _i2++) {\n var propName = propsSplit[_i2].trim();\n\n if (self.properties[propName]) {\n props.push(propName);\n } else {\n warn('`' + propName + '` is not a valid property name');\n }\n }\n\n if (props.length === 0) {\n return null;\n }\n }\n\n return {\n name: name,\n value: props,\n strValue: props.length === 0 ? 'none' : props.join(' '),\n bypass: propIsBypass\n };\n } else if (type.color) {\n var tuple = color2tuple(value);\n\n if (!tuple) {\n return null;\n }\n\n return {\n name: name,\n value: tuple,\n pfValue: tuple,\n strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')',\n // n.b. no spaces b/c of multiple support\n bypass: propIsBypass\n };\n } else if (type.regex || type.regexes) {\n // first check enums\n if (type.enums) {\n var enumProp = checkEnums();\n\n if (enumProp) {\n return enumProp;\n }\n }\n\n var regexes = type.regexes ? type.regexes : [type.regex];\n\n for (var _i3 = 0; _i3 < regexes.length; _i3++) {\n var regex = new RegExp(regexes[_i3]); // make a regex from the type string\n\n var m = regex.exec(value);\n\n if (m) {\n // regex matches\n return {\n name: name,\n value: type.singleRegexMatchValue ? m[1] : m,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n\n return null; // didn't match any\n } else if (type.string) {\n // just return\n return {\n name: name,\n value: '' + value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n } else if (type.enums) {\n // check enums last because it's a combo type in others\n return checkEnums();\n } else {\n return null; // not a type we can handle\n }\n };\n\n var Style = function Style(cy) {\n if (!(this instanceof Style)) {\n return new Style(cy);\n }\n\n if (!core(cy)) {\n error('A style must have a core reference');\n return;\n }\n\n this._private = {\n cy: cy,\n coreStyle: {}\n };\n this.length = 0;\n this.resetToDefault();\n };\n\n var styfn = Style.prototype;\n\n styfn.instanceString = function () {\n return 'style';\n }; // remove all contexts\n\n\n styfn.clear = function () {\n var _p = this._private;\n var cy = _p.cy;\n var eles = cy.elements();\n\n for (var i = 0; i < this.length; i++) {\n this[i] = undefined;\n }\n\n this.length = 0;\n _p.contextStyles = {};\n _p.propDiffs = {};\n this.cleanElements(eles, true);\n eles.forEach(function (ele) {\n var ele_p = ele[0]._private;\n ele_p.styleDirty = true;\n ele_p.appliedInitStyle = false;\n });\n return this; // chaining\n };\n\n styfn.resetToDefault = function () {\n this.clear();\n this.addDefaultStylesheet();\n return this;\n }; // builds a style object for the 'core' selector\n\n\n styfn.core = function (propName) {\n return this._private.coreStyle[propName] || this.getDefaultProperty(propName);\n }; // create a new context from the specified selector string and switch to that context\n\n\n styfn.selector = function (selectorStr) {\n // 'core' is a special case and does not need a selector\n var selector = selectorStr === 'core' ? null : new Selector(selectorStr);\n var i = this.length++; // new context means new index\n\n this[i] = {\n selector: selector,\n properties: [],\n mappedProperties: [],\n index: i\n };\n return this; // chaining\n }; // add one or many css rules to the current context\n\n\n styfn.css = function () {\n var self = this;\n var args = arguments;\n\n if (args.length === 1) {\n var map = args[0];\n\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var mapVal = map[prop.name];\n\n if (mapVal === undefined) {\n mapVal = map[dash2camel(prop.name)];\n }\n\n if (mapVal !== undefined) {\n this.cssRule(prop.name, mapVal);\n }\n }\n } else if (args.length === 2) {\n this.cssRule(args[0], args[1]);\n } // do nothing if args are invalid\n\n\n return this; // chaining\n };\n\n styfn.style = styfn.css; // add a single css rule to the current context\n\n styfn.cssRule = function (name, value) {\n // name-value pair\n var property = this.parse(name, value); // add property to current context if valid\n\n if (property) {\n var i = this.length - 1;\n this[i].properties.push(property);\n this[i].properties[property.name] = property; // allow access by name as well\n\n if (property.name.match(/pie-(\\d+)-background-size/) && property.value) {\n this._private.hasPie = true;\n }\n\n if (property.mapped) {\n this[i].mappedProperties.push(property);\n } // add to core style if necessary\n\n\n var currentSelectorIsCore = !this[i].selector;\n\n if (currentSelectorIsCore) {\n this._private.coreStyle[property.name] = property;\n }\n }\n\n return this; // chaining\n };\n\n styfn.append = function (style) {\n if (stylesheet(style)) {\n style.appendToStyle(this);\n } else if (array(style)) {\n this.appendFromJson(style);\n } else if (string(style)) {\n this.appendFromString(style);\n } // you probably wouldn't want to append a Style, since you'd duplicate the default parts\n\n\n return this;\n }; // static function\n\n\n Style.fromJson = function (cy, json) {\n var style = new Style(cy);\n style.fromJson(json);\n return style;\n };\n\n Style.fromString = function (cy, string) {\n return new Style(cy).fromString(string);\n };\n\n [styfn$8, styfn$7, styfn$6, styfn$5, styfn$4, styfn$3, styfn$2, styfn$1].forEach(function (props) {\n extend(styfn, props);\n });\n Style.types = styfn.types;\n Style.properties = styfn.properties;\n Style.propertyGroups = styfn.propertyGroups;\n Style.propertyGroupNames = styfn.propertyGroupNames;\n Style.propertyGroupKeys = styfn.propertyGroupKeys;\n\n var corefn$2 = {\n style: function style(newStyle) {\n if (newStyle) {\n var s = this.setStyle(newStyle);\n s.update();\n }\n\n return this._private.style;\n },\n setStyle: function setStyle(style) {\n var _p = this._private;\n\n if (stylesheet(style)) {\n _p.style = style.generateStyle(this);\n } else if (array(style)) {\n _p.style = Style.fromJson(this, style);\n } else if (string(style)) {\n _p.style = Style.fromString(this, style);\n } else {\n _p.style = Style(this);\n }\n\n return _p.style;\n },\n // e.g. cy.data() changed => recalc ele mappers\n updateStyle: function updateStyle() {\n this.mutableElements().updateStyle(); // just send to all eles\n }\n };\n\n var defaultSelectionType = 'single';\n var corefn$1 = {\n autolock: function autolock(bool) {\n if (bool !== undefined) {\n this._private.autolock = bool ? true : false;\n } else {\n return this._private.autolock;\n }\n\n return this; // chaining\n },\n autoungrabify: function autoungrabify(bool) {\n if (bool !== undefined) {\n this._private.autoungrabify = bool ? true : false;\n } else {\n return this._private.autoungrabify;\n }\n\n return this; // chaining\n },\n autounselectify: function autounselectify(bool) {\n if (bool !== undefined) {\n this._private.autounselectify = bool ? true : false;\n } else {\n return this._private.autounselectify;\n }\n\n return this; // chaining\n },\n selectionType: function selectionType(selType) {\n var _p = this._private;\n\n if (_p.selectionType == null) {\n _p.selectionType = defaultSelectionType;\n }\n\n if (selType !== undefined) {\n if (selType === 'additive' || selType === 'single') {\n _p.selectionType = selType;\n }\n } else {\n return _p.selectionType;\n }\n\n return this;\n },\n panningEnabled: function panningEnabled(bool) {\n if (bool !== undefined) {\n this._private.panningEnabled = bool ? true : false;\n } else {\n return this._private.panningEnabled;\n }\n\n return this; // chaining\n },\n userPanningEnabled: function userPanningEnabled(bool) {\n if (bool !== undefined) {\n this._private.userPanningEnabled = bool ? true : false;\n } else {\n return this._private.userPanningEnabled;\n }\n\n return this; // chaining\n },\n zoomingEnabled: function zoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.zoomingEnabled = bool ? true : false;\n } else {\n return this._private.zoomingEnabled;\n }\n\n return this; // chaining\n },\n userZoomingEnabled: function userZoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.userZoomingEnabled = bool ? true : false;\n } else {\n return this._private.userZoomingEnabled;\n }\n\n return this; // chaining\n },\n boxSelectionEnabled: function boxSelectionEnabled(bool) {\n if (bool !== undefined) {\n this._private.boxSelectionEnabled = bool ? true : false;\n } else {\n return this._private.boxSelectionEnabled;\n }\n\n return this; // chaining\n },\n pan: function pan() {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n\n switch (args.length) {\n case 0:\n // .pan()\n return pan;\n\n case 1:\n if (string(args[0])) {\n // .pan('x')\n dim = args[0];\n return pan[dim];\n } else if (plainObject(args[0])) {\n // .pan({ x: 0, y: 100 })\n if (!this._private.panningEnabled) {\n return this;\n }\n\n dims = args[0];\n x = dims.x;\n y = dims.y;\n\n if (number$1(x)) {\n pan.x = x;\n }\n\n if (number$1(y)) {\n pan.y = y;\n }\n\n this.emit('pan viewport');\n }\n\n break;\n\n case 2:\n // .pan('x', 100)\n if (!this._private.panningEnabled) {\n return this;\n }\n\n dim = args[0];\n val = args[1];\n\n if ((dim === 'x' || dim === 'y') && number$1(val)) {\n pan[dim] = val;\n }\n\n this.emit('pan viewport');\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n panBy: function panBy(arg0, arg1) {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n\n if (!this._private.panningEnabled) {\n return this;\n }\n\n switch (args.length) {\n case 1:\n if (plainObject(arg0)) {\n // .panBy({ x: 0, y: 100 })\n dims = args[0];\n x = dims.x;\n y = dims.y;\n\n if (number$1(x)) {\n pan.x += x;\n }\n\n if (number$1(y)) {\n pan.y += y;\n }\n\n this.emit('pan viewport');\n }\n\n break;\n\n case 2:\n // .panBy('x', 100)\n dim = arg0;\n val = arg1;\n\n if ((dim === 'x' || dim === 'y') && number$1(val)) {\n pan[dim] += val;\n }\n\n this.emit('pan viewport');\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n fit: function fit(elements, padding) {\n var viewportState = this.getFitViewport(elements, padding);\n\n if (viewportState) {\n var _p = this._private;\n _p.zoom = viewportState.zoom;\n _p.pan = viewportState.pan;\n this.emit('pan zoom viewport');\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n getFitViewport: function getFitViewport(elements, padding) {\n if (number$1(elements) && padding === undefined) {\n // elements is optional\n padding = elements;\n elements = undefined;\n }\n\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return;\n }\n\n var bb;\n\n if (string(elements)) {\n var sel = elements;\n elements = this.$(sel);\n } else if (boundingBox(elements)) {\n // assume bb\n var bbe = elements;\n bb = {\n x1: bbe.x1,\n y1: bbe.y1,\n x2: bbe.x2,\n y2: bbe.y2\n };\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n\n if (elementOrCollection(elements) && elements.empty()) {\n return;\n } // can't fit to nothing\n\n\n bb = bb || elements.boundingBox();\n var w = this.width();\n var h = this.height();\n var zoom;\n padding = number$1(padding) ? padding : 0;\n\n if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) {\n zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom\n\n zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom;\n zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom;\n var pan = {\n // now pan to middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return {\n zoom: zoom,\n pan: pan\n };\n }\n\n return;\n },\n zoomRange: function zoomRange(min, max) {\n var _p = this._private;\n\n if (max == null) {\n var opts = min;\n min = opts.min;\n max = opts.max;\n }\n\n if (number$1(min) && number$1(max) && min <= max) {\n _p.minZoom = min;\n _p.maxZoom = max;\n } else if (number$1(min) && max === undefined && min <= _p.maxZoom) {\n _p.minZoom = min;\n } else if (number$1(max) && min === undefined && max >= _p.minZoom) {\n _p.maxZoom = max;\n }\n\n return this;\n },\n minZoom: function minZoom(zoom) {\n if (zoom === undefined) {\n return this._private.minZoom;\n } else {\n return this.zoomRange({\n min: zoom\n });\n }\n },\n maxZoom: function maxZoom(zoom) {\n if (zoom === undefined) {\n return this._private.maxZoom;\n } else {\n return this.zoomRange({\n max: zoom\n });\n }\n },\n getZoomedViewport: function getZoomedViewport(params) {\n var _p = this._private;\n var currentPan = _p.pan;\n var currentZoom = _p.zoom;\n var pos; // in rendered px\n\n var zoom;\n var bail = false;\n\n if (!_p.zoomingEnabled) {\n // zooming disabled\n bail = true;\n }\n\n if (number$1(params)) {\n // then set the zoom\n zoom = params;\n } else if (plainObject(params)) {\n // then zoom about a point\n zoom = params.level;\n\n if (params.position != null) {\n pos = modelToRenderedPosition(params.position, currentZoom, currentPan);\n } else if (params.renderedPosition != null) {\n pos = params.renderedPosition;\n }\n\n if (pos != null && !_p.panningEnabled) {\n // panning disabled\n bail = true;\n }\n } // crop zoom\n\n\n zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom;\n zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params\n\n if (bail || !number$1(zoom) || zoom === currentZoom || pos != null && (!number$1(pos.x) || !number$1(pos.y))) {\n return null;\n }\n\n if (pos != null) {\n // set zoom about position\n var pan1 = currentPan;\n var zoom1 = currentZoom;\n var zoom2 = zoom;\n var pan2 = {\n x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x,\n y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y\n };\n return {\n zoomed: true,\n panned: true,\n zoom: zoom2,\n pan: pan2\n };\n } else {\n // just set the zoom\n return {\n zoomed: true,\n panned: false,\n zoom: zoom,\n pan: currentPan\n };\n }\n },\n zoom: function zoom(params) {\n if (params === undefined) {\n // get\n return this._private.zoom;\n } else {\n // set\n var vp = this.getZoomedViewport(params);\n var _p = this._private;\n\n if (vp == null || !vp.zoomed) {\n return this;\n }\n\n _p.zoom = vp.zoom;\n\n if (vp.panned) {\n _p.pan.x = vp.pan.x;\n _p.pan.y = vp.pan.y;\n }\n\n this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport');\n this.notify('viewport');\n return this; // chaining\n }\n },\n viewport: function viewport(opts) {\n var _p = this._private;\n var zoomDefd = true;\n var panDefd = true;\n var events = []; // to trigger\n\n var zoomFailed = false;\n var panFailed = false;\n\n if (!opts) {\n return this;\n }\n\n if (!number$1(opts.zoom)) {\n zoomDefd = false;\n }\n\n if (!plainObject(opts.pan)) {\n panDefd = false;\n }\n\n if (!zoomDefd && !panDefd) {\n return this;\n }\n\n if (zoomDefd) {\n var z = opts.zoom;\n\n if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) {\n zoomFailed = true;\n } else {\n _p.zoom = z;\n events.push('zoom');\n }\n }\n\n if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) {\n var p = opts.pan;\n\n if (number$1(p.x)) {\n _p.pan.x = p.x;\n panFailed = false;\n }\n\n if (number$1(p.y)) {\n _p.pan.y = p.y;\n panFailed = false;\n }\n\n if (!panFailed) {\n events.push('pan');\n }\n }\n\n if (events.length > 0) {\n events.push('viewport');\n this.emit(events.join(' '));\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n center: function center(elements) {\n var pan = this.getCenterPan(elements);\n\n if (pan) {\n this._private.pan = pan;\n this.emit('pan viewport');\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n getCenterPan: function getCenterPan(elements, zoom) {\n if (!this._private.panningEnabled) {\n return;\n }\n\n if (string(elements)) {\n var selector = elements;\n elements = this.mutableElements().filter(selector);\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n\n if (elements.length === 0) {\n return;\n } // can't centre pan to nothing\n\n\n var bb = elements.boundingBox();\n var w = this.width();\n var h = this.height();\n zoom = zoom === undefined ? this._private.zoom : zoom;\n var pan = {\n // middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return pan;\n },\n reset: function reset() {\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return this;\n }\n\n this.viewport({\n pan: {\n x: 0,\n y: 0\n },\n zoom: 1\n });\n return this; // chaining\n },\n invalidateSize: function invalidateSize() {\n this._private.sizeCache = null;\n },\n size: function size() {\n var _p = this._private;\n var container = _p.container;\n var cy = this;\n return _p.sizeCache = _p.sizeCache || (container ? function () {\n var style = cy.window().getComputedStyle(container);\n\n var val = function val(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n\n return {\n width: container.clientWidth - val('padding-left') - val('padding-right'),\n height: container.clientHeight - val('padding-top') - val('padding-bottom')\n };\n }() : {\n // fallback if no container (not 0 b/c can be used for dividing etc)\n width: 1,\n height: 1\n });\n },\n width: function width() {\n return this.size().width;\n },\n height: function height() {\n return this.size().height;\n },\n extent: function extent() {\n var pan = this._private.pan;\n var zoom = this._private.zoom;\n var rb = this.renderedExtent();\n var b = {\n x1: (rb.x1 - pan.x) / zoom,\n x2: (rb.x2 - pan.x) / zoom,\n y1: (rb.y1 - pan.y) / zoom,\n y2: (rb.y2 - pan.y) / zoom\n };\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n return b;\n },\n renderedExtent: function renderedExtent() {\n var width = this.width();\n var height = this.height();\n return {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height,\n w: width,\n h: height\n };\n },\n multiClickDebounceTime: function multiClickDebounceTime(_int) {\n if (_int) this._private.multiClickDebounceTime = _int;else return this._private.multiClickDebounceTime;\n return this; // chaining\n }\n }; // aliases\n\n corefn$1.centre = corefn$1.center; // backwards compatibility\n\n corefn$1.autolockNodes = corefn$1.autolock;\n corefn$1.autoungrabifyNodes = corefn$1.autoungrabify;\n\n var fn = {\n data: define.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeData: define.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n }),\n scratch: define.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeScratch: define.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n })\n }; // aliases\n\n fn.attr = fn.data;\n fn.removeAttr = fn.removeData;\n\n var Core = function Core(opts) {\n var cy = this;\n opts = extend({}, opts);\n var container = opts.container; // allow for passing a wrapped jquery object\n // e.g. cytoscape({ container: $('#cy') })\n\n if (container && !htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n\n var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery\n\n reg = reg || {};\n\n if (reg && reg.cy) {\n reg.cy.destroy();\n reg = {}; // old instance => replace reg completely\n }\n\n var readies = reg.readies = reg.readies || [];\n\n if (container) {\n container._cyreg = reg;\n } // make sure container assoc'd reg points to this cy\n\n\n reg.cy = cy;\n var head = _window !== undefined && container !== undefined && !opts.headless;\n var options = opts;\n options.layout = extend({\n name: head ? 'grid' : 'null'\n }, options.layout);\n options.renderer = extend({\n name: head ? 'canvas' : 'null'\n }, options.renderer);\n\n var defVal = function defVal(def, val, altVal) {\n if (val !== undefined) {\n return val;\n } else if (altVal !== undefined) {\n return altVal;\n } else {\n return def;\n }\n };\n\n var _p = this._private = {\n container: container,\n // html dom ele container\n ready: false,\n // whether ready has been triggered\n options: options,\n // cached options\n elements: new Collection(this),\n // elements in the graph\n listeners: [],\n // list of listeners\n aniEles: new Collection(this),\n // elements being animated\n data: options.data || {},\n // data for the core\n scratch: {},\n // scratch object for core\n layout: null,\n renderer: null,\n destroyed: false,\n // whether destroy was called\n notificationsEnabled: true,\n // whether notifications are sent to the renderer\n minZoom: 1e-50,\n maxZoom: 1e50,\n zoomingEnabled: defVal(true, options.zoomingEnabled),\n userZoomingEnabled: defVal(true, options.userZoomingEnabled),\n panningEnabled: defVal(true, options.panningEnabled),\n userPanningEnabled: defVal(true, options.userPanningEnabled),\n boxSelectionEnabled: defVal(true, options.boxSelectionEnabled),\n autolock: defVal(false, options.autolock, options.autolockNodes),\n autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes),\n autounselectify: defVal(false, options.autounselectify),\n styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled,\n zoom: number$1(options.zoom) ? options.zoom : 1,\n pan: {\n x: plainObject(options.pan) && number$1(options.pan.x) ? options.pan.x : 0,\n y: plainObject(options.pan) && number$1(options.pan.y) ? options.pan.y : 0\n },\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n hasCompoundNodes: false,\n multiClickDebounceTime: defVal(250, options.multiClickDebounceTime)\n };\n\n this.createEmitter(); // set selection type\n\n this.selectionType(options.selectionType); // init zoom bounds\n\n this.zoomRange({\n min: options.minZoom,\n max: options.maxZoom\n });\n\n var loadExtData = function loadExtData(extData, next) {\n var anyIsPromise = extData.some(promise);\n\n if (anyIsPromise) {\n return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init\n } else {\n next(extData); // exec synchronously for convenience\n }\n }; // start with the default stylesheet so we have something before loading an external stylesheet\n\n\n if (_p.styleEnabled) {\n cy.setStyle([]);\n } // create the renderer\n\n\n var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options\n\n cy.initRenderer(rendererOptions);\n\n var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) {\n cy.notifications(false); // remove old elements\n\n var oldEles = cy.mutableElements();\n\n if (oldEles.length > 0) {\n oldEles.remove();\n }\n\n if (elements != null) {\n if (plainObject(elements) || array(elements)) {\n cy.add(elements);\n }\n }\n\n cy.one('layoutready', function (e) {\n cy.notifications(true);\n cy.emit(e); // we missed this event by turning notifications off, so pass it on\n\n cy.one('load', onload);\n cy.emitAndNotify('load');\n }).one('layoutstop', function () {\n cy.one('done', ondone);\n cy.emit('done');\n });\n var layoutOpts = extend({}, cy._private.options.layout);\n layoutOpts.eles = cy.elements();\n cy.layout(layoutOpts).run();\n };\n\n loadExtData([options.style, options.elements], function (thens) {\n var initStyle = thens[0];\n var initEles = thens[1]; // init style\n\n if (_p.styleEnabled) {\n cy.style().append(initStyle);\n } // initial load\n\n\n setElesAndLayout(initEles, function () {\n // onready\n cy.startAnimationLoop();\n _p.ready = true; // if a ready callback is specified as an option, the bind it\n\n if (fn$6(options.ready)) {\n cy.on('ready', options.ready);\n } // bind all the ready handlers registered before creating this instance\n\n\n for (var i = 0; i < readies.length; i++) {\n var fn = readies[i];\n cy.on('ready', fn);\n }\n\n if (reg) {\n reg.readies = [];\n } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc\n\n\n cy.emit('ready');\n }, options.done);\n });\n };\n\n var corefn = Core.prototype; // short alias\n\n extend(corefn, {\n instanceString: function instanceString() {\n return 'core';\n },\n isReady: function isReady() {\n return this._private.ready;\n },\n destroyed: function destroyed() {\n return this._private.destroyed;\n },\n ready: function ready(fn) {\n if (this.isReady()) {\n this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event\n } else {\n this.on('ready', fn);\n }\n\n return this;\n },\n destroy: function destroy() {\n var cy = this;\n if (cy.destroyed()) return;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n this.emit('destroy');\n cy._private.destroyed = true;\n return cy;\n },\n hasElementWithId: function hasElementWithId(id) {\n return this._private.elements.hasElementWithId(id);\n },\n getElementById: function getElementById(id) {\n return this._private.elements.getElementById(id);\n },\n hasCompoundNodes: function hasCompoundNodes() {\n return this._private.hasCompoundNodes;\n },\n headless: function headless() {\n return this._private.renderer.isHeadless();\n },\n styleEnabled: function styleEnabled() {\n return this._private.styleEnabled;\n },\n addToPool: function addToPool(eles) {\n this._private.elements.merge(eles);\n\n return this; // chaining\n },\n removeFromPool: function removeFromPool(eles) {\n this._private.elements.unmerge(eles);\n\n return this;\n },\n container: function container() {\n return this._private.container || null;\n },\n window: function window() {\n var container = this._private.container;\n if (container == null) return _window;\n var ownerDocument = this._private.container.ownerDocument;\n\n if (ownerDocument === undefined || ownerDocument == null) {\n return _window;\n }\n\n return ownerDocument.defaultView || _window;\n },\n mount: function mount(container) {\n if (container == null) {\n return;\n }\n\n var cy = this;\n var _p = cy._private;\n var options = _p.options;\n\n if (!htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n _p.container = container;\n _p.styleEnabled = true;\n cy.invalidateSize();\n cy.initRenderer(extend({}, options, options.renderer, {\n // allow custom renderer name to be re-used, otherwise use canvas\n name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name\n }));\n cy.startAnimationLoop();\n cy.style(options.style);\n cy.emit('mount');\n return cy;\n },\n unmount: function unmount() {\n var cy = this;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n cy.initRenderer({\n name: 'null'\n });\n cy.emit('unmount');\n return cy;\n },\n options: function options() {\n return copy(this._private.options);\n },\n json: function json(obj) {\n var cy = this;\n var _p = cy._private;\n var eles = cy.mutableElements();\n\n var getFreshRef = function getFreshRef(ele) {\n return cy.getElementById(ele.id());\n };\n\n if (plainObject(obj)) {\n // set\n cy.startBatch();\n\n if (obj.elements) {\n var idInJson = {};\n\n var updateEles = function updateEles(jsons, gr) {\n var toAdd = [];\n var toMod = [];\n\n for (var i = 0; i < jsons.length; i++) {\n var json = jsons[i];\n\n if (!json.data.id) {\n warn('cy.json() cannot handle elements without an ID attribute');\n continue;\n }\n\n var id = '' + json.data.id; // id must be string\n\n var ele = cy.getElementById(id);\n idInJson[id] = true;\n\n if (ele.length !== 0) {\n // existing element should be updated\n toMod.push({\n ele: ele,\n json: json\n });\n } else {\n // otherwise should be added\n if (gr) {\n json.group = gr;\n toAdd.push(json);\n } else {\n toAdd.push(json);\n }\n }\n }\n\n cy.add(toAdd);\n\n for (var _i = 0; _i < toMod.length; _i++) {\n var _toMod$_i = toMod[_i],\n _ele = _toMod$_i.ele,\n _json = _toMod$_i.json;\n\n _ele.json(_json);\n }\n };\n\n if (array(obj.elements)) {\n // elements: []\n updateEles(obj.elements);\n } else {\n // elements: { nodes: [], edges: [] }\n var grs = ['nodes', 'edges'];\n\n for (var i = 0; i < grs.length; i++) {\n var gr = grs[i];\n var elements = obj.elements[gr];\n\n if (array(elements)) {\n updateEles(elements, gr);\n }\n }\n }\n\n var parentsToRemove = cy.collection();\n eles.filter(function (ele) {\n return !idInJson[ele.id()];\n }).forEach(function (ele) {\n if (ele.isParent()) {\n parentsToRemove.merge(ele);\n } else {\n ele.remove();\n }\n }); // so that children are not removed w/parent\n\n parentsToRemove.forEach(function (ele) {\n return ele.children().move({\n parent: null\n });\n }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs\n\n parentsToRemove.forEach(function (ele) {\n return getFreshRef(ele).remove();\n });\n }\n\n if (obj.style) {\n cy.style(obj.style);\n }\n\n if (obj.zoom != null && obj.zoom !== _p.zoom) {\n cy.zoom(obj.zoom);\n }\n\n if (obj.pan) {\n if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) {\n cy.pan(obj.pan);\n }\n }\n\n if (obj.data) {\n cy.data(obj.data);\n }\n\n var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify', 'multiClickDebounceTime'];\n\n for (var _i2 = 0; _i2 < fields.length; _i2++) {\n var f = fields[_i2];\n\n if (obj[f] != null) {\n cy[f](obj[f]);\n }\n }\n\n cy.endBatch();\n return this; // chaining\n } else {\n // get\n var flat = !!obj;\n var json = {};\n\n if (flat) {\n json.elements = this.elements().map(function (ele) {\n return ele.json();\n });\n } else {\n json.elements = {};\n eles.forEach(function (ele) {\n var group = ele.group();\n\n if (!json.elements[group]) {\n json.elements[group] = [];\n }\n\n json.elements[group].push(ele.json());\n });\n }\n\n if (this._private.styleEnabled) {\n json.style = cy.style().json();\n }\n\n json.data = copy(cy.data());\n var options = _p.options;\n json.zoomingEnabled = _p.zoomingEnabled;\n json.userZoomingEnabled = _p.userZoomingEnabled;\n json.zoom = _p.zoom;\n json.minZoom = _p.minZoom;\n json.maxZoom = _p.maxZoom;\n json.panningEnabled = _p.panningEnabled;\n json.userPanningEnabled = _p.userPanningEnabled;\n json.pan = copy(_p.pan);\n json.boxSelectionEnabled = _p.boxSelectionEnabled;\n json.renderer = copy(options.renderer);\n json.hideEdgesOnViewport = options.hideEdgesOnViewport;\n json.textureOnViewport = options.textureOnViewport;\n json.wheelSensitivity = options.wheelSensitivity;\n json.motionBlur = options.motionBlur;\n json.multiClickDebounceTime = options.multiClickDebounceTime;\n return json;\n }\n }\n });\n corefn.$id = corefn.getElementById;\n [corefn$9, corefn$8, elesfn, corefn$7, corefn$6, corefn$5, corefn$4, corefn$3, corefn$2, corefn$1, fn].forEach(function (props) {\n extend(corefn, props);\n });\n\n /* eslint-disable no-unused-vars */\n\n var defaults$7 = {\n fit: true,\n // whether to fit the viewport to the graph\n directed: false,\n // whether the tree is directed downwards (or edges can point in any direction if false)\n padding: 30,\n // padding on fit\n circle: false,\n // put depths in concentric circles if true, put depths top down if false\n grid: false,\n // whether to create an even grid into which the DAG is placed (circle:false only)\n spacingFactor: 1.75,\n // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n roots: undefined,\n // the roots of the trees\n depthSort: undefined,\n // a sorting function to order nodes at equal depth. e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled,\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n };\n var deprecatedOptionDefaults = {\n maximal: false,\n // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only); setting acyclic to true sets maximal to true also\n acyclic: false // whether the tree is acyclic and thus a node could be shifted (due to the maximal option) multiple times without causing an infinite loop; setting to true sets maximal to true also; if you are uncertain whether a tree is acyclic, set to false to avoid potential infinite loops\n\n };\n /* eslint-enable */\n\n var getInfo = function getInfo(ele) {\n return ele.scratch('breadthfirst');\n };\n\n var setInfo = function setInfo(ele, obj) {\n return ele.scratch('breadthfirst', obj);\n };\n\n function BreadthFirstLayout(options) {\n this.options = extend({}, defaults$7, deprecatedOptionDefaults, options);\n }\n\n BreadthFirstLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().filter(function (n) {\n return !n.isParent();\n });\n var graph = eles;\n var directed = options.directed;\n var maximal = options.acyclic || options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code; also, setting acyclic to true sets maximal to true\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var roots;\n\n if (elementOrCollection(options.roots)) {\n roots = options.roots;\n } else if (array(options.roots)) {\n var rootsArray = [];\n\n for (var i = 0; i < options.roots.length; i++) {\n var id = options.roots[i];\n var ele = cy.getElementById(id);\n rootsArray.push(ele);\n }\n\n roots = cy.collection(rootsArray);\n } else if (string(options.roots)) {\n roots = cy.$(options.roots);\n } else {\n if (directed) {\n roots = nodes.roots();\n } else {\n var components = eles.components();\n roots = cy.collection();\n\n var _loop = function _loop(_i) {\n var comp = components[_i];\n var maxDegree = comp.maxDegree(false);\n var compRoots = comp.filter(function (ele) {\n return ele.degree(false) === maxDegree;\n });\n roots = roots.add(compRoots);\n };\n\n for (var _i = 0; _i < components.length; _i++) {\n _loop(_i);\n }\n }\n }\n\n var depths = [];\n var foundByBfs = {};\n\n var addToDepth = function addToDepth(ele, d) {\n if (depths[d] == null) {\n depths[d] = [];\n }\n\n var i = depths[d].length;\n depths[d].push(ele);\n setInfo(ele, {\n index: i,\n depth: d\n });\n };\n\n var changeDepth = function changeDepth(ele, newDepth) {\n var _getInfo = getInfo(ele),\n depth = _getInfo.depth,\n index = _getInfo.index;\n\n depths[depth][index] = null;\n addToDepth(ele, newDepth);\n }; // find the depths of the nodes\n\n\n graph.bfs({\n roots: roots,\n directed: options.directed,\n visit: function visit(node, edge, pNode, i, depth) {\n var ele = node[0];\n var id = ele.id();\n addToDepth(ele, depth);\n foundByBfs[id] = true;\n }\n }); // check for nodes not found by bfs\n\n var orphanNodes = [];\n\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _ele = nodes[_i2];\n\n if (foundByBfs[_ele.id()]) {\n continue;\n } else {\n orphanNodes.push(_ele);\n }\n } // assign the nodes a depth and index\n\n\n var assignDepthsAt = function assignDepthsAt(i) {\n var eles = depths[i];\n\n for (var j = 0; j < eles.length; j++) {\n var _ele2 = eles[j];\n\n if (_ele2 == null) {\n eles.splice(j, 1);\n j--;\n continue;\n }\n\n setInfo(_ele2, {\n depth: i,\n index: j\n });\n }\n };\n\n var assignDepths = function assignDepths() {\n for (var _i3 = 0; _i3 < depths.length; _i3++) {\n assignDepthsAt(_i3);\n }\n };\n\n var adjustMaximally = function adjustMaximally(ele, shifted) {\n var eInfo = getInfo(ele);\n var incomers = ele.incomers().filter(function (el) {\n return el.isNode() && eles.has(el);\n });\n var maxDepth = -1;\n var id = ele.id();\n\n for (var k = 0; k < incomers.length; k++) {\n var incmr = incomers[k];\n var iInfo = getInfo(incmr);\n maxDepth = Math.max(maxDepth, iInfo.depth);\n }\n\n if (eInfo.depth <= maxDepth) {\n if (!options.acyclic && shifted[id]) {\n return null;\n }\n\n var newDepth = maxDepth + 1;\n changeDepth(ele, newDepth);\n shifted[id] = newDepth;\n return true;\n }\n\n return false;\n }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1)\n\n\n if (directed && maximal) {\n var Q = [];\n var shifted = {};\n\n var enqueue = function enqueue(n) {\n return Q.push(n);\n };\n\n var dequeue = function dequeue() {\n return Q.shift();\n };\n\n nodes.forEach(function (n) {\n return Q.push(n);\n });\n\n while (Q.length > 0) {\n var _ele3 = dequeue();\n\n var didShift = adjustMaximally(_ele3, shifted);\n\n if (didShift) {\n _ele3.outgoers().filter(function (el) {\n return el.isNode() && eles.has(el);\n }).forEach(enqueue);\n } else if (didShift === null) {\n warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.');\n break; // exit on failure\n }\n }\n }\n\n assignDepths(); // clear holes\n // find min distance we need to leave between nodes\n\n var minDistance = 0;\n\n if (options.avoidOverlap) {\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var n = nodes[_i4];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n } // get the weighted percent for an element based on its connectivity to other levels\n\n\n var cachedWeightedPercent = {};\n\n var getWeightedPercent = function getWeightedPercent(ele) {\n if (cachedWeightedPercent[ele.id()]) {\n return cachedWeightedPercent[ele.id()];\n }\n\n var eleDepth = getInfo(ele).depth;\n var neighbors = ele.neighborhood();\n var percent = 0;\n var samples = 0;\n\n for (var _i5 = 0; _i5 < neighbors.length; _i5++) {\n var neighbor = neighbors[_i5];\n\n if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) {\n continue;\n }\n\n var bf = getInfo(neighbor);\n\n if (bf == null) {\n continue;\n }\n\n var index = bf.index;\n var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering\n\n if (index == null || depth == null) {\n continue;\n }\n\n var nDepth = depths[depth].length;\n\n if (depth < eleDepth) {\n // only get influenced by elements above\n percent += index / nDepth;\n samples++;\n }\n }\n\n samples = Math.max(1, samples);\n percent = percent / samples;\n\n if (samples === 0) {\n // put lone nodes at the start\n percent = 0;\n }\n\n cachedWeightedPercent[ele.id()] = percent;\n return percent;\n }; // rearrange the indices in each depth level based on connectivity\n\n\n var sortFn = function sortFn(a, b) {\n var apct = getWeightedPercent(a);\n var bpct = getWeightedPercent(b);\n var diff = apct - bpct;\n\n if (diff === 0) {\n return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons\n } else {\n return diff;\n }\n };\n\n if (options.depthSort !== undefined) {\n sortFn = options.depthSort;\n } // sort each level to make connected nodes closer\n\n\n for (var _i6 = 0; _i6 < depths.length; _i6++) {\n depths[_i6].sort(sortFn);\n\n assignDepthsAt(_i6);\n } // assign orphan nodes to a new top-level depth\n\n\n var orphanDepth = [];\n\n for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) {\n orphanDepth.push(orphanNodes[_i7]);\n }\n\n depths.unshift(orphanDepth);\n assignDepths();\n var biggestDepthSize = 0;\n\n for (var _i8 = 0; _i8 < depths.length; _i8++) {\n biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize);\n }\n\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.x1 + bb.h / 2\n };\n var maxDepthSize = depths.reduce(function (max, eles) {\n return Math.max(max, eles.length);\n }, 0);\n\n var getPosition = function getPosition(ele) {\n var _getInfo2 = getInfo(ele),\n depth = _getInfo2.depth,\n index = _getInfo2.index;\n\n var depthSize = depths[depth].length;\n var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance);\n var distanceY = Math.max(bb.h / (depths.length + 1), minDistance);\n var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length);\n radiusStepSize = Math.max(radiusStepSize, minDistance);\n\n if (!options.circle) {\n var epos = {\n x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX,\n y: (depth + 1) * distanceY\n };\n return epos;\n } else {\n var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0);\n var theta = 2 * Math.PI / depths[depth].length * index;\n\n if (depth === 0 && depths[0].length === 1) {\n radius = 1;\n }\n\n return {\n x: center.x + radius * Math.cos(theta),\n y: center.y + radius * Math.sin(theta)\n };\n }\n };\n\n eles.nodes().layoutPositions(this, options, getPosition);\n return this; // chaining\n };\n\n var defaults$6 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox and radius if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n radius: undefined,\n // the radius of the circle\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n };\n\n function CircleLayout(options) {\n this.options = extend({}, defaults$6, options);\n }\n\n CircleLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var nodes = eles.nodes().not(':parent');\n\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep;\n var dTheta = sweep / Math.max(1, nodes.length - 1);\n var r;\n var minDistance = 0;\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n\n if (number$1(options.radius)) {\n r = options.radius;\n } else if (nodes.length <= 1) {\n r = 0;\n } else {\n r = Math.min(bb.h, bb.w) / 2 - minDistance;\n } // calculate the radius\n\n\n if (nodes.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n minDistance *= 1.75; // just to have some nice spacing\n\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n\n var getPos = function getPos(ele, i) {\n var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1);\n var rx = r * Math.cos(theta);\n var ry = r * Math.sin(theta);\n var pos = {\n x: center.x + rx,\n y: center.y + ry\n };\n return pos;\n };\n\n eles.nodes().layoutPositions(this, options, getPos);\n return this; // chaining\n };\n\n var defaults$5 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n equidistant: false,\n // whether levels have an equal radial distance betwen them, may cause bounding box overflow\n minNodeSpacing: 10,\n // min spacing between outside of nodes (used for radius adjustment)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n height: undefined,\n // height of layout area (overrides container height)\n width: undefined,\n // width of layout area (overrides container width)\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n concentric: function concentric(node) {\n // returns numeric value for each node, placing higher nodes in levels towards the centre\n return node.degree();\n },\n levelWidth: function levelWidth(nodes) {\n // the variation of concentric values in each level\n return nodes.maxDegree() / 4;\n },\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n };\n\n function ConcentricLayout(options) {\n this.options = extend({}, defaults$5, options);\n }\n\n ConcentricLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var nodeValues = []; // { node, value }\n\n var maxNodeSize = 0;\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var value = void 0; // calculate the node value\n\n value = options.concentric(node);\n nodeValues.push({\n value: value,\n node: node\n }); // for style mapping\n\n node._private.scratch.concentric = value;\n } // in case we used the `concentric` in style\n\n\n nodes.updateStyle(); // calculate max size now based on potentially updated mappers\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n\n var nbb = _node.layoutDimensions(options);\n\n maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h);\n } // sort node values in descreasing order\n\n\n nodeValues.sort(function (a, b) {\n return b.value - a.value;\n });\n var levelWidth = options.levelWidth(nodes); // put the values into levels\n\n var levels = [[]];\n var currentLevel = levels[0];\n\n for (var _i2 = 0; _i2 < nodeValues.length; _i2++) {\n var val = nodeValues[_i2];\n\n if (currentLevel.length > 0) {\n var diff = Math.abs(currentLevel[0].value - val.value);\n\n if (diff >= levelWidth) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n\n currentLevel.push(val);\n } // create positions from levels\n\n\n var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes\n\n if (!options.avoidOverlap) {\n // then strictly constrain to bb\n var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n var maxR = Math.min(bb.w, bb.h) / 2 - minDist;\n var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0);\n minDist = Math.min(minDist, rStep);\n } // find the metrics for each level\n\n\n var r = 0;\n\n for (var _i3 = 0; _i3 < levels.length; _i3++) {\n var level = levels[_i3];\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep;\n var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius\n\n if (level.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n\n level.r = r;\n r += minDist;\n }\n\n if (options.equidistant) {\n var rDeltaMax = 0;\n var _r = 0;\n\n for (var _i4 = 0; _i4 < levels.length; _i4++) {\n var _level = levels[_i4];\n var rDelta = _level.r - _r;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n\n _r = 0;\n\n for (var _i5 = 0; _i5 < levels.length; _i5++) {\n var _level2 = levels[_i5];\n\n if (_i5 === 0) {\n _r = _level2.r;\n }\n\n _level2.r = _r;\n _r += rDeltaMax;\n }\n } // calculate the node positions\n\n\n var pos = {}; // id => position\n\n for (var _i6 = 0; _i6 < levels.length; _i6++) {\n var _level3 = levels[_i6];\n var _dTheta = _level3.dTheta;\n var _r2 = _level3.r;\n\n for (var j = 0; j < _level3.length; j++) {\n var _val = _level3[j];\n var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j;\n var p = {\n x: center.x + _r2 * Math.cos(theta),\n y: center.y + _r2 * Math.sin(theta)\n };\n pos[_val.node.id()] = p;\n }\n } // position the nodes\n\n\n eles.nodes().layoutPositions(this, options, function (ele) {\n var id = ele.id();\n return pos[id];\n });\n return this; // chaining\n };\n\n /*\n The CoSE layout was written by Gerardo Huck.\n https://www.linkedin.com/in/gerardohuck/\n\n Based on the following article:\n http://dl.acm.org/citation.cfm?id=1498047\n\n Modifications tracked on Github.\n */\n var DEBUG;\n /**\n * @brief : default layout options\n */\n\n var defaults$4 = {\n // Called on `layoutready`\n ready: function ready() {},\n // Called on `layoutstop`\n stop: function stop() {},\n // Whether to animate while running the layout\n // true : Animate continuously as the layout is running\n // false : Just show the end result\n // 'end' : Animate with the end result, from the initial positions to the end positions\n animate: true,\n // Easing of the animation for animate:'end'\n animationEasing: undefined,\n // The duration of the animation for animate:'end'\n animationDuration: undefined,\n // A function that determines whether the node should be animated\n // All nodes animated by default on animate enabled\n // Non-animated nodes are positioned immediately when the layout starts\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // The layout animates only after this many milliseconds for animate:true\n // (prevents flashing on fast runs)\n animationThreshold: 250,\n // Number of iterations between consecutive screen positions update\n refresh: 20,\n // Whether to fit the network view after when done\n fit: true,\n // Padding on fit\n padding: 30,\n // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n boundingBox: undefined,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n nodeDimensionsIncludeLabels: false,\n // Randomize the initial positions of the nodes (true) or use existing positions (false)\n randomize: false,\n // Extra spacing between components in non-compound graphs\n componentSpacing: 40,\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 2048;\n },\n // Node repulsion (overlapping) multiplier\n nodeOverlap: 4,\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 32;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 32;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 1.2,\n // Gravity force (constant)\n gravity: 1,\n // Maximum number of iterations to perform\n numIter: 1000,\n // Initial temperature (maximum node displacement)\n initialTemp: 1000,\n // Cooling factor (how the temperature is reduced between consecutive iterations\n coolingFactor: 0.99,\n // Lower temperature threshold (below this point the layout will end)\n minTemp: 1.0\n };\n /**\n * @brief : constructor\n * @arg options : object containing layout options\n */\n\n function CoseLayout(options) {\n this.options = extend({}, defaults$4, options);\n this.options.layout = this;\n }\n /**\n * @brief : runs the layout\n */\n\n\n CoseLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var layout = this;\n layout.stopped = false;\n\n if (options.animate === true || options.animate === false) {\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n } // Set DEBUG - Global variable\n\n\n if (true === options.debug) {\n DEBUG = true;\n } else {\n DEBUG = false;\n } // Initialize layout info\n\n\n var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging\n\n if (DEBUG) {\n printLayoutInfo(layoutInfo);\n } // If required, randomize node positions\n\n\n if (options.randomize) {\n randomizePositions(layoutInfo);\n }\n\n var startTime = performanceNow();\n\n var refresh = function refresh() {\n refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary\n\n if (true === options.fit) {\n cy.fit(options.padding);\n }\n };\n\n var mainLoop = function mainLoop(i) {\n if (layout.stopped || i >= options.numIter) {\n // logDebug(\"Layout manually stopped. Stopping computation in step \" + i);\n return false;\n } // Do one step in the phisical simulation\n\n\n step(layoutInfo, options); // Update temperature\n\n layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug(\"New temperature: \" + layoutInfo.temperature);\n\n if (layoutInfo.temperature < options.minTemp) {\n // logDebug(\"Temperature drop below minimum threshold. Stopping computation in step \" + i);\n return false;\n }\n\n return true;\n };\n\n var done = function done() {\n if (options.animate === true || options.animate === false) {\n refresh(); // Layout has finished\n\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n } else {\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.layoutPositions(layout, options, getScaledPos);\n }\n };\n\n var i = 0;\n var loopRet = true;\n\n if (options.animate === true) {\n var frame = function frame() {\n var f = 0;\n\n while (loopRet && f < options.refresh) {\n loopRet = mainLoop(i);\n i++;\n f++;\n }\n\n if (!loopRet) {\n // it's done\n separateComponents(layoutInfo, options);\n done();\n } else {\n var now = performanceNow();\n\n if (now - startTime >= options.animationThreshold) {\n refresh();\n }\n\n requestAnimationFrame(frame);\n }\n };\n\n frame();\n } else {\n while (loopRet) {\n loopRet = mainLoop(i);\n i++;\n }\n\n separateComponents(layoutInfo, options);\n done();\n }\n\n return this; // chaining\n };\n /**\n * @brief : called on continuous layouts to stop them before they finish\n */\n\n\n CoseLayout.prototype.stop = function () {\n this.stopped = true;\n\n if (this.thread) {\n this.thread.stop();\n }\n\n this.emit('layoutstop');\n return this; // chaining\n };\n\n CoseLayout.prototype.destroy = function () {\n if (this.thread) {\n this.thread.stop();\n }\n\n return this; // chaining\n };\n /**\n * @brief : Creates an object which is contains all the data\n * used in the layout process\n * @arg cy : cytoscape.js object\n * @return : layoutInfo object initialized\n */\n\n\n var createLayoutInfo = function createLayoutInfo(cy, layout, options) {\n // Shortcut\n var edges = options.eles.edges();\n var nodes = options.eles.nodes();\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var layoutInfo = {\n isCompound: cy.hasCompoundNodes(),\n layoutNodes: [],\n idToIndex: {},\n nodeSize: nodes.size(),\n graphSet: [],\n indexToGraph: [],\n layoutEdges: [],\n edgeSize: edges.size(),\n temperature: options.initialTemp,\n clientWidth: bb.w,\n clientHeight: bb.h,\n boundingBox: bb\n };\n var components = options.eles.components();\n var id2cmptId = {};\n\n for (var i = 0; i < components.length; i++) {\n var component = components[i];\n\n for (var j = 0; j < component.length; j++) {\n var node = component[j];\n id2cmptId[node.id()] = i;\n }\n } // Iterate over all nodes, creating layout nodes\n\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var tempNode = {};\n tempNode.isLocked = n.locked();\n tempNode.id = n.data('id');\n tempNode.parentId = n.data('parent');\n tempNode.cmptId = id2cmptId[n.id()];\n tempNode.children = [];\n tempNode.positionX = n.position('x');\n tempNode.positionY = n.position('y');\n tempNode.offsetX = 0;\n tempNode.offsetY = 0;\n tempNode.height = nbb.w;\n tempNode.width = nbb.h;\n tempNode.maxX = tempNode.positionX + tempNode.width / 2;\n tempNode.minX = tempNode.positionX - tempNode.width / 2;\n tempNode.maxY = tempNode.positionY + tempNode.height / 2;\n tempNode.minY = tempNode.positionY - tempNode.height / 2;\n tempNode.padLeft = parseFloat(n.style('padding'));\n tempNode.padRight = parseFloat(n.style('padding'));\n tempNode.padTop = parseFloat(n.style('padding'));\n tempNode.padBottom = parseFloat(n.style('padding')); // forces\n\n tempNode.nodeRepulsion = fn$6(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node\n\n layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map\n\n layoutInfo.idToIndex[tempNode.id] = i;\n } // Inline implementation of a queue, used for traversing the graph in BFS order\n\n\n var queue = [];\n var start = 0; // Points to the start the queue\n\n var end = -1; // Points to the end of the queue\n\n var tempGraph = []; // Second pass to add child information and\n // initialize queue for hierarchical traversal\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n var p_id = n.parentId; // Check if node n has a parent node\n\n if (null != p_id) {\n // Add node Id to parent's list of children\n layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id);\n } else {\n // If a node doesn't have a parent, then it's in the root graph\n queue[++end] = n.id;\n tempGraph.push(n.id);\n }\n } // Add root graph to graphSet\n\n\n layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level,\n\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var node_id = queue[start++];\n var node_ix = layoutInfo.idToIndex[node_id];\n var node = layoutInfo.layoutNodes[node_ix];\n var children = node.children;\n\n if (children.length > 0) {\n // Add children nodes as a new graph to graph set\n layoutInfo.graphSet.push(children); // Add children to que queue to be visited\n\n for (var i = 0; i < children.length; i++) {\n queue[++end] = children[i];\n }\n }\n } // Create indexToGraph map\n\n\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n\n for (var j = 0; j < graph.length; j++) {\n var index = layoutInfo.idToIndex[graph[j]];\n layoutInfo.indexToGraph[index] = i;\n }\n } // Iterate over all edges, creating Layout Edges\n\n\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n var e = edges[i];\n var tempEdge = {};\n tempEdge.id = e.data('id');\n tempEdge.sourceId = e.data('source');\n tempEdge.targetId = e.data('target'); // Compute ideal length\n\n var idealLength = fn$6(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength;\n var elasticity = fn$6(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge\n\n var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId];\n var targetIx = layoutInfo.idToIndex[tempEdge.targetId];\n var sourceGraph = layoutInfo.indexToGraph[sourceIx];\n var targetGraph = layoutInfo.indexToGraph[targetIx];\n\n if (sourceGraph != targetGraph) {\n // Find lowest common graph ancestor\n var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph\n\n var lcaGraph = layoutInfo.graphSet[lca];\n var depth = 0; // Source depth\n\n var tempNode = layoutInfo.layoutNodes[sourceIx];\n\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n } // Target depth\n\n\n tempNode = layoutInfo.layoutNodes[targetIx];\n\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId +\n // \". Index: \" + lca + \" Contents: \" + lcaGraph.toString() +\n // \". Depth: \" + depth);\n // Update idealLength\n\n\n idealLength *= depth * options.nestingFactor;\n }\n\n tempEdge.idealLength = idealLength;\n tempEdge.elasticity = elasticity;\n layoutInfo.layoutEdges.push(tempEdge);\n } // Finally, return layoutInfo object\n\n\n return layoutInfo;\n };\n /**\n * @brief : This function finds the index of the lowest common\n * graph ancestor between 2 nodes in the subtree\n * (from the graph hierarchy induced tree) whose\n * root is graphIx\n *\n * @arg node1: node1's ID\n * @arg node2: node2's ID\n * @arg layoutInfo: layoutInfo object\n *\n */\n\n\n var findLCA = function findLCA(node1, node2, layoutInfo) {\n // Find their common ancester, starting from the root graph\n var res = findLCA_aux(node1, node2, 0, layoutInfo);\n\n if (2 > res.count) {\n // If aux function couldn't find the common ancester,\n // then it is the root graph\n return 0;\n } else {\n return res.graph;\n }\n };\n /**\n * @brief : Auxiliary function used for LCA computation\n *\n * @arg node1 : node1's ID\n * @arg node2 : node2's ID\n * @arg graphIx : subgraph index\n * @arg layoutInfo : layoutInfo object\n *\n * @return : object of the form {count: X, graph: Y}, where:\n * X is the number of ancestors (max: 2) found in\n * graphIx (and it's subgraphs),\n * Y is the graph index of the lowest graph containing\n * all X nodes\n */\n\n\n var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) {\n var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx\n\n if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) {\n return {\n count: 2,\n graph: graphIx\n };\n } // Make recursive calls for all subgraphs\n\n\n var c = 0;\n\n for (var i = 0; i < graph.length; i++) {\n var nodeId = graph[i];\n var nodeIx = layoutInfo.idToIndex[nodeId];\n var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it\n\n if (0 === children.length) {\n continue;\n }\n\n var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]];\n var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo);\n\n if (0 === result.count) {\n // Neither node1 nor node2 are present in this subgraph\n continue;\n } else if (1 === result.count) {\n // One of (node1, node2) is present in this subgraph\n c++;\n\n if (2 === c) {\n // We've already found both nodes, no need to keep searching\n break;\n }\n } else {\n // Both nodes are present in this subgraph\n return result;\n }\n }\n\n return {\n count: c,\n graph: graphIx\n };\n };\n /**\n * @brief: printsLayoutInfo into js console\n * Only used for debbuging\n */\n\n\nvar printLayoutInfo; \n /**\n * @brief : Randomizes the position of all nodes\n */\n\n\n var randomizePositions = function randomizePositions(layoutInfo, cy) {\n var width = layoutInfo.clientWidth;\n var height = layoutInfo.clientHeight;\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes\n\n if (0 === n.children.length && !n.isLocked) {\n n.positionX = Math.random() * width;\n n.positionY = Math.random() * height;\n }\n }\n };\n\n var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) {\n var bb = layoutInfo.boundingBox;\n var coseBB = {\n x1: Infinity,\n x2: -Infinity,\n y1: Infinity,\n y2: -Infinity\n };\n\n if (options.boundingBox) {\n nodes.forEach(function (node) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]];\n coseBB.x1 = Math.min(coseBB.x1, lnode.positionX);\n coseBB.x2 = Math.max(coseBB.x2, lnode.positionX);\n coseBB.y1 = Math.min(coseBB.y1, lnode.positionY);\n coseBB.y2 = Math.max(coseBB.y2, lnode.positionY);\n });\n coseBB.w = coseBB.x2 - coseBB.x1;\n coseBB.h = coseBB.y2 - coseBB.y1;\n }\n\n return function (ele, i) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]];\n\n if (options.boundingBox) {\n // then add extra bounding box constraint\n var pctX = (lnode.positionX - coseBB.x1) / coseBB.w;\n var pctY = (lnode.positionY - coseBB.y1) / coseBB.h;\n return {\n x: bb.x1 + pctX * bb.w,\n y: bb.y1 + pctY * bb.h\n };\n } else {\n return {\n x: lnode.positionX,\n y: lnode.positionY\n };\n }\n };\n };\n /**\n * @brief : Updates the positions of nodes in the network\n * @arg layoutInfo : LayoutInfo object\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\n\n\n var refreshPositions = function refreshPositions(layoutInfo, cy, options) {\n // var s = 'Refreshing positions';\n // logDebug(s);\n var layout = options.layout;\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.positions(getScaledPos); // Trigger layoutReady only on first call\n\n if (true !== layoutInfo.ready) {\n // s = 'Triggering layoutready';\n // logDebug(s);\n layoutInfo.ready = true;\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: this\n });\n }\n };\n /**\n * @brief : Logs a debug message in JS console, if DEBUG is ON\n */\n // var logDebug = function(text) {\n // if (DEBUG) {\n // console.debug(text);\n // }\n // };\n\n /**\n * @brief : Performs one iteration of the physical simulation\n * @arg layoutInfo : LayoutInfo object already initialized\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\n\n\n var step = function step(layoutInfo, options, _step) {\n // var s = \"\\n\\n###############################\";\n // s += \"\\nSTEP: \" + step;\n // s += \"\\n###############################\\n\";\n // logDebug(s);\n // Calculate node repulsions\n calculateNodeForces(layoutInfo, options); // Calculate edge forces\n\n calculateEdgeForces(layoutInfo); // Calculate gravity forces\n\n calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child\n\n propagateForces(layoutInfo); // Update positions based on calculated forces\n\n updatePositions(layoutInfo);\n };\n /**\n * @brief : Computes the node repulsion forces\n */\n\n\n var calculateNodeForces = function calculateNodeForces(layoutInfo, options) {\n // Go through each of the graphs in graphSet\n // Nodes only repel each other if they belong to the same graph\n // var s = 'calculateNodeForces';\n // logDebug(s);\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length; // s = \"Set: \" + graph.toString();\n // logDebug(s);\n // Now get all the pairs of nodes\n // Only get each pair once, (A, B) = (B, A)\n\n for (var j = 0; j < numNodes; j++) {\n var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n\n for (var k = j + 1; k < numNodes; k++) {\n var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]];\n nodeRepulsion(node1, node2, layoutInfo, options);\n }\n }\n }\n };\n\n var randomDistance = function randomDistance(max) {\n return -max + 2 * max * Math.random();\n };\n /**\n * @brief : Compute the node repulsion forces between a pair of nodes\n */\n\n\n var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) {\n // var s = \"Node repulsion. Node1: \" + node1.id + \" Node2: \" + node2.id;\n var cmptId1 = node1.cmptId;\n var cmptId2 = node2.cmptId;\n\n if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) {\n return;\n } // Get direction of line connecting both node centers\n\n\n var directionX = node2.positionX - node1.positionX;\n var directionY = node2.positionY - node1.positionY;\n var maxRandDist = 1; // s += \"\\ndirectionX: \" + directionX + \", directionY: \" + directionY;\n // If both centers are the same, apply a random force\n\n if (0 === directionX && 0 === directionY) {\n directionX = randomDistance(maxRandDist);\n directionY = randomDistance(maxRandDist);\n }\n\n var overlap = nodesOverlap(node1, node2, directionX, directionY);\n\n if (overlap > 0) {\n // s += \"\\nNodes DO overlap.\";\n // s += \"\\nOverlap: \" + overlap;\n // If nodes overlap, repulsion force is proportional\n // to the overlap\n var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector\n\n var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += \"\\nDistance: \" + distance;\n\n var forceX = force * directionX / distance;\n var forceY = force * directionY / distance;\n } else {\n // s += \"\\nNodes do NOT overlap.\";\n // If there's no overlap, force is inversely proportional\n // to squared distance\n // Get clipping points for both nodes\n var point1 = findClippingPoint(node1, directionX, directionY);\n var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance\n\n var distanceX = point2.x - point1.x;\n var distanceY = point2.y - point1.y;\n var distanceSqr = distanceX * distanceX + distanceY * distanceY;\n var distance = Math.sqrt(distanceSqr); // s += \"\\nDistance: \" + distance;\n // Compute the module and components of the force vector\n\n var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr;\n var forceX = force * distanceX / distance;\n var forceY = force * distanceY / distance;\n } // Apply force\n\n\n if (!node1.isLocked) {\n node1.offsetX -= forceX;\n node1.offsetY -= forceY;\n }\n\n if (!node2.isLocked) {\n node2.offsetX += forceX;\n node2.offsetY += forceY;\n } // s += \"\\nForceX: \" + forceX + \" ForceY: \" + forceY;\n // logDebug(s);\n\n\n return;\n };\n /**\n * @brief : Determines whether two nodes overlap or not\n * @return : Amount of overlapping (0 => no overlap)\n */\n\n\n var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) {\n if (dX > 0) {\n var overlapX = node1.maxX - node2.minX;\n } else {\n var overlapX = node2.maxX - node1.minX;\n }\n\n if (dY > 0) {\n var overlapY = node1.maxY - node2.minY;\n } else {\n var overlapY = node2.maxY - node1.minY;\n }\n\n if (overlapX >= 0 && overlapY >= 0) {\n return Math.sqrt(overlapX * overlapX + overlapY * overlapY);\n } else {\n return 0;\n }\n };\n /**\n * @brief : Finds the point in which an edge (direction dX, dY) intersects\n * the rectangular bounding box of it's source/target node\n */\n\n\n var findClippingPoint = function findClippingPoint(node, dX, dY) {\n // Shorcuts\n var X = node.positionX;\n var Y = node.positionY;\n var H = node.height || 1;\n var W = node.width || 1;\n var dirSlope = dY / dX;\n var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id +\n // \" . Height: \" + H + \", Width: \" + W +\n // \"\\nDirection \" + dX + \", \" + dY;\n //\n // Compute intersection\n\n var res = {}; // Case: Vertical direction (up)\n\n if (0 === dX && 0 < dY) {\n res.x = X; // s += \"\\nUp direction\";\n\n res.y = Y + H / 2;\n return res;\n } // Case: Vertical direction (down)\n\n\n if (0 === dX && 0 > dY) {\n res.x = X;\n res.y = Y + H / 2; // s += \"\\nDown direction\";\n\n return res;\n } // Case: Intersects the right border\n\n\n if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X + W / 2;\n res.y = Y + W * dY / 2 / dX; // s += \"\\nRightborder\";\n\n return res;\n } // Case: Intersects the left border\n\n\n if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X - W / 2;\n res.y = Y - W * dY / 2 / dX; // s += \"\\nLeftborder\";\n\n return res;\n } // Case: Intersects the top border\n\n\n if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X + H * dX / 2 / dY;\n res.y = Y + H / 2; // s += \"\\nTop border\";\n\n return res;\n } // Case: Intersects the bottom border\n\n\n if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X - H * dX / 2 / dY;\n res.y = Y - H / 2; // s += \"\\nBottom border\";\n\n return res;\n } // s += \"\\nClipping point found at \" + res.x + \", \" + res.y;\n // logDebug(s);\n\n\n return res;\n };\n /**\n * @brief : Calculates all edge forces\n */\n\n\n var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) {\n // Iterate over all edges\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n // Get edge, source & target nodes\n var edge = layoutInfo.layoutEdges[i];\n var sourceIx = layoutInfo.idToIndex[edge.sourceId];\n var source = layoutInfo.layoutNodes[sourceIx];\n var targetIx = layoutInfo.idToIndex[edge.targetId];\n var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers\n\n var directionX = target.positionX - source.positionX;\n var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing.\n // A random force has already been applied as node repulsion\n\n if (0 === directionX && 0 === directionY) {\n continue;\n } // Get clipping points for both nodes\n\n\n var point1 = findClippingPoint(source, directionX, directionY);\n var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY);\n var lx = point2.x - point1.x;\n var ly = point2.y - point1.y;\n var l = Math.sqrt(lx * lx + ly * ly);\n var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity;\n\n if (0 !== l) {\n var forceX = force * lx / l;\n var forceY = force * ly / l;\n } else {\n var forceX = 0;\n var forceY = 0;\n } // Add this force to target and source nodes\n\n\n if (!source.isLocked) {\n source.offsetX += forceX;\n source.offsetY += forceY;\n }\n\n if (!target.isLocked) {\n target.offsetX -= forceX;\n target.offsetY -= forceY;\n } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id;\n // s += \"\\nDistance: \" + l + \" Force: (\" + forceX + \", \" + forceY + \")\";\n // logDebug(s);\n\n }\n };\n /**\n * @brief : Computes gravity forces for all nodes\n */\n\n\n var calculateGravityForces = function calculateGravityForces(layoutInfo, options) {\n if (options.gravity === 0) {\n return;\n }\n\n var distThreshold = 1; // var s = 'calculateGravityForces';\n // logDebug(s);\n\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length; // s = \"Set: \" + graph.toString();\n // logDebug(s);\n // Compute graph center\n\n if (0 === i) {\n var centerX = layoutInfo.clientHeight / 2;\n var centerY = layoutInfo.clientWidth / 2;\n } else {\n // Get Parent node for this graph, and use its position as center\n var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]];\n var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]];\n var centerX = parent.positionX;\n var centerY = parent.positionY;\n } // s = \"Center found at: \" + centerX + \", \" + centerY;\n // logDebug(s);\n // Apply force to all nodes in graph\n\n\n for (var j = 0; j < numNodes; j++) {\n var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = \"Node: \" + node.id;\n\n if (node.isLocked) {\n continue;\n }\n\n var dx = centerX - node.positionX;\n var dy = centerY - node.positionY;\n var d = Math.sqrt(dx * dx + dy * dy);\n\n if (d > distThreshold) {\n var fx = options.gravity * dx / d;\n var fy = options.gravity * dy / d;\n node.offsetX += fx;\n node.offsetY += fy; // s += \": Applied force: \" + fx + \", \" + fy;\n } // logDebug(s);\n\n }\n }\n };\n /**\n * @brief : This function propagates the existing offsets from\n * parent nodes to its descendents.\n * @arg layoutInfo : layoutInfo Object\n * @arg cy : cytoscape Object\n * @arg options : Layout options\n */\n\n\n var propagateForces = function propagateForces(layoutInfo, options) {\n // Inline implementation of a queue, used for traversing the graph in BFS order\n var queue = [];\n var start = 0; // Points to the start the queue\n\n var end = -1; // Points to the end of the queue\n // logDebug('propagateForces');\n // Start by visiting the nodes in the root graph\n\n queue.push.apply(queue, layoutInfo.graphSet[0]);\n end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level,\n\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var nodeId = queue[start++];\n var nodeIndex = layoutInfo.idToIndex[nodeId];\n var node = layoutInfo.layoutNodes[nodeIndex];\n var children = node.children; // We only need to process the node if it's compound\n\n if (0 < children.length && !node.isLocked) {\n var offX = node.offsetX;\n var offY = node.offsetY; // var s = \"Propagating offset from parent node : \" + node.id +\n // \". OffsetX: \" + offX + \". OffsetY: \" + offY;\n // s += \"\\n Children: \" + children.toString();\n // logDebug(s);\n\n for (var i = 0; i < children.length; i++) {\n var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset\n\n childNode.offsetX += offX;\n childNode.offsetY += offY; // Add children to queue to be visited\n\n queue[++end] = children[i];\n } // Reset parent offsets\n\n\n node.offsetX = 0;\n node.offsetY = 0;\n }\n }\n };\n /**\n * @brief : Updates the layout model positions, based on\n * the accumulated forces\n */\n\n\n var updatePositions = function updatePositions(layoutInfo, options) {\n // var s = 'Updating positions';\n // logDebug(s);\n // Reset boundaries for compound nodes\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length) {\n // logDebug(\"Resetting boundaries of compound node: \" + n.id);\n n.maxX = undefined;\n n.minX = undefined;\n n.maxY = undefined;\n n.minY = undefined;\n }\n }\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length || n.isLocked) {\n // No need to set compound or locked node position\n // logDebug(\"Skipping position update of node: \" + n.id);\n continue;\n } // s = \"Node: \" + n.id + \" Previous position: (\" +\n // n.positionX + \", \" + n.positionY + \").\";\n // Limit displacement in order to improve stability\n\n\n var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature);\n n.positionX += tempForce.x;\n n.positionY += tempForce.y;\n n.offsetX = 0;\n n.offsetY = 0;\n n.minX = n.positionX - n.width;\n n.maxX = n.positionX + n.width;\n n.minY = n.positionY - n.height;\n n.maxY = n.positionY + n.height; // s += \" New Position: (\" + n.positionX + \", \" + n.positionY + \").\";\n // logDebug(s);\n // Update ancestry boudaries\n\n updateAncestryBoundaries(n, layoutInfo);\n } // Update size, position of compund nodes\n\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length && !n.isLocked) {\n n.positionX = (n.maxX + n.minX) / 2;\n n.positionY = (n.maxY + n.minY) / 2;\n n.width = n.maxX - n.minX;\n n.height = n.maxY - n.minY; // s = \"Updating position, size of compound node \" + n.id;\n // s += \"\\nPositionX: \" + n.positionX + \", PositionY: \" + n.positionY;\n // s += \"\\nWidth: \" + n.width + \", Height: \" + n.height;\n // logDebug(s);\n }\n }\n };\n /**\n * @brief : Limits a force (forceX, forceY) to be not\n * greater (in modulo) than max.\n 8 Preserves force direction.\n */\n\n\n var limitForce = function limitForce(forceX, forceY, max) {\n // var s = \"Limiting force: (\" + forceX + \", \" + forceY + \"). Max: \" + max;\n var force = Math.sqrt(forceX * forceX + forceY * forceY);\n\n if (force > max) {\n var res = {\n x: max * forceX / force,\n y: max * forceY / force\n };\n } else {\n var res = {\n x: forceX,\n y: forceY\n };\n } // s += \".\\nResult: (\" + res.x + \", \" + res.y + \")\";\n // logDebug(s);\n\n\n return res;\n };\n /**\n * @brief : Function used for keeping track of compound node\n * sizes, since they should bound all their subnodes.\n */\n\n\n var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) {\n // var s = \"Propagating new position/size of node \" + node.id;\n var parentId = node.parentId;\n\n if (null == parentId) {\n // If there's no parent, we are done\n // s += \". No parent node.\";\n // logDebug(s);\n return;\n } // Get Parent Node\n\n\n var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]];\n var flag = false; // MaxX\n\n if (null == p.maxX || node.maxX + p.padRight > p.maxX) {\n p.maxX = node.maxX + p.padRight;\n flag = true; // s += \"\\nNew maxX for parent node \" + p.id + \": \" + p.maxX;\n } // MinX\n\n\n if (null == p.minX || node.minX - p.padLeft < p.minX) {\n p.minX = node.minX - p.padLeft;\n flag = true; // s += \"\\nNew minX for parent node \" + p.id + \": \" + p.minX;\n } // MaxY\n\n\n if (null == p.maxY || node.maxY + p.padBottom > p.maxY) {\n p.maxY = node.maxY + p.padBottom;\n flag = true; // s += \"\\nNew maxY for parent node \" + p.id + \": \" + p.maxY;\n } // MinY\n\n\n if (null == p.minY || node.minY - p.padTop < p.minY) {\n p.minY = node.minY - p.padTop;\n flag = true; // s += \"\\nNew minY for parent node \" + p.id + \": \" + p.minY;\n } // If updated boundaries, propagate changes upward\n\n\n if (flag) {\n // logDebug(s);\n return updateAncestryBoundaries(p, layoutInfo);\n } // s += \". No changes in boundaries/position of parent node \" + p.id;\n // logDebug(s);\n\n\n return;\n };\n\n var separateComponents = function separateComponents(layoutInfo, options) {\n var nodes = layoutInfo.layoutNodes;\n var components = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var cid = node.cmptId;\n var component = components[cid] = components[cid] || [];\n component.push(node);\n }\n\n var totalA = 0;\n\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n\n if (!c) {\n continue;\n }\n\n c.x1 = Infinity;\n c.x2 = -Infinity;\n c.y1 = Infinity;\n c.y2 = -Infinity;\n\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n c.x1 = Math.min(c.x1, n.positionX - n.width / 2);\n c.x2 = Math.max(c.x2, n.positionX + n.width / 2);\n c.y1 = Math.min(c.y1, n.positionY - n.height / 2);\n c.y2 = Math.max(c.y2, n.positionY + n.height / 2);\n }\n\n c.w = c.x2 - c.x1;\n c.h = c.y2 - c.y1;\n totalA += c.w * c.h;\n }\n\n components.sort(function (c1, c2) {\n return c2.w * c2.h - c1.w * c1.h;\n });\n var x = 0;\n var y = 0;\n var usedW = 0;\n var rowH = 0;\n var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight;\n\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n\n if (!c) {\n continue;\n }\n\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n\n if (!n.isLocked) {\n n.positionX += x - c.x1;\n n.positionY += y - c.y1;\n }\n }\n\n x += c.w + options.componentSpacing;\n usedW += c.w + options.componentSpacing;\n rowH = Math.max(rowH, c.h);\n\n if (usedW > maxRowW) {\n y += rowH + options.componentSpacing;\n x = 0;\n usedW = 0;\n rowH = 0;\n }\n }\n };\n\n var defaults$3 = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // padding used on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n avoidOverlapPadding: 10,\n // extra spacing around nodes when avoidOverlap: true\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n condense: false,\n // uses all available space on false, uses minimal space on true\n rows: undefined,\n // force num of rows in the grid\n cols: undefined,\n // force num of columns in the grid\n position: function position(node) {},\n // returns { row, col } for element\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n };\n\n function GridLayout(options) {\n this.options = extend({}, defaults$3, options);\n }\n\n GridLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n\n if (bb.h === 0 || bb.w === 0) {\n eles.nodes().layoutPositions(this, options, function (ele) {\n return {\n x: bb.x1,\n y: bb.y1\n };\n });\n } else {\n // width/height * splits^2 = cells where splits is number of times to split width\n var cells = nodes.size();\n var splits = Math.sqrt(cells * bb.h / bb.w);\n var rows = Math.round(splits);\n var cols = Math.round(bb.w / bb.h * splits);\n\n var small = function small(val) {\n if (val == null) {\n return Math.min(rows, cols);\n } else {\n var min = Math.min(rows, cols);\n\n if (min == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n\n var large = function large(val) {\n if (val == null) {\n return Math.max(rows, cols);\n } else {\n var max = Math.max(rows, cols);\n\n if (max == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n\n var oRows = options.rows;\n var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values\n\n if (oRows != null && oCols != null) {\n rows = oRows;\n cols = oCols;\n } else if (oRows != null && oCols == null) {\n rows = oRows;\n cols = Math.ceil(cells / rows);\n } else if (oRows == null && oCols != null) {\n cols = oCols;\n rows = Math.ceil(cells / cols);\n } // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n else if (cols * rows > cells) {\n var sm = small();\n var lg = large(); // reducing the small side takes away the most cells, so try it first\n\n if ((sm - 1) * lg >= cells) {\n small(sm - 1);\n } else if ((lg - 1) * sm >= cells) {\n large(lg - 1);\n }\n } else {\n // if rounding was too low, add rows or columns\n while (cols * rows < cells) {\n var _sm = small();\n\n var _lg = large(); // try to add to larger side first (adds less in multiplication)\n\n\n if ((_lg + 1) * _sm >= cells) {\n large(_lg + 1);\n } else {\n small(_sm + 1);\n }\n }\n }\n\n var cellWidth = bb.w / cols;\n var cellHeight = bb.h / rows;\n\n if (options.condense) {\n cellWidth = 0;\n cellHeight = 0;\n }\n\n if (options.avoidOverlap) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = node._private.position;\n\n if (pos.x == null || pos.y == null) {\n // for bb\n pos.x = 0;\n pos.y = 0;\n }\n\n var nbb = node.layoutDimensions(options);\n var p = options.avoidOverlapPadding;\n var w = nbb.w + p;\n var h = nbb.h + p;\n cellWidth = Math.max(cellWidth, w);\n cellHeight = Math.max(cellHeight, h);\n }\n }\n\n var cellUsed = {}; // e.g. 'c-0-2' => true\n\n var used = function used(row, col) {\n return cellUsed['c-' + row + '-' + col] ? true : false;\n };\n\n var use = function use(row, col) {\n cellUsed['c-' + row + '-' + col] = true;\n }; // to keep track of current cell position\n\n\n var row = 0;\n var col = 0;\n\n var moveToNextCell = function moveToNextCell() {\n col++;\n\n if (col >= cols) {\n col = 0;\n row++;\n }\n }; // get a cache of all the manual positions\n\n\n var id2manPos = {};\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n var rcPos = options.position(_node);\n\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n var _pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n\n if (_pos.col === undefined) {\n // find unused col\n _pos.col = 0;\n\n while (used(_pos.row, _pos.col)) {\n _pos.col++;\n }\n } else if (_pos.row === undefined) {\n // find unused row\n _pos.row = 0;\n\n while (used(_pos.row, _pos.col)) {\n _pos.row++;\n }\n }\n\n id2manPos[_node.id()] = _pos;\n use(_pos.row, _pos.col);\n }\n }\n\n var getPos = function getPos(element, i) {\n var x, y;\n\n if (element.locked() || element.isParent()) {\n return false;\n } // see if we have a manual position set\n\n\n var rcPos = id2manPos[element.id()];\n\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1;\n y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1;\n } else {\n // otherwise set automatically\n while (used(row, col)) {\n moveToNextCell();\n }\n\n x = col * cellWidth + cellWidth / 2 + bb.x1;\n y = row * cellHeight + cellHeight / 2 + bb.y1;\n use(row, col);\n moveToNextCell();\n }\n\n return {\n x: x,\n y: y\n };\n };\n\n nodes.layoutPositions(this, options, getPos);\n }\n\n return this; // chaining\n };\n\n var defaults$2 = {\n ready: function ready() {},\n // on layoutready\n stop: function stop() {} // on layoutstop\n\n }; // constructor\n // options : object containing layout options\n\n function NullLayout(options) {\n this.options = extend({}, defaults$2, options);\n } // runs the layout\n\n\n NullLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles; // elements to consider in the layout\n\n var layout = this; // cy is automatically populated for us in the constructor\n // (disable eslint for next line as this serves as example layout code to external developers)\n // eslint-disable-next-line no-unused-vars\n\n options.cy;\n layout.emit('layoutstart'); // puts all nodes at (0, 0)\n // n.b. most layouts would use layoutPositions(), instead of positions() and manual events\n\n eles.nodes().positions(function () {\n return {\n x: 0,\n y: 0\n };\n }); // trigger layoutready when each node has had its position set at least once\n\n layout.one('layoutready', options.ready);\n layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes)\n\n layout.one('layoutstop', options.stop);\n layout.emit('layoutstop');\n return this; // chaining\n }; // called on continuous layouts to stop them before they finish\n\n\n NullLayout.prototype.stop = function () {\n return this; // chaining\n };\n\n var defaults$1 = {\n positions: undefined,\n // map of (node id) => (position obj); or function(node){ return somPos; }\n zoom: undefined,\n // the zoom level to set (prob want fit = false if set)\n pan: undefined,\n // the pan level to set (prob want fit = false if set)\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // padding on fit\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n };\n\n function PresetLayout(options) {\n this.options = extend({}, defaults$1, options);\n }\n\n PresetLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles;\n var nodes = eles.nodes();\n var posIsFn = fn$6(options.positions);\n\n function getPosition(node) {\n if (options.positions == null) {\n return copyPosition(node.position());\n }\n\n if (posIsFn) {\n return options.positions(node);\n }\n\n var pos = options.positions[node._private.data.id];\n\n if (pos == null) {\n return null;\n }\n\n return pos;\n }\n\n nodes.layoutPositions(this, options, function (node, i) {\n var position = getPosition(node);\n\n if (node.locked() || position == null) {\n return false;\n }\n\n return position;\n });\n return this; // chaining\n };\n\n var defaults = {\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // fit padding\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n };\n\n function RandomLayout(options) {\n this.options = extend({}, defaults, options);\n }\n\n RandomLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n\n var getPos = function getPos(node, i) {\n return {\n x: bb.x1 + Math.round(Math.random() * bb.w),\n y: bb.y1 + Math.round(Math.random() * bb.h)\n };\n };\n\n eles.nodes().layoutPositions(this, options, getPos);\n return this; // chaining\n };\n\n var layout = [{\n name: 'breadthfirst',\n impl: BreadthFirstLayout\n }, {\n name: 'circle',\n impl: CircleLayout\n }, {\n name: 'concentric',\n impl: ConcentricLayout\n }, {\n name: 'cose',\n impl: CoseLayout\n }, {\n name: 'grid',\n impl: GridLayout\n }, {\n name: 'null',\n impl: NullLayout\n }, {\n name: 'preset',\n impl: PresetLayout\n }, {\n name: 'random',\n impl: RandomLayout\n }];\n\n function NullRenderer(options) {\n this.options = options;\n this.notifications = 0; // for testing\n }\n\n var noop = function noop() {};\n\n var throwImgErr = function throwImgErr() {\n throw new Error('A headless instance can not render images');\n };\n\n NullRenderer.prototype = {\n recalculateRenderedStyle: noop,\n notify: function notify() {\n this.notifications++;\n },\n init: noop,\n isHeadless: function isHeadless() {\n return true;\n },\n png: throwImgErr,\n jpg: throwImgErr\n };\n\n var BRp$f = {};\n BRp$f.arrowShapeWidth = 0.3;\n\n BRp$f.registerArrowShapes = function () {\n var arrowShapes = this.arrowShapes = {};\n var renderer = this; // Contract for arrow shapes:\n // 0, 0 is arrow tip\n // (0, 1) is direction towards node\n // (1, 0) is right\n //\n // functional api:\n // collide: check x, y in shape\n // roughCollide: called before collide, no false negatives\n // draw: draw\n // spacing: dist(arrowTip, nodeBoundary)\n // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip\n\n var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) {\n var x1 = translation.x - size / 2 - padding;\n var x2 = translation.x + size / 2 + padding;\n var y1 = translation.y - size / 2 - padding;\n var y2 = translation.y + size / 2 + padding;\n var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2;\n return inside;\n };\n\n var transform = function transform(x, y, size, angle, translation) {\n var xRotated = x * Math.cos(angle) - y * Math.sin(angle);\n var yRotated = x * Math.sin(angle) + y * Math.cos(angle);\n var xScaled = xRotated * size;\n var yScaled = yRotated * size;\n var xTranslated = xScaled + translation.x;\n var yTranslated = yScaled + translation.y;\n return {\n x: xTranslated,\n y: yTranslated\n };\n };\n\n var transformPoints = function transformPoints(pts, size, angle, translation) {\n var retPts = [];\n\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push(transform(x, y, size, angle, translation));\n }\n\n return retPts;\n };\n\n var pointsToArr = function pointsToArr(pts) {\n var ret = [];\n\n for (var i = 0; i < pts.length; i++) {\n var p = pts[i];\n ret.push(p.x, p.y);\n }\n\n return ret;\n };\n\n var standardGap = function standardGap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2;\n };\n\n var defineArrowShape = function defineArrowShape(name, defn) {\n if (string(defn)) {\n defn = arrowShapes[defn];\n }\n\n arrowShapes[name] = extend({\n name: name,\n points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],\n collide: function collide(x, y, size, angle, translation, padding) {\n var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, points);\n return inside;\n },\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation) {\n var points = transformPoints(this.points, size, angle, translation);\n renderer.arrowShapeImpl('polygon')(context, points);\n },\n spacing: function spacing(edge) {\n return 0;\n },\n gap: standardGap\n }, defn);\n };\n\n defineArrowShape('none', {\n collide: falsify,\n roughCollide: falsify,\n draw: noop$1,\n spacing: zeroify,\n gap: zeroify\n });\n defineArrowShape('triangle', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3]\n });\n defineArrowShape('arrow', 'triangle');\n defineArrowShape('triangle-backcurve', {\n points: arrowShapes['triangle'].points,\n controlPoint: [0, -0.15],\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var ptsTrans = transformPoints(this.points, size, angle, translation);\n var ctrlPt = this.controlPoint;\n var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans);\n },\n gap: function gap(edge) {\n return standardGap(edge) * 0.8;\n }\n });\n defineArrowShape('triangle-tee', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var teePts = transformPoints(this.pointsTee, size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, teePts);\n }\n });\n defineArrowShape('circle-triangle', {\n radius: 0.15,\n pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15],\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var t = translation;\n var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n return pointInsidePolygonPoints(x, y, triPts) || circleInside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.pointsTr, size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size);\n },\n spacing: function spacing(edge) {\n return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n }\n });\n defineArrowShape('triangle-cross', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle\n -0.15, -0.4, 0.15, -0.4, // second half of the rectangle\n 0.15, -0.4],\n crossLinePts: function crossLinePts(size, edgeWidth) {\n // shift points so that the distance between the cross points matches edge width\n var p = this.baseCrossLinePts.slice();\n var shiftFactor = edgeWidth / size;\n var y0 = 3;\n var y1 = 5;\n p[y0] = p[y0] - shiftFactor;\n p[y1] = p[y1] - shiftFactor;\n return p;\n },\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts);\n }\n });\n defineArrowShape('vee', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],\n gap: function gap(edge) {\n return standardGap(edge) * 0.525;\n }\n });\n defineArrowShape('circle', {\n radius: 0.15,\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var t = translation;\n var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size);\n },\n spacing: function spacing(edge) {\n return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n }\n });\n defineArrowShape('tee', {\n points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],\n spacing: function spacing(edge) {\n return 1;\n },\n gap: function gap(edge) {\n return 1;\n }\n });\n defineArrowShape('square', {\n points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3]\n });\n defineArrowShape('diamond', {\n points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],\n gap: function gap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n defineArrowShape('chevron', {\n points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],\n gap: function gap(edge) {\n return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n };\n\n var BRp$e = {}; // Project mouse\n\n BRp$e.projectIntoViewport = function (clientX, clientY) {\n var cy = this.cy;\n var offsets = this.findContainerClientCoords();\n var offsetLeft = offsets[0];\n var offsetTop = offsets[1];\n var scale = offsets[4];\n var pan = cy.pan();\n var zoom = cy.zoom();\n var x = ((clientX - offsetLeft) / scale - pan.x) / zoom;\n var y = ((clientY - offsetTop) / scale - pan.y) / zoom;\n return [x, y];\n };\n\n BRp$e.findContainerClientCoords = function () {\n if (this.containerBB) {\n return this.containerBB;\n }\n\n var container = this.container;\n var rect = container.getBoundingClientRect();\n var style = this.cy.window().getComputedStyle(container);\n\n var styleValue = function styleValue(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n\n var padding = {\n left: styleValue('padding-left'),\n right: styleValue('padding-right'),\n top: styleValue('padding-top'),\n bottom: styleValue('padding-bottom')\n };\n var border = {\n left: styleValue('border-left-width'),\n right: styleValue('border-right-width'),\n top: styleValue('border-top-width'),\n bottom: styleValue('border-bottom-width')\n };\n var clientWidth = container.clientWidth;\n var clientHeight = container.clientHeight;\n var paddingHor = padding.left + padding.right;\n var paddingVer = padding.top + padding.bottom;\n var borderHor = border.left + border.right;\n var scale = rect.width / (clientWidth + borderHor);\n var unscaledW = clientWidth - paddingHor;\n var unscaledH = clientHeight - paddingVer;\n var left = rect.left + padding.left + border.left;\n var top = rect.top + padding.top + border.top;\n return this.containerBB = [left, top, unscaledW, unscaledH, scale];\n };\n\n BRp$e.invalidateContainerClientCoordsCache = function () {\n this.containerBB = null;\n };\n\n BRp$e.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) {\n return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0];\n };\n\n BRp$e.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {\n var self = this;\n var r = this;\n var eles = r.getCachedZSortedEles();\n var near = []; // 1 node max, 1 edge max\n\n var zoom = r.cy.zoom();\n var hasCompounds = r.cy.hasCompoundNodes();\n var edgeThreshold = (isTouch ? 24 : 8) / zoom;\n var nodeThreshold = (isTouch ? 8 : 2) / zoom;\n var labelThreshold = (isTouch ? 8 : 2) / zoom;\n var minSqDist = Infinity;\n var nearEdge;\n var nearNode;\n\n if (interactiveElementsOnly) {\n eles = eles.interactive;\n }\n\n function addEle(ele, sqDist) {\n if (ele.isNode()) {\n if (nearNode) {\n return; // can't replace node\n } else {\n nearNode = ele;\n near.push(ele);\n }\n }\n\n if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) {\n if (nearEdge) {\n // then replace existing edge\n // can replace only if same z-index\n if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) {\n for (var i = 0; i < near.length; i++) {\n if (near[i].isEdge()) {\n near[i] = ele;\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n break;\n }\n }\n }\n } else {\n near.push(ele);\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n }\n }\n }\n\n function checkNode(node) {\n var width = node.outerWidth() + 2 * nodeThreshold;\n var height = node.outerHeight() + 2 * nodeThreshold;\n var hw = width / 2;\n var hh = height / 2;\n var pos = node.position();\n\n if (pos.x - hw <= x && x <= pos.x + hw // bb check x\n && pos.y - hh <= y && y <= pos.y + hh // bb check y\n ) {\n var shape = r.nodeShapes[self.getNodeShape(node)];\n\n if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) {\n addEle(node, 0);\n return true;\n }\n }\n }\n\n function checkEdge(edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var styleWidth = edge.pstyle('width').pfValue;\n var scale = edge.pstyle('arrow-scale').value;\n var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre\n\n var widthSq = width * width;\n var width2 = width * 2;\n var src = _p.source;\n var tgt = _p.target;\n var sqDist;\n\n if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') {\n var pts = rs.allpts;\n\n for (var i = 0; i + 3 < pts.length; i += 2) {\n if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n var pts = rs.allpts;\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n } // if we're close to the edge but didn't hit it, maybe we hit its arrows\n\n\n var src = src || _p.source;\n var tgt = tgt || _p.target;\n var arSize = self.getArrowWidth(styleWidth, scale);\n var arrows = [{\n name: 'source',\n x: rs.arrowStartX,\n y: rs.arrowStartY,\n angle: rs.srcArrowAngle\n }, {\n name: 'target',\n x: rs.arrowEndX,\n y: rs.arrowEndY,\n angle: rs.tgtArrowAngle\n }, {\n name: 'mid-source',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midsrcArrowAngle\n }, {\n name: 'mid-target',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midtgtArrowAngle\n }];\n\n for (var i = 0; i < arrows.length; i++) {\n var ar = arrows[i];\n var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value];\n var edgeWidth = edge.pstyle('width').pfValue;\n\n if (shape.roughCollide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold)) {\n addEle(edge);\n return true;\n }\n } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence)\n\n\n if (hasCompounds && near.length > 0) {\n checkNode(src);\n checkNode(tgt);\n }\n }\n\n function preprop(obj, name, pre) {\n return getPrefixedProperty(obj, name, pre);\n }\n\n function checkLabel(ele, prefix) {\n var _p = ele._private;\n var th = labelThreshold;\n var prefixDash;\n\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n\n ele.boundingBox();\n var bb = _p.labelBounds[prefix || 'main'];\n var text = ele.pstyle(prefixDash + 'label').value;\n var eventsEnabled = ele.pstyle('text-events').strValue === 'yes';\n\n if (!eventsEnabled || !text) {\n return;\n }\n\n var lx = preprop(_p.rscratch, 'labelX', prefix);\n var ly = preprop(_p.rscratch, 'labelY', prefix);\n var theta = preprop(_p.rscratch, 'labelAngle', prefix);\n var ox = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n var oy = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n var lx1 = bb.x1 - th - ox; // (-ox, -oy) as bb already includes margin\n\n var lx2 = bb.x2 + th - ox; // and rotation is about (lx, ly)\n\n var ly1 = bb.y1 - th - oy;\n var ly2 = bb.y2 + th - oy;\n\n if (theta) {\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n\n var rotate = function rotate(x, y) {\n x = x - lx;\n y = y - ly;\n return {\n x: x * cos - y * sin + lx,\n y: x * sin + y * cos + ly\n };\n };\n\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n var points = [// with the margin added after the rotation is applied\n px1y1.x + ox, px1y1.y + oy, px2y1.x + ox, px2y1.y + oy, px2y2.x + ox, px2y2.y + oy, px1y2.x + ox, px1y2.y + oy];\n\n if (pointInsidePolygonPoints(x, y, points)) {\n addEle(ele);\n return true;\n }\n } else {\n // do a cheaper bb check\n if (inBoundingBox(bb, x, y)) {\n addEle(ele);\n return true;\n }\n }\n }\n\n for (var i = eles.length - 1; i >= 0; i--) {\n // reverse order for precedence\n var ele = eles[i];\n\n if (ele.isNode()) {\n checkNode(ele) || checkLabel(ele);\n } else {\n // then edge\n checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target');\n }\n }\n\n return near;\n }; // 'Give me everything from this box'\n\n\n BRp$e.getAllInBox = function (x1, y1, x2, y2) {\n var eles = this.getCachedZSortedEles().interactive;\n var box = [];\n var x1c = Math.min(x1, x2);\n var x2c = Math.max(x1, x2);\n var y1c = Math.min(y1, y2);\n var y2c = Math.max(y1, y2);\n x1 = x1c;\n x2 = x2c;\n y1 = y1c;\n y2 = y2c;\n var boxBb = makeBoundingBox({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n\n if (ele.isNode()) {\n var node = ele;\n var nodeBb = node.boundingBox({\n includeNodes: true,\n includeEdges: false,\n includeLabels: false\n });\n\n if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) {\n box.push(node);\n }\n } else {\n var edge = ele;\n var _p = edge._private;\n var rs = _p.rscratch;\n\n if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) {\n continue;\n }\n\n if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) {\n continue;\n }\n\n if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') {\n var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;\n var allInside = true;\n\n for (var i = 0; i < pts.length; i++) {\n if (!pointInBoundingBox(boxBb, pts[i])) {\n allInside = false;\n break;\n }\n }\n\n if (allInside) {\n box.push(edge);\n }\n } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') {\n box.push(edge);\n }\n }\n }\n\n return box;\n };\n\n var BRp$d = {};\n\n BRp$d.calculateArrowAngles = function (edge) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n var isBezier = rs.edgeType === 'bezier';\n var isMultibezier = rs.edgeType === 'multibezier';\n var isSegments = rs.edgeType === 'segments';\n var isCompound = rs.edgeType === 'compound';\n var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation\n\n var dispX, dispY;\n var startX, startY, endX, endY, midX, midY;\n\n if (isHaystack) {\n startX = rs.haystackPts[0];\n startY = rs.haystackPts[1];\n endX = rs.haystackPts[2];\n endY = rs.haystackPts[3];\n } else {\n startX = rs.arrowStartX;\n startY = rs.arrowStartY;\n endX = rs.arrowEndX;\n endY = rs.arrowEndY;\n }\n\n midX = rs.midX;\n midY = rs.midY; // source\n //\n\n if (isSegments) {\n dispX = startX - rs.segpts[0];\n dispY = startY - rs.segpts[1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1);\n var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1);\n dispX = startX - bX;\n dispY = startY - bY;\n } else {\n dispX = startX - midX;\n dispY = startY - midY;\n }\n\n rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target\n //\n\n var midX = rs.midX;\n var midY = rs.midY;\n\n if (isHaystack) {\n midX = (startX + endX) / 2;\n midY = (startY + endY) / 2;\n }\n\n dispX = endX - startX;\n dispY = endY - startY;\n\n if (isSegments) {\n var pts = rs.allpts;\n\n if (pts.length / 2 % 2 === 0) {\n var i2 = pts.length / 2;\n var i1 = i2 - 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n } else {\n var i2 = pts.length / 2 - 1;\n var i1 = i2 - 2;\n var i3 = i2 + 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n }\n } else if (isMultibezier || isCompound || isSelf) {\n var pts = rs.allpts;\n var cpts = rs.ctrlpts;\n var bp0x, bp0y;\n var bp1x, bp1y;\n\n if (cpts.length / 2 % 2 === 0) {\n var p0 = pts.length / 2 - 1; // startpt\n\n var ic = p0 + 2;\n var p1 = ic + 2;\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001);\n } else {\n var ic = pts.length / 2 - 1; // ctrpt\n\n var p0 = ic - 2; // startpt\n\n var p1 = ic + 2; // endpt\n\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5);\n }\n\n dispX = bp1x - bp0x;\n dispY = bp1y - bp0y;\n }\n\n rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY);\n rs.midDispX = dispX;\n rs.midDispY = dispY; // mid source\n //\n\n dispX *= -1;\n dispY *= -1;\n\n if (isSegments) {\n var pts = rs.allpts;\n\n if (pts.length / 2 % 2 === 0) ; else {\n var i2 = pts.length / 2 - 1;\n var i3 = i2 + 2;\n dispX = -(pts[i3] - pts[i2]);\n dispY = -(pts[i3 + 1] - pts[i2 + 1]);\n }\n }\n\n rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target\n //\n\n if (isSegments) {\n dispX = endX - rs.segpts[rs.segpts.length - 2];\n dispY = endY - rs.segpts[rs.segpts.length - 1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var l = pts.length;\n var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9);\n var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9);\n dispX = endX - bX;\n dispY = endY - bY;\n } else {\n dispX = endX - midX;\n dispY = endY - midY;\n }\n\n rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY);\n };\n\n BRp$d.getArrowWidth = BRp$d.getArrowHeight = function (edgeWidth, scale) {\n var cache = this.arrowWidthCache = this.arrowWidthCache || {};\n var cachedVal = cache[edgeWidth + ', ' + scale];\n\n if (cachedVal) {\n return cachedVal;\n }\n\n cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale;\n cache[edgeWidth + ', ' + scale] = cachedVal;\n return cachedVal;\n };\n\n var BRp$c = {};\n\n BRp$c.findHaystackPoints = function (edges) {\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var rs = _p.rscratch;\n\n if (!rs.haystack) {\n var angle = Math.random() * 2 * Math.PI;\n rs.source = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n angle = Math.random() * 2 * Math.PI;\n rs.target = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n }\n\n var src = _p.source;\n var tgt = _p.target;\n var srcPos = src.position();\n var tgtPos = tgt.position();\n var srcW = src.width();\n var tgtW = tgt.width();\n var srcH = src.height();\n var tgtH = tgt.height();\n var radius = edge.pstyle('haystack-radius').value;\n var halfRadius = radius / 2; // b/c have to half width/height\n\n rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y];\n rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2;\n rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously\n\n rs.edgeType = 'haystack';\n rs.haystack = true;\n this.storeEdgeProjections(edge);\n this.calculateArrowAngles(edge);\n this.recalculateEdgeLabelProjections(edge);\n this.calculateLabelAngles(edge);\n }\n };\n\n BRp$c.findSegmentsPoints = function (edge, pairInfo) {\n // Segments (multiple straight lines)\n var rs = edge._private.rscratch;\n var posPts = pairInfo.posPts,\n intersectionPts = pairInfo.intersectionPts,\n vectorNormInverse = pairInfo.vectorNormInverse;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var segmentWs = edge.pstyle('segment-weights');\n var segmentDs = edge.pstyle('segment-distances');\n var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length);\n rs.edgeType = 'segments';\n rs.segpts = [];\n\n for (var s = 0; s < segmentsN; s++) {\n var w = segmentWs.pfValue[s];\n var d = segmentDs.pfValue[s];\n var w1 = 1 - w;\n var w2 = w;\n var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d);\n }\n };\n\n BRp$c.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Self-edge\n var rs = edge._private.rscratch;\n var dirCounts = pairInfo.dirCounts,\n srcPos = pairInfo.srcPos;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var loopDir = edge.pstyle('loop-direction').pfValue;\n var loopSwp = edge.pstyle('loop-sweep').pfValue;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n rs.edgeType = 'self';\n var j = i;\n var loopDist = stepSize;\n\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n\n var loopAngle = loopDir - Math.PI / 2;\n var outAngle = loopAngle - loopSwp / 2;\n var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values\n\n var dc = String(loopDir + '_' + loopSwp);\n j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc];\n rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)];\n };\n\n BRp$c.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Compound edge\n var rs = edge._private.rscratch;\n rs.edgeType = 'compound';\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var j = i;\n var loopDist = stepSize;\n\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n\n var loopW = 50;\n var loopaPos = {\n x: srcPos.x - srcW / 2,\n y: srcPos.y - srcH / 2\n };\n var loopbPos = {\n x: tgtPos.x - tgtW / 2,\n y: tgtPos.y - tgtH / 2\n };\n var loopPos = {\n x: Math.min(loopaPos.x, loopbPos.x),\n y: Math.min(loopaPos.y, loopbPos.y)\n }; // avoids cases with impossible beziers\n\n var minCompoundStretch = 0.5;\n var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01));\n var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01));\n rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y];\n };\n\n BRp$c.findStraightEdgePoints = function (edge) {\n // Straight edge within bundle\n edge._private.rscratch.edgeType = 'straight';\n };\n\n BRp$c.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) {\n var rs = edge._private.rscratch;\n var vectorNormInverse = pairInfo.vectorNormInverse,\n posPts = pairInfo.posPts,\n intersectionPts = pairInfo.intersectionPts;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptWs = edge.pstyle('control-point-weights');\n var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1;\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier\n\n var multi = edgeIsUnbundled;\n rs.edgeType = multi ? 'multibezier' : 'bezier';\n rs.ctrlpts = [];\n\n for (var b = 0; b < bezierN; b++) {\n var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1);\n var manctrlptDist = void 0;\n var sign = signum(normctrlptDist);\n\n if (multi) {\n ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size\n\n ctrlptWeight = ctrlptWs.value[b];\n }\n\n if (edgeIsUnbundled) {\n // multi or single unbundled\n manctrlptDist = ctrlptDist;\n } else {\n manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined;\n }\n\n var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist;\n var w1 = 1 - ctrlptWeight;\n var w2 = ctrlptWeight;\n var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint);\n }\n };\n\n BRp$c.findTaxiPoints = function (edge, pairInfo) {\n // Taxicab geometry with two turns maximum\n var rs = edge._private.rscratch;\n rs.edgeType = 'segments';\n var VERTICAL = 'vertical';\n var HORIZONTAL = 'horizontal';\n var LEFTWARD = 'leftward';\n var RIGHTWARD = 'rightward';\n var DOWNWARD = 'downward';\n var UPWARD = 'upward';\n var AUTO = 'auto';\n var posPts = pairInfo.posPts,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var dIncludesNodeBody = edgeDistances !== 'node-position';\n var taxiDir = edge.pstyle('taxi-direction').value;\n var rawTaxiDir = taxiDir; // unprocessed value\n\n var taxiTurn = edge.pstyle('taxi-turn');\n var turnIsPercent = taxiTurn.units === '%';\n var taxiTurnPfVal = taxiTurn.pfValue;\n var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side\n\n var minD = edge.pstyle('taxi-turn-min-distance').pfValue;\n var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0;\n var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0;\n var pdx = posPts.x2 - posPts.x1;\n var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value\n\n var subDWH = function subDWH(dxy, dwh) {\n if (dxy > 0) {\n return Math.max(dxy - dwh, 0);\n } else {\n return Math.min(dxy + dwh, 0);\n }\n };\n\n var dx = subDWH(pdx, dw);\n var dy = subDWH(pdy, dh);\n var isExplicitDir = false;\n\n if (rawTaxiDir === AUTO) {\n taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL;\n } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) {\n taxiDir = VERTICAL;\n isExplicitDir = true;\n } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) {\n taxiDir = HORIZONTAL;\n isExplicitDir = true;\n }\n\n var isVert = taxiDir === VERTICAL;\n var l = isVert ? dy : dx;\n var pl = isVert ? pdy : pdx;\n var sgnL = signum(pl);\n var forcedDir = false;\n\n if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction\n && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) {\n sgnL *= -1;\n l = sgnL * Math.abs(l);\n forcedDir = true;\n }\n\n var d;\n\n if (turnIsPercent) {\n var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal;\n d = p * l;\n } else {\n var k = taxiTurnPfVal < 0 ? l : 0;\n d = k + taxiTurnPfVal * sgnL;\n }\n\n var getIsTooClose = function getIsTooClose(d) {\n return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l);\n };\n\n var isTooCloseSrc = getIsTooClose(d);\n var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d));\n var isTooClose = isTooCloseSrc || isTooCloseTgt;\n\n if (isTooClose && !forcedDir) {\n // non-ideal routing\n if (isVert) {\n // vertical fallbacks\n var lShapeInsideSrc = Math.abs(pl) <= srcH / 2;\n var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2;\n\n if (lShapeInsideSrc) {\n // horizontal Z-shape (direction not respected)\n var x = (posPts.x1 + posPts.x2) / 2;\n var y1 = posPts.y1,\n y2 = posPts.y2;\n rs.segpts = [x, y1, x, y2];\n } else if (lShapeInsideTgt) {\n // vertical Z-shape (distance not respected)\n var y = (posPts.y1 + posPts.y2) / 2;\n var x1 = posPts.x1,\n x2 = posPts.x2;\n rs.segpts = [x1, y, x2, y];\n } else {\n // L-shape fallback (turn distance not respected, but works well with tree siblings)\n rs.segpts = [posPts.x1, posPts.y2];\n }\n } else {\n // horizontal fallbacks\n var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2;\n\n var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2;\n\n if (_lShapeInsideSrc) {\n // vertical Z-shape (direction not respected)\n var _y = (posPts.y1 + posPts.y2) / 2;\n\n var _x = posPts.x1,\n _x2 = posPts.x2;\n rs.segpts = [_x, _y, _x2, _y];\n } else if (_lShapeInsideTgt) {\n // horizontal Z-shape (turn distance not respected)\n var _x3 = (posPts.x1 + posPts.x2) / 2;\n\n var _y2 = posPts.y1,\n _y3 = posPts.y2;\n rs.segpts = [_x3, _y2, _x3, _y3];\n } else {\n // L-shape (turn distance not respected, but works well for tree siblings)\n rs.segpts = [posPts.x2, posPts.y1];\n }\n }\n } else {\n // ideal routing\n if (isVert) {\n var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0);\n\n var _x4 = posPts.x1,\n _x5 = posPts.x2;\n rs.segpts = [_x4, _y4, _x5, _y4];\n } else {\n // horizontal\n var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0);\n\n var _y5 = posPts.y1,\n _y6 = posPts.y2;\n rs.segpts = [_x6, _y5, _x6, _y6];\n }\n }\n };\n\n BRp$c.tryToCorrectInvalidPoints = function (edge, pairInfo) {\n var rs = edge._private.rscratch; // can only correct beziers for now...\n\n if (rs.edgeType === 'bezier') {\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH,\n srcShape = pairInfo.srcShape,\n tgtShape = pairInfo.tgtShape;\n var badStart = !number$1(rs.startX) || !number$1(rs.startY);\n var badAStart = !number$1(rs.arrowStartX) || !number$1(rs.arrowStartY);\n var badEnd = !number$1(rs.endX) || !number$1(rs.endY);\n var badAEnd = !number$1(rs.arrowEndX) || !number$1(rs.arrowEndY);\n var minCpADistFactor = 3;\n var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n var minCpADist = minCpADistFactor * arrowW;\n var startACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.startX,\n y: rs.startY\n });\n var closeStartACp = startACpDist < minCpADist;\n var endACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.endX,\n y: rs.endY\n });\n var closeEndACp = endACpDist < minCpADist;\n var overlapping = false;\n\n if (badStart || badAStart || closeStartACp) {\n overlapping = true; // project control point along line from src centre to outside the src shape\n // (otherwise intersection will yield nothing)\n\n var cpD = {\n // delta\n x: rs.ctrlpts[0] - srcPos.x,\n y: rs.ctrlpts[1] - srcPos.y\n };\n var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line\n\n var cpM = {\n // normalised delta\n x: cpD.x / cpL,\n y: cpD.y / cpL\n };\n var radius = Math.max(srcW, srcH);\n var cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + cpM.x * 2 * radius,\n y: rs.ctrlpts[1] + cpM.y * 2 * radius\n };\n var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0);\n\n if (closeStartACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist);\n } else {\n rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist;\n rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist;\n }\n }\n\n if (badEnd || badAEnd || closeEndACp) {\n overlapping = true; // project control point along line from tgt centre to outside the tgt shape\n // (otherwise intersection will yield nothing)\n\n var _cpD = {\n // delta\n x: rs.ctrlpts[0] - tgtPos.x,\n y: rs.ctrlpts[1] - tgtPos.y\n };\n\n var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line\n\n\n var _cpM = {\n // normalised delta\n x: _cpD.x / _cpL,\n y: _cpD.y / _cpL\n };\n\n var _radius = Math.max(srcW, srcH);\n\n var _cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + _cpM.x * 2 * _radius,\n y: rs.ctrlpts[1] + _cpM.y * 2 * _radius\n };\n var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0);\n\n if (closeEndACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist);\n } else {\n rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist;\n rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist;\n }\n }\n\n if (overlapping) {\n // recalc endpts\n this.findEndpoints(edge);\n }\n }\n };\n\n BRp$c.storeAllpts = function (edge) {\n var rs = edge._private.rscratch;\n\n if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n\n for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) {\n // ctrl pt itself\n rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts\n\n if (b + 3 < rs.ctrlpts.length) {\n rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2);\n }\n }\n\n rs.allpts.push(rs.endX, rs.endY);\n var m, mt;\n\n if (rs.ctrlpts.length / 2 % 2 === 0) {\n m = rs.allpts.length / 2 - 1;\n rs.midX = rs.allpts[m];\n rs.midY = rs.allpts[m + 1];\n } else {\n m = rs.allpts.length / 2 - 3;\n mt = 0.5;\n rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt);\n rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt);\n }\n } else if (rs.edgeType === 'straight') {\n // need to calc these after endpts\n rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc\n\n rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4;\n rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4;\n } else if (rs.edgeType === 'segments') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n rs.allpts.push.apply(rs.allpts, rs.segpts);\n rs.allpts.push(rs.endX, rs.endY);\n\n if (rs.segpts.length % 4 === 0) {\n var i2 = rs.segpts.length / 2;\n var i1 = i2 - 2;\n rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2;\n rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2;\n } else {\n var _i = rs.segpts.length / 2 - 1;\n\n rs.midX = rs.segpts[_i];\n rs.midY = rs.segpts[_i + 1];\n }\n }\n };\n\n BRp$c.checkForInvalidEdgeWarning = function (edge) {\n var rs = edge[0]._private.rscratch;\n\n if (rs.nodesOverlap || number$1(rs.startX) && number$1(rs.startY) && number$1(rs.endX) && number$1(rs.endY)) {\n rs.loggedErr = false;\n } else {\n if (!rs.loggedErr) {\n rs.loggedErr = true;\n warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.');\n }\n }\n };\n\n BRp$c.findEdgeControlPoints = function (edges) {\n var _this = this;\n\n if (!edges || edges.length === 0) {\n return;\n }\n\n var r = this;\n var cy = r.cy;\n var hasCompounds = cy.hasCompoundNodes();\n var hashTable = {\n map: new Map$2(),\n get: function get(pairId) {\n var map2 = this.map.get(pairId[0]);\n\n if (map2 != null) {\n return map2.get(pairId[1]);\n } else {\n return null;\n }\n },\n set: function set(pairId, val) {\n var map2 = this.map.get(pairId[0]);\n\n if (map2 == null) {\n map2 = new Map$2();\n this.map.set(pairId[0], map2);\n }\n\n map2.set(pairId[1], val);\n }\n };\n var pairIds = [];\n var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed\n // they shouldn't take up space\n\n if (edge.removed() || !edge.takesUpSpace()) {\n continue;\n }\n\n if (curveStyle === 'haystack') {\n haystackEdges.push(edge);\n continue;\n }\n\n var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'straight-triangle' || curveStyle === 'taxi';\n var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier';\n var src = _p.source;\n var tgt = _p.target;\n var srcIndex = src.poolIndex();\n var tgtIndex = tgt.poolIndex();\n var pairId = [srcIndex, tgtIndex].sort();\n var tableEntry = hashTable.get(pairId);\n\n if (tableEntry == null) {\n tableEntry = {\n eles: []\n };\n hashTable.set(pairId, tableEntry);\n pairIds.push(pairId);\n }\n\n tableEntry.eles.push(edge);\n\n if (edgeIsUnbundled) {\n tableEntry.hasUnbundled = true;\n }\n\n if (edgeIsBezier) {\n tableEntry.hasBezier = true;\n }\n } // for each pair (src, tgt), create the ctrl pts\n // Nested for loop is OK; total number of iterations for both loops = edgeCount\n\n\n var _loop = function _loop(p) {\n var pairId = pairIds[p];\n var pairInfo = hashTable.get(pairId);\n var swappedpairInfo = void 0;\n\n if (!pairInfo.hasUnbundled) {\n var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) {\n return e.isBundledBezier();\n });\n clearArray(pairInfo.eles);\n pllEdges.forEach(function (edge) {\n return pairInfo.eles.push(edge);\n }); // for each pair id, the edges should be sorted by index\n\n pairInfo.eles.sort(function (edge1, edge2) {\n return edge1.poolIndex() - edge2.poolIndex();\n });\n }\n\n var firstEdge = pairInfo.eles[0];\n var src = firstEdge.source();\n var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId\n\n if (src.poolIndex() > tgt.poolIndex()) {\n var temp = src;\n src = tgt;\n tgt = temp;\n }\n\n var srcPos = pairInfo.srcPos = src.position();\n var tgtPos = pairInfo.tgtPos = tgt.position();\n var srcW = pairInfo.srcW = src.outerWidth();\n var srcH = pairInfo.srcH = src.outerHeight();\n var tgtW = pairInfo.tgtW = tgt.outerWidth();\n var tgtH = pairInfo.tgtH = tgt.outerHeight();\n\n var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)];\n\n var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)];\n\n pairInfo.dirCounts = {\n 'north': 0,\n 'west': 0,\n 'south': 0,\n 'east': 0,\n 'northwest': 0,\n 'southwest': 0,\n 'northeast': 0,\n 'southeast': 0\n };\n\n for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) {\n var _edge = pairInfo.eles[_i2];\n var rs = _edge[0]._private.rscratch;\n\n var _curveStyle = _edge.pstyle('curve-style').value;\n\n var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order\n\n\n var edgeIsSwapped = !src.same(_edge.source());\n\n if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) {\n pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt\n\n var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0);\n var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt\n\n var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0);\n var tgtIntn = pairInfo.tgtIntn = tgtOutside;\n var intersectionPts = pairInfo.intersectionPts = {\n x1: srcOutside[0],\n x2: tgtOutside[0],\n y1: srcOutside[1],\n y2: tgtOutside[1]\n };\n var posPts = pairInfo.posPts = {\n x1: srcPos.x,\n x2: tgtPos.x,\n y1: srcPos.y,\n y2: tgtPos.y\n };\n var dy = tgtOutside[1] - srcOutside[1];\n var dx = tgtOutside[0] - srcOutside[0];\n var l = Math.sqrt(dx * dx + dy * dy);\n var vector = pairInfo.vector = {\n x: dx,\n y: dy\n };\n var vectorNorm = pairInfo.vectorNorm = {\n x: vector.x / l,\n y: vector.y / l\n };\n var vectorNormInverse = {\n x: -vectorNorm.y,\n y: vectorNorm.x\n }; // if node shapes overlap, then no ctrl pts to draw\n\n pairInfo.nodesOverlap = !number$1(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y);\n pairInfo.vectorNormInverse = vectorNormInverse;\n swappedpairInfo = {\n nodesOverlap: pairInfo.nodesOverlap,\n dirCounts: pairInfo.dirCounts,\n calculatedIntersection: true,\n hasBezier: pairInfo.hasBezier,\n hasUnbundled: pairInfo.hasUnbundled,\n eles: pairInfo.eles,\n srcPos: tgtPos,\n tgtPos: srcPos,\n srcW: tgtW,\n srcH: tgtH,\n tgtW: srcW,\n tgtH: srcH,\n srcIntn: tgtIntn,\n tgtIntn: srcIntn,\n srcShape: tgtShape,\n tgtShape: srcShape,\n posPts: {\n x1: posPts.x2,\n y1: posPts.y2,\n x2: posPts.x1,\n y2: posPts.y1\n },\n intersectionPts: {\n x1: intersectionPts.x2,\n y1: intersectionPts.y2,\n x2: intersectionPts.x1,\n y2: intersectionPts.y1\n },\n vector: {\n x: -vector.x,\n y: -vector.y\n },\n vectorNorm: {\n x: -vectorNorm.x,\n y: -vectorNorm.y\n },\n vectorNormInverse: {\n x: -vectorNormInverse.x,\n y: -vectorNormInverse.y\n }\n };\n }\n\n var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo;\n rs.nodesOverlap = passedPairInfo.nodesOverlap;\n rs.srcIntn = passedPairInfo.srcIntn;\n rs.tgtIntn = passedPairInfo.tgtIntn;\n\n if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) {\n _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (src === tgt) {\n _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (_curveStyle === 'segments') {\n _this.findSegmentsPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'taxi') {\n _this.findTaxiPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) {\n _this.findStraightEdgePoints(_edge);\n } else {\n _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped);\n }\n\n _this.findEndpoints(_edge);\n\n _this.tryToCorrectInvalidPoints(_edge, passedPairInfo);\n\n _this.checkForInvalidEdgeWarning(_edge);\n\n _this.storeAllpts(_edge);\n\n _this.storeEdgeProjections(_edge);\n\n _this.calculateArrowAngles(_edge);\n\n _this.recalculateEdgeLabelProjections(_edge);\n\n _this.calculateLabelAngles(_edge);\n } // for pair edges\n\n };\n\n for (var p = 0; p < pairIds.length; p++) {\n _loop(p);\n } // for pair ids\n // haystacks avoid the expense of pairInfo stuff (intersections etc.)\n\n\n this.findHaystackPoints(haystackEdges);\n };\n\n function getPts(pts) {\n var retPts = [];\n\n if (pts == null) {\n return;\n }\n\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push({\n x: x,\n y: y\n });\n }\n\n return retPts;\n }\n\n BRp$c.getSegmentPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n\n if (type === 'segments') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.segpts);\n }\n };\n\n BRp$c.getControlPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n\n if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.ctrlpts);\n }\n };\n\n BRp$c.getEdgeMidpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n return {\n x: rs.midX,\n y: rs.midY\n };\n };\n\n var BRp$b = {};\n\n BRp$b.manualEndptToPx = function (node, prop) {\n var r = this;\n var npos = node.position();\n var w = node.outerWidth();\n var h = node.outerHeight();\n\n if (prop.value.length === 2) {\n var p = [prop.pfValue[0], prop.pfValue[1]];\n\n if (prop.units[0] === '%') {\n p[0] = p[0] * w;\n }\n\n if (prop.units[1] === '%') {\n p[1] = p[1] * h;\n }\n\n p[0] += npos.x;\n p[1] += npos.y;\n return p;\n } else {\n var angle = prop.pfValue[0];\n angle = -Math.PI / 2 + angle; // start at 12 o'clock\n\n var l = 2 * Math.max(w, h);\n var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l];\n return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0);\n }\n };\n\n BRp$b.findEndpoints = function (edge) {\n var r = this;\n var intersect;\n var source = edge.source()[0];\n var target = edge.target()[0];\n var srcPos = source.position();\n var tgtPos = target.position();\n var tgtArShape = edge.pstyle('target-arrow-shape').value;\n var srcArShape = edge.pstyle('source-arrow-shape').value;\n var tgtDist = edge.pstyle('target-distance-from-node').pfValue;\n var srcDist = edge.pstyle('source-distance-from-node').pfValue;\n var curveStyle = edge.pstyle('curve-style').value;\n var rs = edge._private.rscratch;\n var et = rs.edgeType;\n var taxi = curveStyle === 'taxi';\n var self = et === 'self' || et === 'compound';\n var bezier = et === 'bezier' || et === 'multibezier' || self;\n var multi = et !== 'bezier';\n var lines = et === 'straight' || et === 'segments';\n var segments = et === 'segments';\n var hasEndpts = bezier || multi || lines;\n var overrideEndpts = self || taxi;\n var srcManEndpt = edge.pstyle('source-endpoint');\n var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value;\n var tgtManEndpt = edge.pstyle('target-endpoint');\n var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value;\n rs.srcManEndpt = srcManEndpt;\n rs.tgtManEndpt = tgtManEndpt;\n var p1; // last known point of edge on target side\n\n var p2; // last known point of edge on source side\n\n var p1_i; // point to intersect with target shape\n\n var p2_i; // point to intersect with source shape\n\n if (bezier) {\n var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]];\n var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart;\n p1 = cpEnd;\n p2 = cpStart;\n } else if (lines) {\n var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2);\n var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2);\n p1 = tgtArrowFromPt;\n p2 = srcArrowFromPt;\n }\n\n if (tgtManEndptVal === 'inside-to-node') {\n intersect = [tgtPos.x, tgtPos.y];\n } else if (tgtManEndpt.units) {\n intersect = this.manualEndptToPx(target, tgtManEndpt);\n } else if (tgtManEndptVal === 'outside-to-line') {\n intersect = rs.tgtIntn; // use cached value from ctrlpt calc\n } else {\n if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') {\n p1_i = p1;\n } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') {\n p1_i = [srcPos.x, srcPos.y];\n }\n\n intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0);\n\n if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') {\n var trs = target._private.rscratch;\n var lw = trs.labelWidth;\n var lh = trs.labelHeight;\n var lx = trs.labelX;\n var ly = trs.labelY;\n var lw2 = lw / 2;\n var lh2 = lh / 2;\n var va = target.pstyle('text-valign').value;\n\n if (va === 'top') {\n ly -= lh2;\n } else if (va === 'bottom') {\n ly += lh2;\n }\n\n var ha = target.pstyle('text-halign').value;\n\n if (ha === 'left') {\n lx -= lw2;\n } else if (ha === 'right') {\n lx += lw2;\n }\n\n var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y);\n\n if (labelIntersect.length > 0) {\n var refPt = srcPos;\n var intSqdist = sqdist(refPt, array2point(intersect));\n var labIntSqdist = sqdist(refPt, array2point(labelIntersect));\n var minSqDist = intSqdist;\n\n if (labIntSqdist < intSqdist) {\n intersect = labelIntersect;\n minSqDist = labIntSqdist;\n }\n\n if (labelIntersect.length > 2) {\n var labInt2SqDist = sqdist(refPt, {\n x: labelIntersect[2],\n y: labelIntersect[3]\n });\n\n if (labInt2SqDist < minSqDist) {\n intersect = [labelIntersect[2], labelIntersect[3]];\n }\n }\n }\n }\n }\n\n var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist);\n var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist);\n rs.endX = edgeEnd[0];\n rs.endY = edgeEnd[1];\n rs.arrowEndX = arrowEnd[0];\n rs.arrowEndY = arrowEnd[1];\n\n if (srcManEndptVal === 'inside-to-node') {\n intersect = [srcPos.x, srcPos.y];\n } else if (srcManEndpt.units) {\n intersect = this.manualEndptToPx(source, srcManEndpt);\n } else if (srcManEndptVal === 'outside-to-line') {\n intersect = rs.srcIntn; // use cached value from ctrlpt calc\n } else {\n if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') {\n p2_i = p2;\n } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') {\n p2_i = [tgtPos.x, tgtPos.y];\n }\n\n intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0);\n\n if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') {\n var srs = source._private.rscratch;\n var _lw = srs.labelWidth;\n var _lh = srs.labelHeight;\n var _lx = srs.labelX;\n var _ly = srs.labelY;\n\n var _lw2 = _lw / 2;\n\n var _lh2 = _lh / 2;\n\n var _va = source.pstyle('text-valign').value;\n\n if (_va === 'top') {\n _ly -= _lh2;\n } else if (_va === 'bottom') {\n _ly += _lh2;\n }\n\n var _ha = source.pstyle('text-halign').value;\n\n if (_ha === 'left') {\n _lx -= _lw2;\n } else if (_ha === 'right') {\n _lx += _lw2;\n }\n\n var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y);\n\n if (_labelIntersect.length > 0) {\n var _refPt = tgtPos;\n\n var _intSqdist = sqdist(_refPt, array2point(intersect));\n\n var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect));\n\n var _minSqDist = _intSqdist;\n\n if (_labIntSqdist < _intSqdist) {\n intersect = [_labelIntersect[0], _labelIntersect[1]];\n _minSqDist = _labIntSqdist;\n }\n\n if (_labelIntersect.length > 2) {\n var _labInt2SqDist = sqdist(_refPt, {\n x: _labelIntersect[2],\n y: _labelIntersect[3]\n });\n\n if (_labInt2SqDist < _minSqDist) {\n intersect = [_labelIntersect[2], _labelIntersect[3]];\n }\n }\n }\n }\n }\n\n var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist);\n var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist);\n rs.startX = edgeStart[0];\n rs.startY = edgeStart[1];\n rs.arrowStartX = arrowStart[0];\n rs.arrowStartY = arrowStart[1];\n\n if (hasEndpts) {\n if (!number$1(rs.startX) || !number$1(rs.startY) || !number$1(rs.endX) || !number$1(rs.endY)) {\n rs.badLine = true;\n } else {\n rs.badLine = false;\n }\n }\n };\n\n BRp$b.getSourceEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[0],\n y: rs.haystackPts[1]\n };\n\n default:\n return {\n x: rs.arrowStartX,\n y: rs.arrowStartY\n };\n }\n };\n\n BRp$b.getTargetEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[2],\n y: rs.haystackPts[3]\n };\n\n default:\n return {\n x: rs.arrowEndX,\n y: rs.arrowEndY\n };\n }\n };\n\n var BRp$a = {};\n\n function pushBezierPts(r, edge, pts) {\n var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) {\n return qbezierAt(p1, p2, p3, t);\n };\n\n var _p = edge._private;\n var bpts = _p.rstyle.bezierPts;\n\n for (var i = 0; i < r.bezierProjPcts.length; i++) {\n var p = r.bezierProjPcts[i];\n bpts.push({\n x: qbezierAt$1(pts[0], pts[2], pts[4], p),\n y: qbezierAt$1(pts[1], pts[3], pts[5], p)\n });\n }\n }\n\n BRp$a.storeEdgeProjections = function (edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var et = rs.edgeType; // clear the cached points state\n\n _p.rstyle.bezierPts = null;\n _p.rstyle.linePts = null;\n _p.rstyle.haystackPts = null;\n\n if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') {\n _p.rstyle.bezierPts = [];\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n pushBezierPts(this, edge, rs.allpts.slice(i, i + 6));\n }\n } else if (et === 'segments') {\n var lpts = _p.rstyle.linePts = [];\n\n for (var i = 0; i + 1 < rs.allpts.length; i += 2) {\n lpts.push({\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n });\n }\n } else if (et === 'haystack') {\n var hpts = rs.haystackPts;\n _p.rstyle.haystackPts = [{\n x: hpts[0],\n y: hpts[1]\n }, {\n x: hpts[2],\n y: hpts[3]\n }];\n }\n\n _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n };\n\n BRp$a.recalculateEdgeProjections = function (edges) {\n this.findEdgeControlPoints(edges);\n };\n\n /* global document */\n\n var BRp$9 = {};\n\n BRp$9.recalculateNodeLabelProjection = function (node) {\n var content = node.pstyle('label').strValue;\n\n if (emptyString(content)) {\n return;\n }\n\n var textX, textY;\n var _p = node._private;\n var nodeWidth = node.width();\n var nodeHeight = node.height();\n var padding = node.padding();\n var nodePos = node.position();\n var textHalign = node.pstyle('text-halign').strValue;\n var textValign = node.pstyle('text-valign').strValue;\n var rs = _p.rscratch;\n var rstyle = _p.rstyle;\n\n switch (textHalign) {\n case 'left':\n textX = nodePos.x - nodeWidth / 2 - padding;\n break;\n\n case 'right':\n textX = nodePos.x + nodeWidth / 2 + padding;\n break;\n\n default:\n // e.g. center\n textX = nodePos.x;\n }\n\n switch (textValign) {\n case 'top':\n textY = nodePos.y - nodeHeight / 2 - padding;\n break;\n\n case 'bottom':\n textY = nodePos.y + nodeHeight / 2 + padding;\n break;\n\n default:\n // e.g. middle\n textY = nodePos.y;\n }\n\n rs.labelX = textX;\n rs.labelY = textY;\n rstyle.labelX = textX;\n rstyle.labelY = textY;\n this.calculateLabelAngles(node);\n this.applyLabelDimensions(node);\n };\n\n var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) {\n var angle = Math.atan(dy / dx);\n\n if (dx === 0 && angle < 0) {\n angle = angle * -1;\n }\n\n return angle;\n };\n\n var lineAngle = function lineAngle(p0, p1) {\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n return lineAngleFromDelta(dx, dy);\n };\n\n var bezierAngle = function bezierAngle(p0, p1, p2, t) {\n var t0 = bound(0, t - 0.001, 1);\n var t1 = bound(0, t + 0.001, 1);\n var lp0 = qbezierPtAt(p0, p1, p2, t0);\n var lp1 = qbezierPtAt(p0, p1, p2, t1);\n return lineAngle(lp0, lp1);\n };\n\n BRp$9.recalculateEdgeLabelProjections = function (edge) {\n var p;\n var _p = edge._private;\n var rs = _p.rscratch;\n var r = this;\n var content = {\n mid: edge.pstyle('label').strValue,\n source: edge.pstyle('source-label').strValue,\n target: edge.pstyle('target-label').strValue\n };\n\n if (content.mid || content.source || content.target) ; else {\n return; // no labels => no calcs\n } // add center point to style so bounding box calculations can use it\n //\n\n\n p = {\n x: rs.midX,\n y: rs.midY\n };\n\n var setRs = function setRs(propName, prefix, value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n setPrefixedProperty(_p.rstyle, propName, prefix, value);\n };\n\n setRs('labelX', null, p.x);\n setRs('labelY', null, p.y);\n var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY);\n setRs('labelAutoAngle', null, midAngle);\n\n var createControlPointInfo = function createControlPointInfo() {\n if (createControlPointInfo.cache) {\n return createControlPointInfo.cache;\n } // use cache so only 1x per edge\n\n\n var ctrlpts = []; // store each ctrlpt info init\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n var p0 = {\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n };\n var p1 = {\n x: rs.allpts[i + 2],\n y: rs.allpts[i + 3]\n }; // ctrlpt\n\n var p2 = {\n x: rs.allpts[i + 4],\n y: rs.allpts[i + 5]\n };\n ctrlpts.push({\n p0: p0,\n p1: p1,\n p2: p2,\n startDist: 0,\n length: 0,\n segments: []\n });\n }\n\n var bpts = _p.rstyle.bezierPts;\n var nProjs = r.bezierProjPcts.length;\n\n function addSegment(cp, p0, p1, t0, t1) {\n var length = dist(p0, p1);\n var prevSegment = cp.segments[cp.segments.length - 1];\n var segment = {\n p0: p0,\n p1: p1,\n t0: t0,\n t1: t1,\n startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0,\n length: length\n };\n cp.segments.push(segment);\n cp.length += length;\n } // update each ctrlpt with segment info\n\n\n for (var _i = 0; _i < ctrlpts.length; _i++) {\n var cp = ctrlpts[_i];\n var prevCp = ctrlpts[_i - 1];\n\n if (prevCp) {\n cp.startDist = prevCp.startDist + prevCp.length;\n }\n\n addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first\n\n for (var j = 0; j < nProjs - 1; j++) {\n addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]);\n }\n\n addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last\n }\n\n return createControlPointInfo.cache = ctrlpts;\n };\n\n var calculateEndProjection = function calculateEndProjection(prefix) {\n var angle;\n var isSrc = prefix === 'source';\n\n if (!content[prefix]) {\n return;\n }\n\n var offset = edge.pstyle(prefix + '-text-offset').pfValue;\n\n switch (rs.edgeType) {\n case 'self':\n case 'compound':\n case 'bezier':\n case 'multibezier':\n {\n var cps = createControlPointInfo();\n var selected;\n var startDist = 0;\n var totalDist = 0; // find the segment we're on\n\n for (var i = 0; i < cps.length; i++) {\n var _cp = cps[isSrc ? i : cps.length - 1 - i];\n\n for (var j = 0; j < _cp.segments.length; j++) {\n var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j];\n var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1;\n startDist = totalDist;\n totalDist += _seg.length;\n\n if (totalDist >= offset || lastSeg) {\n selected = {\n cp: _cp,\n segment: _seg\n };\n break;\n }\n }\n\n if (selected) {\n break;\n }\n }\n\n var cp = selected.cp;\n var seg = selected.segment;\n var tSegment = (offset - startDist) / seg.length;\n var segDt = seg.t1 - seg.t0;\n var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment;\n t = bound(0, t, 1);\n p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t);\n angle = bezierAngle(cp.p0, cp.p1, cp.p2, t);\n break;\n }\n\n case 'straight':\n case 'segments':\n case 'haystack':\n {\n var d = 0,\n di,\n d0;\n var p0, p1;\n var l = rs.allpts.length;\n\n for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) {\n if (isSrc) {\n p0 = {\n x: rs.allpts[_i2],\n y: rs.allpts[_i2 + 1]\n };\n p1 = {\n x: rs.allpts[_i2 + 2],\n y: rs.allpts[_i2 + 3]\n };\n } else {\n p0 = {\n x: rs.allpts[l - 2 - _i2],\n y: rs.allpts[l - 1 - _i2]\n };\n p1 = {\n x: rs.allpts[l - 4 - _i2],\n y: rs.allpts[l - 3 - _i2]\n };\n }\n\n di = dist(p0, p1);\n d0 = d;\n d += di;\n\n if (d >= offset) {\n break;\n }\n }\n\n var pD = offset - d0;\n\n var _t = pD / di;\n\n _t = bound(0, _t, 1);\n p = lineAt(p0, p1, _t);\n angle = lineAngle(p0, p1);\n break;\n }\n }\n\n setRs('labelX', prefix, p.x);\n setRs('labelY', prefix, p.y);\n setRs('labelAutoAngle', prefix, angle);\n };\n\n calculateEndProjection('source');\n calculateEndProjection('target');\n this.applyLabelDimensions(edge);\n };\n\n BRp$9.applyLabelDimensions = function (ele) {\n this.applyPrefixedLabelDimensions(ele);\n\n if (ele.isEdge()) {\n this.applyPrefixedLabelDimensions(ele, 'source');\n this.applyPrefixedLabelDimensions(ele, 'target');\n }\n };\n\n BRp$9.applyPrefixedLabelDimensions = function (ele, prefix) {\n var _p = ele._private;\n var text = this.getLabelText(ele, prefix);\n var labelDims = this.calculateLabelDimensions(ele, text);\n var lineHeight = ele.pstyle('line-height').pfValue;\n var textWrap = ele.pstyle('text-wrap').strValue;\n var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || [];\n var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1);\n var normPerLineHeight = labelDims.height / numLines;\n var labelLineHeight = normPerLineHeight * lineHeight;\n var width = labelDims.width;\n var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight;\n setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight);\n };\n\n BRp$9.getLabelText = function (ele, prefix) {\n var _p = ele._private;\n var pfd = prefix ? prefix + '-' : '';\n var text = ele.pstyle(pfd + 'label').strValue;\n var textTransform = ele.pstyle('text-transform').value;\n\n var rscratch = function rscratch(propName, value) {\n if (value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n return value;\n } else {\n return getPrefixedProperty(_p.rscratch, propName, prefix);\n }\n }; // for empty text, skip all processing\n\n\n if (!text) {\n return '';\n }\n\n if (textTransform == 'none') ; else if (textTransform == 'uppercase') {\n text = text.toUpperCase();\n } else if (textTransform == 'lowercase') {\n text = text.toLowerCase();\n }\n\n var wrapStyle = ele.pstyle('text-wrap').value;\n\n if (wrapStyle === 'wrap') {\n var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before\n\n if (labelKey != null && rscratch('labelWrapKey') === labelKey) {\n return rscratch('labelWrapCachedText');\n }\n\n var zwsp = \"\\u200B\";\n var lines = text.split('\\n');\n var maxW = ele.pstyle('text-max-width').pfValue;\n var overflow = ele.pstyle('text-overflow-wrap').value;\n var overflowAny = overflow === 'anywhere';\n var wrappedLines = [];\n var wordsRegex = /[\\s\\u200b]+/;\n var wordSeparator = overflowAny ? '' : ' ';\n\n for (var l = 0; l < lines.length; l++) {\n var line = lines[l];\n var lineDims = this.calculateLabelDimensions(ele, line);\n var lineW = lineDims.width;\n\n if (overflowAny) {\n var processedLine = line.split('').join(zwsp);\n line = processedLine;\n }\n\n if (lineW > maxW) {\n // line is too long\n var words = line.split(wordsRegex);\n var subline = '';\n\n for (var w = 0; w < words.length; w++) {\n var word = words[w];\n var testLine = subline.length === 0 ? word : subline + wordSeparator + word;\n var testDims = this.calculateLabelDimensions(ele, testLine);\n var testW = testDims.width;\n\n if (testW <= maxW) {\n // word fits on current line\n subline += word + wordSeparator;\n } else {\n // word starts new line\n if (subline) {\n wrappedLines.push(subline);\n }\n\n subline = word + wordSeparator;\n }\n } // if there's remaining text, put it in a wrapped line\n\n\n if (!subline.match(/^[\\s\\u200b]+$/)) {\n wrappedLines.push(subline);\n }\n } else {\n // line is already short enough\n wrappedLines.push(line);\n }\n } // for\n\n\n rscratch('labelWrapCachedLines', wrappedLines);\n text = rscratch('labelWrapCachedText', wrappedLines.join('\\n'));\n rscratch('labelWrapKey', labelKey);\n } else if (wrapStyle === 'ellipsis') {\n var _maxW = ele.pstyle('text-max-width').pfValue;\n var ellipsized = '';\n var ellipsis = \"\\u2026\";\n var incLastCh = false;\n\n if (this.calculateLabelDimensions(ele, text).width < _maxW) {\n // the label already fits\n return text;\n }\n\n for (var i = 0; i < text.length; i++) {\n var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width;\n\n if (widthWithNextCh > _maxW) {\n break;\n }\n\n ellipsized += text[i];\n\n if (i === text.length - 1) {\n incLastCh = true;\n }\n }\n\n if (!incLastCh) {\n ellipsized += ellipsis;\n }\n\n return ellipsized;\n } // if ellipsize\n\n\n return text;\n };\n\n BRp$9.getLabelJustification = function (ele) {\n var justification = ele.pstyle('text-justification').strValue;\n var textHalign = ele.pstyle('text-halign').strValue;\n\n if (justification === 'auto') {\n if (ele.isNode()) {\n switch (textHalign) {\n case 'left':\n return 'right';\n\n case 'right':\n return 'left';\n\n default:\n return 'center';\n }\n } else {\n return 'center';\n }\n } else {\n return justification;\n }\n };\n\n BRp$9.calculateLabelDimensions = function (ele, text) {\n var r = this;\n var cacheKey = hashString(text, ele._private.labelDimsKey);\n var cache = r.labelDimCache || (r.labelDimCache = []);\n var existingVal = cache[cacheKey];\n\n if (existingVal != null) {\n return existingVal;\n }\n\n var padding = 0; // add padding around text dims, as the measurement isn't that accurate\n\n var fStyle = ele.pstyle('font-style').strValue;\n var size = ele.pstyle('font-size').pfValue;\n var family = ele.pstyle('font-family').strValue;\n var weight = ele.pstyle('font-weight').strValue;\n var canvas = this.labelCalcCanvas;\n var c2d = this.labelCalcCanvasContext;\n\n if (!canvas) {\n canvas = this.labelCalcCanvas = document.createElement('canvas');\n c2d = this.labelCalcCanvasContext = canvas.getContext('2d');\n var ds = canvas.style;\n ds.position = 'absolute';\n ds.left = '-9999px';\n ds.top = '-9999px';\n ds.zIndex = '-1';\n ds.visibility = 'hidden';\n ds.pointerEvents = 'none';\n }\n\n c2d.font = \"\".concat(fStyle, \" \").concat(weight, \" \").concat(size, \"px \").concat(family);\n var width = 0;\n var height = 0;\n var lines = text.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var metrics = c2d.measureText(line);\n var w = Math.ceil(metrics.width);\n var h = size;\n width = Math.max(w, width);\n height += h;\n }\n\n width += padding;\n height += padding;\n return cache[cacheKey] = {\n width: width,\n height: height\n };\n };\n\n BRp$9.calculateLabelAngle = function (ele, prefix) {\n var _p = ele._private;\n var rs = _p.rscratch;\n var isEdge = ele.isEdge();\n var prefixDash = prefix ? prefix + '-' : '';\n var rot = ele.pstyle(prefixDash + 'text-rotation');\n var rotStr = rot.strValue;\n\n if (rotStr === 'none') {\n return 0;\n } else if (isEdge && rotStr === 'autorotate') {\n return rs.labelAutoAngle;\n } else if (rotStr === 'autorotate') {\n return 0;\n } else {\n return rot.pfValue;\n }\n };\n\n BRp$9.calculateLabelAngles = function (ele) {\n var r = this;\n var isEdge = ele.isEdge();\n var _p = ele._private;\n var rs = _p.rscratch;\n rs.labelAngle = r.calculateLabelAngle(ele);\n\n if (isEdge) {\n rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source');\n rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target');\n }\n };\n\n var BRp$8 = {};\n var TOO_SMALL_CUT_RECT = 28;\n var warnedCutRect = false;\n\n BRp$8.getNodeShape = function (node) {\n var r = this;\n var shape = node.pstyle('shape').value;\n\n if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) {\n if (!warnedCutRect) {\n warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead');\n warnedCutRect = true;\n }\n\n return 'rectangle';\n }\n\n if (node.isParent()) {\n if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') {\n return shape;\n } else {\n return 'rectangle';\n }\n }\n\n if (shape === 'polygon') {\n var points = node.pstyle('shape-polygon-points').value;\n return r.nodeShapes.makePolygon(points).name;\n }\n\n return shape;\n };\n\n var BRp$7 = {};\n\n BRp$7.registerCalculationListeners = function () {\n var cy = this.cy;\n var elesToUpdate = cy.collection();\n var r = this;\n\n var enqueue = function enqueue(eles) {\n var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n elesToUpdate.merge(eles);\n\n if (dirtyStyleCaches) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n rstyle.clean = false;\n rstyle.cleanConnected = false;\n }\n }\n };\n\n r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) {\n var ele = e.target;\n enqueue(ele);\n }).on('style.* background.*', function onDirtyStyle(e) {\n var ele = e.target;\n enqueue(ele, false);\n });\n\n var updateEleCalcs = function updateEleCalcs(willDraw) {\n if (willDraw) {\n var fns = r.onUpdateEleCalcsFns; // because we need to have up-to-date style (e.g. stylesheet mappers)\n // before calculating rendered style (and pstyle might not be called yet)\n\n elesToUpdate.cleanStyle();\n\n for (var i = 0; i < elesToUpdate.length; i++) {\n var ele = elesToUpdate[i];\n var rstyle = ele._private.rstyle;\n\n if (ele.isNode() && !rstyle.cleanConnected) {\n enqueue(ele.connectedEdges());\n rstyle.cleanConnected = true;\n }\n }\n\n if (fns) {\n for (var _i = 0; _i < fns.length; _i++) {\n var fn = fns[_i];\n fn(willDraw, elesToUpdate);\n }\n }\n\n r.recalculateRenderedStyle(elesToUpdate);\n elesToUpdate = cy.collection();\n }\n };\n\n r.flushRenderedStyleQueue = function () {\n updateEleCalcs(true);\n };\n\n r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs);\n };\n\n BRp$7.onUpdateEleCalcs = function (fn) {\n var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [];\n fns.push(fn);\n };\n\n BRp$7.recalculateRenderedStyle = function (eles, useCache) {\n var isCleanConnected = function isCleanConnected(ele) {\n return ele._private.rstyle.cleanConnected;\n };\n\n var edges = [];\n var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox()\n\n if (this.destroyed) {\n return;\n } // use cache by default for perf\n\n\n if (useCache === undefined) {\n useCache = true;\n }\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes\n // (and a request for recalc may come in between frames)\n\n if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) {\n rstyle.clean = false;\n } // only update if dirty and in graph\n\n\n if (useCache && rstyle.clean || ele.removed()) {\n continue;\n } // only update if not display: none\n\n\n if (ele.pstyle('display').value === 'none') {\n continue;\n }\n\n if (_p.group === 'nodes') {\n nodes.push(ele);\n } else {\n // edges\n edges.push(ele);\n }\n\n rstyle.clean = true;\n } // update node data from projections\n\n\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _ele = nodes[_i2];\n var _p2 = _ele._private;\n var _rstyle = _p2.rstyle;\n\n var pos = _ele.position();\n\n this.recalculateNodeLabelProjection(_ele);\n _rstyle.nodeX = pos.x;\n _rstyle.nodeY = pos.y;\n _rstyle.nodeW = _ele.pstyle('width').pfValue;\n _rstyle.nodeH = _ele.pstyle('height').pfValue;\n }\n\n this.recalculateEdgeProjections(edges); // update edge data from projections\n\n for (var _i3 = 0; _i3 < edges.length; _i3++) {\n var _ele2 = edges[_i3];\n var _p3 = _ele2._private;\n var _rstyle2 = _p3.rstyle;\n var rs = _p3.rscratch; // update rstyle positions\n\n _rstyle2.srcX = rs.arrowStartX;\n _rstyle2.srcY = rs.arrowStartY;\n _rstyle2.tgtX = rs.arrowEndX;\n _rstyle2.tgtY = rs.arrowEndY;\n _rstyle2.midX = rs.midX;\n _rstyle2.midY = rs.midY;\n _rstyle2.labelAngle = rs.labelAngle;\n _rstyle2.sourceLabelAngle = rs.sourceLabelAngle;\n _rstyle2.targetLabelAngle = rs.targetLabelAngle;\n }\n };\n\n var BRp$6 = {};\n\n BRp$6.updateCachedGrabbedEles = function () {\n var eles = this.cachedZSortedEles;\n\n if (!eles) {\n // just let this be recalculated on the next z sort tick\n return;\n }\n\n eles.drag = [];\n eles.nondrag = [];\n var grabTargets = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n\n if (ele.grabbed() && !ele.isParent()) {\n grabTargets.push(ele);\n } else if (rs.inDragLayer) {\n eles.drag.push(ele);\n } else {\n eles.nondrag.push(ele);\n }\n } // put the grab target nodes last so it's on top of its neighbourhood\n\n\n for (var i = 0; i < grabTargets.length; i++) {\n var ele = grabTargets[i];\n eles.drag.push(ele);\n }\n };\n\n BRp$6.invalidateCachedZSortedEles = function () {\n this.cachedZSortedEles = null;\n };\n\n BRp$6.getCachedZSortedEles = function (forceRecalc) {\n if (forceRecalc || !this.cachedZSortedEles) {\n var eles = this.cy.mutableElements().toArray();\n eles.sort(zIndexSort);\n eles.interactive = eles.filter(function (ele) {\n return ele.interactive();\n });\n this.cachedZSortedEles = eles;\n this.updateCachedGrabbedEles();\n } else {\n eles = this.cachedZSortedEles;\n }\n\n return eles;\n };\n\n var BRp$5 = {};\n [BRp$e, BRp$d, BRp$c, BRp$b, BRp$a, BRp$9, BRp$8, BRp$7, BRp$6].forEach(function (props) {\n extend(BRp$5, props);\n });\n\n var BRp$4 = {};\n\n BRp$4.getCachedImage = function (url, crossOrigin, onLoad) {\n var r = this;\n var imageCache = r.imageCache = r.imageCache || {};\n var cache = imageCache[url];\n\n if (cache) {\n if (!cache.image.complete) {\n cache.image.addEventListener('load', onLoad);\n }\n\n return cache.image;\n } else {\n cache = imageCache[url] = imageCache[url] || {};\n var image = cache.image = new Image(); // eslint-disable-line no-undef\n\n image.addEventListener('load', onLoad);\n image.addEventListener('error', function () {\n image.error = true;\n }); // #1582 safari doesn't load data uris with crossOrigin properly\n // https://bugs.webkit.org/show_bug.cgi?id=123978\n\n var dataUriPrefix = 'data:';\n var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix;\n\n if (!isDataUri) {\n // if crossorigin is 'null'(stringified), then manually set it to null \n crossOrigin = crossOrigin === 'null' ? null : crossOrigin;\n image.crossOrigin = crossOrigin; // prevent tainted canvas\n }\n\n image.src = url;\n return image;\n }\n };\n\n var BRp$3 = {};\n /* global document, window, ResizeObserver, MutationObserver */\n\n BRp$3.registerBinding = function (target, event, handler, useCapture) {\n // eslint-disable-line no-unused-vars\n var args = Array.prototype.slice.apply(arguments, [1]); // copy\n\n var b = this.binder(target);\n return b.on.apply(b, args);\n };\n\n BRp$3.binder = function (tgt) {\n var r = this;\n var containerWindow = r.cy.window();\n var tgtIsDom = tgt === containerWindow || tgt === containerWindow.document || tgt === containerWindow.document.body || domElement(tgt);\n\n if (r.supportsPassiveEvents == null) {\n // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n return true;\n }\n });\n containerWindow.addEventListener('test', null, opts);\n } catch (err) {// not supported\n }\n\n r.supportsPassiveEvents = supportsPassive;\n }\n\n var on = function on(event, handler, useCapture) {\n var args = Array.prototype.slice.call(arguments);\n\n if (tgtIsDom && r.supportsPassiveEvents) {\n // replace useCapture w/ opts obj\n args[2] = {\n capture: useCapture != null ? useCapture : false,\n passive: false,\n once: false\n };\n }\n\n r.bindings.push({\n target: tgt,\n args: args\n });\n (tgt.addEventListener || tgt.on).apply(tgt, args);\n return this;\n };\n\n return {\n on: on,\n addEventListener: on,\n addListener: on,\n bind: on\n };\n };\n\n BRp$3.nodeIsDraggable = function (node) {\n return node && node.isNode() && !node.locked() && node.grabbable();\n };\n\n BRp$3.nodeIsGrabbable = function (node) {\n return this.nodeIsDraggable(node) && node.interactive();\n };\n\n BRp$3.load = function () {\n var r = this;\n var containerWindow = r.cy.window();\n\n var isSelected = function isSelected(ele) {\n return ele.selected();\n };\n\n var triggerEvents = function triggerEvents(target, names, e, position) {\n if (target == null) {\n target = r.cy;\n }\n\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n target.emit({\n originalEvent: e,\n type: name,\n position: position\n });\n }\n };\n\n var isMultSelKeyDown = function isMultSelKeyDown(e) {\n return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey\n };\n\n var allowPanningPassthrough = function allowPanningPassthrough(down, downs) {\n var allowPassthrough = true;\n\n if (r.cy.hasCompoundNodes() && down && down.pannable()) {\n // a grabbable compound node below the ele => no passthrough panning\n for (var i = 0; downs && i < downs.length; i++) {\n var down = downs[i]; //if any parent node in event hierarchy isn't pannable, reject passthrough\n\n if (down.isNode() && down.isParent() && !down.pannable()) {\n allowPassthrough = false;\n break;\n }\n }\n } else {\n allowPassthrough = true;\n }\n\n return allowPassthrough;\n };\n\n var setGrabbed = function setGrabbed(ele) {\n ele[0]._private.grabbed = true;\n };\n\n var setFreed = function setFreed(ele) {\n ele[0]._private.grabbed = false;\n };\n\n var setInDragLayer = function setInDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = true;\n };\n\n var setOutDragLayer = function setOutDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = false;\n };\n\n var setGrabTarget = function setGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = true;\n };\n\n var removeGrabTarget = function removeGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = false;\n };\n\n var addToDragList = function addToDragList(ele, opts) {\n var list = opts.addToList;\n var listHasEle = list.has(ele);\n\n if (!listHasEle && ele.grabbable() && !ele.locked()) {\n list.merge(ele);\n setGrabbed(ele);\n }\n }; // helper function to determine which child nodes and inner edges\n // of a compound node to be dragged as well as the grabbed and selected nodes\n\n\n var addDescendantsToDrag = function addDescendantsToDrag(node, opts) {\n if (!node.cy().hasCompoundNodes()) {\n return;\n }\n\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n\n var innerNodes = node.descendants();\n\n if (opts.inDragLayer) {\n innerNodes.forEach(setInDragLayer);\n innerNodes.connectedEdges().forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n addToDragList(innerNodes, opts);\n }\n }; // adds the given nodes and its neighbourhood to the drag layer\n\n\n var addNodesToDrag = function addNodesToDrag(nodes, opts) {\n opts = opts || {};\n var hasCompoundNodes = nodes.cy().hasCompoundNodes();\n\n if (opts.inDragLayer) {\n nodes.forEach(setInDragLayer);\n nodes.neighborhood().stdFilter(function (ele) {\n return !hasCompoundNodes || ele.isEdge();\n }).forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n\n addDescendantsToDrag(nodes, opts); // always add to drag\n // also add nodes and edges related to the topmost ancestor\n\n updateAncestorsInDragLayer(nodes, {\n inDragLayer: opts.inDragLayer\n });\n r.updateCachedGrabbedEles();\n };\n\n var addNodeToDrag = addNodesToDrag;\n\n var freeDraggedElements = function freeDraggedElements(grabbedEles) {\n if (!grabbedEles) {\n return;\n } // just go over all elements rather than doing a bunch of (possibly expensive) traversals\n\n\n r.getCachedZSortedEles().forEach(function (ele) {\n setFreed(ele);\n setOutDragLayer(ele);\n removeGrabTarget(ele);\n });\n r.updateCachedGrabbedEles();\n }; // helper function to determine which ancestor nodes and edges should go\n // to the drag layer (or should be removed from drag layer).\n\n\n var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n\n if (!node.cy().hasCompoundNodes()) {\n return;\n } // find top-level parent\n\n\n var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer\n\n if (parent.same(node)) {\n return;\n }\n\n var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants());\n var edges = nodes.connectedEdges();\n\n if (opts.inDragLayer) {\n edges.forEach(setInDragLayer);\n nodes.forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n };\n\n var blurActiveDomElement = function blurActiveDomElement() {\n if (document.activeElement != null && document.activeElement.blur != null) {\n document.activeElement.blur();\n }\n };\n\n var haveMutationsApi = typeof MutationObserver !== 'undefined';\n var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom\n\n if (haveMutationsApi) {\n r.removeObserver = new MutationObserver(function (mutns) {\n // eslint-disable-line no-undef\n for (var i = 0; i < mutns.length; i++) {\n var mutn = mutns[i];\n var rNodes = mutn.removedNodes;\n\n if (rNodes) {\n for (var j = 0; j < rNodes.length; j++) {\n var rNode = rNodes[j];\n\n if (rNode === r.container) {\n r.destroy();\n break;\n }\n }\n }\n }\n });\n\n if (r.container.parentNode) {\n r.removeObserver.observe(r.container.parentNode, {\n childList: true\n });\n }\n } else {\n r.registerBinding(r.container, 'DOMNodeRemoved', function (e) {\n // eslint-disable-line no-unused-vars\n r.destroy();\n });\n }\n\n var onResize = debounce_1(function () {\n r.cy.resize();\n }, 100);\n\n if (haveMutationsApi) {\n r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef\n\n r.styleObserver.observe(r.container, {\n attributes: true\n });\n } // auto resize\n\n\n r.registerBinding(containerWindow, 'resize', onResize); // eslint-disable-line no-undef\n\n if (haveResizeObserverApi) {\n r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef\n\n r.resizeObserver.observe(r.container);\n }\n\n var forEachUp = function forEachUp(domEle, fn) {\n while (domEle != null) {\n fn(domEle);\n domEle = domEle.parentNode;\n }\n };\n\n var invalidateCoords = function invalidateCoords() {\n r.invalidateContainerClientCoordsCache();\n };\n\n forEachUp(r.container, function (domEle) {\n r.registerBinding(domEle, 'transitionend', invalidateCoords);\n r.registerBinding(domEle, 'animationend', invalidateCoords);\n r.registerBinding(domEle, 'scroll', invalidateCoords);\n }); // stop right click menu from appearing on cy\n\n r.registerBinding(r.container, 'contextmenu', function (e) {\n e.preventDefault();\n });\n\n var inBoxSelection = function inBoxSelection() {\n return r.selection[4] !== 0;\n };\n\n var eventInContainer = function eventInContainer(e) {\n // save cycles if mouse events aren't to be captured\n var containerPageCoords = r.findContainerClientCoords();\n var x = containerPageCoords[0];\n var y = containerPageCoords[1];\n var width = containerPageCoords[2];\n var height = containerPageCoords[3];\n var positions = e.touches ? e.touches : [e];\n var atLeastOnePosInside = false;\n\n for (var i = 0; i < positions.length; i++) {\n var p = positions[i];\n\n if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) {\n atLeastOnePosInside = true;\n break;\n }\n }\n\n if (!atLeastOnePosInside) {\n return false;\n }\n\n var container = r.container;\n var target = e.target;\n var tParent = target.parentNode;\n var containerIsTarget = false;\n\n while (tParent) {\n if (tParent === container) {\n containerIsTarget = true;\n break;\n }\n\n tParent = tParent.parentNode;\n }\n\n if (!containerIsTarget) {\n return false;\n } // if target is outisde cy container, then this event is not for us\n\n\n return true;\n }; // Primary key\n\n\n r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) {\n if (!eventInContainer(e)) {\n return;\n }\n\n e.preventDefault();\n blurActiveDomElement();\n r.hoverData.capture = true;\n r.hoverData.which = e.which;\n var cy = r.cy;\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var select = r.selection;\n var nears = r.findNearestElements(pos[0], pos[1], true, false);\n var near = nears[0];\n var draggedElements = r.dragData.possibleDragElements;\n r.hoverData.mdownPos = pos;\n r.hoverData.mdownGPos = gpos;\n\n var checkForTaphold = function checkForTaphold() {\n r.hoverData.tapholdCancelled = false;\n clearTimeout(r.hoverData.tapholdTimeout);\n r.hoverData.tapholdTimeout = setTimeout(function () {\n if (r.hoverData.tapholdCancelled) {\n return;\n } else {\n var ele = r.hoverData.down;\n\n if (ele) {\n ele.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n } else {\n cy.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n }, r.tapholdDuration);\n }; // Right click button\n\n\n if (e.which == 3) {\n r.hoverData.cxtStarted = true;\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (near) {\n near.activate();\n near.emit(cxtEvt);\n r.hoverData.down = near;\n } else {\n cy.emit(cxtEvt);\n }\n\n r.hoverData.downTime = new Date().getTime();\n r.hoverData.cxtDragged = false; // Primary button\n } else if (e.which == 1) {\n if (near) {\n near.activate();\n } // Element dragging\n\n\n {\n // If something is under the cursor and it is draggable, prepare to grab it\n if (near != null) {\n if (r.nodeIsGrabbable(near)) {\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n };\n\n var triggerGrab = function triggerGrab(ele) {\n ele.emit(makeEvent('grab'));\n };\n\n setGrabTarget(near);\n\n if (!near.selected()) {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n addNodeToDrag(near, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon')).emit(makeEvent('grab'));\n } else {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n var selectedNodes = cy.$(function (ele) {\n return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon'));\n selectedNodes.forEach(triggerGrab);\n }\n\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n }\n\n r.hoverData.down = near;\n r.hoverData.downs = nears;\n r.hoverData.downTime = new Date().getTime();\n }\n triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n if (near == null) {\n select[4] = 1;\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n } else if (near.pannable()) {\n select[4] = 1; // for future pan\n }\n\n checkForTaphold();\n } // Initialize selection box coordinates\n\n\n select[0] = select[2] = pos[0];\n select[1] = select[3] = pos[1];\n }, false);\n r.registerBinding(containerWindow, 'mousemove', function mousemoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n\n if (!capture && !eventInContainer(e)) {\n return;\n }\n\n var preventDefault = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var mdownPos = r.hoverData.mdownPos;\n var mdownGPos = r.hoverData.mdownGPos;\n var select = r.selection;\n var near = null;\n\n if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) {\n near = r.findNearestElement(pos[0], pos[1], true, false);\n }\n\n var last = r.hoverData.last;\n var down = r.hoverData.down;\n var disp = [pos[0] - select[2], pos[1] - select[3]];\n var draggedElements = r.dragData.possibleDragElements;\n var isOverThresholdDrag;\n\n if (mdownGPos) {\n var dx = gpos[0] - mdownGPos[0];\n var dx2 = dx * dx;\n var dy = gpos[1] - mdownGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2;\n }\n\n var multSelKeyDown = isMultSelKeyDown(e);\n\n if (isOverThresholdDrag) {\n r.hoverData.tapholdCancelled = true;\n }\n\n var updateDragDelta = function updateDragDelta() {\n var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || [];\n\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n };\n\n preventDefault = true;\n triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n var goIntoBoxMode = function goIntoBoxMode() {\n r.data.bgActivePosistion = undefined;\n\n if (!r.hoverData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n\n select[4] = 1;\n r.hoverData.selecting = true;\n r.redrawHint('select', true);\n r.redraw();\n }; // trigger context drag if rmouse down\n\n\n if (r.hoverData.which === 3) {\n // but only if over threshold\n if (isOverThresholdDrag) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n r.hoverData.cxtDragged = true;\n\n if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) {\n if (r.hoverData.cxtOver) {\n r.hoverData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n\n r.hoverData.cxtOver = near;\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n } // Check if we are drag panning the entire graph\n\n } else if (r.hoverData.dragging) {\n preventDefault = true;\n\n if (cy.panningEnabled() && cy.userPanningEnabled()) {\n var deltaP;\n\n if (r.hoverData.justStartedPan) {\n var mdPos = r.hoverData.mdownPos;\n deltaP = {\n x: (pos[0] - mdPos[0]) * zoom,\n y: (pos[1] - mdPos[1]) * zoom\n };\n r.hoverData.justStartedPan = false;\n } else {\n deltaP = {\n x: disp[0] * zoom,\n y: disp[1] * zoom\n };\n }\n\n cy.panBy(deltaP);\n cy.emit('dragpan');\n r.hoverData.dragged = true;\n } // Needs reproject due to pan changing viewport\n\n\n pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much\n } else if (select[4] == 1 && (down == null || down.pannable())) {\n if (isOverThresholdDrag) {\n if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) {\n goIntoBoxMode();\n } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs);\n\n if (allowPassthrough) {\n r.hoverData.dragging = true;\n r.hoverData.justStartedPan = true;\n select[4] = 0;\n r.data.bgActivePosistion = array2point(mdownPos);\n r.redrawHint('select', true);\n r.redraw();\n }\n }\n\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n }\n } else {\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n\n if ((!down || !down.grabbed()) && near != last) {\n if (last) {\n triggerEvents(last, ['mouseout', 'tapdragout'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n\n if (near) {\n triggerEvents(near, ['mouseover', 'tapdragover'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n\n r.hoverData.last = near;\n }\n\n if (down) {\n if (isOverThresholdDrag) {\n // then we can take action\n if (cy.boxSelectionEnabled() && multSelKeyDown) {\n // then selection overrides\n if (down && down.grabbed()) {\n freeDraggedElements(draggedElements);\n down.emit('freeon');\n draggedElements.emit('free');\n\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n\n goIntoBoxMode();\n } else if (down && down.grabbed() && r.nodeIsDraggable(down)) {\n // drag node\n var justStartedDrag = !r.dragData.didDrag;\n\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n }\n\n r.dragData.didDrag = true; // indicate that we actually did drag the node\n // now, add the elements to the drag layer if not done already\n\n if (!r.hoverData.draggingEles) {\n addNodesToDrag(draggedElements, {\n inDragLayer: true\n });\n }\n\n var totalShift = {\n x: 0,\n y: 0\n };\n\n if (number$1(disp[0]) && number$1(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n\n if (justStartedDrag) {\n var dragDelta = r.hoverData.dragDelta;\n\n if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n\n r.hoverData.draggingEles = true;\n draggedElements.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n r.redraw();\n }\n } else {\n // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant\n updateDragDelta();\n }\n } // prevent the dragging from triggering text selection on the page\n\n\n preventDefault = true;\n }\n\n select[2] = pos[0];\n select[3] = pos[1];\n\n if (preventDefault) {\n if (e.stopPropagation) e.stopPropagation();\n if (e.preventDefault) e.preventDefault();\n return false;\n }\n }, false);\n var clickTimeout, didDoubleClick, prevClickTimeStamp;\n r.registerBinding(containerWindow, 'mouseup', function mouseupHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n\n if (!capture) {\n return;\n }\n\n r.hoverData.capture = false;\n var cy = r.cy;\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var select = r.selection;\n var near = r.findNearestElement(pos[0], pos[1], true, false);\n var draggedElements = r.dragData.possibleDragElements;\n var down = r.hoverData.down;\n var multSelKeyDown = isMultSelKeyDown(e);\n\n if (r.data.bgActivePosistion) {\n r.redrawHint('select', true);\n r.redraw();\n }\n\n r.hoverData.tapholdCancelled = true;\n r.data.bgActivePosistion = undefined; // not active bg now\n\n if (down) {\n down.unactivate();\n }\n\n if (r.hoverData.which === 3) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n if (!r.hoverData.cxtDragged) {\n var cxtTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtTap);\n } else {\n cy.emit(cxtTap);\n }\n }\n\n r.hoverData.cxtDragged = false;\n r.hoverData.which = null;\n } else if (r.hoverData.which === 1) {\n triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n if (!r.dragData.didDrag && // didn't move a node around\n !r.hoverData.dragged && // didn't pan\n !r.hoverData.selecting && // not box selection\n !r.hoverData.isOverThresholdDrag // didn't move too much\n ) {\n triggerEvents(down, [\"click\", \"tap\", \"vclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n didDoubleClick = false;\n\n if (e.timeStamp - prevClickTimeStamp <= cy.multiClickDebounceTime()) {\n clickTimeout && clearTimeout(clickTimeout);\n didDoubleClick = true;\n prevClickTimeStamp = null;\n triggerEvents(down, [\"dblclick\", \"dbltap\", \"vdblclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n } else {\n clickTimeout = setTimeout(function () {\n if (didDoubleClick) return;\n triggerEvents(down, [\"oneclick\", \"onetap\", \"voneclick\"], e, {\n x: pos[0],\n y: pos[1]\n });\n }, cy.multiClickDebounceTime());\n prevClickTimeStamp = e.timeStamp;\n }\n } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something\n\n\n if (down == null // not mousedown on node\n && !r.dragData.didDrag // didn't move the node around\n && !r.hoverData.selecting // not box selection\n && !r.hoverData.dragged // didn't pan\n && !isMultSelKeyDown(e)) {\n cy.$(isSelected).unselect(['tapunselect']);\n\n if (draggedElements.length > 0) {\n r.redrawHint('eles', true);\n }\n\n r.dragData.possibleDragElements = draggedElements = cy.collection();\n } // Single selection\n\n\n if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) {\n if (near != null && near._private.selectable) {\n if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) {\n if (near.selected()) {\n near.unselect(['tapunselect']);\n } else {\n near.select(['tapselect']);\n }\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(near).unselect(['tapunselect']);\n near.select(['tapselect']);\n }\n }\n\n r.redrawHint('eles', true);\n }\n }\n\n if (r.hoverData.selecting) {\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n r.redrawHint('select', true);\n\n if (box.length > 0) {\n r.redrawHint('eles', true);\n }\n\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n\n if (cy.selectionType() === 'additive') {\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(box).unselect();\n }\n\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n } // always need redraw in case eles unselectable\n\n\n r.redraw();\n } // Cancel drag pan\n\n\n if (r.hoverData.dragging) {\n r.hoverData.dragging = false;\n r.redrawHint('select', true);\n r.redrawHint('eles', true);\n r.redraw();\n }\n\n if (!select[4]) {\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n var downWasGrabbed = down && down.grabbed();\n freeDraggedElements(draggedElements);\n\n if (downWasGrabbed) {\n down.emit('freeon');\n draggedElements.emit('free');\n\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n }\n } // else not right mouse\n\n\n select[4] = 0;\n r.hoverData.down = null;\n r.hoverData.cxtStarted = false;\n r.hoverData.draggingEles = false;\n r.hoverData.selecting = false;\n r.hoverData.isOverThresholdDrag = false;\n r.dragData.didDrag = false;\n r.hoverData.dragged = false;\n r.hoverData.dragDelta = [];\n r.hoverData.mdownPos = null;\n r.hoverData.mdownGPos = null;\n }, false);\n\n var wheelHandler = function wheelHandler(e) {\n if (r.scrollingPage) {\n return;\n } // while scrolling, ignore wheel-to-zoom\n\n\n var cy = r.cy;\n var zoom = cy.zoom();\n var pan = cy.pan();\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y];\n\n if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) {\n // if pan dragging or cxt dragging, wheel movements make no zoom\n e.preventDefault();\n return;\n }\n\n if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) {\n e.preventDefault();\n r.data.wheelZooming = true;\n clearTimeout(r.data.wheelTimeout);\n r.data.wheelTimeout = setTimeout(function () {\n r.data.wheelZooming = false;\n r.redrawHint('eles', true);\n r.redraw();\n }, 150);\n var diff;\n\n if (e.deltaY != null) {\n diff = e.deltaY / -250;\n } else if (e.wheelDeltaY != null) {\n diff = e.wheelDeltaY / 1000;\n } else {\n diff = e.wheelDelta / 1000;\n }\n\n diff = diff * r.wheelSensitivity;\n var needsWheelFix = e.deltaMode === 1;\n\n if (needsWheelFix) {\n // fixes slow wheel events on ff/linux and ff/windows\n diff *= 33;\n }\n\n var newZoom = cy.zoom() * Math.pow(10, diff);\n\n if (e.type === 'gesturechange') {\n newZoom = r.gestureStartZoom * e.scale;\n }\n\n cy.zoom({\n level: newZoom,\n renderedPosition: {\n x: rpos[0],\n y: rpos[1]\n }\n });\n cy.emit(e.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom');\n }\n }; // Functions to help with whether mouse wheel should trigger zooming\n // --\n\n\n r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events\n // r.registerBinding(r.container, 'mousewheel', wheelHandler, true);\n // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true);\n // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox\n\n r.registerBinding(containerWindow, 'scroll', function scrollHandler(e) {\n // eslint-disable-line no-unused-vars\n r.scrollingPage = true;\n clearTimeout(r.scrollingPageTimeout);\n r.scrollingPageTimeout = setTimeout(function () {\n r.scrollingPage = false;\n }, 250);\n }, true); // desktop safari pinch to zoom start\n\n r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) {\n r.gestureStartZoom = r.cy.zoom();\n\n if (!r.hasTouchStarted) {\n // don't affect touch devices like iphone\n e.preventDefault();\n }\n }, true);\n r.registerBinding(r.container, 'gesturechange', function (e) {\n if (!r.hasTouchStarted) {\n // don't affect touch devices like iphone\n wheelHandler(e);\n }\n }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container\n // Handle mouseout on Cytoscape container\n\n r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom\n\n var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom\n\n var center1, modelCenter1; // center point on start pinch to zoom\n\n var offsetLeft, offsetTop;\n var containerWidth, containerHeight;\n var twoFingersStartInside;\n\n var distance = function distance(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n };\n\n var distanceSq = function distanceSq(x1, y1, x2, y2) {\n return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n };\n\n var touchstartHandler;\n r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) {\n r.hasTouchStarted = true;\n\n if (!eventInContainer(e)) {\n return;\n }\n\n blurActiveDomElement();\n r.touchData.capture = true;\n r.data.bgActivePosistion = undefined;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n } // record starting points for pinch-to-zoom\n\n\n if (e.touches[1]) {\n r.touchData.singleTouchMoved = true;\n freeDraggedElements(r.dragData.touchDragEles);\n var offsets = r.findContainerClientCoords();\n offsetLeft = offsets[0];\n offsetTop = offsets[1];\n containerWidth = offsets[2];\n containerHeight = offsets[3];\n f1x1 = e.touches[0].clientX - offsetLeft;\n f1y1 = e.touches[0].clientY - offsetTop;\n f2x1 = e.touches[1].clientX - offsetLeft;\n f2y1 = e.touches[1].clientY - offsetTop;\n twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight;\n var pan = cy.pan();\n var zoom = cy.zoom();\n distance1 = distance(f1x1, f1y1, f2x1, f2y1);\n distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1);\n center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2];\n modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap\n\n var cxtDistThreshold = 200;\n var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold;\n\n if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) {\n var near1 = r.findNearestElement(now[0], now[1], true, true);\n var near2 = r.findNearestElement(now[2], now[3], true, true);\n\n if (near1 && near1.isNode()) {\n near1.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near1;\n } else if (near2 && near2.isNode()) {\n near2.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near2;\n } else {\n cy.emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxt = true;\n r.touchData.cxtDragged = false;\n r.data.bgActivePosistion = undefined;\n r.redraw();\n return;\n }\n }\n\n if (e.touches[2]) {\n // ignore\n // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...)\n if (cy.boxSelectionEnabled()) {\n e.preventDefault();\n }\n } else if (e.touches[1]) ; else if (e.touches[0]) {\n var nears = r.findNearestElements(now[0], now[1], true, true);\n var near = nears[0];\n\n if (near != null) {\n near.activate();\n r.touchData.start = near;\n r.touchData.starts = nears;\n\n if (r.nodeIsGrabbable(near)) {\n var draggedEles = r.dragData.touchDragEles = cy.collection();\n var selectedNodes = null;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n\n if (near.selected()) {\n // reset drag elements, since near will be added again\n selectedNodes = cy.$(function (ele) {\n return ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedEles\n });\n } else {\n addNodeToDrag(near, {\n addToList: draggedEles\n });\n }\n\n setGrabTarget(near);\n\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: now[0],\n y: now[1]\n }\n };\n };\n\n near.emit(makeEvent('grabon'));\n\n if (selectedNodes) {\n selectedNodes.forEach(function (n) {\n n.emit(makeEvent('grab'));\n });\n } else {\n near.emit(makeEvent('grab'));\n }\n }\n }\n\n triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, {\n x: now[0],\n y: now[1]\n });\n\n if (near == null) {\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n } // Tap, taphold\n // -----\n\n\n r.touchData.singleTouchMoved = false;\n r.touchData.singleTouchStartTime = +new Date();\n clearTimeout(r.touchData.tapholdTimeout);\n r.touchData.tapholdTimeout = setTimeout(function () {\n if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect\n && !r.touchData.selecting // box selection shouldn't allow taphold through\n ) {\n triggerEvents(r.touchData.start, ['taphold'], e, {\n x: now[0],\n y: now[1]\n });\n }\n }, r.tapholdDuration);\n }\n\n if (e.touches.length >= 1) {\n var sPos = r.touchData.startPosition = [null, null, null, null, null, null];\n\n for (var i = 0; i < now.length; i++) {\n sPos[i] = earlier[i] = now[i];\n }\n\n var touch0 = e.touches[0];\n r.touchData.startGPosition = [touch0.clientX, touch0.clientY];\n }\n }, false);\n var touchmoveHandler;\n r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.touchData.capture;\n\n if (!capture && !eventInContainer(e)) {\n return;\n }\n\n var select = r.selection;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n var zoom = cy.zoom();\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n\n var startGPos = r.touchData.startGPosition;\n var isOverThresholdDrag;\n\n if (capture && e.touches[0] && startGPos) {\n var disp = [];\n\n for (var j = 0; j < now.length; j++) {\n disp[j] = now[j] - earlier[j];\n }\n\n var dx = e.touches[0].clientX - startGPos[0];\n var dx2 = dx * dx;\n var dy = e.touches[0].clientY - startGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n isOverThresholdDrag = dist2 >= r.touchTapThreshold2;\n } // context swipe cancelling\n\n\n if (capture && r.touchData.cxt) {\n e.preventDefault();\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 );\n\n var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2);\n var factorSq = distance2Sq / distance1Sq;\n var distThreshold = 150;\n var distThresholdSq = distThreshold * distThreshold;\n var factorThreshold = 1.5;\n var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases\n\n if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) {\n r.touchData.cxt = false;\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (r.touchData.start) {\n r.touchData.start.unactivate().emit(cxtEvt);\n r.touchData.start = null;\n } else {\n cy.emit(cxtEvt);\n }\n }\n } // context swipe\n\n\n if (capture && r.touchData.cxt) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n\n if (r.touchData.start) {\n r.touchData.start.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxtDragged = true;\n var near = r.findNearestElement(now[0], now[1], true, true);\n\n if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) {\n if (r.touchData.cxtOver) {\n r.touchData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n r.touchData.cxtOver = near;\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n } // box selection\n\n } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) {\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n this.lastThreeTouch = +new Date();\n\n if (!r.touchData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n r.touchData.selecting = true;\n r.touchData.didSelect = true;\n select[4] = 1;\n\n if (!select || select.length === 0 || select[0] === undefined) {\n select[0] = (now[0] + now[2] + now[4]) / 3;\n select[1] = (now[1] + now[3] + now[5]) / 3;\n select[2] = (now[0] + now[2] + now[4]) / 3 + 1;\n select[3] = (now[1] + now[3] + now[5]) / 3 + 1;\n } else {\n select[2] = (now[0] + now[2] + now[4]) / 3;\n select[3] = (now[1] + now[3] + now[5]) / 3;\n }\n\n r.redrawHint('select', true);\n r.redraw(); // pinch to zoom\n } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom\n && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) {\n // two fingers => pinch to zoom\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n\n if (draggedEles) {\n r.redrawHint('drag', true);\n\n for (var i = 0; i < draggedEles.length; i++) {\n var de_p = draggedEles[i]._private;\n de_p.grabbed = false;\n de_p.rscratch.inDragLayer = false;\n }\n }\n\n var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2\n\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop;\n var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 );\n // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );\n\n var factor = distance2 / distance1;\n\n if (twoFingersStartInside) {\n // delta finger1\n var df1x = f1x2 - f1x1;\n var df1y = f1y2 - f1y1; // delta finger 2\n\n var df2x = f2x2 - f2x1;\n var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement\n // i.e. so pinching cancels out and moving together pans\n\n var tx = (df1x + df2x) / 2;\n var ty = (df1y + df2y) / 2; // now calculate the zoom\n\n var zoom1 = cy.zoom();\n var zoom2 = zoom1 * factor;\n var pan1 = cy.pan(); // the model center point converted to the current rendered pos\n\n var ctrx = modelCenter1[0] * zoom1 + pan1.x;\n var ctry = modelCenter1[1] * zoom1 + pan1.y;\n var pan2 = {\n x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx,\n y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry\n }; // remove dragged eles\n\n if (_start && _start.active()) {\n var draggedEles = r.dragData.touchDragEles;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n\n _start.unactivate().emit('freeon');\n\n draggedEles.emit('free');\n\n if (r.dragData.didDrag) {\n _start.emit('dragfreeon');\n\n draggedEles.emit('dragfree');\n }\n }\n\n cy.viewport({\n zoom: zoom2,\n pan: pan2,\n cancelOnFailedZoom: true\n });\n cy.emit('pinchzoom');\n distance1 = distance2;\n f1x1 = f1x2;\n f1y1 = f1y2;\n f2x1 = f2x2;\n f2y1 = f2y2;\n r.pinching = true;\n } // Re-project\n\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning\n ) {\n var start = r.touchData.start;\n var last = r.touchData.last;\n var near;\n\n if (!r.hoverData.draggingEles && !r.swipePanning) {\n near = r.findNearestElement(now[0], now[1], true, true);\n }\n\n if (capture && start != null) {\n e.preventDefault();\n } // dragging nodes\n\n\n if (capture && start != null && r.nodeIsDraggable(start)) {\n if (isOverThresholdDrag) {\n // then dragging can happen\n var draggedEles = r.dragData.touchDragEles;\n var justStartedDrag = !r.dragData.didDrag;\n\n if (justStartedDrag) {\n addNodesToDrag(draggedEles, {\n inDragLayer: true\n });\n }\n\n r.dragData.didDrag = true;\n var totalShift = {\n x: 0,\n y: 0\n };\n\n if (number$1(disp[0]) && number$1(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n var dragDelta = r.touchData.dragDelta;\n\n if (dragDelta && number$1(dragDelta[0]) && number$1(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n\n r.hoverData.draggingEles = true;\n draggedEles.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n\n if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) {\n r.redrawHint('eles', true);\n }\n\n r.redraw();\n } else {\n // otherwise keep track of drag delta for later\n var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || [];\n\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n }\n } // touchmove\n\n\n {\n triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, {\n x: now[0],\n y: now[1]\n });\n\n if ((!start || !start.grabbed()) && near != last) {\n if (last) {\n last.emit({\n originalEvent: e,\n type: 'tapdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'tapdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n }\n\n r.touchData.last = near;\n } // check to cancel taphold\n\n if (capture) {\n for (var i = 0; i < now.length; i++) {\n if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) {\n r.touchData.singleTouchMoved = true;\n }\n }\n } // panning\n\n\n if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts);\n\n if (allowPassthrough) {\n e.preventDefault();\n\n if (!r.data.bgActivePosistion) {\n r.data.bgActivePosistion = array2point(r.touchData.startPosition);\n }\n\n if (r.swipePanning) {\n cy.panBy({\n x: disp[0] * zoom,\n y: disp[1] * zoom\n });\n cy.emit('dragpan');\n } else if (isOverThresholdDrag) {\n r.swipePanning = true;\n cy.panBy({\n x: dx * zoom,\n y: dy * zoom\n });\n cy.emit('dragpan');\n\n if (start) {\n start.unactivate();\n r.redrawHint('select', true);\n r.touchData.start = null;\n }\n }\n } // Re-project\n\n\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n }\n\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning\n\n\n if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n r.redraw();\n }\n }, false);\n var touchcancelHandler;\n r.registerBinding(containerWindow, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n r.touchData.capture = false;\n\n if (start) {\n start.unactivate();\n }\n });\n var touchendHandler, didDoubleTouch, touchTimeout, prevTouchTimeStamp;\n r.registerBinding(containerWindow, 'touchend', touchendHandler = function touchendHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n var capture = r.touchData.capture;\n\n if (capture) {\n if (e.touches.length === 0) {\n r.touchData.capture = false;\n }\n\n e.preventDefault();\n } else {\n return;\n }\n\n var select = r.selection;\n r.swipePanning = false;\n r.hoverData.draggingEles = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n\n if (start) {\n start.unactivate();\n }\n\n var ctxTapend;\n\n if (r.touchData.cxt) {\n ctxTapend = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (start) {\n start.emit(ctxTapend);\n } else {\n cy.emit(ctxTapend);\n }\n\n if (!r.touchData.cxtDragged) {\n var ctxTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (start) {\n start.emit(ctxTap);\n } else {\n cy.emit(ctxTap);\n }\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxt = false;\n r.touchData.start = null;\n r.redraw();\n return;\n } // no more box selection if we don't have three fingers\n\n\n if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) {\n r.touchData.selecting = false;\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n select[0] = undefined;\n select[1] = undefined;\n select[2] = undefined;\n select[3] = undefined;\n select[4] = 0;\n r.redrawHint('select', true);\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: now[0],\n y: now[1]\n }\n });\n\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n\n if (box.nonempty()) {\n r.redrawHint('eles', true);\n }\n\n r.redraw();\n }\n\n if (start != null) {\n start.unactivate();\n }\n\n if (e.touches[2]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n\n if (start != null) {\n var startWasGrabbed = start._private.grabbed;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n\n if (startWasGrabbed) {\n start.emit('freeon');\n draggedEles.emit('free');\n\n if (r.dragData.didDrag) {\n start.emit('dragfreeon');\n draggedEles.emit('dragfree');\n }\n }\n\n triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n start.unactivate();\n r.touchData.start = null;\n } else {\n var near = r.findNearestElement(now[0], now[1], true, true);\n triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n }\n\n var dx = r.touchData.startPosition[0] - now[0];\n var dx2 = dx * dx;\n var dy = r.touchData.startPosition[1] - now[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch\n\n if (!r.touchData.singleTouchMoved) {\n if (!start) {\n cy.$(':selected').unselect(['tapunselect']);\n }\n\n triggerEvents(start, ['tap', 'vclick'], e, {\n x: now[0],\n y: now[1]\n });\n didDoubleTouch = false;\n\n if (e.timeStamp - prevTouchTimeStamp <= cy.multiClickDebounceTime()) {\n touchTimeout && clearTimeout(touchTimeout);\n didDoubleTouch = true;\n prevTouchTimeStamp = null;\n triggerEvents(start, ['dbltap', 'vdblclick'], e, {\n x: now[0],\n y: now[1]\n });\n } else {\n touchTimeout = setTimeout(function () {\n if (didDoubleTouch) return;\n triggerEvents(start, ['onetap', 'voneclick'], e, {\n x: now[0],\n y: now[1]\n });\n }, cy.multiClickDebounceTime());\n prevTouchTimeStamp = e.timeStamp;\n }\n } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance\n\n\n if (start != null && !r.dragData.didDrag // didn't drag nodes around\n && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection\n ) {\n if (cy.selectionType() === 'single') {\n cy.$(isSelected).unmerge(start).unselect(['tapunselect']);\n start.select(['tapselect']);\n } else {\n if (start.selected()) {\n start.unselect(['tapunselect']);\n } else {\n start.select(['tapselect']);\n }\n }\n\n r.redrawHint('eles', true);\n }\n\n r.touchData.singleTouchMoved = true;\n }\n\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n }\n\n r.dragData.didDrag = false; // reset for next touchstart\n\n if (e.touches.length === 0) {\n r.touchData.dragDelta = [];\n r.touchData.startPosition = [null, null, null, null, null, null];\n r.touchData.startGPosition = null;\n r.touchData.didSelect = false;\n }\n\n if (e.touches.length < 2) {\n if (e.touches.length === 1) {\n // the old start global pos'n may not be the same finger that remains\n r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY];\n }\n\n r.pinching = false;\n r.redrawHint('eles', true);\n r.redraw();\n } //r.redraw();\n\n }, false); // fallback compatibility layer for ms pointer events\n\n if (typeof TouchEvent === 'undefined') {\n var pointers = [];\n\n var makeTouch = function makeTouch(e) {\n return {\n clientX: e.clientX,\n clientY: e.clientY,\n force: 1,\n identifier: e.pointerId,\n pageX: e.pageX,\n pageY: e.pageY,\n radiusX: e.width / 2,\n radiusY: e.height / 2,\n screenX: e.screenX,\n screenY: e.screenY,\n target: e.target\n };\n };\n\n var makePointer = function makePointer(e) {\n return {\n event: e,\n touch: makeTouch(e)\n };\n };\n\n var addPointer = function addPointer(e) {\n pointers.push(makePointer(e));\n };\n\n var removePointer = function removePointer(e) {\n for (var i = 0; i < pointers.length; i++) {\n var p = pointers[i];\n\n if (p.event.pointerId === e.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n };\n\n var updatePointer = function updatePointer(e) {\n var p = pointers.filter(function (p) {\n return p.event.pointerId === e.pointerId;\n })[0];\n p.event = e;\n p.touch = makeTouch(e);\n };\n\n var addTouchesToEvent = function addTouchesToEvent(e) {\n e.touches = pointers.map(function (p) {\n return p.touch;\n });\n };\n\n var pointerIsMouse = function pointerIsMouse(e) {\n return e.pointerType === 'mouse' || e.pointerType === 4;\n };\n\n r.registerBinding(r.container, 'pointerdown', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n e.preventDefault();\n addPointer(e);\n addTouchesToEvent(e);\n touchstartHandler(e);\n });\n r.registerBinding(r.container, 'pointerup', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n removePointer(e);\n addTouchesToEvent(e);\n touchendHandler(e);\n });\n r.registerBinding(r.container, 'pointercancel', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n removePointer(e);\n addTouchesToEvent(e);\n touchcancelHandler(e);\n });\n r.registerBinding(r.container, 'pointermove', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n e.preventDefault();\n updatePointer(e);\n addTouchesToEvent(e);\n touchmoveHandler(e);\n });\n }\n };\n\n var BRp$2 = {};\n\n BRp$2.generatePolygon = function (name, points) {\n return this.nodeShapes[name] = {\n renderer: this,\n name: name,\n points: points,\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding);\n }\n };\n };\n\n BRp$2.generateEllipse = function () {\n return this.nodeShapes['ellipse'] = {\n renderer: this,\n name: 'ellipse',\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return checkInEllipse(x, y, width, height, centerX, centerY, padding);\n }\n };\n };\n\n BRp$2.generateRoundPolygon = function (name, points) {\n // Pre-compute control points\n // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute\n // the unit vectors.\n // For simplicity the layout will be:\n // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ]\n var allPoints = new Array(points.length * 2);\n\n for (var i = 0; i < points.length / 2; i++) {\n var sourceIndex = i * 2;\n var destIndex = void 0;\n\n if (i < points.length / 2 - 1) {\n destIndex = (i + 1) * 2;\n } else {\n destIndex = 0;\n }\n\n allPoints[i * 4] = points[sourceIndex];\n allPoints[i * 4 + 1] = points[sourceIndex + 1];\n var xDest = points[destIndex] - points[sourceIndex];\n var yDest = points[destIndex + 1] - points[sourceIndex + 1];\n var norm = Math.sqrt(xDest * xDest + yDest * yDest);\n allPoints[i * 4 + 2] = xDest / norm;\n allPoints[i * 4 + 3] = yDest / norm;\n }\n\n return this.nodeShapes[name] = {\n renderer: this,\n name: name,\n points: allPoints,\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height);\n }\n };\n };\n\n BRp$2.generateRoundRectangle = function () {\n return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = {\n renderer: this,\n name: 'round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = cornerRadius * 2; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n } // Check top left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n } // Check top right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n } // Check bottom right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n } // Check bottom left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n return false;\n }\n };\n };\n\n BRp$2.generateCutRectangle = function () {\n return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = {\n renderer: this,\n name: 'cut-rectangle',\n cornerLength: getCutRectangleCornerLength(),\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) {\n var cl = this.cornerLength;\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5]\n\n return {\n topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl],\n topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl],\n bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl],\n bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl]\n };\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]);\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) {\n return true;\n }\n\n var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY);\n return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft);\n }\n };\n };\n\n BRp$2.generateBarrel = function () {\n return this.nodeShapes['barrel'] = {\n renderer: this,\n name: 'barrel',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n // use two fixed t values for the bezier curve approximation\n var t0 = 0.15;\n var t1 = 0.5;\n var t2 = 0.85;\n var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n\n var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {\n // approximate curve pts based on the two t values\n var m0 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t0);\n var m1 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t1);\n var m2 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t2);\n return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]];\n };\n\n var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft));\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) {\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh;\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset;\n var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5]\n\n var pts = {\n topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin],\n topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset],\n bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd],\n bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset]\n };\n pts.topLeft.isTop = true;\n pts.topRight.isTop = true;\n pts.bottomLeft.isBottom = true;\n pts.bottomRight.isBottom = true;\n return pts;\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) {\n return true;\n }\n\n var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY);\n\n var getCurveT = function getCurveT(x, y, curvePts) {\n var x0 = curvePts[4];\n var x1 = curvePts[2];\n var x2 = curvePts[0];\n var y0 = curvePts[5]; // var y1 = curvePts[ 3 ];\n\n var y2 = curvePts[1];\n var xMin = Math.min(x0, x2);\n var xMax = Math.max(x0, x2);\n var yMin = Math.min(y0, y2);\n var yMax = Math.max(y0, y2);\n\n if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) {\n var coeff = bezierPtsToQuadCoeff(x0, x1, x2);\n var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x);\n var validRoots = roots.filter(function (r) {\n return 0 <= r && r <= 1;\n });\n\n if (validRoots.length > 0) {\n return validRoots[0];\n }\n }\n\n return null;\n };\n\n var curveRegions = Object.keys(barrelCurvePts);\n\n for (var i = 0; i < curveRegions.length; i++) {\n var corner = curveRegions[i];\n var cornerPts = barrelCurvePts[corner];\n var t = getCurveT(x, y, cornerPts);\n\n if (t == null) {\n continue;\n }\n\n var y0 = cornerPts[5];\n var y1 = cornerPts[3];\n var y2 = cornerPts[1];\n var bezY = qbezierAt(y0, y1, y2, t);\n\n if (cornerPts.isTop && bezY <= y) {\n return true;\n }\n\n if (cornerPts.isBottom && y <= bezY) {\n return true;\n }\n }\n\n return false;\n }\n };\n };\n\n BRp$2.generateBottomRoundrectangle = function () {\n return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = {\n renderer: this,\n name: 'bottom-round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var topStartX = nodeX - (width / 2 + padding);\n var topStartY = nodeY - (height / 2 + padding);\n var topEndY = topStartY;\n var topEndX = nodeX + (width / 2 + padding);\n var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n\n if (topIntersections.length > 0) {\n return topIntersections;\n }\n\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = 2 * cornerRadius; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n } // check non-rounded top side\n\n\n var outerWidth = width / 2 + 2 * padding;\n var outerHeight = height / 2 + 2 * padding;\n var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight];\n\n if (pointInsidePolygonPoints(x, y, points)) {\n return true;\n } // Check bottom right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n } // Check bottom left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n return false;\n }\n };\n };\n\n BRp$2.registerNodeShapes = function () {\n var nodeShapes = this.nodeShapes = {};\n var renderer = this;\n this.generateEllipse();\n this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0));\n this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0));\n this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0));\n nodeShapes['square'] = nodeShapes['rectangle'];\n this.generateRoundRectangle();\n this.generateCutRectangle();\n this.generateBarrel();\n this.generateBottomRoundrectangle();\n {\n var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0];\n this.generatePolygon('diamond', diamondPoints);\n this.generateRoundPolygon('round-diamond', diamondPoints);\n }\n this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0));\n this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0));\n var star5Points = new Array(20);\n {\n var outerPoints = generateUnitNgonPoints(5, 0);\n var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller\n\n var innerRadius = 0.5 * (3 - Math.sqrt(5));\n innerRadius *= 1.57;\n\n for (var i = 0; i < innerPoints.length / 2; i++) {\n innerPoints[i * 2] *= innerRadius;\n innerPoints[i * 2 + 1] *= innerRadius;\n }\n\n for (var i = 0; i < 20 / 4; i++) {\n star5Points[i * 4] = outerPoints[i * 2];\n star5Points[i * 4 + 1] = outerPoints[i * 2 + 1];\n star5Points[i * 4 + 2] = innerPoints[i * 2];\n star5Points[i * 4 + 3] = innerPoints[i * 2 + 1];\n }\n }\n star5Points = fitPolygonToSquare(star5Points);\n this.generatePolygon('star', star5Points);\n this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]);\n this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]);\n this.generatePolygon('right-rhomboid', [-0.333, -1, 1, -1, 0.333, 1, -1, 1]);\n this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]);\n {\n var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1];\n this.generatePolygon('tag', tagPoints);\n this.generateRoundPolygon('round-tag', tagPoints);\n }\n\n nodeShapes.makePolygon = function (points) {\n // use caching on user-specified polygons so they are as fast as native shapes\n var key = points.join('$');\n var name = 'polygon-' + key;\n var shape;\n\n if (shape = this[name]) {\n // got cached shape\n return shape;\n } // create and cache new shape\n\n\n return renderer.generatePolygon(name, points);\n };\n };\n\n var BRp$1 = {};\n\n BRp$1.timeToRender = function () {\n return this.redrawTotalTime / this.redrawCount;\n };\n\n BRp$1.redraw = function (options) {\n options = options || staticEmptyObject();\n var r = this;\n\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = 0;\n }\n\n if (r.lastRedrawTime === undefined) {\n r.lastRedrawTime = 0;\n }\n\n if (r.lastDrawTime === undefined) {\n r.lastDrawTime = 0;\n }\n\n r.requestedFrame = true;\n r.renderOptions = options;\n };\n\n BRp$1.beforeRender = function (fn, priority) {\n // the renderer can't add tick callbacks when destroyed\n if (this.destroyed) {\n return;\n }\n\n if (priority == null) {\n error('Priority is not optional for beforeRender');\n }\n\n var cbs = this.beforeRenderCallbacks;\n cbs.push({\n fn: fn,\n priority: priority\n }); // higher priority callbacks executed first\n\n cbs.sort(function (a, b) {\n return b.priority - a.priority;\n });\n };\n\n var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) {\n var cbs = r.beforeRenderCallbacks;\n\n for (var i = 0; i < cbs.length; i++) {\n cbs[i].fn(willDraw, startTime);\n }\n };\n\n BRp$1.startRenderLoop = function () {\n var r = this;\n var cy = r.cy;\n\n if (r.renderLoopStarted) {\n return;\n } else {\n r.renderLoopStarted = true;\n }\n\n var renderFn = function renderFn(requestTime) {\n if (r.destroyed) {\n return;\n }\n\n if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) {\n beforeRenderCallbacks(r, true, requestTime);\n var startTime = performanceNow();\n r.render(r.renderOptions);\n var endTime = r.lastDrawTime = performanceNow();\n\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = endTime - startTime;\n }\n\n if (r.redrawCount === undefined) {\n r.redrawCount = 0;\n }\n\n r.redrawCount++;\n\n if (r.redrawTotalTime === undefined) {\n r.redrawTotalTime = 0;\n }\n\n var duration = endTime - startTime;\n r.redrawTotalTime += duration;\n r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily\n\n r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2;\n r.requestedFrame = false;\n } else {\n beforeRenderCallbacks(r, false, requestTime);\n }\n\n r.skipFrame = false;\n requestAnimationFrame(renderFn);\n };\n\n requestAnimationFrame(renderFn);\n };\n\n var BaseRenderer = function BaseRenderer(options) {\n this.init(options);\n };\n\n var BR = BaseRenderer;\n var BRp = BR.prototype;\n BRp.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl'];\n\n BRp.init = function (options) {\n var r = this;\n r.options = options;\n r.cy = options.cy;\n var ctr = r.container = options.cy.container();\n var containerWindow = r.cy.window(); // prepend a stylesheet in the head such that\n\n if (containerWindow) {\n var document = containerWindow.document;\n var head = document.head;\n var stylesheetId = '__________cytoscape_stylesheet';\n var className = '__________cytoscape_container';\n var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null;\n\n if (ctr.className.indexOf(className) < 0) {\n ctr.className = (ctr.className || '') + ' ' + className;\n }\n\n if (!stylesheetAlreadyExists) {\n var stylesheet = document.createElement('style');\n stylesheet.id = stylesheetId;\n stylesheet.textContent = '.' + className + ' { position: relative; }';\n head.insertBefore(stylesheet, head.children[0]); // first so lowest priority\n }\n\n var computedStyle = containerWindow.getComputedStyle(ctr);\n var position = computedStyle.getPropertyValue('position');\n\n if (position === 'static') {\n warn('A Cytoscape container has style position:static and so can not use UI extensions properly');\n }\n }\n\n r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag\n\n r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data\n\n r.hoverData = {\n down: null,\n last: null,\n downTime: null,\n triggerMode: null,\n dragging: false,\n initialPan: [null, null],\n capture: false\n };\n r.dragData = {\n possibleDragElements: []\n };\n r.touchData = {\n start: null,\n capture: false,\n // These 3 fields related to tap, taphold events\n startPosition: [null, null, null, null, null, null],\n singleTouchStartTime: null,\n singleTouchMoved: true,\n now: [null, null, null, null, null, null],\n earlier: [null, null, null, null, null, null]\n };\n r.redraws = 0;\n r.showFps = options.showFps;\n r.debug = options.debug;\n r.hideEdgesOnViewport = options.hideEdgesOnViewport;\n r.textureOnViewport = options.textureOnViewport;\n r.wheelSensitivity = options.wheelSensitivity;\n r.motionBlurEnabled = options.motionBlur; // on by default\n\n r.forcedPixelRatio = number$1(options.pixelRatio) ? options.pixelRatio : null;\n r.motionBlur = options.motionBlur; // for initial kick off\n\n r.motionBlurOpacity = options.motionBlurOpacity;\n r.motionBlurTransparency = 1 - r.motionBlurOpacity;\n r.motionBlurPxRatio = 1;\n r.mbPxRBlurry = 1; //0.8;\n\n r.minMbLowQualFrames = 4;\n r.fullQualityMb = false;\n r.clearedForMotionBlur = [];\n r.desktopTapThreshold = options.desktopTapThreshold;\n r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold;\n r.touchTapThreshold = options.touchTapThreshold;\n r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold;\n r.tapholdDuration = 500;\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.beforeRenderPriorities = {\n // higher priority execs before lower one\n animations: 400,\n eleCalcs: 300,\n eleTxrDeq: 200,\n lyrTxrDeq: 150,\n lyrTxrSkip: 100\n };\n r.registerNodeShapes();\n r.registerArrowShapes();\n r.registerCalculationListeners();\n };\n\n BRp.notify = function (eventName, eles) {\n var r = this;\n var cy = r.cy; // the renderer can't be notified after it's destroyed\n\n if (this.destroyed) {\n return;\n }\n\n if (eventName === 'init') {\n r.load();\n return;\n }\n\n if (eventName === 'destroy') {\n r.destroy();\n return;\n }\n\n if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') {\n r.invalidateCachedZSortedEles();\n }\n\n if (eventName === 'viewport') {\n r.redrawHint('select', true);\n }\n\n if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n }\n\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n this.startRenderLoop();\n this.redraw();\n };\n\n BRp.destroy = function () {\n var r = this;\n r.destroyed = true;\n r.cy.stopAnimationLoop();\n\n for (var i = 0; i < r.bindings.length; i++) {\n var binding = r.bindings[i];\n var b = binding;\n var tgt = b.target;\n (tgt.off || tgt.removeEventListener).apply(tgt, b.args);\n }\n\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.onUpdateEleCalcsFns = [];\n\n if (r.removeObserver) {\n r.removeObserver.disconnect();\n }\n\n if (r.styleObserver) {\n r.styleObserver.disconnect();\n }\n\n if (r.resizeObserver) {\n r.resizeObserver.disconnect();\n }\n\n if (r.labelCalcDiv) {\n try {\n document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef\n } catch (e) {// ie10 issue #1014\n }\n }\n };\n\n BRp.isHeadless = function () {\n return false;\n };\n\n [BRp$f, BRp$5, BRp$4, BRp$3, BRp$2, BRp$1].forEach(function (props) {\n extend(BRp, props);\n });\n\n var fullFpsTime = 1000 / 60; // assume 60 frames per second\n\n var defs = {\n setupDequeueing: function setupDequeueing(opts) {\n return function setupDequeueingImpl() {\n var self = this;\n var r = this.renderer;\n\n if (self.dequeueingSetup) {\n return;\n } else {\n self.dequeueingSetup = true;\n }\n\n var queueRedraw = debounce_1(function () {\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n }, opts.deqRedrawThreshold);\n\n var dequeue = function dequeue(willDraw, frameStartTime) {\n var startTime = performanceNow();\n var avgRenderTime = r.averageRedrawTime;\n var renderTime = r.lastRedrawTime;\n var deqd = [];\n var extent = r.cy.extent();\n var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style\n // queue won't automatically be flushed before dequeueing starts\n\n if (!willDraw) {\n r.flushRenderedStyleQueue();\n }\n\n while (true) {\n // eslint-disable-line no-constant-condition\n var now = performanceNow();\n var duration = now - startTime;\n var frameDuration = now - frameStartTime;\n\n if (renderTime < fullFpsTime) {\n // if we're rendering faster than the ideal fps, then do dequeueing\n // during all of the remaining frame time\n var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0);\n\n if (frameDuration >= opts.deqFastCost * timeAvailable) {\n break;\n }\n } else {\n if (willDraw) {\n if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) {\n break;\n }\n } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) {\n break;\n }\n }\n\n var thisDeqd = opts.deq(self, pixelRatio, extent);\n\n if (thisDeqd.length > 0) {\n for (var i = 0; i < thisDeqd.length; i++) {\n deqd.push(thisDeqd[i]);\n }\n } else {\n break;\n }\n } // callbacks on dequeue\n\n\n if (deqd.length > 0) {\n opts.onDeqd(self, deqd);\n\n if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) {\n queueRedraw();\n }\n }\n };\n\n var priority = opts.priority || noop$1;\n r.beforeRender(dequeue, priority(self));\n };\n }\n };\n\n // Uses keys so elements may share the same cache.\n\n var ElementTextureCacheLookup = /*#__PURE__*/function () {\n function ElementTextureCacheLookup(getKey) {\n var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify;\n\n _classCallCheck(this, ElementTextureCacheLookup);\n\n this.idsByKey = new Map$2();\n this.keyForId = new Map$2();\n this.cachesByLvl = new Map$2();\n this.lvls = [];\n this.getKey = getKey;\n this.doesEleInvalidateKey = doesEleInvalidateKey;\n }\n\n _createClass(ElementTextureCacheLookup, [{\n key: \"getIdsFor\",\n value: function getIdsFor(key) {\n if (key == null) {\n error(\"Can not get id list for null key\");\n }\n\n var idsByKey = this.idsByKey;\n var ids = this.idsByKey.get(key);\n\n if (!ids) {\n ids = new Set$1();\n idsByKey.set(key, ids);\n }\n\n return ids;\n }\n }, {\n key: \"addIdForKey\",\n value: function addIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key).add(id);\n }\n }\n }, {\n key: \"deleteIdForKey\",\n value: function deleteIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key)[\"delete\"](id);\n }\n }\n }, {\n key: \"getNumberOfIdsForKey\",\n value: function getNumberOfIdsForKey(key) {\n if (key == null) {\n return 0;\n } else {\n return this.getIdsFor(key).size;\n }\n }\n }, {\n key: \"updateKeyMappingFor\",\n value: function updateKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var currKey = this.getKey(ele);\n this.deleteIdForKey(prevKey, id);\n this.addIdForKey(currKey, id);\n this.keyForId.set(id, currKey);\n }\n }, {\n key: \"deleteKeyMappingFor\",\n value: function deleteKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n this.deleteIdForKey(prevKey, id);\n this.keyForId[\"delete\"](id);\n }\n }, {\n key: \"keyHasChangedFor\",\n value: function keyHasChangedFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var newKey = this.getKey(ele);\n return prevKey !== newKey;\n }\n }, {\n key: \"isInvalid\",\n value: function isInvalid(ele) {\n return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele);\n }\n }, {\n key: \"getCachesAt\",\n value: function getCachesAt(lvl) {\n var cachesByLvl = this.cachesByLvl,\n lvls = this.lvls;\n var caches = cachesByLvl.get(lvl);\n\n if (!caches) {\n caches = new Map$2();\n cachesByLvl.set(lvl, caches);\n lvls.push(lvl);\n }\n\n return caches;\n }\n }, {\n key: \"getCache\",\n value: function getCache(key, lvl) {\n return this.getCachesAt(lvl).get(key);\n }\n }, {\n key: \"get\",\n value: function get(ele, lvl) {\n var key = this.getKey(ele);\n var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys\n\n if (cache != null) {\n this.updateKeyMappingFor(ele);\n }\n\n return cache;\n }\n }, {\n key: \"getForCachedKey\",\n value: function getForCachedKey(ele, lvl) {\n var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key\n\n var cache = this.getCache(key, lvl);\n return cache;\n }\n }, {\n key: \"hasCache\",\n value: function hasCache(key, lvl) {\n return this.getCachesAt(lvl).has(key);\n }\n }, {\n key: \"has\",\n value: function has(ele, lvl) {\n var key = this.getKey(ele);\n return this.hasCache(key, lvl);\n }\n }, {\n key: \"setCache\",\n value: function setCache(key, lvl, cache) {\n cache.key = key;\n this.getCachesAt(lvl).set(key, cache);\n }\n }, {\n key: \"set\",\n value: function set(ele, lvl, cache) {\n var key = this.getKey(ele);\n this.setCache(key, lvl, cache);\n this.updateKeyMappingFor(ele);\n }\n }, {\n key: \"deleteCache\",\n value: function deleteCache(key, lvl) {\n this.getCachesAt(lvl)[\"delete\"](key);\n }\n }, {\n key: \"delete\",\n value: function _delete(ele, lvl) {\n var key = this.getKey(ele);\n this.deleteCache(key, lvl);\n }\n }, {\n key: \"invalidateKey\",\n value: function invalidateKey(key) {\n var _this = this;\n\n this.lvls.forEach(function (lvl) {\n return _this.deleteCache(key, lvl);\n });\n } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key)\n\n }, {\n key: \"invalidate\",\n value: function invalidate(ele) {\n var id = ele.id();\n var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key)\n\n this.deleteKeyMappingFor(ele);\n var entireKeyInvalidated = this.doesEleInvalidateKey(ele);\n\n if (entireKeyInvalidated) {\n // clear mapping for current key\n this.invalidateKey(key);\n }\n\n return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0;\n }\n }]);\n\n return ElementTextureCacheLookup;\n }();\n\n var minTxrH = 25; // the size of the texture cache for small height eles (special case)\n\n var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up\n\n var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render\n\n var maxLvl$1 = 3; // when larger than this scale just render directly (caching is not helpful)\n\n var maxZoom$1 = 7.99; // beyond this zoom level, layered textures are not used\n\n var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps\n\n var defTxrWidth = 1024; // default/minimum texture width\n\n var maxTxrW = 1024; // the maximum width of a texture\n\n var maxTxrH = 1024; // the maximum height of a texture\n\n var minUtility = 0.2; // if usage of texture is less than this, it is retired\n\n var maxFullness = 0.8; // fullness of texture after which queue removal is checked\n\n var maxFullnessChecks = 10; // dequeued after this many checks\n\n var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\n\n var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time\n\n var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\n\n var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps\n\n var deqRedrawThreshold$1 = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\n\n var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch\n\n var getTxrReasons = {\n dequeue: 'dequeue',\n downscale: 'downscale',\n highQuality: 'highQuality'\n };\n var initDefaults = defaults$g({\n getKey: null,\n doesEleInvalidateKey: falsify,\n drawElement: null,\n getBoundingBox: null,\n getRotationPoint: null,\n getRotationOffset: null,\n isVisible: trueify,\n allowEdgeTxrCaching: true,\n allowParentTxrCaching: true\n });\n\n var ElementTextureCache = function ElementTextureCache(renderer, initOptions) {\n var self = this;\n self.renderer = renderer;\n self.onDequeues = [];\n var opts = initDefaults(initOptions);\n extend(self, opts);\n self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey);\n self.setupDequeueing();\n };\n\n var ETCp = ElementTextureCache.prototype;\n ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed\n\n ETCp.getTextureQueue = function (txrH) {\n var self = this;\n self.eleImgCaches = self.eleImgCaches || {};\n return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || [];\n }; // the list of usused textures which can be recycled (in use in texture queue)\n\n\n ETCp.getRetiredTextureQueue = function (txrH) {\n var self = this;\n var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {};\n var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || [];\n return rtxtrQ;\n }; // queue of element draw requests at different scale levels\n\n\n ETCp.getElementQueue = function () {\n var self = this;\n var q = self.eleCacheQueue = self.eleCacheQueue || new heap(function (a, b) {\n return b.reqs - a.reqs;\n });\n return q;\n }; // queue of element draw requests at different scale levels (element id lookup)\n\n\n ETCp.getElementKeyToQueue = function () {\n var self = this;\n var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {};\n return k2q;\n };\n\n ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) {\n var self = this;\n var r = this.renderer;\n var zoom = r.cy.zoom();\n var lookup = this.lookup;\n\n if (!bb || bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible() || ele.removed()) {\n return null;\n }\n\n if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) {\n return null;\n }\n\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n }\n\n if (lvl < minLvl$1) {\n lvl = minLvl$1;\n } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) {\n return null;\n }\n\n var scale = Math.pow(2, lvl);\n var eleScaledH = bb.h * scale;\n var eleScaledW = bb.w * scale;\n var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale);\n\n if (!this.isVisible(ele, scaledLabelShown)) {\n return null;\n }\n\n var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric\n\n if (eleCache && eleCache.invalidated) {\n eleCache.invalidated = false;\n eleCache.texture.invalidatedWidth -= eleCache.width;\n }\n\n if (eleCache) {\n return eleCache;\n }\n\n var txrH; // which texture height this ele belongs to\n\n if (eleScaledH <= minTxrH) {\n txrH = minTxrH;\n } else if (eleScaledH <= txrStepH) {\n txrH = txrStepH;\n } else {\n txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH;\n }\n\n if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) {\n return null; // caching large elements is not efficient\n }\n\n var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end\n\n var txr = txrQ[txrQ.length - 2];\n\n var addNewTxr = function addNewTxr() {\n return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW);\n }; // try the last one if there is no second last one\n\n\n if (!txr) {\n txr = txrQ[txrQ.length - 1];\n } // if the last one doesn't exist, we need a first one\n\n\n if (!txr) {\n txr = addNewTxr();\n } // if there's no room in the current texture, we need a new one\n\n\n if (txr.width - txr.usedWidth < eleScaledW) {\n txr = addNewTxr();\n }\n\n var scalableFrom = function scalableFrom(otherCache) {\n return otherCache && otherCache.scaledLabelShown === scaledLabelShown;\n };\n\n var deqing = reason && reason === getTxrReasons.dequeue;\n var highQualityReq = reason && reason === getTxrReasons.highQuality;\n var downscaleReq = reason && reason === getTxrReasons.downscale;\n var higherCache; // the nearest cache with a higher level\n\n for (var l = lvl + 1; l <= maxLvl$1; l++) {\n var c = lookup.get(ele, l);\n\n if (c) {\n higherCache = c;\n break;\n }\n }\n\n var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null;\n\n var downscale = function downscale() {\n txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH);\n }; // reset ele area in texture\n\n\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH);\n\n if (scalableFrom(oneUpCache)) {\n // then we can relatively cheaply rescale the existing image w/o rerendering\n downscale();\n } else if (scalableFrom(higherCache)) {\n // then use the higher cache for now and queue the next level down\n // to cheaply scale towards the smaller level\n if (highQualityReq) {\n for (var _l = higherCache.level; _l > lvl; _l--) {\n oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale);\n }\n\n downscale();\n } else {\n self.queueElement(ele, higherCache.level - 1);\n return higherCache;\n }\n } else {\n var lowerCache; // the nearest cache with a lower level\n\n if (!deqing && !highQualityReq && !downscaleReq) {\n for (var _l2 = lvl - 1; _l2 >= minLvl$1; _l2--) {\n var _c = lookup.get(ele, _l2);\n\n if (_c) {\n lowerCache = _c;\n break;\n }\n }\n }\n\n if (scalableFrom(lowerCache)) {\n // then use the lower quality cache for now and queue the better one for later\n self.queueElement(ele, lvl);\n return lowerCache;\n }\n\n txr.context.translate(txr.usedWidth, 0);\n txr.context.scale(scale, scale);\n this.drawElement(txr.context, ele, bb, scaledLabelShown, false);\n txr.context.scale(1 / scale, 1 / scale);\n txr.context.translate(-txr.usedWidth, 0);\n }\n\n eleCache = {\n x: txr.usedWidth,\n texture: txr,\n level: lvl,\n scale: scale,\n width: eleScaledW,\n height: eleScaledH,\n scaledLabelShown: scaledLabelShown\n };\n txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing);\n txr.eleCaches.push(eleCache);\n lookup.set(ele, lvl, eleCache);\n self.checkTextureFullness(txr);\n return eleCache;\n };\n\n ETCp.invalidateElements = function (eles) {\n for (var i = 0; i < eles.length; i++) {\n this.invalidateElement(eles[i]);\n }\n };\n\n ETCp.invalidateElement = function (ele) {\n var self = this;\n var lookup = self.lookup;\n var caches = [];\n var invalid = lookup.isInvalid(ele);\n\n if (!invalid) {\n return; // override the invalidation request if the element key has not changed\n }\n\n for (var lvl = minLvl$1; lvl <= maxLvl$1; lvl++) {\n var cache = lookup.getForCachedKey(ele, lvl);\n\n if (cache) {\n caches.push(cache);\n }\n }\n\n var noOtherElesUseCache = lookup.invalidate(ele);\n\n if (noOtherElesUseCache) {\n for (var i = 0; i < caches.length; i++) {\n var _cache = caches[i];\n var txr = _cache.texture; // remove space from the texture it belongs to\n\n txr.invalidatedWidth += _cache.width; // mark the cache as invalidated\n\n _cache.invalidated = true; // retire the texture if its utility is low\n\n self.checkTextureUtility(txr);\n }\n } // remove from queue since the old req was for the old state\n\n\n self.removeFromQueue(ele);\n };\n\n ETCp.checkTextureUtility = function (txr) {\n // invalidate all entries in the cache if the cache size is small\n if (txr.invalidatedWidth >= minUtility * txr.width) {\n this.retireTexture(txr);\n }\n };\n\n ETCp.checkTextureFullness = function (txr) {\n // if texture has been mostly filled and passed over several times, remove\n // it from the queue so we don't need to waste time looking at it to put new things\n var self = this;\n var txrQ = self.getTextureQueue(txr.height);\n\n if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) {\n removeFromArray(txrQ, txr);\n } else {\n txr.fullnessChecks++;\n }\n };\n\n ETCp.retireTexture = function (txr) {\n var self = this;\n var txrH = txr.height;\n var txrQ = self.getTextureQueue(txrH);\n var lookup = this.lookup; // retire the texture from the active / searchable queue:\n\n removeFromArray(txrQ, txr);\n txr.retired = true; // remove the refs from the eles to the caches:\n\n var eleCaches = txr.eleCaches;\n\n for (var i = 0; i < eleCaches.length; i++) {\n var eleCache = eleCaches[i];\n lookup.deleteCache(eleCache.key, eleCache.level);\n }\n\n clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future:\n\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n rtxtrQ.push(txr);\n };\n\n ETCp.addTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var txr = {};\n txrQ.push(txr);\n txr.eleCaches = [];\n txr.height = txrH;\n txr.width = Math.max(defTxrWidth, minW);\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height);\n txr.context = txr.canvas.getContext('2d');\n return txr;\n };\n\n ETCp.recycleTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n\n for (var i = 0; i < rtxtrQ.length; i++) {\n var txr = rtxtrQ[i];\n\n if (txr.width >= minW) {\n txr.retired = false;\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n clearArray(txr.eleCaches);\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(0, 0, txr.width, txr.height);\n removeFromArray(rtxtrQ, txr);\n txrQ.push(txr);\n return txr;\n }\n }\n };\n\n ETCp.queueElement = function (ele, lvl) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var existingReq = k2q[key];\n\n if (existingReq) {\n // use the max lvl b/c in between lvls are cheap to make\n existingReq.level = Math.max(existingReq.level, lvl);\n existingReq.eles.merge(ele);\n existingReq.reqs++;\n q.updateItem(existingReq);\n } else {\n var req = {\n eles: ele.spawn().merge(ele),\n level: lvl,\n reqs: 1,\n key: key\n };\n q.push(req);\n k2q[key] = req;\n }\n };\n\n ETCp.dequeue = function (pxRatio\n /*, extent*/\n ) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var dequeued = [];\n var lookup = self.lookup;\n\n for (var i = 0; i < maxDeqSize$1; i++) {\n if (q.size() > 0) {\n var req = q.pop();\n var key = req.key;\n var ele = req.eles[0]; // all eles have the same key\n\n var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup\n\n k2q[key] = null; // dequeueing isn't necessary with an existing cache\n\n if (cacheExists) {\n continue;\n }\n\n dequeued.push(req);\n var bb = self.getBoundingBox(ele);\n self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue);\n } else {\n break;\n }\n }\n\n return dequeued;\n };\n\n ETCp.removeFromQueue = function (ele) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var req = k2q[key];\n\n if (req != null) {\n if (req.eles.length === 1) {\n // remove if last ele in the req\n // bring to front of queue\n req.reqs = MAX_INT$1;\n q.updateItem(req);\n q.pop(); // remove from queue\n\n k2q[key] = null; // remove from lookup map\n } else {\n // otherwise just remove ele from req\n req.eles.unmerge(ele);\n }\n }\n };\n\n ETCp.onDequeue = function (fn) {\n this.onDequeues.push(fn);\n };\n\n ETCp.offDequeue = function (fn) {\n removeFromArray(this.onDequeues, fn);\n };\n\n ETCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold$1,\n deqCost: deqCost$1,\n deqAvgCost: deqAvgCost$1,\n deqNoDrawCost: deqNoDrawCost$1,\n deqFastCost: deqFastCost$1,\n deq: function deq(self, pxRatio, extent) {\n return self.dequeue(pxRatio, extent);\n },\n onDeqd: function onDeqd(self, deqd) {\n for (var i = 0; i < self.onDequeues.length; i++) {\n var fn = self.onDequeues[i];\n fn(deqd);\n }\n },\n shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) {\n for (var i = 0; i < deqd.length; i++) {\n var eles = deqd[i].eles;\n\n for (var j = 0; j < eles.length; j++) {\n var bb = eles[j].boundingBox();\n\n if (boundingBoxesIntersect(bb, extent)) {\n return true;\n }\n }\n }\n\n return false;\n },\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.eleTxrDeq;\n }\n });\n\n var defNumLayers = 1; // default number of layers to use\n\n var minLvl = -4; // when scaling smaller than that we don't need to re-render\n\n var maxLvl = 2; // when larger than this scale just render directly (caching is not helpful)\n\n var maxZoom = 3.99; // beyond this zoom level, layered textures are not used\n\n var deqRedrawThreshold = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\n\n var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates\n\n var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\n\n var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time\n\n var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\n\n var deqFastCost = 0.9; // % of frame time to be used when >60fps\n\n var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch\n\n var invalidThreshold = 250; // time threshold for disabling b/c of invalidations\n\n var maxLayerArea = 4000 * 4000; // layers can't be bigger than this\n\n var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm)\n // var log = function(){ console.log.apply( console, arguments ); };\n\n var LayeredTextureCache = function LayeredTextureCache(renderer) {\n var self = this;\n var r = self.renderer = renderer;\n var cy = r.cy;\n self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]\n\n self.firstGet = true;\n self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;\n self.skipping = false;\n self.eleTxrDeqs = cy.collection();\n self.scheduleElementRefinement = debounce_1(function () {\n self.refineElementTextures(self.eleTxrDeqs);\n self.eleTxrDeqs.unmerge(self.eleTxrDeqs);\n }, refineEleDebounceTime);\n r.beforeRender(function (willDraw, now) {\n if (now - self.lastInvalidationTime <= invalidThreshold) {\n self.skipping = true;\n } else {\n self.skipping = false;\n }\n }, r.beforeRenderPriorities.lyrTxrSkip);\n\n var qSort = function qSort(a, b) {\n return b.reqs - a.reqs;\n };\n\n self.layersQueue = new heap(qSort);\n self.setupDequeueing();\n };\n\n var LTCp = LayeredTextureCache.prototype;\n var layerIdPool = 0;\n var MAX_INT = Math.pow(2, 53) - 1;\n\n LTCp.makeLayer = function (bb, lvl) {\n var scale = Math.pow(2, lvl);\n var w = Math.ceil(bb.w * scale);\n var h = Math.ceil(bb.h * scale);\n var canvas = this.renderer.makeOffscreenCanvas(w, h);\n var layer = {\n id: layerIdPool = ++layerIdPool % MAX_INT,\n bb: bb,\n level: lvl,\n width: w,\n height: h,\n canvas: canvas,\n context: canvas.getContext('2d'),\n eles: [],\n elesQueue: [],\n reqs: 0\n }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level);\n\n var cxt = layer.context;\n var dx = -layer.bb.x1;\n var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles)\n\n cxt.scale(scale, scale);\n cxt.translate(dx, dy);\n return layer;\n };\n\n LTCp.getLayers = function (eles, pxRatio, lvl) {\n var self = this;\n var r = self.renderer;\n var cy = r.cy;\n var zoom = cy.zoom();\n var firstGet = self.firstGet;\n self.firstGet = false; // log('--\\nget layers with %s eles', eles.length);\n //log eles.map(function(ele){ return ele.id() }) );\n\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n\n if (lvl < minLvl) {\n lvl = minLvl;\n } else if (zoom >= maxZoom || lvl > maxLvl) {\n return null;\n }\n }\n\n self.validateLayersElesOrdering(lvl, eles);\n var layersByLvl = self.layersByLevel;\n var scale = Math.pow(2, lvl);\n var layers = layersByLvl[lvl] = layersByLvl[lvl] || [];\n var bb;\n var lvlComplete = self.levelIsComplete(lvl, eles);\n var tmpLayers;\n\n var checkTempLevels = function checkTempLevels() {\n var canUseAsTmpLvl = function canUseAsTmpLvl(l) {\n self.validateLayersElesOrdering(l, eles);\n\n if (self.levelIsComplete(l, eles)) {\n tmpLayers = layersByLvl[l];\n return true;\n }\n };\n\n var checkLvls = function checkLvls(dir) {\n if (tmpLayers) {\n return;\n }\n\n for (var l = lvl + dir; minLvl <= l && l <= maxLvl; l += dir) {\n if (canUseAsTmpLvl(l)) {\n break;\n }\n }\n };\n\n checkLvls(+1);\n checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function\n\n for (var i = layers.length - 1; i >= 0; i--) {\n var layer = layers[i];\n\n if (layer.invalid) {\n removeFromArray(layers, layer);\n }\n }\n };\n\n if (!lvlComplete) {\n // if the current level is incomplete, then use the closest, best quality layerset temporarily\n // and later queue the current layerset so we can get the proper quality level soon\n checkTempLevels();\n } else {\n // log('level complete, using existing layers\\n--');\n return layers;\n }\n\n var getBb = function getBb() {\n if (!bb) {\n bb = makeBoundingBox();\n\n for (var i = 0; i < eles.length; i++) {\n updateBoundingBox(bb, eles[i].boundingBox());\n }\n }\n\n return bb;\n };\n\n var makeLayer = function makeLayer(opts) {\n opts = opts || {};\n var after = opts.after;\n getBb();\n var area = bb.w * scale * (bb.h * scale);\n\n if (area > maxLayerArea) {\n return null;\n }\n\n var layer = self.makeLayer(bb, lvl);\n\n if (after != null) {\n var index = layers.indexOf(after) + 1;\n layers.splice(index, 0, layer);\n } else if (opts.insert === undefined || opts.insert) {\n // no after specified => first layer made so put at start\n layers.unshift(layer);\n } // if( tmpLayers ){\n //self.queueLayer( layer );\n // }\n\n\n return layer;\n };\n\n if (self.skipping && !firstGet) {\n // log('skip layers');\n return null;\n } // log('do layers');\n\n\n var layer = null;\n var maxElesPerLayer = eles.length / defNumLayers;\n var allowLazyQueueing = !firstGet;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id());\n\n var existingLayer = caches[lvl];\n\n if (existingLayer) {\n // reuse layer for later eles\n // log('reuse layer for', ele.id());\n layer = existingLayer;\n continue;\n }\n\n if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) {\n // log('make new layer for ele %s', ele.id());\n layer = makeLayer({\n insert: true,\n after: layer\n }); // if now layer can be built then we can't use layers at this level\n\n if (!layer) {\n return null;\n } // log('new layer with id %s', layer.id);\n\n }\n\n if (tmpLayers || allowLazyQueueing) {\n // log('queue ele %s in layer %s', ele.id(), layer.id);\n self.queueLayer(layer, ele);\n } else {\n // log('draw ele %s in layer %s', ele.id(), layer.id);\n self.drawEleInLayer(layer, ele, lvl, pxRatio);\n }\n\n layer.eles.push(ele);\n caches[lvl] = layer;\n } // log('--');\n\n\n if (tmpLayers) {\n // then we only queued the current layerset and can't draw it yet\n return tmpLayers;\n }\n\n if (allowLazyQueueing) {\n // log('lazy queue level', lvl);\n return null;\n }\n\n return layers;\n }; // a layer may want to use an ele cache of a higher level to avoid blurriness\n // so the layer level might not equal the ele level\n\n\n LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) {\n return lvl;\n };\n\n LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) {\n var self = this;\n var r = this.renderer;\n var context = layer.context;\n var bb = ele.boundingBox();\n\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n\n lvl = self.getEleLevelForLayerLevel(lvl, pxRatio);\n\n {\n r.setImgSmoothing(context, false);\n }\n\n {\n r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs);\n }\n\n {\n r.setImgSmoothing(context, true);\n }\n };\n\n LTCp.levelIsComplete = function (lvl, eles) {\n var self = this;\n var layers = self.layersByLevel[lvl];\n\n if (!layers || layers.length === 0) {\n return false;\n }\n\n var numElesInLayers = 0;\n\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete\n\n if (layer.reqs > 0) {\n return false;\n } // if the layer is invalid, the level is not complete\n\n\n if (layer.invalid) {\n return false;\n }\n\n numElesInLayers += layer.eles.length;\n } // we should have exactly the number of eles passed in to be complete\n\n\n if (numElesInLayers !== eles.length) {\n return false;\n }\n\n return true;\n };\n\n LTCp.validateLayersElesOrdering = function (lvl, eles) {\n var layers = this.layersByLevel[lvl];\n\n if (!layers) {\n return;\n } // if in a layer the eles are not in the same order, then the layer is invalid\n // (i.e. there is an ele in between the eles in the layer)\n\n\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var offset = -1; // find the offset\n\n for (var j = 0; j < eles.length; j++) {\n if (layer.eles[0] === eles[j]) {\n offset = j;\n break;\n }\n }\n\n if (offset < 0) {\n // then the layer has nonexistent elements and is invalid\n this.invalidateLayer(layer);\n continue;\n } // the eles in the layer must be in the same continuous order, else the layer is invalid\n\n\n var o = offset;\n\n for (var j = 0; j < layer.eles.length; j++) {\n if (layer.eles[j] !== eles[o + j]) {\n // log('invalidate based on ordering', layer.id);\n this.invalidateLayer(layer);\n break;\n }\n }\n }\n };\n\n LTCp.updateElementsInLayers = function (eles, update) {\n var self = this;\n var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each\n // layer itself along the way\n\n for (var i = 0; i < eles.length; i++) {\n var req = isEles ? null : eles[i];\n var ele = isEles ? eles[i] : eles[i].ele;\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n\n for (var l = minLvl; l <= maxLvl; l++) {\n var layer = caches[l];\n\n if (!layer) {\n continue;\n } // if update is a request from the ele cache, then it affects only\n // the matching level\n\n\n if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) {\n continue;\n }\n\n update(layer, ele, req);\n }\n }\n };\n\n LTCp.haveLayers = function () {\n var self = this;\n var haveLayers = false;\n\n for (var l = minLvl; l <= maxLvl; l++) {\n var layers = self.layersByLevel[l];\n\n if (layers && layers.length > 0) {\n haveLayers = true;\n break;\n }\n }\n\n return haveLayers;\n };\n\n LTCp.invalidateElements = function (eles) {\n var self = this;\n\n if (eles.length === 0) {\n return;\n }\n\n self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles');\n\n if (eles.length === 0 || !self.haveLayers()) {\n return;\n }\n\n self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) {\n self.invalidateLayer(layer);\n });\n };\n\n LTCp.invalidateLayer = function (layer) {\n // log('update invalidate layer time');\n this.lastInvalidationTime = performanceNow();\n\n if (layer.invalid) {\n return;\n } // save cycles\n\n\n var lvl = layer.level;\n var eles = layer.eles;\n var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id );\n\n removeFromArray(layers, layer); // layer.eles = [];\n\n layer.elesQueue = [];\n layer.invalid = true;\n\n if (layer.replacement) {\n layer.replacement.invalid = true;\n }\n\n for (var i = 0; i < eles.length; i++) {\n var caches = eles[i]._private.rscratch.imgLayerCaches;\n\n if (caches) {\n caches[lvl] = null;\n }\n }\n };\n\n LTCp.refineElementTextures = function (eles) {\n var self = this; // log('refine', eles.length);\n\n self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) {\n var rLyr = layer.replacement;\n\n if (!rLyr) {\n rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level);\n rLyr.replaces = layer;\n rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level);\n }\n\n if (!rLyr.reqs) {\n for (var i = 0; i < rLyr.eles.length; i++) {\n self.queueLayer(rLyr, rLyr.eles[i]);\n } // log('queue replacement layer refinement', rLyr.id);\n\n }\n });\n };\n\n LTCp.enqueueElementRefinement = function (ele) {\n\n this.eleTxrDeqs.merge(ele);\n this.scheduleElementRefinement();\n };\n\n LTCp.queueLayer = function (layer, ele) {\n var self = this;\n var q = self.layersQueue;\n var elesQ = layer.elesQueue;\n var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time\n\n if (layer.replacement) {\n return;\n }\n\n if (ele) {\n if (hasId[ele.id()]) {\n return;\n }\n\n elesQ.push(ele);\n hasId[ele.id()] = true;\n }\n\n if (layer.reqs) {\n layer.reqs++;\n q.updateItem(layer);\n } else {\n layer.reqs = 1;\n q.push(layer);\n }\n };\n\n LTCp.dequeue = function (pxRatio) {\n var self = this;\n var q = self.layersQueue;\n var deqd = [];\n var eleDeqs = 0;\n\n while (eleDeqs < maxDeqSize) {\n if (q.size() === 0) {\n break;\n }\n\n var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it\n\n if (layer.replacement) {\n // log('layer %s in queue skipped b/c it already has a replacement', layer.id);\n q.pop();\n continue;\n } // if this is a replacement layer that has been superceded, then forget it\n\n\n if (layer.replaces && layer !== layer.replaces.replacement) {\n // log('layer is no longer the most uptodate replacement; dequeued', layer.id)\n q.pop();\n continue;\n }\n\n if (layer.invalid) {\n // log('replacement layer %s is invalid; dequeued', layer.id);\n q.pop();\n continue;\n }\n\n var ele = layer.elesQueue.shift();\n\n if (ele) {\n // log('dequeue layer %s', layer.id);\n self.drawEleInLayer(layer, ele, layer.level, pxRatio);\n eleDeqs++;\n }\n\n if (deqd.length === 0) {\n // we need only one entry in deqd to queue redrawing etc\n deqd.push(true);\n } // if the layer has all its eles done, then remove from the queue\n\n\n if (layer.elesQueue.length === 0) {\n q.pop();\n layer.reqs = 0; // log('dequeue of layer %s complete', layer.id);\n // when a replacement layer is dequeued, it replaces the old layer in the level\n\n if (layer.replaces) {\n self.applyLayerReplacement(layer);\n }\n\n self.requestRedraw();\n }\n }\n\n return deqd;\n };\n\n LTCp.applyLayerReplacement = function (layer) {\n var self = this;\n var layersInLevel = self.layersByLevel[layer.level];\n var replaced = layer.replaces;\n var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing\n // refs would be a mistake (i.e. overwriting the true active layer)\n\n if (index < 0 || replaced.invalid) {\n // log('replacement layer would have no effect', layer.id);\n return;\n }\n\n layersInLevel[index] = layer; // replace level ref\n // replace refs in eles\n\n for (var i = 0; i < layer.eles.length; i++) {\n var _p = layer.eles[i]._private;\n var cache = _p.imgLayerCaches = _p.imgLayerCaches || {};\n\n if (cache) {\n cache[layer.level] = layer;\n }\n } // log('apply replacement layer %s over %s', layer.id, replaced.id);\n\n\n self.requestRedraw();\n };\n\n LTCp.requestRedraw = debounce_1(function () {\n var r = this.renderer;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n }, 100);\n LTCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold,\n deqCost: deqCost,\n deqAvgCost: deqAvgCost,\n deqNoDrawCost: deqNoDrawCost,\n deqFastCost: deqFastCost,\n deq: function deq(self, pxRatio) {\n return self.dequeue(pxRatio);\n },\n onDeqd: noop$1,\n shouldRedraw: trueify,\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.lyrTxrDeq;\n }\n });\n\n var CRp$a = {};\n var impl;\n\n function polygon(context, points) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n context.lineTo(pt.x, pt.y);\n }\n }\n\n function triangleBackcurve(context, points, controlPoint) {\n var firstPt;\n\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (i === 0) {\n firstPt = pt;\n }\n\n context.lineTo(pt.x, pt.y);\n }\n\n context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y);\n }\n\n function triangleTee(context, trianglePoints, teePoints) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n var triPts = trianglePoints;\n\n for (var i = 0; i < triPts.length; i++) {\n var pt = triPts[i];\n context.lineTo(pt.x, pt.y);\n }\n\n var teePts = teePoints;\n var firstTeePt = teePoints[0];\n context.moveTo(firstTeePt.x, firstTeePt.y);\n\n for (var i = 1; i < teePts.length; i++) {\n var pt = teePts[i];\n context.lineTo(pt.x, pt.y);\n }\n\n if (context.closePath) {\n context.closePath();\n }\n }\n\n function circleTriangle(context, trianglePoints, rx, ry, r) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.arc(rx, ry, r, 0, Math.PI * 2, false);\n var triPts = trianglePoints;\n var firstTrPt = triPts[0];\n context.moveTo(firstTrPt.x, firstTrPt.y);\n\n for (var i = 0; i < triPts.length; i++) {\n var pt = triPts[i];\n context.lineTo(pt.x, pt.y);\n }\n\n if (context.closePath) {\n context.closePath();\n }\n }\n\n function circle(context, rx, ry, r) {\n context.arc(rx, ry, r, 0, Math.PI * 2, false);\n }\n\n CRp$a.arrowShapeImpl = function (name) {\n return (impl || (impl = {\n 'polygon': polygon,\n 'triangle-backcurve': triangleBackcurve,\n 'triangle-tee': triangleTee,\n 'circle-triangle': circleTriangle,\n 'triangle-cross': triangleTee,\n 'circle': circle\n }))[name];\n };\n\n var CRp$9 = {};\n\n CRp$9.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) {\n var r = this;\n\n if (ele.isNode()) {\n r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n } else {\n r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n }\n };\n\n CRp$9.drawElementOverlay = function (context, ele) {\n var r = this;\n\n if (ele.isNode()) {\n r.drawNodeOverlay(context, ele);\n } else {\n r.drawEdgeOverlay(context, ele);\n }\n };\n\n CRp$9.drawElementUnderlay = function (context, ele) {\n var r = this;\n\n if (ele.isNode()) {\n r.drawNodeUnderlay(context, ele);\n } else {\n r.drawEdgeUnderlay(context, ele);\n }\n };\n\n CRp$9.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) {\n var r = this;\n var bb = eleTxrCache.getBoundingBox(ele);\n\n if (bb.w === 0 || bb.h === 0) {\n return;\n } // ignore zero size case\n\n\n var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason);\n\n if (eleCache != null) {\n var opacity = getOpacity(r, ele);\n\n if (opacity === 0) {\n return;\n }\n\n var theta = getRotation(r, ele);\n var x1 = bb.x1,\n y1 = bb.y1,\n w = bb.w,\n h = bb.h;\n var x, y, sx, sy, smooth;\n\n if (theta !== 0) {\n var rotPt = eleTxrCache.getRotationPoint(ele);\n sx = rotPt.x;\n sy = rotPt.y;\n context.translate(sx, sy);\n context.rotate(theta);\n smooth = r.getImgSmoothing(context);\n\n if (!smooth) {\n r.setImgSmoothing(context, true);\n }\n\n var off = eleTxrCache.getRotationOffset(ele);\n x = off.x;\n y = off.y;\n } else {\n x = x1;\n y = y1;\n }\n\n var oldGlobalAlpha;\n\n if (opacity !== 1) {\n oldGlobalAlpha = context.globalAlpha;\n context.globalAlpha = oldGlobalAlpha * opacity;\n }\n\n context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h);\n\n if (opacity !== 1) {\n context.globalAlpha = oldGlobalAlpha;\n }\n\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-sx, -sy);\n\n if (!smooth) {\n r.setImgSmoothing(context, false);\n }\n }\n } else {\n eleTxrCache.drawElement(context, ele); // direct draw fallback\n }\n };\n\n var getZeroRotation = function getZeroRotation() {\n return 0;\n };\n\n var getLabelRotation = function getLabelRotation(r, ele) {\n return r.getTextAngle(ele, null);\n };\n\n var getSourceLabelRotation = function getSourceLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'source');\n };\n\n var getTargetLabelRotation = function getTargetLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'target');\n };\n\n var getOpacity = function getOpacity(r, ele) {\n return ele.effectiveOpacity();\n };\n\n var getTextOpacity = function getTextOpacity(e, ele) {\n return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity();\n };\n\n CRp$9.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) {\n var r = this;\n var _r$data = r.data,\n eleTxrCache = _r$data.eleTxrCache,\n lblTxrCache = _r$data.lblTxrCache,\n slbTxrCache = _r$data.slbTxrCache,\n tlbTxrCache = _r$data.tlbTxrCache;\n var bb = ele.boundingBox();\n var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null;\n\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n\n if (!extent || boundingBoxesIntersect(bb, extent)) {\n var isEdge = ele.isEdge();\n\n var badLine = ele.element()._private.rscratch.badLine;\n\n r.drawElementUnderlay(context, ele);\n r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity);\n\n if (!isEdge || !badLine) {\n r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity);\n }\n\n if (isEdge && !badLine) {\n r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity);\n r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity);\n }\n\n r.drawElementOverlay(context, ele);\n }\n };\n\n CRp$9.drawElements = function (context, eles) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawElement(context, ele);\n }\n };\n\n CRp$9.drawCachedElements = function (context, eles, pxRatio, extent) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n };\n\n CRp$9.drawCachedNodes = function (context, eles, pxRatio, extent) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n };\n\n CRp$9.drawLayeredElements = function (context, eles, pxRatio, extent) {\n var r = this;\n var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio);\n\n if (layers) {\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var bb = layer.bb;\n\n if (bb.w === 0 || bb.h === 0) {\n continue;\n }\n\n context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h);\n }\n } else {\n // fall back on plain caching if no layers\n r.drawCachedElements(context, eles, pxRatio, extent);\n }\n };\n\n /* global Path2D */\n var CRp$8 = {};\n\n CRp$8.drawEdge = function (context, edge, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var rs = edge._private.rscratch;\n\n if (shouldDrawOpacity && !edge.visible()) {\n return;\n } // if bezier ctrl pts can not be calculated, then die\n\n\n if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {\n // isNaN in case edge is impossible and browser bugs (e.g. safari)\n return;\n }\n\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n\n var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1;\n var lineOpacity = shouldDrawOpacity ? edge.pstyle('line-opacity').value : 1;\n var curveStyle = edge.pstyle('curve-style').value;\n var lineStyle = edge.pstyle('line-style').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var lineCap = edge.pstyle('line-cap').value;\n var effectiveLineOpacity = opacity * lineOpacity; // separate arrow opacity would require arrow-opacity property\n\n var effectiveArrowOpacity = opacity * lineOpacity;\n\n var drawLine = function drawLine() {\n var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveLineOpacity;\n\n if (curveStyle === 'straight-triangle') {\n r.eleStrokeStyle(context, edge, strokeOpacity);\n r.drawEdgeTrianglePath(edge, context, rs.allpts);\n } else {\n context.lineWidth = edgeWidth;\n context.lineCap = lineCap;\n r.eleStrokeStyle(context, edge, strokeOpacity);\n r.drawEdgePath(edge, context, rs.allpts, lineStyle);\n context.lineCap = 'butt'; // reset for other drawing functions\n }\n };\n\n var drawOverlay = function drawOverlay() {\n if (!shouldDrawOverlay) {\n return;\n }\n\n r.drawEdgeOverlay(context, edge);\n };\n\n var drawUnderlay = function drawUnderlay() {\n if (!shouldDrawOverlay) {\n return;\n }\n\n r.drawEdgeUnderlay(context, edge);\n };\n\n var drawArrows = function drawArrows() {\n var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : effectiveArrowOpacity;\n r.drawArrowheads(context, edge, arrowOpacity);\n };\n\n var drawText = function drawText() {\n r.drawElementText(context, edge, null, drawLabel);\n };\n\n context.lineJoin = 'round';\n var ghost = edge.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = edge.pstyle('ghost-offset-x').pfValue;\n var gy = edge.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = edge.pstyle('ghost-opacity').value;\n var effectiveGhostOpacity = effectiveLineOpacity * ghostOpacity;\n context.translate(gx, gy);\n drawLine(effectiveGhostOpacity);\n drawArrows(effectiveGhostOpacity);\n context.translate(-gx, -gy);\n }\n\n drawUnderlay();\n drawLine();\n drawArrows();\n drawOverlay();\n drawText();\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n };\n\n var drawEdgeOverlayUnderlay = function drawEdgeOverlayUnderlay(overlayOrUnderlay) {\n if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n throw new Error('Invalid state');\n }\n\n return function (context, edge) {\n if (!edge.visible()) {\n return;\n }\n\n var opacity = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n\n if (opacity === 0) {\n return;\n }\n\n var r = this;\n var usePaths = r.usePaths();\n var rs = edge._private.rscratch;\n var padding = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n var width = 2 * padding;\n var color = edge.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n context.lineWidth = width;\n\n if (rs.edgeType === 'self' && !usePaths) {\n context.lineCap = 'butt';\n } else {\n context.lineCap = 'round';\n }\n\n r.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n r.drawEdgePath(edge, context, rs.allpts, 'solid');\n };\n };\n\n CRp$8.drawEdgeOverlay = drawEdgeOverlayUnderlay('overlay');\n CRp$8.drawEdgeUnderlay = drawEdgeOverlayUnderlay('underlay');\n\n CRp$8.drawEdgePath = function (edge, context, pts, type) {\n var rs = edge._private.rscratch;\n var canvasCxt = context;\n var path;\n var pathCacheHit = false;\n var usePaths = this.usePaths();\n var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue;\n var lineDashOffset = edge.pstyle('line-dash-offset').pfValue;\n\n if (usePaths) {\n var pathCacheKey = pts.join('$');\n var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey;\n\n if (keyMatches) {\n path = context = rs.pathCache;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n rs.pathCacheKey = pathCacheKey;\n rs.pathCache = path;\n }\n }\n\n if (canvasCxt.setLineDash) {\n // for very outofdate browsers\n switch (type) {\n case 'dotted':\n canvasCxt.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n canvasCxt.setLineDash(lineDashPattern);\n canvasCxt.lineDashOffset = lineDashOffset;\n break;\n\n case 'solid':\n canvasCxt.setLineDash([]);\n break;\n }\n }\n\n if (!pathCacheHit && !rs.badLine) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(pts[0], pts[1]);\n\n switch (rs.edgeType) {\n case 'bezier':\n case 'self':\n case 'compound':\n case 'multibezier':\n for (var i = 2; i + 3 < pts.length; i += 4) {\n context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]);\n }\n\n break;\n\n case 'straight':\n case 'segments':\n case 'haystack':\n for (var _i = 2; _i + 1 < pts.length; _i += 2) {\n context.lineTo(pts[_i], pts[_i + 1]);\n }\n\n break;\n }\n }\n\n context = canvasCxt;\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n } // reset any line dashes\n\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n };\n\n CRp$8.drawEdgeTrianglePath = function (edge, context, pts) {\n // use line stroke style for triangle fill style\n context.fillStyle = context.strokeStyle;\n var edgeWidth = edge.pstyle('width').pfValue;\n\n for (var i = 0; i + 1 < pts.length; i += 2) {\n var vector = [pts[i + 2] - pts[i], pts[i + 3] - pts[i + 1]];\n var length = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]);\n var normal = [vector[1] / length, -vector[0] / length];\n var triangleHead = [normal[0] * edgeWidth / 2, normal[1] * edgeWidth / 2];\n context.beginPath();\n context.moveTo(pts[i] - triangleHead[0], pts[i + 1] - triangleHead[1]);\n context.lineTo(pts[i] + triangleHead[0], pts[i + 1] + triangleHead[1]);\n context.lineTo(pts[i + 2], pts[i + 3]);\n context.closePath();\n context.fill();\n }\n };\n\n CRp$8.drawArrowheads = function (context, edge, opacity) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity);\n }\n\n this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity);\n this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity);\n\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity);\n }\n };\n\n CRp$8.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) {\n if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {\n return;\n }\n\n var self = this;\n var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;\n\n if (arrowShape === 'none') {\n return;\n }\n\n var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled';\n var arrowFill = edge.pstyle(prefix + '-arrow-fill').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var edgeOpacity = edge.pstyle('opacity').value;\n\n if (opacity === undefined) {\n opacity = edgeOpacity;\n }\n\n var gco = context.globalCompositeOperation;\n\n if (opacity !== 1 || arrowFill === 'hollow') {\n // then extra clear is needed\n context.globalCompositeOperation = 'destination-out';\n self.colorFillStyle(context, 255, 255, 255, 1);\n self.colorStrokeStyle(context, 255, 255, 255, 1);\n self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle);\n context.globalCompositeOperation = gco;\n } // otherwise, the opaque arrow clears it for free :)\n\n\n var color = edge.pstyle(prefix + '-arrow-color').value;\n self.colorFillStyle(context, color[0], color[1], color[2], opacity);\n self.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle);\n };\n\n CRp$8.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) {\n var r = this;\n var usePaths = this.usePaths() && shape !== 'triangle-cross';\n var pathCacheHit = false;\n var path;\n var canvasContext = context;\n var translation = {\n x: x,\n y: y\n };\n var scale = edge.pstyle('arrow-scale').value;\n var size = this.getArrowWidth(edgeWidth, scale);\n var shapeImpl = r.arrowShapes[shape];\n\n if (usePaths) {\n var cache = r.arrowPathCache = r.arrowPathCache || [];\n var key = hashString(shape);\n var cachedPath = cache[key];\n\n if (cachedPath != null) {\n path = context = cachedPath;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n cache[key] = path;\n }\n }\n\n if (!pathCacheHit) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n if (usePaths) {\n // store in the path cache with values easily manipulated later\n shapeImpl.draw(context, 1, 0, {\n x: 0,\n y: 0\n }, 1);\n } else {\n shapeImpl.draw(context, size, angle, translation, edgeWidth);\n }\n\n if (context.closePath) {\n context.closePath();\n }\n }\n\n context = canvasContext;\n\n if (usePaths) {\n // set transform to arrow position/orientation\n context.translate(x, y);\n context.rotate(angle);\n context.scale(size, size);\n }\n\n if (fill === 'filled' || fill === 'both') {\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n\n if (fill === 'hollow' || fill === 'both') {\n context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1);\n context.lineJoin = 'miter';\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n }\n\n if (usePaths) {\n // reset transform by applying inverse\n context.scale(1 / size, 1 / size);\n context.rotate(-angle);\n context.translate(-x, -y);\n }\n };\n\n var CRp$7 = {};\n\n CRp$7.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) {\n // detect problematic cases for old browsers with bad images (cheaper than try-catch)\n if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) {\n return;\n }\n\n try {\n context.drawImage(img, ix, iy, iw, ih, x, y, w, h);\n } catch (e) {\n warn(e);\n }\n };\n\n CRp$7.drawInscribedImage = function (context, img, node, index, nodeOpacity) {\n var r = this;\n var pos = node.position();\n var nodeX = pos.x;\n var nodeY = pos.y;\n var styleObj = node.cy().style();\n var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj);\n var fit = getIndexedStyle(node, 'background-fit', 'value', index);\n var repeat = getIndexedStyle(node, 'background-repeat', 'value', index);\n var nodeW = node.width();\n var nodeH = node.height();\n var paddingX2 = node.padding() * 2;\n var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var rs = node._private.rscratch;\n var clip = getIndexedStyle(node, 'background-clip', 'value', index);\n var shouldClip = clip === 'node';\n var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity;\n var smooth = getIndexedStyle(node, 'background-image-smoothing', 'value', index);\n var imgW = img.width || img.cachedW;\n var imgH = img.height || img.cachedH; // workaround for broken browsers like ie\n\n if (null == imgW || null == imgH) {\n document.body.appendChild(img); // eslint-disable-line no-undef\n\n imgW = img.cachedW = img.width || img.offsetWidth;\n imgH = img.cachedH = img.height || img.offsetHeight;\n document.body.removeChild(img); // eslint-disable-line no-undef\n }\n\n var w = imgW;\n var h = imgH;\n\n if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-width', 'units', index) === '%') {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW;\n } else {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index);\n }\n }\n\n if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-height', 'units', index) === '%') {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH;\n } else {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index);\n }\n }\n\n if (w === 0 || h === 0) {\n return; // no point in drawing empty image (and chrome is broken in this case)\n }\n\n if (fit === 'contain') {\n var scale = Math.min(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n } else if (fit === 'cover') {\n var scale = Math.max(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n }\n\n var x = nodeX - nodeTW / 2; // left\n\n var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index);\n var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index);\n\n if (posXUnits === '%') {\n x += (nodeTW - w) * posXPfVal;\n } else {\n x += posXPfVal;\n }\n\n var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index);\n var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index);\n\n if (offXUnits === '%') {\n x += (nodeTW - w) * offXPfVal;\n } else {\n x += offXPfVal;\n }\n\n var y = nodeY - nodeTH / 2; // top\n\n var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index);\n var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index);\n\n if (posYUnits === '%') {\n y += (nodeTH - h) * posYPfVal;\n } else {\n y += posYPfVal;\n }\n\n var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index);\n var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index);\n\n if (offYUnits === '%') {\n y += (nodeTH - h) * offYPfVal;\n } else {\n y += offYPfVal;\n }\n\n if (rs.pathCache) {\n x -= nodeX;\n y -= nodeY;\n nodeX = 0;\n nodeY = 0;\n }\n\n var gAlpha = context.globalAlpha;\n context.globalAlpha = imgOpacity;\n var smoothingEnabled = r.getImgSmoothing(context);\n var isSmoothingSwitched = false;\n\n if (smooth === 'no' && smoothingEnabled) {\n r.setImgSmoothing(context, false);\n isSmoothingSwitched = true;\n } else if (smooth === 'yes' && !smoothingEnabled) {\n r.setImgSmoothing(context, true);\n isSmoothingSwitched = true;\n }\n\n if (repeat === 'no-repeat') {\n if (shouldClip) {\n context.save();\n\n if (rs.pathCache) {\n context.clip(rs.pathCache);\n } else {\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.clip();\n }\n }\n\n r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h);\n\n if (shouldClip) {\n context.restore();\n }\n } else {\n var pattern = context.createPattern(img, repeat);\n context.fillStyle = pattern;\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.translate(x, y);\n context.fill();\n context.translate(-x, -y);\n }\n\n context.globalAlpha = gAlpha;\n\n if (isSmoothingSwitched) {\n r.setImgSmoothing(context, smoothingEnabled);\n }\n };\n\n var CRp$6 = {};\n\n CRp$6.eleTextBiggerThanMin = function (ele, scale) {\n if (!scale) {\n var zoom = ele.cy().zoom();\n var pxRatio = this.getPixelRatio();\n var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level\n\n scale = Math.pow(2, lvl);\n }\n\n var computedSize = ele.pstyle('font-size').pfValue * scale;\n var minSize = ele.pstyle('min-zoomed-font-size').pfValue;\n\n if (computedSize < minSize) {\n return false;\n }\n\n return true;\n };\n\n CRp$6.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) {\n var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n\n if (force == null) {\n if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) {\n return;\n }\n } else if (force === false) {\n return;\n }\n\n if (ele.isNode()) {\n var label = ele.pstyle('label');\n\n if (!label || !label.value) {\n return;\n }\n\n var justification = r.getLabelJustification(ele);\n context.textAlign = justification;\n context.textBaseline = 'bottom';\n } else {\n var badLine = ele.element()._private.rscratch.badLine;\n\n var _label = ele.pstyle('label');\n\n var srcLabel = ele.pstyle('source-label');\n var tgtLabel = ele.pstyle('target-label');\n\n if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) {\n return;\n }\n\n context.textAlign = 'center';\n context.textBaseline = 'bottom';\n }\n\n var applyRotation = !shiftToOriginWithBb;\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n\n if (prefix == null) {\n r.drawText(context, ele, null, applyRotation, useEleOpacity);\n\n if (ele.isEdge()) {\n r.drawText(context, ele, 'source', applyRotation, useEleOpacity);\n r.drawText(context, ele, 'target', applyRotation, useEleOpacity);\n }\n } else {\n r.drawText(context, ele, prefix, applyRotation, useEleOpacity);\n }\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n };\n\n CRp$6.getFontCache = function (context) {\n var cache;\n this.fontCaches = this.fontCaches || [];\n\n for (var i = 0; i < this.fontCaches.length; i++) {\n cache = this.fontCaches[i];\n\n if (cache.context === context) {\n return cache;\n }\n }\n\n cache = {\n context: context\n };\n this.fontCaches.push(cache);\n return cache;\n }; // set up canvas context with font\n // returns transformed text string\n\n\n CRp$6.setupTextStyle = function (context, ele) {\n var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // Font style\n var labelStyle = ele.pstyle('font-style').strValue;\n var labelSize = ele.pstyle('font-size').pfValue + 'px';\n var labelFamily = ele.pstyle('font-family').strValue;\n var labelWeight = ele.pstyle('font-weight').strValue;\n var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1;\n var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity;\n var color = ele.pstyle('color').value;\n var outlineColor = ele.pstyle('text-outline-color').value;\n context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily;\n context.lineJoin = 'round'; // so text outlines aren't jagged\n\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity);\n }; // TODO ensure re-used\n\n\n function roundRect(ctx, x, y, width, height) {\n var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n }\n\n CRp$6.getTextAngle = function (ele, prefix) {\n var theta;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var pdash = prefix ? prefix + '-' : '';\n var rotation = ele.pstyle(pdash + 'text-rotation');\n var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix);\n\n if (rotation.strValue === 'autorotate') {\n theta = ele.isEdge() ? textAngle : 0;\n } else if (rotation.strValue === 'none') {\n theta = 0;\n } else {\n theta = rotation.pfValue;\n }\n\n return theta;\n };\n\n CRp$6.drawText = function (context, ele, prefix) {\n var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1;\n\n if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) {\n return;\n } // use 'main' as an alias for the main label (i.e. null prefix)\n\n\n if (prefix === 'main') {\n prefix = null;\n }\n\n var textX = getPrefixedProperty(rscratch, 'labelX', prefix);\n var textY = getPrefixedProperty(rscratch, 'labelY', prefix);\n var orgTextX, orgTextY; // used for rotation\n\n var text = this.getLabelText(ele, prefix);\n\n if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) {\n this.setupTextStyle(context, ele, useEleOpacity);\n var pdash = prefix ? prefix + '-' : '';\n var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix);\n var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix);\n var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var halign = ele.pstyle('text-halign').value;\n var valign = ele.pstyle('text-valign').value;\n\n if (isEdge) {\n halign = 'center';\n valign = 'center';\n }\n\n textX += marginX;\n textY += marginY;\n var theta;\n\n if (!applyRotation) {\n theta = 0;\n } else {\n theta = this.getTextAngle(ele, prefix);\n }\n\n if (theta !== 0) {\n orgTextX = textX;\n orgTextY = textY;\n context.translate(orgTextX, orgTextY);\n context.rotate(theta);\n textX = 0;\n textY = 0;\n }\n\n switch (valign) {\n case 'top':\n break;\n\n case 'center':\n textY += textH / 2;\n break;\n\n case 'bottom':\n textY += textH;\n break;\n }\n\n var backgroundOpacity = ele.pstyle('text-background-opacity').value;\n var borderOpacity = ele.pstyle('text-border-opacity').value;\n var textBorderWidth = ele.pstyle('text-border-width').pfValue;\n var backgroundPadding = ele.pstyle('text-background-padding').pfValue;\n\n if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) {\n var bgX = textX - backgroundPadding;\n\n switch (halign) {\n case 'left':\n bgX -= textW;\n break;\n\n case 'center':\n bgX -= textW / 2;\n break;\n }\n\n var bgY = textY - textH - backgroundPadding;\n var bgW = textW + 2 * backgroundPadding;\n var bgH = textH + 2 * backgroundPadding;\n\n if (backgroundOpacity > 0) {\n var textFill = context.fillStyle;\n var textBackgroundColor = ele.pstyle('text-background-color').value;\n context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')';\n var styleShape = ele.pstyle('text-background-shape').strValue;\n\n if (styleShape.indexOf('round') === 0) {\n roundRect(context, bgX, bgY, bgW, bgH, 2);\n } else {\n context.fillRect(bgX, bgY, bgW, bgH);\n }\n\n context.fillStyle = textFill;\n }\n\n if (textBorderWidth > 0 && borderOpacity > 0) {\n var textStroke = context.strokeStyle;\n var textLineWidth = context.lineWidth;\n var textBorderColor = ele.pstyle('text-border-color').value;\n var textBorderStyle = ele.pstyle('text-border-style').value;\n context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')';\n context.lineWidth = textBorderWidth;\n\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (textBorderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n\n case 'double':\n context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders\n\n context.setLineDash([]);\n break;\n\n case 'solid':\n context.setLineDash([]);\n break;\n }\n }\n\n context.strokeRect(bgX, bgY, bgW, bgH);\n\n if (textBorderStyle === 'double') {\n var whiteWidth = textBorderWidth / 2;\n context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2);\n }\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n\n context.lineWidth = textLineWidth;\n context.strokeStyle = textStroke;\n }\n }\n\n var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle\n\n if (lineWidth > 0) {\n context.lineWidth = lineWidth;\n }\n\n if (ele.pstyle('text-wrap').value === 'wrap') {\n var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix);\n var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix);\n var halfTextW = textW / 2;\n var justification = this.getLabelJustification(ele);\n\n if (justification === 'auto') ; else if (halign === 'left') {\n // auto justification : right\n if (justification === 'left') {\n textX += -textW;\n } else if (justification === 'center') {\n textX += -halfTextW;\n } // else same as auto\n\n } else if (halign === 'center') {\n // auto justfication : center\n if (justification === 'left') {\n textX += -halfTextW;\n } else if (justification === 'right') {\n textX += halfTextW;\n } // else same as auto\n\n } else if (halign === 'right') {\n // auto justification : left\n if (justification === 'center') {\n textX += halfTextW;\n } else if (justification === 'right') {\n textX += textW;\n } // else same as auto\n\n }\n\n switch (valign) {\n case 'top':\n textY -= (lines.length - 1) * lineHeight;\n break;\n\n case 'center':\n case 'bottom':\n textY -= (lines.length - 1) * lineHeight;\n break;\n }\n\n for (var l = 0; l < lines.length; l++) {\n if (lineWidth > 0) {\n context.strokeText(lines[l], textX, textY);\n }\n\n context.fillText(lines[l], textX, textY);\n textY += lineHeight;\n }\n } else {\n if (lineWidth > 0) {\n context.strokeText(text, textX, textY);\n }\n\n context.fillText(text, textX, textY);\n }\n\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-orgTextX, -orgTextY);\n }\n }\n };\n\n /* global Path2D */\n var CRp$5 = {};\n\n CRp$5.drawNode = function (context, node, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var nodeWidth, nodeHeight;\n var _p = node._private;\n var rs = _p.rscratch;\n var pos = node.position();\n\n if (!number$1(pos.x) || !number$1(pos.y)) {\n return; // can't draw node with undefined position\n }\n\n if (shouldDrawOpacity && !node.visible()) {\n return;\n }\n\n var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1;\n var usePaths = r.usePaths();\n var path;\n var pathCacheHit = false;\n var padding = node.padding();\n nodeWidth = node.width() + 2 * padding;\n nodeHeight = node.height() + 2 * padding; //\n // setup shift\n\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n } //\n // load bg image\n\n\n var bgImgProp = node.pstyle('background-image');\n var urls = bgImgProp.value;\n var urlDefined = new Array(urls.length);\n var image = new Array(urls.length);\n var numImages = 0;\n\n for (var i = 0; i < urls.length; i++) {\n var url = urls[i];\n var defd = urlDefined[i] = url != null && url !== 'none';\n\n if (defd) {\n var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i);\n numImages++; // get image, and if not loaded then ask to redraw when later loaded\n\n image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () {\n _p.backgroundTimestamp = Date.now();\n node.emitAndNotify('background');\n });\n }\n } //\n // setup styles\n\n\n var darkness = node.pstyle('background-blacken').value;\n var borderWidth = node.pstyle('border-width').pfValue;\n var bgOpacity = node.pstyle('background-opacity').value * eleOpacity;\n var borderColor = node.pstyle('border-color').value;\n var borderStyle = node.pstyle('border-style').value;\n var borderOpacity = node.pstyle('border-opacity').value * eleOpacity;\n context.lineJoin = 'miter'; // so borders are square with the node shape\n\n var setupShapeColor = function setupShapeColor() {\n var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity;\n r.eleFillStyle(context, node, bgOpy);\n };\n\n var setupBorderColor = function setupBorderColor() {\n var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity;\n r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy);\n }; //\n // setup shape\n\n\n var styleShape = node.pstyle('shape').strValue;\n var shapePts = node.pstyle('shape-polygon-points').pfValue;\n\n if (usePaths) {\n context.translate(pos.x, pos.y);\n var pathCache = r.nodePathCache = r.nodePathCache || [];\n var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth);\n var cachedPath = pathCache[key];\n\n if (cachedPath != null) {\n path = cachedPath;\n pathCacheHit = true;\n rs.pathCache = path;\n } else {\n path = new Path2D();\n pathCache[key] = rs.pathCache = path;\n }\n }\n\n var drawShape = function drawShape() {\n if (!pathCacheHit) {\n var npos = pos;\n\n if (usePaths) {\n npos = {\n x: 0,\n y: 0\n };\n }\n\n r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight);\n }\n\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n };\n\n var drawImages = function drawImages() {\n var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var inside = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var prevBging = _p.backgrounding;\n var totalCompleted = 0;\n\n for (var _i = 0; _i < image.length; _i++) {\n var bgContainment = node.cy().style().getIndexedStyle(node, 'background-image-containment', 'value', _i);\n\n if (inside && bgContainment === 'over' || !inside && bgContainment === 'inside') {\n totalCompleted++;\n continue;\n }\n\n if (urlDefined[_i] && image[_i].complete && !image[_i].error) {\n totalCompleted++;\n r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity);\n }\n }\n\n _p.backgrounding = !(totalCompleted === numImages);\n\n if (prevBging !== _p.backgrounding) {\n // update style b/c :backgrounding state changed\n node.updateStyle(false);\n }\n };\n\n var drawPie = function drawPie() {\n var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;\n\n if (r.hasPie(node)) {\n r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it\n\n if (redrawShape) {\n if (!usePaths) {\n r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight);\n }\n }\n }\n };\n\n var darken = function darken() {\n var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity;\n var c = darkness > 0 ? 0 : 255;\n\n if (darkness !== 0) {\n r.colorFillStyle(context, c, c, c, opacity);\n\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n };\n\n var drawBorder = function drawBorder() {\n if (borderWidth > 0) {\n context.lineWidth = borderWidth;\n context.lineCap = 'butt';\n\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (borderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n\n case 'solid':\n case 'double':\n context.setLineDash([]);\n break;\n }\n }\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n\n if (borderStyle === 'double') {\n context.lineWidth = borderWidth / 3;\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n\n context.globalCompositeOperation = gco;\n } // reset in case we changed the border style\n\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n }\n };\n\n var drawOverlay = function drawOverlay() {\n if (shouldDrawOverlay) {\n r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight);\n }\n };\n\n var drawUnderlay = function drawUnderlay() {\n if (shouldDrawOverlay) {\n r.drawNodeUnderlay(context, node, pos, nodeWidth, nodeHeight);\n }\n };\n\n var drawText = function drawText() {\n r.drawElementText(context, node, null, drawLabel);\n };\n\n var ghost = node.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = node.pstyle('ghost-offset-x').pfValue;\n var gy = node.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = node.pstyle('ghost-opacity').value;\n var effGhostOpacity = ghostOpacity * eleOpacity;\n context.translate(gx, gy);\n setupShapeColor(ghostOpacity * bgOpacity);\n drawShape();\n drawImages(effGhostOpacity, true);\n setupBorderColor(ghostOpacity * borderOpacity);\n drawBorder();\n drawPie(darkness !== 0 || borderWidth !== 0);\n drawImages(effGhostOpacity, false);\n darken(effGhostOpacity);\n context.translate(-gx, -gy);\n }\n\n if (usePaths) {\n context.translate(-pos.x, -pos.y);\n }\n\n drawUnderlay();\n\n if (usePaths) {\n context.translate(pos.x, pos.y);\n }\n\n setupShapeColor();\n drawShape();\n drawImages(eleOpacity, true);\n setupBorderColor();\n drawBorder();\n drawPie(darkness !== 0 || borderWidth !== 0);\n drawImages(eleOpacity, false);\n darken();\n\n if (usePaths) {\n context.translate(-pos.x, -pos.y);\n }\n\n drawText();\n drawOverlay(); //\n // clean up shift\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n };\n\n var drawNodeOverlayUnderlay = function drawNodeOverlayUnderlay(overlayOrUnderlay) {\n if (!['overlay', 'underlay'].includes(overlayOrUnderlay)) {\n throw new Error('Invalid state');\n }\n\n return function (context, node, pos, nodeWidth, nodeHeight) {\n var r = this;\n\n if (!node.visible()) {\n return;\n }\n\n var padding = node.pstyle(\"\".concat(overlayOrUnderlay, \"-padding\")).pfValue;\n var opacity = node.pstyle(\"\".concat(overlayOrUnderlay, \"-opacity\")).value;\n var color = node.pstyle(\"\".concat(overlayOrUnderlay, \"-color\")).value;\n var shape = node.pstyle(\"\".concat(overlayOrUnderlay, \"-shape\")).value;\n\n if (opacity > 0) {\n pos = pos || node.position();\n\n if (nodeWidth == null || nodeHeight == null) {\n var _padding = node.padding();\n\n nodeWidth = node.width() + 2 * _padding;\n nodeHeight = node.height() + 2 * _padding;\n }\n\n r.colorFillStyle(context, color[0], color[1], color[2], opacity);\n r.nodeShapes[shape].draw(context, pos.x, pos.y, nodeWidth + padding * 2, nodeHeight + padding * 2);\n context.fill();\n }\n };\n };\n\n CRp$5.drawNodeOverlay = drawNodeOverlayUnderlay('overlay');\n CRp$5.drawNodeUnderlay = drawNodeOverlayUnderlay('underlay'); // does the node have at least one pie piece?\n\n CRp$5.hasPie = function (node) {\n node = node[0]; // ensure ele ref\n\n return node._private.hasPie;\n };\n\n CRp$5.drawPie = function (context, node, nodeOpacity, pos) {\n node = node[0]; // ensure ele ref\n\n pos = pos || node.position();\n var cyStyle = node.cy().style();\n var pieSize = node.pstyle('pie-size');\n var x = pos.x;\n var y = pos.y;\n var nodeW = node.width();\n var nodeH = node.height();\n var radius = Math.min(nodeW, nodeH) / 2; // must fit in node\n\n var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]\n\n var usePaths = this.usePaths();\n\n if (usePaths) {\n x = 0;\n y = 0;\n }\n\n if (pieSize.units === '%') {\n radius = radius * pieSize.pfValue;\n } else if (pieSize.pfValue !== undefined) {\n radius = pieSize.pfValue / 2;\n }\n\n for (var i = 1; i <= cyStyle.pieBackgroundN; i++) {\n // 1..N\n var size = node.pstyle('pie-' + i + '-background-size').value;\n var color = node.pstyle('pie-' + i + '-background-color').value;\n var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity;\n var percent = size / 100; // map integer range [0, 100] to [0, 1]\n // percent can't push beyond 1\n\n if (percent + lastPercent > 1) {\n percent = 1 - lastPercent;\n }\n\n var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise\n\n var angleDelta = 2 * Math.PI * percent;\n var angleEnd = angleStart + angleDelta; // ignore if\n // - zero size\n // - we're already beyond the full circle\n // - adding the current slice would go beyond the full circle\n\n if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {\n continue;\n }\n\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, angleStart, angleEnd);\n context.closePath();\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n context.fill();\n lastPercent += percent;\n }\n };\n\n var CRp$4 = {};\n var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined';\n\n CRp$4.getPixelRatio = function () {\n var context = this.data.contexts[0];\n\n if (this.forcedPixelRatio != null) {\n return this.forcedPixelRatio;\n }\n\n var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef\n };\n\n CRp$4.paintCache = function (context) {\n var caches = this.paintCaches = this.paintCaches || [];\n var needToCreateCache = true;\n var cache;\n\n for (var i = 0; i < caches.length; i++) {\n cache = caches[i];\n\n if (cache.context === context) {\n needToCreateCache = false;\n break;\n }\n }\n\n if (needToCreateCache) {\n cache = {\n context: context\n };\n caches.push(cache);\n }\n\n return cache;\n };\n\n CRp$4.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) {\n var gradientStyle;\n var usePaths = this.usePaths();\n var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value,\n positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue;\n\n if (fill === 'radial-gradient') {\n if (ele.isEdge()) {\n var start = ele.sourceEndpoint(),\n end = ele.targetEndpoint(),\n mid = ele.midpoint();\n var d1 = dist(start, mid);\n var d2 = dist(end, mid);\n gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2));\n } else {\n var pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n width = ele.paddedWidth(),\n height = ele.paddedHeight();\n gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height));\n }\n } else {\n if (ele.isEdge()) {\n var _start = ele.sourceEndpoint(),\n _end = ele.targetEndpoint();\n\n gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y);\n } else {\n var _pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n _width = ele.paddedWidth(),\n _height = ele.paddedHeight(),\n halfWidth = _width / 2,\n halfHeight = _height / 2;\n\n var direction = ele.pstyle('background-gradient-direction').value;\n\n switch (direction) {\n case 'to-bottom':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight);\n break;\n\n case 'to-top':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight);\n break;\n\n case 'to-left':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y);\n break;\n\n case 'to-right':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y);\n break;\n\n case 'to-bottom-right':\n case 'to-right-bottom':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight);\n break;\n\n case 'to-top-right':\n case 'to-right-top':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight);\n break;\n\n case 'to-bottom-left':\n case 'to-left-bottom':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight);\n break;\n\n case 'to-top-left':\n case 'to-left-top':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight);\n break;\n }\n }\n }\n\n if (!gradientStyle) return null; // invalid gradient style\n\n var hasPositions = positions.length === colors.length;\n var length = colors.length;\n\n for (var i = 0; i < length; i++) {\n gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')');\n }\n\n return gradientStyle;\n };\n\n CRp$4.gradientFillStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n\n context.fillStyle = gradientStyle;\n };\n\n CRp$4.colorFillStyle = function (context, r, g, b, a) {\n context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching\n // var cache = this.paintCache(context);\n // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // if( cache.fillStyle !== fillStyle ){\n // context.fillStyle = cache.fillStyle = fillStyle;\n // }\n };\n\n CRp$4.eleFillStyle = function (context, ele, opacity) {\n var backgroundFill = ele.pstyle('background-fill').value;\n\n if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') {\n this.gradientFillStyle(context, ele, backgroundFill, opacity);\n } else {\n var backgroundColor = ele.pstyle('background-color').value;\n this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity);\n }\n };\n\n CRp$4.gradientStrokeStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n\n context.strokeStyle = gradientStyle;\n };\n\n CRp$4.colorStrokeStyle = function (context, r, g, b, a) {\n context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching\n // var cache = this.paintCache(context);\n // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // if( cache.strokeStyle !== strokeStyle ){\n // context.strokeStyle = cache.strokeStyle = strokeStyle;\n // }\n };\n\n CRp$4.eleStrokeStyle = function (context, ele, opacity) {\n var lineFill = ele.pstyle('line-fill').value;\n\n if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') {\n this.gradientStrokeStyle(context, ele, lineFill, opacity);\n } else {\n var lineColor = ele.pstyle('line-color').value;\n this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity);\n }\n }; // Resize canvas\n\n\n CRp$4.matchCanvasSize = function (container) {\n var r = this;\n var data = r.data;\n var bb = r.findContainerClientCoords();\n var width = bb[2];\n var height = bb[3];\n var pixelRatio = r.getPixelRatio();\n var mbPxRatio = r.motionBlurPxRatio;\n\n if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) {\n pixelRatio = mbPxRatio;\n }\n\n var canvasWidth = width * pixelRatio;\n var canvasHeight = height * pixelRatio;\n var canvas;\n\n if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) {\n return; // save cycles if same\n }\n\n r.fontCaches = null; // resizing resets the style\n\n var canvasContainer = data.canvasContainer;\n canvasContainer.style.width = width + 'px';\n canvasContainer.style.height = height + 'px';\n\n for (var i = 0; i < r.CANVAS_LAYERS; i++) {\n canvas = data.canvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n for (var i = 0; i < r.BUFFER_COUNT; i++) {\n canvas = data.bufferCanvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n r.textureMult = 1;\n\n if (pixelRatio <= 1) {\n canvas = data.bufferCanvases[r.TEXTURE_BUFFER];\n r.textureMult = 2;\n canvas.width = canvasWidth * r.textureMult;\n canvas.height = canvasHeight * r.textureMult;\n }\n\n r.canvasWidth = canvasWidth;\n r.canvasHeight = canvasHeight;\n };\n\n CRp$4.renderTo = function (cxt, zoom, pan, pxRatio) {\n this.render({\n forcedContext: cxt,\n forcedZoom: zoom,\n forcedPan: pan,\n drawAllLayers: true,\n forcedPxRatio: pxRatio\n });\n };\n\n CRp$4.render = function (options) {\n options = options || staticEmptyObject();\n var forcedContext = options.forcedContext;\n var drawAllLayers = options.drawAllLayers;\n var drawOnlyNodeLayer = options.drawOnlyNodeLayer;\n var forcedZoom = options.forcedZoom;\n var forcedPan = options.forcedPan;\n var r = this;\n var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio;\n var cy = r.cy;\n var data = r.data;\n var needDraw = data.canvasNeedsRedraw;\n var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming);\n var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur;\n var mbPxRatio = r.motionBlurPxRatio;\n var hasCompoundNodes = cy.hasCompoundNodes();\n var inNodeDragGesture = r.hoverData.draggingEles;\n var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false;\n motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection;\n var motionBlurFadeEffect = motionBlur;\n\n if (!forcedContext) {\n if (r.prevPxRatio !== pixelRatio) {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n\n r.prevPxRatio = pixelRatio;\n }\n\n if (!forcedContext && r.motionBlurTimeout) {\n clearTimeout(r.motionBlurTimeout);\n }\n\n if (motionBlur) {\n if (r.mbFrames == null) {\n r.mbFrames = 0;\n }\n\n r.mbFrames++;\n\n if (r.mbFrames < 3) {\n // need several frames before even high quality motionblur\n motionBlurFadeEffect = false;\n } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing)\n\n\n if (r.mbFrames > r.minMbLowQualFrames) {\n //r.fullQualityMb = false;\n r.motionBlurPxRatio = r.mbPxRBlurry;\n }\n }\n\n if (r.clearingMotionBlur) {\n r.motionBlurPxRatio = 1;\n } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame\n // because a rogue async texture frame would clear needDraw\n\n\n if (r.textureDrawLastFrame && !textureDraw) {\n needDraw[r.NODE] = true;\n needDraw[r.SELECT_BOX] = true;\n }\n\n var style = cy.style();\n var zoom = cy.zoom();\n var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom;\n var pan = cy.pan();\n var effectivePan = {\n x: pan.x,\n y: pan.y\n };\n var vp = {\n zoom: zoom,\n pan: {\n x: pan.x,\n y: pan.y\n }\n };\n var prevVp = r.prevViewport;\n var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed)\n\n if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) {\n r.motionBlurPxRatio = 1;\n }\n\n if (forcedPan) {\n effectivePan = forcedPan;\n } // apply pixel ratio\n\n\n effectiveZoom *= pixelRatio;\n effectivePan.x *= pixelRatio;\n effectivePan.y *= pixelRatio;\n var eles = r.getCachedZSortedEles();\n\n function mbclear(context, x, y, w, h) {\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency);\n context.fillRect(x, y, w, h);\n context.globalCompositeOperation = gco;\n }\n\n function setContextTransform(context, clear) {\n var ePan, eZoom, w, h;\n\n if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) {\n ePan = {\n x: pan.x * mbPxRatio,\n y: pan.y * mbPxRatio\n };\n eZoom = zoom * mbPxRatio;\n w = r.canvasWidth * mbPxRatio;\n h = r.canvasHeight * mbPxRatio;\n } else {\n ePan = effectivePan;\n eZoom = effectiveZoom;\n w = r.canvasWidth;\n h = r.canvasHeight;\n }\n\n context.setTransform(1, 0, 0, 1, 0, 0);\n\n if (clear === 'motionBlur') {\n mbclear(context, 0, 0, w, h);\n } else if (!forcedContext && (clear === undefined || clear)) {\n context.clearRect(0, 0, w, h);\n }\n\n if (!drawAllLayers) {\n context.translate(ePan.x, ePan.y);\n context.scale(eZoom, eZoom);\n }\n\n if (forcedPan) {\n context.translate(forcedPan.x, forcedPan.y);\n }\n\n if (forcedZoom) {\n context.scale(forcedZoom, forcedZoom);\n }\n }\n\n if (!textureDraw) {\n r.textureDrawLastFrame = false;\n }\n\n if (textureDraw) {\n r.textureDrawLastFrame = true;\n\n if (!r.textureCache) {\n r.textureCache = {};\n r.textureCache.bb = cy.mutableElements().boundingBox();\n r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER];\n var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER];\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult);\n r.render({\n forcedContext: cxt,\n drawOnlyNodeLayer: true,\n forcedPxRatio: pixelRatio * r.textureMult\n });\n var vp = r.textureCache.viewport = {\n zoom: cy.zoom(),\n pan: cy.pan(),\n width: r.canvasWidth,\n height: r.canvasHeight\n };\n vp.mpan = {\n x: (0 - vp.pan.x) / vp.zoom,\n y: (0 - vp.pan.y) / vp.zoom\n };\n }\n\n needDraw[r.DRAG] = false;\n needDraw[r.NODE] = false;\n var context = data.contexts[r.NODE];\n var texture = r.textureCache.texture;\n var vp = r.textureCache.viewport;\n context.setTransform(1, 0, 0, 1, 0, 0);\n\n if (motionBlur) {\n mbclear(context, 0, 0, vp.width, vp.height);\n } else {\n context.clearRect(0, 0, vp.width, vp.height);\n }\n\n var outsideBgColor = style.core('outside-texture-bg-color').value;\n var outsideBgOpacity = style.core('outside-texture-bg-opacity').value;\n r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity);\n context.fillRect(0, 0, vp.width, vp.height);\n var zoom = cy.zoom();\n setContextTransform(context, false);\n context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n } else if (r.textureOnViewport && !forcedContext) {\n // clear the cache since we don't need it\n r.textureCache = null;\n }\n\n var extent = cy.extent();\n var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated();\n var hideEdges = r.hideEdgesOnViewport && vpManip;\n var needMbClear = [];\n needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur;\n\n if (needMbClear[r.NODE]) {\n r.clearedForMotionBlur[r.NODE] = true;\n }\n\n needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur;\n\n if (needMbClear[r.DRAG]) {\n r.clearedForMotionBlur[r.DRAG] = true;\n }\n\n if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) {\n var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]);\n var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined;\n setContextTransform(context, clear);\n\n if (hideEdges) {\n r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent);\n } else {\n r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent);\n }\n\n if (r.debug) {\n r.drawDebugPoints(context, eles.nondrag);\n }\n\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.NODE] = false;\n }\n }\n\n if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) {\n var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]);\n setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined);\n\n if (hideEdges) {\n r.drawCachedNodes(context, eles.drag, pixelRatio, extent);\n } else {\n r.drawCachedElements(context, eles.drag, pixelRatio, extent);\n }\n\n if (r.debug) {\n r.drawDebugPoints(context, eles.drag);\n }\n\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.DRAG] = false;\n }\n }\n\n if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) {\n var context = forcedContext || data.contexts[r.SELECT_BOX];\n setContextTransform(context);\n\n if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) {\n var zoom = r.cy.zoom();\n var borderWidth = style.core('selection-box-border-width').value / zoom;\n context.lineWidth = borderWidth;\n context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n\n if (borderWidth > 0) {\n context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n }\n }\n\n if (data.bgActivePosistion && !r.hoverData.selecting) {\n var zoom = r.cy.zoom();\n var pos = data.bgActivePosistion;\n context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')';\n context.beginPath();\n context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI);\n context.fill();\n }\n\n var timeToRender = r.lastRedrawTime;\n\n if (r.showFps && timeToRender) {\n timeToRender = Math.round(timeToRender);\n var fps = Math.round(1000 / timeToRender);\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = 'rgba(255, 0, 0, 0.75)';\n context.strokeStyle = 'rgba(255, 0, 0, 0.75)';\n context.lineWidth = 1;\n context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20);\n var maxFps = 60;\n context.strokeRect(0, 30, 250, 20);\n context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20);\n }\n\n if (!drawAllLayers) {\n needDraw[r.SELECT_BOX] = false;\n }\n } // motionblur: blit rendered blurry frames\n\n\n if (motionBlur && mbPxRatio !== 1) {\n var cxtNode = data.contexts[r.NODE];\n var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE];\n var cxtDrag = data.contexts[r.DRAG];\n var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG];\n\n var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) {\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n\n if (needClear || !motionBlurFadeEffect) {\n cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n } else {\n mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight);\n }\n\n var pxr = mbPxRatio;\n cxt.drawImage(txt, // img\n 0, 0, // sx, sy\n r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh\n 0, 0, // x, y\n r.canvasWidth, r.canvasHeight // w, h\n );\n };\n\n if (needDraw[r.NODE] || needMbClear[r.NODE]) {\n drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]);\n needDraw[r.NODE] = false;\n }\n\n if (needDraw[r.DRAG] || needMbClear[r.DRAG]) {\n drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]);\n needDraw[r.DRAG] = false;\n }\n }\n\n r.prevViewport = vp;\n\n if (r.clearingMotionBlur) {\n r.clearingMotionBlur = false;\n r.motionBlurCleared = true;\n r.motionBlur = true;\n }\n\n if (motionBlur) {\n r.motionBlurTimeout = setTimeout(function () {\n r.motionBlurTimeout = null;\n r.clearedForMotionBlur[r.NODE] = false;\n r.clearedForMotionBlur[r.DRAG] = false;\n r.motionBlur = false;\n r.clearingMotionBlur = !textureDraw;\n r.mbFrames = 0;\n needDraw[r.NODE] = true;\n needDraw[r.DRAG] = true;\n r.redraw();\n }, motionBlurDelay);\n }\n\n if (!forcedContext) {\n cy.emit('render');\n }\n };\n\n var CRp$3 = {}; // @O Polygon drawing\n\n CRp$3.drawPolygonPath = function (context, x, y, width, height, points) {\n var halfW = width / 2;\n var halfH = height / 2;\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(x + halfW * points[0], y + halfH * points[1]);\n\n for (var i = 1; i < points.length / 2; i++) {\n context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]);\n }\n\n context.closePath();\n };\n\n CRp$3.drawRoundPolygonPath = function (context, x, y, width, height, points) {\n var halfW = width / 2;\n var halfH = height / 2;\n var cornerRadius = getRoundPolygonRadius(width, height);\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n for (var _i = 0; _i < points.length / 4; _i++) {\n var sourceUv = void 0,\n destUv = void 0;\n\n if (_i === 0) {\n sourceUv = points.length - 2;\n } else {\n sourceUv = _i * 4 - 2;\n }\n\n destUv = _i * 4 + 2;\n var px = x + halfW * points[_i * 4];\n var py = y + halfH * points[_i * 4 + 1];\n var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1];\n var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2);\n var cp0x = px - offset * points[sourceUv];\n var cp0y = py - offset * points[sourceUv + 1];\n var cp1x = px + offset * points[destUv];\n var cp1y = py + offset * points[destUv + 1];\n\n if (_i === 0) {\n context.moveTo(cp0x, cp0y);\n } else {\n context.lineTo(cp0x, cp0y);\n }\n\n context.arcTo(px, py, cp1x, cp1y, cornerRadius);\n }\n\n context.closePath();\n }; // Round rectangle drawing\n\n\n CRp$3.drawRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n\n if (context.beginPath) {\n context.beginPath();\n } // Start at top middle\n\n\n context.moveTo(x, y - halfHeight); // Arc from middle top to right side\n\n context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom\n\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side\n\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder\n\n context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line\n\n context.lineTo(x, y - halfHeight);\n context.closePath();\n };\n\n CRp$3.drawBottomRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n\n if (context.beginPath) {\n context.beginPath();\n } // Start at top middle\n\n\n context.moveTo(x, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight);\n context.lineTo(x + halfWidth, y);\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n context.lineTo(x - halfWidth, y - halfHeight);\n context.lineTo(x, y - halfHeight);\n context.closePath();\n };\n\n CRp$3.drawCutRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerLength = getCutRectangleCornerLength();\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(x - halfWidth + cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth - cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight + cornerLength);\n context.lineTo(x + halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x + halfWidth - cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth + cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x - halfWidth, y - halfHeight + cornerLength);\n context.closePath();\n };\n\n CRp$3.drawBarrelPath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var xBegin = x - halfWidth;\n var xEnd = x + halfWidth;\n var yBegin = y - halfHeight;\n var yEnd = y + halfHeight;\n var barrelCurveConstants = getBarrelCurveConstants(width, height);\n var wOffset = barrelCurveConstants.widthOffset;\n var hOffset = barrelCurveConstants.heightOffset;\n var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset;\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(xBegin, yBegin + hOffset);\n context.lineTo(xBegin, yEnd - hOffset);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd);\n context.lineTo(xEnd - wOffset, yEnd);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset);\n context.lineTo(xEnd, yBegin + hOffset);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin);\n context.lineTo(xBegin + wOffset, yBegin);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset);\n context.closePath();\n };\n\n var sin0 = Math.sin(0);\n var cos0 = Math.cos(0);\n var sin = {};\n var cos = {};\n var ellipseStepSize = Math.PI / 40;\n\n for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n sin[i] = Math.sin(i);\n cos[i] = Math.cos(i);\n }\n\n CRp$3.drawEllipsePath = function (context, centerX, centerY, width, height) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n if (context.ellipse) {\n context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n var xPos, yPos;\n var rw = width / 2;\n var rh = height / 2;\n\n for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0;\n yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0;\n\n if (i === 0) {\n context.moveTo(xPos, yPos);\n } else {\n context.lineTo(xPos, yPos);\n }\n }\n }\n\n context.closePath();\n };\n\n /* global atob, ArrayBuffer, Uint8Array, Blob */\n var CRp$2 = {};\n\n CRp$2.createBuffer = function (w, h) {\n var buffer = document.createElement('canvas'); // eslint-disable-line no-undef\n\n buffer.width = w;\n buffer.height = h;\n return [buffer, buffer.getContext('2d')];\n };\n\n CRp$2.bufferCanvasImage = function (options) {\n var cy = this.cy;\n var eles = cy.mutableElements();\n var bb = eles.boundingBox();\n var ctrRect = this.findContainerClientCoords();\n var width = options.full ? Math.ceil(bb.w) : ctrRect[2];\n var height = options.full ? Math.ceil(bb.h) : ctrRect[3];\n var specdMaxDims = number$1(options.maxWidth) || number$1(options.maxHeight);\n var pxRatio = this.getPixelRatio();\n var scale = 1;\n\n if (options.scale !== undefined) {\n width *= options.scale;\n height *= options.scale;\n scale = options.scale;\n } else if (specdMaxDims) {\n var maxScaleW = Infinity;\n var maxScaleH = Infinity;\n\n if (number$1(options.maxWidth)) {\n maxScaleW = scale * options.maxWidth / width;\n }\n\n if (number$1(options.maxHeight)) {\n maxScaleH = scale * options.maxHeight / height;\n }\n\n scale = Math.min(maxScaleW, maxScaleH);\n width *= scale;\n height *= scale;\n }\n\n if (!specdMaxDims) {\n width *= pxRatio;\n height *= pxRatio;\n scale *= pxRatio;\n }\n\n var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n buffCanvas.width = width;\n buffCanvas.height = height;\n buffCanvas.style.width = width + 'px';\n buffCanvas.style.height = height + 'px';\n var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size\n\n if (width > 0 && height > 0) {\n buffCxt.clearRect(0, 0, width, height);\n buffCxt.globalCompositeOperation = 'source-over';\n var zsortedEles = this.getCachedZSortedEles();\n\n if (options.full) {\n // draw the full bounds of the graph\n buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(bb.x1 * scale, bb.y1 * scale);\n } else {\n // draw the current view\n var pan = cy.pan();\n var translation = {\n x: pan.x * scale,\n y: pan.y * scale\n };\n scale *= cy.zoom();\n buffCxt.translate(translation.x, translation.y);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(-translation.x, -translation.y);\n } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs\n\n\n if (options.bg) {\n buffCxt.globalCompositeOperation = 'destination-over';\n buffCxt.fillStyle = options.bg;\n buffCxt.rect(0, 0, width, height);\n buffCxt.fill();\n }\n }\n\n return buffCanvas;\n };\n\n function b64ToBlob(b64, mimeType) {\n var bytes = atob(b64);\n var buff = new ArrayBuffer(bytes.length);\n var buffUint8 = new Uint8Array(buff);\n\n for (var i = 0; i < bytes.length; i++) {\n buffUint8[i] = bytes.charCodeAt(i);\n }\n\n return new Blob([buff], {\n type: mimeType\n });\n }\n\n function b64UriToB64(b64uri) {\n var i = b64uri.indexOf(',');\n return b64uri.substr(i + 1);\n }\n\n function output(options, canvas, mimeType) {\n var getB64Uri = function getB64Uri() {\n return canvas.toDataURL(mimeType, options.quality);\n };\n\n switch (options.output) {\n case 'blob-promise':\n return new Promise$1(function (resolve, reject) {\n try {\n canvas.toBlob(function (blob) {\n if (blob != null) {\n resolve(blob);\n } else {\n reject(new Error('`canvas.toBlob()` sent a null value in its callback'));\n }\n }, mimeType, options.quality);\n } catch (err) {\n reject(err);\n }\n });\n\n case 'blob':\n return b64ToBlob(b64UriToB64(getB64Uri()), mimeType);\n\n case 'base64':\n return b64UriToB64(getB64Uri());\n\n case 'base64uri':\n default:\n return getB64Uri();\n }\n }\n\n CRp$2.png = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/png');\n };\n\n CRp$2.jpg = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/jpeg');\n };\n\n var CRp$1 = {};\n\n CRp$1.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) {\n switch (name) {\n case 'ellipse':\n return this.drawEllipsePath(context, centerX, centerY, width, height);\n\n case 'polygon':\n return this.drawPolygonPath(context, centerX, centerY, width, height, points);\n\n case 'round-polygon':\n return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points);\n\n case 'roundrectangle':\n case 'round-rectangle':\n return this.drawRoundRectanglePath(context, centerX, centerY, width, height);\n\n case 'cutrectangle':\n case 'cut-rectangle':\n return this.drawCutRectanglePath(context, centerX, centerY, width, height);\n\n case 'bottomroundrectangle':\n case 'bottom-round-rectangle':\n return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height);\n\n case 'barrel':\n return this.drawBarrelPath(context, centerX, centerY, width, height);\n }\n };\n\n var CR = CanvasRenderer;\n var CRp = CanvasRenderer.prototype;\n CRp.CANVAS_LAYERS = 3; //\n\n CRp.SELECT_BOX = 0;\n CRp.DRAG = 1;\n CRp.NODE = 2;\n CRp.BUFFER_COUNT = 3; //\n\n CRp.TEXTURE_BUFFER = 0;\n CRp.MOTIONBLUR_BUFFER_NODE = 1;\n CRp.MOTIONBLUR_BUFFER_DRAG = 2;\n\n function CanvasRenderer(options) {\n var r = this;\n r.data = {\n canvases: new Array(CRp.CANVAS_LAYERS),\n contexts: new Array(CRp.CANVAS_LAYERS),\n canvasNeedsRedraw: new Array(CRp.CANVAS_LAYERS),\n bufferCanvases: new Array(CRp.BUFFER_COUNT),\n bufferContexts: new Array(CRp.CANVAS_LAYERS)\n };\n var tapHlOffAttr = '-webkit-tap-highlight-color';\n var tapHlOffStyle = 'rgba(0,0,0,0)';\n r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef\n\n var containerStyle = r.data.canvasContainer.style;\n r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle;\n containerStyle.position = 'relative';\n containerStyle.zIndex = '0';\n containerStyle.overflow = 'hidden';\n var container = options.cy.container();\n container.appendChild(r.data.canvasContainer);\n container.style[tapHlOffAttr] = tapHlOffStyle;\n var styleMap = {\n '-webkit-user-select': 'none',\n '-moz-user-select': '-moz-none',\n 'user-select': 'none',\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n 'outline-style': 'none'\n };\n\n if (ms()) {\n styleMap['-ms-touch-action'] = 'none';\n styleMap['touch-action'] = 'none';\n }\n\n for (var i = 0; i < CRp.CANVAS_LAYERS; i++) {\n var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n\n r.data.contexts[i] = canvas.getContext('2d');\n Object.keys(styleMap).forEach(function (k) {\n canvas.style[k] = styleMap[k];\n });\n canvas.style.position = 'absolute';\n canvas.setAttribute('data-id', 'layer' + i);\n canvas.style.zIndex = String(CRp.CANVAS_LAYERS - i);\n r.data.canvasContainer.appendChild(canvas);\n r.data.canvasNeedsRedraw[i] = false;\n }\n\n r.data.topCanvas = r.data.canvases[0];\n r.data.canvases[CRp.NODE].setAttribute('data-id', 'layer' + CRp.NODE + '-node');\n r.data.canvases[CRp.SELECT_BOX].setAttribute('data-id', 'layer' + CRp.SELECT_BOX + '-selectbox');\n r.data.canvases[CRp.DRAG].setAttribute('data-id', 'layer' + CRp.DRAG + '-drag');\n\n for (var i = 0; i < CRp.BUFFER_COUNT; i++) {\n r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n\n r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d');\n r.data.bufferCanvases[i].style.position = 'absolute';\n r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i);\n r.data.bufferCanvases[i].style.zIndex = String(-i - 1);\n r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]);\n }\n\n r.pathsEnabled = true;\n var emptyBb = makeBoundingBox();\n\n var getBoxCenter = function getBoxCenter(bb) {\n return {\n x: (bb.x1 + bb.x2) / 2,\n y: (bb.y1 + bb.y2) / 2\n };\n };\n\n var getCenterOffset = function getCenterOffset(bb) {\n return {\n x: -bb.w / 2,\n y: -bb.h / 2\n };\n };\n\n var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {\n var _p = ele[0]._private;\n var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp;\n return !same;\n };\n\n var getStyleKey = function getStyleKey(ele) {\n return ele[0]._private.nodeKey;\n };\n\n var getLabelKey = function getLabelKey(ele) {\n return ele[0]._private.labelStyleKey;\n };\n\n var getSourceLabelKey = function getSourceLabelKey(ele) {\n return ele[0]._private.sourceLabelStyleKey;\n };\n\n var getTargetLabelKey = function getTargetLabelKey(ele) {\n return ele[0]._private.targetLabelStyleKey;\n };\n\n var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElement(context, ele, bb, false, false, useEleOpacity);\n };\n\n var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity);\n };\n\n var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity);\n };\n\n var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity);\n };\n\n var getElementBox = function getElementBox(ele) {\n ele.boundingBox();\n return ele[0]._private.bodyBounds;\n };\n\n var getLabelBox = function getLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.main || emptyBb;\n };\n\n var getSourceLabelBox = function getSourceLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.source || emptyBb;\n };\n\n var getTargetLabelBox = function getTargetLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.target || emptyBb;\n };\n\n var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) {\n return scaledLabelShown;\n };\n\n var getElementRotationPoint = function getElementRotationPoint(ele) {\n return getBoxCenter(getElementBox(ele));\n };\n\n var addTextMargin = function addTextMargin(prefix, pt, ele) {\n var pre = prefix ? prefix + '-' : '';\n return {\n x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue,\n y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue\n };\n };\n\n var getRsPt = function getRsPt(ele, x, y) {\n var rs = ele[0]._private.rscratch;\n return {\n x: rs[x],\n y: rs[y]\n };\n };\n\n var getLabelRotationPoint = function getLabelRotationPoint(ele) {\n return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele);\n };\n\n var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {\n return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele);\n };\n\n var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {\n return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele);\n };\n\n var getElementRotationOffset = function getElementRotationOffset(ele) {\n return getCenterOffset(getElementBox(ele));\n };\n\n var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {\n return getCenterOffset(getSourceLabelBox(ele));\n };\n\n var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {\n return getCenterOffset(getTargetLabelBox(ele));\n };\n\n var getLabelRotationOffset = function getLabelRotationOffset(ele) {\n var bb = getLabelBox(ele);\n var p = getCenterOffset(getLabelBox(ele));\n\n if (ele.isNode()) {\n switch (ele.pstyle('text-halign').value) {\n case 'left':\n p.x = -bb.w;\n break;\n\n case 'right':\n p.x = 0;\n break;\n }\n\n switch (ele.pstyle('text-valign').value) {\n case 'top':\n p.y = -bb.h;\n break;\n\n case 'bottom':\n p.y = 0;\n break;\n }\n }\n\n return p;\n };\n\n var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, {\n getKey: getStyleKey,\n doesEleInvalidateKey: backgroundTimestampHasChanged,\n drawElement: drawElement,\n getBoundingBox: getElementBox,\n getRotationPoint: getElementRotationPoint,\n getRotationOffset: getElementRotationOffset,\n allowEdgeTxrCaching: false,\n allowParentTxrCaching: false\n });\n var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, {\n getKey: getLabelKey,\n drawElement: drawLabel,\n getBoundingBox: getLabelBox,\n getRotationPoint: getLabelRotationPoint,\n getRotationOffset: getLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, {\n getKey: getSourceLabelKey,\n drawElement: drawSourceLabel,\n getBoundingBox: getSourceLabelBox,\n getRotationPoint: getSourceLabelRotationPoint,\n getRotationOffset: getSourceLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, {\n getKey: getTargetLabelKey,\n drawElement: drawTargetLabel,\n getBoundingBox: getTargetLabelBox,\n getRotationPoint: getTargetLabelRotationPoint,\n getRotationOffset: getTargetLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r);\n r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) {\n // each cache should check for sub-key diff to see that the update affects that cache particularly\n eleTxrCache.invalidateElements(eles);\n lblTxrCache.invalidateElements(eles);\n slbTxrCache.invalidateElements(eles);\n tlbTxrCache.invalidateElements(eles); // any change invalidates the layers\n\n lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _p = eles[_i]._private;\n _p.oldBackgroundTimestamp = _p.backgroundTimestamp;\n }\n });\n\n var refineInLayers = function refineInLayers(reqs) {\n for (var i = 0; i < reqs.length; i++) {\n lyrTxrCache.enqueueElementRefinement(reqs[i].ele);\n }\n };\n\n eleTxrCache.onDequeue(refineInLayers);\n lblTxrCache.onDequeue(refineInLayers);\n slbTxrCache.onDequeue(refineInLayers);\n tlbTxrCache.onDequeue(refineInLayers);\n }\n\n CRp.redrawHint = function (group, bool) {\n var r = this;\n\n switch (group) {\n case 'eles':\n r.data.canvasNeedsRedraw[CRp.NODE] = bool;\n break;\n\n case 'drag':\n r.data.canvasNeedsRedraw[CRp.DRAG] = bool;\n break;\n\n case 'select':\n r.data.canvasNeedsRedraw[CRp.SELECT_BOX] = bool;\n break;\n }\n }; // whether to use Path2D caching for drawing\n\n\n var pathsImpld = typeof Path2D !== 'undefined';\n\n CRp.path2dEnabled = function (on) {\n if (on === undefined) {\n return this.pathsEnabled;\n }\n\n this.pathsEnabled = on ? true : false;\n };\n\n CRp.usePaths = function () {\n return pathsImpld && this.pathsEnabled;\n };\n\n CRp.setImgSmoothing = function (context, bool) {\n if (context.imageSmoothingEnabled != null) {\n context.imageSmoothingEnabled = bool;\n } else {\n context.webkitImageSmoothingEnabled = bool;\n context.mozImageSmoothingEnabled = bool;\n context.msImageSmoothingEnabled = bool;\n }\n };\n\n CRp.getImgSmoothing = function (context) {\n if (context.imageSmoothingEnabled != null) {\n return context.imageSmoothingEnabled;\n } else {\n return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled;\n }\n };\n\n CRp.makeOffscreenCanvas = function (width, height) {\n var canvas;\n\n if ((typeof OffscreenCanvas === \"undefined\" ? \"undefined\" : _typeof(OffscreenCanvas)) !== (\"undefined\" )) {\n canvas = new OffscreenCanvas(width, height);\n } else {\n canvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n canvas.width = width;\n canvas.height = height;\n }\n\n return canvas;\n };\n\n [CRp$a, CRp$9, CRp$8, CRp$7, CRp$6, CRp$5, CRp$4, CRp$3, CRp$2, CRp$1].forEach(function (props) {\n extend(CRp, props);\n });\n\n var renderer = [{\n name: 'null',\n impl: NullRenderer\n }, {\n name: 'base',\n impl: BR\n }, {\n name: 'canvas',\n impl: CR\n }];\n\n var incExts = [{\n type: 'layout',\n extensions: layout\n }, {\n type: 'renderer',\n extensions: renderer\n }];\n\n var extensions = {}; // registered modules for extensions, indexed by name\n\n var modules = {};\n\n function setExtension(type, name, registrant) {\n var ext = registrant;\n\n var overrideErr = function overrideErr(field) {\n warn('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden');\n };\n\n if (type === 'core') {\n if (Core.prototype[name]) {\n return overrideErr(name);\n } else {\n Core.prototype[name] = registrant;\n }\n } else if (type === 'collection') {\n if (Collection.prototype[name]) {\n return overrideErr(name);\n } else {\n Collection.prototype[name] = registrant;\n }\n } else if (type === 'layout') {\n // fill in missing layout functions in the prototype\n var Layout = function Layout(options) {\n this.options = options;\n registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on()\n\n if (!plainObject(this._private)) {\n this._private = {};\n }\n\n this._private.cy = options.cy;\n this._private.listeners = [];\n this.createEmitter();\n };\n\n var layoutProto = Layout.prototype = Object.create(registrant.prototype);\n var optLayoutFns = [];\n\n for (var i = 0; i < optLayoutFns.length; i++) {\n var fnName = optLayoutFns[i];\n\n layoutProto[fnName] = layoutProto[fnName] || function () {\n return this;\n };\n } // either .start() or .run() is defined, so autogen the other\n\n\n if (layoutProto.start && !layoutProto.run) {\n layoutProto.run = function () {\n this.start();\n return this;\n };\n } else if (!layoutProto.start && layoutProto.run) {\n layoutProto.start = function () {\n this.run();\n return this;\n };\n }\n\n var regStop = registrant.prototype.stop;\n\n layoutProto.stop = function () {\n var opts = this.options;\n\n if (opts && opts.animate) {\n var anis = this.animations;\n\n if (anis) {\n for (var _i = 0; _i < anis.length; _i++) {\n anis[_i].stop();\n }\n }\n }\n\n if (regStop) {\n regStop.call(this);\n } else {\n this.emit('layoutstop');\n }\n\n return this;\n };\n\n if (!layoutProto.destroy) {\n layoutProto.destroy = function () {\n return this;\n };\n }\n\n layoutProto.cy = function () {\n return this._private.cy;\n };\n\n var getCy = function getCy(layout) {\n return layout._private.cy;\n };\n\n var emitterOpts = {\n addEventFields: function addEventFields(layout, evt) {\n evt.layout = layout;\n evt.cy = getCy(layout);\n evt.target = layout;\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(layout) {\n return getCy(layout);\n }\n };\n extend(layoutProto, {\n createEmitter: function createEmitter() {\n this._private.emitter = new Emitter(emitterOpts, this);\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(evt, cb) {\n this.emitter().on(evt, cb);\n return this;\n },\n one: function one(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n once: function once(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n removeListener: function removeListener(evt, cb) {\n this.emitter().removeListener(evt, cb);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n emit: function emit(evt, params) {\n this.emitter().emit(evt, params);\n return this;\n }\n });\n define.eventAliasesOn(layoutProto);\n ext = Layout; // replace with our wrapped layout\n } else if (type === 'renderer' && name !== 'null' && name !== 'base') {\n // user registered renderers inherit from base\n var BaseRenderer = getExtension('renderer', 'base');\n var bProto = BaseRenderer.prototype;\n var RegistrantRenderer = registrant;\n var rProto = registrant.prototype;\n\n var Renderer = function Renderer() {\n BaseRenderer.apply(this, arguments);\n RegistrantRenderer.apply(this, arguments);\n };\n\n var proto = Renderer.prototype;\n\n for (var pName in bProto) {\n var pVal = bProto[pName];\n var existsInR = rProto[pName] != null;\n\n if (existsInR) {\n return overrideErr(pName);\n }\n\n proto[pName] = pVal; // take impl from base\n }\n\n for (var _pName in rProto) {\n proto[_pName] = rProto[_pName]; // take impl from registrant\n }\n\n bProto.clientFunctions.forEach(function (name) {\n proto[name] = proto[name] || function () {\n error('Renderer does not implement `renderer.' + name + '()` on its prototype');\n };\n });\n ext = Renderer;\n } else if (type === '__proto__' || type === 'constructor' || type === 'prototype') {\n // to avoid potential prototype pollution\n return error(type + ' is an illegal type to be registered, possibly lead to prototype pollutions');\n }\n\n return setMap({\n map: extensions,\n keys: [type, name],\n value: ext\n });\n }\n\n function getExtension(type, name) {\n return getMap({\n map: extensions,\n keys: [type, name]\n });\n }\n\n function setModule(type, name, moduleType, moduleName, registrant) {\n return setMap({\n map: modules,\n keys: [type, name, moduleType, moduleName],\n value: registrant\n });\n }\n\n function getModule(type, name, moduleType, moduleName) {\n return getMap({\n map: modules,\n keys: [type, name, moduleType, moduleName]\n });\n }\n\n var extension = function extension() {\n // e.g. extension('renderer', 'svg')\n if (arguments.length === 2) {\n return getExtension.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', { ... })\n else if (arguments.length === 3) {\n return setExtension.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse')\n else if (arguments.length === 4) {\n return getModule.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... })\n else if (arguments.length === 5) {\n return setModule.apply(null, arguments);\n } else {\n error('Invalid extension access syntax');\n }\n }; // allows a core instance to access extensions internally\n\n\n Core.prototype.extension = extension; // included extensions\n\n incExts.forEach(function (group) {\n group.extensions.forEach(function (ext) {\n setExtension(group.type, ext.name, ext.impl);\n });\n });\n\n // (useful for init)\n\n var Stylesheet = function Stylesheet() {\n if (!(this instanceof Stylesheet)) {\n return new Stylesheet();\n }\n\n this.length = 0;\n };\n\n var sheetfn = Stylesheet.prototype;\n\n sheetfn.instanceString = function () {\n return 'stylesheet';\n }; // just store the selector to be parsed later\n\n\n sheetfn.selector = function (selector) {\n var i = this.length++;\n this[i] = {\n selector: selector,\n properties: []\n };\n return this; // chaining\n }; // just store the property to be parsed later\n\n\n sheetfn.css = function (name, value) {\n var i = this.length - 1;\n\n if (string(name)) {\n this[i].properties.push({\n name: name,\n value: value\n });\n } else if (plainObject(name)) {\n var map = name;\n var propNames = Object.keys(map);\n\n for (var j = 0; j < propNames.length; j++) {\n var key = propNames[j];\n var mapVal = map[key];\n\n if (mapVal == null) {\n continue;\n }\n\n var prop = Style.properties[key] || Style.properties[dash2camel(key)];\n\n if (prop == null) {\n continue;\n }\n\n var _name = prop.name;\n var _value = mapVal;\n this[i].properties.push({\n name: _name,\n value: _value\n });\n }\n }\n\n return this; // chaining\n };\n\n sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet\n\n sheetfn.generateStyle = function (cy) {\n var style = new Style(cy);\n return this.appendToStyle(style);\n }; // append a dummy stylesheet object on a real style object\n\n\n sheetfn.appendToStyle = function (style) {\n for (var i = 0; i < this.length; i++) {\n var context = this[i];\n var selector = context.selector;\n var props = context.properties;\n style.selector(selector); // apply selector\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n style.css(prop.name, prop.value); // apply property\n }\n }\n\n return style;\n };\n\n var version = \"3.26.0\";\n\n var cytoscape = function cytoscape(options) {\n // if no options specified, use default\n if (options === undefined) {\n options = {};\n } // create instance\n\n\n if (plainObject(options)) {\n return new Core(options);\n } // allow for registration of extensions\n else if (string(options)) {\n return extension.apply(extension, arguments);\n }\n }; // e.g. cytoscape.use( require('cytoscape-foo'), bar )\n\n\n cytoscape.use = function (ext) {\n var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext\n\n args.unshift(cytoscape); // cytoscape is first arg to ext\n\n ext.apply(null, args);\n return this;\n };\n\n cytoscape.warnings = function (bool) {\n return warnings(bool);\n }; // replaced by build system\n\n\n cytoscape.version = version; // expose public apis (mostly for extensions)\n\n cytoscape.stylesheet = cytoscape.Stylesheet = Stylesheet;\n\n return cytoscape;\n\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2N5dG9zY2FwZS9kaXN0L2N5dG9zY2FwZS51bWQuanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSxLQUE0RDtBQUM5RCxFQUFFLENBQ3dHO0FBQzFHLENBQUMsdUJBQXVCOztBQUV4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsOEJBQThCLCtCQUErQjtBQUM3RDs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkNBQTJDLFNBQVM7O0FBRXBEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLCtEQUErRDs7QUFFL0Q7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEI7O0FBRTVCLHVDQUF1Qzs7QUFFdkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsT0FBTztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLE9BQU87QUFDM0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBLHdDQUF3QyxPQUFPO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVDQUF1Qzs7O0FBR3ZDLHNCQUFzQixjQUFjO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVM7O0FBRVQsMEJBQTBCLHNCQUFzQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUJBQXVCLDRCQUE0QjtBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxtQ0FBbUMsMEJBQTBCO0FBQ3RIO0FBQ0EsT0FBTztBQUNQO0FBQ0Esd0NBQXdDLFdBQVc7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxXQUFXO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsV0FBVztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELHNDQUFzQztBQUN2RjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLOztBQUVMLEdBQUc7QUFDSCxHQUFHOztBQUVI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QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjs7QUFFQSxvQkFBb0IsWUFBWTtBQUNoQztBQUNBLE1BQU07OztBQUdOLHFCQUFxQixhQUFhO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUEsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxpR0FBaUc7QUFDakc7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLHFCQUFxQjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7O0FBR0EsK0RBQStEO0FBQy9EO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFF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QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLDJCQUEyQjtBQUMvQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUc7O0FBRVo7QUFDQSw4QkFBOEI7O0FBRTlCO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsR0FBRzs7QUFFWjtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHOztBQUVaO0FBQ0EsOEJBQThCOztBQUU5QjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHOztBQUVaO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUc7O0FBRVo7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsa0NBQWtDOzs7QUFHbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsR0FBRzs7QUFFWix1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQSxTQUFTLEdBQUc7QUFDWjs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxHQUFHOzs7QUFHWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVCxvREFBb0Q7O0FBRXBEO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsR0FBRzs7QUFFWix3Q0FBd0M7O0FBRXhDLGtDQUFrQzs7QUFFbEM7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsR0FBRzs7QUFFWjtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxvQ0FBb0M7OztBQUdwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHOztBQUVaLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBLFNBQVMsR0FBRztBQUNaOztBQUVBO0FBQ0E7QUFDQSxTQUFTLEdBQUc7OztBQUdaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNULG9EQUFvRDs7QUFFcEQ7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxHQUFHOztBQUVaLDBDQUEwQzs7QUFFMUMsa0NBQWtDOztBQUVsQztBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QywyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLHFFQUFxRSw4QkFBOEI7QUFDbkc7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qzs7QUFFOUMsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUiw0Q0FBNEM7O0FBRTVDOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCLFVBQVU7QUFDViw4QkFBOEI7QUFDOUI7QUFDQTs7QUFFQSxzQ0FBc0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckMsdUJBQXVCOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsa0JBQWtCO0FBQzNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyRUFBMkU7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTix1REFBdUQ7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0Esc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2QztBQUNBOztBQUVBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLHFCQUFxQjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLDJCQUEyQjtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLGtCQUFrQjtBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0Isa0JBQWtCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixpQkFBaUI7QUFDekM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLGlCQUFpQjtBQUN6Qyw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsaUJBQWlCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLDBCQUEwQjtBQUMxQjs7QUFFQSxtQkFBbUI7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpQkFBaUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUiwwQkFBMEI7QUFDMUI7O0FBRUEsbUJBQW1CO0FBQ25CO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztB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QUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7O0FBRVIsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUJBQXVCLGtCQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRyxJQUFJOztBQUVQLDRCQUE0Qjs7QUFFNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIsNkNBQTZDOztBQUU3QztBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEM7O0FBRTlDLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQix5QkFBeUI7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLHdCQUF3QjtBQUN4QjtBQUNBOztBQUVBOztBQUVBLG9CQUFvQixzQkFBc0I7QUFDMUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0Isc0JBQXNCO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLHVDQUF1QyxRQUFRO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjs7QUFFQSxzQkFBc0IsNEJBQTRCO0FBQ2xEO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7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QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUEsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUEsc0JBQXNCLGdCQUFnQjtBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQSxRQUFROztBQUVSOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QyxRQUFRO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7OztBQUdULHVDQUF1QyxRQUFRO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOOzs7QUFHQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFR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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBLGlDQUFpQzs7QUFFakM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxvQkFBb0IsNkJBQTZCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FB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QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBLG1CQUFtQjtBQUNuQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBLG1CQUFtQjtBQUNuQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLHNCQUFzQixjQUFjO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUI7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQixLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUI7QUFDbkIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2RUFBNkU7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlOztBQUVmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQSxvREFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1AsbUJBQW1CO0FBQ25CLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNB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QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQkFBc0IsZ0JBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQkFBc0IsZ0JBQWdCO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7O0FBRW5DO0FBQ0E7QUFDQSxtREFBbUQ7O0FBRW5EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixlQUFlO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0U7O0FBRXRFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVosWUFBWTs7QUFFWixjQUFjOztBQUVkLGNBQWM7O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ04sOEJBQThCO0FBQzlCLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ04sOEJBQThCO0FBQzlCLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOEJBQThCLGFBQWE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBOztBQUVBLG1DQUFtQztBQUNuQztBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0Isa0JBQWtCO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsa0JBQWtCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTs7O0FBR1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFF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QUdOLDREQUE0RDs7QUFFNUQ7QUFDQSx1REFBdUQ7O0FBRXZEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixzQkFBc0I7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBLE9BQU87OztBQUdQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsU0FBUztBQUNULFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0M7QUFDeEMsUUFBUTtBQUNSO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsdUJBQXVCO0FBQzNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FB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QTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7O0FBRTdDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwrQ0FBK0M7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsUUFBUTs7QUFFUixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvQkFBb0I7QUFDOUM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIscUJBQXFCO0FBQ2hEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0Esc0NBQXNDOztBQUV0QztBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsZ0NBQWdDOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7O0FBRWpEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNEJBQTRCO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQ7O0FBRXpEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvRUFBb0U7O0FBRXBFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZOztBQUVaLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZOztBQUVaLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQSxZQUFZOztBQUVaOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFD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QSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNB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QUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qyw0Q0FBNEM7O0FBRTVDLHVCQUF1QixrQkFBa0I7QUFDekM7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FB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QUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixLQUFLOzs7QUFHTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBOztBQUVBLHNCQUFzQixzQkFBc0I7QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakI7O0FBRUEsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTDtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDOztBQUVoQyxzQkFBc0Isa0JBQWtCO0FBQ3hDO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsS0FBSzs7O0FBR0w7QUFDQSx5REFBeUQ7O0FBRXpELDZCQUE2Qjs7QUFFN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOzs7QUFHTCwrQkFBK0I7O0FBRS9COztBQUVBOztBQUVBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2N5dG9zY2FwZS9kaXN0L2N5dG9zY2FwZS51bWQuanM/YmY4NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIzLCBUaGUgQ3l0b3NjYXBlIENvbnNvcnRpdW0uXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxuICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg4oCcU29mdHdhcmXigJ0pLCB0byBkZWFsIGluXG4gKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvXG4gKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllc1xuICogb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvXG4gKiBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCDigJxBUyBJU+KAnSwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IGdsb2JhbCB8fCBzZWxmLCBnbG9iYWwuY3l0b3NjYXBlID0gZmFjdG9yeSgpKTtcbn0pKHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICAgIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICAgIHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfSwgX3R5cGVvZihvYmopO1xuICB9XG5cbiAgZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICAgIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwge1xuICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5JDEob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgICByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG4gIH1cblxuICBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gICAgdmFyIF9pID0gYXJyID09IG51bGwgPyBudWxsIDogdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhcnJbU3ltYm9sLml0ZXJhdG9yXSB8fCBhcnJbXCJAQGl0ZXJhdG9yXCJdO1xuXG4gICAgaWYgKF9pID09IG51bGwpIHJldHVybjtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG5cbiAgICB2YXIgX3MsIF9lO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAoX2kgPSBfaS5jYWxsKGFycik7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX2FycjtcbiAgfVxuXG4gIGZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgICBpZiAoIW8pIHJldHVybjtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICAgIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICAgIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gICAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbiAgfVxuXG4gIHZhciBfd2luZG93ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogd2luZG93OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgdmFyIG5hdmlnYXRvciA9IF93aW5kb3cgPyBfd2luZG93Lm5hdmlnYXRvciA6IG51bGw7XG4gIF93aW5kb3cgPyBfd2luZG93LmRvY3VtZW50IDogbnVsbDtcblxuICB2YXIgdHlwZW9mc3RyID0gX3R5cGVvZignJyk7XG5cbiAgdmFyIHR5cGVvZm9iaiA9IF90eXBlb2Yoe30pO1xuXG4gIHZhciB0eXBlb2ZmbiA9IF90eXBlb2YoZnVuY3Rpb24gKCkge30pO1xuXG4gIHZhciB0eXBlb2ZodG1sZWxlID0gdHlwZW9mIEhUTUxFbGVtZW50ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoSFRNTEVsZW1lbnQpO1xuXG4gIHZhciBpbnN0YW5jZVN0ciA9IGZ1bmN0aW9uIGluc3RhbmNlU3RyKG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLmluc3RhbmNlU3RyaW5nICYmIGZuJDYob2JqLmluc3RhbmNlU3RyaW5nKSA/IG9iai5pbnN0YW5jZVN0cmluZygpIDogbnVsbDtcbiAgfTtcblxuICB2YXIgc3RyaW5nID0gZnVuY3Rpb24gc3RyaW5nKG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT0gdHlwZW9mc3RyO1xuICB9O1xuICB2YXIgZm4kNiA9IGZ1bmN0aW9uIGZuKG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IHR5cGVvZmZuO1xuICB9O1xuICB2YXIgYXJyYXkgPSBmdW5jdGlvbiBhcnJheShvYmopIHtcbiAgICByZXR1cm4gIWVsZW1lbnRPckNvbGxlY3Rpb24ob2JqKSAmJiAoQXJyYXkuaXNBcnJheSA/IEFycmF5LmlzQXJyYXkob2JqKSA6IG9iaiAhPSBudWxsICYmIG9iaiBpbnN0YW5jZW9mIEFycmF5KTtcbiAgfTtcbiAgdmFyIHBsYWluT2JqZWN0ID0gZnVuY3Rpb24gcGxhaW5PYmplY3Qob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gdHlwZW9mb2JqICYmICFhcnJheShvYmopICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0O1xuICB9O1xuICB2YXIgb2JqZWN0ID0gZnVuY3Rpb24gb2JqZWN0KG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IHR5cGVvZm9iajtcbiAgfTtcbiAgdmFyIG51bWJlciQxID0gZnVuY3Rpb24gbnVtYmVyKG9iaikge1xuICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBfdHlwZW9mKG9iaikgPT09IF90eXBlb2YoMSkgJiYgIWlzTmFOKG9iaik7XG4gIH07XG4gIHZhciBpbnRlZ2VyID0gZnVuY3Rpb24gaW50ZWdlcihvYmopIHtcbiAgICByZXR1cm4gbnVtYmVyJDEob2JqKSAmJiBNYXRoLmZsb29yKG9iaikgPT09IG9iajtcbiAgfTtcbiAgdmFyIGh0bWxFbGVtZW50ID0gZnVuY3Rpb24gaHRtbEVsZW1lbnQob2JqKSB7XG4gICAgaWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2ZodG1sZWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbCAhPSBvYmogJiYgb2JqIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICB9O1xuICB2YXIgZWxlbWVudE9yQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIGVsZW1lbnRPckNvbGxlY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQob2JqKSB8fCBjb2xsZWN0aW9uKG9iaik7XG4gIH07XG4gIHZhciBlbGVtZW50ID0gZnVuY3Rpb24gZWxlbWVudChvYmopIHtcbiAgICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ2NvbGxlY3Rpb24nICYmIG9iai5fcHJpdmF0ZS5zaW5nbGU7XG4gIH07XG4gIHZhciBjb2xsZWN0aW9uID0gZnVuY3Rpb24gY29sbGVjdGlvbihvYmopIHtcbiAgICByZXR1cm4gaW5zdGFuY2VTdHIob2JqKSA9PT0gJ2NvbGxlY3Rpb24nICYmICFvYmouX3ByaXZhdGUuc2luZ2xlO1xuICB9O1xuICB2YXIgY29yZSA9IGZ1bmN0aW9uIGNvcmUob2JqKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlU3RyKG9iaikgPT09ICdjb3JlJztcbiAgfTtcbiAgdmFyIHN0eWxlc2hlZXQgPSBmdW5jdGlvbiBzdHlsZXNoZWV0KG9iaikge1xuICAgIHJldHVybiBpbnN0YW5jZVN0cihvYmopID09PSAnc3R5bGVzaGVldCc7XG4gIH07XG4gIHZhciBldmVudCA9IGZ1bmN0aW9uIGV2ZW50KG9iaikge1xuICAgIHJldHVybiBpbnN0YW5jZVN0cihvYmopID09PSAnZXZlbnQnO1xuICB9O1xuICB2YXIgZW1wdHlTdHJpbmcgPSBmdW5jdGlvbiBlbXB0eVN0cmluZyhvYmopIHtcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAvLyBudWxsIGlzIGVtcHR5XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gJycgfHwgb2JqLm1hdGNoKC9eXFxzKyQvKSkge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHN0cmluZyBpcyBlbXB0eVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTsgLy8gb3RoZXJ3aXNlLCB3ZSBkb24ndCBrbm93IHdoYXQgd2UndmUgZ290XG4gIH07XG4gIHZhciBkb21FbGVtZW50ID0gZnVuY3Rpb24gZG9tRWxlbWVudChvYmopIHtcbiAgICBpZiAodHlwZW9mIEhUTUxFbGVtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyB3ZSdyZSBub3QgaW4gYSBicm93c2VyIHNvIGl0IGRvZXNuJ3QgbWF0dGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbiAgICB9XG4gIH07XG4gIHZhciBib3VuZGluZ0JveCA9IGZ1bmN0aW9uIGJvdW5kaW5nQm94KG9iaikge1xuICAgIHJldHVybiBwbGFpbk9iamVjdChvYmopICYmIG51bWJlciQxKG9iai54MSkgJiYgbnVtYmVyJDEob2JqLngyKSAmJiBudW1iZXIkMShvYmoueTEpICYmIG51bWJlciQxKG9iai55Mik7XG4gIH07XG4gIHZhciBwcm9taXNlID0gZnVuY3Rpb24gcHJvbWlzZShvYmopIHtcbiAgICByZXR1cm4gb2JqZWN0KG9iaikgJiYgZm4kNihvYmoudGhlbik7XG4gIH07XG4gIHZhciBtcyA9IGZ1bmN0aW9uIG1zKCkge1xuICAgIHJldHVybiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvbXNpZXx0cmlkZW50fGVkZ2UvaSk7XG4gIH07IC8vIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkZXRlY3QgdGhpcy4uLlxuXG4gIHZhciBtZW1vaXplJDEgPSBmdW5jdGlvbiBtZW1vaXplKGZuLCBrZXlGbikge1xuICAgIGlmICgha2V5Rm4pIHtcbiAgICAgIGtleUZuID0gZnVuY3Rpb24ga2V5Rm4oKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZ3Muam9pbignJCcpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbWVtb2l6ZWRGbiA9IGZ1bmN0aW9uIG1lbW9pemVkRm4oKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIHZhciByZXQ7XG4gICAgICB2YXIgayA9IGtleUZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgdmFyIGNhY2hlID0gbWVtb2l6ZWRGbi5jYWNoZTtcblxuICAgICAgaWYgKCEocmV0ID0gY2FjaGVba10pKSB7XG4gICAgICAgIHJldCA9IGNhY2hlW2tdID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcblxuICAgIG1lbW9pemVkRm4uY2FjaGUgPSB7fTtcbiAgICByZXR1cm4gbWVtb2l6ZWRGbjtcbiAgfTtcblxuICB2YXIgY2FtZWwyZGFzaCA9IG1lbW9pemUkMShmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gJy0nICsgdi50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuICB9KTtcbiAgdmFyIGRhc2gyY2FtZWwgPSBtZW1vaXplJDEoZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKC1cXHcpL2csIGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gdlsxXS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICB9KTtcbiAgdmFyIHByZXBlbmRDYW1lbCA9IG1lbW9pemUkMShmdW5jdGlvbiAocHJlZml4LCBzdHIpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpO1xuICB9LCBmdW5jdGlvbiAocHJlZml4LCBzdHIpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgJyQnICsgc3RyO1xuICB9KTtcbiAgdmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cikge1xuICAgIGlmIChlbXB0eVN0cmluZyhzdHIpKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpO1xuICB9O1xuXG4gIHZhciBudW1iZXIgPSAnKD86Wy0rXT8oPzooPzpcXFxcZCt8XFxcXGQqXFxcXC5cXFxcZCspKD86W0VlXVsrLV0/XFxcXGQrKT8pKSc7XG4gIHZhciByZ2JhID0gJ3JnYlthXT9cXFxcKCgnICsgbnVtYmVyICsgJ1slXT8pXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJ1slXT8pXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJykpP1xcXFwpJztcbiAgdmFyIHJnYmFOb0JhY2tSZWZzID0gJ3JnYlthXT9cXFxcKCg/OicgKyBudW1iZXIgKyAnWyVdPylcXFxccyosXFxcXHMqKD86JyArIG51bWJlciArICdbJV0/KVxcXFxzKixcXFxccyooPzonICsgbnVtYmVyICsgJ1slXT8pKD86XFxcXHMqLFxcXFxzKig/OicgKyBudW1iZXIgKyAnKSk/XFxcXCknO1xuICB2YXIgaHNsYSA9ICdoc2xbYV0/XFxcXCgoJyArIG51bWJlciArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyICsgJ1slXSlcXFxccyosXFxcXHMqKCcgKyBudW1iZXIgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooJyArIG51bWJlciArICcpKT9cXFxcKSc7XG4gIHZhciBoc2xhTm9CYWNrUmVmcyA9ICdoc2xbYV0/XFxcXCgoPzonICsgbnVtYmVyICsgJylcXFxccyosXFxcXHMqKD86JyArIG51bWJlciArICdbJV0pXFxcXHMqLFxcXFxzKig/OicgKyBudW1iZXIgKyAnWyVdKSg/OlxcXFxzKixcXFxccyooPzonICsgbnVtYmVyICsgJykpP1xcXFwpJztcbiAgdmFyIGhleDMgPSAnXFxcXCNbMC05YS1mQS1GXXszfSc7XG4gIHZhciBoZXg2ID0gJ1xcXFwjWzAtOWEtZkEtRl17Nn0nO1xuXG4gIHZhciBhc2NlbmRpbmcgPSBmdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIGlmIChhIDwgYikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH07XG4gIHZhciBkZXNjZW5kaW5nID0gZnVuY3Rpb24gZGVzY2VuZGluZyhhLCBiKSB7XG4gICAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xuICB9O1xuXG4gIHZhciBleHRlbmQgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoT2JqZWN0KSA6IGZ1bmN0aW9uICh0Z3QpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG9iaiA9IGFyZ3NbaV07XG5cbiAgICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGsgPSBrZXlzW2pdO1xuICAgICAgICB0Z3Rba10gPSBvYmpba107XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRndDtcbiAgfTtcblxuICB2YXIgaGV4MnR1cGxlID0gZnVuY3Rpb24gaGV4MnR1cGxlKGhleCkge1xuICAgIGlmICghKGhleC5sZW5ndGggPT09IDQgfHwgaGV4Lmxlbmd0aCA9PT0gNykgfHwgaGV4WzBdICE9PSAnIycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2hvcnRIZXggPSBoZXgubGVuZ3RoID09PSA0O1xuICAgIHZhciByLCBnLCBiO1xuICAgIHZhciBiYXNlID0gMTY7XG5cbiAgICBpZiAoc2hvcnRIZXgpIHtcbiAgICAgIHIgPSBwYXJzZUludChoZXhbMV0gKyBoZXhbMV0sIGJhc2UpO1xuICAgICAgZyA9IHBhcnNlSW50KGhleFsyXSArIGhleFsyXSwgYmFzZSk7XG4gICAgICBiID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzNdLCBiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgciA9IHBhcnNlSW50KGhleFsxXSArIGhleFsyXSwgYmFzZSk7XG4gICAgICBnID0gcGFyc2VJbnQoaGV4WzNdICsgaGV4WzRdLCBiYXNlKTtcbiAgICAgIGIgPSBwYXJzZUludChoZXhbNV0gKyBoZXhbNl0sIGJhc2UpO1xuICAgIH1cblxuICAgIHJldHVybiBbciwgZywgYl07XG4gIH07IC8vIGdldCBbciwgZywgYiwgYV0gZnJvbSBoc2woMCwgMCwgMCkgb3IgaHNsYSgwLCAwLCAwLCAwKVxuXG4gIHZhciBoc2wydHVwbGUgPSBmdW5jdGlvbiBoc2wydHVwbGUoaHNsKSB7XG4gICAgdmFyIHJldDtcbiAgICB2YXIgaCwgcywgbCwgYSwgciwgZywgYjtcblxuICAgIGZ1bmN0aW9uIGh1ZTJyZ2IocCwgcSwgdCkge1xuICAgICAgaWYgKHQgPCAwKSB0ICs9IDE7XG4gICAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICAgIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgICAgaWYgKHQgPCAxIC8gMikgcmV0dXJuIHE7XG4gICAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICB2YXIgbSA9IG5ldyBSZWdFeHAoJ14nICsgaHNsYSArICckJykuZXhlYyhoc2wpO1xuXG4gICAgaWYgKG0pIHtcbiAgICAgIC8vIGdldCBodWVcbiAgICAgIGggPSBwYXJzZUludChtWzFdKTtcblxuICAgICAgaWYgKGggPCAwKSB7XG4gICAgICAgIGggPSAoMzYwIC0gLTEgKiBoICUgMzYwKSAlIDM2MDtcbiAgICAgIH0gZWxzZSBpZiAoaCA+IDM2MCkge1xuICAgICAgICBoID0gaCAlIDM2MDtcbiAgICAgIH1cblxuICAgICAgaCAvPSAzNjA7IC8vIG5vcm1hbGlzZSBvbiBbMCwgMV1cblxuICAgICAgcyA9IHBhcnNlRmxvYXQobVsyXSk7XG5cbiAgICAgIGlmIChzIDwgMCB8fCBzID4gMTAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gc2F0dXJhdGlvbiBpcyBbMCwgMTAwXVxuXG5cbiAgICAgIHMgPSBzIC8gMTAwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICAgIGwgPSBwYXJzZUZsb2F0KG1bM10pO1xuXG4gICAgICBpZiAobCA8IDAgfHwgbCA+IDEwMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGxpZ2h0bmVzcyBpcyBbMCwgMTAwXVxuXG5cbiAgICAgIGwgPSBsIC8gMTAwOyAvLyBub3JtYWxpc2Ugb24gWzAsIDFdXG5cbiAgICAgIGEgPSBtWzRdO1xuXG4gICAgICBpZiAoYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGEgPSBwYXJzZUZsb2F0KGEpO1xuXG4gICAgICAgIGlmIChhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBhbHBoYSBpcyBbMCwgMV1cblxuICAgICAgfSAvLyBub3csIGNvbnZlcnQgdG8gcmdiXG4gICAgICAvLyBjb2RlIGZyb20gaHR0cDovL21qaWphY2tzb24uY29tLzIwMDgvMDIvcmdiLXRvLWhzbC1hbmQtcmdiLXRvLWhzdi1jb2xvci1tb2RlbC1jb252ZXJzaW9uLWFsZ29yaXRobXMtaW4tamF2YXNjcmlwdFxuXG5cbiAgICAgIGlmIChzID09PSAwKSB7XG4gICAgICAgIHIgPSBnID0gYiA9IE1hdGgucm91bmQobCAqIDI1NSk7IC8vIGFjaHJvbWF0aWNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgICAgICAgdmFyIHAgPSAyICogbCAtIHE7XG4gICAgICAgIHIgPSBNYXRoLnJvdW5kKDI1NSAqIGh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKSk7XG4gICAgICAgIGcgPSBNYXRoLnJvdW5kKDI1NSAqIGh1ZTJyZ2IocCwgcSwgaCkpO1xuICAgICAgICBiID0gTWF0aC5yb3VuZCgyNTUgKiBodWUycmdiKHAsIHEsIGggLSAxIC8gMykpO1xuICAgICAgfVxuXG4gICAgICByZXQgPSBbciwgZywgYiwgYV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfTsgLy8gZ2V0IFtyLCBnLCBiLCBhXSBmcm9tIHJnYigwLCAwLCAwKSBvciByZ2JhKDAsIDAsIDAsIDApXG5cbiAgdmFyIHJnYjJ0dXBsZSA9IGZ1bmN0aW9uIHJnYjJ0dXBsZShyZ2IpIHtcbiAgICB2YXIgcmV0O1xuICAgIHZhciBtID0gbmV3IFJlZ0V4cCgnXicgKyByZ2JhICsgJyQnKS5leGVjKHJnYik7XG5cbiAgICBpZiAobSkge1xuICAgICAgcmV0ID0gW107XG4gICAgICB2YXIgaXNQY3QgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgICAgIHZhciBjaGFubmVsID0gbVtpXTtcblxuICAgICAgICBpZiAoY2hhbm5lbFtjaGFubmVsLmxlbmd0aCAtIDFdID09PSAnJScpIHtcbiAgICAgICAgICBpc1BjdFtpXSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjaGFubmVsID0gcGFyc2VGbG9hdChjaGFubmVsKTtcblxuICAgICAgICBpZiAoaXNQY3RbaV0pIHtcbiAgICAgICAgICBjaGFubmVsID0gY2hhbm5lbCAvIDEwMCAqIDI1NTsgLy8gbm9ybWFsaXNlIHRvIFswLCAyNTVdXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbm5lbCA8IDAgfHwgY2hhbm5lbCA+IDI1NSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBpbnZhbGlkIGNoYW5uZWwgdmFsdWVcblxuXG4gICAgICAgIHJldC5wdXNoKE1hdGguZmxvb3IoY2hhbm5lbCkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXRMZWFzdE9uZUlzUGN0ID0gaXNQY3RbMV0gfHwgaXNQY3RbMl0gfHwgaXNQY3RbM107XG4gICAgICB2YXIgYWxsQXJlUGN0ID0gaXNQY3RbMV0gJiYgaXNQY3RbMl0gJiYgaXNQY3RbM107XG5cbiAgICAgIGlmIChhdExlYXN0T25lSXNQY3QgJiYgIWFsbEFyZVBjdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG11c3QgYWxsIGJlIHBlcmNlbnQgdmFsdWVzIGlmIG9uZSBpc1xuXG5cbiAgICAgIHZhciBhbHBoYSA9IG1bNF07XG5cbiAgICAgIGlmIChhbHBoYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFscGhhID0gcGFyc2VGbG9hdChhbHBoYSk7XG5cbiAgICAgICAgaWYgKGFscGhhIDwgMCB8fCBhbHBoYSA+IDEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gaW52YWxpZCBhbHBoYSB2YWx1ZVxuXG5cbiAgICAgICAgcmV0LnB1c2goYWxwaGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH07XG4gIHZhciBjb2xvcm5hbWUydHVwbGUgPSBmdW5jdGlvbiBjb2xvcm5hbWUydHVwbGUoY29sb3IpIHtcbiAgICByZXR1cm4gY29sb3JzW2NvbG9yLnRvTG93ZXJDYXNlKCldO1xuICB9O1xuICB2YXIgY29sb3IydHVwbGUgPSBmdW5jdGlvbiBjb2xvcjJ0dXBsZShjb2xvcikge1xuICAgIHJldHVybiAoYXJyYXkoY29sb3IpID8gY29sb3IgOiBudWxsKSB8fCBjb2xvcm5hbWUydHVwbGUoY29sb3IpIHx8IGhleDJ0dXBsZShjb2xvcikgfHwgcmdiMnR1cGxlKGNvbG9yKSB8fCBoc2wydHVwbGUoY29sb3IpO1xuICB9O1xuICB2YXIgY29sb3JzID0ge1xuICAgIC8vIHNwZWNpYWwgY29sb3VyIG5hbWVzXG4gICAgdHJhbnNwYXJlbnQ6IFswLCAwLCAwLCAwXSxcbiAgICAvLyBOQiBhbHBoYSA9PT0gMFxuICAgIC8vIHJlZ3VsYXIgY29sb3Vyc1xuICAgIGFsaWNlYmx1ZTogWzI0MCwgMjQ4LCAyNTVdLFxuICAgIGFudGlxdWV3aGl0ZTogWzI1MCwgMjM1LCAyMTVdLFxuICAgIGFxdWE6IFswLCAyNTUsIDI1NV0sXG4gICAgYXF1YW1hcmluZTogWzEyNywgMjU1LCAyMTJdLFxuICAgIGF6dXJlOiBbMjQwLCAyNTUsIDI1NV0sXG4gICAgYmVpZ2U6IFsyNDUsIDI0NSwgMjIwXSxcbiAgICBiaXNxdWU6IFsyNTUsIDIyOCwgMTk2XSxcbiAgICBibGFjazogWzAsIDAsIDBdLFxuICAgIGJsYW5jaGVkYWxtb25kOiBbMjU1LCAyMzUsIDIwNV0sXG4gICAgYmx1ZTogWzAsIDAsIDI1NV0sXG4gICAgYmx1ZXZpb2xldDogWzEzOCwgNDMsIDIyNl0sXG4gICAgYnJvd246IFsxNjUsIDQyLCA0Ml0sXG4gICAgYnVybHl3b29kOiBbMjIyLCAxODQsIDEzNV0sXG4gICAgY2FkZXRibHVlOiBbOTUsIDE1OCwgMTYwXSxcbiAgICBjaGFydHJldXNlOiBbMTI3LCAyNTUsIDBdLFxuICAgIGNob2NvbGF0ZTogWzIxMCwgMTA1LCAzMF0sXG4gICAgY29yYWw6IFsyNTUsIDEyNywgODBdLFxuICAgIGNvcm5mbG93ZXJibHVlOiBbMTAwLCAxNDksIDIzN10sXG4gICAgY29ybnNpbGs6IFsyNTUsIDI0OCwgMjIwXSxcbiAgICBjcmltc29uOiBbMjIwLCAyMCwgNjBdLFxuICAgIGN5YW46IFswLCAyNTUsIDI1NV0sXG4gICAgZGFya2JsdWU6IFswLCAwLCAxMzldLFxuICAgIGRhcmtjeWFuOiBbMCwgMTM5LCAxMzldLFxuICAgIGRhcmtnb2xkZW5yb2Q6IFsxODQsIDEzNCwgMTFdLFxuICAgIGRhcmtncmF5OiBbMTY5LCAxNjksIDE2OV0sXG4gICAgZGFya2dyZWVuOiBbMCwgMTAwLCAwXSxcbiAgICBkYXJrZ3JleTogWzE2OSwgMTY5LCAxNjldLFxuICAgIGRhcmtraGFraTogWzE4OSwgMTgzLCAxMDddLFxuICAgIGRhcmttYWdlbnRhOiBbMTM5LCAwLCAxMzldLFxuICAgIGRhcmtvbGl2ZWdyZWVuOiBbODUsIDEwNywgNDddLFxuICAgIGRhcmtvcmFuZ2U6IFsyNTUsIDE0MCwgMF0sXG4gICAgZGFya29yY2hpZDogWzE1MywgNTAsIDIwNF0sXG4gICAgZGFya3JlZDogWzEzOSwgMCwgMF0sXG4gICAgZGFya3NhbG1vbjogWzIzMywgMTUwLCAxMjJdLFxuICAgIGRhcmtzZWFncmVlbjogWzE0MywgMTg4LCAxNDNdLFxuICAgIGRhcmtzbGF0ZWJsdWU6IFs3MiwgNjEsIDEzOV0sXG4gICAgZGFya3NsYXRlZ3JheTogWzQ3LCA3OSwgNzldLFxuICAgIGRhcmtzbGF0ZWdyZXk6IFs0NywgNzksIDc5XSxcbiAgICBkYXJrdHVycXVvaXNlOiBbMCwgMjA2LCAyMDldLFxuICAgIGRhcmt2aW9sZXQ6IFsxNDgsIDAsIDIxMV0sXG4gICAgZGVlcHBpbms6IFsyNTUsIDIwLCAxNDddLFxuICAgIGRlZXBza3libHVlOiBbMCwgMTkxLCAyNTVdLFxuICAgIGRpbWdyYXk6IFsxMDUsIDEwNSwgMTA1XSxcbiAgICBkaW1ncmV5OiBbMTA1LCAxMDUsIDEwNV0sXG4gICAgZG9kZ2VyYmx1ZTogWzMwLCAxNDQsIDI1NV0sXG4gICAgZmlyZWJyaWNrOiBbMTc4LCAzNCwgMzRdLFxuICAgIGZsb3JhbHdoaXRlOiBbMjU1LCAyNTAsIDI0MF0sXG4gICAgZm9yZXN0Z3JlZW46IFszNCwgMTM5LCAzNF0sXG4gICAgZnVjaHNpYTogWzI1NSwgMCwgMjU1XSxcbiAgICBnYWluc2Jvcm86IFsyMjAsIDIyMCwgMjIwXSxcbiAgICBnaG9zdHdoaXRlOiBbMjQ4LCAyNDgsIDI1NV0sXG4gICAgZ29sZDogWzI1NSwgMjE1LCAwXSxcbiAgICBnb2xkZW5yb2Q6IFsyMTgsIDE2NSwgMzJdLFxuICAgIGdyYXk6IFsxMjgsIDEyOCwgMTI4XSxcbiAgICBncmV5OiBbMTI4LCAxMjgsIDEyOF0sXG4gICAgZ3JlZW46IFswLCAxMjgsIDBdLFxuICAgIGdyZWVueWVsbG93OiBbMTczLCAyNTUsIDQ3XSxcbiAgICBob25leWRldzogWzI0MCwgMjU1LCAyNDBdLFxuICAgIGhvdHBpbms6IFsyNTUsIDEwNSwgMTgwXSxcbiAgICBpbmRpYW5yZWQ6IFsyMDUsIDkyLCA5Ml0sXG4gICAgaW5kaWdvOiBbNzUsIDAsIDEzMF0sXG4gICAgaXZvcnk6IFsyNTUsIDI1NSwgMjQwXSxcbiAgICBraGFraTogWzI0MCwgMjMwLCAxNDBdLFxuICAgIGxhdmVuZGVyOiBbMjMwLCAyMzAsIDI1MF0sXG4gICAgbGF2ZW5kZXJibHVzaDogWzI1NSwgMjQwLCAyNDVdLFxuICAgIGxhd25ncmVlbjogWzEyNCwgMjUyLCAwXSxcbiAgICBsZW1vbmNoaWZmb246IFsyNTUsIDI1MCwgMjA1XSxcbiAgICBsaWdodGJsdWU6IFsxNzMsIDIxNiwgMjMwXSxcbiAgICBsaWdodGNvcmFsOiBbMjQwLCAxMjgsIDEyOF0sXG4gICAgbGlnaHRjeWFuOiBbMjI0LCAyNTUsIDI1NV0sXG4gICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IFsyNTAsIDI1MCwgMjEwXSxcbiAgICBsaWdodGdyYXk6IFsyMTEsIDIxMSwgMjExXSxcbiAgICBsaWdodGdyZWVuOiBbMTQ0LCAyMzgsIDE0NF0sXG4gICAgbGlnaHRncmV5OiBbMjExLCAyMTEsIDIxMV0sXG4gICAgbGlnaHRwaW5rOiBbMjU1LCAxODIsIDE5M10sXG4gICAgbGlnaHRzYWxtb246IFsyNTUsIDE2MCwgMTIyXSxcbiAgICBsaWdodHNlYWdyZWVuOiBbMzIsIDE3OCwgMTcwXSxcbiAgICBsaWdodHNreWJsdWU6IFsxMzUsIDIwNiwgMjUwXSxcbiAgICBsaWdodHNsYXRlZ3JheTogWzExOSwgMTM2LCAxNTNdLFxuICAgIGxpZ2h0c2xhdGVncmV5OiBbMTE5LCAxMzYsIDE1M10sXG4gICAgbGlnaHRzdGVlbGJsdWU6IFsxNzYsIDE5NiwgMjIyXSxcbiAgICBsaWdodHllbGxvdzogWzI1NSwgMjU1LCAyMjRdLFxuICAgIGxpbWU6IFswLCAyNTUsIDBdLFxuICAgIGxpbWVncmVlbjogWzUwLCAyMDUsIDUwXSxcbiAgICBsaW5lbjogWzI1MCwgMjQwLCAyMzBdLFxuICAgIG1hZ2VudGE6IFsyNTUsIDAsIDI1NV0sXG4gICAgbWFyb29uOiBbMTI4LCAwLCAwXSxcbiAgICBtZWRpdW1hcXVhbWFyaW5lOiBbMTAyLCAyMDUsIDE3MF0sXG4gICAgbWVkaXVtYmx1ZTogWzAsIDAsIDIwNV0sXG4gICAgbWVkaXVtb3JjaGlkOiBbMTg2LCA4NSwgMjExXSxcbiAgICBtZWRpdW1wdXJwbGU6IFsxNDcsIDExMiwgMjE5XSxcbiAgICBtZWRpdW1zZWFncmVlbjogWzYwLCAxNzksIDExM10sXG4gICAgbWVkaXVtc2xhdGVibHVlOiBbMTIzLCAxMDQsIDIzOF0sXG4gICAgbWVkaXVtc3ByaW5nZ3JlZW46IFswLCAyNTAsIDE1NF0sXG4gICAgbWVkaXVtdHVycXVvaXNlOiBbNzIsIDIwOSwgMjA0XSxcbiAgICBtZWRpdW12aW9sZXRyZWQ6IFsxOTksIDIxLCAxMzNdLFxuICAgIG1pZG5pZ2h0Ymx1ZTogWzI1LCAyNSwgMTEyXSxcbiAgICBtaW50Y3JlYW06IFsyNDUsIDI1NSwgMjUwXSxcbiAgICBtaXN0eXJvc2U6IFsyNTUsIDIyOCwgMjI1XSxcbiAgICBtb2NjYXNpbjogWzI1NSwgMjI4LCAxODFdLFxuICAgIG5hdmFqb3doaXRlOiBbMjU1LCAyMjIsIDE3M10sXG4gICAgbmF2eTogWzAsIDAsIDEyOF0sXG4gICAgb2xkbGFjZTogWzI1MywgMjQ1LCAyMzBdLFxuICAgIG9saXZlOiBbMTI4LCAxMjgsIDBdLFxuICAgIG9saXZlZHJhYjogWzEwNywgMTQyLCAzNV0sXG4gICAgb3JhbmdlOiBbMjU1LCAxNjUsIDBdLFxuICAgIG9yYW5nZXJlZDogWzI1NSwgNjksIDBdLFxuICAgIG9yY2hpZDogWzIxOCwgMTEyLCAyMTRdLFxuICAgIHBhbGVnb2xkZW5yb2Q6IFsyMzgsIDIzMiwgMTcwXSxcbiAgICBwYWxlZ3JlZW46IFsxNTIsIDI1MSwgMTUyXSxcbiAgICBwYWxldHVycXVvaXNlOiBbMTc1LCAyMzgsIDIzOF0sXG4gICAgcGFsZXZpb2xldHJlZDogWzIxOSwgMTEyLCAxNDddLFxuICAgIHBhcGF5YXdoaXA6IFsyNTUsIDIzOSwgMjEzXSxcbiAgICBwZWFjaHB1ZmY6IFsyNTUsIDIxOCwgMTg1XSxcbiAgICBwZXJ1OiBbMjA1LCAxMzMsIDYzXSxcbiAgICBwaW5rOiBbMjU1LCAxOTIsIDIwM10sXG4gICAgcGx1bTogWzIyMSwgMTYwLCAyMjFdLFxuICAgIHBvd2RlcmJsdWU6IFsxNzYsIDIyNCwgMjMwXSxcbiAgICBwdXJwbGU6IFsxMjgsIDAsIDEyOF0sXG4gICAgcmVkOiBbMjU1LCAwLCAwXSxcbiAgICByb3N5YnJvd246IFsxODgsIDE0MywgMTQzXSxcbiAgICByb3lhbGJsdWU6IFs2NSwgMTA1LCAyMjVdLFxuICAgIHNhZGRsZWJyb3duOiBbMTM5LCA2OSwgMTldLFxuICAgIHNhbG1vbjogWzI1MCwgMTI4LCAxMTRdLFxuICAgIHNhbmR5YnJvd246IFsyNDQsIDE2NCwgOTZdLFxuICAgIHNlYWdyZWVuOiBbNDYsIDEzOSwgODddLFxuICAgIHNlYXNoZWxsOiBbMjU1LCAyNDUsIDIzOF0sXG4gICAgc2llbm5hOiBbMTYwLCA4MiwgNDVdLFxuICAgIHNpbHZlcjogWzE5MiwgMTkyLCAxOTJdLFxuICAgIHNreWJsdWU6IFsxMzUsIDIwNiwgMjM1XSxcbiAgICBzbGF0ZWJsdWU6IFsxMDYsIDkwLCAyMDVdLFxuICAgIHNsYXRlZ3JheTogWzExMiwgMTI4LCAxNDRdLFxuICAgIHNsYXRlZ3JleTogWzExMiwgMTI4LCAxNDRdLFxuICAgIHNub3c6IFsyNTUsIDI1MCwgMjUwXSxcbiAgICBzcHJpbmdncmVlbjogWzAsIDI1NSwgMTI3XSxcbiAgICBzdGVlbGJsdWU6IFs3MCwgMTMwLCAxODBdLFxuICAgIHRhbjogWzIxMCwgMTgwLCAxNDBdLFxuICAgIHRlYWw6IFswLCAxMjgsIDEyOF0sXG4gICAgdGhpc3RsZTogWzIxNiwgMTkxLCAyMTZdLFxuICAgIHRvbWF0bzogWzI1NSwgOTksIDcxXSxcbiAgICB0dXJxdW9pc2U6IFs2NCwgMjI0LCAyMDhdLFxuICAgIHZpb2xldDogWzIzOCwgMTMwLCAyMzhdLFxuICAgIHdoZWF0OiBbMjQ1LCAyMjIsIDE3OV0sXG4gICAgd2hpdGU6IFsyNTUsIDI1NSwgMjU1XSxcbiAgICB3aGl0ZXNtb2tlOiBbMjQ1LCAyNDUsIDI0NV0sXG4gICAgeWVsbG93OiBbMjU1LCAyNTUsIDBdLFxuICAgIHllbGxvd2dyZWVuOiBbMTU0LCAyMDUsIDUwXVxuICB9O1xuXG4gIHZhciBzZXRNYXAgPSBmdW5jdGlvbiBzZXRNYXAob3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zLm1hcDtcbiAgICB2YXIga2V5cyA9IG9wdGlvbnMua2V5cztcbiAgICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgICB0aHJvdyBFcnJvcignVHJpZWQgdG8gc2V0IG1hcCB3aXRoIG9iamVjdCBrZXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGkgPCBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gZXh0ZW5kIHRoZSBtYXAgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGlmIChvYmpba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgb2JqW2tleV0gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9iaiA9IG9ialtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZVxuICAgICAgICBvYmpba2V5XSA9IG9wdGlvbnMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9OyAvLyBnZXRzIHRoZSB2YWx1ZSBpbiBhIG1hcCBldmVuIGlmIGl0J3Mgbm90IGJ1aWx0IGluIHBsYWNlc1xuXG4gIHZhciBnZXRNYXAgPSBmdW5jdGlvbiBnZXRNYXAob3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zLm1hcDtcbiAgICB2YXIga2V5cyA9IG9wdGlvbnMua2V5cztcbiAgICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAocGxhaW5PYmplY3Qoa2V5KSkge1xuICAgICAgICB0aHJvdyBFcnJvcignVHJpZWQgdG8gZ2V0IG1hcCB3aXRoIG9iamVjdCBrZXknKTtcbiAgICAgIH1cblxuICAgICAgb2JqID0gb2JqW2tleV07XG5cbiAgICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH07IC8vIGRlbGV0ZXMgdGhlIGVudHJ5IGluIHRoZSBtYXBcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAwLjEuMFxuICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8uaXNPYmplY3Qoe30pO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogXy5pc09iamVjdChudWxsKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICovXG4gIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHZhciBpc09iamVjdF8xID0gaXNPYmplY3Q7XG5cbiAgdmFyIGNvbW1vbmpzR2xvYmFsID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDoge307XG5cbiAgZnVuY3Rpb24gY3JlYXRlQ29tbW9uanNNb2R1bGUoZm4sIG1vZHVsZSkge1xuICBcdHJldHVybiBtb2R1bGUgPSB7IGV4cG9ydHM6IHt9IH0sIGZuKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMpLCBtb2R1bGUuZXhwb3J0cztcbiAgfVxuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGNvbW1vbmpzR2xvYmFsID09ICdvYmplY3QnICYmIGNvbW1vbmpzR2xvYmFsICYmIGNvbW1vbmpzR2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGNvbW1vbmpzR2xvYmFsO1xuXG4gIHZhciBfZnJlZUdsb2JhbCA9IGZyZWVHbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gX2ZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuICB2YXIgX3Jvb3QgPSByb290O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDIuNC4wXG4gICAqIEBjYXRlZ29yeSBEYXRlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICAgKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gICAqIH0sIF8ubm93KCkpO1xuICAgKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgdmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBfcm9vdC5EYXRlLm5vdygpO1xuICB9O1xuXG4gIHZhciBub3dfMSA9IG5vdztcblxuICAvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbiAgdmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gICAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHZhciBfdHJpbW1lZEVuZEluZGV4ID0gdHJpbW1lZEVuZEluZGV4O1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udHJpbWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byB0cmltLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUcmltKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmdcbiAgICAgID8gc3RyaW5nLnNsaWNlKDAsIF90cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgICAgOiBzdHJpbmc7XG4gIH1cblxuICB2YXIgX2Jhc2VUcmltID0gYmFzZVRyaW07XG5cbiAgLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG4gIHZhciBTeW1ib2wkMSA9IF9yb290LlN5bWJvbDtcblxuICB2YXIgX1N5bWJvbCA9IFN5bWJvbCQxO1xuXG4gIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG9iamVjdFByb3RvJDUgPSBPYmplY3QucHJvdG90eXBlO1xuXG4gIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgaGFzT3duUHJvcGVydHkkNCA9IG9iamVjdFByb3RvJDUuaGFzT3duUHJvcGVydHk7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAqIG9mIHZhbHVlcy5cbiAgICovXG4gIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyQxID0gb2JqZWN0UHJvdG8kNS50b1N0cmluZztcblxuICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIHN5bVRvU3RyaW5nVGFnJDEgPSBfU3ltYm9sID8gX1N5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkkNC5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyQxKSxcbiAgICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWckMV07XG5cbiAgICB0cnkge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWckMV0gPSB1bmRlZmluZWQ7XG4gICAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmckMS5jYWxsKHZhbHVlKTtcbiAgICBpZiAodW5tYXNrZWQpIHtcbiAgICAgIGlmIChpc093bikge1xuICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZyQxXSA9IHRhZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZyQxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBfZ2V0UmF3VGFnID0gZ2V0UmF3VGFnO1xuXG4gIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG9iamVjdFByb3RvJDQgPSBPYmplY3QucHJvdG90eXBlO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICAgKiBvZiB2YWx1ZXMuXG4gICAqL1xuICB2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90byQ0LnRvU3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICovXG4gIGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgdmFyIF9vYmplY3RUb1N0cmluZyA9IG9iamVjdFRvU3RyaW5nO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIHN5bVRvU3RyaW5nVGFnID0gX1N5bWJvbCA/IF9TeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgfVxuICAgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICAgID8gX2dldFJhd1RhZyh2YWx1ZSlcbiAgICAgIDogX29iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHZhciBfYmFzZUdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDQuMC4wXG4gICAqIEBjYXRlZ29yeSBMYW5nXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICovXG4gIGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgfVxuXG4gIHZhciBpc09iamVjdExpa2VfMSA9IGlzT2JqZWN0TGlrZTtcblxuICAvKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG4gIHZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDQuMC4wXG4gICAqIEBjYXRlZ29yeSBMYW5nXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqL1xuICBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAgIChpc09iamVjdExpa2VfMSh2YWx1ZSkgJiYgX2Jhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gIH1cblxuICB2YXIgaXNTeW1ib2xfMSA9IGlzU3ltYm9sO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xuICB2YXIgTkFOID0gMCAvIDA7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuICAvKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xuICB2YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDQuMC4wXG4gICAqIEBjYXRlZ29yeSBMYW5nXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy50b051bWJlcigzLjIpO1xuICAgKiAvLyA9PiAzLjJcbiAgICpcbiAgICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICogLy8gPT4gNWUtMzI0XG4gICAqXG4gICAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICAgKiAvLyA9PiBJbmZpbml0eVxuICAgKlxuICAgKiBfLnRvTnVtYmVyKCczLjInKTtcbiAgICogLy8gPT4gMy4yXG4gICAqL1xuICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sXzEodmFsdWUpKSB7XG4gICAgICByZXR1cm4gTkFOO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3RfMSh2YWx1ZSkpIHtcbiAgICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICAgIHZhbHVlID0gaXNPYmplY3RfMShvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gICAgfVxuICAgIHZhbHVlID0gX2Jhc2VUcmltKHZhbHVlKTtcbiAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgfVxuXG4gIHZhciB0b051bWJlcl8xID0gdG9OdW1iZXI7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgRlVOQ19FUlJPUl9URVhUJDEgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICB2YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICAgKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAgICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gICAqIGludm9jYXRpb24uXG4gICAqXG4gICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgKlxuICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgKlxuICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMC4xLjBcbiAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAgICpcbiAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICogfSkpO1xuICAgKlxuICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAgICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAqXG4gICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgKi9cbiAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgbGFzdFRoaXMsXG4gICAgICAgIG1heFdhaXQsXG4gICAgICAgIHJlc3VsdCxcbiAgICAgICAgdGltZXJJZCxcbiAgICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCQxKTtcbiAgICB9XG4gICAgd2FpdCA9IHRvTnVtYmVyXzEod2FpdCkgfHwgMDtcbiAgICBpZiAoaXNPYmplY3RfMShvcHRpb25zKSkge1xuICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyXzEob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICAgIDogdGltZVdhaXRpbmc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICAgIHZhciB0aW1lID0gbm93XzEoKTtcbiAgICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgIH1cbiAgICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgICB9XG4gICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgIH1cbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3dfMSgpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICB2YXIgdGltZSA9IG5vd18xKCksXG4gICAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgICByZXR1cm4gZGVib3VuY2VkO1xuICB9XG5cbiAgdmFyIGRlYm91bmNlXzEgPSBkZWJvdW5jZTtcblxuICB2YXIgcGVyZm9ybWFuY2UgPSBfd2luZG93ID8gX3dpbmRvdy5wZXJmb3JtYW5jZSA6IG51bGw7XG4gIHZhciBwbm93ID0gcGVyZm9ybWFuY2UgJiYgcGVyZm9ybWFuY2Uubm93ID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwZXJmb3JtYW5jZS5ub3coKTtcbiAgfSA6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgfTtcblxuICB2YXIgcmFmID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChfd2luZG93KSB7XG4gICAgICBpZiAoX3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgIF93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoX3dpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgIF93aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoX3dpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgIF93aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoX3dpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgICAgX3dpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZShmbik7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZuKHBub3coKSk7XG4gICAgICAgIH0sIDEwMDAgLyA2MCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSgpO1xuXG4gIHZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pIHtcbiAgICByZXR1cm4gcmFmKGZuKTtcbiAgfTtcbiAgdmFyIHBlcmZvcm1hbmNlTm93ID0gcG5vdztcblxuICB2YXIgREVGQVVMVF9IQVNIX1NFRUQgPSA5MjYxO1xuICB2YXIgSyA9IDY1NTk5OyAvLyAzNyBhbHNvIHdvcmtzIHByZXR0eSB3ZWxsXG5cbiAgdmFyIERFRkFVTFRfSEFTSF9TRUVEX0FMVCA9IDUzODE7XG4gIHZhciBoYXNoSXRlcmFibGVJbnRzID0gZnVuY3Rpb24gaGFzaEl0ZXJhYmxlSW50cyhpdGVyYXRvcikge1xuICAgIHZhciBzZWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBERUZBVUxUX0hBU0hfU0VFRDtcbiAgICAvLyBzZGJtL3N0cmluZy1oYXNoXG4gICAgdmFyIGhhc2ggPSBzZWVkO1xuICAgIHZhciBlbnRyeTtcblxuICAgIGZvciAoOzspIHtcbiAgICAgIGVudHJ5ID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICBpZiAoZW50cnkuZG9uZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaGFzaCA9IGhhc2ggKiBLICsgZW50cnkudmFsdWUgfCAwO1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9O1xuICB2YXIgaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQobnVtKSB7XG4gICAgdmFyIHNlZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IERFRkFVTFRfSEFTSF9TRUVEO1xuICAgIC8vIHNkYm0vc3RyaW5nLWhhc2hcbiAgICByZXR1cm4gc2VlZCAqIEsgKyBudW0gfCAwO1xuICB9O1xuICB2YXIgaGFzaEludEFsdCA9IGZ1bmN0aW9uIGhhc2hJbnRBbHQobnVtKSB7XG4gICAgdmFyIHNlZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IERFRkFVTFRfSEFTSF9TRUVEX0FMVDtcbiAgICAvLyBkamIyL3N0cmluZy1oYXNoXG4gICAgcmV0dXJuIChzZWVkIDw8IDUpICsgc2VlZCArIG51bSB8IDA7XG4gIH07XG4gIHZhciBjb21iaW5lSGFzaGVzID0gZnVuY3Rpb24gY29tYmluZUhhc2hlcyhoYXNoMSwgaGFzaDIpIHtcbiAgICByZXR1cm4gaGFzaDEgKiAweDIwMDAwMCArIGhhc2gyO1xuICB9O1xuICB2YXIgY29tYmluZUhhc2hlc0FycmF5ID0gZnVuY3Rpb24gY29tYmluZUhhc2hlc0FycmF5KGhhc2hlcykge1xuICAgIHJldHVybiBoYXNoZXNbMF0gKiAweDIwMDAwMCArIGhhc2hlc1sxXTtcbiAgfTtcbiAgdmFyIGhhc2hBcnJheXMgPSBmdW5jdGlvbiBoYXNoQXJyYXlzKGhhc2hlczEsIGhhc2hlczIpIHtcbiAgICByZXR1cm4gW2hhc2hJbnQoaGFzaGVzMVswXSwgaGFzaGVzMlswXSksIGhhc2hJbnRBbHQoaGFzaGVzMVsxXSwgaGFzaGVzMlsxXSldO1xuICB9O1xuICB2YXIgaGFzaEludHNBcnJheSA9IGZ1bmN0aW9uIGhhc2hJbnRzQXJyYXkoaW50cywgc2VlZCkge1xuICAgIHZhciBlbnRyeSA9IHtcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgZG9uZTogZmFsc2VcbiAgICB9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gaW50cy5sZW5ndGg7XG4gICAgdmFyIGl0ZXJhdG9yID0ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgaWYgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBlbnRyeS52YWx1ZSA9IGludHNbaSsrXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBoYXNoSXRlcmFibGVJbnRzKGl0ZXJhdG9yLCBzZWVkKTtcbiAgfTtcbiAgdmFyIGhhc2hTdHJpbmcgPSBmdW5jdGlvbiBoYXNoU3RyaW5nKHN0ciwgc2VlZCkge1xuICAgIHZhciBlbnRyeSA9IHtcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgZG9uZTogZmFsc2VcbiAgICB9O1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICBpZiAoaSA8IGxlbmd0aCkge1xuICAgICAgICAgIGVudHJ5LnZhbHVlID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnRyeS5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBoYXNoSXRlcmFibGVJbnRzKGl0ZXJhdG9yLCBzZWVkKTtcbiAgfTtcbiAgdmFyIGhhc2hTdHJpbmdzID0gZnVuY3Rpb24gaGFzaFN0cmluZ3MoKSB7XG4gICAgcmV0dXJuIGhhc2hTdHJpbmdzQXJyYXkoYXJndW1lbnRzKTtcbiAgfTtcbiAgdmFyIGhhc2hTdHJpbmdzQXJyYXkgPSBmdW5jdGlvbiBoYXNoU3RyaW5nc0FycmF5KHN0cnMpIHtcbiAgICB2YXIgaGFzaDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3Rycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHN0ciA9IHN0cnNbaV07XG5cbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIGhhc2ggPSBoYXNoU3RyaW5nKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYXNoID0gaGFzaFN0cmluZyhzdHIsIGhhc2gpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIC8qZ2xvYmFsIGNvbnNvbGUgKi9cbiAgdmFyIHdhcm5pbmdzRW5hYmxlZCA9IHRydWU7XG4gIHZhciB3YXJuU3VwcG9ydGVkID0gY29uc29sZS53YXJuICE9IG51bGw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuXG4gIHZhciB0cmFjZVN1cHBvcnRlZCA9IGNvbnNvbGUudHJhY2UgIT0gbnVsbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cbiAgdmFyIE1BWF9JTlQkMSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIHx8IDkwMDcxOTkyNTQ3NDA5OTE7XG4gIHZhciB0cnVlaWZ5ID0gZnVuY3Rpb24gdHJ1ZWlmeSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgdmFyIGZhbHNpZnkgPSBmdW5jdGlvbiBmYWxzaWZ5KCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgdmFyIHplcm9pZnkgPSBmdW5jdGlvbiB6ZXJvaWZ5KCkge1xuICAgIHJldHVybiAwO1xuICB9O1xuICB2YXIgbm9vcCQxID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuICB2YXIgZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfTtcbiAgdmFyIHdhcm5pbmdzID0gZnVuY3Rpb24gd2FybmluZ3MoZW5hYmxlZCkge1xuICAgIGlmIChlbmFibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdhcm5pbmdzRW5hYmxlZCA9ICEhZW5hYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdhcm5pbmdzRW5hYmxlZDtcbiAgICB9XG4gIH07XG4gIHZhciB3YXJuID0gZnVuY3Rpb24gd2Fybihtc2cpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgaWYgKCF3YXJuaW5ncygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdhcm5TdXBwb3J0ZWQpIHtcbiAgICAgIGNvbnNvbGUud2Fybihtc2cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhtc2cpO1xuXG4gICAgICBpZiAodHJhY2VTdXBwb3J0ZWQpIHtcbiAgICAgICAgY29uc29sZS50cmFjZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gIHZhciBjbG9uZSA9IGZ1bmN0aW9uIGNsb25lKG9iaikge1xuICAgIHJldHVybiBleHRlbmQoe30sIG9iaik7XG4gIH07IC8vIGdldHMgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGFyZ3VtZW50XG5cbiAgdmFyIGNvcHkgPSBmdW5jdGlvbiBjb3B5KG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBpZiAoYXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3Qob2JqKSkge1xuICAgICAgcmV0dXJuIGNsb25lKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICB9O1xuICB2YXIgY29weUFycmF5JDEgPSBmdW5jdGlvbiBjb3B5QXJyYXkoYXJyKSB7XG4gICAgcmV0dXJuIGFyci5zbGljZSgpO1xuICB9O1xuICB2YXIgdXVpZCA9IGZ1bmN0aW9uIHV1aWQoYSwgYlxuICAvKiBwbGFjZWhvbGRlcnMgKi9cbiAgKSB7XG4gICAgZm9yICggLy8gbG9vcCA6KVxuICAgIGIgPSBhID0gJyc7IC8vIGIgLSByZXN1bHQgLCBhIC0gbnVtZXJpYyBsZXRpYWJsZVxuICAgIGErKyA8IDM2OyAvL1xuICAgIGIgKz0gYSAqIDUxICYgNTIgLy8gaWYgXCJhXCIgaXMgbm90IDkgb3IgMTQgb3IgMTkgb3IgMjRcbiAgICA/IC8vICByZXR1cm4gYSByYW5kb20gbnVtYmVyIG9yIDRcbiAgICAoYSBeIDE1IC8vIGlmIFwiYVwiIGlzIG5vdCAxNVxuICAgID8gLy8gZ2VuZXJhdGUgYSByYW5kb20gbnVtYmVyIGZyb20gMCB0byAxNVxuICAgIDggXiBNYXRoLnJhbmRvbSgpICogKGEgXiAyMCA/IDE2IDogNCkgLy8gdW5sZXNzIFwiYVwiIGlzIDIwLCBpbiB3aGljaCBjYXNlIGEgcmFuZG9tIG51bWJlciBmcm9tIDggdG8gMTFcbiAgICA6IDQgLy8gIG90aGVyd2lzZSA0XG4gICAgKS50b1N0cmluZygxNikgOiAnLScgLy8gIGluIG90aGVyIGNhc2VzIChpZiBcImFcIiBpcyA5LDE0LDE5LDI0KSBpbnNlcnQgXCItXCJcbiAgICApIHtcbiAgICB9XG5cbiAgICByZXR1cm4gYjtcbiAgfTtcbiAgdmFyIF9zdGF0aWNFbXB0eU9iamVjdCA9IHt9O1xuICB2YXIgc3RhdGljRW1wdHlPYmplY3QgPSBmdW5jdGlvbiBzdGF0aWNFbXB0eU9iamVjdCgpIHtcbiAgICByZXR1cm4gX3N0YXRpY0VtcHR5T2JqZWN0O1xuICB9O1xuICB2YXIgZGVmYXVsdHMkZyA9IGZ1bmN0aW9uIGRlZmF1bHRzKF9kZWZhdWx0cykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoX2RlZmF1bHRzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdHMpIHtcbiAgICAgIHZhciBmaWxsZWRPcHRzID0ge307XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgdmFyIG9wdFZhbCA9IG9wdHMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9wdHNba2V5XTtcbiAgICAgICAgZmlsbGVkT3B0c1trZXldID0gb3B0VmFsID09PSB1bmRlZmluZWQgPyBfZGVmYXVsdHNba2V5XSA6IG9wdFZhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpbGxlZE9wdHM7XG4gICAgfTtcbiAgfTtcbiAgdmFyIHJlbW92ZUZyb21BcnJheSA9IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnIsIGVsZSwgb25lQ29weSkge1xuICAgIGZvciAodmFyIGkgPSBhcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChhcnJbaV0gPT09IGVsZSkge1xuICAgICAgICBhcnIuc3BsaWNlKGksIDEpO1xuXG4gICAgICAgIGlmIChvbmVDb3B5KSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHZhciBjbGVhckFycmF5ID0gZnVuY3Rpb24gY2xlYXJBcnJheShhcnIpIHtcbiAgICBhcnIuc3BsaWNlKDAsIGFyci5sZW5ndGgpO1xuICB9O1xuICB2YXIgcHVzaCA9IGZ1bmN0aW9uIHB1c2goYXJyLCBvdGhlckFycikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3RoZXJBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbCA9IG90aGVyQXJyW2ldO1xuICAgICAgYXJyLnB1c2goZWwpO1xuICAgIH1cbiAgfTtcbiAgdmFyIGdldFByZWZpeGVkUHJvcGVydHkgPSBmdW5jdGlvbiBnZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgcHJvcE5hbWUsIHByZWZpeCkge1xuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHByb3BOYW1lID0gcHJlcGVuZENhbWVsKHByZWZpeCwgcHJvcE5hbWUpOyAvLyBlLmcuIChsYWJlbFdpZHRoLCBzb3VyY2UpID0+IHNvdXJjZUxhYmVsV2lkdGhcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqW3Byb3BOYW1lXTtcbiAgfTtcbiAgdmFyIHNldFByZWZpeGVkUHJvcGVydHkgPSBmdW5jdGlvbiBzZXRQcmVmaXhlZFByb3BlcnR5KG9iaiwgcHJvcE5hbWUsIHByZWZpeCwgdmFsdWUpIHtcbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwcm9wTmFtZSA9IHByZXBlbmRDYW1lbChwcmVmaXgsIHByb3BOYW1lKTsgLy8gZS5nLiAobGFiZWxXaWR0aCwgc291cmNlKSA9PiBzb3VyY2VMYWJlbFdpZHRoXG4gICAgfVxuXG4gICAgb2JqW3Byb3BOYW1lXSA9IHZhbHVlO1xuICB9O1xuXG4gIC8qIGdsb2JhbCBNYXAgKi9cbiAgdmFyIE9iamVjdE1hcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JqZWN0TWFwKCkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE9iamVjdE1hcCk7XG5cbiAgICAgIHRoaXMuX29iaiA9IHt9O1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhPYmplY3RNYXAsIFt7XG4gICAgICBrZXk6IFwic2V0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGtleSwgdmFsKSB7XG4gICAgICAgIHRoaXMuX29ialtrZXldID0gdmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShrZXkpIHtcbiAgICAgICAgdGhpcy5fb2JqW2tleV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJjbGVhclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICB0aGlzLl9vYmogPSB7fTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaGFzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqW2tleV07XG4gICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIE9iamVjdE1hcDtcbiAgfSgpO1xuXG4gIHZhciBNYXAkMiA9IHR5cGVvZiBNYXAgIT09ICd1bmRlZmluZWQnID8gTWFwIDogT2JqZWN0TWFwO1xuXG4gIC8qIGdsb2JhbCBTZXQgKi9cbiAgdmFyIHVuZGVmID0gXCJ1bmRlZmluZWRcIiA7XG5cbiAgdmFyIE9iamVjdFNldCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JqZWN0U2V0KGFycmF5T3JPYmplY3RTZXQpIHtcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPYmplY3RTZXQpO1xuXG4gICAgICB0aGlzLl9vYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgdGhpcy5zaXplID0gMDtcblxuICAgICAgaWYgKGFycmF5T3JPYmplY3RTZXQgIT0gbnVsbCkge1xuICAgICAgICB2YXIgYXJyO1xuXG4gICAgICAgIGlmIChhcnJheU9yT2JqZWN0U2V0Lmluc3RhbmNlU3RyaW5nICE9IG51bGwgJiYgYXJyYXlPck9iamVjdFNldC5pbnN0YW5jZVN0cmluZygpID09PSB0aGlzLmluc3RhbmNlU3RyaW5nKCkpIHtcbiAgICAgICAgICBhcnIgPSBhcnJheU9yT2JqZWN0U2V0LnRvQXJyYXkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcnIgPSBhcnJheU9yT2JqZWN0U2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0aGlzLmFkZChhcnJbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKE9iamVjdFNldCwgW3tcbiAgICAgIGtleTogXCJpbnN0YW5jZVN0cmluZ1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gJ3NldCc7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImFkZFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFkZCh2YWwpIHtcbiAgICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgICAgaWYgKG9bdmFsXSAhPT0gMSkge1xuICAgICAgICAgIG9bdmFsXSA9IDE7XG4gICAgICAgICAgdGhpcy5zaXplKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZSh2YWwpIHtcbiAgICAgICAgdmFyIG8gPSB0aGlzLl9vYmo7XG5cbiAgICAgICAgaWYgKG9bdmFsXSA9PT0gMSkge1xuICAgICAgICAgIG9bdmFsXSA9IDA7XG4gICAgICAgICAgdGhpcy5zaXplLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY2xlYXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaGFzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGFzKHZhbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqW3ZhbF0gPT09IDE7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInRvQXJyYXlcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9vYmopLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmhhcyhrZXkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9BcnJheSgpLmZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBPYmplY3RTZXQ7XG4gIH0oKTtcblxuICB2YXIgU2V0JDEgPSAodHlwZW9mIFNldCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKFNldCkpICE9PSB1bmRlZiA/IFNldCA6IE9iamVjdFNldDtcblxuICB2YXIgRWxlbWVudCA9IGZ1bmN0aW9uIEVsZW1lbnQoY3ksIHBhcmFtcykge1xuICAgIHZhciByZXN0b3JlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB0cnVlO1xuXG4gICAgaWYgKGN5ID09PSB1bmRlZmluZWQgfHwgcGFyYW1zID09PSB1bmRlZmluZWQgfHwgIWNvcmUoY3kpKSB7XG4gICAgICBlcnJvcignQW4gZWxlbWVudCBtdXN0IGhhdmUgYSBjb3JlIHJlZmVyZW5jZSBhbmQgcGFyYW1ldGVycyBzZXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZ3JvdXAgPSBwYXJhbXMuZ3JvdXA7IC8vIHRyeSB0byBhdXRvbWF0aWNhbGx5IGluZmVyIHRoZSBncm91cCBpZiB1bnNwZWNpZmllZFxuXG4gICAgaWYgKGdyb3VwID09IG51bGwpIHtcbiAgICAgIGlmIChwYXJhbXMuZGF0YSAmJiBwYXJhbXMuZGF0YS5zb3VyY2UgIT0gbnVsbCAmJiBwYXJhbXMuZGF0YS50YXJnZXQgIT0gbnVsbCkge1xuICAgICAgICBncm91cCA9ICdlZGdlcyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cCA9ICdub2Rlcyc7XG4gICAgICB9XG4gICAgfSAvLyB2YWxpZGF0ZSBncm91cFxuXG5cbiAgICBpZiAoZ3JvdXAgIT09ICdub2RlcycgJiYgZ3JvdXAgIT09ICdlZGdlcycpIHtcbiAgICAgIGVycm9yKCdBbiBlbGVtZW50IG11c3QgYmUgb2YgdHlwZSBgbm9kZXNgIG9yIGBlZGdlc2A7IHlvdSBzcGVjaWZpZWQgYCcgKyBncm91cCArICdgJyk7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBtYWtlIHRoZSBlbGVtZW50IGFycmF5LWxpa2UsIGp1c3QgbGlrZSBhIGNvbGxlY3Rpb25cblxuXG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIHRoaXNbMF0gPSB0aGlzOyAvLyBOT1RFOiB3aGVuIHNvbWV0aGluZyBpcyBhZGRlZCBoZXJlLCBhZGQgYWxzbyB0byBlbGUuanNvbigpXG5cbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlID0ge1xuICAgICAgY3k6IGN5LFxuICAgICAgc2luZ2xlOiB0cnVlLFxuICAgICAgLy8gaW5kaWNhdGVzIHRoaXMgaXMgYW4gZWxlbWVudFxuICAgICAgZGF0YTogcGFyYW1zLmRhdGEgfHwge30sXG4gICAgICAvLyBkYXRhIG9iamVjdFxuICAgICAgcG9zaXRpb246IHBhcmFtcy5wb3NpdGlvbiB8fCB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH0sXG4gICAgICAvLyAoeCwgeSkgcG9zaXRpb24gcGFpclxuICAgICAgYXV0b1dpZHRoOiB1bmRlZmluZWQsXG4gICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IG9mIG5vZGVzIGNhbGN1bGF0ZWQgYnkgdGhlIHJlbmRlcmVyIHdoZW4gc2V0IHRvIHNwZWNpYWwgJ2F1dG8nIHZhbHVlXG4gICAgICBhdXRvSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBhdXRvUGFkZGluZzogdW5kZWZpbmVkLFxuICAgICAgY29tcG91bmRCb3VuZHNDbGVhbjogZmFsc2UsXG4gICAgICAvLyB3aGV0aGVyIHRoZSBjb21wb3VuZCBkaW1lbnNpb25zIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVkIHRoZSBuZXh0IHRpbWUgZGltZW5zaW9ucyBhcmUgcmVhZFxuICAgICAgbGlzdGVuZXJzOiBbXSxcbiAgICAgIC8vIGFycmF5IG9mIGJvdW5kIGxpc3RlbmVyc1xuICAgICAgZ3JvdXA6IGdyb3VwLFxuICAgICAgLy8gc3RyaW5nOyAnbm9kZXMnIG9yICdlZGdlcydcbiAgICAgIHN0eWxlOiB7fSxcbiAgICAgIC8vIHByb3BlcnRpZXMgYXMgc2V0IGJ5IHRoZSBzdHlsZVxuICAgICAgcnN0eWxlOiB7fSxcbiAgICAgIC8vIHByb3BlcnRpZXMgZm9yIHN0eWxlIHNlbnQgZnJvbSB0aGUgcmVuZGVyZXIgdG8gdGhlIGNvcmVcbiAgICAgIHN0eWxlQ3h0czogW10sXG4gICAgICAvLyBhcHBsaWVkIHN0eWxlIGNvbnRleHRzIGZyb20gdGhlIHN0eWxlclxuICAgICAgc3R5bGVLZXlzOiB7fSxcbiAgICAgIC8vIHBlci1ncm91cCBrZXlzIG9mIHN0eWxlIHByb3BlcnR5IHZhbHVlc1xuICAgICAgcmVtb3ZlZDogdHJ1ZSxcbiAgICAgIC8vIHdoZXRoZXIgaXQncyBpbnNpZGUgdGhlIHZpczsgdHJ1ZSBpZiByZW1vdmVkIChzZXQgdHJ1ZSBoZXJlIHNpbmNlIHdlIGNhbGwgcmVzdG9yZSlcbiAgICAgIHNlbGVjdGVkOiBwYXJhbXMuc2VsZWN0ZWQgPyB0cnVlIDogZmFsc2UsXG4gICAgICAvLyB3aGV0aGVyIGl0J3Mgc2VsZWN0ZWRcbiAgICAgIHNlbGVjdGFibGU6IHBhcmFtcy5zZWxlY3RhYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogcGFyYW1zLnNlbGVjdGFibGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAvLyB3aGV0aGVyIGl0J3Mgc2VsZWN0YWJsZVxuICAgICAgbG9ja2VkOiBwYXJhbXMubG9ja2VkID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgLy8gd2hldGhlciB0aGUgZWxlbWVudCBpcyBsb2NrZWQgKGNhbm5vdCBiZSBtb3ZlZClcbiAgICAgIGdyYWJiZWQ6IGZhbHNlLFxuICAgICAgLy8gd2hldGhlciB0aGUgZWxlbWVudCBpcyBncmFiYmVkIGJ5IHRoZSBtb3VzZTsgcmVuZGVyZXIgc2V0cyB0aGlzIHByaXZhdGVseVxuICAgICAgZ3JhYmJhYmxlOiBwYXJhbXMuZ3JhYmJhYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogcGFyYW1zLmdyYWJiYWJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIC8vIHdoZXRoZXIgdGhlIGVsZW1lbnQgY2FuIGJlIGdyYWJiZWRcbiAgICAgIHBhbm5hYmxlOiBwYXJhbXMucGFubmFibGUgPT09IHVuZGVmaW5lZCA/IGdyb3VwID09PSAnZWRnZXMnID8gdHJ1ZSA6IGZhbHNlIDogcGFyYW1zLnBhbm5hYmxlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgLy8gd2hldGhlciB0aGUgZWxlbWVudCBoYXMgcGFzc3Rocm91Z2ggcGFubmluZyBlbmFibGVkXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgLy8gd2hldGhlciB0aGUgZWxlbWVudCBpcyBhY3RpdmUgZnJvbSB1c2VyIGludGVyYWN0aW9uXG4gICAgICBjbGFzc2VzOiBuZXcgU2V0JDEoKSxcbiAgICAgIC8vIG1hcCAoIGNsYXNzTmFtZSA9PiB0cnVlIClcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAvLyBvYmplY3QgZm9yIGN1cnJlbnRseS1ydW5uaW5nIGFuaW1hdGlvbnNcbiAgICAgICAgY3VycmVudDogW10sXG4gICAgICAgIHF1ZXVlOiBbXVxuICAgICAgfSxcbiAgICAgIHJzY3JhdGNoOiB7fSxcbiAgICAgIC8vIG9iamVjdCBpbiB3aGljaCB0aGUgcmVuZGVyZXIgY2FuIHN0b3JlIGluZm9ybWF0aW9uXG4gICAgICBzY3JhdGNoOiBwYXJhbXMuc2NyYXRjaCB8fCB7fSxcbiAgICAgIC8vIHNjcmF0Y2ggb2JqZWN0c1xuICAgICAgZWRnZXM6IFtdLFxuICAgICAgLy8gYXJyYXkgb2YgY29ubmVjdGVkIGVkZ2VzXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICAvLyBhcnJheSBvZiBjaGlsZHJlblxuICAgICAgcGFyZW50OiBwYXJhbXMucGFyZW50ICYmIHBhcmFtcy5wYXJlbnQuaXNOb2RlKCkgPyBwYXJhbXMucGFyZW50IDogbnVsbCxcbiAgICAgIC8vIHBhcmVudCByZWZcbiAgICAgIHRyYXZlcnNhbENhY2hlOiB7fSxcbiAgICAgIC8vIGNhY2hlIG9mIG91dHB1dCBvZiB0cmF2ZXJzYWwgZnVuY3Rpb25zXG4gICAgICBiYWNrZ3JvdW5kaW5nOiBmYWxzZSxcbiAgICAgIC8vIHdoZXRoZXIgYmFja2dyb3VuZCBpbWFnZXMgYXJlIGxvYWRpbmdcbiAgICAgIGJiQ2FjaGU6IG51bGwsXG4gICAgICAvLyBjYWNoZSBvZiB0aGUgY3VycmVudCBib3VuZGluZyBib3hcbiAgICAgIGJiQ2FjaGVTaGlmdDoge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9LFxuICAgICAgLy8gc2hpZnQgYXBwbGllZCB0byBjYWNoZWQgYmIgdG8gYmUgYXBwbGllZCBvbiBuZXh0IGdldFxuICAgICAgYm9keUJvdW5kczogbnVsbCxcbiAgICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBlbGVtZW50IGJvZHksIHcvbyBvdmVybGF5XG4gICAgICBvdmVybGF5Qm91bmRzOiBudWxsLFxuICAgICAgLy8gYm91bmRzIGNhY2hlIG9mIGVsZW1lbnQgYm9keSwgaW5jbHVkaW5nIG92ZXJsYXlcbiAgICAgIGxhYmVsQm91bmRzOiB7XG4gICAgICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBsYWJlbHNcbiAgICAgICAgYWxsOiBudWxsLFxuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgbWFpbjogbnVsbFxuICAgICAgfSxcbiAgICAgIGFycm93Qm91bmRzOiB7XG4gICAgICAgIC8vIGJvdW5kcyBjYWNoZSBvZiBlZGdlIGFycm93c1xuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIHRhcmdldDogbnVsbCxcbiAgICAgICAgJ21pZC1zb3VyY2UnOiBudWxsLFxuICAgICAgICAnbWlkLXRhcmdldCc6IG51bGxcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKF9wLnBvc2l0aW9uLnggPT0gbnVsbCkge1xuICAgICAgX3AucG9zaXRpb24ueCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKF9wLnBvc2l0aW9uLnkgPT0gbnVsbCkge1xuICAgICAgX3AucG9zaXRpb24ueSA9IDA7XG4gICAgfSAvLyByZW5kZXJlZFBvc2l0aW9uIG92ZXJyaWRlcyBpZiBzcGVjaWZpZWRcblxuXG4gICAgaWYgKHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uKSB7XG4gICAgICB2YXIgcnBvcyA9IHBhcmFtcy5yZW5kZXJlZFBvc2l0aW9uO1xuICAgICAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICBfcC5wb3NpdGlvbiA9IHtcbiAgICAgICAgeDogKHJwb3MueCAtIHBhbi54KSAvIHpvb20sXG4gICAgICAgIHk6IChycG9zLnkgLSBwYW4ueSkgLyB6b29tXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBjbGFzc2VzID0gW107XG5cbiAgICBpZiAoYXJyYXkocGFyYW1zLmNsYXNzZXMpKSB7XG4gICAgICBjbGFzc2VzID0gcGFyYW1zLmNsYXNzZXM7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcocGFyYW1zLmNsYXNzZXMpKSB7XG4gICAgICBjbGFzc2VzID0gcGFyYW1zLmNsYXNzZXMuc3BsaXQoL1xccysvKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNsYXNzZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2xzID0gY2xhc3Nlc1tpXTtcblxuICAgICAgaWYgKCFjbHMgfHwgY2xzID09PSAnJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgX3AuY2xhc3Nlcy5hZGQoY2xzKTtcbiAgICB9XG5cbiAgICB0aGlzLmNyZWF0ZUVtaXR0ZXIoKTtcbiAgICB2YXIgYnlwYXNzID0gcGFyYW1zLnN0eWxlIHx8IHBhcmFtcy5jc3M7XG5cbiAgICBpZiAoYnlwYXNzKSB7XG4gICAgICB3YXJuKCdTZXR0aW5nIGEgYHN0eWxlYCBieXBhc3MgYXQgZWxlbWVudCBjcmVhdGlvbiBzaG91bGQgYmUgZG9uZSBvbmx5IHdoZW4gYWJzb2x1dGVseSBuZWNlc3NhcnkuICBUcnkgdG8gdXNlIHRoZSBzdHlsZXNoZWV0IGluc3RlYWQuJyk7XG4gICAgICB0aGlzLnN0eWxlKGJ5cGFzcyk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3RvcmUgPT09IHVuZGVmaW5lZCB8fCByZXN0b3JlKSB7XG4gICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRlZmluZVNlYXJjaCA9IGZ1bmN0aW9uIGRlZmluZVNlYXJjaChwYXJhbXMpIHtcbiAgICBwYXJhbXMgPSB7XG4gICAgICBiZnM6IHBhcmFtcy5iZnMgfHwgIXBhcmFtcy5kZnMsXG4gICAgICBkZnM6IHBhcmFtcy5kZnMgfHwgIXBhcmFtcy5iZnNcbiAgICB9OyAvLyBmcm9tIHBzZXVkb2NvZGUgb24gd2lraXBlZGlhXG5cbiAgICByZXR1cm4gZnVuY3Rpb24gc2VhcmNoRm4ocm9vdHMsIGZuLCBkaXJlY3RlZCkge1xuICAgICAgdmFyIG9wdGlvbnM7XG5cbiAgICAgIGlmIChwbGFpbk9iamVjdChyb290cykgJiYgIWVsZW1lbnRPckNvbGxlY3Rpb24ocm9vdHMpKSB7XG4gICAgICAgIG9wdGlvbnMgPSByb290cztcbiAgICAgICAgcm9vdHMgPSBvcHRpb25zLnJvb3RzIHx8IG9wdGlvbnMucm9vdDtcbiAgICAgICAgZm4gPSBvcHRpb25zLnZpc2l0O1xuICAgICAgICBkaXJlY3RlZCA9IG9wdGlvbnMuZGlyZWN0ZWQ7XG4gICAgICB9XG5cbiAgICAgIGRpcmVjdGVkID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMiAmJiAhZm4kNihmbikgPyBmbiA6IGRpcmVjdGVkO1xuICAgICAgZm4gPSBmbiQ2KGZuKSA/IGZuIDogZnVuY3Rpb24gKCkge307XG4gICAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICAgICAgdmFyIHYgPSByb290cyA9IHN0cmluZyhyb290cykgPyB0aGlzLmZpbHRlcihyb290cykgOiByb290cztcbiAgICAgIHZhciBRID0gW107XG4gICAgICB2YXIgY29ubmVjdGVkTm9kZXMgPSBbXTtcbiAgICAgIHZhciBjb25uZWN0ZWRCeSA9IHt9O1xuICAgICAgdmFyIGlkMmRlcHRoID0ge307XG4gICAgICB2YXIgViA9IHt9O1xuICAgICAgdmFyIGogPSAwO1xuICAgICAgdmFyIGZvdW5kO1xuXG4gICAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICAgIG5vZGVzID0gX3RoaXMkYnlHcm91cC5ub2RlcyxcbiAgICAgICAgICBlZGdlcyA9IF90aGlzJGJ5R3JvdXAuZWRnZXM7IC8vIGVucXVldWUgdlxuXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdmkgPSB2W2ldO1xuICAgICAgICB2YXIgdmlJZCA9IHZpLmlkKCk7XG5cbiAgICAgICAgaWYgKHZpLmlzTm9kZSgpKSB7XG4gICAgICAgICAgUS51bnNoaWZ0KHZpKTtcblxuICAgICAgICAgIGlmIChwYXJhbXMuYmZzKSB7XG4gICAgICAgICAgICBWW3ZpSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzLnB1c2godmkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlkMmRlcHRoW3ZpSWRdID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHtcbiAgICAgICAgdmFyIHYgPSBwYXJhbXMuYmZzID8gUS5zaGlmdCgpIDogUS5wb3AoKTtcbiAgICAgICAgdmFyIHZJZCA9IHYuaWQoKTtcblxuICAgICAgICBpZiAocGFyYW1zLmRmcykge1xuICAgICAgICAgIGlmIChWW3ZJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgVlt2SWRdID0gdHJ1ZTtcbiAgICAgICAgICBjb25uZWN0ZWROb2Rlcy5wdXNoKHYpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRlcHRoID0gaWQyZGVwdGhbdklkXTtcbiAgICAgICAgdmFyIHByZXZFZGdlID0gY29ubmVjdGVkQnlbdklkXTtcbiAgICAgICAgdmFyIHNyYyA9IHByZXZFZGdlICE9IG51bGwgPyBwcmV2RWRnZS5zb3VyY2UoKSA6IG51bGw7XG4gICAgICAgIHZhciB0Z3QgPSBwcmV2RWRnZSAhPSBudWxsID8gcHJldkVkZ2UudGFyZ2V0KCkgOiBudWxsO1xuICAgICAgICB2YXIgcHJldk5vZGUgPSBwcmV2RWRnZSA9PSBudWxsID8gdW5kZWZpbmVkIDogdi5zYW1lKHNyYykgPyB0Z3RbMF0gOiBzcmNbMF07XG4gICAgICAgIHZhciByZXQgPSB2b2lkIDA7XG4gICAgICAgIHJldCA9IGZuKHYsIHByZXZFZGdlLCBwcmV2Tm9kZSwgaisrLCBkZXB0aCk7XG5cbiAgICAgICAgaWYgKHJldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGZvdW5kID0gdjtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZ3RWRnZXMgPSB2LmNvbm5lY3RlZEVkZ2VzKCkuZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuICghZGlyZWN0ZWQgfHwgZS5zb3VyY2UoKS5zYW1lKHYpKSAmJiBlZGdlcy5oYXMoZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHZ3RWRnZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgIHZhciBlID0gdndFZGdlc1tfaTJdO1xuICAgICAgICAgIHZhciB3ID0gZS5jb25uZWN0ZWROb2RlcygpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuICFuLnNhbWUodikgJiYgbm9kZXMuaGFzKG4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciB3SWQgPSB3LmlkKCk7XG5cbiAgICAgICAgICBpZiAody5sZW5ndGggIT09IDAgJiYgIVZbd0lkXSkge1xuICAgICAgICAgICAgdyA9IHdbMF07XG4gICAgICAgICAgICBRLnB1c2godyk7XG5cbiAgICAgICAgICAgIGlmIChwYXJhbXMuYmZzKSB7XG4gICAgICAgICAgICAgIFZbd0lkXSA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbm5lY3RlZE5vZGVzLnB1c2godyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbm5lY3RlZEJ5W3dJZF0gPSBlO1xuICAgICAgICAgICAgaWQyZGVwdGhbd0lkXSA9IGlkMmRlcHRoW3ZJZF0gKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgd2hpbGUgKFEubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHZhciBfcmV0ID0gX2xvb3AoKTtcblxuICAgICAgICBpZiAoX3JldCA9PT0gXCJjb250aW51ZVwiKSBjb250aW51ZTtcbiAgICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHZhciBjb25uZWN0ZWRFbGVzID0gY3kuY29sbGVjdGlvbigpO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgY29ubmVjdGVkTm9kZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gY29ubmVjdGVkTm9kZXNbX2ldO1xuICAgICAgICB2YXIgZWRnZSA9IGNvbm5lY3RlZEJ5W25vZGUuaWQoKV07XG5cbiAgICAgICAgaWYgKGVkZ2UgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbm5lY3RlZEVsZXMucHVzaChlZGdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbm5lY3RlZEVsZXMucHVzaChub2RlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogY3kuY29sbGVjdGlvbihjb25uZWN0ZWRFbGVzKSxcbiAgICAgICAgZm91bmQ6IGN5LmNvbGxlY3Rpb24oZm91bmQpXG4gICAgICB9O1xuICAgIH07XG4gIH07IC8vIHNlYXJjaCwgc3Bhbm5pbmcgdHJlZXMsIGV0Y1xuXG5cbiAgdmFyIGVsZXNmbiR2ID0ge1xuICAgIGJyZWFkdGhGaXJzdFNlYXJjaDogZGVmaW5lU2VhcmNoKHtcbiAgICAgIGJmczogdHJ1ZVxuICAgIH0pLFxuICAgIGRlcHRoRmlyc3RTZWFyY2g6IGRlZmluZVNlYXJjaCh7XG4gICAgICBkZnM6IHRydWVcbiAgICB9KVxuICB9OyAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGljYWwgYWxpYXNcblxuICBlbGVzZm4kdi5iZnMgPSBlbGVzZm4kdi5icmVhZHRoRmlyc3RTZWFyY2g7XG4gIGVsZXNmbiR2LmRmcyA9IGVsZXNmbiR2LmRlcHRoRmlyc3RTZWFyY2g7XG5cbiAgdmFyIGhlYXAkMSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjguMFxuICAoZnVuY3Rpb24oKSB7XG4gICAgdmFyIEhlYXAsIGRlZmF1bHRDbXAsIGZsb29yLCBoZWFwaWZ5LCBoZWFwcG9wLCBoZWFwcHVzaCwgaGVhcHB1c2hwb3AsIGhlYXByZXBsYWNlLCBpbnNvcnQsIG1pbiwgbmxhcmdlc3QsIG5zbWFsbGVzdCwgdXBkYXRlSXRlbSwgX3NpZnRkb3duLCBfc2lmdHVwO1xuXG4gICAgZmxvb3IgPSBNYXRoLmZsb29yLCBtaW4gPSBNYXRoLm1pbjtcblxuXG4gICAgLypcbiAgICBEZWZhdWx0IGNvbXBhcmlzb24gZnVuY3Rpb24gdG8gYmUgdXNlZFxuICAgICAqL1xuXG4gICAgZGVmYXVsdENtcCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIGlmICh4IDwgeSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICBpZiAoeCA+IHkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9O1xuXG5cbiAgICAvKlxuICAgIEluc2VydCBpdGVtIHggaW4gbGlzdCBhLCBhbmQga2VlcCBpdCBzb3J0ZWQgYXNzdW1pbmcgYSBpcyBzb3J0ZWQuXG4gICAgXG4gICAgSWYgeCBpcyBhbHJlYWR5IGluIGEsIGluc2VydCBpdCB0byB0aGUgcmlnaHQgb2YgdGhlIHJpZ2h0bW9zdCB4LlxuICAgIFxuICAgIE9wdGlvbmFsIGFyZ3MgbG8gKGRlZmF1bHQgMCkgYW5kIGhpIChkZWZhdWx0IGEubGVuZ3RoKSBib3VuZCB0aGUgc2xpY2VcbiAgICBvZiBhIHRvIGJlIHNlYXJjaGVkLlxuICAgICAqL1xuXG4gICAgaW5zb3J0ID0gZnVuY3Rpb24oYSwgeCwgbG8sIGhpLCBjbXApIHtcbiAgICAgIHZhciBtaWQ7XG4gICAgICBpZiAobG8gPT0gbnVsbCkge1xuICAgICAgICBsbyA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICAgIH1cbiAgICAgIGlmIChsbyA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgICAgfVxuICAgICAgaWYgKGhpID09IG51bGwpIHtcbiAgICAgICAgaGkgPSBhLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICAgIG1pZCA9IGZsb29yKChsbyArIGhpKSAvIDIpO1xuICAgICAgICBpZiAoY21wKHgsIGFbbWlkXSkgPCAwKSB7XG4gICAgICAgICAgaGkgPSBtaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG8gPSBtaWQgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gKFtdLnNwbGljZS5hcHBseShhLCBbbG8sIGxvIC0gbG9dLmNvbmNhdCh4KSksIHgpO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgUHVzaCBpdGVtIG9udG8gaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LlxuICAgICAqL1xuXG4gICAgaGVhcHB1c2ggPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICAgIH1cbiAgICAgIGFycmF5LnB1c2goaXRlbSk7XG4gICAgICByZXR1cm4gX3NpZnRkb3duKGFycmF5LCAwLCBhcnJheS5sZW5ndGggLSAxLCBjbXApO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgUG9wIHRoZSBzbWFsbGVzdCBpdGVtIG9mZiB0aGUgaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LlxuICAgICAqL1xuXG4gICAgaGVhcHBvcCA9IGZ1bmN0aW9uKGFycmF5LCBjbXApIHtcbiAgICAgIHZhciBsYXN0ZWx0LCByZXR1cm5pdGVtO1xuICAgICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgICB9XG4gICAgICBsYXN0ZWx0ID0gYXJyYXkucG9wKCk7XG4gICAgICBpZiAoYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybml0ZW0gPSBhcnJheVswXTtcbiAgICAgICAgYXJyYXlbMF0gPSBsYXN0ZWx0O1xuICAgICAgICBfc2lmdHVwKGFycmF5LCAwLCBjbXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0dXJuaXRlbTtcbiAgICB9O1xuXG5cbiAgICAvKlxuICAgIFBvcCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IHNtYWxsZXN0IHZhbHVlLCBhbmQgYWRkIHRoZSBuZXcgaXRlbS5cbiAgICBcbiAgICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gaGVhcHBvcCgpIGZvbGxvd2VkIGJ5IGhlYXBwdXNoKCksIGFuZCBjYW4gYmVcbiAgICBtb3JlIGFwcHJvcHJpYXRlIHdoZW4gdXNpbmcgYSBmaXhlZCBzaXplIGhlYXAuIE5vdGUgdGhhdCB0aGUgdmFsdWVcbiAgICByZXR1cm5lZCBtYXkgYmUgbGFyZ2VyIHRoYW4gaXRlbSEgVGhhdCBjb25zdHJhaW5zIHJlYXNvbmFibGUgdXNlIG9mXG4gICAgdGhpcyByb3V0aW5lIHVubGVzcyB3cml0dGVuIGFzIHBhcnQgb2YgYSBjb25kaXRpb25hbCByZXBsYWNlbWVudDpcbiAgICAgICAgaWYgaXRlbSA+IGFycmF5WzBdXG4gICAgICAgICAgaXRlbSA9IGhlYXByZXBsYWNlKGFycmF5LCBpdGVtKVxuICAgICAqL1xuXG4gICAgaGVhcHJlcGxhY2UgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgICB2YXIgcmV0dXJuaXRlbTtcbiAgICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgICAgfVxuICAgICAgcmV0dXJuaXRlbSA9IGFycmF5WzBdO1xuICAgICAgYXJyYXlbMF0gPSBpdGVtO1xuICAgICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICAgIHJldHVybiByZXR1cm5pdGVtO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgRmFzdCB2ZXJzaW9uIG9mIGEgaGVhcHB1c2ggZm9sbG93ZWQgYnkgYSBoZWFwcG9wLlxuICAgICAqL1xuXG4gICAgaGVhcHB1c2hwb3AgPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgICB2YXIgX3JlZjtcbiAgICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5Lmxlbmd0aCAmJiBjbXAoYXJyYXlbMF0sIGl0ZW0pIDwgMCkge1xuICAgICAgICBfcmVmID0gW2FycmF5WzBdLCBpdGVtXSwgaXRlbSA9IF9yZWZbMF0sIGFycmF5WzBdID0gX3JlZlsxXTtcbiAgICAgICAgX3NpZnR1cChhcnJheSwgMCwgY21wKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgVHJhbnNmb3JtIGxpc3QgaW50byBhIGhlYXAsIGluLXBsYWNlLCBpbiBPKGFycmF5Lmxlbmd0aCkgdGltZS5cbiAgICAgKi9cblxuICAgIGhlYXBpZnkgPSBmdW5jdGlvbihhcnJheSwgY21wKSB7XG4gICAgICB2YXIgaSwgX2ksIF9sZW4sIF9yZWYxLCBfcmVzdWx0cywgX3Jlc3VsdHMxO1xuICAgICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgICB9XG4gICAgICBfcmVmMSA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgX3Jlc3VsdHMxID0gW107XG4gICAgICAgIGZvciAodmFyIF9qID0gMCwgX3JlZiA9IGZsb29yKGFycmF5Lmxlbmd0aCAvIDIpOyAwIDw9IF9yZWYgPyBfaiA8IF9yZWYgOiBfaiA+IF9yZWY7IDAgPD0gX3JlZiA/IF9qKysgOiBfai0tKXsgX3Jlc3VsdHMxLnB1c2goX2opOyB9XG4gICAgICAgIHJldHVybiBfcmVzdWx0czE7XG4gICAgICB9KS5hcHBseSh0aGlzKS5yZXZlcnNlKCk7XG4gICAgICBfcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmMS5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBpID0gX3JlZjFbX2ldO1xuICAgICAgICBfcmVzdWx0cy5wdXNoKF9zaWZ0dXAoYXJyYXksIGksIGNtcCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gaXRlbSBpbiB0aGUgaGVhcC5cbiAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgaXRlbSBpcyBiZWluZyBtb2RpZmllZC5cbiAgICAgKi9cblxuICAgIHVwZGF0ZUl0ZW0gPSBmdW5jdGlvbihhcnJheSwgaXRlbSwgY21wKSB7XG4gICAgICB2YXIgcG9zO1xuICAgICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgICB9XG4gICAgICBwb3MgPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xuICAgICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgX3NpZnRkb3duKGFycmF5LCAwLCBwb3MsIGNtcCk7XG4gICAgICByZXR1cm4gX3NpZnR1cChhcnJheSwgcG9zLCBjbXApO1xuICAgIH07XG5cblxuICAgIC8qXG4gICAgRmluZCB0aGUgbiBsYXJnZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC5cbiAgICAgKi9cblxuICAgIG5sYXJnZXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGNtcCkge1xuICAgICAgdmFyIGVsZW0sIHJlc3VsdCwgX2ksIF9sZW4sIF9yZWY7XG4gICAgICBpZiAoY21wID09IG51bGwpIHtcbiAgICAgICAgY21wID0gZGVmYXVsdENtcDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGFycmF5LnNsaWNlKDAsIG4pO1xuICAgICAgaWYgKCFyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBoZWFwaWZ5KHJlc3VsdCwgY21wKTtcbiAgICAgIF9yZWYgPSBhcnJheS5zbGljZShuKTtcbiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gX3JlZi5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICBlbGVtID0gX3JlZltfaV07XG4gICAgICAgIGhlYXBwdXNocG9wKHJlc3VsdCwgZWxlbSwgY21wKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQuc29ydChjbXApLnJldmVyc2UoKTtcbiAgICB9O1xuXG5cbiAgICAvKlxuICAgIEZpbmQgdGhlIG4gc21hbGxlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LlxuICAgICAqL1xuXG4gICAgbnNtYWxsZXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGNtcCkge1xuICAgICAgdmFyIGVsZW0sIGxvcywgcmVzdWx0LCBfaSwgX2osIF9sZW4sIF9yZWYsIF9yZWYxLCBfcmVzdWx0cztcbiAgICAgIGlmIChjbXAgPT0gbnVsbCkge1xuICAgICAgICBjbXAgPSBkZWZhdWx0Q21wO1xuICAgICAgfVxuICAgICAgaWYgKG4gKiAxMCA8PSBhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ID0gYXJyYXkuc2xpY2UoMCwgbikuc29ydChjbXApO1xuICAgICAgICBpZiAoIXJlc3VsdC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGxvcyA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICAgIF9yZWYgPSBhcnJheS5zbGljZShuKTtcbiAgICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBfaSsrKSB7XG4gICAgICAgICAgZWxlbSA9IF9yZWZbX2ldO1xuICAgICAgICAgIGlmIChjbXAoZWxlbSwgbG9zKSA8IDApIHtcbiAgICAgICAgICAgIGluc29ydChyZXN1bHQsIGVsZW0sIDAsIG51bGwsIGNtcCk7XG4gICAgICAgICAgICByZXN1bHQucG9wKCk7XG4gICAgICAgICAgICBsb3MgPSByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaGVhcGlmeShhcnJheSwgY21wKTtcbiAgICAgIF9yZXN1bHRzID0gW107XG4gICAgICBmb3IgKF9qID0gMCwgX3JlZjEgPSBtaW4obiwgYXJyYXkubGVuZ3RoKTsgMCA8PSBfcmVmMSA/IF9qIDwgX3JlZjEgOiBfaiA+IF9yZWYxOyAwIDw9IF9yZWYxID8gKytfaiA6IC0tX2opIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChoZWFwcG9wKGFycmF5LCBjbXApKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBfcmVzdWx0cztcbiAgICB9O1xuXG4gICAgX3NpZnRkb3duID0gZnVuY3Rpb24oYXJyYXksIHN0YXJ0cG9zLCBwb3MsIGNtcCkge1xuICAgICAgdmFyIG5ld2l0ZW0sIHBhcmVudCwgcGFyZW50cG9zO1xuICAgICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgICB9XG4gICAgICBuZXdpdGVtID0gYXJyYXlbcG9zXTtcbiAgICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcykge1xuICAgICAgICBwYXJlbnRwb3MgPSAocG9zIC0gMSkgPj4gMTtcbiAgICAgICAgcGFyZW50ID0gYXJyYXlbcGFyZW50cG9zXTtcbiAgICAgICAgaWYgKGNtcChuZXdpdGVtLCBwYXJlbnQpIDwgMCkge1xuICAgICAgICAgIGFycmF5W3Bvc10gPSBwYXJlbnQ7XG4gICAgICAgICAgcG9zID0gcGFyZW50cG9zO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5W3Bvc10gPSBuZXdpdGVtO1xuICAgIH07XG5cbiAgICBfc2lmdHVwID0gZnVuY3Rpb24oYXJyYXksIHBvcywgY21wKSB7XG4gICAgICB2YXIgY2hpbGRwb3MsIGVuZHBvcywgbmV3aXRlbSwgcmlnaHRwb3MsIHN0YXJ0cG9zO1xuICAgICAgaWYgKGNtcCA9PSBudWxsKSB7XG4gICAgICAgIGNtcCA9IGRlZmF1bHRDbXA7XG4gICAgICB9XG4gICAgICBlbmRwb3MgPSBhcnJheS5sZW5ndGg7XG4gICAgICBzdGFydHBvcyA9IHBvcztcbiAgICAgIG5ld2l0ZW0gPSBhcnJheVtwb3NdO1xuICAgICAgY2hpbGRwb3MgPSAyICogcG9zICsgMTtcbiAgICAgIHdoaWxlIChjaGlsZHBvcyA8IGVuZHBvcykge1xuICAgICAgICByaWdodHBvcyA9IGNoaWxkcG9zICsgMTtcbiAgICAgICAgaWYgKHJpZ2h0cG9zIDwgZW5kcG9zICYmICEoY21wKGFycmF5W2NoaWxkcG9zXSwgYXJyYXlbcmlnaHRwb3NdKSA8IDApKSB7XG4gICAgICAgICAgY2hpbGRwb3MgPSByaWdodHBvcztcbiAgICAgICAgfVxuICAgICAgICBhcnJheVtwb3NdID0gYXJyYXlbY2hpbGRwb3NdO1xuICAgICAgICBwb3MgPSBjaGlsZHBvcztcbiAgICAgICAgY2hpbGRwb3MgPSAyICogcG9zICsgMTtcbiAgICAgIH1cbiAgICAgIGFycmF5W3Bvc10gPSBuZXdpdGVtO1xuICAgICAgcmV0dXJuIF9zaWZ0ZG93bihhcnJheSwgc3RhcnRwb3MsIHBvcywgY21wKTtcbiAgICB9O1xuXG4gICAgSGVhcCA9IChmdW5jdGlvbigpIHtcbiAgICAgIEhlYXAucHVzaCA9IGhlYXBwdXNoO1xuXG4gICAgICBIZWFwLnBvcCA9IGhlYXBwb3A7XG5cbiAgICAgIEhlYXAucmVwbGFjZSA9IGhlYXByZXBsYWNlO1xuXG4gICAgICBIZWFwLnB1c2hwb3AgPSBoZWFwcHVzaHBvcDtcblxuICAgICAgSGVhcC5oZWFwaWZ5ID0gaGVhcGlmeTtcblxuICAgICAgSGVhcC51cGRhdGVJdGVtID0gdXBkYXRlSXRlbTtcblxuICAgICAgSGVhcC5ubGFyZ2VzdCA9IG5sYXJnZXN0O1xuXG4gICAgICBIZWFwLm5zbWFsbGVzdCA9IG5zbWFsbGVzdDtcblxuICAgICAgZnVuY3Rpb24gSGVhcChjbXApIHtcbiAgICAgICAgdGhpcy5jbXAgPSBjbXAgIT0gbnVsbCA/IGNtcCA6IGRlZmF1bHRDbXA7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgIH1cblxuICAgICAgSGVhcC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKHgpIHtcbiAgICAgICAgcmV0dXJuIGhlYXBwdXNoKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGVhcHBvcCh0aGlzLm5vZGVzLCB0aGlzLmNtcCk7XG4gICAgICB9O1xuXG4gICAgICBIZWFwLnByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzWzBdO1xuICAgICAgfTtcblxuICAgICAgSGVhcC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmluZGV4T2YoeCkgIT09IC0xO1xuICAgICAgfTtcblxuICAgICAgSGVhcC5wcm90b3R5cGUucmVwbGFjZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICAgICAgcmV0dXJuIGhlYXByZXBsYWNlKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLnB1c2hwb3AgPSBmdW5jdGlvbih4KSB7XG4gICAgICAgIHJldHVybiBoZWFwcHVzaHBvcCh0aGlzLm5vZGVzLCB4LCB0aGlzLmNtcCk7XG4gICAgICB9O1xuXG4gICAgICBIZWFwLnByb3RvdHlwZS5oZWFwaWZ5ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBoZWFwaWZ5KHRoaXMubm9kZXMsIHRoaXMuY21wKTtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLnVwZGF0ZUl0ZW0gPSBmdW5jdGlvbih4KSB7XG4gICAgICAgIHJldHVybiB1cGRhdGVJdGVtKHRoaXMubm9kZXMsIHgsIHRoaXMuY21wKTtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzID0gW107XG4gICAgICB9O1xuXG4gICAgICBIZWFwLnByb3RvdHlwZS5lbXB0eSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5sZW5ndGggPT09IDA7XG4gICAgICB9O1xuXG4gICAgICBIZWFwLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmxlbmd0aDtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoZWFwO1xuICAgICAgICBoZWFwID0gbmV3IEhlYXAoKTtcbiAgICAgICAgaGVhcC5ub2RlcyA9IHRoaXMubm9kZXMuc2xpY2UoMCk7XG4gICAgICAgIHJldHVybiBoZWFwO1xuICAgICAgfTtcblxuICAgICAgSGVhcC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5zbGljZSgwKTtcbiAgICAgIH07XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLmluc2VydCA9IEhlYXAucHJvdG90eXBlLnB1c2g7XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLnRvcCA9IEhlYXAucHJvdG90eXBlLnBlZWs7XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLmZyb250ID0gSGVhcC5wcm90b3R5cGUucGVlaztcblxuICAgICAgSGVhcC5wcm90b3R5cGUuaGFzID0gSGVhcC5wcm90b3R5cGUuY29udGFpbnM7XG5cbiAgICAgIEhlYXAucHJvdG90eXBlLmNvcHkgPSBIZWFwLnByb3RvdHlwZS5jbG9uZTtcblxuICAgICAgcmV0dXJuIEhlYXA7XG5cbiAgICB9KSgpO1xuXG4gICAgKGZ1bmN0aW9uKHJvb3QsIGZhY3RvcnkpIHtcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuICAgICAgfVxuICAgIH0pKHRoaXMsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIEhlYXA7XG4gICAgfSk7XG5cbiAgfSkuY2FsbChjb21tb25qc0dsb2JhbCk7XG4gIH0pO1xuXG4gIHZhciBoZWFwID0gaGVhcCQxO1xuXG4gIHZhciBkaWprc3RyYURlZmF1bHRzID0gZGVmYXVsdHMkZyh7XG4gICAgcm9vdDogbnVsbCxcbiAgICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodChlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGRpcmVjdGVkOiBmYWxzZVxuICB9KTtcbiAgdmFyIGVsZXNmbiR1ID0ge1xuICAgIGRpamtzdHJhOiBmdW5jdGlvbiBkaWprc3RyYShvcHRpb25zKSB7XG4gICAgICBpZiAoIXBsYWluT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIHJvb3Q6IGFyZ3NbMF0sXG4gICAgICAgICAgd2VpZ2h0OiBhcmdzWzFdLFxuICAgICAgICAgIGRpcmVjdGVkOiBhcmdzWzJdXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciBfZGlqa3N0cmFEZWZhdWx0cyA9IGRpamtzdHJhRGVmYXVsdHMob3B0aW9ucyksXG4gICAgICAgICAgcm9vdCA9IF9kaWprc3RyYURlZmF1bHRzLnJvb3QsXG4gICAgICAgICAgd2VpZ2h0ID0gX2RpamtzdHJhRGVmYXVsdHMud2VpZ2h0LFxuICAgICAgICAgIGRpcmVjdGVkID0gX2RpamtzdHJhRGVmYXVsdHMuZGlyZWN0ZWQ7XG5cbiAgICAgIHZhciBlbGVzID0gdGhpcztcbiAgICAgIHZhciB3ZWlnaHRGbiA9IHdlaWdodDtcbiAgICAgIHZhciBzb3VyY2UgPSBzdHJpbmcocm9vdCkgPyB0aGlzLmZpbHRlcihyb290KVswXSA6IHJvb3RbMF07XG4gICAgICB2YXIgZGlzdCA9IHt9O1xuICAgICAgdmFyIHByZXYgPSB7fTtcbiAgICAgIHZhciBrbm93bkRpc3QgPSB7fTtcblxuICAgICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzO1xuXG4gICAgICBlZGdlcy51bm1lcmdlQnkoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmlzTG9vcCgpO1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChub2RlKSB7XG4gICAgICAgIHJldHVybiBkaXN0W25vZGUuaWQoKV07XG4gICAgICB9O1xuXG4gICAgICB2YXIgc2V0RGlzdCA9IGZ1bmN0aW9uIHNldERpc3Qobm9kZSwgZCkge1xuICAgICAgICBkaXN0W25vZGUuaWQoKV0gPSBkO1xuICAgICAgICBRLnVwZGF0ZUl0ZW0obm9kZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgUSA9IG5ldyBoZWFwKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBnZXREaXN0KGEpIC0gZ2V0RGlzdChiKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGRpc3Rbbm9kZS5pZCgpXSA9IG5vZGUuc2FtZShzb3VyY2UpID8gMCA6IEluZmluaXR5O1xuICAgICAgICBRLnB1c2gobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBkaXN0QmV0d2VlbiA9IGZ1bmN0aW9uIGRpc3RCZXR3ZWVuKHUsIHYpIHtcbiAgICAgICAgdmFyIHV2cyA9IChkaXJlY3RlZCA/IHUuZWRnZXNUbyh2KSA6IHUuZWRnZXNXaXRoKHYpKS5pbnRlcnNlY3QoZWRnZXMpO1xuICAgICAgICB2YXIgc21hbGxlc3REaXN0YW5jZSA9IEluZmluaXR5O1xuICAgICAgICB2YXIgc21hbGxlc3RFZGdlO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB1dnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSB1dnNbX2ldO1xuXG4gICAgICAgICAgdmFyIF93ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTtcblxuICAgICAgICAgIGlmIChfd2VpZ2h0IDwgc21hbGxlc3REaXN0YW5jZSB8fCAhc21hbGxlc3RFZGdlKSB7XG4gICAgICAgICAgICBzbWFsbGVzdERpc3RhbmNlID0gX3dlaWdodDtcbiAgICAgICAgICAgIHNtYWxsZXN0RWRnZSA9IGVkZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlZGdlOiBzbWFsbGVzdEVkZ2UsXG4gICAgICAgICAgZGlzdDogc21hbGxlc3REaXN0YW5jZVxuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgd2hpbGUgKFEuc2l6ZSgpID4gMCkge1xuICAgICAgICB2YXIgdSA9IFEucG9wKCk7XG4gICAgICAgIHZhciBzbWFsbGV0c0Rpc3QgPSBnZXREaXN0KHUpO1xuICAgICAgICB2YXIgdWlkID0gdS5pZCgpO1xuICAgICAgICBrbm93bkRpc3RbdWlkXSA9IHNtYWxsZXRzRGlzdDtcblxuICAgICAgICBpZiAoc21hbGxldHNEaXN0ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5laWdoYm9ycyA9IHUubmVpZ2hib3Job29kKCkuaW50ZXJzZWN0KG5vZGVzKTtcblxuICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBuZWlnaGJvcnMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgIHZhciB2ID0gbmVpZ2hib3JzW19pMl07XG4gICAgICAgICAgdmFyIHZpZCA9IHYuaWQoKTtcbiAgICAgICAgICB2YXIgdkRpc3QgPSBkaXN0QmV0d2Vlbih1LCB2KTtcbiAgICAgICAgICB2YXIgYWx0ID0gc21hbGxldHNEaXN0ICsgdkRpc3QuZGlzdDtcblxuICAgICAgICAgIGlmIChhbHQgPCBnZXREaXN0KHYpKSB7XG4gICAgICAgICAgICBzZXREaXN0KHYsIGFsdCk7XG4gICAgICAgICAgICBwcmV2W3ZpZF0gPSB7XG4gICAgICAgICAgICAgIG5vZGU6IHUsXG4gICAgICAgICAgICAgIGVkZ2U6IHZEaXN0LmVkZ2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGZvclxuXG4gICAgICB9IC8vIHdoaWxlXG5cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlzdGFuY2VUbzogZnVuY3Rpb24gZGlzdGFuY2VUbyhub2RlKSB7XG4gICAgICAgICAgdmFyIHRhcmdldCA9IHN0cmluZyhub2RlKSA/IG5vZGVzLmZpbHRlcihub2RlKVswXSA6IG5vZGVbMF07XG4gICAgICAgICAgcmV0dXJuIGtub3duRGlzdFt0YXJnZXQuaWQoKV07XG4gICAgICAgIH0sXG4gICAgICAgIHBhdGhUbzogZnVuY3Rpb24gcGF0aFRvKG5vZGUpIHtcbiAgICAgICAgICB2YXIgdGFyZ2V0ID0gc3RyaW5nKG5vZGUpID8gbm9kZXMuZmlsdGVyKG5vZGUpWzBdIDogbm9kZVswXTtcbiAgICAgICAgICB2YXIgUyA9IFtdO1xuICAgICAgICAgIHZhciB1ID0gdGFyZ2V0O1xuICAgICAgICAgIHZhciB1aWQgPSB1LmlkKCk7XG5cbiAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIFMudW5zaGlmdCh0YXJnZXQpO1xuXG4gICAgICAgICAgICB3aGlsZSAocHJldlt1aWRdKSB7XG4gICAgICAgICAgICAgIHZhciBwID0gcHJldlt1aWRdO1xuICAgICAgICAgICAgICBTLnVuc2hpZnQocC5lZGdlKTtcbiAgICAgICAgICAgICAgUy51bnNoaWZ0KHAubm9kZSk7XG4gICAgICAgICAgICAgIHUgPSBwLm5vZGU7XG4gICAgICAgICAgICAgIHVpZCA9IHUuaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZWxlcy5zcGF3bihTKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGVsZXNmbiR0ID0ge1xuICAgIC8vIGtydXNrYWwncyBhbGdvcml0aG0gKGZpbmRzIG1pbiBzcGFubmluZyB0cmVlLCBhc3N1bWluZyB1bmRpcmVjdGVkIGdyYXBoKVxuICAgIC8vIGltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICAgIGtydXNrYWw6IGZ1bmN0aW9uIGtydXNrYWwod2VpZ2h0Rm4pIHtcbiAgICAgIHdlaWdodEZuID0gd2VpZ2h0Rm4gfHwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9O1xuXG4gICAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICAgIG5vZGVzID0gX3RoaXMkYnlHcm91cC5ub2RlcyxcbiAgICAgICAgICBlZGdlcyA9IF90aGlzJGJ5R3JvdXAuZWRnZXM7XG5cbiAgICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICAgIHZhciBmb3Jlc3QgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuICAgICAgdmFyIEEgPSBub2RlczsgLy8gYXNzdW1lcyBieUdyb3VwKCkgY3JlYXRlcyBuZXcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgc2FmZWx5IG11dGF0ZWRcblxuICAgICAgdmFyIGZpbmRTZXRJbmRleCA9IGZ1bmN0aW9uIGZpbmRTZXRJbmRleChlbGUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3Jlc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlcyA9IGZvcmVzdFtpXTtcblxuICAgICAgICAgIGlmIChlbGVzLmhhcyhlbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07IC8vIHN0YXJ0IHdpdGggb25lIGZvcmVzdCBwZXIgbm9kZVxuXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgICBmb3Jlc3RbaV0gPSB0aGlzLnNwYXduKG5vZGVzW2ldKTtcbiAgICAgIH1cblxuICAgICAgdmFyIFMgPSBlZGdlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiB3ZWlnaHRGbihhKSAtIHdlaWdodEZuKGIpO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBTLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgZWRnZSA9IFNbX2ldO1xuICAgICAgICB2YXIgdSA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICAgIHZhciB2ID0gZWRnZS50YXJnZXQoKVswXTtcbiAgICAgICAgdmFyIHNldFVJbmRleCA9IGZpbmRTZXRJbmRleCh1KTtcbiAgICAgICAgdmFyIHNldFZJbmRleCA9IGZpbmRTZXRJbmRleCh2KTtcbiAgICAgICAgdmFyIHNldFUgPSBmb3Jlc3Rbc2V0VUluZGV4XTtcbiAgICAgICAgdmFyIHNldFYgPSBmb3Jlc3Rbc2V0VkluZGV4XTtcblxuICAgICAgICBpZiAoc2V0VUluZGV4ICE9PSBzZXRWSW5kZXgpIHtcbiAgICAgICAgICBBLm1lcmdlKGVkZ2UpOyAvLyBjb21iaW5lIGZvcmVzdHMgZm9yIHUgYW5kIHZcblxuICAgICAgICAgIHNldFUubWVyZ2Uoc2V0Vik7XG4gICAgICAgICAgZm9yZXN0LnNwbGljZShzZXRWSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBBO1xuICAgIH1cbiAgfTtcblxuICB2YXIgYVN0YXJEZWZhdWx0cyA9IGRlZmF1bHRzJGcoe1xuICAgIHJvb3Q6IG51bGwsXG4gICAgZ29hbDogbnVsbCxcbiAgICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodChlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGhldXJpc3RpYzogZnVuY3Rpb24gaGV1cmlzdGljKGVkZ2UpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0sXG4gICAgZGlyZWN0ZWQ6IGZhbHNlXG4gIH0pO1xuICB2YXIgZWxlc2ZuJHMgPSB7XG4gICAgLy8gSW1wbGVtZW50ZWQgZnJvbSBwc2V1ZG9jb2RlIGZyb20gd2lraXBlZGlhXG4gICAgYVN0YXI6IGZ1bmN0aW9uIGFTdGFyKG9wdGlvbnMpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgICAgdmFyIF9hU3RhckRlZmF1bHRzID0gYVN0YXJEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgICByb290ID0gX2FTdGFyRGVmYXVsdHMucm9vdCxcbiAgICAgICAgICBnb2FsID0gX2FTdGFyRGVmYXVsdHMuZ29hbCxcbiAgICAgICAgICBoZXVyaXN0aWMgPSBfYVN0YXJEZWZhdWx0cy5oZXVyaXN0aWMsXG4gICAgICAgICAgZGlyZWN0ZWQgPSBfYVN0YXJEZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgICB3ZWlnaHQgPSBfYVN0YXJEZWZhdWx0cy53ZWlnaHQ7XG5cbiAgICAgIHJvb3QgPSBjeS5jb2xsZWN0aW9uKHJvb3QpWzBdO1xuICAgICAgZ29hbCA9IGN5LmNvbGxlY3Rpb24oZ29hbClbMF07XG4gICAgICB2YXIgc2lkID0gcm9vdC5pZCgpO1xuICAgICAgdmFyIHRpZCA9IGdvYWwuaWQoKTtcbiAgICAgIHZhciBnU2NvcmUgPSB7fTtcbiAgICAgIHZhciBmU2NvcmUgPSB7fTtcbiAgICAgIHZhciBjbG9zZWRTZXRJZHMgPSB7fTtcbiAgICAgIHZhciBvcGVuU2V0ID0gbmV3IGhlYXAoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGZTY29yZVthLmlkKCldIC0gZlNjb3JlW2IuaWQoKV07XG4gICAgICB9KTtcbiAgICAgIHZhciBvcGVuU2V0SWRzID0gbmV3IFNldCQxKCk7XG4gICAgICB2YXIgY2FtZUZyb20gPSB7fTtcbiAgICAgIHZhciBjYW1lRnJvbUVkZ2UgPSB7fTtcblxuICAgICAgdmFyIGFkZFRvT3BlblNldCA9IGZ1bmN0aW9uIGFkZFRvT3BlblNldChlbGUsIGlkKSB7XG4gICAgICAgIG9wZW5TZXQucHVzaChlbGUpO1xuICAgICAgICBvcGVuU2V0SWRzLmFkZChpZCk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgY01pbiwgY01pbklkO1xuXG4gICAgICB2YXIgcG9wRnJvbU9wZW5TZXQgPSBmdW5jdGlvbiBwb3BGcm9tT3BlblNldCgpIHtcbiAgICAgICAgY01pbiA9IG9wZW5TZXQucG9wKCk7XG4gICAgICAgIGNNaW5JZCA9IGNNaW4uaWQoKTtcbiAgICAgICAgb3BlblNldElkc1tcImRlbGV0ZVwiXShjTWluSWQpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGlzSW5PcGVuU2V0ID0gZnVuY3Rpb24gaXNJbk9wZW5TZXQoaWQpIHtcbiAgICAgICAgcmV0dXJuIG9wZW5TZXRJZHMuaGFzKGlkKTtcbiAgICAgIH07XG5cbiAgICAgIGFkZFRvT3BlblNldChyb290LCBzaWQpO1xuICAgICAgZ1Njb3JlW3NpZF0gPSAwO1xuICAgICAgZlNjb3JlW3NpZF0gPSBoZXVyaXN0aWMocm9vdCk7IC8vIENvdW50ZXJcblxuICAgICAgdmFyIHN0ZXBzID0gMDsgLy8gTWFpbiBsb29wXG5cbiAgICAgIHdoaWxlIChvcGVuU2V0LnNpemUoKSA+IDApIHtcbiAgICAgICAgcG9wRnJvbU9wZW5TZXQoKTtcbiAgICAgICAgc3RlcHMrKzsgLy8gSWYgd2UndmUgZm91bmQgb3VyIGdvYWwsIHRoZW4gd2UgYXJlIGRvbmVcblxuICAgICAgICBpZiAoY01pbklkID09PSB0aWQpIHtcbiAgICAgICAgICB2YXIgcGF0aCA9IFtdO1xuICAgICAgICAgIHZhciBwYXRoTm9kZSA9IGdvYWw7XG4gICAgICAgICAgdmFyIHBhdGhOb2RlSWQgPSB0aWQ7XG4gICAgICAgICAgdmFyIHBhdGhFZGdlID0gY2FtZUZyb21FZGdlW3BhdGhOb2RlSWRdO1xuXG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KHBhdGhOb2RlKTtcblxuICAgICAgICAgICAgaWYgKHBhdGhFZGdlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcGF0aC51bnNoaWZ0KHBhdGhFZGdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aE5vZGUgPSBjYW1lRnJvbVtwYXRoTm9kZUlkXTtcblxuICAgICAgICAgICAgaWYgKHBhdGhOb2RlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGhOb2RlSWQgPSBwYXRoTm9kZS5pZCgpO1xuICAgICAgICAgICAgcGF0aEVkZ2UgPSBjYW1lRnJvbUVkZ2VbcGF0aE5vZGVJZF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvdW5kOiB0cnVlLFxuICAgICAgICAgICAgZGlzdGFuY2U6IGdTY29yZVtjTWluSWRdLFxuICAgICAgICAgICAgcGF0aDogdGhpcy5zcGF3bihwYXRoKSxcbiAgICAgICAgICAgIHN0ZXBzOiBzdGVwc1xuICAgICAgICAgIH07XG4gICAgICAgIH0gLy8gQWRkIGNNaW4gdG8gcHJvY2Vzc2VkIG5vZGVzXG5cblxuICAgICAgICBjbG9zZWRTZXRJZHNbY01pbklkXSA9IHRydWU7IC8vIFVwZGF0ZSBzY29yZXMgZm9yIG5laWdoYm9ycyBvZiBjTWluXG4gICAgICAgIC8vIFRha2UgaW50byBhY2NvdW50IGlmIGdyYXBoIGlzIGRpcmVjdGVkIG9yIG5vdFxuXG4gICAgICAgIHZhciB2d0VkZ2VzID0gY01pbi5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZ3RWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZSA9IHZ3RWRnZXNbaV07IC8vIGVkZ2UgbXVzdCBiZSBpbiBzZXQgb2YgY2FsbGluZyBlbGVzXG5cbiAgICAgICAgICBpZiAoIXRoaXMuaGFzRWxlbWVudFdpdGhJZChlLmlkKCkpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IC8vIGNNaW4gbXVzdCBiZSB0aGUgc291cmNlIG9mIGVkZ2UgaWYgZGlyZWN0ZWRcblxuXG4gICAgICAgICAgaWYgKGRpcmVjdGVkICYmIGUuZGF0YSgnc291cmNlJykgIT09IGNNaW5JZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHdTcmMgPSBlLnNvdXJjZSgpO1xuICAgICAgICAgIHZhciB3VGd0ID0gZS50YXJnZXQoKTtcbiAgICAgICAgICB2YXIgdyA9IHdTcmMuaWQoKSAhPT0gY01pbklkID8gd1NyYyA6IHdUZ3Q7XG4gICAgICAgICAgdmFyIHdpZCA9IHcuaWQoKTsgLy8gbm9kZSBtdXN0IGJlIGluIHNldCBvZiBjYWxsaW5nIGVsZXNcblxuICAgICAgICAgIGlmICghdGhpcy5oYXNFbGVtZW50V2l0aElkKHdpZCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gaWYgbm9kZSBpcyBpbiBjbG9zZWRTZXQsIGlnbm9yZSBpdFxuXG5cbiAgICAgICAgICBpZiAoY2xvc2VkU2V0SWRzW3dpZF0pIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gTmV3IHRlbnRhdGl2ZSBzY29yZSBmb3Igbm9kZSB3XG5cblxuICAgICAgICAgIHZhciB0ZW1wU2NvcmUgPSBnU2NvcmVbY01pbklkXSArIHdlaWdodChlKTsgLy8gVXBkYXRlIGdTY29yZSBmb3Igbm9kZSB3IGlmOlxuICAgICAgICAgIC8vICAgdyBub3QgcHJlc2VudCBpbiBvcGVuU2V0XG4gICAgICAgICAgLy8gT1JcbiAgICAgICAgICAvLyAgIHRlbnRhdGl2ZSBnU2NvcmUgaXMgbGVzcyB0aGFuIHByZXZpb3VzIHZhbHVlXG4gICAgICAgICAgLy8gdyBub3QgaW4gb3BlblNldFxuXG4gICAgICAgICAgaWYgKCFpc0luT3BlblNldCh3aWQpKSB7XG4gICAgICAgICAgICBnU2NvcmVbd2lkXSA9IHRlbXBTY29yZTtcbiAgICAgICAgICAgIGZTY29yZVt3aWRdID0gdGVtcFNjb3JlICsgaGV1cmlzdGljKHcpO1xuICAgICAgICAgICAgYWRkVG9PcGVuU2V0KHcsIHdpZCk7XG4gICAgICAgICAgICBjYW1lRnJvbVt3aWRdID0gY01pbjtcbiAgICAgICAgICAgIGNhbWVGcm9tRWRnZVt3aWRdID0gZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gLy8gdyBhbHJlYWR5IGluIG9wZW5TZXQsIGJ1dCB3aXRoIGdyZWF0ZXIgZ1Njb3JlXG5cblxuICAgICAgICAgIGlmICh0ZW1wU2NvcmUgPCBnU2NvcmVbd2lkXSkge1xuICAgICAgICAgICAgZ1Njb3JlW3dpZF0gPSB0ZW1wU2NvcmU7XG4gICAgICAgICAgICBmU2NvcmVbd2lkXSA9IHRlbXBTY29yZSArIGhldXJpc3RpYyh3KTtcbiAgICAgICAgICAgIGNhbWVGcm9tW3dpZF0gPSBjTWluO1xuICAgICAgICAgICAgY2FtZUZyb21FZGdlW3dpZF0gPSBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBFbmQgb2YgbmVpZ2hib3JzIHVwZGF0ZVxuXG4gICAgICB9IC8vIEVuZCBvZiBtYWluIGxvb3BcbiAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgaGVyZSwgdGhlbiB3ZSd2ZSBub3QgcmVhY2hlZCBvdXIgZ29hbFxuXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgICAgZGlzdGFuY2U6IHVuZGVmaW5lZCxcbiAgICAgICAgcGF0aDogdW5kZWZpbmVkLFxuICAgICAgICBzdGVwczogc3RlcHNcbiAgICAgIH07XG4gICAgfVxuICB9OyAvLyBlbGVzZm5cblxuICB2YXIgZmxveWRXYXJzaGFsbERlZmF1bHRzID0gZGVmYXVsdHMkZyh7XG4gICAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSxcbiAgICBkaXJlY3RlZDogZmFsc2VcbiAgfSk7XG4gIHZhciBlbGVzZm4kciA9IHtcbiAgICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgICBmbG95ZFdhcnNoYWxsOiBmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKG9wdGlvbnMpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgICAgdmFyIF9mbG95ZFdhcnNoYWxsRGVmYXVsdCA9IGZsb3lkV2Fyc2hhbGxEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgICB3ZWlnaHQgPSBfZmxveWRXYXJzaGFsbERlZmF1bHQud2VpZ2h0LFxuICAgICAgICAgIGRpcmVjdGVkID0gX2Zsb3lkV2Fyc2hhbGxEZWZhdWx0LmRpcmVjdGVkO1xuXG4gICAgICB2YXIgd2VpZ2h0Rm4gPSB3ZWlnaHQ7XG5cbiAgICAgIHZhciBfdGhpcyRieUdyb3VwID0gdGhpcy5ieUdyb3VwKCksXG4gICAgICAgICAgbm9kZXMgPSBfdGhpcyRieUdyb3VwLm5vZGVzLFxuICAgICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgICAgdmFyIE4gPSBub2Rlcy5sZW5ndGg7XG4gICAgICB2YXIgTnNxID0gTiAqIE47XG5cbiAgICAgIHZhciBpbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZihub2RlKSB7XG4gICAgICAgIHJldHVybiBub2Rlcy5pbmRleE9mKG5vZGUpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGF0SW5kZXggPSBmdW5jdGlvbiBhdEluZGV4KGkpIHtcbiAgICAgICAgcmV0dXJuIG5vZGVzW2ldO1xuICAgICAgfTsgLy8gSW5pdGlhbGl6ZSBkaXN0YW5jZSBtYXRyaXhcblxuXG4gICAgICB2YXIgZGlzdCA9IG5ldyBBcnJheShOc3EpO1xuXG4gICAgICBmb3IgKHZhciBuID0gMDsgbiA8IE5zcTsgbisrKSB7XG4gICAgICAgIHZhciBqID0gbiAlIE47XG4gICAgICAgIHZhciBpID0gKG4gLSBqKSAvIE47XG5cbiAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICBkaXN0W25dID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXN0W25dID0gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gSW5pdGlhbGl6ZSBtYXRyaXggdXNlZCBmb3IgcGF0aCByZWNvbnN0cnVjdGlvblxuICAgICAgLy8gSW5pdGlhbGl6ZSBkaXN0YW5jZSBtYXRyaXhcblxuXG4gICAgICB2YXIgbmV4dCA9IG5ldyBBcnJheShOc3EpO1xuICAgICAgdmFyIGVkZ2VOZXh0ID0gbmV3IEFycmF5KE5zcSk7IC8vIFByb2Nlc3MgZWRnZXNcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGVkZ2VzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW19pXTtcbiAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpWzBdO1xuXG4gICAgICAgIGlmIChzcmMgPT09IHRndCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IC8vIGV4Y2x1ZGUgbG9vcHNcblxuXG4gICAgICAgIHZhciBzID0gaW5kZXhPZihzcmMpO1xuICAgICAgICB2YXIgdCA9IGluZGV4T2YodGd0KTtcbiAgICAgICAgdmFyIHN0ID0gcyAqIE4gKyB0OyAvLyBzb3VyY2UgdG8gdGFyZ2V0IGluZGV4XG5cbiAgICAgICAgdmFyIF93ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTsgLy8gQ2hlY2sgaWYgYWxyZWFkeSBwcm9jZXNzIGFub3RoZXIgZWRnZSBiZXR3ZWVuIHNhbWUgMiBub2Rlc1xuXG5cbiAgICAgICAgaWYgKGRpc3Rbc3RdID4gX3dlaWdodCkge1xuICAgICAgICAgIGRpc3Rbc3RdID0gX3dlaWdodDtcbiAgICAgICAgICBuZXh0W3N0XSA9IHQ7XG4gICAgICAgICAgZWRnZU5leHRbc3RdID0gZWRnZTtcbiAgICAgICAgfSAvLyBJZiB1bmRpcmVjdGVkIGdyYXBoLCBwcm9jZXNzICdyZXZlcnNlZCcgZWRnZVxuXG5cbiAgICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICAgIHZhciB0cyA9IHQgKiBOICsgczsgLy8gdGFyZ2V0IHRvIHNvdXJjZSBpbmRleFxuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCAmJiBkaXN0W3RzXSA+IF93ZWlnaHQpIHtcbiAgICAgICAgICAgIGRpc3RbdHNdID0gX3dlaWdodDtcbiAgICAgICAgICAgIG5leHRbdHNdID0gcztcbiAgICAgICAgICAgIGVkZ2VOZXh0W3RzXSA9IGVkZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIE1haW4gbG9vcFxuXG5cbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgTjsgaysrKSB7XG4gICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47IF9pMisrKSB7XG4gICAgICAgICAgdmFyIGlrID0gX2kyICogTiArIGs7XG5cbiAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgTjsgX2orKykge1xuICAgICAgICAgICAgdmFyIGlqID0gX2kyICogTiArIF9qO1xuICAgICAgICAgICAgdmFyIGtqID0gayAqIE4gKyBfajtcblxuICAgICAgICAgICAgaWYgKGRpc3RbaWtdICsgZGlzdFtral0gPCBkaXN0W2lqXSkge1xuICAgICAgICAgICAgICBkaXN0W2lqXSA9IGRpc3RbaWtdICsgZGlzdFtral07XG4gICAgICAgICAgICAgIG5leHRbaWpdID0gbmV4dFtpa107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBnZXRBcmdFbGUgPSBmdW5jdGlvbiBnZXRBcmdFbGUoZWxlKSB7XG4gICAgICAgIHJldHVybiAoc3RyaW5nKGVsZSkgPyBjeS5maWx0ZXIoZWxlKSA6IGVsZSlbMF07XG4gICAgICB9O1xuXG4gICAgICB2YXIgaW5kZXhPZkFyZ0VsZSA9IGZ1bmN0aW9uIGluZGV4T2ZBcmdFbGUoZWxlKSB7XG4gICAgICAgIHJldHVybiBpbmRleE9mKGdldEFyZ0VsZShlbGUpKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciByZXMgPSB7XG4gICAgICAgIGRpc3RhbmNlOiBmdW5jdGlvbiBkaXN0YW5jZShmcm9tLCB0bykge1xuICAgICAgICAgIHZhciBpID0gaW5kZXhPZkFyZ0VsZShmcm9tKTtcbiAgICAgICAgICB2YXIgaiA9IGluZGV4T2ZBcmdFbGUodG8pO1xuICAgICAgICAgIHJldHVybiBkaXN0W2kgKiBOICsgal07XG4gICAgICAgIH0sXG4gICAgICAgIHBhdGg6IGZ1bmN0aW9uIHBhdGgoZnJvbSwgdG8pIHtcbiAgICAgICAgICB2YXIgaSA9IGluZGV4T2ZBcmdFbGUoZnJvbSk7XG4gICAgICAgICAgdmFyIGogPSBpbmRleE9mQXJnRWxlKHRvKTtcbiAgICAgICAgICB2YXIgZnJvbU5vZGUgPSBhdEluZGV4KGkpO1xuXG4gICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tTm9kZS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG5leHRbaSAqIE4gKyBqXSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwYXRoID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgIHZhciBwcmV2ID0gaTtcbiAgICAgICAgICB2YXIgZWRnZTtcbiAgICAgICAgICBwYXRoLm1lcmdlKGZyb21Ob2RlKTtcblxuICAgICAgICAgIHdoaWxlIChpICE9PSBqKSB7XG4gICAgICAgICAgICBwcmV2ID0gaTtcbiAgICAgICAgICAgIGkgPSBuZXh0W2kgKiBOICsgal07XG4gICAgICAgICAgICBlZGdlID0gZWRnZU5leHRbcHJldiAqIE4gKyBpXTtcbiAgICAgICAgICAgIHBhdGgubWVyZ2UoZWRnZSk7XG4gICAgICAgICAgICBwYXRoLm1lcmdlKGF0SW5kZXgoaSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IC8vIGZsb3lkV2Fyc2hhbGxcblxuICB9OyAvLyBlbGVzZm5cblxuICB2YXIgYmVsbG1hbkZvcmREZWZhdWx0cyA9IGRlZmF1bHRzJGcoe1xuICAgIHdlaWdodDogZnVuY3Rpb24gd2VpZ2h0KGVkZ2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0sXG4gICAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAgIHJvb3Q6IG51bGxcbiAgfSk7XG4gIHZhciBlbGVzZm4kcSA9IHtcbiAgICAvLyBJbXBsZW1lbnRlZCBmcm9tIHBzZXVkb2NvZGUgZnJvbSB3aWtpcGVkaWFcbiAgICBiZWxsbWFuRm9yZDogZnVuY3Rpb24gYmVsbG1hbkZvcmQob3B0aW9ucykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIF9iZWxsbWFuRm9yZERlZmF1bHRzID0gYmVsbG1hbkZvcmREZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgICB3ZWlnaHQgPSBfYmVsbG1hbkZvcmREZWZhdWx0cy53ZWlnaHQsXG4gICAgICAgICAgZGlyZWN0ZWQgPSBfYmVsbG1hbkZvcmREZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgICByb290ID0gX2JlbGxtYW5Gb3JkRGVmYXVsdHMucm9vdDtcblxuICAgICAgdmFyIHdlaWdodEZuID0gd2VpZ2h0O1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgICB2YXIgX3RoaXMkYnlHcm91cCA9IHRoaXMuYnlHcm91cCgpLFxuICAgICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcyxcbiAgICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXM7XG5cbiAgICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICAgIHZhciBpbmZvTWFwID0gbmV3IE1hcCQyKCk7XG4gICAgICB2YXIgaGFzTmVnYXRpdmVXZWlnaHRDeWNsZSA9IGZhbHNlO1xuICAgICAgdmFyIG5lZ2F0aXZlV2VpZ2h0Q3ljbGVzID0gW107XG4gICAgICByb290ID0gY3kuY29sbGVjdGlvbihyb290KVswXTsgLy8gaW4gY2FzZSBzZWxlY3RvciBwYXNzZWRcblxuICAgICAgZWRnZXMudW5tZXJnZUJ5KGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLmlzTG9vcCgpO1xuICAgICAgfSk7XG4gICAgICB2YXIgbnVtRWRnZXMgPSBlZGdlcy5sZW5ndGg7XG5cbiAgICAgIHZhciBnZXRJbmZvID0gZnVuY3Rpb24gZ2V0SW5mbyhub2RlKSB7XG4gICAgICAgIHZhciBvYmogPSBpbmZvTWFwLmdldChub2RlLmlkKCkpO1xuXG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgb2JqID0ge307XG4gICAgICAgICAgaW5mb01hcC5zZXQobm9kZS5pZCgpLCBvYmopO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH07XG5cbiAgICAgIHZhciBnZXROb2RlRnJvbVRvID0gZnVuY3Rpb24gZ2V0Tm9kZUZyb21Ubyh0bykge1xuICAgICAgICByZXR1cm4gKHN0cmluZyh0bykgPyBjeS4kKHRvKSA6IHRvKVswXTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBkaXN0YW5jZVRvID0gZnVuY3Rpb24gZGlzdGFuY2VUbyh0bykge1xuICAgICAgICByZXR1cm4gZ2V0SW5mbyhnZXROb2RlRnJvbVRvKHRvKSkuZGlzdDtcbiAgICAgIH07XG5cbiAgICAgIHZhciBwYXRoVG8gPSBmdW5jdGlvbiBwYXRoVG8odG8pIHtcbiAgICAgICAgdmFyIHRoaXNTdGFydCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogcm9vdDtcbiAgICAgICAgdmFyIGVuZCA9IGdldE5vZGVGcm9tVG8odG8pO1xuICAgICAgICB2YXIgcGF0aCA9IFtdO1xuICAgICAgICB2YXIgbm9kZSA9IGVuZDtcblxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNwYXduKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9nZXRJbmZvID0gZ2V0SW5mbyhub2RlKSxcbiAgICAgICAgICAgICAgZWRnZSA9IF9nZXRJbmZvLmVkZ2UsXG4gICAgICAgICAgICAgIHByZWQgPSBfZ2V0SW5mby5wcmVkO1xuXG4gICAgICAgICAgcGF0aC51bnNoaWZ0KG5vZGVbMF0pO1xuXG4gICAgICAgICAgaWYgKG5vZGUuc2FtZSh0aGlzU3RhcnQpICYmIHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGVkZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgcGF0aC51bnNoaWZ0KGVkZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUgPSBwcmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsZXMuc3Bhd24ocGF0aCk7XG4gICAgICB9OyAvLyBJbml0aWFsaXphdGlvbnMgeyBkaXN0LCBwcmVkLCBlZGdlIH1cblxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU5vZGVzOyBpKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgdmFyIGluZm8gPSBnZXRJbmZvKG5vZGUpO1xuXG4gICAgICAgIGlmIChub2RlLnNhbWUocm9vdCkpIHtcbiAgICAgICAgICBpbmZvLmRpc3QgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluZm8uZGlzdCA9IEluZmluaXR5O1xuICAgICAgICB9XG5cbiAgICAgICAgaW5mby5wcmVkID0gbnVsbDtcbiAgICAgICAgaW5mby5lZGdlID0gbnVsbDtcbiAgICAgIH0gLy8gRWRnZXMgcmVsYXhhdGlvblxuXG5cbiAgICAgIHZhciByZXBsYWNlZEVkZ2UgPSBmYWxzZTtcblxuICAgICAgdmFyIGNoZWNrRm9yRWRnZVJlcGxhY2VtZW50ID0gZnVuY3Rpb24gY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQobm9kZTEsIG5vZGUyLCBlZGdlLCBpbmZvMSwgaW5mbzIsIHdlaWdodCkge1xuICAgICAgICB2YXIgZGlzdCA9IGluZm8xLmRpc3QgKyB3ZWlnaHQ7XG5cbiAgICAgICAgaWYgKGRpc3QgPCBpbmZvMi5kaXN0ICYmICFlZGdlLnNhbWUoaW5mbzEuZWRnZSkpIHtcbiAgICAgICAgICBpbmZvMi5kaXN0ID0gZGlzdDtcbiAgICAgICAgICBpbmZvMi5wcmVkID0gbm9kZTE7XG4gICAgICAgICAgaW5mbzIuZWRnZSA9IGVkZ2U7XG4gICAgICAgICAgcmVwbGFjZWRFZGdlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IG51bU5vZGVzOyBfaSsrKSB7XG4gICAgICAgIHJlcGxhY2VkRWRnZSA9IGZhbHNlO1xuXG4gICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgbnVtRWRnZXM7IGUrKykge1xuICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNbZV07XG4gICAgICAgICAgdmFyIHNyYyA9IGVkZ2Uuc291cmNlKCk7XG4gICAgICAgICAgdmFyIHRndCA9IGVkZ2UudGFyZ2V0KCk7XG5cbiAgICAgICAgICB2YXIgX3dlaWdodCA9IHdlaWdodEZuKGVkZ2UpO1xuXG4gICAgICAgICAgdmFyIHNyY0luZm8gPSBnZXRJbmZvKHNyYyk7XG4gICAgICAgICAgdmFyIHRndEluZm8gPSBnZXRJbmZvKHRndCk7XG4gICAgICAgICAgY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQoc3JjLCB0Z3QsIGVkZ2UsIHNyY0luZm8sIHRndEluZm8sIF93ZWlnaHQpOyAvLyBJZiB1bmRpcmVjdGVkIGdyYXBoLCB3ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSAncmV2ZXJzZScgZWRnZVxuXG4gICAgICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICAgICAgY2hlY2tGb3JFZGdlUmVwbGFjZW1lbnQodGd0LCBzcmMsIGVkZ2UsIHRndEluZm8sIHNyY0luZm8sIF93ZWlnaHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVwbGFjZWRFZGdlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlcGxhY2VkRWRnZSkge1xuICAgICAgICAvLyBDaGVjayBmb3IgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlc1xuICAgICAgICB2YXIgbmVnYXRpdmVXZWlnaHRDeWNsZUlkcyA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIF9lID0gMDsgX2UgPCBudW1FZGdlczsgX2UrKykge1xuICAgICAgICAgIHZhciBfZWRnZSA9IGVkZ2VzW19lXTtcblxuICAgICAgICAgIHZhciBfc3JjID0gX2VkZ2Uuc291cmNlKCk7XG5cbiAgICAgICAgICB2YXIgX3RndCA9IF9lZGdlLnRhcmdldCgpO1xuXG4gICAgICAgICAgdmFyIF93ZWlnaHQyID0gd2VpZ2h0Rm4oX2VkZ2UpO1xuXG4gICAgICAgICAgdmFyIHNyY0Rpc3QgPSBnZXRJbmZvKF9zcmMpLmRpc3Q7XG4gICAgICAgICAgdmFyIHRndERpc3QgPSBnZXRJbmZvKF90Z3QpLmRpc3Q7XG5cbiAgICAgICAgICBpZiAoc3JjRGlzdCArIF93ZWlnaHQyIDwgdGd0RGlzdCB8fCAhZGlyZWN0ZWQgJiYgdGd0RGlzdCArIF93ZWlnaHQyIDwgc3JjRGlzdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlKSB7XG4gICAgICAgICAgICAgIHdhcm4oJ0dyYXBoIGNvbnRhaW5zIGEgbmVnYXRpdmUgd2VpZ2h0IGN5Y2xlIGZvciBCZWxsbWFuLUZvcmQnKTtcbiAgICAgICAgICAgICAgaGFzTmVnYXRpdmVXZWlnaHRDeWNsZSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbmROZWdhdGl2ZVdlaWdodEN5Y2xlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgdmFyIG5lZ2F0aXZlTm9kZXMgPSBbXTtcblxuICAgICAgICAgICAgICBpZiAoc3JjRGlzdCArIF93ZWlnaHQyIDwgdGd0RGlzdCkge1xuICAgICAgICAgICAgICAgIG5lZ2F0aXZlTm9kZXMucHVzaChfc3JjKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghZGlyZWN0ZWQgJiYgdGd0RGlzdCArIF93ZWlnaHQyIDwgc3JjRGlzdCkge1xuICAgICAgICAgICAgICAgIG5lZ2F0aXZlTm9kZXMucHVzaChfdGd0KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHZhciBudW1OZWdhdGl2ZU5vZGVzID0gbmVnYXRpdmVOb2Rlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBudW1OZWdhdGl2ZU5vZGVzOyBuKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBuZWdhdGl2ZU5vZGVzW25dO1xuICAgICAgICAgICAgICAgIHZhciBjeWNsZSA9IFtzdGFydF07XG4gICAgICAgICAgICAgICAgY3ljbGUucHVzaChnZXRJbmZvKHN0YXJ0KS5lZGdlKTtcbiAgICAgICAgICAgICAgICB2YXIgX25vZGUgPSBnZXRJbmZvKHN0YXJ0KS5wcmVkO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKGN5Y2xlLmluZGV4T2YoX25vZGUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgY3ljbGUucHVzaChfbm9kZSk7XG4gICAgICAgICAgICAgICAgICBjeWNsZS5wdXNoKGdldEluZm8oX25vZGUpLmVkZ2UpO1xuICAgICAgICAgICAgICAgICAgX25vZGUgPSBnZXRJbmZvKF9ub2RlKS5wcmVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN5Y2xlID0gY3ljbGUuc2xpY2UoY3ljbGUuaW5kZXhPZihfbm9kZSkpO1xuICAgICAgICAgICAgICAgIHZhciBzbWFsbGVzdElkID0gY3ljbGVbMF0uaWQoKTtcbiAgICAgICAgICAgICAgICB2YXIgc21hbGxlc3RJbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBjID0gMjsgYyA8IGN5Y2xlLmxlbmd0aDsgYyArPSAyKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoY3ljbGVbY10uaWQoKSA8IHNtYWxsZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc21hbGxlc3RJZCA9IGN5Y2xlW2NdLmlkKCk7XG4gICAgICAgICAgICAgICAgICAgIHNtYWxsZXN0SW5kZXggPSBjO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN5Y2xlID0gY3ljbGUuc2xpY2Uoc21hbGxlc3RJbmRleCkuY29uY2F0KGN5Y2xlLnNsaWNlKDAsIHNtYWxsZXN0SW5kZXgpKTtcbiAgICAgICAgICAgICAgICBjeWNsZS5wdXNoKGN5Y2xlWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgY3ljbGVJZCA9IGN5Y2xlLm1hcChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbC5pZCgpO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oXCIsXCIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlV2VpZ2h0Q3ljbGVJZHMuaW5kZXhPZihjeWNsZUlkKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlV2VpZ2h0Q3ljbGVzLnB1c2goZWxlcy5zcGF3bihjeWNsZSkpO1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmVXZWlnaHRDeWNsZUlkcy5wdXNoKGN5Y2xlSWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpc3RhbmNlVG86IGRpc3RhbmNlVG8sXG4gICAgICAgIHBhdGhUbzogcGF0aFRvLFxuICAgICAgICBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlOiBoYXNOZWdhdGl2ZVdlaWdodEN5Y2xlLFxuICAgICAgICBuZWdhdGl2ZVdlaWdodEN5Y2xlczogbmVnYXRpdmVXZWlnaHRDeWNsZXNcbiAgICAgIH07XG4gICAgfSAvLyBiZWxsbWFuRm9yZFxuXG4gIH07IC8vIGVsZXNmblxuXG4gIHZhciBzcXJ0MiA9IE1hdGguc3FydCgyKTsgLy8gRnVuY3Rpb24gd2hpY2ggY29sYXBzZXMgMiAobWV0YSkgbm9kZXMgaW50byBvbmVcbiAgLy8gVXBkYXRlcyB0aGUgcmVtYWluaW5nIGVkZ2UgbGlzdHNcbiAgLy8gUmVjZWl2ZXMgYXMgYSBwYXJhbWF0ZXIgdGhlIGVkZ2Ugd2hpY2ggY2F1c2VzIHRoZSBjb2xsYXBzZVxuXG4gIHZhciBjb2xsYXBzZSA9IGZ1bmN0aW9uIGNvbGxhcHNlKGVkZ2VJbmRleCwgbm9kZU1hcCwgcmVtYWluaW5nRWRnZXMpIHtcbiAgICBpZiAocmVtYWluaW5nRWRnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBlcnJvcihcIkthcmdlci1TdGVpbiBtdXN0IGJlIHJ1biBvbiBhIGNvbm5lY3RlZCAoc3ViKWdyYXBoXCIpO1xuICAgIH1cblxuICAgIHZhciBlZGdlSW5mbyA9IHJlbWFpbmluZ0VkZ2VzW2VkZ2VJbmRleF07XG4gICAgdmFyIHNvdXJjZUluID0gZWRnZUluZm9bMV07XG4gICAgdmFyIHRhcmdldEluID0gZWRnZUluZm9bMl07XG4gICAgdmFyIHBhcnRpdGlvbjEgPSBub2RlTWFwW3NvdXJjZUluXTtcbiAgICB2YXIgcGFydGl0aW9uMiA9IG5vZGVNYXBbdGFyZ2V0SW5dO1xuICAgIHZhciBuZXdFZGdlcyA9IHJlbWFpbmluZ0VkZ2VzOyAvLyByZS11c2UgYXJyYXlcbiAgICAvLyBEZWxldGUgYWxsIGVkZ2VzIGJldHdlZW4gcGFydGl0aW9uMSBhbmQgcGFydGl0aW9uMlxuXG4gICAgZm9yICh2YXIgaSA9IG5ld0VkZ2VzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZWRnZSA9IG5ld0VkZ2VzW2ldO1xuICAgICAgdmFyIHNyYyA9IGVkZ2VbMV07XG4gICAgICB2YXIgdGd0ID0gZWRnZVsyXTtcblxuICAgICAgaWYgKG5vZGVNYXBbc3JjXSA9PT0gcGFydGl0aW9uMSAmJiBub2RlTWFwW3RndF0gPT09IHBhcnRpdGlvbjIgfHwgbm9kZU1hcFtzcmNdID09PSBwYXJ0aXRpb24yICYmIG5vZGVNYXBbdGd0XSA9PT0gcGFydGl0aW9uMSkge1xuICAgICAgICBuZXdFZGdlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfSAvLyBBbGwgZWRnZXMgcG9pbnRpbmcgdG8gcGFydGl0aW9uMiBzaG91bGQgbm93IHBvaW50IHRvIHBhcnRpdGlvbjFcblxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5ld0VkZ2VzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9lZGdlID0gbmV3RWRnZXNbX2ldO1xuXG4gICAgICBpZiAoX2VkZ2VbMV0gPT09IHBhcnRpdGlvbjIpIHtcbiAgICAgICAgLy8gQ2hlY2sgc291cmNlXG4gICAgICAgIG5ld0VkZ2VzW19pXSA9IF9lZGdlLnNsaWNlKCk7IC8vIGNvcHlcblxuICAgICAgICBuZXdFZGdlc1tfaV1bMV0gPSBwYXJ0aXRpb24xO1xuICAgICAgfSBlbHNlIGlmIChfZWRnZVsyXSA9PT0gcGFydGl0aW9uMikge1xuICAgICAgICAvLyBDaGVjayB0YXJnZXRcbiAgICAgICAgbmV3RWRnZXNbX2ldID0gX2VkZ2Uuc2xpY2UoKTsgLy8gY29weVxuXG4gICAgICAgIG5ld0VkZ2VzW19pXVsyXSA9IHBhcnRpdGlvbjE7XG4gICAgICB9XG4gICAgfSAvLyBNb3ZlIGFsbCBub2RlcyBmcm9tIHBhcnRpdGlvbjIgdG8gcGFydGl0aW9uMVxuXG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2RlTWFwLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIGlmIChub2RlTWFwW19pMl0gPT09IHBhcnRpdGlvbjIpIHtcbiAgICAgICAgbm9kZU1hcFtfaTJdID0gcGFydGl0aW9uMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3RWRnZXM7XG4gIH07IC8vIENvbnRyYWN0cyBhIGdyYXBoIHVudGlsIHdlIHJlYWNoIGEgY2VydGFpbiBudW1iZXIgb2YgbWV0YSBub2Rlc1xuXG5cbiAgdmFyIGNvbnRyYWN0VW50aWwgPSBmdW5jdGlvbiBjb250cmFjdFVudGlsKG1ldGFOb2RlTWFwLCByZW1haW5pbmdFZGdlcywgc2l6ZSwgc2l6ZUxpbWl0KSB7XG4gICAgd2hpbGUgKHNpemUgPiBzaXplTGltaXQpIHtcbiAgICAgIC8vIENob29zZSBhbiBlZGdlIHJhbmRvbWx5XG4gICAgICB2YXIgZWRnZUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmVtYWluaW5nRWRnZXMubGVuZ3RoKTsgLy8gQ29sbGFwc2UgZ3JhcGggYmFzZWQgb24gZWRnZVxuXG4gICAgICByZW1haW5pbmdFZGdlcyA9IGNvbGxhcHNlKGVkZ2VJbmRleCwgbWV0YU5vZGVNYXAsIHJlbWFpbmluZ0VkZ2VzKTtcbiAgICAgIHNpemUtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVtYWluaW5nRWRnZXM7XG4gIH07XG5cbiAgdmFyIGVsZXNmbiRwID0ge1xuICAgIC8vIENvbXB1dGVzIHRoZSBtaW5pbXVtIGN1dCBvZiBhbiB1bmRpcmVjdGVkIGdyYXBoXG4gICAgLy8gUmV0dXJucyB0aGUgY29ycmVjdCBhbnN3ZXIgd2l0aCBoaWdoIHByb2JhYmlsaXR5XG4gICAga2FyZ2VyU3RlaW46IGZ1bmN0aW9uIGthcmdlclN0ZWluKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJGJ5R3JvdXAgPSB0aGlzLmJ5R3JvdXAoKSxcbiAgICAgICAgICBub2RlcyA9IF90aGlzJGJ5R3JvdXAubm9kZXMsXG4gICAgICAgICAgZWRnZXMgPSBfdGhpcyRieUdyb3VwLmVkZ2VzO1xuXG4gICAgICBlZGdlcy51bm1lcmdlQnkoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UuaXNMb29wKCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcbiAgICAgIHZhciBudW1FZGdlcyA9IGVkZ2VzLmxlbmd0aDtcbiAgICAgIHZhciBudW1JdGVyID0gTWF0aC5jZWlsKE1hdGgucG93KE1hdGgubG9nKG51bU5vZGVzKSAvIE1hdGguTE4yLCAyKSk7XG4gICAgICB2YXIgc3RvcFNpemUgPSBNYXRoLmZsb29yKG51bU5vZGVzIC8gc3FydDIpO1xuXG4gICAgICBpZiAobnVtTm9kZXMgPCAyKSB7XG4gICAgICAgIGVycm9yKCdBdCBsZWFzdCAyIG5vZGVzIGFyZSByZXF1aXJlZCBmb3IgS2FyZ2VyLVN0ZWluIGFsZ29yaXRobScpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSAvLyBOb3cgc3RvcmUgZWRnZSBkZXN0aW5hdGlvbiBhcyBpbmRleGVzXG4gICAgICAvLyBGb3JtYXQgZm9yIGVhY2ggZWRnZSAoZWRnZSBpbmRleCwgc291cmNlIG5vZGUgaW5kZXgsIHRhcmdldCBub2RlIGluZGV4KVxuXG5cbiAgICAgIHZhciBlZGdlSW5kZXhlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUVkZ2VzOyBpKyspIHtcbiAgICAgICAgdmFyIGUgPSBlZGdlc1tpXTtcbiAgICAgICAgZWRnZUluZGV4ZXMucHVzaChbaSwgbm9kZXMuaW5kZXhPZihlLnNvdXJjZSgpKSwgbm9kZXMuaW5kZXhPZihlLnRhcmdldCgpKV0pO1xuICAgICAgfSAvLyBXZSB3aWxsIHN0b3JlIHRoZSBiZXN0IGN1dCBmb3VuZCBoZXJlXG5cblxuICAgICAgdmFyIG1pbkN1dFNpemUgPSBJbmZpbml0eTtcbiAgICAgIHZhciBtaW5DdXRFZGdlSW5kZXhlcyA9IFtdO1xuICAgICAgdmFyIG1pbkN1dE5vZGVNYXAgPSBuZXcgQXJyYXkobnVtTm9kZXMpOyAvLyBJbml0aWFsIG1ldGEgbm9kZSBwYXJ0aXRpb25cblxuICAgICAgdmFyIG1ldGFOb2RlTWFwID0gbmV3IEFycmF5KG51bU5vZGVzKTtcbiAgICAgIHZhciBtZXRhTm9kZU1hcDIgPSBuZXcgQXJyYXkobnVtTm9kZXMpO1xuXG4gICAgICB2YXIgY29weU5vZGVzTWFwID0gZnVuY3Rpb24gY29weU5vZGVzTWFwKGZyb20sIHRvKSB7XG4gICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IG51bU5vZGVzOyBfaTMrKykge1xuICAgICAgICAgIHRvW19pM10gPSBmcm9tW19pM107XG4gICAgICAgIH1cbiAgICAgIH07IC8vIE1haW4gbG9vcFxuXG5cbiAgICAgIGZvciAodmFyIGl0ZXIgPSAwOyBpdGVyIDw9IG51bUl0ZXI7IGl0ZXIrKykge1xuICAgICAgICAvLyBSZXNldCBtZXRhIG5vZGUgcGFydGl0aW9uXG4gICAgICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG51bU5vZGVzOyBfaTQrKykge1xuICAgICAgICAgIG1ldGFOb2RlTWFwW19pNF0gPSBfaTQ7XG4gICAgICAgIH0gLy8gQ29udHJhY3QgdW50aWwgc3RvcCBwb2ludCAoc3RvcFNpemUgbm9kZXMpXG5cblxuICAgICAgICB2YXIgZWRnZXNTdGF0ZSA9IGNvbnRyYWN0VW50aWwobWV0YU5vZGVNYXAsIGVkZ2VJbmRleGVzLnNsaWNlKCksIG51bU5vZGVzLCBzdG9wU2l6ZSk7XG4gICAgICAgIHZhciBlZGdlc1N0YXRlMiA9IGVkZ2VzU3RhdGUuc2xpY2UoKTsgLy8gY29weVxuICAgICAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBjb2xhcHNlZCBub2RlcyBzdGF0ZVxuXG4gICAgICAgIGNvcHlOb2Rlc01hcChtZXRhTm9kZU1hcCwgbWV0YU5vZGVNYXAyKTsgLy8gUnVuIDIgaXRlcmF0aW9ucyBzdGFydGluZyBpbiB0aGUgc3RvcCBzdGF0ZVxuXG4gICAgICAgIHZhciByZXMxID0gY29udHJhY3RVbnRpbChtZXRhTm9kZU1hcCwgZWRnZXNTdGF0ZSwgc3RvcFNpemUsIDIpO1xuICAgICAgICB2YXIgcmVzMiA9IGNvbnRyYWN0VW50aWwobWV0YU5vZGVNYXAyLCBlZGdlc1N0YXRlMiwgc3RvcFNpemUsIDIpOyAvLyBJcyBhbnkgb2YgdGhlIDIgcmVzdWx0cyB0aGUgYmVzdCBjdXQgc28gZmFyP1xuXG4gICAgICAgIGlmIChyZXMxLmxlbmd0aCA8PSByZXMyLmxlbmd0aCAmJiByZXMxLmxlbmd0aCA8IG1pbkN1dFNpemUpIHtcbiAgICAgICAgICBtaW5DdXRTaXplID0gcmVzMS5sZW5ndGg7XG4gICAgICAgICAgbWluQ3V0RWRnZUluZGV4ZXMgPSByZXMxO1xuICAgICAgICAgIGNvcHlOb2Rlc01hcChtZXRhTm9kZU1hcCwgbWluQ3V0Tm9kZU1hcCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzMi5sZW5ndGggPD0gcmVzMS5sZW5ndGggJiYgcmVzMi5sZW5ndGggPCBtaW5DdXRTaXplKSB7XG4gICAgICAgICAgbWluQ3V0U2l6ZSA9IHJlczIubGVuZ3RoO1xuICAgICAgICAgIG1pbkN1dEVkZ2VJbmRleGVzID0gcmVzMjtcbiAgICAgICAgICBjb3B5Tm9kZXNNYXAobWV0YU5vZGVNYXAyLCBtaW5DdXROb2RlTWFwKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBlbmQgb2YgbWFpbiBsb29wXG4gICAgICAvLyBDb25zdHJ1Y3QgcmVzdWx0XG5cblxuICAgICAgdmFyIGN1dCA9IHRoaXMuc3Bhd24obWluQ3V0RWRnZUluZGV4ZXMubWFwKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBlZGdlc1tlWzBdXTtcbiAgICAgIH0pKTtcbiAgICAgIHZhciBwYXJ0aXRpb24xID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIHBhcnRpdGlvbjIgPSB0aGlzLnNwYXduKCk7IC8vIHRyYXZlcnNlIG1ldGFOb2RlTWFwIGZvciBiZXN0IGN1dFxuXG4gICAgICB2YXIgd2l0bmVzc05vZGVQYXJ0aXRpb24gPSBtaW5DdXROb2RlTWFwWzBdO1xuXG4gICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBtaW5DdXROb2RlTWFwLmxlbmd0aDsgX2k1KyspIHtcbiAgICAgICAgdmFyIHBhcnRpdGlvbklkID0gbWluQ3V0Tm9kZU1hcFtfaTVdO1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW19pNV07XG5cbiAgICAgICAgaWYgKHBhcnRpdGlvbklkID09PSB3aXRuZXNzTm9kZVBhcnRpdGlvbikge1xuICAgICAgICAgIHBhcnRpdGlvbjEubWVyZ2Uobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFydGl0aW9uMi5tZXJnZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBjb25zdHJ1Y3QgY29tcG9uZW50cyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZGlzam9pbnQgc3Vic2V0IG9mIG5vZGVzXG5cblxuICAgICAgdmFyIGNvbnN0cnVjdENvbXBvbmVudCA9IGZ1bmN0aW9uIGNvbnN0cnVjdENvbXBvbmVudChzdWJzZXQpIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudCA9IF90aGlzLnNwYXduKCk7XG5cbiAgICAgICAgc3Vic2V0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG4gICAgICAgICAgbm9kZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgIC8vIGVuc3VyZSBlZGdlIGlzIHdpdGhpbiBjYWxsaW5nIGNvbGxlY3Rpb24gYW5kIGVkZ2UgaXMgbm90IGluIGN1dFxuICAgICAgICAgICAgaWYgKF90aGlzLmNvbnRhaW5zKGVkZ2UpICYmICFjdXQuY29udGFpbnMoZWRnZSkpIHtcbiAgICAgICAgICAgICAgY29tcG9uZW50Lm1lcmdlKGVkZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgIH07XG5cbiAgICAgIHZhciBjb21wb25lbnRzID0gW2NvbnN0cnVjdENvbXBvbmVudChwYXJ0aXRpb24xKSwgY29uc3RydWN0Q29tcG9uZW50KHBhcnRpdGlvbjIpXTtcbiAgICAgIHZhciByZXQgPSB7XG4gICAgICAgIGN1dDogY3V0LFxuICAgICAgICBjb21wb25lbnRzOiBjb21wb25lbnRzLFxuICAgICAgICAvLyBuLmIuIHBhcnRpdGlvbnMgYXJlIGluY2x1ZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGFwaSBzcGVjXG4gICAgICAgIC8vIChjb3VsZCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHZlcnNpb24pXG4gICAgICAgIHBhcnRpdGlvbjE6IHBhcnRpdGlvbjEsXG4gICAgICAgIHBhcnRpdGlvbjI6IHBhcnRpdGlvbjJcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfTsgLy8gZWxlc2ZuXG5cbiAgdmFyIGNvcHlQb3NpdGlvbiA9IGZ1bmN0aW9uIGNvcHlQb3NpdGlvbihwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHAueCxcbiAgICAgIHk6IHAueVxuICAgIH07XG4gIH07XG4gIHZhciBtb2RlbFRvUmVuZGVyZWRQb3NpdGlvbiA9IGZ1bmN0aW9uIG1vZGVsVG9SZW5kZXJlZFBvc2l0aW9uKHAsIHpvb20sIHBhbikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBwLnggKiB6b29tICsgcGFuLngsXG4gICAgICB5OiBwLnkgKiB6b29tICsgcGFuLnlcbiAgICB9O1xuICB9O1xuICB2YXIgcmVuZGVyZWRUb01vZGVsUG9zaXRpb24gPSBmdW5jdGlvbiByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihwLCB6b29tLCBwYW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogKHAueCAtIHBhbi54KSAvIHpvb20sXG4gICAgICB5OiAocC55IC0gcGFuLnkpIC8gem9vbVxuICAgIH07XG4gIH07XG4gIHZhciBhcnJheTJwb2ludCA9IGZ1bmN0aW9uIGFycmF5MnBvaW50KGFycikge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBhcnJbMF0sXG4gICAgICB5OiBhcnJbMV1cbiAgICB9O1xuICB9O1xuICB2YXIgbWluID0gZnVuY3Rpb24gbWluKGFycikge1xuICAgIHZhciBiZWdpbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgICB2YXIgZW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBhcnIubGVuZ3RoO1xuICAgIHZhciBtaW4gPSBJbmZpbml0eTtcblxuICAgIGZvciAodmFyIGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICB2YXIgdmFsID0gYXJyW2ldO1xuXG4gICAgICBpZiAoaXNGaW5pdGUodmFsKSkge1xuICAgICAgICBtaW4gPSBNYXRoLm1pbih2YWwsIG1pbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pbjtcbiAgfTtcbiAgdmFyIG1heCA9IGZ1bmN0aW9uIG1heChhcnIpIHtcbiAgICB2YXIgYmVnaW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gICAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgICB2YXIgbWF4ID0gLUluZmluaXR5O1xuXG4gICAgZm9yICh2YXIgaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHZhciB2YWwgPSBhcnJbaV07XG5cbiAgICAgIGlmIChpc0Zpbml0ZSh2YWwpKSB7XG4gICAgICAgIG1heCA9IE1hdGgubWF4KHZhbCwgbWF4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF4O1xuICB9O1xuICB2YXIgbWVhbiA9IGZ1bmN0aW9uIG1lYW4oYXJyKSB7XG4gICAgdmFyIGJlZ2luID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICAgIHZhciBlbmQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGFyci5sZW5ndGg7XG4gICAgdmFyIHRvdGFsID0gMDtcbiAgICB2YXIgbiA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdmFyIHZhbCA9IGFycltpXTtcblxuICAgICAgaWYgKGlzRmluaXRlKHZhbCkpIHtcbiAgICAgICAgdG90YWwgKz0gdmFsO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsIC8gbjtcbiAgfTtcbiAgdmFyIG1lZGlhbiA9IGZ1bmN0aW9uIG1lZGlhbihhcnIpIHtcbiAgICB2YXIgYmVnaW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gICAgdmFyIGVuZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogYXJyLmxlbmd0aDtcbiAgICB2YXIgY29weSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogdHJ1ZTtcbiAgICB2YXIgc29ydCA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgICB2YXIgaW5jbHVkZUhvbGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB0cnVlO1xuXG4gICAgaWYgKGNvcHkpIHtcbiAgICAgIGFyciA9IGFyci5zbGljZShiZWdpbiwgZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGVuZCA8IGFyci5sZW5ndGgpIHtcbiAgICAgICAgYXJyLnNwbGljZShlbmQsIGFyci5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYmVnaW4gPiAwKSB7XG4gICAgICAgIGFyci5zcGxpY2UoMCwgYmVnaW4pO1xuICAgICAgfVxuICAgIH0gLy8gYWxsIG5vbiBmaW5pdGUgKGUuZy4gSW5maW5pdHksIE5hTikgZWxlbWVudHMgbXVzdCBiZSAtSW5maW5pdHkgc28gdGhleSBnbyB0byB0aGUgc3RhcnRcblxuXG4gICAgdmFyIG9mZiA9IDA7IC8vIG9mZnNldCBmcm9tIG5vbi1maW5pdGUgdmFsdWVzXG5cbiAgICBmb3IgKHZhciBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdiA9IGFycltpXTtcblxuICAgICAgaWYgKGluY2x1ZGVIb2xlcykge1xuICAgICAgICBpZiAoIWlzRmluaXRlKHYpKSB7XG4gICAgICAgICAgYXJyW2ldID0gLUluZmluaXR5O1xuICAgICAgICAgIG9mZisrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBqdXN0IHJlbW92ZSBpdCBpZiB3ZSBkb24ndCB3YW50IHRvIGNvbnNpZGVyIGhvbGVzXG4gICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNvcnQpIHtcbiAgICAgIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgIH0pOyAvLyByZXF1aXJlcyBjb3B5ID0gdHJ1ZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBjaGFuZ2UgdGhlIG9yaWdcbiAgICB9XG5cbiAgICB2YXIgbGVuID0gYXJyLmxlbmd0aDtcbiAgICB2YXIgbWlkID0gTWF0aC5mbG9vcihsZW4gLyAyKTtcblxuICAgIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgICByZXR1cm4gYXJyW21pZCArIDEgKyBvZmZdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGFyclttaWQgLSAxICsgb2ZmXSArIGFyclttaWQgKyBvZmZdKSAvIDI7XG4gICAgfVxuICB9O1xuICB2YXIgZGVnMnJhZCA9IGZ1bmN0aW9uIGRlZzJyYWQoZGVnKSB7XG4gICAgcmV0dXJuIE1hdGguUEkgKiBkZWcgLyAxODA7XG4gIH07XG4gIHZhciBnZXRBbmdsZUZyb21EaXNwID0gZnVuY3Rpb24gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuMihkaXNwWSwgZGlzcFgpIC0gTWF0aC5QSSAvIDI7XG4gIH07XG4gIHZhciBsb2cyID0gTWF0aC5sb2cyIHx8IGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKG4pIC8gTWF0aC5sb2coMik7XG4gIH07XG4gIHZhciBzaWdudW0gPSBmdW5jdGlvbiBzaWdudW0oeCkge1xuICAgIGlmICh4ID4gMCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmICh4IDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH07XG4gIHZhciBkaXN0ID0gZnVuY3Rpb24gZGlzdChwMSwgcDIpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxZGlzdChwMSwgcDIpKTtcbiAgfTtcbiAgdmFyIHNxZGlzdCA9IGZ1bmN0aW9uIHNxZGlzdChwMSwgcDIpIHtcbiAgICB2YXIgZHggPSBwMi54IC0gcDEueDtcbiAgICB2YXIgZHkgPSBwMi55IC0gcDEueTtcbiAgICByZXR1cm4gZHggKiBkeCArIGR5ICogZHk7XG4gIH07XG4gIHZhciBpblBsYWNlU3VtTm9ybWFsaXplID0gZnVuY3Rpb24gaW5QbGFjZVN1bU5vcm1hbGl6ZSh2KSB7XG4gICAgdmFyIGxlbmd0aCA9IHYubGVuZ3RoOyAvLyBGaXJzdCwgZ2V0IHN1bSBvZiBhbGwgZWxlbWVudHNcblxuICAgIHZhciB0b3RhbCA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0b3RhbCArPSB2W2ldO1xuICAgIH0gLy8gTm93LCBkaXZpZGUgZWFjaCBieSB0aGUgc3VtIG9mIGFsbCBlbGVtZW50c1xuXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2W19pXSA9IHZbX2ldIC8gdG90YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHY7XG4gIH07XG5cbiAgdmFyIHFiZXppZXJBdCA9IGZ1bmN0aW9uIHFiZXppZXJBdChwMCwgcDEsIHAyLCB0KSB7XG4gICAgcmV0dXJuICgxIC0gdCkgKiAoMSAtIHQpICogcDAgKyAyICogKDEgLSB0KSAqIHQgKiBwMSArIHQgKiB0ICogcDI7XG4gIH07XG4gIHZhciBxYmV6aWVyUHRBdCA9IGZ1bmN0aW9uIHFiZXppZXJQdEF0KHAwLCBwMSwgcDIsIHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogcWJlemllckF0KHAwLngsIHAxLngsIHAyLngsIHQpLFxuICAgICAgeTogcWJlemllckF0KHAwLnksIHAxLnksIHAyLnksIHQpXG4gICAgfTtcbiAgfTtcbiAgdmFyIGxpbmVBdCA9IGZ1bmN0aW9uIGxpbmVBdChwMCwgcDEsIHQsIGQpIHtcbiAgICB2YXIgdmVjID0ge1xuICAgICAgeDogcDEueCAtIHAwLngsXG4gICAgICB5OiBwMS55IC0gcDAueVxuICAgIH07XG4gICAgdmFyIHZlY0Rpc3QgPSBkaXN0KHAwLCBwMSk7XG4gICAgdmFyIG5vcm1WZWMgPSB7XG4gICAgICB4OiB2ZWMueCAvIHZlY0Rpc3QsXG4gICAgICB5OiB2ZWMueSAvIHZlY0Rpc3RcbiAgICB9O1xuICAgIHQgPSB0ID09IG51bGwgPyAwIDogdDtcbiAgICBkID0gZCAhPSBudWxsID8gZCA6IHQgKiB2ZWNEaXN0O1xuICAgIHJldHVybiB7XG4gICAgICB4OiBwMC54ICsgbm9ybVZlYy54ICogZCxcbiAgICAgIHk6IHAwLnkgKyBub3JtVmVjLnkgKiBkXG4gICAgfTtcbiAgfTtcbiAgdmFyIGJvdW5kID0gZnVuY3Rpb24gYm91bmQobWluLCB2YWwsIG1heCkge1xuICAgIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgdmFsKSk7XG4gIH07IC8vIG1ha2VzIGEgZnVsbCBiYiAoeDEsIHkxLCB4MiwgeTIsIHcsIGgpIGZyb20gaW1wbGljaXQgcGFyYW1zXG5cbiAgdmFyIG1ha2VCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIG1ha2VCb3VuZGluZ0JveChiYikge1xuICAgIGlmIChiYiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4MTogSW5maW5pdHksXG4gICAgICAgIHkxOiBJbmZpbml0eSxcbiAgICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgICAgeTI6IC1JbmZpbml0eSxcbiAgICAgICAgdzogMCxcbiAgICAgICAgaDogMFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGJiLngxICE9IG51bGwgJiYgYmIueTEgIT0gbnVsbCkge1xuICAgICAgaWYgKGJiLngyICE9IG51bGwgJiYgYmIueTIgIT0gbnVsbCAmJiBiYi54MiA+PSBiYi54MSAmJiBiYi55MiA+PSBiYi55MSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHgxOiBiYi54MSxcbiAgICAgICAgICB5MTogYmIueTEsXG4gICAgICAgICAgeDI6IGJiLngyLFxuICAgICAgICAgIHkyOiBiYi55MixcbiAgICAgICAgICB3OiBiYi54MiAtIGJiLngxLFxuICAgICAgICAgIGg6IGJiLnkyIC0gYmIueTFcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoYmIudyAhPSBudWxsICYmIGJiLmggIT0gbnVsbCAmJiBiYi53ID49IDAgJiYgYmIuaCA+PSAwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDE6IGJiLngxLFxuICAgICAgICAgIHkxOiBiYi55MSxcbiAgICAgICAgICB4MjogYmIueDEgKyBiYi53LFxuICAgICAgICAgIHkyOiBiYi55MSArIGJiLmgsXG4gICAgICAgICAgdzogYmIudyxcbiAgICAgICAgICBoOiBiYi5oXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB2YXIgY29weUJvdW5kaW5nQm94ID0gZnVuY3Rpb24gY29weUJvdW5kaW5nQm94KGJiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHgxOiBiYi54MSxcbiAgICAgIHgyOiBiYi54MixcbiAgICAgIHc6IGJiLncsXG4gICAgICB5MTogYmIueTEsXG4gICAgICB5MjogYmIueTIsXG4gICAgICBoOiBiYi5oXG4gICAgfTtcbiAgfTtcbiAgdmFyIGNsZWFyQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBjbGVhckJvdW5kaW5nQm94KGJiKSB7XG4gICAgYmIueDEgPSBJbmZpbml0eTtcbiAgICBiYi55MSA9IEluZmluaXR5O1xuICAgIGJiLngyID0gLUluZmluaXR5O1xuICAgIGJiLnkyID0gLUluZmluaXR5O1xuICAgIGJiLncgPSAwO1xuICAgIGJiLmggPSAwO1xuICB9O1xuICB2YXIgdXBkYXRlQm91bmRpbmdCb3ggPSBmdW5jdGlvbiB1cGRhdGVCb3VuZGluZ0JveChiYjEsIGJiMikge1xuICAgIC8vIHVwZGF0ZSBiYjEgd2l0aCBiYjIgYm91bmRzXG4gICAgYmIxLngxID0gTWF0aC5taW4oYmIxLngxLCBiYjIueDEpO1xuICAgIGJiMS54MiA9IE1hdGgubWF4KGJiMS54MiwgYmIyLngyKTtcbiAgICBiYjEudyA9IGJiMS54MiAtIGJiMS54MTtcbiAgICBiYjEueTEgPSBNYXRoLm1pbihiYjEueTEsIGJiMi55MSk7XG4gICAgYmIxLnkyID0gTWF0aC5tYXgoYmIxLnkyLCBiYjIueTIpO1xuICAgIGJiMS5oID0gYmIxLnkyIC0gYmIxLnkxO1xuICB9O1xuICB2YXIgZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50ID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hCeVBvaW50KGJiLCB4LCB5KSB7XG4gICAgYmIueDEgPSBNYXRoLm1pbihiYi54MSwgeCk7XG4gICAgYmIueDIgPSBNYXRoLm1heChiYi54MiwgeCk7XG4gICAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gICAgYmIueTEgPSBNYXRoLm1pbihiYi55MSwgeSk7XG4gICAgYmIueTIgPSBNYXRoLm1heChiYi55MiwgeSk7XG4gICAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gIH07XG4gIHZhciBleHBhbmRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGV4cGFuZEJvdW5kaW5nQm94KGJiKSB7XG4gICAgdmFyIHBhZGRpbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gICAgYmIueDEgLT0gcGFkZGluZztcbiAgICBiYi54MiArPSBwYWRkaW5nO1xuICAgIGJiLnkxIC09IHBhZGRpbmc7XG4gICAgYmIueTIgKz0gcGFkZGluZztcbiAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICByZXR1cm4gYmI7XG4gIH07XG4gIHZhciBleHBhbmRCb3VuZGluZ0JveFNpZGVzID0gZnVuY3Rpb24gZXhwYW5kQm91bmRpbmdCb3hTaWRlcyhiYikge1xuICAgIHZhciBwYWRkaW5nID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbMF07XG4gICAgdmFyIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdDtcblxuICAgIGlmIChwYWRkaW5nLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gcGFkZGluZ1swXTtcbiAgICB9IGVsc2UgaWYgKHBhZGRpbmcubGVuZ3RoID09PSAyKSB7XG4gICAgICB0b3AgPSBib3R0b20gPSBwYWRkaW5nWzBdO1xuICAgICAgbGVmdCA9IHJpZ2h0ID0gcGFkZGluZ1sxXTtcbiAgICB9IGVsc2UgaWYgKHBhZGRpbmcubGVuZ3RoID09PSA0KSB7XG4gICAgICB2YXIgX3BhZGRpbmcgPSBfc2xpY2VkVG9BcnJheShwYWRkaW5nLCA0KTtcblxuICAgICAgdG9wID0gX3BhZGRpbmdbMF07XG4gICAgICByaWdodCA9IF9wYWRkaW5nWzFdO1xuICAgICAgYm90dG9tID0gX3BhZGRpbmdbMl07XG4gICAgICBsZWZ0ID0gX3BhZGRpbmdbM107XG4gICAgfVxuXG4gICAgYmIueDEgLT0gbGVmdDtcbiAgICBiYi54MiArPSByaWdodDtcbiAgICBiYi55MSAtPSB0b3A7XG4gICAgYmIueTIgKz0gYm90dG9tO1xuICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgIGJiLmggPSBiYi55MiAtIGJiLnkxO1xuICAgIHJldHVybiBiYjtcbiAgfTtcblxuICB2YXIgYXNzaWduQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBhc3NpZ25Cb3VuZGluZ0JveChiYjEsIGJiMikge1xuICAgIGJiMS54MSA9IGJiMi54MTtcbiAgICBiYjEueTEgPSBiYjIueTE7XG4gICAgYmIxLngyID0gYmIyLngyO1xuICAgIGJiMS55MiA9IGJiMi55MjtcbiAgICBiYjEudyA9IGJiMS54MiAtIGJiMS54MTtcbiAgICBiYjEuaCA9IGJiMS55MiAtIGJiMS55MTtcbiAgfTtcbiAgdmFyIGJvdW5kaW5nQm94ZXNJbnRlcnNlY3QgPSBmdW5jdGlvbiBib3VuZGluZ0JveGVzSW50ZXJzZWN0KGJiMSwgYmIyKSB7XG4gICAgLy8gY2FzZTogb25lIGJiIHRvIHJpZ2h0IG9mIG90aGVyXG4gICAgaWYgKGJiMS54MSA+IGJiMi54Mikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChiYjIueDEgPiBiYjEueDIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNhc2U6IG9uZSBiYiB0byBsZWZ0IG9mIG90aGVyXG5cblxuICAgIGlmIChiYjEueDIgPCBiYjIueDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoYmIyLngyIDwgYmIxLngxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBjYXNlOiBvbmUgYmIgYWJvdmUgb3RoZXJcblxuXG4gICAgaWYgKGJiMS55MiA8IGJiMi55MSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChiYjIueTIgPCBiYjEueTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIGNhc2U6IG9uZSBiYiBiZWxvdyBvdGhlclxuXG5cbiAgICBpZiAoYmIxLnkxID4gYmIyLnkyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGJiMi55MSA+IGJiMS55Mikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gb3RoZXJ3aXNlLCBtdXN0IGhhdmUgc29tZSBvdmVybGFwXG5cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuICB2YXIgaW5Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIGluQm91bmRpbmdCb3goYmIsIHgsIHkpIHtcbiAgICByZXR1cm4gYmIueDEgPD0geCAmJiB4IDw9IGJiLngyICYmIGJiLnkxIDw9IHkgJiYgeSA8PSBiYi55MjtcbiAgfTtcbiAgdmFyIHBvaW50SW5Cb3VuZGluZ0JveCA9IGZ1bmN0aW9uIHBvaW50SW5Cb3VuZGluZ0JveChiYiwgcHQpIHtcbiAgICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYiwgcHQueCwgcHQueSk7XG4gIH07XG4gIHZhciBib3VuZGluZ0JveEluQm91bmRpbmdCb3ggPSBmdW5jdGlvbiBib3VuZGluZ0JveEluQm91bmRpbmdCb3goYmIxLCBiYjIpIHtcbiAgICByZXR1cm4gaW5Cb3VuZGluZ0JveChiYjEsIGJiMi54MSwgYmIyLnkxKSAmJiBpbkJvdW5kaW5nQm94KGJiMSwgYmIyLngyLCBiYjIueTIpO1xuICB9O1xuICB2YXIgcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lID0gZnVuY3Rpb24gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZykge1xuICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICB2YXIgaGFsZldpZHRoID0gd2lkdGggLyAyO1xuICAgIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjsgLy8gQ2hlY2sgaW50ZXJzZWN0aW9ucyB3aXRoIHN0cmFpZ2h0IGxpbmUgc2VnbWVudHNcblxuICAgIHZhciBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zOyAvLyBUb3Agc2VnbWVudCwgbGVmdCB0byByaWdodFxuXG4gICAge1xuICAgICAgdmFyIHRvcFN0YXJ0WCA9IG5vZGVYIC0gaGFsZldpZHRoICsgY29ybmVyUmFkaXVzIC0gcGFkZGluZztcbiAgICAgIHZhciB0b3BTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgLSBwYWRkaW5nO1xuICAgICAgdmFyIHRvcEVuZFggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgICB2YXIgdG9wRW5kWSA9IHRvcFN0YXJ0WTtcbiAgICAgIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMgPSBmaW5pdGVMaW5lc0ludGVyc2VjdCh4LCB5LCBub2RlWCwgbm9kZVksIHRvcFN0YXJ0WCwgdG9wU3RhcnRZLCB0b3BFbmRYLCB0b3BFbmRZLCBmYWxzZSk7XG5cbiAgICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgICB9XG4gICAgfSAvLyBSaWdodCBzZWdtZW50LCB0b3AgdG8gYm90dG9tXG5cbiAgICB7XG4gICAgICB2YXIgcmlnaHRTdGFydFggPSBub2RlWCArIGhhbGZXaWR0aCArIHBhZGRpbmc7XG4gICAgICB2YXIgcmlnaHRTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgICAgdmFyIHJpZ2h0RW5kWCA9IHJpZ2h0U3RhcnRYO1xuICAgICAgdmFyIHJpZ2h0RW5kWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgICBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCByaWdodFN0YXJ0WCwgcmlnaHRTdGFydFksIHJpZ2h0RW5kWCwgcmlnaHRFbmRZLCBmYWxzZSk7XG5cbiAgICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgICB9XG4gICAgfSAvLyBCb3R0b20gc2VnbWVudCwgbGVmdCB0byByaWdodFxuXG4gICAge1xuICAgICAgdmFyIGJvdHRvbVN0YXJ0WCA9IG5vZGVYIC0gaGFsZldpZHRoICsgY29ybmVyUmFkaXVzIC0gcGFkZGluZztcbiAgICAgIHZhciBib3R0b21TdGFydFkgPSBub2RlWSArIGhhbGZIZWlnaHQgKyBwYWRkaW5nO1xuICAgICAgdmFyIGJvdHRvbUVuZFggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgICB2YXIgYm90dG9tRW5kWSA9IGJvdHRvbVN0YXJ0WTtcbiAgICAgIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMgPSBmaW5pdGVMaW5lc0ludGVyc2VjdCh4LCB5LCBub2RlWCwgbm9kZVksIGJvdHRvbVN0YXJ0WCwgYm90dG9tU3RhcnRZLCBib3R0b21FbmRYLCBib3R0b21FbmRZLCBmYWxzZSk7XG5cbiAgICAgIGlmIChzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnM7XG4gICAgICB9XG4gICAgfSAvLyBMZWZ0IHNlZ21lbnQsIHRvcCB0byBib3R0b21cblxuICAgIHtcbiAgICAgIHZhciBsZWZ0U3RhcnRYID0gbm9kZVggLSBoYWxmV2lkdGggLSBwYWRkaW5nO1xuICAgICAgdmFyIGxlZnRTdGFydFkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXMgLSBwYWRkaW5nO1xuICAgICAgdmFyIGxlZnRFbmRYID0gbGVmdFN0YXJ0WDtcbiAgICAgIHZhciBsZWZ0RW5kWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cyArIHBhZGRpbmc7XG4gICAgICBzdHJhaWdodExpbmVJbnRlcnNlY3Rpb25zID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgbm9kZVgsIG5vZGVZLCBsZWZ0U3RhcnRYLCBsZWZ0U3RhcnRZLCBsZWZ0RW5kWCwgbGVmdEVuZFksIGZhbHNlKTtcblxuICAgICAgaWYgKHN0cmFpZ2h0TGluZUludGVyc2VjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gc3RyYWlnaHRMaW5lSW50ZXJzZWN0aW9ucztcbiAgICAgIH1cbiAgICB9IC8vIENoZWNrIGludGVyc2VjdGlvbnMgd2l0aCBhcmMgc2VnbWVudHNcblxuICAgIHZhciBhcmNJbnRlcnNlY3Rpb25zOyAvLyBUb3AgTGVmdFxuXG4gICAge1xuICAgICAgdmFyIHRvcExlZnRDZW50ZXJYID0gbm9kZVggLSBoYWxmV2lkdGggKyBjb3JuZXJSYWRpdXM7XG4gICAgICB2YXIgdG9wTGVmdENlbnRlclkgPSBub2RlWSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJSYWRpdXM7XG4gICAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIHRvcExlZnRDZW50ZXJYLCB0b3BMZWZ0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPD0gdG9wTGVmdENlbnRlclggJiYgYXJjSW50ZXJzZWN0aW9uc1sxXSA8PSB0b3BMZWZ0Q2VudGVyWSkge1xuICAgICAgICByZXR1cm4gW2FyY0ludGVyc2VjdGlvbnNbMF0sIGFyY0ludGVyc2VjdGlvbnNbMV1dO1xuICAgICAgfVxuICAgIH0gLy8gVG9wIFJpZ2h0XG5cbiAgICB7XG4gICAgICB2YXIgdG9wUmlnaHRDZW50ZXJYID0gbm9kZVggKyBoYWxmV2lkdGggLSBjb3JuZXJSYWRpdXM7XG4gICAgICB2YXIgdG9wUmlnaHRDZW50ZXJZID0gbm9kZVkgLSBoYWxmSGVpZ2h0ICsgY29ybmVyUmFkaXVzO1xuICAgICAgYXJjSW50ZXJzZWN0aW9ucyA9IGludGVyc2VjdExpbmVDaXJjbGUoeCwgeSwgbm9kZVgsIG5vZGVZLCB0b3BSaWdodENlbnRlclgsIHRvcFJpZ2h0Q2VudGVyWSwgY29ybmVyUmFkaXVzICsgcGFkZGluZyk7IC8vIEVuc3VyZSB0aGUgaW50ZXJzZWN0aW9uIGlzIG9uIHRoZSBkZXNpcmVkIHF1YXJ0ZXIgb2YgdGhlIGNpcmNsZVxuXG4gICAgICBpZiAoYXJjSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwICYmIGFyY0ludGVyc2VjdGlvbnNbMF0gPj0gdG9wUmlnaHRDZW50ZXJYICYmIGFyY0ludGVyc2VjdGlvbnNbMV0gPD0gdG9wUmlnaHRDZW50ZXJZKSB7XG4gICAgICAgIHJldHVybiBbYXJjSW50ZXJzZWN0aW9uc1swXSwgYXJjSW50ZXJzZWN0aW9uc1sxXV07XG4gICAgICB9XG4gICAgfSAvLyBCb3R0b20gUmlnaHRcblxuICAgIHtcbiAgICAgIHZhciBib3R0b21SaWdodENlbnRlclggPSBub2RlWCArIGhhbGZXaWR0aCAtIGNvcm5lclJhZGl1cztcbiAgICAgIHZhciBib3R0b21SaWdodENlbnRlclkgPSBub2RlWSArIGhhbGZIZWlnaHQgLSBjb3JuZXJSYWRpdXM7XG4gICAgICBhcmNJbnRlcnNlY3Rpb25zID0gaW50ZXJzZWN0TGluZUNpcmNsZSh4LCB5LCBub2RlWCwgbm9kZVksIGJvdHRvbVJpZ2h0Q2VudGVyWCwgYm90dG9tUmlnaHRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICAgIGlmIChhcmNJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDAgJiYgYXJjSW50ZXJzZWN0aW9uc1swXSA+PSBib3R0b21SaWdodENlbnRlclggJiYgYXJjSW50ZXJzZWN0aW9uc1sxXSA+PSBib3R0b21SaWdodENlbnRlclkpIHtcbiAgICAgICAgcmV0dXJuIFthcmNJbnRlcnNlY3Rpb25zWzBdLCBhcmNJbnRlcnNlY3Rpb25zWzFdXTtcbiAgICAgIH1cbiAgICB9IC8vIEJvdHRvbSBMZWZ0XG5cbiAgICB7XG4gICAgICB2YXIgYm90dG9tTGVmdENlbnRlclggPSBub2RlWCAtIGhhbGZXaWR0aCArIGNvcm5lclJhZGl1cztcbiAgICAgIHZhciBib3R0b21MZWZ0Q2VudGVyWSA9IG5vZGVZICsgaGFsZkhlaWdodCAtIGNvcm5lclJhZGl1cztcbiAgICAgIGFyY0ludGVyc2VjdGlvbnMgPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIG5vZGVYLCBub2RlWSwgYm90dG9tTGVmdENlbnRlclgsIGJvdHRvbUxlZnRDZW50ZXJZLCBjb3JuZXJSYWRpdXMgKyBwYWRkaW5nKTsgLy8gRW5zdXJlIHRoZSBpbnRlcnNlY3Rpb24gaXMgb24gdGhlIGRlc2lyZWQgcXVhcnRlciBvZiB0aGUgY2lyY2xlXG5cbiAgICAgIGlmIChhcmNJbnRlcnNlY3Rpb25zLmxlbmd0aCA+IDAgJiYgYXJjSW50ZXJzZWN0aW9uc1swXSA8PSBib3R0b21MZWZ0Q2VudGVyWCAmJiBhcmNJbnRlcnNlY3Rpb25zWzFdID49IGJvdHRvbUxlZnRDZW50ZXJZKSB7XG4gICAgICAgIHJldHVybiBbYXJjSW50ZXJzZWN0aW9uc1swXSwgYXJjSW50ZXJzZWN0aW9uc1sxXV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbXTsgLy8gaWYgbm90aGluZ1xuICB9O1xuICB2YXIgaW5MaW5lVmljaW5pdHkgPSBmdW5jdGlvbiBpbkxpbmVWaWNpbml0eSh4LCB5LCBseDEsIGx5MSwgbHgyLCBseTIsIHRvbGVyYW5jZSkge1xuICAgIHZhciB0ID0gdG9sZXJhbmNlO1xuICAgIHZhciB4MSA9IE1hdGgubWluKGx4MSwgbHgyKTtcbiAgICB2YXIgeDIgPSBNYXRoLm1heChseDEsIGx4Mik7XG4gICAgdmFyIHkxID0gTWF0aC5taW4obHkxLCBseTIpO1xuICAgIHZhciB5MiA9IE1hdGgubWF4KGx5MSwgbHkyKTtcbiAgICByZXR1cm4geDEgLSB0IDw9IHggJiYgeCA8PSB4MiArIHQgJiYgeTEgLSB0IDw9IHkgJiYgeSA8PSB5MiArIHQ7XG4gIH07XG4gIHZhciBpbkJlemllclZpY2luaXR5ID0gZnVuY3Rpb24gaW5CZXppZXJWaWNpbml0eSh4LCB5LCB4MSwgeTEsIHgyLCB5MiwgeDMsIHkzLCB0b2xlcmFuY2UpIHtcbiAgICB2YXIgYmIgPSB7XG4gICAgICB4MTogTWF0aC5taW4oeDEsIHgzLCB4MikgLSB0b2xlcmFuY2UsXG4gICAgICB4MjogTWF0aC5tYXgoeDEsIHgzLCB4MikgKyB0b2xlcmFuY2UsXG4gICAgICB5MTogTWF0aC5taW4oeTEsIHkzLCB5MikgLSB0b2xlcmFuY2UsXG4gICAgICB5MjogTWF0aC5tYXgoeTEsIHkzLCB5MikgKyB0b2xlcmFuY2VcbiAgICB9OyAvLyBpZiBvdXRzaWRlIHRoZSByb3VnaCBib3VuZGluZyBib3ggZm9yIHRoZSBiZXppZXIsIHRoZW4gaXQgY2FuJ3QgYmUgYSBoaXRcblxuICAgIGlmICh4IDwgYmIueDEgfHwgeCA+IGJiLngyIHx8IHkgPCBiYi55MSB8fCB5ID4gYmIueTIpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdiZXppZXIgb3V0IG9mIHJvdWdoIGJiJylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2RvIG1vcmUgZXhwZW5zaXZlIGNoZWNrJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBzb2x2ZVF1YWRyYXRpYyA9IGZ1bmN0aW9uIHNvbHZlUXVhZHJhdGljKGEsIGIsIGMsIHZhbCkge1xuICAgIGMgLT0gdmFsO1xuICAgIHZhciByID0gYiAqIGIgLSA0ICogYSAqIGM7XG5cbiAgICBpZiAociA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgc3FydFIgPSBNYXRoLnNxcnQocik7XG4gICAgdmFyIGRlbm9tID0gMiAqIGE7XG4gICAgdmFyIHJvb3QxID0gKC1iICsgc3FydFIpIC8gZGVub207XG4gICAgdmFyIHJvb3QyID0gKC1iIC0gc3FydFIpIC8gZGVub207XG4gICAgcmV0dXJuIFtyb290MSwgcm9vdDJdO1xuICB9O1xuICB2YXIgc29sdmVDdWJpYyA9IGZ1bmN0aW9uIHNvbHZlQ3ViaWMoYSwgYiwgYywgZCwgcmVzdWx0KSB7XG4gICAgLy8gU29sdmVzIGEgY3ViaWMgZnVuY3Rpb24sIHJldHVybnMgcm9vdCBpbiBmb3JtIFtyMSwgaTEsIHIyLCBpMiwgcjMsIGkzXSwgd2hlcmVcbiAgICAvLyByIGlzIHRoZSByZWFsIGNvbXBvbmVudCwgaSBpcyB0aGUgaW1hZ2luYXJ5IGNvbXBvbmVudFxuICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBDYXJkYW5vIG1ldGhvZCBmcm9tIHRoZSB5ZWFyIDE1NDVcbiAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0N1YmljX2Z1bmN0aW9uI1RoZV9uYXR1cmVfb2ZfdGhlX3Jvb3RzXG4gICAgdmFyIGVwc2lsb24gPSAwLjAwMDAxOyAvLyBhdm9pZCBkaXZpc2lvbiBieSB6ZXJvIHdoaWxlIGtlZXBpbmcgdGhlIG92ZXJhbGwgZXhwcmVzc2lvbiBjbG9zZSBpbiB2YWx1ZVxuXG4gICAgaWYgKGEgPT09IDApIHtcbiAgICAgIGEgPSBlcHNpbG9uO1xuICAgIH1cblxuICAgIGIgLz0gYTtcbiAgICBjIC89IGE7XG4gICAgZCAvPSBhO1xuICAgIHZhciBkaXNjcmltaW5hbnQsIHEsIHIsIGR1bTEsIHMsIHQsIHRlcm0xLCByMTM7XG4gICAgcSA9ICgzLjAgKiBjIC0gYiAqIGIpIC8gOS4wO1xuICAgIHIgPSAtKDI3LjAgKiBkKSArIGIgKiAoOS4wICogYyAtIDIuMCAqIChiICogYikpO1xuICAgIHIgLz0gNTQuMDtcbiAgICBkaXNjcmltaW5hbnQgPSBxICogcSAqIHEgKyByICogcjtcbiAgICByZXN1bHRbMV0gPSAwO1xuICAgIHRlcm0xID0gYiAvIDMuMDtcblxuICAgIGlmIChkaXNjcmltaW5hbnQgPiAwKSB7XG4gICAgICBzID0gciArIE1hdGguc3FydChkaXNjcmltaW5hbnQpO1xuICAgICAgcyA9IHMgPCAwID8gLU1hdGgucG93KC1zLCAxLjAgLyAzLjApIDogTWF0aC5wb3cocywgMS4wIC8gMy4wKTtcbiAgICAgIHQgPSByIC0gTWF0aC5zcXJ0KGRpc2NyaW1pbmFudCk7XG4gICAgICB0ID0gdCA8IDAgPyAtTWF0aC5wb3coLXQsIDEuMCAvIDMuMCkgOiBNYXRoLnBvdyh0LCAxLjAgLyAzLjApO1xuICAgICAgcmVzdWx0WzBdID0gLXRlcm0xICsgcyArIHQ7XG4gICAgICB0ZXJtMSArPSAocyArIHQpIC8gMi4wO1xuICAgICAgcmVzdWx0WzRdID0gcmVzdWx0WzJdID0gLXRlcm0xO1xuICAgICAgdGVybTEgPSBNYXRoLnNxcnQoMy4wKSAqICgtdCArIHMpIC8gMjtcbiAgICAgIHJlc3VsdFszXSA9IHRlcm0xO1xuICAgICAgcmVzdWx0WzVdID0gLXRlcm0xO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlc3VsdFs1XSA9IHJlc3VsdFszXSA9IDA7XG5cbiAgICBpZiAoZGlzY3JpbWluYW50ID09PSAwKSB7XG4gICAgICByMTMgPSByIDwgMCA/IC1NYXRoLnBvdygtciwgMS4wIC8gMy4wKSA6IE1hdGgucG93KHIsIDEuMCAvIDMuMCk7XG4gICAgICByZXN1bHRbMF0gPSAtdGVybTEgKyAyLjAgKiByMTM7XG4gICAgICByZXN1bHRbNF0gPSByZXN1bHRbMl0gPSAtKHIxMyArIHRlcm0xKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBxID0gLXE7XG4gICAgZHVtMSA9IHEgKiBxICogcTtcbiAgICBkdW0xID0gTWF0aC5hY29zKHIgLyBNYXRoLnNxcnQoZHVtMSkpO1xuICAgIHIxMyA9IDIuMCAqIE1hdGguc3FydChxKTtcbiAgICByZXN1bHRbMF0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcyhkdW0xIC8gMy4wKTtcbiAgICByZXN1bHRbMl0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcygoZHVtMSArIDIuMCAqIE1hdGguUEkpIC8gMy4wKTtcbiAgICByZXN1bHRbNF0gPSAtdGVybTEgKyByMTMgKiBNYXRoLmNvcygoZHVtMSArIDQuMCAqIE1hdGguUEkpIC8gMy4wKTtcbiAgICByZXR1cm47XG4gIH07XG4gIHZhciBzcWRpc3RUb1F1YWRyYXRpY0JlemllciA9IGZ1bmN0aW9uIHNxZGlzdFRvUXVhZHJhdGljQmV6aWVyKHgsIHksIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMpIHtcbiAgICAvLyBGaW5kIG1pbmltdW0gZGlzdGFuY2UgYnkgdXNpbmcgdGhlIG1pbmltdW0gb2YgdGhlIGRpc3RhbmNlXG4gICAgLy8gZnVuY3Rpb24gYmV0d2VlbiB0aGUgZ2l2ZW4gcG9pbnQgYW5kIHRoZSBjdXJ2ZVxuICAgIC8vIFRoaXMgZ2l2ZXMgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcmVzdWx0aW5nIGN1YmljIGVxdWF0aW9uXG4gICAgLy8gd2hvc2Ugcm9vdHMgdGVsbCB1cyB3aGVyZSBhIHBvc3NpYmxlIG1pbmltdW0gaXNcbiAgICAvLyAoQ29lZmZpY2llbnRzIGFyZSBkaXZpZGVkIGJ5IDQpXG4gICAgdmFyIGEgPSAxLjAgKiB4MSAqIHgxIC0gNCAqIHgxICogeDIgKyAyICogeDEgKiB4MyArIDQgKiB4MiAqIHgyIC0gNCAqIHgyICogeDMgKyB4MyAqIHgzICsgeTEgKiB5MSAtIDQgKiB5MSAqIHkyICsgMiAqIHkxICogeTMgKyA0ICogeTIgKiB5MiAtIDQgKiB5MiAqIHkzICsgeTMgKiB5MztcbiAgICB2YXIgYiA9IDEuMCAqIDkgKiB4MSAqIHgyIC0gMyAqIHgxICogeDEgLSAzICogeDEgKiB4MyAtIDYgKiB4MiAqIHgyICsgMyAqIHgyICogeDMgKyA5ICogeTEgKiB5MiAtIDMgKiB5MSAqIHkxIC0gMyAqIHkxICogeTMgLSA2ICogeTIgKiB5MiArIDMgKiB5MiAqIHkzO1xuICAgIHZhciBjID0gMS4wICogMyAqIHgxICogeDEgLSA2ICogeDEgKiB4MiArIHgxICogeDMgLSB4MSAqIHggKyAyICogeDIgKiB4MiArIDIgKiB4MiAqIHggLSB4MyAqIHggKyAzICogeTEgKiB5MSAtIDYgKiB5MSAqIHkyICsgeTEgKiB5MyAtIHkxICogeSArIDIgKiB5MiAqIHkyICsgMiAqIHkyICogeSAtIHkzICogeTtcbiAgICB2YXIgZCA9IDEuMCAqIHgxICogeDIgLSB4MSAqIHgxICsgeDEgKiB4IC0geDIgKiB4ICsgeTEgKiB5MiAtIHkxICogeTEgKyB5MSAqIHkgLSB5MiAqIHk7IC8vIGRlYnVnKFwiY29lZmZpY2llbnRzOiBcIiArIGEgLyBhICsgXCIsIFwiICsgYiAvIGEgKyBcIiwgXCIgKyBjIC8gYSArIFwiLCBcIiArIGQgLyBhKTtcblxuICAgIHZhciByb290cyA9IFtdOyAvLyBVc2UgdGhlIGN1YmljIHNvbHZpbmcgYWxnb3JpdGhtXG5cbiAgICBzb2x2ZUN1YmljKGEsIGIsIGMsIGQsIHJvb3RzKTtcbiAgICB2YXIgemVyb1RocmVzaG9sZCA9IDAuMDAwMDAwMTtcbiAgICB2YXIgcGFyYW1zID0gW107XG5cbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgNjsgaW5kZXggKz0gMikge1xuICAgICAgaWYgKE1hdGguYWJzKHJvb3RzW2luZGV4ICsgMV0pIDwgemVyb1RocmVzaG9sZCAmJiByb290c1tpbmRleF0gPj0gMCAmJiByb290c1tpbmRleF0gPD0gMS4wKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKHJvb3RzW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFyYW1zLnB1c2goMS4wKTtcbiAgICBwYXJhbXMucHVzaCgwLjApO1xuICAgIHZhciBtaW5EaXN0YW5jZVNxdWFyZWQgPSAtMTtcbiAgICB2YXIgY3VyWCwgY3VyWSwgZGlzdFNxdWFyZWQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY3VyWCA9IE1hdGgucG93KDEuMCAtIHBhcmFtc1tpXSwgMi4wKSAqIHgxICsgMi4wICogKDEgLSBwYXJhbXNbaV0pICogcGFyYW1zW2ldICogeDIgKyBwYXJhbXNbaV0gKiBwYXJhbXNbaV0gKiB4MztcbiAgICAgIGN1clkgPSBNYXRoLnBvdygxIC0gcGFyYW1zW2ldLCAyLjApICogeTEgKyAyICogKDEuMCAtIHBhcmFtc1tpXSkgKiBwYXJhbXNbaV0gKiB5MiArIHBhcmFtc1tpXSAqIHBhcmFtc1tpXSAqIHkzO1xuICAgICAgZGlzdFNxdWFyZWQgPSBNYXRoLnBvdyhjdXJYIC0geCwgMikgKyBNYXRoLnBvdyhjdXJZIC0geSwgMik7IC8vIGRlYnVnKCdkaXN0YW5jZSBmb3IgcGFyYW0gJyArIHBhcmFtc1tpXSArIFwiOiBcIiArIE1hdGguc3FydChkaXN0U3F1YXJlZCkpO1xuXG4gICAgICBpZiAobWluRGlzdGFuY2VTcXVhcmVkID49IDApIHtcbiAgICAgICAgaWYgKGRpc3RTcXVhcmVkIDwgbWluRGlzdGFuY2VTcXVhcmVkKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2VTcXVhcmVkID0gZGlzdFNxdWFyZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbkRpc3RhbmNlU3F1YXJlZCA9IGRpc3RTcXVhcmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtaW5EaXN0YW5jZVNxdWFyZWQ7XG4gIH07XG4gIHZhciBzcWRpc3RUb0Zpbml0ZUxpbmUgPSBmdW5jdGlvbiBzcWRpc3RUb0Zpbml0ZUxpbmUoeCwgeSwgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gW3ggLSB4MSwgeSAtIHkxXTtcbiAgICB2YXIgbGluZSA9IFt4MiAtIHgxLCB5MiAtIHkxXTtcbiAgICB2YXIgbGluZVNxID0gbGluZVswXSAqIGxpbmVbMF0gKyBsaW5lWzFdICogbGluZVsxXTtcbiAgICB2YXIgaHlwU3EgPSBvZmZzZXRbMF0gKiBvZmZzZXRbMF0gKyBvZmZzZXRbMV0gKiBvZmZzZXRbMV07XG4gICAgdmFyIGRvdFByb2R1Y3QgPSBvZmZzZXRbMF0gKiBsaW5lWzBdICsgb2Zmc2V0WzFdICogbGluZVsxXTtcbiAgICB2YXIgYWRqU3EgPSBkb3RQcm9kdWN0ICogZG90UHJvZHVjdCAvIGxpbmVTcTtcblxuICAgIGlmIChkb3RQcm9kdWN0IDwgMCkge1xuICAgICAgcmV0dXJuIGh5cFNxO1xuICAgIH1cblxuICAgIGlmIChhZGpTcSA+IGxpbmVTcSkge1xuICAgICAgcmV0dXJuICh4IC0geDIpICogKHggLSB4MikgKyAoeSAtIHkyKSAqICh5IC0geTIpO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBTcSAtIGFkalNxO1xuICB9O1xuICB2YXIgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzID0gZnVuY3Rpb24gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHBvaW50cykge1xuICAgIHZhciB4MSwgeTEsIHgyLCB5MjtcbiAgICB2YXIgeTM7IC8vIEludGVyc2VjdCB3aXRoIHZlcnRpY2FsIGxpbmUgdGhyb3VnaCAoeCwgeSlcblxuICAgIHZhciB1cCA9IDA7IC8vIGxldCBkb3duID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgeDEgPSBwb2ludHNbaSAqIDJdO1xuICAgICAgeTEgPSBwb2ludHNbaSAqIDIgKyAxXTtcblxuICAgICAgaWYgKGkgKyAxIDwgcG9pbnRzLmxlbmd0aCAvIDIpIHtcbiAgICAgICAgeDIgPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgICB5MiA9IHBvaW50c1soaSArIDEpICogMiArIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeDIgPSBwb2ludHNbKGkgKyAxIC0gcG9pbnRzLmxlbmd0aCAvIDIpICogMl07XG4gICAgICAgIHkyID0gcG9pbnRzWyhpICsgMSAtIHBvaW50cy5sZW5ndGggLyAyKSAqIDIgKyAxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHgxID09IHggJiYgeDIgPT0geCkgOyBlbHNlIGlmICh4MSA+PSB4ICYmIHggPj0geDIgfHwgeDEgPD0geCAmJiB4IDw9IHgyKSB7XG4gICAgICAgIHkzID0gKHggLSB4MSkgLyAoeDIgLSB4MSkgKiAoeTIgLSB5MSkgKyB5MTtcblxuICAgICAgICBpZiAoeTMgPiB5KSB7XG4gICAgICAgICAgdXArKztcbiAgICAgICAgfSAvLyBpZiggeTMgPCB5ICl7XG4gICAgICAgIC8vIGRvd24rKztcbiAgICAgICAgLy8gfVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXAgJSAyID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcbiAgdmFyIHBvaW50SW5zaWRlUG9seWdvbiA9IGZ1bmN0aW9uIHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBkaXJlY3Rpb24sIHBhZGRpbmcpIHtcbiAgICB2YXIgdHJhbnNmb3JtZWRQb2ludHMgPSBuZXcgQXJyYXkoYmFzZVBvaW50cy5sZW5ndGgpOyAvLyBHaXZlcyBuZWdhdGl2ZSBhbmdsZVxuXG4gICAgdmFyIGFuZ2xlO1xuXG4gICAgaWYgKGRpcmVjdGlvblswXSAhPSBudWxsKSB7XG4gICAgICBhbmdsZSA9IE1hdGguYXRhbihkaXJlY3Rpb25bMV0gLyBkaXJlY3Rpb25bMF0pO1xuXG4gICAgICBpZiAoZGlyZWN0aW9uWzBdIDwgMCkge1xuICAgICAgICBhbmdsZSA9IGFuZ2xlICsgTWF0aC5QSSAvIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbmdsZSA9IC1hbmdsZSAtIE1hdGguUEkgLyAyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhbmdsZSA9IGRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICB2YXIgY29zID0gTWF0aC5jb3MoLWFuZ2xlKTtcbiAgICB2YXIgc2luID0gTWF0aC5zaW4oLWFuZ2xlKTsgLy8gICAgY29uc29sZS5sb2coXCJiYXNlOiBcIiArIGJhc2VQb2ludHMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1lZFBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyXSA9IHdpZHRoIC8gMiAqIChiYXNlUG9pbnRzW2kgKiAyXSAqIGNvcyAtIGJhc2VQb2ludHNbaSAqIDIgKyAxXSAqIHNpbik7XG4gICAgICB0cmFuc2Zvcm1lZFBvaW50c1tpICogMiArIDFdID0gaGVpZ2h0IC8gMiAqIChiYXNlUG9pbnRzW2kgKiAyICsgMV0gKiBjb3MgKyBiYXNlUG9pbnRzW2kgKiAyXSAqIHNpbik7XG4gICAgICB0cmFuc2Zvcm1lZFBvaW50c1tpICogMl0gKz0gY2VudGVyWDtcbiAgICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyICsgMV0gKz0gY2VudGVyWTtcbiAgICB9XG5cbiAgICB2YXIgcG9pbnRzO1xuXG4gICAgaWYgKHBhZGRpbmcgPiAwKSB7XG4gICAgICB2YXIgZXhwYW5kZWRMaW5lU2V0ID0gZXhwYW5kUG9seWdvbih0cmFuc2Zvcm1lZFBvaW50cywgLXBhZGRpbmcpO1xuICAgICAgcG9pbnRzID0gam9pbkxpbmVzKGV4cGFuZGVkTGluZVNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50cyA9IHRyYW5zZm9ybWVkUG9pbnRzO1xuICAgIH1cblxuICAgIHJldHVybiBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKTtcbiAgfTtcbiAgdmFyIHBvaW50SW5zaWRlUm91bmRQb2x5Z29uID0gZnVuY3Rpb24gcG9pbnRJbnNpZGVSb3VuZFBvbHlnb24oeCwgeSwgYmFzZVBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBjdXRQb2x5Z29uUG9pbnRzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gICAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcbiAgICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuICAgIHZhciBzcXVhcmVkQ29ybmVyUmFkaXVzID0gY29ybmVyUmFkaXVzICogY29ybmVyUmFkaXVzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNlUG9pbnRzLmxlbmd0aCAvIDQ7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICAgIGRlc3RVdiA9IHZvaWQgMDtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgc291cmNlVXYgPSBiYXNlUG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb3VyY2VVdiA9IGkgKiA0IC0gMjtcbiAgICAgIH1cblxuICAgICAgZGVzdFV2ID0gaSAqIDQgKyAyO1xuICAgICAgdmFyIHB4ID0gY2VudGVyWCArIGhhbGZXICogYmFzZVBvaW50c1tpICogNF07XG4gICAgICB2YXIgcHkgPSBjZW50ZXJZICsgaGFsZkggKiBiYXNlUG9pbnRzW2kgKiA0ICsgMV07XG4gICAgICB2YXIgY29zVGhldGEgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl0gKiBiYXNlUG9pbnRzW2Rlc3RVdl0gLSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBiYXNlUG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICAgIHZhciBjcDB5ID0gcHkgLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgICB2YXIgY3AxeCA9IHB4ICsgb2Zmc2V0ICogYmFzZVBvaW50c1tkZXN0VXZdO1xuICAgICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG4gICAgICBjdXRQb2x5Z29uUG9pbnRzW2kgKiA0XSA9IGNwMHg7XG4gICAgICBjdXRQb2x5Z29uUG9pbnRzW2kgKiA0ICsgMV0gPSBjcDB5O1xuICAgICAgY3V0UG9seWdvblBvaW50c1tpICogNCArIDJdID0gY3AxeDtcbiAgICAgIGN1dFBvbHlnb25Qb2ludHNbaSAqIDQgKyAzXSA9IGNwMXk7XG4gICAgICB2YXIgb3J0aHggPSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgICB2YXIgb3J0aHkgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl07XG4gICAgICB2YXIgY29zQWxwaGEgPSBvcnRoeCAqIGJhc2VQb2ludHNbZGVzdFV2XSArIG9ydGh5ICogYmFzZVBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgICAgaWYgKGNvc0FscGhhIDwgMCkge1xuICAgICAgICBvcnRoeCAqPSAtMTtcbiAgICAgICAgb3J0aHkgKj0gLTE7XG4gICAgICB9XG5cbiAgICAgIHZhciBjeCA9IGNwMHggKyBvcnRoeCAqIGNvcm5lclJhZGl1cztcbiAgICAgIHZhciBjeSA9IGNwMHkgKyBvcnRoeSAqIGNvcm5lclJhZGl1cztcbiAgICAgIHZhciBzcXVhcmVkRGlzdGFuY2UgPSBNYXRoLnBvdyhjeCAtIHgsIDIpICsgTWF0aC5wb3coY3kgLSB5LCAyKTtcblxuICAgICAgaWYgKHNxdWFyZWREaXN0YW5jZSA8PSBzcXVhcmVkQ29ybmVyUmFkaXVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgY3V0UG9seWdvblBvaW50cyk7XG4gIH07XG4gIHZhciBqb2luTGluZXMgPSBmdW5jdGlvbiBqb2luTGluZXMobGluZVNldCkge1xuICAgIHZhciB2ZXJ0aWNlcyA9IG5ldyBBcnJheShsaW5lU2V0Lmxlbmd0aCAvIDIpO1xuICAgIHZhciBjdXJyZW50TGluZVN0YXJ0WCwgY3VycmVudExpbmVTdGFydFksIGN1cnJlbnRMaW5lRW5kWCwgY3VycmVudExpbmVFbmRZO1xuICAgIHZhciBuZXh0TGluZVN0YXJ0WCwgbmV4dExpbmVTdGFydFksIG5leHRMaW5lRW5kWCwgbmV4dExpbmVFbmRZO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lU2V0Lmxlbmd0aCAvIDQ7IGkrKykge1xuICAgICAgY3VycmVudExpbmVTdGFydFggPSBsaW5lU2V0W2kgKiA0XTtcbiAgICAgIGN1cnJlbnRMaW5lU3RhcnRZID0gbGluZVNldFtpICogNCArIDFdO1xuICAgICAgY3VycmVudExpbmVFbmRYID0gbGluZVNldFtpICogNCArIDJdO1xuICAgICAgY3VycmVudExpbmVFbmRZID0gbGluZVNldFtpICogNCArIDNdO1xuXG4gICAgICBpZiAoaSA8IGxpbmVTZXQubGVuZ3RoIC8gNCAtIDEpIHtcbiAgICAgICAgbmV4dExpbmVTdGFydFggPSBsaW5lU2V0WyhpICsgMSkgKiA0XTtcbiAgICAgICAgbmV4dExpbmVTdGFydFkgPSBsaW5lU2V0WyhpICsgMSkgKiA0ICsgMV07XG4gICAgICAgIG5leHRMaW5lRW5kWCA9IGxpbmVTZXRbKGkgKyAxKSAqIDQgKyAyXTtcbiAgICAgICAgbmV4dExpbmVFbmRZID0gbGluZVNldFsoaSArIDEpICogNCArIDNdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dExpbmVTdGFydFggPSBsaW5lU2V0WzBdO1xuICAgICAgICBuZXh0TGluZVN0YXJ0WSA9IGxpbmVTZXRbMV07XG4gICAgICAgIG5leHRMaW5lRW5kWCA9IGxpbmVTZXRbMl07XG4gICAgICAgIG5leHRMaW5lRW5kWSA9IGxpbmVTZXRbM107XG4gICAgICB9XG5cbiAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBmaW5pdGVMaW5lc0ludGVyc2VjdChjdXJyZW50TGluZVN0YXJ0WCwgY3VycmVudExpbmVTdGFydFksIGN1cnJlbnRMaW5lRW5kWCwgY3VycmVudExpbmVFbmRZLCBuZXh0TGluZVN0YXJ0WCwgbmV4dExpbmVTdGFydFksIG5leHRMaW5lRW5kWCwgbmV4dExpbmVFbmRZLCB0cnVlKTtcbiAgICAgIHZlcnRpY2VzW2kgKiAyXSA9IGludGVyc2VjdGlvblswXTtcbiAgICAgIHZlcnRpY2VzW2kgKiAyICsgMV0gPSBpbnRlcnNlY3Rpb25bMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnRpY2VzO1xuICB9O1xuICB2YXIgZXhwYW5kUG9seWdvbiA9IGZ1bmN0aW9uIGV4cGFuZFBvbHlnb24ocG9pbnRzLCBwYWQpIHtcbiAgICB2YXIgZXhwYW5kZWRMaW5lU2V0ID0gbmV3IEFycmF5KHBvaW50cy5sZW5ndGggKiAyKTtcbiAgICB2YXIgY3VycmVudFBvaW50WCwgY3VycmVudFBvaW50WSwgbmV4dFBvaW50WCwgbmV4dFBvaW50WTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgY3VycmVudFBvaW50WCA9IHBvaW50c1tpICogMl07XG4gICAgICBjdXJyZW50UG9pbnRZID0gcG9pbnRzW2kgKiAyICsgMV07XG5cbiAgICAgIGlmIChpIDwgcG9pbnRzLmxlbmd0aCAvIDIgLSAxKSB7XG4gICAgICAgIG5leHRQb2ludFggPSBwb2ludHNbKGkgKyAxKSAqIDJdO1xuICAgICAgICBuZXh0UG9pbnRZID0gcG9pbnRzWyhpICsgMSkgKiAyICsgMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0UG9pbnRYID0gcG9pbnRzWzBdO1xuICAgICAgICBuZXh0UG9pbnRZID0gcG9pbnRzWzFdO1xuICAgICAgfSAvLyBDdXJyZW50IGxpbmU6IFtjdXJyZW50UG9pbnRYLCBjdXJyZW50UG9pbnRZXSB0byBbbmV4dFBvaW50WCwgbmV4dFBvaW50WV1cbiAgICAgIC8vIEFzc3VtZSBDQ1cgcG9seWdvbiB3aW5kaW5nXG5cblxuICAgICAgdmFyIG9mZnNldFggPSBuZXh0UG9pbnRZIC0gY3VycmVudFBvaW50WTtcbiAgICAgIHZhciBvZmZzZXRZID0gLShuZXh0UG9pbnRYIC0gY3VycmVudFBvaW50WCk7IC8vIE5vcm1hbGl6ZVxuXG4gICAgICB2YXIgb2Zmc2V0TGVuZ3RoID0gTWF0aC5zcXJ0KG9mZnNldFggKiBvZmZzZXRYICsgb2Zmc2V0WSAqIG9mZnNldFkpO1xuICAgICAgdmFyIG5vcm1hbGl6ZWRPZmZzZXRYID0gb2Zmc2V0WCAvIG9mZnNldExlbmd0aDtcbiAgICAgIHZhciBub3JtYWxpemVkT2Zmc2V0WSA9IG9mZnNldFkgLyBvZmZzZXRMZW5ndGg7XG4gICAgICBleHBhbmRlZExpbmVTZXRbaSAqIDRdID0gY3VycmVudFBvaW50WCArIG5vcm1hbGl6ZWRPZmZzZXRYICogcGFkO1xuICAgICAgZXhwYW5kZWRMaW5lU2V0W2kgKiA0ICsgMV0gPSBjdXJyZW50UG9pbnRZICsgbm9ybWFsaXplZE9mZnNldFkgKiBwYWQ7XG4gICAgICBleHBhbmRlZExpbmVTZXRbaSAqIDQgKyAyXSA9IG5leHRQb2ludFggKyBub3JtYWxpemVkT2Zmc2V0WCAqIHBhZDtcbiAgICAgIGV4cGFuZGVkTGluZVNldFtpICogNCArIDNdID0gbmV4dFBvaW50WSArIG5vcm1hbGl6ZWRPZmZzZXRZICogcGFkO1xuICAgIH1cblxuICAgIHJldHVybiBleHBhbmRlZExpbmVTZXQ7XG4gIH07XG4gIHZhciBpbnRlcnNlY3RMaW5lRWxsaXBzZSA9IGZ1bmN0aW9uIGludGVyc2VjdExpbmVFbGxpcHNlKHgsIHksIGNlbnRlclgsIGNlbnRlclksIGVsbGlwc2VXcmFkaXVzLCBlbGxpcHNlSHJhZGl1cykge1xuICAgIHZhciBkaXNwWCA9IGNlbnRlclggLSB4O1xuICAgIHZhciBkaXNwWSA9IGNlbnRlclkgLSB5O1xuICAgIGRpc3BYIC89IGVsbGlwc2VXcmFkaXVzO1xuICAgIGRpc3BZIC89IGVsbGlwc2VIcmFkaXVzO1xuICAgIHZhciBsZW4gPSBNYXRoLnNxcnQoZGlzcFggKiBkaXNwWCArIGRpc3BZICogZGlzcFkpO1xuICAgIHZhciBuZXdMZW5ndGggPSBsZW4gLSAxO1xuXG4gICAgaWYgKG5ld0xlbmd0aCA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbGVuUHJvcG9ydGlvbiA9IG5ld0xlbmd0aCAvIGxlbjtcbiAgICByZXR1cm4gWyhjZW50ZXJYIC0geCkgKiBsZW5Qcm9wb3J0aW9uICsgeCwgKGNlbnRlclkgLSB5KSAqIGxlblByb3BvcnRpb24gKyB5XTtcbiAgfTtcbiAgdmFyIGNoZWNrSW5FbGxpcHNlID0gZnVuY3Rpb24gY2hlY2tJbkVsbGlwc2UoeCwgeSwgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgcGFkZGluZykge1xuICAgIHggLT0gY2VudGVyWDtcbiAgICB5IC09IGNlbnRlclk7XG4gICAgeCAvPSB3aWR0aCAvIDIgKyBwYWRkaW5nO1xuICAgIHkgLz0gaGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gICAgcmV0dXJuIHggKiB4ICsgeSAqIHkgPD0gMTtcbiAgfTsgLy8gUmV0dXJucyBpbnRlcnNlY3Rpb25zIG9mIGluY3JlYXNpbmcgZGlzdGFuY2UgZnJvbSBsaW5lJ3Mgc3RhcnQgcG9pbnRcblxuICB2YXIgaW50ZXJzZWN0TGluZUNpcmNsZSA9IGZ1bmN0aW9uIGludGVyc2VjdExpbmVDaXJjbGUoeDEsIHkxLCB4MiwgeTIsIGNlbnRlclgsIGNlbnRlclksIHJhZGl1cykge1xuICAgIC8vIENhbGN1bGF0ZSBkLCBkaXJlY3Rpb24gdmVjdG9yIG9mIGxpbmVcbiAgICB2YXIgZCA9IFt4MiAtIHgxLCB5MiAtIHkxXTsgLy8gRGlyZWN0aW9uIHZlY3RvciBvZiBsaW5lXG5cbiAgICB2YXIgZiA9IFt4MSAtIGNlbnRlclgsIHkxIC0gY2VudGVyWV07XG4gICAgdmFyIGEgPSBkWzBdICogZFswXSArIGRbMV0gKiBkWzFdO1xuICAgIHZhciBiID0gMiAqIChmWzBdICogZFswXSArIGZbMV0gKiBkWzFdKTtcbiAgICB2YXIgYyA9IGZbMF0gKiBmWzBdICsgZlsxXSAqIGZbMV0gLSByYWRpdXMgKiByYWRpdXM7XG4gICAgdmFyIGRpc2NyaW1pbmFudCA9IGIgKiBiIC0gNCAqIGEgKiBjO1xuXG4gICAgaWYgKGRpc2NyaW1pbmFudCA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgdDEgPSAoLWIgKyBNYXRoLnNxcnQoZGlzY3JpbWluYW50KSkgLyAoMiAqIGEpO1xuICAgIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChkaXNjcmltaW5hbnQpKSAvICgyICogYSk7XG4gICAgdmFyIHRNaW4gPSBNYXRoLm1pbih0MSwgdDIpO1xuICAgIHZhciB0TWF4ID0gTWF0aC5tYXgodDEsIHQyKTtcbiAgICB2YXIgaW5SYW5nZVBhcmFtcyA9IFtdO1xuXG4gICAgaWYgKHRNaW4gPj0gMCAmJiB0TWluIDw9IDEpIHtcbiAgICAgIGluUmFuZ2VQYXJhbXMucHVzaCh0TWluKTtcbiAgICB9XG5cbiAgICBpZiAodE1heCA+PSAwICYmIHRNYXggPD0gMSkge1xuICAgICAgaW5SYW5nZVBhcmFtcy5wdXNoKHRNYXgpO1xuICAgIH1cblxuICAgIGlmIChpblJhbmdlUGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBuZWFySW50ZXJzZWN0aW9uWCA9IGluUmFuZ2VQYXJhbXNbMF0gKiBkWzBdICsgeDE7XG4gICAgdmFyIG5lYXJJbnRlcnNlY3Rpb25ZID0gaW5SYW5nZVBhcmFtc1swXSAqIGRbMV0gKyB5MTtcblxuICAgIGlmIChpblJhbmdlUGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgIGlmIChpblJhbmdlUGFyYW1zWzBdID09IGluUmFuZ2VQYXJhbXNbMV0pIHtcbiAgICAgICAgcmV0dXJuIFtuZWFySW50ZXJzZWN0aW9uWCwgbmVhckludGVyc2VjdGlvblldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGZhckludGVyc2VjdGlvblggPSBpblJhbmdlUGFyYW1zWzFdICogZFswXSArIHgxO1xuICAgICAgICB2YXIgZmFySW50ZXJzZWN0aW9uWSA9IGluUmFuZ2VQYXJhbXNbMV0gKiBkWzFdICsgeTE7XG4gICAgICAgIHJldHVybiBbbmVhckludGVyc2VjdGlvblgsIG5lYXJJbnRlcnNlY3Rpb25ZLCBmYXJJbnRlcnNlY3Rpb25YLCBmYXJJbnRlcnNlY3Rpb25ZXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtuZWFySW50ZXJzZWN0aW9uWCwgbmVhckludGVyc2VjdGlvblldO1xuICAgIH1cbiAgfTtcbiAgdmFyIG1pZE9mVGhyZWUgPSBmdW5jdGlvbiBtaWRPZlRocmVlKGEsIGIsIGMpIHtcbiAgICBpZiAoYiA8PSBhICYmIGEgPD0gYyB8fCBjIDw9IGEgJiYgYSA8PSBiKSB7XG4gICAgICByZXR1cm4gYTtcbiAgICB9IGVsc2UgaWYgKGEgPD0gYiAmJiBiIDw9IGMgfHwgYyA8PSBiICYmIGIgPD0gYSkge1xuICAgICAgcmV0dXJuIGI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjO1xuICAgIH1cbiAgfTsgLy8gKHgxLHkxKT0+KHgyLHkyKSBpbnRlcnNlY3Qgd2l0aCAoeDMseTMpPT4oeDQseTQpXG5cbiAgdmFyIGZpbml0ZUxpbmVzSW50ZXJzZWN0ID0gZnVuY3Rpb24gZmluaXRlTGluZXNJbnRlcnNlY3QoeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgeDQsIHk0LCBpbmZpbml0ZUxpbmVzKSB7XG4gICAgdmFyIGR4MTMgPSB4MSAtIHgzO1xuICAgIHZhciBkeDIxID0geDIgLSB4MTtcbiAgICB2YXIgZHg0MyA9IHg0IC0geDM7XG4gICAgdmFyIGR5MTMgPSB5MSAtIHkzO1xuICAgIHZhciBkeTIxID0geTIgLSB5MTtcbiAgICB2YXIgZHk0MyA9IHk0IC0geTM7XG4gICAgdmFyIHVhX3QgPSBkeDQzICogZHkxMyAtIGR5NDMgKiBkeDEzO1xuICAgIHZhciB1Yl90ID0gZHgyMSAqIGR5MTMgLSBkeTIxICogZHgxMztcbiAgICB2YXIgdV9iID0gZHk0MyAqIGR4MjEgLSBkeDQzICogZHkyMTtcblxuICAgIGlmICh1X2IgIT09IDApIHtcbiAgICAgIHZhciB1YSA9IHVhX3QgLyB1X2I7XG4gICAgICB2YXIgdWIgPSB1Yl90IC8gdV9iO1xuICAgICAgdmFyIGZscHRUaHJlc2hvbGQgPSAwLjAwMTtcblxuICAgICAgdmFyIF9taW4gPSAwIC0gZmxwdFRocmVzaG9sZDtcblxuICAgICAgdmFyIF9tYXggPSAxICsgZmxwdFRocmVzaG9sZDtcblxuICAgICAgaWYgKF9taW4gPD0gdWEgJiYgdWEgPD0gX21heCAmJiBfbWluIDw9IHViICYmIHViIDw9IF9tYXgpIHtcbiAgICAgICAgcmV0dXJuIFt4MSArIHVhICogZHgyMSwgeTEgKyB1YSAqIGR5MjFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFpbmZpbml0ZUxpbmVzKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbeDEgKyB1YSAqIGR4MjEsIHkxICsgdWEgKiBkeTIxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodWFfdCA9PT0gMCB8fCB1Yl90ID09PSAwKSB7XG4gICAgICAgIC8vIFBhcmFsbGVsLCBjb2luY2lkZW50IGxpbmVzLiBDaGVjayBpZiBvdmVybGFwXG4gICAgICAgIC8vIENoZWNrIGVuZHBvaW50IG9mIHNlY29uZCBsaW5lXG4gICAgICAgIGlmIChtaWRPZlRocmVlKHgxLCB4MiwgeDQpID09PSB4NCkge1xuICAgICAgICAgIHJldHVybiBbeDQsIHk0XTtcbiAgICAgICAgfSAvLyBDaGVjayBzdGFydCBwb2ludCBvZiBzZWNvbmQgbGluZVxuXG5cbiAgICAgICAgaWYgKG1pZE9mVGhyZWUoeDEsIHgyLCB4MykgPT09IHgzKSB7XG4gICAgICAgICAgcmV0dXJuIFt4MywgeTNdO1xuICAgICAgICB9IC8vIEVuZHBvaW50IG9mIGZpcnN0IGxpbmVcblxuXG4gICAgICAgIGlmIChtaWRPZlRocmVlKHgzLCB4NCwgeDIpID09PSB4Mikge1xuICAgICAgICAgIHJldHVybiBbeDIsIHkyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFBhcmFsbGVsLCBub24tY29pbmNpZGVudFxuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgfVxuICB9OyAvLyBtYXRoLnBvbHlnb25JbnRlcnNlY3RMaW5lKCB4LCB5LCBiYXNlUG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nIClcbiAgLy8gaW50ZXJzZWN0IGEgbm9kZSBwb2x5Z29uIChwdHMgdHJhbnNmb3JtZWQpXG4gIC8vXG4gIC8vIG1hdGgucG9seWdvbkludGVyc2VjdExpbmUoIHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclkgKVxuICAvLyBpbnRlcnNlY3QgdGhlIHBvaW50cyAobm8gdHJhbnNmb3JtKVxuXG4gIHZhciBwb2x5Z29uSW50ZXJzZWN0TGluZSA9IGZ1bmN0aW9uIHBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcpIHtcbiAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuICAgIHZhciBpbnRlcnNlY3Rpb247XG4gICAgdmFyIHRyYW5zZm9ybWVkUG9pbnRzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgICB2YXIgZG9UcmFuc2Zvcm0gPSB0cnVlO1xuXG4gICAgaWYgKHdpZHRoID09IG51bGwpIHtcbiAgICAgIGRvVHJhbnNmb3JtID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHBvaW50cztcblxuICAgIGlmIChkb1RyYW5zZm9ybSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0cmFuc2Zvcm1lZFBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgICAgdHJhbnNmb3JtZWRQb2ludHNbaSAqIDJdID0gYmFzZVBvaW50c1tpICogMl0gKiB3aWR0aCArIGNlbnRlclg7XG4gICAgICAgIHRyYW5zZm9ybWVkUG9pbnRzW2kgKiAyICsgMV0gPSBiYXNlUG9pbnRzW2kgKiAyICsgMV0gKiBoZWlnaHQgKyBjZW50ZXJZO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFkZGluZyA+IDApIHtcbiAgICAgICAgdmFyIGV4cGFuZGVkTGluZVNldCA9IGV4cGFuZFBvbHlnb24odHJhbnNmb3JtZWRQb2ludHMsIC1wYWRkaW5nKTtcbiAgICAgICAgcG9pbnRzID0gam9pbkxpbmVzKGV4cGFuZGVkTGluZVNldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb2ludHMgPSB0cmFuc2Zvcm1lZFBvaW50cztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnRzID0gYmFzZVBvaW50cztcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudFgsIGN1cnJlbnRZLCBuZXh0WCwgbmV4dFk7XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBwb2ludHMubGVuZ3RoIC8gMjsgX2kyKyspIHtcbiAgICAgIGN1cnJlbnRYID0gcG9pbnRzW19pMiAqIDJdO1xuICAgICAgY3VycmVudFkgPSBwb2ludHNbX2kyICogMiArIDFdO1xuXG4gICAgICBpZiAoX2kyIDwgcG9pbnRzLmxlbmd0aCAvIDIgLSAxKSB7XG4gICAgICAgIG5leHRYID0gcG9pbnRzWyhfaTIgKyAxKSAqIDJdO1xuICAgICAgICBuZXh0WSA9IHBvaW50c1soX2kyICsgMSkgKiAyICsgMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0WCA9IHBvaW50c1swXTtcbiAgICAgICAgbmV4dFkgPSBwb2ludHNbMV07XG4gICAgICB9XG5cbiAgICAgIGludGVyc2VjdGlvbiA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIGNlbnRlclgsIGNlbnRlclksIGN1cnJlbnRYLCBjdXJyZW50WSwgbmV4dFgsIG5leHRZKTtcblxuICAgICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKGludGVyc2VjdGlvblswXSwgaW50ZXJzZWN0aW9uWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJzZWN0aW9ucztcbiAgfTtcbiAgdmFyIHJvdW5kUG9seWdvbkludGVyc2VjdExpbmUgPSBmdW5jdGlvbiByb3VuZFBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIGJhc2VQb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBhZGRpbmcpIHtcbiAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IFtdO1xuICAgIHZhciBpbnRlcnNlY3Rpb247XG4gICAgdmFyIGxpbmVzID0gbmV3IEFycmF5KGJhc2VQb2ludHMubGVuZ3RoKTtcbiAgICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gICAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcbiAgICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRQb2x5Z29uUmFkaXVzKHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNlUG9pbnRzLmxlbmd0aCAvIDQ7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZVV2ID0gdm9pZCAwLFxuICAgICAgICAgIGRlc3RVdiA9IHZvaWQgMDtcblxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgc291cmNlVXYgPSBiYXNlUG9pbnRzLmxlbmd0aCAtIDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb3VyY2VVdiA9IGkgKiA0IC0gMjtcbiAgICAgIH1cblxuICAgICAgZGVzdFV2ID0gaSAqIDQgKyAyO1xuICAgICAgdmFyIHB4ID0gY2VudGVyWCArIGhhbGZXICogYmFzZVBvaW50c1tpICogNF07XG4gICAgICB2YXIgcHkgPSBjZW50ZXJZICsgaGFsZkggKiBiYXNlUG9pbnRzW2kgKiA0ICsgMV07XG4gICAgICB2YXIgY29zVGhldGEgPSAtYmFzZVBvaW50c1tzb3VyY2VVdl0gKiBiYXNlUG9pbnRzW2Rlc3RVdl0gLSBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV0gKiBiYXNlUG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2XTtcbiAgICAgIHZhciBjcDB5ID0gcHkgLSBvZmZzZXQgKiBiYXNlUG9pbnRzW3NvdXJjZVV2ICsgMV07XG4gICAgICB2YXIgY3AxeCA9IHB4ICsgb2Zmc2V0ICogYmFzZVBvaW50c1tkZXN0VXZdO1xuICAgICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIGxpbmVzW2Jhc2VQb2ludHMubGVuZ3RoIC0gMl0gPSBjcDB4O1xuICAgICAgICBsaW5lc1tiYXNlUG9pbnRzLmxlbmd0aCAtIDFdID0gY3AweTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpbmVzW2kgKiA0IC0gMl0gPSBjcDB4O1xuICAgICAgICBsaW5lc1tpICogNCAtIDFdID0gY3AweTtcbiAgICAgIH1cblxuICAgICAgbGluZXNbaSAqIDRdID0gY3AxeDtcbiAgICAgIGxpbmVzW2kgKiA0ICsgMV0gPSBjcDF5O1xuICAgICAgdmFyIG9ydGh4ID0gYmFzZVBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgICAgdmFyIG9ydGh5ID0gLWJhc2VQb2ludHNbc291cmNlVXZdO1xuICAgICAgdmFyIGNvc0FscGhhID0gb3J0aHggKiBiYXNlUG9pbnRzW2Rlc3RVdl0gKyBvcnRoeSAqIGJhc2VQb2ludHNbZGVzdFV2ICsgMV07XG5cbiAgICAgIGlmIChjb3NBbHBoYSA8IDApIHtcbiAgICAgICAgb3J0aHggKj0gLTE7XG4gICAgICAgIG9ydGh5ICo9IC0xO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3ggPSBjcDB4ICsgb3J0aHggKiBjb3JuZXJSYWRpdXM7XG4gICAgICB2YXIgY3kgPSBjcDB5ICsgb3J0aHkgKiBjb3JuZXJSYWRpdXM7XG4gICAgICBpbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3RMaW5lQ2lyY2xlKHgsIHksIGNlbnRlclgsIGNlbnRlclksIGN4LCBjeSwgY29ybmVyUmFkaXVzKTtcblxuICAgICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKGludGVyc2VjdGlvblswXSwgaW50ZXJzZWN0aW9uWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBsaW5lcy5sZW5ndGggLyA0OyBfaTMrKykge1xuICAgICAgaW50ZXJzZWN0aW9uID0gZmluaXRlTGluZXNJbnRlcnNlY3QoeCwgeSwgY2VudGVyWCwgY2VudGVyWSwgbGluZXNbX2kzICogNF0sIGxpbmVzW19pMyAqIDQgKyAxXSwgbGluZXNbX2kzICogNCArIDJdLCBsaW5lc1tfaTMgKiA0ICsgM10sIGZhbHNlKTtcblxuICAgICAgaWYgKGludGVyc2VjdGlvbi5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKGludGVyc2VjdGlvblswXSwgaW50ZXJzZWN0aW9uWzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW50ZXJzZWN0aW9ucy5sZW5ndGggPiAyKSB7XG4gICAgICB2YXIgbG93ZXN0SW50ZXJzZWN0aW9uID0gW2ludGVyc2VjdGlvbnNbMF0sIGludGVyc2VjdGlvbnNbMV1dO1xuICAgICAgdmFyIGxvd2VzdFNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGxvd2VzdEludGVyc2VjdGlvblswXSAtIHgsIDIpICsgTWF0aC5wb3cobG93ZXN0SW50ZXJzZWN0aW9uWzFdIC0geSwgMik7XG5cbiAgICAgIGZvciAodmFyIF9pNCA9IDE7IF9pNCA8IGludGVyc2VjdGlvbnMubGVuZ3RoIC8gMjsgX2k0KyspIHtcbiAgICAgICAgdmFyIHNxdWFyZWREaXN0YW5jZSA9IE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMl0gLSB4LCAyKSArIE1hdGgucG93KGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdIC0geSwgMik7XG5cbiAgICAgICAgaWYgKHNxdWFyZWREaXN0YW5jZSA8PSBsb3dlc3RTcXVhcmVkRGlzdGFuY2UpIHtcbiAgICAgICAgICBsb3dlc3RJbnRlcnNlY3Rpb25bMF0gPSBpbnRlcnNlY3Rpb25zW19pNCAqIDJdO1xuICAgICAgICAgIGxvd2VzdEludGVyc2VjdGlvblsxXSA9IGludGVyc2VjdGlvbnNbX2k0ICogMiArIDFdO1xuICAgICAgICAgIGxvd2VzdFNxdWFyZWREaXN0YW5jZSA9IHNxdWFyZWREaXN0YW5jZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbG93ZXN0SW50ZXJzZWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBpbnRlcnNlY3Rpb25zO1xuICB9O1xuICB2YXIgc2hvcnRlbkludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIHNob3J0ZW5JbnRlcnNlY3Rpb24oaW50ZXJzZWN0aW9uLCBvZmZzZXQsIGFtb3VudCkge1xuICAgIHZhciBkaXNwID0gW2ludGVyc2VjdGlvblswXSAtIG9mZnNldFswXSwgaW50ZXJzZWN0aW9uWzFdIC0gb2Zmc2V0WzFdXTtcbiAgICB2YXIgbGVuZ3RoID0gTWF0aC5zcXJ0KGRpc3BbMF0gKiBkaXNwWzBdICsgZGlzcFsxXSAqIGRpc3BbMV0pO1xuICAgIHZhciBsZW5SYXRpbyA9IChsZW5ndGggLSBhbW91bnQpIC8gbGVuZ3RoO1xuXG4gICAgaWYgKGxlblJhdGlvIDwgMCkge1xuICAgICAgbGVuUmF0aW8gPSAwLjAwMDAxO1xuICAgIH1cblxuICAgIHJldHVybiBbb2Zmc2V0WzBdICsgbGVuUmF0aW8gKiBkaXNwWzBdLCBvZmZzZXRbMV0gKyBsZW5SYXRpbyAqIGRpc3BbMV1dO1xuICB9O1xuICB2YXIgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlID0gZnVuY3Rpb24gZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKHNpZGVzLCByb3RhdGlvblJhZGlhbnMpIHtcbiAgICB2YXIgcG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyhzaWRlcywgcm90YXRpb25SYWRpYW5zKTtcbiAgICBwb2ludHMgPSBmaXRQb2x5Z29uVG9TcXVhcmUocG9pbnRzKTtcbiAgICByZXR1cm4gcG9pbnRzO1xuICB9O1xuICB2YXIgZml0UG9seWdvblRvU3F1YXJlID0gZnVuY3Rpb24gZml0UG9seWdvblRvU3F1YXJlKHBvaW50cykge1xuICAgIHZhciB4LCB5O1xuICAgIHZhciBzaWRlcyA9IHBvaW50cy5sZW5ndGggLyAyO1xuICAgIHZhciBtaW5YID0gSW5maW5pdHksXG4gICAgICAgIG1pblkgPSBJbmZpbml0eSxcbiAgICAgICAgbWF4WCA9IC1JbmZpbml0eSxcbiAgICAgICAgbWF4WSA9IC1JbmZpbml0eTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2lkZXM7IGkrKykge1xuICAgICAgeCA9IHBvaW50c1syICogaV07XG4gICAgICB5ID0gcG9pbnRzWzIgKiBpICsgMV07XG4gICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgeCk7XG4gICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG4gICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG4gICAgICBtYXhZID0gTWF0aC5tYXgobWF4WSwgeSk7XG4gICAgfSAvLyBzdHJldGNoIGZhY3RvcnNcblxuXG4gICAgdmFyIHN4ID0gMiAvIChtYXhYIC0gbWluWCk7XG4gICAgdmFyIHN5ID0gMiAvIChtYXhZIC0gbWluWSk7XG5cbiAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBzaWRlczsgX2k1KyspIHtcbiAgICAgIHggPSBwb2ludHNbMiAqIF9pNV0gPSBwb2ludHNbMiAqIF9pNV0gKiBzeDtcbiAgICAgIHkgPSBwb2ludHNbMiAqIF9pNSArIDFdID0gcG9pbnRzWzIgKiBfaTUgKyAxXSAqIHN5O1xuICAgICAgbWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuICAgICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHgpO1xuICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIHkpO1xuICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuICAgIH1cblxuICAgIGlmIChtaW5ZIDwgLTEpIHtcbiAgICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IHNpZGVzOyBfaTYrKykge1xuICAgICAgICB5ID0gcG9pbnRzWzIgKiBfaTYgKyAxXSA9IHBvaW50c1syICogX2k2ICsgMV0gKyAoLTEgLSBtaW5ZKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnRzO1xuICB9O1xuICB2YXIgZ2VuZXJhdGVVbml0TmdvblBvaW50cyA9IGZ1bmN0aW9uIGdlbmVyYXRlVW5pdE5nb25Qb2ludHMoc2lkZXMsIHJvdGF0aW9uUmFkaWFucykge1xuICAgIHZhciBpbmNyZW1lbnQgPSAxLjAgLyBzaWRlcyAqIDIgKiBNYXRoLlBJO1xuICAgIHZhciBzdGFydEFuZ2xlID0gc2lkZXMgJSAyID09PSAwID8gTWF0aC5QSSAvIDIuMCArIGluY3JlbWVudCAvIDIuMCA6IE1hdGguUEkgLyAyLjA7XG4gICAgc3RhcnRBbmdsZSArPSByb3RhdGlvblJhZGlhbnM7XG4gICAgdmFyIHBvaW50cyA9IG5ldyBBcnJheShzaWRlcyAqIDIpO1xuICAgIHZhciBjdXJyZW50QW5nbGU7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGVzOyBpKyspIHtcbiAgICAgIGN1cnJlbnRBbmdsZSA9IGkgKiBpbmNyZW1lbnQgKyBzdGFydEFuZ2xlO1xuICAgICAgcG9pbnRzWzIgKiBpXSA9IE1hdGguY29zKGN1cnJlbnRBbmdsZSk7IC8vIHhcblxuICAgICAgcG9pbnRzWzIgKiBpICsgMV0gPSBNYXRoLnNpbigtY3VycmVudEFuZ2xlKTsgLy8geVxuICAgIH1cblxuICAgIHJldHVybiBwb2ludHM7XG4gIH07IC8vIFNldCB0aGUgZGVmYXVsdCByYWRpdXMsIHVubGVzcyBoYWxmIG9mIHdpZHRoIG9yIGhlaWdodCBpcyBzbWFsbGVyIHRoYW4gZGVmYXVsdFxuXG4gIHZhciBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyA9IGZ1bmN0aW9uIGdldFJvdW5kUmVjdGFuZ2xlUmFkaXVzKHdpZHRoLCBoZWlnaHQpIHtcbiAgICByZXR1cm4gTWF0aC5taW4od2lkdGggLyA0LCBoZWlnaHQgLyA0LCA4KTtcbiAgfTsgLy8gU2V0IHRoZSBkZWZhdWx0IHJhZGl1c1xuXG4gIHZhciBnZXRSb3VuZFBvbHlnb25SYWRpdXMgPSBmdW5jdGlvbiBnZXRSb3VuZFBvbHlnb25SYWRpdXMod2lkdGgsIGhlaWdodCkge1xuICAgIHJldHVybiBNYXRoLm1pbih3aWR0aCAvIDEwLCBoZWlnaHQgLyAxMCwgOCk7XG4gIH07XG4gIHZhciBnZXRDdXRSZWN0YW5nbGVDb3JuZXJMZW5ndGggPSBmdW5jdGlvbiBnZXRDdXRSZWN0YW5nbGVDb3JuZXJMZW5ndGgoKSB7XG4gICAgcmV0dXJuIDg7XG4gIH07XG4gIHZhciBiZXppZXJQdHNUb1F1YWRDb2VmZiA9IGZ1bmN0aW9uIGJlemllclB0c1RvUXVhZENvZWZmKHAwLCBwMSwgcDIpIHtcbiAgICByZXR1cm4gW3AwIC0gMiAqIHAxICsgcDIsIDIgKiAocDEgLSBwMCksIHAwXTtcbiAgfTsgLy8gZ2V0IGN1cnZlIHdpZHRoLCBoZWlnaHQsIGFuZCBjb250cm9sIHBvaW50IHBvc2l0aW9uIG9mZnNldHMgYXMgYSBwZXJjZW50YWdlIG9mIG5vZGUgaGVpZ2h0IC8gd2lkdGhcblxuICB2YXIgZ2V0QmFycmVsQ3VydmVDb25zdGFudHMgPSBmdW5jdGlvbiBnZXRCYXJyZWxDdXJ2ZUNvbnN0YW50cyh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodE9mZnNldDogTWF0aC5taW4oMTUsIDAuMDUgKiBoZWlnaHQpLFxuICAgICAgd2lkdGhPZmZzZXQ6IE1hdGgubWluKDEwMCwgMC4yNSAqIHdpZHRoKSxcbiAgICAgIGN0cmxQdE9mZnNldFBjdDogMC4wNVxuICAgIH07XG4gIH07XG5cbiAgdmFyIHBhZ2VSYW5rRGVmYXVsdHMgPSBkZWZhdWx0cyRnKHtcbiAgICBkYW1waW5nRmFjdG9yOiAwLjgsXG4gICAgcHJlY2lzaW9uOiAwLjAwMDAwMSxcbiAgICBpdGVyYXRpb25zOiAyMDAsXG4gICAgd2VpZ2h0OiBmdW5jdGlvbiB3ZWlnaHQoZWRnZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9KTtcbiAgdmFyIGVsZXNmbiRvID0ge1xuICAgIHBhZ2VSYW5rOiBmdW5jdGlvbiBwYWdlUmFuayhvcHRpb25zKSB7XG4gICAgICB2YXIgX3BhZ2VSYW5rRGVmYXVsdHMgPSBwYWdlUmFua0RlZmF1bHRzKG9wdGlvbnMpLFxuICAgICAgICAgIGRhbXBpbmdGYWN0b3IgPSBfcGFnZVJhbmtEZWZhdWx0cy5kYW1waW5nRmFjdG9yLFxuICAgICAgICAgIHByZWNpc2lvbiA9IF9wYWdlUmFua0RlZmF1bHRzLnByZWNpc2lvbixcbiAgICAgICAgICBpdGVyYXRpb25zID0gX3BhZ2VSYW5rRGVmYXVsdHMuaXRlcmF0aW9ucyxcbiAgICAgICAgICB3ZWlnaHQgPSBfcGFnZVJhbmtEZWZhdWx0cy53ZWlnaHQ7XG5cbiAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICAgIHZhciBfdGhpcyRieUdyb3VwID0gdGhpcy5ieUdyb3VwKCksXG4gICAgICAgICAgbm9kZXMgPSBfdGhpcyRieUdyb3VwLm5vZGVzLFxuICAgICAgICAgIGVkZ2VzID0gX3RoaXMkYnlHcm91cC5lZGdlcztcblxuICAgICAgdmFyIG51bU5vZGVzID0gbm9kZXMubGVuZ3RoO1xuICAgICAgdmFyIG51bU5vZGVzU3FkID0gbnVtTm9kZXMgKiBudW1Ob2RlcztcbiAgICAgIHZhciBudW1FZGdlcyA9IGVkZ2VzLmxlbmd0aDsgLy8gQ29uc3RydWN0IHRyYW5zcG9zZWQgYWRqYWNlbmN5IG1hdHJpeFxuICAgICAgLy8gRmlyc3QgbGV0cyBoYXZlIGEgemVyb2VkIG1hdHJpeCBvZiB0aGUgcmlnaHQgc2l6ZVxuICAgICAgLy8gV2UnbGwgYWxzbyBrZWVwIHRyYWNrIG9mIHRoZSBzdW0gb2YgZWFjaCBjb2x1bW5cblxuICAgICAgdmFyIG1hdHJpeCA9IG5ldyBBcnJheShudW1Ob2Rlc1NxZCk7XG4gICAgICB2YXIgY29sdW1uU3VtID0gbmV3IEFycmF5KG51bU5vZGVzKTtcbiAgICAgIHZhciBhZGRpdGlvbmFsUHJvYiA9ICgxIC0gZGFtcGluZ0ZhY3RvcikgLyBudW1Ob2RlczsgLy8gQ3JlYXRlIG51bGwgbWF0cml4XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bU5vZGVzOyBqKyspIHtcbiAgICAgICAgICB2YXIgbiA9IGkgKiBudW1Ob2RlcyArIGo7XG4gICAgICAgICAgbWF0cml4W25dID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtblN1bVtpXSA9IDA7XG4gICAgICB9IC8vIE5vdywgcHJvY2VzcyBlZGdlc1xuXG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBudW1FZGdlczsgX2krKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW19pXTtcbiAgICAgICAgdmFyIHNyY0lkID0gZWRnZS5kYXRhKCdzb3VyY2UnKTtcbiAgICAgICAgdmFyIHRndElkID0gZWRnZS5kYXRhKCd0YXJnZXQnKTsgLy8gRG9uJ3QgaW5jbHVkZSBsb29wcyBpbiB0aGUgbWF0cml4XG5cbiAgICAgICAgaWYgKHNyY0lkID09PSB0Z3RJZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHMgPSBub2Rlcy5pbmRleE9mSWQoc3JjSWQpO1xuICAgICAgICB2YXIgdCA9IG5vZGVzLmluZGV4T2ZJZCh0Z3RJZCk7XG4gICAgICAgIHZhciB3ID0gd2VpZ2h0KGVkZ2UpO1xuXG4gICAgICAgIHZhciBfbiA9IHQgKiBudW1Ob2RlcyArIHM7IC8vIFVwZGF0ZSBtYXRyaXhcblxuXG4gICAgICAgIG1hdHJpeFtfbl0gKz0gdzsgLy8gVXBkYXRlIGNvbHVtbiBzdW1cblxuICAgICAgICBjb2x1bW5TdW1bc10gKz0gdztcbiAgICAgIH0gLy8gQWRkIGFkZGl0aW9uYWwgcHJvYmFiaWxpdHkgYmFzZWQgb24gZGFtcGluZyBmYWN0b3JcbiAgICAgIC8vIEFsc28sIHRha2UgaW50byBhY2NvdW50IGNvbHVtbnMgdGhhdCBoYXZlIHN1bSA9IDBcblxuXG4gICAgICB2YXIgcCA9IDEuMCAvIG51bU5vZGVzICsgYWRkaXRpb25hbFByb2I7IC8vIFNob3J0aGFuZFxuICAgICAgLy8gVHJhdmVyc2UgbWF0cml4LCBjb2x1bW4gYnkgY29sdW1uXG5cbiAgICAgIGZvciAodmFyIF9qID0gMDsgX2ogPCBudW1Ob2RlczsgX2orKykge1xuICAgICAgICBpZiAoY29sdW1uU3VtW19qXSA9PT0gMCkge1xuICAgICAgICAgIC8vIE5vICdsaW5rcycgb3V0IGZyb20gbm9kZSBqdGgsIGFzc3VtZSBlcXVhbCBwcm9iYWJpbGl0eSBmb3IgZWFjaCBwb3NzaWJsZSBub2RlXG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbnVtTm9kZXM7IF9pMisrKSB7XG4gICAgICAgICAgICB2YXIgX24yID0gX2kyICogbnVtTm9kZXMgKyBfajtcblxuICAgICAgICAgICAgbWF0cml4W19uMl0gPSBwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBOb2RlIGp0aCBoYXMgb3V0Z29pbmcgbGluaywgY29tcHV0ZSBub3JtYWxpemVkIHByb2JhYmlsaXRpZXNcbiAgICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBudW1Ob2RlczsgX2kzKyspIHtcbiAgICAgICAgICAgIHZhciBfbjMgPSBfaTMgKiBudW1Ob2RlcyArIF9qO1xuXG4gICAgICAgICAgICBtYXRyaXhbX24zXSA9IG1hdHJpeFtfbjNdIC8gY29sdW1uU3VtW19qXSArIGFkZGl0aW9uYWxQcm9iO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyBDb21wdXRlIGRvbWluYW50IGVpZ2VudmVjdG9yIHVzaW5nIHBvd2VyIG1ldGhvZFxuXG5cbiAgICAgIHZhciBlaWdlbnZlY3RvciA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgICB2YXIgdGVtcCA9IG5ldyBBcnJheShudW1Ob2Rlcyk7XG4gICAgICB2YXIgcHJldmlvdXM7IC8vIFN0YXJ0IHdpdGggYSB2ZWN0b3Igb2YgYWxsIDEnc1xuICAgICAgLy8gQWxzbywgaW5pdGlhbGl6ZSBhIG51bGwgdmVjdG9yIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyBzaG9ydGhhbmRcblxuICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDwgbnVtTm9kZXM7IF9pNCsrKSB7XG4gICAgICAgIGVpZ2VudmVjdG9yW19pNF0gPSAxO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpdGVyID0gMDsgaXRlciA8IGl0ZXJhdGlvbnM7IGl0ZXIrKykge1xuICAgICAgICAvLyBUZW1wIGFycmF5IHdpdGggYWxsIDAnc1xuICAgICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBudW1Ob2RlczsgX2k1KyspIHtcbiAgICAgICAgICB0ZW1wW19pNV0gPSAwO1xuICAgICAgICB9IC8vIE11bHRpcGx5IG1hdHJpeCB3aXRoIHByZXZpb3VzIHJlc3VsdFxuXG5cbiAgICAgICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbnVtTm9kZXM7IF9pNisrKSB7XG4gICAgICAgICAgZm9yICh2YXIgX2oyID0gMDsgX2oyIDwgbnVtTm9kZXM7IF9qMisrKSB7XG4gICAgICAgICAgICB2YXIgX240ID0gX2k2ICogbnVtTm9kZXMgKyBfajI7XG5cbiAgICAgICAgICAgIHRlbXBbX2k2XSArPSBtYXRyaXhbX240XSAqIGVpZ2VudmVjdG9yW19qMl07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5QbGFjZVN1bU5vcm1hbGl6ZSh0ZW1wKTtcbiAgICAgICAgcHJldmlvdXMgPSBlaWdlbnZlY3RvcjtcbiAgICAgICAgZWlnZW52ZWN0b3IgPSB0ZW1wO1xuICAgICAgICB0ZW1wID0gcHJldmlvdXM7XG4gICAgICAgIHZhciBkaWZmID0gMDsgLy8gQ29tcHV0ZSBkaWZmZXJlbmNlIChzcXVhcmVkIG1vZHVsZSkgb2YgYm90aCB2ZWN0b3JzXG5cbiAgICAgICAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgbnVtTm9kZXM7IF9pNysrKSB7XG4gICAgICAgICAgdmFyIGRlbHRhID0gcHJldmlvdXNbX2k3XSAtIGVpZ2VudmVjdG9yW19pN107XG4gICAgICAgICAgZGlmZiArPSBkZWx0YSAqIGRlbHRhO1xuICAgICAgICB9IC8vIElmIGRpZmZlcmVuY2UgaXMgbGVzcyB0aGFuIHRoZSBkZXNpcmVkIHRocmVzaG9sZCwgc3RvcCBpdGVyYXRpbmdcblxuXG4gICAgICAgIGlmIChkaWZmIDwgcHJlY2lzaW9uKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gQ29uc3RydWN0IHJlc3VsdFxuXG5cbiAgICAgIHZhciByZXMgPSB7XG4gICAgICAgIHJhbms6IGZ1bmN0aW9uIHJhbmsobm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBjeS5jb2xsZWN0aW9uKG5vZGUpWzBdO1xuICAgICAgICAgIHJldHVybiBlaWdlbnZlY3Rvcltub2Rlcy5pbmRleE9mKG5vZGUpXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSAvLyBwYWdlUmFua1xuXG4gIH07IC8vIGVsZXNmblxuXG4gIHZhciBkZWZhdWx0cyRmID0gZGVmYXVsdHMkZyh7XG4gICAgcm9vdDogbnVsbCxcbiAgICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodChlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9LFxuICAgIGRpcmVjdGVkOiBmYWxzZSxcbiAgICBhbHBoYTogMFxuICB9KTtcbiAgdmFyIGVsZXNmbiRuID0ge1xuICAgIGRlZ3JlZUNlbnRyYWxpdHlOb3JtYWxpemVkOiBmdW5jdGlvbiBkZWdyZWVDZW50cmFsaXR5Tm9ybWFsaXplZChvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdHMkZihvcHRpb25zKTtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICAgIHZhciBudW1Ob2RlcyA9IG5vZGVzLmxlbmd0aDtcblxuICAgICAgaWYgKCFvcHRpb25zLmRpcmVjdGVkKSB7XG4gICAgICAgIHZhciBkZWdyZWVzID0ge307XG4gICAgICAgIHZhciBtYXhEZWdyZWUgPSAwO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTm9kZXM7IGkrKykge1xuICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07IC8vIGFkZCBjdXJyZW50IG5vZGUgdG8gdGhlIGN1cnJlbnQgb3B0aW9ucyBvYmplY3QgYW5kIGNhbGwgZGVncmVlQ2VudHJhbGl0eVxuXG4gICAgICAgICAgb3B0aW9ucy5yb290ID0gbm9kZTtcbiAgICAgICAgICB2YXIgY3VyckRlZ3JlZSA9IHRoaXMuZGVncmVlQ2VudHJhbGl0eShvcHRpb25zKTtcblxuICAgICAgICAgIGlmIChtYXhEZWdyZWUgPCBjdXJyRGVncmVlLmRlZ3JlZSkge1xuICAgICAgICAgICAgbWF4RGVncmVlID0gY3VyckRlZ3JlZS5kZWdyZWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlc1tub2RlLmlkKCldID0gY3VyckRlZ3JlZS5kZWdyZWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlZ3JlZTogZnVuY3Rpb24gZGVncmVlKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChtYXhEZWdyZWUgPT09IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdHJpbmcobm9kZSkpIHtcbiAgICAgICAgICAgICAgLy8gZnJvbSBpcyBhIHNlbGVjdG9yIHN0cmluZ1xuICAgICAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVncmVlc1tub2RlLmlkKCldIC8gbWF4RGVncmVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBpbmRlZ3JlZXMgPSB7fTtcbiAgICAgICAgdmFyIG91dGRlZ3JlZXMgPSB7fTtcbiAgICAgICAgdmFyIG1heEluZGVncmVlID0gMDtcbiAgICAgICAgdmFyIG1heE91dGRlZ3JlZSA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG51bU5vZGVzOyBfaSsrKSB7XG4gICAgICAgICAgdmFyIF9ub2RlID0gbm9kZXNbX2ldO1xuXG4gICAgICAgICAgdmFyIGlkID0gX25vZGUuaWQoKTsgLy8gYWRkIGN1cnJlbnQgbm9kZSB0byB0aGUgY3VycmVudCBvcHRpb25zIG9iamVjdCBhbmQgY2FsbCBkZWdyZWVDZW50cmFsaXR5XG5cblxuICAgICAgICAgIG9wdGlvbnMucm9vdCA9IF9ub2RlO1xuXG4gICAgICAgICAgdmFyIF9jdXJyRGVncmVlID0gdGhpcy5kZWdyZWVDZW50cmFsaXR5KG9wdGlvbnMpO1xuXG4gICAgICAgICAgaWYgKG1heEluZGVncmVlIDwgX2N1cnJEZWdyZWUuaW5kZWdyZWUpIG1heEluZGVncmVlID0gX2N1cnJEZWdyZWUuaW5kZWdyZWU7XG4gICAgICAgICAgaWYgKG1heE91dGRlZ3JlZSA8IF9jdXJyRGVncmVlLm91dGRlZ3JlZSkgbWF4T3V0ZGVncmVlID0gX2N1cnJEZWdyZWUub3V0ZGVncmVlO1xuICAgICAgICAgIGluZGVncmVlc1tpZF0gPSBfY3VyckRlZ3JlZS5pbmRlZ3JlZTtcbiAgICAgICAgICBvdXRkZWdyZWVzW2lkXSA9IF9jdXJyRGVncmVlLm91dGRlZ3JlZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZWdyZWU6IGZ1bmN0aW9uIGluZGVncmVlKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChtYXhJbmRlZ3JlZSA9PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICAgICAgbm9kZSA9IGN5LmZpbHRlcihub2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGluZGVncmVlc1tub2RlLmlkKCldIC8gbWF4SW5kZWdyZWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvdXRkZWdyZWU6IGZ1bmN0aW9uIG91dGRlZ3JlZShub2RlKSB7XG4gICAgICAgICAgICBpZiAobWF4T3V0ZGVncmVlID09PSAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAgIC8vIGZyb20gaXMgYSBzZWxlY3RvciBzdHJpbmdcbiAgICAgICAgICAgICAgbm9kZSA9IGN5LmZpbHRlcihub2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG91dGRlZ3JlZXNbbm9kZS5pZCgpXSAvIG1heE91dGRlZ3JlZTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyBkZWdyZWVDZW50cmFsaXR5Tm9ybWFsaXplZFxuICAgIC8vIEltcGxlbWVudGVkIGZyb20gdGhlIGFsZ29yaXRobSBpbiBPcHNhaGwncyBwYXBlclxuICAgIC8vIFwiTm9kZSBjZW50cmFsaXR5IGluIHdlaWdodGVkIG5ldHdvcmtzOiBHZW5lcmFsaXppbmcgZGVncmVlIGFuZCBzaG9ydGVzdCBwYXRoc1wiXG4gICAgLy8gY2hlY2sgdGhlIGhlYWRpbmcgMiBcIkRlZ3JlZVwiXG4gICAgZGVncmVlQ2VudHJhbGl0eTogZnVuY3Rpb24gZGVncmVlQ2VudHJhbGl0eShvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdHMkZihvcHRpb25zKTtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIHZhciBjYWxsaW5nRWxlcyA9IHRoaXM7XG4gICAgICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgICAgIHJvb3QgPSBfb3B0aW9ucy5yb290LFxuICAgICAgICAgIHdlaWdodCA9IF9vcHRpb25zLndlaWdodCxcbiAgICAgICAgICBkaXJlY3RlZCA9IF9vcHRpb25zLmRpcmVjdGVkLFxuICAgICAgICAgIGFscGhhID0gX29wdGlvbnMuYWxwaGE7XG4gICAgICByb290ID0gY3kuY29sbGVjdGlvbihyb290KVswXTtcblxuICAgICAgaWYgKCFkaXJlY3RlZCkge1xuICAgICAgICB2YXIgY29ubkVkZ2VzID0gcm9vdC5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihjYWxsaW5nRWxlcyk7XG4gICAgICAgIHZhciBrID0gY29ubkVkZ2VzLmxlbmd0aDtcbiAgICAgICAgdmFyIHMgPSAwOyAvLyBOb3csIHN1bSBlZGdlIHdlaWdodHNcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbm5FZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHMgKz0gd2VpZ2h0KGNvbm5FZGdlc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlZ3JlZTogTWF0aC5wb3coaywgMSAtIGFscGhhKSAqIE1hdGgucG93KHMsIGFscGhhKVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVkZ2VzID0gcm9vdC5jb25uZWN0ZWRFZGdlcygpO1xuICAgICAgICB2YXIgaW5jb21pbmcgPSBlZGdlcy5maWx0ZXIoZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZWRnZS50YXJnZXQoKS5zYW1lKHJvb3QpICYmIGNhbGxpbmdFbGVzLmhhcyhlZGdlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBvdXRnb2luZyA9IGVkZ2VzLmZpbHRlcihmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHJldHVybiBlZGdlLnNvdXJjZSgpLnNhbWUocm9vdCkgJiYgY2FsbGluZ0VsZXMuaGFzKGVkZ2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGtfaW4gPSBpbmNvbWluZy5sZW5ndGg7XG4gICAgICAgIHZhciBrX291dCA9IG91dGdvaW5nLmxlbmd0aDtcbiAgICAgICAgdmFyIHNfaW4gPSAwO1xuICAgICAgICB2YXIgc19vdXQgPSAwOyAvLyBOb3csIHN1bSBpbmNvbWluZyBlZGdlIHdlaWdodHNcblxuICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBpbmNvbWluZy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgc19pbiArPSB3ZWlnaHQoaW5jb21pbmdbX2kyXSk7XG4gICAgICAgIH0gLy8gTm93LCBzdW0gb3V0Z29pbmcgZWRnZSB3ZWlnaHRzXG5cblxuICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBvdXRnb2luZy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAgICAgc19vdXQgKz0gd2VpZ2h0KG91dGdvaW5nW19pM10pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbmRlZ3JlZTogTWF0aC5wb3coa19pbiwgMSAtIGFscGhhKSAqIE1hdGgucG93KHNfaW4sIGFscGhhKSxcbiAgICAgICAgICBvdXRkZWdyZWU6IE1hdGgucG93KGtfb3V0LCAxIC0gYWxwaGEpICogTWF0aC5wb3coc19vdXQsIGFscGhhKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gLy8gZGVncmVlQ2VudHJhbGl0eVxuXG4gIH07IC8vIGVsZXNmblxuICAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGljYWwgYWxpYXNcblxuICBlbGVzZm4kbi5kYyA9IGVsZXNmbiRuLmRlZ3JlZUNlbnRyYWxpdHk7XG4gIGVsZXNmbiRuLmRjbiA9IGVsZXNmbiRuLmRlZ3JlZUNlbnRyYWxpdHlOb3JtYWxpc2VkID0gZWxlc2ZuJG4uZGVncmVlQ2VudHJhbGl0eU5vcm1hbGl6ZWQ7XG5cbiAgdmFyIGRlZmF1bHRzJGUgPSBkZWZhdWx0cyRnKHtcbiAgICBoYXJtb25pYzogdHJ1ZSxcbiAgICB3ZWlnaHQ6IGZ1bmN0aW9uIHdlaWdodCgpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0sXG4gICAgZGlyZWN0ZWQ6IGZhbHNlLFxuICAgIHJvb3Q6IG51bGxcbiAgfSk7XG4gIHZhciBlbGVzZm4kbSA9IHtcbiAgICBjbG9zZW5lc3NDZW50cmFsaXR5Tm9ybWFsaXplZDogZnVuY3Rpb24gY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGl6ZWQob3B0aW9ucykge1xuICAgICAgdmFyIF9kZWZhdWx0cyA9IGRlZmF1bHRzJGUob3B0aW9ucyksXG4gICAgICAgICAgaGFybW9uaWMgPSBfZGVmYXVsdHMuaGFybW9uaWMsXG4gICAgICAgICAgd2VpZ2h0ID0gX2RlZmF1bHRzLndlaWdodCxcbiAgICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0cy5kaXJlY3RlZDtcblxuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgdmFyIGNsb3NlbmVzc2VzID0ge307XG4gICAgICB2YXIgbWF4Q2xvc2VuZXNzID0gMDtcbiAgICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICAgIHZhciBmdyA9IHRoaXMuZmxveWRXYXJzaGFsbCh7XG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgICAgIH0pOyAvLyBDb21wdXRlIGNsb3NlbmVzcyBmb3IgZXZlcnkgbm9kZSBhbmQgZmluZCB0aGUgbWF4aW11bSBjbG9zZW5lc3NcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3VyckNsb3NlbmVzcyA9IDA7XG4gICAgICAgIHZhciBub2RlX2kgPSBub2Rlc1tpXTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vZGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgaWYgKGkgIT09IGopIHtcbiAgICAgICAgICAgIHZhciBkID0gZncuZGlzdGFuY2Uobm9kZV9pLCBub2Rlc1tqXSk7XG5cbiAgICAgICAgICAgIGlmIChoYXJtb25pYykge1xuICAgICAgICAgICAgICBjdXJyQ2xvc2VuZXNzICs9IDEgLyBkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY3VyckNsb3NlbmVzcyArPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFybW9uaWMpIHtcbiAgICAgICAgICBjdXJyQ2xvc2VuZXNzID0gMSAvIGN1cnJDbG9zZW5lc3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWF4Q2xvc2VuZXNzIDwgY3VyckNsb3NlbmVzcykge1xuICAgICAgICAgIG1heENsb3NlbmVzcyA9IGN1cnJDbG9zZW5lc3M7XG4gICAgICAgIH1cblxuICAgICAgICBjbG9zZW5lc3Nlc1tub2RlX2kuaWQoKV0gPSBjdXJyQ2xvc2VuZXNzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbG9zZW5lc3M6IGZ1bmN0aW9uIGNsb3NlbmVzcyhub2RlKSB7XG4gICAgICAgICAgaWYgKG1heENsb3NlbmVzcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RyaW5nKG5vZGUpKSB7XG4gICAgICAgICAgICAvLyBmcm9tIGlzIGEgc2VsZWN0b3Igc3RyaW5nXG4gICAgICAgICAgICBub2RlID0gY3kuZmlsdGVyKG5vZGUpWzBdLmlkKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGZyb20gaXMgYSBub2RlXG4gICAgICAgICAgICBub2RlID0gbm9kZS5pZCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjbG9zZW5lc3Nlc1tub2RlXSAvIG1heENsb3NlbmVzcztcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIC8vIEltcGxlbWVudGVkIGZyb20gcHNldWRvY29kZSBmcm9tIHdpa2lwZWRpYVxuICAgIGNsb3NlbmVzc0NlbnRyYWxpdHk6IGZ1bmN0aW9uIGNsb3NlbmVzc0NlbnRyYWxpdHkob3B0aW9ucykge1xuICAgICAgdmFyIF9kZWZhdWx0czIgPSBkZWZhdWx0cyRlKG9wdGlvbnMpLFxuICAgICAgICAgIHJvb3QgPSBfZGVmYXVsdHMyLnJvb3QsXG4gICAgICAgICAgd2VpZ2h0ID0gX2RlZmF1bHRzMi53ZWlnaHQsXG4gICAgICAgICAgZGlyZWN0ZWQgPSBfZGVmYXVsdHMyLmRpcmVjdGVkLFxuICAgICAgICAgIGhhcm1vbmljID0gX2RlZmF1bHRzMi5oYXJtb25pYztcblxuICAgICAgcm9vdCA9IHRoaXMuZmlsdGVyKHJvb3QpWzBdOyAvLyB3ZSBuZWVkIGRpc3RhbmNlIGZyb20gdGhpcyBub2RlIHRvIGV2ZXJ5IG90aGVyIG5vZGVcblxuICAgICAgdmFyIGRpamtzdHJhID0gdGhpcy5kaWprc3RyYSh7XG4gICAgICAgIHJvb3Q6IHJvb3QsXG4gICAgICAgIHdlaWdodDogd2VpZ2h0LFxuICAgICAgICBkaXJlY3RlZDogZGlyZWN0ZWRcbiAgICAgIH0pO1xuICAgICAgdmFyIHRvdGFsRGlzdGFuY2UgPSAwO1xuICAgICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuID0gbm9kZXNbaV07XG5cbiAgICAgICAgaWYgKCFuLnNhbWUocm9vdCkpIHtcbiAgICAgICAgICB2YXIgZCA9IGRpamtzdHJhLmRpc3RhbmNlVG8obik7XG5cbiAgICAgICAgICBpZiAoaGFybW9uaWMpIHtcbiAgICAgICAgICAgIHRvdGFsRGlzdGFuY2UgKz0gMSAvIGQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvdGFsRGlzdGFuY2UgKz0gZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhhcm1vbmljID8gdG90YWxEaXN0YW5jZSA6IDEgLyB0b3RhbERpc3RhbmNlO1xuICAgIH0gLy8gY2xvc2VuZXNzQ2VudHJhbGl0eVxuXG4gIH07IC8vIGVsZXNmblxuICAvLyBuaWNlLCBzaG9ydCBtYXRoZW1hdGljYWwgYWxpYXNcblxuICBlbGVzZm4kbS5jYyA9IGVsZXNmbiRtLmNsb3NlbmVzc0NlbnRyYWxpdHk7XG4gIGVsZXNmbiRtLmNjbiA9IGVsZXNmbiRtLmNsb3NlbmVzc0NlbnRyYWxpdHlOb3JtYWxpc2VkID0gZWxlc2ZuJG0uY2xvc2VuZXNzQ2VudHJhbGl0eU5vcm1hbGl6ZWQ7XG5cbiAgdmFyIGRlZmF1bHRzJGQgPSBkZWZhdWx0cyRnKHtcbiAgICB3ZWlnaHQ6IG51bGwsXG4gICAgZGlyZWN0ZWQ6IGZhbHNlXG4gIH0pO1xuICB2YXIgZWxlc2ZuJGwgPSB7XG4gICAgLy8gSW1wbGVtZW50ZWQgZnJvbSB0aGUgYWxnb3JpdGhtIGluIHRoZSBwYXBlciBcIk9uIFZhcmlhbnRzIG9mIFNob3J0ZXN0LVBhdGggQmV0d2Vlbm5lc3MgQ2VudHJhbGl0eSBhbmQgdGhlaXIgR2VuZXJpYyBDb21wdXRhdGlvblwiIGJ5IFVscmlrIEJyYW5kZXNcbiAgICBiZXR3ZWVubmVzc0NlbnRyYWxpdHk6IGZ1bmN0aW9uIGJldHdlZW5uZXNzQ2VudHJhbGl0eShvcHRpb25zKSB7XG4gICAgICB2YXIgX2RlZmF1bHRzID0gZGVmYXVsdHMkZChvcHRpb25zKSxcbiAgICAgICAgICBkaXJlY3RlZCA9IF9kZWZhdWx0cy5kaXJlY3RlZCxcbiAgICAgICAgICB3ZWlnaHQgPSBfZGVmYXVsdHMud2VpZ2h0O1xuXG4gICAgICB2YXIgd2VpZ2h0ZWQgPSB3ZWlnaHQgIT0gbnVsbDtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gc3RhcnRpbmdcblxuICAgICAgdmFyIFYgPSB0aGlzLm5vZGVzKCk7XG4gICAgICB2YXIgQSA9IHt9O1xuICAgICAgdmFyIF9DID0ge307XG4gICAgICB2YXIgbWF4ID0gMDtcbiAgICAgIHZhciBDID0ge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbCkge1xuICAgICAgICAgIF9DW2tleV0gPSB2YWw7XG5cbiAgICAgICAgICBpZiAodmFsID4gbWF4KSB7XG4gICAgICAgICAgICBtYXggPSB2YWw7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgICByZXR1cm4gX0Nba2V5XTtcbiAgICAgICAgfVxuICAgICAgfTsgLy8gQSBjb250YWlucyB0aGUgbmVpZ2hib3Job29kcyBvZiBldmVyeSBub2RlXG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgVi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdiA9IFZbaV07XG4gICAgICAgIHZhciB2aWQgPSB2LmlkKCk7XG5cbiAgICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgICAgQVt2aWRdID0gdi5vdXRnb2VycygpLm5vZGVzKCk7IC8vIGdldCBvdXRnb2VycyBvZiBldmVyeSBub2RlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQVt2aWRdID0gdi5vcGVuTmVpZ2hib3Job29kKCkubm9kZXMoKTsgLy8gZ2V0IG5laWdoYm9ycyBvZiBldmVyeSBub2RlXG4gICAgICAgIH1cblxuICAgICAgICBDLnNldCh2aWQsIDApO1xuICAgICAgfVxuXG4gICAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChzKSB7XG4gICAgICAgIHZhciBzaWQgPSBWW3NdLmlkKCk7XG4gICAgICAgIHZhciBTID0gW107IC8vIHN0YWNrXG5cbiAgICAgICAgdmFyIFAgPSB7fTtcbiAgICAgICAgdmFyIGcgPSB7fTtcbiAgICAgICAgdmFyIGQgPSB7fTtcbiAgICAgICAgdmFyIFEgPSBuZXcgaGVhcChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgIHJldHVybiBkW2FdIC0gZFtiXTtcbiAgICAgICAgfSk7IC8vIHF1ZXVlXG4gICAgICAgIC8vIGluaXQgZGljdGlvbmFyaWVzXG5cbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IFYubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgdmFyIF92aWQgPSBWW19pXS5pZCgpO1xuXG4gICAgICAgICAgUFtfdmlkXSA9IFtdO1xuICAgICAgICAgIGdbX3ZpZF0gPSAwO1xuICAgICAgICAgIGRbX3ZpZF0gPSBJbmZpbml0eTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdbc2lkXSA9IDE7IC8vIHNpZ21hXG5cbiAgICAgICAgZFtzaWRdID0gMDsgLy8gZGlzdGFuY2UgdG8gc1xuXG4gICAgICAgIFEucHVzaChzaWQpO1xuXG4gICAgICAgIHdoaWxlICghUS5lbXB0eSgpKSB7XG4gICAgICAgICAgdmFyIF92ID0gUS5wb3AoKTtcblxuICAgICAgICAgIFMucHVzaChfdik7XG5cbiAgICAgICAgICBpZiAod2VpZ2h0ZWQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgQVtfdl0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIHcgPSBBW192XVtqXTtcbiAgICAgICAgICAgICAgdmFyIHZFbGUgPSBjeS5nZXRFbGVtZW50QnlJZChfdik7XG4gICAgICAgICAgICAgIHZhciBlZGdlID0gdm9pZCAwO1xuXG4gICAgICAgICAgICAgIGlmICh2RWxlLmVkZ2VzVG8odykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGVkZ2UgPSB2RWxlLmVkZ2VzVG8odylbMF07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWRnZSA9IHcuZWRnZXNUbyh2RWxlKVswXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHZhciBlZGdlV2VpZ2h0ID0gd2VpZ2h0KGVkZ2UpO1xuICAgICAgICAgICAgICB3ID0gdy5pZCgpO1xuXG4gICAgICAgICAgICAgIGlmIChkW3ddID4gZFtfdl0gKyBlZGdlV2VpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZFt3XSA9IGRbX3ZdICsgZWRnZVdlaWdodDtcblxuICAgICAgICAgICAgICAgIGlmIChRLm5vZGVzLmluZGV4T2YodykgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAvL2lmIHcgaXMgbm90IGluIFFcbiAgICAgICAgICAgICAgICAgIFEucHVzaCh3KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHBvc2l0aW9uIGlmIHcgaXMgaW4gUVxuICAgICAgICAgICAgICAgICAgUS51cGRhdGVJdGVtKHcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGdbd10gPSAwO1xuICAgICAgICAgICAgICAgIFBbd10gPSBbXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChkW3ddID09IGRbX3ZdICsgZWRnZVdlaWdodCkge1xuICAgICAgICAgICAgICAgIGdbd10gPSBnW3ddICsgZ1tfdl07XG4gICAgICAgICAgICAgICAgUFt3XS5wdXNoKF92KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgQVtfdl0ubGVuZ3RoOyBfaisrKSB7XG4gICAgICAgICAgICAgIHZhciBfdyA9IEFbX3ZdW19qXS5pZCgpO1xuXG4gICAgICAgICAgICAgIGlmIChkW193XSA9PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgIFEucHVzaChfdyk7XG4gICAgICAgICAgICAgICAgZFtfd10gPSBkW192XSArIDE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoZFtfd10gPT0gZFtfdl0gKyAxKSB7XG4gICAgICAgICAgICAgICAgZ1tfd10gPSBnW193XSArIGdbX3ZdO1xuXG4gICAgICAgICAgICAgICAgUFtfd10ucHVzaChfdik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZSA9IHt9O1xuXG4gICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IFYubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgIGVbVltfaTJdLmlkKCldID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChTLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgX3cyID0gUy5wb3AoKTtcblxuICAgICAgICAgIGZvciAodmFyIF9qMiA9IDA7IF9qMiA8IFBbX3cyXS5sZW5ndGg7IF9qMisrKSB7XG4gICAgICAgICAgICB2YXIgX3YyID0gUFtfdzJdW19qMl07XG4gICAgICAgICAgICBlW192Ml0gPSBlW192Ml0gKyBnW192Ml0gLyBnW193Ml0gKiAoMSArIGVbX3cyXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF93MiAhPSBWW3NdLmlkKCkpIHtcbiAgICAgICAgICAgIEMuc2V0KF93MiwgQy5nZXQoX3cyKSArIGVbX3cyXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBzID0gMDsgcyA8IFYubGVuZ3RoOyBzKyspIHtcbiAgICAgICAgX2xvb3Aocyk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXQgPSB7XG4gICAgICAgIGJldHdlZW5uZXNzOiBmdW5jdGlvbiBiZXR3ZWVubmVzcyhub2RlKSB7XG4gICAgICAgICAgdmFyIGlkID0gY3kuY29sbGVjdGlvbihub2RlKS5pZCgpO1xuICAgICAgICAgIHJldHVybiBDLmdldChpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGJldHdlZW5uZXNzTm9ybWFsaXplZDogZnVuY3Rpb24gYmV0d2Vlbm5lc3NOb3JtYWxpemVkKG5vZGUpIHtcbiAgICAgICAgICBpZiAobWF4ID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBpZCA9IGN5LmNvbGxlY3Rpb24obm9kZSkuaWQoKTtcbiAgICAgICAgICByZXR1cm4gQy5nZXQoaWQpIC8gbWF4O1xuICAgICAgICB9XG4gICAgICB9OyAvLyBhbGlhc1xuXG4gICAgICByZXQuYmV0d2Vlbm5lc3NOb3JtYWxpc2VkID0gcmV0LmJldHdlZW5uZXNzTm9ybWFsaXplZDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSAvLyBiZXR3ZWVubmVzc0NlbnRyYWxpdHlcblxuICB9OyAvLyBlbGVzZm5cbiAgLy8gbmljZSwgc2hvcnQgbWF0aGVtYXRpY2FsIGFsaWFzXG5cbiAgZWxlc2ZuJGwuYmMgPSBlbGVzZm4kbC5iZXR3ZWVubmVzc0NlbnRyYWxpdHk7XG5cbiAgLy8gSW1wbGVtZW50ZWQgYnkgWm9lIFhpIEB6b2V4aSBmb3IgR1NPQyAyMDE2XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbiAgdmFyIGRlZmF1bHRzJGMgPSBkZWZhdWx0cyRnKHtcbiAgICBleHBhbmRGYWN0b3I6IDIsXG4gICAgLy8gYWZmZWN0cyB0aW1lIG9mIGNvbXB1dGF0aW9uIGFuZCBjbHVzdGVyIGdyYW51bGFyaXR5IHRvIHNvbWUgZXh0ZW50OiBNICogTVxuICAgIGluZmxhdGVGYWN0b3I6IDIsXG4gICAgLy8gYWZmZWN0cyBjbHVzdGVyIGdyYW51bGFyaXR5ICh0aGUgZ3JlYXRlciB0aGUgdmFsdWUsIHRoZSBtb3JlIGNsdXN0ZXJzKTogTShpLGopIC8gRShqKVxuICAgIG11bHRGYWN0b3I6IDEsXG4gICAgLy8gb3B0aW9uYWwgc2VsZiBsb29wcyBmb3IgZWFjaCBub2RlLiBVc2UgYSBuZXV0cmFsIHZhbHVlIHRvIGltcHJvdmUgY2x1c3RlciBjb21wdXRhdGlvbnMuXG4gICAgbWF4SXRlcmF0aW9uczogMjAsXG4gICAgLy8gbWF4aW11bSBudW1iZXIgb2YgaXRlcmF0aW9ucyBvZiB0aGUgTUNMIGFsZ29yaXRobSBpbiBhIHNpbmdsZSBydW5cbiAgICBhdHRyaWJ1dGVzOiBbLy8gYXR0cmlidXRlcy9mZWF0dXJlcyB1c2VkIHRvIGdyb3VwIG5vZGVzLCBpZS4gc2ltaWxhcml0eSB2YWx1ZXMgYmV0d2VlbiBub2Rlc1xuICAgIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XVxuICB9KTtcbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gIHZhciBzZXRPcHRpb25zJDMgPSBmdW5jdGlvbiBzZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZGVmYXVsdHMkYyhvcHRpb25zKTtcbiAgfTtcbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgdmFyIGdldFNpbWlsYXJpdHkkMSA9IGZ1bmN0aW9uIGdldFNpbWlsYXJpdHkoZWRnZSwgYXR0cmlidXRlcykge1xuICAgIHZhciB0b3RhbCA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRvdGFsICs9IGF0dHJpYnV0ZXNbaV0oZWRnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvdGFsO1xuICB9O1xuXG4gIHZhciBhZGRMb29wcyA9IGZ1bmN0aW9uIGFkZExvb3BzKE0sIG4sIHZhbCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBNW2kgKiBuICsgaV0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIHZhciBub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoTSwgbikge1xuICAgIHZhciBzdW07XG5cbiAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuOyBjb2wrKykge1xuICAgICAgc3VtID0gMDtcblxuICAgICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbjsgcm93KyspIHtcbiAgICAgICAgc3VtICs9IE1bcm93ICogbiArIGNvbF07XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9yb3cgPSAwOyBfcm93IDwgbjsgX3JvdysrKSB7XG4gICAgICAgIE1bX3JvdyAqIG4gKyBjb2xdID0gTVtfcm93ICogbiArIGNvbF0gLyBzdW07XG4gICAgICB9XG4gICAgfVxuICB9OyAvLyBUT0RPOiBibG9ja2VkIG1hdHJpeCBtdWx0aXBsaWNhdGlvbj9cblxuXG4gIHZhciBtbXVsdCA9IGZ1bmN0aW9uIG1tdWx0KEEsIEIsIG4pIHtcbiAgICB2YXIgQyA9IG5ldyBBcnJheShuICogbik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgQ1tpICogbiArIGpdID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgICAgZm9yICh2YXIgX2ogPSAwOyBfaiA8IG47IF9qKyspIHtcbiAgICAgICAgICBDW2kgKiBuICsgX2pdICs9IEFbaSAqIG4gKyBrXSAqIEJbayAqIG4gKyBfal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQztcbiAgfTtcblxuICB2YXIgZXhwYW5kID0gZnVuY3Rpb24gZXhwYW5kKE0sIG4sIGV4cGFuZEZhY3RvclxuICAvKiogcG93ZXIgKiovXG4gICkge1xuICAgIHZhciBfTSA9IE0uc2xpY2UoMCk7XG5cbiAgICBmb3IgKHZhciBwID0gMTsgcCA8IGV4cGFuZEZhY3RvcjsgcCsrKSB7XG4gICAgICBNID0gbW11bHQoTSwgX00sIG4pO1xuICAgIH1cblxuICAgIHJldHVybiBNO1xuICB9O1xuXG4gIHZhciBpbmZsYXRlID0gZnVuY3Rpb24gaW5mbGF0ZShNLCBuLCBpbmZsYXRlRmFjdG9yXG4gIC8qKiByICoqL1xuICApIHtcbiAgICB2YXIgX00gPSBuZXcgQXJyYXkobiAqIG4pOyAvLyBNKGksaikgXiBpbmZsYXRlUG93ZXJcblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICogbjsgaSsrKSB7XG4gICAgICBfTVtpXSA9IE1hdGgucG93KE1baV0sIGluZmxhdGVGYWN0b3IpO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShfTSwgbik7XG4gICAgcmV0dXJuIF9NO1xuICB9O1xuXG4gIHZhciBoYXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXNDb252ZXJnZWQoTSwgX00sIG4yLCByb3VuZEZhY3Rvcikge1xuICAgIC8vIENoZWNrIHRoYXQgYm90aCBtYXRyaWNlcyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzIChpLGopXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuMjsgaSsrKSB7XG4gICAgICB2YXIgdjEgPSBNYXRoLnJvdW5kKE1baV0gKiBNYXRoLnBvdygxMCwgcm91bmRGYWN0b3IpKSAvIE1hdGgucG93KDEwLCByb3VuZEZhY3Rvcik7IC8vIHRydW5jYXRlIHRvICdyb3VuZEZhY3RvcicgZGVjaW1hbCBwbGFjZXNcblxuICAgICAgdmFyIHYyID0gTWF0aC5yb3VuZChfTVtpXSAqIE1hdGgucG93KDEwLCByb3VuZEZhY3RvcikpIC8gTWF0aC5wb3coMTAsIHJvdW5kRmFjdG9yKTtcblxuICAgICAgaWYgKHYxICE9PSB2Mikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIGFzc2lnbiQyID0gZnVuY3Rpb24gYXNzaWduKE0sIG4sIG5vZGVzLCBjeSkge1xuICAgIHZhciBjbHVzdGVycyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgIHZhciBjbHVzdGVyID0gW107XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIC8vIFJvdy13aXNlIGF0dHJhY3RvcnMgYW5kIGVsZW1lbnRzIHRoYXQgdGhleSBhdHRyYWN0IGJlbG9uZyBpbiBzYW1lIGNsdXN0ZXJcbiAgICAgICAgaWYgKE1hdGgucm91bmQoTVtpICogbiArIGpdICogMTAwMCkgLyAxMDAwID4gMCkge1xuICAgICAgICAgIGNsdXN0ZXIucHVzaChub2Rlc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNsdXN0ZXIubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGNsdXN0ZXJzLnB1c2goY3kuY29sbGVjdGlvbihjbHVzdGVyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xuICB9O1xuXG4gIHZhciBpc0R1cGxpY2F0ZSA9IGZ1bmN0aW9uIGlzRHVwbGljYXRlKGMxLCBjMikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYzEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghYzJbaV0gfHwgYzFbaV0uaWQoKSAhPT0gYzJbaV0uaWQoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIHJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGNsdXN0ZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjbHVzdGVycy5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoaSAhPSBqICYmIGlzRHVwbGljYXRlKGNsdXN0ZXJzW2ldLCBjbHVzdGVyc1tqXSkpIHtcbiAgICAgICAgICBjbHVzdGVycy5zcGxpY2UoaiwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIG1hcmtvdkNsdXN0ZXJpbmcgPSBmdW5jdGlvbiBtYXJrb3ZDbHVzdGVyaW5nKG9wdGlvbnMpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG4gICAgdmFyIGVkZ2VzID0gdGhpcy5lZGdlcygpO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gU2V0IHBhcmFtZXRlcnMgb2YgYWxnb3JpdGhtOlxuXG4gICAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDMob3B0aW9ucyk7IC8vIE1hcCBlYWNoIG5vZGUgdG8gaXRzIHBvc2l0aW9uIGluIG5vZGUgYXJyYXlcblxuICAgIHZhciBpZDJwb3NpdGlvbiA9IHt9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWQycG9zaXRpb25bbm9kZXNbaV0uaWQoKV0gPSBpO1xuICAgIH0gLy8gR2VuZXJhdGUgc3RvY2hhc3RpYyBtYXRyaXggTSBmcm9tIGlucHV0IGdyYXBoIEcgKHNob3VsZCBiZSBzeW1tZXRyaWMvdW5kaXJlY3RlZClcblxuXG4gICAgdmFyIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIG4yID0gbiAqIG47XG5cbiAgICB2YXIgTSA9IG5ldyBBcnJheShuMiksXG4gICAgICAgIF9NO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG4yOyBfaSsrKSB7XG4gICAgICBNW19pXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZSA9IDA7IGUgPCBlZGdlcy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tlXTtcbiAgICAgIHZhciBfaTIgPSBpZDJwb3NpdGlvbltlZGdlLnNvdXJjZSgpLmlkKCldO1xuICAgICAgdmFyIGogPSBpZDJwb3NpdGlvbltlZGdlLnRhcmdldCgpLmlkKCldO1xuICAgICAgdmFyIHNpbSA9IGdldFNpbWlsYXJpdHkkMShlZGdlLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgTVtfaTIgKiBuICsgal0gKz0gc2ltOyAvLyBHIHNob3VsZCBiZSBzeW1tZXRyaWMgYW5kIHVuZGlyZWN0ZWRcblxuICAgICAgTVtqICogbiArIF9pMl0gKz0gc2ltO1xuICAgIH0gLy8gQmVnaW4gTWFya292IGNsdXN0ZXIgYWxnb3JpdGhtXG4gICAgLy8gU3RlcCAxOiBBZGQgc2VsZiBsb29wcyB0byBlYWNoIG5vZGUsIGllLiBhZGQgbXVsdEZhY3RvciB0byBtYXRyaXggZGlhZ29uYWxcblxuXG4gICAgYWRkTG9vcHMoTSwgbiwgb3B0cy5tdWx0RmFjdG9yKTsgLy8gU3RlcCAyOiBNID0gbm9ybWFsaXplKCBNICk7XG5cbiAgICBub3JtYWxpemUoTSwgbik7XG4gICAgdmFyIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgIHZhciBpdGVyYXRpb25zID0gMDtcblxuICAgIHdoaWxlIChpc1N0aWxsTW92aW5nICYmIGl0ZXJhdGlvbnMgPCBvcHRzLm1heEl0ZXJhdGlvbnMpIHtcbiAgICAgIGlzU3RpbGxNb3ZpbmcgPSBmYWxzZTsgLy8gU3RlcCAzOlxuXG4gICAgICBfTSA9IGV4cGFuZChNLCBuLCBvcHRzLmV4cGFuZEZhY3Rvcik7IC8vIFN0ZXAgNDpcblxuICAgICAgTSA9IGluZmxhdGUoX00sIG4sIG9wdHMuaW5mbGF0ZUZhY3Rvcik7IC8vIFN0ZXAgNTogY2hlY2sgdG8gc2VlIGlmIH5zdGVhZHkgc3RhdGUgaGFzIGJlZW4gcmVhY2hlZFxuXG4gICAgICBpZiAoIWhhc0NvbnZlcmdlZChNLCBfTSwgbjIsIDQpKSB7XG4gICAgICAgIGlzU3RpbGxNb3ZpbmcgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpdGVyYXRpb25zKys7XG4gICAgfSAvLyBCdWlsZCBjbHVzdGVycyBmcm9tIG1hdHJpeFxuXG5cbiAgICB2YXIgY2x1c3RlcnMgPSBhc3NpZ24kMihNLCBuLCBub2RlcywgY3kpOyAvLyBSZW1vdmUgZHVwbGljYXRlIGNsdXN0ZXJzIGR1ZSB0byBzeW1tZXRyeSBvZiBncmFwaCBhbmQgTSBtYXRyaXhcblxuICAgIGNsdXN0ZXJzID0gcmVtb3ZlRHVwbGljYXRlcyhjbHVzdGVycyk7XG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xuICB9O1xuXG4gIHZhciBtYXJrb3ZDbHVzdGVyaW5nJDEgPSB7XG4gICAgbWFya292Q2x1c3RlcmluZzogbWFya292Q2x1c3RlcmluZyxcbiAgICBtY2w6IG1hcmtvdkNsdXN0ZXJpbmdcbiAgfTtcblxuICAvLyBDb21tb24gZGlzdGFuY2UgbWV0cmljcyBmb3IgY2x1c3RlcmluZyBhbGdvcml0aG1zXG5cbiAgdmFyIGlkZW50aXR5ID0gZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICAgIHJldHVybiB4O1xuICB9O1xuXG4gIHZhciBhYnNEaWZmID0gZnVuY3Rpb24gYWJzRGlmZihwLCBxKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHEgLSBwKTtcbiAgfTtcblxuICB2YXIgYWRkQWJzRGlmZiA9IGZ1bmN0aW9uIGFkZEFic0RpZmYodG90YWwsIHAsIHEpIHtcbiAgICByZXR1cm4gdG90YWwgKyBhYnNEaWZmKHAsIHEpO1xuICB9O1xuXG4gIHZhciBhZGRTcXVhcmVkRGlmZiA9IGZ1bmN0aW9uIGFkZFNxdWFyZWREaWZmKHRvdGFsLCBwLCBxKSB7XG4gICAgcmV0dXJuIHRvdGFsICsgTWF0aC5wb3cocSAtIHAsIDIpO1xuICB9O1xuXG4gIHZhciBzcXJ0ID0gZnVuY3Rpb24gc3FydCh4KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh4KTtcbiAgfTtcblxuICB2YXIgbWF4QWJzRGlmZiA9IGZ1bmN0aW9uIG1heEFic0RpZmYoY3VycmVudE1heCwgcCwgcSkge1xuICAgIHJldHVybiBNYXRoLm1heChjdXJyZW50TWF4LCBhYnNEaWZmKHAsIHEpKTtcbiAgfTtcblxuICB2YXIgZ2V0RGlzdGFuY2UgPSBmdW5jdGlvbiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIGluaXQsIHZpc2l0KSB7XG4gICAgdmFyIHBvc3QgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IGlkZW50aXR5O1xuICAgIHZhciByZXQgPSBpbml0O1xuICAgIHZhciBwLCBxO1xuXG4gICAgZm9yICh2YXIgZGltID0gMDsgZGltIDwgbGVuZ3RoOyBkaW0rKykge1xuICAgICAgcCA9IGdldFAoZGltKTtcbiAgICAgIHEgPSBnZXRRKGRpbSk7XG4gICAgICByZXQgPSB2aXNpdChyZXQsIHAsIHEpO1xuICAgIH1cblxuICAgIHJldHVybiBwb3N0KHJldCk7XG4gIH07XG5cbiAgdmFyIGRpc3RhbmNlcyA9IHtcbiAgICBldWNsaWRlYW46IGZ1bmN0aW9uIGV1Y2xpZGVhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICAgIGlmIChsZW5ndGggPj0gMikge1xuICAgICAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRTcXVhcmVkRGlmZiwgc3FydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBmb3Igc2luZ2xlIGF0dHIgY2FzZSwgbW9yZSBlZmZpY2llbnQgdG8gYXZvaWQgc3FydFxuICAgICAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRBYnNEaWZmKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNxdWFyZWRFdWNsaWRlYW46IGZ1bmN0aW9uIHNxdWFyZWRFdWNsaWRlYW4obGVuZ3RoLCBnZXRQLCBnZXRRKSB7XG4gICAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAwLCBhZGRTcXVhcmVkRGlmZik7XG4gICAgfSxcbiAgICBtYW5oYXR0YW46IGZ1bmN0aW9uIG1hbmhhdHRhbihsZW5ndGgsIGdldFAsIGdldFEpIHtcbiAgICAgIHJldHVybiBnZXREaXN0YW5jZShsZW5ndGgsIGdldFAsIGdldFEsIDAsIGFkZEFic0RpZmYpO1xuICAgIH0sXG4gICAgbWF4OiBmdW5jdGlvbiBtYXgobGVuZ3RoLCBnZXRQLCBnZXRRKSB7XG4gICAgICByZXR1cm4gZ2V0RGlzdGFuY2UobGVuZ3RoLCBnZXRQLCBnZXRRLCAtSW5maW5pdHksIG1heEFic0RpZmYpO1xuICAgIH1cbiAgfTsgLy8gaW4gY2FzZSB0aGUgdXNlciBhY2NpZGVudGFsbHkgZG9lc24ndCB1c2UgY2FtZWwgY2FzZVxuXG4gIGRpc3RhbmNlc1snc3F1YXJlZC1ldWNsaWRlYW4nXSA9IGRpc3RhbmNlc1snc3F1YXJlZEV1Y2xpZGVhbiddO1xuICBkaXN0YW5jZXNbJ3NxdWFyZWRldWNsaWRlYW4nXSA9IGRpc3RhbmNlc1snc3F1YXJlZEV1Y2xpZGVhbiddO1xuICBmdW5jdGlvbiBjbHVzdGVyaW5nRGlzdGFuY2UgKG1ldGhvZCwgbGVuZ3RoLCBnZXRQLCBnZXRRLCBub2RlUCwgbm9kZVEpIHtcbiAgICB2YXIgaW1wbDtcblxuICAgIGlmIChmbiQ2KG1ldGhvZCkpIHtcbiAgICAgIGltcGwgPSBtZXRob2Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIGltcGwgPSBkaXN0YW5jZXNbbWV0aG9kXSB8fCBkaXN0YW5jZXMuZXVjbGlkZWFuO1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPT09IDAgJiYgZm4kNihtZXRob2QpKSB7XG4gICAgICByZXR1cm4gaW1wbChub2RlUCwgbm9kZVEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW1wbChsZW5ndGgsIGdldFAsIGdldFEsIG5vZGVQLCBub2RlUSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGRlZmF1bHRzJGIgPSBkZWZhdWx0cyRnKHtcbiAgICBrOiAyLFxuICAgIG06IDIsXG4gICAgc2Vuc2l0aXZpdHlUaHJlc2hvbGQ6IDAuMDAwMSxcbiAgICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gICAgbWF4SXRlcmF0aW9uczogMTAsXG4gICAgYXR0cmlidXRlczogW10sXG4gICAgdGVzdE1vZGU6IGZhbHNlLFxuICAgIHRlc3RDZW50cm9pZHM6IG51bGxcbiAgfSk7XG5cbiAgdmFyIHNldE9wdGlvbnMkMiA9IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICAgIHJldHVybiBkZWZhdWx0cyRiKG9wdGlvbnMpO1xuICB9O1xuICAvKiBlc2xpbnQtZW5hYmxlICovXG5cblxuICB2YXIgZ2V0RGlzdCA9IGZ1bmN0aW9uIGdldERpc3QodHlwZSwgbm9kZSwgY2VudHJvaWQsIGF0dHJpYnV0ZXMsIG1vZGUpIHtcbiAgICB2YXIgbm9Ob2RlUCA9IG1vZGUgIT09ICdrTWVkb2lkcyc7XG4gICAgdmFyIGdldFAgPSBub05vZGVQID8gZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBjZW50cm9pZFtpXTtcbiAgICB9IDogZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzW2ldKGNlbnRyb2lkKTtcbiAgICB9O1xuXG4gICAgdmFyIGdldFEgPSBmdW5jdGlvbiBnZXRRKGkpIHtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzW2ldKG5vZGUpO1xuICAgIH07XG5cbiAgICB2YXIgbm9kZVAgPSBjZW50cm9pZDtcbiAgICB2YXIgbm9kZVEgPSBub2RlO1xuICAgIHJldHVybiBjbHVzdGVyaW5nRGlzdGFuY2UodHlwZSwgYXR0cmlidXRlcy5sZW5ndGgsIGdldFAsIGdldFEsIG5vZGVQLCBub2RlUSk7XG4gIH07XG5cbiAgdmFyIHJhbmRvbUNlbnRyb2lkcyA9IGZ1bmN0aW9uIHJhbmRvbUNlbnRyb2lkcyhub2RlcywgaywgYXR0cmlidXRlcykge1xuICAgIHZhciBuZGltID0gYXR0cmlidXRlcy5sZW5ndGg7XG4gICAgdmFyIG1pbiA9IG5ldyBBcnJheShuZGltKTtcbiAgICB2YXIgbWF4ID0gbmV3IEFycmF5KG5kaW0pO1xuICAgIHZhciBjZW50cm9pZHMgPSBuZXcgQXJyYXkoayk7XG4gICAgdmFyIGNlbnRyb2lkID0gbnVsbDsgLy8gRmluZCBtaW4sIG1heCB2YWx1ZXMgZm9yIGVhY2ggYXR0cmlidXRlIGRpbWVuc2lvblxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZGltOyBpKyspIHtcbiAgICAgIG1pbltpXSA9IG5vZGVzLm1pbihhdHRyaWJ1dGVzW2ldKS52YWx1ZTtcbiAgICAgIG1heFtpXSA9IG5vZGVzLm1heChhdHRyaWJ1dGVzW2ldKS52YWx1ZTtcbiAgICB9IC8vIEJ1aWxkIGsgY2VudHJvaWRzLCBlYWNoIHJlcHJlc2VudGVkIGFzIGFuIG4tZGltIGZlYXR1cmUgdmVjdG9yXG5cblxuICAgIGZvciAodmFyIGMgPSAwOyBjIDwgazsgYysrKSB7XG4gICAgICBjZW50cm9pZCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbmRpbTsgX2krKykge1xuICAgICAgICBjZW50cm9pZFtfaV0gPSBNYXRoLnJhbmRvbSgpICogKG1heFtfaV0gLSBtaW5bX2ldKSArIG1pbltfaV07IC8vIHJhbmRvbSBpbml0aWFsIHZhbHVlXG4gICAgICB9XG5cbiAgICAgIGNlbnRyb2lkc1tjXSA9IGNlbnRyb2lkO1xuICAgIH1cblxuICAgIHJldHVybiBjZW50cm9pZHM7XG4gIH07XG5cbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rpb24gY2xhc3NpZnkobm9kZSwgY2VudHJvaWRzLCBkaXN0YW5jZSwgYXR0cmlidXRlcywgdHlwZSkge1xuICAgIHZhciBtaW4gPSBJbmZpbml0eTtcbiAgICB2YXIgaW5kZXggPSAwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjZW50cm9pZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkaXN0ID0gZ2V0RGlzdChkaXN0YW5jZSwgbm9kZSwgY2VudHJvaWRzW2ldLCBhdHRyaWJ1dGVzLCB0eXBlKTtcblxuICAgICAgaWYgKGRpc3QgPCBtaW4pIHtcbiAgICAgICAgbWluID0gZGlzdDtcbiAgICAgICAgaW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfTtcblxuICB2YXIgYnVpbGRDbHVzdGVyID0gZnVuY3Rpb24gYnVpbGRDbHVzdGVyKGNlbnRyb2lkLCBub2RlcywgYXNzaWdubWVudCkge1xuICAgIHZhciBjbHVzdGVyID0gW107XG4gICAgdmFyIG5vZGUgPSBudWxsO1xuXG4gICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlcy5sZW5ndGg7IG4rKykge1xuICAgICAgbm9kZSA9IG5vZGVzW25dO1xuXG4gICAgICBpZiAoYXNzaWdubWVudFtub2RlLmlkKCldID09PSBjZW50cm9pZCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiTm9kZSBcIiArIG5vZGUuaWQoKSArIFwiIGlzIGFzc29jaWF0ZWQgd2l0aCBtZWRvaWQgIzogXCIgKyBtKTtcbiAgICAgICAgY2x1c3Rlci5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbHVzdGVyO1xuICB9O1xuXG4gIHZhciBoYXZlVmFsdWVzQ29udmVyZ2VkID0gZnVuY3Rpb24gaGF2ZVZhbHVlc0NvbnZlcmdlZCh2MSwgdjIsIHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gICAgcmV0dXJuIE1hdGguYWJzKHYyIC0gdjEpIDw9IHNlbnNpdGl2aXR5VGhyZXNob2xkO1xuICB9O1xuXG4gIHZhciBoYXZlTWF0cmljZXNDb252ZXJnZWQgPSBmdW5jdGlvbiBoYXZlTWF0cmljZXNDb252ZXJnZWQodjEsIHYyLCBzZW5zaXRpdml0eVRocmVzaG9sZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdjFbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyh2MVtpXVtqXSAtIHYyW2ldW2pdKTtcblxuICAgICAgICBpZiAoZGlmZiA+IHNlbnNpdGl2aXR5VGhyZXNob2xkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFyIHNlZW5CZWZvcmUgPSBmdW5jdGlvbiBzZWVuQmVmb3JlKG5vZGUsIG1lZG9pZHMsIG4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgaWYgKG5vZGUgPT09IG1lZG9pZHNbaV0pIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICB2YXIgcmFuZG9tTWVkb2lkcyA9IGZ1bmN0aW9uIHJhbmRvbU1lZG9pZHMobm9kZXMsIGspIHtcbiAgICB2YXIgbWVkb2lkcyA9IG5ldyBBcnJheShrKTsgLy8gRm9yIHNtYWxsIGRhdGEgc2V0cywgdGhlIHByb2JhYmlsaXR5IG9mIG1lZG9pZCBjb25mbGljdCBpcyBncmVhdGVyLFxuICAgIC8vIHNvIHdlIG5lZWQgdG8gY2hlY2sgdG8gc2VlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBvciBjaG9zZSB0aGlzIG5vZGUgYmVmb3JlLlxuXG4gICAgaWYgKG5vZGVzLmxlbmd0aCA8IDUwKSB7XG4gICAgICAvLyBSYW5kb21seSBzZWxlY3QgayBtZWRvaWRzIGZyb20gdGhlIG4gbm9kZXNcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZXMubGVuZ3RoKV07IC8vIElmIHdlJ3ZlIGFscmVhZHkgY2hvc2VuIHRoaXMgbm9kZSB0byBiZSBhIG1lZG9pZCwgZG9uJ3QgY2hvb3NlIGl0IGFnYWluIChmb3Igc21hbGwgZGF0YSBzZXRzKS5cbiAgICAgICAgLy8gSW5zdGVhZCBjaG9vc2UgYSBkaWZmZXJlbnQgcmFuZG9tIG5vZGUuXG5cbiAgICAgICAgd2hpbGUgKHNlZW5CZWZvcmUobm9kZSwgbWVkb2lkcywgaSkpIHtcbiAgICAgICAgICBub2RlID0gbm9kZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbm9kZXMubGVuZ3RoKV07XG4gICAgICAgIH1cblxuICAgICAgICBtZWRvaWRzW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVsYXRpdmVseSBsYXJnZSBkYXRhIHNldCwgc28gcHJldHR5IHNhZmUgdG8gbm90IGNoZWNrIGFuZCBqdXN0IHNlbGVjdCByYW5kb20gbm9kZXNcbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGs7IF9pMisrKSB7XG4gICAgICAgIG1lZG9pZHNbX2kyXSA9IG5vZGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG5vZGVzLmxlbmd0aCldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZWRvaWRzO1xuICB9O1xuXG4gIHZhciBmaW5kQ29zdCA9IGZ1bmN0aW9uIGZpbmRDb3N0KHBvdGVudGlhbE5ld01lZG9pZCwgY2x1c3RlciwgYXR0cmlidXRlcykge1xuICAgIHZhciBjb3N0ID0gMDtcblxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgY2x1c3Rlci5sZW5ndGg7IG4rKykge1xuICAgICAgY29zdCArPSBnZXREaXN0KCdtYW5oYXR0YW4nLCBjbHVzdGVyW25dLCBwb3RlbnRpYWxOZXdNZWRvaWQsIGF0dHJpYnV0ZXMsICdrTWVkb2lkcycpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3N0O1xuICB9O1xuXG4gIHZhciBrTWVhbnMgPSBmdW5jdGlvbiBrTWVhbnMob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG4gICAgdmFyIG5vZGUgPSBudWxsOyAvLyBTZXQgcGFyYW1ldGVycyBvZiBhbGdvcml0aG06ICMgb2YgY2x1c3RlcnMsIGRpc3RhbmNlIG1ldHJpYywgZXRjLlxuXG4gICAgdmFyIG9wdHMgPSBzZXRPcHRpb25zJDIob3B0aW9ucyk7IC8vIEJlZ2luIGstbWVhbnMgYWxnb3JpdGhtXG5cbiAgICB2YXIgY2x1c3RlcnMgPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgICB2YXIgYXNzaWdubWVudCA9IHt9O1xuICAgIHZhciBjZW50cm9pZHM7IC8vIFN0ZXAgMTogSW5pdGlhbGl6ZSBjZW50cm9pZCBwb3NpdGlvbnNcblxuICAgIGlmIChvcHRzLnRlc3RNb2RlKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMudGVzdENlbnRyb2lkcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IGEgc2VlZGVkIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLlxuICAgICAgICBvcHRzLnRlc3RDZW50cm9pZHM7XG4gICAgICAgIGNlbnRyb2lkcyA9IHJhbmRvbUNlbnRyb2lkcyhub2Rlcywgb3B0cy5rLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChfdHlwZW9mKG9wdHMudGVzdENlbnRyb2lkcykgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNlbnRyb2lkcyA9IG9wdHMudGVzdENlbnRyb2lkcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNlbnRyb2lkcyA9IHJhbmRvbUNlbnRyb2lkcyhub2Rlcywgb3B0cy5rLCBvcHRzLmF0dHJpYnV0ZXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjZW50cm9pZHMgPSByYW5kb21DZW50cm9pZHMobm9kZXMsIG9wdHMuaywgb3B0cy5hdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICB2YXIgaXNTdGlsbE1vdmluZyA9IHRydWU7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gICAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgICAgLy8gU3RlcCAyOiBBc3NpZ24gbm9kZXMgdG8gdGhlIG5lYXJlc3QgY2VudHJvaWRcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW25dOyAvLyBEZXRlcm1pbmUgd2hpY2ggY2x1c3RlciB0aGlzIG5vZGUgYmVsb25ncyB0bzogbm9kZSBpZCA9PiBjbHVzdGVyICNcblxuICAgICAgICBhc3NpZ25tZW50W25vZGUuaWQoKV0gPSBjbGFzc2lmeShub2RlLCBjZW50cm9pZHMsIG9wdHMuZGlzdGFuY2UsIG9wdHMuYXR0cmlidXRlcywgJ2tNZWFucycpO1xuICAgICAgfSAvLyBTdGVwIDM6IEZvciBlYWNoIG9mIHRoZSBrIGNsdXN0ZXJzLCB1cGRhdGUgaXRzIGNlbnRyb2lkXG5cblxuICAgICAgaXNTdGlsbE1vdmluZyA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8IG9wdHMuazsgYysrKSB7XG4gICAgICAgIC8vIEdldCBhbGwgbm9kZXMgdGhhdCBiZWxvbmcgdG8gdGhpcyBjbHVzdGVyXG4gICAgICAgIHZhciBjbHVzdGVyID0gYnVpbGRDbHVzdGVyKGMsIG5vZGVzLCBhc3NpZ25tZW50KTtcblxuICAgICAgICBpZiAoY2x1c3Rlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAvLyBJZiBjbHVzdGVyIGlzIGVtcHR5LCBicmVhayBvdXQgZWFybHkgJiBtb3ZlIHRvIG5leHQgY2x1c3RlclxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IC8vIFVwZGF0ZSBjZW50cm9pZHMgYnkgY2FsY3VsYXRpbmcgYXZnIG9mIGFsbCBub2RlcyB3aXRoaW4gdGhlIGNsdXN0ZXIuXG5cblxuICAgICAgICB2YXIgbmRpbSA9IG9wdHMuYXR0cmlidXRlcy5sZW5ndGg7XG4gICAgICAgIHZhciBjZW50cm9pZCA9IGNlbnRyb2lkc1tjXTsgLy8gWyBkaW1fMSwgZGltXzIsIGRpbV8zLCAuLi4gLCBkaW1fbiBdXG5cbiAgICAgICAgdmFyIG5ld0NlbnRyb2lkID0gbmV3IEFycmF5KG5kaW0pO1xuICAgICAgICB2YXIgc3VtID0gbmV3IEFycmF5KG5kaW0pO1xuXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgbmRpbTsgZCsrKSB7XG4gICAgICAgICAgc3VtW2RdID0gMC4wO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbHVzdGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBub2RlID0gY2x1c3RlcltpXTtcbiAgICAgICAgICAgIHN1bVtkXSArPSBvcHRzLmF0dHJpYnV0ZXNbZF0obm9kZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3Q2VudHJvaWRbZF0gPSBzdW1bZF0gLyBjbHVzdGVyLmxlbmd0aDsgLy8gQ2hlY2sgdG8gc2VlIGlmIGFsZ29yaXRobSBoYXMgY29udmVyZ2VkLCBpLmUuIHdoZW4gY2VudHJvaWRzIG5vIGxvbmdlciBjaGFuZ2VcblxuICAgICAgICAgIGlmICghaGF2ZVZhbHVlc0NvbnZlcmdlZChuZXdDZW50cm9pZFtkXSwgY2VudHJvaWRbZF0sIG9wdHMuc2Vuc2l0aXZpdHlUaHJlc2hvbGQpKSB7XG4gICAgICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjZW50cm9pZHNbY10gPSBuZXdDZW50cm9pZDtcbiAgICAgICAgY2x1c3RlcnNbY10gPSBjeS5jb2xsZWN0aW9uKGNsdXN0ZXIpO1xuICAgICAgfVxuXG4gICAgICBpdGVyYXRpb25zKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xuICB9O1xuXG4gIHZhciBrTWVkb2lkcyA9IGZ1bmN0aW9uIGtNZWRvaWRzKG9wdGlvbnMpIHtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBub2RlID0gbnVsbDtcbiAgICB2YXIgb3B0cyA9IHNldE9wdGlvbnMkMihvcHRpb25zKTsgLy8gQmVnaW4gay1tZWRvaWRzIGFsZ29yaXRobVxuXG4gICAgdmFyIGNsdXN0ZXJzID0gbmV3IEFycmF5KG9wdHMuayk7XG4gICAgdmFyIG1lZG9pZHM7XG4gICAgdmFyIGFzc2lnbm1lbnQgPSB7fTtcbiAgICB2YXIgY3VyQ29zdDtcbiAgICB2YXIgbWluQ29zdHMgPSBuZXcgQXJyYXkob3B0cy5rKTsgLy8gbWluaW11bSBjb3N0IGNvbmZpZ3VyYXRpb24gZm9yIGVhY2ggY2x1c3RlclxuICAgIC8vIFN0ZXAgMTogSW5pdGlhbGl6ZSBrIG1lZG9pZHNcblxuICAgIGlmIChvcHRzLnRlc3RNb2RlKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMudGVzdENlbnRyb2lkcyA9PT0gJ251bWJlcicpIDsgZWxzZSBpZiAoX3R5cGVvZihvcHRzLnRlc3RDZW50cm9pZHMpID09PSAnb2JqZWN0Jykge1xuICAgICAgICBtZWRvaWRzID0gb3B0cy50ZXN0Q2VudHJvaWRzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVkb2lkcyA9IHJhbmRvbU1lZG9pZHMobm9kZXMsIG9wdHMuayk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lZG9pZHMgPSByYW5kb21NZWRvaWRzKG5vZGVzLCBvcHRzLmspO1xuICAgIH1cblxuICAgIHZhciBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICB2YXIgaXRlcmF0aW9ucyA9IDA7XG5cbiAgICB3aGlsZSAoaXNTdGlsbE1vdmluZyAmJiBpdGVyYXRpb25zIDwgb3B0cy5tYXhJdGVyYXRpb25zKSB7XG4gICAgICAvLyBTdGVwIDI6IEFzc2lnbiBub2RlcyB0byB0aGUgbmVhcmVzdCBtZWRvaWRcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW25dOyAvLyBEZXRlcm1pbmUgd2hpY2ggY2x1c3RlciB0aGlzIG5vZGUgYmVsb25ncyB0bzogbm9kZSBpZCA9PiBjbHVzdGVyICNcblxuICAgICAgICBhc3NpZ25tZW50W25vZGUuaWQoKV0gPSBjbGFzc2lmeShub2RlLCBtZWRvaWRzLCBvcHRzLmRpc3RhbmNlLCBvcHRzLmF0dHJpYnV0ZXMsICdrTWVkb2lkcycpO1xuICAgICAgfVxuXG4gICAgICBpc1N0aWxsTW92aW5nID0gZmFsc2U7IC8vIFN0ZXAgMzogRm9yIGVhY2ggbWVkb2lkIG0sIGFuZCBmb3IgZWFjaCBub2RlIGFzc29jaWF0ZWQgd2l0aCBtZWRpb2QgbSxcbiAgICAgIC8vIHNlbGVjdCB0aGUgbm9kZSB3aXRoIHRoZSBsb3dlc3QgY29uZmlndXJhdGlvbiBjb3N0IGFzIG5ldyBtZWRvaWQuXG5cbiAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbWVkb2lkcy5sZW5ndGg7IG0rKykge1xuICAgICAgICAvLyBHZXQgYWxsIG5vZGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgbWVkb2lkXG4gICAgICAgIHZhciBjbHVzdGVyID0gYnVpbGRDbHVzdGVyKG0sIG5vZGVzLCBhc3NpZ25tZW50KTtcblxuICAgICAgICBpZiAoY2x1c3Rlci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAvLyBJZiBjbHVzdGVyIGlzIGVtcHR5LCBicmVhayBvdXQgZWFybHkgJiBtb3ZlIHRvIG5leHQgY2x1c3RlclxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbWluQ29zdHNbbV0gPSBmaW5kQ29zdChtZWRvaWRzW21dLCBjbHVzdGVyLCBvcHRzLmF0dHJpYnV0ZXMpOyAvLyBvcmlnaW5hbCBjb3N0XG4gICAgICAgIC8vIFNlbGVjdCBkaWZmZXJlbnQgbWVkb2lkIGlmIGl0cyBjb25maWd1cmF0aW9uIGhhcyB0aGUgbG93ZXN0IGNvc3RcblxuICAgICAgICBmb3IgKHZhciBfbiA9IDA7IF9uIDwgY2x1c3Rlci5sZW5ndGg7IF9uKyspIHtcbiAgICAgICAgICBjdXJDb3N0ID0gZmluZENvc3QoY2x1c3Rlcltfbl0sIGNsdXN0ZXIsIG9wdHMuYXR0cmlidXRlcyk7XG5cbiAgICAgICAgICBpZiAoY3VyQ29zdCA8IG1pbkNvc3RzW21dKSB7XG4gICAgICAgICAgICBtaW5Db3N0c1ttXSA9IGN1ckNvc3Q7XG4gICAgICAgICAgICBtZWRvaWRzW21dID0gY2x1c3Rlcltfbl07XG4gICAgICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjbHVzdGVyc1ttXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3Rlcik7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdGlvbnMrKztcbiAgICB9XG5cbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIHVwZGF0ZUNlbnRyb2lkcyA9IGZ1bmN0aW9uIHVwZGF0ZUNlbnRyb2lkcyhjZW50cm9pZHMsIG5vZGVzLCBVLCB3ZWlnaHQsIG9wdHMpIHtcbiAgICB2YXIgbnVtZXJhdG9yLCBkZW5vbWluYXRvcjtcblxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2VudHJvaWRzLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIHdlaWdodFtuXVtjXSA9IE1hdGgucG93KFVbbl1bY10sIG9wdHMubSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2MgPSAwOyBfYyA8IGNlbnRyb2lkcy5sZW5ndGg7IF9jKyspIHtcbiAgICAgIGZvciAodmFyIGRpbSA9IDA7IGRpbSA8IG9wdHMuYXR0cmlidXRlcy5sZW5ndGg7IGRpbSsrKSB7XG4gICAgICAgIG51bWVyYXRvciA9IDA7XG4gICAgICAgIGRlbm9taW5hdG9yID0gMDtcblxuICAgICAgICBmb3IgKHZhciBfbjIgPSAwOyBfbjIgPCBub2Rlcy5sZW5ndGg7IF9uMisrKSB7XG4gICAgICAgICAgbnVtZXJhdG9yICs9IHdlaWdodFtfbjJdW19jXSAqIG9wdHMuYXR0cmlidXRlc1tkaW1dKG5vZGVzW19uMl0pO1xuICAgICAgICAgIGRlbm9taW5hdG9yICs9IHdlaWdodFtfbjJdW19jXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNlbnRyb2lkc1tfY11bZGltXSA9IG51bWVyYXRvciAvIGRlbm9taW5hdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgdXBkYXRlTWVtYmVyc2hpcCA9IGZ1bmN0aW9uIHVwZGF0ZU1lbWJlcnNoaXAoVSwgX1UsIGNlbnRyb2lkcywgbm9kZXMsIG9wdHMpIHtcbiAgICAvLyBTYXZlIHByZXZpb3VzIHN0ZXBcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFUubGVuZ3RoOyBpKyspIHtcbiAgICAgIF9VW2ldID0gVVtpXS5zbGljZSgpO1xuICAgIH1cblxuICAgIHZhciBzdW0sIG51bWVyYXRvciwgZGVub21pbmF0b3I7XG4gICAgdmFyIHBvdyA9IDIgLyAob3B0cy5tIC0gMSk7XG5cbiAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNlbnRyb2lkcy5sZW5ndGg7IGMrKykge1xuICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBub2Rlcy5sZW5ndGg7IG4rKykge1xuICAgICAgICBzdW0gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgY2VudHJvaWRzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgLy8gYWdhaW5zdCBhbGwgb3RoZXIgY2VudHJvaWRzXG4gICAgICAgICAgbnVtZXJhdG9yID0gZ2V0RGlzdChvcHRzLmRpc3RhbmNlLCBub2Rlc1tuXSwgY2VudHJvaWRzW2NdLCBvcHRzLmF0dHJpYnV0ZXMsICdjbWVhbnMnKTtcbiAgICAgICAgICBkZW5vbWluYXRvciA9IGdldERpc3Qob3B0cy5kaXN0YW5jZSwgbm9kZXNbbl0sIGNlbnRyb2lkc1trXSwgb3B0cy5hdHRyaWJ1dGVzLCAnY21lYW5zJyk7XG4gICAgICAgICAgc3VtICs9IE1hdGgucG93KG51bWVyYXRvciAvIGRlbm9taW5hdG9yLCBwb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgVVtuXVtjXSA9IDEgLyBzdW07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBhc3NpZ24kMSA9IGZ1bmN0aW9uIGFzc2lnbihub2RlcywgVSwgb3B0cywgY3kpIHtcbiAgICB2YXIgY2x1c3RlcnMgPSBuZXcgQXJyYXkob3B0cy5rKTtcblxuICAgIGZvciAodmFyIGMgPSAwOyBjIDwgY2x1c3RlcnMubGVuZ3RoOyBjKyspIHtcbiAgICAgIGNsdXN0ZXJzW2NdID0gW107XG4gICAgfVxuXG4gICAgdmFyIG1heDtcbiAgICB2YXIgaW5kZXg7XG5cbiAgICBmb3IgKHZhciBuID0gMDsgbiA8IFUubGVuZ3RoOyBuKyspIHtcbiAgICAgIC8vIGZvciBlYWNoIG5vZGUgKFUgaXMgTiB4IEMgbWF0cml4KVxuICAgICAgbWF4ID0gLUluZmluaXR5O1xuICAgICAgaW5kZXggPSAtMTsgLy8gRGV0ZXJtaW5lIHdoaWNoIGNsdXN0ZXIgdGhlIG5vZGUgaXMgbW9zdCBsaWtlbHkgdG8gYmVsb25nIGluXG5cbiAgICAgIGZvciAodmFyIF9jMiA9IDA7IF9jMiA8IFVbMF0ubGVuZ3RoOyBfYzIrKykge1xuICAgICAgICBpZiAoVVtuXVtfYzJdID4gbWF4KSB7XG4gICAgICAgICAgbWF4ID0gVVtuXVtfYzJdO1xuICAgICAgICAgIGluZGV4ID0gX2MyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsdXN0ZXJzW2luZGV4XS5wdXNoKG5vZGVzW25dKTtcbiAgICB9IC8vIFR1cm4gZXZlcnkgYXJyYXkgaW50byBhIGNvbGxlY3Rpb24gb2Ygbm9kZXNcblxuXG4gICAgZm9yICh2YXIgX2MzID0gMDsgX2MzIDwgY2x1c3RlcnMubGVuZ3RoOyBfYzMrKykge1xuICAgICAgY2x1c3RlcnNbX2MzXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3RlcnNbX2MzXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsdXN0ZXJzO1xuICB9O1xuXG4gIHZhciBmdXp6eUNNZWFucyA9IGZ1bmN0aW9uIGZ1enp5Q01lYW5zKG9wdGlvbnMpIHtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBvcHRzID0gc2V0T3B0aW9ucyQyKG9wdGlvbnMpOyAvLyBCZWdpbiBmdXp6eSBjLW1lYW5zIGFsZ29yaXRobVxuXG4gICAgdmFyIGNsdXN0ZXJzO1xuICAgIHZhciBjZW50cm9pZHM7XG4gICAgdmFyIFU7XG5cbiAgICB2YXIgX1U7XG5cbiAgICB2YXIgd2VpZ2h0OyAvLyBTdGVwIDE6IEluaXRpYWxpemUgbGV0aWFibGVzLlxuXG4gICAgX1UgPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIE4geCBDIG1hdHJpeFxuICAgICAgX1VbaV0gPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgICB9XG5cbiAgICBVID0gbmV3IEFycmF5KG5vZGVzLmxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBub2Rlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAvLyBOIHggQyBtYXRyaXhcbiAgICAgIFVbX2kzXSA9IG5ldyBBcnJheShvcHRzLmspO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIHZhciB0b3RhbCA9IDA7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3B0cy5rOyBqKyspIHtcbiAgICAgICAgVVtfaTRdW2pdID0gTWF0aC5yYW5kb20oKTtcbiAgICAgICAgdG90YWwgKz0gVVtfaTRdW2pdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgb3B0cy5rOyBfaisrKSB7XG4gICAgICAgIFVbX2k0XVtfal0gPSBVW19pNF1bX2pdIC8gdG90YWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2VudHJvaWRzID0gbmV3IEFycmF5KG9wdHMuayk7XG5cbiAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCBvcHRzLms7IF9pNSsrKSB7XG4gICAgICBjZW50cm9pZHNbX2k1XSA9IG5ldyBBcnJheShvcHRzLmF0dHJpYnV0ZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICB3ZWlnaHQgPSBuZXcgQXJyYXkobm9kZXMubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIF9pNiA9IDA7IF9pNiA8IG5vZGVzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgIC8vIE4geCBDIG1hdHJpeFxuICAgICAgd2VpZ2h0W19pNl0gPSBuZXcgQXJyYXkob3B0cy5rKTtcbiAgICB9IC8vIGVuZCBpbml0IEZDTVxuXG5cbiAgICB2YXIgaXNTdGlsbE1vdmluZyA9IHRydWU7XG4gICAgdmFyIGl0ZXJhdGlvbnMgPSAwO1xuXG4gICAgd2hpbGUgKGlzU3RpbGxNb3ZpbmcgJiYgaXRlcmF0aW9ucyA8IG9wdHMubWF4SXRlcmF0aW9ucykge1xuICAgICAgaXNTdGlsbE1vdmluZyA9IGZhbHNlOyAvLyBTdGVwIDI6IENhbGN1bGF0ZSB0aGUgY2VudHJvaWRzIGZvciBlYWNoIHN0ZXAuXG5cbiAgICAgIHVwZGF0ZUNlbnRyb2lkcyhjZW50cm9pZHMsIG5vZGVzLCBVLCB3ZWlnaHQsIG9wdHMpOyAvLyBTdGVwIDM6IFVwZGF0ZSB0aGUgcGFydGl0aW9uIG1hdHJpeCBVLlxuXG4gICAgICB1cGRhdGVNZW1iZXJzaGlwKFUsIF9VLCBjZW50cm9pZHMsIG5vZGVzLCBvcHRzKTsgLy8gU3RlcCA0OiBDaGVjayBmb3IgY29udmVyZ2VuY2UuXG5cbiAgICAgIGlmICghaGF2ZU1hdHJpY2VzQ29udmVyZ2VkKFUsIF9VLCBvcHRzLnNlbnNpdGl2aXR5VGhyZXNob2xkKSkge1xuICAgICAgICBpc1N0aWxsTW92aW5nID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaXRlcmF0aW9ucysrO1xuICAgIH0gLy8gQXNzaWduIG5vZGVzIHRvIGNsdXN0ZXJzIHdpdGggaGlnaGVzdCBwcm9iYWJpbGl0eS5cblxuXG4gICAgY2x1c3RlcnMgPSBhc3NpZ24kMShub2RlcywgVSwgb3B0cywgY3kpO1xuICAgIHJldHVybiB7XG4gICAgICBjbHVzdGVyczogY2x1c3RlcnMsXG4gICAgICBkZWdyZWVPZk1lbWJlcnNoaXA6IFVcbiAgICB9O1xuICB9O1xuXG4gIHZhciBrQ2x1c3RlcmluZyA9IHtcbiAgICBrTWVhbnM6IGtNZWFucyxcbiAgICBrTWVkb2lkczoga01lZG9pZHMsXG4gICAgZnV6enlDTWVhbnM6IGZ1enp5Q01lYW5zLFxuICAgIGZjbTogZnV6enlDTWVhbnNcbiAgfTtcblxuICAvLyBJbXBsZW1lbnRlZCBieSBab2UgWGkgQHpvZXhpIGZvciBHU09DIDIwMTZcbiAgdmFyIGRlZmF1bHRzJGEgPSBkZWZhdWx0cyRnKHtcbiAgICBkaXN0YW5jZTogJ2V1Y2xpZGVhbicsXG4gICAgLy8gZGlzdGFuY2UgbWV0cmljIHRvIGNvbXBhcmUgbm9kZXNcbiAgICBsaW5rYWdlOiAnbWluJyxcbiAgICAvLyBsaW5rYWdlIGNyaXRlcmlvbiA6IGhvdyB0byBkZXRlcm1pbmUgdGhlIGRpc3RhbmNlIGJldHdlZW4gY2x1c3RlcnMgb2Ygbm9kZXNcbiAgICBtb2RlOiAndGhyZXNob2xkJyxcbiAgICAvLyBtb2RlOid0aHJlc2hvbGQnID0+IGNsdXN0ZXJzIG11c3QgYmUgdGhyZXNob2xkIGRpc3RhbmNlIGFwYXJ0XG4gICAgdGhyZXNob2xkOiBJbmZpbml0eSxcbiAgICAvLyB0aGUgZGlzdGFuY2UgdGhyZXNob2xkXG4gICAgLy8gbW9kZTonZGVuZHJvZ3JhbScgPT4gdGhlIG5vZGVzIGFyZSBvcmdhbmlzZWQgYXMgbGVhdmVzIGluIGEgdHJlZSAoc2libGluZ3MgYXJlIGNsb3NlKSwgbWVyZ2luZyBtYWtlcyBjbHVzdGVyc1xuICAgIGFkZERlbmRyb2dyYW06IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdG8gYWRkIHRoZSBkZW5kcm9ncmFtIHRvIHRoZSBncmFwaCBmb3Igdml6XG4gICAgZGVuZHJvZ3JhbURlcHRoOiAwLFxuICAgIC8vIGRlcHRoIGF0IHdoaWNoIGRlbmRyb2dyYW0gYnJhbmNoZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSByZXR1cm5lZCBjbHVzdGVyc1xuICAgIGF0dHJpYnV0ZXM6IFtdIC8vIGFycmF5IG9mIGF0dHIgZnVuY3Rpb25zXG5cbiAgfSk7XG4gIHZhciBsaW5rYWdlQWxpYXNlcyA9IHtcbiAgICAnc2luZ2xlJzogJ21pbicsXG4gICAgJ2NvbXBsZXRlJzogJ21heCdcbiAgfTtcblxuICB2YXIgc2V0T3B0aW9ucyQxID0gZnVuY3Rpb24gc2V0T3B0aW9ucyhvcHRpb25zKSB7XG4gICAgdmFyIG9wdHMgPSBkZWZhdWx0cyRhKG9wdGlvbnMpO1xuICAgIHZhciBwcmVmZXJyZWRBbGlhcyA9IGxpbmthZ2VBbGlhc2VzW29wdHMubGlua2FnZV07XG5cbiAgICBpZiAocHJlZmVycmVkQWxpYXMgIT0gbnVsbCkge1xuICAgICAgb3B0cy5saW5rYWdlID0gcHJlZmVycmVkQWxpYXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdHM7XG4gIH07XG5cbiAgdmFyIG1lcmdlQ2xvc2VzdCA9IGZ1bmN0aW9uIG1lcmdlQ2xvc2VzdChjbHVzdGVycywgaW5kZXgsIGRpc3RzLCBtaW5zLCBvcHRzKSB7XG4gICAgLy8gRmluZCB0d28gY2xvc2VzdCBjbHVzdGVycyBmcm9tIGNhY2hlZCBtaW5zXG4gICAgdmFyIG1pbktleSA9IDA7XG4gICAgdmFyIG1pbiA9IEluZmluaXR5O1xuICAgIHZhciBkaXN0O1xuICAgIHZhciBhdHRycyA9IG9wdHMuYXR0cmlidXRlcztcblxuICAgIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICAgIHJldHVybiBjbHVzdGVyaW5nRGlzdGFuY2Uob3B0cy5kaXN0YW5jZSwgYXR0cnMubGVuZ3RoLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gYXR0cnNbaV0objEpO1xuICAgICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzW2ldKG4yKTtcbiAgICAgIH0sIG4xLCBuMik7XG4gICAgfTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBjbHVzdGVyc1tpXS5rZXk7XG4gICAgICB2YXIgX2Rpc3QgPSBkaXN0c1trZXldW21pbnNba2V5XV07XG5cbiAgICAgIGlmIChfZGlzdCA8IG1pbikge1xuICAgICAgICBtaW5LZXkgPSBrZXk7XG4gICAgICAgIG1pbiA9IF9kaXN0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRzLm1vZGUgPT09ICd0aHJlc2hvbGQnICYmIG1pbiA+PSBvcHRzLnRocmVzaG9sZCB8fCBvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJyAmJiBjbHVzdGVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgYzEgPSBpbmRleFttaW5LZXldO1xuICAgIHZhciBjMiA9IGluZGV4W21pbnNbbWluS2V5XV07XG4gICAgdmFyIG1lcmdlZDsgLy8gTWVyZ2UgdHdvIGNsb3Nlc3QgY2x1c3RlcnNcblxuICAgIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykge1xuICAgICAgbWVyZ2VkID0ge1xuICAgICAgICBsZWZ0OiBjMSxcbiAgICAgICAgcmlnaHQ6IGMyLFxuICAgICAgICBrZXk6IGMxLmtleVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkID0ge1xuICAgICAgICB2YWx1ZTogYzEudmFsdWUuY29uY2F0KGMyLnZhbHVlKSxcbiAgICAgICAga2V5OiBjMS5rZXlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2x1c3RlcnNbYzEuaW5kZXhdID0gbWVyZ2VkO1xuICAgIGNsdXN0ZXJzLnNwbGljZShjMi5pbmRleCwgMSk7XG4gICAgaW5kZXhbYzEua2V5XSA9IG1lcmdlZDsgLy8gVXBkYXRlIGRpc3RhbmNlcyB3aXRoIG5ldyBtZXJnZWQgY2x1c3RlclxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGNsdXN0ZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIGN1ciA9IGNsdXN0ZXJzW19pXTtcblxuICAgICAgaWYgKGMxLmtleSA9PT0gY3VyLmtleSkge1xuICAgICAgICBkaXN0ID0gSW5maW5pdHk7XG4gICAgICB9IGVsc2UgaWYgKG9wdHMubGlua2FnZSA9PT0gJ21pbicpIHtcbiAgICAgICAgZGlzdCA9IGRpc3RzW2MxLmtleV1bY3VyLmtleV07XG5cbiAgICAgICAgaWYgKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gPiBkaXN0c1tjMi5rZXldW2N1ci5rZXldKSB7XG4gICAgICAgICAgZGlzdCA9IGRpc3RzW2MyLmtleV1bY3VyLmtleV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob3B0cy5saW5rYWdlID09PSAnbWF4Jykge1xuICAgICAgICBkaXN0ID0gZGlzdHNbYzEua2V5XVtjdXIua2V5XTtcblxuICAgICAgICBpZiAoZGlzdHNbYzEua2V5XVtjdXIua2V5XSA8IGRpc3RzW2MyLmtleV1bY3VyLmtleV0pIHtcbiAgICAgICAgICBkaXN0ID0gZGlzdHNbYzIua2V5XVtjdXIua2V5XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChvcHRzLmxpbmthZ2UgPT09ICdtZWFuJykge1xuICAgICAgICBkaXN0ID0gKGRpc3RzW2MxLmtleV1bY3VyLmtleV0gKiBjMS5zaXplICsgZGlzdHNbYzIua2V5XVtjdXIua2V5XSAqIGMyLnNpemUpIC8gKGMxLnNpemUgKyBjMi5zaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvcHRzLm1vZGUgPT09ICdkZW5kcm9ncmFtJykgZGlzdCA9IGdldERpc3QoY3VyLnZhbHVlLCBjMS52YWx1ZSk7ZWxzZSBkaXN0ID0gZ2V0RGlzdChjdXIudmFsdWVbMF0sIGMxLnZhbHVlWzBdKTtcbiAgICAgIH1cblxuICAgICAgZGlzdHNbYzEua2V5XVtjdXIua2V5XSA9IGRpc3RzW2N1ci5rZXldW2MxLmtleV0gPSBkaXN0OyAvLyBkaXN0YW5jZSBtYXRyaXggaXMgc3ltbWV0cmljXG4gICAgfSAvLyBVcGRhdGUgY2FjaGVkIG1pbnNcblxuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgY2x1c3RlcnMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIGtleTEgPSBjbHVzdGVyc1tfaTJdLmtleTtcblxuICAgICAgaWYgKG1pbnNba2V5MV0gPT09IGMxLmtleSB8fCBtaW5zW2tleTFdID09PSBjMi5rZXkpIHtcbiAgICAgICAgdmFyIF9taW4gPSBrZXkxO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2x1c3RlcnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIga2V5MiA9IGNsdXN0ZXJzW2pdLmtleTtcblxuICAgICAgICAgIGlmIChkaXN0c1trZXkxXVtrZXkyXSA8IGRpc3RzW2tleTFdW19taW5dKSB7XG4gICAgICAgICAgICBfbWluID0ga2V5MjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBtaW5zW2tleTFdID0gX21pbjtcbiAgICAgIH1cblxuICAgICAgY2x1c3RlcnNbX2kyXS5pbmRleCA9IF9pMjtcbiAgICB9IC8vIENsZWFuIHVwIG1ldGEgZGF0YSB1c2VkIGZvciBjbHVzdGVyaW5nXG5cblxuICAgIGMxLmtleSA9IGMyLmtleSA9IGMxLmluZGV4ID0gYzIuaW5kZXggPSBudWxsO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHZhciBnZXRBbGxDaGlsZHJlbiA9IGZ1bmN0aW9uIGdldEFsbENoaWxkcmVuKHJvb3QsIGFyciwgY3kpIHtcbiAgICBpZiAoIXJvb3QpIHJldHVybjtcblxuICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICBhcnIucHVzaChyb290LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHJvb3QubGVmdCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5sZWZ0LCBhcnIpO1xuICAgICAgaWYgKHJvb3QucmlnaHQpIGdldEFsbENoaWxkcmVuKHJvb3QucmlnaHQsIGFycik7XG4gICAgfVxuICB9O1xuXG4gIHZhciBidWlsZERlbmRyb2dyYW0gPSBmdW5jdGlvbiBidWlsZERlbmRyb2dyYW0ocm9vdCwgY3kpIHtcbiAgICBpZiAoIXJvb3QpIHJldHVybiAnJztcblxuICAgIGlmIChyb290LmxlZnQgJiYgcm9vdC5yaWdodCkge1xuICAgICAgdmFyIGxlZnRTdHIgPSBidWlsZERlbmRyb2dyYW0ocm9vdC5sZWZ0LCBjeSk7XG4gICAgICB2YXIgcmlnaHRTdHIgPSBidWlsZERlbmRyb2dyYW0ocm9vdC5yaWdodCwgY3kpO1xuICAgICAgdmFyIG5vZGUgPSBjeS5hZGQoe1xuICAgICAgICBncm91cDogJ25vZGVzJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGlkOiBsZWZ0U3RyICsgJywnICsgcmlnaHRTdHJcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjeS5hZGQoe1xuICAgICAgICBncm91cDogJ2VkZ2VzJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHNvdXJjZTogbGVmdFN0cixcbiAgICAgICAgICB0YXJnZXQ6IG5vZGUuaWQoKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGN5LmFkZCh7XG4gICAgICAgIGdyb3VwOiAnZWRnZXMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgc291cmNlOiByaWdodFN0cixcbiAgICAgICAgICB0YXJnZXQ6IG5vZGUuaWQoKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBub2RlLmlkKCk7XG4gICAgfSBlbHNlIGlmIChyb290LnZhbHVlKSB7XG4gICAgICByZXR1cm4gcm9vdC52YWx1ZS5pZCgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgYnVpbGRDbHVzdGVyc0Zyb21UcmVlID0gZnVuY3Rpb24gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QsIGssIGN5KSB7XG4gICAgaWYgKCFyb290KSByZXR1cm4gW107XG4gICAgdmFyIGxlZnQgPSBbXSxcbiAgICAgICAgcmlnaHQgPSBbXSxcbiAgICAgICAgbGVhdmVzID0gW107XG5cbiAgICBpZiAoayA9PT0gMCkge1xuICAgICAgLy8gZG9uJ3QgY3V0IHRyZWUsIHNpbXBseSByZXR1cm4gYWxsIG5vZGVzIGFzIDEgc2luZ2xlIGNsdXN0ZXJcbiAgICAgIGlmIChyb290LmxlZnQpIGdldEFsbENoaWxkcmVuKHJvb3QubGVmdCwgbGVmdCk7XG4gICAgICBpZiAocm9vdC5yaWdodCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5yaWdodCwgcmlnaHQpO1xuICAgICAgbGVhdmVzID0gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlYXZlcyldO1xuICAgIH0gZWxzZSBpZiAoayA9PT0gMSkge1xuICAgICAgLy8gY3V0IGF0IHJvb3RcbiAgICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICAgIC8vIGxlYWYgbm9kZVxuICAgICAgICByZXR1cm4gW2N5LmNvbGxlY3Rpb24ocm9vdC52YWx1ZSldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJvb3QubGVmdCkgZ2V0QWxsQ2hpbGRyZW4ocm9vdC5sZWZ0LCBsZWZ0KTtcbiAgICAgICAgaWYgKHJvb3QucmlnaHQpIGdldEFsbENoaWxkcmVuKHJvb3QucmlnaHQsIHJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIFtjeS5jb2xsZWN0aW9uKGxlZnQpLCBjeS5jb2xsZWN0aW9uKHJpZ2h0KV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyb290LnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbY3kuY29sbGVjdGlvbihyb290LnZhbHVlKV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocm9vdC5sZWZ0KSBsZWZ0ID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QubGVmdCwgayAtIDEsIGN5KTtcbiAgICAgICAgaWYgKHJvb3QucmlnaHQpIHJpZ2h0ID0gYnVpbGRDbHVzdGVyc0Zyb21UcmVlKHJvb3QucmlnaHQsIGsgLSAxLCBjeSk7XG4gICAgICAgIHJldHVybiBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKiBlc2xpbnQtZW5hYmxlICovXG5cblxuICB2YXIgaGllcmFyY2hpY2FsQ2x1c3RlcmluZyA9IGZ1bmN0aW9uIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmcob3B0aW9ucykge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7IC8vIFNldCBwYXJhbWV0ZXJzIG9mIGFsZ29yaXRobTogbGlua2FnZSB0eXBlLCBkaXN0YW5jZSBtZXRyaWMsIGV0Yy5cblxuICAgIHZhciBvcHRzID0gc2V0T3B0aW9ucyQxKG9wdGlvbnMpO1xuICAgIHZhciBhdHRycyA9IG9wdHMuYXR0cmlidXRlcztcblxuICAgIHZhciBnZXREaXN0ID0gZnVuY3Rpb24gZ2V0RGlzdChuMSwgbjIpIHtcbiAgICAgIHJldHVybiBjbHVzdGVyaW5nRGlzdGFuY2Uob3B0cy5kaXN0YW5jZSwgYXR0cnMubGVuZ3RoLCBmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gYXR0cnNbaV0objEpO1xuICAgICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJzW2ldKG4yKTtcbiAgICAgIH0sIG4xLCBuMik7XG4gICAgfTsgLy8gQmVnaW4gaGllcmFyY2hpY2FsIGFsZ29yaXRobVxuXG5cbiAgICB2YXIgY2x1c3RlcnMgPSBbXTtcbiAgICB2YXIgZGlzdHMgPSBbXTsgLy8gZGlzdGFuY2VzIGJldHdlZW4gZWFjaCBwYWlyIG9mIGNsdXN0ZXJzXG5cbiAgICB2YXIgbWlucyA9IFtdOyAvLyBjbG9zZXN0IGNsdXN0ZXIgZm9yIGVhY2ggY2x1c3RlclxuXG4gICAgdmFyIGluZGV4ID0gW107IC8vIGhhc2ggb2YgYWxsIGNsdXN0ZXJzIGJ5IGtleVxuICAgIC8vIEluIGFnZ2xvbWVyYXRpdmUgKGJvdHRvbS11cCkgY2x1c3RlcmluZywgZWFjaCBub2RlIHN0YXJ0cyBhcyBpdHMgb3duIGNsdXN0ZXJcblxuICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgIHZhciBjbHVzdGVyID0ge1xuICAgICAgICB2YWx1ZTogb3B0cy5tb2RlID09PSAnZGVuZHJvZ3JhbScgPyBub2Rlc1tuXSA6IFtub2Rlc1tuXV0sXG4gICAgICAgIGtleTogbixcbiAgICAgICAgaW5kZXg6IG5cbiAgICAgIH07XG4gICAgICBjbHVzdGVyc1tuXSA9IGNsdXN0ZXI7XG4gICAgICBpbmRleFtuXSA9IGNsdXN0ZXI7XG4gICAgICBkaXN0c1tuXSA9IFtdO1xuICAgICAgbWluc1tuXSA9IDA7XG4gICAgfSAvLyBDYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGJldHdlZW4gZWFjaCBwYWlyIG9mIGNsdXN0ZXJzXG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2x1c3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDw9IGk7IGorKykge1xuICAgICAgICB2YXIgZGlzdCA9IHZvaWQgMDtcblxuICAgICAgICBpZiAob3B0cy5tb2RlID09PSAnZGVuZHJvZ3JhbScpIHtcbiAgICAgICAgICAvLyBtb2RlcyBzdG9yZSBjbHVzdGVyIHZhbHVlcyBkaWZmZXJlbnRseVxuICAgICAgICAgIGRpc3QgPSBpID09PSBqID8gSW5maW5pdHkgOiBnZXREaXN0KGNsdXN0ZXJzW2ldLnZhbHVlLCBjbHVzdGVyc1tqXS52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlzdCA9IGkgPT09IGogPyBJbmZpbml0eSA6IGdldERpc3QoY2x1c3RlcnNbaV0udmFsdWVbMF0sIGNsdXN0ZXJzW2pdLnZhbHVlWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpc3RzW2ldW2pdID0gZGlzdDtcbiAgICAgICAgZGlzdHNbal1baV0gPSBkaXN0O1xuXG4gICAgICAgIGlmIChkaXN0IDwgZGlzdHNbaV1bbWluc1tpXV0pIHtcbiAgICAgICAgICBtaW5zW2ldID0gajsgLy8gQ2FjaGUgbWluczogY2xvc2VzdCBjbHVzdGVyIHRvIGNsdXN0ZXIgaSBpcyBjbHVzdGVyIGpcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gRmluZCB0aGUgY2xvc2VzdCBwYWlyIG9mIGNsdXN0ZXJzIGFuZCBtZXJnZSB0aGVtIGludG8gYSBzaW5nbGUgY2x1c3Rlci5cbiAgICAvLyBVcGRhdGUgZGlzdGFuY2VzIGJldHdlZW4gbmV3IGNsdXN0ZXIgYW5kIGVhY2ggb2YgdGhlIG9sZCBjbHVzdGVycywgYW5kIGxvb3AgdW50aWwgdGhyZXNob2xkIHJlYWNoZWQuXG5cblxuICAgIHZhciBtZXJnZWQgPSBtZXJnZUNsb3Nlc3QoY2x1c3RlcnMsIGluZGV4LCBkaXN0cywgbWlucywgb3B0cyk7XG5cbiAgICB3aGlsZSAobWVyZ2VkKSB7XG4gICAgICBtZXJnZWQgPSBtZXJnZUNsb3Nlc3QoY2x1c3RlcnMsIGluZGV4LCBkaXN0cywgbWlucywgb3B0cyk7XG4gICAgfVxuXG4gICAgdmFyIHJldENsdXN0ZXJzOyAvLyBEZW5kcm9ncmFtIG1vZGUgYnVpbGRzIHRoZSBoaWVyYXJjaHkgYW5kIGFkZHMgaW50ZXJtZWRpYXJ5IG5vZGVzICsgZWRnZXNcbiAgICAvLyBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgdGhlIGNsdXN0ZXJzLlxuXG4gICAgaWYgKG9wdHMubW9kZSA9PT0gJ2RlbmRyb2dyYW0nKSB7XG4gICAgICByZXRDbHVzdGVycyA9IGJ1aWxkQ2x1c3RlcnNGcm9tVHJlZShjbHVzdGVyc1swXSwgb3B0cy5kZW5kcm9ncmFtRGVwdGgsIGN5KTtcbiAgICAgIGlmIChvcHRzLmFkZERlbmRyb2dyYW0pIGJ1aWxkRGVuZHJvZ3JhbShjbHVzdGVyc1swXSwgY3kpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWd1bGFyIG1vZGUgc2ltcGx5IHJldHVybnMgdGhlIGNsdXN0ZXJzXG4gICAgICByZXRDbHVzdGVycyA9IG5ldyBBcnJheShjbHVzdGVycy5sZW5ndGgpO1xuICAgICAgY2x1c3RlcnMuZm9yRWFjaChmdW5jdGlvbiAoY2x1c3RlciwgaSkge1xuICAgICAgICAvLyBDbGVhbiB1cCBtZXRhIGRhdGEgdXNlZCBmb3IgY2x1c3RlcmluZ1xuICAgICAgICBjbHVzdGVyLmtleSA9IGNsdXN0ZXIuaW5kZXggPSBudWxsO1xuICAgICAgICByZXRDbHVzdGVyc1tpXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3Rlci52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0Q2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmckMSA9IHtcbiAgICBoaWVyYXJjaGljYWxDbHVzdGVyaW5nOiBoaWVyYXJjaGljYWxDbHVzdGVyaW5nLFxuICAgIGhjYTogaGllcmFyY2hpY2FsQ2x1c3RlcmluZ1xuICB9O1xuXG4gIC8vIEltcGxlbWVudGVkIGJ5IFpvZSBYaSBAem9leGkgZm9yIEdTT0MgMjAxNlxuICB2YXIgZGVmYXVsdHMkOSA9IGRlZmF1bHRzJGcoe1xuICAgIGRpc3RhbmNlOiAnZXVjbGlkZWFuJyxcbiAgICAvLyBkaXN0YW5jZSBtZXRyaWMgdG8gY29tcGFyZSBhdHRyaWJ1dGVzIGJldHdlZW4gdHdvIG5vZGVzXG4gICAgcHJlZmVyZW5jZTogJ21lZGlhbicsXG4gICAgLy8gc3VpdGFiaWxpdHkgb2YgYSBkYXRhIHBvaW50IHRvIHNlcnZlIGFzIGFuIGV4ZW1wbGFyXG4gICAgZGFtcGluZzogMC44LFxuICAgIC8vIGRhbXBpbmcgZmFjdG9yIGJldHdlZW4gWzAuNSwgMSlcbiAgICBtYXhJdGVyYXRpb25zOiAxMDAwLFxuICAgIC8vIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW5cbiAgICBtaW5JdGVyYXRpb25zOiAxMDAsXG4gICAgLy8gbWluIG51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJ1biBpbiBvcmRlciBmb3IgY2x1c3RlcmluZyB0byBzdG9wXG4gICAgYXR0cmlidXRlczogWy8vIGZ1bmN0aW9ucyB0byBxdWFudGlmeSB0aGUgc2ltaWxhcml0eSBiZXR3ZWVuIGFueSB0d28gcG9pbnRzXG4gICAgICAvLyBlLmcuIG5vZGUgPT4gbm9kZS5kYXRhKCd3ZWlnaHQnKVxuICAgIF1cbiAgfSk7XG5cbiAgdmFyIHNldE9wdGlvbnMgPSBmdW5jdGlvbiBzZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgICB2YXIgZG1wID0gb3B0aW9ucy5kYW1waW5nO1xuICAgIHZhciBwcmVmID0gb3B0aW9ucy5wcmVmZXJlbmNlO1xuXG4gICAgaWYgKCEoMC41IDw9IGRtcCAmJiBkbXAgPCAxKSkge1xuICAgICAgZXJyb3IoXCJEYW1waW5nIG11c3QgcmFuZ2Ugb24gWzAuNSwgMSkuICBHb3Q6IFwiLmNvbmNhdChkbXApKTtcbiAgICB9XG5cbiAgICB2YXIgdmFsaWRQcmVmcyA9IFsnbWVkaWFuJywgJ21lYW4nLCAnbWluJywgJ21heCddO1xuXG4gICAgaWYgKCEodmFsaWRQcmVmcy5zb21lKGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gdiA9PT0gcHJlZjtcbiAgICB9KSB8fCBudW1iZXIkMShwcmVmKSkpIHtcbiAgICAgIGVycm9yKFwiUHJlZmVyZW5jZSBtdXN0IGJlIG9uZSBvZiBbXCIuY29uY2F0KHZhbGlkUHJlZnMubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiBcIidcIi5jb25jYXQocCwgXCInXCIpO1xuICAgICAgfSkuam9pbignLCAnKSwgXCJdIG9yIGEgbnVtYmVyLiAgR290OiBcIikuY29uY2F0KHByZWYpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdHMkOShvcHRpb25zKTtcbiAgfTtcbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgdmFyIGdldFNpbWlsYXJpdHkgPSBmdW5jdGlvbiBnZXRTaW1pbGFyaXR5KHR5cGUsIG4xLCBuMiwgYXR0cmlidXRlcykge1xuICAgIHZhciBhdHRyID0gZnVuY3Rpb24gYXR0cihuLCBpKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlc1tpXShuKTtcbiAgICB9OyAvLyBuYiBuZWdhdGl2ZSBiZWNhdXNlIHNpbWlsYXJpdHkgc2hvdWxkIGhhdmUgYW4gaW52ZXJzZSByZWxhdGlvbnNoaXAgdG8gZGlzdGFuY2VcblxuXG4gICAgcmV0dXJuIC1jbHVzdGVyaW5nRGlzdGFuY2UodHlwZSwgYXR0cmlidXRlcy5sZW5ndGgsIGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gYXR0cihuMSwgaSk7XG4gICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBhdHRyKG4yLCBpKTtcbiAgICB9LCBuMSwgbjIpO1xuICB9O1xuXG4gIHZhciBnZXRQcmVmZXJlbmNlID0gZnVuY3Rpb24gZ2V0UHJlZmVyZW5jZShTLCBwcmVmZXJlbmNlKSB7XG4gICAgLy8gbGFyZ2VyIHByZWZlcmVuY2UgPSBncmVhdGVyICMgb2YgY2x1c3RlcnNcbiAgICB2YXIgcCA9IG51bGw7XG5cbiAgICBpZiAocHJlZmVyZW5jZSA9PT0gJ21lZGlhbicpIHtcbiAgICAgIHAgPSBtZWRpYW4oUyk7XG4gICAgfSBlbHNlIGlmIChwcmVmZXJlbmNlID09PSAnbWVhbicpIHtcbiAgICAgIHAgPSBtZWFuKFMpO1xuICAgIH0gZWxzZSBpZiAocHJlZmVyZW5jZSA9PT0gJ21pbicpIHtcbiAgICAgIHAgPSBtaW4oUyk7XG4gICAgfSBlbHNlIGlmIChwcmVmZXJlbmNlID09PSAnbWF4Jykge1xuICAgICAgcCA9IG1heChTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3VzdG9tIHByZWZlcmVuY2UgbnVtYmVyLCBhcyBzZXQgYnkgdXNlclxuICAgICAgcCA9IHByZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHA7XG4gIH07XG5cbiAgdmFyIGZpbmRFeGVtcGxhcnMgPSBmdW5jdGlvbiBmaW5kRXhlbXBsYXJzKG4sIFIsIEEpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgIGlmIChSW2kgKiBuICsgaV0gKyBBW2kgKiBuICsgaV0gPiAwKSB7XG4gICAgICAgIGluZGljZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5kaWNlcztcbiAgfTtcblxuICB2YXIgYXNzaWduQ2x1c3RlcnMgPSBmdW5jdGlvbiBhc3NpZ25DbHVzdGVycyhuLCBTLCBleGVtcGxhcnMpIHtcbiAgICB2YXIgY2x1c3RlcnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMTtcbiAgICAgIHZhciBtYXggPSAtSW5maW5pdHk7XG5cbiAgICAgIGZvciAodmFyIGVpID0gMDsgZWkgPCBleGVtcGxhcnMubGVuZ3RoOyBlaSsrKSB7XG4gICAgICAgIHZhciBlID0gZXhlbXBsYXJzW2VpXTtcblxuICAgICAgICBpZiAoU1tpICogbiArIGVdID4gbWF4KSB7XG4gICAgICAgICAgaW5kZXggPSBlO1xuICAgICAgICAgIG1heCA9IFNbaSAqIG4gKyBlXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgIGNsdXN0ZXJzLnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9laSA9IDA7IF9laSA8IGV4ZW1wbGFycy5sZW5ndGg7IF9laSsrKSB7XG4gICAgICBjbHVzdGVyc1tleGVtcGxhcnNbX2VpXV0gPSBleGVtcGxhcnNbX2VpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIGFzc2lnbiA9IGZ1bmN0aW9uIGFzc2lnbihuLCBTLCBleGVtcGxhcnMpIHtcbiAgICB2YXIgY2x1c3RlcnMgPSBhc3NpZ25DbHVzdGVycyhuLCBTLCBleGVtcGxhcnMpO1xuXG4gICAgZm9yICh2YXIgZWkgPSAwOyBlaSA8IGV4ZW1wbGFycy5sZW5ndGg7IGVpKyspIHtcbiAgICAgIHZhciBpaSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGNsdXN0ZXJzLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIGlmIChjbHVzdGVyc1tjXSA9PT0gZXhlbXBsYXJzW2VpXSkge1xuICAgICAgICAgIGlpLnB1c2goYyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIG1heEkgPSAtMTtcbiAgICAgIHZhciBtYXhTdW0gPSAtSW5maW5pdHk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpaS5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHN1bSArPSBTW2lpW2pdICogbiArIGlpW2ldXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gPiBtYXhTdW0pIHtcbiAgICAgICAgICBtYXhJID0gaTtcbiAgICAgICAgICBtYXhTdW0gPSBzdW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXhlbXBsYXJzW2VpXSA9IGlpW21heEldO1xuICAgIH1cblxuICAgIGNsdXN0ZXJzID0gYXNzaWduQ2x1c3RlcnMobiwgUywgZXhlbXBsYXJzKTtcbiAgICByZXR1cm4gY2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIGFmZmluaXR5UHJvcGFnYXRpb24gPSBmdW5jdGlvbiBhZmZpbml0eVByb3BhZ2F0aW9uKG9wdGlvbnMpIHtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuICAgIHZhciBvcHRzID0gc2V0T3B0aW9ucyhvcHRpb25zKTsgLy8gTWFwIGVhY2ggbm9kZSB0byBpdHMgcG9zaXRpb24gaW4gbm9kZSBhcnJheVxuXG4gICAgdmFyIGlkMnBvc2l0aW9uID0ge307XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZDJwb3NpdGlvbltub2Rlc1tpXS5pZCgpXSA9IGk7XG4gICAgfSAvLyBCZWdpbiBhZmZpbml0eSBwcm9wYWdhdGlvbiBhbGdvcml0aG1cblxuXG4gICAgdmFyIG47IC8vIG51bWJlciBvZiBkYXRhIHBvaW50c1xuXG4gICAgdmFyIG4yOyAvLyBzaXplIG9mIG1hdHJpY2VzXG5cbiAgICB2YXIgUzsgLy8gc2ltaWxhcml0eSBtYXRyaXggKDFEIGFycmF5KVxuXG4gICAgdmFyIHA7IC8vIHByZWZlcmVuY2Uvc3VpdGFiaWxpdHkgb2YgYSBkYXRhIHBvaW50IHRvIHNlcnZlIGFzIGFuIGV4ZW1wbGFyXG5cbiAgICB2YXIgUjsgLy8gcmVzcG9uc2liaWxpdHkgbWF0cml4ICgxRCBhcnJheSlcblxuICAgIHZhciBBOyAvLyBhdmFpbGFiaWxpdHkgbWF0cml4ICgxRCBhcnJheSlcblxuICAgIG4gPSBub2Rlcy5sZW5ndGg7XG4gICAgbjIgPSBuICogbjsgLy8gSW5pdGlhbGl6ZSBhbmQgYnVpbGQgUyBzaW1pbGFyaXR5IG1hdHJpeFxuXG4gICAgUyA9IG5ldyBBcnJheShuMik7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbjI7IF9pKyspIHtcbiAgICAgIFNbX2ldID0gLUluZmluaXR5OyAvLyBmb3IgY2FzZXMgd2hlcmUgdHdvIGRhdGEgcG9pbnRzIHNob3VsZG4ndCBiZSBsaW5rZWQgdG9nZXRoZXJcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBuOyBfaTIrKykge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKF9pMiAhPT0gaikge1xuICAgICAgICAgIFNbX2kyICogbiArIGpdID0gZ2V0U2ltaWxhcml0eShvcHRzLmRpc3RhbmNlLCBub2Rlc1tfaTJdLCBub2Rlc1tqXSwgb3B0cy5hdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gUGxhY2UgcHJlZmVyZW5jZXMgb24gdGhlIGRpYWdvbmFsIG9mIFNcblxuXG4gICAgcCA9IGdldFByZWZlcmVuY2UoUywgb3B0cy5wcmVmZXJlbmNlKTtcblxuICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IG47IF9pMysrKSB7XG4gICAgICBTW19pMyAqIG4gKyBfaTNdID0gcDtcbiAgICB9IC8vIEluaXRpYWxpemUgUiByZXNwb25zaWJpbGl0eSBtYXRyaXhcblxuXG4gICAgUiA9IG5ldyBBcnJheShuMik7XG5cbiAgICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBuMjsgX2k0KyspIHtcbiAgICAgIFJbX2k0XSA9IDAuMDtcbiAgICB9IC8vIEluaXRpYWxpemUgQSBhdmFpbGFiaWxpdHkgbWF0cml4XG5cblxuICAgIEEgPSBuZXcgQXJyYXkobjIpO1xuXG4gICAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbjI7IF9pNSsrKSB7XG4gICAgICBBW19pNV0gPSAwLjA7XG4gICAgfVxuXG4gICAgdmFyIG9sZCA9IG5ldyBBcnJheShuKTtcbiAgICB2YXIgUnAgPSBuZXcgQXJyYXkobik7XG4gICAgdmFyIHNlID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgbjsgX2k2KyspIHtcbiAgICAgIG9sZFtfaTZdID0gMC4wO1xuICAgICAgUnBbX2k2XSA9IDAuMDtcbiAgICAgIHNlW19pNl0gPSAwO1xuICAgIH1cblxuICAgIHZhciBlID0gbmV3IEFycmF5KG4gKiBvcHRzLm1pbkl0ZXJhdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgZS5sZW5ndGg7IF9pNysrKSB7XG4gICAgICBlW19pN10gPSAwO1xuICAgIH1cblxuICAgIHZhciBpdGVyO1xuXG4gICAgZm9yIChpdGVyID0gMDsgaXRlciA8IG9wdHMubWF4SXRlcmF0aW9uczsgaXRlcisrKSB7XG4gICAgICAvLyBtYWluIGFsZ29yaXRobWljIGxvb3BcbiAgICAgIC8vIFVwZGF0ZSBSIHJlc3BvbnNpYmlsaXR5IG1hdHJpeFxuICAgICAgZm9yICh2YXIgX2k4ID0gMDsgX2k4IDwgbjsgX2k4KyspIHtcbiAgICAgICAgdmFyIG1heCA9IC1JbmZpbml0eSxcbiAgICAgICAgICAgIG1heDIgPSAtSW5maW5pdHksXG4gICAgICAgICAgICBtYXhJID0gLTEsXG4gICAgICAgICAgICBBUyA9IDAuMDtcblxuICAgICAgICBmb3IgKHZhciBfaiA9IDA7IF9qIDwgbjsgX2orKykge1xuICAgICAgICAgIG9sZFtfal0gPSBSW19pOCAqIG4gKyBfal07XG4gICAgICAgICAgQVMgPSBBW19pOCAqIG4gKyBfal0gKyBTW19pOCAqIG4gKyBfal07XG5cbiAgICAgICAgICBpZiAoQVMgPj0gbWF4KSB7XG4gICAgICAgICAgICBtYXgyID0gbWF4O1xuICAgICAgICAgICAgbWF4ID0gQVM7XG4gICAgICAgICAgICBtYXhJID0gX2o7XG4gICAgICAgICAgfSBlbHNlIGlmIChBUyA+IG1heDIpIHtcbiAgICAgICAgICAgIG1heDIgPSBBUztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBfajIgPSAwOyBfajIgPCBuOyBfajIrKykge1xuICAgICAgICAgIFJbX2k4ICogbiArIF9qMl0gPSAoMSAtIG9wdHMuZGFtcGluZykgKiAoU1tfaTggKiBuICsgX2oyXSAtIG1heCkgKyBvcHRzLmRhbXBpbmcgKiBvbGRbX2oyXTtcbiAgICAgICAgfVxuXG4gICAgICAgIFJbX2k4ICogbiArIG1heEldID0gKDEgLSBvcHRzLmRhbXBpbmcpICogKFNbX2k4ICogbiArIG1heEldIC0gbWF4MikgKyBvcHRzLmRhbXBpbmcgKiBvbGRbbWF4SV07XG4gICAgICB9IC8vIFVwZGF0ZSBBIGF2YWlsYWJpbGl0eSBtYXRyaXhcblxuXG4gICAgICBmb3IgKHZhciBfaTkgPSAwOyBfaTkgPCBuOyBfaTkrKykge1xuICAgICAgICB2YXIgc3VtID0gMDtcblxuICAgICAgICBmb3IgKHZhciBfajMgPSAwOyBfajMgPCBuOyBfajMrKykge1xuICAgICAgICAgIG9sZFtfajNdID0gQVtfajMgKiBuICsgX2k5XTtcbiAgICAgICAgICBScFtfajNdID0gTWF0aC5tYXgoMCwgUltfajMgKiBuICsgX2k5XSk7XG4gICAgICAgICAgc3VtICs9IFJwW19qM107XG4gICAgICAgIH1cblxuICAgICAgICBzdW0gLT0gUnBbX2k5XTtcbiAgICAgICAgUnBbX2k5XSA9IFJbX2k5ICogbiArIF9pOV07XG4gICAgICAgIHN1bSArPSBScFtfaTldO1xuXG4gICAgICAgIGZvciAodmFyIF9qNCA9IDA7IF9qNCA8IG47IF9qNCsrKSB7XG4gICAgICAgICAgQVtfajQgKiBuICsgX2k5XSA9ICgxIC0gb3B0cy5kYW1waW5nKSAqIE1hdGgubWluKDAsIHN1bSAtIFJwW19qNF0pICsgb3B0cy5kYW1waW5nICogb2xkW19qNF07XG4gICAgICAgIH1cblxuICAgICAgICBBW19pOSAqIG4gKyBfaTldID0gKDEgLSBvcHRzLmRhbXBpbmcpICogKHN1bSAtIFJwW19pOV0pICsgb3B0cy5kYW1waW5nICogb2xkW19pOV07XG4gICAgICB9IC8vIENoZWNrIGZvciBjb252ZXJnZW5jZVxuXG5cbiAgICAgIHZhciBLID0gMDtcblxuICAgICAgZm9yICh2YXIgX2kxMCA9IDA7IF9pMTAgPCBuOyBfaTEwKyspIHtcbiAgICAgICAgdmFyIEUgPSBBW19pMTAgKiBuICsgX2kxMF0gKyBSW19pMTAgKiBuICsgX2kxMF0gPiAwID8gMSA6IDA7XG4gICAgICAgIGVbaXRlciAlIG9wdHMubWluSXRlcmF0aW9ucyAqIG4gKyBfaTEwXSA9IEU7XG4gICAgICAgIEsgKz0gRTtcbiAgICAgIH1cblxuICAgICAgaWYgKEsgPiAwICYmIChpdGVyID49IG9wdHMubWluSXRlcmF0aW9ucyAtIDEgfHwgaXRlciA9PSBvcHRzLm1heEl0ZXJhdGlvbnMgLSAxKSkge1xuICAgICAgICB2YXIgX3N1bSA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgX2kxMSA9IDA7IF9pMTEgPCBuOyBfaTExKyspIHtcbiAgICAgICAgICBzZVtfaTExXSA9IDA7XG5cbiAgICAgICAgICBmb3IgKHZhciBfajUgPSAwOyBfajUgPCBvcHRzLm1pbkl0ZXJhdGlvbnM7IF9qNSsrKSB7XG4gICAgICAgICAgICBzZVtfaTExXSArPSBlW19qNSAqIG4gKyBfaTExXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VbX2kxMV0gPT09IDAgfHwgc2VbX2kxMV0gPT09IG9wdHMubWluSXRlcmF0aW9ucykge1xuICAgICAgICAgICAgX3N1bSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfc3VtID09PSBuKSB7XG4gICAgICAgICAgLy8gdGhlbiB3ZSBoYXZlIGNvbnZlcmdlbmNlXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IC8vIElkZW50aWZ5IGV4ZW1wbGFycyAoY2x1c3RlciBjZW50ZXJzKVxuXG5cbiAgICB2YXIgZXhlbXBsYXJzSW5kaWNlcyA9IGZpbmRFeGVtcGxhcnMobiwgUiwgQSk7IC8vIEFzc2lnbiBub2RlcyB0byBjbHVzdGVyc1xuXG4gICAgdmFyIGNsdXN0ZXJJbmRpY2VzID0gYXNzaWduKG4sIFMsIGV4ZW1wbGFyc0luZGljZXMpO1xuICAgIHZhciBjbHVzdGVycyA9IHt9O1xuXG4gICAgZm9yICh2YXIgYyA9IDA7IGMgPCBleGVtcGxhcnNJbmRpY2VzLmxlbmd0aDsgYysrKSB7XG4gICAgICBjbHVzdGVyc1tleGVtcGxhcnNJbmRpY2VzW2NdXSA9IFtdO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9pMTIgPSAwOyBfaTEyIDwgbm9kZXMubGVuZ3RoOyBfaTEyKyspIHtcbiAgICAgIHZhciBwb3MgPSBpZDJwb3NpdGlvbltub2Rlc1tfaTEyXS5pZCgpXTtcblxuICAgICAgdmFyIGNsdXN0ZXJJbmRleCA9IGNsdXN0ZXJJbmRpY2VzW3Bvc107XG5cbiAgICAgIGlmIChjbHVzdGVySW5kZXggIT0gbnVsbCkge1xuICAgICAgICAvLyB0aGUgbm9kZSBtYXkgaGF2ZSBub3QgYmVlbiBhc3NpZ25lZCBhIGNsdXN0ZXIgaWYgbm8gdmFsaWQgYXR0cmlidXRlcyB3ZXJlIHNwZWNpZmllZFxuICAgICAgICBjbHVzdGVyc1tjbHVzdGVySW5kZXhdLnB1c2gobm9kZXNbX2kxMl0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXRDbHVzdGVycyA9IG5ldyBBcnJheShleGVtcGxhcnNJbmRpY2VzLmxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBfYyA9IDA7IF9jIDwgZXhlbXBsYXJzSW5kaWNlcy5sZW5ndGg7IF9jKyspIHtcbiAgICAgIHJldENsdXN0ZXJzW19jXSA9IGN5LmNvbGxlY3Rpb24oY2x1c3RlcnNbZXhlbXBsYXJzSW5kaWNlc1tfY11dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0Q2x1c3RlcnM7XG4gIH07XG5cbiAgdmFyIGFmZmluaXR5UHJvcGFnYXRpb24kMSA9IHtcbiAgICBhZmZpbml0eVByb3BhZ2F0aW9uOiBhZmZpbml0eVByb3BhZ2F0aW9uLFxuICAgIGFwOiBhZmZpbml0eVByb3BhZ2F0aW9uXG4gIH07XG5cbiAgdmFyIGhpZXJob2x6ZXJEZWZhdWx0cyA9IGRlZmF1bHRzJGcoe1xuICAgIHJvb3Q6IHVuZGVmaW5lZCxcbiAgICBkaXJlY3RlZDogZmFsc2VcbiAgfSk7XG4gIHZhciBlbGVzZm4kayA9IHtcbiAgICBoaWVyaG9semVyOiBmdW5jdGlvbiBoaWVyaG9semVyKG9wdGlvbnMpIHtcbiAgICAgIGlmICghcGxhaW5PYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgcm9vdDogYXJnc1swXSxcbiAgICAgICAgICBkaXJlY3RlZDogYXJnc1sxXVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgX2hpZXJob2x6ZXJEZWZhdWx0cyA9IGhpZXJob2x6ZXJEZWZhdWx0cyhvcHRpb25zKSxcbiAgICAgICAgICByb290ID0gX2hpZXJob2x6ZXJEZWZhdWx0cy5yb290LFxuICAgICAgICAgIGRpcmVjdGVkID0gX2hpZXJob2x6ZXJEZWZhdWx0cy5kaXJlY3RlZDtcblxuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgICAgdmFyIGRmbGFnID0gZmFsc2U7XG4gICAgICB2YXIgb2RkSW47XG4gICAgICB2YXIgb2RkT3V0O1xuICAgICAgdmFyIHN0YXJ0VmVydGV4O1xuICAgICAgaWYgKHJvb3QpIHN0YXJ0VmVydGV4ID0gc3RyaW5nKHJvb3QpID8gdGhpcy5maWx0ZXIocm9vdClbMF0uaWQoKSA6IHJvb3RbMF0uaWQoKTtcbiAgICAgIHZhciBub2RlcyA9IHt9O1xuICAgICAgdmFyIGVkZ2VzID0ge307XG5cbiAgICAgIGlmIChkaXJlY3RlZCkge1xuICAgICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgICAgdmFyIGluZCA9IGVsZS5pbmRlZ3JlZSh0cnVlKTtcbiAgICAgICAgICAgIHZhciBvdXRkID0gZWxlLm91dGRlZ3JlZSh0cnVlKTtcbiAgICAgICAgICAgIHZhciBkMSA9IGluZCAtIG91dGQ7XG4gICAgICAgICAgICB2YXIgZDIgPSBvdXRkIC0gaW5kO1xuXG4gICAgICAgICAgICBpZiAoZDEgPT0gMSkge1xuICAgICAgICAgICAgICBpZiAob2RkSW4pIGRmbGFnID0gdHJ1ZTtlbHNlIG9kZEluID0gaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGQyID09IDEpIHtcbiAgICAgICAgICAgICAgaWYgKG9kZE91dCkgZGZsYWcgPSB0cnVlO2Vsc2Ugb2RkT3V0ID0gaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGQyID4gMSB8fCBkMSA+IDEpIHtcbiAgICAgICAgICAgICAgZGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBub2Rlc1tpZF0gPSBbXTtcbiAgICAgICAgICAgIGVsZS5vdXRnb2VycygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgaWYgKGUuaXNFZGdlKCkpIG5vZGVzW2lkXS5wdXNoKGUuaWQoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWRnZXNbaWRdID0gW3VuZGVmaW5lZCwgZWxlLnRhcmdldCgpLmlkKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgICAgdmFyIGQgPSBlbGUuZGVncmVlKHRydWUpO1xuXG4gICAgICAgICAgICBpZiAoZCAlIDIpIHtcbiAgICAgICAgICAgICAgaWYgKCFvZGRJbikgb2RkSW4gPSBpZDtlbHNlIGlmICghb2RkT3V0KSBvZGRPdXQgPSBpZDtlbHNlIGRmbGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm9kZXNbaWRdID0gW107XG4gICAgICAgICAgICBlbGUuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBub2Rlc1tpZF0ucHVzaChlLmlkKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVkZ2VzW2lkXSA9IFtlbGUuc291cmNlKCkuaWQoKSwgZWxlLnRhcmdldCgpLmlkKCldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSB7XG4gICAgICAgIGZvdW5kOiBmYWxzZSxcbiAgICAgICAgdHJhaWw6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICAgIGlmIChkZmxhZykgcmV0dXJuIHJlc3VsdDtlbHNlIGlmIChvZGRPdXQgJiYgb2RkSW4pIHtcbiAgICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgICAgaWYgKHN0YXJ0VmVydGV4ICYmIG9kZE91dCAhPSBzdGFydFZlcnRleCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdGFydFZlcnRleCA9IG9kZE91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3RhcnRWZXJ0ZXggJiYgb2RkT3V0ICE9IHN0YXJ0VmVydGV4ICYmIG9kZEluICE9IHN0YXJ0VmVydGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXJ0VmVydGV4KSB7XG4gICAgICAgICAgICBzdGFydFZlcnRleCA9IG9kZE91dDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghc3RhcnRWZXJ0ZXgpIHN0YXJ0VmVydGV4ID0gZWxlc1swXS5pZCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgd2FsayA9IGZ1bmN0aW9uIHdhbGsodikge1xuICAgICAgICB2YXIgY3VycmVudE5vZGUgPSB2O1xuICAgICAgICB2YXIgc3VidG91ciA9IFt2XTtcbiAgICAgICAgdmFyIGFkaiwgYWRqVGFpbCwgYWRqSGVhZDtcblxuICAgICAgICB3aGlsZSAobm9kZXNbY3VycmVudE5vZGVdLmxlbmd0aCkge1xuICAgICAgICAgIGFkaiA9IG5vZGVzW2N1cnJlbnROb2RlXS5zaGlmdCgpO1xuICAgICAgICAgIGFkalRhaWwgPSBlZGdlc1thZGpdWzBdO1xuICAgICAgICAgIGFkakhlYWQgPSBlZGdlc1thZGpdWzFdO1xuXG4gICAgICAgICAgaWYgKGN1cnJlbnROb2RlICE9IGFkakhlYWQpIHtcbiAgICAgICAgICAgIG5vZGVzW2FkakhlYWRdID0gbm9kZXNbYWRqSGVhZF0uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlICE9IGFkajtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY3VycmVudE5vZGUgPSBhZGpIZWFkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWRpcmVjdGVkICYmIGN1cnJlbnROb2RlICE9IGFkalRhaWwpIHtcbiAgICAgICAgICAgIG5vZGVzW2FkalRhaWxdID0gbm9kZXNbYWRqVGFpbF0uZmlsdGVyKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlICE9IGFkajtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY3VycmVudE5vZGUgPSBhZGpUYWlsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YnRvdXIudW5zaGlmdChhZGopO1xuICAgICAgICAgIHN1YnRvdXIudW5zaGlmdChjdXJyZW50Tm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VidG91cjtcbiAgICAgIH07XG5cbiAgICAgIHZhciB0cmFpbCA9IFtdO1xuICAgICAgdmFyIHN1YnRvdXIgPSBbXTtcbiAgICAgIHN1YnRvdXIgPSB3YWxrKHN0YXJ0VmVydGV4KTtcblxuICAgICAgd2hpbGUgKHN1YnRvdXIubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgaWYgKG5vZGVzW3N1YnRvdXJbMF1dLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgdHJhaWwudW5zaGlmdChlbGVzLmdldEVsZW1lbnRCeUlkKHN1YnRvdXIuc2hpZnQoKSkpO1xuICAgICAgICAgIHRyYWlsLnVuc2hpZnQoZWxlcy5nZXRFbGVtZW50QnlJZChzdWJ0b3VyLnNoaWZ0KCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJ0b3VyID0gd2FsayhzdWJ0b3VyLnNoaWZ0KCkpLmNvbmNhdChzdWJ0b3VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0cmFpbC51bnNoaWZ0KGVsZXMuZ2V0RWxlbWVudEJ5SWQoc3VidG91ci5zaGlmdCgpKSk7IC8vIGZpbmFsIG5vZGVcblxuICAgICAgZm9yICh2YXIgZCBpbiBub2Rlcykge1xuICAgICAgICBpZiAobm9kZXNbZF0ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQuZm91bmQgPSB0cnVlO1xuICAgICAgcmVzdWx0LnRyYWlsID0gdGhpcy5zcGF3bih0cmFpbCwgdHJ1ZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfTtcblxuICB2YXIgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCA9IGZ1bmN0aW9uIGhvcGNyb2Z0VGFyamFuQmljb25uZWN0ZWQoKSB7XG4gICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgIHZhciBub2RlcyA9IHt9O1xuICAgIHZhciBpZCA9IDA7XG4gICAgdmFyIGVkZ2VDb3VudCA9IDA7XG4gICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgdmlzaXRlZEVkZ2VzID0ge307XG5cbiAgICB2YXIgYnVpbGRDb21wb25lbnQgPSBmdW5jdGlvbiBidWlsZENvbXBvbmVudCh4LCB5KSB7XG4gICAgICB2YXIgaSA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgY3V0c2V0ID0gW107XG4gICAgICB2YXIgY29tcG9uZW50ID0gZWxlcy5zcGF3bigpO1xuXG4gICAgICB3aGlsZSAoc3RhY2tbaV0ueCAhPSB4IHx8IHN0YWNrW2ldLnkgIT0geSkge1xuICAgICAgICBjdXRzZXQucHVzaChzdGFjay5wb3AoKS5lZGdlKTtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuXG4gICAgICBjdXRzZXQucHVzaChzdGFjay5wb3AoKS5lZGdlKTtcbiAgICAgIGN1dHNldC5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciBjb25uZWN0ZWROb2RlcyA9IGVkZ2UuY29ubmVjdGVkTm9kZXMoKS5pbnRlcnNlY3Rpb24oZWxlcyk7XG4gICAgICAgIGNvbXBvbmVudC5tZXJnZShlZGdlKTtcbiAgICAgICAgY29ubmVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgIHZhciBub2RlSWQgPSBub2RlLmlkKCk7XG4gICAgICAgICAgdmFyIGNvbm5lY3RlZEVkZ2VzID0gbm9kZS5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihlbGVzKTtcbiAgICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG5cbiAgICAgICAgICBpZiAoIW5vZGVzW25vZGVJZF0uY3V0VmVydGV4KSB7XG4gICAgICAgICAgICBjb21wb25lbnQubWVyZ2UoY29ubmVjdGVkRWRnZXMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wb25lbnQubWVyZ2UoY29ubmVjdGVkRWRnZXMuZmlsdGVyKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlZGdlLmlzTG9vcCgpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgIH07XG5cbiAgICB2YXIgYmljb25uZWN0ZWRTZWFyY2ggPSBmdW5jdGlvbiBiaWNvbm5lY3RlZFNlYXJjaChyb290LCBjdXJyZW50Tm9kZSwgcGFyZW50KSB7XG4gICAgICBpZiAocm9vdCA9PT0gcGFyZW50KSBlZGdlQ291bnQgKz0gMTtcbiAgICAgIG5vZGVzW2N1cnJlbnROb2RlXSA9IHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBsb3c6IGlkKyssXG4gICAgICAgIGN1dFZlcnRleDogZmFsc2VcbiAgICAgIH07XG4gICAgICB2YXIgZWRnZXMgPSBlbGVzLmdldEVsZW1lbnRCeUlkKGN1cnJlbnROb2RlKS5jb25uZWN0ZWRFZGdlcygpLmludGVyc2VjdGlvbihlbGVzKTtcblxuICAgICAgaWYgKGVkZ2VzLnNpemUoKSA9PT0gMCkge1xuICAgICAgICBjb21wb25lbnRzLnB1c2goZWxlcy5zcGF3bihlbGVzLmdldEVsZW1lbnRCeUlkKGN1cnJlbnROb2RlKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZUlkLCB0YXJnZXRJZCwgb3RoZXJOb2RlSWQsIGVkZ2VJZDtcbiAgICAgICAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbiAoZWRnZSkge1xuICAgICAgICAgIHNvdXJjZUlkID0gZWRnZS5zb3VyY2UoKS5pZCgpO1xuICAgICAgICAgIHRhcmdldElkID0gZWRnZS50YXJnZXQoKS5pZCgpO1xuICAgICAgICAgIG90aGVyTm9kZUlkID0gc291cmNlSWQgPT09IGN1cnJlbnROb2RlID8gdGFyZ2V0SWQgOiBzb3VyY2VJZDtcblxuICAgICAgICAgIGlmIChvdGhlck5vZGVJZCAhPT0gcGFyZW50KSB7XG4gICAgICAgICAgICBlZGdlSWQgPSBlZGdlLmlkKCk7XG5cbiAgICAgICAgICAgIGlmICghdmlzaXRlZEVkZ2VzW2VkZ2VJZF0pIHtcbiAgICAgICAgICAgICAgdmlzaXRlZEVkZ2VzW2VkZ2VJZF0gPSB0cnVlO1xuICAgICAgICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBjdXJyZW50Tm9kZSxcbiAgICAgICAgICAgICAgICB5OiBvdGhlck5vZGVJZCxcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIShvdGhlck5vZGVJZCBpbiBub2RlcykpIHtcbiAgICAgICAgICAgICAgYmljb25uZWN0ZWRTZWFyY2gocm9vdCwgb3RoZXJOb2RlSWQsIGN1cnJlbnROb2RlKTtcbiAgICAgICAgICAgICAgbm9kZXNbY3VycmVudE5vZGVdLmxvdyA9IE1hdGgubWluKG5vZGVzW2N1cnJlbnROb2RlXS5sb3csIG5vZGVzW290aGVyTm9kZUlkXS5sb3cpO1xuXG4gICAgICAgICAgICAgIGlmIChub2Rlc1tjdXJyZW50Tm9kZV0uaWQgPD0gbm9kZXNbb3RoZXJOb2RlSWRdLmxvdykge1xuICAgICAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5jdXRWZXJ0ZXggPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJ1aWxkQ29tcG9uZW50KGN1cnJlbnROb2RlLCBvdGhlck5vZGVJZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5vZGVzW2N1cnJlbnROb2RlXS5sb3cgPSBNYXRoLm1pbihub2Rlc1tjdXJyZW50Tm9kZV0ubG93LCBub2Rlc1tvdGhlck5vZGVJZF0uaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIHZhciBub2RlSWQgPSBlbGUuaWQoKTtcblxuICAgICAgICBpZiAoIShub2RlSWQgaW4gbm9kZXMpKSB7XG4gICAgICAgICAgZWRnZUNvdW50ID0gMDtcbiAgICAgICAgICBiaWNvbm5lY3RlZFNlYXJjaChub2RlSWQsIG5vZGVJZCk7XG4gICAgICAgICAgbm9kZXNbbm9kZUlkXS5jdXRWZXJ0ZXggPSBlZGdlQ291bnQgPiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGN1dFZlcnRpY2VzID0gT2JqZWN0LmtleXMobm9kZXMpLmZpbHRlcihmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHJldHVybiBub2Rlc1tpZF0uY3V0VmVydGV4O1xuICAgIH0pLm1hcChmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHJldHVybiBlbGVzLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY3V0OiBlbGVzLnNwYXduKGN1dFZlcnRpY2VzKSxcbiAgICAgIGNvbXBvbmVudHM6IGNvbXBvbmVudHNcbiAgICB9O1xuICB9O1xuXG4gIHZhciBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkJDEgPSB7XG4gICAgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZDogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCxcbiAgICBodGJjOiBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkLFxuICAgIGh0YjogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCxcbiAgICBob3Bjcm9mdFRhcmphbkJpY29ubmVjdGVkQ29tcG9uZW50czogaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZFxuICB9O1xuXG4gIHZhciB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCA9IGZ1bmN0aW9uIHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkKCkge1xuICAgIHZhciBlbGVzID0gdGhpcztcbiAgICB2YXIgbm9kZXMgPSB7fTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjb21wb25lbnRzID0gW107XG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGN1dCA9IGVsZXMuc3Bhd24oZWxlcyk7XG5cbiAgICB2YXIgc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2ggPSBmdW5jdGlvbiBzdHJvbmdseUNvbm5lY3RlZFNlYXJjaChzb3VyY2VOb2RlSWQpIHtcbiAgICAgIHN0YWNrLnB1c2goc291cmNlTm9kZUlkKTtcbiAgICAgIG5vZGVzW3NvdXJjZU5vZGVJZF0gPSB7XG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgbG93OiBpbmRleCsrLFxuICAgICAgICBleHBsb3JlZDogZmFsc2VcbiAgICAgIH07XG4gICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBlbGVzLmdldEVsZW1lbnRCeUlkKHNvdXJjZU5vZGVJZCkuY29ubmVjdGVkRWRnZXMoKS5pbnRlcnNlY3Rpb24oZWxlcyk7XG4gICAgICBjb25uZWN0ZWRFZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHZhciB0YXJnZXROb2RlSWQgPSBlZGdlLnRhcmdldCgpLmlkKCk7XG5cbiAgICAgICAgaWYgKHRhcmdldE5vZGVJZCAhPT0gc291cmNlTm9kZUlkKSB7XG4gICAgICAgICAgaWYgKCEodGFyZ2V0Tm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgICAgc3Ryb25nbHlDb25uZWN0ZWRTZWFyY2godGFyZ2V0Tm9kZUlkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIW5vZGVzW3RhcmdldE5vZGVJZF0uZXhwbG9yZWQpIHtcbiAgICAgICAgICAgIG5vZGVzW3NvdXJjZU5vZGVJZF0ubG93ID0gTWF0aC5taW4obm9kZXNbc291cmNlTm9kZUlkXS5sb3csIG5vZGVzW3RhcmdldE5vZGVJZF0ubG93KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAobm9kZXNbc291cmNlTm9kZUlkXS5pbmRleCA9PT0gbm9kZXNbc291cmNlTm9kZUlkXS5sb3cpIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudE5vZGVzID0gZWxlcy5zcGF3bigpO1xuXG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICB2YXIgbm9kZUlkID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgY29tcG9uZW50Tm9kZXMubWVyZ2UoZWxlcy5nZXRFbGVtZW50QnlJZChub2RlSWQpKTtcbiAgICAgICAgICBub2Rlc1tub2RlSWRdLmxvdyA9IG5vZGVzW3NvdXJjZU5vZGVJZF0uaW5kZXg7XG4gICAgICAgICAgbm9kZXNbbm9kZUlkXS5leHBsb3JlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAobm9kZUlkID09PSBzb3VyY2VOb2RlSWQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjb21wb25lbnRFZGdlcyA9IGNvbXBvbmVudE5vZGVzLmVkZ2VzV2l0aChjb21wb25lbnROb2Rlcyk7XG4gICAgICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnROb2Rlcy5tZXJnZShjb21wb25lbnRFZGdlcyk7XG4gICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgICBjdXQgPSBjdXQuZGlmZmVyZW5jZShjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICB2YXIgbm9kZUlkID0gZWxlLmlkKCk7XG5cbiAgICAgICAgaWYgKCEobm9kZUlkIGluIG5vZGVzKSkge1xuICAgICAgICAgIHN0cm9uZ2x5Q29ubmVjdGVkU2VhcmNoKG5vZGVJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY3V0OiBjdXQsXG4gICAgICBjb21wb25lbnRzOiBjb21wb25lbnRzXG4gICAgfTtcbiAgfTtcblxuICB2YXIgdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQkMSA9IHtcbiAgICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZDogdGFyamFuU3Ryb25nbHlDb25uZWN0ZWQsXG4gICAgdHNjOiB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCxcbiAgICB0c2NjOiB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCxcbiAgICB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZENvbXBvbmVudHM6IHRhcmphblN0cm9uZ2x5Q29ubmVjdGVkXG4gIH07XG5cbiAgdmFyIGVsZXNmbiRqID0ge307XG4gIFtlbGVzZm4kdiwgZWxlc2ZuJHUsIGVsZXNmbiR0LCBlbGVzZm4kcywgZWxlc2ZuJHIsIGVsZXNmbiRxLCBlbGVzZm4kcCwgZWxlc2ZuJG8sIGVsZXNmbiRuLCBlbGVzZm4kbSwgZWxlc2ZuJGwsIG1hcmtvdkNsdXN0ZXJpbmckMSwga0NsdXN0ZXJpbmcsIGhpZXJhcmNoaWNhbENsdXN0ZXJpbmckMSwgYWZmaW5pdHlQcm9wYWdhdGlvbiQxLCBlbGVzZm4kaywgaG9wY3JvZnRUYXJqYW5CaWNvbm5lY3RlZCQxLCB0YXJqYW5TdHJvbmdseUNvbm5lY3RlZCQxXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICAgIGV4dGVuZChlbGVzZm4kaiwgcHJvcHMpO1xuICB9KTtcblxuICAvKiFcbiAgRW1iZWRkYWJsZSBNaW5pbXVtIFN0cmljdGx5LUNvbXBsaWFudCBQcm9taXNlcy9BKyAxLjEuMSBUaGVuYWJsZVxuICBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNCBSYWxmIFMuIEVuZ2Vsc2NoYWxsIChodHRwOi8vZW5nZWxzY2hhbGwuY29tKVxuICBMaWNlbnNlZCB1bmRlciBUaGUgTUlUIExpY2Vuc2UgKGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQpXG4gICovXG5cbiAgLyogIHByb21pc2Ugc3RhdGVzIFtQcm9taXNlcy9BKyAyLjFdICAqL1xuICB2YXIgU1RBVEVfUEVORElORyA9IDA7XG4gIC8qICBbUHJvbWlzZXMvQSsgMi4xLjFdICAqL1xuXG4gIHZhciBTVEFURV9GVUxGSUxMRUQgPSAxO1xuICAvKiAgW1Byb21pc2VzL0ErIDIuMS4yXSAgKi9cblxuICB2YXIgU1RBVEVfUkVKRUNURUQgPSAyO1xuICAvKiAgW1Byb21pc2VzL0ErIDIuMS4zXSAgKi9cblxuICAvKiAgcHJvbWlzZSBvYmplY3QgY29uc3RydWN0b3IgICovXG5cbiAgdmFyIGFwaSA9IGZ1bmN0aW9uIGFwaShleGVjdXRvcikge1xuICAgIC8qICBvcHRpb25hbGx5IHN1cHBvcnQgbm9uLWNvbnN0cnVjdG9yL3BsYWluLWZ1bmN0aW9uIGNhbGwgICovXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGFwaSkpIHJldHVybiBuZXcgYXBpKGV4ZWN1dG9yKTtcbiAgICAvKiAgaW5pdGlhbGl6ZSBvYmplY3QgICovXG5cbiAgICB0aGlzLmlkID0gJ1RoZW5hYmxlLzEuMC43JztcbiAgICB0aGlzLnN0YXRlID0gU1RBVEVfUEVORElORztcbiAgICAvKiAgaW5pdGlhbCBzdGF0ZSAgKi9cblxuICAgIHRoaXMuZnVsZmlsbFZhbHVlID0gdW5kZWZpbmVkO1xuICAgIC8qICBpbml0aWFsIHZhbHVlICAqL1xuXG4gICAgLyogIFtQcm9taXNlcy9BKyAxLjMsIDIuMS4yLjJdICAqL1xuXG4gICAgdGhpcy5yZWplY3RSZWFzb24gPSB1bmRlZmluZWQ7XG4gICAgLyogIGluaXRpYWwgcmVhc29uICovXG5cbiAgICAvKiAgW1Byb21pc2VzL0ErIDEuNSwgMi4xLjMuMl0gICovXG5cbiAgICB0aGlzLm9uRnVsZmlsbGVkID0gW107XG4gICAgLyogIGluaXRpYWwgaGFuZGxlcnMgICovXG5cbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSBbXTtcbiAgICAvKiAgaW5pdGlhbCBoYW5kbGVycyAgKi9cblxuICAgIC8qICBwcm92aWRlIG9wdGlvbmFsIGluZm9ybWF0aW9uLWhpZGluZyBwcm94eSAgKi9cblxuICAgIHRoaXMucHJveHkgPSB7XG4gICAgICB0aGVuOiB0aGlzLnRoZW4uYmluZCh0aGlzKVxuICAgIH07XG4gICAgLyogIHN1cHBvcnQgb3B0aW9uYWwgZXhlY3V0b3IgZnVuY3Rpb24gICovXG5cbiAgICBpZiAodHlwZW9mIGV4ZWN1dG9yID09PSAnZnVuY3Rpb24nKSBleGVjdXRvci5jYWxsKHRoaXMsIHRoaXMuZnVsZmlsbC5iaW5kKHRoaXMpLCB0aGlzLnJlamVjdC5iaW5kKHRoaXMpKTtcbiAgfTtcbiAgLyogIHByb21pc2UgQVBJIG1ldGhvZHMgICovXG5cblxuICBhcGkucHJvdG90eXBlID0ge1xuICAgIC8qICBwcm9taXNlIHJlc29sdmluZyBtZXRob2RzICAqL1xuICAgIGZ1bGZpbGw6IGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHtcbiAgICAgIHJldHVybiBkZWxpdmVyKHRoaXMsIFNUQVRFX0ZVTEZJTExFRCwgJ2Z1bGZpbGxWYWx1ZScsIHZhbHVlKTtcbiAgICB9LFxuICAgIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVsaXZlcih0aGlzLCBTVEFURV9SRUpFQ1RFRCwgJ3JlamVjdFJlYXNvbicsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgLyogIFwiVGhlIHRoZW4gTWV0aG9kXCIgW1Byb21pc2VzL0ErIDEuMSwgMS4yLCAyLjJdICAqL1xuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciBjdXJyID0gdGhpcztcbiAgICAgIHZhciBuZXh0ID0gbmV3IGFwaSgpO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuN10gICovXG5cbiAgICAgIGN1cnIub25GdWxmaWxsZWQucHVzaChyZXNvbHZlcihvbkZ1bGZpbGxlZCwgbmV4dCwgJ2Z1bGZpbGwnKSk7XG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi4yLzIuMi42XSAgKi9cblxuICAgICAgY3Vyci5vblJlamVjdGVkLnB1c2gocmVzb2x2ZXIob25SZWplY3RlZCwgbmV4dCwgJ3JlamVjdCcpKTtcbiAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjMvMi4yLjZdICAqL1xuXG4gICAgICBleGVjdXRlKGN1cnIpO1xuICAgICAgcmV0dXJuIG5leHQucHJveHk7XG4gICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LCAzLjNdICAqL1xuICAgIH1cbiAgfTtcbiAgLyogIGRlbGl2ZXIgYW4gYWN0aW9uICAqL1xuXG4gIHZhciBkZWxpdmVyID0gZnVuY3Rpb24gZGVsaXZlcihjdXJyLCBzdGF0ZSwgbmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoY3Vyci5zdGF0ZSA9PT0gU1RBVEVfUEVORElORykge1xuICAgICAgY3Vyci5zdGF0ZSA9IHN0YXRlO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjEuMi4xLCAyLjEuMy4xXSAgKi9cblxuICAgICAgY3VycltuYW1lXSA9IHZhbHVlO1xuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjEuMi4yLCAyLjEuMy4yXSAgKi9cblxuICAgICAgZXhlY3V0ZShjdXJyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycjtcbiAgfTtcbiAgLyogIGV4ZWN1dGUgYWxsIGhhbmRsZXJzICAqL1xuXG5cbiAgdmFyIGV4ZWN1dGUgPSBmdW5jdGlvbiBleGVjdXRlKGN1cnIpIHtcbiAgICBpZiAoY3Vyci5zdGF0ZSA9PT0gU1RBVEVfRlVMRklMTEVEKSBleGVjdXRlX2hhbmRsZXJzKGN1cnIsICdvbkZ1bGZpbGxlZCcsIGN1cnIuZnVsZmlsbFZhbHVlKTtlbHNlIGlmIChjdXJyLnN0YXRlID09PSBTVEFURV9SRUpFQ1RFRCkgZXhlY3V0ZV9oYW5kbGVycyhjdXJyLCAnb25SZWplY3RlZCcsIGN1cnIucmVqZWN0UmVhc29uKTtcbiAgfTtcbiAgLyogIGV4ZWN1dGUgcGFydGljdWxhciBzZXQgb2YgaGFuZGxlcnMgICovXG5cblxuICB2YXIgZXhlY3V0ZV9oYW5kbGVycyA9IGZ1bmN0aW9uIGV4ZWN1dGVfaGFuZGxlcnMoY3VyciwgbmFtZSwgdmFsdWUpIHtcbiAgICAvKiBnbG9iYWwgc2V0SW1tZWRpYXRlOiB0cnVlICovXG5cbiAgICAvKiBnbG9iYWwgc2V0VGltZW91dDogdHJ1ZSAqL1xuXG4gICAgLyogIHNob3J0LWNpcmN1aXQgcHJvY2Vzc2luZyAgKi9cbiAgICBpZiAoY3VycltuYW1lXS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAvKiAgaXRlcmF0ZSBvdmVyIGFsbCBoYW5kbGVycywgZXhhY3RseSBvbmNlICAqL1xuXG4gICAgdmFyIGhhbmRsZXJzID0gY3VycltuYW1lXTtcbiAgICBjdXJyW25hbWVdID0gW107XG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjIuMi4zLCAyLjIuMy4zXSAgKi9cblxuICAgIHZhciBmdW5jID0gZnVuY3Rpb24gZnVuYygpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaGFuZGxlcnNbaV0odmFsdWUpO1xuICAgICAgfVxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuNV0gICovXG5cbiAgICB9O1xuICAgIC8qICBleGVjdXRlIHByb2NlZHVyZSBhc3luY2hyb25vdXNseSAgKi9cblxuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4yLjQsIDMuMV0gICovXG5cblxuICAgIGlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nKSBzZXRJbW1lZGlhdGUoZnVuYyk7ZWxzZSBzZXRUaW1lb3V0KGZ1bmMsIDApO1xuICB9O1xuICAvKiAgZ2VuZXJhdGUgYSByZXNvbHZlciBmdW5jdGlvbiAgKi9cblxuXG4gIHZhciByZXNvbHZlciA9IGZ1bmN0aW9uIHJlc29sdmVyKGNiLCBuZXh0LCBtZXRob2QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi4xLCAyLjIuNy4zLCAyLjIuNy40XSAgKi9cbiAgICAgICAgbmV4dFttZXRob2RdLmNhbGwobmV4dCwgdmFsdWUpO1xuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjMsIDIuMi43LjRdICAqL1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXN1bHQgPSBjYih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjIuMi4xLCAyLjIuMy4xLCAyLjIuNSwgMy4yXSAgKi9cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICBuZXh0LnJlamVjdChlKTtcbiAgICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjJdICAqL1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShuZXh0LCByZXN1bHQpO1xuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMi43LjFdICAqL1xuICAgICAgfVxuICAgIH07XG4gIH07XG4gIC8qICBcIlByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmVcIiAgKi9cblxuICAvKiAgW1Byb21pc2VzL0ErIDIuM10gICovXG5cblxuICB2YXIgcmVzb2x2ZSA9IGZ1bmN0aW9uIHJlc29sdmUocHJvbWlzZSwgeCkge1xuICAgIC8qICBzYW5pdHkgY2hlY2sgYXJndW1lbnRzICAqL1xuXG4gICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMV0gICovXG4gICAgaWYgKHByb21pc2UgPT09IHggfHwgcHJvbWlzZS5wcm94eSA9PT0geCkge1xuICAgICAgcHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignY2Fubm90IHJlc29sdmUgcHJvbWlzZSB3aXRoIGl0c2VsZicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLyogIHN1cmdpY2FsbHkgY2hlY2sgZm9yIGEgXCJ0aGVuXCIgbWV0aG9kXG4gICAgICAobWFpbmx5IHRvIGp1c3QgY2FsbCB0aGUgXCJnZXR0ZXJcIiBvZiBcInRoZW5cIiBvbmx5IG9uY2UpICAqL1xuXG5cbiAgICB2YXIgdGhlbjtcblxuICAgIGlmIChfdHlwZW9mKHgpID09PSAnb2JqZWN0JyAmJiB4ICE9PSBudWxsIHx8IHR5cGVvZiB4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGVuID0geC50aGVuO1xuICAgICAgfVxuICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4xLCAzLjVdICAqL1xuICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMl0gICovXG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiAgaGFuZGxlIG93biBUaGVuYWJsZXMgICAgW1Byb21pc2VzL0ErIDIuMy4yXVxuICAgICAgYW5kIHNpbWlsYXIgXCJ0aGVuYWJsZXNcIiBbUHJvbWlzZXMvQSsgMi4zLjNdICAqL1xuXG5cbiAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvKiAgY2FsbCByZXRyaWV2ZWQgXCJ0aGVuXCIgbWV0aG9kICovXG5cbiAgICAgICAgLyogIFtQcm9taXNlcy9BKyAyLjMuMy4zXSAgKi9cbiAgICAgICAgdGhlbi5jYWxsKHgsXG4gICAgICAgIC8qICByZXNvbHZlUHJvbWlzZSAgKi9cblxuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuMV0gICovXG4gICAgICAgIGZ1bmN0aW9uICh5KSB7XG4gICAgICAgICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy4zXSAgKi9cblxuICAgICAgICAgIGlmICh5ID09PSB4KVxuICAgICAgICAgICAgLyogIFtQcm9taXNlcy9BKyAzLjZdICAqL1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignY2lyY3VsYXIgdGhlbmFibGUgY2hhaW4nKSk7ZWxzZSByZXNvbHZlKHByb21pc2UsIHkpO1xuICAgICAgICB9LFxuICAgICAgICAvKiAgcmVqZWN0UHJvbWlzZSAgKi9cblxuICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuMl0gICovXG4gICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy4zXSAgKi9cblxuICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZClcbiAgICAgICAgICAvKiAgW1Byb21pc2VzL0ErIDIuMy4zLjMuM10gICovXG4gICAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjMuMy40XSAgKi9cbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKiAgaGFuZGxlIG90aGVyIHZhbHVlcyAgKi9cblxuXG4gICAgcHJvbWlzZS5mdWxmaWxsKHgpO1xuICAgIC8qICBbUHJvbWlzZXMvQSsgMi4zLjQsIDIuMy4zLjRdICAqL1xuICB9OyAvLyBzbyB3ZSBhbHdheXMgaGF2ZSBQcm9taXNlLmFsbCgpXG5cblxuICBhcGkuYWxsID0gZnVuY3Rpb24gKHBzKSB7XG4gICAgcmV0dXJuIG5ldyBhcGkoZnVuY3Rpb24gKHJlc29sdmVBbGwsIHJlamVjdEFsbCkge1xuICAgICAgdmFyIHZhbHMgPSBuZXcgQXJyYXkocHMubGVuZ3RoKTtcbiAgICAgIHZhciBkb25lQ291bnQgPSAwO1xuXG4gICAgICB2YXIgZnVsZmlsbCA9IGZ1bmN0aW9uIGZ1bGZpbGwoaSwgdmFsKSB7XG4gICAgICAgIHZhbHNbaV0gPSB2YWw7XG4gICAgICAgIGRvbmVDb3VudCsrO1xuXG4gICAgICAgIGlmIChkb25lQ291bnQgPT09IHBzLmxlbmd0aCkge1xuICAgICAgICAgIHJlc29sdmVBbGwodmFscyk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgdmFyIHAgPSBwc1tpXTtcbiAgICAgICAgICB2YXIgaXNQcm9taXNlID0gcCAhPSBudWxsICYmIHAudGhlbiAhPSBudWxsO1xuXG4gICAgICAgICAgaWYgKGlzUHJvbWlzZSkge1xuICAgICAgICAgICAgcC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgICAgZnVsZmlsbChpLCB2YWwpO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICByZWplY3RBbGwoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gcDtcbiAgICAgICAgICAgIGZ1bGZpbGwoaSwgdmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKGkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGFwaS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiBuZXcgYXBpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlc29sdmUodmFsKTtcbiAgICB9KTtcbiAgfTtcblxuICBhcGkucmVqZWN0ID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiBuZXcgYXBpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlamVjdCh2YWwpO1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciBQcm9taXNlJDEgPSB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgPyBQcm9taXNlIDogYXBpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgdmFyIEFuaW1hdGlvbiA9IGZ1bmN0aW9uIEFuaW1hdGlvbih0YXJnZXQsIG9wdHMsIG9wdHMyKSB7XG4gICAgdmFyIGlzQ29yZSA9IGNvcmUodGFyZ2V0KTtcbiAgICB2YXIgaXNFbGUgPSAhaXNDb3JlO1xuXG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZSA9IGV4dGVuZCh7XG4gICAgICBkdXJhdGlvbjogMTAwMFxuICAgIH0sIG9wdHMsIG9wdHMyKTtcblxuICAgIF9wLnRhcmdldCA9IHRhcmdldDtcbiAgICBfcC5zdHlsZSA9IF9wLnN0eWxlIHx8IF9wLmNzcztcbiAgICBfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgX3AucGxheWluZyA9IGZhbHNlO1xuICAgIF9wLmhvb2tlZCA9IGZhbHNlO1xuICAgIF9wLmFwcGx5aW5nID0gZmFsc2U7XG4gICAgX3AucHJvZ3Jlc3MgPSAwO1xuICAgIF9wLmNvbXBsZXRlcyA9IFtdO1xuICAgIF9wLmZyYW1lcyA9IFtdO1xuXG4gICAgaWYgKF9wLmNvbXBsZXRlICYmIGZuJDYoX3AuY29tcGxldGUpKSB7XG4gICAgICBfcC5jb21wbGV0ZXMucHVzaChfcC5jb21wbGV0ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRWxlKSB7XG4gICAgICB2YXIgcG9zID0gdGFyZ2V0LnBvc2l0aW9uKCk7XG4gICAgICBfcC5zdGFydFBvc2l0aW9uID0gX3Auc3RhcnRQb3NpdGlvbiB8fCB7XG4gICAgICAgIHg6IHBvcy54LFxuICAgICAgICB5OiBwb3MueVxuICAgICAgfTtcbiAgICAgIF9wLnN0YXJ0U3R5bGUgPSBfcC5zdGFydFN0eWxlIHx8IHRhcmdldC5jeSgpLnN0eWxlKCkuZ2V0QW5pbWF0aW9uU3RhcnRTdHlsZSh0YXJnZXQsIF9wLnN0eWxlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNDb3JlKSB7XG4gICAgICB2YXIgcGFuID0gdGFyZ2V0LnBhbigpO1xuICAgICAgX3Auc3RhcnRQYW4gPSB7XG4gICAgICAgIHg6IHBhbi54LFxuICAgICAgICB5OiBwYW4ueVxuICAgICAgfTtcbiAgICAgIF9wLnN0YXJ0Wm9vbSA9IHRhcmdldC56b29tKCk7XG4gICAgfSAvLyBmb3IgZnV0dXJlIHRpbWVsaW5lL2FuaW1hdGlvbnMgaW1wbFxuXG5cbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgdGhpc1swXSA9IHRoaXM7XG4gIH07XG5cbiAgdmFyIGFuaWZuID0gQW5pbWF0aW9uLnByb3RvdHlwZTtcbiAgZXh0ZW5kKGFuaWZuLCB7XG4gICAgaW5zdGFuY2VTdHJpbmc6IGZ1bmN0aW9uIGluc3RhbmNlU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICdhbmltYXRpb24nO1xuICAgIH0sXG4gICAgaG9vazogZnVuY3Rpb24gaG9vaygpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmICghX3AuaG9va2VkKSB7XG4gICAgICAgIC8vIGFkZCB0byB0YXJnZXQncyBhbmltYXRpb24gcXVldWVcbiAgICAgICAgdmFyIHE7XG4gICAgICAgIHZhciB0QW5pID0gX3AudGFyZ2V0Ll9wcml2YXRlLmFuaW1hdGlvbjtcblxuICAgICAgICBpZiAoX3AucXVldWUpIHtcbiAgICAgICAgICBxID0gdEFuaS5xdWV1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxID0gdEFuaS5jdXJyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcS5wdXNoKHRoaXMpOyAvLyBhZGQgdG8gdGhlIGFuaW1hdGlvbiBsb29wIHBvb2xcblxuICAgICAgICBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihfcC50YXJnZXQpKSB7XG4gICAgICAgICAgX3AudGFyZ2V0LmN5KCkuYWRkVG9BbmltYXRpb25Qb29sKF9wLnRhcmdldCk7XG4gICAgICAgIH1cblxuICAgICAgICBfcC5ob29rZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHBsYXk6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlOyAvLyBhdXRvcmV3aW5kXG5cbiAgICAgIGlmIChfcC5wcm9ncmVzcyA9PT0gMSkge1xuICAgICAgICBfcC5wcm9ncmVzcyA9IDA7XG4gICAgICB9XG5cbiAgICAgIF9wLnBsYXlpbmcgPSB0cnVlO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlOyAvLyBuZWVkcyB0byBiZSBzdGFydGVkIGJ5IGFuaW1hdGlvbiBsb29wXG5cbiAgICAgIF9wLnN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaG9vaygpOyAvLyB0aGUgYW5pbWF0aW9uIGxvb3Agd2lsbCBzdGFydCB0aGUgYW5pbWF0aW9uLi4uXG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgcGxheWluZzogZnVuY3Rpb24gcGxheWluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLnBsYXlpbmc7XG4gICAgfSxcbiAgICBhcHBseTogZnVuY3Rpb24gYXBwbHkoKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgX3AuYXBwbHlpbmcgPSB0cnVlO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlOyAvLyBuZWVkcyB0byBiZSBzdGFydGVkIGJ5IGFuaW1hdGlvbiBsb29wXG5cbiAgICAgIF9wLnN0b3BwZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaG9vaygpOyAvLyB0aGUgYW5pbWF0aW9uIGxvb3Agd2lsbCBhcHBseSB0aGUgYW5pbWF0aW9uIGF0IHRoaXMgcHJvZ3Jlc3NcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBhcHBseWluZzogZnVuY3Rpb24gYXBwbHlpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5hcHBseWluZztcbiAgICB9LFxuICAgIHBhdXNlOiBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICBfcC5wbGF5aW5nID0gZmFsc2U7XG4gICAgICBfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgX3AucGxheWluZyA9IGZhbHNlO1xuICAgICAgX3Auc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgX3Auc3RvcHBlZCA9IHRydWU7IC8vIHRvIGJlIHJlbW92ZWQgZnJvbSBhbmltYXRpb24gcXVldWVzXG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgcmV3aW5kOiBmdW5jdGlvbiByZXdpbmQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9ncmVzcygwKTtcbiAgICB9LFxuICAgIGZhc3Rmb3J3YXJkOiBmdW5jdGlvbiBmYXN0Zm9yd2FyZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2dyZXNzKDEpO1xuICAgIH0sXG4gICAgdGltZTogZnVuY3Rpb24gdGltZSh0KSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgICBpZiAodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBfcC5wcm9ncmVzcyAqIF9wLmR1cmF0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3ModCAvIF9wLmR1cmF0aW9uKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb2dyZXNzOiBmdW5jdGlvbiBwcm9ncmVzcyhwKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgdmFyIHdhc1BsYXlpbmcgPSBfcC5wbGF5aW5nO1xuXG4gICAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBfcC5wcm9ncmVzcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICAgICAgdGhpcy5wYXVzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3AucHJvZ3Jlc3MgPSBwO1xuICAgICAgICBfcC5zdGFydGVkID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHdhc1BsYXlpbmcpIHtcbiAgICAgICAgICB0aGlzLnBsYXkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGNvbXBsZXRlZDogZnVuY3Rpb24gY29tcGxldGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucHJvZ3Jlc3MgPT09IDE7XG4gICAgfSxcbiAgICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICAgIHZhciB3YXNQbGF5aW5nID0gX3AucGxheWluZztcblxuICAgICAgaWYgKHdhc1BsYXlpbmcpIHtcbiAgICAgICAgdGhpcy5wYXVzZSgpO1xuICAgICAgfVxuXG4gICAgICBfcC5wcm9ncmVzcyA9IDEgLSBfcC5wcm9ncmVzcztcbiAgICAgIF9wLnN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgICAgdmFyIHN3YXAgPSBmdW5jdGlvbiBzd2FwKGEsIGIpIHtcbiAgICAgICAgdmFyIF9wYSA9IF9wW2FdO1xuXG4gICAgICAgIGlmIChfcGEgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF9wW2FdID0gX3BbYl07XG4gICAgICAgIF9wW2JdID0gX3BhO1xuICAgICAgfTtcblxuICAgICAgc3dhcCgnem9vbScsICdzdGFydFpvb20nKTtcbiAgICAgIHN3YXAoJ3BhbicsICdzdGFydFBhbicpO1xuICAgICAgc3dhcCgncG9zaXRpb24nLCAnc3RhcnRQb3NpdGlvbicpOyAvLyBzd2FwIHN0eWxlc1xuXG4gICAgICBpZiAoX3Auc3R5bGUpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcC5zdHlsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBwcm9wID0gX3Auc3R5bGVbaV07XG4gICAgICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgICAgICAgdmFyIHN0YXJ0U3R5bGVQcm9wID0gX3Auc3RhcnRTdHlsZVtuYW1lXTtcbiAgICAgICAgICBfcC5zdGFydFN0eWxlW25hbWVdID0gcHJvcDtcbiAgICAgICAgICBfcC5zdHlsZVtpXSA9IHN0YXJ0U3R5bGVQcm9wO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGxheSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHByb21pc2U6IGZ1bmN0aW9uIHByb21pc2UodHlwZSkge1xuICAgICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICAgIHZhciBhcnI7XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdmcmFtZSc6XG4gICAgICAgICAgYXJyID0gX3AuZnJhbWVzO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICBhcnIgPSBfcC5jb21wbGV0ZXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgYXJyLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBhbmlmbi5jb21wbGV0ZSA9IGFuaWZuLmNvbXBsZXRlZDtcbiAgYW5pZm4ucnVuID0gYW5pZm4ucGxheTtcbiAgYW5pZm4ucnVubmluZyA9IGFuaWZuLnBsYXlpbmc7XG5cbiAgdmFyIGRlZmluZSQzID0ge1xuICAgIGFuaW1hdGVkOiBmdW5jdGlvbiBhbmltYXRlZCgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBhbmltYXRlZEltcGwoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdmFyIHNlbGZJc0FycmF5TGlrZSA9IHNlbGYubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBhbGwgPSBzZWxmSXNBcnJheUxpa2UgPyBzZWxmIDogW3NlbGZdOyAvLyBwdXQgaW4gYXJyYXkgaWYgbm90IGFycmF5LWxpa2VcblxuICAgICAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5IHx8IHRoaXM7XG5cbiAgICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlbGUgPSBhbGxbMF07XG5cbiAgICAgICAgaWYgKGVsZSkge1xuICAgICAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuYW5pbWF0aW9uLmN1cnJlbnQubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LFxuICAgIC8vIGFuaW1hdGVkXG4gICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24gY2xlYXJRdWV1ZSgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBjbGVhclF1ZXVlSW1wbCgpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBhbGxbaV07XG4gICAgICAgICAgZWxlLl9wcml2YXRlLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0sXG4gICAgLy8gY2xlYXJRdWV1ZVxuICAgIGRlbGF5OiBmdW5jdGlvbiBkZWxheSgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBkZWxheUltcGwodGltZSwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoe1xuICAgICAgICAgIGRlbGF5OiB0aW1lLFxuICAgICAgICAgIGR1cmF0aW9uOiB0aW1lLFxuICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcbiAgICAvLyBkZWxheVxuICAgIGRlbGF5QW5pbWF0aW9uOiBmdW5jdGlvbiBkZWxheUFuaW1hdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBkZWxheUFuaW1hdGlvbkltcGwodGltZSwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeSB8fCB0aGlzO1xuXG4gICAgICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGlvbih7XG4gICAgICAgICAgZGVsYXk6IHRpbWUsXG4gICAgICAgICAgZHVyYXRpb246IHRpbWUsXG4gICAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9LFxuICAgIC8vIGRlbGF5XG4gICAgYW5pbWF0aW9uOiBmdW5jdGlvbiBhbmltYXRpb24oKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gYW5pbWF0aW9uSW1wbChwcm9wZXJ0aWVzLCBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcbiAgICAgICAgdmFyIGlzQ29yZSA9ICFzZWxmSXNBcnJheUxpa2U7XG4gICAgICAgIHZhciBpc0VsZXMgPSAhaXNDb3JlO1xuXG4gICAgICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG4gICAgICAgIHByb3BlcnRpZXMgPSBleHRlbmQoe30sIHByb3BlcnRpZXMsIHBhcmFtcyk7XG4gICAgICAgIHZhciBwcm9wZXJ0aWVzRW1wdHkgPSBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKS5sZW5ndGggPT09IDA7XG5cbiAgICAgICAgaWYgKHByb3BlcnRpZXNFbXB0eSkge1xuICAgICAgICAgIHJldHVybiBuZXcgQW5pbWF0aW9uKGFsbFswXSwgcHJvcGVydGllcyk7IC8vIG5vdGhpbmcgdG8gYW5pbWF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnRpZXMuZHVyYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSA0MDA7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHByb3BlcnRpZXMuZHVyYXRpb24pIHtcbiAgICAgICAgICBjYXNlICdzbG93JzpcbiAgICAgICAgICAgIHByb3BlcnRpZXMuZHVyYXRpb24gPSA2MDA7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2Zhc3QnOlxuICAgICAgICAgICAgcHJvcGVydGllcy5kdXJhdGlvbiA9IDIwMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRWxlcykge1xuICAgICAgICAgIHByb3BlcnRpZXMuc3R5bGUgPSBzdHlsZS5nZXRQcm9wc0xpc3QocHJvcGVydGllcy5zdHlsZSB8fCBwcm9wZXJ0aWVzLmNzcyk7XG4gICAgICAgICAgcHJvcGVydGllcy5jc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFbGVzICYmIHByb3BlcnRpZXMucmVuZGVyZWRQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgdmFyIHJwb3MgPSBwcm9wZXJ0aWVzLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICAgICAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICAgICAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgICAgIHByb3BlcnRpZXMucG9zaXRpb24gPSByZW5kZXJlZFRvTW9kZWxQb3NpdGlvbihycG9zLCB6b29tLCBwYW4pO1xuICAgICAgICB9IC8vIG92ZXJyaWRlIHBhbiB3LyBwYW5CeSBpZiBzZXRcblxuXG4gICAgICAgIGlmIChpc0NvcmUgJiYgcHJvcGVydGllcy5wYW5CeSAhPSBudWxsKSB7XG4gICAgICAgICAgdmFyIHBhbkJ5ID0gcHJvcGVydGllcy5wYW5CeTtcbiAgICAgICAgICB2YXIgY3lQYW4gPSBjeS5wYW4oKTtcbiAgICAgICAgICBwcm9wZXJ0aWVzLnBhbiA9IHtcbiAgICAgICAgICAgIHg6IGN5UGFuLnggKyBwYW5CeS54LFxuICAgICAgICAgICAgeTogY3lQYW4ueSArIHBhbkJ5LnlcbiAgICAgICAgICB9O1xuICAgICAgICB9IC8vIG92ZXJyaWRlIHBhbiB3LyBjZW50ZXIgaWYgc2V0XG5cblxuICAgICAgICB2YXIgY2VudGVyID0gcHJvcGVydGllcy5jZW50ZXIgfHwgcHJvcGVydGllcy5jZW50cmU7XG5cbiAgICAgICAgaWYgKGlzQ29yZSAmJiBjZW50ZXIgIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBjZW50ZXJQYW4gPSBjeS5nZXRDZW50ZXJQYW4oY2VudGVyLmVsZXMsIHByb3BlcnRpZXMuem9vbSk7XG5cbiAgICAgICAgICBpZiAoY2VudGVyUGFuICE9IG51bGwpIHtcbiAgICAgICAgICAgIHByb3BlcnRpZXMucGFuID0gY2VudGVyUGFuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBvdmVycmlkZSBwYW4gJiB6b29tIHcvIGZpdCBpZiBzZXRcblxuXG4gICAgICAgIGlmIChpc0NvcmUgJiYgcHJvcGVydGllcy5maXQgIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBmaXQgPSBwcm9wZXJ0aWVzLmZpdDtcbiAgICAgICAgICB2YXIgZml0VnAgPSBjeS5nZXRGaXRWaWV3cG9ydChmaXQuZWxlcyB8fCBmaXQuYm91bmRpbmdCb3gsIGZpdC5wYWRkaW5nKTtcblxuICAgICAgICAgIGlmIChmaXRWcCAhPSBudWxsKSB7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnBhbiA9IGZpdFZwLnBhbjtcbiAgICAgICAgICAgIHByb3BlcnRpZXMuem9vbSA9IGZpdFZwLnpvb207XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIG92ZXJyaWRlIHpvb20gKCYgcG90ZW50aWFsbHkgcGFuKSB3LyB6b29tIG9iaiBpZiBzZXRcblxuXG4gICAgICAgIGlmIChpc0NvcmUgJiYgcGxhaW5PYmplY3QocHJvcGVydGllcy56b29tKSkge1xuICAgICAgICAgIHZhciB2cCA9IGN5LmdldFpvb21lZFZpZXdwb3J0KHByb3BlcnRpZXMuem9vbSk7XG5cbiAgICAgICAgICBpZiAodnAgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHZwLnpvb21lZCkge1xuICAgICAgICAgICAgICBwcm9wZXJ0aWVzLnpvb20gPSB2cC56b29tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodnAucGFubmVkKSB7XG4gICAgICAgICAgICAgIHByb3BlcnRpZXMucGFuID0gdnAucGFuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzLnpvb20gPSBudWxsOyAvLyBhbiBpbmF2YWxpZCB6b29tIChlLmcuIG5vIGRlbHRhKSBnZXRzIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBBbmltYXRpb24oYWxsWzBdLCBwcm9wZXJ0aWVzKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICAvLyBhbmltYXRlXG4gICAgYW5pbWF0ZTogZnVuY3Rpb24gYW5pbWF0ZSgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBhbmltYXRlSW1wbChwcm9wZXJ0aWVzLCBwYXJhbXMpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgcHJvcGVydGllcyA9IGV4dGVuZCh7fSwgcHJvcGVydGllcywgcGFyYW1zKTtcbiAgICAgICAgfSAvLyBtYW51YWxseSBob29rIGFuZCBydW4gdGhlIGFuaW1hdGlvblxuXG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gYWxsW2ldO1xuICAgICAgICAgIHZhciBxdWV1ZSA9IGVsZS5hbmltYXRlZCgpICYmIChwcm9wZXJ0aWVzLnF1ZXVlID09PSB1bmRlZmluZWQgfHwgcHJvcGVydGllcy5xdWV1ZSk7XG4gICAgICAgICAgdmFyIGFuaSA9IGVsZS5hbmltYXRpb24ocHJvcGVydGllcywgcXVldWUgPyB7XG4gICAgICAgICAgICBxdWV1ZTogdHJ1ZVxuICAgICAgICAgIH0gOiB1bmRlZmluZWQpO1xuICAgICAgICAgIGFuaS5wbGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICAgIH07XG4gICAgfSxcbiAgICAvLyBhbmltYXRlXG4gICAgc3RvcDogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBzdG9wSW1wbChjbGVhclF1ZXVlLCBqdW1wVG9FbmQpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICB2YXIgc2VsZklzQXJyYXlMaWtlID0gc2VsZi5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGFsbCA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGYgOiBbc2VsZl07IC8vIHB1dCBpbiBhcnJheSBpZiBub3QgYXJyYXktbGlrZVxuXG4gICAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3kgfHwgdGhpcztcblxuICAgICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBhbGxbaV07XG4gICAgICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgICAgIHZhciBhbmlzID0gX3AuYW5pbWF0aW9uLmN1cnJlbnQ7XG5cbiAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFuaXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIHZhciBhbmkgPSBhbmlzW2pdO1xuICAgICAgICAgICAgdmFyIGFuaV9wID0gYW5pLl9wcml2YXRlO1xuXG4gICAgICAgICAgICBpZiAoanVtcFRvRW5kKSB7XG4gICAgICAgICAgICAgIC8vIG5leHQgaXRlcmF0aW9uIG9mIHRoZSBhbmltYXRpb24gbG9vcCwgdGhlIGFuaW1hdGlvblxuICAgICAgICAgICAgICAvLyB3aWxsIGdvIHN0cmFpZ2h0IHRvIHRoZSBlbmQgYW5kIGJlIHJlbW92ZWRcbiAgICAgICAgICAgICAgYW5pX3AuZHVyYXRpb24gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gY2xlYXIgdGhlIHF1ZXVlIG9mIGZ1dHVyZSBhbmltYXRpb25zXG5cblxuICAgICAgICAgIGlmIChjbGVhclF1ZXVlKSB7XG4gICAgICAgICAgICBfcC5hbmltYXRpb24ucXVldWUgPSBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWp1bXBUb0VuZCkge1xuICAgICAgICAgICAgX3AuYW5pbWF0aW9uLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gd2UgaGF2ZSB0byBub3RpZnkgKHRoZSBhbmltYXRpb24gbG9vcCBkb2Vzbid0IGRvIGl0IGZvciB1cyBvbiBgc3RvcGApXG5cblxuICAgICAgICBjeS5ub3RpZnkoJ2RyYXcnKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuICAgIH0gLy8gc3RvcFxuXG4gIH07IC8vIGRlZmluZVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAwLjEuMFxuICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBfLmlzQXJyYXkoJ2FiYycpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICovXG4gIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuICB2YXIgaXNBcnJheV8xID0gaXNBcnJheTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgICAgcmVJc1BsYWluUHJvcCA9IC9eXFx3KiQvO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICBpZiAoaXNBcnJheV8xKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2xfMSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xuICB9XG5cbiAgdmFyIF9pc0tleSA9IGlzS2V5O1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDAuMS4wXG4gICAqIEBjYXRlZ29yeSBMYW5nXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8uaXNGdW5jdGlvbihfKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKi9cbiAgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3RfMSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgdmFyIHRhZyA9IF9iYXNlR2V0VGFnKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICB9XG5cbiAgdmFyIGlzRnVuY3Rpb25fMSA9IGlzRnVuY3Rpb247XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICB2YXIgY29yZUpzRGF0YSA9IF9yb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuICB2YXIgX2NvcmVKc0RhdGEgPSBjb3JlSnNEYXRhO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gIHZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICAgIHZhciB1aWQgPSAvW14uXSskLy5leGVjKF9jb3JlSnNEYXRhICYmIF9jb3JlSnNEYXRhLmtleXMgJiYgX2NvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICB9KCkpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgfVxuXG4gIHZhciBfaXNNYXNrZWQgPSBpc01hc2tlZDtcblxuICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gIHZhciBmdW5jUHJvdG8kMSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gIHZhciBmdW5jVG9TdHJpbmckMSA9IGZ1bmNQcm90byQxLnRvU3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAgICovXG4gIGZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZnVuY1RvU3RyaW5nJDEuY2FsbChmdW5jKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgX3RvU291cmNlID0gdG9Tb3VyY2U7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAgICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gICAqL1xuICB2YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbiAgdmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbiAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICB2YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgb2JqZWN0UHJvdG8kMyA9IE9iamVjdC5wcm90b3R5cGU7XG5cbiAgLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xuICB2YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4gIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgaGFzT3duUHJvcGVydHkkMyA9IG9iamVjdFByb3RvJDMuaGFzT3duUHJvcGVydHk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbiAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSQzKS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICk7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdF8xKHZhbHVlKSB8fCBfaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbl8xKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChfdG9Tb3VyY2UodmFsdWUpKTtcbiAgfVxuXG4gIHZhciBfYmFzZUlzTmF0aXZlID0gYmFzZUlzTmF0aXZlO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRWYWx1ZSQxKG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH1cblxuICB2YXIgX2dldFZhbHVlID0gZ2V0VmFsdWUkMTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gICAgdmFyIHZhbHVlID0gX2dldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgICByZXR1cm4gX2Jhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHZhciBfZ2V0TmF0aXZlID0gZ2V0TmF0aXZlO1xuXG4gIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgdmFyIG5hdGl2ZUNyZWF0ZSA9IF9nZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgdmFyIF9uYXRpdmVDcmVhdGUgPSBuYXRpdmVDcmVhdGU7XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBuYW1lIGNsZWFyXG4gICAqIEBtZW1iZXJPZiBIYXNoXG4gICAqL1xuICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgdGhpcy5fX2RhdGFfXyA9IF9uYXRpdmVDcmVhdGUgPyBfbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgdGhpcy5zaXplID0gMDtcbiAgfVxuXG4gIHZhciBfaGFzaENsZWFyID0gaGFzaENsZWFyO1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgZGVsZXRlXG4gICAqIEBtZW1iZXJPZiBIYXNoXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBfaGFzaERlbGV0ZSA9IGhhc2hEZWxldGU7XG5cbiAgLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xuICB2YXIgSEFTSF9VTkRFRklORUQkMSA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gIHZhciBvYmplY3RQcm90byQyID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbiAgdmFyIGhhc093blByb3BlcnR5JDIgPSBvYmplY3RQcm90byQyLmhhc093blByb3BlcnR5O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgZ2V0XG4gICAqIEBtZW1iZXJPZiBIYXNoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICBpZiAoX25hdGl2ZUNyZWF0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGRhdGFba2V5XTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEJDEgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eSQyLmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHZhciBfaGFzaEdldCA9IGhhc2hHZXQ7XG5cbiAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICB2YXIgb2JqZWN0UHJvdG8kMSA9IE9iamVjdC5wcm90b3R5cGU7XG5cbiAgLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG4gIHZhciBoYXNPd25Qcm9wZXJ0eSQxID0gb2JqZWN0UHJvdG8kMS5oYXNPd25Qcm9wZXJ0eTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbmFtZSBoYXNcbiAgICogQG1lbWJlck9mIEhhc2hcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgIHJldHVybiBfbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5JDEuY2FsbChkYXRhLCBrZXkpO1xuICB9XG5cbiAgdmFyIF9oYXNoSGFzID0gaGFzaEhhcztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKipcbiAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbmFtZSBzZXRcbiAgICogQG1lbWJlck9mIEhhc2hcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICAgIGRhdGFba2V5XSA9IChfbmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhciBfaGFzaFNldCA9IGhhc2hTZXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgKi9cbiAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbiAgSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBfaGFzaENsZWFyO1xuICBIYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBfaGFzaERlbGV0ZTtcbiAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gX2hhc2hHZXQ7XG4gIEhhc2gucHJvdG90eXBlLmhhcyA9IF9oYXNoSGFzO1xuICBIYXNoLnByb3RvdHlwZS5zZXQgPSBfaGFzaFNldDtcblxuICB2YXIgX0hhc2ggPSBIYXNoO1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbmFtZSBjbGVhclxuICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAqL1xuICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICB0aGlzLl9fZGF0YV9fID0gW107XG4gICAgdGhpcy5zaXplID0gMDtcbiAgfVxuXG4gIHZhciBfbGlzdENhY2hlQ2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcblxuICAvKipcbiAgICogUGVyZm9ybXMgYVxuICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgNC4wLjBcbiAgICogQGNhdGVnb3J5IExhbmdcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAqXG4gICAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqXG4gICAqIF8uZXEoJ2EnLCAnYScpO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqXG4gICAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqXG4gICAqIF8uZXEoTmFOLCBOYU4pO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqL1xuICBmdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbiAgfVxuXG4gIHZhciBlcV8xID0gZXE7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChlcV8xKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgdmFyIF9hc3NvY0luZGV4T2YgPSBhc3NvY0luZGV4T2Y7XG5cbiAgLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuICAvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgZGVsZXRlXG4gICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgIGluZGV4ID0gX2Fzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgIGRhdGEucG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICB9XG4gICAgLS10aGlzLnNpemU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgX2xpc3RDYWNoZURlbGV0ZSA9IGxpc3RDYWNoZURlbGV0ZTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBuYW1lIGdldFxuICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICBpbmRleCA9IF9hc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgfVxuXG4gIHZhciBfbGlzdENhY2hlR2V0ID0gbGlzdENhY2hlR2V0O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBuYW1lIGhhc1xuICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIF9hc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xuICB9XG5cbiAgdmFyIF9saXN0Q2FjaGVIYXMgPSBsaXN0Q2FjaGVIYXM7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgc2V0XG4gICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAgICovXG4gIGZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICBpbmRleCA9IF9hc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICsrdGhpcy5zaXplO1xuICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdmFyIF9saXN0Q2FjaGVTZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICovXG4gIGZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gX2xpc3RDYWNoZUNsZWFyO1xuICBMaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IF9saXN0Q2FjaGVEZWxldGU7XG4gIExpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gX2xpc3RDYWNoZUdldDtcbiAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBfbGlzdENhY2hlSGFzO1xuICBMaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IF9saXN0Q2FjaGVTZXQ7XG5cbiAgdmFyIF9MaXN0Q2FjaGUgPSBMaXN0Q2FjaGU7XG5cbiAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xuICB2YXIgTWFwJDEgPSBfZ2V0TmF0aXZlKF9yb290LCAnTWFwJyk7XG5cbiAgdmFyIF9NYXAgPSBNYXAkMTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbmFtZSBjbGVhclxuICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICovXG4gIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgJ2hhc2gnOiBuZXcgX0hhc2gsXG4gICAgICAnbWFwJzogbmV3IChfTWFwIHx8IF9MaXN0Q2FjaGUpLFxuICAgICAgJ3N0cmluZyc6IG5ldyBfSGFzaFxuICAgIH07XG4gIH1cblxuICB2YXIgX21hcENhY2hlQ2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG4gIH1cblxuICB2YXIgX2lzS2V5YWJsZSA9IGlzS2V5YWJsZTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgIHJldHVybiBfaXNLZXlhYmxlKGtleSlcbiAgICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgICA6IGRhdGEubWFwO1xuICB9XG5cbiAgdmFyIF9nZXRNYXBEYXRhID0gZ2V0TWFwRGF0YTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgZGVsZXRlXG4gICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgdmFyIHJlc3VsdCA9IF9nZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgX21hcENhY2hlRGVsZXRlID0gbWFwQ2FjaGVEZWxldGU7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBuYW1lIGdldFxuICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcENhY2hlR2V0KGtleSkge1xuICAgIHJldHVybiBfZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICB9XG5cbiAgdmFyIF9tYXBDYWNoZUdldCA9IG1hcENhY2hlR2V0O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQG5hbWUgaGFzXG4gICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIF9nZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG4gIH1cblxuICB2YXIgX21hcENhY2hlSGFzID0gbWFwQ2FjaGVIYXM7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbmFtZSBzZXRcbiAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZGF0YSA9IF9nZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhciBfbWFwQ2FjaGVTZXQgPSBtYXBDYWNoZVNldDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAqL1xuICBmdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG4gIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IF9tYXBDYWNoZUNsZWFyO1xuICBNYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gX21hcENhY2hlRGVsZXRlO1xuICBNYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gX21hcENhY2hlR2V0O1xuICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gX21hcENhY2hlSGFzO1xuICBNYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gX21hcENhY2hlU2V0O1xuXG4gIHZhciBfTWFwQ2FjaGUgPSBNYXBDYWNoZTtcblxuICAvKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG4gIHZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gICAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gICAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgKlxuICAgKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gICAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICAgKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMC4xLjBcbiAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICAgKlxuICAgKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAgICogdmFsdWVzKG9iamVjdCk7XG4gICAqIC8vID0+IFsxLCAyXVxuICAgKlxuICAgKiB2YWx1ZXMob3RoZXIpO1xuICAgKiAvLyA9PiBbMywgNF1cbiAgICpcbiAgICogb2JqZWN0LmEgPSAyO1xuICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICogLy8gPT4gWzEsIDJdXG4gICAqXG4gICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAqIHZhbHVlcyhvYmplY3QpO1xuICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAqXG4gICAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAqL1xuICBmdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgfVxuICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IF9NYXBDYWNoZSk7XG4gICAgcmV0dXJuIG1lbW9pemVkO1xuICB9XG5cbiAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gIG1lbW9pemUuQ2FjaGUgPSBfTWFwQ2FjaGU7XG5cbiAgdmFyIG1lbW9pemVfMSA9IG1lbW9pemU7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xuICB2YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgdmFyIHJlc3VsdCA9IG1lbW9pemVfMShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuXG4gICAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgX21lbW9pemVDYXBwZWQgPSBtZW1vaXplQ2FwcGVkO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuICAvKipcbiAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgKi9cbiAgdmFyIHN0cmluZ1RvUGF0aCA9IF9tZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICB9XG4gICAgc3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSwgZnVuY3Rpb24obWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIHZhciBfc3RyaW5nVG9QYXRoID0gc3RyaW5nVG9QYXRoO1xuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHZhciBfYXJyYXlNYXAgPSBhcnJheU1hcDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZJDEgPSAxIC8gMDtcblxuICAvKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbiAgdmFyIHN5bWJvbFByb3RvID0gX1N5bWJvbCA/IF9TeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheV8xKHZhbHVlKSkge1xuICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHJldHVybiBfYXJyYXlNYXAodmFsdWUsIGJhc2VUb1N0cmluZykgKyAnJztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sXzEodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkkMSkgPyAnLTAnIDogcmVzdWx0O1xuICB9XG5cbiAgdmFyIF9iYXNlVG9TdHJpbmcgPSBiYXNlVG9TdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSA0LjAuMFxuICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgKiAvLyA9PiAnJ1xuICAgKlxuICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICogLy8gPT4gJy0wJ1xuICAgKlxuICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAqIC8vID0+ICcxLDIsMydcbiAgICovXG4gIGZ1bmN0aW9uIHRvU3RyaW5nJDEodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogX2Jhc2VUb1N0cmluZyh2YWx1ZSk7XG4gIH1cblxuICB2YXIgdG9TdHJpbmdfMSA9IHRvU3RyaW5nJDE7XG5cbiAgLyoqXG4gICAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgaWYgKGlzQXJyYXlfMSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIF9pc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBfc3RyaW5nVG9QYXRoKHRvU3RyaW5nXzEodmFsdWUpKTtcbiAgfVxuXG4gIHZhciBfY2FzdFBhdGggPSBjYXN0UGF0aDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDA7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge3N0cmluZ3xzeW1ib2x9IFJldHVybnMgdGhlIGtleS5cbiAgICovXG4gIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCBpc1N5bWJvbF8xKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgfVxuXG4gIHZhciBfdG9LZXkgPSB0b0tleTtcblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZ2V0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZmF1bHQgdmFsdWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgcGF0aCA9IF9jYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdFtfdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgIH1cbiAgICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgX2Jhc2VHZXQgPSBiYXNlR2V0O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgKiBgdW5kZWZpbmVkYCwgdGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGluIGl0cyBwbGFjZS5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMy43LjBcbiAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICpcbiAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICogLy8gPT4gM1xuICAgKlxuICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICogLy8gPT4gM1xuICAgKlxuICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAqIC8vID0+ICdkZWZhdWx0J1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogX2Jhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gIH1cblxuICB2YXIgZ2V0XzEgPSBnZXQ7XG5cbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnVuYyA9IF9nZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICByZXR1cm4gZnVuYztcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9KCkpO1xuXG4gIHZhciBfZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eTtcblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICogdmFsdWUgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgX2RlZmluZVByb3BlcnR5KSB7XG4gICAgICBfZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHZhciBfYmFzZUFzc2lnblZhbHVlID0gYmFzZUFzc2lnblZhbHVlO1xuXG4gIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuICAvKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbiAgdmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgLyoqXG4gICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgKi9cbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXFfMShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgX2Jhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBfYXNzaWduVmFsdWUgPSBhc3NpZ25WYWx1ZTtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAodmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8IGxlbmd0aCk7XG4gIH1cblxuICB2YXIgX2lzSW5kZXggPSBpc0luZGV4O1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICBpZiAoIWlzT2JqZWN0XzEob2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgcGF0aCA9IF9jYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGtleSA9IF90b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3RfMShvYmpWYWx1ZSlcbiAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgIDogKF9pc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2Fzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICBuZXN0ZWQgPSBuZXN0ZWRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIHZhciBfYmFzZVNldCA9IGJhc2VTZXQ7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICogYXJlIGNyZWF0ZWQgZm9yIGFsbCBvdGhlciBtaXNzaW5nIHByb3BlcnRpZXMuIFVzZSBgXy5zZXRXaXRoYCB0byBjdXN0b21pemVcbiAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgKlxuICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgX1xuICAgKiBAc2luY2UgMy43LjBcbiAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAqXG4gICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAqIC8vID0+IDRcbiAgICpcbiAgICogXy5zZXQob2JqZWN0LCBbJ3gnLCAnMCcsICd5JywgJ3onXSwgNSk7XG4gICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAqIC8vID0+IDVcbiAgICovXG4gIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogX2Jhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICB2YXIgc2V0XzEgPSBzZXQ7XG5cbiAgLyoqXG4gICAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB2YXIgX2NvcHlBcnJheSA9IGNvcHlBcnJheTtcblxuICAvKipcbiAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDQuMC4wXG4gICAqIEBjYXRlZ29yeSBVdGlsXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICpcbiAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAqIC8vID0+IFsnYScsICcwJywgJ2InLCAnYyddXG4gICAqL1xuICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICBpZiAoaXNBcnJheV8xKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIF9hcnJheU1hcCh2YWx1ZSwgX3RvS2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzU3ltYm9sXzEodmFsdWUpID8gW3ZhbHVlXSA6IF9jb3B5QXJyYXkoX3N0cmluZ1RvUGF0aCh0b1N0cmluZ18xKHZhbHVlKSkpO1xuICB9XG5cbiAgdmFyIHRvUGF0aF8xID0gdG9QYXRoO1xuXG4gIHZhciBkZWZpbmUkMiA9IHtcbiAgICAvLyBhY2Nlc3MgZGF0YSBmaWVsZFxuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEocGFyYW1zKSB7XG4gICAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICAgIGZpZWxkOiAnZGF0YScsXG4gICAgICAgIGJpbmRpbmdFdmVudDogJ2RhdGEnLFxuICAgICAgICBhbGxvd0JpbmRpbmc6IGZhbHNlLFxuICAgICAgICBhbGxvd1NldHRpbmc6IGZhbHNlLFxuICAgICAgICBhbGxvd0dldHRpbmc6IGZhbHNlLFxuICAgICAgICBzZXR0aW5nRXZlbnQ6ICdkYXRhJyxcbiAgICAgICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IGZhbHNlLFxuICAgICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICAgIGltbXV0YWJsZUtleXM6IHt9LFxuICAgICAgICAvLyBrZXkgPT4gdHJ1ZSBpZiBpbW11dGFibGVcbiAgICAgICAgdXBkYXRlU3R5bGU6IGZhbHNlLFxuICAgICAgICBiZWZvcmVHZXQ6IGZ1bmN0aW9uIGJlZm9yZUdldChzZWxmKSB7fSxcbiAgICAgICAgYmVmb3JlU2V0OiBmdW5jdGlvbiBiZWZvcmVTZXQoc2VsZiwgb2JqKSB7fSxcbiAgICAgICAgb25TZXQ6IGZ1bmN0aW9uIG9uU2V0KHNlbGYpIHt9LFxuICAgICAgICBjYW5TZXQ6IGZ1bmN0aW9uIGNhblNldChzZWxmKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBwYXJhbXMpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGRhdGFJbXBsKG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIHZhciBwID0gcGFyYW1zO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBzZWxmSXNBcnJheUxpa2UgPSBzZWxmLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgYWxsID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZiA6IFtzZWxmXTsgLy8gcHV0IGluIGFycmF5IGlmIG5vdCBhcnJheS1saWtlXG5cbiAgICAgICAgdmFyIHNpbmdsZSA9IHNlbGZJc0FycmF5TGlrZSA/IHNlbGZbMF0gOiBzZWxmOyAvLyAuZGF0YSgnZm9vJywgLi4uKVxuXG4gICAgICAgIGlmIChzdHJpbmcobmFtZSkpIHtcbiAgICAgICAgICAvLyBzZXQgb3IgZ2V0IHByb3BlcnR5XG4gICAgICAgICAgdmFyIGlzUGF0aExpa2UgPSBuYW1lLmluZGV4T2YoJy4nKSAhPT0gLTE7IC8vIHRoZXJlIG1pZ2h0IGJlIGEgbm9ybWFsIGZpZWxkIHdpdGggYSBkb3QgXG5cbiAgICAgICAgICB2YXIgcGF0aCA9IGlzUGF0aExpa2UgJiYgdG9QYXRoXzEobmFtZSk7IC8vIC5kYXRhKCdmb28nKVxuXG4gICAgICAgICAgaWYgKHAuYWxsb3dHZXR0aW5nICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGdldFxuICAgICAgICAgICAgdmFyIHJldDtcblxuICAgICAgICAgICAgaWYgKHNpbmdsZSkge1xuICAgICAgICAgICAgICBwLmJlZm9yZUdldChzaW5nbGUpOyAvLyBjaGVjayBpZiBpdCdzIHBhdGggYW5kIGEgZmllbGQgd2l0aCB0aGUgc2FtZSBuYW1lIGRvZXNuJ3QgZXhpc3RcblxuICAgICAgICAgICAgICBpZiAocGF0aCAmJiBzaW5nbGUuX3ByaXZhdGVbcC5maWVsZF1bbmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldCA9IGdldF8xKHNpbmdsZS5fcHJpdmF0ZVtwLmZpZWxkXSwgcGF0aCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0ID0gc2luZ2xlLl9wcml2YXRlW3AuZmllbGRdW25hbWVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXQ7IC8vIC5kYXRhKCdmb28nLCAnYmFyJylcbiAgICAgICAgICB9IGVsc2UgaWYgKHAuYWxsb3dTZXR0aW5nICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHNldFxuICAgICAgICAgICAgdmFyIHZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1tuYW1lXTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgIHZhciBjaGFuZ2UgPSBfZGVmaW5lUHJvcGVydHkkMSh7fSwgbmFtZSwgdmFsdWUpO1xuXG4gICAgICAgICAgICAgIHAuYmVmb3JlU2V0KHNlbGYsIGNoYW5nZSk7XG5cbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhbGwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsZSA9IGFsbFtpXTtcblxuICAgICAgICAgICAgICAgIGlmIChwLmNhblNldChlbGUpKSB7XG4gICAgICAgICAgICAgICAgICBpZiAocGF0aCAmJiBzaW5nbGUuX3ByaXZhdGVbcC5maWVsZF1bbmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRfMShlbGUuX3ByaXZhdGVbcC5maWVsZF0sIHBhdGgsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZS5fcHJpdmF0ZVtwLmZpZWxkXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSAvLyB1cGRhdGUgbWFwcGVycyBpZiBhc2tlZFxuXG5cbiAgICAgICAgICAgICAgaWYgKHAudXBkYXRlU3R5bGUpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZVN0eWxlKCk7XG4gICAgICAgICAgICAgIH0gLy8gY2FsbCBvblNldCBjYWxsYmFja1xuXG5cbiAgICAgICAgICAgICAgcC5vblNldChzZWxmKTtcblxuICAgICAgICAgICAgICBpZiAocC5zZXR0aW5nVHJpZ2dlcnNFdmVudCkge1xuICAgICAgICAgICAgICAgIHNlbGZbcC50cmlnZ2VyRm5OYW1lXShwLnNldHRpbmdFdmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIC5kYXRhKHsgJ2Zvbyc6ICdiYXInIH0pXG5cbiAgICAgICAgfSBlbHNlIGlmIChwLmFsbG93U2V0dGluZyAmJiBwbGFpbk9iamVjdChuYW1lKSkge1xuICAgICAgICAgIC8vIGV4dGVuZFxuICAgICAgICAgIHZhciBvYmogPSBuYW1lO1xuICAgICAgICAgIHZhciBrLCB2O1xuICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgICBwLmJlZm9yZVNldChzZWxmLCBvYmopO1xuXG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGtleXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBrID0ga2V5c1tfaV07XG4gICAgICAgICAgICB2ID0gb2JqW2tdO1xuXG4gICAgICAgICAgICB2YXIgX3ZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1trXTtcblxuICAgICAgICAgICAgaWYgKF92YWxpZCkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFsbC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBfZWxlID0gYWxsW2pdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHAuY2FuU2V0KF9lbGUpKSB7XG4gICAgICAgICAgICAgICAgICBfZWxlLl9wcml2YXRlW3AuZmllbGRdW2tdID0gdjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIHVwZGF0ZSBtYXBwZXJzIGlmIGFza2VkXG5cblxuICAgICAgICAgIGlmIChwLnVwZGF0ZVN0eWxlKSB7XG4gICAgICAgICAgICBzZWxmLnVwZGF0ZVN0eWxlKCk7XG4gICAgICAgICAgfSAvLyBjYWxsIG9uU2V0IGNhbGxiYWNrXG5cblxuICAgICAgICAgIHAub25TZXQoc2VsZik7XG5cbiAgICAgICAgICBpZiAocC5zZXR0aW5nVHJpZ2dlcnNFdmVudCkge1xuICAgICAgICAgICAgc2VsZltwLnRyaWdnZXJGbk5hbWVdKHAuc2V0dGluZ0V2ZW50KTtcbiAgICAgICAgICB9IC8vIC5kYXRhKGZ1bmN0aW9uKCl7IC4uLiB9KVxuXG4gICAgICAgIH0gZWxzZSBpZiAocC5hbGxvd0JpbmRpbmcgJiYgZm4kNihuYW1lKSkge1xuICAgICAgICAgIC8vIGJpbmQgdG8gZXZlbnRcbiAgICAgICAgICB2YXIgZm4gPSBuYW1lO1xuICAgICAgICAgIHNlbGYub24ocC5iaW5kaW5nRXZlbnQsIGZuKTsgLy8gLmRhdGEoKVxuICAgICAgICB9IGVsc2UgaWYgKHAuYWxsb3dHZXR0aW5nICYmIG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIGdldCB3aG9sZSBvYmplY3RcbiAgICAgICAgICB2YXIgX3JldDtcblxuICAgICAgICAgIGlmIChzaW5nbGUpIHtcbiAgICAgICAgICAgIHAuYmVmb3JlR2V0KHNpbmdsZSk7XG4gICAgICAgICAgICBfcmV0ID0gc2luZ2xlLl9wcml2YXRlW3AuZmllbGRdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBfcmV0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluYWJpbGl0eVxuICAgICAgfTsgLy8gZnVuY3Rpb25cbiAgICB9LFxuICAgIC8vIGRhdGFcbiAgICAvLyByZW1vdmUgZGF0YSBmaWVsZFxuICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uIHJlbW92ZURhdGEocGFyYW1zKSB7XG4gICAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICAgIGZpZWxkOiAnZGF0YScsXG4gICAgICAgIGV2ZW50OiAnZGF0YScsXG4gICAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgICAgdHJpZ2dlckV2ZW50OiBmYWxzZSxcbiAgICAgICAgaW1tdXRhYmxlS2V5czoge30gLy8ga2V5ID0+IHRydWUgaWYgaW1tdXRhYmxlXG5cbiAgICAgIH07XG4gICAgICBwYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBwYXJhbXMpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHJlbW92ZURhdGFJbXBsKG5hbWVzKSB7XG4gICAgICAgIHZhciBwID0gcGFyYW1zO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBzZWxmSXNBcnJheUxpa2UgPSBzZWxmLmxlbmd0aCAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgYWxsID0gc2VsZklzQXJyYXlMaWtlID8gc2VsZiA6IFtzZWxmXTsgLy8gcHV0IGluIGFycmF5IGlmIG5vdCBhcnJheS1saWtlXG4gICAgICAgIC8vIC5yZW1vdmVEYXRhKCdmb28gYmFyJylcblxuICAgICAgICBpZiAoc3RyaW5nKG5hbWVzKSkge1xuICAgICAgICAgIC8vIHRoZW4gZ2V0IHRoZSBsaXN0IG9mIGtleXMsIGFuZCBkZWxldGUgdGhlbVxuICAgICAgICAgIHZhciBrZXlzID0gbmFtZXMuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICB2YXIgbCA9IGtleXMubGVuZ3RoO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBlYWNoIG5vbi1lbXB0eSBrZXlcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICAgICAgICBpZiAoZW1wdHlTdHJpbmcoa2V5KSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHZhbGlkID0gIXAuaW1tdXRhYmxlS2V5c1trZXldOyAvLyBub3QgdmFsaWQgaWYgaW1tdXRhYmxlXG5cbiAgICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBpX2EgPSAwLCBsX2EgPSBhbGwubGVuZ3RoOyBpX2EgPCBsX2E7IGlfYSsrKSB7XG4gICAgICAgICAgICAgICAgYWxsW2lfYV0uX3ByaXZhdGVbcC5maWVsZF1ba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwLnRyaWdnZXJFdmVudCkge1xuICAgICAgICAgICAgc2VsZltwLnRyaWdnZXJGbk5hbWVdKHAuZXZlbnQpO1xuICAgICAgICAgIH0gLy8gLnJlbW92ZURhdGEoKVxuXG4gICAgICAgIH0gZWxzZSBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHRoZW4gZGVsZXRlIGFsbCBrZXlzXG4gICAgICAgICAgZm9yICh2YXIgX2lfYSA9IDAsIF9sX2EgPSBhbGwubGVuZ3RoOyBfaV9hIDwgX2xfYTsgX2lfYSsrKSB7XG4gICAgICAgICAgICB2YXIgX3ByaXZhdGVGaWVsZHMgPSBhbGxbX2lfYV0uX3ByaXZhdGVbcC5maWVsZF07XG5cbiAgICAgICAgICAgIHZhciBfa2V5cyA9IE9iamVjdC5rZXlzKF9wcml2YXRlRmllbGRzKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgX2tleXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgICAgICB2YXIgX2tleSA9IF9rZXlzW19pMl07XG4gICAgICAgICAgICAgIHZhciB2YWxpZEtleVRvRGVsZXRlID0gIXAuaW1tdXRhYmxlS2V5c1tfa2V5XTtcblxuICAgICAgICAgICAgICBpZiAodmFsaWRLZXlUb0RlbGV0ZSkge1xuICAgICAgICAgICAgICAgIF9wcml2YXRlRmllbGRzW19rZXldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHAudHJpZ2dlckV2ZW50KSB7XG4gICAgICAgICAgICBzZWxmW3AudHJpZ2dlckZuTmFtZV0ocC5ldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGY7IC8vIG1haW50YWluIGNoYWluaW5nXG4gICAgICB9OyAvLyBmdW5jdGlvblxuICAgIH0gLy8gcmVtb3ZlRGF0YVxuXG4gIH07IC8vIGRlZmluZVxuXG4gIHZhciBkZWZpbmUkMSA9IHtcbiAgICBldmVudEFsaWFzZXNPbjogZnVuY3Rpb24gZXZlbnRBbGlhc2VzT24ocHJvdG8pIHtcbiAgICAgIHZhciBwID0gcHJvdG87XG4gICAgICBwLmFkZExpc3RlbmVyID0gcC5saXN0ZW4gPSBwLmJpbmQgPSBwLm9uO1xuICAgICAgcC51bmxpc3RlbiA9IHAudW5iaW5kID0gcC5vZmYgPSBwLnJlbW92ZUxpc3RlbmVyO1xuICAgICAgcC50cmlnZ2VyID0gcC5lbWl0OyAvLyB0aGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFsaWFzIG9mIC5vbigpXG5cbiAgICAgIHAucG9uID0gcC5wcm9taXNlT24gPSBmdW5jdGlvbiAoZXZlbnRzLCBzZWxlY3Rvcikge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHtcbiAgICAgICAgICAgIHNlbGYub2ZmLmFwcGx5KHNlbGYsIG9mZkFyZ3MpO1xuICAgICAgICAgICAgcmVzb2x2ZShlKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdmFyIG9uQXJncyA9IGFyZ3MuY29uY2F0KFtjYWxsYmFja10pO1xuICAgICAgICAgIHZhciBvZmZBcmdzID0gb25BcmdzLmNvbmNhdChbXSk7XG4gICAgICAgICAgc2VsZi5vbi5hcHBseShzZWxmLCBvbkFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9OyAvLyBkZWZpbmVcblxuICAvLyB1c2UgdGhpcyBtb2R1bGUgdG8gY2hlcnJ5IHBpY2sgZnVuY3Rpb25zIGludG8geW91ciBwcm90b3R5cGVcbiAgdmFyIGRlZmluZSA9IHt9O1xuICBbZGVmaW5lJDMsIGRlZmluZSQyLCBkZWZpbmUkMV0uZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICAgIGV4dGVuZChkZWZpbmUsIG0pO1xuICB9KTtcblxuICB2YXIgZWxlc2ZuJGkgPSB7XG4gICAgYW5pbWF0ZTogZGVmaW5lLmFuaW1hdGUoKSxcbiAgICBhbmltYXRpb246IGRlZmluZS5hbmltYXRpb24oKSxcbiAgICBhbmltYXRlZDogZGVmaW5lLmFuaW1hdGVkKCksXG4gICAgY2xlYXJRdWV1ZTogZGVmaW5lLmNsZWFyUXVldWUoKSxcbiAgICBkZWxheTogZGVmaW5lLmRlbGF5KCksXG4gICAgZGVsYXlBbmltYXRpb246IGRlZmluZS5kZWxheUFuaW1hdGlvbigpLFxuICAgIHN0b3A6IGRlZmluZS5zdG9wKClcbiAgfTtcblxuICB2YXIgZWxlc2ZuJGggPSB7XG4gICAgY2xhc3NlczogZnVuY3Rpb24gY2xhc3NlcyhfY2xhc3Nlcykge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICBpZiAoX2NsYXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgcmV0ID0gW107XG5cbiAgICAgICAgc2VsZlswXS5fcHJpdmF0ZS5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICAgIHJldHVybiByZXQucHVzaChjbHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfSBlbHNlIGlmICghYXJyYXkoX2NsYXNzZXMpKSB7XG4gICAgICAgIC8vIGV4dHJhY3QgY2xhc3NlcyBmcm9tIHN0cmluZ1xuICAgICAgICBfY2xhc3NlcyA9IChfY2xhc3NlcyB8fCAnJykubWF0Y2goL1xcUysvZykgfHwgW107XG4gICAgICB9XG5cbiAgICAgIHZhciBjaGFuZ2VkID0gW107XG4gICAgICB2YXIgY2xhc3Nlc1NldCA9IG5ldyBTZXQkMShfY2xhc3Nlcyk7IC8vIGNoZWNrIGFuZCB1cGRhdGUgZWFjaCBlbGVcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxmLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBlbGUgPSBzZWxmW2pdO1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIHZhciBlbGVDbGFzc2VzID0gX3AuY2xhc3NlcztcbiAgICAgICAgdmFyIGNoYW5nZWRFbGUgPSBmYWxzZTsgLy8gY2hlY2sgaWYgZWxlIGhhcyBhbGwgb2YgdGhlIHBhc3NlZCBjbGFzc2VzXG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfY2xhc3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBjbHMgPSBfY2xhc3Nlc1tpXTtcbiAgICAgICAgICB2YXIgZWxlSGFzQ2xhc3MgPSBlbGVDbGFzc2VzLmhhcyhjbHMpO1xuXG4gICAgICAgICAgaWYgKCFlbGVIYXNDbGFzcykge1xuICAgICAgICAgICAgY2hhbmdlZEVsZSA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gY2hlY2sgaWYgZWxlIGhhcyBjbGFzc2VzIG91dHNpZGUgb2YgdGhvc2UgcGFzc2VkXG5cblxuICAgICAgICBpZiAoIWNoYW5nZWRFbGUpIHtcbiAgICAgICAgICBjaGFuZ2VkRWxlID0gZWxlQ2xhc3Nlcy5zaXplICE9PSBfY2xhc3Nlcy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlZEVsZSkge1xuICAgICAgICAgIF9wLmNsYXNzZXMgPSBjbGFzc2VzU2V0O1xuICAgICAgICAgIGNoYW5nZWQucHVzaChlbGUpO1xuICAgICAgICB9XG4gICAgICB9IC8vIHRyaWdnZXIgdXBkYXRlIHN0eWxlIG9uIHRob3NlIGVsZXMgdGhhdCBoYWQgY2xhc3MgY2hhbmdlc1xuXG5cbiAgICAgIGlmIChjaGFuZ2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zcGF3bihjaGFuZ2VkKS51cGRhdGVTdHlsZSgpLmVtaXQoJ2NsYXNzJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH0sXG4gICAgYWRkQ2xhc3M6IGZ1bmN0aW9uIGFkZENsYXNzKGNsYXNzZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUNsYXNzKGNsYXNzZXMsIHRydWUpO1xuICAgIH0sXG4gICAgaGFzQ2xhc3M6IGZ1bmN0aW9uIGhhc0NsYXNzKGNsYXNzTmFtZSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgICByZXR1cm4gZWxlICE9IG51bGwgJiYgZWxlLl9wcml2YXRlLmNsYXNzZXMuaGFzKGNsYXNzTmFtZSk7XG4gICAgfSxcbiAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoY2xhc3NlcywgdG9nZ2xlKSB7XG4gICAgICBpZiAoIWFycmF5KGNsYXNzZXMpKSB7XG4gICAgICAgIC8vIGV4dHJhY3QgY2xhc3NlcyBmcm9tIHN0cmluZ1xuICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5tYXRjaCgvXFxTKy9nKSB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIHRvZ2dsZVVuZGVmZCA9IHRvZ2dsZSA9PT0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGNoYW5nZWQgPSBbXTsgLy8gZWxlcyB3aG8gaGFkIGNsYXNzZXMgY2hhbmdlZFxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBzZWxmLmxlbmd0aDsgaSA8IGlsOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHNlbGZbaV07XG4gICAgICAgIHZhciBlbGVDbGFzc2VzID0gZWxlLl9wcml2YXRlLmNsYXNzZXM7XG4gICAgICAgIHZhciBjaGFuZ2VkRWxlID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjbGFzc2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGNscyA9IGNsYXNzZXNbal07XG4gICAgICAgICAgdmFyIGhhc0NsYXNzID0gZWxlQ2xhc3Nlcy5oYXMoY2xzKTtcbiAgICAgICAgICB2YXIgY2hhbmdlZE5vdyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRvZ2dsZSB8fCB0b2dnbGVVbmRlZmQgJiYgIWhhc0NsYXNzKSB7XG4gICAgICAgICAgICBlbGVDbGFzc2VzLmFkZChjbHMpO1xuICAgICAgICAgICAgY2hhbmdlZE5vdyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmICghdG9nZ2xlIHx8IHRvZ2dsZVVuZGVmZCAmJiBoYXNDbGFzcykge1xuICAgICAgICAgICAgZWxlQ2xhc3Nlc1tcImRlbGV0ZVwiXShjbHMpO1xuICAgICAgICAgICAgY2hhbmdlZE5vdyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFjaGFuZ2VkRWxlICYmIGNoYW5nZWROb3cpIHtcbiAgICAgICAgICAgIGNoYW5nZWQucHVzaChlbGUpO1xuICAgICAgICAgICAgY2hhbmdlZEVsZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIGZvciBqIGNsYXNzZXNcblxuICAgICAgfSAvLyBmb3IgaSBlbGVzXG4gICAgICAvLyB0cmlnZ2VyIHVwZGF0ZSBzdHlsZSBvbiB0aG9zZSBlbGVzIHRoYXQgaGFkIGNsYXNzIGNoYW5nZXNcblxuXG4gICAgICBpZiAoY2hhbmdlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc3Bhd24oY2hhbmdlZCkudXBkYXRlU3R5bGUoKS5lbWl0KCdjbGFzcycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9LFxuICAgIHJlbW92ZUNsYXNzOiBmdW5jdGlvbiByZW1vdmVDbGFzcyhjbGFzc2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy50b2dnbGVDbGFzcyhjbGFzc2VzLCBmYWxzZSk7XG4gICAgfSxcbiAgICBmbGFzaENsYXNzOiBmdW5jdGlvbiBmbGFzaENsYXNzKGNsYXNzZXMsIGR1cmF0aW9uKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIGlmIChkdXJhdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIGR1cmF0aW9uID0gMjUwO1xuICAgICAgfSBlbHNlIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc2VsZjsgLy8gbm90aGluZyB0byBkbyByZWFsbHlcbiAgICAgIH1cblxuICAgICAgc2VsZi5hZGRDbGFzcyhjbGFzc2VzKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLnJlbW92ZUNsYXNzKGNsYXNzZXMpO1xuICAgICAgfSwgZHVyYXRpb24pO1xuICAgICAgcmV0dXJuIHNlbGY7XG4gICAgfVxuICB9O1xuICBlbGVzZm4kaC5jbGFzc05hbWUgPSBlbGVzZm4kaC5jbGFzc05hbWVzID0gZWxlc2ZuJGguY2xhc3NlcztcblxuICB2YXIgdG9rZW5zID0ge1xuICAgIG1ldGFDaGFyOiAnW1xcXFwhXFxcXFwiXFxcXCNcXFxcJFxcXFwlXFxcXCZcXFxcXFwnXFxcXChcXFxcKVxcXFwqXFxcXCtcXFxcLFxcXFwuXFxcXC9cXFxcOlxcXFw7XFxcXDxcXFxcPVxcXFw+XFxcXD9cXFxcQFxcXFxbXFxcXF1cXFxcXlxcXFxgXFxcXHtcXFxcfFxcXFx9XFxcXH5dJyxcbiAgICAvLyBjaGFycyB3ZSBuZWVkIHRvIGVzY2FwZSBpbiBsZXQgbmFtZXMsIGV0Y1xuICAgIGNvbXBhcmF0b3JPcDogJz18XFxcXCE9fD58Pj18PHw8PXxcXFxcJD18XFxcXF49fFxcXFwqPScsXG4gICAgLy8gYmluYXJ5IGNvbXBhcmlzb24gb3AgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpXG4gICAgYm9vbE9wOiAnXFxcXD98XFxcXCF8XFxcXF4nLFxuICAgIC8vIGJvb2xlYW4gKHVuYXJ5KSBvcGVyYXRvcnMgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpXG4gICAgc3RyaW5nOiAnXCIoPzpcXFxcXFxcXFwifFteXCJdKSpcIicgKyAnfCcgKyBcIicoPzpcXFxcXFxcXCd8W14nXSkqJ1wiLFxuICAgIC8vIHN0cmluZyBsaXRlcmFscyAodXNlZCBpbiBkYXRhIHNlbGVjdG9ycykgLS0gZG91YmxlcXVvdGVzIHwgc2luZ2xlcXVvdGVzXG4gICAgbnVtYmVyOiBudW1iZXIsXG4gICAgLy8gbnVtYmVyIGxpdGVyYWwgKHVzZWQgaW4gZGF0YSBzZWxlY3RvcnMpIC0tLSBlLmcuIDAuMTIzNCwgMTIzNCwgMTJlMTIzXG4gICAgbWV0YTogJ2RlZ3JlZXxpbmRlZ3JlZXxvdXRkZWdyZWUnLFxuICAgIC8vIGFsbG93ZWQgbWV0YWRhdGEgZmllbGRzIChpLmUuIGFsbG93ZWQgZnVuY3Rpb25zIHRvIHVzZSBmcm9tIENvbGxlY3Rpb24pXG4gICAgc2VwYXJhdG9yOiAnXFxcXHMqLFxcXFxzKicsXG4gICAgLy8gcXVlcmllcyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgZS5nLiBlZGdlW2ZvbyA9ICdiYXInXSwgbm9kZS5zb21lQ2xhc3NcbiAgICBkZXNjZW5kYW50OiAnXFxcXHMrJyxcbiAgICBjaGlsZDogJ1xcXFxzKz5cXFxccysnLFxuICAgIHN1YmplY3Q6ICdcXFxcJCcsXG4gICAgZ3JvdXA6ICdub2RlfGVkZ2V8XFxcXConLFxuICAgIGRpcmVjdGVkRWRnZTogJ1xcXFxzKy0+XFxcXHMrJyxcbiAgICB1bmRpcmVjdGVkRWRnZTogJ1xcXFxzKzwtPlxcXFxzKydcbiAgfTtcbiAgdG9rZW5zLnZhcmlhYmxlID0gJyg/OltcXFxcdy0uXXwoPzpcXFxcXFxcXCcgKyB0b2tlbnMubWV0YUNoYXIgKyAnKSkrJzsgLy8gYSB2YXJpYWJsZSBuYW1lIGNhbiBoYXZlIGxldHRlcnMsIG51bWJlcnMsIGRhc2hlcywgYW5kIHBlcmlvZHNcblxuICB0b2tlbnMuY2xhc3NOYW1lID0gJyg/OltcXFxcdy1dfCg/OlxcXFxcXFxcJyArIHRva2Vucy5tZXRhQ2hhciArICcpKSsnOyAvLyBhIGNsYXNzIG5hbWUgaGFzIHRoZSBzYW1lIHJ1bGVzIGFzIGEgdmFyaWFibGUgZXhjZXB0IGl0IGNhbid0IGhhdmUgYSAnLicgaW4gdGhlIG5hbWVcblxuICB0b2tlbnMudmFsdWUgPSB0b2tlbnMuc3RyaW5nICsgJ3wnICsgdG9rZW5zLm51bWJlcjsgLy8gYSB2YWx1ZSBsaXRlcmFsLCBlaXRoZXIgYSBzdHJpbmcgb3IgbnVtYmVyXG5cbiAgdG9rZW5zLmlkID0gdG9rZW5zLnZhcmlhYmxlOyAvLyBhbiBlbGVtZW50IGlkIChmb2xsb3dzIHZhcmlhYmxlIGNvbnZlbnRpb25zKVxuXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wcywgb3AsIGk7IC8vIGFkZCBAIHZhcmlhbnRzIHRvIGNvbXBhcmF0b3JPcFxuXG4gICAgb3BzID0gdG9rZW5zLmNvbXBhcmF0b3JPcC5zcGxpdCgnfCcpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgb3AgPSBvcHNbaV07XG4gICAgICB0b2tlbnMuY29tcGFyYXRvck9wICs9ICd8QCcgKyBvcDtcbiAgICB9IC8vIGFkZCAhIHZhcmlhbnRzIHRvIGNvbXBhcmF0b3JPcFxuXG5cbiAgICBvcHMgPSB0b2tlbnMuY29tcGFyYXRvck9wLnNwbGl0KCd8Jyk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvcCA9IG9wc1tpXTtcblxuICAgICAgaWYgKG9wLmluZGV4T2YoJyEnKSA+PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBza2lwIG9wcyB0aGF0IGV4cGxpY2l0bHkgY29udGFpbiAhXG5cblxuICAgICAgaWYgKG9wID09PSAnPScpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHNraXAgPSBiL2MgIT0gaXMgZXhwbGljaXRseSBkZWZpbmVkXG5cblxuICAgICAgdG9rZW5zLmNvbXBhcmF0b3JPcCArPSAnfFxcXFwhJyArIG9wO1xuICAgIH1cbiAgfSkoKTtcblxuICAvKipcbiAgICogTWFrZSBhIG5ldyBxdWVyeSBvYmplY3RcbiAgICpcbiAgICogQHByb3AgdHlwZSB7VHlwZX0gVGhlIHR5cGUgZW51bSAoaW50KSBvZiB0aGUgcXVlcnlcbiAgICogQHByb3AgY2hlY2tzIExpc3Qgb2YgY2hlY2tzIHRvIG1ha2UgYWdhaW5zdCBhbiBlbGUgdG8gdGVzdCBmb3IgYSBtYXRjaFxuICAgKi9cbiAgdmFyIG5ld1F1ZXJ5ID0gZnVuY3Rpb24gbmV3UXVlcnkoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoZWNrczogW11cbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIGNoZWNrIHR5cGUgZW51bS1saWtlIG9iamVjdC4gIFVzZXMgaW50ZWdlciB2YWx1ZXMgZm9yIGZhc3QgbWF0Y2goKSBsb29rdXAuXG4gICAqIFRoZSBvcmRlcmluZyBkb2VzIG5vdCBtYXR0ZXIgYXMgbG9uZyBhcyB0aGUgaW50cyBhcmUgdW5pcXVlLlxuICAgKi9cbiAgdmFyIFR5cGUgPSB7XG4gICAgLyoqIEUuZy4gbm9kZSAqL1xuICAgIEdST1VQOiAwLFxuXG4gICAgLyoqIEEgY29sbGVjdGlvbiBvZiBlbGVtZW50cyAqL1xuICAgIENPTExFQ1RJT046IDEsXG5cbiAgICAvKiogQSBmaWx0ZXIoZWxlKSBmdW5jdGlvbiAqL1xuICAgIEZJTFRFUjogMixcblxuICAgIC8qKiBFLmcuIFtmb28gPiAxXSAqL1xuICAgIERBVEFfQ09NUEFSRTogMyxcblxuICAgIC8qKiBFLmcuIFtmb29dICovXG4gICAgREFUQV9FWElTVDogNCxcblxuICAgIC8qKiBFLmcuIFs/Zm9vXSAqL1xuICAgIERBVEFfQk9PTDogNSxcblxuICAgIC8qKiBFLmcuIFtbZGVncmVlID4gMl1dICovXG4gICAgTUVUQV9DT01QQVJFOiA2LFxuXG4gICAgLyoqIEUuZy4gOnNlbGVjdGVkICovXG4gICAgU1RBVEU6IDcsXG5cbiAgICAvKiogRS5nLiAjZm9vICovXG4gICAgSUQ6IDgsXG5cbiAgICAvKiogRS5nLiAuZm9vICovXG4gICAgQ0xBU1M6IDksXG5cbiAgICAvKiogRS5nLiAjZm9vIDwtPiAjYmFyICovXG4gICAgVU5ESVJFQ1RFRF9FREdFOiAxMCxcblxuICAgIC8qKiBFLmcuICNmb28gLT4gI2JhciAqL1xuICAgIERJUkVDVEVEX0VER0U6IDExLFxuXG4gICAgLyoqIEUuZy4gJCNmb28gLT4gI2JhciAqL1xuICAgIE5PREVfU09VUkNFOiAxMixcblxuICAgIC8qKiBFLmcuICNmb28gLT4gJCNiYXIgKi9cbiAgICBOT0RFX1RBUkdFVDogMTMsXG5cbiAgICAvKiogRS5nLiAkI2ZvbyA8LT4gI2JhciAqL1xuICAgIE5PREVfTkVJR0hCT1I6IDE0LFxuXG4gICAgLyoqIEUuZy4gI2ZvbyA+ICNiYXIgKi9cbiAgICBDSElMRDogMTUsXG5cbiAgICAvKiogRS5nLiAjZm9vICNiYXIgKi9cbiAgICBERVNDRU5EQU5UOiAxNixcblxuICAgIC8qKiBFLmcuICQjZm9vID4gI2JhciAqL1xuICAgIFBBUkVOVDogMTcsXG5cbiAgICAvKiogRS5nLiAkI2ZvbyAjYmFyICovXG4gICAgQU5DRVNUT1I6IDE4LFxuXG4gICAgLyoqIEUuZy4gI2ZvbyA+ICRiYXIgPiAjYmF6ICovXG4gICAgQ09NUE9VTkRfU1BMSVQ6IDE5LFxuXG4gICAgLyoqIEFsd2F5cyBtYXRjaGVzLCB1c2VmdWwgcGxhY2Vob2xkZXIgZm9yIHN1YmplY3QgaW4gYENPTVBPVU5EX1NQTElUYCAqL1xuICAgIFRSVUU6IDIwXG4gIH07XG5cbiAgdmFyIHN0YXRlU2VsZWN0b3JzID0gW3tcbiAgICBzZWxlY3RvcjogJzpzZWxlY3RlZCcsXG4gICAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuc2VsZWN0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzp1bnNlbGVjdGVkJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuICFlbGUuc2VsZWN0ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpzZWxlY3RhYmxlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5zZWxlY3RhYmxlKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6dW5zZWxlY3RhYmxlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuICFlbGUuc2VsZWN0YWJsZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOmxvY2tlZCcsXG4gICAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICAgIHJldHVybiBlbGUubG9ja2VkKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6dW5sb2NrZWQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gIWVsZS5sb2NrZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzp2aXNpYmxlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS52aXNpYmxlKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6aGlkZGVuJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuICFlbGUudmlzaWJsZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOnRyYW5zcGFyZW50JyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS50cmFuc3BhcmVudCgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOmdyYWJiZWQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmdyYWJiZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpmcmVlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuICFlbGUuZ3JhYmJlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOnJlbW92ZWQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLnJlbW92ZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzppbnNpZGUnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gIWVsZS5yZW1vdmVkKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6Z3JhYmJhYmxlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5ncmFiYmFibGUoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzp1bmdyYWJiYWJsZScsXG4gICAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICAgIHJldHVybiAhZWxlLmdyYWJiYWJsZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOmFuaW1hdGVkJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5hbmltYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOnVuYW5pbWF0ZWQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gIWVsZS5hbmltYXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOnBhcmVudCcsXG4gICAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpjaGlsZGxlc3MnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzQ2hpbGRsZXNzKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6Y2hpbGQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzQ2hpbGQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpvcnBoYW4nLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzT3JwaGFuKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6bm9ub3JwaGFuJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc0NoaWxkKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6Y29tcG91bmQnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIHJldHVybiBlbGUuaXNQYXJlbnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbGUuc291cmNlKCkuaXNQYXJlbnQoKSB8fCBlbGUudGFyZ2V0KCkuaXNQYXJlbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpsb29wJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc0xvb3AoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpzaW1wbGUnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmlzU2ltcGxlKCk7XG4gICAgfVxuICB9LCB7XG4gICAgc2VsZWN0b3I6ICc6YWN0aXZlJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5hY3RpdmUoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzppbmFjdGl2ZScsXG4gICAgbWF0Y2hlczogZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICAgIHJldHVybiAhZWxlLmFjdGl2ZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIHNlbGVjdG9yOiAnOmJhY2tncm91bmRpbmcnLFxuICAgIG1hdGNoZXM6IGZ1bmN0aW9uIG1hdGNoZXMoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmJhY2tncm91bmRpbmcoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBzZWxlY3RvcjogJzpub25iYWNrZ3JvdW5kaW5nJyxcbiAgICBtYXRjaGVzOiBmdW5jdGlvbiBtYXRjaGVzKGVsZSkge1xuICAgICAgcmV0dXJuICFlbGUuYmFja2dyb3VuZGluZygpO1xuICAgIH1cbiAgfV0uc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIC8vIG4uYi4gc2VsZWN0b3JzIHRoYXQgYXJlIHN0YXJ0aW5nIHN1YnN0cmluZ3Mgb2Ygb3RoZXJzIG11c3QgaGF2ZSB0aGUgbG9uZ2VyIG9uZXMgZmlyc3RcbiAgICByZXR1cm4gZGVzY2VuZGluZyhhLnNlbGVjdG9yLCBiLnNlbGVjdG9yKTtcbiAgfSk7XG5cbiAgdmFyIGxvb2t1cCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsVG9GbiA9IHt9O1xuICAgIHZhciBzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZVNlbGVjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgcyA9IHN0YXRlU2VsZWN0b3JzW2ldO1xuICAgICAgc2VsVG9GbltzLnNlbGVjdG9yXSA9IHMubWF0Y2hlcztcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsVG9GbjtcbiAgfSgpO1xuXG4gIHZhciBzdGF0ZVNlbGVjdG9yTWF0Y2hlcyA9IGZ1bmN0aW9uIHN0YXRlU2VsZWN0b3JNYXRjaGVzKHNlbCwgZWxlKSB7XG4gICAgcmV0dXJuIGxvb2t1cFtzZWxdKGVsZSk7XG4gIH07XG4gIHZhciBzdGF0ZVNlbGVjdG9yUmVnZXggPSAnKCcgKyBzdGF0ZVNlbGVjdG9ycy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcy5zZWxlY3RvcjtcbiAgfSkuam9pbignfCcpICsgJyknO1xuXG4gIC8vIHNvIHRoYXQgdmFsdWVzIGdldCBjb21wYXJlZCBwcm9wZXJseSBpbiBTZWxlY3Rvci5maWx0ZXIoKVxuXG4gIHZhciBjbGVhbk1ldGFDaGFycyA9IGZ1bmN0aW9uIGNsZWFuTWV0YUNoYXJzKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcXFxcXCgnICsgdG9rZW5zLm1ldGFDaGFyICsgJyknLCAnZycpLCBmdW5jdGlvbiAobWF0Y2gsICQxKSB7XG4gICAgICByZXR1cm4gJDE7XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIHJlcGxhY2VMYXN0UXVlcnkgPSBmdW5jdGlvbiByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBleGFtaW5pbmdRdWVyeSwgcmVwbGFjZW1lbnRRdWVyeSkge1xuICAgIHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdID0gcmVwbGFjZW1lbnRRdWVyeTtcbiAgfTsgLy8gTk9URTogYWRkIG5ldyBleHByZXNzaW9uIHN5bnRheCBoZXJlIHRvIGhhdmUgaXQgcmVjb2duaXNlZCBieSB0aGUgcGFyc2VyO1xuICAvLyAtIGEgcXVlcnkgY29udGFpbnMgYWxsIGFkamFjZW50IChpLmUuIG5vIHNlcGFyYXRvciBpbiBiZXR3ZWVuKSBleHByZXNzaW9ucztcbiAgLy8gLSB0aGUgY3VycmVudCBxdWVyeSBpcyBzdG9yZWQgaW4gc2VsZWN0b3JbaV1cbiAgLy8gLSB5b3UgbmVlZCB0byBjaGVjayB0aGUgcXVlcnkgb2JqZWN0cyBpbiBtYXRjaCgpIGZvciBpdCBhY3R1YWxseSBmaWx0ZXIgcHJvcGVybHksIGJ1dCB0aGF0J3MgcHJldHR5IHN0cmFpZ2h0IGZvcndhcmRcblxuXG4gIHZhciBleHBycyA9IFt7XG4gICAgbmFtZTogJ2dyb3VwJyxcbiAgICAvLyBqdXN0IHVzZWQgZm9yIGlkZW50aWZ5aW5nIHdoZW4gZGVidWdnaW5nXG4gICAgcXVlcnk6IHRydWUsXG4gICAgcmVnZXg6ICcoJyArIHRva2Vucy5ncm91cCArICcpJyxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmKSB7XG4gICAgICB2YXIgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAxKSxcbiAgICAgICAgICBncm91cCA9IF9yZWYyWzBdO1xuXG4gICAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuR1JPVVAsXG4gICAgICAgIHZhbHVlOiBncm91cCA9PT0gJyonID8gZ3JvdXAgOiBncm91cCArICdzJ1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAgbmFtZTogJ3N0YXRlJyxcbiAgICBxdWVyeTogdHJ1ZSxcbiAgICByZWdleDogc3RhdGVTZWxlY3RvclJlZ2V4LFxuICAgIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWYzKSB7XG4gICAgICB2YXIgX3JlZjQgPSBfc2xpY2VkVG9BcnJheShfcmVmMywgMSksXG4gICAgICAgICAgc3RhdGUgPSBfcmVmNFswXTtcblxuICAgICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLlNUQVRFLFxuICAgICAgICB2YWx1ZTogc3RhdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIG5hbWU6ICdpZCcsXG4gICAgcXVlcnk6IHRydWUsXG4gICAgcmVnZXg6ICdcXFxcIygnICsgdG9rZW5zLmlkICsgJyknLFxuICAgIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWY1KSB7XG4gICAgICB2YXIgX3JlZjYgPSBfc2xpY2VkVG9BcnJheShfcmVmNSwgMSksXG4gICAgICAgICAgaWQgPSBfcmVmNlswXTtcblxuICAgICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLklELFxuICAgICAgICB2YWx1ZTogY2xlYW5NZXRhQ2hhcnMoaWQpXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBuYW1lOiAnY2xhc3NOYW1lJyxcbiAgICBxdWVyeTogdHJ1ZSxcbiAgICByZWdleDogJ1xcXFwuKCcgKyB0b2tlbnMuY2xhc3NOYW1lICsgJyknLFxuICAgIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWY3KSB7XG4gICAgICB2YXIgX3JlZjggPSBfc2xpY2VkVG9BcnJheShfcmVmNywgMSksXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3JlZjhbMF07XG5cbiAgICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5DTEFTUyxcbiAgICAgICAgdmFsdWU6IGNsZWFuTWV0YUNoYXJzKGNsYXNzTmFtZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIG5hbWU6ICdkYXRhRXhpc3RzJyxcbiAgICBxdWVyeTogdHJ1ZSxcbiAgICByZWdleDogJ1xcXFxbXFxcXHMqKCcgKyB0b2tlbnMudmFyaWFibGUgKyAnKVxcXFxzKlxcXFxdJyxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmOSkge1xuICAgICAgdmFyIF9yZWYxMCA9IF9zbGljZWRUb0FycmF5KF9yZWY5LCAxKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMFswXTtcblxuICAgICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLkRBVEFfRVhJU1QsXG4gICAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIG5hbWU6ICdkYXRhQ29tcGFyZScsXG4gICAgcXVlcnk6IHRydWUsXG4gICAgcmVnZXg6ICdcXFxcW1xcXFxzKignICsgdG9rZW5zLnZhcmlhYmxlICsgJylcXFxccyooJyArIHRva2Vucy5jb21wYXJhdG9yT3AgKyAnKVxcXFxzKignICsgdG9rZW5zLnZhbHVlICsgJylcXFxccypcXFxcXScsXG4gICAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSwgX3JlZjExKSB7XG4gICAgICB2YXIgX3JlZjEyID0gX3NsaWNlZFRvQXJyYXkoX3JlZjExLCAzKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IF9yZWYxMlswXSxcbiAgICAgICAgICBjb21wYXJhdG9yT3AgPSBfcmVmMTJbMV0sXG4gICAgICAgICAgdmFsdWUgPSBfcmVmMTJbMl07XG5cbiAgICAgIHZhciB2YWx1ZUlzU3RyaW5nID0gbmV3IFJlZ0V4cCgnXicgKyB0b2tlbnMuc3RyaW5nICsgJyQnKS5leGVjKHZhbHVlKSAhPSBudWxsO1xuXG4gICAgICBpZiAodmFsdWVJc1N0cmluZykge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGggLSAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgdHlwZTogVHlwZS5EQVRBX0NPTVBBUkUsXG4gICAgICAgIGZpZWxkOiBjbGVhbk1ldGFDaGFycyh2YXJpYWJsZSksXG4gICAgICAgIG9wZXJhdG9yOiBjb21wYXJhdG9yT3AsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAgbmFtZTogJ2RhdGFCb29sJyxcbiAgICBxdWVyeTogdHJ1ZSxcbiAgICByZWdleDogJ1xcXFxbXFxcXHMqKCcgKyB0b2tlbnMuYm9vbE9wICsgJylcXFxccyooJyArIHRva2Vucy52YXJpYWJsZSArICcpXFxcXHMqXFxcXF0nLFxuICAgIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnksIF9yZWYxMykge1xuICAgICAgdmFyIF9yZWYxNCA9IF9zbGljZWRUb0FycmF5KF9yZWYxMywgMiksXG4gICAgICAgICAgYm9vbE9wID0gX3JlZjE0WzBdLFxuICAgICAgICAgIHZhcmlhYmxlID0gX3JlZjE0WzFdO1xuXG4gICAgICBxdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgIHR5cGU6IFR5cGUuREFUQV9CT09MLFxuICAgICAgICBmaWVsZDogY2xlYW5NZXRhQ2hhcnModmFyaWFibGUpLFxuICAgICAgICBvcGVyYXRvcjogYm9vbE9wXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBuYW1lOiAnbWV0YUNvbXBhcmUnLFxuICAgIHF1ZXJ5OiB0cnVlLFxuICAgIHJlZ2V4OiAnXFxcXFtcXFxcW1xcXFxzKignICsgdG9rZW5zLm1ldGEgKyAnKVxcXFxzKignICsgdG9rZW5zLmNvbXBhcmF0b3JPcCArICcpXFxcXHMqKCcgKyB0b2tlbnMubnVtYmVyICsgJylcXFxccypcXFxcXVxcXFxdJyxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5LCBfcmVmMTUpIHtcbiAgICAgIHZhciBfcmVmMTYgPSBfc2xpY2VkVG9BcnJheShfcmVmMTUsIDMpLFxuICAgICAgICAgIG1ldGEgPSBfcmVmMTZbMF0sXG4gICAgICAgICAgY29tcGFyYXRvck9wID0gX3JlZjE2WzFdLFxuICAgICAgICAgIG51bWJlciA9IF9yZWYxNlsyXTtcblxuICAgICAgcXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICB0eXBlOiBUeXBlLk1FVEFfQ09NUEFSRSxcbiAgICAgICAgZmllbGQ6IGNsZWFuTWV0YUNoYXJzKG1ldGEpLFxuICAgICAgICBvcGVyYXRvcjogY29tcGFyYXRvck9wLFxuICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW1iZXIpXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBuYW1lOiAnbmV4dFF1ZXJ5JyxcbiAgICBzZXBhcmF0b3I6IHRydWUsXG4gICAgcmVnZXg6IHRva2Vucy5zZXBhcmF0b3IsXG4gICAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSkge1xuICAgICAgdmFyIGN1cnJlbnRTdWJqZWN0ID0gc2VsZWN0b3IuY3VycmVudFN1YmplY3Q7XG4gICAgICB2YXIgZWRnZUNvdW50ID0gc2VsZWN0b3IuZWRnZUNvdW50O1xuICAgICAgdmFyIGNvbXBvdW5kQ291bnQgPSBzZWxlY3Rvci5jb21wb3VuZENvdW50O1xuICAgICAgdmFyIGxhc3RRID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG5cbiAgICAgIGlmIChjdXJyZW50U3ViamVjdCAhPSBudWxsKSB7XG4gICAgICAgIGxhc3RRLnN1YmplY3QgPSBjdXJyZW50U3ViamVjdDtcbiAgICAgICAgc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBsYXN0US5lZGdlQ291bnQgPSBlZGdlQ291bnQ7XG4gICAgICBsYXN0US5jb21wb3VuZENvdW50ID0gY29tcG91bmRDb3VudDtcbiAgICAgIHNlbGVjdG9yLmVkZ2VDb3VudCA9IDA7XG4gICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50ID0gMDsgLy8gZ28gb24gdG8gbmV4dCBxdWVyeVxuXG4gICAgICB2YXIgbmV4dFF1ZXJ5ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoKytdID0gbmV3UXVlcnkoKTtcbiAgICAgIHJldHVybiBuZXh0UXVlcnk7IC8vIHRoaXMgaXMgdGhlIG5ldyBxdWVyeSB0byBiZSBmaWxsZWQgYnkgdGhlIGZvbGxvd2luZyBleHByc1xuICAgIH1cbiAgfSwge1xuICAgIG5hbWU6ICdkaXJlY3RlZEVkZ2UnLFxuICAgIHNlcGFyYXRvcjogdHJ1ZSxcbiAgICByZWdleDogdG9rZW5zLmRpcmVjdGVkRWRnZSxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT0gbnVsbCkge1xuICAgICAgICAvLyB1bmRpcmVjdGVkIGVkZ2VcbiAgICAgICAgdmFyIGVkZ2VRdWVyeSA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIHZhciBzb3VyY2UgPSBxdWVyeTtcbiAgICAgICAgdmFyIHRhcmdldCA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIGVkZ2VRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgICAgdHlwZTogVHlwZS5ESVJFQ1RFRF9FREdFLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgZWRnZSByYXRoZXIgdGhhbiB0aGUgc291cmNlXG5cbiAgICAgICAgcmVwbGFjZUxhc3RRdWVyeShzZWxlY3RvciwgcXVlcnksIGVkZ2VRdWVyeSk7XG4gICAgICAgIHNlbGVjdG9yLmVkZ2VDb3VudCsrOyAvLyB3ZSdyZSBub3cgcG9wdWxhdGluZyB0aGUgdGFyZ2V0IHF1ZXJ5IHdpdGggZXhwcmVzc2lvbnMgdGhhdCBmb2xsb3dcblxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc291cmNlL3RhcmdldFxuICAgICAgICB2YXIgc3JjVGd0USA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIHZhciBfc291cmNlID0gcXVlcnk7XG5cbiAgICAgICAgdmFyIF90YXJnZXQgPSBuZXdRdWVyeSgpO1xuXG4gICAgICAgIHNyY1RndFEuY2hlY2tzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFR5cGUuTk9ERV9TT1VSQ0UsXG4gICAgICAgICAgc291cmNlOiBfc291cmNlLFxuICAgICAgICAgIHRhcmdldDogX3RhcmdldFxuICAgICAgICB9KTsgLy8gdGhlIHF1ZXJ5IGluIHRoZSBzZWxlY3RvciBzaG91bGQgYmUgdGhlIG5laWdoYm91cmhvb2QgcmF0aGVyIHRoYW4gdGhlIG5vZGVcblxuICAgICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBxdWVyeSwgc3JjVGd0USk7XG4gICAgICAgIHNlbGVjdG9yLmVkZ2VDb3VudCsrO1xuICAgICAgICByZXR1cm4gX3RhcmdldDsgLy8gbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnNcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBuYW1lOiAndW5kaXJlY3RlZEVkZ2UnLFxuICAgIHNlcGFyYXRvcjogdHJ1ZSxcbiAgICByZWdleDogdG9rZW5zLnVuZGlyZWN0ZWRFZGdlLFxuICAgIHBvcHVsYXRlOiBmdW5jdGlvbiBwb3B1bGF0ZShzZWxlY3RvciwgcXVlcnkpIHtcbiAgICAgIGlmIChzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9PSBudWxsKSB7XG4gICAgICAgIC8vIHVuZGlyZWN0ZWQgZWRnZVxuICAgICAgICB2YXIgZWRnZVF1ZXJ5ID0gbmV3UXVlcnkoKTtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHF1ZXJ5O1xuICAgICAgICB2YXIgdGFyZ2V0ID0gbmV3UXVlcnkoKTtcbiAgICAgICAgZWRnZVF1ZXJ5LmNoZWNrcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBUeXBlLlVORElSRUNURURfRURHRSxcbiAgICAgICAgICBub2RlczogW3NvdXJjZSwgdGFyZ2V0XVxuICAgICAgICB9KTsgLy8gdGhlIHF1ZXJ5IGluIHRoZSBzZWxlY3RvciBzaG91bGQgYmUgdGhlIGVkZ2UgcmF0aGVyIHRoYW4gdGhlIHNvdXJjZVxuXG4gICAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBlZGdlUXVlcnkpO1xuICAgICAgICBzZWxlY3Rvci5lZGdlQ291bnQrKzsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIHRhcmdldCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG5laWdoYm91cmhvb2RcbiAgICAgICAgdmFyIG5ob29kUSA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIHZhciBub2RlID0gcXVlcnk7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIG5ob29kUS5jaGVja3MucHVzaCh7XG4gICAgICAgICAgdHlwZTogVHlwZS5OT0RFX05FSUdIQk9SLFxuICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgbmVpZ2hib3I6IG5laWdoYm9yXG4gICAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgbmVpZ2hib3VyaG9vZCByYXRoZXIgdGhhbiB0aGUgbm9kZVxuXG4gICAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBuaG9vZFEpO1xuICAgICAgICByZXR1cm4gbmVpZ2hib3I7IC8vIG5vdyBwb3B1bGF0aW5nIHRoZSBuZWlnaGJvciB3aXRoIGZvbGxvd2luZyBleHByZXNzaW9uc1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIG5hbWU6ICdjaGlsZCcsXG4gICAgc2VwYXJhdG9yOiB0cnVlLFxuICAgIHJlZ2V4OiB0b2tlbnMuY2hpbGQsXG4gICAgcG9wdWxhdGU6IGZ1bmN0aW9uIHBvcHVsYXRlKHNlbGVjdG9yLCBxdWVyeSkge1xuICAgICAgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09IG51bGwpIHtcbiAgICAgICAgLy8gZGVmYXVsdDogY2hpbGQgcXVlcnlcbiAgICAgICAgdmFyIHBhcmVudENoaWxkUXVlcnkgPSBuZXdRdWVyeSgpO1xuICAgICAgICB2YXIgY2hpbGQgPSBuZXdRdWVyeSgpO1xuICAgICAgICB2YXIgcGFyZW50ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICAgIHBhcmVudENoaWxkUXVlcnkuY2hlY2tzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFR5cGUuQ0hJTEQsXG4gICAgICAgICAgcGFyZW50OiBwYXJlbnQsXG4gICAgICAgICAgY2hpbGQ6IGNoaWxkXG4gICAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBwYXJlbnRDaGlsZFF1ZXJ5KTtcbiAgICAgICAgc2VsZWN0b3IuY29tcG91bmRDb3VudCsrOyAvLyB3ZSdyZSBub3cgcG9wdWxhdGluZyB0aGUgY2hpbGQgcXVlcnkgd2l0aCBleHByZXNzaW9ucyB0aGF0IGZvbGxvd1xuXG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT09IHF1ZXJ5KSB7XG4gICAgICAgIC8vIGNvbXBvdW5kIHNwbGl0IHF1ZXJ5XG4gICAgICAgIHZhciBjb21wb3VuZCA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIHZhciBsZWZ0ID0gc2VsZWN0b3Jbc2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICAgIHZhciByaWdodCA9IG5ld1F1ZXJ5KCk7XG4gICAgICAgIHZhciBzdWJqZWN0ID0gbmV3UXVlcnkoKTtcblxuICAgICAgICB2YXIgX2NoaWxkID0gbmV3UXVlcnkoKTtcblxuICAgICAgICB2YXIgX3BhcmVudCA9IG5ld1F1ZXJ5KCk7IC8vIHNldCB1cCB0aGUgcm9vdCBjb21wb3VuZCBxXG5cblxuICAgICAgICBjb21wb3VuZC5jaGVja3MucHVzaCh7XG4gICAgICAgICAgdHlwZTogVHlwZS5DT01QT1VORF9TUExJVCxcbiAgICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgICBzdWJqZWN0OiBzdWJqZWN0XG4gICAgICAgIH0pOyAvLyBwb3B1bGF0ZSB0aGUgc3ViamVjdCBhbmQgcmVwbGFjZSB0aGUgcSBhdCB0aGUgb2xkIHNwb3QgKHdpdGhpbiBsZWZ0KSB3aXRoIFRSVUVcblxuICAgICAgICBzdWJqZWN0LmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGFrZSB0aGUgY2hlY2tzIGZyb20gdGhlIGxlZnRcblxuICAgICAgICBxdWVyeS5jaGVja3MgPSBbe1xuICAgICAgICAgIHR5cGU6IFR5cGUuVFJVRVxuICAgICAgICB9XTsgLy8gY2hlY2tzIHVuZGVyIGxlZnQgcmVmcyB0aGUgc3ViamVjdCBpbXBsaWNpdGx5XG4gICAgICAgIC8vIHNldCB1cCB0aGUgcmlnaHQgcVxuXG4gICAgICAgIF9wYXJlbnQuY2hlY2tzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFR5cGUuVFJVRVxuICAgICAgICB9KTsgLy8gcGFyZW50IGltcGxpY2l0bHkgcmVmcyB0aGUgc3ViamVjdFxuXG5cbiAgICAgICAgcmlnaHQuY2hlY2tzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICAgIC8vIHR5cGUgaXMgc3dhcHBlZCBvbiByaWdodCBzaWRlIHF1ZXJpZXNcbiAgICAgICAgICBwYXJlbnQ6IF9wYXJlbnQsXG4gICAgICAgICAgY2hpbGQ6IF9jaGlsZCAvLyBlbXB0eSBmb3Igbm93XG5cbiAgICAgICAgfSk7XG4gICAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIGxlZnQsIGNvbXBvdW5kKTsgLy8gdXBkYXRlIHRoZSByZWYgc2luY2Ugd2UgbW92ZWQgdGhpbmdzIGFyb3VuZCBmb3IgYHF1ZXJ5YFxuXG4gICAgICAgIHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID0gc3ViamVjdDtcbiAgICAgICAgc2VsZWN0b3IuY29tcG91bmRDb3VudCsrO1xuICAgICAgICByZXR1cm4gX2NoaWxkOyAvLyBub3cgcG9wdWxhdGluZyB0aGUgcmlnaHQgc2lkZSdzIGNoaWxkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwYXJlbnQgcXVlcnlcbiAgICAgICAgLy8gaW5mbyBmb3IgcGFyZW50IHF1ZXJ5XG4gICAgICAgIHZhciBfcGFyZW50MiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgICAgdmFyIF9jaGlsZDIgPSBuZXdRdWVyeSgpO1xuXG4gICAgICAgIHZhciBwY1FDaGVja3MgPSBbe1xuICAgICAgICAgIHR5cGU6IFR5cGUuUEFSRU5ULFxuICAgICAgICAgIHBhcmVudDogX3BhcmVudDIsXG4gICAgICAgICAgY2hpbGQ6IF9jaGlsZDJcbiAgICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICAgIF9wYXJlbnQyLmNoZWNrcyA9IHF1ZXJ5LmNoZWNrczsgLy8gdGhlIHByZXZpb3VzIHF1ZXJ5IGNvbnRhaW5zIHRoZSBjaGVja3MgZm9yIHRoZSBwYXJlbnRcblxuICAgICAgICBxdWVyeS5jaGVja3MgPSBwY1FDaGVja3M7IC8vIHBjIHF1ZXJ5IHRha2VzIG92ZXJcblxuICAgICAgICBzZWxlY3Rvci5jb21wb3VuZENvdW50Kys7XG4gICAgICAgIHJldHVybiBfY2hpbGQyOyAvLyB3ZSdyZSBub3cgcG9wdWxhdGluZyB0aGUgY2hpbGRcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBuYW1lOiAnZGVzY2VuZGFudCcsXG4gICAgc2VwYXJhdG9yOiB0cnVlLFxuICAgIHJlZ2V4OiB0b2tlbnMuZGVzY2VuZGFudCxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgPT0gbnVsbCkge1xuICAgICAgICAvLyBkZWZhdWx0OiBkZXNjZW5kYW50IHF1ZXJ5XG4gICAgICAgIHZhciBhbmNDaFF1ZXJ5ID0gbmV3UXVlcnkoKTtcbiAgICAgICAgdmFyIGRlc2NlbmRhbnQgPSBuZXdRdWVyeSgpO1xuICAgICAgICB2YXIgYW5jZXN0b3IgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXTtcbiAgICAgICAgYW5jQ2hRdWVyeS5jaGVja3MucHVzaCh7XG4gICAgICAgICAgdHlwZTogVHlwZS5ERVNDRU5EQU5ULFxuICAgICAgICAgIGFuY2VzdG9yOiBhbmNlc3RvcixcbiAgICAgICAgICBkZXNjZW5kYW50OiBkZXNjZW5kYW50XG4gICAgICAgIH0pOyAvLyB0aGUgcXVlcnkgaW4gdGhlIHNlbGVjdG9yIHNob3VsZCBiZSB0aGUgJz4nIGl0c2VsZlxuXG4gICAgICAgIHJlcGxhY2VMYXN0UXVlcnkoc2VsZWN0b3IsIHF1ZXJ5LCBhbmNDaFF1ZXJ5KTtcbiAgICAgICAgc2VsZWN0b3IuY29tcG91bmRDb3VudCsrOyAvLyB3ZSdyZSBub3cgcG9wdWxhdGluZyB0aGUgZGVzY2VuZGFudCBxdWVyeSB3aXRoIGV4cHJlc3Npb25zIHRoYXQgZm9sbG93XG5cbiAgICAgICAgcmV0dXJuIGRlc2NlbmRhbnQ7XG4gICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLmN1cnJlbnRTdWJqZWN0ID09PSBxdWVyeSkge1xuICAgICAgICAvLyBjb21wb3VuZCBzcGxpdCBxdWVyeVxuICAgICAgICB2YXIgY29tcG91bmQgPSBuZXdRdWVyeSgpO1xuICAgICAgICB2YXIgbGVmdCA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdO1xuICAgICAgICB2YXIgcmlnaHQgPSBuZXdRdWVyeSgpO1xuICAgICAgICB2YXIgc3ViamVjdCA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgICAgdmFyIF9kZXNjZW5kYW50ID0gbmV3UXVlcnkoKTtcblxuICAgICAgICB2YXIgX2FuY2VzdG9yID0gbmV3UXVlcnkoKTsgLy8gc2V0IHVwIHRoZSByb290IGNvbXBvdW5kIHFcblxuXG4gICAgICAgIGNvbXBvdW5kLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBUeXBlLkNPTVBPVU5EX1NQTElULFxuICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgICAgICAgIHN1YmplY3Q6IHN1YmplY3RcbiAgICAgICAgfSk7IC8vIHBvcHVsYXRlIHRoZSBzdWJqZWN0IGFuZCByZXBsYWNlIHRoZSBxIGF0IHRoZSBvbGQgc3BvdCAod2l0aGluIGxlZnQpIHdpdGggVFJVRVxuXG4gICAgICAgIHN1YmplY3QuY2hlY2tzID0gcXVlcnkuY2hlY2tzOyAvLyB0YWtlIHRoZSBjaGVja3MgZnJvbSB0aGUgbGVmdFxuXG4gICAgICAgIHF1ZXJ5LmNoZWNrcyA9IFt7XG4gICAgICAgICAgdHlwZTogVHlwZS5UUlVFXG4gICAgICAgIH1dOyAvLyBjaGVja3MgdW5kZXIgbGVmdCByZWZzIHRoZSBzdWJqZWN0IGltcGxpY2l0bHlcbiAgICAgICAgLy8gc2V0IHVwIHRoZSByaWdodCBxXG5cbiAgICAgICAgX2FuY2VzdG9yLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBUeXBlLlRSVUVcbiAgICAgICAgfSk7IC8vIGFuY2VzdG9yIGltcGxpY2l0bHkgcmVmcyB0aGUgc3ViamVjdFxuXG5cbiAgICAgICAgcmlnaHQuY2hlY2tzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IFR5cGUuQU5DRVNUT1IsXG4gICAgICAgICAgLy8gdHlwZSBpcyBzd2FwcGVkIG9uIHJpZ2h0IHNpZGUgcXVlcmllc1xuICAgICAgICAgIGFuY2VzdG9yOiBfYW5jZXN0b3IsXG4gICAgICAgICAgZGVzY2VuZGFudDogX2Rlc2NlbmRhbnQgLy8gZW1wdHkgZm9yIG5vd1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXBsYWNlTGFzdFF1ZXJ5KHNlbGVjdG9yLCBsZWZ0LCBjb21wb3VuZCk7IC8vIHVwZGF0ZSB0aGUgcmVmIHNpbmNlIHdlIG1vdmVkIHRoaW5ncyBhcm91bmQgZm9yIGBxdWVyeWBcblxuICAgICAgICBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgICAgcmV0dXJuIF9kZXNjZW5kYW50OyAvLyBub3cgcG9wdWxhdGluZyB0aGUgcmlnaHQgc2lkZSdzIGRlc2NlbmRhbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFuY2VzdG9yIHF1ZXJ5XG4gICAgICAgIC8vIGluZm8gZm9yIHBhcmVudCBxdWVyeVxuICAgICAgICB2YXIgX2FuY2VzdG9yMiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgICAgdmFyIF9kZXNjZW5kYW50MiA9IG5ld1F1ZXJ5KCk7XG5cbiAgICAgICAgdmFyIGFkUUNoZWNrcyA9IFt7XG4gICAgICAgICAgdHlwZTogVHlwZS5BTkNFU1RPUixcbiAgICAgICAgICBhbmNlc3RvcjogX2FuY2VzdG9yMixcbiAgICAgICAgICBkZXNjZW5kYW50OiBfZGVzY2VuZGFudDJcbiAgICAgICAgfV07IC8vIHRoZSBwYXJlbnQtY2hpbGQgcXVlcnkgdGFrZXMgdGhlIHBsYWNlIG9mIHRoZSBxdWVyeSBwcmV2aW91c2x5IGJlaW5nIHBvcHVsYXRlZFxuXG4gICAgICAgIF9hbmNlc3RvcjIuY2hlY2tzID0gcXVlcnkuY2hlY2tzOyAvLyB0aGUgcHJldmlvdXMgcXVlcnkgY29udGFpbnMgdGhlIGNoZWNrcyBmb3IgdGhlIHBhcmVudFxuXG4gICAgICAgIHF1ZXJ5LmNoZWNrcyA9IGFkUUNoZWNrczsgLy8gcGMgcXVlcnkgdGFrZXMgb3ZlclxuXG4gICAgICAgIHNlbGVjdG9yLmNvbXBvdW5kQ291bnQrKztcbiAgICAgICAgcmV0dXJuIF9kZXNjZW5kYW50MjsgLy8gd2UncmUgbm93IHBvcHVsYXRpbmcgdGhlIGNoaWxkXG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAgbmFtZTogJ3N1YmplY3QnLFxuICAgIG1vZGlmaWVyOiB0cnVlLFxuICAgIHJlZ2V4OiB0b2tlbnMuc3ViamVjdCxcbiAgICBwb3B1bGF0ZTogZnVuY3Rpb24gcG9wdWxhdGUoc2VsZWN0b3IsIHF1ZXJ5KSB7XG4gICAgICBpZiAoc2VsZWN0b3IuY3VycmVudFN1YmplY3QgIT0gbnVsbCAmJiBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCAhPT0gcXVlcnkpIHtcbiAgICAgICAgd2FybignUmVkZWZpbml0aW9uIG9mIHN1YmplY3QgaW4gc2VsZWN0b3IgYCcgKyBzZWxlY3Rvci50b1N0cmluZygpICsgJ2AnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBzZWxlY3Rvci5jdXJyZW50U3ViamVjdCA9IHF1ZXJ5O1xuICAgICAgdmFyIHRvcFEgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXTtcbiAgICAgIHZhciB0b3BDaGsgPSB0b3BRLmNoZWNrc1swXTtcbiAgICAgIHZhciB0b3BUeXBlID0gdG9wQ2hrID09IG51bGwgPyBudWxsIDogdG9wQ2hrLnR5cGU7XG5cbiAgICAgIGlmICh0b3BUeXBlID09PSBUeXBlLkRJUkVDVEVEX0VER0UpIHtcbiAgICAgICAgLy8gZGlyZWN0ZWQgZWRnZSB3aXRoIHN1YmplY3Qgb24gdGhlIHRhcmdldFxuICAgICAgICAvLyBjaGFuZ2UgdG8gdGFyZ2V0IG5vZGUgY2hlY2tcbiAgICAgICAgdG9wQ2hrLnR5cGUgPSBUeXBlLk5PREVfVEFSR0VUO1xuICAgICAgfSBlbHNlIGlmICh0b3BUeXBlID09PSBUeXBlLlVORElSRUNURURfRURHRSkge1xuICAgICAgICAvLyB1bmRpcmVjdGVkIGVkZ2Ugd2l0aCBzdWJqZWN0IG9uIHRoZSBzZWNvbmQgbm9kZVxuICAgICAgICAvLyBjaGFuZ2UgdG8gbmVpZ2hib3IgY2hlY2tcbiAgICAgICAgdG9wQ2hrLnR5cGUgPSBUeXBlLk5PREVfTkVJR0hCT1I7XG4gICAgICAgIHRvcENoay5ub2RlID0gdG9wQ2hrLm5vZGVzWzFdOyAvLyBzZWNvbmQgbm9kZSBpcyBzdWJqZWN0XG5cbiAgICAgICAgdG9wQ2hrLm5laWdoYm9yID0gdG9wQ2hrLm5vZGVzWzBdOyAvLyBjbGVhbiB1cCB1bnVzZWQgZmllbGRzIGZvciBuZXcgdHlwZVxuXG4gICAgICAgIHRvcENoay5ub2RlcyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XTtcbiAgZXhwcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiBlLnJlZ2V4T2JqID0gbmV3IFJlZ0V4cCgnXicgKyBlLnJlZ2V4KTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIE9mIGFsbCB0aGUgZXhwcmVzc2lvbnMsIGZpbmQgdGhlIGZpcnN0IG1hdGNoIGluIHRoZSByZW1haW5pbmcgdGV4dC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbWFpbmluZyBUaGUgcmVtYWluaW5nIHRleHQgdG8gcGFyc2VcbiAgICogQHJldHVybnMgVGhlIG1hdGNoZWQgZXhwcmVzc2lvbiBhbmQgdGhlIG5ld2x5IHJlbWFpbmluZyB0ZXh0IGB7IGV4cHIsIG1hdGNoLCBuYW1lLCByZW1haW5pbmcgfWBcbiAgICovXG5cbiAgdmFyIGNvbnN1bWVFeHByID0gZnVuY3Rpb24gY29uc3VtZUV4cHIocmVtYWluaW5nKSB7XG4gICAgdmFyIGV4cHI7XG4gICAgdmFyIG1hdGNoO1xuICAgIHZhciBuYW1lO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBleHBycy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGUgPSBleHByc1tqXTtcbiAgICAgIHZhciBuID0gZS5uYW1lO1xuICAgICAgdmFyIG0gPSByZW1haW5pbmcubWF0Y2goZS5yZWdleE9iaik7XG5cbiAgICAgIGlmIChtICE9IG51bGwpIHtcbiAgICAgICAgbWF0Y2ggPSBtO1xuICAgICAgICBleHByID0gZTtcbiAgICAgICAgbmFtZSA9IG47XG4gICAgICAgIHZhciBjb25zdW1lZCA9IG1bMF07XG4gICAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoY29uc3VtZWQubGVuZ3RoKTtcbiAgICAgICAgYnJlYWs7IC8vIHdlJ3ZlIGNvbnN1bWVkIG9uZSBleHByLCBzbyB3ZSBjYW4gcmV0dXJuIG5vd1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBleHByOiBleHByLFxuICAgICAgbWF0Y2g6IG1hdGNoLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHJlbWFpbmluZzogcmVtYWluaW5nXG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIENvbnN1bWUgYWxsIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbWFpbmluZyBUaGUgdGV4dCB0byBjb25zdW1lXG4gICAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSByZW1vdmVkXG4gICAqL1xuXG5cbiAgdmFyIGNvbnN1bWVXaGl0ZXNwYWNlID0gZnVuY3Rpb24gY29uc3VtZVdoaXRlc3BhY2UocmVtYWluaW5nKSB7XG4gICAgdmFyIG1hdGNoID0gcmVtYWluaW5nLm1hdGNoKC9eXFxzKy8pO1xuXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICB2YXIgY29uc3VtZWQgPSBtYXRjaFswXTtcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zdWJzdHJpbmcoY29uc3VtZWQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVtYWluaW5nO1xuICB9O1xuICAvKipcbiAgICogUGFyc2UgdGhlIHN0cmluZyBhbmQgc3RvcmUgdGhlIHBhcnNlZCByZXByZXNlbnRhdGlvbiBpbiB0aGUgU2VsZWN0b3IuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBUaGUgc2VsZWN0b3Igc3RyaW5nXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2VsZWN0b3Igd2FzIHN1Y2Nlc3NmdWxseSBwYXJzZWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuXG5cbiAgdmFyIHBhcnNlID0gZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJlbWFpbmluZyA9IHNlbGYuaW5wdXRUZXh0ID0gc2VsZWN0b3I7XG4gICAgdmFyIGN1cnJlbnRRdWVyeSA9IHNlbGZbMF0gPSBuZXdRdWVyeSgpO1xuICAgIHNlbGYubGVuZ3RoID0gMTtcbiAgICByZW1haW5pbmcgPSBjb25zdW1lV2hpdGVzcGFjZShyZW1haW5pbmcpOyAvLyBnZXQgcmlkIG9mIGxlYWRpbmcgd2hpdGVzcGFjZVxuXG4gICAgZm9yICg7Oykge1xuICAgICAgdmFyIGV4cHJJbmZvID0gY29uc3VtZUV4cHIocmVtYWluaW5nKTtcblxuICAgICAgaWYgKGV4cHJJbmZvLmV4cHIgPT0gbnVsbCkge1xuICAgICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgaXMgaW52YWxpZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYXJncyA9IGV4cHJJbmZvLm1hdGNoLnNsaWNlKDEpOyAvLyBsZXQgdGhlIHRva2VuIHBvcHVsYXRlIHRoZSBzZWxlY3RvciBvYmplY3QgaW4gY3VycmVudFF1ZXJ5XG5cbiAgICAgICAgdmFyIHJldCA9IGV4cHJJbmZvLmV4cHIucG9wdWxhdGUoc2VsZiwgY3VycmVudFF1ZXJ5LCBhcmdzKTtcblxuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gZXhpdCBpZiBwb3B1bGF0aW9uIGZhaWxlZFxuICAgICAgICB9IGVsc2UgaWYgKHJldCAhPSBudWxsKSB7XG4gICAgICAgICAgY3VycmVudFF1ZXJ5ID0gcmV0OyAvLyBjaGFuZ2UgdGhlIGN1cnJlbnQgcXVlcnkgdG8gYmUgZmlsbGVkIGlmIHRoZSBleHByIHNwZWNpZmllc1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJlbWFpbmluZyA9IGV4cHJJbmZvLnJlbWFpbmluZzsgLy8gd2UncmUgZG9uZSB3aGVuIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIHBhcnNlXG5cbiAgICAgIGlmIChyZW1haW5pbmcubWF0Y2goL15cXHMqJC8pKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsYXN0USA9IHNlbGZbc2VsZi5sZW5ndGggLSAxXTtcblxuICAgIGlmIChzZWxmLmN1cnJlbnRTdWJqZWN0ICE9IG51bGwpIHtcbiAgICAgIGxhc3RRLnN1YmplY3QgPSBzZWxmLmN1cnJlbnRTdWJqZWN0O1xuICAgIH1cblxuICAgIGxhc3RRLmVkZ2VDb3VudCA9IHNlbGYuZWRnZUNvdW50O1xuICAgIGxhc3RRLmNvbXBvdW5kQ291bnQgPSBzZWxmLmNvbXBvdW5kQ291bnQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBxID0gc2VsZltpXTsgLy8gaW4gZnV0dXJlLCB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIGFsbG93ZWQgaWYgdGhlcmUgd2VyZSBvcGVyYXRvciBwcmVjZWRlbmNlIGFuZCBkZXRlY3Rpb24gb2YgaW52YWxpZCBjb21iaW5hdGlvbnNcblxuICAgICAgaWYgKHEuY29tcG91bmRDb3VudCA+IDAgJiYgcS5lZGdlQ291bnQgPiAwKSB7XG4gICAgICAgIHdhcm4oJ1RoZSBzZWxlY3RvciBgJyArIHNlbGVjdG9yICsgJ2AgaXMgaW52YWxpZCBiZWNhdXNlIGl0IHVzZXMgYm90aCBhIGNvbXBvdW5kIHNlbGVjdG9yIGFuZCBhbiBlZGdlIHNlbGVjdG9yJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHEuZWRnZUNvdW50ID4gMSkge1xuICAgICAgICB3YXJuKCdUaGUgc2VsZWN0b3IgYCcgKyBzZWxlY3RvciArICdgIGlzIGludmFsaWQgYmVjYXVzZSBpdCB1c2VzIG11bHRpcGxlIGVkZ2Ugc2VsZWN0b3JzJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAocS5lZGdlQ291bnQgPT09IDEpIHtcbiAgICAgICAgd2FybignVGhlIHNlbGVjdG9yIGAnICsgc2VsZWN0b3IgKyAnYCBpcyBkZXByZWNhdGVkLiAgRWRnZSBzZWxlY3RvcnMgZG8gbm90IHRha2UgZWZmZWN0IG9uIGNoYW5nZXMgdG8gc291cmNlIGFuZCB0YXJnZXQgbm9kZXMgYWZ0ZXIgYW4gZWRnZSBpcyBhZGRlZCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBVc2UgYSBjbGFzcyBvciBkYXRhIHNlbGVjdG9yIG9uIGVkZ2VzIGluc3RlYWQsIHVwZGF0aW5nIHRoZSBjbGFzcyBvciBkYXRhIG9mIGFuIGVkZ2Ugd2hlbiB5b3VyIGFwcCBkZXRlY3RzIGEgY2hhbmdlIGluIHNvdXJjZSBvciB0YXJnZXQgbm9kZXMuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7IC8vIHN1Y2Nlc3NcbiAgfTtcbiAgLyoqXG4gICAqIEdldCB0aGUgc2VsZWN0b3IgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcuICBUaGlzIHZhbHVlIHVzZXMgZGVmYXVsdCBmb3JtYXR0aW5nLFxuICAgKiBzbyB0aGluZ3MgbGlrZSBzcGFjaW5nIG1heSBkaWZmZXIgZnJvbSB0aGUgaW5wdXQgdGV4dCBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc2VsZWN0b3Igc3RyaW5nXG4gICAqL1xuXG5cbiAgdmFyIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMudG9TdHJpbmdDYWNoZSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy50b1N0cmluZ0NhY2hlO1xuICAgIH1cblxuICAgIHZhciBjbGVhbiA9IGZ1bmN0aW9uIGNsZWFuKG9iaikge1xuICAgICAgaWYgKG9iaiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBjbGVhblZhbCA9IGZ1bmN0aW9uIGNsZWFuVmFsKHZhbCkge1xuICAgICAgaWYgKHN0cmluZyh2YWwpKSB7XG4gICAgICAgIHJldHVybiAnXCInICsgdmFsICsgJ1wiJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjbGVhbih2YWwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgc3BhY2UgPSBmdW5jdGlvbiBzcGFjZSh2YWwpIHtcbiAgICAgIHJldHVybiAnICcgKyB2YWwgKyAnICc7XG4gICAgfTtcblxuICAgIHZhciBjaGVja1RvU3RyaW5nID0gZnVuY3Rpb24gY2hlY2tUb1N0cmluZyhjaGVjaywgc3ViamVjdCkge1xuICAgICAgdmFyIHR5cGUgPSBjaGVjay50eXBlLFxuICAgICAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFR5cGUuR1JPVVA6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIGdyb3VwID0gY2xlYW4odmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwLnN1YnN0cmluZygwLCBncm91cC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLkRBVEFfQ09NUEFSRTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YXIgZmllbGQgPSBjaGVjay5maWVsZCxcbiAgICAgICAgICAgICAgICBvcGVyYXRvciA9IGNoZWNrLm9wZXJhdG9yO1xuICAgICAgICAgICAgcmV0dXJuICdbJyArIGZpZWxkICsgc3BhY2UoY2xlYW4ob3BlcmF0b3IpKSArIGNsZWFuVmFsKHZhbHVlKSArICddJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLkRBVEFfQk9PTDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YXIgX29wZXJhdG9yID0gY2hlY2sub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgX2ZpZWxkID0gY2hlY2suZmllbGQ7XG4gICAgICAgICAgICByZXR1cm4gJ1snICsgY2xlYW4oX29wZXJhdG9yKSArIF9maWVsZCArICddJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLkRBVEFfRVhJU1Q6XG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFyIF9maWVsZDIgPSBjaGVjay5maWVsZDtcbiAgICAgICAgICAgIHJldHVybiAnWycgKyBfZmllbGQyICsgJ10nO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIFR5cGUuTUVUQV9DT01QQVJFOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBfb3BlcmF0b3IyID0gY2hlY2sub3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgX2ZpZWxkMyA9IGNoZWNrLmZpZWxkO1xuICAgICAgICAgICAgcmV0dXJuICdbWycgKyBfZmllbGQzICsgc3BhY2UoY2xlYW4oX29wZXJhdG9yMikpICsgY2xlYW5WYWwodmFsdWUpICsgJ11dJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLlNUQVRFOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLklEOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLkNMQVNTOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiAnLicgKyB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLlBBUkVOVDpcbiAgICAgICAgY2FzZSBUeXBlLkNISUxEOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVRvU3RyaW5nKGNoZWNrLnBhcmVudCwgc3ViamVjdCkgKyBzcGFjZSgnPicpICsgcXVlcnlUb1N0cmluZyhjaGVjay5jaGlsZCwgc3ViamVjdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgVHlwZS5BTkNFU1RPUjpcbiAgICAgICAgY2FzZSBUeXBlLkRFU0NFTkRBTlQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5VG9TdHJpbmcoY2hlY2suYW5jZXN0b3IsIHN1YmplY3QpICsgJyAnICsgcXVlcnlUb1N0cmluZyhjaGVjay5kZXNjZW5kYW50LCBzdWJqZWN0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBUeXBlLkNPTVBPVU5EX1NQTElUOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBsaHMgPSBxdWVyeVRvU3RyaW5nKGNoZWNrLmxlZnQsIHN1YmplY3QpO1xuICAgICAgICAgICAgdmFyIHN1YiA9IHF1ZXJ5VG9TdHJpbmcoY2hlY2suc3ViamVjdCwgc3ViamVjdCk7XG4gICAgICAgICAgICB2YXIgcmhzID0gcXVlcnlUb1N0cmluZyhjaGVjay5yaWdodCwgc3ViamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gbGhzICsgKGxocy5sZW5ndGggPiAwID8gJyAnIDogJycpICsgc3ViICsgcmhzO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIFR5cGUuVFJVRTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgcXVlcnlUb1N0cmluZyA9IGZ1bmN0aW9uIHF1ZXJ5VG9TdHJpbmcocXVlcnksIHN1YmplY3QpIHtcbiAgICAgIHJldHVybiBxdWVyeS5jaGVja3MucmVkdWNlKGZ1bmN0aW9uIChzdHIsIGNoaywgaSkge1xuICAgICAgICByZXR1cm4gc3RyICsgKHN1YmplY3QgPT09IHF1ZXJ5ICYmIGkgPT09IDAgPyAnJCcgOiAnJykgKyBjaGVja1RvU3RyaW5nKGNoaywgc3ViamVjdCk7XG4gICAgICB9LCAnJyk7XG4gICAgfTtcblxuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHF1ZXJ5ID0gdGhpc1tpXTtcbiAgICAgIHN0ciArPSBxdWVyeVRvU3RyaW5nKHF1ZXJ5LCBxdWVyeS5zdWJqZWN0KTtcblxuICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMSAmJiBpIDwgdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHN0ciArPSAnLCAnO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudG9TdHJpbmdDYWNoZSA9IHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9O1xuICB2YXIgcGFyc2UkMSA9IHtcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgdG9TdHJpbmc6IHRvU3RyaW5nXG4gIH07XG5cbiAgdmFyIHZhbENtcCA9IGZ1bmN0aW9uIHZhbENtcChmaWVsZFZhbCwgb3BlcmF0b3IsIHZhbHVlKSB7XG4gICAgdmFyIG1hdGNoZXM7XG4gICAgdmFyIGlzRmllbGRTdHIgPSBzdHJpbmcoZmllbGRWYWwpO1xuICAgIHZhciBpc0ZpZWxkTnVtID0gbnVtYmVyJDEoZmllbGRWYWwpO1xuICAgIHZhciBpc1ZhbFN0ciA9IHN0cmluZyh2YWx1ZSk7XG4gICAgdmFyIGZpZWxkU3RyLCB2YWxTdHI7XG4gICAgdmFyIGNhc2VJbnNlbnNpdGl2ZSA9IGZhbHNlO1xuICAgIHZhciBub3RFeHByID0gZmFsc2U7XG4gICAgdmFyIGlzSW5lcUNtcCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wZXJhdG9yLmluZGV4T2YoJyEnKSA+PSAwKSB7XG4gICAgICBvcGVyYXRvciA9IG9wZXJhdG9yLnJlcGxhY2UoJyEnLCAnJyk7XG4gICAgICBub3RFeHByID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0b3IuaW5kZXhPZignQCcpID49IDApIHtcbiAgICAgIG9wZXJhdG9yID0gb3BlcmF0b3IucmVwbGFjZSgnQCcsICcnKTtcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGlzRmllbGRTdHIgfHwgaXNWYWxTdHIgfHwgY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgICBmaWVsZFN0ciA9ICFpc0ZpZWxkU3RyICYmICFpc0ZpZWxkTnVtID8gJycgOiAnJyArIGZpZWxkVmFsO1xuICAgICAgdmFsU3RyID0gJycgKyB2YWx1ZTtcbiAgICB9IC8vIGlmIHdlJ3JlIGRvaW5nIGEgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLCB0aGVuIHdlJ3JlIHVzaW5nIGEgU1RSSU5HIGNvbXBhcmlzb25cbiAgICAvLyBldmVuIGlmIHdlJ3JlIGNvbXBhcmluZyBudW1iZXJzXG5cblxuICAgIGlmIChjYXNlSW5zZW5zaXRpdmUpIHtcbiAgICAgIGZpZWxkVmFsID0gZmllbGRTdHIgPSBmaWVsZFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFsdWUgPSB2YWxTdHIgPSB2YWxTdHIudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIG1hdGNoZXMgPSBmaWVsZFN0ci5pbmRleE9mKHZhbFN0cikgPj0gMDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJyQ9JzpcbiAgICAgICAgbWF0Y2hlcyA9IGZpZWxkU3RyLmluZGV4T2YodmFsU3RyLCBmaWVsZFN0ci5sZW5ndGggLSB2YWxTdHIubGVuZ3RoKSA+PSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBtYXRjaGVzID0gZmllbGRTdHIuaW5kZXhPZih2YWxTdHIpID09PSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIG1hdGNoZXMgPSBmaWVsZFZhbCA9PT0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICc+JzpcbiAgICAgICAgaXNJbmVxQ21wID0gdHJ1ZTtcbiAgICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsID4gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICc+PSc6XG4gICAgICAgIGlzSW5lcUNtcCA9IHRydWU7XG4gICAgICAgIG1hdGNoZXMgPSBmaWVsZFZhbCA+PSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJzwnOlxuICAgICAgICBpc0luZXFDbXAgPSB0cnVlO1xuICAgICAgICBtYXRjaGVzID0gZmllbGRWYWwgPCB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgaXNJbmVxQ21wID0gdHJ1ZTtcbiAgICAgICAgbWF0Y2hlcyA9IGZpZWxkVmFsIDw9IHZhbHVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICB9IC8vIGFwcGx5IHRoZSBub3Qgb3AsIGJ1dCBudWxsIHZhbHMgZm9yIGluZXF1YWxpdGllcyBzaG91bGQgYWx3YXlzIHN0YXkgbm9uLW1hdGNoaW5nXG5cblxuICAgIGlmIChub3RFeHByICYmIChmaWVsZFZhbCAhPSBudWxsIHx8ICFpc0luZXFDbXApKSB7XG4gICAgICBtYXRjaGVzID0gIW1hdGNoZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH07XG4gIHZhciBib29sQ21wID0gZnVuY3Rpb24gYm9vbENtcChmaWVsZFZhbCwgb3BlcmF0b3IpIHtcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc/JzpcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICBjYXNlICchJzpcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsID8gZmFsc2UgOiB0cnVlO1xuXG4gICAgICBjYXNlICdeJzpcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsID09PSB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuICB2YXIgZXhpc3RDbXAgPSBmdW5jdGlvbiBleGlzdENtcChmaWVsZFZhbCkge1xuICAgIHJldHVybiBmaWVsZFZhbCAhPT0gdW5kZWZpbmVkO1xuICB9O1xuICB2YXIgZGF0YSQxID0gZnVuY3Rpb24gZGF0YShlbGUsIGZpZWxkKSB7XG4gICAgcmV0dXJuIGVsZS5kYXRhKGZpZWxkKTtcbiAgfTtcbiAgdmFyIG1ldGEgPSBmdW5jdGlvbiBtZXRhKGVsZSwgZmllbGQpIHtcbiAgICByZXR1cm4gZWxlW2ZpZWxkXSgpO1xuICB9O1xuXG4gIC8qKiBBIGxvb2t1cCBvZiBgbWF0Y2goY2hlY2ssIGVsZSlgIGZ1bmN0aW9ucyBieSBgVHlwZWAgaW50ICovXG5cbiAgdmFyIG1hdGNoID0gW107XG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHF1ZXJ5IG1hdGNoZXMgZm9yIHRoZSBlbGVtZW50XG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgYHsgdHlwZSwgdmFsdWUsIC4uLiB9YCBxdWVyeSBvYmplY3RcbiAgICogQHBhcmFtIGVsZSBUaGUgZWxlbWVudCB0byBjb21wYXJlIGFnYWluc3RcbiAgKi9cblxuICB2YXIgbWF0Y2hlcyQxID0gZnVuY3Rpb24gbWF0Y2hlcyhxdWVyeSwgZWxlKSB7XG4gICAgcmV0dXJuIHF1ZXJ5LmNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hrKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbY2hrLnR5cGVdKGNoaywgZWxlKTtcbiAgICB9KTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLkdST1VQXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgdmFyIGdyb3VwID0gY2hlY2sudmFsdWU7XG4gICAgcmV0dXJuIGdyb3VwID09PSAnKicgfHwgZ3JvdXAgPT09IGVsZS5ncm91cCgpO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuU1RBVEVdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgc3RhdGVTZWxlY3RvciA9IGNoZWNrLnZhbHVlO1xuICAgIHJldHVybiBzdGF0ZVNlbGVjdG9yTWF0Y2hlcyhzdGF0ZVNlbGVjdG9yLCBlbGUpO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuSURdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgaWQgPSBjaGVjay52YWx1ZTtcbiAgICByZXR1cm4gZWxlLmlkKCkgPT09IGlkO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuQ0xBU1NdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgY2xzID0gY2hlY2sudmFsdWU7XG4gICAgcmV0dXJuIGVsZS5oYXNDbGFzcyhjbHMpO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuTUVUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgdmFyIGZpZWxkID0gY2hlY2suZmllbGQsXG4gICAgICAgIG9wZXJhdG9yID0gY2hlY2sub3BlcmF0b3IsXG4gICAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gICAgcmV0dXJuIHZhbENtcChtZXRhKGVsZSwgZmllbGQpLCBvcGVyYXRvciwgdmFsdWUpO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuREFUQV9DT01QQVJFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgdmFyIGZpZWxkID0gY2hlY2suZmllbGQsXG4gICAgICAgIG9wZXJhdG9yID0gY2hlY2sub3BlcmF0b3IsXG4gICAgICAgIHZhbHVlID0gY2hlY2sudmFsdWU7XG4gICAgcmV0dXJuIHZhbENtcChkYXRhJDEoZWxlLCBmaWVsZCksIG9wZXJhdG9yLCB2YWx1ZSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5EQVRBX0JPT0xdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgZmllbGQgPSBjaGVjay5maWVsZCxcbiAgICAgICAgb3BlcmF0b3IgPSBjaGVjay5vcGVyYXRvcjtcbiAgICByZXR1cm4gYm9vbENtcChkYXRhJDEoZWxlLCBmaWVsZCksIG9wZXJhdG9yKTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLkRBVEFfRVhJU1RdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgZmllbGQgPSBjaGVjay5maWVsZDtcbiAgICAgICAgY2hlY2sub3BlcmF0b3I7XG4gICAgcmV0dXJuIGV4aXN0Q21wKGRhdGEkMShlbGUsIGZpZWxkKSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5VTkRJUkVDVEVEX0VER0VdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgcUEgPSBjaGVjay5ub2Rlc1swXTtcbiAgICB2YXIgcUIgPSBjaGVjay5ub2Rlc1sxXTtcbiAgICB2YXIgc3JjID0gZWxlLnNvdXJjZSgpO1xuICAgIHZhciB0Z3QgPSBlbGUudGFyZ2V0KCk7XG4gICAgcmV0dXJuIG1hdGNoZXMkMShxQSwgc3JjKSAmJiBtYXRjaGVzJDEocUIsIHRndCkgfHwgbWF0Y2hlcyQxKHFCLCBzcmMpICYmIG1hdGNoZXMkMShxQSwgdGd0KTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLk5PREVfTkVJR0hCT1JdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLm5vZGUsIGVsZSkgJiYgZWxlLm5laWdoYm9yaG9vZCgpLnNvbWUoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBuLmlzTm9kZSgpICYmIG1hdGNoZXMkMShjaGVjay5uZWlnaGJvciwgbik7XG4gICAgfSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5ESVJFQ1RFRF9FREdFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMkMShjaGVjay5zb3VyY2UsIGVsZS5zb3VyY2UoKSkgJiYgbWF0Y2hlcyQxKGNoZWNrLnRhcmdldCwgZWxlLnRhcmdldCgpKTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLk5PREVfU09VUkNFXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgcmV0dXJuIG1hdGNoZXMkMShjaGVjay5zb3VyY2UsIGVsZSkgJiYgZWxlLm91dGdvZXJzKCkuc29tZShmdW5jdGlvbiAobikge1xuICAgICAgcmV0dXJuIG4uaXNOb2RlKCkgJiYgbWF0Y2hlcyQxKGNoZWNrLnRhcmdldCwgbik7XG4gICAgfSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5OT0RFX1RBUkdFVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICAgIHJldHVybiBtYXRjaGVzJDEoY2hlY2sudGFyZ2V0LCBlbGUpICYmIGVsZS5pbmNvbWVycygpLnNvbWUoZnVuY3Rpb24gKG4pIHtcbiAgICAgIHJldHVybiBuLmlzTm9kZSgpICYmIG1hdGNoZXMkMShjaGVjay5zb3VyY2UsIG4pO1xuICAgIH0pO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuQ0hJTERdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLmNoaWxkLCBlbGUpICYmIG1hdGNoZXMkMShjaGVjay5wYXJlbnQsIGVsZS5wYXJlbnQoKSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5QQVJFTlRdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLnBhcmVudCwgZWxlKSAmJiBlbGUuY2hpbGRyZW4oKS5zb21lKGZ1bmN0aW9uIChjKSB7XG4gICAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLmNoaWxkLCBjKTtcbiAgICB9KTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLkRFU0NFTkRBTlRdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLmRlc2NlbmRhbnQsIGVsZSkgJiYgZWxlLmFuY2VzdG9ycygpLnNvbWUoZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzJDEoY2hlY2suYW5jZXN0b3IsIGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuQU5DRVNUT1JdID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICByZXR1cm4gbWF0Y2hlcyQxKGNoZWNrLmFuY2VzdG9yLCBlbGUpICYmIGVsZS5kZXNjZW5kYW50cygpLnNvbWUoZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBtYXRjaGVzJDEoY2hlY2suZGVzY2VuZGFudCwgZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5DT01QT1VORF9TUExJVF0gPSBmdW5jdGlvbiAoY2hlY2ssIGVsZSkge1xuICAgIHJldHVybiBtYXRjaGVzJDEoY2hlY2suc3ViamVjdCwgZWxlKSAmJiBtYXRjaGVzJDEoY2hlY2subGVmdCwgZWxlKSAmJiBtYXRjaGVzJDEoY2hlY2sucmlnaHQsIGVsZSk7XG4gIH07XG5cbiAgbWF0Y2hbVHlwZS5UUlVFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBtYXRjaFtUeXBlLkNPTExFQ1RJT05dID0gZnVuY3Rpb24gKGNoZWNrLCBlbGUpIHtcbiAgICB2YXIgY29sbGVjdGlvbiA9IGNoZWNrLnZhbHVlO1xuICAgIHJldHVybiBjb2xsZWN0aW9uLmhhcyhlbGUpO1xuICB9O1xuXG4gIG1hdGNoW1R5cGUuRklMVEVSXSA9IGZ1bmN0aW9uIChjaGVjaywgZWxlKSB7XG4gICAgdmFyIGZpbHRlciA9IGNoZWNrLnZhbHVlO1xuICAgIHJldHVybiBmaWx0ZXIoZWxlKTtcbiAgfTtcblxuICB2YXIgZmlsdGVyID0gZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7IC8vIGZvciAxIGlkICNmb28gcXVlcmllcywganVzdCBnZXQgdGhlIGVsZW1lbnRcblxuICAgIGlmIChzZWxmLmxlbmd0aCA9PT0gMSAmJiBzZWxmWzBdLmNoZWNrcy5sZW5ndGggPT09IDEgJiYgc2VsZlswXS5jaGVja3NbMF0udHlwZSA9PT0gVHlwZS5JRCkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0RWxlbWVudEJ5SWQoc2VsZlswXS5jaGVja3NbMF0udmFsdWUpLmNvbGxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICB2YXIgc2VsZWN0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIHNlbGVjdG9yRnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxmLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBxdWVyeSA9IHNlbGZbal07XG5cbiAgICAgICAgaWYgKG1hdGNoZXMkMShxdWVyeSwgZWxlbWVudCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIGlmIChzZWxmLnRleHQoKSA9PSBudWxsKSB7XG4gICAgICBzZWxlY3RvckZ1bmN0aW9uID0gZnVuY3Rpb24gc2VsZWN0b3JGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uLmZpbHRlcihzZWxlY3RvckZ1bmN0aW9uKTtcbiAgfTsgLy8gZmlsdGVyXG4gIC8vIGRvZXMgc2VsZWN0b3IgbWF0Y2ggYSBzaW5nbGUgZWxlbWVudD9cblxuXG4gIHZhciBtYXRjaGVzID0gZnVuY3Rpb24gbWF0Y2hlcyhlbGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGYubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBxdWVyeSA9IHNlbGZbal07XG5cbiAgICAgIGlmIChtYXRjaGVzJDEocXVlcnksIGVsZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9OyAvLyBtYXRjaGVzXG5cblxuICB2YXIgbWF0Y2hpbmcgPSB7XG4gICAgbWF0Y2hlczogbWF0Y2hlcyxcbiAgICBmaWx0ZXI6IGZpbHRlclxuICB9O1xuXG4gIHZhciBTZWxlY3RvciA9IGZ1bmN0aW9uIFNlbGVjdG9yKHNlbGVjdG9yKSB7XG4gICAgdGhpcy5pbnB1dFRleHQgPSBzZWxlY3RvcjtcbiAgICB0aGlzLmN1cnJlbnRTdWJqZWN0ID0gbnVsbDtcbiAgICB0aGlzLmNvbXBvdW5kQ291bnQgPSAwO1xuICAgIHRoaXMuZWRnZUNvdW50ID0gMDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICBpZiAoc2VsZWN0b3IgPT0gbnVsbCB8fCBzdHJpbmcoc2VsZWN0b3IpICYmIHNlbGVjdG9yLm1hdGNoKC9eXFxzKiQvKSkgOyBlbHNlIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKHNlbGVjdG9yKSkge1xuICAgICAgdGhpcy5hZGRRdWVyeSh7XG4gICAgICAgIGNoZWNrczogW3tcbiAgICAgICAgICB0eXBlOiBUeXBlLkNPTExFQ1RJT04sXG4gICAgICAgICAgdmFsdWU6IHNlbGVjdG9yLmNvbGxlY3Rpb24oKVxuICAgICAgICB9XVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChmbiQ2KHNlbGVjdG9yKSkge1xuICAgICAgdGhpcy5hZGRRdWVyeSh7XG4gICAgICAgIGNoZWNrczogW3tcbiAgICAgICAgICB0eXBlOiBUeXBlLkZJTFRFUixcbiAgICAgICAgICB2YWx1ZTogc2VsZWN0b3JcbiAgICAgICAgfV1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3RyaW5nKHNlbGVjdG9yKSkge1xuICAgICAgaWYgKCF0aGlzLnBhcnNlKHNlbGVjdG9yKSkge1xuICAgICAgICB0aGlzLmludmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvcignQSBzZWxlY3RvciBtdXN0IGJlIGNyZWF0ZWQgZnJvbSBhIHN0cmluZzsgZm91bmQgJyk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBzZWxmbiA9IFNlbGVjdG9yLnByb3RvdHlwZTtcbiAgW3BhcnNlJDEsIG1hdGNoaW5nXS5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIGV4dGVuZChzZWxmbiwgcCk7XG4gIH0pO1xuXG4gIHNlbGZuLnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRUZXh0O1xuICB9O1xuXG4gIHNlbGZuLnNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9O1xuXG4gIHNlbGZuLmVxID0gZnVuY3Rpb24gKGkpIHtcbiAgICByZXR1cm4gdGhpc1tpXTtcbiAgfTtcblxuICBzZWxmbi5zYW1lVGV4dCA9IGZ1bmN0aW9uIChvdGhlclNlbCkge1xuICAgIHJldHVybiAhdGhpcy5pbnZhbGlkICYmICFvdGhlclNlbC5pbnZhbGlkICYmIHRoaXMudGV4dCgpID09PSBvdGhlclNlbC50ZXh0KCk7XG4gIH07XG5cbiAgc2VsZm4uYWRkUXVlcnkgPSBmdW5jdGlvbiAocSkge1xuICAgIHRoaXNbdGhpcy5sZW5ndGgrK10gPSBxO1xuICB9O1xuXG4gIHNlbGZuLnNlbGVjdG9yID0gc2VsZm4udG9TdHJpbmc7XG5cbiAgdmFyIGVsZXNmbiRnID0ge1xuICAgIGFsbEFyZTogZnVuY3Rpb24gYWxsQXJlKHNlbGVjdG9yKSB7XG4gICAgICB2YXIgc2VsT2JqID0gbmV3IFNlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIHJldHVybiB0aGlzLmV2ZXJ5KGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGlzOiBmdW5jdGlvbiBpcyhzZWxlY3Rvcikge1xuICAgICAgdmFyIHNlbE9iaiA9IG5ldyBTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgICByZXR1cm4gdGhpcy5zb21lKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbE9iai5tYXRjaGVzKGVsZSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNvbWU6IGZ1bmN0aW9uIHNvbWUoZm4sIHRoaXNBcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcmV0ID0gIXRoaXNBcmcgPyBmbih0aGlzW2ldLCBpLCB0aGlzKSA6IGZuLmFwcGx5KHRoaXNBcmcsIFt0aGlzW2ldLCBpLCB0aGlzXSk7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGV2ZXJ5OiBmdW5jdGlvbiBldmVyeShmbiwgdGhpc0FyZykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByZXQgPSAhdGhpc0FyZyA/IGZuKHRoaXNbaV0sIGksIHRoaXMpIDogZm4uYXBwbHkodGhpc0FyZywgW3RoaXNbaV0sIGksIHRoaXNdKTtcblxuICAgICAgICBpZiAoIXJldCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHNhbWU6IGZ1bmN0aW9uIHNhbWUoY29sbGVjdGlvbikge1xuICAgICAgLy8gY2hlYXAgY29sbGVjdGlvbiByZWYgY2hlY2tcbiAgICAgIGlmICh0aGlzID09PSBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb2xsZWN0aW9uID0gdGhpcy5jeSgpLmNvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICB2YXIgdGhpc0xlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgdmFyIGNvbGxlY3Rpb25MZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDsgLy8gY2hlYXAgbGVuZ3RoIGNoZWNrXG5cbiAgICAgIGlmICh0aGlzTGVuZ3RoICE9PSBjb2xsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gY2hlYXAgZWxlbWVudCByZWYgY2hlY2tcblxuXG4gICAgICBpZiAodGhpc0xlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gdGhpc1swXSA9PT0gY29sbGVjdGlvblswXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZXZlcnkoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYW55U2FtZTogZnVuY3Rpb24gYW55U2FtZShjb2xsZWN0aW9uKSB7XG4gICAgICBjb2xsZWN0aW9uID0gdGhpcy5jeSgpLmNvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5zb21lKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFsbEFyZU5laWdoYm9yczogZnVuY3Rpb24gYWxsQXJlTmVpZ2hib3JzKGNvbGxlY3Rpb24pIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmN5KCkuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICAgIHZhciBuaG9vZCA9IHRoaXMubmVpZ2hib3Job29kKCk7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbi5ldmVyeShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBuaG9vZC5oYXNFbGVtZW50V2l0aElkKGVsZS5pZCgpKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY29udGFpbnM6IGZ1bmN0aW9uIGNvbnRhaW5zKGNvbGxlY3Rpb24pIHtcbiAgICAgIGNvbGxlY3Rpb24gPSB0aGlzLmN5KCkuY29sbGVjdGlvbihjb2xsZWN0aW9uKTtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHJldHVybiBjb2xsZWN0aW9uLmV2ZXJ5KGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuaGFzRWxlbWVudFdpdGhJZChlbGUuaWQoKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGVsZXNmbiRnLmFsbEFyZU5laWdoYm91cnMgPSBlbGVzZm4kZy5hbGxBcmVOZWlnaGJvcnM7XG4gIGVsZXNmbiRnLmhhcyA9IGVsZXNmbiRnLmNvbnRhaW5zO1xuICBlbGVzZm4kZy5lcXVhbCA9IGVsZXNmbiRnLmVxdWFscyA9IGVsZXNmbiRnLnNhbWU7XG5cbiAgdmFyIGNhY2hlID0gZnVuY3Rpb24gY2FjaGUoZm4sIG5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gdHJhdmVyc2FsQ2FjaGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkge1xuICAgICAgdmFyIHNlbGVjdG9yT3JFbGVzID0gYXJnMTtcbiAgICAgIHZhciBlbGVzID0gdGhpcztcbiAgICAgIHZhciBrZXk7XG5cbiAgICAgIGlmIChzZWxlY3Rvck9yRWxlcyA9PSBudWxsKSB7XG4gICAgICAgIGtleSA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKHNlbGVjdG9yT3JFbGVzKSAmJiBzZWxlY3Rvck9yRWxlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAga2V5ID0gc2VsZWN0b3JPckVsZXMuaWQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsZXMubGVuZ3RoID09PSAxICYmIGtleSkge1xuICAgICAgICB2YXIgX3AgPSBlbGVzWzBdLl9wcml2YXRlO1xuICAgICAgICB2YXIgdGNoID0gX3AudHJhdmVyc2FsQ2FjaGUgPSBfcC50cmF2ZXJzYWxDYWNoZSB8fCB7fTtcbiAgICAgICAgdmFyIGNoID0gdGNoW25hbWVdID0gdGNoW25hbWVdIHx8IFtdO1xuICAgICAgICB2YXIgaGFzaCA9IGhhc2hTdHJpbmcoa2V5KTtcbiAgICAgICAgdmFyIGNhY2hlSGl0ID0gY2hbaGFzaF07XG5cbiAgICAgICAgaWYgKGNhY2hlSGl0KSB7XG4gICAgICAgICAgcmV0dXJuIGNhY2hlSGl0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjaFtoYXNoXSA9IGZuLmNhbGwoZWxlcywgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmbi5jYWxsKGVsZXMsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgdmFyIGVsZXNmbiRmID0ge1xuICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KHNlbGVjdG9yKSB7XG4gICAgICB2YXIgcGFyZW50cyA9IFtdOyAvLyBvcHRpbWlzYXRpb24gZm9yIHNpbmdsZSBlbGUgY2FsbFxuXG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXNbMF0uX3ByaXZhdGUucGFyZW50O1xuXG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIF9wYXJlbnQgPSBlbGUuX3ByaXZhdGUucGFyZW50O1xuXG4gICAgICAgIGlmIChfcGFyZW50KSB7XG4gICAgICAgICAgcGFyZW50cy5wdXNoKF9wYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSxcbiAgICBwYXJlbnRzOiBmdW5jdGlvbiBwYXJlbnRzKHNlbGVjdG9yKSB7XG4gICAgICB2YXIgcGFyZW50cyA9IFtdO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzLnBhcmVudCgpO1xuXG4gICAgICB3aGlsZSAoZWxlcy5ub25lbXB0eSgpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHBhcmVudHMucHVzaChlbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlcyA9IGVsZXMucGFyZW50KCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKHBhcmVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSxcbiAgICBjb21tb25BbmNlc3RvcnM6IGZ1bmN0aW9uIGNvbW1vbkFuY2VzdG9ycyhzZWxlY3Rvcikge1xuICAgICAgdmFyIGFuY2VzdG9ycztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICB2YXIgcGFyZW50cyA9IGVsZS5wYXJlbnRzKCk7XG4gICAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycyB8fCBwYXJlbnRzO1xuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMuaW50ZXJzZWN0KHBhcmVudHMpOyAvLyBjdXJyZW50IGxpc3QgbXVzdCBiZSBjb21tb24gd2l0aCBjdXJyZW50IGVsZSBwYXJlbnRzIHNldFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYW5jZXN0b3JzLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSxcbiAgICBvcnBoYW5zOiBmdW5jdGlvbiBvcnBoYW5zKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGRGaWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmlzT3JwaGFuKCk7XG4gICAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH0sXG4gICAgbm9ub3JwaGFuczogZnVuY3Rpb24gbm9ub3JwaGFucyhzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuc3RkRmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5pc0NoaWxkKCk7XG4gICAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH0sXG4gICAgY2hpbGRyZW46IGNhY2hlKGZ1bmN0aW9uIChzZWxlY3Rvcikge1xuICAgICAgdmFyIGNoaWxkcmVuID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIGVsZUNoaWxkcmVuID0gZWxlLl9wcml2YXRlLmNoaWxkcmVuO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlQ2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjaGlsZHJlbi5wdXNoKGVsZUNoaWxkcmVuW2pdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zcGF3bihjaGlsZHJlbiwgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9LCAnY2hpbGRyZW4nKSxcbiAgICBzaWJsaW5nczogZnVuY3Rpb24gc2libGluZ3Moc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpLmNoaWxkcmVuKCkubm90KHRoaXMpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSxcbiAgICBpc1BhcmVudDogZnVuY3Rpb24gaXNQYXJlbnQoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggIT09IDA7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc0NoaWxkbGVzczogZnVuY3Rpb24gaXNDaGlsZGxlc3MoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc0NoaWxkOiBmdW5jdGlvbiBpc0NoaWxkKCkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKSAmJiBlbGUuX3ByaXZhdGUucGFyZW50ICE9IG51bGw7XG4gICAgICB9XG4gICAgfSxcbiAgICBpc09ycGhhbjogZnVuY3Rpb24gaXNPcnBoYW4oKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5fcHJpdmF0ZS5wYXJlbnQgPT0gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGRlc2NlbmRhbnRzOiBmdW5jdGlvbiBkZXNjZW5kYW50cyhzZWxlY3Rvcikge1xuICAgICAgdmFyIGVsZW1lbnRzID0gW107XG5cbiAgICAgIGZ1bmN0aW9uIGFkZChlbGVzKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlKTtcblxuICAgICAgICAgIGlmIChlbGUuY2hpbGRyZW4oKS5ub25lbXB0eSgpKSB7XG4gICAgICAgICAgICBhZGQoZWxlLmNoaWxkcmVuKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGQodGhpcy5jaGlsZHJlbigpKTtcbiAgICAgIHJldHVybiB0aGlzLnNwYXduKGVsZW1lbnRzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBmb3JFYWNoQ29tcG91bmQoZWxlcywgZm4sIGluY2x1ZGVTZWxmLCByZWN1cnNpdmVTdGVwKSB7XG4gICAgdmFyIHEgPSBbXTtcbiAgICB2YXIgZGlkID0gbmV3IFNldCQxKCk7XG4gICAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICAgIHZhciBoYXNDb21wb3VuZHMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgICBpZiAoaW5jbHVkZVNlbGYpIHtcbiAgICAgICAgcS5wdXNoKGVsZSk7XG4gICAgICB9IGVsc2UgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgICByZWN1cnNpdmVTdGVwKHEsIGRpZCwgZWxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aGlsZSAocS5sZW5ndGggPiAwKSB7XG4gICAgICB2YXIgX2VsZSA9IHEuc2hpZnQoKTtcblxuICAgICAgZm4oX2VsZSk7XG4gICAgICBkaWQuYWRkKF9lbGUuaWQoKSk7XG5cbiAgICAgIGlmIChoYXNDb21wb3VuZHMpIHtcbiAgICAgICAgcmVjdXJzaXZlU3RlcChxLCBkaWQsIF9lbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVzO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkQ2hpbGRyZW4ocSwgZGlkLCBlbGUpIHtcbiAgICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGVsZS5fcHJpdmF0ZS5jaGlsZHJlbjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcblxuICAgICAgICBpZiAoIWRpZC5oYXMoY2hpbGQuaWQoKSkpIHtcbiAgICAgICAgICBxLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IC8vIHZlcnkgZWZmaWNpZW50IHZlcnNpb24gb2YgZWxlcy5hZGQoIGVsZXMuZGVzY2VuZGFudHMoKSApLmZvckVhY2goKVxuICAvLyBmb3IgaW50ZXJuYWwgdXNlXG5cblxuICBlbGVzZm4kZi5mb3JFYWNoRG93biA9IGZ1bmN0aW9uIChmbikge1xuICAgIHZhciBpbmNsdWRlU2VsZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogdHJ1ZTtcbiAgICByZXR1cm4gZm9yRWFjaENvbXBvdW5kKHRoaXMsIGZuLCBpbmNsdWRlU2VsZiwgYWRkQ2hpbGRyZW4pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkZFBhcmVudChxLCBkaWQsIGVsZSkge1xuICAgIGlmIChlbGUuaXNDaGlsZCgpKSB7XG4gICAgICB2YXIgcGFyZW50ID0gZWxlLl9wcml2YXRlLnBhcmVudDtcblxuICAgICAgaWYgKCFkaWQuaGFzKHBhcmVudC5pZCgpKSkge1xuICAgICAgICBxLnB1c2gocGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbGVzZm4kZi5mb3JFYWNoVXAgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgaW5jbHVkZVNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZFBhcmVudCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkUGFyZW50QW5kQ2hpbGRyZW4ocSwgZGlkLCBlbGUpIHtcbiAgICBhZGRQYXJlbnQocSwgZGlkLCBlbGUpO1xuICAgIGFkZENoaWxkcmVuKHEsIGRpZCwgZWxlKTtcbiAgfVxuXG4gIGVsZXNmbiRmLmZvckVhY2hVcEFuZERvd24gPSBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgaW5jbHVkZVNlbGYgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgcmV0dXJuIGZvckVhY2hDb21wb3VuZCh0aGlzLCBmbiwgaW5jbHVkZVNlbGYsIGFkZFBhcmVudEFuZENoaWxkcmVuKTtcbiAgfTsgLy8gYWxpYXNlc1xuXG5cbiAgZWxlc2ZuJGYuYW5jZXN0b3JzID0gZWxlc2ZuJGYucGFyZW50cztcblxuICB2YXIgZm4kNSwgZWxlc2ZuJGU7XG4gIGZuJDUgPSBlbGVzZm4kZSA9IHtcbiAgICBkYXRhOiBkZWZpbmUuZGF0YSh7XG4gICAgICBmaWVsZDogJ2RhdGEnLFxuICAgICAgYmluZGluZ0V2ZW50OiAnZGF0YScsXG4gICAgICBhbGxvd0JpbmRpbmc6IHRydWUsXG4gICAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgICBzZXR0aW5nRXZlbnQ6ICdkYXRhJyxcbiAgICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgICAgYWxsb3dHZXR0aW5nOiB0cnVlLFxuICAgICAgaW1tdXRhYmxlS2V5czoge1xuICAgICAgICAnaWQnOiB0cnVlLFxuICAgICAgICAnc291cmNlJzogdHJ1ZSxcbiAgICAgICAgJ3RhcmdldCc6IHRydWUsXG4gICAgICAgICdwYXJlbnQnOiB0cnVlXG4gICAgICB9LFxuICAgICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgICB9KSxcbiAgICByZW1vdmVEYXRhOiBkZWZpbmUucmVtb3ZlRGF0YSh7XG4gICAgICBmaWVsZDogJ2RhdGEnLFxuICAgICAgZXZlbnQ6ICdkYXRhJyxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIHRyaWdnZXJFdmVudDogdHJ1ZSxcbiAgICAgIGltbXV0YWJsZUtleXM6IHtcbiAgICAgICAgJ2lkJzogdHJ1ZSxcbiAgICAgICAgJ3NvdXJjZSc6IHRydWUsXG4gICAgICAgICd0YXJnZXQnOiB0cnVlLFxuICAgICAgICAncGFyZW50JzogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gICAgfSksXG4gICAgc2NyYXRjaDogZGVmaW5lLmRhdGEoe1xuICAgICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICAgIGJpbmRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgICAgYWxsb3dCaW5kaW5nOiB0cnVlLFxuICAgICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgICAgc2V0dGluZ0V2ZW50OiAnc2NyYXRjaCcsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIGFsbG93R2V0dGluZzogdHJ1ZSxcbiAgICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gICAgfSksXG4gICAgcmVtb3ZlU2NyYXRjaDogZGVmaW5lLnJlbW92ZURhdGEoe1xuICAgICAgZmllbGQ6ICdzY3JhdGNoJyxcbiAgICAgIGV2ZW50OiAnc2NyYXRjaCcsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICB0cmlnZ2VyRXZlbnQ6IHRydWUsXG4gICAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICAgIH0pLFxuICAgIHJzY3JhdGNoOiBkZWZpbmUuZGF0YSh7XG4gICAgICBmaWVsZDogJ3JzY3JhdGNoJyxcbiAgICAgIGFsbG93QmluZGluZzogZmFsc2UsXG4gICAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogZmFsc2UsXG4gICAgICBhbGxvd0dldHRpbmc6IHRydWVcbiAgICB9KSxcbiAgICByZW1vdmVSc2NyYXRjaDogZGVmaW5lLnJlbW92ZURhdGEoe1xuICAgICAgZmllbGQ6ICdyc2NyYXRjaCcsXG4gICAgICB0cmlnZ2VyRXZlbnQ6IGZhbHNlXG4gICAgfSksXG4gICAgaWQ6IGZ1bmN0aW9uIGlkKCkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgfVxuICAgIH1cbiAgfTsgLy8gYWxpYXNlc1xuXG4gIGZuJDUuYXR0ciA9IGZuJDUuZGF0YTtcbiAgZm4kNS5yZW1vdmVBdHRyID0gZm4kNS5yZW1vdmVEYXRhO1xuICB2YXIgZGF0YSA9IGVsZXNmbiRlO1xuXG4gIHZhciBlbGVzZm4kZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIGRlZmluZURlZ3JlZUZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChpbmNsdWRlTG9vcHMpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgaWYgKGluY2x1ZGVMb29wcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluY2x1ZGVMb29wcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmlzTm9kZSgpICYmICFzZWxmLnJlbW92ZWQoKSkge1xuICAgICAgICB2YXIgZGVncmVlID0gMDtcbiAgICAgICAgdmFyIG5vZGUgPSBzZWxmWzBdO1xuICAgICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGNvbm5lY3RlZEVkZ2VzW2ldO1xuXG4gICAgICAgICAgaWYgKCFpbmNsdWRlTG9vcHMgJiYgZWRnZS5pc0xvb3AoKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVncmVlICs9IGNhbGxiYWNrKG5vZGUsIGVkZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZ3JlZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZXh0ZW5kKGVsZXNmbiRkLCB7XG4gICAgZGVncmVlOiBkZWZpbmVEZWdyZWVGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgZWRnZSkge1xuICAgICAgaWYgKGVkZ2Uuc291cmNlKCkuc2FtZShlZGdlLnRhcmdldCgpKSkge1xuICAgICAgICByZXR1cm4gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0pLFxuICAgIGluZGVncmVlOiBkZWZpbmVEZWdyZWVGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgZWRnZSkge1xuICAgICAgaWYgKGVkZ2UudGFyZ2V0KCkuc2FtZShub2RlKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0pLFxuICAgIG91dGRlZ3JlZTogZGVmaW5lRGVncmVlRnVuY3Rpb24oZnVuY3Rpb24gKG5vZGUsIGVkZ2UpIHtcbiAgICAgIGlmIChlZGdlLnNvdXJjZSgpLnNhbWUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9KVxuICB9KTtcblxuICBmdW5jdGlvbiBkZWZpbmVEZWdyZWVCb3VuZHNGdW5jdGlvbihkZWdyZWVGbiwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGluY2x1ZGVMb29wcykge1xuICAgICAgdmFyIHJldDtcbiAgICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gbm9kZXNbaV07XG4gICAgICAgIHZhciBkZWdyZWUgPSBlbGVbZGVncmVlRm5dKGluY2x1ZGVMb29wcyk7XG5cbiAgICAgICAgaWYgKGRlZ3JlZSAhPT0gdW5kZWZpbmVkICYmIChyZXQgPT09IHVuZGVmaW5lZCB8fCBjYWxsYmFjayhkZWdyZWUsIHJldCkpKSB7XG4gICAgICAgICAgcmV0ID0gZGVncmVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfTtcbiAgfVxuXG4gIGV4dGVuZChlbGVzZm4kZCwge1xuICAgIG1pbkRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2RlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgICAgcmV0dXJuIGRlZ3JlZSA8IG1pbjtcbiAgICB9KSxcbiAgICBtYXhEZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICAgIHJldHVybiBkZWdyZWUgPiBtYXg7XG4gICAgfSksXG4gICAgbWluSW5kZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdpbmRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgICAgcmV0dXJuIGRlZ3JlZSA8IG1pbjtcbiAgICB9KSxcbiAgICBtYXhJbmRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ2luZGVncmVlJywgZnVuY3Rpb24gKGRlZ3JlZSwgbWF4KSB7XG4gICAgICByZXR1cm4gZGVncmVlID4gbWF4O1xuICAgIH0pLFxuICAgIG1pbk91dGRlZ3JlZTogZGVmaW5lRGVncmVlQm91bmRzRnVuY3Rpb24oJ291dGRlZ3JlZScsIGZ1bmN0aW9uIChkZWdyZWUsIG1pbikge1xuICAgICAgcmV0dXJuIGRlZ3JlZSA8IG1pbjtcbiAgICB9KSxcbiAgICBtYXhPdXRkZWdyZWU6IGRlZmluZURlZ3JlZUJvdW5kc0Z1bmN0aW9uKCdvdXRkZWdyZWUnLCBmdW5jdGlvbiAoZGVncmVlLCBtYXgpIHtcbiAgICAgIHJldHVybiBkZWdyZWUgPiBtYXg7XG4gICAgfSlcbiAgfSk7XG4gIGV4dGVuZChlbGVzZm4kZCwge1xuICAgIHRvdGFsRGVncmVlOiBmdW5jdGlvbiB0b3RhbERlZ3JlZShpbmNsdWRlTG9vcHMpIHtcbiAgICAgIHZhciB0b3RhbCA9IDA7XG4gICAgICB2YXIgbm9kZXMgPSB0aGlzLm5vZGVzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdG90YWwgKz0gbm9kZXNbaV0uZGVncmVlKGluY2x1ZGVMb29wcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b3RhbDtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBmbiQ0LCBlbGVzZm4kYztcblxuICB2YXIgYmVmb3JlUG9zaXRpb25TZXQgPSBmdW5jdGlvbiBiZWZvcmVQb3NpdGlvblNldChlbGVzLCBuZXdQb3MsIHNpbGVudCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghZWxlLmxvY2tlZCgpKSB7XG4gICAgICAgIHZhciBvbGRQb3MgPSBlbGUuX3ByaXZhdGUucG9zaXRpb247XG4gICAgICAgIHZhciBkZWx0YSA9IHtcbiAgICAgICAgICB4OiBuZXdQb3MueCAhPSBudWxsID8gbmV3UG9zLnggLSBvbGRQb3MueCA6IDAsXG4gICAgICAgICAgeTogbmV3UG9zLnkgIT0gbnVsbCA/IG5ld1Bvcy55IC0gb2xkUG9zLnkgOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGVsZS5pc1BhcmVudCgpICYmICEoZGVsdGEueCA9PT0gMCAmJiBkZWx0YS55ID09PSAwKSkge1xuICAgICAgICAgIGVsZS5jaGlsZHJlbigpLnNoaWZ0KGRlbHRhLCBzaWxlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgcG9zaXRpb25EZWYgPSB7XG4gICAgZmllbGQ6ICdwb3NpdGlvbicsXG4gICAgYmluZGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICAgIGFsbG93QmluZGluZzogdHJ1ZSxcbiAgICBhbGxvd1NldHRpbmc6IHRydWUsXG4gICAgc2V0dGluZ0V2ZW50OiAncG9zaXRpb24nLFxuICAgIHNldHRpbmdUcmlnZ2Vyc0V2ZW50OiB0cnVlLFxuICAgIHRyaWdnZXJGbk5hbWU6ICdlbWl0QW5kTm90aWZ5JyxcbiAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgdmFsaWRLZXlzOiBbJ3gnLCAneSddLFxuICAgIGJlZm9yZUdldDogZnVuY3Rpb24gYmVmb3JlR2V0KGVsZSkge1xuICAgICAgZWxlLnVwZGF0ZUNvbXBvdW5kQm91bmRzKCk7XG4gICAgfSxcbiAgICBiZWZvcmVTZXQ6IGZ1bmN0aW9uIGJlZm9yZVNldChlbGVzLCBuZXdQb3MpIHtcbiAgICAgIGJlZm9yZVBvc2l0aW9uU2V0KGVsZXMsIG5ld1BvcywgZmFsc2UpO1xuICAgIH0sXG4gICAgb25TZXQ6IGZ1bmN0aW9uIG9uU2V0KGVsZXMpIHtcbiAgICAgIGVsZXMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgfSxcbiAgICBjYW5TZXQ6IGZ1bmN0aW9uIGNhblNldChlbGUpIHtcbiAgICAgIHJldHVybiAhZWxlLmxvY2tlZCgpO1xuICAgIH1cbiAgfTtcbiAgZm4kNCA9IGVsZXNmbiRjID0ge1xuICAgIHBvc2l0aW9uOiBkZWZpbmUuZGF0YShwb3NpdGlvbkRlZiksXG4gICAgLy8gcG9zaXRpb24gYnV0IG5vIG5vdGlmaWNhdGlvbiB0byByZW5kZXJlclxuICAgIHNpbGVudFBvc2l0aW9uOiBkZWZpbmUuZGF0YShleHRlbmQoe30sIHBvc2l0aW9uRGVmLCB7XG4gICAgICBhbGxvd0JpbmRpbmc6IGZhbHNlLFxuICAgICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IGZhbHNlLFxuICAgICAgYWxsb3dHZXR0aW5nOiBmYWxzZSxcbiAgICAgIGJlZm9yZVNldDogZnVuY3Rpb24gYmVmb3JlU2V0KGVsZXMsIG5ld1Bvcykge1xuICAgICAgICBiZWZvcmVQb3NpdGlvblNldChlbGVzLCBuZXdQb3MsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIG9uU2V0OiBmdW5jdGlvbiBvblNldChlbGVzKSB7XG4gICAgICAgIGVsZXMuZGlydHlDb21wb3VuZEJvdW5kc0NhY2hlKCk7XG4gICAgICB9XG4gICAgfSkpLFxuICAgIHBvc2l0aW9uczogZnVuY3Rpb24gcG9zaXRpb25zKHBvcywgc2lsZW50KSB7XG4gICAgICBpZiAocGxhaW5PYmplY3QocG9zKSkge1xuICAgICAgICBpZiAoc2lsZW50KSB7XG4gICAgICAgICAgdGhpcy5zaWxlbnRQb3NpdGlvbihwb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucG9zaXRpb24ocG9zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmbiQ2KHBvcykpIHtcbiAgICAgICAgdmFyIF9mbiA9IHBvcztcbiAgICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgICAgICB2YXIgX3BvcyA9IHZvaWQgMDtcblxuICAgICAgICAgIGlmIChfcG9zID0gX2ZuKGVsZSwgaSkpIHtcbiAgICAgICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICAgICAgZWxlLnNpbGVudFBvc2l0aW9uKF9wb3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWxlLnBvc2l0aW9uKF9wb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgc2lsZW50UG9zaXRpb25zOiBmdW5jdGlvbiBzaWxlbnRQb3NpdGlvbnMocG9zKSB7XG4gICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbnMocG9zLCB0cnVlKTtcbiAgICB9LFxuICAgIHNoaWZ0OiBmdW5jdGlvbiBzaGlmdChkaW0sIHZhbCwgc2lsZW50KSB7XG4gICAgICB2YXIgZGVsdGE7XG5cbiAgICAgIGlmIChwbGFpbk9iamVjdChkaW0pKSB7XG4gICAgICAgIGRlbHRhID0ge1xuICAgICAgICAgIHg6IG51bWJlciQxKGRpbS54KSA/IGRpbS54IDogMCxcbiAgICAgICAgICB5OiBudW1iZXIkMShkaW0ueSkgPyBkaW0ueSA6IDBcbiAgICAgICAgfTtcbiAgICAgICAgc2lsZW50ID0gdmFsO1xuICAgICAgfSBlbHNlIGlmIChzdHJpbmcoZGltKSAmJiBudW1iZXIkMSh2YWwpKSB7XG4gICAgICAgIGRlbHRhID0ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9O1xuICAgICAgICBkZWx0YVtkaW1dID0gdmFsO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVsdGEgIT0gbnVsbCkge1xuICAgICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTsgLy8gZXhjbHVkZSBhbnkgbm9kZSB0aGF0IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgY2FsbGluZyBjb2xsZWN0aW9uXG5cbiAgICAgICAgICBpZiAoY3kuaGFzQ29tcG91bmROb2RlcygpICYmIGVsZS5pc0NoaWxkKCkgJiYgZWxlLmFuY2VzdG9ycygpLmFueVNhbWUodGhpcykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwb3MgPSBlbGUucG9zaXRpb24oKTtcbiAgICAgICAgICB2YXIgbmV3UG9zID0ge1xuICAgICAgICAgICAgeDogcG9zLnggKyBkZWx0YS54LFxuICAgICAgICAgICAgeTogcG9zLnkgKyBkZWx0YS55XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChzaWxlbnQpIHtcbiAgICAgICAgICAgIGVsZS5zaWxlbnRQb3NpdGlvbihuZXdQb3MpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbGUucG9zaXRpb24obmV3UG9zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjeS5lbmRCYXRjaCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHNpbGVudFNoaWZ0OiBmdW5jdGlvbiBzaWxlbnRTaGlmdChkaW0sIHZhbCkge1xuICAgICAgaWYgKHBsYWluT2JqZWN0KGRpbSkpIHtcbiAgICAgICAgdGhpcy5zaGlmdChkaW0sIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdHJpbmcoZGltKSAmJiBudW1iZXIkMSh2YWwpKSB7XG4gICAgICAgIHRoaXMuc2hpZnQoZGltLCB2YWwsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIC8vIGdldC9zZXQgdGhlIHJlbmRlcmVkIChpLmUuIG9uIHNjcmVlbikgcG9zaXRvbiBvZiB0aGUgZWxlbWVudFxuICAgIHJlbmRlcmVkUG9zaXRpb246IGZ1bmN0aW9uIHJlbmRlcmVkUG9zaXRpb24oZGltLCB2YWwpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgICB2YXIgcnBvcyA9IHBsYWluT2JqZWN0KGRpbSkgPyBkaW0gOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgc2V0dGluZyA9IHJwb3MgIT09IHVuZGVmaW5lZCB8fCB2YWwgIT09IHVuZGVmaW5lZCAmJiBzdHJpbmcoZGltKTtcblxuICAgICAgaWYgKGVsZSAmJiBlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgLy8gbXVzdCBoYXZlIGFuIGVsZW1lbnQgYW5kIG11c3QgYmUgYSBub2RlIHRvIHJldHVybiBwb3NpdGlvblxuICAgICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9lbGUgPSB0aGlzW2ldO1xuXG4gICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgLy8gc2V0IG9uZSBkaW1lbnNpb25cbiAgICAgICAgICAgICAgX2VsZS5wb3NpdGlvbihkaW0sICh2YWwgLSBwYW5bZGltXSkgLyB6b29tKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnBvcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIHNldCB3aG9sZSBwb3NpdGlvblxuICAgICAgICAgICAgICBfZWxlLnBvc2l0aW9uKHJlbmRlcmVkVG9Nb2RlbFBvc2l0aW9uKHJwb3MsIHpvb20sIHBhbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBnZXR0aW5nXG4gICAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuICAgICAgICAgIHJwb3MgPSBtb2RlbFRvUmVuZGVyZWRQb3NpdGlvbihwb3MsIHpvb20sIHBhbik7XG5cbiAgICAgICAgICBpZiAoZGltID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSB3aG9sZSByZW5kZXJlZCBwb3NpdGlvblxuICAgICAgICAgICAgcmV0dXJuIHJwb3M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoZW4gcmV0dXJuIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uXG4gICAgICAgICAgICByZXR1cm4gcnBvc1tkaW1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghc2V0dGluZykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBmb3IgZW1wdHkgY29sbGVjdGlvbiBjYXNlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgLy8gZ2V0L3NldCB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudFxuICAgIHJlbGF0aXZlUG9zaXRpb246IGZ1bmN0aW9uIHJlbGF0aXZlUG9zaXRpb24oZGltLCB2YWwpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgdmFyIHBwb3MgPSBwbGFpbk9iamVjdChkaW0pID8gZGltIDogdW5kZWZpbmVkO1xuICAgICAgdmFyIHNldHRpbmcgPSBwcG9zICE9PSB1bmRlZmluZWQgfHwgdmFsICE9PSB1bmRlZmluZWQgJiYgc3RyaW5nKGRpbSk7XG4gICAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgICAgaWYgKGVsZSAmJiBlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgLy8gbXVzdCBoYXZlIGFuIGVsZW1lbnQgYW5kIG11c3QgYmUgYSBub2RlIHRvIHJldHVybiBwb3NpdGlvblxuICAgICAgICBpZiAoc2V0dGluZykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9lbGUyID0gdGhpc1tpXTtcbiAgICAgICAgICAgIHZhciBwYXJlbnQgPSBoYXNDb21wb3VuZE5vZGVzID8gX2VsZTIucGFyZW50KCkgOiBudWxsO1xuICAgICAgICAgICAgdmFyIGhhc1BhcmVudCA9IHBhcmVudCAmJiBwYXJlbnQubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZVRvUGFyZW50ID0gaGFzUGFyZW50O1xuXG4gICAgICAgICAgICBpZiAoaGFzUGFyZW50KSB7XG4gICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9yaWdpbiA9IHJlbGF0aXZlVG9QYXJlbnQgPyBwYXJlbnQucG9zaXRpb24oKSA6IHtcbiAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIHNldCBvbmUgZGltZW5zaW9uXG4gICAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKGRpbSwgdmFsICsgb3JpZ2luW2RpbV0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwcG9zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgLy8gc2V0IHdob2xlIHBvc2l0aW9uXG4gICAgICAgICAgICAgIF9lbGUyLnBvc2l0aW9uKHtcbiAgICAgICAgICAgICAgICB4OiBwcG9zLnggKyBvcmlnaW4ueCxcbiAgICAgICAgICAgICAgICB5OiBwcG9zLnkgKyBvcmlnaW4ueVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZ2V0dGluZ1xuICAgICAgICAgIHZhciBwb3MgPSBlbGUucG9zaXRpb24oKTtcblxuICAgICAgICAgIHZhciBfcGFyZW50ID0gaGFzQ29tcG91bmROb2RlcyA/IGVsZS5wYXJlbnQoKSA6IG51bGw7XG5cbiAgICAgICAgICB2YXIgX2hhc1BhcmVudCA9IF9wYXJlbnQgJiYgX3BhcmVudC5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgdmFyIF9yZWxhdGl2ZVRvUGFyZW50ID0gX2hhc1BhcmVudDtcblxuICAgICAgICAgIGlmIChfaGFzUGFyZW50KSB7XG4gICAgICAgICAgICBfcGFyZW50ID0gX3BhcmVudFswXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX29yaWdpbiA9IF9yZWxhdGl2ZVRvUGFyZW50ID8gX3BhcmVudC5wb3NpdGlvbigpIDoge1xuICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcHBvcyA9IHtcbiAgICAgICAgICAgIHg6IHBvcy54IC0gX29yaWdpbi54LFxuICAgICAgICAgICAgeTogcG9zLnkgLSBfb3JpZ2luLnlcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGRpbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgd2hvbGUgcmVuZGVyZWQgcG9zaXRpb25cbiAgICAgICAgICAgIHJldHVybiBwcG9zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGVuIHJldHVybiB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvblxuICAgICAgICAgICAgcmV0dXJuIHBwb3NbZGltXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXNldHRpbmcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gZm9yIGVtcHR5IGNvbGxlY3Rpb24gY2FzZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9XG4gIH07IC8vIGFsaWFzZXNcblxuICBmbiQ0Lm1vZGVsUG9zaXRpb24gPSBmbiQ0LnBvaW50ID0gZm4kNC5wb3NpdGlvbjtcbiAgZm4kNC5tb2RlbFBvc2l0aW9ucyA9IGZuJDQucG9pbnRzID0gZm4kNC5wb3NpdGlvbnM7XG4gIGZuJDQucmVuZGVyZWRQb2ludCA9IGZuJDQucmVuZGVyZWRQb3NpdGlvbjtcbiAgZm4kNC5yZWxhdGl2ZVBvaW50ID0gZm4kNC5yZWxhdGl2ZVBvc2l0aW9uO1xuICB2YXIgcG9zaXRpb24gPSBlbGVzZm4kYztcblxuICB2YXIgZm4kMywgZWxlc2ZuJGI7XG4gIGZuJDMgPSBlbGVzZm4kYiA9IHt9O1xuXG4gIGVsZXNmbiRiLnJlbmRlcmVkQm91bmRpbmdCb3ggPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBiYiA9IHRoaXMuYm91bmRpbmdCb3gob3B0aW9ucyk7XG4gICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICB2YXIgeDEgPSBiYi54MSAqIHpvb20gKyBwYW4ueDtcbiAgICB2YXIgeDIgPSBiYi54MiAqIHpvb20gKyBwYW4ueDtcbiAgICB2YXIgeTEgPSBiYi55MSAqIHpvb20gKyBwYW4ueTtcbiAgICB2YXIgeTIgPSBiYi55MiAqIHpvb20gKyBwYW4ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDE6IHgxLFxuICAgICAgeDI6IHgyLFxuICAgICAgeTE6IHkxLFxuICAgICAgeTI6IHkyLFxuICAgICAgdzogeDIgLSB4MSxcbiAgICAgIGg6IHkyIC0geTFcbiAgICB9O1xuICB9O1xuXG4gIGVsZXNmbiRiLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2lsZW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmYWxzZTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG5cbiAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpIHx8ICFjeS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuZm9yRWFjaFVwKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIGlmIChlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICAgIF9wLmNvbXBvdW5kQm91bmRzQ2xlYW4gPSBmYWxzZTtcbiAgICAgICAgX3AuYmJDYWNoZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgICBlbGUuZW1pdEFuZE5vdGlmeSgnYm91bmRzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBlbGVzZm4kYi51cGRhdGVDb21wb3VuZEJvdW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZm9yY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTsgLy8gbm90IHBvc3NpYmxlIHRvIGRvIG9uIG5vbi1jb21wb3VuZCBncmFwaHMgb3Igd2l0aCB0aGUgc3R5bGUgZGlzYWJsZWRcblxuICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkgfHwgIWN5Lmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSAvLyBzYXZlIGN5Y2xlcyB3aGVuIGJhdGNoaW5nIC0tIGJ1dCBib3VuZHMgd2lsbCBiZSBzdGFsZSAob3Igbm90IGV4aXN0IHlldClcblxuXG4gICAgaWYgKCFmb3JjZSAmJiBjeS5iYXRjaGluZygpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUocGFyZW50KSB7XG4gICAgICBpZiAoIXBhcmVudC5pc1BhcmVudCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIF9wID0gcGFyZW50Ll9wcml2YXRlO1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuKCk7XG4gICAgICB2YXIgaW5jbHVkZUxhYmVscyA9IHBhcmVudC5wc3R5bGUoJ2NvbXBvdW5kLXNpemluZy13cnQtbGFiZWxzJykudmFsdWUgPT09ICdpbmNsdWRlJztcbiAgICAgIHZhciBtaW4gPSB7XG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgdmFsOiBwYXJlbnQucHN0eWxlKCdtaW4td2lkdGgnKS5wZlZhbHVlLFxuICAgICAgICAgIGxlZnQ6IHBhcmVudC5wc3R5bGUoJ21pbi13aWR0aC1iaWFzLWxlZnQnKSxcbiAgICAgICAgICByaWdodDogcGFyZW50LnBzdHlsZSgnbWluLXdpZHRoLWJpYXMtcmlnaHQnKVxuICAgICAgICB9LFxuICAgICAgICBoZWlnaHQ6IHtcbiAgICAgICAgICB2YWw6IHBhcmVudC5wc3R5bGUoJ21pbi1oZWlnaHQnKS5wZlZhbHVlLFxuICAgICAgICAgIHRvcDogcGFyZW50LnBzdHlsZSgnbWluLWhlaWdodC1iaWFzLXRvcCcpLFxuICAgICAgICAgIGJvdHRvbTogcGFyZW50LnBzdHlsZSgnbWluLWhlaWdodC1iaWFzLWJvdHRvbScpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgYmIgPSBjaGlsZHJlbi5ib3VuZGluZ0JveCh7XG4gICAgICAgIGluY2x1ZGVMYWJlbHM6IGluY2x1ZGVMYWJlbHMsXG4gICAgICAgIGluY2x1ZGVPdmVybGF5czogZmFsc2UsXG4gICAgICAgIC8vIHVwZGF0aW5nIHRoZSBjb21wb3VuZCBib3VuZHMgaGFwcGVucyBvdXRzaWRlIG9mIHRoZSByZWd1bGFyXG4gICAgICAgIC8vIGNhY2hlIGN5Y2xlIChpLmUuIGJlZm9yZSBmaXJlZCBldmVudHMpXG4gICAgICAgIHVzZUNhY2hlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICB2YXIgcG9zID0gX3AucG9zaXRpb247IC8vIGlmIGNoaWxkcmVuIHRha2UgdXAgemVybyBhcmVhIHRoZW4ga2VlcCBwb3NpdGlvbiBhbmQgZmFsbCBiYWNrIG9uIHN0eWxlc2hlZXQgdy9oXG5cbiAgICAgIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICAgICAgYmIgPSB7XG4gICAgICAgICAgdzogcGFyZW50LnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLFxuICAgICAgICAgIGg6IHBhcmVudC5wc3R5bGUoJ2hlaWdodCcpLnBmVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgYmIueDEgPSBwb3MueCAtIGJiLncgLyAyO1xuICAgICAgICBiYi54MiA9IHBvcy54ICsgYmIudyAvIDI7XG4gICAgICAgIGJiLnkxID0gcG9zLnkgLSBiYi5oIC8gMjtcbiAgICAgICAgYmIueTIgPSBwb3MueSArIGJiLmggLyAyO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjb21wdXRlQmlhc1ZhbHVlcyhwcm9wRGlmZiwgcHJvcEJpYXMsIHByb3BCaWFzQ29tcGxlbWVudCkge1xuICAgICAgICB2YXIgYmlhc0RpZmYgPSAwO1xuICAgICAgICB2YXIgYmlhc0NvbXBsZW1lbnREaWZmID0gMDtcbiAgICAgICAgdmFyIGJpYXNUb3RhbCA9IHByb3BCaWFzICsgcHJvcEJpYXNDb21wbGVtZW50O1xuXG4gICAgICAgIGlmIChwcm9wRGlmZiA+IDAgJiYgYmlhc1RvdGFsID4gMCkge1xuICAgICAgICAgIGJpYXNEaWZmID0gcHJvcEJpYXMgLyBiaWFzVG90YWwgKiBwcm9wRGlmZjtcbiAgICAgICAgICBiaWFzQ29tcGxlbWVudERpZmYgPSBwcm9wQmlhc0NvbXBsZW1lbnQgLyBiaWFzVG90YWwgKiBwcm9wRGlmZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYmlhc0RpZmY6IGJpYXNEaWZmLFxuICAgICAgICAgIGJpYXNDb21wbGVtZW50RGlmZjogYmlhc0NvbXBsZW1lbnREaWZmXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNvbXB1dGVQYWRkaW5nVmFsdWVzKHdpZHRoLCBoZWlnaHQsIHBhZGRpbmdPYmplY3QsIHJlbGF0aXZlVG8pIHtcbiAgICAgICAgLy8gQXNzdW1pbmcgcGVyY2VudGFnZSBpcyBudW1iZXIgZnJvbSAwIHRvIDFcbiAgICAgICAgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICclJykge1xuICAgICAgICAgIHN3aXRjaCAocmVsYXRpdmVUbykge1xuICAgICAgICAgICAgY2FzZSAnd2lkdGgnOlxuICAgICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgICBjYXNlICdoZWlnaHQnOlxuICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0ID4gMCA/IHBhZGRpbmdPYmplY3QucGZWYWx1ZSAqIGhlaWdodCA6IDA7XG5cbiAgICAgICAgICAgIGNhc2UgJ2F2ZXJhZ2UnOlxuICAgICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyBwYWRkaW5nT2JqZWN0LnBmVmFsdWUgKiAod2lkdGggKyBoZWlnaHQpIC8gMiA6IDA7XG5cbiAgICAgICAgICAgIGNhc2UgJ21pbic6XG4gICAgICAgICAgICAgIHJldHVybiB3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCA/IHdpZHRoID4gaGVpZ2h0ID8gcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogcGFkZGluZ09iamVjdC5wZlZhbHVlICogd2lkdGggOiAwO1xuXG4gICAgICAgICAgICBjYXNlICdtYXgnOlxuICAgICAgICAgICAgICByZXR1cm4gd2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyB3aWR0aCA+IGhlaWdodCA/IHBhZGRpbmdPYmplY3QucGZWYWx1ZSAqIHdpZHRoIDogcGFkZGluZ09iamVjdC5wZlZhbHVlICogaGVpZ2h0IDogMDtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHBhZGRpbmdPYmplY3QudW5pdHMgPT09ICdweCcpIHtcbiAgICAgICAgICByZXR1cm4gcGFkZGluZ09iamVjdC5wZlZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBsZWZ0VmFsID0gbWluLndpZHRoLmxlZnQudmFsdWU7XG5cbiAgICAgIGlmIChtaW4ud2lkdGgubGVmdC51bml0cyA9PT0gJ3B4JyAmJiBtaW4ud2lkdGgudmFsID4gMCkge1xuICAgICAgICBsZWZ0VmFsID0gbGVmdFZhbCAqIDEwMCAvIG1pbi53aWR0aC52YWw7XG4gICAgICB9XG5cbiAgICAgIHZhciByaWdodFZhbCA9IG1pbi53aWR0aC5yaWdodC52YWx1ZTtcblxuICAgICAgaWYgKG1pbi53aWR0aC5yaWdodC51bml0cyA9PT0gJ3B4JyAmJiBtaW4ud2lkdGgudmFsID4gMCkge1xuICAgICAgICByaWdodFZhbCA9IHJpZ2h0VmFsICogMTAwIC8gbWluLndpZHRoLnZhbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHRvcFZhbCA9IG1pbi5oZWlnaHQudG9wLnZhbHVlO1xuXG4gICAgICBpZiAobWluLmhlaWdodC50b3AudW5pdHMgPT09ICdweCcgJiYgbWluLmhlaWdodC52YWwgPiAwKSB7XG4gICAgICAgIHRvcFZhbCA9IHRvcFZhbCAqIDEwMCAvIG1pbi5oZWlnaHQudmFsO1xuICAgICAgfVxuXG4gICAgICB2YXIgYm90dG9tVmFsID0gbWluLmhlaWdodC5ib3R0b20udmFsdWU7XG5cbiAgICAgIGlmIChtaW4uaGVpZ2h0LmJvdHRvbS51bml0cyA9PT0gJ3B4JyAmJiBtaW4uaGVpZ2h0LnZhbCA+IDApIHtcbiAgICAgICAgYm90dG9tVmFsID0gYm90dG9tVmFsICogMTAwIC8gbWluLmhlaWdodC52YWw7XG4gICAgICB9XG5cbiAgICAgIHZhciB3aWR0aEJpYXNEaWZmcyA9IGNvbXB1dGVCaWFzVmFsdWVzKG1pbi53aWR0aC52YWwgLSBiYi53LCBsZWZ0VmFsLCByaWdodFZhbCk7XG4gICAgICB2YXIgZGlmZkxlZnQgPSB3aWR0aEJpYXNEaWZmcy5iaWFzRGlmZjtcbiAgICAgIHZhciBkaWZmUmlnaHQgPSB3aWR0aEJpYXNEaWZmcy5iaWFzQ29tcGxlbWVudERpZmY7XG4gICAgICB2YXIgaGVpZ2h0Qmlhc0RpZmZzID0gY29tcHV0ZUJpYXNWYWx1ZXMobWluLmhlaWdodC52YWwgLSBiYi5oLCB0b3BWYWwsIGJvdHRvbVZhbCk7XG4gICAgICB2YXIgZGlmZlRvcCA9IGhlaWdodEJpYXNEaWZmcy5iaWFzRGlmZjtcbiAgICAgIHZhciBkaWZmQm90dG9tID0gaGVpZ2h0Qmlhc0RpZmZzLmJpYXNDb21wbGVtZW50RGlmZjtcbiAgICAgIF9wLmF1dG9QYWRkaW5nID0gY29tcHV0ZVBhZGRpbmdWYWx1ZXMoYmIudywgYmIuaCwgcGFyZW50LnBzdHlsZSgncGFkZGluZycpLCBwYXJlbnQucHN0eWxlKCdwYWRkaW5nLXJlbGF0aXZlLXRvJykudmFsdWUpO1xuICAgICAgX3AuYXV0b1dpZHRoID0gTWF0aC5tYXgoYmIudywgbWluLndpZHRoLnZhbCk7XG4gICAgICBwb3MueCA9ICgtZGlmZkxlZnQgKyBiYi54MSArIGJiLngyICsgZGlmZlJpZ2h0KSAvIDI7XG4gICAgICBfcC5hdXRvSGVpZ2h0ID0gTWF0aC5tYXgoYmIuaCwgbWluLmhlaWdodC52YWwpO1xuICAgICAgcG9zLnkgPSAoLWRpZmZUb3AgKyBiYi55MSArIGJiLnkyICsgZGlmZkJvdHRvbSkgLyAyO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICAgIGlmICghX3AuY29tcG91bmRCb3VuZHNDbGVhbiB8fCBmb3JjZSkge1xuICAgICAgICB1cGRhdGUoZWxlKTtcblxuICAgICAgICBpZiAoIWN5LmJhdGNoaW5nKCkpIHtcbiAgICAgICAgICBfcC5jb21wb3VuZEJvdW5kc0NsZWFuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBub25pbmYgPSBmdW5jdGlvbiBub25pbmYoeCkge1xuICAgIGlmICh4ID09PSBJbmZpbml0eSB8fCB4ID09PSAtSW5maW5pdHkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiB4O1xuICB9O1xuXG4gIHZhciB1cGRhdGVCb3VuZHMgPSBmdW5jdGlvbiB1cGRhdGVCb3VuZHMoYiwgeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAvLyBkb24ndCB1cGRhdGUgd2l0aCB6ZXJvIGFyZWEgYm94ZXNcbiAgICBpZiAoeDIgLSB4MSA9PT0gMCB8fCB5MiAtIHkxID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBkb24ndCB1cGRhdGUgd2l0aCBudWxsIGRpbVxuXG5cbiAgICBpZiAoeDEgPT0gbnVsbCB8fCB5MSA9PSBudWxsIHx8IHgyID09IG51bGwgfHwgeTIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGIueDEgPSB4MSA8IGIueDEgPyB4MSA6IGIueDE7XG4gICAgYi54MiA9IHgyID4gYi54MiA/IHgyIDogYi54MjtcbiAgICBiLnkxID0geTEgPCBiLnkxID8geTEgOiBiLnkxO1xuICAgIGIueTIgPSB5MiA+IGIueTIgPyB5MiA6IGIueTI7XG4gICAgYi53ID0gYi54MiAtIGIueDE7XG4gICAgYi5oID0gYi55MiAtIGIueTE7XG4gIH07XG5cbiAgdmFyIHVwZGF0ZUJvdW5kc0Zyb21Cb3ggPSBmdW5jdGlvbiB1cGRhdGVCb3VuZHNGcm9tQm94KGIsIGIyKSB7XG4gICAgaWYgKGIyID09IG51bGwpIHtcbiAgICAgIHJldHVybiBiO1xuICAgIH1cblxuICAgIHJldHVybiB1cGRhdGVCb3VuZHMoYiwgYjIueDEsIGIyLnkxLCBiMi54MiwgYjIueTIpO1xuICB9O1xuXG4gIHZhciBwcmVmaXhlZFByb3BlcnR5ID0gZnVuY3Rpb24gcHJlZml4ZWRQcm9wZXJ0eShvYmosIGZpZWxkLCBwcmVmaXgpIHtcbiAgICByZXR1cm4gZ2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIGZpZWxkLCBwcmVmaXgpO1xuICB9O1xuXG4gIHZhciB1cGRhdGVCb3VuZHNGcm9tQXJyb3cgPSBmdW5jdGlvbiB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsIHByZWZpeCkge1xuICAgIGlmIChlbGUuY3koKS5oZWFkbGVzcygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gICAgdmFyIGhhbGZBclcgPSByc3R5bGUuYXJyb3dXaWR0aCAvIDI7XG4gICAgdmFyIGFycm93VHlwZSA9IGVsZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1zaGFwZScpLnZhbHVlO1xuICAgIHZhciB4O1xuICAgIHZhciB5O1xuXG4gICAgaWYgKGFycm93VHlwZSAhPT0gJ25vbmUnKSB7XG4gICAgICBpZiAocHJlZml4ID09PSAnc291cmNlJykge1xuICAgICAgICB4ID0gcnN0eWxlLnNyY1g7XG4gICAgICAgIHkgPSByc3R5bGUuc3JjWTtcbiAgICAgIH0gZWxzZSBpZiAocHJlZml4ID09PSAndGFyZ2V0Jykge1xuICAgICAgICB4ID0gcnN0eWxlLnRndFg7XG4gICAgICAgIHkgPSByc3R5bGUudGd0WTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHggPSByc3R5bGUubWlkWDtcbiAgICAgICAgeSA9IHJzdHlsZS5taWRZO1xuICAgICAgfSAvLyBhbHdheXMgc3RvcmUgdGhlIGluZGl2aWR1YWwgYXJyb3cgYm91bmRzXG5cblxuICAgICAgdmFyIGJicyA9IF9wLmFycm93Qm91bmRzID0gX3AuYXJyb3dCb3VuZHMgfHwge307XG4gICAgICB2YXIgYmIgPSBiYnNbcHJlZml4XSA9IGJic1twcmVmaXhdIHx8IHt9O1xuICAgICAgYmIueDEgPSB4IC0gaGFsZkFyVztcbiAgICAgIGJiLnkxID0geSAtIGhhbGZBclc7XG4gICAgICBiYi54MiA9IHggKyBoYWxmQXJXO1xuICAgICAgYmIueTIgPSB5ICsgaGFsZkFyVztcbiAgICAgIGJiLncgPSBiYi54MiAtIGJiLngxO1xuICAgICAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gICAgICBleHBhbmRCb3VuZGluZ0JveChiYiwgMSk7XG4gICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBiYi54MSwgYmIueTEsIGJiLngyLCBiYi55Mik7XG4gICAgfVxuICB9O1xuXG4gIHZhciB1cGRhdGVCb3VuZHNGcm9tTGFiZWwgPSBmdW5jdGlvbiB1cGRhdGVCb3VuZHNGcm9tTGFiZWwoYm91bmRzLCBlbGUsIHByZWZpeCkge1xuICAgIGlmIChlbGUuY3koKS5oZWFkbGVzcygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByZWZpeERhc2g7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICBwcmVmaXhEYXNoID0gcHJlZml4ICsgJy0nO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXhEYXNoID0gJyc7XG4gICAgfVxuXG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciByc3R5bGUgPSBfcC5yc3R5bGU7XG4gICAgdmFyIGxhYmVsID0gZWxlLnBzdHlsZShwcmVmaXhEYXNoICsgJ2xhYmVsJykuc3RyVmFsdWU7XG5cbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpO1xuICAgICAgdmFyIHZhbGlnbiA9IGVsZS5wc3R5bGUoJ3RleHQtdmFsaWduJyk7XG4gICAgICB2YXIgbGFiZWxXaWR0aCA9IHByZWZpeGVkUHJvcGVydHkocnN0eWxlLCAnbGFiZWxXaWR0aCcsIHByZWZpeCk7XG4gICAgICB2YXIgbGFiZWxIZWlnaHQgPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsSGVpZ2h0JywgcHJlZml4KTtcbiAgICAgIHZhciBsYWJlbFggPSBwcmVmaXhlZFByb3BlcnR5KHJzdHlsZSwgJ2xhYmVsWCcsIHByZWZpeCk7XG4gICAgICB2YXIgbGFiZWxZID0gcHJlZml4ZWRQcm9wZXJ0eShyc3R5bGUsICdsYWJlbFknLCBwcmVmaXgpO1xuICAgICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teCcpLnBmVmFsdWU7XG4gICAgICB2YXIgbWFyZ2luWSA9IGVsZS5wc3R5bGUocHJlZml4RGFzaCArICd0ZXh0LW1hcmdpbi15JykucGZWYWx1ZTtcbiAgICAgIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gICAgICB2YXIgcm90YXRpb24gPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1yb3RhdGlvbicpO1xuICAgICAgdmFyIG91dGxpbmVXaWR0aCA9IGVsZS5wc3R5bGUoJ3RleHQtb3V0bGluZS13aWR0aCcpLnBmVmFsdWU7XG4gICAgICB2YXIgYm9yZGVyV2lkdGggPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci13aWR0aCcpLnBmVmFsdWU7XG4gICAgICB2YXIgaGFsZkJvcmRlcldpZHRoID0gYm9yZGVyV2lkdGggLyAyO1xuICAgICAgdmFyIHBhZGRpbmcgPSBlbGUucHN0eWxlKCd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycpLnBmVmFsdWU7XG4gICAgICB2YXIgbWFyZ2luT2ZFcnJvciA9IDI7IC8vIGV4cGFuZCB0byB3b3JrIGFyb3VuZCBicm93c2VyIGRpbWVuc2lvbiBpbmFjY3VyYWNpZXNcblxuICAgICAgdmFyIGxoID0gbGFiZWxIZWlnaHQ7XG4gICAgICB2YXIgbHcgPSBsYWJlbFdpZHRoO1xuICAgICAgdmFyIGx3XzIgPSBsdyAvIDI7XG4gICAgICB2YXIgbGhfMiA9IGxoIC8gMjtcbiAgICAgIHZhciBseDEsIGx4MiwgbHkxLCBseTI7XG5cbiAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgbHgxID0gbGFiZWxYIC0gbHdfMjtcbiAgICAgICAgbHgyID0gbGFiZWxYICsgbHdfMjtcbiAgICAgICAgbHkxID0gbGFiZWxZIC0gbGhfMjtcbiAgICAgICAgbHkyID0gbGFiZWxZICsgbGhfMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoaGFsaWduLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBseDEgPSBsYWJlbFggLSBsdztcbiAgICAgICAgICAgIGx4MiA9IGxhYmVsWDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgIGx4MSA9IGxhYmVsWCAtIGx3XzI7XG4gICAgICAgICAgICBseDIgPSBsYWJlbFggKyBsd18yO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBseDEgPSBsYWJlbFg7XG4gICAgICAgICAgICBseDIgPSBsYWJlbFggKyBsdztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh2YWxpZ24udmFsdWUpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgbHkxID0gbGFiZWxZIC0gbGg7XG4gICAgICAgICAgICBseTIgPSBsYWJlbFk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgICAgICBseTEgPSBsYWJlbFkgLSBsaF8yO1xuICAgICAgICAgICAgbHkyID0gbGFiZWxZICsgbGhfMjtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIGx5MSA9IGxhYmVsWTtcbiAgICAgICAgICAgIGx5MiA9IGxhYmVsWSArIGxoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gc2hpZnQgYnkgbWFyZ2luIGFuZCBleHBhbmQgYnkgb3V0bGluZSBhbmQgYm9yZGVyXG5cblxuICAgICAgbHgxICs9IG1hcmdpblggLSBNYXRoLm1heChvdXRsaW5lV2lkdGgsIGhhbGZCb3JkZXJXaWR0aCkgLSBwYWRkaW5nIC0gbWFyZ2luT2ZFcnJvcjtcbiAgICAgIGx4MiArPSBtYXJnaW5YICsgTWF0aC5tYXgob3V0bGluZVdpZHRoLCBoYWxmQm9yZGVyV2lkdGgpICsgcGFkZGluZyArIG1hcmdpbk9mRXJyb3I7XG4gICAgICBseTEgKz0gbWFyZ2luWSAtIE1hdGgubWF4KG91dGxpbmVXaWR0aCwgaGFsZkJvcmRlcldpZHRoKSAtIHBhZGRpbmcgLSBtYXJnaW5PZkVycm9yO1xuICAgICAgbHkyICs9IG1hcmdpblkgKyBNYXRoLm1heChvdXRsaW5lV2lkdGgsIGhhbGZCb3JkZXJXaWR0aCkgKyBwYWRkaW5nICsgbWFyZ2luT2ZFcnJvcjsgLy8gYWx3YXlzIHN0b3JlIHRoZSB1bnJvdGF0ZWQgbGFiZWwgYm91bmRzIHNlcGFyYXRlbHlcblxuICAgICAgdmFyIGJiUHJlZml4ID0gcHJlZml4IHx8ICdtYWluJztcbiAgICAgIHZhciBiYnMgPSBfcC5sYWJlbEJvdW5kcztcbiAgICAgIHZhciBiYiA9IGJic1tiYlByZWZpeF0gPSBiYnNbYmJQcmVmaXhdIHx8IHt9O1xuICAgICAgYmIueDEgPSBseDE7XG4gICAgICBiYi55MSA9IGx5MTtcbiAgICAgIGJiLngyID0gbHgyO1xuICAgICAgYmIueTIgPSBseTI7XG4gICAgICBiYi53ID0gbHgyIC0gbHgxO1xuICAgICAgYmIuaCA9IGx5MiAtIGx5MTtcbiAgICAgIHZhciBpc0F1dG9yb3RhdGUgPSBpc0VkZ2UgJiYgcm90YXRpb24uc3RyVmFsdWUgPT09ICdhdXRvcm90YXRlJztcbiAgICAgIHZhciBpc1BmVmFsdWUgPSByb3RhdGlvbi5wZlZhbHVlICE9IG51bGwgJiYgcm90YXRpb24ucGZWYWx1ZSAhPT0gMDtcblxuICAgICAgaWYgKGlzQXV0b3JvdGF0ZSB8fCBpc1BmVmFsdWUpIHtcbiAgICAgICAgdmFyIHRoZXRhID0gaXNBdXRvcm90YXRlID8gcHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsICdsYWJlbEFuZ2xlJywgcHJlZml4KSA6IHJvdGF0aW9uLnBmVmFsdWU7XG4gICAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICAgIHZhciBzaW4gPSBNYXRoLnNpbih0aGV0YSk7IC8vIHJvdGF0aW9uIHBvaW50IChkZWZhdWx0IHZhbHVlIGZvciBjZW50ZXItY2VudGVyKVxuXG4gICAgICAgIHZhciB4byA9IChseDEgKyBseDIpIC8gMjtcbiAgICAgICAgdmFyIHlvID0gKGx5MSArIGx5MikgLyAyO1xuXG4gICAgICAgIGlmICghaXNFZGdlKSB7XG4gICAgICAgICAgc3dpdGNoIChoYWxpZ24udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICB4byA9IGx4MjtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgeG8gPSBseDE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN3aXRjaCAodmFsaWduLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICB5byA9IGx5MjtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICAgIHlvID0gbHkxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcm90YXRlID0gZnVuY3Rpb24gcm90YXRlKHgsIHkpIHtcbiAgICAgICAgICB4ID0geCAtIHhvO1xuICAgICAgICAgIHkgPSB5IC0geW87XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKiBjb3MgLSB5ICogc2luICsgeG8sXG4gICAgICAgICAgICB5OiB4ICogc2luICsgeSAqIGNvcyArIHlvXG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcHgxeTEgPSByb3RhdGUobHgxLCBseTEpO1xuICAgICAgICB2YXIgcHgxeTIgPSByb3RhdGUobHgxLCBseTIpO1xuICAgICAgICB2YXIgcHgyeTEgPSByb3RhdGUobHgyLCBseTEpO1xuICAgICAgICB2YXIgcHgyeTIgPSByb3RhdGUobHgyLCBseTIpO1xuICAgICAgICBseDEgPSBNYXRoLm1pbihweDF5MS54LCBweDF5Mi54LCBweDJ5MS54LCBweDJ5Mi54KTtcbiAgICAgICAgbHgyID0gTWF0aC5tYXgocHgxeTEueCwgcHgxeTIueCwgcHgyeTEueCwgcHgyeTIueCk7XG4gICAgICAgIGx5MSA9IE1hdGgubWluKHB4MXkxLnksIHB4MXkyLnksIHB4MnkxLnksIHB4MnkyLnkpO1xuICAgICAgICBseTIgPSBNYXRoLm1heChweDF5MS55LCBweDF5Mi55LCBweDJ5MS55LCBweDJ5Mi55KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGJiUHJlZml4Um90ID0gYmJQcmVmaXggKyAnUm90JztcbiAgICAgIHZhciBiYlJvdCA9IGJic1tiYlByZWZpeFJvdF0gPSBiYnNbYmJQcmVmaXhSb3RdIHx8IHt9O1xuICAgICAgYmJSb3QueDEgPSBseDE7XG4gICAgICBiYlJvdC55MSA9IGx5MTtcbiAgICAgIGJiUm90LngyID0gbHgyO1xuICAgICAgYmJSb3QueTIgPSBseTI7XG4gICAgICBiYlJvdC53ID0gbHgyIC0gbHgxO1xuICAgICAgYmJSb3QuaCA9IGx5MiAtIGx5MTtcbiAgICAgIHVwZGF0ZUJvdW5kcyhib3VuZHMsIGx4MSwgbHkxLCBseDIsIGx5Mik7XG4gICAgICB1cGRhdGVCb3VuZHMoX3AubGFiZWxCb3VuZHMuYWxsLCBseDEsIGx5MSwgbHgyLCBseTIpO1xuICAgIH1cblxuICAgIHJldHVybiBib3VuZHM7XG4gIH07IC8vIGdldCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBlbGVtZW50cyAoaW4gcmF3IG1vZGVsIHBvc2l0aW9uKVxuXG5cbiAgdmFyIGJvdW5kaW5nQm94SW1wbCA9IGZ1bmN0aW9uIGJvdW5kaW5nQm94SW1wbChlbGUsIG9wdGlvbnMpIHtcbiAgICB2YXIgY3kgPSBlbGUuX3ByaXZhdGUuY3k7XG4gICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuICAgIHZhciBoZWFkbGVzcyA9IGN5LmhlYWRsZXNzKCk7XG4gICAgdmFyIGJvdW5kcyA9IG1ha2VCb3VuZGluZ0JveCgpO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgaXNOb2RlID0gZWxlLmlzTm9kZSgpO1xuICAgIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gICAgdmFyIGV4MSwgZXgyLCBleTEsIGV5MjsgLy8gZXh0cmVtYSBvZiBib2R5IC8gbGluZXNcblxuICAgIHZhciB4LCB5OyAvLyBub2RlIHBvc1xuXG4gICAgdmFyIHJzdHlsZSA9IF9wLnJzdHlsZTtcbiAgICB2YXIgbWFudWFsRXhwYW5zaW9uID0gaXNOb2RlICYmIHN0eWxlRW5hYmxlZCA/IGVsZS5wc3R5bGUoJ2JvdW5kcy1leHBhbnNpb24nKS5wZlZhbHVlIDogWzBdOyAvLyBtdXN0IHVzZSBgZGlzcGxheWAgcHJvcCBvbmx5LCBhcyByZWFkaW5nIGBjb21wb3VuZC53aWR0aCgpYCBjYXVzZXMgcmVjdXJzaW9uXG4gICAgLy8gKG90aGVyIGZhY3RvcnMgbGlrZSB3aWR0aCB2YWx1ZXMgd2lsbCBiZSBjb25zaWRlcmVkIGxhdGVyIGluIHRoaXMgZnVuY3Rpb24gYW55d2F5KVxuXG4gICAgdmFyIGlzRGlzcGxheWVkID0gZnVuY3Rpb24gaXNEaXNwbGF5ZWQoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlICE9PSAnbm9uZSc7XG4gICAgfTtcblxuICAgIHZhciBkaXNwbGF5ZWQgPSAhc3R5bGVFbmFibGVkIHx8IGlzRGlzcGxheWVkKGVsZSkgLy8gbXVzdCB0YWtlIGludG8gYWNjb3VudCBjb25uZWN0ZWQgbm9kZXMgYi9jIG9mIGltcGxpY2l0IGVkZ2UgaGlkaW5nIG9uIGRpc3BsYXk6bm9uZSBub2RlXG4gICAgJiYgKCFpc0VkZ2UgfHwgaXNEaXNwbGF5ZWQoZWxlLnNvdXJjZSgpKSAmJiBpc0Rpc3BsYXllZChlbGUudGFyZ2V0KCkpKTtcblxuICAgIGlmIChkaXNwbGF5ZWQpIHtcbiAgICAgIC8vIGRpc3BsYXllZCBzdWZmaWNlcywgc2luY2Ugd2Ugd2lsbCBmaW5kIHplcm8gYXJlYSBlbGVzIGFueXdheVxuICAgICAgdmFyIG92ZXJsYXlPcGFjaXR5ID0gMDtcbiAgICAgIHZhciBvdmVybGF5UGFkZGluZyA9IDA7XG5cbiAgICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlT3ZlcmxheXMpIHtcbiAgICAgICAgb3ZlcmxheU9wYWNpdHkgPSBlbGUucHN0eWxlKCdvdmVybGF5LW9wYWNpdHknKS52YWx1ZTtcblxuICAgICAgICBpZiAob3ZlcmxheU9wYWNpdHkgIT09IDApIHtcbiAgICAgICAgICBvdmVybGF5UGFkZGluZyA9IGVsZS5wc3R5bGUoJ292ZXJsYXktcGFkZGluZycpLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB1bmRlcmxheU9wYWNpdHkgPSAwO1xuICAgICAgdmFyIHVuZGVybGF5UGFkZGluZyA9IDA7XG5cbiAgICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlVW5kZXJsYXlzKSB7XG4gICAgICAgIHVuZGVybGF5T3BhY2l0eSA9IGVsZS5wc3R5bGUoJ3VuZGVybGF5LW9wYWNpdHknKS52YWx1ZTtcblxuICAgICAgICBpZiAodW5kZXJsYXlPcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgICAgdW5kZXJsYXlQYWRkaW5nID0gZWxlLnBzdHlsZSgndW5kZXJsYXktcGFkZGluZycpLnZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBwYWRkaW5nID0gTWF0aC5tYXgob3ZlcmxheVBhZGRpbmcsIHVuZGVybGF5UGFkZGluZyk7XG4gICAgICB2YXIgdyA9IDA7XG4gICAgICB2YXIgd0hhbGYgPSAwO1xuXG4gICAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICAgIHcgPSBlbGUucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWU7XG4gICAgICAgIHdIYWxmID0gdyAvIDI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05vZGUgJiYgb3B0aW9ucy5pbmNsdWRlTm9kZXMpIHtcbiAgICAgICAgdmFyIHBvcyA9IGVsZS5wb3NpdGlvbigpO1xuICAgICAgICB4ID0gcG9zLng7XG4gICAgICAgIHkgPSBwb3MueTtcblxuICAgICAgICB2YXIgX3cgPSBlbGUub3V0ZXJXaWR0aCgpO1xuXG4gICAgICAgIHZhciBoYWxmVyA9IF93IC8gMjtcbiAgICAgICAgdmFyIGggPSBlbGUub3V0ZXJIZWlnaHQoKTtcbiAgICAgICAgdmFyIGhhbGZIID0gaCAvIDI7IC8vIGhhbmRsZSBub2RlIGRpbWVuc2lvbnNcbiAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGV4MSA9IHggLSBoYWxmVztcbiAgICAgICAgZXgyID0geCArIGhhbGZXO1xuICAgICAgICBleTEgPSB5IC0gaGFsZkg7XG4gICAgICAgIGV5MiA9IHkgKyBoYWxmSDtcbiAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxLCBleTEsIGV4MiwgZXkyKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNFZGdlICYmIG9wdGlvbnMuaW5jbHVkZUVkZ2VzKSB7XG4gICAgICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgIWhlYWRsZXNzKSB7XG4gICAgICAgICAgdmFyIGN1cnZlU3R5bGUgPSBlbGUucHN0eWxlKCdjdXJ2ZS1zdHlsZScpLnN0clZhbHVlOyAvLyBoYW5kbGUgZWRnZSBkaW1lbnNpb25zIChyb3VnaCBib3ggZXN0aW1hdGUpXG4gICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgICAgZXgxID0gTWF0aC5taW4ocnN0eWxlLnNyY1gsIHJzdHlsZS5taWRYLCByc3R5bGUudGd0WCk7XG4gICAgICAgICAgZXgyID0gTWF0aC5tYXgocnN0eWxlLnNyY1gsIHJzdHlsZS5taWRYLCByc3R5bGUudGd0WCk7XG4gICAgICAgICAgZXkxID0gTWF0aC5taW4ocnN0eWxlLnNyY1ksIHJzdHlsZS5taWRZLCByc3R5bGUudGd0WSk7XG4gICAgICAgICAgZXkyID0gTWF0aC5tYXgocnN0eWxlLnNyY1ksIHJzdHlsZS5taWRZLCByc3R5bGUudGd0WSk7IC8vIHRha2UgaW50byBhY2NvdW50IGVkZ2Ugd2lkdGhcblxuICAgICAgICAgIGV4MSAtPSB3SGFsZjtcbiAgICAgICAgICBleDIgKz0gd0hhbGY7XG4gICAgICAgICAgZXkxIC09IHdIYWxmO1xuICAgICAgICAgIGV5MiArPSB3SGFsZjtcbiAgICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEsIGV5MSwgZXgyLCBleTIpOyAvLyBwcmVjaXNlIGVkZ2VzXG4gICAgICAgICAgLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgICAgaWYgKGN1cnZlU3R5bGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgICAgICAgIHZhciBocHRzID0gcnN0eWxlLmhheXN0YWNrUHRzO1xuXG4gICAgICAgICAgICBpZiAoaHB0cyAmJiBocHRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICBleDEgPSBocHRzWzBdLng7XG4gICAgICAgICAgICAgIGV5MSA9IGhwdHNbMF0ueTtcbiAgICAgICAgICAgICAgZXgyID0gaHB0c1sxXS54O1xuICAgICAgICAgICAgICBleTIgPSBocHRzWzFdLnk7XG5cbiAgICAgICAgICAgICAgaWYgKGV4MSA+IGV4Mikge1xuICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gZXgxO1xuICAgICAgICAgICAgICAgIGV4MSA9IGV4MjtcbiAgICAgICAgICAgICAgICBleDIgPSB0ZW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGV5MSA+IGV5Mikge1xuICAgICAgICAgICAgICAgIHZhciBfdGVtcCA9IGV5MTtcbiAgICAgICAgICAgICAgICBleTEgPSBleTI7XG4gICAgICAgICAgICAgICAgZXkyID0gX3RlbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBleDEgLSB3SGFsZiwgZXkxIC0gd0hhbGYsIGV4MiArIHdIYWxmLCBleTIgKyB3SGFsZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJ2ZVN0eWxlID09PSAnYmV6aWVyJyB8fCBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAndGF4aScpIHtcbiAgICAgICAgICAgIHZhciBwdHM7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoY3VydmVTdHlsZSkge1xuICAgICAgICAgICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICAgICAgICBjYXNlICd1bmJ1bmRsZWQtYmV6aWVyJzpcbiAgICAgICAgICAgICAgICBwdHMgPSByc3R5bGUuYmV6aWVyUHRzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ3NlZ21lbnRzJzpcbiAgICAgICAgICAgICAgY2FzZSAndGF4aSc6XG4gICAgICAgICAgICAgICAgcHRzID0gcnN0eWxlLmxpbmVQdHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwdHMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHB0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBwdCA9IHB0c1tqXTtcbiAgICAgICAgICAgICAgICBleDEgPSBwdC54IC0gd0hhbGY7XG4gICAgICAgICAgICAgICAgZXgyID0gcHQueCArIHdIYWxmO1xuICAgICAgICAgICAgICAgIGV5MSA9IHB0LnkgLSB3SGFsZjtcbiAgICAgICAgICAgICAgICBleTIgPSBwdC55ICsgd0hhbGY7XG4gICAgICAgICAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxLCBleTEsIGV4MiwgZXkyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gYmV6aWVyLWxpa2Ugb3Igc2VnbWVudC1saWtlIGVkZ2VcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGhlYWRsZXNzIG9yIHN0eWxlIGRpc2FibGVkXG4gICAgICAgICAgLy8gZmFsbGJhY2sgb24gc291cmNlIGFuZCB0YXJnZXQgcG9zaXRpb25zXG4gICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgICAgdmFyIG4xID0gZWxlLnNvdXJjZSgpO1xuICAgICAgICAgIHZhciBuMXBvcyA9IG4xLnBvc2l0aW9uKCk7XG4gICAgICAgICAgdmFyIG4yID0gZWxlLnRhcmdldCgpO1xuICAgICAgICAgIHZhciBuMnBvcyA9IG4yLnBvc2l0aW9uKCk7XG4gICAgICAgICAgZXgxID0gbjFwb3MueDtcbiAgICAgICAgICBleDIgPSBuMnBvcy54O1xuICAgICAgICAgIGV5MSA9IG4xcG9zLnk7XG4gICAgICAgICAgZXkyID0gbjJwb3MueTtcblxuICAgICAgICAgIGlmIChleDEgPiBleDIpIHtcbiAgICAgICAgICAgIHZhciBfdGVtcDIgPSBleDE7XG4gICAgICAgICAgICBleDEgPSBleDI7XG4gICAgICAgICAgICBleDIgPSBfdGVtcDI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV5MSA+IGV5Mikge1xuICAgICAgICAgICAgdmFyIF90ZW1wMyA9IGV5MTtcbiAgICAgICAgICAgIGV5MSA9IGV5MjtcbiAgICAgICAgICAgIGV5MiA9IF90ZW1wMztcbiAgICAgICAgICB9IC8vIHRha2UgaW50byBhY2NvdW50IGVkZ2Ugd2lkdGhcblxuXG4gICAgICAgICAgZXgxIC09IHdIYWxmO1xuICAgICAgICAgIGV4MiArPSB3SGFsZjtcbiAgICAgICAgICBleTEgLT0gd0hhbGY7XG4gICAgICAgICAgZXkyICs9IHdIYWxmO1xuICAgICAgICAgIHVwZGF0ZUJvdW5kcyhib3VuZHMsIGV4MSwgZXkxLCBleDIsIGV5Mik7XG4gICAgICAgIH0gLy8gaGVhZGxlc3Mgb3Igc3R5bGUgZGlzYWJsZWRcblxuICAgICAgfSAvLyBlZGdlc1xuICAgICAgLy8gaGFuZGxlIGVkZ2UgYXJyb3cgc2l6ZVxuICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5cbiAgICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlRWRnZXMgJiYgaXNFZGdlKSB7XG4gICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21BcnJvdyhib3VuZHMsIGVsZSwgJ21pZC1zb3VyY2UnKTtcbiAgICAgICAgdXBkYXRlQm91bmRzRnJvbUFycm93KGJvdW5kcywgZWxlLCAnbWlkLXRhcmdldCcpO1xuICAgICAgICB1cGRhdGVCb3VuZHNGcm9tQXJyb3coYm91bmRzLCBlbGUsICdzb3VyY2UnKTtcbiAgICAgICAgdXBkYXRlQm91bmRzRnJvbUFycm93KGJvdW5kcywgZWxlLCAndGFyZ2V0Jyk7XG4gICAgICB9IC8vIGdob3N0XG4gICAgICAvLy8vLy8vL1xuXG5cbiAgICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgICAgdmFyIGdob3N0ID0gZWxlLnBzdHlsZSgnZ2hvc3QnKS52YWx1ZSA9PT0gJ3llcyc7XG5cbiAgICAgICAgaWYgKGdob3N0KSB7XG4gICAgICAgICAgdmFyIGd4ID0gZWxlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgICAgICAgIHZhciBneSA9IGVsZS5wc3R5bGUoJ2dob3N0LW9mZnNldC15JykucGZWYWx1ZTtcbiAgICAgICAgICB1cGRhdGVCb3VuZHMoYm91bmRzLCBib3VuZHMueDEgKyBneCwgYm91bmRzLnkxICsgZ3ksIGJvdW5kcy54MiArIGd4LCBib3VuZHMueTIgKyBneSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gYWx3YXlzIHN0b3JlIHRoZSBib2R5IGJvdW5kcyBzZXBhcmF0ZWx5IGZyb20gdGhlIGxhYmVsc1xuXG5cbiAgICAgIHZhciBiYkJvZHkgPSBfcC5ib2R5Qm91bmRzID0gX3AuYm9keUJvdW5kcyB8fCB7fTtcbiAgICAgIGFzc2lnbkJvdW5kaW5nQm94KGJiQm9keSwgYm91bmRzKTtcbiAgICAgIGV4cGFuZEJvdW5kaW5nQm94U2lkZXMoYmJCb2R5LCBtYW51YWxFeHBhbnNpb24pO1xuICAgICAgZXhwYW5kQm91bmRpbmdCb3goYmJCb2R5LCAxKTsgLy8gZXhwYW5kIHRvIHdvcmsgYXJvdW5kIGJyb3dzZXIgZGltZW5zaW9uIGluYWNjdXJhY2llc1xuICAgICAgLy8gb3ZlcmxheVxuICAgICAgLy8vLy8vLy8vL1xuXG4gICAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICAgIGV4MSA9IGJvdW5kcy54MTtcbiAgICAgICAgZXgyID0gYm91bmRzLngyO1xuICAgICAgICBleTEgPSBib3VuZHMueTE7XG4gICAgICAgIGV5MiA9IGJvdW5kcy55MjtcbiAgICAgICAgdXBkYXRlQm91bmRzKGJvdW5kcywgZXgxIC0gcGFkZGluZywgZXkxIC0gcGFkZGluZywgZXgyICsgcGFkZGluZywgZXkyICsgcGFkZGluZyk7XG4gICAgICB9IC8vIGFsd2F5cyBzdG9yZSB0aGUgYm9keSBib3VuZHMgc2VwYXJhdGVseSBmcm9tIHRoZSBsYWJlbHNcblxuXG4gICAgICB2YXIgYmJPdmVybGF5ID0gX3Aub3ZlcmxheUJvdW5kcyA9IF9wLm92ZXJsYXlCb3VuZHMgfHwge307XG4gICAgICBhc3NpZ25Cb3VuZGluZ0JveChiYk92ZXJsYXksIGJvdW5kcyk7XG4gICAgICBleHBhbmRCb3VuZGluZ0JveFNpZGVzKGJiT3ZlcmxheSwgbWFudWFsRXhwYW5zaW9uKTtcbiAgICAgIGV4cGFuZEJvdW5kaW5nQm94KGJiT3ZlcmxheSwgMSk7IC8vIGV4cGFuZCB0byB3b3JrIGFyb3VuZCBicm93c2VyIGRpbWVuc2lvbiBpbmFjY3VyYWNpZXNcbiAgICAgIC8vIGhhbmRsZSBsYWJlbCBkaW1lbnNpb25zXG4gICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICB2YXIgYmJMYWJlbHMgPSBfcC5sYWJlbEJvdW5kcyA9IF9wLmxhYmVsQm91bmRzIHx8IHt9O1xuXG4gICAgICBpZiAoYmJMYWJlbHMuYWxsICE9IG51bGwpIHtcbiAgICAgICAgY2xlYXJCb3VuZGluZ0JveChiYkxhYmVscy5hbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmJMYWJlbHMuYWxsID0gbWFrZUJvdW5kaW5nQm94KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdHlsZUVuYWJsZWQgJiYgb3B0aW9ucy5pbmNsdWRlTGFiZWxzKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVNYWluTGFiZWxzKSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUxhYmVsKGJvdW5kcywgZWxlLCBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5pbmNsdWRlU291cmNlTGFiZWxzKSB7XG4gICAgICAgICAgICB1cGRhdGVCb3VuZHNGcm9tTGFiZWwoYm91bmRzLCBlbGUsICdzb3VyY2UnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3B0aW9ucy5pbmNsdWRlVGFyZ2V0TGFiZWxzKSB7XG4gICAgICAgICAgICB1cGRhdGVCb3VuZHNGcm9tTGFiZWwoYm91bmRzLCBlbGUsICd0YXJnZXQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gLy8gc3R5bGUgZW5hYmxlZCBmb3IgbGFiZWxzXG5cbiAgICB9IC8vIGlmIGRpc3BsYXllZFxuXG5cbiAgICBib3VuZHMueDEgPSBub25pbmYoYm91bmRzLngxKTtcbiAgICBib3VuZHMueTEgPSBub25pbmYoYm91bmRzLnkxKTtcbiAgICBib3VuZHMueDIgPSBub25pbmYoYm91bmRzLngyKTtcbiAgICBib3VuZHMueTIgPSBub25pbmYoYm91bmRzLnkyKTtcbiAgICBib3VuZHMudyA9IG5vbmluZihib3VuZHMueDIgLSBib3VuZHMueDEpO1xuICAgIGJvdW5kcy5oID0gbm9uaW5mKGJvdW5kcy55MiAtIGJvdW5kcy55MSk7XG5cbiAgICBpZiAoYm91bmRzLncgPiAwICYmIGJvdW5kcy5oID4gMCAmJiBkaXNwbGF5ZWQpIHtcbiAgICAgIGV4cGFuZEJvdW5kaW5nQm94U2lkZXMoYm91bmRzLCBtYW51YWxFeHBhbnNpb24pOyAvLyBleHBhbmQgYm91bmRzIGJ5IDEgYmVjYXVzZSBhbnRpYWxpYXNpbmcgY2FuIGluY3JlYXNlIHRoZSB2aXN1YWwvZWZmZWN0aXZlIHNpemUgYnkgMSBvbiBhbGwgc2lkZXNcblxuICAgICAgZXhwYW5kQm91bmRpbmdCb3goYm91bmRzLCAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmRzO1xuICB9O1xuXG4gIHZhciBnZXRLZXkgPSBmdW5jdGlvbiBnZXRLZXkob3B0cykge1xuICAgIHZhciBpID0gMDtcblxuICAgIHZhciB0ZiA9IGZ1bmN0aW9uIHRmKHZhbCkge1xuICAgICAgcmV0dXJuICh2YWwgPyAxIDogMCkgPDwgaSsrO1xuICAgIH07XG5cbiAgICB2YXIga2V5ID0gMDtcbiAgICBrZXkgKz0gdGYob3B0cy5pbmN1ZGVOb2Rlcyk7XG4gICAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZUVkZ2VzKTtcbiAgICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlTGFiZWxzKTtcbiAgICBrZXkgKz0gdGYob3B0cy5pbmNsdWRlTWFpbkxhYmVscyk7XG4gICAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZVNvdXJjZUxhYmVscyk7XG4gICAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZVRhcmdldExhYmVscyk7XG4gICAga2V5ICs9IHRmKG9wdHMuaW5jbHVkZU92ZXJsYXlzKTtcbiAgICByZXR1cm4ga2V5O1xuICB9O1xuXG4gIHZhciBnZXRCb3VuZGluZ0JveFBvc0tleSA9IGZ1bmN0aW9uIGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSkge1xuICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgIHZhciBwMSA9IGVsZS5zb3VyY2UoKS5wb3NpdGlvbigpO1xuICAgICAgdmFyIHAyID0gZWxlLnRhcmdldCgpLnBvc2l0aW9uKCk7XG5cbiAgICAgIHZhciByID0gZnVuY3Rpb24gcih4KSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHgpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGhhc2hJbnRzQXJyYXkoW3IocDEueCksIHIocDEueSksIHIocDIueCksIHIocDIueSldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9O1xuXG4gIHZhciBjYWNoZWRCb3VuZGluZ0JveEltcGwgPSBmdW5jdGlvbiBjYWNoZWRCb3VuZGluZ0JveEltcGwoZWxlLCBvcHRzKSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBiYjtcbiAgICB2YXIgaXNFZGdlID0gZWxlLmlzRWRnZSgpO1xuICAgIHZhciBrZXkgPSBvcHRzID09IG51bGwgPyBkZWZCYk9wdHNLZXkgOiBnZXRLZXkob3B0cyk7XG4gICAgdmFyIHVzaW5nRGVmT3B0cyA9IGtleSA9PT0gZGVmQmJPcHRzS2V5O1xuICAgIHZhciBjdXJyUG9zS2V5ID0gZ2V0Qm91bmRpbmdCb3hQb3NLZXkoZWxlKTtcbiAgICB2YXIgaXNQb3NLZXlTYW1lID0gX3AuYmJDYWNoZVBvc0tleSA9PT0gY3VyclBvc0tleTtcbiAgICB2YXIgdXNlQ2FjaGUgPSBvcHRzLnVzZUNhY2hlICYmIGlzUG9zS2V5U2FtZTtcblxuICAgIHZhciBpc0RpcnR5ID0gZnVuY3Rpb24gaXNEaXJ0eShlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuYmJDYWNoZSA9PSBudWxsIHx8IGVsZS5fcHJpdmF0ZS5zdHlsZURpcnR5O1xuICAgIH07XG5cbiAgICB2YXIgbmVlZFJlY2FsYyA9ICF1c2VDYWNoZSB8fCBpc0RpcnR5KGVsZSkgfHwgaXNFZGdlICYmIGlzRGlydHkoZWxlLnNvdXJjZSgpKSB8fCBpc0RpcnR5KGVsZS50YXJnZXQoKSk7XG5cbiAgICBpZiAobmVlZFJlY2FsYykge1xuICAgICAgaWYgKCFpc1Bvc0tleVNhbWUpIHtcbiAgICAgICAgZWxlLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh1c2VDYWNoZSk7XG4gICAgICB9XG5cbiAgICAgIGJiID0gYm91bmRpbmdCb3hJbXBsKGVsZSwgZGVmQmJPcHRzKTtcbiAgICAgIF9wLmJiQ2FjaGUgPSBiYjtcbiAgICAgIF9wLmJiQ2FjaGVQb3NLZXkgPSBjdXJyUG9zS2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICBiYiA9IF9wLmJiQ2FjaGU7XG4gICAgfSAvLyBub3QgdXNpbmcgZGVmIG9wdHMgPT4gbmVlZCB0byBidWlsZCB1cCBiYiBmcm9tIGNvbWJpbmF0aW9uIG9mIHN1YiBiYnNcblxuXG4gICAgaWYgKCF1c2luZ0RlZk9wdHMpIHtcbiAgICAgIHZhciBpc05vZGUgPSBlbGUuaXNOb2RlKCk7XG4gICAgICBiYiA9IG1ha2VCb3VuZGluZ0JveCgpO1xuXG4gICAgICBpZiAob3B0cy5pbmNsdWRlTm9kZXMgJiYgaXNOb2RlIHx8IG9wdHMuaW5jbHVkZUVkZ2VzICYmICFpc05vZGUpIHtcbiAgICAgICAgaWYgKG9wdHMuaW5jbHVkZU92ZXJsYXlzKSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3Aub3ZlcmxheUJvdW5kcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3AuYm9keUJvdW5kcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuaW5jbHVkZUxhYmVscykge1xuICAgICAgICBpZiAob3B0cy5pbmNsdWRlTWFpbkxhYmVscyAmJiAoIWlzRWRnZSB8fCBvcHRzLmluY2x1ZGVTb3VyY2VMYWJlbHMgJiYgb3B0cy5pbmNsdWRlVGFyZ2V0TGFiZWxzKSkge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLmFsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG9wdHMuaW5jbHVkZU1haW5MYWJlbHMpIHtcbiAgICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLm1haW5Sb3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcHRzLmluY2x1ZGVTb3VyY2VMYWJlbHMpIHtcbiAgICAgICAgICAgIHVwZGF0ZUJvdW5kc0Zyb21Cb3goYmIsIF9wLmxhYmVsQm91bmRzLnNvdXJjZVJvdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG9wdHMuaW5jbHVkZVRhcmdldExhYmVscykge1xuICAgICAgICAgICAgdXBkYXRlQm91bmRzRnJvbUJveChiYiwgX3AubGFiZWxCb3VuZHMudGFyZ2V0Um90KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYmIudyA9IGJiLngyIC0gYmIueDE7XG4gICAgICBiYi5oID0gYmIueTIgLSBiYi55MTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmI7XG4gIH07XG5cbiAgdmFyIGRlZkJiT3B0cyA9IHtcbiAgICBpbmNsdWRlTm9kZXM6IHRydWUsXG4gICAgaW5jbHVkZUVkZ2VzOiB0cnVlLFxuICAgIGluY2x1ZGVMYWJlbHM6IHRydWUsXG4gICAgaW5jbHVkZU1haW5MYWJlbHM6IHRydWUsXG4gICAgaW5jbHVkZVNvdXJjZUxhYmVsczogdHJ1ZSxcbiAgICBpbmNsdWRlVGFyZ2V0TGFiZWxzOiB0cnVlLFxuICAgIGluY2x1ZGVPdmVybGF5czogdHJ1ZSxcbiAgICBpbmNsdWRlVW5kZXJsYXlzOiB0cnVlLFxuICAgIHVzZUNhY2hlOiB0cnVlXG4gIH07XG4gIHZhciBkZWZCYk9wdHNLZXkgPSBnZXRLZXkoZGVmQmJPcHRzKTtcbiAgdmFyIGZpbGxlZEJiT3B0cyA9IGRlZmF1bHRzJGcoZGVmQmJPcHRzKTtcblxuICBlbGVzZm4kYi5ib3VuZGluZ0JveCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIGJvdW5kczsgLy8gdGhlIG1haW4gdXNlY2FzZSBpcyBlbGUuYm91bmRpbmdCb3goKSBmb3IgYSBzaW5nbGUgZWxlbWVudCB3aXRoIG5vL2RlZiBvcHRpb25zXG4gICAgLy8gc3BlY2lmaWVkIHMudC4gdGhlIGNhY2hlIGlzIHVzZWQsIHNvIGNoZWNrIGZvciB0aGlzIGNhc2UgdG8gbWFrZSBpdCBmYXN0ZXIgYnlcbiAgICAvLyBhdm9pZGluZyB0aGUgb3ZlcmhlYWQgb2YgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uXG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpc1swXS5fcHJpdmF0ZS5iYkNhY2hlICE9IG51bGwgJiYgIXRoaXNbMF0uX3ByaXZhdGUuc3R5bGVEaXJ0eSAmJiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMudXNlQ2FjaGUgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnVzZUNhY2hlID09PSB0cnVlKSkge1xuICAgICAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRpb25zID0gZGVmQmJPcHRzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IGZpbGxlZEJiT3B0cyhvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgYm91bmRzID0gY2FjaGVkQm91bmRpbmdCb3hJbXBsKHRoaXNbMF0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3VuZHMgPSBtYWtlQm91bmRpbmdCb3goKTtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IGRlZkJiT3B0cztcbiAgICAgIHZhciBvcHRzID0gZmlsbGVkQmJPcHRzKG9wdGlvbnMpO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuICAgICAgdmFyIGN5ID0gZWxlcy5jeSgpO1xuICAgICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuXG4gICAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgICAgICB2YXIgY3VyclBvc0tleSA9IGdldEJvdW5kaW5nQm94UG9zS2V5KGVsZSk7XG4gICAgICAgICAgdmFyIGlzUG9zS2V5U2FtZSA9IF9wLmJiQ2FjaGVQb3NLZXkgPT09IGN1cnJQb3NLZXk7XG4gICAgICAgICAgdmFyIHVzZUNhY2hlID0gb3B0cy51c2VDYWNoZSAmJiBpc1Bvc0tleVNhbWUgJiYgIV9wLnN0eWxlRGlydHk7XG4gICAgICAgICAgZWxlLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh1c2VDYWNoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVDb21wb3VuZEJvdW5kcyghb3B0aW9ucy51c2VDYWNoZSk7XG5cbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBlbGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgX2VsZSA9IGVsZXNbX2ldO1xuICAgICAgICB1cGRhdGVCb3VuZHNGcm9tQm94KGJvdW5kcywgY2FjaGVkQm91bmRpbmdCb3hJbXBsKF9lbGUsIG9wdHMpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBib3VuZHMueDEgPSBub25pbmYoYm91bmRzLngxKTtcbiAgICBib3VuZHMueTEgPSBub25pbmYoYm91bmRzLnkxKTtcbiAgICBib3VuZHMueDIgPSBub25pbmYoYm91bmRzLngyKTtcbiAgICBib3VuZHMueTIgPSBub25pbmYoYm91bmRzLnkyKTtcbiAgICBib3VuZHMudyA9IG5vbmluZihib3VuZHMueDIgLSBib3VuZHMueDEpO1xuICAgIGJvdW5kcy5oID0gbm9uaW5mKGJvdW5kcy55MiAtIGJvdW5kcy55MSk7XG4gICAgcmV0dXJuIGJvdW5kcztcbiAgfTtcblxuICBlbGVzZm4kYi5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzW2ldLl9wcml2YXRlO1xuICAgICAgX3AuYmJDYWNoZSA9IG51bGw7XG4gICAgICBfcC5iYkNhY2hlUG9zS2V5ID0gbnVsbDtcbiAgICAgIF9wLmJvZHlCb3VuZHMgPSBudWxsO1xuICAgICAgX3Aub3ZlcmxheUJvdW5kcyA9IG51bGw7XG4gICAgICBfcC5sYWJlbEJvdW5kcy5hbGwgPSBudWxsO1xuICAgICAgX3AubGFiZWxCb3VuZHMuc291cmNlID0gbnVsbDtcbiAgICAgIF9wLmxhYmVsQm91bmRzLnRhcmdldCA9IG51bGw7XG4gICAgICBfcC5sYWJlbEJvdW5kcy5tYWluID0gbnVsbDtcbiAgICAgIF9wLmxhYmVsQm91bmRzLnNvdXJjZVJvdCA9IG51bGw7XG4gICAgICBfcC5sYWJlbEJvdW5kcy50YXJnZXRSb3QgPSBudWxsO1xuICAgICAgX3AubGFiZWxCb3VuZHMubWFpblJvdCA9IG51bGw7XG4gICAgICBfcC5hcnJvd0JvdW5kcy5zb3VyY2UgPSBudWxsO1xuICAgICAgX3AuYXJyb3dCb3VuZHMudGFyZ2V0ID0gbnVsbDtcbiAgICAgIF9wLmFycm93Qm91bmRzWydtaWQtc291cmNlJ10gPSBudWxsO1xuICAgICAgX3AuYXJyb3dCb3VuZHNbJ21pZC10YXJnZXQnXSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdib3VuZHMnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTsgLy8gcHJpdmF0ZSBoZWxwZXIgdG8gZ2V0IGJvdW5kaW5nIGJveCBmb3IgY3VzdG9tIG5vZGUgcG9zaXRpb25zXG4gIC8vIC0gZ29vZCBmb3IgcGVyZiBpbiBjZXJ0YWluIGNhc2VzIGJ1dCBjdXJyZW50bHkgcmVxdWlyZXMgZGlydHlpbmcgdGhlIHJlbmRlcmVkIHN0eWxlXG4gIC8vIC0gd291bGQgYmUgYmV0dGVyIHRvIG5vdCBtb2RpZnkgdGhlIG5vZGVzIGJ1dCB0aGUgbm9kZXMgYXJlIHJlYWQgZGlyZWN0bHkgZXZlcnl3aGVyZSBpbiB0aGUgcmVuZGVyZXIuLi5cbiAgLy8gLSB0cnkgdG8gdXNlIGZvciBvbmx5IHRoaW5ncyBsaWtlIGRpc2NyZXRlIGxheW91dHMgd2hlcmUgdGhlIG5vZGUgcG9zaXRpb24gd291bGQgY2hhbmdlIGFueXdheVxuXG5cbiAgZWxlc2ZuJGIuYm91bmRpbmdCb3hBdCA9IGZ1bmN0aW9uIChmbikge1xuICAgIHZhciBub2RlcyA9IHRoaXMubm9kZXMoKTtcbiAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgdmFyIGhhc0NvbXBvdW5kTm9kZXMgPSBjeS5oYXNDb21wb3VuZE5vZGVzKCk7XG4gICAgdmFyIHBhcmVudHMgPSBjeS5jb2xsZWN0aW9uKCk7XG5cbiAgICBpZiAoaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgcGFyZW50cyA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5pc1BhcmVudCgpO1xuICAgICAgfSk7XG4gICAgICBub2RlcyA9IG5vZGVzLm5vdChwYXJlbnRzKTtcbiAgICB9XG5cbiAgICBpZiAocGxhaW5PYmplY3QoZm4pKSB7XG4gICAgICB2YXIgb2JqID0gZm47XG5cbiAgICAgIGZuID0gZnVuY3Rpb24gZm4oKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBzdG9yZU9sZFBvcyA9IGZ1bmN0aW9uIHN0b3JlT2xkUG9zKG5vZGUsIGkpIHtcbiAgICAgIHJldHVybiBub2RlLl9wcml2YXRlLmJiQXRPbGRQb3MgPSBmbihub2RlLCBpKTtcbiAgICB9O1xuXG4gICAgdmFyIGdldE9sZFBvcyA9IGZ1bmN0aW9uIGdldE9sZFBvcyhub2RlKSB7XG4gICAgICByZXR1cm4gbm9kZS5fcHJpdmF0ZS5iYkF0T2xkUG9zO1xuICAgIH07XG5cbiAgICBjeS5zdGFydEJhdGNoKCk7XG4gICAgbm9kZXMuZm9yRWFjaChzdG9yZU9sZFBvcykuc2lsZW50UG9zaXRpb25zKGZuKTtcblxuICAgIGlmIChoYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgICBwYXJlbnRzLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuICAgICAgcGFyZW50cy5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcbiAgICAgIHBhcmVudHMudXBkYXRlQ29tcG91bmRCb3VuZHModHJ1ZSk7IC8vIGZvcmNlIHVwZGF0ZSBiL2Mgd2UncmUgaW5zaWRlIGEgYmF0Y2ggY3ljbGVcbiAgICB9XG5cbiAgICB2YXIgYmIgPSBjb3B5Qm91bmRpbmdCb3godGhpcy5ib3VuZGluZ0JveCh7XG4gICAgICB1c2VDYWNoZTogZmFsc2VcbiAgICB9KSk7XG4gICAgbm9kZXMuc2lsZW50UG9zaXRpb25zKGdldE9sZFBvcyk7XG5cbiAgICBpZiAoaGFzQ29tcG91bmROb2Rlcykge1xuICAgICAgcGFyZW50cy5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICAgIHBhcmVudHMuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgICBwYXJlbnRzLnVwZGF0ZUNvbXBvdW5kQm91bmRzKHRydWUpOyAvLyBmb3JjZSB1cGRhdGUgYi9jIHdlJ3JlIGluc2lkZSBhIGJhdGNoIGN5Y2xlXG4gICAgfVxuXG4gICAgY3kuZW5kQmF0Y2goKTtcbiAgICByZXR1cm4gYmI7XG4gIH07XG5cbiAgZm4kMy5ib3VuZGluZ2JveCA9IGZuJDMuYmIgPSBmbiQzLmJvdW5kaW5nQm94O1xuICBmbiQzLnJlbmRlcmVkQm91bmRpbmdib3ggPSBmbiQzLnJlbmRlcmVkQm91bmRpbmdCb3g7XG4gIHZhciBib3VuZHMgPSBlbGVzZm4kYjtcblxuICB2YXIgZm4kMiwgZWxlc2ZuJGE7XG4gIGZuJDIgPSBlbGVzZm4kYSA9IHt9O1xuXG4gIHZhciBkZWZpbmVEaW1GbnMgPSBmdW5jdGlvbiBkZWZpbmVEaW1GbnMob3B0cykge1xuICAgIG9wdHMudXBwZXJjYXNlTmFtZSA9IGNhcGl0YWxpemUob3B0cy5uYW1lKTtcbiAgICBvcHRzLmF1dG9OYW1lID0gJ2F1dG8nICsgb3B0cy51cHBlcmNhc2VOYW1lO1xuICAgIG9wdHMubGFiZWxOYW1lID0gJ2xhYmVsJyArIG9wdHMudXBwZXJjYXNlTmFtZTtcbiAgICBvcHRzLm91dGVyTmFtZSA9ICdvdXRlcicgKyBvcHRzLnVwcGVyY2FzZU5hbWU7XG4gICAgb3B0cy51cHBlcmNhc2VPdXRlck5hbWUgPSBjYXBpdGFsaXplKG9wdHMub3V0ZXJOYW1lKTtcblxuICAgIGZuJDJbb3B0cy5uYW1lXSA9IGZ1bmN0aW9uIGRpbUltcGwoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgIHZhciBjeSA9IF9wLmN5O1xuICAgICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5Ll9wcml2YXRlLnN0eWxlRW5hYmxlZDtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICBpZiAoc3R5bGVFbmFibGVkKSB7XG4gICAgICAgICAgaWYgKGVsZS5pc1BhcmVudCgpKSB7XG4gICAgICAgICAgICBlbGUudXBkYXRlQ29tcG91bmRCb3VuZHMoKTtcbiAgICAgICAgICAgIHJldHVybiBfcFtvcHRzLmF1dG9OYW1lXSB8fCAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBkID0gZWxlLnBzdHlsZShvcHRzLm5hbWUpO1xuXG4gICAgICAgICAgc3dpdGNoIChkLnN0clZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdsYWJlbCc6XG4gICAgICAgICAgICAgIGVsZS5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9wLnJzdHlsZVtvcHRzLmxhYmVsTmFtZV0gfHwgMDtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGQucGZWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm4kMlsnb3V0ZXInICsgb3B0cy51cHBlcmNhc2VOYW1lXSA9IGZ1bmN0aW9uIG91dGVyRGltSW1wbCgpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIGN5ID0gX3AuY3k7XG4gICAgICB2YXIgc3R5bGVFbmFibGVkID0gY3kuX3ByaXZhdGUuc3R5bGVFbmFibGVkO1xuXG4gICAgICBpZiAoZWxlKSB7XG4gICAgICAgIGlmIChzdHlsZUVuYWJsZWQpIHtcbiAgICAgICAgICB2YXIgZGltID0gZWxlW29wdHMubmFtZV0oKTtcbiAgICAgICAgICB2YXIgYm9yZGVyID0gZWxlLnBzdHlsZSgnYm9yZGVyLXdpZHRoJykucGZWYWx1ZTsgLy8gbi5iLiAxLzIgZWFjaCBzaWRlXG5cbiAgICAgICAgICB2YXIgcGFkZGluZyA9IDIgKiBlbGUucGFkZGluZygpO1xuICAgICAgICAgIHJldHVybiBkaW0gKyBib3JkZXIgKyBwYWRkaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZuJDJbJ3JlbmRlcmVkJyArIG9wdHMudXBwZXJjYXNlTmFtZV0gPSBmdW5jdGlvbiByZW5kZXJlZERpbUltcGwoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICB2YXIgZCA9IGVsZVtvcHRzLm5hbWVdKCk7XG4gICAgICAgIHJldHVybiBkICogdGhpcy5jeSgpLnpvb20oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm4kMlsncmVuZGVyZWQnICsgb3B0cy51cHBlcmNhc2VPdXRlck5hbWVdID0gZnVuY3Rpb24gcmVuZGVyZWRPdXRlckRpbUltcGwoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICB2YXIgb2QgPSBlbGVbb3B0cy5vdXRlck5hbWVdKCk7XG4gICAgICAgIHJldHVybiBvZCAqIHRoaXMuY3koKS56b29tKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBkZWZpbmVEaW1GbnMoe1xuICAgIG5hbWU6ICd3aWR0aCdcbiAgfSk7XG4gIGRlZmluZURpbUZucyh7XG4gICAgbmFtZTogJ2hlaWdodCdcbiAgfSk7XG5cbiAgZWxlc2ZuJGEucGFkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgIGVsZS51cGRhdGVDb21wb3VuZEJvdW5kcygpO1xuXG4gICAgICBpZiAoX3AuYXV0b1BhZGRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gX3AuYXV0b1BhZGRpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZWxlLnBzdHlsZSgncGFkZGluZycpLnBmVmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbGUucHN0eWxlKCdwYWRkaW5nJykucGZWYWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgZWxlc2ZuJGEucGFkZGVkSGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgIHJldHVybiBlbGUuaGVpZ2h0KCkgKyAyICogZWxlLnBhZGRpbmcoKTtcbiAgfTtcblxuICBlbGVzZm4kYS5wYWRkZWRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcbiAgICByZXR1cm4gZWxlLndpZHRoKCkgKyAyICogZWxlLnBhZGRpbmcoKTtcbiAgfTtcblxuICB2YXIgd2lkdGhIZWlnaHQgPSBlbGVzZm4kYTtcblxuICB2YXIgaWZFZGdlID0gZnVuY3Rpb24gaWZFZGdlKGVsZSwgZ2V0VmFsdWUpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICByZXR1cm4gZ2V0VmFsdWUoZWxlKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGlmRWRnZVJlbmRlcmVkUG9zaXRpb24gPSBmdW5jdGlvbiBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9uKGVsZSwgZ2V0UG9pbnQpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICAgIHJldHVybiBtb2RlbFRvUmVuZGVyZWRQb3NpdGlvbihnZXRQb2ludChlbGUpLCBjeS56b29tKCksIGN5LnBhbigpKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGlmRWRnZVJlbmRlcmVkUG9zaXRpb25zID0gZnVuY3Rpb24gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbnMoZWxlLCBnZXRQb2ludHMpIHtcbiAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICB2YXIgY3kgPSBlbGUuY3koKTtcbiAgICAgIHZhciBwYW4gPSBjeS5wYW4oKTtcbiAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgcmV0dXJuIGdldFBvaW50cyhlbGUpLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gbW9kZWxUb1JlbmRlcmVkUG9zaXRpb24ocCwgem9vbSwgcGFuKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICB2YXIgY29udHJvbFBvaW50cyA9IGZ1bmN0aW9uIGNvbnRyb2xQb2ludHMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldENvbnRyb2xQb2ludHMoZWxlKTtcbiAgfTtcblxuICB2YXIgc2VnbWVudFBvaW50cyA9IGZ1bmN0aW9uIHNlZ21lbnRQb2ludHMoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5yZW5kZXJlcigpLmdldFNlZ21lbnRQb2ludHMoZWxlKTtcbiAgfTtcblxuICB2YXIgc291cmNlRW5kcG9pbnQgPSBmdW5jdGlvbiBzb3VyY2VFbmRwb2ludChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0U291cmNlRW5kcG9pbnQoZWxlKTtcbiAgfTtcblxuICB2YXIgdGFyZ2V0RW5kcG9pbnQgPSBmdW5jdGlvbiB0YXJnZXRFbmRwb2ludChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0VGFyZ2V0RW5kcG9pbnQoZWxlKTtcbiAgfTtcblxuICB2YXIgbWlkcG9pbnQgPSBmdW5jdGlvbiBtaWRwb2ludChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnJlbmRlcmVyKCkuZ2V0RWRnZU1pZHBvaW50KGVsZSk7XG4gIH07XG5cbiAgdmFyIHB0cyA9IHtcbiAgICBjb250cm9sUG9pbnRzOiB7XG4gICAgICBnZXQ6IGNvbnRyb2xQb2ludHMsXG4gICAgICBtdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzZWdtZW50UG9pbnRzOiB7XG4gICAgICBnZXQ6IHNlZ21lbnRQb2ludHMsXG4gICAgICBtdWx0OiB0cnVlXG4gICAgfSxcbiAgICBzb3VyY2VFbmRwb2ludDoge1xuICAgICAgZ2V0OiBzb3VyY2VFbmRwb2ludFxuICAgIH0sXG4gICAgdGFyZ2V0RW5kcG9pbnQ6IHtcbiAgICAgIGdldDogdGFyZ2V0RW5kcG9pbnRcbiAgICB9LFxuICAgIG1pZHBvaW50OiB7XG4gICAgICBnZXQ6IG1pZHBvaW50XG4gICAgfVxuICB9O1xuXG4gIHZhciByZW5kZXJlZE5hbWUgPSBmdW5jdGlvbiByZW5kZXJlZE5hbWUobmFtZSkge1xuICAgIHJldHVybiAncmVuZGVyZWQnICsgbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zdWJzdHIoMSk7XG4gIH07XG5cbiAgdmFyIGVkZ2VQb2ludHMgPSBPYmplY3Qua2V5cyhwdHMpLnJlZHVjZShmdW5jdGlvbiAob2JqLCBuYW1lKSB7XG4gICAgdmFyIHNwZWMgPSBwdHNbbmFtZV07XG4gICAgdmFyIHJOYW1lID0gcmVuZGVyZWROYW1lKG5hbWUpO1xuXG4gICAgb2JqW25hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGlmRWRnZSh0aGlzLCBzcGVjLmdldCk7XG4gICAgfTtcblxuICAgIGlmIChzcGVjLm11bHQpIHtcbiAgICAgIG9ialtyTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBpZkVkZ2VSZW5kZXJlZFBvc2l0aW9ucyh0aGlzLCBzcGVjLmdldCk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpbck5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gaWZFZGdlUmVuZGVyZWRQb3NpdGlvbih0aGlzLCBzcGVjLmdldCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcblxuICB2YXIgZGltZW5zaW9ucyA9IGV4dGVuZCh7fSwgcG9zaXRpb24sIGJvdW5kcywgd2lkdGhIZWlnaHQsIGVkZ2VQb2ludHMpO1xuXG4gIC8qIVxuICBFdmVudCBvYmplY3QgYmFzZWQgb24galF1ZXJ5IGV2ZW50cywgTUlUIGxpY2Vuc2VcblxuICBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZS9cbiAgaHR0cHM6Ly90bGRybGVnYWwuY29tL2xpY2Vuc2UvbWl0LWxpY2Vuc2VcbiAgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvc3JjL2V2ZW50LmpzXG4gICovXG4gIHZhciBFdmVudCA9IGZ1bmN0aW9uIEV2ZW50KHNyYywgcHJvcHMpIHtcbiAgICB0aGlzLnJlY3ljbGUoc3JjLCBwcm9wcyk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0dXJuRmFsc2UoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmV0dXJuVHJ1ZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAzMDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWxcblxuXG4gIEV2ZW50LnByb3RvdHlwZSA9IHtcbiAgICBpbnN0YW5jZVN0cmluZzogZnVuY3Rpb24gaW5zdGFuY2VTdHJpbmcoKSB7XG4gICAgICByZXR1cm4gJ2V2ZW50JztcbiAgICB9LFxuICAgIHJlY3ljbGU6IGZ1bmN0aW9uIHJlY3ljbGUoc3JjLCBwcm9wcykge1xuICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVybkZhbHNlO1xuXG4gICAgICBpZiAoc3JjICE9IG51bGwgJiYgc3JjLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgIC8vIEJyb3dzZXIgRXZlbnQgb2JqZWN0XG4gICAgICAgIHRoaXMudHlwZSA9IHNyYy50eXBlOyAvLyBFdmVudHMgYnViYmxpbmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZFxuICAgICAgICAvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblxuICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkID8gcmV0dXJuVHJ1ZSA6IHJldHVybkZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChzcmMgIT0gbnVsbCAmJiBzcmMudHlwZSkge1xuICAgICAgICAvLyBQbGFpbiBvYmplY3QgY29udGFpbmluZyBhbGwgZXZlbnQgZGV0YWlsc1xuICAgICAgICBwcm9wcyA9IHNyYztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEV2ZW50IHN0cmluZ1xuICAgICAgICB0aGlzLnR5cGUgPSBzcmM7XG4gICAgICB9IC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cblxuICAgICAgaWYgKHByb3BzICE9IG51bGwpIHtcbiAgICAgICAgLy8gbW9yZSBlZmZpY2llbnQgdG8gbWFudWFsbHkgY29weSBmaWVsZHMgd2UgdXNlXG4gICAgICAgIHRoaXMub3JpZ2luYWxFdmVudCA9IHByb3BzLm9yaWdpbmFsRXZlbnQ7XG4gICAgICAgIHRoaXMudHlwZSA9IHByb3BzLnR5cGUgIT0gbnVsbCA/IHByb3BzLnR5cGUgOiB0aGlzLnR5cGU7XG4gICAgICAgIHRoaXMuY3kgPSBwcm9wcy5jeTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgICAgICAgdGhpcy5yZW5kZXJlZFBvc2l0aW9uID0gcHJvcHMucmVuZGVyZWRQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jeSAhPSBudWxsICYmIHRoaXMucG9zaXRpb24gIT0gbnVsbCAmJiB0aGlzLnJlbmRlcmVkUG9zaXRpb24gPT0gbnVsbCkge1xuICAgICAgICAvLyBjcmVhdGUgYSByZW5kZXJlZCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgcGFzc2VkIHBvc2l0aW9uXG4gICAgICAgIHZhciBwb3MgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICB2YXIgem9vbSA9IHRoaXMuY3kuem9vbSgpO1xuICAgICAgICB2YXIgcGFuID0gdGhpcy5jeS5wYW4oKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlZFBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IHBvcy54ICogem9vbSArIHBhbi54LFxuICAgICAgICAgIHk6IHBvcy55ICogem9vbSArIHBhbi55XG4gICAgICAgIH07XG4gICAgICB9IC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cblxuICAgICAgdGhpcy50aW1lU3RhbXAgPSBzcmMgJiYgc3JjLnRpbWVTdGFtcCB8fCBEYXRlLm5vdygpO1xuICAgIH0sXG4gICAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KCkge1xuICAgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSByZXR1cm5UcnVlO1xuICAgICAgdmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cbiAgICAgIGlmICghZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGlmIHByZXZlbnREZWZhdWx0IGV4aXN0cyBydW4gaXQgb24gdGhlIG9yaWdpbmFsIGV2ZW50XG5cblxuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiBzdG9wUHJvcGFnYXRpb24oKSB7XG4gICAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcbiAgICAgIHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG4gICAgICBpZiAoIWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBpZiBzdG9wUHJvcGFnYXRpb24gZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnRcblxuXG4gICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjogZnVuY3Rpb24gc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkge1xuICAgICAgdGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG4gICAgICB0aGlzLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0sXG4gICAgaXNEZWZhdWx0UHJldmVudGVkOiByZXR1cm5GYWxzZSxcbiAgICBpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG4gICAgaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlXG4gIH07XG5cbiAgdmFyIGV2ZW50UmVnZXggPSAvXihbXi5dKykoXFwuKD86W14uXSspKT8kLzsgLy8gcmVnZXggZm9yIG1hdGNoaW5nIGV2ZW50IHN0cmluZ3MgKGUuZy4gXCJjbGljay5uYW1lc3BhY2VcIilcblxuICB2YXIgdW5pdmVyc2FsTmFtZXNwYWNlID0gJy4qJzsgLy8gbWF0Y2hlcyBhcyBpZiBubyBuYW1lc3BhY2Ugc3BlY2lmaWVkIGFuZCBwcmV2ZW50cyB1c2VycyBmcm9tIHVuYmluZGluZyBhY2NpZGVudGFsbHlcblxuICB2YXIgZGVmYXVsdHMkOCA9IHtcbiAgICBxdWFsaWZpZXJDb21wYXJlOiBmdW5jdGlvbiBxdWFsaWZpZXJDb21wYXJlKHExLCBxMikge1xuICAgICAgcmV0dXJuIHExID09PSBxMjtcbiAgICB9LFxuICAgIGV2ZW50TWF0Y2hlczogZnVuY3Rpb25cbiAgICAgIC8qY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqKi9cbiAgICBldmVudE1hdGNoZXMoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvblxuICAgICAgLypjb250ZXh0LCBldnQqL1xuICAgIGFkZEV2ZW50RmllbGRzKCkge30sXG4gICAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoY29udGV4dFxuICAgIC8qLCBsaXN0ZW5lciwgZXZlbnRPYmoqL1xuICAgICkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBiZWZvcmVFbWl0OiBmdW5jdGlvblxuICAgICAgLyogY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqICovXG4gICAgYmVmb3JlRW1pdCgpIHt9LFxuICAgIGFmdGVyRW1pdDogZnVuY3Rpb25cbiAgICAgIC8qIGNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaiAqL1xuICAgIGFmdGVyRW1pdCgpIHt9LFxuICAgIGJ1YmJsZTogZnVuY3Rpb25cbiAgICAgIC8qY29udGV4dCovXG4gICAgYnViYmxlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgcGFyZW50OiBmdW5jdGlvblxuICAgICAgLypjb250ZXh0Ki9cbiAgICBwYXJlbnQoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIGNvbnRleHQ6IG51bGxcbiAgfTtcbiAgdmFyIGRlZmF1bHRzS2V5cyA9IE9iamVjdC5rZXlzKGRlZmF1bHRzJDgpO1xuICB2YXIgZW1wdHlPcHRzID0ge307XG5cbiAgZnVuY3Rpb24gRW1pdHRlcigpIHtcbiAgICB2YXIgb3B0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZW1wdHlPcHRzO1xuICAgIHZhciBjb250ZXh0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBtaWNyby1vcHRpbWlzYXRpb24gdnMgT2JqZWN0LmFzc2lnbigpIC0tIHJlZHVjZXMgRWxlbWVudCBpbnN0YW50aWF0aW9uIHRpbWVcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlZmF1bHRzS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGRlZmF1bHRzS2V5c1tpXTtcbiAgICAgIHRoaXNba2V5XSA9IG9wdHNba2V5XSB8fCBkZWZhdWx0cyQ4W2tleV07XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB0aGlzLmNvbnRleHQ7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLmVtaXR0aW5nID0gMDtcbiAgfVxuXG4gIHZhciBwID0gRW1pdHRlci5wcm90b3R5cGU7XG5cbiAgdmFyIGZvckVhY2hFdmVudCA9IGZ1bmN0aW9uIGZvckVhY2hFdmVudChzZWxmLCBoYW5kbGVyLCBldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYsIGNvbmZPdmVycmlkZXMpIHtcbiAgICBpZiAoZm4kNihxdWFsaWZpZXIpKSB7XG4gICAgICBjYWxsYmFjayA9IHF1YWxpZmllcjtcbiAgICAgIHF1YWxpZmllciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZPdmVycmlkZXMpIHtcbiAgICAgIGlmIChjb25mID09IG51bGwpIHtcbiAgICAgICAgY29uZiA9IGNvbmZPdmVycmlkZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25mID0gZXh0ZW5kKHt9LCBjb25mLCBjb25mT3ZlcnJpZGVzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZXZlbnRMaXN0ID0gYXJyYXkoZXZlbnRzKSA/IGV2ZW50cyA6IGV2ZW50cy5zcGxpdCgvXFxzKy8pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBldnQgPSBldmVudExpc3RbaV07XG5cbiAgICAgIGlmIChlbXB0eVN0cmluZyhldnQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbWF0Y2ggPSBldnQubWF0Y2goZXZlbnRSZWdleCk7IC8vIHR5cGVbLm5hbWVzcGFjZV1cblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHZhciB0eXBlID0gbWF0Y2hbMV07XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBtYXRjaFsyXSA/IG1hdGNoWzJdIDogbnVsbDtcbiAgICAgICAgdmFyIHJldCA9IGhhbmRsZXIoc2VsZiwgZXZ0LCB0eXBlLCBuYW1lc3BhY2UsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpO1xuXG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gYWxsb3cgZXhpdGluZyBlYXJseVxuXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBtYWtlRXZlbnRPYmogPSBmdW5jdGlvbiBtYWtlRXZlbnRPYmooc2VsZiwgb2JqKSB7XG4gICAgc2VsZi5hZGRFdmVudEZpZWxkcyhzZWxmLmNvbnRleHQsIG9iaik7XG4gICAgcmV0dXJuIG5ldyBFdmVudChvYmoudHlwZSwgb2JqKTtcbiAgfTtcblxuICB2YXIgZm9yRWFjaEV2ZW50T2JqID0gZnVuY3Rpb24gZm9yRWFjaEV2ZW50T2JqKHNlbGYsIGhhbmRsZXIsIGV2ZW50cykge1xuICAgIGlmIChldmVudChldmVudHMpKSB7XG4gICAgICBoYW5kbGVyKHNlbGYsIGV2ZW50cyk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChwbGFpbk9iamVjdChldmVudHMpKSB7XG4gICAgICBoYW5kbGVyKHNlbGYsIG1ha2VFdmVudE9iaihzZWxmLCBldmVudHMpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZXZlbnRMaXN0ID0gYXJyYXkoZXZlbnRzKSA/IGV2ZW50cyA6IGV2ZW50cy5zcGxpdCgvXFxzKy8pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBldnQgPSBldmVudExpc3RbaV07XG5cbiAgICAgIGlmIChlbXB0eVN0cmluZyhldnQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbWF0Y2ggPSBldnQubWF0Y2goZXZlbnRSZWdleCk7IC8vIHR5cGVbLm5hbWVzcGFjZV1cblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHZhciB0eXBlID0gbWF0Y2hbMV07XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSBtYXRjaFsyXSA/IG1hdGNoWzJdIDogbnVsbDtcbiAgICAgICAgdmFyIGV2ZW50T2JqID0gbWFrZUV2ZW50T2JqKHNlbGYsIHtcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIG5hbWVzcGFjZTogbmFtZXNwYWNlLFxuICAgICAgICAgIHRhcmdldDogc2VsZi5jb250ZXh0XG4gICAgICAgIH0pO1xuICAgICAgICBoYW5kbGVyKHNlbGYsIGV2ZW50T2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcC5vbiA9IHAuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCBjb25mT3ZlcnJpZGVzKSB7XG4gICAgZm9yRWFjaEV2ZW50KHRoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudCwgdHlwZSwgbmFtZXNwYWNlLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgICBpZiAoZm4kNihjYWxsYmFjaykpIHtcbiAgICAgICAgc2VsZi5saXN0ZW5lcnMucHVzaCh7XG4gICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIC8vIGZ1bGwgZXZlbnQgc3RyaW5nXG4gICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgIC8vIGNhbGxiYWNrIHRvIHJ1blxuICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgLy8gdGhlIGV2ZW50IHR5cGUgKGUuZy4gJ2NsaWNrJylcbiAgICAgICAgICBuYW1lc3BhY2U6IG5hbWVzcGFjZSxcbiAgICAgICAgICAvLyB0aGUgZXZlbnQgbmFtZXNwYWNlIChlLmcuIFwiLmZvb1wiKVxuICAgICAgICAgIHF1YWxpZmllcjogcXVhbGlmaWVyLFxuICAgICAgICAgIC8vIGEgcmVzdHJpY3Rpb24gb24gd2hldGhlciB0byBtYXRjaCB0aGlzIGVtaXR0ZXJcbiAgICAgICAgICBjb25mOiBjb25mIC8vIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvblxuXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIGV2ZW50cywgcXVhbGlmaWVyLCBjYWxsYmFjaywgY29uZiwgY29uZk92ZXJyaWRlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgcC5vbmUgPSBmdW5jdGlvbiAoZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgcmV0dXJuIHRoaXMub24oZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mLCB7XG4gICAgICBvbmU6IHRydWVcbiAgICB9KTtcbiAgfTtcblxuICBwLnJlbW92ZUxpc3RlbmVyID0gcC5vZmYgPSBmdW5jdGlvbiAoZXZlbnRzLCBxdWFsaWZpZXIsIGNhbGxiYWNrLCBjb25mKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLmVtaXR0aW5nICE9PSAwKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycyA9IGNvcHlBcnJheSQxKHRoaXMubGlzdGVuZXJzKTtcbiAgICB9XG5cbiAgICB2YXIgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnM7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7XG4gICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG4gICAgICBmb3JFYWNoRXZlbnQoX3RoaXMsIGZ1bmN0aW9uIChzZWxmLCBldmVudCwgdHlwZSwgbmFtZXNwYWNlLCBxdWFsaWZpZXIsIGNhbGxiYWNrXG4gICAgICAvKiwgY29uZiovXG4gICAgICApIHtcbiAgICAgICAgaWYgKChsaXN0ZW5lci50eXBlID09PSB0eXBlIHx8IGV2ZW50cyA9PT0gJyonKSAmJiAoIW5hbWVzcGFjZSAmJiBsaXN0ZW5lci5uYW1lc3BhY2UgIT09ICcuKicgfHwgbGlzdGVuZXIubmFtZXNwYWNlID09PSBuYW1lc3BhY2UpICYmICghcXVhbGlmaWVyIHx8IHNlbGYucXVhbGlmaWVyQ29tcGFyZShsaXN0ZW5lci5xdWFsaWZpZXIsIHF1YWxpZmllcikpICYmICghY2FsbGJhY2sgfHwgbGlzdGVuZXIuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSkge1xuICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LCBldmVudHMsIHF1YWxpZmllciwgY2FsbGJhY2ssIGNvbmYpO1xuICAgIH07XG5cbiAgICBmb3IgKHZhciBpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBfbG9vcChpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBwLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVMaXN0ZW5lcignKicpO1xuICB9O1xuXG4gIHAuZW1pdCA9IHAudHJpZ2dlciA9IGZ1bmN0aW9uIChldmVudHMsIGV4dHJhUGFyYW1zLCBtYW51YWxDYWxsYmFjaykge1xuICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycztcbiAgICB2YXIgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdCA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgdGhpcy5lbWl0dGluZysrO1xuXG4gICAgaWYgKCFhcnJheShleHRyYVBhcmFtcykpIHtcbiAgICAgIGV4dHJhUGFyYW1zID0gW2V4dHJhUGFyYW1zXTtcbiAgICB9XG5cbiAgICBmb3JFYWNoRXZlbnRPYmoodGhpcywgZnVuY3Rpb24gKHNlbGYsIGV2ZW50T2JqKSB7XG4gICAgICBpZiAobWFudWFsQ2FsbGJhY2sgIT0gbnVsbCkge1xuICAgICAgICBsaXN0ZW5lcnMgPSBbe1xuICAgICAgICAgIGV2ZW50OiBldmVudE9iai5ldmVudCxcbiAgICAgICAgICB0eXBlOiBldmVudE9iai50eXBlLFxuICAgICAgICAgIG5hbWVzcGFjZTogZXZlbnRPYmoubmFtZXNwYWNlLFxuICAgICAgICAgIGNhbGxiYWNrOiBtYW51YWxDYWxsYmFja1xuICAgICAgICB9XTtcbiAgICAgICAgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdCA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHZhciBfbG9vcDIgPSBmdW5jdGlvbiBfbG9vcDIoaSkge1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV07XG5cbiAgICAgICAgaWYgKGxpc3RlbmVyLnR5cGUgPT09IGV2ZW50T2JqLnR5cGUgJiYgKCFsaXN0ZW5lci5uYW1lc3BhY2UgfHwgbGlzdGVuZXIubmFtZXNwYWNlID09PSBldmVudE9iai5uYW1lc3BhY2UgfHwgbGlzdGVuZXIubmFtZXNwYWNlID09PSB1bml2ZXJzYWxOYW1lc3BhY2UpICYmIHNlbGYuZXZlbnRNYXRjaGVzKHNlbGYuY29udGV4dCwgbGlzdGVuZXIsIGV2ZW50T2JqKSkge1xuICAgICAgICAgIHZhciBhcmdzID0gW2V2ZW50T2JqXTtcblxuICAgICAgICAgIGlmIChleHRyYVBhcmFtcyAhPSBudWxsKSB7XG4gICAgICAgICAgICBwdXNoKGFyZ3MsIGV4dHJhUGFyYW1zKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzZWxmLmJlZm9yZUVtaXQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuXG4gICAgICAgICAgaWYgKGxpc3RlbmVyLmNvbmYgJiYgbGlzdGVuZXIuY29uZi5vbmUpIHtcbiAgICAgICAgICAgIHNlbGYubGlzdGVuZXJzID0gc2VsZi5saXN0ZW5lcnMuZmlsdGVyKGZ1bmN0aW9uIChsKSB7XG4gICAgICAgICAgICAgIHJldHVybiBsICE9PSBsaXN0ZW5lcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBjb250ZXh0ID0gc2VsZi5jYWxsYmFja0NvbnRleHQoc2VsZi5jb250ZXh0LCBsaXN0ZW5lciwgZXZlbnRPYmopO1xuICAgICAgICAgIHZhciByZXQgPSBsaXN0ZW5lci5jYWxsYmFjay5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICBzZWxmLmFmdGVyRW1pdChzZWxmLmNvbnRleHQsIGxpc3RlbmVyLCBldmVudE9iaik7XG5cbiAgICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZXZlbnRPYmouc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudE9iai5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBpZiBsaXN0ZW5lciBtYXRjaGVzXG5cbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTGlzdGVuZXJzQmVmb3JlRW1pdDsgaSsrKSB7XG4gICAgICAgIF9sb29wMihpKTtcbiAgICAgIH0gLy8gZm9yIGxpc3RlbmVyXG5cblxuICAgICAgaWYgKHNlbGYuYnViYmxlKHNlbGYuY29udGV4dCkgJiYgIWV2ZW50T2JqLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgc2VsZi5wYXJlbnQoc2VsZi5jb250ZXh0KS5lbWl0KGV2ZW50T2JqLCBleHRyYVBhcmFtcyk7XG4gICAgICB9XG4gICAgfSwgZXZlbnRzKTtcbiAgICB0aGlzLmVtaXR0aW5nLS07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGVtaXR0ZXJPcHRpb25zJDEgPSB7XG4gICAgcXVhbGlmaWVyQ29tcGFyZTogZnVuY3Rpb24gcXVhbGlmaWVyQ29tcGFyZShzZWxlY3RvcjEsIHNlbGVjdG9yMikge1xuICAgICAgaWYgKHNlbGVjdG9yMSA9PSBudWxsIHx8IHNlbGVjdG9yMiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjEgPT0gbnVsbCAmJiBzZWxlY3RvcjIgPT0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjEuc2FtZVRleHQoc2VsZWN0b3IyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGV2ZW50TWF0Y2hlczogZnVuY3Rpb24gZXZlbnRNYXRjaGVzKGVsZSwgbGlzdGVuZXIsIGV2ZW50T2JqKSB7XG4gICAgICB2YXIgc2VsZWN0b3IgPSBsaXN0ZW5lci5xdWFsaWZpZXI7XG5cbiAgICAgIGlmIChzZWxlY3RvciAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbGUgIT09IGV2ZW50T2JqLnRhcmdldCAmJiBlbGVtZW50KGV2ZW50T2JqLnRhcmdldCkgJiYgc2VsZWN0b3IubWF0Y2hlcyhldmVudE9iai50YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcyhlbGUsIGV2dCkge1xuICAgICAgZXZ0LmN5ID0gZWxlLmN5KCk7XG4gICAgICBldnQudGFyZ2V0ID0gZWxlO1xuICAgIH0sXG4gICAgY2FsbGJhY2tDb250ZXh0OiBmdW5jdGlvbiBjYWxsYmFja0NvbnRleHQoZWxlLCBsaXN0ZW5lciwgZXZlbnRPYmopIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lci5xdWFsaWZpZXIgIT0gbnVsbCA/IGV2ZW50T2JqLnRhcmdldCA6IGVsZTtcbiAgICB9LFxuICAgIGJlZm9yZUVtaXQ6IGZ1bmN0aW9uIGJlZm9yZUVtaXQoY29udGV4dCwgbGlzdGVuZXJcbiAgICAvKiwgZXZlbnRPYmoqL1xuICAgICkge1xuICAgICAgaWYgKGxpc3RlbmVyLmNvbmYgJiYgbGlzdGVuZXIuY29uZi5vbmNlKSB7XG4gICAgICAgIGxpc3RlbmVyLmNvbmYub25jZUNvbGxlY3Rpb24ucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIuZXZlbnQsIGxpc3RlbmVyLnF1YWxpZmllciwgbGlzdGVuZXIuY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH0sXG4gICAgYnViYmxlOiBmdW5jdGlvbiBidWJibGUoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHBhcmVudDogZnVuY3Rpb24gcGFyZW50KGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5pc0NoaWxkKCkgPyBlbGUucGFyZW50KCkgOiBlbGUuY3koKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIGFyZ1NlbGVjdG9yJDEgPSBmdW5jdGlvbiBhcmdTZWxlY3RvcihhcmcpIHtcbiAgICBpZiAoc3RyaW5nKGFyZykpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0b3IoYXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9XG4gIH07XG5cbiAgdmFyIGVsZXNmbiQ5ID0ge1xuICAgIGNyZWF0ZUVtaXR0ZXI6IGZ1bmN0aW9uIGNyZWF0ZUVtaXR0ZXIoKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcblxuICAgICAgICBpZiAoIV9wLmVtaXR0ZXIpIHtcbiAgICAgICAgICBfcC5lbWl0dGVyID0gbmV3IEVtaXR0ZXIoZW1pdHRlck9wdGlvbnMkMSwgZWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVtaXR0ZXI6IGZ1bmN0aW9uIGVtaXR0ZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbWl0dGVyO1xuICAgIH0sXG4gICAgb246IGZ1bmN0aW9uIG9uKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgYXJnU2VsID0gYXJnU2VsZWN0b3IkMShzZWxlY3Rvcik7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgZWxlLmVtaXR0ZXIoKS5vbihldmVudHMsIGFyZ1NlbCwgY2FsbGJhY2spO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICAgIGVsZS5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBhcmdTZWwsIGNhbGxiYWNrKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycygpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgZWxlLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBvbmU6IGZ1bmN0aW9uIG9uZShldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICAgIGVsZS5lbWl0dGVyKCkub25lKGV2ZW50cywgYXJnU2VsLCBjYWxsYmFjayk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgb25jZTogZnVuY3Rpb24gb25jZShldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgICAgdmFyIGFyZ1NlbCA9IGFyZ1NlbGVjdG9yJDEoc2VsZWN0b3IpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICAgIGVsZS5lbWl0dGVyKCkub24oZXZlbnRzLCBhcmdTZWwsIGNhbGxiYWNrLCB7XG4gICAgICAgICAgb25jZTogdHJ1ZSxcbiAgICAgICAgICBvbmNlQ29sbGVjdGlvbjogdGhpc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVtaXQ6IGZ1bmN0aW9uIGVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICBlbGUuZW1pdHRlcigpLmVtaXQoZXZlbnRzLCBleHRyYVBhcmFtcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW1pdEFuZE5vdGlmeTogZnVuY3Rpb24gZW1pdEFuZE5vdGlmeShldmVudCwgZXh0cmFQYXJhbXMpIHtcbiAgICAgIC8vIGZvciBpbnRlcm5hbCB1c2Ugb25seVxuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gZW1wdHkgY29sbGVjdGlvbnMgZG9uJ3QgbmVlZCB0byBub3RpZnkgYW55dGhpbmdcbiAgICAgIC8vIG5vdGlmeSByZW5kZXJlclxuXG5cbiAgICAgIHRoaXMuY3koKS5ub3RpZnkoZXZlbnQsIHRoaXMpO1xuICAgICAgdGhpcy5lbWl0KGV2ZW50LCBleHRyYVBhcmFtcyk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH07XG4gIGRlZmluZS5ldmVudEFsaWFzZXNPbihlbGVzZm4kOSk7XG5cbiAgdmFyIGVsZXNmbiQ4ID0ge1xuICAgIG5vZGVzOiBmdW5jdGlvbiBub2RlcyhzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGVsZS5pc05vZGUoKTtcbiAgICAgIH0pLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSxcbiAgICBlZGdlczogZnVuY3Rpb24gZWRnZXMoc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuaXNFZGdlKCk7XG4gICAgICB9KS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH0sXG4gICAgLy8gaW50ZXJuYWwgaGVscGVyIHRvIGdldCBub2RlcyBhbmQgZWRnZXMgYXMgc2VwYXJhdGUgY29sbGVjdGlvbnMgd2l0aCBzaW5nbGUgaXRlcmF0aW9uIG92ZXIgZWxlbWVudHNcbiAgICBieUdyb3VwOiBmdW5jdGlvbiBieUdyb3VwKCkge1xuICAgICAgdmFyIG5vZGVzID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIGVkZ2VzID0gdGhpcy5zcGF3bigpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIG5vZGVzLnB1c2goZWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlZGdlcy5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZXM6IG5vZGVzLFxuICAgICAgICBlZGdlczogZWRnZXNcbiAgICAgIH07XG4gICAgfSxcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihfZmlsdGVyLCB0aGlzQXJnKSB7XG4gICAgICBpZiAoX2ZpbHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGNoZWNrIHRoaXMgZmlyc3QgYi9jIGl0J3MgdGhlIG1vc3QgY29tbW9uL3BlcmZvcm1hbnQgY2FzZVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0gZWxzZSBpZiAoc3RyaW5nKF9maWx0ZXIpIHx8IGVsZW1lbnRPckNvbGxlY3Rpb24oX2ZpbHRlcikpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZWxlY3RvcihfZmlsdGVyKS5maWx0ZXIodGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKGZuJDYoX2ZpbHRlcikpIHtcbiAgICAgICAgdmFyIGZpbHRlckVsZXMgPSB0aGlzLnNwYXduKCk7XG4gICAgICAgIHZhciBlbGVzID0gdGhpcztcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgICB2YXIgaW5jbHVkZSA9IHRoaXNBcmcgPyBfZmlsdGVyLmFwcGx5KHRoaXNBcmcsIFtlbGUsIGksIGVsZXNdKSA6IF9maWx0ZXIoZWxlLCBpLCBlbGVzKTtcblxuICAgICAgICAgIGlmIChpbmNsdWRlKSB7XG4gICAgICAgICAgICBmaWx0ZXJFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyRWxlcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3Bhd24oKTsgLy8gaWYgbm90IGhhbmRsZWQgYnkgYWJvdmUsIGdpdmUgJ2VtIGFuIGVtcHR5IGNvbGxlY3Rpb25cbiAgICB9LFxuICAgIG5vdDogZnVuY3Rpb24gbm90KHRvUmVtb3ZlKSB7XG4gICAgICBpZiAoIXRvUmVtb3ZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0cmluZyh0b1JlbW92ZSkpIHtcbiAgICAgICAgICB0b1JlbW92ZSA9IHRoaXMuZmlsdGVyKHRvUmVtb3ZlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXNbaV07XG4gICAgICAgICAgdmFyIHJlbW92ZSA9IHRvUmVtb3ZlLmhhcyhlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghcmVtb3ZlKSB7XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICAgIH1cbiAgICB9LFxuICAgIGFic29sdXRlQ29tcGxlbWVudDogZnVuY3Rpb24gYWJzb2x1dGVDb21wbGVtZW50KCkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgcmV0dXJuIGN5Lm11dGFibGVFbGVtZW50cygpLm5vdCh0aGlzKTtcbiAgICB9LFxuICAgIGludGVyc2VjdDogZnVuY3Rpb24gaW50ZXJzZWN0KG90aGVyKSB7XG4gICAgICAvLyBpZiBhIHNlbGVjdG9yIGlzIHNwZWNpZmllZCwgdGhlbiBmaWx0ZXIgYnkgaXQgaW5zdGVhZFxuICAgICAgaWYgKHN0cmluZyhvdGhlcikpIHtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gb3RoZXI7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuc3Bhd24oKTtcbiAgICAgIHZhciBjb2wxID0gdGhpcztcbiAgICAgIHZhciBjb2wyID0gb3RoZXI7XG4gICAgICB2YXIgY29sMVNtYWxsZXIgPSB0aGlzLmxlbmd0aCA8IG90aGVyLmxlbmd0aDtcbiAgICAgIHZhciBjb2xTID0gY29sMVNtYWxsZXIgPyBjb2wxIDogY29sMjtcbiAgICAgIHZhciBjb2xMID0gY29sMVNtYWxsZXIgPyBjb2wyIDogY29sMTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2xTLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSBjb2xTW2ldO1xuXG4gICAgICAgIGlmIChjb2xMLmhhcyhlbGUpKSB7XG4gICAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9LFxuICAgIHhvcjogZnVuY3Rpb24geG9yKG90aGVyKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuXG4gICAgICBpZiAoc3RyaW5nKG90aGVyKSkge1xuICAgICAgICBvdGhlciA9IGN5LiQob3RoZXIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLnNwYXduKCk7XG4gICAgICB2YXIgY29sMSA9IHRoaXM7XG4gICAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgICB2YXIgYWRkID0gZnVuY3Rpb24gYWRkKGNvbCwgb3RoZXIpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICAgIHZhciBpZCA9IGVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgICAgIHZhciBpbk90aGVyID0gb3RoZXIuaGFzRWxlbWVudFdpdGhJZChpZCk7XG5cbiAgICAgICAgICBpZiAoIWluT3RoZXIpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGFkZChjb2wxLCBjb2wyKTtcbiAgICAgIGFkZChjb2wyLCBjb2wxKTtcbiAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9LFxuICAgIGRpZmY6IGZ1bmN0aW9uIGRpZmYob3RoZXIpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICAgIGlmIChzdHJpbmcob3RoZXIpKSB7XG4gICAgICAgIG90aGVyID0gY3kuJChvdGhlcik7XG4gICAgICB9XG5cbiAgICAgIHZhciBsZWZ0ID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIHJpZ2h0ID0gdGhpcy5zcGF3bigpO1xuICAgICAgdmFyIGJvdGggPSB0aGlzLnNwYXduKCk7XG4gICAgICB2YXIgY29sMSA9IHRoaXM7XG4gICAgICB2YXIgY29sMiA9IG90aGVyO1xuXG4gICAgICB2YXIgYWRkID0gZnVuY3Rpb24gYWRkKGNvbCwgb3RoZXIsIHJldEVsZXMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gY29sW2ldO1xuICAgICAgICAgIHZhciBpZCA9IGVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgICAgIHZhciBpbk90aGVyID0gb3RoZXIuaGFzRWxlbWVudFdpdGhJZChpZCk7XG5cbiAgICAgICAgICBpZiAoaW5PdGhlcikge1xuICAgICAgICAgICAgYm90aC5tZXJnZShlbGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRFbGVzLnB1c2goZWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGFkZChjb2wxLCBjb2wyLCBsZWZ0KTtcbiAgICAgIGFkZChjb2wyLCBjb2wxLCByaWdodCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgICAgIGJvdGg6IGJvdGhcbiAgICAgIH07XG4gICAgfSxcbiAgICBhZGQ6IGZ1bmN0aW9uIGFkZCh0b0FkZCkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgICAgaWYgKCF0b0FkZCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0cmluZyh0b0FkZCkpIHtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gdG9BZGQ7XG4gICAgICAgIHRvQWRkID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy5zcGF3blNlbGYoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b0FkZC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdG9BZGRbaV07XG4gICAgICAgIHZhciBhZGQgPSAhdGhpcy5oYXMoZWxlKTtcblxuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgZWxlbWVudHMucHVzaChlbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9LFxuICAgIC8vIGluIHBsYWNlIG1lcmdlIG9uIGNhbGxpbmcgY29sbGVjdGlvblxuICAgIG1lcmdlOiBmdW5jdGlvbiBtZXJnZSh0b0FkZCkge1xuICAgICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcbiAgICAgIHZhciBjeSA9IF9wLmN5O1xuXG4gICAgICBpZiAoIXRvQWRkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBpZiAodG9BZGQgJiYgc3RyaW5nKHRvQWRkKSkge1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0b0FkZDtcbiAgICAgICAgdG9BZGQgPSBjeS5tdXRhYmxlRWxlbWVudHMoKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbWFwID0gX3AubWFwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvQWRkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB0b0FkZEVsZSA9IHRvQWRkW2ldO1xuICAgICAgICB2YXIgaWQgPSB0b0FkZEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgICB2YXIgYWRkID0gIW1hcC5oYXMoaWQpO1xuXG4gICAgICAgIGlmIChhZGQpIHtcbiAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmxlbmd0aCsrO1xuICAgICAgICAgIHRoaXNbaW5kZXhdID0gdG9BZGRFbGU7XG4gICAgICAgICAgbWFwLnNldChpZCwge1xuICAgICAgICAgICAgZWxlOiB0b0FkZEVsZSxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgdW5tZXJnZUF0OiBmdW5jdGlvbiB1bm1lcmdlQXQoaSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICB2YXIgaWQgPSBlbGUuaWQoKTtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICB2YXIgbWFwID0gX3AubWFwOyAvLyByZW1vdmUgZWxlXG5cbiAgICAgIHRoaXNbaV0gPSB1bmRlZmluZWQ7XG4gICAgICBtYXBbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgdmFyIHVubWVyZ2VkTGFzdEVsZSA9IGkgPT09IHRoaXMubGVuZ3RoIC0gMTsgLy8gcmVwbGFjZSBlbXB0eSBzcG90IHdpdGggbGFzdCBlbGUgaW4gY29sbGVjdGlvblxuXG4gICAgICBpZiAodGhpcy5sZW5ndGggPiAxICYmICF1bm1lcmdlZExhc3RFbGUpIHtcbiAgICAgICAgdmFyIGxhc3RFbGVJID0gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgbGFzdEVsZSA9IHRoaXNbbGFzdEVsZUldO1xuICAgICAgICB2YXIgbGFzdEVsZUlkID0gbGFzdEVsZS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgICAgICB0aGlzW2xhc3RFbGVJXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpc1tpXSA9IGxhc3RFbGU7XG4gICAgICAgIG1hcC5zZXQobGFzdEVsZUlkLCB7XG4gICAgICAgICAgZWxlOiBsYXN0RWxlLFxuICAgICAgICAgIGluZGV4OiBpXG4gICAgICAgIH0pO1xuICAgICAgfSAvLyB0aGUgY29sbGVjdGlvbiBpcyBub3cgMSBlbGUgc21hbGxlclxuXG5cbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIC8vIHJlbW92ZSBzaW5nbGUgZWxlIGluIHBsYWNlIGluIGNhbGxpbmcgY29sbGVjdGlvblxuICAgIHVubWVyZ2VPbmU6IGZ1bmN0aW9uIHVubWVyZ2VPbmUoZWxlKSB7XG4gICAgICBlbGUgPSBlbGVbMF07XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgdmFyIGlkID0gZWxlLl9wcml2YXRlLmRhdGEuaWQ7XG4gICAgICB2YXIgbWFwID0gX3AubWFwO1xuICAgICAgdmFyIGVudHJ5ID0gbWFwLmdldChpZCk7XG5cbiAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7IC8vIG5vIG5lZWQgdG8gcmVtb3ZlXG4gICAgICB9XG5cbiAgICAgIHZhciBpID0gZW50cnkuaW5kZXg7XG4gICAgICB0aGlzLnVubWVyZ2VBdChpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgLy8gcmVtb3ZlIGVsZXMgaW4gcGxhY2Ugb24gY2FsbGluZyBjb2xsZWN0aW9uXG4gICAgdW5tZXJnZTogZnVuY3Rpb24gdW5tZXJnZSh0b1JlbW92ZSkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgICAgaWYgKCF0b1JlbW92ZSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgaWYgKHRvUmVtb3ZlICYmIHN0cmluZyh0b1JlbW92ZSkpIHtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gdG9SZW1vdmU7XG4gICAgICAgIHRvUmVtb3ZlID0gY3kubXV0YWJsZUVsZW1lbnRzKCkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b1JlbW92ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLnVubWVyZ2VPbmUodG9SZW1vdmVbaV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIHVubWVyZ2VCeTogZnVuY3Rpb24gdW5tZXJnZUJ5KHRvUm1Gbikge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgICAgaWYgKHRvUm1GbihlbGUpKSB7XG4gICAgICAgICAgdGhpcy51bm1lcmdlQXQoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBtYXA6IGZ1bmN0aW9uIG1hcChtYXBGbiwgdGhpc0FyZykge1xuICAgICAgdmFyIGFyciA9IFtdO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciByZXQgPSB0aGlzQXJnID8gbWFwRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogbWFwRm4oZWxlLCBpLCBlbGVzKTtcbiAgICAgICAgYXJyLnB1c2gocmV0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LFxuICAgIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGZuLCBpbml0aWFsVmFsdWUpIHtcbiAgICAgIHZhciB2YWwgPSBpbml0aWFsVmFsdWU7XG4gICAgICB2YXIgZWxlcyA9IHRoaXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWwgPSBmbih2YWwsIGVsZXNbaV0sIGksIGVsZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsO1xuICAgIH0sXG4gICAgbWF4OiBmdW5jdGlvbiBtYXgodmFsRm4sIHRoaXNBcmcpIHtcbiAgICAgIHZhciBtYXggPSAtSW5maW5pdHk7XG4gICAgICB2YXIgbWF4RWxlO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciB2YWwgPSB0aGlzQXJnID8gdmFsRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogdmFsRm4oZWxlLCBpLCBlbGVzKTtcblxuICAgICAgICBpZiAodmFsID4gbWF4KSB7XG4gICAgICAgICAgbWF4ID0gdmFsO1xuICAgICAgICAgIG1heEVsZSA9IGVsZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogbWF4LFxuICAgICAgICBlbGU6IG1heEVsZVxuICAgICAgfTtcbiAgICB9LFxuICAgIG1pbjogZnVuY3Rpb24gbWluKHZhbEZuLCB0aGlzQXJnKSB7XG4gICAgICB2YXIgbWluID0gSW5maW5pdHk7XG4gICAgICB2YXIgbWluRWxlO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgIHZhciB2YWwgPSB0aGlzQXJnID8gdmFsRm4uYXBwbHkodGhpc0FyZywgW2VsZSwgaSwgZWxlc10pIDogdmFsRm4oZWxlLCBpLCBlbGVzKTtcblxuICAgICAgICBpZiAodmFsIDwgbWluKSB7XG4gICAgICAgICAgbWluID0gdmFsO1xuICAgICAgICAgIG1pbkVsZSA9IGVsZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogbWluLFxuICAgICAgICBlbGU6IG1pbkVsZVxuICAgICAgfTtcbiAgICB9XG4gIH07IC8vIGFsaWFzZXNcblxuICB2YXIgZm4kMSA9IGVsZXNmbiQ4O1xuICBmbiQxWyd1J10gPSBmbiQxWyd8J10gPSBmbiQxWycrJ10gPSBmbiQxLnVuaW9uID0gZm4kMS5vciA9IGZuJDEuYWRkO1xuICBmbiQxWydcXFxcJ10gPSBmbiQxWychJ10gPSBmbiQxWyctJ10gPSBmbiQxLmRpZmZlcmVuY2UgPSBmbiQxLnJlbGF0aXZlQ29tcGxlbWVudCA9IGZuJDEuc3VidHJhY3QgPSBmbiQxLm5vdDtcbiAgZm4kMVsnbiddID0gZm4kMVsnJiddID0gZm4kMVsnLiddID0gZm4kMS5hbmQgPSBmbiQxLmludGVyc2VjdGlvbiA9IGZuJDEuaW50ZXJzZWN0O1xuICBmbiQxWydeJ10gPSBmbiQxWycoKyknXSA9IGZuJDFbJygtKSddID0gZm4kMS5zeW1tZXRyaWNEaWZmZXJlbmNlID0gZm4kMS5zeW1kaWZmID0gZm4kMS54b3I7XG4gIGZuJDEuZm5GaWx0ZXIgPSBmbiQxLmZpbHRlckZuID0gZm4kMS5zdGRGaWx0ZXIgPSBmbiQxLmZpbHRlcjtcbiAgZm4kMS5jb21wbGVtZW50ID0gZm4kMS5hYnNjb21wID0gZm4kMS5hYnNvbHV0ZUNvbXBsZW1lbnQ7XG5cbiAgdmFyIGVsZXNmbiQ3ID0ge1xuICAgIGlzTm9kZTogZnVuY3Rpb24gaXNOb2RlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ25vZGVzJztcbiAgICB9LFxuICAgIGlzRWRnZTogZnVuY3Rpb24gaXNFZGdlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAoKSA9PT0gJ2VkZ2VzJztcbiAgICB9LFxuICAgIGlzTG9vcDogZnVuY3Rpb24gaXNMb29wKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNFZGdlKCkgJiYgdGhpcy5zb3VyY2UoKVswXSA9PT0gdGhpcy50YXJnZXQoKVswXTtcbiAgICB9LFxuICAgIGlzU2ltcGxlOiBmdW5jdGlvbiBpc1NpbXBsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzRWRnZSgpICYmIHRoaXMuc291cmNlKClbMF0gIT09IHRoaXMudGFyZ2V0KClbMF07XG4gICAgfSxcbiAgICBncm91cDogZnVuY3Rpb24gZ3JvdXAoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmdyb3VwO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogIEVsZW1lbnRzIGFyZSBkcmF3biBpbiBhIHNwZWNpZmljIG9yZGVyIGJhc2VkIG9uIGNvbXBvdW5kIGRlcHRoIChsb3cgdG8gaGlnaCksIHRoZSBlbGVtZW50IHR5cGUgKG5vZGVzIGFib3ZlIGVkZ2VzKSxcbiAgICogIGFuZCB6LWluZGV4IChsb3cgdG8gaGlnaCkuICBUaGVzZSBzdHlsZXMgYWZmZWN0IGhvdyB0aGlzIGFwcGxpZXM6XG4gICAqXG4gICAqICB6LWNvbXBvdW5kLWRlcHRoOiBNYXkgYmUgYGJvdHRvbSB8IG9ycGhhbiB8IGF1dG8gfCB0b3BgLiAgVGhlIGZpcnN0IGRyYXduIGlzIGBib3R0b21gLCB0aGVuIGBvcnBoYW5gIHdoaWNoIGlzIHRoZVxuICAgKiAgICAgIHNhbWUgZGVwdGggYXMgdGhlIHJvb3Qgb2YgdGhlIGNvbXBvdW5kIGdyYXBoLCBmb2xsb3dlZCBieSB0aGUgZGVmYXVsdCB2YWx1ZSBgYXV0b2Agd2hpY2ggZHJhd3MgaW4gb3JkZXIgZnJvbVxuICAgKiAgICAgIHJvb3QgdG8gbGVhdmVzIG9mIHRoZSBjb21wb3VuZCBncmFwaC4gIFRoZSBsYXN0IGRyYXduIGlzIGB0b3BgLlxuICAgKiAgei1pbmRleC1jb21wYXJlOiBNYXkgYmUgYGF1dG8gfCBtYW51YWxgLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGF1dG9gIHdoaWNoIGFsd2F5cyBkcmF3cyBlZGdlcyB1bmRlciBub2Rlcy5cbiAgICogICAgICBgbWFudWFsYCBpZ25vcmVzIHRoaXMgY29udmVudGlvbiBhbmQgZHJhd3MgYmFzZWQgb24gdGhlIGB6LWluZGV4YCB2YWx1ZSBzZXR0aW5nLlxuICAgKiAgei1pbmRleDogQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGFmZmVjdHMgdGhlIHJlbGF0aXZlIGRyYXcgb3JkZXIgb2YgZWxlbWVudHMuICBJbiBnZW5lcmFsLCBhbiBlbGVtZW50IHdpdGggYSBoaWdoZXJcbiAgICogICAgICBgei1pbmRleGAgd2lsbCBiZSBkcmF3biBvbiB0b3Agb2YgYW4gZWxlbWVudCB3aXRoIGEgbG93ZXIgYHotaW5kZXhgLlxuICAgKi9cblxuICB2YXIgekluZGV4U29ydCA9IGZ1bmN0aW9uIHpJbmRleFNvcnQoYSwgYikge1xuICAgIHZhciBjeSA9IGEuY3koKTtcbiAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgIGZ1bmN0aW9uIGdldERlcHRoKGVsZSkge1xuICAgICAgdmFyIHN0eWxlID0gZWxlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpO1xuXG4gICAgICBpZiAoc3R5bGUudmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgICByZXR1cm4gaGFzQ29tcG91bmROb2RlcyA/IGVsZS56RGVwdGgoKSA6IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0eWxlLnZhbHVlID09PSAnYm90dG9tJykge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKHN0eWxlLnZhbHVlID09PSAndG9wJykge1xuICAgICAgICByZXR1cm4gTUFYX0lOVCQxO1xuICAgICAgfSAvLyAnb3JwaGFuJ1xuXG5cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHZhciBkZXB0aERpZmYgPSBnZXREZXB0aChhKSAtIGdldERlcHRoKGIpO1xuXG4gICAgaWYgKGRlcHRoRGlmZiAhPT0gMCkge1xuICAgICAgcmV0dXJuIGRlcHRoRGlmZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFbGVEZXB0aChlbGUpIHtcbiAgICAgIHZhciBzdHlsZSA9IGVsZS5wc3R5bGUoJ3otaW5kZXgtY29tcGFyZScpO1xuXG4gICAgICBpZiAoc3R5bGUudmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpID8gMSA6IDA7XG4gICAgICB9IC8vICdtYW51YWwnXG5cblxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgdmFyIGVsZURpZmYgPSBnZXRFbGVEZXB0aChhKSAtIGdldEVsZURlcHRoKGIpO1xuXG4gICAgaWYgKGVsZURpZmYgIT09IDApIHtcbiAgICAgIHJldHVybiBlbGVEaWZmO1xuICAgIH1cblxuICAgIHZhciB6RGlmZiA9IGEucHN0eWxlKCd6LWluZGV4JykudmFsdWUgLSBiLnBzdHlsZSgnei1pbmRleCcpLnZhbHVlO1xuXG4gICAgaWYgKHpEaWZmICE9PSAwKSB7XG4gICAgICByZXR1cm4gekRpZmY7XG4gICAgfSAvLyBjb21wYXJlIGluZGljZXMgaW4gdGhlIGNvcmUgKG9yZGVyIGFkZGVkIHRvIGdyYXBoIHcvIGxhc3Qgb24gdG9wKVxuXG5cbiAgICByZXR1cm4gYS5wb29sSW5kZXgoKSAtIGIucG9vbEluZGV4KCk7XG4gIH07XG5cbiAgdmFyIGVsZXNmbiQ2ID0ge1xuICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goZm4sIHRoaXNBcmcpIHtcbiAgICAgIGlmIChmbiQ2KGZuKSkge1xuICAgICAgICB2YXIgTiA9IHRoaXMubGVuZ3RoO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG4gICAgICAgICAgdmFyIHJldCA9IHRoaXNBcmcgPyBmbi5hcHBseSh0aGlzQXJnLCBbZWxlLCBpLCB0aGlzXSkgOiBmbihlbGUsIGksIHRoaXMpO1xuXG4gICAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gLy8gZXhpdCBlYWNoIGVhcmx5IG9uIHJldHVybiBmYWxzZVxuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICB0b0FycmF5OiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgICAgdmFyIGFycmF5ID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfSxcbiAgICBzbGljZTogZnVuY3Rpb24gc2xpY2Uoc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGFycmF5ID0gW107XG4gICAgICB2YXIgdGhpc1NpemUgPSB0aGlzLmxlbmd0aDtcblxuICAgICAgaWYgKGVuZCA9PSBudWxsKSB7XG4gICAgICAgIGVuZCA9IHRoaXNTaXplO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnQgPT0gbnVsbCkge1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSB0aGlzU2l6ZSArIHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgPSB0aGlzU2l6ZSArIGVuZDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpID49IDAgJiYgaSA8IGVuZCAmJiBpIDwgdGhpc1NpemU7IGkrKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXNbaV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zcGF3bihhcnJheSk7XG4gICAgfSxcbiAgICBzaXplOiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICAgIH0sXG4gICAgZXE6IGZ1bmN0aW9uIGVxKGkpIHtcbiAgICAgIHJldHVybiB0aGlzW2ldIHx8IHRoaXMuc3Bhd24oKTtcbiAgICB9LFxuICAgIGZpcnN0OiBmdW5jdGlvbiBmaXJzdCgpIHtcbiAgICAgIHJldHVybiB0aGlzWzBdIHx8IHRoaXMuc3Bhd24oKTtcbiAgICB9LFxuICAgIGxhc3Q6IGZ1bmN0aW9uIGxhc3QoKSB7XG4gICAgICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIHx8IHRoaXMuc3Bhd24oKTtcbiAgICB9LFxuICAgIGVtcHR5OiBmdW5jdGlvbiBlbXB0eSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMDtcbiAgICB9LFxuICAgIG5vbmVtcHR5OiBmdW5jdGlvbiBub25lbXB0eSgpIHtcbiAgICAgIHJldHVybiAhdGhpcy5lbXB0eSgpO1xuICAgIH0sXG4gICAgc29ydDogZnVuY3Rpb24gc29ydChzb3J0Rm4pIHtcbiAgICAgIGlmICghZm4kNihzb3J0Rm4pKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgc29ydGVkID0gdGhpcy50b0FycmF5KCkuc29ydChzb3J0Rm4pO1xuICAgICAgcmV0dXJuIHRoaXMuc3Bhd24oc29ydGVkKTtcbiAgICB9LFxuICAgIHNvcnRCeVpJbmRleDogZnVuY3Rpb24gc29ydEJ5WkluZGV4KCkge1xuICAgICAgcmV0dXJuIHRoaXMuc29ydCh6SW5kZXhTb3J0KTtcbiAgICB9LFxuICAgIHpEZXB0aDogZnVuY3Rpb24gekRlcHRoKCkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmICghZWxlKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9IC8vIGxldCBjeSA9IGVsZS5jeSgpO1xuXG5cbiAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgIHZhciBncm91cCA9IF9wLmdyb3VwO1xuXG4gICAgICBpZiAoZ3JvdXAgPT09ICdub2RlcycpIHtcbiAgICAgICAgdmFyIGRlcHRoID0gX3AuZGF0YS5wYXJlbnQgPyBlbGUucGFyZW50cygpLnNpemUoKSA6IDA7XG5cbiAgICAgICAgaWYgKCFlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgICAgIHJldHVybiBNQVhfSU5UJDEgLSAxOyAvLyBjaGlsZGxlc3Mgbm9kZXMgYWx3YXlzIG9uIHRvcFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlcHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICAgICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICAgICAgdmFyIHNyY0RlcHRoID0gc3JjLnpEZXB0aCgpO1xuICAgICAgICB2YXIgdGd0RGVwdGggPSB0Z3QuekRlcHRoKCk7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChzcmNEZXB0aCwgdGd0RGVwdGgsIDApOyAvLyBkZXB0aCBvZiBkZWVwZXN0IHBhcmVudFxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgZWxlc2ZuJDYuZWFjaCA9IGVsZXNmbiQ2LmZvckVhY2g7XG5cbiAgdmFyIGRlZmluZVN5bWJvbEl0ZXJhdG9yID0gZnVuY3Rpb24gZGVmaW5lU3ltYm9sSXRlcmF0b3IoKSB7XG4gICAgdmFyIHR5cGVvZlVuZGVmID0gXCJ1bmRlZmluZWRcIiA7XG4gICAgdmFyIGlzSXRlcmF0b3JTdXBwb3J0ZWQgPSAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKFN5bWJvbCkpICE9IHR5cGVvZlVuZGVmICYmIF90eXBlb2YoU3ltYm9sLml0ZXJhdG9yKSAhPSB0eXBlb2ZVbmRlZjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgaWYgKGlzSXRlcmF0b3JTdXBwb3J0ZWQpIHtcbiAgICAgIGVsZXNmbiQ2W1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgICAgICB2YXIgZW50cnkgPSB7XG4gICAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgICAgICBkb25lOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB2YXIgaSA9IDA7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIF9kZWZpbmVQcm9wZXJ0eSQxKHtcbiAgICAgICAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgaWYgKGkgPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBfdGhpc1tpKytdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGVudHJ5LmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBTeW1ib2wuaXRlcmF0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG5cbiAgZGVmaW5lU3ltYm9sSXRlcmF0b3IoKTtcblxuICB2YXIgZ2V0TGF5b3V0RGltZW5zaW9uT3B0aW9ucyA9IGRlZmF1bHRzJGcoe1xuICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2VcbiAgfSk7XG4gIHZhciBlbGVzZm4kNSA9IHtcbiAgICAvLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIG5vZGUgZGltZW5zaW9ucyB7IHgsIHkgfSBiYXNlZCBvbiBvcHRpb25zIGdpdmVuXG4gICAgbGF5b3V0RGltZW5zaW9uczogZnVuY3Rpb24gbGF5b3V0RGltZW5zaW9ucyhvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0gZ2V0TGF5b3V0RGltZW5zaW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgIHZhciBkaW1zO1xuXG4gICAgICBpZiAoIXRoaXMudGFrZXNVcFNwYWNlKCkpIHtcbiAgICAgICAgZGltcyA9IHtcbiAgICAgICAgICB3OiAwLFxuICAgICAgICAgIGg6IDBcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHMpIHtcbiAgICAgICAgdmFyIGJiRGltID0gdGhpcy5ib3VuZGluZ0JveCgpO1xuICAgICAgICBkaW1zID0ge1xuICAgICAgICAgIHc6IGJiRGltLncsXG4gICAgICAgICAgaDogYmJEaW0uaFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGltcyA9IHtcbiAgICAgICAgICB3OiB0aGlzLm91dGVyV2lkdGgoKSxcbiAgICAgICAgICBoOiB0aGlzLm91dGVySGVpZ2h0KClcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gc2FuaXRpc2UgdGhlIGRpbWVuc2lvbnMgZm9yIGV4dGVybmFsIGxheW91dHMgKGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8pXG5cblxuICAgICAgaWYgKGRpbXMudyA9PT0gMCB8fCBkaW1zLmggPT09IDApIHtcbiAgICAgICAgZGltcy53ID0gZGltcy5oID0gMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRpbXM7XG4gICAgfSxcbiAgICAvLyB1c2luZyBzdGFuZGFyZCBsYXlvdXQgb3B0aW9ucywgYXBwbHkgcG9zaXRpb24gZnVuY3Rpb24gKHcvIG9yIHcvbyBhbmltYXRpb24pXG4gICAgbGF5b3V0UG9zaXRpb25zOiBmdW5jdGlvbiBsYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBmbikge1xuICAgICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpLmZpbHRlcihmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gIW4uaXNQYXJlbnQoKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuICAgICAgdmFyIGxheW91dEVsZXMgPSBvcHRpb25zLmVsZXM7IC8vIG5vZGVzICYgZWRnZXNcblxuICAgICAgdmFyIGdldE1lbW9pemVLZXkgPSBmdW5jdGlvbiBnZXRNZW1vaXplS2V5KG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQoKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBmbk1lbSA9IG1lbW9pemUkMShmbiwgZ2V0TWVtb2l6ZUtleSk7IC8vIG1lbW9pemVkIHZlcnNpb24gb2YgcG9zaXRpb24gZnVuY3Rpb25cblxuICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICB0eXBlOiAnbGF5b3V0c3RhcnQnLFxuICAgICAgICBsYXlvdXQ6IGxheW91dFxuICAgICAgfSk7XG4gICAgICBsYXlvdXQuYW5pbWF0aW9ucyA9IFtdO1xuXG4gICAgICB2YXIgY2FsY3VsYXRlU3BhY2luZyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVNwYWNpbmcoc3BhY2luZywgbm9kZXNCYiwgcG9zKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSB7XG4gICAgICAgICAgeDogbm9kZXNCYi54MSArIG5vZGVzQmIudyAvIDIsXG4gICAgICAgICAgeTogbm9kZXNCYi55MSArIG5vZGVzQmIuaCAvIDJcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHNwYWNpbmdWZWN0b3IgPSB7XG4gICAgICAgICAgLy8gc2NhbGUgZnJvbSBjZW50ZXIgb2YgYm91bmRpbmcgYm94IChub3QgbmVjZXNzYXJpbHkgMCwwKVxuICAgICAgICAgIHg6IChwb3MueCAtIGNlbnRlci54KSAqIHNwYWNpbmcsXG4gICAgICAgICAgeTogKHBvcy55IC0gY2VudGVyLnkpICogc3BhY2luZ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGNlbnRlci54ICsgc3BhY2luZ1ZlY3Rvci54LFxuICAgICAgICAgIHk6IGNlbnRlci55ICsgc3BhY2luZ1ZlY3Rvci55XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICB2YXIgdXNlU3BhY2luZ0ZhY3RvciA9IG9wdGlvbnMuc3BhY2luZ0ZhY3RvciAmJiBvcHRpb25zLnNwYWNpbmdGYWN0b3IgIT09IDE7XG5cbiAgICAgIHZhciBzcGFjaW5nQmIgPSBmdW5jdGlvbiBzcGFjaW5nQmIoKSB7XG4gICAgICAgIGlmICghdXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgICAgdmFyIHBvcyA9IGZuTWVtKG5vZGUsIGkpO1xuICAgICAgICAgIGV4cGFuZEJvdW5kaW5nQm94QnlQb2ludChiYiwgcG9zLngsIHBvcy55KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBiYjtcbiAgICAgIH07XG5cbiAgICAgIHZhciBiYiA9IHNwYWNpbmdCYigpO1xuICAgICAgdmFyIGdldEZpbmFsUG9zID0gbWVtb2l6ZSQxKGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICAgIHZhciBuZXdQb3MgPSBmbk1lbShub2RlLCBpKTtcblxuICAgICAgICBpZiAodXNlU3BhY2luZ0ZhY3Rvcikge1xuICAgICAgICAgIHZhciBzcGFjaW5nID0gTWF0aC5hYnMob3B0aW9ucy5zcGFjaW5nRmFjdG9yKTtcbiAgICAgICAgICBuZXdQb3MgPSBjYWxjdWxhdGVTcGFjaW5nKHNwYWNpbmcsIGJiLCBuZXdQb3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMudHJhbnNmb3JtICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdQb3MgPSBvcHRpb25zLnRyYW5zZm9ybShub2RlLCBuZXdQb3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld1BvcztcbiAgICAgIH0sIGdldE1lbW9pemVLZXkpO1xuXG4gICAgICBpZiAob3B0aW9ucy5hbmltYXRlKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICAgIHZhciBuZXdQb3MgPSBnZXRGaW5hbFBvcyhub2RlLCBpKTtcbiAgICAgICAgICB2YXIgYW5pbWF0ZU5vZGUgPSBvcHRpb25zLmFuaW1hdGVGaWx0ZXIgPT0gbnVsbCB8fCBvcHRpb25zLmFuaW1hdGVGaWx0ZXIobm9kZSwgaSk7XG5cbiAgICAgICAgICBpZiAoYW5pbWF0ZU5vZGUpIHtcbiAgICAgICAgICAgIHZhciBhbmkgPSBub2RlLmFuaW1hdGlvbih7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXdQb3MsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBvcHRpb25zLmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICAgICAgICBlYXNpbmc6IG9wdGlvbnMuYW5pbWF0aW9uRWFzaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxheW91dC5hbmltYXRpb25zLnB1c2goYW5pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5wb3NpdGlvbihuZXdQb3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICAgIHZhciBmaXRBbmkgPSBjeS5hbmltYXRpb24oe1xuICAgICAgICAgICAgZml0OiB7XG4gICAgICAgICAgICAgIGJvdW5kaW5nQm94OiBsYXlvdXRFbGVzLmJvdW5kaW5nQm94QXQoZ2V0RmluYWxQb3MpLFxuICAgICAgICAgICAgICBwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgICAgIGVhc2luZzogb3B0aW9ucy5hbmltYXRpb25FYXNpbmdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsYXlvdXQuYW5pbWF0aW9ucy5wdXNoKGZpdEFuaSk7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy56b29tICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5wYW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciB6b29tUGFuQW5pID0gY3kuYW5pbWF0aW9uKHtcbiAgICAgICAgICAgIHpvb206IG9wdGlvbnMuem9vbSxcbiAgICAgICAgICAgIHBhbjogb3B0aW9ucy5wYW4sXG4gICAgICAgICAgICBkdXJhdGlvbjogb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgICAgIGVhc2luZzogb3B0aW9ucy5hbmltYXRpb25FYXNpbmdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsYXlvdXQuYW5pbWF0aW9ucy5wdXNoKHpvb21QYW5BbmkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGF5b3V0LmFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoYW5pKSB7XG4gICAgICAgICAgcmV0dXJuIGFuaS5wbGF5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICBsYXlvdXQub25lKCdsYXlvdXRyZWFkeScsIG9wdGlvbnMucmVhZHkpO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHJlYWR5JyxcbiAgICAgICAgICBsYXlvdXQ6IGxheW91dFxuICAgICAgICB9KTtcbiAgICAgICAgUHJvbWlzZSQxLmFsbChsYXlvdXQuYW5pbWF0aW9ucy5tYXAoZnVuY3Rpb24gKGFuaSkge1xuICAgICAgICAgIHJldHVybiBhbmkucHJvbWlzZSgpO1xuICAgICAgICB9KSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0c3RvcCcsIG9wdGlvbnMuc3RvcCk7XG4gICAgICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5wb3NpdGlvbnMoZ2V0RmluYWxQb3MpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLmZpdCkge1xuICAgICAgICAgIGN5LmZpdChvcHRpb25zLmVsZXMsIG9wdGlvbnMucGFkZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy56b29tICE9IG51bGwpIHtcbiAgICAgICAgICBjeS56b29tKG9wdGlvbnMuem9vbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5wYW4pIHtcbiAgICAgICAgICBjeS5wYW4ob3B0aW9ucy5wYW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGF5b3V0Lm9uZSgnbGF5b3V0cmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgICAgbGF5b3V0LmVtaXQoe1xuICAgICAgICAgIHR5cGU6ICdsYXlvdXRyZWFkeScsXG4gICAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgICAgfSk7XG4gICAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIGxheW91dDogZnVuY3Rpb24gbGF5b3V0KG9wdGlvbnMpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICAgIHJldHVybiBjeS5tYWtlTGF5b3V0KGV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgICBlbGVzOiB0aGlzXG4gICAgICB9KSk7XG4gICAgfVxuICB9OyAvLyBhbGlhc2VzOlxuXG4gIGVsZXNmbiQ1LmNyZWF0ZUxheW91dCA9IGVsZXNmbiQ1Lm1ha2VMYXlvdXQgPSBlbGVzZm4kNS5sYXlvdXQ7XG5cbiAgZnVuY3Rpb24gc3R5bGVDYWNoZShrZXksIGZuLCBlbGUpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIGNhY2hlID0gX3Auc3R5bGVDYWNoZSA9IF9wLnN0eWxlQ2FjaGUgfHwgW107XG4gICAgdmFyIHZhbDtcblxuICAgIGlmICgodmFsID0gY2FjaGVba2V5XSkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsID0gY2FjaGVba2V5XSA9IGZuKGVsZSk7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhY2hlU3R5bGVGdW5jdGlvbihrZXksIGZuKSB7XG4gICAga2V5ID0gaGFzaFN0cmluZyhrZXkpO1xuICAgIHJldHVybiBmdW5jdGlvbiBjYWNoZWRTdHlsZUZ1bmN0aW9uKGVsZSkge1xuICAgICAgcmV0dXJuIHN0eWxlQ2FjaGUoa2V5LCBmbiwgZWxlKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FjaGVQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKGtleSwgZm4pIHtcbiAgICBrZXkgPSBoYXNoU3RyaW5nKGtleSk7XG5cbiAgICB2YXIgc2VsZkZuID0gZnVuY3Rpb24gc2VsZkZuKGVsZSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwoZWxlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhY2hlZFByb3RvdHlwZVN0eWxlRnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICByZXR1cm4gc3R5bGVDYWNoZShrZXksIHNlbGZGbiwgZWxlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGVsZXNmbiQ0ID0ge1xuICAgIHJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZTogZnVuY3Rpb24gcmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKHVzZUNhY2hlKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG4gICAgICB2YXIgcmVuZGVyZXIgPSBjeS5yZW5kZXJlcigpO1xuICAgICAgdmFyIHN0eWxlRW5hYmxlZCA9IGN5LnN0eWxlRW5hYmxlZCgpO1xuXG4gICAgICBpZiAocmVuZGVyZXIgJiYgc3R5bGVFbmFibGVkKSB7XG4gICAgICAgIHJlbmRlcmVyLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZSh0aGlzLCB1c2VDYWNoZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZGlydHlTdHlsZUNhY2hlOiBmdW5jdGlvbiBkaXJ0eVN0eWxlQ2FjaGUoKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG5cbiAgICAgIHZhciBkaXJ0eSA9IGZ1bmN0aW9uIGRpcnR5KGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnN0eWxlQ2FjaGUgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgaWYgKGN5Lmhhc0NvbXBvdW5kTm9kZXMoKSkge1xuICAgICAgICB2YXIgZWxlcztcbiAgICAgICAgZWxlcyA9IHRoaXMuc3Bhd25TZWxmKCkubWVyZ2UodGhpcy5kZXNjZW5kYW50cygpKS5tZXJnZSh0aGlzLnBhcmVudHMoKSk7XG4gICAgICAgIGVsZXMubWVyZ2UoZWxlcy5jb25uZWN0ZWRFZGdlcygpKTtcbiAgICAgICAgZWxlcy5mb3JFYWNoKGRpcnR5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgZGlydHkoZWxlKTtcbiAgICAgICAgICBlbGUuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKGRpcnR5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgLy8gZnVsbHkgdXBkYXRlcyAocmVjYWxjdWxhdGVzKSB0aGUgc3R5bGUgZm9yIHRoZSBlbGVtZW50c1xuICAgIHVwZGF0ZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTdHlsZShub3RpZnlSZW5kZXJlcikge1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgaWYgKGN5LmJhdGNoaW5nKCkpIHtcbiAgICAgICAgdmFyIGJFbGVzID0gY3kuX3ByaXZhdGUuYmF0Y2hTdHlsZUVsZXM7XG4gICAgICAgIGJFbGVzLm1lcmdlKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmcgYW5kIGV4aXQgZWFybHkgd2hlbiBiYXRjaGluZ1xuICAgICAgfVxuXG4gICAgICB2YXIgaGFzQ29tcG91bmRzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgICAgdmFyIHVwZGF0ZWRFbGVzID0gdGhpcztcbiAgICAgIG5vdGlmeVJlbmRlcmVyID0gbm90aWZ5UmVuZGVyZXIgfHwgbm90aWZ5UmVuZGVyZXIgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgaWYgKGhhc0NvbXBvdW5kcykge1xuICAgICAgICAvLyB0aGVuIGFkZCBldmVyeXRoaW5nIHVwIGFuZCBkb3duIGZvciBjb21wb3VuZCBzZWxlY3RvciBjaGVja3NcbiAgICAgICAgdXBkYXRlZEVsZXMgPSB0aGlzLnNwYXduU2VsZigpLm1lcmdlKHRoaXMuZGVzY2VuZGFudHMoKSkubWVyZ2UodGhpcy5wYXJlbnRzKCkpO1xuICAgICAgfSAvLyBsZXQgY2hhbmdlZEVsZXMgPSBzdHlsZS5hcHBseSggdXBkYXRlZEVsZXMgKTtcblxuXG4gICAgICB2YXIgY2hhbmdlZEVsZXMgPSB1cGRhdGVkRWxlcztcblxuICAgICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICAgIGNoYW5nZWRFbGVzLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIGxldCByZW5kZXJlciBrbm93IHdlIGNoYW5nZWQgc3R5bGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZWRFbGVzLmVtaXQoJ3N0eWxlJyk7IC8vIGp1c3QgZmlyZSB0aGUgZXZlbnRcbiAgICAgIH1cblxuICAgICAgdXBkYXRlZEVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuX3ByaXZhdGUuc3R5bGVEaXJ0eSA9IHRydWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgLy8gcHJpdmF0ZTogY2xlYXJzIGRpcnR5IGZsYWcgYW5kIHJlY2FsY3VsYXRlcyBzdHlsZVxuICAgIGNsZWFuU3R5bGU6IGZ1bmN0aW9uIGNsZWFuU3R5bGUoKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzLmN5KCk7XG5cbiAgICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGVsZSA9IHRoaXNbaV07XG5cbiAgICAgICAgaWYgKGVsZS5fcHJpdmF0ZS5zdHlsZURpcnR5KSB7XG4gICAgICAgICAgLy8gbi5iLiB0aGlzIGZsYWcgc2hvdWxkIGJlIHNldCBiZWZvcmUgYXBwbHkoKSB0byBhdm9pZCBwb3RlbnRpYWwgaW5maW5pdGUgcmVjdXJzaW9uXG4gICAgICAgICAgZWxlLl9wcml2YXRlLnN0eWxlRGlydHkgPSBmYWxzZTtcbiAgICAgICAgICBjeS5zdHlsZSgpLmFwcGx5KGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIGdldCB0aGUgaW50ZXJuYWwgcGFyc2VkIHN0eWxlIG9iamVjdCBmb3IgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eVxuICAgIHBhcnNlZFN0eWxlOiBmdW5jdGlvbiBwYXJzZWRTdHlsZShwcm9wZXJ0eSkge1xuICAgICAgdmFyIGluY2x1ZGVOb25EZWZhdWx0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgICB2YXIgY3kgPSBlbGUuY3koKTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGUpIHtcbiAgICAgICAgdGhpcy5jbGVhblN0eWxlKCk7XG4gICAgICAgIHZhciBvdmVycmlkZGVuU3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGVbcHJvcGVydHldO1xuXG4gICAgICAgIGlmIChvdmVycmlkZGVuU3R5bGUgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBvdmVycmlkZGVuU3R5bGU7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5jbHVkZU5vbkRlZmF1bHQpIHtcbiAgICAgICAgICByZXR1cm4gY3kuc3R5bGUoKS5nZXREZWZhdWx0UHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBudW1lcmljU3R5bGU6IGZ1bmN0aW9uIG51bWVyaWNTdHlsZShwcm9wZXJ0eSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmICghZWxlLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlKSB7XG4gICAgICAgIHZhciBwc3R5bGUgPSBlbGUucHN0eWxlKHByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuIHBzdHlsZS5wZlZhbHVlICE9PSB1bmRlZmluZWQgPyBwc3R5bGUucGZWYWx1ZSA6IHBzdHlsZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG51bWVyaWNTdHlsZVVuaXRzOiBmdW5jdGlvbiBudW1lcmljU3R5bGVVbml0cyhwcm9wZXJ0eSkge1xuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmICghZWxlLmN5KCkuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUucHN0eWxlKHByb3BlcnR5KS51bml0cztcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIGdldCB0aGUgc3BlY2lmaWVkIGNzcyBwcm9wZXJ0eSBhcyBhIHJlbmRlcmVkIHZhbHVlIChpLmUuIG9uLXNjcmVlbiB2YWx1ZSlcbiAgICAvLyBvciBnZXQgdGhlIHdob2xlIHJlbmRlcmVkIHN0eWxlIGlmIG5vIHByb3BlcnR5IHNwZWNpZmllZCAoTkIgZG9lc24ndCBhbGxvdyBzZXR0aW5nKVxuICAgIHJlbmRlcmVkU3R5bGU6IGZ1bmN0aW9uIHJlbmRlcmVkU3R5bGUocHJvcGVydHkpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgIGlmIChlbGUpIHtcbiAgICAgICAgcmV0dXJuIGN5LnN0eWxlKCkuZ2V0UmVuZGVyZWRTdHlsZShlbGUsIHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8vIHJlYWQgdGhlIGNhbGN1bGF0ZWQgY3NzIHN0eWxlIG9mIHRoZSBlbGVtZW50IG9yIG92ZXJyaWRlIHRoZSBzdHlsZSAodmlhIGEgYnlwYXNzKVxuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShuYW1lLCB2YWx1ZSkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB2YXIgdXBkYXRlVHJhbnNpdGlvbnMgPSBmYWxzZTtcbiAgICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG5cbiAgICAgIGlmIChwbGFpbk9iamVjdChuYW1lKSkge1xuICAgICAgICAvLyB0aGVuIGV4dGVuZCB0aGUgYnlwYXNzXG4gICAgICAgIHZhciBwcm9wcyA9IG5hbWU7XG4gICAgICAgIHN0eWxlLmFwcGx5QnlwYXNzKHRoaXMsIHByb3BzLCB1cGRhdGVUcmFuc2l0aW9ucyk7XG4gICAgICAgIHRoaXMuZW1pdEFuZE5vdGlmeSgnc3R5bGUnKTsgLy8gbGV0IHRoZSByZW5kZXJlciBrbm93IHdlJ3ZlIHVwZGF0ZWQgc3R5bGVcbiAgICAgIH0gZWxzZSBpZiAoc3RyaW5nKG5hbWUpKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gdGhlbiBnZXQgdGhlIHByb3BlcnR5IGZyb20gdGhlIHN0eWxlXG4gICAgICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICAgICAgICBpZiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc3R5bGUuZ2V0U3R5bGVQcm9wZXJ0eVZhbHVlKGVsZSwgbmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGVtcHR5IGNvbGxlY3Rpb24gPT4gY2FuJ3QgZ2V0IGFueSB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVuIHNldCB0aGUgYnlwYXNzIHdpdGggdGhlIHByb3BlcnR5IHZhbHVlXG4gICAgICAgICAgc3R5bGUuYXBwbHlCeXBhc3ModGhpcywgbmFtZSwgdmFsdWUsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgICAgICB0aGlzLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7IC8vIGxldCB0aGUgcmVuZGVyZXIga25vdyB3ZSd2ZSB1cGRhdGVkIHN0eWxlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBfZWxlID0gdGhpc1swXTtcblxuICAgICAgICBpZiAoX2VsZSkge1xuICAgICAgICAgIHJldHVybiBzdHlsZS5nZXRSYXdTdHlsZShfZWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBlbXB0eSBjb2xsZWN0aW9uID0+IGNhbid0IGdldCBhbnkgdmFsdWVcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICByZW1vdmVTdHlsZTogZnVuY3Rpb24gcmVtb3ZlU3R5bGUobmFtZXMpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdmFyIHVwZGF0ZVRyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgICB2YXIgc3R5bGUgPSBjeS5zdHlsZSgpO1xuICAgICAgdmFyIGVsZXMgPSB0aGlzO1xuXG4gICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgICAgICBzdHlsZS5yZW1vdmVBbGxCeXBhc3NlcyhlbGUsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmFtZXMgPSBuYW1lcy5zcGxpdCgvXFxzKy8pO1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBlbGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIHZhciBfZWxlMiA9IGVsZXNbX2ldO1xuICAgICAgICAgIHN0eWxlLnJlbW92ZUJ5cGFzc2VzKF9lbGUyLCBuYW1lcywgdXBkYXRlVHJhbnNpdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdEFuZE5vdGlmeSgnc3R5bGUnKTsgLy8gbGV0IHRoZSByZW5kZXJlciBrbm93IHdlJ3ZlIHVwZGF0ZWQgc3R5bGVcblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBzaG93OiBmdW5jdGlvbiBzaG93KCkge1xuICAgICAgdGhpcy5jc3MoJ2Rpc3BsYXknLCAnZWxlbWVudCcpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBoaWRlOiBmdW5jdGlvbiBoaWRlKCkge1xuICAgICAgdGhpcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBlZmZlY3RpdmVPcGFjaXR5OiBmdW5jdGlvbiBlZmZlY3RpdmVPcGFjaXR5KCkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuXG4gICAgICBpZiAoZWxlKSB7XG4gICAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgICAgdmFyIHBhcmVudE9wYWNpdHkgPSBlbGUucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG5cbiAgICAgICAgaWYgKCFoYXNDb21wb3VuZE5vZGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmVudE9wYWNpdHk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGFyZW50cyA9ICFfcC5kYXRhLnBhcmVudCA/IG51bGwgOiBlbGUucGFyZW50cygpO1xuXG4gICAgICAgIGlmIChwYXJlbnRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcGFyZW50ID0gcGFyZW50c1tpXTtcbiAgICAgICAgICAgIHZhciBvcGFjaXR5ID0gcGFyZW50LnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlO1xuICAgICAgICAgICAgcGFyZW50T3BhY2l0eSA9IG9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnRPcGFjaXR5O1xuICAgICAgfVxuICAgIH0sXG4gICAgdHJhbnNwYXJlbnQ6IGZ1bmN0aW9uIHRyYW5zcGFyZW50KCkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGVsZS5jeSgpLmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICBpZiAoIWhhc0NvbXBvdW5kTm9kZXMpIHtcbiAgICAgICAgICByZXR1cm4gZWxlLnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlbGUuZWZmZWN0aXZlT3BhY2l0eSgpID09PSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBiYWNrZ3JvdW5kaW5nOiBmdW5jdGlvbiBiYWNrZ3JvdW5kaW5nKCkge1xuICAgICAgdmFyIGN5ID0gdGhpcy5jeSgpO1xuXG4gICAgICBpZiAoIWN5LnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmJhY2tncm91bmRpbmcgPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrQ29tcG91bmQoZWxlLCBwYXJlbnRPaykge1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgcGFyZW50cyA9IF9wLmRhdGEucGFyZW50ID8gZWxlLnBhcmVudHMoKSA6IG51bGw7XG5cbiAgICBpZiAocGFyZW50cykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW2ldO1xuXG4gICAgICAgIGlmICghcGFyZW50T2socGFyZW50KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVmaW5lRGVyaXZlZFN0YXRlRnVuY3Rpb24oc3BlY3MpIHtcbiAgICB2YXIgb2sgPSBzcGVjcy5vaztcbiAgICB2YXIgZWRnZU9rVmlhTm9kZSA9IHNwZWNzLmVkZ2VPa1ZpYU5vZGUgfHwgc3BlY3Mub2s7XG4gICAgdmFyIHBhcmVudE9rID0gc3BlY3MucGFyZW50T2sgfHwgc3BlY3Mub2s7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgICB2YXIgaGFzQ29tcG91bmROb2RlcyA9IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG5cbiAgICAgICAgaWYgKCFvayhlbGUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKGVsZSwgcGFyZW50T2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICAgICAgdmFyIHRndCA9IF9wLnRhcmdldDtcbiAgICAgICAgICByZXR1cm4gZWRnZU9rVmlhTm9kZShzcmMpICYmICghaGFzQ29tcG91bmROb2RlcyB8fCBjaGVja0NvbXBvdW5kKHNyYywgZWRnZU9rVmlhTm9kZSkpICYmIChzcmMgPT09IHRndCB8fCBlZGdlT2tWaWFOb2RlKHRndCkgJiYgKCFoYXNDb21wb3VuZE5vZGVzIHx8IGNoZWNrQ29tcG91bmQodGd0LCBlZGdlT2tWaWFOb2RlKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHZhciBlbGVUYWtlc1VwU3BhY2UgPSBjYWNoZVN0eWxlRnVuY3Rpb24oJ2VsZVRha2VzVXBTcGFjZScsIGZ1bmN0aW9uIChlbGUpIHtcbiAgICByZXR1cm4gZWxlLnBzdHlsZSgnZGlzcGxheScpLnZhbHVlID09PSAnZWxlbWVudCcgJiYgZWxlLndpZHRoKCkgIT09IDAgJiYgKGVsZS5pc05vZGUoKSA/IGVsZS5oZWlnaHQoKSAhPT0gMCA6IHRydWUpO1xuICB9KTtcbiAgZWxlc2ZuJDQudGFrZXNVcFNwYWNlID0gY2FjaGVQcm90b3R5cGVTdHlsZUZ1bmN0aW9uKCd0YWtlc1VwU3BhY2UnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gICAgb2s6IGVsZVRha2VzVXBTcGFjZVxuICB9KSk7XG4gIHZhciBlbGVJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbignZWxlSW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAoZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5wc3R5bGUoJ2V2ZW50cycpLnZhbHVlID09PSAneWVzJyAmJiBlbGUucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGVUYWtlc1VwU3BhY2UoZWxlKTtcbiAgfSk7XG4gIHZhciBwYXJlbnRJbnRlcmFjdGl2ZSA9IGNhY2hlU3R5bGVGdW5jdGlvbigncGFyZW50SW50ZXJhY3RpdmUnLCBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgcmV0dXJuIHBhcmVudC5wc3R5bGUoJ3Zpc2liaWxpdHknKS52YWx1ZSA9PT0gJ3Zpc2libGUnICYmIGVsZVRha2VzVXBTcGFjZShwYXJlbnQpO1xuICB9KTtcbiAgZWxlc2ZuJDQuaW50ZXJhY3RpdmUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ2ludGVyYWN0aXZlJywgZGVmaW5lRGVyaXZlZFN0YXRlRnVuY3Rpb24oe1xuICAgIG9rOiBlbGVJbnRlcmFjdGl2ZSxcbiAgICBwYXJlbnRPazogcGFyZW50SW50ZXJhY3RpdmUsXG4gICAgZWRnZU9rVmlhTm9kZTogZWxlVGFrZXNVcFNwYWNlXG4gIH0pKTtcblxuICBlbGVzZm4kNC5ub25pbnRlcmFjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHJldHVybiAhZWxlLmludGVyYWN0aXZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBlbGVWaXNpYmxlID0gY2FjaGVTdHlsZUZ1bmN0aW9uKCdlbGVWaXNpYmxlJywgZnVuY3Rpb24gKGVsZSkge1xuICAgIHJldHVybiBlbGUucHN0eWxlKCd2aXNpYmlsaXR5JykudmFsdWUgPT09ICd2aXNpYmxlJyAmJiBlbGUucHN0eWxlKCdvcGFjaXR5JykucGZWYWx1ZSAhPT0gMCAmJiBlbGVUYWtlc1VwU3BhY2UoZWxlKTtcbiAgfSk7XG4gIHZhciBlZGdlVmlzaWJsZVZpYU5vZGUgPSBlbGVUYWtlc1VwU3BhY2U7XG4gIGVsZXNmbiQ0LnZpc2libGUgPSBjYWNoZVByb3RvdHlwZVN0eWxlRnVuY3Rpb24oJ3Zpc2libGUnLCBkZWZpbmVEZXJpdmVkU3RhdGVGdW5jdGlvbih7XG4gICAgb2s6IGVsZVZpc2libGUsXG4gICAgZWRnZU9rVmlhTm9kZTogZWRnZVZpc2libGVWaWFOb2RlXG4gIH0pKTtcblxuICBlbGVzZm4kNC5oaWRkZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gIWVsZS52aXNpYmxlKCk7XG4gICAgfVxuICB9O1xuXG4gIGVsZXNmbiQ0LmlzQnVuZGxlZEJlemllciA9IGNhY2hlUHJvdG90eXBlU3R5bGVGdW5jdGlvbignaXNCdW5kbGVkQmV6aWVyJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5jeSgpLnN0eWxlRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICF0aGlzLnJlbW92ZWQoKSAmJiB0aGlzLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZSA9PT0gJ2JlemllcicgJiYgdGhpcy50YWtlc1VwU3BhY2UoKTtcbiAgfSk7XG4gIGVsZXNmbiQ0LmJ5cGFzcyA9IGVsZXNmbiQ0LmNzcyA9IGVsZXNmbiQ0LnN0eWxlO1xuICBlbGVzZm4kNC5yZW5kZXJlZENzcyA9IGVsZXNmbiQ0LnJlbmRlcmVkU3R5bGU7XG4gIGVsZXNmbiQ0LnJlbW92ZUJ5cGFzcyA9IGVsZXNmbiQ0LnJlbW92ZUNzcyA9IGVsZXNmbiQ0LnJlbW92ZVN0eWxlO1xuICBlbGVzZm4kNC5wc3R5bGUgPSBlbGVzZm4kNC5wYXJzZWRTdHlsZTtcblxuICB2YXIgZWxlc2ZuJDMgPSB7fTtcblxuICBmdW5jdGlvbiBkZWZpbmVTd2l0Y2hGdW5jdGlvbihwYXJhbXMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICB2YXIgY2hhbmdlZEVsZXMgPSBbXTsgLy8gZS5nLiBjeS5ub2RlcygpLnNlbGVjdCggZGF0YSwgaGFuZGxlciApXG5cbiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICB2YXIgZGF0YSA9IGFyZ3NbMF07XG4gICAgICAgIHZhciBoYW5kbGVyID0gYXJnc1sxXTtcbiAgICAgICAgdGhpcy5vbihwYXJhbXMuZXZlbnQsIGRhdGEsIGhhbmRsZXIpO1xuICAgICAgfSAvLyBlLmcuIGN5Lm5vZGVzKCkuc2VsZWN0KCBoYW5kbGVyIClcbiAgICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIGZuJDYoYXJnc1swXSkpIHtcbiAgICAgICAgdmFyIF9oYW5kbGVyID0gYXJnc1swXTtcbiAgICAgICAgdGhpcy5vbihwYXJhbXMuZXZlbnQsIF9oYW5kbGVyKTtcbiAgICAgIH0gLy8gZS5nLiBjeS5ub2RlcygpLnNlbGVjdCgpXG4gICAgICAvLyBlLmcuIChwcml2YXRlKSBjeS5ub2RlcygpLnNlbGVjdChbJ3RhcHNlbGVjdCddKVxuICAgICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDAgfHwgYXJncy5sZW5ndGggPT09IDEgJiYgYXJyYXkoYXJnc1swXSkpIHtcbiAgICAgICAgdmFyIGFkZGxFdmVudHMgPSBhcmdzLmxlbmd0aCA9PT0gMSA/IGFyZ3NbMF0gOiBudWxsO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSB0aGlzW2ldO1xuICAgICAgICAgIHZhciBhYmxlID0gIXBhcmFtcy5hYmxlRmllbGQgfHwgZWxlLl9wcml2YXRlW3BhcmFtcy5hYmxlRmllbGRdO1xuICAgICAgICAgIHZhciBjaGFuZ2VkID0gZWxlLl9wcml2YXRlW3BhcmFtcy5maWVsZF0gIT0gcGFyYW1zLnZhbHVlO1xuXG4gICAgICAgICAgaWYgKHBhcmFtcy5vdmVycmlkZUFibGUpIHtcbiAgICAgICAgICAgIHZhciBvdmVycmlkZUFibGUgPSBwYXJhbXMub3ZlcnJpZGVBYmxlKGVsZSk7XG5cbiAgICAgICAgICAgIGlmIChvdmVycmlkZUFibGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBhYmxlID0gb3ZlcnJpZGVBYmxlO1xuXG4gICAgICAgICAgICAgIGlmICghb3ZlcnJpZGVBYmxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgIH0gLy8gdG8gc2F2ZSBjeWNsZXMgYXNzdW1lIG5vdCBhYmxlIGZvciBhbGwgb24gb3ZlcnJpZGVcblxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhYmxlKSB7XG4gICAgICAgICAgICBlbGUuX3ByaXZhdGVbcGFyYW1zLmZpZWxkXSA9IHBhcmFtcy52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgY2hhbmdlZEVsZXMucHVzaChlbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjaGFuZ2VkQ29sbCA9IHRoaXMuc3Bhd24oY2hhbmdlZEVsZXMpO1xuICAgICAgICBjaGFuZ2VkQ29sbC51cGRhdGVTdHlsZSgpOyAvLyBjaGFuZ2Ugb2Ygc3RhdGUgPT4gcG9zc2libGUgY2hhbmdlIG9mIHN0eWxlXG5cbiAgICAgICAgY2hhbmdlZENvbGwuZW1pdChwYXJhbXMuZXZlbnQpO1xuXG4gICAgICAgIGlmIChhZGRsRXZlbnRzKSB7XG4gICAgICAgICAgY2hhbmdlZENvbGwuZW1pdChhZGRsRXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZGVmaW5lU3dpdGNoU2V0KHBhcmFtcykge1xuICAgIGVsZXNmbiQzW3BhcmFtcy5maWVsZF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1swXTtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICBpZiAocGFyYW1zLm92ZXJyaWRlRmllbGQpIHtcbiAgICAgICAgICB2YXIgdmFsID0gcGFyYW1zLm92ZXJyaWRlRmllbGQoZWxlKTtcblxuICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlLl9wcml2YXRlW3BhcmFtcy5maWVsZF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsZXNmbiQzW3BhcmFtcy5vbl0gPSBkZWZpbmVTd2l0Y2hGdW5jdGlvbih7XG4gICAgICBldmVudDogcGFyYW1zLm9uLFxuICAgICAgZmllbGQ6IHBhcmFtcy5maWVsZCxcbiAgICAgIGFibGVGaWVsZDogcGFyYW1zLmFibGVGaWVsZCxcbiAgICAgIG92ZXJyaWRlQWJsZTogcGFyYW1zLm92ZXJyaWRlQWJsZSxcbiAgICAgIHZhbHVlOiB0cnVlXG4gICAgfSk7XG4gICAgZWxlc2ZuJDNbcGFyYW1zLm9mZl0gPSBkZWZpbmVTd2l0Y2hGdW5jdGlvbih7XG4gICAgICBldmVudDogcGFyYW1zLm9mZixcbiAgICAgIGZpZWxkOiBwYXJhbXMuZmllbGQsXG4gICAgICBhYmxlRmllbGQ6IHBhcmFtcy5hYmxlRmllbGQsXG4gICAgICBvdmVycmlkZUFibGU6IHBhcmFtcy5vdmVycmlkZUFibGUsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIGRlZmluZVN3aXRjaFNldCh7XG4gICAgZmllbGQ6ICdsb2NrZWQnLFxuICAgIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmN5KCkuYXV0b2xvY2soKSA/IHRydWUgOiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBvbjogJ2xvY2snLFxuICAgIG9mZjogJ3VubG9jaydcbiAgfSk7XG4gIGRlZmluZVN3aXRjaFNldCh7XG4gICAgZmllbGQ6ICdncmFiYmFibGUnLFxuICAgIG92ZXJyaWRlRmllbGQ6IGZ1bmN0aW9uIG92ZXJyaWRlRmllbGQoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmN5KCkuYXV0b3VuZ3JhYmlmeSgpIHx8IGVsZS5wYW5uYWJsZSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBvbjogJ2dyYWJpZnknLFxuICAgIG9mZjogJ3VuZ3JhYmlmeSdcbiAgfSk7XG4gIGRlZmluZVN3aXRjaFNldCh7XG4gICAgZmllbGQ6ICdzZWxlY3RlZCcsXG4gICAgYWJsZUZpZWxkOiAnc2VsZWN0YWJsZScsXG4gICAgb3ZlcnJpZGVBYmxlOiBmdW5jdGlvbiBvdmVycmlkZUFibGUoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLmN5KCkuYXV0b3Vuc2VsZWN0aWZ5KCkgPyBmYWxzZSA6IHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIG9uOiAnc2VsZWN0JyxcbiAgICBvZmY6ICd1bnNlbGVjdCdcbiAgfSk7XG4gIGRlZmluZVN3aXRjaFNldCh7XG4gICAgZmllbGQ6ICdzZWxlY3RhYmxlJyxcbiAgICBvdmVycmlkZUZpZWxkOiBmdW5jdGlvbiBvdmVycmlkZUZpZWxkKGVsZSkge1xuICAgICAgcmV0dXJuIGVsZS5jeSgpLmF1dG91bnNlbGVjdGlmeSgpID8gZmFsc2UgOiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBvbjogJ3NlbGVjdGlmeScsXG4gICAgb2ZmOiAndW5zZWxlY3RpZnknXG4gIH0pO1xuICBlbGVzZm4kMy5kZXNlbGVjdCA9IGVsZXNmbiQzLnVuc2VsZWN0O1xuXG4gIGVsZXNmbiQzLmdyYWJiZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLmdyYWJiZWQ7XG4gICAgfVxuICB9O1xuXG4gIGRlZmluZVN3aXRjaFNldCh7XG4gICAgZmllbGQ6ICdhY3RpdmUnLFxuICAgIG9uOiAnYWN0aXZhdGUnLFxuICAgIG9mZjogJ3VuYWN0aXZhdGUnXG4gIH0pO1xuICBkZWZpbmVTd2l0Y2hTZXQoe1xuICAgIGZpZWxkOiAncGFubmFibGUnLFxuICAgIG9uOiAncGFuaWZ5JyxcbiAgICBvZmY6ICd1bnBhbmlmeSdcbiAgfSk7XG5cbiAgZWxlc2ZuJDMuaW5hY3RpdmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG5cbiAgICBpZiAoZWxlKSB7XG4gICAgICByZXR1cm4gIWVsZS5fcHJpdmF0ZS5hY3RpdmU7XG4gICAgfVxuICB9O1xuXG4gIHZhciBlbGVzZm4kMiA9IHt9OyAvLyBEQUcgZnVuY3Rpb25zXG4gIC8vLy8vLy8vLy8vLy8vLy9cblxuICB2YXIgZGVmaW5lRGFnRXh0cmVtaXR5ID0gZnVuY3Rpb24gZGVmaW5lRGFnRXh0cmVtaXR5KHBhcmFtcykge1xuICAgIHJldHVybiBmdW5jdGlvbiBkYWdFeHRyZW1pdHlJbXBsKHNlbGVjdG9yKSB7XG4gICAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgICB2YXIgcmV0ID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gZWxlc1tpXTtcblxuICAgICAgICBpZiAoIWVsZS5pc05vZGUoKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpc3F1YWxpZmllZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZWRnZXMgPSBlbGUuY29ubmVjdGVkRWRnZXMoKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVkZ2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tqXTtcbiAgICAgICAgICB2YXIgc3JjID0gZWRnZS5zb3VyY2UoKTtcbiAgICAgICAgICB2YXIgdGd0ID0gZWRnZS50YXJnZXQoKTtcblxuICAgICAgICAgIGlmIChwYXJhbXMubm9JbmNvbWluZ0VkZ2VzICYmIHRndCA9PT0gZWxlICYmIHNyYyAhPT0gZWxlIHx8IHBhcmFtcy5ub091dGdvaW5nRWRnZXMgJiYgc3JjID09PSBlbGUgJiYgdGd0ICE9PSBlbGUpIHtcbiAgICAgICAgICAgIGRpc3F1YWxpZmllZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRpc3F1YWxpZmllZCkge1xuICAgICAgICAgIHJldC5wdXNoKGVsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0LCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGRlZmluZURhZ09uZUhvcCA9IGZ1bmN0aW9uIGRlZmluZURhZ09uZUhvcChwYXJhbXMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gICAgICB2YXIgZWxlcyA9IHRoaXM7XG4gICAgICB2YXIgb0VsZXMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuXG4gICAgICAgIGlmICghZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWRnZXMgPSBlbGUuY29ubmVjdGVkRWRnZXMoKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVkZ2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBlZGdlc1tqXTtcbiAgICAgICAgICB2YXIgc3JjID0gZWRnZS5zb3VyY2UoKTtcbiAgICAgICAgICB2YXIgdGd0ID0gZWRnZS50YXJnZXQoKTtcblxuICAgICAgICAgIGlmIChwYXJhbXMub3V0Z29pbmcgJiYgc3JjID09PSBlbGUpIHtcbiAgICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBvRWxlcy5wdXNoKHRndCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMuaW5jb21pbmcgJiYgdGd0ID09PSBlbGUpIHtcbiAgICAgICAgICAgIG9FbGVzLnB1c2goZWRnZSk7XG4gICAgICAgICAgICBvRWxlcy5wdXNoKHNyYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKG9FbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGRlZmluZURhZ0FsbEhvcHMgPSBmdW5jdGlvbiBkZWZpbmVEYWdBbGxIb3BzKHBhcmFtcykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBlbGVzID0gdGhpcztcbiAgICAgIHZhciBzRWxlcyA9IFtdO1xuICAgICAgdmFyIHNFbGVzSWRzID0ge307XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgdmFyIG5leHQgPSBwYXJhbXMub3V0Z29pbmcgPyBlbGVzLm91dGdvZXJzKCkgOiBlbGVzLmluY29tZXJzKCk7XG5cbiAgICAgICAgaWYgKG5leHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gZG9uZSBpZiBub25lIGxlZnRcblxuXG4gICAgICAgIHZhciBuZXdOZXh0ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIG4gPSBuZXh0W2ldO1xuICAgICAgICAgIHZhciBuaWQgPSBuLmlkKCk7XG5cbiAgICAgICAgICBpZiAoIXNFbGVzSWRzW25pZF0pIHtcbiAgICAgICAgICAgIHNFbGVzSWRzW25pZF0gPSB0cnVlO1xuICAgICAgICAgICAgc0VsZXMucHVzaChuKTtcbiAgICAgICAgICAgIG5ld05leHQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbmV3TmV4dCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IC8vIGRvbmUgaWYgdG91Y2hlZCBhbGwgb3V0Z29lcnMgYWxyZWFkeVxuXG5cbiAgICAgICAgZWxlcyA9IG5leHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKHNFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH07XG4gIH07XG5cbiAgZWxlc2ZuJDIuY2xlYXJUcmF2ZXJzYWxDYWNoZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXNbaV0uX3ByaXZhdGUudHJhdmVyc2FsQ2FjaGUgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBleHRlbmQoZWxlc2ZuJDIsIHtcbiAgICAvLyBnZXQgdGhlIHJvb3Qgbm9kZXMgaW4gdGhlIERBR1xuICAgIHJvb3RzOiBkZWZpbmVEYWdFeHRyZW1pdHkoe1xuICAgICAgbm9JbmNvbWluZ0VkZ2VzOiB0cnVlXG4gICAgfSksXG4gICAgLy8gZ2V0IHRoZSBsZWFmIG5vZGVzIGluIHRoZSBEQUdcbiAgICBsZWF2ZXM6IGRlZmluZURhZ0V4dHJlbWl0eSh7XG4gICAgICBub091dGdvaW5nRWRnZXM6IHRydWVcbiAgICB9KSxcbiAgICAvLyBub3JtYWxseSBjYWxsZWQgY2hpbGRyZW4gaW4gZ3JhcGggdGhlb3J5XG4gICAgLy8gdGhlc2Ugbm9kZXMgPWVkZ2VzPT4gb3V0Z29pbmcgbm9kZXNcbiAgICBvdXRnb2VyczogY2FjaGUoZGVmaW5lRGFnT25lSG9wKHtcbiAgICAgIG91dGdvaW5nOiB0cnVlXG4gICAgfSksICdvdXRnb2VycycpLFxuICAgIC8vIGFrYSBEQUcgZGVzY2VuZGFudHNcbiAgICBzdWNjZXNzb3JzOiBkZWZpbmVEYWdBbGxIb3BzKHtcbiAgICAgIG91dGdvaW5nOiB0cnVlXG4gICAgfSksXG4gICAgLy8gbm9ybWFsbHkgY2FsbGVkIHBhcmVudHMgaW4gZ3JhcGggdGhlb3J5XG4gICAgLy8gdGhlc2Ugbm9kZXMgPD1lZGdlcz0gaW5jb21pbmcgbm9kZXNcbiAgICBpbmNvbWVyczogY2FjaGUoZGVmaW5lRGFnT25lSG9wKHtcbiAgICAgIGluY29taW5nOiB0cnVlXG4gICAgfSksICdpbmNvbWVycycpLFxuICAgIC8vIGFrYSBEQUcgYW5jZXN0b3JzXG4gICAgcHJlZGVjZXNzb3JzOiBkZWZpbmVEYWdBbGxIb3BzKHtcbiAgICAgIGluY29taW5nOiB0cnVlXG4gICAgfSlcbiAgfSk7IC8vIE5laWdoYm91cmhvb2QgZnVuY3Rpb25zXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZXh0ZW5kKGVsZXNmbiQyLCB7XG4gICAgbmVpZ2hib3Job29kOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgICAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGZvciBhbGwgbm9kZXNcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgdmFyIGNvbm5lY3RlZEVkZ2VzID0gbm9kZS5jb25uZWN0ZWRFZGdlcygpOyAvLyBmb3IgZWFjaCBjb25uZWN0ZWQgZWRnZSwgYWRkIHRoZSBlZGdlIGFuZCB0aGUgb3RoZXIgbm9kZVxuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29ubmVjdGVkRWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGNvbm5lY3RlZEVkZ2VzW2pdO1xuICAgICAgICAgIHZhciBzcmMgPSBlZGdlLnNvdXJjZSgpO1xuICAgICAgICAgIHZhciB0Z3QgPSBlZGdlLnRhcmdldCgpO1xuICAgICAgICAgIHZhciBvdGhlck5vZGUgPSBub2RlID09PSBzcmMgPyB0Z3QgOiBzcmM7IC8vIG5lZWQgY2hlY2sgaW4gY2FzZSBvZiBsb29wXG5cbiAgICAgICAgICBpZiAob3RoZXJOb2RlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gob3RoZXJOb2RlWzBdKTsgLy8gYWRkIG5vZGUgMSBob3AgYXdheVxuICAgICAgICAgIH0gLy8gYWRkIGNvbm5lY3RlZCBlZGdlXG5cblxuICAgICAgICAgIGVsZW1lbnRzLnB1c2goZWRnZVswXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3Bhd24oZWxlbWVudHMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfSwgJ25laWdoYm9yaG9vZCcpLFxuICAgIGNsb3NlZE5laWdoYm9yaG9vZDogZnVuY3Rpb24gY2xvc2VkTmVpZ2hib3Job29kKHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5uZWlnaGJvcmhvb2QoKS5hZGQodGhpcykuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9LFxuICAgIG9wZW5OZWlnaGJvcmhvb2Q6IGZ1bmN0aW9uIG9wZW5OZWlnaGJvcmhvb2Qoc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm5laWdoYm9yaG9vZChzZWxlY3Rvcik7XG4gICAgfVxuICB9KTsgLy8gYWxpYXNlc1xuXG4gIGVsZXNmbiQyLm5laWdoYm91cmhvb2QgPSBlbGVzZm4kMi5uZWlnaGJvcmhvb2Q7XG4gIGVsZXNmbiQyLmNsb3NlZE5laWdoYm91cmhvb2QgPSBlbGVzZm4kMi5jbG9zZWROZWlnaGJvcmhvb2Q7XG4gIGVsZXNmbiQyLm9wZW5OZWlnaGJvdXJob29kID0gZWxlc2ZuJDIub3Blbk5laWdoYm9yaG9vZDsgLy8gRWRnZSBmdW5jdGlvbnNcbiAgLy8vLy8vLy8vLy8vLy8vLy9cblxuICBleHRlbmQoZWxlc2ZuJDIsIHtcbiAgICBzb3VyY2U6IGNhY2hlKGZ1bmN0aW9uIHNvdXJjZUltcGwoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgdmFyIHNyYztcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICBzcmMgPSBlbGUuX3ByaXZhdGUuc291cmNlIHx8IGVsZS5jeSgpLmNvbGxlY3Rpb24oKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNyYyAmJiBzZWxlY3RvciA/IHNyYy5maWx0ZXIoc2VsZWN0b3IpIDogc3JjO1xuICAgIH0sICdzb3VyY2UnKSxcbiAgICB0YXJnZXQ6IGNhY2hlKGZ1bmN0aW9uIHRhcmdldEltcGwoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgdmFyIHRndDtcblxuICAgICAgaWYgKGVsZSkge1xuICAgICAgICB0Z3QgPSBlbGUuX3ByaXZhdGUudGFyZ2V0IHx8IGVsZS5jeSgpLmNvbGxlY3Rpb24oKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRndCAmJiBzZWxlY3RvciA/IHRndC5maWx0ZXIoc2VsZWN0b3IpIDogdGd0O1xuICAgIH0sICd0YXJnZXQnKSxcbiAgICBzb3VyY2VzOiBkZWZpbmVTb3VyY2VGdW5jdGlvbih7XG4gICAgICBhdHRyOiAnc291cmNlJ1xuICAgIH0pLFxuICAgIHRhcmdldHM6IGRlZmluZVNvdXJjZUZ1bmN0aW9uKHtcbiAgICAgIGF0dHI6ICd0YXJnZXQnXG4gICAgfSlcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZGVmaW5lU291cmNlRnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHNvdXJjZUltcGwoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBzb3VyY2VzID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgICAgdmFyIHNyYyA9IGVsZS5fcHJpdmF0ZVtwYXJhbXMuYXR0cl07XG5cbiAgICAgICAgaWYgKHNyYykge1xuICAgICAgICAgIHNvdXJjZXMucHVzaChzcmMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKHNvdXJjZXMsIHRydWUpLmZpbHRlcihzZWxlY3Rvcik7XG4gICAgfTtcbiAgfVxuXG4gIGV4dGVuZChlbGVzZm4kMiwge1xuICAgIGVkZ2VzV2l0aDogY2FjaGUoZGVmaW5lRWRnZXNXaXRoRnVuY3Rpb24oKSwgJ2VkZ2VzV2l0aCcpLFxuICAgIGVkZ2VzVG86IGNhY2hlKGRlZmluZUVkZ2VzV2l0aEZ1bmN0aW9uKHtcbiAgICAgIHRoaXNJc1NyYzogdHJ1ZVxuICAgIH0pLCAnZWRnZXNUbycpXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGRlZmluZUVkZ2VzV2l0aEZ1bmN0aW9uKHBhcmFtcykge1xuICAgIHJldHVybiBmdW5jdGlvbiBlZGdlc1dpdGhJbXBsKG90aGVyTm9kZXMpIHtcbiAgICAgIHZhciBlbGVtZW50cyA9IFtdO1xuICAgICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgICAgIHZhciBwID0gcGFyYW1zIHx8IHt9OyAvLyBnZXQgZWxlbWVudHMgaWYgYSBzZWxlY3RvciBpcyBzcGVjaWZpZWRcblxuICAgICAgaWYgKHN0cmluZyhvdGhlck5vZGVzKSkge1xuICAgICAgICBvdGhlck5vZGVzID0gY3kuJChvdGhlck5vZGVzKTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaCA9IDA7IGggPCBvdGhlck5vZGVzLmxlbmd0aDsgaCsrKSB7XG4gICAgICAgIHZhciBlZGdlcyA9IG90aGVyTm9kZXNbaF0uX3ByaXZhdGUuZWRnZXM7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICAgICAgdmFyIGVkZ2VEYXRhID0gZWRnZS5fcHJpdmF0ZS5kYXRhO1xuICAgICAgICAgIHZhciB0aGlzVG9PdGhlciA9IHRoaXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS5zb3VyY2UpICYmIG90aGVyTm9kZXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS50YXJnZXQpO1xuICAgICAgICAgIHZhciBvdGhlclRvVGhpcyA9IG90aGVyTm9kZXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS5zb3VyY2UpICYmIHRoaXMuaGFzRWxlbWVudFdpdGhJZChlZGdlRGF0YS50YXJnZXQpO1xuICAgICAgICAgIHZhciBlZGdlQ29ubmVjdHNUaGlzQW5kT3RoZXIgPSB0aGlzVG9PdGhlciB8fCBvdGhlclRvVGhpcztcblxuICAgICAgICAgIGlmICghZWRnZUNvbm5lY3RzVGhpc0FuZE90aGVyKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocC50aGlzSXNTcmMgfHwgcC50aGlzSXNUZ3QpIHtcbiAgICAgICAgICAgIGlmIChwLnRoaXNJc1NyYyAmJiAhdGhpc1RvT3RoZXIpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwLnRoaXNJc1RndCAmJiAhb3RoZXJUb1RoaXMpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZWxlbWVudHMucHVzaChlZGdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zcGF3bihlbGVtZW50cywgdHJ1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIGV4dGVuZChlbGVzZm4kMiwge1xuICAgIGNvbm5lY3RlZEVkZ2VzOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgIHZhciByZXRFbGVzID0gW107XG4gICAgICB2YXIgZWxlcyA9IHRoaXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IGVsZXNbaV07XG5cbiAgICAgICAgaWYgKCFub2RlLmlzTm9kZSgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgZWRnZSA9IGVkZ2VzW2pdO1xuICAgICAgICAgIHJldEVsZXMucHVzaChlZGdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zcGF3bihyZXRFbGVzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH0sICdjb25uZWN0ZWRFZGdlcycpLFxuICAgIGNvbm5lY3RlZE5vZGVzOiBjYWNoZShmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgIHZhciByZXRFbGVzID0gW107XG4gICAgICB2YXIgZWxlcyA9IHRoaXM7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWRnZSA9IGVsZXNbaV07XG5cbiAgICAgICAgaWYgKCFlZGdlLmlzRWRnZSgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXRFbGVzLnB1c2goZWRnZS5zb3VyY2UoKVswXSk7XG4gICAgICAgIHJldEVsZXMucHVzaChlZGdlLnRhcmdldCgpWzBdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc3Bhd24ocmV0RWxlcywgdHJ1ZSkuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICB9LCAnY29ubmVjdGVkTm9kZXMnKSxcbiAgICBwYXJhbGxlbEVkZ2VzOiBjYWNoZShkZWZpbmVQYXJhbGxlbEVkZ2VzRnVuY3Rpb24oKSwgJ3BhcmFsbGVsRWRnZXMnKSxcbiAgICBjb2RpcmVjdGVkRWRnZXM6IGNhY2hlKGRlZmluZVBhcmFsbGVsRWRnZXNGdW5jdGlvbih7XG4gICAgICBjb2RpcmVjdGVkOiB0cnVlXG4gICAgfSksICdjb2RpcmVjdGVkRWRnZXMnKVxuICB9KTtcblxuICBmdW5jdGlvbiBkZWZpbmVQYXJhbGxlbEVkZ2VzRnVuY3Rpb24ocGFyYW1zKSB7XG4gICAgdmFyIGRlZmF1bHRzID0ge1xuICAgICAgY29kaXJlY3RlZDogZmFsc2VcbiAgICB9O1xuICAgIHBhcmFtcyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhcmFsbGVsRWRnZXNJbXBsKHNlbGVjdG9yKSB7XG4gICAgICAvLyBtaWNyby1vcHRpbWlzZWQgZm9yIHJlbmRlcmVyXG4gICAgICB2YXIgZWxlbWVudHMgPSBbXTtcbiAgICAgIHZhciBlZGdlcyA9IHRoaXMuZWRnZXMoKTtcbiAgICAgIHZhciBwID0gcGFyYW1zOyAvLyBsb29rIGF0IGFsbCB0aGUgZWRnZXMgaW4gdGhlIGNvbGxlY3Rpb25cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZWRnZTEgPSBlZGdlc1tpXTtcbiAgICAgICAgdmFyIGVkZ2UxX3AgPSBlZGdlMS5fcHJpdmF0ZTtcbiAgICAgICAgdmFyIHNyYzEgPSBlZGdlMV9wLnNvdXJjZTtcbiAgICAgICAgdmFyIHNyY2lkMSA9IHNyYzEuX3ByaXZhdGUuZGF0YS5pZDtcbiAgICAgICAgdmFyIHRndGlkMSA9IGVkZ2UxX3AuZGF0YS50YXJnZXQ7XG4gICAgICAgIHZhciBzcmNFZGdlczEgPSBzcmMxLl9wcml2YXRlLmVkZ2VzOyAvLyBsb29rIGF0IGVkZ2VzIGNvbm5lY3RlZCB0byB0aGUgc3JjIG5vZGUgb2YgdGhpcyBlZGdlXG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzcmNFZGdlczEubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgZWRnZTIgPSBzcmNFZGdlczFbal07XG4gICAgICAgICAgdmFyIGVkZ2UyZGF0YSA9IGVkZ2UyLl9wcml2YXRlLmRhdGE7XG4gICAgICAgICAgdmFyIHRndGlkMiA9IGVkZ2UyZGF0YS50YXJnZXQ7XG4gICAgICAgICAgdmFyIHNyY2lkMiA9IGVkZ2UyZGF0YS5zb3VyY2U7XG4gICAgICAgICAgdmFyIGNvZGlyZWN0ZWQgPSB0Z3RpZDIgPT09IHRndGlkMSAmJiBzcmNpZDIgPT09IHNyY2lkMTtcbiAgICAgICAgICB2YXIgb3BwZGlyZWN0ZWQgPSBzcmNpZDEgPT09IHRndGlkMiAmJiB0Z3RpZDEgPT09IHNyY2lkMjtcblxuICAgICAgICAgIGlmIChwLmNvZGlyZWN0ZWQgJiYgY29kaXJlY3RlZCB8fCAhcC5jb2RpcmVjdGVkICYmIChjb2RpcmVjdGVkIHx8IG9wcGRpcmVjdGVkKSkge1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChlZGdlMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNwYXduKGVsZW1lbnRzLCB0cnVlKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgIH07XG4gIH0gLy8gTWlzYyBmdW5jdGlvbnNcbiAgLy8vLy8vLy8vLy8vLy8vLy9cblxuXG4gIGV4dGVuZChlbGVzZm4kMiwge1xuICAgIGNvbXBvbmVudHM6IGZ1bmN0aW9uIGNvbXBvbmVudHMocm9vdCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIGN5ID0gc2VsZi5jeSgpO1xuICAgICAgdmFyIHZpc2l0ZWQgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICB2YXIgdW52aXNpdGVkID0gcm9vdCA9PSBudWxsID8gc2VsZi5ub2RlcygpIDogcm9vdC5ub2RlcygpO1xuICAgICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICAgICAgaWYgKHJvb3QgIT0gbnVsbCAmJiB1bnZpc2l0ZWQuZW1wdHkoKSkge1xuICAgICAgICAvLyByb290IG1heSBjb250YWluIG9ubHkgZWRnZXNcbiAgICAgICAgdW52aXNpdGVkID0gcm9vdC5zb3VyY2VzKCk7IC8vIGRvZXNuJ3QgbWF0dGVyIHdoaWNoIG5vZGUgdG8gdXNlICh1bmRpcmVjdGVkKSwgc28ganVzdCB1c2UgdGhlIHNvdXJjZSBzaWRlc1xuICAgICAgfVxuXG4gICAgICB2YXIgdmlzaXRJbkNvbXBvbmVudCA9IGZ1bmN0aW9uIHZpc2l0SW5Db21wb25lbnQobm9kZSwgY29tcG9uZW50KSB7XG4gICAgICAgIHZpc2l0ZWQubWVyZ2Uobm9kZSk7XG4gICAgICAgIHVudmlzaXRlZC51bm1lcmdlKG5vZGUpO1xuICAgICAgICBjb21wb25lbnQubWVyZ2Uobm9kZSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodW52aXNpdGVkLmVtcHR5KCkpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuc3Bhd24oKTtcbiAgICAgIH1cblxuICAgICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICAgIC8vIGVhY2ggaXRlcmF0aW9uIHlpZWxkcyBhIGNvbXBvbmVudFxuICAgICAgICB2YXIgY21wdCA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgY29tcG9uZW50cy5wdXNoKGNtcHQpO1xuICAgICAgICB2YXIgcm9vdCA9IHVudmlzaXRlZFswXTtcbiAgICAgICAgdmlzaXRJbkNvbXBvbmVudChyb290LCBjbXB0KTtcbiAgICAgICAgc2VsZi5iZnMoe1xuICAgICAgICAgIGRpcmVjdGVkOiBmYWxzZSxcbiAgICAgICAgICByb290czogcm9vdCxcbiAgICAgICAgICB2aXNpdDogZnVuY3Rpb24gdmlzaXQodikge1xuICAgICAgICAgICAgcmV0dXJuIHZpc2l0SW5Db21wb25lbnQodiwgY21wdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY21wdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgbm9kZS5jb25uZWN0ZWRFZGdlcygpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIC8vIGNvbm5lY3RlZEVkZ2VzKCkgdXN1YWxseSBjYWNoZWRcbiAgICAgICAgICAgIGlmIChzZWxmLmhhcyhlKSAmJiBjbXB0LmhhcyhlLnNvdXJjZSgpKSAmJiBjbXB0LmhhcyhlLnRhcmdldCgpKSkge1xuICAgICAgICAgICAgICAvLyBoYXMoKSBpcyBjaGVhcFxuICAgICAgICAgICAgICBjbXB0Lm1lcmdlKGUpOyAvLyBmb3JFYWNoKCkgb25seSBjb25zaWRlcnMgbm9kZXMgLS0gc2V0cyBOIGF0IGNhbGwgdGltZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGRvIHtcbiAgICAgICAgX2xvb3AoKTtcbiAgICAgIH0gd2hpbGUgKHVudmlzaXRlZC5sZW5ndGggPiAwKTtcblxuICAgICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gICAgfSxcbiAgICBjb21wb25lbnQ6IGZ1bmN0aW9uIGNvbXBvbmVudCgpIHtcbiAgICAgIHZhciBlbGUgPSB0aGlzWzBdO1xuICAgICAgcmV0dXJuIGVsZS5jeSgpLm11dGFibGVFbGVtZW50cygpLmNvbXBvbmVudHMoZWxlKVswXTtcbiAgICB9XG4gIH0pO1xuICBlbGVzZm4kMi5jb21wb25lbnRzT2YgPSBlbGVzZm4kMi5jb21wb25lbnRzO1xuXG4gIHZhciBDb2xsZWN0aW9uID0gZnVuY3Rpb24gQ29sbGVjdGlvbihjeSwgZWxlbWVudHMpIHtcbiAgICB2YXIgdW5pcXVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTtcbiAgICB2YXIgcmVtb3ZlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogZmFsc2U7XG5cbiAgICBpZiAoY3kgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IoJ0EgY29sbGVjdGlvbiBtdXN0IGhhdmUgYSByZWZlcmVuY2UgdG8gdGhlIGNvcmUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbWFwID0gbmV3IE1hcCQyKCk7XG4gICAgdmFyIGNyZWF0ZWRFbGVtZW50cyA9IGZhbHNlO1xuXG4gICAgaWYgKCFlbGVtZW50cykge1xuICAgICAgZWxlbWVudHMgPSBbXTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDAgJiYgcGxhaW5PYmplY3QoZWxlbWVudHNbMF0pICYmICFlbGVtZW50KGVsZW1lbnRzWzBdKSkge1xuICAgICAgY3JlYXRlZEVsZW1lbnRzID0gdHJ1ZTsgLy8gbWFrZSBlbGVtZW50cyBmcm9tIGpzb24gYW5kIHJlc3RvcmUgYWxsIGF0IG9uY2UgbGF0ZXJcblxuICAgICAgdmFyIGVsZXMgPSBbXTtcbiAgICAgIHZhciBlbGVzSWRzID0gbmV3IFNldCQxKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBqc29uID0gZWxlbWVudHNbaV07XG5cbiAgICAgICAgaWYgKGpzb24uZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAganNvbi5kYXRhID0ge307XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2RhdGEgPSBqc29uLmRhdGE7IC8vIG1ha2Ugc3VyZSBuZXdseSBjcmVhdGVkIGVsZW1lbnRzIGhhdmUgdmFsaWQgaWRzXG5cbiAgICAgICAgaWYgKF9kYXRhLmlkID09IG51bGwpIHtcbiAgICAgICAgICBfZGF0YS5pZCA9IHV1aWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChjeS5oYXNFbGVtZW50V2l0aElkKF9kYXRhLmlkKSB8fCBlbGVzSWRzLmhhcyhfZGF0YS5pZCkpIHtcbiAgICAgICAgICBjb250aW51ZTsgLy8gY2FuJ3QgY3JlYXRlIGVsZW1lbnQgaWYgcHJpb3IgaWQgYWxyZWFkeSBleGlzdHNcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBlbGUgPSBuZXcgRWxlbWVudChjeSwganNvbiwgZmFsc2UpO1xuICAgICAgICBlbGVzLnB1c2goZWxlKTtcbiAgICAgICAgZWxlc0lkcy5hZGQoX2RhdGEuaWQpO1xuICAgICAgfVxuXG4gICAgICBlbGVtZW50cyA9IGVsZXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBfbCA9IGVsZW1lbnRzLmxlbmd0aDsgX2kgPCBfbDsgX2krKykge1xuICAgICAgdmFyIGVsZW1lbnQkMSA9IGVsZW1lbnRzW19pXVswXTsgLy8gWzBdIGluIGNhc2UgZWxlbWVudHMgaXMgYW4gYXJyYXkgb2YgY29sbGVjdGlvbnMsIHJhdGhlciB0aGFuIGFycmF5IG9mIGVsZW1lbnRzXG5cbiAgICAgIGlmIChlbGVtZW50JDEgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlkID0gZWxlbWVudCQxLl9wcml2YXRlLmRhdGEuaWQ7XG5cbiAgICAgIGlmICghdW5pcXVlIHx8ICFtYXAuaGFzKGlkKSkge1xuICAgICAgICBpZiAodW5pcXVlKSB7XG4gICAgICAgICAgbWFwLnNldChpZCwge1xuICAgICAgICAgICAgaW5kZXg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgZWxlOiBlbGVtZW50JDFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXNbdGhpcy5sZW5ndGhdID0gZWxlbWVudCQxO1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3ByaXZhdGUgPSB7XG4gICAgICBlbGVzOiB0aGlzLFxuICAgICAgY3k6IGN5LFxuXG4gICAgICBnZXQgbWFwKCkge1xuICAgICAgICBpZiAodGhpcy5sYXp5TWFwID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnJlYnVpbGRNYXAoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmxhenlNYXA7XG4gICAgICB9LFxuXG4gICAgICBzZXQgbWFwKG0pIHtcbiAgICAgICAgdGhpcy5sYXp5TWFwID0gbTtcbiAgICAgIH0sXG5cbiAgICAgIHJlYnVpbGRNYXA6IGZ1bmN0aW9uIHJlYnVpbGRNYXAoKSB7XG4gICAgICAgIHZhciBtID0gdGhpcy5sYXp5TWFwID0gbmV3IE1hcCQyKCk7XG4gICAgICAgIHZhciBlbGVzID0gdGhpcy5lbGVzO1xuXG4gICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgIHZhciBfZWxlID0gZWxlc1tfaTJdO1xuICAgICAgICAgIG0uc2V0KF9lbGUuaWQoKSwge1xuICAgICAgICAgICAgaW5kZXg6IF9pMixcbiAgICAgICAgICAgIGVsZTogX2VsZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICh1bmlxdWUpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUubWFwID0gbWFwO1xuICAgIH0gLy8gcmVzdG9yZSB0aGUgZWxlbWVudHMgaWYgd2UgY3JlYXRlZCB0aGVtIGZyb20ganNvblxuXG5cbiAgICBpZiAoY3JlYXRlZEVsZW1lbnRzICYmICFyZW1vdmVkKSB7XG4gICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICB9XG4gIH07IC8vIEZ1bmN0aW9uc1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIGtlZXAgdGhlIHByb3RvdHlwZXMgaW4gc3luYyAoYW4gZWxlbWVudCBoYXMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIGEgY29sbGVjdGlvbilcbiAgLy8gYW5kIHVzZSBlbGVmbiBhbmQgZWxlc2ZuIGFzIHNob3J0aGFuZHMgdG8gdGhlIHByb3RvdHlwZXNcblxuXG4gIHZhciBlbGVzZm4kMSA9IEVsZW1lbnQucHJvdG90eXBlID0gQ29sbGVjdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFycmF5LnByb3RvdHlwZSk7XG5cbiAgZWxlc2ZuJDEuaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICdjb2xsZWN0aW9uJztcbiAgfTtcblxuICBlbGVzZm4kMS5zcGF3biA9IGZ1bmN0aW9uIChlbGVzLCB1bmlxdWUpIHtcbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24odGhpcy5jeSgpLCBlbGVzLCB1bmlxdWUpO1xuICB9O1xuXG4gIGVsZXNmbiQxLnNwYXduU2VsZiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zcGF3bih0aGlzKTtcbiAgfTtcblxuICBlbGVzZm4kMS5jeSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgfTtcblxuICBlbGVzZm4kMS5yZW5kZXJlciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jeS5yZW5kZXJlcigpO1xuICB9O1xuXG4gIGVsZXNmbiQxLmVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXNbMF07XG4gIH07XG5cbiAgZWxlc2ZuJDEuY29sbGVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY29sbGVjdGlvbih0aGlzKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFuIGVsZW1lbnRcbiAgICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbih0aGlzLl9wcml2YXRlLmN5LCBbdGhpc10pO1xuICAgIH1cbiAgfTtcblxuICBlbGVzZm4kMS51bmlxdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKHRoaXMuX3ByaXZhdGUuY3ksIHRoaXMsIHRydWUpO1xuICB9O1xuXG4gIGVsZXNmbiQxLmhhc0VsZW1lbnRXaXRoSWQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBpZCA9ICcnICsgaWQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG5cbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tYXAuaGFzKGlkKTtcbiAgfTtcblxuICBlbGVzZm4kMS5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGlkID0gJycgKyBpZDsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG5cbiAgICB2YXIgZW50cnkgPSB0aGlzLl9wcml2YXRlLm1hcC5nZXQoaWQpO1xuXG4gICAgcmV0dXJuIGVudHJ5ID8gZW50cnkuZWxlIDogbmV3IENvbGxlY3Rpb24oY3kpOyAvLyBnZXQgZWxlIG9yIGVtcHR5IGNvbGxlY3Rpb25cbiAgfTtcblxuICBlbGVzZm4kMS4kaWQgPSBlbGVzZm4kMS5nZXRFbGVtZW50QnlJZDtcblxuICBlbGVzZm4kMS5wb29sSW5kZXggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgICB2YXIgZWxlcyA9IGN5Ll9wcml2YXRlLmVsZW1lbnRzO1xuICAgIHZhciBpZCA9IHRoaXNbMF0uX3ByaXZhdGUuZGF0YS5pZDtcbiAgICByZXR1cm4gZWxlcy5fcHJpdmF0ZS5tYXAuZ2V0KGlkKS5pbmRleDtcbiAgfTtcblxuICBlbGVzZm4kMS5pbmRleE9mID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBpZCA9IGVsZVswXS5fcHJpdmF0ZS5kYXRhLmlkO1xuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1hcC5nZXQoaWQpLmluZGV4O1xuICB9O1xuXG4gIGVsZXNmbiQxLmluZGV4T2ZJZCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIGlkID0gJycgKyBpZDsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1hcC5nZXQoaWQpLmluZGV4O1xuICB9O1xuXG4gIGVsZXNmbiQxLmpzb24gPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIGVsZSA9IHRoaXMuZWxlbWVudCgpO1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcblxuICAgIGlmIChlbGUgPT0gbnVsbCAmJiBvYmopIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gLy8gY2FuJ3Qgc2V0IHRvIG5vIGVsZXNcblxuXG4gICAgaWYgKGVsZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gLy8gY2FuJ3QgZ2V0IGZyb20gbm8gZWxlc1xuXG5cbiAgICB2YXIgcCA9IGVsZS5fcHJpdmF0ZTtcblxuICAgIGlmIChwbGFpbk9iamVjdChvYmopKSB7XG4gICAgICAvLyBzZXRcbiAgICAgIGN5LnN0YXJ0QmF0Y2goKTtcblxuICAgICAgaWYgKG9iai5kYXRhKSB7XG4gICAgICAgIGVsZS5kYXRhKG9iai5kYXRhKTtcbiAgICAgICAgdmFyIF9kYXRhMiA9IHAuZGF0YTtcblxuICAgICAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICAgICAgLy8gc291cmNlIGFuZCB0YXJnZXQgYXJlIGltbXV0YWJsZSB2aWEgZGF0YSgpXG4gICAgICAgICAgdmFyIG1vdmUgPSBmYWxzZTtcbiAgICAgICAgICB2YXIgc3BlYyA9IHt9O1xuICAgICAgICAgIHZhciBzcmMgPSBvYmouZGF0YS5zb3VyY2U7XG4gICAgICAgICAgdmFyIHRndCA9IG9iai5kYXRhLnRhcmdldDtcblxuICAgICAgICAgIGlmIChzcmMgIT0gbnVsbCAmJiBzcmMgIT0gX2RhdGEyLnNvdXJjZSkge1xuICAgICAgICAgICAgc3BlYy5zb3VyY2UgPSAnJyArIHNyYzsgLy8gaWQgbXVzdCBiZSBzdHJpbmdcblxuICAgICAgICAgICAgbW92ZSA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRndCAhPSBudWxsICYmIHRndCAhPSBfZGF0YTIudGFyZ2V0KSB7XG4gICAgICAgICAgICBzcGVjLnRhcmdldCA9ICcnICsgdGd0OyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gICAgICAgICAgICBtb3ZlID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobW92ZSkge1xuICAgICAgICAgICAgZWxlID0gZWxlLm1vdmUoc3BlYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHBhcmVudCBpcyBpbW11dGFibGUgdmlhIGRhdGEoKVxuICAgICAgICAgIHZhciBuZXdQYXJlbnRWYWxTcGVjZCA9ICgncGFyZW50JyBpbiBvYmouZGF0YSk7XG4gICAgICAgICAgdmFyIHBhcmVudCA9IG9iai5kYXRhLnBhcmVudDtcblxuICAgICAgICAgIGlmIChuZXdQYXJlbnRWYWxTcGVjZCAmJiAocGFyZW50ICE9IG51bGwgfHwgX2RhdGEyLnBhcmVudCAhPSBudWxsKSAmJiBwYXJlbnQgIT0gX2RhdGEyLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIC8vIGNhbid0IHNldCB1bmRlZmluZWQgaW1wZXJhdGl2ZWx5LCBzbyB1c2UgbnVsbFxuICAgICAgICAgICAgICBwYXJlbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgcGFyZW50ID0gJycgKyBwYXJlbnQ7IC8vIGlkIG11c3QgYmUgc3RyaW5nXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZSA9IGVsZS5tb3ZlKHtcbiAgICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob2JqLnBvc2l0aW9uKSB7XG4gICAgICAgIGVsZS5wb3NpdGlvbihvYmoucG9zaXRpb24pO1xuICAgICAgfSAvLyBpZ25vcmUgZ3JvdXAgLS0gaW1tdXRhYmxlXG5cblxuICAgICAgdmFyIGNoZWNrU3dpdGNoID0gZnVuY3Rpb24gY2hlY2tTd2l0Y2goaywgdHJ1ZUZuTmFtZSwgZmFsc2VGbk5hbWUpIHtcbiAgICAgICAgdmFyIG9ial9rID0gb2JqW2tdO1xuXG4gICAgICAgIGlmIChvYmpfayAhPSBudWxsICYmIG9ial9rICE9PSBwW2tdKSB7XG4gICAgICAgICAgaWYgKG9ial9rKSB7XG4gICAgICAgICAgICBlbGVbdHJ1ZUZuTmFtZV0oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlW2ZhbHNlRm5OYW1lXSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY2hlY2tTd2l0Y2goJ3JlbW92ZWQnLCAncmVtb3ZlJywgJ3Jlc3RvcmUnKTtcbiAgICAgIGNoZWNrU3dpdGNoKCdzZWxlY3RlZCcsICdzZWxlY3QnLCAndW5zZWxlY3QnKTtcbiAgICAgIGNoZWNrU3dpdGNoKCdzZWxlY3RhYmxlJywgJ3NlbGVjdGlmeScsICd1bnNlbGVjdGlmeScpO1xuICAgICAgY2hlY2tTd2l0Y2goJ2xvY2tlZCcsICdsb2NrJywgJ3VubG9jaycpO1xuICAgICAgY2hlY2tTd2l0Y2goJ2dyYWJiYWJsZScsICdncmFiaWZ5JywgJ3VuZ3JhYmlmeScpO1xuICAgICAgY2hlY2tTd2l0Y2goJ3Bhbm5hYmxlJywgJ3BhbmlmeScsICd1bnBhbmlmeScpO1xuXG4gICAgICBpZiAob2JqLmNsYXNzZXMgIT0gbnVsbCkge1xuICAgICAgICBlbGUuY2xhc3NlcyhvYmouY2xhc3Nlcyk7XG4gICAgICB9XG5cbiAgICAgIGN5LmVuZEJhdGNoKCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBnZXRcbiAgICAgIHZhciBqc29uID0ge1xuICAgICAgICBkYXRhOiBjb3B5KHAuZGF0YSksXG4gICAgICAgIHBvc2l0aW9uOiBjb3B5KHAucG9zaXRpb24pLFxuICAgICAgICBncm91cDogcC5ncm91cCxcbiAgICAgICAgcmVtb3ZlZDogcC5yZW1vdmVkLFxuICAgICAgICBzZWxlY3RlZDogcC5zZWxlY3RlZCxcbiAgICAgICAgc2VsZWN0YWJsZTogcC5zZWxlY3RhYmxlLFxuICAgICAgICBsb2NrZWQ6IHAubG9ja2VkLFxuICAgICAgICBncmFiYmFibGU6IHAuZ3JhYmJhYmxlLFxuICAgICAgICBwYW5uYWJsZTogcC5wYW5uYWJsZSxcbiAgICAgICAgY2xhc3NlczogbnVsbFxuICAgICAgfTtcbiAgICAgIGpzb24uY2xhc3NlcyA9ICcnO1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgcC5jbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICByZXR1cm4ganNvbi5jbGFzc2VzICs9IGkrKyA9PT0gMCA/IGNscyA6ICcgJyArIGNscztcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGpzb247XG4gICAgfVxuICB9O1xuXG4gIGVsZXNmbiQxLmpzb25zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBqc29ucyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIHZhciBqc29uID0gZWxlLmpzb24oKTtcbiAgICAgIGpzb25zLnB1c2goanNvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb25zO1xuICB9O1xuXG4gIGVsZXNmbiQxLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3koKTtcbiAgICB2YXIgZWxlc0FyciA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gdGhpc1tpXTtcbiAgICAgIHZhciBqc29uID0gZWxlLmpzb24oKTtcbiAgICAgIHZhciBjbG9uZSA9IG5ldyBFbGVtZW50KGN5LCBqc29uLCBmYWxzZSk7IC8vIE5CIG5vIHJlc3RvcmVcblxuICAgICAgZWxlc0Fyci5wdXNoKGNsb25lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oY3ksIGVsZXNBcnIpO1xuICB9O1xuXG4gIGVsZXNmbiQxLmNvcHkgPSBlbGVzZm4kMS5jbG9uZTtcblxuICBlbGVzZm4kMS5yZXN0b3JlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub3RpZnlSZW5kZXJlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgICB2YXIgYWRkVG9Qb29sID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY3kgPSBzZWxmLmN5KCk7XG4gICAgdmFyIGN5X3AgPSBjeS5fcHJpdmF0ZTsgLy8gY3JlYXRlIGFycmF5cyBvZiBub2RlcyBhbmQgZWRnZXMsIHNpbmNlIHdlIG5lZWQgdG9cbiAgICAvLyByZXN0b3JlIHRoZSBub2RlcyBmaXJzdFxuXG4gICAgdmFyIG5vZGVzID0gW107XG4gICAgdmFyIGVkZ2VzID0gW107XG4gICAgdmFyIGVsZW1lbnRzO1xuXG4gICAgZm9yICh2YXIgX2kzID0gMCwgbCA9IHNlbGYubGVuZ3RoOyBfaTMgPCBsOyBfaTMrKykge1xuICAgICAgdmFyIGVsZSA9IHNlbGZbX2kzXTtcblxuICAgICAgaWYgKGFkZFRvUG9vbCAmJiAhZWxlLnJlbW92ZWQoKSkge1xuICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGhhbmRsZSB0aGlzIGVsZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8ga2VlcCBub2RlcyBmaXJzdCBpbiB0aGUgYXJyYXkgYW5kIGVkZ2VzIGFmdGVyXG5cblxuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICAvLyBwdXQgdG8gZnJvbnQgb2YgYXJyYXkgaWYgbm9kZVxuICAgICAgICBub2Rlcy5wdXNoKGVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwdXQgdG8gZW5kIG9mIGFycmF5IGlmIGVkZ2VcbiAgICAgICAgZWRnZXMucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsZW1lbnRzID0gbm9kZXMuY29uY2F0KGVkZ2VzKTtcbiAgICB2YXIgaTtcblxuICAgIHZhciByZW1vdmVGcm9tRWxlbWVudHMgPSBmdW5jdGlvbiByZW1vdmVGcm9tRWxlbWVudHMoKSB7XG4gICAgICBlbGVtZW50cy5zcGxpY2UoaSwgMSk7XG4gICAgICBpLS07XG4gICAgfTsgLy8gbm93LCByZXN0b3JlIGVhY2ggZWxlbWVudFxuXG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfZWxlMiA9IGVsZW1lbnRzW2ldO1xuICAgICAgdmFyIF9wcml2YXRlID0gX2VsZTIuX3ByaXZhdGU7XG4gICAgICB2YXIgX2RhdGEzID0gX3ByaXZhdGUuZGF0YTsgLy8gdGhlIHRyYXZlcnNhbCBjYWNoZSBzaG91bGQgc3RhcnQgZnJlc2ggd2hlbiBlbGUgaXMgYWRkZWRcblxuICAgICAgX2VsZTIuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpOyAvLyBzZXQgaWQgYW5kIHZhbGlkYXRlXG5cblxuICAgICAgaWYgKCFhZGRUb1Bvb2wgJiYgIV9wcml2YXRlLnJlbW92ZWQpIDsgZWxzZSBpZiAoX2RhdGEzLmlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgX2RhdGEzLmlkID0gdXVpZCgpO1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIkMShfZGF0YTMuaWQpKSB7XG4gICAgICAgIF9kYXRhMy5pZCA9ICcnICsgX2RhdGEzLmlkOyAvLyBub3cgaXQncyBhIHN0cmluZ1xuICAgICAgfSBlbHNlIGlmIChlbXB0eVN0cmluZyhfZGF0YTMuaWQpIHx8ICFzdHJpbmcoX2RhdGEzLmlkKSkge1xuICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWxlbWVudCB3aXRoIGludmFsaWQgc3RyaW5nIElEIGAnICsgX2RhdGEzLmlkICsgJ2AnKTsgLy8gY2FuJ3QgY3JlYXRlIGVsZW1lbnQgaWYgaXQgaGFzIGVtcHR5IHN0cmluZyBhcyBpZCBvciBub24tc3RyaW5nIGlkXG5cbiAgICAgICAgcmVtb3ZlRnJvbUVsZW1lbnRzKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChjeS5oYXNFbGVtZW50V2l0aElkKF9kYXRhMy5pZCkpIHtcbiAgICAgICAgZXJyb3IoJ0NhbiBub3QgY3JlYXRlIHNlY29uZCBlbGVtZW50IHdpdGggSUQgYCcgKyBfZGF0YTMuaWQgKyAnYCcpOyAvLyBjYW4ndCBjcmVhdGUgZWxlbWVudCBpZiBvbmUgYWxyZWFkeSBoYXMgdGhhdCBpZFxuXG4gICAgICAgIHJlbW92ZUZyb21FbGVtZW50cygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGlkID0gX2RhdGEzLmlkOyAvLyBpZCBpcyBmaW5hbGlzZWQsIG5vdyBsZXQncyBrZWVwIGEgcmVmXG5cbiAgICAgIGlmIChfZWxlMi5pc05vZGUoKSkge1xuICAgICAgICAvLyBleHRyYSBjaGVja3MgZm9yIG5vZGVzXG4gICAgICAgIHZhciBwb3MgPSBfcHJpdmF0ZS5wb3NpdGlvbjsgLy8gbWFrZSBzdXJlIHRoZSBub2RlcyBoYXZlIGEgZGVmaW5lZCBwb3NpdGlvblxuXG4gICAgICAgIGlmIChwb3MueCA9PSBudWxsKSB7XG4gICAgICAgICAgcG9zLnggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvcy55ID09IG51bGwpIHtcbiAgICAgICAgICBwb3MueSA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKF9lbGUyLmlzRWRnZSgpKSB7XG4gICAgICAgIC8vIGV4dHJhIGNoZWNrcyBmb3IgZWRnZXNcbiAgICAgICAgdmFyIGVkZ2UgPSBfZWxlMjtcbiAgICAgICAgdmFyIGZpZWxkcyA9IFsnc291cmNlJywgJ3RhcmdldCddO1xuICAgICAgICB2YXIgZmllbGRzTGVuZ3RoID0gZmllbGRzLmxlbmd0aDtcbiAgICAgICAgdmFyIGJhZFNvdXJjZU9yVGFyZ2V0ID0gZmFsc2U7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWVsZHNMZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBmaWVsZCA9IGZpZWxkc1tqXTtcbiAgICAgICAgICB2YXIgdmFsID0gX2RhdGEzW2ZpZWxkXTtcblxuICAgICAgICAgIGlmIChudW1iZXIkMSh2YWwpKSB7XG4gICAgICAgICAgICB2YWwgPSBfZGF0YTNbZmllbGRdID0gJycgKyBfZGF0YTNbZmllbGRdOyAvLyBub3cgc3RyaW5nXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgIC8vIGNhbid0IGNyZWF0ZSBpZiBzb3VyY2Ugb3IgdGFyZ2V0IGlzIG5vdCBkZWZpbmVkIHByb3Blcmx5XG4gICAgICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWRnZSBgJyArIGlkICsgJ2Agd2l0aCB1bnNwZWNpZmllZCAnICsgZmllbGQpO1xuICAgICAgICAgICAgYmFkU291cmNlT3JUYXJnZXQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWN5Lmhhc0VsZW1lbnRXaXRoSWQodmFsKSkge1xuICAgICAgICAgICAgLy8gY2FuJ3QgY3JlYXRlIGVkZ2UgaWYgb25lIG9mIGl0cyBub2RlcyBkb2Vzbid0IGV4aXN0XG4gICAgICAgICAgICBlcnJvcignQ2FuIG5vdCBjcmVhdGUgZWRnZSBgJyArIGlkICsgJ2Agd2l0aCBub25leGlzdGFudCAnICsgZmllbGQgKyAnIGAnICsgdmFsICsgJ2AnKTtcbiAgICAgICAgICAgIGJhZFNvdXJjZU9yVGFyZ2V0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYmFkU291cmNlT3JUYXJnZXQpIHtcbiAgICAgICAgICByZW1vdmVGcm9tRWxlbWVudHMoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyBjYW4ndCBjcmVhdGUgdGhpc1xuXG5cbiAgICAgICAgdmFyIHNyYyA9IGN5LmdldEVsZW1lbnRCeUlkKF9kYXRhMy5zb3VyY2UpO1xuICAgICAgICB2YXIgdGd0ID0gY3kuZ2V0RWxlbWVudEJ5SWQoX2RhdGEzLnRhcmdldCk7IC8vIG9ubHkgb25lIGVkZ2UgaW4gbm9kZSBpZiBsb29wXG5cbiAgICAgICAgaWYgKHNyYy5zYW1lKHRndCkpIHtcbiAgICAgICAgICBzcmMuX3ByaXZhdGUuZWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcmMuX3ByaXZhdGUuZWRnZXMucHVzaChlZGdlKTtcblxuICAgICAgICAgIHRndC5fcHJpdmF0ZS5lZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRnZS5fcHJpdmF0ZS5zb3VyY2UgPSBzcmM7XG4gICAgICAgIGVkZ2UuX3ByaXZhdGUudGFyZ2V0ID0gdGd0O1xuICAgICAgfSAvLyBpZiBpcyBlZGdlXG4gICAgICAvLyBjcmVhdGUgbW9jayBpZHMgLyBpbmRleGVzIG1hcHMgZm9yIGVsZW1lbnQgc28gaXQgY2FuIGJlIHVzZWQgbGlrZSBjb2xsZWN0aW9uc1xuXG5cbiAgICAgIF9wcml2YXRlLm1hcCA9IG5ldyBNYXAkMigpO1xuXG4gICAgICBfcHJpdmF0ZS5tYXAuc2V0KGlkLCB7XG4gICAgICAgIGVsZTogX2VsZTIsXG4gICAgICAgIGluZGV4OiAwXG4gICAgICB9KTtcblxuICAgICAgX3ByaXZhdGUucmVtb3ZlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAoYWRkVG9Qb29sKSB7XG4gICAgICAgIGN5LmFkZFRvUG9vbChfZWxlMik7XG4gICAgICB9XG4gICAgfSAvLyBmb3IgZWFjaCBlbGVtZW50XG4gICAgLy8gZG8gY29tcG91bmQgbm9kZSBzYW5pdHkgY2hlY2tzXG5cblxuICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgIC8vIGVhY2ggbm9kZVxuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tfaTRdO1xuICAgICAgdmFyIF9kYXRhNCA9IG5vZGUuX3ByaXZhdGUuZGF0YTtcblxuICAgICAgaWYgKG51bWJlciQxKF9kYXRhNC5wYXJlbnQpKSB7XG4gICAgICAgIC8vIHRoZW4gYXV0b21ha2Ugc3RyaW5nXG4gICAgICAgIF9kYXRhNC5wYXJlbnQgPSAnJyArIF9kYXRhNC5wYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJlbnRJZCA9IF9kYXRhNC5wYXJlbnQ7XG4gICAgICB2YXIgc3BlY2lmaWVkUGFyZW50ID0gcGFyZW50SWQgIT0gbnVsbDtcblxuICAgICAgaWYgKHNwZWNpZmllZFBhcmVudCB8fCBub2RlLl9wcml2YXRlLnBhcmVudCkge1xuICAgICAgICB2YXIgcGFyZW50ID0gbm9kZS5fcHJpdmF0ZS5wYXJlbnQgPyBjeS5jb2xsZWN0aW9uKCkubWVyZ2Uobm9kZS5fcHJpdmF0ZS5wYXJlbnQpIDogY3kuZ2V0RWxlbWVudEJ5SWQocGFyZW50SWQpO1xuXG4gICAgICAgIGlmIChwYXJlbnQuZW1wdHkoKSkge1xuICAgICAgICAgIC8vIG5vbi1leGlzdGFudCBwYXJlbnQ7IGp1c3QgcmVtb3ZlIGl0XG4gICAgICAgICAgX2RhdGE0LnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJlbnRbMF0ucmVtb3ZlZCgpKSB7XG4gICAgICAgICAgd2FybignTm9kZSBhZGRlZCB3aXRoIG1pc3NpbmcgcGFyZW50LCByZWZlcmVuY2UgdG8gcGFyZW50IHJlbW92ZWQnKTtcbiAgICAgICAgICBfZGF0YTQucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5vZGUuX3ByaXZhdGUucGFyZW50ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc2VsZkFzUGFyZW50ID0gZmFsc2U7XG4gICAgICAgICAgdmFyIGFuY2VzdG9yID0gcGFyZW50O1xuXG4gICAgICAgICAgd2hpbGUgKCFhbmNlc3Rvci5lbXB0eSgpKSB7XG4gICAgICAgICAgICBpZiAobm9kZS5zYW1lKGFuY2VzdG9yKSkge1xuICAgICAgICAgICAgICAvLyBtYXJrIHNlbGYgYXMgcGFyZW50IGFuZCByZW1vdmUgZnJvbSBkYXRhXG4gICAgICAgICAgICAgIHNlbGZBc1BhcmVudCA9IHRydWU7XG4gICAgICAgICAgICAgIF9kYXRhNC5wYXJlbnQgPSB1bmRlZmluZWQ7IC8vIHJlbW92ZSBwYXJlbnQgcmVmZXJlbmNlXG4gICAgICAgICAgICAgIC8vIGV4aXQgb3Igd2UgbG9vcCBmb3JldmVyXG5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzZWxmQXNQYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIGNvbm5lY3Qgd2l0aCBjaGlsZHJlblxuICAgICAgICAgICAgcGFyZW50WzBdLl9wcml2YXRlLmNoaWxkcmVuLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICAgIG5vZGUuX3ByaXZhdGUucGFyZW50ID0gcGFyZW50WzBdOyAvLyBsZXQgdGhlIGNvcmUga25vdyB3ZSBoYXZlIGEgY29tcG91bmQgZ3JhcGhcblxuICAgICAgICAgICAgY3lfcC5oYXNDb21wb3VuZE5vZGVzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZWxzZVxuXG4gICAgICB9IC8vIGlmIHNwZWNpZmllZCBwYXJlbnRcblxuICAgIH0gLy8gZm9yIGVhY2ggbm9kZVxuXG5cbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyIHJlc3RvcmVkID0gZWxlbWVudHMubGVuZ3RoID09PSBzZWxmLmxlbmd0aCA/IHNlbGYgOiBuZXcgQ29sbGVjdGlvbihjeSwgZWxlbWVudHMpO1xuXG4gICAgICBmb3IgKHZhciBfaTUgPSAwOyBfaTUgPCByZXN0b3JlZC5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICAgIHZhciBfZWxlMyA9IHJlc3RvcmVkW19pNV07XG5cbiAgICAgICAgaWYgKF9lbGUzLmlzTm9kZSgpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gYWRkaW5nIGFuIGVkZ2UgaW52YWxpZGF0ZXMgdGhlIHRyYXZlcnNhbCBjYWNoZXMgZm9yIHRoZSBwYXJhbGxlbCBlZGdlc1xuXG5cbiAgICAgICAgX2VsZTMucGFyYWxsZWxFZGdlcygpLmNsZWFyVHJhdmVyc2FsQ2FjaGUoKTsgLy8gYWRkaW5nIGFuIGVkZ2UgaW52YWxpZGF0ZXMgdGhlIHRyYXZlcnNhbCBjYWNoZSBmb3IgdGhlIGNvbm5lY3RlZCBub2Rlc1xuXG5cbiAgICAgICAgX2VsZTMuc291cmNlKCkuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpO1xuXG4gICAgICAgIF9lbGUzLnRhcmdldCgpLmNsZWFyVHJhdmVyc2FsQ2FjaGUoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRvVXBkYXRlU3R5bGU7XG5cbiAgICAgIGlmIChjeV9wLmhhc0NvbXBvdW5kTm9kZXMpIHtcbiAgICAgICAgdG9VcGRhdGVTdHlsZSA9IGN5LmNvbGxlY3Rpb24oKS5tZXJnZShyZXN0b3JlZCkubWVyZ2UocmVzdG9yZWQuY29ubmVjdGVkTm9kZXMoKSkubWVyZ2UocmVzdG9yZWQucGFyZW50KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9VcGRhdGVTdHlsZSA9IHJlc3RvcmVkO1xuICAgICAgfVxuXG4gICAgICB0b1VwZGF0ZVN0eWxlLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpLnVwZGF0ZVN0eWxlKG5vdGlmeVJlbmRlcmVyKTtcblxuICAgICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICAgIHJlc3RvcmVkLmVtaXRBbmROb3RpZnkoJ2FkZCcpO1xuICAgICAgfSBlbHNlIGlmIChhZGRUb1Bvb2wpIHtcbiAgICAgICAgcmVzdG9yZWQuZW1pdCgnYWRkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7IC8vIGNoYWluYWJpbGl0eVxuICB9O1xuXG4gIGVsZXNmbiQxLnJlbW92ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgcmV0dXJuIGVsZSAmJiBlbGUuX3ByaXZhdGUucmVtb3ZlZDtcbiAgfTtcblxuICBlbGVzZm4kMS5pbnNpZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVsZSA9IHRoaXNbMF07XG4gICAgcmV0dXJuIGVsZSAmJiAhZWxlLl9wcml2YXRlLnJlbW92ZWQ7XG4gIH07XG5cbiAgZWxlc2ZuJDEucmVtb3ZlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBub3RpZnlSZW5kZXJlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdHJ1ZTtcbiAgICB2YXIgcmVtb3ZlRnJvbVBvb2wgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBlbGVzVG9SZW1vdmUgPSBbXTtcbiAgICB2YXIgZWxlc1RvUmVtb3ZlSWRzID0ge307XG4gICAgdmFyIGN5ID0gc2VsZi5fcHJpdmF0ZS5jeTsgLy8gYWRkIGNvbm5lY3RlZCBlZGdlc1xuXG4gICAgZnVuY3Rpb24gYWRkQ29ubmVjdGVkRWRnZXMobm9kZSkge1xuICAgICAgdmFyIGVkZ2VzID0gbm9kZS5fcHJpdmF0ZS5lZGdlcztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBhZGQoZWRnZXNbaV0pO1xuICAgICAgfVxuICAgIH0gLy8gYWRkIGRlc2NlbmRhbnQgbm9kZXNcblxuXG4gICAgZnVuY3Rpb24gYWRkQ2hpbGRyZW4obm9kZSkge1xuICAgICAgdmFyIGNoaWxkcmVuID0gbm9kZS5fcHJpdmF0ZS5jaGlsZHJlbjtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICBhZGQoY2hpbGRyZW5baV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZChlbGUpIHtcbiAgICAgIHZhciBhbHJlYWR5QWRkZWQgPSBlbGVzVG9SZW1vdmVJZHNbZWxlLmlkKCldO1xuXG4gICAgICBpZiAocmVtb3ZlRnJvbVBvb2wgJiYgZWxlLnJlbW92ZWQoKSB8fCBhbHJlYWR5QWRkZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlc1RvUmVtb3ZlSWRzW2VsZS5pZCgpXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgZWxlc1RvUmVtb3ZlLnB1c2goZWxlKTsgLy8gbm9kZXMgYXJlIHJlbW92ZWQgbGFzdFxuXG4gICAgICAgIGFkZENvbm5lY3RlZEVkZ2VzKGVsZSk7XG4gICAgICAgIGFkZENoaWxkcmVuKGVsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVzVG9SZW1vdmUudW5zaGlmdChlbGUpOyAvLyBlZGdlcyBhcmUgcmVtb3ZlZCBmaXJzdFxuICAgICAgfVxuICAgIH0gLy8gbWFrZSB0aGUgbGlzdCBvZiBlbGVtZW50cyB0byByZW1vdmVcbiAgICAvLyAobWF5IGJlIHJlbW92aW5nIG1vcmUgdGhhbiBzcGVjaWZpZWQgZHVlIHRvIGNvbm5lY3RlZCBlZGdlcyBldGMpXG5cblxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gc2VsZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBzZWxmW2ldO1xuICAgICAgYWRkKGVsZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlRWRnZVJlZihub2RlLCBlZGdlKSB7XG4gICAgICB2YXIgY29ubmVjdGVkRWRnZXMgPSBub2RlLl9wcml2YXRlLmVkZ2VzO1xuICAgICAgcmVtb3ZlRnJvbUFycmF5KGNvbm5lY3RlZEVkZ2VzLCBlZGdlKTsgLy8gcmVtb3ZpbmcgYW4gZWRnZXMgaW52YWxpZGF0ZXMgdGhlIHRyYXZlcnNhbCBjYWNoZSBmb3IgaXRzIG5vZGVzXG5cbiAgICAgIG5vZGUuY2xlYXJUcmF2ZXJzYWxDYWNoZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZVBhcmFsbGVsUmVmKHBsbEVkZ2UpIHtcbiAgICAgIC8vIHJlbW92aW5nIGFuIGVkZ2UgaW52YWxpZGF0ZXMgdGhlIHRyYXZlcnNhbCBjYWNoZXMgZm9yIHRoZSBwYXJhbGxlbCBlZGdlc1xuICAgICAgcGxsRWRnZS5jbGVhclRyYXZlcnNhbENhY2hlKCk7XG4gICAgfVxuXG4gICAgdmFyIGFsdGVyZWRQYXJlbnRzID0gW107XG4gICAgYWx0ZXJlZFBhcmVudHMuaWRzID0ge307XG5cbiAgICBmdW5jdGlvbiByZW1vdmVDaGlsZFJlZihwYXJlbnQsIGVsZSkge1xuICAgICAgZWxlID0gZWxlWzBdO1xuICAgICAgcGFyZW50ID0gcGFyZW50WzBdO1xuICAgICAgdmFyIGNoaWxkcmVuID0gcGFyZW50Ll9wcml2YXRlLmNoaWxkcmVuO1xuICAgICAgdmFyIHBpZCA9IHBhcmVudC5pZCgpO1xuICAgICAgcmVtb3ZlRnJvbUFycmF5KGNoaWxkcmVuLCBlbGUpOyAvLyByZW1vdmUgcGFyZW50ID0+IGNoaWxkIHJlZlxuXG4gICAgICBlbGUuX3ByaXZhdGUucGFyZW50ID0gbnVsbDsgLy8gcmVtb3ZlIGNoaWxkID0+IHBhcmVudCByZWZcblxuICAgICAgaWYgKCFhbHRlcmVkUGFyZW50cy5pZHNbcGlkXSkge1xuICAgICAgICBhbHRlcmVkUGFyZW50cy5pZHNbcGlkXSA9IHRydWU7XG4gICAgICAgIGFsdGVyZWRQYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxmLmRpcnR5Q29tcG91bmRCb3VuZHNDYWNoZSgpO1xuXG4gICAgaWYgKHJlbW92ZUZyb21Qb29sKSB7XG4gICAgICBjeS5yZW1vdmVGcm9tUG9vbChlbGVzVG9SZW1vdmUpOyAvLyByZW1vdmUgZnJvbSBjb3JlIHBvb2xcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaTYgPSAwOyBfaTYgPCBlbGVzVG9SZW1vdmUubGVuZ3RoOyBfaTYrKykge1xuICAgICAgdmFyIF9lbGU0ID0gZWxlc1RvUmVtb3ZlW19pNl07XG5cbiAgICAgIGlmIChfZWxlNC5pc0VkZ2UoKSkge1xuICAgICAgICAvLyByZW1vdmUgcmVmZXJlbmNlcyB0byB0aGlzIGVkZ2UgaW4gaXRzIGNvbm5lY3RlZCBub2Rlc1xuICAgICAgICB2YXIgc3JjID0gX2VsZTQuc291cmNlKClbMF07XG5cbiAgICAgICAgdmFyIHRndCA9IF9lbGU0LnRhcmdldCgpWzBdO1xuXG4gICAgICAgIHJlbW92ZUVkZ2VSZWYoc3JjLCBfZWxlNCk7XG4gICAgICAgIHJlbW92ZUVkZ2VSZWYodGd0LCBfZWxlNCk7XG5cbiAgICAgICAgdmFyIHBsbEVkZ2VzID0gX2VsZTQucGFyYWxsZWxFZGdlcygpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGxsRWRnZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgcGxsRWRnZSA9IHBsbEVkZ2VzW2pdO1xuICAgICAgICAgIHJlbW92ZVBhcmFsbGVsUmVmKHBsbEVkZ2UpO1xuXG4gICAgICAgICAgaWYgKHBsbEVkZ2UuaXNCdW5kbGVkQmV6aWVyKCkpIHtcbiAgICAgICAgICAgIHBsbEVkZ2UuZGlydHlCb3VuZGluZ0JveENhY2hlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByZW1vdmUgcmVmZXJlbmNlIHRvIHBhcmVudFxuICAgICAgICB2YXIgcGFyZW50ID0gX2VsZTQucGFyZW50KCk7XG5cbiAgICAgICAgaWYgKHBhcmVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICByZW1vdmVDaGlsZFJlZihwYXJlbnQsIF9lbGU0KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVtb3ZlRnJvbVBvb2wpIHtcbiAgICAgICAgLy8gbWFyayBhcyByZW1vdmVkXG4gICAgICAgIF9lbGU0Ll9wcml2YXRlLnJlbW92ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gLy8gY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSBjb21wb3VuZCBncmFwaCBvciBub3RcblxuXG4gICAgdmFyIGVsZXNTdGlsbEluc2lkZSA9IGN5Ll9wcml2YXRlLmVsZW1lbnRzO1xuICAgIGN5Ll9wcml2YXRlLmhhc0NvbXBvdW5kTm9kZXMgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIF9pNyA9IDA7IF9pNyA8IGVsZXNTdGlsbEluc2lkZS5sZW5ndGg7IF9pNysrKSB7XG4gICAgICB2YXIgX2VsZTUgPSBlbGVzU3RpbGxJbnNpZGVbX2k3XTtcblxuICAgICAgaWYgKF9lbGU1LmlzUGFyZW50KCkpIHtcbiAgICAgICAgY3kuX3ByaXZhdGUuaGFzQ29tcG91bmROb2RlcyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZW1vdmVkRWxlbWVudHMgPSBuZXcgQ29sbGVjdGlvbih0aGlzLmN5KCksIGVsZXNUb1JlbW92ZSk7XG5cbiAgICBpZiAocmVtb3ZlZEVsZW1lbnRzLnNpemUoKSA+IDApIHtcbiAgICAgIC8vIG11c3QgbWFudWFsbHkgbm90aWZ5IHNpbmNlIHRyaWdnZXIgd29uJ3QgZG8gdGhpcyBhdXRvbWF0aWNhbGx5IG9uY2UgcmVtb3ZlZFxuICAgICAgaWYgKG5vdGlmeVJlbmRlcmVyKSB7XG4gICAgICAgIHJlbW92ZWRFbGVtZW50cy5lbWl0QW5kTm90aWZ5KCdyZW1vdmUnKTtcbiAgICAgIH0gZWxzZSBpZiAocmVtb3ZlRnJvbVBvb2wpIHtcbiAgICAgICAgcmVtb3ZlZEVsZW1lbnRzLmVtaXQoJ3JlbW92ZScpO1xuICAgICAgfVxuICAgIH0gLy8gdGhlIHBhcmVudHMgd2hvIHdlcmUgbW9kaWZpZWQgYnkgdGhlIHJlbW92YWwgbmVlZCB0aGVpciBzdHlsZSB1cGRhdGVkXG5cblxuICAgIGZvciAodmFyIF9pOCA9IDA7IF9pOCA8IGFsdGVyZWRQYXJlbnRzLmxlbmd0aDsgX2k4KyspIHtcbiAgICAgIHZhciBfZWxlNiA9IGFsdGVyZWRQYXJlbnRzW19pOF07XG5cbiAgICAgIGlmICghcmVtb3ZlRnJvbVBvb2wgfHwgIV9lbGU2LnJlbW92ZWQoKSkge1xuICAgICAgICBfZWxlNi51cGRhdGVTdHlsZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW1vdmVkRWxlbWVudHM7XG4gIH07XG5cbiAgZWxlc2ZuJDEubW92ZSA9IGZ1bmN0aW9uIChzdHJ1Y3QpIHtcbiAgICB2YXIgY3kgPSB0aGlzLl9wcml2YXRlLmN5O1xuICAgIHZhciBlbGVzID0gdGhpczsgLy8ganVzdCBjbGVhbiB1cCByZWZzLCBjYWNoZXMsIGV0Yy4gaW4gdGhlIHNhbWUgd2F5IGFzIHdoZW4gcmVtb3ZpbmcgYW5kIHRoZW4gcmVzdG9yaW5nXG4gICAgLy8gKG91ciBjYWxscyB0byByZW1vdmUvcmVzdG9yZSBkbyBub3QgcmVtb3ZlIGZyb20gdGhlIGdyYXBoIG9yIG1ha2UgZXZlbnRzKVxuXG4gICAgdmFyIG5vdGlmeVJlbmRlcmVyID0gZmFsc2U7XG4gICAgdmFyIG1vZGlmeVBvb2wgPSBmYWxzZTtcblxuICAgIHZhciB0b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGlkKSB7XG4gICAgICByZXR1cm4gaWQgPT0gbnVsbCA/IGlkIDogJycgKyBpZDtcbiAgICB9OyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG5cbiAgICBpZiAoc3RydWN0LnNvdXJjZSAhPT0gdW5kZWZpbmVkIHx8IHN0cnVjdC50YXJnZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHNyY0lkID0gdG9TdHJpbmcoc3RydWN0LnNvdXJjZSk7XG4gICAgICB2YXIgdGd0SWQgPSB0b1N0cmluZyhzdHJ1Y3QudGFyZ2V0KTtcbiAgICAgIHZhciBzcmNFeGlzdHMgPSBzcmNJZCAhPSBudWxsICYmIGN5Lmhhc0VsZW1lbnRXaXRoSWQoc3JjSWQpO1xuICAgICAgdmFyIHRndEV4aXN0cyA9IHRndElkICE9IG51bGwgJiYgY3kuaGFzRWxlbWVudFdpdGhJZCh0Z3RJZCk7XG5cbiAgICAgIGlmIChzcmNFeGlzdHMgfHwgdGd0RXhpc3RzKSB7XG4gICAgICAgIGN5LmJhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBhdm9pZCBkdXBsaWNhdGUgc3R5bGUgdXBkYXRlc1xuICAgICAgICAgIGVsZXMucmVtb3ZlKG5vdGlmeVJlbmRlcmVyLCBtb2RpZnlQb29sKTsgLy8gY2xlYW4gdXAgcmVmcyBldGMuXG5cbiAgICAgICAgICBlbGVzLmVtaXRBbmROb3RpZnkoJ21vdmVvdXQnKTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgICB2YXIgX2RhdGE1ID0gZWxlLl9wcml2YXRlLmRhdGE7XG5cbiAgICAgICAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgICAgICAgaWYgKHNyY0V4aXN0cykge1xuICAgICAgICAgICAgICAgIF9kYXRhNS5zb3VyY2UgPSBzcmNJZDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0Z3RFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICBfZGF0YTUudGFyZ2V0ID0gdGd0SWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVzLnJlc3RvcmUobm90aWZ5UmVuZGVyZXIsIG1vZGlmeVBvb2wpOyAvLyBtYWtlIG5ldyByZWZzLCBzdHlsZSwgZXRjLlxuICAgICAgICB9KTtcbiAgICAgICAgZWxlcy5lbWl0QW5kTm90aWZ5KCdtb3ZlJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdHJ1Y3QucGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIG1vdmUgbm9kZSB0byBuZXcgcGFyZW50XG4gICAgICB2YXIgcGFyZW50SWQgPSB0b1N0cmluZyhzdHJ1Y3QucGFyZW50KTtcbiAgICAgIHZhciBwYXJlbnRFeGlzdHMgPSBwYXJlbnRJZCA9PT0gbnVsbCB8fCBjeS5oYXNFbGVtZW50V2l0aElkKHBhcmVudElkKTtcblxuICAgICAgaWYgKHBhcmVudEV4aXN0cykge1xuICAgICAgICB2YXIgcGlkVG9Bc3NpZ24gPSBwYXJlbnRJZCA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IHBhcmVudElkO1xuICAgICAgICBjeS5iYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gYXZvaWQgZHVwbGljYXRlIHN0eWxlIHVwZGF0ZXNcbiAgICAgICAgICB2YXIgdXBkYXRlZCA9IGVsZXMucmVtb3ZlKG5vdGlmeVJlbmRlcmVyLCBtb2RpZnlQb29sKTsgLy8gY2xlYW4gdXAgcmVmcyBldGMuXG5cbiAgICAgICAgICB1cGRhdGVkLmVtaXRBbmROb3RpZnkoJ21vdmVvdXQnKTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgICB2YXIgX2RhdGE2ID0gZWxlLl9wcml2YXRlLmRhdGE7XG5cbiAgICAgICAgICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgICAgICAgX2RhdGE2LnBhcmVudCA9IHBpZFRvQXNzaWduO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHVwZGF0ZWQucmVzdG9yZShub3RpZnlSZW5kZXJlciwgbW9kaWZ5UG9vbCk7IC8vIG1ha2UgbmV3IHJlZnMsIHN0eWxlLCBldGMuXG4gICAgICAgIH0pO1xuICAgICAgICBlbGVzLmVtaXRBbmROb3RpZnkoJ21vdmUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBbZWxlc2ZuJGosIGVsZXNmbiRpLCBlbGVzZm4kaCwgZWxlc2ZuJGcsIGVsZXNmbiRmLCBkYXRhLCBlbGVzZm4kZCwgZGltZW5zaW9ucywgZWxlc2ZuJDksIGVsZXNmbiQ4LCBlbGVzZm4kNywgZWxlc2ZuJDYsIGVsZXNmbiQ1LCBlbGVzZm4kNCwgZWxlc2ZuJDMsIGVsZXNmbiQyXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICAgIGV4dGVuZChlbGVzZm4kMSwgcHJvcHMpO1xuICB9KTtcblxuICB2YXIgY29yZWZuJDkgPSB7XG4gICAgYWRkOiBmdW5jdGlvbiBhZGQob3B0cykge1xuICAgICAgdmFyIGVsZW1lbnRzO1xuICAgICAgdmFyIGN5ID0gdGhpczsgLy8gYWRkIHRoZSBlbGVtZW50c1xuXG4gICAgICBpZiAoZWxlbWVudE9yQ29sbGVjdGlvbihvcHRzKSkge1xuICAgICAgICB2YXIgZWxlcyA9IG9wdHM7XG5cbiAgICAgICAgaWYgKGVsZXMuX3ByaXZhdGUuY3kgPT09IGN5KSB7XG4gICAgICAgICAgLy8gc2FtZSBpbnN0YW5jZSA9PiBqdXN0IHJlc3RvcmVcbiAgICAgICAgICBlbGVtZW50cyA9IGVsZXMucmVzdG9yZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG90aGVyd2lzZSwgY29weSBmcm9tIGpzb25cbiAgICAgICAgICB2YXIganNvbnMgPSBbXTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICAgICAgICBqc29ucy5wdXNoKGVsZS5qc29uKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnRzID0gbmV3IENvbGxlY3Rpb24oY3ksIGpzb25zKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBzcGVjaWZ5IGFuIGFycmF5IG9mIG9wdGlvbnNcbiAgICAgIGVsc2UgaWYgKGFycmF5KG9wdHMpKSB7XG4gICAgICAgIHZhciBfanNvbnMgPSBvcHRzO1xuICAgICAgICBlbGVtZW50cyA9IG5ldyBDb2xsZWN0aW9uKGN5LCBfanNvbnMpO1xuICAgICAgfSAvLyBzcGVjaWZ5IHZpYSBvcHRzLm5vZGVzIGFuZCBvcHRzLmVkZ2VzXG4gICAgICBlbHNlIGlmIChwbGFpbk9iamVjdChvcHRzKSAmJiAoYXJyYXkob3B0cy5ub2RlcykgfHwgYXJyYXkob3B0cy5lZGdlcykpKSB7XG4gICAgICAgIHZhciBlbGVzQnlHcm91cCA9IG9wdHM7XG4gICAgICAgIHZhciBfanNvbnMyID0gW107XG4gICAgICAgIHZhciBncnMgPSBbJ25vZGVzJywgJ2VkZ2VzJ107XG5cbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBpbCA9IGdycy5sZW5ndGg7IF9pIDwgaWw7IF9pKyspIHtcbiAgICAgICAgICB2YXIgZ3JvdXAgPSBncnNbX2ldO1xuICAgICAgICAgIHZhciBlbGVzQXJyYXkgPSBlbGVzQnlHcm91cFtncm91cF07XG5cbiAgICAgICAgICBpZiAoYXJyYXkoZWxlc0FycmF5KSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIGpsID0gZWxlc0FycmF5Lmxlbmd0aDsgaiA8IGpsOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIGpzb24gPSBleHRlbmQoe1xuICAgICAgICAgICAgICAgIGdyb3VwOiBncm91cFxuICAgICAgICAgICAgICB9LCBlbGVzQXJyYXlbal0pO1xuXG4gICAgICAgICAgICAgIF9qc29uczIucHVzaChqc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50cyA9IG5ldyBDb2xsZWN0aW9uKGN5LCBfanNvbnMyKTtcbiAgICAgIH0gLy8gc3BlY2lmeSBvcHRpb25zIGZvciBvbmUgZWxlbWVudFxuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBfanNvbiA9IG9wdHM7XG4gICAgICAgIGVsZW1lbnRzID0gbmV3IEVsZW1lbnQoY3ksIF9qc29uKS5jb2xsZWN0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGVtZW50cztcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSA7IGVsc2UgaWYgKHN0cmluZyhjb2xsZWN0aW9uKSkge1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSBjb2xsZWN0aW9uO1xuICAgICAgICBjb2xsZWN0aW9uID0gdGhpcy4kKHNlbGVjdG9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbGxlY3Rpb24ucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qIGdsb2JhbCBGbG9hdDMyQXJyYXkgKi9cblxuICAvKiEgQmV6aWVyIGN1cnZlIGZ1bmN0aW9uIGdlbmVyYXRvci4gQ29weXJpZ2h0IEdhZXRhbiBSZW5hdWRlYXUuIE1JVCBMaWNlbnNlOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01JVF9MaWNlbnNlICovXG4gIGZ1bmN0aW9uIGdlbmVyYXRlQ3ViaWNCZXppZXIobVgxLCBtWTEsIG1YMiwgbVkyKSB7XG4gICAgdmFyIE5FV1RPTl9JVEVSQVRJT05TID0gNCxcbiAgICAgICAgTkVXVE9OX01JTl9TTE9QRSA9IDAuMDAxLFxuICAgICAgICBTVUJESVZJU0lPTl9QUkVDSVNJT04gPSAwLjAwMDAwMDEsXG4gICAgICAgIFNVQkRJVklTSU9OX01BWF9JVEVSQVRJT05TID0gMTAsXG4gICAgICAgIGtTcGxpbmVUYWJsZVNpemUgPSAxMSxcbiAgICAgICAga1NhbXBsZVN0ZXBTaXplID0gMS4wIC8gKGtTcGxpbmVUYWJsZVNpemUgLSAxLjApLFxuICAgICAgICBmbG9hdDMyQXJyYXlTdXBwb3J0ZWQgPSB0eXBlb2YgRmxvYXQzMkFycmF5ICE9PSAndW5kZWZpbmVkJztcbiAgICAvKiBNdXN0IGNvbnRhaW4gZm91ciBhcmd1bWVudHMuICovXG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gNCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKiBBcmd1bWVudHMgbXVzdCBiZSBudW1iZXJzLiAqL1xuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbaV0gIT09IFwibnVtYmVyXCIgfHwgaXNOYU4oYXJndW1lbnRzW2ldKSB8fCAhaXNGaW5pdGUoYXJndW1lbnRzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIFggdmFsdWVzIG11c3QgYmUgaW4gdGhlIFswLCAxXSByYW5nZS4gKi9cblxuXG4gICAgbVgxID0gTWF0aC5taW4obVgxLCAxKTtcbiAgICBtWDIgPSBNYXRoLm1pbihtWDIsIDEpO1xuICAgIG1YMSA9IE1hdGgubWF4KG1YMSwgMCk7XG4gICAgbVgyID0gTWF0aC5tYXgobVgyLCAwKTtcbiAgICB2YXIgbVNhbXBsZVZhbHVlcyA9IGZsb2F0MzJBcnJheVN1cHBvcnRlZCA/IG5ldyBGbG9hdDMyQXJyYXkoa1NwbGluZVRhYmxlU2l6ZSkgOiBuZXcgQXJyYXkoa1NwbGluZVRhYmxlU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBBKGFBMSwgYUEyKSB7XG4gICAgICByZXR1cm4gMS4wIC0gMy4wICogYUEyICsgMy4wICogYUExO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIEIoYUExLCBhQTIpIHtcbiAgICAgIHJldHVybiAzLjAgKiBhQTIgLSA2LjAgKiBhQTE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gQyhhQTEpIHtcbiAgICAgIHJldHVybiAzLjAgKiBhQTE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsY0JlemllcihhVCwgYUExLCBhQTIpIHtcbiAgICAgIHJldHVybiAoKEEoYUExLCBhQTIpICogYVQgKyBCKGFBMSwgYUEyKSkgKiBhVCArIEMoYUExKSkgKiBhVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTbG9wZShhVCwgYUExLCBhQTIpIHtcbiAgICAgIHJldHVybiAzLjAgKiBBKGFBMSwgYUEyKSAqIGFUICogYVQgKyAyLjAgKiBCKGFBMSwgYUEyKSAqIGFUICsgQyhhQTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5ld3RvblJhcGhzb25JdGVyYXRlKGFYLCBhR3Vlc3NUKSB7XG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgTkVXVE9OX0lURVJBVElPTlM7ICsrX2kpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRTbG9wZSA9IGdldFNsb3BlKGFHdWVzc1QsIG1YMSwgbVgyKTtcblxuICAgICAgICBpZiAoY3VycmVudFNsb3BlID09PSAwLjApIHtcbiAgICAgICAgICByZXR1cm4gYUd1ZXNzVDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXJyZW50WCA9IGNhbGNCZXppZXIoYUd1ZXNzVCwgbVgxLCBtWDIpIC0gYVg7XG4gICAgICAgIGFHdWVzc1QgLT0gY3VycmVudFggLyBjdXJyZW50U2xvcGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhR3Vlc3NUO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhbGNTYW1wbGVWYWx1ZXMoKSB7XG4gICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrU3BsaW5lVGFibGVTaXplOyArK19pMikge1xuICAgICAgICBtU2FtcGxlVmFsdWVzW19pMl0gPSBjYWxjQmV6aWVyKF9pMiAqIGtTYW1wbGVTdGVwU2l6ZSwgbVgxLCBtWDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpbmFyeVN1YmRpdmlkZShhWCwgYUEsIGFCKSB7XG4gICAgICB2YXIgY3VycmVudFgsXG4gICAgICAgICAgY3VycmVudFQsXG4gICAgICAgICAgaSA9IDA7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgY3VycmVudFQgPSBhQSArIChhQiAtIGFBKSAvIDIuMDtcbiAgICAgICAgY3VycmVudFggPSBjYWxjQmV6aWVyKGN1cnJlbnRULCBtWDEsIG1YMikgLSBhWDtcblxuICAgICAgICBpZiAoY3VycmVudFggPiAwLjApIHtcbiAgICAgICAgICBhQiA9IGN1cnJlbnRUO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFBID0gY3VycmVudFQ7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKE1hdGguYWJzKGN1cnJlbnRYKSA+IFNVQkRJVklTSU9OX1BSRUNJU0lPTiAmJiArK2kgPCBTVUJESVZJU0lPTl9NQVhfSVRFUkFUSU9OUyk7XG5cbiAgICAgIHJldHVybiBjdXJyZW50VDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRURm9yWChhWCkge1xuICAgICAgdmFyIGludGVydmFsU3RhcnQgPSAwLjAsXG4gICAgICAgICAgY3VycmVudFNhbXBsZSA9IDEsXG4gICAgICAgICAgbGFzdFNhbXBsZSA9IGtTcGxpbmVUYWJsZVNpemUgLSAxO1xuXG4gICAgICBmb3IgKDsgY3VycmVudFNhbXBsZSAhPT0gbGFzdFNhbXBsZSAmJiBtU2FtcGxlVmFsdWVzW2N1cnJlbnRTYW1wbGVdIDw9IGFYOyArK2N1cnJlbnRTYW1wbGUpIHtcbiAgICAgICAgaW50ZXJ2YWxTdGFydCArPSBrU2FtcGxlU3RlcFNpemU7XG4gICAgICB9XG5cbiAgICAgIC0tY3VycmVudFNhbXBsZTtcbiAgICAgIHZhciBkaXN0ID0gKGFYIC0gbVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlXSkgLyAobVNhbXBsZVZhbHVlc1tjdXJyZW50U2FtcGxlICsgMV0gLSBtU2FtcGxlVmFsdWVzW2N1cnJlbnRTYW1wbGVdKSxcbiAgICAgICAgICBndWVzc0ZvclQgPSBpbnRlcnZhbFN0YXJ0ICsgZGlzdCAqIGtTYW1wbGVTdGVwU2l6ZSxcbiAgICAgICAgICBpbml0aWFsU2xvcGUgPSBnZXRTbG9wZShndWVzc0ZvclQsIG1YMSwgbVgyKTtcblxuICAgICAgaWYgKGluaXRpYWxTbG9wZSA+PSBORVdUT05fTUlOX1NMT1BFKSB7XG4gICAgICAgIHJldHVybiBuZXd0b25SYXBoc29uSXRlcmF0ZShhWCwgZ3Vlc3NGb3JUKTtcbiAgICAgIH0gZWxzZSBpZiAoaW5pdGlhbFNsb3BlID09PSAwLjApIHtcbiAgICAgICAgcmV0dXJuIGd1ZXNzRm9yVDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBiaW5hcnlTdWJkaXZpZGUoYVgsIGludGVydmFsU3RhcnQsIGludGVydmFsU3RhcnQgKyBrU2FtcGxlU3RlcFNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBfcHJlY29tcHV0ZWQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIHByZWNvbXB1dGUoKSB7XG4gICAgICBfcHJlY29tcHV0ZWQgPSB0cnVlO1xuXG4gICAgICBpZiAobVgxICE9PSBtWTEgfHwgbVgyICE9PSBtWTIpIHtcbiAgICAgICAgY2FsY1NhbXBsZVZhbHVlcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBmID0gZnVuY3Rpb24gZihhWCkge1xuICAgICAgaWYgKCFfcHJlY29tcHV0ZWQpIHtcbiAgICAgICAgcHJlY29tcHV0ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAobVgxID09PSBtWTEgJiYgbVgyID09PSBtWTIpIHtcbiAgICAgICAgcmV0dXJuIGFYO1xuICAgICAgfVxuXG4gICAgICBpZiAoYVggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChhWCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGNCZXppZXIoZ2V0VEZvclgoYVgpLCBtWTEsIG1ZMik7XG4gICAgfTtcblxuICAgIGYuZ2V0Q29udHJvbFBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBbe1xuICAgICAgICB4OiBtWDEsXG4gICAgICAgIHk6IG1ZMVxuICAgICAgfSwge1xuICAgICAgICB4OiBtWDIsXG4gICAgICAgIHk6IG1ZMlxuICAgICAgfV07XG4gICAgfTtcblxuICAgIHZhciBzdHIgPSBcImdlbmVyYXRlQmV6aWVyKFwiICsgW21YMSwgbVkxLCBtWDIsIG1ZMl0gKyBcIilcIjtcblxuICAgIGYudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH07XG5cbiAgICByZXR1cm4gZjtcbiAgfVxuXG4gIC8qISBSdW5nZS1LdXR0YSBzcHJpbmcgcGh5c2ljcyBmdW5jdGlvbiBnZW5lcmF0b3IuIEFkYXB0ZWQgZnJvbSBGcmFtZXIuanMsIGNvcHlyaWdodCBLb2VuIEJvay4gTUlUIExpY2Vuc2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTUlUX0xpY2Vuc2UgKi9cblxuICAvKiBHaXZlbiBhIHRlbnNpb24sIGZyaWN0aW9uLCBhbmQgZHVyYXRpb24sIGEgc2ltdWxhdGlvbiBhdCA2MEZQUyB3aWxsIGZpcnN0IHJ1biB3aXRob3V0IGEgZGVmaW5lZCBkdXJhdGlvbiBpbiBvcmRlciB0byBjYWxjdWxhdGUgdGhlIGZ1bGwgcGF0aC4gQSBzZWNvbmQgcGFzc1xuICAgICB0aGVuIGFkanVzdHMgdGhlIHRpbWUgZGVsdGEgLS0gdXNpbmcgdGhlIHJlbGF0aW9uIGJldHdlZW4gYWN0dWFsIHRpbWUgYW5kIGR1cmF0aW9uIC0tIHRvIGNhbGN1bGF0ZSB0aGUgcGF0aCBmb3IgdGhlIGR1cmF0aW9uLWNvbnN0cmFpbmVkIGFuaW1hdGlvbi4gKi9cbiAgdmFyIGdlbmVyYXRlU3ByaW5nUks0ID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHNwcmluZ0FjY2VsZXJhdGlvbkZvclN0YXRlKHN0YXRlKSB7XG4gICAgICByZXR1cm4gLXN0YXRlLnRlbnNpb24gKiBzdGF0ZS54IC0gc3RhdGUuZnJpY3Rpb24gKiBzdGF0ZS52O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNwcmluZ0V2YWx1YXRlU3RhdGVXaXRoRGVyaXZhdGl2ZShpbml0aWFsU3RhdGUsIGR0LCBkZXJpdmF0aXZlKSB7XG4gICAgICB2YXIgc3RhdGUgPSB7XG4gICAgICAgIHg6IGluaXRpYWxTdGF0ZS54ICsgZGVyaXZhdGl2ZS5keCAqIGR0LFxuICAgICAgICB2OiBpbml0aWFsU3RhdGUudiArIGRlcml2YXRpdmUuZHYgKiBkdCxcbiAgICAgICAgdGVuc2lvbjogaW5pdGlhbFN0YXRlLnRlbnNpb24sXG4gICAgICAgIGZyaWN0aW9uOiBpbml0aWFsU3RhdGUuZnJpY3Rpb25cbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkeDogc3RhdGUudixcbiAgICAgICAgZHY6IHNwcmluZ0FjY2VsZXJhdGlvbkZvclN0YXRlKHN0YXRlKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzcHJpbmdJbnRlZ3JhdGVTdGF0ZShzdGF0ZSwgZHQpIHtcbiAgICAgIHZhciBhID0ge1xuICAgICAgICBkeDogc3RhdGUudixcbiAgICAgICAgZHY6IHNwcmluZ0FjY2VsZXJhdGlvbkZvclN0YXRlKHN0YXRlKVxuICAgICAgfSxcbiAgICAgICAgICBiID0gc3ByaW5nRXZhbHVhdGVTdGF0ZVdpdGhEZXJpdmF0aXZlKHN0YXRlLCBkdCAqIDAuNSwgYSksXG4gICAgICAgICAgYyA9IHNwcmluZ0V2YWx1YXRlU3RhdGVXaXRoRGVyaXZhdGl2ZShzdGF0ZSwgZHQgKiAwLjUsIGIpLFxuICAgICAgICAgIGQgPSBzcHJpbmdFdmFsdWF0ZVN0YXRlV2l0aERlcml2YXRpdmUoc3RhdGUsIGR0LCBjKSxcbiAgICAgICAgICBkeGR0ID0gMS4wIC8gNi4wICogKGEuZHggKyAyLjAgKiAoYi5keCArIGMuZHgpICsgZC5keCksXG4gICAgICAgICAgZHZkdCA9IDEuMCAvIDYuMCAqIChhLmR2ICsgMi4wICogKGIuZHYgKyBjLmR2KSArIGQuZHYpO1xuICAgICAgc3RhdGUueCA9IHN0YXRlLnggKyBkeGR0ICogZHQ7XG4gICAgICBzdGF0ZS52ID0gc3RhdGUudiArIGR2ZHQgKiBkdDtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gc3ByaW5nUks0RmFjdG9yeSh0ZW5zaW9uLCBmcmljdGlvbiwgZHVyYXRpb24pIHtcbiAgICAgIHZhciBpbml0U3RhdGUgPSB7XG4gICAgICAgIHg6IC0xLFxuICAgICAgICB2OiAwLFxuICAgICAgICB0ZW5zaW9uOiBudWxsLFxuICAgICAgICBmcmljdGlvbjogbnVsbFxuICAgICAgfSxcbiAgICAgICAgICBwYXRoID0gWzBdLFxuICAgICAgICAgIHRpbWVfbGFwc2VkID0gMCxcbiAgICAgICAgICB0b2xlcmFuY2UgPSAxIC8gMTAwMDAsXG4gICAgICAgICAgRFQgPSAxNiAvIDEwMDAsXG4gICAgICAgICAgaGF2ZV9kdXJhdGlvbixcbiAgICAgICAgICBkdCxcbiAgICAgICAgICBsYXN0X3N0YXRlO1xuICAgICAgdGVuc2lvbiA9IHBhcnNlRmxvYXQodGVuc2lvbikgfHwgNTAwO1xuICAgICAgZnJpY3Rpb24gPSBwYXJzZUZsb2F0KGZyaWN0aW9uKSB8fCAyMDtcbiAgICAgIGR1cmF0aW9uID0gZHVyYXRpb24gfHwgbnVsbDtcbiAgICAgIGluaXRTdGF0ZS50ZW5zaW9uID0gdGVuc2lvbjtcbiAgICAgIGluaXRTdGF0ZS5mcmljdGlvbiA9IGZyaWN0aW9uO1xuICAgICAgaGF2ZV9kdXJhdGlvbiA9IGR1cmF0aW9uICE9PSBudWxsO1xuICAgICAgLyogQ2FsY3VsYXRlIHRoZSBhY3R1YWwgdGltZSBpdCB0YWtlcyBmb3IgdGhpcyBhbmltYXRpb24gdG8gY29tcGxldGUgd2l0aCB0aGUgcHJvdmlkZWQgY29uZGl0aW9ucy4gKi9cblxuICAgICAgaWYgKGhhdmVfZHVyYXRpb24pIHtcbiAgICAgICAgLyogUnVuIHRoZSBzaW11bGF0aW9uIHdpdGhvdXQgYSBkdXJhdGlvbi4gKi9cbiAgICAgICAgdGltZV9sYXBzZWQgPSBzcHJpbmdSSzRGYWN0b3J5KHRlbnNpb24sIGZyaWN0aW9uKTtcbiAgICAgICAgLyogQ29tcHV0ZSB0aGUgYWRqdXN0ZWQgdGltZSBkZWx0YS4gKi9cblxuICAgICAgICBkdCA9IHRpbWVfbGFwc2VkIC8gZHVyYXRpb24gKiBEVDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGR0ID0gRFQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgLyogTmV4dC9zdGVwIGZ1bmN0aW9uIC4qL1xuICAgICAgICBsYXN0X3N0YXRlID0gc3ByaW5nSW50ZWdyYXRlU3RhdGUobGFzdF9zdGF0ZSB8fCBpbml0U3RhdGUsIGR0KTtcbiAgICAgICAgLyogU3RvcmUgdGhlIHBvc2l0aW9uLiAqL1xuXG4gICAgICAgIHBhdGgucHVzaCgxICsgbGFzdF9zdGF0ZS54KTtcbiAgICAgICAgdGltZV9sYXBzZWQgKz0gMTY7XG4gICAgICAgIC8qIElmIHRoZSBjaGFuZ2UgdGhyZXNob2xkIGlzIHJlYWNoZWQsIGJyZWFrLiAqL1xuXG4gICAgICAgIGlmICghKE1hdGguYWJzKGxhc3Rfc3RhdGUueCkgPiB0b2xlcmFuY2UgJiYgTWF0aC5hYnMobGFzdF9zdGF0ZS52KSA+IHRvbGVyYW5jZSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLyogSWYgZHVyYXRpb24gaXMgbm90IGRlZmluZWQsIHJldHVybiB0aGUgYWN0dWFsIHRpbWUgcmVxdWlyZWQgZm9yIGNvbXBsZXRpbmcgdGhpcyBhbmltYXRpb24uIE90aGVyd2lzZSwgcmV0dXJuIGEgY2xvc3VyZSB0aGF0IGhvbGRzIHRoZVxuICAgICAgICAgY29tcHV0ZWQgcGF0aCBhbmQgcmV0dXJucyBhIHNuYXBzaG90IG9mIHRoZSBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gYSBnaXZlbiBwZXJjZW50Q29tcGxldGUuICovXG5cblxuICAgICAgcmV0dXJuICFoYXZlX2R1cmF0aW9uID8gdGltZV9sYXBzZWQgOiBmdW5jdGlvbiAocGVyY2VudENvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybiBwYXRoW3BlcmNlbnRDb21wbGV0ZSAqIChwYXRoLmxlbmd0aCAtIDEpIHwgMF07XG4gICAgICB9O1xuICAgIH07XG4gIH0oKTtcblxuICB2YXIgY3ViaWNCZXppZXIgPSBmdW5jdGlvbiBjdWJpY0Jlemllcih0MSwgcDEsIHQyLCBwMikge1xuICAgIHZhciBiZXppZXIgPSBnZW5lcmF0ZUN1YmljQmV6aWVyKHQxLCBwMSwgdDIsIHAyKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICAgIHJldHVybiBzdGFydCArIChlbmQgLSBzdGFydCkgKiBiZXppZXIocGVyY2VudCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgZWFzaW5ncyA9IHtcbiAgICAnbGluZWFyJzogZnVuY3Rpb24gbGluZWFyKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICAgIHJldHVybiBzdGFydCArIChlbmQgLSBzdGFydCkgKiBwZXJjZW50O1xuICAgIH0sXG4gICAgLy8gZGVmYXVsdCBlYXNpbmdzXG4gICAgJ2Vhc2UnOiBjdWJpY0JlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpLFxuICAgICdlYXNlLWluJzogY3ViaWNCZXppZXIoMC40MiwgMCwgMSwgMSksXG4gICAgJ2Vhc2Utb3V0JzogY3ViaWNCZXppZXIoMCwgMCwgMC41OCwgMSksXG4gICAgJ2Vhc2UtaW4tb3V0JzogY3ViaWNCZXppZXIoMC40MiwgMCwgMC41OCwgMSksXG4gICAgLy8gc2luZVxuICAgICdlYXNlLWluLXNpbmUnOiBjdWJpY0JlemllcigwLjQ3LCAwLCAwLjc0NSwgMC43MTUpLFxuICAgICdlYXNlLW91dC1zaW5lJzogY3ViaWNCZXppZXIoMC4zOSwgMC41NzUsIDAuNTY1LCAxKSxcbiAgICAnZWFzZS1pbi1vdXQtc2luZSc6IGN1YmljQmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KSxcbiAgICAvLyBxdWFkXG4gICAgJ2Vhc2UtaW4tcXVhZCc6IGN1YmljQmV6aWVyKDAuNTUsIDAuMDg1LCAwLjY4LCAwLjUzKSxcbiAgICAnZWFzZS1vdXQtcXVhZCc6IGN1YmljQmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpLFxuICAgICdlYXNlLWluLW91dC1xdWFkJzogY3ViaWNCZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSksXG4gICAgLy8gY3ViaWNcbiAgICAnZWFzZS1pbi1jdWJpYyc6IGN1YmljQmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSksXG4gICAgJ2Vhc2Utb3V0LWN1YmljJzogY3ViaWNCZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKSxcbiAgICAnZWFzZS1pbi1vdXQtY3ViaWMnOiBjdWJpY0JlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKSxcbiAgICAvLyBxdWFydFxuICAgICdlYXNlLWluLXF1YXJ0JzogY3ViaWNCZXppZXIoMC44OTUsIDAuMDMsIDAuNjg1LCAwLjIyKSxcbiAgICAnZWFzZS1vdXQtcXVhcnQnOiBjdWJpY0JlemllcigwLjE2NSwgMC44NCwgMC40NCwgMSksXG4gICAgJ2Vhc2UtaW4tb3V0LXF1YXJ0JzogY3ViaWNCZXppZXIoMC43NywgMCwgMC4xNzUsIDEpLFxuICAgIC8vIHF1aW50XG4gICAgJ2Vhc2UtaW4tcXVpbnQnOiBjdWJpY0JlemllcigwLjc1NSwgMC4wNSwgMC44NTUsIDAuMDYpLFxuICAgICdlYXNlLW91dC1xdWludCc6IGN1YmljQmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpLFxuICAgICdlYXNlLWluLW91dC1xdWludCc6IGN1YmljQmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpLFxuICAgIC8vIGV4cG9cbiAgICAnZWFzZS1pbi1leHBvJzogY3ViaWNCZXppZXIoMC45NSwgMC4wNSwgMC43OTUsIDAuMDM1KSxcbiAgICAnZWFzZS1vdXQtZXhwbyc6IGN1YmljQmV6aWVyKDAuMTksIDEsIDAuMjIsIDEpLFxuICAgICdlYXNlLWluLW91dC1leHBvJzogY3ViaWNCZXppZXIoMSwgMCwgMCwgMSksXG4gICAgLy8gY2lyY1xuICAgICdlYXNlLWluLWNpcmMnOiBjdWJpY0JlemllcigwLjYsIDAuMDQsIDAuOTgsIDAuMzM1KSxcbiAgICAnZWFzZS1vdXQtY2lyYyc6IGN1YmljQmV6aWVyKDAuMDc1LCAwLjgyLCAwLjE2NSwgMSksXG4gICAgJ2Vhc2UtaW4tb3V0LWNpcmMnOiBjdWJpY0JlemllcigwLjc4NSwgMC4xMzUsIDAuMTUsIDAuODYpLFxuICAgIC8vIHVzZXIgcGFyYW0gZWFzaW5ncy4uLlxuICAgICdzcHJpbmcnOiBmdW5jdGlvbiBzcHJpbmcodGVuc2lvbiwgZnJpY3Rpb24sIGR1cmF0aW9uKSB7XG4gICAgICBpZiAoZHVyYXRpb24gPT09IDApIHtcbiAgICAgICAgLy8gY2FuJ3QgZ2V0IGEgc3ByaW5nIHcvIGR1cmF0aW9uIDBcbiAgICAgICAgcmV0dXJuIGVhc2luZ3MubGluZWFyOyAvLyBkdXJhdGlvbiAwID0+IGp1bXAgdG8gZW5kIHNvIGltcGwgZG9lc24ndCBtYXR0ZXJcbiAgICAgIH1cblxuICAgICAgdmFyIHNwcmluZyA9IGdlbmVyYXRlU3ByaW5nUks0KHRlbnNpb24sIGZyaWN0aW9uLCBkdXJhdGlvbik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHN0YXJ0LCBlbmQsIHBlcmNlbnQpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHNwcmluZyhwZXJjZW50KTtcbiAgICAgIH07XG4gICAgfSxcbiAgICAnY3ViaWMtYmV6aWVyJzogY3ViaWNCZXppZXJcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRFYXNlZFZhbHVlKHR5cGUsIHN0YXJ0LCBlbmQsIHBlcmNlbnQsIGVhc2luZ0ZuKSB7XG4gICAgaWYgKHBlcmNlbnQgPT09IDEpIHtcbiAgICAgIHJldHVybiBlbmQ7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgIHJldHVybiBlbmQ7XG4gICAgfVxuXG4gICAgdmFyIHZhbCA9IGVhc2luZ0ZuKHN0YXJ0LCBlbmQsIHBlcmNlbnQpO1xuXG4gICAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5yb3VuZFZhbHVlIHx8IHR5cGUuY29sb3IpIHtcbiAgICAgIHZhbCA9IE1hdGgucm91bmQodmFsKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZS5taW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFsID0gTWF0aC5tYXgodmFsLCB0eXBlLm1pbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbCA9IE1hdGgubWluKHZhbCwgdHlwZS5tYXgpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRWYWx1ZShwcm9wLCBzcGVjKSB7XG4gICAgaWYgKHByb3AucGZWYWx1ZSAhPSBudWxsIHx8IHByb3AudmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHByb3AucGZWYWx1ZSAhPSBudWxsICYmIChzcGVjID09IG51bGwgfHwgc3BlYy50eXBlLnVuaXRzICE9PSAnJScpKSB7XG4gICAgICAgIHJldHVybiBwcm9wLnBmVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcHJvcC52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb3A7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZWFzZShzdGFydFByb3AsIGVuZFByb3AsIHBlcmNlbnQsIGVhc2luZ0ZuLCBwcm9wU3BlYykge1xuICAgIHZhciB0eXBlID0gcHJvcFNwZWMgIT0gbnVsbCA/IHByb3BTcGVjLnR5cGUgOiBudWxsO1xuXG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxKSB7XG4gICAgICBwZXJjZW50ID0gMTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBnZXRWYWx1ZShzdGFydFByb3AsIHByb3BTcGVjKTtcbiAgICB2YXIgZW5kID0gZ2V0VmFsdWUoZW5kUHJvcCwgcHJvcFNwZWMpO1xuXG4gICAgaWYgKG51bWJlciQxKHN0YXJ0KSAmJiBudW1iZXIkMShlbmQpKSB7XG4gICAgICByZXR1cm4gZ2V0RWFzZWRWYWx1ZSh0eXBlLCBzdGFydCwgZW5kLCBwZXJjZW50LCBlYXNpbmdGbik7XG4gICAgfSBlbHNlIGlmIChhcnJheShzdGFydCkgJiYgYXJyYXkoZW5kKSkge1xuICAgICAgdmFyIGVhc2VkQXJyID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW5kLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzaSA9IHN0YXJ0W2ldO1xuICAgICAgICB2YXIgZWkgPSBlbmRbaV07XG5cbiAgICAgICAgaWYgKHNpICE9IG51bGwgJiYgZWkgIT0gbnVsbCkge1xuICAgICAgICAgIHZhciB2YWwgPSBnZXRFYXNlZFZhbHVlKHR5cGUsIHNpLCBlaSwgcGVyY2VudCwgZWFzaW5nRm4pO1xuICAgICAgICAgIGVhc2VkQXJyLnB1c2godmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlYXNlZEFyci5wdXNoKGVpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWFzZWRBcnI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0ZXAkMShzZWxmLCBhbmksIG5vdywgaXNDb3JlKSB7XG4gICAgdmFyIGlzRWxlcyA9ICFpc0NvcmU7XG4gICAgdmFyIF9wID0gc2VsZi5fcHJpdmF0ZTtcbiAgICB2YXIgYW5pX3AgPSBhbmkuX3ByaXZhdGU7XG4gICAgdmFyIHBFYXNpbmcgPSBhbmlfcC5lYXNpbmc7XG4gICAgdmFyIHN0YXJ0VGltZSA9IGFuaV9wLnN0YXJ0VGltZTtcbiAgICB2YXIgY3kgPSBpc0NvcmUgPyBzZWxmIDogc2VsZi5jeSgpO1xuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG5cbiAgICBpZiAoIWFuaV9wLmVhc2luZ0ltcGwpIHtcbiAgICAgIGlmIChwRWFzaW5nID09IG51bGwpIHtcbiAgICAgICAgLy8gdXNlIGRlZmF1bHRcbiAgICAgICAgYW5pX3AuZWFzaW5nSW1wbCA9IGVhc2luZ3NbJ2xpbmVhciddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlbiBkZWZpbmUgdy8gbmFtZVxuICAgICAgICB2YXIgZWFzaW5nVmFscztcblxuICAgICAgICBpZiAoc3RyaW5nKHBFYXNpbmcpKSB7XG4gICAgICAgICAgdmFyIGVhc2luZ1Byb3AgPSBzdHlsZS5wYXJzZSgndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCBwRWFzaW5nKTtcbiAgICAgICAgICBlYXNpbmdWYWxzID0gZWFzaW5nUHJvcC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGVuIGFzc3VtZSBwcmVwYXJzZWQgYXJyYXlcbiAgICAgICAgICBlYXNpbmdWYWxzID0gcEVhc2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBuYW1lLCBhcmdzO1xuXG4gICAgICAgIGlmIChzdHJpbmcoZWFzaW5nVmFscykpIHtcbiAgICAgICAgICBuYW1lID0gZWFzaW5nVmFscztcbiAgICAgICAgICBhcmdzID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmFtZSA9IGVhc2luZ1ZhbHNbMV07XG4gICAgICAgICAgYXJncyA9IGVhc2luZ1ZhbHMuc2xpY2UoMikubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgICAgICByZXR1cm4gK247XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gY3JlYXRlIHdpdGggYXJnc1xuICAgICAgICAgIGlmIChuYW1lID09PSAnc3ByaW5nJykge1xuICAgICAgICAgICAgYXJncy5wdXNoKGFuaV9wLmR1cmF0aW9uKTsgLy8gbmVlZCBkdXJhdGlvbiB0byBnZW5lcmF0ZSBzcHJpbmdcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbmlfcC5lYXNpbmdJbXBsID0gZWFzaW5nc1tuYW1lXS5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBzdGF0aWMgaW1wbCBieSBuYW1lXG4gICAgICAgICAgYW5pX3AuZWFzaW5nSW1wbCA9IGVhc2luZ3NbbmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZWFzaW5nID0gYW5pX3AuZWFzaW5nSW1wbDtcbiAgICB2YXIgcGVyY2VudDtcblxuICAgIGlmIChhbmlfcC5kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcGVyY2VudCA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlcmNlbnQgPSAobm93IC0gc3RhcnRUaW1lKSAvIGFuaV9wLmR1cmF0aW9uO1xuICAgIH1cblxuICAgIGlmIChhbmlfcC5hcHBseWluZykge1xuICAgICAgcGVyY2VudCA9IGFuaV9wLnByb2dyZXNzO1xuICAgIH1cblxuICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgcGVyY2VudCA9IDA7XG4gICAgfSBlbHNlIGlmIChwZXJjZW50ID4gMSkge1xuICAgICAgcGVyY2VudCA9IDE7XG4gICAgfVxuXG4gICAgaWYgKGFuaV9wLmRlbGF5ID09IG51bGwpIHtcbiAgICAgIC8vIHRoZW4gdXBkYXRlXG4gICAgICB2YXIgc3RhcnRQb3MgPSBhbmlfcC5zdGFydFBvc2l0aW9uO1xuICAgICAgdmFyIGVuZFBvcyA9IGFuaV9wLnBvc2l0aW9uO1xuXG4gICAgICBpZiAoZW5kUG9zICYmIGlzRWxlcyAmJiAhc2VsZi5sb2NrZWQoKSkge1xuICAgICAgICB2YXIgbmV3UG9zID0ge307XG5cbiAgICAgICAgaWYgKHZhbGlkKHN0YXJ0UG9zLngsIGVuZFBvcy54KSkge1xuICAgICAgICAgIG5ld1Bvcy54ID0gZWFzZShzdGFydFBvcy54LCBlbmRQb3MueCwgcGVyY2VudCwgZWFzaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZChzdGFydFBvcy55LCBlbmRQb3MueSkpIHtcbiAgICAgICAgICBuZXdQb3MueSA9IGVhc2Uoc3RhcnRQb3MueSwgZW5kUG9zLnksIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLnBvc2l0aW9uKG5ld1Bvcyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdGFydFBhbiA9IGFuaV9wLnN0YXJ0UGFuO1xuICAgICAgdmFyIGVuZFBhbiA9IGFuaV9wLnBhbjtcbiAgICAgIHZhciBwYW4gPSBfcC5wYW47XG4gICAgICB2YXIgYW5pbWF0aW5nUGFuID0gZW5kUGFuICE9IG51bGwgJiYgaXNDb3JlO1xuXG4gICAgICBpZiAoYW5pbWF0aW5nUGFuKSB7XG4gICAgICAgIGlmICh2YWxpZChzdGFydFBhbi54LCBlbmRQYW4ueCkpIHtcbiAgICAgICAgICBwYW4ueCA9IGVhc2Uoc3RhcnRQYW4ueCwgZW5kUGFuLngsIHBlcmNlbnQsIGVhc2luZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWQoc3RhcnRQYW4ueSwgZW5kUGFuLnkpKSB7XG4gICAgICAgICAgcGFuLnkgPSBlYXNlKHN0YXJ0UGFuLnksIGVuZFBhbi55LCBwZXJjZW50LCBlYXNpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5lbWl0KCdwYW4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN0YXJ0Wm9vbSA9IGFuaV9wLnN0YXJ0Wm9vbTtcbiAgICAgIHZhciBlbmRab29tID0gYW5pX3Auem9vbTtcbiAgICAgIHZhciBhbmltYXRpbmdab29tID0gZW5kWm9vbSAhPSBudWxsICYmIGlzQ29yZTtcblxuICAgICAgaWYgKGFuaW1hdGluZ1pvb20pIHtcbiAgICAgICAgaWYgKHZhbGlkKHN0YXJ0Wm9vbSwgZW5kWm9vbSkpIHtcbiAgICAgICAgICBfcC56b29tID0gYm91bmQoX3AubWluWm9vbSwgZWFzZShzdGFydFpvb20sIGVuZFpvb20sIHBlcmNlbnQsIGVhc2luZyksIF9wLm1heFpvb20pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5lbWl0KCd6b29tJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbmltYXRpbmdQYW4gfHwgYW5pbWF0aW5nWm9vbSkge1xuICAgICAgICBzZWxmLmVtaXQoJ3ZpZXdwb3J0Jyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wcyA9IGFuaV9wLnN0eWxlO1xuXG4gICAgICBpZiAocHJvcHMgJiYgcHJvcHMubGVuZ3RoID4gMCAmJiBpc0VsZXMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBwcm9wID0gcHJvcHNbaV07XG4gICAgICAgICAgdmFyIF9uYW1lID0gcHJvcC5uYW1lO1xuICAgICAgICAgIHZhciBlbmQgPSBwcm9wO1xuICAgICAgICAgIHZhciBzdGFydCA9IGFuaV9wLnN0YXJ0U3R5bGVbX25hbWVdO1xuICAgICAgICAgIHZhciBwcm9wU3BlYyA9IHN0eWxlLnByb3BlcnRpZXNbc3RhcnQubmFtZV07XG4gICAgICAgICAgdmFyIGVhc2VkVmFsID0gZWFzZShzdGFydCwgZW5kLCBwZXJjZW50LCBlYXNpbmcsIHByb3BTcGVjKTtcbiAgICAgICAgICBzdHlsZS5vdmVycmlkZUJ5cGFzcyhzZWxmLCBfbmFtZSwgZWFzZWRWYWwpO1xuICAgICAgICB9IC8vIGZvciBwcm9wc1xuXG5cbiAgICAgICAgc2VsZi5lbWl0KCdzdHlsZScpO1xuICAgICAgfSAvLyBpZlxuXG4gICAgfVxuXG4gICAgYW5pX3AucHJvZ3Jlc3MgPSBwZXJjZW50O1xuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWQoc3RhcnQsIGVuZCkge1xuICAgIGlmIChzdGFydCA9PSBudWxsIHx8IGVuZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG51bWJlciQxKHN0YXJ0KSAmJiBudW1iZXIkMShlbmQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnRBbmltYXRpb24oc2VsZiwgYW5pLCBub3csIGlzQ29yZSkge1xuICAgIHZhciBhbmlfcCA9IGFuaS5fcHJpdmF0ZTtcbiAgICBhbmlfcC5zdGFydGVkID0gdHJ1ZTtcbiAgICBhbmlfcC5zdGFydFRpbWUgPSBub3cgLSBhbmlfcC5wcm9ncmVzcyAqIGFuaV9wLmR1cmF0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RlcEFsbChub3csIGN5KSB7XG4gICAgdmFyIGVsZXMgPSBjeS5fcHJpdmF0ZS5hbmlFbGVzO1xuICAgIHZhciBkb25lRWxlcyA9IFtdO1xuXG4gICAgZnVuY3Rpb24gc3RlcE9uZShlbGUsIGlzQ29yZSkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIGN1cnJlbnQgPSBfcC5hbmltYXRpb24uY3VycmVudDtcbiAgICAgIHZhciBxdWV1ZSA9IF9wLmFuaW1hdGlvbi5xdWV1ZTtcbiAgICAgIHZhciByYW5BbmlzID0gZmFsc2U7IC8vIGlmIG5vdGhpbmcgY3VycmVudGx5IGFuaW1hdGluZywgZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBxdWV1ZVxuXG4gICAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIG5leHQgPSBxdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgY3VycmVudC5wdXNoKG5leHQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBjYWxsYmFja3MgPSBmdW5jdGlvbiBjYWxsYmFja3MoX2NhbGxiYWNrcykge1xuICAgICAgICBmb3IgKHZhciBqID0gX2NhbGxiYWNrcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIHZhciBjYiA9IF9jYWxsYmFja3Nbal07XG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9jYWxsYmFja3Muc3BsaWNlKDAsIF9jYWxsYmFja3MubGVuZ3RoKTtcbiAgICAgIH07IC8vIHN0ZXAgYW5kIHJlbW92ZSBpZiBkb25lXG5cblxuICAgICAgZm9yICh2YXIgaSA9IGN1cnJlbnQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdmFyIGFuaSA9IGN1cnJlbnRbaV07XG4gICAgICAgIHZhciBhbmlfcCA9IGFuaS5fcHJpdmF0ZTtcblxuICAgICAgICBpZiAoYW5pX3Auc3RvcHBlZCkge1xuICAgICAgICAgIGN1cnJlbnQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGFuaV9wLmhvb2tlZCA9IGZhbHNlO1xuICAgICAgICAgIGFuaV9wLnBsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgICBhbmlfcC5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgY2FsbGJhY2tzKGFuaV9wLmZyYW1lcyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWFuaV9wLnBsYXlpbmcgJiYgIWFuaV9wLmFwcGx5aW5nKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gYW4gYXBwbHkoKSB3aGlsZSBwbGF5aW5nIHNob3VsZG4ndCBkbyBhbnl0aGluZ1xuXG5cbiAgICAgICAgaWYgKGFuaV9wLnBsYXlpbmcgJiYgYW5pX3AuYXBwbHlpbmcpIHtcbiAgICAgICAgICBhbmlfcC5hcHBseWluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhbmlfcC5zdGFydGVkKSB7XG4gICAgICAgICAgc3RhcnRBbmltYXRpb24oZWxlLCBhbmksIG5vdyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGVwJDEoZWxlLCBhbmksIG5vdywgaXNDb3JlKTtcblxuICAgICAgICBpZiAoYW5pX3AuYXBwbHlpbmcpIHtcbiAgICAgICAgICBhbmlfcC5hcHBseWluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2tzKGFuaV9wLmZyYW1lcyk7XG5cbiAgICAgICAgaWYgKGFuaV9wLnN0ZXAgIT0gbnVsbCkge1xuICAgICAgICAgIGFuaV9wLnN0ZXAobm93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbmkuY29tcGxldGVkKCkpIHtcbiAgICAgICAgICBjdXJyZW50LnNwbGljZShpLCAxKTtcbiAgICAgICAgICBhbmlfcC5ob29rZWQgPSBmYWxzZTtcbiAgICAgICAgICBhbmlfcC5wbGF5aW5nID0gZmFsc2U7XG4gICAgICAgICAgYW5pX3Auc3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICAgIGNhbGxiYWNrcyhhbmlfcC5jb21wbGV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmFuQW5pcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNDb3JlICYmIGN1cnJlbnQubGVuZ3RoID09PSAwICYmIHF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkb25lRWxlcy5wdXNoKGVsZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByYW5BbmlzO1xuICAgIH0gLy8gc3RlcEVsZW1lbnRcbiAgICAvLyBoYW5kbGUgYWxsIGVsZXNcblxuXG4gICAgdmFyIHJhbkVsZUFuaSA9IGZhbHNlO1xuXG4gICAgZm9yICh2YXIgZSA9IDA7IGUgPCBlbGVzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tlXTtcbiAgICAgIHZhciBoYW5kbGVkVGhpc0VsZSA9IHN0ZXBPbmUoZWxlKTtcbiAgICAgIHJhbkVsZUFuaSA9IHJhbkVsZUFuaSB8fCBoYW5kbGVkVGhpc0VsZTtcbiAgICB9IC8vIGVhY2ggZWxlbWVudFxuXG5cbiAgICB2YXIgcmFuQ29yZUFuaSA9IHN0ZXBPbmUoY3ksIHRydWUpOyAvLyBub3RpZnkgcmVuZGVyZXJcblxuICAgIGlmIChyYW5FbGVBbmkgfHwgcmFuQ29yZUFuaSkge1xuICAgICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjeS5ub3RpZnkoJ2RyYXcnLCBlbGVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN5Lm5vdGlmeSgnZHJhdycpO1xuICAgICAgfVxuICAgIH0gLy8gcmVtb3ZlIGVsZW1lbnRzIGZyb20gbGlzdCBvZiBjdXJyZW50bHkgYW5pbWF0aW5nIGlmIGl0cyBxdWV1ZXMgYXJlIGVtcHR5XG5cblxuICAgIGVsZXMudW5tZXJnZShkb25lRWxlcyk7XG4gICAgY3kuZW1pdCgnc3RlcCcpO1xuICB9IC8vIHN0ZXBBbGxcblxuICB2YXIgY29yZWZuJDggPSB7XG4gICAgLy8gcHVsbCBpbiBhbmltYXRpb24gZnVuY3Rpb25zXG4gICAgYW5pbWF0ZTogZGVmaW5lLmFuaW1hdGUoKSxcbiAgICBhbmltYXRpb246IGRlZmluZS5hbmltYXRpb24oKSxcbiAgICBhbmltYXRlZDogZGVmaW5lLmFuaW1hdGVkKCksXG4gICAgY2xlYXJRdWV1ZTogZGVmaW5lLmNsZWFyUXVldWUoKSxcbiAgICBkZWxheTogZGVmaW5lLmRlbGF5KCksXG4gICAgZGVsYXlBbmltYXRpb246IGRlZmluZS5kZWxheUFuaW1hdGlvbigpLFxuICAgIHN0b3A6IGRlZmluZS5zdG9wKCksXG4gICAgYWRkVG9BbmltYXRpb25Qb29sOiBmdW5jdGlvbiBhZGRUb0FuaW1hdGlvblBvb2woZWxlcykge1xuICAgICAgdmFyIGN5ID0gdGhpcztcblxuICAgICAgaWYgKCFjeS5zdHlsZUVuYWJsZWQoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gbm8gc3R5bGUgdXNlZFxuXG5cbiAgICAgIGN5Ll9wcml2YXRlLmFuaUVsZXMubWVyZ2UoZWxlcyk7XG4gICAgfSxcbiAgICBzdG9wQW5pbWF0aW9uTG9vcDogZnVuY3Rpb24gc3RvcEFuaW1hdGlvbkxvb3AoKSB7XG4gICAgICB0aGlzLl9wcml2YXRlLmFuaW1hdGlvbnNSdW5uaW5nID0gZmFsc2U7XG4gICAgfSxcbiAgICBzdGFydEFuaW1hdGlvbkxvb3A6IGZ1bmN0aW9uIHN0YXJ0QW5pbWF0aW9uTG9vcCgpIHtcbiAgICAgIHZhciBjeSA9IHRoaXM7XG4gICAgICBjeS5fcHJpdmF0ZS5hbmltYXRpb25zUnVubmluZyA9IHRydWU7XG5cbiAgICAgIGlmICghY3kuc3R5bGVFbmFibGVkKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBzYXZlIGN5Y2xlcyB3aGVuIG5vIHN0eWxlIHVzZWRcbiAgICAgIC8vIE5CIHRoZSBhbmltYXRpb24gbG9vcCB3aWxsIGV4ZWMgaW4gaGVhZGxlc3MgZW52aXJvbm1lbnRzIGlmIHN0eWxlIGVuYWJsZWRcbiAgICAgIC8vIGFuZCBleHBsaWNpdCBjeS5kZXN0cm95KCkgaXMgbmVjZXNzYXJ5IHRvIHN0b3AgdGhlIGxvb3BcblxuXG4gICAgICBmdW5jdGlvbiBoZWFkbGVzc1N0ZXAoKSB7XG4gICAgICAgIGlmICghY3kuX3ByaXZhdGUuYW5pbWF0aW9uc1J1bm5pbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gYW5pbWF0aW9uU3RlcChub3cpIHtcbiAgICAgICAgICBzdGVwQWxsKG5vdywgY3kpO1xuICAgICAgICAgIGhlYWRsZXNzU3RlcCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlbmRlcmVyID0gY3kucmVuZGVyZXIoKTtcblxuICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLmJlZm9yZVJlbmRlcikge1xuICAgICAgICAvLyBsZXQgdGhlIHJlbmRlcmVyIHNjaGVkdWxlIGFuaW1hdGlvbnNcbiAgICAgICAgcmVuZGVyZXIuYmVmb3JlUmVuZGVyKGZ1bmN0aW9uIHJlbmRlcmVyQW5pbWF0aW9uU3RlcCh3aWxsRHJhdywgbm93KSB7XG4gICAgICAgICAgc3RlcEFsbChub3csIGN5KTtcbiAgICAgICAgfSwgcmVuZGVyZXIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5hbmltYXRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG1hbmFnZSB0aGUgYW5pbWF0aW9uIGxvb3Agb3Vyc2VsdmVzXG4gICAgICAgIGhlYWRsZXNzU3RlcCgpOyAvLyBmaXJzdCBjYWxsXG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciBlbWl0dGVyT3B0aW9ucyA9IHtcbiAgICBxdWFsaWZpZXJDb21wYXJlOiBmdW5jdGlvbiBxdWFsaWZpZXJDb21wYXJlKHNlbGVjdG9yMSwgc2VsZWN0b3IyKSB7XG4gICAgICBpZiAoc2VsZWN0b3IxID09IG51bGwgfHwgc2VsZWN0b3IyID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yMSA9PSBudWxsICYmIHNlbGVjdG9yMiA9PSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yMS5zYW1lVGV4dChzZWxlY3RvcjIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXZlbnRNYXRjaGVzOiBmdW5jdGlvbiBldmVudE1hdGNoZXMoY3ksIGxpc3RlbmVyLCBldmVudE9iaikge1xuICAgICAgdmFyIHNlbGVjdG9yID0gbGlzdGVuZXIucXVhbGlmaWVyO1xuXG4gICAgICBpZiAoc2VsZWN0b3IgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gY3kgIT09IGV2ZW50T2JqLnRhcmdldCAmJiBlbGVtZW50KGV2ZW50T2JqLnRhcmdldCkgJiYgc2VsZWN0b3IubWF0Y2hlcyhldmVudE9iai50YXJnZXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcyhjeSwgZXZ0KSB7XG4gICAgICBldnQuY3kgPSBjeTtcbiAgICAgIGV2dC50YXJnZXQgPSBjeTtcbiAgICB9LFxuICAgIGNhbGxiYWNrQ29udGV4dDogZnVuY3Rpb24gY2FsbGJhY2tDb250ZXh0KGN5LCBsaXN0ZW5lciwgZXZlbnRPYmopIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lci5xdWFsaWZpZXIgIT0gbnVsbCA/IGV2ZW50T2JqLnRhcmdldCA6IGN5O1xuICAgIH1cbiAgfTtcblxuICB2YXIgYXJnU2VsZWN0b3IgPSBmdW5jdGlvbiBhcmdTZWxlY3RvcihhcmcpIHtcbiAgICBpZiAoc3RyaW5nKGFyZykpIHtcbiAgICAgIHJldHVybiBuZXcgU2VsZWN0b3IoYXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9XG4gIH07XG5cbiAgdmFyIGVsZXNmbiA9IHtcbiAgICBjcmVhdGVFbWl0dGVyOiBmdW5jdGlvbiBjcmVhdGVFbWl0dGVyKCkge1xuICAgICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgICAgaWYgKCFfcC5lbWl0dGVyKSB7XG4gICAgICAgIF9wLmVtaXR0ZXIgPSBuZXcgRW1pdHRlcihlbWl0dGVyT3B0aW9ucywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW1pdHRlcjogZnVuY3Rpb24gZW1pdHRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmVtaXR0ZXI7XG4gICAgfSxcbiAgICBvbjogZnVuY3Rpb24gb24oZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuZW1pdHRlcigpLm9uKGV2ZW50cywgYXJnU2VsZWN0b3Ioc2VsZWN0b3IpLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHJlbW92ZUxpc3RlbmVyOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihldmVudHMsIHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgICAgdGhpcy5lbWl0dGVyKCkucmVtb3ZlTGlzdGVuZXIoZXZlbnRzLCBhcmdTZWxlY3RvcihzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgcmVtb3ZlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnMoKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgb25lOiBmdW5jdGlvbiBvbmUoZXZlbnRzLCBzZWxlY3RvciwgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldmVudHMsIGFyZ1NlbGVjdG9yKHNlbGVjdG9yKSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBvbmNlOiBmdW5jdGlvbiBvbmNlKGV2ZW50cywgc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5vbmUoZXZlbnRzLCBhcmdTZWxlY3RvcihzZWxlY3RvciksIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW1pdDogZnVuY3Rpb24gZW1pdChldmVudHMsIGV4dHJhUGFyYW1zKSB7XG4gICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KGV2ZW50cywgZXh0cmFQYXJhbXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0QW5kTm90aWZ5OiBmdW5jdGlvbiBlbWl0QW5kTm90aWZ5KGV2ZW50LCBlbGVzKSB7XG4gICAgICB0aGlzLmVtaXQoZXZlbnQpO1xuICAgICAgdGhpcy5ub3RpZnkoZXZlbnQsIGVsZXMpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9O1xuICBkZWZpbmUuZXZlbnRBbGlhc2VzT24oZWxlc2ZuKTtcblxuICB2YXIgY29yZWZuJDcgPSB7XG4gICAgcG5nOiBmdW5jdGlvbiBwbmcob3B0aW9ucykge1xuICAgICAgdmFyIHJlbmRlcmVyID0gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgcmV0dXJuIHJlbmRlcmVyLnBuZyhvcHRpb25zKTtcbiAgICB9LFxuICAgIGpwZzogZnVuY3Rpb24ganBnKG9wdGlvbnMpIHtcbiAgICAgIHZhciByZW5kZXJlciA9IHRoaXMuX3ByaXZhdGUucmVuZGVyZXI7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgIG9wdGlvbnMuYmcgPSBvcHRpb25zLmJnIHx8ICcjZmZmJztcbiAgICAgIHJldHVybiByZW5kZXJlci5qcGcob3B0aW9ucyk7XG4gICAgfVxuICB9O1xuICBjb3JlZm4kNy5qcGVnID0gY29yZWZuJDcuanBnO1xuXG4gIHZhciBjb3JlZm4kNiA9IHtcbiAgICBsYXlvdXQ6IGZ1bmN0aW9uIGxheW91dChvcHRpb25zKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdMYXlvdXQgb3B0aW9ucyBtdXN0IGJlIHNwZWNpZmllZCB0byBtYWtlIGEgbGF5b3V0Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubmFtZSA9PSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdBIGBuYW1lYCBtdXN0IGJlIHNwZWNpZmllZCB0byBtYWtlIGEgbGF5b3V0Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWU7XG4gICAgICB2YXIgTGF5b3V0ID0gY3kuZXh0ZW5zaW9uKCdsYXlvdXQnLCBuYW1lKTtcblxuICAgICAgaWYgKExheW91dCA9PSBudWxsKSB7XG4gICAgICAgIGVycm9yKCdObyBzdWNoIGxheW91dCBgJyArIG5hbWUgKyAnYCBmb3VuZC4gIERpZCB5b3UgZm9yZ2V0IHRvIGltcG9ydCBpdCBhbmQgYGN5dG9zY2FwZS51c2UoKWAgaXQ/Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZXM7XG5cbiAgICAgIGlmIChzdHJpbmcob3B0aW9ucy5lbGVzKSkge1xuICAgICAgICBlbGVzID0gY3kuJChvcHRpb25zLmVsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlcyA9IG9wdGlvbnMuZWxlcyAhPSBudWxsID8gb3B0aW9ucy5lbGVzIDogY3kuJCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbGF5b3V0ID0gbmV3IExheW91dChleHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgY3k6IGN5LFxuICAgICAgICBlbGVzOiBlbGVzXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gbGF5b3V0O1xuICAgIH1cbiAgfTtcbiAgY29yZWZuJDYuY3JlYXRlTGF5b3V0ID0gY29yZWZuJDYubWFrZUxheW91dCA9IGNvcmVmbiQ2LmxheW91dDtcblxuICB2YXIgY29yZWZuJDUgPSB7XG4gICAgbm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoZXZlbnROYW1lLCBldmVudEVsZXMpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmICh0aGlzLmJhdGNoaW5nKCkpIHtcbiAgICAgICAgX3AuYmF0Y2hOb3RpZmljYXRpb25zID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zIHx8IHt9O1xuICAgICAgICB2YXIgZWxlcyA9IF9wLmJhdGNoTm90aWZpY2F0aW9uc1tldmVudE5hbWVdID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zW2V2ZW50TmFtZV0gfHwgdGhpcy5jb2xsZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50RWxlcyAhPSBudWxsKSB7XG4gICAgICAgICAgZWxlcy5tZXJnZShldmVudEVsZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuOyAvLyBub3RpZmljYXRpb25zIGFyZSBkaXNhYmxlZCBkdXJpbmcgYmF0Y2hpbmdcbiAgICAgIH1cblxuICAgICAgaWYgKCFfcC5ub3RpZmljYXRpb25zRW5hYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGV4aXQgb24gZGlzYWJsZWRcblxuXG4gICAgICB2YXIgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyKCk7IC8vIGV4aXQgaWYgZGVzdHJveSgpIGNhbGxlZCBvbiBjb3JlIG9yIHJlbmRlcmVyIGluIGJldHdlZW4gZnJhbWVzICMxNDk5ICMxNTI4XG5cbiAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCgpIHx8ICFyZW5kZXJlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlbmRlcmVyLm5vdGlmeShldmVudE5hbWUsIGV2ZW50RWxlcyk7XG4gICAgfSxcbiAgICBub3RpZmljYXRpb25zOiBmdW5jdGlvbiBub3RpZmljYXRpb25zKGJvb2wpIHtcbiAgICAgIHZhciBwID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgICAgaWYgKGJvb2wgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcC5ub3RpZmljYXRpb25zRW5hYmxlZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHAubm90aWZpY2F0aW9uc0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIG5vTm90aWZpY2F0aW9uczogZnVuY3Rpb24gbm9Ob3RpZmljYXRpb25zKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMoZmFsc2UpO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyh0cnVlKTtcbiAgICB9LFxuICAgIGJhdGNoaW5nOiBmdW5jdGlvbiBiYXRjaGluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmJhdGNoQ291bnQgPiAwO1xuICAgIH0sXG4gICAgc3RhcnRCYXRjaDogZnVuY3Rpb24gc3RhcnRCYXRjaCgpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChfcC5iYXRjaENvdW50ID09IG51bGwpIHtcbiAgICAgICAgX3AuYmF0Y2hDb3VudCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChfcC5iYXRjaENvdW50ID09PSAwKSB7XG4gICAgICAgIF9wLmJhdGNoU3R5bGVFbGVzID0gdGhpcy5jb2xsZWN0aW9uKCk7XG4gICAgICAgIF9wLmJhdGNoTm90aWZpY2F0aW9ucyA9IHt9O1xuICAgICAgfVxuXG4gICAgICBfcC5iYXRjaENvdW50Kys7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZEJhdGNoOiBmdW5jdGlvbiBlbmRCYXRjaCgpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChfcC5iYXRjaENvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBfcC5iYXRjaENvdW50LS07XG5cbiAgICAgIGlmIChfcC5iYXRjaENvdW50ID09PSAwKSB7XG4gICAgICAgIC8vIHVwZGF0ZSBzdHlsZSBmb3IgZGlydHkgZWxlc1xuICAgICAgICBfcC5iYXRjaFN0eWxlRWxlcy51cGRhdGVTdHlsZSgpO1xuXG4gICAgICAgIHZhciByZW5kZXJlciA9IHRoaXMucmVuZGVyZXIoKTsgLy8gbm90aWZ5IHRoZSByZW5kZXJlciBvZiBxdWV1ZWQgZWxlcyBhbmQgZXZlbnQgdHlwZXNcblxuICAgICAgICBPYmplY3Qua2V5cyhfcC5iYXRjaE5vdGlmaWNhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgIHZhciBlbGVzID0gX3AuYmF0Y2hOb3RpZmljYXRpb25zW2V2ZW50TmFtZV07XG5cbiAgICAgICAgICBpZiAoZWxlcy5lbXB0eSgpKSB7XG4gICAgICAgICAgICByZW5kZXJlci5ub3RpZnkoZXZlbnROYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVuZGVyZXIubm90aWZ5KGV2ZW50TmFtZSwgZWxlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBiYXRjaDogZnVuY3Rpb24gYmF0Y2goY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuc3RhcnRCYXRjaCgpO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICAgIHRoaXMuZW5kQmF0Y2goKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgLy8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgYmF0Y2hEYXRhOiBmdW5jdGlvbiBiYXRjaERhdGEobWFwKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuYmF0Y2goZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWRzID0gT2JqZWN0LmtleXMobWFwKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBpZCA9IGlkc1tpXTtcbiAgICAgICAgICB2YXIgZGF0YSA9IG1hcFtpZF07XG4gICAgICAgICAgdmFyIGVsZSA9IGN5LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgICAgICBlbGUuZGF0YShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciByZW5kZXJlckRlZmF1bHRzID0gZGVmYXVsdHMkZyh7XG4gICAgaGlkZUVkZ2VzT25WaWV3cG9ydDogZmFsc2UsXG4gICAgdGV4dHVyZU9uVmlld3BvcnQ6IGZhbHNlLFxuICAgIG1vdGlvbkJsdXI6IGZhbHNlLFxuICAgIG1vdGlvbkJsdXJPcGFjaXR5OiAwLjA1LFxuICAgIHBpeGVsUmF0aW86IHVuZGVmaW5lZCxcbiAgICBkZXNrdG9wVGFwVGhyZXNob2xkOiA0LFxuICAgIHRvdWNoVGFwVGhyZXNob2xkOiA4LFxuICAgIHdoZWVsU2Vuc2l0aXZpdHk6IDEsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHNob3dGcHM6IGZhbHNlXG4gIH0pO1xuICB2YXIgY29yZWZuJDQgPSB7XG4gICAgcmVuZGVyVG86IGZ1bmN0aW9uIHJlbmRlclRvKGNvbnRleHQsIHpvb20sIHBhbiwgcHhSYXRpbykge1xuICAgICAgdmFyIHIgPSB0aGlzLl9wcml2YXRlLnJlbmRlcmVyO1xuICAgICAgci5yZW5kZXJUbyhjb250ZXh0LCB6b29tLCBwYW4sIHB4UmF0aW8pO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICByZW5kZXJlcjogZnVuY3Rpb24gcmVuZGVyZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlcjtcbiAgICB9LFxuICAgIGZvcmNlUmVuZGVyOiBmdW5jdGlvbiBmb3JjZVJlbmRlcigpIHtcbiAgICAgIHRoaXMubm90aWZ5KCdkcmF3Jyk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHJlc2l6ZTogZnVuY3Rpb24gcmVzaXplKCkge1xuICAgICAgdGhpcy5pbnZhbGlkYXRlU2l6ZSgpO1xuICAgICAgdGhpcy5lbWl0QW5kTm90aWZ5KCdyZXNpemUnKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgaW5pdFJlbmRlcmVyOiBmdW5jdGlvbiBpbml0UmVuZGVyZXIob3B0aW9ucykge1xuICAgICAgdmFyIGN5ID0gdGhpcztcbiAgICAgIHZhciBSZW5kZXJlclByb3RvID0gY3kuZXh0ZW5zaW9uKCdyZW5kZXJlcicsIG9wdGlvbnMubmFtZSk7XG5cbiAgICAgIGlmIChSZW5kZXJlclByb3RvID09IG51bGwpIHtcbiAgICAgICAgZXJyb3IoXCJDYW4gbm90IGluaXRpYWxpc2U6IE5vIHN1Y2ggcmVuZGVyZXIgYFwiLmNvbmNhdChvcHRpb25zLm5hbWUsIFwiYCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IGl0IGFuZCBgY3l0b3NjYXBlLnVzZSgpYCBpdD9cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLndoZWVsU2Vuc2l0aXZpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB3YXJuKFwiWW91IGhhdmUgc2V0IGEgY3VzdG9tIHdoZWVsIHNlbnNpdGl2aXR5LiAgVGhpcyB3aWxsIG1ha2UgeW91ciBhcHAgem9vbSB1bm5hdHVyYWxseSB3aGVuIHVzaW5nIG1haW5zdHJlYW0gbWljZS4gIFlvdSBzaG91bGQgY2hhbmdlIHRoaXMgdmFsdWUgZnJvbSB0aGUgZGVmYXVsdCBvbmx5IGlmIHlvdSBjYW4gZ3VhcmFudGVlIHRoYXQgYWxsIHlvdXIgdXNlcnMgd2lsbCB1c2UgdGhlIHNhbWUgaGFyZHdhcmUgYW5kIE9TIGNvbmZpZ3VyYXRpb24gYXMgeW91ciBjdXJyZW50IG1hY2hpbmUuXCIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgck9wdHMgPSByZW5kZXJlckRlZmF1bHRzKG9wdGlvbnMpO1xuICAgICAgck9wdHMuY3kgPSBjeTtcbiAgICAgIGN5Ll9wcml2YXRlLnJlbmRlcmVyID0gbmV3IFJlbmRlcmVyUHJvdG8ock9wdHMpO1xuICAgICAgdGhpcy5ub3RpZnkoJ2luaXQnKTtcbiAgICB9LFxuICAgIGRlc3Ryb3lSZW5kZXJlcjogZnVuY3Rpb24gZGVzdHJveVJlbmRlcmVyKCkge1xuICAgICAgdmFyIGN5ID0gdGhpcztcbiAgICAgIGN5Lm5vdGlmeSgnZGVzdHJveScpOyAvLyBkZXN0cm95IHRoZSByZW5kZXJlclxuXG4gICAgICB2YXIgZG9tRWxlID0gY3kuY29udGFpbmVyKCk7XG5cbiAgICAgIGlmIChkb21FbGUpIHtcbiAgICAgICAgZG9tRWxlLl9jeXJlZyA9IG51bGw7XG5cbiAgICAgICAgd2hpbGUgKGRvbUVsZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBkb21FbGUucmVtb3ZlQ2hpbGQoZG9tRWxlLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN5Ll9wcml2YXRlLnJlbmRlcmVyID0gbnVsbDsgLy8gdG8gYmUgZXh0cmEgc2FmZSwgcmVtb3ZlIHRoZSByZWZcblxuICAgICAgY3kubXV0YWJsZUVsZW1lbnRzKCkuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgICAgX3AucnNjcmF0Y2ggPSB7fTtcbiAgICAgICAgX3AucnN0eWxlID0ge307XG4gICAgICAgIF9wLmFuaW1hdGlvbi5jdXJyZW50ID0gW107XG4gICAgICAgIF9wLmFuaW1hdGlvbi5xdWV1ZSA9IFtdO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBvblJlbmRlcjogZnVuY3Rpb24gb25SZW5kZXIoZm4pIHtcbiAgICAgIHJldHVybiB0aGlzLm9uKCdyZW5kZXInLCBmbik7XG4gICAgfSxcbiAgICBvZmZSZW5kZXI6IGZ1bmN0aW9uIG9mZlJlbmRlcihmbikge1xuICAgICAgcmV0dXJuIHRoaXMub2ZmKCdyZW5kZXInLCBmbik7XG4gICAgfVxuICB9O1xuICBjb3JlZm4kNC5pbnZhbGlkYXRlRGltZW5zaW9ucyA9IGNvcmVmbiQ0LnJlc2l6ZTtcblxuICB2YXIgY29yZWZuJDMgPSB7XG4gICAgLy8gZ2V0IGEgY29sbGVjdGlvblxuICAgIC8vIC0gZW1wdHkgY29sbGVjdGlvbiBvbiBubyBhcmdzXG4gICAgLy8gLSBjb2xsZWN0aW9uIG9mIGVsZW1lbnRzIGluIHRoZSBncmFwaCBvbiBzZWxlY3RvciBhcmdcbiAgICAvLyAtIGd1YXJhbnRlZSBhIHJldHVybmVkIGNvbGxlY3Rpb24gd2hlbiBlbGVtZW50cyBvciBjb2xsZWN0aW9uIHNwZWNpZmllZFxuICAgIGNvbGxlY3Rpb246IGZ1bmN0aW9uIGNvbGxlY3Rpb24oZWxlcywgb3B0cykge1xuICAgICAgaWYgKHN0cmluZyhlbGVzKSkge1xuICAgICAgICByZXR1cm4gdGhpcy4kKGVsZXMpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGVsZXMpKSB7XG4gICAgICAgIHJldHVybiBlbGVzLmNvbGxlY3Rpb24oKTtcbiAgICAgIH0gZWxzZSBpZiAoYXJyYXkoZWxlcykpIHtcbiAgICAgICAgaWYgKCFvcHRzKSB7XG4gICAgICAgICAgb3B0cyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBDb2xsZWN0aW9uKHRoaXMsIGVsZXMsIG9wdHMudW5pcXVlLCBvcHRzLnJlbW92ZWQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24odGhpcyk7XG4gICAgfSxcbiAgICBub2RlczogZnVuY3Rpb24gbm9kZXMoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBub2RlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuaXNOb2RlKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBub2Rlcy5maWx0ZXIoc2VsZWN0b3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZXM7XG4gICAgfSxcbiAgICBlZGdlczogZnVuY3Rpb24gZWRnZXMoc2VsZWN0b3IpIHtcbiAgICAgIHZhciBlZGdlcyA9IHRoaXMuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgIHJldHVybiBlbGUuaXNFZGdlKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBlZGdlcy5maWx0ZXIoc2VsZWN0b3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfSxcbiAgICAvLyBzZWFyY2ggdGhlIGdyYXBoIGxpa2UgalF1ZXJ5XG4gICAgJDogZnVuY3Rpb24gJChzZWxlY3Rvcikge1xuICAgICAgdmFyIGVsZXMgPSB0aGlzLl9wcml2YXRlLmVsZW1lbnRzO1xuXG4gICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGVsZXMuZmlsdGVyKHNlbGVjdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbGVzLnNwYXduU2VsZigpO1xuICAgICAgfVxuICAgIH0sXG4gICAgbXV0YWJsZUVsZW1lbnRzOiBmdW5jdGlvbiBtdXRhYmxlRWxlbWVudHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cztcbiAgICB9XG4gIH07IC8vIGFsaWFzZXNcblxuICBjb3JlZm4kMy5lbGVtZW50cyA9IGNvcmVmbiQzLmZpbHRlciA9IGNvcmVmbiQzLiQ7XG5cbiAgdmFyIHN0eWZuJDggPSB7fTsgLy8ga2V5cyBmb3Igc3R5bGUgYmxvY2tzLCBlLmcuIHR0ZmZ0dFxuXG4gIHZhciBUUlVFID0gJ3QnO1xuICB2YXIgRkFMU0UgPSAnZic7IC8vIChwb3RlbnRpYWxseSBleHBlbnNpdmUgY2FsY3VsYXRpb24pXG4gIC8vIGFwcGx5IHRoZSBzdHlsZSB0byB0aGUgZWxlbWVudCBiYXNlZCBvblxuICAvLyAtIGl0cyBieXBhc3NcbiAgLy8gLSB3aGF0IHNlbGVjdG9ycyBtYXRjaCBpdFxuXG4gIHN0eWZuJDguYXBwbHkgPSBmdW5jdGlvbiAoZWxlcykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgX3AgPSBzZWxmLl9wcml2YXRlO1xuICAgIHZhciBjeSA9IF9wLmN5O1xuICAgIHZhciB1cGRhdGVkRWxlcyA9IGN5LmNvbGxlY3Rpb24oKTtcblxuICAgIGZvciAodmFyIGllID0gMDsgaWUgPCBlbGVzLmxlbmd0aDsgaWUrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaWVdO1xuICAgICAgdmFyIGN4dE1ldGEgPSBzZWxmLmdldENvbnRleHRNZXRhKGVsZSk7XG5cbiAgICAgIGlmIChjeHRNZXRhLmVtcHR5KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3h0U3R5bGUgPSBzZWxmLmdldENvbnRleHRTdHlsZShjeHRNZXRhKTtcbiAgICAgIHZhciBhcHAgPSBzZWxmLmFwcGx5Q29udGV4dFN0eWxlKGN4dE1ldGEsIGN4dFN0eWxlLCBlbGUpO1xuXG4gICAgICBpZiAoZWxlLl9wcml2YXRlLmFwcGxpZWRJbml0U3R5bGUpIHtcbiAgICAgICAgc2VsZi51cGRhdGVUcmFuc2l0aW9ucyhlbGUsIGFwcC5kaWZmUHJvcHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlLl9wcml2YXRlLmFwcGxpZWRJbml0U3R5bGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGludHNEaWZmID0gc2VsZi51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG5cbiAgICAgIGlmIChoaW50c0RpZmYpIHtcbiAgICAgICAgdXBkYXRlZEVsZXMucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH0gLy8gZm9yIGVsZW1lbnRzXG5cblxuICAgIHJldHVybiB1cGRhdGVkRWxlcztcbiAgfTtcblxuICBzdHlmbiQ4LmdldFByb3BlcnRpZXNEaWZmID0gZnVuY3Rpb24gKG9sZEN4dEtleSwgbmV3Q3h0S2V5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBjYWNoZSA9IHNlbGYuX3ByaXZhdGUucHJvcERpZmZzID0gc2VsZi5fcHJpdmF0ZS5wcm9wRGlmZnMgfHwge307XG4gICAgdmFyIGR1YWxDeHRLZXkgPSBvbGRDeHRLZXkgKyAnLScgKyBuZXdDeHRLZXk7XG4gICAgdmFyIGNhY2hlZFZhbCA9IGNhY2hlW2R1YWxDeHRLZXldO1xuXG4gICAgaWYgKGNhY2hlZFZhbCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFZhbDtcbiAgICB9XG5cbiAgICB2YXIgZGlmZlByb3BzID0gW107XG4gICAgdmFyIGFkZGVkUHJvcCA9IHt9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3h0ID0gc2VsZltpXTtcbiAgICAgIHZhciBvbGRIYXNDeHQgPSBvbGRDeHRLZXlbaV0gPT09IFRSVUU7XG4gICAgICB2YXIgbmV3SGFzQ3h0ID0gbmV3Q3h0S2V5W2ldID09PSBUUlVFO1xuICAgICAgdmFyIGN4dEhhc0RpZmZlZCA9IG9sZEhhc0N4dCAhPT0gbmV3SGFzQ3h0O1xuICAgICAgdmFyIGN4dEhhc01hcHBlZFByb3BzID0gY3h0Lm1hcHBlZFByb3BlcnRpZXMubGVuZ3RoID4gMDtcblxuICAgICAgaWYgKGN4dEhhc0RpZmZlZCB8fCBuZXdIYXNDeHQgJiYgY3h0SGFzTWFwcGVkUHJvcHMpIHtcbiAgICAgICAgdmFyIHByb3BzID0gdm9pZCAwO1xuXG4gICAgICAgIGlmIChjeHRIYXNEaWZmZWQgJiYgY3h0SGFzTWFwcGVkUHJvcHMpIHtcbiAgICAgICAgICBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzOyAvLyBzdWZmaWNlcyBiL2MgbWFwcGVkUHJvcGVydGllcyBpcyBhIHN1YnNldCBvZiBwcm9wZXJ0aWVzXG4gICAgICAgIH0gZWxzZSBpZiAoY3h0SGFzRGlmZmVkKSB7XG4gICAgICAgICAgcHJvcHMgPSBjeHQucHJvcGVydGllczsgLy8gbmVlZCB0byBjaGVjayB0aGVtIGFsbFxuICAgICAgICB9IGVsc2UgaWYgKGN4dEhhc01hcHBlZFByb3BzKSB7XG4gICAgICAgICAgcHJvcHMgPSBjeHQubWFwcGVkUHJvcGVydGllczsgLy8gb25seSBuZWVkIHRvIGNoZWNrIG1hcHBlZFxuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9wcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7IC8vIGlmIGEgbGF0ZXIgY29udGV4dCBvdmVycmlkZXMgdGhpcyBwcm9wZXJ0eSwgdGhlbiB0aGUgZmFjdCB0aGF0IHRoaXMgY29udGV4dCBoYXMgc3dpdGNoZWQvZGlmZmVkIGRvZXNuJ3QgbWF0dGVyXG4gICAgICAgICAgLy8gKHNlbWkgZXhwZW5zaXZlIGNoZWNrIHNpbmNlIGl0IG1ha2VzIHRoaXMgZnVuY3Rpb24gTyhuXjIpIG9uIGNvbnRleHQgbGVuZ3RoLCBidXQgd29ydGggaXQgc2luY2Ugb3ZlcmFsbCByZXN1bHRcbiAgICAgICAgICAvLyBpcyBjYWNoZWQpXG5cbiAgICAgICAgICB2YXIgbGF0ZXJDeHRPdmVycmlkZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGZvciAodmFyIGsgPSBpICsgMTsgayA8IHNlbGYubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIHZhciBsYXRlckN4dCA9IHNlbGZba107XG4gICAgICAgICAgICB2YXIgaGFzTGF0ZXJDeHQgPSBuZXdDeHRLZXlba10gPT09IFRSVUU7XG5cbiAgICAgICAgICAgIGlmICghaGFzTGF0ZXJDeHQpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9IC8vIGNhbid0IG92ZXJyaWRlIHVubGVzcyB0aGUgY29udGV4dCBpcyBhY3RpdmVcblxuXG4gICAgICAgICAgICBsYXRlckN4dE92ZXJyaWRlcyA9IGxhdGVyQ3h0LnByb3BlcnRpZXNbcHJvcC5uYW1lXSAhPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAobGF0ZXJDeHRPdmVycmlkZXMpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IC8vIGV4aXQgZWFybHkgYXMgbG9uZyBhcyBvbmUgbGF0ZXIgY29udGV4dCBvdmVycmlkZXNcblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghYWRkZWRQcm9wW25hbWVdICYmICFsYXRlckN4dE92ZXJyaWRlcykge1xuICAgICAgICAgICAgYWRkZWRQcm9wW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgIGRpZmZQcm9wcy5wdXNoKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBmb3IgcHJvcHNcblxuICAgICAgfSAvLyBpZlxuXG4gICAgfSAvLyBmb3IgY29udGV4dHNcblxuXG4gICAgY2FjaGVbZHVhbEN4dEtleV0gPSBkaWZmUHJvcHM7XG4gICAgcmV0dXJuIGRpZmZQcm9wcztcbiAgfTtcblxuICBzdHlmbiQ4LmdldENvbnRleHRNZXRhID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY3h0S2V5ID0gJyc7XG4gICAgdmFyIGRpZmZQcm9wcztcbiAgICB2YXIgcHJldktleSA9IGVsZS5fcHJpdmF0ZS5zdHlsZUN4dEtleSB8fCAnJzsgLy8gZ2V0IHRoZSBjeHQga2V5XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb250ZXh0ID0gc2VsZltpXTtcbiAgICAgIHZhciBjb250ZXh0U2VsZWN0b3JNYXRjaGVzID0gY29udGV4dC5zZWxlY3RvciAmJiBjb250ZXh0LnNlbGVjdG9yLm1hdGNoZXMoZWxlKTsgLy8gTkI6IGNvbnRleHQuc2VsZWN0b3IgbWF5IGJlIG51bGwgZm9yICdjb3JlJ1xuXG4gICAgICBpZiAoY29udGV4dFNlbGVjdG9yTWF0Y2hlcykge1xuICAgICAgICBjeHRLZXkgKz0gVFJVRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN4dEtleSArPSBGQUxTRTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBjb250ZXh0XG5cblxuICAgIGRpZmZQcm9wcyA9IHNlbGYuZ2V0UHJvcGVydGllc0RpZmYocHJldktleSwgY3h0S2V5KTtcbiAgICBlbGUuX3ByaXZhdGUuc3R5bGVDeHRLZXkgPSBjeHRLZXk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogY3h0S2V5LFxuICAgICAgZGlmZlByb3BOYW1lczogZGlmZlByb3BzLFxuICAgICAgZW1wdHk6IGRpZmZQcm9wcy5sZW5ndGggPT09IDBcbiAgICB9O1xuICB9OyAvLyBnZXRzIGEgY29tcHV0ZWQgZWxlIHN0eWxlIG9iamVjdCBiYXNlZCBvbiBtYXRjaGVkIGNvbnRleHRzXG5cblxuICBzdHlmbiQ4LmdldENvbnRleHRTdHlsZSA9IGZ1bmN0aW9uIChjeHRNZXRhKSB7XG4gICAgdmFyIGN4dEtleSA9IGN4dE1ldGEua2V5O1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgY3h0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzID0gdGhpcy5fcHJpdmF0ZS5jb250ZXh0U3R5bGVzIHx8IHt9OyAvLyBpZiBhbHJlYWR5IGNvbXB1dGVkIHN0eWxlLCByZXR1cm5lZCBjYWNoZWQgY29weVxuXG4gICAgaWYgKGN4dFN0eWxlc1tjeHRLZXldKSB7XG4gICAgICByZXR1cm4gY3h0U3R5bGVzW2N4dEtleV07XG4gICAgfVxuXG4gICAgdmFyIHN0eWxlID0ge1xuICAgICAgX3ByaXZhdGU6IHtcbiAgICAgICAga2V5OiBjeHRLZXlcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3h0ID0gc2VsZltpXTtcbiAgICAgIHZhciBoYXNDeHQgPSBjeHRLZXlbaV0gPT09IFRSVUU7XG5cbiAgICAgIGlmICghaGFzQ3h0KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGN4dC5wcm9wZXJ0aWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBwcm9wID0gY3h0LnByb3BlcnRpZXNbal07XG4gICAgICAgIHN0eWxlW3Byb3AubmFtZV0gPSBwcm9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN4dFN0eWxlc1tjeHRLZXldID0gc3R5bGU7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9O1xuXG4gIHN0eWZuJDguYXBwbHlDb250ZXh0U3R5bGUgPSBmdW5jdGlvbiAoY3h0TWV0YSwgY3h0U3R5bGUsIGVsZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGlmZlByb3BzID0gY3h0TWV0YS5kaWZmUHJvcE5hbWVzO1xuICAgIHZhciByZXREaWZmUHJvcHMgPSB7fTtcbiAgICB2YXIgdHlwZXMgPSBzZWxmLnR5cGVzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmUHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkaWZmUHJvcE5hbWUgPSBkaWZmUHJvcHNbaV07XG4gICAgICB2YXIgY3h0UHJvcCA9IGN4dFN0eWxlW2RpZmZQcm9wTmFtZV07XG4gICAgICB2YXIgZWxlUHJvcCA9IGVsZS5wc3R5bGUoZGlmZlByb3BOYW1lKTtcblxuICAgICAgaWYgKCFjeHRQcm9wKSB7XG4gICAgICAgIC8vIG5vIGNvbnRleHQgcHJvcCBtZWFucyBkZWxldGVcbiAgICAgICAgaWYgKCFlbGVQcm9wKSB7XG4gICAgICAgICAgY29udGludWU7IC8vIG5vIGV4aXN0aW5nIHByb3AgbWVhbnMgbm90aGluZyBuZWVkcyB0byBiZSByZW1vdmVkXG4gICAgICAgICAgLy8gbmIgYWZmZWN0cyBpbml0aWFsIGFwcGxpY2F0aW9uIG9uIG1hcHBlZCB2YWx1ZXMgbGlrZSBjb250cm9sLXBvaW50LWRpc3RhbmNlc1xuICAgICAgICB9IGVsc2UgaWYgKGVsZVByb3AuYnlwYXNzKSB7XG4gICAgICAgICAgY3h0UHJvcCA9IHtcbiAgICAgICAgICAgIG5hbWU6IGRpZmZQcm9wTmFtZSxcbiAgICAgICAgICAgIGRlbGV0ZUJ5cGFzc2VkOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeHRQcm9wID0ge1xuICAgICAgICAgICAgbmFtZTogZGlmZlByb3BOYW1lLFxuICAgICAgICAgICAgXCJkZWxldGVcIjogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gLy8gc2F2ZSBjeWNsZXMgd2hlbiB0aGUgY29udGV4dCBwcm9wIGRvZXNuJ3QgbmVlZCB0byBiZSBhcHBsaWVkXG5cblxuICAgICAgaWYgKGVsZVByb3AgPT09IGN4dFByb3ApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIHNhdmUgY3ljbGVzIHdoZW4gYSBtYXBwZWQgY29udGV4dCBwcm9wIGRvZXNuJ3QgbmVlZCB0byBiZSBhcHBsaWVkXG5cblxuICAgICAgaWYgKGN4dFByb3AubWFwcGVkID09PSB0eXBlcy5mbiAvLyBjb250ZXh0IHByb3AgaXMgZnVuY3Rpb24gbWFwcGVyXG4gICAgICAmJiBlbGVQcm9wICE9IG51bGwgLy8gc29tZSBwcm9wcyBjYW4gYmUgbnVsbCBldmVuIGJ5IGRlZmF1bHQgKGUuZy4gYSBwcm9wIHRoYXQgb3ZlcnJpZGVzIGFub3RoZXIgb25lKVxuICAgICAgJiYgZWxlUHJvcC5tYXBwaW5nICE9IG51bGwgLy8gZWxlIHByb3AgaXMgYSBjb25jcmV0ZSB2YWx1ZSBmcm9tIGZyb20gYSBtYXBwZXJcbiAgICAgICYmIGVsZVByb3AubWFwcGluZy52YWx1ZSA9PT0gY3h0UHJvcC52YWx1ZSAvLyB0aGUgY3VycmVudCBwcm9wIG9uIHRoZSBlbGUgaXMgYSBmbGF0IHByb3AgdmFsdWUgZm9yIHRoZSBmdW5jdGlvbiBtYXBwZXJcbiAgICAgICkge1xuICAgICAgICAvLyBOQiBkb24ndCB3cml0ZSB0byBjeHRQcm9wLCBhcyBpdCdzIHNoYXJlZCBhbW9uZyBlbGVzIChzdG9yZWQgaW4gc3R5bGVzaGVldClcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBlbGVQcm9wLm1hcHBpbmc7IC8vIGNhbiB3cml0ZSB0byBtYXBwaW5nLCBhcyBpdCdzIGEgcGVyLWVsZSBjb3B5XG5cbiAgICAgICAgdmFyIGZuVmFsdWUgPSBtYXBwaW5nLmZuVmFsdWUgPSBjeHRQcm9wLnZhbHVlKGVsZSk7IC8vIHRlbXBvcmFyaWx5IGNhY2hlIHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGEgbWlzc1xuXG4gICAgICAgIGlmIChmblZhbHVlID09PSBtYXBwaW5nLnByZXZGblZhbHVlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJldERpZmZQcm9wID0gcmV0RGlmZlByb3BzW2RpZmZQcm9wTmFtZV0gPSB7XG4gICAgICAgIHByZXY6IGVsZVByb3BcbiAgICAgIH07XG4gICAgICBzZWxmLmFwcGx5UGFyc2VkUHJvcGVydHkoZWxlLCBjeHRQcm9wKTtcbiAgICAgIHJldERpZmZQcm9wLm5leHQgPSBlbGUucHN0eWxlKGRpZmZQcm9wTmFtZSk7XG5cbiAgICAgIGlmIChyZXREaWZmUHJvcC5uZXh0ICYmIHJldERpZmZQcm9wLm5leHQuYnlwYXNzKSB7XG4gICAgICAgIHJldERpZmZQcm9wLm5leHQgPSByZXREaWZmUHJvcC5uZXh0LmJ5cGFzc2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaWZmUHJvcHM6IHJldERpZmZQcm9wc1xuICAgIH07XG4gIH07XG5cbiAgc3R5Zm4kOC51cGRhdGVTdHlsZUhpbnRzID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHByb3BOYW1lcyA9IHNlbGYucHJvcGVydHlHcm91cE5hbWVzO1xuICAgIHZhciBwcm9wR3JLZXlzID0gc2VsZi5wcm9wZXJ0eUdyb3VwS2V5cztcblxuICAgIHZhciBwcm9wSGFzaCA9IGZ1bmN0aW9uIHByb3BIYXNoKGVsZSwgcHJvcE5hbWVzLCBzZWVkS2V5KSB7XG4gICAgICByZXR1cm4gc2VsZi5nZXRQcm9wZXJ0aWVzSGFzaChlbGUsIHByb3BOYW1lcywgc2VlZEtleSk7XG4gICAgfTtcblxuICAgIHZhciBvbGRTdHlsZUtleSA9IF9wLnN0eWxlS2V5O1xuXG4gICAgaWYgKGVsZS5yZW1vdmVkKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgaXNOb2RlID0gX3AuZ3JvdXAgPT09ICdub2Rlcyc7IC8vIGdldCB0aGUgc3R5bGUga2V5IGhhc2hlcyBwZXIgcHJvcCBncm91cFxuICAgIC8vIGJ1dCBsYXppbHkgLS0gb25seSB1c2Ugbm9uLWRlZmF1bHQgcHJvcCB2YWx1ZXMgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgaGFzaGVzXG4gICAgLy9cblxuICAgIHZhciBvdmVycmlkZGVuU3R5bGVzID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICAgIHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKG92ZXJyaWRkZW5TdHlsZXMpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wR3JLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZ3JLZXkgPSBwcm9wR3JLZXlzW2ldO1xuICAgICAgX3Auc3R5bGVLZXlzW2dyS2V5XSA9IFtERUZBVUxUX0hBU0hfU0VFRCwgREVGQVVMVF9IQVNIX1NFRURfQUxUXTtcbiAgICB9XG5cbiAgICB2YXIgdXBkYXRlR3JLZXkxID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkxKHZhbCwgZ3JLZXkpIHtcbiAgICAgIHJldHVybiBfcC5zdHlsZUtleXNbZ3JLZXldWzBdID0gaGFzaEludCh2YWwsIF9wLnN0eWxlS2V5c1tncktleV1bMF0pO1xuICAgIH07XG5cbiAgICB2YXIgdXBkYXRlR3JLZXkyID0gZnVuY3Rpb24gdXBkYXRlR3JLZXkyKHZhbCwgZ3JLZXkpIHtcbiAgICAgIHJldHVybiBfcC5zdHlsZUtleXNbZ3JLZXldWzFdID0gaGFzaEludEFsdCh2YWwsIF9wLnN0eWxlS2V5c1tncktleV1bMV0pO1xuICAgIH07XG5cbiAgICB2YXIgdXBkYXRlR3JLZXkgPSBmdW5jdGlvbiB1cGRhdGVHcktleSh2YWwsIGdyS2V5KSB7XG4gICAgICB1cGRhdGVHcktleTEodmFsLCBncktleSk7XG4gICAgICB1cGRhdGVHcktleTIodmFsLCBncktleSk7XG4gICAgfTtcblxuICAgIHZhciB1cGRhdGVHcktleVdTdHIgPSBmdW5jdGlvbiB1cGRhdGVHcktleVdTdHIoc3RyVmFsLCBncktleSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdHJWYWwubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGNoID0gc3RyVmFsLmNoYXJDb2RlQXQoaik7XG4gICAgICAgIHVwZGF0ZUdyS2V5MShjaCwgZ3JLZXkpO1xuICAgICAgICB1cGRhdGVHcktleTIoY2gsIGdyS2V5KTtcbiAgICAgIH1cbiAgICB9OyAvLyAtIGhhc2hpbmcgd29ya3Mgb24gMzIgYml0IGludHMgYi9jIHdlIHVzZSBiaXR3aXNlIG9wc1xuICAgIC8vIC0gc21hbGwgbnVtYmVycyBnZXQgY3V0IG9mZiAoZS5nLiAwLjEyMyBpcyBzZWVuIGFzIDAgYnkgdGhlIGhhc2hpbmcgZnVuY3Rpb24pXG4gICAgLy8gLSByYWlzZSB1cCBzbWFsbCBudW1iZXJzIHNvIG1vcmUgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZSBzZWVuIGJ5IGhhc2hpbmdcbiAgICAvLyAtIG1ha2Ugc21hbGwgbnVtYmVycyBsYXJnZXIgdGhhbiBhIG5vcm1hbCB2YWx1ZSB0byBhdm9pZCBjb2xsaXNpb25zXG4gICAgLy8gLSB3b3JrcyBpbiBwcmFjdGljZSBhbmQgaXQncyByZWxhdGl2ZWx5IGNoZWFwXG5cblxuICAgIHZhciBOID0gMjAwMDAwMDAwMDtcblxuICAgIHZhciBjbGVhbk51bSA9IGZ1bmN0aW9uIGNsZWFuTnVtKHZhbCkge1xuICAgICAgcmV0dXJuIC0xMjggPCB2YWwgJiYgdmFsIDwgMTI4ICYmIE1hdGguZmxvb3IodmFsKSAhPT0gdmFsID8gTiAtICh2YWwgKiAxMDI0IHwgMCkgOiB2YWw7XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBwcm9wTmFtZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgbmFtZSA9IHByb3BOYW1lc1tfaV07XG4gICAgICB2YXIgcGFyc2VkUHJvcCA9IG92ZXJyaWRkZW5TdHlsZXNbbmFtZV07XG5cbiAgICAgIGlmIChwYXJzZWRQcm9wID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wSW5mbyA9IHRoaXMucHJvcGVydGllc1tuYW1lXTtcbiAgICAgIHZhciB0eXBlID0gcHJvcEluZm8udHlwZTtcbiAgICAgIHZhciBfZ3JLZXkgPSBwcm9wSW5mby5ncm91cEtleTtcbiAgICAgIHZhciBub3JtYWxpemVkTnVtYmVyVmFsID0gdm9pZCAwO1xuXG4gICAgICBpZiAocHJvcEluZm8uaGFzaE92ZXJyaWRlICE9IG51bGwpIHtcbiAgICAgICAgbm9ybWFsaXplZE51bWJlclZhbCA9IHByb3BJbmZvLmhhc2hPdmVycmlkZShlbGUsIHBhcnNlZFByb3ApO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZWRQcm9wLnBmVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICBub3JtYWxpemVkTnVtYmVyVmFsID0gcGFyc2VkUHJvcC5wZlZhbHVlO1xuICAgICAgfSAvLyBtaWdodCBub3QgYmUgYSBudW1iZXIgaWYgaXQgYWxsb3dzIGVudW1zXG5cblxuICAgICAgdmFyIG51bWJlclZhbCA9IHByb3BJbmZvLmVudW1zID09IG51bGwgPyBwYXJzZWRQcm9wLnZhbHVlIDogbnVsbDtcbiAgICAgIHZhciBoYXZlTm9ybU51bSA9IG5vcm1hbGl6ZWROdW1iZXJWYWwgIT0gbnVsbDtcbiAgICAgIHZhciBoYXZlVW5pdGVkTnVtID0gbnVtYmVyVmFsICE9IG51bGw7XG4gICAgICB2YXIgaGF2ZU51bSA9IGhhdmVOb3JtTnVtIHx8IGhhdmVVbml0ZWROdW07XG4gICAgICB2YXIgdW5pdHMgPSBwYXJzZWRQcm9wLnVuaXRzOyAvLyBudW1iZXJzIGFyZSBjaGVhcGVyIHRvIGhhc2ggdGhhbiBzdHJpbmdzXG4gICAgICAvLyAxIGhhc2ggb3AgdnMgbiBoYXNoIG9wcyAoZm9yIGxlbmd0aCBuIHN0cmluZylcblxuICAgICAgaWYgKHR5cGUubnVtYmVyICYmIGhhdmVOdW0gJiYgIXR5cGUubXVsdGlwbGUpIHtcbiAgICAgICAgdmFyIHYgPSBoYXZlTm9ybU51bSA/IG5vcm1hbGl6ZWROdW1iZXJWYWwgOiBudW1iZXJWYWw7XG4gICAgICAgIHVwZGF0ZUdyS2V5KGNsZWFuTnVtKHYpLCBfZ3JLZXkpO1xuXG4gICAgICAgIGlmICghaGF2ZU5vcm1OdW0gJiYgdW5pdHMgIT0gbnVsbCkge1xuICAgICAgICAgIHVwZGF0ZUdyS2V5V1N0cih1bml0cywgX2dyS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlR3JLZXlXU3RyKHBhcnNlZFByb3Auc3RyVmFsdWUsIF9ncktleSk7XG4gICAgICB9XG4gICAgfSAvLyBvdmVyYWxsIHN0eWxlIGtleVxuICAgIC8vXG5cblxuICAgIHZhciBoYXNoID0gW0RFRkFVTFRfSEFTSF9TRUVELCBERUZBVUxUX0hBU0hfU0VFRF9BTFRdO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcHJvcEdyS2V5cy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgX2dyS2V5MiA9IHByb3BHcktleXNbX2kyXTtcbiAgICAgIHZhciBnckhhc2ggPSBfcC5zdHlsZUtleXNbX2dyS2V5Ml07XG4gICAgICBoYXNoWzBdID0gaGFzaEludChnckhhc2hbMF0sIGhhc2hbMF0pO1xuICAgICAgaGFzaFsxXSA9IGhhc2hJbnRBbHQoZ3JIYXNoWzFdLCBoYXNoWzFdKTtcbiAgICB9XG5cbiAgICBfcC5zdHlsZUtleSA9IGNvbWJpbmVIYXNoZXMoaGFzaFswXSwgaGFzaFsxXSk7IC8vIGxhYmVsIGRpbXNcbiAgICAvL1xuXG4gICAgdmFyIHNrID0gX3Auc3R5bGVLZXlzO1xuICAgIF9wLmxhYmVsRGltc0tleSA9IGNvbWJpbmVIYXNoZXNBcnJheShzay5sYWJlbERpbWVuc2lvbnMpO1xuICAgIHZhciBsYWJlbEtleXMgPSBwcm9wSGFzaChlbGUsIFsnbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICBfcC5sYWJlbEtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShsYWJlbEtleXMpO1xuICAgIF9wLmxhYmVsU3R5bGVLZXkgPSBjb21iaW5lSGFzaGVzQXJyYXkoaGFzaEFycmF5cyhzay5jb21tb25MYWJlbCwgbGFiZWxLZXlzKSk7XG5cbiAgICBpZiAoIWlzTm9kZSkge1xuICAgICAgdmFyIHNvdXJjZUxhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWydzb3VyY2UtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICAgIF9wLnNvdXJjZUxhYmVsS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KHNvdXJjZUxhYmVsS2V5cyk7XG4gICAgICBfcC5zb3VyY2VMYWJlbFN0eWxlS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KGhhc2hBcnJheXMoc2suY29tbW9uTGFiZWwsIHNvdXJjZUxhYmVsS2V5cykpO1xuICAgICAgdmFyIHRhcmdldExhYmVsS2V5cyA9IHByb3BIYXNoKGVsZSwgWyd0YXJnZXQtbGFiZWwnXSwgc2subGFiZWxEaW1lbnNpb25zKTtcbiAgICAgIF9wLnRhcmdldExhYmVsS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KHRhcmdldExhYmVsS2V5cyk7XG4gICAgICBfcC50YXJnZXRMYWJlbFN0eWxlS2V5ID0gY29tYmluZUhhc2hlc0FycmF5KGhhc2hBcnJheXMoc2suY29tbW9uTGFiZWwsIHRhcmdldExhYmVsS2V5cykpO1xuICAgIH0gLy8gbm9kZVxuICAgIC8vXG5cblxuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHZhciBfcCRzdHlsZUtleXMgPSBfcC5zdHlsZUtleXMsXG4gICAgICAgICAgbm9kZUJvZHkgPSBfcCRzdHlsZUtleXMubm9kZUJvZHksXG4gICAgICAgICAgbm9kZUJvcmRlciA9IF9wJHN0eWxlS2V5cy5ub2RlQm9yZGVyLFxuICAgICAgICAgIGJhY2tncm91bmRJbWFnZSA9IF9wJHN0eWxlS2V5cy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgICAgICAgY29tcG91bmQgPSBfcCRzdHlsZUtleXMuY29tcG91bmQsXG4gICAgICAgICAgcGllID0gX3Akc3R5bGVLZXlzLnBpZTtcbiAgICAgIHZhciBub2RlS2V5cyA9IFtub2RlQm9keSwgbm9kZUJvcmRlciwgYmFja2dyb3VuZEltYWdlLCBjb21wb3VuZCwgcGllXS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICAgICAgcmV0dXJuIGsgIT0gbnVsbDtcbiAgICAgIH0pLnJlZHVjZShoYXNoQXJyYXlzLCBbREVGQVVMVF9IQVNIX1NFRUQsIERFRkFVTFRfSEFTSF9TRUVEX0FMVF0pO1xuICAgICAgX3Aubm9kZUtleSA9IGNvbWJpbmVIYXNoZXNBcnJheShub2RlS2V5cyk7XG4gICAgICBfcC5oYXNQaWUgPSBwaWUgIT0gbnVsbCAmJiBwaWVbMF0gIT09IERFRkFVTFRfSEFTSF9TRUVEICYmIHBpZVsxXSAhPT0gREVGQVVMVF9IQVNIX1NFRURfQUxUO1xuICAgIH1cblxuICAgIHJldHVybiBvbGRTdHlsZUtleSAhPT0gX3Auc3R5bGVLZXk7XG4gIH07XG5cbiAgc3R5Zm4kOC5jbGVhclN0eWxlSGludHMgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIF9wLnN0eWxlQ3h0S2V5ID0gJyc7XG4gICAgX3Auc3R5bGVLZXlzID0ge307XG4gICAgX3Auc3R5bGVLZXkgPSBudWxsO1xuICAgIF9wLmxhYmVsS2V5ID0gbnVsbDtcbiAgICBfcC5sYWJlbFN0eWxlS2V5ID0gbnVsbDtcbiAgICBfcC5zb3VyY2VMYWJlbEtleSA9IG51bGw7XG4gICAgX3Auc291cmNlTGFiZWxTdHlsZUtleSA9IG51bGw7XG4gICAgX3AudGFyZ2V0TGFiZWxLZXkgPSBudWxsO1xuICAgIF9wLnRhcmdldExhYmVsU3R5bGVLZXkgPSBudWxsO1xuICAgIF9wLm5vZGVLZXkgPSBudWxsO1xuICAgIF9wLmhhc1BpZSA9IG51bGw7XG4gIH07IC8vIGFwcGx5IGEgcHJvcGVydHkgdG8gdGhlIHN0eWxlIChmb3IgaW50ZXJuYWwgdXNlKVxuICAvLyByZXR1cm5zIHdoZXRoZXIgYXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWxcbiAgLy9cbiAgLy8gbm93LCB0aGlzIGZ1bmN0aW9uIGZsYXR0ZW5zIHRoZSBwcm9wZXJ0eSwgYW5kIGhlcmUncyBob3c6XG4gIC8vXG4gIC8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlLCBkZWxldGVCeXBhc3M6IHRydWUgfVxuICAvLyBubyBwcm9wZXJ0eSBpcyBnZW5lcmF0ZWQsIGluc3RlYWQgdGhlIGJ5cGFzcyBwcm9wZXJ0eSBpbiB0aGVcbiAgLy8gZWxlbWVudCdzIHN0eWxlIGlzIHJlcGxhY2VkIGJ5IHdoYXQncyBwb2ludGVkIHRvIGJ5IHRoZSBgYnlwYXNzZWRgXG4gIC8vIGZpZWxkIGluIHRoZSBieXBhc3MgcHJvcGVydHkgKGkuZS4gcmVzdG9yaW5nIHRoZSBwcm9wZXJ0eSB0aGVcbiAgLy8gYnlwYXNzIHdhcyBvdmVycmlkaW5nKVxuICAvL1xuICAvLyBmb3IgcGFyc2VkUHJvcDp7IG1hcHBlZDogdHJ1dGh5IH1cbiAgLy8gdGhlIGdlbmVyYXRlZCBmbGF0dGVuZWRQcm9wOnsgbWFwcGluZzogcHJvcCB9XG4gIC8vXG4gIC8vIGZvciBwYXJzZWRQcm9wOnsgYnlwYXNzOiB0cnVlIH1cbiAgLy8gdGhlIGdlbmVyYXRlZCBmbGF0dGVuZWRQcm9wOnsgYnlwYXNzZWQ6IHBhcnNlZFByb3AgfVxuXG5cbiAgc3R5Zm4kOC5hcHBseVBhcnNlZFByb3BlcnR5ID0gZnVuY3Rpb24gKGVsZSwgcGFyc2VkUHJvcCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcHJvcCA9IHBhcnNlZFByb3A7XG4gICAgdmFyIHN0eWxlID0gZWxlLl9wcml2YXRlLnN0eWxlO1xuICAgIHZhciBmbGF0UHJvcDtcbiAgICB2YXIgdHlwZXMgPSBzZWxmLnR5cGVzO1xuICAgIHZhciB0eXBlID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3AubmFtZV0udHlwZTtcbiAgICB2YXIgcHJvcElzQnlwYXNzID0gcHJvcC5ieXBhc3M7XG4gICAgdmFyIG9yaWdQcm9wID0gc3R5bGVbcHJvcC5uYW1lXTtcbiAgICB2YXIgb3JpZ1Byb3BJc0J5cGFzcyA9IG9yaWdQcm9wICYmIG9yaWdQcm9wLmJ5cGFzcztcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIGZsYXRQcm9wTWFwcGluZyA9ICdtYXBwaW5nJztcblxuICAgIHZhciBnZXRWYWwgPSBmdW5jdGlvbiBnZXRWYWwocCkge1xuICAgICAgaWYgKHAgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHAucGZWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwLnZhbHVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgY2hlY2tUcmlnZ2VycyA9IGZ1bmN0aW9uIGNoZWNrVHJpZ2dlcnMoKSB7XG4gICAgICB2YXIgZnJvbVZhbCA9IGdldFZhbChvcmlnUHJvcCk7XG4gICAgICB2YXIgdG9WYWwgPSBnZXRWYWwocHJvcCk7XG4gICAgICBzZWxmLmNoZWNrVHJpZ2dlcnMoZWxlLCBwcm9wLm5hbWUsIGZyb21WYWwsIHRvVmFsKTtcbiAgICB9O1xuXG4gICAgaWYgKHByb3AgJiYgcHJvcC5uYW1lLnN1YnN0cigwLCAzKSA9PT0gJ3BpZScpIHtcbiAgICAgIHdhcm4oJ1RoZSBwaWUgc3R5bGUgcHJvcGVydGllcyBhcmUgZGVwcmVjYXRlZC4gIENyZWF0ZSBjaGFydHMgdXNpbmcgYmFja2dyb3VuZCBpbWFnZXMgaW5zdGVhZC4nKTtcbiAgICB9IC8vIGVkZ2Ugc2FuaXR5IGNoZWNrcyB0byBwcmV2ZW50IHRoZSBjbGllbnQgZnJvbSBtYWtpbmcgc2VyaW91cyBtaXN0YWtlc1xuXG5cbiAgICBpZiAocGFyc2VkUHJvcC5uYW1lID09PSAnY3VydmUtc3R5bGUnICYmIGVsZS5pc0VkZ2UoKSAmJiAoIC8vIGxvb3BzIG11c3QgYmUgYnVuZGxlZCBiZXppZXJzXG4gICAgcGFyc2VkUHJvcC52YWx1ZSAhPT0gJ2JlemllcicgJiYgZWxlLmlzTG9vcCgpIHx8IC8vIGVkZ2VzIGNvbm5lY3RlZCB0byBjb21wb3VuZCBub2RlcyBjYW4gbm90IGJlIGhheXN0YWNrc1xuICAgIHBhcnNlZFByb3AudmFsdWUgPT09ICdoYXlzdGFjaycgJiYgKGVsZS5zb3VyY2UoKS5pc1BhcmVudCgpIHx8IGVsZS50YXJnZXQoKS5pc1BhcmVudCgpKSkpIHtcbiAgICAgIHByb3AgPSBwYXJzZWRQcm9wID0gdGhpcy5wYXJzZShwYXJzZWRQcm9wLm5hbWUsICdiZXppZXInLCBwcm9wSXNCeXBhc3MpO1xuICAgIH1cblxuICAgIGlmIChwcm9wW1wiZGVsZXRlXCJdKSB7XG4gICAgICAvLyBkZWxldGUgdGhlIHByb3BlcnR5IGFuZCB1c2UgdGhlIGRlZmF1bHQgdmFsdWUgb24gZmFsc2V5IHZhbHVlXG4gICAgICBzdHlsZVtwcm9wLm5hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3AuZGVsZXRlQnlwYXNzZWQpIHtcbiAgICAgIC8vIGRlbGV0ZSB0aGUgcHJvcGVydHkgdGhhdCB0aGVcbiAgICAgIGlmICghb3JpZ1Byb3ApIHtcbiAgICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gY2FuJ3QgZGVsZXRlIGlmIG5vIHByb3BcbiAgICAgIH0gZWxzZSBpZiAob3JpZ1Byb3AuYnlwYXNzKSB7XG4gICAgICAgIC8vIGRlbGV0ZSBieXBhc3NlZFxuICAgICAgICBvcmlnUHJvcC5ieXBhc3NlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY2hlY2tUcmlnZ2VycygpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gd2UncmUgdW5zdWNjZXNzZnVsIGRlbGV0aW5nIHRoZSBieXBhc3NlZFxuICAgICAgfVxuICAgIH0gLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBkZWxldGUgdGhlIGN1cnJlbnQgYnlwYXNzXG5cblxuICAgIGlmIChwcm9wLmRlbGV0ZUJ5cGFzcykge1xuICAgICAgLy8gdGhlbiB0aGlzIHByb3BlcnR5IGlzIGp1c3QgaGVyZSB0byBpbmRpY2F0ZSB3ZSBuZWVkIHRvIGRlbGV0ZVxuICAgICAgaWYgKCFvcmlnUHJvcCkge1xuICAgICAgICBjaGVja1RyaWdnZXJzKCk7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBwcm9wZXJ0eSBpcyBhbHJlYWR5IG5vdCBkZWZpbmVkXG4gICAgICB9IGVsc2UgaWYgKG9yaWdQcm9wLmJ5cGFzcykge1xuICAgICAgICAvLyB0aGVuIHJlcGxhY2UgdGhlIGJ5cGFzcyBwcm9wZXJ0eSB3aXRoIHRoZSBvcmlnaW5hbFxuICAgICAgICAvLyBiZWNhdXNlIHRoZSBieXBhc3NlZCBwcm9wZXJ0eSB3YXMgYWxyZWFkeSBhcHBsaWVkIChhbmQgdGhlcmVmb3JlIHBhcnNlZCksIHdlIGNhbiBqdXN0IHJlcGxhY2UgaXQgKG5vIHJlYXBwbHlpbmcgbmVjZXNzYXJ5KVxuICAgICAgICBzdHlsZVtwcm9wLm5hbWVdID0gb3JpZ1Byb3AuYnlwYXNzZWQ7XG4gICAgICAgIGNoZWNrVHJpZ2dlcnMoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHdlJ3JlIHVuc3VjY2Vzc2Z1bCBkZWxldGluZyB0aGUgYnlwYXNzXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByaW50TWFwcGluZ0VyciA9IGZ1bmN0aW9uIHByaW50TWFwcGluZ0VycigpIHtcbiAgICAgIHdhcm4oJ0RvIG5vdCBhc3NpZ24gbWFwcGluZ3MgdG8gZWxlbWVudHMgd2l0aG91dCBjb3JyZXNwb25kaW5nIGRhdGEgKGkuZS4gZWxlIGAnICsgZWxlLmlkKCkgKyAnYCBoYXMgbm8gbWFwcGluZyBmb3IgcHJvcGVydHkgYCcgKyBwcm9wLm5hbWUgKyAnYCB3aXRoIGRhdGEgZmllbGQgYCcgKyBwcm9wLmZpZWxkICsgJ2ApOyB0cnkgYSBgWycgKyBwcm9wLmZpZWxkICsgJ11gIHNlbGVjdG9yIHRvIGxpbWl0IHNjb3BlIHRvIGVsZW1lbnRzIHdpdGggYCcgKyBwcm9wLmZpZWxkICsgJ2AgZGVmaW5lZCcpO1xuICAgIH07IC8vIHB1dCB0aGUgcHJvcGVydHkgaW4gdGhlIHN0eWxlIG9iamVjdHNcblxuXG4gICAgc3dpdGNoIChwcm9wLm1hcHBlZCkge1xuICAgICAgLy8gZmxhdHRlbiB0aGUgcHJvcGVydHkgaWYgbWFwcGVkXG4gICAgICBjYXNlIHR5cGVzLm1hcERhdGE6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBmbGF0dGVuIHRoZSBmaWVsZCAoZS5nLiBkYXRhLmZvby5iYXIpXG4gICAgICAgICAgdmFyIGZpZWxkcyA9IHByb3AuZmllbGQuc3BsaXQoJy4nKTtcbiAgICAgICAgICB2YXIgZmllbGRWYWwgPSBfcC5kYXRhO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoICYmIGZpZWxkVmFsOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBmaWVsZCA9IGZpZWxkc1tpXTtcbiAgICAgICAgICAgIGZpZWxkVmFsID0gZmllbGRWYWxbZmllbGRdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZFZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBwcmludE1hcHBpbmdFcnIoKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgcGVyY2VudDtcblxuICAgICAgICAgIGlmICghbnVtYmVyJDEoZmllbGRWYWwpKSB7XG4gICAgICAgICAgICAvLyB0aGVuIGRvbid0IGFwcGx5IGFuZCBmYWxsIGJhY2sgb24gdGhlIGV4aXN0aW5nIHN0eWxlXG4gICAgICAgICAgICB3YXJuKCdEbyBub3QgdXNlIGNvbnRpbnVvdXMgbWFwcGVycyB3aXRob3V0IHNwZWNpZnlpbmcgbnVtZXJpYyBkYXRhIChpLmUuIGAnICsgcHJvcC5maWVsZCArICc6ICcgKyBmaWVsZFZhbCArICdgIGZvciBgJyArIGVsZS5pZCgpICsgJ2AgaXMgbm9uLW51bWVyaWMpJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBmaWVsZFdpZHRoID0gcHJvcC5maWVsZE1heCAtIHByb3AuZmllbGRNaW47XG5cbiAgICAgICAgICAgIGlmIChmaWVsZFdpZHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIC8vIHNhZmV0eSBjaGVjayAtLSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGFzIG5vIHByb3BzIG9mIHplcm8gcmFuZ2Ugc2hvdWxkIGJlIHBhc3NlZCBoZXJlXG4gICAgICAgICAgICAgIHBlcmNlbnQgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVyY2VudCA9IChmaWVsZFZhbCAtIHByb3AuZmllbGRNaW4pIC8gZmllbGRXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIG1ha2Ugc3VyZSB0byBib3VuZCBwZXJjZW50IHZhbHVlXG5cblxuICAgICAgICAgIGlmIChwZXJjZW50IDwgMCkge1xuICAgICAgICAgICAgcGVyY2VudCA9IDA7XG4gICAgICAgICAgfSBlbHNlIGlmIChwZXJjZW50ID4gMSkge1xuICAgICAgICAgICAgcGVyY2VudCA9IDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGUuY29sb3IpIHtcbiAgICAgICAgICAgIHZhciByMSA9IHByb3AudmFsdWVNaW5bMF07XG4gICAgICAgICAgICB2YXIgcjIgPSBwcm9wLnZhbHVlTWF4WzBdO1xuICAgICAgICAgICAgdmFyIGcxID0gcHJvcC52YWx1ZU1pblsxXTtcbiAgICAgICAgICAgIHZhciBnMiA9IHByb3AudmFsdWVNYXhbMV07XG4gICAgICAgICAgICB2YXIgYjEgPSBwcm9wLnZhbHVlTWluWzJdO1xuICAgICAgICAgICAgdmFyIGIyID0gcHJvcC52YWx1ZU1heFsyXTtcbiAgICAgICAgICAgIHZhciBhMSA9IHByb3AudmFsdWVNaW5bM10gPT0gbnVsbCA/IDEgOiBwcm9wLnZhbHVlTWluWzNdO1xuICAgICAgICAgICAgdmFyIGEyID0gcHJvcC52YWx1ZU1heFszXSA9PSBudWxsID8gMSA6IHByb3AudmFsdWVNYXhbM107XG4gICAgICAgICAgICB2YXIgY2xyID0gW01hdGgucm91bmQocjEgKyAocjIgLSByMSkgKiBwZXJjZW50KSwgTWF0aC5yb3VuZChnMSArIChnMiAtIGcxKSAqIHBlcmNlbnQpLCBNYXRoLnJvdW5kKGIxICsgKGIyIC0gYjEpICogcGVyY2VudCksIE1hdGgucm91bmQoYTEgKyAoYTIgLSBhMSkgKiBwZXJjZW50KV07XG4gICAgICAgICAgICBmbGF0UHJvcCA9IHtcbiAgICAgICAgICAgICAgLy8gY29sb3VycyBhcmUgc2ltcGxlLCBzbyBqdXN0IGNyZWF0ZSB0aGUgZmxhdCBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGV4cGVuc2l2ZSBzdHJpbmcgcGFyc2luZ1xuICAgICAgICAgICAgICBieXBhc3M6IHByb3AuYnlwYXNzLFxuICAgICAgICAgICAgICAvLyB3ZSdyZSBhIGJ5cGFzcyBpZiB0aGUgbWFwcGluZyBwcm9wZXJ0eSBpcyBhIGJ5cGFzc1xuICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlOiBjbHIsXG4gICAgICAgICAgICAgIHN0clZhbHVlOiAncmdiKCcgKyBjbHJbMF0gKyAnLCAnICsgY2xyWzFdICsgJywgJyArIGNsclsyXSArICcpJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUubnVtYmVyKSB7XG4gICAgICAgICAgICB2YXIgY2FsY1ZhbHVlID0gcHJvcC52YWx1ZU1pbiArIChwcm9wLnZhbHVlTWF4IC0gcHJvcC52YWx1ZU1pbikgKiBwZXJjZW50O1xuICAgICAgICAgICAgZmxhdFByb3AgPSB0aGlzLnBhcnNlKHByb3AubmFtZSwgY2FsY1ZhbHVlLCBwcm9wLmJ5cGFzcywgZmxhdFByb3BNYXBwaW5nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBjYW4gb25seSBtYXAgdG8gY29sb3VycyBhbmQgbnVtYmVyc1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZmxhdFByb3ApIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIGNhbid0IGZsYXR0ZW4gdGhlIHByb3BlcnR5LCB0aGVuIGRvbid0IGFwcGx5IHRoZSBwcm9wZXJ0eSBhbmQgZmFsbCBiYWNrIG9uIHRoZSBleGlzdGluZyBzdHlsZVxuICAgICAgICAgICAgcHJpbnRNYXBwaW5nRXJyKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmxhdFByb3AubWFwcGluZyA9IHByb3A7IC8vIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1hcHBpbmdcblxuICAgICAgICAgIHByb3AgPSBmbGF0UHJvcDsgLy8gdGhlIGZsYXR0ZW5lZCAobWFwcGVkKSBwcm9wZXJ0eSBpcyB0aGUgb25lIHdlIHdhbnRcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAvLyBkaXJlY3QgbWFwcGluZ1xuXG4gICAgICBjYXNlIHR5cGVzLmRhdGE6XG4gICAgICAgIHtcbiAgICAgICAgICAvLyBmbGF0dGVuIHRoZSBmaWVsZCAoZS5nLiBkYXRhLmZvby5iYXIpXG4gICAgICAgICAgdmFyIF9maWVsZHMgPSBwcm9wLmZpZWxkLnNwbGl0KCcuJyk7XG5cbiAgICAgICAgICB2YXIgX2ZpZWxkVmFsID0gX3AuZGF0YTtcblxuICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IF9maWVsZHMubGVuZ3RoICYmIF9maWVsZFZhbDsgX2kzKyspIHtcbiAgICAgICAgICAgIHZhciBfZmllbGQgPSBfZmllbGRzW19pM107XG4gICAgICAgICAgICBfZmllbGRWYWwgPSBfZmllbGRWYWxbX2ZpZWxkXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoX2ZpZWxkVmFsICE9IG51bGwpIHtcbiAgICAgICAgICAgIGZsYXRQcm9wID0gdGhpcy5wYXJzZShwcm9wLm5hbWUsIF9maWVsZFZhbCwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmbGF0UHJvcCkge1xuICAgICAgICAgICAgLy8gaWYgd2UgY2FuJ3QgZmxhdHRlbiB0aGUgcHJvcGVydHksIHRoZW4gZG9uJ3QgYXBwbHkgYW5kIGZhbGwgYmFjayBvbiB0aGUgZXhpc3Rpbmcgc3R5bGVcbiAgICAgICAgICAgIHByaW50TWFwcGluZ0VycigpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZsYXRQcm9wLm1hcHBpbmcgPSBwcm9wOyAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwaW5nXG5cbiAgICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIHR5cGVzLmZuOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGZuID0gcHJvcC52YWx1ZTtcbiAgICAgICAgICB2YXIgZm5SZXRWYWwgPSBwcm9wLmZuVmFsdWUgIT0gbnVsbCA/IHByb3AuZm5WYWx1ZSA6IGZuKGVsZSk7IC8vIGNoZWNrIGZvciBjYWNoZWQgdmFsdWUgYmVmb3JlIGNhbGxpbmcgZnVuY3Rpb25cblxuICAgICAgICAgIHByb3AucHJldkZuVmFsdWUgPSBmblJldFZhbDtcblxuICAgICAgICAgIGlmIChmblJldFZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICB3YXJuKCdDdXN0b20gZnVuY3Rpb24gbWFwcGVycyBtYXkgbm90IHJldHVybiBudWxsIChpLmUuIGAnICsgcHJvcC5uYW1lICsgJ2AgZm9yIGVsZSBgJyArIGVsZS5pZCgpICsgJ2AgaXMgbnVsbCknKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmbGF0UHJvcCA9IHRoaXMucGFyc2UocHJvcC5uYW1lLCBmblJldFZhbCwgcHJvcC5ieXBhc3MsIGZsYXRQcm9wTWFwcGluZyk7XG5cbiAgICAgICAgICBpZiAoIWZsYXRQcm9wKSB7XG4gICAgICAgICAgICB3YXJuKCdDdXN0b20gZnVuY3Rpb24gbWFwcGVycyBtYXkgbm90IHJldHVybiBpbnZhbGlkIHZhbHVlcyBmb3IgdGhlIHByb3BlcnR5IHR5cGUgKGkuZS4gYCcgKyBwcm9wLm5hbWUgKyAnYCBmb3IgZWxlIGAnICsgZWxlLmlkKCkgKyAnYCBpcyBpbnZhbGlkKScpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZsYXRQcm9wLm1hcHBpbmcgPSBjb3B5KHByb3ApOyAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtYXBwaW5nXG5cbiAgICAgICAgICBwcm9wID0gZmxhdFByb3A7IC8vIHRoZSBmbGF0dGVuZWQgKG1hcHBlZCkgcHJvcGVydHkgaXMgdGhlIG9uZSB3ZSB3YW50XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBqdXN0IHNldCB0aGUgcHJvcGVydHlcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gbm90IGEgdmFsaWQgbWFwcGluZ1xuICAgIH0gLy8gaWYgdGhlIHByb3BlcnR5IGlzIGEgYnlwYXNzIHByb3BlcnR5LCB0aGVuIGxpbmsgdGhlIHJlc3VsdGFudCBwcm9wZXJ0eSB0byB0aGUgb3JpZ2luYWwgb25lXG5cblxuICAgIGlmIChwcm9wSXNCeXBhc3MpIHtcbiAgICAgIGlmIChvcmlnUHJvcElzQnlwYXNzKSB7XG4gICAgICAgIC8vIHRoZW4gdGhpcyBieXBhc3Mgb3ZlcnJpZGVzIHRoZSBleGlzdGluZyBvbmVcbiAgICAgICAgcHJvcC5ieXBhc3NlZCA9IG9yaWdQcm9wLmJ5cGFzc2VkOyAvLyBzdGVhbCBieXBhc3NlZCBwcm9wIGZyb20gb2xkIGJ5cGFzc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlbiBsaW5rIHRoZSBvcmlnIHByb3AgdG8gdGhlIG5ldyBieXBhc3NcbiAgICAgICAgcHJvcC5ieXBhc3NlZCA9IG9yaWdQcm9wO1xuICAgICAgfVxuXG4gICAgICBzdHlsZVtwcm9wLm5hbWVdID0gcHJvcDsgLy8gYW5kIHNldFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBwcm9wIGlzIG5vdCBieXBhc3NcbiAgICAgIGlmIChvcmlnUHJvcElzQnlwYXNzKSB7XG4gICAgICAgIC8vIHRoZW4ga2VlcCB0aGUgb3JpZyBwcm9wIChzaW5jZSBpdCdzIGEgYnlwYXNzKSBhbmQgbGluayB0byB0aGUgbmV3IHByb3BcbiAgICAgICAgb3JpZ1Byb3AuYnlwYXNzZWQgPSBwcm9wO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlbiBqdXN0IHJlcGxhY2UgdGhlIG9sZCBwcm9wIHdpdGggdGhlIG5ldyBvbmVcbiAgICAgICAgc3R5bGVbcHJvcC5uYW1lXSA9IHByb3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tUcmlnZ2VycygpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHN0eWZuJDguY2xlYW5FbGVtZW50cyA9IGZ1bmN0aW9uIChlbGVzLCBrZWVwQnlwYXNzZXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgdGhpcy5jbGVhclN0eWxlSGludHMoZWxlKTtcbiAgICAgIGVsZS5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICAgIGVsZS5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTtcblxuICAgICAgaWYgKCFrZWVwQnlwYXNzZXMpIHtcbiAgICAgICAgZWxlLl9wcml2YXRlLnN0eWxlID0ge307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgc3R5bGUgPSBlbGUuX3ByaXZhdGUuc3R5bGU7XG4gICAgICAgIHZhciBwcm9wTmFtZXMgPSBPYmplY3Qua2V5cyhzdHlsZSk7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwcm9wTmFtZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wTmFtZXNbal07XG4gICAgICAgICAgdmFyIGVsZVByb3AgPSBzdHlsZVtwcm9wTmFtZV07XG5cbiAgICAgICAgICBpZiAoZWxlUHJvcCAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZWxlUHJvcC5ieXBhc3MpIHtcbiAgICAgICAgICAgICAgZWxlUHJvcC5ieXBhc3NlZCA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHlsZVtwcm9wTmFtZV0gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTsgLy8gdXBkYXRlcyB0aGUgdmlzdWFsIHN0eWxlIGZvciBhbGwgZWxlbWVudHMgKHVzZWZ1bCBmb3IgbWFudWFsIHN0eWxlIG1vZGlmaWNhdGlvbiBhZnRlciBpbml0KVxuXG5cbiAgc3R5Zm4kOC51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5fcHJpdmF0ZS5jeTtcbiAgICB2YXIgZWxlcyA9IGN5Lm11dGFibGVFbGVtZW50cygpO1xuICAgIGVsZXMudXBkYXRlU3R5bGUoKTtcbiAgfTsgLy8gZGlmZlByb3BzIDogeyBuYW1lID0+IHsgcHJldiwgbmV4dCB9IH1cblxuXG4gIHN0eWZuJDgudXBkYXRlVHJhbnNpdGlvbnMgPSBmdW5jdGlvbiAoZWxlLCBkaWZmUHJvcHMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBwcm9wcyA9IGVsZS5wc3R5bGUoJ3RyYW5zaXRpb24tcHJvcGVydHknKS52YWx1ZTtcbiAgICB2YXIgZHVyYXRpb24gPSBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLWR1cmF0aW9uJykucGZWYWx1ZTtcbiAgICB2YXIgZGVsYXkgPSBlbGUucHN0eWxlKCd0cmFuc2l0aW9uLWRlbGF5JykucGZWYWx1ZTtcblxuICAgIGlmIChwcm9wcy5sZW5ndGggPiAwICYmIGR1cmF0aW9uID4gMCkge1xuICAgICAgdmFyIHN0eWxlID0ge307IC8vIGJ1aWxkIHVwIHRoZSBzdHlsZSB0byBhbmltYXRlIHRvd2FyZHNcblxuICAgICAgdmFyIGFueVByZXYgPSBmYWxzZTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcHJvcCA9IHByb3BzW2ldO1xuICAgICAgICB2YXIgc3R5UHJvcCA9IGVsZS5wc3R5bGUocHJvcCk7XG4gICAgICAgIHZhciBkaWZmUHJvcCA9IGRpZmZQcm9wc1twcm9wXTtcblxuICAgICAgICBpZiAoIWRpZmZQcm9wKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcHJldlByb3AgPSBkaWZmUHJvcC5wcmV2O1xuICAgICAgICB2YXIgZnJvbVByb3AgPSBwcmV2UHJvcDtcbiAgICAgICAgdmFyIHRvUHJvcCA9IGRpZmZQcm9wLm5leHQgIT0gbnVsbCA/IGRpZmZQcm9wLm5leHQgOiBzdHlQcm9wO1xuICAgICAgICB2YXIgZGlmZiA9IGZhbHNlO1xuICAgICAgICB2YXIgaW5pdFZhbCA9IHZvaWQgMDtcbiAgICAgICAgdmFyIGluaXREdCA9IDAuMDAwMDAxOyAvLyBkZWx0YSB0aW1lICUgdmFsdWUgZm9yIGluaXRWYWwgKGFsbG93cyBhbmltYXRpbmcgb3V0IG9mIGluaXQgemVybyBvcGFjaXR5KVxuXG4gICAgICAgIGlmICghZnJvbVByb3ApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyBjb25zaWRlciBweCB2YWx1ZXNcblxuXG4gICAgICAgIGlmIChudW1iZXIkMShmcm9tUHJvcC5wZlZhbHVlKSAmJiBudW1iZXIkMSh0b1Byb3AucGZWYWx1ZSkpIHtcbiAgICAgICAgICBkaWZmID0gdG9Qcm9wLnBmVmFsdWUgLSBmcm9tUHJvcC5wZlZhbHVlOyAvLyBub256ZXJvIGlzIHRydXRoeVxuXG4gICAgICAgICAgaW5pdFZhbCA9IGZyb21Qcm9wLnBmVmFsdWUgKyBpbml0RHQgKiBkaWZmOyAvLyBjb25zaWRlciBudW1lcmljYWwgdmFsdWVzXG4gICAgICAgIH0gZWxzZSBpZiAobnVtYmVyJDEoZnJvbVByb3AudmFsdWUpICYmIG51bWJlciQxKHRvUHJvcC52YWx1ZSkpIHtcbiAgICAgICAgICBkaWZmID0gdG9Qcm9wLnZhbHVlIC0gZnJvbVByb3AudmFsdWU7IC8vIG5vbnplcm8gaXMgdHJ1dGh5XG5cbiAgICAgICAgICBpbml0VmFsID0gZnJvbVByb3AudmFsdWUgKyBpbml0RHQgKiBkaWZmOyAvLyBjb25zaWRlciBjb2xvdXIgdmFsdWVzXG4gICAgICAgIH0gZWxzZSBpZiAoYXJyYXkoZnJvbVByb3AudmFsdWUpICYmIGFycmF5KHRvUHJvcC52YWx1ZSkpIHtcbiAgICAgICAgICBkaWZmID0gZnJvbVByb3AudmFsdWVbMF0gIT09IHRvUHJvcC52YWx1ZVswXSB8fCBmcm9tUHJvcC52YWx1ZVsxXSAhPT0gdG9Qcm9wLnZhbHVlWzFdIHx8IGZyb21Qcm9wLnZhbHVlWzJdICE9PSB0b1Byb3AudmFsdWVbMl07XG4gICAgICAgICAgaW5pdFZhbCA9IGZyb21Qcm9wLnN0clZhbHVlO1xuICAgICAgICB9IC8vIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyBnb29kIGZvciBhbiBhbmltYXRpb24gb25seSBpZiBpdCdzIGRpZmZlcmVudFxuXG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICBzdHlsZVtwcm9wXSA9IHRvUHJvcC5zdHJWYWx1ZTsgLy8gdG8gdmFsXG5cbiAgICAgICAgICB0aGlzLmFwcGx5QnlwYXNzKGVsZSwgcHJvcCwgaW5pdFZhbCk7IC8vIGZyb20gdmFsXG5cbiAgICAgICAgICBhbnlQcmV2ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBlbmQgaWYgcHJvcHMgYWxsb3cgYW5pXG4gICAgICAvLyBjYW4ndCB0cmFuc2l0aW9uIGlmIHRoZXJlJ3Mgbm90aGluZyBwcmV2aW91cyB0byB0cmFuc2l0aW9uIGZyb21cblxuXG4gICAgICBpZiAoIWFueVByZXYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfcC50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID4gMCkge1xuICAgICAgICAgIGVsZS5kZWxheUFuaW1hdGlvbihkZWxheSkucGxheSgpLnByb21pc2UoKS50aGVuKHJlc29sdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBlbGUuYW5pbWF0aW9uKHtcbiAgICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgIGVhc2luZzogZWxlLnBzdHlsZSgndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nKS52YWx1ZSxcbiAgICAgICAgICBxdWV1ZTogZmFsc2VcbiAgICAgICAgfSkucGxheSgpLnByb21pc2UoKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBpZiggIWlzQnlwYXNzICl7XG4gICAgICAgIHNlbGYucmVtb3ZlQnlwYXNzZXMoZWxlLCBwcm9wcyk7XG4gICAgICAgIGVsZS5lbWl0QW5kTm90aWZ5KCdzdHlsZScpOyAvLyB9XG5cbiAgICAgICAgX3AudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChfcC50cmFuc2l0aW9uaW5nKSB7XG4gICAgICB0aGlzLnJlbW92ZUJ5cGFzc2VzKGVsZSwgcHJvcHMpO1xuICAgICAgZWxlLmVtaXRBbmROb3RpZnkoJ3N0eWxlJyk7XG4gICAgICBfcC50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIHN0eWZuJDguY2hlY2tUcmlnZ2VyID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBnZXRUcmlnZ2VyLCBvblRyaWdnZXIpIHtcbiAgICB2YXIgcHJvcCA9IHRoaXMucHJvcGVydGllc1tuYW1lXTtcbiAgICB2YXIgdHJpZ2dlckNoZWNrID0gZ2V0VHJpZ2dlcihwcm9wKTtcblxuICAgIGlmICh0cmlnZ2VyQ2hlY2sgIT0gbnVsbCAmJiB0cmlnZ2VyQ2hlY2soZnJvbVZhbHVlLCB0b1ZhbHVlKSkge1xuICAgICAgb25UcmlnZ2VyKHByb3ApO1xuICAgIH1cbiAgfTtcblxuICBzdHlmbiQ4LmNoZWNrWk9yZGVyVHJpZ2dlciA9IGZ1bmN0aW9uIChlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLmNoZWNrVHJpZ2dlcihlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSwgZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIHJldHVybiBwcm9wLnRyaWdnZXJzWk9yZGVyO1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLl9wcml2YXRlLmN5Lm5vdGlmeSgnem9yZGVyJywgZWxlKTtcbiAgICB9KTtcbiAgfTtcblxuICBzdHlmbiQ4LmNoZWNrQm91bmRzVHJpZ2dlciA9IGZ1bmN0aW9uIChlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSkge1xuICAgIHRoaXMuY2hlY2tUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlLCBmdW5jdGlvbiAocHJvcCkge1xuICAgICAgcmV0dXJuIHByb3AudHJpZ2dlcnNCb3VuZHM7XG4gICAgfSwgZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgIGVsZS5kaXJ0eUNvbXBvdW5kQm91bmRzQ2FjaGUoKTtcbiAgICAgIGVsZS5kaXJ0eUJvdW5kaW5nQm94Q2FjaGUoKTsgLy8gaWYgdGhlIHByb3AgY2hhbmdlIG1ha2VzIHRoZSBiYiBvZiBwbGwgYmV6aWVyIGVkZ2VzIGludmFsaWQsXG4gICAgICAvLyB0aGVuIGRpcnR5IHRoZSBwbGwgZWRnZSBiYiBjYWNoZSBhcyB3ZWxsXG5cbiAgICAgIGlmICggLy8gb25seSBmb3IgYmV6aWVycyAtLSBzbyBwZXJmb3JtYW5jZSBvZiBvdGhlciBlZGdlcyBpc24ndCBhZmZlY3RlZFxuICAgICAgcHJvcC50cmlnZ2Vyc0JvdW5kc09mUGFyYWxsZWxCZXppZXJzICYmIChuYW1lID09PSAnY3VydmUtc3R5bGUnICYmIChmcm9tVmFsdWUgPT09ICdiZXppZXInIHx8IHRvVmFsdWUgPT09ICdiZXppZXInKSB8fCBuYW1lID09PSAnZGlzcGxheScgJiYgKGZyb21WYWx1ZSA9PT0gJ25vbmUnIHx8IHRvVmFsdWUgPT09ICdub25lJykpKSB7XG4gICAgICAgIGVsZS5wYXJhbGxlbEVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAocGxsRWRnZSkge1xuICAgICAgICAgIGlmIChwbGxFZGdlLmlzQnVuZGxlZEJlemllcigpKSB7XG4gICAgICAgICAgICBwbGxFZGdlLmRpcnR5Qm91bmRpbmdCb3hDYWNoZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgc3R5Zm4kOC5jaGVja1RyaWdnZXJzID0gZnVuY3Rpb24gKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKSB7XG4gICAgZWxlLmRpcnR5U3R5bGVDYWNoZSgpO1xuICAgIHRoaXMuY2hlY2taT3JkZXJUcmlnZ2VyKGVsZSwgbmFtZSwgZnJvbVZhbHVlLCB0b1ZhbHVlKTtcbiAgICB0aGlzLmNoZWNrQm91bmRzVHJpZ2dlcihlbGUsIG5hbWUsIGZyb21WYWx1ZSwgdG9WYWx1ZSk7XG4gIH07XG5cbiAgdmFyIHN0eWZuJDcgPSB7fTsgLy8gYnlwYXNzZXMgYXJlIGFwcGxpZWQgdG8gYW4gZXhpc3Rpbmcgc3R5bGUgb24gYW4gZWxlbWVudCwgYW5kIGp1c3QgdGFja2VkIG9uIHRlbXBvcmFyaWx5XG4gIC8vIHJldHVybnMgdHJ1ZSBpZmYgYXBwbGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIGF0IGxlYXN0IDEgc3BlY2lmaWVkIHByb3BlcnR5XG5cbiAgc3R5Zm4kNy5hcHBseUJ5cGFzcyA9IGZ1bmN0aW9uIChlbGVzLCBuYW1lLCB2YWx1ZSwgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgdmFyIGlzQnlwYXNzID0gdHJ1ZTsgLy8gcHV0IGFsbCB0aGUgcHJvcGVydGllcyAoY2FuIHNwZWNpZnkgb25lIG9yIG1hbnkpIGluIGFuIGFycmF5IGFmdGVyIHBhcnNpbmcgdGhlbVxuXG4gICAgaWYgKG5hbWUgPT09ICcqJyB8fCBuYW1lID09PSAnKionKSB7XG4gICAgICAvLyBhcHBseSB0byBhbGwgcHJvcGVydHkgbmFtZXNcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbaV07XG4gICAgICAgICAgdmFyIF9uYW1lID0gcHJvcC5uYW1lO1xuICAgICAgICAgIHZhciBwYXJzZWRQcm9wID0gdGhpcy5wYXJzZShfbmFtZSwgdmFsdWUsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKHBhcnNlZFByb3ApIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2gocGFyc2VkUHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdHJpbmcobmFtZSkpIHtcbiAgICAgIC8vIHRoZW4gcGFyc2UgdGhlIHNpbmdsZSBwcm9wZXJ0eVxuICAgICAgdmFyIF9wYXJzZWRQcm9wID0gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZSwgdHJ1ZSk7XG5cbiAgICAgIGlmIChfcGFyc2VkUHJvcCkge1xuICAgICAgICBwcm9wcy5wdXNoKF9wYXJzZWRQcm9wKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KG5hbWUpKSB7XG4gICAgICAvLyB0aGVuIHBhcnNlIGVhY2ggcHJvcGVydHlcbiAgICAgIHZhciBzcGVjaWZpZWRQcm9wcyA9IG5hbWU7XG4gICAgICB1cGRhdGVUcmFuc2l0aW9ucyA9IHZhbHVlO1xuICAgICAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMoc3BlY2lmaWVkUHJvcHMpO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbmFtZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBfbmFtZTIgPSBuYW1lc1tfaV07XG4gICAgICAgIHZhciBfdmFsdWUgPSBzcGVjaWZpZWRQcm9wc1tfbmFtZTJdO1xuXG4gICAgICAgIGlmIChfdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIHRyeSBjYW1lbCBjYXNlIG5hbWUgdG9vXG4gICAgICAgICAgX3ZhbHVlID0gc3BlY2lmaWVkUHJvcHNbZGFzaDJjYW1lbChfbmFtZTIpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBfcGFyc2VkUHJvcDIgPSB0aGlzLnBhcnNlKF9uYW1lMiwgX3ZhbHVlLCB0cnVlKTtcblxuICAgICAgICAgIGlmIChfcGFyc2VkUHJvcDIpIHtcbiAgICAgICAgICAgIHByb3BzLnB1c2goX3BhcnNlZFByb3AyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FuJ3QgZG8gYW55dGhpbmcgd2l0aG91dCB3ZWxsIGRlZmluZWQgcHJvcGVydGllc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gd2UndmUgZmFpbGVkIGlmIHRoZXJlIGFyZSBubyB2YWxpZCBwcm9wZXJ0aWVzXG5cblxuICAgIGlmIChwcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIG5vdywgYXBwbHkgdGhlIGJ5cGFzcyBwcm9wZXJ0aWVzIG9uIHRoZSBlbGVtZW50c1xuXG5cbiAgICB2YXIgcmV0ID0gZmFsc2U7IC8vIHJldHVybiB0cnVlIGlmIGF0IGxlYXN0IG9uZSBzdWNjZXNmdWwgYnlwYXNzIGFwcGxpZWRcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgLy8gZm9yIGVhY2ggZWxlXG4gICAgICB2YXIgZWxlID0gZWxlc1tfaTJdO1xuICAgICAgdmFyIGRpZmZQcm9wcyA9IHt9O1xuICAgICAgdmFyIGRpZmZQcm9wID0gdm9pZCAwO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIC8vIGZvciBlYWNoIHByb3BcbiAgICAgICAgdmFyIF9wcm9wID0gcHJvcHNbal07XG5cbiAgICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgICAgdmFyIHByZXZQcm9wID0gZWxlLnBzdHlsZShfcHJvcC5uYW1lKTtcbiAgICAgICAgICBkaWZmUHJvcCA9IGRpZmZQcm9wc1tfcHJvcC5uYW1lXSA9IHtcbiAgICAgICAgICAgIHByZXY6IHByZXZQcm9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldCA9IHRoaXMuYXBwbHlQYXJzZWRQcm9wZXJ0eShlbGUsIGNvcHkoX3Byb3ApKSB8fCByZXQ7XG5cbiAgICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgICAgZGlmZlByb3AubmV4dCA9IGVsZS5wc3R5bGUoX3Byb3AubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gZm9yIHByb3BzXG5cblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlSGludHMoZWxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVwZGF0ZVRyYW5zaXRpb25zKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVHJhbnNpdGlvbnMoZWxlLCBkaWZmUHJvcHMsIGlzQnlwYXNzKTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBlbGVzXG5cblxuICAgIHJldHVybiByZXQ7XG4gIH07IC8vIG9ubHkgdXNlZnVsIGluIHNwZWNpZmljIGNhc2VzIGxpa2UgYW5pbWF0aW9uXG5cblxuICBzdHlmbiQ3Lm92ZXJyaWRlQnlwYXNzID0gZnVuY3Rpb24gKGVsZXMsIG5hbWUsIHZhbHVlKSB7XG4gICAgbmFtZSA9IGNhbWVsMmRhc2gobmFtZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgdmFyIHByb3AgPSBlbGUuX3ByaXZhdGUuc3R5bGVbbmFtZV07XG4gICAgICB2YXIgdHlwZSA9IHRoaXMucHJvcGVydGllc1tuYW1lXS50eXBlO1xuICAgICAgdmFyIGlzQ29sb3IgPSB0eXBlLmNvbG9yO1xuICAgICAgdmFyIGlzTXVsdGkgPSB0eXBlLm11dGlwbGU7XG4gICAgICB2YXIgb2xkVmFsdWUgPSAhcHJvcCA/IG51bGwgOiBwcm9wLnBmVmFsdWUgIT0gbnVsbCA/IHByb3AucGZWYWx1ZSA6IHByb3AudmFsdWU7XG5cbiAgICAgIGlmICghcHJvcCB8fCAhcHJvcC5ieXBhc3MpIHtcbiAgICAgICAgLy8gbmVlZCBhIGJ5cGFzcyBpZiBvbmUgZG9lc24ndCBleGlzdFxuICAgICAgICB0aGlzLmFwcGx5QnlwYXNzKGVsZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcC52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChwcm9wLnBmVmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIHByb3AucGZWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQ29sb3IpIHtcbiAgICAgICAgICBwcm9wLnN0clZhbHVlID0gJ3JnYignICsgdmFsdWUuam9pbignLCcpICsgJyknO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGkpIHtcbiAgICAgICAgICBwcm9wLnN0clZhbHVlID0gdmFsdWUuam9pbignICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3Auc3RyVmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tUcmlnZ2VycyhlbGUsIG5hbWUsIG9sZFZhbHVlLCB2YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHN0eWZuJDcucmVtb3ZlQWxsQnlwYXNzZXMgPSBmdW5jdGlvbiAoZWxlcywgdXBkYXRlVHJhbnNpdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVCeXBhc3NlcyhlbGVzLCB0aGlzLnByb3BlcnR5TmFtZXMsIHVwZGF0ZVRyYW5zaXRpb25zKTtcbiAgfTtcblxuICBzdHlmbiQ3LnJlbW92ZUJ5cGFzc2VzID0gZnVuY3Rpb24gKGVsZXMsIHByb3BzLCB1cGRhdGVUcmFuc2l0aW9ucykge1xuICAgIHZhciBpc0J5cGFzcyA9IHRydWU7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2pdO1xuICAgICAgdmFyIGRpZmZQcm9wcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuYW1lID0gcHJvcHNbaV07XG4gICAgICAgIHZhciBwcm9wID0gdGhpcy5wcm9wZXJ0aWVzW25hbWVdO1xuICAgICAgICB2YXIgcHJldlByb3AgPSBlbGUucHN0eWxlKHByb3AubmFtZSk7XG5cbiAgICAgICAgaWYgKCFwcmV2UHJvcCB8fCAhcHJldlByb3AuYnlwYXNzKSB7XG4gICAgICAgICAgLy8gaWYgYSBieXBhc3MgZG9lc24ndCBleGlzdCBmb3IgdGhlIHByb3AsIG5vdGhpbmcgbmVlZHMgdG8gYmUgcmVtb3ZlZFxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZhbHVlID0gJyc7IC8vIGVtcHR5ID0+IHJlbW92ZSBieXBhc3NcblxuICAgICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgdmFsdWUsIHRydWUpO1xuICAgICAgICB2YXIgZGlmZlByb3AgPSBkaWZmUHJvcHNbcHJvcC5uYW1lXSA9IHtcbiAgICAgICAgICBwcmV2OiBwcmV2UHJvcFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFwcGx5UGFyc2VkUHJvcGVydHkoZWxlLCBwYXJzZWRQcm9wKTtcbiAgICAgICAgZGlmZlByb3AubmV4dCA9IGVsZS5wc3R5bGUocHJvcC5uYW1lKTtcbiAgICAgIH0gLy8gZm9yIHByb3BzXG5cblxuICAgICAgdGhpcy51cGRhdGVTdHlsZUhpbnRzKGVsZSk7XG5cbiAgICAgIGlmICh1cGRhdGVUcmFuc2l0aW9ucykge1xuICAgICAgICB0aGlzLnVwZGF0ZVRyYW5zaXRpb25zKGVsZSwgZGlmZlByb3BzLCBpc0J5cGFzcyk7XG4gICAgICB9XG4gICAgfSAvLyBmb3IgZWxlc1xuXG4gIH07XG5cbiAgdmFyIHN0eWZuJDYgPSB7fTsgLy8gZ2V0cyB3aGF0IGFuIGVtIHNpemUgY29ycmVzcG9uZHMgdG8gaW4gcGl4ZWxzIHJlbGF0aXZlIHRvIGEgZG9tIGVsZW1lbnRcblxuICBzdHlmbiQ2LmdldEVtU2l6ZUluUGl4ZWxzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBweCA9IHRoaXMuY29udGFpbmVyQ3NzKCdmb250LXNpemUnKTtcblxuICAgIGlmIChweCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdChweCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAxOyAvLyBmb3IgaGVhZGxlc3NcbiAgICB9XG4gIH07IC8vIGdldHMgY3NzIHByb3BlcnR5IGZyb20gdGhlIGNvcmUgY29udGFpbmVyXG5cblxuICBzdHlmbiQ2LmNvbnRhaW5lckNzcyA9IGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICAgIHZhciBjeSA9IHRoaXMuX3ByaXZhdGUuY3k7XG4gICAgdmFyIGRvbUVsZW1lbnQgPSBjeS5jb250YWluZXIoKTtcbiAgICB2YXIgY29udGFpbmVyV2luZG93ID0gY3kud2luZG93KCk7XG5cbiAgICBpZiAoY29udGFpbmVyV2luZG93ICYmIGRvbUVsZW1lbnQgJiYgY29udGFpbmVyV2luZG93LmdldENvbXB1dGVkU3R5bGUpIHtcbiAgICAgIHJldHVybiBjb250YWluZXJXaW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb21FbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BOYW1lKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIHN0eWZuJDUgPSB7fTsgLy8gZ2V0cyB0aGUgcmVuZGVyZWQgc3R5bGUgZm9yIGFuIGVsZW1lbnRcblxuICBzdHlmbiQ1LmdldFJlbmRlcmVkU3R5bGUgPSBmdW5jdGlvbiAoZWxlLCBwcm9wKSB7XG4gICAgaWYgKHByb3ApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN0eWxlUHJvcGVydHlWYWx1ZShlbGUsIHByb3AsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSYXdTdHlsZShlbGUsIHRydWUpO1xuICAgIH1cbiAgfTsgLy8gZ2V0cyB0aGUgcmF3IHN0eWxlIGZvciBhbiBlbGVtZW50XG5cblxuICBzdHlmbiQ1LmdldFJhd1N0eWxlID0gZnVuY3Rpb24gKGVsZSwgaXNSZW5kZXJlZFZhbCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBlbGUgPSBlbGVbMF07IC8vIGluc3VyZSBpdCdzIGFuIGVsZW1lbnRcblxuICAgIGlmIChlbGUpIHtcbiAgICAgIHZhciByc3R5bGUgPSB7fTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbaV07XG4gICAgICAgIHZhciB2YWwgPSBzZWxmLmdldFN0eWxlUHJvcGVydHlWYWx1ZShlbGUsIHByb3AubmFtZSwgaXNSZW5kZXJlZFZhbCk7XG5cbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICAgICAgcnN0eWxlW3Byb3AubmFtZV0gPSB2YWw7XG4gICAgICAgICAgcnN0eWxlW2Rhc2gyY2FtZWwocHJvcC5uYW1lKV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJzdHlsZTtcbiAgICB9XG4gIH07XG5cbiAgc3R5Zm4kNS5nZXRJbmRleGVkU3R5bGUgPSBmdW5jdGlvbiAoZWxlLCBwcm9wZXJ0eSwgc3VicHJvcGVydHksIGluZGV4KSB7XG4gICAgdmFyIHBzdHlsZSA9IGVsZS5wc3R5bGUocHJvcGVydHkpW3N1YnByb3BlcnR5XVtpbmRleF07XG4gICAgcmV0dXJuIHBzdHlsZSAhPSBudWxsID8gcHN0eWxlIDogZWxlLmN5KCkuc3R5bGUoKS5nZXREZWZhdWx0UHJvcGVydHkocHJvcGVydHkpW3N1YnByb3BlcnR5XVswXTtcbiAgfTtcblxuICBzdHlmbiQ1LmdldFN0eWxlUHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uIChlbGUsIHByb3BOYW1lLCBpc1JlbmRlcmVkVmFsKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGVsZSA9IGVsZVswXTsgLy8gaW5zdXJlIGl0J3MgYW4gZWxlbWVudFxuXG4gICAgaWYgKGVsZSkge1xuICAgICAgdmFyIHByb3AgPSBzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgICBpZiAocHJvcC5hbGlhcykge1xuICAgICAgICBwcm9wID0gcHJvcC5wb2ludHNUbztcbiAgICAgIH1cblxuICAgICAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4gICAgICB2YXIgc3R5bGVQcm9wID0gZWxlLnBzdHlsZShwcm9wLm5hbWUpO1xuXG4gICAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlUHJvcC52YWx1ZSxcbiAgICAgICAgICAgIHVuaXRzID0gc3R5bGVQcm9wLnVuaXRzLFxuICAgICAgICAgICAgc3RyVmFsdWUgPSBzdHlsZVByb3Auc3RyVmFsdWU7XG5cbiAgICAgICAgaWYgKGlzUmVuZGVyZWRWYWwgJiYgdHlwZS5udW1iZXIgJiYgdmFsdWUgIT0gbnVsbCAmJiBudW1iZXIkMSh2YWx1ZSkpIHtcbiAgICAgICAgICB2YXIgem9vbSA9IGVsZS5jeSgpLnpvb20oKTtcblxuICAgICAgICAgIHZhciBnZXRSZW5kZXJlZFZhbHVlID0gZnVuY3Rpb24gZ2V0UmVuZGVyZWRWYWx1ZSh2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWwgKiB6b29tO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICB2YXIgZ2V0VmFsdWVTdHJpbmdXaXRoVW5pdHMgPSBmdW5jdGlvbiBnZXRWYWx1ZVN0cmluZ1dpdGhVbml0cyh2YWwsIHVuaXRzKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0UmVuZGVyZWRWYWx1ZSh2YWwpICsgdW5pdHM7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHZhciBpc0FycmF5VmFsdWUgPSBhcnJheSh2YWx1ZSk7XG4gICAgICAgICAgdmFyIGhhdmVVbml0cyA9IGlzQXJyYXlWYWx1ZSA/IHVuaXRzLmV2ZXJ5KGZ1bmN0aW9uICh1KSB7XG4gICAgICAgICAgICByZXR1cm4gdSAhPSBudWxsO1xuICAgICAgICAgIH0pIDogdW5pdHMgIT0gbnVsbDtcblxuICAgICAgICAgIGlmIChoYXZlVW5pdHMpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5VmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcChmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZVN0cmluZ1dpdGhVbml0cyh2LCB1bml0c1tpXSk7XG4gICAgICAgICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZVN0cmluZ1dpdGhVbml0cyh2YWx1ZSwgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheVZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nKHYpID8gdiA6ICcnICsgZ2V0UmVuZGVyZWRWYWx1ZSh2KTtcbiAgICAgICAgICAgICAgfSkuam9pbignICcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcnICsgZ2V0UmVuZGVyZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHN0clZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gc3RyVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHN0eWZuJDUuZ2V0QW5pbWF0aW9uU3RhcnRTdHlsZSA9IGZ1bmN0aW9uIChlbGUsIGFuaVByb3BzKSB7XG4gICAgdmFyIHJzdHlsZSA9IHt9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbmlQcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGFuaVByb3AgPSBhbmlQcm9wc1tpXTtcbiAgICAgIHZhciBuYW1lID0gYW5pUHJvcC5uYW1lO1xuICAgICAgdmFyIHN0eWxlUHJvcCA9IGVsZS5wc3R5bGUobmFtZSk7XG5cbiAgICAgIGlmIChzdHlsZVByb3AgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB0aGVuIG1ha2UgYSBwcm9wIG9mIGl0XG4gICAgICAgIGlmIChwbGFpbk9iamVjdChzdHlsZVByb3ApKSB7XG4gICAgICAgICAgc3R5bGVQcm9wID0gdGhpcy5wYXJzZShuYW1lLCBzdHlsZVByb3Auc3RyVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0eWxlUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgc3R5bGVQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICAgIHJzdHlsZVtuYW1lXSA9IHN0eWxlUHJvcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcnN0eWxlO1xuICB9O1xuXG4gIHN0eWZuJDUuZ2V0UHJvcHNMaXN0ID0gZnVuY3Rpb24gKHByb3BzT2JqKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByc3R5bGUgPSBbXTtcbiAgICB2YXIgc3R5bGUgPSBwcm9wc09iajtcbiAgICB2YXIgcHJvcHMgPSBzZWxmLnByb3BlcnRpZXM7XG5cbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHZhciBuYW1lcyA9IE9iamVjdC5rZXlzKHN0eWxlKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICB2YXIgdmFsID0gc3R5bGVbbmFtZV07XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbbmFtZV0gfHwgcHJvcHNbY2FtZWwyZGFzaChuYW1lKV07XG4gICAgICAgIHZhciBzdHlsZVByb3AgPSB0aGlzLnBhcnNlKHByb3AubmFtZSwgdmFsKTtcblxuICAgICAgICBpZiAoc3R5bGVQcm9wKSB7XG4gICAgICAgICAgcnN0eWxlLnB1c2goc3R5bGVQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByc3R5bGU7XG4gIH07XG5cbiAgc3R5Zm4kNS5nZXROb25EZWZhdWx0UHJvcGVydGllc0hhc2ggPSBmdW5jdGlvbiAoZWxlLCBwcm9wTmFtZXMsIHNlZWQpIHtcbiAgICB2YXIgaGFzaCA9IHNlZWQuc2xpY2UoKTtcbiAgICB2YXIgbmFtZSwgdmFsLCBzdHJWYWwsIGNoVmFsO1xuICAgIHZhciBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbmFtZSA9IHByb3BOYW1lc1tpXTtcbiAgICAgIHZhbCA9IGVsZS5wc3R5bGUobmFtZSwgZmFsc2UpO1xuXG4gICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbC5wZlZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgICBoYXNoWzFdID0gaGFzaEludEFsdChjaFZhbCwgaGFzaFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJWYWwgPSB2YWwuc3RyVmFsdWU7XG5cbiAgICAgICAgZm9yIChqID0gMDsgaiA8IHN0clZhbC5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNoVmFsID0gc3RyVmFsLmNoYXJDb2RlQXQoaik7XG4gICAgICAgICAgaGFzaFswXSA9IGhhc2hJbnQoY2hWYWwsIGhhc2hbMF0pO1xuICAgICAgICAgIGhhc2hbMV0gPSBoYXNoSW50QWx0KGNoVmFsLCBoYXNoWzFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIHN0eWZuJDUuZ2V0UHJvcGVydGllc0hhc2ggPSBzdHlmbiQ1LmdldE5vbkRlZmF1bHRQcm9wZXJ0aWVzSGFzaDtcblxuICB2YXIgc3R5Zm4kNCA9IHt9O1xuXG4gIHN0eWZuJDQuYXBwZW5kRnJvbUpzb24gPSBmdW5jdGlvbiAoanNvbikge1xuICAgIHZhciBzdHlsZSA9IHRoaXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjb250ZXh0ID0ganNvbltpXTtcbiAgICAgIHZhciBzZWxlY3RvciA9IGNvbnRleHQuc2VsZWN0b3I7XG4gICAgICB2YXIgcHJvcHMgPSBjb250ZXh0LnN0eWxlIHx8IGNvbnRleHQuY3NzO1xuICAgICAgdmFyIG5hbWVzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgICAgc3R5bGUuc2VsZWN0b3Ioc2VsZWN0b3IpOyAvLyBhcHBseSBzZWxlY3RvclxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5hbWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuYW1lID0gbmFtZXNbal07XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW25hbWVdO1xuICAgICAgICBzdHlsZS5jc3MobmFtZSwgdmFsdWUpOyAvLyBhcHBseSBwcm9wZXJ0eVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHlsZTtcbiAgfTsgLy8gYWNjZXNzaWJsZSBjeS5zdHlsZSgpIGZ1bmN0aW9uXG5cblxuICBzdHlmbiQ0LmZyb21Kc29uID0gZnVuY3Rpb24gKGpzb24pIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzO1xuICAgIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gICAgc3R5bGUuYXBwZW5kRnJvbUpzb24oanNvbik7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9OyAvLyBnZXQganNvbiBmcm9tIGN5LnN0eWxlKCkgYXBpXG5cblxuICBzdHlmbiQ0Lmpzb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGpzb24gPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSB0aGlzLmRlZmF1bHRMZW5ndGg7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY3h0ID0gdGhpc1tpXTtcbiAgICAgIHZhciBzZWxlY3RvciA9IGN4dC5zZWxlY3RvcjtcbiAgICAgIHZhciBwcm9wcyA9IGN4dC5wcm9wZXJ0aWVzO1xuICAgICAgdmFyIGNzcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICAgIGNzc1twcm9wLm5hbWVdID0gcHJvcC5zdHJWYWx1ZTtcbiAgICAgIH1cblxuICAgICAganNvbi5wdXNoKHtcbiAgICAgICAgc2VsZWN0b3I6ICFzZWxlY3RvciA/ICdjb3JlJyA6IHNlbGVjdG9yLnRvU3RyaW5nKCksXG4gICAgICAgIHN0eWxlOiBjc3NcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9O1xuXG4gIHZhciBzdHlmbiQzID0ge307XG5cbiAgc3R5Zm4kMy5hcHBlbmRGcm9tU3RyaW5nID0gZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgc3R5bGUgPSB0aGlzO1xuICAgIHZhciByZW1haW5pbmcgPSAnJyArIHN0cmluZztcbiAgICB2YXIgc2VsQW5kQmxvY2tTdHI7XG4gICAgdmFyIGJsb2NrUmVtO1xuICAgIHZhciBwcm9wQW5kVmFsU3RyOyAvLyByZW1vdmUgY29tbWVudHMgZnJvbSB0aGUgc3R5bGUgc3RyaW5nXG5cbiAgICByZW1haW5pbmcgPSByZW1haW5pbmcucmVwbGFjZSgvWy9dWypdKFxcc3wuKSs/WypdWy9dL2csICcnKTtcblxuICAgIGZ1bmN0aW9uIHJlbW92ZVNlbEFuZEJsb2NrRnJvbVJlbWFpbmluZygpIHtcbiAgICAgIC8vIHJlbW92ZSB0aGUgcGFyc2VkIHNlbGVjdG9yIGFuZCBibG9jayBmcm9tIHRoZSByZW1haW5pbmcgdGV4dCB0byBwYXJzZVxuICAgICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPiBzZWxBbmRCbG9ja1N0ci5sZW5ndGgpIHtcbiAgICAgICAgcmVtYWluaW5nID0gcmVtYWluaW5nLnN1YnN0cihzZWxBbmRCbG9ja1N0ci5sZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtYWluaW5nID0gJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKSB7XG4gICAgICAvLyByZW1vdmUgdGhlIHBhcnNlZCBwcm9wZXJ0eSBhbmQgdmFsdWUgZnJvbSB0aGUgcmVtYWluaW5nIGJsb2NrIHRleHQgdG8gcGFyc2VcbiAgICAgIGlmIChibG9ja1JlbS5sZW5ndGggPiBwcm9wQW5kVmFsU3RyLmxlbmd0aCkge1xuICAgICAgICBibG9ja1JlbSA9IGJsb2NrUmVtLnN1YnN0cihwcm9wQW5kVmFsU3RyLmxlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBibG9ja1JlbSA9ICcnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoOzspIHtcbiAgICAgIHZhciBub3RoaW5nTGVmdFRvUGFyc2UgPSByZW1haW5pbmcubWF0Y2goL15cXHMqJC8pO1xuXG4gICAgICBpZiAobm90aGluZ0xlZnRUb1BhcnNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsQW5kQmxvY2sgPSByZW1haW5pbmcubWF0Y2goL15cXHMqKCg/Oi58XFxzKSs/KVxccypcXHsoKD86LnxcXHMpKz8pXFx9Lyk7XG5cbiAgICAgIGlmICghc2VsQW5kQmxvY2spIHtcbiAgICAgICAgd2FybignSGFsdGluZyBzdHlsZXNoZWV0IHBhcnNpbmc6IFN0cmluZyBzdHlsZXNoZWV0IGNvbnRhaW5zIG1vcmUgdG8gcGFyc2UgYnV0IG5vIHNlbGVjdG9yIGFuZCBibG9jayBmb3VuZCBpbjogJyArIHJlbWFpbmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBzZWxBbmRCbG9ja1N0ciA9IHNlbEFuZEJsb2NrWzBdOyAvLyBwYXJzZSB0aGUgc2VsZWN0b3JcblxuICAgICAgdmFyIHNlbGVjdG9yU3RyID0gc2VsQW5kQmxvY2tbMV07XG5cbiAgICAgIGlmIChzZWxlY3RvclN0ciAhPT0gJ2NvcmUnKSB7XG4gICAgICAgIHZhciBzZWxlY3RvciA9IG5ldyBTZWxlY3RvcihzZWxlY3RvclN0cik7XG5cbiAgICAgICAgaWYgKHNlbGVjdG9yLmludmFsaWQpIHtcbiAgICAgICAgICB3YXJuKCdTa2lwcGluZyBwYXJzaW5nIG9mIGJsb2NrOiBJbnZhbGlkIHNlbGVjdG9yIGZvdW5kIGluIHN0cmluZyBzdHlsZXNoZWV0OiAnICsgc2VsZWN0b3JTdHIpOyAvLyBza2lwIHRoaXMgc2VsZWN0b3IgYW5kIGJsb2NrXG5cbiAgICAgICAgICByZW1vdmVTZWxBbmRCbG9ja0Zyb21SZW1haW5pbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBwYXJzZSB0aGUgYmxvY2sgb2YgcHJvcGVydGllcyBhbmQgdmFsdWVzXG5cblxuICAgICAgdmFyIGJsb2NrU3RyID0gc2VsQW5kQmxvY2tbMl07XG4gICAgICB2YXIgaW52YWxpZEJsb2NrID0gZmFsc2U7XG4gICAgICBibG9ja1JlbSA9IGJsb2NrU3RyO1xuICAgICAgdmFyIHByb3BzID0gW107XG5cbiAgICAgIGZvciAoOzspIHtcbiAgICAgICAgdmFyIF9ub3RoaW5nTGVmdFRvUGFyc2UgPSBibG9ja1JlbS5tYXRjaCgvXlxccyokLyk7XG5cbiAgICAgICAgaWYgKF9ub3RoaW5nTGVmdFRvUGFyc2UpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwcm9wQW5kVmFsID0gYmxvY2tSZW0ubWF0Y2goL15cXHMqKC4rPylcXHMqOlxccyooLis/KSg/Olxccyo7fFxccyokKS8pO1xuXG4gICAgICAgIGlmICghcHJvcEFuZFZhbCkge1xuICAgICAgICAgIHdhcm4oJ1NraXBwaW5nIHBhcnNpbmcgb2YgYmxvY2s6IEludmFsaWQgZm9ybWF0dGluZyBvZiBzdHlsZSBwcm9wZXJ0eSBhbmQgdmFsdWUgZGVmaW5pdGlvbnMgZm91bmQgaW46JyArIGJsb2NrU3RyKTtcbiAgICAgICAgICBpbnZhbGlkQmxvY2sgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvcEFuZFZhbFN0ciA9IHByb3BBbmRWYWxbMF07XG4gICAgICAgIHZhciBwcm9wU3RyID0gcHJvcEFuZFZhbFsxXTtcbiAgICAgICAgdmFyIHZhbFN0ciA9IHByb3BBbmRWYWxbMl07XG4gICAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW3Byb3BTdHJdO1xuXG4gICAgICAgIGlmICghcHJvcCkge1xuICAgICAgICAgIHdhcm4oJ1NraXBwaW5nIHByb3BlcnR5OiBJbnZhbGlkIHByb3BlcnR5IG5hbWUgaW46ICcgKyBwcm9wQW5kVmFsU3RyKTsgLy8gc2tpcCB0aGlzIHByb3BlcnR5IGluIHRoZSBibG9ja1xuXG4gICAgICAgICAgcmVtb3ZlUHJvcEFuZFZhbEZyb21SZW0oKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYXJzZWRQcm9wID0gc3R5bGUucGFyc2UocHJvcFN0ciwgdmFsU3RyKTtcblxuICAgICAgICBpZiAoIXBhcnNlZFByb3ApIHtcbiAgICAgICAgICB3YXJuKCdTa2lwcGluZyBwcm9wZXJ0eTogSW52YWxpZCBwcm9wZXJ0eSBkZWZpbml0aW9uIGluOiAnICsgcHJvcEFuZFZhbFN0cik7IC8vIHNraXAgdGhpcyBwcm9wZXJ0eSBpbiB0aGUgYmxvY2tcblxuICAgICAgICAgIHJlbW92ZVByb3BBbmRWYWxGcm9tUmVtKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9wcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBwcm9wU3RyLFxuICAgICAgICAgIHZhbDogdmFsU3RyXG4gICAgICAgIH0pO1xuICAgICAgICByZW1vdmVQcm9wQW5kVmFsRnJvbVJlbSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW52YWxpZEJsb2NrKSB7XG4gICAgICAgIHJlbW92ZVNlbEFuZEJsb2NrRnJvbVJlbWFpbmluZygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gLy8gcHV0IHRoZSBwYXJzZWQgYmxvY2sgaW4gdGhlIHN0eWxlXG5cblxuICAgICAgc3R5bGUuc2VsZWN0b3Ioc2VsZWN0b3JTdHIpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBfcHJvcCA9IHByb3BzW2ldO1xuICAgICAgICBzdHlsZS5jc3MoX3Byb3AubmFtZSwgX3Byb3AudmFsKTtcbiAgICAgIH1cblxuICAgICAgcmVtb3ZlU2VsQW5kQmxvY2tGcm9tUmVtYWluaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9O1xuXG4gIHN0eWZuJDMuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgc3R5bGUgPSB0aGlzO1xuICAgIHN0eWxlLnJlc2V0VG9EZWZhdWx0KCk7XG4gICAgc3R5bGUuYXBwZW5kRnJvbVN0cmluZyhzdHJpbmcpO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfTtcblxuICB2YXIgc3R5Zm4kMiA9IHt9O1xuXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG51bWJlciQxID0gbnVtYmVyO1xuICAgIHZhciByZ2JhID0gcmdiYU5vQmFja1JlZnM7XG4gICAgdmFyIGhzbGEgPSBoc2xhTm9CYWNrUmVmcztcbiAgICB2YXIgaGV4MyQxID0gaGV4MztcbiAgICB2YXIgaGV4NiQxID0gaGV4NjtcblxuICAgIHZhciBkYXRhID0gZnVuY3Rpb24gZGF0YShwcmVmaXgpIHtcbiAgICAgIHJldHVybiAnXicgKyBwcmVmaXggKyAnXFxcXHMqXFxcXChcXFxccyooW1xcXFx3XFxcXC5dKylcXFxccypcXFxcKSQnO1xuICAgIH07XG5cbiAgICB2YXIgbWFwRGF0YSA9IGZ1bmN0aW9uIG1hcERhdGEocHJlZml4KSB7XG4gICAgICB2YXIgbWFwQXJnID0gbnVtYmVyJDEgKyAnfFxcXFx3K3wnICsgcmdiYSArICd8JyArIGhzbGEgKyAnfCcgKyBoZXgzJDEgKyAnfCcgKyBoZXg2JDE7XG4gICAgICByZXR1cm4gJ14nICsgcHJlZml4ICsgJ1xcXFxzKlxcXFwoKFtcXFxcd1xcXFwuXSspXFxcXHMqXFxcXCxcXFxccyooJyArIG51bWJlciQxICsgJylcXFxccypcXFxcLFxcXFxzKignICsgbnVtYmVyJDEgKyAnKVxcXFxzKixcXFxccyooJyArIG1hcEFyZyArICcpXFxcXHMqXFxcXCxcXFxccyooJyArIG1hcEFyZyArICcpXFxcXCkkJztcbiAgICB9O1xuXG4gICAgdmFyIHVybFJlZ2V4ZXMgPSBbJ151cmxcXFxccypcXFxcKFxcXFxzKltcXCdcIl0/KC4rPylbXFwnXCJdP1xcXFxzKlxcXFwpJCcsICdeKG5vbmUpJCcsICdeKC4rKSQnXTsgLy8gZWFjaCB2aXN1YWwgc3R5bGUgcHJvcGVydHkgaGFzIGEgdHlwZSBhbmQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGFjY29yZGluZyB0byBpdFxuXG4gICAgc3R5Zm4kMi50eXBlcyA9IHtcbiAgICAgIHRpbWU6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIHVuaXRzOiAnc3xtcycsXG4gICAgICAgIGltcGxpY2l0VW5pdHM6ICdtcydcbiAgICAgIH0sXG4gICAgICBwZXJjZW50OiB7XG4gICAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDEwMCxcbiAgICAgICAgdW5pdHM6ICclJyxcbiAgICAgICAgaW1wbGljaXRVbml0czogJyUnXG4gICAgICB9LFxuICAgICAgcGVyY2VudGFnZXM6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIG1heDogMTAwLFxuICAgICAgICB1bml0czogJyUnLFxuICAgICAgICBpbXBsaWNpdFVuaXRzOiAnJScsXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgemVyb09uZU51bWJlcjoge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxLFxuICAgICAgICB1bml0bGVzczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHplcm9PbmVOdW1iZXJzOiB7XG4gICAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDEsXG4gICAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIG5PbmVPbmVOdW1iZXI6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IC0xLFxuICAgICAgICBtYXg6IDEsXG4gICAgICAgIHVuaXRsZXNzOiB0cnVlXG4gICAgICB9LFxuICAgICAgbm9uTmVnYXRpdmVJbnQ6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIGludGVnZXI6IHRydWUsXG4gICAgICAgIHVuaXRsZXNzOiB0cnVlXG4gICAgICB9LFxuICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgZW51bXM6IFsncGFyZW50JywgJ29yaWdpbiddXG4gICAgICB9LFxuICAgICAgbm9kZVNpemU6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIGVudW1zOiBbJ2xhYmVsJ11cbiAgICAgIH0sXG4gICAgICBudW1iZXI6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICB1bml0bGVzczogdHJ1ZVxuICAgICAgfSxcbiAgICAgIG51bWJlcnM6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICB1bml0bGVzczogdHJ1ZSxcbiAgICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBwb3NpdGl2ZU51bWJlcjoge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIHVuaXRsZXNzOiB0cnVlLFxuICAgICAgICBtaW46IDAsXG4gICAgICAgIHN0cmljdE1pbjogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtaW46IDBcbiAgICAgIH0sXG4gICAgICBiaWRpcmVjdGlvbmFsU2l6ZToge1xuICAgICAgICBudW1iZXI6IHRydWVcbiAgICAgIH0sXG4gICAgICAvLyBhbGxvd3MgbmVnYXRpdmVcbiAgICAgIGJpZGlyZWN0aW9uYWxTaXplTWF5YmVQZXJjZW50OiB7XG4gICAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgICAgYWxsb3dQZXJjZW50OiB0cnVlXG4gICAgICB9LFxuICAgICAgLy8gYWxsb3dzIG5lZ2F0aXZlXG4gICAgICBiaWRpcmVjdGlvbmFsU2l6ZXM6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIC8vIGFsbG93cyBuZWdhdGl2ZVxuICAgICAgc2l6ZU1heWJlUGVyY2VudDoge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgYWxsb3dQZXJjZW50OiB0cnVlXG4gICAgICB9LFxuICAgICAgYXhpc0RpcmVjdGlvbjoge1xuICAgICAgICBlbnVtczogWydob3Jpem9udGFsJywgJ2xlZnR3YXJkJywgJ3JpZ2h0d2FyZCcsICd2ZXJ0aWNhbCcsICd1cHdhcmQnLCAnZG93bndhcmQnLCAnYXV0byddXG4gICAgICB9LFxuICAgICAgcGFkZGluZ1JlbGF0aXZlVG86IHtcbiAgICAgICAgZW51bXM6IFsnd2lkdGgnLCAnaGVpZ2h0JywgJ2F2ZXJhZ2UnLCAnbWluJywgJ21heCddXG4gICAgICB9LFxuICAgICAgYmdXSDoge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgYWxsb3dQZXJjZW50OiB0cnVlLFxuICAgICAgICBlbnVtczogWydhdXRvJ10sXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgYmdQb3M6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBhbGxvd1BlcmNlbnQ6IHRydWUsXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgYmdSZWxhdGl2ZVRvOiB7XG4gICAgICAgIGVudW1zOiBbJ2lubmVyJywgJ2luY2x1ZGUtcGFkZGluZyddLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGJnUmVwZWF0OiB7XG4gICAgICAgIGVudW1zOiBbJ3JlcGVhdCcsICdyZXBlYXQteCcsICdyZXBlYXQteScsICduby1yZXBlYXQnXSxcbiAgICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBiZ0ZpdDoge1xuICAgICAgICBlbnVtczogWydub25lJywgJ2NvbnRhaW4nLCAnY292ZXInXSxcbiAgICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBiZ0Nyb3NzT3JpZ2luOiB7XG4gICAgICAgIGVudW1zOiBbJ2Fub255bW91cycsICd1c2UtY3JlZGVudGlhbHMnLCAnbnVsbCddLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGJnQ2xpcDoge1xuICAgICAgICBlbnVtczogWydub25lJywgJ25vZGUnXSxcbiAgICAgICAgbXVsdGlwbGU6IHRydWVcbiAgICAgIH0sXG4gICAgICBiZ0NvbnRhaW5tZW50OiB7XG4gICAgICAgIGVudW1zOiBbJ2luc2lkZScsICdvdmVyJ10sXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgY29sb3I6IHRydWVcbiAgICAgIH0sXG4gICAgICBjb2xvcnM6IHtcbiAgICAgICAgY29sb3I6IHRydWUsXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgZmlsbDoge1xuICAgICAgICBlbnVtczogWydzb2xpZCcsICdsaW5lYXItZ3JhZGllbnQnLCAncmFkaWFsLWdyYWRpZW50J11cbiAgICAgIH0sXG4gICAgICBib29sOiB7XG4gICAgICAgIGVudW1zOiBbJ3llcycsICdubyddXG4gICAgICB9LFxuICAgICAgYm9vbHM6IHtcbiAgICAgICAgZW51bXM6IFsneWVzJywgJ25vJ10sXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgbGluZVN0eWxlOiB7XG4gICAgICAgIGVudW1zOiBbJ3NvbGlkJywgJ2RvdHRlZCcsICdkYXNoZWQnXVxuICAgICAgfSxcbiAgICAgIGxpbmVDYXA6IHtcbiAgICAgICAgZW51bXM6IFsnYnV0dCcsICdyb3VuZCcsICdzcXVhcmUnXVxuICAgICAgfSxcbiAgICAgIGJvcmRlclN0eWxlOiB7XG4gICAgICAgIGVudW1zOiBbJ3NvbGlkJywgJ2RvdHRlZCcsICdkYXNoZWQnLCAnZG91YmxlJ11cbiAgICAgIH0sXG4gICAgICBjdXJ2ZVN0eWxlOiB7XG4gICAgICAgIGVudW1zOiBbJ2JlemllcicsICd1bmJ1bmRsZWQtYmV6aWVyJywgJ2hheXN0YWNrJywgJ3NlZ21lbnRzJywgJ3N0cmFpZ2h0JywgJ3N0cmFpZ2h0LXRyaWFuZ2xlJywgJ3RheGknXVxuICAgICAgfSxcbiAgICAgIGZvbnRGYW1pbHk6IHtcbiAgICAgICAgcmVnZXg6ICdeKFtcXFxcdy0gXFxcXFwiXSsoPzpcXFxccyosXFxcXHMqW1xcXFx3LSBcXFxcXCJdKykqKSQnXG4gICAgICB9LFxuICAgICAgZm9udFN0eWxlOiB7XG4gICAgICAgIGVudW1zOiBbJ2l0YWxpYycsICdub3JtYWwnLCAnb2JsaXF1ZSddXG4gICAgICB9LFxuICAgICAgZm9udFdlaWdodDoge1xuICAgICAgICBlbnVtczogWydub3JtYWwnLCAnYm9sZCcsICdib2xkZXInLCAnbGlnaHRlcicsICcxMDAnLCAnMjAwJywgJzMwMCcsICc0MDAnLCAnNTAwJywgJzYwMCcsICc4MDAnLCAnOTAwJywgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsIDkwMF1cbiAgICAgIH0sXG4gICAgICB0ZXh0RGVjb3JhdGlvbjoge1xuICAgICAgICBlbnVtczogWydub25lJywgJ3VuZGVybGluZScsICdvdmVybGluZScsICdsaW5lLXRocm91Z2gnXVxuICAgICAgfSxcbiAgICAgIHRleHRUcmFuc2Zvcm06IHtcbiAgICAgICAgZW51bXM6IFsnbm9uZScsICd1cHBlcmNhc2UnLCAnbG93ZXJjYXNlJ11cbiAgICAgIH0sXG4gICAgICB0ZXh0V3JhcDoge1xuICAgICAgICBlbnVtczogWydub25lJywgJ3dyYXAnLCAnZWxsaXBzaXMnXVxuICAgICAgfSxcbiAgICAgIHRleHRPdmVyZmxvd1dyYXA6IHtcbiAgICAgICAgZW51bXM6IFsnd2hpdGVzcGFjZScsICdhbnl3aGVyZSddXG4gICAgICB9LFxuICAgICAgdGV4dEJhY2tncm91bmRTaGFwZToge1xuICAgICAgICBlbnVtczogWydyZWN0YW5nbGUnLCAncm91bmRyZWN0YW5nbGUnLCAncm91bmQtcmVjdGFuZ2xlJ11cbiAgICAgIH0sXG4gICAgICBub2RlU2hhcGU6IHtcbiAgICAgICAgZW51bXM6IFsncmVjdGFuZ2xlJywgJ3JvdW5kcmVjdGFuZ2xlJywgJ3JvdW5kLXJlY3RhbmdsZScsICdjdXRyZWN0YW5nbGUnLCAnY3V0LXJlY3RhbmdsZScsICdib3R0b21yb3VuZHJlY3RhbmdsZScsICdib3R0b20tcm91bmQtcmVjdGFuZ2xlJywgJ2JhcnJlbCcsICdlbGxpcHNlJywgJ3RyaWFuZ2xlJywgJ3JvdW5kLXRyaWFuZ2xlJywgJ3NxdWFyZScsICdwZW50YWdvbicsICdyb3VuZC1wZW50YWdvbicsICdoZXhhZ29uJywgJ3JvdW5kLWhleGFnb24nLCAnY29uY2F2ZWhleGFnb24nLCAnY29uY2F2ZS1oZXhhZ29uJywgJ2hlcHRhZ29uJywgJ3JvdW5kLWhlcHRhZ29uJywgJ29jdGFnb24nLCAncm91bmQtb2N0YWdvbicsICd0YWcnLCAncm91bmQtdGFnJywgJ3N0YXInLCAnZGlhbW9uZCcsICdyb3VuZC1kaWFtb25kJywgJ3ZlZScsICdyaG9tYm9pZCcsICdyaWdodC1yaG9tYm9pZCcsICdwb2x5Z29uJ11cbiAgICAgIH0sXG4gICAgICBvdmVybGF5U2hhcGU6IHtcbiAgICAgICAgZW51bXM6IFsncm91bmRyZWN0YW5nbGUnLCAncm91bmQtcmVjdGFuZ2xlJywgJ2VsbGlwc2UnXVxuICAgICAgfSxcbiAgICAgIGNvbXBvdW5kSW5jbHVkZUxhYmVsczoge1xuICAgICAgICBlbnVtczogWydpbmNsdWRlJywgJ2V4Y2x1ZGUnXVxuICAgICAgfSxcbiAgICAgIGFycm93U2hhcGU6IHtcbiAgICAgICAgZW51bXM6IFsndGVlJywgJ3RyaWFuZ2xlJywgJ3RyaWFuZ2xlLXRlZScsICdjaXJjbGUtdHJpYW5nbGUnLCAndHJpYW5nbGUtY3Jvc3MnLCAndHJpYW5nbGUtYmFja2N1cnZlJywgJ3ZlZScsICdzcXVhcmUnLCAnY2lyY2xlJywgJ2RpYW1vbmQnLCAnY2hldnJvbicsICdub25lJ11cbiAgICAgIH0sXG4gICAgICBhcnJvd0ZpbGw6IHtcbiAgICAgICAgZW51bXM6IFsnZmlsbGVkJywgJ2hvbGxvdyddXG4gICAgICB9LFxuICAgICAgZGlzcGxheToge1xuICAgICAgICBlbnVtczogWydlbGVtZW50JywgJ25vbmUnXVxuICAgICAgfSxcbiAgICAgIHZpc2liaWxpdHk6IHtcbiAgICAgICAgZW51bXM6IFsnaGlkZGVuJywgJ3Zpc2libGUnXVxuICAgICAgfSxcbiAgICAgIHpDb21wb3VuZERlcHRoOiB7XG4gICAgICAgIGVudW1zOiBbJ2JvdHRvbScsICdvcnBoYW4nLCAnYXV0bycsICd0b3AnXVxuICAgICAgfSxcbiAgICAgIHpJbmRleENvbXBhcmU6IHtcbiAgICAgICAgZW51bXM6IFsnYXV0bycsICdtYW51YWwnXVxuICAgICAgfSxcbiAgICAgIHZhbGlnbjoge1xuICAgICAgICBlbnVtczogWyd0b3AnLCAnY2VudGVyJywgJ2JvdHRvbSddXG4gICAgICB9LFxuICAgICAgaGFsaWduOiB7XG4gICAgICAgIGVudW1zOiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0J11cbiAgICAgIH0sXG4gICAgICBqdXN0aWZpY2F0aW9uOiB7XG4gICAgICAgIGVudW1zOiBbJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JywgJ2F1dG8nXVxuICAgICAgfSxcbiAgICAgIHRleHQ6IHtcbiAgICAgICAgc3RyaW5nOiB0cnVlXG4gICAgICB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogZGF0YSgnZGF0YScpXG4gICAgICB9LFxuICAgICAgbGF5b3V0RGF0YToge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogZGF0YSgnbGF5b3V0RGF0YScpXG4gICAgICB9LFxuICAgICAgc2NyYXRjaDoge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogZGF0YSgnc2NyYXRjaCcpXG4gICAgICB9LFxuICAgICAgbWFwRGF0YToge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogbWFwRGF0YSgnbWFwRGF0YScpXG4gICAgICB9LFxuICAgICAgbWFwTGF5b3V0RGF0YToge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogbWFwRGF0YSgnbWFwTGF5b3V0RGF0YScpXG4gICAgICB9LFxuICAgICAgbWFwU2NyYXRjaDoge1xuICAgICAgICBtYXBwaW5nOiB0cnVlLFxuICAgICAgICByZWdleDogbWFwRGF0YSgnbWFwU2NyYXRjaCcpXG4gICAgICB9LFxuICAgICAgZm46IHtcbiAgICAgICAgbWFwcGluZzogdHJ1ZSxcbiAgICAgICAgZm46IHRydWVcbiAgICAgIH0sXG4gICAgICB1cmw6IHtcbiAgICAgICAgcmVnZXhlczogdXJsUmVnZXhlcyxcbiAgICAgICAgc2luZ2xlUmVnZXhNYXRjaFZhbHVlOiB0cnVlXG4gICAgICB9LFxuICAgICAgdXJsczoge1xuICAgICAgICByZWdleGVzOiB1cmxSZWdleGVzLFxuICAgICAgICBzaW5nbGVSZWdleE1hdGNoVmFsdWU6IHRydWUsXG4gICAgICAgIG11bHRpcGxlOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHJvcExpc3Q6IHtcbiAgICAgICAgcHJvcExpc3Q6IHRydWVcbiAgICAgIH0sXG4gICAgICBhbmdsZToge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIHVuaXRzOiAnZGVnfHJhZCcsXG4gICAgICAgIGltcGxpY2l0VW5pdHM6ICdyYWQnXG4gICAgICB9LFxuICAgICAgdGV4dFJvdGF0aW9uOiB7XG4gICAgICAgIG51bWJlcjogdHJ1ZSxcbiAgICAgICAgdW5pdHM6ICdkZWd8cmFkJyxcbiAgICAgICAgaW1wbGljaXRVbml0czogJ3JhZCcsXG4gICAgICAgIGVudW1zOiBbJ25vbmUnLCAnYXV0b3JvdGF0ZSddXG4gICAgICB9LFxuICAgICAgcG9seWdvblBvaW50TGlzdDoge1xuICAgICAgICBudW1iZXI6IHRydWUsXG4gICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICBldmVuTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIG1pbjogLTEsXG4gICAgICAgIG1heDogMSxcbiAgICAgICAgdW5pdGxlc3M6IHRydWVcbiAgICAgIH0sXG4gICAgICBlZGdlRGlzdGFuY2VzOiB7XG4gICAgICAgIGVudW1zOiBbJ2ludGVyc2VjdGlvbicsICdub2RlLXBvc2l0aW9uJ11cbiAgICAgIH0sXG4gICAgICBlZGdlRW5kcG9pbnQ6IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgdW5pdHM6ICclfHB4fGVtfGRlZ3xyYWQnLFxuICAgICAgICBpbXBsaWNpdFVuaXRzOiAncHgnLFxuICAgICAgICBlbnVtczogWydpbnNpZGUtdG8tbm9kZScsICdvdXRzaWRlLXRvLW5vZGUnLCAnb3V0c2lkZS10by1ub2RlLW9yLWxhYmVsJywgJ291dHNpZGUtdG8tbGluZScsICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnXSxcbiAgICAgICAgc2luZ2xlRW51bTogdHJ1ZSxcbiAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uIHZhbGlkYXRlKHZhbEFyciwgdW5pdHNBcnIpIHtcbiAgICAgICAgICBzd2l0Y2ggKHZhbEFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgLy8gY2FuIGJlICUgb3IgcHggb25seVxuICAgICAgICAgICAgICByZXR1cm4gdW5pdHNBcnJbMF0gIT09ICdkZWcnICYmIHVuaXRzQXJyWzBdICE9PSAncmFkJyAmJiB1bml0c0FyclsxXSAhPT0gJ2RlZycgJiYgdW5pdHNBcnJbMV0gIT09ICdyYWQnO1xuXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIC8vIGNhbiBiZSBlbnVtLCBkZWcsIG9yIHJhZCBvbmx5XG4gICAgICAgICAgICAgIHJldHVybiBzdHJpbmcodmFsQXJyWzBdKSB8fCB1bml0c0FyclswXSA9PT0gJ2RlZycgfHwgdW5pdHNBcnJbMF0gPT09ICdyYWQnO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZWFzaW5nOiB7XG4gICAgICAgIHJlZ2V4ZXM6IFsnXihzcHJpbmcpXFxcXHMqXFxcXChcXFxccyooJyArIG51bWJlciQxICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICcpXFxcXHMqXFxcXCkkJywgJ14oY3ViaWMtYmV6aWVyKVxcXFxzKlxcXFwoXFxcXHMqKCcgKyBudW1iZXIkMSArICcpXFxcXHMqLFxcXFxzKignICsgbnVtYmVyJDEgKyAnKVxcXFxzKixcXFxccyooJyArIG51bWJlciQxICsgJylcXFxccyosXFxcXHMqKCcgKyBudW1iZXIkMSArICcpXFxcXHMqXFxcXCkkJ10sXG4gICAgICAgIGVudW1zOiBbJ2xpbmVhcicsICdlYXNlJywgJ2Vhc2UtaW4nLCAnZWFzZS1vdXQnLCAnZWFzZS1pbi1vdXQnLCAnZWFzZS1pbi1zaW5lJywgJ2Vhc2Utb3V0LXNpbmUnLCAnZWFzZS1pbi1vdXQtc2luZScsICdlYXNlLWluLXF1YWQnLCAnZWFzZS1vdXQtcXVhZCcsICdlYXNlLWluLW91dC1xdWFkJywgJ2Vhc2UtaW4tY3ViaWMnLCAnZWFzZS1vdXQtY3ViaWMnLCAnZWFzZS1pbi1vdXQtY3ViaWMnLCAnZWFzZS1pbi1xdWFydCcsICdlYXNlLW91dC1xdWFydCcsICdlYXNlLWluLW91dC1xdWFydCcsICdlYXNlLWluLXF1aW50JywgJ2Vhc2Utb3V0LXF1aW50JywgJ2Vhc2UtaW4tb3V0LXF1aW50JywgJ2Vhc2UtaW4tZXhwbycsICdlYXNlLW91dC1leHBvJywgJ2Vhc2UtaW4tb3V0LWV4cG8nLCAnZWFzZS1pbi1jaXJjJywgJ2Vhc2Utb3V0LWNpcmMnLCAnZWFzZS1pbi1vdXQtY2lyYyddXG4gICAgICB9LFxuICAgICAgZ3JhZGllbnREaXJlY3Rpb246IHtcbiAgICAgICAgZW51bXM6IFsndG8tYm90dG9tJywgJ3RvLXRvcCcsICd0by1sZWZ0JywgJ3RvLXJpZ2h0JywgJ3RvLWJvdHRvbS1yaWdodCcsICd0by1ib3R0b20tbGVmdCcsICd0by10b3AtcmlnaHQnLCAndG8tdG9wLWxlZnQnLCAndG8tcmlnaHQtYm90dG9tJywgJ3RvLWxlZnQtYm90dG9tJywgJ3RvLXJpZ2h0LXRvcCcsICd0by1sZWZ0LXRvcCcgLy8gZGlmZmVyZW50IG9yZGVyXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBib3VuZHNFeHBhbnNpb246IHtcbiAgICAgICAgbnVtYmVyOiB0cnVlLFxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgbWluOiAwLFxuICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24gdmFsaWRhdGUodmFsQXJyKSB7XG4gICAgICAgICAgdmFyIGxlbmd0aCA9IHZhbEFyci5sZW5ndGg7XG4gICAgICAgICAgcmV0dXJuIGxlbmd0aCA9PT0gMSB8fCBsZW5ndGggPT09IDIgfHwgbGVuZ3RoID09PSA0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgZGlmZiA9IHtcbiAgICAgIHplcm9Ob25aZXJvOiBmdW5jdGlvbiB6ZXJvTm9uWmVybyh2YWwxLCB2YWwyKSB7XG4gICAgICAgIGlmICgodmFsMSA9PSBudWxsIHx8IHZhbDIgPT0gbnVsbCkgJiYgdmFsMSAhPT0gdmFsMikge1xuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBudWxsIGNhc2VzIGNvdWxkIHJlcHJlc2VudCBhbnkgdmFsdWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWwxID09IDAgJiYgdmFsMiAhPSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsMSAhPSAwICYmIHZhbDIgPT0gMCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFueTogZnVuY3Rpb24gYW55KHZhbDEsIHZhbDIpIHtcbiAgICAgICAgcmV0dXJuIHZhbDEgIT0gdmFsMjtcbiAgICAgIH0sXG4gICAgICBlbXB0eU5vbkVtcHR5OiBmdW5jdGlvbiBlbXB0eU5vbkVtcHR5KHN0cjEsIHN0cjIpIHtcbiAgICAgICAgdmFyIGVtcHR5MSA9IGVtcHR5U3RyaW5nKHN0cjEpO1xuICAgICAgICB2YXIgZW1wdHkyID0gZW1wdHlTdHJpbmcoc3RyMik7XG4gICAgICAgIHJldHVybiBlbXB0eTEgJiYgIWVtcHR5MiB8fCAhZW1wdHkxICYmIGVtcHR5MjtcbiAgICAgIH1cbiAgICB9OyAvLyBkZWZpbmUgdmlzdWFsIHN0eWxlIHByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0gbi5iLiBhZGRpbmcgYSBuZXcgZ3JvdXAgb2YgcHJvcHMgbWF5IHJlcXVpcmUgdXBkYXRlcyB0byB1cGRhdGVTdHlsZUhpbnRzKClcbiAgICAvLyAtIGFkZGluZyBuZXcgcHJvcHMgdG8gYW4gZXhpc3RpbmcgZ3JvdXAgZ2V0cyBoYW5kbGVkIGF1dG9tYXRpY2FsbHlcblxuICAgIHZhciB0ID0gc3R5Zm4kMi50eXBlcztcbiAgICB2YXIgbWFpbkxhYmVsID0gW3tcbiAgICAgIG5hbWU6ICdsYWJlbCcsXG4gICAgICB0eXBlOiB0LnRleHQsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnksXG4gICAgICB0cmlnZ2Vyc1pPcmRlcjogZGlmZi5lbXB0eU5vbkVtcHR5XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtcm90YXRpb24nLFxuICAgICAgdHlwZTogdC50ZXh0Um90YXRpb24sXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1tYXJnaW4teCcsXG4gICAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtbWFyZ2luLXknLFxuICAgICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciBzb3VyY2VMYWJlbCA9IFt7XG4gICAgICBuYW1lOiAnc291cmNlLWxhYmVsJyxcbiAgICAgIHR5cGU6IHQudGV4dCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzb3VyY2UtdGV4dC1yb3RhdGlvbicsXG4gICAgICB0eXBlOiB0LnRleHRSb3RhdGlvbixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzb3VyY2UtdGV4dC1tYXJnaW4teCcsXG4gICAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3NvdXJjZS10ZXh0LW1hcmdpbi15JyxcbiAgICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnc291cmNlLXRleHQtb2Zmc2V0JyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciB0YXJnZXRMYWJlbCA9IFt7XG4gICAgICBuYW1lOiAndGFyZ2V0LWxhYmVsJyxcbiAgICAgIHR5cGU6IHQudGV4dCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0YXJnZXQtdGV4dC1yb3RhdGlvbicsXG4gICAgICB0eXBlOiB0LnRleHRSb3RhdGlvbixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0YXJnZXQtdGV4dC1tYXJnaW4teCcsXG4gICAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RhcmdldC10ZXh0LW1hcmdpbi15JyxcbiAgICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGFyZ2V0LXRleHQtb2Zmc2V0JyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciBsYWJlbERpbWVuc2lvbnMgPSBbe1xuICAgICAgbmFtZTogJ2ZvbnQtZmFtaWx5JyxcbiAgICAgIHR5cGU6IHQuZm9udEZhbWlseSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdmb250LXN0eWxlJyxcbiAgICAgIHR5cGU6IHQuZm9udFN0eWxlLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2ZvbnQtd2VpZ2h0JyxcbiAgICAgIHR5cGU6IHQuZm9udFdlaWdodCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdmb250LXNpemUnLFxuICAgICAgdHlwZTogdC5zaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtdHJhbnNmb3JtJyxcbiAgICAgIHR5cGU6IHQudGV4dFRyYW5zZm9ybSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LXdyYXAnLFxuICAgICAgdHlwZTogdC50ZXh0V3JhcCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LW92ZXJmbG93LXdyYXAnLFxuICAgICAgdHlwZTogdC50ZXh0T3ZlcmZsb3dXcmFwLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtbWF4LXdpZHRoJyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LW91dGxpbmUtd2lkdGgnLFxuICAgICAgdHlwZTogdC5zaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2xpbmUtaGVpZ2h0JyxcbiAgICAgIHR5cGU6IHQucG9zaXRpdmVOdW1iZXIsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9XTtcbiAgICB2YXIgY29tbW9uTGFiZWwgPSBbe1xuICAgICAgbmFtZTogJ3RleHQtdmFsaWduJyxcbiAgICAgIHR5cGU6IHQudmFsaWduLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtaGFsaWduJyxcbiAgICAgIHR5cGU6IHQuaGFsaWduLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2NvbG9yJyxcbiAgICAgIHR5cGU6IHQuY29sb3JcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1vdXRsaW5lLWNvbG9yJyxcbiAgICAgIHR5cGU6IHQuY29sb3JcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1vdXRsaW5lLW9wYWNpdHknLFxuICAgICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtcGFkZGluZycsXG4gICAgICB0eXBlOiB0LnNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1ib3JkZXItb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1ib3JkZXItY29sb3InLFxuICAgICAgdHlwZTogdC5jb2xvclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJvcmRlci13aWR0aCcsXG4gICAgICB0eXBlOiB0LnNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1ib3JkZXItc3R5bGUnLFxuICAgICAgdHlwZTogdC5ib3JkZXJTdHlsZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0ZXh0LWJhY2tncm91bmQtc2hhcGUnLFxuICAgICAgdHlwZTogdC50ZXh0QmFja2dyb3VuZFNoYXBlLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtanVzdGlmaWNhdGlvbicsXG4gICAgICB0eXBlOiB0Lmp1c3RpZmljYXRpb25cbiAgICB9XTtcbiAgICB2YXIgYmVoYXZpb3IgPSBbe1xuICAgICAgbmFtZTogJ2V2ZW50cycsXG4gICAgICB0eXBlOiB0LmJvb2xcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndGV4dC1ldmVudHMnLFxuICAgICAgdHlwZTogdC5ib29sXG4gICAgfV07XG4gICAgdmFyIHZpc2liaWxpdHkgPSBbe1xuICAgICAgbmFtZTogJ2Rpc3BsYXknLFxuICAgICAgdHlwZTogdC5kaXNwbGF5LFxuICAgICAgdHJpZ2dlcnNaT3JkZXI6IGRpZmYuYW55LFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgICAgdHJpZ2dlcnNCb3VuZHNPZlBhcmFsbGVsQmV6aWVyczogdHJ1ZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd2aXNpYmlsaXR5JyxcbiAgICAgIHR5cGU6IHQudmlzaWJpbGl0eSxcbiAgICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdvcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLnplcm9Ob25aZXJvXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RleHQtb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnbWluLXpvb21lZC1mb250LXNpemUnLFxuICAgICAgdHlwZTogdC5zaXplXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3otY29tcG91bmQtZGVwdGgnLFxuICAgICAgdHlwZTogdC56Q29tcG91bmREZXB0aCxcbiAgICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd6LWluZGV4LWNvbXBhcmUnLFxuICAgICAgdHlwZTogdC56SW5kZXhDb21wYXJlLFxuICAgICAgdHJpZ2dlcnNaT3JkZXI6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3otaW5kZXgnLFxuICAgICAgdHlwZTogdC5ub25OZWdhdGl2ZUludCxcbiAgICAgIHRyaWdnZXJzWk9yZGVyOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciBvdmVybGF5ID0gW3tcbiAgICAgIG5hbWU6ICdvdmVybGF5LXBhZGRpbmcnLFxuICAgICAgdHlwZTogdC5zaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ292ZXJsYXktY29sb3InLFxuICAgICAgdHlwZTogdC5jb2xvclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdvdmVybGF5LW9wYWNpdHknLFxuICAgICAgdHlwZTogdC56ZXJvT25lTnVtYmVyLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuemVyb05vblplcm9cbiAgICB9LCB7XG4gICAgICBuYW1lOiAnb3ZlcmxheS1zaGFwZScsXG4gICAgICB0eXBlOiB0Lm92ZXJsYXlTaGFwZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciB1bmRlcmxheSA9IFt7XG4gICAgICBuYW1lOiAndW5kZXJsYXktcGFkZGluZycsXG4gICAgICB0eXBlOiB0LnNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAndW5kZXJsYXktY29sb3InLFxuICAgICAgdHlwZTogdC5jb2xvclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd1bmRlcmxheS1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlcixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLnplcm9Ob25aZXJvXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3VuZGVybGF5LXNoYXBlJyxcbiAgICAgIHR5cGU6IHQub3ZlcmxheVNoYXBlLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfV07XG4gICAgdmFyIHRyYW5zaXRpb24gPSBbe1xuICAgICAgbmFtZTogJ3RyYW5zaXRpb24tcHJvcGVydHknLFxuICAgICAgdHlwZTogdC5wcm9wTGlzdFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgICAgIHR5cGU6IHQudGltZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0cmFuc2l0aW9uLWRlbGF5JyxcbiAgICAgIHR5cGU6IHQudGltZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsXG4gICAgICB0eXBlOiB0LmVhc2luZ1xuICAgIH1dO1xuXG4gICAgdmFyIG5vZGVTaXplSGFzaE92ZXJyaWRlID0gZnVuY3Rpb24gbm9kZVNpemVIYXNoT3ZlcnJpZGUoZWxlLCBwYXJzZWRQcm9wKSB7XG4gICAgICBpZiAocGFyc2VkUHJvcC52YWx1ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgICByZXR1cm4gLWVsZS5wb29sSW5kZXgoKTsgLy8gbm8gaGFzaCBrZXkgaGl0cyBpcyB1c2luZyBsYWJlbCBzaXplIChoaXRyYXRlIGZvciBwZXJmIHByb2JhYmx5IGxvdyBhbnl3YXkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VkUHJvcC5wZlZhbHVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgbm9kZUJvZHkgPSBbe1xuICAgICAgbmFtZTogJ2hlaWdodCcsXG4gICAgICB0eXBlOiB0Lm5vZGVTaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgICAgaGFzaE92ZXJyaWRlOiBub2RlU2l6ZUhhc2hPdmVycmlkZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICB0eXBlOiB0Lm5vZGVTaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55LFxuICAgICAgaGFzaE92ZXJyaWRlOiBub2RlU2l6ZUhhc2hPdmVycmlkZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzaGFwZScsXG4gICAgICB0eXBlOiB0Lm5vZGVTaGFwZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzaGFwZS1wb2x5Z29uLXBvaW50cycsXG4gICAgICB0eXBlOiB0LnBvbHlnb25Qb2ludExpc3QsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtZmlsbCcsXG4gICAgICB0eXBlOiB0LmZpbGxcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWJsYWNrZW4nLFxuICAgICAgdHlwZTogdC5uT25lT25lTnVtYmVyXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtZ3JhZGllbnQtc3RvcC1jb2xvcnMnLFxuICAgICAgdHlwZTogdC5jb2xvcnNcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucycsXG4gICAgICB0eXBlOiB0LnBlcmNlbnRhZ2VzXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtZ3JhZGllbnQtZGlyZWN0aW9uJyxcbiAgICAgIHR5cGU6IHQuZ3JhZGllbnREaXJlY3Rpb25cbiAgICB9LCB7XG4gICAgICBuYW1lOiAncGFkZGluZycsXG4gICAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnQsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAncGFkZGluZy1yZWxhdGl2ZS10bycsXG4gICAgICB0eXBlOiB0LnBhZGRpbmdSZWxhdGl2ZVRvLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JvdW5kcy1leHBhbnNpb24nLFxuICAgICAgdHlwZTogdC5ib3VuZHNFeHBhbnNpb24sXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9XTtcbiAgICB2YXIgbm9kZUJvcmRlciA9IFt7XG4gICAgICBuYW1lOiAnYm9yZGVyLWNvbG9yJyxcbiAgICAgIHR5cGU6IHQuY29sb3JcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYm9yZGVyLW9wYWNpdHknLFxuICAgICAgdHlwZTogdC56ZXJvT25lTnVtYmVyXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JvcmRlci13aWR0aCcsXG4gICAgICB0eXBlOiB0LnNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYm9yZGVyLXN0eWxlJyxcbiAgICAgIHR5cGU6IHQuYm9yZGVyU3R5bGVcbiAgICB9XTtcbiAgICB2YXIgYmFja2dyb3VuZEltYWdlID0gW3tcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWltYWdlJyxcbiAgICAgIHR5cGU6IHQudXJsc1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWltYWdlLWNyb3Nzb3JpZ2luJyxcbiAgICAgIHR5cGU6IHQuYmdDcm9zc09yaWdpblxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWltYWdlLW9wYWNpdHknLFxuICAgICAgdHlwZTogdC56ZXJvT25lTnVtYmVyc1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JyxcbiAgICAgIHR5cGU6IHQuYmdDb250YWlubWVudFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWltYWdlLXNtb290aGluZycsXG4gICAgICB0eXBlOiB0LmJvb2xzXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtcG9zaXRpb24teCcsXG4gICAgICB0eXBlOiB0LmJnUG9zXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtcG9zaXRpb24teScsXG4gICAgICB0eXBlOiB0LmJnUG9zXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtd2lkdGgtcmVsYXRpdmUtdG8nLFxuICAgICAgdHlwZTogdC5iZ1JlbGF0aXZlVG9cbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1oZWlnaHQtcmVsYXRpdmUtdG8nLFxuICAgICAgdHlwZTogdC5iZ1JlbGF0aXZlVG9cbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1yZXBlYXQnLFxuICAgICAgdHlwZTogdC5iZ1JlcGVhdFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWZpdCcsXG4gICAgICB0eXBlOiB0LmJnRml0XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtY2xpcCcsXG4gICAgICB0eXBlOiB0LmJnQ2xpcFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLXdpZHRoJyxcbiAgICAgIHR5cGU6IHQuYmdXSFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdiYWNrZ3JvdW5kLWhlaWdodCcsXG4gICAgICB0eXBlOiB0LmJnV0hcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYmFja2dyb3VuZC1vZmZzZXQteCcsXG4gICAgICB0eXBlOiB0LmJnUG9zXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2JhY2tncm91bmQtb2Zmc2V0LXknLFxuICAgICAgdHlwZTogdC5iZ1Bvc1xuICAgIH1dO1xuICAgIHZhciBjb21wb3VuZCA9IFt7XG4gICAgICBuYW1lOiAncG9zaXRpb24nLFxuICAgICAgdHlwZTogdC5wb3NpdGlvbixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdjb21wb3VuZC1zaXppbmctd3J0LWxhYmVscycsXG4gICAgICB0eXBlOiB0LmNvbXBvdW5kSW5jbHVkZUxhYmVscyxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaW4td2lkdGgnLFxuICAgICAgdHlwZTogdC5zaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ21pbi13aWR0aC1iaWFzLWxlZnQnLFxuICAgICAgdHlwZTogdC5zaXplTWF5YmVQZXJjZW50LFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ21pbi13aWR0aC1iaWFzLXJpZ2h0JyxcbiAgICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaW4taGVpZ2h0JyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaW4taGVpZ2h0LWJpYXMtdG9wJyxcbiAgICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdtaW4taGVpZ2h0LWJpYXMtYm90dG9tJyxcbiAgICAgIHR5cGU6IHQuc2l6ZU1heWJlUGVyY2VudCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciBlZGdlTGluZSA9IFt7XG4gICAgICBuYW1lOiAnbGluZS1zdHlsZScsXG4gICAgICB0eXBlOiB0LmxpbmVTdHlsZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdsaW5lLWNvbG9yJyxcbiAgICAgIHR5cGU6IHQuY29sb3JcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnbGluZS1maWxsJyxcbiAgICAgIHR5cGU6IHQuZmlsbFxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdsaW5lLWNhcCcsXG4gICAgICB0eXBlOiB0LmxpbmVDYXBcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnbGluZS1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdsaW5lLWRhc2gtcGF0dGVybicsXG4gICAgICB0eXBlOiB0Lm51bWJlcnNcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnbGluZS1kYXNoLW9mZnNldCcsXG4gICAgICB0eXBlOiB0Lm51bWJlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdsaW5lLWdyYWRpZW50LXN0b3AtY29sb3JzJyxcbiAgICAgIHR5cGU6IHQuY29sb3JzXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2xpbmUtZ3JhZGllbnQtc3RvcC1wb3NpdGlvbnMnLFxuICAgICAgdHlwZTogdC5wZXJjZW50YWdlc1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdjdXJ2ZS1zdHlsZScsXG4gICAgICB0eXBlOiB0LmN1cnZlU3R5bGUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnksXG4gICAgICB0cmlnZ2Vyc0JvdW5kc09mUGFyYWxsZWxCZXppZXJzOiB0cnVlXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2hheXN0YWNrLXJhZGl1cycsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXIsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnc291cmNlLWVuZHBvaW50JyxcbiAgICAgIHR5cGU6IHQuZWRnZUVuZHBvaW50LFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RhcmdldC1lbmRwb2ludCcsXG4gICAgICB0eXBlOiB0LmVkZ2VFbmRwb2ludCxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdjb250cm9sLXBvaW50LXN0ZXAtc2l6ZScsXG4gICAgICB0eXBlOiB0LnNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnLFxuICAgICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZXMsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJyxcbiAgICAgIHR5cGU6IHQubnVtYmVycyxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzZWdtZW50LWRpc3RhbmNlcycsXG4gICAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplcyxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzZWdtZW50LXdlaWdodHMnLFxuICAgICAgdHlwZTogdC5udW1iZXJzLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RheGktdHVybicsXG4gICAgICB0eXBlOiB0LmJpZGlyZWN0aW9uYWxTaXplTWF5YmVQZXJjZW50LFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RheGktdHVybi1taW4tZGlzdGFuY2UnLFxuICAgICAgdHlwZTogdC5zaXplLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ3RheGktZGlyZWN0aW9uJyxcbiAgICAgIHR5cGU6IHQuYXhpc0RpcmVjdGlvbixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdlZGdlLWRpc3RhbmNlcycsXG4gICAgICB0eXBlOiB0LmVkZ2VEaXN0YW5jZXMsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYXJyb3ctc2NhbGUnLFxuICAgICAgdHlwZTogdC5wb3NpdGl2ZU51bWJlcixcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdsb29wLWRpcmVjdGlvbicsXG4gICAgICB0eXBlOiB0LmFuZ2xlLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2xvb3Atc3dlZXAnLFxuICAgICAgdHlwZTogdC5hbmdsZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICd0YXJnZXQtZGlzdGFuY2UtZnJvbS1ub2RlJyxcbiAgICAgIHR5cGU6IHQuc2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH1dO1xuICAgIHZhciBnaG9zdCA9IFt7XG4gICAgICBuYW1lOiAnZ2hvc3QnLFxuICAgICAgdHlwZTogdC5ib29sLFxuICAgICAgdHJpZ2dlcnNCb3VuZHM6IGRpZmYuYW55XG4gICAgfSwge1xuICAgICAgbmFtZTogJ2dob3N0LW9mZnNldC14JyxcbiAgICAgIHR5cGU6IHQuYmlkaXJlY3Rpb25hbFNpemUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnZ2hvc3Qtb2Zmc2V0LXknLFxuICAgICAgdHlwZTogdC5iaWRpcmVjdGlvbmFsU2l6ZSxcbiAgICAgIHRyaWdnZXJzQm91bmRzOiBkaWZmLmFueVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdnaG9zdC1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH1dO1xuICAgIHZhciBjb3JlID0gW3tcbiAgICAgIG5hbWU6ICdzZWxlY3Rpb24tYm94LWNvbG9yJyxcbiAgICAgIHR5cGU6IHQuY29sb3JcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnc2VsZWN0aW9uLWJveC1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSwge1xuICAgICAgbmFtZTogJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLXdpZHRoJyxcbiAgICAgIHR5cGU6IHQuc2l6ZVxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdhY3RpdmUtYmctY29sb3InLFxuICAgICAgdHlwZTogdC5jb2xvclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdhY3RpdmUtYmctb3BhY2l0eScsXG4gICAgICB0eXBlOiB0Lnplcm9PbmVOdW1iZXJcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYWN0aXZlLWJnLXNpemUnLFxuICAgICAgdHlwZTogdC5zaXplXG4gICAgfSwge1xuICAgICAgbmFtZTogJ291dHNpZGUtdGV4dHVyZS1iZy1jb2xvcicsXG4gICAgICB0eXBlOiB0LmNvbG9yXG4gICAgfSwge1xuICAgICAgbmFtZTogJ291dHNpZGUtdGV4dHVyZS1iZy1vcGFjaXR5JyxcbiAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgIH1dOyAvLyBwaWUgYmFja2dyb3VuZHMgZm9yIG5vZGVzXG5cbiAgICB2YXIgcGllID0gW107XG4gICAgc3R5Zm4kMi5waWVCYWNrZ3JvdW5kTiA9IDE2OyAvLyBiZWNhdXNlIHRoZSBwaWUgcHJvcGVydGllcyBhcmUgbnVtYmVyZWQsIGdpdmUgYWNjZXNzIHRvIGEgY29uc3RhbnQgTiAoZm9yIHJlbmRlcmVyIHVzZSlcblxuICAgIHBpZS5wdXNoKHtcbiAgICAgIG5hbWU6ICdwaWUtc2l6ZScsXG4gICAgICB0eXBlOiB0LnNpemVNYXliZVBlcmNlbnRcbiAgICB9KTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHN0eWZuJDIucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgcGllLnB1c2goe1xuICAgICAgICBuYW1lOiAncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLWNvbG9yJyxcbiAgICAgICAgdHlwZTogdC5jb2xvclxuICAgICAgfSk7XG4gICAgICBwaWUucHVzaCh7XG4gICAgICAgIG5hbWU6ICdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtc2l6ZScsXG4gICAgICAgIHR5cGU6IHQucGVyY2VudFxuICAgICAgfSk7XG4gICAgICBwaWUucHVzaCh7XG4gICAgICAgIG5hbWU6ICdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtb3BhY2l0eScsXG4gICAgICAgIHR5cGU6IHQuemVyb09uZU51bWJlclxuICAgICAgfSk7XG4gICAgfSAvLyBlZGdlIGFycm93c1xuXG5cbiAgICB2YXIgZWRnZUFycm93ID0gW107XG4gICAgdmFyIGFycm93UHJlZml4ZXMgPSBzdHlmbiQyLmFycm93UHJlZml4ZXMgPSBbJ3NvdXJjZScsICdtaWQtc291cmNlJywgJ3RhcmdldCcsICdtaWQtdGFyZ2V0J107XG4gICAgW3tcbiAgICAgIG5hbWU6ICdhcnJvdy1zaGFwZScsXG4gICAgICB0eXBlOiB0LmFycm93U2hhcGUsXG4gICAgICB0cmlnZ2Vyc0JvdW5kczogZGlmZi5hbnlcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYXJyb3ctY29sb3InLFxuICAgICAgdHlwZTogdC5jb2xvclxuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdhcnJvdy1maWxsJyxcbiAgICAgIHR5cGU6IHQuYXJyb3dGaWxsXG4gICAgfV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgYXJyb3dQcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBwcmVmaXggKyAnLScgKyBwcm9wLm5hbWU7XG4gICAgICAgIHZhciB0eXBlID0gcHJvcC50eXBlLFxuICAgICAgICAgICAgdHJpZ2dlcnNCb3VuZHMgPSBwcm9wLnRyaWdnZXJzQm91bmRzO1xuICAgICAgICBlZGdlQXJyb3cucHVzaCh7XG4gICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgIHRyaWdnZXJzQm91bmRzOiB0cmlnZ2Vyc0JvdW5kc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIHt9KTtcbiAgICB2YXIgcHJvcHMgPSBzdHlmbiQyLnByb3BlcnRpZXMgPSBbXS5jb25jYXQoYmVoYXZpb3IsIHRyYW5zaXRpb24sIHZpc2liaWxpdHksIG92ZXJsYXksIHVuZGVybGF5LCBnaG9zdCwgY29tbW9uTGFiZWwsIGxhYmVsRGltZW5zaW9ucywgbWFpbkxhYmVsLCBzb3VyY2VMYWJlbCwgdGFyZ2V0TGFiZWwsIG5vZGVCb2R5LCBub2RlQm9yZGVyLCBiYWNrZ3JvdW5kSW1hZ2UsIHBpZSwgY29tcG91bmQsIGVkZ2VMaW5lLCBlZGdlQXJyb3csIGNvcmUpO1xuICAgIHZhciBwcm9wR3JvdXBzID0gc3R5Zm4kMi5wcm9wZXJ0eUdyb3VwcyA9IHtcbiAgICAgIC8vIGNvbW1vbiB0byBhbGwgZWxlc1xuICAgICAgYmVoYXZpb3I6IGJlaGF2aW9yLFxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbixcbiAgICAgIHZpc2liaWxpdHk6IHZpc2liaWxpdHksXG4gICAgICBvdmVybGF5OiBvdmVybGF5LFxuICAgICAgdW5kZXJsYXk6IHVuZGVybGF5LFxuICAgICAgZ2hvc3Q6IGdob3N0LFxuICAgICAgLy8gbGFiZWxzXG4gICAgICBjb21tb25MYWJlbDogY29tbW9uTGFiZWwsXG4gICAgICBsYWJlbERpbWVuc2lvbnM6IGxhYmVsRGltZW5zaW9ucyxcbiAgICAgIG1haW5MYWJlbDogbWFpbkxhYmVsLFxuICAgICAgc291cmNlTGFiZWw6IHNvdXJjZUxhYmVsLFxuICAgICAgdGFyZ2V0TGFiZWw6IHRhcmdldExhYmVsLFxuICAgICAgLy8gbm9kZSBwcm9wc1xuICAgICAgbm9kZUJvZHk6IG5vZGVCb2R5LFxuICAgICAgbm9kZUJvcmRlcjogbm9kZUJvcmRlcixcbiAgICAgIGJhY2tncm91bmRJbWFnZTogYmFja2dyb3VuZEltYWdlLFxuICAgICAgcGllOiBwaWUsXG4gICAgICBjb21wb3VuZDogY29tcG91bmQsXG4gICAgICAvLyBlZGdlIHByb3BzXG4gICAgICBlZGdlTGluZTogZWRnZUxpbmUsXG4gICAgICBlZGdlQXJyb3c6IGVkZ2VBcnJvdyxcbiAgICAgIGNvcmU6IGNvcmVcbiAgICB9O1xuICAgIHZhciBwcm9wR3JvdXBOYW1lcyA9IHN0eWZuJDIucHJvcGVydHlHcm91cE5hbWVzID0ge307XG4gICAgdmFyIHByb3BHcm91cEtleXMgPSBzdHlmbiQyLnByb3BlcnR5R3JvdXBLZXlzID0gT2JqZWN0LmtleXMocHJvcEdyb3Vwcyk7XG4gICAgcHJvcEdyb3VwS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHByb3BHcm91cE5hbWVzW2tleV0gPSBwcm9wR3JvdXBzW2tleV0ubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIHJldHVybiBwcm9wLm5hbWU7XG4gICAgICB9KTtcbiAgICAgIHByb3BHcm91cHNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIHJldHVybiBwcm9wLmdyb3VwS2V5ID0ga2V5O1xuICAgICAgfSk7XG4gICAgfSk7IC8vIGRlZmluZSBhbGlhc2VzXG5cbiAgICB2YXIgYWxpYXNlcyA9IHN0eWZuJDIuYWxpYXNlcyA9IFt7XG4gICAgICBuYW1lOiAnY29udGVudCcsXG4gICAgICBwb2ludHNUbzogJ2xhYmVsJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdjb250cm9sLXBvaW50LWRpc3RhbmNlJyxcbiAgICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2NvbnRyb2wtcG9pbnQtd2VpZ2h0JyxcbiAgICAgIHBvaW50c1RvOiAnY29udHJvbC1wb2ludC13ZWlnaHRzJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdlZGdlLXRleHQtcm90YXRpb24nLFxuICAgICAgcG9pbnRzVG86ICd0ZXh0LXJvdGF0aW9uJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdwYWRkaW5nLWxlZnQnLFxuICAgICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAgIHBvaW50c1RvOiAncGFkZGluZydcbiAgICB9LCB7XG4gICAgICBuYW1lOiAncGFkZGluZy10b3AnLFxuICAgICAgcG9pbnRzVG86ICdwYWRkaW5nJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdwYWRkaW5nLWJvdHRvbScsXG4gICAgICBwb2ludHNUbzogJ3BhZGRpbmcnXG4gICAgfV07IC8vIGxpc3Qgb2YgcHJvcGVydHkgbmFtZXNcblxuICAgIHN0eWZuJDIucHJvcGVydHlOYW1lcyA9IHByb3BzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgcmV0dXJuIHAubmFtZTtcbiAgICB9KTsgLy8gYWxsb3cgYWNjZXNzIG9mIHByb3BlcnRpZXMgYnkgbmFtZSAoIGUuZy4gc3R5bGUucHJvcGVydGllcy5oZWlnaHQgKVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHByb3BzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIHByb3AgPSBwcm9wc1tfaV07XG4gICAgICBwcm9wc1twcm9wLm5hbWVdID0gcHJvcDsgLy8gYWxsb3cgbG9va3VwIGJ5IG5hbWVcbiAgICB9IC8vIG1hcCBhbGlhc2VzXG5cblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IGFsaWFzZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIGFsaWFzID0gYWxpYXNlc1tfaTJdO1xuICAgICAgdmFyIHBvaW50c1RvUHJvcCA9IHByb3BzW2FsaWFzLnBvaW50c1RvXTtcbiAgICAgIHZhciBhbGlhc1Byb3AgPSB7XG4gICAgICAgIG5hbWU6IGFsaWFzLm5hbWUsXG4gICAgICAgIGFsaWFzOiB0cnVlLFxuICAgICAgICBwb2ludHNUbzogcG9pbnRzVG9Qcm9wXG4gICAgICB9OyAvLyBhZGQgYWxpYXMgcHJvcCBmb3IgcGFyc2luZ1xuXG4gICAgICBwcm9wcy5wdXNoKGFsaWFzUHJvcCk7XG4gICAgICBwcm9wc1thbGlhcy5uYW1lXSA9IGFsaWFzUHJvcDsgLy8gYWxsb3cgbG9va3VwIGJ5IG5hbWVcbiAgICB9XG4gIH0pKCk7XG5cbiAgc3R5Zm4kMi5nZXREZWZhdWx0UHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRQcm9wZXJ0aWVzKClbbmFtZV07XG4gIH07XG5cbiAgc3R5Zm4kMi5nZXREZWZhdWx0UHJvcGVydGllcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgaWYgKF9wLmRlZmF1bHRQcm9wZXJ0aWVzICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbiAgICB9XG5cbiAgICB2YXIgcmF3UHJvcHMgPSBleHRlbmQoe1xuICAgICAgLy8gY29yZSBwcm9wc1xuICAgICAgJ3NlbGVjdGlvbi1ib3gtY29sb3InOiAnI2RkZCcsXG4gICAgICAnc2VsZWN0aW9uLWJveC1vcGFjaXR5JzogMC42NSxcbiAgICAgICdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcic6ICcjYWFhJyxcbiAgICAgICdzZWxlY3Rpb24tYm94LWJvcmRlci13aWR0aCc6IDEsXG4gICAgICAnYWN0aXZlLWJnLWNvbG9yJzogJ2JsYWNrJyxcbiAgICAgICdhY3RpdmUtYmctb3BhY2l0eSc6IDAuMTUsXG4gICAgICAnYWN0aXZlLWJnLXNpemUnOiAzMCxcbiAgICAgICdvdXRzaWRlLXRleHR1cmUtYmctY29sb3InOiAnIzAwMCcsXG4gICAgICAnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknOiAwLjEyNSxcbiAgICAgIC8vIGNvbW1vbiBub2RlL2VkZ2UgcHJvcHNcbiAgICAgICdldmVudHMnOiAneWVzJyxcbiAgICAgICd0ZXh0LWV2ZW50cyc6ICdubycsXG4gICAgICAndGV4dC12YWxpZ24nOiAndG9wJyxcbiAgICAgICd0ZXh0LWhhbGlnbic6ICdjZW50ZXInLFxuICAgICAgJ3RleHQtanVzdGlmaWNhdGlvbic6ICdhdXRvJyxcbiAgICAgICdsaW5lLWhlaWdodCc6IDEsXG4gICAgICAnY29sb3InOiAnIzAwMCcsXG4gICAgICAndGV4dC1vdXRsaW5lLWNvbG9yJzogJyMwMDAnLFxuICAgICAgJ3RleHQtb3V0bGluZS13aWR0aCc6IDAsXG4gICAgICAndGV4dC1vdXRsaW5lLW9wYWNpdHknOiAxLFxuICAgICAgJ3RleHQtb3BhY2l0eSc6IDEsXG4gICAgICAndGV4dC1kZWNvcmF0aW9uJzogJ25vbmUnLFxuICAgICAgJ3RleHQtdHJhbnNmb3JtJzogJ25vbmUnLFxuICAgICAgJ3RleHQtd3JhcCc6ICdub25lJyxcbiAgICAgICd0ZXh0LW92ZXJmbG93LXdyYXAnOiAnd2hpdGVzcGFjZScsXG4gICAgICAndGV4dC1tYXgtd2lkdGgnOiA5OTk5LFxuICAgICAgJ3RleHQtYmFja2dyb3VuZC1jb2xvcic6ICcjMDAwJyxcbiAgICAgICd0ZXh0LWJhY2tncm91bmQtb3BhY2l0eSc6IDAsXG4gICAgICAndGV4dC1iYWNrZ3JvdW5kLXNoYXBlJzogJ3JlY3RhbmdsZScsXG4gICAgICAndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnOiAwLFxuICAgICAgJ3RleHQtYm9yZGVyLW9wYWNpdHknOiAwLFxuICAgICAgJ3RleHQtYm9yZGVyLXdpZHRoJzogMCxcbiAgICAgICd0ZXh0LWJvcmRlci1zdHlsZSc6ICdzb2xpZCcsXG4gICAgICAndGV4dC1ib3JkZXItY29sb3InOiAnIzAwMCcsXG4gICAgICAnZm9udC1mYW1pbHknOiAnSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgc2Fucy1zZXJpZicsXG4gICAgICAnZm9udC1zdHlsZSc6ICdub3JtYWwnLFxuICAgICAgJ2ZvbnQtd2VpZ2h0JzogJ25vcm1hbCcsXG4gICAgICAnZm9udC1zaXplJzogMTYsXG4gICAgICAnbWluLXpvb21lZC1mb250LXNpemUnOiAwLFxuICAgICAgJ3RleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgICAnc291cmNlLXRleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgICAndGFyZ2V0LXRleHQtcm90YXRpb24nOiAnbm9uZScsXG4gICAgICAndmlzaWJpbGl0eSc6ICd2aXNpYmxlJyxcbiAgICAgICdkaXNwbGF5JzogJ2VsZW1lbnQnLFxuICAgICAgJ29wYWNpdHknOiAxLFxuICAgICAgJ3otY29tcG91bmQtZGVwdGgnOiAnYXV0bycsXG4gICAgICAnei1pbmRleC1jb21wYXJlJzogJ2F1dG8nLFxuICAgICAgJ3otaW5kZXgnOiAwLFxuICAgICAgJ2xhYmVsJzogJycsXG4gICAgICAndGV4dC1tYXJnaW4teCc6IDAsXG4gICAgICAndGV4dC1tYXJnaW4teSc6IDAsXG4gICAgICAnc291cmNlLWxhYmVsJzogJycsXG4gICAgICAnc291cmNlLXRleHQtb2Zmc2V0JzogMCxcbiAgICAgICdzb3VyY2UtdGV4dC1tYXJnaW4teCc6IDAsXG4gICAgICAnc291cmNlLXRleHQtbWFyZ2luLXknOiAwLFxuICAgICAgJ3RhcmdldC1sYWJlbCc6ICcnLFxuICAgICAgJ3RhcmdldC10ZXh0LW9mZnNldCc6IDAsXG4gICAgICAndGFyZ2V0LXRleHQtbWFyZ2luLXgnOiAwLFxuICAgICAgJ3RhcmdldC10ZXh0LW1hcmdpbi15JzogMCxcbiAgICAgICdvdmVybGF5LW9wYWNpdHknOiAwLFxuICAgICAgJ292ZXJsYXktY29sb3InOiAnIzAwMCcsXG4gICAgICAnb3ZlcmxheS1wYWRkaW5nJzogMTAsXG4gICAgICAnb3ZlcmxheS1zaGFwZSc6ICdyb3VuZC1yZWN0YW5nbGUnLFxuICAgICAgJ3VuZGVybGF5LW9wYWNpdHknOiAwLFxuICAgICAgJ3VuZGVybGF5LWNvbG9yJzogJyMwMDAnLFxuICAgICAgJ3VuZGVybGF5LXBhZGRpbmcnOiAxMCxcbiAgICAgICd1bmRlcmxheS1zaGFwZSc6ICdyb3VuZC1yZWN0YW5nbGUnLFxuICAgICAgJ3RyYW5zaXRpb24tcHJvcGVydHknOiAnbm9uZScsXG4gICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IDAsXG4gICAgICAndHJhbnNpdGlvbi1kZWxheSc6IDAsXG4gICAgICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nOiAnbGluZWFyJyxcbiAgICAgIC8vIG5vZGUgcHJvcHNcbiAgICAgICdiYWNrZ3JvdW5kLWJsYWNrZW4nOiAwLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzk5OScsXG4gICAgICAnYmFja2dyb3VuZC1maWxsJzogJ3NvbGlkJyxcbiAgICAgICdiYWNrZ3JvdW5kLW9wYWNpdHknOiAxLFxuICAgICAgJ2JhY2tncm91bmQtaW1hZ2UnOiAnbm9uZScsXG4gICAgICAnYmFja2dyb3VuZC1pbWFnZS1jcm9zc29yaWdpbic6ICdhbm9ueW1vdXMnLFxuICAgICAgJ2JhY2tncm91bmQtaW1hZ2Utb3BhY2l0eSc6IDEsXG4gICAgICAnYmFja2dyb3VuZC1pbWFnZS1jb250YWlubWVudCc6ICdpbnNpZGUnLFxuICAgICAgJ2JhY2tncm91bmQtaW1hZ2Utc21vb3RoaW5nJzogJ3llcycsXG4gICAgICAnYmFja2dyb3VuZC1wb3NpdGlvbi14JzogJzUwJScsXG4gICAgICAnYmFja2dyb3VuZC1wb3NpdGlvbi15JzogJzUwJScsXG4gICAgICAnYmFja2dyb3VuZC1vZmZzZXQteCc6IDAsXG4gICAgICAnYmFja2dyb3VuZC1vZmZzZXQteSc6IDAsXG4gICAgICAnYmFja2dyb3VuZC13aWR0aC1yZWxhdGl2ZS10byc6ICdpbmNsdWRlLXBhZGRpbmcnLFxuICAgICAgJ2JhY2tncm91bmQtaGVpZ2h0LXJlbGF0aXZlLXRvJzogJ2luY2x1ZGUtcGFkZGluZycsXG4gICAgICAnYmFja2dyb3VuZC1yZXBlYXQnOiAnbm8tcmVwZWF0JyxcbiAgICAgICdiYWNrZ3JvdW5kLWZpdCc6ICdub25lJyxcbiAgICAgICdiYWNrZ3JvdW5kLWNsaXAnOiAnbm9kZScsXG4gICAgICAnYmFja2dyb3VuZC13aWR0aCc6ICdhdXRvJyxcbiAgICAgICdiYWNrZ3JvdW5kLWhlaWdodCc6ICdhdXRvJyxcbiAgICAgICdib3JkZXItY29sb3InOiAnIzAwMCcsXG4gICAgICAnYm9yZGVyLW9wYWNpdHknOiAxLFxuICAgICAgJ2JvcmRlci13aWR0aCc6IDAsXG4gICAgICAnYm9yZGVyLXN0eWxlJzogJ3NvbGlkJyxcbiAgICAgICdoZWlnaHQnOiAzMCxcbiAgICAgICd3aWR0aCc6IDMwLFxuICAgICAgJ3NoYXBlJzogJ2VsbGlwc2UnLFxuICAgICAgJ3NoYXBlLXBvbHlnb24tcG9pbnRzJzogJy0xLCAtMSwgICAxLCAtMSwgICAxLCAxLCAgIC0xLCAxJyxcbiAgICAgICdib3VuZHMtZXhwYW5zaW9uJzogMCxcbiAgICAgIC8vIG5vZGUgZ3JhZGllbnRcbiAgICAgICdiYWNrZ3JvdW5kLWdyYWRpZW50LWRpcmVjdGlvbic6ICd0by1ib3R0b20nLFxuICAgICAgJ2JhY2tncm91bmQtZ3JhZGllbnQtc3RvcC1jb2xvcnMnOiAnIzk5OScsXG4gICAgICAnYmFja2dyb3VuZC1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucyc6ICcwJScsXG4gICAgICAvLyBnaG9zdCBwcm9wc1xuICAgICAgJ2dob3N0JzogJ25vJyxcbiAgICAgICdnaG9zdC1vZmZzZXQteSc6IDAsXG4gICAgICAnZ2hvc3Qtb2Zmc2V0LXgnOiAwLFxuICAgICAgJ2dob3N0LW9wYWNpdHknOiAwLFxuICAgICAgLy8gY29tcG91bmQgcHJvcHNcbiAgICAgICdwYWRkaW5nJzogMCxcbiAgICAgICdwYWRkaW5nLXJlbGF0aXZlLXRvJzogJ3dpZHRoJyxcbiAgICAgICdwb3NpdGlvbic6ICdvcmlnaW4nLFxuICAgICAgJ2NvbXBvdW5kLXNpemluZy13cnQtbGFiZWxzJzogJ2luY2x1ZGUnLFxuICAgICAgJ21pbi13aWR0aCc6IDAsXG4gICAgICAnbWluLXdpZHRoLWJpYXMtbGVmdCc6IDAsXG4gICAgICAnbWluLXdpZHRoLWJpYXMtcmlnaHQnOiAwLFxuICAgICAgJ21pbi1oZWlnaHQnOiAwLFxuICAgICAgJ21pbi1oZWlnaHQtYmlhcy10b3AnOiAwLFxuICAgICAgJ21pbi1oZWlnaHQtYmlhcy1ib3R0b20nOiAwXG4gICAgfSwge1xuICAgICAgLy8gbm9kZSBwaWUgYmdcbiAgICAgICdwaWUtc2l6ZSc6ICcxMDAlJ1xuICAgIH0sIFt7XG4gICAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtY29sb3InLFxuICAgICAgdmFsdWU6ICdibGFjaydcbiAgICB9LCB7XG4gICAgICBuYW1lOiAncGllLXt7aX19LWJhY2tncm91bmQtc2l6ZScsXG4gICAgICB2YWx1ZTogJzAlJ1xuICAgIH0sIHtcbiAgICAgIG5hbWU6ICdwaWUte3tpfX0tYmFja2dyb3VuZC1vcGFjaXR5JyxcbiAgICAgIHZhbHVlOiAxXG4gICAgfV0ucmVkdWNlKGZ1bmN0aW9uIChjc3MsIHByb3ApIHtcbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IHN0eWZuJDIucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgICB2YXIgbmFtZSA9IHByb3AubmFtZS5yZXBsYWNlKCd7e2l9fScsIGkpO1xuICAgICAgICB2YXIgdmFsID0gcHJvcC52YWx1ZTtcbiAgICAgICAgY3NzW25hbWVdID0gdmFsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3NzO1xuICAgIH0sIHt9KSwge1xuICAgICAgLy8gZWRnZSBwcm9wc1xuICAgICAgJ2xpbmUtc3R5bGUnOiAnc29saWQnLFxuICAgICAgJ2xpbmUtY29sb3InOiAnIzk5OScsXG4gICAgICAnbGluZS1maWxsJzogJ3NvbGlkJyxcbiAgICAgICdsaW5lLWNhcCc6ICdidXR0JyxcbiAgICAgICdsaW5lLW9wYWNpdHknOiAxLFxuICAgICAgJ2xpbmUtZ3JhZGllbnQtc3RvcC1jb2xvcnMnOiAnIzk5OScsXG4gICAgICAnbGluZS1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucyc6ICcwJScsXG4gICAgICAnY29udHJvbC1wb2ludC1zdGVwLXNpemUnOiA0MCxcbiAgICAgICdjb250cm9sLXBvaW50LXdlaWdodHMnOiAwLjUsXG4gICAgICAnc2VnbWVudC13ZWlnaHRzJzogMC41LFxuICAgICAgJ3NlZ21lbnQtZGlzdGFuY2VzJzogMjAsXG4gICAgICAndGF4aS10dXJuJzogJzUwJScsXG4gICAgICAndGF4aS10dXJuLW1pbi1kaXN0YW5jZSc6IDEwLFxuICAgICAgJ3RheGktZGlyZWN0aW9uJzogJ2F1dG8nLFxuICAgICAgJ2VkZ2UtZGlzdGFuY2VzJzogJ2ludGVyc2VjdGlvbicsXG4gICAgICAnY3VydmUtc3R5bGUnOiAnaGF5c3RhY2snLFxuICAgICAgJ2hheXN0YWNrLXJhZGl1cyc6IDAsXG4gICAgICAnYXJyb3ctc2NhbGUnOiAxLFxuICAgICAgJ2xvb3AtZGlyZWN0aW9uJzogJy00NWRlZycsXG4gICAgICAnbG9vcC1zd2VlcCc6ICctOTBkZWcnLFxuICAgICAgJ3NvdXJjZS1kaXN0YW5jZS1mcm9tLW5vZGUnOiAwLFxuICAgICAgJ3RhcmdldC1kaXN0YW5jZS1mcm9tLW5vZGUnOiAwLFxuICAgICAgJ3NvdXJjZS1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLW5vZGUnLFxuICAgICAgJ3RhcmdldC1lbmRwb2ludCc6ICdvdXRzaWRlLXRvLW5vZGUnLFxuICAgICAgJ2xpbmUtZGFzaC1wYXR0ZXJuJzogWzYsIDNdLFxuICAgICAgJ2xpbmUtZGFzaC1vZmZzZXQnOiAwXG4gICAgfSwgW3tcbiAgICAgIG5hbWU6ICdhcnJvdy1zaGFwZScsXG4gICAgICB2YWx1ZTogJ25vbmUnXG4gICAgfSwge1xuICAgICAgbmFtZTogJ2Fycm93LWNvbG9yJyxcbiAgICAgIHZhbHVlOiAnIzk5OSdcbiAgICB9LCB7XG4gICAgICBuYW1lOiAnYXJyb3ctZmlsbCcsXG4gICAgICB2YWx1ZTogJ2ZpbGxlZCdcbiAgICB9XS5yZWR1Y2UoZnVuY3Rpb24gKGNzcywgcHJvcCkge1xuICAgICAgc3R5Zm4kMi5hcnJvd1ByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgICB2YXIgbmFtZSA9IHByZWZpeCArICctJyArIHByb3AubmFtZTtcbiAgICAgICAgdmFyIHZhbCA9IHByb3AudmFsdWU7XG4gICAgICAgIGNzc1tuYW1lXSA9IHZhbDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNzcztcbiAgICB9LCB7fSkpO1xuICAgIHZhciBwYXJzZWRQcm9wcyA9IHt9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwcm9wID0gdGhpcy5wcm9wZXJ0aWVzW2ldO1xuXG4gICAgICBpZiAocHJvcC5wb2ludHNUbykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBwcm9wLm5hbWU7XG4gICAgICB2YXIgdmFsID0gcmF3UHJvcHNbbmFtZV07XG4gICAgICB2YXIgcGFyc2VkUHJvcCA9IHRoaXMucGFyc2UobmFtZSwgdmFsKTtcbiAgICAgIHBhcnNlZFByb3BzW25hbWVdID0gcGFyc2VkUHJvcDtcbiAgICB9XG5cbiAgICBfcC5kZWZhdWx0UHJvcGVydGllcyA9IHBhcnNlZFByb3BzO1xuICAgIHJldHVybiBfcC5kZWZhdWx0UHJvcGVydGllcztcbiAgfTtcblxuICBzdHlmbiQyLmFkZERlZmF1bHRTdHlsZXNoZWV0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2VsZWN0b3IoJzpwYXJlbnQnKS5jc3Moe1xuICAgICAgJ3NoYXBlJzogJ3JlY3RhbmdsZScsXG4gICAgICAncGFkZGluZyc6IDEwLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2VlZScsXG4gICAgICAnYm9yZGVyLWNvbG9yJzogJyNjY2MnLFxuICAgICAgJ2JvcmRlci13aWR0aCc6IDFcbiAgICB9KS5zZWxlY3RvcignZWRnZScpLmNzcyh7XG4gICAgICAnd2lkdGgnOiAzXG4gICAgfSkuc2VsZWN0b3IoJzpsb29wJykuY3NzKHtcbiAgICAgICdjdXJ2ZS1zdHlsZSc6ICdiZXppZXInXG4gICAgfSkuc2VsZWN0b3IoJ2VkZ2U6Y29tcG91bmQnKS5jc3Moe1xuICAgICAgJ2N1cnZlLXN0eWxlJzogJ2JlemllcicsXG4gICAgICAnc291cmNlLWVuZHBvaW50JzogJ291dHNpZGUtdG8tbGluZScsXG4gICAgICAndGFyZ2V0LWVuZHBvaW50JzogJ291dHNpZGUtdG8tbGluZSdcbiAgICB9KS5zZWxlY3RvcignOnNlbGVjdGVkJykuY3NzKHtcbiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyMwMTY5RDknLFxuICAgICAgJ2xpbmUtY29sb3InOiAnIzAxNjlEOScsXG4gICAgICAnc291cmNlLWFycm93LWNvbG9yJzogJyMwMTY5RDknLFxuICAgICAgJ3RhcmdldC1hcnJvdy1jb2xvcic6ICcjMDE2OUQ5JyxcbiAgICAgICdtaWQtc291cmNlLWFycm93LWNvbG9yJzogJyMwMTY5RDknLFxuICAgICAgJ21pZC10YXJnZXQtYXJyb3ctY29sb3InOiAnIzAxNjlEOSdcbiAgICB9KS5zZWxlY3RvcignOnBhcmVudDpzZWxlY3RlZCcpLmNzcyh7XG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjQ0NFMUY5JyxcbiAgICAgICdib3JkZXItY29sb3InOiAnI2FlYzhlNSdcbiAgICB9KS5zZWxlY3RvcignOmFjdGl2ZScpLmNzcyh7XG4gICAgICAnb3ZlcmxheS1jb2xvcic6ICdibGFjaycsXG4gICAgICAnb3ZlcmxheS1wYWRkaW5nJzogMTAsXG4gICAgICAnb3ZlcmxheS1vcGFjaXR5JzogMC4yNVxuICAgIH0pO1xuICAgIHRoaXMuZGVmYXVsdExlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICB9O1xuXG4gIHZhciBzdHlmbiQxID0ge307IC8vIGEgY2FjaGluZyBsYXllciBmb3IgcHJvcGVydHkgcGFyc2luZ1xuXG4gIHN0eWZuJDEucGFyc2UgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCkge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gZnVuY3Rpb24gdmFsdWVzIGNhbid0IGJlIGNhY2hlZCBpbiBhbGwgY2FzZXMsIGFuZCB0aGVyZSBpc24ndCBtdWNoIGJlbmVmaXQgb2YgY2FjaGluZyB0aGVtIGFueXdheVxuXG4gICAgaWYgKGZuJDYodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2VsZi5wYXJzZUltcGxXYXJuKG5hbWUsIHZhbHVlLCBwcm9wSXNCeXBhc3MsIHByb3BJc0ZsYXQpO1xuICAgIH1cblxuICAgIHZhciBmbGF0S2V5ID0gcHJvcElzRmxhdCA9PT0gJ21hcHBpbmcnIHx8IHByb3BJc0ZsYXQgPT09IHRydWUgfHwgcHJvcElzRmxhdCA9PT0gZmFsc2UgfHwgcHJvcElzRmxhdCA9PSBudWxsID8gJ2RvbnRjYXJlJyA6IHByb3BJc0ZsYXQ7XG4gICAgdmFyIGJ5cGFzc0tleSA9IHByb3BJc0J5cGFzcyA/ICd0JyA6ICdmJztcbiAgICB2YXIgdmFsdWVLZXkgPSAnJyArIHZhbHVlO1xuICAgIHZhciBhcmdIYXNoID0gaGFzaFN0cmluZ3MobmFtZSwgdmFsdWVLZXksIGJ5cGFzc0tleSwgZmxhdEtleSk7XG4gICAgdmFyIHByb3BDYWNoZSA9IHNlbGYucHJvcENhY2hlID0gc2VsZi5wcm9wQ2FjaGUgfHwgW107XG4gICAgdmFyIHJldDtcblxuICAgIGlmICghKHJldCA9IHByb3BDYWNoZVthcmdIYXNoXSkpIHtcbiAgICAgIHJldCA9IHByb3BDYWNoZVthcmdIYXNoXSA9IHNlbGYucGFyc2VJbXBsV2FybihuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KTtcbiAgICB9IC8vIC0gYnlwYXNzZXMgY2FuJ3QgYmUgc2hhcmVkIGIvYyB0aGUgdmFsdWUgY2FuIGJlIGNoYW5nZWQgYnkgYW5pbWF0aW9ucyBvciBvdGhlcndpc2Ugb3ZlcnJpZGRlblxuICAgIC8vIC0gbWFwcGluZ3MgY2FuJ3QgYmUgc2hhcmVkIGIvYyBtYXBwaW5ncyBhcmUgcGVyLWVsZW1lbnRcblxuXG4gICAgaWYgKHByb3BJc0J5cGFzcyB8fCBwcm9wSXNGbGF0ID09PSAnbWFwcGluZycpIHtcbiAgICAgIC8vIG5lZWQgYSBjb3B5IHNpbmNlIHByb3BzIGFyZSBtdXRhdGVkIGxhdGVyIGluIHRoZWlyIGxpZmVjeWNsZXNcbiAgICAgIHJldCA9IGNvcHkocmV0KTtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICByZXQudmFsdWUgPSBjb3B5KHJldC52YWx1ZSk7IC8vIGJlY2F1c2UgaXQgY291bGQgYmUgYW4gYXJyYXksIGUuZy4gY29sb3VyXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICBzdHlmbiQxLnBhcnNlSW1wbFdhcm4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCkge1xuICAgIHZhciBwcm9wID0gdGhpcy5wYXJzZUltcGwobmFtZSwgdmFsdWUsIHByb3BJc0J5cGFzcywgcHJvcElzRmxhdCk7XG5cbiAgICBpZiAoIXByb3AgJiYgdmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2FybihcIlRoZSBzdHlsZSBwcm9wZXJ0eSBgXCIuY29uY2F0KG5hbWUsIFwiOiBcIikuY29uY2F0KHZhbHVlLCBcImAgaXMgaW52YWxpZFwiKSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3AgJiYgKHByb3AubmFtZSA9PT0gJ3dpZHRoJyB8fCBwcm9wLm5hbWUgPT09ICdoZWlnaHQnKSAmJiB2YWx1ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgd2FybignVGhlIHN0eWxlIHZhbHVlIG9mIGBsYWJlbGAgaXMgZGVwcmVjYXRlZCBmb3IgYCcgKyBwcm9wLm5hbWUgKyAnYCcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wO1xuICB9OyAvLyBwYXJzZSBhIHByb3BlcnR5OyByZXR1cm4gbnVsbCBvbiBpbnZhbGlkOyByZXR1cm4gcGFyc2VkIHByb3BlcnR5IG90aGVyd2lzZVxuICAvLyBmaWVsZHMgOlxuICAvLyAtIG5hbWUgOiB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHlcbiAgLy8gLSB2YWx1ZSA6IHRoZSBwYXJzZWQsIG5hdGl2ZS10eXBlZCB2YWx1ZSBvZiB0aGUgcHJvcGVydHlcbiAgLy8gLSBzdHJWYWx1ZSA6IGEgc3RyaW5nIHZhbHVlIHRoYXQgcmVwcmVzZW50cyB0aGUgcHJvcGVydHkgdmFsdWUgaW4gdmFsaWQgY3NzXG4gIC8vIC0gYnlwYXNzIDogdHJ1ZSBpZmYgdGhlIHByb3BlcnR5IGlzIGEgYnlwYXNzIHByb3BlcnR5XG5cblxuICBzdHlmbiQxLnBhcnNlSW1wbCA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgcHJvcElzQnlwYXNzLCBwcm9wSXNGbGF0KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIG5hbWUgPSBjYW1lbDJkYXNoKG5hbWUpOyAvLyBtYWtlIHN1cmUgdGhlIHByb3BlcnR5IG5hbWUgaXMgaW4gZGFzaCBmb3JtIChlLmcuICdwcm9wZXJ0eS1uYW1lJyBub3QgJ3Byb3BlcnR5TmFtZScpXG5cbiAgICB2YXIgcHJvcGVydHkgPSBzZWxmLnByb3BlcnRpZXNbbmFtZV07XG4gICAgdmFyIHBhc3NlZFZhbHVlID0gdmFsdWU7XG4gICAgdmFyIHR5cGVzID0gc2VsZi50eXBlcztcblxuICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gcmV0dXJuIG51bGwgb24gcHJvcGVydHkgb2YgdW5rbm93biBuYW1lXG5cblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIGNhbid0IGFzc2lnbiB1bmRlZmluZWRcbiAgICAvLyB0aGUgcHJvcGVydHkgbWF5IGJlIGFuIGFsaWFzXG5cblxuICAgIGlmIChwcm9wZXJ0eS5hbGlhcykge1xuICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0eS5wb2ludHNUbztcbiAgICAgIG5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZUlzU3RyaW5nID0gc3RyaW5nKHZhbHVlKTtcblxuICAgIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgICAvLyB0cmltIHRoZSB2YWx1ZSB0byBtYWtlIHBhcnNpbmcgZWFzaWVyXG4gICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICB2YXIgdHlwZSA9IHByb3BlcnR5LnR5cGU7XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gbm8gdHlwZSwgbm8gbHVja1xuICAgIC8vIGNoZWNrIGlmIGJ5cGFzcyBpcyBudWxsIG9yIGVtcHR5IHN0cmluZyAoaS5lLiBpbmRpY2F0aW9uIHRvIGRlbGV0ZSBieXBhc3MgcHJvcGVydHkpXG5cblxuICAgIGlmIChwcm9wSXNCeXBhc3MgJiYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgYnlwYXNzOiB0cnVlLFxuICAgICAgICBkZWxldGVCeXBhc3M6IHRydWVcbiAgICAgIH07XG4gICAgfSAvLyBjaGVjayBpZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uIHVzZWQgYXMgYSBtYXBwZXJcblxuXG4gICAgaWYgKGZuJDYodmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHN0clZhbHVlOiAnZm4nLFxuICAgICAgICBtYXBwZWQ6IHR5cGVzLmZuLFxuICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgfTtcbiAgICB9IC8vIGNoZWNrIGlmIHZhbHVlIGlzIG1hcHBlZFxuXG5cbiAgICB2YXIgZGF0YSwgbWFwRGF0YTtcblxuICAgIGlmICghdmFsdWVJc1N0cmluZyB8fCBwcm9wSXNGbGF0IHx8IHZhbHVlLmxlbmd0aCA8IDcgfHwgdmFsdWVbMV0gIT09ICdhJykgOyBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPj0gNyAmJiB2YWx1ZVswXSA9PT0gJ2QnICYmIChkYXRhID0gbmV3IFJlZ0V4cCh0eXBlcy5kYXRhLnJlZ2V4KS5leGVjKHZhbHVlKSkpIHtcbiAgICAgIGlmIChwcm9wSXNCeXBhc3MpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyBtYXBwZXJzIG5vdCBhbGxvd2VkIGluIGJ5cGFzc1xuXG5cbiAgICAgIHZhciBtYXBwZWQgPSB0eXBlcy5kYXRhO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICBtYXBwZWQ6IG1hcHBlZCxcbiAgICAgICAgZmllbGQ6IGRhdGFbMV0sXG4gICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodmFsdWUubGVuZ3RoID49IDEwICYmIHZhbHVlWzBdID09PSAnbScgJiYgKG1hcERhdGEgPSBuZXcgUmVnRXhwKHR5cGVzLm1hcERhdGEucmVnZXgpLmV4ZWModmFsdWUpKSkge1xuICAgICAgaWYgKHByb3BJc0J5cGFzcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IC8vIG1hcHBlcnMgbm90IGFsbG93ZWQgaW4gYnlwYXNzXG5cblxuICAgICAgaWYgKHR5cGUubXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyBpbXBvc3NpYmxlIHRvIG1hcCB0byBudW1cblxuXG4gICAgICB2YXIgX21hcHBlZCA9IHR5cGVzLm1hcERhdGE7IC8vIHdlIGNhbiBtYXAgb25seSBpZiB0aGUgdHlwZSBpcyBhIGNvbG91ciBvciBhIG51bWJlclxuXG4gICAgICBpZiAoISh0eXBlLmNvbG9yIHx8IHR5cGUubnVtYmVyKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZU1pbiA9IHRoaXMucGFyc2UobmFtZSwgbWFwRGF0YVs0XSk7IC8vIHBhcnNlIHRvIHZhbGlkYXRlXG5cbiAgICAgIGlmICghdmFsdWVNaW4gfHwgdmFsdWVNaW4ubWFwcGVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gY2FuJ3QgYmUgaW52YWxpZCBvciBtYXBwZWRcblxuXG4gICAgICB2YXIgdmFsdWVNYXggPSB0aGlzLnBhcnNlKG5hbWUsIG1hcERhdGFbNV0pOyAvLyBwYXJzZSB0byB2YWxpZGF0ZVxuXG4gICAgICBpZiAoIXZhbHVlTWF4IHx8IHZhbHVlTWF4Lm1hcHBlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IC8vIGNhbid0IGJlIGludmFsaWQgb3IgbWFwcGVkXG4gICAgICAvLyBjaGVjayBpZiB2YWx1ZU1pbiBhbmQgdmFsdWVNYXggYXJlIHRoZSBzYW1lXG5cblxuICAgICAgaWYgKHZhbHVlTWluLnBmVmFsdWUgPT09IHZhbHVlTWF4LnBmVmFsdWUgfHwgdmFsdWVNaW4uc3RyVmFsdWUgPT09IHZhbHVlTWF4LnN0clZhbHVlKSB7XG4gICAgICAgIHdhcm4oJ2AnICsgbmFtZSArICc6ICcgKyB2YWx1ZSArICdgIGlzIG5vdCBhIHZhbGlkIG1hcHBlciBiZWNhdXNlIHRoZSBvdXRwdXQgcmFuZ2UgaXMgemVybzsgY29udmVydGluZyB0byBgJyArIG5hbWUgKyAnOiAnICsgdmFsdWVNaW4uc3RyVmFsdWUgKyAnYCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZShuYW1lLCB2YWx1ZU1pbi5zdHJWYWx1ZSk7IC8vIGNhbid0IG1ha2UgbXVjaCBvZiBhIG1hcHBlciB3aXRob3V0IGEgcmFuZ2VcbiAgICAgIH0gZWxzZSBpZiAodHlwZS5jb2xvcikge1xuICAgICAgICB2YXIgYzEgPSB2YWx1ZU1pbi52YWx1ZTtcbiAgICAgICAgdmFyIGMyID0gdmFsdWVNYXgudmFsdWU7XG4gICAgICAgIHZhciBzYW1lID0gYzFbMF0gPT09IGMyWzBdIC8vIHJlZFxuICAgICAgICAmJiBjMVsxXSA9PT0gYzJbMV0gLy8gZ3JlZW5cbiAgICAgICAgJiYgYzFbMl0gPT09IGMyWzJdIC8vIGJsdWVcbiAgICAgICAgJiYgKCAvLyBvcHRpb25hbCBhbHBoYVxuICAgICAgICBjMVszXSA9PT0gYzJbM10gLy8gc2FtZSBhbHBoYSBvdXRyaWdodFxuICAgICAgICB8fCAoYzFbM10gPT0gbnVsbCB8fCBjMVszXSA9PT0gMSAvLyBmdWxsIG9wYWNpdHkgZm9yIGNvbG91ciAxP1xuICAgICAgICApICYmIChjMlszXSA9PSBudWxsIHx8IGMyWzNdID09PSAxKSAvLyBmdWxsIG9wYWNpdHkgZm9yIGNvbG91ciAyP1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChzYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IC8vIGNhbid0IG1ha2UgYSBtYXBwZXIgd2l0aG91dCBhIHJhbmdlXG5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IG1hcERhdGEsXG4gICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICBtYXBwZWQ6IF9tYXBwZWQsXG4gICAgICAgIGZpZWxkOiBtYXBEYXRhWzFdLFxuICAgICAgICBmaWVsZE1pbjogcGFyc2VGbG9hdChtYXBEYXRhWzJdKSxcbiAgICAgICAgLy8gbWluICYgbWF4IGFyZSBudW1lcmljXG4gICAgICAgIGZpZWxkTWF4OiBwYXJzZUZsb2F0KG1hcERhdGFbM10pLFxuICAgICAgICB2YWx1ZU1pbjogdmFsdWVNaW4udmFsdWUsXG4gICAgICAgIHZhbHVlTWF4OiB2YWx1ZU1heC52YWx1ZSxcbiAgICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGUubXVsdGlwbGUgJiYgcHJvcElzRmxhdCAhPT0gJ211bHRpcGxlJykge1xuICAgICAgdmFyIHZhbHM7XG5cbiAgICAgIGlmICh2YWx1ZUlzU3RyaW5nKSB7XG4gICAgICAgIHZhbHMgPSB2YWx1ZS5zcGxpdCgvXFxzKy8pO1xuICAgICAgfSBlbHNlIGlmIChhcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFscyA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFscyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLmV2ZW5NdWx0aXBsZSAmJiB2YWxzLmxlbmd0aCAlIDIgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWxBcnIgPSBbXTtcbiAgICAgIHZhciB1bml0c0FyciA9IFtdO1xuICAgICAgdmFyIHBmVmFsQXJyID0gW107XG4gICAgICB2YXIgc3RyVmFsID0gJyc7XG4gICAgICB2YXIgaGFzRW51bSA9IGZhbHNlO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHAgPSBzZWxmLnBhcnNlKG5hbWUsIHZhbHNbaV0sIHByb3BJc0J5cGFzcywgJ211bHRpcGxlJyk7XG4gICAgICAgIGhhc0VudW0gPSBoYXNFbnVtIHx8IHN0cmluZyhwLnZhbHVlKTtcbiAgICAgICAgdmFsQXJyLnB1c2gocC52YWx1ZSk7XG4gICAgICAgIHBmVmFsQXJyLnB1c2gocC5wZlZhbHVlICE9IG51bGwgPyBwLnBmVmFsdWUgOiBwLnZhbHVlKTtcbiAgICAgICAgdW5pdHNBcnIucHVzaChwLnVuaXRzKTtcbiAgICAgICAgc3RyVmFsICs9IChpID4gMCA/ICcgJyA6ICcnKSArIHAuc3RyVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlLnZhbGlkYXRlICYmICF0eXBlLnZhbGlkYXRlKHZhbEFyciwgdW5pdHNBcnIpKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5zaW5nbGVFbnVtICYmIGhhc0VudW0pIHtcbiAgICAgICAgaWYgKHZhbEFyci5sZW5ndGggPT09IDEgJiYgc3RyaW5nKHZhbEFyclswXSkpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWxBcnJbMF0sXG4gICAgICAgICAgICBzdHJWYWx1ZTogdmFsQXJyWzBdLFxuICAgICAgICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWxBcnIsXG4gICAgICAgIHBmVmFsdWU6IHBmVmFsQXJyLFxuICAgICAgICBzdHJWYWx1ZTogc3RyVmFsLFxuICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzcyxcbiAgICAgICAgdW5pdHM6IHVuaXRzQXJyXG4gICAgICB9O1xuICAgIH0gLy8gc2V2ZXJhbCB0eXBlcyBhbHNvIGFsbG93IGVudW1zXG5cblxuICAgIHZhciBjaGVja0VudW1zID0gZnVuY3Rpb24gY2hlY2tFbnVtcygpIHtcbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB0eXBlLmVudW1zLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgZW4gPSB0eXBlLmVudW1zW19pXTtcblxuICAgICAgICBpZiAoZW4gPT09IHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgICAgICAgIGJ5cGFzczogcHJvcElzQnlwYXNzXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9OyAvLyBjaGVjayB0aGUgdHlwZSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBvYmplY3RcblxuXG4gICAgaWYgKHR5cGUubnVtYmVyKSB7XG4gICAgICB2YXIgdW5pdHM7XG4gICAgICB2YXIgaW1wbGljaXRVbml0cyA9ICdweCc7IC8vIG5vdCBzZXQgPT4gcHhcblxuICAgICAgaWYgKHR5cGUudW5pdHMpIHtcbiAgICAgICAgLy8gdXNlIHNwZWNpZmllZCB1bml0cyBpZiBzZXRcbiAgICAgICAgdW5pdHMgPSB0eXBlLnVuaXRzO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5pbXBsaWNpdFVuaXRzKSB7XG4gICAgICAgIGltcGxpY2l0VW5pdHMgPSB0eXBlLmltcGxpY2l0VW5pdHM7XG4gICAgICB9XG5cbiAgICAgIGlmICghdHlwZS51bml0bGVzcykge1xuICAgICAgICBpZiAodmFsdWVJc1N0cmluZykge1xuICAgICAgICAgIHZhciB1bml0c1JlZ2V4ID0gJ3B4fGVtJyArICh0eXBlLmFsbG93UGVyY2VudCA/ICd8XFxcXCUnIDogJycpO1xuXG4gICAgICAgICAgaWYgKHVuaXRzKSB7XG4gICAgICAgICAgICB1bml0c1JlZ2V4ID0gdW5pdHM7XG4gICAgICAgICAgfSAvLyBvbmx5IGFsbG93IGV4cGxpY2l0IHVuaXRzIGlmIHNvIHNldFxuXG5cbiAgICAgICAgICB2YXIgbWF0Y2ggPSB2YWx1ZS5tYXRjaCgnXignICsgbnVtYmVyICsgJykoJyArIHVuaXRzUmVnZXggKyAnKT8nICsgJyQnKTtcblxuICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFsdWUgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIHVuaXRzID0gbWF0Y2hbMl0gfHwgaW1wbGljaXRVbml0cztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIXVuaXRzIHx8IHR5cGUuaW1wbGljaXRVbml0cykge1xuICAgICAgICAgIHVuaXRzID0gaW1wbGljaXRVbml0czsgLy8gaW1wbGljaXRseSBweCBpZiB1bnNwZWNpZmllZFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7IC8vIGlmIG5vdCBhIG51bWJlciBhbmQgZW51bXMgbm90IGFsbG93ZWQsIHRoZW4gdGhlIHZhbHVlIGlzIGludmFsaWRcblxuICAgICAgaWYgKGlzTmFOKHZhbHVlKSAmJiB0eXBlLmVudW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IC8vIGNoZWNrIGlmIHRoaXMgbnVtYmVyIHR5cGUgYWxzbyBhY2NlcHRzIHNwZWNpYWwga2V5d29yZHMgaW4gcGxhY2Ugb2YgbnVtYmVyc1xuICAgICAgLy8gKGkuZS4gYGxlZnRgLCBgYXV0b2AsIGV0YylcblxuXG4gICAgICBpZiAoaXNOYU4odmFsdWUpICYmIHR5cGUuZW51bXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YWx1ZSA9IHBhc3NlZFZhbHVlO1xuICAgICAgICByZXR1cm4gY2hlY2tFbnVtcygpO1xuICAgICAgfSAvLyBjaGVjayBpZiB2YWx1ZSBtdXN0IGJlIGFuIGludGVnZXJcblxuXG4gICAgICBpZiAodHlwZS5pbnRlZ2VyICYmICFpbnRlZ2VyKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gLy8gY2hlY2sgdmFsdWUgaXMgd2l0aGluIHJhbmdlXG5cblxuICAgICAgaWYgKHR5cGUubWluICE9PSB1bmRlZmluZWQgJiYgKHZhbHVlIDwgdHlwZS5taW4gfHwgdHlwZS5zdHJpY3RNaW4gJiYgdmFsdWUgPT09IHR5cGUubWluKSB8fCB0eXBlLm1heCAhPT0gdW5kZWZpbmVkICYmICh2YWx1ZSA+IHR5cGUubWF4IHx8IHR5cGUuc3RyaWN0TWF4ICYmIHZhbHVlID09PSB0eXBlLm1heCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXQgPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgc3RyVmFsdWU6ICcnICsgdmFsdWUgKyAodW5pdHMgPyB1bml0cyA6ICcnKSxcbiAgICAgICAgdW5pdHM6IHVuaXRzLFxuICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgfTsgLy8gbm9ybWFsaXNlIHZhbHVlIGluIHBpeGVsc1xuXG4gICAgICBpZiAodHlwZS51bml0bGVzcyB8fCB1bml0cyAhPT0gJ3B4JyAmJiB1bml0cyAhPT0gJ2VtJykge1xuICAgICAgICByZXQucGZWYWx1ZSA9IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LnBmVmFsdWUgPSB1bml0cyA9PT0gJ3B4JyB8fCAhdW5pdHMgPyB2YWx1ZSA6IHRoaXMuZ2V0RW1TaXplSW5QaXhlbHMoKSAqIHZhbHVlO1xuICAgICAgfSAvLyBub3JtYWxpc2UgdmFsdWUgaW4gbXNcblxuXG4gICAgICBpZiAodW5pdHMgPT09ICdtcycgfHwgdW5pdHMgPT09ICdzJykge1xuICAgICAgICByZXQucGZWYWx1ZSA9IHVuaXRzID09PSAnbXMnID8gdmFsdWUgOiAxMDAwICogdmFsdWU7XG4gICAgICB9IC8vIG5vcm1hbGlzZSB2YWx1ZSBpbiByYWRcblxuXG4gICAgICBpZiAodW5pdHMgPT09ICdkZWcnIHx8IHVuaXRzID09PSAncmFkJykge1xuICAgICAgICByZXQucGZWYWx1ZSA9IHVuaXRzID09PSAncmFkJyA/IHZhbHVlIDogZGVnMnJhZCh2YWx1ZSk7XG4gICAgICB9IC8vIG5vcm1hbGl6ZSB2YWx1ZSBpbiAlXG5cblxuICAgICAgaWYgKHVuaXRzID09PSAnJScpIHtcbiAgICAgICAgcmV0LnBmVmFsdWUgPSB2YWx1ZSAvIDEwMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGVsc2UgaWYgKHR5cGUucHJvcExpc3QpIHtcbiAgICAgIHZhciBwcm9wcyA9IFtdO1xuICAgICAgdmFyIHByb3BzU3RyID0gJycgKyB2YWx1ZTtcblxuICAgICAgaWYgKHByb3BzU3RyID09PSAnbm9uZScpIDsgZWxzZSB7XG4gICAgICAgIC8vIGdvIG92ZXIgZWFjaCBwcm9wXG4gICAgICAgIHZhciBwcm9wc1NwbGl0ID0gcHJvcHNTdHIuc3BsaXQoL1xccyosXFxzKnxcXHMrLyk7XG5cbiAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgcHJvcHNTcGxpdC5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcHNTcGxpdFtfaTJdLnRyaW0oKTtcblxuICAgICAgICAgIGlmIChzZWxmLnByb3BlcnRpZXNbcHJvcE5hbWVdKSB7XG4gICAgICAgICAgICBwcm9wcy5wdXNoKHByb3BOYW1lKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2FybignYCcgKyBwcm9wTmFtZSArICdgIGlzIG5vdCBhIHZhbGlkIHByb3BlcnR5IG5hbWUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHByb3BzLFxuICAgICAgICBzdHJWYWx1ZTogcHJvcHMubGVuZ3RoID09PSAwID8gJ25vbmUnIDogcHJvcHMuam9pbignICcpLFxuICAgICAgICBieXBhc3M6IHByb3BJc0J5cGFzc1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGUuY29sb3IpIHtcbiAgICAgIHZhciB0dXBsZSA9IGNvbG9yMnR1cGxlKHZhbHVlKTtcblxuICAgICAgaWYgKCF0dXBsZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHR1cGxlLFxuICAgICAgICBwZlZhbHVlOiB0dXBsZSxcbiAgICAgICAgc3RyVmFsdWU6ICdyZ2IoJyArIHR1cGxlWzBdICsgJywnICsgdHVwbGVbMV0gKyAnLCcgKyB0dXBsZVsyXSArICcpJyxcbiAgICAgICAgLy8gbi5iLiBubyBzcGFjZXMgYi9jIG9mIG11bHRpcGxlIHN1cHBvcnRcbiAgICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlLnJlZ2V4IHx8IHR5cGUucmVnZXhlcykge1xuICAgICAgLy8gZmlyc3QgY2hlY2sgZW51bXNcbiAgICAgIGlmICh0eXBlLmVudW1zKSB7XG4gICAgICAgIHZhciBlbnVtUHJvcCA9IGNoZWNrRW51bXMoKTtcblxuICAgICAgICBpZiAoZW51bVByb3ApIHtcbiAgICAgICAgICByZXR1cm4gZW51bVByb3A7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHJlZ2V4ZXMgPSB0eXBlLnJlZ2V4ZXMgPyB0eXBlLnJlZ2V4ZXMgOiBbdHlwZS5yZWdleF07XG5cbiAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IHJlZ2V4ZXMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4ZXNbX2kzXSk7IC8vIG1ha2UgYSByZWdleCBmcm9tIHRoZSB0eXBlIHN0cmluZ1xuXG4gICAgICAgIHZhciBtID0gcmVnZXguZXhlYyh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKG0pIHtcbiAgICAgICAgICAvLyByZWdleCBtYXRjaGVzXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdHlwZS5zaW5nbGVSZWdleE1hdGNoVmFsdWUgPyBtWzFdIDogbSxcbiAgICAgICAgICAgIHN0clZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsOyAvLyBkaWRuJ3QgbWF0Y2ggYW55XG4gICAgfSBlbHNlIGlmICh0eXBlLnN0cmluZykge1xuICAgICAgLy8ganVzdCByZXR1cm5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiAnJyArIHZhbHVlLFxuICAgICAgICBzdHJWYWx1ZTogJycgKyB2YWx1ZSxcbiAgICAgICAgYnlwYXNzOiBwcm9wSXNCeXBhc3NcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlLmVudW1zKSB7XG4gICAgICAvLyBjaGVjayBlbnVtcyBsYXN0IGJlY2F1c2UgaXQncyBhIGNvbWJvIHR5cGUgaW4gb3RoZXJzXG4gICAgICByZXR1cm4gY2hlY2tFbnVtcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDsgLy8gbm90IGEgdHlwZSB3ZSBjYW4gaGFuZGxlXG4gICAgfVxuICB9O1xuXG4gIHZhciBTdHlsZSA9IGZ1bmN0aW9uIFN0eWxlKGN5KSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0eWxlKSkge1xuICAgICAgcmV0dXJuIG5ldyBTdHlsZShjeSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb3JlKGN5KSkge1xuICAgICAgZXJyb3IoJ0Egc3R5bGUgbXVzdCBoYXZlIGEgY29yZSByZWZlcmVuY2UnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wcml2YXRlID0ge1xuICAgICAgY3k6IGN5LFxuICAgICAgY29yZVN0eWxlOiB7fVxuICAgIH07XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMucmVzZXRUb0RlZmF1bHQoKTtcbiAgfTtcblxuICB2YXIgc3R5Zm4gPSBTdHlsZS5wcm90b3R5cGU7XG5cbiAgc3R5Zm4uaW5zdGFuY2VTdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICdzdHlsZSc7XG4gIH07IC8vIHJlbW92ZSBhbGwgY29udGV4dHNcblxuXG4gIHN0eWZuLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgdmFyIGN5ID0gX3AuY3k7XG4gICAgdmFyIGVsZXMgPSBjeS5lbGVtZW50cygpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzW2ldID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICBfcC5jb250ZXh0U3R5bGVzID0ge307XG4gICAgX3AucHJvcERpZmZzID0ge307XG4gICAgdGhpcy5jbGVhbkVsZW1lbnRzKGVsZXMsIHRydWUpO1xuICAgIGVsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICB2YXIgZWxlX3AgPSBlbGVbMF0uX3ByaXZhdGU7XG4gICAgICBlbGVfcC5zdHlsZURpcnR5ID0gdHJ1ZTtcbiAgICAgIGVsZV9wLmFwcGxpZWRJbml0U3R5bGUgPSBmYWxzZTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfTtcblxuICBzdHlmbi5yZXNldFRvRGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gICAgdGhpcy5hZGREZWZhdWx0U3R5bGVzaGVldCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9OyAvLyBidWlsZHMgYSBzdHlsZSBvYmplY3QgZm9yIHRoZSAnY29yZScgc2VsZWN0b3JcblxuXG4gIHN0eWZuLmNvcmUgPSBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5jb3JlU3R5bGVbcHJvcE5hbWVdIHx8IHRoaXMuZ2V0RGVmYXVsdFByb3BlcnR5KHByb3BOYW1lKTtcbiAgfTsgLy8gY3JlYXRlIGEgbmV3IGNvbnRleHQgZnJvbSB0aGUgc3BlY2lmaWVkIHNlbGVjdG9yIHN0cmluZyBhbmQgc3dpdGNoIHRvIHRoYXQgY29udGV4dFxuXG5cbiAgc3R5Zm4uc2VsZWN0b3IgPSBmdW5jdGlvbiAoc2VsZWN0b3JTdHIpIHtcbiAgICAvLyAnY29yZScgaXMgYSBzcGVjaWFsIGNhc2UgYW5kIGRvZXMgbm90IG5lZWQgYSBzZWxlY3RvclxuICAgIHZhciBzZWxlY3RvciA9IHNlbGVjdG9yU3RyID09PSAnY29yZScgPyBudWxsIDogbmV3IFNlbGVjdG9yKHNlbGVjdG9yU3RyKTtcbiAgICB2YXIgaSA9IHRoaXMubGVuZ3RoKys7IC8vIG5ldyBjb250ZXh0IG1lYW5zIG5ldyBpbmRleFxuXG4gICAgdGhpc1tpXSA9IHtcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgbWFwcGVkUHJvcGVydGllczogW10sXG4gICAgICBpbmRleDogaVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07IC8vIGFkZCBvbmUgb3IgbWFueSBjc3MgcnVsZXMgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG5cbiAgc3R5Zm4uY3NzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIG1hcCA9IGFyZ3NbMF07XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZi5wcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwcm9wID0gc2VsZi5wcm9wZXJ0aWVzW2ldO1xuICAgICAgICB2YXIgbWFwVmFsID0gbWFwW3Byb3AubmFtZV07XG5cbiAgICAgICAgaWYgKG1hcFZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbWFwVmFsID0gbWFwW2Rhc2gyY2FtZWwocHJvcC5uYW1lKV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWFwVmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmNzc1J1bGUocHJvcC5uYW1lLCBtYXBWYWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5jc3NSdWxlKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIH0gLy8gZG8gbm90aGluZyBpZiBhcmdzIGFyZSBpbnZhbGlkXG5cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuXG4gIHN0eWZuLnN0eWxlID0gc3R5Zm4uY3NzOyAvLyBhZGQgYSBzaW5nbGUgY3NzIHJ1bGUgdG8gdGhlIGN1cnJlbnQgY29udGV4dFxuXG4gIHN0eWZuLmNzc1J1bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICAvLyBuYW1lLXZhbHVlIHBhaXJcbiAgICB2YXIgcHJvcGVydHkgPSB0aGlzLnBhcnNlKG5hbWUsIHZhbHVlKTsgLy8gYWRkIHByb3BlcnR5IHRvIGN1cnJlbnQgY29udGV4dCBpZiB2YWxpZFxuXG4gICAgaWYgKHByb3BlcnR5KSB7XG4gICAgICB2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXNbaV0ucHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgICAgIHRoaXNbaV0ucHJvcGVydGllc1twcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5OyAvLyBhbGxvdyBhY2Nlc3MgYnkgbmFtZSBhcyB3ZWxsXG5cbiAgICAgIGlmIChwcm9wZXJ0eS5uYW1lLm1hdGNoKC9waWUtKFxcZCspLWJhY2tncm91bmQtc2l6ZS8pICYmIHByb3BlcnR5LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUuaGFzUGllID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BlcnR5Lm1hcHBlZCkge1xuICAgICAgICB0aGlzW2ldLm1hcHBlZFByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XG4gICAgICB9IC8vIGFkZCB0byBjb3JlIHN0eWxlIGlmIG5lY2Vzc2FyeVxuXG5cbiAgICAgIHZhciBjdXJyZW50U2VsZWN0b3JJc0NvcmUgPSAhdGhpc1tpXS5zZWxlY3RvcjtcblxuICAgICAgaWYgKGN1cnJlbnRTZWxlY3RvcklzQ29yZSkge1xuICAgICAgICB0aGlzLl9wcml2YXRlLmNvcmVTdHlsZVtwcm9wZXJ0eS5uYW1lXSA9IHByb3BlcnR5O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuXG4gIHN0eWZuLmFwcGVuZCA9IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgIGlmIChzdHlsZXNoZWV0KHN0eWxlKSkge1xuICAgICAgc3R5bGUuYXBwZW5kVG9TdHlsZSh0aGlzKTtcbiAgICB9IGVsc2UgaWYgKGFycmF5KHN0eWxlKSkge1xuICAgICAgdGhpcy5hcHBlbmRGcm9tSnNvbihzdHlsZSk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcoc3R5bGUpKSB7XG4gICAgICB0aGlzLmFwcGVuZEZyb21TdHJpbmcoc3R5bGUpO1xuICAgIH0gLy8geW91IHByb2JhYmx5IHdvdWxkbid0IHdhbnQgdG8gYXBwZW5kIGEgU3R5bGUsIHNpbmNlIHlvdSdkIGR1cGxpY2F0ZSB0aGUgZGVmYXVsdCBwYXJ0c1xuXG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTsgLy8gc3RhdGljIGZ1bmN0aW9uXG5cblxuICBTdHlsZS5mcm9tSnNvbiA9IGZ1bmN0aW9uIChjeSwganNvbikge1xuICAgIHZhciBzdHlsZSA9IG5ldyBTdHlsZShjeSk7XG4gICAgc3R5bGUuZnJvbUpzb24oanNvbik7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9O1xuXG4gIFN0eWxlLmZyb21TdHJpbmcgPSBmdW5jdGlvbiAoY3ksIHN0cmluZykge1xuICAgIHJldHVybiBuZXcgU3R5bGUoY3kpLmZyb21TdHJpbmcoc3RyaW5nKTtcbiAgfTtcblxuICBbc3R5Zm4kOCwgc3R5Zm4kNywgc3R5Zm4kNiwgc3R5Zm4kNSwgc3R5Zm4kNCwgc3R5Zm4kMywgc3R5Zm4kMiwgc3R5Zm4kMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgICBleHRlbmQoc3R5Zm4sIHByb3BzKTtcbiAgfSk7XG4gIFN0eWxlLnR5cGVzID0gc3R5Zm4udHlwZXM7XG4gIFN0eWxlLnByb3BlcnRpZXMgPSBzdHlmbi5wcm9wZXJ0aWVzO1xuICBTdHlsZS5wcm9wZXJ0eUdyb3VwcyA9IHN0eWZuLnByb3BlcnR5R3JvdXBzO1xuICBTdHlsZS5wcm9wZXJ0eUdyb3VwTmFtZXMgPSBzdHlmbi5wcm9wZXJ0eUdyb3VwTmFtZXM7XG4gIFN0eWxlLnByb3BlcnR5R3JvdXBLZXlzID0gc3R5Zm4ucHJvcGVydHlHcm91cEtleXM7XG5cbiAgdmFyIGNvcmVmbiQyID0ge1xuICAgIHN0eWxlOiBmdW5jdGlvbiBzdHlsZShuZXdTdHlsZSkge1xuICAgICAgaWYgKG5ld1N0eWxlKSB7XG4gICAgICAgIHZhciBzID0gdGhpcy5zZXRTdHlsZShuZXdTdHlsZSk7XG4gICAgICAgIHMudXBkYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLnN0eWxlO1xuICAgIH0sXG4gICAgc2V0U3R5bGU6IGZ1bmN0aW9uIHNldFN0eWxlKHN0eWxlKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuXG4gICAgICBpZiAoc3R5bGVzaGVldChzdHlsZSkpIHtcbiAgICAgICAgX3Auc3R5bGUgPSBzdHlsZS5nZW5lcmF0ZVN0eWxlKHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChhcnJheShzdHlsZSkpIHtcbiAgICAgICAgX3Auc3R5bGUgPSBTdHlsZS5mcm9tSnNvbih0aGlzLCBzdHlsZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZyhzdHlsZSkpIHtcbiAgICAgICAgX3Auc3R5bGUgPSBTdHlsZS5mcm9tU3RyaW5nKHRoaXMsIHN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9wLnN0eWxlID0gU3R5bGUodGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcC5zdHlsZTtcbiAgICB9LFxuICAgIC8vIGUuZy4gY3kuZGF0YSgpIGNoYW5nZWQgPT4gcmVjYWxjIGVsZSBtYXBwZXJzXG4gICAgdXBkYXRlU3R5bGU6IGZ1bmN0aW9uIHVwZGF0ZVN0eWxlKCkge1xuICAgICAgdGhpcy5tdXRhYmxlRWxlbWVudHMoKS51cGRhdGVTdHlsZSgpOyAvLyBqdXN0IHNlbmQgdG8gYWxsIGVsZXNcbiAgICB9XG4gIH07XG5cbiAgdmFyIGRlZmF1bHRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZSc7XG4gIHZhciBjb3JlZm4kMSA9IHtcbiAgICBhdXRvbG9jazogZnVuY3Rpb24gYXV0b2xvY2soYm9vbCkge1xuICAgICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9wcml2YXRlLmF1dG9sb2NrID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmF1dG9sb2NrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIGF1dG91bmdyYWJpZnk6IGZ1bmN0aW9uIGF1dG91bmdyYWJpZnkoYm9vbCkge1xuICAgICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9wcml2YXRlLmF1dG91bmdyYWJpZnkgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuYXV0b3VuZ3JhYmlmeTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBhdXRvdW5zZWxlY3RpZnk6IGZ1bmN0aW9uIGF1dG91bnNlbGVjdGlmeShib29sKSB7XG4gICAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUuYXV0b3Vuc2VsZWN0aWZ5ID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmF1dG91bnNlbGVjdGlmeTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBzZWxlY3Rpb25UeXBlOiBmdW5jdGlvbiBzZWxlY3Rpb25UeXBlKHNlbFR5cGUpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChfcC5zZWxlY3Rpb25UeXBlID09IG51bGwpIHtcbiAgICAgICAgX3Auc2VsZWN0aW9uVHlwZSA9IGRlZmF1bHRTZWxlY3Rpb25UeXBlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VsVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChzZWxUeXBlID09PSAnYWRkaXRpdmUnIHx8IHNlbFR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgX3Auc2VsZWN0aW9uVHlwZSA9IHNlbFR5cGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBfcC5zZWxlY3Rpb25UeXBlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIHBhbm5pbmdFbmFibGVkOiBmdW5jdGlvbiBwYW5uaW5nRW5hYmxlZChib29sKSB7XG4gICAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQgPSBib29sID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgdXNlclBhbm5pbmdFbmFibGVkOiBmdW5jdGlvbiB1c2VyUGFubmluZ0VuYWJsZWQoYm9vbCkge1xuICAgICAgaWYgKGJvb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9wcml2YXRlLnVzZXJQYW5uaW5nRW5hYmxlZCA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS51c2VyUGFubmluZ0VuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgem9vbWluZ0VuYWJsZWQ6IGZ1bmN0aW9uIHpvb21pbmdFbmFibGVkKGJvb2wpIHtcbiAgICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCA9IGJvb2wgPyB0cnVlIDogZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICB1c2VyWm9vbWluZ0VuYWJsZWQ6IGZ1bmN0aW9uIHVzZXJab29taW5nRW5hYmxlZChib29sKSB7XG4gICAgICBpZiAoYm9vbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUudXNlclpvb21pbmdFbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLnVzZXJab29taW5nRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBib3hTZWxlY3Rpb25FbmFibGVkOiBmdW5jdGlvbiBib3hTZWxlY3Rpb25FbmFibGVkKGJvb2wpIHtcbiAgICAgIGlmIChib29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fcHJpdmF0ZS5ib3hTZWxlY3Rpb25FbmFibGVkID0gYm9vbCA/IHRydWUgOiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmJveFNlbGVjdGlvbkVuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgcGFuOiBmdW5jdGlvbiBwYW4oKSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICAgIHZhciBkaW0sIHZhbCwgZGltcywgeCwgeTtcblxuICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy8gLnBhbigpXG4gICAgICAgICAgcmV0dXJuIHBhbjtcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHN0cmluZyhhcmdzWzBdKSkge1xuICAgICAgICAgICAgLy8gLnBhbigneCcpXG4gICAgICAgICAgICBkaW0gPSBhcmdzWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHBhbltkaW1dO1xuICAgICAgICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3QoYXJnc1swXSkpIHtcbiAgICAgICAgICAgIC8vIC5wYW4oeyB4OiAwLCB5OiAxMDAgfSlcbiAgICAgICAgICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGltcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICB4ID0gZGltcy54O1xuICAgICAgICAgICAgeSA9IGRpbXMueTtcblxuICAgICAgICAgICAgaWYgKG51bWJlciQxKHgpKSB7XG4gICAgICAgICAgICAgIHBhbi54ID0geDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG51bWJlciQxKHkpKSB7XG4gICAgICAgICAgICAgIHBhbi55ID0geTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5lbWl0KCdwYW4gdmlld3BvcnQnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgLy8gLnBhbigneCcsIDEwMClcbiAgICAgICAgICBpZiAoIXRoaXMuX3ByaXZhdGUucGFubmluZ0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRpbSA9IGFyZ3NbMF07XG4gICAgICAgICAgdmFsID0gYXJnc1sxXTtcblxuICAgICAgICAgIGlmICgoZGltID09PSAneCcgfHwgZGltID09PSAneScpICYmIG51bWJlciQxKHZhbCkpIHtcbiAgICAgICAgICAgIHBhbltkaW1dID0gdmFsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIGludmFsaWRcbiAgICAgIH1cblxuICAgICAgdGhpcy5ub3RpZnkoJ3ZpZXdwb3J0Jyk7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIHBhbkJ5OiBmdW5jdGlvbiBwYW5CeShhcmcwLCBhcmcxKSB7XG4gICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICAgIHZhciBkaW0sIHZhbCwgZGltcywgeCwgeTtcblxuICAgICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAocGxhaW5PYmplY3QoYXJnMCkpIHtcbiAgICAgICAgICAgIC8vIC5wYW5CeSh7IHg6IDAsIHk6IDEwMCB9KVxuICAgICAgICAgICAgZGltcyA9IGFyZ3NbMF07XG4gICAgICAgICAgICB4ID0gZGltcy54O1xuICAgICAgICAgICAgeSA9IGRpbXMueTtcblxuICAgICAgICAgICAgaWYgKG51bWJlciQxKHgpKSB7XG4gICAgICAgICAgICAgIHBhbi54ICs9IHg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChudW1iZXIkMSh5KSkge1xuICAgICAgICAgICAgICBwYW4ueSArPSB5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAvLyAucGFuQnkoJ3gnLCAxMDApXG4gICAgICAgICAgZGltID0gYXJnMDtcbiAgICAgICAgICB2YWwgPSBhcmcxO1xuXG4gICAgICAgICAgaWYgKChkaW0gPT09ICd4JyB8fCBkaW0gPT09ICd5JykgJiYgbnVtYmVyJDEodmFsKSkge1xuICAgICAgICAgICAgcGFuW2RpbV0gKz0gdmFsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZW1pdCgncGFuIHZpZXdwb3J0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIGludmFsaWRcbiAgICAgIH1cblxuICAgICAgdGhpcy5ub3RpZnkoJ3ZpZXdwb3J0Jyk7XG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIGZpdDogZnVuY3Rpb24gZml0KGVsZW1lbnRzLCBwYWRkaW5nKSB7XG4gICAgICB2YXIgdmlld3BvcnRTdGF0ZSA9IHRoaXMuZ2V0Rml0Vmlld3BvcnQoZWxlbWVudHMsIHBhZGRpbmcpO1xuXG4gICAgICBpZiAodmlld3BvcnRTdGF0ZSkge1xuICAgICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgICBfcC56b29tID0gdmlld3BvcnRTdGF0ZS56b29tO1xuICAgICAgICBfcC5wYW4gPSB2aWV3cG9ydFN0YXRlLnBhbjtcbiAgICAgICAgdGhpcy5lbWl0KCdwYW4gem9vbSB2aWV3cG9ydCcpO1xuICAgICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBnZXRGaXRWaWV3cG9ydDogZnVuY3Rpb24gZ2V0Rml0Vmlld3BvcnQoZWxlbWVudHMsIHBhZGRpbmcpIHtcbiAgICAgIGlmIChudW1iZXIkMShlbGVtZW50cykgJiYgcGFkZGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGVsZW1lbnRzIGlzIG9wdGlvbmFsXG4gICAgICAgIHBhZGRpbmcgPSBlbGVtZW50cztcbiAgICAgICAgZWxlbWVudHMgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCB8fCAhdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBiYjtcblxuICAgICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgICAgdmFyIHNlbCA9IGVsZW1lbnRzO1xuICAgICAgICBlbGVtZW50cyA9IHRoaXMuJChzZWwpO1xuICAgICAgfSBlbHNlIGlmIChib3VuZGluZ0JveChlbGVtZW50cykpIHtcbiAgICAgICAgLy8gYXNzdW1lIGJiXG4gICAgICAgIHZhciBiYmUgPSBlbGVtZW50cztcbiAgICAgICAgYmIgPSB7XG4gICAgICAgICAgeDE6IGJiZS54MSxcbiAgICAgICAgICB5MTogYmJlLnkxLFxuICAgICAgICAgIHgyOiBiYmUueDIsXG4gICAgICAgICAgeTI6IGJiZS55MlxuICAgICAgICB9O1xuICAgICAgICBiYi53ID0gYmIueDIgLSBiYi54MTtcbiAgICAgICAgYmIuaCA9IGJiLnkyIC0gYmIueTE7XG4gICAgICB9IGVsc2UgaWYgKCFlbGVtZW50T3JDb2xsZWN0aW9uKGVsZW1lbnRzKSkge1xuICAgICAgICBlbGVtZW50cyA9IHRoaXMubXV0YWJsZUVsZW1lbnRzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKGVsZW1lbnRzKSAmJiBlbGVtZW50cy5lbXB0eSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gY2FuJ3QgZml0IHRvIG5vdGhpbmdcblxuXG4gICAgICBiYiA9IGJiIHx8IGVsZW1lbnRzLmJvdW5kaW5nQm94KCk7XG4gICAgICB2YXIgdyA9IHRoaXMud2lkdGgoKTtcbiAgICAgIHZhciBoID0gdGhpcy5oZWlnaHQoKTtcbiAgICAgIHZhciB6b29tO1xuICAgICAgcGFkZGluZyA9IG51bWJlciQxKHBhZGRpbmcpID8gcGFkZGluZyA6IDA7XG5cbiAgICAgIGlmICghaXNOYU4odykgJiYgIWlzTmFOKGgpICYmIHcgPiAwICYmIGggPiAwICYmICFpc05hTihiYi53KSAmJiAhaXNOYU4oYmIuaCkgJiYgYmIudyA+IDAgJiYgYmIuaCA+IDApIHtcbiAgICAgICAgem9vbSA9IE1hdGgubWluKCh3IC0gMiAqIHBhZGRpbmcpIC8gYmIudywgKGggLSAyICogcGFkZGluZykgLyBiYi5oKTsgLy8gY3JvcCB6b29tXG5cbiAgICAgICAgem9vbSA9IHpvb20gPiB0aGlzLl9wcml2YXRlLm1heFpvb20gPyB0aGlzLl9wcml2YXRlLm1heFpvb20gOiB6b29tO1xuICAgICAgICB6b29tID0gem9vbSA8IHRoaXMuX3ByaXZhdGUubWluWm9vbSA/IHRoaXMuX3ByaXZhdGUubWluWm9vbSA6IHpvb207XG4gICAgICAgIHZhciBwYW4gPSB7XG4gICAgICAgICAgLy8gbm93IHBhbiB0byBtaWRkbGVcbiAgICAgICAgICB4OiAodyAtIHpvb20gKiAoYmIueDEgKyBiYi54MikpIC8gMixcbiAgICAgICAgICB5OiAoaCAtIHpvb20gKiAoYmIueTEgKyBiYi55MikpIC8gMlxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHpvb206IHpvb20sXG4gICAgICAgICAgcGFuOiBwYW5cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgem9vbVJhbmdlOiBmdW5jdGlvbiB6b29tUmFuZ2UobWluLCBtYXgpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG5cbiAgICAgIGlmIChtYXggPT0gbnVsbCkge1xuICAgICAgICB2YXIgb3B0cyA9IG1pbjtcbiAgICAgICAgbWluID0gb3B0cy5taW47XG4gICAgICAgIG1heCA9IG9wdHMubWF4O1xuICAgICAgfVxuXG4gICAgICBpZiAobnVtYmVyJDEobWluKSAmJiBudW1iZXIkMShtYXgpICYmIG1pbiA8PSBtYXgpIHtcbiAgICAgICAgX3AubWluWm9vbSA9IG1pbjtcbiAgICAgICAgX3AubWF4Wm9vbSA9IG1heDtcbiAgICAgIH0gZWxzZSBpZiAobnVtYmVyJDEobWluKSAmJiBtYXggPT09IHVuZGVmaW5lZCAmJiBtaW4gPD0gX3AubWF4Wm9vbSkge1xuICAgICAgICBfcC5taW5ab29tID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChudW1iZXIkMShtYXgpICYmIG1pbiA9PT0gdW5kZWZpbmVkICYmIG1heCA+PSBfcC5taW5ab29tKSB7XG4gICAgICAgIF9wLm1heFpvb20gPSBtYXg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgbWluWm9vbTogZnVuY3Rpb24gbWluWm9vbSh6b29tKSB7XG4gICAgICBpZiAoem9vbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLm1pblpvb207XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy56b29tUmFuZ2Uoe1xuICAgICAgICAgIG1pbjogem9vbVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG1heFpvb206IGZ1bmN0aW9uIG1heFpvb20oem9vbSkge1xuICAgICAgaWYgKHpvb20gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tYXhab29tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuem9vbVJhbmdlKHtcbiAgICAgICAgICBtYXg6IHpvb21cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXRab29tZWRWaWV3cG9ydDogZnVuY3Rpb24gZ2V0Wm9vbWVkVmlld3BvcnQocGFyYW1zKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgdmFyIGN1cnJlbnRQYW4gPSBfcC5wYW47XG4gICAgICB2YXIgY3VycmVudFpvb20gPSBfcC56b29tO1xuICAgICAgdmFyIHBvczsgLy8gaW4gcmVuZGVyZWQgcHhcblxuICAgICAgdmFyIHpvb207XG4gICAgICB2YXIgYmFpbCA9IGZhbHNlO1xuXG4gICAgICBpZiAoIV9wLnpvb21pbmdFbmFibGVkKSB7XG4gICAgICAgIC8vIHpvb21pbmcgZGlzYWJsZWRcbiAgICAgICAgYmFpbCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChudW1iZXIkMShwYXJhbXMpKSB7XG4gICAgICAgIC8vIHRoZW4gc2V0IHRoZSB6b29tXG4gICAgICAgIHpvb20gPSBwYXJhbXM7XG4gICAgICB9IGVsc2UgaWYgKHBsYWluT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgICAgLy8gdGhlbiB6b29tIGFib3V0IGEgcG9pbnRcbiAgICAgICAgem9vbSA9IHBhcmFtcy5sZXZlbDtcblxuICAgICAgICBpZiAocGFyYW1zLnBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBwb3MgPSBtb2RlbFRvUmVuZGVyZWRQb3NpdGlvbihwYXJhbXMucG9zaXRpb24sIGN1cnJlbnRab29tLCBjdXJyZW50UGFuKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVuZGVyZWRQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgcG9zID0gcGFyYW1zLnJlbmRlcmVkUG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zICE9IG51bGwgJiYgIV9wLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgICAgLy8gcGFubmluZyBkaXNhYmxlZFxuICAgICAgICAgIGJhaWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIGNyb3Agem9vbVxuXG5cbiAgICAgIHpvb20gPSB6b29tID4gX3AubWF4Wm9vbSA/IF9wLm1heFpvb20gOiB6b29tO1xuICAgICAgem9vbSA9IHpvb20gPCBfcC5taW5ab29tID8gX3AubWluWm9vbSA6IHpvb207IC8vIGNhbid0IHpvb20gd2l0aCBpbnZhbGlkIHBhcmFtc1xuXG4gICAgICBpZiAoYmFpbCB8fCAhbnVtYmVyJDEoem9vbSkgfHwgem9vbSA9PT0gY3VycmVudFpvb20gfHwgcG9zICE9IG51bGwgJiYgKCFudW1iZXIkMShwb3MueCkgfHwgIW51bWJlciQxKHBvcy55KSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3MgIT0gbnVsbCkge1xuICAgICAgICAvLyBzZXQgem9vbSBhYm91dCBwb3NpdGlvblxuICAgICAgICB2YXIgcGFuMSA9IGN1cnJlbnRQYW47XG4gICAgICAgIHZhciB6b29tMSA9IGN1cnJlbnRab29tO1xuICAgICAgICB2YXIgem9vbTIgPSB6b29tO1xuICAgICAgICB2YXIgcGFuMiA9IHtcbiAgICAgICAgICB4OiAtem9vbTIgLyB6b29tMSAqIChwb3MueCAtIHBhbjEueCkgKyBwb3MueCxcbiAgICAgICAgICB5OiAtem9vbTIgLyB6b29tMSAqIChwb3MueSAtIHBhbjEueSkgKyBwb3MueVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHpvb21lZDogdHJ1ZSxcbiAgICAgICAgICBwYW5uZWQ6IHRydWUsXG4gICAgICAgICAgem9vbTogem9vbTIsXG4gICAgICAgICAgcGFuOiBwYW4yXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBqdXN0IHNldCB0aGUgem9vbVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHpvb21lZDogdHJ1ZSxcbiAgICAgICAgICBwYW5uZWQ6IGZhbHNlLFxuICAgICAgICAgIHpvb206IHpvb20sXG4gICAgICAgICAgcGFuOiBjdXJyZW50UGFuXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcbiAgICB6b29tOiBmdW5jdGlvbiB6b29tKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGdldFxuICAgICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS56b29tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc2V0XG4gICAgICAgIHZhciB2cCA9IHRoaXMuZ2V0Wm9vbWVkVmlld3BvcnQocGFyYW1zKTtcbiAgICAgICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZTtcblxuICAgICAgICBpZiAodnAgPT0gbnVsbCB8fCAhdnAuem9vbWVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICBfcC56b29tID0gdnAuem9vbTtcblxuICAgICAgICBpZiAodnAucGFubmVkKSB7XG4gICAgICAgICAgX3AucGFuLnggPSB2cC5wYW4ueDtcbiAgICAgICAgICBfcC5wYW4ueSA9IHZwLnBhbi55O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbWl0KCd6b29tJyArICh2cC5wYW5uZWQgPyAnIHBhbicgOiAnJykgKyAnIHZpZXdwb3J0Jyk7XG4gICAgICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICAgIH1cbiAgICB9LFxuICAgIHZpZXdwb3J0OiBmdW5jdGlvbiB2aWV3cG9ydChvcHRzKSB7XG4gICAgICB2YXIgX3AgPSB0aGlzLl9wcml2YXRlO1xuICAgICAgdmFyIHpvb21EZWZkID0gdHJ1ZTtcbiAgICAgIHZhciBwYW5EZWZkID0gdHJ1ZTtcbiAgICAgIHZhciBldmVudHMgPSBbXTsgLy8gdG8gdHJpZ2dlclxuXG4gICAgICB2YXIgem9vbUZhaWxlZCA9IGZhbHNlO1xuICAgICAgdmFyIHBhbkZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICBpZiAoIW9wdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGlmICghbnVtYmVyJDEob3B0cy56b29tKSkge1xuICAgICAgICB6b29tRGVmZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXBsYWluT2JqZWN0KG9wdHMucGFuKSkge1xuICAgICAgICBwYW5EZWZkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghem9vbURlZmQgJiYgIXBhbkRlZmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGlmICh6b29tRGVmZCkge1xuICAgICAgICB2YXIgeiA9IG9wdHMuem9vbTtcblxuICAgICAgICBpZiAoeiA8IF9wLm1pblpvb20gfHwgeiA+IF9wLm1heFpvb20gfHwgIV9wLnpvb21pbmdFbmFibGVkKSB7XG4gICAgICAgICAgem9vbUZhaWxlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3Auem9vbSA9IHo7XG4gICAgICAgICAgZXZlbnRzLnB1c2goJ3pvb20nKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFuRGVmZCAmJiAoIXpvb21GYWlsZWQgfHwgIW9wdHMuY2FuY2VsT25GYWlsZWRab29tKSAmJiBfcC5wYW5uaW5nRW5hYmxlZCkge1xuICAgICAgICB2YXIgcCA9IG9wdHMucGFuO1xuXG4gICAgICAgIGlmIChudW1iZXIkMShwLngpKSB7XG4gICAgICAgICAgX3AucGFuLnggPSBwLng7XG4gICAgICAgICAgcGFuRmFpbGVkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobnVtYmVyJDEocC55KSkge1xuICAgICAgICAgIF9wLnBhbi55ID0gcC55O1xuICAgICAgICAgIHBhbkZhaWxlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYW5GYWlsZWQpIHtcbiAgICAgICAgICBldmVudHMucHVzaCgncGFuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV2ZW50cy5wdXNoKCd2aWV3cG9ydCcpO1xuICAgICAgICB0aGlzLmVtaXQoZXZlbnRzLmpvaW4oJyAnKSk7XG4gICAgICAgIHRoaXMubm90aWZ5KCd2aWV3cG9ydCcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgICB9LFxuICAgIGNlbnRlcjogZnVuY3Rpb24gY2VudGVyKGVsZW1lbnRzKSB7XG4gICAgICB2YXIgcGFuID0gdGhpcy5nZXRDZW50ZXJQYW4oZWxlbWVudHMpO1xuXG4gICAgICBpZiAocGFuKSB7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUucGFuID0gcGFuO1xuICAgICAgICB0aGlzLmVtaXQoJ3BhbiB2aWV3cG9ydCcpO1xuICAgICAgICB0aGlzLm5vdGlmeSgndmlld3BvcnQnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfSxcbiAgICBnZXRDZW50ZXJQYW46IGZ1bmN0aW9uIGdldENlbnRlclBhbihlbGVtZW50cywgem9vbSkge1xuICAgICAgaWYgKCF0aGlzLl9wcml2YXRlLnBhbm5pbmdFbmFibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0cmluZyhlbGVtZW50cykpIHtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gZWxlbWVudHM7XG4gICAgICAgIGVsZW1lbnRzID0gdGhpcy5tdXRhYmxlRWxlbWVudHMoKS5maWx0ZXIoc2VsZWN0b3IpO1xuICAgICAgfSBlbHNlIGlmICghZWxlbWVudE9yQ29sbGVjdGlvbihlbGVtZW50cykpIHtcbiAgICAgICAgZWxlbWVudHMgPSB0aGlzLm11dGFibGVFbGVtZW50cygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gY2FuJ3QgY2VudHJlIHBhbiB0byBub3RoaW5nXG5cblxuICAgICAgdmFyIGJiID0gZWxlbWVudHMuYm91bmRpbmdCb3goKTtcbiAgICAgIHZhciB3ID0gdGhpcy53aWR0aCgpO1xuICAgICAgdmFyIGggPSB0aGlzLmhlaWdodCgpO1xuICAgICAgem9vbSA9IHpvb20gPT09IHVuZGVmaW5lZCA/IHRoaXMuX3ByaXZhdGUuem9vbSA6IHpvb207XG4gICAgICB2YXIgcGFuID0ge1xuICAgICAgICAvLyBtaWRkbGVcbiAgICAgICAgeDogKHcgLSB6b29tICogKGJiLngxICsgYmIueDIpKSAvIDIsXG4gICAgICAgIHk6IChoIC0gem9vbSAqIChiYi55MSArIGJiLnkyKSkgLyAyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHBhbjtcbiAgICB9LFxuICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIGlmICghdGhpcy5fcHJpdmF0ZS5wYW5uaW5nRW5hYmxlZCB8fCAhdGhpcy5fcHJpdmF0ZS56b29taW5nRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy52aWV3cG9ydCh7XG4gICAgICAgIHBhbjoge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9LFxuICAgICAgICB6b29tOiAxXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgaW52YWxpZGF0ZVNpemU6IGZ1bmN0aW9uIGludmFsaWRhdGVTaXplKCkge1xuICAgICAgdGhpcy5fcHJpdmF0ZS5zaXplQ2FjaGUgPSBudWxsO1xuICAgIH0sXG4gICAgc2l6ZTogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHZhciBfcCA9IHRoaXMuX3ByaXZhdGU7XG4gICAgICB2YXIgY29udGFpbmVyID0gX3AuY29udGFpbmVyO1xuICAgICAgdmFyIGN5ID0gdGhpcztcbiAgICAgIHJldHVybiBfcC5zaXplQ2FjaGUgPSBfcC5zaXplQ2FjaGUgfHwgKGNvbnRhaW5lciA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN0eWxlID0gY3kud2luZG93KCkuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuXG4gICAgICAgIHZhciB2YWwgPSBmdW5jdGlvbiB2YWwobmFtZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2lkdGg6IGNvbnRhaW5lci5jbGllbnRXaWR0aCAtIHZhbCgncGFkZGluZy1sZWZ0JykgLSB2YWwoJ3BhZGRpbmctcmlnaHQnKSxcbiAgICAgICAgICBoZWlnaHQ6IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgLSB2YWwoJ3BhZGRpbmctdG9wJykgLSB2YWwoJ3BhZGRpbmctYm90dG9tJylcbiAgICAgICAgfTtcbiAgICAgIH0oKSA6IHtcbiAgICAgICAgLy8gZmFsbGJhY2sgaWYgbm8gY29udGFpbmVyIChub3QgMCBiL2MgY2FuIGJlIHVzZWQgZm9yIGRpdmlkaW5nIGV0YylcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgICAgIGhlaWdodDogMVxuICAgICAgfSk7XG4gICAgfSxcbiAgICB3aWR0aDogZnVuY3Rpb24gd2lkdGgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zaXplKCkud2lkdGg7XG4gICAgfSxcbiAgICBoZWlnaHQ6IGZ1bmN0aW9uIGhlaWdodCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNpemUoKS5oZWlnaHQ7XG4gICAgfSxcbiAgICBleHRlbnQ6IGZ1bmN0aW9uIGV4dGVudCgpIHtcbiAgICAgIHZhciBwYW4gPSB0aGlzLl9wcml2YXRlLnBhbjtcbiAgICAgIHZhciB6b29tID0gdGhpcy5fcHJpdmF0ZS56b29tO1xuICAgICAgdmFyIHJiID0gdGhpcy5yZW5kZXJlZEV4dGVudCgpO1xuICAgICAgdmFyIGIgPSB7XG4gICAgICAgIHgxOiAocmIueDEgLSBwYW4ueCkgLyB6b29tLFxuICAgICAgICB4MjogKHJiLngyIC0gcGFuLngpIC8gem9vbSxcbiAgICAgICAgeTE6IChyYi55MSAtIHBhbi55KSAvIHpvb20sXG4gICAgICAgIHkyOiAocmIueTIgLSBwYW4ueSkgLyB6b29tXG4gICAgICB9O1xuICAgICAgYi53ID0gYi54MiAtIGIueDE7XG4gICAgICBiLmggPSBiLnkyIC0gYi55MTtcbiAgICAgIHJldHVybiBiO1xuICAgIH0sXG4gICAgcmVuZGVyZWRFeHRlbnQ6IGZ1bmN0aW9uIHJlbmRlcmVkRXh0ZW50KCkge1xuICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aCgpO1xuICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0KCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4MTogMCxcbiAgICAgICAgeTE6IDAsXG4gICAgICAgIHgyOiB3aWR0aCxcbiAgICAgICAgeTI6IGhlaWdodCxcbiAgICAgICAgdzogd2lkdGgsXG4gICAgICAgIGg6IGhlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIG11bHRpQ2xpY2tEZWJvdW5jZVRpbWU6IGZ1bmN0aW9uIG11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoX2ludCkge1xuICAgICAgaWYgKF9pbnQpIHRoaXMuX3ByaXZhdGUubXVsdGlDbGlja0RlYm91bmNlVGltZSA9IF9pbnQ7ZWxzZSByZXR1cm4gdGhpcy5fcHJpdmF0ZS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lO1xuICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgfVxuICB9OyAvLyBhbGlhc2VzXG5cbiAgY29yZWZuJDEuY2VudHJlID0gY29yZWZuJDEuY2VudGVyOyAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4gIGNvcmVmbiQxLmF1dG9sb2NrTm9kZXMgPSBjb3JlZm4kMS5hdXRvbG9jaztcbiAgY29yZWZuJDEuYXV0b3VuZ3JhYmlmeU5vZGVzID0gY29yZWZuJDEuYXV0b3VuZ3JhYmlmeTtcblxuICB2YXIgZm4gPSB7XG4gICAgZGF0YTogZGVmaW5lLmRhdGEoe1xuICAgICAgZmllbGQ6ICdkYXRhJyxcbiAgICAgIGJpbmRpbmdFdmVudDogJ2RhdGEnLFxuICAgICAgYWxsb3dCaW5kaW5nOiB0cnVlLFxuICAgICAgYWxsb3dTZXR0aW5nOiB0cnVlLFxuICAgICAgc2V0dGluZ0V2ZW50OiAnZGF0YScsXG4gICAgICBzZXR0aW5nVHJpZ2dlcnNFdmVudDogdHJ1ZSxcbiAgICAgIHRyaWdnZXJGbk5hbWU6ICd0cmlnZ2VyJyxcbiAgICAgIGFsbG93R2V0dGluZzogdHJ1ZSxcbiAgICAgIHVwZGF0ZVN0eWxlOiB0cnVlXG4gICAgfSksXG4gICAgcmVtb3ZlRGF0YTogZGVmaW5lLnJlbW92ZURhdGEoe1xuICAgICAgZmllbGQ6ICdkYXRhJyxcbiAgICAgIGV2ZW50OiAnZGF0YScsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICB0cmlnZ2VyRXZlbnQ6IHRydWUsXG4gICAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICAgIH0pLFxuICAgIHNjcmF0Y2g6IGRlZmluZS5kYXRhKHtcbiAgICAgIGZpZWxkOiAnc2NyYXRjaCcsXG4gICAgICBiaW5kaW5nRXZlbnQ6ICdzY3JhdGNoJyxcbiAgICAgIGFsbG93QmluZGluZzogdHJ1ZSxcbiAgICAgIGFsbG93U2V0dGluZzogdHJ1ZSxcbiAgICAgIHNldHRpbmdFdmVudDogJ3NjcmF0Y2gnLFxuICAgICAgc2V0dGluZ1RyaWdnZXJzRXZlbnQ6IHRydWUsXG4gICAgICB0cmlnZ2VyRm5OYW1lOiAndHJpZ2dlcicsXG4gICAgICBhbGxvd0dldHRpbmc6IHRydWUsXG4gICAgICB1cGRhdGVTdHlsZTogdHJ1ZVxuICAgIH0pLFxuICAgIHJlbW92ZVNjcmF0Y2g6IGRlZmluZS5yZW1vdmVEYXRhKHtcbiAgICAgIGZpZWxkOiAnc2NyYXRjaCcsXG4gICAgICBldmVudDogJ3NjcmF0Y2gnLFxuICAgICAgdHJpZ2dlckZuTmFtZTogJ3RyaWdnZXInLFxuICAgICAgdHJpZ2dlckV2ZW50OiB0cnVlLFxuICAgICAgdXBkYXRlU3R5bGU6IHRydWVcbiAgICB9KVxuICB9OyAvLyBhbGlhc2VzXG5cbiAgZm4uYXR0ciA9IGZuLmRhdGE7XG4gIGZuLnJlbW92ZUF0dHIgPSBmbi5yZW1vdmVEYXRhO1xuXG4gIHZhciBDb3JlID0gZnVuY3Rpb24gQ29yZShvcHRzKSB7XG4gICAgdmFyIGN5ID0gdGhpcztcbiAgICBvcHRzID0gZXh0ZW5kKHt9LCBvcHRzKTtcbiAgICB2YXIgY29udGFpbmVyID0gb3B0cy5jb250YWluZXI7IC8vIGFsbG93IGZvciBwYXNzaW5nIGEgd3JhcHBlZCBqcXVlcnkgb2JqZWN0XG4gICAgLy8gZS5nLiBjeXRvc2NhcGUoeyBjb250YWluZXI6ICQoJyNjeScpIH0pXG5cbiAgICBpZiAoY29udGFpbmVyICYmICFodG1sRWxlbWVudChjb250YWluZXIpICYmIGh0bWxFbGVtZW50KGNvbnRhaW5lclswXSkpIHtcbiAgICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lclswXTtcbiAgICB9XG5cbiAgICB2YXIgcmVnID0gY29udGFpbmVyID8gY29udGFpbmVyLl9jeXJlZyA6IG51bGw7IC8vIGUuZy4gYWxyZWFkeSByZWdpc3RlcmVkIHNvbWUgaW5mbyAoZS5nLiByZWFkaWVzKSB2aWEganF1ZXJ5XG5cbiAgICByZWcgPSByZWcgfHwge307XG5cbiAgICBpZiAocmVnICYmIHJlZy5jeSkge1xuICAgICAgcmVnLmN5LmRlc3Ryb3koKTtcbiAgICAgIHJlZyA9IHt9OyAvLyBvbGQgaW5zdGFuY2UgPT4gcmVwbGFjZSByZWcgY29tcGxldGVseVxuICAgIH1cblxuICAgIHZhciByZWFkaWVzID0gcmVnLnJlYWRpZXMgPSByZWcucmVhZGllcyB8fCBbXTtcblxuICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgIGNvbnRhaW5lci5fY3lyZWcgPSByZWc7XG4gICAgfSAvLyBtYWtlIHN1cmUgY29udGFpbmVyIGFzc29jJ2QgcmVnIHBvaW50cyB0byB0aGlzIGN5XG5cblxuICAgIHJlZy5jeSA9IGN5O1xuICAgIHZhciBoZWFkID0gX3dpbmRvdyAhPT0gdW5kZWZpbmVkICYmIGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkICYmICFvcHRzLmhlYWRsZXNzO1xuICAgIHZhciBvcHRpb25zID0gb3B0cztcbiAgICBvcHRpb25zLmxheW91dCA9IGV4dGVuZCh7XG4gICAgICBuYW1lOiBoZWFkID8gJ2dyaWQnIDogJ251bGwnXG4gICAgfSwgb3B0aW9ucy5sYXlvdXQpO1xuICAgIG9wdGlvbnMucmVuZGVyZXIgPSBleHRlbmQoe1xuICAgICAgbmFtZTogaGVhZCA/ICdjYW52YXMnIDogJ251bGwnXG4gICAgfSwgb3B0aW9ucy5yZW5kZXJlcik7XG5cbiAgICB2YXIgZGVmVmFsID0gZnVuY3Rpb24gZGVmVmFsKGRlZiwgdmFsLCBhbHRWYWwpIHtcbiAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgfSBlbHNlIGlmIChhbHRWYWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYWx0VmFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIF9wID0gdGhpcy5fcHJpdmF0ZSA9IHtcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgLy8gaHRtbCBkb20gZWxlIGNvbnRhaW5lclxuICAgICAgcmVhZHk6IGZhbHNlLFxuICAgICAgLy8gd2hldGhlciByZWFkeSBoYXMgYmVlbiB0cmlnZ2VyZWRcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAvLyBjYWNoZWQgb3B0aW9uc1xuICAgICAgZWxlbWVudHM6IG5ldyBDb2xsZWN0aW9uKHRoaXMpLFxuICAgICAgLy8gZWxlbWVudHMgaW4gdGhlIGdyYXBoXG4gICAgICBsaXN0ZW5lcnM6IFtdLFxuICAgICAgLy8gbGlzdCBvZiBsaXN0ZW5lcnNcbiAgICAgIGFuaUVsZXM6IG5ldyBDb2xsZWN0aW9uKHRoaXMpLFxuICAgICAgLy8gZWxlbWVudHMgYmVpbmcgYW5pbWF0ZWRcbiAgICAgIGRhdGE6IG9wdGlvbnMuZGF0YSB8fCB7fSxcbiAgICAgIC8vIGRhdGEgZm9yIHRoZSBjb3JlXG4gICAgICBzY3JhdGNoOiB7fSxcbiAgICAgIC8vIHNjcmF0Y2ggb2JqZWN0IGZvciBjb3JlXG4gICAgICBsYXlvdXQ6IG51bGwsXG4gICAgICByZW5kZXJlcjogbnVsbCxcbiAgICAgIGRlc3Ryb3llZDogZmFsc2UsXG4gICAgICAvLyB3aGV0aGVyIGRlc3Ryb3kgd2FzIGNhbGxlZFxuICAgICAgbm90aWZpY2F0aW9uc0VuYWJsZWQ6IHRydWUsXG4gICAgICAvLyB3aGV0aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gdGhlIHJlbmRlcmVyXG4gICAgICBtaW5ab29tOiAxZS01MCxcbiAgICAgIG1heFpvb206IDFlNTAsXG4gICAgICB6b29taW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMuem9vbWluZ0VuYWJsZWQpLFxuICAgICAgdXNlclpvb21pbmdFbmFibGVkOiBkZWZWYWwodHJ1ZSwgb3B0aW9ucy51c2VyWm9vbWluZ0VuYWJsZWQpLFxuICAgICAgcGFubmluZ0VuYWJsZWQ6IGRlZlZhbCh0cnVlLCBvcHRpb25zLnBhbm5pbmdFbmFibGVkKSxcbiAgICAgIHVzZXJQYW5uaW5nRW5hYmxlZDogZGVmVmFsKHRydWUsIG9wdGlvbnMudXNlclBhbm5pbmdFbmFibGVkKSxcbiAgICAgIGJveFNlbGVjdGlvbkVuYWJsZWQ6IGRlZlZhbCh0cnVlLCBvcHRpb25zLmJveFNlbGVjdGlvbkVuYWJsZWQpLFxuICAgICAgYXV0b2xvY2s6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvbG9jaywgb3B0aW9ucy5hdXRvbG9ja05vZGVzKSxcbiAgICAgIGF1dG91bmdyYWJpZnk6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvdW5ncmFiaWZ5LCBvcHRpb25zLmF1dG91bmdyYWJpZnlOb2RlcyksXG4gICAgICBhdXRvdW5zZWxlY3RpZnk6IGRlZlZhbChmYWxzZSwgb3B0aW9ucy5hdXRvdW5zZWxlY3RpZnkpLFxuICAgICAgc3R5bGVFbmFibGVkOiBvcHRpb25zLnN0eWxlRW5hYmxlZCA9PT0gdW5kZWZpbmVkID8gaGVhZCA6IG9wdGlvbnMuc3R5bGVFbmFibGVkLFxuICAgICAgem9vbTogbnVtYmVyJDEob3B0aW9ucy56b29tKSA/IG9wdGlvbnMuem9vbSA6IDEsXG4gICAgICBwYW46IHtcbiAgICAgICAgeDogcGxhaW5PYmplY3Qob3B0aW9ucy5wYW4pICYmIG51bWJlciQxKG9wdGlvbnMucGFuLngpID8gb3B0aW9ucy5wYW4ueCA6IDAsXG4gICAgICAgIHk6IHBsYWluT2JqZWN0KG9wdGlvbnMucGFuKSAmJiBudW1iZXIkMShvcHRpb25zLnBhbi55KSA/IG9wdGlvbnMucGFuLnkgOiAwXG4gICAgICB9LFxuICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgIC8vIG9iamVjdCBmb3IgY3VycmVudGx5LXJ1bm5pbmcgYW5pbWF0aW9uc1xuICAgICAgICBjdXJyZW50OiBbXSxcbiAgICAgICAgcXVldWU6IFtdXG4gICAgICB9LFxuICAgICAgaGFzQ29tcG91bmROb2RlczogZmFsc2UsXG4gICAgICBtdWx0aUNsaWNrRGVib3VuY2VUaW1lOiBkZWZWYWwoMjUwLCBvcHRpb25zLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUpXG4gICAgfTtcblxuICAgIHRoaXMuY3JlYXRlRW1pdHRlcigpOyAvLyBzZXQgc2VsZWN0aW9uIHR5cGVcblxuICAgIHRoaXMuc2VsZWN0aW9uVHlwZShvcHRpb25zLnNlbGVjdGlvblR5cGUpOyAvLyBpbml0IHpvb20gYm91bmRzXG5cbiAgICB0aGlzLnpvb21SYW5nZSh7XG4gICAgICBtaW46IG9wdGlvbnMubWluWm9vbSxcbiAgICAgIG1heDogb3B0aW9ucy5tYXhab29tXG4gICAgfSk7XG5cbiAgICB2YXIgbG9hZEV4dERhdGEgPSBmdW5jdGlvbiBsb2FkRXh0RGF0YShleHREYXRhLCBuZXh0KSB7XG4gICAgICB2YXIgYW55SXNQcm9taXNlID0gZXh0RGF0YS5zb21lKHByb21pc2UpO1xuXG4gICAgICBpZiAoYW55SXNQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKGV4dERhdGEpLnRoZW4obmV4dCk7IC8vIGxvYWQgYWxsIGRhdGEgYXN5bmNocm9ub3VzbHksIHRoZW4gZXhlYyByZXN0IG9mIGluaXRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQoZXh0RGF0YSk7IC8vIGV4ZWMgc3luY2hyb25vdXNseSBmb3IgY29udmVuaWVuY2VcbiAgICAgIH1cbiAgICB9OyAvLyBzdGFydCB3aXRoIHRoZSBkZWZhdWx0IHN0eWxlc2hlZXQgc28gd2UgaGF2ZSBzb21ldGhpbmcgYmVmb3JlIGxvYWRpbmcgYW4gZXh0ZXJuYWwgc3R5bGVzaGVldFxuXG5cbiAgICBpZiAoX3Auc3R5bGVFbmFibGVkKSB7XG4gICAgICBjeS5zZXRTdHlsZShbXSk7XG4gICAgfSAvLyBjcmVhdGUgdGhlIHJlbmRlcmVyXG5cblxuICAgIHZhciByZW5kZXJlck9wdGlvbnMgPSBleHRlbmQoe30sIG9wdGlvbnMsIG9wdGlvbnMucmVuZGVyZXIpOyAvLyBhbGxvdyByZW5kZXJpbmcgaGludHMgaW4gdG9wIGxldmVsIG9wdGlvbnNcblxuICAgIGN5LmluaXRSZW5kZXJlcihyZW5kZXJlck9wdGlvbnMpO1xuXG4gICAgdmFyIHNldEVsZXNBbmRMYXlvdXQgPSBmdW5jdGlvbiBzZXRFbGVzQW5kTGF5b3V0KGVsZW1lbnRzLCBvbmxvYWQsIG9uZG9uZSkge1xuICAgICAgY3kubm90aWZpY2F0aW9ucyhmYWxzZSk7IC8vIHJlbW92ZSBvbGQgZWxlbWVudHNcblxuICAgICAgdmFyIG9sZEVsZXMgPSBjeS5tdXRhYmxlRWxlbWVudHMoKTtcblxuICAgICAgaWYgKG9sZEVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBvbGRFbGVzLnJlbW92ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudHMgIT0gbnVsbCkge1xuICAgICAgICBpZiAocGxhaW5PYmplY3QoZWxlbWVudHMpIHx8IGFycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICAgIGN5LmFkZChlbGVtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY3kub25lKCdsYXlvdXRyZWFkeScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGN5Lm5vdGlmaWNhdGlvbnModHJ1ZSk7XG4gICAgICAgIGN5LmVtaXQoZSk7IC8vIHdlIG1pc3NlZCB0aGlzIGV2ZW50IGJ5IHR1cm5pbmcgbm90aWZpY2F0aW9ucyBvZmYsIHNvIHBhc3MgaXQgb25cblxuICAgICAgICBjeS5vbmUoJ2xvYWQnLCBvbmxvYWQpO1xuICAgICAgICBjeS5lbWl0QW5kTm90aWZ5KCdsb2FkJyk7XG4gICAgICB9KS5vbmUoJ2xheW91dHN0b3AnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGN5Lm9uZSgnZG9uZScsIG9uZG9uZSk7XG4gICAgICAgIGN5LmVtaXQoJ2RvbmUnKTtcbiAgICAgIH0pO1xuICAgICAgdmFyIGxheW91dE9wdHMgPSBleHRlbmQoe30sIGN5Ll9wcml2YXRlLm9wdGlvbnMubGF5b3V0KTtcbiAgICAgIGxheW91dE9wdHMuZWxlcyA9IGN5LmVsZW1lbnRzKCk7XG4gICAgICBjeS5sYXlvdXQobGF5b3V0T3B0cykucnVuKCk7XG4gICAgfTtcblxuICAgIGxvYWRFeHREYXRhKFtvcHRpb25zLnN0eWxlLCBvcHRpb25zLmVsZW1lbnRzXSwgZnVuY3Rpb24gKHRoZW5zKSB7XG4gICAgICB2YXIgaW5pdFN0eWxlID0gdGhlbnNbMF07XG4gICAgICB2YXIgaW5pdEVsZXMgPSB0aGVuc1sxXTsgLy8gaW5pdCBzdHlsZVxuXG4gICAgICBpZiAoX3Auc3R5bGVFbmFibGVkKSB7XG4gICAgICAgIGN5LnN0eWxlKCkuYXBwZW5kKGluaXRTdHlsZSk7XG4gICAgICB9IC8vIGluaXRpYWwgbG9hZFxuXG5cbiAgICAgIHNldEVsZXNBbmRMYXlvdXQoaW5pdEVsZXMsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gb25yZWFkeVxuICAgICAgICBjeS5zdGFydEFuaW1hdGlvbkxvb3AoKTtcbiAgICAgICAgX3AucmVhZHkgPSB0cnVlOyAvLyBpZiBhIHJlYWR5IGNhbGxiYWNrIGlzIHNwZWNpZmllZCBhcyBhbiBvcHRpb24sIHRoZSBiaW5kIGl0XG5cbiAgICAgICAgaWYgKGZuJDYob3B0aW9ucy5yZWFkeSkpIHtcbiAgICAgICAgICBjeS5vbigncmVhZHknLCBvcHRpb25zLnJlYWR5KTtcbiAgICAgICAgfSAvLyBiaW5kIGFsbCB0aGUgcmVhZHkgaGFuZGxlcnMgcmVnaXN0ZXJlZCBiZWZvcmUgY3JlYXRpbmcgdGhpcyBpbnN0YW5jZVxuXG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWFkaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZuID0gcmVhZGllc1tpXTtcbiAgICAgICAgICBjeS5vbigncmVhZHknLCBmbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVnKSB7XG4gICAgICAgICAgcmVnLnJlYWRpZXMgPSBbXTtcbiAgICAgICAgfSAvLyBjbGVhciBiL2Mgd2UndmUgYm91bmQgdGhlbSBhbGwgYW5kIGRvbid0IHdhbnQgdG8ga2VlcCBpdCBhcm91bmQgaW4gY2FzZSBhIG5ldyBjb3JlIHVzZXMgdGhlIHNhbWUgZGl2IGV0Y1xuXG5cbiAgICAgICAgY3kuZW1pdCgncmVhZHknKTtcbiAgICAgIH0sIG9wdGlvbnMuZG9uZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIGNvcmVmbiA9IENvcmUucHJvdG90eXBlOyAvLyBzaG9ydCBhbGlhc1xuXG4gIGV4dGVuZChjb3JlZm4sIHtcbiAgICBpbnN0YW5jZVN0cmluZzogZnVuY3Rpb24gaW5zdGFuY2VTdHJpbmcoKSB7XG4gICAgICByZXR1cm4gJ2NvcmUnO1xuICAgIH0sXG4gICAgaXNSZWFkeTogZnVuY3Rpb24gaXNSZWFkeSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLnJlYWR5O1xuICAgIH0sXG4gICAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5kZXN0cm95ZWQ7XG4gICAgfSxcbiAgICByZWFkeTogZnVuY3Rpb24gcmVhZHkoZm4pIHtcbiAgICAgIGlmICh0aGlzLmlzUmVhZHkoKSkge1xuICAgICAgICB0aGlzLmVtaXR0ZXIoKS5lbWl0KCdyZWFkeScsIFtdLCBmbik7IC8vIGp1c3QgY2FsbHMgZm4gYXMgdGhvdWdoIHRyaWdnZXJlZCB2aWEgcmVhZHkgZXZlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub24oJ3JlYWR5JywgZm4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuICAgICAgaWYgKGN5LmRlc3Ryb3llZCgpKSByZXR1cm47XG4gICAgICBjeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuICAgICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgICB0aGlzLmVtaXQoJ2Rlc3Ryb3knKTtcbiAgICAgIGN5Ll9wcml2YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgICByZXR1cm4gY3k7XG4gICAgfSxcbiAgICBoYXNFbGVtZW50V2l0aElkOiBmdW5jdGlvbiBoYXNFbGVtZW50V2l0aElkKGlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5lbGVtZW50cy5oYXNFbGVtZW50V2l0aElkKGlkKTtcbiAgICB9LFxuICAgIGdldEVsZW1lbnRCeUlkOiBmdW5jdGlvbiBnZXRFbGVtZW50QnlJZChpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIH0sXG4gICAgaGFzQ29tcG91bmROb2RlczogZnVuY3Rpb24gaGFzQ29tcG91bmROb2RlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmhhc0NvbXBvdW5kTm9kZXM7XG4gICAgfSxcbiAgICBoZWFkbGVzczogZnVuY3Rpb24gaGVhZGxlc3MoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJpdmF0ZS5yZW5kZXJlci5pc0hlYWRsZXNzKCk7XG4gICAgfSxcbiAgICBzdHlsZUVuYWJsZWQ6IGZ1bmN0aW9uIHN0eWxlRW5hYmxlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLnN0eWxlRW5hYmxlZDtcbiAgICB9LFxuICAgIGFkZFRvUG9vbDogZnVuY3Rpb24gYWRkVG9Qb29sKGVsZXMpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMubWVyZ2UoZWxlcyk7XG5cbiAgICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICAgIH0sXG4gICAgcmVtb3ZlRnJvbVBvb2w6IGZ1bmN0aW9uIHJlbW92ZUZyb21Qb29sKGVsZXMpIHtcbiAgICAgIHRoaXMuX3ByaXZhdGUuZWxlbWVudHMudW5tZXJnZShlbGVzKTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBjb250YWluZXI6IGZ1bmN0aW9uIGNvbnRhaW5lcigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmNvbnRhaW5lciB8fCBudWxsO1xuICAgIH0sXG4gICAgd2luZG93OiBmdW5jdGlvbiB3aW5kb3coKSB7XG4gICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5fcHJpdmF0ZS5jb250YWluZXI7XG4gICAgICBpZiAoY29udGFpbmVyID09IG51bGwpIHJldHVybiBfd2luZG93O1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQgPSB0aGlzLl9wcml2YXRlLmNvbnRhaW5lci5vd25lckRvY3VtZW50O1xuXG4gICAgICBpZiAob3duZXJEb2N1bWVudCA9PT0gdW5kZWZpbmVkIHx8IG93bmVyRG9jdW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gX3dpbmRvdztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgX3dpbmRvdztcbiAgICB9LFxuICAgIG1vdW50OiBmdW5jdGlvbiBtb3VudChjb250YWluZXIpIHtcbiAgICAgIGlmIChjb250YWluZXIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBjeSA9IHRoaXM7XG4gICAgICB2YXIgX3AgPSBjeS5fcHJpdmF0ZTtcbiAgICAgIHZhciBvcHRpb25zID0gX3Aub3B0aW9ucztcblxuICAgICAgaWYgKCFodG1sRWxlbWVudChjb250YWluZXIpICYmIGh0bWxFbGVtZW50KGNvbnRhaW5lclswXSkpIHtcbiAgICAgICAgY29udGFpbmVyID0gY29udGFpbmVyWzBdO1xuICAgICAgfVxuXG4gICAgICBjeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuICAgICAgY3kuZGVzdHJveVJlbmRlcmVyKCk7XG4gICAgICBfcC5jb250YWluZXIgPSBjb250YWluZXI7XG4gICAgICBfcC5zdHlsZUVuYWJsZWQgPSB0cnVlO1xuICAgICAgY3kuaW52YWxpZGF0ZVNpemUoKTtcbiAgICAgIGN5LmluaXRSZW5kZXJlcihleHRlbmQoe30sIG9wdGlvbnMsIG9wdGlvbnMucmVuZGVyZXIsIHtcbiAgICAgICAgLy8gYWxsb3cgY3VzdG9tIHJlbmRlcmVyIG5hbWUgdG8gYmUgcmUtdXNlZCwgb3RoZXJ3aXNlIHVzZSBjYW52YXNcbiAgICAgICAgbmFtZTogb3B0aW9ucy5yZW5kZXJlci5uYW1lID09PSAnbnVsbCcgPyAnY2FudmFzJyA6IG9wdGlvbnMucmVuZGVyZXIubmFtZVxuICAgICAgfSkpO1xuICAgICAgY3kuc3RhcnRBbmltYXRpb25Mb29wKCk7XG4gICAgICBjeS5zdHlsZShvcHRpb25zLnN0eWxlKTtcbiAgICAgIGN5LmVtaXQoJ21vdW50Jyk7XG4gICAgICByZXR1cm4gY3k7XG4gICAgfSxcbiAgICB1bm1vdW50OiBmdW5jdGlvbiB1bm1vdW50KCkge1xuICAgICAgdmFyIGN5ID0gdGhpcztcbiAgICAgIGN5LnN0b3BBbmltYXRpb25Mb29wKCk7XG4gICAgICBjeS5kZXN0cm95UmVuZGVyZXIoKTtcbiAgICAgIGN5LmluaXRSZW5kZXJlcih7XG4gICAgICAgIG5hbWU6ICdudWxsJ1xuICAgICAgfSk7XG4gICAgICBjeS5lbWl0KCd1bm1vdW50Jyk7XG4gICAgICByZXR1cm4gY3k7XG4gICAgfSxcbiAgICBvcHRpb25zOiBmdW5jdGlvbiBvcHRpb25zKCkge1xuICAgICAgcmV0dXJuIGNvcHkodGhpcy5fcHJpdmF0ZS5vcHRpb25zKTtcbiAgICB9LFxuICAgIGpzb246IGZ1bmN0aW9uIGpzb24ob2JqKSB7XG4gICAgICB2YXIgY3kgPSB0aGlzO1xuICAgICAgdmFyIF9wID0gY3kuX3ByaXZhdGU7XG4gICAgICB2YXIgZWxlcyA9IGN5Lm11dGFibGVFbGVtZW50cygpO1xuXG4gICAgICB2YXIgZ2V0RnJlc2hSZWYgPSBmdW5jdGlvbiBnZXRGcmVzaFJlZihlbGUpIHtcbiAgICAgICAgcmV0dXJuIGN5LmdldEVsZW1lbnRCeUlkKGVsZS5pZCgpKTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChwbGFpbk9iamVjdChvYmopKSB7XG4gICAgICAgIC8vIHNldFxuICAgICAgICBjeS5zdGFydEJhdGNoKCk7XG5cbiAgICAgICAgaWYgKG9iai5lbGVtZW50cykge1xuICAgICAgICAgIHZhciBpZEluSnNvbiA9IHt9O1xuXG4gICAgICAgICAgdmFyIHVwZGF0ZUVsZXMgPSBmdW5jdGlvbiB1cGRhdGVFbGVzKGpzb25zLCBncikge1xuICAgICAgICAgICAgdmFyIHRvQWRkID0gW107XG4gICAgICAgICAgICB2YXIgdG9Nb2QgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIganNvbiA9IGpzb25zW2ldO1xuXG4gICAgICAgICAgICAgIGlmICghanNvbi5kYXRhLmlkKSB7XG4gICAgICAgICAgICAgICAgd2FybignY3kuanNvbigpIGNhbm5vdCBoYW5kbGUgZWxlbWVudHMgd2l0aG91dCBhbiBJRCBhdHRyaWJ1dGUnKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHZhciBpZCA9ICcnICsganNvbi5kYXRhLmlkOyAvLyBpZCBtdXN0IGJlIHN0cmluZ1xuXG4gICAgICAgICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICAgIGlkSW5Kc29uW2lkXSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgaWYgKGVsZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBleGlzdGluZyBlbGVtZW50IHNob3VsZCBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgICAgdG9Nb2QucHVzaCh7XG4gICAgICAgICAgICAgICAgICBlbGU6IGVsZSxcbiAgICAgICAgICAgICAgICAgIGpzb246IGpzb25cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2hvdWxkIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgaWYgKGdyKSB7XG4gICAgICAgICAgICAgICAgICBqc29uLmdyb3VwID0gZ3I7XG4gICAgICAgICAgICAgICAgICB0b0FkZC5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0b0FkZC5wdXNoKGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjeS5hZGQodG9BZGQpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdG9Nb2QubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBfdG9Nb2QkX2kgPSB0b01vZFtfaV0sXG4gICAgICAgICAgICAgICAgICBfZWxlID0gX3RvTW9kJF9pLmVsZSxcbiAgICAgICAgICAgICAgICAgIF9qc29uID0gX3RvTW9kJF9pLmpzb247XG5cbiAgICAgICAgICAgICAgX2VsZS5qc29uKF9qc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGFycmF5KG9iai5lbGVtZW50cykpIHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnRzOiBbXVxuICAgICAgICAgICAgdXBkYXRlRWxlcyhvYmouZWxlbWVudHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlbGVtZW50czogeyBub2RlczogW10sIGVkZ2VzOiBbXSB9XG4gICAgICAgICAgICB2YXIgZ3JzID0gWydub2RlcycsICdlZGdlcyddO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgZ3IgPSBncnNbaV07XG4gICAgICAgICAgICAgIHZhciBlbGVtZW50cyA9IG9iai5lbGVtZW50c1tncl07XG5cbiAgICAgICAgICAgICAgaWYgKGFycmF5KGVsZW1lbnRzKSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVsZXMoZWxlbWVudHMsIGdyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBwYXJlbnRzVG9SZW1vdmUgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgZWxlcy5maWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgcmV0dXJuICFpZEluSnNvbltlbGUuaWQoKV07XG4gICAgICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICBpZiAoZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgICAgICAgcGFyZW50c1RvUmVtb3ZlLm1lcmdlKGVsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbGUucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7IC8vIHNvIHRoYXQgY2hpbGRyZW4gYXJlIG5vdCByZW1vdmVkIHcvcGFyZW50XG5cbiAgICAgICAgICBwYXJlbnRzVG9SZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmNoaWxkcmVuKCkubW92ZSh7XG4gICAgICAgICAgICAgIHBhcmVudDogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7IC8vIGludGVybWVkaWF0ZSBwYXJlbnRzIG1heSBiZSBtb3ZlZCBieSBwcmlvciBsaW5lLCBzbyBtYWtlIHN1cmUgd2UgcmVtb3ZlIGJ5IGZyZXNoIHJlZnNcblxuICAgICAgICAgIHBhcmVudHNUb1JlbW92ZS5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRGcmVzaFJlZihlbGUpLnJlbW92ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iai5zdHlsZSkge1xuICAgICAgICAgIGN5LnN0eWxlKG9iai5zdHlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqLnpvb20gIT0gbnVsbCAmJiBvYmouem9vbSAhPT0gX3Auem9vbSkge1xuICAgICAgICAgIGN5Lnpvb20ob2JqLnpvb20pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iai5wYW4pIHtcbiAgICAgICAgICBpZiAob2JqLnBhbi54ICE9PSBfcC5wYW4ueCB8fCBvYmoucGFuLnkgIT09IF9wLnBhbi55KSB7XG4gICAgICAgICAgICBjeS5wYW4ob2JqLnBhbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iai5kYXRhKSB7XG4gICAgICAgICAgY3kuZGF0YShvYmouZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZmllbGRzID0gWydtaW5ab29tJywgJ21heFpvb20nLCAnem9vbWluZ0VuYWJsZWQnLCAndXNlclpvb21pbmdFbmFibGVkJywgJ3Bhbm5pbmdFbmFibGVkJywgJ3VzZXJQYW5uaW5nRW5hYmxlZCcsICdib3hTZWxlY3Rpb25FbmFibGVkJywgJ2F1dG9sb2NrJywgJ2F1dG91bmdyYWJpZnknLCAnYXV0b3Vuc2VsZWN0aWZ5JywgJ211bHRpQ2xpY2tEZWJvdW5jZVRpbWUnXTtcblxuICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBmaWVsZHMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICAgIHZhciBmID0gZmllbGRzW19pMl07XG5cbiAgICAgICAgICBpZiAob2JqW2ZdICE9IG51bGwpIHtcbiAgICAgICAgICAgIGN5W2ZdKG9ialtmXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3kuZW5kQmF0Y2goKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBnZXRcbiAgICAgICAgdmFyIGZsYXQgPSAhIW9iajtcbiAgICAgICAgdmFyIGpzb24gPSB7fTtcblxuICAgICAgICBpZiAoZmxhdCkge1xuICAgICAgICAgIGpzb24uZWxlbWVudHMgPSB0aGlzLmVsZW1lbnRzKCkubWFwKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGUuanNvbigpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGpzb24uZWxlbWVudHMgPSB7fTtcbiAgICAgICAgICBlbGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgdmFyIGdyb3VwID0gZWxlLmdyb3VwKCk7XG5cbiAgICAgICAgICAgIGlmICghanNvbi5lbGVtZW50c1tncm91cF0pIHtcbiAgICAgICAgICAgICAganNvbi5lbGVtZW50c1tncm91cF0gPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAganNvbi5lbGVtZW50c1tncm91cF0ucHVzaChlbGUuanNvbigpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9wcml2YXRlLnN0eWxlRW5hYmxlZCkge1xuICAgICAgICAgIGpzb24uc3R5bGUgPSBjeS5zdHlsZSgpLmpzb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGpzb24uZGF0YSA9IGNvcHkoY3kuZGF0YSgpKTtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBfcC5vcHRpb25zO1xuICAgICAgICBqc29uLnpvb21pbmdFbmFibGVkID0gX3Auem9vbWluZ0VuYWJsZWQ7XG4gICAgICAgIGpzb24udXNlclpvb21pbmdFbmFibGVkID0gX3AudXNlclpvb21pbmdFbmFibGVkO1xuICAgICAgICBqc29uLnpvb20gPSBfcC56b29tO1xuICAgICAgICBqc29uLm1pblpvb20gPSBfcC5taW5ab29tO1xuICAgICAgICBqc29uLm1heFpvb20gPSBfcC5tYXhab29tO1xuICAgICAgICBqc29uLnBhbm5pbmdFbmFibGVkID0gX3AucGFubmluZ0VuYWJsZWQ7XG4gICAgICAgIGpzb24udXNlclBhbm5pbmdFbmFibGVkID0gX3AudXNlclBhbm5pbmdFbmFibGVkO1xuICAgICAgICBqc29uLnBhbiA9IGNvcHkoX3AucGFuKTtcbiAgICAgICAganNvbi5ib3hTZWxlY3Rpb25FbmFibGVkID0gX3AuYm94U2VsZWN0aW9uRW5hYmxlZDtcbiAgICAgICAganNvbi5yZW5kZXJlciA9IGNvcHkob3B0aW9ucy5yZW5kZXJlcik7XG4gICAgICAgIGpzb24uaGlkZUVkZ2VzT25WaWV3cG9ydCA9IG9wdGlvbnMuaGlkZUVkZ2VzT25WaWV3cG9ydDtcbiAgICAgICAganNvbi50ZXh0dXJlT25WaWV3cG9ydCA9IG9wdGlvbnMudGV4dHVyZU9uVmlld3BvcnQ7XG4gICAgICAgIGpzb24ud2hlZWxTZW5zaXRpdml0eSA9IG9wdGlvbnMud2hlZWxTZW5zaXRpdml0eTtcbiAgICAgICAganNvbi5tb3Rpb25CbHVyID0gb3B0aW9ucy5tb3Rpb25CbHVyO1xuICAgICAgICBqc29uLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUgPSBvcHRpb25zLm11bHRpQ2xpY2tEZWJvdW5jZVRpbWU7XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvcmVmbi4kaWQgPSBjb3JlZm4uZ2V0RWxlbWVudEJ5SWQ7XG4gIFtjb3JlZm4kOSwgY29yZWZuJDgsIGVsZXNmbiwgY29yZWZuJDcsIGNvcmVmbiQ2LCBjb3JlZm4kNSwgY29yZWZuJDQsIGNvcmVmbiQzLCBjb3JlZm4kMiwgY29yZWZuJDEsIGZuXS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wcykge1xuICAgIGV4dGVuZChjb3JlZm4sIHByb3BzKTtcbiAgfSk7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuICB2YXIgZGVmYXVsdHMkNyA9IHtcbiAgICBmaXQ6IHRydWUsXG4gICAgLy8gd2hldGhlciB0byBmaXQgdGhlIHZpZXdwb3J0IHRvIHRoZSBncmFwaFxuICAgIGRpcmVjdGVkOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRoZSB0cmVlIGlzIGRpcmVjdGVkIGRvd253YXJkcyAob3IgZWRnZXMgY2FuIHBvaW50IGluIGFueSBkaXJlY3Rpb24gaWYgZmFsc2UpXG4gICAgcGFkZGluZzogMzAsXG4gICAgLy8gcGFkZGluZyBvbiBmaXRcbiAgICBjaXJjbGU6IGZhbHNlLFxuICAgIC8vIHB1dCBkZXB0aHMgaW4gY29uY2VudHJpYyBjaXJjbGVzIGlmIHRydWUsIHB1dCBkZXB0aHMgdG9wIGRvd24gaWYgZmFsc2VcbiAgICBncmlkOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRvIGNyZWF0ZSBhbiBldmVuIGdyaWQgaW50byB3aGljaCB0aGUgREFHIGlzIHBsYWNlZCAoY2lyY2xlOmZhbHNlIG9ubHkpXG4gICAgc3BhY2luZ0ZhY3RvcjogMS43NSxcbiAgICAvLyBwb3NpdGl2ZSBzcGFjaW5nIGZhY3RvciwgbGFyZ2VyID0+IG1vcmUgc3BhY2UgYmV0d2VlbiBub2RlcyAoTi5CLiBuL2EgaWYgY2F1c2VzIG92ZXJsYXApXG4gICAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gICAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZVxuICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsXG4gICAgLy8gRXhjbHVkZXMgdGhlIGxhYmVsIHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBib3VuZGluZyBib3hlcyBmb3IgdGhlIGxheW91dCBhbGdvcml0aG1cbiAgICByb290czogdW5kZWZpbmVkLFxuICAgIC8vIHRoZSByb290cyBvZiB0aGUgdHJlZXNcbiAgICBkZXB0aFNvcnQ6IHVuZGVmaW5lZCxcbiAgICAvLyBhIHNvcnRpbmcgZnVuY3Rpb24gdG8gb3JkZXIgbm9kZXMgYXQgZXF1YWwgZGVwdGguIGUuZy4gZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdGEoJ3dlaWdodCcpIC0gYi5kYXRhKCd3ZWlnaHQnKSB9XG4gICAgYW5pbWF0ZTogZmFsc2UsXG4gICAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA1MDAsXG4gICAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgICAvLyBlYXNpbmcgb2YgYW5pbWF0aW9uIGlmIGVuYWJsZWQsXG4gICAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgICByZWFkeTogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gICAgc3RvcDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzXG5cbiAgfTtcbiAgdmFyIGRlcHJlY2F0ZWRPcHRpb25EZWZhdWx0cyA9IHtcbiAgICBtYXhpbWFsOiBmYWxzZSxcbiAgICAvLyB3aGV0aGVyIHRvIHNoaWZ0IG5vZGVzIGRvd24gdGhlaXIgbmF0dXJhbCBCRlMgZGVwdGhzIGluIG9yZGVyIHRvIGF2b2lkIHVwd2FyZHMgZWRnZXMgKERBR1Mgb25seSk7IHNldHRpbmcgYWN5Y2xpYyB0byB0cnVlIHNldHMgbWF4aW1hbCB0byB0cnVlIGFsc29cbiAgICBhY3ljbGljOiBmYWxzZSAvLyB3aGV0aGVyIHRoZSB0cmVlIGlzIGFjeWNsaWMgYW5kIHRodXMgYSBub2RlIGNvdWxkIGJlIHNoaWZ0ZWQgKGR1ZSB0byB0aGUgbWF4aW1hbCBvcHRpb24pIG11bHRpcGxlIHRpbWVzIHdpdGhvdXQgY2F1c2luZyBhbiBpbmZpbml0ZSBsb29wOyBzZXR0aW5nIHRvIHRydWUgc2V0cyBtYXhpbWFsIHRvIHRydWUgYWxzbzsgaWYgeW91IGFyZSB1bmNlcnRhaW4gd2hldGhlciBhIHRyZWUgaXMgYWN5Y2xpYywgc2V0IHRvIGZhbHNlIHRvIGF2b2lkIHBvdGVudGlhbCBpbmZpbml0ZSBsb29wc1xuXG4gIH07XG4gIC8qIGVzbGludC1lbmFibGUgKi9cblxuICB2YXIgZ2V0SW5mbyA9IGZ1bmN0aW9uIGdldEluZm8oZWxlKSB7XG4gICAgcmV0dXJuIGVsZS5zY3JhdGNoKCdicmVhZHRoZmlyc3QnKTtcbiAgfTtcblxuICB2YXIgc2V0SW5mbyA9IGZ1bmN0aW9uIHNldEluZm8oZWxlLCBvYmopIHtcbiAgICByZXR1cm4gZWxlLnNjcmF0Y2goJ2JyZWFkdGhmaXJzdCcsIG9iaik7XG4gIH07XG5cbiAgZnVuY3Rpb24gQnJlYWR0aEZpcnN0TGF5b3V0KG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJDcsIGRlcHJlY2F0ZWRPcHRpb25EZWZhdWx0cywgb3B0aW9ucyk7XG4gIH1cblxuICBCcmVhZHRoRmlyc3RMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICAgIHZhciBvcHRpb25zID0gcGFyYW1zO1xuICAgIHZhciBjeSA9IHBhcmFtcy5jeTtcbiAgICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uIChuKSB7XG4gICAgICByZXR1cm4gIW4uaXNQYXJlbnQoKTtcbiAgICB9KTtcbiAgICB2YXIgZ3JhcGggPSBlbGVzO1xuICAgIHZhciBkaXJlY3RlZCA9IG9wdGlvbnMuZGlyZWN0ZWQ7XG4gICAgdmFyIG1heGltYWwgPSBvcHRpb25zLmFjeWNsaWMgfHwgb3B0aW9ucy5tYXhpbWFsIHx8IG9wdGlvbnMubWF4aW1hbEFkanVzdG1lbnRzID4gMDsgLy8gbWF4aW1hbEFkanVzdG1lbnRzIGZvciBjb21wYXQuIHcvIG9sZCBjb2RlOyBhbHNvLCBzZXR0aW5nIGFjeWNsaWMgdG8gdHJ1ZSBzZXRzIG1heGltYWwgdG8gdHJ1ZVxuXG4gICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgICAgeDE6IDAsXG4gICAgICB5MTogMCxcbiAgICAgIHc6IGN5LndpZHRoKCksXG4gICAgICBoOiBjeS5oZWlnaHQoKVxuICAgIH0pO1xuICAgIHZhciByb290cztcblxuICAgIGlmIChlbGVtZW50T3JDb2xsZWN0aW9uKG9wdGlvbnMucm9vdHMpKSB7XG4gICAgICByb290cyA9IG9wdGlvbnMucm9vdHM7XG4gICAgfSBlbHNlIGlmIChhcnJheShvcHRpb25zLnJvb3RzKSkge1xuICAgICAgdmFyIHJvb3RzQXJyYXkgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLnJvb3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpZCA9IG9wdGlvbnMucm9vdHNbaV07XG4gICAgICAgIHZhciBlbGUgPSBjeS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIHJvb3RzQXJyYXkucHVzaChlbGUpO1xuICAgICAgfVxuXG4gICAgICByb290cyA9IGN5LmNvbGxlY3Rpb24ocm9vdHNBcnJheSk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcob3B0aW9ucy5yb290cykpIHtcbiAgICAgIHJvb3RzID0gY3kuJChvcHRpb25zLnJvb3RzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgIHJvb3RzID0gbm9kZXMucm9vdHMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjb21wb25lbnRzID0gZWxlcy5jb21wb25lbnRzKCk7XG4gICAgICAgIHJvb3RzID0gY3kuY29sbGVjdGlvbigpO1xuXG4gICAgICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICAgICAgdmFyIGNvbXAgPSBjb21wb25lbnRzW19pXTtcbiAgICAgICAgICB2YXIgbWF4RGVncmVlID0gY29tcC5tYXhEZWdyZWUoZmFsc2UpO1xuICAgICAgICAgIHZhciBjb21wUm9vdHMgPSBjb21wLmZpbHRlcihmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLmRlZ3JlZShmYWxzZSkgPT09IG1heERlZ3JlZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByb290cyA9IHJvb3RzLmFkZChjb21wUm9vdHMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBjb21wb25lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIF9sb29wKF9pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZXB0aHMgPSBbXTtcbiAgICB2YXIgZm91bmRCeUJmcyA9IHt9O1xuXG4gICAgdmFyIGFkZFRvRGVwdGggPSBmdW5jdGlvbiBhZGRUb0RlcHRoKGVsZSwgZCkge1xuICAgICAgaWYgKGRlcHRoc1tkXSA9PSBudWxsKSB7XG4gICAgICAgIGRlcHRoc1tkXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICB2YXIgaSA9IGRlcHRoc1tkXS5sZW5ndGg7XG4gICAgICBkZXB0aHNbZF0ucHVzaChlbGUpO1xuICAgICAgc2V0SW5mbyhlbGUsIHtcbiAgICAgICAgaW5kZXg6IGksXG4gICAgICAgIGRlcHRoOiBkXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdmFyIGNoYW5nZURlcHRoID0gZnVuY3Rpb24gY2hhbmdlRGVwdGgoZWxlLCBuZXdEZXB0aCkge1xuICAgICAgdmFyIF9nZXRJbmZvID0gZ2V0SW5mbyhlbGUpLFxuICAgICAgICAgIGRlcHRoID0gX2dldEluZm8uZGVwdGgsXG4gICAgICAgICAgaW5kZXggPSBfZ2V0SW5mby5pbmRleDtcblxuICAgICAgZGVwdGhzW2RlcHRoXVtpbmRleF0gPSBudWxsO1xuICAgICAgYWRkVG9EZXB0aChlbGUsIG5ld0RlcHRoKTtcbiAgICB9OyAvLyBmaW5kIHRoZSBkZXB0aHMgb2YgdGhlIG5vZGVzXG5cblxuICAgIGdyYXBoLmJmcyh7XG4gICAgICByb290czogcm9vdHMsXG4gICAgICBkaXJlY3RlZDogb3B0aW9ucy5kaXJlY3RlZCxcbiAgICAgIHZpc2l0OiBmdW5jdGlvbiB2aXNpdChub2RlLCBlZGdlLCBwTm9kZSwgaSwgZGVwdGgpIHtcbiAgICAgICAgdmFyIGVsZSA9IG5vZGVbMF07XG4gICAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgICBhZGRUb0RlcHRoKGVsZSwgZGVwdGgpO1xuICAgICAgICBmb3VuZEJ5QmZzW2lkXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7IC8vIGNoZWNrIGZvciBub2RlcyBub3QgZm91bmQgYnkgYmZzXG5cbiAgICB2YXIgb3JwaGFuTm9kZXMgPSBbXTtcblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG5vZGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciBfZWxlID0gbm9kZXNbX2kyXTtcblxuICAgICAgaWYgKGZvdW5kQnlCZnNbX2VsZS5pZCgpXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ycGhhbk5vZGVzLnB1c2goX2VsZSk7XG4gICAgICB9XG4gICAgfSAvLyBhc3NpZ24gdGhlIG5vZGVzIGEgZGVwdGggYW5kIGluZGV4XG5cblxuICAgIHZhciBhc3NpZ25EZXB0aHNBdCA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRoc0F0KGkpIHtcbiAgICAgIHZhciBlbGVzID0gZGVwdGhzW2ldO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIF9lbGUyID0gZWxlc1tqXTtcblxuICAgICAgICBpZiAoX2VsZTIgPT0gbnVsbCkge1xuICAgICAgICAgIGVsZXMuc3BsaWNlKGosIDEpO1xuICAgICAgICAgIGotLTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEluZm8oX2VsZTIsIHtcbiAgICAgICAgICBkZXB0aDogaSxcbiAgICAgICAgICBpbmRleDogalxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGFzc2lnbkRlcHRocyA9IGZ1bmN0aW9uIGFzc2lnbkRlcHRocygpIHtcbiAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8IGRlcHRocy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAgIGFzc2lnbkRlcHRoc0F0KF9pMyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBhZGp1c3RNYXhpbWFsbHkgPSBmdW5jdGlvbiBhZGp1c3RNYXhpbWFsbHkoZWxlLCBzaGlmdGVkKSB7XG4gICAgICB2YXIgZUluZm8gPSBnZXRJbmZvKGVsZSk7XG4gICAgICB2YXIgaW5jb21lcnMgPSBlbGUuaW5jb21lcnMoKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHJldHVybiBlbC5pc05vZGUoKSAmJiBlbGVzLmhhcyhlbCk7XG4gICAgICB9KTtcbiAgICAgIHZhciBtYXhEZXB0aCA9IC0xO1xuICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG5cbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaW5jb21lcnMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGluY21yID0gaW5jb21lcnNba107XG4gICAgICAgIHZhciBpSW5mbyA9IGdldEluZm8oaW5jbXIpO1xuICAgICAgICBtYXhEZXB0aCA9IE1hdGgubWF4KG1heERlcHRoLCBpSW5mby5kZXB0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlSW5mby5kZXB0aCA8PSBtYXhEZXB0aCkge1xuICAgICAgICBpZiAoIW9wdGlvbnMuYWN5Y2xpYyAmJiBzaGlmdGVkW2lkXSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5ld0RlcHRoID0gbWF4RGVwdGggKyAxO1xuICAgICAgICBjaGFuZ2VEZXB0aChlbGUsIG5ld0RlcHRoKTtcbiAgICAgICAgc2hpZnRlZFtpZF0gPSBuZXdEZXB0aDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9OyAvLyBmb3IgdGhlIGRpcmVjdGVkIGNhc2UsIHRyeSB0byBtYWtlIHRoZSBlZGdlcyBhbGwgZ28gZG93biAoaS5lLiBkZXB0aCBpID0+IGRlcHRoIGkgKyAxKVxuXG5cbiAgICBpZiAoZGlyZWN0ZWQgJiYgbWF4aW1hbCkge1xuICAgICAgdmFyIFEgPSBbXTtcbiAgICAgIHZhciBzaGlmdGVkID0ge307XG5cbiAgICAgIHZhciBlbnF1ZXVlID0gZnVuY3Rpb24gZW5xdWV1ZShuKSB7XG4gICAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgICB9O1xuXG4gICAgICB2YXIgZGVxdWV1ZSA9IGZ1bmN0aW9uIGRlcXVldWUoKSB7XG4gICAgICAgIHJldHVybiBRLnNoaWZ0KCk7XG4gICAgICB9O1xuXG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBRLnB1c2gobik7XG4gICAgICB9KTtcblxuICAgICAgd2hpbGUgKFEubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgX2VsZTMgPSBkZXF1ZXVlKCk7XG5cbiAgICAgICAgdmFyIGRpZFNoaWZ0ID0gYWRqdXN0TWF4aW1hbGx5KF9lbGUzLCBzaGlmdGVkKTtcblxuICAgICAgICBpZiAoZGlkU2hpZnQpIHtcbiAgICAgICAgICBfZWxlMy5vdXRnb2VycygpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBlbC5pc05vZGUoKSAmJiBlbGVzLmhhcyhlbCk7XG4gICAgICAgICAgfSkuZm9yRWFjaChlbnF1ZXVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChkaWRTaGlmdCA9PT0gbnVsbCkge1xuICAgICAgICAgIHdhcm4oJ0RldGVjdGVkIGRvdWJsZSBtYXhpbWFsIHNoaWZ0IGZvciBub2RlIGAnICsgX2VsZTMuaWQoKSArICdgLiAgQmFpbGluZyBtYXhpbWFsIGFkanVzdG1lbnQgZHVlIHRvIGN5Y2xlLiAgVXNlIGBvcHRpb25zLm1heGltYWw6IHRydWVgIG9ubHkgb24gREFHcy4nKTtcbiAgICAgICAgICBicmVhazsgLy8gZXhpdCBvbiBmYWlsdXJlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3NpZ25EZXB0aHMoKTsgLy8gY2xlYXIgaG9sZXNcbiAgICAvLyBmaW5kIG1pbiBkaXN0YW5jZSB3ZSBuZWVkIHRvIGxlYXZlIGJldHdlZW4gbm9kZXNcblxuICAgIHZhciBtaW5EaXN0YW5jZSA9IDA7XG5cbiAgICBpZiAob3B0aW9ucy5hdm9pZE92ZXJsYXApIHtcbiAgICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IG5vZGVzLmxlbmd0aDsgX2k0KyspIHtcbiAgICAgICAgdmFyIG4gPSBub2Rlc1tfaTRdO1xuICAgICAgICB2YXIgbmJiID0gbi5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgICAgICB2YXIgdyA9IG5iYi53O1xuICAgICAgICB2YXIgaCA9IG5iYi5oO1xuICAgICAgICBtaW5EaXN0YW5jZSA9IE1hdGgubWF4KG1pbkRpc3RhbmNlLCB3LCBoKTtcbiAgICAgIH1cbiAgICB9IC8vIGdldCB0aGUgd2VpZ2h0ZWQgcGVyY2VudCBmb3IgYW4gZWxlbWVudCBiYXNlZCBvbiBpdHMgY29ubmVjdGl2aXR5IHRvIG90aGVyIGxldmVsc1xuXG5cbiAgICB2YXIgY2FjaGVkV2VpZ2h0ZWRQZXJjZW50ID0ge307XG5cbiAgICB2YXIgZ2V0V2VpZ2h0ZWRQZXJjZW50ID0gZnVuY3Rpb24gZ2V0V2VpZ2h0ZWRQZXJjZW50KGVsZSkge1xuICAgICAgaWYgKGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV0pIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV07XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVEZXB0aCA9IGdldEluZm8oZWxlKS5kZXB0aDtcbiAgICAgIHZhciBuZWlnaGJvcnMgPSBlbGUubmVpZ2hib3Job29kKCk7XG4gICAgICB2YXIgcGVyY2VudCA9IDA7XG4gICAgICB2YXIgc2FtcGxlcyA9IDA7XG5cbiAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IG5laWdoYm9ycy5sZW5ndGg7IF9pNSsrKSB7XG4gICAgICAgIHZhciBuZWlnaGJvciA9IG5laWdoYm9yc1tfaTVdO1xuXG4gICAgICAgIGlmIChuZWlnaGJvci5pc0VkZ2UoKSB8fCBuZWlnaGJvci5pc1BhcmVudCgpIHx8ICFub2Rlcy5oYXMobmVpZ2hib3IpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYmYgPSBnZXRJbmZvKG5laWdoYm9yKTtcblxuICAgICAgICBpZiAoYmYgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gYmYuaW5kZXg7XG4gICAgICAgIHZhciBkZXB0aCA9IGJmLmRlcHRoOyAvLyB1bmFzc2lnbmVkIG5laWdoYm91cnMgc2hvdWxkbid0IGFmZmVjdCB0aGUgb3JkZXJpbmdcblxuICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCB8fCBkZXB0aCA9PSBudWxsKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbkRlcHRoID0gZGVwdGhzW2RlcHRoXS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGRlcHRoIDwgZWxlRGVwdGgpIHtcbiAgICAgICAgICAvLyBvbmx5IGdldCBpbmZsdWVuY2VkIGJ5IGVsZW1lbnRzIGFib3ZlXG4gICAgICAgICAgcGVyY2VudCArPSBpbmRleCAvIG5EZXB0aDtcbiAgICAgICAgICBzYW1wbGVzKys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2FtcGxlcyA9IE1hdGgubWF4KDEsIHNhbXBsZXMpO1xuICAgICAgcGVyY2VudCA9IHBlcmNlbnQgLyBzYW1wbGVzO1xuXG4gICAgICBpZiAoc2FtcGxlcyA9PT0gMCkge1xuICAgICAgICAvLyBwdXQgbG9uZSBub2RlcyBhdCB0aGUgc3RhcnRcbiAgICAgICAgcGVyY2VudCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGNhY2hlZFdlaWdodGVkUGVyY2VudFtlbGUuaWQoKV0gPSBwZXJjZW50O1xuICAgICAgcmV0dXJuIHBlcmNlbnQ7XG4gICAgfTsgLy8gcmVhcnJhbmdlIHRoZSBpbmRpY2VzIGluIGVhY2ggZGVwdGggbGV2ZWwgYmFzZWQgb24gY29ubmVjdGl2aXR5XG5cblxuICAgIHZhciBzb3J0Rm4gPSBmdW5jdGlvbiBzb3J0Rm4oYSwgYikge1xuICAgICAgdmFyIGFwY3QgPSBnZXRXZWlnaHRlZFBlcmNlbnQoYSk7XG4gICAgICB2YXIgYnBjdCA9IGdldFdlaWdodGVkUGVyY2VudChiKTtcbiAgICAgIHZhciBkaWZmID0gYXBjdCAtIGJwY3Q7XG5cbiAgICAgIGlmIChkaWZmID09PSAwKSB7XG4gICAgICAgIHJldHVybiBhc2NlbmRpbmcoYS5pZCgpLCBiLmlkKCkpOyAvLyBtYWtlIHN1cmUgc29ydCBkb2Vzbid0IGhhdmUgZG9uJ3QtY2FyZSBjb21wYXJpc29uc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLmRlcHRoU29ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzb3J0Rm4gPSBvcHRpb25zLmRlcHRoU29ydDtcbiAgICB9IC8vIHNvcnQgZWFjaCBsZXZlbCB0byBtYWtlIGNvbm5lY3RlZCBub2RlcyBjbG9zZXJcblxuXG4gICAgZm9yICh2YXIgX2k2ID0gMDsgX2k2IDwgZGVwdGhzLmxlbmd0aDsgX2k2KyspIHtcbiAgICAgIGRlcHRoc1tfaTZdLnNvcnQoc29ydEZuKTtcblxuICAgICAgYXNzaWduRGVwdGhzQXQoX2k2KTtcbiAgICB9IC8vIGFzc2lnbiBvcnBoYW4gbm9kZXMgdG8gYSBuZXcgdG9wLWxldmVsIGRlcHRoXG5cblxuICAgIHZhciBvcnBoYW5EZXB0aCA9IFtdO1xuXG4gICAgZm9yICh2YXIgX2k3ID0gMDsgX2k3IDwgb3JwaGFuTm9kZXMubGVuZ3RoOyBfaTcrKykge1xuICAgICAgb3JwaGFuRGVwdGgucHVzaChvcnBoYW5Ob2Rlc1tfaTddKTtcbiAgICB9XG5cbiAgICBkZXB0aHMudW5zaGlmdChvcnBoYW5EZXB0aCk7XG4gICAgYXNzaWduRGVwdGhzKCk7XG4gICAgdmFyIGJpZ2dlc3REZXB0aFNpemUgPSAwO1xuXG4gICAgZm9yICh2YXIgX2k4ID0gMDsgX2k4IDwgZGVwdGhzLmxlbmd0aDsgX2k4KyspIHtcbiAgICAgIGJpZ2dlc3REZXB0aFNpemUgPSBNYXRoLm1heChkZXB0aHNbX2k4XS5sZW5ndGgsIGJpZ2dlc3REZXB0aFNpemUpO1xuICAgIH1cblxuICAgIHZhciBjZW50ZXIgPSB7XG4gICAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgICAgeTogYmIueDEgKyBiYi5oIC8gMlxuICAgIH07XG4gICAgdmFyIG1heERlcHRoU2l6ZSA9IGRlcHRocy5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgZWxlcykge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KG1heCwgZWxlcy5sZW5ndGgpO1xuICAgIH0sIDApO1xuXG4gICAgdmFyIGdldFBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0UG9zaXRpb24oZWxlKSB7XG4gICAgICB2YXIgX2dldEluZm8yID0gZ2V0SW5mbyhlbGUpLFxuICAgICAgICAgIGRlcHRoID0gX2dldEluZm8yLmRlcHRoLFxuICAgICAgICAgIGluZGV4ID0gX2dldEluZm8yLmluZGV4O1xuXG4gICAgICB2YXIgZGVwdGhTaXplID0gZGVwdGhzW2RlcHRoXS5sZW5ndGg7XG4gICAgICB2YXIgZGlzdGFuY2VYID0gTWF0aC5tYXgoYmIudyAvICgob3B0aW9ucy5ncmlkID8gbWF4RGVwdGhTaXplIDogZGVwdGhTaXplKSArIDEpLCBtaW5EaXN0YW5jZSk7XG4gICAgICB2YXIgZGlzdGFuY2VZID0gTWF0aC5tYXgoYmIuaCAvIChkZXB0aHMubGVuZ3RoICsgMSksIG1pbkRpc3RhbmNlKTtcbiAgICAgIHZhciByYWRpdXNTdGVwU2l6ZSA9IE1hdGgubWluKGJiLncgLyAyIC8gZGVwdGhzLmxlbmd0aCwgYmIuaCAvIDIgLyBkZXB0aHMubGVuZ3RoKTtcbiAgICAgIHJhZGl1c1N0ZXBTaXplID0gTWF0aC5tYXgocmFkaXVzU3RlcFNpemUsIG1pbkRpc3RhbmNlKTtcblxuICAgICAgaWYgKCFvcHRpb25zLmNpcmNsZSkge1xuICAgICAgICB2YXIgZXBvcyA9IHtcbiAgICAgICAgICB4OiBjZW50ZXIueCArIChpbmRleCArIDEgLSAoZGVwdGhTaXplICsgMSkgLyAyKSAqIGRpc3RhbmNlWCxcbiAgICAgICAgICB5OiAoZGVwdGggKyAxKSAqIGRpc3RhbmNlWVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZXBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByYWRpdXMgPSByYWRpdXNTdGVwU2l6ZSAqIGRlcHRoICsgcmFkaXVzU3RlcFNpemUgLSAoZGVwdGhzLmxlbmd0aCA+IDAgJiYgZGVwdGhzWzBdLmxlbmd0aCA8PSAzID8gcmFkaXVzU3RlcFNpemUgLyAyIDogMCk7XG4gICAgICAgIHZhciB0aGV0YSA9IDIgKiBNYXRoLlBJIC8gZGVwdGhzW2RlcHRoXS5sZW5ndGggKiBpbmRleDtcblxuICAgICAgICBpZiAoZGVwdGggPT09IDAgJiYgZGVwdGhzWzBdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHJhZGl1cyA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGNlbnRlci54ICsgcmFkaXVzICogTWF0aC5jb3ModGhldGEpLFxuICAgICAgICAgIHk6IGNlbnRlci55ICsgcmFkaXVzICogTWF0aC5zaW4odGhldGEpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsZXMubm9kZXMoKS5sYXlvdXRQb3NpdGlvbnModGhpcywgb3B0aW9ucywgZ2V0UG9zaXRpb24pO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuXG4gIHZhciBkZWZhdWx0cyQ2ID0ge1xuICAgIGZpdDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIHRvIGZpdCB0aGUgdmlld3BvcnQgdG8gdGhlIGdyYXBoXG4gICAgcGFkZGluZzogMzAsXG4gICAgLy8gdGhlIHBhZGRpbmcgb24gZml0XG4gICAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gICAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggYW5kIHJhZGl1cyBpZiBub3QgZW5vdWdoIHNwYWNlXG4gICAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICAgIHNwYWNpbmdGYWN0b3I6IHVuZGVmaW5lZCxcbiAgICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICAgIHJhZGl1czogdW5kZWZpbmVkLFxuICAgIC8vIHRoZSByYWRpdXMgb2YgdGhlIGNpcmNsZVxuICAgIHN0YXJ0QW5nbGU6IDMgLyAyICogTWF0aC5QSSxcbiAgICAvLyB3aGVyZSBub2RlcyBzdGFydCBpbiByYWRpYW5zXG4gICAgc3dlZXA6IHVuZGVmaW5lZCxcbiAgICAvLyBob3cgbWFueSByYWRpYW5zIHNob3VsZCBiZSBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIChkZWZhdWx0cyB0byBmdWxsIGNpcmNsZSlcbiAgICBjbG9ja3dpc2U6IHRydWUsXG4gICAgLy8gd2hldGhlciB0aGUgbGF5b3V0IHNob3VsZCBnbyBjbG9ja3dpc2UgKHRydWUpIG9yIGNvdW50ZXJjbG9ja3dpc2UvYW50aWNsb2Nrd2lzZSAoZmFsc2UpXG4gICAgc29ydDogdW5kZWZpbmVkLFxuICAgIC8vIGEgc29ydGluZyBmdW5jdGlvbiB0byBvcmRlciB0aGUgbm9kZXM7IGUuZy4gZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdGEoJ3dlaWdodCcpIC0gYi5kYXRhKCd3ZWlnaHQnKSB9XG4gICAgYW5pbWF0ZTogZmFsc2UsXG4gICAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA1MDAsXG4gICAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgICAvLyBlYXNpbmcgb2YgYW5pbWF0aW9uIGlmIGVuYWJsZWRcbiAgICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICAgIHJlYWR5OiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgICBzdG9wOiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbiAgfTtcblxuICBmdW5jdGlvbiBDaXJjbGVMYXlvdXQob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkNiwgb3B0aW9ucyk7XG4gIH1cblxuICBDaXJjbGVMYXlvdXQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyYW1zID0gdGhpcy5vcHRpb25zO1xuICAgIHZhciBvcHRpb25zID0gcGFyYW1zO1xuICAgIHZhciBjeSA9IHBhcmFtcy5jeTtcbiAgICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgICB2YXIgY2xvY2t3aXNlID0gb3B0aW9ucy5jb3VudGVyY2xvY2t3aXNlICE9PSB1bmRlZmluZWQgPyAhb3B0aW9ucy5jb3VudGVyY2xvY2t3aXNlIDogb3B0aW9ucy5jbG9ja3dpc2U7XG4gICAgdmFyIG5vZGVzID0gZWxlcy5ub2RlcygpLm5vdCgnOnBhcmVudCcpO1xuXG4gICAgaWYgKG9wdGlvbnMuc29ydCkge1xuICAgICAgbm9kZXMgPSBub2Rlcy5zb3J0KG9wdGlvbnMuc29ydCk7XG4gICAgfVxuXG4gICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgICAgeDE6IDAsXG4gICAgICB5MTogMCxcbiAgICAgIHc6IGN5LndpZHRoKCksXG4gICAgICBoOiBjeS5oZWlnaHQoKVxuICAgIH0pO1xuICAgIHZhciBjZW50ZXIgPSB7XG4gICAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgICAgeTogYmIueTEgKyBiYi5oIC8gMlxuICAgIH07XG4gICAgdmFyIHN3ZWVwID0gb3B0aW9ucy5zd2VlcCA9PT0gdW5kZWZpbmVkID8gMiAqIE1hdGguUEkgLSAyICogTWF0aC5QSSAvIG5vZGVzLmxlbmd0aCA6IG9wdGlvbnMuc3dlZXA7XG4gICAgdmFyIGRUaGV0YSA9IHN3ZWVwIC8gTWF0aC5tYXgoMSwgbm9kZXMubGVuZ3RoIC0gMSk7XG4gICAgdmFyIHI7XG4gICAgdmFyIG1pbkRpc3RhbmNlID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuID0gbm9kZXNbaV07XG4gICAgICB2YXIgbmJiID0gbi5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuICAgICAgdmFyIHcgPSBuYmIudztcbiAgICAgIHZhciBoID0gbmJiLmg7XG4gICAgICBtaW5EaXN0YW5jZSA9IE1hdGgubWF4KG1pbkRpc3RhbmNlLCB3LCBoKTtcbiAgICB9XG5cbiAgICBpZiAobnVtYmVyJDEob3B0aW9ucy5yYWRpdXMpKSB7XG4gICAgICByID0gb3B0aW9ucy5yYWRpdXM7XG4gICAgfSBlbHNlIGlmIChub2Rlcy5sZW5ndGggPD0gMSkge1xuICAgICAgciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIgPSBNYXRoLm1pbihiYi5oLCBiYi53KSAvIDIgLSBtaW5EaXN0YW5jZTtcbiAgICB9IC8vIGNhbGN1bGF0ZSB0aGUgcmFkaXVzXG5cblxuICAgIGlmIChub2Rlcy5sZW5ndGggPiAxICYmIG9wdGlvbnMuYXZvaWRPdmVybGFwKSB7XG4gICAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgICBtaW5EaXN0YW5jZSAqPSAxLjc1OyAvLyBqdXN0IHRvIGhhdmUgc29tZSBuaWNlIHNwYWNpbmdcblxuICAgICAgdmFyIGRjb3MgPSBNYXRoLmNvcyhkVGhldGEpIC0gTWF0aC5jb3MoMCk7XG4gICAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgIHZhciByTWluID0gTWF0aC5zcXJ0KG1pbkRpc3RhbmNlICogbWluRGlzdGFuY2UgLyAoZGNvcyAqIGRjb3MgKyBkc2luICogZHNpbikpOyAvLyBzLnQuIG5vIG5vZGVzIG92ZXJsYXBwaW5nXG5cbiAgICAgIHIgPSBNYXRoLm1heChyTWluLCByKTtcbiAgICB9XG5cbiAgICB2YXIgZ2V0UG9zID0gZnVuY3Rpb24gZ2V0UG9zKGVsZSwgaSkge1xuICAgICAgdmFyIHRoZXRhID0gb3B0aW9ucy5zdGFydEFuZ2xlICsgaSAqIGRUaGV0YSAqIChjbG9ja3dpc2UgPyAxIDogLTEpO1xuICAgICAgdmFyIHJ4ID0gciAqIE1hdGguY29zKHRoZXRhKTtcbiAgICAgIHZhciByeSA9IHIgKiBNYXRoLnNpbih0aGV0YSk7XG4gICAgICB2YXIgcG9zID0ge1xuICAgICAgICB4OiBjZW50ZXIueCArIHJ4LFxuICAgICAgICB5OiBjZW50ZXIueSArIHJ5XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHBvcztcbiAgICB9O1xuXG4gICAgZWxlcy5ub2RlcygpLmxheW91dFBvc2l0aW9ucyh0aGlzLCBvcHRpb25zLCBnZXRQb3MpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuXG4gIHZhciBkZWZhdWx0cyQ1ID0ge1xuICAgIGZpdDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIHRvIGZpdCB0aGUgdmlld3BvcnQgdG8gdGhlIGdyYXBoXG4gICAgcGFkZGluZzogMzAsXG4gICAgLy8gdGhlIHBhZGRpbmcgb24gZml0XG4gICAgc3RhcnRBbmdsZTogMyAvIDIgKiBNYXRoLlBJLFxuICAgIC8vIHdoZXJlIG5vZGVzIHN0YXJ0IGluIHJhZGlhbnNcbiAgICBzd2VlcDogdW5kZWZpbmVkLFxuICAgIC8vIGhvdyBtYW55IHJhZGlhbnMgc2hvdWxkIGJlIGJldHdlZW4gdGhlIGZpcnN0IGFuZCBsYXN0IG5vZGUgKGRlZmF1bHRzIHRvIGZ1bGwgY2lyY2xlKVxuICAgIGNsb2Nrd2lzZTogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIHRoZSBsYXlvdXQgc2hvdWxkIGdvIGNsb2Nrd2lzZSAodHJ1ZSkgb3IgY291bnRlcmNsb2Nrd2lzZS9hbnRpY2xvY2t3aXNlIChmYWxzZSlcbiAgICBlcXVpZGlzdGFudDogZmFsc2UsXG4gICAgLy8gd2hldGhlciBsZXZlbHMgaGF2ZSBhbiBlcXVhbCByYWRpYWwgZGlzdGFuY2UgYmV0d2VuIHRoZW0sIG1heSBjYXVzZSBib3VuZGluZyBib3ggb3ZlcmZsb3dcbiAgICBtaW5Ob2RlU3BhY2luZzogMTAsXG4gICAgLy8gbWluIHNwYWNpbmcgYmV0d2VlbiBvdXRzaWRlIG9mIG5vZGVzICh1c2VkIGZvciByYWRpdXMgYWRqdXN0bWVudClcbiAgICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAgIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICAgIGF2b2lkT3ZlcmxhcDogdHJ1ZSxcbiAgICAvLyBwcmV2ZW50cyBub2RlIG92ZXJsYXAsIG1heSBvdmVyZmxvdyBib3VuZGluZ0JveCBpZiBub3QgZW5vdWdoIHNwYWNlXG4gICAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICAgIGhlaWdodDogdW5kZWZpbmVkLFxuICAgIC8vIGhlaWdodCBvZiBsYXlvdXQgYXJlYSAob3ZlcnJpZGVzIGNvbnRhaW5lciBoZWlnaHQpXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICAvLyB3aWR0aCBvZiBsYXlvdXQgYXJlYSAob3ZlcnJpZGVzIGNvbnRhaW5lciB3aWR0aClcbiAgICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsXG4gICAgLy8gQXBwbGllcyBhIG11bHRpcGxpY2F0aXZlIGZhY3RvciAoPjApIHRvIGV4cGFuZCBvciBjb21wcmVzcyB0aGUgb3ZlcmFsbCBhcmVhIHRoYXQgdGhlIG5vZGVzIHRha2UgdXBcbiAgICBjb25jZW50cmljOiBmdW5jdGlvbiBjb25jZW50cmljKG5vZGUpIHtcbiAgICAgIC8vIHJldHVybnMgbnVtZXJpYyB2YWx1ZSBmb3IgZWFjaCBub2RlLCBwbGFjaW5nIGhpZ2hlciBub2RlcyBpbiBsZXZlbHMgdG93YXJkcyB0aGUgY2VudHJlXG4gICAgICByZXR1cm4gbm9kZS5kZWdyZWUoKTtcbiAgICB9LFxuICAgIGxldmVsV2lkdGg6IGZ1bmN0aW9uIGxldmVsV2lkdGgobm9kZXMpIHtcbiAgICAgIC8vIHRoZSB2YXJpYXRpb24gb2YgY29uY2VudHJpYyB2YWx1ZXMgaW4gZWFjaCBsZXZlbFxuICAgICAgcmV0dXJuIG5vZGVzLm1heERlZ3JlZSgpIC8gNDtcbiAgICB9LFxuICAgIGFuaW1hdGU6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAgIC8vIGR1cmF0aW9uIG9mIGFuaW1hdGlvbiBpbiBtcyBpZiBlbmFibGVkXG4gICAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gICAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gICAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgICByZWFkeTogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gICAgc3RvcDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzXG5cbiAgfTtcblxuICBmdW5jdGlvbiBDb25jZW50cmljTGF5b3V0KG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJDUsIG9wdGlvbnMpO1xuICB9XG5cbiAgQ29uY2VudHJpY0xheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnM7XG4gICAgdmFyIG9wdGlvbnMgPSBwYXJhbXM7XG4gICAgdmFyIGNsb2Nrd2lzZSA9IG9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSAhPT0gdW5kZWZpbmVkID8gIW9wdGlvbnMuY291bnRlcmNsb2Nrd2lzZSA6IG9wdGlvbnMuY2xvY2t3aXNlO1xuICAgIHZhciBjeSA9IHBhcmFtcy5jeTtcbiAgICB2YXIgZWxlcyA9IG9wdGlvbnMuZWxlcztcbiAgICB2YXIgbm9kZXMgPSBlbGVzLm5vZGVzKCkubm90KCc6cGFyZW50Jyk7XG4gICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgICAgeDE6IDAsXG4gICAgICB5MTogMCxcbiAgICAgIHc6IGN5LndpZHRoKCksXG4gICAgICBoOiBjeS5oZWlnaHQoKVxuICAgIH0pO1xuICAgIHZhciBjZW50ZXIgPSB7XG4gICAgICB4OiBiYi54MSArIGJiLncgLyAyLFxuICAgICAgeTogYmIueTEgKyBiYi5oIC8gMlxuICAgIH07XG4gICAgdmFyIG5vZGVWYWx1ZXMgPSBbXTsgLy8geyBub2RlLCB2YWx1ZSB9XG5cbiAgICB2YXIgbWF4Tm9kZVNpemUgPSAwO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIHZhciB2YWx1ZSA9IHZvaWQgMDsgLy8gY2FsY3VsYXRlIHRoZSBub2RlIHZhbHVlXG5cbiAgICAgIHZhbHVlID0gb3B0aW9ucy5jb25jZW50cmljKG5vZGUpO1xuICAgICAgbm9kZVZhbHVlcy5wdXNoKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBub2RlOiBub2RlXG4gICAgICB9KTsgLy8gZm9yIHN0eWxlIG1hcHBpbmdcblxuICAgICAgbm9kZS5fcHJpdmF0ZS5zY3JhdGNoLmNvbmNlbnRyaWMgPSB2YWx1ZTtcbiAgICB9IC8vIGluIGNhc2Ugd2UgdXNlZCB0aGUgYGNvbmNlbnRyaWNgIGluIHN0eWxlXG5cblxuICAgIG5vZGVzLnVwZGF0ZVN0eWxlKCk7IC8vIGNhbGN1bGF0ZSBtYXggc2l6ZSBub3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdXBkYXRlZCBtYXBwZXJzXG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbm9kZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX25vZGUgPSBub2Rlc1tfaV07XG5cbiAgICAgIHZhciBuYmIgPSBfbm9kZS5sYXlvdXREaW1lbnNpb25zKG9wdGlvbnMpO1xuXG4gICAgICBtYXhOb2RlU2l6ZSA9IE1hdGgubWF4KG1heE5vZGVTaXplLCBuYmIudywgbmJiLmgpO1xuICAgIH0gLy8gc29ydCBub2RlIHZhbHVlcyBpbiBkZXNjcmVhc2luZyBvcmRlclxuXG5cbiAgICBub2RlVmFsdWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBiLnZhbHVlIC0gYS52YWx1ZTtcbiAgICB9KTtcbiAgICB2YXIgbGV2ZWxXaWR0aCA9IG9wdGlvbnMubGV2ZWxXaWR0aChub2Rlcyk7IC8vIHB1dCB0aGUgdmFsdWVzIGludG8gbGV2ZWxzXG5cbiAgICB2YXIgbGV2ZWxzID0gW1tdXTtcbiAgICB2YXIgY3VycmVudExldmVsID0gbGV2ZWxzWzBdO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbm9kZVZhbHVlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgdmFsID0gbm9kZVZhbHVlc1tfaTJdO1xuXG4gICAgICBpZiAoY3VycmVudExldmVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhjdXJyZW50TGV2ZWxbMF0udmFsdWUgLSB2YWwudmFsdWUpO1xuXG4gICAgICAgIGlmIChkaWZmID49IGxldmVsV2lkdGgpIHtcbiAgICAgICAgICBjdXJyZW50TGV2ZWwgPSBbXTtcbiAgICAgICAgICBsZXZlbHMucHVzaChjdXJyZW50TGV2ZWwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRMZXZlbC5wdXNoKHZhbCk7XG4gICAgfSAvLyBjcmVhdGUgcG9zaXRpb25zIGZyb20gbGV2ZWxzXG5cblxuICAgIHZhciBtaW5EaXN0ID0gbWF4Tm9kZVNpemUgKyBvcHRpb25zLm1pbk5vZGVTcGFjaW5nOyAvLyBtaW4gZGlzdCBiZXR3ZWVuIG5vZGVzXG5cbiAgICBpZiAoIW9wdGlvbnMuYXZvaWRPdmVybGFwKSB7XG4gICAgICAvLyB0aGVuIHN0cmljdGx5IGNvbnN0cmFpbiB0byBiYlxuICAgICAgdmFyIGZpcnN0THZsSGFzTXVsdGkgPSBsZXZlbHMubGVuZ3RoID4gMCAmJiBsZXZlbHNbMF0ubGVuZ3RoID4gMTtcbiAgICAgIHZhciBtYXhSID0gTWF0aC5taW4oYmIudywgYmIuaCkgLyAyIC0gbWluRGlzdDtcbiAgICAgIHZhciByU3RlcCA9IG1heFIgLyAobGV2ZWxzLmxlbmd0aCArIGZpcnN0THZsSGFzTXVsdGkgPyAxIDogMCk7XG4gICAgICBtaW5EaXN0ID0gTWF0aC5taW4obWluRGlzdCwgclN0ZXApO1xuICAgIH0gLy8gZmluZCB0aGUgbWV0cmljcyBmb3IgZWFjaCBsZXZlbFxuXG5cbiAgICB2YXIgciA9IDA7XG5cbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBsZXZlbHMubGVuZ3RoOyBfaTMrKykge1xuICAgICAgdmFyIGxldmVsID0gbGV2ZWxzW19pM107XG4gICAgICB2YXIgc3dlZXAgPSBvcHRpb25zLnN3ZWVwID09PSB1bmRlZmluZWQgPyAyICogTWF0aC5QSSAtIDIgKiBNYXRoLlBJIC8gbGV2ZWwubGVuZ3RoIDogb3B0aW9ucy5zd2VlcDtcbiAgICAgIHZhciBkVGhldGEgPSBsZXZlbC5kVGhldGEgPSBzd2VlcCAvIE1hdGgubWF4KDEsIGxldmVsLmxlbmd0aCAtIDEpOyAvLyBjYWxjdWxhdGUgdGhlIHJhZGl1c1xuXG4gICAgICBpZiAobGV2ZWwubGVuZ3RoID4gMSAmJiBvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgICAvLyBidXQgb25seSBpZiBtb3JlIHRoYW4gb25lIG5vZGUgKGNhbid0IG92ZXJsYXApXG4gICAgICAgIHZhciBkY29zID0gTWF0aC5jb3MoZFRoZXRhKSAtIE1hdGguY29zKDApO1xuICAgICAgICB2YXIgZHNpbiA9IE1hdGguc2luKGRUaGV0YSkgLSBNYXRoLnNpbigwKTtcbiAgICAgICAgdmFyIHJNaW4gPSBNYXRoLnNxcnQobWluRGlzdCAqIG1pbkRpc3QgLyAoZGNvcyAqIGRjb3MgKyBkc2luICogZHNpbikpOyAvLyBzLnQuIG5vIG5vZGVzIG92ZXJsYXBwaW5nXG5cbiAgICAgICAgciA9IE1hdGgubWF4KHJNaW4sIHIpO1xuICAgICAgfVxuXG4gICAgICBsZXZlbC5yID0gcjtcbiAgICAgIHIgKz0gbWluRGlzdDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5lcXVpZGlzdGFudCkge1xuICAgICAgdmFyIHJEZWx0YU1heCA9IDA7XG4gICAgICB2YXIgX3IgPSAwO1xuXG4gICAgICBmb3IgKHZhciBfaTQgPSAwOyBfaTQgPCBsZXZlbHMubGVuZ3RoOyBfaTQrKykge1xuICAgICAgICB2YXIgX2xldmVsID0gbGV2ZWxzW19pNF07XG4gICAgICAgIHZhciByRGVsdGEgPSBfbGV2ZWwuciAtIF9yO1xuICAgICAgICByRGVsdGFNYXggPSBNYXRoLm1heChyRGVsdGFNYXgsIHJEZWx0YSk7XG4gICAgICB9XG5cbiAgICAgIF9yID0gMDtcblxuICAgICAgZm9yICh2YXIgX2k1ID0gMDsgX2k1IDwgbGV2ZWxzLmxlbmd0aDsgX2k1KyspIHtcbiAgICAgICAgdmFyIF9sZXZlbDIgPSBsZXZlbHNbX2k1XTtcblxuICAgICAgICBpZiAoX2k1ID09PSAwKSB7XG4gICAgICAgICAgX3IgPSBfbGV2ZWwyLnI7XG4gICAgICAgIH1cblxuICAgICAgICBfbGV2ZWwyLnIgPSBfcjtcbiAgICAgICAgX3IgKz0gckRlbHRhTWF4O1xuICAgICAgfVxuICAgIH0gLy8gY2FsY3VsYXRlIHRoZSBub2RlIHBvc2l0aW9uc1xuXG5cbiAgICB2YXIgcG9zID0ge307IC8vIGlkID0+IHBvc2l0aW9uXG5cbiAgICBmb3IgKHZhciBfaTYgPSAwOyBfaTYgPCBsZXZlbHMubGVuZ3RoOyBfaTYrKykge1xuICAgICAgdmFyIF9sZXZlbDMgPSBsZXZlbHNbX2k2XTtcbiAgICAgIHZhciBfZFRoZXRhID0gX2xldmVsMy5kVGhldGE7XG4gICAgICB2YXIgX3IyID0gX2xldmVsMy5yO1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9sZXZlbDMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIF92YWwgPSBfbGV2ZWwzW2pdO1xuICAgICAgICB2YXIgdGhldGEgPSBvcHRpb25zLnN0YXJ0QW5nbGUgKyAoY2xvY2t3aXNlID8gMSA6IC0xKSAqIF9kVGhldGEgKiBqO1xuICAgICAgICB2YXIgcCA9IHtcbiAgICAgICAgICB4OiBjZW50ZXIueCArIF9yMiAqIE1hdGguY29zKHRoZXRhKSxcbiAgICAgICAgICB5OiBjZW50ZXIueSArIF9yMiAqIE1hdGguc2luKHRoZXRhKVxuICAgICAgICB9O1xuICAgICAgICBwb3NbX3ZhbC5ub2RlLmlkKCldID0gcDtcbiAgICAgIH1cbiAgICB9IC8vIHBvc2l0aW9uIHRoZSBub2Rlc1xuXG5cbiAgICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgcmV0dXJuIHBvc1tpZF07XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07XG5cbiAgLypcbiAgVGhlIENvU0UgbGF5b3V0IHdhcyB3cml0dGVuIGJ5IEdlcmFyZG8gSHVjay5cbiAgaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2dlcmFyZG9odWNrL1xuXG4gIEJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgYXJ0aWNsZTpcbiAgaHR0cDovL2RsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTE0OTgwNDdcblxuICBNb2RpZmljYXRpb25zIHRyYWNrZWQgb24gR2l0aHViLlxuICAqL1xuICB2YXIgREVCVUc7XG4gIC8qKlxuICAgKiBAYnJpZWYgOiAgZGVmYXVsdCBsYXlvdXQgb3B0aW9uc1xuICAgKi9cblxuICB2YXIgZGVmYXVsdHMkNCA9IHtcbiAgICAvLyBDYWxsZWQgb24gYGxheW91dHJlYWR5YFxuICAgIHJlYWR5OiBmdW5jdGlvbiByZWFkeSgpIHt9LFxuICAgIC8vIENhbGxlZCBvbiBgbGF5b3V0c3RvcGBcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30sXG4gICAgLy8gV2hldGhlciB0byBhbmltYXRlIHdoaWxlIHJ1bm5pbmcgdGhlIGxheW91dFxuICAgIC8vIHRydWUgOiBBbmltYXRlIGNvbnRpbnVvdXNseSBhcyB0aGUgbGF5b3V0IGlzIHJ1bm5pbmdcbiAgICAvLyBmYWxzZSA6IEp1c3Qgc2hvdyB0aGUgZW5kIHJlc3VsdFxuICAgIC8vICdlbmQnIDogQW5pbWF0ZSB3aXRoIHRoZSBlbmQgcmVzdWx0LCBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9ucyB0byB0aGUgZW5kIHBvc2l0aW9uc1xuICAgIGFuaW1hdGU6IHRydWUsXG4gICAgLy8gRWFzaW5nIG9mIHRoZSBhbmltYXRpb24gZm9yIGFuaW1hdGU6J2VuZCdcbiAgICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgICAvLyBUaGUgZHVyYXRpb24gb2YgdGhlIGFuaW1hdGlvbiBmb3IgYW5pbWF0ZTonZW5kJ1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiB1bmRlZmluZWQsXG4gICAgLy8gQSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWRcbiAgICAvLyBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWRcbiAgICAvLyBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICAgIGFuaW1hdGVGaWx0ZXI6IGZ1bmN0aW9uIGFuaW1hdGVGaWx0ZXIobm9kZSwgaSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICAvLyBUaGUgbGF5b3V0IGFuaW1hdGVzIG9ubHkgYWZ0ZXIgdGhpcyBtYW55IG1pbGxpc2Vjb25kcyBmb3IgYW5pbWF0ZTp0cnVlXG4gICAgLy8gKHByZXZlbnRzIGZsYXNoaW5nIG9uIGZhc3QgcnVucylcbiAgICBhbmltYXRpb25UaHJlc2hvbGQ6IDI1MCxcbiAgICAvLyBOdW1iZXIgb2YgaXRlcmF0aW9ucyBiZXR3ZWVuIGNvbnNlY3V0aXZlIHNjcmVlbiBwb3NpdGlvbnMgdXBkYXRlXG4gICAgcmVmcmVzaDogMjAsXG4gICAgLy8gV2hldGhlciB0byBmaXQgdGhlIG5ldHdvcmsgdmlldyBhZnRlciB3aGVuIGRvbmVcbiAgICBmaXQ6IHRydWUsXG4gICAgLy8gUGFkZGluZyBvbiBmaXRcbiAgICBwYWRkaW5nOiAzMCxcbiAgICAvLyBDb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAgIC8vIEV4Y2x1ZGVzIHRoZSBsYWJlbCB3aGVuIGNhbGN1bGF0aW5nIG5vZGUgYm91bmRpbmcgYm94ZXMgZm9yIHRoZSBsYXlvdXQgYWxnb3JpdGhtXG4gICAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgICAvLyBSYW5kb21pemUgdGhlIGluaXRpYWwgcG9zaXRpb25zIG9mIHRoZSBub2RlcyAodHJ1ZSkgb3IgdXNlIGV4aXN0aW5nIHBvc2l0aW9ucyAoZmFsc2UpXG4gICAgcmFuZG9taXplOiBmYWxzZSxcbiAgICAvLyBFeHRyYSBzcGFjaW5nIGJldHdlZW4gY29tcG9uZW50cyBpbiBub24tY29tcG91bmQgZ3JhcGhzXG4gICAgY29tcG9uZW50U3BhY2luZzogNDAsXG4gICAgLy8gTm9kZSByZXB1bHNpb24gKG5vbiBvdmVybGFwcGluZykgbXVsdGlwbGllclxuICAgIG5vZGVSZXB1bHNpb246IGZ1bmN0aW9uIG5vZGVSZXB1bHNpb24obm9kZSkge1xuICAgICAgcmV0dXJuIDIwNDg7XG4gICAgfSxcbiAgICAvLyBOb2RlIHJlcHVsc2lvbiAob3ZlcmxhcHBpbmcpIG11bHRpcGxpZXJcbiAgICBub2RlT3ZlcmxhcDogNCxcbiAgICAvLyBJZGVhbCBlZGdlIChub24gbmVzdGVkKSBsZW5ndGhcbiAgICBpZGVhbEVkZ2VMZW5ndGg6IGZ1bmN0aW9uIGlkZWFsRWRnZUxlbmd0aChlZGdlKSB7XG4gICAgICByZXR1cm4gMzI7XG4gICAgfSxcbiAgICAvLyBEaXZpc29yIHRvIGNvbXB1dGUgZWRnZSBmb3JjZXNcbiAgICBlZGdlRWxhc3RpY2l0eTogZnVuY3Rpb24gZWRnZUVsYXN0aWNpdHkoZWRnZSkge1xuICAgICAgcmV0dXJuIDMyO1xuICAgIH0sXG4gICAgLy8gTmVzdGluZyBmYWN0b3IgKG11bHRpcGxpZXIpIHRvIGNvbXB1dGUgaWRlYWwgZWRnZSBsZW5ndGggZm9yIG5lc3RlZCBlZGdlc1xuICAgIG5lc3RpbmdGYWN0b3I6IDEuMixcbiAgICAvLyBHcmF2aXR5IGZvcmNlIChjb25zdGFudClcbiAgICBncmF2aXR5OiAxLFxuICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gcGVyZm9ybVxuICAgIG51bUl0ZXI6IDEwMDAsXG4gICAgLy8gSW5pdGlhbCB0ZW1wZXJhdHVyZSAobWF4aW11bSBub2RlIGRpc3BsYWNlbWVudClcbiAgICBpbml0aWFsVGVtcDogMTAwMCxcbiAgICAvLyBDb29saW5nIGZhY3RvciAoaG93IHRoZSB0ZW1wZXJhdHVyZSBpcyByZWR1Y2VkIGJldHdlZW4gY29uc2VjdXRpdmUgaXRlcmF0aW9uc1xuICAgIGNvb2xpbmdGYWN0b3I6IDAuOTksXG4gICAgLy8gTG93ZXIgdGVtcGVyYXR1cmUgdGhyZXNob2xkIChiZWxvdyB0aGlzIHBvaW50IHRoZSBsYXlvdXQgd2lsbCBlbmQpXG4gICAgbWluVGVtcDogMS4wXG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgICAgICAgOiBjb25zdHJ1Y3RvclxuICAgKiBAYXJnIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuICAgKi9cblxuICBmdW5jdGlvbiBDb3NlTGF5b3V0KG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJDQsIG9wdGlvbnMpO1xuICAgIHRoaXMub3B0aW9ucy5sYXlvdXQgPSB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBydW5zIHRoZSBsYXlvdXRcbiAgICovXG5cblxuICBDb3NlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgdmFyIGN5ID0gb3B0aW9ucy5jeTtcbiAgICB2YXIgbGF5b3V0ID0gdGhpcztcbiAgICBsYXlvdXQuc3RvcHBlZCA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuYW5pbWF0ZSA9PT0gdHJ1ZSB8fCBvcHRpb25zLmFuaW1hdGUgPT09IGZhbHNlKSB7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRzdGFydCcsXG4gICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICB9KTtcbiAgICB9IC8vIFNldCBERUJVRyAtIEdsb2JhbCB2YXJpYWJsZVxuXG5cbiAgICBpZiAodHJ1ZSA9PT0gb3B0aW9ucy5kZWJ1Zykge1xuICAgICAgREVCVUcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBERUJVRyA9IGZhbHNlO1xuICAgIH0gLy8gSW5pdGlhbGl6ZSBsYXlvdXQgaW5mb1xuXG5cbiAgICB2YXIgbGF5b3V0SW5mbyA9IGNyZWF0ZUxheW91dEluZm8oY3ksIGxheW91dCwgb3B0aW9ucyk7IC8vIFNob3cgTGF5b3V0SW5mbyBjb250ZW50cyBpZiBkZWJ1Z2dpbmdcblxuICAgIGlmIChERUJVRykge1xuICAgICAgcHJpbnRMYXlvdXRJbmZvKGxheW91dEluZm8pO1xuICAgIH0gLy8gSWYgcmVxdWlyZWQsIHJhbmRvbWl6ZSBub2RlIHBvc2l0aW9uc1xuXG5cbiAgICBpZiAob3B0aW9ucy5yYW5kb21pemUpIHtcbiAgICAgIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvKTtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2VOb3coKTtcblxuICAgIHZhciByZWZyZXNoID0gZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICAgIHJlZnJlc2hQb3NpdGlvbnMobGF5b3V0SW5mbywgY3ksIG9wdGlvbnMpOyAvLyBGaXQgdGhlIGdyYXBoIGlmIG5lY2Vzc2FyeVxuXG4gICAgICBpZiAodHJ1ZSA9PT0gb3B0aW9ucy5maXQpIHtcbiAgICAgICAgY3kuZml0KG9wdGlvbnMucGFkZGluZyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBtYWluTG9vcCA9IGZ1bmN0aW9uIG1haW5Mb29wKGkpIHtcbiAgICAgIGlmIChsYXlvdXQuc3RvcHBlZCB8fCBpID49IG9wdGlvbnMubnVtSXRlcikge1xuICAgICAgICAvLyBsb2dEZWJ1ZyhcIkxheW91dCBtYW51YWxseSBzdG9wcGVkLiBTdG9wcGluZyBjb21wdXRhdGlvbiBpbiBzdGVwIFwiICsgaSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gLy8gRG8gb25lIHN0ZXAgaW4gdGhlIHBoaXNpY2FsIHNpbXVsYXRpb25cblxuXG4gICAgICBzdGVwKGxheW91dEluZm8sIG9wdGlvbnMpOyAvLyBVcGRhdGUgdGVtcGVyYXR1cmVcblxuICAgICAgbGF5b3V0SW5mby50ZW1wZXJhdHVyZSA9IGxheW91dEluZm8udGVtcGVyYXR1cmUgKiBvcHRpb25zLmNvb2xpbmdGYWN0b3I7IC8vIGxvZ0RlYnVnKFwiTmV3IHRlbXBlcmF0dXJlOiBcIiArIGxheW91dEluZm8udGVtcGVyYXR1cmUpO1xuXG4gICAgICBpZiAobGF5b3V0SW5mby50ZW1wZXJhdHVyZSA8IG9wdGlvbnMubWluVGVtcCkge1xuICAgICAgICAvLyBsb2dEZWJ1ZyhcIlRlbXBlcmF0dXJlIGRyb3AgYmVsb3cgbWluaW11bSB0aHJlc2hvbGQuIFN0b3BwaW5nIGNvbXB1dGF0aW9uIGluIHN0ZXAgXCIgKyBpKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKCkge1xuICAgICAgaWYgKG9wdGlvbnMuYW5pbWF0ZSA9PT0gdHJ1ZSB8fCBvcHRpb25zLmFuaW1hdGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHJlZnJlc2goKTsgLy8gTGF5b3V0IGhhcyBmaW5pc2hlZFxuXG4gICAgICAgIGxheW91dC5vbmUoJ2xheW91dHN0b3AnLCBvcHRpb25zLnN0b3ApO1xuICAgICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2xheW91dHN0b3AnLFxuICAgICAgICAgIGxheW91dDogbGF5b3V0XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5vZGVzID0gb3B0aW9ucy5lbGVzLm5vZGVzKCk7XG4gICAgICAgIHZhciBnZXRTY2FsZWRQb3MgPSBnZXRTY2FsZUluQm91bmRzRm4obGF5b3V0SW5mbywgb3B0aW9ucywgbm9kZXMpO1xuICAgICAgICBub2Rlcy5sYXlvdXRQb3NpdGlvbnMobGF5b3V0LCBvcHRpb25zLCBnZXRTY2FsZWRQb3MpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGxvb3BSZXQgPSB0cnVlO1xuXG4gICAgaWYgKG9wdGlvbnMuYW5pbWF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgdmFyIGZyYW1lID0gZnVuY3Rpb24gZnJhbWUoKSB7XG4gICAgICAgIHZhciBmID0gMDtcblxuICAgICAgICB3aGlsZSAobG9vcFJldCAmJiBmIDwgb3B0aW9ucy5yZWZyZXNoKSB7XG4gICAgICAgICAgbG9vcFJldCA9IG1haW5Mb29wKGkpO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBmKys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvb3BSZXQpIHtcbiAgICAgICAgICAvLyBpdCdzIGRvbmVcbiAgICAgICAgICBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucyk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBub3cgPSBwZXJmb3JtYW5jZU5vdygpO1xuXG4gICAgICAgICAgaWYgKG5vdyAtIHN0YXJ0VGltZSA+PSBvcHRpb25zLmFuaW1hdGlvblRocmVzaG9sZCkge1xuICAgICAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZyYW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChsb29wUmV0KSB7XG4gICAgICAgIGxvb3BSZXQgPSBtYWluTG9vcChpKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuXG4gICAgICBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucyk7XG4gICAgICBkb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcbiAgICovXG5cblxuICBDb3NlTGF5b3V0LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc3RvcHBlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy50aHJlYWQpIHtcbiAgICAgIHRoaXMudGhyZWFkLnN0b3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXQoJ2xheW91dHN0b3AnKTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfTtcblxuICBDb3NlTGF5b3V0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnRocmVhZCkge1xuICAgICAgdGhpcy50aHJlYWQuc3RvcCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuICAvKipcbiAgICogQGJyaWVmICAgICA6IENyZWF0ZXMgYW4gb2JqZWN0IHdoaWNoIGlzIGNvbnRhaW5zIGFsbCB0aGUgZGF0YVxuICAgKiAgICAgICAgICAgICAgdXNlZCBpbiB0aGUgbGF5b3V0IHByb2Nlc3NcbiAgICogQGFyZyBjeSAgICA6IGN5dG9zY2FwZS5qcyBvYmplY3RcbiAgICogQHJldHVybiAgICA6IGxheW91dEluZm8gb2JqZWN0IGluaXRpYWxpemVkXG4gICAqL1xuXG5cbiAgdmFyIGNyZWF0ZUxheW91dEluZm8gPSBmdW5jdGlvbiBjcmVhdGVMYXlvdXRJbmZvKGN5LCBsYXlvdXQsIG9wdGlvbnMpIHtcbiAgICAvLyBTaG9ydGN1dFxuICAgIHZhciBlZGdlcyA9IG9wdGlvbnMuZWxlcy5lZGdlcygpO1xuICAgIHZhciBub2RlcyA9IG9wdGlvbnMuZWxlcy5ub2RlcygpO1xuICAgIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB3OiBjeS53aWR0aCgpLFxuICAgICAgaDogY3kuaGVpZ2h0KClcbiAgICB9KTtcbiAgICB2YXIgbGF5b3V0SW5mbyA9IHtcbiAgICAgIGlzQ29tcG91bmQ6IGN5Lmhhc0NvbXBvdW5kTm9kZXMoKSxcbiAgICAgIGxheW91dE5vZGVzOiBbXSxcbiAgICAgIGlkVG9JbmRleDoge30sXG4gICAgICBub2RlU2l6ZTogbm9kZXMuc2l6ZSgpLFxuICAgICAgZ3JhcGhTZXQ6IFtdLFxuICAgICAgaW5kZXhUb0dyYXBoOiBbXSxcbiAgICAgIGxheW91dEVkZ2VzOiBbXSxcbiAgICAgIGVkZ2VTaXplOiBlZGdlcy5zaXplKCksXG4gICAgICB0ZW1wZXJhdHVyZTogb3B0aW9ucy5pbml0aWFsVGVtcCxcbiAgICAgIGNsaWVudFdpZHRoOiBiYi53LFxuICAgICAgY2xpZW50SGVpZ2h0OiBiYi5oLFxuICAgICAgYm91bmRpbmdCb3g6IGJiXG4gICAgfTtcbiAgICB2YXIgY29tcG9uZW50cyA9IG9wdGlvbnMuZWxlcy5jb21wb25lbnRzKCk7XG4gICAgdmFyIGlkMmNtcHRJZCA9IHt9O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb21wb25lbnQubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBjb21wb25lbnRbal07XG4gICAgICAgIGlkMmNtcHRJZFtub2RlLmlkKCldID0gaTtcbiAgICAgIH1cbiAgICB9IC8vIEl0ZXJhdGUgb3ZlciBhbGwgbm9kZXMsIGNyZWF0aW5nIGxheW91dCBub2Rlc1xuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8ubm9kZVNpemU7IGkrKykge1xuICAgICAgdmFyIG4gPSBub2Rlc1tpXTtcbiAgICAgIHZhciBuYmIgPSBuLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICB2YXIgdGVtcE5vZGUgPSB7fTtcbiAgICAgIHRlbXBOb2RlLmlzTG9ja2VkID0gbi5sb2NrZWQoKTtcbiAgICAgIHRlbXBOb2RlLmlkID0gbi5kYXRhKCdpZCcpO1xuICAgICAgdGVtcE5vZGUucGFyZW50SWQgPSBuLmRhdGEoJ3BhcmVudCcpO1xuICAgICAgdGVtcE5vZGUuY21wdElkID0gaWQyY21wdElkW24uaWQoKV07XG4gICAgICB0ZW1wTm9kZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgdGVtcE5vZGUucG9zaXRpb25YID0gbi5wb3NpdGlvbigneCcpO1xuICAgICAgdGVtcE5vZGUucG9zaXRpb25ZID0gbi5wb3NpdGlvbigneScpO1xuICAgICAgdGVtcE5vZGUub2Zmc2V0WCA9IDA7XG4gICAgICB0ZW1wTm9kZS5vZmZzZXRZID0gMDtcbiAgICAgIHRlbXBOb2RlLmhlaWdodCA9IG5iYi53O1xuICAgICAgdGVtcE5vZGUud2lkdGggPSBuYmIuaDtcbiAgICAgIHRlbXBOb2RlLm1heFggPSB0ZW1wTm9kZS5wb3NpdGlvblggKyB0ZW1wTm9kZS53aWR0aCAvIDI7XG4gICAgICB0ZW1wTm9kZS5taW5YID0gdGVtcE5vZGUucG9zaXRpb25YIC0gdGVtcE5vZGUud2lkdGggLyAyO1xuICAgICAgdGVtcE5vZGUubWF4WSA9IHRlbXBOb2RlLnBvc2l0aW9uWSArIHRlbXBOb2RlLmhlaWdodCAvIDI7XG4gICAgICB0ZW1wTm9kZS5taW5ZID0gdGVtcE5vZGUucG9zaXRpb25ZIC0gdGVtcE5vZGUuaGVpZ2h0IC8gMjtcbiAgICAgIHRlbXBOb2RlLnBhZExlZnQgPSBwYXJzZUZsb2F0KG4uc3R5bGUoJ3BhZGRpbmcnKSk7XG4gICAgICB0ZW1wTm9kZS5wYWRSaWdodCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICAgIHRlbXBOb2RlLnBhZFRvcCA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTtcbiAgICAgIHRlbXBOb2RlLnBhZEJvdHRvbSA9IHBhcnNlRmxvYXQobi5zdHlsZSgncGFkZGluZycpKTsgLy8gZm9yY2VzXG5cbiAgICAgIHRlbXBOb2RlLm5vZGVSZXB1bHNpb24gPSBmbiQ2KG9wdGlvbnMubm9kZVJlcHVsc2lvbikgPyBvcHRpb25zLm5vZGVSZXB1bHNpb24obikgOiBvcHRpb25zLm5vZGVSZXB1bHNpb247IC8vIEFkZCBuZXcgbm9kZVxuXG4gICAgICBsYXlvdXRJbmZvLmxheW91dE5vZGVzLnB1c2godGVtcE5vZGUpOyAvLyBBZGQgZW50cnkgdG8gaWQtaW5kZXggbWFwXG5cbiAgICAgIGxheW91dEluZm8uaWRUb0luZGV4W3RlbXBOb2RlLmlkXSA9IGk7XG4gICAgfSAvLyBJbmxpbmUgaW1wbGVtZW50YXRpb24gb2YgYSBxdWV1ZSwgdXNlZCBmb3IgdHJhdmVyc2luZyB0aGUgZ3JhcGggaW4gQkZTIG9yZGVyXG5cblxuICAgIHZhciBxdWV1ZSA9IFtdO1xuICAgIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgICB2YXIgZW5kID0gLTE7IC8vIFBvaW50cyB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZVxuXG4gICAgdmFyIHRlbXBHcmFwaCA9IFtdOyAvLyBTZWNvbmQgcGFzcyB0byBhZGQgY2hpbGQgaW5mb3JtYXRpb24gYW5kXG4gICAgLy8gaW5pdGlhbGl6ZSBxdWV1ZSBmb3IgaGllcmFyY2hpY2FsIHRyYXZlcnNhbFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICAgIHZhciBuID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tpXTtcbiAgICAgIHZhciBwX2lkID0gbi5wYXJlbnRJZDsgLy8gQ2hlY2sgaWYgbm9kZSBuIGhhcyBhIHBhcmVudCBub2RlXG5cbiAgICAgIGlmIChudWxsICE9IHBfaWQpIHtcbiAgICAgICAgLy8gQWRkIG5vZGUgSWQgdG8gcGFyZW50J3MgbGlzdCBvZiBjaGlsZHJlblxuICAgICAgICBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3BfaWRdXS5jaGlsZHJlbi5wdXNoKG4uaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYSBub2RlIGRvZXNuJ3QgaGF2ZSBhIHBhcmVudCwgdGhlbiBpdCdzIGluIHRoZSByb290IGdyYXBoXG4gICAgICAgIHF1ZXVlWysrZW5kXSA9IG4uaWQ7XG4gICAgICAgIHRlbXBHcmFwaC5wdXNoKG4uaWQpO1xuICAgICAgfVxuICAgIH0gLy8gQWRkIHJvb3QgZ3JhcGggdG8gZ3JhcGhTZXRcblxuXG4gICAgbGF5b3V0SW5mby5ncmFwaFNldC5wdXNoKHRlbXBHcmFwaCk7IC8vIFRyYXZlcnNlIHRoZSBncmFwaCwgbGV2ZWwgYnkgbGV2ZWwsXG5cbiAgICB3aGlsZSAoc3RhcnQgPD0gZW5kKSB7XG4gICAgICAvLyBHZXQgdGhlIG5vZGUgdG8gdmlzaXQgYW5kIHJlbW92ZSBpdCBmcm9tIHF1ZXVlXG4gICAgICB2YXIgbm9kZV9pZCA9IHF1ZXVlW3N0YXJ0KytdO1xuICAgICAgdmFyIG5vZGVfaXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlX2lkXTtcbiAgICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tub2RlX2l4XTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XG5cbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIEFkZCBjaGlsZHJlbiBub2RlcyBhcyBhIG5ldyBncmFwaCB0byBncmFwaCBzZXRcbiAgICAgICAgbGF5b3V0SW5mby5ncmFwaFNldC5wdXNoKGNoaWxkcmVuKTsgLy8gQWRkIGNoaWxkcmVuIHRvIHF1ZSBxdWV1ZSB0byBiZSB2aXNpdGVkXG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHF1ZXVlWysrZW5kXSA9IGNoaWxkcmVuW2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBDcmVhdGUgaW5kZXhUb0dyYXBoIG1hcFxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8uZ3JhcGhTZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBncmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbaV07XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ3JhcGgubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbZ3JhcGhbal1dO1xuICAgICAgICBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFtpbmRleF0gPSBpO1xuICAgICAgfVxuICAgIH0gLy8gSXRlcmF0ZSBvdmVyIGFsbCBlZGdlcywgY3JlYXRpbmcgTGF5b3V0IEVkZ2VzXG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5lZGdlU2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIHRlbXBFZGdlID0ge307XG4gICAgICB0ZW1wRWRnZS5pZCA9IGUuZGF0YSgnaWQnKTtcbiAgICAgIHRlbXBFZGdlLnNvdXJjZUlkID0gZS5kYXRhKCdzb3VyY2UnKTtcbiAgICAgIHRlbXBFZGdlLnRhcmdldElkID0gZS5kYXRhKCd0YXJnZXQnKTsgLy8gQ29tcHV0ZSBpZGVhbCBsZW5ndGhcblxuICAgICAgdmFyIGlkZWFsTGVuZ3RoID0gZm4kNihvcHRpb25zLmlkZWFsRWRnZUxlbmd0aCkgPyBvcHRpb25zLmlkZWFsRWRnZUxlbmd0aChlKSA6IG9wdGlvbnMuaWRlYWxFZGdlTGVuZ3RoO1xuICAgICAgdmFyIGVsYXN0aWNpdHkgPSBmbiQ2KG9wdGlvbnMuZWRnZUVsYXN0aWNpdHkpID8gb3B0aW9ucy5lZGdlRWxhc3RpY2l0eShlKSA6IG9wdGlvbnMuZWRnZUVsYXN0aWNpdHk7IC8vIENoZWNrIGlmIGl0J3MgYW4gaW50ZXIgZ3JhcGggZWRnZVxuXG4gICAgICB2YXIgc291cmNlSXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wRWRnZS5zb3VyY2VJZF07XG4gICAgICB2YXIgdGFyZ2V0SXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wRWRnZS50YXJnZXRJZF07XG4gICAgICB2YXIgc291cmNlR3JhcGggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFtzb3VyY2VJeF07XG4gICAgICB2YXIgdGFyZ2V0R3JhcGggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFt0YXJnZXRJeF07XG5cbiAgICAgIGlmIChzb3VyY2VHcmFwaCAhPSB0YXJnZXRHcmFwaCkge1xuICAgICAgICAvLyBGaW5kIGxvd2VzdCBjb21tb24gZ3JhcGggYW5jZXN0b3JcbiAgICAgICAgdmFyIGxjYSA9IGZpbmRMQ0EodGVtcEVkZ2Uuc291cmNlSWQsIHRlbXBFZGdlLnRhcmdldElkLCBsYXlvdXRJbmZvKTsgLy8gQ29tcHV0ZSBzdW0gb2Ygbm9kZSBkZXB0aHMsIHJlbGF0aXZlIHRvIGxjYSBncmFwaFxuXG4gICAgICAgIHZhciBsY2FHcmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbbGNhXTtcbiAgICAgICAgdmFyIGRlcHRoID0gMDsgLy8gU291cmNlIGRlcHRoXG5cbiAgICAgICAgdmFyIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tzb3VyY2VJeF07XG5cbiAgICAgICAgd2hpbGUgKC0xID09PSBsY2FHcmFwaC5pbmRleE9mKHRlbXBOb2RlLmlkKSkge1xuICAgICAgICAgIHRlbXBOb2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFt0ZW1wTm9kZS5wYXJlbnRJZF1dO1xuICAgICAgICAgIGRlcHRoKys7XG4gICAgICAgIH0gLy8gVGFyZ2V0IGRlcHRoXG5cblxuICAgICAgICB0ZW1wTm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbdGFyZ2V0SXhdO1xuXG4gICAgICAgIHdoaWxlICgtMSA9PT0gbGNhR3JhcGguaW5kZXhPZih0ZW1wTm9kZS5pZCkpIHtcbiAgICAgICAgICB0ZW1wTm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbdGVtcE5vZGUucGFyZW50SWRdXTtcbiAgICAgICAgICBkZXB0aCsrO1xuICAgICAgICB9IC8vIGxvZ0RlYnVnKCdMQ0Egb2Ygbm9kZXMgJyArIHRlbXBFZGdlLnNvdXJjZUlkICsgJyBhbmQgJyArIHRlbXBFZGdlLnRhcmdldElkICtcbiAgICAgICAgLy8gIFwiLiBJbmRleDogXCIgKyBsY2EgKyBcIiBDb250ZW50czogXCIgKyBsY2FHcmFwaC50b1N0cmluZygpICtcbiAgICAgICAgLy8gIFwiLiBEZXB0aDogXCIgKyBkZXB0aCk7XG4gICAgICAgIC8vIFVwZGF0ZSBpZGVhbExlbmd0aFxuXG5cbiAgICAgICAgaWRlYWxMZW5ndGggKj0gZGVwdGggKiBvcHRpb25zLm5lc3RpbmdGYWN0b3I7XG4gICAgICB9XG5cbiAgICAgIHRlbXBFZGdlLmlkZWFsTGVuZ3RoID0gaWRlYWxMZW5ndGg7XG4gICAgICB0ZW1wRWRnZS5lbGFzdGljaXR5ID0gZWxhc3RpY2l0eTtcbiAgICAgIGxheW91dEluZm8ubGF5b3V0RWRnZXMucHVzaCh0ZW1wRWRnZSk7XG4gICAgfSAvLyBGaW5hbGx5LCByZXR1cm4gbGF5b3V0SW5mbyBvYmplY3RcblxuXG4gICAgcmV0dXJuIGxheW91dEluZm87XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBpbmRleCBvZiB0aGUgbG93ZXN0IGNvbW1vblxuICAgKiAgICAgICAgICBncmFwaCBhbmNlc3RvciBiZXR3ZWVuIDIgbm9kZXMgaW4gdGhlIHN1YnRyZWVcbiAgICogICAgICAgICAgKGZyb20gdGhlIGdyYXBoIGhpZXJhcmNoeSBpbmR1Y2VkIHRyZWUpIHdob3NlXG4gICAqICAgICAgICAgIHJvb3QgaXMgZ3JhcGhJeFxuICAgKlxuICAgKiBAYXJnIG5vZGUxOiBub2RlMSdzIElEXG4gICAqIEBhcmcgbm9kZTI6IG5vZGUyJ3MgSURcbiAgICogQGFyZyBsYXlvdXRJbmZvOiBsYXlvdXRJbmZvIG9iamVjdFxuICAgKlxuICAgKi9cblxuXG4gIHZhciBmaW5kTENBID0gZnVuY3Rpb24gZmluZExDQShub2RlMSwgbm9kZTIsIGxheW91dEluZm8pIHtcbiAgICAvLyBGaW5kIHRoZWlyIGNvbW1vbiBhbmNlc3Rlciwgc3RhcnRpbmcgZnJvbSB0aGUgcm9vdCBncmFwaFxuICAgIHZhciByZXMgPSBmaW5kTENBX2F1eChub2RlMSwgbm9kZTIsIDAsIGxheW91dEluZm8pO1xuXG4gICAgaWYgKDIgPiByZXMuY291bnQpIHtcbiAgICAgIC8vIElmIGF1eCBmdW5jdGlvbiBjb3VsZG4ndCBmaW5kIHRoZSBjb21tb24gYW5jZXN0ZXIsXG4gICAgICAvLyB0aGVuIGl0IGlzIHRoZSByb290IGdyYXBoXG4gICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlcy5ncmFwaDtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgICAgICAgICAgOiBBdXhpbGlhcnkgZnVuY3Rpb24gdXNlZCBmb3IgTENBIGNvbXB1dGF0aW9uXG4gICAqXG4gICAqIEBhcmcgbm9kZTEgICAgICA6IG5vZGUxJ3MgSURcbiAgICogQGFyZyBub2RlMiAgICAgIDogbm9kZTIncyBJRFxuICAgKiBAYXJnIGdyYXBoSXggICAgOiBzdWJncmFwaCBpbmRleFxuICAgKiBAYXJnIGxheW91dEluZm8gOiBsYXlvdXRJbmZvIG9iamVjdFxuICAgKlxuICAgKiBAcmV0dXJuICAgICAgICAgOiBvYmplY3Qgb2YgdGhlIGZvcm0ge2NvdW50OiBYLCBncmFwaDogWX0sIHdoZXJlOlxuICAgKiAgICAgICAgICAgICAgICAgICBYIGlzIHRoZSBudW1iZXIgb2YgYW5jZXN0b3JzIChtYXg6IDIpIGZvdW5kIGluXG4gICAqICAgICAgICAgICAgICAgICAgIGdyYXBoSXggKGFuZCBpdCdzIHN1YmdyYXBocyksXG4gICAqICAgICAgICAgICAgICAgICAgIFkgaXMgdGhlIGdyYXBoIGluZGV4IG9mIHRoZSBsb3dlc3QgZ3JhcGggY29udGFpbmluZ1xuICAgKiAgICAgICAgICAgICAgICAgICBhbGwgWCBub2Rlc1xuICAgKi9cblxuXG4gIHZhciBmaW5kTENBX2F1eCA9IGZ1bmN0aW9uIGZpbmRMQ0FfYXV4KG5vZGUxLCBub2RlMiwgZ3JhcGhJeCwgbGF5b3V0SW5mbykge1xuICAgIHZhciBncmFwaCA9IGxheW91dEluZm8uZ3JhcGhTZXRbZ3JhcGhJeF07IC8vIElmIGJvdGggbm9kZXMgYmVsb25ncyB0byBncmFwaEl4XG5cbiAgICBpZiAoLTEgPCBncmFwaC5pbmRleE9mKG5vZGUxKSAmJiAtMSA8IGdyYXBoLmluZGV4T2Yobm9kZTIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogMixcbiAgICAgICAgZ3JhcGg6IGdyYXBoSXhcbiAgICAgIH07XG4gICAgfSAvLyBNYWtlIHJlY3Vyc2l2ZSBjYWxscyBmb3IgYWxsIHN1YmdyYXBoc1xuXG5cbiAgICB2YXIgYyA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbm9kZUlkID0gZ3JhcGhbaV07XG4gICAgICB2YXIgbm9kZUl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbbm9kZUlkXTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbm9kZUl4XS5jaGlsZHJlbjsgLy8gSWYgdGhlIG5vZGUgaGFzIG5vIGNoaWxkLCBza2lwIGl0XG5cbiAgICAgIGlmICgwID09PSBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBjaGlsZEdyYXBoSXggPSBsYXlvdXRJbmZvLmluZGV4VG9HcmFwaFtsYXlvdXRJbmZvLmlkVG9JbmRleFtjaGlsZHJlblswXV1dO1xuICAgICAgdmFyIHJlc3VsdCA9IGZpbmRMQ0FfYXV4KG5vZGUxLCBub2RlMiwgY2hpbGRHcmFwaEl4LCBsYXlvdXRJbmZvKTtcblxuICAgICAgaWYgKDAgPT09IHJlc3VsdC5jb3VudCkge1xuICAgICAgICAvLyBOZWl0aGVyIG5vZGUxIG5vciBub2RlMiBhcmUgcHJlc2VudCBpbiB0aGlzIHN1YmdyYXBoXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmICgxID09PSByZXN1bHQuY291bnQpIHtcbiAgICAgICAgLy8gT25lIG9mIChub2RlMSwgbm9kZTIpIGlzIHByZXNlbnQgaW4gdGhpcyBzdWJncmFwaFxuICAgICAgICBjKys7XG5cbiAgICAgICAgaWYgKDIgPT09IGMpIHtcbiAgICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGZvdW5kIGJvdGggbm9kZXMsIG5vIG5lZWQgdG8ga2VlcCBzZWFyY2hpbmdcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQm90aCBub2RlcyBhcmUgcHJlc2VudCBpbiB0aGlzIHN1YmdyYXBoXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvdW50OiBjLFxuICAgICAgZ3JhcGg6IGdyYXBoSXhcbiAgICB9O1xuICB9O1xuICAvKipcbiAgICogQGJyaWVmOiBwcmludHNMYXlvdXRJbmZvIGludG8ganMgY29uc29sZVxuICAgKiAgICAgICAgIE9ubHkgdXNlZCBmb3IgZGViYnVnaW5nXG4gICAqL1xuXG5cbnZhciBwcmludExheW91dEluZm87IFxuICAvKipcbiAgICogQGJyaWVmIDogUmFuZG9taXplcyB0aGUgcG9zaXRpb24gb2YgYWxsIG5vZGVzXG4gICAqL1xuXG5cbiAgdmFyIHJhbmRvbWl6ZVBvc2l0aW9ucyA9IGZ1bmN0aW9uIHJhbmRvbWl6ZVBvc2l0aW9ucyhsYXlvdXRJbmZvLCBjeSkge1xuICAgIHZhciB3aWR0aCA9IGxheW91dEluZm8uY2xpZW50V2lkdGg7XG4gICAgdmFyIGhlaWdodCA9IGxheW91dEluZm8uY2xpZW50SGVpZ2h0O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLm5vZGVTaXplOyBpKyspIHtcbiAgICAgIHZhciBuID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tpXTsgLy8gTm8gbmVlZCB0byByYW5kb21pemUgY29tcG91bmQgbm9kZXMgb3IgbG9ja2VkIG5vZGVzXG5cbiAgICAgIGlmICgwID09PSBuLmNoaWxkcmVuLmxlbmd0aCAmJiAhbi5pc0xvY2tlZCkge1xuICAgICAgICBuLnBvc2l0aW9uWCA9IE1hdGgucmFuZG9tKCkgKiB3aWR0aDtcbiAgICAgICAgbi5wb3NpdGlvblkgPSBNYXRoLnJhbmRvbSgpICogaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0U2NhbGVJbkJvdW5kc0ZuID0gZnVuY3Rpb24gZ2V0U2NhbGVJbkJvdW5kc0ZuKGxheW91dEluZm8sIG9wdGlvbnMsIG5vZGVzKSB7XG4gICAgdmFyIGJiID0gbGF5b3V0SW5mby5ib3VuZGluZ0JveDtcbiAgICB2YXIgY29zZUJCID0ge1xuICAgICAgeDE6IEluZmluaXR5LFxuICAgICAgeDI6IC1JbmZpbml0eSxcbiAgICAgIHkxOiBJbmZpbml0eSxcbiAgICAgIHkyOiAtSW5maW5pdHlcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuYm91bmRpbmdCb3gpIHtcbiAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIGxub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlLmRhdGEoJ2lkJyldXTtcbiAgICAgICAgY29zZUJCLngxID0gTWF0aC5taW4oY29zZUJCLngxLCBsbm9kZS5wb3NpdGlvblgpO1xuICAgICAgICBjb3NlQkIueDIgPSBNYXRoLm1heChjb3NlQkIueDIsIGxub2RlLnBvc2l0aW9uWCk7XG4gICAgICAgIGNvc2VCQi55MSA9IE1hdGgubWluKGNvc2VCQi55MSwgbG5vZGUucG9zaXRpb25ZKTtcbiAgICAgICAgY29zZUJCLnkyID0gTWF0aC5tYXgoY29zZUJCLnkyLCBsbm9kZS5wb3NpdGlvblkpO1xuICAgICAgfSk7XG4gICAgICBjb3NlQkIudyA9IGNvc2VCQi54MiAtIGNvc2VCQi54MTtcbiAgICAgIGNvc2VCQi5oID0gY29zZUJCLnkyIC0gY29zZUJCLnkxO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoZWxlLCBpKSB7XG4gICAgICB2YXIgbG5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2VsZS5kYXRhKCdpZCcpXV07XG5cbiAgICAgIGlmIChvcHRpb25zLmJvdW5kaW5nQm94KSB7XG4gICAgICAgIC8vIHRoZW4gYWRkIGV4dHJhIGJvdW5kaW5nIGJveCBjb25zdHJhaW50XG4gICAgICAgIHZhciBwY3RYID0gKGxub2RlLnBvc2l0aW9uWCAtIGNvc2VCQi54MSkgLyBjb3NlQkIudztcbiAgICAgICAgdmFyIHBjdFkgPSAobG5vZGUucG9zaXRpb25ZIC0gY29zZUJCLnkxKSAvIGNvc2VCQi5oO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGJiLngxICsgcGN0WCAqIGJiLncsXG4gICAgICAgICAgeTogYmIueTEgKyBwY3RZICogYmIuaFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBsbm9kZS5wb3NpdGlvblgsXG4gICAgICAgICAgeTogbG5vZGUucG9zaXRpb25ZXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbiAgLyoqXG4gICAqIEBicmllZiAgICAgICAgICA6IFVwZGF0ZXMgdGhlIHBvc2l0aW9ucyBvZiBub2RlcyBpbiB0aGUgbmV0d29ya1xuICAgKiBAYXJnIGxheW91dEluZm8gOiBMYXlvdXRJbmZvIG9iamVjdFxuICAgKiBAYXJnIGN5ICAgICAgICAgOiBDeXRvc2NhcGUgb2JqZWN0XG4gICAqIEBhcmcgb3B0aW9ucyAgICA6IExheW91dCBvcHRpb25zXG4gICAqL1xuXG5cbiAgdmFyIHJlZnJlc2hQb3NpdGlvbnMgPSBmdW5jdGlvbiByZWZyZXNoUG9zaXRpb25zKGxheW91dEluZm8sIGN5LCBvcHRpb25zKSB7XG4gICAgLy8gdmFyIHMgPSAnUmVmcmVzaGluZyBwb3NpdGlvbnMnO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIHZhciBsYXlvdXQgPSBvcHRpb25zLmxheW91dDtcbiAgICB2YXIgbm9kZXMgPSBvcHRpb25zLmVsZXMubm9kZXMoKTtcbiAgICB2YXIgZ2V0U2NhbGVkUG9zID0gZ2V0U2NhbGVJbkJvdW5kc0ZuKGxheW91dEluZm8sIG9wdGlvbnMsIG5vZGVzKTtcbiAgICBub2Rlcy5wb3NpdGlvbnMoZ2V0U2NhbGVkUG9zKTsgLy8gVHJpZ2dlciBsYXlvdXRSZWFkeSBvbmx5IG9uIGZpcnN0IGNhbGxcblxuICAgIGlmICh0cnVlICE9PSBsYXlvdXRJbmZvLnJlYWR5KSB7XG4gICAgICAvLyBzID0gJ1RyaWdnZXJpbmcgbGF5b3V0cmVhZHknO1xuICAgICAgLy8gbG9nRGVidWcocyk7XG4gICAgICBsYXlvdXRJbmZvLnJlYWR5ID0gdHJ1ZTtcbiAgICAgIGxheW91dC5vbmUoJ2xheW91dHJlYWR5Jywgb3B0aW9ucy5yZWFkeSk7XG4gICAgICBsYXlvdXQuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdsYXlvdXRyZWFkeScsXG4gICAgICAgIGxheW91dDogdGhpc1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQGJyaWVmIDogTG9ncyBhIGRlYnVnIG1lc3NhZ2UgaW4gSlMgY29uc29sZSwgaWYgREVCVUcgaXMgT05cbiAgICovXG4gIC8vIHZhciBsb2dEZWJ1ZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgLy8gICBpZiAoREVCVUcpIHtcbiAgLy8gICAgIGNvbnNvbGUuZGVidWcodGV4dCk7XG4gIC8vICAgfVxuICAvLyB9O1xuXG4gIC8qKlxuICAgKiBAYnJpZWYgICAgICAgICAgOiBQZXJmb3JtcyBvbmUgaXRlcmF0aW9uIG9mIHRoZSBwaHlzaWNhbCBzaW11bGF0aW9uXG4gICAqIEBhcmcgbGF5b3V0SW5mbyA6IExheW91dEluZm8gb2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICogQGFyZyBjeSAgICAgICAgIDogQ3l0b3NjYXBlIG9iamVjdFxuICAgKiBAYXJnIG9wdGlvbnMgICAgOiBMYXlvdXQgb3B0aW9uc1xuICAgKi9cblxuXG4gIHZhciBzdGVwID0gZnVuY3Rpb24gc3RlcChsYXlvdXRJbmZvLCBvcHRpb25zLCBfc3RlcCkge1xuICAgIC8vIHZhciBzID0gXCJcXG5cXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCI7XG4gICAgLy8gcyArPSBcIlxcblNURVA6IFwiICsgc3RlcDtcbiAgICAvLyBzICs9IFwiXFxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xcblwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIC8vIENhbGN1bGF0ZSBub2RlIHJlcHVsc2lvbnNcbiAgICBjYWxjdWxhdGVOb2RlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpOyAvLyBDYWxjdWxhdGUgZWRnZSBmb3JjZXNcblxuICAgIGNhbGN1bGF0ZUVkZ2VGb3JjZXMobGF5b3V0SW5mbyk7IC8vIENhbGN1bGF0ZSBncmF2aXR5IGZvcmNlc1xuXG4gICAgY2FsY3VsYXRlR3Jhdml0eUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKTsgLy8gUHJvcGFnYXRlIGZvcmNlcyBmcm9tIHBhcmVudCB0byBjaGlsZFxuXG4gICAgcHJvcGFnYXRlRm9yY2VzKGxheW91dEluZm8pOyAvLyBVcGRhdGUgcG9zaXRpb25zIGJhc2VkIG9uIGNhbGN1bGF0ZWQgZm9yY2VzXG5cbiAgICB1cGRhdGVQb3NpdGlvbnMobGF5b3V0SW5mbyk7XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBDb21wdXRlcyB0aGUgbm9kZSByZXB1bHNpb24gZm9yY2VzXG4gICAqL1xuXG5cbiAgdmFyIGNhbGN1bGF0ZU5vZGVGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVOb2RlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgICAvLyBHbyB0aHJvdWdoIGVhY2ggb2YgdGhlIGdyYXBocyBpbiBncmFwaFNldFxuICAgIC8vIE5vZGVzIG9ubHkgcmVwZWwgZWFjaCBvdGhlciBpZiB0aGV5IGJlbG9uZyB0byB0aGUgc2FtZSBncmFwaFxuICAgIC8vIHZhciBzID0gJ2NhbGN1bGF0ZU5vZGVGb3JjZXMnO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ncmFwaFNldC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGdyYXBoID0gbGF5b3V0SW5mby5ncmFwaFNldFtpXTtcbiAgICAgIHZhciBudW1Ob2RlcyA9IGdyYXBoLmxlbmd0aDsgLy8gcyA9IFwiU2V0OiBcIiArIGdyYXBoLnRvU3RyaW5nKCk7XG4gICAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAgIC8vIE5vdyBnZXQgYWxsIHRoZSBwYWlycyBvZiBub2Rlc1xuICAgICAgLy8gT25seSBnZXQgZWFjaCBwYWlyIG9uY2UsIChBLCBCKSA9IChCLCBBKVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bU5vZGVzOyBqKyspIHtcbiAgICAgICAgdmFyIG5vZGUxID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtncmFwaFtqXV1dO1xuXG4gICAgICAgIGZvciAodmFyIGsgPSBqICsgMTsgayA8IG51bU5vZGVzOyBrKyspIHtcbiAgICAgICAgICB2YXIgbm9kZTIgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2dyYXBoW2tdXV07XG4gICAgICAgICAgbm9kZVJlcHVsc2lvbihub2RlMSwgbm9kZTIsIGxheW91dEluZm8sIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHZhciByYW5kb21EaXN0YW5jZSA9IGZ1bmN0aW9uIHJhbmRvbURpc3RhbmNlKG1heCkge1xuICAgIHJldHVybiAtbWF4ICsgMiAqIG1heCAqIE1hdGgucmFuZG9tKCk7XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBDb21wdXRlIHRoZSBub2RlIHJlcHVsc2lvbiBmb3JjZXMgYmV0d2VlbiBhIHBhaXIgb2Ygbm9kZXNcbiAgICovXG5cblxuICB2YXIgbm9kZVJlcHVsc2lvbiA9IGZ1bmN0aW9uIG5vZGVSZXB1bHNpb24obm9kZTEsIG5vZGUyLCBsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gICAgLy8gdmFyIHMgPSBcIk5vZGUgcmVwdWxzaW9uLiBOb2RlMTogXCIgKyBub2RlMS5pZCArIFwiIE5vZGUyOiBcIiArIG5vZGUyLmlkO1xuICAgIHZhciBjbXB0SWQxID0gbm9kZTEuY21wdElkO1xuICAgIHZhciBjbXB0SWQyID0gbm9kZTIuY21wdElkO1xuXG4gICAgaWYgKGNtcHRJZDEgIT09IGNtcHRJZDIgJiYgIWxheW91dEluZm8uaXNDb21wb3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gR2V0IGRpcmVjdGlvbiBvZiBsaW5lIGNvbm5lY3RpbmcgYm90aCBub2RlIGNlbnRlcnNcblxuXG4gICAgdmFyIGRpcmVjdGlvblggPSBub2RlMi5wb3NpdGlvblggLSBub2RlMS5wb3NpdGlvblg7XG4gICAgdmFyIGRpcmVjdGlvblkgPSBub2RlMi5wb3NpdGlvblkgLSBub2RlMS5wb3NpdGlvblk7XG4gICAgdmFyIG1heFJhbmREaXN0ID0gMTsgLy8gcyArPSBcIlxcbmRpcmVjdGlvblg6IFwiICsgZGlyZWN0aW9uWCArIFwiLCBkaXJlY3Rpb25ZOiBcIiArIGRpcmVjdGlvblk7XG4gICAgLy8gSWYgYm90aCBjZW50ZXJzIGFyZSB0aGUgc2FtZSwgYXBwbHkgYSByYW5kb20gZm9yY2VcblxuICAgIGlmICgwID09PSBkaXJlY3Rpb25YICYmIDAgPT09IGRpcmVjdGlvblkpIHtcbiAgICAgIGRpcmVjdGlvblggPSByYW5kb21EaXN0YW5jZShtYXhSYW5kRGlzdCk7XG4gICAgICBkaXJlY3Rpb25ZID0gcmFuZG9tRGlzdGFuY2UobWF4UmFuZERpc3QpO1xuICAgIH1cblxuICAgIHZhciBvdmVybGFwID0gbm9kZXNPdmVybGFwKG5vZGUxLCBub2RlMiwgZGlyZWN0aW9uWCwgZGlyZWN0aW9uWSk7XG5cbiAgICBpZiAob3ZlcmxhcCA+IDApIHtcbiAgICAgIC8vIHMgKz0gXCJcXG5Ob2RlcyBETyBvdmVybGFwLlwiO1xuICAgICAgLy8gcyArPSBcIlxcbk92ZXJsYXA6IFwiICsgb3ZlcmxhcDtcbiAgICAgIC8vIElmIG5vZGVzIG92ZXJsYXAsIHJlcHVsc2lvbiBmb3JjZSBpcyBwcm9wb3J0aW9uYWxcbiAgICAgIC8vIHRvIHRoZSBvdmVybGFwXG4gICAgICB2YXIgZm9yY2UgPSBvcHRpb25zLm5vZGVPdmVybGFwICogb3ZlcmxhcDsgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRpcmVjdGlvblggKiBkaXJlY3Rpb25YICsgZGlyZWN0aW9uWSAqIGRpcmVjdGlvblkpOyAvLyBzICs9IFwiXFxuRGlzdGFuY2U6IFwiICsgZGlzdGFuY2U7XG5cbiAgICAgIHZhciBmb3JjZVggPSBmb3JjZSAqIGRpcmVjdGlvblggLyBkaXN0YW5jZTtcbiAgICAgIHZhciBmb3JjZVkgPSBmb3JjZSAqIGRpcmVjdGlvblkgLyBkaXN0YW5jZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcyArPSBcIlxcbk5vZGVzIGRvIE5PVCBvdmVybGFwLlwiO1xuICAgICAgLy8gSWYgdGhlcmUncyBubyBvdmVybGFwLCBmb3JjZSBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsXG4gICAgICAvLyB0byBzcXVhcmVkIGRpc3RhbmNlXG4gICAgICAvLyBHZXQgY2xpcHBpbmcgcG9pbnRzIGZvciBib3RoIG5vZGVzXG4gICAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQobm9kZTEsIGRpcmVjdGlvblgsIGRpcmVjdGlvblkpO1xuICAgICAgdmFyIHBvaW50MiA9IGZpbmRDbGlwcGluZ1BvaW50KG5vZGUyLCAtMSAqIGRpcmVjdGlvblgsIC0xICogZGlyZWN0aW9uWSk7IC8vIFVzZSBjbGlwcGluZyBwb2ludHMgdG8gY29tcHV0ZSBkaXN0YW5jZVxuXG4gICAgICB2YXIgZGlzdGFuY2VYID0gcG9pbnQyLnggLSBwb2ludDEueDtcbiAgICAgIHZhciBkaXN0YW5jZVkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgICAgdmFyIGRpc3RhbmNlU3FyID0gZGlzdGFuY2VYICogZGlzdGFuY2VYICsgZGlzdGFuY2VZICogZGlzdGFuY2VZO1xuICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGRpc3RhbmNlU3FyKTsgLy8gcyArPSBcIlxcbkRpc3RhbmNlOiBcIiArIGRpc3RhbmNlO1xuICAgICAgLy8gQ29tcHV0ZSB0aGUgbW9kdWxlIGFuZCBjb21wb25lbnRzIG9mIHRoZSBmb3JjZSB2ZWN0b3JcblxuICAgICAgdmFyIGZvcmNlID0gKG5vZGUxLm5vZGVSZXB1bHNpb24gKyBub2RlMi5ub2RlUmVwdWxzaW9uKSAvIGRpc3RhbmNlU3FyO1xuICAgICAgdmFyIGZvcmNlWCA9IGZvcmNlICogZGlzdGFuY2VYIC8gZGlzdGFuY2U7XG4gICAgICB2YXIgZm9yY2VZID0gZm9yY2UgKiBkaXN0YW5jZVkgLyBkaXN0YW5jZTtcbiAgICB9IC8vIEFwcGx5IGZvcmNlXG5cblxuICAgIGlmICghbm9kZTEuaXNMb2NrZWQpIHtcbiAgICAgIG5vZGUxLm9mZnNldFggLT0gZm9yY2VYO1xuICAgICAgbm9kZTEub2Zmc2V0WSAtPSBmb3JjZVk7XG4gICAgfVxuXG4gICAgaWYgKCFub2RlMi5pc0xvY2tlZCkge1xuICAgICAgbm9kZTIub2Zmc2V0WCArPSBmb3JjZVg7XG4gICAgICBub2RlMi5vZmZzZXRZICs9IGZvcmNlWTtcbiAgICB9IC8vIHMgKz0gXCJcXG5Gb3JjZVg6IFwiICsgZm9yY2VYICsgXCIgRm9yY2VZOiBcIiArIGZvcmNlWTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gICAgcmV0dXJuO1xuICB9O1xuICAvKipcbiAgICogQGJyaWVmICA6IERldGVybWluZXMgd2hldGhlciB0d28gbm9kZXMgb3ZlcmxhcCBvciBub3RcbiAgICogQHJldHVybiA6IEFtb3VudCBvZiBvdmVybGFwcGluZyAoMCA9PiBubyBvdmVybGFwKVxuICAgKi9cblxuXG4gIHZhciBub2Rlc092ZXJsYXAgPSBmdW5jdGlvbiBub2Rlc092ZXJsYXAobm9kZTEsIG5vZGUyLCBkWCwgZFkpIHtcbiAgICBpZiAoZFggPiAwKSB7XG4gICAgICB2YXIgb3ZlcmxhcFggPSBub2RlMS5tYXhYIC0gbm9kZTIubWluWDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG92ZXJsYXBYID0gbm9kZTIubWF4WCAtIG5vZGUxLm1pblg7XG4gICAgfVxuXG4gICAgaWYgKGRZID4gMCkge1xuICAgICAgdmFyIG92ZXJsYXBZID0gbm9kZTEubWF4WSAtIG5vZGUyLm1pblk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvdmVybGFwWSA9IG5vZGUyLm1heFkgLSBub2RlMS5taW5ZO1xuICAgIH1cblxuICAgIGlmIChvdmVybGFwWCA+PSAwICYmIG92ZXJsYXBZID49IDApIHtcbiAgICAgIHJldHVybiBNYXRoLnNxcnQob3ZlcmxhcFggKiBvdmVybGFwWCArIG92ZXJsYXBZICogb3ZlcmxhcFkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBGaW5kcyB0aGUgcG9pbnQgaW4gd2hpY2ggYW4gZWRnZSAoZGlyZWN0aW9uIGRYLCBkWSkgaW50ZXJzZWN0c1xuICAgKiAgICAgICAgICB0aGUgcmVjdGFuZ3VsYXIgYm91bmRpbmcgYm94IG9mIGl0J3Mgc291cmNlL3RhcmdldCBub2RlXG4gICAqL1xuXG5cbiAgdmFyIGZpbmRDbGlwcGluZ1BvaW50ID0gZnVuY3Rpb24gZmluZENsaXBwaW5nUG9pbnQobm9kZSwgZFgsIGRZKSB7XG4gICAgLy8gU2hvcmN1dHNcbiAgICB2YXIgWCA9IG5vZGUucG9zaXRpb25YO1xuICAgIHZhciBZID0gbm9kZS5wb3NpdGlvblk7XG4gICAgdmFyIEggPSBub2RlLmhlaWdodCB8fCAxO1xuICAgIHZhciBXID0gbm9kZS53aWR0aCB8fCAxO1xuICAgIHZhciBkaXJTbG9wZSA9IGRZIC8gZFg7XG4gICAgdmFyIG5vZGVTbG9wZSA9IEggLyBXOyAvLyB2YXIgcyA9ICdDb21wdXRpbmcgY2xpcHBpbmcgcG9pbnQgb2Ygbm9kZSAnICsgbm9kZS5pZCArXG4gICAgLy8gICBcIiAuIEhlaWdodDogIFwiICsgSCArIFwiLCBXaWR0aDogXCIgKyBXICtcbiAgICAvLyAgIFwiXFxuRGlyZWN0aW9uIFwiICsgZFggKyBcIiwgXCIgKyBkWTtcbiAgICAvL1xuICAgIC8vIENvbXB1dGUgaW50ZXJzZWN0aW9uXG5cbiAgICB2YXIgcmVzID0ge307IC8vIENhc2U6IFZlcnRpY2FsIGRpcmVjdGlvbiAodXApXG5cbiAgICBpZiAoMCA9PT0gZFggJiYgMCA8IGRZKSB7XG4gICAgICByZXMueCA9IFg7IC8vIHMgKz0gXCJcXG5VcCBkaXJlY3Rpb25cIjtcblxuICAgICAgcmVzLnkgPSBZICsgSCAvIDI7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gLy8gQ2FzZTogVmVydGljYWwgZGlyZWN0aW9uIChkb3duKVxuXG5cbiAgICBpZiAoMCA9PT0gZFggJiYgMCA+IGRZKSB7XG4gICAgICByZXMueCA9IFg7XG4gICAgICByZXMueSA9IFkgKyBIIC8gMjsgLy8gcyArPSBcIlxcbkRvd24gZGlyZWN0aW9uXCI7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSByaWdodCBib3JkZXJcblxuXG4gICAgaWYgKDAgPCBkWCAmJiAtMSAqIG5vZGVTbG9wZSA8PSBkaXJTbG9wZSAmJiBkaXJTbG9wZSA8PSBub2RlU2xvcGUpIHtcbiAgICAgIHJlcy54ID0gWCArIFcgLyAyO1xuICAgICAgcmVzLnkgPSBZICsgVyAqIGRZIC8gMiAvIGRYOyAvLyBzICs9IFwiXFxuUmlnaHRib3JkZXJcIjtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IC8vIENhc2U6IEludGVyc2VjdHMgdGhlIGxlZnQgYm9yZGVyXG5cblxuICAgIGlmICgwID4gZFggJiYgLTEgKiBub2RlU2xvcGUgPD0gZGlyU2xvcGUgJiYgZGlyU2xvcGUgPD0gbm9kZVNsb3BlKSB7XG4gICAgICByZXMueCA9IFggLSBXIC8gMjtcbiAgICAgIHJlcy55ID0gWSAtIFcgKiBkWSAvIDIgLyBkWDsgLy8gcyArPSBcIlxcbkxlZnRib3JkZXJcIjtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IC8vIENhc2U6IEludGVyc2VjdHMgdGhlIHRvcCBib3JkZXJcblxuXG4gICAgaWYgKDAgPCBkWSAmJiAoZGlyU2xvcGUgPD0gLTEgKiBub2RlU2xvcGUgfHwgZGlyU2xvcGUgPj0gbm9kZVNsb3BlKSkge1xuICAgICAgcmVzLnggPSBYICsgSCAqIGRYIC8gMiAvIGRZO1xuICAgICAgcmVzLnkgPSBZICsgSCAvIDI7IC8vIHMgKz0gXCJcXG5Ub3AgYm9yZGVyXCI7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSAvLyBDYXNlOiBJbnRlcnNlY3RzIHRoZSBib3R0b20gYm9yZGVyXG5cblxuICAgIGlmICgwID4gZFkgJiYgKGRpclNsb3BlIDw9IC0xICogbm9kZVNsb3BlIHx8IGRpclNsb3BlID49IG5vZGVTbG9wZSkpIHtcbiAgICAgIHJlcy54ID0gWCAtIEggKiBkWCAvIDIgLyBkWTtcbiAgICAgIHJlcy55ID0gWSAtIEggLyAyOyAvLyBzICs9IFwiXFxuQm90dG9tIGJvcmRlclwiO1xuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gLy8gcyArPSBcIlxcbkNsaXBwaW5nIHBvaW50IGZvdW5kIGF0IFwiICsgcmVzLnggKyBcIiwgXCIgKyByZXMueTtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcbiAgLyoqXG4gICAqIEBicmllZiA6IENhbGN1bGF0ZXMgYWxsIGVkZ2UgZm9yY2VzXG4gICAqL1xuXG5cbiAgdmFyIGNhbGN1bGF0ZUVkZ2VGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVFZGdlRm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGVkZ2VzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXlvdXRJbmZvLmVkZ2VTaXplOyBpKyspIHtcbiAgICAgIC8vIEdldCBlZGdlLCBzb3VyY2UgJiB0YXJnZXQgbm9kZXNcbiAgICAgIHZhciBlZGdlID0gbGF5b3V0SW5mby5sYXlvdXRFZGdlc1tpXTtcbiAgICAgIHZhciBzb3VyY2VJeCA9IGxheW91dEluZm8uaWRUb0luZGV4W2VkZ2Uuc291cmNlSWRdO1xuICAgICAgdmFyIHNvdXJjZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbc291cmNlSXhdO1xuICAgICAgdmFyIHRhcmdldEl4ID0gbGF5b3V0SW5mby5pZFRvSW5kZXhbZWRnZS50YXJnZXRJZF07XG4gICAgICB2YXIgdGFyZ2V0ID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1t0YXJnZXRJeF07IC8vIEdldCBkaXJlY3Rpb24gb2YgbGluZSBjb25uZWN0aW5nIGJvdGggbm9kZSBjZW50ZXJzXG5cbiAgICAgIHZhciBkaXJlY3Rpb25YID0gdGFyZ2V0LnBvc2l0aW9uWCAtIHNvdXJjZS5wb3NpdGlvblg7XG4gICAgICB2YXIgZGlyZWN0aW9uWSA9IHRhcmdldC5wb3NpdGlvblkgLSBzb3VyY2UucG9zaXRpb25ZOyAvLyBJZiBib3RoIGNlbnRlcnMgYXJlIHRoZSBzYW1lLCBkbyBub3RoaW5nLlxuICAgICAgLy8gQSByYW5kb20gZm9yY2UgaGFzIGFscmVhZHkgYmVlbiBhcHBsaWVkIGFzIG5vZGUgcmVwdWxzaW9uXG5cbiAgICAgIGlmICgwID09PSBkaXJlY3Rpb25YICYmIDAgPT09IGRpcmVjdGlvblkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIEdldCBjbGlwcGluZyBwb2ludHMgZm9yIGJvdGggbm9kZXNcblxuXG4gICAgICB2YXIgcG9pbnQxID0gZmluZENsaXBwaW5nUG9pbnQoc291cmNlLCBkaXJlY3Rpb25YLCBkaXJlY3Rpb25ZKTtcbiAgICAgIHZhciBwb2ludDIgPSBmaW5kQ2xpcHBpbmdQb2ludCh0YXJnZXQsIC0xICogZGlyZWN0aW9uWCwgLTEgKiBkaXJlY3Rpb25ZKTtcbiAgICAgIHZhciBseCA9IHBvaW50Mi54IC0gcG9pbnQxLng7XG4gICAgICB2YXIgbHkgPSBwb2ludDIueSAtIHBvaW50MS55O1xuICAgICAgdmFyIGwgPSBNYXRoLnNxcnQobHggKiBseCArIGx5ICogbHkpO1xuICAgICAgdmFyIGZvcmNlID0gTWF0aC5wb3coZWRnZS5pZGVhbExlbmd0aCAtIGwsIDIpIC8gZWRnZS5lbGFzdGljaXR5O1xuXG4gICAgICBpZiAoMCAhPT0gbCkge1xuICAgICAgICB2YXIgZm9yY2VYID0gZm9yY2UgKiBseCAvIGw7XG4gICAgICAgIHZhciBmb3JjZVkgPSBmb3JjZSAqIGx5IC8gbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBmb3JjZVggPSAwO1xuICAgICAgICB2YXIgZm9yY2VZID0gMDtcbiAgICAgIH0gLy8gQWRkIHRoaXMgZm9yY2UgdG8gdGFyZ2V0IGFuZCBzb3VyY2Ugbm9kZXNcblxuXG4gICAgICBpZiAoIXNvdXJjZS5pc0xvY2tlZCkge1xuICAgICAgICBzb3VyY2Uub2Zmc2V0WCArPSBmb3JjZVg7XG4gICAgICAgIHNvdXJjZS5vZmZzZXRZICs9IGZvcmNlWTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0YXJnZXQuaXNMb2NrZWQpIHtcbiAgICAgICAgdGFyZ2V0Lm9mZnNldFggLT0gZm9yY2VYO1xuICAgICAgICB0YXJnZXQub2Zmc2V0WSAtPSBmb3JjZVk7XG4gICAgICB9IC8vIHZhciBzID0gJ0VkZ2UgZm9yY2UgYmV0d2VlbiBub2RlcyAnICsgc291cmNlLmlkICsgJyBhbmQgJyArIHRhcmdldC5pZDtcbiAgICAgIC8vIHMgKz0gXCJcXG5EaXN0YW5jZTogXCIgKyBsICsgXCIgRm9yY2U6IChcIiArIGZvcmNlWCArIFwiLCBcIiArIGZvcmNlWSArIFwiKVwiO1xuICAgICAgLy8gbG9nRGVidWcocyk7XG5cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgOiBDb21wdXRlcyBncmF2aXR5IGZvcmNlcyBmb3IgYWxsIG5vZGVzXG4gICAqL1xuXG5cbiAgdmFyIGNhbGN1bGF0ZUdyYXZpdHlGb3JjZXMgPSBmdW5jdGlvbiBjYWxjdWxhdGVHcmF2aXR5Rm9yY2VzKGxheW91dEluZm8sIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5ncmF2aXR5ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGRpc3RUaHJlc2hvbGQgPSAxOyAvLyB2YXIgcyA9ICdjYWxjdWxhdGVHcmF2aXR5Rm9yY2VzJztcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ncmFwaFNldC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGdyYXBoID0gbGF5b3V0SW5mby5ncmFwaFNldFtpXTtcbiAgICAgIHZhciBudW1Ob2RlcyA9IGdyYXBoLmxlbmd0aDsgLy8gcyA9IFwiU2V0OiBcIiArIGdyYXBoLnRvU3RyaW5nKCk7XG4gICAgICAvLyBsb2dEZWJ1ZyhzKTtcbiAgICAgIC8vIENvbXB1dGUgZ3JhcGggY2VudGVyXG5cbiAgICAgIGlmICgwID09PSBpKSB7XG4gICAgICAgIHZhciBjZW50ZXJYID0gbGF5b3V0SW5mby5jbGllbnRIZWlnaHQgLyAyO1xuICAgICAgICB2YXIgY2VudGVyWSA9IGxheW91dEluZm8uY2xpZW50V2lkdGggLyAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gR2V0IFBhcmVudCBub2RlIGZvciB0aGlzIGdyYXBoLCBhbmQgdXNlIGl0cyBwb3NpdGlvbiBhcyBjZW50ZXJcbiAgICAgICAgdmFyIHRlbXAgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W2dyYXBoWzBdXV07XG4gICAgICAgIHZhciBwYXJlbnQgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2xheW91dEluZm8uaWRUb0luZGV4W3RlbXAucGFyZW50SWRdXTtcbiAgICAgICAgdmFyIGNlbnRlclggPSBwYXJlbnQucG9zaXRpb25YO1xuICAgICAgICB2YXIgY2VudGVyWSA9IHBhcmVudC5wb3NpdGlvblk7XG4gICAgICB9IC8vIHMgPSBcIkNlbnRlciBmb3VuZCBhdDogXCIgKyBjZW50ZXJYICsgXCIsIFwiICsgY2VudGVyWTtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgICAgLy8gQXBwbHkgZm9yY2UgdG8gYWxsIG5vZGVzIGluIGdyYXBoXG5cblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1Ob2RlczsgaisrKSB7XG4gICAgICAgIHZhciBub2RlID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtncmFwaFtqXV1dOyAvLyBzID0gXCJOb2RlOiBcIiArIG5vZGUuaWQ7XG5cbiAgICAgICAgaWYgKG5vZGUuaXNMb2NrZWQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkeCA9IGNlbnRlclggLSBub2RlLnBvc2l0aW9uWDtcbiAgICAgICAgdmFyIGR5ID0gY2VudGVyWSAtIG5vZGUucG9zaXRpb25ZO1xuICAgICAgICB2YXIgZCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG5cbiAgICAgICAgaWYgKGQgPiBkaXN0VGhyZXNob2xkKSB7XG4gICAgICAgICAgdmFyIGZ4ID0gb3B0aW9ucy5ncmF2aXR5ICogZHggLyBkO1xuICAgICAgICAgIHZhciBmeSA9IG9wdGlvbnMuZ3Jhdml0eSAqIGR5IC8gZDtcbiAgICAgICAgICBub2RlLm9mZnNldFggKz0gZng7XG4gICAgICAgICAgbm9kZS5vZmZzZXRZICs9IGZ5OyAvLyBzICs9IFwiOiBBcHBsaWVkIGZvcmNlOiBcIiArIGZ4ICsgXCIsIFwiICsgZnk7XG4gICAgICAgIH0gLy8gbG9nRGVidWcocyk7XG5cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qKlxuICAgKiBAYnJpZWYgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIHByb3BhZ2F0ZXMgdGhlIGV4aXN0aW5nIG9mZnNldHMgZnJvbVxuICAgKiAgICAgICAgICAgICAgICAgICBwYXJlbnQgbm9kZXMgdG8gaXRzIGRlc2NlbmRlbnRzLlxuICAgKiBAYXJnIGxheW91dEluZm8gOiBsYXlvdXRJbmZvIE9iamVjdFxuICAgKiBAYXJnIGN5ICAgICAgICAgOiBjeXRvc2NhcGUgT2JqZWN0XG4gICAqIEBhcmcgb3B0aW9ucyAgICA6IExheW91dCBvcHRpb25zXG4gICAqL1xuXG5cbiAgdmFyIHByb3BhZ2F0ZUZvcmNlcyA9IGZ1bmN0aW9uIHByb3BhZ2F0ZUZvcmNlcyhsYXlvdXRJbmZvLCBvcHRpb25zKSB7XG4gICAgLy8gSW5saW5lIGltcGxlbWVudGF0aW9uIG9mIGEgcXVldWUsIHVzZWQgZm9yIHRyYXZlcnNpbmcgdGhlIGdyYXBoIGluIEJGUyBvcmRlclxuICAgIHZhciBxdWV1ZSA9IFtdO1xuICAgIHZhciBzdGFydCA9IDA7IC8vIFBvaW50cyB0byB0aGUgc3RhcnQgdGhlIHF1ZXVlXG5cbiAgICB2YXIgZW5kID0gLTE7IC8vIFBvaW50cyB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZVxuICAgIC8vIGxvZ0RlYnVnKCdwcm9wYWdhdGVGb3JjZXMnKTtcbiAgICAvLyBTdGFydCBieSB2aXNpdGluZyB0aGUgbm9kZXMgaW4gdGhlIHJvb3QgZ3JhcGhcblxuICAgIHF1ZXVlLnB1c2guYXBwbHkocXVldWUsIGxheW91dEluZm8uZ3JhcGhTZXRbMF0pO1xuICAgIGVuZCArPSBsYXlvdXRJbmZvLmdyYXBoU2V0WzBdLmxlbmd0aDsgLy8gVHJhdmVyc2UgdGhlIGdyYXBoLCBsZXZlbCBieSBsZXZlbCxcblxuICAgIHdoaWxlIChzdGFydCA8PSBlbmQpIHtcbiAgICAgIC8vIEdldCB0aGUgbm9kZSB0byB2aXNpdCBhbmQgcmVtb3ZlIGl0IGZyb20gcXVldWVcbiAgICAgIHZhciBub2RlSWQgPSBxdWV1ZVtzdGFydCsrXTtcbiAgICAgIHZhciBub2RlSW5kZXggPSBsYXlvdXRJbmZvLmlkVG9JbmRleFtub2RlSWRdO1xuICAgICAgdmFyIG5vZGUgPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW25vZGVJbmRleF07XG4gICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuOyAvLyBXZSBvbmx5IG5lZWQgdG8gcHJvY2VzcyB0aGUgbm9kZSBpZiBpdCdzIGNvbXBvdW5kXG5cbiAgICAgIGlmICgwIDwgY2hpbGRyZW4ubGVuZ3RoICYmICFub2RlLmlzTG9ja2VkKSB7XG4gICAgICAgIHZhciBvZmZYID0gbm9kZS5vZmZzZXRYO1xuICAgICAgICB2YXIgb2ZmWSA9IG5vZGUub2Zmc2V0WTsgLy8gdmFyIHMgPSBcIlByb3BhZ2F0aW5nIG9mZnNldCBmcm9tIHBhcmVudCBub2RlIDogXCIgKyBub2RlLmlkICtcbiAgICAgICAgLy8gICBcIi4gT2Zmc2V0WDogXCIgKyBvZmZYICsgXCIuIE9mZnNldFk6IFwiICsgb2ZmWTtcbiAgICAgICAgLy8gcyArPSBcIlxcbiBDaGlsZHJlbjogXCIgKyBjaGlsZHJlbi50b1N0cmluZygpO1xuICAgICAgICAvLyBsb2dEZWJ1ZyhzKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbbGF5b3V0SW5mby5pZFRvSW5kZXhbY2hpbGRyZW5baV1dXTsgLy8gUHJvcGFnYXRlIG9mZnNldFxuXG4gICAgICAgICAgY2hpbGROb2RlLm9mZnNldFggKz0gb2ZmWDtcbiAgICAgICAgICBjaGlsZE5vZGUub2Zmc2V0WSArPSBvZmZZOyAvLyBBZGQgY2hpbGRyZW4gdG8gcXVldWUgdG8gYmUgdmlzaXRlZFxuXG4gICAgICAgICAgcXVldWVbKytlbmRdID0gY2hpbGRyZW5baV07XG4gICAgICAgIH0gLy8gUmVzZXQgcGFyZW50IG9mZnNldHNcblxuXG4gICAgICAgIG5vZGUub2Zmc2V0WCA9IDA7XG4gICAgICAgIG5vZGUub2Zmc2V0WSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICAvKipcbiAgICogQGJyaWVmIDogVXBkYXRlcyB0aGUgbGF5b3V0IG1vZGVsIHBvc2l0aW9ucywgYmFzZWQgb25cbiAgICogICAgICAgICAgdGhlIGFjY3VtdWxhdGVkIGZvcmNlc1xuICAgKi9cblxuXG4gIHZhciB1cGRhdGVQb3NpdGlvbnMgPSBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbnMobGF5b3V0SW5mbywgb3B0aW9ucykge1xuICAgIC8vIHZhciBzID0gJ1VwZGF0aW5nIHBvc2l0aW9ucyc7XG4gICAgLy8gbG9nRGVidWcocyk7XG4gICAgLy8gUmVzZXQgYm91bmRhcmllcyBmb3IgY29tcG91bmQgbm9kZXNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheW91dEluZm8ubm9kZVNpemU7IGkrKykge1xuICAgICAgdmFyIG4gPSBsYXlvdXRJbmZvLmxheW91dE5vZGVzW2ldO1xuXG4gICAgICBpZiAoMCA8IG4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIC8vIGxvZ0RlYnVnKFwiUmVzZXR0aW5nIGJvdW5kYXJpZXMgb2YgY29tcG91bmQgbm9kZTogXCIgKyBuLmlkKTtcbiAgICAgICAgbi5tYXhYID0gdW5kZWZpbmVkO1xuICAgICAgICBuLm1pblggPSB1bmRlZmluZWQ7XG4gICAgICAgIG4ubWF4WSA9IHVuZGVmaW5lZDtcbiAgICAgICAgbi5taW5ZID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICAgIGlmICgwIDwgbi5jaGlsZHJlbi5sZW5ndGggfHwgbi5pc0xvY2tlZCkge1xuICAgICAgICAvLyBObyBuZWVkIHRvIHNldCBjb21wb3VuZCBvciBsb2NrZWQgbm9kZSBwb3NpdGlvblxuICAgICAgICAvLyBsb2dEZWJ1ZyhcIlNraXBwaW5nIHBvc2l0aW9uIHVwZGF0ZSBvZiBub2RlOiBcIiArIG4uaWQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gcyA9IFwiTm9kZTogXCIgKyBuLmlkICsgXCIgUHJldmlvdXMgcG9zaXRpb246IChcIiArXG4gICAgICAvLyBuLnBvc2l0aW9uWCArIFwiLCBcIiArIG4ucG9zaXRpb25ZICsgXCIpLlwiO1xuICAgICAgLy8gTGltaXQgZGlzcGxhY2VtZW50IGluIG9yZGVyIHRvIGltcHJvdmUgc3RhYmlsaXR5XG5cblxuICAgICAgdmFyIHRlbXBGb3JjZSA9IGxpbWl0Rm9yY2Uobi5vZmZzZXRYLCBuLm9mZnNldFksIGxheW91dEluZm8udGVtcGVyYXR1cmUpO1xuICAgICAgbi5wb3NpdGlvblggKz0gdGVtcEZvcmNlLng7XG4gICAgICBuLnBvc2l0aW9uWSArPSB0ZW1wRm9yY2UueTtcbiAgICAgIG4ub2Zmc2V0WCA9IDA7XG4gICAgICBuLm9mZnNldFkgPSAwO1xuICAgICAgbi5taW5YID0gbi5wb3NpdGlvblggLSBuLndpZHRoO1xuICAgICAgbi5tYXhYID0gbi5wb3NpdGlvblggKyBuLndpZHRoO1xuICAgICAgbi5taW5ZID0gbi5wb3NpdGlvblkgLSBuLmhlaWdodDtcbiAgICAgIG4ubWF4WSA9IG4ucG9zaXRpb25ZICsgbi5oZWlnaHQ7IC8vIHMgKz0gXCIgTmV3IFBvc2l0aW9uOiAoXCIgKyBuLnBvc2l0aW9uWCArIFwiLCBcIiArIG4ucG9zaXRpb25ZICsgXCIpLlwiO1xuICAgICAgLy8gbG9nRGVidWcocyk7XG4gICAgICAvLyBVcGRhdGUgYW5jZXN0cnkgYm91ZGFyaWVzXG5cbiAgICAgIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyhuLCBsYXlvdXRJbmZvKTtcbiAgICB9IC8vIFVwZGF0ZSBzaXplLCBwb3NpdGlvbiBvZiBjb21wdW5kIG5vZGVzXG5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0SW5mby5ub2RlU2l6ZTsgaSsrKSB7XG4gICAgICB2YXIgbiA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXNbaV07XG5cbiAgICAgIGlmICgwIDwgbi5jaGlsZHJlbi5sZW5ndGggJiYgIW4uaXNMb2NrZWQpIHtcbiAgICAgICAgbi5wb3NpdGlvblggPSAobi5tYXhYICsgbi5taW5YKSAvIDI7XG4gICAgICAgIG4ucG9zaXRpb25ZID0gKG4ubWF4WSArIG4ubWluWSkgLyAyO1xuICAgICAgICBuLndpZHRoID0gbi5tYXhYIC0gbi5taW5YO1xuICAgICAgICBuLmhlaWdodCA9IG4ubWF4WSAtIG4ubWluWTsgLy8gcyA9IFwiVXBkYXRpbmcgcG9zaXRpb24sIHNpemUgb2YgY29tcG91bmQgbm9kZSBcIiArIG4uaWQ7XG4gICAgICAgIC8vIHMgKz0gXCJcXG5Qb3NpdGlvblg6IFwiICsgbi5wb3NpdGlvblggKyBcIiwgUG9zaXRpb25ZOiBcIiArIG4ucG9zaXRpb25ZO1xuICAgICAgICAvLyBzICs9IFwiXFxuV2lkdGg6IFwiICsgbi53aWR0aCArIFwiLCBIZWlnaHQ6IFwiICsgbi5oZWlnaHQ7XG4gICAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgLyoqXG4gICAqIEBicmllZiA6IExpbWl0cyBhIGZvcmNlIChmb3JjZVgsIGZvcmNlWSkgdG8gYmUgbm90XG4gICAqICAgICAgICAgIGdyZWF0ZXIgKGluIG1vZHVsbykgdGhhbiBtYXguXG4gICA4ICAgICAgICAgIFByZXNlcnZlcyBmb3JjZSBkaXJlY3Rpb24uXG4gICAgKi9cblxuXG4gIHZhciBsaW1pdEZvcmNlID0gZnVuY3Rpb24gbGltaXRGb3JjZShmb3JjZVgsIGZvcmNlWSwgbWF4KSB7XG4gICAgLy8gdmFyIHMgPSBcIkxpbWl0aW5nIGZvcmNlOiAoXCIgKyBmb3JjZVggKyBcIiwgXCIgKyBmb3JjZVkgKyBcIikuIE1heDogXCIgKyBtYXg7XG4gICAgdmFyIGZvcmNlID0gTWF0aC5zcXJ0KGZvcmNlWCAqIGZvcmNlWCArIGZvcmNlWSAqIGZvcmNlWSk7XG5cbiAgICBpZiAoZm9yY2UgPiBtYXgpIHtcbiAgICAgIHZhciByZXMgPSB7XG4gICAgICAgIHg6IG1heCAqIGZvcmNlWCAvIGZvcmNlLFxuICAgICAgICB5OiBtYXggKiBmb3JjZVkgLyBmb3JjZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHJlcyA9IHtcbiAgICAgICAgeDogZm9yY2VYLFxuICAgICAgICB5OiBmb3JjZVlcbiAgICAgIH07XG4gICAgfSAvLyBzICs9IFwiLlxcblJlc3VsdDogKFwiICsgcmVzLnggKyBcIiwgXCIgKyByZXMueSArIFwiKVwiO1xuICAgIC8vIGxvZ0RlYnVnKHMpO1xuXG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuICAvKipcbiAgICogQGJyaWVmIDogRnVuY3Rpb24gdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBjb21wb3VuZCBub2RlXG4gICAqICAgICAgICAgIHNpemVzLCBzaW5jZSB0aGV5IHNob3VsZCBib3VuZCBhbGwgdGhlaXIgc3Vibm9kZXMuXG4gICAqL1xuXG5cbiAgdmFyIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyA9IGZ1bmN0aW9uIHVwZGF0ZUFuY2VzdHJ5Qm91bmRhcmllcyhub2RlLCBsYXlvdXRJbmZvKSB7XG4gICAgLy8gdmFyIHMgPSBcIlByb3BhZ2F0aW5nIG5ldyBwb3NpdGlvbi9zaXplIG9mIG5vZGUgXCIgKyBub2RlLmlkO1xuICAgIHZhciBwYXJlbnRJZCA9IG5vZGUucGFyZW50SWQ7XG5cbiAgICBpZiAobnVsbCA9PSBwYXJlbnRJZCkge1xuICAgICAgLy8gSWYgdGhlcmUncyBubyBwYXJlbnQsIHdlIGFyZSBkb25lXG4gICAgICAvLyBzICs9IFwiLiBObyBwYXJlbnQgbm9kZS5cIjtcbiAgICAgIC8vIGxvZ0RlYnVnKHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gR2V0IFBhcmVudCBOb2RlXG5cblxuICAgIHZhciBwID0gbGF5b3V0SW5mby5sYXlvdXROb2Rlc1tsYXlvdXRJbmZvLmlkVG9JbmRleFtwYXJlbnRJZF1dO1xuICAgIHZhciBmbGFnID0gZmFsc2U7IC8vIE1heFhcblxuICAgIGlmIChudWxsID09IHAubWF4WCB8fCBub2RlLm1heFggKyBwLnBhZFJpZ2h0ID4gcC5tYXhYKSB7XG4gICAgICBwLm1heFggPSBub2RlLm1heFggKyBwLnBhZFJpZ2h0O1xuICAgICAgZmxhZyA9IHRydWU7IC8vIHMgKz0gXCJcXG5OZXcgbWF4WCBmb3IgcGFyZW50IG5vZGUgXCIgKyBwLmlkICsgXCI6IFwiICsgcC5tYXhYO1xuICAgIH0gLy8gTWluWFxuXG5cbiAgICBpZiAobnVsbCA9PSBwLm1pblggfHwgbm9kZS5taW5YIC0gcC5wYWRMZWZ0IDwgcC5taW5YKSB7XG4gICAgICBwLm1pblggPSBub2RlLm1pblggLSBwLnBhZExlZnQ7XG4gICAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtaW5YIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1pblg7XG4gICAgfSAvLyBNYXhZXG5cblxuICAgIGlmIChudWxsID09IHAubWF4WSB8fCBub2RlLm1heFkgKyBwLnBhZEJvdHRvbSA+IHAubWF4WSkge1xuICAgICAgcC5tYXhZID0gbm9kZS5tYXhZICsgcC5wYWRCb3R0b207XG4gICAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtYXhZIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1heFk7XG4gICAgfSAvLyBNaW5ZXG5cblxuICAgIGlmIChudWxsID09IHAubWluWSB8fCBub2RlLm1pblkgLSBwLnBhZFRvcCA8IHAubWluWSkge1xuICAgICAgcC5taW5ZID0gbm9kZS5taW5ZIC0gcC5wYWRUb3A7XG4gICAgICBmbGFnID0gdHJ1ZTsgLy8gcyArPSBcIlxcbk5ldyBtaW5ZIGZvciBwYXJlbnQgbm9kZSBcIiArIHAuaWQgKyBcIjogXCIgKyBwLm1pblk7XG4gICAgfSAvLyBJZiB1cGRhdGVkIGJvdW5kYXJpZXMsIHByb3BhZ2F0ZSBjaGFuZ2VzIHVwd2FyZFxuXG5cbiAgICBpZiAoZmxhZykge1xuICAgICAgLy8gbG9nRGVidWcocyk7XG4gICAgICByZXR1cm4gdXBkYXRlQW5jZXN0cnlCb3VuZGFyaWVzKHAsIGxheW91dEluZm8pO1xuICAgIH0gLy8gcyArPSBcIi4gTm8gY2hhbmdlcyBpbiBib3VuZGFyaWVzL3Bvc2l0aW9uIG9mIHBhcmVudCBub2RlIFwiICsgcC5pZDtcbiAgICAvLyBsb2dEZWJ1ZyhzKTtcblxuXG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIHZhciBzZXBhcmF0ZUNvbXBvbmVudHMgPSBmdW5jdGlvbiBzZXBhcmF0ZUNvbXBvbmVudHMobGF5b3V0SW5mbywgb3B0aW9ucykge1xuICAgIHZhciBub2RlcyA9IGxheW91dEluZm8ubGF5b3V0Tm9kZXM7XG4gICAgdmFyIGNvbXBvbmVudHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICB2YXIgY2lkID0gbm9kZS5jbXB0SWQ7XG4gICAgICB2YXIgY29tcG9uZW50ID0gY29tcG9uZW50c1tjaWRdID0gY29tcG9uZW50c1tjaWRdIHx8IFtdO1xuICAgICAgY29tcG9uZW50LnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgdmFyIHRvdGFsQSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY29tcG9uZW50c1tpXTtcblxuICAgICAgaWYgKCFjKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjLngxID0gSW5maW5pdHk7XG4gICAgICBjLngyID0gLUluZmluaXR5O1xuICAgICAgYy55MSA9IEluZmluaXR5O1xuICAgICAgYy55MiA9IC1JbmZpbml0eTtcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBuID0gY1tqXTtcbiAgICAgICAgYy54MSA9IE1hdGgubWluKGMueDEsIG4ucG9zaXRpb25YIC0gbi53aWR0aCAvIDIpO1xuICAgICAgICBjLngyID0gTWF0aC5tYXgoYy54Miwgbi5wb3NpdGlvblggKyBuLndpZHRoIC8gMik7XG4gICAgICAgIGMueTEgPSBNYXRoLm1pbihjLnkxLCBuLnBvc2l0aW9uWSAtIG4uaGVpZ2h0IC8gMik7XG4gICAgICAgIGMueTIgPSBNYXRoLm1heChjLnkyLCBuLnBvc2l0aW9uWSArIG4uaGVpZ2h0IC8gMik7XG4gICAgICB9XG5cbiAgICAgIGMudyA9IGMueDIgLSBjLngxO1xuICAgICAgYy5oID0gYy55MiAtIGMueTE7XG4gICAgICB0b3RhbEEgKz0gYy53ICogYy5oO1xuICAgIH1cblxuICAgIGNvbXBvbmVudHMuc29ydChmdW5jdGlvbiAoYzEsIGMyKSB7XG4gICAgICByZXR1cm4gYzIudyAqIGMyLmggLSBjMS53ICogYzEuaDtcbiAgICB9KTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciB1c2VkVyA9IDA7XG4gICAgdmFyIHJvd0ggPSAwO1xuICAgIHZhciBtYXhSb3dXID0gTWF0aC5zcXJ0KHRvdGFsQSkgKiBsYXlvdXRJbmZvLmNsaWVudFdpZHRoIC8gbGF5b3V0SW5mby5jbGllbnRIZWlnaHQ7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY29tcG9uZW50c1tpXTtcblxuICAgICAgaWYgKCFjKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG4gPSBjW2pdO1xuXG4gICAgICAgIGlmICghbi5pc0xvY2tlZCkge1xuICAgICAgICAgIG4ucG9zaXRpb25YICs9IHggLSBjLngxO1xuICAgICAgICAgIG4ucG9zaXRpb25ZICs9IHkgLSBjLnkxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHggKz0gYy53ICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgICAgdXNlZFcgKz0gYy53ICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgICAgcm93SCA9IE1hdGgubWF4KHJvd0gsIGMuaCk7XG5cbiAgICAgIGlmICh1c2VkVyA+IG1heFJvd1cpIHtcbiAgICAgICAgeSArPSByb3dIICsgb3B0aW9ucy5jb21wb25lbnRTcGFjaW5nO1xuICAgICAgICB4ID0gMDtcbiAgICAgICAgdXNlZFcgPSAwO1xuICAgICAgICByb3dIID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGRlZmF1bHRzJDMgPSB7XG4gICAgZml0OiB0cnVlLFxuICAgIC8vIHdoZXRoZXIgdG8gZml0IHRoZSB2aWV3cG9ydCB0byB0aGUgZ3JhcGhcbiAgICBwYWRkaW5nOiAzMCxcbiAgICAvLyBwYWRkaW5nIHVzZWQgb24gZml0XG4gICAgYm91bmRpbmdCb3g6IHVuZGVmaW5lZCxcbiAgICAvLyBjb25zdHJhaW4gbGF5b3V0IGJvdW5kczsgeyB4MSwgeTEsIHgyLCB5MiB9IG9yIHsgeDEsIHkxLCB3LCBoIH1cbiAgICBhdm9pZE92ZXJsYXA6IHRydWUsXG4gICAgLy8gcHJldmVudHMgbm9kZSBvdmVybGFwLCBtYXkgb3ZlcmZsb3cgYm91bmRpbmdCb3ggaWYgbm90IGVub3VnaCBzcGFjZVxuICAgIGF2b2lkT3ZlcmxhcFBhZGRpbmc6IDEwLFxuICAgIC8vIGV4dHJhIHNwYWNpbmcgYXJvdW5kIG5vZGVzIHdoZW4gYXZvaWRPdmVybGFwOiB0cnVlXG4gICAgbm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzOiBmYWxzZSxcbiAgICAvLyBFeGNsdWRlcyB0aGUgbGFiZWwgd2hlbiBjYWxjdWxhdGluZyBub2RlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbGF5b3V0IGFsZ29yaXRobVxuICAgIHNwYWNpbmdGYWN0b3I6IHVuZGVmaW5lZCxcbiAgICAvLyBBcHBsaWVzIGEgbXVsdGlwbGljYXRpdmUgZmFjdG9yICg+MCkgdG8gZXhwYW5kIG9yIGNvbXByZXNzIHRoZSBvdmVyYWxsIGFyZWEgdGhhdCB0aGUgbm9kZXMgdGFrZSB1cFxuICAgIGNvbmRlbnNlOiBmYWxzZSxcbiAgICAvLyB1c2VzIGFsbCBhdmFpbGFibGUgc3BhY2Ugb24gZmFsc2UsIHVzZXMgbWluaW1hbCBzcGFjZSBvbiB0cnVlXG4gICAgcm93czogdW5kZWZpbmVkLFxuICAgIC8vIGZvcmNlIG51bSBvZiByb3dzIGluIHRoZSBncmlkXG4gICAgY29sczogdW5kZWZpbmVkLFxuICAgIC8vIGZvcmNlIG51bSBvZiBjb2x1bW5zIGluIHRoZSBncmlkXG4gICAgcG9zaXRpb246IGZ1bmN0aW9uIHBvc2l0aW9uKG5vZGUpIHt9LFxuICAgIC8vIHJldHVybnMgeyByb3csIGNvbCB9IGZvciBlbGVtZW50XG4gICAgc29ydDogdW5kZWZpbmVkLFxuICAgIC8vIGEgc29ydGluZyBmdW5jdGlvbiB0byBvcmRlciB0aGUgbm9kZXM7IGUuZy4gZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdGEoJ3dlaWdodCcpIC0gYi5kYXRhKCd3ZWlnaHQnKSB9XG4gICAgYW5pbWF0ZTogZmFsc2UsXG4gICAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA1MDAsXG4gICAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgICAvLyBlYXNpbmcgb2YgYW5pbWF0aW9uIGlmIGVuYWJsZWRcbiAgICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICAgIHJlYWR5OiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgICBzdG9wOiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHMgXG5cbiAgfTtcblxuICBmdW5jdGlvbiBHcmlkTGF5b3V0KG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzJDMsIG9wdGlvbnMpO1xuICB9XG5cbiAgR3JpZExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJhbXMgPSB0aGlzLm9wdGlvbnM7XG4gICAgdmFyIG9wdGlvbnMgPSBwYXJhbXM7XG4gICAgdmFyIGN5ID0gcGFyYW1zLmN5O1xuICAgIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuICAgIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKS5ub3QoJzpwYXJlbnQnKTtcblxuICAgIGlmIChvcHRpb25zLnNvcnQpIHtcbiAgICAgIG5vZGVzID0gbm9kZXMuc29ydChvcHRpb25zLnNvcnQpO1xuICAgIH1cblxuICAgIHZhciBiYiA9IG1ha2VCb3VuZGluZ0JveChvcHRpb25zLmJvdW5kaW5nQm94ID8gb3B0aW9ucy5ib3VuZGluZ0JveCA6IHtcbiAgICAgIHgxOiAwLFxuICAgICAgeTE6IDAsXG4gICAgICB3OiBjeS53aWR0aCgpLFxuICAgICAgaDogY3kuaGVpZ2h0KClcbiAgICB9KTtcblxuICAgIGlmIChiYi5oID09PSAwIHx8IGJiLncgPT09IDApIHtcbiAgICAgIGVsZXMubm9kZXMoKS5sYXlvdXRQb3NpdGlvbnModGhpcywgb3B0aW9ucywgZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGJiLngxLFxuICAgICAgICAgIHk6IGJiLnkxXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2lkdGgvaGVpZ2h0ICogc3BsaXRzXjIgPSBjZWxscyB3aGVyZSBzcGxpdHMgaXMgbnVtYmVyIG9mIHRpbWVzIHRvIHNwbGl0IHdpZHRoXG4gICAgICB2YXIgY2VsbHMgPSBub2Rlcy5zaXplKCk7XG4gICAgICB2YXIgc3BsaXRzID0gTWF0aC5zcXJ0KGNlbGxzICogYmIuaCAvIGJiLncpO1xuICAgICAgdmFyIHJvd3MgPSBNYXRoLnJvdW5kKHNwbGl0cyk7XG4gICAgICB2YXIgY29scyA9IE1hdGgucm91bmQoYmIudyAvIGJiLmggKiBzcGxpdHMpO1xuXG4gICAgICB2YXIgc21hbGwgPSBmdW5jdGlvbiBzbWFsbCh2YWwpIHtcbiAgICAgICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIE1hdGgubWluKHJvd3MsIGNvbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1pbihyb3dzLCBjb2xzKTtcblxuICAgICAgICAgIGlmIChtaW4gPT0gcm93cykge1xuICAgICAgICAgICAgcm93cyA9IHZhbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29scyA9IHZhbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBsYXJnZSA9IGZ1bmN0aW9uIGxhcmdlKHZhbCkge1xuICAgICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gTWF0aC5tYXgocm93cywgY29scyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4KHJvd3MsIGNvbHMpO1xuXG4gICAgICAgICAgaWYgKG1heCA9PSByb3dzKSB7XG4gICAgICAgICAgICByb3dzID0gdmFsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2xzID0gdmFsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIG9Sb3dzID0gb3B0aW9ucy5yb3dzO1xuICAgICAgdmFyIG9Db2xzID0gb3B0aW9ucy5jb2xzICE9IG51bGwgPyBvcHRpb25zLmNvbHMgOiBvcHRpb25zLmNvbHVtbnM7IC8vIGlmIHJvd3Mgb3IgY29sdW1ucyB3ZXJlIHNldCBpbiBvcHRpb25zLCB1c2UgdGhvc2UgdmFsdWVzXG5cbiAgICAgIGlmIChvUm93cyAhPSBudWxsICYmIG9Db2xzICE9IG51bGwpIHtcbiAgICAgICAgcm93cyA9IG9Sb3dzO1xuICAgICAgICBjb2xzID0gb0NvbHM7XG4gICAgICB9IGVsc2UgaWYgKG9Sb3dzICE9IG51bGwgJiYgb0NvbHMgPT0gbnVsbCkge1xuICAgICAgICByb3dzID0gb1Jvd3M7XG4gICAgICAgIGNvbHMgPSBNYXRoLmNlaWwoY2VsbHMgLyByb3dzKTtcbiAgICAgIH0gZWxzZSBpZiAob1Jvd3MgPT0gbnVsbCAmJiBvQ29scyAhPSBudWxsKSB7XG4gICAgICAgIGNvbHMgPSBvQ29scztcbiAgICAgICAgcm93cyA9IE1hdGguY2VpbChjZWxscyAvIGNvbHMpO1xuICAgICAgfSAvLyBvdGhlcndpc2UgdXNlIHRoZSBhdXRvbWF0aWMgdmFsdWVzIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHlcbiAgICAgIC8vIGlmIHJvdW5kaW5nIHdhcyB1cCwgc2VlIGlmIHdlIGNhbiByZWR1Y2Ugcm93cyBvciBjb2x1bW5zXG4gICAgICBlbHNlIGlmIChjb2xzICogcm93cyA+IGNlbGxzKSB7XG4gICAgICAgIHZhciBzbSA9IHNtYWxsKCk7XG4gICAgICAgIHZhciBsZyA9IGxhcmdlKCk7IC8vIHJlZHVjaW5nIHRoZSBzbWFsbCBzaWRlIHRha2VzIGF3YXkgdGhlIG1vc3QgY2VsbHMsIHNvIHRyeSBpdCBmaXJzdFxuXG4gICAgICAgIGlmICgoc20gLSAxKSAqIGxnID49IGNlbGxzKSB7XG4gICAgICAgICAgc21hbGwoc20gLSAxKTtcbiAgICAgICAgfSBlbHNlIGlmICgobGcgLSAxKSAqIHNtID49IGNlbGxzKSB7XG4gICAgICAgICAgbGFyZ2UobGcgLSAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgcm91bmRpbmcgd2FzIHRvbyBsb3csIGFkZCByb3dzIG9yIGNvbHVtbnNcbiAgICAgICAgd2hpbGUgKGNvbHMgKiByb3dzIDwgY2VsbHMpIHtcbiAgICAgICAgICB2YXIgX3NtID0gc21hbGwoKTtcblxuICAgICAgICAgIHZhciBfbGcgPSBsYXJnZSgpOyAvLyB0cnkgdG8gYWRkIHRvIGxhcmdlciBzaWRlIGZpcnN0IChhZGRzIGxlc3MgaW4gbXVsdGlwbGljYXRpb24pXG5cblxuICAgICAgICAgIGlmICgoX2xnICsgMSkgKiBfc20gPj0gY2VsbHMpIHtcbiAgICAgICAgICAgIGxhcmdlKF9sZyArIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzbWFsbChfc20gKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGNlbGxXaWR0aCA9IGJiLncgLyBjb2xzO1xuICAgICAgdmFyIGNlbGxIZWlnaHQgPSBiYi5oIC8gcm93cztcblxuICAgICAgaWYgKG9wdGlvbnMuY29uZGVuc2UpIHtcbiAgICAgICAgY2VsbFdpZHRoID0gMDtcbiAgICAgICAgY2VsbEhlaWdodCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmF2b2lkT3ZlcmxhcCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgICB2YXIgcG9zID0gbm9kZS5fcHJpdmF0ZS5wb3NpdGlvbjtcblxuICAgICAgICAgIGlmIChwb3MueCA9PSBudWxsIHx8IHBvcy55ID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGZvciBiYlxuICAgICAgICAgICAgcG9zLnggPSAwO1xuICAgICAgICAgICAgcG9zLnkgPSAwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBuYmIgPSBub2RlLmxheW91dERpbWVuc2lvbnMob3B0aW9ucyk7XG4gICAgICAgICAgdmFyIHAgPSBvcHRpb25zLmF2b2lkT3ZlcmxhcFBhZGRpbmc7XG4gICAgICAgICAgdmFyIHcgPSBuYmIudyArIHA7XG4gICAgICAgICAgdmFyIGggPSBuYmIuaCArIHA7XG4gICAgICAgICAgY2VsbFdpZHRoID0gTWF0aC5tYXgoY2VsbFdpZHRoLCB3KTtcbiAgICAgICAgICBjZWxsSGVpZ2h0ID0gTWF0aC5tYXgoY2VsbEhlaWdodCwgaCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGNlbGxVc2VkID0ge307IC8vIGUuZy4gJ2MtMC0yJyA9PiB0cnVlXG5cbiAgICAgIHZhciB1c2VkID0gZnVuY3Rpb24gdXNlZChyb3csIGNvbCkge1xuICAgICAgICByZXR1cm4gY2VsbFVzZWRbJ2MtJyArIHJvdyArICctJyArIGNvbF0gPyB0cnVlIDogZmFsc2U7XG4gICAgICB9O1xuXG4gICAgICB2YXIgdXNlID0gZnVuY3Rpb24gdXNlKHJvdywgY29sKSB7XG4gICAgICAgIGNlbGxVc2VkWydjLScgKyByb3cgKyAnLScgKyBjb2xdID0gdHJ1ZTtcbiAgICAgIH07IC8vIHRvIGtlZXAgdHJhY2sgb2YgY3VycmVudCBjZWxsIHBvc2l0aW9uXG5cblxuICAgICAgdmFyIHJvdyA9IDA7XG4gICAgICB2YXIgY29sID0gMDtcblxuICAgICAgdmFyIG1vdmVUb05leHRDZWxsID0gZnVuY3Rpb24gbW92ZVRvTmV4dENlbGwoKSB7XG4gICAgICAgIGNvbCsrO1xuXG4gICAgICAgIGlmIChjb2wgPj0gY29scykge1xuICAgICAgICAgIGNvbCA9IDA7XG4gICAgICAgICAgcm93Kys7XG4gICAgICAgIH1cbiAgICAgIH07IC8vIGdldCBhIGNhY2hlIG9mIGFsbCB0aGUgbWFudWFsIHBvc2l0aW9uc1xuXG5cbiAgICAgIHZhciBpZDJtYW5Qb3MgPSB7fTtcblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG5vZGVzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgX25vZGUgPSBub2Rlc1tfaV07XG4gICAgICAgIHZhciByY1BvcyA9IG9wdGlvbnMucG9zaXRpb24oX25vZGUpO1xuXG4gICAgICAgIGlmIChyY1BvcyAmJiAocmNQb3Mucm93ICE9PSB1bmRlZmluZWQgfHwgcmNQb3MuY29sICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgLy8gbXVzdCBoYXZlIGF0IGxlYXN0IHJvdyBvciBjb2wgZGVmJ2RcbiAgICAgICAgICB2YXIgX3BvcyA9IHtcbiAgICAgICAgICAgIHJvdzogcmNQb3Mucm93LFxuICAgICAgICAgICAgY29sOiByY1Bvcy5jb2xcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKF9wb3MuY29sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIGZpbmQgdW51c2VkIGNvbFxuICAgICAgICAgICAgX3Bvcy5jb2wgPSAwO1xuXG4gICAgICAgICAgICB3aGlsZSAodXNlZChfcG9zLnJvdywgX3Bvcy5jb2wpKSB7XG4gICAgICAgICAgICAgIF9wb3MuY29sKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChfcG9zLnJvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBmaW5kIHVudXNlZCByb3dcbiAgICAgICAgICAgIF9wb3Mucm93ID0gMDtcblxuICAgICAgICAgICAgd2hpbGUgKHVzZWQoX3Bvcy5yb3csIF9wb3MuY29sKSkge1xuICAgICAgICAgICAgICBfcG9zLnJvdysrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlkMm1hblBvc1tfbm9kZS5pZCgpXSA9IF9wb3M7XG4gICAgICAgICAgdXNlKF9wb3Mucm93LCBfcG9zLmNvbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhlbGVtZW50LCBpKSB7XG4gICAgICAgIHZhciB4LCB5O1xuXG4gICAgICAgIGlmIChlbGVtZW50LmxvY2tlZCgpIHx8IGVsZW1lbnQuaXNQYXJlbnQoKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSAvLyBzZWUgaWYgd2UgaGF2ZSBhIG1hbnVhbCBwb3NpdGlvbiBzZXRcblxuXG4gICAgICAgIHZhciByY1BvcyA9IGlkMm1hblBvc1tlbGVtZW50LmlkKCldO1xuXG4gICAgICAgIGlmIChyY1Bvcykge1xuICAgICAgICAgIHggPSByY1Bvcy5jb2wgKiBjZWxsV2lkdGggKyBjZWxsV2lkdGggLyAyICsgYmIueDE7XG4gICAgICAgICAgeSA9IHJjUG9zLnJvdyAqIGNlbGxIZWlnaHQgKyBjZWxsSGVpZ2h0IC8gMiArIGJiLnkxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG90aGVyd2lzZSBzZXQgYXV0b21hdGljYWxseVxuICAgICAgICAgIHdoaWxlICh1c2VkKHJvdywgY29sKSkge1xuICAgICAgICAgICAgbW92ZVRvTmV4dENlbGwoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4ID0gY29sICogY2VsbFdpZHRoICsgY2VsbFdpZHRoIC8gMiArIGJiLngxO1xuICAgICAgICAgIHkgPSByb3cgKiBjZWxsSGVpZ2h0ICsgY2VsbEhlaWdodCAvIDIgKyBiYi55MTtcbiAgICAgICAgICB1c2Uocm93LCBjb2wpO1xuICAgICAgICAgIG1vdmVUb05leHRDZWxsKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgeTogeVxuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgbm9kZXMubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07XG5cbiAgdmFyIGRlZmF1bHRzJDIgPSB7XG4gICAgcmVhZHk6IGZ1bmN0aW9uIHJlYWR5KCkge30sXG4gICAgLy8gb24gbGF5b3V0cmVhZHlcbiAgICBzdG9wOiBmdW5jdGlvbiBzdG9wKCkge30gLy8gb24gbGF5b3V0c3RvcFxuXG4gIH07IC8vIGNvbnN0cnVjdG9yXG4gIC8vIG9wdGlvbnMgOiBvYmplY3QgY29udGFpbmluZyBsYXlvdXQgb3B0aW9uc1xuXG4gIGZ1bmN0aW9uIE51bGxMYXlvdXQob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMkMiwgb3B0aW9ucyk7XG4gIH0gLy8gcnVucyB0aGUgbGF5b3V0XG5cblxuICBOdWxsTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7IC8vIGVsZW1lbnRzIHRvIGNvbnNpZGVyIGluIHRoZSBsYXlvdXRcblxuICAgIHZhciBsYXlvdXQgPSB0aGlzOyAvLyBjeSBpcyBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBmb3IgdXMgaW4gdGhlIGNvbnN0cnVjdG9yXG4gICAgLy8gKGRpc2FibGUgZXNsaW50IGZvciBuZXh0IGxpbmUgYXMgdGhpcyBzZXJ2ZXMgYXMgZXhhbXBsZSBsYXlvdXQgY29kZSB0byBleHRlcm5hbCBkZXZlbG9wZXJzKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuXG4gICAgb3B0aW9ucy5jeTtcbiAgICBsYXlvdXQuZW1pdCgnbGF5b3V0c3RhcnQnKTsgLy8gcHV0cyBhbGwgbm9kZXMgYXQgKDAsIDApXG4gICAgLy8gbi5iLiBtb3N0IGxheW91dHMgd291bGQgdXNlIGxheW91dFBvc2l0aW9ucygpLCBpbnN0ZWFkIG9mIHBvc2l0aW9ucygpIGFuZCBtYW51YWwgZXZlbnRzXG5cbiAgICBlbGVzLm5vZGVzKCkucG9zaXRpb25zKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH07XG4gICAgfSk7IC8vIHRyaWdnZXIgbGF5b3V0cmVhZHkgd2hlbiBlYWNoIG5vZGUgaGFzIGhhZCBpdHMgcG9zaXRpb24gc2V0IGF0IGxlYXN0IG9uY2VcblxuICAgIGxheW91dC5vbmUoJ2xheW91dHJlYWR5Jywgb3B0aW9ucy5yZWFkeSk7XG4gICAgbGF5b3V0LmVtaXQoJ2xheW91dHJlYWR5Jyk7IC8vIHRyaWdnZXIgbGF5b3V0c3RvcCB3aGVuIHRoZSBsYXlvdXQgc3RvcHMgKGUuZy4gZmluaXNoZXMpXG5cbiAgICBsYXlvdXQub25lKCdsYXlvdXRzdG9wJywgb3B0aW9ucy5zdG9wKTtcbiAgICBsYXlvdXQuZW1pdCgnbGF5b3V0c3RvcCcpO1xuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9OyAvLyBjYWxsZWQgb24gY29udGludW91cyBsYXlvdXRzIHRvIHN0b3AgdGhlbSBiZWZvcmUgdGhleSBmaW5pc2hcblxuXG4gIE51bGxMYXlvdXQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07XG5cbiAgdmFyIGRlZmF1bHRzJDEgPSB7XG4gICAgcG9zaXRpb25zOiB1bmRlZmluZWQsXG4gICAgLy8gbWFwIG9mIChub2RlIGlkKSA9PiAocG9zaXRpb24gb2JqKTsgb3IgZnVuY3Rpb24obm9kZSl7IHJldHVybiBzb21Qb3M7IH1cbiAgICB6b29tOiB1bmRlZmluZWQsXG4gICAgLy8gdGhlIHpvb20gbGV2ZWwgdG8gc2V0IChwcm9iIHdhbnQgZml0ID0gZmFsc2UgaWYgc2V0KVxuICAgIHBhbjogdW5kZWZpbmVkLFxuICAgIC8vIHRoZSBwYW4gbGV2ZWwgdG8gc2V0IChwcm9iIHdhbnQgZml0ID0gZmFsc2UgaWYgc2V0KVxuICAgIGZpdDogdHJ1ZSxcbiAgICAvLyB3aGV0aGVyIHRvIGZpdCB0byB2aWV3cG9ydFxuICAgIHBhZGRpbmc6IDMwLFxuICAgIC8vIHBhZGRpbmcgb24gZml0XG4gICAgYW5pbWF0ZTogZmFsc2UsXG4gICAgLy8gd2hldGhlciB0byB0cmFuc2l0aW9uIHRoZSBub2RlIHBvc2l0aW9uc1xuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA1MDAsXG4gICAgLy8gZHVyYXRpb24gb2YgYW5pbWF0aW9uIGluIG1zIGlmIGVuYWJsZWRcbiAgICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCxcbiAgICAvLyBlYXNpbmcgb2YgYW5pbWF0aW9uIGlmIGVuYWJsZWRcbiAgICBhbmltYXRlRmlsdGVyOiBmdW5jdGlvbiBhbmltYXRlRmlsdGVyKG5vZGUsIGkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgLy8gYSBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgYW5pbWF0ZWQuICBBbGwgbm9kZXMgYW5pbWF0ZWQgYnkgZGVmYXVsdCBvbiBhbmltYXRlIGVuYWJsZWQuICBOb24tYW5pbWF0ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgaW1tZWRpYXRlbHkgd2hlbiB0aGUgbGF5b3V0IHN0YXJ0c1xuICAgIHJlYWR5OiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0cmVhZHlcbiAgICBzdG9wOiB1bmRlZmluZWQsXG4gICAgLy8gY2FsbGJhY2sgb24gbGF5b3V0c3RvcFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKG5vZGUsIHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfSAvLyB0cmFuc2Zvcm0gYSBnaXZlbiBub2RlIHBvc2l0aW9uLiBVc2VmdWwgZm9yIGNoYW5naW5nIGZsb3cgZGlyZWN0aW9uIGluIGRpc2NyZXRlIGxheW91dHNcblxuICB9O1xuXG4gIGZ1bmN0aW9uIFByZXNldExheW91dChvcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gZXh0ZW5kKHt9LCBkZWZhdWx0cyQxLCBvcHRpb25zKTtcbiAgfVxuXG4gIFByZXNldExheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIHZhciBlbGVzID0gb3B0aW9ucy5lbGVzO1xuICAgIHZhciBub2RlcyA9IGVsZXMubm9kZXMoKTtcbiAgICB2YXIgcG9zSXNGbiA9IGZuJDYob3B0aW9ucy5wb3NpdGlvbnMpO1xuXG4gICAgZnVuY3Rpb24gZ2V0UG9zaXRpb24obm9kZSkge1xuICAgICAgaWYgKG9wdGlvbnMucG9zaXRpb25zID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGNvcHlQb3NpdGlvbihub2RlLnBvc2l0aW9uKCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9zSXNGbikge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5wb3NpdGlvbnMobm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwb3MgPSBvcHRpb25zLnBvc2l0aW9uc1tub2RlLl9wcml2YXRlLmRhdGEuaWRdO1xuXG4gICAgICBpZiAocG9zID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuXG4gICAgbm9kZXMubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGZ1bmN0aW9uIChub2RlLCBpKSB7XG4gICAgICB2YXIgcG9zaXRpb24gPSBnZXRQb3NpdGlvbihub2RlKTtcblxuICAgICAgaWYgKG5vZGUubG9ja2VkKCkgfHwgcG9zaXRpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwb3NpdGlvbjtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfTtcblxuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgZml0OiB0cnVlLFxuICAgIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gICAgcGFkZGluZzogMzAsXG4gICAgLy8gZml0IHBhZGRpbmdcbiAgICBib3VuZGluZ0JveDogdW5kZWZpbmVkLFxuICAgIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICAgIGFuaW1hdGU6IGZhbHNlLFxuICAgIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgICBhbmltYXRpb25EdXJhdGlvbjogNTAwLFxuICAgIC8vIGR1cmF0aW9uIG9mIGFuaW1hdGlvbiBpbiBtcyBpZiBlbmFibGVkXG4gICAgYW5pbWF0aW9uRWFzaW5nOiB1bmRlZmluZWQsXG4gICAgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gICAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24gYW5pbWF0ZUZpbHRlcihub2RlLCBpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIC8vIGEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIG5vZGUgc2hvdWxkIGJlIGFuaW1hdGVkLiAgQWxsIG5vZGVzIGFuaW1hdGVkIGJ5IGRlZmF1bHQgb24gYW5pbWF0ZSBlbmFibGVkLiAgTm9uLWFuaW1hdGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIGltbWVkaWF0ZWx5IHdoZW4gdGhlIGxheW91dCBzdGFydHNcbiAgICByZWFkeTogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHJlYWR5XG4gICAgc3RvcDogdW5kZWZpbmVkLFxuICAgIC8vIGNhbGxiYWNrIG9uIGxheW91dHN0b3BcbiAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlLCBwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH0gLy8gdHJhbnNmb3JtIGEgZ2l2ZW4gbm9kZSBwb3NpdGlvbi4gVXNlZnVsIGZvciBjaGFuZ2luZyBmbG93IGRpcmVjdGlvbiBpbiBkaXNjcmV0ZSBsYXlvdXRzIFxuXG4gIH07XG5cbiAgZnVuY3Rpb24gUmFuZG9tTGF5b3V0KG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgfVxuXG4gIFJhbmRvbUxheW91dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIHZhciBjeSA9IG9wdGlvbnMuY3k7XG4gICAgdmFyIGVsZXMgPSBvcHRpb25zLmVsZXM7XG4gICAgdmFyIGJiID0gbWFrZUJvdW5kaW5nQm94KG9wdGlvbnMuYm91bmRpbmdCb3ggPyBvcHRpb25zLmJvdW5kaW5nQm94IDoge1xuICAgICAgeDE6IDAsXG4gICAgICB5MTogMCxcbiAgICAgIHc6IGN5LndpZHRoKCksXG4gICAgICBoOiBjeS5oZWlnaHQoKVxuICAgIH0pO1xuXG4gICAgdmFyIGdldFBvcyA9IGZ1bmN0aW9uIGdldFBvcyhub2RlLCBpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLncpLFxuICAgICAgICB5OiBiYi55MSArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIGJiLmgpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBlbGVzLm5vZGVzKCkubGF5b3V0UG9zaXRpb25zKHRoaXMsIG9wdGlvbnMsIGdldFBvcyk7XG4gICAgcmV0dXJuIHRoaXM7IC8vIGNoYWluaW5nXG4gIH07XG5cbiAgdmFyIGxheW91dCA9IFt7XG4gICAgbmFtZTogJ2JyZWFkdGhmaXJzdCcsXG4gICAgaW1wbDogQnJlYWR0aEZpcnN0TGF5b3V0XG4gIH0sIHtcbiAgICBuYW1lOiAnY2lyY2xlJyxcbiAgICBpbXBsOiBDaXJjbGVMYXlvdXRcbiAgfSwge1xuICAgIG5hbWU6ICdjb25jZW50cmljJyxcbiAgICBpbXBsOiBDb25jZW50cmljTGF5b3V0XG4gIH0sIHtcbiAgICBuYW1lOiAnY29zZScsXG4gICAgaW1wbDogQ29zZUxheW91dFxuICB9LCB7XG4gICAgbmFtZTogJ2dyaWQnLFxuICAgIGltcGw6IEdyaWRMYXlvdXRcbiAgfSwge1xuICAgIG5hbWU6ICdudWxsJyxcbiAgICBpbXBsOiBOdWxsTGF5b3V0XG4gIH0sIHtcbiAgICBuYW1lOiAncHJlc2V0JyxcbiAgICBpbXBsOiBQcmVzZXRMYXlvdXRcbiAgfSwge1xuICAgIG5hbWU6ICdyYW5kb20nLFxuICAgIGltcGw6IFJhbmRvbUxheW91dFxuICB9XTtcblxuICBmdW5jdGlvbiBOdWxsUmVuZGVyZXIob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gMDsgLy8gZm9yIHRlc3RpbmdcbiAgfVxuXG4gIHZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG4gIHZhciB0aHJvd0ltZ0VyciA9IGZ1bmN0aW9uIHRocm93SW1nRXJyKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQSBoZWFkbGVzcyBpbnN0YW5jZSBjYW4gbm90IHJlbmRlciBpbWFnZXMnKTtcbiAgfTtcblxuICBOdWxsUmVuZGVyZXIucHJvdG90eXBlID0ge1xuICAgIHJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZTogbm9vcCxcbiAgICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucysrO1xuICAgIH0sXG4gICAgaW5pdDogbm9vcCxcbiAgICBpc0hlYWRsZXNzOiBmdW5jdGlvbiBpc0hlYWRsZXNzKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBwbmc6IHRocm93SW1nRXJyLFxuICAgIGpwZzogdGhyb3dJbWdFcnJcbiAgfTtcblxuICB2YXIgQlJwJGYgPSB7fTtcbiAgQlJwJGYuYXJyb3dTaGFwZVdpZHRoID0gMC4zO1xuXG4gIEJScCRmLnJlZ2lzdGVyQXJyb3dTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycm93U2hhcGVzID0gdGhpcy5hcnJvd1NoYXBlcyA9IHt9O1xuICAgIHZhciByZW5kZXJlciA9IHRoaXM7IC8vIENvbnRyYWN0IGZvciBhcnJvdyBzaGFwZXM6XG4gICAgLy8gMCwgMCBpcyBhcnJvdyB0aXBcbiAgICAvLyAoMCwgMSkgaXMgZGlyZWN0aW9uIHRvd2FyZHMgbm9kZVxuICAgIC8vICgxLCAwKSBpcyByaWdodFxuICAgIC8vXG4gICAgLy8gZnVuY3Rpb25hbCBhcGk6XG4gICAgLy8gY29sbGlkZTogY2hlY2sgeCwgeSBpbiBzaGFwZVxuICAgIC8vIHJvdWdoQ29sbGlkZTogY2FsbGVkIGJlZm9yZSBjb2xsaWRlLCBubyBmYWxzZSBuZWdhdGl2ZXNcbiAgICAvLyBkcmF3OiBkcmF3XG4gICAgLy8gc3BhY2luZzogZGlzdChhcnJvd1RpcCwgbm9kZUJvdW5kYXJ5KVxuICAgIC8vIGdhcDogZGlzdChlZGdlVGlwLCBub2RlQm91bmRhcnkpLCBlZGdlVGlwIG1heSAhPSBhcnJvd1RpcFxuXG4gICAgdmFyIGJiQ29sbGlkZSA9IGZ1bmN0aW9uIGJiQ29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgdmFyIHgxID0gdHJhbnNsYXRpb24ueCAtIHNpemUgLyAyIC0gcGFkZGluZztcbiAgICAgIHZhciB4MiA9IHRyYW5zbGF0aW9uLnggKyBzaXplIC8gMiArIHBhZGRpbmc7XG4gICAgICB2YXIgeTEgPSB0cmFuc2xhdGlvbi55IC0gc2l6ZSAvIDIgLSBwYWRkaW5nO1xuICAgICAgdmFyIHkyID0gdHJhbnNsYXRpb24ueSArIHNpemUgLyAyICsgcGFkZGluZztcbiAgICAgIHZhciBpbnNpZGUgPSB4MSA8PSB4ICYmIHggPD0geDIgJiYgeTEgPD0geSAmJiB5IDw9IHkyO1xuICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICB9O1xuXG4gICAgdmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pIHtcbiAgICAgIHZhciB4Um90YXRlZCA9IHggKiBNYXRoLmNvcyhhbmdsZSkgLSB5ICogTWF0aC5zaW4oYW5nbGUpO1xuICAgICAgdmFyIHlSb3RhdGVkID0geCAqIE1hdGguc2luKGFuZ2xlKSArIHkgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICB2YXIgeFNjYWxlZCA9IHhSb3RhdGVkICogc2l6ZTtcbiAgICAgIHZhciB5U2NhbGVkID0geVJvdGF0ZWQgKiBzaXplO1xuICAgICAgdmFyIHhUcmFuc2xhdGVkID0geFNjYWxlZCArIHRyYW5zbGF0aW9uLng7XG4gICAgICB2YXIgeVRyYW5zbGF0ZWQgPSB5U2NhbGVkICsgdHJhbnNsYXRpb24ueTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHhUcmFuc2xhdGVkLFxuICAgICAgICB5OiB5VHJhbnNsYXRlZFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIHRyYW5zZm9ybVBvaW50cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybVBvaW50cyhwdHMsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbikge1xuICAgICAgdmFyIHJldFB0cyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHB0cy5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB2YXIgeCA9IHB0c1tpXTtcbiAgICAgICAgdmFyIHkgPSBwdHNbaSArIDFdO1xuICAgICAgICByZXRQdHMucHVzaCh0cmFuc2Zvcm0oeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXRQdHM7XG4gICAgfTtcblxuICAgIHZhciBwb2ludHNUb0FyciA9IGZ1bmN0aW9uIHBvaW50c1RvQXJyKHB0cykge1xuICAgICAgdmFyIHJldCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcCA9IHB0c1tpXTtcbiAgICAgICAgcmV0LnB1c2gocC54LCBwLnkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH07XG5cbiAgICB2YXIgc3RhbmRhcmRHYXAgPSBmdW5jdGlvbiBzdGFuZGFyZEdhcChlZGdlKSB7XG4gICAgICByZXR1cm4gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSAqIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnBmVmFsdWUgKiAyO1xuICAgIH07XG5cbiAgICB2YXIgZGVmaW5lQXJyb3dTaGFwZSA9IGZ1bmN0aW9uIGRlZmluZUFycm93U2hhcGUobmFtZSwgZGVmbikge1xuICAgICAgaWYgKHN0cmluZyhkZWZuKSkge1xuICAgICAgICBkZWZuID0gYXJyb3dTaGFwZXNbZGVmbl07XG4gICAgICB9XG5cbiAgICAgIGFycm93U2hhcGVzW25hbWVdID0gZXh0ZW5kKHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcG9pbnRzOiBbLTAuMTUsIC0wLjMsIDAuMTUsIC0wLjMsIDAuMTUsIDAuMywgLTAuMTUsIDAuM10sXG4gICAgICAgIGNvbGxpZGU6IGZ1bmN0aW9uIGNvbGxpZGUoeCwgeSwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBwYWRkaW5nKSB7XG4gICAgICAgICAgdmFyIHBvaW50cyA9IHBvaW50c1RvQXJyKHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSArIDIgKiBwYWRkaW5nLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICAgICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHBvaW50cyk7XG4gICAgICAgICAgcmV0dXJuIGluc2lkZTtcbiAgICAgICAgfSxcbiAgICAgICAgcm91Z2hDb2xsaWRlOiBiYkNvbGxpZGUsXG4gICAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKSB7XG4gICAgICAgICAgdmFyIHBvaW50cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCgncG9seWdvbicpKGNvbnRleHQsIHBvaW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIHNwYWNpbmc6IGZ1bmN0aW9uIHNwYWNpbmcoZWRnZSkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9LFxuICAgICAgICBnYXA6IHN0YW5kYXJkR2FwXG4gICAgICB9LCBkZWZuKTtcbiAgICB9O1xuXG4gICAgZGVmaW5lQXJyb3dTaGFwZSgnbm9uZScsIHtcbiAgICAgIGNvbGxpZGU6IGZhbHNpZnksXG4gICAgICByb3VnaENvbGxpZGU6IGZhbHNpZnksXG4gICAgICBkcmF3OiBub29wJDEsXG4gICAgICBzcGFjaW5nOiB6ZXJvaWZ5LFxuICAgICAgZ2FwOiB6ZXJvaWZ5XG4gICAgfSk7XG4gICAgZGVmaW5lQXJyb3dTaGFwZSgndHJpYW5nbGUnLCB7XG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMCwgMCwgMC4xNSwgLTAuM11cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCdhcnJvdycsICd0cmlhbmdsZScpO1xuICAgIGRlZmluZUFycm93U2hhcGUoJ3RyaWFuZ2xlLWJhY2tjdXJ2ZScsIHtcbiAgICAgIHBvaW50czogYXJyb3dTaGFwZXNbJ3RyaWFuZ2xlJ10ucG9pbnRzLFxuICAgICAgY29udHJvbFBvaW50OiBbMCwgLTAuMTVdLFxuICAgICAgcm91Z2hDb2xsaWRlOiBiYkNvbGxpZGUsXG4gICAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoKSB7XG4gICAgICAgIHZhciBwdHNUcmFucyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgICAgdmFyIGN0cmxQdCA9IHRoaXMuY29udHJvbFBvaW50O1xuICAgICAgICB2YXIgY3RybFB0VHJhbnMgPSB0cmFuc2Zvcm0oY3RybFB0WzBdLCBjdHJsUHRbMV0sIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbik7XG4gICAgICAgIHJlbmRlcmVyLmFycm93U2hhcGVJbXBsKHRoaXMubmFtZSkoY29udGV4dCwgcHRzVHJhbnMsIGN0cmxQdFRyYW5zKTtcbiAgICAgIH0sXG4gICAgICBnYXA6IGZ1bmN0aW9uIGdhcChlZGdlKSB7XG4gICAgICAgIHJldHVybiBzdGFuZGFyZEdhcChlZGdlKSAqIDAuODtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCd0cmlhbmdsZS10ZWUnLCB7XG4gICAgICBwb2ludHM6IFswLCAwLCAwLjE1LCAtMC4zLCAtMC4xNSwgLTAuMywgMCwgMF0sXG4gICAgICBwb2ludHNUZWU6IFstMC4xNSwgLTAuNCwgLTAuMTUsIC0wLjUsIDAuMTUsIC0wLjUsIDAuMTUsIC0wLjRdLFxuICAgICAgY29sbGlkZTogZnVuY3Rpb24gY29sbGlkZSh4LCB5LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCwgcGFkZGluZykge1xuICAgICAgICB2YXIgdHJpUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgICB2YXIgdGVlUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzVGVlLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgICB2YXIgaW5zaWRlID0gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRlZVB0cyk7XG4gICAgICAgIHJldHVybiBpbnNpZGU7XG4gICAgICB9LFxuICAgICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCkge1xuICAgICAgICB2YXIgdHJpUHRzID0gdHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pO1xuICAgICAgICB2YXIgdGVlUHRzID0gdHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzVGVlLCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pO1xuICAgICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgdGVlUHRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCdjaXJjbGUtdHJpYW5nbGUnLCB7XG4gICAgICByYWRpdXM6IDAuMTUsXG4gICAgICBwb2ludHNUcjogWzAsIC0wLjE1LCAwLjE1LCAtMC40NSwgLTAuMTUsIC0wLjQ1LCAwLCAtMC4xNV0sXG4gICAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciB0ID0gdHJhbnNsYXRpb247XG4gICAgICAgIHZhciBjaXJjbGVJbnNpZGUgPSBNYXRoLnBvdyh0LnggLSB4LCAyKSArIE1hdGgucG93KHQueSAtIHksIDIpIDw9IE1hdGgucG93KChzaXplICsgMiAqIHBhZGRpbmcpICogdGhpcy5yYWRpdXMsIDIpO1xuICAgICAgICB2YXIgdHJpUHRzID0gcG9pbnRzVG9BcnIodHJhbnNmb3JtUG9pbnRzKHRoaXMucG9pbnRzLCBzaXplICsgMiAqIHBhZGRpbmcsIGFuZ2xlLCB0cmFuc2xhdGlvbikpO1xuICAgICAgICByZXR1cm4gcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIHRyaVB0cykgfHwgY2lyY2xlSW5zaWRlO1xuICAgICAgfSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50c1RyLCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pO1xuICAgICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgdHJhbnNsYXRpb24ueCwgdHJhbnNsYXRpb24ueSwgdGhpcy5yYWRpdXMgKiBzaXplKTtcbiAgICAgIH0sXG4gICAgICBzcGFjaW5nOiBmdW5jdGlvbiBzcGFjaW5nKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlcmVyLmdldEFycm93V2lkdGgoZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZSwgZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWUpICogdGhpcy5yYWRpdXM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVmaW5lQXJyb3dTaGFwZSgndHJpYW5nbGUtY3Jvc3MnLCB7XG4gICAgICBwb2ludHM6IFswLCAwLCAwLjE1LCAtMC4zLCAtMC4xNSwgLTAuMywgMCwgMF0sXG4gICAgICBiYXNlQ3Jvc3NMaW5lUHRzOiBbLTAuMTUsIC0wLjQsIC8vIGZpcnN0IGhhbGYgb2YgdGhlIHJlY3RhbmdsZVxuICAgICAgLTAuMTUsIC0wLjQsIDAuMTUsIC0wLjQsIC8vIHNlY29uZCBoYWxmIG9mIHRoZSByZWN0YW5nbGVcbiAgICAgIDAuMTUsIC0wLjRdLFxuICAgICAgY3Jvc3NMaW5lUHRzOiBmdW5jdGlvbiBjcm9zc0xpbmVQdHMoc2l6ZSwgZWRnZVdpZHRoKSB7XG4gICAgICAgIC8vIHNoaWZ0IHBvaW50cyBzbyB0aGF0IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjcm9zcyBwb2ludHMgbWF0Y2hlcyBlZGdlIHdpZHRoXG4gICAgICAgIHZhciBwID0gdGhpcy5iYXNlQ3Jvc3NMaW5lUHRzLnNsaWNlKCk7XG4gICAgICAgIHZhciBzaGlmdEZhY3RvciA9IGVkZ2VXaWR0aCAvIHNpemU7XG4gICAgICAgIHZhciB5MCA9IDM7XG4gICAgICAgIHZhciB5MSA9IDU7XG4gICAgICAgIHBbeTBdID0gcFt5MF0gLSBzaGlmdEZhY3RvcjtcbiAgICAgICAgcFt5MV0gPSBwW3kxXSAtIHNoaWZ0RmFjdG9yO1xuICAgICAgICByZXR1cm4gcDtcbiAgICAgIH0sXG4gICAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciB0cmlQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5wb2ludHMsIHNpemUgKyAyICogcGFkZGluZywgYW5nbGUsIHRyYW5zbGF0aW9uKSk7XG4gICAgICAgIHZhciB0ZWVQdHMgPSBwb2ludHNUb0Fycih0cmFuc2Zvcm1Qb2ludHModGhpcy5jcm9zc0xpbmVQdHMoc2l6ZSwgZWRnZVdpZHRoKSwgc2l6ZSArIDIgKiBwYWRkaW5nLCBhbmdsZSwgdHJhbnNsYXRpb24pKTtcbiAgICAgICAgdmFyIGluc2lkZSA9IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCB0cmlQdHMpIHx8IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCB0ZWVQdHMpO1xuICAgICAgICByZXR1cm4gaW5zaWRlO1xuICAgICAgfSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgICAgdmFyIHRyaVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLnBvaW50cywgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uKTtcbiAgICAgICAgdmFyIGNyb3NzTGluZVB0cyA9IHRyYW5zZm9ybVBvaW50cyh0aGlzLmNyb3NzTGluZVB0cyhzaXplLCBlZGdlV2lkdGgpLCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24pO1xuICAgICAgICByZW5kZXJlci5hcnJvd1NoYXBlSW1wbCh0aGlzLm5hbWUpKGNvbnRleHQsIHRyaVB0cywgY3Jvc3NMaW5lUHRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCd2ZWUnLCB7XG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMywgMCwgMCwgMC4xNSwgLTAuMywgMCwgLTAuMTVdLFxuICAgICAgZ2FwOiBmdW5jdGlvbiBnYXAoZWRnZSkge1xuICAgICAgICByZXR1cm4gc3RhbmRhcmRHYXAoZWRnZSkgKiAwLjUyNTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCdjaXJjbGUnLCB7XG4gICAgICByYWRpdXM6IDAuMTUsXG4gICAgICBjb2xsaWRlOiBmdW5jdGlvbiBjb2xsaWRlKHgsIHksIHNpemUsIGFuZ2xlLCB0cmFuc2xhdGlvbiwgZWRnZVdpZHRoLCBwYWRkaW5nKSB7XG4gICAgICAgIHZhciB0ID0gdHJhbnNsYXRpb247XG4gICAgICAgIHZhciBpbnNpZGUgPSBNYXRoLnBvdyh0LnggLSB4LCAyKSArIE1hdGgucG93KHQueSAtIHksIDIpIDw9IE1hdGgucG93KChzaXplICsgMiAqIHBhZGRpbmcpICogdGhpcy5yYWRpdXMsIDIpO1xuICAgICAgICByZXR1cm4gaW5zaWRlO1xuICAgICAgfSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgc2l6ZSwgYW5nbGUsIHRyYW5zbGF0aW9uLCBlZGdlV2lkdGgpIHtcbiAgICAgICAgcmVuZGVyZXIuYXJyb3dTaGFwZUltcGwodGhpcy5uYW1lKShjb250ZXh0LCB0cmFuc2xhdGlvbi54LCB0cmFuc2xhdGlvbi55LCB0aGlzLnJhZGl1cyAqIHNpemUpO1xuICAgICAgfSxcbiAgICAgIHNwYWNpbmc6IGZ1bmN0aW9uIHNwYWNpbmcoZWRnZSkge1xuICAgICAgICByZXR1cm4gcmVuZGVyZXIuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLnJhZGl1cztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCd0ZWUnLCB7XG4gICAgICBwb2ludHM6IFstMC4xNSwgMCwgLTAuMTUsIC0wLjEsIDAuMTUsIC0wLjEsIDAuMTUsIDBdLFxuICAgICAgc3BhY2luZzogZnVuY3Rpb24gc3BhY2luZyhlZGdlKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSxcbiAgICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVmaW5lQXJyb3dTaGFwZSgnc3F1YXJlJywge1xuICAgICAgcG9pbnRzOiBbLTAuMTUsIDAuMDAsIDAuMTUsIDAuMDAsIDAuMTUsIC0wLjMsIC0wLjE1LCAtMC4zXVxuICAgIH0pO1xuICAgIGRlZmluZUFycm93U2hhcGUoJ2RpYW1vbmQnLCB7XG4gICAgICBwb2ludHM6IFstMC4xNSwgLTAuMTUsIDAsIC0wLjMsIDAuMTUsIC0wLjE1LCAwLCAwXSxcbiAgICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIGVkZ2UucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWUgKiBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWZpbmVBcnJvd1NoYXBlKCdjaGV2cm9uJywge1xuICAgICAgcG9pbnRzOiBbMCwgMCwgLTAuMTUsIC0wLjE1LCAtMC4xLCAtMC4yLCAwLCAtMC4xLCAwLjEsIC0wLjIsIDAuMTUsIC0wLjE1XSxcbiAgICAgIGdhcDogZnVuY3Rpb24gZ2FwKGVkZ2UpIHtcbiAgICAgICAgcmV0dXJuIDAuOTUgKiBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlICogZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIEJScCRlID0ge307IC8vIFByb2plY3QgbW91c2VcblxuICBCUnAkZS5wcm9qZWN0SW50b1ZpZXdwb3J0ID0gZnVuY3Rpb24gKGNsaWVudFgsIGNsaWVudFkpIHtcbiAgICB2YXIgY3kgPSB0aGlzLmN5O1xuICAgIHZhciBvZmZzZXRzID0gdGhpcy5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gICAgdmFyIG9mZnNldExlZnQgPSBvZmZzZXRzWzBdO1xuICAgIHZhciBvZmZzZXRUb3AgPSBvZmZzZXRzWzFdO1xuICAgIHZhciBzY2FsZSA9IG9mZnNldHNbNF07XG4gICAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHZhciB4ID0gKChjbGllbnRYIC0gb2Zmc2V0TGVmdCkgLyBzY2FsZSAtIHBhbi54KSAvIHpvb207XG4gICAgdmFyIHkgPSAoKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gc2NhbGUgLSBwYW4ueSkgLyB6b29tO1xuICAgIHJldHVybiBbeCwgeV07XG4gIH07XG5cbiAgQlJwJGUuZmluZENvbnRhaW5lckNsaWVudENvb3JkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXJCQikge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyQkI7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyO1xuICAgIHZhciByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHZhciBzdHlsZSA9IHRoaXMuY3kud2luZG93KCkuZ2V0Q29tcHV0ZWRTdHlsZShjb250YWluZXIpO1xuXG4gICAgdmFyIHN0eWxlVmFsdWUgPSBmdW5jdGlvbiBzdHlsZVZhbHVlKG5hbWUpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpO1xuICAgIH07XG5cbiAgICB2YXIgcGFkZGluZyA9IHtcbiAgICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ3BhZGRpbmctbGVmdCcpLFxuICAgICAgcmlnaHQ6IHN0eWxlVmFsdWUoJ3BhZGRpbmctcmlnaHQnKSxcbiAgICAgIHRvcDogc3R5bGVWYWx1ZSgncGFkZGluZy10b3AnKSxcbiAgICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgncGFkZGluZy1ib3R0b20nKVxuICAgIH07XG4gICAgdmFyIGJvcmRlciA9IHtcbiAgICAgIGxlZnQ6IHN0eWxlVmFsdWUoJ2JvcmRlci1sZWZ0LXdpZHRoJyksXG4gICAgICByaWdodDogc3R5bGVWYWx1ZSgnYm9yZGVyLXJpZ2h0LXdpZHRoJyksXG4gICAgICB0b3A6IHN0eWxlVmFsdWUoJ2JvcmRlci10b3Atd2lkdGgnKSxcbiAgICAgIGJvdHRvbTogc3R5bGVWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpXG4gICAgfTtcbiAgICB2YXIgY2xpZW50V2lkdGggPSBjb250YWluZXIuY2xpZW50V2lkdGg7XG4gICAgdmFyIGNsaWVudEhlaWdodCA9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG4gICAgdmFyIHBhZGRpbmdIb3IgPSBwYWRkaW5nLmxlZnQgKyBwYWRkaW5nLnJpZ2h0O1xuICAgIHZhciBwYWRkaW5nVmVyID0gcGFkZGluZy50b3AgKyBwYWRkaW5nLmJvdHRvbTtcbiAgICB2YXIgYm9yZGVySG9yID0gYm9yZGVyLmxlZnQgKyBib3JkZXIucmlnaHQ7XG4gICAgdmFyIHNjYWxlID0gcmVjdC53aWR0aCAvIChjbGllbnRXaWR0aCArIGJvcmRlckhvcik7XG4gICAgdmFyIHVuc2NhbGVkVyA9IGNsaWVudFdpZHRoIC0gcGFkZGluZ0hvcjtcbiAgICB2YXIgdW5zY2FsZWRIID0gY2xpZW50SGVpZ2h0IC0gcGFkZGluZ1ZlcjtcbiAgICB2YXIgbGVmdCA9IHJlY3QubGVmdCArIHBhZGRpbmcubGVmdCArIGJvcmRlci5sZWZ0O1xuICAgIHZhciB0b3AgPSByZWN0LnRvcCArIHBhZGRpbmcudG9wICsgYm9yZGVyLnRvcDtcbiAgICByZXR1cm4gdGhpcy5jb250YWluZXJCQiA9IFtsZWZ0LCB0b3AsIHVuc2NhbGVkVywgdW5zY2FsZWRILCBzY2FsZV07XG4gIH07XG5cbiAgQlJwJGUuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuY29udGFpbmVyQkIgPSBudWxsO1xuICB9O1xuXG4gIEJScCRlLmZpbmROZWFyZXN0RWxlbWVudCA9IGZ1bmN0aW9uICh4LCB5LCBpbnRlcmFjdGl2ZUVsZW1lbnRzT25seSwgaXNUb3VjaCkge1xuICAgIHJldHVybiB0aGlzLmZpbmROZWFyZXN0RWxlbWVudHMoeCwgeSwgaW50ZXJhY3RpdmVFbGVtZW50c09ubHksIGlzVG91Y2gpWzBdO1xuICB9O1xuXG4gIEJScCRlLmZpbmROZWFyZXN0RWxlbWVudHMgPSBmdW5jdGlvbiAoeCwgeSwgaW50ZXJhY3RpdmVFbGVtZW50c09ubHksIGlzVG91Y2gpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBlbGVzID0gci5nZXRDYWNoZWRaU29ydGVkRWxlcygpO1xuICAgIHZhciBuZWFyID0gW107IC8vIDEgbm9kZSBtYXgsIDEgZWRnZSBtYXhcblxuICAgIHZhciB6b29tID0gci5jeS56b29tKCk7XG4gICAgdmFyIGhhc0NvbXBvdW5kcyA9IHIuY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBlZGdlVGhyZXNob2xkID0gKGlzVG91Y2ggPyAyNCA6IDgpIC8gem9vbTtcbiAgICB2YXIgbm9kZVRocmVzaG9sZCA9IChpc1RvdWNoID8gOCA6IDIpIC8gem9vbTtcbiAgICB2YXIgbGFiZWxUaHJlc2hvbGQgPSAoaXNUb3VjaCA/IDggOiAyKSAvIHpvb207XG4gICAgdmFyIG1pblNxRGlzdCA9IEluZmluaXR5O1xuICAgIHZhciBuZWFyRWRnZTtcbiAgICB2YXIgbmVhck5vZGU7XG5cbiAgICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50c09ubHkpIHtcbiAgICAgIGVsZXMgPSBlbGVzLmludGVyYWN0aXZlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZEVsZShlbGUsIHNxRGlzdCkge1xuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICBpZiAobmVhck5vZGUpIHtcbiAgICAgICAgICByZXR1cm47IC8vIGNhbid0IHJlcGxhY2Ugbm9kZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5lYXJOb2RlID0gZWxlO1xuICAgICAgICAgIG5lYXIucHVzaChlbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGUuaXNFZGdlKCkgJiYgKHNxRGlzdCA9PSBudWxsIHx8IHNxRGlzdCA8IG1pblNxRGlzdCkpIHtcbiAgICAgICAgaWYgKG5lYXJFZGdlKSB7XG4gICAgICAgICAgLy8gdGhlbiByZXBsYWNlIGV4aXN0aW5nIGVkZ2VcbiAgICAgICAgICAvLyBjYW4gcmVwbGFjZSBvbmx5IGlmIHNhbWUgei1pbmRleFxuICAgICAgICAgIGlmIChuZWFyRWRnZS5wc3R5bGUoJ3otY29tcG91bmQtZGVwdGgnKS52YWx1ZSA9PT0gZWxlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpLnZhbHVlICYmIG5lYXJFZGdlLnBzdHlsZSgnei1jb21wb3VuZC1kZXB0aCcpLnZhbHVlID09PSBlbGUucHN0eWxlKCd6LWNvbXBvdW5kLWRlcHRoJykudmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVhci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAobmVhcltpXS5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgICAgIG5lYXJbaV0gPSBlbGU7XG4gICAgICAgICAgICAgICAgbmVhckVkZ2UgPSBlbGU7XG4gICAgICAgICAgICAgICAgbWluU3FEaXN0ID0gc3FEaXN0ICE9IG51bGwgPyBzcURpc3QgOiBtaW5TcURpc3Q7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmVhci5wdXNoKGVsZSk7XG4gICAgICAgICAgbmVhckVkZ2UgPSBlbGU7XG4gICAgICAgICAgbWluU3FEaXN0ID0gc3FEaXN0ICE9IG51bGwgPyBzcURpc3QgOiBtaW5TcURpc3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja05vZGUobm9kZSkge1xuICAgICAgdmFyIHdpZHRoID0gbm9kZS5vdXRlcldpZHRoKCkgKyAyICogbm9kZVRocmVzaG9sZDtcbiAgICAgIHZhciBoZWlnaHQgPSBub2RlLm91dGVySGVpZ2h0KCkgKyAyICogbm9kZVRocmVzaG9sZDtcbiAgICAgIHZhciBodyA9IHdpZHRoIC8gMjtcbiAgICAgIHZhciBoaCA9IGhlaWdodCAvIDI7XG4gICAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuXG4gICAgICBpZiAocG9zLnggLSBodyA8PSB4ICYmIHggPD0gcG9zLnggKyBodyAvLyBiYiBjaGVjayB4XG4gICAgICAmJiBwb3MueSAtIGhoIDw9IHkgJiYgeSA8PSBwb3MueSArIGhoIC8vIGJiIGNoZWNrIHlcbiAgICAgICkge1xuICAgICAgICB2YXIgc2hhcGUgPSByLm5vZGVTaGFwZXNbc2VsZi5nZXROb2RlU2hhcGUobm9kZSldO1xuXG4gICAgICAgIGlmIChzaGFwZS5jaGVja1BvaW50KHgsIHksIDAsIHdpZHRoLCBoZWlnaHQsIHBvcy54LCBwb3MueSkpIHtcbiAgICAgICAgICBhZGRFbGUobm9kZSwgMCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja0VkZ2UoZWRnZSkge1xuICAgICAgdmFyIF9wID0gZWRnZS5fcHJpdmF0ZTtcbiAgICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgICAgdmFyIHN0eWxlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgICAgdmFyIHNjYWxlID0gZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgICB2YXIgd2lkdGggPSBzdHlsZVdpZHRoIC8gMiArIGVkZ2VUaHJlc2hvbGQ7IC8vIG1vcmUgbGlrZSBhIGRpc3RhbmNlIHJhZGl1cyBmcm9tIGNlbnRyZVxuXG4gICAgICB2YXIgd2lkdGhTcSA9IHdpZHRoICogd2lkdGg7XG4gICAgICB2YXIgd2lkdGgyID0gd2lkdGggKiAyO1xuICAgICAgdmFyIHNyYyA9IF9wLnNvdXJjZTtcbiAgICAgIHZhciB0Z3QgPSBfcC50YXJnZXQ7XG4gICAgICB2YXIgc3FEaXN0O1xuXG4gICAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycgfHwgcnMuZWRnZVR5cGUgPT09ICdzdHJhaWdodCcgfHwgcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSArIDMgPCBwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICBpZiAoaW5MaW5lVmljaW5pdHkoeCwgeSwgcHRzW2ldLCBwdHNbaSArIDFdLCBwdHNbaSArIDJdLCBwdHNbaSArIDNdLCB3aWR0aDIpICYmIHdpZHRoU3EgPiAoc3FEaXN0ID0gc3FkaXN0VG9GaW5pdGVMaW5lKHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSkpKSB7XG4gICAgICAgICAgICBhZGRFbGUoZWRnZSwgc3FEaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChycy5lZGdlVHlwZSA9PT0gJ2JlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdtdWx0aWJlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdzZWxmJyB8fCBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgICAgICB2YXIgcHRzID0gcnMuYWxscHRzO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpICsgNSA8IHJzLmFsbHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgIGlmIChpbkJlemllclZpY2luaXR5KHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSwgcHRzW2kgKyA0XSwgcHRzW2kgKyA1XSwgd2lkdGgyKSAmJiB3aWR0aFNxID4gKHNxRGlzdCA9IHNxZGlzdFRvUXVhZHJhdGljQmV6aWVyKHgsIHksIHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSwgcHRzW2kgKyA0XSwgcHRzW2kgKyA1XSkpKSB7XG4gICAgICAgICAgICBhZGRFbGUoZWRnZSwgc3FEaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyBpZiB3ZSdyZSBjbG9zZSB0byB0aGUgZWRnZSBidXQgZGlkbid0IGhpdCBpdCwgbWF5YmUgd2UgaGl0IGl0cyBhcnJvd3NcblxuXG4gICAgICB2YXIgc3JjID0gc3JjIHx8IF9wLnNvdXJjZTtcbiAgICAgIHZhciB0Z3QgPSB0Z3QgfHwgX3AudGFyZ2V0O1xuICAgICAgdmFyIGFyU2l6ZSA9IHNlbGYuZ2V0QXJyb3dXaWR0aChzdHlsZVdpZHRoLCBzY2FsZSk7XG4gICAgICB2YXIgYXJyb3dzID0gW3tcbiAgICAgICAgbmFtZTogJ3NvdXJjZScsXG4gICAgICAgIHg6IHJzLmFycm93U3RhcnRYLFxuICAgICAgICB5OiBycy5hcnJvd1N0YXJ0WSxcbiAgICAgICAgYW5nbGU6IHJzLnNyY0Fycm93QW5nbGVcbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ3RhcmdldCcsXG4gICAgICAgIHg6IHJzLmFycm93RW5kWCxcbiAgICAgICAgeTogcnMuYXJyb3dFbmRZLFxuICAgICAgICBhbmdsZTogcnMudGd0QXJyb3dBbmdsZVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAnbWlkLXNvdXJjZScsXG4gICAgICAgIHg6IHJzLm1pZFgsXG4gICAgICAgIHk6IHJzLm1pZFksXG4gICAgICAgIGFuZ2xlOiBycy5taWRzcmNBcnJvd0FuZ2xlXG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdtaWQtdGFyZ2V0JyxcbiAgICAgICAgeDogcnMubWlkWCxcbiAgICAgICAgeTogcnMubWlkWSxcbiAgICAgICAgYW5nbGU6IHJzLm1pZHRndEFycm93QW5nbGVcbiAgICAgIH1dO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYXIgPSBhcnJvd3NbaV07XG4gICAgICAgIHZhciBzaGFwZSA9IHIuYXJyb3dTaGFwZXNbZWRnZS5wc3R5bGUoYXIubmFtZSArICctYXJyb3ctc2hhcGUnKS52YWx1ZV07XG4gICAgICAgIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuXG4gICAgICAgIGlmIChzaGFwZS5yb3VnaENvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICAgIHg6IGFyLngsXG4gICAgICAgICAgeTogYXIueVxuICAgICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpICYmIHNoYXBlLmNvbGxpZGUoeCwgeSwgYXJTaXplLCBhci5hbmdsZSwge1xuICAgICAgICAgIHg6IGFyLngsXG4gICAgICAgICAgeTogYXIueVxuICAgICAgICB9LCBlZGdlV2lkdGgsIGVkZ2VUaHJlc2hvbGQpKSB7XG4gICAgICAgICAgYWRkRWxlKGVkZ2UpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IC8vIGZvciBjb21wb3VuZCBncmFwaHMsIGhpdHRpbmcgZWRnZSBtYXkgYWN0dWFsbHkgd2FudCBhIGNvbm5lY3RlZCBub2RlIGluc3RlYWQgKGIvYyBlZGdlIG1heSBoYXZlIGdyZWF0ZXIgei1pbmRleCBwcmVjZWRlbmNlKVxuXG5cbiAgICAgIGlmIChoYXNDb21wb3VuZHMgJiYgbmVhci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNoZWNrTm9kZShzcmMpO1xuICAgICAgICBjaGVja05vZGUodGd0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwcm9wKG9iaiwgbmFtZSwgcHJlKSB7XG4gICAgICByZXR1cm4gZ2V0UHJlZml4ZWRQcm9wZXJ0eShvYmosIG5hbWUsIHByZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tMYWJlbChlbGUsIHByZWZpeCkge1xuICAgICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgICAgdmFyIHRoID0gbGFiZWxUaHJlc2hvbGQ7XG4gICAgICB2YXIgcHJlZml4RGFzaDtcblxuICAgICAgaWYgKHByZWZpeCkge1xuICAgICAgICBwcmVmaXhEYXNoID0gcHJlZml4ICsgJy0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZml4RGFzaCA9ICcnO1xuICAgICAgfVxuXG4gICAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICAgIHZhciBiYiA9IF9wLmxhYmVsQm91bmRzW3ByZWZpeCB8fCAnbWFpbiddO1xuICAgICAgdmFyIHRleHQgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAnbGFiZWwnKS52YWx1ZTtcbiAgICAgIHZhciBldmVudHNFbmFibGVkID0gZWxlLnBzdHlsZSgndGV4dC1ldmVudHMnKS5zdHJWYWx1ZSA9PT0gJ3llcyc7XG5cbiAgICAgIGlmICghZXZlbnRzRW5hYmxlZCB8fCAhdGV4dCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBseCA9IHByZXByb3AoX3AucnNjcmF0Y2gsICdsYWJlbFgnLCBwcmVmaXgpO1xuICAgICAgdmFyIGx5ID0gcHJlcHJvcChfcC5yc2NyYXRjaCwgJ2xhYmVsWScsIHByZWZpeCk7XG4gICAgICB2YXIgdGhldGEgPSBwcmVwcm9wKF9wLnJzY3JhdGNoLCAnbGFiZWxBbmdsZScsIHByZWZpeCk7XG4gICAgICB2YXIgb3ggPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teCcpLnBmVmFsdWU7XG4gICAgICB2YXIgb3kgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1tYXJnaW4teScpLnBmVmFsdWU7XG4gICAgICB2YXIgbHgxID0gYmIueDEgLSB0aCAtIG94OyAvLyAoLW94LCAtb3kpIGFzIGJiIGFscmVhZHkgaW5jbHVkZXMgbWFyZ2luXG5cbiAgICAgIHZhciBseDIgPSBiYi54MiArIHRoIC0gb3g7IC8vIGFuZCByb3RhdGlvbiBpcyBhYm91dCAobHgsIGx5KVxuXG4gICAgICB2YXIgbHkxID0gYmIueTEgLSB0aCAtIG95O1xuICAgICAgdmFyIGx5MiA9IGJiLnkyICsgdGggLSBveTtcblxuICAgICAgaWYgKHRoZXRhKSB7XG4gICAgICAgIHZhciBjb3MgPSBNYXRoLmNvcyh0aGV0YSk7XG4gICAgICAgIHZhciBzaW4gPSBNYXRoLnNpbih0aGV0YSk7XG5cbiAgICAgICAgdmFyIHJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSh4LCB5KSB7XG4gICAgICAgICAgeCA9IHggLSBseDtcbiAgICAgICAgICB5ID0geSAtIGx5O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ICogY29zIC0geSAqIHNpbiArIGx4LFxuICAgICAgICAgICAgeTogeCAqIHNpbiArIHkgKiBjb3MgKyBseVxuICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHB4MXkxID0gcm90YXRlKGx4MSwgbHkxKTtcbiAgICAgICAgdmFyIHB4MXkyID0gcm90YXRlKGx4MSwgbHkyKTtcbiAgICAgICAgdmFyIHB4MnkxID0gcm90YXRlKGx4MiwgbHkxKTtcbiAgICAgICAgdmFyIHB4MnkyID0gcm90YXRlKGx4MiwgbHkyKTtcbiAgICAgICAgdmFyIHBvaW50cyA9IFsvLyB3aXRoIHRoZSBtYXJnaW4gYWRkZWQgYWZ0ZXIgdGhlIHJvdGF0aW9uIGlzIGFwcGxpZWRcbiAgICAgICAgcHgxeTEueCArIG94LCBweDF5MS55ICsgb3ksIHB4MnkxLnggKyBveCwgcHgyeTEueSArIG95LCBweDJ5Mi54ICsgb3gsIHB4MnkyLnkgKyBveSwgcHgxeTIueCArIG94LCBweDF5Mi55ICsgb3ldO1xuXG4gICAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKSkge1xuICAgICAgICAgIGFkZEVsZShlbGUpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkbyBhIGNoZWFwZXIgYmIgY2hlY2tcbiAgICAgICAgaWYgKGluQm91bmRpbmdCb3goYmIsIHgsIHkpKSB7XG4gICAgICAgICAgYWRkRWxlKGVsZSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gZWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8gcmV2ZXJzZSBvcmRlciBmb3IgcHJlY2VkZW5jZVxuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgY2hlY2tOb2RlKGVsZSkgfHwgY2hlY2tMYWJlbChlbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlbiBlZGdlXG4gICAgICAgIGNoZWNrRWRnZShlbGUpIHx8IGNoZWNrTGFiZWwoZWxlKSB8fCBjaGVja0xhYmVsKGVsZSwgJ3NvdXJjZScpIHx8IGNoZWNrTGFiZWwoZWxlLCAndGFyZ2V0Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5lYXI7XG4gIH07IC8vICdHaXZlIG1lIGV2ZXJ5dGhpbmcgZnJvbSB0aGlzIGJveCdcblxuXG4gIEJScCRlLmdldEFsbEluQm94ID0gZnVuY3Rpb24gKHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgdmFyIGVsZXMgPSB0aGlzLmdldENhY2hlZFpTb3J0ZWRFbGVzKCkuaW50ZXJhY3RpdmU7XG4gICAgdmFyIGJveCA9IFtdO1xuICAgIHZhciB4MWMgPSBNYXRoLm1pbih4MSwgeDIpO1xuICAgIHZhciB4MmMgPSBNYXRoLm1heCh4MSwgeDIpO1xuICAgIHZhciB5MWMgPSBNYXRoLm1pbih5MSwgeTIpO1xuICAgIHZhciB5MmMgPSBNYXRoLm1heCh5MSwgeTIpO1xuICAgIHgxID0geDFjO1xuICAgIHgyID0geDJjO1xuICAgIHkxID0geTFjO1xuICAgIHkyID0geTJjO1xuICAgIHZhciBib3hCYiA9IG1ha2VCb3VuZGluZ0JveCh7XG4gICAgICB4MTogeDEsXG4gICAgICB5MTogeTEsXG4gICAgICB4MjogeDIsXG4gICAgICB5MjogeTJcbiAgICB9KTtcblxuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgZWxlcy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbZV07XG5cbiAgICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBlbGU7XG4gICAgICAgIHZhciBub2RlQmIgPSBub2RlLmJvdW5kaW5nQm94KHtcbiAgICAgICAgICBpbmNsdWRlTm9kZXM6IHRydWUsXG4gICAgICAgICAgaW5jbHVkZUVkZ2VzOiBmYWxzZSxcbiAgICAgICAgICBpbmNsdWRlTGFiZWxzOiBmYWxzZVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYm91bmRpbmdCb3hlc0ludGVyc2VjdChib3hCYiwgbm9kZUJiKSAmJiAhYm91bmRpbmdCb3hJbkJvdW5kaW5nQm94KG5vZGVCYiwgYm94QmIpKSB7XG4gICAgICAgICAgYm94LnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBlZGdlID0gZWxlO1xuICAgICAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgICAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcblxuICAgICAgICBpZiAocnMuc3RhcnRYICE9IG51bGwgJiYgcnMuc3RhcnRZICE9IG51bGwgJiYgIWluQm91bmRpbmdCb3goYm94QmIsIHJzLnN0YXJ0WCwgcnMuc3RhcnRZKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJzLmVuZFggIT0gbnVsbCAmJiBycy5lbmRZICE9IG51bGwgJiYgIWluQm91bmRpbmdCb3goYm94QmIsIHJzLmVuZFgsIHJzLmVuZFkpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdiZXppZXInIHx8IHJzLmVkZ2VUeXBlID09PSAnbXVsdGliZXppZXInIHx8IHJzLmVkZ2VUeXBlID09PSAnc2VsZicgfHwgcnMuZWRnZVR5cGUgPT09ICdjb21wb3VuZCcgfHwgcnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycgfHwgcnMuZWRnZVR5cGUgPT09ICdoYXlzdGFjaycpIHtcbiAgICAgICAgICB2YXIgcHRzID0gX3AucnN0eWxlLmJlemllclB0cyB8fCBfcC5yc3R5bGUubGluZVB0cyB8fCBfcC5yc3R5bGUuaGF5c3RhY2tQdHM7XG4gICAgICAgICAgdmFyIGFsbEluc2lkZSA9IHRydWU7XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFwb2ludEluQm91bmRpbmdCb3goYm94QmIsIHB0c1tpXSkpIHtcbiAgICAgICAgICAgICAgYWxsSW5zaWRlID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhbGxJbnNpZGUpIHtcbiAgICAgICAgICAgIGJveC5wdXNoKGVkZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChycy5lZGdlVHlwZSA9PT0gJ2hheXN0YWNrJyB8fCBycy5lZGdlVHlwZSA9PT0gJ3N0cmFpZ2h0Jykge1xuICAgICAgICAgIGJveC5wdXNoKGVkZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJveDtcbiAgfTtcblxuICB2YXIgQlJwJGQgPSB7fTtcblxuICBCUnAkZC5jYWxjdWxhdGVBcnJvd0FuZ2xlcyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHJzID0gZWRnZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB2YXIgaXNIYXlzdGFjayA9IHJzLmVkZ2VUeXBlID09PSAnaGF5c3RhY2snO1xuICAgIHZhciBpc0JlemllciA9IHJzLmVkZ2VUeXBlID09PSAnYmV6aWVyJztcbiAgICB2YXIgaXNNdWx0aWJlemllciA9IHJzLmVkZ2VUeXBlID09PSAnbXVsdGliZXppZXInO1xuICAgIHZhciBpc1NlZ21lbnRzID0gcnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cyc7XG4gICAgdmFyIGlzQ29tcG91bmQgPSBycy5lZGdlVHlwZSA9PT0gJ2NvbXBvdW5kJztcbiAgICB2YXIgaXNTZWxmID0gcnMuZWRnZVR5cGUgPT09ICdzZWxmJzsgLy8gRGlzcGxhY2VtZW50IGdpdmVzIGRpcmVjdGlvbiBmb3IgYXJyb3doZWFkIG9yaWVudGF0aW9uXG5cbiAgICB2YXIgZGlzcFgsIGRpc3BZO1xuICAgIHZhciBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgbWlkWCwgbWlkWTtcblxuICAgIGlmIChpc0hheXN0YWNrKSB7XG4gICAgICBzdGFydFggPSBycy5oYXlzdGFja1B0c1swXTtcbiAgICAgIHN0YXJ0WSA9IHJzLmhheXN0YWNrUHRzWzFdO1xuICAgICAgZW5kWCA9IHJzLmhheXN0YWNrUHRzWzJdO1xuICAgICAgZW5kWSA9IHJzLmhheXN0YWNrUHRzWzNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFggPSBycy5hcnJvd1N0YXJ0WDtcbiAgICAgIHN0YXJ0WSA9IHJzLmFycm93U3RhcnRZO1xuICAgICAgZW5kWCA9IHJzLmFycm93RW5kWDtcbiAgICAgIGVuZFkgPSBycy5hcnJvd0VuZFk7XG4gICAgfVxuXG4gICAgbWlkWCA9IHJzLm1pZFg7XG4gICAgbWlkWSA9IHJzLm1pZFk7IC8vIHNvdXJjZVxuICAgIC8vXG5cbiAgICBpZiAoaXNTZWdtZW50cykge1xuICAgICAgZGlzcFggPSBzdGFydFggLSBycy5zZWdwdHNbMF07XG4gICAgICBkaXNwWSA9IHN0YXJ0WSAtIHJzLnNlZ3B0c1sxXTtcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGliZXppZXIgfHwgaXNDb21wb3VuZCB8fCBpc1NlbGYgfHwgaXNCZXppZXIpIHtcbiAgICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG4gICAgICB2YXIgYlggPSBxYmV6aWVyQXQocHRzWzBdLCBwdHNbMl0sIHB0c1s0XSwgMC4xKTtcbiAgICAgIHZhciBiWSA9IHFiZXppZXJBdChwdHNbMV0sIHB0c1szXSwgcHRzWzVdLCAwLjEpO1xuICAgICAgZGlzcFggPSBzdGFydFggLSBiWDtcbiAgICAgIGRpc3BZID0gc3RhcnRZIC0gYlk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BYID0gc3RhcnRYIC0gbWlkWDtcbiAgICAgIGRpc3BZID0gc3RhcnRZIC0gbWlkWTtcbiAgICB9XG5cbiAgICBycy5zcmNBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpOyAvLyBtaWQgdGFyZ2V0XG4gICAgLy9cblxuICAgIHZhciBtaWRYID0gcnMubWlkWDtcbiAgICB2YXIgbWlkWSA9IHJzLm1pZFk7XG5cbiAgICBpZiAoaXNIYXlzdGFjaykge1xuICAgICAgbWlkWCA9IChzdGFydFggKyBlbmRYKSAvIDI7XG4gICAgICBtaWRZID0gKHN0YXJ0WSArIGVuZFkpIC8gMjtcbiAgICB9XG5cbiAgICBkaXNwWCA9IGVuZFggLSBzdGFydFg7XG4gICAgZGlzcFkgPSBlbmRZIC0gc3RhcnRZO1xuXG4gICAgaWYgKGlzU2VnbWVudHMpIHtcbiAgICAgIHZhciBwdHMgPSBycy5hbGxwdHM7XG5cbiAgICAgIGlmIChwdHMubGVuZ3RoIC8gMiAlIDIgPT09IDApIHtcbiAgICAgICAgdmFyIGkyID0gcHRzLmxlbmd0aCAvIDI7XG4gICAgICAgIHZhciBpMSA9IGkyIC0gMjtcbiAgICAgICAgZGlzcFggPSBwdHNbaTJdIC0gcHRzW2kxXTtcbiAgICAgICAgZGlzcFkgPSBwdHNbaTIgKyAxXSAtIHB0c1tpMSArIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGkyID0gcHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgICB2YXIgaTEgPSBpMiAtIDI7XG4gICAgICAgIHZhciBpMyA9IGkyICsgMjtcbiAgICAgICAgZGlzcFggPSBwdHNbaTJdIC0gcHRzW2kxXTtcbiAgICAgICAgZGlzcFkgPSBwdHNbaTIgKyAxXSAtIHB0c1tpMSArIDFdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aWJlemllciB8fCBpc0NvbXBvdW5kIHx8IGlzU2VsZikge1xuICAgICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcbiAgICAgIHZhciBjcHRzID0gcnMuY3RybHB0cztcbiAgICAgIHZhciBicDB4LCBicDB5O1xuICAgICAgdmFyIGJwMXgsIGJwMXk7XG5cbiAgICAgIGlmIChjcHRzLmxlbmd0aCAvIDIgJSAyID09PSAwKSB7XG4gICAgICAgIHZhciBwMCA9IHB0cy5sZW5ndGggLyAyIC0gMTsgLy8gc3RhcnRwdFxuXG4gICAgICAgIHZhciBpYyA9IHAwICsgMjtcbiAgICAgICAgdmFyIHAxID0gaWMgKyAyO1xuICAgICAgICBicDB4ID0gcWJlemllckF0KHB0c1twMF0sIHB0c1tpY10sIHB0c1twMV0sIDAuMCk7XG4gICAgICAgIGJwMHkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC4wKTtcbiAgICAgICAgYnAxeCA9IHFiZXppZXJBdChwdHNbcDBdLCBwdHNbaWNdLCBwdHNbcDFdLCAwLjAwMDEpO1xuICAgICAgICBicDF5ID0gcWJlemllckF0KHB0c1twMCArIDFdLCBwdHNbaWMgKyAxXSwgcHRzW3AxICsgMV0sIDAuMDAwMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgaWMgPSBwdHMubGVuZ3RoIC8gMiAtIDE7IC8vIGN0cnB0XG5cbiAgICAgICAgdmFyIHAwID0gaWMgLSAyOyAvLyBzdGFydHB0XG5cbiAgICAgICAgdmFyIHAxID0gaWMgKyAyOyAvLyBlbmRwdFxuXG4gICAgICAgIGJwMHggPSBxYmV6aWVyQXQocHRzW3AwXSwgcHRzW2ljXSwgcHRzW3AxXSwgMC40OTk5KTtcbiAgICAgICAgYnAweSA9IHFiZXppZXJBdChwdHNbcDAgKyAxXSwgcHRzW2ljICsgMV0sIHB0c1twMSArIDFdLCAwLjQ5OTkpO1xuICAgICAgICBicDF4ID0gcWJlemllckF0KHB0c1twMF0sIHB0c1tpY10sIHB0c1twMV0sIDAuNSk7XG4gICAgICAgIGJwMXkgPSBxYmV6aWVyQXQocHRzW3AwICsgMV0sIHB0c1tpYyArIDFdLCBwdHNbcDEgKyAxXSwgMC41KTtcbiAgICAgIH1cblxuICAgICAgZGlzcFggPSBicDF4IC0gYnAweDtcbiAgICAgIGRpc3BZID0gYnAxeSAtIGJwMHk7XG4gICAgfVxuXG4gICAgcnMubWlkdGd0QXJyb3dBbmdsZSA9IGdldEFuZ2xlRnJvbURpc3AoZGlzcFgsIGRpc3BZKTtcbiAgICBycy5taWREaXNwWCA9IGRpc3BYO1xuICAgIHJzLm1pZERpc3BZID0gZGlzcFk7IC8vIG1pZCBzb3VyY2VcbiAgICAvL1xuXG4gICAgZGlzcFggKj0gLTE7XG4gICAgZGlzcFkgKj0gLTE7XG5cbiAgICBpZiAoaXNTZWdtZW50cykge1xuICAgICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcblxuICAgICAgaWYgKHB0cy5sZW5ndGggLyAyICUgMiA9PT0gMCkgOyBlbHNlIHtcbiAgICAgICAgdmFyIGkyID0gcHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgICB2YXIgaTMgPSBpMiArIDI7XG4gICAgICAgIGRpc3BYID0gLShwdHNbaTNdIC0gcHRzW2kyXSk7XG4gICAgICAgIGRpc3BZID0gLShwdHNbaTMgKyAxXSAtIHB0c1tpMiArIDFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBycy5taWRzcmNBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpOyAvLyB0YXJnZXRcbiAgICAvL1xuXG4gICAgaWYgKGlzU2VnbWVudHMpIHtcbiAgICAgIGRpc3BYID0gZW5kWCAtIHJzLnNlZ3B0c1tycy5zZWdwdHMubGVuZ3RoIC0gMl07XG4gICAgICBkaXNwWSA9IGVuZFkgLSBycy5zZWdwdHNbcnMuc2VncHRzLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSBpZiAoaXNNdWx0aWJlemllciB8fCBpc0NvbXBvdW5kIHx8IGlzU2VsZiB8fCBpc0Jlemllcikge1xuICAgICAgdmFyIHB0cyA9IHJzLmFsbHB0cztcbiAgICAgIHZhciBsID0gcHRzLmxlbmd0aDtcbiAgICAgIHZhciBiWCA9IHFiZXppZXJBdChwdHNbbCAtIDZdLCBwdHNbbCAtIDRdLCBwdHNbbCAtIDJdLCAwLjkpO1xuICAgICAgdmFyIGJZID0gcWJlemllckF0KHB0c1tsIC0gNV0sIHB0c1tsIC0gM10sIHB0c1tsIC0gMV0sIDAuOSk7XG4gICAgICBkaXNwWCA9IGVuZFggLSBiWDtcbiAgICAgIGRpc3BZID0gZW5kWSAtIGJZO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwWCA9IGVuZFggLSBtaWRYO1xuICAgICAgZGlzcFkgPSBlbmRZIC0gbWlkWTtcbiAgICB9XG5cbiAgICBycy50Z3RBcnJvd0FuZ2xlID0gZ2V0QW5nbGVGcm9tRGlzcChkaXNwWCwgZGlzcFkpO1xuICB9O1xuXG4gIEJScCRkLmdldEFycm93V2lkdGggPSBCUnAkZC5nZXRBcnJvd0hlaWdodCA9IGZ1bmN0aW9uIChlZGdlV2lkdGgsIHNjYWxlKSB7XG4gICAgdmFyIGNhY2hlID0gdGhpcy5hcnJvd1dpZHRoQ2FjaGUgPSB0aGlzLmFycm93V2lkdGhDYWNoZSB8fCB7fTtcbiAgICB2YXIgY2FjaGVkVmFsID0gY2FjaGVbZWRnZVdpZHRoICsgJywgJyArIHNjYWxlXTtcblxuICAgIGlmIChjYWNoZWRWYWwpIHtcbiAgICAgIHJldHVybiBjYWNoZWRWYWw7XG4gICAgfVxuXG4gICAgY2FjaGVkVmFsID0gTWF0aC5tYXgoTWF0aC5wb3coZWRnZVdpZHRoICogMTMuMzcsIDAuOSksIDI5KSAqIHNjYWxlO1xuICAgIGNhY2hlW2VkZ2VXaWR0aCArICcsICcgKyBzY2FsZV0gPSBjYWNoZWRWYWw7XG4gICAgcmV0dXJuIGNhY2hlZFZhbDtcbiAgfTtcblxuICB2YXIgQlJwJGMgPSB7fTtcblxuICBCUnAkYy5maW5kSGF5c3RhY2tQb2ludHMgPSBmdW5jdGlvbiAoZWRnZXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWRnZSA9IGVkZ2VzW2ldO1xuICAgICAgdmFyIF9wID0gZWRnZS5fcHJpdmF0ZTtcbiAgICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuXG4gICAgICBpZiAoIXJzLmhheXN0YWNrKSB7XG4gICAgICAgIHZhciBhbmdsZSA9IE1hdGgucmFuZG9tKCkgKiAyICogTWF0aC5QSTtcbiAgICAgICAgcnMuc291cmNlID0ge1xuICAgICAgICAgIHg6IE1hdGguY29zKGFuZ2xlKSxcbiAgICAgICAgICB5OiBNYXRoLnNpbihhbmdsZSlcbiAgICAgICAgfTtcbiAgICAgICAgYW5nbGUgPSBNYXRoLnJhbmRvbSgpICogMiAqIE1hdGguUEk7XG4gICAgICAgIHJzLnRhcmdldCA9IHtcbiAgICAgICAgICB4OiBNYXRoLmNvcyhhbmdsZSksXG4gICAgICAgICAgeTogTWF0aC5zaW4oYW5nbGUpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgICAgdmFyIHNyY1BvcyA9IHNyYy5wb3NpdGlvbigpO1xuICAgICAgdmFyIHRndFBvcyA9IHRndC5wb3NpdGlvbigpO1xuICAgICAgdmFyIHNyY1cgPSBzcmMud2lkdGgoKTtcbiAgICAgIHZhciB0Z3RXID0gdGd0LndpZHRoKCk7XG4gICAgICB2YXIgc3JjSCA9IHNyYy5oZWlnaHQoKTtcbiAgICAgIHZhciB0Z3RIID0gdGd0LmhlaWdodCgpO1xuICAgICAgdmFyIHJhZGl1cyA9IGVkZ2UucHN0eWxlKCdoYXlzdGFjay1yYWRpdXMnKS52YWx1ZTtcbiAgICAgIHZhciBoYWxmUmFkaXVzID0gcmFkaXVzIC8gMjsgLy8gYi9jIGhhdmUgdG8gaGFsZiB3aWR0aC9oZWlnaHRcblxuICAgICAgcnMuaGF5c3RhY2tQdHMgPSBycy5hbGxwdHMgPSBbcnMuc291cmNlLnggKiBzcmNXICogaGFsZlJhZGl1cyArIHNyY1Bvcy54LCBycy5zb3VyY2UueSAqIHNyY0ggKiBoYWxmUmFkaXVzICsgc3JjUG9zLnksIHJzLnRhcmdldC54ICogdGd0VyAqIGhhbGZSYWRpdXMgKyB0Z3RQb3MueCwgcnMudGFyZ2V0LnkgKiB0Z3RIICogaGFsZlJhZGl1cyArIHRndFBvcy55XTtcbiAgICAgIHJzLm1pZFggPSAocnMuYWxscHRzWzBdICsgcnMuYWxscHRzWzJdKSAvIDI7XG4gICAgICBycy5taWRZID0gKHJzLmFsbHB0c1sxXSArIHJzLmFsbHB0c1szXSkgLyAyOyAvLyBhbHdheXMgb3ZlcnJpZGUgYXMgaGF5c3RhY2sgaW4gY2FzZSBzZXQgdG8gZGlmZmVyZW50IHR5cGUgcHJldmlvdXNseVxuXG4gICAgICBycy5lZGdlVHlwZSA9ICdoYXlzdGFjayc7XG4gICAgICBycy5oYXlzdGFjayA9IHRydWU7XG4gICAgICB0aGlzLnN0b3JlRWRnZVByb2plY3Rpb25zKGVkZ2UpO1xuICAgICAgdGhpcy5jYWxjdWxhdGVBcnJvd0FuZ2xlcyhlZGdlKTtcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVFZGdlTGFiZWxQcm9qZWN0aW9ucyhlZGdlKTtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMoZWRnZSk7XG4gICAgfVxuICB9O1xuXG4gIEJScCRjLmZpbmRTZWdtZW50c1BvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbykge1xuICAgIC8vIFNlZ21lbnRzIChtdWx0aXBsZSBzdHJhaWdodCBsaW5lcylcbiAgICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICAgIGludGVyc2VjdGlvblB0cyA9IHBhaXJJbmZvLmludGVyc2VjdGlvblB0cyxcbiAgICAgICAgdmVjdG9yTm9ybUludmVyc2UgPSBwYWlySW5mby52ZWN0b3JOb3JtSW52ZXJzZTtcbiAgICB2YXIgZWRnZURpc3RhbmNlcyA9IGVkZ2UucHN0eWxlKCdlZGdlLWRpc3RhbmNlcycpLnZhbHVlO1xuICAgIHZhciBzZWdtZW50V3MgPSBlZGdlLnBzdHlsZSgnc2VnbWVudC13ZWlnaHRzJyk7XG4gICAgdmFyIHNlZ21lbnREcyA9IGVkZ2UucHN0eWxlKCdzZWdtZW50LWRpc3RhbmNlcycpO1xuICAgIHZhciBzZWdtZW50c04gPSBNYXRoLm1pbihzZWdtZW50V3MucGZWYWx1ZS5sZW5ndGgsIHNlZ21lbnREcy5wZlZhbHVlLmxlbmd0aCk7XG4gICAgcnMuZWRnZVR5cGUgPSAnc2VnbWVudHMnO1xuICAgIHJzLnNlZ3B0cyA9IFtdO1xuXG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPCBzZWdtZW50c047IHMrKykge1xuICAgICAgdmFyIHcgPSBzZWdtZW50V3MucGZWYWx1ZVtzXTtcbiAgICAgIHZhciBkID0gc2VnbWVudERzLnBmVmFsdWVbc107XG4gICAgICB2YXIgdzEgPSAxIC0gdztcbiAgICAgIHZhciB3MiA9IHc7XG4gICAgICB2YXIgbWlkcHRQdHMgPSBlZGdlRGlzdGFuY2VzID09PSAnbm9kZS1wb3NpdGlvbicgPyBwb3NQdHMgOiBpbnRlcnNlY3Rpb25QdHM7XG4gICAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgICAgeDogbWlkcHRQdHMueDEgKiB3MSArIG1pZHB0UHRzLngyICogdzIsXG4gICAgICAgIHk6IG1pZHB0UHRzLnkxICogdzEgKyBtaWRwdFB0cy55MiAqIHcyXG4gICAgICB9O1xuICAgICAgcnMuc2VncHRzLnB1c2goYWRqdXN0ZWRNaWRwdC54ICsgdmVjdG9yTm9ybUludmVyc2UueCAqIGQsIGFkanVzdGVkTWlkcHQueSArIHZlY3Rvck5vcm1JbnZlcnNlLnkgKiBkKTtcbiAgICB9XG4gIH07XG5cbiAgQlJwJGMuZmluZExvb3BQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCkge1xuICAgIC8vIFNlbGYtZWRnZVxuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGRpckNvdW50cyA9IHBhaXJJbmZvLmRpckNvdW50cyxcbiAgICAgICAgc3JjUG9zID0gcGFpckluZm8uc3JjUG9zO1xuICAgIHZhciBjdHJscHREaXN0cyA9IGVkZ2UucHN0eWxlKCdjb250cm9sLXBvaW50LWRpc3RhbmNlcycpO1xuICAgIHZhciBjdHJscHREaXN0ID0gY3RybHB0RGlzdHMgPyBjdHJscHREaXN0cy5wZlZhbHVlWzBdIDogdW5kZWZpbmVkO1xuICAgIHZhciBsb29wRGlyID0gZWRnZS5wc3R5bGUoJ2xvb3AtZGlyZWN0aW9uJykucGZWYWx1ZTtcbiAgICB2YXIgbG9vcFN3cCA9IGVkZ2UucHN0eWxlKCdsb29wLXN3ZWVwJykucGZWYWx1ZTtcbiAgICB2YXIgc3RlcFNpemUgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1zdGVwLXNpemUnKS5wZlZhbHVlO1xuICAgIHJzLmVkZ2VUeXBlID0gJ3NlbGYnO1xuICAgIHZhciBqID0gaTtcbiAgICB2YXIgbG9vcERpc3QgPSBzdGVwU2l6ZTtcblxuICAgIGlmIChlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgICAgIGogPSAwO1xuICAgICAgbG9vcERpc3QgPSBjdHJscHREaXN0O1xuICAgIH1cblxuICAgIHZhciBsb29wQW5nbGUgPSBsb29wRGlyIC0gTWF0aC5QSSAvIDI7XG4gICAgdmFyIG91dEFuZ2xlID0gbG9vcEFuZ2xlIC0gbG9vcFN3cCAvIDI7XG4gICAgdmFyIGluQW5nbGUgPSBsb29wQW5nbGUgKyBsb29wU3dwIC8gMjsgLy8gaW5jcmVhc2UgYnkgc3RlcCBzaXplIGZvciBvdmVybGFwcGluZyBsb29wcywga2V5ZWQgb24gZGlyZWN0aW9uIGFuZCBzd2VlcCB2YWx1ZXNcblxuICAgIHZhciBkYyA9IFN0cmluZyhsb29wRGlyICsgJ18nICsgbG9vcFN3cCk7XG4gICAgaiA9IGRpckNvdW50c1tkY10gPT09IHVuZGVmaW5lZCA/IGRpckNvdW50c1tkY10gPSAwIDogKytkaXJDb3VudHNbZGNdO1xuICAgIHJzLmN0cmxwdHMgPSBbc3JjUG9zLnggKyBNYXRoLmNvcyhvdXRBbmdsZSkgKiAxLjQgKiBsb29wRGlzdCAqIChqIC8gMyArIDEpLCBzcmNQb3MueSArIE1hdGguc2luKG91dEFuZ2xlKSAqIDEuNCAqIGxvb3BEaXN0ICogKGogLyAzICsgMSksIHNyY1Bvcy54ICsgTWF0aC5jb3MoaW5BbmdsZSkgKiAxLjQgKiBsb29wRGlzdCAqIChqIC8gMyArIDEpLCBzcmNQb3MueSArIE1hdGguc2luKGluQW5nbGUpICogMS40ICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKV07XG4gIH07XG5cbiAgQlJwJGMuZmluZENvbXBvdW5kTG9vcFBvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbywgaSwgZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgLy8gQ29tcG91bmQgZWRnZVxuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgcnMuZWRnZVR5cGUgPSAnY29tcG91bmQnO1xuICAgIHZhciBzcmNQb3MgPSBwYWlySW5mby5zcmNQb3MsXG4gICAgICAgIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyxcbiAgICAgICAgc3JjVyA9IHBhaXJJbmZvLnNyY1csXG4gICAgICAgIHNyY0ggPSBwYWlySW5mby5zcmNILFxuICAgICAgICB0Z3RXID0gcGFpckluZm8udGd0VyxcbiAgICAgICAgdGd0SCA9IHBhaXJJbmZvLnRndEg7XG4gICAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgICB2YXIgY3RybHB0RGlzdHMgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnKTtcbiAgICB2YXIgY3RybHB0RGlzdCA9IGN0cmxwdERpc3RzID8gY3RybHB0RGlzdHMucGZWYWx1ZVswXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgaiA9IGk7XG4gICAgdmFyIGxvb3BEaXN0ID0gc3RlcFNpemU7XG5cbiAgICBpZiAoZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGxvb3BEaXN0ID0gY3RybHB0RGlzdDtcbiAgICB9XG5cbiAgICB2YXIgbG9vcFcgPSA1MDtcbiAgICB2YXIgbG9vcGFQb3MgPSB7XG4gICAgICB4OiBzcmNQb3MueCAtIHNyY1cgLyAyLFxuICAgICAgeTogc3JjUG9zLnkgLSBzcmNIIC8gMlxuICAgIH07XG4gICAgdmFyIGxvb3BiUG9zID0ge1xuICAgICAgeDogdGd0UG9zLnggLSB0Z3RXIC8gMixcbiAgICAgIHk6IHRndFBvcy55IC0gdGd0SCAvIDJcbiAgICB9O1xuICAgIHZhciBsb29wUG9zID0ge1xuICAgICAgeDogTWF0aC5taW4obG9vcGFQb3MueCwgbG9vcGJQb3MueCksXG4gICAgICB5OiBNYXRoLm1pbihsb29wYVBvcy55LCBsb29wYlBvcy55KVxuICAgIH07IC8vIGF2b2lkcyBjYXNlcyB3aXRoIGltcG9zc2libGUgYmV6aWVyc1xuXG4gICAgdmFyIG1pbkNvbXBvdW5kU3RyZXRjaCA9IDAuNTtcbiAgICB2YXIgY29tcG91bmRTdHJldGNoQSA9IE1hdGgubWF4KG1pbkNvbXBvdW5kU3RyZXRjaCwgTWF0aC5sb2coc3JjVyAqIDAuMDEpKTtcbiAgICB2YXIgY29tcG91bmRTdHJldGNoQiA9IE1hdGgubWF4KG1pbkNvbXBvdW5kU3RyZXRjaCwgTWF0aC5sb2codGd0VyAqIDAuMDEpKTtcbiAgICBycy5jdHJscHRzID0gW2xvb3BQb3MueCwgbG9vcFBvcy55IC0gKDEgKyBNYXRoLnBvdyhsb29wVywgMS4xMikgLyAxMDApICogbG9vcERpc3QgKiAoaiAvIDMgKyAxKSAqIGNvbXBvdW5kU3RyZXRjaEEsIGxvb3BQb3MueCAtICgxICsgTWF0aC5wb3cobG9vcFcsIDEuMTIpIC8gMTAwKSAqIGxvb3BEaXN0ICogKGogLyAzICsgMSkgKiBjb21wb3VuZFN0cmV0Y2hCLCBsb29wUG9zLnldO1xuICB9O1xuXG4gIEJScCRjLmZpbmRTdHJhaWdodEVkZ2VQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIC8vIFN0cmFpZ2h0IGVkZ2Ugd2l0aGluIGJ1bmRsZVxuICAgIGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2guZWRnZVR5cGUgPSAnc3RyYWlnaHQnO1xuICB9O1xuXG4gIEJScCRjLmZpbmRCZXppZXJQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8sIGksIGVkZ2VJc1VuYnVuZGxlZCwgZWRnZUlzU3dhcHBlZCkge1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIHZlY3Rvck5vcm1JbnZlcnNlID0gcGFpckluZm8udmVjdG9yTm9ybUludmVyc2UsXG4gICAgICAgIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyxcbiAgICAgICAgaW50ZXJzZWN0aW9uUHRzID0gcGFpckluZm8uaW50ZXJzZWN0aW9uUHRzO1xuICAgIHZhciBlZGdlRGlzdGFuY2VzID0gZWRnZS5wc3R5bGUoJ2VkZ2UtZGlzdGFuY2VzJykudmFsdWU7XG4gICAgdmFyIHN0ZXBTaXplID0gZWRnZS5wc3R5bGUoJ2NvbnRyb2wtcG9pbnQtc3RlcC1zaXplJykucGZWYWx1ZTtcbiAgICB2YXIgY3RybHB0RGlzdHMgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC1kaXN0YW5jZXMnKTtcbiAgICB2YXIgY3RybHB0V3MgPSBlZGdlLnBzdHlsZSgnY29udHJvbC1wb2ludC13ZWlnaHRzJyk7XG4gICAgdmFyIGJlemllck4gPSBjdHJscHREaXN0cyAmJiBjdHJscHRXcyA/IE1hdGgubWluKGN0cmxwdERpc3RzLnZhbHVlLmxlbmd0aCwgY3RybHB0V3MudmFsdWUubGVuZ3RoKSA6IDE7XG4gICAgdmFyIGN0cmxwdERpc3QgPSBjdHJscHREaXN0cyA/IGN0cmxwdERpc3RzLnBmVmFsdWVbMF0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIGN0cmxwdFdlaWdodCA9IGN0cmxwdFdzLnZhbHVlWzBdOyAvLyAoTXVsdGkpYmV6aWVyXG5cbiAgICB2YXIgbXVsdGkgPSBlZGdlSXNVbmJ1bmRsZWQ7XG4gICAgcnMuZWRnZVR5cGUgPSBtdWx0aSA/ICdtdWx0aWJlemllcicgOiAnYmV6aWVyJztcbiAgICBycy5jdHJscHRzID0gW107XG5cbiAgICBmb3IgKHZhciBiID0gMDsgYiA8IGJlemllck47IGIrKykge1xuICAgICAgdmFyIG5vcm1jdHJscHREaXN0ID0gKDAuNSAtIHBhaXJJbmZvLmVsZXMubGVuZ3RoIC8gMiArIGkpICogc3RlcFNpemUgKiAoZWRnZUlzU3dhcHBlZCA/IC0xIDogMSk7XG4gICAgICB2YXIgbWFuY3RybHB0RGlzdCA9IHZvaWQgMDtcbiAgICAgIHZhciBzaWduID0gc2lnbnVtKG5vcm1jdHJscHREaXN0KTtcblxuICAgICAgaWYgKG11bHRpKSB7XG4gICAgICAgIGN0cmxwdERpc3QgPSBjdHJscHREaXN0cyA/IGN0cmxwdERpc3RzLnBmVmFsdWVbYl0gOiBzdGVwU2l6ZTsgLy8gZmFsbCBiYWNrIG9uIHN0ZXAgc2l6ZVxuXG4gICAgICAgIGN0cmxwdFdlaWdodCA9IGN0cmxwdFdzLnZhbHVlW2JdO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWRnZUlzVW5idW5kbGVkKSB7XG4gICAgICAgIC8vIG11bHRpIG9yIHNpbmdsZSB1bmJ1bmRsZWRcbiAgICAgICAgbWFuY3RybHB0RGlzdCA9IGN0cmxwdERpc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYW5jdHJscHREaXN0ID0gY3RybHB0RGlzdCAhPT0gdW5kZWZpbmVkID8gc2lnbiAqIGN0cmxwdERpc3QgOiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBkaXN0YW5jZUZyb21NaWRwb2ludCA9IG1hbmN0cmxwdERpc3QgIT09IHVuZGVmaW5lZCA/IG1hbmN0cmxwdERpc3QgOiBub3JtY3RybHB0RGlzdDtcbiAgICAgIHZhciB3MSA9IDEgLSBjdHJscHRXZWlnaHQ7XG4gICAgICB2YXIgdzIgPSBjdHJscHRXZWlnaHQ7XG4gICAgICB2YXIgbWlkcHRQdHMgPSBlZGdlRGlzdGFuY2VzID09PSAnbm9kZS1wb3NpdGlvbicgPyBwb3NQdHMgOiBpbnRlcnNlY3Rpb25QdHM7XG4gICAgICB2YXIgYWRqdXN0ZWRNaWRwdCA9IHtcbiAgICAgICAgeDogbWlkcHRQdHMueDEgKiB3MSArIG1pZHB0UHRzLngyICogdzIsXG4gICAgICAgIHk6IG1pZHB0UHRzLnkxICogdzEgKyBtaWRwdFB0cy55MiAqIHcyXG4gICAgICB9O1xuICAgICAgcnMuY3RybHB0cy5wdXNoKGFkanVzdGVkTWlkcHQueCArIHZlY3Rvck5vcm1JbnZlcnNlLnggKiBkaXN0YW5jZUZyb21NaWRwb2ludCwgYWRqdXN0ZWRNaWRwdC55ICsgdmVjdG9yTm9ybUludmVyc2UueSAqIGRpc3RhbmNlRnJvbU1pZHBvaW50KTtcbiAgICB9XG4gIH07XG5cbiAgQlJwJGMuZmluZFRheGlQb2ludHMgPSBmdW5jdGlvbiAoZWRnZSwgcGFpckluZm8pIHtcbiAgICAvLyBUYXhpY2FiIGdlb21ldHJ5IHdpdGggdHdvIHR1cm5zIG1heGltdW1cbiAgICB2YXIgcnMgPSBlZGdlLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHJzLmVkZ2VUeXBlID0gJ3NlZ21lbnRzJztcbiAgICB2YXIgVkVSVElDQUwgPSAndmVydGljYWwnO1xuICAgIHZhciBIT1JJWk9OVEFMID0gJ2hvcml6b250YWwnO1xuICAgIHZhciBMRUZUV0FSRCA9ICdsZWZ0d2FyZCc7XG4gICAgdmFyIFJJR0hUV0FSRCA9ICdyaWdodHdhcmQnO1xuICAgIHZhciBET1dOV0FSRCA9ICdkb3dud2FyZCc7XG4gICAgdmFyIFVQV0FSRCA9ICd1cHdhcmQnO1xuICAgIHZhciBBVVRPID0gJ2F1dG8nO1xuICAgIHZhciBwb3NQdHMgPSBwYWlySW5mby5wb3NQdHMsXG4gICAgICAgIHNyY1cgPSBwYWlySW5mby5zcmNXLFxuICAgICAgICBzcmNIID0gcGFpckluZm8uc3JjSCxcbiAgICAgICAgdGd0VyA9IHBhaXJJbmZvLnRndFcsXG4gICAgICAgIHRndEggPSBwYWlySW5mby50Z3RIO1xuICAgIHZhciBlZGdlRGlzdGFuY2VzID0gZWRnZS5wc3R5bGUoJ2VkZ2UtZGlzdGFuY2VzJykudmFsdWU7XG4gICAgdmFyIGRJbmNsdWRlc05vZGVCb2R5ID0gZWRnZURpc3RhbmNlcyAhPT0gJ25vZGUtcG9zaXRpb24nO1xuICAgIHZhciB0YXhpRGlyID0gZWRnZS5wc3R5bGUoJ3RheGktZGlyZWN0aW9uJykudmFsdWU7XG4gICAgdmFyIHJhd1RheGlEaXIgPSB0YXhpRGlyOyAvLyB1bnByb2Nlc3NlZCB2YWx1ZVxuXG4gICAgdmFyIHRheGlUdXJuID0gZWRnZS5wc3R5bGUoJ3RheGktdHVybicpO1xuICAgIHZhciB0dXJuSXNQZXJjZW50ID0gdGF4aVR1cm4udW5pdHMgPT09ICclJztcbiAgICB2YXIgdGF4aVR1cm5QZlZhbCA9IHRheGlUdXJuLnBmVmFsdWU7XG4gICAgdmFyIHR1cm5Jc05lZ2F0aXZlID0gdGF4aVR1cm5QZlZhbCA8IDA7IC8vIGkuZS4gZnJvbSB0YXJnZXQgc2lkZVxuXG4gICAgdmFyIG1pbkQgPSBlZGdlLnBzdHlsZSgndGF4aS10dXJuLW1pbi1kaXN0YW5jZScpLnBmVmFsdWU7XG4gICAgdmFyIGR3ID0gZEluY2x1ZGVzTm9kZUJvZHkgPyAoc3JjVyArIHRndFcpIC8gMiA6IDA7XG4gICAgdmFyIGRoID0gZEluY2x1ZGVzTm9kZUJvZHkgPyAoc3JjSCArIHRndEgpIC8gMiA6IDA7XG4gICAgdmFyIHBkeCA9IHBvc1B0cy54MiAtIHBvc1B0cy54MTtcbiAgICB2YXIgcGR5ID0gcG9zUHRzLnkyIC0gcG9zUHRzLnkxOyAvLyB0YWtlIGF3YXkgdGhlIGVmZmVjdGl2ZSB3L2ggZnJvbSB0aGUgbWFnbml0dWRlIG9mIHRoZSBkZWx0YSB2YWx1ZVxuXG4gICAgdmFyIHN1YkRXSCA9IGZ1bmN0aW9uIHN1YkRXSChkeHksIGR3aCkge1xuICAgICAgaWYgKGR4eSA+IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KGR4eSAtIGR3aCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oZHh5ICsgZHdoLCAwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGR4ID0gc3ViRFdIKHBkeCwgZHcpO1xuICAgIHZhciBkeSA9IHN1YkRXSChwZHksIGRoKTtcbiAgICB2YXIgaXNFeHBsaWNpdERpciA9IGZhbHNlO1xuXG4gICAgaWYgKHJhd1RheGlEaXIgPT09IEFVVE8pIHtcbiAgICAgIHRheGlEaXIgPSBNYXRoLmFicyhkeCkgPiBNYXRoLmFicyhkeSkgPyBIT1JJWk9OVEFMIDogVkVSVElDQUw7XG4gICAgfSBlbHNlIGlmIChyYXdUYXhpRGlyID09PSBVUFdBUkQgfHwgcmF3VGF4aURpciA9PT0gRE9XTldBUkQpIHtcbiAgICAgIHRheGlEaXIgPSBWRVJUSUNBTDtcbiAgICAgIGlzRXhwbGljaXREaXIgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocmF3VGF4aURpciA9PT0gTEVGVFdBUkQgfHwgcmF3VGF4aURpciA9PT0gUklHSFRXQVJEKSB7XG4gICAgICB0YXhpRGlyID0gSE9SSVpPTlRBTDtcbiAgICAgIGlzRXhwbGljaXREaXIgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBpc1ZlcnQgPSB0YXhpRGlyID09PSBWRVJUSUNBTDtcbiAgICB2YXIgbCA9IGlzVmVydCA/IGR5IDogZHg7XG4gICAgdmFyIHBsID0gaXNWZXJ0ID8gcGR5IDogcGR4O1xuICAgIHZhciBzZ25MID0gc2lnbnVtKHBsKTtcbiAgICB2YXIgZm9yY2VkRGlyID0gZmFsc2U7XG5cbiAgICBpZiAoIShpc0V4cGxpY2l0RGlyICYmICh0dXJuSXNQZXJjZW50IHx8IHR1cm5Jc05lZ2F0aXZlKSkgLy8gZm9yY2luZyBpbiB0aGlzIGNhc2Ugd291bGQgY2F1c2Ugd2VpcmQgZ3Jvd2luZyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uXG4gICAgJiYgKHJhd1RheGlEaXIgPT09IERPV05XQVJEICYmIHBsIDwgMCB8fCByYXdUYXhpRGlyID09PSBVUFdBUkQgJiYgcGwgPiAwIHx8IHJhd1RheGlEaXIgPT09IExFRlRXQVJEICYmIHBsID4gMCB8fCByYXdUYXhpRGlyID09PSBSSUdIVFdBUkQgJiYgcGwgPCAwKSkge1xuICAgICAgc2duTCAqPSAtMTtcbiAgICAgIGwgPSBzZ25MICogTWF0aC5hYnMobCk7XG4gICAgICBmb3JjZWREaXIgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBkO1xuXG4gICAgaWYgKHR1cm5Jc1BlcmNlbnQpIHtcbiAgICAgIHZhciBwID0gdGF4aVR1cm5QZlZhbCA8IDAgPyAxICsgdGF4aVR1cm5QZlZhbCA6IHRheGlUdXJuUGZWYWw7XG4gICAgICBkID0gcCAqIGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBrID0gdGF4aVR1cm5QZlZhbCA8IDAgPyBsIDogMDtcbiAgICAgIGQgPSBrICsgdGF4aVR1cm5QZlZhbCAqIHNnbkw7XG4gICAgfVxuXG4gICAgdmFyIGdldElzVG9vQ2xvc2UgPSBmdW5jdGlvbiBnZXRJc1Rvb0Nsb3NlKGQpIHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhkKSA8IG1pbkQgfHwgTWF0aC5hYnMoZCkgPj0gTWF0aC5hYnMobCk7XG4gICAgfTtcblxuICAgIHZhciBpc1Rvb0Nsb3NlU3JjID0gZ2V0SXNUb29DbG9zZShkKTtcbiAgICB2YXIgaXNUb29DbG9zZVRndCA9IGdldElzVG9vQ2xvc2UoTWF0aC5hYnMobCkgLSBNYXRoLmFicyhkKSk7XG4gICAgdmFyIGlzVG9vQ2xvc2UgPSBpc1Rvb0Nsb3NlU3JjIHx8IGlzVG9vQ2xvc2VUZ3Q7XG5cbiAgICBpZiAoaXNUb29DbG9zZSAmJiAhZm9yY2VkRGlyKSB7XG4gICAgICAvLyBub24taWRlYWwgcm91dGluZ1xuICAgICAgaWYgKGlzVmVydCkge1xuICAgICAgICAvLyB2ZXJ0aWNhbCBmYWxsYmFja3NcbiAgICAgICAgdmFyIGxTaGFwZUluc2lkZVNyYyA9IE1hdGguYWJzKHBsKSA8PSBzcmNIIC8gMjtcbiAgICAgICAgdmFyIGxTaGFwZUluc2lkZVRndCA9IE1hdGguYWJzKHBkeCkgPD0gdGd0VyAvIDI7XG5cbiAgICAgICAgaWYgKGxTaGFwZUluc2lkZVNyYykge1xuICAgICAgICAgIC8vIGhvcml6b250YWwgWi1zaGFwZSAoZGlyZWN0aW9uIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgICAgdmFyIHggPSAocG9zUHRzLngxICsgcG9zUHRzLngyKSAvIDI7XG4gICAgICAgICAgdmFyIHkxID0gcG9zUHRzLnkxLFxuICAgICAgICAgICAgICB5MiA9IHBvc1B0cy55MjtcbiAgICAgICAgICBycy5zZWdwdHMgPSBbeCwgeTEsIHgsIHkyXTtcbiAgICAgICAgfSBlbHNlIGlmIChsU2hhcGVJbnNpZGVUZ3QpIHtcbiAgICAgICAgICAvLyB2ZXJ0aWNhbCBaLXNoYXBlIChkaXN0YW5jZSBub3QgcmVzcGVjdGVkKVxuICAgICAgICAgIHZhciB5ID0gKHBvc1B0cy55MSArIHBvc1B0cy55MikgLyAyO1xuICAgICAgICAgIHZhciB4MSA9IHBvc1B0cy54MSxcbiAgICAgICAgICAgICAgeDIgPSBwb3NQdHMueDI7XG4gICAgICAgICAgcnMuc2VncHRzID0gW3gxLCB5LCB4MiwgeV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTC1zaGFwZSBmYWxsYmFjayAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkLCBidXQgd29ya3Mgd2VsbCB3aXRoIHRyZWUgc2libGluZ3MpXG4gICAgICAgICAgcnMuc2VncHRzID0gW3Bvc1B0cy54MSwgcG9zUHRzLnkyXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaG9yaXpvbnRhbCBmYWxsYmFja3NcbiAgICAgICAgdmFyIF9sU2hhcGVJbnNpZGVTcmMgPSBNYXRoLmFicyhwbCkgPD0gc3JjVyAvIDI7XG5cbiAgICAgICAgdmFyIF9sU2hhcGVJbnNpZGVUZ3QgPSBNYXRoLmFicyhwZHkpIDw9IHRndEggLyAyO1xuXG4gICAgICAgIGlmIChfbFNoYXBlSW5zaWRlU3JjKSB7XG4gICAgICAgICAgLy8gdmVydGljYWwgWi1zaGFwZSAoZGlyZWN0aW9uIG5vdCByZXNwZWN0ZWQpXG4gICAgICAgICAgdmFyIF95ID0gKHBvc1B0cy55MSArIHBvc1B0cy55MikgLyAyO1xuXG4gICAgICAgICAgdmFyIF94ID0gcG9zUHRzLngxLFxuICAgICAgICAgICAgICBfeDIgPSBwb3NQdHMueDI7XG4gICAgICAgICAgcnMuc2VncHRzID0gW194LCBfeSwgX3gyLCBfeV07XG4gICAgICAgIH0gZWxzZSBpZiAoX2xTaGFwZUluc2lkZVRndCkge1xuICAgICAgICAgIC8vIGhvcml6b250YWwgWi1zaGFwZSAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkKVxuICAgICAgICAgIHZhciBfeDMgPSAocG9zUHRzLngxICsgcG9zUHRzLngyKSAvIDI7XG5cbiAgICAgICAgICB2YXIgX3kyID0gcG9zUHRzLnkxLFxuICAgICAgICAgICAgICBfeTMgPSBwb3NQdHMueTI7XG4gICAgICAgICAgcnMuc2VncHRzID0gW194MywgX3kyLCBfeDMsIF95M107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTC1zaGFwZSAodHVybiBkaXN0YW5jZSBub3QgcmVzcGVjdGVkLCBidXQgd29ya3Mgd2VsbCBmb3IgdHJlZSBzaWJsaW5ncylcbiAgICAgICAgICBycy5zZWdwdHMgPSBbcG9zUHRzLngyLCBwb3NQdHMueTFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlkZWFsIHJvdXRpbmdcbiAgICAgIGlmIChpc1ZlcnQpIHtcbiAgICAgICAgdmFyIF95NCA9IHBvc1B0cy55MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNIIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgICB2YXIgX3g0ID0gcG9zUHRzLngxLFxuICAgICAgICAgICAgX3g1ID0gcG9zUHRzLngyO1xuICAgICAgICBycy5zZWdwdHMgPSBbX3g0LCBfeTQsIF94NSwgX3k0XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGhvcml6b250YWxcbiAgICAgICAgdmFyIF94NiA9IHBvc1B0cy54MSArIGQgKyAoZEluY2x1ZGVzTm9kZUJvZHkgPyBzcmNXIC8gMiAqIHNnbkwgOiAwKTtcblxuICAgICAgICB2YXIgX3k1ID0gcG9zUHRzLnkxLFxuICAgICAgICAgICAgX3k2ID0gcG9zUHRzLnkyO1xuICAgICAgICBycy5zZWdwdHMgPSBbX3g2LCBfeTUsIF94NiwgX3k2XTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQlJwJGMudHJ5VG9Db3JyZWN0SW52YWxpZFBvaW50cyA9IGZ1bmN0aW9uIChlZGdlLCBwYWlySW5mbykge1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7IC8vIGNhbiBvbmx5IGNvcnJlY3QgYmV6aWVycyBmb3Igbm93Li4uXG5cbiAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdiZXppZXInKSB7XG4gICAgICB2YXIgc3JjUG9zID0gcGFpckluZm8uc3JjUG9zLFxuICAgICAgICAgIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyxcbiAgICAgICAgICBzcmNXID0gcGFpckluZm8uc3JjVyxcbiAgICAgICAgICBzcmNIID0gcGFpckluZm8uc3JjSCxcbiAgICAgICAgICB0Z3RXID0gcGFpckluZm8udGd0VyxcbiAgICAgICAgICB0Z3RIID0gcGFpckluZm8udGd0SCxcbiAgICAgICAgICBzcmNTaGFwZSA9IHBhaXJJbmZvLnNyY1NoYXBlLFxuICAgICAgICAgIHRndFNoYXBlID0gcGFpckluZm8udGd0U2hhcGU7XG4gICAgICB2YXIgYmFkU3RhcnQgPSAhbnVtYmVyJDEocnMuc3RhcnRYKSB8fCAhbnVtYmVyJDEocnMuc3RhcnRZKTtcbiAgICAgIHZhciBiYWRBU3RhcnQgPSAhbnVtYmVyJDEocnMuYXJyb3dTdGFydFgpIHx8ICFudW1iZXIkMShycy5hcnJvd1N0YXJ0WSk7XG4gICAgICB2YXIgYmFkRW5kID0gIW51bWJlciQxKHJzLmVuZFgpIHx8ICFudW1iZXIkMShycy5lbmRZKTtcbiAgICAgIHZhciBiYWRBRW5kID0gIW51bWJlciQxKHJzLmFycm93RW5kWCkgfHwgIW51bWJlciQxKHJzLmFycm93RW5kWSk7XG4gICAgICB2YXIgbWluQ3BBRGlzdEZhY3RvciA9IDM7XG4gICAgICB2YXIgYXJyb3dXID0gdGhpcy5nZXRBcnJvd1dpZHRoKGVkZ2UucHN0eWxlKCd3aWR0aCcpLnBmVmFsdWUsIGVkZ2UucHN0eWxlKCdhcnJvdy1zY2FsZScpLnZhbHVlKSAqIHRoaXMuYXJyb3dTaGFwZVdpZHRoO1xuICAgICAgdmFyIG1pbkNwQURpc3QgPSBtaW5DcEFEaXN0RmFjdG9yICogYXJyb3dXO1xuICAgICAgdmFyIHN0YXJ0QUNwRGlzdCA9IGRpc3Qoe1xuICAgICAgICB4OiBycy5jdHJscHRzWzBdLFxuICAgICAgICB5OiBycy5jdHJscHRzWzFdXG4gICAgICB9LCB7XG4gICAgICAgIHg6IHJzLnN0YXJ0WCxcbiAgICAgICAgeTogcnMuc3RhcnRZXG4gICAgICB9KTtcbiAgICAgIHZhciBjbG9zZVN0YXJ0QUNwID0gc3RhcnRBQ3BEaXN0IDwgbWluQ3BBRGlzdDtcbiAgICAgIHZhciBlbmRBQ3BEaXN0ID0gZGlzdCh7XG4gICAgICAgIHg6IHJzLmN0cmxwdHNbMF0sXG4gICAgICAgIHk6IHJzLmN0cmxwdHNbMV1cbiAgICAgIH0sIHtcbiAgICAgICAgeDogcnMuZW5kWCxcbiAgICAgICAgeTogcnMuZW5kWVxuICAgICAgfSk7XG4gICAgICB2YXIgY2xvc2VFbmRBQ3AgPSBlbmRBQ3BEaXN0IDwgbWluQ3BBRGlzdDtcbiAgICAgIHZhciBvdmVybGFwcGluZyA9IGZhbHNlO1xuXG4gICAgICBpZiAoYmFkU3RhcnQgfHwgYmFkQVN0YXJ0IHx8IGNsb3NlU3RhcnRBQ3ApIHtcbiAgICAgICAgb3ZlcmxhcHBpbmcgPSB0cnVlOyAvLyBwcm9qZWN0IGNvbnRyb2wgcG9pbnQgYWxvbmcgbGluZSBmcm9tIHNyYyBjZW50cmUgdG8gb3V0c2lkZSB0aGUgc3JjIHNoYXBlXG4gICAgICAgIC8vIChvdGhlcndpc2UgaW50ZXJzZWN0aW9uIHdpbGwgeWllbGQgbm90aGluZylcblxuICAgICAgICB2YXIgY3BEID0ge1xuICAgICAgICAgIC8vIGRlbHRhXG4gICAgICAgICAgeDogcnMuY3RybHB0c1swXSAtIHNyY1Bvcy54LFxuICAgICAgICAgIHk6IHJzLmN0cmxwdHNbMV0gLSBzcmNQb3MueVxuICAgICAgICB9O1xuICAgICAgICB2YXIgY3BMID0gTWF0aC5zcXJ0KGNwRC54ICogY3BELnggKyBjcEQueSAqIGNwRC55KTsgLy8gbGVuZ3RoIG9mIGxpbmVcblxuICAgICAgICB2YXIgY3BNID0ge1xuICAgICAgICAgIC8vIG5vcm1hbGlzZWQgZGVsdGFcbiAgICAgICAgICB4OiBjcEQueCAvIGNwTCxcbiAgICAgICAgICB5OiBjcEQueSAvIGNwTFxuICAgICAgICB9O1xuICAgICAgICB2YXIgcmFkaXVzID0gTWF0aC5tYXgoc3JjVywgc3JjSCk7XG4gICAgICAgIHZhciBjcFByb2ogPSB7XG4gICAgICAgICAgLy8gKjIgcmFkaXVzIGd1YXJhbnRlZXMgb3V0c2lkZSBzaGFwZVxuICAgICAgICAgIHg6IHJzLmN0cmxwdHNbMF0gKyBjcE0ueCAqIDIgKiByYWRpdXMsXG4gICAgICAgICAgeTogcnMuY3RybHB0c1sxXSArIGNwTS55ICogMiAqIHJhZGl1c1xuICAgICAgICB9O1xuICAgICAgICB2YXIgc3JjQ3RybFB0SW50biA9IHNyY1NoYXBlLmludGVyc2VjdExpbmUoc3JjUG9zLngsIHNyY1Bvcy55LCBzcmNXLCBzcmNILCBjcFByb2oueCwgY3BQcm9qLnksIDApO1xuXG4gICAgICAgIGlmIChjbG9zZVN0YXJ0QUNwKSB7XG4gICAgICAgICAgcnMuY3RybHB0c1swXSA9IHJzLmN0cmxwdHNbMF0gKyBjcE0ueCAqIChtaW5DcEFEaXN0IC0gc3RhcnRBQ3BEaXN0KTtcbiAgICAgICAgICBycy5jdHJscHRzWzFdID0gcnMuY3RybHB0c1sxXSArIGNwTS55ICogKG1pbkNwQURpc3QgLSBzdGFydEFDcERpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJzLmN0cmxwdHNbMF0gPSBzcmNDdHJsUHRJbnRuWzBdICsgY3BNLnggKiBtaW5DcEFEaXN0O1xuICAgICAgICAgIHJzLmN0cmxwdHNbMV0gPSBzcmNDdHJsUHRJbnRuWzFdICsgY3BNLnkgKiBtaW5DcEFEaXN0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChiYWRFbmQgfHwgYmFkQUVuZCB8fCBjbG9zZUVuZEFDcCkge1xuICAgICAgICBvdmVybGFwcGluZyA9IHRydWU7IC8vIHByb2plY3QgY29udHJvbCBwb2ludCBhbG9uZyBsaW5lIGZyb20gdGd0IGNlbnRyZSB0byBvdXRzaWRlIHRoZSB0Z3Qgc2hhcGVcbiAgICAgICAgLy8gKG90aGVyd2lzZSBpbnRlcnNlY3Rpb24gd2lsbCB5aWVsZCBub3RoaW5nKVxuXG4gICAgICAgIHZhciBfY3BEID0ge1xuICAgICAgICAgIC8vIGRlbHRhXG4gICAgICAgICAgeDogcnMuY3RybHB0c1swXSAtIHRndFBvcy54LFxuICAgICAgICAgIHk6IHJzLmN0cmxwdHNbMV0gLSB0Z3RQb3MueVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBfY3BMID0gTWF0aC5zcXJ0KF9jcEQueCAqIF9jcEQueCArIF9jcEQueSAqIF9jcEQueSk7IC8vIGxlbmd0aCBvZiBsaW5lXG5cblxuICAgICAgICB2YXIgX2NwTSA9IHtcbiAgICAgICAgICAvLyBub3JtYWxpc2VkIGRlbHRhXG4gICAgICAgICAgeDogX2NwRC54IC8gX2NwTCxcbiAgICAgICAgICB5OiBfY3BELnkgLyBfY3BMXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIF9yYWRpdXMgPSBNYXRoLm1heChzcmNXLCBzcmNIKTtcblxuICAgICAgICB2YXIgX2NwUHJvaiA9IHtcbiAgICAgICAgICAvLyAqMiByYWRpdXMgZ3VhcmFudGVlcyBvdXRzaWRlIHNoYXBlXG4gICAgICAgICAgeDogcnMuY3RybHB0c1swXSArIF9jcE0ueCAqIDIgKiBfcmFkaXVzLFxuICAgICAgICAgIHk6IHJzLmN0cmxwdHNbMV0gKyBfY3BNLnkgKiAyICogX3JhZGl1c1xuICAgICAgICB9O1xuICAgICAgICB2YXIgdGd0Q3RybFB0SW50biA9IHRndFNoYXBlLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0Z3RXLCB0Z3RILCBfY3BQcm9qLngsIF9jcFByb2oueSwgMCk7XG5cbiAgICAgICAgaWYgKGNsb3NlRW5kQUNwKSB7XG4gICAgICAgICAgcnMuY3RybHB0c1swXSA9IHJzLmN0cmxwdHNbMF0gKyBfY3BNLnggKiAobWluQ3BBRGlzdCAtIGVuZEFDcERpc3QpO1xuICAgICAgICAgIHJzLmN0cmxwdHNbMV0gPSBycy5jdHJscHRzWzFdICsgX2NwTS55ICogKG1pbkNwQURpc3QgLSBlbmRBQ3BEaXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBycy5jdHJscHRzWzBdID0gdGd0Q3RybFB0SW50blswXSArIF9jcE0ueCAqIG1pbkNwQURpc3Q7XG4gICAgICAgICAgcnMuY3RybHB0c1sxXSA9IHRndEN0cmxQdEludG5bMV0gKyBfY3BNLnkgKiBtaW5DcEFEaXN0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvdmVybGFwcGluZykge1xuICAgICAgICAvLyByZWNhbGMgZW5kcHRzXG4gICAgICAgIHRoaXMuZmluZEVuZHBvaW50cyhlZGdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQlJwJGMuc3RvcmVBbGxwdHMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgICBpZiAocnMuZWRnZVR5cGUgPT09ICdtdWx0aWJlemllcicgfHwgcnMuZWRnZVR5cGUgPT09ICdiZXppZXInIHx8IHJzLmVkZ2VUeXBlID09PSAnc2VsZicgfHwgcnMuZWRnZVR5cGUgPT09ICdjb21wb3VuZCcpIHtcbiAgICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgICAgcnMuYWxscHRzLnB1c2gocnMuc3RhcnRYLCBycy5zdGFydFkpO1xuXG4gICAgICBmb3IgKHZhciBiID0gMDsgYiArIDEgPCBycy5jdHJscHRzLmxlbmd0aDsgYiArPSAyKSB7XG4gICAgICAgIC8vIGN0cmwgcHQgaXRzZWxmXG4gICAgICAgIHJzLmFsbHB0cy5wdXNoKHJzLmN0cmxwdHNbYl0sIHJzLmN0cmxwdHNbYiArIDFdKTsgLy8gdGhlIG1pZHB0IGJldHdlZW4gY3RybHB0cyBhcyBpbnRlcm1lZGlhdGUgZGVzdGluYXRpb24gcHRzXG5cbiAgICAgICAgaWYgKGIgKyAzIDwgcnMuY3RybHB0cy5sZW5ndGgpIHtcbiAgICAgICAgICBycy5hbGxwdHMucHVzaCgocnMuY3RybHB0c1tiXSArIHJzLmN0cmxwdHNbYiArIDJdKSAvIDIsIChycy5jdHJscHRzW2IgKyAxXSArIHJzLmN0cmxwdHNbYiArIDNdKSAvIDIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJzLmFsbHB0cy5wdXNoKHJzLmVuZFgsIHJzLmVuZFkpO1xuICAgICAgdmFyIG0sIG10O1xuXG4gICAgICBpZiAocnMuY3RybHB0cy5sZW5ndGggLyAyICUgMiA9PT0gMCkge1xuICAgICAgICBtID0gcnMuYWxscHRzLmxlbmd0aCAvIDIgLSAxO1xuICAgICAgICBycy5taWRYID0gcnMuYWxscHRzW21dO1xuICAgICAgICBycy5taWRZID0gcnMuYWxscHRzW20gKyAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG0gPSBycy5hbGxwdHMubGVuZ3RoIC8gMiAtIDM7XG4gICAgICAgIG10ID0gMC41O1xuICAgICAgICBycy5taWRYID0gcWJlemllckF0KHJzLmFsbHB0c1ttXSwgcnMuYWxscHRzW20gKyAyXSwgcnMuYWxscHRzW20gKyA0XSwgbXQpO1xuICAgICAgICBycy5taWRZID0gcWJlemllckF0KHJzLmFsbHB0c1ttICsgMV0sIHJzLmFsbHB0c1ttICsgM10sIHJzLmFsbHB0c1ttICsgNV0sIG10KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJzLmVkZ2VUeXBlID09PSAnc3RyYWlnaHQnKSB7XG4gICAgICAvLyBuZWVkIHRvIGNhbGMgdGhlc2UgYWZ0ZXIgZW5kcHRzXG4gICAgICBycy5hbGxwdHMgPSBbcnMuc3RhcnRYLCBycy5zdGFydFksIHJzLmVuZFgsIHJzLmVuZFldOyAvLyBkZWZhdWx0IG1pZHB0IGZvciBsYWJlbHMgZXRjXG5cbiAgICAgIHJzLm1pZFggPSAocnMuc3RhcnRYICsgcnMuZW5kWCArIHJzLmFycm93U3RhcnRYICsgcnMuYXJyb3dFbmRYKSAvIDQ7XG4gICAgICBycy5taWRZID0gKHJzLnN0YXJ0WSArIHJzLmVuZFkgKyBycy5hcnJvd1N0YXJ0WSArIHJzLmFycm93RW5kWSkgLyA0O1xuICAgIH0gZWxzZSBpZiAocnMuZWRnZVR5cGUgPT09ICdzZWdtZW50cycpIHtcbiAgICAgIHJzLmFsbHB0cyA9IFtdO1xuICAgICAgcnMuYWxscHRzLnB1c2gocnMuc3RhcnRYLCBycy5zdGFydFkpO1xuICAgICAgcnMuYWxscHRzLnB1c2guYXBwbHkocnMuYWxscHRzLCBycy5zZWdwdHMpO1xuICAgICAgcnMuYWxscHRzLnB1c2gocnMuZW5kWCwgcnMuZW5kWSk7XG5cbiAgICAgIGlmIChycy5zZWdwdHMubGVuZ3RoICUgNCA9PT0gMCkge1xuICAgICAgICB2YXIgaTIgPSBycy5zZWdwdHMubGVuZ3RoIC8gMjtcbiAgICAgICAgdmFyIGkxID0gaTIgLSAyO1xuICAgICAgICBycy5taWRYID0gKHJzLnNlZ3B0c1tpMV0gKyBycy5zZWdwdHNbaTJdKSAvIDI7XG4gICAgICAgIHJzLm1pZFkgPSAocnMuc2VncHRzW2kxICsgMV0gKyBycy5zZWdwdHNbaTIgKyAxXSkgLyAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIF9pID0gcnMuc2VncHRzLmxlbmd0aCAvIDIgLSAxO1xuXG4gICAgICAgIHJzLm1pZFggPSBycy5zZWdwdHNbX2ldO1xuICAgICAgICBycy5taWRZID0gcnMuc2VncHRzW19pICsgMV07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJScCRjLmNoZWNrRm9ySW52YWxpZEVkZ2VXYXJuaW5nID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gICAgaWYgKHJzLm5vZGVzT3ZlcmxhcCB8fCBudW1iZXIkMShycy5zdGFydFgpICYmIG51bWJlciQxKHJzLnN0YXJ0WSkgJiYgbnVtYmVyJDEocnMuZW5kWCkgJiYgbnVtYmVyJDEocnMuZW5kWSkpIHtcbiAgICAgIHJzLmxvZ2dlZEVyciA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXJzLmxvZ2dlZEVycikge1xuICAgICAgICBycy5sb2dnZWRFcnIgPSB0cnVlO1xuICAgICAgICB3YXJuKCdFZGdlIGAnICsgZWRnZS5pZCgpICsgJ2AgaGFzIGludmFsaWQgZW5kcG9pbnRzIGFuZCBzbyBpdCBpcyBpbXBvc3NpYmxlIHRvIGRyYXcuICBBZGp1c3QgeW91ciBlZGdlIHN0eWxlIChlLmcuIGNvbnRyb2wgcG9pbnRzKSBhY2NvcmRpbmdseSBvciB1c2UgYW4gYWx0ZXJuYXRpdmUgZWRnZSB0eXBlLiAgVGhpcyBpcyBleHBlY3RlZCBiZWhhdmlvdXIgd2hlbiB0aGUgc291cmNlIG5vZGUgYW5kIHRoZSB0YXJnZXQgbm9kZSBvdmVybGFwLicpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCUnAkYy5maW5kRWRnZUNvbnRyb2xQb2ludHMgPSBmdW5jdGlvbiAoZWRnZXMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKCFlZGdlcyB8fCBlZGdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGN5ID0gci5jeTtcbiAgICB2YXIgaGFzQ29tcG91bmRzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBoYXNoVGFibGUgPSB7XG4gICAgICBtYXA6IG5ldyBNYXAkMigpLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQocGFpcklkKSB7XG4gICAgICAgIHZhciBtYXAyID0gdGhpcy5tYXAuZ2V0KHBhaXJJZFswXSk7XG5cbiAgICAgICAgaWYgKG1hcDIgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBtYXAyLmdldChwYWlySWRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQocGFpcklkLCB2YWwpIHtcbiAgICAgICAgdmFyIG1hcDIgPSB0aGlzLm1hcC5nZXQocGFpcklkWzBdKTtcblxuICAgICAgICBpZiAobWFwMiA9PSBudWxsKSB7XG4gICAgICAgICAgbWFwMiA9IG5ldyBNYXAkMigpO1xuICAgICAgICAgIHRoaXMubWFwLnNldChwYWlySWRbMF0sIG1hcDIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbWFwMi5zZXQocGFpcklkWzFdLCB2YWwpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHBhaXJJZHMgPSBbXTtcbiAgICB2YXIgaGF5c3RhY2tFZGdlcyA9IFtdOyAvLyBjcmVhdGUgYSB0YWJsZSBvZiBlZGdlIChzcmMsIHRndCkgPT4gbGlzdCBvZiBlZGdlcyBiZXR3ZWVuIHRoZW1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlZGdlID0gZWRnZXNbaV07XG4gICAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgICAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTsgLy8gaWdub3JlIGVkZ2VzIHdobyBhcmUgbm90IHRvIGJlIGRpc3BsYXllZFxuICAgICAgLy8gdGhleSBzaG91bGRuJ3QgdGFrZSB1cCBzcGFjZVxuXG4gICAgICBpZiAoZWRnZS5yZW1vdmVkKCkgfHwgIWVkZ2UudGFrZXNVcFNwYWNlKCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJ2ZVN0eWxlID09PSAnaGF5c3RhY2snKSB7XG4gICAgICAgIGhheXN0YWNrRWRnZXMucHVzaChlZGdlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBlZGdlSXNVbmJ1bmRsZWQgPSBjdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJyB8fCBjdXJ2ZVN0eWxlID09PSAnc3RyYWlnaHQnIHx8IGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScgfHwgY3VydmVTdHlsZSA9PT0gJ3RheGknO1xuICAgICAgdmFyIGVkZ2VJc0JlemllciA9IGN1cnZlU3R5bGUgPT09ICd1bmJ1bmRsZWQtYmV6aWVyJyB8fCBjdXJ2ZVN0eWxlID09PSAnYmV6aWVyJztcbiAgICAgIHZhciBzcmMgPSBfcC5zb3VyY2U7XG4gICAgICB2YXIgdGd0ID0gX3AudGFyZ2V0O1xuICAgICAgdmFyIHNyY0luZGV4ID0gc3JjLnBvb2xJbmRleCgpO1xuICAgICAgdmFyIHRndEluZGV4ID0gdGd0LnBvb2xJbmRleCgpO1xuICAgICAgdmFyIHBhaXJJZCA9IFtzcmNJbmRleCwgdGd0SW5kZXhdLnNvcnQoKTtcbiAgICAgIHZhciB0YWJsZUVudHJ5ID0gaGFzaFRhYmxlLmdldChwYWlySWQpO1xuXG4gICAgICBpZiAodGFibGVFbnRyeSA9PSBudWxsKSB7XG4gICAgICAgIHRhYmxlRW50cnkgPSB7XG4gICAgICAgICAgZWxlczogW11cbiAgICAgICAgfTtcbiAgICAgICAgaGFzaFRhYmxlLnNldChwYWlySWQsIHRhYmxlRW50cnkpO1xuICAgICAgICBwYWlySWRzLnB1c2gocGFpcklkKTtcbiAgICAgIH1cblxuICAgICAgdGFibGVFbnRyeS5lbGVzLnB1c2goZWRnZSk7XG5cbiAgICAgIGlmIChlZGdlSXNVbmJ1bmRsZWQpIHtcbiAgICAgICAgdGFibGVFbnRyeS5oYXNVbmJ1bmRsZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWRnZUlzQmV6aWVyKSB7XG4gICAgICAgIHRhYmxlRW50cnkuaGFzQmV6aWVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IC8vIGZvciBlYWNoIHBhaXIgKHNyYywgdGd0KSwgY3JlYXRlIHRoZSBjdHJsIHB0c1xuICAgIC8vIE5lc3RlZCBmb3IgbG9vcCBpcyBPSzsgdG90YWwgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIGJvdGggbG9vcHMgPSBlZGdlQ291bnRcblxuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AocCkge1xuICAgICAgdmFyIHBhaXJJZCA9IHBhaXJJZHNbcF07XG4gICAgICB2YXIgcGFpckluZm8gPSBoYXNoVGFibGUuZ2V0KHBhaXJJZCk7XG4gICAgICB2YXIgc3dhcHBlZHBhaXJJbmZvID0gdm9pZCAwO1xuXG4gICAgICBpZiAoIXBhaXJJbmZvLmhhc1VuYnVuZGxlZCkge1xuICAgICAgICB2YXIgcGxsRWRnZXMgPSBwYWlySW5mby5lbGVzWzBdLnBhcmFsbGVsRWRnZXMoKS5maWx0ZXIoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICByZXR1cm4gZS5pc0J1bmRsZWRCZXppZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsZWFyQXJyYXkocGFpckluZm8uZWxlcyk7XG4gICAgICAgIHBsbEVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICByZXR1cm4gcGFpckluZm8uZWxlcy5wdXNoKGVkZ2UpO1xuICAgICAgICB9KTsgLy8gZm9yIGVhY2ggcGFpciBpZCwgdGhlIGVkZ2VzIHNob3VsZCBiZSBzb3J0ZWQgYnkgaW5kZXhcblxuICAgICAgICBwYWlySW5mby5lbGVzLnNvcnQoZnVuY3Rpb24gKGVkZ2UxLCBlZGdlMikge1xuICAgICAgICAgIHJldHVybiBlZGdlMS5wb29sSW5kZXgoKSAtIGVkZ2UyLnBvb2xJbmRleCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpcnN0RWRnZSA9IHBhaXJJbmZvLmVsZXNbMF07XG4gICAgICB2YXIgc3JjID0gZmlyc3RFZGdlLnNvdXJjZSgpO1xuICAgICAgdmFyIHRndCA9IGZpcnN0RWRnZS50YXJnZXQoKTsgLy8gbWFrZSBzdXJlIHNyYy90Z3QgZGlzdGluY3Rpb24gaXMgY29uc2lzdGVudCB3LnIudC4gcGFpcklkXG5cbiAgICAgIGlmIChzcmMucG9vbEluZGV4KCkgPiB0Z3QucG9vbEluZGV4KCkpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBzcmM7XG4gICAgICAgIHNyYyA9IHRndDtcbiAgICAgICAgdGd0ID0gdGVtcDtcbiAgICAgIH1cblxuICAgICAgdmFyIHNyY1BvcyA9IHBhaXJJbmZvLnNyY1BvcyA9IHNyYy5wb3NpdGlvbigpO1xuICAgICAgdmFyIHRndFBvcyA9IHBhaXJJbmZvLnRndFBvcyA9IHRndC5wb3NpdGlvbigpO1xuICAgICAgdmFyIHNyY1cgPSBwYWlySW5mby5zcmNXID0gc3JjLm91dGVyV2lkdGgoKTtcbiAgICAgIHZhciBzcmNIID0gcGFpckluZm8uc3JjSCA9IHNyYy5vdXRlckhlaWdodCgpO1xuICAgICAgdmFyIHRndFcgPSBwYWlySW5mby50Z3RXID0gdGd0Lm91dGVyV2lkdGgoKTtcbiAgICAgIHZhciB0Z3RIID0gcGFpckluZm8udGd0SCA9IHRndC5vdXRlckhlaWdodCgpO1xuXG4gICAgICB2YXIgc3JjU2hhcGUgPSBwYWlySW5mby5zcmNTaGFwZSA9IHIubm9kZVNoYXBlc1tfdGhpcy5nZXROb2RlU2hhcGUoc3JjKV07XG5cbiAgICAgIHZhciB0Z3RTaGFwZSA9IHBhaXJJbmZvLnRndFNoYXBlID0gci5ub2RlU2hhcGVzW190aGlzLmdldE5vZGVTaGFwZSh0Z3QpXTtcblxuICAgICAgcGFpckluZm8uZGlyQ291bnRzID0ge1xuICAgICAgICAnbm9ydGgnOiAwLFxuICAgICAgICAnd2VzdCc6IDAsXG4gICAgICAgICdzb3V0aCc6IDAsXG4gICAgICAgICdlYXN0JzogMCxcbiAgICAgICAgJ25vcnRod2VzdCc6IDAsXG4gICAgICAgICdzb3V0aHdlc3QnOiAwLFxuICAgICAgICAnbm9ydGhlYXN0JzogMCxcbiAgICAgICAgJ3NvdXRoZWFzdCc6IDBcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBhaXJJbmZvLmVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgICB2YXIgX2VkZ2UgPSBwYWlySW5mby5lbGVzW19pMl07XG4gICAgICAgIHZhciBycyA9IF9lZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gICAgICAgIHZhciBfY3VydmVTdHlsZSA9IF9lZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcblxuICAgICAgICB2YXIgX2VkZ2VJc1VuYnVuZGxlZCA9IF9jdXJ2ZVN0eWxlID09PSAndW5idW5kbGVkLWJlemllcicgfHwgX2N1cnZlU3R5bGUgPT09ICdzZWdtZW50cycgfHwgX2N1cnZlU3R5bGUgPT09ICd0YXhpJzsgLy8gd2hldGhlciB0aGUgbm9ybWFsaXNlZCBwYWlyIG9yZGVyIGlzIHRoZSByZXZlcnNlIG9mIHRoZSBlZGdlJ3Mgc3JjLXRndCBvcmRlclxuXG5cbiAgICAgICAgdmFyIGVkZ2VJc1N3YXBwZWQgPSAhc3JjLnNhbWUoX2VkZ2Uuc291cmNlKCkpO1xuXG4gICAgICAgIGlmICghcGFpckluZm8uY2FsY3VsYXRlZEludGVyc2VjdGlvbiAmJiBzcmMgIT09IHRndCAmJiAocGFpckluZm8uaGFzQmV6aWVyIHx8IHBhaXJJbmZvLmhhc1VuYnVuZGxlZCkpIHtcbiAgICAgICAgICBwYWlySW5mby5jYWxjdWxhdGVkSW50ZXJzZWN0aW9uID0gdHJ1ZTsgLy8gcHQgb3V0c2lkZSBzcmMgc2hhcGUgdG8gY2FsYyBkaXN0YW5jZS9kaXNwbGFjZW1lbnQgZnJvbSBzcmMgdG8gdGd0XG5cbiAgICAgICAgICB2YXIgc3JjT3V0c2lkZSA9IHNyY1NoYXBlLmludGVyc2VjdExpbmUoc3JjUG9zLngsIHNyY1Bvcy55LCBzcmNXLCBzcmNILCB0Z3RQb3MueCwgdGd0UG9zLnksIDApO1xuICAgICAgICAgIHZhciBzcmNJbnRuID0gcGFpckluZm8uc3JjSW50biA9IHNyY091dHNpZGU7IC8vIHB0IG91dHNpZGUgdGd0IHNoYXBlIHRvIGNhbGMgZGlzdGFuY2UvZGlzcGxhY2VtZW50IGZyb20gc3JjIHRvIHRndFxuXG4gICAgICAgICAgdmFyIHRndE91dHNpZGUgPSB0Z3RTaGFwZS5pbnRlcnNlY3RMaW5lKHRndFBvcy54LCB0Z3RQb3MueSwgdGd0VywgdGd0SCwgc3JjUG9zLngsIHNyY1Bvcy55LCAwKTtcbiAgICAgICAgICB2YXIgdGd0SW50biA9IHBhaXJJbmZvLnRndEludG4gPSB0Z3RPdXRzaWRlO1xuICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25QdHMgPSBwYWlySW5mby5pbnRlcnNlY3Rpb25QdHMgPSB7XG4gICAgICAgICAgICB4MTogc3JjT3V0c2lkZVswXSxcbiAgICAgICAgICAgIHgyOiB0Z3RPdXRzaWRlWzBdLFxuICAgICAgICAgICAgeTE6IHNyY091dHNpZGVbMV0sXG4gICAgICAgICAgICB5MjogdGd0T3V0c2lkZVsxXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIHBvc1B0cyA9IHBhaXJJbmZvLnBvc1B0cyA9IHtcbiAgICAgICAgICAgIHgxOiBzcmNQb3MueCxcbiAgICAgICAgICAgIHgyOiB0Z3RQb3MueCxcbiAgICAgICAgICAgIHkxOiBzcmNQb3MueSxcbiAgICAgICAgICAgIHkyOiB0Z3RQb3MueVxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIGR5ID0gdGd0T3V0c2lkZVsxXSAtIHNyY091dHNpZGVbMV07XG4gICAgICAgICAgdmFyIGR4ID0gdGd0T3V0c2lkZVswXSAtIHNyY091dHNpZGVbMF07XG4gICAgICAgICAgdmFyIGwgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgICAgICAgIHZhciB2ZWN0b3IgPSBwYWlySW5mby52ZWN0b3IgPSB7XG4gICAgICAgICAgICB4OiBkeCxcbiAgICAgICAgICAgIHk6IGR5XG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgdmVjdG9yTm9ybSA9IHBhaXJJbmZvLnZlY3Rvck5vcm0gPSB7XG4gICAgICAgICAgICB4OiB2ZWN0b3IueCAvIGwsXG4gICAgICAgICAgICB5OiB2ZWN0b3IueSAvIGxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHZhciB2ZWN0b3JOb3JtSW52ZXJzZSA9IHtcbiAgICAgICAgICAgIHg6IC12ZWN0b3JOb3JtLnksXG4gICAgICAgICAgICB5OiB2ZWN0b3JOb3JtLnhcbiAgICAgICAgICB9OyAvLyBpZiBub2RlIHNoYXBlcyBvdmVybGFwLCB0aGVuIG5vIGN0cmwgcHRzIHRvIGRyYXdcblxuICAgICAgICAgIHBhaXJJbmZvLm5vZGVzT3ZlcmxhcCA9ICFudW1iZXIkMShsKSB8fCB0Z3RTaGFwZS5jaGVja1BvaW50KHNyY091dHNpZGVbMF0sIHNyY091dHNpZGVbMV0sIDAsIHRndFcsIHRndEgsIHRndFBvcy54LCB0Z3RQb3MueSkgfHwgc3JjU2hhcGUuY2hlY2tQb2ludCh0Z3RPdXRzaWRlWzBdLCB0Z3RPdXRzaWRlWzFdLCAwLCBzcmNXLCBzcmNILCBzcmNQb3MueCwgc3JjUG9zLnkpO1xuICAgICAgICAgIHBhaXJJbmZvLnZlY3Rvck5vcm1JbnZlcnNlID0gdmVjdG9yTm9ybUludmVyc2U7XG4gICAgICAgICAgc3dhcHBlZHBhaXJJbmZvID0ge1xuICAgICAgICAgICAgbm9kZXNPdmVybGFwOiBwYWlySW5mby5ub2Rlc092ZXJsYXAsXG4gICAgICAgICAgICBkaXJDb3VudHM6IHBhaXJJbmZvLmRpckNvdW50cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZWRJbnRlcnNlY3Rpb246IHRydWUsXG4gICAgICAgICAgICBoYXNCZXppZXI6IHBhaXJJbmZvLmhhc0JlemllcixcbiAgICAgICAgICAgIGhhc1VuYnVuZGxlZDogcGFpckluZm8uaGFzVW5idW5kbGVkLFxuICAgICAgICAgICAgZWxlczogcGFpckluZm8uZWxlcyxcbiAgICAgICAgICAgIHNyY1BvczogdGd0UG9zLFxuICAgICAgICAgICAgdGd0UG9zOiBzcmNQb3MsXG4gICAgICAgICAgICBzcmNXOiB0Z3RXLFxuICAgICAgICAgICAgc3JjSDogdGd0SCxcbiAgICAgICAgICAgIHRndFc6IHNyY1csXG4gICAgICAgICAgICB0Z3RIOiBzcmNILFxuICAgICAgICAgICAgc3JjSW50bjogdGd0SW50bixcbiAgICAgICAgICAgIHRndEludG46IHNyY0ludG4sXG4gICAgICAgICAgICBzcmNTaGFwZTogdGd0U2hhcGUsXG4gICAgICAgICAgICB0Z3RTaGFwZTogc3JjU2hhcGUsXG4gICAgICAgICAgICBwb3NQdHM6IHtcbiAgICAgICAgICAgICAgeDE6IHBvc1B0cy54MixcbiAgICAgICAgICAgICAgeTE6IHBvc1B0cy55MixcbiAgICAgICAgICAgICAgeDI6IHBvc1B0cy54MSxcbiAgICAgICAgICAgICAgeTI6IHBvc1B0cy55MVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGludGVyc2VjdGlvblB0czoge1xuICAgICAgICAgICAgICB4MTogaW50ZXJzZWN0aW9uUHRzLngyLFxuICAgICAgICAgICAgICB5MTogaW50ZXJzZWN0aW9uUHRzLnkyLFxuICAgICAgICAgICAgICB4MjogaW50ZXJzZWN0aW9uUHRzLngxLFxuICAgICAgICAgICAgICB5MjogaW50ZXJzZWN0aW9uUHRzLnkxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVjdG9yOiB7XG4gICAgICAgICAgICAgIHg6IC12ZWN0b3IueCxcbiAgICAgICAgICAgICAgeTogLXZlY3Rvci55XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVjdG9yTm9ybToge1xuICAgICAgICAgICAgICB4OiAtdmVjdG9yTm9ybS54LFxuICAgICAgICAgICAgICB5OiAtdmVjdG9yTm9ybS55XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVjdG9yTm9ybUludmVyc2U6IHtcbiAgICAgICAgICAgICAgeDogLXZlY3Rvck5vcm1JbnZlcnNlLngsXG4gICAgICAgICAgICAgIHk6IC12ZWN0b3JOb3JtSW52ZXJzZS55XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYXNzZWRQYWlySW5mbyA9IGVkZ2VJc1N3YXBwZWQgPyBzd2FwcGVkcGFpckluZm8gOiBwYWlySW5mbztcbiAgICAgICAgcnMubm9kZXNPdmVybGFwID0gcGFzc2VkUGFpckluZm8ubm9kZXNPdmVybGFwO1xuICAgICAgICBycy5zcmNJbnRuID0gcGFzc2VkUGFpckluZm8uc3JjSW50bjtcbiAgICAgICAgcnMudGd0SW50biA9IHBhc3NlZFBhaXJJbmZvLnRndEludG47XG5cbiAgICAgICAgaWYgKGhhc0NvbXBvdW5kcyAmJiAoc3JjLmlzUGFyZW50KCkgfHwgc3JjLmlzQ2hpbGQoKSB8fCB0Z3QuaXNQYXJlbnQoKSB8fCB0Z3QuaXNDaGlsZCgpKSAmJiAoc3JjLnBhcmVudHMoKS5hbnlTYW1lKHRndCkgfHwgdGd0LnBhcmVudHMoKS5hbnlTYW1lKHNyYykgfHwgc3JjLnNhbWUodGd0KSAmJiBzcmMuaXNQYXJlbnQoKSkpIHtcbiAgICAgICAgICBfdGhpcy5maW5kQ29tcG91bmRMb29wUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChzcmMgPT09IHRndCkge1xuICAgICAgICAgIF90aGlzLmZpbmRMb29wUG9pbnRzKF9lZGdlLCBwYXNzZWRQYWlySW5mbywgX2kyLCBfZWRnZUlzVW5idW5kbGVkKTtcbiAgICAgICAgfSBlbHNlIGlmIChfY3VydmVTdHlsZSA9PT0gJ3NlZ21lbnRzJykge1xuICAgICAgICAgIF90aGlzLmZpbmRTZWdtZW50c1BvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuICAgICAgICB9IGVsc2UgaWYgKF9jdXJ2ZVN0eWxlID09PSAndGF4aScpIHtcbiAgICAgICAgICBfdGhpcy5maW5kVGF4aVBvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuICAgICAgICB9IGVsc2UgaWYgKF9jdXJ2ZVN0eWxlID09PSAnc3RyYWlnaHQnIHx8ICFfZWRnZUlzVW5idW5kbGVkICYmIHBhaXJJbmZvLmVsZXMubGVuZ3RoICUgMiA9PT0gMSAmJiBfaTIgPT09IE1hdGguZmxvb3IocGFpckluZm8uZWxlcy5sZW5ndGggLyAyKSkge1xuICAgICAgICAgIF90aGlzLmZpbmRTdHJhaWdodEVkZ2VQb2ludHMoX2VkZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzLmZpbmRCZXppZXJQb2ludHMoX2VkZ2UsIHBhc3NlZFBhaXJJbmZvLCBfaTIsIF9lZGdlSXNVbmJ1bmRsZWQsIGVkZ2VJc1N3YXBwZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuZmluZEVuZHBvaW50cyhfZWRnZSk7XG5cbiAgICAgICAgX3RoaXMudHJ5VG9Db3JyZWN0SW52YWxpZFBvaW50cyhfZWRnZSwgcGFzc2VkUGFpckluZm8pO1xuXG4gICAgICAgIF90aGlzLmNoZWNrRm9ySW52YWxpZEVkZ2VXYXJuaW5nKF9lZGdlKTtcblxuICAgICAgICBfdGhpcy5zdG9yZUFsbHB0cyhfZWRnZSk7XG5cbiAgICAgICAgX3RoaXMuc3RvcmVFZGdlUHJvamVjdGlvbnMoX2VkZ2UpO1xuXG4gICAgICAgIF90aGlzLmNhbGN1bGF0ZUFycm93QW5nbGVzKF9lZGdlKTtcblxuICAgICAgICBfdGhpcy5yZWNhbGN1bGF0ZUVkZ2VMYWJlbFByb2plY3Rpb25zKF9lZGdlKTtcblxuICAgICAgICBfdGhpcy5jYWxjdWxhdGVMYWJlbEFuZ2xlcyhfZWRnZSk7XG4gICAgICB9IC8vIGZvciBwYWlyIGVkZ2VzXG5cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgcCA9IDA7IHAgPCBwYWlySWRzLmxlbmd0aDsgcCsrKSB7XG4gICAgICBfbG9vcChwKTtcbiAgICB9IC8vIGZvciBwYWlyIGlkc1xuICAgIC8vIGhheXN0YWNrcyBhdm9pZCB0aGUgZXhwZW5zZSBvZiBwYWlySW5mbyBzdHVmZiAoaW50ZXJzZWN0aW9ucyBldGMuKVxuXG5cbiAgICB0aGlzLmZpbmRIYXlzdGFja1BvaW50cyhoYXlzdGFja0VkZ2VzKTtcbiAgfTtcblxuICBmdW5jdGlvbiBnZXRQdHMocHRzKSB7XG4gICAgdmFyIHJldFB0cyA9IFtdO1xuXG4gICAgaWYgKHB0cyA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIHZhciB4ID0gcHRzW2ldO1xuICAgICAgdmFyIHkgPSBwdHNbaSArIDFdO1xuICAgICAgcmV0UHRzLnB1c2goe1xuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0UHRzO1xuICB9XG5cbiAgQlJwJGMuZ2V0U2VnbWVudFBvaW50cyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB2YXIgdHlwZSA9IHJzLmVkZ2VUeXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzZWdtZW50cycpIHtcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuICAgICAgcmV0dXJuIGdldFB0cyhycy5zZWdwdHMpO1xuICAgIH1cbiAgfTtcblxuICBCUnAkYy5nZXRDb250cm9sUG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHZhciB0eXBlID0gcnMuZWRnZVR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2JlemllcicgfHwgdHlwZSA9PT0gJ211bHRpYmV6aWVyJyB8fCB0eXBlID09PSAnc2VsZicgfHwgdHlwZSA9PT0gJ2NvbXBvdW5kJykge1xuICAgICAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG4gICAgICByZXR1cm4gZ2V0UHRzKHJzLmN0cmxwdHMpO1xuICAgIH1cbiAgfTtcblxuICBCUnAkYy5nZXRFZGdlTWlkcG9pbnQgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciBycyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWRnZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHJzLm1pZFgsXG4gICAgICB5OiBycy5taWRZXG4gICAgfTtcbiAgfTtcblxuICB2YXIgQlJwJGIgPSB7fTtcblxuICBCUnAkYi5tYW51YWxFbmRwdFRvUHggPSBmdW5jdGlvbiAobm9kZSwgcHJvcCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgbnBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgICB2YXIgdyA9IG5vZGUub3V0ZXJXaWR0aCgpO1xuICAgIHZhciBoID0gbm9kZS5vdXRlckhlaWdodCgpO1xuXG4gICAgaWYgKHByb3AudmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICB2YXIgcCA9IFtwcm9wLnBmVmFsdWVbMF0sIHByb3AucGZWYWx1ZVsxXV07XG5cbiAgICAgIGlmIChwcm9wLnVuaXRzWzBdID09PSAnJScpIHtcbiAgICAgICAgcFswXSA9IHBbMF0gKiB3O1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcC51bml0c1sxXSA9PT0gJyUnKSB7XG4gICAgICAgIHBbMV0gPSBwWzFdICogaDtcbiAgICAgIH1cblxuICAgICAgcFswXSArPSBucG9zLng7XG4gICAgICBwWzFdICs9IG5wb3MueTtcbiAgICAgIHJldHVybiBwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYW5nbGUgPSBwcm9wLnBmVmFsdWVbMF07XG4gICAgICBhbmdsZSA9IC1NYXRoLlBJIC8gMiArIGFuZ2xlOyAvLyBzdGFydCBhdCAxMiBvJ2Nsb2NrXG5cbiAgICAgIHZhciBsID0gMiAqIE1hdGgubWF4KHcsIGgpO1xuICAgICAgdmFyIF9wID0gW25wb3MueCArIE1hdGguY29zKGFuZ2xlKSAqIGwsIG5wb3MueSArIE1hdGguc2luKGFuZ2xlKSAqIGxdO1xuICAgICAgcmV0dXJuIHIubm9kZVNoYXBlc1t0aGlzLmdldE5vZGVTaGFwZShub2RlKV0uaW50ZXJzZWN0TGluZShucG9zLngsIG5wb3MueSwgdywgaCwgX3BbMF0sIF9wWzFdLCAwKTtcbiAgICB9XG4gIH07XG5cbiAgQlJwJGIuZmluZEVuZHBvaW50cyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBpbnRlcnNlY3Q7XG4gICAgdmFyIHNvdXJjZSA9IGVkZ2Uuc291cmNlKClbMF07XG4gICAgdmFyIHRhcmdldCA9IGVkZ2UudGFyZ2V0KClbMF07XG4gICAgdmFyIHNyY1BvcyA9IHNvdXJjZS5wb3NpdGlvbigpO1xuICAgIHZhciB0Z3RQb3MgPSB0YXJnZXQucG9zaXRpb24oKTtcbiAgICB2YXIgdGd0QXJTaGFwZSA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtYXJyb3ctc2hhcGUnKS52YWx1ZTtcbiAgICB2YXIgc3JjQXJTaGFwZSA9IGVkZ2UucHN0eWxlKCdzb3VyY2UtYXJyb3ctc2hhcGUnKS52YWx1ZTtcbiAgICB2YXIgdGd0RGlzdCA9IGVkZ2UucHN0eWxlKCd0YXJnZXQtZGlzdGFuY2UtZnJvbS1ub2RlJykucGZWYWx1ZTtcbiAgICB2YXIgc3JjRGlzdCA9IGVkZ2UucHN0eWxlKCdzb3VyY2UtZGlzdGFuY2UtZnJvbS1ub2RlJykucGZWYWx1ZTtcbiAgICB2YXIgY3VydmVTdHlsZSA9IGVkZ2UucHN0eWxlKCdjdXJ2ZS1zdHlsZScpLnZhbHVlO1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGV0ID0gcnMuZWRnZVR5cGU7XG4gICAgdmFyIHRheGkgPSBjdXJ2ZVN0eWxlID09PSAndGF4aSc7XG4gICAgdmFyIHNlbGYgPSBldCA9PT0gJ3NlbGYnIHx8IGV0ID09PSAnY29tcG91bmQnO1xuICAgIHZhciBiZXppZXIgPSBldCA9PT0gJ2JlemllcicgfHwgZXQgPT09ICdtdWx0aWJlemllcicgfHwgc2VsZjtcbiAgICB2YXIgbXVsdGkgPSBldCAhPT0gJ2Jlemllcic7XG4gICAgdmFyIGxpbmVzID0gZXQgPT09ICdzdHJhaWdodCcgfHwgZXQgPT09ICdzZWdtZW50cyc7XG4gICAgdmFyIHNlZ21lbnRzID0gZXQgPT09ICdzZWdtZW50cyc7XG4gICAgdmFyIGhhc0VuZHB0cyA9IGJlemllciB8fCBtdWx0aSB8fCBsaW5lcztcbiAgICB2YXIgb3ZlcnJpZGVFbmRwdHMgPSBzZWxmIHx8IHRheGk7XG4gICAgdmFyIHNyY01hbkVuZHB0ID0gZWRnZS5wc3R5bGUoJ3NvdXJjZS1lbmRwb2ludCcpO1xuICAgIHZhciBzcmNNYW5FbmRwdFZhbCA9IG92ZXJyaWRlRW5kcHRzID8gJ291dHNpZGUtdG8tbm9kZScgOiBzcmNNYW5FbmRwdC52YWx1ZTtcbiAgICB2YXIgdGd0TWFuRW5kcHQgPSBlZGdlLnBzdHlsZSgndGFyZ2V0LWVuZHBvaW50Jyk7XG4gICAgdmFyIHRndE1hbkVuZHB0VmFsID0gb3ZlcnJpZGVFbmRwdHMgPyAnb3V0c2lkZS10by1ub2RlJyA6IHRndE1hbkVuZHB0LnZhbHVlO1xuICAgIHJzLnNyY01hbkVuZHB0ID0gc3JjTWFuRW5kcHQ7XG4gICAgcnMudGd0TWFuRW5kcHQgPSB0Z3RNYW5FbmRwdDtcbiAgICB2YXIgcDE7IC8vIGxhc3Qga25vd24gcG9pbnQgb2YgZWRnZSBvbiB0YXJnZXQgc2lkZVxuXG4gICAgdmFyIHAyOyAvLyBsYXN0IGtub3duIHBvaW50IG9mIGVkZ2Ugb24gc291cmNlIHNpZGVcblxuICAgIHZhciBwMV9pOyAvLyBwb2ludCB0byBpbnRlcnNlY3Qgd2l0aCB0YXJnZXQgc2hhcGVcblxuICAgIHZhciBwMl9pOyAvLyBwb2ludCB0byBpbnRlcnNlY3Qgd2l0aCBzb3VyY2Ugc2hhcGVcblxuICAgIGlmIChiZXppZXIpIHtcbiAgICAgIHZhciBjcFN0YXJ0ID0gW3JzLmN0cmxwdHNbMF0sIHJzLmN0cmxwdHNbMV1dO1xuICAgICAgdmFyIGNwRW5kID0gbXVsdGkgPyBbcnMuY3RybHB0c1tycy5jdHJscHRzLmxlbmd0aCAtIDJdLCBycy5jdHJscHRzW3JzLmN0cmxwdHMubGVuZ3RoIC0gMV1dIDogY3BTdGFydDtcbiAgICAgIHAxID0gY3BFbmQ7XG4gICAgICBwMiA9IGNwU3RhcnQ7XG4gICAgfSBlbHNlIGlmIChsaW5lcykge1xuICAgICAgdmFyIHNyY0Fycm93RnJvbVB0ID0gIXNlZ21lbnRzID8gW3RndFBvcy54LCB0Z3RQb3MueV0gOiBycy5zZWdwdHMuc2xpY2UoMCwgMik7XG4gICAgICB2YXIgdGd0QXJyb3dGcm9tUHQgPSAhc2VnbWVudHMgPyBbc3JjUG9zLngsIHNyY1Bvcy55XSA6IHJzLnNlZ3B0cy5zbGljZShycy5zZWdwdHMubGVuZ3RoIC0gMik7XG4gICAgICBwMSA9IHRndEFycm93RnJvbVB0O1xuICAgICAgcDIgPSBzcmNBcnJvd0Zyb21QdDtcbiAgICB9XG5cbiAgICBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdpbnNpZGUtdG8tbm9kZScpIHtcbiAgICAgIGludGVyc2VjdCA9IFt0Z3RQb3MueCwgdGd0UG9zLnldO1xuICAgIH0gZWxzZSBpZiAodGd0TWFuRW5kcHQudW5pdHMpIHtcbiAgICAgIGludGVyc2VjdCA9IHRoaXMubWFudWFsRW5kcHRUb1B4KHRhcmdldCwgdGd0TWFuRW5kcHQpO1xuICAgIH0gZWxzZSBpZiAodGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUnKSB7XG4gICAgICBpbnRlcnNlY3QgPSBycy50Z3RJbnRuOyAvLyB1c2UgY2FjaGVkIHZhbHVlIGZyb20gY3RybHB0IGNhbGNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRndE1hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlJyB8fCB0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZS1vci1sYWJlbCcpIHtcbiAgICAgICAgcDFfaSA9IHAxO1xuICAgICAgfSBlbHNlIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICAgIHAxX2kgPSBbc3JjUG9zLngsIHNyY1Bvcy55XTtcbiAgICAgIH1cblxuICAgICAgaW50ZXJzZWN0ID0gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKHRhcmdldCldLmludGVyc2VjdExpbmUodGd0UG9zLngsIHRndFBvcy55LCB0YXJnZXQub3V0ZXJXaWR0aCgpLCB0YXJnZXQub3V0ZXJIZWlnaHQoKSwgcDFfaVswXSwgcDFfaVsxXSwgMCk7XG5cbiAgICAgIGlmICh0Z3RNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZS1vci1sYWJlbCcgfHwgdGd0TWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICAgIHZhciB0cnMgPSB0YXJnZXQuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICAgIHZhciBsdyA9IHRycy5sYWJlbFdpZHRoO1xuICAgICAgICB2YXIgbGggPSB0cnMubGFiZWxIZWlnaHQ7XG4gICAgICAgIHZhciBseCA9IHRycy5sYWJlbFg7XG4gICAgICAgIHZhciBseSA9IHRycy5sYWJlbFk7XG4gICAgICAgIHZhciBsdzIgPSBsdyAvIDI7XG4gICAgICAgIHZhciBsaDIgPSBsaCAvIDI7XG4gICAgICAgIHZhciB2YSA9IHRhcmdldC5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgICAgaWYgKHZhID09PSAndG9wJykge1xuICAgICAgICAgIGx5IC09IGxoMjtcbiAgICAgICAgfSBlbHNlIGlmICh2YSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICBseSArPSBsaDI7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGEgPSB0YXJnZXQucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuXG4gICAgICAgIGlmIChoYSA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgbHggLT0gbHcyO1xuICAgICAgICB9IGVsc2UgaWYgKGhhID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgbHggKz0gbHcyO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxhYmVsSW50ZXJzZWN0ID0gcG9seWdvbkludGVyc2VjdExpbmUocDFfaVswXSwgcDFfaVsxXSwgW2x4IC0gbHcyLCBseSAtIGxoMiwgbHggKyBsdzIsIGx5IC0gbGgyLCBseCArIGx3MiwgbHkgKyBsaDIsIGx4IC0gbHcyLCBseSArIGxoMl0sIHRndFBvcy54LCB0Z3RQb3MueSk7XG5cbiAgICAgICAgaWYgKGxhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgcmVmUHQgPSBzcmNQb3M7XG4gICAgICAgICAgdmFyIGludFNxZGlzdCA9IHNxZGlzdChyZWZQdCwgYXJyYXkycG9pbnQoaW50ZXJzZWN0KSk7XG4gICAgICAgICAgdmFyIGxhYkludFNxZGlzdCA9IHNxZGlzdChyZWZQdCwgYXJyYXkycG9pbnQobGFiZWxJbnRlcnNlY3QpKTtcbiAgICAgICAgICB2YXIgbWluU3FEaXN0ID0gaW50U3FkaXN0O1xuXG4gICAgICAgICAgaWYgKGxhYkludFNxZGlzdCA8IGludFNxZGlzdCkge1xuICAgICAgICAgICAgaW50ZXJzZWN0ID0gbGFiZWxJbnRlcnNlY3Q7XG4gICAgICAgICAgICBtaW5TcURpc3QgPSBsYWJJbnRTcWRpc3Q7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhYmVsSW50ZXJzZWN0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHZhciBsYWJJbnQyU3FEaXN0ID0gc3FkaXN0KHJlZlB0LCB7XG4gICAgICAgICAgICAgIHg6IGxhYmVsSW50ZXJzZWN0WzJdLFxuICAgICAgICAgICAgICB5OiBsYWJlbEludGVyc2VjdFszXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChsYWJJbnQyU3FEaXN0IDwgbWluU3FEaXN0KSB7XG4gICAgICAgICAgICAgIGludGVyc2VjdCA9IFtsYWJlbEludGVyc2VjdFsyXSwgbGFiZWxJbnRlcnNlY3RbM11dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhcnJvd0VuZCA9IHNob3J0ZW5JbnRlcnNlY3Rpb24oaW50ZXJzZWN0LCBwMSwgci5hcnJvd1NoYXBlc1t0Z3RBclNoYXBlXS5zcGFjaW5nKGVkZ2UpICsgdGd0RGlzdCk7XG4gICAgdmFyIGVkZ2VFbmQgPSBzaG9ydGVuSW50ZXJzZWN0aW9uKGludGVyc2VjdCwgcDEsIHIuYXJyb3dTaGFwZXNbdGd0QXJTaGFwZV0uZ2FwKGVkZ2UpICsgdGd0RGlzdCk7XG4gICAgcnMuZW5kWCA9IGVkZ2VFbmRbMF07XG4gICAgcnMuZW5kWSA9IGVkZ2VFbmRbMV07XG4gICAgcnMuYXJyb3dFbmRYID0gYXJyb3dFbmRbMF07XG4gICAgcnMuYXJyb3dFbmRZID0gYXJyb3dFbmRbMV07XG5cbiAgICBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdpbnNpZGUtdG8tbm9kZScpIHtcbiAgICAgIGludGVyc2VjdCA9IFtzcmNQb3MueCwgc3JjUG9zLnldO1xuICAgIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHQudW5pdHMpIHtcbiAgICAgIGludGVyc2VjdCA9IHRoaXMubWFudWFsRW5kcHRUb1B4KHNvdXJjZSwgc3JjTWFuRW5kcHQpO1xuICAgIH0gZWxzZSBpZiAoc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUnKSB7XG4gICAgICBpbnRlcnNlY3QgPSBycy5zcmNJbnRuOyAvLyB1c2UgY2FjaGVkIHZhbHVlIGZyb20gY3RybHB0IGNhbGNcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNyY01hbkVuZHB0VmFsID09PSAnb3V0c2lkZS10by1ub2RlJyB8fCBzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZS1vci1sYWJlbCcpIHtcbiAgICAgICAgcDJfaSA9IHAyO1xuICAgICAgfSBlbHNlIGlmIChzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbGluZScgfHwgc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICAgIHAyX2kgPSBbdGd0UG9zLngsIHRndFBvcy55XTtcbiAgICAgIH1cblxuICAgICAgaW50ZXJzZWN0ID0gci5ub2RlU2hhcGVzW3RoaXMuZ2V0Tm9kZVNoYXBlKHNvdXJjZSldLmludGVyc2VjdExpbmUoc3JjUG9zLngsIHNyY1Bvcy55LCBzb3VyY2Uub3V0ZXJXaWR0aCgpLCBzb3VyY2Uub3V0ZXJIZWlnaHQoKSwgcDJfaVswXSwgcDJfaVsxXSwgMCk7XG5cbiAgICAgIGlmIChzcmNNYW5FbmRwdFZhbCA9PT0gJ291dHNpZGUtdG8tbm9kZS1vci1sYWJlbCcgfHwgc3JjTWFuRW5kcHRWYWwgPT09ICdvdXRzaWRlLXRvLWxpbmUtb3ItbGFiZWwnKSB7XG4gICAgICAgIHZhciBzcnMgPSBzb3VyY2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICAgIHZhciBfbHcgPSBzcnMubGFiZWxXaWR0aDtcbiAgICAgICAgdmFyIF9saCA9IHNycy5sYWJlbEhlaWdodDtcbiAgICAgICAgdmFyIF9seCA9IHNycy5sYWJlbFg7XG4gICAgICAgIHZhciBfbHkgPSBzcnMubGFiZWxZO1xuXG4gICAgICAgIHZhciBfbHcyID0gX2x3IC8gMjtcblxuICAgICAgICB2YXIgX2xoMiA9IF9saCAvIDI7XG5cbiAgICAgICAgdmFyIF92YSA9IHNvdXJjZS5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgICAgaWYgKF92YSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICBfbHkgLT0gX2xoMjtcbiAgICAgICAgfSBlbHNlIGlmIChfdmEgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgX2x5ICs9IF9saDI7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX2hhID0gc291cmNlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS52YWx1ZTtcblxuICAgICAgICBpZiAoX2hhID09PSAnbGVmdCcpIHtcbiAgICAgICAgICBfbHggLT0gX2x3MjtcbiAgICAgICAgfSBlbHNlIGlmIChfaGEgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICBfbHggKz0gX2x3MjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfbGFiZWxJbnRlcnNlY3QgPSBwb2x5Z29uSW50ZXJzZWN0TGluZShwMl9pWzBdLCBwMl9pWzFdLCBbX2x4IC0gX2x3MiwgX2x5IC0gX2xoMiwgX2x4ICsgX2x3MiwgX2x5IC0gX2xoMiwgX2x4ICsgX2x3MiwgX2x5ICsgX2xoMiwgX2x4IC0gX2x3MiwgX2x5ICsgX2xoMl0sIHNyY1Bvcy54LCBzcmNQb3MueSk7XG5cbiAgICAgICAgaWYgKF9sYWJlbEludGVyc2VjdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIF9yZWZQdCA9IHRndFBvcztcblxuICAgICAgICAgIHZhciBfaW50U3FkaXN0ID0gc3FkaXN0KF9yZWZQdCwgYXJyYXkycG9pbnQoaW50ZXJzZWN0KSk7XG5cbiAgICAgICAgICB2YXIgX2xhYkludFNxZGlzdCA9IHNxZGlzdChfcmVmUHQsIGFycmF5MnBvaW50KF9sYWJlbEludGVyc2VjdCkpO1xuXG4gICAgICAgICAgdmFyIF9taW5TcURpc3QgPSBfaW50U3FkaXN0O1xuXG4gICAgICAgICAgaWYgKF9sYWJJbnRTcWRpc3QgPCBfaW50U3FkaXN0KSB7XG4gICAgICAgICAgICBpbnRlcnNlY3QgPSBbX2xhYmVsSW50ZXJzZWN0WzBdLCBfbGFiZWxJbnRlcnNlY3RbMV1dO1xuICAgICAgICAgICAgX21pblNxRGlzdCA9IF9sYWJJbnRTcWRpc3Q7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF9sYWJlbEludGVyc2VjdC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgX2xhYkludDJTcURpc3QgPSBzcWRpc3QoX3JlZlB0LCB7XG4gICAgICAgICAgICAgIHg6IF9sYWJlbEludGVyc2VjdFsyXSxcbiAgICAgICAgICAgICAgeTogX2xhYmVsSW50ZXJzZWN0WzNdXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKF9sYWJJbnQyU3FEaXN0IDwgX21pblNxRGlzdCkge1xuICAgICAgICAgICAgICBpbnRlcnNlY3QgPSBbX2xhYmVsSW50ZXJzZWN0WzJdLCBfbGFiZWxJbnRlcnNlY3RbM11dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBhcnJvd1N0YXJ0ID0gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3QsIHAyLCByLmFycm93U2hhcGVzW3NyY0FyU2hhcGVdLnNwYWNpbmcoZWRnZSkgKyBzcmNEaXN0KTtcbiAgICB2YXIgZWRnZVN0YXJ0ID0gc2hvcnRlbkludGVyc2VjdGlvbihpbnRlcnNlY3QsIHAyLCByLmFycm93U2hhcGVzW3NyY0FyU2hhcGVdLmdhcChlZGdlKSArIHNyY0Rpc3QpO1xuICAgIHJzLnN0YXJ0WCA9IGVkZ2VTdGFydFswXTtcbiAgICBycy5zdGFydFkgPSBlZGdlU3RhcnRbMV07XG4gICAgcnMuYXJyb3dTdGFydFggPSBhcnJvd1N0YXJ0WzBdO1xuICAgIHJzLmFycm93U3RhcnRZID0gYXJyb3dTdGFydFsxXTtcblxuICAgIGlmIChoYXNFbmRwdHMpIHtcbiAgICAgIGlmICghbnVtYmVyJDEocnMuc3RhcnRYKSB8fCAhbnVtYmVyJDEocnMuc3RhcnRZKSB8fCAhbnVtYmVyJDEocnMuZW5kWCkgfHwgIW51bWJlciQxKHJzLmVuZFkpKSB7XG4gICAgICAgIHJzLmJhZExpbmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnMuYmFkTGluZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCUnAkYi5nZXRTb3VyY2VFbmRwb2ludCA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHJzID0gZWRnZVswXS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICB0aGlzLnJlY2FsY3VsYXRlUmVuZGVyZWRTdHlsZShlZGdlKTtcblxuICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBycy5oYXlzdGFja1B0c1swXSxcbiAgICAgICAgICB5OiBycy5oYXlzdGFja1B0c1sxXVxuICAgICAgICB9O1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHJzLmFycm93U3RhcnRYLFxuICAgICAgICAgIHk6IHJzLmFycm93U3RhcnRZXG4gICAgICAgIH07XG4gICAgfVxuICB9O1xuXG4gIEJScCRiLmdldFRhcmdldEVuZHBvaW50ID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgcnMgPSBlZGdlWzBdLl9wcml2YXRlLnJzY3JhdGNoO1xuICAgIHRoaXMucmVjYWxjdWxhdGVSZW5kZXJlZFN0eWxlKGVkZ2UpO1xuXG4gICAgc3dpdGNoIChycy5lZGdlVHlwZSkge1xuICAgICAgY2FzZSAnaGF5c3RhY2snOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHJzLmhheXN0YWNrUHRzWzJdLFxuICAgICAgICAgIHk6IHJzLmhheXN0YWNrUHRzWzNdXG4gICAgICAgIH07XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogcnMuYXJyb3dFbmRYLFxuICAgICAgICAgIHk6IHJzLmFycm93RW5kWVxuICAgICAgICB9O1xuICAgIH1cbiAgfTtcblxuICB2YXIgQlJwJGEgPSB7fTtcblxuICBmdW5jdGlvbiBwdXNoQmV6aWVyUHRzKHIsIGVkZ2UsIHB0cykge1xuICAgIHZhciBxYmV6aWVyQXQkMSA9IGZ1bmN0aW9uIHFiZXppZXJBdCQxKHAxLCBwMiwgcDMsIHQpIHtcbiAgICAgIHJldHVybiBxYmV6aWVyQXQocDEsIHAyLCBwMywgdCk7XG4gICAgfTtcblxuICAgIHZhciBfcCA9IGVkZ2UuX3ByaXZhdGU7XG4gICAgdmFyIGJwdHMgPSBfcC5yc3R5bGUuYmV6aWVyUHRzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByLmJlemllclByb2pQY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcCA9IHIuYmV6aWVyUHJvalBjdHNbaV07XG4gICAgICBicHRzLnB1c2goe1xuICAgICAgICB4OiBxYmV6aWVyQXQkMShwdHNbMF0sIHB0c1syXSwgcHRzWzRdLCBwKSxcbiAgICAgICAgeTogcWJlemllckF0JDEocHRzWzFdLCBwdHNbM10sIHB0c1s1XSwgcClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEJScCRhLnN0b3JlRWRnZVByb2plY3Rpb25zID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgX3AgPSBlZGdlLl9wcml2YXRlO1xuICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgIHZhciBldCA9IHJzLmVkZ2VUeXBlOyAvLyBjbGVhciB0aGUgY2FjaGVkIHBvaW50cyBzdGF0ZVxuXG4gICAgX3AucnN0eWxlLmJlemllclB0cyA9IG51bGw7XG4gICAgX3AucnN0eWxlLmxpbmVQdHMgPSBudWxsO1xuICAgIF9wLnJzdHlsZS5oYXlzdGFja1B0cyA9IG51bGw7XG5cbiAgICBpZiAoZXQgPT09ICdtdWx0aWJlemllcicgfHwgZXQgPT09ICdiZXppZXInIHx8IGV0ID09PSAnc2VsZicgfHwgZXQgPT09ICdjb21wb3VuZCcpIHtcbiAgICAgIF9wLnJzdHlsZS5iZXppZXJQdHMgPSBbXTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgKyA1IDwgcnMuYWxscHRzLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgICAgIHB1c2hCZXppZXJQdHModGhpcywgZWRnZSwgcnMuYWxscHRzLnNsaWNlKGksIGkgKyA2KSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldCA9PT0gJ3NlZ21lbnRzJykge1xuICAgICAgdmFyIGxwdHMgPSBfcC5yc3R5bGUubGluZVB0cyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSArIDEgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgbHB0cy5wdXNoKHtcbiAgICAgICAgICB4OiBycy5hbGxwdHNbaV0sXG4gICAgICAgICAgeTogcnMuYWxscHRzW2kgKyAxXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV0ID09PSAnaGF5c3RhY2snKSB7XG4gICAgICB2YXIgaHB0cyA9IHJzLmhheXN0YWNrUHRzO1xuICAgICAgX3AucnN0eWxlLmhheXN0YWNrUHRzID0gW3tcbiAgICAgICAgeDogaHB0c1swXSxcbiAgICAgICAgeTogaHB0c1sxXVxuICAgICAgfSwge1xuICAgICAgICB4OiBocHRzWzJdLFxuICAgICAgICB5OiBocHRzWzNdXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBfcC5yc3R5bGUuYXJyb3dXaWR0aCA9IHRoaXMuZ2V0QXJyb3dXaWR0aChlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlLCBlZGdlLnBzdHlsZSgnYXJyb3ctc2NhbGUnKS52YWx1ZSkgKiB0aGlzLmFycm93U2hhcGVXaWR0aDtcbiAgfTtcblxuICBCUnAkYS5yZWNhbGN1bGF0ZUVkZ2VQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlcykge1xuICAgIHRoaXMuZmluZEVkZ2VDb250cm9sUG9pbnRzKGVkZ2VzKTtcbiAgfTtcblxuICAvKiBnbG9iYWwgZG9jdW1lbnQgKi9cblxuICB2YXIgQlJwJDkgPSB7fTtcblxuICBCUnAkOS5yZWNhbGN1bGF0ZU5vZGVMYWJlbFByb2plY3Rpb24gPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHZhciBjb250ZW50ID0gbm9kZS5wc3R5bGUoJ2xhYmVsJykuc3RyVmFsdWU7XG5cbiAgICBpZiAoZW1wdHlTdHJpbmcoY29udGVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dFgsIHRleHRZO1xuICAgIHZhciBfcCA9IG5vZGUuX3ByaXZhdGU7XG4gICAgdmFyIG5vZGVXaWR0aCA9IG5vZGUud2lkdGgoKTtcbiAgICB2YXIgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCk7XG4gICAgdmFyIHBhZGRpbmcgPSBub2RlLnBhZGRpbmcoKTtcbiAgICB2YXIgbm9kZVBvcyA9IG5vZGUucG9zaXRpb24oKTtcbiAgICB2YXIgdGV4dEhhbGlnbiA9IG5vZGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnN0clZhbHVlO1xuICAgIHZhciB0ZXh0VmFsaWduID0gbm9kZS5wc3R5bGUoJ3RleHQtdmFsaWduJykuc3RyVmFsdWU7XG4gICAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gICAgdmFyIHJzdHlsZSA9IF9wLnJzdHlsZTtcblxuICAgIHN3aXRjaCAodGV4dEhhbGlnbikge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHRleHRYID0gbm9kZVBvcy54IC0gbm9kZVdpZHRoIC8gMiAtIHBhZGRpbmc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHRleHRYID0gbm9kZVBvcy54ICsgbm9kZVdpZHRoIC8gMiArIHBhZGRpbmc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBlLmcuIGNlbnRlclxuICAgICAgICB0ZXh0WCA9IG5vZGVQb3MueDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRleHRWYWxpZ24pIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRleHRZID0gbm9kZVBvcy55IC0gbm9kZUhlaWdodCAvIDIgLSBwYWRkaW5nO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgdGV4dFkgPSBub2RlUG9zLnkgKyBub2RlSGVpZ2h0IC8gMiArIHBhZGRpbmc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBlLmcuIG1pZGRsZVxuICAgICAgICB0ZXh0WSA9IG5vZGVQb3MueTtcbiAgICB9XG5cbiAgICBycy5sYWJlbFggPSB0ZXh0WDtcbiAgICBycy5sYWJlbFkgPSB0ZXh0WTtcbiAgICByc3R5bGUubGFiZWxYID0gdGV4dFg7XG4gICAgcnN0eWxlLmxhYmVsWSA9IHRleHRZO1xuICAgIHRoaXMuY2FsY3VsYXRlTGFiZWxBbmdsZXMobm9kZSk7XG4gICAgdGhpcy5hcHBseUxhYmVsRGltZW5zaW9ucyhub2RlKTtcbiAgfTtcblxuICB2YXIgbGluZUFuZ2xlRnJvbURlbHRhID0gZnVuY3Rpb24gbGluZUFuZ2xlRnJvbURlbHRhKGR4LCBkeSkge1xuICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbihkeSAvIGR4KTtcblxuICAgIGlmIChkeCA9PT0gMCAmJiBhbmdsZSA8IDApIHtcbiAgICAgIGFuZ2xlID0gYW5nbGUgKiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW5nbGU7XG4gIH07XG5cbiAgdmFyIGxpbmVBbmdsZSA9IGZ1bmN0aW9uIGxpbmVBbmdsZShwMCwgcDEpIHtcbiAgICB2YXIgZHggPSBwMS54IC0gcDAueDtcbiAgICB2YXIgZHkgPSBwMS55IC0gcDAueTtcbiAgICByZXR1cm4gbGluZUFuZ2xlRnJvbURlbHRhKGR4LCBkeSk7XG4gIH07XG5cbiAgdmFyIGJlemllckFuZ2xlID0gZnVuY3Rpb24gYmV6aWVyQW5nbGUocDAsIHAxLCBwMiwgdCkge1xuICAgIHZhciB0MCA9IGJvdW5kKDAsIHQgLSAwLjAwMSwgMSk7XG4gICAgdmFyIHQxID0gYm91bmQoMCwgdCArIDAuMDAxLCAxKTtcbiAgICB2YXIgbHAwID0gcWJlemllclB0QXQocDAsIHAxLCBwMiwgdDApO1xuICAgIHZhciBscDEgPSBxYmV6aWVyUHRBdChwMCwgcDEsIHAyLCB0MSk7XG4gICAgcmV0dXJuIGxpbmVBbmdsZShscDAsIGxwMSk7XG4gIH07XG5cbiAgQlJwJDkucmVjYWxjdWxhdGVFZGdlTGFiZWxQcm9qZWN0aW9ucyA9IGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHA7XG4gICAgdmFyIF9wID0gZWRnZS5fcHJpdmF0ZTtcbiAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGNvbnRlbnQgPSB7XG4gICAgICBtaWQ6IGVkZ2UucHN0eWxlKCdsYWJlbCcpLnN0clZhbHVlLFxuICAgICAgc291cmNlOiBlZGdlLnBzdHlsZSgnc291cmNlLWxhYmVsJykuc3RyVmFsdWUsXG4gICAgICB0YXJnZXQ6IGVkZ2UucHN0eWxlKCd0YXJnZXQtbGFiZWwnKS5zdHJWYWx1ZVxuICAgIH07XG5cbiAgICBpZiAoY29udGVudC5taWQgfHwgY29udGVudC5zb3VyY2UgfHwgY29udGVudC50YXJnZXQpIDsgZWxzZSB7XG4gICAgICByZXR1cm47IC8vIG5vIGxhYmVscyA9PiBubyBjYWxjc1xuICAgIH0gLy8gYWRkIGNlbnRlciBwb2ludCB0byBzdHlsZSBzbyBib3VuZGluZyBib3ggY2FsY3VsYXRpb25zIGNhbiB1c2UgaXRcbiAgICAvL1xuXG5cbiAgICBwID0ge1xuICAgICAgeDogcnMubWlkWCxcbiAgICAgIHk6IHJzLm1pZFlcbiAgICB9O1xuXG4gICAgdmFyIHNldFJzID0gZnVuY3Rpb24gc2V0UnMocHJvcE5hbWUsIHByZWZpeCwgdmFsdWUpIHtcbiAgICAgIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsIHByb3BOYW1lLCBwcmVmaXgsIHZhbHVlKTtcbiAgICAgIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnN0eWxlLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgfTtcblxuICAgIHNldFJzKCdsYWJlbFgnLCBudWxsLCBwLngpO1xuICAgIHNldFJzKCdsYWJlbFknLCBudWxsLCBwLnkpO1xuICAgIHZhciBtaWRBbmdsZSA9IGxpbmVBbmdsZUZyb21EZWx0YShycy5taWREaXNwWCwgcnMubWlkRGlzcFkpO1xuICAgIHNldFJzKCdsYWJlbEF1dG9BbmdsZScsIG51bGwsIG1pZEFuZ2xlKTtcblxuICAgIHZhciBjcmVhdGVDb250cm9sUG9pbnRJbmZvID0gZnVuY3Rpb24gY3JlYXRlQ29udHJvbFBvaW50SW5mbygpIHtcbiAgICAgIGlmIChjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlO1xuICAgICAgfSAvLyB1c2UgY2FjaGUgc28gb25seSAxeCBwZXIgZWRnZVxuXG5cbiAgICAgIHZhciBjdHJscHRzID0gW107IC8vIHN0b3JlIGVhY2ggY3RybHB0IGluZm8gaW5pdFxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSArIDUgPCBycy5hbGxwdHMubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgdmFyIHAwID0ge1xuICAgICAgICAgIHg6IHJzLmFsbHB0c1tpXSxcbiAgICAgICAgICB5OiBycy5hbGxwdHNbaSArIDFdXG4gICAgICAgIH07XG4gICAgICAgIHZhciBwMSA9IHtcbiAgICAgICAgICB4OiBycy5hbGxwdHNbaSArIDJdLFxuICAgICAgICAgIHk6IHJzLmFsbHB0c1tpICsgM11cbiAgICAgICAgfTsgLy8gY3RybHB0XG5cbiAgICAgICAgdmFyIHAyID0ge1xuICAgICAgICAgIHg6IHJzLmFsbHB0c1tpICsgNF0sXG4gICAgICAgICAgeTogcnMuYWxscHRzW2kgKyA1XVxuICAgICAgICB9O1xuICAgICAgICBjdHJscHRzLnB1c2goe1xuICAgICAgICAgIHAwOiBwMCxcbiAgICAgICAgICBwMTogcDEsXG4gICAgICAgICAgcDI6IHAyLFxuICAgICAgICAgIHN0YXJ0RGlzdDogMCxcbiAgICAgICAgICBsZW5ndGg6IDAsXG4gICAgICAgICAgc2VnbWVudHM6IFtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgYnB0cyA9IF9wLnJzdHlsZS5iZXppZXJQdHM7XG4gICAgICB2YXIgblByb2pzID0gci5iZXppZXJQcm9qUGN0cy5sZW5ndGg7XG5cbiAgICAgIGZ1bmN0aW9uIGFkZFNlZ21lbnQoY3AsIHAwLCBwMSwgdDAsIHQxKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBkaXN0KHAwLCBwMSk7XG4gICAgICAgIHZhciBwcmV2U2VnbWVudCA9IGNwLnNlZ21lbnRzW2NwLnNlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICB2YXIgc2VnbWVudCA9IHtcbiAgICAgICAgICBwMDogcDAsXG4gICAgICAgICAgcDE6IHAxLFxuICAgICAgICAgIHQwOiB0MCxcbiAgICAgICAgICB0MTogdDEsXG4gICAgICAgICAgc3RhcnREaXN0OiBwcmV2U2VnbWVudCA/IHByZXZTZWdtZW50LnN0YXJ0RGlzdCArIHByZXZTZWdtZW50Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgbGVuZ3RoOiBsZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgY3Auc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgICAgICAgY3AubGVuZ3RoICs9IGxlbmd0aDtcbiAgICAgIH0gLy8gdXBkYXRlIGVhY2ggY3RybHB0IHdpdGggc2VnbWVudCBpbmZvXG5cblxuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGN0cmxwdHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBjcCA9IGN0cmxwdHNbX2ldO1xuICAgICAgICB2YXIgcHJldkNwID0gY3RybHB0c1tfaSAtIDFdO1xuXG4gICAgICAgIGlmIChwcmV2Q3ApIHtcbiAgICAgICAgICBjcC5zdGFydERpc3QgPSBwcmV2Q3Auc3RhcnREaXN0ICsgcHJldkNwLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFkZFNlZ21lbnQoY3AsIGNwLnAwLCBicHRzW19pICogblByb2pzXSwgMCwgci5iZXppZXJQcm9qUGN0c1swXSk7IC8vIGZpcnN0XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuUHJvanMgLSAxOyBqKyspIHtcbiAgICAgICAgICBhZGRTZWdtZW50KGNwLCBicHRzW19pICogblByb2pzICsgal0sIGJwdHNbX2kgKiBuUHJvanMgKyBqICsgMV0sIHIuYmV6aWVyUHJvalBjdHNbal0sIHIuYmV6aWVyUHJvalBjdHNbaiArIDFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFkZFNlZ21lbnQoY3AsIGJwdHNbX2kgKiBuUHJvanMgKyBuUHJvanMgLSAxXSwgY3AucDIsIHIuYmV6aWVyUHJvalBjdHNbblByb2pzIC0gMV0sIDEpOyAvLyBsYXN0XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjcmVhdGVDb250cm9sUG9pbnRJbmZvLmNhY2hlID0gY3RybHB0cztcbiAgICB9O1xuXG4gICAgdmFyIGNhbGN1bGF0ZUVuZFByb2plY3Rpb24gPSBmdW5jdGlvbiBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKHByZWZpeCkge1xuICAgICAgdmFyIGFuZ2xlO1xuICAgICAgdmFyIGlzU3JjID0gcHJlZml4ID09PSAnc291cmNlJztcblxuICAgICAgaWYgKCFjb250ZW50W3ByZWZpeF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2Zmc2V0ID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy10ZXh0LW9mZnNldCcpLnBmVmFsdWU7XG5cbiAgICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnc2VsZic6XG4gICAgICAgIGNhc2UgJ2NvbXBvdW5kJzpcbiAgICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgICAgY2FzZSAnbXVsdGliZXppZXInOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBjcHMgPSBjcmVhdGVDb250cm9sUG9pbnRJbmZvKCk7XG4gICAgICAgICAgICB2YXIgc2VsZWN0ZWQ7XG4gICAgICAgICAgICB2YXIgc3RhcnREaXN0ID0gMDtcbiAgICAgICAgICAgIHZhciB0b3RhbERpc3QgPSAwOyAvLyBmaW5kIHRoZSBzZWdtZW50IHdlJ3JlIG9uXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBfY3AgPSBjcHNbaXNTcmMgPyBpIDogY3BzLmxlbmd0aCAtIDEgLSBpXTtcblxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9jcC5zZWdtZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBfc2VnID0gX2NwLnNlZ21lbnRzW2lzU3JjID8gaiA6IF9jcC5zZWdtZW50cy5sZW5ndGggLSAxIC0gal07XG4gICAgICAgICAgICAgICAgdmFyIGxhc3RTZWcgPSBpID09PSBjcHMubGVuZ3RoIC0gMSAmJiBqID09PSBfY3Auc2VnbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICBzdGFydERpc3QgPSB0b3RhbERpc3Q7XG4gICAgICAgICAgICAgICAgdG90YWxEaXN0ICs9IF9zZWcubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsRGlzdCA+PSBvZmZzZXQgfHwgbGFzdFNlZykge1xuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNwOiBfY3AsXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQ6IF9zZWdcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY3AgPSBzZWxlY3RlZC5jcDtcbiAgICAgICAgICAgIHZhciBzZWcgPSBzZWxlY3RlZC5zZWdtZW50O1xuICAgICAgICAgICAgdmFyIHRTZWdtZW50ID0gKG9mZnNldCAtIHN0YXJ0RGlzdCkgLyBzZWcubGVuZ3RoO1xuICAgICAgICAgICAgdmFyIHNlZ0R0ID0gc2VnLnQxIC0gc2VnLnQwO1xuICAgICAgICAgICAgdmFyIHQgPSBpc1NyYyA/IHNlZy50MCArIHNlZ0R0ICogdFNlZ21lbnQgOiBzZWcudDEgLSBzZWdEdCAqIHRTZWdtZW50O1xuICAgICAgICAgICAgdCA9IGJvdW5kKDAsIHQsIDEpO1xuICAgICAgICAgICAgcCA9IHFiZXppZXJQdEF0KGNwLnAwLCBjcC5wMSwgY3AucDIsIHQpO1xuICAgICAgICAgICAgYW5nbGUgPSBiZXppZXJBbmdsZShjcC5wMCwgY3AucDEsIGNwLnAyLCB0KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlICdzdHJhaWdodCc6XG4gICAgICAgIGNhc2UgJ3NlZ21lbnRzJzpcbiAgICAgICAgY2FzZSAnaGF5c3RhY2snOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBkID0gMCxcbiAgICAgICAgICAgICAgICBkaSxcbiAgICAgICAgICAgICAgICBkMDtcbiAgICAgICAgICAgIHZhciBwMCwgcDE7XG4gICAgICAgICAgICB2YXIgbCA9IHJzLmFsbHB0cy5sZW5ndGg7XG5cbiAgICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiArIDMgPCBsOyBfaTIgKz0gMikge1xuICAgICAgICAgICAgICBpZiAoaXNTcmMpIHtcbiAgICAgICAgICAgICAgICBwMCA9IHtcbiAgICAgICAgICAgICAgICAgIHg6IHJzLmFsbHB0c1tfaTJdLFxuICAgICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW19pMiArIDFdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBwMSA9IHtcbiAgICAgICAgICAgICAgICAgIHg6IHJzLmFsbHB0c1tfaTIgKyAyXSxcbiAgICAgICAgICAgICAgICAgIHk6IHJzLmFsbHB0c1tfaTIgKyAzXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcDAgPSB7XG4gICAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbbCAtIDIgLSBfaTJdLFxuICAgICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW2wgLSAxIC0gX2kyXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcDEgPSB7XG4gICAgICAgICAgICAgICAgICB4OiBycy5hbGxwdHNbbCAtIDQgLSBfaTJdLFxuICAgICAgICAgICAgICAgICAgeTogcnMuYWxscHRzW2wgLSAzIC0gX2kyXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBkaSA9IGRpc3QocDAsIHAxKTtcbiAgICAgICAgICAgICAgZDAgPSBkO1xuICAgICAgICAgICAgICBkICs9IGRpO1xuXG4gICAgICAgICAgICAgIGlmIChkID49IG9mZnNldCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwRCA9IG9mZnNldCAtIGQwO1xuXG4gICAgICAgICAgICB2YXIgX3QgPSBwRCAvIGRpO1xuXG4gICAgICAgICAgICBfdCA9IGJvdW5kKDAsIF90LCAxKTtcbiAgICAgICAgICAgIHAgPSBsaW5lQXQocDAsIHAxLCBfdCk7XG4gICAgICAgICAgICBhbmdsZSA9IGxpbmVBbmdsZShwMCwgcDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRScygnbGFiZWxYJywgcHJlZml4LCBwLngpO1xuICAgICAgc2V0UnMoJ2xhYmVsWScsIHByZWZpeCwgcC55KTtcbiAgICAgIHNldFJzKCdsYWJlbEF1dG9BbmdsZScsIHByZWZpeCwgYW5nbGUpO1xuICAgIH07XG5cbiAgICBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKCdzb3VyY2UnKTtcbiAgICBjYWxjdWxhdGVFbmRQcm9qZWN0aW9uKCd0YXJnZXQnKTtcbiAgICB0aGlzLmFwcGx5TGFiZWxEaW1lbnNpb25zKGVkZ2UpO1xuICB9O1xuXG4gIEJScCQ5LmFwcGx5TGFiZWxEaW1lbnNpb25zID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHRoaXMuYXBwbHlQcmVmaXhlZExhYmVsRGltZW5zaW9ucyhlbGUpO1xuXG4gICAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgICAgdGhpcy5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zKGVsZSwgJ3NvdXJjZScpO1xuICAgICAgdGhpcy5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zKGVsZSwgJ3RhcmdldCcpO1xuICAgIH1cbiAgfTtcblxuICBCUnAkOS5hcHBseVByZWZpeGVkTGFiZWxEaW1lbnNpb25zID0gZnVuY3Rpb24gKGVsZSwgcHJlZml4KSB7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciB0ZXh0ID0gdGhpcy5nZXRMYWJlbFRleHQoZWxlLCBwcmVmaXgpO1xuICAgIHZhciBsYWJlbERpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRleHQpO1xuICAgIHZhciBsaW5lSGVpZ2h0ID0gZWxlLnBzdHlsZSgnbGluZS1oZWlnaHQnKS5wZlZhbHVlO1xuICAgIHZhciB0ZXh0V3JhcCA9IGVsZS5wc3R5bGUoJ3RleHQtd3JhcCcpLnN0clZhbHVlO1xuICAgIHZhciBsaW5lcyA9IGdldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbFdyYXBDYWNoZWRMaW5lcycsIHByZWZpeCkgfHwgW107XG4gICAgdmFyIG51bUxpbmVzID0gdGV4dFdyYXAgIT09ICd3cmFwJyA/IDEgOiBNYXRoLm1heChsaW5lcy5sZW5ndGgsIDEpO1xuICAgIHZhciBub3JtUGVyTGluZUhlaWdodCA9IGxhYmVsRGltcy5oZWlnaHQgLyBudW1MaW5lcztcbiAgICB2YXIgbGFiZWxMaW5lSGVpZ2h0ID0gbm9ybVBlckxpbmVIZWlnaHQgKiBsaW5lSGVpZ2h0O1xuICAgIHZhciB3aWR0aCA9IGxhYmVsRGltcy53aWR0aDtcbiAgICB2YXIgaGVpZ2h0ID0gbGFiZWxEaW1zLmhlaWdodCArIChudW1MaW5lcyAtIDEpICogKGxpbmVIZWlnaHQgLSAxKSAqIG5vcm1QZXJMaW5lSGVpZ2h0O1xuICAgIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnN0eWxlLCAnbGFiZWxXaWR0aCcsIHByZWZpeCwgd2lkdGgpO1xuICAgIHNldFByZWZpeGVkUHJvcGVydHkoX3AucnNjcmF0Y2gsICdsYWJlbFdpZHRoJywgcHJlZml4LCB3aWR0aCk7XG4gICAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc3R5bGUsICdsYWJlbEhlaWdodCcsIHByZWZpeCwgaGVpZ2h0KTtcbiAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCAnbGFiZWxIZWlnaHQnLCBwcmVmaXgsIGhlaWdodCk7XG4gICAgc2V0UHJlZml4ZWRQcm9wZXJ0eShfcC5yc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCwgbGFiZWxMaW5lSGVpZ2h0KTtcbiAgfTtcblxuICBCUnAkOS5nZXRMYWJlbFRleHQgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIHBmZCA9IHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnO1xuICAgIHZhciB0ZXh0ID0gZWxlLnBzdHlsZShwZmQgKyAnbGFiZWwnKS5zdHJWYWx1ZTtcbiAgICB2YXIgdGV4dFRyYW5zZm9ybSA9IGVsZS5wc3R5bGUoJ3RleHQtdHJhbnNmb3JtJykudmFsdWU7XG5cbiAgICB2YXIgcnNjcmF0Y2ggPSBmdW5jdGlvbiByc2NyYXRjaChwcm9wTmFtZSwgdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBzZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBnZXRQcmVmaXhlZFByb3BlcnR5KF9wLnJzY3JhdGNoLCBwcm9wTmFtZSwgcHJlZml4KTtcbiAgICAgIH1cbiAgICB9OyAvLyBmb3IgZW1wdHkgdGV4dCwgc2tpcCBhbGwgcHJvY2Vzc2luZ1xuXG5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGV4dFRyYW5zZm9ybSA9PSAnbm9uZScpIDsgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAndXBwZXJjYXNlJykge1xuICAgICAgdGV4dCA9IHRleHQudG9VcHBlckNhc2UoKTtcbiAgICB9IGVsc2UgaWYgKHRleHRUcmFuc2Zvcm0gPT0gJ2xvd2VyY2FzZScpIHtcbiAgICAgIHRleHQgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgdmFyIHdyYXBTdHlsZSA9IGVsZS5wc3R5bGUoJ3RleHQtd3JhcCcpLnZhbHVlO1xuXG4gICAgaWYgKHdyYXBTdHlsZSA9PT0gJ3dyYXAnKSB7XG4gICAgICB2YXIgbGFiZWxLZXkgPSByc2NyYXRjaCgnbGFiZWxLZXknKTsgLy8gc2F2ZSByZWNhbGMgaWYgdGhlIGxhYmVsIGlzIHRoZSBzYW1lIGFzIGJlZm9yZVxuXG4gICAgICBpZiAobGFiZWxLZXkgIT0gbnVsbCAmJiByc2NyYXRjaCgnbGFiZWxXcmFwS2V5JykgPT09IGxhYmVsS2V5KSB7XG4gICAgICAgIHJldHVybiByc2NyYXRjaCgnbGFiZWxXcmFwQ2FjaGVkVGV4dCcpO1xuICAgICAgfVxuXG4gICAgICB2YXIgendzcCA9IFwiXFx1MjAwQlwiO1xuICAgICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgbWF4VyA9IGVsZS5wc3R5bGUoJ3RleHQtbWF4LXdpZHRoJykucGZWYWx1ZTtcbiAgICAgIHZhciBvdmVyZmxvdyA9IGVsZS5wc3R5bGUoJ3RleHQtb3ZlcmZsb3ctd3JhcCcpLnZhbHVlO1xuICAgICAgdmFyIG92ZXJmbG93QW55ID0gb3ZlcmZsb3cgPT09ICdhbnl3aGVyZSc7XG4gICAgICB2YXIgd3JhcHBlZExpbmVzID0gW107XG4gICAgICB2YXIgd29yZHNSZWdleCA9IC9bXFxzXFx1MjAwYl0rLztcbiAgICAgIHZhciB3b3JkU2VwYXJhdG9yID0gb3ZlcmZsb3dBbnkgPyAnJyA6ICcgJztcblxuICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsaW5lcy5sZW5ndGg7IGwrKykge1xuICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2xdO1xuICAgICAgICB2YXIgbGluZURpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIGxpbmUpO1xuICAgICAgICB2YXIgbGluZVcgPSBsaW5lRGltcy53aWR0aDtcblxuICAgICAgICBpZiAob3ZlcmZsb3dBbnkpIHtcbiAgICAgICAgICB2YXIgcHJvY2Vzc2VkTGluZSA9IGxpbmUuc3BsaXQoJycpLmpvaW4oendzcCk7XG4gICAgICAgICAgbGluZSA9IHByb2Nlc3NlZExpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGluZVcgPiBtYXhXKSB7XG4gICAgICAgICAgLy8gbGluZSBpcyB0b28gbG9uZ1xuICAgICAgICAgIHZhciB3b3JkcyA9IGxpbmUuc3BsaXQod29yZHNSZWdleCk7XG4gICAgICAgICAgdmFyIHN1YmxpbmUgPSAnJztcblxuICAgICAgICAgIGZvciAodmFyIHcgPSAwOyB3IDwgd29yZHMubGVuZ3RoOyB3KyspIHtcbiAgICAgICAgICAgIHZhciB3b3JkID0gd29yZHNbd107XG4gICAgICAgICAgICB2YXIgdGVzdExpbmUgPSBzdWJsaW5lLmxlbmd0aCA9PT0gMCA/IHdvcmQgOiBzdWJsaW5lICsgd29yZFNlcGFyYXRvciArIHdvcmQ7XG4gICAgICAgICAgICB2YXIgdGVzdERpbXMgPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRlc3RMaW5lKTtcbiAgICAgICAgICAgIHZhciB0ZXN0VyA9IHRlc3REaW1zLndpZHRoO1xuXG4gICAgICAgICAgICBpZiAodGVzdFcgPD0gbWF4Vykge1xuICAgICAgICAgICAgICAvLyB3b3JkIGZpdHMgb24gY3VycmVudCBsaW5lXG4gICAgICAgICAgICAgIHN1YmxpbmUgKz0gd29yZCArIHdvcmRTZXBhcmF0b3I7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyB3b3JkIHN0YXJ0cyBuZXcgbGluZVxuICAgICAgICAgICAgICBpZiAoc3VibGluZSkge1xuICAgICAgICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc3VibGluZSA9IHdvcmQgKyB3b3JkU2VwYXJhdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gaWYgdGhlcmUncyByZW1haW5pbmcgdGV4dCwgcHV0IGl0IGluIGEgd3JhcHBlZCBsaW5lXG5cblxuICAgICAgICAgIGlmICghc3VibGluZS5tYXRjaCgvXltcXHNcXHUyMDBiXSskLykpIHtcbiAgICAgICAgICAgIHdyYXBwZWRMaW5lcy5wdXNoKHN1YmxpbmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBsaW5lIGlzIGFscmVhZHkgc2hvcnQgZW5vdWdoXG4gICAgICAgICAgd3JhcHBlZExpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gZm9yXG5cblxuICAgICAgcnNjcmF0Y2goJ2xhYmVsV3JhcENhY2hlZExpbmVzJywgd3JhcHBlZExpbmVzKTtcbiAgICAgIHRleHQgPSByc2NyYXRjaCgnbGFiZWxXcmFwQ2FjaGVkVGV4dCcsIHdyYXBwZWRMaW5lcy5qb2luKCdcXG4nKSk7XG4gICAgICByc2NyYXRjaCgnbGFiZWxXcmFwS2V5JywgbGFiZWxLZXkpO1xuICAgIH0gZWxzZSBpZiAod3JhcFN0eWxlID09PSAnZWxsaXBzaXMnKSB7XG4gICAgICB2YXIgX21heFcgPSBlbGUucHN0eWxlKCd0ZXh0LW1heC13aWR0aCcpLnBmVmFsdWU7XG4gICAgICB2YXIgZWxsaXBzaXplZCA9ICcnO1xuICAgICAgdmFyIGVsbGlwc2lzID0gXCJcXHUyMDI2XCI7XG4gICAgICB2YXIgaW5jTGFzdENoID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIHRleHQpLndpZHRoIDwgX21heFcpIHtcbiAgICAgICAgLy8gdGhlIGxhYmVsIGFscmVhZHkgZml0c1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3aWR0aFdpdGhOZXh0Q2ggPSB0aGlzLmNhbGN1bGF0ZUxhYmVsRGltZW5zaW9ucyhlbGUsIGVsbGlwc2l6ZWQgKyB0ZXh0W2ldICsgZWxsaXBzaXMpLndpZHRoO1xuXG4gICAgICAgIGlmICh3aWR0aFdpdGhOZXh0Q2ggPiBfbWF4Vykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxsaXBzaXplZCArPSB0ZXh0W2ldO1xuXG4gICAgICAgIGlmIChpID09PSB0ZXh0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBpbmNMYXN0Q2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaW5jTGFzdENoKSB7XG4gICAgICAgIGVsbGlwc2l6ZWQgKz0gZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbGxpcHNpemVkO1xuICAgIH0gLy8gaWYgZWxsaXBzaXplXG5cblxuICAgIHJldHVybiB0ZXh0O1xuICB9O1xuXG4gIEJScCQ5LmdldExhYmVsSnVzdGlmaWNhdGlvbiA9IGZ1bmN0aW9uIChlbGUpIHtcbiAgICB2YXIganVzdGlmaWNhdGlvbiA9IGVsZS5wc3R5bGUoJ3RleHQtanVzdGlmaWNhdGlvbicpLnN0clZhbHVlO1xuICAgIHZhciB0ZXh0SGFsaWduID0gZWxlLnBzdHlsZSgndGV4dC1oYWxpZ24nKS5zdHJWYWx1ZTtcblxuICAgIGlmIChqdXN0aWZpY2F0aW9uID09PSAnYXV0bycpIHtcbiAgICAgIGlmIChlbGUuaXNOb2RlKCkpIHtcbiAgICAgICAgc3dpdGNoICh0ZXh0SGFsaWduKSB7XG4gICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcblxuICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdjZW50ZXInO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBqdXN0aWZpY2F0aW9uO1xuICAgIH1cbiAgfTtcblxuICBCUnAkOS5jYWxjdWxhdGVMYWJlbERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZWxlLCB0ZXh0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBjYWNoZUtleSA9IGhhc2hTdHJpbmcodGV4dCwgZWxlLl9wcml2YXRlLmxhYmVsRGltc0tleSk7XG4gICAgdmFyIGNhY2hlID0gci5sYWJlbERpbUNhY2hlIHx8IChyLmxhYmVsRGltQ2FjaGUgPSBbXSk7XG4gICAgdmFyIGV4aXN0aW5nVmFsID0gY2FjaGVbY2FjaGVLZXldO1xuXG4gICAgaWYgKGV4aXN0aW5nVmFsICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBleGlzdGluZ1ZhbDtcbiAgICB9XG5cbiAgICB2YXIgcGFkZGluZyA9IDA7IC8vIGFkZCBwYWRkaW5nIGFyb3VuZCB0ZXh0IGRpbXMsIGFzIHRoZSBtZWFzdXJlbWVudCBpc24ndCB0aGF0IGFjY3VyYXRlXG5cbiAgICB2YXIgZlN0eWxlID0gZWxlLnBzdHlsZSgnZm9udC1zdHlsZScpLnN0clZhbHVlO1xuICAgIHZhciBzaXplID0gZWxlLnBzdHlsZSgnZm9udC1zaXplJykucGZWYWx1ZTtcbiAgICB2YXIgZmFtaWx5ID0gZWxlLnBzdHlsZSgnZm9udC1mYW1pbHknKS5zdHJWYWx1ZTtcbiAgICB2YXIgd2VpZ2h0ID0gZWxlLnBzdHlsZSgnZm9udC13ZWlnaHQnKS5zdHJWYWx1ZTtcbiAgICB2YXIgY2FudmFzID0gdGhpcy5sYWJlbENhbGNDYW52YXM7XG4gICAgdmFyIGMyZCA9IHRoaXMubGFiZWxDYWxjQ2FudmFzQ29udGV4dDtcblxuICAgIGlmICghY2FudmFzKSB7XG4gICAgICBjYW52YXMgPSB0aGlzLmxhYmVsQ2FsY0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgYzJkID0gdGhpcy5sYWJlbENhbGNDYW52YXNDb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICB2YXIgZHMgPSBjYW52YXMuc3R5bGU7XG4gICAgICBkcy5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICBkcy5sZWZ0ID0gJy05OTk5cHgnO1xuICAgICAgZHMudG9wID0gJy05OTk5cHgnO1xuICAgICAgZHMuekluZGV4ID0gJy0xJztcbiAgICAgIGRzLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgIGRzLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgYzJkLmZvbnQgPSBcIlwiLmNvbmNhdChmU3R5bGUsIFwiIFwiKS5jb25jYXQod2VpZ2h0LCBcIiBcIikuY29uY2F0KHNpemUsIFwicHggXCIpLmNvbmNhdChmYW1pbHkpO1xuICAgIHZhciB3aWR0aCA9IDA7XG4gICAgdmFyIGhlaWdodCA9IDA7XG4gICAgdmFyIGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgdmFyIG1ldHJpY3MgPSBjMmQubWVhc3VyZVRleHQobGluZSk7XG4gICAgICB2YXIgdyA9IE1hdGguY2VpbChtZXRyaWNzLndpZHRoKTtcbiAgICAgIHZhciBoID0gc2l6ZTtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgodywgd2lkdGgpO1xuICAgICAgaGVpZ2h0ICs9IGg7XG4gICAgfVxuXG4gICAgd2lkdGggKz0gcGFkZGluZztcbiAgICBoZWlnaHQgKz0gcGFkZGluZztcbiAgICByZXR1cm4gY2FjaGVbY2FjaGVLZXldID0ge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9O1xuICB9O1xuXG4gIEJScCQ5LmNhbGN1bGF0ZUxhYmVsQW5nbGUgPSBmdW5jdGlvbiAoZWxlLCBwcmVmaXgpIHtcbiAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgdmFyIHJzID0gX3AucnNjcmF0Y2g7XG4gICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgICB2YXIgcHJlZml4RGFzaCA9IHByZWZpeCA/IHByZWZpeCArICctJyA6ICcnO1xuICAgIHZhciByb3QgPSBlbGUucHN0eWxlKHByZWZpeERhc2ggKyAndGV4dC1yb3RhdGlvbicpO1xuICAgIHZhciByb3RTdHIgPSByb3Quc3RyVmFsdWU7XG5cbiAgICBpZiAocm90U3RyID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSBpZiAoaXNFZGdlICYmIHJvdFN0ciA9PT0gJ2F1dG9yb3RhdGUnKSB7XG4gICAgICByZXR1cm4gcnMubGFiZWxBdXRvQW5nbGU7XG4gICAgfSBlbHNlIGlmIChyb3RTdHIgPT09ICdhdXRvcm90YXRlJykge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByb3QucGZWYWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgQlJwJDkuY2FsY3VsYXRlTGFiZWxBbmdsZXMgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG4gICAgdmFyIF9wID0gZWxlLl9wcml2YXRlO1xuICAgIHZhciBycyA9IF9wLnJzY3JhdGNoO1xuICAgIHJzLmxhYmVsQW5nbGUgPSByLmNhbGN1bGF0ZUxhYmVsQW5nbGUoZWxlKTtcblxuICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgIHJzLnNvdXJjZUxhYmVsQW5nbGUgPSByLmNhbGN1bGF0ZUxhYmVsQW5nbGUoZWxlLCAnc291cmNlJyk7XG4gICAgICBycy50YXJnZXRMYWJlbEFuZ2xlID0gci5jYWxjdWxhdGVMYWJlbEFuZ2xlKGVsZSwgJ3RhcmdldCcpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgQlJwJDggPSB7fTtcbiAgdmFyIFRPT19TTUFMTF9DVVRfUkVDVCA9IDI4O1xuICB2YXIgd2FybmVkQ3V0UmVjdCA9IGZhbHNlO1xuXG4gIEJScCQ4LmdldE5vZGVTaGFwZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBzaGFwZSA9IG5vZGUucHN0eWxlKCdzaGFwZScpLnZhbHVlO1xuXG4gICAgaWYgKHNoYXBlID09PSAnY3V0cmVjdGFuZ2xlJyAmJiAobm9kZS53aWR0aCgpIDwgVE9PX1NNQUxMX0NVVF9SRUNUIHx8IG5vZGUuaGVpZ2h0KCkgPCBUT09fU01BTExfQ1VUX1JFQ1QpKSB7XG4gICAgICBpZiAoIXdhcm5lZEN1dFJlY3QpIHtcbiAgICAgICAgd2FybignVGhlIGBjdXRyZWN0YW5nbGVgIG5vZGUgc2hhcGUgY2FuIG5vdCBiZSB1c2VkIGF0IHNtYWxsIHNpemVzIHNvIGByZWN0YW5nbGVgIGlzIHVzZWQgaW5zdGVhZCcpO1xuICAgICAgICB3YXJuZWRDdXRSZWN0ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICdyZWN0YW5nbGUnO1xuICAgIH1cblxuICAgIGlmIChub2RlLmlzUGFyZW50KCkpIHtcbiAgICAgIGlmIChzaGFwZSA9PT0gJ3JlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdyb3VuZHJlY3RhbmdsZScgfHwgc2hhcGUgPT09ICdyb3VuZC1yZWN0YW5nbGUnIHx8IHNoYXBlID09PSAnY3V0cmVjdGFuZ2xlJyB8fCBzaGFwZSA9PT0gJ2N1dC1yZWN0YW5nbGUnIHx8IHNoYXBlID09PSAnYmFycmVsJykge1xuICAgICAgICByZXR1cm4gc2hhcGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ3JlY3RhbmdsZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlID09PSAncG9seWdvbicpIHtcbiAgICAgIHZhciBwb2ludHMgPSBub2RlLnBzdHlsZSgnc2hhcGUtcG9seWdvbi1wb2ludHMnKS52YWx1ZTtcbiAgICAgIHJldHVybiByLm5vZGVTaGFwZXMubWFrZVBvbHlnb24ocG9pbnRzKS5uYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBzaGFwZTtcbiAgfTtcblxuICB2YXIgQlJwJDcgPSB7fTtcblxuICBCUnAkNy5yZWdpc3RlckNhbGN1bGF0aW9uTGlzdGVuZXJzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjeSA9IHRoaXMuY3k7XG4gICAgdmFyIGVsZXNUb1VwZGF0ZSA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICB2YXIgciA9IHRoaXM7XG5cbiAgICB2YXIgZW5xdWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoZWxlcykge1xuICAgICAgdmFyIGRpcnR5U3R5bGVDYWNoZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7XG4gICAgICBlbGVzVG9VcGRhdGUubWVyZ2UoZWxlcyk7XG5cbiAgICAgIGlmIChkaXJ0eVN0eWxlQ2FjaGVzKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICAgICAgICB2YXIgcnN0eWxlID0gX3AucnN0eWxlO1xuICAgICAgICAgIHJzdHlsZS5jbGVhbiA9IGZhbHNlO1xuICAgICAgICAgIHJzdHlsZS5jbGVhbkNvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHIuYmluZGVyKGN5KS5vbignYm91bmRzLiogZGlydHkuKicsIGZ1bmN0aW9uIG9uRGlydHlCb3VuZHMoZSkge1xuICAgICAgdmFyIGVsZSA9IGUudGFyZ2V0O1xuICAgICAgZW5xdWV1ZShlbGUpO1xuICAgIH0pLm9uKCdzdHlsZS4qIGJhY2tncm91bmQuKicsIGZ1bmN0aW9uIG9uRGlydHlTdHlsZShlKSB7XG4gICAgICB2YXIgZWxlID0gZS50YXJnZXQ7XG4gICAgICBlbnF1ZXVlKGVsZSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdmFyIHVwZGF0ZUVsZUNhbGNzID0gZnVuY3Rpb24gdXBkYXRlRWxlQ2FsY3Mod2lsbERyYXcpIHtcbiAgICAgIGlmICh3aWxsRHJhdykge1xuICAgICAgICB2YXIgZm5zID0gci5vblVwZGF0ZUVsZUNhbGNzRm5zOyAvLyBiZWNhdXNlIHdlIG5lZWQgdG8gaGF2ZSB1cC10by1kYXRlIHN0eWxlIChlLmcuIHN0eWxlc2hlZXQgbWFwcGVycylcbiAgICAgICAgLy8gYmVmb3JlIGNhbGN1bGF0aW5nIHJlbmRlcmVkIHN0eWxlIChhbmQgcHN0eWxlIG1pZ2h0IG5vdCBiZSBjYWxsZWQgeWV0KVxuXG4gICAgICAgIGVsZXNUb1VwZGF0ZS5jbGVhblN0eWxlKCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzVG9VcGRhdGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgZWxlID0gZWxlc1RvVXBkYXRlW2ldO1xuICAgICAgICAgIHZhciByc3R5bGUgPSBlbGUuX3ByaXZhdGUucnN0eWxlO1xuXG4gICAgICAgICAgaWYgKGVsZS5pc05vZGUoKSAmJiAhcnN0eWxlLmNsZWFuQ29ubmVjdGVkKSB7XG4gICAgICAgICAgICBlbnF1ZXVlKGVsZS5jb25uZWN0ZWRFZGdlcygpKTtcbiAgICAgICAgICAgIHJzdHlsZS5jbGVhbkNvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZucykge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBmbnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgZm4gPSBmbnNbX2ldO1xuICAgICAgICAgICAgZm4od2lsbERyYXcsIGVsZXNUb1VwZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgci5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUoZWxlc1RvVXBkYXRlKTtcbiAgICAgICAgZWxlc1RvVXBkYXRlID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByLmZsdXNoUmVuZGVyZWRTdHlsZVF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdXBkYXRlRWxlQ2FsY3ModHJ1ZSk7XG4gICAgfTtcblxuICAgIHIuYmVmb3JlUmVuZGVyKHVwZGF0ZUVsZUNhbGNzLCByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuZWxlQ2FsY3MpO1xuICB9O1xuXG4gIEJScCQ3Lm9uVXBkYXRlRWxlQ2FsY3MgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgZm5zID0gdGhpcy5vblVwZGF0ZUVsZUNhbGNzRm5zID0gdGhpcy5vblVwZGF0ZUVsZUNhbGNzRm5zIHx8IFtdO1xuICAgIGZucy5wdXNoKGZuKTtcbiAgfTtcblxuICBCUnAkNy5yZWNhbGN1bGF0ZVJlbmRlcmVkU3R5bGUgPSBmdW5jdGlvbiAoZWxlcywgdXNlQ2FjaGUpIHtcbiAgICB2YXIgaXNDbGVhbkNvbm5lY3RlZCA9IGZ1bmN0aW9uIGlzQ2xlYW5Db25uZWN0ZWQoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlLl9wcml2YXRlLnJzdHlsZS5jbGVhbkNvbm5lY3RlZDtcbiAgICB9O1xuXG4gICAgdmFyIGVkZ2VzID0gW107XG4gICAgdmFyIG5vZGVzID0gW107IC8vIHRoZSByZW5kZXJlciBjYW4ndCBiZSB1c2VkIGZvciBjYWxjcyB3aGVuIGRlc3Ryb3llZCwgZS5nLiBlbGUuYm91bmRpbmdCb3goKVxuXG4gICAgaWYgKHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyB1c2UgY2FjaGUgYnkgZGVmYXVsdCBmb3IgcGVyZlxuXG5cbiAgICBpZiAodXNlQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXNlQ2FjaGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICB2YXIgX3AgPSBlbGUuX3ByaXZhdGU7XG4gICAgICB2YXIgcnN0eWxlID0gX3AucnN0eWxlOyAvLyBhbiBlZGdlIG1heSBiZSBpbXBsaWNpdGx5IGRpcnR5IGIvYyBvZiBvbmUgb2YgaXRzIGNvbm5lY3RlZCBub2Rlc1xuICAgICAgLy8gKGFuZCBhIHJlcXVlc3QgZm9yIHJlY2FsYyBtYXkgY29tZSBpbiBiZXR3ZWVuIGZyYW1lcylcblxuICAgICAgaWYgKGVsZS5pc0VkZ2UoKSAmJiAoIWlzQ2xlYW5Db25uZWN0ZWQoZWxlLnNvdXJjZSgpKSB8fCAhaXNDbGVhbkNvbm5lY3RlZChlbGUudGFyZ2V0KCkpKSkge1xuICAgICAgICByc3R5bGUuY2xlYW4gPSBmYWxzZTtcbiAgICAgIH0gLy8gb25seSB1cGRhdGUgaWYgZGlydHkgYW5kIGluIGdyYXBoXG5cblxuICAgICAgaWYgKHVzZUNhY2hlICYmIHJzdHlsZS5jbGVhbiB8fCBlbGUucmVtb3ZlZCgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBvbmx5IHVwZGF0ZSBpZiBub3QgZGlzcGxheTogbm9uZVxuXG5cbiAgICAgIGlmIChlbGUucHN0eWxlKCdkaXNwbGF5JykudmFsdWUgPT09ICdub25lJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKF9wLmdyb3VwID09PSAnbm9kZXMnKSB7XG4gICAgICAgIG5vZGVzLnB1c2goZWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVkZ2VzXG4gICAgICAgIGVkZ2VzLnB1c2goZWxlKTtcbiAgICAgIH1cblxuICAgICAgcnN0eWxlLmNsZWFuID0gdHJ1ZTtcbiAgICB9IC8vIHVwZGF0ZSBub2RlIGRhdGEgZnJvbSBwcm9qZWN0aW9uc1xuXG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBub2Rlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgX2VsZSA9IG5vZGVzW19pMl07XG4gICAgICB2YXIgX3AyID0gX2VsZS5fcHJpdmF0ZTtcbiAgICAgIHZhciBfcnN0eWxlID0gX3AyLnJzdHlsZTtcblxuICAgICAgdmFyIHBvcyA9IF9lbGUucG9zaXRpb24oKTtcblxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZU5vZGVMYWJlbFByb2plY3Rpb24oX2VsZSk7XG4gICAgICBfcnN0eWxlLm5vZGVYID0gcG9zLng7XG4gICAgICBfcnN0eWxlLm5vZGVZID0gcG9zLnk7XG4gICAgICBfcnN0eWxlLm5vZGVXID0gX2VsZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgICAgIF9yc3R5bGUubm9kZUggPSBfZWxlLnBzdHlsZSgnaGVpZ2h0JykucGZWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnJlY2FsY3VsYXRlRWRnZVByb2plY3Rpb25zKGVkZ2VzKTsgLy8gdXBkYXRlIGVkZ2UgZGF0YSBmcm9tIHByb2plY3Rpb25zXG5cbiAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBlZGdlcy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICB2YXIgX2VsZTIgPSBlZGdlc1tfaTNdO1xuICAgICAgdmFyIF9wMyA9IF9lbGUyLl9wcml2YXRlO1xuICAgICAgdmFyIF9yc3R5bGUyID0gX3AzLnJzdHlsZTtcbiAgICAgIHZhciBycyA9IF9wMy5yc2NyYXRjaDsgLy8gdXBkYXRlIHJzdHlsZSBwb3NpdGlvbnNcblxuICAgICAgX3JzdHlsZTIuc3JjWCA9IHJzLmFycm93U3RhcnRYO1xuICAgICAgX3JzdHlsZTIuc3JjWSA9IHJzLmFycm93U3RhcnRZO1xuICAgICAgX3JzdHlsZTIudGd0WCA9IHJzLmFycm93RW5kWDtcbiAgICAgIF9yc3R5bGUyLnRndFkgPSBycy5hcnJvd0VuZFk7XG4gICAgICBfcnN0eWxlMi5taWRYID0gcnMubWlkWDtcbiAgICAgIF9yc3R5bGUyLm1pZFkgPSBycy5taWRZO1xuICAgICAgX3JzdHlsZTIubGFiZWxBbmdsZSA9IHJzLmxhYmVsQW5nbGU7XG4gICAgICBfcnN0eWxlMi5zb3VyY2VMYWJlbEFuZ2xlID0gcnMuc291cmNlTGFiZWxBbmdsZTtcbiAgICAgIF9yc3R5bGUyLnRhcmdldExhYmVsQW5nbGUgPSBycy50YXJnZXRMYWJlbEFuZ2xlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgQlJwJDYgPSB7fTtcblxuICBCUnAkNi51cGRhdGVDYWNoZWRHcmFiYmVkRWxlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZWxlcyA9IHRoaXMuY2FjaGVkWlNvcnRlZEVsZXM7XG5cbiAgICBpZiAoIWVsZXMpIHtcbiAgICAgIC8vIGp1c3QgbGV0IHRoaXMgYmUgcmVjYWxjdWxhdGVkIG9uIHRoZSBuZXh0IHogc29ydCB0aWNrXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlcy5kcmFnID0gW107XG4gICAgZWxlcy5ub25kcmFnID0gW107XG4gICAgdmFyIGdyYWJUYXJnZXRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBlbGUgPSBlbGVzW2ldO1xuICAgICAgdmFyIHJzID0gZWxlLl9wcml2YXRlLnJzY3JhdGNoO1xuXG4gICAgICBpZiAoZWxlLmdyYWJiZWQoKSAmJiAhZWxlLmlzUGFyZW50KCkpIHtcbiAgICAgICAgZ3JhYlRhcmdldHMucHVzaChlbGUpO1xuICAgICAgfSBlbHNlIGlmIChycy5pbkRyYWdMYXllcikge1xuICAgICAgICBlbGVzLmRyYWcucHVzaChlbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlcy5ub25kcmFnLnB1c2goZWxlKTtcbiAgICAgIH1cbiAgICB9IC8vIHB1dCB0aGUgZ3JhYiB0YXJnZXQgbm9kZXMgbGFzdCBzbyBpdCdzIG9uIHRvcCBvZiBpdHMgbmVpZ2hib3VyaG9vZFxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYWJUYXJnZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZ3JhYlRhcmdldHNbaV07XG4gICAgICBlbGVzLmRyYWcucHVzaChlbGUpO1xuICAgIH1cbiAgfTtcblxuICBCUnAkNi5pbnZhbGlkYXRlQ2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWNoZWRaU29ydGVkRWxlcyA9IG51bGw7XG4gIH07XG5cbiAgQlJwJDYuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMgPSBmdW5jdGlvbiAoZm9yY2VSZWNhbGMpIHtcbiAgICBpZiAoZm9yY2VSZWNhbGMgfHwgIXRoaXMuY2FjaGVkWlNvcnRlZEVsZXMpIHtcbiAgICAgIHZhciBlbGVzID0gdGhpcy5jeS5tdXRhYmxlRWxlbWVudHMoKS50b0FycmF5KCk7XG4gICAgICBlbGVzLnNvcnQoekluZGV4U29ydCk7XG4gICAgICBlbGVzLmludGVyYWN0aXZlID0gZWxlcy5maWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICByZXR1cm4gZWxlLmludGVyYWN0aXZlKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2FjaGVkWlNvcnRlZEVsZXMgPSBlbGVzO1xuICAgICAgdGhpcy51cGRhdGVDYWNoZWRHcmFiYmVkRWxlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVzID0gdGhpcy5jYWNoZWRaU29ydGVkRWxlcztcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlcztcbiAgfTtcblxuICB2YXIgQlJwJDUgPSB7fTtcbiAgW0JScCRlLCBCUnAkZCwgQlJwJGMsIEJScCRiLCBCUnAkYSwgQlJwJDksIEJScCQ4LCBCUnAkNywgQlJwJDZdLmZvckVhY2goZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgZXh0ZW5kKEJScCQ1LCBwcm9wcyk7XG4gIH0pO1xuXG4gIHZhciBCUnAkNCA9IHt9O1xuXG4gIEJScCQ0LmdldENhY2hlZEltYWdlID0gZnVuY3Rpb24gKHVybCwgY3Jvc3NPcmlnaW4sIG9uTG9hZCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSA9IHIuaW1hZ2VDYWNoZSB8fCB7fTtcbiAgICB2YXIgY2FjaGUgPSBpbWFnZUNhY2hlW3VybF07XG5cbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgIGlmICghY2FjaGUuaW1hZ2UuY29tcGxldGUpIHtcbiAgICAgICAgY2FjaGUuaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uTG9hZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWNoZS5pbWFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUgPSBpbWFnZUNhY2hlW3VybF0gPSBpbWFnZUNhY2hlW3VybF0gfHwge307XG4gICAgICB2YXIgaW1hZ2UgPSBjYWNoZS5pbWFnZSA9IG5ldyBJbWFnZSgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICAgIGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQpO1xuICAgICAgaW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGltYWdlLmVycm9yID0gdHJ1ZTtcbiAgICAgIH0pOyAvLyAjMTU4MiBzYWZhcmkgZG9lc24ndCBsb2FkIGRhdGEgdXJpcyB3aXRoIGNyb3NzT3JpZ2luIHByb3Blcmx5XG4gICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzOTc4XG5cbiAgICAgIHZhciBkYXRhVXJpUHJlZml4ID0gJ2RhdGE6JztcbiAgICAgIHZhciBpc0RhdGFVcmkgPSB1cmwuc3Vic3RyaW5nKDAsIGRhdGFVcmlQcmVmaXgubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBkYXRhVXJpUHJlZml4O1xuXG4gICAgICBpZiAoIWlzRGF0YVVyaSkge1xuICAgICAgICAvLyBpZiBjcm9zc29yaWdpbiBpcyAnbnVsbCcoc3RyaW5naWZpZWQpLCB0aGVuIG1hbnVhbGx5IHNldCBpdCB0byBudWxsIFxuICAgICAgICBjcm9zc09yaWdpbiA9IGNyb3NzT3JpZ2luID09PSAnbnVsbCcgPyBudWxsIDogY3Jvc3NPcmlnaW47XG4gICAgICAgIGltYWdlLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW47IC8vIHByZXZlbnQgdGFpbnRlZCBjYW52YXNcbiAgICAgIH1cblxuICAgICAgaW1hZ2Uuc3JjID0gdXJsO1xuICAgICAgcmV0dXJuIGltYWdlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgQlJwJDMgPSB7fTtcbiAgLyogZ2xvYmFsIGRvY3VtZW50LCB3aW5kb3csIFJlc2l6ZU9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyICovXG5cbiAgQlJwJDMucmVnaXN0ZXJCaW5kaW5nID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIGhhbmRsZXIsIHVzZUNhcHR1cmUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYXJndW1lbnRzLCBbMV0pOyAvLyBjb3B5XG5cbiAgICB2YXIgYiA9IHRoaXMuYmluZGVyKHRhcmdldCk7XG4gICAgcmV0dXJuIGIub24uYXBwbHkoYiwgYXJncyk7XG4gIH07XG5cbiAgQlJwJDMuYmluZGVyID0gZnVuY3Rpb24gKHRndCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgY29udGFpbmVyV2luZG93ID0gci5jeS53aW5kb3coKTtcbiAgICB2YXIgdGd0SXNEb20gPSB0Z3QgPT09IGNvbnRhaW5lcldpbmRvdyB8fCB0Z3QgPT09IGNvbnRhaW5lcldpbmRvdy5kb2N1bWVudCB8fCB0Z3QgPT09IGNvbnRhaW5lcldpbmRvdy5kb2N1bWVudC5ib2R5IHx8IGRvbUVsZW1lbnQodGd0KTtcblxuICAgIGlmIChyLnN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9PSBudWxsKSB7XG4gICAgICAvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL0V2ZW50TGlzdGVuZXJPcHRpb25zL2Jsb2IvZ2gtcGFnZXMvZXhwbGFpbmVyLm1kI2ZlYXR1cmUtZGV0ZWN0aW9uXG4gICAgICB2YXIgc3VwcG9ydHNQYXNzaXZlID0gZmFsc2U7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBvcHRzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgIHN1cHBvcnRzUGFzc2l2ZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb250YWluZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG51bGwsIG9wdHMpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7Ly8gbm90IHN1cHBvcnRlZFxuICAgICAgfVxuXG4gICAgICByLnN1cHBvcnRzUGFzc2l2ZUV2ZW50cyA9IHN1cHBvcnRzUGFzc2l2ZTtcbiAgICB9XG5cbiAgICB2YXIgb24gPSBmdW5jdGlvbiBvbihldmVudCwgaGFuZGxlciwgdXNlQ2FwdHVyZSkge1xuICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgICBpZiAodGd0SXNEb20gJiYgci5zdXBwb3J0c1Bhc3NpdmVFdmVudHMpIHtcbiAgICAgICAgLy8gcmVwbGFjZSB1c2VDYXB0dXJlIHcvIG9wdHMgb2JqXG4gICAgICAgIGFyZ3NbMl0gPSB7XG4gICAgICAgICAgY2FwdHVyZTogdXNlQ2FwdHVyZSAhPSBudWxsID8gdXNlQ2FwdHVyZSA6IGZhbHNlLFxuICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICAgIG9uY2U6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHIuYmluZGluZ3MucHVzaCh7XG4gICAgICAgIHRhcmdldDogdGd0LFxuICAgICAgICBhcmdzOiBhcmdzXG4gICAgICB9KTtcbiAgICAgICh0Z3QuYWRkRXZlbnRMaXN0ZW5lciB8fCB0Z3Qub24pLmFwcGx5KHRndCwgYXJncyk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9uOiBvbixcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IG9uLFxuICAgICAgYWRkTGlzdGVuZXI6IG9uLFxuICAgICAgYmluZDogb25cbiAgICB9O1xuICB9O1xuXG4gIEJScCQzLm5vZGVJc0RyYWdnYWJsZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5pc05vZGUoKSAmJiAhbm9kZS5sb2NrZWQoKSAmJiBub2RlLmdyYWJiYWJsZSgpO1xuICB9O1xuXG4gIEJScCQzLm5vZGVJc0dyYWJiYWJsZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZUlzRHJhZ2dhYmxlKG5vZGUpICYmIG5vZGUuaW50ZXJhY3RpdmUoKTtcbiAgfTtcblxuICBCUnAkMy5sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgY29udGFpbmVyV2luZG93ID0gci5jeS53aW5kb3coKTtcblxuICAgIHZhciBpc1NlbGVjdGVkID0gZnVuY3Rpb24gaXNTZWxlY3RlZChlbGUpIHtcbiAgICAgIHJldHVybiBlbGUuc2VsZWN0ZWQoKTtcbiAgICB9O1xuXG4gICAgdmFyIHRyaWdnZXJFdmVudHMgPSBmdW5jdGlvbiB0cmlnZ2VyRXZlbnRzKHRhcmdldCwgbmFtZXMsIGUsIHBvc2l0aW9uKSB7XG4gICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHtcbiAgICAgICAgdGFyZ2V0ID0gci5jeTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICB0YXJnZXQuZW1pdCh7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICB0eXBlOiBuYW1lLFxuICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGlzTXVsdFNlbEtleURvd24gPSBmdW5jdGlvbiBpc011bHRTZWxLZXlEb3duKGUpIHtcbiAgICAgIHJldHVybiBlLnNoaWZ0S2V5IHx8IGUubWV0YUtleSB8fCBlLmN0cmxLZXk7IC8vIG1heWJlIGUuYWx0S2V5XG4gICAgfTtcblxuICAgIHZhciBhbGxvd1Bhbm5pbmdQYXNzdGhyb3VnaCA9IGZ1bmN0aW9uIGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKGRvd24sIGRvd25zKSB7XG4gICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IHRydWU7XG5cbiAgICAgIGlmIChyLmN5Lmhhc0NvbXBvdW5kTm9kZXMoKSAmJiBkb3duICYmIGRvd24ucGFubmFibGUoKSkge1xuICAgICAgICAvLyBhIGdyYWJiYWJsZSBjb21wb3VuZCBub2RlIGJlbG93IHRoZSBlbGUgPT4gbm8gcGFzc3Rocm91Z2ggcGFubmluZ1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgZG93bnMgJiYgaSA8IGRvd25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGRvd24gPSBkb3duc1tpXTsgLy9pZiBhbnkgcGFyZW50IG5vZGUgaW4gZXZlbnQgaGllcmFyY2h5IGlzbid0IHBhbm5hYmxlLCByZWplY3QgcGFzc3Rocm91Z2hcblxuICAgICAgICAgIGlmIChkb3duLmlzTm9kZSgpICYmIGRvd24uaXNQYXJlbnQoKSAmJiAhZG93bi5wYW5uYWJsZSgpKSB7XG4gICAgICAgICAgICBhbGxvd1Bhc3N0aHJvdWdoID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG93UGFzc3Rocm91Z2ggPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWxsb3dQYXNzdGhyb3VnaDtcbiAgICB9O1xuXG4gICAgdmFyIHNldEdyYWJiZWQgPSBmdW5jdGlvbiBzZXRHcmFiYmVkKGVsZSkge1xuICAgICAgZWxlWzBdLl9wcml2YXRlLmdyYWJiZWQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgc2V0RnJlZWQgPSBmdW5jdGlvbiBzZXRGcmVlZChlbGUpIHtcbiAgICAgIGVsZVswXS5fcHJpdmF0ZS5ncmFiYmVkID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHZhciBzZXRJbkRyYWdMYXllciA9IGZ1bmN0aW9uIHNldEluRHJhZ0xheWVyKGVsZSkge1xuICAgICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmluRHJhZ0xheWVyID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHNldE91dERyYWdMYXllciA9IGZ1bmN0aW9uIHNldE91dERyYWdMYXllcihlbGUpIHtcbiAgICAgIGVsZVswXS5fcHJpdmF0ZS5yc2NyYXRjaC5pbkRyYWdMYXllciA9IGZhbHNlO1xuICAgIH07XG5cbiAgICB2YXIgc2V0R3JhYlRhcmdldCA9IGZ1bmN0aW9uIHNldEdyYWJUYXJnZXQoZWxlKSB7XG4gICAgICBlbGVbMF0uX3ByaXZhdGUucnNjcmF0Y2guaXNHcmFiVGFyZ2V0ID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdmFyIHJlbW92ZUdyYWJUYXJnZXQgPSBmdW5jdGlvbiByZW1vdmVHcmFiVGFyZ2V0KGVsZSkge1xuICAgICAgZWxlWzBdLl9wcml2YXRlLnJzY3JhdGNoLmlzR3JhYlRhcmdldCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICB2YXIgYWRkVG9EcmFnTGlzdCA9IGZ1bmN0aW9uIGFkZFRvRHJhZ0xpc3QoZWxlLCBvcHRzKSB7XG4gICAgICB2YXIgbGlzdCA9IG9wdHMuYWRkVG9MaXN0O1xuICAgICAgdmFyIGxpc3RIYXNFbGUgPSBsaXN0LmhhcyhlbGUpO1xuXG4gICAgICBpZiAoIWxpc3RIYXNFbGUgJiYgZWxlLmdyYWJiYWJsZSgpICYmICFlbGUubG9ja2VkKCkpIHtcbiAgICAgICAgbGlzdC5tZXJnZShlbGUpO1xuICAgICAgICBzZXRHcmFiYmVkKGVsZSk7XG4gICAgICB9XG4gICAgfTsgLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBjaGlsZCBub2RlcyBhbmQgaW5uZXIgZWRnZXNcbiAgICAvLyBvZiBhIGNvbXBvdW5kIG5vZGUgdG8gYmUgZHJhZ2dlZCBhcyB3ZWxsIGFzIHRoZSBncmFiYmVkIGFuZCBzZWxlY3RlZCBub2Rlc1xuXG5cbiAgICB2YXIgYWRkRGVzY2VuZGFudHNUb0RyYWcgPSBmdW5jdGlvbiBhZGREZXNjZW5kYW50c1RvRHJhZyhub2RlLCBvcHRzKSB7XG4gICAgICBpZiAoIW5vZGUuY3koKS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5pbkRyYWdMYXllciA9PSBudWxsICYmIG9wdHMuYWRkVG9MaXN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBub3RoaW5nIHRvIGRvXG5cblxuICAgICAgdmFyIGlubmVyTm9kZXMgPSBub2RlLmRlc2NlbmRhbnRzKCk7XG5cbiAgICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICAgIGlubmVyTm9kZXMuZm9yRWFjaChzZXRJbkRyYWdMYXllcik7XG4gICAgICAgIGlubmVyTm9kZXMuY29ubmVjdGVkRWRnZXMoKS5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuYWRkVG9MaXN0KSB7XG4gICAgICAgIGFkZFRvRHJhZ0xpc3QoaW5uZXJOb2Rlcywgb3B0cyk7XG4gICAgICB9XG4gICAgfTsgLy8gYWRkcyB0aGUgZ2l2ZW4gbm9kZXMgYW5kIGl0cyBuZWlnaGJvdXJob29kIHRvIHRoZSBkcmFnIGxheWVyXG5cblxuICAgIHZhciBhZGROb2Rlc1RvRHJhZyA9IGZ1bmN0aW9uIGFkZE5vZGVzVG9EcmFnKG5vZGVzLCBvcHRzKSB7XG4gICAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gbm9kZXMuY3koKS5oYXNDb21wb3VuZE5vZGVzKCk7XG5cbiAgICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgICBub2Rlcy5uZWlnaGJvcmhvb2QoKS5zdGRGaWx0ZXIoZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIHJldHVybiAhaGFzQ29tcG91bmROb2RlcyB8fCBlbGUuaXNFZGdlKCk7XG4gICAgICAgIH0pLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5hZGRUb0xpc3QpIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgYWRkVG9EcmFnTGlzdChlbGUsIG9wdHMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgYWRkRGVzY2VuZGFudHNUb0RyYWcobm9kZXMsIG9wdHMpOyAvLyBhbHdheXMgYWRkIHRvIGRyYWdcbiAgICAgIC8vIGFsc28gYWRkIG5vZGVzIGFuZCBlZGdlcyByZWxhdGVkIHRvIHRoZSB0b3Btb3N0IGFuY2VzdG9yXG5cbiAgICAgIHVwZGF0ZUFuY2VzdG9yc0luRHJhZ0xheWVyKG5vZGVzLCB7XG4gICAgICAgIGluRHJhZ0xheWVyOiBvcHRzLmluRHJhZ0xheWVyXG4gICAgICB9KTtcbiAgICAgIHIudXBkYXRlQ2FjaGVkR3JhYmJlZEVsZXMoKTtcbiAgICB9O1xuXG4gICAgdmFyIGFkZE5vZGVUb0RyYWcgPSBhZGROb2Rlc1RvRHJhZztcblxuICAgIHZhciBmcmVlRHJhZ2dlZEVsZW1lbnRzID0gZnVuY3Rpb24gZnJlZURyYWdnZWRFbGVtZW50cyhncmFiYmVkRWxlcykge1xuICAgICAgaWYgKCFncmFiYmVkRWxlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGp1c3QgZ28gb3ZlciBhbGwgZWxlbWVudHMgcmF0aGVyIHRoYW4gZG9pbmcgYSBidW5jaCBvZiAocG9zc2libHkgZXhwZW5zaXZlKSB0cmF2ZXJzYWxzXG5cblxuICAgICAgci5nZXRDYWNoZWRaU29ydGVkRWxlcygpLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICBzZXRGcmVlZChlbGUpO1xuICAgICAgICBzZXRPdXREcmFnTGF5ZXIoZWxlKTtcbiAgICAgICAgcmVtb3ZlR3JhYlRhcmdldChlbGUpO1xuICAgICAgfSk7XG4gICAgICByLnVwZGF0ZUNhY2hlZEdyYWJiZWRFbGVzKCk7XG4gICAgfTsgLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGljaCBhbmNlc3RvciBub2RlcyBhbmQgZWRnZXMgc2hvdWxkIGdvXG4gICAgLy8gdG8gdGhlIGRyYWcgbGF5ZXIgKG9yIHNob3VsZCBiZSByZW1vdmVkIGZyb20gZHJhZyBsYXllcikuXG5cblxuICAgIHZhciB1cGRhdGVBbmNlc3RvcnNJbkRyYWdMYXllciA9IGZ1bmN0aW9uIHVwZGF0ZUFuY2VzdG9yc0luRHJhZ0xheWVyKG5vZGUsIG9wdHMpIHtcbiAgICAgIGlmIChvcHRzLmluRHJhZ0xheWVyID09IG51bGwgJiYgb3B0cy5hZGRUb0xpc3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIG5vdGhpbmcgdG8gZG9cblxuXG4gICAgICBpZiAoIW5vZGUuY3koKS5oYXNDb21wb3VuZE5vZGVzKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBmaW5kIHRvcC1sZXZlbCBwYXJlbnRcblxuXG4gICAgICB2YXIgcGFyZW50ID0gbm9kZS5hbmNlc3RvcnMoKS5vcnBoYW5zKCk7IC8vIG5vIHBhcmVudCBub2RlOiBubyBub2RlcyB0byBhZGQgdG8gdGhlIGRyYWcgbGF5ZXJcblxuICAgICAgaWYgKHBhcmVudC5zYW1lKG5vZGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG5vZGVzID0gcGFyZW50LmRlc2NlbmRhbnRzKCkuc3Bhd25TZWxmKCkubWVyZ2UocGFyZW50KS51bm1lcmdlKG5vZGUpLnVubWVyZ2Uobm9kZS5kZXNjZW5kYW50cygpKTtcbiAgICAgIHZhciBlZGdlcyA9IG5vZGVzLmNvbm5lY3RlZEVkZ2VzKCk7XG5cbiAgICAgIGlmIChvcHRzLmluRHJhZ0xheWVyKSB7XG4gICAgICAgIGVkZ2VzLmZvckVhY2goc2V0SW5EcmFnTGF5ZXIpO1xuICAgICAgICBub2Rlcy5mb3JFYWNoKHNldEluRHJhZ0xheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMuYWRkVG9MaXN0KSB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgIGFkZFRvRHJhZ0xpc3QoZWxlLCBvcHRzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBibHVyQWN0aXZlRG9tRWxlbWVudCA9IGZ1bmN0aW9uIGJsdXJBY3RpdmVEb21FbGVtZW50KCkge1xuICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT0gbnVsbCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIgIT0gbnVsbCkge1xuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGhhdmVNdXRhdGlvbnNBcGkgPSB0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgdmFyIGhhdmVSZXNpemVPYnNlcnZlckFwaSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7IC8vIHdhdGNoIGZvciB3aGVuIHRoZSBjeSBjb250YWluZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb21cblxuICAgIGlmIChoYXZlTXV0YXRpb25zQXBpKSB7XG4gICAgICByLnJlbW92ZU9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dG5zKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtdXRucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBtdXRuID0gbXV0bnNbaV07XG4gICAgICAgICAgdmFyIHJOb2RlcyA9IG11dG4ucmVtb3ZlZE5vZGVzO1xuXG4gICAgICAgICAgaWYgKHJOb2Rlcykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByTm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgdmFyIHJOb2RlID0gck5vZGVzW2pdO1xuXG4gICAgICAgICAgICAgIGlmIChyTm9kZSA9PT0gci5jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICByLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChyLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICAgIHIucmVtb3ZlT2JzZXJ2ZXIub2JzZXJ2ZShyLmNvbnRhaW5lci5wYXJlbnROb2RlLCB7XG4gICAgICAgICAgY2hpbGRMaXN0OiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgICByLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBvblJlc2l6ZSA9IGRlYm91bmNlXzEoZnVuY3Rpb24gKCkge1xuICAgICAgci5jeS5yZXNpemUoKTtcbiAgICB9LCAxMDApO1xuXG4gICAgaWYgKGhhdmVNdXRhdGlvbnNBcGkpIHtcbiAgICAgIHIuc3R5bGVPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uUmVzaXplKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgICByLnN0eWxlT2JzZXJ2ZXIub2JzZXJ2ZShyLmNvbnRhaW5lciwge1xuICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlXG4gICAgICB9KTtcbiAgICB9IC8vIGF1dG8gcmVzaXplXG5cblxuICAgIHIucmVnaXN0ZXJCaW5kaW5nKGNvbnRhaW5lcldpbmRvdywgJ3Jlc2l6ZScsIG9uUmVzaXplKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgaWYgKGhhdmVSZXNpemVPYnNlcnZlckFwaSkge1xuICAgICAgci5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihvblJlc2l6ZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgICAgci5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHIuY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZm9yRWFjaFVwID0gZnVuY3Rpb24gZm9yRWFjaFVwKGRvbUVsZSwgZm4pIHtcbiAgICAgIHdoaWxlIChkb21FbGUgIT0gbnVsbCkge1xuICAgICAgICBmbihkb21FbGUpO1xuICAgICAgICBkb21FbGUgPSBkb21FbGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGludmFsaWRhdGVDb29yZHMgPSBmdW5jdGlvbiBpbnZhbGlkYXRlQ29vcmRzKCkge1xuICAgICAgci5pbnZhbGlkYXRlQ29udGFpbmVyQ2xpZW50Q29vcmRzQ2FjaGUoKTtcbiAgICB9O1xuXG4gICAgZm9yRWFjaFVwKHIuY29udGFpbmVyLCBmdW5jdGlvbiAoZG9tRWxlKSB7XG4gICAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICd0cmFuc2l0aW9uZW5kJywgaW52YWxpZGF0ZUNvb3Jkcyk7XG4gICAgICByLnJlZ2lzdGVyQmluZGluZyhkb21FbGUsICdhbmltYXRpb25lbmQnLCBpbnZhbGlkYXRlQ29vcmRzKTtcbiAgICAgIHIucmVnaXN0ZXJCaW5kaW5nKGRvbUVsZSwgJ3Njcm9sbCcsIGludmFsaWRhdGVDb29yZHMpO1xuICAgIH0pOyAvLyBzdG9wIHJpZ2h0IGNsaWNrIG1lbnUgZnJvbSBhcHBlYXJpbmcgb24gY3lcblxuICAgIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnY29udGV4dG1lbnUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdmFyIGluQm94U2VsZWN0aW9uID0gZnVuY3Rpb24gaW5Cb3hTZWxlY3Rpb24oKSB7XG4gICAgICByZXR1cm4gci5zZWxlY3Rpb25bNF0gIT09IDA7XG4gICAgfTtcblxuICAgIHZhciBldmVudEluQ29udGFpbmVyID0gZnVuY3Rpb24gZXZlbnRJbkNvbnRhaW5lcihlKSB7XG4gICAgICAvLyBzYXZlIGN5Y2xlcyBpZiBtb3VzZSBldmVudHMgYXJlbid0IHRvIGJlIGNhcHR1cmVkXG4gICAgICB2YXIgY29udGFpbmVyUGFnZUNvb3JkcyA9IHIuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgICAgdmFyIHggPSBjb250YWluZXJQYWdlQ29vcmRzWzBdO1xuICAgICAgdmFyIHkgPSBjb250YWluZXJQYWdlQ29vcmRzWzFdO1xuICAgICAgdmFyIHdpZHRoID0gY29udGFpbmVyUGFnZUNvb3Jkc1syXTtcbiAgICAgIHZhciBoZWlnaHQgPSBjb250YWluZXJQYWdlQ29vcmRzWzNdO1xuICAgICAgdmFyIHBvc2l0aW9ucyA9IGUudG91Y2hlcyA/IGUudG91Y2hlcyA6IFtlXTtcbiAgICAgIHZhciBhdExlYXN0T25lUG9zSW5zaWRlID0gZmFsc2U7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwID0gcG9zaXRpb25zW2ldO1xuXG4gICAgICAgIGlmICh4IDw9IHAuY2xpZW50WCAmJiBwLmNsaWVudFggPD0geCArIHdpZHRoICYmIHkgPD0gcC5jbGllbnRZICYmIHAuY2xpZW50WSA8PSB5ICsgaGVpZ2h0KSB7XG4gICAgICAgICAgYXRMZWFzdE9uZVBvc0luc2lkZSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFhdExlYXN0T25lUG9zSW5zaWRlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRhaW5lciA9IHIuY29udGFpbmVyO1xuICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgdmFyIHRQYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgIHZhciBjb250YWluZXJJc1RhcmdldCA9IGZhbHNlO1xuXG4gICAgICB3aGlsZSAodFBhcmVudCkge1xuICAgICAgICBpZiAodFBhcmVudCA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgICAgY29udGFpbmVySXNUYXJnZXQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdFBhcmVudCA9IHRQYXJlbnQucGFyZW50Tm9kZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFjb250YWluZXJJc1RhcmdldCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IC8vIGlmIHRhcmdldCBpcyBvdXRpc2RlIGN5IGNvbnRhaW5lciwgdGhlbiB0aGlzIGV2ZW50IGlzIG5vdCBmb3IgdXNcblxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9OyAvLyBQcmltYXJ5IGtleVxuXG5cbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ21vdXNlZG93bicsIGZ1bmN0aW9uIG1vdXNlZG93bkhhbmRsZXIoZSkge1xuICAgICAgaWYgKCFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgYmx1ckFjdGl2ZURvbUVsZW1lbnQoKTtcbiAgICAgIHIuaG92ZXJEYXRhLmNhcHR1cmUgPSB0cnVlO1xuICAgICAgci5ob3ZlckRhdGEud2hpY2ggPSBlLndoaWNoO1xuICAgICAgdmFyIGN5ID0gci5jeTtcbiAgICAgIHZhciBncG9zID0gW2UuY2xpZW50WCwgZS5jbGllbnRZXTtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZ3Bvc1swXSwgZ3Bvc1sxXSk7XG4gICAgICB2YXIgc2VsZWN0ID0gci5zZWxlY3Rpb247XG4gICAgICB2YXIgbmVhcnMgPSByLmZpbmROZWFyZXN0RWxlbWVudHMocG9zWzBdLCBwb3NbMV0sIHRydWUsIGZhbHNlKTtcbiAgICAgIHZhciBuZWFyID0gbmVhcnNbMF07XG4gICAgICB2YXIgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cztcbiAgICAgIHIuaG92ZXJEYXRhLm1kb3duUG9zID0gcG9zO1xuICAgICAgci5ob3ZlckRhdGEubWRvd25HUG9zID0gZ3BvcztcblxuICAgICAgdmFyIGNoZWNrRm9yVGFwaG9sZCA9IGZ1bmN0aW9uIGNoZWNrRm9yVGFwaG9sZCgpIHtcbiAgICAgICAgci5ob3ZlckRhdGEudGFwaG9sZENhbmNlbGxlZCA9IGZhbHNlO1xuICAgICAgICBjbGVhclRpbWVvdXQoci5ob3ZlckRhdGEudGFwaG9sZFRpbWVvdXQpO1xuICAgICAgICByLmhvdmVyRGF0YS50YXBob2xkVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBlbGUgPSByLmhvdmVyRGF0YS5kb3duO1xuXG4gICAgICAgICAgICBpZiAoZWxlKSB7XG4gICAgICAgICAgICAgIGVsZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd0YXBob2xkJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhcGhvbGQnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgci50YXBob2xkRHVyYXRpb24pO1xuICAgICAgfTsgLy8gUmlnaHQgY2xpY2sgYnV0dG9uXG5cblxuICAgICAgaWYgKGUud2hpY2ggPT0gMykge1xuICAgICAgICByLmhvdmVyRGF0YS5jeHRTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgdmFyIGN4dEV2dCA9IHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobmVhcikge1xuICAgICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgICBuZWFyLmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgICByLmhvdmVyRGF0YS5kb3duID0gbmVhcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICByLmhvdmVyRGF0YS5kb3duVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICByLmhvdmVyRGF0YS5jeHREcmFnZ2VkID0gZmFsc2U7IC8vIFByaW1hcnkgYnV0dG9uXG4gICAgICB9IGVsc2UgaWYgKGUud2hpY2ggPT0gMSkge1xuICAgICAgICBpZiAobmVhcikge1xuICAgICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgfSAvLyBFbGVtZW50IGRyYWdnaW5nXG5cblxuICAgICAgICB7XG4gICAgICAgICAgLy8gSWYgc29tZXRoaW5nIGlzIHVuZGVyIHRoZSBjdXJzb3IgYW5kIGl0IGlzIGRyYWdnYWJsZSwgcHJlcGFyZSB0byBncmFiIGl0XG4gICAgICAgICAgaWYgKG5lYXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHIubm9kZUlzR3JhYmJhYmxlKG5lYXIpKSB7XG4gICAgICAgICAgICAgIHZhciBtYWtlRXZlbnQgPSBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICB2YXIgdHJpZ2dlckdyYWIgPSBmdW5jdGlvbiB0cmlnZ2VyR3JhYihlbGUpIHtcbiAgICAgICAgICAgICAgICBlbGUuZW1pdChtYWtlRXZlbnQoJ2dyYWInKSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc2V0R3JhYlRhcmdldChuZWFyKTtcblxuICAgICAgICAgICAgICBpZiAoIW5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgYWRkTm9kZVRvRHJhZyhuZWFyLCB7XG4gICAgICAgICAgICAgICAgICBhZGRUb0xpc3Q6IGRyYWdnZWRFbGVtZW50c1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG5lYXIuZW1pdChtYWtlRXZlbnQoJ2dyYWJvbicpKS5lbWl0KG1ha2VFdmVudCgnZ3JhYicpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkcmFnZ2VkRWxlbWVudHMgPSByLmRyYWdEYXRhLnBvc3NpYmxlRHJhZ0VsZW1lbnRzID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gY3kuJChmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZWxlLmlzTm9kZSgpICYmIGVsZS5zZWxlY3RlZCgpICYmIHIubm9kZUlzR3JhYmJhYmxlKGVsZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYWRkTm9kZXNUb0RyYWcoc2VsZWN0ZWROb2Rlcywge1xuICAgICAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlbWVudHNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBuZWFyLmVtaXQobWFrZUV2ZW50KCdncmFib24nKSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKHRyaWdnZXJHcmFiKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmhvdmVyRGF0YS5kb3duID0gbmVhcjtcbiAgICAgICAgICByLmhvdmVyRGF0YS5kb3ducyA9IG5lYXJzO1xuICAgICAgICAgIHIuaG92ZXJEYXRhLmRvd25UaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNlZG93bicsICd0YXBzdGFydCcsICd2bW91c2Vkb3duJ10sIGUsIHtcbiAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChuZWFyID09IG51bGwpIHtcbiAgICAgICAgICBzZWxlY3RbNF0gPSAxO1xuICAgICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHtcbiAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICAgIH07XG4gICAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgICByLnJlZHJhdygpO1xuICAgICAgICB9IGVsc2UgaWYgKG5lYXIucGFubmFibGUoKSkge1xuICAgICAgICAgIHNlbGVjdFs0XSA9IDE7IC8vIGZvciBmdXR1cmUgcGFuXG4gICAgICAgIH1cblxuICAgICAgICBjaGVja0ZvclRhcGhvbGQoKTtcbiAgICAgIH0gLy8gSW5pdGlhbGl6ZSBzZWxlY3Rpb24gYm94IGNvb3JkaW5hdGVzXG5cblxuICAgICAgc2VsZWN0WzBdID0gc2VsZWN0WzJdID0gcG9zWzBdO1xuICAgICAgc2VsZWN0WzFdID0gc2VsZWN0WzNdID0gcG9zWzFdO1xuICAgIH0sIGZhbHNlKTtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhjb250YWluZXJXaW5kb3csICdtb3VzZW1vdmUnLCBmdW5jdGlvbiBtb3VzZW1vdmVIYW5kbGVyKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgIHZhciBjYXB0dXJlID0gci5ob3ZlckRhdGEuY2FwdHVyZTtcblxuICAgICAgaWYgKCFjYXB0dXJlICYmICFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHByZXZlbnREZWZhdWx0ID0gZmFsc2U7XG4gICAgICB2YXIgY3kgPSByLmN5O1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICB2YXIgZ3BvcyA9IFtlLmNsaWVudFgsIGUuY2xpZW50WV07XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGdwb3NbMF0sIGdwb3NbMV0pO1xuICAgICAgdmFyIG1kb3duUG9zID0gci5ob3ZlckRhdGEubWRvd25Qb3M7XG4gICAgICB2YXIgbWRvd25HUG9zID0gci5ob3ZlckRhdGEubWRvd25HUG9zO1xuICAgICAgdmFyIHNlbGVjdCA9IHIuc2VsZWN0aW9uO1xuICAgICAgdmFyIG5lYXIgPSBudWxsO1xuXG4gICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyAmJiAhci5ob3ZlckRhdGEuZHJhZ2dpbmcgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZykge1xuICAgICAgICBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQocG9zWzBdLCBwb3NbMV0sIHRydWUsIGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGxhc3QgPSByLmhvdmVyRGF0YS5sYXN0O1xuICAgICAgdmFyIGRvd24gPSByLmhvdmVyRGF0YS5kb3duO1xuICAgICAgdmFyIGRpc3AgPSBbcG9zWzBdIC0gc2VsZWN0WzJdLCBwb3NbMV0gLSBzZWxlY3RbM11dO1xuICAgICAgdmFyIGRyYWdnZWRFbGVtZW50cyA9IHIuZHJhZ0RhdGEucG9zc2libGVEcmFnRWxlbWVudHM7XG4gICAgICB2YXIgaXNPdmVyVGhyZXNob2xkRHJhZztcblxuICAgICAgaWYgKG1kb3duR1Bvcykge1xuICAgICAgICB2YXIgZHggPSBncG9zWzBdIC0gbWRvd25HUG9zWzBdO1xuICAgICAgICB2YXIgZHgyID0gZHggKiBkeDtcbiAgICAgICAgdmFyIGR5ID0gZ3Bvc1sxXSAtIG1kb3duR1Bvc1sxXTtcbiAgICAgICAgdmFyIGR5MiA9IGR5ICogZHk7XG4gICAgICAgIHZhciBkaXN0MiA9IGR4MiArIGR5MjtcbiAgICAgICAgci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyA9IGlzT3ZlclRocmVzaG9sZERyYWcgPSBkaXN0MiA+PSByLmRlc2t0b3BUYXBUaHJlc2hvbGQyO1xuICAgICAgfVxuXG4gICAgICB2YXIgbXVsdFNlbEtleURvd24gPSBpc011bHRTZWxLZXlEb3duKGUpO1xuXG4gICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICByLmhvdmVyRGF0YS50YXBob2xkQ2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHVwZGF0ZURyYWdEZWx0YSA9IGZ1bmN0aW9uIHVwZGF0ZURyYWdEZWx0YSgpIHtcbiAgICAgICAgdmFyIGRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSA9IHIuaG92ZXJEYXRhLmRyYWdEZWx0YSB8fCBbXTtcblxuICAgICAgICBpZiAoZHJhZ0RlbHRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMF0pO1xuICAgICAgICAgIGRyYWdEZWx0YS5wdXNoKGRpc3BbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRyYWdEZWx0YVswXSArPSBkaXNwWzBdO1xuICAgICAgICAgIGRyYWdEZWx0YVsxXSArPSBkaXNwWzFdO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsnbW91c2Vtb3ZlJywgJ3Ztb3VzZW1vdmUnLCAndGFwZHJhZyddLCBlLCB7XG4gICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgeTogcG9zWzFdXG4gICAgICB9KTtcblxuICAgICAgdmFyIGdvSW50b0JveE1vZGUgPSBmdW5jdGlvbiBnb0ludG9Cb3hNb2RlKCkge1xuICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKCFyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgICBjeS5lbWl0KHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICB0eXBlOiAnYm94c3RhcnQnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdFs0XSA9IDE7XG4gICAgICAgIHIuaG92ZXJEYXRhLnNlbGVjdGluZyA9IHRydWU7XG4gICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICB9OyAvLyB0cmlnZ2VyIGNvbnRleHQgZHJhZyBpZiBybW91c2UgZG93blxuXG5cbiAgICAgIGlmIChyLmhvdmVyRGF0YS53aGljaCA9PT0gMykge1xuICAgICAgICAvLyBidXQgb25seSBpZiBvdmVyIHRocmVzaG9sZFxuICAgICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dGRyYWcnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICAgIGRvd24uZW1pdChjeHRFdnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmN4dE92ZXIgfHwgbmVhciAhPT0gci5ob3ZlckRhdGEuY3h0T3Zlcikge1xuICAgICAgICAgICAgaWYgKHIuaG92ZXJEYXRhLmN4dE92ZXIpIHtcbiAgICAgICAgICAgICAgci5ob3ZlckRhdGEuY3h0T3Zlci5lbWl0KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjeHRkcmFnb3V0JyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgci5ob3ZlckRhdGEuY3h0T3ZlciA9IG5lYXI7XG5cbiAgICAgICAgICAgIGlmIChuZWFyKSB7XG4gICAgICAgICAgICAgIG5lYXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnY3h0ZHJhZ292ZXInLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBDaGVjayBpZiB3ZSBhcmUgZHJhZyBwYW5uaW5nIHRoZSBlbnRpcmUgZ3JhcGhcblxuICAgICAgfSBlbHNlIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykge1xuICAgICAgICBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG5cbiAgICAgICAgaWYgKGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICB2YXIgZGVsdGFQO1xuXG4gICAgICAgICAgaWYgKHIuaG92ZXJEYXRhLmp1c3RTdGFydGVkUGFuKSB7XG4gICAgICAgICAgICB2YXIgbWRQb3MgPSByLmhvdmVyRGF0YS5tZG93blBvcztcbiAgICAgICAgICAgIGRlbHRhUCA9IHtcbiAgICAgICAgICAgICAgeDogKHBvc1swXSAtIG1kUG9zWzBdKSAqIHpvb20sXG4gICAgICAgICAgICAgIHk6IChwb3NbMV0gLSBtZFBvc1sxXSkgKiB6b29tXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgci5ob3ZlckRhdGEuanVzdFN0YXJ0ZWRQYW4gPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsdGFQID0ge1xuICAgICAgICAgICAgICB4OiBkaXNwWzBdICogem9vbSxcbiAgICAgICAgICAgICAgeTogZGlzcFsxXSAqIHpvb21cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3kucGFuQnkoZGVsdGFQKTtcbiAgICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG4gICAgICAgICAgci5ob3ZlckRhdGEuZHJhZ2dlZCA9IHRydWU7XG4gICAgICAgIH0gLy8gTmVlZHMgcmVwcm9qZWN0IGR1ZSB0byBwYW4gY2hhbmdpbmcgdmlld3BvcnRcblxuXG4gICAgICAgIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7IC8vIENoZWNrcyBwcmltYXJ5IGJ1dHRvbiBkb3duICYgb3V0IG9mIHRpbWUgJiBtb3VzZSBub3QgbW92ZWQgbXVjaFxuICAgICAgfSBlbHNlIGlmIChzZWxlY3RbNF0gPT0gMSAmJiAoZG93biA9PSBudWxsIHx8IGRvd24ucGFubmFibGUoKSkpIHtcbiAgICAgICAgaWYgKGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSAmJiAobXVsdFNlbEtleURvd24gfHwgIWN5LnBhbm5pbmdFbmFibGVkKCkgfHwgIWN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSkge1xuICAgICAgICAgICAgZ29JbnRvQm94TW9kZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXIuaG92ZXJEYXRhLnNlbGVjdGluZyAmJiBjeS5wYW5uaW5nRW5hYmxlZCgpICYmIGN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB2YXIgYWxsb3dQYXNzdGhyb3VnaCA9IGFsbG93UGFubmluZ1Bhc3N0aHJvdWdoKGRvd24sIHIuaG92ZXJEYXRhLmRvd25zKTtcblxuICAgICAgICAgICAgaWYgKGFsbG93UGFzc3Rocm91Z2gpIHtcbiAgICAgICAgICAgICAgci5ob3ZlckRhdGEuZHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICByLmhvdmVyRGF0YS5qdXN0U3RhcnRlZFBhbiA9IHRydWU7XG4gICAgICAgICAgICAgIHNlbGVjdFs0XSA9IDA7XG4gICAgICAgICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IGFycmF5MnBvaW50KG1kb3duUG9zKTtcbiAgICAgICAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZG93biAmJiBkb3duLnBhbm5hYmxlKCkgJiYgZG93bi5hY3RpdmUoKSkge1xuICAgICAgICAgICAgZG93bi51bmFjdGl2YXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZG93biAmJiBkb3duLnBhbm5hYmxlKCkgJiYgZG93bi5hY3RpdmUoKSkge1xuICAgICAgICAgIGRvd24udW5hY3RpdmF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCghZG93biB8fCAhZG93bi5ncmFiYmVkKCkpICYmIG5lYXIgIT0gbGFzdCkge1xuICAgICAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGxhc3QsIFsnbW91c2VvdXQnLCAndGFwZHJhZ291dCddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobmVhcikge1xuICAgICAgICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ21vdXNlb3ZlcicsICd0YXBkcmFnb3ZlciddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IHBvc1swXSxcbiAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmhvdmVyRGF0YS5sYXN0ID0gbmVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb3duKSB7XG4gICAgICAgICAgaWYgKGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICAgIC8vIHRoZW4gd2UgY2FuIHRha2UgYWN0aW9uXG4gICAgICAgICAgICBpZiAoY3kuYm94U2VsZWN0aW9uRW5hYmxlZCgpICYmIG11bHRTZWxLZXlEb3duKSB7XG4gICAgICAgICAgICAgIC8vIHRoZW4gc2VsZWN0aW9uIG92ZXJyaWRlc1xuICAgICAgICAgICAgICBpZiAoZG93biAmJiBkb3duLmdyYWJiZWQoKSkge1xuICAgICAgICAgICAgICAgIGZyZWVEcmFnZ2VkRWxlbWVudHMoZHJhZ2dlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICBkb3duLmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdmcmVlJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICAgICAgICBkb3duLmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5lbWl0KCdkcmFnZnJlZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGdvSW50b0JveE1vZGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZG93biAmJiBkb3duLmdyYWJiZWQoKSAmJiByLm5vZGVJc0RyYWdnYWJsZShkb3duKSkge1xuICAgICAgICAgICAgICAvLyBkcmFnIG5vZGVcbiAgICAgICAgICAgICAgdmFyIGp1c3RTdGFydGVkRHJhZyA9ICFyLmRyYWdEYXRhLmRpZERyYWc7XG5cbiAgICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgci5kcmFnRGF0YS5kaWREcmFnID0gdHJ1ZTsgLy8gaW5kaWNhdGUgdGhhdCB3ZSBhY3R1YWxseSBkaWQgZHJhZyB0aGUgbm9kZVxuICAgICAgICAgICAgICAvLyBub3csIGFkZCB0aGUgZWxlbWVudHMgdG8gdGhlIGRyYWcgbGF5ZXIgaWYgbm90IGRvbmUgYWxyZWFkeVxuXG4gICAgICAgICAgICAgIGlmICghci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzKSB7XG4gICAgICAgICAgICAgICAgYWRkTm9kZXNUb0RyYWcoZHJhZ2dlZEVsZW1lbnRzLCB7XG4gICAgICAgICAgICAgICAgICBpbkRyYWdMYXllcjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdmFyIHRvdGFsU2hpZnQgPSB7XG4gICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICB5OiAwXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKG51bWJlciQxKGRpc3BbMF0pICYmIG51bWJlciQxKGRpc3BbMV0pKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRpc3BbMF07XG4gICAgICAgICAgICAgICAgdG90YWxTaGlmdC55ICs9IGRpc3BbMV07XG5cbiAgICAgICAgICAgICAgICBpZiAoanVzdFN0YXJ0ZWREcmFnKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZHJhZ0RlbHRhID0gci5ob3ZlckRhdGEuZHJhZ0RlbHRhO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoZHJhZ0RlbHRhICYmIG51bWJlciQxKGRyYWdEZWx0YVswXSkgJiYgbnVtYmVyJDEoZHJhZ0RlbHRhWzFdKSkge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnggKz0gZHJhZ0RlbHRhWzBdO1xuICAgICAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnkgKz0gZHJhZ0RlbHRhWzFdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyA9IHRydWU7XG4gICAgICAgICAgICAgIGRyYWdnZWRFbGVtZW50cy5zaWxlbnRTaGlmdCh0b3RhbFNoaWZ0KS5lbWl0KCdwb3NpdGlvbiBkcmFnJyk7XG4gICAgICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgICAgICByLnJlZHJhdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2F2ZSBkcmFnIGRlbHRhIGZvciB3aGVuIHdlIGFjdHVhbGx5IHN0YXJ0IGRyYWdnaW5nIHNvIHRoZSByZWxhdGl2ZSBncmFiIHBvcyBpcyBjb25zdGFudFxuICAgICAgICAgICAgdXBkYXRlRHJhZ0RlbHRhKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIHByZXZlbnQgdGhlIGRyYWdnaW5nIGZyb20gdHJpZ2dlcmluZyB0ZXh0IHNlbGVjdGlvbiBvbiB0aGUgcGFnZVxuXG5cbiAgICAgICAgcHJldmVudERlZmF1bHQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBzZWxlY3RbMl0gPSBwb3NbMF07XG4gICAgICBzZWxlY3RbM10gPSBwb3NbMV07XG5cbiAgICAgIGlmIChwcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIGNsaWNrVGltZW91dCwgZGlkRG91YmxlQ2xpY2ssIHByZXZDbGlja1RpbWVTdGFtcDtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhjb250YWluZXJXaW5kb3csICdtb3VzZXVwJywgZnVuY3Rpb24gbW91c2V1cEhhbmRsZXIoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgICAgdmFyIGNhcHR1cmUgPSByLmhvdmVyRGF0YS5jYXB0dXJlO1xuXG4gICAgICBpZiAoIWNhcHR1cmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByLmhvdmVyRGF0YS5jYXB0dXJlID0gZmFsc2U7XG4gICAgICB2YXIgY3kgPSByLmN5O1xuICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLmNsaWVudFgsIGUuY2xpZW50WSk7XG4gICAgICB2YXIgc2VsZWN0ID0gci5zZWxlY3Rpb247XG4gICAgICB2YXIgbmVhciA9IHIuZmluZE5lYXJlc3RFbGVtZW50KHBvc1swXSwgcG9zWzFdLCB0cnVlLCBmYWxzZSk7XG4gICAgICB2YXIgZHJhZ2dlZEVsZW1lbnRzID0gci5kcmFnRGF0YS5wb3NzaWJsZURyYWdFbGVtZW50cztcbiAgICAgIHZhciBkb3duID0gci5ob3ZlckRhdGEuZG93bjtcbiAgICAgIHZhciBtdWx0U2VsS2V5RG93biA9IGlzTXVsdFNlbEtleURvd24oZSk7XG5cbiAgICAgIGlmIChyLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24pIHtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH1cblxuICAgICAgci5ob3ZlckRhdGEudGFwaG9sZENhbmNlbGxlZCA9IHRydWU7XG4gICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7IC8vIG5vdCBhY3RpdmUgYmcgbm93XG5cbiAgICAgIGlmIChkb3duKSB7XG4gICAgICAgIGRvd24udW5hY3RpdmF0ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoci5ob3ZlckRhdGEud2hpY2ggPT09IDMpIHtcbiAgICAgICAgdmFyIGN4dEV2dCA9IHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICBkb3duLmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjeS5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmN4dERyYWdnZWQpIHtcbiAgICAgICAgICB2YXIgY3h0VGFwID0ge1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgIHR5cGU6ICdjeHR0YXAnLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGRvd24pIHtcbiAgICAgICAgICAgIGRvd24uZW1pdChjeHRUYXApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjeS5lbWl0KGN4dFRhcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgci5ob3ZlckRhdGEuY3h0RHJhZ2dlZCA9IGZhbHNlO1xuICAgICAgICByLmhvdmVyRGF0YS53aGljaCA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHIuaG92ZXJEYXRhLndoaWNoID09PSAxKSB7XG4gICAgICAgIHRyaWdnZXJFdmVudHMobmVhciwgWydtb3VzZXVwJywgJ3RhcGVuZCcsICd2bW91c2V1cCddLCBlLCB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXIuZHJhZ0RhdGEuZGlkRHJhZyAmJiAvLyBkaWRuJ3QgbW92ZSBhIG5vZGUgYXJvdW5kXG4gICAgICAgICFyLmhvdmVyRGF0YS5kcmFnZ2VkICYmIC8vIGRpZG4ndCBwYW5cbiAgICAgICAgIXIuaG92ZXJEYXRhLnNlbGVjdGluZyAmJiAvLyBub3QgYm94IHNlbGVjdGlvblxuICAgICAgICAhci5ob3ZlckRhdGEuaXNPdmVyVGhyZXNob2xkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0b28gbXVjaFxuICAgICAgICApIHtcbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKGRvd24sIFtcImNsaWNrXCIsIFwidGFwXCIsIFwidmNsaWNrXCJdLCBlLCB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkaWREb3VibGVDbGljayA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGUudGltZVN0YW1wIC0gcHJldkNsaWNrVGltZVN0YW1wIDw9IGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSkge1xuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuICAgICAgICAgICAgZGlkRG91YmxlQ2xpY2sgPSB0cnVlO1xuICAgICAgICAgICAgcHJldkNsaWNrVGltZVN0YW1wID0gbnVsbDtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoZG93biwgW1wiZGJsY2xpY2tcIiwgXCJkYmx0YXBcIiwgXCJ2ZGJsY2xpY2tcIl0sIGUsIHtcbiAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbGlja1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGRpZERvdWJsZUNsaWNrKSByZXR1cm47XG4gICAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoZG93biwgW1wib25lY2xpY2tcIiwgXCJvbmV0YXBcIiwgXCJ2b25lY2xpY2tcIl0sIGUsIHtcbiAgICAgICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICAgICAgeTogcG9zWzFdXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgY3kubXVsdGlDbGlja0RlYm91bmNlVGltZSgpKTtcbiAgICAgICAgICAgIHByZXZDbGlja1RpbWVTdGFtcCA9IGUudGltZVN0YW1wO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBEZXNlbGVjdCBhbGwgZWxlbWVudHMgaWYgbm90aGluZyBpcyBjdXJyZW50bHkgdW5kZXIgdGhlIG1vdXNlIGN1cnNvciBhbmQgd2UgYXJlbid0IGRyYWdnaW5nIHNvbWV0aGluZ1xuXG5cbiAgICAgICAgaWYgKGRvd24gPT0gbnVsbCAvLyBub3QgbW91c2Vkb3duIG9uIG5vZGVcbiAgICAgICAgJiYgIXIuZHJhZ0RhdGEuZGlkRHJhZyAvLyBkaWRuJ3QgbW92ZSB0aGUgbm9kZSBhcm91bmRcbiAgICAgICAgJiYgIXIuaG92ZXJEYXRhLnNlbGVjdGluZyAvLyBub3QgYm94IHNlbGVjdGlvblxuICAgICAgICAmJiAhci5ob3ZlckRhdGEuZHJhZ2dlZCAvLyBkaWRuJ3QgcGFuXG4gICAgICAgICYmICFpc011bHRTZWxLZXlEb3duKGUpKSB7XG4gICAgICAgICAgY3kuJChpc1NlbGVjdGVkKS51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuXG4gICAgICAgICAgaWYgKGRyYWdnZWRFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLmRyYWdEYXRhLnBvc3NpYmxlRHJhZ0VsZW1lbnRzID0gZHJhZ2dlZEVsZW1lbnRzID0gY3kuY29sbGVjdGlvbigpO1xuICAgICAgICB9IC8vIFNpbmdsZSBzZWxlY3Rpb25cblxuXG4gICAgICAgIGlmIChuZWFyID09IGRvd24gJiYgIXIuZHJhZ0RhdGEuZGlkRHJhZyAmJiAhci5ob3ZlckRhdGEuc2VsZWN0aW5nKSB7XG4gICAgICAgICAgaWYgKG5lYXIgIT0gbnVsbCAmJiBuZWFyLl9wcml2YXRlLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIGlmIChyLmhvdmVyRGF0YS5kcmFnZ2luZykgOyBlbHNlIGlmIChjeS5zZWxlY3Rpb25UeXBlKCkgPT09ICdhZGRpdGl2ZScgfHwgbXVsdFNlbEtleURvd24pIHtcbiAgICAgICAgICAgICAgaWYgKG5lYXIuc2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgICAgIG5lYXIudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZWFyLnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKCFtdWx0U2VsS2V5RG93bikge1xuICAgICAgICAgICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5tZXJnZShuZWFyKS51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuICAgICAgICAgICAgICAgIG5lYXIuc2VsZWN0KFsndGFwc2VsZWN0J10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgICB2YXIgYm94ID0gY3kuY29sbGVjdGlvbihyLmdldEFsbEluQm94KHNlbGVjdFswXSwgc2VsZWN0WzFdLCBzZWxlY3RbMl0sIHNlbGVjdFszXSkpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAoYm94Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGN5LmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ2JveGVuZCcsXG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBlbGVXb3VsZEJlU2VsZWN0ZWQgPSBmdW5jdGlvbiBlbGVXb3VsZEJlU2VsZWN0ZWQoZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGFibGUoKSAmJiAhZWxlLnNlbGVjdGVkKCk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChjeS5zZWxlY3Rpb25UeXBlKCkgPT09ICdhZGRpdGl2ZScpIHtcbiAgICAgICAgICAgIGJveC5lbWl0KCdib3gnKS5zdGRGaWx0ZXIoZWxlV291bGRCZVNlbGVjdGVkKS5zZWxlY3QoKS5lbWl0KCdib3hzZWxlY3QnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFtdWx0U2VsS2V5RG93bikge1xuICAgICAgICAgICAgICBjeS4kKGlzU2VsZWN0ZWQpLnVubWVyZ2UoYm94KS51bnNlbGVjdCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBib3guZW1pdCgnYm94Jykuc3RkRmlsdGVyKGVsZVdvdWxkQmVTZWxlY3RlZCkuc2VsZWN0KCkuZW1pdCgnYm94c2VsZWN0Jyk7XG4gICAgICAgICAgfSAvLyBhbHdheXMgbmVlZCByZWRyYXcgaW4gY2FzZSBlbGVzIHVuc2VsZWN0YWJsZVxuXG5cbiAgICAgICAgICByLnJlZHJhdygpO1xuICAgICAgICB9IC8vIENhbmNlbCBkcmFnIHBhblxuXG5cbiAgICAgICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nKSB7XG4gICAgICAgICAgci5ob3ZlckRhdGEuZHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlbGVjdFs0XSkge1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgIHZhciBkb3duV2FzR3JhYmJlZCA9IGRvd24gJiYgZG93bi5ncmFiYmVkKCk7XG4gICAgICAgICAgZnJlZURyYWdnZWRFbGVtZW50cyhkcmFnZ2VkRWxlbWVudHMpO1xuXG4gICAgICAgICAgaWYgKGRvd25XYXNHcmFiYmVkKSB7XG4gICAgICAgICAgICBkb3duLmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgICAgaWYgKHIuZHJhZ0RhdGEuZGlkRHJhZykge1xuICAgICAgICAgICAgICBkb3duLmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZW1lbnRzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IC8vIGVsc2Ugbm90IHJpZ2h0IG1vdXNlXG5cblxuICAgICAgc2VsZWN0WzRdID0gMDtcbiAgICAgIHIuaG92ZXJEYXRhLmRvd24gPSBudWxsO1xuICAgICAgci5ob3ZlckRhdGEuY3h0U3RhcnRlZCA9IGZhbHNlO1xuICAgICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgICByLmhvdmVyRGF0YS5zZWxlY3RpbmcgPSBmYWxzZTtcbiAgICAgIHIuaG92ZXJEYXRhLmlzT3ZlclRocmVzaG9sZERyYWcgPSBmYWxzZTtcbiAgICAgIHIuZHJhZ0RhdGEuZGlkRHJhZyA9IGZhbHNlO1xuICAgICAgci5ob3ZlckRhdGEuZHJhZ2dlZCA9IGZhbHNlO1xuICAgICAgci5ob3ZlckRhdGEuZHJhZ0RlbHRhID0gW107XG4gICAgICByLmhvdmVyRGF0YS5tZG93blBvcyA9IG51bGw7XG4gICAgICByLmhvdmVyRGF0YS5tZG93bkdQb3MgPSBudWxsO1xuICAgIH0sIGZhbHNlKTtcblxuICAgIHZhciB3aGVlbEhhbmRsZXIgPSBmdW5jdGlvbiB3aGVlbEhhbmRsZXIoZSkge1xuICAgICAgaWYgKHIuc2Nyb2xsaW5nUGFnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIHdoaWxlIHNjcm9sbGluZywgaWdub3JlIHdoZWVsLXRvLXpvb21cblxuXG4gICAgICB2YXIgY3kgPSByLmN5O1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcbiAgICAgIHZhciBycG9zID0gW3Bvc1swXSAqIHpvb20gKyBwYW4ueCwgcG9zWzFdICogem9vbSArIHBhbi55XTtcblxuICAgICAgaWYgKHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLmhvdmVyRGF0YS5jeHRTdGFydGVkIHx8IGluQm94U2VsZWN0aW9uKCkpIHtcbiAgICAgICAgLy8gaWYgcGFuIGRyYWdnaW5nIG9yIGN4dCBkcmFnZ2luZywgd2hlZWwgbW92ZW1lbnRzIG1ha2Ugbm8gem9vbVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkgJiYgY3kuem9vbWluZ0VuYWJsZWQoKSAmJiBjeS51c2VyWm9vbWluZ0VuYWJsZWQoKSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHIuZGF0YS53aGVlbFpvb21pbmcgPSB0cnVlO1xuICAgICAgICBjbGVhclRpbWVvdXQoci5kYXRhLndoZWVsVGltZW91dCk7XG4gICAgICAgIHIuZGF0YS53aGVlbFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByLmRhdGEud2hlZWxab29taW5nID0gZmFsc2U7XG4gICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgdmFyIGRpZmY7XG5cbiAgICAgICAgaWYgKGUuZGVsdGFZICE9IG51bGwpIHtcbiAgICAgICAgICBkaWZmID0gZS5kZWx0YVkgLyAtMjUwO1xuICAgICAgICB9IGVsc2UgaWYgKGUud2hlZWxEZWx0YVkgIT0gbnVsbCkge1xuICAgICAgICAgIGRpZmYgPSBlLndoZWVsRGVsdGFZIC8gMTAwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaWZmID0gZS53aGVlbERlbHRhIC8gMTAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpZmYgPSBkaWZmICogci53aGVlbFNlbnNpdGl2aXR5O1xuICAgICAgICB2YXIgbmVlZHNXaGVlbEZpeCA9IGUuZGVsdGFNb2RlID09PSAxO1xuXG4gICAgICAgIGlmIChuZWVkc1doZWVsRml4KSB7XG4gICAgICAgICAgLy8gZml4ZXMgc2xvdyB3aGVlbCBldmVudHMgb24gZmYvbGludXggYW5kIGZmL3dpbmRvd3NcbiAgICAgICAgICBkaWZmICo9IDMzO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5ld1pvb20gPSBjeS56b29tKCkgKiBNYXRoLnBvdygxMCwgZGlmZik7XG5cbiAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2dlc3R1cmVjaGFuZ2UnKSB7XG4gICAgICAgICAgbmV3Wm9vbSA9IHIuZ2VzdHVyZVN0YXJ0Wm9vbSAqIGUuc2NhbGU7XG4gICAgICAgIH1cblxuICAgICAgICBjeS56b29tKHtcbiAgICAgICAgICBsZXZlbDogbmV3Wm9vbSxcbiAgICAgICAgICByZW5kZXJlZFBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBycG9zWzBdLFxuICAgICAgICAgICAgeTogcnBvc1sxXVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGN5LmVtaXQoZS50eXBlID09PSAnZ2VzdHVyZWNoYW5nZScgPyAncGluY2h6b29tJyA6ICdzY3JvbGx6b29tJyk7XG4gICAgICB9XG4gICAgfTsgLy8gRnVuY3Rpb25zIHRvIGhlbHAgd2l0aCB3aGV0aGVyIG1vdXNlIHdoZWVsIHNob3VsZCB0cmlnZ2VyIHpvb21pbmdcbiAgICAvLyAtLVxuXG5cbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3doZWVsJywgd2hlZWxIYW5kbGVyLCB0cnVlKTsgLy8gZGlzYWJsZSBub25zdGFuZGFyZCB3aGVlbCBldmVudHNcbiAgICAvLyByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ21vdXNld2hlZWwnLCB3aGVlbEhhbmRsZXIsIHRydWUpO1xuICAgIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnRE9NTW91c2VTY3JvbGwnLCB3aGVlbEhhbmRsZXIsIHRydWUpO1xuICAgIC8vIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnTW96TW91c2VQaXhlbFNjcm9sbCcsIHdoZWVsSGFuZGxlciwgdHJ1ZSk7IC8vIG9sZGVyIGZpcmVmb3hcblxuICAgIHIucmVnaXN0ZXJCaW5kaW5nKGNvbnRhaW5lcldpbmRvdywgJ3Njcm9sbCcsIGZ1bmN0aW9uIHNjcm9sbEhhbmRsZXIoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgci5zY3JvbGxpbmdQYWdlID0gdHJ1ZTtcbiAgICAgIGNsZWFyVGltZW91dChyLnNjcm9sbGluZ1BhZ2VUaW1lb3V0KTtcbiAgICAgIHIuc2Nyb2xsaW5nUGFnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgci5zY3JvbGxpbmdQYWdlID0gZmFsc2U7XG4gICAgICB9LCAyNTApO1xuICAgIH0sIHRydWUpOyAvLyBkZXNrdG9wIHNhZmFyaSBwaW5jaCB0byB6b29tIHN0YXJ0XG5cbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ2dlc3R1cmVzdGFydCcsIGZ1bmN0aW9uIGdlc3R1cmVTdGFydEhhbmRsZXIoZSkge1xuICAgICAgci5nZXN0dXJlU3RhcnRab29tID0gci5jeS56b29tKCk7XG5cbiAgICAgIGlmICghci5oYXNUb3VjaFN0YXJ0ZWQpIHtcbiAgICAgICAgLy8gZG9uJ3QgYWZmZWN0IHRvdWNoIGRldmljZXMgbGlrZSBpcGhvbmVcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0sIHRydWUpO1xuICAgIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAnZ2VzdHVyZWNoYW5nZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIXIuaGFzVG91Y2hTdGFydGVkKSB7XG4gICAgICAgIC8vIGRvbid0IGFmZmVjdCB0b3VjaCBkZXZpY2VzIGxpa2UgaXBob25lXG4gICAgICAgIHdoZWVsSGFuZGxlcihlKTtcbiAgICAgIH1cbiAgICB9LCB0cnVlKTsgLy8gRnVuY3Rpb25zIHRvIGhlbHAgd2l0aCBoYW5kbGluZyBtb3VzZW91dC9tb3VzZW92ZXIgb24gdGhlIEN5dG9zY2FwZSBjb250YWluZXJcbiAgICAvLyBIYW5kbGUgbW91c2VvdXQgb24gQ3l0b3NjYXBlIGNvbnRhaW5lclxuXG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdtb3VzZW91dCcsIGZ1bmN0aW9uIG1vdXNlT3V0SGFuZGxlcihlKSB7XG4gICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUuY2xpZW50WCwgZS5jbGllbnRZKTtcbiAgICAgIHIuY3kuZW1pdCh7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgIHR5cGU6ICdtb3VzZW91dCcsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCBmYWxzZSk7XG4gICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdtb3VzZW92ZXInLCBmdW5jdGlvbiBtb3VzZU92ZXJIYW5kbGVyKGUpIHtcbiAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS5jbGllbnRYLCBlLmNsaWVudFkpO1xuICAgICAgci5jeS5lbWl0KHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgdHlwZTogJ21vdXNlb3ZlcicsXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgeDogcG9zWzBdLFxuICAgICAgICAgIHk6IHBvc1sxXVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIGYxeDEsIGYxeTEsIGYyeDEsIGYyeTE7IC8vIHN0YXJ0aW5nIHBvaW50cyBmb3IgcGluY2gtdG8tem9vbVxuXG4gICAgdmFyIGRpc3RhbmNlMSwgZGlzdGFuY2UxU3E7IC8vIGluaXRpYWwgZGlzdGFuY2UgYmV0d2VlbiBmaW5nZXIgMSBhbmQgZmluZ2VyIDIgZm9yIHBpbmNoLXRvLXpvb21cblxuICAgIHZhciBjZW50ZXIxLCBtb2RlbENlbnRlcjE7IC8vIGNlbnRlciBwb2ludCBvbiBzdGFydCBwaW5jaCB0byB6b29tXG5cbiAgICB2YXIgb2Zmc2V0TGVmdCwgb2Zmc2V0VG9wO1xuICAgIHZhciBjb250YWluZXJXaWR0aCwgY29udGFpbmVySGVpZ2h0O1xuICAgIHZhciB0d29GaW5nZXJzU3RhcnRJbnNpZGU7XG5cbiAgICB2YXIgZGlzdGFuY2UgPSBmdW5jdGlvbiBkaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xuICAgICAgcmV0dXJuIE1hdGguc3FydCgoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKyAoeTIgLSB5MSkgKiAoeTIgLSB5MSkpO1xuICAgIH07XG5cbiAgICB2YXIgZGlzdGFuY2VTcSA9IGZ1bmN0aW9uIGRpc3RhbmNlU3EoeDEsIHkxLCB4MiwgeTIpIHtcbiAgICAgIHJldHVybiAoeDIgLSB4MSkgKiAoeDIgLSB4MSkgKyAoeTIgLSB5MSkgKiAoeTIgLSB5MSk7XG4gICAgfTtcblxuICAgIHZhciB0b3VjaHN0YXJ0SGFuZGxlcjtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3RvdWNoc3RhcnQnLCB0b3VjaHN0YXJ0SGFuZGxlciA9IGZ1bmN0aW9uIHRvdWNoc3RhcnRIYW5kbGVyKGUpIHtcbiAgICAgIHIuaGFzVG91Y2hTdGFydGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKCFldmVudEluQ29udGFpbmVyKGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYmx1ckFjdGl2ZURvbUVsZW1lbnQoKTtcbiAgICAgIHIudG91Y2hEYXRhLmNhcHR1cmUgPSB0cnVlO1xuICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdmFyIGN5ID0gci5jeTtcbiAgICAgIHZhciBub3cgPSByLnRvdWNoRGF0YS5ub3c7XG4gICAgICB2YXIgZWFybGllciA9IHIudG91Y2hEYXRhLmVhcmxpZXI7XG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMF0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMF0uY2xpZW50WCwgZS50b3VjaGVzWzBdLmNsaWVudFkpO1xuICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1sxXS5jbGllbnRYLCBlLnRvdWNoZXNbMV0uY2xpZW50WSk7XG4gICAgICAgIG5vd1syXSA9IHBvc1swXTtcbiAgICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS50b3VjaGVzWzJdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzRdID0gcG9zWzBdO1xuICAgICAgICBub3dbNV0gPSBwb3NbMV07XG4gICAgICB9IC8vIHJlY29yZCBzdGFydGluZyBwb2ludHMgZm9yIHBpbmNoLXRvLXpvb21cblxuXG4gICAgICBpZiAoZS50b3VjaGVzWzFdKSB7XG4gICAgICAgIHIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQgPSB0cnVlO1xuICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcyk7XG4gICAgICAgIHZhciBvZmZzZXRzID0gci5maW5kQ29udGFpbmVyQ2xpZW50Q29vcmRzKCk7XG4gICAgICAgIG9mZnNldExlZnQgPSBvZmZzZXRzWzBdO1xuICAgICAgICBvZmZzZXRUb3AgPSBvZmZzZXRzWzFdO1xuICAgICAgICBjb250YWluZXJXaWR0aCA9IG9mZnNldHNbMl07XG4gICAgICAgIGNvbnRhaW5lckhlaWdodCA9IG9mZnNldHNbM107XG4gICAgICAgIGYxeDEgPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIG9mZnNldExlZnQ7XG4gICAgICAgIGYxeTEgPSBlLnRvdWNoZXNbMF0uY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgZjJ4MSA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdDtcbiAgICAgICAgZjJ5MSA9IGUudG91Y2hlc1sxXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgICB0d29GaW5nZXJzU3RhcnRJbnNpZGUgPSAwIDw9IGYxeDEgJiYgZjF4MSA8PSBjb250YWluZXJXaWR0aCAmJiAwIDw9IGYyeDEgJiYgZjJ4MSA8PSBjb250YWluZXJXaWR0aCAmJiAwIDw9IGYxeTEgJiYgZjF5MSA8PSBjb250YWluZXJIZWlnaHQgJiYgMCA8PSBmMnkxICYmIGYyeTEgPD0gY29udGFpbmVySGVpZ2h0O1xuICAgICAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgICAgICBkaXN0YW5jZTEgPSBkaXN0YW5jZShmMXgxLCBmMXkxLCBmMngxLCBmMnkxKTtcbiAgICAgICAgZGlzdGFuY2UxU3EgPSBkaXN0YW5jZVNxKGYxeDEsIGYxeTEsIGYyeDEsIGYyeTEpO1xuICAgICAgICBjZW50ZXIxID0gWyhmMXgxICsgZjJ4MSkgLyAyLCAoZjF5MSArIGYyeTEpIC8gMl07XG4gICAgICAgIG1vZGVsQ2VudGVyMSA9IFsoY2VudGVyMVswXSAtIHBhbi54KSAvIHpvb20sIChjZW50ZXIxWzFdIC0gcGFuLnkpIC8gem9vbV07IC8vIGNvbnNpZGVyIGNvbnRleHQgdGFwXG5cbiAgICAgICAgdmFyIGN4dERpc3RUaHJlc2hvbGQgPSAyMDA7XG4gICAgICAgIHZhciBjeHREaXN0VGhyZXNob2xkU3EgPSBjeHREaXN0VGhyZXNob2xkICogY3h0RGlzdFRocmVzaG9sZDtcblxuICAgICAgICBpZiAoZGlzdGFuY2UxU3EgPCBjeHREaXN0VGhyZXNob2xkU3EgJiYgIWUudG91Y2hlc1syXSkge1xuICAgICAgICAgIHZhciBuZWFyMSA9IHIuZmluZE5lYXJlc3RFbGVtZW50KG5vd1swXSwgbm93WzFdLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICB2YXIgbmVhcjIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMl0sIG5vd1szXSwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAobmVhcjEgJiYgbmVhcjEuaXNOb2RlKCkpIHtcbiAgICAgICAgICAgIG5lYXIxLmFjdGl2YXRlKCkuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0ID0gbmVhcjE7XG4gICAgICAgICAgfSBlbHNlIGlmIChuZWFyMiAmJiBuZWFyMi5pc05vZGUoKSkge1xuICAgICAgICAgICAgbmVhcjIuYWN0aXZhdGUoKS5lbWl0KHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgdHlwZTogJ2N4dHRhcHN0YXJ0JyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgci50b3VjaERhdGEuc3RhcnQgPSBuZWFyMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3kuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdjeHR0YXBzdGFydCcsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0Ll9wcml2YXRlLmdyYWJiZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnRvdWNoRGF0YS5jeHQgPSB0cnVlO1xuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dERyYWdnZWQgPSBmYWxzZTtcbiAgICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgLy8gc2FmYXJpIG9uIGlvcyBwYW5zIHRoZSBwYWdlIG90aGVyd2lzZSAobm9ybWFsbHkgeW91IHNob3VsZCBiZSBhYmxlIHRvIHByZXZlbnRkZWZhdWx0IG9uIHRvdWNobW92ZS4uLilcbiAgICAgICAgaWYgKGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMV0pIDsgZWxzZSBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICAgIHZhciBuZWFycyA9IHIuZmluZE5lYXJlc3RFbGVtZW50cyhub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHZhciBuZWFyID0gbmVhcnNbMF07XG5cbiAgICAgICAgaWYgKG5lYXIgIT0gbnVsbCkge1xuICAgICAgICAgIG5lYXIuYWN0aXZhdGUoKTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG5lYXI7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnRzID0gbmVhcnM7XG5cbiAgICAgICAgICBpZiAoci5ub2RlSXNHcmFiYmFibGUobmVhcikpIHtcbiAgICAgICAgICAgIHZhciBkcmFnZ2VkRWxlcyA9IHIuZHJhZ0RhdGEudG91Y2hEcmFnRWxlcyA9IGN5LmNvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZE5vZGVzID0gbnVsbDtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmIChuZWFyLnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgLy8gcmVzZXQgZHJhZyBlbGVtZW50cywgc2luY2UgbmVhciB3aWxsIGJlIGFkZGVkIGFnYWluXG4gICAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMgPSBjeS4kKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlLnNlbGVjdGVkKCkgJiYgci5ub2RlSXNHcmFiYmFibGUoZWxlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGFkZE5vZGVzVG9EcmFnKHNlbGVjdGVkTm9kZXMsIHtcbiAgICAgICAgICAgICAgICBhZGRUb0xpc3Q6IGRyYWdnZWRFbGVzXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWRkTm9kZVRvRHJhZyhuZWFyLCB7XG4gICAgICAgICAgICAgICAgYWRkVG9MaXN0OiBkcmFnZ2VkRWxlc1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0R3JhYlRhcmdldChuZWFyKTtcblxuICAgICAgICAgICAgdmFyIG1ha2VFdmVudCA9IGZ1bmN0aW9uIG1ha2VFdmVudCh0eXBlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBuZWFyLmVtaXQobWFrZUV2ZW50KCdncmFib24nKSk7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZE5vZGVzKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgICAgIG4uZW1pdChtYWtlRXZlbnQoJ2dyYWInKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbmVhci5lbWl0KG1ha2VFdmVudCgnZ3JhYicpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0cmlnZ2VyRXZlbnRzKG5lYXIsIFsndG91Y2hzdGFydCcsICd0YXBzdGFydCcsICd2bW91c2Vkb3duJ10sIGUsIHtcbiAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgeTogbm93WzFdXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChuZWFyID09IG51bGwpIHtcbiAgICAgICAgICByLmRhdGEuYmdBY3RpdmVQb3Npc3Rpb24gPSB7XG4gICAgICAgICAgICB4OiBwb3NbMF0sXG4gICAgICAgICAgICB5OiBwb3NbMV1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHIucmVkcmF3SGludCgnc2VsZWN0JywgdHJ1ZSk7XG4gICAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgICAgfSAvLyBUYXAsIHRhcGhvbGRcbiAgICAgICAgLy8gLS0tLS1cblxuXG4gICAgICAgIHIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQgPSBmYWxzZTtcbiAgICAgICAgci50b3VjaERhdGEuc2luZ2xlVG91Y2hTdGFydFRpbWUgPSArbmV3IERhdGUoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHIudG91Y2hEYXRhLnRhcGhvbGRUaW1lb3V0KTtcbiAgICAgICAgci50b3VjaERhdGEudGFwaG9sZFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoci50b3VjaERhdGEuc2luZ2xlVG91Y2hNb3ZlZCA9PT0gZmFsc2UgJiYgIXIucGluY2hpbmcgLy8gaWYgcGluY2hpbmcsIHRoZW4gdGFwaG9sZCB1bnNlbGVjdCBzaG91bGRuJ3QgdGFrZSBlZmZlY3RcbiAgICAgICAgICAmJiAhci50b3VjaERhdGEuc2VsZWN0aW5nIC8vIGJveCBzZWxlY3Rpb24gc2hvdWxkbid0IGFsbG93IHRhcGhvbGQgdGhyb3VnaFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdHJpZ2dlckV2ZW50cyhyLnRvdWNoRGF0YS5zdGFydCwgWyd0YXBob2xkJ10sIGUsIHtcbiAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgci50YXBob2xkRHVyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgIHZhciBzUG9zID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbiA9IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vdy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHNQb3NbaV0gPSBlYXJsaWVyW2ldID0gbm93W2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHRvdWNoMCA9IGUudG91Y2hlc1swXTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBbdG91Y2gwLmNsaWVudFgsIHRvdWNoMC5jbGllbnRZXTtcbiAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIHRvdWNobW92ZUhhbmRsZXI7XG4gICAgci5yZWdpc3RlckJpbmRpbmcod2luZG93LCAndG91Y2htb3ZlJywgdG91Y2htb3ZlSGFuZGxlciA9IGZ1bmN0aW9uIHRvdWNobW92ZUhhbmRsZXIoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgICAgdmFyIGNhcHR1cmUgPSByLnRvdWNoRGF0YS5jYXB0dXJlO1xuXG4gICAgICBpZiAoIWNhcHR1cmUgJiYgIWV2ZW50SW5Db250YWluZXIoZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0ID0gci5zZWxlY3Rpb247XG4gICAgICB2YXIgY3kgPSByLmN5O1xuICAgICAgdmFyIG5vdyA9IHIudG91Y2hEYXRhLm5vdztcbiAgICAgIHZhciBlYXJsaWVyID0gci50b3VjaERhdGEuZWFybGllcjtcbiAgICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuXG4gICAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzBdID0gcG9zWzBdO1xuICAgICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMV0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICAgIG5vd1szXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1syXS5jbGllbnRYLCBlLnRvdWNoZXNbMl0uY2xpZW50WSk7XG4gICAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhcnRHUG9zID0gci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb247XG4gICAgICB2YXIgaXNPdmVyVGhyZXNob2xkRHJhZztcblxuICAgICAgaWYgKGNhcHR1cmUgJiYgZS50b3VjaGVzWzBdICYmIHN0YXJ0R1Bvcykge1xuICAgICAgICB2YXIgZGlzcCA9IFtdO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm93Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgZGlzcFtqXSA9IG5vd1tqXSAtIGVhcmxpZXJbal07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZHggPSBlLnRvdWNoZXNbMF0uY2xpZW50WCAtIHN0YXJ0R1Bvc1swXTtcbiAgICAgICAgdmFyIGR4MiA9IGR4ICogZHg7XG4gICAgICAgIHZhciBkeSA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gc3RhcnRHUG9zWzFdO1xuICAgICAgICB2YXIgZHkyID0gZHkgKiBkeTtcbiAgICAgICAgdmFyIGRpc3QyID0gZHgyICsgZHkyO1xuICAgICAgICBpc092ZXJUaHJlc2hvbGREcmFnID0gZGlzdDIgPj0gci50b3VjaFRhcFRocmVzaG9sZDI7XG4gICAgICB9IC8vIGNvbnRleHQgc3dpcGUgY2FuY2VsbGluZ1xuXG5cbiAgICAgIGlmIChjYXB0dXJlICYmIHIudG91Y2hEYXRhLmN4dCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciBmMXgyID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgZjF5MiA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgICB2YXIgZjJ4MiA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIGYyeTIgPSBlLnRvdWNoZXNbMV0uY2xpZW50WSAtIG9mZnNldFRvcDsgLy8gdmFyIGRpc3RhbmNlMiA9IGRpc3RhbmNlKCBmMXgyLCBmMXkyLCBmMngyLCBmMnkyICk7XG5cbiAgICAgICAgdmFyIGRpc3RhbmNlMlNxID0gZGlzdGFuY2VTcShmMXgyLCBmMXkyLCBmMngyLCBmMnkyKTtcbiAgICAgICAgdmFyIGZhY3RvclNxID0gZGlzdGFuY2UyU3EgLyBkaXN0YW5jZTFTcTtcbiAgICAgICAgdmFyIGRpc3RUaHJlc2hvbGQgPSAxNTA7XG4gICAgICAgIHZhciBkaXN0VGhyZXNob2xkU3EgPSBkaXN0VGhyZXNob2xkICogZGlzdFRocmVzaG9sZDtcbiAgICAgICAgdmFyIGZhY3RvclRocmVzaG9sZCA9IDEuNTtcbiAgICAgICAgdmFyIGZhY3RvclRocmVzaG9sZFNxID0gZmFjdG9yVGhyZXNob2xkICogZmFjdG9yVGhyZXNob2xkOyAvLyBjYW5jZWwgY3R4IGdlc3R1cmVzIGlmIHRoZSBkaXN0YW5jZSBiL3QgdGhlIGZpbmdlcnMgaW5jcmVhc2VzXG5cbiAgICAgICAgaWYgKGZhY3RvclNxID49IGZhY3RvclRocmVzaG9sZFNxIHx8IGRpc3RhbmNlMlNxID49IGRpc3RUaHJlc2hvbGRTcSkge1xuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dCA9IGZhbHNlO1xuICAgICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICAgIHZhciBjeHRFdnQgPSB7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dHRhcGVuZCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0LnVuYWN0aXZhdGUoKS5lbWl0KGN4dEV2dCk7XG4gICAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN5LmVtaXQoY3h0RXZ0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gLy8gY29udGV4dCBzd2lwZVxuXG5cbiAgICAgIGlmIChjYXB0dXJlICYmIHIudG91Y2hEYXRhLmN4dCkge1xuICAgICAgICB2YXIgY3h0RXZ0ID0ge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgdHlwZTogJ2N4dGRyYWcnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcblxuICAgICAgICBpZiAoci50b3VjaERhdGEuc3RhcnQpIHtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydC5lbWl0KGN4dEV2dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3kuZW1pdChjeHRFdnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0KSB7XG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgci50b3VjaERhdGEuY3h0RHJhZ2dlZCA9IHRydWU7XG4gICAgICAgIHZhciBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuXG4gICAgICAgIGlmICghci50b3VjaERhdGEuY3h0T3ZlciB8fCBuZWFyICE9PSByLnRvdWNoRGF0YS5jeHRPdmVyKSB7XG4gICAgICAgICAgaWYgKHIudG91Y2hEYXRhLmN4dE92ZXIpIHtcbiAgICAgICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdjeHRkcmFnb3V0JyxcbiAgICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHIudG91Y2hEYXRhLmN4dE92ZXIgPSBuZWFyO1xuXG4gICAgICAgICAgaWYgKG5lYXIpIHtcbiAgICAgICAgICAgIG5lYXIuZW1pdCh7XG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgIHR5cGU6ICdjeHRkcmFnb3ZlcicsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gLy8gYm94IHNlbGVjdGlvblxuXG4gICAgICB9IGVsc2UgaWYgKGNhcHR1cmUgJiYgZS50b3VjaGVzWzJdICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5sYXN0VGhyZWVUb3VjaCA9ICtuZXcgRGF0ZSgpO1xuXG4gICAgICAgIGlmICghci50b3VjaERhdGEuc2VsZWN0aW5nKSB7XG4gICAgICAgICAgY3kuZW1pdCh7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2JveHN0YXJ0JyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByLnRvdWNoRGF0YS5zZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSB0cnVlO1xuICAgICAgICBzZWxlY3RbNF0gPSAxO1xuXG4gICAgICAgIGlmICghc2VsZWN0IHx8IHNlbGVjdC5sZW5ndGggPT09IDAgfHwgc2VsZWN0WzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzZWxlY3RbMF0gPSAobm93WzBdICsgbm93WzJdICsgbm93WzRdKSAvIDM7XG4gICAgICAgICAgc2VsZWN0WzFdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzO1xuICAgICAgICAgIHNlbGVjdFsyXSA9IChub3dbMF0gKyBub3dbMl0gKyBub3dbNF0pIC8gMyArIDE7XG4gICAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxlY3RbMl0gPSAobm93WzBdICsgbm93WzJdICsgbm93WzRdKSAvIDM7XG4gICAgICAgICAgc2VsZWN0WzNdID0gKG5vd1sxXSArIG5vd1szXSArIG5vd1s1XSkgLyAzO1xuICAgICAgICB9XG5cbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTsgLy8gcGluY2ggdG8gem9vbVxuICAgICAgfSBlbHNlIGlmIChjYXB0dXJlICYmIGUudG91Y2hlc1sxXSAmJiAhci50b3VjaERhdGEuZGlkU2VsZWN0IC8vIGRvbid0IGFsbG93IGJveCBzZWxlY3Rpb24gdG8gZGVncmFkZSB0byBwaW5jaC10by16b29tXG4gICAgICAmJiBjeS56b29taW5nRW5hYmxlZCgpICYmIGN5LnBhbm5pbmdFbmFibGVkKCkgJiYgY3kudXNlclpvb21pbmdFbmFibGVkKCkgJiYgY3kudXNlclBhbm5pbmdFbmFibGVkKCkpIHtcbiAgICAgICAgLy8gdHdvIGZpbmdlcnMgPT4gcGluY2ggdG8gem9vbVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgdmFyIGRyYWdnZWRFbGVzID0gci5kcmFnRGF0YS50b3VjaERyYWdFbGVzO1xuXG4gICAgICAgIGlmIChkcmFnZ2VkRWxlcykge1xuICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkcmFnZ2VkRWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGRlX3AgPSBkcmFnZ2VkRWxlc1tpXS5fcHJpdmF0ZTtcbiAgICAgICAgICAgIGRlX3AuZ3JhYmJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZGVfcC5yc2NyYXRjaC5pbkRyYWdMYXllciA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDsgLy8gKHgyLCB5MikgZm9yIGZpbmdlcnMgMSBhbmQgMlxuXG4gICAgICAgIHZhciBmMXgyID0gZS50b3VjaGVzWzBdLmNsaWVudFggLSBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgZjF5MiA9IGUudG91Y2hlc1swXS5jbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgICB2YXIgZjJ4MiA9IGUudG91Y2hlc1sxXS5jbGllbnRYIC0gb2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIGYyeTIgPSBlLnRvdWNoZXNbMV0uY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgdmFyIGRpc3RhbmNlMiA9IGRpc3RhbmNlKGYxeDIsIGYxeTIsIGYyeDIsIGYyeTIpOyAvLyB2YXIgZGlzdGFuY2UyU3EgPSBkaXN0YW5jZVNxKCBmMXgyLCBmMXkyLCBmMngyLCBmMnkyICk7XG4gICAgICAgIC8vIHZhciBmYWN0b3IgPSBNYXRoLnNxcnQoIGRpc3RhbmNlMlNxICkgLyBNYXRoLnNxcnQoIGRpc3RhbmNlMVNxICk7XG5cbiAgICAgICAgdmFyIGZhY3RvciA9IGRpc3RhbmNlMiAvIGRpc3RhbmNlMTtcblxuICAgICAgICBpZiAodHdvRmluZ2Vyc1N0YXJ0SW5zaWRlKSB7XG4gICAgICAgICAgLy8gZGVsdGEgZmluZ2VyMVxuICAgICAgICAgIHZhciBkZjF4ID0gZjF4MiAtIGYxeDE7XG4gICAgICAgICAgdmFyIGRmMXkgPSBmMXkyIC0gZjF5MTsgLy8gZGVsdGEgZmluZ2VyIDJcblxuICAgICAgICAgIHZhciBkZjJ4ID0gZjJ4MiAtIGYyeDE7XG4gICAgICAgICAgdmFyIGRmMnkgPSBmMnkyIC0gZjJ5MTsgLy8gdHJhbnNsYXRpb24gaXMgdGhlIG5vcm1hbGlzZWQgdmVjdG9yIG9mIHRoZSB0d28gZmluZ2VycyBtb3ZlbWVudFxuICAgICAgICAgIC8vIGkuZS4gc28gcGluY2hpbmcgY2FuY2VscyBvdXQgYW5kIG1vdmluZyB0b2dldGhlciBwYW5zXG5cbiAgICAgICAgICB2YXIgdHggPSAoZGYxeCArIGRmMngpIC8gMjtcbiAgICAgICAgICB2YXIgdHkgPSAoZGYxeSArIGRmMnkpIC8gMjsgLy8gbm93IGNhbGN1bGF0ZSB0aGUgem9vbVxuXG4gICAgICAgICAgdmFyIHpvb20xID0gY3kuem9vbSgpO1xuICAgICAgICAgIHZhciB6b29tMiA9IHpvb20xICogZmFjdG9yO1xuICAgICAgICAgIHZhciBwYW4xID0gY3kucGFuKCk7IC8vIHRoZSBtb2RlbCBjZW50ZXIgcG9pbnQgY29udmVydGVkIHRvIHRoZSBjdXJyZW50IHJlbmRlcmVkIHBvc1xuXG4gICAgICAgICAgdmFyIGN0cnggPSBtb2RlbENlbnRlcjFbMF0gKiB6b29tMSArIHBhbjEueDtcbiAgICAgICAgICB2YXIgY3RyeSA9IG1vZGVsQ2VudGVyMVsxXSAqIHpvb20xICsgcGFuMS55O1xuICAgICAgICAgIHZhciBwYW4yID0ge1xuICAgICAgICAgICAgeDogLXpvb20yIC8gem9vbTEgKiAoY3RyeCAtIHBhbjEueCAtIHR4KSArIGN0cngsXG4gICAgICAgICAgICB5OiAtem9vbTIgLyB6b29tMSAqIChjdHJ5IC0gcGFuMS55IC0gdHkpICsgY3RyeVxuICAgICAgICAgIH07IC8vIHJlbW92ZSBkcmFnZ2VkIGVsZXNcblxuICAgICAgICAgIGlmIChfc3RhcnQgJiYgX3N0YXJ0LmFjdGl2ZSgpKSB7XG4gICAgICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG4gICAgICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKGRyYWdnZWRFbGVzKTtcbiAgICAgICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgIF9zdGFydC51bmFjdGl2YXRlKCkuZW1pdCgnZnJlZW9uJyk7XG5cbiAgICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2ZyZWUnKTtcblxuICAgICAgICAgICAgaWYgKHIuZHJhZ0RhdGEuZGlkRHJhZykge1xuICAgICAgICAgICAgICBfc3RhcnQuZW1pdCgnZHJhZ2ZyZWVvbicpO1xuXG4gICAgICAgICAgICAgIGRyYWdnZWRFbGVzLmVtaXQoJ2RyYWdmcmVlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3kudmlld3BvcnQoe1xuICAgICAgICAgICAgem9vbTogem9vbTIsXG4gICAgICAgICAgICBwYW46IHBhbjIsXG4gICAgICAgICAgICBjYW5jZWxPbkZhaWxlZFpvb206IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjeS5lbWl0KCdwaW5jaHpvb20nKTtcbiAgICAgICAgICBkaXN0YW5jZTEgPSBkaXN0YW5jZTI7XG4gICAgICAgICAgZjF4MSA9IGYxeDI7XG4gICAgICAgICAgZjF5MSA9IGYxeTI7XG4gICAgICAgICAgZjJ4MSA9IGYyeDI7XG4gICAgICAgICAgZjJ5MSA9IGYyeTI7XG4gICAgICAgICAgci5waW5jaGluZyA9IHRydWU7XG4gICAgICAgIH0gLy8gUmUtcHJvamVjdFxuXG5cbiAgICAgICAgaWYgKGUudG91Y2hlc1swXSkge1xuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbMF0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzFdID0gcG9zWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUudG91Y2hlc1sxXSkge1xuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzFdLmNsaWVudFgsIGUudG91Y2hlc1sxXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzNdID0gcG9zWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzJdLmNsaWVudFgsIGUudG91Y2hlc1syXS5jbGllbnRZKTtcbiAgICAgICAgICBub3dbNF0gPSBwb3NbMF07XG4gICAgICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGUudG91Y2hlc1swXSAmJiAhci50b3VjaERhdGEuZGlkU2VsZWN0IC8vIGRvbid0IGFsbG93IGJveCBzZWxlY3Rpb24gdG8gZGVncmFkZSB0byBzaW5nbGUgZmluZ2VyIGV2ZW50cyBsaWtlIHBhbm5pbmdcbiAgICAgICkge1xuICAgICAgICB2YXIgc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDtcbiAgICAgICAgdmFyIGxhc3QgPSByLnRvdWNoRGF0YS5sYXN0O1xuICAgICAgICB2YXIgbmVhcjtcblxuICAgICAgICBpZiAoIXIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyAmJiAhci5zd2lwZVBhbm5pbmcpIHtcbiAgICAgICAgICBuZWFyID0gci5maW5kTmVhcmVzdEVsZW1lbnQobm93WzBdLCBub3dbMV0sIHRydWUsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhcHR1cmUgJiYgc3RhcnQgIT0gbnVsbCkge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSAvLyBkcmFnZ2luZyBub2Rlc1xuXG5cbiAgICAgICAgaWYgKGNhcHR1cmUgJiYgc3RhcnQgIT0gbnVsbCAmJiByLm5vZGVJc0RyYWdnYWJsZShzdGFydCkpIHtcbiAgICAgICAgICBpZiAoaXNPdmVyVGhyZXNob2xkRHJhZykge1xuICAgICAgICAgICAgLy8gdGhlbiBkcmFnZ2luZyBjYW4gaGFwcGVuXG4gICAgICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG4gICAgICAgICAgICB2YXIganVzdFN0YXJ0ZWREcmFnID0gIXIuZHJhZ0RhdGEuZGlkRHJhZztcblxuICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICBhZGROb2Rlc1RvRHJhZyhkcmFnZ2VkRWxlcywge1xuICAgICAgICAgICAgICAgIGluRHJhZ0xheWVyOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByLmRyYWdEYXRhLmRpZERyYWcgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHRvdGFsU2hpZnQgPSB7XG4gICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgIHk6IDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChudW1iZXIkMShkaXNwWzBdKSAmJiBudW1iZXIkMShkaXNwWzFdKSkge1xuICAgICAgICAgICAgICB0b3RhbFNoaWZ0LnggKz0gZGlzcFswXTtcbiAgICAgICAgICAgICAgdG90YWxTaGlmdC55ICs9IGRpc3BbMV07XG5cbiAgICAgICAgICAgICAgaWYgKGp1c3RTdGFydGVkRHJhZykge1xuICAgICAgICAgICAgICAgIHIucmVkcmF3SGludCgnZWxlcycsIHRydWUpO1xuICAgICAgICAgICAgICAgIHZhciBkcmFnRGVsdGEgPSByLnRvdWNoRGF0YS5kcmFnRGVsdGE7XG5cbiAgICAgICAgICAgICAgICBpZiAoZHJhZ0RlbHRhICYmIG51bWJlciQxKGRyYWdEZWx0YVswXSkgJiYgbnVtYmVyJDEoZHJhZ0RlbHRhWzFdKSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTaGlmdC54ICs9IGRyYWdEZWx0YVswXTtcbiAgICAgICAgICAgICAgICAgIHRvdGFsU2hpZnQueSArPSBkcmFnRGVsdGFbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcyA9IHRydWU7XG4gICAgICAgICAgICBkcmFnZ2VkRWxlcy5zaWxlbnRTaGlmdCh0b3RhbFNoaWZ0KS5lbWl0KCdwb3NpdGlvbiBkcmFnJyk7XG4gICAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb25bMF0gPT0gZWFybGllclswXSAmJiByLnRvdWNoRGF0YS5zdGFydFBvc2l0aW9uWzFdID09IGVhcmxpZXJbMV0pIHtcbiAgICAgICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBrZWVwIHRyYWNrIG9mIGRyYWcgZGVsdGEgZm9yIGxhdGVyXG4gICAgICAgICAgICB2YXIgZHJhZ0RlbHRhID0gci50b3VjaERhdGEuZHJhZ0RlbHRhID0gci50b3VjaERhdGEuZHJhZ0RlbHRhIHx8IFtdO1xuXG4gICAgICAgICAgICBpZiAoZHJhZ0RlbHRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICBkcmFnRGVsdGEucHVzaChkaXNwWzBdKTtcbiAgICAgICAgICAgICAgZHJhZ0RlbHRhLnB1c2goZGlzcFsxXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkcmFnRGVsdGFbMF0gKz0gZGlzcFswXTtcbiAgICAgICAgICAgICAgZHJhZ0RlbHRhWzFdICs9IGRpc3BbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIHRvdWNobW92ZVxuXG5cbiAgICAgICAge1xuICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQgfHwgbmVhciwgWyd0b3VjaG1vdmUnLCAndGFwZHJhZycsICd2bW91c2Vtb3ZlJ10sIGUsIHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKCghc3RhcnQgfHwgIXN0YXJ0LmdyYWJiZWQoKSkgJiYgbmVhciAhPSBsYXN0KSB7XG4gICAgICAgICAgICBpZiAobGFzdCkge1xuICAgICAgICAgICAgICBsYXN0LmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhcGRyYWdvdXQnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmVhcikge1xuICAgICAgICAgICAgICBuZWFyLmVtaXQoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RhcGRyYWdvdmVyJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnRvdWNoRGF0YS5sYXN0ID0gbmVhcjtcbiAgICAgICAgfSAvLyBjaGVjayB0byBjYW5jZWwgdGFwaG9sZFxuXG4gICAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub3cubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChub3dbaV0gJiYgci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbltpXSAmJiBpc092ZXJUaHJlc2hvbGREcmFnKSB7XG4gICAgICAgICAgICAgIHIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBwYW5uaW5nXG5cblxuICAgICAgICBpZiAoY2FwdHVyZSAmJiAoc3RhcnQgPT0gbnVsbCB8fCBzdGFydC5wYW5uYWJsZSgpKSAmJiBjeS5wYW5uaW5nRW5hYmxlZCgpICYmIGN5LnVzZXJQYW5uaW5nRW5hYmxlZCgpKSB7XG4gICAgICAgICAgdmFyIGFsbG93UGFzc3Rocm91Z2ggPSBhbGxvd1Bhbm5pbmdQYXNzdGhyb3VnaChzdGFydCwgci50b3VjaERhdGEuc3RhcnRzKTtcblxuICAgICAgICAgIGlmIChhbGxvd1Bhc3N0aHJvdWdoKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmICghci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uKSB7XG4gICAgICAgICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IGFycmF5MnBvaW50KHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoci5zd2lwZVBhbm5pbmcpIHtcbiAgICAgICAgICAgICAgY3kucGFuQnkoe1xuICAgICAgICAgICAgICAgIHg6IGRpc3BbMF0gKiB6b29tLFxuICAgICAgICAgICAgICAgIHk6IGRpc3BbMV0gKiB6b29tXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjeS5lbWl0KCdkcmFncGFuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzT3ZlclRocmVzaG9sZERyYWcpIHtcbiAgICAgICAgICAgICAgci5zd2lwZVBhbm5pbmcgPSB0cnVlO1xuICAgICAgICAgICAgICBjeS5wYW5CeSh7XG4gICAgICAgICAgICAgICAgeDogZHggKiB6b29tLFxuICAgICAgICAgICAgICAgIHk6IGR5ICogem9vbVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY3kuZW1pdCgnZHJhZ3BhbicpO1xuXG4gICAgICAgICAgICAgIGlmIChzdGFydCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgICAgICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gUmUtcHJvamVjdFxuXG5cbiAgICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1swXS5jbGllbnRYLCBlLnRvdWNoZXNbMF0uY2xpZW50WSk7XG4gICAgICAgICAgbm93WzBdID0gcG9zWzBdO1xuICAgICAgICAgIG5vd1sxXSA9IHBvc1sxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgICBlYXJsaWVyW2pdID0gbm93W2pdO1xuICAgICAgfSAvLyB0aGUgYWN0aXZlIGJnIGluZGljYXRvciBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIG1ha2luZyBhIHN3aXBlIHRoYXQgaXMgbmVpdGhlciBmb3IgZHJhZ2dpbmcgbm9kZXMgb3IgcGFubmluZ1xuXG5cbiAgICAgIGlmIChjYXB0dXJlICYmIGUudG91Y2hlcy5sZW5ndGggPiAwICYmICFyLmhvdmVyRGF0YS5kcmFnZ2luZ0VsZXMgJiYgIXIuc3dpcGVQYW5uaW5nICYmIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHIuZGF0YS5iZ0FjdGl2ZVBvc2lzdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH1cbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIHRvdWNoY2FuY2VsSGFuZGxlcjtcbiAgICByLnJlZ2lzdGVyQmluZGluZyhjb250YWluZXJXaW5kb3csICd0b3VjaGNhbmNlbCcsIHRvdWNoY2FuY2VsSGFuZGxlciA9IGZ1bmN0aW9uIHRvdWNoY2FuY2VsSGFuZGxlcihlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICB2YXIgc3RhcnQgPSByLnRvdWNoRGF0YS5zdGFydDtcbiAgICAgIHIudG91Y2hEYXRhLmNhcHR1cmUgPSBmYWxzZTtcblxuICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgdG91Y2hlbmRIYW5kbGVyLCBkaWREb3VibGVUb3VjaCwgdG91Y2hUaW1lb3V0LCBwcmV2VG91Y2hUaW1lU3RhbXA7XG4gICAgci5yZWdpc3RlckJpbmRpbmcoY29udGFpbmVyV2luZG93LCAndG91Y2hlbmQnLCB0b3VjaGVuZEhhbmRsZXIgPSBmdW5jdGlvbiB0b3VjaGVuZEhhbmRsZXIoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgdmFyIHN0YXJ0ID0gci50b3VjaERhdGEuc3RhcnQ7XG4gICAgICB2YXIgY2FwdHVyZSA9IHIudG91Y2hEYXRhLmNhcHR1cmU7XG5cbiAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgci50b3VjaERhdGEuY2FwdHVyZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VsZWN0ID0gci5zZWxlY3Rpb247XG4gICAgICByLnN3aXBlUGFubmluZyA9IGZhbHNlO1xuICAgICAgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzID0gZmFsc2U7XG4gICAgICB2YXIgY3kgPSByLmN5O1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICB2YXIgbm93ID0gci50b3VjaERhdGEubm93O1xuICAgICAgdmFyIGVhcmxpZXIgPSByLnRvdWNoRGF0YS5lYXJsaWVyO1xuXG4gICAgICBpZiAoZS50b3VjaGVzWzBdKSB7XG4gICAgICAgIHZhciBwb3MgPSByLnByb2plY3RJbnRvVmlld3BvcnQoZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZKTtcbiAgICAgICAgbm93WzBdID0gcG9zWzBdO1xuICAgICAgICBub3dbMV0gPSBwb3NbMV07XG4gICAgICB9XG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMV0pIHtcbiAgICAgICAgdmFyIHBvcyA9IHIucHJvamVjdEludG9WaWV3cG9ydChlLnRvdWNoZXNbMV0uY2xpZW50WCwgZS50b3VjaGVzWzFdLmNsaWVudFkpO1xuICAgICAgICBub3dbMl0gPSBwb3NbMF07XG4gICAgICAgIG5vd1szXSA9IHBvc1sxXTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlc1syXSkge1xuICAgICAgICB2YXIgcG9zID0gci5wcm9qZWN0SW50b1ZpZXdwb3J0KGUudG91Y2hlc1syXS5jbGllbnRYLCBlLnRvdWNoZXNbMl0uY2xpZW50WSk7XG4gICAgICAgIG5vd1s0XSA9IHBvc1swXTtcbiAgICAgICAgbm93WzVdID0gcG9zWzFdO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgc3RhcnQudW5hY3RpdmF0ZSgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgY3R4VGFwZW5kO1xuXG4gICAgICBpZiAoci50b3VjaERhdGEuY3h0KSB7XG4gICAgICAgIGN0eFRhcGVuZCA9IHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgIHR5cGU6ICdjeHR0YXBlbmQnLFxuICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgICAgc3RhcnQuZW1pdChjdHhUYXBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN5LmVtaXQoY3R4VGFwZW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghci50b3VjaERhdGEuY3h0RHJhZ2dlZCkge1xuICAgICAgICAgIHZhciBjdHhUYXAgPSB7XG4gICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBlLFxuICAgICAgICAgICAgdHlwZTogJ2N4dHRhcCcsXG4gICAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoc3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXJ0LmVtaXQoY3R4VGFwKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3kuZW1pdChjdHhUYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyLnRvdWNoRGF0YS5zdGFydCkge1xuICAgICAgICAgIHIudG91Y2hEYXRhLnN0YXJ0Ll9wcml2YXRlLmdyYWJiZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIudG91Y2hEYXRhLmN4dCA9IGZhbHNlO1xuICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gbm8gbW9yZSBib3ggc2VsZWN0aW9uIGlmIHdlIGRvbid0IGhhdmUgdGhyZWUgZmluZ2Vyc1xuXG5cbiAgICAgIGlmICghZS50b3VjaGVzWzJdICYmIGN5LmJveFNlbGVjdGlvbkVuYWJsZWQoKSAmJiByLnRvdWNoRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgci50b3VjaERhdGEuc2VsZWN0aW5nID0gZmFsc2U7XG4gICAgICAgIHZhciBib3ggPSBjeS5jb2xsZWN0aW9uKHIuZ2V0QWxsSW5Cb3goc2VsZWN0WzBdLCBzZWxlY3RbMV0sIHNlbGVjdFsyXSwgc2VsZWN0WzNdKSk7XG4gICAgICAgIHNlbGVjdFswXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2VsZWN0WzFdID0gdW5kZWZpbmVkO1xuICAgICAgICBzZWxlY3RbMl0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHNlbGVjdFszXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgc2VsZWN0WzRdID0gMDtcbiAgICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICAgICAgY3kuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ2JveGVuZCcsXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZSxcbiAgICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgICAgeDogbm93WzBdLFxuICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgZWxlV291bGRCZVNlbGVjdGVkID0gZnVuY3Rpb24gZWxlV291bGRCZVNlbGVjdGVkKGVsZSkge1xuICAgICAgICAgIHJldHVybiBlbGUuc2VsZWN0YWJsZSgpICYmICFlbGUuc2VsZWN0ZWQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBib3guZW1pdCgnYm94Jykuc3RkRmlsdGVyKGVsZVdvdWxkQmVTZWxlY3RlZCkuc2VsZWN0KCkuZW1pdCgnYm94c2VsZWN0Jyk7XG5cbiAgICAgICAgaWYgKGJveC5ub25lbXB0eSgpKSB7XG4gICAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByLnJlZHJhdygpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhcnQgIT0gbnVsbCkge1xuICAgICAgICBzdGFydC51bmFjdGl2YXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlLnRvdWNoZXNbMl0pIHtcbiAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChlLnRvdWNoZXNbMV0pIDsgZWxzZSBpZiAoZS50b3VjaGVzWzBdKSA7IGVsc2UgaWYgKCFlLnRvdWNoZXNbMF0pIHtcbiAgICAgICAgci5kYXRhLmJnQWN0aXZlUG9zaXN0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICByLnJlZHJhd0hpbnQoJ3NlbGVjdCcsIHRydWUpO1xuICAgICAgICB2YXIgZHJhZ2dlZEVsZXMgPSByLmRyYWdEYXRhLnRvdWNoRHJhZ0VsZXM7XG5cbiAgICAgICAgaWYgKHN0YXJ0ICE9IG51bGwpIHtcbiAgICAgICAgICB2YXIgc3RhcnRXYXNHcmFiYmVkID0gc3RhcnQuX3ByaXZhdGUuZ3JhYmJlZDtcbiAgICAgICAgICBmcmVlRHJhZ2dlZEVsZW1lbnRzKGRyYWdnZWRFbGVzKTtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcblxuICAgICAgICAgIGlmIChzdGFydFdhc0dyYWJiZWQpIHtcbiAgICAgICAgICAgIHN0YXJ0LmVtaXQoJ2ZyZWVvbicpO1xuICAgICAgICAgICAgZHJhZ2dlZEVsZXMuZW1pdCgnZnJlZScpO1xuXG4gICAgICAgICAgICBpZiAoci5kcmFnRGF0YS5kaWREcmFnKSB7XG4gICAgICAgICAgICAgIHN0YXJ0LmVtaXQoJ2RyYWdmcmVlb24nKTtcbiAgICAgICAgICAgICAgZHJhZ2dlZEVsZXMuZW1pdCgnZHJhZ2ZyZWUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ3RvdWNoZW5kJywgJ3RhcGVuZCcsICd2bW91c2V1cCcsICd0YXBkcmFnb3V0J10sIGUsIHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXJ0LnVuYWN0aXZhdGUoKTtcbiAgICAgICAgICByLnRvdWNoRGF0YS5zdGFydCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIG5lYXIgPSByLmZpbmROZWFyZXN0RWxlbWVudChub3dbMF0sIG5vd1sxXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgdHJpZ2dlckV2ZW50cyhuZWFyLCBbJ3RvdWNoZW5kJywgJ3RhcGVuZCcsICd2bW91c2V1cCcsICd0YXBkcmFnb3V0J10sIGUsIHtcbiAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgIHk6IG5vd1sxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGR4ID0gci50b3VjaERhdGEuc3RhcnRQb3NpdGlvblswXSAtIG5vd1swXTtcbiAgICAgICAgdmFyIGR4MiA9IGR4ICogZHg7XG4gICAgICAgIHZhciBkeSA9IHIudG91Y2hEYXRhLnN0YXJ0UG9zaXRpb25bMV0gLSBub3dbMV07XG4gICAgICAgIHZhciBkeTIgPSBkeSAqIGR5O1xuICAgICAgICB2YXIgZGlzdDIgPSBkeDIgKyBkeTI7XG4gICAgICAgIHZhciByZGlzdDIgPSBkaXN0MiAqIHpvb20gKiB6b29tOyAvLyBUYXAgZXZlbnQsIHJvdWdobHkgc2FtZSBhcyBtb3VzZSBjbGljayBldmVudCBmb3IgdG91Y2hcblxuICAgICAgICBpZiAoIXIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQpIHtcbiAgICAgICAgICBpZiAoIXN0YXJ0KSB7XG4gICAgICAgICAgICBjeS4kKCc6c2VsZWN0ZWQnKS51bnNlbGVjdChbJ3RhcHVuc2VsZWN0J10pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsndGFwJywgJ3ZjbGljayddLCBlLCB7XG4gICAgICAgICAgICB4OiBub3dbMF0sXG4gICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkaWREb3VibGVUb3VjaCA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKGUudGltZVN0YW1wIC0gcHJldlRvdWNoVGltZVN0YW1wIDw9IGN5Lm11bHRpQ2xpY2tEZWJvdW5jZVRpbWUoKSkge1xuICAgICAgICAgICAgdG91Y2hUaW1lb3V0ICYmIGNsZWFyVGltZW91dCh0b3VjaFRpbWVvdXQpO1xuICAgICAgICAgICAgZGlkRG91YmxlVG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgcHJldlRvdWNoVGltZVN0YW1wID0gbnVsbDtcbiAgICAgICAgICAgIHRyaWdnZXJFdmVudHMoc3RhcnQsIFsnZGJsdGFwJywgJ3ZkYmxjbGljayddLCBlLCB7XG4gICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgeTogbm93WzFdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG91Y2hUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChkaWREb3VibGVUb3VjaCkgcmV0dXJuO1xuICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnRzKHN0YXJ0LCBbJ29uZXRhcCcsICd2b25lY2xpY2snXSwgZSwge1xuICAgICAgICAgICAgICAgIHg6IG5vd1swXSxcbiAgICAgICAgICAgICAgICB5OiBub3dbMV1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBjeS5tdWx0aUNsaWNrRGVib3VuY2VUaW1lKCkpO1xuICAgICAgICAgICAgcHJldlRvdWNoVGltZVN0YW1wID0gZS50aW1lU3RhbXA7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIFByZXBhcmUgdG8gc2VsZWN0IHRoZSBjdXJyZW50bHkgdG91Y2hlZCBub2RlLCBvbmx5IGlmIGl0IGhhc24ndCBiZWVuIGRyYWdnZWQgcGFzdCBhIGNlcnRhaW4gZGlzdGFuY2VcblxuXG4gICAgICAgIGlmIChzdGFydCAhPSBudWxsICYmICFyLmRyYWdEYXRhLmRpZERyYWcgLy8gZGlkbid0IGRyYWcgbm9kZXMgYXJvdW5kXG4gICAgICAgICYmIHN0YXJ0Ll9wcml2YXRlLnNlbGVjdGFibGUgJiYgcmRpc3QyIDwgci50b3VjaFRhcFRocmVzaG9sZDIgJiYgIXIucGluY2hpbmcgLy8gcGluY2ggdG8gem9vbSBzaG91bGQgbm90IGFmZmVjdCBzZWxlY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGN5LnNlbGVjdGlvblR5cGUoKSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIGN5LiQoaXNTZWxlY3RlZCkudW5tZXJnZShzdGFydCkudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXJ0LnNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgICAgc3RhcnQudW5zZWxlY3QoWyd0YXB1bnNlbGVjdCddKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXJ0LnNlbGVjdChbJ3RhcHNlbGVjdCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIudG91Y2hEYXRhLnNpbmdsZVRvdWNoTW92ZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5vdy5sZW5ndGg7IGorKykge1xuICAgICAgICBlYXJsaWVyW2pdID0gbm93W2pdO1xuICAgICAgfVxuXG4gICAgICByLmRyYWdEYXRhLmRpZERyYWcgPSBmYWxzZTsgLy8gcmVzZXQgZm9yIG5leHQgdG91Y2hzdGFydFxuXG4gICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByLnRvdWNoRGF0YS5kcmFnRGVsdGEgPSBbXTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnRQb3NpdGlvbiA9IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXTtcbiAgICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBudWxsO1xuICAgICAgICByLnRvdWNoRGF0YS5kaWRTZWxlY3QgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgLy8gdGhlIG9sZCBzdGFydCBnbG9iYWwgcG9zJ24gbWF5IG5vdCBiZSB0aGUgc2FtZSBmaW5nZXIgdGhhdCByZW1haW5zXG4gICAgICAgICAgci50b3VjaERhdGEuc3RhcnRHUG9zaXRpb24gPSBbZS50b3VjaGVzWzBdLmNsaWVudFgsIGUudG91Y2hlc1swXS5jbGllbnRZXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHIucGluY2hpbmcgPSBmYWxzZTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3KCk7XG4gICAgICB9IC8vci5yZWRyYXcoKTtcblxuICAgIH0sIGZhbHNlKTsgLy8gZmFsbGJhY2sgY29tcGF0aWJpbGl0eSBsYXllciBmb3IgbXMgcG9pbnRlciBldmVudHNcblxuICAgIGlmICh0eXBlb2YgVG91Y2hFdmVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBwb2ludGVycyA9IFtdO1xuXG4gICAgICB2YXIgbWFrZVRvdWNoID0gZnVuY3Rpb24gbWFrZVRvdWNoKGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbGllbnRYOiBlLmNsaWVudFgsXG4gICAgICAgICAgY2xpZW50WTogZS5jbGllbnRZLFxuICAgICAgICAgIGZvcmNlOiAxLFxuICAgICAgICAgIGlkZW50aWZpZXI6IGUucG9pbnRlcklkLFxuICAgICAgICAgIHBhZ2VYOiBlLnBhZ2VYLFxuICAgICAgICAgIHBhZ2VZOiBlLnBhZ2VZLFxuICAgICAgICAgIHJhZGl1c1g6IGUud2lkdGggLyAyLFxuICAgICAgICAgIHJhZGl1c1k6IGUuaGVpZ2h0IC8gMixcbiAgICAgICAgICBzY3JlZW5YOiBlLnNjcmVlblgsXG4gICAgICAgICAgc2NyZWVuWTogZS5zY3JlZW5ZLFxuICAgICAgICAgIHRhcmdldDogZS50YXJnZXRcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBtYWtlUG9pbnRlciA9IGZ1bmN0aW9uIG1ha2VQb2ludGVyKGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICB0b3VjaDogbWFrZVRvdWNoKGUpXG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICB2YXIgYWRkUG9pbnRlciA9IGZ1bmN0aW9uIGFkZFBvaW50ZXIoZSkge1xuICAgICAgICBwb2ludGVycy5wdXNoKG1ha2VQb2ludGVyKGUpKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciByZW1vdmVQb2ludGVyID0gZnVuY3Rpb24gcmVtb3ZlUG9pbnRlcihlKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgcCA9IHBvaW50ZXJzW2ldO1xuXG4gICAgICAgICAgaWYgKHAuZXZlbnQucG9pbnRlcklkID09PSBlLnBvaW50ZXJJZCkge1xuICAgICAgICAgICAgcG9pbnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgdmFyIHVwZGF0ZVBvaW50ZXIgPSBmdW5jdGlvbiB1cGRhdGVQb2ludGVyKGUpIHtcbiAgICAgICAgdmFyIHAgPSBwb2ludGVycy5maWx0ZXIoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICByZXR1cm4gcC5ldmVudC5wb2ludGVySWQgPT09IGUucG9pbnRlcklkO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgcC5ldmVudCA9IGU7XG4gICAgICAgIHAudG91Y2ggPSBtYWtlVG91Y2goZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgYWRkVG91Y2hlc1RvRXZlbnQgPSBmdW5jdGlvbiBhZGRUb3VjaGVzVG9FdmVudChlKSB7XG4gICAgICAgIGUudG91Y2hlcyA9IHBvaW50ZXJzLm1hcChmdW5jdGlvbiAocCkge1xuICAgICAgICAgIHJldHVybiBwLnRvdWNoO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBwb2ludGVySXNNb3VzZSA9IGZ1bmN0aW9uIHBvaW50ZXJJc01vdXNlKGUpIHtcbiAgICAgICAgcmV0dXJuIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgfHwgZS5wb2ludGVyVHlwZSA9PT0gNDtcbiAgICAgIH07XG5cbiAgICAgIHIucmVnaXN0ZXJCaW5kaW5nKHIuY29udGFpbmVyLCAncG9pbnRlcmRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gbW91c2UgYWxyZWFkeSBoYW5kbGVkXG5cblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFkZFBvaW50ZXIoZSk7XG4gICAgICAgIGFkZFRvdWNoZXNUb0V2ZW50KGUpO1xuICAgICAgICB0b3VjaHN0YXJ0SGFuZGxlcihlKTtcbiAgICAgIH0pO1xuICAgICAgci5yZWdpc3RlckJpbmRpbmcoci5jb250YWluZXIsICdwb2ludGVydXAnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gbW91c2UgYWxyZWFkeSBoYW5kbGVkXG5cblxuICAgICAgICByZW1vdmVQb2ludGVyKGUpO1xuICAgICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgICAgdG91Y2hlbmRIYW5kbGVyKGUpO1xuICAgICAgfSk7XG4gICAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJjYW5jZWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAocG9pbnRlcklzTW91c2UoZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gbW91c2UgYWxyZWFkeSBoYW5kbGVkXG5cblxuICAgICAgICByZW1vdmVQb2ludGVyKGUpO1xuICAgICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgICAgdG91Y2hjYW5jZWxIYW5kbGVyKGUpO1xuICAgICAgfSk7XG4gICAgICByLnJlZ2lzdGVyQmluZGluZyhyLmNvbnRhaW5lciwgJ3BvaW50ZXJtb3ZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKHBvaW50ZXJJc01vdXNlKGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIG1vdXNlIGFscmVhZHkgaGFuZGxlZFxuXG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB1cGRhdGVQb2ludGVyKGUpO1xuICAgICAgICBhZGRUb3VjaGVzVG9FdmVudChlKTtcbiAgICAgICAgdG91Y2htb3ZlSGFuZGxlcihlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICB2YXIgQlJwJDIgPSB7fTtcblxuICBCUnAkMi5nZW5lcmF0ZVBvbHlnb24gPSBmdW5jdGlvbiAobmFtZSwgcG9pbnRzKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1tuYW1lXSA9IHtcbiAgICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHBvaW50czogcG9pbnRzLFxuICAgICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIubm9kZVNoYXBlSW1wbCgncG9seWdvbicsIGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHRoaXMucG9pbnRzKTtcbiAgICAgIH0sXG4gICAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgdGhpcy5wb2ludHMsIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCBwYWRkaW5nKTtcbiAgICAgIH0sXG4gICAgICBjaGVja1BvaW50OiBmdW5jdGlvbiBjaGVja1BvaW50KHgsIHksIHBhZGRpbmcsIHdpZHRoLCBoZWlnaHQsIGNlbnRlclgsIGNlbnRlclkpIHtcbiAgICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBCUnAkMi5nZW5lcmF0ZUVsbGlwc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1snZWxsaXBzZSddID0ge1xuICAgICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgICBuYW1lOiAnZWxsaXBzZScsXG4gICAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICB9LFxuICAgICAgaW50ZXJzZWN0TGluZTogZnVuY3Rpb24gaW50ZXJzZWN0TGluZShub2RlWCwgbm9kZVksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHBhZGRpbmcpIHtcbiAgICAgICAgcmV0dXJuIGludGVyc2VjdExpbmVFbGxpcHNlKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGggLyAyICsgcGFkZGluZywgaGVpZ2h0IC8gMiArIHBhZGRpbmcpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICByZXR1cm4gY2hlY2tJbkVsbGlwc2UoeCwgeSwgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSwgcGFkZGluZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBCUnAkMi5nZW5lcmF0ZVJvdW5kUG9seWdvbiA9IGZ1bmN0aW9uIChuYW1lLCBwb2ludHMpIHtcbiAgICAvLyBQcmUtY29tcHV0ZSBjb250cm9sIHBvaW50c1xuICAgIC8vIFNpbmNlIHRoZXNlIHBvaW50cyBkZXBlbmQgb24gdGhlIHJhZGl1cyBsZW5ndGggKHdoaWNoIGluIHR1cm5zIGRlcGVuZCBvbiB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBub2RlKSB3ZSB3aWxsIG9ubHkgcHJlLWNvbXB1dGVcbiAgICAvLyB0aGUgdW5pdCB2ZWN0b3JzLlxuICAgIC8vIEZvciBzaW1wbGljaXR5IHRoZSBsYXlvdXQgd2lsbCBiZTpcbiAgICAvLyBbIHAwLCBVbml0VmVjdG9yUDBQMSwgcDEsIFVuaVZlY3RvclAxUDIsIC4uLiwgcG4sIFVuaXRWZWN0b3JQblAwIF1cbiAgICB2YXIgYWxsUG9pbnRzID0gbmV3IEFycmF5KHBvaW50cy5sZW5ndGggKiAyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZUluZGV4ID0gaSAqIDI7XG4gICAgICB2YXIgZGVzdEluZGV4ID0gdm9pZCAwO1xuXG4gICAgICBpZiAoaSA8IHBvaW50cy5sZW5ndGggLyAyIC0gMSkge1xuICAgICAgICBkZXN0SW5kZXggPSAoaSArIDEpICogMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlc3RJbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIGFsbFBvaW50c1tpICogNF0gPSBwb2ludHNbc291cmNlSW5kZXhdO1xuICAgICAgYWxsUG9pbnRzW2kgKiA0ICsgMV0gPSBwb2ludHNbc291cmNlSW5kZXggKyAxXTtcbiAgICAgIHZhciB4RGVzdCA9IHBvaW50c1tkZXN0SW5kZXhdIC0gcG9pbnRzW3NvdXJjZUluZGV4XTtcbiAgICAgIHZhciB5RGVzdCA9IHBvaW50c1tkZXN0SW5kZXggKyAxXSAtIHBvaW50c1tzb3VyY2VJbmRleCArIDFdO1xuICAgICAgdmFyIG5vcm0gPSBNYXRoLnNxcnQoeERlc3QgKiB4RGVzdCArIHlEZXN0ICogeURlc3QpO1xuICAgICAgYWxsUG9pbnRzW2kgKiA0ICsgMl0gPSB4RGVzdCAvIG5vcm07XG4gICAgICBhbGxQb2ludHNbaSAqIDQgKyAzXSA9IHlEZXN0IC8gbm9ybTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzW25hbWVdID0ge1xuICAgICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgcG9pbnRzOiBhbGxQb2ludHMsXG4gICAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKCdyb3VuZC1wb2x5Z29uJywgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgdGhpcy5wb2ludHMpO1xuICAgICAgfSxcbiAgICAgIGludGVyc2VjdExpbmU6IGZ1bmN0aW9uIGludGVyc2VjdExpbmUobm9kZVgsIG5vZGVZLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiByb3VuZFBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIHRoaXMucG9pbnRzLCBub2RlWCwgbm9kZVksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICByZXR1cm4gcG9pbnRJbnNpZGVSb3VuZFBvbHlnb24oeCwgeSwgdGhpcy5wb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgQlJwJDIuZ2VuZXJhdGVSb3VuZFJlY3RhbmdsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlU2hhcGVzWydyb3VuZC1yZWN0YW5nbGUnXSA9IHRoaXMubm9kZVNoYXBlc1sncm91bmRyZWN0YW5nbGUnXSA9IHtcbiAgICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgICAgbmFtZTogJ3JvdW5kLXJlY3RhbmdsZScsXG4gICAgICBwb2ludHM6IGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIH0sXG4gICAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgICB9LFxuICAgICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdmFyIGRpYW0gPSBjb3JuZXJSYWRpdXMgKiAyOyAvLyBDaGVjayBoQm94XG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCAtIGRpYW0sIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSBkaWFtLCBoZWlnaHQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gQ2hlY2sgdG9wIGxlZnQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYIC0gd2lkdGggLyAyICsgY29ybmVyUmFkaXVzLCBjZW50ZXJZIC0gaGVpZ2h0IC8gMiArIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyBDaGVjayB0b3AgcmlnaHQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYICsgd2lkdGggLyAyIC0gY29ybmVyUmFkaXVzLCBjZW50ZXJZIC0gaGVpZ2h0IC8gMiArIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyBDaGVjayBib3R0b20gcmlnaHQgcXVhcnRlciBjaXJjbGVcblxuXG4gICAgICAgIGlmIChjaGVja0luRWxsaXBzZSh4LCB5LCBkaWFtLCBkaWFtLCBjZW50ZXJYICsgd2lkdGggLyAyIC0gY29ybmVyUmFkaXVzLCBjZW50ZXJZICsgaGVpZ2h0IC8gMiAtIGNvcm5lclJhZGl1cywgcGFkZGluZykpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyBDaGVjayBib3R0b20gbGVmdCBxdWFydGVyIGNpcmNsZVxuXG5cbiAgICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggLSB3aWR0aCAvIDIgKyBjb3JuZXJSYWRpdXMsIGNlbnRlclkgKyBoZWlnaHQgLyAyIC0gY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgQlJwJDIuZ2VuZXJhdGVDdXRSZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1snY3V0LXJlY3RhbmdsZSddID0gdGhpcy5ub2RlU2hhcGVzWydjdXRyZWN0YW5nbGUnXSA9IHtcbiAgICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgICAgbmFtZTogJ2N1dC1yZWN0YW5nbGUnLFxuICAgICAgY29ybmVyTGVuZ3RoOiBnZXRDdXRSZWN0YW5nbGVDb3JuZXJMZW5ndGgoKSxcbiAgICAgIHBvaW50czogZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDQsIDApLFxuICAgICAgZHJhdzogZnVuY3Rpb24gZHJhdyhjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIubm9kZVNoYXBlSW1wbCh0aGlzLm5hbWUsIGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgfSxcbiAgICAgIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHM6IGZ1bmN0aW9uIGdlbmVyYXRlQ3V0VHJpYW5nbGVQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICB2YXIgY2wgPSB0aGlzLmNvcm5lckxlbmd0aDtcbiAgICAgICAgdmFyIGhoID0gaGVpZ2h0IC8gMjtcbiAgICAgICAgdmFyIGh3ID0gd2lkdGggLyAyO1xuICAgICAgICB2YXIgeEJlZ2luID0gY2VudGVyWCAtIGh3O1xuICAgICAgICB2YXIgeEVuZCA9IGNlbnRlclggKyBodztcbiAgICAgICAgdmFyIHlCZWdpbiA9IGNlbnRlclkgLSBoaDtcbiAgICAgICAgdmFyIHlFbmQgPSBjZW50ZXJZICsgaGg7IC8vIHBvaW50cyBhcmUgaW4gY2xvY2t3aXNlIG9yZGVyLCBpbm5lciAoaW1hZ2luYXJ5KSB0cmlhbmdsZSBwdCBvbiBbNCwgNV1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGNsLCB4QmVnaW4gKyBjbCwgeUJlZ2luLCB4QmVnaW4gKyBjbCwgeUJlZ2luICsgY2xdLFxuICAgICAgICAgIHRvcFJpZ2h0OiBbeEVuZCAtIGNsLCB5QmVnaW4sIHhFbmQsIHlCZWdpbiArIGNsLCB4RW5kIC0gY2wsIHlCZWdpbiArIGNsXSxcbiAgICAgICAgICBib3R0b21SaWdodDogW3hFbmQsIHlFbmQgLSBjbCwgeEVuZCAtIGNsLCB5RW5kLCB4RW5kIC0gY2wsIHlFbmQgLSBjbF0sXG4gICAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIGNsLCB5RW5kLCB4QmVnaW4sIHlFbmQgLSBjbCwgeEJlZ2luICsgY2wsIHlFbmQgLSBjbF1cbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgICB2YXIgY1B0cyA9IHRoaXMuZ2VuZXJhdGVDdXRUcmlhbmdsZVB0cyh3aWR0aCArIDIgKiBwYWRkaW5nLCBoZWlnaHQgKyAyICogcGFkZGluZywgbm9kZVgsIG5vZGVZKTtcbiAgICAgICAgdmFyIHB0cyA9IFtdLmNvbmNhdC5hcHBseShbXSwgW2NQdHMudG9wTGVmdC5zcGxpY2UoMCwgNCksIGNQdHMudG9wUmlnaHQuc3BsaWNlKDAsIDQpLCBjUHRzLmJvdHRvbVJpZ2h0LnNwbGljZSgwLCA0KSwgY1B0cy5ib3R0b21MZWZ0LnNwbGljZSgwLCA0KV0pO1xuICAgICAgICByZXR1cm4gcG9seWdvbkludGVyc2VjdExpbmUoeCwgeSwgcHRzLCBub2RlWCwgbm9kZVkpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICAvLyBDaGVjayBoQm94XG4gICAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb24oeCwgeSwgdGhpcy5wb2ludHMsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQgLSAyICogdGhpcy5jb3JuZXJMZW5ndGgsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSAyICogdGhpcy5jb3JuZXJMZW5ndGgsIGhlaWdodCwgWzAsIC0xXSwgcGFkZGluZykpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXRUcmlhbmdsZVB0cyA9IHRoaXMuZ2VuZXJhdGVDdXRUcmlhbmdsZVB0cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKTtcbiAgICAgICAgcmV0dXJuIHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBjdXRUcmlhbmdsZVB0cy50b3BMZWZ0KSB8fCBwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgY3V0VHJpYW5nbGVQdHMudG9wUmlnaHQpIHx8IHBvaW50SW5zaWRlUG9seWdvblBvaW50cyh4LCB5LCBjdXRUcmlhbmdsZVB0cy5ib3R0b21SaWdodCkgfHwgcG9pbnRJbnNpZGVQb2x5Z29uUG9pbnRzKHgsIHksIGN1dFRyaWFuZ2xlUHRzLmJvdHRvbUxlZnQpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgQlJwJDIuZ2VuZXJhdGVCYXJyZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1snYmFycmVsJ10gPSB7XG4gICAgICByZW5kZXJlcjogdGhpcyxcbiAgICAgIG5hbWU6ICdiYXJyZWwnLFxuICAgICAgcG9pbnRzOiBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNCwgMCksXG4gICAgICBkcmF3OiBmdW5jdGlvbiBkcmF3KGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5ub2RlU2hhcGVJbXBsKHRoaXMubmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICB9LFxuICAgICAgaW50ZXJzZWN0TGluZTogZnVuY3Rpb24gaW50ZXJzZWN0TGluZShub2RlWCwgbm9kZVksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHBhZGRpbmcpIHtcbiAgICAgICAgLy8gdXNlIHR3byBmaXhlZCB0IHZhbHVlcyBmb3IgdGhlIGJlemllciBjdXJ2ZSBhcHByb3hpbWF0aW9uXG4gICAgICAgIHZhciB0MCA9IDAuMTU7XG4gICAgICAgIHZhciB0MSA9IDAuNTtcbiAgICAgICAgdmFyIHQyID0gMC44NTtcbiAgICAgICAgdmFyIGJQdHMgPSB0aGlzLmdlbmVyYXRlQmFycmVsQmV6aWVyUHRzKHdpZHRoICsgMiAqIHBhZGRpbmcsIGhlaWdodCArIDIgKiBwYWRkaW5nLCBub2RlWCwgbm9kZVkpO1xuXG4gICAgICAgIHZhciBhcHByb3hpbWF0ZUJhcnJlbEN1cnZlUHRzID0gZnVuY3Rpb24gYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhwdHMpIHtcbiAgICAgICAgICAvLyBhcHByb3hpbWF0ZSBjdXJ2ZSBwdHMgYmFzZWQgb24gdGhlIHR3byB0IHZhbHVlc1xuICAgICAgICAgIHZhciBtMCA9IHFiZXppZXJQdEF0KHtcbiAgICAgICAgICAgIHg6IHB0c1swXSxcbiAgICAgICAgICAgIHk6IHB0c1sxXVxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIHg6IHB0c1syXSxcbiAgICAgICAgICAgIHk6IHB0c1szXVxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIHg6IHB0c1s0XSxcbiAgICAgICAgICAgIHk6IHB0c1s1XVxuICAgICAgICAgIH0sIHQwKTtcbiAgICAgICAgICB2YXIgbTEgPSBxYmV6aWVyUHRBdCh7XG4gICAgICAgICAgICB4OiBwdHNbMF0sXG4gICAgICAgICAgICB5OiBwdHNbMV1cbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICB4OiBwdHNbMl0sXG4gICAgICAgICAgICB5OiBwdHNbM11cbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICB4OiBwdHNbNF0sXG4gICAgICAgICAgICB5OiBwdHNbNV1cbiAgICAgICAgICB9LCB0MSk7XG4gICAgICAgICAgdmFyIG0yID0gcWJlemllclB0QXQoe1xuICAgICAgICAgICAgeDogcHRzWzBdLFxuICAgICAgICAgICAgeTogcHRzWzFdXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgeDogcHRzWzJdLFxuICAgICAgICAgICAgeTogcHRzWzNdXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgeDogcHRzWzRdLFxuICAgICAgICAgICAgeTogcHRzWzVdXG4gICAgICAgICAgfSwgdDIpO1xuICAgICAgICAgIHJldHVybiBbcHRzWzBdLCBwdHNbMV0sIG0wLngsIG0wLnksIG0xLngsIG0xLnksIG0yLngsIG0yLnksIHB0c1s0XSwgcHRzWzVdXTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcHRzID0gW10uY29uY2F0KGFwcHJveGltYXRlQmFycmVsQ3VydmVQdHMoYlB0cy50b3BMZWZ0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLnRvcFJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbVJpZ2h0KSwgYXBwcm94aW1hdGVCYXJyZWxDdXJ2ZVB0cyhiUHRzLmJvdHRvbUxlZnQpKTtcbiAgICAgICAgcmV0dXJuIHBvbHlnb25JbnRlcnNlY3RMaW5lKHgsIHksIHB0cywgbm9kZVgsIG5vZGVZKTtcbiAgICAgIH0sXG4gICAgICBnZW5lcmF0ZUJhcnJlbEJlemllclB0czogZnVuY3Rpb24gZ2VuZXJhdGVCYXJyZWxCZXppZXJQdHMod2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICB2YXIgaGggPSBoZWlnaHQgLyAyO1xuICAgICAgICB2YXIgaHcgPSB3aWR0aCAvIDI7XG4gICAgICAgIHZhciB4QmVnaW4gPSBjZW50ZXJYIC0gaHc7XG4gICAgICAgIHZhciB4RW5kID0gY2VudGVyWCArIGh3O1xuICAgICAgICB2YXIgeUJlZ2luID0gY2VudGVyWSAtIGhoO1xuICAgICAgICB2YXIgeUVuZCA9IGNlbnRlclkgKyBoaDtcbiAgICAgICAgdmFyIGN1cnZlQ29uc3RhbnRzID0gZ2V0QmFycmVsQ3VydmVDb25zdGFudHMod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHZhciBoT2Zmc2V0ID0gY3VydmVDb25zdGFudHMuaGVpZ2h0T2Zmc2V0O1xuICAgICAgICB2YXIgd09mZnNldCA9IGN1cnZlQ29uc3RhbnRzLndpZHRoT2Zmc2V0O1xuICAgICAgICB2YXIgY3RybFB0WE9mZnNldCA9IGN1cnZlQ29uc3RhbnRzLmN0cmxQdE9mZnNldFBjdCAqIHdpZHRoOyAvLyBwb2ludHMgYXJlIGluIGNsb2Nrd2lzZSBvcmRlciwgaW5uZXIgKGltYWdpbmFyeSkgY29udHJvbCBwdCBvbiBbNCwgNV1cblxuICAgICAgICB2YXIgcHRzID0ge1xuICAgICAgICAgIHRvcExlZnQ6IFt4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlCZWdpbiwgeEJlZ2luICsgd09mZnNldCwgeUJlZ2luXSxcbiAgICAgICAgICB0b3BSaWdodDogW3hFbmQgLSB3T2Zmc2V0LCB5QmVnaW4sIHhFbmQgLSBjdHJsUHRYT2Zmc2V0LCB5QmVnaW4sIHhFbmQsIHlCZWdpbiArIGhPZmZzZXRdLFxuICAgICAgICAgIGJvdHRvbVJpZ2h0OiBbeEVuZCwgeUVuZCAtIGhPZmZzZXQsIHhFbmQgLSBjdHJsUHRYT2Zmc2V0LCB5RW5kLCB4RW5kIC0gd09mZnNldCwgeUVuZF0sXG4gICAgICAgICAgYm90dG9tTGVmdDogW3hCZWdpbiArIHdPZmZzZXQsIHlFbmQsIHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiwgeUVuZCAtIGhPZmZzZXRdXG4gICAgICAgIH07XG4gICAgICAgIHB0cy50b3BMZWZ0LmlzVG9wID0gdHJ1ZTtcbiAgICAgICAgcHRzLnRvcFJpZ2h0LmlzVG9wID0gdHJ1ZTtcbiAgICAgICAgcHRzLmJvdHRvbUxlZnQuaXNCb3R0b20gPSB0cnVlO1xuICAgICAgICBwdHMuYm90dG9tUmlnaHQuaXNCb3R0b20gPSB0cnVlO1xuICAgICAgICByZXR1cm4gcHRzO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUG9pbnQ6IGZ1bmN0aW9uIGNoZWNrUG9pbnQoeCwgeSwgcGFkZGluZywgd2lkdGgsIGhlaWdodCwgY2VudGVyWCwgY2VudGVyWSkge1xuICAgICAgICB2YXIgY3VydmVDb25zdGFudHMgPSBnZXRCYXJyZWxDdXJ2ZUNvbnN0YW50cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdmFyIGhPZmZzZXQgPSBjdXJ2ZUNvbnN0YW50cy5oZWlnaHRPZmZzZXQ7XG4gICAgICAgIHZhciB3T2Zmc2V0ID0gY3VydmVDb25zdGFudHMud2lkdGhPZmZzZXQ7IC8vIENoZWNrIGhCb3hcblxuICAgICAgICBpZiAocG9pbnRJbnNpZGVQb2x5Z29uKHgsIHksIHRoaXMucG9pbnRzLCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0IC0gMiAqIGhPZmZzZXQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSAyICogd09mZnNldCwgaGVpZ2h0LCBbMCwgLTFdLCBwYWRkaW5nKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGJhcnJlbEN1cnZlUHRzID0gdGhpcy5nZW5lcmF0ZUJhcnJlbEJlemllclB0cyh3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKTtcblxuICAgICAgICB2YXIgZ2V0Q3VydmVUID0gZnVuY3Rpb24gZ2V0Q3VydmVUKHgsIHksIGN1cnZlUHRzKSB7XG4gICAgICAgICAgdmFyIHgwID0gY3VydmVQdHNbNF07XG4gICAgICAgICAgdmFyIHgxID0gY3VydmVQdHNbMl07XG4gICAgICAgICAgdmFyIHgyID0gY3VydmVQdHNbMF07XG4gICAgICAgICAgdmFyIHkwID0gY3VydmVQdHNbNV07IC8vIHZhciB5MSA9IGN1cnZlUHRzWyAzIF07XG5cbiAgICAgICAgICB2YXIgeTIgPSBjdXJ2ZVB0c1sxXTtcbiAgICAgICAgICB2YXIgeE1pbiA9IE1hdGgubWluKHgwLCB4Mik7XG4gICAgICAgICAgdmFyIHhNYXggPSBNYXRoLm1heCh4MCwgeDIpO1xuICAgICAgICAgIHZhciB5TWluID0gTWF0aC5taW4oeTAsIHkyKTtcbiAgICAgICAgICB2YXIgeU1heCA9IE1hdGgubWF4KHkwLCB5Mik7XG5cbiAgICAgICAgICBpZiAoeE1pbiA8PSB4ICYmIHggPD0geE1heCAmJiB5TWluIDw9IHkgJiYgeSA8PSB5TWF4KSB7XG4gICAgICAgICAgICB2YXIgY29lZmYgPSBiZXppZXJQdHNUb1F1YWRDb2VmZih4MCwgeDEsIHgyKTtcbiAgICAgICAgICAgIHZhciByb290cyA9IHNvbHZlUXVhZHJhdGljKGNvZWZmWzBdLCBjb2VmZlsxXSwgY29lZmZbMl0sIHgpO1xuICAgICAgICAgICAgdmFyIHZhbGlkUm9vdHMgPSByb290cy5maWx0ZXIoZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDAgPD0gciAmJiByIDw9IDE7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkUm9vdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICByZXR1cm4gdmFsaWRSb290c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgY3VydmVSZWdpb25zID0gT2JqZWN0LmtleXMoYmFycmVsQ3VydmVQdHMpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VydmVSZWdpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNvcm5lciA9IGN1cnZlUmVnaW9uc1tpXTtcbiAgICAgICAgICB2YXIgY29ybmVyUHRzID0gYmFycmVsQ3VydmVQdHNbY29ybmVyXTtcbiAgICAgICAgICB2YXIgdCA9IGdldEN1cnZlVCh4LCB5LCBjb3JuZXJQdHMpO1xuXG4gICAgICAgICAgaWYgKHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHkwID0gY29ybmVyUHRzWzVdO1xuICAgICAgICAgIHZhciB5MSA9IGNvcm5lclB0c1szXTtcbiAgICAgICAgICB2YXIgeTIgPSBjb3JuZXJQdHNbMV07XG4gICAgICAgICAgdmFyIGJlelkgPSBxYmV6aWVyQXQoeTAsIHkxLCB5MiwgdCk7XG5cbiAgICAgICAgICBpZiAoY29ybmVyUHRzLmlzVG9wICYmIGJlelkgPD0geSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvcm5lclB0cy5pc0JvdHRvbSAmJiB5IDw9IGJlelkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIEJScCQyLmdlbmVyYXRlQm90dG9tUm91bmRyZWN0YW5nbGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVNoYXBlc1snYm90dG9tLXJvdW5kLXJlY3RhbmdsZSddID0gdGhpcy5ub2RlU2hhcGVzWydib3R0b21yb3VuZHJlY3RhbmdsZSddID0ge1xuICAgICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgICBuYW1lOiAnYm90dG9tLXJvdW5kLXJlY3RhbmdsZScsXG4gICAgICBwb2ludHM6IGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSxcbiAgICAgIGRyYXc6IGZ1bmN0aW9uIGRyYXcoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLm5vZGVTaGFwZUltcGwodGhpcy5uYW1lLCBjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIH0sXG4gICAgICBpbnRlcnNlY3RMaW5lOiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgcGFkZGluZykge1xuICAgICAgICB2YXIgdG9wU3RhcnRYID0gbm9kZVggLSAod2lkdGggLyAyICsgcGFkZGluZyk7XG4gICAgICAgIHZhciB0b3BTdGFydFkgPSBub2RlWSAtIChoZWlnaHQgLyAyICsgcGFkZGluZyk7XG4gICAgICAgIHZhciB0b3BFbmRZID0gdG9wU3RhcnRZO1xuICAgICAgICB2YXIgdG9wRW5kWCA9IG5vZGVYICsgKHdpZHRoIC8gMiArIHBhZGRpbmcpO1xuICAgICAgICB2YXIgdG9wSW50ZXJzZWN0aW9ucyA9IGZpbml0ZUxpbmVzSW50ZXJzZWN0KHgsIHksIG5vZGVYLCBub2RlWSwgdG9wU3RhcnRYLCB0b3BTdGFydFksIHRvcEVuZFgsIHRvcEVuZFksIGZhbHNlKTtcblxuICAgICAgICBpZiAodG9wSW50ZXJzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRvcEludGVyc2VjdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcm91bmRSZWN0YW5nbGVJbnRlcnNlY3RMaW5lKHgsIHksIG5vZGVYLCBub2RlWSwgd2lkdGgsIGhlaWdodCwgcGFkZGluZyk7XG4gICAgICB9LFxuICAgICAgY2hlY2tQb2ludDogZnVuY3Rpb24gY2hlY2tQb2ludCh4LCB5LCBwYWRkaW5nLCB3aWR0aCwgaGVpZ2h0LCBjZW50ZXJYLCBjZW50ZXJZKSB7XG4gICAgICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdmFyIGRpYW0gPSAyICogY29ybmVyUmFkaXVzOyAvLyBDaGVjayBoQm94XG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCAtIGRpYW0sIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gQ2hlY2sgdkJveFxuXG5cbiAgICAgICAgaWYgKHBvaW50SW5zaWRlUG9seWdvbih4LCB5LCB0aGlzLnBvaW50cywgY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLSBkaWFtLCBoZWlnaHQsIFswLCAtMV0sIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gY2hlY2sgbm9uLXJvdW5kZWQgdG9wIHNpZGVcblxuXG4gICAgICAgIHZhciBvdXRlcldpZHRoID0gd2lkdGggLyAyICsgMiAqIHBhZGRpbmc7XG4gICAgICAgIHZhciBvdXRlckhlaWdodCA9IGhlaWdodCAvIDIgKyAyICogcGFkZGluZztcbiAgICAgICAgdmFyIHBvaW50cyA9IFtjZW50ZXJYIC0gb3V0ZXJXaWR0aCwgY2VudGVyWSAtIG91dGVySGVpZ2h0LCBjZW50ZXJYIC0gb3V0ZXJXaWR0aCwgY2VudGVyWSwgY2VudGVyWCArIG91dGVyV2lkdGgsIGNlbnRlclksIGNlbnRlclggKyBvdXRlcldpZHRoLCBjZW50ZXJZIC0gb3V0ZXJIZWlnaHRdO1xuXG4gICAgICAgIGlmIChwb2ludEluc2lkZVBvbHlnb25Qb2ludHMoeCwgeSwgcG9pbnRzKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vIENoZWNrIGJvdHRvbSByaWdodCBxdWFydGVyIGNpcmNsZVxuXG5cbiAgICAgICAgaWYgKGNoZWNrSW5FbGxpcHNlKHgsIHksIGRpYW0sIGRpYW0sIGNlbnRlclggKyB3aWR0aCAvIDIgLSBjb3JuZXJSYWRpdXMsIGNlbnRlclkgKyBoZWlnaHQgLyAyIC0gY29ybmVyUmFkaXVzLCBwYWRkaW5nKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vIENoZWNrIGJvdHRvbSBsZWZ0IHF1YXJ0ZXIgY2lyY2xlXG5cblxuICAgICAgICBpZiAoY2hlY2tJbkVsbGlwc2UoeCwgeSwgZGlhbSwgZGlhbSwgY2VudGVyWCAtIHdpZHRoIC8gMiArIGNvcm5lclJhZGl1cywgY2VudGVyWSArIGhlaWdodCAvIDIgLSBjb3JuZXJSYWRpdXMsIHBhZGRpbmcpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBCUnAkMi5yZWdpc3Rlck5vZGVTaGFwZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG5vZGVTaGFwZXMgPSB0aGlzLm5vZGVTaGFwZXMgPSB7fTtcbiAgICB2YXIgcmVuZGVyZXIgPSB0aGlzO1xuICAgIHRoaXMuZ2VuZXJhdGVFbGxpcHNlKCk7XG4gICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3RyaWFuZ2xlJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDMsIDApKTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC10cmlhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSgzLCAwKSk7XG4gICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3JlY3RhbmdsZScsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg0LCAwKSk7XG4gICAgbm9kZVNoYXBlc1snc3F1YXJlJ10gPSBub2RlU2hhcGVzWydyZWN0YW5nbGUnXTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRSZWN0YW5nbGUoKTtcbiAgICB0aGlzLmdlbmVyYXRlQ3V0UmVjdGFuZ2xlKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUJhcnJlbCgpO1xuICAgIHRoaXMuZ2VuZXJhdGVCb3R0b21Sb3VuZHJlY3RhbmdsZSgpO1xuICAgIHtcbiAgICAgIHZhciBkaWFtb25kUG9pbnRzID0gWzAsIDEsIDEsIDAsIDAsIC0xLCAtMSwgMF07XG4gICAgICB0aGlzLmdlbmVyYXRlUG9seWdvbignZGlhbW9uZCcsIGRpYW1vbmRQb2ludHMpO1xuICAgICAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtZGlhbW9uZCcsIGRpYW1vbmRQb2ludHMpO1xuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbigncGVudGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoNSwgMCkpO1xuICAgIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLXBlbnRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDUsIDApKTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbignaGV4YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg2LCAwKSk7XG4gICAgdGhpcy5nZW5lcmF0ZVJvdW5kUG9seWdvbigncm91bmQtaGV4YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg2LCAwKSk7XG4gICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ2hlcHRhZ29uJywgZ2VuZXJhdGVVbml0TmdvblBvaW50c0ZpdFRvU3F1YXJlKDcsIDApKTtcbiAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC1oZXB0YWdvbicsIGdlbmVyYXRlVW5pdE5nb25Qb2ludHNGaXRUb1NxdWFyZSg3LCAwKSk7XG4gICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ29jdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoOCwgMCkpO1xuICAgIHRoaXMuZ2VuZXJhdGVSb3VuZFBvbHlnb24oJ3JvdW5kLW9jdGFnb24nLCBnZW5lcmF0ZVVuaXROZ29uUG9pbnRzRml0VG9TcXVhcmUoOCwgMCkpO1xuICAgIHZhciBzdGFyNVBvaW50cyA9IG5ldyBBcnJheSgyMCk7XG4gICAge1xuICAgICAgdmFyIG91dGVyUG9pbnRzID0gZ2VuZXJhdGVVbml0TmdvblBvaW50cyg1LCAwKTtcbiAgICAgIHZhciBpbm5lclBvaW50cyA9IGdlbmVyYXRlVW5pdE5nb25Qb2ludHMoNSwgTWF0aC5QSSAvIDUpOyAvLyBPdXRlciByYWRpdXMgaXMgMTsgaW5uZXIgcmFkaXVzIG9mIHN0YXIgaXMgc21hbGxlclxuXG4gICAgICB2YXIgaW5uZXJSYWRpdXMgPSAwLjUgKiAoMyAtIE1hdGguc3FydCg1KSk7XG4gICAgICBpbm5lclJhZGl1cyAqPSAxLjU3O1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlubmVyUG9pbnRzLmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgICBpbm5lclBvaW50c1tpICogMl0gKj0gaW5uZXJSYWRpdXM7XG4gICAgICAgIGlubmVyUG9pbnRzW2kgKiAyICsgMV0gKj0gaW5uZXJSYWRpdXM7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjAgLyA0OyBpKyspIHtcbiAgICAgICAgc3RhcjVQb2ludHNbaSAqIDRdID0gb3V0ZXJQb2ludHNbaSAqIDJdO1xuICAgICAgICBzdGFyNVBvaW50c1tpICogNCArIDFdID0gb3V0ZXJQb2ludHNbaSAqIDIgKyAxXTtcbiAgICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAyXSA9IGlubmVyUG9pbnRzW2kgKiAyXTtcbiAgICAgICAgc3RhcjVQb2ludHNbaSAqIDQgKyAzXSA9IGlubmVyUG9pbnRzW2kgKiAyICsgMV07XG4gICAgICB9XG4gICAgfVxuICAgIHN0YXI1UG9pbnRzID0gZml0UG9seWdvblRvU3F1YXJlKHN0YXI1UG9pbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbignc3RhcicsIHN0YXI1UG9pbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlUG9seWdvbigndmVlJywgWy0xLCAtMSwgMCwgLTAuMzMzLCAxLCAtMSwgMCwgMV0pO1xuICAgIHRoaXMuZ2VuZXJhdGVQb2x5Z29uKCdyaG9tYm9pZCcsIFstMSwgLTEsIDAuMzMzLCAtMSwgMSwgMSwgLTAuMzMzLCAxXSk7XG4gICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3JpZ2h0LXJob21ib2lkJywgWy0wLjMzMywgLTEsIDEsIC0xLCAwLjMzMywgMSwgLTEsIDFdKTtcbiAgICB0aGlzLm5vZGVTaGFwZXNbJ2NvbmNhdmVoZXhhZ29uJ10gPSB0aGlzLmdlbmVyYXRlUG9seWdvbignY29uY2F2ZS1oZXhhZ29uJywgWy0xLCAtMC45NSwgLTAuNzUsIDAsIC0xLCAwLjk1LCAxLCAwLjk1LCAwLjc1LCAwLCAxLCAtMC45NV0pO1xuICAgIHtcbiAgICAgIHZhciB0YWdQb2ludHMgPSBbLTEsIC0xLCAwLjI1LCAtMSwgMSwgMCwgMC4yNSwgMSwgLTEsIDFdO1xuICAgICAgdGhpcy5nZW5lcmF0ZVBvbHlnb24oJ3RhZycsIHRhZ1BvaW50cyk7XG4gICAgICB0aGlzLmdlbmVyYXRlUm91bmRQb2x5Z29uKCdyb3VuZC10YWcnLCB0YWdQb2ludHMpO1xuICAgIH1cblxuICAgIG5vZGVTaGFwZXMubWFrZVBvbHlnb24gPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAvLyB1c2UgY2FjaGluZyBvbiB1c2VyLXNwZWNpZmllZCBwb2x5Z29ucyBzbyB0aGV5IGFyZSBhcyBmYXN0IGFzIG5hdGl2ZSBzaGFwZXNcbiAgICAgIHZhciBrZXkgPSBwb2ludHMuam9pbignJCcpO1xuICAgICAgdmFyIG5hbWUgPSAncG9seWdvbi0nICsga2V5O1xuICAgICAgdmFyIHNoYXBlO1xuXG4gICAgICBpZiAoc2hhcGUgPSB0aGlzW25hbWVdKSB7XG4gICAgICAgIC8vIGdvdCBjYWNoZWQgc2hhcGVcbiAgICAgICAgcmV0dXJuIHNoYXBlO1xuICAgICAgfSAvLyBjcmVhdGUgYW5kIGNhY2hlIG5ldyBzaGFwZVxuXG5cbiAgICAgIHJldHVybiByZW5kZXJlci5nZW5lcmF0ZVBvbHlnb24obmFtZSwgcG9pbnRzKTtcbiAgICB9O1xuICB9O1xuXG4gIHZhciBCUnAkMSA9IHt9O1xuXG4gIEJScCQxLnRpbWVUb1JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWRyYXdUb3RhbFRpbWUgLyB0aGlzLnJlZHJhd0NvdW50O1xuICB9O1xuXG4gIEJScCQxLnJlZHJhdyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgc3RhdGljRW1wdHlPYmplY3QoKTtcbiAgICB2YXIgciA9IHRoaXM7XG5cbiAgICBpZiAoci5hdmVyYWdlUmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByLmF2ZXJhZ2VSZWRyYXdUaW1lID0gMDtcbiAgICB9XG5cbiAgICBpZiAoci5sYXN0UmVkcmF3VGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByLmxhc3RSZWRyYXdUaW1lID0gMDtcbiAgICB9XG5cbiAgICBpZiAoci5sYXN0RHJhd1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgci5sYXN0RHJhd1RpbWUgPSAwO1xuICAgIH1cblxuICAgIHIucmVxdWVzdGVkRnJhbWUgPSB0cnVlO1xuICAgIHIucmVuZGVyT3B0aW9ucyA9IG9wdGlvbnM7XG4gIH07XG5cbiAgQlJwJDEuYmVmb3JlUmVuZGVyID0gZnVuY3Rpb24gKGZuLCBwcmlvcml0eSkge1xuICAgIC8vIHRoZSByZW5kZXJlciBjYW4ndCBhZGQgdGljayBjYWxsYmFja3Mgd2hlbiBkZXN0cm95ZWRcbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJpb3JpdHkgPT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ1ByaW9yaXR5IGlzIG5vdCBvcHRpb25hbCBmb3IgYmVmb3JlUmVuZGVyJyk7XG4gICAgfVxuXG4gICAgdmFyIGNicyA9IHRoaXMuYmVmb3JlUmVuZGVyQ2FsbGJhY2tzO1xuICAgIGNicy5wdXNoKHtcbiAgICAgIGZuOiBmbixcbiAgICAgIHByaW9yaXR5OiBwcmlvcml0eVxuICAgIH0pOyAvLyBoaWdoZXIgcHJpb3JpdHkgY2FsbGJhY2tzIGV4ZWN1dGVkIGZpcnN0XG5cbiAgICBjYnMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIucHJpb3JpdHkgLSBhLnByaW9yaXR5O1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciBiZWZvcmVSZW5kZXJDYWxsYmFja3MgPSBmdW5jdGlvbiBiZWZvcmVSZW5kZXJDYWxsYmFja3Mociwgd2lsbERyYXcsIHN0YXJ0VGltZSkge1xuICAgIHZhciBjYnMgPSByLmJlZm9yZVJlbmRlckNhbGxiYWNrcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYnNbaV0uZm4od2lsbERyYXcsIHN0YXJ0VGltZSk7XG4gICAgfVxuICB9O1xuXG4gIEJScCQxLnN0YXJ0UmVuZGVyTG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGN5ID0gci5jeTtcblxuICAgIGlmIChyLnJlbmRlckxvb3BTdGFydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHIucmVuZGVyTG9vcFN0YXJ0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciByZW5kZXJGbiA9IGZ1bmN0aW9uIHJlbmRlckZuKHJlcXVlc3RUaW1lKSB7XG4gICAgICBpZiAoci5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3kuYmF0Y2hpbmcoKSkgOyBlbHNlIGlmIChyLnJlcXVlc3RlZEZyYW1lICYmICFyLnNraXBGcmFtZSkge1xuICAgICAgICBiZWZvcmVSZW5kZXJDYWxsYmFja3MociwgdHJ1ZSwgcmVxdWVzdFRpbWUpO1xuICAgICAgICB2YXIgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgci5yZW5kZXIoci5yZW5kZXJPcHRpb25zKTtcbiAgICAgICAgdmFyIGVuZFRpbWUgPSByLmxhc3REcmF3VGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICAgICAgaWYgKHIuYXZlcmFnZVJlZHJhd1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHIuYXZlcmFnZVJlZHJhd1RpbWUgPSBlbmRUaW1lIC0gc3RhcnRUaW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIucmVkcmF3Q291bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHIucmVkcmF3Q291bnQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgci5yZWRyYXdDb3VudCsrO1xuXG4gICAgICAgIGlmIChyLnJlZHJhd1RvdGFsVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgci5yZWRyYXdUb3RhbFRpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGR1cmF0aW9uID0gZW5kVGltZSAtIHN0YXJ0VGltZTtcbiAgICAgICAgci5yZWRyYXdUb3RhbFRpbWUgKz0gZHVyYXRpb247XG4gICAgICAgIHIubGFzdFJlZHJhd1RpbWUgPSBkdXJhdGlvbjsgLy8gdXNlIGEgd2VpZ2h0ZWQgYXZlcmFnZSB3aXRoIGEgYmlhcyBmcm9tIHRoZSBwcmV2aW91cyBhdmVyYWdlIHNvIHdlIGRvbid0IHNwaWtlIHNvIGVhc2lseVxuXG4gICAgICAgIHIuYXZlcmFnZVJlZHJhd1RpbWUgPSByLmF2ZXJhZ2VSZWRyYXdUaW1lIC8gMiArIGR1cmF0aW9uIC8gMjtcbiAgICAgICAgci5yZXF1ZXN0ZWRGcmFtZSA9IGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYmVmb3JlUmVuZGVyQ2FsbGJhY2tzKHIsIGZhbHNlLCByZXF1ZXN0VGltZSk7XG4gICAgICB9XG5cbiAgICAgIHIuc2tpcEZyYW1lID0gZmFsc2U7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyRm4pO1xuICAgIH07XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyRm4pO1xuICB9O1xuXG4gIHZhciBCYXNlUmVuZGVyZXIgPSBmdW5jdGlvbiBCYXNlUmVuZGVyZXIob3B0aW9ucykge1xuICAgIHRoaXMuaW5pdChvcHRpb25zKTtcbiAgfTtcblxuICB2YXIgQlIgPSBCYXNlUmVuZGVyZXI7XG4gIHZhciBCUnAgPSBCUi5wcm90b3R5cGU7XG4gIEJScC5jbGllbnRGdW5jdGlvbnMgPSBbJ3JlZHJhd0hpbnQnLCAncmVuZGVyJywgJ3JlbmRlclRvJywgJ21hdGNoQ2FudmFzU2l6ZScsICdub2RlU2hhcGVJbXBsJywgJ2Fycm93U2hhcGVJbXBsJ107XG5cbiAgQlJwLmluaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciByID0gdGhpcztcbiAgICByLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHIuY3kgPSBvcHRpb25zLmN5O1xuICAgIHZhciBjdHIgPSByLmNvbnRhaW5lciA9IG9wdGlvbnMuY3kuY29udGFpbmVyKCk7XG4gICAgdmFyIGNvbnRhaW5lcldpbmRvdyA9IHIuY3kud2luZG93KCk7IC8vIHByZXBlbmQgYSBzdHlsZXNoZWV0IGluIHRoZSBoZWFkIHN1Y2ggdGhhdFxuXG4gICAgaWYgKGNvbnRhaW5lcldpbmRvdykge1xuICAgICAgdmFyIGRvY3VtZW50ID0gY29udGFpbmVyV2luZG93LmRvY3VtZW50O1xuICAgICAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkO1xuICAgICAgdmFyIHN0eWxlc2hlZXRJZCA9ICdfX19fX19fX19fY3l0b3NjYXBlX3N0eWxlc2hlZXQnO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9ICdfX19fX19fX19fY3l0b3NjYXBlX2NvbnRhaW5lcic7XG4gICAgICB2YXIgc3R5bGVzaGVldEFscmVhZHlFeGlzdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzdHlsZXNoZWV0SWQpICE9IG51bGw7XG5cbiAgICAgIGlmIChjdHIuY2xhc3NOYW1lLmluZGV4T2YoY2xhc3NOYW1lKSA8IDApIHtcbiAgICAgICAgY3RyLmNsYXNzTmFtZSA9IChjdHIuY2xhc3NOYW1lIHx8ICcnKSArICcgJyArIGNsYXNzTmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdHlsZXNoZWV0QWxyZWFkeUV4aXN0cykge1xuICAgICAgICB2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHN0eWxlc2hlZXQuaWQgPSBzdHlsZXNoZWV0SWQ7XG4gICAgICAgIHN0eWxlc2hlZXQudGV4dENvbnRlbnQgPSAnLicgKyBjbGFzc05hbWUgKyAnIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9JztcbiAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoc3R5bGVzaGVldCwgaGVhZC5jaGlsZHJlblswXSk7IC8vIGZpcnN0IHNvIGxvd2VzdCBwcmlvcml0eVxuICAgICAgfVxuXG4gICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGNvbnRhaW5lcldpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGN0cik7XG4gICAgICB2YXIgcG9zaXRpb24gPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3Bvc2l0aW9uJyk7XG5cbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgd2FybignQSBDeXRvc2NhcGUgY29udGFpbmVyIGhhcyBzdHlsZSBwb3NpdGlvbjpzdGF0aWMgYW5kIHNvIGNhbiBub3QgdXNlIFVJIGV4dGVuc2lvbnMgcHJvcGVybHknKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByLnNlbGVjdGlvbiA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdOyAvLyBDb29yZGluYXRlcyBmb3Igc2VsZWN0aW9uIGJveCwgcGx1cyBlbmFibGVkIGZsYWdcblxuICAgIHIuYmV6aWVyUHJvalBjdHMgPSBbMC4wNSwgMC4yMjUsIDAuNCwgMC41LCAwLjYsIDAuNzc1LCAwLjk1XTsgLy8tLVBvaW50ZXItcmVsYXRlZCBkYXRhXG5cbiAgICByLmhvdmVyRGF0YSA9IHtcbiAgICAgIGRvd246IG51bGwsXG4gICAgICBsYXN0OiBudWxsLFxuICAgICAgZG93blRpbWU6IG51bGwsXG4gICAgICB0cmlnZ2VyTW9kZTogbnVsbCxcbiAgICAgIGRyYWdnaW5nOiBmYWxzZSxcbiAgICAgIGluaXRpYWxQYW46IFtudWxsLCBudWxsXSxcbiAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgfTtcbiAgICByLmRyYWdEYXRhID0ge1xuICAgICAgcG9zc2libGVEcmFnRWxlbWVudHM6IFtdXG4gICAgfTtcbiAgICByLnRvdWNoRGF0YSA9IHtcbiAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgY2FwdHVyZTogZmFsc2UsXG4gICAgICAvLyBUaGVzZSAzIGZpZWxkcyByZWxhdGVkIHRvIHRhcCwgdGFwaG9sZCBldmVudHNcbiAgICAgIHN0YXJ0UG9zaXRpb246IFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsXSxcbiAgICAgIHNpbmdsZVRvdWNoU3RhcnRUaW1lOiBudWxsLFxuICAgICAgc2luZ2xlVG91Y2hNb3ZlZDogdHJ1ZSxcbiAgICAgIG5vdzogW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdLFxuICAgICAgZWFybGllcjogW251bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGxdXG4gICAgfTtcbiAgICByLnJlZHJhd3MgPSAwO1xuICAgIHIuc2hvd0ZwcyA9IG9wdGlvbnMuc2hvd0ZwcztcbiAgICByLmRlYnVnID0gb3B0aW9ucy5kZWJ1ZztcbiAgICByLmhpZGVFZGdlc09uVmlld3BvcnQgPSBvcHRpb25zLmhpZGVFZGdlc09uVmlld3BvcnQ7XG4gICAgci50ZXh0dXJlT25WaWV3cG9ydCA9IG9wdGlvbnMudGV4dHVyZU9uVmlld3BvcnQ7XG4gICAgci53aGVlbFNlbnNpdGl2aXR5ID0gb3B0aW9ucy53aGVlbFNlbnNpdGl2aXR5O1xuICAgIHIubW90aW9uQmx1ckVuYWJsZWQgPSBvcHRpb25zLm1vdGlvbkJsdXI7IC8vIG9uIGJ5IGRlZmF1bHRcblxuICAgIHIuZm9yY2VkUGl4ZWxSYXRpbyA9IG51bWJlciQxKG9wdGlvbnMucGl4ZWxSYXRpbykgPyBvcHRpb25zLnBpeGVsUmF0aW8gOiBudWxsO1xuICAgIHIubW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1cjsgLy8gZm9yIGluaXRpYWwga2ljayBvZmZcblxuICAgIHIubW90aW9uQmx1ck9wYWNpdHkgPSBvcHRpb25zLm1vdGlvbkJsdXJPcGFjaXR5O1xuICAgIHIubW90aW9uQmx1clRyYW5zcGFyZW5jeSA9IDEgLSByLm1vdGlvbkJsdXJPcGFjaXR5O1xuICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSAxO1xuICAgIHIubWJQeFJCbHVycnkgPSAxOyAvLzAuODtcblxuICAgIHIubWluTWJMb3dRdWFsRnJhbWVzID0gNDtcbiAgICByLmZ1bGxRdWFsaXR5TWIgPSBmYWxzZTtcbiAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyID0gW107XG4gICAgci5kZXNrdG9wVGFwVGhyZXNob2xkID0gb3B0aW9ucy5kZXNrdG9wVGFwVGhyZXNob2xkO1xuICAgIHIuZGVza3RvcFRhcFRocmVzaG9sZDIgPSBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQgKiBvcHRpb25zLmRlc2t0b3BUYXBUaHJlc2hvbGQ7XG4gICAgci50b3VjaFRhcFRocmVzaG9sZCA9IG9wdGlvbnMudG91Y2hUYXBUaHJlc2hvbGQ7XG4gICAgci50b3VjaFRhcFRocmVzaG9sZDIgPSBvcHRpb25zLnRvdWNoVGFwVGhyZXNob2xkICogb3B0aW9ucy50b3VjaFRhcFRocmVzaG9sZDtcbiAgICByLnRhcGhvbGREdXJhdGlvbiA9IDUwMDtcbiAgICByLmJpbmRpbmdzID0gW107XG4gICAgci5iZWZvcmVSZW5kZXJDYWxsYmFja3MgPSBbXTtcbiAgICByLmJlZm9yZVJlbmRlclByaW9yaXRpZXMgPSB7XG4gICAgICAvLyBoaWdoZXIgcHJpb3JpdHkgZXhlY3MgYmVmb3JlIGxvd2VyIG9uZVxuICAgICAgYW5pbWF0aW9uczogNDAwLFxuICAgICAgZWxlQ2FsY3M6IDMwMCxcbiAgICAgIGVsZVR4ckRlcTogMjAwLFxuICAgICAgbHlyVHhyRGVxOiAxNTAsXG4gICAgICBseXJUeHJTa2lwOiAxMDBcbiAgICB9O1xuICAgIHIucmVnaXN0ZXJOb2RlU2hhcGVzKCk7XG4gICAgci5yZWdpc3RlckFycm93U2hhcGVzKCk7XG4gICAgci5yZWdpc3RlckNhbGN1bGF0aW9uTGlzdGVuZXJzKCk7XG4gIH07XG5cbiAgQlJwLm5vdGlmeSA9IGZ1bmN0aW9uIChldmVudE5hbWUsIGVsZXMpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGN5ID0gci5jeTsgLy8gdGhlIHJlbmRlcmVyIGNhbid0IGJlIG5vdGlmaWVkIGFmdGVyIGl0J3MgZGVzdHJveWVkXG5cbiAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSAnaW5pdCcpIHtcbiAgICAgIHIubG9hZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudE5hbWUgPT09ICdkZXN0cm95Jykge1xuICAgICAgci5kZXN0cm95KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gJ2FkZCcgfHwgZXZlbnROYW1lID09PSAncmVtb3ZlJyB8fCBldmVudE5hbWUgPT09ICdtb3ZlJyAmJiBjeS5oYXNDb21wb3VuZE5vZGVzKCkgfHwgZXZlbnROYW1lID09PSAnbG9hZCcgfHwgZXZlbnROYW1lID09PSAnem9yZGVyJyB8fCBldmVudE5hbWUgPT09ICdtb3VudCcpIHtcbiAgICAgIHIuaW52YWxpZGF0ZUNhY2hlZFpTb3J0ZWRFbGVzKCk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50TmFtZSA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgICAgci5yZWRyYXdIaW50KCdzZWxlY3QnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnROYW1lID09PSAnbG9hZCcgfHwgZXZlbnROYW1lID09PSAncmVzaXplJyB8fCBldmVudE5hbWUgPT09ICdtb3VudCcpIHtcbiAgICAgIHIuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlKCk7XG4gICAgICByLm1hdGNoQ2FudmFzU2l6ZShyLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgci5yZWRyYXdIaW50KCdkcmFnJywgdHJ1ZSk7XG4gICAgdGhpcy5zdGFydFJlbmRlckxvb3AoKTtcbiAgICB0aGlzLnJlZHJhdygpO1xuICB9O1xuXG4gIEJScC5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICByLmRlc3Ryb3llZCA9IHRydWU7XG4gICAgci5jeS5zdG9wQW5pbWF0aW9uTG9vcCgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByLmJpbmRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYmluZGluZyA9IHIuYmluZGluZ3NbaV07XG4gICAgICB2YXIgYiA9IGJpbmRpbmc7XG4gICAgICB2YXIgdGd0ID0gYi50YXJnZXQ7XG4gICAgICAodGd0Lm9mZiB8fCB0Z3QucmVtb3ZlRXZlbnRMaXN0ZW5lcikuYXBwbHkodGd0LCBiLmFyZ3MpO1xuICAgIH1cblxuICAgIHIuYmluZGluZ3MgPSBbXTtcbiAgICByLmJlZm9yZVJlbmRlckNhbGxiYWNrcyA9IFtdO1xuICAgIHIub25VcGRhdGVFbGVDYWxjc0ZucyA9IFtdO1xuXG4gICAgaWYgKHIucmVtb3ZlT2JzZXJ2ZXIpIHtcbiAgICAgIHIucmVtb3ZlT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIGlmIChyLnN0eWxlT2JzZXJ2ZXIpIHtcbiAgICAgIHIuc3R5bGVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgaWYgKHIucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHIucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIGlmIChyLmxhYmVsQ2FsY0Rpdikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyLmxhYmVsQ2FsY0Rpdik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICAgIH0gY2F0Y2ggKGUpIHsvLyBpZTEwIGlzc3VlICMxMDE0XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJScC5pc0hlYWRsZXNzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBbQlJwJGYsIEJScCQ1LCBCUnAkNCwgQlJwJDMsIEJScCQyLCBCUnAkMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgICBleHRlbmQoQlJwLCBwcm9wcyk7XG4gIH0pO1xuXG4gIHZhciBmdWxsRnBzVGltZSA9IDEwMDAgLyA2MDsgLy8gYXNzdW1lIDYwIGZyYW1lcyBwZXIgc2Vjb25kXG5cbiAgdmFyIGRlZnMgPSB7XG4gICAgc2V0dXBEZXF1ZXVlaW5nOiBmdW5jdGlvbiBzZXR1cERlcXVldWVpbmcob3B0cykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldHVwRGVxdWV1ZWluZ0ltcGwoKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuXG4gICAgICAgIGlmIChzZWxmLmRlcXVldWVpbmdTZXR1cCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLmRlcXVldWVpbmdTZXR1cCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcXVldWVSZWRyYXcgPSBkZWJvdW5jZV8xKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICAgICAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICAgICAgICByLnJlZHJhdygpO1xuICAgICAgICB9LCBvcHRzLmRlcVJlZHJhd1RocmVzaG9sZCk7XG5cbiAgICAgICAgdmFyIGRlcXVldWUgPSBmdW5jdGlvbiBkZXF1ZXVlKHdpbGxEcmF3LCBmcmFtZVN0YXJ0VGltZSkge1xuICAgICAgICAgIHZhciBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZU5vdygpO1xuICAgICAgICAgIHZhciBhdmdSZW5kZXJUaW1lID0gci5hdmVyYWdlUmVkcmF3VGltZTtcbiAgICAgICAgICB2YXIgcmVuZGVyVGltZSA9IHIubGFzdFJlZHJhd1RpbWU7XG4gICAgICAgICAgdmFyIGRlcWQgPSBbXTtcbiAgICAgICAgICB2YXIgZXh0ZW50ID0gci5jeS5leHRlbnQoKTtcbiAgICAgICAgICB2YXIgcGl4ZWxSYXRpbyA9IHIuZ2V0UGl4ZWxSYXRpbygpOyAvLyBpZiB3ZSBhcmVuJ3QgaW4gYSB0aWNrIHRoYXQgY2F1c2VzIGEgZHJhdywgdGhlbiB0aGUgcmVuZGVyZWQgc3R5bGVcbiAgICAgICAgICAvLyBxdWV1ZSB3b24ndCBhdXRvbWF0aWNhbGx5IGJlIGZsdXNoZWQgYmVmb3JlIGRlcXVldWVpbmcgc3RhcnRzXG5cbiAgICAgICAgICBpZiAoIXdpbGxEcmF3KSB7XG4gICAgICAgICAgICByLmZsdXNoUmVuZGVyZWRTdHlsZVF1ZXVlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICAgICAgICB2YXIgbm93ID0gcGVyZm9ybWFuY2VOb3coKTtcbiAgICAgICAgICAgIHZhciBkdXJhdGlvbiA9IG5vdyAtIHN0YXJ0VGltZTtcbiAgICAgICAgICAgIHZhciBmcmFtZUR1cmF0aW9uID0gbm93IC0gZnJhbWVTdGFydFRpbWU7XG5cbiAgICAgICAgICAgIGlmIChyZW5kZXJUaW1lIDwgZnVsbEZwc1RpbWUpIHtcbiAgICAgICAgICAgICAgLy8gaWYgd2UncmUgcmVuZGVyaW5nIGZhc3RlciB0aGFuIHRoZSBpZGVhbCBmcHMsIHRoZW4gZG8gZGVxdWV1ZWluZ1xuICAgICAgICAgICAgICAvLyBkdXJpbmcgYWxsIG9mIHRoZSByZW1haW5pbmcgZnJhbWUgdGltZVxuICAgICAgICAgICAgICB2YXIgdGltZUF2YWlsYWJsZSA9IGZ1bGxGcHNUaW1lIC0gKHdpbGxEcmF3ID8gYXZnUmVuZGVyVGltZSA6IDApO1xuXG4gICAgICAgICAgICAgIGlmIChmcmFtZUR1cmF0aW9uID49IG9wdHMuZGVxRmFzdENvc3QgKiB0aW1lQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh3aWxsRHJhdykge1xuICAgICAgICAgICAgICAgIGlmIChkdXJhdGlvbiA+PSBvcHRzLmRlcUNvc3QgKiByZW5kZXJUaW1lIHx8IGR1cmF0aW9uID49IG9wdHMuZGVxQXZnQ29zdCAqIGF2Z1JlbmRlclRpbWUpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUR1cmF0aW9uID49IG9wdHMuZGVxTm9EcmF3Q29zdCAqIGZ1bGxGcHNUaW1lKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHRoaXNEZXFkID0gb3B0cy5kZXEoc2VsZiwgcGl4ZWxSYXRpbywgZXh0ZW50KTtcblxuICAgICAgICAgICAgaWYgKHRoaXNEZXFkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzRGVxZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGRlcWQucHVzaCh0aGlzRGVxZFtpXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gLy8gY2FsbGJhY2tzIG9uIGRlcXVldWVcblxuXG4gICAgICAgICAgaWYgKGRlcWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgb3B0cy5vbkRlcWQoc2VsZiwgZGVxZCk7XG5cbiAgICAgICAgICAgIGlmICghd2lsbERyYXcgJiYgb3B0cy5zaG91bGRSZWRyYXcoc2VsZiwgZGVxZCwgcGl4ZWxSYXRpbywgZXh0ZW50KSkge1xuICAgICAgICAgICAgICBxdWV1ZVJlZHJhdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcHJpb3JpdHkgPSBvcHRzLnByaW9yaXR5IHx8IG5vb3AkMTtcbiAgICAgICAgci5iZWZvcmVSZW5kZXIoZGVxdWV1ZSwgcHJpb3JpdHkoc2VsZikpO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG5cbiAgLy8gVXNlcyBrZXlzIHNvIGVsZW1lbnRzIG1heSBzaGFyZSB0aGUgc2FtZSBjYWNoZS5cblxuICB2YXIgRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cChnZXRLZXkpIHtcbiAgICAgIHZhciBkb2VzRWxlSW52YWxpZGF0ZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2lmeTtcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVsZW1lbnRUZXh0dXJlQ2FjaGVMb29rdXApO1xuXG4gICAgICB0aGlzLmlkc0J5S2V5ID0gbmV3IE1hcCQyKCk7XG4gICAgICB0aGlzLmtleUZvcklkID0gbmV3IE1hcCQyKCk7XG4gICAgICB0aGlzLmNhY2hlc0J5THZsID0gbmV3IE1hcCQyKCk7XG4gICAgICB0aGlzLmx2bHMgPSBbXTtcbiAgICAgIHRoaXMuZ2V0S2V5ID0gZ2V0S2V5O1xuICAgICAgdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleSA9IGRvZXNFbGVJbnZhbGlkYXRlS2V5O1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhFbGVtZW50VGV4dHVyZUNhY2hlTG9va3VwLCBbe1xuICAgICAga2V5OiBcImdldElkc0ZvclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldElkc0ZvcihrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3IoXCJDYW4gbm90IGdldCBpZCBsaXN0IGZvciBudWxsIGtleVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpZHNCeUtleSA9IHRoaXMuaWRzQnlLZXk7XG4gICAgICAgIHZhciBpZHMgPSB0aGlzLmlkc0J5S2V5LmdldChrZXkpO1xuXG4gICAgICAgIGlmICghaWRzKSB7XG4gICAgICAgICAgaWRzID0gbmV3IFNldCQxKCk7XG4gICAgICAgICAgaWRzQnlLZXkuc2V0KGtleSwgaWRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZHM7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImFkZElkRm9yS2V5XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gYWRkSWRGb3JLZXkoa2V5LCBpZCkge1xuICAgICAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmdldElkc0ZvcihrZXkpLmFkZChpZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlSWRGb3JLZXlcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBkZWxldGVJZEZvcktleShrZXksIGlkKSB7XG4gICAgICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZ2V0SWRzRm9yKGtleSlbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldE51bWJlck9mSWRzRm9yS2V5XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TnVtYmVyT2ZJZHNGb3JLZXkoa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldElkc0ZvcihrZXkpLnNpemU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwidXBkYXRlS2V5TWFwcGluZ0ZvclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZUtleU1hcHBpbmdGb3IoZWxlKSB7XG4gICAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgICB2YXIgcHJldktleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTtcbiAgICAgICAgdmFyIGN1cnJLZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgICB0aGlzLmRlbGV0ZUlkRm9yS2V5KHByZXZLZXksIGlkKTtcbiAgICAgICAgdGhpcy5hZGRJZEZvcktleShjdXJyS2V5LCBpZCk7XG4gICAgICAgIHRoaXMua2V5Rm9ySWQuc2V0KGlkLCBjdXJyS2V5KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlS2V5TWFwcGluZ0ZvclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKSB7XG4gICAgICAgIHZhciBpZCA9IGVsZS5pZCgpO1xuICAgICAgICB2YXIgcHJldktleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGlkKTtcbiAgICAgICAgdGhpcy5kZWxldGVJZEZvcktleShwcmV2S2V5LCBpZCk7XG4gICAgICAgIHRoaXMua2V5Rm9ySWRbXCJkZWxldGVcIl0oaWQpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJrZXlIYXNDaGFuZ2VkRm9yXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24ga2V5SGFzQ2hhbmdlZEZvcihlbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgICAgIHZhciBwcmV2S2V5ID0gdGhpcy5rZXlGb3JJZC5nZXQoaWQpO1xuICAgICAgICB2YXIgbmV3S2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgICAgcmV0dXJuIHByZXZLZXkgIT09IG5ld0tleTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaXNJbnZhbGlkXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaXNJbnZhbGlkKGVsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlIYXNDaGFuZ2VkRm9yKGVsZSkgfHwgdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleShlbGUpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRDYWNoZXNBdFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhY2hlc0F0KGx2bCkge1xuICAgICAgICB2YXIgY2FjaGVzQnlMdmwgPSB0aGlzLmNhY2hlc0J5THZsLFxuICAgICAgICAgICAgbHZscyA9IHRoaXMubHZscztcbiAgICAgICAgdmFyIGNhY2hlcyA9IGNhY2hlc0J5THZsLmdldChsdmwpO1xuXG4gICAgICAgIGlmICghY2FjaGVzKSB7XG4gICAgICAgICAgY2FjaGVzID0gbmV3IE1hcCQyKCk7XG4gICAgICAgICAgY2FjaGVzQnlMdmwuc2V0KGx2bCwgY2FjaGVzKTtcbiAgICAgICAgICBsdmxzLnB1c2gobHZsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZXM7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldENhY2hlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q2FjaGUoa2V5LCBsdmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVzQXQobHZsKS5nZXQoa2V5KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0KGVsZSwgbHZsKSB7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgICB2YXIgY2FjaGUgPSB0aGlzLmdldENhY2hlKGtleSwgbHZsKTsgLy8gZ2V0dGluZyBmb3IgYW4gZWxlbWVudCBtYXkgbmVlZCB0byBhZGQgdG8gdGhlIGlkIGxpc3QgYi9jIGVsZXMgY2FuIHNoYXJlIGtleXNcblxuICAgICAgICBpZiAoY2FjaGUgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlS2V5TWFwcGluZ0ZvcihlbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRGb3JDYWNoZWRLZXlcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGb3JDYWNoZWRLZXkoZWxlLCBsdmwpIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMua2V5Rm9ySWQuZ2V0KGVsZS5pZCgpKTsgLy8gbi5iLiB1c2UgY2FjaGVkIGtleSwgbm90IG5ld2x5IGNvbXB1dGVkIGtleVxuXG4gICAgICAgIHZhciBjYWNoZSA9IHRoaXMuZ2V0Q2FjaGUoa2V5LCBsdmwpO1xuICAgICAgICByZXR1cm4gY2FjaGU7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImhhc0NhY2hlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGFzQ2FjaGUoa2V5LCBsdmwpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGVzQXQobHZsKS5oYXMoa2V5KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaGFzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaGFzKGVsZSwgbHZsKSB7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDYWNoZShrZXksIGx2bCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInNldENhY2hlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Q2FjaGUoa2V5LCBsdmwsIGNhY2hlKSB7XG4gICAgICAgIGNhY2hlLmtleSA9IGtleTtcbiAgICAgICAgdGhpcy5nZXRDYWNoZXNBdChsdmwpLnNldChrZXksIGNhY2hlKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwic2V0XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGVsZSwgbHZsLCBjYWNoZSkge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgICAgdGhpcy5zZXRDYWNoZShrZXksIGx2bCwgY2FjaGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlQ2FjaGVcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBkZWxldGVDYWNoZShrZXksIGx2bCkge1xuICAgICAgICB0aGlzLmdldENhY2hlc0F0KGx2bClbXCJkZWxldGVcIl0oa2V5KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGVsZXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gX2RlbGV0ZShlbGUsIGx2bCkge1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICAgICAgdGhpcy5kZWxldGVDYWNoZShrZXksIGx2bCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImludmFsaWRhdGVLZXlcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBpbnZhbGlkYXRlS2V5KGtleSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMubHZscy5mb3JFYWNoKGZ1bmN0aW9uIChsdmwpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuZGVsZXRlQ2FjaGUoa2V5LCBsdmwpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8gcmV0dXJucyB0cnVlIGlmIG5vIG90aGVyIGVsZXMgcmVmZXJlbmNlIHRoZSBpbnZhbGlkYXRlZCBjYWNoZSAobi5iLiBvdGhlciBlbGVzIG1heSBuZWVkIHRoZSBjYWNoZSB3aXRoIHRoZSBzYW1lIGtleSlcblxuICAgIH0sIHtcbiAgICAgIGtleTogXCJpbnZhbGlkYXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gaW52YWxpZGF0ZShlbGUpIHtcbiAgICAgICAgdmFyIGlkID0gZWxlLmlkKCk7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLmtleUZvcklkLmdldChpZCk7IC8vIG4uYi4gdXNlIHN0b3JlZCBrZXkgcmF0aGVyIHRoYW4gY3VycmVudCAocG90ZW50aWFsIGtleSlcblxuICAgICAgICB0aGlzLmRlbGV0ZUtleU1hcHBpbmdGb3IoZWxlKTtcbiAgICAgICAgdmFyIGVudGlyZUtleUludmFsaWRhdGVkID0gdGhpcy5kb2VzRWxlSW52YWxpZGF0ZUtleShlbGUpO1xuXG4gICAgICAgIGlmIChlbnRpcmVLZXlJbnZhbGlkYXRlZCkge1xuICAgICAgICAgIC8vIGNsZWFyIG1hcHBpbmcgZm9yIGN1cnJlbnQga2V5XG4gICAgICAgICAgdGhpcy5pbnZhbGlkYXRlS2V5KGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW50aXJlS2V5SW52YWxpZGF0ZWQgfHwgdGhpcy5nZXROdW1iZXJPZklkc0ZvcktleShrZXkpID09PSAwO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBFbGVtZW50VGV4dHVyZUNhY2hlTG9va3VwO1xuICB9KCk7XG5cbiAgdmFyIG1pblR4ckggPSAyNTsgLy8gdGhlIHNpemUgb2YgdGhlIHRleHR1cmUgY2FjaGUgZm9yIHNtYWxsIGhlaWdodCBlbGVzIChzcGVjaWFsIGNhc2UpXG5cbiAgdmFyIHR4clN0ZXBIID0gNTA7IC8vIHRoZSBtaW4gc2l6ZSBvZiB0aGUgcmVndWxhciBjYWNoZSwgYW5kIHRoZSBzaXplIGl0IGluY3JlYXNlcyB3aXRoIGVhY2ggc3RlcCB1cFxuXG4gIHZhciBtaW5MdmwkMSA9IC00OyAvLyB3aGVuIHNjYWxpbmcgc21hbGxlciB0aGFuIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byByZS1yZW5kZXJcblxuICB2YXIgbWF4THZsJDEgPSAzOyAvLyB3aGVuIGxhcmdlciB0aGFuIHRoaXMgc2NhbGUganVzdCByZW5kZXIgZGlyZWN0bHkgKGNhY2hpbmcgaXMgbm90IGhlbHBmdWwpXG5cbiAgdmFyIG1heFpvb20kMSA9IDcuOTk7IC8vIGJleW9uZCB0aGlzIHpvb20gbGV2ZWwsIGxheWVyZWQgdGV4dHVyZXMgYXJlIG5vdCB1c2VkXG5cbiAgdmFyIGVsZVR4clNwYWNpbmcgPSA4OyAvLyBzcGFjaW5nIGJldHdlZW4gZWxlbWVudHMgb24gdGV4dHVyZXMgdG8gYXZvaWQgYmxpdHRpbmcgb3ZlcmxhcHNcblxuICB2YXIgZGVmVHhyV2lkdGggPSAxMDI0OyAvLyBkZWZhdWx0L21pbmltdW0gdGV4dHVyZSB3aWR0aFxuXG4gIHZhciBtYXhUeHJXID0gMTAyNDsgLy8gdGhlIG1heGltdW0gd2lkdGggb2YgYSB0ZXh0dXJlXG5cbiAgdmFyIG1heFR4ckggPSAxMDI0OyAvLyB0aGUgbWF4aW11bSBoZWlnaHQgb2YgYSB0ZXh0dXJlXG5cbiAgdmFyIG1pblV0aWxpdHkgPSAwLjI7IC8vIGlmIHVzYWdlIG9mIHRleHR1cmUgaXMgbGVzcyB0aGFuIHRoaXMsIGl0IGlzIHJldGlyZWRcblxuICB2YXIgbWF4RnVsbG5lc3MgPSAwLjg7IC8vIGZ1bGxuZXNzIG9mIHRleHR1cmUgYWZ0ZXIgd2hpY2ggcXVldWUgcmVtb3ZhbCBpcyBjaGVja2VkXG5cbiAgdmFyIG1heEZ1bGxuZXNzQ2hlY2tzID0gMTA7IC8vIGRlcXVldWVkIGFmdGVyIHRoaXMgbWFueSBjaGVja3NcblxuICB2YXIgZGVxQ29zdCQxID0gMC4xNTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBhbGxvd2VkIGZvciBkZXF1ZXVpbmcgZWxlIGNhY2hlcyBlYWNoIGZyYW1lXG5cbiAgdmFyIGRlcUF2Z0Nvc3QkMSA9IDAuMTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBjb21wYXJlZCB0byBhdmVyYWdlIG92ZXJhbGwgcmVkcmF3IHRpbWVcblxuICB2YXIgZGVxTm9EcmF3Q29zdCQxID0gMC45OyAvLyAlIG9mIGF2ZyBmcmFtZSB0aW1lIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRlcXVldWVpbmcgd2hlbiBub3QgZHJhd2luZ1xuXG4gIHZhciBkZXFGYXN0Q29zdCQxID0gMC45OyAvLyAlIG9mIGZyYW1lIHRpbWUgdG8gYmUgdXNlZCB3aGVuID42MGZwc1xuXG4gIHZhciBkZXFSZWRyYXdUaHJlc2hvbGQkMSA9IDEwMDsgLy8gdGltZSB0byBiYXRjaCByZWRyYXdzIHRvZ2V0aGVyIGZyb20gZGVxdWV1ZWluZyB0byBhbGxvdyBtb3JlIGRlcXVldWVpbmcgY2FsY3MgdG8gaGFwcGVuIGluIHRoZSBtZWFud2hpbGVcblxuICB2YXIgbWF4RGVxU2l6ZSQxID0gMTsgLy8gbnVtYmVyIG9mIGVsZXMgdG8gZGVxdWV1ZSBhbmQgcmVuZGVyIGF0IGhpZ2hlciB0ZXh0dXJlIGluIGVhY2ggYmF0Y2hcblxuICB2YXIgZ2V0VHhyUmVhc29ucyA9IHtcbiAgICBkZXF1ZXVlOiAnZGVxdWV1ZScsXG4gICAgZG93bnNjYWxlOiAnZG93bnNjYWxlJyxcbiAgICBoaWdoUXVhbGl0eTogJ2hpZ2hRdWFsaXR5J1xuICB9O1xuICB2YXIgaW5pdERlZmF1bHRzID0gZGVmYXVsdHMkZyh7XG4gICAgZ2V0S2V5OiBudWxsLFxuICAgIGRvZXNFbGVJbnZhbGlkYXRlS2V5OiBmYWxzaWZ5LFxuICAgIGRyYXdFbGVtZW50OiBudWxsLFxuICAgIGdldEJvdW5kaW5nQm94OiBudWxsLFxuICAgIGdldFJvdGF0aW9uUG9pbnQ6IG51bGwsXG4gICAgZ2V0Um90YXRpb25PZmZzZXQ6IG51bGwsXG4gICAgaXNWaXNpYmxlOiB0cnVlaWZ5LFxuICAgIGFsbG93RWRnZVR4ckNhY2hpbmc6IHRydWUsXG4gICAgYWxsb3dQYXJlbnRUeHJDYWNoaW5nOiB0cnVlXG4gIH0pO1xuXG4gIHZhciBFbGVtZW50VGV4dHVyZUNhY2hlID0gZnVuY3Rpb24gRWxlbWVudFRleHR1cmVDYWNoZShyZW5kZXJlciwgaW5pdE9wdGlvbnMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgc2VsZi5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHNlbGYub25EZXF1ZXVlcyA9IFtdO1xuICAgIHZhciBvcHRzID0gaW5pdERlZmF1bHRzKGluaXRPcHRpb25zKTtcbiAgICBleHRlbmQoc2VsZiwgb3B0cyk7XG4gICAgc2VsZi5sb29rdXAgPSBuZXcgRWxlbWVudFRleHR1cmVDYWNoZUxvb2t1cChvcHRzLmdldEtleSwgb3B0cy5kb2VzRWxlSW52YWxpZGF0ZUtleSk7XG4gICAgc2VsZi5zZXR1cERlcXVldWVpbmcoKTtcbiAgfTtcblxuICB2YXIgRVRDcCA9IEVsZW1lbnRUZXh0dXJlQ2FjaGUucHJvdG90eXBlO1xuICBFVENwLnJlYXNvbnMgPSBnZXRUeHJSZWFzb25zOyAvLyB0aGUgbGlzdCBvZiB0ZXh0dXJlcyBpbiB3aGljaCBuZXcgc3VidGV4dHVyZXMgZm9yIGVsZW1lbnRzIGNhbiBiZSBwbGFjZWRcblxuICBFVENwLmdldFRleHR1cmVRdWV1ZSA9IGZ1bmN0aW9uICh0eHJIKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHNlbGYuZWxlSW1nQ2FjaGVzID0gc2VsZi5lbGVJbWdDYWNoZXMgfHwge307XG4gICAgcmV0dXJuIHNlbGYuZWxlSW1nQ2FjaGVzW3R4ckhdID0gc2VsZi5lbGVJbWdDYWNoZXNbdHhySF0gfHwgW107XG4gIH07IC8vIHRoZSBsaXN0IG9mIHVzdXNlZCB0ZXh0dXJlcyB3aGljaCBjYW4gYmUgcmVjeWNsZWQgKGluIHVzZSBpbiB0ZXh0dXJlIHF1ZXVlKVxuXG5cbiAgRVRDcC5nZXRSZXRpcmVkVGV4dHVyZVF1ZXVlID0gZnVuY3Rpb24gKHR4ckgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJ0eHRyUXMgPSBzZWxmLmVsZUltZ0NhY2hlcy5yZXRpcmVkID0gc2VsZi5lbGVJbWdDYWNoZXMucmV0aXJlZCB8fCB7fTtcbiAgICB2YXIgcnR4dHJRID0gcnR4dHJRc1t0eHJIXSA9IHJ0eHRyUXNbdHhySF0gfHwgW107XG4gICAgcmV0dXJuIHJ0eHRyUTtcbiAgfTsgLy8gcXVldWUgb2YgZWxlbWVudCBkcmF3IHJlcXVlc3RzIGF0IGRpZmZlcmVudCBzY2FsZSBsZXZlbHNcblxuXG4gIEVUQ3AuZ2V0RWxlbWVudFF1ZXVlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcSA9IHNlbGYuZWxlQ2FjaGVRdWV1ZSA9IHNlbGYuZWxlQ2FjaGVRdWV1ZSB8fCBuZXcgaGVhcChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIucmVxcyAtIGEucmVxcztcbiAgICB9KTtcbiAgICByZXR1cm4gcTtcbiAgfTsgLy8gcXVldWUgb2YgZWxlbWVudCBkcmF3IHJlcXVlc3RzIGF0IGRpZmZlcmVudCBzY2FsZSBsZXZlbHMgKGVsZW1lbnQgaWQgbG9va3VwKVxuXG5cbiAgRVRDcC5nZXRFbGVtZW50S2V5VG9RdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGsycSA9IHNlbGYuZWxlS2V5VG9DYWNoZVF1ZXVlID0gc2VsZi5lbGVLZXlUb0NhY2hlUXVldWUgfHwge307XG4gICAgcmV0dXJuIGsycTtcbiAgfTtcblxuICBFVENwLmdldEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlLCBiYiwgcHhSYXRpbywgbHZsLCByZWFzb24pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuICAgIHZhciB6b29tID0gci5jeS56b29tKCk7XG4gICAgdmFyIGxvb2t1cCA9IHRoaXMubG9va3VwO1xuXG4gICAgaWYgKCFiYiB8fCBiYi53ID09PSAwIHx8IGJiLmggPT09IDAgfHwgaXNOYU4oYmIudykgfHwgaXNOYU4oYmIuaCkgfHwgIWVsZS52aXNpYmxlKCkgfHwgZWxlLnJlbW92ZWQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCFzZWxmLmFsbG93RWRnZVR4ckNhY2hpbmcgJiYgZWxlLmlzRWRnZSgpIHx8ICFzZWxmLmFsbG93UGFyZW50VHhyQ2FjaGluZyAmJiBlbGUuaXNQYXJlbnQoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGx2bCA9PSBudWxsKSB7XG4gICAgICBsdmwgPSBNYXRoLmNlaWwobG9nMih6b29tICogcHhSYXRpbykpO1xuICAgIH1cblxuICAgIGlmIChsdmwgPCBtaW5MdmwkMSkge1xuICAgICAgbHZsID0gbWluTHZsJDE7XG4gICAgfSBlbHNlIGlmICh6b29tID49IG1heFpvb20kMSB8fCBsdmwgPiBtYXhMdmwkMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHNjYWxlID0gTWF0aC5wb3coMiwgbHZsKTtcbiAgICB2YXIgZWxlU2NhbGVkSCA9IGJiLmggKiBzY2FsZTtcbiAgICB2YXIgZWxlU2NhbGVkVyA9IGJiLncgKiBzY2FsZTtcbiAgICB2YXIgc2NhbGVkTGFiZWxTaG93biA9IHIuZWxlVGV4dEJpZ2dlclRoYW5NaW4oZWxlLCBzY2FsZSk7XG5cbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKGVsZSwgc2NhbGVkTGFiZWxTaG93bikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBlbGVDYWNoZSA9IGxvb2t1cC5nZXQoZWxlLCBsdmwpOyAvLyBpZiB0aGlzIGdldCB3YXMgb24gYW4gdW51c2VkL2ludmFsaWRhdGVkIGNhY2hlLCB0aGVuIHJlc3RvcmUgdGhlIHRleHR1cmUgdXNhZ2UgbWV0cmljXG5cbiAgICBpZiAoZWxlQ2FjaGUgJiYgZWxlQ2FjaGUuaW52YWxpZGF0ZWQpIHtcbiAgICAgIGVsZUNhY2hlLmludmFsaWRhdGVkID0gZmFsc2U7XG4gICAgICBlbGVDYWNoZS50ZXh0dXJlLmludmFsaWRhdGVkV2lkdGggLT0gZWxlQ2FjaGUud2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKGVsZUNhY2hlKSB7XG4gICAgICByZXR1cm4gZWxlQ2FjaGU7XG4gICAgfVxuXG4gICAgdmFyIHR4ckg7IC8vIHdoaWNoIHRleHR1cmUgaGVpZ2h0IHRoaXMgZWxlIGJlbG9uZ3MgdG9cblxuICAgIGlmIChlbGVTY2FsZWRIIDw9IG1pblR4ckgpIHtcbiAgICAgIHR4ckggPSBtaW5UeHJIO1xuICAgIH0gZWxzZSBpZiAoZWxlU2NhbGVkSCA8PSB0eHJTdGVwSCkge1xuICAgICAgdHhySCA9IHR4clN0ZXBIO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eHJIID0gTWF0aC5jZWlsKGVsZVNjYWxlZEggLyB0eHJTdGVwSCkgKiB0eHJTdGVwSDtcbiAgICB9XG5cbiAgICBpZiAoZWxlU2NhbGVkSCA+IG1heFR4ckggfHwgZWxlU2NhbGVkVyA+IG1heFR4clcpIHtcbiAgICAgIHJldHVybiBudWxsOyAvLyBjYWNoaW5nIGxhcmdlIGVsZW1lbnRzIGlzIG5vdCBlZmZpY2llbnRcbiAgICB9XG5cbiAgICB2YXIgdHhyUSA9IHNlbGYuZ2V0VGV4dHVyZVF1ZXVlKHR4ckgpOyAvLyBmaXJzdCB0cnkgdGhlIHNlY29uZCBsYXN0IG9uZSBpbiBjYXNlIGl0IGhhcyBzcGFjZSBhdCB0aGUgZW5kXG5cbiAgICB2YXIgdHhyID0gdHhyUVt0eHJRLmxlbmd0aCAtIDJdO1xuXG4gICAgdmFyIGFkZE5ld1R4ciA9IGZ1bmN0aW9uIGFkZE5ld1R4cigpIHtcbiAgICAgIHJldHVybiBzZWxmLnJlY3ljbGVUZXh0dXJlKHR4ckgsIGVsZVNjYWxlZFcpIHx8IHNlbGYuYWRkVGV4dHVyZSh0eHJILCBlbGVTY2FsZWRXKTtcbiAgICB9OyAvLyB0cnkgdGhlIGxhc3Qgb25lIGlmIHRoZXJlIGlzIG5vIHNlY29uZCBsYXN0IG9uZVxuXG5cbiAgICBpZiAoIXR4cikge1xuICAgICAgdHhyID0gdHhyUVt0eHJRLmxlbmd0aCAtIDFdO1xuICAgIH0gLy8gaWYgdGhlIGxhc3Qgb25lIGRvZXNuJ3QgZXhpc3QsIHdlIG5lZWQgYSBmaXJzdCBvbmVcblxuXG4gICAgaWYgKCF0eHIpIHtcbiAgICAgIHR4ciA9IGFkZE5ld1R4cigpO1xuICAgIH0gLy8gaWYgdGhlcmUncyBubyByb29tIGluIHRoZSBjdXJyZW50IHRleHR1cmUsIHdlIG5lZWQgYSBuZXcgb25lXG5cblxuICAgIGlmICh0eHIud2lkdGggLSB0eHIudXNlZFdpZHRoIDwgZWxlU2NhbGVkVykge1xuICAgICAgdHhyID0gYWRkTmV3VHhyKCk7XG4gICAgfVxuXG4gICAgdmFyIHNjYWxhYmxlRnJvbSA9IGZ1bmN0aW9uIHNjYWxhYmxlRnJvbShvdGhlckNhY2hlKSB7XG4gICAgICByZXR1cm4gb3RoZXJDYWNoZSAmJiBvdGhlckNhY2hlLnNjYWxlZExhYmVsU2hvd24gPT09IHNjYWxlZExhYmVsU2hvd247XG4gICAgfTtcblxuICAgIHZhciBkZXFpbmcgPSByZWFzb24gJiYgcmVhc29uID09PSBnZXRUeHJSZWFzb25zLmRlcXVldWU7XG4gICAgdmFyIGhpZ2hRdWFsaXR5UmVxID0gcmVhc29uICYmIHJlYXNvbiA9PT0gZ2V0VHhyUmVhc29ucy5oaWdoUXVhbGl0eTtcbiAgICB2YXIgZG93bnNjYWxlUmVxID0gcmVhc29uICYmIHJlYXNvbiA9PT0gZ2V0VHhyUmVhc29ucy5kb3duc2NhbGU7XG4gICAgdmFyIGhpZ2hlckNhY2hlOyAvLyB0aGUgbmVhcmVzdCBjYWNoZSB3aXRoIGEgaGlnaGVyIGxldmVsXG5cbiAgICBmb3IgKHZhciBsID0gbHZsICsgMTsgbCA8PSBtYXhMdmwkMTsgbCsrKSB7XG4gICAgICB2YXIgYyA9IGxvb2t1cC5nZXQoZWxlLCBsKTtcblxuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaGlnaGVyQ2FjaGUgPSBjO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb25lVXBDYWNoZSA9IGhpZ2hlckNhY2hlICYmIGhpZ2hlckNhY2hlLmxldmVsID09PSBsdmwgKyAxID8gaGlnaGVyQ2FjaGUgOiBudWxsO1xuXG4gICAgdmFyIGRvd25zY2FsZSA9IGZ1bmN0aW9uIGRvd25zY2FsZSgpIHtcbiAgICAgIHR4ci5jb250ZXh0LmRyYXdJbWFnZShvbmVVcENhY2hlLnRleHR1cmUuY2FudmFzLCBvbmVVcENhY2hlLngsIDAsIG9uZVVwQ2FjaGUud2lkdGgsIG9uZVVwQ2FjaGUuaGVpZ2h0LCB0eHIudXNlZFdpZHRoLCAwLCBlbGVTY2FsZWRXLCBlbGVTY2FsZWRIKTtcbiAgICB9OyAvLyByZXNldCBlbGUgYXJlYSBpbiB0ZXh0dXJlXG5cblxuICAgIHR4ci5jb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgICB0eHIuY29udGV4dC5jbGVhclJlY3QodHhyLnVzZWRXaWR0aCwgMCwgZWxlU2NhbGVkVywgdHhySCk7XG5cbiAgICBpZiAoc2NhbGFibGVGcm9tKG9uZVVwQ2FjaGUpKSB7XG4gICAgICAvLyB0aGVuIHdlIGNhbiByZWxhdGl2ZWx5IGNoZWFwbHkgcmVzY2FsZSB0aGUgZXhpc3RpbmcgaW1hZ2Ugdy9vIHJlcmVuZGVyaW5nXG4gICAgICBkb3duc2NhbGUoKTtcbiAgICB9IGVsc2UgaWYgKHNjYWxhYmxlRnJvbShoaWdoZXJDYWNoZSkpIHtcbiAgICAgIC8vIHRoZW4gdXNlIHRoZSBoaWdoZXIgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIG5leHQgbGV2ZWwgZG93blxuICAgICAgLy8gdG8gY2hlYXBseSBzY2FsZSB0b3dhcmRzIHRoZSBzbWFsbGVyIGxldmVsXG4gICAgICBpZiAoaGlnaFF1YWxpdHlSZXEpIHtcbiAgICAgICAgZm9yICh2YXIgX2wgPSBoaWdoZXJDYWNoZS5sZXZlbDsgX2wgPiBsdmw7IF9sLS0pIHtcbiAgICAgICAgICBvbmVVcENhY2hlID0gc2VsZi5nZXRFbGVtZW50KGVsZSwgYmIsIHB4UmF0aW8sIF9sLCBnZXRUeHJSZWFzb25zLmRvd25zY2FsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkb3duc2NhbGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYucXVldWVFbGVtZW50KGVsZSwgaGlnaGVyQ2FjaGUubGV2ZWwgLSAxKTtcbiAgICAgICAgcmV0dXJuIGhpZ2hlckNhY2hlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbG93ZXJDYWNoZTsgLy8gdGhlIG5lYXJlc3QgY2FjaGUgd2l0aCBhIGxvd2VyIGxldmVsXG5cbiAgICAgIGlmICghZGVxaW5nICYmICFoaWdoUXVhbGl0eVJlcSAmJiAhZG93bnNjYWxlUmVxKSB7XG4gICAgICAgIGZvciAodmFyIF9sMiA9IGx2bCAtIDE7IF9sMiA+PSBtaW5MdmwkMTsgX2wyLS0pIHtcbiAgICAgICAgICB2YXIgX2MgPSBsb29rdXAuZ2V0KGVsZSwgX2wyKTtcblxuICAgICAgICAgIGlmIChfYykge1xuICAgICAgICAgICAgbG93ZXJDYWNoZSA9IF9jO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzY2FsYWJsZUZyb20obG93ZXJDYWNoZSkpIHtcbiAgICAgICAgLy8gdGhlbiB1c2UgdGhlIGxvd2VyIHF1YWxpdHkgY2FjaGUgZm9yIG5vdyBhbmQgcXVldWUgdGhlIGJldHRlciBvbmUgZm9yIGxhdGVyXG4gICAgICAgIHNlbGYucXVldWVFbGVtZW50KGVsZSwgbHZsKTtcbiAgICAgICAgcmV0dXJuIGxvd2VyQ2FjaGU7XG4gICAgICB9XG5cbiAgICAgIHR4ci5jb250ZXh0LnRyYW5zbGF0ZSh0eHIudXNlZFdpZHRoLCAwKTtcbiAgICAgIHR4ci5jb250ZXh0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG4gICAgICB0aGlzLmRyYXdFbGVtZW50KHR4ci5jb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCBmYWxzZSk7XG4gICAgICB0eHIuY29udGV4dC5zY2FsZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7XG4gICAgICB0eHIuY29udGV4dC50cmFuc2xhdGUoLXR4ci51c2VkV2lkdGgsIDApO1xuICAgIH1cblxuICAgIGVsZUNhY2hlID0ge1xuICAgICAgeDogdHhyLnVzZWRXaWR0aCxcbiAgICAgIHRleHR1cmU6IHR4cixcbiAgICAgIGxldmVsOiBsdmwsXG4gICAgICBzY2FsZTogc2NhbGUsXG4gICAgICB3aWR0aDogZWxlU2NhbGVkVyxcbiAgICAgIGhlaWdodDogZWxlU2NhbGVkSCxcbiAgICAgIHNjYWxlZExhYmVsU2hvd246IHNjYWxlZExhYmVsU2hvd25cbiAgICB9O1xuICAgIHR4ci51c2VkV2lkdGggKz0gTWF0aC5jZWlsKGVsZVNjYWxlZFcgKyBlbGVUeHJTcGFjaW5nKTtcbiAgICB0eHIuZWxlQ2FjaGVzLnB1c2goZWxlQ2FjaGUpO1xuICAgIGxvb2t1cC5zZXQoZWxlLCBsdmwsIGVsZUNhY2hlKTtcbiAgICBzZWxmLmNoZWNrVGV4dHVyZUZ1bGxuZXNzKHR4cik7XG4gICAgcmV0dXJuIGVsZUNhY2hlO1xuICB9O1xuXG4gIEVUQ3AuaW52YWxpZGF0ZUVsZW1lbnRzID0gZnVuY3Rpb24gKGVsZXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuaW52YWxpZGF0ZUVsZW1lbnQoZWxlc1tpXSk7XG4gICAgfVxuICB9O1xuXG4gIEVUQ3AuaW52YWxpZGF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBsb29rdXAgPSBzZWxmLmxvb2t1cDtcbiAgICB2YXIgY2FjaGVzID0gW107XG4gICAgdmFyIGludmFsaWQgPSBsb29rdXAuaXNJbnZhbGlkKGVsZSk7XG5cbiAgICBpZiAoIWludmFsaWQpIHtcbiAgICAgIHJldHVybjsgLy8gb3ZlcnJpZGUgdGhlIGludmFsaWRhdGlvbiByZXF1ZXN0IGlmIHRoZSBlbGVtZW50IGtleSBoYXMgbm90IGNoYW5nZWRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBsdmwgPSBtaW5MdmwkMTsgbHZsIDw9IG1heEx2bCQxOyBsdmwrKykge1xuICAgICAgdmFyIGNhY2hlID0gbG9va3VwLmdldEZvckNhY2hlZEtleShlbGUsIGx2bCk7XG5cbiAgICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZXMucHVzaChjYWNoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG5vT3RoZXJFbGVzVXNlQ2FjaGUgPSBsb29rdXAuaW52YWxpZGF0ZShlbGUpO1xuXG4gICAgaWYgKG5vT3RoZXJFbGVzVXNlQ2FjaGUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBfY2FjaGUgPSBjYWNoZXNbaV07XG4gICAgICAgIHZhciB0eHIgPSBfY2FjaGUudGV4dHVyZTsgLy8gcmVtb3ZlIHNwYWNlIGZyb20gdGhlIHRleHR1cmUgaXQgYmVsb25ncyB0b1xuXG4gICAgICAgIHR4ci5pbnZhbGlkYXRlZFdpZHRoICs9IF9jYWNoZS53aWR0aDsgLy8gbWFyayB0aGUgY2FjaGUgYXMgaW52YWxpZGF0ZWRcblxuICAgICAgICBfY2FjaGUuaW52YWxpZGF0ZWQgPSB0cnVlOyAvLyByZXRpcmUgdGhlIHRleHR1cmUgaWYgaXRzIHV0aWxpdHkgaXMgbG93XG5cbiAgICAgICAgc2VsZi5jaGVja1RleHR1cmVVdGlsaXR5KHR4cik7XG4gICAgICB9XG4gICAgfSAvLyByZW1vdmUgZnJvbSBxdWV1ZSBzaW5jZSB0aGUgb2xkIHJlcSB3YXMgZm9yIHRoZSBvbGQgc3RhdGVcblxuXG4gICAgc2VsZi5yZW1vdmVGcm9tUXVldWUoZWxlKTtcbiAgfTtcblxuICBFVENwLmNoZWNrVGV4dHVyZVV0aWxpdHkgPSBmdW5jdGlvbiAodHhyKSB7XG4gICAgLy8gaW52YWxpZGF0ZSBhbGwgZW50cmllcyBpbiB0aGUgY2FjaGUgaWYgdGhlIGNhY2hlIHNpemUgaXMgc21hbGxcbiAgICBpZiAodHhyLmludmFsaWRhdGVkV2lkdGggPj0gbWluVXRpbGl0eSAqIHR4ci53aWR0aCkge1xuICAgICAgdGhpcy5yZXRpcmVUZXh0dXJlKHR4cik7XG4gICAgfVxuICB9O1xuXG4gIEVUQ3AuY2hlY2tUZXh0dXJlRnVsbG5lc3MgPSBmdW5jdGlvbiAodHhyKSB7XG4gICAgLy8gaWYgdGV4dHVyZSBoYXMgYmVlbiBtb3N0bHkgZmlsbGVkIGFuZCBwYXNzZWQgb3ZlciBzZXZlcmFsIHRpbWVzLCByZW1vdmVcbiAgICAvLyBpdCBmcm9tIHRoZSBxdWV1ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhc3RlIHRpbWUgbG9va2luZyBhdCBpdCB0byBwdXQgbmV3IHRoaW5nc1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdHhyUSA9IHNlbGYuZ2V0VGV4dHVyZVF1ZXVlKHR4ci5oZWlnaHQpO1xuXG4gICAgaWYgKHR4ci51c2VkV2lkdGggLyB0eHIud2lkdGggPiBtYXhGdWxsbmVzcyAmJiB0eHIuZnVsbG5lc3NDaGVja3MgPj0gbWF4RnVsbG5lc3NDaGVja3MpIHtcbiAgICAgIHJlbW92ZUZyb21BcnJheSh0eHJRLCB0eHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eHIuZnVsbG5lc3NDaGVja3MrKztcbiAgICB9XG4gIH07XG5cbiAgRVRDcC5yZXRpcmVUZXh0dXJlID0gZnVuY3Rpb24gKHR4cikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgdHhySCA9IHR4ci5oZWlnaHQ7XG4gICAgdmFyIHR4clEgPSBzZWxmLmdldFRleHR1cmVRdWV1ZSh0eHJIKTtcbiAgICB2YXIgbG9va3VwID0gdGhpcy5sb29rdXA7IC8vIHJldGlyZSB0aGUgdGV4dHVyZSBmcm9tIHRoZSBhY3RpdmUgLyBzZWFyY2hhYmxlIHF1ZXVlOlxuXG4gICAgcmVtb3ZlRnJvbUFycmF5KHR4clEsIHR4cik7XG4gICAgdHhyLnJldGlyZWQgPSB0cnVlOyAvLyByZW1vdmUgdGhlIHJlZnMgZnJvbSB0aGUgZWxlcyB0byB0aGUgY2FjaGVzOlxuXG4gICAgdmFyIGVsZUNhY2hlcyA9IHR4ci5lbGVDYWNoZXM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZUNhY2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZUNhY2hlID0gZWxlQ2FjaGVzW2ldO1xuICAgICAgbG9va3VwLmRlbGV0ZUNhY2hlKGVsZUNhY2hlLmtleSwgZWxlQ2FjaGUubGV2ZWwpO1xuICAgIH1cblxuICAgIGNsZWFyQXJyYXkoZWxlQ2FjaGVzKTsgLy8gYWRkIHRoZSB0ZXh0dXJlIHRvIGEgcmV0aXJlZCBxdWV1ZSBzbyBpdCBjYW4gYmUgcmVjeWNsZWQgaW4gZnV0dXJlOlxuXG4gICAgdmFyIHJ0eHRyUSA9IHNlbGYuZ2V0UmV0aXJlZFRleHR1cmVRdWV1ZSh0eHJIKTtcbiAgICBydHh0clEucHVzaCh0eHIpO1xuICB9O1xuXG4gIEVUQ3AuYWRkVGV4dHVyZSA9IGZ1bmN0aW9uICh0eHJILCBtaW5XKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gICAgdmFyIHR4ciA9IHt9O1xuICAgIHR4clEucHVzaCh0eHIpO1xuICAgIHR4ci5lbGVDYWNoZXMgPSBbXTtcbiAgICB0eHIuaGVpZ2h0ID0gdHhySDtcbiAgICB0eHIud2lkdGggPSBNYXRoLm1heChkZWZUeHJXaWR0aCwgbWluVyk7XG4gICAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gICAgdHhyLmludmFsaWRhdGVkV2lkdGggPSAwO1xuICAgIHR4ci5mdWxsbmVzc0NoZWNrcyA9IDA7XG4gICAgdHhyLmNhbnZhcyA9IHNlbGYucmVuZGVyZXIubWFrZU9mZnNjcmVlbkNhbnZhcyh0eHIud2lkdGgsIHR4ci5oZWlnaHQpO1xuICAgIHR4ci5jb250ZXh0ID0gdHhyLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIHJldHVybiB0eHI7XG4gIH07XG5cbiAgRVRDcC5yZWN5Y2xlVGV4dHVyZSA9IGZ1bmN0aW9uICh0eHJILCBtaW5XKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciB0eHJRID0gc2VsZi5nZXRUZXh0dXJlUXVldWUodHhySCk7XG4gICAgdmFyIHJ0eHRyUSA9IHNlbGYuZ2V0UmV0aXJlZFRleHR1cmVRdWV1ZSh0eHJIKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnR4dHJRLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdHhyID0gcnR4dHJRW2ldO1xuXG4gICAgICBpZiAodHhyLndpZHRoID49IG1pblcpIHtcbiAgICAgICAgdHhyLnJldGlyZWQgPSBmYWxzZTtcbiAgICAgICAgdHhyLnVzZWRXaWR0aCA9IDA7XG4gICAgICAgIHR4ci5pbnZhbGlkYXRlZFdpZHRoID0gMDtcbiAgICAgICAgdHhyLmZ1bGxuZXNzQ2hlY2tzID0gMDtcbiAgICAgICAgY2xlYXJBcnJheSh0eHIuZWxlQ2FjaGVzKTtcbiAgICAgICAgdHhyLmNvbnRleHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgICB0eHIuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdHhyLndpZHRoLCB0eHIuaGVpZ2h0KTtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHJ0eHRyUSwgdHhyKTtcbiAgICAgICAgdHhyUS5wdXNoKHR4cik7XG4gICAgICAgIHJldHVybiB0eHI7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEVUQ3AucXVldWVFbGVtZW50ID0gZnVuY3Rpb24gKGVsZSwgbHZsKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBxID0gc2VsZi5nZXRFbGVtZW50UXVldWUoKTtcbiAgICB2YXIgazJxID0gc2VsZi5nZXRFbGVtZW50S2V5VG9RdWV1ZSgpO1xuICAgIHZhciBrZXkgPSB0aGlzLmdldEtleShlbGUpO1xuICAgIHZhciBleGlzdGluZ1JlcSA9IGsycVtrZXldO1xuXG4gICAgaWYgKGV4aXN0aW5nUmVxKSB7XG4gICAgICAvLyB1c2UgdGhlIG1heCBsdmwgYi9jIGluIGJldHdlZW4gbHZscyBhcmUgY2hlYXAgdG8gbWFrZVxuICAgICAgZXhpc3RpbmdSZXEubGV2ZWwgPSBNYXRoLm1heChleGlzdGluZ1JlcS5sZXZlbCwgbHZsKTtcbiAgICAgIGV4aXN0aW5nUmVxLmVsZXMubWVyZ2UoZWxlKTtcbiAgICAgIGV4aXN0aW5nUmVxLnJlcXMrKztcbiAgICAgIHEudXBkYXRlSXRlbShleGlzdGluZ1JlcSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXEgPSB7XG4gICAgICAgIGVsZXM6IGVsZS5zcGF3bigpLm1lcmdlKGVsZSksXG4gICAgICAgIGxldmVsOiBsdmwsXG4gICAgICAgIHJlcXM6IDEsXG4gICAgICAgIGtleToga2V5XG4gICAgICB9O1xuICAgICAgcS5wdXNoKHJlcSk7XG4gICAgICBrMnFba2V5XSA9IHJlcTtcbiAgICB9XG4gIH07XG5cbiAgRVRDcC5kZXF1ZXVlID0gZnVuY3Rpb24gKHB4UmF0aW9cbiAgLyosIGV4dGVudCovXG4gICkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcSA9IHNlbGYuZ2V0RWxlbWVudFF1ZXVlKCk7XG4gICAgdmFyIGsycSA9IHNlbGYuZ2V0RWxlbWVudEtleVRvUXVldWUoKTtcbiAgICB2YXIgZGVxdWV1ZWQgPSBbXTtcbiAgICB2YXIgbG9va3VwID0gc2VsZi5sb29rdXA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heERlcVNpemUkMTsgaSsrKSB7XG4gICAgICBpZiAocS5zaXplKCkgPiAwKSB7XG4gICAgICAgIHZhciByZXEgPSBxLnBvcCgpO1xuICAgICAgICB2YXIga2V5ID0gcmVxLmtleTtcbiAgICAgICAgdmFyIGVsZSA9IHJlcS5lbGVzWzBdOyAvLyBhbGwgZWxlcyBoYXZlIHRoZSBzYW1lIGtleVxuXG4gICAgICAgIHZhciBjYWNoZUV4aXN0cyA9IGxvb2t1cC5oYXNDYWNoZShlbGUsIHJlcS5sZXZlbCk7IC8vIGNsZWFyIG91dCB0aGUga2V5IHRvIHJlcSBsb29rdXBcblxuICAgICAgICBrMnFba2V5XSA9IG51bGw7IC8vIGRlcXVldWVpbmcgaXNuJ3QgbmVjZXNzYXJ5IHdpdGggYW4gZXhpc3RpbmcgY2FjaGVcblxuICAgICAgICBpZiAoY2FjaGVFeGlzdHMpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlcXVldWVkLnB1c2gocmVxKTtcbiAgICAgICAgdmFyIGJiID0gc2VsZi5nZXRCb3VuZGluZ0JveChlbGUpO1xuICAgICAgICBzZWxmLmdldEVsZW1lbnQoZWxlLCBiYiwgcHhSYXRpbywgcmVxLmxldmVsLCBnZXRUeHJSZWFzb25zLmRlcXVldWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlcXVldWVkO1xuICB9O1xuXG4gIEVUQ3AucmVtb3ZlRnJvbVF1ZXVlID0gZnVuY3Rpb24gKGVsZSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgcSA9IHNlbGYuZ2V0RWxlbWVudFF1ZXVlKCk7XG4gICAgdmFyIGsycSA9IHNlbGYuZ2V0RWxlbWVudEtleVRvUXVldWUoKTtcbiAgICB2YXIga2V5ID0gdGhpcy5nZXRLZXkoZWxlKTtcbiAgICB2YXIgcmVxID0gazJxW2tleV07XG5cbiAgICBpZiAocmVxICE9IG51bGwpIHtcbiAgICAgIGlmIChyZXEuZWxlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgLy8gcmVtb3ZlIGlmIGxhc3QgZWxlIGluIHRoZSByZXFcbiAgICAgICAgLy8gYnJpbmcgdG8gZnJvbnQgb2YgcXVldWVcbiAgICAgICAgcmVxLnJlcXMgPSBNQVhfSU5UJDE7XG4gICAgICAgIHEudXBkYXRlSXRlbShyZXEpO1xuICAgICAgICBxLnBvcCgpOyAvLyByZW1vdmUgZnJvbSBxdWV1ZVxuXG4gICAgICAgIGsycVtrZXldID0gbnVsbDsgLy8gcmVtb3ZlIGZyb20gbG9va3VwIG1hcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGp1c3QgcmVtb3ZlIGVsZSBmcm9tIHJlcVxuICAgICAgICByZXEuZWxlcy51bm1lcmdlKGVsZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEVUQ3Aub25EZXF1ZXVlID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgdGhpcy5vbkRlcXVldWVzLnB1c2goZm4pO1xuICB9O1xuXG4gIEVUQ3Aub2ZmRGVxdWV1ZSA9IGZ1bmN0aW9uIChmbikge1xuICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLm9uRGVxdWV1ZXMsIGZuKTtcbiAgfTtcblxuICBFVENwLnNldHVwRGVxdWV1ZWluZyA9IGRlZnMuc2V0dXBEZXF1ZXVlaW5nKHtcbiAgICBkZXFSZWRyYXdUaHJlc2hvbGQ6IGRlcVJlZHJhd1RocmVzaG9sZCQxLFxuICAgIGRlcUNvc3Q6IGRlcUNvc3QkMSxcbiAgICBkZXFBdmdDb3N0OiBkZXFBdmdDb3N0JDEsXG4gICAgZGVxTm9EcmF3Q29zdDogZGVxTm9EcmF3Q29zdCQxLFxuICAgIGRlcUZhc3RDb3N0OiBkZXFGYXN0Q29zdCQxLFxuICAgIGRlcTogZnVuY3Rpb24gZGVxKHNlbGYsIHB4UmF0aW8sIGV4dGVudCkge1xuICAgICAgcmV0dXJuIHNlbGYuZGVxdWV1ZShweFJhdGlvLCBleHRlbnQpO1xuICAgIH0sXG4gICAgb25EZXFkOiBmdW5jdGlvbiBvbkRlcWQoc2VsZiwgZGVxZCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxmLm9uRGVxdWV1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGZuID0gc2VsZi5vbkRlcXVldWVzW2ldO1xuICAgICAgICBmbihkZXFkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNob3VsZFJlZHJhdzogZnVuY3Rpb24gc2hvdWxkUmVkcmF3KHNlbGYsIGRlcWQsIHB4UmF0aW8sIGV4dGVudCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXFkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlbGVzID0gZGVxZFtpXS5lbGVzO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWxlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBiYiA9IGVsZXNbal0uYm91bmRpbmdCb3goKTtcblxuICAgICAgICAgIGlmIChib3VuZGluZ0JveGVzSW50ZXJzZWN0KGJiLCBleHRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgcHJpb3JpdHk6IGZ1bmN0aW9uIHByaW9yaXR5KHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLnJlbmRlcmVyLmJlZm9yZVJlbmRlclByaW9yaXRpZXMuZWxlVHhyRGVxO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGRlZk51bUxheWVycyA9IDE7IC8vIGRlZmF1bHQgbnVtYmVyIG9mIGxheWVycyB0byB1c2VcblxuICB2YXIgbWluTHZsID0gLTQ7IC8vIHdoZW4gc2NhbGluZyBzbWFsbGVyIHRoYW4gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHJlLXJlbmRlclxuXG4gIHZhciBtYXhMdmwgPSAyOyAvLyB3aGVuIGxhcmdlciB0aGFuIHRoaXMgc2NhbGUganVzdCByZW5kZXIgZGlyZWN0bHkgKGNhY2hpbmcgaXMgbm90IGhlbHBmdWwpXG5cbiAgdmFyIG1heFpvb20gPSAzLjk5OyAvLyBiZXlvbmQgdGhpcyB6b29tIGxldmVsLCBsYXllcmVkIHRleHR1cmVzIGFyZSBub3QgdXNlZFxuXG4gIHZhciBkZXFSZWRyYXdUaHJlc2hvbGQgPSA1MDsgLy8gdGltZSB0byBiYXRjaCByZWRyYXdzIHRvZ2V0aGVyIGZyb20gZGVxdWV1ZWluZyB0byBhbGxvdyBtb3JlIGRlcXVldWVpbmcgY2FsY3MgdG8gaGFwcGVuIGluIHRoZSBtZWFud2hpbGVcblxuICB2YXIgcmVmaW5lRWxlRGVib3VuY2VUaW1lID0gNTA7IC8vIHRpbWUgdG8gZGVib3VuY2Ugc2hhcnBlciBlbGUgdGV4dHVyZSB1cGRhdGVzXG5cbiAgdmFyIGRlcUNvc3QgPSAwLjE1OyAvLyAlIG9mIGFkZCdsIHJlbmRlcmluZyBjb3N0IGFsbG93ZWQgZm9yIGRlcXVldWluZyBlbGUgY2FjaGVzIGVhY2ggZnJhbWVcblxuICB2YXIgZGVxQXZnQ29zdCA9IDAuMTsgLy8gJSBvZiBhZGQnbCByZW5kZXJpbmcgY29zdCBjb21wYXJlZCB0byBhdmVyYWdlIG92ZXJhbGwgcmVkcmF3IHRpbWVcblxuICB2YXIgZGVxTm9EcmF3Q29zdCA9IDAuOTsgLy8gJSBvZiBhdmcgZnJhbWUgdGltZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBkZXF1ZXVlaW5nIHdoZW4gbm90IGRyYXdpbmdcblxuICB2YXIgZGVxRmFzdENvc3QgPSAwLjk7IC8vICUgb2YgZnJhbWUgdGltZSB0byBiZSB1c2VkIHdoZW4gPjYwZnBzXG5cbiAgdmFyIG1heERlcVNpemUgPSAxOyAvLyBudW1iZXIgb2YgZWxlcyB0byBkZXF1ZXVlIGFuZCByZW5kZXIgYXQgaGlnaGVyIHRleHR1cmUgaW4gZWFjaCBiYXRjaFxuXG4gIHZhciBpbnZhbGlkVGhyZXNob2xkID0gMjUwOyAvLyB0aW1lIHRocmVzaG9sZCBmb3IgZGlzYWJsaW5nIGIvYyBvZiBpbnZhbGlkYXRpb25zXG5cbiAgdmFyIG1heExheWVyQXJlYSA9IDQwMDAgKiA0MDAwOyAvLyBsYXllcnMgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gdGhpc1xuXG4gIHZhciB1c2VIaWdoUXVhbGl0eUVsZVR4clJlcXMgPSB0cnVlOyAvLyB3aGV0aGVyIHRvIHVzZSBoaWdoIHF1YWxpdHkgZWxlIHR4ciByZXF1ZXN0cyAoZ2VuZXJhbGx5IGZhc3RlciBhbmQgY2hlYXBlciBpbiB0aGUgbG9uZ3Rlcm0pXG4gIC8vIHZhciBsb2cgPSBmdW5jdGlvbigpeyBjb25zb2xlLmxvZy5hcHBseSggY29uc29sZSwgYXJndW1lbnRzICk7IH07XG5cbiAgdmFyIExheWVyZWRUZXh0dXJlQ2FjaGUgPSBmdW5jdGlvbiBMYXllcmVkVGV4dHVyZUNhY2hlKHJlbmRlcmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByID0gc2VsZi5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHZhciBjeSA9IHIuY3k7XG4gICAgc2VsZi5sYXllcnNCeUxldmVsID0ge307IC8vIGUuZy4gMiA9PiBbIGxheWVyMSwgbGF5ZXIyLCAuLi4sIGxheWVyTiBdXG5cbiAgICBzZWxmLmZpcnN0R2V0ID0gdHJ1ZTtcbiAgICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKSAtIDIgKiBpbnZhbGlkVGhyZXNob2xkO1xuICAgIHNlbGYuc2tpcHBpbmcgPSBmYWxzZTtcbiAgICBzZWxmLmVsZVR4ckRlcXMgPSBjeS5jb2xsZWN0aW9uKCk7XG4gICAgc2VsZi5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50ID0gZGVib3VuY2VfMShmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLnJlZmluZUVsZW1lbnRUZXh0dXJlcyhzZWxmLmVsZVR4ckRlcXMpO1xuICAgICAgc2VsZi5lbGVUeHJEZXFzLnVubWVyZ2Uoc2VsZi5lbGVUeHJEZXFzKTtcbiAgICB9LCByZWZpbmVFbGVEZWJvdW5jZVRpbWUpO1xuICAgIHIuYmVmb3JlUmVuZGVyKGZ1bmN0aW9uICh3aWxsRHJhdywgbm93KSB7XG4gICAgICBpZiAobm93IC0gc2VsZi5sYXN0SW52YWxpZGF0aW9uVGltZSA8PSBpbnZhbGlkVGhyZXNob2xkKSB7XG4gICAgICAgIHNlbGYuc2tpcHBpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5za2lwcGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0sIHIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5seXJUeHJTa2lwKTtcblxuICAgIHZhciBxU29ydCA9IGZ1bmN0aW9uIHFTb3J0KGEsIGIpIHtcbiAgICAgIHJldHVybiBiLnJlcXMgLSBhLnJlcXM7XG4gICAgfTtcblxuICAgIHNlbGYubGF5ZXJzUXVldWUgPSBuZXcgaGVhcChxU29ydCk7XG4gICAgc2VsZi5zZXR1cERlcXVldWVpbmcoKTtcbiAgfTtcblxuICB2YXIgTFRDcCA9IExheWVyZWRUZXh0dXJlQ2FjaGUucHJvdG90eXBlO1xuICB2YXIgbGF5ZXJJZFBvb2wgPSAwO1xuICB2YXIgTUFYX0lOVCA9IE1hdGgucG93KDIsIDUzKSAtIDE7XG5cbiAgTFRDcC5tYWtlTGF5ZXIgPSBmdW5jdGlvbiAoYmIsIGx2bCkge1xuICAgIHZhciBzY2FsZSA9IE1hdGgucG93KDIsIGx2bCk7XG4gICAgdmFyIHcgPSBNYXRoLmNlaWwoYmIudyAqIHNjYWxlKTtcbiAgICB2YXIgaCA9IE1hdGguY2VpbChiYi5oICogc2NhbGUpO1xuICAgIHZhciBjYW52YXMgPSB0aGlzLnJlbmRlcmVyLm1ha2VPZmZzY3JlZW5DYW52YXModywgaCk7XG4gICAgdmFyIGxheWVyID0ge1xuICAgICAgaWQ6IGxheWVySWRQb29sID0gKytsYXllcklkUG9vbCAlIE1BWF9JTlQsXG4gICAgICBiYjogYmIsXG4gICAgICBsZXZlbDogbHZsLFxuICAgICAgd2lkdGg6IHcsXG4gICAgICBoZWlnaHQ6IGgsXG4gICAgICBjYW52YXM6IGNhbnZhcyxcbiAgICAgIGNvbnRleHQ6IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLFxuICAgICAgZWxlczogW10sXG4gICAgICBlbGVzUXVldWU6IFtdLFxuICAgICAgcmVxczogMFxuICAgIH07IC8vIGxvZygnbWFrZSBsYXllciAlcyB3aXRoIHcgJXMgYW5kIGggJXMgYW5kIGx2bCAlcycsIGxheWVyLmlkLCBsYXllci53aWR0aCwgbGF5ZXIuaGVpZ2h0LCBsYXllci5sZXZlbCk7XG5cbiAgICB2YXIgY3h0ID0gbGF5ZXIuY29udGV4dDtcbiAgICB2YXIgZHggPSAtbGF5ZXIuYmIueDE7XG4gICAgdmFyIGR5ID0gLWxheWVyLmJiLnkxOyAvLyBkbyB0aGUgdHJhbnNmb3JtIG9uIGNyZWF0aW9uIHRvIHNhdmUgY3ljbGVzIChpdCdzIHRoZSBzYW1lIGZvciBhbGwgZWxlcylcblxuICAgIGN4dC5zY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgIGN4dC50cmFuc2xhdGUoZHgsIGR5KTtcbiAgICByZXR1cm4gbGF5ZXI7XG4gIH07XG5cbiAgTFRDcC5nZXRMYXllcnMgPSBmdW5jdGlvbiAoZWxlcywgcHhSYXRpbywgbHZsKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciByID0gc2VsZi5yZW5kZXJlcjtcbiAgICB2YXIgY3kgPSByLmN5O1xuICAgIHZhciB6b29tID0gY3kuem9vbSgpO1xuICAgIHZhciBmaXJzdEdldCA9IHNlbGYuZmlyc3RHZXQ7XG4gICAgc2VsZi5maXJzdEdldCA9IGZhbHNlOyAvLyBsb2coJy0tXFxuZ2V0IGxheWVycyB3aXRoICVzIGVsZXMnLCBlbGVzLmxlbmd0aCk7XG4gICAgLy9sb2cgZWxlcy5tYXAoZnVuY3Rpb24oZWxlKXsgcmV0dXJuIGVsZS5pZCgpIH0pICk7XG5cbiAgICBpZiAobHZsID09IG51bGwpIHtcbiAgICAgIGx2bCA9IE1hdGguY2VpbChsb2cyKHpvb20gKiBweFJhdGlvKSk7XG5cbiAgICAgIGlmIChsdmwgPCBtaW5MdmwpIHtcbiAgICAgICAgbHZsID0gbWluTHZsO1xuICAgICAgfSBlbHNlIGlmICh6b29tID49IG1heFpvb20gfHwgbHZsID4gbWF4THZsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobHZsLCBlbGVzKTtcbiAgICB2YXIgbGF5ZXJzQnlMdmwgPSBzZWxmLmxheWVyc0J5TGV2ZWw7XG4gICAgdmFyIHNjYWxlID0gTWF0aC5wb3coMiwgbHZsKTtcbiAgICB2YXIgbGF5ZXJzID0gbGF5ZXJzQnlMdmxbbHZsXSA9IGxheWVyc0J5THZsW2x2bF0gfHwgW107XG4gICAgdmFyIGJiO1xuICAgIHZhciBsdmxDb21wbGV0ZSA9IHNlbGYubGV2ZWxJc0NvbXBsZXRlKGx2bCwgZWxlcyk7XG4gICAgdmFyIHRtcExheWVycztcblxuICAgIHZhciBjaGVja1RlbXBMZXZlbHMgPSBmdW5jdGlvbiBjaGVja1RlbXBMZXZlbHMoKSB7XG4gICAgICB2YXIgY2FuVXNlQXNUbXBMdmwgPSBmdW5jdGlvbiBjYW5Vc2VBc1RtcEx2bChsKSB7XG4gICAgICAgIHNlbGYudmFsaWRhdGVMYXllcnNFbGVzT3JkZXJpbmcobCwgZWxlcyk7XG5cbiAgICAgICAgaWYgKHNlbGYubGV2ZWxJc0NvbXBsZXRlKGwsIGVsZXMpKSB7XG4gICAgICAgICAgdG1wTGF5ZXJzID0gbGF5ZXJzQnlMdmxbbF07XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBjaGVja0x2bHMgPSBmdW5jdGlvbiBjaGVja0x2bHMoZGlyKSB7XG4gICAgICAgIGlmICh0bXBMYXllcnMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBsID0gbHZsICsgZGlyOyBtaW5MdmwgPD0gbCAmJiBsIDw9IG1heEx2bDsgbCArPSBkaXIpIHtcbiAgICAgICAgICBpZiAoY2FuVXNlQXNUbXBMdmwobCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY2hlY2tMdmxzKCsxKTtcbiAgICAgIGNoZWNrTHZscygtMSk7IC8vIHJlbW92ZSB0aGUgaW52YWxpZCBsYXllcnM7IHRoZXkgd2lsbCBiZSByZXBsYWNlZCBhcyBuZWVkZWQgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvblxuXG4gICAgICBmb3IgKHZhciBpID0gbGF5ZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBsYXllciA9IGxheWVyc1tpXTtcblxuICAgICAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgICAgIHJlbW92ZUZyb21BcnJheShsYXllcnMsIGxheWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWx2bENvbXBsZXRlKSB7XG4gICAgICAvLyBpZiB0aGUgY3VycmVudCBsZXZlbCBpcyBpbmNvbXBsZXRlLCB0aGVuIHVzZSB0aGUgY2xvc2VzdCwgYmVzdCBxdWFsaXR5IGxheWVyc2V0IHRlbXBvcmFyaWx5XG4gICAgICAvLyBhbmQgbGF0ZXIgcXVldWUgdGhlIGN1cnJlbnQgbGF5ZXJzZXQgc28gd2UgY2FuIGdldCB0aGUgcHJvcGVyIHF1YWxpdHkgbGV2ZWwgc29vblxuICAgICAgY2hlY2tUZW1wTGV2ZWxzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGxvZygnbGV2ZWwgY29tcGxldGUsIHVzaW5nIGV4aXN0aW5nIGxheWVyc1xcbi0tJyk7XG4gICAgICByZXR1cm4gbGF5ZXJzO1xuICAgIH1cblxuICAgIHZhciBnZXRCYiA9IGZ1bmN0aW9uIGdldEJiKCkge1xuICAgICAgaWYgKCFiYikge1xuICAgICAgICBiYiA9IG1ha2VCb3VuZGluZ0JveCgpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHVwZGF0ZUJvdW5kaW5nQm94KGJiLCBlbGVzW2ldLmJvdW5kaW5nQm94KCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBiYjtcbiAgICB9O1xuXG4gICAgdmFyIG1ha2VMYXllciA9IGZ1bmN0aW9uIG1ha2VMYXllcihvcHRzKSB7XG4gICAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICAgIHZhciBhZnRlciA9IG9wdHMuYWZ0ZXI7XG4gICAgICBnZXRCYigpO1xuICAgICAgdmFyIGFyZWEgPSBiYi53ICogc2NhbGUgKiAoYmIuaCAqIHNjYWxlKTtcblxuICAgICAgaWYgKGFyZWEgPiBtYXhMYXllckFyZWEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciBsYXllciA9IHNlbGYubWFrZUxheWVyKGJiLCBsdmwpO1xuXG4gICAgICBpZiAoYWZ0ZXIgIT0gbnVsbCkge1xuICAgICAgICB2YXIgaW5kZXggPSBsYXllcnMuaW5kZXhPZihhZnRlcikgKyAxO1xuICAgICAgICBsYXllcnMuc3BsaWNlKGluZGV4LCAwLCBsYXllcik7XG4gICAgICB9IGVsc2UgaWYgKG9wdHMuaW5zZXJ0ID09PSB1bmRlZmluZWQgfHwgb3B0cy5pbnNlcnQpIHtcbiAgICAgICAgLy8gbm8gYWZ0ZXIgc3BlY2lmaWVkID0+IGZpcnN0IGxheWVyIG1hZGUgc28gcHV0IGF0IHN0YXJ0XG4gICAgICAgIGxheWVycy51bnNoaWZ0KGxheWVyKTtcbiAgICAgIH0gLy8gaWYoIHRtcExheWVycyApe1xuICAgICAgLy9zZWxmLnF1ZXVlTGF5ZXIoIGxheWVyICk7XG4gICAgICAvLyB9XG5cblxuICAgICAgcmV0dXJuIGxheWVyO1xuICAgIH07XG5cbiAgICBpZiAoc2VsZi5za2lwcGluZyAmJiAhZmlyc3RHZXQpIHtcbiAgICAgIC8vIGxvZygnc2tpcCBsYXllcnMnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gbG9nKCdkbyBsYXllcnMnKTtcblxuXG4gICAgdmFyIGxheWVyID0gbnVsbDtcbiAgICB2YXIgbWF4RWxlc1BlckxheWVyID0gZWxlcy5sZW5ndGggLyBkZWZOdW1MYXllcnM7XG4gICAgdmFyIGFsbG93TGF6eVF1ZXVlaW5nID0gIWZpcnN0R2V0O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHZhciBycyA9IGVsZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICAgIHZhciBjYWNoZXMgPSBycy5pbWdMYXllckNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzIHx8IHt9OyAvLyBsb2coJ2xvb2sgYXQgZWxlJywgZWxlLmlkKCkpO1xuXG4gICAgICB2YXIgZXhpc3RpbmdMYXllciA9IGNhY2hlc1tsdmxdO1xuXG4gICAgICBpZiAoZXhpc3RpbmdMYXllcikge1xuICAgICAgICAvLyByZXVzZSBsYXllciBmb3IgbGF0ZXIgZWxlc1xuICAgICAgICAvLyBsb2coJ3JldXNlIGxheWVyIGZvcicsIGVsZS5pZCgpKTtcbiAgICAgICAgbGF5ZXIgPSBleGlzdGluZ0xheWVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsYXllciB8fCBsYXllci5lbGVzLmxlbmd0aCA+PSBtYXhFbGVzUGVyTGF5ZXIgfHwgIWJvdW5kaW5nQm94SW5Cb3VuZGluZ0JveChsYXllci5iYiwgZWxlLmJvdW5kaW5nQm94KCkpKSB7XG4gICAgICAgIC8vIGxvZygnbWFrZSBuZXcgbGF5ZXIgZm9yIGVsZSAlcycsIGVsZS5pZCgpKTtcbiAgICAgICAgbGF5ZXIgPSBtYWtlTGF5ZXIoe1xuICAgICAgICAgIGluc2VydDogdHJ1ZSxcbiAgICAgICAgICBhZnRlcjogbGF5ZXJcbiAgICAgICAgfSk7IC8vIGlmIG5vdyBsYXllciBjYW4gYmUgYnVpbHQgdGhlbiB3ZSBjYW4ndCB1c2UgbGF5ZXJzIGF0IHRoaXMgbGV2ZWxcblxuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gLy8gbG9nKCduZXcgbGF5ZXIgd2l0aCBpZCAlcycsIGxheWVyLmlkKTtcblxuICAgICAgfVxuXG4gICAgICBpZiAodG1wTGF5ZXJzIHx8IGFsbG93TGF6eVF1ZXVlaW5nKSB7XG4gICAgICAgIC8vIGxvZygncXVldWUgZWxlICVzIGluIGxheWVyICVzJywgZWxlLmlkKCksIGxheWVyLmlkKTtcbiAgICAgICAgc2VsZi5xdWV1ZUxheWVyKGxheWVyLCBlbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbG9nKCdkcmF3IGVsZSAlcyBpbiBsYXllciAlcycsIGVsZS5pZCgpLCBsYXllci5pZCk7XG4gICAgICAgIHNlbGYuZHJhd0VsZUluTGF5ZXIobGF5ZXIsIGVsZSwgbHZsLCBweFJhdGlvKTtcbiAgICAgIH1cblxuICAgICAgbGF5ZXIuZWxlcy5wdXNoKGVsZSk7XG4gICAgICBjYWNoZXNbbHZsXSA9IGxheWVyO1xuICAgIH0gLy8gbG9nKCctLScpO1xuXG5cbiAgICBpZiAodG1wTGF5ZXJzKSB7XG4gICAgICAvLyB0aGVuIHdlIG9ubHkgcXVldWVkIHRoZSBjdXJyZW50IGxheWVyc2V0IGFuZCBjYW4ndCBkcmF3IGl0IHlldFxuICAgICAgcmV0dXJuIHRtcExheWVycztcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dMYXp5UXVldWVpbmcpIHtcbiAgICAgIC8vIGxvZygnbGF6eSBxdWV1ZSBsZXZlbCcsIGx2bCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9OyAvLyBhIGxheWVyIG1heSB3YW50IHRvIHVzZSBhbiBlbGUgY2FjaGUgb2YgYSBoaWdoZXIgbGV2ZWwgdG8gYXZvaWQgYmx1cnJpbmVzc1xuICAvLyBzbyB0aGUgbGF5ZXIgbGV2ZWwgbWlnaHQgbm90IGVxdWFsIHRoZSBlbGUgbGV2ZWxcblxuXG4gIExUQ3AuZ2V0RWxlTGV2ZWxGb3JMYXllckxldmVsID0gZnVuY3Rpb24gKGx2bCwgcHhSYXRpbykge1xuICAgIHJldHVybiBsdmw7XG4gIH07XG5cbiAgTFRDcC5kcmF3RWxlSW5MYXllciA9IGZ1bmN0aW9uIChsYXllciwgZWxlLCBsdmwsIHB4UmF0aW8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyO1xuICAgIHZhciBjb250ZXh0ID0gbGF5ZXIuY29udGV4dDtcbiAgICB2YXIgYmIgPSBlbGUuYm91bmRpbmdCb3goKTtcblxuICAgIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDAgfHwgIWVsZS52aXNpYmxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsdmwgPSBzZWxmLmdldEVsZUxldmVsRm9yTGF5ZXJMZXZlbChsdmwsIHB4UmF0aW8pO1xuXG4gICAge1xuICAgICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHtcbiAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnQoY29udGV4dCwgZWxlLCBudWxsLCBudWxsLCBsdmwsIHVzZUhpZ2hRdWFsaXR5RWxlVHhyUmVxcyk7XG4gICAgfVxuXG4gICAge1xuICAgICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgdHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIExUQ3AubGV2ZWxJc0NvbXBsZXRlID0gZnVuY3Rpb24gKGx2bCwgZWxlcykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgbGF5ZXJzID0gc2VsZi5sYXllcnNCeUxldmVsW2x2bF07XG5cbiAgICBpZiAoIWxheWVycyB8fCBsYXllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIG51bUVsZXNJbkxheWVycyA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxheWVyID0gbGF5ZXJzW2ldOyAvLyBpZiB0aGVyZSBhcmUgYW55IGVsZXMgbmVlZGVkIHRvIGJlIGRyYXduIHlldCwgdGhlIGxldmVsIGlzIG5vdCBjb21wbGV0ZVxuXG4gICAgICBpZiAobGF5ZXIucmVxcyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyBpZiB0aGUgbGF5ZXIgaXMgaW52YWxpZCwgdGhlIGxldmVsIGlzIG5vdCBjb21wbGV0ZVxuXG5cbiAgICAgIGlmIChsYXllci5pbnZhbGlkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgbnVtRWxlc0luTGF5ZXJzICs9IGxheWVyLmVsZXMubGVuZ3RoO1xuICAgIH0gLy8gd2Ugc2hvdWxkIGhhdmUgZXhhY3RseSB0aGUgbnVtYmVyIG9mIGVsZXMgcGFzc2VkIGluIHRvIGJlIGNvbXBsZXRlXG5cblxuICAgIGlmIChudW1FbGVzSW5MYXllcnMgIT09IGVsZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgTFRDcC52YWxpZGF0ZUxheWVyc0VsZXNPcmRlcmluZyA9IGZ1bmN0aW9uIChsdmwsIGVsZXMpIHtcbiAgICB2YXIgbGF5ZXJzID0gdGhpcy5sYXllcnNCeUxldmVsW2x2bF07XG5cbiAgICBpZiAoIWxheWVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gaWYgaW4gYSBsYXllciB0aGUgZWxlcyBhcmUgbm90IGluIHRoZSBzYW1lIG9yZGVyLCB0aGVuIHRoZSBsYXllciBpcyBpbnZhbGlkXG4gICAgLy8gKGkuZS4gdGhlcmUgaXMgYW4gZWxlIGluIGJldHdlZW4gdGhlIGVsZXMgaW4gdGhlIGxheWVyKVxuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxheWVyID0gbGF5ZXJzW2ldO1xuICAgICAgdmFyIG9mZnNldCA9IC0xOyAvLyBmaW5kIHRoZSBvZmZzZXRcblxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChsYXllci5lbGVzWzBdID09PSBlbGVzW2pdKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gajtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAvLyB0aGVuIHRoZSBsYXllciBoYXMgbm9uZXhpc3RlbnQgZWxlbWVudHMgYW5kIGlzIGludmFsaWRcbiAgICAgICAgdGhpcy5pbnZhbGlkYXRlTGF5ZXIobGF5ZXIpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gdGhlIGVsZXMgaW4gdGhlIGxheWVyIG11c3QgYmUgaW4gdGhlIHNhbWUgY29udGludW91cyBvcmRlciwgZWxzZSB0aGUgbGF5ZXIgaXMgaW52YWxpZFxuXG5cbiAgICAgIHZhciBvID0gb2Zmc2V0O1xuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxheWVyLmVsZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGxheWVyLmVsZXNbal0gIT09IGVsZXNbbyArIGpdKSB7XG4gICAgICAgICAgLy8gbG9nKCdpbnZhbGlkYXRlIGJhc2VkIG9uIG9yZGVyaW5nJywgbGF5ZXIuaWQpO1xuICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZUxheWVyKGxheWVyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBMVENwLnVwZGF0ZUVsZW1lbnRzSW5MYXllcnMgPSBmdW5jdGlvbiAoZWxlcywgdXBkYXRlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBpc0VsZXMgPSBlbGVtZW50KGVsZXNbMF0pOyAvLyBjb2xsZWN0IHVkcGF0ZWQgZWxlbWVudHMgKGNhc2NhZGVkIGZyb20gdGhlIGxheWVycykgYW5kIHVwZGF0ZSBlYWNoXG4gICAgLy8gbGF5ZXIgaXRzZWxmIGFsb25nIHRoZSB3YXlcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJlcSA9IGlzRWxlcyA/IG51bGwgOiBlbGVzW2ldO1xuICAgICAgdmFyIGVsZSA9IGlzRWxlcyA/IGVsZXNbaV0gOiBlbGVzW2ldLmVsZTtcbiAgICAgIHZhciBycyA9IGVsZS5fcHJpdmF0ZS5yc2NyYXRjaDtcbiAgICAgIHZhciBjYWNoZXMgPSBycy5pbWdMYXllckNhY2hlcyA9IHJzLmltZ0xheWVyQ2FjaGVzIHx8IHt9O1xuXG4gICAgICBmb3IgKHZhciBsID0gbWluTHZsOyBsIDw9IG1heEx2bDsgbCsrKSB7XG4gICAgICAgIHZhciBsYXllciA9IGNhY2hlc1tsXTtcblxuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH0gLy8gaWYgdXBkYXRlIGlzIGEgcmVxdWVzdCBmcm9tIHRoZSBlbGUgY2FjaGUsIHRoZW4gaXQgYWZmZWN0cyBvbmx5XG4gICAgICAgIC8vIHRoZSBtYXRjaGluZyBsZXZlbFxuXG5cbiAgICAgICAgaWYgKHJlcSAmJiBzZWxmLmdldEVsZUxldmVsRm9yTGF5ZXJMZXZlbChsYXllci5sZXZlbCkgIT09IHJlcS5sZXZlbCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdXBkYXRlKGxheWVyLCBlbGUsIHJlcSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIExUQ3AuaGF2ZUxheWVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGhhdmVMYXllcnMgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGwgPSBtaW5Mdmw7IGwgPD0gbWF4THZsOyBsKyspIHtcbiAgICAgIHZhciBsYXllcnMgPSBzZWxmLmxheWVyc0J5TGV2ZWxbbF07XG5cbiAgICAgIGlmIChsYXllcnMgJiYgbGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaGF2ZUxheWVycyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXZlTGF5ZXJzO1xuICB9O1xuXG4gIExUQ3AuaW52YWxpZGF0ZUVsZW1lbnRzID0gZnVuY3Rpb24gKGVsZXMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoZWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLmxhc3RJbnZhbGlkYXRpb25UaW1lID0gcGVyZm9ybWFuY2VOb3coKTsgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lIGZyb20gZWxlcycpO1xuXG4gICAgaWYgKGVsZXMubGVuZ3RoID09PSAwIHx8ICFzZWxmLmhhdmVMYXllcnMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNlbGYudXBkYXRlRWxlbWVudHNJbkxheWVycyhlbGVzLCBmdW5jdGlvbiBpbnZhbEFzc29jTGF5ZXJzKGxheWVyLCBlbGUsIHJlcSkge1xuICAgICAgc2VsZi5pbnZhbGlkYXRlTGF5ZXIobGF5ZXIpO1xuICAgIH0pO1xuICB9O1xuXG4gIExUQ3AuaW52YWxpZGF0ZUxheWVyID0gZnVuY3Rpb24gKGxheWVyKSB7XG4gICAgLy8gbG9nKCd1cGRhdGUgaW52YWxpZGF0ZSBsYXllciB0aW1lJyk7XG4gICAgdGhpcy5sYXN0SW52YWxpZGF0aW9uVGltZSA9IHBlcmZvcm1hbmNlTm93KCk7XG5cbiAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gc2F2ZSBjeWNsZXNcblxuXG4gICAgdmFyIGx2bCA9IGxheWVyLmxldmVsO1xuICAgIHZhciBlbGVzID0gbGF5ZXIuZWxlcztcbiAgICB2YXIgbGF5ZXJzID0gdGhpcy5sYXllcnNCeUxldmVsW2x2bF07IC8vIGxvZygnaW52YWxpZGF0ZSBsYXllcicsIGxheWVyLmlkICk7XG5cbiAgICByZW1vdmVGcm9tQXJyYXkobGF5ZXJzLCBsYXllcik7IC8vIGxheWVyLmVsZXMgPSBbXTtcblxuICAgIGxheWVyLmVsZXNRdWV1ZSA9IFtdO1xuICAgIGxheWVyLmludmFsaWQgPSB0cnVlO1xuXG4gICAgaWYgKGxheWVyLnJlcGxhY2VtZW50KSB7XG4gICAgICBsYXllci5yZXBsYWNlbWVudC5pbnZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjYWNoZXMgPSBlbGVzW2ldLl9wcml2YXRlLnJzY3JhdGNoLmltZ0xheWVyQ2FjaGVzO1xuXG4gICAgICBpZiAoY2FjaGVzKSB7XG4gICAgICAgIGNhY2hlc1tsdmxdID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgTFRDcC5yZWZpbmVFbGVtZW50VGV4dHVyZXMgPSBmdW5jdGlvbiAoZWxlcykge1xuICAgIHZhciBzZWxmID0gdGhpczsgLy8gbG9nKCdyZWZpbmUnLCBlbGVzLmxlbmd0aCk7XG5cbiAgICBzZWxmLnVwZGF0ZUVsZW1lbnRzSW5MYXllcnMoZWxlcywgZnVuY3Rpb24gcmVmaW5lRWFjaEVsZShsYXllciwgZWxlLCByZXEpIHtcbiAgICAgIHZhciByTHlyID0gbGF5ZXIucmVwbGFjZW1lbnQ7XG5cbiAgICAgIGlmICghckx5cikge1xuICAgICAgICByTHlyID0gbGF5ZXIucmVwbGFjZW1lbnQgPSBzZWxmLm1ha2VMYXllcihsYXllci5iYiwgbGF5ZXIubGV2ZWwpO1xuICAgICAgICByTHlyLnJlcGxhY2VzID0gbGF5ZXI7XG4gICAgICAgIHJMeXIuZWxlcyA9IGxheWVyLmVsZXM7IC8vIGxvZygnbWFrZSByZXBsYWNlbWVudCBsYXllciAlcyBmb3IgJXMgd2l0aCBsZXZlbCAlcycsIHJMeXIuaWQsIGxheWVyLmlkLCByTHlyLmxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyTHlyLnJlcXMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByTHlyLmVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBzZWxmLnF1ZXVlTGF5ZXIockx5ciwgckx5ci5lbGVzW2ldKTtcbiAgICAgICAgfSAvLyBsb2coJ3F1ZXVlIHJlcGxhY2VtZW50IGxheWVyIHJlZmluZW1lbnQnLCByTHlyLmlkKTtcblxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIExUQ3AuZW5xdWV1ZUVsZW1lbnRSZWZpbmVtZW50ID0gZnVuY3Rpb24gKGVsZSkge1xuXG4gICAgdGhpcy5lbGVUeHJEZXFzLm1lcmdlKGVsZSk7XG4gICAgdGhpcy5zY2hlZHVsZUVsZW1lbnRSZWZpbmVtZW50KCk7XG4gIH07XG5cbiAgTFRDcC5xdWV1ZUxheWVyID0gZnVuY3Rpb24gKGxheWVyLCBlbGUpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHEgPSBzZWxmLmxheWVyc1F1ZXVlO1xuICAgIHZhciBlbGVzUSA9IGxheWVyLmVsZXNRdWV1ZTtcbiAgICB2YXIgaGFzSWQgPSBlbGVzUS5oYXNJZCA9IGVsZXNRLmhhc0lkIHx8IHt9OyAvLyBpZiBhIGxheWVyIGlzIGdvaW5nIHRvIGJlIHJlcGxhY2VkLCBxdWV1aW5nIGlzIGEgd2FzdGUgb2YgdGltZVxuXG4gICAgaWYgKGxheWVyLnJlcGxhY2VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVsZSkge1xuICAgICAgaWYgKGhhc0lkW2VsZS5pZCgpXSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVsZXNRLnB1c2goZWxlKTtcbiAgICAgIGhhc0lkW2VsZS5pZCgpXSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGxheWVyLnJlcXMpIHtcbiAgICAgIGxheWVyLnJlcXMrKztcbiAgICAgIHEudXBkYXRlSXRlbShsYXllcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyLnJlcXMgPSAxO1xuICAgICAgcS5wdXNoKGxheWVyKTtcbiAgICB9XG4gIH07XG5cbiAgTFRDcC5kZXF1ZXVlID0gZnVuY3Rpb24gKHB4UmF0aW8pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHEgPSBzZWxmLmxheWVyc1F1ZXVlO1xuICAgIHZhciBkZXFkID0gW107XG4gICAgdmFyIGVsZURlcXMgPSAwO1xuXG4gICAgd2hpbGUgKGVsZURlcXMgPCBtYXhEZXFTaXplKSB7XG4gICAgICBpZiAocS5zaXplKCkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHZhciBsYXllciA9IHEucGVlaygpOyAvLyBpZiBhIGxheWVyIGhhcyBiZWVuIG9yIHdpbGwgYmUgcmVwbGFjZWQsIHRoZW4gZG9uJ3Qgd2FzdGUgdGltZSB3aXRoIGl0XG5cbiAgICAgIGlmIChsYXllci5yZXBsYWNlbWVudCkge1xuICAgICAgICAvLyBsb2coJ2xheWVyICVzIGluIHF1ZXVlIHNraXBwZWQgYi9jIGl0IGFscmVhZHkgaGFzIGEgcmVwbGFjZW1lbnQnLCBsYXllci5pZCk7XG4gICAgICAgIHEucG9wKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSAvLyBpZiB0aGlzIGlzIGEgcmVwbGFjZW1lbnQgbGF5ZXIgdGhhdCBoYXMgYmVlbiBzdXBlcmNlZGVkLCB0aGVuIGZvcmdldCBpdFxuXG5cbiAgICAgIGlmIChsYXllci5yZXBsYWNlcyAmJiBsYXllciAhPT0gbGF5ZXIucmVwbGFjZXMucmVwbGFjZW1lbnQpIHtcbiAgICAgICAgLy8gbG9nKCdsYXllciBpcyBubyBsb25nZXIgdGhlIG1vc3QgdXB0b2RhdGUgcmVwbGFjZW1lbnQ7IGRlcXVldWVkJywgbGF5ZXIuaWQpXG4gICAgICAgIHEucG9wKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobGF5ZXIuaW52YWxpZCkge1xuICAgICAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyICVzIGlzIGludmFsaWQ7IGRlcXVldWVkJywgbGF5ZXIuaWQpO1xuICAgICAgICBxLnBvcCgpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGVsZSA9IGxheWVyLmVsZXNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICBpZiAoZWxlKSB7XG4gICAgICAgIC8vIGxvZygnZGVxdWV1ZSBsYXllciAlcycsIGxheWVyLmlkKTtcbiAgICAgICAgc2VsZi5kcmF3RWxlSW5MYXllcihsYXllciwgZWxlLCBsYXllci5sZXZlbCwgcHhSYXRpbyk7XG4gICAgICAgIGVsZURlcXMrKztcbiAgICAgIH1cblxuICAgICAgaWYgKGRlcWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIHdlIG5lZWQgb25seSBvbmUgZW50cnkgaW4gZGVxZCB0byBxdWV1ZSByZWRyYXdpbmcgZXRjXG4gICAgICAgIGRlcWQucHVzaCh0cnVlKTtcbiAgICAgIH0gLy8gaWYgdGhlIGxheWVyIGhhcyBhbGwgaXRzIGVsZXMgZG9uZSwgdGhlbiByZW1vdmUgZnJvbSB0aGUgcXVldWVcblxuXG4gICAgICBpZiAobGF5ZXIuZWxlc1F1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBxLnBvcCgpO1xuICAgICAgICBsYXllci5yZXFzID0gMDsgLy8gbG9nKCdkZXF1ZXVlIG9mIGxheWVyICVzIGNvbXBsZXRlJywgbGF5ZXIuaWQpO1xuICAgICAgICAvLyB3aGVuIGEgcmVwbGFjZW1lbnQgbGF5ZXIgaXMgZGVxdWV1ZWQsIGl0IHJlcGxhY2VzIHRoZSBvbGQgbGF5ZXIgaW4gdGhlIGxldmVsXG5cbiAgICAgICAgaWYgKGxheWVyLnJlcGxhY2VzKSB7XG4gICAgICAgICAgc2VsZi5hcHBseUxheWVyUmVwbGFjZW1lbnQobGF5ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5yZXF1ZXN0UmVkcmF3KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlcWQ7XG4gIH07XG5cbiAgTFRDcC5hcHBseUxheWVyUmVwbGFjZW1lbnQgPSBmdW5jdGlvbiAobGF5ZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGxheWVyc0luTGV2ZWwgPSBzZWxmLmxheWVyc0J5TGV2ZWxbbGF5ZXIubGV2ZWxdO1xuICAgIHZhciByZXBsYWNlZCA9IGxheWVyLnJlcGxhY2VzO1xuICAgIHZhciBpbmRleCA9IGxheWVyc0luTGV2ZWwuaW5kZXhPZihyZXBsYWNlZCk7IC8vIGlmIHRoZSByZXBsYWNlZCBsYXllciBpcyBub3QgaW4gdGhlIGFjdGl2ZSBsaXN0IGZvciB0aGUgbGV2ZWwsIHRoZW4gcmVwbGFjaW5nXG4gICAgLy8gcmVmcyB3b3VsZCBiZSBhIG1pc3Rha2UgKGkuZS4gb3ZlcndyaXRpbmcgdGhlIHRydWUgYWN0aXZlIGxheWVyKVxuXG4gICAgaWYgKGluZGV4IDwgMCB8fCByZXBsYWNlZC5pbnZhbGlkKSB7XG4gICAgICAvLyBsb2coJ3JlcGxhY2VtZW50IGxheWVyIHdvdWxkIGhhdmUgbm8gZWZmZWN0JywgbGF5ZXIuaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxheWVyc0luTGV2ZWxbaW5kZXhdID0gbGF5ZXI7IC8vIHJlcGxhY2UgbGV2ZWwgcmVmXG4gICAgLy8gcmVwbGFjZSByZWZzIGluIGVsZXNcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5ZXIuZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIF9wID0gbGF5ZXIuZWxlc1tpXS5fcHJpdmF0ZTtcbiAgICAgIHZhciBjYWNoZSA9IF9wLmltZ0xheWVyQ2FjaGVzID0gX3AuaW1nTGF5ZXJDYWNoZXMgfHwge307XG5cbiAgICAgIGlmIChjYWNoZSkge1xuICAgICAgICBjYWNoZVtsYXllci5sZXZlbF0gPSBsYXllcjtcbiAgICAgIH1cbiAgICB9IC8vIGxvZygnYXBwbHkgcmVwbGFjZW1lbnQgbGF5ZXIgJXMgb3ZlciAlcycsIGxheWVyLmlkLCByZXBsYWNlZC5pZCk7XG5cblxuICAgIHNlbGYucmVxdWVzdFJlZHJhdygpO1xuICB9O1xuXG4gIExUQ3AucmVxdWVzdFJlZHJhdyA9IGRlYm91bmNlXzEoZnVuY3Rpb24gKCkge1xuICAgIHZhciByID0gdGhpcy5yZW5kZXJlcjtcbiAgICByLnJlZHJhd0hpbnQoJ2VsZXMnLCB0cnVlKTtcbiAgICByLnJlZHJhd0hpbnQoJ2RyYWcnLCB0cnVlKTtcbiAgICByLnJlZHJhdygpO1xuICB9LCAxMDApO1xuICBMVENwLnNldHVwRGVxdWV1ZWluZyA9IGRlZnMuc2V0dXBEZXF1ZXVlaW5nKHtcbiAgICBkZXFSZWRyYXdUaHJlc2hvbGQ6IGRlcVJlZHJhd1RocmVzaG9sZCxcbiAgICBkZXFDb3N0OiBkZXFDb3N0LFxuICAgIGRlcUF2Z0Nvc3Q6IGRlcUF2Z0Nvc3QsXG4gICAgZGVxTm9EcmF3Q29zdDogZGVxTm9EcmF3Q29zdCxcbiAgICBkZXFGYXN0Q29zdDogZGVxRmFzdENvc3QsXG4gICAgZGVxOiBmdW5jdGlvbiBkZXEoc2VsZiwgcHhSYXRpbykge1xuICAgICAgcmV0dXJuIHNlbGYuZGVxdWV1ZShweFJhdGlvKTtcbiAgICB9LFxuICAgIG9uRGVxZDogbm9vcCQxLFxuICAgIHNob3VsZFJlZHJhdzogdHJ1ZWlmeSxcbiAgICBwcmlvcml0eTogZnVuY3Rpb24gcHJpb3JpdHkoc2VsZikge1xuICAgICAgcmV0dXJuIHNlbGYucmVuZGVyZXIuYmVmb3JlUmVuZGVyUHJpb3JpdGllcy5seXJUeHJEZXE7XG4gICAgfVxuICB9KTtcblxuICB2YXIgQ1JwJGEgPSB7fTtcbiAgdmFyIGltcGw7XG5cbiAgZnVuY3Rpb24gcG9seWdvbihjb250ZXh0LCBwb2ludHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHB0ID0gcG9pbnRzW2ldO1xuICAgICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJpYW5nbGVCYWNrY3VydmUoY29udGV4dCwgcG9pbnRzLCBjb250cm9sUG9pbnQpIHtcbiAgICB2YXIgZmlyc3RQdDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcHQgPSBwb2ludHNbaV07XG5cbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIGZpcnN0UHQgPSBwdDtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gICAgfVxuXG4gICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKGNvbnRyb2xQb2ludC54LCBjb250cm9sUG9pbnQueSwgZmlyc3RQdC54LCBmaXJzdFB0LnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpYW5nbGVUZWUoY29udGV4dCwgdHJpYW5nbGVQb2ludHMsIHRlZVBvaW50cykge1xuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJpUHRzID0gdHJpYW5nbGVQb2ludHM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyaVB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHB0ID0gdHJpUHRzW2ldO1xuICAgICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gICAgfVxuXG4gICAgdmFyIHRlZVB0cyA9IHRlZVBvaW50cztcbiAgICB2YXIgZmlyc3RUZWVQdCA9IHRlZVBvaW50c1swXTtcbiAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFRlZVB0LngsIGZpcnN0VGVlUHQueSk7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRlZVB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHB0ID0gdGVlUHRzW2ldO1xuICAgICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQuY2xvc2VQYXRoKSB7XG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNpcmNsZVRyaWFuZ2xlKGNvbnRleHQsIHRyaWFuZ2xlUG9pbnRzLCByeCwgcnksIHIpIHtcbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfVxuXG4gICAgY29udGV4dC5hcmMocngsIHJ5LCByLCAwLCBNYXRoLlBJICogMiwgZmFsc2UpO1xuICAgIHZhciB0cmlQdHMgPSB0cmlhbmdsZVBvaW50cztcbiAgICB2YXIgZmlyc3RUclB0ID0gdHJpUHRzWzBdO1xuICAgIGNvbnRleHQubW92ZVRvKGZpcnN0VHJQdC54LCBmaXJzdFRyUHQueSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyaVB0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHB0ID0gdHJpUHRzW2ldO1xuICAgICAgY29udGV4dC5saW5lVG8ocHQueCwgcHQueSk7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQuY2xvc2VQYXRoKSB7XG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNpcmNsZShjb250ZXh0LCByeCwgcnksIHIpIHtcbiAgICBjb250ZXh0LmFyYyhyeCwgcnksIHIsIDAsIE1hdGguUEkgKiAyLCBmYWxzZSk7XG4gIH1cblxuICBDUnAkYS5hcnJvd1NoYXBlSW1wbCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIChpbXBsIHx8IChpbXBsID0ge1xuICAgICAgJ3BvbHlnb24nOiBwb2x5Z29uLFxuICAgICAgJ3RyaWFuZ2xlLWJhY2tjdXJ2ZSc6IHRyaWFuZ2xlQmFja2N1cnZlLFxuICAgICAgJ3RyaWFuZ2xlLXRlZSc6IHRyaWFuZ2xlVGVlLFxuICAgICAgJ2NpcmNsZS10cmlhbmdsZSc6IGNpcmNsZVRyaWFuZ2xlLFxuICAgICAgJ3RyaWFuZ2xlLWNyb3NzJzogdHJpYW5nbGVUZWUsXG4gICAgICAnY2lyY2xlJzogY2lyY2xlXG4gICAgfSkpW25hbWVdO1xuICB9O1xuXG4gIHZhciBDUnAkOSA9IHt9O1xuXG4gIENScCQ5LmRyYXdFbGVtZW50ID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpIHtcbiAgICB2YXIgciA9IHRoaXM7XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICByLmRyYXdOb2RlKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByLmRyYXdFZGdlKGNvbnRleHQsIGVsZSwgc2hpZnRUb09yaWdpbldpdGhCYiwgc2hvd0xhYmVsLCBzaG93T3ZlcmxheSwgc2hvd09wYWNpdHkpO1xuICAgIH1cbiAgfTtcblxuICBDUnAkOS5kcmF3RWxlbWVudE92ZXJsYXkgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuXG4gICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgci5kcmF3Tm9kZU92ZXJsYXkoY29udGV4dCwgZWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgci5kcmF3RWRnZU92ZXJsYXkoY29udGV4dCwgZWxlKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDkuZHJhd0VsZW1lbnRVbmRlcmxheSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUpIHtcbiAgICB2YXIgciA9IHRoaXM7XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICByLmRyYXdOb2RlVW5kZXJsYXkoY29udGV4dCwgZWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVsZSk7XG4gICAgfVxuICB9O1xuXG4gIENScCQ5LmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbiA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGVsZVR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0Um90YXRpb24sIGdldE9wYWNpdHkpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGJiID0gZWxlVHhyQ2FjaGUuZ2V0Qm91bmRpbmdCb3goZWxlKTtcblxuICAgIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGlnbm9yZSB6ZXJvIHNpemUgY2FzZVxuXG5cbiAgICB2YXIgZWxlQ2FjaGUgPSBlbGVUeHJDYWNoZS5nZXRFbGVtZW50KGVsZSwgYmIsIHB4UmF0aW8sIGx2bCwgcmVhc29uKTtcblxuICAgIGlmIChlbGVDYWNoZSAhPSBudWxsKSB7XG4gICAgICB2YXIgb3BhY2l0eSA9IGdldE9wYWNpdHkociwgZWxlKTtcblxuICAgICAgaWYgKG9wYWNpdHkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGhldGEgPSBnZXRSb3RhdGlvbihyLCBlbGUpO1xuICAgICAgdmFyIHgxID0gYmIueDEsXG4gICAgICAgICAgeTEgPSBiYi55MSxcbiAgICAgICAgICB3ID0gYmIudyxcbiAgICAgICAgICBoID0gYmIuaDtcbiAgICAgIHZhciB4LCB5LCBzeCwgc3ksIHNtb290aDtcblxuICAgICAgaWYgKHRoZXRhICE9PSAwKSB7XG4gICAgICAgIHZhciByb3RQdCA9IGVsZVR4ckNhY2hlLmdldFJvdGF0aW9uUG9pbnQoZWxlKTtcbiAgICAgICAgc3ggPSByb3RQdC54O1xuICAgICAgICBzeSA9IHJvdFB0Lnk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHN4LCBzeSk7XG4gICAgICAgIGNvbnRleHQucm90YXRlKHRoZXRhKTtcbiAgICAgICAgc21vb3RoID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKCFzbW9vdGgpIHtcbiAgICAgICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvZmYgPSBlbGVUeHJDYWNoZS5nZXRSb3RhdGlvbk9mZnNldChlbGUpO1xuICAgICAgICB4ID0gb2ZmLng7XG4gICAgICAgIHkgPSBvZmYueTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHggPSB4MTtcbiAgICAgICAgeSA9IHkxO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2xkR2xvYmFsQWxwaGE7XG5cbiAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgIG9sZEdsb2JhbEFscGhhID0gY29udGV4dC5nbG9iYWxBbHBoYTtcbiAgICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IG9sZEdsb2JhbEFscGhhICogb3BhY2l0eTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoZWxlQ2FjaGUudGV4dHVyZS5jYW52YXMsIGVsZUNhY2hlLngsIDAsIGVsZUNhY2hlLndpZHRoLCBlbGVDYWNoZS5oZWlnaHQsIHgsIHksIHcsIGgpO1xuXG4gICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gb2xkR2xvYmFsQWxwaGE7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGV0YSAhPT0gMCkge1xuICAgICAgICBjb250ZXh0LnJvdGF0ZSgtdGhldGEpO1xuICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc3gsIC1zeSk7XG5cbiAgICAgICAgaWYgKCFzbW9vdGgpIHtcbiAgICAgICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWxlVHhyQ2FjaGUuZHJhd0VsZW1lbnQoY29udGV4dCwgZWxlKTsgLy8gZGlyZWN0IGRyYXcgZmFsbGJhY2tcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldFplcm9Sb3RhdGlvbiA9IGZ1bmN0aW9uIGdldFplcm9Sb3RhdGlvbigpIHtcbiAgICByZXR1cm4gMDtcbiAgfTtcblxuICB2YXIgZ2V0TGFiZWxSb3RhdGlvbiA9IGZ1bmN0aW9uIGdldExhYmVsUm90YXRpb24ociwgZWxlKSB7XG4gICAgcmV0dXJuIHIuZ2V0VGV4dEFuZ2xlKGVsZSwgbnVsbCk7XG4gIH07XG5cbiAgdmFyIGdldFNvdXJjZUxhYmVsUm90YXRpb24gPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uKHIsIGVsZSkge1xuICAgIHJldHVybiByLmdldFRleHRBbmdsZShlbGUsICdzb3VyY2UnKTtcbiAgfTtcblxuICB2YXIgZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvbiA9IGZ1bmN0aW9uIGdldFRhcmdldExhYmVsUm90YXRpb24ociwgZWxlKSB7XG4gICAgcmV0dXJuIHIuZ2V0VGV4dEFuZ2xlKGVsZSwgJ3RhcmdldCcpO1xuICB9O1xuXG4gIHZhciBnZXRPcGFjaXR5ID0gZnVuY3Rpb24gZ2V0T3BhY2l0eShyLCBlbGUpIHtcbiAgICByZXR1cm4gZWxlLmVmZmVjdGl2ZU9wYWNpdHkoKTtcbiAgfTtcblxuICB2YXIgZ2V0VGV4dE9wYWNpdHkgPSBmdW5jdGlvbiBnZXRUZXh0T3BhY2l0eShlLCBlbGUpIHtcbiAgICByZXR1cm4gZWxlLnBzdHlsZSgndGV4dC1vcGFjaXR5JykucGZWYWx1ZSAqIGVsZS5lZmZlY3RpdmVPcGFjaXR5KCk7XG4gIH07XG5cbiAgQ1JwJDkuZHJhd0NhY2hlZEVsZW1lbnQgPSBmdW5jdGlvbiAoY29udGV4dCwgZWxlLCBweFJhdGlvLCBleHRlbnQsIGx2bCwgcmVxdWVzdEhpZ2hRdWFsaXR5KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBfciRkYXRhID0gci5kYXRhLFxuICAgICAgICBlbGVUeHJDYWNoZSA9IF9yJGRhdGEuZWxlVHhyQ2FjaGUsXG4gICAgICAgIGxibFR4ckNhY2hlID0gX3IkZGF0YS5sYmxUeHJDYWNoZSxcbiAgICAgICAgc2xiVHhyQ2FjaGUgPSBfciRkYXRhLnNsYlR4ckNhY2hlLFxuICAgICAgICB0bGJUeHJDYWNoZSA9IF9yJGRhdGEudGxiVHhyQ2FjaGU7XG4gICAgdmFyIGJiID0gZWxlLmJvdW5kaW5nQm94KCk7XG4gICAgdmFyIHJlYXNvbiA9IHJlcXVlc3RIaWdoUXVhbGl0eSA9PT0gdHJ1ZSA/IGVsZVR4ckNhY2hlLnJlYXNvbnMuaGlnaFF1YWxpdHkgOiBudWxsO1xuXG4gICAgaWYgKGJiLncgPT09IDAgfHwgYmIuaCA9PT0gMCB8fCAhZWxlLnZpc2libGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZXh0ZW50IHx8IGJvdW5kaW5nQm94ZXNJbnRlcnNlY3QoYmIsIGV4dGVudCkpIHtcbiAgICAgIHZhciBpc0VkZ2UgPSBlbGUuaXNFZGdlKCk7XG5cbiAgICAgIHZhciBiYWRMaW5lID0gZWxlLmVsZW1lbnQoKS5fcHJpdmF0ZS5yc2NyYXRjaC5iYWRMaW5lO1xuXG4gICAgICByLmRyYXdFbGVtZW50VW5kZXJsYXkoY29udGV4dCwgZWxlKTtcbiAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRQb3J0aW9uKGNvbnRleHQsIGVsZSwgZWxlVHhyQ2FjaGUsIHB4UmF0aW8sIGx2bCwgcmVhc29uLCBnZXRaZXJvUm90YXRpb24sIGdldE9wYWNpdHkpO1xuXG4gICAgICBpZiAoIWlzRWRnZSB8fCAhYmFkTGluZSkge1xuICAgICAgICByLmRyYXdDYWNoZWRFbGVtZW50UG9ydGlvbihjb250ZXh0LCBlbGUsIGxibFR4ckNhY2hlLCBweFJhdGlvLCBsdmwsIHJlYXNvbiwgZ2V0TGFiZWxSb3RhdGlvbiwgZ2V0VGV4dE9wYWNpdHkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNFZGdlICYmICFiYWRMaW5lKSB7XG4gICAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRQb3J0aW9uKGNvbnRleHQsIGVsZSwgc2xiVHhyQ2FjaGUsIHB4UmF0aW8sIGx2bCwgcmVhc29uLCBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uLCBnZXRUZXh0T3BhY2l0eSk7XG4gICAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRQb3J0aW9uKGNvbnRleHQsIGVsZSwgdGxiVHhyQ2FjaGUsIHB4UmF0aW8sIGx2bCwgcmVhc29uLCBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uLCBnZXRUZXh0T3BhY2l0eSk7XG4gICAgICB9XG5cbiAgICAgIHIuZHJhd0VsZW1lbnRPdmVybGF5KGNvbnRleHQsIGVsZSk7XG4gICAgfVxuICB9O1xuXG4gIENScCQ5LmRyYXdFbGVtZW50cyA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGVzKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZWxlID0gZWxlc1tpXTtcbiAgICAgIHIuZHJhd0VsZW1lbnQoY29udGV4dCwgZWxlKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDkuZHJhd0NhY2hlZEVsZW1lbnRzID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZXMsIHB4UmF0aW8sIGV4dGVudCkge1xuICAgIHZhciByID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50KGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDkuZHJhd0NhY2hlZE5vZGVzID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZXMsIHB4UmF0aW8sIGV4dGVudCkge1xuICAgIHZhciByID0gdGhpcztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGVsZSA9IGVsZXNbaV07XG5cbiAgICAgIGlmICghZWxlLmlzTm9kZSgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50KGNvbnRleHQsIGVsZSwgcHhSYXRpbywgZXh0ZW50KTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDkuZHJhd0xheWVyZWRFbGVtZW50cyA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGVzLCBweFJhdGlvLCBleHRlbnQpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgdmFyIGxheWVycyA9IHIuZGF0YS5seXJUeHJDYWNoZS5nZXRMYXllcnMoZWxlcywgcHhSYXRpbyk7XG5cbiAgICBpZiAobGF5ZXJzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxheWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbGF5ZXIgPSBsYXllcnNbaV07XG4gICAgICAgIHZhciBiYiA9IGxheWVyLmJiO1xuXG4gICAgICAgIGlmIChiYi53ID09PSAwIHx8IGJiLmggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGxheWVyLmNhbnZhcywgYmIueDEsIGJiLnkxLCBiYi53LCBiYi5oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFsbCBiYWNrIG9uIHBsYWluIGNhY2hpbmcgaWYgbm8gbGF5ZXJzXG4gICAgICByLmRyYXdDYWNoZWRFbGVtZW50cyhjb250ZXh0LCBlbGVzLCBweFJhdGlvLCBleHRlbnQpO1xuICAgIH1cbiAgfTtcblxuICAvKiBnbG9iYWwgUGF0aDJEICovXG4gIHZhciBDUnAkOCA9IHt9O1xuXG4gIENScCQ4LmRyYXdFZGdlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVkZ2UsIHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICB2YXIgZHJhd0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICAgIHZhciBzaG91bGREcmF3T3ZlcmxheSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgICB2YXIgc2hvdWxkRHJhd09wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHRydWU7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG5cbiAgICBpZiAoc2hvdWxkRHJhd09wYWNpdHkgJiYgIWVkZ2UudmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBpZiBiZXppZXIgY3RybCBwdHMgY2FuIG5vdCBiZSBjYWxjdWxhdGVkLCB0aGVuIGRpZVxuXG5cbiAgICBpZiAocnMuYmFkTGluZSB8fCBycy5hbGxwdHMgPT0gbnVsbCB8fCBpc05hTihycy5hbGxwdHNbMF0pKSB7XG4gICAgICAvLyBpc05hTiBpbiBjYXNlIGVkZ2UgaXMgaW1wb3NzaWJsZSBhbmQgYnJvd3NlciBidWdzIChlLmcuIHNhZmFyaSlcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYmI7XG5cbiAgICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgICAgYmIgPSBzaGlmdFRvT3JpZ2luV2l0aEJiO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoLWJiLngxLCAtYmIueTEpO1xuICAgIH1cblxuICAgIHZhciBvcGFjaXR5ID0gc2hvdWxkRHJhd09wYWNpdHkgPyBlZGdlLnBzdHlsZSgnb3BhY2l0eScpLnZhbHVlIDogMTtcbiAgICB2YXIgbGluZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IGVkZ2UucHN0eWxlKCdsaW5lLW9wYWNpdHknKS52YWx1ZSA6IDE7XG4gICAgdmFyIGN1cnZlU3R5bGUgPSBlZGdlLnBzdHlsZSgnY3VydmUtc3R5bGUnKS52YWx1ZTtcbiAgICB2YXIgbGluZVN0eWxlID0gZWRnZS5wc3R5bGUoJ2xpbmUtc3R5bGUnKS52YWx1ZTtcbiAgICB2YXIgZWRnZVdpZHRoID0gZWRnZS5wc3R5bGUoJ3dpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgbGluZUNhcCA9IGVkZ2UucHN0eWxlKCdsaW5lLWNhcCcpLnZhbHVlO1xuICAgIHZhciBlZmZlY3RpdmVMaW5lT3BhY2l0eSA9IG9wYWNpdHkgKiBsaW5lT3BhY2l0eTsgLy8gc2VwYXJhdGUgYXJyb3cgb3BhY2l0eSB3b3VsZCByZXF1aXJlIGFycm93LW9wYWNpdHkgcHJvcGVydHlcblxuICAgIHZhciBlZmZlY3RpdmVBcnJvd09wYWNpdHkgPSBvcGFjaXR5ICogbGluZU9wYWNpdHk7XG5cbiAgICB2YXIgZHJhd0xpbmUgPSBmdW5jdGlvbiBkcmF3TGluZSgpIHtcbiAgICAgIHZhciBzdHJva2VPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlZmZlY3RpdmVMaW5lT3BhY2l0eTtcblxuICAgICAgaWYgKGN1cnZlU3R5bGUgPT09ICdzdHJhaWdodC10cmlhbmdsZScpIHtcbiAgICAgICAgci5lbGVTdHJva2VTdHlsZShjb250ZXh0LCBlZGdlLCBzdHJva2VPcGFjaXR5KTtcbiAgICAgICAgci5kcmF3RWRnZVRyaWFuZ2xlUGF0aChlZGdlLCBjb250ZXh0LCBycy5hbGxwdHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBlZGdlV2lkdGg7XG4gICAgICAgIGNvbnRleHQubGluZUNhcCA9IGxpbmVDYXA7XG4gICAgICAgIHIuZWxlU3Ryb2tlU3R5bGUoY29udGV4dCwgZWRnZSwgc3Ryb2tlT3BhY2l0eSk7XG4gICAgICAgIHIuZHJhd0VkZ2VQYXRoKGVkZ2UsIGNvbnRleHQsIHJzLmFsbHB0cywgbGluZVN0eWxlKTtcbiAgICAgICAgY29udGV4dC5saW5lQ2FwID0gJ2J1dHQnOyAvLyByZXNldCBmb3Igb3RoZXIgZHJhd2luZyBmdW5jdGlvbnNcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGRyYXdPdmVybGF5ID0gZnVuY3Rpb24gZHJhd092ZXJsYXkoKSB7XG4gICAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgci5kcmF3RWRnZU92ZXJsYXkoY29udGV4dCwgZWRnZSk7XG4gICAgfTtcblxuICAgIHZhciBkcmF3VW5kZXJsYXkgPSBmdW5jdGlvbiBkcmF3VW5kZXJsYXkoKSB7XG4gICAgICBpZiAoIXNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgci5kcmF3RWRnZVVuZGVybGF5KGNvbnRleHQsIGVkZ2UpO1xuICAgIH07XG5cbiAgICB2YXIgZHJhd0Fycm93cyA9IGZ1bmN0aW9uIGRyYXdBcnJvd3MoKSB7XG4gICAgICB2YXIgYXJyb3dPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBlZmZlY3RpdmVBcnJvd09wYWNpdHk7XG4gICAgICByLmRyYXdBcnJvd2hlYWRzKGNvbnRleHQsIGVkZ2UsIGFycm93T3BhY2l0eSk7XG4gICAgfTtcblxuICAgIHZhciBkcmF3VGV4dCA9IGZ1bmN0aW9uIGRyYXdUZXh0KCkge1xuICAgICAgci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWRnZSwgbnVsbCwgZHJhd0xhYmVsKTtcbiAgICB9O1xuXG4gICAgY29udGV4dC5saW5lSm9pbiA9ICdyb3VuZCc7XG4gICAgdmFyIGdob3N0ID0gZWRnZS5wc3R5bGUoJ2dob3N0JykudmFsdWUgPT09ICd5ZXMnO1xuXG4gICAgaWYgKGdob3N0KSB7XG4gICAgICB2YXIgZ3ggPSBlZGdlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgICAgdmFyIGd5ID0gZWRnZS5wc3R5bGUoJ2dob3N0LW9mZnNldC15JykucGZWYWx1ZTtcbiAgICAgIHZhciBnaG9zdE9wYWNpdHkgPSBlZGdlLnBzdHlsZSgnZ2hvc3Qtb3BhY2l0eScpLnZhbHVlO1xuICAgICAgdmFyIGVmZmVjdGl2ZUdob3N0T3BhY2l0eSA9IGVmZmVjdGl2ZUxpbmVPcGFjaXR5ICogZ2hvc3RPcGFjaXR5O1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoZ3gsIGd5KTtcbiAgICAgIGRyYXdMaW5lKGVmZmVjdGl2ZUdob3N0T3BhY2l0eSk7XG4gICAgICBkcmF3QXJyb3dzKGVmZmVjdGl2ZUdob3N0T3BhY2l0eSk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtZ3gsIC1neSk7XG4gICAgfVxuXG4gICAgZHJhd1VuZGVybGF5KCk7XG4gICAgZHJhd0xpbmUoKTtcbiAgICBkcmF3QXJyb3dzKCk7XG4gICAgZHJhd092ZXJsYXkoKTtcbiAgICBkcmF3VGV4dCgpO1xuXG4gICAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKGJiLngxLCBiYi55MSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSA9IGZ1bmN0aW9uIGRyYXdFZGdlT3ZlcmxheVVuZGVybGF5KG92ZXJsYXlPclVuZGVybGF5KSB7XG4gICAgaWYgKCFbJ292ZXJsYXknLCAndW5kZXJsYXknXS5pbmNsdWRlcyhvdmVybGF5T3JVbmRlcmxheSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdGF0ZScpO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoY29udGV4dCwgZWRnZSkge1xuICAgICAgaWYgKCFlZGdlLnZpc2libGUoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBvcGFjaXR5ID0gZWRnZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLW9wYWNpdHlcIikpLnZhbHVlO1xuXG4gICAgICBpZiAob3BhY2l0eSA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHZhciB1c2VQYXRocyA9IHIudXNlUGF0aHMoKTtcbiAgICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICB2YXIgcGFkZGluZyA9IGVkZ2UucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1wYWRkaW5nXCIpKS5wZlZhbHVlO1xuICAgICAgdmFyIHdpZHRoID0gMiAqIHBhZGRpbmc7XG4gICAgICB2YXIgY29sb3IgPSBlZGdlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItY29sb3JcIikpLnZhbHVlO1xuICAgICAgY29udGV4dC5saW5lV2lkdGggPSB3aWR0aDtcblxuICAgICAgaWYgKHJzLmVkZ2VUeXBlID09PSAnc2VsZicgJiYgIXVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQubGluZUNhcCA9ICdidXR0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQubGluZUNhcCA9ICdyb3VuZCc7XG4gICAgICB9XG5cbiAgICAgIHIuY29sb3JTdHJva2VTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICAgIHIuZHJhd0VkZ2VQYXRoKGVkZ2UsIGNvbnRleHQsIHJzLmFsbHB0cywgJ3NvbGlkJyk7XG4gICAgfTtcbiAgfTtcblxuICBDUnAkOC5kcmF3RWRnZU92ZXJsYXkgPSBkcmF3RWRnZU92ZXJsYXlVbmRlcmxheSgnb3ZlcmxheScpO1xuICBDUnAkOC5kcmF3RWRnZVVuZGVybGF5ID0gZHJhd0VkZ2VPdmVybGF5VW5kZXJsYXkoJ3VuZGVybGF5Jyk7XG5cbiAgQ1JwJDguZHJhd0VkZ2VQYXRoID0gZnVuY3Rpb24gKGVkZ2UsIGNvbnRleHQsIHB0cywgdHlwZSkge1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGNhbnZhc0N4dCA9IGNvbnRleHQ7XG4gICAgdmFyIHBhdGg7XG4gICAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICAgIHZhciB1c2VQYXRocyA9IHRoaXMudXNlUGF0aHMoKTtcbiAgICB2YXIgbGluZURhc2hQYXR0ZXJuID0gZWRnZS5wc3R5bGUoJ2xpbmUtZGFzaC1wYXR0ZXJuJykucGZWYWx1ZTtcbiAgICB2YXIgbGluZURhc2hPZmZzZXQgPSBlZGdlLnBzdHlsZSgnbGluZS1kYXNoLW9mZnNldCcpLnBmVmFsdWU7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIHZhciBwYXRoQ2FjaGVLZXkgPSBwdHMuam9pbignJCcpO1xuICAgICAgdmFyIGtleU1hdGNoZXMgPSBycy5wYXRoQ2FjaGVLZXkgJiYgcnMucGF0aENhY2hlS2V5ID09PSBwYXRoQ2FjaGVLZXk7XG5cbiAgICAgIGlmIChrZXlNYXRjaGVzKSB7XG4gICAgICAgIHBhdGggPSBjb250ZXh0ID0gcnMucGF0aENhY2hlO1xuICAgICAgICBwYXRoQ2FjaGVIaXQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aCA9IGNvbnRleHQgPSBuZXcgUGF0aDJEKCk7XG4gICAgICAgIHJzLnBhdGhDYWNoZUtleSA9IHBhdGhDYWNoZUtleTtcbiAgICAgICAgcnMucGF0aENhY2hlID0gcGF0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2FudmFzQ3h0LnNldExpbmVEYXNoKSB7XG4gICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgIGNhbnZhc0N4dC5zZXRMaW5lRGFzaChbMSwgMV0pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Rhc2hlZCc6XG4gICAgICAgICAgY2FudmFzQ3h0LnNldExpbmVEYXNoKGxpbmVEYXNoUGF0dGVybik7XG4gICAgICAgICAgY2FudmFzQ3h0LmxpbmVEYXNoT2Zmc2V0ID0gbGluZURhc2hPZmZzZXQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc29saWQnOlxuICAgICAgICAgIGNhbnZhc0N4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoQ2FjaGVIaXQgJiYgIXJzLmJhZExpbmUpIHtcbiAgICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1vdmVUbyhwdHNbMF0sIHB0c1sxXSk7XG5cbiAgICAgIHN3aXRjaCAocnMuZWRnZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgICAgY2FzZSAnc2VsZic6XG4gICAgICAgIGNhc2UgJ2NvbXBvdW5kJzpcbiAgICAgICAgY2FzZSAnbXVsdGliZXppZXInOlxuICAgICAgICAgIGZvciAodmFyIGkgPSAyOyBpICsgMyA8IHB0cy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICAgICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHB0c1tpXSwgcHRzW2kgKyAxXSwgcHRzW2kgKyAyXSwgcHRzW2kgKyAzXSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc3RyYWlnaHQnOlxuICAgICAgICBjYXNlICdzZWdtZW50cyc6XG4gICAgICAgIGNhc2UgJ2hheXN0YWNrJzpcbiAgICAgICAgICBmb3IgKHZhciBfaSA9IDI7IF9pICsgMSA8IHB0cy5sZW5ndGg7IF9pICs9IDIpIHtcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHB0c1tfaV0sIHB0c1tfaSArIDFdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb250ZXh0ID0gY2FudmFzQ3h0O1xuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICBjb250ZXh0LnN0cm9rZShwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICB9IC8vIHJlc2V0IGFueSBsaW5lIGRhc2hlc1xuXG5cbiAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDguZHJhd0VkZ2VUcmlhbmdsZVBhdGggPSBmdW5jdGlvbiAoZWRnZSwgY29udGV4dCwgcHRzKSB7XG4gICAgLy8gdXNlIGxpbmUgc3Ryb2tlIHN0eWxlIGZvciB0cmlhbmdsZSBmaWxsIHN0eWxlXG4gICAgY29udGV4dC5maWxsU3R5bGUgPSBjb250ZXh0LnN0cm9rZVN0eWxlO1xuICAgIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgKyAxIDwgcHRzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgdmVjdG9yID0gW3B0c1tpICsgMl0gLSBwdHNbaV0sIHB0c1tpICsgM10gLSBwdHNbaSArIDFdXTtcbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLnNxcnQodmVjdG9yWzBdICogdmVjdG9yWzBdICsgdmVjdG9yWzFdICogdmVjdG9yWzFdKTtcbiAgICAgIHZhciBub3JtYWwgPSBbdmVjdG9yWzFdIC8gbGVuZ3RoLCAtdmVjdG9yWzBdIC8gbGVuZ3RoXTtcbiAgICAgIHZhciB0cmlhbmdsZUhlYWQgPSBbbm9ybWFsWzBdICogZWRnZVdpZHRoIC8gMiwgbm9ybWFsWzFdICogZWRnZVdpZHRoIC8gMl07XG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgY29udGV4dC5tb3ZlVG8ocHRzW2ldIC0gdHJpYW5nbGVIZWFkWzBdLCBwdHNbaSArIDFdIC0gdHJpYW5nbGVIZWFkWzFdKTtcbiAgICAgIGNvbnRleHQubGluZVRvKHB0c1tpXSArIHRyaWFuZ2xlSGVhZFswXSwgcHRzW2kgKyAxXSArIHRyaWFuZ2xlSGVhZFsxXSk7XG4gICAgICBjb250ZXh0LmxpbmVUbyhwdHNbaSArIDJdLCBwdHNbaSArIDNdKTtcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDguZHJhd0Fycm93aGVhZHMgPSBmdW5jdGlvbiAoY29udGV4dCwgZWRnZSwgb3BhY2l0eSkge1xuICAgIHZhciBycyA9IGVkZ2UuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGlzSGF5c3RhY2sgPSBycy5lZGdlVHlwZSA9PT0gJ2hheXN0YWNrJztcblxuICAgIGlmICghaXNIYXlzdGFjaykge1xuICAgICAgdGhpcy5kcmF3QXJyb3doZWFkKGNvbnRleHQsIGVkZ2UsICdzb3VyY2UnLCBycy5hcnJvd1N0YXJ0WCwgcnMuYXJyb3dTdGFydFksIHJzLnNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuICAgIH1cblxuICAgIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAnbWlkLXRhcmdldCcsIHJzLm1pZFgsIHJzLm1pZFksIHJzLm1pZHRndEFycm93QW5nbGUsIG9wYWNpdHkpO1xuICAgIHRoaXMuZHJhd0Fycm93aGVhZChjb250ZXh0LCBlZGdlLCAnbWlkLXNvdXJjZScsIHJzLm1pZFgsIHJzLm1pZFksIHJzLm1pZHNyY0Fycm93QW5nbGUsIG9wYWNpdHkpO1xuXG4gICAgaWYgKCFpc0hheXN0YWNrKSB7XG4gICAgICB0aGlzLmRyYXdBcnJvd2hlYWQoY29udGV4dCwgZWRnZSwgJ3RhcmdldCcsIHJzLmFycm93RW5kWCwgcnMuYXJyb3dFbmRZLCBycy50Z3RBcnJvd0FuZ2xlLCBvcGFjaXR5KTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDguZHJhd0Fycm93aGVhZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlZGdlLCBwcmVmaXgsIHgsIHksIGFuZ2xlLCBvcGFjaXR5KSB7XG4gICAgaWYgKGlzTmFOKHgpIHx8IHggPT0gbnVsbCB8fCBpc05hTih5KSB8fCB5ID09IG51bGwgfHwgaXNOYU4oYW5nbGUpIHx8IGFuZ2xlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGFycm93U2hhcGUgPSBlZGdlLnBzdHlsZShwcmVmaXggKyAnLWFycm93LXNoYXBlJykudmFsdWU7XG5cbiAgICBpZiAoYXJyb3dTaGFwZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGFycm93Q2xlYXJGaWxsID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1maWxsJykudmFsdWUgPT09ICdob2xsb3cnID8gJ2JvdGgnIDogJ2ZpbGxlZCc7XG4gICAgdmFyIGFycm93RmlsbCA9IGVkZ2UucHN0eWxlKHByZWZpeCArICctYXJyb3ctZmlsbCcpLnZhbHVlO1xuICAgIHZhciBlZGdlV2lkdGggPSBlZGdlLnBzdHlsZSgnd2lkdGgnKS5wZlZhbHVlO1xuICAgIHZhciBlZGdlT3BhY2l0eSA9IGVkZ2UucHN0eWxlKCdvcGFjaXR5JykudmFsdWU7XG5cbiAgICBpZiAob3BhY2l0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcGFjaXR5ID0gZWRnZU9wYWNpdHk7XG4gICAgfVxuXG4gICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuXG4gICAgaWYgKG9wYWNpdHkgIT09IDEgfHwgYXJyb3dGaWxsID09PSAnaG9sbG93Jykge1xuICAgICAgLy8gdGhlbiBleHRyYSBjbGVhciBpcyBuZWVkZWRcbiAgICAgIGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgICBzZWxmLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIDI1NSwgMjU1LCAyNTUsIDEpO1xuICAgICAgc2VsZi5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIDI1NSwgMjU1LCAyNTUsIDEpO1xuICAgICAgc2VsZi5kcmF3QXJyb3dTaGFwZShlZGdlLCBjb250ZXh0LCBhcnJvd0NsZWFyRmlsbCwgZWRnZVdpZHRoLCBhcnJvd1NoYXBlLCB4LCB5LCBhbmdsZSk7XG4gICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGdjbztcbiAgICB9IC8vIG90aGVyd2lzZSwgdGhlIG9wYXF1ZSBhcnJvdyBjbGVhcnMgaXQgZm9yIGZyZWUgOilcblxuXG4gICAgdmFyIGNvbG9yID0gZWRnZS5wc3R5bGUocHJlZml4ICsgJy1hcnJvdy1jb2xvcicpLnZhbHVlO1xuICAgIHNlbGYuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgb3BhY2l0eSk7XG4gICAgc2VsZi5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIG9wYWNpdHkpO1xuICAgIHNlbGYuZHJhd0Fycm93U2hhcGUoZWRnZSwgY29udGV4dCwgYXJyb3dGaWxsLCBlZGdlV2lkdGgsIGFycm93U2hhcGUsIHgsIHksIGFuZ2xlKTtcbiAgfTtcblxuICBDUnAkOC5kcmF3QXJyb3dTaGFwZSA9IGZ1bmN0aW9uIChlZGdlLCBjb250ZXh0LCBmaWxsLCBlZGdlV2lkdGgsIHNoYXBlLCB4LCB5LCBhbmdsZSkge1xuICAgIHZhciByID0gdGhpcztcbiAgICB2YXIgdXNlUGF0aHMgPSB0aGlzLnVzZVBhdGhzKCkgJiYgc2hhcGUgIT09ICd0cmlhbmdsZS1jcm9zcyc7XG4gICAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICAgIHZhciBwYXRoO1xuICAgIHZhciBjYW52YXNDb250ZXh0ID0gY29udGV4dDtcbiAgICB2YXIgdHJhbnNsYXRpb24gPSB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH07XG4gICAgdmFyIHNjYWxlID0gZWRnZS5wc3R5bGUoJ2Fycm93LXNjYWxlJykudmFsdWU7XG4gICAgdmFyIHNpemUgPSB0aGlzLmdldEFycm93V2lkdGgoZWRnZVdpZHRoLCBzY2FsZSk7XG4gICAgdmFyIHNoYXBlSW1wbCA9IHIuYXJyb3dTaGFwZXNbc2hhcGVdO1xuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICB2YXIgY2FjaGUgPSByLmFycm93UGF0aENhY2hlID0gci5hcnJvd1BhdGhDYWNoZSB8fCBbXTtcbiAgICAgIHZhciBrZXkgPSBoYXNoU3RyaW5nKHNoYXBlKTtcbiAgICAgIHZhciBjYWNoZWRQYXRoID0gY2FjaGVba2V5XTtcblxuICAgICAgaWYgKGNhY2hlZFBhdGggIT0gbnVsbCkge1xuICAgICAgICBwYXRoID0gY29udGV4dCA9IGNhY2hlZFBhdGg7XG4gICAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoID0gY29udGV4dCA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgY2FjaGVba2V5XSA9IHBhdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoQ2FjaGVIaXQpIHtcbiAgICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgICAgLy8gc3RvcmUgaW4gdGhlIHBhdGggY2FjaGUgd2l0aCB2YWx1ZXMgZWFzaWx5IG1hbmlwdWxhdGVkIGxhdGVyXG4gICAgICAgIHNoYXBlSW1wbC5kcmF3KGNvbnRleHQsIDEsIDAsIHtcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDBcbiAgICAgICAgfSwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaGFwZUltcGwuZHJhdyhjb250ZXh0LCBzaXplLCBhbmdsZSwgdHJhbnNsYXRpb24sIGVkZ2VXaWR0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250ZXh0LmNsb3NlUGF0aCkge1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQgPSBjYW52YXNDb250ZXh0O1xuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAvLyBzZXQgdHJhbnNmb3JtIHRvIGFycm93IHBvc2l0aW9uL29yaWVudGF0aW9uXG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4LCB5KTtcbiAgICAgIGNvbnRleHQucm90YXRlKGFuZ2xlKTtcbiAgICAgIGNvbnRleHQuc2NhbGUoc2l6ZSwgc2l6ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGwgPT09ICdmaWxsZWQnIHx8IGZpbGwgPT09ICdib3RoJykge1xuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuZmlsbChwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxsID09PSAnaG9sbG93JyB8fCBmaWxsID09PSAnYm90aCcpIHtcbiAgICAgIGNvbnRleHQubGluZVdpZHRoID0gKHNoYXBlSW1wbC5tYXRjaEVkZ2VXaWR0aCA/IGVkZ2VXaWR0aCA6IDEpIC8gKHVzZVBhdGhzID8gc2l6ZSA6IDEpO1xuICAgICAgY29udGV4dC5saW5lSm9pbiA9ICdtaXRlcic7XG5cbiAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICBjb250ZXh0LnN0cm9rZShwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAvLyByZXNldCB0cmFuc2Zvcm0gYnkgYXBwbHlpbmcgaW52ZXJzZVxuICAgICAgY29udGV4dC5zY2FsZSgxIC8gc2l6ZSwgMSAvIHNpemUpO1xuICAgICAgY29udGV4dC5yb3RhdGUoLWFuZ2xlKTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC14LCAteSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBDUnAkNyA9IHt9O1xuXG4gIENScCQ3LnNhZmVEcmF3SW1hZ2UgPSBmdW5jdGlvbiAoY29udGV4dCwgaW1nLCBpeCwgaXksIGl3LCBpaCwgeCwgeSwgdywgaCkge1xuICAgIC8vIGRldGVjdCBwcm9ibGVtYXRpYyBjYXNlcyBmb3Igb2xkIGJyb3dzZXJzIHdpdGggYmFkIGltYWdlcyAoY2hlYXBlciB0aGFuIHRyeS1jYXRjaClcbiAgICBpZiAoaXcgPD0gMCB8fCBpaCA8PSAwIHx8IHcgPD0gMCB8fCBoIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCBpeCwgaXksIGl3LCBpaCwgeCwgeSwgdywgaCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgd2FybihlKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDcuZHJhd0luc2NyaWJlZEltYWdlID0gZnVuY3Rpb24gKGNvbnRleHQsIGltZywgbm9kZSwgaW5kZXgsIG5vZGVPcGFjaXR5KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBwb3MgPSBub2RlLnBvc2l0aW9uKCk7XG4gICAgdmFyIG5vZGVYID0gcG9zLng7XG4gICAgdmFyIG5vZGVZID0gcG9zLnk7XG4gICAgdmFyIHN0eWxlT2JqID0gbm9kZS5jeSgpLnN0eWxlKCk7XG4gICAgdmFyIGdldEluZGV4ZWRTdHlsZSA9IHN0eWxlT2JqLmdldEluZGV4ZWRTdHlsZS5iaW5kKHN0eWxlT2JqKTtcbiAgICB2YXIgZml0ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWZpdCcsICd2YWx1ZScsIGluZGV4KTtcbiAgICB2YXIgcmVwZWF0ID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXJlcGVhdCcsICd2YWx1ZScsIGluZGV4KTtcbiAgICB2YXIgbm9kZVcgPSBub2RlLndpZHRoKCk7XG4gICAgdmFyIG5vZGVIID0gbm9kZS5oZWlnaHQoKTtcbiAgICB2YXIgcGFkZGluZ1gyID0gbm9kZS5wYWRkaW5nKCkgKiAyO1xuICAgIHZhciBub2RlVFcgPSBub2RlVyArIChnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgtcmVsYXRpdmUtdG8nLCAndmFsdWUnLCBpbmRleCkgPT09ICdpbm5lcicgPyAwIDogcGFkZGluZ1gyKTtcbiAgICB2YXIgbm9kZVRIID0gbm9kZUggKyAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodC1yZWxhdGl2ZS10bycsICd2YWx1ZScsIGluZGV4KSA9PT0gJ2lubmVyJyA/IDAgOiBwYWRkaW5nWDIpO1xuICAgIHZhciBycyA9IG5vZGUuX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgdmFyIGNsaXAgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtY2xpcCcsICd2YWx1ZScsIGluZGV4KTtcbiAgICB2YXIgc2hvdWxkQ2xpcCA9IGNsaXAgPT09ICdub2RlJztcbiAgICB2YXIgaW1nT3BhY2l0eSA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1vcGFjaXR5JywgJ3ZhbHVlJywgaW5kZXgpICogbm9kZU9wYWNpdHk7XG4gICAgdmFyIHNtb290aCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1pbWFnZS1zbW9vdGhpbmcnLCAndmFsdWUnLCBpbmRleCk7XG4gICAgdmFyIGltZ1cgPSBpbWcud2lkdGggfHwgaW1nLmNhY2hlZFc7XG4gICAgdmFyIGltZ0ggPSBpbWcuaGVpZ2h0IHx8IGltZy5jYWNoZWRIOyAvLyB3b3JrYXJvdW5kIGZvciBicm9rZW4gYnJvd3NlcnMgbGlrZSBpZVxuXG4gICAgaWYgKG51bGwgPT0gaW1nVyB8fCBudWxsID09IGltZ0gpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgICBpbWdXID0gaW1nLmNhY2hlZFcgPSBpbWcud2lkdGggfHwgaW1nLm9mZnNldFdpZHRoO1xuICAgICAgaW1nSCA9IGltZy5jYWNoZWRIID0gaW1nLmhlaWdodCB8fCBpbWcub2Zmc2V0SGVpZ2h0O1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpbWcpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgfVxuXG4gICAgdmFyIHcgPSBpbWdXO1xuICAgIHZhciBoID0gaW1nSDtcblxuICAgIGlmIChnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAndmFsdWUnLCBpbmRleCkgIT09ICdhdXRvJykge1xuICAgICAgaWYgKGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC13aWR0aCcsICd1bml0cycsIGluZGV4KSA9PT0gJyUnKSB7XG4gICAgICAgIHcgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAncGZWYWx1ZScsIGluZGV4KSAqIG5vZGVUVztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHcgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtd2lkdGgnLCAncGZWYWx1ZScsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICd2YWx1ZScsIGluZGV4KSAhPT0gJ2F1dG8nKSB7XG4gICAgICBpZiAoZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICd1bml0cycsIGluZGV4KSA9PT0gJyUnKSB7XG4gICAgICAgIGggPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtaGVpZ2h0JywgJ3BmVmFsdWUnLCBpbmRleCkgKiBub2RlVEg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWhlaWdodCcsICdwZlZhbHVlJywgaW5kZXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3ID09PSAwIHx8IGggPT09IDApIHtcbiAgICAgIHJldHVybjsgLy8gbm8gcG9pbnQgaW4gZHJhd2luZyBlbXB0eSBpbWFnZSAoYW5kIGNocm9tZSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlKVxuICAgIH1cblxuICAgIGlmIChmaXQgPT09ICdjb250YWluJykge1xuICAgICAgdmFyIHNjYWxlID0gTWF0aC5taW4obm9kZVRXIC8gdywgbm9kZVRIIC8gaCk7XG4gICAgICB3ICo9IHNjYWxlO1xuICAgICAgaCAqPSBzY2FsZTtcbiAgICB9IGVsc2UgaWYgKGZpdCA9PT0gJ2NvdmVyJykge1xuICAgICAgdmFyIHNjYWxlID0gTWF0aC5tYXgobm9kZVRXIC8gdywgbm9kZVRIIC8gaCk7XG4gICAgICB3ICo9IHNjYWxlO1xuICAgICAgaCAqPSBzY2FsZTtcbiAgICB9XG5cbiAgICB2YXIgeCA9IG5vZGVYIC0gbm9kZVRXIC8gMjsgLy8gbGVmdFxuXG4gICAgdmFyIHBvc1hVbml0cyA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1wb3NpdGlvbi14JywgJ3VuaXRzJywgaW5kZXgpO1xuICAgIHZhciBwb3NYUGZWYWwgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtcG9zaXRpb24teCcsICdwZlZhbHVlJywgaW5kZXgpO1xuXG4gICAgaWYgKHBvc1hVbml0cyA9PT0gJyUnKSB7XG4gICAgICB4ICs9IChub2RlVFcgLSB3KSAqIHBvc1hQZlZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgeCArPSBwb3NYUGZWYWw7XG4gICAgfVxuXG4gICAgdmFyIG9mZlhVbml0cyA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1vZmZzZXQteCcsICd1bml0cycsIGluZGV4KTtcbiAgICB2YXIgb2ZmWFBmVmFsID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC14JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgICBpZiAob2ZmWFVuaXRzID09PSAnJScpIHtcbiAgICAgIHggKz0gKG5vZGVUVyAtIHcpICogb2ZmWFBmVmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ICs9IG9mZlhQZlZhbDtcbiAgICB9XG5cbiAgICB2YXIgeSA9IG5vZGVZIC0gbm9kZVRIIC8gMjsgLy8gdG9wXG5cbiAgICB2YXIgcG9zWVVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLXBvc2l0aW9uLXknLCAndW5pdHMnLCBpbmRleCk7XG4gICAgdmFyIHBvc1lQZlZhbCA9IGdldEluZGV4ZWRTdHlsZShub2RlLCAnYmFja2dyb3VuZC1wb3NpdGlvbi15JywgJ3BmVmFsdWUnLCBpbmRleCk7XG5cbiAgICBpZiAocG9zWVVuaXRzID09PSAnJScpIHtcbiAgICAgIHkgKz0gKG5vZGVUSCAtIGgpICogcG9zWVBmVmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB5ICs9IHBvc1lQZlZhbDtcbiAgICB9XG5cbiAgICB2YXIgb2ZmWVVuaXRzID0gZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLW9mZnNldC15JywgJ3VuaXRzJywgaW5kZXgpO1xuICAgIHZhciBvZmZZUGZWYWwgPSBnZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtb2Zmc2V0LXknLCAncGZWYWx1ZScsIGluZGV4KTtcblxuICAgIGlmIChvZmZZVW5pdHMgPT09ICclJykge1xuICAgICAgeSArPSAobm9kZVRIIC0gaCkgKiBvZmZZUGZWYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHkgKz0gb2ZmWVBmVmFsO1xuICAgIH1cblxuICAgIGlmIChycy5wYXRoQ2FjaGUpIHtcbiAgICAgIHggLT0gbm9kZVg7XG4gICAgICB5IC09IG5vZGVZO1xuICAgICAgbm9kZVggPSAwO1xuICAgICAgbm9kZVkgPSAwO1xuICAgIH1cblxuICAgIHZhciBnQWxwaGEgPSBjb250ZXh0Lmdsb2JhbEFscGhhO1xuICAgIGNvbnRleHQuZ2xvYmFsQWxwaGEgPSBpbWdPcGFjaXR5O1xuICAgIHZhciBzbW9vdGhpbmdFbmFibGVkID0gci5nZXRJbWdTbW9vdGhpbmcoY29udGV4dCk7XG4gICAgdmFyIGlzU21vb3RoaW5nU3dpdGNoZWQgPSBmYWxzZTtcblxuICAgIGlmIChzbW9vdGggPT09ICdubycgJiYgc21vb3RoaW5nRW5hYmxlZCkge1xuICAgICAgci5zZXRJbWdTbW9vdGhpbmcoY29udGV4dCwgZmFsc2UpO1xuICAgICAgaXNTbW9vdGhpbmdTd2l0Y2hlZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzbW9vdGggPT09ICd5ZXMnICYmICFzbW9vdGhpbmdFbmFibGVkKSB7XG4gICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCB0cnVlKTtcbiAgICAgIGlzU21vb3RoaW5nU3dpdGNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXBlYXQgPT09ICduby1yZXBlYXQnKSB7XG4gICAgICBpZiAoc2hvdWxkQ2xpcCkge1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcblxuICAgICAgICBpZiAocnMucGF0aENhY2hlKSB7XG4gICAgICAgICAgY29udGV4dC5jbGlwKHJzLnBhdGhDYWNoZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KGNvbnRleHQsIG5vZGVYLCBub2RlWSwgbm9kZVRXLCBub2RlVEgpO1xuICAgICAgICAgIGNvbnRleHQuY2xpcCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHIuc2FmZURyYXdJbWFnZShjb250ZXh0LCBpbWcsIDAsIDAsIGltZ1csIGltZ0gsIHgsIHksIHcsIGgpO1xuXG4gICAgICBpZiAoc2hvdWxkQ2xpcCkge1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZVBhdHRlcm4oaW1nLCByZXBlYXQpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBwYXR0ZXJuO1xuICAgICAgci5ub2RlU2hhcGVzW3IuZ2V0Tm9kZVNoYXBlKG5vZGUpXS5kcmF3KGNvbnRleHQsIG5vZGVYLCBub2RlWSwgbm9kZVRXLCBub2RlVEgpO1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoeCwgeSk7XG4gICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC14LCAteSk7XG4gICAgfVxuXG4gICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGdBbHBoYTtcblxuICAgIGlmIChpc1Ntb290aGluZ1N3aXRjaGVkKSB7XG4gICAgICByLnNldEltZ1Ntb290aGluZyhjb250ZXh0LCBzbW9vdGhpbmdFbmFibGVkKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIENScCQ2ID0ge307XG5cbiAgQ1JwJDYuZWxlVGV4dEJpZ2dlclRoYW5NaW4gPSBmdW5jdGlvbiAoZWxlLCBzY2FsZSkge1xuICAgIGlmICghc2NhbGUpIHtcbiAgICAgIHZhciB6b29tID0gZWxlLmN5KCkuem9vbSgpO1xuICAgICAgdmFyIHB4UmF0aW8gPSB0aGlzLmdldFBpeGVsUmF0aW8oKTtcbiAgICAgIHZhciBsdmwgPSBNYXRoLmNlaWwobG9nMih6b29tICogcHhSYXRpbykpOyAvLyB0aGUgZWZmZWN0aXZlIHRleHR1cmUgbGV2ZWxcblxuICAgICAgc2NhbGUgPSBNYXRoLnBvdygyLCBsdmwpO1xuICAgIH1cblxuICAgIHZhciBjb21wdXRlZFNpemUgPSBlbGUucHN0eWxlKCdmb250LXNpemUnKS5wZlZhbHVlICogc2NhbGU7XG4gICAgdmFyIG1pblNpemUgPSBlbGUucHN0eWxlKCdtaW4tem9vbWVkLWZvbnQtc2l6ZScpLnBmVmFsdWU7XG5cbiAgICBpZiAoY29tcHV0ZWRTaXplIDwgbWluU2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIENScCQ2LmRyYXdFbGVtZW50VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHNoaWZ0VG9PcmlnaW5XaXRoQmIsIGZvcmNlLCBwcmVmaXgpIHtcbiAgICB2YXIgdXNlRWxlT3BhY2l0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogdHJ1ZTtcbiAgICB2YXIgciA9IHRoaXM7XG5cbiAgICBpZiAoZm9yY2UgPT0gbnVsbCkge1xuICAgICAgaWYgKHVzZUVsZU9wYWNpdHkgJiYgIXIuZWxlVGV4dEJpZ2dlclRoYW5NaW4oZWxlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JjZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlLmlzTm9kZSgpKSB7XG4gICAgICB2YXIgbGFiZWwgPSBlbGUucHN0eWxlKCdsYWJlbCcpO1xuXG4gICAgICBpZiAoIWxhYmVsIHx8ICFsYWJlbC52YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBqdXN0aWZpY2F0aW9uID0gci5nZXRMYWJlbEp1c3RpZmljYXRpb24oZWxlKTtcbiAgICAgIGNvbnRleHQudGV4dEFsaWduID0ganVzdGlmaWNhdGlvbjtcbiAgICAgIGNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBiYWRMaW5lID0gZWxlLmVsZW1lbnQoKS5fcHJpdmF0ZS5yc2NyYXRjaC5iYWRMaW5lO1xuXG4gICAgICB2YXIgX2xhYmVsID0gZWxlLnBzdHlsZSgnbGFiZWwnKTtcblxuICAgICAgdmFyIHNyY0xhYmVsID0gZWxlLnBzdHlsZSgnc291cmNlLWxhYmVsJyk7XG4gICAgICB2YXIgdGd0TGFiZWwgPSBlbGUucHN0eWxlKCd0YXJnZXQtbGFiZWwnKTtcblxuICAgICAgaWYgKGJhZExpbmUgfHwgKCFfbGFiZWwgfHwgIV9sYWJlbC52YWx1ZSkgJiYgKCFzcmNMYWJlbCB8fCAhc3JjTGFiZWwudmFsdWUpICYmICghdGd0TGFiZWwgfHwgIXRndExhYmVsLnZhbHVlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICdib3R0b20nO1xuICAgIH1cblxuICAgIHZhciBhcHBseVJvdGF0aW9uID0gIXNoaWZ0VG9PcmlnaW5XaXRoQmI7XG4gICAgdmFyIGJiO1xuXG4gICAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICAgIGJiID0gc2hpZnRUb09yaWdpbldpdGhCYjtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1iYi54MSwgLWJiLnkxKTtcbiAgICB9XG5cbiAgICBpZiAocHJlZml4ID09IG51bGwpIHtcbiAgICAgIHIuZHJhd1RleHQoY29udGV4dCwgZWxlLCBudWxsLCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcblxuICAgICAgaWYgKGVsZS5pc0VkZ2UoKSkge1xuICAgICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgJ3NvdXJjZScsIGFwcGx5Um90YXRpb24sIHVzZUVsZU9wYWNpdHkpO1xuICAgICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgJ3RhcmdldCcsIGFwcGx5Um90YXRpb24sIHVzZUVsZU9wYWNpdHkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByLmRyYXdUZXh0KGNvbnRleHQsIGVsZSwgcHJlZml4LCBhcHBseVJvdGF0aW9uLCB1c2VFbGVPcGFjaXR5KTtcbiAgICB9XG5cbiAgICBpZiAoc2hpZnRUb09yaWdpbldpdGhCYikge1xuICAgICAgY29udGV4dC50cmFuc2xhdGUoYmIueDEsIGJiLnkxKTtcbiAgICB9XG4gIH07XG5cbiAgQ1JwJDYuZ2V0Rm9udENhY2hlID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgY2FjaGU7XG4gICAgdGhpcy5mb250Q2FjaGVzID0gdGhpcy5mb250Q2FjaGVzIHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnRDYWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNhY2hlID0gdGhpcy5mb250Q2FjaGVzW2ldO1xuXG4gICAgICBpZiAoY2FjaGUuY29udGV4dCA9PT0gY29udGV4dCkge1xuICAgICAgICByZXR1cm4gY2FjaGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FjaGUgPSB7XG4gICAgICBjb250ZXh0OiBjb250ZXh0XG4gICAgfTtcbiAgICB0aGlzLmZvbnRDYWNoZXMucHVzaChjYWNoZSk7XG4gICAgcmV0dXJuIGNhY2hlO1xuICB9OyAvLyBzZXQgdXAgY2FudmFzIGNvbnRleHQgd2l0aCBmb250XG4gIC8vIHJldHVybnMgdHJhbnNmb3JtZWQgdGV4dCBzdHJpbmdcblxuXG4gIENScCQ2LnNldHVwVGV4dFN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSkge1xuICAgIHZhciB1c2VFbGVPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB0cnVlO1xuICAgIC8vIEZvbnQgc3R5bGVcbiAgICB2YXIgbGFiZWxTdHlsZSA9IGVsZS5wc3R5bGUoJ2ZvbnQtc3R5bGUnKS5zdHJWYWx1ZTtcbiAgICB2YXIgbGFiZWxTaXplID0gZWxlLnBzdHlsZSgnZm9udC1zaXplJykucGZWYWx1ZSArICdweCc7XG4gICAgdmFyIGxhYmVsRmFtaWx5ID0gZWxlLnBzdHlsZSgnZm9udC1mYW1pbHknKS5zdHJWYWx1ZTtcbiAgICB2YXIgbGFiZWxXZWlnaHQgPSBlbGUucHN0eWxlKCdmb250LXdlaWdodCcpLnN0clZhbHVlO1xuICAgIHZhciBvcGFjaXR5ID0gdXNlRWxlT3BhY2l0eSA/IGVsZS5lZmZlY3RpdmVPcGFjaXR5KCkgKiBlbGUucHN0eWxlKCd0ZXh0LW9wYWNpdHknKS52YWx1ZSA6IDE7XG4gICAgdmFyIG91dGxpbmVPcGFjaXR5ID0gZWxlLnBzdHlsZSgndGV4dC1vdXRsaW5lLW9wYWNpdHknKS52YWx1ZSAqIG9wYWNpdHk7XG4gICAgdmFyIGNvbG9yID0gZWxlLnBzdHlsZSgnY29sb3InKS52YWx1ZTtcbiAgICB2YXIgb3V0bGluZUNvbG9yID0gZWxlLnBzdHlsZSgndGV4dC1vdXRsaW5lLWNvbG9yJykudmFsdWU7XG4gICAgY29udGV4dC5mb250ID0gbGFiZWxTdHlsZSArICcgJyArIGxhYmVsV2VpZ2h0ICsgJyAnICsgbGFiZWxTaXplICsgJyAnICsgbGFiZWxGYW1pbHk7XG4gICAgY29udGV4dC5saW5lSm9pbiA9ICdyb3VuZCc7IC8vIHNvIHRleHQgb3V0bGluZXMgYXJlbid0IGphZ2dlZFxuXG4gICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICB0aGlzLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgb3V0bGluZUNvbG9yWzBdLCBvdXRsaW5lQ29sb3JbMV0sIG91dGxpbmVDb2xvclsyXSwgb3V0bGluZU9wYWNpdHkpO1xuICB9OyAvLyBUT0RPIGVuc3VyZSByZS11c2VkXG5cblxuICBmdW5jdGlvbiByb3VuZFJlY3QoY3R4LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIHJhZGl1cyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogNTtcbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgY3R4Lm1vdmVUbyh4ICsgcmFkaXVzLCB5KTtcbiAgICBjdHgubGluZVRvKHggKyB3aWR0aCAtIHJhZGl1cywgeSk7XG4gICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oeCArIHdpZHRoLCB5LCB4ICsgd2lkdGgsIHkgKyByYWRpdXMpO1xuICAgIGN0eC5saW5lVG8oeCArIHdpZHRoLCB5ICsgaGVpZ2h0IC0gcmFkaXVzKTtcbiAgICBjdHgucXVhZHJhdGljQ3VydmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHggKyB3aWR0aCAtIHJhZGl1cywgeSArIGhlaWdodCk7XG4gICAgY3R4LmxpbmVUbyh4ICsgcmFkaXVzLCB5ICsgaGVpZ2h0KTtcbiAgICBjdHgucXVhZHJhdGljQ3VydmVUbyh4LCB5ICsgaGVpZ2h0LCB4LCB5ICsgaGVpZ2h0IC0gcmFkaXVzKTtcbiAgICBjdHgubGluZVRvKHgsIHkgKyByYWRpdXMpO1xuICAgIGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHksIHggKyByYWRpdXMsIHkpO1xuICAgIGN0eC5jbG9zZVBhdGgoKTtcbiAgICBjdHguZmlsbCgpO1xuICB9XG5cbiAgQ1JwJDYuZ2V0VGV4dEFuZ2xlID0gZnVuY3Rpb24gKGVsZSwgcHJlZml4KSB7XG4gICAgdmFyIHRoZXRhO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgcnNjcmF0Y2ggPSBfcC5yc2NyYXRjaDtcbiAgICB2YXIgcGRhc2ggPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgICB2YXIgcm90YXRpb24gPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtcm90YXRpb24nKTtcbiAgICB2YXIgdGV4dEFuZ2xlID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsQW5nbGUnLCBwcmVmaXgpO1xuXG4gICAgaWYgKHJvdGF0aW9uLnN0clZhbHVlID09PSAnYXV0b3JvdGF0ZScpIHtcbiAgICAgIHRoZXRhID0gZWxlLmlzRWRnZSgpID8gdGV4dEFuZ2xlIDogMDtcbiAgICB9IGVsc2UgaWYgKHJvdGF0aW9uLnN0clZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIHRoZXRhID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhldGEgPSByb3RhdGlvbi5wZlZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGV0YTtcbiAgfTtcblxuICBDUnAkNi5kcmF3VGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIHByZWZpeCkge1xuICAgIHZhciBhcHBseVJvdGF0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICAgIHZhciB1c2VFbGVPcGFjaXR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB0cnVlO1xuICAgIHZhciBfcCA9IGVsZS5fcHJpdmF0ZTtcbiAgICB2YXIgcnNjcmF0Y2ggPSBfcC5yc2NyYXRjaDtcbiAgICB2YXIgcGFyZW50T3BhY2l0eSA9IHVzZUVsZU9wYWNpdHkgPyBlbGUuZWZmZWN0aXZlT3BhY2l0eSgpIDogMTtcblxuICAgIGlmICh1c2VFbGVPcGFjaXR5ICYmIChwYXJlbnRPcGFjaXR5ID09PSAwIHx8IGVsZS5wc3R5bGUoJ3RleHQtb3BhY2l0eScpLnZhbHVlID09PSAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gdXNlICdtYWluJyBhcyBhbiBhbGlhcyBmb3IgdGhlIG1haW4gbGFiZWwgKGkuZS4gbnVsbCBwcmVmaXgpXG5cblxuICAgIGlmIChwcmVmaXggPT09ICdtYWluJykge1xuICAgICAgcHJlZml4ID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGV4dFggPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxYJywgcHJlZml4KTtcbiAgICB2YXIgdGV4dFkgPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxZJywgcHJlZml4KTtcbiAgICB2YXIgb3JnVGV4dFgsIG9yZ1RleHRZOyAvLyB1c2VkIGZvciByb3RhdGlvblxuXG4gICAgdmFyIHRleHQgPSB0aGlzLmdldExhYmVsVGV4dChlbGUsIHByZWZpeCk7XG5cbiAgICBpZiAodGV4dCAhPSBudWxsICYmIHRleHQgIT09ICcnICYmICFpc05hTih0ZXh0WCkgJiYgIWlzTmFOKHRleHRZKSkge1xuICAgICAgdGhpcy5zZXR1cFRleHRTdHlsZShjb250ZXh0LCBlbGUsIHVzZUVsZU9wYWNpdHkpO1xuICAgICAgdmFyIHBkYXNoID0gcHJlZml4ID8gcHJlZml4ICsgJy0nIDogJyc7XG4gICAgICB2YXIgdGV4dFcgPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxXaWR0aCcsIHByZWZpeCk7XG4gICAgICB2YXIgdGV4dEggPSBnZXRQcmVmaXhlZFByb3BlcnR5KHJzY3JhdGNoLCAnbGFiZWxIZWlnaHQnLCBwcmVmaXgpO1xuICAgICAgdmFyIG1hcmdpblggPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtbWFyZ2luLXgnKS5wZlZhbHVlO1xuICAgICAgdmFyIG1hcmdpblkgPSBlbGUucHN0eWxlKHBkYXNoICsgJ3RleHQtbWFyZ2luLXknKS5wZlZhbHVlO1xuICAgICAgdmFyIGlzRWRnZSA9IGVsZS5pc0VkZ2UoKTtcbiAgICAgIHZhciBoYWxpZ24gPSBlbGUucHN0eWxlKCd0ZXh0LWhhbGlnbicpLnZhbHVlO1xuICAgICAgdmFyIHZhbGlnbiA9IGVsZS5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWU7XG5cbiAgICAgIGlmIChpc0VkZ2UpIHtcbiAgICAgICAgaGFsaWduID0gJ2NlbnRlcic7XG4gICAgICAgIHZhbGlnbiA9ICdjZW50ZXInO1xuICAgICAgfVxuXG4gICAgICB0ZXh0WCArPSBtYXJnaW5YO1xuICAgICAgdGV4dFkgKz0gbWFyZ2luWTtcbiAgICAgIHZhciB0aGV0YTtcblxuICAgICAgaWYgKCFhcHBseVJvdGF0aW9uKSB7XG4gICAgICAgIHRoZXRhID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoZXRhID0gdGhpcy5nZXRUZXh0QW5nbGUoZWxlLCBwcmVmaXgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhldGEgIT09IDApIHtcbiAgICAgICAgb3JnVGV4dFggPSB0ZXh0WDtcbiAgICAgICAgb3JnVGV4dFkgPSB0ZXh0WTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUob3JnVGV4dFgsIG9yZ1RleHRZKTtcbiAgICAgICAgY29udGV4dC5yb3RhdGUodGhldGEpO1xuICAgICAgICB0ZXh0WCA9IDA7XG4gICAgICAgIHRleHRZID0gMDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh2YWxpZ24pIHtcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAgIHRleHRZICs9IHRleHRIIC8gMjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIHRleHRZICs9IHRleHRIO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICB2YXIgYmFja2dyb3VuZE9wYWNpdHkgPSBlbGUucHN0eWxlKCd0ZXh0LWJhY2tncm91bmQtb3BhY2l0eScpLnZhbHVlO1xuICAgICAgdmFyIGJvcmRlck9wYWNpdHkgPSBlbGUucHN0eWxlKCd0ZXh0LWJvcmRlci1vcGFjaXR5JykudmFsdWU7XG4gICAgICB2YXIgdGV4dEJvcmRlcldpZHRoID0gZWxlLnBzdHlsZSgndGV4dC1ib3JkZXItd2lkdGgnKS5wZlZhbHVlO1xuICAgICAgdmFyIGJhY2tncm91bmRQYWRkaW5nID0gZWxlLnBzdHlsZSgndGV4dC1iYWNrZ3JvdW5kLXBhZGRpbmcnKS5wZlZhbHVlO1xuXG4gICAgICBpZiAoYmFja2dyb3VuZE9wYWNpdHkgPiAwIHx8IHRleHRCb3JkZXJXaWR0aCA+IDAgJiYgYm9yZGVyT3BhY2l0eSA+IDApIHtcbiAgICAgICAgdmFyIGJnWCA9IHRleHRYIC0gYmFja2dyb3VuZFBhZGRpbmc7XG5cbiAgICAgICAgc3dpdGNoIChoYWxpZ24pIHtcbiAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgIGJnWCAtPSB0ZXh0VztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICAgIGJnWCAtPSB0ZXh0VyAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBiZ1kgPSB0ZXh0WSAtIHRleHRIIC0gYmFja2dyb3VuZFBhZGRpbmc7XG4gICAgICAgIHZhciBiZ1cgPSB0ZXh0VyArIDIgKiBiYWNrZ3JvdW5kUGFkZGluZztcbiAgICAgICAgdmFyIGJnSCA9IHRleHRIICsgMiAqIGJhY2tncm91bmRQYWRkaW5nO1xuXG4gICAgICAgIGlmIChiYWNrZ3JvdW5kT3BhY2l0eSA+IDApIHtcbiAgICAgICAgICB2YXIgdGV4dEZpbGwgPSBjb250ZXh0LmZpbGxTdHlsZTtcbiAgICAgICAgICB2YXIgdGV4dEJhY2tncm91bmRDb2xvciA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1jb2xvcicpLnZhbHVlO1xuICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYmEoJyArIHRleHRCYWNrZ3JvdW5kQ29sb3JbMF0gKyAnLCcgKyB0ZXh0QmFja2dyb3VuZENvbG9yWzFdICsgJywnICsgdGV4dEJhY2tncm91bmRDb2xvclsyXSArICcsJyArIGJhY2tncm91bmRPcGFjaXR5ICogcGFyZW50T3BhY2l0eSArICcpJztcbiAgICAgICAgICB2YXIgc3R5bGVTaGFwZSA9IGVsZS5wc3R5bGUoJ3RleHQtYmFja2dyb3VuZC1zaGFwZScpLnN0clZhbHVlO1xuXG4gICAgICAgICAgaWYgKHN0eWxlU2hhcGUuaW5kZXhPZigncm91bmQnKSA9PT0gMCkge1xuICAgICAgICAgICAgcm91bmRSZWN0KGNvbnRleHQsIGJnWCwgYmdZLCBiZ1csIGJnSCwgMik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmdYLCBiZ1ksIGJnVywgYmdIKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHRleHRGaWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRleHRCb3JkZXJXaWR0aCA+IDAgJiYgYm9yZGVyT3BhY2l0eSA+IDApIHtcbiAgICAgICAgICB2YXIgdGV4dFN0cm9rZSA9IGNvbnRleHQuc3Ryb2tlU3R5bGU7XG4gICAgICAgICAgdmFyIHRleHRMaW5lV2lkdGggPSBjb250ZXh0LmxpbmVXaWR0aDtcbiAgICAgICAgICB2YXIgdGV4dEJvcmRlckNvbG9yID0gZWxlLnBzdHlsZSgndGV4dC1ib3JkZXItY29sb3InKS52YWx1ZTtcbiAgICAgICAgICB2YXIgdGV4dEJvcmRlclN0eWxlID0gZWxlLnBzdHlsZSgndGV4dC1ib3JkZXItc3R5bGUnKS52YWx1ZTtcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoJyArIHRleHRCb3JkZXJDb2xvclswXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsxXSArICcsJyArIHRleHRCb3JkZXJDb2xvclsyXSArICcsJyArIGJvcmRlck9wYWNpdHkgKiBwYXJlbnRPcGFjaXR5ICsgJyknO1xuICAgICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gdGV4dEJvcmRlcldpZHRoO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAgIC8vIGZvciB2ZXJ5IG91dG9mZGF0ZSBicm93c2Vyc1xuICAgICAgICAgICAgc3dpdGNoICh0ZXh0Qm9yZGVyU3R5bGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAnZG90dGVkJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFsxLCAxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAnZGFzaGVkJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFs0LCAyXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aCAvIDQ7IC8vIDUwJSByZXNlcnZlZCBmb3Igd2hpdGUgYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnNcblxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ3NvbGlkJzpcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVJlY3QoYmdYLCBiZ1ksIGJnVywgYmdIKTtcblxuICAgICAgICAgIGlmICh0ZXh0Qm9yZGVyU3R5bGUgPT09ICdkb3VibGUnKSB7XG4gICAgICAgICAgICB2YXIgd2hpdGVXaWR0aCA9IHRleHRCb3JkZXJXaWR0aCAvIDI7XG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVJlY3QoYmdYICsgd2hpdGVXaWR0aCwgYmdZICsgd2hpdGVXaWR0aCwgYmdXIC0gd2hpdGVXaWR0aCAqIDIsIGJnSCAtIHdoaXRlV2lkdGggKiAyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IHRleHRMaW5lV2lkdGg7XG4gICAgICAgICAgY29udGV4dC5zdHJva2VTdHlsZSA9IHRleHRTdHJva2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGxpbmVXaWR0aCA9IDIgKiBlbGUucHN0eWxlKCd0ZXh0LW91dGxpbmUtd2lkdGgnKS5wZlZhbHVlOyAvLyAqMiBiL2MgdGhlIHN0cm9rZSBpcyBkcmF3biBjZW50cmVkIG9uIHRoZSBtaWRkbGVcblxuICAgICAgaWYgKGxpbmVXaWR0aCA+IDApIHtcbiAgICAgICAgY29udGV4dC5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGUucHN0eWxlKCd0ZXh0LXdyYXAnKS52YWx1ZSA9PT0gJ3dyYXAnKSB7XG4gICAgICAgIHZhciBsaW5lcyA9IGdldFByZWZpeGVkUHJvcGVydHkocnNjcmF0Y2gsICdsYWJlbFdyYXBDYWNoZWRMaW5lcycsIHByZWZpeCk7XG4gICAgICAgIHZhciBsaW5lSGVpZ2h0ID0gZ2V0UHJlZml4ZWRQcm9wZXJ0eShyc2NyYXRjaCwgJ2xhYmVsTGluZUhlaWdodCcsIHByZWZpeCk7XG4gICAgICAgIHZhciBoYWxmVGV4dFcgPSB0ZXh0VyAvIDI7XG4gICAgICAgIHZhciBqdXN0aWZpY2F0aW9uID0gdGhpcy5nZXRMYWJlbEp1c3RpZmljYXRpb24oZWxlKTtcblxuICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2F1dG8nKSA7IGVsc2UgaWYgKGhhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgLy8gYXV0byBqdXN0aWZpY2F0aW9uIDogcmlnaHRcbiAgICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0ZXh0WCArPSAtdGV4dFc7XG4gICAgICAgICAgfSBlbHNlIGlmIChqdXN0aWZpY2F0aW9uID09PSAnY2VudGVyJykge1xuICAgICAgICAgICAgdGV4dFggKz0gLWhhbGZUZXh0VztcbiAgICAgICAgICB9IC8vIGVsc2Ugc2FtZSBhcyBhdXRvXG5cbiAgICAgICAgfSBlbHNlIGlmIChoYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgLy8gYXV0byBqdXN0ZmljYXRpb24gOiBjZW50ZXJcbiAgICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0ZXh0WCArPSAtaGFsZlRleHRXO1xuICAgICAgICAgIH0gZWxzZSBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGV4dFggKz0gaGFsZlRleHRXO1xuICAgICAgICAgIH0gLy8gZWxzZSBzYW1lIGFzIGF1dG9cblxuICAgICAgICB9IGVsc2UgaWYgKGhhbGlnbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgIC8vIGF1dG8ganVzdGlmaWNhdGlvbiA6IGxlZnRcbiAgICAgICAgICBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgIHRleHRYICs9IGhhbGZUZXh0VztcbiAgICAgICAgICB9IGVsc2UgaWYgKGp1c3RpZmljYXRpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRleHRYICs9IHRleHRXO1xuICAgICAgICAgIH0gLy8gZWxzZSBzYW1lIGFzIGF1dG9cblxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh2YWxpZ24pIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgdGV4dFkgLT0gKGxpbmVzLmxlbmd0aCAtIDEpICogbGluZUhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgdGV4dFkgLT0gKGxpbmVzLmxlbmd0aCAtIDEpICogbGluZUhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBsaW5lcy5sZW5ndGg7IGwrKykge1xuICAgICAgICAgIGlmIChsaW5lV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQobGluZXNbbF0sIHRleHRYLCB0ZXh0WSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5maWxsVGV4dChsaW5lc1tsXSwgdGV4dFgsIHRleHRZKTtcbiAgICAgICAgICB0ZXh0WSArPSBsaW5lSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGluZVdpZHRoID4gMCkge1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlVGV4dCh0ZXh0LCB0ZXh0WCwgdGV4dFkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCB0ZXh0WCwgdGV4dFkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhldGEgIT09IDApIHtcbiAgICAgICAgY29udGV4dC5yb3RhdGUoLXRoZXRhKTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW9yZ1RleHRYLCAtb3JnVGV4dFkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKiBnbG9iYWwgUGF0aDJEICovXG4gIHZhciBDUnAkNSA9IHt9O1xuXG4gIENScCQ1LmRyYXdOb2RlID0gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICB2YXIgZHJhd0xhYmVsID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB0cnVlO1xuICAgIHZhciBzaG91bGREcmF3T3ZlcmxheSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdHJ1ZTtcbiAgICB2YXIgc2hvdWxkRHJhd09wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHRydWU7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBub2RlV2lkdGgsIG5vZGVIZWlnaHQ7XG4gICAgdmFyIF9wID0gbm9kZS5fcHJpdmF0ZTtcbiAgICB2YXIgcnMgPSBfcC5yc2NyYXRjaDtcbiAgICB2YXIgcG9zID0gbm9kZS5wb3NpdGlvbigpO1xuXG4gICAgaWYgKCFudW1iZXIkMShwb3MueCkgfHwgIW51bWJlciQxKHBvcy55KSkge1xuICAgICAgcmV0dXJuOyAvLyBjYW4ndCBkcmF3IG5vZGUgd2l0aCB1bmRlZmluZWQgcG9zaXRpb25cbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkRHJhd09wYWNpdHkgJiYgIW5vZGUudmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGVsZU9wYWNpdHkgPSBzaG91bGREcmF3T3BhY2l0eSA/IG5vZGUuZWZmZWN0aXZlT3BhY2l0eSgpIDogMTtcbiAgICB2YXIgdXNlUGF0aHMgPSByLnVzZVBhdGhzKCk7XG4gICAgdmFyIHBhdGg7XG4gICAgdmFyIHBhdGhDYWNoZUhpdCA9IGZhbHNlO1xuICAgIHZhciBwYWRkaW5nID0gbm9kZS5wYWRkaW5nKCk7XG4gICAgbm9kZVdpZHRoID0gbm9kZS53aWR0aCgpICsgMiAqIHBhZGRpbmc7XG4gICAgbm9kZUhlaWdodCA9IG5vZGUuaGVpZ2h0KCkgKyAyICogcGFkZGluZzsgLy9cbiAgICAvLyBzZXR1cCBzaGlmdFxuXG4gICAgdmFyIGJiO1xuXG4gICAgaWYgKHNoaWZ0VG9PcmlnaW5XaXRoQmIpIHtcbiAgICAgIGJiID0gc2hpZnRUb09yaWdpbldpdGhCYjtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1iYi54MSwgLWJiLnkxKTtcbiAgICB9IC8vXG4gICAgLy8gbG9hZCBiZyBpbWFnZVxuXG5cbiAgICB2YXIgYmdJbWdQcm9wID0gbm9kZS5wc3R5bGUoJ2JhY2tncm91bmQtaW1hZ2UnKTtcbiAgICB2YXIgdXJscyA9IGJnSW1nUHJvcC52YWx1ZTtcbiAgICB2YXIgdXJsRGVmaW5lZCA9IG5ldyBBcnJheSh1cmxzLmxlbmd0aCk7XG4gICAgdmFyIGltYWdlID0gbmV3IEFycmF5KHVybHMubGVuZ3RoKTtcbiAgICB2YXIgbnVtSW1hZ2VzID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJscy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHVybCA9IHVybHNbaV07XG4gICAgICB2YXIgZGVmZCA9IHVybERlZmluZWRbaV0gPSB1cmwgIT0gbnVsbCAmJiB1cmwgIT09ICdub25lJztcblxuICAgICAgaWYgKGRlZmQpIHtcbiAgICAgICAgdmFyIGJnSW1nQ3Jvc3NPcmlnaW4gPSBub2RlLmN5KCkuc3R5bGUoKS5nZXRJbmRleGVkU3R5bGUobm9kZSwgJ2JhY2tncm91bmQtaW1hZ2UtY3Jvc3NvcmlnaW4nLCAndmFsdWUnLCBpKTtcbiAgICAgICAgbnVtSW1hZ2VzKys7IC8vIGdldCBpbWFnZSwgYW5kIGlmIG5vdCBsb2FkZWQgdGhlbiBhc2sgdG8gcmVkcmF3IHdoZW4gbGF0ZXIgbG9hZGVkXG5cbiAgICAgICAgaW1hZ2VbaV0gPSByLmdldENhY2hlZEltYWdlKHVybCwgYmdJbWdDcm9zc09yaWdpbiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF9wLmJhY2tncm91bmRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIG5vZGUuZW1pdEFuZE5vdGlmeSgnYmFja2dyb3VuZCcpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IC8vXG4gICAgLy8gc2V0dXAgc3R5bGVzXG5cblxuICAgIHZhciBkYXJrbmVzcyA9IG5vZGUucHN0eWxlKCdiYWNrZ3JvdW5kLWJsYWNrZW4nKS52YWx1ZTtcbiAgICB2YXIgYm9yZGVyV2lkdGggPSBub2RlLnBzdHlsZSgnYm9yZGVyLXdpZHRoJykucGZWYWx1ZTtcbiAgICB2YXIgYmdPcGFjaXR5ID0gbm9kZS5wc3R5bGUoJ2JhY2tncm91bmQtb3BhY2l0eScpLnZhbHVlICogZWxlT3BhY2l0eTtcbiAgICB2YXIgYm9yZGVyQ29sb3IgPSBub2RlLnBzdHlsZSgnYm9yZGVyLWNvbG9yJykudmFsdWU7XG4gICAgdmFyIGJvcmRlclN0eWxlID0gbm9kZS5wc3R5bGUoJ2JvcmRlci1zdHlsZScpLnZhbHVlO1xuICAgIHZhciBib3JkZXJPcGFjaXR5ID0gbm9kZS5wc3R5bGUoJ2JvcmRlci1vcGFjaXR5JykudmFsdWUgKiBlbGVPcGFjaXR5O1xuICAgIGNvbnRleHQubGluZUpvaW4gPSAnbWl0ZXInOyAvLyBzbyBib3JkZXJzIGFyZSBzcXVhcmUgd2l0aCB0aGUgbm9kZSBzaGFwZVxuXG4gICAgdmFyIHNldHVwU2hhcGVDb2xvciA9IGZ1bmN0aW9uIHNldHVwU2hhcGVDb2xvcigpIHtcbiAgICAgIHZhciBiZ09weSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogYmdPcGFjaXR5O1xuICAgICAgci5lbGVGaWxsU3R5bGUoY29udGV4dCwgbm9kZSwgYmdPcHkpO1xuICAgIH07XG5cbiAgICB2YXIgc2V0dXBCb3JkZXJDb2xvciA9IGZ1bmN0aW9uIHNldHVwQm9yZGVyQ29sb3IoKSB7XG4gICAgICB2YXIgYmRyT3B5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBib3JkZXJPcGFjaXR5O1xuICAgICAgci5jb2xvclN0cm9rZVN0eWxlKGNvbnRleHQsIGJvcmRlckNvbG9yWzBdLCBib3JkZXJDb2xvclsxXSwgYm9yZGVyQ29sb3JbMl0sIGJkck9weSk7XG4gICAgfTsgLy9cbiAgICAvLyBzZXR1cCBzaGFwZVxuXG5cbiAgICB2YXIgc3R5bGVTaGFwZSA9IG5vZGUucHN0eWxlKCdzaGFwZScpLnN0clZhbHVlO1xuICAgIHZhciBzaGFwZVB0cyA9IG5vZGUucHN0eWxlKCdzaGFwZS1wb2x5Z29uLXBvaW50cycpLnBmVmFsdWU7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKHBvcy54LCBwb3MueSk7XG4gICAgICB2YXIgcGF0aENhY2hlID0gci5ub2RlUGF0aENhY2hlID0gci5ub2RlUGF0aENhY2hlIHx8IFtdO1xuICAgICAgdmFyIGtleSA9IGhhc2hTdHJpbmdzKHN0eWxlU2hhcGUgPT09ICdwb2x5Z29uJyA/IHN0eWxlU2hhcGUgKyAnLCcgKyBzaGFwZVB0cy5qb2luKCcsJykgOiBzdHlsZVNoYXBlLCAnJyArIG5vZGVIZWlnaHQsICcnICsgbm9kZVdpZHRoKTtcbiAgICAgIHZhciBjYWNoZWRQYXRoID0gcGF0aENhY2hlW2tleV07XG5cbiAgICAgIGlmIChjYWNoZWRQYXRoICE9IG51bGwpIHtcbiAgICAgICAgcGF0aCA9IGNhY2hlZFBhdGg7XG4gICAgICAgIHBhdGhDYWNoZUhpdCA9IHRydWU7XG4gICAgICAgIHJzLnBhdGhDYWNoZSA9IHBhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRoID0gbmV3IFBhdGgyRCgpO1xuICAgICAgICBwYXRoQ2FjaGVba2V5XSA9IHJzLnBhdGhDYWNoZSA9IHBhdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRyYXdTaGFwZSA9IGZ1bmN0aW9uIGRyYXdTaGFwZSgpIHtcbiAgICAgIGlmICghcGF0aENhY2hlSGl0KSB7XG4gICAgICAgIHZhciBucG9zID0gcG9zO1xuXG4gICAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICAgIG5wb3MgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByLm5vZGVTaGFwZXNbci5nZXROb2RlU2hhcGUobm9kZSldLmRyYXcocGF0aCB8fCBjb250ZXh0LCBucG9zLngsIG5wb3MueSwgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgIGNvbnRleHQuZmlsbChwYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZHJhd0ltYWdlcyA9IGZ1bmN0aW9uIGRyYXdJbWFnZXMoKSB7XG4gICAgICB2YXIgbm9kZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVsZU9wYWNpdHk7XG4gICAgICB2YXIgaW5zaWRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB0cnVlO1xuICAgICAgdmFyIHByZXZCZ2luZyA9IF9wLmJhY2tncm91bmRpbmc7XG4gICAgICB2YXIgdG90YWxDb21wbGV0ZWQgPSAwO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgaW1hZ2UubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBiZ0NvbnRhaW5tZW50ID0gbm9kZS5jeSgpLnN0eWxlKCkuZ2V0SW5kZXhlZFN0eWxlKG5vZGUsICdiYWNrZ3JvdW5kLWltYWdlLWNvbnRhaW5tZW50JywgJ3ZhbHVlJywgX2kpO1xuXG4gICAgICAgIGlmIChpbnNpZGUgJiYgYmdDb250YWlubWVudCA9PT0gJ292ZXInIHx8ICFpbnNpZGUgJiYgYmdDb250YWlubWVudCA9PT0gJ2luc2lkZScpIHtcbiAgICAgICAgICB0b3RhbENvbXBsZXRlZCsrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVybERlZmluZWRbX2ldICYmIGltYWdlW19pXS5jb21wbGV0ZSAmJiAhaW1hZ2VbX2ldLmVycm9yKSB7XG4gICAgICAgICAgdG90YWxDb21wbGV0ZWQrKztcbiAgICAgICAgICByLmRyYXdJbnNjcmliZWRJbWFnZShjb250ZXh0LCBpbWFnZVtfaV0sIG5vZGUsIF9pLCBub2RlT3BhY2l0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgX3AuYmFja2dyb3VuZGluZyA9ICEodG90YWxDb21wbGV0ZWQgPT09IG51bUltYWdlcyk7XG5cbiAgICAgIGlmIChwcmV2QmdpbmcgIT09IF9wLmJhY2tncm91bmRpbmcpIHtcbiAgICAgICAgLy8gdXBkYXRlIHN0eWxlIGIvYyA6YmFja2dyb3VuZGluZyBzdGF0ZSBjaGFuZ2VkXG4gICAgICAgIG5vZGUudXBkYXRlU3R5bGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZHJhd1BpZSA9IGZ1bmN0aW9uIGRyYXdQaWUoKSB7XG4gICAgICB2YXIgcmVkcmF3U2hhcGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZhbHNlO1xuICAgICAgdmFyIHBpZU9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGVsZU9wYWNpdHk7XG5cbiAgICAgIGlmIChyLmhhc1BpZShub2RlKSkge1xuICAgICAgICByLmRyYXdQaWUoY29udGV4dCwgbm9kZSwgcGllT3BhY2l0eSk7IC8vIHJlZHJhdy9yZXN0b3JlIHBhdGggaWYgc3RlcHMgYWZ0ZXIgcGllIG5lZWQgaXRcblxuICAgICAgICBpZiAocmVkcmF3U2hhcGUpIHtcbiAgICAgICAgICBpZiAoIXVzZVBhdGhzKSB7XG4gICAgICAgICAgICByLm5vZGVTaGFwZXNbci5nZXROb2RlU2hhcGUobm9kZSldLmRyYXcoY29udGV4dCwgcG9zLngsIHBvcy55LCBub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZGFya2VuID0gZnVuY3Rpb24gZGFya2VuKCkge1xuICAgICAgdmFyIGRhcmtlbk9wYWNpdHkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGVsZU9wYWNpdHk7XG4gICAgICB2YXIgb3BhY2l0eSA9IChkYXJrbmVzcyA+IDAgPyBkYXJrbmVzcyA6IC1kYXJrbmVzcykgKiBkYXJrZW5PcGFjaXR5O1xuICAgICAgdmFyIGMgPSBkYXJrbmVzcyA+IDAgPyAwIDogMjU1O1xuXG4gICAgICBpZiAoZGFya25lc3MgIT09IDApIHtcbiAgICAgICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjLCBjLCBjLCBvcGFjaXR5KTtcblxuICAgICAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgICAgICBjb250ZXh0LmZpbGwocGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGRyYXdCb3JkZXIgPSBmdW5jdGlvbiBkcmF3Qm9yZGVyKCkge1xuICAgICAgaWYgKGJvcmRlcldpZHRoID4gMCkge1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoO1xuICAgICAgICBjb250ZXh0LmxpbmVDYXAgPSAnYnV0dCc7XG5cbiAgICAgICAgaWYgKGNvbnRleHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAvLyBmb3IgdmVyeSBvdXRvZmRhdGUgYnJvd3NlcnNcbiAgICAgICAgICBzd2l0Y2ggKGJvcmRlclN0eWxlKSB7XG4gICAgICAgICAgICBjYXNlICdkb3R0ZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFsxLCAxXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFs0LCAyXSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdzb2xpZCc6XG4gICAgICAgICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICAgICAgY29udGV4dC5zdHJva2UocGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChib3JkZXJTdHlsZSA9PT0gJ2RvdWJsZScpIHtcbiAgICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoIC8gMztcbiAgICAgICAgICB2YXIgZ2NvID0gY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcblxuICAgICAgICAgIGlmICh1c2VQYXRocykge1xuICAgICAgICAgICAgY29udGV4dC5zdHJva2UocGF0aCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBnY287XG4gICAgICAgIH0gLy8gcmVzZXQgaW4gY2FzZSB3ZSBjaGFuZ2VkIHRoZSBib3JkZXIgc3R5bGVcblxuXG4gICAgICAgIGlmIChjb250ZXh0LnNldExpbmVEYXNoKSB7XG4gICAgICAgICAgLy8gZm9yIHZlcnkgb3V0b2ZkYXRlIGJyb3dzZXJzXG4gICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIGRyYXdPdmVybGF5ID0gZnVuY3Rpb24gZHJhd092ZXJsYXkoKSB7XG4gICAgICBpZiAoc2hvdWxkRHJhd092ZXJsYXkpIHtcbiAgICAgICAgci5kcmF3Tm9kZU92ZXJsYXkoY29udGV4dCwgbm9kZSwgcG9zLCBub2RlV2lkdGgsIG5vZGVIZWlnaHQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgZHJhd1VuZGVybGF5ID0gZnVuY3Rpb24gZHJhd1VuZGVybGF5KCkge1xuICAgICAgaWYgKHNob3VsZERyYXdPdmVybGF5KSB7XG4gICAgICAgIHIuZHJhd05vZGVVbmRlcmxheShjb250ZXh0LCBub2RlLCBwb3MsIG5vZGVXaWR0aCwgbm9kZUhlaWdodCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciBkcmF3VGV4dCA9IGZ1bmN0aW9uIGRyYXdUZXh0KCkge1xuICAgICAgci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgbm9kZSwgbnVsbCwgZHJhd0xhYmVsKTtcbiAgICB9O1xuXG4gICAgdmFyIGdob3N0ID0gbm9kZS5wc3R5bGUoJ2dob3N0JykudmFsdWUgPT09ICd5ZXMnO1xuXG4gICAgaWYgKGdob3N0KSB7XG4gICAgICB2YXIgZ3ggPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb2Zmc2V0LXgnKS5wZlZhbHVlO1xuICAgICAgdmFyIGd5ID0gbm9kZS5wc3R5bGUoJ2dob3N0LW9mZnNldC15JykucGZWYWx1ZTtcbiAgICAgIHZhciBnaG9zdE9wYWNpdHkgPSBub2RlLnBzdHlsZSgnZ2hvc3Qtb3BhY2l0eScpLnZhbHVlO1xuICAgICAgdmFyIGVmZkdob3N0T3BhY2l0eSA9IGdob3N0T3BhY2l0eSAqIGVsZU9wYWNpdHk7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShneCwgZ3kpO1xuICAgICAgc2V0dXBTaGFwZUNvbG9yKGdob3N0T3BhY2l0eSAqIGJnT3BhY2l0eSk7XG4gICAgICBkcmF3U2hhcGUoKTtcbiAgICAgIGRyYXdJbWFnZXMoZWZmR2hvc3RPcGFjaXR5LCB0cnVlKTtcbiAgICAgIHNldHVwQm9yZGVyQ29sb3IoZ2hvc3RPcGFjaXR5ICogYm9yZGVyT3BhY2l0eSk7XG4gICAgICBkcmF3Qm9yZGVyKCk7XG4gICAgICBkcmF3UGllKGRhcmtuZXNzICE9PSAwIHx8IGJvcmRlcldpZHRoICE9PSAwKTtcbiAgICAgIGRyYXdJbWFnZXMoZWZmR2hvc3RPcGFjaXR5LCBmYWxzZSk7XG4gICAgICBkYXJrZW4oZWZmR2hvc3RPcGFjaXR5KTtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1neCwgLWd5KTtcbiAgICB9XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1wb3MueCwgLXBvcy55KTtcbiAgICB9XG5cbiAgICBkcmF3VW5kZXJsYXkoKTtcblxuICAgIGlmICh1c2VQYXRocykge1xuICAgICAgY29udGV4dC50cmFuc2xhdGUocG9zLngsIHBvcy55KTtcbiAgICB9XG5cbiAgICBzZXR1cFNoYXBlQ29sb3IoKTtcbiAgICBkcmF3U2hhcGUoKTtcbiAgICBkcmF3SW1hZ2VzKGVsZU9wYWNpdHksIHRydWUpO1xuICAgIHNldHVwQm9yZGVyQ29sb3IoKTtcbiAgICBkcmF3Qm9yZGVyKCk7XG4gICAgZHJhd1BpZShkYXJrbmVzcyAhPT0gMCB8fCBib3JkZXJXaWR0aCAhPT0gMCk7XG4gICAgZHJhd0ltYWdlcyhlbGVPcGFjaXR5LCBmYWxzZSk7XG4gICAgZGFya2VuKCk7XG5cbiAgICBpZiAodXNlUGF0aHMpIHtcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1wb3MueCwgLXBvcy55KTtcbiAgICB9XG5cbiAgICBkcmF3VGV4dCgpO1xuICAgIGRyYXdPdmVybGF5KCk7IC8vXG4gICAgLy8gY2xlYW4gdXAgc2hpZnRcblxuICAgIGlmIChzaGlmdFRvT3JpZ2luV2l0aEJiKSB7XG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZShiYi54MSwgYmIueTEpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgZHJhd05vZGVPdmVybGF5VW5kZXJsYXkgPSBmdW5jdGlvbiBkcmF3Tm9kZU92ZXJsYXlVbmRlcmxheShvdmVybGF5T3JVbmRlcmxheSkge1xuICAgIGlmICghWydvdmVybGF5JywgJ3VuZGVybGF5J10uaW5jbHVkZXMob3ZlcmxheU9yVW5kZXJsYXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RhdGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQsIG5vZGUsIHBvcywgbm9kZVdpZHRoLCBub2RlSGVpZ2h0KSB7XG4gICAgICB2YXIgciA9IHRoaXM7XG5cbiAgICAgIGlmICghbm9kZS52aXNpYmxlKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgcGFkZGluZyA9IG5vZGUucHN0eWxlKFwiXCIuY29uY2F0KG92ZXJsYXlPclVuZGVybGF5LCBcIi1wYWRkaW5nXCIpKS5wZlZhbHVlO1xuICAgICAgdmFyIG9wYWNpdHkgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItb3BhY2l0eVwiKSkudmFsdWU7XG4gICAgICB2YXIgY29sb3IgPSBub2RlLnBzdHlsZShcIlwiLmNvbmNhdChvdmVybGF5T3JVbmRlcmxheSwgXCItY29sb3JcIikpLnZhbHVlO1xuICAgICAgdmFyIHNoYXBlID0gbm9kZS5wc3R5bGUoXCJcIi5jb25jYXQob3ZlcmxheU9yVW5kZXJsYXksIFwiLXNoYXBlXCIpKS52YWx1ZTtcblxuICAgICAgaWYgKG9wYWNpdHkgPiAwKSB7XG4gICAgICAgIHBvcyA9IHBvcyB8fCBub2RlLnBvc2l0aW9uKCk7XG5cbiAgICAgICAgaWYgKG5vZGVXaWR0aCA9PSBudWxsIHx8IG5vZGVIZWlnaHQgPT0gbnVsbCkge1xuICAgICAgICAgIHZhciBfcGFkZGluZyA9IG5vZGUucGFkZGluZygpO1xuXG4gICAgICAgICAgbm9kZVdpZHRoID0gbm9kZS53aWR0aCgpICsgMiAqIF9wYWRkaW5nO1xuICAgICAgICAgIG5vZGVIZWlnaHQgPSBub2RlLmhlaWdodCgpICsgMiAqIF9wYWRkaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgci5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICAgICAgci5ub2RlU2hhcGVzW3NoYXBlXS5kcmF3KGNvbnRleHQsIHBvcy54LCBwb3MueSwgbm9kZVdpZHRoICsgcGFkZGluZyAqIDIsIG5vZGVIZWlnaHQgKyBwYWRkaW5nICogMik7XG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgQ1JwJDUuZHJhd05vZGVPdmVybGF5ID0gZHJhd05vZGVPdmVybGF5VW5kZXJsYXkoJ292ZXJsYXknKTtcbiAgQ1JwJDUuZHJhd05vZGVVbmRlcmxheSA9IGRyYXdOb2RlT3ZlcmxheVVuZGVybGF5KCd1bmRlcmxheScpOyAvLyBkb2VzIHRoZSBub2RlIGhhdmUgYXQgbGVhc3Qgb25lIHBpZSBwaWVjZT9cblxuICBDUnAkNS5oYXNQaWUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIG5vZGUgPSBub2RlWzBdOyAvLyBlbnN1cmUgZWxlIHJlZlxuXG4gICAgcmV0dXJuIG5vZGUuX3ByaXZhdGUuaGFzUGllO1xuICB9O1xuXG4gIENScCQ1LmRyYXdQaWUgPSBmdW5jdGlvbiAoY29udGV4dCwgbm9kZSwgbm9kZU9wYWNpdHksIHBvcykge1xuICAgIG5vZGUgPSBub2RlWzBdOyAvLyBlbnN1cmUgZWxlIHJlZlxuXG4gICAgcG9zID0gcG9zIHx8IG5vZGUucG9zaXRpb24oKTtcbiAgICB2YXIgY3lTdHlsZSA9IG5vZGUuY3koKS5zdHlsZSgpO1xuICAgIHZhciBwaWVTaXplID0gbm9kZS5wc3R5bGUoJ3BpZS1zaXplJyk7XG4gICAgdmFyIHggPSBwb3MueDtcbiAgICB2YXIgeSA9IHBvcy55O1xuICAgIHZhciBub2RlVyA9IG5vZGUud2lkdGgoKTtcbiAgICB2YXIgbm9kZUggPSBub2RlLmhlaWdodCgpO1xuICAgIHZhciByYWRpdXMgPSBNYXRoLm1pbihub2RlVywgbm9kZUgpIC8gMjsgLy8gbXVzdCBmaXQgaW4gbm9kZVxuXG4gICAgdmFyIGxhc3RQZXJjZW50ID0gMDsgLy8gd2hhdCAlIHRvIGNvbnRpbnVlIGRyYXdpbmcgcGllIHNsaWNlcyBmcm9tIG9uIFswLCAxXVxuXG4gICAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuXG4gICAgaWYgKHVzZVBhdGhzKSB7XG4gICAgICB4ID0gMDtcbiAgICAgIHkgPSAwO1xuICAgIH1cblxuICAgIGlmIChwaWVTaXplLnVuaXRzID09PSAnJScpIHtcbiAgICAgIHJhZGl1cyA9IHJhZGl1cyAqIHBpZVNpemUucGZWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKHBpZVNpemUucGZWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByYWRpdXMgPSBwaWVTaXplLnBmVmFsdWUgLyAyO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IGN5U3R5bGUucGllQmFja2dyb3VuZE47IGkrKykge1xuICAgICAgLy8gMS4uTlxuICAgICAgdmFyIHNpemUgPSBub2RlLnBzdHlsZSgncGllLScgKyBpICsgJy1iYWNrZ3JvdW5kLXNpemUnKS52YWx1ZTtcbiAgICAgIHZhciBjb2xvciA9IG5vZGUucHN0eWxlKCdwaWUtJyArIGkgKyAnLWJhY2tncm91bmQtY29sb3InKS52YWx1ZTtcbiAgICAgIHZhciBvcGFjaXR5ID0gbm9kZS5wc3R5bGUoJ3BpZS0nICsgaSArICctYmFja2dyb3VuZC1vcGFjaXR5JykudmFsdWUgKiBub2RlT3BhY2l0eTtcbiAgICAgIHZhciBwZXJjZW50ID0gc2l6ZSAvIDEwMDsgLy8gbWFwIGludGVnZXIgcmFuZ2UgWzAsIDEwMF0gdG8gWzAsIDFdXG4gICAgICAvLyBwZXJjZW50IGNhbid0IHB1c2ggYmV5b25kIDFcblxuICAgICAgaWYgKHBlcmNlbnQgKyBsYXN0UGVyY2VudCA+IDEpIHtcbiAgICAgICAgcGVyY2VudCA9IDEgLSBsYXN0UGVyY2VudDtcbiAgICAgIH1cblxuICAgICAgdmFyIGFuZ2xlU3RhcnQgPSAxLjUgKiBNYXRoLlBJICsgMiAqIE1hdGguUEkgKiBsYXN0UGVyY2VudDsgLy8gc3RhcnQgYXQgMTIgbydjbG9jayBhbmQgZ28gY2xvY2t3aXNlXG5cbiAgICAgIHZhciBhbmdsZURlbHRhID0gMiAqIE1hdGguUEkgKiBwZXJjZW50O1xuICAgICAgdmFyIGFuZ2xlRW5kID0gYW5nbGVTdGFydCArIGFuZ2xlRGVsdGE7IC8vIGlnbm9yZSBpZlxuICAgICAgLy8gLSB6ZXJvIHNpemVcbiAgICAgIC8vIC0gd2UncmUgYWxyZWFkeSBiZXlvbmQgdGhlIGZ1bGwgY2lyY2xlXG4gICAgICAvLyAtIGFkZGluZyB0aGUgY3VycmVudCBzbGljZSB3b3VsZCBnbyBiZXlvbmQgdGhlIGZ1bGwgY2lyY2xlXG5cbiAgICAgIGlmIChzaXplID09PSAwIHx8IGxhc3RQZXJjZW50ID49IDEgfHwgbGFzdFBlcmNlbnQgKyBwZXJjZW50ID4gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICAgIGNvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgICAgY29udGV4dC5hcmMoeCwgeSwgcmFkaXVzLCBhbmdsZVN0YXJ0LCBhbmdsZUVuZCk7XG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgdGhpcy5jb2xvckZpbGxTdHlsZShjb250ZXh0LCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBvcGFjaXR5KTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgbGFzdFBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICB9XG4gIH07XG5cbiAgdmFyIENScCQ0ID0ge307XG4gIHZhciBtb3Rpb25CbHVyRGVsYXkgPSAxMDA7IC8vIHZhciBpc0ZpcmVmb3ggPSB0eXBlb2YgSW5zdGFsbFRyaWdnZXIgIT09ICd1bmRlZmluZWQnO1xuXG4gIENScCQ0LmdldFBpeGVsUmF0aW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvbnRleHQgPSB0aGlzLmRhdGEuY29udGV4dHNbMF07XG5cbiAgICBpZiAodGhpcy5mb3JjZWRQaXhlbFJhdGlvICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcmNlZFBpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgdmFyIGJhY2tpbmdTdG9yZSA9IGNvbnRleHQuYmFja2luZ1N0b3JlUGl4ZWxSYXRpbyB8fCBjb250ZXh0LndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IGNvbnRleHQub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHwgY29udGV4dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7XG4gICAgcmV0dXJuICh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSAvIGJhY2tpbmdTdG9yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICB9O1xuXG4gIENScCQ0LnBhaW50Q2FjaGUgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjYWNoZXMgPSB0aGlzLnBhaW50Q2FjaGVzID0gdGhpcy5wYWludENhY2hlcyB8fCBbXTtcbiAgICB2YXIgbmVlZFRvQ3JlYXRlQ2FjaGUgPSB0cnVlO1xuICAgIHZhciBjYWNoZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYWNoZSA9IGNhY2hlc1tpXTtcblxuICAgICAgaWYgKGNhY2hlLmNvbnRleHQgPT09IGNvbnRleHQpIHtcbiAgICAgICAgbmVlZFRvQ3JlYXRlQ2FjaGUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5lZWRUb0NyZWF0ZUNhY2hlKSB7XG4gICAgICBjYWNoZSA9IHtcbiAgICAgICAgY29udGV4dDogY29udGV4dFxuICAgICAgfTtcbiAgICAgIGNhY2hlcy5wdXNoKGNhY2hlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGU7XG4gIH07XG5cbiAgQ1JwJDQuY3JlYXRlR3JhZGllbnRTdHlsZUZvciA9IGZ1bmN0aW9uIChjb250ZXh0LCBzaGFwZVN0eWxlTmFtZSwgZWxlLCBmaWxsLCBvcGFjaXR5KSB7XG4gICAgdmFyIGdyYWRpZW50U3R5bGU7XG4gICAgdmFyIHVzZVBhdGhzID0gdGhpcy51c2VQYXRocygpO1xuICAgIHZhciBjb2xvcnMgPSBlbGUucHN0eWxlKHNoYXBlU3R5bGVOYW1lICsgJy1ncmFkaWVudC1zdG9wLWNvbG9ycycpLnZhbHVlLFxuICAgICAgICBwb3NpdGlvbnMgPSBlbGUucHN0eWxlKHNoYXBlU3R5bGVOYW1lICsgJy1ncmFkaWVudC1zdG9wLXBvc2l0aW9ucycpLnBmVmFsdWU7XG5cbiAgICBpZiAoZmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICAgIGlmIChlbGUuaXNFZGdlKCkpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gZWxlLnNvdXJjZUVuZHBvaW50KCksXG4gICAgICAgICAgICBlbmQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKSxcbiAgICAgICAgICAgIG1pZCA9IGVsZS5taWRwb2ludCgpO1xuICAgICAgICB2YXIgZDEgPSBkaXN0KHN0YXJ0LCBtaWQpO1xuICAgICAgICB2YXIgZDIgPSBkaXN0KGVuZCwgbWlkKTtcbiAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQobWlkLngsIG1pZC55LCAwLCBtaWQueCwgbWlkLnksIE1hdGgubWF4KGQxLCBkMikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHBvcyA9IHVzZVBhdGhzID8ge1xuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMFxuICAgICAgICB9IDogZWxlLnBvc2l0aW9uKCksXG4gICAgICAgICAgICB3aWR0aCA9IGVsZS5wYWRkZWRXaWR0aCgpLFxuICAgICAgICAgICAgaGVpZ2h0ID0gZWxlLnBhZGRlZEhlaWdodCgpO1xuICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChwb3MueCwgcG9zLnksIDAsIHBvcy54LCBwb3MueSwgTWF0aC5tYXgod2lkdGgsIGhlaWdodCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZWxlLmlzRWRnZSgpKSB7XG4gICAgICAgIHZhciBfc3RhcnQgPSBlbGUuc291cmNlRW5kcG9pbnQoKSxcbiAgICAgICAgICAgIF9lbmQgPSBlbGUudGFyZ2V0RW5kcG9pbnQoKTtcblxuICAgICAgICBncmFkaWVudFN0eWxlID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChfc3RhcnQueCwgX3N0YXJ0LnksIF9lbmQueCwgX2VuZC55KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfcG9zID0gdXNlUGF0aHMgPyB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH0gOiBlbGUucG9zaXRpb24oKSxcbiAgICAgICAgICAgIF93aWR0aCA9IGVsZS5wYWRkZWRXaWR0aCgpLFxuICAgICAgICAgICAgX2hlaWdodCA9IGVsZS5wYWRkZWRIZWlnaHQoKSxcbiAgICAgICAgICAgIGhhbGZXaWR0aCA9IF93aWR0aCAvIDIsXG4gICAgICAgICAgICBoYWxmSGVpZ2h0ID0gX2hlaWdodCAvIDI7XG5cbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGVsZS5wc3R5bGUoJ2JhY2tncm91bmQtZ3JhZGllbnQtZGlyZWN0aW9uJykudmFsdWU7XG5cbiAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgICBjYXNlICd0by1ib3R0b20nOlxuICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54LCBfcG9zLnkgLSBoYWxmSGVpZ2h0LCBfcG9zLngsIF9wb3MueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0by10b3AnOlxuICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54LCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLngsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0by1sZWZ0JzpcbiAgICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCArIGhhbGZXaWR0aCwgX3Bvcy55LCBfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3RvLXJpZ2h0JzpcbiAgICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCAtIGhhbGZXaWR0aCwgX3Bvcy55LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ3RvLWJvdHRvbS1yaWdodCc6XG4gICAgICAgICAgY2FzZSAndG8tcmlnaHQtYm90dG9tJzpcbiAgICAgICAgICAgIGdyYWRpZW50U3R5bGUgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KF9wb3MueCAtIGhhbGZXaWR0aCwgX3Bvcy55IC0gaGFsZkhlaWdodCwgX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAndG8tdG9wLXJpZ2h0JzpcbiAgICAgICAgICBjYXNlICd0by1yaWdodC10b3AnOlxuICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54IC0gaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLnggKyBoYWxmV2lkdGgsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0by1ib3R0b20tbGVmdCc6XG4gICAgICAgICAgY2FzZSAndG8tbGVmdC1ib3R0b20nOlxuICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkgLSBoYWxmSGVpZ2h0LCBfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSArIGhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd0by10b3AtbGVmdCc6XG4gICAgICAgICAgY2FzZSAndG8tbGVmdC10b3AnOlxuICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoX3Bvcy54ICsgaGFsZldpZHRoLCBfcG9zLnkgKyBoYWxmSGVpZ2h0LCBfcG9zLnggLSBoYWxmV2lkdGgsIF9wb3MueSAtIGhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBpbnZhbGlkIGdyYWRpZW50IHN0eWxlXG5cbiAgICB2YXIgaGFzUG9zaXRpb25zID0gcG9zaXRpb25zLmxlbmd0aCA9PT0gY29sb3JzLmxlbmd0aDtcbiAgICB2YXIgbGVuZ3RoID0gY29sb3JzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGdyYWRpZW50U3R5bGUuYWRkQ29sb3JTdG9wKGhhc1Bvc2l0aW9ucyA/IHBvc2l0aW9uc1tpXSA6IGkgLyAobGVuZ3RoIC0gMSksICdyZ2JhKCcgKyBjb2xvcnNbaV1bMF0gKyAnLCcgKyBjb2xvcnNbaV1bMV0gKyAnLCcgKyBjb2xvcnNbaV1bMl0gKyAnLCcgKyBvcGFjaXR5ICsgJyknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JhZGllbnRTdHlsZTtcbiAgfTtcblxuICBDUnAkNC5ncmFkaWVudEZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIGZpbGwsIG9wYWNpdHkpIHtcbiAgICB2YXIgZ3JhZGllbnRTdHlsZSA9IHRoaXMuY3JlYXRlR3JhZGllbnRTdHlsZUZvcihjb250ZXh0LCAnYmFja2dyb3VuZCcsIGVsZSwgZmlsbCwgb3BhY2l0eSk7XG4gICAgaWYgKCFncmFkaWVudFN0eWxlKSByZXR1cm4gbnVsbDsgLy8gZXJyb3JcblxuICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZ3JhZGllbnRTdHlsZTtcbiAgfTtcblxuICBDUnAkNC5jb2xvckZpbGxTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCByLCBnLCBiLCBhKSB7XG4gICAgY29udGV4dC5maWxsU3R5bGUgPSAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgYSArICcpJzsgLy8gdHVybiBvZmYgZm9yIG5vdywgc2VlbXMgY29udGV4dCBkb2VzIGl0cyBvd24gY2FjaGluZ1xuICAgIC8vIHZhciBjYWNoZSA9IHRoaXMucGFpbnRDYWNoZShjb250ZXh0KTtcbiAgICAvLyB2YXIgZmlsbFN0eWxlID0gJ3JnYmEoJyArIHIgKyAnLCcgKyBnICsgJywnICsgYiArICcsJyArIGEgKyAnKSc7XG4gICAgLy8gaWYoIGNhY2hlLmZpbGxTdHlsZSAhPT0gZmlsbFN0eWxlICl7XG4gICAgLy8gICBjb250ZXh0LmZpbGxTdHlsZSA9IGNhY2hlLmZpbGxTdHlsZSA9IGZpbGxTdHlsZTtcbiAgICAvLyB9XG4gIH07XG5cbiAgQ1JwJDQuZWxlRmlsbFN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgb3BhY2l0eSkge1xuICAgIHZhciBiYWNrZ3JvdW5kRmlsbCA9IGVsZS5wc3R5bGUoJ2JhY2tncm91bmQtZmlsbCcpLnZhbHVlO1xuXG4gICAgaWYgKGJhY2tncm91bmRGaWxsID09PSAnbGluZWFyLWdyYWRpZW50JyB8fCBiYWNrZ3JvdW5kRmlsbCA9PT0gJ3JhZGlhbC1ncmFkaWVudCcpIHtcbiAgICAgIHRoaXMuZ3JhZGllbnRGaWxsU3R5bGUoY29udGV4dCwgZWxlLCBiYWNrZ3JvdW5kRmlsbCwgb3BhY2l0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBiYWNrZ3JvdW5kQ29sb3IgPSBlbGUucHN0eWxlKCdiYWNrZ3JvdW5kLWNvbG9yJykudmFsdWU7XG4gICAgICB0aGlzLmNvbG9yRmlsbFN0eWxlKGNvbnRleHQsIGJhY2tncm91bmRDb2xvclswXSwgYmFja2dyb3VuZENvbG9yWzFdLCBiYWNrZ3JvdW5kQ29sb3JbMl0sIG9wYWNpdHkpO1xuICAgIH1cbiAgfTtcblxuICBDUnAkNC5ncmFkaWVudFN0cm9rZVN0eWxlID0gZnVuY3Rpb24gKGNvbnRleHQsIGVsZSwgZmlsbCwgb3BhY2l0eSkge1xuICAgIHZhciBncmFkaWVudFN0eWxlID0gdGhpcy5jcmVhdGVHcmFkaWVudFN0eWxlRm9yKGNvbnRleHQsICdsaW5lJywgZWxlLCBmaWxsLCBvcGFjaXR5KTtcbiAgICBpZiAoIWdyYWRpZW50U3R5bGUpIHJldHVybiBudWxsOyAvLyBlcnJvclxuXG4gICAgY29udGV4dC5zdHJva2VTdHlsZSA9IGdyYWRpZW50U3R5bGU7XG4gIH07XG5cbiAgQ1JwJDQuY29sb3JTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCByLCBnLCBiLCBhKSB7XG4gICAgY29udGV4dC5zdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnLCcgKyBhICsgJyknOyAvLyB0dXJuIG9mZiBmb3Igbm93LCBzZWVtcyBjb250ZXh0IGRvZXMgaXRzIG93biBjYWNoaW5nXG4gICAgLy8gdmFyIGNhY2hlID0gdGhpcy5wYWludENhY2hlKGNvbnRleHQpO1xuICAgIC8vIHZhciBzdHJva2VTdHlsZSA9ICdyZ2JhKCcgKyByICsgJywnICsgZyArICcsJyArIGIgKyAnLCcgKyBhICsgJyknO1xuICAgIC8vIGlmKCBjYWNoZS5zdHJva2VTdHlsZSAhPT0gc3Ryb2tlU3R5bGUgKXtcbiAgICAvLyAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjYWNoZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlO1xuICAgIC8vIH1cbiAgfTtcblxuICBDUnAkNC5lbGVTdHJva2VTdHlsZSA9IGZ1bmN0aW9uIChjb250ZXh0LCBlbGUsIG9wYWNpdHkpIHtcbiAgICB2YXIgbGluZUZpbGwgPSBlbGUucHN0eWxlKCdsaW5lLWZpbGwnKS52YWx1ZTtcblxuICAgIGlmIChsaW5lRmlsbCA9PT0gJ2xpbmVhci1ncmFkaWVudCcgfHwgbGluZUZpbGwgPT09ICdyYWRpYWwtZ3JhZGllbnQnKSB7XG4gICAgICB0aGlzLmdyYWRpZW50U3Ryb2tlU3R5bGUoY29udGV4dCwgZWxlLCBsaW5lRmlsbCwgb3BhY2l0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsaW5lQ29sb3IgPSBlbGUucHN0eWxlKCdsaW5lLWNvbG9yJykudmFsdWU7XG4gICAgICB0aGlzLmNvbG9yU3Ryb2tlU3R5bGUoY29udGV4dCwgbGluZUNvbG9yWzBdLCBsaW5lQ29sb3JbMV0sIGxpbmVDb2xvclsyXSwgb3BhY2l0eSk7XG4gICAgfVxuICB9OyAvLyBSZXNpemUgY2FudmFzXG5cblxuICBDUnAkNC5tYXRjaENhbnZhc1NpemUgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBkYXRhID0gci5kYXRhO1xuICAgIHZhciBiYiA9IHIuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgIHZhciB3aWR0aCA9IGJiWzJdO1xuICAgIHZhciBoZWlnaHQgPSBiYlszXTtcbiAgICB2YXIgcGl4ZWxSYXRpbyA9IHIuZ2V0UGl4ZWxSYXRpbygpO1xuICAgIHZhciBtYlB4UmF0aW8gPSByLm1vdGlvbkJsdXJQeFJhdGlvO1xuXG4gICAgaWYgKGNvbnRhaW5lciA9PT0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW3IuTU9USU9OQkxVUl9CVUZGRVJfTk9ERV0gfHwgY29udGFpbmVyID09PSByLmRhdGEuYnVmZmVyQ2FudmFzZXNbci5NT1RJT05CTFVSX0JVRkZFUl9EUkFHXSkge1xuICAgICAgcGl4ZWxSYXRpbyA9IG1iUHhSYXRpbztcbiAgICB9XG5cbiAgICB2YXIgY2FudmFzV2lkdGggPSB3aWR0aCAqIHBpeGVsUmF0aW87XG4gICAgdmFyIGNhbnZhc0hlaWdodCA9IGhlaWdodCAqIHBpeGVsUmF0aW87XG4gICAgdmFyIGNhbnZhcztcblxuICAgIGlmIChjYW52YXNXaWR0aCA9PT0gci5jYW52YXNXaWR0aCAmJiBjYW52YXNIZWlnaHQgPT09IHIuY2FudmFzSGVpZ2h0KSB7XG4gICAgICByZXR1cm47IC8vIHNhdmUgY3ljbGVzIGlmIHNhbWVcbiAgICB9XG5cbiAgICByLmZvbnRDYWNoZXMgPSBudWxsOyAvLyByZXNpemluZyByZXNldHMgdGhlIHN0eWxlXG5cbiAgICB2YXIgY2FudmFzQ29udGFpbmVyID0gZGF0YS5jYW52YXNDb250YWluZXI7XG4gICAgY2FudmFzQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgIGNhbnZhc0NvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByLkNBTlZBU19MQVlFUlM7IGkrKykge1xuICAgICAgY2FudmFzID0gZGF0YS5jYW52YXNlc1tpXTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1dpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgci5CVUZGRVJfQ09VTlQ7IGkrKykge1xuICAgICAgY2FudmFzID0gZGF0YS5idWZmZXJDYW52YXNlc1tpXTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IGNhbnZhc1dpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodDtcbiAgICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgIH1cblxuICAgIHIudGV4dHVyZU11bHQgPSAxO1xuXG4gICAgaWYgKHBpeGVsUmF0aW8gPD0gMSkge1xuICAgICAgY2FudmFzID0gZGF0YS5idWZmZXJDYW52YXNlc1tyLlRFWFRVUkVfQlVGRkVSXTtcbiAgICAgIHIudGV4dHVyZU11bHQgPSAyO1xuICAgICAgY2FudmFzLndpZHRoID0gY2FudmFzV2lkdGggKiByLnRleHR1cmVNdWx0O1xuICAgICAgY2FudmFzLmhlaWdodCA9IGNhbnZhc0hlaWdodCAqIHIudGV4dHVyZU11bHQ7XG4gICAgfVxuXG4gICAgci5jYW52YXNXaWR0aCA9IGNhbnZhc1dpZHRoO1xuICAgIHIuY2FudmFzSGVpZ2h0ID0gY2FudmFzSGVpZ2h0O1xuICB9O1xuXG4gIENScCQ0LnJlbmRlclRvID0gZnVuY3Rpb24gKGN4dCwgem9vbSwgcGFuLCBweFJhdGlvKSB7XG4gICAgdGhpcy5yZW5kZXIoe1xuICAgICAgZm9yY2VkQ29udGV4dDogY3h0LFxuICAgICAgZm9yY2VkWm9vbTogem9vbSxcbiAgICAgIGZvcmNlZFBhbjogcGFuLFxuICAgICAgZHJhd0FsbExheWVyczogdHJ1ZSxcbiAgICAgIGZvcmNlZFB4UmF0aW86IHB4UmF0aW9cbiAgICB9KTtcbiAgfTtcblxuICBDUnAkNC5yZW5kZXIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHN0YXRpY0VtcHR5T2JqZWN0KCk7XG4gICAgdmFyIGZvcmNlZENvbnRleHQgPSBvcHRpb25zLmZvcmNlZENvbnRleHQ7XG4gICAgdmFyIGRyYXdBbGxMYXllcnMgPSBvcHRpb25zLmRyYXdBbGxMYXllcnM7XG4gICAgdmFyIGRyYXdPbmx5Tm9kZUxheWVyID0gb3B0aW9ucy5kcmF3T25seU5vZGVMYXllcjtcbiAgICB2YXIgZm9yY2VkWm9vbSA9IG9wdGlvbnMuZm9yY2VkWm9vbTtcbiAgICB2YXIgZm9yY2VkUGFuID0gb3B0aW9ucy5mb3JjZWRQYW47XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHZhciBwaXhlbFJhdGlvID0gb3B0aW9ucy5mb3JjZWRQeFJhdGlvID09PSB1bmRlZmluZWQgPyB0aGlzLmdldFBpeGVsUmF0aW8oKSA6IG9wdGlvbnMuZm9yY2VkUHhSYXRpbztcbiAgICB2YXIgY3kgPSByLmN5O1xuICAgIHZhciBkYXRhID0gci5kYXRhO1xuICAgIHZhciBuZWVkRHJhdyA9IGRhdGEuY2FudmFzTmVlZHNSZWRyYXc7XG4gICAgdmFyIHRleHR1cmVEcmF3ID0gci50ZXh0dXJlT25WaWV3cG9ydCAmJiAhZm9yY2VkQ29udGV4dCAmJiAoci5waW5jaGluZyB8fCByLmhvdmVyRGF0YS5kcmFnZ2luZyB8fCByLnN3aXBlUGFubmluZyB8fCByLmRhdGEud2hlZWxab29taW5nKTtcbiAgICB2YXIgbW90aW9uQmx1ciA9IG9wdGlvbnMubW90aW9uQmx1ciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tb3Rpb25CbHVyIDogci5tb3Rpb25CbHVyO1xuICAgIHZhciBtYlB4UmF0aW8gPSByLm1vdGlvbkJsdXJQeFJhdGlvO1xuICAgIHZhciBoYXNDb21wb3VuZE5vZGVzID0gY3kuaGFzQ29tcG91bmROb2RlcygpO1xuICAgIHZhciBpbk5vZGVEcmFnR2VzdHVyZSA9IHIuaG92ZXJEYXRhLmRyYWdnaW5nRWxlcztcbiAgICB2YXIgaW5Cb3hTZWxlY3Rpb24gPSByLmhvdmVyRGF0YS5zZWxlY3RpbmcgfHwgci50b3VjaERhdGEuc2VsZWN0aW5nID8gdHJ1ZSA6IGZhbHNlO1xuICAgIG1vdGlvbkJsdXIgPSBtb3Rpb25CbHVyICYmICFmb3JjZWRDb250ZXh0ICYmIHIubW90aW9uQmx1ckVuYWJsZWQgJiYgIWluQm94U2VsZWN0aW9uO1xuICAgIHZhciBtb3Rpb25CbHVyRmFkZUVmZmVjdCA9IG1vdGlvbkJsdXI7XG5cbiAgICBpZiAoIWZvcmNlZENvbnRleHQpIHtcbiAgICAgIGlmIChyLnByZXZQeFJhdGlvICE9PSBwaXhlbFJhdGlvKSB7XG4gICAgICAgIHIuaW52YWxpZGF0ZUNvbnRhaW5lckNsaWVudENvb3Jkc0NhY2hlKCk7XG4gICAgICAgIHIubWF0Y2hDYW52YXNTaXplKHIuY29udGFpbmVyKTtcbiAgICAgICAgci5yZWRyYXdIaW50KCdlbGVzJywgdHJ1ZSk7XG4gICAgICAgIHIucmVkcmF3SGludCgnZHJhZycsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICByLnByZXZQeFJhdGlvID0gcGl4ZWxSYXRpbztcbiAgICB9XG5cbiAgICBpZiAoIWZvcmNlZENvbnRleHQgJiYgci5tb3Rpb25CbHVyVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHIubW90aW9uQmx1clRpbWVvdXQpO1xuICAgIH1cblxuICAgIGlmIChtb3Rpb25CbHVyKSB7XG4gICAgICBpZiAoci5tYkZyYW1lcyA9PSBudWxsKSB7XG4gICAgICAgIHIubWJGcmFtZXMgPSAwO1xuICAgICAgfVxuXG4gICAgICByLm1iRnJhbWVzKys7XG5cbiAgICAgIGlmIChyLm1iRnJhbWVzIDwgMykge1xuICAgICAgICAvLyBuZWVkIHNldmVyYWwgZnJhbWVzIGJlZm9yZSBldmVuIGhpZ2ggcXVhbGl0eSBtb3Rpb25ibHVyXG4gICAgICAgIG1vdGlvbkJsdXJGYWRlRWZmZWN0ID0gZmFsc2U7XG4gICAgICB9IC8vIGdvIHRvIGxvd2VyIHF1YWxpdHkgYmx1cnJ5IGZyYW1lcyB3aGVuIHNldmVyYWwgbS9iIGZyYW1lcyBoYXZlIGJlZW4gcmVuZGVyZWQgKGF2b2lkcyBmbGFzaGluZylcblxuXG4gICAgICBpZiAoci5tYkZyYW1lcyA+IHIubWluTWJMb3dRdWFsRnJhbWVzKSB7XG4gICAgICAgIC8vci5mdWxsUXVhbGl0eU1iID0gZmFsc2U7XG4gICAgICAgIHIubW90aW9uQmx1clB4UmF0aW8gPSByLm1iUHhSQmx1cnJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyLmNsZWFyaW5nTW90aW9uQmx1cikge1xuICAgICAgci5tb3Rpb25CbHVyUHhSYXRpbyA9IDE7XG4gICAgfSAvLyBiL2MgZHJhd1RvQ29udGV4dCgpIG1heSBiZSBhc3luYyB3LnIudC4gcmVkcmF3KCksIGtlZXAgdHJhY2sgb2YgbGFzdCB0ZXh0dXJlIGZyYW1lXG4gICAgLy8gYmVjYXVzZSBhIHJvZ3VlIGFzeW5jIHRleHR1cmUgZnJhbWUgd291bGQgY2xlYXIgbmVlZERyYXdcblxuXG4gICAgaWYgKHIudGV4dHVyZURyYXdMYXN0RnJhbWUgJiYgIXRleHR1cmVEcmF3KSB7XG4gICAgICBuZWVkRHJhd1tyLk5PREVdID0gdHJ1ZTtcbiAgICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzdHlsZSA9IGN5LnN0eWxlKCk7XG4gICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgdmFyIGVmZmVjdGl2ZVpvb20gPSBmb3JjZWRab29tICE9PSB1bmRlZmluZWQgPyBmb3JjZWRab29tIDogem9vbTtcbiAgICB2YXIgcGFuID0gY3kucGFuKCk7XG4gICAgdmFyIGVmZmVjdGl2ZVBhbiA9IHtcbiAgICAgIHg6IHBhbi54LFxuICAgICAgeTogcGFuLnlcbiAgICB9O1xuICAgIHZhciB2cCA9IHtcbiAgICAgIHpvb206IHpvb20sXG4gICAgICBwYW46IHtcbiAgICAgICAgeDogcGFuLngsXG4gICAgICAgIHk6IHBhbi55XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgcHJldlZwID0gci5wcmV2Vmlld3BvcnQ7XG4gICAgdmFyIHZpZXdwb3J0SXNEaWZmID0gcHJldlZwID09PSB1bmRlZmluZWQgfHwgdnAuem9vbSAhPT0gcHJldlZwLnpvb20gfHwgdnAucGFuLnggIT09IHByZXZWcC5wYW4ueCB8fCB2cC5wYW4ueSAhPT0gcHJldlZwLnBhbi55OyAvLyB3ZSB3YW50IHRoZSBsb3cgcXVhbGl0eSBtb3Rpb25ibHVyIG9ubHkgd2hlbiB0aGUgdmlld3BvcnQgaXMgYmVpbmcgbWFuaXB1bGF0ZWQgZXRjICh3aGVyZSBpdCdzIG5vdCBub3RpY2VkKVxuXG4gICAgaWYgKCF2aWV3cG9ydElzRGlmZiAmJiAhKGluTm9kZURyYWdHZXN0dXJlICYmICFoYXNDb21wb3VuZE5vZGVzKSkge1xuICAgICAgci5tb3Rpb25CbHVyUHhSYXRpbyA9IDE7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlZFBhbikge1xuICAgICAgZWZmZWN0aXZlUGFuID0gZm9yY2VkUGFuO1xuICAgIH0gLy8gYXBwbHkgcGl4ZWwgcmF0aW9cblxuXG4gICAgZWZmZWN0aXZlWm9vbSAqPSBwaXhlbFJhdGlvO1xuICAgIGVmZmVjdGl2ZVBhbi54ICo9IHBpeGVsUmF0aW87XG4gICAgZWZmZWN0aXZlUGFuLnkgKj0gcGl4ZWxSYXRpbztcbiAgICB2YXIgZWxlcyA9IHIuZ2V0Q2FjaGVkWlNvcnRlZEVsZXMoKTtcblxuICAgIGZ1bmN0aW9uIG1iY2xlYXIoY29udGV4dCwgeCwgeSwgdywgaCkge1xuICAgICAgdmFyIGdjbyA9IGNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgY29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcbiAgICAgIHIuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgMjU1LCAyNTUsIDI1NSwgci5tb3Rpb25CbHVyVHJhbnNwYXJlbmN5KTtcbiAgICAgIGNvbnRleHQuZmlsbFJlY3QoeCwgeSwgdywgaCk7XG4gICAgICBjb250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IGdjbztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIGNsZWFyKSB7XG4gICAgICB2YXIgZVBhbiwgZVpvb20sIHcsIGg7XG5cbiAgICAgIGlmICghci5jbGVhcmluZ01vdGlvbkJsdXIgJiYgKGNvbnRleHQgPT09IGRhdGEuYnVmZmVyQ29udGV4dHNbci5NT1RJT05CTFVSX0JVRkZFUl9OT0RFXSB8fCBjb250ZXh0ID09PSBkYXRhLmJ1ZmZlckNvbnRleHRzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR10pKSB7XG4gICAgICAgIGVQYW4gPSB7XG4gICAgICAgICAgeDogcGFuLnggKiBtYlB4UmF0aW8sXG4gICAgICAgICAgeTogcGFuLnkgKiBtYlB4UmF0aW9cbiAgICAgICAgfTtcbiAgICAgICAgZVpvb20gPSB6b29tICogbWJQeFJhdGlvO1xuICAgICAgICB3ID0gci5jYW52YXNXaWR0aCAqIG1iUHhSYXRpbztcbiAgICAgICAgaCA9IHIuY2FudmFzSGVpZ2h0ICogbWJQeFJhdGlvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZVBhbiA9IGVmZmVjdGl2ZVBhbjtcbiAgICAgICAgZVpvb20gPSBlZmZlY3RpdmVab29tO1xuICAgICAgICB3ID0gci5jYW52YXNXaWR0aDtcbiAgICAgICAgaCA9IHIuY2FudmFzSGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcblxuICAgICAgaWYgKGNsZWFyID09PSAnbW90aW9uQmx1cicpIHtcbiAgICAgICAgbWJjbGVhcihjb250ZXh0LCAwLCAwLCB3LCBoKTtcbiAgICAgIH0gZWxzZSBpZiAoIWZvcmNlZENvbnRleHQgJiYgKGNsZWFyID09PSB1bmRlZmluZWQgfHwgY2xlYXIpKSB7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWRyYXdBbGxMYXllcnMpIHtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZVBhbi54LCBlUGFuLnkpO1xuICAgICAgICBjb250ZXh0LnNjYWxlKGVab29tLCBlWm9vbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JjZWRQYW4pIHtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZm9yY2VkUGFuLngsIGZvcmNlZFBhbi55KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcmNlZFpvb20pIHtcbiAgICAgICAgY29udGV4dC5zY2FsZShmb3JjZWRab29tLCBmb3JjZWRab29tKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRleHR1cmVEcmF3KSB7XG4gICAgICByLnRleHR1cmVEcmF3TGFzdEZyYW1lID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRleHR1cmVEcmF3KSB7XG4gICAgICByLnRleHR1cmVEcmF3TGFzdEZyYW1lID0gdHJ1ZTtcblxuICAgICAgaWYgKCFyLnRleHR1cmVDYWNoZSkge1xuICAgICAgICByLnRleHR1cmVDYWNoZSA9IHt9O1xuICAgICAgICByLnRleHR1cmVDYWNoZS5iYiA9IGN5Lm11dGFibGVFbGVtZW50cygpLmJvdW5kaW5nQm94KCk7XG4gICAgICAgIHIudGV4dHVyZUNhY2hlLnRleHR1cmUgPSByLmRhdGEuYnVmZmVyQ2FudmFzZXNbci5URVhUVVJFX0JVRkZFUl07XG4gICAgICAgIHZhciBjeHQgPSByLmRhdGEuYnVmZmVyQ29udGV4dHNbci5URVhUVVJFX0JVRkZFUl07XG4gICAgICAgIGN4dC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICAgIGN4dC5jbGVhclJlY3QoMCwgMCwgci5jYW52YXNXaWR0aCAqIHIudGV4dHVyZU11bHQsIHIuY2FudmFzSGVpZ2h0ICogci50ZXh0dXJlTXVsdCk7XG4gICAgICAgIHIucmVuZGVyKHtcbiAgICAgICAgICBmb3JjZWRDb250ZXh0OiBjeHQsXG4gICAgICAgICAgZHJhd09ubHlOb2RlTGF5ZXI6IHRydWUsXG4gICAgICAgICAgZm9yY2VkUHhSYXRpbzogcGl4ZWxSYXRpbyAqIHIudGV4dHVyZU11bHRcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB2cCA9IHIudGV4dHVyZUNhY2hlLnZpZXdwb3J0ID0ge1xuICAgICAgICAgIHpvb206IGN5Lnpvb20oKSxcbiAgICAgICAgICBwYW46IGN5LnBhbigpLFxuICAgICAgICAgIHdpZHRoOiByLmNhbnZhc1dpZHRoLFxuICAgICAgICAgIGhlaWdodDogci5jYW52YXNIZWlnaHRcbiAgICAgICAgfTtcbiAgICAgICAgdnAubXBhbiA9IHtcbiAgICAgICAgICB4OiAoMCAtIHZwLnBhbi54KSAvIHZwLnpvb20sXG4gICAgICAgICAgeTogKDAgLSB2cC5wYW4ueSkgLyB2cC56b29tXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICAgIG5lZWREcmF3W3IuTk9ERV0gPSBmYWxzZTtcbiAgICAgIHZhciBjb250ZXh0ID0gZGF0YS5jb250ZXh0c1tyLk5PREVdO1xuICAgICAgdmFyIHRleHR1cmUgPSByLnRleHR1cmVDYWNoZS50ZXh0dXJlO1xuICAgICAgdmFyIHZwID0gci50ZXh0dXJlQ2FjaGUudmlld3BvcnQ7XG4gICAgICBjb250ZXh0LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcblxuICAgICAgaWYgKG1vdGlvbkJsdXIpIHtcbiAgICAgICAgbWJjbGVhcihjb250ZXh0LCAwLCAwLCB2cC53aWR0aCwgdnAuaGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgb3V0c2lkZUJnQ29sb3IgPSBzdHlsZS5jb3JlKCdvdXRzaWRlLXRleHR1cmUtYmctY29sb3InKS52YWx1ZTtcbiAgICAgIHZhciBvdXRzaWRlQmdPcGFjaXR5ID0gc3R5bGUuY29yZSgnb3V0c2lkZS10ZXh0dXJlLWJnLW9wYWNpdHknKS52YWx1ZTtcbiAgICAgIHIuY29sb3JGaWxsU3R5bGUoY29udGV4dCwgb3V0c2lkZUJnQ29sb3JbMF0sIG91dHNpZGVCZ0NvbG9yWzFdLCBvdXRzaWRlQmdDb2xvclsyXSwgb3V0c2lkZUJnT3BhY2l0eSk7XG4gICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHZwLndpZHRoLCB2cC5oZWlnaHQpO1xuICAgICAgdmFyIHpvb20gPSBjeS56b29tKCk7XG4gICAgICBzZXRDb250ZXh0VHJhbnNmb3JtKGNvbnRleHQsIGZhbHNlKTtcbiAgICAgIGNvbnRleHQuY2xlYXJSZWN0KHZwLm1wYW4ueCwgdnAubXBhbi55LCB2cC53aWR0aCAvIHZwLnpvb20gLyBwaXhlbFJhdGlvLCB2cC5oZWlnaHQgLyB2cC56b29tIC8gcGl4ZWxSYXRpbyk7XG4gICAgICBjb250ZXh0LmRyYXdJbWFnZSh0ZXh0dXJlLCB2cC5tcGFuLngsIHZwLm1wYW4ueSwgdnAud2lkdGggLyB2cC56b29tIC8gcGl4ZWxSYXRpbywgdnAuaGVpZ2h0IC8gdnAuem9vbSAvIHBpeGVsUmF0aW8pO1xuICAgIH0gZWxzZSBpZiAoci50ZXh0dXJlT25WaWV3cG9ydCAmJiAhZm9yY2VkQ29udGV4dCkge1xuICAgICAgLy8gY2xlYXIgdGhlIGNhY2hlIHNpbmNlIHdlIGRvbid0IG5lZWQgaXRcbiAgICAgIHIudGV4dHVyZUNhY2hlID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZXh0ZW50ID0gY3kuZXh0ZW50KCk7XG4gICAgdmFyIHZwTWFuaXAgPSByLnBpbmNoaW5nIHx8IHIuaG92ZXJEYXRhLmRyYWdnaW5nIHx8IHIuc3dpcGVQYW5uaW5nIHx8IHIuZGF0YS53aGVlbFpvb21pbmcgfHwgci5ob3ZlckRhdGEuZHJhZ2dpbmdFbGVzIHx8IHIuY3kuYW5pbWF0ZWQoKTtcbiAgICB2YXIgaGlkZUVkZ2VzID0gci5oaWRlRWRnZXNPblZpZXdwb3J0ICYmIHZwTWFuaXA7XG4gICAgdmFyIG5lZWRNYkNsZWFyID0gW107XG4gICAgbmVlZE1iQ2xlYXJbci5OT0RFXSA9ICFuZWVkRHJhd1tyLk5PREVdICYmIG1vdGlvbkJsdXIgJiYgIXIuY2xlYXJlZEZvck1vdGlvbkJsdXJbci5OT0RFXSB8fCByLmNsZWFyaW5nTW90aW9uQmx1cjtcblxuICAgIGlmIChuZWVkTWJDbGVhcltyLk5PREVdKSB7XG4gICAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gPSB0cnVlO1xuICAgIH1cblxuICAgIG5lZWRNYkNsZWFyW3IuRFJBR10gPSAhbmVlZERyYXdbci5EUkFHXSAmJiBtb3Rpb25CbHVyICYmICFyLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuRFJBR10gfHwgci5jbGVhcmluZ01vdGlvbkJsdXI7XG5cbiAgICBpZiAobmVlZE1iQ2xlYXJbci5EUkFHXSkge1xuICAgICAgci5jbGVhcmVkRm9yTW90aW9uQmx1cltyLkRSQUddID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobmVlZERyYXdbci5OT0RFXSB8fCBkcmF3QWxsTGF5ZXJzIHx8IGRyYXdPbmx5Tm9kZUxheWVyIHx8IG5lZWRNYkNsZWFyW3IuTk9ERV0pIHtcbiAgICAgIHZhciB1c2VCdWZmZXIgPSBtb3Rpb25CbHVyICYmICFuZWVkTWJDbGVhcltyLk5PREVdICYmIG1iUHhSYXRpbyAhPT0gMTtcbiAgICAgIHZhciBjb250ZXh0ID0gZm9yY2VkQ29udGV4dCB8fCAodXNlQnVmZmVyID8gci5kYXRhLmJ1ZmZlckNvbnRleHRzW3IuTU9USU9OQkxVUl9CVUZGRVJfTk9ERV0gOiBkYXRhLmNvbnRleHRzW3IuTk9ERV0pO1xuICAgICAgdmFyIGNsZWFyID0gbW90aW9uQmx1ciAmJiAhdXNlQnVmZmVyID8gJ21vdGlvbkJsdXInIDogdW5kZWZpbmVkO1xuICAgICAgc2V0Q29udGV4dFRyYW5zZm9ybShjb250ZXh0LCBjbGVhcik7XG5cbiAgICAgIGlmIChoaWRlRWRnZXMpIHtcbiAgICAgICAgci5kcmF3Q2FjaGVkTm9kZXMoY29udGV4dCwgZWxlcy5ub25kcmFnLCBwaXhlbFJhdGlvLCBleHRlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgci5kcmF3TGF5ZXJlZEVsZW1lbnRzKGNvbnRleHQsIGVsZXMubm9uZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHIuZGVidWcpIHtcbiAgICAgICAgci5kcmF3RGVidWdQb2ludHMoY29udGV4dCwgZWxlcy5ub25kcmFnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkcmF3QWxsTGF5ZXJzICYmICFtb3Rpb25CbHVyKSB7XG4gICAgICAgIG5lZWREcmF3W3IuTk9ERV0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWRyYXdPbmx5Tm9kZUxheWVyICYmIChuZWVkRHJhd1tyLkRSQUddIHx8IGRyYXdBbGxMYXllcnMgfHwgbmVlZE1iQ2xlYXJbci5EUkFHXSkpIHtcbiAgICAgIHZhciB1c2VCdWZmZXIgPSBtb3Rpb25CbHVyICYmICFuZWVkTWJDbGVhcltyLkRSQUddICYmIG1iUHhSYXRpbyAhPT0gMTtcbiAgICAgIHZhciBjb250ZXh0ID0gZm9yY2VkQ29udGV4dCB8fCAodXNlQnVmZmVyID8gci5kYXRhLmJ1ZmZlckNvbnRleHRzW3IuTU9USU9OQkxVUl9CVUZGRVJfRFJBR10gOiBkYXRhLmNvbnRleHRzW3IuRFJBR10pO1xuICAgICAgc2V0Q29udGV4dFRyYW5zZm9ybShjb250ZXh0LCBtb3Rpb25CbHVyICYmICF1c2VCdWZmZXIgPyAnbW90aW9uQmx1cicgOiB1bmRlZmluZWQpO1xuXG4gICAgICBpZiAoaGlkZUVkZ2VzKSB7XG4gICAgICAgIHIuZHJhd0NhY2hlZE5vZGVzKGNvbnRleHQsIGVsZXMuZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIuZHJhd0NhY2hlZEVsZW1lbnRzKGNvbnRleHQsIGVsZXMuZHJhZywgcGl4ZWxSYXRpbywgZXh0ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHIuZGVidWcpIHtcbiAgICAgICAgci5kcmF3RGVidWdQb2ludHMoY29udGV4dCwgZWxlcy5kcmFnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkcmF3QWxsTGF5ZXJzICYmICFtb3Rpb25CbHVyKSB7XG4gICAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoci5zaG93RnBzIHx8ICFkcmF3T25seU5vZGVMYXllciAmJiBuZWVkRHJhd1tyLlNFTEVDVF9CT1hdICYmICFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGZvcmNlZENvbnRleHQgfHwgZGF0YS5jb250ZXh0c1tyLlNFTEVDVF9CT1hdO1xuICAgICAgc2V0Q29udGV4dFRyYW5zZm9ybShjb250ZXh0KTtcblxuICAgICAgaWYgKHIuc2VsZWN0aW9uWzRdID09IDEgJiYgKHIuaG92ZXJEYXRhLnNlbGVjdGluZyB8fCByLnRvdWNoRGF0YS5zZWxlY3RpbmcpKSB7XG4gICAgICAgIHZhciB6b29tID0gci5jeS56b29tKCk7XG4gICAgICAgIHZhciBib3JkZXJXaWR0aCA9IHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLXdpZHRoJykudmFsdWUgLyB6b29tO1xuICAgICAgICBjb250ZXh0LmxpbmVXaWR0aCA9IGJvcmRlcldpZHRoO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWNvbG9yJykudmFsdWVbMF0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWNvbG9yJykudmFsdWVbMV0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWNvbG9yJykudmFsdWVbMl0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LW9wYWNpdHknKS52YWx1ZSArICcpJztcbiAgICAgICAgY29udGV4dC5maWxsUmVjdChyLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bMV0sIHIuc2VsZWN0aW9uWzJdIC0gci5zZWxlY3Rpb25bMF0sIHIuc2VsZWN0aW9uWzNdIC0gci5zZWxlY3Rpb25bMV0pO1xuXG4gICAgICAgIGlmIChib3JkZXJXaWR0aCA+IDApIHtcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoJyArIHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtYm9yZGVyLWNvbG9yJykudmFsdWVbMF0gKyAnLCcgKyBzdHlsZS5jb3JlKCdzZWxlY3Rpb24tYm94LWJvcmRlci1jb2xvcicpLnZhbHVlWzFdICsgJywnICsgc3R5bGUuY29yZSgnc2VsZWN0aW9uLWJveC1ib3JkZXItY29sb3InKS52YWx1ZVsyXSArICcsJyArIHN0eWxlLmNvcmUoJ3NlbGVjdGlvbi1ib3gtb3BhY2l0eScpLnZhbHVlICsgJyknO1xuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdChyLnNlbGVjdGlvblswXSwgci5zZWxlY3Rpb25bMV0sIHIuc2VsZWN0aW9uWzJdIC0gci5zZWxlY3Rpb25bMF0sIHIuc2VsZWN0aW9uWzNdIC0gci5zZWxlY3Rpb25bMV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmJnQWN0aXZlUG9zaXN0aW9uICYmICFyLmhvdmVyRGF0YS5zZWxlY3RpbmcpIHtcbiAgICAgICAgdmFyIHpvb20gPSByLmN5Lnpvb20oKTtcbiAgICAgICAgdmFyIHBvcyA9IGRhdGEuYmdBY3RpdmVQb3Npc3Rpb247XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gJ3JnYmEoJyArIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1jb2xvcicpLnZhbHVlWzBdICsgJywnICsgc3R5bGUuY29yZSgnYWN0aXZlLWJnLWNvbG9yJykudmFsdWVbMV0gKyAnLCcgKyBzdHlsZS5jb3JlKCdhY3RpdmUtYmctY29sb3InKS52YWx1ZVsyXSArICcsJyArIHN0eWxlLmNvcmUoJ2FjdGl2ZS1iZy1vcGFjaXR5JykudmFsdWUgKyAnKSc7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuYXJjKHBvcy54LCBwb3MueSwgc3R5bGUuY29yZSgnYWN0aXZlLWJnLXNpemUnKS5wZlZhbHVlIC8gem9vbSwgMCwgMiAqIE1hdGguUEkpO1xuICAgICAgICBjb250ZXh0LmZpbGwoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRpbWVUb1JlbmRlciA9IHIubGFzdFJlZHJhd1RpbWU7XG5cbiAgICAgIGlmIChyLnNob3dGcHMgJiYgdGltZVRvUmVuZGVyKSB7XG4gICAgICAgIHRpbWVUb1JlbmRlciA9IE1hdGgucm91bmQodGltZVRvUmVuZGVyKTtcbiAgICAgICAgdmFyIGZwcyA9IE1hdGgucm91bmQoMTAwMCAvIHRpbWVUb1JlbmRlcik7XG4gICAgICAgIGNvbnRleHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2JhKDI1NSwgMCwgMCwgMC43NSknO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ3JnYmEoMjU1LCAwLCAwLCAwLjc1KSc7XG4gICAgICAgIGNvbnRleHQubGluZVdpZHRoID0gMTtcbiAgICAgICAgY29udGV4dC5maWxsVGV4dCgnMSBmcmFtZSA9ICcgKyB0aW1lVG9SZW5kZXIgKyAnIG1zID0gJyArIGZwcyArICcgZnBzJywgMCwgMjApO1xuICAgICAgICB2YXIgbWF4RnBzID0gNjA7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlUmVjdCgwLCAzMCwgMjUwLCAyMCk7XG4gICAgICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMzAsIDI1MCAqIE1hdGgubWluKGZwcyAvIG1heEZwcywgMSksIDIwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkcmF3QWxsTGF5ZXJzKSB7XG4gICAgICAgIG5lZWREcmF3W3IuU0VMRUNUX0JPWF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IC8vIG1vdGlvbmJsdXI6IGJsaXQgcmVuZGVyZWQgYmx1cnJ5IGZyYW1lc1xuXG5cbiAgICBpZiAobW90aW9uQmx1ciAmJiBtYlB4UmF0aW8gIT09IDEpIHtcbiAgICAgIHZhciBjeHROb2RlID0gZGF0YS5jb250ZXh0c1tyLk5PREVdO1xuICAgICAgdmFyIHR4dE5vZGUgPSByLmRhdGEuYnVmZmVyQ2FudmFzZXNbci5NT1RJT05CTFVSX0JVRkZFUl9OT0RFXTtcbiAgICAgIHZhciBjeHREcmFnID0gZGF0YS5jb250ZXh0c1tyLkRSQUddO1xuICAgICAgdmFyIHR4dERyYWcgPSByLmRhdGEuYnVmZmVyQ2FudmFzZXNbci5NT1RJT05CTFVSX0JVRkZFUl9EUkFHXTtcblxuICAgICAgdmFyIGRyYXdNb3Rpb25CbHVyID0gZnVuY3Rpb24gZHJhd01vdGlvbkJsdXIoY3h0LCB0eHQsIG5lZWRDbGVhcikge1xuICAgICAgICBjeHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuXG4gICAgICAgIGlmIChuZWVkQ2xlYXIgfHwgIW1vdGlvbkJsdXJGYWRlRWZmZWN0KSB7XG4gICAgICAgICAgY3h0LmNsZWFyUmVjdCgwLCAwLCByLmNhbnZhc1dpZHRoLCByLmNhbnZhc0hlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWJjbGVhcihjeHQsIDAsIDAsIHIuY2FudmFzV2lkdGgsIHIuY2FudmFzSGVpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBweHIgPSBtYlB4UmF0aW87XG4gICAgICAgIGN4dC5kcmF3SW1hZ2UodHh0LCAvLyBpbWdcbiAgICAgICAgMCwgMCwgLy8gc3gsIHN5XG4gICAgICAgIHIuY2FudmFzV2lkdGggKiBweHIsIHIuY2FudmFzSGVpZ2h0ICogcHhyLCAvLyBzdywgc2hcbiAgICAgICAgMCwgMCwgLy8geCwgeVxuICAgICAgICByLmNhbnZhc1dpZHRoLCByLmNhbnZhc0hlaWdodCAvLyB3LCBoXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICBpZiAobmVlZERyYXdbci5OT0RFXSB8fCBuZWVkTWJDbGVhcltyLk5PREVdKSB7XG4gICAgICAgIGRyYXdNb3Rpb25CbHVyKGN4dE5vZGUsIHR4dE5vZGUsIG5lZWRNYkNsZWFyW3IuTk9ERV0pO1xuICAgICAgICBuZWVkRHJhd1tyLk5PREVdID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkRHJhd1tyLkRSQUddIHx8IG5lZWRNYkNsZWFyW3IuRFJBR10pIHtcbiAgICAgICAgZHJhd01vdGlvbkJsdXIoY3h0RHJhZywgdHh0RHJhZywgbmVlZE1iQ2xlYXJbci5EUkFHXSk7XG4gICAgICAgIG5lZWREcmF3W3IuRFJBR10gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByLnByZXZWaWV3cG9ydCA9IHZwO1xuXG4gICAgaWYgKHIuY2xlYXJpbmdNb3Rpb25CbHVyKSB7XG4gICAgICByLmNsZWFyaW5nTW90aW9uQmx1ciA9IGZhbHNlO1xuICAgICAgci5tb3Rpb25CbHVyQ2xlYXJlZCA9IHRydWU7XG4gICAgICByLm1vdGlvbkJsdXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChtb3Rpb25CbHVyKSB7XG4gICAgICByLm1vdGlvbkJsdXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHIubW90aW9uQmx1clRpbWVvdXQgPSBudWxsO1xuICAgICAgICByLmNsZWFyZWRGb3JNb3Rpb25CbHVyW3IuTk9ERV0gPSBmYWxzZTtcbiAgICAgICAgci5jbGVhcmVkRm9yTW90aW9uQmx1cltyLkRSQUddID0gZmFsc2U7XG4gICAgICAgIHIubW90aW9uQmx1ciA9IGZhbHNlO1xuICAgICAgICByLmNsZWFyaW5nTW90aW9uQmx1ciA9ICF0ZXh0dXJlRHJhdztcbiAgICAgICAgci5tYkZyYW1lcyA9IDA7XG4gICAgICAgIG5lZWREcmF3W3IuTk9ERV0gPSB0cnVlO1xuICAgICAgICBuZWVkRHJhd1tyLkRSQUddID0gdHJ1ZTtcbiAgICAgICAgci5yZWRyYXcoKTtcbiAgICAgIH0sIG1vdGlvbkJsdXJEZWxheSk7XG4gICAgfVxuXG4gICAgaWYgKCFmb3JjZWRDb250ZXh0KSB7XG4gICAgICBjeS5lbWl0KCdyZW5kZXInKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIENScCQzID0ge307IC8vIEBPIFBvbHlnb24gZHJhd2luZ1xuXG4gIENScCQzLmRyYXdQb2x5Z29uUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBwb2ludHMpIHtcbiAgICB2YXIgaGFsZlcgPSB3aWR0aCAvIDI7XG4gICAgdmFyIGhhbGZIID0gaGVpZ2h0IC8gMjtcblxuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0Lm1vdmVUbyh4ICsgaGFsZlcgKiBwb2ludHNbMF0sIHkgKyBoYWxmSCAqIHBvaW50c1sxXSk7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHBvaW50cy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIGNvbnRleHQubGluZVRvKHggKyBoYWxmVyAqIHBvaW50c1tpICogMl0sIHkgKyBoYWxmSCAqIHBvaW50c1tpICogMiArIDFdKTtcbiAgICB9XG5cbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9O1xuXG4gIENScCQzLmRyYXdSb3VuZFBvbHlnb25QYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHBvaW50cykge1xuICAgIHZhciBoYWxmVyA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGFsZkggPSBoZWlnaHQgLyAyO1xuICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFBvbHlnb25SYWRpdXMod2lkdGgsIGhlaWdodCk7XG5cbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHBvaW50cy5sZW5ndGggLyA0OyBfaSsrKSB7XG4gICAgICB2YXIgc291cmNlVXYgPSB2b2lkIDAsXG4gICAgICAgICAgZGVzdFV2ID0gdm9pZCAwO1xuXG4gICAgICBpZiAoX2kgPT09IDApIHtcbiAgICAgICAgc291cmNlVXYgPSBwb2ludHMubGVuZ3RoIC0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNvdXJjZVV2ID0gX2kgKiA0IC0gMjtcbiAgICAgIH1cblxuICAgICAgZGVzdFV2ID0gX2kgKiA0ICsgMjtcbiAgICAgIHZhciBweCA9IHggKyBoYWxmVyAqIHBvaW50c1tfaSAqIDRdO1xuICAgICAgdmFyIHB5ID0geSArIGhhbGZIICogcG9pbnRzW19pICogNCArIDFdO1xuICAgICAgdmFyIGNvc1RoZXRhID0gLXBvaW50c1tzb3VyY2VVdl0gKiBwb2ludHNbZGVzdFV2XSAtIHBvaW50c1tzb3VyY2VVdiArIDFdICogcG9pbnRzW2Rlc3RVdiArIDFdO1xuICAgICAgdmFyIG9mZnNldCA9IGNvcm5lclJhZGl1cyAvIE1hdGgudGFuKE1hdGguYWNvcyhjb3NUaGV0YSkgLyAyKTtcbiAgICAgIHZhciBjcDB4ID0gcHggLSBvZmZzZXQgKiBwb2ludHNbc291cmNlVXZdO1xuICAgICAgdmFyIGNwMHkgPSBweSAtIG9mZnNldCAqIHBvaW50c1tzb3VyY2VVdiArIDFdO1xuICAgICAgdmFyIGNwMXggPSBweCArIG9mZnNldCAqIHBvaW50c1tkZXN0VXZdO1xuICAgICAgdmFyIGNwMXkgPSBweSArIG9mZnNldCAqIHBvaW50c1tkZXN0VXYgKyAxXTtcblxuICAgICAgaWYgKF9pID09PSAwKSB7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKGNwMHgsIGNwMHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5saW5lVG8oY3AweCwgY3AweSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuYXJjVG8ocHgsIHB5LCBjcDF4LCBjcDF5LCBjb3JuZXJSYWRpdXMpO1xuICAgIH1cblxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH07IC8vIFJvdW5kIHJlY3RhbmdsZSBkcmF3aW5nXG5cblxuICBDUnAkMy5kcmF3Um91bmRSZWN0YW5nbGVQYXRoID0gZnVuY3Rpb24gKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICB2YXIgaGFsZldpZHRoID0gd2lkdGggLyAyO1xuICAgIHZhciBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjtcbiAgICB2YXIgY29ybmVyUmFkaXVzID0gZ2V0Um91bmRSZWN0YW5nbGVSYWRpdXMod2lkdGgsIGhlaWdodCk7XG5cbiAgICBpZiAoY29udGV4dC5iZWdpblBhdGgpIHtcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgfSAvLyBTdGFydCBhdCB0b3AgbWlkZGxlXG5cblxuICAgIGNvbnRleHQubW92ZVRvKHgsIHkgLSBoYWxmSGVpZ2h0KTsgLy8gQXJjIGZyb20gbWlkZGxlIHRvcCB0byByaWdodCBzaWRlXG5cbiAgICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0LCB4ICsgaGFsZldpZHRoLCB5LCBjb3JuZXJSYWRpdXMpOyAvLyBBcmMgZnJvbSByaWdodCBzaWRlIHRvIGJvdHRvbVxuXG4gICAgY29udGV4dC5hcmNUbyh4ICsgaGFsZldpZHRoLCB5ICsgaGFsZkhlaWdodCwgeCwgeSArIGhhbGZIZWlnaHQsIGNvcm5lclJhZGl1cyk7IC8vIEFyYyBmcm9tIGJvdHRvbSB0byBsZWZ0IHNpZGVcblxuICAgIGNvbnRleHQuYXJjVG8oeCAtIGhhbGZXaWR0aCwgeSArIGhhbGZIZWlnaHQsIHggLSBoYWxmV2lkdGgsIHksIGNvcm5lclJhZGl1cyk7IC8vIEFyYyBmcm9tIGxlZnQgc2lkZSB0byB0b3BCb3JkZXJcblxuICAgIGNvbnRleHQuYXJjVG8oeCAtIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQsIHgsIHkgLSBoYWxmSGVpZ2h0LCBjb3JuZXJSYWRpdXMpOyAvLyBKb2luIGxpbmVcblxuICAgIGNvbnRleHQubGluZVRvKHgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9O1xuXG4gIENScCQzLmRyYXdCb3R0b21Sb3VuZFJlY3RhbmdsZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICAgIHZhciBoYWxmV2lkdGggPSB3aWR0aCAvIDI7XG4gICAgdmFyIGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyO1xuICAgIHZhciBjb3JuZXJSYWRpdXMgPSBnZXRSb3VuZFJlY3RhbmdsZVJhZGl1cyh3aWR0aCwgaGVpZ2h0KTtcblxuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9IC8vIFN0YXJ0IGF0IHRvcCBtaWRkbGVcblxuXG4gICAgY29udGV4dC5tb3ZlVG8oeCwgeSAtIGhhbGZIZWlnaHQpO1xuICAgIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoLCB5KTtcbiAgICBjb250ZXh0LmFyY1RvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4LCB5ICsgaGFsZkhlaWdodCwgY29ybmVyUmFkaXVzKTtcbiAgICBjb250ZXh0LmFyY1RvKHggLSBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0LCB4IC0gaGFsZldpZHRoLCB5LCBjb3JuZXJSYWRpdXMpO1xuICAgIGNvbnRleHQubGluZVRvKHggLSBoYWxmV2lkdGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4LCB5IC0gaGFsZkhlaWdodCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfTtcblxuICBDUnAkMy5kcmF3Q3V0UmVjdGFuZ2xlUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XG4gICAgdmFyIGNvcm5lckxlbmd0aCA9IGdldEN1dFJlY3RhbmdsZUNvcm5lckxlbmd0aCgpO1xuXG4gICAgaWYgKGNvbnRleHQuYmVnaW5QYXRoKSB7XG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIH1cblxuICAgIGNvbnRleHQubW92ZVRvKHggLSBoYWxmV2lkdGggKyBjb3JuZXJMZW5ndGgsIHkgLSBoYWxmSGVpZ2h0KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoIC0gY29ybmVyTGVuZ3RoLCB5IC0gaGFsZkhlaWdodCk7XG4gICAgY29udGV4dC5saW5lVG8oeCArIGhhbGZXaWR0aCwgeSAtIGhhbGZIZWlnaHQgKyBjb3JuZXJMZW5ndGgpO1xuICAgIGNvbnRleHQubGluZVRvKHggKyBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyTGVuZ3RoKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4ICsgaGFsZldpZHRoIC0gY29ybmVyTGVuZ3RoLCB5ICsgaGFsZkhlaWdodCk7XG4gICAgY29udGV4dC5saW5lVG8oeCAtIGhhbGZXaWR0aCArIGNvcm5lckxlbmd0aCwgeSArIGhhbGZIZWlnaHQpO1xuICAgIGNvbnRleHQubGluZVRvKHggLSBoYWxmV2lkdGgsIHkgKyBoYWxmSGVpZ2h0IC0gY29ybmVyTGVuZ3RoKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4IC0gaGFsZldpZHRoLCB5IC0gaGFsZkhlaWdodCArIGNvcm5lckxlbmd0aCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfTtcblxuICBDUnAkMy5kcmF3QmFycmVsUGF0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoIC8gMjtcbiAgICB2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XG4gICAgdmFyIHhCZWdpbiA9IHggLSBoYWxmV2lkdGg7XG4gICAgdmFyIHhFbmQgPSB4ICsgaGFsZldpZHRoO1xuICAgIHZhciB5QmVnaW4gPSB5IC0gaGFsZkhlaWdodDtcbiAgICB2YXIgeUVuZCA9IHkgKyBoYWxmSGVpZ2h0O1xuICAgIHZhciBiYXJyZWxDdXJ2ZUNvbnN0YW50cyA9IGdldEJhcnJlbEN1cnZlQ29uc3RhbnRzKHdpZHRoLCBoZWlnaHQpO1xuICAgIHZhciB3T2Zmc2V0ID0gYmFycmVsQ3VydmVDb25zdGFudHMud2lkdGhPZmZzZXQ7XG4gICAgdmFyIGhPZmZzZXQgPSBiYXJyZWxDdXJ2ZUNvbnN0YW50cy5oZWlnaHRPZmZzZXQ7XG4gICAgdmFyIGN0cmxQdFhPZmZzZXQgPSBiYXJyZWxDdXJ2ZUNvbnN0YW50cy5jdHJsUHRPZmZzZXRQY3QgKiB3T2Zmc2V0O1xuXG4gICAgaWYgKGNvbnRleHQuYmVnaW5QYXRoKSB7XG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIH1cblxuICAgIGNvbnRleHQubW92ZVRvKHhCZWdpbiwgeUJlZ2luICsgaE9mZnNldCk7XG4gICAgY29udGV4dC5saW5lVG8oeEJlZ2luLCB5RW5kIC0gaE9mZnNldCk7XG4gICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHhCZWdpbiArIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhCZWdpbiArIHdPZmZzZXQsIHlFbmQpO1xuICAgIGNvbnRleHQubGluZVRvKHhFbmQgLSB3T2Zmc2V0LCB5RW5kKTtcbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEVuZCAtIGN0cmxQdFhPZmZzZXQsIHlFbmQsIHhFbmQsIHlFbmQgLSBoT2Zmc2V0KTtcbiAgICBjb250ZXh0LmxpbmVUbyh4RW5kLCB5QmVnaW4gKyBoT2Zmc2V0KTtcbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEVuZCAtIGN0cmxQdFhPZmZzZXQsIHlCZWdpbiwgeEVuZCAtIHdPZmZzZXQsIHlCZWdpbik7XG4gICAgY29udGV4dC5saW5lVG8oeEJlZ2luICsgd09mZnNldCwgeUJlZ2luKTtcbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeEJlZ2luICsgY3RybFB0WE9mZnNldCwgeUJlZ2luLCB4QmVnaW4sIHlCZWdpbiArIGhPZmZzZXQpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH07XG5cbiAgdmFyIHNpbjAgPSBNYXRoLnNpbigwKTtcbiAgdmFyIGNvczAgPSBNYXRoLmNvcygwKTtcbiAgdmFyIHNpbiA9IHt9O1xuICB2YXIgY29zID0ge307XG4gIHZhciBlbGxpcHNlU3RlcFNpemUgPSBNYXRoLlBJIC8gNDA7XG5cbiAgZm9yICh2YXIgaSA9IDAgKiBNYXRoLlBJOyBpIDwgMiAqIE1hdGguUEk7IGkgKz0gZWxsaXBzZVN0ZXBTaXplKSB7XG4gICAgc2luW2ldID0gTWF0aC5zaW4oaSk7XG4gICAgY29zW2ldID0gTWF0aC5jb3MoaSk7XG4gIH1cblxuICBDUnAkMy5kcmF3RWxsaXBzZVBhdGggPSBmdW5jdGlvbiAoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCkge1xuICAgIGlmIChjb250ZXh0LmJlZ2luUGF0aCkge1xuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5lbGxpcHNlKSB7XG4gICAgICBjb250ZXh0LmVsbGlwc2UoY2VudGVyWCwgY2VudGVyWSwgd2lkdGggLyAyLCBoZWlnaHQgLyAyLCAwLCAwLCAyICogTWF0aC5QSSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB4UG9zLCB5UG9zO1xuICAgICAgdmFyIHJ3ID0gd2lkdGggLyAyO1xuICAgICAgdmFyIHJoID0gaGVpZ2h0IC8gMjtcblxuICAgICAgZm9yICh2YXIgaSA9IDAgKiBNYXRoLlBJOyBpIDwgMiAqIE1hdGguUEk7IGkgKz0gZWxsaXBzZVN0ZXBTaXplKSB7XG4gICAgICAgIHhQb3MgPSBjZW50ZXJYIC0gcncgKiBzaW5baV0gKiBzaW4wICsgcncgKiBjb3NbaV0gKiBjb3MwO1xuICAgICAgICB5UG9zID0gY2VudGVyWSArIHJoICogY29zW2ldICogc2luMCArIHJoICogc2luW2ldICogY29zMDtcblxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHhQb3MsIHlQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQubGluZVRvKHhQb3MsIHlQb3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfTtcblxuICAvKiBnbG9iYWwgYXRvYiwgQXJyYXlCdWZmZXIsIFVpbnQ4QXJyYXksIEJsb2IgKi9cbiAgdmFyIENScCQyID0ge307XG5cbiAgQ1JwJDIuY3JlYXRlQnVmZmVyID0gZnVuY3Rpb24gKHcsIGgpIHtcbiAgICB2YXIgYnVmZmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIGJ1ZmZlci53aWR0aCA9IHc7XG4gICAgYnVmZmVyLmhlaWdodCA9IGg7XG4gICAgcmV0dXJuIFtidWZmZXIsIGJ1ZmZlci5nZXRDb250ZXh0KCcyZCcpXTtcbiAgfTtcblxuICBDUnAkMi5idWZmZXJDYW52YXNJbWFnZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIGN5ID0gdGhpcy5jeTtcbiAgICB2YXIgZWxlcyA9IGN5Lm11dGFibGVFbGVtZW50cygpO1xuICAgIHZhciBiYiA9IGVsZXMuYm91bmRpbmdCb3goKTtcbiAgICB2YXIgY3RyUmVjdCA9IHRoaXMuZmluZENvbnRhaW5lckNsaWVudENvb3JkcygpO1xuICAgIHZhciB3aWR0aCA9IG9wdGlvbnMuZnVsbCA/IE1hdGguY2VpbChiYi53KSA6IGN0clJlY3RbMl07XG4gICAgdmFyIGhlaWdodCA9IG9wdGlvbnMuZnVsbCA/IE1hdGguY2VpbChiYi5oKSA6IGN0clJlY3RbM107XG4gICAgdmFyIHNwZWNkTWF4RGltcyA9IG51bWJlciQxKG9wdGlvbnMubWF4V2lkdGgpIHx8IG51bWJlciQxKG9wdGlvbnMubWF4SGVpZ2h0KTtcbiAgICB2YXIgcHhSYXRpbyA9IHRoaXMuZ2V0UGl4ZWxSYXRpbygpO1xuICAgIHZhciBzY2FsZSA9IDE7XG5cbiAgICBpZiAob3B0aW9ucy5zY2FsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3aWR0aCAqPSBvcHRpb25zLnNjYWxlO1xuICAgICAgaGVpZ2h0ICo9IG9wdGlvbnMuc2NhbGU7XG4gICAgICBzY2FsZSA9IG9wdGlvbnMuc2NhbGU7XG4gICAgfSBlbHNlIGlmIChzcGVjZE1heERpbXMpIHtcbiAgICAgIHZhciBtYXhTY2FsZVcgPSBJbmZpbml0eTtcbiAgICAgIHZhciBtYXhTY2FsZUggPSBJbmZpbml0eTtcblxuICAgICAgaWYgKG51bWJlciQxKG9wdGlvbnMubWF4V2lkdGgpKSB7XG4gICAgICAgIG1heFNjYWxlVyA9IHNjYWxlICogb3B0aW9ucy5tYXhXaWR0aCAvIHdpZHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAobnVtYmVyJDEob3B0aW9ucy5tYXhIZWlnaHQpKSB7XG4gICAgICAgIG1heFNjYWxlSCA9IHNjYWxlICogb3B0aW9ucy5tYXhIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIHNjYWxlID0gTWF0aC5taW4obWF4U2NhbGVXLCBtYXhTY2FsZUgpO1xuICAgICAgd2lkdGggKj0gc2NhbGU7XG4gICAgICBoZWlnaHQgKj0gc2NhbGU7XG4gICAgfVxuXG4gICAgaWYgKCFzcGVjZE1heERpbXMpIHtcbiAgICAgIHdpZHRoICo9IHB4UmF0aW87XG4gICAgICBoZWlnaHQgKj0gcHhSYXRpbztcbiAgICAgIHNjYWxlICo9IHB4UmF0aW87XG4gICAgfVxuXG4gICAgdmFyIGJ1ZmZDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gICAgYnVmZkNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGJ1ZmZDYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGJ1ZmZDYW52YXMuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgYnVmZkNhbnZhcy5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgIHZhciBidWZmQ3h0ID0gYnVmZkNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOyAvLyBSYXN0ZXJpemUgdGhlIGxheWVycywgYnV0IG9ubHkgaWYgY29udGFpbmVyIGhhcyBub256ZXJvIHNpemVcblxuICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgYnVmZkN4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICBidWZmQ3h0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdzb3VyY2Utb3Zlcic7XG4gICAgICB2YXIgenNvcnRlZEVsZXMgPSB0aGlzLmdldENhY2hlZFpTb3J0ZWRFbGVzKCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmZ1bGwpIHtcbiAgICAgICAgLy8gZHJhdyB0aGUgZnVsbCBib3VuZHMgb2YgdGhlIGdyYXBoXG4gICAgICAgIGJ1ZmZDeHQudHJhbnNsYXRlKC1iYi54MSAqIHNjYWxlLCAtYmIueTEgKiBzY2FsZSk7XG4gICAgICAgIGJ1ZmZDeHQuc2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICAgICAgdGhpcy5kcmF3RWxlbWVudHMoYnVmZkN4dCwgenNvcnRlZEVsZXMpO1xuICAgICAgICBidWZmQ3h0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTtcbiAgICAgICAgYnVmZkN4dC50cmFuc2xhdGUoYmIueDEgKiBzY2FsZSwgYmIueTEgKiBzY2FsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBkcmF3IHRoZSBjdXJyZW50IHZpZXdcbiAgICAgICAgdmFyIHBhbiA9IGN5LnBhbigpO1xuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSB7XG4gICAgICAgICAgeDogcGFuLnggKiBzY2FsZSxcbiAgICAgICAgICB5OiBwYW4ueSAqIHNjYWxlXG4gICAgICAgIH07XG4gICAgICAgIHNjYWxlICo9IGN5Lnpvb20oKTtcbiAgICAgICAgYnVmZkN4dC50cmFuc2xhdGUodHJhbnNsYXRpb24ueCwgdHJhbnNsYXRpb24ueSk7XG4gICAgICAgIGJ1ZmZDeHQuc2NhbGUoc2NhbGUsIHNjYWxlKTtcbiAgICAgICAgdGhpcy5kcmF3RWxlbWVudHMoYnVmZkN4dCwgenNvcnRlZEVsZXMpO1xuICAgICAgICBidWZmQ3h0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTtcbiAgICAgICAgYnVmZkN4dC50cmFuc2xhdGUoLXRyYW5zbGF0aW9uLngsIC10cmFuc2xhdGlvbi55KTtcbiAgICAgIH0gLy8gbmVlZCB0byBmaWxsIGJnIGF0IGVuZCBsaWtlIHRoaXMgaW4gb3JkZXIgdG8gZmlsbCBjbGVhcmVkIHRyYW5zcGFyZW50IHBpeGVscyBpbiBqcGdzXG5cblxuICAgICAgaWYgKG9wdGlvbnMuYmcpIHtcbiAgICAgICAgYnVmZkN4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3Zlcic7XG4gICAgICAgIGJ1ZmZDeHQuZmlsbFN0eWxlID0gb3B0aW9ucy5iZztcbiAgICAgICAgYnVmZkN4dC5yZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBidWZmQ3h0LmZpbGwoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZkNhbnZhcztcbiAgfTtcblxuICBmdW5jdGlvbiBiNjRUb0Jsb2IoYjY0LCBtaW1lVHlwZSkge1xuICAgIHZhciBieXRlcyA9IGF0b2IoYjY0KTtcbiAgICB2YXIgYnVmZiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpO1xuICAgIHZhciBidWZmVWludDggPSBuZXcgVWludDhBcnJheShidWZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1ZmZVaW50OFtpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCbG9iKFtidWZmXSwge1xuICAgICAgdHlwZTogbWltZVR5cGVcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGI2NFVyaVRvQjY0KGI2NHVyaSkge1xuICAgIHZhciBpID0gYjY0dXJpLmluZGV4T2YoJywnKTtcbiAgICByZXR1cm4gYjY0dXJpLnN1YnN0cihpICsgMSk7XG4gIH1cblxuICBmdW5jdGlvbiBvdXRwdXQob3B0aW9ucywgY2FudmFzLCBtaW1lVHlwZSkge1xuICAgIHZhciBnZXRCNjRVcmkgPSBmdW5jdGlvbiBnZXRCNjRVcmkoKSB7XG4gICAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgb3B0aW9ucy5xdWFsaXR5KTtcbiAgICB9O1xuXG4gICAgc3dpdGNoIChvcHRpb25zLm91dHB1dCkge1xuICAgICAgY2FzZSAnYmxvYi1wcm9taXNlJzpcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgICAgICAgIGlmIChibG9iICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGJsb2IpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ2BjYW52YXMudG9CbG9iKClgIHNlbnQgYSBudWxsIHZhbHVlIGluIGl0cyBjYWxsYmFjaycpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgbWltZVR5cGUsIG9wdGlvbnMucXVhbGl0eSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlICdibG9iJzpcbiAgICAgICAgcmV0dXJuIGI2NFRvQmxvYihiNjRVcmlUb0I2NChnZXRCNjRVcmkoKSksIG1pbWVUeXBlKTtcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGI2NFVyaVRvQjY0KGdldEI2NFVyaSgpKTtcblxuICAgICAgY2FzZSAnYmFzZTY0dXJpJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBnZXRCNjRVcmkoKTtcbiAgICB9XG4gIH1cblxuICBDUnAkMi5wbmcgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHJldHVybiBvdXRwdXQob3B0aW9ucywgdGhpcy5idWZmZXJDYW52YXNJbWFnZShvcHRpb25zKSwgJ2ltYWdlL3BuZycpO1xuICB9O1xuXG4gIENScCQyLmpwZyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG91dHB1dChvcHRpb25zLCB0aGlzLmJ1ZmZlckNhbnZhc0ltYWdlKG9wdGlvbnMpLCAnaW1hZ2UvanBlZycpO1xuICB9O1xuXG4gIHZhciBDUnAkMSA9IHt9O1xuXG4gIENScCQxLm5vZGVTaGFwZUltcGwgPSBmdW5jdGlvbiAobmFtZSwgY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCwgcG9pbnRzKSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlICdlbGxpcHNlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd0VsbGlwc2VQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd1BvbHlnb25QYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQsIHBvaW50cyk7XG5cbiAgICAgIGNhc2UgJ3JvdW5kLXBvbHlnb24nOlxuICAgICAgICByZXR1cm4gdGhpcy5kcmF3Um91bmRQb2x5Z29uUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0LCBwb2ludHMpO1xuXG4gICAgICBjYXNlICdyb3VuZHJlY3RhbmdsZSc6XG4gICAgICBjYXNlICdyb3VuZC1yZWN0YW5nbGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5kcmF3Um91bmRSZWN0YW5nbGVQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICBjYXNlICdjdXRyZWN0YW5nbGUnOlxuICAgICAgY2FzZSAnY3V0LXJlY3RhbmdsZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmRyYXdDdXRSZWN0YW5nbGVQYXRoKGNvbnRleHQsIGNlbnRlclgsIGNlbnRlclksIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICBjYXNlICdib3R0b21yb3VuZHJlY3RhbmdsZSc6XG4gICAgICBjYXNlICdib3R0b20tcm91bmQtcmVjdGFuZ2xlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd0JvdHRvbVJvdW5kUmVjdGFuZ2xlUGF0aChjb250ZXh0LCBjZW50ZXJYLCBjZW50ZXJZLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgY2FzZSAnYmFycmVsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJhd0JhcnJlbFBhdGgoY29udGV4dCwgY2VudGVyWCwgY2VudGVyWSwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBDUiA9IENhbnZhc1JlbmRlcmVyO1xuICB2YXIgQ1JwID0gQ2FudmFzUmVuZGVyZXIucHJvdG90eXBlO1xuICBDUnAuQ0FOVkFTX0xBWUVSUyA9IDM7IC8vXG5cbiAgQ1JwLlNFTEVDVF9CT1ggPSAwO1xuICBDUnAuRFJBRyA9IDE7XG4gIENScC5OT0RFID0gMjtcbiAgQ1JwLkJVRkZFUl9DT1VOVCA9IDM7IC8vXG5cbiAgQ1JwLlRFWFRVUkVfQlVGRkVSID0gMDtcbiAgQ1JwLk1PVElPTkJMVVJfQlVGRkVSX05PREUgPSAxO1xuICBDUnAuTU9USU9OQkxVUl9CVUZGRVJfRFJBRyA9IDI7XG5cbiAgZnVuY3Rpb24gQ2FudmFzUmVuZGVyZXIob3B0aW9ucykge1xuICAgIHZhciByID0gdGhpcztcbiAgICByLmRhdGEgPSB7XG4gICAgICBjYW52YXNlczogbmV3IEFycmF5KENScC5DQU5WQVNfTEFZRVJTKSxcbiAgICAgIGNvbnRleHRzOiBuZXcgQXJyYXkoQ1JwLkNBTlZBU19MQVlFUlMpLFxuICAgICAgY2FudmFzTmVlZHNSZWRyYXc6IG5ldyBBcnJheShDUnAuQ0FOVkFTX0xBWUVSUyksXG4gICAgICBidWZmZXJDYW52YXNlczogbmV3IEFycmF5KENScC5CVUZGRVJfQ09VTlQpLFxuICAgICAgYnVmZmVyQ29udGV4dHM6IG5ldyBBcnJheShDUnAuQ0FOVkFTX0xBWUVSUylcbiAgICB9O1xuICAgIHZhciB0YXBIbE9mZkF0dHIgPSAnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJztcbiAgICB2YXIgdGFwSGxPZmZTdHlsZSA9ICdyZ2JhKDAsMCwwLDApJztcbiAgICByLmRhdGEuY2FudmFzQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgIHZhciBjb250YWluZXJTdHlsZSA9IHIuZGF0YS5jYW52YXNDb250YWluZXIuc3R5bGU7XG4gICAgci5kYXRhLmNhbnZhc0NvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgICBjb250YWluZXJTdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgY29udGFpbmVyU3R5bGUuekluZGV4ID0gJzAnO1xuICAgIGNvbnRhaW5lclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgdmFyIGNvbnRhaW5lciA9IG9wdGlvbnMuY3kuY29udGFpbmVyKCk7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHIuZGF0YS5jYW52YXNDb250YWluZXIpO1xuICAgIGNvbnRhaW5lci5zdHlsZVt0YXBIbE9mZkF0dHJdID0gdGFwSGxPZmZTdHlsZTtcbiAgICB2YXIgc3R5bGVNYXAgPSB7XG4gICAgICAnLXdlYmtpdC11c2VyLXNlbGVjdCc6ICdub25lJyxcbiAgICAgICctbW96LXVzZXItc2VsZWN0JzogJy1tb3otbm9uZScsXG4gICAgICAndXNlci1zZWxlY3QnOiAnbm9uZScsXG4gICAgICAnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJzogJ3JnYmEoMCwwLDAsMCknLFxuICAgICAgJ291dGxpbmUtc3R5bGUnOiAnbm9uZSdcbiAgICB9O1xuXG4gICAgaWYgKG1zKCkpIHtcbiAgICAgIHN0eWxlTWFwWyctbXMtdG91Y2gtYWN0aW9uJ10gPSAnbm9uZSc7XG4gICAgICBzdHlsZU1hcFsndG91Y2gtYWN0aW9uJ10gPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDUnAuQ0FOVkFTX0xBWUVSUzsgaSsrKSB7XG4gICAgICB2YXIgY2FudmFzID0gci5kYXRhLmNhbnZhc2VzW2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgICAgci5kYXRhLmNvbnRleHRzW2ldID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBPYmplY3Qua2V5cyhzdHlsZU1hcCkuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBjYW52YXMuc3R5bGVba10gPSBzdHlsZU1hcFtrXTtcbiAgICAgIH0pO1xuICAgICAgY2FudmFzLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgaSk7XG4gICAgICBjYW52YXMuc3R5bGUuekluZGV4ID0gU3RyaW5nKENScC5DQU5WQVNfTEFZRVJTIC0gaSk7XG4gICAgICByLmRhdGEuY2FudmFzQ29udGFpbmVyLmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbaV0gPSBmYWxzZTtcbiAgICB9XG5cbiAgICByLmRhdGEudG9wQ2FudmFzID0gci5kYXRhLmNhbnZhc2VzWzBdO1xuICAgIHIuZGF0YS5jYW52YXNlc1tDUnAuTk9ERV0uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgJ2xheWVyJyArIENScC5OT0RFICsgJy1ub2RlJyk7XG4gICAgci5kYXRhLmNhbnZhc2VzW0NScC5TRUxFQ1RfQk9YXS5zZXRBdHRyaWJ1dGUoJ2RhdGEtaWQnLCAnbGF5ZXInICsgQ1JwLlNFTEVDVF9CT1ggKyAnLXNlbGVjdGJveCcpO1xuICAgIHIuZGF0YS5jYW52YXNlc1tDUnAuRFJBR10uc2V0QXR0cmlidXRlKCdkYXRhLWlkJywgJ2xheWVyJyArIENScC5EUkFHICsgJy1kcmFnJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IENScC5CVUZGRVJfQ09VTlQ7IGkrKykge1xuICAgICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuICAgICAgci5kYXRhLmJ1ZmZlckNvbnRleHRzW2ldID0gci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLmdldENvbnRleHQoJzJkJyk7XG4gICAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldLnNldEF0dHJpYnV0ZSgnZGF0YS1pZCcsICdidWZmZXInICsgaSk7XG4gICAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUuekluZGV4ID0gU3RyaW5nKC1pIC0gMSk7XG4gICAgICByLmRhdGEuYnVmZmVyQ2FudmFzZXNbaV0uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOyAvL3IuZGF0YS5jYW52YXNDb250YWluZXIuYXBwZW5kQ2hpbGQoci5kYXRhLmJ1ZmZlckNhbnZhc2VzW2ldKTtcbiAgICB9XG5cbiAgICByLnBhdGhzRW5hYmxlZCA9IHRydWU7XG4gICAgdmFyIGVtcHR5QmIgPSBtYWtlQm91bmRpbmdCb3goKTtcblxuICAgIHZhciBnZXRCb3hDZW50ZXIgPSBmdW5jdGlvbiBnZXRCb3hDZW50ZXIoYmIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IChiYi54MSArIGJiLngyKSAvIDIsXG4gICAgICAgIHk6IChiYi55MSArIGJiLnkyKSAvIDJcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHZhciBnZXRDZW50ZXJPZmZzZXQgPSBmdW5jdGlvbiBnZXRDZW50ZXJPZmZzZXQoYmIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IC1iYi53IC8gMixcbiAgICAgICAgeTogLWJiLmggLyAyXG4gICAgICB9O1xuICAgIH07XG5cbiAgICB2YXIgYmFja2dyb3VuZFRpbWVzdGFtcEhhc0NoYW5nZWQgPSBmdW5jdGlvbiBiYWNrZ3JvdW5kVGltZXN0YW1wSGFzQ2hhbmdlZChlbGUpIHtcbiAgICAgIHZhciBfcCA9IGVsZVswXS5fcHJpdmF0ZTtcbiAgICAgIHZhciBzYW1lID0gX3Aub2xkQmFja2dyb3VuZFRpbWVzdGFtcCA9PT0gX3AuYmFja2dyb3VuZFRpbWVzdGFtcDtcbiAgICAgIHJldHVybiAhc2FtZTtcbiAgICB9O1xuXG4gICAgdmFyIGdldFN0eWxlS2V5ID0gZnVuY3Rpb24gZ2V0U3R5bGVLZXkoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLm5vZGVLZXk7XG4gICAgfTtcblxuICAgIHZhciBnZXRMYWJlbEtleSA9IGZ1bmN0aW9uIGdldExhYmVsS2V5KGVsZSkge1xuICAgICAgcmV0dXJuIGVsZVswXS5fcHJpdmF0ZS5sYWJlbFN0eWxlS2V5O1xuICAgIH07XG5cbiAgICB2YXIgZ2V0U291cmNlTGFiZWxLZXkgPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbEtleShlbGUpIHtcbiAgICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUuc291cmNlTGFiZWxTdHlsZUtleTtcbiAgICB9O1xuXG4gICAgdmFyIGdldFRhcmdldExhYmVsS2V5ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxLZXkoZWxlKSB7XG4gICAgICByZXR1cm4gZWxlWzBdLl9wcml2YXRlLnRhcmdldExhYmVsU3R5bGVLZXk7XG4gICAgfTtcblxuICAgIHZhciBkcmF3RWxlbWVudCA9IGZ1bmN0aW9uIGRyYXdFbGVtZW50KGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sIHVzZUVsZU9wYWNpdHkpIHtcbiAgICAgIHJldHVybiByLmRyYXdFbGVtZW50KGNvbnRleHQsIGVsZSwgYmIsIGZhbHNlLCBmYWxzZSwgdXNlRWxlT3BhY2l0eSk7XG4gICAgfTtcblxuICAgIHZhciBkcmF3TGFiZWwgPSBmdW5jdGlvbiBkcmF3TGFiZWwoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgdXNlRWxlT3BhY2l0eSkge1xuICAgICAgcmV0dXJuIHIuZHJhd0VsZW1lbnRUZXh0KGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sICdtYWluJywgdXNlRWxlT3BhY2l0eSk7XG4gICAgfTtcblxuICAgIHZhciBkcmF3U291cmNlTGFiZWwgPSBmdW5jdGlvbiBkcmF3U291cmNlTGFiZWwoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgdXNlRWxlT3BhY2l0eSkge1xuICAgICAgcmV0dXJuIHIuZHJhd0VsZW1lbnRUZXh0KGNvbnRleHQsIGVsZSwgYmIsIHNjYWxlZExhYmVsU2hvd24sICdzb3VyY2UnLCB1c2VFbGVPcGFjaXR5KTtcbiAgICB9O1xuXG4gICAgdmFyIGRyYXdUYXJnZXRMYWJlbCA9IGZ1bmN0aW9uIGRyYXdUYXJnZXRMYWJlbChjb250ZXh0LCBlbGUsIGJiLCBzY2FsZWRMYWJlbFNob3duLCB1c2VFbGVPcGFjaXR5KSB7XG4gICAgICByZXR1cm4gci5kcmF3RWxlbWVudFRleHQoY29udGV4dCwgZWxlLCBiYiwgc2NhbGVkTGFiZWxTaG93biwgJ3RhcmdldCcsIHVzZUVsZU9wYWNpdHkpO1xuICAgIH07XG5cbiAgICB2YXIgZ2V0RWxlbWVudEJveCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCb3goZWxlKSB7XG4gICAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUuYm9keUJvdW5kcztcbiAgICB9O1xuXG4gICAgdmFyIGdldExhYmVsQm94ID0gZnVuY3Rpb24gZ2V0TGFiZWxCb3goZWxlKSB7XG4gICAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubGFiZWxCb3VuZHMubWFpbiB8fCBlbXB0eUJiO1xuICAgIH07XG5cbiAgICB2YXIgZ2V0U291cmNlTGFiZWxCb3ggPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbEJveChlbGUpIHtcbiAgICAgIGVsZS5ib3VuZGluZ0JveCgpO1xuICAgICAgcmV0dXJuIGVsZVswXS5fcHJpdmF0ZS5sYWJlbEJvdW5kcy5zb3VyY2UgfHwgZW1wdHlCYjtcbiAgICB9O1xuXG4gICAgdmFyIGdldFRhcmdldExhYmVsQm94ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxCb3goZWxlKSB7XG4gICAgICBlbGUuYm91bmRpbmdCb3goKTtcbiAgICAgIHJldHVybiBlbGVbMF0uX3ByaXZhdGUubGFiZWxCb3VuZHMudGFyZ2V0IHx8IGVtcHR5QmI7XG4gICAgfTtcblxuICAgIHZhciBpc0xhYmVsVmlzaWJsZUF0U2NhbGUgPSBmdW5jdGlvbiBpc0xhYmVsVmlzaWJsZUF0U2NhbGUoZWxlLCBzY2FsZWRMYWJlbFNob3duKSB7XG4gICAgICByZXR1cm4gc2NhbGVkTGFiZWxTaG93bjtcbiAgICB9O1xuXG4gICAgdmFyIGdldEVsZW1lbnRSb3RhdGlvblBvaW50ID0gZnVuY3Rpb24gZ2V0RWxlbWVudFJvdGF0aW9uUG9pbnQoZWxlKSB7XG4gICAgICByZXR1cm4gZ2V0Qm94Q2VudGVyKGdldEVsZW1lbnRCb3goZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciBhZGRUZXh0TWFyZ2luID0gZnVuY3Rpb24gYWRkVGV4dE1hcmdpbihwcmVmaXgsIHB0LCBlbGUpIHtcbiAgICAgIHZhciBwcmUgPSBwcmVmaXggPyBwcmVmaXggKyAnLScgOiAnJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHB0LnggKyBlbGUucHN0eWxlKHByZSArICd0ZXh0LW1hcmdpbi14JykucGZWYWx1ZSxcbiAgICAgICAgeTogcHQueSArIGVsZS5wc3R5bGUocHJlICsgJ3RleHQtbWFyZ2luLXknKS5wZlZhbHVlXG4gICAgICB9O1xuICAgIH07XG5cbiAgICB2YXIgZ2V0UnNQdCA9IGZ1bmN0aW9uIGdldFJzUHQoZWxlLCB4LCB5KSB7XG4gICAgICB2YXIgcnMgPSBlbGVbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiByc1t4XSxcbiAgICAgICAgeTogcnNbeV1cbiAgICAgIH07XG4gICAgfTtcblxuICAgIHZhciBnZXRMYWJlbFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRMYWJlbFJvdGF0aW9uUG9pbnQoZWxlKSB7XG4gICAgICByZXR1cm4gYWRkVGV4dE1hcmdpbignJywgZ2V0UnNQdChlbGUsICdsYWJlbFgnLCAnbGFiZWxZJyksIGVsZSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uUG9pbnQoZWxlKSB7XG4gICAgICByZXR1cm4gYWRkVGV4dE1hcmdpbignc291cmNlJywgZ2V0UnNQdChlbGUsICdzb3VyY2VMYWJlbFgnLCAnc291cmNlTGFiZWxZJyksIGVsZSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uUG9pbnQgPSBmdW5jdGlvbiBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uUG9pbnQoZWxlKSB7XG4gICAgICByZXR1cm4gYWRkVGV4dE1hcmdpbigndGFyZ2V0JywgZ2V0UnNQdChlbGUsICd0YXJnZXRMYWJlbFgnLCAndGFyZ2V0TGFiZWxZJyksIGVsZSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRFbGVtZW50Um90YXRpb25PZmZzZXQgPSBmdW5jdGlvbiBnZXRFbGVtZW50Um90YXRpb25PZmZzZXQoZWxlKSB7XG4gICAgICByZXR1cm4gZ2V0Q2VudGVyT2Zmc2V0KGdldEVsZW1lbnRCb3goZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRTb3VyY2VMYWJlbFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0U291cmNlTGFiZWxSb3RhdGlvbk9mZnNldChlbGUpIHtcbiAgICAgIHJldHVybiBnZXRDZW50ZXJPZmZzZXQoZ2V0U291cmNlTGFiZWxCb3goZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRUYXJnZXRMYWJlbFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvbk9mZnNldChlbGUpIHtcbiAgICAgIHJldHVybiBnZXRDZW50ZXJPZmZzZXQoZ2V0VGFyZ2V0TGFiZWxCb3goZWxlKSk7XG4gICAgfTtcblxuICAgIHZhciBnZXRMYWJlbFJvdGF0aW9uT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0TGFiZWxSb3RhdGlvbk9mZnNldChlbGUpIHtcbiAgICAgIHZhciBiYiA9IGdldExhYmVsQm94KGVsZSk7XG4gICAgICB2YXIgcCA9IGdldENlbnRlck9mZnNldChnZXRMYWJlbEJveChlbGUpKTtcblxuICAgICAgaWYgKGVsZS5pc05vZGUoKSkge1xuICAgICAgICBzd2l0Y2ggKGVsZS5wc3R5bGUoJ3RleHQtaGFsaWduJykudmFsdWUpIHtcbiAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgIHAueCA9IC1iYi53O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwLnggPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGVsZS5wc3R5bGUoJ3RleHQtdmFsaWduJykudmFsdWUpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgcC55ID0gLWJiLmg7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICBwLnkgPSAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHA7XG4gICAgfTtcblxuICAgIHZhciBlbGVUeHJDYWNoZSA9IHIuZGF0YS5lbGVUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICAgIGdldEtleTogZ2V0U3R5bGVLZXksXG4gICAgICBkb2VzRWxlSW52YWxpZGF0ZUtleTogYmFja2dyb3VuZFRpbWVzdGFtcEhhc0NoYW5nZWQsXG4gICAgICBkcmF3RWxlbWVudDogZHJhd0VsZW1lbnQsXG4gICAgICBnZXRCb3VuZGluZ0JveDogZ2V0RWxlbWVudEJveCxcbiAgICAgIGdldFJvdGF0aW9uUG9pbnQ6IGdldEVsZW1lbnRSb3RhdGlvblBvaW50LFxuICAgICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldEVsZW1lbnRSb3RhdGlvbk9mZnNldCxcbiAgICAgIGFsbG93RWRnZVR4ckNhY2hpbmc6IGZhbHNlLFxuICAgICAgYWxsb3dQYXJlbnRUeHJDYWNoaW5nOiBmYWxzZVxuICAgIH0pO1xuICAgIHZhciBsYmxUeHJDYWNoZSA9IHIuZGF0YS5sYmxUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICAgIGdldEtleTogZ2V0TGFiZWxLZXksXG4gICAgICBkcmF3RWxlbWVudDogZHJhd0xhYmVsLFxuICAgICAgZ2V0Qm91bmRpbmdCb3g6IGdldExhYmVsQm94LFxuICAgICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0TGFiZWxSb3RhdGlvblBvaW50LFxuICAgICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldExhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICAgIH0pO1xuICAgIHZhciBzbGJUeHJDYWNoZSA9IHIuZGF0YS5zbGJUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICAgIGdldEtleTogZ2V0U291cmNlTGFiZWxLZXksXG4gICAgICBkcmF3RWxlbWVudDogZHJhd1NvdXJjZUxhYmVsLFxuICAgICAgZ2V0Qm91bmRpbmdCb3g6IGdldFNvdXJjZUxhYmVsQm94LFxuICAgICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0U291cmNlTGFiZWxSb3RhdGlvblBvaW50LFxuICAgICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldFNvdXJjZUxhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICAgIH0pO1xuICAgIHZhciB0bGJUeHJDYWNoZSA9IHIuZGF0YS50bGJUeHJDYWNoZSA9IG5ldyBFbGVtZW50VGV4dHVyZUNhY2hlKHIsIHtcbiAgICAgIGdldEtleTogZ2V0VGFyZ2V0TGFiZWxLZXksXG4gICAgICBkcmF3RWxlbWVudDogZHJhd1RhcmdldExhYmVsLFxuICAgICAgZ2V0Qm91bmRpbmdCb3g6IGdldFRhcmdldExhYmVsQm94LFxuICAgICAgZ2V0Um90YXRpb25Qb2ludDogZ2V0VGFyZ2V0TGFiZWxSb3RhdGlvblBvaW50LFxuICAgICAgZ2V0Um90YXRpb25PZmZzZXQ6IGdldFRhcmdldExhYmVsUm90YXRpb25PZmZzZXQsXG4gICAgICBpc1Zpc2libGU6IGlzTGFiZWxWaXNpYmxlQXRTY2FsZVxuICAgIH0pO1xuICAgIHZhciBseXJUeHJDYWNoZSA9IHIuZGF0YS5seXJUeHJDYWNoZSA9IG5ldyBMYXllcmVkVGV4dHVyZUNhY2hlKHIpO1xuICAgIHIub25VcGRhdGVFbGVDYWxjcyhmdW5jdGlvbiBpbnZhbGlkYXRlVGV4dHVyZUNhY2hlcyh3aWxsRHJhdywgZWxlcykge1xuICAgICAgLy8gZWFjaCBjYWNoZSBzaG91bGQgY2hlY2sgZm9yIHN1Yi1rZXkgZGlmZiB0byBzZWUgdGhhdCB0aGUgdXBkYXRlIGFmZmVjdHMgdGhhdCBjYWNoZSBwYXJ0aWN1bGFybHlcbiAgICAgIGVsZVR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICAgIGxibFR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICAgIHNsYlR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTtcbiAgICAgIHRsYlR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTsgLy8gYW55IGNoYW5nZSBpbnZhbGlkYXRlcyB0aGUgbGF5ZXJzXG5cbiAgICAgIGx5clR4ckNhY2hlLmludmFsaWRhdGVFbGVtZW50cyhlbGVzKTsgLy8gdXBkYXRlIHRoZSBvbGQgYmcgdGltZXN0YW1wIHNvIGRpZmZzIGNhbiBiZSBkb25lIGluIHRoZSBlbGUgdHhyIGNhY2hlc1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgZWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIF9wID0gZWxlc1tfaV0uX3ByaXZhdGU7XG4gICAgICAgIF9wLm9sZEJhY2tncm91bmRUaW1lc3RhbXAgPSBfcC5iYWNrZ3JvdW5kVGltZXN0YW1wO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlZmluZUluTGF5ZXJzID0gZnVuY3Rpb24gcmVmaW5lSW5MYXllcnMocmVxcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGx5clR4ckNhY2hlLmVucXVldWVFbGVtZW50UmVmaW5lbWVudChyZXFzW2ldLmVsZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsZVR4ckNhY2hlLm9uRGVxdWV1ZShyZWZpbmVJbkxheWVycyk7XG4gICAgbGJsVHhyQ2FjaGUub25EZXF1ZXVlKHJlZmluZUluTGF5ZXJzKTtcbiAgICBzbGJUeHJDYWNoZS5vbkRlcXVldWUocmVmaW5lSW5MYXllcnMpO1xuICAgIHRsYlR4ckNhY2hlLm9uRGVxdWV1ZShyZWZpbmVJbkxheWVycyk7XG4gIH1cblxuICBDUnAucmVkcmF3SGludCA9IGZ1bmN0aW9uIChncm91cCwgYm9vbCkge1xuICAgIHZhciByID0gdGhpcztcblxuICAgIHN3aXRjaCAoZ3JvdXApIHtcbiAgICAgIGNhc2UgJ2VsZXMnOlxuICAgICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwLk5PREVdID0gYm9vbDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2RyYWcnOlxuICAgICAgICByLmRhdGEuY2FudmFzTmVlZHNSZWRyYXdbQ1JwLkRSQUddID0gYm9vbDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIHIuZGF0YS5jYW52YXNOZWVkc1JlZHJhd1tDUnAuU0VMRUNUX0JPWF0gPSBib29sO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07IC8vIHdoZXRoZXIgdG8gdXNlIFBhdGgyRCBjYWNoaW5nIGZvciBkcmF3aW5nXG5cblxuICB2YXIgcGF0aHNJbXBsZCA9IHR5cGVvZiBQYXRoMkQgIT09ICd1bmRlZmluZWQnO1xuXG4gIENScC5wYXRoMmRFbmFibGVkID0gZnVuY3Rpb24gKG9uKSB7XG4gICAgaWYgKG9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhdGhzRW5hYmxlZDtcbiAgICB9XG5cbiAgICB0aGlzLnBhdGhzRW5hYmxlZCA9IG9uID8gdHJ1ZSA6IGZhbHNlO1xuICB9O1xuXG4gIENScC51c2VQYXRocyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcGF0aHNJbXBsZCAmJiB0aGlzLnBhdGhzRW5hYmxlZDtcbiAgfTtcblxuICBDUnAuc2V0SW1nU21vb3RoaW5nID0gZnVuY3Rpb24gKGNvbnRleHQsIGJvb2wpIHtcbiAgICBpZiAoY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgIT0gbnVsbCkge1xuICAgICAgY29udGV4dC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBib29sO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGJvb2w7XG4gICAgICBjb250ZXh0Lm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGJvb2w7XG4gICAgICBjb250ZXh0Lm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gYm9vbDtcbiAgICB9XG4gIH07XG5cbiAgQ1JwLmdldEltZ1Ntb290aGluZyA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmltYWdlU21vb3RoaW5nRW5hYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbnRleHQud2Via2l0SW1hZ2VTbW9vdGhpbmdFbmFibGVkIHx8IGNvbnRleHQubW96SW1hZ2VTbW9vdGhpbmdFbmFibGVkIHx8IGNvbnRleHQubXNJbWFnZVNtb290aGluZ0VuYWJsZWQ7XG4gICAgfVxuICB9O1xuXG4gIENScC5tYWtlT2Zmc2NyZWVuQ2FudmFzID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB2YXIgY2FudmFzO1xuXG4gICAgaWYgKCh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2YoT2Zmc2NyZWVuQ2FudmFzKSkgIT09IChcInVuZGVmaW5lZFwiICkpIHtcbiAgICAgIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMod2lkdGgsIGhlaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG5cbiAgICByZXR1cm4gY2FudmFzO1xuICB9O1xuXG4gIFtDUnAkYSwgQ1JwJDksIENScCQ4LCBDUnAkNywgQ1JwJDYsIENScCQ1LCBDUnAkNCwgQ1JwJDMsIENScCQyLCBDUnAkMV0uZm9yRWFjaChmdW5jdGlvbiAocHJvcHMpIHtcbiAgICBleHRlbmQoQ1JwLCBwcm9wcyk7XG4gIH0pO1xuXG4gIHZhciByZW5kZXJlciA9IFt7XG4gICAgbmFtZTogJ251bGwnLFxuICAgIGltcGw6IE51bGxSZW5kZXJlclxuICB9LCB7XG4gICAgbmFtZTogJ2Jhc2UnLFxuICAgIGltcGw6IEJSXG4gIH0sIHtcbiAgICBuYW1lOiAnY2FudmFzJyxcbiAgICBpbXBsOiBDUlxuICB9XTtcblxuICB2YXIgaW5jRXh0cyA9IFt7XG4gICAgdHlwZTogJ2xheW91dCcsXG4gICAgZXh0ZW5zaW9uczogbGF5b3V0XG4gIH0sIHtcbiAgICB0eXBlOiAncmVuZGVyZXInLFxuICAgIGV4dGVuc2lvbnM6IHJlbmRlcmVyXG4gIH1dO1xuXG4gIHZhciBleHRlbnNpb25zID0ge307IC8vIHJlZ2lzdGVyZWQgbW9kdWxlcyBmb3IgZXh0ZW5zaW9ucywgaW5kZXhlZCBieSBuYW1lXG5cbiAgdmFyIG1vZHVsZXMgPSB7fTtcblxuICBmdW5jdGlvbiBzZXRFeHRlbnNpb24odHlwZSwgbmFtZSwgcmVnaXN0cmFudCkge1xuICAgIHZhciBleHQgPSByZWdpc3RyYW50O1xuXG4gICAgdmFyIG92ZXJyaWRlRXJyID0gZnVuY3Rpb24gb3ZlcnJpZGVFcnIoZmllbGQpIHtcbiAgICAgIHdhcm4oJ0NhbiBub3QgcmVnaXN0ZXIgYCcgKyBuYW1lICsgJ2AgZm9yIGAnICsgdHlwZSArICdgIHNpbmNlIGAnICsgZmllbGQgKyAnYCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcHJvdG90eXBlIGFuZCBjYW4gbm90IGJlIG92ZXJyaWRkZW4nKTtcbiAgICB9O1xuXG4gICAgaWYgKHR5cGUgPT09ICdjb3JlJykge1xuICAgICAgaWYgKENvcmUucHJvdG90eXBlW25hbWVdKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIENvcmUucHJvdG90eXBlW25hbWVdID0gcmVnaXN0cmFudDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjb2xsZWN0aW9uJykge1xuICAgICAgaWYgKENvbGxlY3Rpb24ucHJvdG90eXBlW25hbWVdKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZUVycihuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIENvbGxlY3Rpb24ucHJvdG90eXBlW25hbWVdID0gcmVnaXN0cmFudDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsYXlvdXQnKSB7XG4gICAgICAvLyBmaWxsIGluIG1pc3NpbmcgbGF5b3V0IGZ1bmN0aW9ucyBpbiB0aGUgcHJvdG90eXBlXG4gICAgICB2YXIgTGF5b3V0ID0gZnVuY3Rpb24gTGF5b3V0KG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgcmVnaXN0cmFudC5jYWxsKHRoaXMsIG9wdGlvbnMpOyAvLyBtYWtlIHN1cmUgbGF5b3V0IGhhcyBfcHJpdmF0ZSBmb3IgdXNlIHcvIHN0ZCBhcGlzIGxpa2UgLm9uKClcblxuICAgICAgICBpZiAoIXBsYWluT2JqZWN0KHRoaXMuX3ByaXZhdGUpKSB7XG4gICAgICAgICAgdGhpcy5fcHJpdmF0ZSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJpdmF0ZS5jeSA9IG9wdGlvbnMuY3k7XG4gICAgICAgIHRoaXMuX3ByaXZhdGUubGlzdGVuZXJzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlRW1pdHRlcigpO1xuICAgICAgfTtcblxuICAgICAgdmFyIGxheW91dFByb3RvID0gTGF5b3V0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUocmVnaXN0cmFudC5wcm90b3R5cGUpO1xuICAgICAgdmFyIG9wdExheW91dEZucyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdExheW91dEZucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZm5OYW1lID0gb3B0TGF5b3V0Rm5zW2ldO1xuXG4gICAgICAgIGxheW91dFByb3RvW2ZuTmFtZV0gPSBsYXlvdXRQcm90b1tmbk5hbWVdIHx8IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICAgIH0gLy8gZWl0aGVyIC5zdGFydCgpIG9yIC5ydW4oKSBpcyBkZWZpbmVkLCBzbyBhdXRvZ2VuIHRoZSBvdGhlclxuXG5cbiAgICAgIGlmIChsYXlvdXRQcm90by5zdGFydCAmJiAhbGF5b3V0UHJvdG8ucnVuKSB7XG4gICAgICAgIGxheW91dFByb3RvLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKCFsYXlvdXRQcm90by5zdGFydCAmJiBsYXlvdXRQcm90by5ydW4pIHtcbiAgICAgICAgbGF5b3V0UHJvdG8uc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpcy5ydW4oKTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZ1N0b3AgPSByZWdpc3RyYW50LnByb3RvdHlwZS5zdG9wO1xuXG4gICAgICBsYXlvdXRQcm90by5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3B0cyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmFuaW1hdGUpIHtcbiAgICAgICAgICB2YXIgYW5pcyA9IHRoaXMuYW5pbWF0aW9ucztcblxuICAgICAgICAgIGlmIChhbmlzKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYW5pcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgYW5pc1tfaV0uc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZWdTdG9wKSB7XG4gICAgICAgICAgcmVnU3RvcC5jYWxsKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZW1pdCgnbGF5b3V0c3RvcCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9O1xuXG4gICAgICBpZiAoIWxheW91dFByb3RvLmRlc3Ryb3kpIHtcbiAgICAgICAgbGF5b3V0UHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgbGF5b3V0UHJvdG8uY3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcml2YXRlLmN5O1xuICAgICAgfTtcblxuICAgICAgdmFyIGdldEN5ID0gZnVuY3Rpb24gZ2V0Q3kobGF5b3V0KSB7XG4gICAgICAgIHJldHVybiBsYXlvdXQuX3ByaXZhdGUuY3k7XG4gICAgICB9O1xuXG4gICAgICB2YXIgZW1pdHRlck9wdHMgPSB7XG4gICAgICAgIGFkZEV2ZW50RmllbGRzOiBmdW5jdGlvbiBhZGRFdmVudEZpZWxkcyhsYXlvdXQsIGV2dCkge1xuICAgICAgICAgIGV2dC5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgICAgZXZ0LmN5ID0gZ2V0Q3kobGF5b3V0KTtcbiAgICAgICAgICBldnQudGFyZ2V0ID0gbGF5b3V0O1xuICAgICAgICB9LFxuICAgICAgICBidWJibGU6IGZ1bmN0aW9uIGJ1YmJsZSgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcGFyZW50OiBmdW5jdGlvbiBwYXJlbnQobGF5b3V0KSB7XG4gICAgICAgICAgcmV0dXJuIGdldEN5KGxheW91dCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBleHRlbmQobGF5b3V0UHJvdG8sIHtcbiAgICAgICAgY3JlYXRlRW1pdHRlcjogZnVuY3Rpb24gY3JlYXRlRW1pdHRlcigpIHtcbiAgICAgICAgICB0aGlzLl9wcml2YXRlLmVtaXR0ZXIgPSBuZXcgRW1pdHRlcihlbWl0dGVyT3B0cywgdGhpcyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVtaXR0ZXI6IGZ1bmN0aW9uIGVtaXR0ZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3ByaXZhdGUuZW1pdHRlcjtcbiAgICAgICAgfSxcbiAgICAgICAgb246IGZ1bmN0aW9uIG9uKGV2dCwgY2IpIHtcbiAgICAgICAgICB0aGlzLmVtaXR0ZXIoKS5vbihldnQsIGNiKTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcbiAgICAgICAgb25lOiBmdW5jdGlvbiBvbmUoZXZ0LCBjYikge1xuICAgICAgICAgIHRoaXMuZW1pdHRlcigpLm9uZShldnQsIGNiKTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcbiAgICAgICAgb25jZTogZnVuY3Rpb24gb25jZShldnQsIGNiKSB7XG4gICAgICAgICAgdGhpcy5lbWl0dGVyKCkub25lKGV2dCwgY2IpO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmVMaXN0ZW5lcjogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoZXZ0LCBjYikge1xuICAgICAgICAgIHRoaXMuZW1pdHRlcigpLnJlbW92ZUxpc3RlbmVyKGV2dCwgY2IpO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycygpIHtcbiAgICAgICAgICB0aGlzLmVtaXR0ZXIoKS5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSxcbiAgICAgICAgZW1pdDogZnVuY3Rpb24gZW1pdChldnQsIHBhcmFtcykge1xuICAgICAgICAgIHRoaXMuZW1pdHRlcigpLmVtaXQoZXZ0LCBwYXJhbXMpO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGRlZmluZS5ldmVudEFsaWFzZXNPbihsYXlvdXRQcm90byk7XG4gICAgICBleHQgPSBMYXlvdXQ7IC8vIHJlcGxhY2Ugd2l0aCBvdXIgd3JhcHBlZCBsYXlvdXRcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZW5kZXJlcicgJiYgbmFtZSAhPT0gJ251bGwnICYmIG5hbWUgIT09ICdiYXNlJykge1xuICAgICAgLy8gdXNlciByZWdpc3RlcmVkIHJlbmRlcmVycyBpbmhlcml0IGZyb20gYmFzZVxuICAgICAgdmFyIEJhc2VSZW5kZXJlciA9IGdldEV4dGVuc2lvbigncmVuZGVyZXInLCAnYmFzZScpO1xuICAgICAgdmFyIGJQcm90byA9IEJhc2VSZW5kZXJlci5wcm90b3R5cGU7XG4gICAgICB2YXIgUmVnaXN0cmFudFJlbmRlcmVyID0gcmVnaXN0cmFudDtcbiAgICAgIHZhciByUHJvdG8gPSByZWdpc3RyYW50LnByb3RvdHlwZTtcblxuICAgICAgdmFyIFJlbmRlcmVyID0gZnVuY3Rpb24gUmVuZGVyZXIoKSB7XG4gICAgICAgIEJhc2VSZW5kZXJlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBSZWdpc3RyYW50UmVuZGVyZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBwcm90byA9IFJlbmRlcmVyLnByb3RvdHlwZTtcblxuICAgICAgZm9yICh2YXIgcE5hbWUgaW4gYlByb3RvKSB7XG4gICAgICAgIHZhciBwVmFsID0gYlByb3RvW3BOYW1lXTtcbiAgICAgICAgdmFyIGV4aXN0c0luUiA9IHJQcm90b1twTmFtZV0gIT0gbnVsbDtcblxuICAgICAgICBpZiAoZXhpc3RzSW5SKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJyaWRlRXJyKHBOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3RvW3BOYW1lXSA9IHBWYWw7IC8vIHRha2UgaW1wbCBmcm9tIGJhc2VcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgX3BOYW1lIGluIHJQcm90bykge1xuICAgICAgICBwcm90b1tfcE5hbWVdID0gclByb3RvW19wTmFtZV07IC8vIHRha2UgaW1wbCBmcm9tIHJlZ2lzdHJhbnRcbiAgICAgIH1cblxuICAgICAgYlByb3RvLmNsaWVudEZ1bmN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHByb3RvW25hbWVdID0gcHJvdG9bbmFtZV0gfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGVycm9yKCdSZW5kZXJlciBkb2VzIG5vdCBpbXBsZW1lbnQgYHJlbmRlcmVyLicgKyBuYW1lICsgJygpYCBvbiBpdHMgcHJvdG90eXBlJyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGV4dCA9IFJlbmRlcmVyO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ19fcHJvdG9fXycgfHwgdHlwZSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCB0eXBlID09PSAncHJvdG90eXBlJykge1xuICAgICAgLy8gdG8gYXZvaWQgcG90ZW50aWFsIHByb3RvdHlwZSBwb2xsdXRpb25cbiAgICAgIHJldHVybiBlcnJvcih0eXBlICsgJyBpcyBhbiBpbGxlZ2FsIHR5cGUgdG8gYmUgcmVnaXN0ZXJlZCwgcG9zc2libHkgbGVhZCB0byBwcm90b3R5cGUgcG9sbHV0aW9ucycpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRNYXAoe1xuICAgICAgbWFwOiBleHRlbnNpb25zLFxuICAgICAga2V5czogW3R5cGUsIG5hbWVdLFxuICAgICAgdmFsdWU6IGV4dFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHR5cGUsIG5hbWUpIHtcbiAgICByZXR1cm4gZ2V0TWFwKHtcbiAgICAgIG1hcDogZXh0ZW5zaW9ucyxcbiAgICAgIGtleXM6IFt0eXBlLCBuYW1lXVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0TW9kdWxlKHR5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWUsIHJlZ2lzdHJhbnQpIHtcbiAgICByZXR1cm4gc2V0TWFwKHtcbiAgICAgIG1hcDogbW9kdWxlcyxcbiAgICAgIGtleXM6IFt0eXBlLCBuYW1lLCBtb2R1bGVUeXBlLCBtb2R1bGVOYW1lXSxcbiAgICAgIHZhbHVlOiByZWdpc3RyYW50XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNb2R1bGUodHlwZSwgbmFtZSwgbW9kdWxlVHlwZSwgbW9kdWxlTmFtZSkge1xuICAgIHJldHVybiBnZXRNYXAoe1xuICAgICAgbWFwOiBtb2R1bGVzLFxuICAgICAga2V5czogW3R5cGUsIG5hbWUsIG1vZHVsZVR5cGUsIG1vZHVsZU5hbWVdXG4gICAgfSk7XG4gIH1cblxuICB2YXIgZXh0ZW5zaW9uID0gZnVuY3Rpb24gZXh0ZW5zaW9uKCkge1xuICAgIC8vIGUuZy4gZXh0ZW5zaW9uKCdyZW5kZXJlcicsICdzdmcnKVxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgeyAuLi4gfSlcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgICByZXR1cm4gc2V0RXh0ZW5zaW9uLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgJ25vZGVTaGFwZScsICdlbGxpcHNlJylcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7XG4gICAgICByZXR1cm4gZ2V0TW9kdWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfSAvLyBlLmcuIGV4dGVuc2lvbigncmVuZGVyZXInLCAnc3ZnJywgJ25vZGVTaGFwZScsICdlbGxpcHNlJywgeyAuLi4gfSlcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA1KSB7XG4gICAgICByZXR1cm4gc2V0TW9kdWxlLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIGV4dGVuc2lvbiBhY2Nlc3Mgc3ludGF4Jyk7XG4gICAgfVxuICB9OyAvLyBhbGxvd3MgYSBjb3JlIGluc3RhbmNlIHRvIGFjY2VzcyBleHRlbnNpb25zIGludGVybmFsbHlcblxuXG4gIENvcmUucHJvdG90eXBlLmV4dGVuc2lvbiA9IGV4dGVuc2lvbjsgLy8gaW5jbHVkZWQgZXh0ZW5zaW9uc1xuXG4gIGluY0V4dHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICBncm91cC5leHRlbnNpb25zLmZvckVhY2goZnVuY3Rpb24gKGV4dCkge1xuICAgICAgc2V0RXh0ZW5zaW9uKGdyb3VwLnR5cGUsIGV4dC5uYW1lLCBleHQuaW1wbCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vICh1c2VmdWwgZm9yIGluaXQpXG5cbiAgdmFyIFN0eWxlc2hlZXQgPSBmdW5jdGlvbiBTdHlsZXNoZWV0KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTdHlsZXNoZWV0KSkge1xuICAgICAgcmV0dXJuIG5ldyBTdHlsZXNoZWV0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9O1xuXG4gIHZhciBzaGVldGZuID0gU3R5bGVzaGVldC5wcm90b3R5cGU7XG5cbiAgc2hlZXRmbi5pbnN0YW5jZVN0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJ3N0eWxlc2hlZXQnO1xuICB9OyAvLyBqdXN0IHN0b3JlIHRoZSBzZWxlY3RvciB0byBiZSBwYXJzZWQgbGF0ZXJcblxuXG4gIHNoZWV0Zm4uc2VsZWN0b3IgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICB2YXIgaSA9IHRoaXMubGVuZ3RoKys7XG4gICAgdGhpc1tpXSA9IHtcbiAgICAgIHNlbGVjdG9yOiBzZWxlY3RvcixcbiAgICAgIHByb3BlcnRpZXM6IFtdXG4gICAgfTtcbiAgICByZXR1cm4gdGhpczsgLy8gY2hhaW5pbmdcbiAgfTsgLy8ganVzdCBzdG9yZSB0aGUgcHJvcGVydHkgdG8gYmUgcGFyc2VkIGxhdGVyXG5cblxuICBzaGVldGZuLmNzcyA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBpID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgaWYgKHN0cmluZyhuYW1lKSkge1xuICAgICAgdGhpc1tpXS5wcm9wZXJ0aWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocGxhaW5PYmplY3QobmFtZSkpIHtcbiAgICAgIHZhciBtYXAgPSBuYW1lO1xuICAgICAgdmFyIHByb3BOYW1lcyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcE5hbWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wTmFtZXNbal07XG4gICAgICAgIHZhciBtYXBWYWwgPSBtYXBba2V5XTtcblxuICAgICAgICBpZiAobWFwVmFsID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwcm9wID0gU3R5bGUucHJvcGVydGllc1trZXldIHx8IFN0eWxlLnByb3BlcnRpZXNbZGFzaDJjYW1lbChrZXkpXTtcblxuICAgICAgICBpZiAocHJvcCA9PSBudWxsKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX25hbWUgPSBwcm9wLm5hbWU7XG4gICAgICAgIHZhciBfdmFsdWUgPSBtYXBWYWw7XG4gICAgICAgIHRoaXNbaV0ucHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBfbmFtZSxcbiAgICAgICAgICB2YWx1ZTogX3ZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xuICB9O1xuXG4gIHNoZWV0Zm4uc3R5bGUgPSBzaGVldGZuLmNzczsgLy8gZ2VuZXJhdGUgYSByZWFsIHN0eWxlIG9iamVjdCBmcm9tIHRoZSBkdW1teSBzdHlsZXNoZWV0XG5cbiAgc2hlZXRmbi5nZW5lcmF0ZVN0eWxlID0gZnVuY3Rpb24gKGN5KSB7XG4gICAgdmFyIHN0eWxlID0gbmV3IFN0eWxlKGN5KTtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRUb1N0eWxlKHN0eWxlKTtcbiAgfTsgLy8gYXBwZW5kIGEgZHVtbXkgc3R5bGVzaGVldCBvYmplY3Qgb24gYSByZWFsIHN0eWxlIG9iamVjdFxuXG5cbiAgc2hlZXRmbi5hcHBlbmRUb1N0eWxlID0gZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY29udGV4dCA9IHRoaXNbaV07XG4gICAgICB2YXIgc2VsZWN0b3IgPSBjb250ZXh0LnNlbGVjdG9yO1xuICAgICAgdmFyIHByb3BzID0gY29udGV4dC5wcm9wZXJ0aWVzO1xuICAgICAgc3R5bGUuc2VsZWN0b3Ioc2VsZWN0b3IpOyAvLyBhcHBseSBzZWxlY3RvclxuXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBwcm9wID0gcHJvcHNbal07XG4gICAgICAgIHN0eWxlLmNzcyhwcm9wLm5hbWUsIHByb3AudmFsdWUpOyAvLyBhcHBseSBwcm9wZXJ0eVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHlsZTtcbiAgfTtcblxuICB2YXIgdmVyc2lvbiA9IFwiMy4yNi4wXCI7XG5cbiAgdmFyIGN5dG9zY2FwZSA9IGZ1bmN0aW9uIGN5dG9zY2FwZShvcHRpb25zKSB7XG4gICAgLy8gaWYgbm8gb3B0aW9ucyBzcGVjaWZpZWQsIHVzZSBkZWZhdWx0XG4gICAgaWYgKG9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH0gLy8gY3JlYXRlIGluc3RhbmNlXG5cblxuICAgIGlmIChwbGFpbk9iamVjdChvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG5ldyBDb3JlKG9wdGlvbnMpO1xuICAgIH0gLy8gYWxsb3cgZm9yIHJlZ2lzdHJhdGlvbiBvZiBleHRlbnNpb25zXG4gICAgZWxzZSBpZiAoc3RyaW5nKG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uLmFwcGx5KGV4dGVuc2lvbiwgYXJndW1lbnRzKTtcbiAgICB9XG4gIH07IC8vIGUuZy4gY3l0b3NjYXBlLnVzZSggcmVxdWlyZSgnY3l0b3NjYXBlLWZvbycpLCBiYXIgKVxuXG5cbiAgY3l0b3NjYXBlLnVzZSA9IGZ1bmN0aW9uIChleHQpIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7IC8vIGFyZ3MgdG8gcGFzcyB0byBleHRcblxuICAgIGFyZ3MudW5zaGlmdChjeXRvc2NhcGUpOyAvLyBjeXRvc2NhcGUgaXMgZmlyc3QgYXJnIHRvIGV4dFxuXG4gICAgZXh0LmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIGN5dG9zY2FwZS53YXJuaW5ncyA9IGZ1bmN0aW9uIChib29sKSB7XG4gICAgcmV0dXJuIHdhcm5pbmdzKGJvb2wpO1xuICB9OyAvLyByZXBsYWNlZCBieSBidWlsZCBzeXN0ZW1cblxuXG4gIGN5dG9zY2FwZS52ZXJzaW9uID0gdmVyc2lvbjsgLy8gZXhwb3NlIHB1YmxpYyBhcGlzIChtb3N0bHkgZm9yIGV4dGVuc2lvbnMpXG5cbiAgY3l0b3NjYXBlLnN0eWxlc2hlZXQgPSBjeXRvc2NhcGUuU3R5bGVzaGVldCA9IFN0eWxlc2hlZXQ7XG5cbiAgcmV0dXJuIGN5dG9zY2FwZTtcblxufSkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/cytoscape/dist/cytoscape.umd.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dayjs/dayjs.min.js": +/*!************************************************!*\ + !*** ../../../node_modules/dayjs/dayjs.min.js ***! + \************************************************/ +/***/ (function(module) { + +eval("!function(t,e){ true?module.exports=e():0}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new b(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var b=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLEtBQW9ELG9CQUFvQixDQUF3SSxDQUFDLGtCQUFrQixhQUFhLE9BQU8sd0hBQXdILCtFQUErRSxJQUFJLHdEQUF3RCxlQUFlLDhCQUE4QixrQkFBa0IsbUJBQW1CLFlBQVksc0NBQXNDLHlCQUF5QixzQkFBc0IsZUFBZSxvQkFBb0IsbURBQW1ELCtCQUErQixJQUFJLGdCQUFnQixXQUFXLHdDQUF3QyxpQkFBaUIsbUJBQW1CLE1BQU0sWUFBWSxNQUFNLGdDQUFnQyxPQUFPLE9BQU8seUJBQXlCLFNBQVMsSUFBSSxpQkFBaUIsdUJBQXVCLG1CQUFtQix1QkFBdUIsc0JBQXNCLHlCQUF5QixvQkFBb0Isd0JBQXdCLFdBQVcsRUFBRSxjQUFjLHFCQUFxQix1TUFBdU0saUNBQWlDLCtCQUErQixNQUFNLGlEQUFpRCx3REFBd0QsMERBQTBELG9CQUFvQixpQkFBaUIsdUJBQXVCLG1CQUFtQixzQkFBc0IsK0JBQStCLHVCQUF1QixtQkFBbUIsNkNBQTZDLGVBQWUsWUFBWSxFQUFFLHVCQUF1QixjQUFjLFFBQVEsbUJBQW1CLDRDQUE0QyxJQUFJLEdBQUcsSUFBSSxxQkFBcUIseUJBQXlCLHFGQUFxRixxQkFBcUIsR0FBRyw0QkFBNEIsSUFBSSxNQUFNLHNDQUFzQyxRQUFRLGlCQUFpQiwwQkFBMEIsbUJBQW1CLFlBQVksU0FBUyxJQUFJLE1BQU0sV0FBVyxrQ0FBa0MsS0FBSyxxREFBcUQsK0JBQStCLG1CQUFtQixrQkFBa0IsZUFBZSxjQUFjLDhEQUE4RCxPQUFPLHVCQUF1Qix5RUFBeUUsNEJBQTRCLG9CQUFvQiw4QkFBOEIsVUFBVSxXQUFXLHVCQUF1QiwwQ0FBMEMsd0VBQXdFLElBQUksOERBQThELG1LQUFtSyxnQ0FBZ0MsZ0NBQWdDLHVIQUF1SCxTQUFTLHFCQUFxQiw2R0FBNkcsa0RBQWtELEtBQUssTUFBTSxZQUFZLHNCQUFzQixnQkFBZ0Isc0NBQXNDLE1BQU0sOEJBQThCLHNCQUFzQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0LmpzP2RiODQiXSwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczplfHxzZWxmKS5kYXlqc19wbHVnaW5fY3VzdG9tUGFyc2VGb3JtYXQ9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXtMVFM6XCJoOm1tOnNzIEFcIixMVDpcImg6bW0gQVwiLEw6XCJNTS9ERC9ZWVlZXCIsTEw6XCJNTU1NIEQsIFlZWVlcIixMTEw6XCJNTU1NIEQsIFlZWVkgaDptbSBBXCIsTExMTDpcImRkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEFcIn0sdD0vKFxcW1teW10qXFxdKXwoWy1fOi8uLCgpXFxzXSspfChBfGF8WVlZWXxZWT98TU0/TT9NP3xEb3xERD98aGg/fEhIP3xtbT98c3M/fFN7MSwzfXx6fFpaPykvZyxuPS9cXGRcXGQvLHI9L1xcZFxcZD8vLGk9L1xcZCpbXi1fOi8sKClcXHNcXGRdKy8sbz17fSxzPWZ1bmN0aW9uKGUpe3JldHVybihlPStlKSsoZT42OD8xOTAwOjJlMyl9O3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzW2VdPSt0fX0sZj1bL1srLV1cXGRcXGQ6PyhcXGRcXGQpP3xaLyxmdW5jdGlvbihlKXsodGhpcy56b25lfHwodGhpcy56b25lPXt9KSkub2Zmc2V0PWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiAwO2lmKFwiWlwiPT09ZSlyZXR1cm4gMDt2YXIgdD1lLm1hdGNoKC8oWystXXxcXGRcXGQpL2cpLG49NjAqdFsxXSsoK3RbMl18fDApO3JldHVybiAwPT09bj8wOlwiK1wiPT09dFswXT8tbjpufShlKX1dLGg9ZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTtyZXR1cm4gdCYmKHQuaW5kZXhPZj90OnQucy5jb25jYXQodC5mKSl9LHU9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPW8ubWVyaWRpZW07aWYocil7Zm9yKHZhciBpPTE7aTw9MjQ7aSs9MSlpZihlLmluZGV4T2YocihpLDAsdCkpPi0xKXtuPWk+MTI7YnJlYWt9fWVsc2Ugbj1lPT09KHQ/XCJwbVwiOlwiUE1cIik7cmV0dXJuIG59LGQ9e0E6W2ksZnVuY3Rpb24oZSl7dGhpcy5hZnRlcm5vb249dShlLCExKX1dLGE6W2ksZnVuY3Rpb24oZSl7dGhpcy5hZnRlcm5vb249dShlLCEwKX1dLFM6Wy9cXGQvLGZ1bmN0aW9uKGUpe3RoaXMubWlsbGlzZWNvbmRzPTEwMCorZX1dLFNTOltuLGZ1bmN0aW9uKGUpe3RoaXMubWlsbGlzZWNvbmRzPTEwKitlfV0sU1NTOlsvXFxkezN9LyxmdW5jdGlvbihlKXt0aGlzLm1pbGxpc2Vjb25kcz0rZX1dLHM6W3IsYShcInNlY29uZHNcIildLHNzOltyLGEoXCJzZWNvbmRzXCIpXSxtOltyLGEoXCJtaW51dGVzXCIpXSxtbTpbcixhKFwibWludXRlc1wiKV0sSDpbcixhKFwiaG91cnNcIildLGg6W3IsYShcImhvdXJzXCIpXSxISDpbcixhKFwiaG91cnNcIildLGhoOltyLGEoXCJob3Vyc1wiKV0sRDpbcixhKFwiZGF5XCIpXSxERDpbbixhKFwiZGF5XCIpXSxEbzpbaSxmdW5jdGlvbihlKXt2YXIgdD1vLm9yZGluYWwsbj1lLm1hdGNoKC9cXGQrLyk7aWYodGhpcy5kYXk9blswXSx0KWZvcih2YXIgcj0xO3I8PTMxO3IrPTEpdChyKS5yZXBsYWNlKC9cXFt8XFxdL2csXCJcIik9PT1lJiYodGhpcy5kYXk9cil9XSxNOltyLGEoXCJtb250aFwiKV0sTU06W24sYShcIm1vbnRoXCIpXSxNTU06W2ksZnVuY3Rpb24oZSl7dmFyIHQ9aChcIm1vbnRoc1wiKSxuPShoKFwibW9udGhzU2hvcnRcIil8fHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgwLDMpfSkpKS5pbmRleE9mKGUpKzE7aWYobjwxKXRocm93IG5ldyBFcnJvcjt0aGlzLm1vbnRoPW4lMTJ8fG59XSxNTU1NOltpLGZ1bmN0aW9uKGUpe3ZhciB0PWgoXCJtb250aHNcIikuaW5kZXhPZihlKSsxO2lmKHQ8MSl0aHJvdyBuZXcgRXJyb3I7dGhpcy5tb250aD10JTEyfHx0fV0sWTpbL1srLV0/XFxkKy8sYShcInllYXJcIildLFlZOltuLGZ1bmN0aW9uKGUpe3RoaXMueWVhcj1zKGUpfV0sWVlZWTpbL1xcZHs0fS8sYShcInllYXJcIildLFo6ZixaWjpmfTtmdW5jdGlvbiBjKG4pe3ZhciByLGk7cj1uLGk9byYmby5mb3JtYXRzO2Zvcih2YXIgcz0obj1yLnJlcGxhY2UoLyhcXFtbXlxcXV0rXSl8KExUUz98bHsxLDR9fEx7MSw0fSkvZywoZnVuY3Rpb24odCxuLHIpe3ZhciBvPXImJnIudG9VcHBlckNhc2UoKTtyZXR1cm4gbnx8aVtyXXx8ZVtyXXx8aVtvXS5yZXBsYWNlKC8oXFxbW15cXF1dK10pfChNTU1NfE1NfEREfGRkZGQpL2csKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdHx8bi5zbGljZSgxKX0pKX0pKSkubWF0Y2godCksYT1zLmxlbmd0aCxmPTA7ZjxhO2YrPTEpe3ZhciBoPXNbZl0sdT1kW2hdLGM9dSYmdVswXSxsPXUmJnVbMV07c1tmXT1sP3tyZWdleDpjLHBhcnNlcjpsfTpoLnJlcGxhY2UoL15cXFt8XFxdJC9nLFwiXCIpfXJldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9e30sbj0wLHI9MDtuPGE7bis9MSl7dmFyIGk9c1tuXTtpZihcInN0cmluZ1wiPT10eXBlb2YgaSlyKz1pLmxlbmd0aDtlbHNle3ZhciBvPWkucmVnZXgsZj1pLnBhcnNlcixoPWUuc2xpY2UociksdT1vLmV4ZWMoaClbMF07Zi5jYWxsKHQsdSksZT1lLnJlcGxhY2UodSxcIlwiKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUuYWZ0ZXJub29uO2lmKHZvaWQgMCE9PXQpe3ZhciBuPWUuaG91cnM7dD9uPDEyJiYoZS5ob3Vycys9MTIpOjEyPT09biYmKGUuaG91cnM9MCksZGVsZXRlIGUuYWZ0ZXJub29ufX0odCksdH19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtuLnAuY3VzdG9tUGFyc2VGb3JtYXQ9ITAsZSYmZS5wYXJzZVR3b0RpZ2l0WWVhciYmKHM9ZS5wYXJzZVR3b0RpZ2l0WWVhcik7dmFyIHI9dC5wcm90b3R5cGUsaT1yLnBhcnNlO3IucGFyc2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRlLHI9ZS51dGMscz1lLmFyZ3M7dGhpcy4kdT1yO3ZhciBhPXNbMV07aWYoXCJzdHJpbmdcIj09dHlwZW9mIGEpe3ZhciBmPSEwPT09c1syXSxoPSEwPT09c1szXSx1PWZ8fGgsZD1zWzJdO2gmJihkPXNbMl0pLG89dGhpcy4kbG9jYWxlKCksIWYmJmQmJihvPW4uTHNbZF0pLHRoaXMuJGQ9ZnVuY3Rpb24oZSx0LG4pe3RyeXtpZihbXCJ4XCIsXCJYXCJdLmluZGV4T2YodCk+LTEpcmV0dXJuIG5ldyBEYXRlKChcIlhcIj09PXQ/MWUzOjEpKmUpO3ZhciByPWModCkoZSksaT1yLnllYXIsbz1yLm1vbnRoLHM9ci5kYXksYT1yLmhvdXJzLGY9ci5taW51dGVzLGg9ci5zZWNvbmRzLHU9ci5taWxsaXNlY29uZHMsZD1yLnpvbmUsbD1uZXcgRGF0ZSxtPXN8fChpfHxvPzE6bC5nZXREYXRlKCkpLE09aXx8bC5nZXRGdWxsWWVhcigpLFk9MDtpJiYhb3x8KFk9bz4wP28tMTpsLmdldE1vbnRoKCkpO3ZhciBwPWF8fDAsdj1mfHwwLEQ9aHx8MCxnPXV8fDA7cmV0dXJuIGQ/bmV3IERhdGUoRGF0ZS5VVEMoTSxZLG0scCx2LEQsZys2MCpkLm9mZnNldCoxZTMpKTpuP25ldyBEYXRlKERhdGUuVVRDKE0sWSxtLHAsdixELGcpKTpuZXcgRGF0ZShNLFksbSxwLHYsRCxnKX1jYXRjaChlKXtyZXR1cm4gbmV3IERhdGUoXCJcIil9fSh0LGEsciksdGhpcy5pbml0KCksZCYmITAhPT1kJiYodGhpcy4kTD10aGlzLmxvY2FsZShkKS4kTCksdSYmdCE9dGhpcy5mb3JtYXQoYSkmJih0aGlzLiRkPW5ldyBEYXRlKFwiXCIpKSxvPXt9fWVsc2UgaWYoYSBpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgbD1hLmxlbmd0aCxtPTE7bTw9bDttKz0xKXtzWzFdPWFbbS0xXTt2YXIgTT1uLmFwcGx5KHRoaXMscyk7aWYoTS5pc1ZhbGlkKCkpe3RoaXMuJGQ9TS4kZCx0aGlzLiRMPU0uJEwsdGhpcy5pbml0KCk7YnJlYWt9bT09PWwmJih0aGlzLiRkPW5ldyBEYXRlKFwiXCIpKX1lbHNlIGkuY2FsbCh0aGlzLGUpfX19KSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dayjs/plugin/customParseFormat.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dayjs/plugin/isoWeek.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/dayjs/plugin/isoWeek.js ***! + \*****************************************************/ +/***/ (function(module) { + +eval("!function(e,t){ true?module.exports=t():0}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9pc29XZWVrLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsS0FBb0Qsb0JBQW9CLENBQThILENBQUMsa0JBQWtCLGFBQWEsWUFBWSx1QkFBdUIsa0JBQWtCLGlDQUFpQyxlQUFlLHlCQUF5QixzQkFBc0IsdUJBQXVCLCtEQUErRCx3SkFBd0osMEJBQTBCLDBCQUEwQixzRUFBc0UsZ0JBQWdCLHdCQUF3QixrQ0FBa0MseUtBQXlLIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXlqcy9wbHVnaW4vaXNvV2Vlay5qcz9jOGNiIl0sInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZGF5anNfcGx1Z2luX2lzb1dlZWs9dCgpfSh0aGlzLChmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPVwiZGF5XCI7cmV0dXJuIGZ1bmN0aW9uKHQsaSxzKXt2YXIgYT1mdW5jdGlvbih0KXtyZXR1cm4gdC5hZGQoNC10Lmlzb1dlZWtkYXkoKSxlKX0sZD1pLnByb3RvdHlwZTtkLmlzb1dlZWtZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcykueWVhcigpfSxkLmlzb1dlZWs9ZnVuY3Rpb24odCl7aWYoIXRoaXMuJHV0aWxzKCkudSh0KSlyZXR1cm4gdGhpcy5hZGQoNyoodC10aGlzLmlzb1dlZWsoKSksZSk7dmFyIGksZCxuLG8scj1hKHRoaXMpLHU9KGk9dGhpcy5pc29XZWVrWWVhcigpLGQ9dGhpcy4kdSxuPShkP3MudXRjOnMpKCkueWVhcihpKS5zdGFydE9mKFwieWVhclwiKSxvPTQtbi5pc29XZWVrZGF5KCksbi5pc29XZWVrZGF5KCk+NCYmKG8rPTcpLG4uYWRkKG8sZSkpO3JldHVybiByLmRpZmYodSxcIndlZWtcIikrMX0sZC5pc29XZWVrZGF5PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiR1dGlscygpLnUoZSk/dGhpcy5kYXkoKXx8Nzp0aGlzLmRheSh0aGlzLmRheSgpJTc/ZTplLTcpfTt2YXIgbj1kLnN0YXJ0T2Y7ZC5zdGFydE9mPWZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy4kdXRpbHMoKSxzPSEhaS51KHQpfHx0O3JldHVyblwiaXNvd2Vla1wiPT09aS5wKGUpP3M/dGhpcy5kYXRlKHRoaXMuZGF0ZSgpLSh0aGlzLmlzb1dlZWtkYXkoKS0xKSkuc3RhcnRPZihcImRheVwiKTp0aGlzLmRhdGUodGhpcy5kYXRlKCktMS0odGhpcy5pc29XZWVrZGF5KCktMSkrNykuZW5kT2YoXCJkYXlcIik6bi5iaW5kKHRoaXMpKGUsdCl9fX0pKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dayjs/plugin/isoWeek.js\n"); + +/***/ }), + +/***/ "../../../node_modules/debug/src/browser.js": +/*!**************************************************!*\ + !*** ../../../node_modules/debug/src/browser.js ***! + \**************************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.6\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"../../../node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFlBQVk7QUFDWixpQkFBaUI7QUFDakIsZUFBZTtBQUNmLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQTRDOztBQUV2RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sc3FDQUFXO0FBQ2pCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFVOztBQUVuQyxPQUFPLFlBQVk7O0FBRW5CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvYnJvd3Nlci5qcz9mOGUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9IGxvY2Fsc3RvcmFnZSgpO1xuZXhwb3J0cy5kZXN0cm95ID0gKCgpID0+IHtcblx0bGV0IHdhcm5lZCA9IGZhbHNlO1xuXG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKCF3YXJuZWQpIHtcblx0XHRcdHdhcm5lZCA9IHRydWU7XG5cdFx0XHRjb25zb2xlLndhcm4oJ0luc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4nKTtcblx0XHR9XG5cdH07XG59KSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcblx0JyMwMDAwQ0MnLFxuXHQnIzAwMDBGRicsXG5cdCcjMDAzM0NDJyxcblx0JyMwMDMzRkYnLFxuXHQnIzAwNjZDQycsXG5cdCcjMDA2NkZGJyxcblx0JyMwMDk5Q0MnLFxuXHQnIzAwOTlGRicsXG5cdCcjMDBDQzAwJyxcblx0JyMwMENDMzMnLFxuXHQnIzAwQ0M2NicsXG5cdCcjMDBDQzk5Jyxcblx0JyMwMENDQ0MnLFxuXHQnIzAwQ0NGRicsXG5cdCcjMzMwMENDJyxcblx0JyMzMzAwRkYnLFxuXHQnIzMzMzNDQycsXG5cdCcjMzMzM0ZGJyxcblx0JyMzMzY2Q0MnLFxuXHQnIzMzNjZGRicsXG5cdCcjMzM5OUNDJyxcblx0JyMzMzk5RkYnLFxuXHQnIzMzQ0MwMCcsXG5cdCcjMzNDQzMzJyxcblx0JyMzM0NDNjYnLFxuXHQnIzMzQ0M5OScsXG5cdCcjMzNDQ0NDJyxcblx0JyMzM0NDRkYnLFxuXHQnIzY2MDBDQycsXG5cdCcjNjYwMEZGJyxcblx0JyM2NjMzQ0MnLFxuXHQnIzY2MzNGRicsXG5cdCcjNjZDQzAwJyxcblx0JyM2NkNDMzMnLFxuXHQnIzk5MDBDQycsXG5cdCcjOTkwMEZGJyxcblx0JyM5OTMzQ0MnLFxuXHQnIzk5MzNGRicsXG5cdCcjOTlDQzAwJyxcblx0JyM5OUNDMzMnLFxuXHQnI0NDMDAwMCcsXG5cdCcjQ0MwMDMzJyxcblx0JyNDQzAwNjYnLFxuXHQnI0NDMDA5OScsXG5cdCcjQ0MwMENDJyxcblx0JyNDQzAwRkYnLFxuXHQnI0NDMzMwMCcsXG5cdCcjQ0MzMzMzJyxcblx0JyNDQzMzNjYnLFxuXHQnI0NDMzM5OScsXG5cdCcjQ0MzM0NDJyxcblx0JyNDQzMzRkYnLFxuXHQnI0NDNjYwMCcsXG5cdCcjQ0M2NjMzJyxcblx0JyNDQzk5MDAnLFxuXHQnI0NDOTkzMycsXG5cdCcjQ0NDQzAwJyxcblx0JyNDQ0NDMzMnLFxuXHQnI0ZGMDAwMCcsXG5cdCcjRkYwMDMzJyxcblx0JyNGRjAwNjYnLFxuXHQnI0ZGMDA5OScsXG5cdCcjRkYwMENDJyxcblx0JyNGRjAwRkYnLFxuXHQnI0ZGMzMwMCcsXG5cdCcjRkYzMzMzJyxcblx0JyNGRjMzNjYnLFxuXHQnI0ZGMzM5OScsXG5cdCcjRkYzM0NDJyxcblx0JyNGRjMzRkYnLFxuXHQnI0ZGNjYwMCcsXG5cdCcjRkY2NjMzJyxcblx0JyNGRjk5MDAnLFxuXHQnI0ZGOTkzMycsXG5cdCcjRkZDQzAwJyxcblx0JyNGRkNDMzMnXG5dO1xuXG4vKipcbiAqIEN1cnJlbnRseSBvbmx5IFdlYktpdC1iYXNlZCBXZWIgSW5zcGVjdG9ycywgRmlyZWZveCA+PSB2MzEsXG4gKiBhbmQgdGhlIEZpcmVidWcgZXh0ZW5zaW9uIChhbnkgRmlyZWZveCB2ZXJzaW9uKSBhcmUga25vd25cbiAqIHRvIHN1cHBvcnQgXCIlY1wiIENTUyBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBUT0RPOiBhZGQgYSBgbG9jYWxTdG9yYWdlYCB2YXJpYWJsZSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIGNvbG9yc1xuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG5cdC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcblx0Ly8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2Vcblx0Ly8gZXhwbGljaXRseVxuXHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgKHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgd2luZG93LnByb2Nlc3MuX19ud2pzKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuXHRpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBJcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuXHQvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuXHRyZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcblx0XHQvLyBJcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG5cdFx0KHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcblx0XHQvLyBJcyBmaXJlZm94ID49IHYzMT9cblx0XHQvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcblx0XHQvLyBEb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG5cdFx0KHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0YXJnc1swXSA9ICh0aGlzLnVzZUNvbG9ycyA/ICclYycgOiAnJykgK1xuXHRcdHRoaXMubmFtZXNwYWNlICtcblx0XHQodGhpcy51c2VDb2xvcnMgPyAnICVjJyA6ICcgJykgK1xuXHRcdGFyZ3NbMF0gK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICclYyAnIDogJyAnKSArXG5cdFx0JysnICsgbW9kdWxlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuXHRpZiAoIXRoaXMudXNlQ29sb3JzKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG5cdGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpO1xuXG5cdC8vIFRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG5cdC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cblx0Ly8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG5cdGxldCBpbmRleCA9IDA7XG5cdGxldCBsYXN0QyA9IDA7XG5cdGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBtYXRjaCA9PiB7XG5cdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGluZGV4Kys7XG5cdFx0aWYgKG1hdGNoID09PSAnJWMnKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcblx0XHRcdC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG5cdFx0XHRsYXN0QyA9IGluZGV4O1xuXHRcdH1cblx0fSk7XG5cblx0YXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUuZGVidWcoKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKiBJZiBgY29uc29sZS5kZWJ1Z2AgaXMgbm90IGF2YWlsYWJsZSwgZmFsbHMgYmFja1xuICogdG8gYGNvbnNvbGUubG9nYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5leHBvcnRzLmxvZyA9IGNvbnNvbGUuZGVidWcgfHwgY29uc29sZS5sb2cgfHwgKCgpID0+IHt9KTtcblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHR0cnkge1xuXHRcdGlmIChuYW1lc3BhY2VzKSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2Uuc2V0SXRlbSgnZGVidWcnLCBuYW1lc3BhY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBsb2FkKCkge1xuXHRsZXQgcjtcblx0dHJ5IHtcblx0XHRyID0gZXhwb3J0cy5zdG9yYWdlLmdldEl0ZW0oJ2RlYnVnJyk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG5cblx0Ly8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuXHRpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcblx0XHRyID0gcHJvY2Vzcy5lbnYuREVCVUc7XG5cdH1cblxuXHRyZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG5cdHRyeSB7XG5cdFx0Ly8gVFZNTEtpdCAoQXBwbGUgVFYgSlMgUnVudGltZSkgZG9lcyBub3QgaGF2ZSBhIHdpbmRvdyBvYmplY3QsIGp1c3QgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dFxuXHRcdC8vIFRoZSBCcm93c2VyIGFsc28gaGFzIGxvY2FsU3RvcmFnZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQuXG5cdFx0cmV0dXJuIGxvY2FsU3RvcmFnZTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24gKHYpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0cmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVycm9yLm1lc3NhZ2U7XG5cdH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/debug/src/browser.js\n"); + +/***/ }), + +/***/ "../../../node_modules/debug/src/common.js": +/*!*************************************************!*\ + !*** ../../../node_modules/debug/src/common.js ***! + \*************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = __webpack_require__(/*! ms */ \"../../../node_modules/ms/index.js\");\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9jb21tb24uanMuanMiLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1CQUFPLENBQUMsNkNBQUk7QUFDcEM7O0FBRUE7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxlQUFlO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw4Q0FBOEMsU0FBUztBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBOEMsU0FBUztBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9jb21tb24uanM/YmRlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogVGhpcyBpcyB0aGUgY29tbW9uIGxvZ2ljIGZvciBib3RoIHRoZSBOb2RlLmpzIGFuZCB3ZWIgYnJvd3NlclxuICogaW1wbGVtZW50YXRpb25zIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5mdW5jdGlvbiBzZXR1cChlbnYpIHtcblx0Y3JlYXRlRGVidWcuZGVidWcgPSBjcmVhdGVEZWJ1Zztcblx0Y3JlYXRlRGVidWcuZGVmYXVsdCA9IGNyZWF0ZURlYnVnO1xuXHRjcmVhdGVEZWJ1Zy5jb2VyY2UgPSBjb2VyY2U7XG5cdGNyZWF0ZURlYnVnLmRpc2FibGUgPSBkaXNhYmxlO1xuXHRjcmVhdGVEZWJ1Zy5lbmFibGUgPSBlbmFibGU7XG5cdGNyZWF0ZURlYnVnLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRjcmVhdGVEZWJ1Zy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cdGNyZWF0ZURlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXG5cdE9iamVjdC5rZXlzKGVudikuZm9yRWFjaChrZXkgPT4ge1xuXHRcdGNyZWF0ZURlYnVnW2tleV0gPSBlbnZba2V5XTtcblx0fSk7XG5cblx0LyoqXG5cdCogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG5cdCovXG5cblx0Y3JlYXRlRGVidWcubmFtZXMgPSBbXTtcblx0Y3JlYXRlRGVidWcuc2tpcHMgPSBbXTtcblxuXHQvKipcblx0KiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG5cdCpcblx0KiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlciBvciB1cHBlci1jYXNlIGxldHRlciwgaS5lLiBcIm5cIiBhbmQgXCJOXCIuXG5cdCovXG5cdGNyZWF0ZURlYnVnLmZvcm1hdHRlcnMgPSB7fTtcblxuXHQvKipcblx0KiBTZWxlY3RzIGEgY29sb3IgZm9yIGEgZGVidWcgbmFtZXNwYWNlXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHN0cmluZyBmb3IgdGhlIGRlYnVnIGluc3RhbmNlIHRvIGJlIGNvbG9yZWRcblx0KiBAcmV0dXJuIHtOdW1iZXJ8U3RyaW5nfSBBbiBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG5cdFx0bGV0IGhhc2ggPSAwO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lc3BhY2UubGVuZ3RoOyBpKyspIHtcblx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcblx0XHR9XG5cblx0XHRyZXR1cm4gY3JlYXRlRGVidWcuY29sb3JzW01hdGguYWJzKGhhc2gpICUgY3JlYXRlRGVidWcuY29sb3JzLmxlbmd0aF07XG5cdH1cblx0Y3JlYXRlRGVidWcuc2VsZWN0Q29sb3IgPSBzZWxlY3RDb2xvcjtcblxuXHQvKipcblx0KiBDcmVhdGUgYSBkZWJ1Z2dlciB3aXRoIHRoZSBnaXZlbiBgbmFtZXNwYWNlYC5cblx0KlxuXHQqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAcmV0dXJuIHtGdW5jdGlvbn1cblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblx0XHRsZXQgcHJldlRpbWU7XG5cdFx0bGV0IGVuYWJsZU92ZXJyaWRlID0gbnVsbDtcblx0XHRsZXQgbmFtZXNwYWNlc0NhY2hlO1xuXHRcdGxldCBlbmFibGVkQ2FjaGU7XG5cblx0XHRmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzKSB7XG5cdFx0XHQvLyBEaXNhYmxlZD9cblx0XHRcdGlmICghZGVidWcuZW5hYmxlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNlbGYgPSBkZWJ1ZztcblxuXHRcdFx0Ly8gU2V0IGBkaWZmYCB0aW1lc3RhbXBcblx0XHRcdGNvbnN0IGN1cnIgPSBOdW1iZXIobmV3IERhdGUoKSk7XG5cdFx0XHRjb25zdCBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG5cdFx0XHRzZWxmLmRpZmYgPSBtcztcblx0XHRcdHNlbGYucHJldiA9IHByZXZUaW1lO1xuXHRcdFx0c2VsZi5jdXJyID0gY3Vycjtcblx0XHRcdHByZXZUaW1lID0gY3VycjtcblxuXHRcdFx0YXJnc1swXSA9IGNyZWF0ZURlYnVnLmNvZXJjZShhcmdzWzBdKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBBbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuXHRcdFx0XHRhcmdzLnVuc2hpZnQoJyVPJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG5cdFx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdFx0YXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIChtYXRjaCwgZm9ybWF0KSA9PiB7XG5cdFx0XHRcdC8vIElmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcblx0XHRcdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuICclJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRjb25zdCBmb3JtYXR0ZXIgPSBjcmVhdGVEZWJ1Zy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG5cdFx0XHRcdGlmICh0eXBlb2YgZm9ybWF0dGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsID0gYXJnc1tpbmRleF07XG5cdFx0XHRcdFx0bWF0Y2ggPSBmb3JtYXR0ZXIuY2FsbChzZWxmLCB2YWwpO1xuXG5cdFx0XHRcdFx0Ly8gTm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuXHRcdFx0XHRcdGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRpbmRleC0tO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtYXRjaDtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuXHRcdFx0Y3JlYXRlRGVidWcuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG5cdFx0XHRjb25zdCBsb2dGbiA9IHNlbGYubG9nIHx8IGNyZWF0ZURlYnVnLmxvZztcblx0XHRcdGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXHRcdH1cblxuXHRcdGRlYnVnLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcblx0XHRkZWJ1Zy51c2VDb2xvcnMgPSBjcmVhdGVEZWJ1Zy51c2VDb2xvcnMoKTtcblx0XHRkZWJ1Zy5jb2xvciA9IGNyZWF0ZURlYnVnLnNlbGVjdENvbG9yKG5hbWVzcGFjZSk7XG5cdFx0ZGVidWcuZXh0ZW5kID0gZXh0ZW5kO1xuXHRcdGRlYnVnLmRlc3Ryb3kgPSBjcmVhdGVEZWJ1Zy5kZXN0cm95OyAvLyBYWFggVGVtcG9yYXJ5LiBXaWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZWJ1ZywgJ2VuYWJsZWQnLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcblx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRpZiAoZW5hYmxlT3ZlcnJpZGUgIT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gZW5hYmxlT3ZlcnJpZGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5hbWVzcGFjZXNDYWNoZSAhPT0gY3JlYXRlRGVidWcubmFtZXNwYWNlcykge1xuXHRcdFx0XHRcdG5hbWVzcGFjZXNDYWNoZSA9IGNyZWF0ZURlYnVnLm5hbWVzcGFjZXM7XG5cdFx0XHRcdFx0ZW5hYmxlZENhY2hlID0gY3JlYXRlRGVidWcuZW5hYmxlZChuYW1lc3BhY2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVuYWJsZWRDYWNoZTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6IHYgPT4ge1xuXHRcdFx0XHRlbmFibGVPdmVycmlkZSA9IHY7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyBFbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuXHRcdGlmICh0eXBlb2YgY3JlYXRlRGVidWcuaW5pdCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y3JlYXRlRGVidWcuaW5pdChkZWJ1Zyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRlYnVnO1xuXHR9XG5cblx0ZnVuY3Rpb24gZXh0ZW5kKG5hbWVzcGFjZSwgZGVsaW1pdGVyKSB7XG5cdFx0Y29uc3QgbmV3RGVidWcgPSBjcmVhdGVEZWJ1Zyh0aGlzLm5hbWVzcGFjZSArICh0eXBlb2YgZGVsaW1pdGVyID09PSAndW5kZWZpbmVkJyA/ICc6JyA6IGRlbGltaXRlcikgKyBuYW1lc3BhY2UpO1xuXHRcdG5ld0RlYnVnLmxvZyA9IHRoaXMubG9nO1xuXHRcdHJldHVybiBuZXdEZWJ1Zztcblx0fVxuXG5cdC8qKlxuXHQqIEVuYWJsZXMgYSBkZWJ1ZyBtb2RlIGJ5IG5hbWVzcGFjZXMuIFRoaXMgY2FuIGluY2x1ZGUgbW9kZXNcblx0KiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuXHQqXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBlbmFibGUobmFtZXNwYWNlcykge1xuXHRcdGNyZWF0ZURlYnVnLnNhdmUobmFtZXNwYWNlcyk7XG5cdFx0Y3JlYXRlRGVidWcubmFtZXNwYWNlcyA9IG5hbWVzcGFjZXM7XG5cblx0XHRjcmVhdGVEZWJ1Zy5uYW1lcyA9IFtdO1xuXHRcdGNyZWF0ZURlYnVnLnNraXBzID0gW107XG5cblx0XHRsZXQgaTtcblx0XHRjb25zdCBzcGxpdCA9ICh0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzIDogJycpLnNwbGl0KC9bXFxzLF0rLyk7XG5cdFx0Y29uc3QgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRpZiAoIXNwbGl0W2ldKSB7XG5cdFx0XHRcdC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcblxuXHRcdFx0aWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuXHRcdFx0XHRjcmVhdGVEZWJ1Zy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zbGljZSgxKSArICckJykpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3JlYXRlRGVidWcubmFtZXMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMgKyAnJCcpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0KiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cblx0KlxuXHQqIEByZXR1cm4ge1N0cmluZ30gbmFtZXNwYWNlc1xuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGRpc2FibGUoKSB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlcyA9IFtcblx0XHRcdC4uLmNyZWF0ZURlYnVnLm5hbWVzLm1hcCh0b05hbWVzcGFjZSksXG5cdFx0XHQuLi5jcmVhdGVEZWJ1Zy5za2lwcy5tYXAodG9OYW1lc3BhY2UpLm1hcChuYW1lc3BhY2UgPT4gJy0nICsgbmFtZXNwYWNlKVxuXHRcdF0uam9pbignLCcpO1xuXHRcdGNyZWF0ZURlYnVnLmVuYWJsZSgnJyk7XG5cdFx0cmV0dXJuIG5hbWVzcGFjZXM7XG5cdH1cblxuXHQvKipcblx0KiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuXHQqIEByZXR1cm4ge0Jvb2xlYW59XG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG5cdFx0aWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRsZXQgaTtcblx0XHRsZXQgbGVuO1xuXG5cdFx0Zm9yIChpID0gMCwgbGVuID0gY3JlYXRlRGVidWcuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmIChjcmVhdGVEZWJ1Zy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBsZW4gPSBjcmVhdGVEZWJ1Zy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0aWYgKGNyZWF0ZURlYnVnLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCogQ29udmVydCByZWdleHAgdG8gbmFtZXNwYWNlXG5cdCpcblx0KiBAcGFyYW0ge1JlZ0V4cH0gcmVneGVwXG5cdCogQHJldHVybiB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gdG9OYW1lc3BhY2UocmVnZXhwKSB7XG5cdFx0cmV0dXJuIHJlZ2V4cC50b1N0cmluZygpXG5cdFx0XHQuc3Vic3RyaW5nKDIsIHJlZ2V4cC50b1N0cmluZygpLmxlbmd0aCAtIDIpXG5cdFx0XHQucmVwbGFjZSgvXFwuXFwqXFw/JC8sICcqJyk7XG5cdH1cblxuXHQvKipcblx0KiBDb2VyY2UgYHZhbGAuXG5cdCpcblx0KiBAcGFyYW0ge01peGVkfSB2YWxcblx0KiBAcmV0dXJuIHtNaXhlZH1cblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuXHRcdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdFx0cmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxuXG5cdC8qKlxuXHQqIFhYWCBETyBOT1QgVVNFLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHN0dWIgZnVuY3Rpb24uXG5cdCogWFhYIEl0IFdJTEwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuXHQqL1xuXHRmdW5jdGlvbiBkZXN0cm95KCkge1xuXHRcdGNvbnNvbGUud2FybignSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLicpO1xuXHR9XG5cblx0Y3JlYXRlRGVidWcuZW5hYmxlKGNyZWF0ZURlYnVnLmxvYWQoKSk7XG5cblx0cmV0dXJuIGNyZWF0ZURlYnVnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldHVwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/debug/src/common.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dompurify/dist/purify.js": +/*!******************************************************!*\ + !*** ../../../node_modules/dompurify/dist/purify.js ***! + \******************************************************/ +/***/ (function(module) { + +eval("/*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */\n\n(function (global, factory) {\n true ? module.exports = factory() :\n 0;\n})(this, (function () { 'use strict';\n\n const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n } = Object;\n let {\n freeze,\n seal,\n create\n } = Object; // eslint-disable-line import/no-mutable-exports\n\n let {\n apply,\n construct\n } = typeof Reflect !== 'undefined' && Reflect;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n }\n\n const arrayForEach = unapply(Array.prototype.forEach);\n const arrayPop = unapply(Array.prototype.pop);\n const arrayPush = unapply(Array.prototype.push);\n const stringToLowerCase = unapply(String.prototype.toLowerCase);\n const stringToString = unapply(String.prototype.toString);\n const stringMatch = unapply(String.prototype.match);\n const stringReplace = unapply(String.prototype.replace);\n const stringIndexOf = unapply(String.prototype.indexOf);\n const stringTrim = unapply(String.prototype.trim);\n const regExpTest = unapply(RegExp.prototype.test);\n const typeErrorCreate = unconstruct(TypeError);\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /* Add properties to a lookup table */\n\n function addToSet(set, array, transformCaseFunc) {\n var _transformCaseFunc;\n\n transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /* Shallow clone an object */\n\n function clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n newObject[property] = value;\n }\n\n return newObject;\n }\n /* This method automatically checks if the prop is function\n * or getter and behaves accordingly. */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n const text = freeze(['#text']);\n\n const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\n const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n const ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n const DOCTYPE_NAME = seal(/^html$/i);\n\n var EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n ERB_EXPR: ERB_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR,\n DATA_ATTR: DATA_ATTR,\n ARIA_ATTR: ARIA_ATTR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n DOCTYPE_NAME: DOCTYPE_NAME\n });\n\n const getGlobal = () => typeof window === 'undefined' ? null : window;\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\n\n\n const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n const DOMPurify = root => createDOMPurify(root);\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '3.0.3';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n const originalDocument = window.document;\n const currentScript = originalDocument.currentScript;\n let {\n document\n } = window;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n let CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n let SAFE_FOR_TEMPLATES = false;\n /* Decide if document with ... should be returned */\n\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n let PARSER_MEDIA_TYPE;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n const _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [...text]);\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n } // Overwrite existing TrustedTypes policy.\n\n\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY; // Sign local variables required by `sanitize`.\n\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n } // If creating the internal policy succeeded sign internal variables.\n\n\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n const HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n const ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n const ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n const _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc;\n let leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n const _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n const _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n const _isNode = function _isNode(object) {\n return typeof Node === 'object' ? object instanceof Node : object && typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n const _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Make sure that older browsers don't get noscript mXSS */\n\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR, ' ');\n content = stringReplace(content, ERB_EXPR, ' ');\n content = stringReplace(content, TMPLIT_EXPR, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n const _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n let attr;\n let value;\n let lcName;\n let l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n const {\n name,\n namespaceURI\n } = attr;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR, ' ');\n value = stringReplace(value, ERB_EXPR, ' ');\n value = stringReplace(value, TMPLIT_EXPR, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n const lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode;\n\n const shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body;\n let importedNode;\n let currentNode;\n let returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n\n\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n }\n /* If we sanitized `dirty` in-place, return it. */\n\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RvbXB1cmlmeS9kaXN0L3B1cmlmeS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBLEVBQUUsS0FBNEQ7QUFDOUQsRUFBRSxDQUN3RztBQUMxRyxDQUFDLHVCQUF1Qjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxVQUFVOztBQUVkO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZGQUE2RixhQUFhO0FBQzFHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZFQUE2RSxlQUFlO0FBQzVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsby9CQUFvL0I7O0FBRXAvQjtBQUNBLDBaQUEwWjtBQUMxWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpVUFBaVU7QUFDalU7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQ0FBZ0MsRUFBRSxpQkFBaUIsRUFBRSxNQUFNOztBQUUzRDtBQUNBLCtCQUErQixRQUFRO0FBQ3ZDLHdEQUF3RDs7QUFFeEQsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJCQUEyQjtBQUN4QyxhQUFhLG1CQUFtQjtBQUNoQyxjQUFjLG9CQUFvQjtBQUNsQztBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBLGtCQUFrQixzQkFBc0I7QUFDeEMsa0JBQWtCLHNCQUFzQjtBQUN4QyxrQkFBa0IsU0FBUztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLCtDQUErQztBQUMvQzs7QUFFQTtBQUNBLDZDQUE2QztBQUM3Qzs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrREFBa0Q7QUFDbEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0Esc0tBQXNLOztBQUV0SztBQUNBOztBQUVBLHdEQUF3RDtBQUN4RCx3REFBd0Q7QUFDeEQsb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlELHNEQUFzRDtBQUN0RCxzREFBc0Q7QUFDdEQ7QUFDQSx1REFBdUQ7O0FBRXZELHVEQUF1RDs7QUFFdkQsc0VBQXNFOztBQUV0RSx5RUFBeUU7O0FBRXpFLDREQUE0RDs7QUFFNUQsb0RBQW9EOztBQUVwRCw0Q0FBNEM7O0FBRTVDLDhEQUE4RDs7QUFFOUQsOERBQThEOztBQUU5RCw0Q0FBNEM7O0FBRTVDLGlEQUFpRDs7QUFFakQsZ0VBQWdFOztBQUVoRSxpREFBaUQ7O0FBRWpELHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1YsdURBQXVEOztBQUV2RDtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNEQUFzRDtBQUN0RCwrQ0FBK0MseURBQXlEO0FBQ3hHO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBOztBQUVBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekIsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7OztBQUdBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7O0FBR0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsTUFBTTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osVUFBVTtBQUNWO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEIsZ0JBQWdCLFVBQVU7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxXQUFXO0FBQ3JCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUIsZ0JBQWdCLFVBQVU7QUFDMUI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLFNBQVM7QUFDekI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCLGdCQUFnQixTQUFTO0FBQ3pCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCLGdCQUFnQixNQUFNO0FBQ3RCLGdCQUFnQixRQUFRO0FBQ3hCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsTUFBTTtBQUN2QixpQkFBaUIsU0FBUztBQUMxQjs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx5Q0FBeUMsUUFBUTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRO0FBQ3hCLGdCQUFnQixRQUFRO0FBQ3hCLGdCQUFnQixRQUFRO0FBQ3hCLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7OztBQUc1QyxzRkFBc0YsNkRBQTZEO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1VEFBdVQ7QUFDdlQ7QUFDQTtBQUNBOztBQUVBLFFBQVEsd0NBQXdDLG9GQUFvRixvS0FBb0ssaUhBQWlIO0FBQ3paO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkI7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsTUFBTTtBQUN0Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1Isc0NBQXNDOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0M7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBLCtDQUErQzs7O0FBRy9DO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtCQUFrQjtBQUNsQzs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsYUFBYTtBQUM1QixlQUFlLFFBQVE7QUFDdkI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsUUFBUTtBQUN4QixnQkFBZ0IsU0FBUztBQUN6Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxVQUFVO0FBQ3pCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGdCQUFnQixVQUFVO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4Qjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLENBQUM7QUFDRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZG9tcHVyaWZ5L2Rpc3QvcHVyaWZ5LmpzPzhlY2IiXSwic291cmNlc0NvbnRlbnQiOlsiLyohIEBsaWNlbnNlIERPTVB1cmlmeSAzLjAuMyB8IChjKSBDdXJlNTMgYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IFJlbGVhc2VkIHVuZGVyIHRoZSBBcGFjaGUgbGljZW5zZSAyLjAgYW5kIE1vemlsbGEgUHVibGljIExpY2Vuc2UgMi4wIHwgZ2l0aHViLmNvbS9jdXJlNTMvRE9NUHVyaWZ5L2Jsb2IvMy4wLjMvTElDRU5TRSAqL1xuXG4oZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG4gIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG4gIChnbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogZ2xvYmFsIHx8IHNlbGYsIGdsb2JhbC5ET01QdXJpZnkgPSBmYWN0b3J5KCkpO1xufSkodGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIGNvbnN0IHtcbiAgICBlbnRyaWVzLFxuICAgIHNldFByb3RvdHlwZU9mLFxuICAgIGlzRnJvemVuLFxuICAgIGdldFByb3RvdHlwZU9mLFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvclxuICB9ID0gT2JqZWN0O1xuICBsZXQge1xuICAgIGZyZWV6ZSxcbiAgICBzZWFsLFxuICAgIGNyZWF0ZVxuICB9ID0gT2JqZWN0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby1tdXRhYmxlLWV4cG9ydHNcblxuICBsZXQge1xuICAgIGFwcGx5LFxuICAgIGNvbnN0cnVjdFxuICB9ID0gdHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYmIFJlZmxlY3Q7XG5cbiAgaWYgKCFhcHBseSkge1xuICAgIGFwcGx5ID0gZnVuY3Rpb24gYXBwbHkoZnVuLCB0aGlzVmFsdWUsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW4uYXBwbHkodGhpc1ZhbHVlLCBhcmdzKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKCFmcmVlemUpIHtcbiAgICBmcmVlemUgPSBmdW5jdGlvbiBmcmVlemUoeCkge1xuICAgICAgcmV0dXJuIHg7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc2VhbCkge1xuICAgIHNlYWwgPSBmdW5jdGlvbiBzZWFsKHgpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gIH1cblxuICBpZiAoIWNvbnN0cnVjdCkge1xuICAgIGNvbnN0cnVjdCA9IGZ1bmN0aW9uIGNvbnN0cnVjdChGdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gbmV3IEZ1bmMoLi4uYXJncyk7XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGFycmF5Rm9yRWFjaCA9IHVuYXBwbHkoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpO1xuICBjb25zdCBhcnJheVBvcCA9IHVuYXBwbHkoQXJyYXkucHJvdG90eXBlLnBvcCk7XG4gIGNvbnN0IGFycmF5UHVzaCA9IHVuYXBwbHkoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICBjb25zdCBzdHJpbmdUb0xvd2VyQ2FzZSA9IHVuYXBwbHkoU3RyaW5nLnByb3RvdHlwZS50b0xvd2VyQ2FzZSk7XG4gIGNvbnN0IHN0cmluZ1RvU3RyaW5nID0gdW5hcHBseShTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nKTtcbiAgY29uc3Qgc3RyaW5nTWF0Y2ggPSB1bmFwcGx5KFN0cmluZy5wcm90b3R5cGUubWF0Y2gpO1xuICBjb25zdCBzdHJpbmdSZXBsYWNlID0gdW5hcHBseShTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xuICBjb25zdCBzdHJpbmdJbmRleE9mID0gdW5hcHBseShTdHJpbmcucHJvdG90eXBlLmluZGV4T2YpO1xuICBjb25zdCBzdHJpbmdUcmltID0gdW5hcHBseShTdHJpbmcucHJvdG90eXBlLnRyaW0pO1xuICBjb25zdCByZWdFeHBUZXN0ID0gdW5hcHBseShSZWdFeHAucHJvdG90eXBlLnRlc3QpO1xuICBjb25zdCB0eXBlRXJyb3JDcmVhdGUgPSB1bmNvbnN0cnVjdChUeXBlRXJyb3IpO1xuICBmdW5jdGlvbiB1bmFwcGx5KGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRoaXNBcmcpIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHVuY29uc3RydWN0KGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnN0cnVjdChmdW5jLCBhcmdzKTtcbiAgICB9O1xuICB9XG4gIC8qIEFkZCBwcm9wZXJ0aWVzIHRvIGEgbG9va3VwIHRhYmxlICovXG5cbiAgZnVuY3Rpb24gYWRkVG9TZXQoc2V0LCBhcnJheSwgdHJhbnNmb3JtQ2FzZUZ1bmMpIHtcbiAgICB2YXIgX3RyYW5zZm9ybUNhc2VGdW5jO1xuXG4gICAgdHJhbnNmb3JtQ2FzZUZ1bmMgPSAoX3RyYW5zZm9ybUNhc2VGdW5jID0gdHJhbnNmb3JtQ2FzZUZ1bmMpICE9PSBudWxsICYmIF90cmFuc2Zvcm1DYXNlRnVuYyAhPT0gdm9pZCAwID8gX3RyYW5zZm9ybUNhc2VGdW5jIDogc3RyaW5nVG9Mb3dlckNhc2U7XG5cbiAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIC8vIE1ha2UgJ2luJyBhbmQgdHJ1dGh5IGNoZWNrcyBsaWtlIEJvb2xlYW4oc2V0LmNvbnN0cnVjdG9yKVxuICAgICAgLy8gaW5kZXBlbmRlbnQgb2YgYW55IHByb3BlcnRpZXMgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90eXBlLlxuICAgICAgLy8gUHJldmVudCBwcm90b3R5cGUgc2V0dGVycyBmcm9tIGludGVyY2VwdGluZyBzZXQgYXMgYSB0aGlzIHZhbHVlLlxuICAgICAgc2V0UHJvdG90eXBlT2Yoc2V0LCBudWxsKTtcbiAgICB9XG5cbiAgICBsZXQgbCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlIChsLS0pIHtcbiAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbbF07XG5cbiAgICAgIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgbGNFbGVtZW50ID0gdHJhbnNmb3JtQ2FzZUZ1bmMoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGxjRWxlbWVudCAhPT0gZWxlbWVudCkge1xuICAgICAgICAgIC8vIENvbmZpZyBwcmVzZXRzIChlLmcuIHRhZ3MuanMsIGF0dHJzLmpzKSBhcmUgaW1tdXRhYmxlLlxuICAgICAgICAgIGlmICghaXNGcm96ZW4oYXJyYXkpKSB7XG4gICAgICAgICAgICBhcnJheVtsXSA9IGxjRWxlbWVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVtZW50ID0gbGNFbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNldFtlbGVtZW50XSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldDtcbiAgfVxuICAvKiBTaGFsbG93IGNsb25lIGFuIG9iamVjdCAqL1xuXG4gIGZ1bmN0aW9uIGNsb25lKG9iamVjdCkge1xuICAgIGNvbnN0IG5ld09iamVjdCA9IGNyZWF0ZShudWxsKTtcblxuICAgIGZvciAoY29uc3QgW3Byb3BlcnR5LCB2YWx1ZV0gb2YgZW50cmllcyhvYmplY3QpKSB7XG4gICAgICBuZXdPYmplY3RbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld09iamVjdDtcbiAgfVxuICAvKiBUaGlzIG1ldGhvZCBhdXRvbWF0aWNhbGx5IGNoZWNrcyBpZiB0aGUgcHJvcCBpcyBmdW5jdGlvblxuICAgKiBvciBnZXR0ZXIgYW5kIGJlaGF2ZXMgYWNjb3JkaW5nbHkuICovXG5cbiAgZnVuY3Rpb24gbG9va3VwR2V0dGVyKG9iamVjdCwgcHJvcCkge1xuICAgIHdoaWxlIChvYmplY3QgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlc2MgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wKTtcblxuICAgICAgaWYgKGRlc2MpIHtcbiAgICAgICAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHVuYXBwbHkoZGVzYy5nZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBkZXNjLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIHVuYXBwbHkoZGVzYy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmYWxsYmFja1ZhbHVlKGVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUud2FybignZmFsbGJhY2sgdmFsdWUgZm9yJywgZWxlbWVudCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsbGJhY2tWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IGh0bWwkMSA9IGZyZWV6ZShbJ2EnLCAnYWJicicsICdhY3JvbnltJywgJ2FkZHJlc3MnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2F1ZGlvJywgJ2InLCAnYmRpJywgJ2JkbycsICdiaWcnLCAnYmxpbmsnLCAnYmxvY2txdW90ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYW52YXMnLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY2l0ZScsICdjb2RlJywgJ2NvbCcsICdjb2xncm91cCcsICdjb250ZW50JywgJ2RhdGEnLCAnZGF0YWxpc3QnLCAnZGQnLCAnZGVjb3JhdG9yJywgJ2RlbCcsICdkZXRhaWxzJywgJ2RmbicsICdkaWFsb2cnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbGVtZW50JywgJ2VtJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2ZvbnQnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywgJ2h0bWwnLCAnaScsICdpbWcnLCAnaW5wdXQnLCAnaW5zJywgJ2tiZCcsICdsYWJlbCcsICdsZWdlbmQnLCAnbGknLCAnbWFpbicsICdtYXAnLCAnbWFyaycsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0ZXInLCAnbmF2JywgJ25vYnInLCAnb2wnLCAnb3B0Z3JvdXAnLCAnb3B0aW9uJywgJ291dHB1dCcsICdwJywgJ3BpY3R1cmUnLCAncHJlJywgJ3Byb2dyZXNzJywgJ3EnLCAncnAnLCAncnQnLCAncnVieScsICdzJywgJ3NhbXAnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc2hhZG93JywgJ3NtYWxsJywgJ3NvdXJjZScsICdzcGFjZXInLCAnc3BhbicsICdzdHJpa2UnLCAnc3Ryb25nJywgJ3N0eWxlJywgJ3N1YicsICdzdW1tYXJ5JywgJ3N1cCcsICd0YWJsZScsICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0ZScsICd0ZXh0YXJlYScsICd0Zm9vdCcsICd0aCcsICd0aGVhZCcsICd0aW1lJywgJ3RyJywgJ3RyYWNrJywgJ3R0JywgJ3UnLCAndWwnLCAndmFyJywgJ3ZpZGVvJywgJ3diciddKTsgLy8gU1ZHXG5cbiAgY29uc3Qgc3ZnJDEgPSBmcmVlemUoWydzdmcnLCAnYScsICdhbHRnbHlwaCcsICdhbHRnbHlwaGRlZicsICdhbHRnbHlwaGl0ZW0nLCAnYW5pbWF0ZWNvbG9yJywgJ2FuaW1hdGVtb3Rpb24nLCAnYW5pbWF0ZXRyYW5zZm9ybScsICdjaXJjbGUnLCAnY2xpcHBhdGgnLCAnZGVmcycsICdkZXNjJywgJ2VsbGlwc2UnLCAnZmlsdGVyJywgJ2ZvbnQnLCAnZycsICdnbHlwaCcsICdnbHlwaHJlZicsICdoa2VybicsICdpbWFnZScsICdsaW5lJywgJ2xpbmVhcmdyYWRpZW50JywgJ21hcmtlcicsICdtYXNrJywgJ21ldGFkYXRhJywgJ21wYXRoJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbGdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICdzdHlsZScsICdzd2l0Y2gnLCAnc3ltYm9sJywgJ3RleHQnLCAndGV4dHBhdGgnLCAndGl0bGUnLCAndHJlZicsICd0c3BhbicsICd2aWV3JywgJ3ZrZXJuJ10pO1xuICBjb25zdCBzdmdGaWx0ZXJzID0gZnJlZXplKFsnZmVCbGVuZCcsICdmZUNvbG9yTWF0cml4JywgJ2ZlQ29tcG9uZW50VHJhbnNmZXInLCAnZmVDb21wb3NpdGUnLCAnZmVDb252b2x2ZU1hdHJpeCcsICdmZURpZmZ1c2VMaWdodGluZycsICdmZURpc3BsYWNlbWVudE1hcCcsICdmZURpc3RhbnRMaWdodCcsICdmZURyb3BTaGFkb3cnLCAnZmVGbG9vZCcsICdmZUZ1bmNBJywgJ2ZlRnVuY0InLCAnZmVGdW5jRycsICdmZUZ1bmNSJywgJ2ZlR2F1c3NpYW5CbHVyJywgJ2ZlSW1hZ2UnLCAnZmVNZXJnZScsICdmZU1lcmdlTm9kZScsICdmZU1vcnBob2xvZ3knLCAnZmVPZmZzZXQnLCAnZmVQb2ludExpZ2h0JywgJ2ZlU3BlY3VsYXJMaWdodGluZycsICdmZVNwb3RMaWdodCcsICdmZVRpbGUnLCAnZmVUdXJidWxlbmNlJ10pOyAvLyBMaXN0IG9mIFNWRyBlbGVtZW50cyB0aGF0IGFyZSBkaXNhbGxvd2VkIGJ5IGRlZmF1bHQuXG4gIC8vIFdlIHN0aWxsIG5lZWQgdG8ga25vdyB0aGVtIHNvIHRoYXQgd2UgY2FuIGRvIG5hbWVzcGFjZVxuICAvLyBjaGVja3MgcHJvcGVybHkgaW4gY2FzZSBvbmUgd2FudHMgdG8gYWRkIHRoZW0gdG9cbiAgLy8gYWxsb3ctbGlzdC5cblxuICBjb25zdCBzdmdEaXNhbGxvd2VkID0gZnJlZXplKFsnYW5pbWF0ZScsICdjb2xvci1wcm9maWxlJywgJ2N1cnNvcicsICdkaXNjYXJkJywgJ2ZvbnQtZmFjZScsICdmb250LWZhY2UtZm9ybWF0JywgJ2ZvbnQtZmFjZS1uYW1lJywgJ2ZvbnQtZmFjZS1zcmMnLCAnZm9udC1mYWNlLXVyaScsICdmb3JlaWdub2JqZWN0JywgJ2hhdGNoJywgJ2hhdGNocGF0aCcsICdtZXNoJywgJ21lc2hncmFkaWVudCcsICdtZXNocGF0Y2gnLCAnbWVzaHJvdycsICdtaXNzaW5nLWdseXBoJywgJ3NjcmlwdCcsICdzZXQnLCAnc29saWRjb2xvcicsICd1bmtub3duJywgJ3VzZSddKTtcbiAgY29uc3QgbWF0aE1sJDEgPSBmcmVlemUoWydtYXRoJywgJ21lbmNsb3NlJywgJ21lcnJvcicsICdtZmVuY2VkJywgJ21mcmFjJywgJ21nbHlwaCcsICdtaScsICdtbGFiZWxlZHRyJywgJ21tdWx0aXNjcmlwdHMnLCAnbW4nLCAnbW8nLCAnbW92ZXInLCAnbXBhZGRlZCcsICdtcGhhbnRvbScsICdtcm9vdCcsICdtcm93JywgJ21zJywgJ21zcGFjZScsICdtc3FydCcsICdtc3R5bGUnLCAnbXN1YicsICdtc3VwJywgJ21zdWJzdXAnLCAnbXRhYmxlJywgJ210ZCcsICdtdGV4dCcsICdtdHInLCAnbXVuZGVyJywgJ211bmRlcm92ZXInLCAnbXByZXNjcmlwdHMnXSk7IC8vIFNpbWlsYXJseSB0byBTVkcsIHdlIHdhbnQgdG8ga25vdyBhbGwgTWF0aE1MIGVsZW1lbnRzLFxuICAvLyBldmVuIHRob3NlIHRoYXQgd2UgZGlzYWxsb3cgYnkgZGVmYXVsdC5cblxuICBjb25zdCBtYXRoTWxEaXNhbGxvd2VkID0gZnJlZXplKFsnbWFjdGlvbicsICdtYWxpZ25ncm91cCcsICdtYWxpZ25tYXJrJywgJ21sb25nZGl2JywgJ21zY2FycmllcycsICdtc2NhcnJ5JywgJ21zZ3JvdXAnLCAnbXN0YWNrJywgJ21zbGluZScsICdtc3JvdycsICdzZW1hbnRpY3MnLCAnYW5ub3RhdGlvbicsICdhbm5vdGF0aW9uLXhtbCcsICdtcHJlc2NyaXB0cycsICdub25lJ10pO1xuICBjb25zdCB0ZXh0ID0gZnJlZXplKFsnI3RleHQnXSk7XG5cbiAgY29uc3QgaHRtbCA9IGZyZWV6ZShbJ2FjY2VwdCcsICdhY3Rpb24nLCAnYWxpZ24nLCAnYWx0JywgJ2F1dG9jYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdhdXRvcGljdHVyZWlucGljdHVyZScsICdhdXRvcGxheScsICdiYWNrZ3JvdW5kJywgJ2JnY29sb3InLCAnYm9yZGVyJywgJ2NhcHR1cmUnLCAnY2VsbHBhZGRpbmcnLCAnY2VsbHNwYWNpbmcnLCAnY2hlY2tlZCcsICdjaXRlJywgJ2NsYXNzJywgJ2NsZWFyJywgJ2NvbG9yJywgJ2NvbHMnLCAnY29sc3BhbicsICdjb250cm9scycsICdjb250cm9sc2xpc3QnLCAnY29vcmRzJywgJ2Nyb3Nzb3JpZ2luJywgJ2RhdGV0aW1lJywgJ2RlY29kaW5nJywgJ2RlZmF1bHQnLCAnZGlyJywgJ2Rpc2FibGVkJywgJ2Rpc2FibGVwaWN0dXJlaW5waWN0dXJlJywgJ2Rpc2FibGVyZW1vdGVwbGF5YmFjaycsICdkb3dubG9hZCcsICdkcmFnZ2FibGUnLCAnZW5jdHlwZScsICdlbnRlcmtleWhpbnQnLCAnZmFjZScsICdmb3InLCAnaGVhZGVycycsICdoZWlnaHQnLCAnaGlkZGVuJywgJ2hpZ2gnLCAnaHJlZicsICdocmVmbGFuZycsICdpZCcsICdpbnB1dG1vZGUnLCAnaW50ZWdyaXR5JywgJ2lzbWFwJywgJ2tpbmQnLCAnbGFiZWwnLCAnbGFuZycsICdsaXN0JywgJ2xvYWRpbmcnLCAnbG9vcCcsICdsb3cnLCAnbWF4JywgJ21heGxlbmd0aCcsICdtZWRpYScsICdtZXRob2QnLCAnbWluJywgJ21pbmxlbmd0aCcsICdtdWx0aXBsZScsICdtdXRlZCcsICduYW1lJywgJ25vbmNlJywgJ25vc2hhZGUnLCAnbm92YWxpZGF0ZScsICdub3dyYXAnLCAnb3BlbicsICdvcHRpbXVtJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncGxheXNpbmxpbmUnLCAncG9zdGVyJywgJ3ByZWxvYWQnLCAncHViZGF0ZScsICdyYWRpb2dyb3VwJywgJ3JlYWRvbmx5JywgJ3JlbCcsICdyZXF1aXJlZCcsICdyZXYnLCAncmV2ZXJzZWQnLCAncm9sZScsICdyb3dzJywgJ3Jvd3NwYW4nLCAnc3BlbGxjaGVjaycsICdzY29wZScsICdzZWxlY3RlZCcsICdzaGFwZScsICdzaXplJywgJ3NpemVzJywgJ3NwYW4nLCAnc3JjbGFuZycsICdzdGFydCcsICdzcmMnLCAnc3Jjc2V0JywgJ3N0ZXAnLCAnc3R5bGUnLCAnc3VtbWFyeScsICd0YWJpbmRleCcsICd0aXRsZScsICd0cmFuc2xhdGUnLCAndHlwZScsICd1c2VtYXAnLCAndmFsaWduJywgJ3ZhbHVlJywgJ3dpZHRoJywgJ3htbG5zJywgJ3Nsb3QnXSk7XG4gIGNvbnN0IHN2ZyA9IGZyZWV6ZShbJ2FjY2VudC1oZWlnaHQnLCAnYWNjdW11bGF0ZScsICdhZGRpdGl2ZScsICdhbGlnbm1lbnQtYmFzZWxpbmUnLCAnYXNjZW50JywgJ2F0dHJpYnV0ZW5hbWUnLCAnYXR0cmlidXRldHlwZScsICdhemltdXRoJywgJ2Jhc2VmcmVxdWVuY3knLCAnYmFzZWxpbmUtc2hpZnQnLCAnYmVnaW4nLCAnYmlhcycsICdieScsICdjbGFzcycsICdjbGlwJywgJ2NsaXBwYXRodW5pdHMnLCAnY2xpcC1wYXRoJywgJ2NsaXAtcnVsZScsICdjb2xvcicsICdjb2xvci1pbnRlcnBvbGF0aW9uJywgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycsICdjb2xvci1wcm9maWxlJywgJ2NvbG9yLXJlbmRlcmluZycsICdjeCcsICdjeScsICdkJywgJ2R4JywgJ2R5JywgJ2RpZmZ1c2Vjb25zdGFudCcsICdkaXJlY3Rpb24nLCAnZGlzcGxheScsICdkaXZpc29yJywgJ2R1cicsICdlZGdlbW9kZScsICdlbGV2YXRpb24nLCAnZW5kJywgJ2ZpbGwnLCAnZmlsbC1vcGFjaXR5JywgJ2ZpbGwtcnVsZScsICdmaWx0ZXInLCAnZmlsdGVydW5pdHMnLCAnZmxvb2QtY29sb3InLCAnZmxvb2Qtb3BhY2l0eScsICdmb250LWZhbWlseScsICdmb250LXNpemUnLCAnZm9udC1zaXplLWFkanVzdCcsICdmb250LXN0cmV0Y2gnLCAnZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZngnLCAnZnknLCAnZzEnLCAnZzInLCAnZ2x5cGgtbmFtZScsICdnbHlwaHJlZicsICdncmFkaWVudHVuaXRzJywgJ2dyYWRpZW50dHJhbnNmb3JtJywgJ2hlaWdodCcsICdocmVmJywgJ2lkJywgJ2ltYWdlLXJlbmRlcmluZycsICdpbicsICdpbjInLCAnaycsICdrMScsICdrMicsICdrMycsICdrNCcsICdrZXJuaW5nJywgJ2tleXBvaW50cycsICdrZXlzcGxpbmVzJywgJ2tleXRpbWVzJywgJ2xhbmcnLCAnbGVuZ3RoYWRqdXN0JywgJ2xldHRlci1zcGFjaW5nJywgJ2tlcm5lbG1hdHJpeCcsICdrZXJuZWx1bml0bGVuZ3RoJywgJ2xpZ2h0aW5nLWNvbG9yJywgJ2xvY2FsJywgJ21hcmtlci1lbmQnLCAnbWFya2VyLW1pZCcsICdtYXJrZXItc3RhcnQnLCAnbWFya2VyaGVpZ2h0JywgJ21hcmtlcnVuaXRzJywgJ21hcmtlcndpZHRoJywgJ21hc2tjb250ZW50dW5pdHMnLCAnbWFza3VuaXRzJywgJ21heCcsICdtYXNrJywgJ21lZGlhJywgJ21ldGhvZCcsICdtb2RlJywgJ21pbicsICduYW1lJywgJ251bW9jdGF2ZXMnLCAnb2Zmc2V0JywgJ29wZXJhdG9yJywgJ29wYWNpdHknLCAnb3JkZXInLCAnb3JpZW50JywgJ29yaWVudGF0aW9uJywgJ29yaWdpbicsICdvdmVyZmxvdycsICdwYWludC1vcmRlcicsICdwYXRoJywgJ3BhdGhsZW5ndGgnLCAncGF0dGVybmNvbnRlbnR1bml0cycsICdwYXR0ZXJudHJhbnNmb3JtJywgJ3BhdHRlcm51bml0cycsICdwb2ludHMnLCAncHJlc2VydmVhbHBoYScsICdwcmVzZXJ2ZWFzcGVjdHJhdGlvJywgJ3ByaW1pdGl2ZXVuaXRzJywgJ3InLCAncngnLCAncnknLCAncmFkaXVzJywgJ3JlZngnLCAncmVmeScsICdyZXBlYXRjb3VudCcsICdyZXBlYXRkdXInLCAncmVzdGFydCcsICdyZXN1bHQnLCAncm90YXRlJywgJ3NjYWxlJywgJ3NlZWQnLCAnc2hhcGUtcmVuZGVyaW5nJywgJ3NwZWN1bGFyY29uc3RhbnQnLCAnc3BlY3VsYXJleHBvbmVudCcsICdzcHJlYWRtZXRob2QnLCAnc3RhcnRvZmZzZXQnLCAnc3RkZGV2aWF0aW9uJywgJ3N0aXRjaHRpbGVzJywgJ3N0b3AtY29sb3InLCAnc3RvcC1vcGFjaXR5JywgJ3N0cm9rZS1kYXNoYXJyYXknLCAnc3Ryb2tlLWRhc2hvZmZzZXQnLCAnc3Ryb2tlLWxpbmVjYXAnLCAnc3Ryb2tlLWxpbmVqb2luJywgJ3N0cm9rZS1taXRlcmxpbWl0JywgJ3N0cm9rZS1vcGFjaXR5JywgJ3N0cm9rZScsICdzdHJva2Utd2lkdGgnLCAnc3R5bGUnLCAnc3VyZmFjZXNjYWxlJywgJ3N5c3RlbWxhbmd1YWdlJywgJ3RhYmluZGV4JywgJ3RhcmdldHgnLCAndGFyZ2V0eScsICd0cmFuc2Zvcm0nLCAndHJhbnNmb3JtLW9yaWdpbicsICd0ZXh0LWFuY2hvcicsICd0ZXh0LWRlY29yYXRpb24nLCAndGV4dC1yZW5kZXJpbmcnLCAndGV4dGxlbmd0aCcsICd0eXBlJywgJ3UxJywgJ3UyJywgJ3VuaWNvZGUnLCAndmFsdWVzJywgJ3ZpZXdib3gnLCAndmlzaWJpbGl0eScsICd2ZXJzaW9uJywgJ3ZlcnQtYWR2LXknLCAndmVydC1vcmlnaW4teCcsICd2ZXJ0LW9yaWdpbi15JywgJ3dpZHRoJywgJ3dvcmQtc3BhY2luZycsICd3cmFwJywgJ3dyaXRpbmctbW9kZScsICd4Y2hhbm5lbHNlbGVjdG9yJywgJ3ljaGFubmVsc2VsZWN0b3InLCAneCcsICd4MScsICd4MicsICd4bWxucycsICd5JywgJ3kxJywgJ3kyJywgJ3onLCAnem9vbWFuZHBhbiddKTtcbiAgY29uc3QgbWF0aE1sID0gZnJlZXplKFsnYWNjZW50JywgJ2FjY2VudHVuZGVyJywgJ2FsaWduJywgJ2JldmVsbGVkJywgJ2Nsb3NlJywgJ2NvbHVtbnNhbGlnbicsICdjb2x1bW5saW5lcycsICdjb2x1bW5zcGFuJywgJ2Rlbm9tYWxpZ24nLCAnZGVwdGgnLCAnZGlyJywgJ2Rpc3BsYXknLCAnZGlzcGxheXN0eWxlJywgJ2VuY29kaW5nJywgJ2ZlbmNlJywgJ2ZyYW1lJywgJ2hlaWdodCcsICdocmVmJywgJ2lkJywgJ2xhcmdlb3AnLCAnbGVuZ3RoJywgJ2xpbmV0aGlja25lc3MnLCAnbHNwYWNlJywgJ2xxdW90ZScsICdtYXRoYmFja2dyb3VuZCcsICdtYXRoY29sb3InLCAnbWF0aHNpemUnLCAnbWF0aHZhcmlhbnQnLCAnbWF4c2l6ZScsICdtaW5zaXplJywgJ21vdmFibGVsaW1pdHMnLCAnbm90YXRpb24nLCAnbnVtYWxpZ24nLCAnb3BlbicsICdyb3dhbGlnbicsICdyb3dsaW5lcycsICdyb3dzcGFjaW5nJywgJ3Jvd3NwYW4nLCAncnNwYWNlJywgJ3JxdW90ZScsICdzY3JpcHRsZXZlbCcsICdzY3JpcHRtaW5zaXplJywgJ3NjcmlwdHNpemVtdWx0aXBsaWVyJywgJ3NlbGVjdGlvbicsICdzZXBhcmF0b3InLCAnc2VwYXJhdG9ycycsICdzdHJldGNoeScsICdzdWJzY3JpcHRzaGlmdCcsICdzdXBzY3JpcHRzaGlmdCcsICdzeW1tZXRyaWMnLCAndm9mZnNldCcsICd3aWR0aCcsICd4bWxucyddKTtcbiAgY29uc3QgeG1sID0gZnJlZXplKFsneGxpbms6aHJlZicsICd4bWw6aWQnLCAneGxpbms6dGl0bGUnLCAneG1sOnNwYWNlJywgJ3htbG5zOnhsaW5rJ10pO1xuXG4gIGNvbnN0IE1VU1RBQ0hFX0VYUFIgPSBzZWFsKC9cXHtcXHtbXFx3XFxXXSp8W1xcd1xcV10qXFx9XFx9L2dtKTsgLy8gU3BlY2lmeSB0ZW1wbGF0ZSBkZXRlY3Rpb24gcmVnZXggZm9yIFNBRkVfRk9SX1RFTVBMQVRFUyBtb2RlXG5cbiAgY29uc3QgRVJCX0VYUFIgPSBzZWFsKC88JVtcXHdcXFddKnxbXFx3XFxXXSolPi9nbSk7XG4gIGNvbnN0IFRNUExJVF9FWFBSID0gc2VhbCgvXFwke1tcXHdcXFddKn0vZ20pO1xuICBjb25zdCBEQVRBX0FUVFIgPSBzZWFsKC9eZGF0YS1bXFwtXFx3LlxcdTAwQjctXFx1RkZGRl0vKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuXG4gIGNvbnN0IEFSSUFfQVRUUiA9IHNlYWwoL15hcmlhLVtcXC1cXHddKyQvKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuXG4gIGNvbnN0IElTX0FMTE9XRURfVVJJID0gc2VhbCgvXig/Oig/Oig/OmZ8aHQpdHBzP3xtYWlsdG98dGVsfGNhbGx0b3xzbXN8Y2lkfHhtcHApOnxbXmEtel18W2EteisuXFwtXSsoPzpbXmEteisuXFwtOl18JCkpL2kgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11c2VsZXNzLWVzY2FwZVxuICApO1xuICBjb25zdCBJU19TQ1JJUFRfT1JfREFUQSA9IHNlYWwoL14oPzpcXHcrc2NyaXB0fGRhdGEpOi9pKTtcbiAgY29uc3QgQVRUUl9XSElURVNQQUNFID0gc2VhbCgvW1xcdTAwMDAtXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAyOVxcdTIwNUZcXHUzMDAwXS9nIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuICApO1xuICBjb25zdCBET0NUWVBFX05BTUUgPSBzZWFsKC9eaHRtbCQvaSk7XG5cbiAgdmFyIEVYUFJFU1NJT05TID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBNVVNUQUNIRV9FWFBSOiBNVVNUQUNIRV9FWFBSLFxuICAgIEVSQl9FWFBSOiBFUkJfRVhQUixcbiAgICBUTVBMSVRfRVhQUjogVE1QTElUX0VYUFIsXG4gICAgREFUQV9BVFRSOiBEQVRBX0FUVFIsXG4gICAgQVJJQV9BVFRSOiBBUklBX0FUVFIsXG4gICAgSVNfQUxMT1dFRF9VUkk6IElTX0FMTE9XRURfVVJJLFxuICAgIElTX1NDUklQVF9PUl9EQVRBOiBJU19TQ1JJUFRfT1JfREFUQSxcbiAgICBBVFRSX1dISVRFU1BBQ0U6IEFUVFJfV0hJVEVTUEFDRSxcbiAgICBET0NUWVBFX05BTUU6IERPQ1RZUEVfTkFNRVxuICB9KTtcblxuICBjb25zdCBnZXRHbG9iYWwgPSAoKSA9PiB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiB3aW5kb3c7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbm8tb3AgcG9saWN5IGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAgICogRG9uJ3QgZXhwb3J0IHRoaXMgZnVuY3Rpb24gb3V0c2lkZSB0aGlzIG1vZHVsZSFcbiAgICogQHBhcmFtIHs/VHJ1c3RlZFR5cGVQb2xpY3lGYWN0b3J5fSB0cnVzdGVkVHlwZXMgVGhlIHBvbGljeSBmYWN0b3J5LlxuICAgKiBAcGFyYW0ge0hUTUxTY3JpcHRFbGVtZW50fSBwdXJpZnlIb3N0RWxlbWVudCBUaGUgU2NyaXB0IGVsZW1lbnQgdXNlZCB0byBsb2FkIERPTVB1cmlmeSAodG8gZGV0ZXJtaW5lIHBvbGljeSBuYW1lIHN1ZmZpeCkuXG4gICAqIEByZXR1cm4gez9UcnVzdGVkVHlwZVBvbGljeX0gVGhlIHBvbGljeSBjcmVhdGVkIChvciBudWxsLCBpZiBUcnVzdGVkIFR5cGVzXG4gICAqIGFyZSBub3Qgc3VwcG9ydGVkIG9yIGNyZWF0aW5nIHRoZSBwb2xpY3kgZmFpbGVkKS5cbiAgICovXG5cblxuICBjb25zdCBfY3JlYXRlVHJ1c3RlZFR5cGVzUG9saWN5ID0gZnVuY3Rpb24gX2NyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSh0cnVzdGVkVHlwZXMsIHB1cmlmeUhvc3RFbGVtZW50KSB7XG4gICAgaWYgKHR5cGVvZiB0cnVzdGVkVHlwZXMgIT09ICdvYmplY3QnIHx8IHR5cGVvZiB0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIEFsbG93IHRoZSBjYWxsZXJzIHRvIGNvbnRyb2wgdGhlIHVuaXF1ZSBwb2xpY3kgbmFtZVxuICAgIC8vIGJ5IGFkZGluZyBhIGRhdGEtdHQtcG9saWN5LXN1ZmZpeCB0byB0aGUgc2NyaXB0IGVsZW1lbnQgd2l0aCB0aGUgRE9NUHVyaWZ5LlxuICAgIC8vIFBvbGljeSBjcmVhdGlvbiB3aXRoIGR1cGxpY2F0ZSBuYW1lcyB0aHJvd3MgaW4gVHJ1c3RlZCBUeXBlcy5cblxuXG4gICAgbGV0IHN1ZmZpeCA9IG51bGw7XG4gICAgY29uc3QgQVRUUl9OQU1FID0gJ2RhdGEtdHQtcG9saWN5LXN1ZmZpeCc7XG5cbiAgICBpZiAocHVyaWZ5SG9zdEVsZW1lbnQgJiYgcHVyaWZ5SG9zdEVsZW1lbnQuaGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpIHtcbiAgICAgIHN1ZmZpeCA9IHB1cmlmeUhvc3RFbGVtZW50LmdldEF0dHJpYnV0ZShBVFRSX05BTUUpO1xuICAgIH1cblxuICAgIGNvbnN0IHBvbGljeU5hbWUgPSAnZG9tcHVyaWZ5JyArIChzdWZmaXggPyAnIycgKyBzdWZmaXggOiAnJyk7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3kocG9saWN5TmFtZSwge1xuICAgICAgICBjcmVhdGVIVE1MKGh0bWwpIHtcbiAgICAgICAgICByZXR1cm4gaHRtbDtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVTY3JpcHRVUkwoc2NyaXB0VXJsKSB7XG4gICAgICAgICAgcmV0dXJuIHNjcmlwdFVybDtcbiAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAvLyBQb2xpY3kgY3JlYXRpb24gZmFpbGVkIChtb3N0IGxpa2VseSBhbm90aGVyIERPTVB1cmlmeSBzY3JpcHQgaGFzXG4gICAgICAvLyBhbHJlYWR5IHJ1bikuIFNraXAgY3JlYXRpbmcgdGhlIHBvbGljeSwgYXMgdGhpcyB3aWxsIG9ubHkgY2F1c2UgZXJyb3JzXG4gICAgICAvLyBpZiBUVCBhcmUgZW5mb3JjZWQuXG4gICAgICBjb25zb2xlLndhcm4oJ1RydXN0ZWRUeXBlcyBwb2xpY3kgJyArIHBvbGljeU5hbWUgKyAnIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZURPTVB1cmlmeSgpIHtcbiAgICBsZXQgd2luZG93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBnZXRHbG9iYWwoKTtcblxuICAgIGNvbnN0IERPTVB1cmlmeSA9IHJvb3QgPT4gY3JlYXRlRE9NUHVyaWZ5KHJvb3QpO1xuICAgIC8qKlxuICAgICAqIFZlcnNpb24gbGFiZWwsIGV4cG9zZWQgZm9yIGVhc2llciBjaGVja3NcbiAgICAgKiBpZiBET01QdXJpZnkgaXMgdXAgdG8gZGF0ZSBvciBub3RcbiAgICAgKi9cblxuXG4gICAgRE9NUHVyaWZ5LnZlcnNpb24gPSAnMy4wLjMnO1xuICAgIC8qKlxuICAgICAqIEFycmF5IG9mIGVsZW1lbnRzIHRoYXQgRE9NUHVyaWZ5IHJlbW92ZWQgZHVyaW5nIHNhbml0YXRpb24uXG4gICAgICogRW1wdHkgaWYgbm90aGluZyB3YXMgcmVtb3ZlZC5cbiAgICAgKi9cblxuICAgIERPTVB1cmlmeS5yZW1vdmVkID0gW107XG5cbiAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmRvY3VtZW50IHx8IHdpbmRvdy5kb2N1bWVudC5ub2RlVHlwZSAhPT0gOSkge1xuICAgICAgLy8gTm90IHJ1bm5pbmcgaW4gYSBicm93c2VyLCBwcm92aWRlIGEgZmFjdG9yeSBmdW5jdGlvblxuICAgICAgLy8gc28gdGhhdCB5b3UgY2FuIHBhc3MgeW91ciBvd24gV2luZG93XG4gICAgICBET01QdXJpZnkuaXNTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybiBET01QdXJpZnk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxEb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcbiAgICBjb25zdCBjdXJyZW50U2NyaXB0ID0gb3JpZ2luYWxEb2N1bWVudC5jdXJyZW50U2NyaXB0O1xuICAgIGxldCB7XG4gICAgICBkb2N1bWVudFxuICAgIH0gPSB3aW5kb3c7XG4gICAgY29uc3Qge1xuICAgICAgRG9jdW1lbnRGcmFnbWVudCxcbiAgICAgIEhUTUxUZW1wbGF0ZUVsZW1lbnQsXG4gICAgICBOb2RlLFxuICAgICAgRWxlbWVudCxcbiAgICAgIE5vZGVGaWx0ZXIsXG4gICAgICBOYW1lZE5vZGVNYXAgPSB3aW5kb3cuTmFtZWROb2RlTWFwIHx8IHdpbmRvdy5Nb3pOYW1lZEF0dHJNYXAsXG4gICAgICBIVE1MRm9ybUVsZW1lbnQsXG4gICAgICBET01QYXJzZXIsXG4gICAgICB0cnVzdGVkVHlwZXNcbiAgICB9ID0gd2luZG93O1xuICAgIGNvbnN0IEVsZW1lbnRQcm90b3R5cGUgPSBFbGVtZW50LnByb3RvdHlwZTtcbiAgICBjb25zdCBjbG9uZU5vZGUgPSBsb29rdXBHZXR0ZXIoRWxlbWVudFByb3RvdHlwZSwgJ2Nsb25lTm9kZScpO1xuICAgIGNvbnN0IGdldE5leHRTaWJsaW5nID0gbG9va3VwR2V0dGVyKEVsZW1lbnRQcm90b3R5cGUsICduZXh0U2libGluZycpO1xuICAgIGNvbnN0IGdldENoaWxkTm9kZXMgPSBsb29rdXBHZXR0ZXIoRWxlbWVudFByb3RvdHlwZSwgJ2NoaWxkTm9kZXMnKTtcbiAgICBjb25zdCBnZXRQYXJlbnROb2RlID0gbG9va3VwR2V0dGVyKEVsZW1lbnRQcm90b3R5cGUsICdwYXJlbnROb2RlJyk7IC8vIEFzIHBlciBpc3N1ZSAjNDcsIHRoZSB3ZWItY29tcG9uZW50cyByZWdpc3RyeSBpcyBpbmhlcml0ZWQgYnkgYVxuICAgIC8vIG5ldyBkb2N1bWVudCBjcmVhdGVkIHZpYSBjcmVhdGVIVE1MRG9jdW1lbnQuIEFzIHBlciB0aGUgc3BlY1xuICAgIC8vIChodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvY3VzdG9tLyNjcmVhdGluZy1hbmQtcGFzc2luZy1yZWdpc3RyaWVzKVxuICAgIC8vIGEgbmV3IGVtcHR5IHJlZ2lzdHJ5IGlzIHVzZWQgd2hlbiBjcmVhdGluZyBhIHRlbXBsYXRlIGNvbnRlbnRzIG93bmVyXG4gICAgLy8gZG9jdW1lbnQsIHNvIHdlIHVzZSB0aGF0IGFzIG91ciBwYXJlbnQgZG9jdW1lbnQgdG8gZW5zdXJlIG5vdGhpbmdcbiAgICAvLyBpcyBpbmhlcml0ZWQuXG5cbiAgICBpZiAodHlwZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcblxuICAgICAgaWYgKHRlbXBsYXRlLmNvbnRlbnQgJiYgdGVtcGxhdGUuY29udGVudC5vd25lckRvY3VtZW50KSB7XG4gICAgICAgIGRvY3VtZW50ID0gdGVtcGxhdGUuY29udGVudC5vd25lckRvY3VtZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0cnVzdGVkVHlwZXNQb2xpY3k7XG4gICAgbGV0IGVtcHR5SFRNTCA9ICcnO1xuICAgIGNvbnN0IHtcbiAgICAgIGltcGxlbWVudGF0aW9uLFxuICAgICAgY3JlYXRlTm9kZUl0ZXJhdG9yLFxuICAgICAgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxcbiAgICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lXG4gICAgfSA9IGRvY3VtZW50O1xuICAgIGNvbnN0IHtcbiAgICAgIGltcG9ydE5vZGVcbiAgICB9ID0gb3JpZ2luYWxEb2N1bWVudDtcbiAgICBsZXQgaG9va3MgPSB7fTtcbiAgICAvKipcbiAgICAgKiBFeHBvc2Ugd2hldGhlciB0aGlzIGJyb3dzZXIgc3VwcG9ydHMgcnVubmluZyB0aGUgZnVsbCBET01QdXJpZnkuXG4gICAgICovXG5cbiAgICBET01QdXJpZnkuaXNTdXBwb3J0ZWQgPSB0eXBlb2YgZW50cmllcyA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZ2V0UGFyZW50Tm9kZSA9PT0gJ2Z1bmN0aW9uJyAmJiBpbXBsZW1lbnRhdGlvbiAmJiBpbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7XG4gICAgICBNVVNUQUNIRV9FWFBSLFxuICAgICAgRVJCX0VYUFIsXG4gICAgICBUTVBMSVRfRVhQUixcbiAgICAgIERBVEFfQVRUUixcbiAgICAgIEFSSUFfQVRUUixcbiAgICAgIElTX1NDUklQVF9PUl9EQVRBLFxuICAgICAgQVRUUl9XSElURVNQQUNFXG4gICAgfSA9IEVYUFJFU1NJT05TO1xuICAgIGxldCB7XG4gICAgICBJU19BTExPV0VEX1VSSTogSVNfQUxMT1dFRF9VUkkkMVxuICAgIH0gPSBFWFBSRVNTSU9OUztcbiAgICAvKipcbiAgICAgKiBXZSBjb25zaWRlciB0aGUgZWxlbWVudHMgYW5kIGF0dHJpYnV0ZXMgYmVsb3cgdG8gYmUgc2FmZS4gSWRlYWxseVxuICAgICAqIGRvbid0IGFkZCBhbnkgbmV3IG9uZXMgYnV0IGZlZWwgZnJlZSB0byByZW1vdmUgdW53YW50ZWQgb25lcy5cbiAgICAgKi9cblxuICAgIC8qIGFsbG93ZWQgZWxlbWVudCBuYW1lcyAqL1xuXG4gICAgbGV0IEFMTE9XRURfVEFHUyA9IG51bGw7XG4gICAgY29uc3QgREVGQVVMVF9BTExPV0VEX1RBR1MgPSBhZGRUb1NldCh7fSwgWy4uLmh0bWwkMSwgLi4uc3ZnJDEsIC4uLnN2Z0ZpbHRlcnMsIC4uLm1hdGhNbCQxLCAuLi50ZXh0XSk7XG4gICAgLyogQWxsb3dlZCBhdHRyaWJ1dGUgbmFtZXMgKi9cblxuICAgIGxldCBBTExPV0VEX0FUVFIgPSBudWxsO1xuICAgIGNvbnN0IERFRkFVTFRfQUxMT1dFRF9BVFRSID0gYWRkVG9TZXQoe30sIFsuLi5odG1sLCAuLi5zdmcsIC4uLm1hdGhNbCwgLi4ueG1sXSk7XG4gICAgLypcbiAgICAgKiBDb25maWd1cmUgaG93IERPTVBVcmlmeSBzaG91bGQgaGFuZGxlIGN1c3RvbSBlbGVtZW50cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcyB3ZWxsIGFzIGN1c3RvbWl6ZWQgYnVpbHQtaW4gZWxlbWVudHMuXG4gICAgICogQHByb3BlcnR5IHtSZWdFeHB8RnVuY3Rpb258bnVsbH0gdGFnTmFtZUNoZWNrIG9uZSBvZiBbbnVsbCwgcmVnZXhQYXR0ZXJuLCBwcmVkaWNhdGVdLiBEZWZhdWx0OiBgbnVsbGAgKGRpc2FsbG93IGFueSBjdXN0b20gZWxlbWVudHMpXG4gICAgICogQHByb3BlcnR5IHtSZWdFeHB8RnVuY3Rpb258bnVsbH0gYXR0cmlidXRlTmFtZUNoZWNrIG9uZSBvZiBbbnVsbCwgcmVnZXhQYXR0ZXJuLCBwcmVkaWNhdGVdLiBEZWZhdWx0OiBgbnVsbGAgKGRpc2FsbG93IGFueSBhdHRyaWJ1dGVzIG5vdCBvbiB0aGUgYWxsb3cgbGlzdClcbiAgICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IGFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyBhbGxvdyBjdXN0b20gZWxlbWVudHMgZGVyaXZlZCBmcm9tIGJ1aWx0LWlucyBpZiB0aGV5IHBhc3MgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrLiBEZWZhdWx0OiBgZmFsc2VgLlxuICAgICAqL1xuXG4gICAgbGV0IENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HID0gT2JqZWN0LnNlYWwoT2JqZWN0LmNyZWF0ZShudWxsLCB7XG4gICAgICB0YWdOYW1lQ2hlY2s6IHtcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlTmFtZUNoZWNrOiB7XG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSxcbiAgICAgIGFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50czoge1xuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZhbHNlXG4gICAgICB9XG4gICAgfSkpO1xuICAgIC8qIEV4cGxpY2l0bHkgZm9yYmlkZGVuIHRhZ3MgKG92ZXJyaWRlcyBBTExPV0VEX1RBR1MvQUREX1RBR1MpICovXG5cbiAgICBsZXQgRk9SQklEX1RBR1MgPSBudWxsO1xuICAgIC8qIEV4cGxpY2l0bHkgZm9yYmlkZGVuIGF0dHJpYnV0ZXMgKG92ZXJyaWRlcyBBTExPV0VEX0FUVFIvQUREX0FUVFIpICovXG5cbiAgICBsZXQgRk9SQklEX0FUVFIgPSBudWxsO1xuICAgIC8qIERlY2lkZSBpZiBBUklBIGF0dHJpYnV0ZXMgYXJlIG9rYXkgKi9cblxuICAgIGxldCBBTExPV19BUklBX0FUVFIgPSB0cnVlO1xuICAgIC8qIERlY2lkZSBpZiBjdXN0b20gZGF0YSBhdHRyaWJ1dGVzIGFyZSBva2F5ICovXG5cbiAgICBsZXQgQUxMT1dfREFUQV9BVFRSID0gdHJ1ZTtcbiAgICAvKiBEZWNpZGUgaWYgdW5rbm93biBwcm90b2NvbHMgYXJlIG9rYXkgKi9cblxuICAgIGxldCBBTExPV19VTktOT1dOX1BST1RPQ09MUyA9IGZhbHNlO1xuICAgIC8qIERlY2lkZSBpZiBzZWxmLWNsb3NpbmcgdGFncyBpbiBhdHRyaWJ1dGVzIGFyZSBhbGxvd2VkLlxuICAgICAqIFVzdWFsbHkgcmVtb3ZlZCBkdWUgdG8gYSBtWFNTIGlzc3VlIGluIGpRdWVyeSAzLjAgKi9cblxuICAgIGxldCBBTExPV19TRUxGX0NMT1NFX0lOX0FUVFIgPSB0cnVlO1xuICAgIC8qIE91dHB1dCBzaG91bGQgYmUgc2FmZSBmb3IgY29tbW9uIHRlbXBsYXRlIGVuZ2luZXMuXG4gICAgICogVGhpcyBtZWFucywgRE9NUHVyaWZ5IHJlbW92ZXMgZGF0YSBhdHRyaWJ1dGVzLCBtdXN0YWNoZXMgYW5kIEVSQlxuICAgICAqL1xuXG4gICAgbGV0IFNBRkVfRk9SX1RFTVBMQVRFUyA9IGZhbHNlO1xuICAgIC8qIERlY2lkZSBpZiBkb2N1bWVudCB3aXRoIDxodG1sPi4uLiBzaG91bGQgYmUgcmV0dXJuZWQgKi9cblxuICAgIGxldCBXSE9MRV9ET0NVTUVOVCA9IGZhbHNlO1xuICAgIC8qIFRyYWNrIHdoZXRoZXIgY29uZmlnIGlzIGFscmVhZHkgc2V0IG9uIHRoaXMgaW5zdGFuY2Ugb2YgRE9NUHVyaWZ5LiAqL1xuXG4gICAgbGV0IFNFVF9DT05GSUcgPSBmYWxzZTtcbiAgICAvKiBEZWNpZGUgaWYgYWxsIGVsZW1lbnRzIChlLmcuIHN0eWxlLCBzY3JpcHQpIG11c3QgYmUgY2hpbGRyZW4gb2ZcbiAgICAgKiBkb2N1bWVudC5ib2R5LiBCeSBkZWZhdWx0LCBicm93c2VycyBtaWdodCBtb3ZlIHRoZW0gdG8gZG9jdW1lbnQuaGVhZCAqL1xuXG4gICAgbGV0IEZPUkNFX0JPRFkgPSBmYWxzZTtcbiAgICAvKiBEZWNpZGUgaWYgYSBET00gYEhUTUxCb2R5RWxlbWVudGAgc2hvdWxkIGJlIHJldHVybmVkLCBpbnN0ZWFkIG9mIGEgaHRtbFxuICAgICAqIHN0cmluZyAob3IgYSBUcnVzdGVkSFRNTCBvYmplY3QgaWYgVHJ1c3RlZCBUeXBlcyBhcmUgc3VwcG9ydGVkKS5cbiAgICAgKiBJZiBgV0hPTEVfRE9DVU1FTlRgIGlzIGVuYWJsZWQgYSBgSFRNTEh0bWxFbGVtZW50YCB3aWxsIGJlIHJldHVybmVkIGluc3RlYWRcbiAgICAgKi9cblxuICAgIGxldCBSRVRVUk5fRE9NID0gZmFsc2U7XG4gICAgLyogRGVjaWRlIGlmIGEgRE9NIGBEb2N1bWVudEZyYWdtZW50YCBzaG91bGQgYmUgcmV0dXJuZWQsIGluc3RlYWQgb2YgYSBodG1sXG4gICAgICogc3RyaW5nICAob3IgYSBUcnVzdGVkSFRNTCBvYmplY3QgaWYgVHJ1c3RlZCBUeXBlcyBhcmUgc3VwcG9ydGVkKSAqL1xuXG4gICAgbGV0IFJFVFVSTl9ET01fRlJBR01FTlQgPSBmYWxzZTtcbiAgICAvKiBUcnkgdG8gcmV0dXJuIGEgVHJ1c3RlZCBUeXBlIG9iamVjdCBpbnN0ZWFkIG9mIGEgc3RyaW5nLCByZXR1cm4gYSBzdHJpbmcgaW5cbiAgICAgKiBjYXNlIFRydXN0ZWQgVHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQgICovXG5cbiAgICBsZXQgUkVUVVJOX1RSVVNURURfVFlQRSA9IGZhbHNlO1xuICAgIC8qIE91dHB1dCBzaG91bGQgYmUgZnJlZSBmcm9tIERPTSBjbG9iYmVyaW5nIGF0dGFja3M/XG4gICAgICogVGhpcyBzYW5pdGl6ZXMgbWFya3VwcyBuYW1lZCB3aXRoIGNvbGxpZGluZywgY2xvYmJlcmFibGUgYnVpbHQtaW4gRE9NIEFQSXMuXG4gICAgICovXG5cbiAgICBsZXQgU0FOSVRJWkVfRE9NID0gdHJ1ZTtcbiAgICAvKiBBY2hpZXZlIGZ1bGwgRE9NIENsb2JiZXJpbmcgcHJvdGVjdGlvbiBieSBpc29sYXRpbmcgdGhlIG5hbWVzcGFjZSBvZiBuYW1lZFxuICAgICAqIHByb3BlcnRpZXMgYW5kIEpTIHZhcmlhYmxlcywgbWl0aWdhdGluZyBhdHRhY2tzIHRoYXQgYWJ1c2UgdGhlIEhUTUwvRE9NIHNwZWMgcnVsZXMuXG4gICAgICpcbiAgICAgKiBIVE1ML0RPTSBzcGVjIHJ1bGVzIHRoYXQgZW5hYmxlIERPTSBDbG9iYmVyaW5nOlxuICAgICAqICAgLSBOYW1lZCBBY2Nlc3Mgb24gV2luZG93ICjCpzcuMy4zKVxuICAgICAqICAgLSBET00gVHJlZSBBY2Nlc3NvcnMgKMKnMy4xLjUpXG4gICAgICogICAtIEZvcm0gRWxlbWVudCBQYXJlbnQtQ2hpbGQgUmVsYXRpb25zICjCpzQuMTAuMylcbiAgICAgKiAgIC0gSWZyYW1lIHNyY2RvYyAvIE5lc3RlZCBXaW5kb3dQcm94aWVzICjCpzQuOC41KVxuICAgICAqICAgLSBIVE1MQ29sbGVjdGlvbiAowqc0LjIuMTAuMilcbiAgICAgKlxuICAgICAqIE5hbWVzcGFjZSBpc29sYXRpb24gaXMgaW1wbGVtZW50ZWQgYnkgcHJlZml4aW5nIGBpZGAgYW5kIGBuYW1lYCBhdHRyaWJ1dGVzXG4gICAgICogd2l0aCBhIGNvbnN0YW50IHN0cmluZywgaS5lLiwgYHVzZXItY29udGVudC1gXG4gICAgICovXG5cbiAgICBsZXQgU0FOSVRJWkVfTkFNRURfUFJPUFMgPSBmYWxzZTtcbiAgICBjb25zdCBTQU5JVElaRV9OQU1FRF9QUk9QU19QUkVGSVggPSAndXNlci1jb250ZW50LSc7XG4gICAgLyogS2VlcCBlbGVtZW50IGNvbnRlbnQgd2hlbiByZW1vdmluZyBlbGVtZW50PyAqL1xuXG4gICAgbGV0IEtFRVBfQ09OVEVOVCA9IHRydWU7XG4gICAgLyogSWYgYSBgTm9kZWAgaXMgcGFzc2VkIHRvIHNhbml0aXplKCksIHRoZW4gcGVyZm9ybXMgc2FuaXRpemF0aW9uIGluLXBsYWNlIGluc3RlYWRcbiAgICAgKiBvZiBpbXBvcnRpbmcgaXQgaW50byBhIG5ldyBEb2N1bWVudCBhbmQgcmV0dXJuaW5nIGEgc2FuaXRpemVkIGNvcHkgKi9cblxuICAgIGxldCBJTl9QTEFDRSA9IGZhbHNlO1xuICAgIC8qIEFsbG93IHVzYWdlIG9mIHByb2ZpbGVzIGxpa2UgaHRtbCwgc3ZnIGFuZCBtYXRoTWwgKi9cblxuICAgIGxldCBVU0VfUFJPRklMRVMgPSB7fTtcbiAgICAvKiBUYWdzIHRvIGlnbm9yZSBjb250ZW50IG9mIHdoZW4gS0VFUF9DT05URU5UIGlzIHRydWUgKi9cblxuICAgIGxldCBGT1JCSURfQ09OVEVOVFMgPSBudWxsO1xuICAgIGNvbnN0IERFRkFVTFRfRk9SQklEX0NPTlRFTlRTID0gYWRkVG9TZXQoe30sIFsnYW5ub3RhdGlvbi14bWwnLCAnYXVkaW8nLCAnY29sZ3JvdXAnLCAnZGVzYycsICdmb3JlaWdub2JqZWN0JywgJ2hlYWQnLCAnaWZyYW1lJywgJ21hdGgnLCAnbWknLCAnbW4nLCAnbW8nLCAnbXMnLCAnbXRleHQnLCAnbm9lbWJlZCcsICdub2ZyYW1lcycsICdub3NjcmlwdCcsICdwbGFpbnRleHQnLCAnc2NyaXB0JywgJ3N0eWxlJywgJ3N2ZycsICd0ZW1wbGF0ZScsICd0aGVhZCcsICd0aXRsZScsICd2aWRlbycsICd4bXAnXSk7XG4gICAgLyogVGFncyB0aGF0IGFyZSBzYWZlIGZvciBkYXRhOiBVUklzICovXG5cbiAgICBsZXQgREFUQV9VUklfVEFHUyA9IG51bGw7XG4gICAgY29uc3QgREVGQVVMVF9EQVRBX1VSSV9UQUdTID0gYWRkVG9TZXQoe30sIFsnYXVkaW8nLCAndmlkZW8nLCAnaW1nJywgJ3NvdXJjZScsICdpbWFnZScsICd0cmFjayddKTtcbiAgICAvKiBBdHRyaWJ1dGVzIHNhZmUgZm9yIHZhbHVlcyBsaWtlIFwiamF2YXNjcmlwdDpcIiAqL1xuXG4gICAgbGV0IFVSSV9TQUZFX0FUVFJJQlVURVMgPSBudWxsO1xuICAgIGNvbnN0IERFRkFVTFRfVVJJX1NBRkVfQVRUUklCVVRFUyA9IGFkZFRvU2V0KHt9LCBbJ2FsdCcsICdjbGFzcycsICdmb3InLCAnaWQnLCAnbGFiZWwnLCAnbmFtZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3JvbGUnLCAnc3VtbWFyeScsICd0aXRsZScsICd2YWx1ZScsICdzdHlsZScsICd4bWxucyddKTtcbiAgICBjb25zdCBNQVRITUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnO1xuICAgIGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICAgIGNvbnN0IEhUTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnO1xuICAgIC8qIERvY3VtZW50IG5hbWVzcGFjZSAqL1xuXG4gICAgbGV0IE5BTUVTUEFDRSA9IEhUTUxfTkFNRVNQQUNFO1xuICAgIGxldCBJU19FTVBUWV9JTlBVVCA9IGZhbHNlO1xuICAgIC8qIEFsbG93ZWQgWEhUTUwrWE1MIG5hbWVzcGFjZXMgKi9cblxuICAgIGxldCBBTExPV0VEX05BTUVTUEFDRVMgPSBudWxsO1xuICAgIGNvbnN0IERFRkFVTFRfQUxMT1dFRF9OQU1FU1BBQ0VTID0gYWRkVG9TZXQoe30sIFtNQVRITUxfTkFNRVNQQUNFLCBTVkdfTkFNRVNQQUNFLCBIVE1MX05BTUVTUEFDRV0sIHN0cmluZ1RvU3RyaW5nKTtcbiAgICAvKiBQYXJzaW5nIG9mIHN0cmljdCBYSFRNTCBkb2N1bWVudHMgKi9cblxuICAgIGxldCBQQVJTRVJfTUVESUFfVFlQRTtcbiAgICBjb25zdCBTVVBQT1JURURfUEFSU0VSX01FRElBX1RZUEVTID0gWydhcHBsaWNhdGlvbi94aHRtbCt4bWwnLCAndGV4dC9odG1sJ107XG4gICAgY29uc3QgREVGQVVMVF9QQVJTRVJfTUVESUFfVFlQRSA9ICd0ZXh0L2h0bWwnO1xuICAgIGxldCB0cmFuc2Zvcm1DYXNlRnVuYztcbiAgICAvKiBLZWVwIGEgcmVmZXJlbmNlIHRvIGNvbmZpZyB0byBwYXNzIHRvIGhvb2tzICovXG5cbiAgICBsZXQgQ09ORklHID0gbnVsbDtcbiAgICAvKiBJZGVhbGx5LCBkbyBub3QgdG91Y2ggYW55dGhpbmcgYmVsb3cgdGhpcyBsaW5lICovXG5cbiAgICAvKiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICovXG5cbiAgICBjb25zdCBmb3JtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTtcblxuICAgIGNvbnN0IGlzUmVnZXhPckZ1bmN0aW9uID0gZnVuY3Rpb24gaXNSZWdleE9yRnVuY3Rpb24odGVzdFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGVzdFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwIHx8IHRlc3RWYWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogX3BhcnNlQ29uZmlnXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtPYmplY3R9IGNmZyBvcHRpb25hbCBjb25maWcgbGl0ZXJhbFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5cblxuICAgIGNvbnN0IF9wYXJzZUNvbmZpZyA9IGZ1bmN0aW9uIF9wYXJzZUNvbmZpZyhjZmcpIHtcbiAgICAgIGlmIChDT05GSUcgJiYgQ09ORklHID09PSBjZmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLyogU2hpZWxkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZyb20gdGFtcGVyaW5nICovXG5cblxuICAgICAgaWYgKCFjZmcgfHwgdHlwZW9mIGNmZyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY2ZnID0ge307XG4gICAgICB9XG4gICAgICAvKiBTaGllbGQgY29uZmlndXJhdGlvbiBvYmplY3QgZnJvbSBwcm90b3R5cGUgcG9sbHV0aW9uICovXG5cblxuICAgICAgY2ZnID0gY2xvbmUoY2ZnKTtcbiAgICAgIFBBUlNFUl9NRURJQV9UWVBFID0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcHJlZmVyLWluY2x1ZGVzXG4gICAgICBTVVBQT1JURURfUEFSU0VSX01FRElBX1RZUEVTLmluZGV4T2YoY2ZnLlBBUlNFUl9NRURJQV9UWVBFKSA9PT0gLTEgPyBQQVJTRVJfTUVESUFfVFlQRSA9IERFRkFVTFRfUEFSU0VSX01FRElBX1RZUEUgOiBQQVJTRVJfTUVESUFfVFlQRSA9IGNmZy5QQVJTRVJfTUVESUFfVFlQRTsgLy8gSFRNTCB0YWdzIGFuZCBhdHRyaWJ1dGVzIGFyZSBub3QgY2FzZS1zZW5zaXRpdmUsIGNvbnZlcnRpbmcgdG8gbG93ZXJjYXNlLiBLZWVwaW5nIFhIVE1MIGFzIGlzLlxuXG4gICAgICB0cmFuc2Zvcm1DYXNlRnVuYyA9IFBBUlNFUl9NRURJQV9UWVBFID09PSAnYXBwbGljYXRpb24veGh0bWwreG1sJyA/IHN0cmluZ1RvU3RyaW5nIDogc3RyaW5nVG9Mb3dlckNhc2U7XG4gICAgICAvKiBTZXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzICovXG5cbiAgICAgIEFMTE9XRURfVEFHUyA9ICdBTExPV0VEX1RBR1MnIGluIGNmZyA/IGFkZFRvU2V0KHt9LCBjZmcuQUxMT1dFRF9UQUdTLCB0cmFuc2Zvcm1DYXNlRnVuYykgOiBERUZBVUxUX0FMTE9XRURfVEFHUztcbiAgICAgIEFMTE9XRURfQVRUUiA9ICdBTExPV0VEX0FUVFInIGluIGNmZyA/IGFkZFRvU2V0KHt9LCBjZmcuQUxMT1dFRF9BVFRSLCB0cmFuc2Zvcm1DYXNlRnVuYykgOiBERUZBVUxUX0FMTE9XRURfQVRUUjtcbiAgICAgIEFMTE9XRURfTkFNRVNQQUNFUyA9ICdBTExPV0VEX05BTUVTUEFDRVMnIGluIGNmZyA/IGFkZFRvU2V0KHt9LCBjZmcuQUxMT1dFRF9OQU1FU1BBQ0VTLCBzdHJpbmdUb1N0cmluZykgOiBERUZBVUxUX0FMTE9XRURfTkFNRVNQQUNFUztcbiAgICAgIFVSSV9TQUZFX0FUVFJJQlVURVMgPSAnQUREX1VSSV9TQUZFX0FUVFInIGluIGNmZyA/IGFkZFRvU2V0KGNsb25lKERFRkFVTFRfVVJJX1NBRkVfQVRUUklCVVRFUyksIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW5kZW50XG4gICAgICBjZmcuQUREX1VSSV9TQUZFX0FUVFIsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW5kZW50XG4gICAgICB0cmFuc2Zvcm1DYXNlRnVuYyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGluZGVudFxuICAgICAgKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGluZGVudFxuICAgICAgOiBERUZBVUxUX1VSSV9TQUZFX0FUVFJJQlVURVM7XG4gICAgICBEQVRBX1VSSV9UQUdTID0gJ0FERF9EQVRBX1VSSV9UQUdTJyBpbiBjZmcgPyBhZGRUb1NldChjbG9uZShERUZBVUxUX0RBVEFfVVJJX1RBR1MpLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGluZGVudFxuICAgICAgY2ZnLkFERF9EQVRBX1VSSV9UQUdTLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGluZGVudFxuICAgICAgdHJhbnNmb3JtQ2FzZUZ1bmMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbmRlbnRcbiAgICAgICkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbmRlbnRcbiAgICAgIDogREVGQVVMVF9EQVRBX1VSSV9UQUdTO1xuICAgICAgRk9SQklEX0NPTlRFTlRTID0gJ0ZPUkJJRF9DT05URU5UUycgaW4gY2ZnID8gYWRkVG9TZXQoe30sIGNmZy5GT1JCSURfQ09OVEVOVFMsIHRyYW5zZm9ybUNhc2VGdW5jKSA6IERFRkFVTFRfRk9SQklEX0NPTlRFTlRTO1xuICAgICAgRk9SQklEX1RBR1MgPSAnRk9SQklEX1RBR1MnIGluIGNmZyA/IGFkZFRvU2V0KHt9LCBjZmcuRk9SQklEX1RBR1MsIHRyYW5zZm9ybUNhc2VGdW5jKSA6IHt9O1xuICAgICAgRk9SQklEX0FUVFIgPSAnRk9SQklEX0FUVFInIGluIGNmZyA/IGFkZFRvU2V0KHt9LCBjZmcuRk9SQklEX0FUVFIsIHRyYW5zZm9ybUNhc2VGdW5jKSA6IHt9O1xuICAgICAgVVNFX1BST0ZJTEVTID0gJ1VTRV9QUk9GSUxFUycgaW4gY2ZnID8gY2ZnLlVTRV9QUk9GSUxFUyA6IGZhbHNlO1xuICAgICAgQUxMT1dfQVJJQV9BVFRSID0gY2ZnLkFMTE9XX0FSSUFfQVRUUiAhPT0gZmFsc2U7IC8vIERlZmF1bHQgdHJ1ZVxuXG4gICAgICBBTExPV19EQVRBX0FUVFIgPSBjZmcuQUxMT1dfREFUQV9BVFRSICE9PSBmYWxzZTsgLy8gRGVmYXVsdCB0cnVlXG5cbiAgICAgIEFMTE9XX1VOS05PV05fUFJPVE9DT0xTID0gY2ZnLkFMTE9XX1VOS05PV05fUFJPVE9DT0xTIHx8IGZhbHNlOyAvLyBEZWZhdWx0IGZhbHNlXG5cbiAgICAgIEFMTE9XX1NFTEZfQ0xPU0VfSU5fQVRUUiA9IGNmZy5BTExPV19TRUxGX0NMT1NFX0lOX0FUVFIgIT09IGZhbHNlOyAvLyBEZWZhdWx0IHRydWVcblxuICAgICAgU0FGRV9GT1JfVEVNUExBVEVTID0gY2ZnLlNBRkVfRk9SX1RFTVBMQVRFUyB8fCBmYWxzZTsgLy8gRGVmYXVsdCBmYWxzZVxuXG4gICAgICBXSE9MRV9ET0NVTUVOVCA9IGNmZy5XSE9MRV9ET0NVTUVOVCB8fCBmYWxzZTsgLy8gRGVmYXVsdCBmYWxzZVxuXG4gICAgICBSRVRVUk5fRE9NID0gY2ZnLlJFVFVSTl9ET00gfHwgZmFsc2U7IC8vIERlZmF1bHQgZmFsc2VcblxuICAgICAgUkVUVVJOX0RPTV9GUkFHTUVOVCA9IGNmZy5SRVRVUk5fRE9NX0ZSQUdNRU5UIHx8IGZhbHNlOyAvLyBEZWZhdWx0IGZhbHNlXG5cbiAgICAgIFJFVFVSTl9UUlVTVEVEX1RZUEUgPSBjZmcuUkVUVVJOX1RSVVNURURfVFlQRSB8fCBmYWxzZTsgLy8gRGVmYXVsdCBmYWxzZVxuXG4gICAgICBGT1JDRV9CT0RZID0gY2ZnLkZPUkNFX0JPRFkgfHwgZmFsc2U7IC8vIERlZmF1bHQgZmFsc2VcblxuICAgICAgU0FOSVRJWkVfRE9NID0gY2ZnLlNBTklUSVpFX0RPTSAhPT0gZmFsc2U7IC8vIERlZmF1bHQgdHJ1ZVxuXG4gICAgICBTQU5JVElaRV9OQU1FRF9QUk9QUyA9IGNmZy5TQU5JVElaRV9OQU1FRF9QUk9QUyB8fCBmYWxzZTsgLy8gRGVmYXVsdCBmYWxzZVxuXG4gICAgICBLRUVQX0NPTlRFTlQgPSBjZmcuS0VFUF9DT05URU5UICE9PSBmYWxzZTsgLy8gRGVmYXVsdCB0cnVlXG5cbiAgICAgIElOX1BMQUNFID0gY2ZnLklOX1BMQUNFIHx8IGZhbHNlOyAvLyBEZWZhdWx0IGZhbHNlXG5cbiAgICAgIElTX0FMTE9XRURfVVJJJDEgPSBjZmcuQUxMT1dFRF9VUklfUkVHRVhQIHx8IElTX0FMTE9XRURfVVJJO1xuICAgICAgTkFNRVNQQUNFID0gY2ZnLk5BTUVTUEFDRSB8fCBIVE1MX05BTUVTUEFDRTtcbiAgICAgIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HID0gY2ZnLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HIHx8IHt9O1xuXG4gICAgICBpZiAoY2ZnLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HICYmIGlzUmVnZXhPckZ1bmN0aW9uKGNmZy5DVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2spKSB7XG4gICAgICAgIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjayA9IGNmZy5DVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2s7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZmcuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcgJiYgaXNSZWdleE9yRnVuY3Rpb24oY2ZnLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjaykpIHtcbiAgICAgICAgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrID0gY2ZnLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjaztcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy5DVVNUT01fRUxFTUVOVF9IQU5ETElORyAmJiB0eXBlb2YgY2ZnLkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyA9IGNmZy5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM7XG4gICAgICB9XG5cbiAgICAgIGlmIChTQUZFX0ZPUl9URU1QTEFURVMpIHtcbiAgICAgICAgQUxMT1dfREFUQV9BVFRSID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChSRVRVUk5fRE9NX0ZSQUdNRU5UKSB7XG4gICAgICAgIFJFVFVSTl9ET00gPSB0cnVlO1xuICAgICAgfVxuICAgICAgLyogUGFyc2UgcHJvZmlsZSBpbmZvICovXG5cblxuICAgICAgaWYgKFVTRV9QUk9GSUxFUykge1xuICAgICAgICBBTExPV0VEX1RBR1MgPSBhZGRUb1NldCh7fSwgWy4uLnRleHRdKTtcbiAgICAgICAgQUxMT1dFRF9BVFRSID0gW107XG5cbiAgICAgICAgaWYgKFVTRV9QUk9GSUxFUy5odG1sID09PSB0cnVlKSB7XG4gICAgICAgICAgYWRkVG9TZXQoQUxMT1dFRF9UQUdTLCBodG1sJDEpO1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfQVRUUiwgaHRtbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVVNFX1BST0ZJTEVTLnN2ZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfVEFHUywgc3ZnJDEpO1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfQVRUUiwgc3ZnKTtcbiAgICAgICAgICBhZGRUb1NldChBTExPV0VEX0FUVFIsIHhtbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVVNFX1BST0ZJTEVTLnN2Z0ZpbHRlcnMgPT09IHRydWUpIHtcbiAgICAgICAgICBhZGRUb1NldChBTExPV0VEX1RBR1MsIHN2Z0ZpbHRlcnMpO1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfQVRUUiwgc3ZnKTtcbiAgICAgICAgICBhZGRUb1NldChBTExPV0VEX0FUVFIsIHhtbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVVNFX1BST0ZJTEVTLm1hdGhNbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfVEFHUywgbWF0aE1sJDEpO1xuICAgICAgICAgIGFkZFRvU2V0KEFMTE9XRURfQVRUUiwgbWF0aE1sKTtcbiAgICAgICAgICBhZGRUb1NldChBTExPV0VEX0FUVFIsIHhtbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIE1lcmdlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyAqL1xuXG5cbiAgICAgIGlmIChjZmcuQUREX1RBR1MpIHtcbiAgICAgICAgaWYgKEFMTE9XRURfVEFHUyA9PT0gREVGQVVMVF9BTExPV0VEX1RBR1MpIHtcbiAgICAgICAgICBBTExPV0VEX1RBR1MgPSBjbG9uZShBTExPV0VEX1RBR1MpO1xuICAgICAgICB9XG5cbiAgICAgICAgYWRkVG9TZXQoQUxMT1dFRF9UQUdTLCBjZmcuQUREX1RBR1MsIHRyYW5zZm9ybUNhc2VGdW5jKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmZy5BRERfQVRUUikge1xuICAgICAgICBpZiAoQUxMT1dFRF9BVFRSID09PSBERUZBVUxUX0FMTE9XRURfQVRUUikge1xuICAgICAgICAgIEFMTE9XRURfQVRUUiA9IGNsb25lKEFMTE9XRURfQVRUUik7XG4gICAgICAgIH1cblxuICAgICAgICBhZGRUb1NldChBTExPV0VEX0FUVFIsIGNmZy5BRERfQVRUUiwgdHJhbnNmb3JtQ2FzZUZ1bmMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLkFERF9VUklfU0FGRV9BVFRSKSB7XG4gICAgICAgIGFkZFRvU2V0KFVSSV9TQUZFX0FUVFJJQlVURVMsIGNmZy5BRERfVVJJX1NBRkVfQVRUUiwgdHJhbnNmb3JtQ2FzZUZ1bmMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZnLkZPUkJJRF9DT05URU5UUykge1xuICAgICAgICBpZiAoRk9SQklEX0NPTlRFTlRTID09PSBERUZBVUxUX0ZPUkJJRF9DT05URU5UUykge1xuICAgICAgICAgIEZPUkJJRF9DT05URU5UUyA9IGNsb25lKEZPUkJJRF9DT05URU5UUyk7XG4gICAgICAgIH1cblxuICAgICAgICBhZGRUb1NldChGT1JCSURfQ09OVEVOVFMsIGNmZy5GT1JCSURfQ09OVEVOVFMsIHRyYW5zZm9ybUNhc2VGdW5jKTtcbiAgICAgIH1cbiAgICAgIC8qIEFkZCAjdGV4dCBpbiBjYXNlIEtFRVBfQ09OVEVOVCBpcyBzZXQgdG8gdHJ1ZSAqL1xuXG5cbiAgICAgIGlmIChLRUVQX0NPTlRFTlQpIHtcbiAgICAgICAgQUxMT1dFRF9UQUdTWycjdGV4dCddID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8qIEFkZCBodG1sLCBoZWFkIGFuZCBib2R5IHRvIEFMTE9XRURfVEFHUyBpbiBjYXNlIFdIT0xFX0RPQ1VNRU5UIGlzIHRydWUgKi9cblxuXG4gICAgICBpZiAoV0hPTEVfRE9DVU1FTlQpIHtcbiAgICAgICAgYWRkVG9TZXQoQUxMT1dFRF9UQUdTLCBbJ2h0bWwnLCAnaGVhZCcsICdib2R5J10pO1xuICAgICAgfVxuICAgICAgLyogQWRkIHRib2R5IHRvIEFMTE9XRURfVEFHUyBpbiBjYXNlIHRhYmxlcyBhcmUgcGVybWl0dGVkLCBzZWUgIzI4NiwgIzM2NSAqL1xuXG5cbiAgICAgIGlmIChBTExPV0VEX1RBR1MudGFibGUpIHtcbiAgICAgICAgYWRkVG9TZXQoQUxMT1dFRF9UQUdTLCBbJ3Rib2R5J10pO1xuICAgICAgICBkZWxldGUgRk9SQklEX1RBR1MudGJvZHk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjZmcuVFJVU1RFRF9UWVBFU19QT0xJQ1kpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZmcuVFJVU1RFRF9UWVBFU19QT0xJQ1kuY3JlYXRlSFRNTCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IHR5cGVFcnJvckNyZWF0ZSgnVFJVU1RFRF9UWVBFU19QT0xJQ1kgY29uZmlndXJhdGlvbiBvcHRpb24gbXVzdCBwcm92aWRlIGEgXCJjcmVhdGVIVE1MXCIgaG9vay4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2ZnLlRSVVNURURfVFlQRVNfUE9MSUNZLmNyZWF0ZVNjcmlwdFVSTCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IHR5cGVFcnJvckNyZWF0ZSgnVFJVU1RFRF9UWVBFU19QT0xJQ1kgY29uZmlndXJhdGlvbiBvcHRpb24gbXVzdCBwcm92aWRlIGEgXCJjcmVhdGVTY3JpcHRVUkxcIiBob29rLicpO1xuICAgICAgICB9IC8vIE92ZXJ3cml0ZSBleGlzdGluZyBUcnVzdGVkVHlwZXMgcG9saWN5LlxuXG5cbiAgICAgICAgdHJ1c3RlZFR5cGVzUG9saWN5ID0gY2ZnLlRSVVNURURfVFlQRVNfUE9MSUNZOyAvLyBTaWduIGxvY2FsIHZhcmlhYmxlcyByZXF1aXJlZCBieSBgc2FuaXRpemVgLlxuXG4gICAgICAgIGVtcHR5SFRNTCA9IHRydXN0ZWRUeXBlc1BvbGljeS5jcmVhdGVIVE1MKCcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVuaW5pdGlhbGl6ZWQgcG9saWN5LCBhdHRlbXB0IHRvIGluaXRpYWxpemUgdGhlIGludGVybmFsIGRvbXB1cmlmeSBwb2xpY3kuXG4gICAgICAgIGlmICh0cnVzdGVkVHlwZXNQb2xpY3kgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRydXN0ZWRUeXBlc1BvbGljeSA9IF9jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3kodHJ1c3RlZFR5cGVzLCBjdXJyZW50U2NyaXB0KTtcbiAgICAgICAgfSAvLyBJZiBjcmVhdGluZyB0aGUgaW50ZXJuYWwgcG9saWN5IHN1Y2NlZWRlZCBzaWduIGludGVybmFsIHZhcmlhYmxlcy5cblxuXG4gICAgICAgIGlmICh0cnVzdGVkVHlwZXNQb2xpY3kgIT09IG51bGwgJiYgdHlwZW9mIGVtcHR5SFRNTCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlbXB0eUhUTUwgPSB0cnVzdGVkVHlwZXNQb2xpY3kuY3JlYXRlSFRNTCgnJyk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gUHJldmVudCBmdXJ0aGVyIG1hbmlwdWxhdGlvbiBvZiBjb25maWd1cmF0aW9uLlxuICAgICAgLy8gTm90IGF2YWlsYWJsZSBpbiBJRTgsIFNhZmFyaSA1LCBldGMuXG5cblxuICAgICAgaWYgKGZyZWV6ZSkge1xuICAgICAgICBmcmVlemUoY2ZnKTtcbiAgICAgIH1cblxuICAgICAgQ09ORklHID0gY2ZnO1xuICAgIH07XG5cbiAgICBjb25zdCBNQVRITUxfVEVYVF9JTlRFR1JBVElPTl9QT0lOVFMgPSBhZGRUb1NldCh7fSwgWydtaScsICdtbycsICdtbicsICdtcycsICdtdGV4dCddKTtcbiAgICBjb25zdCBIVE1MX0lOVEVHUkFUSU9OX1BPSU5UUyA9IGFkZFRvU2V0KHt9LCBbJ2ZvcmVpZ25vYmplY3QnLCAnZGVzYycsICd0aXRsZScsICdhbm5vdGF0aW9uLXhtbCddKTsgLy8gQ2VydGFpbiBlbGVtZW50cyBhcmUgYWxsb3dlZCBpbiBib3RoIFNWRyBhbmQgSFRNTFxuICAgIC8vIG5hbWVzcGFjZS4gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZW0gZXhwbGljaXRseVxuICAgIC8vIHNvIHRoYXQgdGhleSBkb24ndCBnZXQgZXJyb25lb3VzbHkgZGVsZXRlZCBmcm9tXG4gICAgLy8gSFRNTCBuYW1lc3BhY2UuXG5cbiAgICBjb25zdCBDT01NT05fU1ZHX0FORF9IVE1MX0VMRU1FTlRTID0gYWRkVG9TZXQoe30sIFsndGl0bGUnLCAnc3R5bGUnLCAnZm9udCcsICdhJywgJ3NjcmlwdCddKTtcbiAgICAvKiBLZWVwIHRyYWNrIG9mIGFsbCBwb3NzaWJsZSBTVkcgYW5kIE1hdGhNTCB0YWdzXG4gICAgICogc28gdGhhdCB3ZSBjYW4gcGVyZm9ybSB0aGUgbmFtZXNwYWNlIGNoZWNrc1xuICAgICAqIGNvcnJlY3RseS4gKi9cblxuICAgIGNvbnN0IEFMTF9TVkdfVEFHUyA9IGFkZFRvU2V0KHt9LCBzdmckMSk7XG4gICAgYWRkVG9TZXQoQUxMX1NWR19UQUdTLCBzdmdGaWx0ZXJzKTtcbiAgICBhZGRUb1NldChBTExfU1ZHX1RBR1MsIHN2Z0Rpc2FsbG93ZWQpO1xuICAgIGNvbnN0IEFMTF9NQVRITUxfVEFHUyA9IGFkZFRvU2V0KHt9LCBtYXRoTWwkMSk7XG4gICAgYWRkVG9TZXQoQUxMX01BVEhNTF9UQUdTLCBtYXRoTWxEaXNhbGxvd2VkKTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqXG4gICAgICogQHBhcmFtICB7RWxlbWVudH0gZWxlbWVudCBhIERPTSBlbGVtZW50IHdob3NlIG5hbWVzcGFjZSBpcyBiZWluZyBjaGVja2VkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybiBmYWxzZSBpZiB0aGUgZWxlbWVudCBoYXMgYVxuICAgICAqICBuYW1lc3BhY2UgdGhhdCBhIHNwZWMtY29tcGxpYW50IHBhcnNlciB3b3VsZCBuZXZlclxuICAgICAqICByZXR1cm4uIFJldHVybiB0cnVlIG90aGVyd2lzZS5cbiAgICAgKi9cblxuICAgIGNvbnN0IF9jaGVja1ZhbGlkTmFtZXNwYWNlID0gZnVuY3Rpb24gX2NoZWNrVmFsaWROYW1lc3BhY2UoZWxlbWVudCkge1xuICAgICAgbGV0IHBhcmVudCA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7IC8vIEluIEpTRE9NLCBpZiB3ZSdyZSBpbnNpZGUgc2hhZG93IERPTSwgdGhlbiBwYXJlbnROb2RlXG4gICAgICAvLyBjYW4gYmUgbnVsbC4gV2UganVzdCBzaW11bGF0ZSBwYXJlbnQgaW4gdGhpcyBjYXNlLlxuXG4gICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LnRhZ05hbWUpIHtcbiAgICAgICAgcGFyZW50ID0ge1xuICAgICAgICAgIG5hbWVzcGFjZVVSSTogTkFNRVNQQUNFLFxuICAgICAgICAgIHRhZ05hbWU6ICd0ZW1wbGF0ZSdcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFnTmFtZSA9IHN0cmluZ1RvTG93ZXJDYXNlKGVsZW1lbnQudGFnTmFtZSk7XG4gICAgICBjb25zdCBwYXJlbnRUYWdOYW1lID0gc3RyaW5nVG9Mb3dlckNhc2UocGFyZW50LnRhZ05hbWUpO1xuXG4gICAgICBpZiAoIUFMTE9XRURfTkFNRVNQQUNFU1tlbGVtZW50Lm5hbWVzcGFjZVVSSV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UpIHtcbiAgICAgICAgLy8gVGhlIG9ubHkgd2F5IHRvIHN3aXRjaCBmcm9tIEhUTUwgbmFtZXNwYWNlIHRvIFNWR1xuICAgICAgICAvLyBpcyB2aWEgPHN2Zz4uIElmIGl0IGhhcHBlbnMgdmlhIGFueSBvdGhlciB0YWcsIHRoZW5cbiAgICAgICAgLy8gaXQgc2hvdWxkIGJlIGtpbGxlZC5cbiAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgPT09IEhUTUxfTkFNRVNQQUNFKSB7XG4gICAgICAgICAgcmV0dXJuIHRhZ05hbWUgPT09ICdzdmcnO1xuICAgICAgICB9IC8vIFRoZSBvbmx5IHdheSB0byBzd2l0Y2ggZnJvbSBNYXRoTUwgdG8gU1ZHIGlzIHZpYWBcbiAgICAgICAgLy8gc3ZnIGlmIHBhcmVudCBpcyBlaXRoZXIgPGFubm90YXRpb24teG1sPiBvciBNYXRoTUxcbiAgICAgICAgLy8gdGV4dCBpbnRlZ3JhdGlvbiBwb2ludHMuXG5cblxuICAgICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSA9PT0gTUFUSE1MX05BTUVTUEFDRSkge1xuICAgICAgICAgIHJldHVybiB0YWdOYW1lID09PSAnc3ZnJyAmJiAocGFyZW50VGFnTmFtZSA9PT0gJ2Fubm90YXRpb24teG1sJyB8fCBNQVRITUxfVEVYVF9JTlRFR1JBVElPTl9QT0lOVFNbcGFyZW50VGFnTmFtZV0pO1xuICAgICAgICB9IC8vIFdlIG9ubHkgYWxsb3cgZWxlbWVudHMgdGhhdCBhcmUgZGVmaW5lZCBpbiBTVkdcbiAgICAgICAgLy8gc3BlYy4gQWxsIG90aGVycyBhcmUgZGlzYWxsb3dlZCBpbiBTVkcgbmFtZXNwYWNlLlxuXG5cbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oQUxMX1NWR19UQUdTW3RhZ05hbWVdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsZW1lbnQubmFtZXNwYWNlVVJJID09PSBNQVRITUxfTkFNRVNQQUNFKSB7XG4gICAgICAgIC8vIFRoZSBvbmx5IHdheSB0byBzd2l0Y2ggZnJvbSBIVE1MIG5hbWVzcGFjZSB0byBNYXRoTUxcbiAgICAgICAgLy8gaXMgdmlhIDxtYXRoPi4gSWYgaXQgaGFwcGVucyB2aWEgYW55IG90aGVyIHRhZywgdGhlblxuICAgICAgICAvLyBpdCBzaG91bGQgYmUga2lsbGVkLlxuICAgICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSA9PT0gSFRNTF9OQU1FU1BBQ0UpIHtcbiAgICAgICAgICByZXR1cm4gdGFnTmFtZSA9PT0gJ21hdGgnO1xuICAgICAgICB9IC8vIFRoZSBvbmx5IHdheSB0byBzd2l0Y2ggZnJvbSBTVkcgdG8gTWF0aE1MIGlzIHZpYVxuICAgICAgICAvLyA8bWF0aD4gYW5kIEhUTUwgaW50ZWdyYXRpb24gcG9pbnRzXG5cblxuICAgICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgICAgIHJldHVybiB0YWdOYW1lID09PSAnbWF0aCcgJiYgSFRNTF9JTlRFR1JBVElPTl9QT0lOVFNbcGFyZW50VGFnTmFtZV07XG4gICAgICAgIH0gLy8gV2Ugb25seSBhbGxvdyBlbGVtZW50cyB0aGF0IGFyZSBkZWZpbmVkIGluIE1hdGhNTFxuICAgICAgICAvLyBzcGVjLiBBbGwgb3RoZXJzIGFyZSBkaXNhbGxvd2VkIGluIE1hdGhNTCBuYW1lc3BhY2UuXG5cblxuICAgICAgICByZXR1cm4gQm9vbGVhbihBTExfTUFUSE1MX1RBR1NbdGFnTmFtZV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IEhUTUxfTkFNRVNQQUNFKSB7XG4gICAgICAgIC8vIFRoZSBvbmx5IHdheSB0byBzd2l0Y2ggZnJvbSBTVkcgdG8gSFRNTCBpcyB2aWFcbiAgICAgICAgLy8gSFRNTCBpbnRlZ3JhdGlvbiBwb2ludHMsIGFuZCBmcm9tIE1hdGhNTCB0byBIVE1MXG4gICAgICAgIC8vIGlzIHZpYSBNYXRoTUwgdGV4dCBpbnRlZ3JhdGlvbiBwb2ludHNcbiAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UgJiYgIUhUTUxfSU5URUdSQVRJT05fUE9JTlRTW3BhcmVudFRhZ05hbWVdKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgPT09IE1BVEhNTF9OQU1FU1BBQ0UgJiYgIU1BVEhNTF9URVhUX0lOVEVHUkFUSU9OX1BPSU5UU1twYXJlbnRUYWdOYW1lXSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSAvLyBXZSBkaXNhbGxvdyB0YWdzIHRoYXQgYXJlIHNwZWNpZmljIGZvciBNYXRoTUxcbiAgICAgICAgLy8gb3IgU1ZHIGFuZCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIEhUTUwgbmFtZXNwYWNlXG5cblxuICAgICAgICByZXR1cm4gIUFMTF9NQVRITUxfVEFHU1t0YWdOYW1lXSAmJiAoQ09NTU9OX1NWR19BTkRfSFRNTF9FTEVNRU5UU1t0YWdOYW1lXSB8fCAhQUxMX1NWR19UQUdTW3RhZ05hbWVdKTtcbiAgICAgIH0gLy8gRm9yIFhIVE1MIGFuZCBYTUwgZG9jdW1lbnRzIHRoYXQgc3VwcG9ydCBjdXN0b20gbmFtZXNwYWNlc1xuXG5cbiAgICAgIGlmIChQQVJTRVJfTUVESUFfVFlQRSA9PT0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcgJiYgQUxMT1dFRF9OQU1FU1BBQ0VTW2VsZW1lbnQubmFtZXNwYWNlVVJJXSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gLy8gVGhlIGNvZGUgc2hvdWxkIG5ldmVyIHJlYWNoIHRoaXMgcGxhY2UgKHRoaXMgbWVhbnNcbiAgICAgIC8vIHRoYXQgdGhlIGVsZW1lbnQgc29tZWhvdyBnb3QgbmFtZXNwYWNlIHRoYXQgaXMgbm90XG4gICAgICAvLyBIVE1MLCBTVkcsIE1hdGhNTCBvciBhbGxvd2VkIHZpYSBBTExPV0VEX05BTUVTUEFDRVMpLlxuICAgICAgLy8gUmV0dXJuIGZhbHNlIGp1c3QgaW4gY2FzZS5cblxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfZm9yY2VSZW1vdmVcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge05vZGV9IG5vZGUgYSBET00gbm9kZVxuICAgICAqL1xuXG5cbiAgICBjb25zdCBfZm9yY2VSZW1vdmUgPSBmdW5jdGlvbiBfZm9yY2VSZW1vdmUobm9kZSkge1xuICAgICAgYXJyYXlQdXNoKERPTVB1cmlmeS5yZW1vdmVkLCB7XG4gICAgICAgIGVsZW1lbnQ6IG5vZGVcbiAgICAgIH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZG9tLW5vZGUtcmVtb3ZlXG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgbm9kZS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIF9yZW1vdmVBdHRyaWJ1dGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge1N0cmluZ30gbmFtZSBhbiBBdHRyaWJ1dGUgbmFtZVxuICAgICAqIEBwYXJhbSAge05vZGV9IG5vZGUgYSBET00gbm9kZVxuICAgICAqL1xuXG5cbiAgICBjb25zdCBfcmVtb3ZlQXR0cmlidXRlID0gZnVuY3Rpb24gX3JlbW92ZUF0dHJpYnV0ZShuYW1lLCBub2RlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcnJheVB1c2goRE9NUHVyaWZ5LnJlbW92ZWQsIHtcbiAgICAgICAgICBhdHRyaWJ1dGU6IG5vZGUuZ2V0QXR0cmlidXRlTm9kZShuYW1lKSxcbiAgICAgICAgICBmcm9tOiBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICBhcnJheVB1c2goRE9NUHVyaWZ5LnJlbW92ZWQsIHtcbiAgICAgICAgICBhdHRyaWJ1dGU6IG51bGwsXG4gICAgICAgICAgZnJvbTogbm9kZVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IC8vIFdlIHZvaWQgYXR0cmlidXRlIHZhbHVlcyBmb3IgdW5yZW1vdmFibGUgXCJpc1wiXCIgYXR0cmlidXRlc1xuXG4gICAgICBpZiAobmFtZSA9PT0gJ2lzJyAmJiAhQUxMT1dFRF9BVFRSW25hbWVdKSB7XG4gICAgICAgIGlmIChSRVRVUk5fRE9NIHx8IFJFVFVSTl9ET01fRlJBR01FTlQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgX2ZvcmNlUmVtb3ZlKG5vZGUpO1xuICAgICAgICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnKTtcbiAgICAgICAgICB9IGNhdGNoIChfKSB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfaW5pdERvY3VtZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtTdHJpbmd9IGRpcnR5IGEgc3RyaW5nIG9mIGRpcnR5IG1hcmt1cFxuICAgICAqIEByZXR1cm4ge0RvY3VtZW50fSBhIERPTSwgZmlsbGVkIHdpdGggdGhlIGRpcnR5IG1hcmt1cFxuICAgICAqL1xuXG5cbiAgICBjb25zdCBfaW5pdERvY3VtZW50ID0gZnVuY3Rpb24gX2luaXREb2N1bWVudChkaXJ0eSkge1xuICAgICAgLyogQ3JlYXRlIGEgSFRNTCBkb2N1bWVudCAqL1xuICAgICAgbGV0IGRvYztcbiAgICAgIGxldCBsZWFkaW5nV2hpdGVzcGFjZTtcblxuICAgICAgaWYgKEZPUkNFX0JPRFkpIHtcbiAgICAgICAgZGlydHkgPSAnPHJlbW92ZT48L3JlbW92ZT4nICsgZGlydHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBJZiBGT1JDRV9CT0RZIGlzbid0IHVzZWQsIGxlYWRpbmcgd2hpdGVzcGFjZSBuZWVkcyB0byBiZSBwcmVzZXJ2ZWQgbWFudWFsbHkgKi9cbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHN0cmluZ01hdGNoKGRpcnR5LCAvXltcXHJcXG5cXHQgXSsvKTtcbiAgICAgICAgbGVhZGluZ1doaXRlc3BhY2UgPSBtYXRjaGVzICYmIG1hdGNoZXNbMF07XG4gICAgICB9XG5cbiAgICAgIGlmIChQQVJTRVJfTUVESUFfVFlQRSA9PT0gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcgJiYgTkFNRVNQQUNFID09PSBIVE1MX05BTUVTUEFDRSkge1xuICAgICAgICAvLyBSb290IG9mIFhIVE1MIGRvYyBtdXN0IGNvbnRhaW4geG1sbnMgZGVjbGFyYXRpb24gKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIveGh0bWwxL25vcm1hdGl2ZS5odG1sI3N0cmljdClcbiAgICAgICAgZGlydHkgPSAnPGh0bWwgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI+PGhlYWQ+PC9oZWFkPjxib2R5PicgKyBkaXJ0eSArICc8L2JvZHk+PC9odG1sPic7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpcnR5UGF5bG9hZCA9IHRydXN0ZWRUeXBlc1BvbGljeSA/IHRydXN0ZWRUeXBlc1BvbGljeS5jcmVhdGVIVE1MKGRpcnR5KSA6IGRpcnR5O1xuICAgICAgLypcbiAgICAgICAqIFVzZSB0aGUgRE9NUGFyc2VyIEFQSSBieSBkZWZhdWx0LCBmYWxsYmFjayBsYXRlciBpZiBuZWVkcyBiZVxuICAgICAgICogRE9NUGFyc2VyIG5vdCB3b3JrIGZvciBzdmcgd2hlbiBoYXMgbXVsdGlwbGUgcm9vdCBlbGVtZW50LlxuICAgICAgICovXG5cbiAgICAgIGlmIChOQU1FU1BBQ0UgPT09IEhUTUxfTkFNRVNQQUNFKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhkaXJ0eVBheWxvYWQsIFBBUlNFUl9NRURJQV9UWVBFKTtcbiAgICAgICAgfSBjYXRjaCAoXykge31cbiAgICAgIH1cbiAgICAgIC8qIFVzZSBjcmVhdGVIVE1MRG9jdW1lbnQgaW4gY2FzZSBET01QYXJzZXIgaXMgbm90IGF2YWlsYWJsZSAqL1xuXG5cbiAgICAgIGlmICghZG9jIHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgIGRvYyA9IGltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KE5BTUVTUEFDRSwgJ3RlbXBsYXRlJywgbnVsbCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkb2MuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTCA9IElTX0VNUFRZX0lOUFVUID8gZW1wdHlIVE1MIDogZGlydHlQYXlsb2FkO1xuICAgICAgICB9IGNhdGNoIChfKSB7Ly8gU3ludGF4IGVycm9yIGlmIGRpcnR5UGF5bG9hZCBpcyBpbnZhbGlkIHhtbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvZHkgPSBkb2MuYm9keSB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgICBpZiAoZGlydHkgJiYgbGVhZGluZ1doaXRlc3BhY2UpIHtcbiAgICAgICAgYm9keS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGVhZGluZ1doaXRlc3BhY2UpLCBib2R5LmNoaWxkTm9kZXNbMF0gfHwgbnVsbCk7XG4gICAgICB9XG4gICAgICAvKiBXb3JrIG9uIHdob2xlIGRvY3VtZW50IG9yIGp1c3QgaXRzIGJvZHkgKi9cblxuXG4gICAgICBpZiAoTkFNRVNQQUNFID09PSBIVE1MX05BTUVTUEFDRSkge1xuICAgICAgICByZXR1cm4gZ2V0RWxlbWVudHNCeVRhZ05hbWUuY2FsbChkb2MsIFdIT0xFX0RPQ1VNRU5UID8gJ2h0bWwnIDogJ2JvZHknKVswXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFdIT0xFX0RPQ1VNRU5UID8gZG9jLmRvY3VtZW50RWxlbWVudCA6IGJvZHk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfY3JlYXRlSXRlcmF0b3JcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge0RvY3VtZW50fSByb290IGRvY3VtZW50L2ZyYWdtZW50IHRvIGNyZWF0ZSBpdGVyYXRvciBmb3JcbiAgICAgKiBAcmV0dXJuIHtJdGVyYXRvcn0gaXRlcmF0b3IgaW5zdGFuY2VcbiAgICAgKi9cblxuXG4gICAgY29uc3QgX2NyZWF0ZUl0ZXJhdG9yID0gZnVuY3Rpb24gX2NyZWF0ZUl0ZXJhdG9yKHJvb3QpIHtcbiAgICAgIHJldHVybiBjcmVhdGVOb2RlSXRlcmF0b3IuY2FsbChyb290Lm93bmVyRG9jdW1lbnQgfHwgcm9vdCwgcm9vdCwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UIHwgTm9kZUZpbHRlci5TSE9XX0NPTU1FTlQgfCBOb2RlRmlsdGVyLlNIT1dfVEVYVCwgbnVsbCwgZmFsc2UpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogX2lzQ2xvYmJlcmVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtOb2RlfSBlbG0gZWxlbWVudCB0byBjaGVjayBmb3IgY2xvYmJlcmluZyBhdHRhY2tzXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBjbG9iYmVyZWQsIGZhbHNlIGlmIHNhZmVcbiAgICAgKi9cblxuXG4gICAgY29uc3QgX2lzQ2xvYmJlcmVkID0gZnVuY3Rpb24gX2lzQ2xvYmJlcmVkKGVsbSkge1xuICAgICAgcmV0dXJuIGVsbSBpbnN0YW5jZW9mIEhUTUxGb3JtRWxlbWVudCAmJiAodHlwZW9mIGVsbS5ub2RlTmFtZSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsbS50ZXh0Q29udGVudCAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsbS5yZW1vdmVDaGlsZCAhPT0gJ2Z1bmN0aW9uJyB8fCAhKGVsbS5hdHRyaWJ1dGVzIGluc3RhbmNlb2YgTmFtZWROb2RlTWFwKSB8fCB0eXBlb2YgZWxtLnJlbW92ZUF0dHJpYnV0ZSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZWxtLnNldEF0dHJpYnV0ZSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgZWxtLm5hbWVzcGFjZVVSSSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGVsbS5pbnNlcnRCZWZvcmUgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVsbS5oYXNDaGlsZE5vZGVzICE9PSAnZnVuY3Rpb24nKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIF9pc05vZGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge05vZGV9IG9iaiBvYmplY3QgdG8gY2hlY2sgd2hldGhlciBpdCdzIGEgRE9NIG5vZGVcbiAgICAgKiBAcmV0dXJuIHtCb29sZWFufSB0cnVlIGlzIG9iamVjdCBpcyBhIERPTSBub2RlXG4gICAgICovXG5cblxuICAgIGNvbnN0IF9pc05vZGUgPSBmdW5jdGlvbiBfaXNOb2RlKG9iamVjdCkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBOb2RlID09PSAnb2JqZWN0JyA/IG9iamVjdCBpbnN0YW5jZW9mIE5vZGUgOiBvYmplY3QgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5ub2RlVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIG9iamVjdC5ub2RlTmFtZSA9PT0gJ3N0cmluZyc7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfZXhlY3V0ZUhvb2tcbiAgICAgKiBFeGVjdXRlIHVzZXIgY29uZmlndXJhYmxlIGhvb2tzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtTdHJpbmd9IGVudHJ5UG9pbnQgIE5hbWUgb2YgdGhlIGhvb2sncyBlbnRyeSBwb2ludFxuICAgICAqIEBwYXJhbSAge05vZGV9IGN1cnJlbnROb2RlIG5vZGUgdG8gd29yayBvbiB3aXRoIHRoZSBob29rXG4gICAgICogQHBhcmFtICB7T2JqZWN0fSBkYXRhIGFkZGl0aW9uYWwgaG9vayBwYXJhbWV0ZXJzXG4gICAgICovXG5cblxuICAgIGNvbnN0IF9leGVjdXRlSG9vayA9IGZ1bmN0aW9uIF9leGVjdXRlSG9vayhlbnRyeVBvaW50LCBjdXJyZW50Tm9kZSwgZGF0YSkge1xuICAgICAgaWYgKCFob29rc1tlbnRyeVBvaW50XSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFycmF5Rm9yRWFjaChob29rc1tlbnRyeVBvaW50XSwgaG9vayA9PiB7XG4gICAgICAgIGhvb2suY2FsbChET01QdXJpZnksIGN1cnJlbnROb2RlLCBkYXRhLCBDT05GSUcpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfc2FuaXRpemVFbGVtZW50c1xuICAgICAqXG4gICAgICogQHByb3RlY3Qgbm9kZU5hbWVcbiAgICAgKiBAcHJvdGVjdCB0ZXh0Q29udGVudFxuICAgICAqIEBwcm90ZWN0IHJlbW92ZUNoaWxkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gICB7Tm9kZX0gY3VycmVudE5vZGUgdG8gY2hlY2sgZm9yIHBlcm1pc3Npb24gdG8gZXhpc3RcbiAgICAgKiBAcmV0dXJuICB7Qm9vbGVhbn0gdHJ1ZSBpZiBub2RlIHdhcyBraWxsZWQsIGZhbHNlIGlmIGxlZnQgYWxpdmVcbiAgICAgKi9cblxuXG4gICAgY29uc3QgX3Nhbml0aXplRWxlbWVudHMgPSBmdW5jdGlvbiBfc2FuaXRpemVFbGVtZW50cyhjdXJyZW50Tm9kZSkge1xuICAgICAgbGV0IGNvbnRlbnQ7XG4gICAgICAvKiBFeGVjdXRlIGEgaG9vayBpZiBwcmVzZW50ICovXG5cbiAgICAgIF9leGVjdXRlSG9vaygnYmVmb3JlU2FuaXRpemVFbGVtZW50cycsIGN1cnJlbnROb2RlLCBudWxsKTtcbiAgICAgIC8qIENoZWNrIGlmIGVsZW1lbnQgaXMgY2xvYmJlcmVkIG9yIGNhbiBjbG9iYmVyICovXG5cblxuICAgICAgaWYgKF9pc0Nsb2JiZXJlZChjdXJyZW50Tm9kZSkpIHtcbiAgICAgICAgX2ZvcmNlUmVtb3ZlKGN1cnJlbnROb2RlKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8qIE5vdyBsZXQncyBjaGVjayB0aGUgZWxlbWVudCdzIHR5cGUgYW5kIG5hbWUgKi9cblxuXG4gICAgICBjb25zdCB0YWdOYW1lID0gdHJhbnNmb3JtQ2FzZUZ1bmMoY3VycmVudE5vZGUubm9kZU5hbWUpO1xuICAgICAgLyogRXhlY3V0ZSBhIGhvb2sgaWYgcHJlc2VudCAqL1xuXG4gICAgICBfZXhlY3V0ZUhvb2soJ3Vwb25TYW5pdGl6ZUVsZW1lbnQnLCBjdXJyZW50Tm9kZSwge1xuICAgICAgICB0YWdOYW1lLFxuICAgICAgICBhbGxvd2VkVGFnczogQUxMT1dFRF9UQUdTXG4gICAgICB9KTtcbiAgICAgIC8qIERldGVjdCBtWFNTIGF0dGVtcHRzIGFidXNpbmcgbmFtZXNwYWNlIGNvbmZ1c2lvbiAqL1xuXG5cbiAgICAgIGlmIChjdXJyZW50Tm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgIV9pc05vZGUoY3VycmVudE5vZGUuZmlyc3RFbGVtZW50Q2hpbGQpICYmICghX2lzTm9kZShjdXJyZW50Tm9kZS5jb250ZW50KSB8fCAhX2lzTm9kZShjdXJyZW50Tm9kZS5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKSkgJiYgcmVnRXhwVGVzdCgvPFsvXFx3XS9nLCBjdXJyZW50Tm9kZS5pbm5lckhUTUwpICYmIHJlZ0V4cFRlc3QoLzxbL1xcd10vZywgY3VycmVudE5vZGUudGV4dENvbnRlbnQpKSB7XG4gICAgICAgIF9mb3JjZVJlbW92ZShjdXJyZW50Tm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvKiBSZW1vdmUgZWxlbWVudCBpZiBhbnl0aGluZyBmb3JiaWRzIGl0cyBwcmVzZW5jZSAqL1xuXG5cbiAgICAgIGlmICghQUxMT1dFRF9UQUdTW3RhZ05hbWVdIHx8IEZPUkJJRF9UQUdTW3RhZ05hbWVdKSB7XG4gICAgICAgIC8qIENoZWNrIGlmIHdlIGhhdmUgYSBjdXN0b20gZWxlbWVudCB0byBoYW5kbGUgKi9cbiAgICAgICAgaWYgKCFGT1JCSURfVEFHU1t0YWdOYW1lXSAmJiBfYmFzaWNDdXN0b21FbGVtZW50VGVzdCh0YWdOYW1lKSkge1xuICAgICAgICAgIGlmIChDVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAgJiYgcmVnRXhwVGVzdChDVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2ssIHRhZ05hbWUpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgaWYgKENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVjayh0YWdOYW1lKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8qIEtlZXAgY29udGVudCBleGNlcHQgZm9yIGJhZC1saXN0ZWQgZWxlbWVudHMgKi9cblxuXG4gICAgICAgIGlmIChLRUVQX0NPTlRFTlQgJiYgIUZPUkJJRF9DT05URU5UU1t0YWdOYW1lXSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKSB8fCBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBnZXRDaGlsZE5vZGVzKGN1cnJlbnROb2RlKSB8fCBjdXJyZW50Tm9kZS5jaGlsZE5vZGVzO1xuXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZXMgJiYgcGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRDb3VudCA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gY2hpbGRDb3VudCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNsb25lTm9kZShjaGlsZE5vZGVzW2ldLCB0cnVlKSwgZ2V0TmV4dFNpYmxpbmcoY3VycmVudE5vZGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfZm9yY2VSZW1vdmUoY3VycmVudE5vZGUpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgLyogQ2hlY2sgd2hldGhlciBlbGVtZW50IGhhcyBhIHZhbGlkIG5hbWVzcGFjZSAqL1xuXG5cbiAgICAgIGlmIChjdXJyZW50Tm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgIV9jaGVja1ZhbGlkTmFtZXNwYWNlKGN1cnJlbnROb2RlKSkge1xuICAgICAgICBfZm9yY2VSZW1vdmUoY3VycmVudE5vZGUpO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgLyogTWFrZSBzdXJlIHRoYXQgb2xkZXIgYnJvd3NlcnMgZG9uJ3QgZ2V0IG5vc2NyaXB0IG1YU1MgKi9cblxuXG4gICAgICBpZiAoKHRhZ05hbWUgPT09ICdub3NjcmlwdCcgfHwgdGFnTmFtZSA9PT0gJ25vZW1iZWQnKSAmJiByZWdFeHBUZXN0KC88XFwvbm8oc2NyaXB0fGVtYmVkKS9pLCBjdXJyZW50Tm9kZS5pbm5lckhUTUwpKSB7XG4gICAgICAgIF9mb3JjZVJlbW92ZShjdXJyZW50Tm9kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvKiBTYW5pdGl6ZSBlbGVtZW50IGNvbnRlbnQgdG8gYmUgdGVtcGxhdGUtc2FmZSAqL1xuXG5cbiAgICAgIGlmIChTQUZFX0ZPUl9URU1QTEFURVMgJiYgY3VycmVudE5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgLyogR2V0IHRoZSBlbGVtZW50J3MgdGV4dCBjb250ZW50ICovXG4gICAgICAgIGNvbnRlbnQgPSBjdXJyZW50Tm9kZS50ZXh0Q29udGVudDtcbiAgICAgICAgY29udGVudCA9IHN0cmluZ1JlcGxhY2UoY29udGVudCwgTVVTVEFDSEVfRVhQUiwgJyAnKTtcbiAgICAgICAgY29udGVudCA9IHN0cmluZ1JlcGxhY2UoY29udGVudCwgRVJCX0VYUFIsICcgJyk7XG4gICAgICAgIGNvbnRlbnQgPSBzdHJpbmdSZXBsYWNlKGNvbnRlbnQsIFRNUExJVF9FWFBSLCAnICcpO1xuXG4gICAgICAgIGlmIChjdXJyZW50Tm9kZS50ZXh0Q29udGVudCAhPT0gY29udGVudCkge1xuICAgICAgICAgIGFycmF5UHVzaChET01QdXJpZnkucmVtb3ZlZCwge1xuICAgICAgICAgICAgZWxlbWVudDogY3VycmVudE5vZGUuY2xvbmVOb2RlKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjdXJyZW50Tm9kZS50ZXh0Q29udGVudCA9IGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIEV4ZWN1dGUgYSBob29rIGlmIHByZXNlbnQgKi9cblxuXG4gICAgICBfZXhlY3V0ZUhvb2soJ2FmdGVyU2FuaXRpemVFbGVtZW50cycsIGN1cnJlbnROb2RlLCBudWxsKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogX2lzVmFsaWRBdHRyaWJ1dGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge3N0cmluZ30gbGNUYWcgTG93ZXJjYXNlIHRhZyBuYW1lIG9mIGNvbnRhaW5pbmcgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gIHtzdHJpbmd9IGxjTmFtZSBMb3dlcmNhc2UgYXR0cmlidXRlIG5hbWUuXG4gICAgICogQHBhcmFtICB7c3RyaW5nfSB2YWx1ZSBBdHRyaWJ1dGUgdmFsdWUuXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGB2YWx1ZWAgaXMgdmFsaWQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuXG5cbiAgICBjb25zdCBfaXNWYWxpZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9pc1ZhbGlkQXR0cmlidXRlKGxjVGFnLCBsY05hbWUsIHZhbHVlKSB7XG4gICAgICAvKiBNYWtlIHN1cmUgYXR0cmlidXRlIGNhbm5vdCBjbG9iYmVyICovXG4gICAgICBpZiAoU0FOSVRJWkVfRE9NICYmIChsY05hbWUgPT09ICdpZCcgfHwgbGNOYW1lID09PSAnbmFtZScpICYmICh2YWx1ZSBpbiBkb2N1bWVudCB8fCB2YWx1ZSBpbiBmb3JtRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLyogQWxsb3cgdmFsaWQgZGF0YS0qIGF0dHJpYnV0ZXM6IEF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgYWZ0ZXIgXCItXCJcbiAgICAgICAgICAoaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZW1iZWRkaW5nLWN1c3RvbS1ub24tdmlzaWJsZS1kYXRhLXdpdGgtdGhlLWRhdGEtKi1hdHRyaWJ1dGVzKVxuICAgICAgICAgIFhNTC1jb21wYXRpYmxlIChodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbmZyYXN0cnVjdHVyZS5odG1sI3htbC1jb21wYXRpYmxlIGFuZCBodHRwOi8vd3d3LnczLm9yZy9UUi94bWwvI2QwZTgwNClcbiAgICAgICAgICBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSB2YWx1ZTsgaXQncyBhbHdheXMgVVJJIHNhZmUuICovXG5cblxuICAgICAgaWYgKEFMTE9XX0RBVEFfQVRUUiAmJiAhRk9SQklEX0FUVFJbbGNOYW1lXSAmJiByZWdFeHBUZXN0KERBVEFfQVRUUiwgbGNOYW1lKSkgOyBlbHNlIGlmIChBTExPV19BUklBX0FUVFIgJiYgcmVnRXhwVGVzdChBUklBX0FUVFIsIGxjTmFtZSkpIDsgZWxzZSBpZiAoIUFMTE9XRURfQVRUUltsY05hbWVdIHx8IEZPUkJJRF9BVFRSW2xjTmFtZV0pIHtcbiAgICAgICAgaWYgKCAvLyBGaXJzdCBjb25kaXRpb24gZG9lcyBhIHZlcnkgYmFzaWMgY2hlY2sgaWYgYSkgaXQncyBiYXNpY2FsbHkgYSB2YWxpZCBjdXN0b20gZWxlbWVudCB0YWduYW1lIEFORFxuICAgICAgICAvLyBiKSBpZiB0aGUgdGFnTmFtZSBwYXNzZXMgd2hhdGV2ZXIgdGhlIHVzZXIgaGFzIGNvbmZpZ3VyZWQgZm9yIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLnRhZ05hbWVDaGVja1xuICAgICAgICAvLyBhbmQgYykgaWYgdGhlIGF0dHJpYnV0ZSBuYW1lIHBhc3NlcyB3aGF0ZXZlciB0aGUgdXNlciBoYXMgY29uZmlndXJlZCBmb3IgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcuYXR0cmlidXRlTmFtZUNoZWNrXG4gICAgICAgIF9iYXNpY0N1c3RvbUVsZW1lbnRUZXN0KGxjVGFnKSAmJiAoQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwICYmIHJlZ0V4cFRlc3QoQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrLCBsY1RhZykgfHwgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKGxjVGFnKSkgJiYgKENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCAmJiByZWdFeHBUZXN0KENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjaywgbGNOYW1lKSB8fCBDVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJiBDVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2sobGNOYW1lKSkgfHwgLy8gQWx0ZXJuYXRpdmUsIHNlY29uZCBjb25kaXRpb24gY2hlY2tzIGlmIGl0J3MgYW4gYGlzYC1hdHRyaWJ1dGUsIEFORFxuICAgICAgICAvLyB0aGUgdmFsdWUgcGFzc2VzIHdoYXRldmVyIHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIGZvciBDVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2tcbiAgICAgICAgbGNOYW1lID09PSAnaXMnICYmIENVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cyAmJiAoQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwICYmIHJlZ0V4cFRlc3QoQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrLCB2YWx1ZSkgfHwgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKHZhbHVlKSkpIDsgZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8qIENoZWNrIHZhbHVlIGlzIHNhZmUuIEZpcnN0LCBpcyBhdHRyIGluZXJ0PyBJZiBzbywgaXMgc2FmZSAqL1xuXG4gICAgICB9IGVsc2UgaWYgKFVSSV9TQUZFX0FUVFJJQlVURVNbbGNOYW1lXSkgOyBlbHNlIGlmIChyZWdFeHBUZXN0KElTX0FMTE9XRURfVVJJJDEsIHN0cmluZ1JlcGxhY2UodmFsdWUsIEFUVFJfV0hJVEVTUEFDRSwgJycpKSkgOyBlbHNlIGlmICgobGNOYW1lID09PSAnc3JjJyB8fCBsY05hbWUgPT09ICd4bGluazpocmVmJyB8fCBsY05hbWUgPT09ICdocmVmJykgJiYgbGNUYWcgIT09ICdzY3JpcHQnICYmIHN0cmluZ0luZGV4T2YodmFsdWUsICdkYXRhOicpID09PSAwICYmIERBVEFfVVJJX1RBR1NbbGNUYWddKSA7IGVsc2UgaWYgKEFMTE9XX1VOS05PV05fUFJPVE9DT0xTICYmICFyZWdFeHBUZXN0KElTX1NDUklQVF9PUl9EQVRBLCBzdHJpbmdSZXBsYWNlKHZhbHVlLCBBVFRSX1dISVRFU1BBQ0UsICcnKSkpIDsgZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIDtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBfYmFzaWNDdXN0b21FbGVtZW50Q2hlY2tcbiAgICAgKiBjaGVja3MgaWYgYXQgbGVhc3Qgb25lIGRhc2ggaXMgaW5jbHVkZWQgaW4gdGFnTmFtZSwgYW5kIGl0J3Mgbm90IHRoZSBmaXJzdCBjaGFyXG4gICAgICogZm9yIG1vcmUgc29waGlzdGljYXRlZCBjaGVja2luZyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy92YWxpZGF0ZS1lbGVtZW50LW5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnTmFtZSBuYW1lIG9mIHRoZSB0YWcgb2YgdGhlIG5vZGUgdG8gc2FuaXRpemVcbiAgICAgKi9cblxuXG4gICAgY29uc3QgX2Jhc2ljQ3VzdG9tRWxlbWVudFRlc3QgPSBmdW5jdGlvbiBfYmFzaWNDdXN0b21FbGVtZW50VGVzdCh0YWdOYW1lKSB7XG4gICAgICByZXR1cm4gdGFnTmFtZS5pbmRleE9mKCctJykgPiAwO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogX3Nhbml0aXplQXR0cmlidXRlc1xuICAgICAqXG4gICAgICogQHByb3RlY3QgYXR0cmlidXRlc1xuICAgICAqIEBwcm90ZWN0IG5vZGVOYW1lXG4gICAgICogQHByb3RlY3QgcmVtb3ZlQXR0cmlidXRlXG4gICAgICogQHByb3RlY3Qgc2V0QXR0cmlidXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtOb2RlfSBjdXJyZW50Tm9kZSB0byBzYW5pdGl6ZVxuICAgICAqL1xuXG5cbiAgICBjb25zdCBfc2FuaXRpemVBdHRyaWJ1dGVzID0gZnVuY3Rpb24gX3Nhbml0aXplQXR0cmlidXRlcyhjdXJyZW50Tm9kZSkge1xuICAgICAgbGV0IGF0dHI7XG4gICAgICBsZXQgdmFsdWU7XG4gICAgICBsZXQgbGNOYW1lO1xuICAgICAgbGV0IGw7XG4gICAgICAvKiBFeGVjdXRlIGEgaG9vayBpZiBwcmVzZW50ICovXG5cbiAgICAgIF9leGVjdXRlSG9vaygnYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzJywgY3VycmVudE5vZGUsIG51bGwpO1xuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGF0dHJpYnV0ZXNcbiAgICAgIH0gPSBjdXJyZW50Tm9kZTtcbiAgICAgIC8qIENoZWNrIGlmIHdlIGhhdmUgYXR0cmlidXRlczsgaWYgbm90IHdlIG1pZ2h0IGhhdmUgYSB0ZXh0IG5vZGUgKi9cblxuICAgICAgaWYgKCFhdHRyaWJ1dGVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaG9va0V2ZW50ID0ge1xuICAgICAgICBhdHRyTmFtZTogJycsXG4gICAgICAgIGF0dHJWYWx1ZTogJycsXG4gICAgICAgIGtlZXBBdHRyOiB0cnVlLFxuICAgICAgICBhbGxvd2VkQXR0cmlidXRlczogQUxMT1dFRF9BVFRSXG4gICAgICB9O1xuICAgICAgbCA9IGF0dHJpYnV0ZXMubGVuZ3RoO1xuICAgICAgLyogR28gYmFja3dhcmRzIG92ZXIgYWxsIGF0dHJpYnV0ZXM7IHNhZmVseSByZW1vdmUgYmFkIG9uZXMgKi9cblxuICAgICAgd2hpbGUgKGwtLSkge1xuICAgICAgICBhdHRyID0gYXR0cmlidXRlc1tsXTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgbmFtZXNwYWNlVVJJXG4gICAgICAgIH0gPSBhdHRyO1xuICAgICAgICB2YWx1ZSA9IG5hbWUgPT09ICd2YWx1ZScgPyBhdHRyLnZhbHVlIDogc3RyaW5nVHJpbShhdHRyLnZhbHVlKTtcbiAgICAgICAgbGNOYW1lID0gdHJhbnNmb3JtQ2FzZUZ1bmMobmFtZSk7XG4gICAgICAgIC8qIEV4ZWN1dGUgYSBob29rIGlmIHByZXNlbnQgKi9cblxuICAgICAgICBob29rRXZlbnQuYXR0ck5hbWUgPSBsY05hbWU7XG4gICAgICAgIGhvb2tFdmVudC5hdHRyVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaG9va0V2ZW50LmtlZXBBdHRyID0gdHJ1ZTtcbiAgICAgICAgaG9va0V2ZW50LmZvcmNlS2VlcEF0dHIgPSB1bmRlZmluZWQ7IC8vIEFsbG93cyBkZXZlbG9wZXJzIHRvIHNlZSB0aGlzIGlzIGEgcHJvcGVydHkgdGhleSBjYW4gc2V0XG5cbiAgICAgICAgX2V4ZWN1dGVIb29rKCd1cG9uU2FuaXRpemVBdHRyaWJ1dGUnLCBjdXJyZW50Tm9kZSwgaG9va0V2ZW50KTtcblxuICAgICAgICB2YWx1ZSA9IGhvb2tFdmVudC5hdHRyVmFsdWU7XG4gICAgICAgIC8qIERpZCB0aGUgaG9va3MgYXBwcm92ZSBvZiB0aGUgYXR0cmlidXRlPyAqL1xuXG4gICAgICAgIGlmIChob29rRXZlbnQuZm9yY2VLZWVwQXR0cikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8qIFJlbW92ZSBhdHRyaWJ1dGUgKi9cblxuXG4gICAgICAgIF9yZW1vdmVBdHRyaWJ1dGUobmFtZSwgY3VycmVudE5vZGUpO1xuICAgICAgICAvKiBEaWQgdGhlIGhvb2tzIGFwcHJvdmUgb2YgdGhlIGF0dHJpYnV0ZT8gKi9cblxuXG4gICAgICAgIGlmICghaG9va0V2ZW50LmtlZXBBdHRyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLyogV29yayBhcm91bmQgYSBzZWN1cml0eSBpc3N1ZSBpbiBqUXVlcnkgMy4wICovXG5cblxuICAgICAgICBpZiAoIUFMTE9XX1NFTEZfQ0xPU0VfSU5fQVRUUiAmJiByZWdFeHBUZXN0KC9cXC8+L2ksIHZhbHVlKSkge1xuICAgICAgICAgIF9yZW1vdmVBdHRyaWJ1dGUobmFtZSwgY3VycmVudE5vZGUpO1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLyogU2FuaXRpemUgYXR0cmlidXRlIGNvbnRlbnQgdG8gYmUgdGVtcGxhdGUtc2FmZSAqL1xuXG5cbiAgICAgICAgaWYgKFNBRkVfRk9SX1RFTVBMQVRFUykge1xuICAgICAgICAgIHZhbHVlID0gc3RyaW5nUmVwbGFjZSh2YWx1ZSwgTVVTVEFDSEVfRVhQUiwgJyAnKTtcbiAgICAgICAgICB2YWx1ZSA9IHN0cmluZ1JlcGxhY2UodmFsdWUsIEVSQl9FWFBSLCAnICcpO1xuICAgICAgICAgIHZhbHVlID0gc3RyaW5nUmVwbGFjZSh2YWx1ZSwgVE1QTElUX0VYUFIsICcgJyk7XG4gICAgICAgIH1cbiAgICAgICAgLyogSXMgYHZhbHVlYCB2YWxpZCBmb3IgdGhpcyBhdHRyaWJ1dGU/ICovXG5cblxuICAgICAgICBjb25zdCBsY1RhZyA9IHRyYW5zZm9ybUNhc2VGdW5jKGN1cnJlbnROb2RlLm5vZGVOYW1lKTtcblxuICAgICAgICBpZiAoIV9pc1ZhbGlkQXR0cmlidXRlKGxjVGFnLCBsY05hbWUsIHZhbHVlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8qIEZ1bGwgRE9NIENsb2JiZXJpbmcgcHJvdGVjdGlvbiB2aWEgbmFtZXNwYWNlIGlzb2xhdGlvbixcbiAgICAgICAgICogUHJlZml4IGlkIGFuZCBuYW1lIGF0dHJpYnV0ZXMgd2l0aCBgdXNlci1jb250ZW50LWBcbiAgICAgICAgICovXG5cblxuICAgICAgICBpZiAoU0FOSVRJWkVfTkFNRURfUFJPUFMgJiYgKGxjTmFtZSA9PT0gJ2lkJyB8fCBsY05hbWUgPT09ICduYW1lJykpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgdGhlIGF0dHJpYnV0ZSB3aXRoIHRoaXMgdmFsdWVcbiAgICAgICAgICBfcmVtb3ZlQXR0cmlidXRlKG5hbWUsIGN1cnJlbnROb2RlKTsgLy8gUHJlZml4IHRoZSB2YWx1ZSBhbmQgbGF0ZXIgcmUtY3JlYXRlIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FuaXRpemVkIHZhbHVlXG5cblxuICAgICAgICAgIHZhbHVlID0gU0FOSVRJWkVfTkFNRURfUFJPUFNfUFJFRklYICsgdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLyogSGFuZGxlIGF0dHJpYnV0ZXMgdGhhdCByZXF1aXJlIFRydXN0ZWQgVHlwZXMgKi9cblxuXG4gICAgICAgIGlmICh0cnVzdGVkVHlwZXNQb2xpY3kgJiYgdHlwZW9mIHRydXN0ZWRUeXBlcyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHRydXN0ZWRUeXBlcy5nZXRBdHRyaWJ1dGVUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaWYgKG5hbWVzcGFjZVVSSSkgOyBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHJ1c3RlZFR5cGVzLmdldEF0dHJpYnV0ZVR5cGUobGNUYWcsIGxjTmFtZSkpIHtcbiAgICAgICAgICAgICAgY2FzZSAnVHJ1c3RlZEhUTUwnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gdHJ1c3RlZFR5cGVzUG9saWN5LmNyZWF0ZUhUTUwodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgJ1RydXN0ZWRTY3JpcHRVUkwnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlID0gdHJ1c3RlZFR5cGVzUG9saWN5LmNyZWF0ZVNjcmlwdFVSTCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qIEhhbmRsZSBpbnZhbGlkIGRhdGEtKiBhdHRyaWJ1dGUgc2V0IGJ5IHRyeS1jYXRjaGluZyBpdCAqL1xuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAobmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZS5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkksIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gc2V0QXR0cmlidXRlKCkgZm9yIGJyb3dzZXItdW5yZWNvZ25pemVkIG5hbWVzcGFjZXMgZS5nLiBcIngtc2NoZW1hXCIuICovXG4gICAgICAgICAgICBjdXJyZW50Tm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFycmF5UG9wKERPTVB1cmlmeS5yZW1vdmVkKTtcbiAgICAgICAgfSBjYXRjaCAoXykge31cbiAgICAgIH1cbiAgICAgIC8qIEV4ZWN1dGUgYSBob29rIGlmIHByZXNlbnQgKi9cblxuXG4gICAgICBfZXhlY3V0ZUhvb2soJ2FmdGVyU2FuaXRpemVBdHRyaWJ1dGVzJywgY3VycmVudE5vZGUsIG51bGwpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogX3Nhbml0aXplU2hhZG93RE9NXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtEb2N1bWVudEZyYWdtZW50fSBmcmFnbWVudCB0byBpdGVyYXRlIG92ZXIgcmVjdXJzaXZlbHlcbiAgICAgKi9cblxuXG4gICAgY29uc3QgX3Nhbml0aXplU2hhZG93RE9NID0gZnVuY3Rpb24gX3Nhbml0aXplU2hhZG93RE9NKGZyYWdtZW50KSB7XG4gICAgICBsZXQgc2hhZG93Tm9kZTtcblxuICAgICAgY29uc3Qgc2hhZG93SXRlcmF0b3IgPSBfY3JlYXRlSXRlcmF0b3IoZnJhZ21lbnQpO1xuICAgICAgLyogRXhlY3V0ZSBhIGhvb2sgaWYgcHJlc2VudCAqL1xuXG5cbiAgICAgIF9leGVjdXRlSG9vaygnYmVmb3JlU2FuaXRpemVTaGFkb3dET00nLCBmcmFnbWVudCwgbnVsbCk7XG5cbiAgICAgIHdoaWxlIChzaGFkb3dOb2RlID0gc2hhZG93SXRlcmF0b3IubmV4dE5vZGUoKSkge1xuICAgICAgICAvKiBFeGVjdXRlIGEgaG9vayBpZiBwcmVzZW50ICovXG4gICAgICAgIF9leGVjdXRlSG9vaygndXBvblNhbml0aXplU2hhZG93Tm9kZScsIHNoYWRvd05vZGUsIG51bGwpO1xuICAgICAgICAvKiBTYW5pdGl6ZSB0YWdzIGFuZCBlbGVtZW50cyAqL1xuXG5cbiAgICAgICAgaWYgKF9zYW5pdGl6ZUVsZW1lbnRzKHNoYWRvd05vZGUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLyogRGVlcCBzaGFkb3cgRE9NIGRldGVjdGVkICovXG5cblxuICAgICAgICBpZiAoc2hhZG93Tm9kZS5jb250ZW50IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkge1xuICAgICAgICAgIF9zYW5pdGl6ZVNoYWRvd0RPTShzaGFkb3dOb2RlLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIENoZWNrIGF0dHJpYnV0ZXMsIHNhbml0aXplIGlmIG5lY2Vzc2FyeSAqL1xuXG5cbiAgICAgICAgX3Nhbml0aXplQXR0cmlidXRlcyhzaGFkb3dOb2RlKTtcbiAgICAgIH1cbiAgICAgIC8qIEV4ZWN1dGUgYSBob29rIGlmIHByZXNlbnQgKi9cblxuXG4gICAgICBfZXhlY3V0ZUhvb2soJ2FmdGVyU2FuaXRpemVTaGFkb3dET00nLCBmcmFnbWVudCwgbnVsbCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTYW5pdGl6ZVxuICAgICAqIFB1YmxpYyBtZXRob2QgcHJvdmlkaW5nIGNvcmUgc2FuaXRhdGlvbiBmdW5jdGlvbmFsaXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xOb2RlfSBkaXJ0eSBzdHJpbmcgb3IgRE9NIG5vZGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuXG5cbiAgICBET01QdXJpZnkuc2FuaXRpemUgPSBmdW5jdGlvbiAoZGlydHkpIHtcbiAgICAgIGxldCBjZmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgbGV0IGJvZHk7XG4gICAgICBsZXQgaW1wb3J0ZWROb2RlO1xuICAgICAgbGV0IGN1cnJlbnROb2RlO1xuICAgICAgbGV0IHJldHVybk5vZGU7XG4gICAgICAvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHN0cmluZyB0byBzYW5pdGl6ZS5cbiAgICAgICAgRE8gTk9UIHJldHVybiBlYXJseSwgYXMgdGhpcyB3aWxsIHJldHVybiB0aGUgd3JvbmcgdHlwZSBpZlxuICAgICAgICB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGEgRE9NIG9iamVjdCByYXRoZXIgdGhhbiBhIHN0cmluZyAqL1xuXG4gICAgICBJU19FTVBUWV9JTlBVVCA9ICFkaXJ0eTtcblxuICAgICAgaWYgKElTX0VNUFRZX0lOUFVUKSB7XG4gICAgICAgIGRpcnR5ID0gJzwhLS0+JztcbiAgICAgIH1cbiAgICAgIC8qIFN0cmluZ2lmeSwgaW4gY2FzZSBkaXJ0eSBpcyBhbiBvYmplY3QgKi9cblxuXG4gICAgICBpZiAodHlwZW9mIGRpcnR5ICE9PSAnc3RyaW5nJyAmJiAhX2lzTm9kZShkaXJ0eSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXJ0eS50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGRpcnR5ID0gZGlydHkudG9TdHJpbmcoKTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZGlydHkgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyB0eXBlRXJyb3JDcmVhdGUoJ2RpcnR5IGlzIG5vdCBhIHN0cmluZywgYWJvcnRpbmcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgdHlwZUVycm9yQ3JlYXRlKCd0b1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvKiBSZXR1cm4gZGlydHkgSFRNTCBpZiBET01QdXJpZnkgY2Fubm90IHJ1biAqL1xuXG5cbiAgICAgIGlmICghRE9NUHVyaWZ5LmlzU3VwcG9ydGVkKSB7XG4gICAgICAgIHJldHVybiBkaXJ0eTtcbiAgICAgIH1cbiAgICAgIC8qIEFzc2lnbiBjb25maWcgdmFycyAqL1xuXG5cbiAgICAgIGlmICghU0VUX0NPTkZJRykge1xuICAgICAgICBfcGFyc2VDb25maWcoY2ZnKTtcbiAgICAgIH1cbiAgICAgIC8qIENsZWFuIHVwIHJlbW92ZWQgZWxlbWVudHMgKi9cblxuXG4gICAgICBET01QdXJpZnkucmVtb3ZlZCA9IFtdO1xuICAgICAgLyogQ2hlY2sgaWYgZGlydHkgaXMgY29ycmVjdGx5IHR5cGVkIGZvciBJTl9QTEFDRSAqL1xuXG4gICAgICBpZiAodHlwZW9mIGRpcnR5ID09PSAnc3RyaW5nJykge1xuICAgICAgICBJTl9QTEFDRSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoSU5fUExBQ0UpIHtcbiAgICAgICAgLyogRG8gc29tZSBlYXJseSBwcmUtc2FuaXRpemF0aW9uIHRvIGF2b2lkIHVuc2FmZSByb290IG5vZGVzICovXG4gICAgICAgIGlmIChkaXJ0eS5ub2RlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSB0cmFuc2Zvcm1DYXNlRnVuYyhkaXJ0eS5ub2RlTmFtZSk7XG5cbiAgICAgICAgICBpZiAoIUFMTE9XRURfVEFHU1t0YWdOYW1lXSB8fCBGT1JCSURfVEFHU1t0YWdOYW1lXSkge1xuICAgICAgICAgICAgdGhyb3cgdHlwZUVycm9yQ3JlYXRlKCdyb290IG5vZGUgaXMgZm9yYmlkZGVuIGFuZCBjYW5ub3QgYmUgc2FuaXRpemVkIGluLXBsYWNlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGRpcnR5IGluc3RhbmNlb2YgTm9kZSkge1xuICAgICAgICAvKiBJZiBkaXJ0eSBpcyBhIERPTSBlbGVtZW50LCBhcHBlbmQgdG8gYW4gZW1wdHkgZG9jdW1lbnQgdG8gYXZvaWRcbiAgICAgICAgICAgZWxlbWVudHMgYmVpbmcgc3RyaXBwZWQgYnkgdGhlIHBhcnNlciAqL1xuICAgICAgICBib2R5ID0gX2luaXREb2N1bWVudCgnPCEtLS0tPicpO1xuICAgICAgICBpbXBvcnRlZE5vZGUgPSBib2R5Lm93bmVyRG9jdW1lbnQuaW1wb3J0Tm9kZShkaXJ0eSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKGltcG9ydGVkTm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBpbXBvcnRlZE5vZGUubm9kZU5hbWUgPT09ICdCT0RZJykge1xuICAgICAgICAgIC8qIE5vZGUgaXMgYWxyZWFkeSBhIGJvZHksIHVzZSBhcyBpcyAqL1xuICAgICAgICAgIGJvZHkgPSBpbXBvcnRlZE5vZGU7XG4gICAgICAgIH0gZWxzZSBpZiAoaW1wb3J0ZWROb2RlLm5vZGVOYW1lID09PSAnSFRNTCcpIHtcbiAgICAgICAgICBib2R5ID0gaW1wb3J0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1kb20tbm9kZS1hcHBlbmRcbiAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKGltcG9ydGVkTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIEV4aXQgZGlyZWN0bHkgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIGRvICovXG4gICAgICAgIGlmICghUkVUVVJOX0RPTSAmJiAhU0FGRV9GT1JfVEVNUExBVEVTICYmICFXSE9MRV9ET0NVTUVOVCAmJiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItaW5jbHVkZXNcbiAgICAgICAgZGlydHkuaW5kZXhPZignPCcpID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVzdGVkVHlwZXNQb2xpY3kgJiYgUkVUVVJOX1RSVVNURURfVFlQRSA/IHRydXN0ZWRUeXBlc1BvbGljeS5jcmVhdGVIVE1MKGRpcnR5KSA6IGRpcnR5O1xuICAgICAgICB9XG4gICAgICAgIC8qIEluaXRpYWxpemUgdGhlIGRvY3VtZW50IHRvIHdvcmsgb24gKi9cblxuXG4gICAgICAgIGJvZHkgPSBfaW5pdERvY3VtZW50KGRpcnR5KTtcbiAgICAgICAgLyogQ2hlY2sgd2UgaGF2ZSBhIERPTSBub2RlIGZyb20gdGhlIGRhdGEgKi9cblxuICAgICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgICByZXR1cm4gUkVUVVJOX0RPTSA/IG51bGwgOiBSRVRVUk5fVFJVU1RFRF9UWVBFID8gZW1wdHlIVE1MIDogJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIFJlbW92ZSBmaXJzdCBlbGVtZW50IG5vZGUgKG91cnMpIGlmIEZPUkNFX0JPRFkgaXMgc2V0ICovXG5cblxuICAgICAgaWYgKGJvZHkgJiYgRk9SQ0VfQk9EWSkge1xuICAgICAgICBfZm9yY2VSZW1vdmUoYm9keS5maXJzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIC8qIEdldCBub2RlIGl0ZXJhdG9yICovXG5cblxuICAgICAgY29uc3Qgbm9kZUl0ZXJhdG9yID0gX2NyZWF0ZUl0ZXJhdG9yKElOX1BMQUNFID8gZGlydHkgOiBib2R5KTtcbiAgICAgIC8qIE5vdyBzdGFydCBpdGVyYXRpbmcgb3ZlciB0aGUgY3JlYXRlZCBkb2N1bWVudCAqL1xuXG5cbiAgICAgIHdoaWxlIChjdXJyZW50Tm9kZSA9IG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpKSB7XG4gICAgICAgIC8qIFNhbml0aXplIHRhZ3MgYW5kIGVsZW1lbnRzICovXG4gICAgICAgIGlmIChfc2FuaXRpemVFbGVtZW50cyhjdXJyZW50Tm9kZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvKiBTaGFkb3cgRE9NIGRldGVjdGVkLCBzYW5pdGl6ZSBpdCAqL1xuXG5cbiAgICAgICAgaWYgKGN1cnJlbnROb2RlLmNvbnRlbnQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICAgICAgX3Nhbml0aXplU2hhZG93RE9NKGN1cnJlbnROb2RlLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIC8qIENoZWNrIGF0dHJpYnV0ZXMsIHNhbml0aXplIGlmIG5lY2Vzc2FyeSAqL1xuXG5cbiAgICAgICAgX3Nhbml0aXplQXR0cmlidXRlcyhjdXJyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgICAvKiBJZiB3ZSBzYW5pdGl6ZWQgYGRpcnR5YCBpbi1wbGFjZSwgcmV0dXJuIGl0LiAqL1xuXG5cbiAgICAgIGlmIChJTl9QTEFDRSkge1xuICAgICAgICByZXR1cm4gZGlydHk7XG4gICAgICB9XG4gICAgICAvKiBSZXR1cm4gc2FuaXRpemVkIHN0cmluZyBvciBET00gKi9cblxuXG4gICAgICBpZiAoUkVUVVJOX0RPTSkge1xuICAgICAgICBpZiAoUkVUVVJOX0RPTV9GUkFHTUVOVCkge1xuICAgICAgICAgIHJldHVybk5vZGUgPSBjcmVhdGVEb2N1bWVudEZyYWdtZW50LmNhbGwoYm9keS5vd25lckRvY3VtZW50KTtcblxuICAgICAgICAgIHdoaWxlIChib2R5LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1kb20tbm9kZS1hcHBlbmRcbiAgICAgICAgICAgIHJldHVybk5vZGUuYXBwZW5kQ2hpbGQoYm9keS5maXJzdENoaWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuTm9kZSA9IGJvZHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQUxMT1dFRF9BVFRSLnNoYWRvd3Jvb3QgfHwgQUxMT1dFRF9BVFRSLnNoYWRvd3Jvb3Rtb2QpIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAgQWRvcHROb2RlKCkgaXMgbm90IHVzZWQgYmVjYXVzZSBpbnRlcm5hbCBzdGF0ZSBpcyBub3QgcmVzZXRcbiAgICAgICAgICAgIChlLmcuIHRoZSBwYXN0IG5hbWVzIG1hcCBvZiBhIEhUTUxGb3JtRWxlbWVudCksIHRoaXMgaXMgc2FmZVxuICAgICAgICAgICAgaW4gdGhlb3J5IGJ1dCB3ZSB3b3VsZCByYXRoZXIgbm90IHJpc2sgYW5vdGhlciBhdHRhY2sgdmVjdG9yLlxuICAgICAgICAgICAgVGhlIHN0YXRlIHRoYXQgaXMgY2xvbmVkIGJ5IGltcG9ydE5vZGUoKSBpcyBleHBsaWNpdGx5IGRlZmluZWRcbiAgICAgICAgICAgIGJ5IHRoZSBzcGVjcy5cbiAgICAgICAgICAqL1xuICAgICAgICAgIHJldHVybk5vZGUgPSBpbXBvcnROb2RlLmNhbGwob3JpZ2luYWxEb2N1bWVudCwgcmV0dXJuTm9kZSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0dXJuTm9kZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNlcmlhbGl6ZWRIVE1MID0gV0hPTEVfRE9DVU1FTlQgPyBib2R5Lm91dGVySFRNTCA6IGJvZHkuaW5uZXJIVE1MO1xuICAgICAgLyogU2VyaWFsaXplIGRvY3R5cGUgaWYgYWxsb3dlZCAqL1xuXG4gICAgICBpZiAoV0hPTEVfRE9DVU1FTlQgJiYgQUxMT1dFRF9UQUdTWychZG9jdHlwZSddICYmIGJvZHkub3duZXJEb2N1bWVudCAmJiBib2R5Lm93bmVyRG9jdW1lbnQuZG9jdHlwZSAmJiBib2R5Lm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lICYmIHJlZ0V4cFRlc3QoRE9DVFlQRV9OQU1FLCBib2R5Lm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lKSkge1xuICAgICAgICBzZXJpYWxpemVkSFRNTCA9ICc8IURPQ1RZUEUgJyArIGJvZHkub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUgKyAnPlxcbicgKyBzZXJpYWxpemVkSFRNTDtcbiAgICAgIH1cbiAgICAgIC8qIFNhbml0aXplIGZpbmFsIHN0cmluZyB0ZW1wbGF0ZS1zYWZlICovXG5cblxuICAgICAgaWYgKFNBRkVfRk9SX1RFTVBMQVRFUykge1xuICAgICAgICBzZXJpYWxpemVkSFRNTCA9IHN0cmluZ1JlcGxhY2Uoc2VyaWFsaXplZEhUTUwsIE1VU1RBQ0hFX0VYUFIsICcgJyk7XG4gICAgICAgIHNlcmlhbGl6ZWRIVE1MID0gc3RyaW5nUmVwbGFjZShzZXJpYWxpemVkSFRNTCwgRVJCX0VYUFIsICcgJyk7XG4gICAgICAgIHNlcmlhbGl6ZWRIVE1MID0gc3RyaW5nUmVwbGFjZShzZXJpYWxpemVkSFRNTCwgVE1QTElUX0VYUFIsICcgJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVzdGVkVHlwZXNQb2xpY3kgJiYgUkVUVVJOX1RSVVNURURfVFlQRSA/IHRydXN0ZWRUeXBlc1BvbGljeS5jcmVhdGVIVE1MKHNlcmlhbGl6ZWRIVE1MKSA6IHNlcmlhbGl6ZWRIVE1MO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUHVibGljIG1ldGhvZCB0byBzZXQgdGhlIGNvbmZpZ3VyYXRpb24gb25jZVxuICAgICAqIHNldENvbmZpZ1xuICAgICAqXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgICAqL1xuXG5cbiAgICBET01QdXJpZnkuc2V0Q29uZmlnID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgX3BhcnNlQ29uZmlnKGNmZyk7XG5cbiAgICAgIFNFVF9DT05GSUcgPSB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUHVibGljIG1ldGhvZCB0byByZW1vdmUgdGhlIGNvbmZpZ3VyYXRpb25cbiAgICAgKiBjbGVhckNvbmZpZ1xuICAgICAqXG4gICAgICovXG5cblxuICAgIERPTVB1cmlmeS5jbGVhckNvbmZpZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIENPTkZJRyA9IG51bGw7XG4gICAgICBTRVRfQ09ORklHID0gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQdWJsaWMgbWV0aG9kIHRvIGNoZWNrIGlmIGFuIGF0dHJpYnV0ZSB2YWx1ZSBpcyB2YWxpZC5cbiAgICAgKiBVc2VzIGxhc3Qgc2V0IGNvbmZpZywgaWYgYW55LiBPdGhlcndpc2UsIHVzZXMgY29uZmlnIGRlZmF1bHRzLlxuICAgICAqIGlzVmFsaWRBdHRyaWJ1dGVcbiAgICAgKlxuICAgICAqIEBwYXJhbSAge3N0cmluZ30gdGFnIFRhZyBuYW1lIG9mIGNvbnRhaW5pbmcgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gIHtzdHJpbmd9IGF0dHIgQXR0cmlidXRlIG5hbWUuXG4gICAgICogQHBhcmFtICB7c3RyaW5nfSB2YWx1ZSBBdHRyaWJ1dGUgdmFsdWUuXG4gICAgICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGB2YWx1ZWAgaXMgdmFsaWQuIE90aGVyd2lzZSwgcmV0dXJucyBmYWxzZS5cbiAgICAgKi9cblxuXG4gICAgRE9NUHVyaWZ5LmlzVmFsaWRBdHRyaWJ1dGUgPSBmdW5jdGlvbiAodGFnLCBhdHRyLCB2YWx1ZSkge1xuICAgICAgLyogSW5pdGlhbGl6ZSBzaGFyZWQgY29uZmlnIHZhcnMgaWYgbmVjZXNzYXJ5LiAqL1xuICAgICAgaWYgKCFDT05GSUcpIHtcbiAgICAgICAgX3BhcnNlQ29uZmlnKHt9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGNUYWcgPSB0cmFuc2Zvcm1DYXNlRnVuYyh0YWcpO1xuICAgICAgY29uc3QgbGNOYW1lID0gdHJhbnNmb3JtQ2FzZUZ1bmMoYXR0cik7XG4gICAgICByZXR1cm4gX2lzVmFsaWRBdHRyaWJ1dGUobGNUYWcsIGxjTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQWRkSG9va1xuICAgICAqIFB1YmxpYyBtZXRob2QgdG8gYWRkIERPTVB1cmlmeSBob29rc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGVudHJ5UG9pbnQgZW50cnkgcG9pbnQgZm9yIHRoZSBob29rIHRvIGFkZFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGhvb2tGdW5jdGlvbiBmdW5jdGlvbiB0byBleGVjdXRlXG4gICAgICovXG5cblxuICAgIERPTVB1cmlmeS5hZGRIb29rID0gZnVuY3Rpb24gKGVudHJ5UG9pbnQsIGhvb2tGdW5jdGlvbikge1xuICAgICAgaWYgKHR5cGVvZiBob29rRnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBob29rc1tlbnRyeVBvaW50XSA9IGhvb2tzW2VudHJ5UG9pbnRdIHx8IFtdO1xuICAgICAgYXJyYXlQdXNoKGhvb2tzW2VudHJ5UG9pbnRdLCBob29rRnVuY3Rpb24pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlSG9va1xuICAgICAqIFB1YmxpYyBtZXRob2QgdG8gcmVtb3ZlIGEgRE9NUHVyaWZ5IGhvb2sgYXQgYSBnaXZlbiBlbnRyeVBvaW50XG4gICAgICogKHBvcHMgaXQgZnJvbSB0aGUgc3RhY2sgb2YgaG9va3MgaWYgbW9yZSBhcmUgcHJlc2VudClcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBlbnRyeVBvaW50IGVudHJ5IHBvaW50IGZvciB0aGUgaG9vayB0byByZW1vdmVcbiAgICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0gcmVtb3ZlZChwb3BwZWQpIGhvb2tcbiAgICAgKi9cblxuXG4gICAgRE9NUHVyaWZ5LnJlbW92ZUhvb2sgPSBmdW5jdGlvbiAoZW50cnlQb2ludCkge1xuICAgICAgaWYgKGhvb2tzW2VudHJ5UG9pbnRdKSB7XG4gICAgICAgIHJldHVybiBhcnJheVBvcChob29rc1tlbnRyeVBvaW50XSk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZW1vdmVIb29rc1xuICAgICAqIFB1YmxpYyBtZXRob2QgdG8gcmVtb3ZlIGFsbCBET01QdXJpZnkgaG9va3MgYXQgYSBnaXZlbiBlbnRyeVBvaW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gIHtTdHJpbmd9IGVudHJ5UG9pbnQgZW50cnkgcG9pbnQgZm9yIHRoZSBob29rcyB0byByZW1vdmVcbiAgICAgKi9cblxuXG4gICAgRE9NUHVyaWZ5LnJlbW92ZUhvb2tzID0gZnVuY3Rpb24gKGVudHJ5UG9pbnQpIHtcbiAgICAgIGlmIChob29rc1tlbnRyeVBvaW50XSkge1xuICAgICAgICBob29rc1tlbnRyeVBvaW50XSA9IFtdO1xuICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogUmVtb3ZlQWxsSG9va3NcbiAgICAgKiBQdWJsaWMgbWV0aG9kIHRvIHJlbW92ZSBhbGwgRE9NUHVyaWZ5IGhvb2tzXG4gICAgICpcbiAgICAgKi9cblxuXG4gICAgRE9NUHVyaWZ5LnJlbW92ZUFsbEhvb2tzID0gZnVuY3Rpb24gKCkge1xuICAgICAgaG9va3MgPSB7fTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIERPTVB1cmlmeTtcbiAgfVxuXG4gIHZhciBwdXJpZnkgPSBjcmVhdGVET01QdXJpZnkoKTtcblxuICByZXR1cm4gcHVyaWZ5O1xuXG59KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wdXJpZnkuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dompurify/dist/purify.js\n"); + +/***/ }), + +/***/ "../../../node_modules/elkjs/lib/elk.bundled.js": +/*!******************************************************!*\ + !*** ../../../node_modules/elkjs/lib/elk.bundled.js ***! + \******************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=undefined;if(!f&&c)return require(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=undefined,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$defaultLayoutOpt = _ref.defaultLayoutOptions,\n defaultLayoutOptions = _ref$defaultLayoutOpt === undefined ? {} : _ref$defaultLayoutOpt,\n _ref$algorithms = _ref.algorithms,\n algorithms = _ref$algorithms === undefined ? ['layered', 'stress', 'mrtree', 'radial', 'force', 'disco', 'sporeOverlap', 'sporeCompaction', 'rectpacking'] : _ref$algorithms,\n workerFactory = _ref.workerFactory,\n workerUrl = _ref.workerUrl;\n\n _classCallCheck(this, ELK);\n\n this.defaultLayoutOptions = defaultLayoutOptions;\n this.initialized = false;\n\n // check valid worker construction possible\n if (typeof workerUrl === 'undefined' && typeof workerFactory === 'undefined') {\n throw new Error(\"Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.\");\n }\n var factory = workerFactory;\n if (typeof workerUrl !== 'undefined' && typeof workerFactory === 'undefined') {\n // use default Web Worker\n factory = function factory(url) {\n return new Worker(url);\n };\n }\n\n // create the worker\n var worker = factory(workerUrl);\n if (typeof worker.postMessage !== 'function') {\n throw new TypeError(\"Created worker does not provide\" + \" the required 'postMessage' function.\");\n }\n\n // wrap the worker to return promises\n this.worker = new PromisedWorker(worker);\n\n // initially register algorithms\n this.worker.postMessage({\n cmd: 'register',\n algorithms: algorithms\n }).then(function (r) {\n return _this.initialized = true;\n }).catch(console.err);\n }\n\n _createClass(ELK, [{\n key: 'layout',\n value: function layout(graph) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$layoutOptions = _ref2.layoutOptions,\n layoutOptions = _ref2$layoutOptions === undefined ? this.defaultLayoutOptions : _ref2$layoutOptions,\n _ref2$logging = _ref2.logging,\n logging = _ref2$logging === undefined ? false : _ref2$logging,\n _ref2$measureExecutio = _ref2.measureExecutionTime,\n measureExecutionTime = _ref2$measureExecutio === undefined ? false : _ref2$measureExecutio;\n\n if (!graph) {\n return Promise.reject(new Error(\"Missing mandatory parameter 'graph'.\"));\n }\n return this.worker.postMessage({\n cmd: 'layout',\n graph: graph,\n layoutOptions: layoutOptions,\n options: {\n logging: logging,\n measureExecutionTime: measureExecutionTime\n }\n });\n }\n }, {\n key: 'knownLayoutAlgorithms',\n value: function knownLayoutAlgorithms() {\n return this.worker.postMessage({ cmd: 'algorithms' });\n }\n }, {\n key: 'knownLayoutOptions',\n value: function knownLayoutOptions() {\n return this.worker.postMessage({ cmd: 'options' });\n }\n }, {\n key: 'knownLayoutCategories',\n value: function knownLayoutCategories() {\n return this.worker.postMessage({ cmd: 'categories' });\n }\n }, {\n key: 'terminateWorker',\n value: function terminateWorker() {\n this.worker.terminate();\n }\n }]);\n\n return ELK;\n}();\n\nexports.default = ELK;\n\nvar PromisedWorker = function () {\n function PromisedWorker(worker) {\n var _this2 = this;\n\n _classCallCheck(this, PromisedWorker);\n\n if (worker === undefined) {\n throw new Error(\"Missing mandatory parameter 'worker'.\");\n }\n this.resolvers = {};\n this.worker = worker;\n this.worker.onmessage = function (answer) {\n // why is this necessary?\n setTimeout(function () {\n _this2.receive(_this2, answer);\n }, 0);\n };\n }\n\n _createClass(PromisedWorker, [{\n key: 'postMessage',\n value: function postMessage(msg) {\n var id = this.id || 0;\n this.id = id + 1;\n msg.id = id;\n var self = this;\n return new Promise(function (resolve, reject) {\n // prepare the resolver\n self.resolvers[id] = function (err, res) {\n if (err) {\n self.convertGwtStyleError(err);\n reject(err);\n } else {\n resolve(res);\n }\n };\n // post the message\n self.worker.postMessage(msg);\n });\n }\n }, {\n key: 'receive',\n value: function receive(self, answer) {\n var json = answer.data;\n var resolver = self.resolvers[json.id];\n if (resolver) {\n delete self.resolvers[json.id];\n if (json.error) {\n resolver(json.error);\n } else {\n resolver(null, json.data);\n }\n }\n }\n }, {\n key: 'terminate',\n value: function terminate() {\n if (this.worker.terminate) {\n this.worker.terminate();\n }\n }\n }, {\n key: 'convertGwtStyleError',\n value: function convertGwtStyleError(err) {\n if (!err) {\n return;\n }\n // Somewhat flatten the way GWT stores nested exception(s)\n var javaException = err['__java$exception'];\n if (javaException) {\n // Note that the property name of the nested exception is different\n // in the non-minified ('cause') and the minified (not deterministic) version.\n // Hence, the version below only works for the non-minified version.\n // However, as the minified stack trace is not of much use anyway, one\n // should switch the used version for debugging in such a case.\n if (javaException.cause && javaException.cause.backingJsObject) {\n err.cause = javaException.cause.backingJsObject;\n this.convertGwtStyleError(err.cause);\n }\n delete err['__java$exception'];\n }\n }\n }]);\n\n return PromisedWorker;\n}();\n},{}],2:[function(require,module,exports){\n(function (global){(function (){\n'use strict';\n\n// -------------- FAKE ELEMENTS GWT ASSUMES EXIST -------------- \nvar $wnd;\nif (typeof window !== 'undefined')\n $wnd = window\nelse if (typeof global !== 'undefined')\n $wnd = global // nodejs\nelse if (typeof self !== 'undefined')\n $wnd = self // web worker\n\nvar $moduleName,\n $moduleBase;\n\n// -------------- WORKAROUND STRICT MODE, SEE #127 -------------- \nvar g, i, o;\n\n// -------------- GENERATED CODE -------------- \nfunction nb(){}\nfunction xb(){}\nfunction Fd(){}\nfunction $g(){}\nfunction _p(){}\nfunction yq(){}\nfunction Sq(){}\nfunction Es(){}\nfunction Jw(){}\nfunction Vw(){}\nfunction VA(){}\nfunction dA(){}\nfunction MA(){}\nfunction PA(){}\nfunction PB(){}\nfunction bx(){}\nfunction cx(){}\nfunction vy(){}\nfunction Nz(){}\nfunction Yz(){}\nfunction Ylb(){}\nfunction Ymb(){}\nfunction xmb(){}\nfunction Fmb(){}\nfunction Qmb(){}\nfunction gcb(){}\nfunction ccb(){}\nfunction jcb(){}\nfunction jtb(){}\nfunction otb(){}\nfunction qtb(){}\nfunction _fb(){}\nfunction bpb(){}\nfunction kpb(){}\nfunction ppb(){}\nfunction Gpb(){}\nfunction drb(){}\nfunction dzb(){}\nfunction fzb(){}\nfunction fxb(){}\nfunction Vxb(){}\nfunction Ovb(){}\nfunction byb(){}\nfunction zyb(){}\nfunction Zyb(){}\nfunction _yb(){}\nfunction hzb(){}\nfunction jzb(){}\nfunction lzb(){}\nfunction nzb(){}\nfunction rzb(){}\nfunction zzb(){}\nfunction Czb(){}\nfunction Ezb(){}\nfunction Gzb(){}\nfunction Izb(){}\nfunction Mzb(){}\nfunction bBb(){}\nfunction NBb(){}\nfunction PBb(){}\nfunction RBb(){}\nfunction iCb(){}\nfunction OCb(){}\nfunction SCb(){}\nfunction GDb(){}\nfunction JDb(){}\nfunction fEb(){}\nfunction xEb(){}\nfunction CEb(){}\nfunction GEb(){}\nfunction yFb(){}\nfunction KGb(){}\nfunction tIb(){}\nfunction vIb(){}\nfunction xIb(){}\nfunction zIb(){}\nfunction OIb(){}\nfunction SIb(){}\nfunction TJb(){}\nfunction VJb(){}\nfunction XJb(){}\nfunction XKb(){}\nfunction fKb(){}\nfunction VKb(){}\nfunction VLb(){}\nfunction jLb(){}\nfunction nLb(){}\nfunction GLb(){}\nfunction KLb(){}\nfunction MLb(){}\nfunction OLb(){}\nfunction RLb(){}\nfunction YLb(){}\nfunction bMb(){}\nfunction gMb(){}\nfunction lMb(){}\nfunction pMb(){}\nfunction wMb(){}\nfunction zMb(){}\nfunction CMb(){}\nfunction FMb(){}\nfunction LMb(){}\nfunction zNb(){}\nfunction PNb(){}\nfunction kOb(){}\nfunction pOb(){}\nfunction tOb(){}\nfunction yOb(){}\nfunction FOb(){}\nfunction GPb(){}\nfunction aQb(){}\nfunction cQb(){}\nfunction eQb(){}\nfunction gQb(){}\nfunction iQb(){}\nfunction CQb(){}\nfunction MQb(){}\nfunction OQb(){}\nfunction ASb(){}\nfunction fTb(){}\nfunction kTb(){}\nfunction STb(){}\nfunction fUb(){}\nfunction DUb(){}\nfunction VUb(){}\nfunction YUb(){}\nfunction _Ub(){}\nfunction _Wb(){}\nfunction QWb(){}\nfunction XWb(){}\nfunction jVb(){}\nfunction DVb(){}\nfunction VVb(){}\nfunction $Vb(){}\nfunction dXb(){}\nfunction hXb(){}\nfunction lXb(){}\nfunction gYb(){}\nfunction HYb(){}\nfunction SYb(){}\nfunction VYb(){}\nfunction dZb(){}\nfunction P$b(){}\nfunction T$b(){}\nfunction h1b(){}\nfunction m1b(){}\nfunction q1b(){}\nfunction u1b(){}\nfunction y1b(){}\nfunction C1b(){}\nfunction e2b(){}\nfunction g2b(){}\nfunction m2b(){}\nfunction q2b(){}\nfunction u2b(){}\nfunction S2b(){}\nfunction U2b(){}\nfunction W2b(){}\nfunction _2b(){}\nfunction e3b(){}\nfunction h3b(){}\nfunction p3b(){}\nfunction t3b(){}\nfunction w3b(){}\nfunction y3b(){}\nfunction A3b(){}\nfunction M3b(){}\nfunction Q3b(){}\nfunction U3b(){}\nfunction Y3b(){}\nfunction l4b(){}\nfunction q4b(){}\nfunction s4b(){}\nfunction u4b(){}\nfunction w4b(){}\nfunction y4b(){}\nfunction L4b(){}\nfunction N4b(){}\nfunction P4b(){}\nfunction R4b(){}\nfunction T4b(){}\nfunction X4b(){}\nfunction I5b(){}\nfunction Q5b(){}\nfunction T5b(){}\nfunction Z5b(){}\nfunction l6b(){}\nfunction o6b(){}\nfunction t6b(){}\nfunction z6b(){}\nfunction L6b(){}\nfunction M6b(){}\nfunction P6b(){}\nfunction X6b(){}\nfunction $6b(){}\nfunction a7b(){}\nfunction c7b(){}\nfunction g7b(){}\nfunction j7b(){}\nfunction m7b(){}\nfunction r7b(){}\nfunction x7b(){}\nfunction D7b(){}\nfunction D9b(){}\nfunction b9b(){}\nfunction h9b(){}\nfunction j9b(){}\nfunction l9b(){}\nfunction w9b(){}\nfunction F9b(){}\nfunction hac(){}\nfunction jac(){}\nfunction pac(){}\nfunction uac(){}\nfunction Iac(){}\nfunction Kac(){}\nfunction Sac(){}\nfunction obc(){}\nfunction rbc(){}\nfunction vbc(){}\nfunction Fbc(){}\nfunction Jbc(){}\nfunction Xbc(){}\nfunction ccc(){}\nfunction fcc(){}\nfunction lcc(){}\nfunction occ(){}\nfunction tcc(){}\nfunction ycc(){}\nfunction Acc(){}\nfunction Ccc(){}\nfunction Ecc(){}\nfunction Gcc(){}\nfunction Zcc(){}\nfunction _cc(){}\nfunction bdc(){}\nfunction fdc(){}\nfunction jdc(){}\nfunction pdc(){}\nfunction sdc(){}\nfunction ydc(){}\nfunction Adc(){}\nfunction Cdc(){}\nfunction Edc(){}\nfunction Idc(){}\nfunction Ndc(){}\nfunction Qdc(){}\nfunction Sdc(){}\nfunction Udc(){}\nfunction Wdc(){}\nfunction Ydc(){}\nfunction aec(){}\nfunction hec(){}\nfunction jec(){}\nfunction lec(){}\nfunction nec(){}\nfunction uec(){}\nfunction wec(){}\nfunction yec(){}\nfunction Aec(){}\nfunction Fec(){}\nfunction Jec(){}\nfunction Lec(){}\nfunction Nec(){}\nfunction Rec(){}\nfunction Uec(){}\nfunction Zec(){}\nfunction Zfc(){}\nfunction lfc(){}\nfunction tfc(){}\nfunction xfc(){}\nfunction zfc(){}\nfunction Ffc(){}\nfunction Jfc(){}\nfunction Nfc(){}\nfunction Pfc(){}\nfunction Vfc(){}\nfunction _fc(){}\nfunction fgc(){}\nfunction jgc(){}\nfunction lgc(){}\nfunction Bgc(){}\nfunction ehc(){}\nfunction ghc(){}\nfunction ihc(){}\nfunction khc(){}\nfunction mhc(){}\nfunction ohc(){}\nfunction qhc(){}\nfunction yhc(){}\nfunction Ahc(){}\nfunction Ghc(){}\nfunction Ihc(){}\nfunction Khc(){}\nfunction Mhc(){}\nfunction Shc(){}\nfunction Uhc(){}\nfunction Whc(){}\nfunction dic(){}\nfunction dlc(){}\nfunction blc(){}\nfunction flc(){}\nfunction hlc(){}\nfunction jlc(){}\nfunction Glc(){}\nfunction Ilc(){}\nfunction Klc(){}\nfunction Mlc(){}\nfunction Mjc(){}\nfunction Qjc(){}\nfunction Qlc(){}\nfunction Ulc(){}\nfunction Ylc(){}\nfunction Lkc(){}\nfunction Nkc(){}\nfunction Pkc(){}\nfunction Rkc(){}\nfunction Xkc(){}\nfunction _kc(){}\nfunction gmc(){}\nfunction kmc(){}\nfunction zmc(){}\nfunction Fmc(){}\nfunction Wmc(){}\nfunction $mc(){}\nfunction anc(){}\nfunction mnc(){}\nfunction wnc(){}\nfunction Hnc(){}\nfunction Jnc(){}\nfunction Lnc(){}\nfunction Nnc(){}\nfunction Pnc(){}\nfunction Ync(){}\nfunction eoc(){}\nfunction Aoc(){}\nfunction Coc(){}\nfunction Eoc(){}\nfunction Joc(){}\nfunction Loc(){}\nfunction Zoc(){}\nfunction _oc(){}\nfunction bpc(){}\nfunction hpc(){}\nfunction kpc(){}\nfunction ppc(){}\nfunction pFc(){}\nfunction Ryc(){}\nfunction QCc(){}\nfunction PDc(){}\nfunction xGc(){}\nfunction HGc(){}\nfunction JGc(){}\nfunction NGc(){}\nfunction GIc(){}\nfunction iKc(){}\nfunction mKc(){}\nfunction wKc(){}\nfunction yKc(){}\nfunction AKc(){}\nfunction EKc(){}\nfunction KKc(){}\nfunction OKc(){}\nfunction QKc(){}\nfunction SKc(){}\nfunction UKc(){}\nfunction YKc(){}\nfunction aLc(){}\nfunction fLc(){}\nfunction hLc(){}\nfunction nLc(){}\nfunction pLc(){}\nfunction tLc(){}\nfunction vLc(){}\nfunction zLc(){}\nfunction BLc(){}\nfunction DLc(){}\nfunction FLc(){}\nfunction sMc(){}\nfunction JMc(){}\nfunction hNc(){}\nfunction RNc(){}\nfunction ZNc(){}\nfunction _Nc(){}\nfunction bOc(){}\nfunction dOc(){}\nfunction fOc(){}\nfunction hOc(){}\nfunction hRc(){}\nfunction jRc(){}\nfunction KRc(){}\nfunction NRc(){}\nfunction NQc(){}\nfunction LQc(){}\nfunction _Qc(){}\nfunction cPc(){}\nfunction iPc(){}\nfunction kPc(){}\nfunction mPc(){}\nfunction xPc(){}\nfunction zPc(){}\nfunction zSc(){}\nfunction BSc(){}\nfunction GSc(){}\nfunction ISc(){}\nfunction NSc(){}\nfunction TSc(){}\nfunction NTc(){}\nfunction NVc(){}\nfunction oVc(){}\nfunction SVc(){}\nfunction VVc(){}\nfunction XVc(){}\nfunction ZVc(){}\nfunction bWc(){}\nfunction bXc(){}\nfunction CXc(){}\nfunction FXc(){}\nfunction IXc(){}\nfunction MXc(){}\nfunction UXc(){}\nfunction bYc(){}\nfunction fYc(){}\nfunction oYc(){}\nfunction qYc(){}\nfunction uYc(){}\nfunction pZc(){}\nfunction G$c(){}\nfunction h0c(){}\nfunction N0c(){}\nfunction k1c(){}\nfunction I1c(){}\nfunction Q1c(){}\nfunction f2c(){}\nfunction i2c(){}\nfunction k2c(){}\nfunction w2c(){}\nfunction O2c(){}\nfunction S2c(){}\nfunction Z2c(){}\nfunction v3c(){}\nfunction x3c(){}\nfunction R3c(){}\nfunction U3c(){}\nfunction e4c(){}\nfunction w4c(){}\nfunction x4c(){}\nfunction z4c(){}\nfunction B4c(){}\nfunction D4c(){}\nfunction F4c(){}\nfunction H4c(){}\nfunction J4c(){}\nfunction L4c(){}\nfunction N4c(){}\nfunction P4c(){}\nfunction R4c(){}\nfunction T4c(){}\nfunction V4c(){}\nfunction X4c(){}\nfunction Z4c(){}\nfunction _4c(){}\nfunction _7c(){}\nfunction b5c(){}\nfunction d5c(){}\nfunction f5c(){}\nfunction h5c(){}\nfunction H5c(){}\nfunction Hfd(){}\nfunction Zfd(){}\nfunction Zed(){}\nfunction ged(){}\nfunction Jed(){}\nfunction Ned(){}\nfunction Red(){}\nfunction Ved(){}\nfunction bbd(){}\nfunction mdd(){}\nfunction _fd(){}\nfunction fgd(){}\nfunction kgd(){}\nfunction Mgd(){}\nfunction Ahd(){}\nfunction Ald(){}\nfunction Tld(){}\nfunction xkd(){}\nfunction rmd(){}\nfunction knd(){}\nfunction Jod(){}\nfunction JCd(){}\nfunction Bpd(){}\nfunction BFd(){}\nfunction oFd(){}\nfunction bqd(){}\nfunction bvd(){}\nfunction jvd(){}\nfunction yud(){}\nfunction Hxd(){}\nfunction EBd(){}\nfunction aDd(){}\nfunction MGd(){}\nfunction vHd(){}\nfunction RHd(){}\nfunction wNd(){}\nfunction zNd(){}\nfunction CNd(){}\nfunction KNd(){}\nfunction XNd(){}\nfunction $Nd(){}\nfunction HPd(){}\nfunction lUd(){}\nfunction XUd(){}\nfunction DWd(){}\nfunction GWd(){}\nfunction JWd(){}\nfunction MWd(){}\nfunction PWd(){}\nfunction SWd(){}\nfunction VWd(){}\nfunction YWd(){}\nfunction _Wd(){}\nfunction xYd(){}\nfunction BYd(){}\nfunction mZd(){}\nfunction EZd(){}\nfunction GZd(){}\nfunction JZd(){}\nfunction MZd(){}\nfunction PZd(){}\nfunction SZd(){}\nfunction VZd(){}\nfunction YZd(){}\nfunction _Zd(){}\nfunction c$d(){}\nfunction f$d(){}\nfunction i$d(){}\nfunction l$d(){}\nfunction o$d(){}\nfunction r$d(){}\nfunction u$d(){}\nfunction x$d(){}\nfunction A$d(){}\nfunction D$d(){}\nfunction G$d(){}\nfunction J$d(){}\nfunction M$d(){}\nfunction P$d(){}\nfunction S$d(){}\nfunction V$d(){}\nfunction Y$d(){}\nfunction _$d(){}\nfunction c_d(){}\nfunction f_d(){}\nfunction i_d(){}\nfunction l_d(){}\nfunction o_d(){}\nfunction r_d(){}\nfunction u_d(){}\nfunction x_d(){}\nfunction A_d(){}\nfunction D_d(){}\nfunction G_d(){}\nfunction J_d(){}\nfunction M_d(){}\nfunction P_d(){}\nfunction S_d(){}\nfunction V_d(){}\nfunction Y_d(){}\nfunction h5d(){}\nfunction U6d(){}\nfunction U9d(){}\nfunction _8d(){}\nfunction fae(){}\nfunction hae(){}\nfunction kae(){}\nfunction nae(){}\nfunction qae(){}\nfunction tae(){}\nfunction wae(){}\nfunction zae(){}\nfunction Cae(){}\nfunction Fae(){}\nfunction Iae(){}\nfunction Lae(){}\nfunction Oae(){}\nfunction Rae(){}\nfunction Uae(){}\nfunction Xae(){}\nfunction $ae(){}\nfunction bbe(){}\nfunction ebe(){}\nfunction hbe(){}\nfunction kbe(){}\nfunction nbe(){}\nfunction qbe(){}\nfunction tbe(){}\nfunction wbe(){}\nfunction zbe(){}\nfunction Cbe(){}\nfunction Fbe(){}\nfunction Ibe(){}\nfunction Lbe(){}\nfunction Obe(){}\nfunction Rbe(){}\nfunction Ube(){}\nfunction Xbe(){}\nfunction $be(){}\nfunction bce(){}\nfunction ece(){}\nfunction hce(){}\nfunction kce(){}\nfunction nce(){}\nfunction qce(){}\nfunction tce(){}\nfunction wce(){}\nfunction zce(){}\nfunction Cce(){}\nfunction Fce(){}\nfunction Ice(){}\nfunction Lce(){}\nfunction Oce(){}\nfunction Rce(){}\nfunction Uce(){}\nfunction Xce(){}\nfunction ude(){}\nfunction Vge(){}\nfunction dhe(){}\nfunction s_b(a){}\nfunction jSd(a){}\nfunction ol(){wb()}\nfunction oPb(){nPb()}\nfunction EPb(){CPb()}\nfunction gFb(){fFb()}\nfunction TRb(){SRb()}\nfunction ySb(){wSb()}\nfunction PSb(){OSb()}\nfunction dTb(){bTb()}\nfunction i4b(){b4b()}\nfunction D2b(){x2b()}\nfunction J6b(){D6b()}\nfunction u9b(){q9b()}\nfunction $9b(){I9b()}\nfunction Umc(){Imc()}\nfunction abc(){Vac()}\nfunction ZCc(){VCc()}\nfunction kCc(){hCc()}\nfunction rCc(){oCc()}\nfunction Tcc(){Occ()}\nfunction xkc(){gkc()}\nfunction xDc(){rDc()}\nfunction iDc(){cDc()}\nfunction kwc(){jwc()}\nfunction tJc(){jJc()}\nfunction dJc(){aJc()}\nfunction Pyc(){Nyc()}\nfunction VBc(){SBc()}\nfunction CFc(){yFc()}\nfunction CUc(){wUc()}\nfunction lUc(){fUc()}\nfunction sUc(){pUc()}\nfunction IUc(){GUc()}\nfunction IWc(){HWc()}\nfunction _Wc(){ZWc()}\nfunction fHc(){dHc()}\nfunction f0c(){d0c()}\nfunction B0c(){A0c()}\nfunction L0c(){J0c()}\nfunction LTc(){JTc()}\nfunction sTc(){rTc()}\nfunction KLc(){ILc()}\nfunction wNc(){tNc()}\nfunction PYc(){OYc()}\nfunction nZc(){lZc()}\nfunction q3c(){p3c()}\nfunction Z7c(){X7c()}\nfunction Z9c(){Y9c()}\nfunction _ad(){Zad()}\nfunction kdd(){idd()}\nfunction $md(){Smd()}\nfunction HGd(){tGd()}\nfunction hLd(){NKd()}\nfunction J6d(){Uge()}\nfunction Mvb(a){uCb(a)}\nfunction Yb(a){this.a=a}\nfunction cc(a){this.a=a}\nfunction cj(a){this.a=a}\nfunction ij(a){this.a=a}\nfunction Dj(a){this.a=a}\nfunction df(a){this.a=a}\nfunction kf(a){this.a=a}\nfunction ah(a){this.a=a}\nfunction lh(a){this.a=a}\nfunction th(a){this.a=a}\nfunction Ph(a){this.a=a}\nfunction vi(a){this.a=a}\nfunction Ci(a){this.a=a}\nfunction Fk(a){this.a=a}\nfunction Ln(a){this.a=a}\nfunction ap(a){this.a=a}\nfunction zp(a){this.a=a}\nfunction Yp(a){this.a=a}\nfunction qq(a){this.a=a}\nfunction Dq(a){this.a=a}\nfunction wr(a){this.a=a}\nfunction Ir(a){this.b=a}\nfunction sj(a){this.c=a}\nfunction sw(a){this.a=a}\nfunction fw(a){this.a=a}\nfunction xw(a){this.a=a}\nfunction Cw(a){this.a=a}\nfunction Qw(a){this.a=a}\nfunction Rw(a){this.a=a}\nfunction Xw(a){this.a=a}\nfunction Xv(a){this.a=a}\nfunction Sv(a){this.a=a}\nfunction eu(a){this.a=a}\nfunction Zx(a){this.a=a}\nfunction _x(a){this.a=a}\nfunction xy(a){this.a=a}\nfunction xB(a){this.a=a}\nfunction HB(a){this.a=a}\nfunction TB(a){this.a=a}\nfunction fC(a){this.a=a}\nfunction wB(){this.a=[]}\nfunction MBb(a,b){a.a=b}\nfunction w_b(a,b){a.a=b}\nfunction x_b(a,b){a.b=b}\nfunction YOb(a,b){a.b=b}\nfunction $Ob(a,b){a.b=b}\nfunction ZGb(a,b){a.j=b}\nfunction qNb(a,b){a.g=b}\nfunction rNb(a,b){a.i=b}\nfunction dRb(a,b){a.c=b}\nfunction eRb(a,b){a.d=b}\nfunction z_b(a,b){a.d=b}\nfunction y_b(a,b){a.c=b}\nfunction __b(a,b){a.k=b}\nfunction E0b(a,b){a.c=b}\nfunction njc(a,b){a.c=b}\nfunction mjc(a,b){a.a=b}\nfunction dFc(a,b){a.a=b}\nfunction eFc(a,b){a.f=b}\nfunction nOc(a,b){a.a=b}\nfunction oOc(a,b){a.b=b}\nfunction pOc(a,b){a.d=b}\nfunction qOc(a,b){a.i=b}\nfunction rOc(a,b){a.o=b}\nfunction sOc(a,b){a.r=b}\nfunction $Pc(a,b){a.a=b}\nfunction _Pc(a,b){a.b=b}\nfunction DVc(a,b){a.e=b}\nfunction EVc(a,b){a.f=b}\nfunction FVc(a,b){a.g=b}\nfunction SZc(a,b){a.e=b}\nfunction TZc(a,b){a.f=b}\nfunction c$c(a,b){a.f=b}\nfunction bJd(a,b){a.n=b}\nfunction A1d(a,b){a.a=b}\nfunction J1d(a,b){a.a=b}\nfunction B1d(a,b){a.c=b}\nfunction K1d(a,b){a.c=b}\nfunction L1d(a,b){a.d=b}\nfunction M1d(a,b){a.e=b}\nfunction N1d(a,b){a.g=b}\nfunction d2d(a,b){a.a=b}\nfunction e2d(a,b){a.c=b}\nfunction f2d(a,b){a.d=b}\nfunction g2d(a,b){a.e=b}\nfunction h2d(a,b){a.f=b}\nfunction i2d(a,b){a.j=b}\nfunction Z8d(a,b){a.a=b}\nfunction $8d(a,b){a.b=b}\nfunction g9d(a,b){a.a=b}\nfunction Cic(a){a.b=a.a}\nfunction Dg(a){a.c=a.d.d}\nfunction vib(a){this.d=a}\nfunction eib(a){this.a=a}\nfunction Pib(a){this.a=a}\nfunction Vib(a){this.a=a}\nfunction $ib(a){this.a=a}\nfunction mcb(a){this.a=a}\nfunction Mcb(a){this.a=a}\nfunction Xcb(a){this.a=a}\nfunction Ndb(a){this.a=a}\nfunction _db(a){this.a=a}\nfunction teb(a){this.a=a}\nfunction Qeb(a){this.a=a}\nfunction djb(a){this.a=a}\nfunction Gjb(a){this.a=a}\nfunction Njb(a){this.a=a}\nfunction Bjb(a){this.b=a}\nfunction lnb(a){this.b=a}\nfunction Dnb(a){this.b=a}\nfunction anb(a){this.a=a}\nfunction Mob(a){this.a=a}\nfunction Rob(a){this.a=a}\nfunction iob(a){this.c=a}\nfunction olb(a){this.c=a}\nfunction qub(a){this.c=a}\nfunction Tub(a){this.a=a}\nfunction Vub(a){this.a=a}\nfunction Xub(a){this.a=a}\nfunction Zub(a){this.a=a}\nfunction tpb(a){this.a=a}\nfunction _pb(a){this.a=a}\nfunction Wqb(a){this.a=a}\nfunction nsb(a){this.a=a}\nfunction Rxb(a){this.a=a}\nfunction Txb(a){this.a=a}\nfunction Xxb(a){this.a=a}\nfunction bzb(a){this.a=a}\nfunction tzb(a){this.a=a}\nfunction vzb(a){this.a=a}\nfunction xzb(a){this.a=a}\nfunction Kzb(a){this.a=a}\nfunction Ozb(a){this.a=a}\nfunction iAb(a){this.a=a}\nfunction kAb(a){this.a=a}\nfunction mAb(a){this.a=a}\nfunction BAb(a){this.a=a}\nfunction hBb(a){this.a=a}\nfunction jBb(a){this.a=a}\nfunction nBb(a){this.a=a}\nfunction TBb(a){this.a=a}\nfunction XBb(a){this.a=a}\nfunction QCb(a){this.a=a}\nfunction WCb(a){this.a=a}\nfunction _Cb(a){this.a=a}\nfunction dEb(a){this.a=a}\nfunction QGb(a){this.a=a}\nfunction YGb(a){this.a=a}\nfunction tKb(a){this.a=a}\nfunction CLb(a){this.a=a}\nfunction JMb(a){this.a=a}\nfunction RNb(a){this.a=a}\nfunction kQb(a){this.a=a}\nfunction mQb(a){this.a=a}\nfunction FQb(a){this.a=a}\nfunction ETb(a){this.a=a}\nfunction UTb(a){this.a=a}\nfunction dUb(a){this.a=a}\nfunction hUb(a){this.a=a}\nfunction EZb(a){this.a=a}\nfunction j$b(a){this.a=a}\nfunction v$b(a){this.e=a}\nfunction J0b(a){this.a=a}\nfunction M0b(a){this.a=a}\nfunction R0b(a){this.a=a}\nfunction U0b(a){this.a=a}\nfunction i2b(a){this.a=a}\nfunction k2b(a){this.a=a}\nfunction o2b(a){this.a=a}\nfunction s2b(a){this.a=a}\nfunction G2b(a){this.a=a}\nfunction I2b(a){this.a=a}\nfunction K2b(a){this.a=a}\nfunction M2b(a){this.a=a}\nfunction W3b(a){this.a=a}\nfunction $3b(a){this.a=a}\nfunction V4b(a){this.a=a}\nfunction u5b(a){this.a=a}\nfunction A7b(a){this.a=a}\nfunction G7b(a){this.a=a}\nfunction J7b(a){this.a=a}\nfunction M7b(a){this.a=a}\nfunction Mbc(a){this.a=a}\nfunction Pbc(a){this.a=a}\nfunction lac(a){this.a=a}\nfunction nac(a){this.a=a}\nfunction qcc(a){this.a=a}\nfunction Gdc(a){this.a=a}\nfunction $dc(a){this.a=a}\nfunction cec(a){this.a=a}\nfunction _ec(a){this.a=a}\nfunction pfc(a){this.a=a}\nfunction Bfc(a){this.a=a}\nfunction Lfc(a){this.a=a}\nfunction ygc(a){this.a=a}\nfunction Dgc(a){this.a=a}\nfunction shc(a){this.a=a}\nfunction uhc(a){this.a=a}\nfunction whc(a){this.a=a}\nfunction Chc(a){this.a=a}\nfunction Ehc(a){this.a=a}\nfunction Ohc(a){this.a=a}\nfunction Yhc(a){this.a=a}\nfunction Tkc(a){this.a=a}\nfunction Vkc(a){this.a=a}\nfunction Olc(a){this.a=a}\nfunction pnc(a){this.a=a}\nfunction rnc(a){this.a=a}\nfunction dpc(a){this.a=a}\nfunction fpc(a){this.a=a}\nfunction GCc(a){this.a=a}\nfunction KCc(a){this.a=a}\nfunction mDc(a){this.a=a}\nfunction jEc(a){this.a=a}\nfunction HEc(a){this.a=a}\nfunction FEc(a){this.c=a}\nfunction qoc(a){this.b=a}\nfunction bFc(a){this.a=a}\nfunction GFc(a){this.a=a}\nfunction iGc(a){this.a=a}\nfunction kGc(a){this.a=a}\nfunction mGc(a){this.a=a}\nfunction $Gc(a){this.a=a}\nfunction hIc(a){this.a=a}\nfunction lIc(a){this.a=a}\nfunction pIc(a){this.a=a}\nfunction tIc(a){this.a=a}\nfunction xIc(a){this.a=a}\nfunction zIc(a){this.a=a}\nfunction CIc(a){this.a=a}\nfunction LIc(a){this.a=a}\nfunction CKc(a){this.a=a}\nfunction IKc(a){this.a=a}\nfunction MKc(a){this.a=a}\nfunction $Kc(a){this.a=a}\nfunction cLc(a){this.a=a}\nfunction jLc(a){this.a=a}\nfunction rLc(a){this.a=a}\nfunction xLc(a){this.a=a}\nfunction OMc(a){this.a=a}\nfunction ZOc(a){this.a=a}\nfunction ZRc(a){this.a=a}\nfunction aSc(a){this.a=a}\nfunction I$c(a){this.a=a}\nfunction K$c(a){this.a=a}\nfunction M$c(a){this.a=a}\nfunction O$c(a){this.a=a}\nfunction U$c(a){this.a=a}\nfunction n1c(a){this.a=a}\nfunction z1c(a){this.a=a}\nfunction B1c(a){this.a=a}\nfunction Q2c(a){this.a=a}\nfunction U2c(a){this.a=a}\nfunction z3c(a){this.a=a}\nfunction med(a){this.a=a}\nfunction Xed(a){this.a=a}\nfunction _ed(a){this.a=a}\nfunction Qfd(a){this.a=a}\nfunction Bgd(a){this.a=a}\nfunction $gd(a){this.a=a}\nfunction lrd(a){this.a=a}\nfunction urd(a){this.a=a}\nfunction vrd(a){this.a=a}\nfunction wrd(a){this.a=a}\nfunction xrd(a){this.a=a}\nfunction yrd(a){this.a=a}\nfunction zrd(a){this.a=a}\nfunction Ard(a){this.a=a}\nfunction Brd(a){this.a=a}\nfunction Crd(a){this.a=a}\nfunction Ird(a){this.a=a}\nfunction Krd(a){this.a=a}\nfunction Lrd(a){this.a=a}\nfunction Mrd(a){this.a=a}\nfunction Nrd(a){this.a=a}\nfunction Prd(a){this.a=a}\nfunction Srd(a){this.a=a}\nfunction Yrd(a){this.a=a}\nfunction Zrd(a){this.a=a}\nfunction _rd(a){this.a=a}\nfunction asd(a){this.a=a}\nfunction bsd(a){this.a=a}\nfunction csd(a){this.a=a}\nfunction dsd(a){this.a=a}\nfunction msd(a){this.a=a}\nfunction osd(a){this.a=a}\nfunction qsd(a){this.a=a}\nfunction ssd(a){this.a=a}\nfunction Wsd(a){this.a=a}\nfunction Lsd(a){this.b=a}\nfunction thd(a){this.f=a}\nfunction qtd(a){this.a=a}\nfunction yBd(a){this.a=a}\nfunction GBd(a){this.a=a}\nfunction MBd(a){this.a=a}\nfunction SBd(a){this.a=a}\nfunction iCd(a){this.a=a}\nfunction YMd(a){this.a=a}\nfunction GNd(a){this.a=a}\nfunction EPd(a){this.a=a}\nfunction EQd(a){this.a=a}\nfunction NTd(a){this.a=a}\nfunction qOd(a){this.b=a}\nfunction lVd(a){this.c=a}\nfunction VVd(a){this.e=a}\nfunction iYd(a){this.a=a}\nfunction RYd(a){this.a=a}\nfunction ZYd(a){this.a=a}\nfunction z0d(a){this.a=a}\nfunction O0d(a){this.a=a}\nfunction s0d(a){this.d=a}\nfunction W5d(a){this.a=a}\nfunction cge(a){this.a=a}\nfunction xfe(a){this.e=a}\nfunction Tfd(){this.a=0}\nfunction jkb(){Vjb(this)}\nfunction Rkb(){Ckb(this)}\nfunction Lqb(){Uhb(this)}\nfunction lEb(){kEb(this)}\nfunction A_b(){s_b(this)}\nfunction UQd(){this.c=FQd}\nfunction v6d(a,b){b.Wb(a)}\nfunction moc(a,b){a.b+=b}\nfunction yXb(a){a.b=new Ji}\nfunction vbb(a){return a.e}\nfunction DB(a){return a.a}\nfunction LB(a){return a.a}\nfunction ZB(a){return a.a}\nfunction lC(a){return a.a}\nfunction EC(a){return a.a}\nfunction wC(){return null}\nfunction SB(){return null}\nfunction hcb(){mvd();ovd()}\nfunction zJb(a){a.b.tf(a.e)}\nfunction j5b(a,b){a.b=b-a.b}\nfunction g5b(a,b){a.a=b-a.a}\nfunction PXc(a,b){b.ad(a.a)}\nfunction plc(a,b){G0b(b,a)}\nfunction hp(a,b,c){a.Od(c,b)}\nfunction As(a,b){a.e=b;b.b=a}\nfunction Zl(a){Ql();this.a=a}\nfunction jq(a){Ql();this.a=a}\nfunction sq(a){Ql();this.a=a}\nfunction Fq(a){im();this.a=a}\nfunction Sz(a){Rz();Qz.be(a)}\nfunction gz(){Xy.call(this)}\nfunction xcb(){Xy.call(this)}\nfunction pcb(){gz.call(this)}\nfunction tcb(){gz.call(this)}\nfunction Bdb(){gz.call(this)}\nfunction Vdb(){gz.call(this)}\nfunction Ydb(){gz.call(this)}\nfunction Geb(){gz.call(this)}\nfunction bgb(){gz.call(this)}\nfunction Apb(){gz.call(this)}\nfunction Jpb(){gz.call(this)}\nfunction utb(){gz.call(this)}\nfunction x2c(){gz.call(this)}\nfunction rQd(){this.a=this}\nfunction MPd(){this.Bb|=256}\nfunction tTb(){this.b=new mt}\nfunction fA(){fA=ccb;new Lqb}\nfunction rcb(){pcb.call(this)}\nfunction dCb(a,b){a.length=b}\nfunction Tvb(a,b){Ekb(a.a,b)}\nfunction sKb(a,b){UHb(a.c,b)}\nfunction SMc(a,b){Qqb(a.b,b)}\nfunction vBd(a,b){uAd(a.a,b)}\nfunction wBd(a,b){vAd(a.a,b)}\nfunction GLd(a,b){Uhd(a.e,b)}\nfunction d7d(a){D2d(a.c,a.b)}\nfunction mj(a,b){a.kc().Nb(b)}\nfunction Odb(a){this.a=Tdb(a)}\nfunction Tqb(){this.a=new Lqb}\nfunction gyb(){this.a=new Lqb}\nfunction Wvb(){this.a=new Rkb}\nfunction KFb(){this.a=new Rkb}\nfunction PFb(){this.a=new Rkb}\nfunction FFb(){this.a=new yFb}\nfunction pGb(){this.a=new MFb}\nfunction ZQb(){this.a=new MQb}\nfunction Gxb(){this.a=new Pwb}\nfunction jUb(){this.a=new PTb}\nfunction sDb(){this.a=new oDb}\nfunction zDb(){this.a=new tDb}\nfunction CWb(){this.a=new Rkb}\nfunction HXb(){this.a=new Rkb}\nfunction nYb(){this.a=new Rkb}\nfunction BYb(){this.a=new Rkb}\nfunction fLb(){this.d=new Rkb}\nfunction vYb(){this.a=new Tqb}\nfunction a2b(){this.a=new Lqb}\nfunction wZb(){this.b=new Lqb}\nfunction TCc(){this.b=new Rkb}\nfunction zJc(){this.e=new Rkb}\nfunction uMc(){this.d=new Rkb}\nfunction wdc(){this.a=new xkc}\nfunction vKc(){Rkb.call(this)}\nfunction twb(){Wvb.call(this)}\nfunction oHb(){$Gb.call(this)}\nfunction LXb(){HXb.call(this)}\nfunction L_b(){H_b.call(this)}\nfunction H_b(){A_b.call(this)}\nfunction p0b(){A_b.call(this)}\nfunction s0b(){p0b.call(this)}\nfunction WMc(){VMc.call(this)}\nfunction bNc(){VMc.call(this)}\nfunction EPc(){CPc.call(this)}\nfunction JPc(){CPc.call(this)}\nfunction OPc(){CPc.call(this)}\nfunction w1c(){s1c.call(this)}\nfunction s7c(){Psb.call(this)}\nfunction apd(){Ald.call(this)}\nfunction ppd(){Ald.call(this)}\nfunction lDd(){YCd.call(this)}\nfunction NDd(){YCd.call(this)}\nfunction mFd(){Lqb.call(this)}\nfunction vFd(){Lqb.call(this)}\nfunction GFd(){Lqb.call(this)}\nfunction KPd(){Tqb.call(this)}\nfunction OJd(){hJd.call(this)}\nfunction aQd(){MPd.call(this)}\nfunction SSd(){FId.call(this)}\nfunction rUd(){FId.call(this)}\nfunction oUd(){Lqb.call(this)}\nfunction NYd(){Lqb.call(this)}\nfunction cZd(){Lqb.call(this)}\nfunction R8d(){MGd.call(this)}\nfunction o9d(){MGd.call(this)}\nfunction i9d(){R8d.call(this)}\nfunction hee(){ude.call(this)}\nfunction Dd(a){yd.call(this,a)}\nfunction Hd(a){yd.call(this,a)}\nfunction ph(a){lh.call(this,a)}\nfunction Sh(a){Wc.call(this,a)}\nfunction oi(a){Sh.call(this,a)}\nfunction Ii(a){Wc.call(this,a)}\nfunction Zdd(){this.a=new Psb}\nfunction CPc(){this.a=new Tqb}\nfunction s1c(){this.a=new Lqb}\nfunction QSc(){this.a=new Rkb}\nfunction D2c(){this.j=new Rkb}\nfunction QXc(){this.a=new UXc}\nfunction e_c(){this.a=new d_c}\nfunction YCd(){this.a=new aDd}\nfunction _k(){_k=ccb;$k=new al}\nfunction Lk(){Lk=ccb;Kk=new Mk}\nfunction wb(){wb=ccb;vb=new xb}\nfunction hs(){hs=ccb;gs=new is}\nfunction rs(a){Sh.call(this,a)}\nfunction Gp(a){Sh.call(this,a)}\nfunction xp(a){Lo.call(this,a)}\nfunction Ep(a){Lo.call(this,a)}\nfunction Tp(a){Wn.call(this,a)}\nfunction wx(a){un.call(this,a)}\nfunction ov(a){dv.call(this,a)}\nfunction Mv(a){Br.call(this,a)}\nfunction Ov(a){Br.call(this,a)}\nfunction Lw(a){Br.call(this,a)}\nfunction hz(a){Yy.call(this,a)}\nfunction MB(a){hz.call(this,a)}\nfunction eC(){fC.call(this,{})}\nfunction Ftb(a){Atb();this.a=a}\nfunction zwb(a){a.b=null;a.c=0}\nfunction Vy(a,b){a.e=b;Sy(a,b)}\nfunction LVb(a,b){a.a=b;NVb(a)}\nfunction lIb(a,b,c){a.a[b.g]=c}\nfunction vfd(a,b,c){Dfd(c,a,b)}\nfunction Odc(a,b){rjc(b.i,a.n)}\nfunction Wyc(a,b){Xyc(a).td(b)}\nfunction ERb(a,b){return a*a/b}\nfunction Xr(a,b){return a.g-b.g}\nfunction tC(a){return new TB(a)}\nfunction vC(a){return new yC(a)}\nfunction ocb(a){hz.call(this,a)}\nfunction qcb(a){hz.call(this,a)}\nfunction ucb(a){hz.call(this,a)}\nfunction vcb(a){Yy.call(this,a)}\nfunction fGc(a){LFc();this.a=a}\nfunction c0d(a){kzd();this.a=a}\nfunction bhd(a){Rgd();this.f=a}\nfunction dhd(a){Rgd();this.f=a}\nfunction Cdb(a){hz.call(this,a)}\nfunction Wdb(a){hz.call(this,a)}\nfunction Zdb(a){hz.call(this,a)}\nfunction Feb(a){hz.call(this,a)}\nfunction Heb(a){hz.call(this,a)}\nfunction Ccb(a){return uCb(a),a}\nfunction Edb(a){return uCb(a),a}\nfunction Gdb(a){return uCb(a),a}\nfunction jfb(a){return uCb(a),a}\nfunction tfb(a){return uCb(a),a}\nfunction akb(a){return a.b==a.c}\nfunction Hwb(a){return !!a&&a.b}\nfunction pIb(a){return !!a&&a.k}\nfunction qIb(a){return !!a&&a.j}\nfunction amb(a){uCb(a);this.a=a}\nfunction wVb(a){qVb(a);return a}\nfunction Blb(a){Glb(a,a.length)}\nfunction cgb(a){hz.call(this,a)}\nfunction cqd(a){hz.call(this,a)}\nfunction n8d(a){hz.call(this,a)}\nfunction y2c(a){hz.call(this,a)}\nfunction z2c(a){hz.call(this,a)}\nfunction mde(a){hz.call(this,a)}\nfunction pc(a){qc.call(this,a,0)}\nfunction Ji(){Ki.call(this,12,3)}\nfunction Kz(){Kz=ccb;Jz=new Nz}\nfunction jz(){jz=ccb;iz=new nb}\nfunction KA(){KA=ccb;JA=new MA}\nfunction OB(){OB=ccb;NB=new PB}\nfunction jc(){throw vbb(new bgb)}\nfunction zh(){throw vbb(new bgb)}\nfunction Pi(){throw vbb(new bgb)}\nfunction Pj(){throw vbb(new bgb)}\nfunction Qj(){throw vbb(new bgb)}\nfunction Ym(){throw vbb(new bgb)}\nfunction Gb(){this.a=GD(Qb(She))}\nfunction oy(a){Ql();this.a=Qb(a)}\nfunction Bs(a,b){a.Td(b);b.Sd(a)}\nfunction iw(a,b){a.a.ec().Mc(b)}\nfunction CYb(a,b,c){a.c.lf(b,c)}\nfunction scb(a){qcb.call(this,a)}\nfunction Oeb(a){Wdb.call(this,a)}\nfunction Hfb(){mcb.call(this,'')}\nfunction Ifb(){mcb.call(this,'')}\nfunction Ufb(){mcb.call(this,'')}\nfunction Vfb(){mcb.call(this,'')}\nfunction Xfb(a){qcb.call(this,a)}\nfunction zob(a){lnb.call(this,a)}\nfunction Yob(a){Inb.call(this,a)}\nfunction Gob(a){zob.call(this,a)}\nfunction Mk(){Fk.call(this,null)}\nfunction al(){Fk.call(this,null)}\nfunction Az(){Az=ccb;!!(Rz(),Qz)}\nfunction wrb(){wrb=ccb;vrb=yrb()}\nfunction Mtb(a){return a.a?a.b:0}\nfunction Vtb(a){return a.a?a.b:0}\nfunction Lcb(a,b){return a.a-b.a}\nfunction Wcb(a,b){return a.a-b.a}\nfunction Peb(a,b){return a.a-b.a}\nfunction eCb(a,b){return PC(a,b)}\nfunction GC(a,b){return rdb(a,b)}\nfunction _B(b,a){return a in b.a}\nfunction _Db(a,b){a.f=b;return a}\nfunction ZDb(a,b){a.b=b;return a}\nfunction $Db(a,b){a.c=b;return a}\nfunction aEb(a,b){a.g=b;return a}\nfunction HGb(a,b){a.a=b;return a}\nfunction IGb(a,b){a.f=b;return a}\nfunction JGb(a,b){a.k=b;return a}\nfunction dLb(a,b){a.a=b;return a}\nfunction eLb(a,b){a.e=b;return a}\nfunction zVb(a,b){a.e=b;return a}\nfunction AVb(a,b){a.f=b;return a}\nfunction KOb(a,b){a.b=true;a.d=b}\nfunction DHb(a,b){a.b=new g7c(b)}\nfunction uvb(a,b,c){b.td(a.a[c])}\nfunction zvb(a,b,c){b.we(a.a[c])}\nfunction wJc(a,b){return a.b-b.b}\nfunction kOc(a,b){return a.g-b.g}\nfunction WQc(a,b){return a.s-b.s}\nfunction Lic(a,b){return a?0:b-1}\nfunction SFc(a,b){return a?0:b-1}\nfunction RFc(a,b){return a?b-1:0}\nfunction M2c(a,b){return b.Yf(a)}\nfunction M3c(a,b){a.b=b;return a}\nfunction L3c(a,b){a.a=b;return a}\nfunction N3c(a,b){a.c=b;return a}\nfunction O3c(a,b){a.d=b;return a}\nfunction P3c(a,b){a.e=b;return a}\nfunction Q3c(a,b){a.f=b;return a}\nfunction b4c(a,b){a.a=b;return a}\nfunction c4c(a,b){a.b=b;return a}\nfunction d4c(a,b){a.c=b;return a}\nfunction z5c(a,b){a.c=b;return a}\nfunction y5c(a,b){a.b=b;return a}\nfunction A5c(a,b){a.d=b;return a}\nfunction B5c(a,b){a.e=b;return a}\nfunction C5c(a,b){a.f=b;return a}\nfunction D5c(a,b){a.g=b;return a}\nfunction E5c(a,b){a.a=b;return a}\nfunction F5c(a,b){a.i=b;return a}\nfunction G5c(a,b){a.j=b;return a}\nfunction Vdd(a,b){a.k=b;return a}\nfunction Wdd(a,b){a.j=b;return a}\nfunction ykc(a,b){gkc();F0b(b,a)}\nfunction T$c(a,b,c){R$c(a.a,b,c)}\nfunction RGc(a){cEc.call(this,a)}\nfunction iHc(a){cEc.call(this,a)}\nfunction t7c(a){Qsb.call(this,a)}\nfunction aPb(a){_Ob.call(this,a)}\nfunction Ixd(a){zud.call(this,a)}\nfunction dCd(a){ZBd.call(this,a)}\nfunction fCd(a){ZBd.call(this,a)}\nfunction p_b(){q_b.call(this,'')}\nfunction d7c(){this.a=0;this.b=0}\nfunction aPc(){this.b=0;this.a=0}\nfunction NJd(a,b){a.b=0;DId(a,b)}\nfunction X1d(a,b){a.c=b;a.b=true}\nfunction Oc(a,b){return a.c._b(b)}\nfunction gdb(a){return a.e&&a.e()}\nfunction Vd(a){return !a?null:a.d}\nfunction sn(a,b){return Gv(a.b,b)}\nfunction Fv(a){return !a?null:a.g}\nfunction Kv(a){return !a?null:a.i}\nfunction hdb(a){fdb(a);return a.o}\nfunction Fhd(){Fhd=ccb;Ehd=ond()}\nfunction Hhd(){Hhd=ccb;Ghd=Cod()}\nfunction LFd(){LFd=ccb;KFd=qZd()}\nfunction p8d(){p8d=ccb;o8d=Y9d()}\nfunction r8d(){r8d=ccb;q8d=dae()}\nfunction mvd(){mvd=ccb;lvd=n4c()}\nfunction Srb(){throw vbb(new bgb)}\nfunction enb(){throw vbb(new bgb)}\nfunction fnb(){throw vbb(new bgb)}\nfunction gnb(){throw vbb(new bgb)}\nfunction jnb(){throw vbb(new bgb)}\nfunction Cnb(){throw vbb(new bgb)}\nfunction Uqb(a){this.a=new Mqb(a)}\nfunction tgb(a){lgb();ngb(this,a)}\nfunction Hxb(a){this.a=new Qwb(a)}\nfunction _ub(a,b){while(a.ye(b));}\nfunction Sub(a,b){while(a.sd(b));}\nfunction Bfb(a,b){a.a+=b;return a}\nfunction Cfb(a,b){a.a+=b;return a}\nfunction Ffb(a,b){a.a+=b;return a}\nfunction Lfb(a,b){a.a+=b;return a}\nfunction WAb(a){Tzb(a);return a.a}\nfunction Wsb(a){return a.b!=a.d.c}\nfunction pD(a){return a.l|a.m<<22}\nfunction aIc(a,b){return a.d[b.p]}\nfunction h2c(a,b){return c2c(a,b)}\nfunction cCb(a,b,c){a.splice(b,c)}\nfunction WHb(a){a.c?VHb(a):XHb(a)}\nfunction jVc(a){this.a=0;this.b=a}\nfunction ZUc(){this.a=new L2c(K$)}\nfunction tRc(){this.b=new L2c(h$)}\nfunction Q$c(){this.b=new L2c(J_)}\nfunction d_c(){this.b=new L2c(J_)}\nfunction OCd(){throw vbb(new bgb)}\nfunction PCd(){throw vbb(new bgb)}\nfunction QCd(){throw vbb(new bgb)}\nfunction RCd(){throw vbb(new bgb)}\nfunction SCd(){throw vbb(new bgb)}\nfunction TCd(){throw vbb(new bgb)}\nfunction UCd(){throw vbb(new bgb)}\nfunction VCd(){throw vbb(new bgb)}\nfunction WCd(){throw vbb(new bgb)}\nfunction XCd(){throw vbb(new bgb)}\nfunction ahe(){throw vbb(new utb)}\nfunction bhe(){throw vbb(new utb)}\nfunction Rge(a){this.a=new ege(a)}\nfunction ege(a){dge(this,a,Vee())}\nfunction Fhe(a){return !a||Ehe(a)}\nfunction dde(a){return $ce[a]!=-1}\nfunction Iz(){xz!=0&&(xz=0);zz=-1}\nfunction Ybb(){Wbb==null&&(Wbb=[])}\nfunction ONd(a,b){Rxd(ZKd(a.a),b)}\nfunction TNd(a,b){Rxd(ZKd(a.a),b)}\nfunction Yf(a,b){zf.call(this,a,b)}\nfunction $f(a,b){Yf.call(this,a,b)}\nfunction Hf(a,b){this.b=a;this.c=b}\nfunction rk(a,b){this.b=a;this.a=b}\nfunction ek(a,b){this.a=a;this.b=b}\nfunction gk(a,b){this.a=a;this.b=b}\nfunction pk(a,b){this.a=a;this.b=b}\nfunction yk(a,b){this.a=a;this.b=b}\nfunction Ak(a,b){this.a=a;this.b=b}\nfunction Fj(a,b){this.a=a;this.b=b}\nfunction _j(a,b){this.a=a;this.b=b}\nfunction dr(a,b){this.a=a;this.b=b}\nfunction zr(a,b){this.b=a;this.a=b}\nfunction So(a,b){this.b=a;this.a=b}\nfunction qp(a,b){this.b=a;this.a=b}\nfunction $q(a,b){this.b=a;this.a=b}\nfunction $r(a,b){this.f=a;this.g=b}\nfunction ne(a,b){this.e=a;this.d=b}\nfunction Wo(a,b){this.g=a;this.i=b}\nfunction bu(a,b){this.a=a;this.b=b}\nfunction qu(a,b){this.a=a;this.f=b}\nfunction qv(a,b){this.b=a;this.c=b}\nfunction ox(a,b){this.a=a;this.b=b}\nfunction Px(a,b){this.a=a;this.b=b}\nfunction mC(a,b){this.a=a;this.b=b}\nfunction Wc(a){Lb(a.dc());this.c=a}\nfunction rf(a){this.b=BD(Qb(a),83)}\nfunction Zv(a){this.a=BD(Qb(a),83)}\nfunction dv(a){this.a=BD(Qb(a),15)}\nfunction $u(a){this.a=BD(Qb(a),15)}\nfunction Br(a){this.b=BD(Qb(a),47)}\nfunction eB(){this.q=new $wnd.Date}\nfunction Zfb(){Zfb=ccb;Yfb=new jcb}\nfunction Emb(){Emb=ccb;Dmb=new Fmb}\nfunction Vhb(a){return a.f.c+a.g.c}\nfunction hnb(a,b){return a.b.Hc(b)}\nfunction inb(a,b){return a.b.Ic(b)}\nfunction knb(a,b){return a.b.Qc(b)}\nfunction Dob(a,b){return a.b.Hc(b)}\nfunction dob(a,b){return a.c.uc(b)}\nfunction Rqb(a,b){return a.a._b(b)}\nfunction fob(a,b){return pb(a.c,b)}\nfunction jt(a,b){return Mhb(a.b,b)}\nfunction Lp(a,b){return a>b&&b0}\nfunction Gbb(a,b){return ybb(a,b)<0}\nfunction Crb(a,b){return a.a.get(b)}\nfunction icb(b,a){return a.split(b)}\nfunction Vrb(a,b){return Mhb(a.e,b)}\nfunction Nvb(a){return uCb(a),false}\nfunction Rub(a){Kub.call(this,a,21)}\nfunction wcb(a,b){Zy.call(this,a,b)}\nfunction mxb(a,b){$r.call(this,a,b)}\nfunction Gyb(a,b){$r.call(this,a,b)}\nfunction zx(a){yx();Wn.call(this,a)}\nfunction zlb(a,b){Dlb(a,a.length,b)}\nfunction Alb(a,b){Flb(a,a.length,b)}\nfunction ABb(a,b,c){b.ud(a.a.Ge(c))}\nfunction uBb(a,b,c){b.we(a.a.Fe(c))}\nfunction GBb(a,b,c){b.td(a.a.Kb(c))}\nfunction Zq(a,b,c){a.Mb(c)&&b.td(c)}\nfunction aCb(a,b,c){a.splice(b,0,c)}\nfunction lDb(a,b){return uqb(a.e,b)}\nfunction pjb(a,b){this.d=a;this.e=b}\nfunction kqb(a,b){this.b=a;this.a=b}\nfunction VBb(a,b){this.b=a;this.a=b}\nfunction BEb(a,b){this.b=a;this.a=b}\nfunction sBb(a,b){this.a=a;this.b=b}\nfunction yBb(a,b){this.a=a;this.b=b}\nfunction EBb(a,b){this.a=a;this.b=b}\nfunction KBb(a,b){this.a=a;this.b=b}\nfunction aDb(a,b){this.a=a;this.b=b}\nfunction tMb(a,b){this.b=a;this.a=b}\nfunction oOb(a,b){this.b=a;this.a=b}\nfunction SOb(a,b){$r.call(this,a,b)}\nfunction SMb(a,b){$r.call(this,a,b)}\nfunction NEb(a,b){$r.call(this,a,b)}\nfunction VEb(a,b){$r.call(this,a,b)}\nfunction sFb(a,b){$r.call(this,a,b)}\nfunction hHb(a,b){$r.call(this,a,b)}\nfunction OHb(a,b){$r.call(this,a,b)}\nfunction FIb(a,b){$r.call(this,a,b)}\nfunction wLb(a,b){$r.call(this,a,b)}\nfunction YRb(a,b){$r.call(this,a,b)}\nfunction zTb(a,b){$r.call(this,a,b)}\nfunction rUb(a,b){$r.call(this,a,b)}\nfunction oWb(a,b){$r.call(this,a,b)}\nfunction SXb(a,b){$r.call(this,a,b)}\nfunction k0b(a,b){$r.call(this,a,b)}\nfunction z5b(a,b){$r.call(this,a,b)}\nfunction T8b(a,b){$r.call(this,a,b)}\nfunction ibc(a,b){$r.call(this,a,b)}\nfunction Cec(a,b){this.a=a;this.b=b}\nfunction rfc(a,b){this.a=a;this.b=b}\nfunction Rfc(a,b){this.a=a;this.b=b}\nfunction Tfc(a,b){this.a=a;this.b=b}\nfunction bgc(a,b){this.a=a;this.b=b}\nfunction ngc(a,b){this.a=a;this.b=b}\nfunction Qhc(a,b){this.a=a;this.b=b}\nfunction $hc(a,b){this.a=a;this.b=b}\nfunction Z0b(a,b){this.a=a;this.b=b}\nfunction ZVb(a,b){this.b=a;this.a=b}\nfunction Dfc(a,b){this.b=a;this.a=b}\nfunction dgc(a,b){this.b=a;this.a=b}\nfunction Bmc(a,b){this.b=a;this.a=b}\nfunction cWb(a,b){this.c=a;this.d=b}\nfunction I$b(a,b){this.e=a;this.d=b}\nfunction Unc(a,b){this.a=a;this.b=b}\nfunction Oic(a,b){this.b=b;this.c=a}\nfunction Bjc(a,b){$r.call(this,a,b)}\nfunction Yjc(a,b){$r.call(this,a,b)}\nfunction Gkc(a,b){$r.call(this,a,b)}\nfunction Bpc(a,b){$r.call(this,a,b)}\nfunction Jpc(a,b){$r.call(this,a,b)}\nfunction Tpc(a,b){$r.call(this,a,b)}\nfunction cqc(a,b){$r.call(this,a,b)}\nfunction oqc(a,b){$r.call(this,a,b)}\nfunction yqc(a,b){$r.call(this,a,b)}\nfunction Hqc(a,b){$r.call(this,a,b)}\nfunction Uqc(a,b){$r.call(this,a,b)}\nfunction arc(a,b){$r.call(this,a,b)}\nfunction mrc(a,b){$r.call(this,a,b)}\nfunction zrc(a,b){$r.call(this,a,b)}\nfunction Prc(a,b){$r.call(this,a,b)}\nfunction Yrc(a,b){$r.call(this,a,b)}\nfunction fsc(a,b){$r.call(this,a,b)}\nfunction nsc(a,b){$r.call(this,a,b)}\nfunction nzc(a,b){$r.call(this,a,b)}\nfunction zzc(a,b){$r.call(this,a,b)}\nfunction Kzc(a,b){$r.call(this,a,b)}\nfunction Xzc(a,b){$r.call(this,a,b)}\nfunction Dtc(a,b){$r.call(this,a,b)}\nfunction lAc(a,b){$r.call(this,a,b)}\nfunction uAc(a,b){$r.call(this,a,b)}\nfunction CAc(a,b){$r.call(this,a,b)}\nfunction LAc(a,b){$r.call(this,a,b)}\nfunction UAc(a,b){$r.call(this,a,b)}\nfunction aBc(a,b){$r.call(this,a,b)}\nfunction uBc(a,b){$r.call(this,a,b)}\nfunction DBc(a,b){$r.call(this,a,b)}\nfunction MBc(a,b){$r.call(this,a,b)}\nfunction sGc(a,b){$r.call(this,a,b)}\nfunction VIc(a,b){$r.call(this,a,b)}\nfunction EIc(a,b){this.b=a;this.a=b}\nfunction qKc(a,b){this.a=a;this.b=b}\nfunction GKc(a,b){this.a=a;this.b=b}\nfunction lLc(a,b){this.a=a;this.b=b}\nfunction mMc(a,b){this.a=a;this.b=b}\nfunction fMc(a,b){$r.call(this,a,b)}\nfunction ZLc(a,b){$r.call(this,a,b)}\nfunction ZMc(a,b){this.b=a;this.d=b}\nfunction IOc(a,b){$r.call(this,a,b)}\nfunction GQc(a,b){$r.call(this,a,b)}\nfunction PQc(a,b){this.a=a;this.b=b}\nfunction RQc(a,b){this.a=a;this.b=b}\nfunction ARc(a,b){$r.call(this,a,b)}\nfunction rSc(a,b){$r.call(this,a,b)}\nfunction TTc(a,b){$r.call(this,a,b)}\nfunction _Tc(a,b){$r.call(this,a,b)}\nfunction RUc(a,b){$r.call(this,a,b)}\nfunction uVc(a,b){$r.call(this,a,b)}\nfunction hWc(a,b){$r.call(this,a,b)}\nfunction rWc(a,b){$r.call(this,a,b)}\nfunction kXc(a,b){$r.call(this,a,b)}\nfunction uXc(a,b){$r.call(this,a,b)}\nfunction AYc(a,b){$r.call(this,a,b)}\nfunction l$c(a,b){$r.call(this,a,b)}\nfunction Z$c(a,b){$r.call(this,a,b)}\nfunction D_c(a,b){$r.call(this,a,b)}\nfunction O_c(a,b){$r.call(this,a,b)}\nfunction c1c(a,b){$r.call(this,a,b)}\nfunction cVb(a,b){return uqb(a.c,b)}\nfunction nnc(a,b){return uqb(b.b,a)}\nfunction x1c(a,b){return -a.b.Je(b)}\nfunction D3c(a,b){return uqb(a.g,b)}\nfunction O5c(a,b){$r.call(this,a,b)}\nfunction a6c(a,b){$r.call(this,a,b)}\nfunction m2c(a,b){this.a=a;this.b=b}\nfunction W2c(a,b){this.a=a;this.b=b}\nfunction f7c(a,b){this.a=a;this.b=b}\nfunction G7c(a,b){$r.call(this,a,b)}\nfunction j8c(a,b){$r.call(this,a,b)}\nfunction iad(a,b){$r.call(this,a,b)}\nfunction rad(a,b){$r.call(this,a,b)}\nfunction Bad(a,b){$r.call(this,a,b)}\nfunction Nad(a,b){$r.call(this,a,b)}\nfunction ibd(a,b){$r.call(this,a,b)}\nfunction tbd(a,b){$r.call(this,a,b)}\nfunction Ibd(a,b){$r.call(this,a,b)}\nfunction Ubd(a,b){$r.call(this,a,b)}\nfunction gcd(a,b){$r.call(this,a,b)}\nfunction scd(a,b){$r.call(this,a,b)}\nfunction Ycd(a,b){$r.call(this,a,b)}\nfunction udd(a,b){$r.call(this,a,b)}\nfunction Jdd(a,b){$r.call(this,a,b)}\nfunction Eed(a,b){$r.call(this,a,b)}\nfunction bfd(a,b){this.a=a;this.b=b}\nfunction dfd(a,b){this.a=a;this.b=b}\nfunction ffd(a,b){this.a=a;this.b=b}\nfunction Kfd(a,b){this.a=a;this.b=b}\nfunction Mfd(a,b){this.a=a;this.b=b}\nfunction Ofd(a,b){this.a=a;this.b=b}\nfunction vgd(a,b){this.a=a;this.b=b}\nfunction qgd(a,b){$r.call(this,a,b)}\nfunction jrd(a,b){this.a=a;this.b=b}\nfunction krd(a,b){this.a=a;this.b=b}\nfunction mrd(a,b){this.a=a;this.b=b}\nfunction nrd(a,b){this.a=a;this.b=b}\nfunction qrd(a,b){this.a=a;this.b=b}\nfunction rrd(a,b){this.a=a;this.b=b}\nfunction srd(a,b){this.b=a;this.a=b}\nfunction trd(a,b){this.b=a;this.a=b}\nfunction Drd(a,b){this.b=a;this.a=b}\nfunction Frd(a,b){this.b=a;this.a=b}\nfunction Hrd(a,b){this.a=a;this.b=b}\nfunction Jrd(a,b){this.a=a;this.b=b}\nfunction Ord(a,b){Xqd(a.a,BD(b,56))}\nfunction BIc(a,b){gIc(a.a,BD(b,11))}\nfunction fIc(a,b){FHc();return b!=a}\nfunction Arb(){wrb();return new vrb}\nfunction CMc(){wMc();this.b=new Tqb}\nfunction NNc(){FNc();this.a=new Tqb}\nfunction eCc(){ZBc();aCc.call(this)}\nfunction Dsd(a,b){$r.call(this,a,b)}\nfunction Urd(a,b){this.a=a;this.b=b}\nfunction Wrd(a,b){this.a=a;this.b=b}\nfunction kGd(a,b){this.a=a;this.b=b}\nfunction nGd(a,b){this.a=a;this.b=b}\nfunction bUd(a,b){this.a=a;this.b=b}\nfunction zVd(a,b){this.a=a;this.b=b}\nfunction C1d(a,b){this.d=a;this.b=b}\nfunction MLd(a,b){this.d=a;this.e=b}\nfunction Wud(a,b){this.f=a;this.c=b}\nfunction f7d(a,b){this.b=a;this.c=b}\nfunction _zd(a,b){this.i=a;this.g=b}\nfunction Y1d(a,b){this.e=a;this.a=b}\nfunction c8d(a,b){this.a=a;this.b=b}\nfunction $Id(a,b){a.i=null;_Id(a,b)}\nfunction ivd(a,b){!!a&&Rhb(cvd,a,b)}\nfunction hCd(a,b){return qAd(a.a,b)}\nfunction e7d(a){return R2d(a.c,a.b)}\nfunction Wd(a){return !a?null:a.dd()}\nfunction PD(a){return a==null?null:a}\nfunction KD(a){return typeof a===Khe}\nfunction LD(a){return typeof a===Lhe}\nfunction ND(a){return typeof a===Mhe}\nfunction Em(a,b){return a.Hd().Xb(b)}\nfunction Kq(a,b){return hr(a.Kc(),b)}\nfunction Bbb(a,b){return ybb(a,b)==0}\nfunction Ebb(a,b){return ybb(a,b)>=0}\nfunction Kbb(a,b){return ybb(a,b)!=0}\nfunction Jdb(a){return ''+(uCb(a),a)}\nfunction pfb(a,b){return a.substr(b)}\nfunction cg(a){ag(a);return a.d.gc()}\nfunction oVb(a){pVb(a,a.c);return a}\nfunction RD(a){CCb(a==null);return a}\nfunction Dfb(a,b){a.a+=''+b;return a}\nfunction Efb(a,b){a.a+=''+b;return a}\nfunction Nfb(a,b){a.a+=''+b;return a}\nfunction Pfb(a,b){a.a+=''+b;return a}\nfunction Qfb(a,b){a.a+=''+b;return a}\nfunction Mfb(a,b){return a.a+=''+b,a}\nfunction Esb(a,b){Gsb(a,b,a.a,a.a.a)}\nfunction Fsb(a,b){Gsb(a,b,a.c.b,a.c)}\nfunction Mqd(a,b,c){Rpd(b,kqd(a,c))}\nfunction Nqd(a,b,c){Rpd(b,kqd(a,c))}\nfunction Dhe(a,b){Hhe(new Fyd(a),b)}\nfunction cB(a,b){a.q.setTime(Sbb(b))}\nfunction fvb(a,b){bvb.call(this,a,b)}\nfunction jvb(a,b){bvb.call(this,a,b)}\nfunction nvb(a,b){bvb.call(this,a,b)}\nfunction Nqb(a){Uhb(this);Ld(this,a)}\nfunction wmb(a){tCb(a,0);return null}\nfunction X6c(a){a.a=0;a.b=0;return a}\nfunction f3c(a,b){a.a=b.g+1;return a}\nfunction PJc(a,b){return a.j[b.p]==2}\nfunction _Pb(a){return VPb(BD(a,79))}\nfunction yJb(){yJb=ccb;xJb=as(wJb())}\nfunction Y8b(){Y8b=ccb;X8b=as(W8b())}\nfunction mt(){this.b=new Mqb(Cv(12))}\nfunction Otb(){this.b=0;this.a=false}\nfunction Wtb(){this.b=0;this.a=false}\nfunction sl(a){this.a=a;ol.call(this)}\nfunction vl(a){this.a=a;ol.call(this)}\nfunction Nsd(a,b){Msd.call(this,a,b)}\nfunction $zd(a,b){Cyd.call(this,a,b)}\nfunction nNd(a,b){_zd.call(this,a,b)}\nfunction s4d(a,b){p4d.call(this,a,b)}\nfunction w4d(a,b){qRd.call(this,a,b)}\nfunction rEd(a,b){pEd();Rhb(oEd,a,b)}\nfunction lcb(a,b){return qfb(a.a,0,b)}\nfunction ww(a,b){return a.a.a.a.cc(b)}\nfunction mb(a,b){return PD(a)===PD(b)}\nfunction Mdb(a,b){return Kdb(a.a,b.a)}\nfunction $db(a,b){return beb(a.a,b.a)}\nfunction seb(a,b){return ueb(a.a,b.a)}\nfunction hfb(a,b){return a.indexOf(b)}\nfunction Ny(a,b){return a==b?0:a?1:-1}\nfunction kB(a){return a<10?'0'+a:''+a}\nfunction Mq(a){return Qb(a),new sl(a)}\nfunction SC(a){return TC(a.l,a.m,a.h)}\nfunction Hdb(a){return QD((uCb(a),a))}\nfunction Idb(a){return QD((uCb(a),a))}\nfunction NIb(a,b){return beb(a.g,b.g)}\nfunction Fbb(a){return typeof a===Lhe}\nfunction mWb(a){return a==hWb||a==kWb}\nfunction nWb(a){return a==hWb||a==iWb}\nfunction G1b(a){return Jkb(a.b.b,a,0)}\nfunction lrb(a){this.a=Arb();this.b=a}\nfunction Frb(a){this.a=Arb();this.b=a}\nfunction swb(a,b){Ekb(a.a,b);return b}\nfunction Z1c(a,b){Ekb(a.c,b);return a}\nfunction E2c(a,b){d3c(a.a,b);return a}\nfunction _gc(a,b){Hgc();return b.a+=a}\nfunction bhc(a,b){Hgc();return b.a+=a}\nfunction ahc(a,b){Hgc();return b.c+=a}\nfunction Nlb(a,b){Klb(a,0,a.length,b)}\nfunction zsb(){Wqb.call(this,new $rb)}\nfunction I_b(){B_b.call(this,0,0,0,0)}\nfunction I6c(){J6c.call(this,0,0,0,0)}\nfunction g7c(a){this.a=a.a;this.b=a.b}\nfunction fad(a){return a==aad||a==bad}\nfunction gad(a){return a==dad||a==_9c}\nfunction Jzc(a){return a==Fzc||a==Ezc}\nfunction fcd(a){return a!=bcd&&a!=ccd}\nfunction oid(a){return a.Lg()&&a.Mg()}\nfunction Gfd(a){return Kkd(BD(a,118))}\nfunction k3c(a){return d3c(new j3c,a)}\nfunction y2d(a,b){return new p4d(b,a)}\nfunction z2d(a,b){return new p4d(b,a)}\nfunction ukd(a,b,c){vkd(a,b);wkd(a,c)}\nfunction _kd(a,b,c){cld(a,b);ald(a,c)}\nfunction bld(a,b,c){dld(a,b);eld(a,c)}\nfunction gmd(a,b,c){hmd(a,b);imd(a,c)}\nfunction nmd(a,b,c){omd(a,b);pmd(a,c)}\nfunction iKd(a,b){$Jd(a,b);_Jd(a,a.D)}\nfunction _ud(a){Wud.call(this,a,true)}\nfunction Xg(a,b,c){Vg.call(this,a,b,c)}\nfunction Ygb(a){Hgb();Zgb.call(this,a)}\nfunction rxb(){mxb.call(this,'Head',1)}\nfunction wxb(){mxb.call(this,'Tail',3)}\nfunction Ckb(a){a.c=KC(SI,Uhe,1,0,5,1)}\nfunction Vjb(a){a.a=KC(SI,Uhe,1,8,5,1)}\nfunction MGb(a){Hkb(a.xf(),new QGb(a))}\nfunction xtb(a){return a!=null?tb(a):0}\nfunction b2b(a,b){return ntd(b,mpd(a))}\nfunction c2b(a,b){return ntd(b,mpd(a))}\nfunction dAb(a,b){return a[a.length]=b}\nfunction gAb(a,b){return a[a.length]=b}\nfunction Vq(a){return lr(a.b.Kc(),a.a)}\nfunction dqd(a,b){return _o(qo(a.d),b)}\nfunction eqd(a,b){return _o(qo(a.g),b)}\nfunction fqd(a,b){return _o(qo(a.j),b)}\nfunction Osd(a,b){Msd.call(this,a.b,b)}\nfunction q0b(a){B_b.call(this,a,a,a,a)}\nfunction HOb(a){a.b&&LOb(a);return a.a}\nfunction IOb(a){a.b&&LOb(a);return a.c}\nfunction uyb(a,b){if(lyb){return}a.b=b}\nfunction lzd(a,b,c){NC(a,b,c);return c}\nfunction mBc(a,b,c){NC(a.c[b.g],b.g,c)}\nfunction _Hd(a,b,c){BD(a.c,69).Xh(b,c)}\nfunction wfd(a,b,c){bld(c,c.i+a,c.j+b)}\nfunction UOd(a,b){wtd(VKd(a.a),XOd(b))}\nfunction bTd(a,b){wtd(QSd(a.a),eTd(b))}\nfunction Lge(a){wfe();xfe.call(this,a)}\nfunction CAd(a){return a==null?0:tb(a)}\nfunction fNc(){fNc=ccb;eNc=new Rpb(v1)}\nfunction h0d(){h0d=ccb;new i0d;new Rkb}\nfunction i0d(){new Lqb;new Lqb;new Lqb}\nfunction GA(){GA=ccb;fA();FA=new Lqb}\nfunction Iy(){Iy=ccb;$wnd.Math.log(2)}\nfunction UVd(){UVd=ccb;TVd=(AFd(),zFd)}\nfunction _ge(){throw vbb(new cgb(Cxe))}\nfunction ohe(){throw vbb(new cgb(Cxe))}\nfunction che(){throw vbb(new cgb(Dxe))}\nfunction rhe(){throw vbb(new cgb(Dxe))}\nfunction Mg(a){this.a=a;Gg.call(this,a)}\nfunction up(a){this.a=a;rf.call(this,a)}\nfunction Bp(a){this.a=a;rf.call(this,a)}\nfunction Okb(a,b){Mlb(a.c,a.c.length,b)}\nfunction llb(a){return a.ab?1:0}\nfunction Deb(a,b){return ybb(a,b)>0?a:b}\nfunction TC(a,b,c){return {l:a,m:b,h:c}}\nfunction Ctb(a,b){a.a!=null&&BIc(b,a.a)}\nfunction Csb(a){a.a=new jtb;a.c=new jtb}\nfunction hDb(a){this.b=a;this.a=new Rkb}\nfunction dOb(a){this.b=new pOb;this.a=a}\nfunction q_b(a){n_b.call(this);this.a=a}\nfunction txb(){mxb.call(this,'Range',2)}\nfunction bUb(){ZTb();this.a=new L2c(zP)}\nfunction Bh(a,b){Qb(b);Ah(a).Jc(new Vw)}\nfunction fKc(a,b){FJc();return b.n.b+=a}\nfunction Tgc(a,b,c){return Rhb(a.g,c,b)}\nfunction LJc(a,b,c){return Rhb(a.k,c,b)}\nfunction r1c(a,b){return Rhb(a.a,b.a,b)}\nfunction jBc(a,b,c){return hBc(b,c,a.c)}\nfunction E6c(a){return new f7c(a.c,a.d)}\nfunction F6c(a){return new f7c(a.c,a.d)}\nfunction R6c(a){return new f7c(a.a,a.b)}\nfunction CQd(a,b){return hA(a.a,b,null)}\nfunction fec(a){QZb(a,null);RZb(a,null)}\nfunction AOc(a){BOc(a,null);COc(a,null)}\nfunction u4d(){qRd.call(this,null,null)}\nfunction y4d(){RRd.call(this,null,null)}\nfunction a7d(a){this.a=a;Lqb.call(this)}\nfunction Pp(a){this.b=(mmb(),new iob(a))}\nfunction Py(a){a.j=KC(VI,nie,310,0,0,1)}\nfunction oAd(a,b,c){a.c.Vc(b,BD(c,133))}\nfunction GAd(a,b,c){a.c.ji(b,BD(c,133))}\nfunction JLd(a,b){Uxd(a);a.Gc(BD(b,15))}\nfunction b7d(a,b){return t2d(a.c,a.b,b)}\nfunction Bv(a,b){return new Qv(a.Kc(),b)}\nfunction Lq(a,b){return rr(a.Kc(),b)!=-1}\nfunction Sqb(a,b){return a.a.Bc(b)!=null}\nfunction pr(a){return a.Ob()?a.Pb():null}\nfunction yfb(a){return zfb(a,0,a.length)}\nfunction JD(a,b){return a!=null&&AD(a,b)}\nfunction $A(a,b){a.q.setHours(b);YA(a,b)}\nfunction Yrb(a,b){if(a.c){jsb(b);isb(b)}}\nfunction nk(a,b,c){BD(a.Kb(c),164).Nb(b)}\nfunction RJc(a,b,c){SJc(a,b,c);return c}\nfunction Eub(a,b,c){a.a=b^1502;a.b=c^kke}\nfunction xHb(a,b,c){return a.a[b.g][c.g]}\nfunction REc(a,b){return a.a[b.c.p][b.p]}\nfunction aEc(a,b){return a.e[b.c.p][b.p]}\nfunction tEc(a,b){return a.c[b.c.p][b.p]}\nfunction OJc(a,b){return a.j[b.p]=aKc(b)}\nfunction k5c(a,b){return cfb(a.f,b.tg())}\nfunction Isd(a,b){return cfb(a.b,b.tg())}\nfunction Sfd(a,b){return a.a0?b*b/a:b*b*100}\nfunction CRb(a,b){return a>0?b/(a*a):b*100}\nfunction G2c(a,b,c){return Ekb(b,I2c(a,c))}\nfunction t3c(a,b,c){p3c();a.Xe(b)&&c.td(a)}\nfunction St(a,b,c){var d;d=a.Zc(b);d.Rb(c)}\nfunction O6c(a,b,c){a.a+=b;a.b+=c;return a}\nfunction Z6c(a,b,c){a.a*=b;a.b*=c;return a}\nfunction b7c(a,b,c){a.a-=b;a.b-=c;return a}\nfunction a7c(a,b){a.a=b.a;a.b=b.b;return a}\nfunction V6c(a){a.a=-a.a;a.b=-a.b;return a}\nfunction Dic(a){this.c=a;this.a=1;this.b=1}\nfunction xed(a){this.c=a;dld(a,0);eld(a,0)}\nfunction u7c(a){Psb.call(this);n7c(this,a)}\nfunction AXb(a){xXb();yXb(this);this.mf(a)}\nfunction GRd(a,b){nRd();qRd.call(this,a,b)}\nfunction dSd(a,b){LRd();RRd.call(this,a,b)}\nfunction hSd(a,b){LRd();RRd.call(this,a,b)}\nfunction fSd(a,b){LRd();dSd.call(this,a,b)}\nfunction sId(a,b,c){dId.call(this,a,b,c,2)}\nfunction zXd(a,b){UVd();nXd.call(this,a,b)}\nfunction BXd(a,b){UVd();zXd.call(this,a,b)}\nfunction DXd(a,b){UVd();zXd.call(this,a,b)}\nfunction FXd(a,b){UVd();DXd.call(this,a,b)}\nfunction PXd(a,b){UVd();nXd.call(this,a,b)}\nfunction RXd(a,b){UVd();PXd.call(this,a,b)}\nfunction XXd(a,b){UVd();nXd.call(this,a,b)}\nfunction pAd(a,b){return a.c.Fc(BD(b,133))}\nfunction w1d(a,b,c){return V1d(p1d(a,b),c)}\nfunction N2d(a,b,c){return b.Qk(a.e,a.c,c)}\nfunction P2d(a,b,c){return b.Rk(a.e,a.c,c)}\nfunction a3d(a,b){return xid(a.e,BD(b,49))}\nfunction aTd(a,b,c){vtd(QSd(a.a),b,eTd(c))}\nfunction TOd(a,b,c){vtd(VKd(a.a),b,XOd(c))}\nfunction ypb(a,b){b.$modCount=a.$modCount}\nfunction MUc(){MUc=ccb;LUc=new Lsd('root')}\nfunction LCd(){LCd=ccb;KCd=new lDd;new NDd}\nfunction KVc(){this.a=new Hp;this.b=new Hp}\nfunction FUd(){hJd.call(this);this.Bb|=Tje}\nfunction t_c(){$r.call(this,'GROW_TREE',0)}\nfunction C9d(a){return a==null?null:cde(a)}\nfunction G9d(a){return a==null?null:jde(a)}\nfunction J9d(a){return a==null?null:fcb(a)}\nfunction K9d(a){return a==null?null:fcb(a)}\nfunction fdb(a){if(a.o!=null){return}vdb(a)}\nfunction DD(a){CCb(a==null||KD(a));return a}\nfunction ED(a){CCb(a==null||LD(a));return a}\nfunction GD(a){CCb(a==null||ND(a));return a}\nfunction gB(a){this.q=new $wnd.Date(Sbb(a))}\nfunction Mf(a,b){this.c=a;ne.call(this,a,b)}\nfunction Sf(a,b){this.a=a;Mf.call(this,a,b)}\nfunction Hg(a,b){this.d=a;Dg(this);this.b=b}\nfunction bAb(a,b){Vzb.call(this,a);this.a=b}\nfunction vAb(a,b){Vzb.call(this,a);this.a=b}\nfunction sNb(a){pNb.call(this,0,0);this.f=a}\nfunction Vg(a,b,c){dg.call(this,a,b,c,null)}\nfunction Yg(a,b,c){dg.call(this,a,b,c,null)}\nfunction Pxb(a,b,c){return a.ue(b,c)<=0?c:b}\nfunction Qxb(a,b,c){return a.ue(b,c)<=0?b:c}\nfunction g4c(a,b){return BD(Wrb(a.b,b),149)}\nfunction i4c(a,b){return BD(Wrb(a.c,b),229)}\nfunction wic(a){return BD(Ikb(a.a,a.b),287)}\nfunction B6c(a){return new f7c(a.c,a.d+a.a)}\nfunction eLc(a){return FJc(),Jzc(BD(a,197))}\nfunction $Jb(){$Jb=ccb;ZJb=pqb((tdd(),sdd))}\nfunction fOb(a,b){b.a?gOb(a,b):Fxb(a.a,b.b)}\nfunction qyb(a,b){if(lyb){return}Ekb(a.a,b)}\nfunction F2b(a,b){x2b();return f_b(b.d.i,a)}\nfunction _9b(a,b){I9b();return new gac(b,a)}\nfunction _Hb(a,b){ytb(b,lle);a.f=b;return a}\nfunction Kld(a,b,c){c=_hd(a,b,3,c);return c}\nfunction bmd(a,b,c){c=_hd(a,b,6,c);return c}\nfunction kpd(a,b,c){c=_hd(a,b,9,c);return c}\nfunction Cvd(a,b,c){++a.j;a.Ki();Atd(a,b,c)}\nfunction Avd(a,b,c){++a.j;a.Hi(b,a.oi(b,c))}\nfunction bRd(a,b,c){var d;d=a.Zc(b);d.Rb(c)}\nfunction c7d(a,b,c){return C2d(a.c,a.b,b,c)}\nfunction DAd(a,b){return (b&Ohe)%a.d.length}\nfunction Msd(a,b){Lsd.call(this,a);this.a=b}\nfunction uVd(a,b){lVd.call(this,a);this.a=b}\nfunction sYd(a,b){lVd.call(this,a);this.a=b}\nfunction zyd(a,b){this.c=a;zud.call(this,b)}\nfunction YOd(a,b){this.a=a;qOd.call(this,b)}\nfunction fTd(a,b){this.a=a;qOd.call(this,b)}\nfunction Xp(a){this.a=(Xj(a,Jie),new Skb(a))}\nfunction cq(a){this.a=(Xj(a,Jie),new Skb(a))}\nfunction LA(a){!a.a&&(a.a=new VA);return a.a}\nfunction XMb(a){if(a>8){return 0}return a+1}\nfunction Ecb(a,b){Bcb();return a==b?0:a?1:-1}\nfunction Opb(a,b,c){return Npb(a,BD(b,22),c)}\nfunction Bz(a,b,c){return a.apply(b,c);var d}\nfunction Sfb(a,b,c){a.a+=zfb(b,0,c);return a}\nfunction ijb(a,b){var c;c=a.e;a.e=b;return c}\nfunction trb(a,b){var c;c=a[hke];c.call(a,b)}\nfunction urb(a,b){var c;c=a[hke];c.call(a,b)}\nfunction Aib(a,b){a.a.Vc(a.b,b);++a.b;a.c=-1}\nfunction Urb(a){Uhb(a.e);a.d.b=a.d;a.d.a=a.d}\nfunction _f(a){a.b?_f(a.b):a.f.c.zc(a.e,a.d)}\nfunction _Ab(a,b,c){EAb();MBb(a,b.Ce(a.a,c))}\nfunction Bxb(a,b){return Vd(Cwb(a.a,b,true))}\nfunction Cxb(a,b){return Vd(Dwb(a.a,b,true))}\nfunction _Bb(a,b){return eCb(new Array(b),a)}\nfunction HD(a){return String.fromCharCode(a)}\nfunction mz(a){return a==null?null:a.message}\nfunction gRb(){this.a=new Rkb;this.b=new Rkb}\nfunction iTb(){this.a=new MQb;this.b=new tTb}\nfunction tDb(){this.b=new d7c;this.c=new Rkb}\nfunction _Qb(){this.d=new d7c;this.e=new d7c}\nfunction n_b(){this.n=new d7c;this.o=new d7c}\nfunction $Gb(){this.n=new p0b;this.i=new I6c}\nfunction sec(){this.a=new Umc;this.b=new mnc}\nfunction NIc(){this.a=new Rkb;this.d=new Rkb}\nfunction LDc(){this.b=new Tqb;this.a=new Tqb}\nfunction hSc(){this.b=new Lqb;this.a=new Lqb}\nfunction HRc(){this.b=new tRc;this.a=new hRc}\nfunction aHb(){$Gb.call(this);this.a=new d7c}\nfunction Ywb(a){Zwb.call(this,a,(lxb(),hxb))}\nfunction J_b(a,b,c,d){B_b.call(this,a,b,c,d)}\nfunction sqd(a,b,c){c!=null&&kmd(b,Wqd(a,c))}\nfunction tqd(a,b,c){c!=null&&lmd(b,Wqd(a,c))}\nfunction Tod(a,b,c){c=_hd(a,b,11,c);return c}\nfunction P6c(a,b){a.a+=b.a;a.b+=b.b;return a}\nfunction c7c(a,b){a.a-=b.a;a.b-=b.b;return a}\nfunction u7b(a,b){return a.n.a=(uCb(b),b)+10}\nfunction v7b(a,b){return a.n.a=(uCb(b),b)+10}\nfunction dLd(a,b){return b==a||pud(UKd(b),a)}\nfunction PYd(a,b){return Rhb(a.a,b,'')==null}\nfunction E2b(a,b){x2b();return !f_b(b.d.i,a)}\nfunction rjc(a,b){fad(a.f)?sjc(a,b):tjc(a,b)}\nfunction h1d(a,b){var c;c=b.Hh(a.a);return c}\nfunction Cyd(a,b){qcb.call(this,gve+a+mue+b)}\nfunction gUd(a,b,c,d){cUd.call(this,a,b,c,d)}\nfunction Q4d(a,b,c,d){cUd.call(this,a,b,c,d)}\nfunction U4d(a,b,c,d){Q4d.call(this,a,b,c,d)}\nfunction n5d(a,b,c,d){i5d.call(this,a,b,c,d)}\nfunction p5d(a,b,c,d){i5d.call(this,a,b,c,d)}\nfunction v5d(a,b,c,d){i5d.call(this,a,b,c,d)}\nfunction t5d(a,b,c,d){p5d.call(this,a,b,c,d)}\nfunction A5d(a,b,c,d){p5d.call(this,a,b,c,d)}\nfunction y5d(a,b,c,d){v5d.call(this,a,b,c,d)}\nfunction D5d(a,b,c,d){A5d.call(this,a,b,c,d)}\nfunction d6d(a,b,c,d){Y5d.call(this,a,b,c,d)}\nfunction Vp(a,b,c){this.a=a;qc.call(this,b,c)}\nfunction tk(a,b,c){this.c=b;this.b=c;this.a=a}\nfunction ik(a,b,c){return a.d=BD(b.Kb(c),164)}\nfunction j6d(a,b){return a.Aj().Nh().Kh(a,b)}\nfunction h6d(a,b){return a.Aj().Nh().Ih(a,b)}\nfunction Fdb(a,b){return uCb(a),PD(a)===PD(b)}\nfunction dfb(a,b){return uCb(a),PD(a)===PD(b)}\nfunction Dxb(a,b){return Vd(Cwb(a.a,b,false))}\nfunction Exb(a,b){return Vd(Dwb(a.a,b,false))}\nfunction vBb(a,b){return a.b.sd(new yBb(a,b))}\nfunction BBb(a,b){return a.b.sd(new EBb(a,b))}\nfunction HBb(a,b){return a.b.sd(new KBb(a,b))}\nfunction lfb(a,b,c){return a.lastIndexOf(b,c)}\nfunction uTb(a,b,c){return Kdb(a[b.b],a[c.b])}\nfunction RTb(a,b){return yNb(b,(Nyc(),Cwc),a)}\nfunction fmc(a,b){return beb(b.a.d.p,a.a.d.p)}\nfunction emc(a,b){return beb(a.a.d.p,b.a.d.p)}\nfunction _Oc(a,b){return Kdb(a.c-a.s,b.c-b.s)}\nfunction S_b(a){return !a.c?-1:Jkb(a.c.a,a,0)}\nfunction Vxd(a){return a<100?null:new Ixd(a)}\nfunction ecd(a){return a==Zbd||a==_bd||a==$bd}\nfunction zAd(a,b){return JD(b,15)&&Btd(a.c,b)}\nfunction vyb(a,b){if(lyb){return}!!b&&(a.d=b)}\nfunction ujb(a,b){var c;c=b;return !!Awb(a,c)}\nfunction czd(a,b){this.c=a;Pyd.call(this,a,b)}\nfunction fBb(a){this.c=a;nvb.call(this,rie,0)}\nfunction Avb(a,b){Bvb.call(this,a,a.length,b)}\nfunction aId(a,b,c){return BD(a.c,69).lk(b,c)}\nfunction bId(a,b,c){return BD(a.c,69).mk(b,c)}\nfunction O2d(a,b,c){return N2d(a,BD(b,332),c)}\nfunction Q2d(a,b,c){return P2d(a,BD(b,332),c)}\nfunction i3d(a,b,c){return h3d(a,BD(b,332),c)}\nfunction k3d(a,b,c){return j3d(a,BD(b,332),c)}\nfunction tn(a,b){return b==null?null:Hv(a.b,b)}\nfunction Kcb(a){return LD(a)?(uCb(a),a):a.ke()}\nfunction Ldb(a){return !isNaN(a)&&!isFinite(a)}\nfunction Wn(a){Ql();this.a=(mmb(),new zob(a))}\nfunction dIc(a){FHc();this.d=a;this.a=new jkb}\nfunction xqb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction Nrb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction $sb(a,b,c){this.d=a;this.b=c;this.a=b}\nfunction Qsb(a){Csb(this);Osb(this);ye(this,a)}\nfunction Tkb(a){Ckb(this);bCb(this.c,0,a.Pc())}\nfunction Xwb(a){uib(a.a);Kwb(a.c,a.b);a.b=null}\nfunction iyb(a){this.a=a;Zfb();Cbb(Date.now())}\nfunction JCb(){JCb=ccb;GCb=new nb;ICb=new nb}\nfunction ntb(){ntb=ccb;ltb=new otb;mtb=new qtb}\nfunction kzd(){kzd=ccb;jzd=KC(SI,Uhe,1,0,5,1)}\nfunction tGd(){tGd=ccb;sGd=KC(SI,Uhe,1,0,5,1)}\nfunction $Gd(){$Gd=ccb;ZGd=KC(SI,Uhe,1,0,5,1)}\nfunction Ql(){Ql=ccb;new Zl((mmb(),mmb(),jmb))}\nfunction pxb(a){lxb();return es((zxb(),yxb),a)}\nfunction Hyb(a){Fyb();return es((Kyb(),Jyb),a)}\nfunction OEb(a){MEb();return es((REb(),QEb),a)}\nfunction WEb(a){UEb();return es((ZEb(),YEb),a)}\nfunction tFb(a){rFb();return es((wFb(),vFb),a)}\nfunction iHb(a){gHb();return es((lHb(),kHb),a)}\nfunction PHb(a){NHb();return es((SHb(),RHb),a)}\nfunction GIb(a){EIb();return es((JIb(),IIb),a)}\nfunction vJb(a){qJb();return es((yJb(),xJb),a)}\nfunction xLb(a){vLb();return es((ALb(),zLb),a)}\nfunction TMb(a){RMb();return es((WMb(),VMb),a)}\nfunction TOb(a){ROb();return es((WOb(),VOb),a)}\nfunction ePb(a){cPb();return es((hPb(),gPb),a)}\nfunction ZRb(a){XRb();return es((aSb(),_Rb),a)}\nfunction ATb(a){yTb();return es((DTb(),CTb),a)}\nfunction sUb(a){qUb();return es((vUb(),uUb),a)}\nfunction rWb(a){lWb();return es((uWb(),tWb),a)}\nfunction TXb(a){RXb();return es((WXb(),VXb),a)}\nfunction Mb(a,b){if(!a){throw vbb(new Wdb(b))}}\nfunction l0b(a){j0b();return es((o0b(),n0b),a)}\nfunction r0b(a){B_b.call(this,a.d,a.c,a.a,a.b)}\nfunction K_b(a){B_b.call(this,a.d,a.c,a.a,a.b)}\nfunction mKb(a,b,c){this.b=a;this.c=b;this.a=c}\nfunction BZb(a,b,c){this.b=a;this.a=b;this.c=c}\nfunction TNb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction uOb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction S3b(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction Z6b(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction n9b(a,b,c){this.b=a;this.a=b;this.c=c}\nfunction x$b(a,b,c){this.e=b;this.b=a;this.d=c}\nfunction $Ab(a,b,c){EAb();a.a.Od(b,c);return b}\nfunction LGb(a){var b;b=new KGb;b.e=a;return b}\nfunction iLb(a){var b;b=new fLb;b.b=a;return b}\nfunction D6b(){D6b=ccb;B6b=new M6b;C6b=new P6b}\nfunction Hgc(){Hgc=ccb;Fgc=new ghc;Ggc=new ihc}\nfunction jbc(a){gbc();return es((mbc(),lbc),a)}\nfunction Cjc(a){Ajc();return es((Fjc(),Ejc),a)}\nfunction Clc(a){Alc();return es((Flc(),Elc),a)}\nfunction Cpc(a){Apc();return es((Fpc(),Epc),a)}\nfunction Kpc(a){Ipc();return es((Npc(),Mpc),a)}\nfunction Wpc(a){Rpc();return es((Zpc(),Ypc),a)}\nfunction $jc(a){Xjc();return es((bkc(),akc),a)}\nfunction Hkc(a){Fkc();return es((Kkc(),Jkc),a)}\nfunction dqc(a){bqc();return es((gqc(),fqc),a)}\nfunction rqc(a){mqc();return es((uqc(),tqc),a)}\nfunction zqc(a){xqc();return es((Cqc(),Bqc),a)}\nfunction Iqc(a){Gqc();return es((Lqc(),Kqc),a)}\nfunction Vqc(a){Sqc();return es((Yqc(),Xqc),a)}\nfunction brc(a){_qc();return es((erc(),drc),a)}\nfunction nrc(a){lrc();return es((qrc(),prc),a)}\nfunction Arc(a){yrc();return es((Drc(),Crc),a)}\nfunction Qrc(a){Orc();return es((Trc(),Src),a)}\nfunction Zrc(a){Xrc();return es((asc(),_rc),a)}\nfunction gsc(a){esc();return es((jsc(),isc),a)}\nfunction osc(a){msc();return es((rsc(),qsc),a)}\nfunction Etc(a){Ctc();return es((Htc(),Gtc),a)}\nfunction qzc(a){lzc();return es((tzc(),szc),a)}\nfunction Azc(a){xzc();return es((Dzc(),Czc),a)}\nfunction Mzc(a){Izc();return es((Pzc(),Ozc),a)}\nfunction MAc(a){KAc();return es((PAc(),OAc),a)}\nfunction mAc(a){kAc();return es((pAc(),oAc),a)}\nfunction vAc(a){tAc();return es((yAc(),xAc),a)}\nfunction DAc(a){BAc();return es((GAc(),FAc),a)}\nfunction VAc(a){TAc();return es((YAc(),XAc),a)}\nfunction $zc(a){Vzc();return es((bAc(),aAc),a)}\nfunction bBc(a){_Ac();return es((eBc(),dBc),a)}\nfunction vBc(a){tBc();return es((yBc(),xBc),a)}\nfunction EBc(a){CBc();return es((HBc(),GBc),a)}\nfunction NBc(a){LBc();return es((QBc(),PBc),a)}\nfunction tGc(a){rGc();return es((wGc(),vGc),a)}\nfunction WIc(a){UIc();return es((ZIc(),YIc),a)}\nfunction $Lc(a){YLc();return es((bMc(),aMc),a)}\nfunction gMc(a){eMc();return es((jMc(),iMc),a)}\nfunction JOc(a){HOc();return es((MOc(),LOc),a)}\nfunction HQc(a){FQc();return es((KQc(),JQc),a)}\nfunction DRc(a){yRc();return es((GRc(),FRc),a)}\nfunction tSc(a){qSc();return es((wSc(),vSc),a)}\nfunction UTc(a){STc();return es((XTc(),WTc),a)}\nfunction UUc(a){PUc();return es((XUc(),WUc),a)}\nfunction aUc(a){$Tc();return es((dUc(),cUc),a)}\nfunction wVc(a){tVc();return es((zVc(),yVc),a)}\nfunction iWc(a){fWc();return es((lWc(),kWc),a)}\nfunction sWc(a){pWc();return es((vWc(),uWc),a)}\nfunction lXc(a){iXc();return es((oXc(),nXc),a)}\nfunction vXc(a){sXc();return es((yXc(),xXc),a)}\nfunction BYc(a){zYc();return es((EYc(),DYc),a)}\nfunction m$c(a){k$c();return es((p$c(),o$c),a)}\nfunction $$c(a){Y$c();return es((b_c(),a_c),a)}\nfunction n_c(a){i_c();return es((q_c(),p_c),a)}\nfunction w_c(a){s_c();return es((z_c(),y_c),a)}\nfunction E_c(a){C_c();return es((H_c(),G_c),a)}\nfunction P_c(a){N_c();return es((S_c(),R_c),a)}\nfunction W0c(a){R0c();return es((Z0c(),Y0c),a)}\nfunction f1c(a){a1c();return es((i1c(),h1c),a)}\nfunction P5c(a){N5c();return es((S5c(),R5c),a)}\nfunction b6c(a){_5c();return es((e6c(),d6c),a)}\nfunction H7c(a){F7c();return es((K7c(),J7c),a)}\nfunction k8c(a){i8c();return es((n8c(),m8c),a)}\nfunction V8b(a){S8b();return es((Y8b(),X8b),a)}\nfunction A5b(a){y5b();return es((D5b(),C5b),a)}\nfunction jad(a){ead();return es((mad(),lad),a)}\nfunction sad(a){qad();return es((vad(),uad),a)}\nfunction Cad(a){Aad();return es((Fad(),Ead),a)}\nfunction Oad(a){Mad();return es((Rad(),Qad),a)}\nfunction jbd(a){hbd();return es((mbd(),lbd),a)}\nfunction ubd(a){rbd();return es((xbd(),wbd),a)}\nfunction Kbd(a){Hbd();return es((Nbd(),Mbd),a)}\nfunction Vbd(a){Tbd();return es((Ybd(),Xbd),a)}\nfunction hcd(a){dcd();return es((kcd(),jcd),a)}\nfunction vcd(a){rcd();return es((ycd(),xcd),a)}\nfunction vdd(a){tdd();return es((ydd(),xdd),a)}\nfunction Kdd(a){Idd();return es((Ndd(),Mdd),a)}\nfunction $cd(a){Ucd();return es((cdd(),bdd),a)}\nfunction Fed(a){Ded();return es((Ied(),Hed),a)}\nfunction rgd(a){pgd();return es((ugd(),tgd),a)}\nfunction Esd(a){Csd();return es((Hsd(),Gsd),a)}\nfunction Yoc(a,b){return (uCb(a),a)+(uCb(b),b)}\nfunction NNd(a,b){Zfb();return wtd(ZKd(a.a),b)}\nfunction SNd(a,b){Zfb();return wtd(ZKd(a.a),b)}\nfunction bPc(a,b){this.c=a;this.a=b;this.b=b-a}\nfunction nYc(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction L1c(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction T1c(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction Rrd(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction zCd(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction IVd(a,b,c){this.e=a;this.a=b;this.c=c}\nfunction kWd(a,b,c){UVd();cWd.call(this,a,b,c)}\nfunction HXd(a,b,c){UVd();oXd.call(this,a,b,c)}\nfunction TXd(a,b,c){UVd();oXd.call(this,a,b,c)}\nfunction ZXd(a,b,c){UVd();oXd.call(this,a,b,c)}\nfunction JXd(a,b,c){UVd();HXd.call(this,a,b,c)}\nfunction LXd(a,b,c){UVd();HXd.call(this,a,b,c)}\nfunction NXd(a,b,c){UVd();LXd.call(this,a,b,c)}\nfunction VXd(a,b,c){UVd();TXd.call(this,a,b,c)}\nfunction _Xd(a,b,c){UVd();ZXd.call(this,a,b,c)}\nfunction $j(a,b){Qb(a);Qb(b);return new _j(a,b)}\nfunction Nq(a,b){Qb(a);Qb(b);return new Wq(a,b)}\nfunction Rq(a,b){Qb(a);Qb(b);return new ar(a,b)}\nfunction lr(a,b){Qb(a);Qb(b);return new zr(a,b)}\nfunction BD(a,b){CCb(a==null||AD(a,b));return a}\nfunction Nu(a){var b;b=new Rkb;fr(b,a);return b}\nfunction Ex(a){var b;b=new Tqb;fr(b,a);return b}\nfunction Hx(a){var b;b=new Gxb;Jq(b,a);return b}\nfunction Ru(a){var b;b=new Psb;Jq(b,a);return b}\nfunction YEc(a){!a.e&&(a.e=new Rkb);return a.e}\nfunction SMd(a){!a.c&&(a.c=new xYd);return a.c}\nfunction Ekb(a,b){a.c[a.c.length]=b;return true}\nfunction WA(a,b){this.c=a;this.b=b;this.a=false}\nfunction Gg(a){this.d=a;Dg(this);this.b=ed(a.d)}\nfunction pzb(){this.a=';,;';this.b='';this.c=''}\nfunction Bvb(a,b,c){qvb.call(this,b,c);this.a=a}\nfunction fAb(a,b,c){this.b=a;fvb.call(this,b,c)}\nfunction lsb(a,b,c){this.c=a;pjb.call(this,b,c)}\nfunction bCb(a,b,c){$Bb(c,0,a,b,c.length,false)}\nfunction HVb(a,b,c,d,e){a.b=b;a.c=c;a.d=d;a.a=e}\nfunction eBb(a,b){if(b){a.b=b;a.a=(Tzb(b),b.a)}}\nfunction v_b(a,b,c,d,e){a.d=b;a.c=c;a.a=d;a.b=e}\nfunction h5b(a){var b,c;b=a.b;c=a.c;a.b=c;a.c=b}\nfunction k5b(a){var b,c;c=a.d;b=a.a;a.d=b;a.a=c}\nfunction Lbb(a){return zbb(iD(Fbb(a)?Rbb(a):a))}\nfunction rlc(a,b){return beb(D0b(a.d),D0b(b.d))}\nfunction uic(a,b){return b==(Ucd(),Tcd)?a.c:a.d}\nfunction FHc(){FHc=ccb;DHc=(Ucd(),Tcd);EHc=zcd}\nfunction DRb(){this.b=Edb(ED(Ksd((wSb(),vSb))))}\nfunction aBb(a){return EAb(),KC(SI,Uhe,1,a,5,1)}\nfunction C6c(a){return new f7c(a.c+a.b,a.d+a.a)}\nfunction Vmc(a,b){Imc();return beb(a.d.p,b.d.p)}\nfunction Lsb(a){sCb(a.b!=0);return Nsb(a,a.a.a)}\nfunction Msb(a){sCb(a.b!=0);return Nsb(a,a.c.b)}\nfunction rCb(a,b){if(!a){throw vbb(new ucb(b))}}\nfunction mCb(a,b){if(!a){throw vbb(new Wdb(b))}}\nfunction dWb(a,b,c){cWb.call(this,a,b);this.b=c}\nfunction pMd(a,b,c){MLd.call(this,a,b);this.c=c}\nfunction Dnc(a,b,c){Cnc.call(this,b,c);this.d=a}\nfunction _Gd(a){$Gd();MGd.call(this);this.th(a)}\nfunction PNd(a,b,c){this.a=a;nNd.call(this,b,c)}\nfunction UNd(a,b,c){this.a=a;nNd.call(this,b,c)}\nfunction k2d(a,b,c){MLd.call(this,a,b);this.c=c}\nfunction y1d(){T0d();z1d.call(this,(yFd(),xFd))}\nfunction gFd(a){return a!=null&&!OEd(a,CEd,DEd)}\nfunction dFd(a,b){return (jFd(a)<<4|jFd(b))&aje}\nfunction ln(a,b){return Vm(),Wj(a,b),new iy(a,b)}\nfunction Sdd(a,b){var c;if(a.n){c=b;Ekb(a.f,c)}}\nfunction Upd(a,b,c){var d;d=new yC(c);cC(a,b,d)}\nfunction WUd(a,b){var c;c=a.c;VUd(a,b);return c}\nfunction Ydd(a,b){b<0?(a.g=-1):(a.g=b);return a}\nfunction $6c(a,b){W6c(a);a.a*=b;a.b*=b;return a}\nfunction G6c(a,b,c,d,e){a.c=b;a.d=c;a.b=d;a.a=e}\nfunction Dsb(a,b){Gsb(a,b,a.c.b,a.c);return true}\nfunction jsb(a){a.a.b=a.b;a.b.a=a.a;a.a=a.b=null}\nfunction Aq(a){this.b=a;this.a=Wm(this.b.a).Ed()}\nfunction Wq(a,b){this.b=a;this.a=b;ol.call(this)}\nfunction ar(a,b){this.a=a;this.b=b;ol.call(this)}\nfunction vvb(a,b){qvb.call(this,b,1040);this.a=a}\nfunction Eeb(a){return a==0||isNaN(a)?a:a<0?-1:1}\nfunction WPb(a){QPb();return jtd(a)==Xod(ltd(a))}\nfunction XPb(a){QPb();return ltd(a)==Xod(jtd(a))}\nfunction iYb(a,b){return hYb(a,new cWb(b.a,b.b))}\nfunction NZb(a){return !OZb(a)&&a.c.i.c==a.d.i.c}\nfunction _Gb(a){var b;b=a.n;return a.a.b+b.d+b.a}\nfunction YHb(a){var b;b=a.n;return a.e.b+b.d+b.a}\nfunction ZHb(a){var b;b=a.n;return a.e.a+b.b+b.c}\nfunction zfe(a){wfe();++vfe;return new ige(0,a)}\nfunction o_b(a){if(a.a){return a.a}return JZb(a)}\nfunction CCb(a){if(!a){throw vbb(new Cdb(null))}}\nfunction X6d(){X6d=ccb;W6d=(mmb(),new anb(Fwe))}\nfunction ex(){ex=ccb;new gx((_k(),$k),(Lk(),Kk))}\nfunction oeb(){oeb=ccb;neb=KC(JI,nie,19,256,0,1)}\nfunction d$c(a,b,c,d){e$c.call(this,a,b,c,d,0,0)}\nfunction sQc(a,b,c){return Rhb(a.b,BD(c.b,17),b)}\nfunction tQc(a,b,c){return Rhb(a.b,BD(c.b,17),b)}\nfunction xfd(a,b){return Ekb(a,new f7c(b.a,b.b))}\nfunction Bic(a,b){return a.c=b){throw vbb(new rcb)}}\nfunction Pyb(a,b,c){NC(b,0,Bzb(b[0],c[0]));return b}\nfunction _yc(a,b,c){b.Ye(c,Edb(ED(Ohb(a.b,c)))*a.a)}\nfunction n6c(a,b,c){i6c();return m6c(a,b)&&m6c(a,c)}\nfunction tcd(a){rcd();return !a.Hc(ncd)&&!a.Hc(pcd)}\nfunction D6c(a){return new f7c(a.c+a.b/2,a.d+a.a/2)}\nfunction oOd(a,b){return b.kh()?xid(a.b,BD(b,49)):b}\nfunction bvb(a,b){this.e=a;this.d=(b&64)!=0?b|oie:b}\nfunction qvb(a,b){this.c=0;this.d=a;this.b=b|64|oie}\nfunction gub(a){this.b=new Skb(11);this.a=(ipb(),a)}\nfunction Qwb(a){this.b=null;this.a=(ipb(),!a?fpb:a)}\nfunction nHc(a){this.a=lHc(a.a);this.b=new Tkb(a.b)}\nfunction Pzd(a){this.b=a;Oyd.call(this,a);Ozd(this)}\nfunction Xzd(a){this.b=a;bzd.call(this,a);Wzd(this)}\nfunction jUd(a,b,c){this.a=a;gUd.call(this,b,c,5,6)}\nfunction Y5d(a,b,c,d){this.b=a;xMd.call(this,b,c,d)}\nfunction nSd(a,b,c,d,e){oSd.call(this,a,b,c,d,e,-1)}\nfunction DSd(a,b,c,d,e){ESd.call(this,a,b,c,d,e,-1)}\nfunction cUd(a,b,c,d){xMd.call(this,a,b,c);this.b=d}\nfunction i5d(a,b,c,d){pMd.call(this,a,b,c);this.b=d}\nfunction x0d(a){Wud.call(this,a,false);this.a=false}\nfunction Lj(a,b){this.b=a;sj.call(this,a.b);this.a=b}\nfunction px(a,b){im();ox.call(this,a,Dm(new amb(b)))}\nfunction Cfe(a,b){wfe();++vfe;return new Dge(a,b,0)}\nfunction Efe(a,b){wfe();++vfe;return new Dge(6,a,b)}\nfunction nfb(a,b){return dfb(a.substr(0,b.length),b)}\nfunction Mhb(a,b){return ND(b)?Qhb(a,b):!!irb(a.f,b)}\nfunction Rrb(a,b){uCb(b);while(a.Ob()){b.td(a.Pb())}}\nfunction Vgb(a,b,c){Hgb();this.e=a;this.d=b;this.a=c}\nfunction amc(a,b,c,d){var e;e=a.i;e.i=b;e.a=c;e.b=d}\nfunction xJc(a){var b;b=a;while(b.f){b=b.f}return b}\nfunction fkb(a){var b;b=bkb(a);sCb(b!=null);return b}\nfunction gkb(a){var b;b=ckb(a);sCb(b!=null);return b}\nfunction cv(a,b){var c;c=a.a.gc();Sb(b,c);return c-b}\nfunction Glb(a,b){var c;for(c=0;c0?$wnd.Math.log(a/b):-100}\nfunction ueb(a,b){return ybb(a,b)<0?-1:ybb(a,b)>0?1:0}\nfunction HMb(a,b,c){return IMb(a,BD(b,46),BD(c,167))}\nfunction iq(a,b){return BD(Rl(Wm(a.a)).Xb(b),42).cd()}\nfunction Olb(a,b){return avb(b,a.length),new vvb(a,b)}\nfunction Pyd(a,b){this.d=a;Fyd.call(this,a);this.e=b}\nfunction Lub(a){this.d=(uCb(a),a);this.a=0;this.c=rie}\nfunction rge(a,b){xfe.call(this,1);this.a=a;this.b=b}\nfunction Rzb(a,b){!a.c?Ekb(a.b,b):Rzb(a.c,b);return a}\nfunction uB(a,b,c){var d;d=tB(a,b);vB(a,b,c);return d}\nfunction ZBb(a,b){var c;c=a.slice(0,b);return PC(c,a)}\nfunction Flb(a,b,c){var d;for(d=0;d=a.g}\nfunction NHc(a,b,c){var d;d=THc(a,b,c);return MHc(a,d)}\nfunction Qpd(a,b){var c;c=a.a.length;tB(a,c);vB(a,c,b)}\nfunction gCb(a,b){var c;c=console[a];c.call(console,b)}\nfunction Bvd(a,b){var c;++a.j;c=a.Vi();a.Ii(a.oi(c,b))}\nfunction E1c(a,b,c){BD(b.b,65);Hkb(b.a,new L1c(a,c,b))}\nfunction oXd(a,b,c){VVd.call(this,b);this.a=a;this.b=c}\nfunction Dge(a,b,c){xfe.call(this,a);this.a=b;this.b=c}\nfunction dYd(a,b,c){this.a=a;lVd.call(this,b);this.b=c}\nfunction f0d(a,b,c){this.a=a;mxd.call(this,8,b,null,c)}\nfunction z1d(a){this.a=(uCb(Rve),Rve);this.b=a;new oUd}\nfunction ct(a){this.c=a;this.b=this.c.a;this.a=this.c.e}\nfunction usb(a){this.c=a;this.b=a.a.d.a;ypb(a.a.e,this)}\nfunction uib(a){yCb(a.c!=-1);a.d.$c(a.c);a.b=a.c;a.c=-1}\nfunction U6c(a){return $wnd.Math.sqrt(a.a*a.a+a.b*a.b)}\nfunction Uvb(a,b){return _vb(b,a.a.c.length),Ikb(a.a,b)}\nfunction Hb(a,b){return PD(a)===PD(b)||a!=null&&pb(a,b)}\nfunction oAb(a){if(0>=a){return new yAb}return pAb(a-1)}\nfunction Nfe(a){if(!bfe)return false;return Qhb(bfe,a)}\nfunction Ehe(a){if(a)return a.dc();return !a.Kc().Ob()}\nfunction Q_b(a){if(!a.a&&!!a.c){return a.c.b}return a.a}\nfunction LHd(a){!a.a&&(a.a=new xMd(m5,a,4));return a.a}\nfunction LQd(a){!a.d&&(a.d=new xMd(j5,a,1));return a.d}\nfunction uCb(a){if(a==null){throw vbb(new Geb)}return a}\nfunction Qzb(a){if(!a.c){a.d=true;Szb(a)}else{a.c.He()}}\nfunction Tzb(a){if(!a.c){Uzb(a);a.d=true}else{Tzb(a.c)}}\nfunction Kpb(a){Ae(a.a);a.b=KC(SI,Uhe,1,a.b.length,5,1)}\nfunction qlc(a,b){return beb(b.j.c.length,a.j.c.length)}\nfunction igd(a,b){a.c<0||a.b.b=0?a.Bh(c):vid(a,b)}\nfunction WHc(a){var b,c;b=a.c.i.c;c=a.d.i.c;return b==c}\nfunction Wwd(a){if(a.p!=4)throw vbb(new Ydb);return a.e}\nfunction Vwd(a){if(a.p!=3)throw vbb(new Ydb);return a.e}\nfunction Ywd(a){if(a.p!=6)throw vbb(new Ydb);return a.f}\nfunction fxd(a){if(a.p!=6)throw vbb(new Ydb);return a.k}\nfunction cxd(a){if(a.p!=3)throw vbb(new Ydb);return a.j}\nfunction dxd(a){if(a.p!=4)throw vbb(new Ydb);return a.j}\nfunction AYd(a){!a.b&&(a.b=new RYd(new NYd));return a.b}\nfunction $1d(a){a.c==-2&&e2d(a,X0d(a.g,a.b));return a.c}\nfunction pdb(a,b){var c;c=ldb('',a);c.n=b;c.i=1;return c}\nfunction MNb(a,b){$Nb(BD(b.b,65),a);Hkb(b.a,new RNb(a))}\nfunction Cnd(a,b){wtd((!a.a&&(a.a=new fTd(a,a)),a.a),b)}\nfunction Qzd(a,b){this.b=a;Pyd.call(this,a,b);Ozd(this)}\nfunction Yzd(a,b){this.b=a;czd.call(this,a,b);Wzd(this)}\nfunction Ms(a,b,c,d){Wo.call(this,a,b);this.d=c;this.a=d}\nfunction $o(a,b,c,d){Wo.call(this,a,c);this.a=b;this.f=d}\nfunction iy(a,b){Pp.call(this,umb(Qb(a),Qb(b)));this.a=b}\nfunction cae(){fod.call(this,Ewe,(p8d(),o8d));$9d(this)}\nfunction AZd(){fod.call(this,_ve,(LFd(),KFd));uZd(this)}\nfunction T0c(){$r.call(this,'DELAUNAY_TRIANGULATION',0)}\nfunction vfb(a){return String.fromCharCode.apply(null,a)}\nfunction Rhb(a,b,c){return ND(b)?Shb(a,b,c):jrb(a.f,b,c)}\nfunction tmb(a){mmb();return !a?(ipb(),ipb(),hpb):a.ve()}\nfunction d2c(a,b,c){Y1c();return c.pg(a,BD(b.cd(),146))}\nfunction ix(a,b){ex();return new gx(new il(a),new Uk(b))}\nfunction Iu(a){Xj(a,Mie);return Oy(wbb(wbb(5,a),a/10|0))}\nfunction Vm(){Vm=ccb;Um=new wx(OC(GC(CK,1),zie,42,0,[]))}\nfunction hob(a){!a.d&&(a.d=new lnb(a.c.Cc()));return a.d}\nfunction eob(a){!a.a&&(a.a=new Gob(a.c.vc()));return a.a}\nfunction gob(a){!a.b&&(a.b=new zob(a.c.ec()));return a.b}\nfunction keb(a,b){while(b-->0){a=a<<1|(a<0?1:0)}return a}\nfunction wtb(a,b){return PD(a)===PD(b)||a!=null&&pb(a,b)}\nfunction Gbc(a,b){return Bcb(),BD(b.b,19).ad&&++d;return d}\nfunction Nnd(a){var b,c;c=(b=new UQd,b);NQd(c,a);return c}\nfunction Ond(a){var b,c;c=(b=new UQd,b);RQd(c,a);return c}\nfunction hqd(a,b){var c;c=Ohb(a.f,b);Yqd(b,c);return null}\nfunction JZb(a){var b;b=P2b(a);if(b){return b}return null}\nfunction Wod(a){!a.b&&(a.b=new cUd(B2,a,12,3));return a.b}\nfunction YEd(a){return a!=null&&hnb(GEd,a.toLowerCase())}\nfunction ied(a,b){return Kdb(red(a)*qed(a),red(b)*qed(b))}\nfunction jed(a,b){return Kdb(red(a)*qed(a),red(b)*qed(b))}\nfunction wEb(a,b){return Kdb(a.d.c+a.d.b/2,b.d.c+b.d.b/2)}\nfunction UVb(a,b){return Kdb(a.g.c+a.g.b/2,b.g.c+b.g.b/2)}\nfunction pQb(a,b,c){c.a?eld(a,b.b-a.f/2):dld(a,b.a-a.g/2)}\nfunction prd(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d}\nfunction ord(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d}\nfunction JVd(a,b,c,d){this.e=a;this.a=b;this.c=c;this.d=d}\nfunction ZVd(a,b,c,d){this.a=a;this.c=b;this.d=c;this.b=d}\nfunction cXd(a,b,c,d){UVd();mWd.call(this,b,c,d);this.a=a}\nfunction jXd(a,b,c,d){UVd();mWd.call(this,b,c,d);this.a=a}\nfunction Ng(a,b){this.a=a;Hg.call(this,a,BD(a.d,15).Zc(b))}\nfunction ZBd(a){this.f=a;this.c=this.f.e;a.f>0&&YBd(this)}\nfunction lBb(a,b,c,d){this.b=a;this.c=d;nvb.call(this,b,c)}\nfunction tib(a){sCb(a.b=0&&dfb(a.substr(c,b.length),b)}\nfunction H2d(a,b,c,d,e,f,g){return new O7d(a.e,b,c,d,e,f,g)}\nfunction Cxd(a,b,c,d,e,f){this.a=a;nxd.call(this,b,c,d,e,f)}\nfunction vyd(a,b,c,d,e,f){this.a=a;nxd.call(this,b,c,d,e,f)}\nfunction $Ec(a,b){this.g=a;this.d=OC(GC(OQ,1),kne,10,0,[b])}\nfunction KVd(a,b){this.e=a;this.a=SI;this.b=R5d(b);this.c=b}\nfunction cIb(a,b){$Gb.call(this);THb(this);this.a=a;this.c=b}\nfunction kBc(a,b,c,d){NC(a.c[b.g],c.g,d);NC(a.c[c.g],b.g,d)}\nfunction nBc(a,b,c,d){NC(a.c[b.g],b.g,c);NC(a.b[b.g],b.g,d)}\nfunction cBc(){_Ac();return OC(GC(fX,1),Kie,376,0,[$Ac,ZAc])}\nfunction crc(){_qc();return OC(GC(MW,1),Kie,479,0,[$qc,Zqc])}\nfunction Aqc(){xqc();return OC(GC(JW,1),Kie,419,0,[vqc,wqc])}\nfunction Lpc(){Ipc();return OC(GC(FW,1),Kie,422,0,[Gpc,Hpc])}\nfunction psc(){msc();return OC(GC(SW,1),Kie,420,0,[ksc,lsc])}\nfunction EAc(){BAc();return OC(GC(cX,1),Kie,421,0,[zAc,AAc])}\nfunction XIc(){UIc();return OC(GC(mY,1),Kie,523,0,[TIc,SIc])}\nfunction KOc(){HOc();return OC(GC(DZ,1),Kie,520,0,[GOc,FOc])}\nfunction _Lc(){YLc();return OC(GC(fZ,1),Kie,516,0,[XLc,WLc])}\nfunction hMc(){eMc();return OC(GC(gZ,1),Kie,515,0,[cMc,dMc])}\nfunction IQc(){FQc();return OC(GC(YZ,1),Kie,455,0,[DQc,EQc])}\nfunction bUc(){$Tc();return OC(GC(F$,1),Kie,425,0,[ZTc,YTc])}\nfunction VTc(){STc();return OC(GC(E$,1),Kie,480,0,[QTc,RTc])}\nfunction VUc(){PUc();return OC(GC(K$,1),Kie,495,0,[NUc,OUc])}\nfunction jWc(){fWc();return OC(GC(X$,1),Kie,426,0,[dWc,eWc])}\nfunction g1c(){a1c();return OC(GC(X_,1),Kie,429,0,[_0c,$0c])}\nfunction F_c(){C_c();return OC(GC(P_,1),Kie,430,0,[B_c,A_c])}\nfunction PEb(){MEb();return OC(GC(aN,1),Kie,428,0,[LEb,KEb])}\nfunction XEb(){UEb();return OC(GC(bN,1),Kie,427,0,[SEb,TEb])}\nfunction $Rb(){XRb();return OC(GC(gP,1),Kie,424,0,[VRb,WRb])}\nfunction B5b(){y5b();return OC(GC(ZR,1),Kie,511,0,[x5b,w5b])}\nfunction lid(a,b,c,d){return c>=0?a.jh(b,c,d):a.Sg(null,c,d)}\nfunction hgd(a){if(a.b.b==0){return a.a.$e()}return Lsb(a.b)}\nfunction Xwd(a){if(a.p!=5)throw vbb(new Ydb);return Tbb(a.f)}\nfunction exd(a){if(a.p!=5)throw vbb(new Ydb);return Tbb(a.k)}\nfunction pNd(a){PD(a.a)===PD((NKd(),MKd))&&qNd(a);return a.a}\nfunction by(a){this.a=BD(Qb(a),271);this.b=(mmb(),new Zob(a))}\nfunction bQc(a,b){$Pc(this,new f7c(a.a,a.b));_Pc(this,Ru(b))}\nfunction FQc(){FQc=ccb;DQc=new GQc(jle,0);EQc=new GQc(kle,1)}\nfunction YLc(){YLc=ccb;XLc=new ZLc(kle,0);WLc=new ZLc(jle,1)}\nfunction Hp(){Gp.call(this,new Mqb(Cv(12)));Lb(true);this.a=2}\nfunction Hge(a,b,c){wfe();xfe.call(this,a);this.b=b;this.a=c}\nfunction cWd(a,b,c){UVd();VVd.call(this,b);this.a=a;this.b=c}\nfunction aIb(a){$Gb.call(this);THb(this);this.a=a;this.c=true}\nfunction isb(a){var b;b=a.c.d.b;a.b=b;a.a=a.c.d;b.a=a.c.d.b=a}\nfunction $Cb(a){var b;NGb(a.a);MGb(a.a);b=new YGb(a.a);UGb(b)}\nfunction iKb(a,b){hKb(a,true);Hkb(a.e.wf(),new mKb(a,true,b))}\nfunction tlb(a,b){pCb(b);return vlb(a,KC(WD,oje,25,b,15,1),b)}\nfunction YPb(a,b){QPb();return a==Xod(jtd(b))||a==Xod(ltd(b))}\nfunction Phb(a,b){return b==null?Wd(irb(a.f,null)):Crb(a.g,b)}\nfunction Ksb(a){return a.b==0?null:(sCb(a.b!=0),Nsb(a,a.a.a))}\nfunction QD(a){return Math.max(Math.min(a,Ohe),-2147483648)|0}\nfunction uz(a,b){var c=tz[a.charCodeAt(0)];return c==null?a:c}\nfunction Cx(a,b){Rb(a,'set1');Rb(b,'set2');return new Px(a,b)}\nfunction QUb(a,b){var c;c=zUb(a.f,b);return P6c(V6c(c),a.f.d)}\nfunction Jwb(a,b){var c,d;c=b;d=new fxb;Lwb(a,c,d);return d.d}\nfunction NJb(a,b,c,d){var e;e=new aHb;b.a[c.g]=e;Npb(a.b,d,e)}\nfunction zid(a,b,c){var d;d=a.Yg(b);d>=0?a.sh(d,c):uid(a,b,c)}\nfunction hvd(a,b,c){evd();!!a&&Rhb(dvd,a,b);!!a&&Rhb(cvd,a,c)}\nfunction g_c(a,b,c){this.i=new Rkb;this.b=a;this.g=b;this.a=c}\nfunction VZc(a,b,c){this.c=new Rkb;this.e=a;this.f=b;this.b=c}\nfunction b$c(a,b,c){this.a=new Rkb;this.e=a;this.f=b;this.c=c}\nfunction Zy(a,b){Py(this);this.f=b;this.g=a;Ry(this);this._d()}\nfunction ZA(a,b){var c;c=a.q.getHours();a.q.setDate(b);YA(a,c)}\nfunction no(a,b){var c;Qb(b);for(c=a.a;c;c=c.c){b.Od(c.g,c.i)}}\nfunction Fx(a){var b;b=new Uqb(Cv(a.length));nmb(b,a);return b}\nfunction ecb(a){function b(){}\n;b.prototype=a||{};return new b}\nfunction dkb(a,b){if(Zjb(a,b)){wkb(a);return true}return false}\nfunction aC(a,b){if(b==null){throw vbb(new Geb)}return bC(a,b)}\nfunction tdb(a){if(a.qe()){return null}var b=a.n;return _bb[b]}\nfunction Mld(a){if(a.Db>>16!=3)return null;return BD(a.Cb,33)}\nfunction mpd(a){if(a.Db>>16!=9)return null;return BD(a.Cb,33)}\nfunction fmd(a){if(a.Db>>16!=6)return null;return BD(a.Cb,79)}\nfunction Ind(a){if(a.Db>>16!=7)return null;return BD(a.Cb,235)}\nfunction Fod(a){if(a.Db>>16!=7)return null;return BD(a.Cb,160)}\nfunction Xod(a){if(a.Db>>16!=11)return null;return BD(a.Cb,33)}\nfunction nid(a,b){var c;c=a.Yg(b);return c>=0?a.lh(c):tid(a,b)}\nfunction Dtd(a,b){var c;c=new Bsb(b);Ve(c,a);return new Tkb(c)}\nfunction Uud(a){var b;b=a.d;b=a.si(a.f);wtd(a,b);return b.Ob()}\nfunction t_b(a,b){a.b+=b.b;a.c+=b.c;a.d+=b.d;a.a+=b.a;return a}\nfunction A4b(a,b){return $wnd.Math.abs(a)<$wnd.Math.abs(b)?a:b}\nfunction Zod(a){return !a.a&&(a.a=new cUd(E2,a,10,11)),a.a.i>0}\nfunction oDb(){this.a=new zsb;this.e=new Tqb;this.g=0;this.i=0}\nfunction BGc(a){this.a=a;this.b=KC(SX,nie,1944,a.e.length,0,2)}\nfunction RHc(a,b,c){var d;d=SHc(a,b,c);a.b=new BHc(d.c.length)}\nfunction eMc(){eMc=ccb;cMc=new fMc(vle,0);dMc=new fMc('UP',1)}\nfunction STc(){STc=ccb;QTc=new TTc(Yqe,0);RTc=new TTc('FAN',1)}\nfunction evd(){evd=ccb;dvd=new Lqb;cvd=new Lqb;ivd(hK,new jvd)}\nfunction Swd(a){if(a.p!=0)throw vbb(new Ydb);return Kbb(a.f,0)}\nfunction _wd(a){if(a.p!=0)throw vbb(new Ydb);return Kbb(a.k,0)}\nfunction MHd(a){if(a.Db>>16!=3)return null;return BD(a.Cb,147)}\nfunction ZJd(a){if(a.Db>>16!=6)return null;return BD(a.Cb,235)}\nfunction WId(a){if(a.Db>>16!=17)return null;return BD(a.Cb,26)}\nfunction rdb(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.le(b))}\nfunction hrb(a,b){var c;c=a.a.get(b);return c==null?new Array:c}\nfunction aB(a,b){var c;c=a.q.getHours();a.q.setMonth(b);YA(a,c)}\nfunction Shb(a,b,c){return b==null?jrb(a.f,null,c):Drb(a.g,b,c)}\nfunction FLd(a,b,c,d,e,f){return new pSd(a.e,b,a.aj(),c,d,e,f)}\nfunction Tfb(a,b,c){a.a=qfb(a.a,0,b)+(''+c)+pfb(a.a,b);return a}\nfunction bq(a,b,c){Ekb(a.a,(Vm(),Wj(b,c),new Wo(b,c)));return a}\nfunction uu(a){ot(a.c);a.e=a.a=a.c;a.c=a.c.c;++a.d;return a.a.f}\nfunction vu(a){ot(a.e);a.c=a.a=a.e;a.e=a.e.e;--a.d;return a.a.f}\nfunction RZb(a,b){!!a.d&&Lkb(a.d.e,a);a.d=b;!!a.d&&Ekb(a.d.e,a)}\nfunction QZb(a,b){!!a.c&&Lkb(a.c.g,a);a.c=b;!!a.c&&Ekb(a.c.g,a)}\nfunction $_b(a,b){!!a.c&&Lkb(a.c.a,a);a.c=b;!!a.c&&Ekb(a.c.a,a)}\nfunction F0b(a,b){!!a.i&&Lkb(a.i.j,a);a.i=b;!!a.i&&Ekb(a.i.j,a)}\nfunction jDb(a,b,c){this.a=b;this.c=a;this.b=(Qb(c),new Tkb(c))}\nfunction qXb(a,b,c){this.a=b;this.c=a;this.b=(Qb(c),new Tkb(c))}\nfunction aOb(a,b){this.a=a;this.c=R6c(this.a);this.b=new K6c(b)}\nfunction IAb(a){var b;Uzb(a);b=new Tqb;return JAb(a,new jBb(b))}\nfunction wCb(a,b){if(a<0||a>b){throw vbb(new qcb(Ake+a+Bke+b))}}\nfunction Ppb(a,b){return vqb(a.a,b)?Qpb(a,BD(b,22).g,null):null}\nfunction WUb(a){LUb();return Bcb(),BD(a.a,81).d.e!=0?true:false}\nfunction qs(){qs=ccb;ps=as((hs(),OC(GC(yG,1),Kie,538,0,[gs])))}\nfunction SBc(){SBc=ccb;RBc=c3c(new j3c,(qUb(),pUb),(S8b(),J8b))}\nfunction ZBc(){ZBc=ccb;YBc=c3c(new j3c,(qUb(),pUb),(S8b(),J8b))}\nfunction oCc(){oCc=ccb;nCc=c3c(new j3c,(qUb(),pUb),(S8b(),J8b))}\nfunction aJc(){aJc=ccb;_Ic=e3c(new j3c,(qUb(),pUb),(S8b(),h8b))}\nfunction FJc(){FJc=ccb;EJc=e3c(new j3c,(qUb(),pUb),(S8b(),h8b))}\nfunction ILc(){ILc=ccb;HLc=e3c(new j3c,(qUb(),pUb),(S8b(),h8b))}\nfunction wMc(){wMc=ccb;vMc=e3c(new j3c,(qUb(),pUb),(S8b(),h8b))}\nfunction fUc(){fUc=ccb;eUc=c3c(new j3c,(yRc(),xRc),(qSc(),kSc))}\nfunction DOc(a,b,c,d){this.c=a;this.d=d;BOc(this,b);COc(this,c)}\nfunction W3c(a){this.c=new Psb;this.b=a.b;this.d=a.c;this.a=a.a}\nfunction e7c(a){this.a=$wnd.Math.cos(a);this.b=$wnd.Math.sin(a)}\nfunction BOc(a,b){!!a.a&&Lkb(a.a.k,a);a.a=b;!!a.a&&Ekb(a.a.k,a)}\nfunction COc(a,b){!!a.b&&Lkb(a.b.f,a);a.b=b;!!a.b&&Ekb(a.b.f,a)}\nfunction D1c(a,b){E1c(a,a.b,a.c);BD(a.b.b,65);!!b&&BD(b.b,65).b}\nfunction BUd(a,b){CUd(a,b);JD(a.Cb,88)&&XMd($Kd(BD(a.Cb,88)),2)}\nfunction cJd(a,b){JD(a.Cb,88)&&XMd($Kd(BD(a.Cb,88)),4);pnd(a,b)}\nfunction lKd(a,b){JD(a.Cb,179)&&(BD(a.Cb,179).tb=null);pnd(a,b)}\nfunction T2d(a,b){return Q6d(),YId(b)?new R7d(b,a):new f7d(b,a)}\nfunction jsd(a,b){var c,d;c=b.c;d=c!=null;d&&Qpd(a,new yC(b.c))}\nfunction XOd(a){var b,c;c=(LFd(),b=new UQd,b);NQd(c,a);return c}\nfunction eTd(a){var b,c;c=(LFd(),b=new UQd,b);NQd(c,a);return c}\nfunction yCc(a,b){var c;c=new H1b(a);b.c[b.c.length]=c;return c}\nfunction Aw(a,b){var c;c=BD(Hv(nd(a.a),b),14);return !c?0:c.gc()}\nfunction UAb(a){var b;Uzb(a);b=(ipb(),ipb(),gpb);return VAb(a,b)}\nfunction nr(a){var b;while(true){b=a.Pb();if(!a.Ob()){return b}}}\nfunction Ki(a,b){Ii.call(this,new Mqb(Cv(a)));Xj(b,mie);this.a=b}\nfunction Jib(a,b,c){xCb(b,c,a.gc());this.c=a;this.a=b;this.b=c-b}\nfunction Mkb(a,b,c){var d;xCb(b,c,a.c.length);d=c-b;cCb(a.c,b,d)}\nfunction Fub(a,b){Eub(a,Tbb(xbb(Obb(b,24),nke)),Tbb(xbb(b,nke)))}\nfunction tCb(a,b){if(a<0||a>=b){throw vbb(new qcb(Ake+a+Bke+b))}}\nfunction BCb(a,b){if(a<0||a>=b){throw vbb(new Xfb(Ake+a+Bke+b))}}\nfunction Kub(a,b){this.b=(uCb(a),a);this.a=(b&Rje)==0?b|64|oie:b}\nfunction kkb(a){Vjb(this);dCb(this.a,geb($wnd.Math.max(8,a))<<1)}\nfunction A0b(a){return l7c(OC(GC(m1,1),nie,8,0,[a.i.n,a.n,a.a]))}\nfunction Iyb(){Fyb();return OC(GC(xL,1),Kie,132,0,[Cyb,Dyb,Eyb])}\nfunction jHb(){gHb();return OC(GC(pN,1),Kie,232,0,[dHb,eHb,fHb])}\nfunction QHb(){NHb();return OC(GC(sN,1),Kie,461,0,[LHb,KHb,MHb])}\nfunction HIb(){EIb();return OC(GC(zN,1),Kie,462,0,[DIb,CIb,BIb])}\nfunction UXb(){RXb();return OC(GC(hQ,1),Kie,423,0,[QXb,PXb,OXb])}\nfunction BTb(){yTb();return OC(GC(oP,1),Kie,379,0,[wTb,vTb,xTb])}\nfunction Bzc(){xzc();return OC(GC(ZW,1),Kie,378,0,[uzc,vzc,wzc])}\nfunction Xpc(){Rpc();return OC(GC(GW,1),Kie,314,0,[Ppc,Opc,Qpc])}\nfunction eqc(){bqc();return OC(GC(HW,1),Kie,337,0,[$pc,aqc,_pc])}\nfunction Jqc(){Gqc();return OC(GC(KW,1),Kie,450,0,[Eqc,Dqc,Fqc])}\nfunction Ikc(){Fkc();return OC(GC(vV,1),Kie,361,0,[Ekc,Dkc,Ckc])}\nfunction hsc(){esc();return OC(GC(RW,1),Kie,303,0,[csc,dsc,bsc])}\nfunction $rc(){Xrc();return OC(GC(QW,1),Kie,292,0,[Vrc,Wrc,Urc])}\nfunction NAc(){KAc();return OC(GC(dX,1),Kie,452,0,[JAc,HAc,IAc])}\nfunction wAc(){tAc();return OC(GC(bX,1),Kie,339,0,[rAc,qAc,sAc])}\nfunction WAc(){TAc();return OC(GC(eX,1),Kie,375,0,[QAc,RAc,SAc])}\nfunction OBc(){LBc();return OC(GC(jX,1),Kie,377,0,[JBc,KBc,IBc])}\nfunction wBc(){tBc();return OC(GC(hX,1),Kie,336,0,[qBc,rBc,sBc])}\nfunction FBc(){CBc();return OC(GC(iX,1),Kie,338,0,[BBc,zBc,ABc])}\nfunction uGc(){rGc();return OC(GC(PX,1),Kie,454,0,[oGc,pGc,qGc])}\nfunction xVc(){tVc();return OC(GC(O$,1),Kie,442,0,[sVc,qVc,rVc])}\nfunction tWc(){pWc();return OC(GC(Y$,1),Kie,380,0,[mWc,nWc,oWc])}\nfunction CYc(){zYc();return OC(GC(q_,1),Kie,381,0,[xYc,yYc,wYc])}\nfunction wXc(){sXc();return OC(GC(b_,1),Kie,293,0,[qXc,rXc,pXc])}\nfunction _$c(){Y$c();return OC(GC(J_,1),Kie,437,0,[V$c,W$c,X$c])}\nfunction kbd(){hbd();return OC(GC(z1,1),Kie,334,0,[fbd,ebd,gbd])}\nfunction tad(){qad();return OC(GC(u1,1),Kie,272,0,[nad,oad,pad])}\nfunction o3d(a,b){return p3d(a,b,JD(b,99)&&(BD(b,18).Bb&Tje)!=0)}\nfunction LZc(a,b,c){var d;d=MZc(a,b,false);return d.b<=b&&d.a<=c}\nfunction tMc(a,b,c){var d;d=new sMc;d.b=b;d.a=c;++b.b;Ekb(a.d,d)}\nfunction fs(a,b){var c;c=(uCb(a),a).g;lCb(!!c);uCb(b);return c(b)}\nfunction av(a,b){var c,d;d=cv(a,b);c=a.a.Zc(d);return new qv(a,c)}\nfunction cKd(a){if(a.Db>>16!=6)return null;return BD(aid(a),235)}\nfunction Uwd(a){if(a.p!=2)throw vbb(new Ydb);return Tbb(a.f)&aje}\nfunction bxd(a){if(a.p!=2)throw vbb(new Ydb);return Tbb(a.k)&aje}\nfunction Z1d(a){a.a==(T0d(),S0d)&&d2d(a,U0d(a.g,a.b));return a.a}\nfunction _1d(a){a.d==(T0d(),S0d)&&f2d(a,Y0d(a.g,a.b));return a.d}\nfunction mlb(a){sCb(a.ad?1:0}\nfunction bjc(a,b){var c,d;c=ajc(b);d=c;return BD(Ohb(a.c,d),19).a}\nfunction iSc(a,b){var c;c=a+'';while(c.length0&&a.a[--a.d]==0);a.a[a.d++]==0&&(a.e=0)}\nfunction wwb(a){return !a.a?a.c:a.e.length==0?a.a.a:a.a.a+(''+a.e)}\nfunction RSd(a){return !!a.a&&QSd(a.a.a).i!=0&&!(!!a.b&&QTd(a.b))}\nfunction cLd(a){return !!a.u&&VKd(a.u.a).i!=0&&!(!!a.n&&FMd(a.n))}\nfunction $i(a){return Zj(a.e.Hd().gc()*a.c.Hd().gc(),16,new ij(a))}\nfunction XA(a,b){return ueb(Cbb(a.q.getTime()),Cbb(b.q.getTime()))}\nfunction k_b(a){return BD(Qkb(a,KC(AQ,jne,17,a.c.length,0,1)),474)}\nfunction l_b(a){return BD(Qkb(a,KC(OQ,kne,10,a.c.length,0,1)),193)}\nfunction cKc(a){FJc();return !OZb(a)&&!(!OZb(a)&&a.c.i.c==a.d.i.c)}\nfunction kDb(a,b,c){var d;d=(Qb(a),new Tkb(a));iDb(new jDb(d,b,c))}\nfunction rXb(a,b,c){var d;d=(Qb(a),new Tkb(a));pXb(new qXb(d,b,c))}\nfunction Nwb(a,b){var c;c=1-b;a.a[c]=Owb(a.a[c],c);return Owb(a,b)}\nfunction YXc(a,b){var c;a.e=new QXc;c=gVc(b);Okb(c,a.c);ZXc(a,c,0)}\nfunction o4c(a,b,c,d){var e;e=new w4c;e.a=b;e.b=c;e.c=d;Dsb(a.a,e)}\nfunction p4c(a,b,c,d){var e;e=new w4c;e.a=b;e.b=c;e.c=d;Dsb(a.b,e)}\nfunction i6d(a){var b,c,d;b=new A6d;c=s6d(b,a);z6d(b);d=c;return d}\nfunction vZd(){var a,b,c;b=(c=(a=new UQd,a),c);Ekb(rZd,b);return b}\nfunction H2c(a){a.j.c=KC(SI,Uhe,1,0,5,1);Ae(a.c);h3c(a.a);return a}\nfunction tgc(a){qgc();if(JD(a.g,10)){return BD(a.g,10)}return null}\nfunction Zw(a){if(Ah(a).dc()){return false}Bh(a,new bx);return true}\nfunction _y(b){if(!('stack' in b)){try{throw b}catch(a){}}return b}\nfunction Pb(a,b){if(a<0||a>=b){throw vbb(new qcb(Ib(a,b)))}return a}\nfunction Tb(a,b,c){if(a<0||bc){throw vbb(new qcb(Kb(a,b,c)))}}\nfunction eVb(a,b){Qqb(a.a,b);if(b.d){throw vbb(new hz(Hke))}b.d=a}\nfunction xpb(a,b){if(b.$modCount!=a.$modCount){throw vbb(new Apb)}}\nfunction $pb(a,b){if(JD(b,42)){return Jd(a.a,BD(b,42))}return false}\nfunction dib(a,b){if(JD(b,42)){return Jd(a.a,BD(b,42))}return false}\nfunction msb(a,b){if(JD(b,42)){return Jd(a.a,BD(b,42))}return false}\nfunction qAb(a,b){if(a.a<=a.b){b.ud(a.a++);return true}return false}\nfunction Sbb(a){var b;if(Fbb(a)){b=a;return b==-0.?0:b}return oD(a)}\nfunction tAb(a){var b;Tzb(a);b=new drb;_ub(a.a,new BAb(b));return b}\nfunction Yzb(a){var b;Tzb(a);b=new Gpb;_ub(a.a,new mAb(b));return b}\nfunction Bib(a,b){this.a=a;vib.call(this,a);wCb(b,a.gc());this.b=b}\nfunction orb(a){this.e=a;this.b=this.e.a.entries();this.a=new Array}\nfunction Oi(a){return Zj(a.e.Hd().gc()*a.c.Hd().gc(),273,new cj(a))}\nfunction Qu(a){return new Skb((Xj(a,Mie),Oy(wbb(wbb(5,a),a/10|0))))}\nfunction m_b(a){return BD(Qkb(a,KC(aR,lne,11,a.c.length,0,1)),1943)}\nfunction sMb(a,b,c){return c.f.c.length>0?HMb(a.a,b,c):HMb(a.b,b,c)}\nfunction SZb(a,b,c){!!a.d&&Lkb(a.d.e,a);a.d=b;!!a.d&&Dkb(a.d.e,c,a)}\nfunction a5b(a,b){i5b(b,a);k5b(a.d);k5b(BD(vNb(a,(Nyc(),wxc)),207))}\nfunction _4b(a,b){f5b(b,a);h5b(a.d);h5b(BD(vNb(a,(Nyc(),wxc)),207))}\nfunction Ypd(a,b){var c,d;c=aC(a,b);d=null;!!c&&(d=c.fe());return d}\nfunction Zpd(a,b){var c,d;c=tB(a,b);d=null;!!c&&(d=c.ie());return d}\nfunction $pd(a,b){var c,d;c=aC(a,b);d=null;!!c&&(d=c.ie());return d}\nfunction _pd(a,b){var c,d;c=aC(a,b);d=null;!!c&&(d=aqd(c));return d}\nfunction Tqd(a,b,c){var d;d=Wpd(c);ro(a.g,d,b);ro(a.i,b,c);return b}\nfunction Ez(a,b,c){var d;d=Cz();try{return Bz(a,b,c)}finally{Fz(d)}}\nfunction C6d(a){var b;b=a.Wg();this.a=JD(b,69)?BD(b,69).Zh():b.Kc()}\nfunction j3c(){D2c.call(this);this.j.c=KC(SI,Uhe,1,0,5,1);this.a=-1}\nfunction mxd(a,b,c,d){this.d=a;this.n=b;this.g=c;this.o=d;this.p=-1}\nfunction jk(a,b,c,d){this.e=d;this.d=null;this.c=a;this.a=b;this.b=c}\nfunction uEc(a,b,c){this.d=new HEc(this);this.e=a;this.i=b;this.f=c}\nfunction msc(){msc=ccb;ksc=new nsc(gle,0);lsc=new nsc('TOP_LEFT',1)}\nfunction cDc(){cDc=ccb;bDc=ix(meb(1),meb(4));aDc=ix(meb(1),meb(2))}\nfunction z_c(){z_c=ccb;y_c=as((s_c(),OC(GC(O_,1),Kie,551,0,[r_c])))}\nfunction q_c(){q_c=ccb;p_c=as((i_c(),OC(GC(N_,1),Kie,482,0,[h_c])))}\nfunction Z0c(){Z0c=ccb;Y0c=as((R0c(),OC(GC(W_,1),Kie,530,0,[Q0c])))}\nfunction hPb(){hPb=ccb;gPb=as((cPb(),OC(GC(GO,1),Kie,481,0,[bPb])))}\nfunction yLb(){vLb();return OC(GC(PN,1),Kie,406,0,[uLb,rLb,sLb,tLb])}\nfunction qxb(){lxb();return OC(GC(iL,1),Kie,297,0,[hxb,ixb,jxb,kxb])}\nfunction UOb(){ROb();return OC(GC(CO,1),Kie,394,0,[OOb,NOb,POb,QOb])}\nfunction UMb(){RMb();return OC(GC(jO,1),Kie,323,0,[OMb,NMb,PMb,QMb])}\nfunction sWb(){lWb();return OC(GC(SP,1),Kie,405,0,[hWb,kWb,iWb,jWb])}\nfunction kbc(){gbc();return OC(GC(VS,1),Kie,360,0,[fbc,dbc,ebc,cbc])}\nfunction Vc(a,b,c,d){return JD(c,54)?new Cg(a,b,c,d):new qg(a,b,c,d)}\nfunction Djc(){Ajc();return OC(GC(mV,1),Kie,411,0,[wjc,xjc,yjc,zjc])}\nfunction okc(a){var b;return a.j==(Ucd(),Rcd)&&(b=pkc(a),uqb(b,zcd))}\nfunction Mdc(a,b){var c;c=b.a;QZb(c,b.c.d);RZb(c,b.d.d);q7c(c.a,a.n)}\nfunction Smc(a,b){return BD(Btb(QAb(BD(Qc(a.k,b),15).Oc(),Hmc)),113)}\nfunction Tmc(a,b){return BD(Btb(RAb(BD(Qc(a.k,b),15).Oc(),Hmc)),113)}\nfunction _w(a){return new Kub(rmb(BD(a.a.dd(),14).gc(),a.a.cd()),16)}\nfunction Qq(a){if(JD(a,14)){return BD(a,14).dc()}return !a.Kc().Ob()}\nfunction ugc(a){qgc();if(JD(a.g,145)){return BD(a.g,145)}return null}\nfunction Ko(a){if(a.e.g!=a.b){throw vbb(new Apb)}return !!a.c&&a.d>0}\nfunction Xsb(a){sCb(a.b!=a.d.c);a.c=a.b;a.b=a.b.a;++a.a;return a.c.c}\nfunction Xjb(a,b){uCb(b);NC(a.a,a.c,b);a.c=a.c+1&a.a.length-1;_jb(a)}\nfunction Wjb(a,b){uCb(b);a.b=a.b-1&a.a.length-1;NC(a.a,a.b,b);_jb(a)}\nfunction A2c(a,b){var c;for(c=a.j.c.length;c0&&$fb(a.g,0,b,0,a.i);return b}\nfunction qEd(a,b){pEd();var c;c=BD(Ohb(oEd,a),55);return !c||c.wj(b)}\nfunction Twd(a){if(a.p!=1)throw vbb(new Ydb);return Tbb(a.f)<<24>>24}\nfunction axd(a){if(a.p!=1)throw vbb(new Ydb);return Tbb(a.k)<<24>>24}\nfunction gxd(a){if(a.p!=7)throw vbb(new Ydb);return Tbb(a.k)<<16>>16}\nfunction Zwd(a){if(a.p!=7)throw vbb(new Ydb);return Tbb(a.f)<<16>>16}\nfunction sr(a){var b;b=0;while(a.Ob()){a.Pb();b=wbb(b,1)}return Oy(b)}\nfunction nx(a,b){var c;c=new Vfb;a.xd(c);c.a+='..';b.yd(c);return c.a}\nfunction Sgc(a,b,c){var d;d=BD(Ohb(a.g,c),57);Ekb(a.a.c,new vgd(b,d))}\nfunction VCb(a,b,c){return Ddb(ED(Wd(irb(a.f,b))),ED(Wd(irb(a.f,c))))}\nfunction E2d(a,b,c){return F2d(a,b,c,JD(b,99)&&(BD(b,18).Bb&Tje)!=0)}\nfunction L2d(a,b,c){return M2d(a,b,c,JD(b,99)&&(BD(b,18).Bb&Tje)!=0)}\nfunction q3d(a,b,c){return r3d(a,b,c,JD(b,99)&&(BD(b,18).Bb&Tje)!=0)}\nfunction JJc(a,b){return a==(j0b(),h0b)&&b==h0b?4:a==h0b||b==h0b?8:32}\nfunction Nd(a,b){return PD(b)===PD(a)?'(this Map)':b==null?Xhe:fcb(b)}\nfunction kFd(a,b){return BD(b==null?Wd(irb(a.f,null)):Crb(a.g,b),281)}\nfunction Rqd(a,b,c){var d;d=Wpd(c);Rhb(a.b,d,b);Rhb(a.c,b,c);return b}\nfunction Bfd(a,b){var c;c=b;while(c){O6c(a,c.i,c.j);c=Xod(c)}return a}\nfunction kt(a,b){var c;c=vmb(Nu(new wu(a,b)));ir(new wu(a,b));return c}\nfunction R6d(a,b){Q6d();var c;c=BD(a,66).Mj();kVd(c,b);return c.Ok(b)}\nfunction TOc(a,b,c,d,e){var f;f=OOc(e,c,d);Ekb(b,tOc(e,f));XOc(a,e,b)}\nfunction mic(a,b,c){a.i=0;a.e=0;if(b==c){return}lic(a,b,c);kic(a,b,c)}\nfunction dB(a,b){var c;c=a.q.getHours();a.q.setFullYear(b+nje);YA(a,c)}\nfunction dC(d,a,b){if(b){var c=b.ee();d.a[a]=c(b)}else{delete d.a[a]}}\nfunction vB(d,a,b){if(b){var c=b.ee();b=c(b)}else{b=undefined}d.a[a]=b}\nfunction pCb(a){if(a<0){throw vbb(new Feb('Negative array size: '+a))}}\nfunction VKd(a){if(!a.n){$Kd(a);a.n=new JMd(a,j5,a);_Kd(a)}return a.n}\nfunction Fqb(a){sCb(a.a=0&&a.a[c]===b[c];c--);return c<0}\nfunction Ucc(a,b){Occ();var c;c=a.j.g-b.j.g;if(c!=0){return c}return 0}\nfunction Dtb(a,b){uCb(b);if(a.a!=null){return Itb(b.Kb(a.a))}return ztb}\nfunction Gx(a){var b;if(a){return new Bsb(a)}b=new zsb;Jq(b,a);return b}\nfunction GAb(a,b){var c;return b.b.Kb(SAb(a,b.c.Ee(),(c=new TBb(b),c)))}\nfunction Hub(a){zub();Eub(this,Tbb(xbb(Obb(a,24),nke)),Tbb(xbb(a,nke)))}\nfunction REb(){REb=ccb;QEb=as((MEb(),OC(GC(aN,1),Kie,428,0,[LEb,KEb])))}\nfunction ZEb(){ZEb=ccb;YEb=as((UEb(),OC(GC(bN,1),Kie,427,0,[SEb,TEb])))}\nfunction aSb(){aSb=ccb;_Rb=as((XRb(),OC(GC(gP,1),Kie,424,0,[VRb,WRb])))}\nfunction D5b(){D5b=ccb;C5b=as((y5b(),OC(GC(ZR,1),Kie,511,0,[x5b,w5b])))}\nfunction Cqc(){Cqc=ccb;Bqc=as((xqc(),OC(GC(JW,1),Kie,419,0,[vqc,wqc])))}\nfunction erc(){erc=ccb;drc=as((_qc(),OC(GC(MW,1),Kie,479,0,[$qc,Zqc])))}\nfunction eBc(){eBc=ccb;dBc=as((_Ac(),OC(GC(fX,1),Kie,376,0,[$Ac,ZAc])))}\nfunction GAc(){GAc=ccb;FAc=as((BAc(),OC(GC(cX,1),Kie,421,0,[zAc,AAc])))}\nfunction Npc(){Npc=ccb;Mpc=as((Ipc(),OC(GC(FW,1),Kie,422,0,[Gpc,Hpc])))}\nfunction rsc(){rsc=ccb;qsc=as((msc(),OC(GC(SW,1),Kie,420,0,[ksc,lsc])))}\nfunction MOc(){MOc=ccb;LOc=as((HOc(),OC(GC(DZ,1),Kie,520,0,[GOc,FOc])))}\nfunction ZIc(){ZIc=ccb;YIc=as((UIc(),OC(GC(mY,1),Kie,523,0,[TIc,SIc])))}\nfunction bMc(){bMc=ccb;aMc=as((YLc(),OC(GC(fZ,1),Kie,516,0,[XLc,WLc])))}\nfunction jMc(){jMc=ccb;iMc=as((eMc(),OC(GC(gZ,1),Kie,515,0,[cMc,dMc])))}\nfunction KQc(){KQc=ccb;JQc=as((FQc(),OC(GC(YZ,1),Kie,455,0,[DQc,EQc])))}\nfunction dUc(){dUc=ccb;cUc=as(($Tc(),OC(GC(F$,1),Kie,425,0,[ZTc,YTc])))}\nfunction XUc(){XUc=ccb;WUc=as((PUc(),OC(GC(K$,1),Kie,495,0,[NUc,OUc])))}\nfunction XTc(){XTc=ccb;WTc=as((STc(),OC(GC(E$,1),Kie,480,0,[QTc,RTc])))}\nfunction lWc(){lWc=ccb;kWc=as((fWc(),OC(GC(X$,1),Kie,426,0,[dWc,eWc])))}\nfunction i1c(){i1c=ccb;h1c=as((a1c(),OC(GC(X_,1),Kie,429,0,[_0c,$0c])))}\nfunction H_c(){H_c=ccb;G_c=as((C_c(),OC(GC(P_,1),Kie,430,0,[B_c,A_c])))}\nfunction UIc(){UIc=ccb;TIc=new VIc('UPPER',0);SIc=new VIc('LOWER',1)}\nfunction Lqd(a,b){var c;c=new eC;Spd(c,'x',b.a);Spd(c,'y',b.b);Qpd(a,c)}\nfunction Oqd(a,b){var c;c=new eC;Spd(c,'x',b.a);Spd(c,'y',b.b);Qpd(a,c)}\nfunction Jic(a,b){var c,d;d=false;do{c=Mic(a,b);d=d|c}while(c);return d}\nfunction zHc(a,b){var c,d;c=b;d=0;while(c>0){d+=a.a[c];c-=c&-c}return d}\nfunction Cfd(a,b){var c;c=b;while(c){O6c(a,-c.i,-c.j);c=Xod(c)}return a}\nfunction reb(a,b){var c,d;uCb(b);for(d=a.Kc();d.Ob();){c=d.Pb();b.td(c)}}\nfunction me(a,b){var c;c=b.cd();return new Wo(c,a.e.pc(c,BD(b.dd(),14)))}\nfunction Gsb(a,b,c,d){var e;e=new jtb;e.c=b;e.b=c;e.a=d;d.b=c.a=e;++a.b}\nfunction Nkb(a,b,c){var d;d=(tCb(b,a.c.length),a.c[b]);a.c[b]=c;return d}\nfunction lFd(a,b,c){return BD(b==null?jrb(a.f,null,c):Drb(a.g,b,c),281)}\nfunction fRb(a){return !!a.c&&!!a.d?oRb(a.c)+'->'+oRb(a.d):'e_'+FCb(a)}\nfunction FAb(a,b){return (Uzb(a),WAb(new YAb(a,new qBb(b,a.a)))).sd(DAb)}\nfunction tUb(){qUb();return OC(GC(zP,1),Kie,356,0,[lUb,mUb,nUb,oUb,pUb])}\nfunction _cd(){Ucd();return OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd])}\nfunction Dz(b){Az();return function(){return Ez(b,this,arguments);var a}}\nfunction sz(){if(Date.now){return Date.now()}return (new Date).getTime()}\nfunction OZb(a){if(!a.c||!a.d){return false}return !!a.c.i&&a.c.i==a.d.i}\nfunction pv(a){if(!a.c.Sb()){throw vbb(new utb)}a.a=true;return a.c.Ub()}\nfunction ko(a){a.i=0;Alb(a.b,null);Alb(a.c,null);a.a=null;a.e=null;++a.g}\nfunction ycb(a){wcb.call(this,a==null?Xhe:fcb(a),JD(a,78)?BD(a,78):null)}\nfunction PYb(a){MYb();yXb(this);this.a=new Psb;NYb(this,a);Dsb(this.a,a)}\nfunction jYb(){Ckb(this);this.b=new f7c(Pje,Pje);this.a=new f7c(Qje,Qje)}\nfunction rAb(a,b){this.c=0;this.b=b;jvb.call(this,a,17493);this.a=this.c}\nfunction wyb(a){oyb();if(lyb){return}this.c=a;this.e=true;this.a=new Rkb}\nfunction oyb(){oyb=ccb;lyb=true;jyb=false;kyb=false;nyb=false;myb=false}\nfunction C3c(a,b){if(JD(b,149)){return dfb(a.c,BD(b,149).c)}return false}\nfunction zUc(a,b){var c;c=0;!!a&&(c+=a.f.a/2);!!b&&(c+=b.f.a/2);return c}\nfunction j4c(a,b){var c;c=BD(Wrb(a.d,b),23);return c?c:BD(Wrb(a.e,b),23)}\nfunction Lzd(a){this.b=a;Fyd.call(this,a);this.a=BD(Ajd(this.b.a,4),126)}\nfunction Uzd(a){this.b=a;$yd.call(this,a);this.a=BD(Ajd(this.b.a,4),126)}\nfunction $Kd(a){if(!a.t){a.t=new YMd(a);vtd(new c0d(a),0,a.t)}return a.t}\nfunction kad(){ead();return OC(GC(t1,1),Kie,103,0,[cad,bad,aad,_9c,dad])}\nfunction Wbd(){Tbd();return OC(GC(C1,1),Kie,249,0,[Qbd,Sbd,Obd,Pbd,Rbd])}\nfunction Q5c(){N5c();return OC(GC(e1,1),Kie,175,0,[L5c,K5c,I5c,M5c,J5c])}\nfunction Q_c(){N_c();return OC(GC(Q_,1),Kie,316,0,[I_c,J_c,M_c,K_c,L_c])}\nfunction _zc(){Vzc();return OC(GC(_W,1),Kie,315,0,[Uzc,Rzc,Szc,Qzc,Tzc])}\nfunction sqc(){mqc();return OC(GC(IW,1),Kie,335,0,[iqc,hqc,kqc,lqc,jqc])}\nfunction n$c(){k$c();return OC(GC(y_,1),Kie,355,0,[g$c,f$c,i$c,h$c,j$c])}\nfunction _jc(){Xjc();return OC(GC(uV,1),Kie,363,0,[Tjc,Vjc,Wjc,Ujc,Sjc])}\nfunction Ftc(){Ctc();return OC(GC(TW,1),Kie,163,0,[Btc,xtc,ytc,ztc,Atc])}\nfunction T0d(){T0d=ccb;var a,b;R0d=(LFd(),b=new MPd,b);S0d=(a=new OJd,a)}\nfunction yUd(a){var b;if(!a.c){b=a.r;JD(b,88)&&(a.c=BD(b,26))}return a.c}\nfunction zc(a){a.e=3;a.d=a.Yb();if(a.e!=2){a.e=0;return true}return false}\nfunction RC(a){var b,c,d;b=a&Eje;c=a>>22&Eje;d=a<0?Fje:0;return TC(b,c,d)}\nfunction uy(a){var b,c,d,e;for(c=a,d=0,e=c.length;d0?ihb(a,b):lhb(a,-b)}\nfunction Rgb(a,b){if(b==0||a.e==0){return a}return b>0?lhb(a,b):ihb(a,-b)}\nfunction Rr(a){if(Qr(a)){a.c=a.a;return a.a.Pb()}else{throw vbb(new utb)}}\nfunction Yac(a){var b,c;b=a.c.i;c=a.d.i;return b.k==(j0b(),e0b)&&c.k==e0b}\nfunction kZb(a){var b;b=new UZb;tNb(b,a);yNb(b,(Nyc(),jxc),null);return b}\nfunction hid(a,b,c){var d;return d=a.Yg(b),d>=0?a._g(d,c,true):sid(a,b,c)}\nfunction uHb(a,b,c,d){var e;for(e=0;eb){throw vbb(new qcb(Jb(a,b,'index')))}return a}\nfunction zhb(a,b,c,d){var e;e=KC(WD,oje,25,b,15,1);Ahb(e,a,b,c,d);return e}\nfunction _A(a,b){var c;c=a.q.getHours()+(b/60|0);a.q.setMinutes(b);YA(a,c)}\nfunction A$c(a,b){return $wnd.Math.min(S6c(b.a,a.d.d.c),S6c(b.b,a.d.d.c))}\nfunction Thb(a,b){return ND(b)?b==null?krb(a.f,null):Erb(a.g,b):krb(a.f,b)}\nfunction b1b(a){this.c=a;this.a=new olb(this.c.a);this.b=new olb(this.c.b)}\nfunction kRb(){this.e=new Rkb;this.c=new Rkb;this.d=new Rkb;this.b=new Rkb}\nfunction MFb(){this.g=new PFb;this.b=new PFb;this.a=new Rkb;this.k=new Rkb}\nfunction Gjc(a,b,c){this.a=a;this.c=b;this.d=c;Ekb(b.e,this);Ekb(c.b,this)}\nfunction wBb(a,b){fvb.call(this,b.rd(),b.qd()&-6);uCb(a);this.a=a;this.b=b}\nfunction CBb(a,b){jvb.call(this,b.rd(),b.qd()&-6);uCb(a);this.a=a;this.b=b}\nfunction IBb(a,b){nvb.call(this,b.rd(),b.qd()&-6);uCb(a);this.a=a;this.b=b}\nfunction BQc(a,b,c){this.a=a;this.b=b;this.c=c;Ekb(a.t,this);Ekb(b.i,this)}\nfunction SRc(){this.b=new Psb;this.a=new Psb;this.b=new Psb;this.a=new Psb}\nfunction g6c(){g6c=ccb;f6c=new Lsd('org.eclipse.elk.labels.labelManager')}\nfunction Vac(){Vac=ccb;Uac=new Msd('separateLayerConnections',(gbc(),fbc))}\nfunction HOc(){HOc=ccb;GOc=new IOc('REGULAR',0);FOc=new IOc('CRITICAL',1)}\nfunction _Ac(){_Ac=ccb;$Ac=new aBc('STACKED',0);ZAc=new aBc('SEQUENCED',1)}\nfunction C_c(){C_c=ccb;B_c=new D_c('FIXED',0);A_c=new D_c('CENTER_NODE',1)}\nfunction PHc(a,b){var c;c=VHc(a,b);a.b=new BHc(c.c.length);return OHc(a,c)}\nfunction KAd(a,b,c){var d;++a.e;--a.f;d=BD(a.d[b].$c(c),133);return d.dd()}\nfunction JJd(a){var b;if(!a.a){b=a.r;JD(b,148)&&(a.a=BD(b,148))}return a.a}\nfunction poc(a){if(a.a){if(a.e){return poc(a.e)}}else{return a}return null}\nfunction ODc(a,b){if(a.pb.p){return -1}return 0}\nfunction pvb(a,b){uCb(b);if(a.c=0,'Initial capacity must not be negative')}\nfunction lHb(){lHb=ccb;kHb=as((gHb(),OC(GC(pN,1),Kie,232,0,[dHb,eHb,fHb])))}\nfunction SHb(){SHb=ccb;RHb=as((NHb(),OC(GC(sN,1),Kie,461,0,[LHb,KHb,MHb])))}\nfunction JIb(){JIb=ccb;IIb=as((EIb(),OC(GC(zN,1),Kie,462,0,[DIb,CIb,BIb])))}\nfunction Kyb(){Kyb=ccb;Jyb=as((Fyb(),OC(GC(xL,1),Kie,132,0,[Cyb,Dyb,Eyb])))}\nfunction DTb(){DTb=ccb;CTb=as((yTb(),OC(GC(oP,1),Kie,379,0,[wTb,vTb,xTb])))}\nfunction WXb(){WXb=ccb;VXb=as((RXb(),OC(GC(hQ,1),Kie,423,0,[QXb,PXb,OXb])))}\nfunction Zpc(){Zpc=ccb;Ypc=as((Rpc(),OC(GC(GW,1),Kie,314,0,[Ppc,Opc,Qpc])))}\nfunction gqc(){gqc=ccb;fqc=as((bqc(),OC(GC(HW,1),Kie,337,0,[$pc,aqc,_pc])))}\nfunction Lqc(){Lqc=ccb;Kqc=as((Gqc(),OC(GC(KW,1),Kie,450,0,[Eqc,Dqc,Fqc])))}\nfunction Kkc(){Kkc=ccb;Jkc=as((Fkc(),OC(GC(vV,1),Kie,361,0,[Ekc,Dkc,Ckc])))}\nfunction jsc(){jsc=ccb;isc=as((esc(),OC(GC(RW,1),Kie,303,0,[csc,dsc,bsc])))}\nfunction asc(){asc=ccb;_rc=as((Xrc(),OC(GC(QW,1),Kie,292,0,[Vrc,Wrc,Urc])))}\nfunction Dzc(){Dzc=ccb;Czc=as((xzc(),OC(GC(ZW,1),Kie,378,0,[uzc,vzc,wzc])))}\nfunction YAc(){YAc=ccb;XAc=as((TAc(),OC(GC(eX,1),Kie,375,0,[QAc,RAc,SAc])))}\nfunction yAc(){yAc=ccb;xAc=as((tAc(),OC(GC(bX,1),Kie,339,0,[rAc,qAc,sAc])))}\nfunction PAc(){PAc=ccb;OAc=as((KAc(),OC(GC(dX,1),Kie,452,0,[JAc,HAc,IAc])))}\nfunction QBc(){QBc=ccb;PBc=as((LBc(),OC(GC(jX,1),Kie,377,0,[JBc,KBc,IBc])))}\nfunction yBc(){yBc=ccb;xBc=as((tBc(),OC(GC(hX,1),Kie,336,0,[qBc,rBc,sBc])))}\nfunction HBc(){HBc=ccb;GBc=as((CBc(),OC(GC(iX,1),Kie,338,0,[BBc,zBc,ABc])))}\nfunction wGc(){wGc=ccb;vGc=as((rGc(),OC(GC(PX,1),Kie,454,0,[oGc,pGc,qGc])))}\nfunction zVc(){zVc=ccb;yVc=as((tVc(),OC(GC(O$,1),Kie,442,0,[sVc,qVc,rVc])))}\nfunction vWc(){vWc=ccb;uWc=as((pWc(),OC(GC(Y$,1),Kie,380,0,[mWc,nWc,oWc])))}\nfunction EYc(){EYc=ccb;DYc=as((zYc(),OC(GC(q_,1),Kie,381,0,[xYc,yYc,wYc])))}\nfunction yXc(){yXc=ccb;xXc=as((sXc(),OC(GC(b_,1),Kie,293,0,[qXc,rXc,pXc])))}\nfunction b_c(){b_c=ccb;a_c=as((Y$c(),OC(GC(J_,1),Kie,437,0,[V$c,W$c,X$c])))}\nfunction mbd(){mbd=ccb;lbd=as((hbd(),OC(GC(z1,1),Kie,334,0,[fbd,ebd,gbd])))}\nfunction vad(){vad=ccb;uad=as((qad(),OC(GC(u1,1),Kie,272,0,[nad,oad,pad])))}\nfunction icd(){dcd();return OC(GC(D1,1),Kie,98,0,[ccd,bcd,acd,Zbd,_bd,$bd])}\nfunction ikd(a,b){return !a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),qAd(a.o,b)}\nfunction NAd(a){!a.g&&(a.g=new JCd);!a.g.d&&(a.g.d=new MBd(a));return a.g.d}\nfunction yAd(a){!a.g&&(a.g=new JCd);!a.g.a&&(a.g.a=new SBd(a));return a.g.a}\nfunction EAd(a){!a.g&&(a.g=new JCd);!a.g.b&&(a.g.b=new GBd(a));return a.g.b}\nfunction FAd(a){!a.g&&(a.g=new JCd);!a.g.c&&(a.g.c=new iCd(a));return a.g.c}\nfunction A2d(a,b,c){var d,e;e=new p4d(b,a);for(d=0;dc||b=0?a._g(c,true,true):sid(a,b,true)}\nfunction s6b(a,b){return Kdb(Edb(ED(vNb(a,(wtc(),htc)))),Edb(ED(vNb(b,htc))))}\nfunction pUc(){pUc=ccb;oUc=b3c(b3c(g3c(new j3c,(yRc(),vRc)),(qSc(),pSc)),lSc)}\nfunction IHc(a,b,c){var d;d=SHc(a,b,c);a.b=new BHc(d.c.length);return KHc(a,d)}\nfunction qhe(a){if(a.b<=0)throw vbb(new utb);--a.b;a.a-=a.c.c;return meb(a.a)}\nfunction ptd(a){var b;if(!a.a){throw vbb(new vtb)}b=a.a;a.a=Xod(a.a);return b}\nfunction dBb(a){while(!a.a){if(!HBb(a.c,new hBb(a))){return false}}return true}\nfunction vr(a){var b;Qb(a);if(JD(a,198)){b=BD(a,198);return b}return new wr(a)}\nfunction r3c(a){p3c();BD(a.We((Y9c(),x9c)),174).Fc((rcd(),ocd));a.Ye(w9c,null)}\nfunction p3c(){p3c=ccb;m3c=new v3c;o3c=new x3c;n3c=mn((Y9c(),w9c),m3c,b9c,o3c)}\nfunction fWc(){fWc=ccb;dWc=new hWc('LEAF_NUMBER',0);eWc=new hWc('NODE_SIZE',1)}\nfunction UMc(a,b,c){a.a=b;a.c=c;a.b.a.$b();Osb(a.d);a.e.a.c=KC(SI,Uhe,1,0,5,1)}\nfunction yHc(a){a.a=KC(WD,oje,25,a.b+1,15,1);a.c=KC(WD,oje,25,a.b,15,1);a.d=0}\nfunction MWb(a,b){if(a.a.ue(b.d,a.b)>0){Ekb(a.c,new dWb(b.c,b.d,a.d));a.b=b.d}}\nfunction nud(a,b){if(a.g==null||b>=a.i)throw vbb(new $zd(b,a.i));return a.g[b]}\nfunction pOd(a,b,c){Itd(a,c);if(c!=null&&!a.wj(c)){throw vbb(new tcb)}return c}\nfunction KLd(a){var b;if(a.Ek()){for(b=a.i-1;b>=0;--b){qud(a,b)}}return wud(a)}\nfunction Bwb(a){var b,c;if(!a.b){return null}c=a.b;while(b=c.a[0]){c=b}return c}\nfunction ulb(a,b){var c,d;pCb(b);return c=(d=a.slice(0,b),PC(d,a)),c.length=b,c}\nfunction Klb(a,b,c,d){var e;d=(ipb(),!d?fpb:d);e=a.slice(b,c);Llb(e,a,b,c,-b,d)}\nfunction bid(a,b,c,d,e){return b<0?sid(a,c,d):BD(c,66).Nj().Pj(a,a.yh(),b,d,e)}\nfunction hZd(a){if(JD(a,172)){return ''+BD(a,172).a}return a==null?null:fcb(a)}\nfunction iZd(a){if(JD(a,172)){return ''+BD(a,172).a}return a==null?null:fcb(a)}\nfunction nDb(a,b){if(b.a){throw vbb(new hz(Hke))}Qqb(a.a,b);b.a=a;!a.j&&(a.j=b)}\nfunction qBb(a,b){nvb.call(this,b.rd(),b.qd()&-16449);uCb(a);this.a=a;this.c=b}\nfunction Ti(a,b){var c,d;d=b/a.c.Hd().gc()|0;c=b%a.c.Hd().gc();return Mi(a,d,c)}\nfunction NHb(){NHb=ccb;LHb=new OHb(jle,0);KHb=new OHb(gle,1);MHb=new OHb(kle,2)}\nfunction lxb(){lxb=ccb;hxb=new mxb('All',0);ixb=new rxb;jxb=new txb;kxb=new wxb}\nfunction zxb(){zxb=ccb;yxb=as((lxb(),OC(GC(iL,1),Kie,297,0,[hxb,ixb,jxb,kxb])))}\nfunction uWb(){uWb=ccb;tWb=as((lWb(),OC(GC(SP,1),Kie,405,0,[hWb,kWb,iWb,jWb])))}\nfunction ALb(){ALb=ccb;zLb=as((vLb(),OC(GC(PN,1),Kie,406,0,[uLb,rLb,sLb,tLb])))}\nfunction WMb(){WMb=ccb;VMb=as((RMb(),OC(GC(jO,1),Kie,323,0,[OMb,NMb,PMb,QMb])))}\nfunction WOb(){WOb=ccb;VOb=as((ROb(),OC(GC(CO,1),Kie,394,0,[OOb,NOb,POb,QOb])))}\nfunction GRc(){GRc=ccb;FRc=as((yRc(),OC(GC(h$,1),Kie,393,0,[uRc,vRc,wRc,xRc])))}\nfunction mbc(){mbc=ccb;lbc=as((gbc(),OC(GC(VS,1),Kie,360,0,[fbc,dbc,ebc,cbc])))}\nfunction oXc(){oXc=ccb;nXc=as((iXc(),OC(GC(a_,1),Kie,340,0,[hXc,fXc,gXc,eXc])))}\nfunction Fjc(){Fjc=ccb;Ejc=as((Ajc(),OC(GC(mV,1),Kie,411,0,[wjc,xjc,yjc,zjc])))}\nfunction Pzc(){Pzc=ccb;Ozc=as((Izc(),OC(GC($W,1),Kie,197,0,[Gzc,Hzc,Fzc,Ezc])))}\nfunction ugd(){ugd=ccb;tgd=as((pgd(),OC(GC(k2,1),Kie,396,0,[mgd,ngd,lgd,ogd])))}\nfunction xbd(){xbd=ccb;wbd=as((rbd(),OC(GC(A1,1),Kie,285,0,[qbd,nbd,obd,pbd])))}\nfunction Fad(){Fad=ccb;Ead=as((Aad(),OC(GC(v1,1),Kie,218,0,[zad,xad,wad,yad])))}\nfunction Ied(){Ied=ccb;Hed=as((Ded(),OC(GC(O1,1),Kie,311,0,[Ced,zed,Bed,Aed])))}\nfunction ydd(){ydd=ccb;xdd=as((tdd(),OC(GC(I1,1),Kie,374,0,[rdd,sdd,qdd,pdd])))}\nfunction A9d(){A9d=ccb;Smd();x9d=Pje;w9d=Qje;z9d=new Ndb(Pje);y9d=new Ndb(Qje)}\nfunction _qc(){_qc=ccb;$qc=new arc(ane,0);Zqc=new arc('IMPROVE_STRAIGHTNESS',1)}\nfunction eIc(a,b){FHc();return Ekb(a,new vgd(b,meb(b.e.c.length+b.g.c.length)))}\nfunction gIc(a,b){FHc();return Ekb(a,new vgd(b,meb(b.e.c.length+b.g.c.length)))}\nfunction PC(a,b){HC(b)!=10&&OC(rb(b),b.hm,b.__elementTypeId$,HC(b),a);return a}\nfunction Lkb(a,b){var c;c=Jkb(a,b,0);if(c==-1){return false}Kkb(a,c);return true}\nfunction Zrb(a,b){var c;c=BD(Thb(a.e,b),387);if(c){jsb(c);return c.e}return null}\nfunction Jbb(a){var b;if(Fbb(a)){b=0-a;if(!isNaN(b)){return b}}return zbb(hD(a))}\nfunction Jkb(a,b,c){for(;c=0?fid(a,c,true,true):sid(a,b,true)}\nfunction vgc(a,b){qgc();var c,d;c=ugc(a);d=ugc(b);return !!c&&!!d&&!omb(c.k,d.k)}\nfunction Gqd(a,b){dld(a,b==null||Ldb((uCb(b),b))||isNaN((uCb(b),b))?0:(uCb(b),b))}\nfunction Hqd(a,b){eld(a,b==null||Ldb((uCb(b),b))||isNaN((uCb(b),b))?0:(uCb(b),b))}\nfunction Iqd(a,b){cld(a,b==null||Ldb((uCb(b),b))||isNaN((uCb(b),b))?0:(uCb(b),b))}\nfunction Jqd(a,b){ald(a,b==null||Ldb((uCb(b),b))||isNaN((uCb(b),b))?0:(uCb(b),b))}\nfunction agd(a){(!this.q?(mmb(),mmb(),kmb):this.q).Ac(!a.q?(mmb(),mmb(),kmb):a.q)}\nfunction S2d(a,b){return JD(b,99)&&(BD(b,18).Bb&Tje)!=0?new s4d(b,a):new p4d(b,a)}\nfunction U2d(a,b){return JD(b,99)&&(BD(b,18).Bb&Tje)!=0?new s4d(b,a):new p4d(b,a)}\nfunction INb(a,b){HNb=new tOb;FNb=b;GNb=a;BD(GNb.b,65);KNb(GNb,HNb,null);JNb(GNb)}\nfunction uud(a,b,c){var d;d=a.g[b];mud(a,b,a.oi(b,c));a.gi(b,c,d);a.ci();return d}\nfunction Ftd(a,b){var c;c=a.Xc(b);if(c>=0){a.$c(c);return true}else{return false}}\nfunction YId(a){var b;if(a.d!=a.r){b=wId(a);a.e=!!b&&b.Cj()==Bve;a.d=b}return a.e}\nfunction fr(a,b){var c;Qb(a);Qb(b);c=false;while(b.Ob()){c=c|a.Fc(b.Pb())}return c}\nfunction Wrb(a,b){var c;c=BD(Ohb(a.e,b),387);if(c){Yrb(a,c);return c.e}return null}\nfunction UA(a){var b,c;b=a/60|0;c=a%60;if(c==0){return ''+b}return ''+b+':'+(''+c)}\nfunction LAb(a,b){var c,d;Uzb(a);d=new IBb(b,a.a);c=new fBb(d);return new YAb(a,c)}\nfunction tB(d,a){var b=d.a[a];var c=(rC(),qC)[typeof b];return c?c(b):xC(typeof b)}\nfunction yzc(a){switch(a.g){case 0:return Ohe;case 1:return -1;default:return 0;}}\nfunction oD(a){if(eD(a,(wD(),vD))<0){return -aD(hD(a))}return a.l+a.m*Hje+a.h*Ije}\nfunction HC(a){return a.__elementTypeCategory$==null?10:a.__elementTypeCategory$}\nfunction dub(a){var b;b=a.b.c.length==0?null:Ikb(a.b,0);b!=null&&fub(a,0);return b}\nfunction uA(a,b){while(b[0]=0){++b[0]}}\nfunction sgb(a,b){this.e=b;this.a=vgb(a);this.a<54?(this.f=Sbb(a)):(this.c=ghb(a))}\nfunction vge(a,b,c,d){wfe();xfe.call(this,26);this.c=a;this.a=b;this.d=c;this.b=d}\nfunction EA(a,b,c){var d,e;d=10;for(e=0;ea.a[d]&&(d=c)}return d}\nfunction fic(a,b){var c;c=Jy(a.e.c,b.e.c);if(c==0){return Kdb(a.e.d,b.e.d)}return c}\nfunction Ogb(a,b){if(b.e==0){return Ggb}if(a.e==0){return Ggb}return Dhb(),Ehb(a,b)}\nfunction nCb(a,b){if(!a){throw vbb(new Wdb(DCb('Enum constant undefined: %s',b)))}}\nfunction AWb(){AWb=ccb;xWb=new XWb;yWb=new _Wb;vWb=new dXb;wWb=new hXb;zWb=new lXb}\nfunction UEb(){UEb=ccb;SEb=new VEb('BY_SIZE',0);TEb=new VEb('BY_SIZE_AND_SHAPE',1)}\nfunction XRb(){XRb=ccb;VRb=new YRb('EADES',0);WRb=new YRb('FRUCHTERMAN_REINGOLD',1)}\nfunction xqc(){xqc=ccb;vqc=new yqc('READING_DIRECTION',0);wqc=new yqc('ROTATION',1)}\nfunction uqc(){uqc=ccb;tqc=as((mqc(),OC(GC(IW,1),Kie,335,0,[iqc,hqc,kqc,lqc,jqc])))}\nfunction bAc(){bAc=ccb;aAc=as((Vzc(),OC(GC(_W,1),Kie,315,0,[Uzc,Rzc,Szc,Qzc,Tzc])))}\nfunction bkc(){bkc=ccb;akc=as((Xjc(),OC(GC(uV,1),Kie,363,0,[Tjc,Vjc,Wjc,Ujc,Sjc])))}\nfunction Htc(){Htc=ccb;Gtc=as((Ctc(),OC(GC(TW,1),Kie,163,0,[Btc,xtc,ytc,ztc,Atc])))}\nfunction S_c(){S_c=ccb;R_c=as((N_c(),OC(GC(Q_,1),Kie,316,0,[I_c,J_c,M_c,K_c,L_c])))}\nfunction S5c(){S5c=ccb;R5c=as((N5c(),OC(GC(e1,1),Kie,175,0,[L5c,K5c,I5c,M5c,J5c])))}\nfunction p$c(){p$c=ccb;o$c=as((k$c(),OC(GC(y_,1),Kie,355,0,[g$c,f$c,i$c,h$c,j$c])))}\nfunction vUb(){vUb=ccb;uUb=as((qUb(),OC(GC(zP,1),Kie,356,0,[lUb,mUb,nUb,oUb,pUb])))}\nfunction mad(){mad=ccb;lad=as((ead(),OC(GC(t1,1),Kie,103,0,[cad,bad,aad,_9c,dad])))}\nfunction Ybd(){Ybd=ccb;Xbd=as((Tbd(),OC(GC(C1,1),Kie,249,0,[Qbd,Sbd,Obd,Pbd,Rbd])))}\nfunction cdd(){cdd=ccb;bdd=as((Ucd(),OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd])))}\nfunction _1c(a,b){var c;c=BD(Ohb(a.a,b),134);if(!c){c=new zNb;Rhb(a.a,b,c)}return c}\nfunction hoc(a){var b;b=BD(vNb(a,(wtc(),usc)),305);if(b){return b.a==a}return false}\nfunction ioc(a){var b;b=BD(vNb(a,(wtc(),usc)),305);if(b){return b.i==a}return false}\nfunction Jub(a,b){uCb(b);Iub(a);if(a.d.Ob()){b.td(a.d.Pb());return true}return false}\nfunction Oy(a){if(ybb(a,Ohe)>0){return Ohe}if(ybb(a,Rie)<0){return Rie}return Tbb(a)}\nfunction Cv(a){if(a<3){Xj(a,Hie);return a+1}if(a=0&&b=-0.01&&a.a<=ple&&(a.a=0);a.b>=-0.01&&a.b<=ple&&(a.b=0);return a}\nfunction sfb(a,b){return b==(ntb(),ntb(),mtb)?a.toLocaleLowerCase():a.toLowerCase()}\nfunction idb(a){return ((a.i&2)!=0?'interface ':(a.i&1)!=0?'':'class ')+(fdb(a),a.o)}\nfunction Pnd(a){var b,c;c=(b=new SSd,b);wtd((!a.q&&(a.q=new cUd(n5,a,11,10)),a.q),c)}\nfunction Pdd(a,b){var c;c=b>0?b-1:b;return Vdd(Wdd(Xdd(Ydd(new Zdd,c),a.n),a.j),a.k)}\nfunction u2d(a,b,c,d){var e;a.j=-1;Qxd(a,I2d(a,b,c),(Q6d(),e=BD(b,66).Mj(),e.Ok(d)))}\nfunction VWb(a){this.g=a;this.f=new Rkb;this.a=$wnd.Math.min(this.g.c.c,this.g.d.c)}\nfunction mDb(a){this.b=new Rkb;this.a=new Rkb;this.c=new Rkb;this.d=new Rkb;this.e=a}\nfunction Cnc(a,b){this.a=new Lqb;this.e=new Lqb;this.b=(xzc(),wzc);this.c=a;this.b=b}\nfunction bIb(a,b,c){$Gb.call(this);THb(this);this.a=a;this.c=c;this.b=b.d;this.f=b.e}\nfunction yd(a){this.d=a;this.c=a.c.vc().Kc();this.b=null;this.a=null;this.e=(hs(),gs)}\nfunction zud(a){if(a<0){throw vbb(new Wdb('Illegal Capacity: '+a))}this.g=this.ri(a)}\nfunction avb(a,b){if(0>a||a>b){throw vbb(new scb('fromIndex: 0, toIndex: '+a+oke+b))}}\nfunction Gs(a){var b;if(a.a==a.b.a){throw vbb(new utb)}b=a.a;a.c=b;a.a=a.a.e;return b}\nfunction Zsb(a){var b;yCb(!!a.c);b=a.c.a;Nsb(a.d,a.c);a.b==a.c?(a.b=b):--a.a;a.c=null}\nfunction VAb(a,b){var c;Uzb(a);c=new lBb(a,a.a.rd(),a.a.qd()|4,b);return new YAb(a,c)}\nfunction ke(a,b){var c,d;c=BD(Hv(a.d,b),14);if(!c){return null}d=b;return a.e.pc(d,c)}\nfunction xac(a,b){var c,d;for(d=a.Kc();d.Ob();){c=BD(d.Pb(),70);yNb(c,(wtc(),Ssc),b)}}\nfunction t9b(a){var b;b=Edb(ED(vNb(a,(Nyc(),Zwc))));if(b<0){b=0;yNb(a,Zwc,b)}return b}\nfunction ifc(a,b,c){var d;d=$wnd.Math.max(0,a.b/2-0.5);cfc(c,d,1);Ekb(b,new rfc(c,d))}\nfunction NMc(a,b,c){var d;d=a.a.e[BD(b.a,10).p]-a.a.e[BD(c.a,10).p];return QD(Eeb(d))}\nfunction iZb(a,b,c,d,e,f){var g;g=kZb(d);QZb(g,e);RZb(g,f);Rc(a.a,d,new BZb(g,b,c.f))}\nfunction Bid(a,b){var c;c=YKd(a.Tg(),b);if(!c){throw vbb(new Wdb(ite+b+lte))}return c}\nfunction ntd(a,b){var c;c=a;while(Xod(c)){c=Xod(c);if(c==b){return true}}return false}\nfunction Uw(a,b){var c,d,e;d=b.a.cd();c=BD(b.a.dd(),14).gc();for(e=0;e0){a.a/=b;a.b/=b}return a}\nfunction bKd(a){var b;if(a.w){return a.w}else{b=cKd(a);!!b&&!b.kh()&&(a.w=b);return b}}\nfunction gZd(a){var b;if(a==null){return null}else{b=BD(a,190);return Umd(b,b.length)}}\nfunction qud(a,b){if(a.g==null||b>=a.i)throw vbb(new $zd(b,a.i));return a.li(b,a.g[b])}\nfunction Mmc(a){var b,c;b=a.a.d.j;c=a.c.d.j;while(b!=c){rqb(a.b,b);b=Xcd(b)}rqb(a.b,b)}\nfunction Jmc(a){var b;for(b=0;b=14&&b<=16)));return a}\nfunction dcb(a,b,c){var d=function(){return a.apply(d,arguments)};b.apply(d,c);return d}\nfunction TLc(a,b,c){var d,e;d=b;do{e=Edb(a.p[d.p])+c;a.p[d.p]=e;d=a.a[d.p]}while(d!=b)}\nfunction NQd(a,b){var c,d;d=a.a;c=OQd(a,b,null);d!=b&&!a.e&&(c=QQd(a,b,c));!!c&&c.Fi()}\nfunction ADb(a,b){return Iy(),My(Qie),$wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)}\nfunction Ky(a,b){Iy();My(Qie);return $wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)}\nfunction Akc(a,b){gkc();return beb(a.b.c.length-a.e.c.length,b.b.c.length-b.e.c.length)}\nfunction oo(a,b){return Kv(uo(a,b,Tbb(Ibb(Eie,keb(Tbb(Ibb(b==null?0:tb(b),Fie)),15)))))}\nfunction o0b(){o0b=ccb;n0b=as((j0b(),OC(GC(NQ,1),Kie,267,0,[h0b,g0b,e0b,i0b,f0b,d0b])))}\nfunction n8c(){n8c=ccb;m8c=as((i8c(),OC(GC(r1,1),Kie,291,0,[h8c,g8c,f8c,d8c,c8c,e8c])))}\nfunction K7c(){K7c=ccb;J7c=as((F7c(),OC(GC(o1,1),Kie,248,0,[z7c,C7c,D7c,E7c,A7c,B7c])))}\nfunction Fpc(){Fpc=ccb;Epc=as((Apc(),OC(GC(EW,1),Kie,227,0,[wpc,ypc,vpc,xpc,zpc,upc])))}\nfunction Drc(){Drc=ccb;Crc=as((yrc(),OC(GC(OW,1),Kie,275,0,[wrc,trc,xrc,vrc,urc,rrc])))}\nfunction qrc(){qrc=ccb;prc=as((lrc(),OC(GC(NW,1),Kie,274,0,[irc,hrc,krc,grc,jrc,frc])))}\nfunction tzc(){tzc=ccb;szc=as((lzc(),OC(GC(YW,1),Kie,313,0,[jzc,hzc,fzc,gzc,kzc,izc])))}\nfunction Yqc(){Yqc=ccb;Xqc=as((Sqc(),OC(GC(LW,1),Kie,276,0,[Nqc,Mqc,Pqc,Oqc,Rqc,Qqc])))}\nfunction wSc(){wSc=ccb;vSc=as((qSc(),OC(GC(t$,1),Kie,327,0,[pSc,lSc,nSc,mSc,oSc,kSc])))}\nfunction ycd(){ycd=ccb;xcd=as((rcd(),OC(GC(E1,1),Kie,273,0,[pcd,ncd,ocd,mcd,lcd,qcd])))}\nfunction Rad(){Rad=ccb;Qad=as((Mad(),OC(GC(w1,1),Kie,312,0,[Kad,Iad,Lad,Gad,Jad,Had])))}\nfunction Lbd(){Hbd();return OC(GC(B1,1),Kie,93,0,[zbd,ybd,Bbd,Gbd,Fbd,Ebd,Cbd,Dbd,Abd])}\nfunction vkd(a,b){var c;c=a.a;a.a=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,0,c,a.a))}\nfunction wkd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,1,c,a.b))}\nfunction hmd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,3,c,a.b))}\nfunction ald(a,b){var c;c=a.f;a.f=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,3,c,a.f))}\nfunction cld(a,b){var c;c=a.g;a.g=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,4,c,a.g))}\nfunction dld(a,b){var c;c=a.i;a.i=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,5,c,a.i))}\nfunction eld(a,b){var c;c=a.j;a.j=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,6,c,a.j))}\nfunction omd(a,b){var c;c=a.j;a.j=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,1,c,a.j))}\nfunction imd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,4,c,a.c))}\nfunction pmd(a,b){var c;c=a.k;a.k=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new lSd(a,2,c,a.k))}\nfunction qQd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new mSd(a,2,c,a.d))}\nfunction AId(a,b){var c;c=a.s;a.s=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new mSd(a,4,c,a.s))}\nfunction DId(a,b){var c;c=a.t;a.t=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new mSd(a,5,c,a.t))}\nfunction _Jd(a,b){var c;c=a.F;a.F=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,5,c,b))}\nfunction izd(a,b){var c;c=BD(Ohb((pEd(),oEd),a),55);return c?c.xj(b):KC(SI,Uhe,1,b,5,1)}\nfunction Xpd(a,b){var c,d;c=b in a.a;if(c){d=aC(a,b).he();if(d){return d.a}}return null}\nfunction ftd(a,b){var c,d,e;c=(d=(Fhd(),e=new Jod,e),!!b&&God(d,b),d);Hod(c,a);return c}\nfunction LLd(a,b,c){Itd(a,c);if(!a.Bk()&&c!=null&&!a.wj(c)){throw vbb(new tcb)}return c}\nfunction Xdd(a,b){a.n=b;if(a.n){a.f=new Rkb;a.e=new Rkb}else{a.f=null;a.e=null}return a}\nfunction ndb(a,b,c,d,e,f){var g;g=ldb(a,b);zdb(c,g);g.i=e?8:0;g.f=d;g.e=e;g.g=f;return g}\nfunction rSd(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=1;this.c=a;this.a=c}\nfunction tSd(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=2;this.c=a;this.a=c}\nfunction BSd(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=6;this.c=a;this.a=c}\nfunction GSd(a,b,c,d,e){this.d=b;this.k=d;this.f=e;this.o=-1;this.p=7;this.c=a;this.a=c}\nfunction xSd(a,b,c,d,e){this.d=b;this.j=d;this.e=e;this.o=-1;this.p=4;this.c=a;this.a=c}\nfunction rDb(a,b){var c,d,e,f;for(d=b,e=0,f=d.length;e=0);if(ekb(a.d,a.c)<0){a.a=a.a-1&a.d.a.length-1;a.b=a.d.c}a.c=-1}\nfunction pgb(a){if(a.a<54){return a.f<0?-1:a.f>0?1:0}return (!a.c&&(a.c=fhb(a.f)),a.c).e}\nfunction My(a){if(!(a>=0)){throw vbb(new Wdb('tolerance ('+a+') must be >= 0'))}return a}\nfunction n4c(){if(!f4c){f4c=new m4c;l4c(f4c,OC(GC(C0,1),Uhe,130,0,[new Z9c]))}return f4c}\nfunction KAc(){KAc=ccb;JAc=new LAc(ole,0);HAc=new LAc('INPUT',1);IAc=new LAc('OUTPUT',2)}\nfunction bqc(){bqc=ccb;$pc=new cqc('ARD',0);aqc=new cqc('MSD',1);_pc=new cqc('MANUAL',2)}\nfunction rGc(){rGc=ccb;oGc=new sGc('BARYCENTER',0);pGc=new sGc(Bne,1);qGc=new sGc(Cne,2)}\nfunction ztd(a,b){var c;c=a.gc();if(b<0||b>c)throw vbb(new Cyd(b,c));return new czd(a,b)}\nfunction JAd(a,b){var c;if(JD(b,42)){return a.c.Mc(b)}else{c=qAd(a,b);LAd(a,b);return c}}\nfunction $nd(a,b,c){yId(a,b);pnd(a,c);AId(a,0);DId(a,1);CId(a,true);BId(a,true);return a}\nfunction Xj(a,b){if(a<0){throw vbb(new Wdb(b+' cannot be negative but was: '+a))}return a}\nfunction Bt(a,b){var c,d;for(c=0,d=a.gc();c0){return BD(Ikb(c.a,d-1),10)}return null}\nfunction Lkd(a,b){var c;c=a.k;a.k=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,2,c,a.k))}\nfunction kmd(a,b){var c;c=a.f;a.f=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,8,c,a.f))}\nfunction lmd(a,b){var c;c=a.i;a.i=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,7,c,a.i))}\nfunction Hod(a,b){var c;c=a.a;a.a=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,8,c,a.a))}\nfunction zpd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,0,c,a.b))}\nfunction UUd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,0,c,a.b))}\nfunction VUd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,1,c,a.c))}\nfunction Apd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,1,c,a.c))}\nfunction pQd(a,b){var c;c=a.c;a.c=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,4,c,a.c))}\nfunction PHd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,1,c,a.d))}\nfunction jKd(a,b){var c;c=a.D;a.D=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,2,c,a.D))}\nfunction Rdd(a,b){if(a.r>0&&a.c0&&a.g!=0&&Rdd(a.i,b/a.r*a.i.d)}}\nfunction dge(a,b,c){var d;a.b=b;a.a=c;d=(a.a&512)==512?new hee:new ude;a.c=ode(d,a.b,a.a)}\nfunction g3d(a,b){return T6d(a.e,b)?(Q6d(),YId(b)?new R7d(b,a):new f7d(b,a)):new c8d(b,a)}\nfunction _o(a,b){return Fv(vo(a.a,b,Tbb(Ibb(Eie,keb(Tbb(Ibb(b==null?0:tb(b),Fie)),15)))))}\nfunction Nyb(a,b,c){return Ayb(a,new Kzb(b),new Mzb,new Ozb(c),OC(GC(xL,1),Kie,132,0,[]))}\nfunction pAb(a){var b,c;if(0>a){return new yAb}b=a+1;c=new rAb(b,a);return new vAb(null,c)}\nfunction umb(a,b){mmb();var c;c=new Mqb(1);ND(a)?Shb(c,a,b):jrb(c.f,a,b);return new iob(c)}\nfunction aMb(a,b){var c,d;c=a.o+a.p;d=b.o+b.p;if(cb){b<<=1;return b>0?b:Iie}return b}\nfunction xc(a){Ub(a.e!=3);switch(a.e){case 2:return false;case 0:return true;}return zc(a)}\nfunction T6c(a,b){var c;if(JD(b,8)){c=BD(b,8);return a.a==c.a&&a.b==c.b}else{return false}}\nfunction _Mb(a,b,c){var d,e,f;f=b>>5;e=b&31;d=xbb(Pbb(a.n[c][f],Tbb(Nbb(e,1))),3);return d}\nfunction IAd(a,b){var c,d;for(d=b.vc().Kc();d.Ob();){c=BD(d.Pb(),42);HAd(a,c.cd(),c.dd())}}\nfunction N1c(a,b){var c;c=new tOb;BD(b.b,65);BD(b.b,65);BD(b.b,65);Hkb(b.a,new T1c(a,c,b))}\nfunction DUd(a,b){var c;c=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,21,c,a.b))}\nfunction jmd(a,b){var c;c=a.d;a.d=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,11,c,a.d))}\nfunction _Id(a,b){var c;c=a.j;a.j=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,13,c,a.j))}\nfunction $jb(a,b,c){var d,e,f;f=a.a.length-1;for(e=a.b,d=0;d>>31}d!=0&&(a[c]=d)}\nfunction rmb(a,b){mmb();var c,d;d=new Rkb;for(c=0;c0){this.g=this.ri(this.i+(this.i/8|0)+1);a.Qc(this.g)}}\nfunction u3d(a,b){k2d.call(this,D9,a,b);this.b=this;this.a=S6d(a.Tg(),XKd(this.e.Tg(),this.c))}\nfunction Ld(a,b){var c,d;uCb(b);for(d=b.vc().Kc();d.Ob();){c=BD(d.Pb(),42);a.zc(c.cd(),c.dd())}}\nfunction G2d(a,b,c){var d;for(d=c.Kc();d.Ob();){if(!E2d(a,b,d.Pb())){return false}}return true}\nfunction sVd(a,b,c,d,e){var f;if(c){f=bLd(b.Tg(),a.c);e=c.gh(b,-1-(f==-1?d:f),null,e)}return e}\nfunction tVd(a,b,c,d,e){var f;if(c){f=bLd(b.Tg(),a.c);e=c.ih(b,-1-(f==-1?d:f),null,e)}return e}\nfunction Mgb(a){var b;if(a.b==-2){if(a.e==0){b=-1}else{for(b=0;a.a[b]==0;b++);}a.b=b}return a.b}\nfunction Z4b(a){switch(a.g){case 2:return Ucd(),Tcd;case 4:return Ucd(),zcd;default:return a;}}\nfunction $4b(a){switch(a.g){case 1:return Ucd(),Rcd;case 3:return Ucd(),Acd;default:return a;}}\nfunction nkc(a){var b,c,d;return a.j==(Ucd(),Acd)&&(b=pkc(a),c=uqb(b,zcd),d=uqb(b,Tcd),d||d&&c)}\nfunction oqb(a){var b,c;b=BD(a.e&&a.e(),9);c=BD(ZBb(b,b.length),9);return new xqb(b,c,b.length)}\nfunction l7b(a,b){Odd(b,zne,1);UGb(TGb(new YGb((a$b(),new l$b(a,false,false,new T$b)))));Qdd(b)}\nfunction Fcb(a,b){Bcb();return ND(a)?cfb(a,GD(b)):LD(a)?Ddb(a,ED(b)):KD(a)?Dcb(a,DD(b)):a.wd(b)}\nfunction WZc(a,b){b.q=a;a.d=$wnd.Math.max(a.d,b.r);a.b+=b.d+(a.a.c.length==0?0:a.c);Ekb(a.a,b)}\nfunction m6c(a,b){var c,d,e,f;e=a.c;c=a.c+a.b;f=a.d;d=a.d+a.a;return b.a>e&&b.af&&b.b1||a.Ob()){++a.a;a.g=0;b=a.i;a.Ob();return b}else{throw vbb(new utb)}}\nfunction kNc(a){fNc();var b;if(!Lpb(eNc,a)){b=new hNc;b.a=a;Opb(eNc,a,b)}return BD(Mpb(eNc,a),635)}\nfunction Rbb(a){var b,c,d,e;e=a;d=0;if(e<0){e+=Ije;d=Fje}c=QD(e/Hje);b=QD(e-c*Hje);return TC(b,c,d)}\nfunction Ox(a){var b,c,d;d=0;for(c=new Gqb(a.a);c.a>22);e=a.h+b.h+(d>>22);return TC(c&Eje,d&Eje,e&Fje)}\nfunction nD(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return TC(c&Eje,d&Eje,e&Fje)}\nfunction bdb(a){var b;if(a<128){b=(ddb(),cdb)[a];!b&&(b=cdb[a]=new Xcb(a));return b}return new Xcb(a)}\nfunction ubb(a){var b;if(JD(a,78)){return a}b=a&&a.__java$exception;if(!b){b=new lz(a);Sz(b)}return b}\nfunction btd(a){if(JD(a,186)){return BD(a,118)}else if(!a){throw vbb(new Heb(gue))}else{return null}}\nfunction Zjb(a,b){if(b==null){return false}while(a.a!=a.b){if(pb(b,vkb(a))){return true}}return false}\nfunction kib(a){if(a.a.Ob()){return true}if(a.a!=a.d){return false}a.a=new orb(a.e.f);return a.a.Ob()}\nfunction Gkb(a,b){var c,d;c=b.Pc();d=c.length;if(d==0){return false}bCb(a.c,a.c.length,c);return true}\nfunction Vyb(a,b,c){var d,e;for(e=b.vc().Kc();e.Ob();){d=BD(e.Pb(),42);a.yc(d.cd(),d.dd(),c)}return a}\nfunction yac(a,b){var c,d;for(d=new olb(a.b);d.a=0,'Negative initial capacity');mCb(b>=0,'Non-positive load factor');Uhb(this)}\nfunction _Ed(a,b,c){if(a>=128)return false;return a<64?Kbb(xbb(Nbb(1,a),c),0):Kbb(xbb(Nbb(1,a-64),b),0)}\nfunction bOb(a,b){if(!a||!b||a==b){return false}return Jy(a.b.c,b.b.c+b.b.b)<0&&Jy(b.b.c,a.b.c+a.b.b)<0}\nfunction I4b(a){var b,c,d;c=a.n;d=a.o;b=a.d;return new J6c(c.a-b.b,c.b-b.d,d.a+(b.b+b.c),d.b+(b.d+b.a))}\nfunction $ic(a){var b,c,d,e;for(c=a.a,d=0,e=c.length;dd)throw vbb(new Cyd(b,d));a.hi()&&(c=Dtd(a,c));return a.Vh(b,c)}\nfunction xNb(a,b,c){return c==null?(!a.q&&(a.q=new Lqb),Thb(a.q,b)):(!a.q&&(a.q=new Lqb),Rhb(a.q,b,c)),a}\nfunction yNb(a,b,c){c==null?(!a.q&&(a.q=new Lqb),Thb(a.q,b)):(!a.q&&(a.q=new Lqb),Rhb(a.q,b,c));return a}\nfunction TQb(a){var b,c;c=new kRb;tNb(c,a);yNb(c,(HSb(),FSb),a);b=new Lqb;VQb(a,c,b);UQb(a,c,b);return c}\nfunction j6c(a){i6c();var b,c,d;c=KC(m1,nie,8,2,0,1);d=0;for(b=0;b<2;b++){d+=0.5;c[b]=r6c(d,a)}return c}\nfunction Mic(a,b){var c,d,e,f;c=false;d=a.a[b].length;for(f=0;f>=1);return b}}\nfunction $C(a){var b,c;c=heb(a.h);if(c==32){b=heb(a.m);return b==32?heb(a.l)+32:b+20-10}else{return c-12}}\nfunction bkb(a){var b;b=a.a[a.b];if(b==null){return null}NC(a.a,a.b,null);a.b=a.b+1&a.a.length-1;return b}\nfunction EDc(a){var b,c;b=a.t-a.k[a.o.p]*a.d+a.j[a.o.p]>a.f;c=a.u+a.e[a.o.p]*a.d>a.f*a.s*a.d;return b||c}\nfunction Iwb(a,b,c){var d,e;d=new exb(b,c);e=new fxb;a.b=Gwb(a,a.b,d,e);e.b||++a.c;a.b.b=false;return e.d}\nfunction djc(a,b,c){var d,e,f,g;g=CHc(b,c);f=0;for(e=g.Kc();e.Ob();){d=BD(e.Pb(),11);Rhb(a.c,d,meb(f++))}}\nfunction xVb(a){var b,c;for(c=new olb(a.a.b);c.ac&&(c=a[b])}return c}\nfunction SHc(a,b,c){var d;d=new Rkb;UHc(a,b,d,(Ucd(),zcd),true,false);UHc(a,c,d,Tcd,false,false);return d}\nfunction crd(a,b,c){var d,e,f,g;f=null;g=b;e=Ypd(g,'labels');d=new Hrd(a,c);f=(Dqd(d.a,d.b,e),e);return f}\nfunction j1d(a,b,c,d){var e;e=r1d(a,b,c,d);if(!e){e=i1d(a,c,d);if(!!e&&!e1d(a,b,e)){return null}}return e}\nfunction m1d(a,b,c,d){var e;e=s1d(a,b,c,d);if(!e){e=l1d(a,c,d);if(!!e&&!e1d(a,b,e)){return null}}return e}\nfunction Xb(a,b){var c;for(c=0;c1||b>=0&&a.b<3}\nfunction w7c(a){var b,c,d;b=new s7c;for(d=Jsb(a,0);d.b!=d.d.c;){c=BD(Xsb(d),8);St(b,0,new g7c(c))}return b}\nfunction qVb(a){var b,c;for(c=new olb(a.a.b);c.ad?1:0}\nfunction NYb(a,b){if(OYb(a,b)){Rc(a.b,BD(vNb(b,(wtc(),Esc)),21),b);Dsb(a.a,b);return true}else{return false}}\nfunction d3b(a){var b,c;b=BD(vNb(a,(wtc(),gtc)),10);if(b){c=b.c;Lkb(c.a,b);c.a.c.length==0&&Lkb(Q_b(b).b,c)}}\nfunction syb(a){if(lyb){return KC(qL,tke,572,0,0,1)}return BD(Qkb(a.a,KC(qL,tke,572,a.a.c.length,0,1)),842)}\nfunction mn(a,b,c,d){Vm();return new wx(OC(GC(CK,1),zie,42,0,[(Wj(a,b),new Wo(a,b)),(Wj(c,d),new Wo(c,d))]))}\nfunction Dnd(a,b,c){var d,e;e=(d=new SSd,d);$nd(e,b,c);wtd((!a.q&&(a.q=new cUd(n5,a,11,10)),a.q),e);return e}\nfunction Zmd(a){var b,c,d,e;e=icb(Rmd,a);c=e.length;d=KC(ZI,nie,2,c,6,1);for(b=0;b=a.b.c.length){return}aub(a,2*b+1);c=2*b+2;c=0&&a[d]===b[d];d--);return d<0?0:Gbb(xbb(a[d],Yje),xbb(b[d],Yje))?-1:1}\nfunction UFc(a,b){var c,d;for(d=Jsb(a,0);d.b!=d.d.c;){c=BD(Xsb(d),214);if(c.e.length>0){b.td(c);c.i&&_Fc(c)}}}\nfunction nzd(a,b){var c,d;d=BD(Ajd(a.a,4),126);c=KC($3,hve,415,b,0,1);d!=null&&$fb(d,0,c,0,d.length);return c}\nfunction JEd(a,b){var c;c=new NEd((a.f&256)!=0,a.i,a.a,a.d,(a.f&16)!=0,a.j,a.g,b);a.e!=null||(c.c=a);return c}\nfunction Dc(a,b){var c,d;for(d=a.Zb().Cc().Kc();d.Ob();){c=BD(d.Pb(),14);if(c.Hc(b)){return true}}return false}\nfunction oNb(a,b,c,d,e){var f,g;for(g=c;g<=e;g++){for(f=b;f<=d;f++){if(YMb(a,f,g)){return true}}}return false}\nfunction Tt(a,b,c){var d,e,f,g;uCb(c);g=false;f=a.Zc(b);for(e=c.Kc();e.Ob();){d=e.Pb();f.Rb(d);g=true}return g}\nfunction Dv(a,b){var c;if(a===b){return true}else if(JD(b,83)){c=BD(b,83);return Ax(Wm(a),c.vc())}return false}\nfunction Nhb(a,b,c){var d,e;for(e=c.Kc();e.Ob();){d=BD(e.Pb(),42);if(a.re(b,d.dd())){return true}}return false}\nfunction Hic(a,b,c){if(!a.d[b.p][c.p]){Gic(a,b,c);a.d[b.p][c.p]=true;a.d[c.p][b.p]=true}return a.a[b.p][c.p]}\nfunction Itd(a,b){if(!a.ai()&&b==null){throw vbb(new Wdb(\"The 'no null' constraint is violated\"))}return b}\nfunction $Jd(a,b){if(a.D==null&&a.B!=null){a.D=a.B;a.B=null}jKd(a,b==null?null:(uCb(b),b));!!a.C&&a.yk(null)}\nfunction XHc(a,b){var c;if(!a||a==b||!wNb(b,(wtc(),Psc))){return false}c=BD(vNb(b,(wtc(),Psc)),10);return c!=a}\nfunction b4d(a){switch(a.i){case 2:{return true}case 1:{return false}case -1:{++a.c}default:{return a.pl()}}}\nfunction c4d(a){switch(a.i){case -2:{return true}case -1:{return false}case 1:{--a.c}default:{return a.ql()}}}\nfunction Xdb(a){Zy.call(this,'The given string does not match the expected format for individual spacings.',a)}\nfunction pgd(){pgd=ccb;mgd=new qgd('ELK',0);ngd=new qgd('JSON',1);lgd=new qgd('DOT',2);ogd=new qgd('SVG',3)}\nfunction pWc(){pWc=ccb;mWc=new rWc(ane,0);nWc=new rWc('RADIAL_COMPACTION',1);oWc=new rWc('WEDGE_COMPACTION',2)}\nfunction Fyb(){Fyb=ccb;Cyb=new Gyb('CONCURRENT',0);Dyb=new Gyb('IDENTITY_FINISH',1);Eyb=new Gyb('UNORDERED',2)}\nfunction nPb(){nPb=ccb;kPb=(cPb(),bPb);jPb=new Nsd(Tle,kPb);iPb=new Lsd(Ule);lPb=new Lsd(Vle);mPb=new Lsd(Wle)}\nfunction Occ(){Occ=ccb;Mcc=new Zcc;Ncc=new _cc;Lcc=new bdc;Kcc=new fdc;Jcc=new jdc;Icc=(uCb(Jcc),new bpb)}\nfunction tBc(){tBc=ccb;qBc=new uBc('CONSERVATIVE',0);rBc=new uBc('CONSERVATIVE_SOFT',1);sBc=new uBc('SLOPPY',2)}\nfunction Zad(){Zad=ccb;Xad=new q0b(15);Wad=new Osd((Y9c(),f9c),Xad);Yad=C9c;Sad=s8c;Tad=Y8c;Vad=_8c;Uad=$8c}\nfunction o7c(a,b,c){var d,e,f;d=new Psb;for(f=Jsb(c,0);f.b!=f.d.c;){e=BD(Xsb(f),8);Dsb(d,new g7c(e))}Tt(a,b,d)}\nfunction r7c(a){var b,c,d;b=0;d=KC(m1,nie,8,a.b,0,1);c=Jsb(a,0);while(c.b!=c.d.c){d[b++]=BD(Xsb(c),8)}return d}\nfunction $Pd(a){var b;b=(!a.a&&(a.a=new cUd(g5,a,9,5)),a.a);if(b.i!=0){return nQd(BD(qud(b,0),678))}return null}\nfunction Ly(a,b){var c;c=wbb(a,b);if(Gbb(Vbb(a,b),0)|Ebb(Vbb(a,c),0)){return c}return wbb(rie,Vbb(Pbb(c,63),1))}\nfunction Yyc(a,b){var c;c=Ksd((dzc(),bzc))!=null&&b.wg()!=null?Edb(ED(b.wg()))/Edb(ED(Ksd(bzc))):1;Rhb(a.b,b,c)}\nfunction le(a,b){var c,d;c=BD(a.d.Bc(b),14);if(!c){return null}d=a.e.hc();d.Gc(c);a.e.d-=c.gc();c.$b();return d}\nfunction AHc(a,b){var c,d;d=a.c[b];if(d==0){return}a.c[b]=0;a.d-=d;c=b+1;while(c0){return _vb(b-1,a.a.c.length),Kkb(a.a,b-1)}else{throw vbb(new Jpb)}}\nfunction C2c(a,b,c){if(b<0){throw vbb(new qcb(ese+b))}if(bb){throw vbb(new Wdb(xke+a+yke+b))}if(a<0||b>c){throw vbb(new scb(xke+a+zke+b+oke+c))}}\nfunction j5c(a){if(!a.a||(a.a.i&8)==0){throw vbb(new Zdb('Enumeration class expected for layout option '+a.f))}}\nfunction vud(a){var b;++a.j;if(a.i==0){a.g=null}else if(a.iRqe?a-c>Rqe:c-a>Rqe}\nfunction pHb(a,b){if(!a){return 0}if(b&&!a.j){return 0}if(JD(a,124)){if(BD(a,124).a.b==0){return 0}}return a.Re()}\nfunction qHb(a,b){if(!a){return 0}if(b&&!a.k){return 0}if(JD(a,124)){if(BD(a,124).a.a==0){return 0}}return a.Se()}\nfunction fhb(a){Hgb();if(a<0){if(a!=-1){return new Tgb(-1,-a)}return Bgb}else return a<=10?Dgb[QD(a)]:new Tgb(1,a)}\nfunction xC(a){rC();throw vbb(new MB(\"Unexpected typeof result '\"+a+\"'; please report this bug to the GWT team\"))}\nfunction lz(a){jz();Py(this);Ry(this);this.e=a;Sy(this,a);this.g=a==null?Xhe:fcb(a);this.a='';this.b=a;this.a=''}\nfunction F$c(){this.a=new G$c;this.f=new I$c(this);this.b=new K$c(this);this.i=new M$c(this);this.e=new O$c(this)}\nfunction ss(){rs.call(this,new _rb(Cv(16)));Xj(2,mie);this.b=2;this.a=new Ms(null,null,0,null);As(this.a,this.a)}\nfunction xzc(){xzc=ccb;uzc=new zzc('DUMMY_NODE_OVER',0);vzc=new zzc('DUMMY_NODE_UNDER',1);wzc=new zzc('EQUAL',2)}\nfunction LUb(){LUb=ccb;JUb=Fx(OC(GC(t1,1),Kie,103,0,[(ead(),aad),bad]));KUb=Fx(OC(GC(t1,1),Kie,103,0,[dad,_9c]))}\nfunction VQc(a){return (Ucd(),Lcd).Hc(a.j)?Edb(ED(vNb(a,(wtc(),qtc)))):l7c(OC(GC(m1,1),nie,8,0,[a.i.n,a.n,a.a])).b}\nfunction DOb(a){var b,c,d,e;d=a.b.a;for(c=d.a.ec().Kc();c.Ob();){b=BD(c.Pb(),561);e=new MPb(b,a.e,a.f);Ekb(a.g,e)}}\nfunction yId(a,b){var c,d,e;d=a.nk(b,null);e=null;if(b){e=(LFd(),c=new UQd,c);NQd(e,a.r)}d=xId(a,e,d);!!d&&d.Fi()}\nfunction VFc(a,b){var c,d;d=Cub(a.d,1)!=0;c=true;while(c){c=false;c=b.c.Tf(b.e,d);c=c|dGc(a,b,d,false);d=!d}$Fc(a)}\nfunction wZc(a,b){var c,d,e;d=false;c=b.q.d;if(b.de){$Zc(b.q,e);d=c!=b.q.d}}return d}\nfunction PVc(a,b){var c,d,e,f,g,h,i,j;i=b.i;j=b.j;d=a.f;e=d.i;f=d.j;g=i-e;h=j-f;c=$wnd.Math.sqrt(g*g+h*h);return c}\nfunction Rnd(a,b){var c,d;d=jid(a);if(!d){!And&&(And=new lUd);c=(IEd(),PEd(b));d=new s0d(c);wtd(d.Vk(),a)}return d}\nfunction Sc(a,b){var c,d;c=BD(a.c.Bc(b),14);if(!c){return a.jc()}d=a.hc();d.Gc(c);a.d-=c.gc();c.$b();return a.mc(d)}\nfunction j7c(a,b){var c;for(c=0;c=a.c.b:a.a<=a.c.b)){throw vbb(new utb)}b=a.a;a.a+=a.c.c;++a.b;return meb(b)}\nfunction BWb(a){var b;b=new VWb(a);rXb(a.a,zWb,new amb(OC(GC(bQ,1),Uhe,369,0,[b])));!!b.d&&Ekb(b.f,b.d);return b.f}\nfunction Z1b(a){var b;b=new q_b(a.a);tNb(b,a);yNb(b,(wtc(),$sc),a);b.o.a=a.g;b.o.b=a.f;b.n.a=a.i;b.n.b=a.j;return b}\nfunction A9b(a,b,c,d){var e,f;for(f=a.Kc();f.Ob();){e=BD(f.Pb(),70);e.n.a=b.a+(d.a-e.o.a)/2;e.n.b=b.b;b.b+=e.o.b+c}}\nfunction UDb(a,b,c){var d,e;for(e=b.a.a.ec().Kc();e.Ob();){d=BD(e.Pb(),57);if(VDb(a,d,c)){return true}}return false}\nfunction JDc(a){var b,c;for(c=new olb(a.r);c.a=0?b:-b;while(d>0){if(d%2==0){c*=c;d=d/2|0}else{e*=c;d-=1}}return b<0?1/e:e}\nfunction y6c(a,b){var c,d,e;e=1;c=a;d=b>=0?b:-b;while(d>0){if(d%2==0){c*=c;d=d/2|0}else{e*=c;d-=1}}return b<0?1/e:e}\nfunction sAd(a){var b,c,d,e;if(a!=null){for(c=0;c0){c=BD(Ikb(a.a,a.a.c.length-1),570);if(NYb(c,b)){return}}Ekb(a.a,new PYb(b))}\nfunction $gc(a){Hgc();var b,c;b=a.d.c-a.e.c;c=BD(a.g,145);Hkb(c.b,new shc(b));Hkb(c.c,new uhc(b));reb(c.i,new whc(b))}\nfunction gic(a){var b;b=new Ufb;b.a+='VerticalSegment ';Pfb(b,a.e);b.a+=' ';Qfb(b,Eb(new Gb,new olb(a.k)));return b.a}\nfunction u4c(a){var b;b=BD(Wrb(a.c.c,''),229);if(!b){b=new W3c(d4c(c4c(new e4c,''),'Other'));Xrb(a.c.c,'',b)}return b}\nfunction qnd(a){var b;if((a.Db&64)!=0)return Eid(a);b=new Jfb(Eid(a));b.a+=' (name: ';Efb(b,a.zb);b.a+=')';return b.a}\nfunction Jnd(a,b,c){var d,e;e=a.sb;a.sb=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new nSd(a,1,4,e,b);!c?(c=d):c.Ei(d)}return c}\nfunction _ic(a,b){var c,d,e;c=0;for(e=V_b(a,b).Kc();e.Ob();){d=BD(e.Pb(),11);c+=vNb(d,(wtc(),gtc))!=null?1:0}return c}\nfunction vPc(a,b,c){var d,e,f;d=0;for(f=Jsb(a,0);f.b!=f.d.c;){e=Edb(ED(Xsb(f)));if(e>c){break}else e>=b&&++d}return d}\nfunction RTd(a,b,c){var d,e;d=new pSd(a.e,3,13,null,(e=b.c,e?e:(jGd(),YFd)),HLd(a,b),false);!c?(c=d):c.Ei(d);return c}\nfunction STd(a,b,c){var d,e;d=new pSd(a.e,4,13,(e=b.c,e?e:(jGd(),YFd)),null,HLd(a,b),false);!c?(c=d):c.Ei(d);return c}\nfunction zId(a,b,c){var d,e;e=a.r;a.r=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new nSd(a,1,8,e,a.r);!c?(c=d):c.Ei(d)}return c}\nfunction o1d(a,b){var c,d;c=BD(b,676);d=c.vk();!d&&c.wk(d=JD(b,88)?new C1d(a,BD(b,26)):new O1d(a,BD(b,148)));return d}\nfunction kud(a,b,c){var d;a.qi(a.i+1);d=a.oi(b,c);b!=a.i&&$fb(a.g,b,a.g,b+1,a.i-b);NC(a.g,b,d);++a.i;a.bi(b,c);a.ci()}\nfunction vwb(a,b){var c;if(b.a){c=b.a.a.length;!a.a?(a.a=new Wfb(a.d)):Qfb(a.a,a.b);Ofb(a.a,b.a,b.d.length,c)}return a}\nfunction __d(a,b){var c,d,e,f;b.vi(a.a);f=BD(Ajd(a.a,8),1936);if(f!=null){for(c=f,d=0,e=c.length;dc){throw vbb(new qcb(xke+a+zke+b+', size: '+c))}if(a>b){throw vbb(new Wdb(xke+a+yke+b))}}\nfunction eid(a,b,c){if(b<0){vid(a,c)}else{if(!c.Ij()){throw vbb(new Wdb(ite+c.ne()+jte))}BD(c,66).Nj().Vj(a,a.yh(),b)}}\nfunction Jlb(a,b,c,d,e,f,g,h){var i;i=c;while(f=d||b=65&&a<=70){return a-65+10}if(a>=97&&a<=102){return a-97+10}if(a>=48&&a<=57){return a-48}return 0}\nfunction QHd(a){var b;if((a.Db&64)!=0)return Eid(a);b=new Jfb(Eid(a));b.a+=' (source: ';Efb(b,a.d);b.a+=')';return b.a}\nfunction OQd(a,b,c){var d,e;e=a.a;a.a=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new nSd(a,1,5,e,a.a);!c?(c=d):Qwd(c,d)}return c}\nfunction BId(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,2,c,b))}\nfunction eLd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,8,c,b))}\nfunction LPd(a,b){var c;c=(a.Bb&256)!=0;b?(a.Bb|=256):(a.Bb&=-257);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,8,c,b))}\nfunction CId(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,3,c,b))}\nfunction fLd(a,b){var c;c=(a.Bb&512)!=0;b?(a.Bb|=512):(a.Bb&=-513);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,9,c,b))}\nfunction N7d(a,b){var c;if(a.b==-1&&!!a.a){c=a.a.Gj();a.b=!c?bLd(a.c.Tg(),a.a):a.c.Xg(a.a.aj(),c)}return a.c.Og(a.b,b)}\nfunction meb(a){var b,c;if(a>-129&&a<128){b=a+128;c=(oeb(),neb)[b];!c&&(c=neb[b]=new _db(a));return c}return new _db(a)}\nfunction Web(a){var b,c;if(a>-129&&a<128){b=a+128;c=(Yeb(),Xeb)[b];!c&&(c=Xeb[b]=new Qeb(a));return c}return new Qeb(a)}\nfunction L5b(a){var b,c;b=a.k;if(b==(j0b(),e0b)){c=BD(vNb(a,(wtc(),Hsc)),61);return c==(Ucd(),Acd)||c==Rcd}return false}\nfunction i1d(a,b,c){var d,e,f;f=(e=nUd(a.b,b),e);if(f){d=BD(V1d(p1d(a,f),''),26);if(d){return r1d(a,d,b,c)}}return null}\nfunction l1d(a,b,c){var d,e,f;f=(e=nUd(a.b,b),e);if(f){d=BD(V1d(p1d(a,f),''),26);if(d){return s1d(a,d,b,c)}}return null}\nfunction cTd(a,b){var c,d;for(d=new Fyd(a);d.e!=d.i.gc();){c=BD(Dyd(d),138);if(PD(b)===PD(c)){return true}}return false}\nfunction vtd(a,b,c){var d;d=a.gc();if(b>d)throw vbb(new Cyd(b,d));if(a.hi()&&a.Hc(c)){throw vbb(new Wdb(kue))}a.Xh(b,c)}\nfunction iqd(a,b){var c;c=oo(a.i,b);if(c==null){throw vbb(new cqd('Node did not exist in input.'))}Yqd(b,c);return null}\nfunction $hd(a,b){var c;c=YKd(a,b);if(JD(c,322)){return BD(c,34)}throw vbb(new Wdb(ite+b+\"' is not a valid attribute\"))}\nfunction V2d(a,b,c){var d,e;e=JD(b,99)&&(BD(b,18).Bb&Tje)!=0?new s4d(b,a):new p4d(b,a);for(d=0;db){return 1}if(a==b){return a==0?Kdb(1/a,1/b):0}return isNaN(a)?isNaN(b)?0:1:-1}\nfunction f4b(a,b){Odd(b,'Sort end labels',1);MAb(JAb(LAb(new YAb(null,new Kub(a.b,16)),new q4b),new s4b),new u4b);Qdd(b)}\nfunction Wxd(a,b,c){var d,e;if(a.ej()){e=a.fj();d=sud(a,b,c);a.$i(a.Zi(7,meb(c),d,b,e));return d}else{return sud(a,b,c)}}\nfunction vAd(a,b){var c,d,e;if(a.d==null){++a.e;--a.f}else{e=b.cd();c=b.Sh();d=(c&Ohe)%a.d.length;KAd(a,d,xAd(a,d,c,e))}}\nfunction ZId(a,b){var c;c=(a.Bb&zte)!=0;b?(a.Bb|=zte):(a.Bb&=-1025);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,10,c,b))}\nfunction dJd(a,b){var c;c=(a.Bb&Rje)!=0;b?(a.Bb|=Rje):(a.Bb&=-4097);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,12,c,b))}\nfunction eJd(a,b){var c;c=(a.Bb&Cve)!=0;b?(a.Bb|=Cve):(a.Bb&=-8193);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,15,c,b))}\nfunction fJd(a,b){var c;c=(a.Bb&Dve)!=0;b?(a.Bb|=Dve):(a.Bb&=-2049);(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new qSd(a,1,11,c,b))}\nfunction jOb(a,b){var c;c=Kdb(a.b.c,b.b.c);if(c!=0){return c}c=Kdb(a.a.a,b.a.a);if(c!=0){return c}return Kdb(a.a.b,b.a.b)}\nfunction jqd(a,b){var c;c=Ohb(a.k,b);if(c==null){throw vbb(new cqd('Port did not exist in input.'))}Yqd(b,c);return null}\nfunction k6d(a){var b,c;for(c=l6d(bKd(a)).Kc();c.Ob();){b=GD(c.Pb());if(Dmd(a,b)){return uFd((tFd(),sFd),b)}}return null}\nfunction n3d(a,b){var c,d,e,f,g;g=S6d(a.e.Tg(),b);f=0;c=BD(a.g,119);for(e=0;e>10)+Uje&aje;b[1]=(a&1023)+56320&aje;return zfb(b,0,b.length)}\nfunction a_b(a){var b,c;c=BD(vNb(a,(Nyc(),Lwc)),103);if(c==(ead(),cad)){b=Edb(ED(vNb(a,owc)));return b>=1?bad:_9c}return c}\nfunction rec(a){switch(BD(vNb(a,(Nyc(),Swc)),218).g){case 1:return new Fmc;case 3:return new wnc;default:return new zmc;}}\nfunction Uzb(a){if(a.c){Uzb(a.c)}else if(a.d){throw vbb(new Zdb(\"Stream already terminated, can't be modified or used\"))}}\nfunction Mkd(a){var b;if((a.Db&64)!=0)return Eid(a);b=new Jfb(Eid(a));b.a+=' (identifier: ';Efb(b,a.k);b.a+=')';return b.a}\nfunction ctd(a,b,c){var d,e;d=(Fhd(),e=new xkd,e);vkd(d,b);wkd(d,c);!!a&&wtd((!a.a&&(a.a=new xMd(y2,a,5)),a.a),d);return d}\nfunction ttb(a,b,c,d){var e,f;uCb(d);uCb(c);e=a.xc(b);f=e==null?c:Myb(BD(e,15),BD(c,14));f==null?a.Bc(b):a.zc(b,f);return f}\nfunction pqb(a){var b,c,d,e;c=(b=BD(gdb((d=a.gm,e=d.f,e==CI?d:e)),9),new xqb(b,BD(_Bb(b,b.length),9),0));rqb(c,a);return c}\nfunction hDc(a,b,c){var d,e;for(e=a.a.ec().Kc();e.Ob();){d=BD(e.Pb(),10);if(Be(c,BD(Ikb(b,d.p),14))){return d}}return null}\nfunction Db(b,c,d){var e;try{Cb(b,c,d)}catch(a){a=ubb(a);if(JD(a,597)){e=a;throw vbb(new ycb(e))}else throw vbb(a)}return c}\nfunction Qbb(a,b){var c;if(Fbb(a)&&Fbb(b)){c=a-b;if(Kje>1;a.k=c-1>>1}\nfunction Gub(){zub();var a,b,c;c=yub+++Date.now();a=QD($wnd.Math.floor(c*lke))&nke;b=QD(c-a*mke);this.a=a^1502;this.b=b^kke}\nfunction O_b(a){var b,c,d;b=new Rkb;for(d=new olb(a.j);d.a3.4028234663852886E38){return Pje}else if(b<-3.4028234663852886E38){return Qje}return b}\nfunction aeb(a){a-=a>>1&1431655765;a=(a>>2&858993459)+(a&858993459);a=(a>>4)+a&252645135;a+=a>>8;a+=a>>16;return a&63}\nfunction Ev(a){var b,c,d,e;b=new cq(a.Hd().gc());e=0;for(d=vr(a.Hd().Kc());d.Ob();){c=d.Pb();bq(b,c,meb(e++))}return fn(b.a)}\nfunction Uyb(a,b){var c,d,e;e=new Lqb;for(d=b.vc().Kc();d.Ob();){c=BD(d.Pb(),42);Rhb(e,c.cd(),Yyb(a,BD(c.dd(),15)))}return e}\nfunction EZc(a,b){a.n.c.length==0&&Ekb(a.n,new VZc(a.s,a.t,a.i));Ekb(a.b,b);QZc(BD(Ikb(a.n,a.n.c.length-1),211),b);GZc(a,b)}\nfunction LFb(a){if(a.c!=a.b.b||a.i!=a.g.b){a.a.c=KC(SI,Uhe,1,0,5,1);Gkb(a.a,a.b);Gkb(a.a,a.g);a.c=a.b.b;a.i=a.g.b}return a.a}\nfunction Ycc(a,b){var c,d,e;e=0;for(d=BD(b.Kb(a),20).Kc();d.Ob();){c=BD(d.Pb(),17);Ccb(DD(vNb(c,(wtc(),ltc))))||++e}return e}\nfunction efc(a,b){var c,d,e;d=tgc(b);e=Edb(ED(pBc(d,(Nyc(),lyc))));c=$wnd.Math.max(0,e/2-0.5);cfc(b,c,1);Ekb(a,new Dfc(b,c))}\nfunction Ctc(){Ctc=ccb;Btc=new Dtc(ane,0);xtc=new Dtc('FIRST',1);ytc=new Dtc(Gne,2);ztc=new Dtc('LAST',3);Atc=new Dtc(Hne,4)}\nfunction Aad(){Aad=ccb;zad=new Bad(ole,0);xad=new Bad('POLYLINE',1);wad=new Bad('ORTHOGONAL',2);yad=new Bad('SPLINES',3)}\nfunction zYc(){zYc=ccb;xYc=new AYc('ASPECT_RATIO_DRIVEN',0);yYc=new AYc('MAX_SCALE_DRIVEN',1);wYc=new AYc('AREA_DRIVEN',2)}\nfunction Y$c(){Y$c=ccb;V$c=new Z$c('P1_STRUCTURE',0);W$c=new Z$c('P2_PROCESSING_ORDER',1);X$c=new Z$c('P3_EXECUTION',2)}\nfunction tVc(){tVc=ccb;sVc=new uVc('OVERLAP_REMOVAL',0);qVc=new uVc('COMPACTION',1);rVc=new uVc('GRAPH_SIZE_CALCULATION',2)}\nfunction Jy(a,b){Iy();return My(Qie),$wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ny(isNaN(a),isNaN(b))}\nfunction yOc(a,b){var c,d;c=Jsb(a,0);while(c.b!=c.d.c){d=Gdb(ED(Xsb(c)));if(d==b){return}else if(d>b){Ysb(c);break}}Vsb(c,b)}\nfunction t4c(a,b){var c,d,e,f,g;c=b.f;Xrb(a.c.d,c,b);if(b.g!=null){for(e=b.g,f=0,g=e.length;fb&&d.ue(a[f-1],a[f])>0;--f){g=a[f];NC(a,f,a[f-1]);NC(a,f-1,g)}}}\nfunction did(a,b,c,d){if(b<0){uid(a,c,d)}else{if(!c.Ij()){throw vbb(new Wdb(ite+c.ne()+jte))}BD(c,66).Nj().Tj(a,a.yh(),b,d)}}\nfunction xFb(a,b){if(b==a.d){return a.e}else if(b==a.e){return a.d}else{throw vbb(new Wdb('Node '+b+' not part of edge '+a))}}\nfunction iEb(a,b){switch(b.g){case 2:return a.b;case 1:return a.c;case 4:return a.d;case 3:return a.a;default:return false;}}\nfunction GVb(a,b){switch(b.g){case 2:return a.b;case 1:return a.c;case 4:return a.d;case 3:return a.a;default:return false;}}\nfunction Xkd(a,b,c,d){switch(b){case 3:return a.f;case 4:return a.g;case 5:return a.i;case 6:return a.j;}return Ekd(a,b,c,d)}\nfunction Ljc(a){if(a.k!=(j0b(),h0b)){return false}return FAb(new YAb(null,new Lub(new Sr(ur(U_b(a).a.Kc(),new Sq)))),new Mjc)}\nfunction MEd(a){if(a.e==null){return a}else !a.c&&(a.c=new NEd((a.f&256)!=0,a.i,a.a,a.d,(a.f&16)!=0,a.j,a.g,null));return a.c}\nfunction VC(a,b){if(a.h==Gje&&a.m==0&&a.l==0){b&&(QC=TC(0,0,0));return SC((wD(),uD))}b&&(QC=TC(a.l,a.m,a.h));return TC(0,0,0)}\nfunction fcb(a){var b;if(Array.isArray(a)&&a.im===gcb){return hdb(rb(a))+'@'+(b=tb(a)>>>0,b.toString(16))}return a.toString()}\nfunction Rpb(a){var b;this.a=(b=BD(a.e&&a.e(),9),new xqb(b,BD(_Bb(b,b.length),9),0));this.b=KC(SI,Uhe,1,this.a.a.length,5,1)}\nfunction _Ob(a){var b,c,d;this.a=new zsb;for(d=new olb(a);d.a0&&(BCb(b-1,a.length),a.charCodeAt(b-1)==58)&&!OEd(a,CEd,DEd)}\nfunction OEd(a,b,c){var d,e;for(d=0,e=a.length;d=e){return b.c+c}}return b.c+b.b.gc()}\nfunction NCd(a,b){LCd();var c,d,e,f;d=KLd(a);e=b;Klb(d,0,d.length,e);for(c=0;c0){d+=e;++c}}c>1&&(d+=a.d*(c-1));return d}\nfunction Htd(a){var b,c,d;d=new Hfb;d.a+='[';for(b=0,c=a.gc();b0&&this.b>0&&q$c(this.c,this.b,this.a)}\nfunction ezc(a){dzc();this.c=Ou(OC(GC(h0,1),Uhe,831,0,[Uyc]));this.b=new Lqb;this.a=a;Rhb(this.b,bzc,1);Hkb(czc,new Xed(this))}\nfunction I2c(a,b){var c;if(a.d){if(Mhb(a.b,b)){return BD(Ohb(a.b,b),51)}else{c=b.Kf();Rhb(a.b,b,c);return c}}else{return b.Kf()}}\nfunction Kgb(a,b){var c;if(PD(a)===PD(b)){return true}if(JD(b,91)){c=BD(b,91);return a.e==c.e&&a.d==c.d&&Lgb(a,c.a)}return false}\nfunction Zcd(a){Ucd();switch(a.g){case 4:return Acd;case 1:return zcd;case 3:return Rcd;case 2:return Tcd;default:return Scd;}}\nfunction Ykd(a,b){switch(b){case 3:return a.f!=0;case 4:return a.g!=0;case 5:return a.i!=0;case 6:return a.j!=0;}return Hkd(a,b)}\nfunction gWc(a){switch(a.g){case 0:return new FXc;case 1:return new IXc;default:throw vbb(new Wdb(jre+(a.f!=null?a.f:''+a.g)));}}\nfunction QUc(a){switch(a.g){case 0:return new CXc;case 1:return new MXc;default:throw vbb(new Wdb(Dne+(a.f!=null?a.f:''+a.g)));}}\nfunction b1c(a){switch(a.g){case 0:return new s1c;case 1:return new w1c;default:throw vbb(new Wdb(Mre+(a.f!=null?a.f:''+a.g)));}}\nfunction qWc(a){switch(a.g){case 1:return new SVc;case 2:return new KVc;default:throw vbb(new Wdb(jre+(a.f!=null?a.f:''+a.g)));}}\nfunction ryb(a){var b,c;if(a.b){return a.b}c=lyb?null:a.d;while(c){b=lyb?null:c.b;if(b){return b}c=lyb?null:c.d}return $xb(),Zxb}\nfunction hhb(a){var b,c,d;if(a.e==0){return 0}b=a.d<<5;c=a.a[a.d-1];if(a.e<0){d=Mgb(a);if(d==a.d-1){--c;c=c|0}}b-=heb(c);return b}\nfunction bhb(a){var b,c,d;if(a>5;b=a&31;d=KC(WD,oje,25,c+1,15,1);d[c]=1<3){e*=10;--f}a=(a+(e>>1))/e|0}d.i=a;return true}\nfunction XUb(a){LUb();return Bcb(),GVb(BD(a.a,81).j,BD(a.b,103))||BD(a.a,81).d.e!=0&&GVb(BD(a.a,81).j,BD(a.b,103))?true:false}\nfunction s3c(a){p3c();if(BD(a.We((Y9c(),b9c)),174).Hc((Idd(),Gdd))){BD(a.We(x9c),174).Fc((rcd(),qcd));BD(a.We(b9c),174).Mc(Gdd)}}\nfunction Gxd(a,b){var c,d;if(!b){return false}else{for(c=0;c=0;--d){b=c[d];for(e=0;e>1;this.k=b-1>>1}\nfunction r3b(a,b){Odd(b,'End label post-processing',1);MAb(JAb(LAb(new YAb(null,new Kub(a.b,16)),new w3b),new y3b),new A3b);Qdd(b)}\nfunction NLc(a,b,c){var d,e;d=Edb(a.p[b.i.p])+Edb(a.d[b.i.p])+b.n.b+b.a.b;e=Edb(a.p[c.i.p])+Edb(a.d[c.i.p])+c.n.b+c.a.b;return e-d}\nfunction xhb(a,b,c){var d,e;d=xbb(c,Yje);for(e=0;ybb(d,0)!=0&&e0&&(BCb(0,b.length),b.charCodeAt(0)==43)?b.substr(1):b))}\nfunction T9d(a){var b;return a==null?null:new Ygb((b=Qge(a,true),b.length>0&&(BCb(0,b.length),b.charCodeAt(0)==43)?b.substr(1):b))}\nfunction xud(a,b){var c;if(a.i>0){if(b.lengtha.i&&NC(b,a.i,null);return b}\nfunction Sxd(a,b,c){var d,e,f;if(a.ej()){d=a.i;f=a.fj();kud(a,d,b);e=a.Zi(3,null,b,d,f);!c?(c=e):c.Ei(e)}else{kud(a,a.i,b)}return c}\nfunction HMd(a,b,c){var d,e;d=new pSd(a.e,4,10,(e=b.c,JD(e,88)?BD(e,26):(jGd(),_Fd)),null,HLd(a,b),false);!c?(c=d):c.Ei(d);return c}\nfunction GMd(a,b,c){var d,e;d=new pSd(a.e,3,10,null,(e=b.c,JD(e,88)?BD(e,26):(jGd(),_Fd)),HLd(a,b),false);!c?(c=d):c.Ei(d);return c}\nfunction _Jb(a){$Jb();var b;b=new g7c(BD(a.e.We((Y9c(),_8c)),8));if(a.B.Hc((Idd(),Bdd))){b.a<=0&&(b.a=20);b.b<=0&&(b.b=20)}return b}\nfunction Lzc(a){Izc();var b;(!a.q?(mmb(),mmb(),kmb):a.q)._b((Nyc(),Cxc))?(b=BD(vNb(a,Cxc),197)):(b=BD(vNb(Q_b(a),Dxc),197));return b}\nfunction pBc(a,b){var c,d;d=null;if(wNb(a,(Nyc(),qyc))){c=BD(vNb(a,qyc),94);c.Xe(b)&&(d=c.We(b))}d==null&&(d=vNb(Q_b(a),b));return d}\nfunction Ze(a,b){var c,d,e;if(JD(b,42)){c=BD(b,42);d=c.cd();e=Hv(a.Rc(),d);return Hb(e,c.dd())&&(e!=null||a.Rc()._b(d))}return false}\nfunction qAd(a,b){var c,d,e;if(a.f>0){a.qj();d=b==null?0:tb(b);e=(d&Ohe)%a.d.length;c=xAd(a,e,d,b);return c!=-1}else{return false}}\nfunction AAd(a,b){var c,d,e;if(a.f>0){a.qj();d=b==null?0:tb(b);e=(d&Ohe)%a.d.length;c=wAd(a,e,d,b);if(c){return c.dd()}}return null}\nfunction R2d(a,b){var c,d,e,f;f=S6d(a.e.Tg(),b);c=BD(a.g,119);for(e=0;e1?Mbb(Nbb(b.a[1],32),xbb(b.a[0],Yje)):xbb(b.a[0],Yje),Sbb(Ibb(b.e,c))))}\nfunction Hbb(a,b){var c;if(Fbb(a)&&Fbb(b)){c=a%b;if(Kje>5;b&=31;e=a.d+c+(b==0?0:1);d=KC(WD,oje,25,e,15,1);jhb(d,a.a,c,b);f=new Vgb(a.e,e,d);Jgb(f);return f}\nfunction Ofe(a,b,c){var d,e;d=BD(Phb(Zee,b),117);e=BD(Phb($ee,b),117);if(c){Shb(Zee,a,d);Shb($ee,a,e)}else{Shb($ee,a,d);Shb(Zee,a,e)}}\nfunction Cwb(a,b,c){var d,e,f;e=null;f=a.b;while(f){d=a.a.ue(b,f.d);if(c&&d==0){return f}if(d>=0){f=f.a[1]}else{e=f;f=f.a[0]}}return e}\nfunction Dwb(a,b,c){var d,e,f;e=null;f=a.b;while(f){d=a.a.ue(b,f.d);if(c&&d==0){return f}if(d<=0){f=f.a[0]}else{e=f;f=f.a[1]}}return e}\nfunction Nic(a,b,c,d){var e,f,g;e=false;if(fjc(a.f,c,d)){ijc(a.f,a.a[b][c],a.a[b][d]);f=a.a[b];g=f[d];f[d]=f[c];f[c]=g;e=true}return e}\nfunction QHc(a,b,c,d,e){var f,g,h;g=e;while(b.b!=b.c){f=BD(fkb(b),10);h=BD(V_b(f,d).Xb(0),11);a.d[h.p]=g++;c.c[c.c.length]=h}return g}\nfunction hBc(a,b,c){var d,e,f,g,h;g=a.k;h=b.k;d=c[g.g][h.g];e=ED(pBc(a,d));f=ED(pBc(b,d));return $wnd.Math.max((uCb(e),e),(uCb(f),f))}\nfunction zZc(a,b,c){var d,e,f,g;d=c/a.c.length;e=0;for(g=new olb(a);g.a2000){yz=a;zz=$wnd.setTimeout(Iz,10)}}if(xz++==0){Lz((Kz(),Jz));return true}return false}\nfunction wCc(a,b){var c,d,e;for(d=new Sr(ur(U_b(a).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),17);e=c.d.i;if(e.c==b){return false}}return true}\nfunction Ek(b,c){var d,e;if(JD(c,245)){e=BD(c,245);try{d=b.vd(e);return d==0}catch(a){a=ubb(a);if(!JD(a,205))throw vbb(a)}}return false}\nfunction Xz(){if(Error.stackTraceLimit>0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return 'stack' in new Error}\nfunction BDb(a,b){return Iy(),Iy(),My(Qie),($wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ny(isNaN(a),isNaN(b)))>0}\nfunction DDb(a,b){return Iy(),Iy(),My(Qie),($wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ny(isNaN(a),isNaN(b)))<0}\nfunction CDb(a,b){return Iy(),Iy(),My(Qie),($wnd.Math.abs(a-b)<=Qie||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ny(isNaN(a),isNaN(b)))<=0}\nfunction ydb(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;cWje){return c.fh()}d=c.Zg();if(!!d||c==a){break}}}return d}\nfunction fvd(a){evd();if(JD(a,156)){return BD(Ohb(cvd,hK),288).vg(a)}if(Mhb(cvd,rb(a))){return BD(Ohb(cvd,rb(a)),288).vg(a)}return null}\nfunction fZd(a){if(efb(kse,a)){return Bcb(),Acb}else if(efb(lse,a)){return Bcb(),zcb}else{throw vbb(new Wdb('Expecting true or false'))}}\nfunction uDc(a,b){if(b.c==a){return b.d}else if(b.d==a){return b.c}throw vbb(new Wdb('Input edge is not connected to the input port.'))}\nfunction Igb(a,b){if(a.e>b.e){return 1}if(a.eb.d){return a.e}if(a.d=48&&a<48+$wnd.Math.min(10,10)){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1}\nfunction Ue(a,b){var c;if(PD(b)===PD(a)){return true}if(!JD(b,21)){return false}c=BD(b,21);if(c.gc()!=a.gc()){return false}return a.Ic(c)}\nfunction ekb(a,b){var c,d,e,f;d=a.a.length-1;c=b-a.b&d;f=a.c-b&d;e=a.c-a.b&d;mkb(c=f){hkb(a,b);return -1}else{ikb(a,b);return 1}}\nfunction lA(a,b){var c,d;c=(BCb(b,a.length),a.charCodeAt(b));d=b+1;while(db.e){return 1}else if(a.fb.f){return 1}return tb(a)-tb(b)}\nfunction efb(a,b){uCb(a);if(b==null){return false}if(dfb(a,b)){return true}return a.length==b.length&&dfb(a.toLowerCase(),b.toLowerCase())}\nfunction x6d(a,b){var c,d,e,f;for(d=0,e=b.gc();d0&&ybb(a,128)<0){b=Tbb(a)+128;c=(Ceb(),Beb)[b];!c&&(c=Beb[b]=new teb(a));return c}return new teb(a)}\nfunction _0d(a,b){var c,d;c=b.Hh(a.a);if(c){d=GD(AAd((!c.b&&(c.b=new sId((jGd(),fGd),x6,c)),c.b),fue));if(d!=null){return d}}return b.ne()}\nfunction a1d(a,b){var c,d;c=b.Hh(a.a);if(c){d=GD(AAd((!c.b&&(c.b=new sId((jGd(),fGd),x6,c)),c.b),fue));if(d!=null){return d}}return b.ne()}\nfunction FMc(a,b){wMc();var c,d;for(d=new Sr(ur(O_b(a).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),17);if(c.d.i==b||c.c.i==b){return c}}return null}\nfunction HUb(a,b,c){this.c=a;this.f=new Rkb;this.e=new d7c;this.j=new IVb;this.n=new IVb;this.b=b;this.g=new J6c(b.c,b.d,b.b,b.a);this.a=c}\nfunction gVb(a){var b,c,d,e;this.a=new zsb;this.d=new Tqb;this.e=0;for(c=a,d=0,e=c.length;d0}else{return false}}\nfunction q2c(a){var b;if(PD(hkd(a,(Y9c(),J8c)))===PD((hbd(),fbd))){if(!Xod(a)){jkd(a,J8c,gbd)}else{b=BD(hkd(Xod(a),J8c),334);jkd(a,J8c,b)}}}\nfunction ijc(a,b,c){var d,e;bIc(a.e,b,c,(Ucd(),Tcd));bIc(a.i,b,c,zcd);if(a.a){e=BD(vNb(b,(wtc(),$sc)),11);d=BD(vNb(c,$sc),11);cIc(a.g,e,d)}}\nfunction OEc(a,b,c){var d,e,f;d=b.c.p;f=b.p;a.b[d][f]=new $Ec(a,b);if(c){a.a[d][f]=new FEc(b);e=BD(vNb(b,(wtc(),Psc)),10);!!e&&Rc(a.d,e,b)}}\nfunction TPb(a,b){var c,d,e;Ekb(PPb,a);b.Fc(a);c=BD(Ohb(OPb,a),21);if(c){for(e=c.Kc();e.Ob();){d=BD(e.Pb(),33);Jkb(PPb,d,0)!=-1||TPb(d,b)}}}\nfunction tyb(a,b,c){var d;(jyb?(ryb(a),true):kyb?($xb(),true):nyb?($xb(),true):myb&&($xb(),false))&&(d=new iyb(b),d.b=c,pyb(a,d),undefined)}\nfunction xKb(a,b){var c;c=!a.A.Hc((tdd(),sdd))||a.q==(dcd(),$bd);a.u.Hc((rcd(),ncd))?c?vKb(a,b):zKb(a,b):a.u.Hc(pcd)&&(c?wKb(a,b):AKb(a,b))}\nfunction b0d(a,b){var c,d;++a.j;if(b!=null){c=(d=a.a.Cb,JD(d,97)?BD(d,97).Jg():null);if(xlb(b,c)){Cjd(a.a,4,c);return}}Cjd(a.a,4,BD(b,126))}\nfunction dYb(a,b,c){return new J6c($wnd.Math.min(a.a,b.a)-c/2,$wnd.Math.min(a.b,b.b)-c/2,$wnd.Math.abs(a.a-b.a)+c,$wnd.Math.abs(a.b-b.b)+c)}\nfunction k4b(a,b){var c,d;c=beb(a.a.c.p,b.a.c.p);if(c!=0){return c}d=beb(a.a.d.i.p,b.a.d.i.p);if(d!=0){return d}return beb(b.a.d.p,a.a.d.p)}\nfunction _Dc(a,b,c){var d,e,f,g;f=b.j;g=c.j;if(f!=g){return f.g-g.g}else{d=a.f[b.p];e=a.f[c.p];return d==0&&e==0?0:d==0?-1:e==0?1:Kdb(d,e)}}\nfunction HFb(a,b,c){var d,e,f;if(c[b.d]){return}c[b.d]=true;for(e=new olb(LFb(b));e.a=e)return e;for(b=b>0?b:0;bd&&NC(b,d,null);return b}\nfunction _lb(a,b){var c,d;d=a.a.length;b.lengthd&&NC(b,d,null);return b}\nfunction Xrb(a,b,c){var d,e,f;e=BD(Ohb(a.e,b),387);if(!e){d=new lsb(a,b,c);Rhb(a.e,b,d);isb(d);return null}else{f=ijb(e,c);Yrb(a,e);return f}}\nfunction P9d(a){var b;if(a==null)return null;b=ide(Qge(a,true));if(b==null){throw vbb(new n8d(\"Invalid hexBinary value: '\"+a+\"'\"))}return b}\nfunction ghb(a){Hgb();if(ybb(a,0)<0){if(ybb(a,-1)!=0){return new Wgb(-1,Jbb(a))}return Bgb}else return ybb(a,10)<=0?Dgb[Tbb(a)]:new Wgb(1,a)}\nfunction wJb(){qJb();return OC(GC(DN,1),Kie,159,0,[nJb,mJb,oJb,eJb,dJb,fJb,iJb,hJb,gJb,lJb,kJb,jJb,bJb,aJb,cJb,$Ib,ZIb,_Ib,XIb,WIb,YIb,pJb])}\nfunction vjc(a){var b;this.d=new Rkb;this.j=new d7c;this.g=new d7c;b=a.g.b;this.f=BD(vNb(Q_b(b),(Nyc(),Lwc)),103);this.e=Edb(ED(c_b(b,ryc)))}\nfunction Pjc(a){this.b=new Rkb;this.e=new Rkb;this.d=a;this.a=!WAb(JAb(new YAb(null,new Lub(new b1b(a.b))),new Xxb(new Qjc))).sd((EAb(),DAb))}\nfunction N5c(){N5c=ccb;L5c=new O5c('PARENTS',0);K5c=new O5c('NODES',1);I5c=new O5c('EDGES',2);M5c=new O5c('PORTS',3);J5c=new O5c('LABELS',4)}\nfunction Tbd(){Tbd=ccb;Qbd=new Ubd('DISTRIBUTED',0);Sbd=new Ubd('JUSTIFIED',1);Obd=new Ubd('BEGIN',2);Pbd=new Ubd(gle,3);Rbd=new Ubd('END',4)}\nfunction UMd(a){var b;b=a.yi(null);switch(b){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4;}return -1}\nfunction cYb(a){switch(a.g){case 1:return ead(),dad;case 4:return ead(),aad;case 2:return ead(),bad;case 3:return ead(),_9c;}return ead(),cad}\nfunction kA(a,b,c){var d;d=c.q.getFullYear()-nje+nje;d<0&&(d=-d);switch(b){case 1:a.a+=d;break;case 2:EA(a,d%100,2);break;default:EA(a,d,b);}}\nfunction Jsb(a,b){var c,d;wCb(b,a.b);if(b>=a.b>>1){d=a.c;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c=64&&b<128&&(e=Mbb(e,Nbb(1,b-64)))}return e}\nfunction c_b(a,b){var c,d;d=null;if(wNb(a,(Y9c(),O9c))){c=BD(vNb(a,O9c),94);c.Xe(b)&&(d=c.We(b))}d==null&&!!Q_b(a)&&(d=vNb(Q_b(a),b));return d}\nfunction oQc(a,b){var c,d,e;e=b.d.i;d=e.k;if(d==(j0b(),h0b)||d==d0b){return}c=new Sr(ur(U_b(e).a.Kc(),new Sq));Qr(c)&&Rhb(a.k,b,BD(Rr(c),17))}\nfunction mid(a,b){var c,d,e;d=XKd(a.Tg(),b);c=b-a.Ah();return c<0?(e=a.Yg(d),e>=0?a.lh(e):tid(a,d)):c<0?tid(a,d):BD(d,66).Nj().Sj(a,a.yh(),c)}\nfunction Ksd(a){var b;if(JD(a.a,4)){b=fvd(a.a);if(b==null){throw vbb(new Zdb(mse+a.b+\"'. \"+ise+(fdb(Y3),Y3.k)+jse))}return b}else{return a.a}}\nfunction L9d(a){var b;if(a==null)return null;b=bde(Qge(a,true));if(b==null){throw vbb(new n8d(\"Invalid base64Binary value: '\"+a+\"'\"))}return b}\nfunction Dyd(b){var c;try{c=b.i.Xb(b.e);b.mj();b.g=b.e++;return c}catch(a){a=ubb(a);if(JD(a,73)){b.mj();throw vbb(new utb)}else throw vbb(a)}}\nfunction Zyd(b){var c;try{c=b.c.ki(b.e);b.mj();b.g=b.e++;return c}catch(a){a=ubb(a);if(JD(a,73)){b.mj();throw vbb(new utb)}else throw vbb(a)}}\nfunction CPb(){CPb=ccb;BPb=(Y9c(),K9c);vPb=G8c;qPb=r8c;wPb=f9c;zPb=(fFb(),bFb);yPb=_Eb;APb=dFb;xPb=$Eb;sPb=(nPb(),jPb);rPb=iPb;tPb=lPb;uPb=mPb}\nfunction NWb(a){LWb();this.c=new Rkb;this.d=a;switch(a.g){case 0:case 2:this.a=tmb(KWb);this.b=Pje;break;case 3:case 1:this.a=KWb;this.b=Qje;}}\nfunction ued(a,b,c){var d,e;if(a.c){dld(a.c,a.c.i+b);eld(a.c,a.c.j+c)}else{for(e=new olb(a.b);e.a0){Ekb(a.b,new WA(b.a,c));d=b.a.length;0d&&(b.a+=yfb(KC(TD,$ie,25,-d,15,1)))}}\nfunction JKb(a,b){var c,d,e;c=a.o;for(e=BD(BD(Qc(a.r,b),21),84).Kc();e.Ob();){d=BD(e.Pb(),111);d.e.a=DKb(d,c.a);d.e.b=c.b*Edb(ED(d.b.We(BKb)))}}\nfunction S5b(a,b){var c,d,e,f;e=a.k;c=Edb(ED(vNb(a,(wtc(),htc))));f=b.k;d=Edb(ED(vNb(b,htc)));return f!=(j0b(),e0b)?-1:e!=e0b?1:c==d?0:c=0){return a.hh(b,c,d)}else{!!a.eh()&&(d=(e=a.Vg(),e>=0?a.Qg(d):a.eh().ih(a,-1-e,null,d)));return a.Sg(b,c,d)}}\nfunction zld(a,b){switch(b){case 7:!a.e&&(a.e=new y5d(B2,a,7,4));Uxd(a.e);return;case 8:!a.d&&(a.d=new y5d(B2,a,8,5));Uxd(a.d);return;}$kd(a,b)}\nfunction Ut(b,c){var d;d=b.Zc(c);try{return d.Pb()}catch(a){a=ubb(a);if(JD(a,109)){throw vbb(new qcb(\"Can't get element \"+c))}else throw vbb(a)}}\nfunction Tgb(a,b){this.e=a;if(b=0&&(c.d=a.t);break;case 3:a.t>=0&&(c.a=a.t);}if(a.C){c.b=a.C.b;c.c=a.C.c}}\nfunction RMb(){RMb=ccb;OMb=new SMb(xle,0);NMb=new SMb(yle,1);PMb=new SMb(zle,2);QMb=new SMb(Ale,3);OMb.a=false;NMb.a=true;PMb.a=false;QMb.a=true}\nfunction ROb(){ROb=ccb;OOb=new SOb(xle,0);NOb=new SOb(yle,1);POb=new SOb(zle,2);QOb=new SOb(Ale,3);OOb.a=false;NOb.a=true;POb.a=false;QOb.a=true}\nfunction dac(a){var b;b=a.a;do{b=BD(Rr(new Sr(ur(R_b(b).a.Kc(),new Sq))),17).c.i;b.k==(j0b(),g0b)&&a.b.Fc(b)}while(b.k==(j0b(),g0b));a.b=Su(a.b)}\nfunction CDc(a){var b,c,d;d=a.c.a;a.p=(Qb(d),new Tkb(d));for(c=new olb(d);c.ac.b){return true}}}return false}\nfunction AD(a,b){if(ND(a)){return !!zD[b]}else if(a.hm){return !!a.hm[b]}else if(LD(a)){return !!yD[b]}else if(KD(a)){return !!xD[b]}return false}\nfunction jkd(a,b,c){c==null?(!a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),LAd(a.o,b)):(!a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),HAd(a.o,b,c));return a}\nfunction jKb(a,b,c,d){var e,f;f=b.Xe((Y9c(),W8c))?BD(b.We(W8c),21):a.j;e=uJb(f);if(e==(qJb(),pJb)){return}if(c&&!sJb(e)){return}UHb(lKb(a,e,d),b)}\nfunction fid(a,b,c,d){var e,f,g;f=XKd(a.Tg(),b);e=b-a.Ah();return e<0?(g=a.Yg(f),g>=0?a._g(g,c,true):sid(a,f,c)):BD(f,66).Nj().Pj(a,a.yh(),e,c,d)}\nfunction u6d(a,b,c,d){var e,f,g;if(c.mh(b)){Q6d();if(YId(b)){e=BD(c.ah(b),153);x6d(a,e)}else{f=(g=b,!g?null:BD(d,49).xh(g));!!f&&v6d(c.ah(b),f)}}}\nfunction H3b(a){switch(a.g){case 1:return vLb(),uLb;case 3:return vLb(),rLb;case 2:return vLb(),tLb;case 4:return vLb(),sLb;default:return null;}}\nfunction kCb(a){switch(typeof(a)){case Mhe:return LCb(a);case Lhe:return QD(a);case Khe:return Bcb(),a?1231:1237;default:return a==null?0:FCb(a);}}\nfunction Gic(a,b,c){if(a.e){switch(a.b){case 1:oic(a.c,b,c);break;case 0:pic(a.c,b,c);}}else{mic(a.c,b,c)}a.a[b.p][c.p]=a.c.i;a.a[c.p][b.p]=a.c.e}\nfunction lHc(a){var b,c;if(a==null){return null}c=KC(OQ,nie,193,a.length,0,2);for(b=0;b=0)return e;if(a.Fk()){for(d=0;d=e)throw vbb(new Cyd(b,e));if(a.hi()){d=a.Xc(c);if(d>=0&&d!=b){throw vbb(new Wdb(kue))}}return a.mi(b,c)}\nfunction gx(a,b){this.a=BD(Qb(a),245);this.b=BD(Qb(b),245);if(a.vd(b)>0||a==(Lk(),Kk)||b==(_k(),$k)){throw vbb(new Wdb('Invalid range: '+nx(a,b)))}}\nfunction mYb(a){var b,c;this.b=new Rkb;this.c=a;this.a=false;for(c=new olb(a.a);c.a0);if((b&-b)==b){return QD(b*Cub(a,31)*4.6566128730773926E-10)}do{c=Cub(a,31);d=c%b}while(c-d+(b-1)<0);return QD(d)}\nfunction LCb(a){JCb();var b,c,d;c=':'+a;d=ICb[c];if(d!=null){return QD((uCb(d),d))}d=GCb[c];b=d==null?KCb(a):QD((uCb(d),d));MCb();ICb[c]=b;return b}\nfunction qZb(a,b,c){Odd(c,'Compound graph preprocessor',1);a.a=new Hp;vZb(a,b,null);pZb(a,b);uZb(a);yNb(b,(wtc(),zsc),a.a);a.a=null;Uhb(a.b);Qdd(c)}\nfunction X$b(a,b,c){switch(c.g){case 1:a.a=b.a/2;a.b=0;break;case 2:a.a=b.a;a.b=b.b/2;break;case 3:a.a=b.a/2;a.b=b.b;break;case 4:a.a=0;a.b=b.b/2;}}\nfunction tkc(a){var b,c,d;for(d=BD(Qc(a.a,(Xjc(),Vjc)),15).Kc();d.Ob();){c=BD(d.Pb(),101);b=Bkc(c);kkc(a,c,b[0],(Fkc(),Ckc),0);kkc(a,c,b[1],Ekc,1)}}\nfunction ukc(a){var b,c,d;for(d=BD(Qc(a.a,(Xjc(),Wjc)),15).Kc();d.Ob();){c=BD(d.Pb(),101);b=Bkc(c);kkc(a,c,b[0],(Fkc(),Ckc),0);kkc(a,c,b[1],Ekc,1)}}\nfunction tXc(a){switch(a.g){case 0:return null;case 1:return new $Xc;case 2:return new QXc;default:throw vbb(new Wdb(jre+(a.f!=null?a.f:''+a.g)));}}\nfunction OZc(a,b,c){var d,e;FZc(a,b-a.s,c-a.t);for(e=new olb(a.n);e.a1&&(f=GFb(a,b));return f}\nfunction dmd(a){var b;if(!!a.f&&a.f.kh()){b=BD(a.f,49);a.f=BD(xid(a,b),82);a.f!=b&&(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,9,8,b,a.f))}return a.f}\nfunction emd(a){var b;if(!!a.i&&a.i.kh()){b=BD(a.i,49);a.i=BD(xid(a,b),82);a.i!=b&&(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,9,7,b,a.i))}return a.i}\nfunction zUd(a){var b;if(!!a.b&&(a.b.Db&64)!=0){b=a.b;a.b=BD(xid(a,b),18);a.b!=b&&(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,9,21,b,a.b))}return a.b}\nfunction uAd(a,b){var c,d,e;if(a.d==null){++a.e;++a.f}else{d=b.Sh();BAd(a,a.f+1);e=(d&Ohe)%a.d.length;c=a.d[e];!c&&(c=a.d[e]=a.uj());c.Fc(b);++a.f}}\nfunction m3d(a,b,c){var d;if(b.Kj()){return false}else if(b.Zj()!=-2){d=b.zj();return d==null?c==null:pb(d,c)}else return b.Hj()==a.e.Tg()&&c==null}\nfunction wo(){var a;Xj(16,Hie);a=Kp(16);this.b=KC(GF,Gie,317,a,0,1);this.c=KC(GF,Gie,317,a,0,1);this.a=null;this.e=null;this.i=0;this.f=a-1;this.g=0}\nfunction b0b(a){n_b.call(this);this.k=(j0b(),h0b);this.j=(Xj(6,Jie),new Skb(6));this.b=(Xj(2,Jie),new Skb(2));this.d=new L_b;this.f=new s0b;this.a=a}\nfunction Scc(a){var b,c;if(a.c.length<=1){return}b=Pcc(a,(Ucd(),Rcd));Rcc(a,BD(b.a,19).a,BD(b.b,19).a);c=Pcc(a,Tcd);Rcc(a,BD(c.a,19).a,BD(c.b,19).a)}\nfunction Vzc(){Vzc=ccb;Uzc=new Xzc('SIMPLE',0);Rzc=new Xzc(Tne,1);Szc=new Xzc('LINEAR_SEGMENTS',2);Qzc=new Xzc('BRANDES_KOEPF',3);Tzc=new Xzc(Aqe,4)}\nfunction XDc(a,b,c){if(!ecd(BD(vNb(b,(Nyc(),Vxc)),98))){WDc(a,b,Y_b(b,c));WDc(a,b,Y_b(b,(Ucd(),Rcd)));WDc(a,b,Y_b(b,Acd));mmb();Okb(b.j,new jEc(a))}}\nfunction HVc(a,b,c,d){var e,f,g;e=d?BD(Qc(a.a,b),21):BD(Qc(a.b,b),21);for(g=e.Kc();g.Ob();){f=BD(g.Pb(),33);if(BVc(a,c,f)){return true}}return false}\nfunction FMd(a){var b,c;for(c=new Fyd(a);c.e!=c.i.gc();){b=BD(Dyd(c),87);if(!!b.e||(!b.d&&(b.d=new xMd(j5,b,1)),b.d).i!=0){return true}}return false}\nfunction QTd(a){var b,c;for(c=new Fyd(a);c.e!=c.i.gc();){b=BD(Dyd(c),87);if(!!b.e||(!b.d&&(b.d=new xMd(j5,b,1)),b.d).i!=0){return true}}return false}\nfunction FDc(a){var b,c,d;b=0;for(d=new olb(a.c.a);d.a102)return -1;if(a<=57)return a-48;if(a<65)return -1;if(a<=70)return a-65+10;if(a<97)return -1;return a-97+10}\nfunction Wj(a,b){if(a==null){throw vbb(new Heb('null key in entry: null='+b))}else if(b==null){throw vbb(new Heb('null value in entry: '+a+'=null'))}}\nfunction kr(a,b){var c,d;while(a.Ob()){if(!b.Ob()){return false}c=a.Pb();d=b.Pb();if(!(PD(c)===PD(d)||c!=null&&pb(c,d))){return false}}return !b.Ob()}\nfunction jIb(a,b){var c;c=OC(GC(UD,1),Vje,25,15,[pHb(a.a[0],b),pHb(a.a[1],b),pHb(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c}\nfunction kIb(a,b){var c;c=OC(GC(UD,1),Vje,25,15,[qHb(a.a[0],b),qHb(a.a[1],b),qHb(a.a[2],b)]);if(a.d){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c}\nfunction mqc(){mqc=ccb;iqc=new oqc('GREEDY',0);hqc=new oqc(Une,1);kqc=new oqc(Tne,2);lqc=new oqc('MODEL_ORDER',3);jqc=new oqc('GREEDY_MODEL_ORDER',4)}\nfunction iUc(a,b){var c,d,e;a.b[b.g]=1;for(d=Jsb(b.d,0);d.b!=d.d.c;){c=BD(Xsb(d),188);e=c.c;a.b[e.g]==1?Dsb(a.a,c):a.b[e.g]==2?(a.b[e.g]=1):iUc(a,e)}}\nfunction V9b(a,b){var c,d,e;e=new Skb(b.gc());for(d=b.Kc();d.Ob();){c=BD(d.Pb(),286);c.c==c.f?K9b(a,c,c.c):L9b(a,c)||(e.c[e.c.length]=c,true)}return e}\nfunction IZc(a,b,c){var d,e,f,g,h;h=a.r+b;a.r+=b;a.d+=c;d=c/a.n.c.length;e=0;for(g=new olb(a.n);g.af&&NC(b,f,null);return b}\nfunction Lu(a,b){var c,d;d=a.gc();if(b==null){for(c=0;c0&&(i+=e);j[k]=g;g+=h*(i+d)}}\nfunction Uoc(a){var b,c,d;d=a.f;a.n=KC(UD,Vje,25,d,15,1);a.d=KC(UD,Vje,25,d,15,1);for(b=0;b0?a.c:0);++e}a.b=d;a.d=f}\nfunction BZc(a,b){var c,d,e,f,g;d=0;e=0;c=0;for(g=new olb(b);g.a0?a.g:0);++c}a.c=e;a.d=d}\nfunction AHb(a,b){var c;c=OC(GC(UD,1),Vje,25,15,[zHb(a,(gHb(),dHb),b),zHb(a,eHb,b),zHb(a,fHb,b)]);if(a.f){c[0]=$wnd.Math.max(c[0],c[2]);c[2]=c[0]}return c}\nfunction lNb(b,c,d){var e;try{aNb(b,c+b.j,d+b.k,false,true)}catch(a){a=ubb(a);if(JD(a,73)){e=a;throw vbb(new qcb(e.g+Gle+c+She+d+').'))}else throw vbb(a)}}\nfunction mNb(b,c,d){var e;try{aNb(b,c+b.j,d+b.k,true,false)}catch(a){a=ubb(a);if(JD(a,73)){e=a;throw vbb(new qcb(e.g+Gle+c+She+d+').'))}else throw vbb(a)}}\nfunction d5b(a){var b;if(!wNb(a,(Nyc(),xxc))){return}b=BD(vNb(a,xxc),21);if(b.Hc((Hbd(),zbd))){b.Mc(zbd);b.Fc(Bbd)}else if(b.Hc(Bbd)){b.Mc(Bbd);b.Fc(zbd)}}\nfunction e5b(a){var b;if(!wNb(a,(Nyc(),xxc))){return}b=BD(vNb(a,xxc),21);if(b.Hc((Hbd(),Gbd))){b.Mc(Gbd);b.Fc(Ebd)}else if(b.Hc(Ebd)){b.Mc(Ebd);b.Fc(Gbd)}}\nfunction udc(a,b,c){Odd(c,'Self-Loop ordering',1);MAb(NAb(JAb(JAb(LAb(new YAb(null,new Kub(b.b,16)),new ydc),new Adc),new Cdc),new Edc),new Gdc(a));Qdd(c)}\nfunction ikc(a,b,c,d){var e,f;for(e=b;e0&&(e.b+=b);return e}\nfunction GXb(a,b){var c,d,e;e=new d7c;for(d=a.Kc();d.Ob();){c=BD(d.Pb(),37);uXb(c,0,e.b);e.b+=c.f.b+b;e.a=$wnd.Math.max(e.a,c.f.a)}e.a>0&&(e.a+=b);return e}\nfunction d_b(a){var b,c,d;d=Ohe;for(c=new olb(a.a);c.a>16==6){return a.Cb.ih(a,5,o5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?a.zh():c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction Wz(a){Rz();var b=a.e;if(b&&b.stack){var c=b.stack;var d=b+'\\n';c.substring(0,d.length)==d&&(c=c.substring(d.length));return c.split('\\n')}return []}\nfunction jeb(a){var b;b=(qeb(),peb);return b[a>>>28]|b[a>>24&15]<<4|b[a>>20&15]<<8|b[a>>16&15]<<12|b[a>>12&15]<<16|b[a>>8&15]<<20|b[a>>4&15]<<24|b[a&15]<<28}\nfunction _jb(a){var b,c,d;if(a.b!=a.c){return}d=a.a.length;c=geb($wnd.Math.max(8,d))<<1;if(a.b!=0){b=_Bb(a.a,c);$jb(a,b,d);a.a=b;a.b=0}else{dCb(a.a,c)}a.c=d}\nfunction DKb(a,b){var c;c=a.b;return c.Xe((Y9c(),s9c))?c.Hf()==(Ucd(),Tcd)?-c.rf().a-Edb(ED(c.We(s9c))):b+Edb(ED(c.We(s9c))):c.Hf()==(Ucd(),Tcd)?-c.rf().a:b}\nfunction P_b(a){var b;if(a.b.c.length!=0&&!!BD(Ikb(a.b,0),70).a){return BD(Ikb(a.b,0),70).a}b=JZb(a);if(b!=null){return b}return ''+(!a.c?-1:Jkb(a.c.a,a,0))}\nfunction C0b(a){var b;if(a.f.c.length!=0&&!!BD(Ikb(a.f,0),70).a){return BD(Ikb(a.f,0),70).a}b=JZb(a);if(b!=null){return b}return ''+(!a.i?-1:Jkb(a.i.j,a,0))}\nfunction Ogc(a,b){var c,d;if(b<0||b>=a.gc()){return null}for(c=b;c0?a.c:0);e=$wnd.Math.max(e,b.d);++d}a.e=f;a.b=e}\nfunction shd(a){var b,c;if(!a.b){a.b=Qu(BD(a.f,118).Ag().i);for(c=new Fyd(BD(a.f,118).Ag());c.e!=c.i.gc();){b=BD(Dyd(c),137);Ekb(a.b,new dhd(b))}}return a.b}\nfunction Ctd(a,b){var c,d,e;if(b.dc()){return LCd(),LCd(),KCd}else{c=new zyd(a,b.gc());for(e=new Fyd(a);e.e!=e.i.gc();){d=Dyd(e);b.Hc(d)&&wtd(c,d)}return c}}\nfunction bkd(a,b,c,d){if(b==0){return d?(!a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),a.o):(!a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),FAd(a.o))}return fid(a,b,c,d)}\nfunction Tnd(a){var b,c;if(a.rb){for(b=0,c=a.rb.i;b>22);e+=d>>22;if(e<0){return false}a.l=c&Eje;a.m=d&Eje;a.h=e&Fje;return true}\nfunction Fwb(a,b,c,d,e,f,g){var h,i;if(b.Ae()&&(i=a.a.ue(c,d),i<0||!e&&i==0)){return false}if(b.Be()&&(h=a.a.ue(c,f),h>0||!g&&h==0)){return false}return true}\nfunction Vcc(a,b){Occ();var c;c=a.j.g-b.j.g;if(c!=0){return 0}switch(a.j.g){case 2:return Ycc(b,Ncc)-Ycc(a,Ncc);case 4:return Ycc(a,Mcc)-Ycc(b,Mcc);}return 0}\nfunction Tqc(a){switch(a.g){case 0:return Mqc;case 1:return Nqc;case 2:return Oqc;case 3:return Pqc;case 4:return Qqc;case 5:return Rqc;default:return null;}}\nfunction End(a,b,c){var d,e;d=(e=new rUd,yId(e,b),pnd(e,c),wtd((!a.c&&(a.c=new cUd(p5,a,12,10)),a.c),e),e);AId(d,0);DId(d,1);CId(d,true);BId(d,true);return d}\nfunction tud(a,b){var c,d;if(b>=a.i)throw vbb(new $zd(b,a.i));++a.j;c=a.g[b];d=a.i-b-1;d>0&&$fb(a.g,b+1,a.g,b,d);NC(a.g,--a.i,null);a.fi(b,c);a.ci();return c}\nfunction UId(a,b){var c,d;if(a.Db>>16==17){return a.Cb.ih(a,21,c5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?a.zh():c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction iDb(a){var b,c,d,e;mmb();Okb(a.c,a.a);for(e=new olb(a.c);e.ac.a.c.length)){throw vbb(new Wdb('index must be >= 0 and <= layer node count'))}!!a.c&&Lkb(a.c.a,a);a.c=c;!!c&&Dkb(c.a,b,a)}\nfunction p7b(a,b){var c,d,e;for(d=new Sr(ur(O_b(a).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),17);e=BD(b.Kb(c),10);return new cc(Qb(e.n.b+e.o.b/2))}return wb(),wb(),vb}\nfunction rMc(a,b){this.c=new Lqb;this.a=a;this.b=b;this.d=BD(vNb(a,(wtc(),otc)),304);PD(vNb(a,(Nyc(),yxc)))===PD((_qc(),Zqc))?(this.e=new bNc):(this.e=new WMc)}\nfunction $dd(a,b){var c,d,e,f;f=0;for(d=new olb(a);d.a>16==6){return a.Cb.ih(a,6,B2,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(Thd(),Lhd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction Eod(a,b){var c,d;if(a.Db>>16==7){return a.Cb.ih(a,1,C2,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(Thd(),Nhd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction lpd(a,b){var c,d;if(a.Db>>16==9){return a.Cb.ih(a,9,E2,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(Thd(),Phd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction mQd(a,b){var c,d;if(a.Db>>16==5){return a.Cb.ih(a,9,h5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(jGd(),VFd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction KHd(a,b){var c,d;if(a.Db>>16==3){return a.Cb.ih(a,0,k5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(jGd(),OFd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction Snd(a,b){var c,d;if(a.Db>>16==7){return a.Cb.ih(a,6,o5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(jGd(),cGd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction ird(){this.a=new bqd;this.g=new wo;this.j=new wo;this.b=new Lqb;this.d=new wo;this.i=new wo;this.k=new Lqb;this.c=new Lqb;this.e=new Lqb;this.f=new Lqb}\nfunction MCd(a,b,c){var d,e,f;c<0&&(c=0);f=a.i;for(e=c;eWje){return p6d(a,d)}if(d==a){return true}}}return false}\nfunction HKb(a){CKb();switch(a.q.g){case 5:EKb(a,(Ucd(),Acd));EKb(a,Rcd);break;case 4:FKb(a,(Ucd(),Acd));FKb(a,Rcd);break;default:GKb(a,(Ucd(),Acd));GKb(a,Rcd);}}\nfunction LKb(a){CKb();switch(a.q.g){case 5:IKb(a,(Ucd(),zcd));IKb(a,Tcd);break;case 4:JKb(a,(Ucd(),zcd));JKb(a,Tcd);break;default:KKb(a,(Ucd(),zcd));KKb(a,Tcd);}}\nfunction XQb(a){var b,c;b=BD(vNb(a,(wSb(),pSb)),19);if(b){c=b.a;c==0?yNb(a,(HSb(),GSb),new Gub):yNb(a,(HSb(),GSb),new Hub(c))}else{yNb(a,(HSb(),GSb),new Hub(1))}}\nfunction V$b(a,b){var c;c=a.i;switch(b.g){case 1:return -(a.n.b+a.o.b);case 2:return a.n.a-c.o.a;case 3:return a.n.b-c.o.b;case 4:return -(a.n.a+a.o.a);}return 0}\nfunction hbc(a,b){switch(a.g){case 0:return b==(Ctc(),ytc)?dbc:ebc;case 1:return b==(Ctc(),ytc)?dbc:cbc;case 2:return b==(Ctc(),ytc)?cbc:ebc;default:return cbc;}}\nfunction v$c(a,b){var c,d,e;Lkb(a.a,b);a.e-=b.r+(a.a.c.length==0?0:a.c);e=ere;for(d=new olb(a.a);d.a>16==3){return a.Cb.ih(a,12,E2,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(Thd(),Khd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction Uod(a,b){var c,d;if(a.Db>>16==11){return a.Cb.ih(a,10,E2,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(Thd(),Ohd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction PSd(a,b){var c,d;if(a.Db>>16==10){return a.Cb.ih(a,11,c5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(jGd(),aGd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction qUd(a,b){var c,d;if(a.Db>>16==10){return a.Cb.ih(a,12,n5,b)}return d=zUd(BD(XKd((c=BD(Ajd(a,16),26),!c?(jGd(),dGd):c),a.Db>>16),18)),a.Cb.ih(a,d.n,d.f,b)}\nfunction wId(a){var b;if((a.Bb&1)==0&&!!a.r&&a.r.kh()){b=BD(a.r,49);a.r=BD(xid(a,b),138);a.r!=b&&(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,9,8,b,a.r))}return a.r}\nfunction yHb(a,b,c){var d;d=OC(GC(UD,1),Vje,25,15,[BHb(a,(gHb(),dHb),b,c),BHb(a,eHb,b,c),BHb(a,fHb,b,c)]);if(a.f){d[0]=$wnd.Math.max(d[0],d[2]);d[2]=d[0]}return d}\nfunction O9b(a,b){var c,d,e;e=V9b(a,b);if(e.c.length==0){return}Okb(e,new pac);c=e.c.length;for(d=0;d>19;j=b.h>>19;if(i!=j){return j-i}e=a.h;h=b.h;if(e!=h){return e-h}d=a.m;g=b.m;if(d!=g){return d-g}c=a.l;f=b.l;return c-f}\nfunction fFb(){fFb=ccb;eFb=(rFb(),oFb);dFb=new Nsd(Yke,eFb);cFb=(UEb(),TEb);bFb=new Nsd(Zke,cFb);aFb=(MEb(),LEb);_Eb=new Nsd($ke,aFb);$Eb=new Nsd(_ke,(Bcb(),true))}\nfunction cfc(a,b,c){var d,e;d=b*c;if(JD(a.g,145)){e=ugc(a);if(e.f.d){e.f.a||(a.d.a+=d+ple)}else{a.d.d-=d+ple;a.d.a+=d+ple}}else if(JD(a.g,10)){a.d.d-=d;a.d.a+=2*d}}\nfunction vmc(a,b,c){var d,e,f,g,h;e=a[c.g];for(h=new olb(b.d);h.a0?a.g:0);++c}b.b=d;b.e=e}\nfunction to(a){var b,c,d;d=a.b;if(Lp(a.i,d.length)){c=d.length*2;a.b=KC(GF,Gie,317,c,0,1);a.c=KC(GF,Gie,317,c,0,1);a.f=c-1;a.i=0;for(b=a.a;b;b=b.c){po(a,b,b)}++a.g}}\nfunction cNb(a,b,c,d){var e,f,g,h;for(e=0;eg&&(h=g/d);e>f&&(i=f/e);Y6c(a,$wnd.Math.min(h,i));return a}\nfunction ond(){Smd();var b,c;try{c=BD(mUd((yFd(),xFd),yte),2014);if(c){return c}}catch(a){a=ubb(a);if(JD(a,102)){b=a;uvd((h0d(),b))}else throw vbb(a)}return new knd}\nfunction Y9d(){A9d();var b,c;try{c=BD(mUd((yFd(),xFd),Ewe),2024);if(c){return c}}catch(a){a=ubb(a);if(JD(a,102)){b=a;uvd((h0d(),b))}else throw vbb(a)}return new U9d}\nfunction qZd(){Smd();var b,c;try{c=BD(mUd((yFd(),xFd),_ve),1941);if(c){return c}}catch(a){a=ubb(a);if(JD(a,102)){b=a;uvd((h0d(),b))}else throw vbb(a)}return new mZd}\nfunction HQd(a,b,c){var d,e;e=a.e;a.e=b;if((a.Db&4)!=0&&(a.Db&1)==0){d=new nSd(a,1,4,e,b);!c?(c=d):c.Ei(d)}e!=b&&(b?(c=QQd(a,MQd(a,b),c)):(c=QQd(a,a.a,c)));return c}\nfunction nB(){eB.call(this);this.e=-1;this.a=false;this.p=Rie;this.k=-1;this.c=-1;this.b=-1;this.g=false;this.f=-1;this.j=-1;this.n=-1;this.i=-1;this.d=-1;this.o=Rie}\nfunction qEb(a,b){var c,d,e;d=a.b.d.d;a.a||(d+=a.b.d.a);e=b.b.d.d;b.a||(e+=b.b.d.a);c=Kdb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c}\nfunction eOb(a,b){var c,d,e;d=a.b.b.d;a.a||(d+=a.b.b.a);e=b.b.b.d;b.a||(e+=b.b.b.a);c=Kdb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c}\nfunction PVb(a,b){var c,d,e;d=a.b.g.d;a.a||(d+=a.b.g.a);e=b.b.g.d;b.a||(e+=b.b.g.a);c=Kdb(d,e);if(c==0){if(!a.a&&b.a){return -1}else if(!b.a&&a.a){return 1}}return c}\nfunction ZTb(){ZTb=ccb;WTb=c3c(e3c(e3c(e3c(new j3c,(qUb(),oUb),(S8b(),m8b)),oUb,q8b),pUb,x8b),pUb,a8b);YTb=e3c(e3c(new j3c,oUb,S7b),oUb,b8b);XTb=c3c(new j3c,pUb,d8b)}\nfunction s3b(a){var b,c,d,e,f;b=BD(vNb(a,(wtc(),Csc)),83);f=a.n;for(d=b.Cc().Kc();d.Ob();){c=BD(d.Pb(),306);e=c.i;e.c+=f.a;e.d+=f.b;c.c?VHb(c):XHb(c)}yNb(a,Csc,null)}\nfunction qmc(a,b,c){var d,e;e=a.b;d=e.d;switch(b.g){case 1:return -d.d-c;case 2:return e.o.a+d.c+c;case 3:return e.o.b+d.a+c;case 4:return -d.b-c;default:return -1;}}\nfunction BXc(a){var b,c,d,e,f;d=0;e=dme;if(a.b){for(b=0;b<360;b++){c=b*0.017453292519943295;zXc(a,a.d,0,0,dre,c);f=a.b.ig(a.d);if(f0){g=(f&Ohe)%a.d.length;e=wAd(a,g,f,b);if(e){h=e.ed(c);return h}}d=a.tj(f,b,c);a.c.Fc(d);return null}\nfunction t1d(a,b){var c,d,e,f;switch(o1d(a,b)._k()){case 3:case 2:{c=OKd(b);for(e=0,f=c.i;e=0;d--){if(dfb(a[d].d,b)||dfb(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a}\nfunction Abb(a,b){var c;if(Fbb(a)&&Fbb(b)){c=a/b;if(Kje0){a.b+=2;a.a+=d}}else{a.b+=1;a.a+=$wnd.Math.min(d,e)}}\nfunction Rpd(a,b){var c,d;d=false;if(ND(b)){d=true;Qpd(a,new yC(GD(b)))}if(!d){if(JD(b,236)){d=true;Qpd(a,(c=Kcb(BD(b,236)),new TB(c)))}}if(!d){throw vbb(new vcb(Ute))}}\nfunction IMd(a,b,c,d){var e,f,g;e=new pSd(a.e,1,10,(g=b.c,JD(g,88)?BD(g,26):(jGd(),_Fd)),(f=c.c,JD(f,88)?BD(f,26):(jGd(),_Fd)),HLd(a,b),false);!d?(d=e):d.Ei(e);return d}\nfunction T_b(a){var b,c;switch(BD(vNb(Q_b(a),(Nyc(),ixc)),420).g){case 0:b=a.n;c=a.o;return new f7c(b.a+c.a/2,b.b+c.b/2);case 1:return new g7c(a.n);default:return null;}}\nfunction lrc(){lrc=ccb;irc=new mrc(ane,0);hrc=new mrc('LEFTUP',1);krc=new mrc('RIGHTUP',2);grc=new mrc('LEFTDOWN',3);jrc=new mrc('RIGHTDOWN',4);frc=new mrc('BALANCED',5)}\nfunction FFc(a,b,c){var d,e,f;d=Kdb(a.a[b.p],a.a[c.p]);if(d==0){e=BD(vNb(b,(wtc(),Qsc)),15);f=BD(vNb(c,Qsc),15);if(e.Hc(c)){return -1}else if(f.Hc(b)){return 1}}return d}\nfunction jXc(a){switch(a.g){case 1:return new XVc;case 2:return new ZVc;case 3:return new VVc;case 0:return null;default:throw vbb(new Wdb(jre+(a.f!=null?a.f:''+a.g)));}}\nfunction Ikd(a,b,c){switch(b){case 1:!a.n&&(a.n=new cUd(D2,a,1,7));Uxd(a.n);!a.n&&(a.n=new cUd(D2,a,1,7));ytd(a.n,BD(c,14));return;case 2:Lkd(a,GD(c));return;}ekd(a,b,c)}\nfunction Zkd(a,b,c){switch(b){case 3:ald(a,Edb(ED(c)));return;case 4:cld(a,Edb(ED(c)));return;case 5:dld(a,Edb(ED(c)));return;case 6:eld(a,Edb(ED(c)));return;}Ikd(a,b,c)}\nfunction Fnd(a,b,c){var d,e,f;f=(d=new rUd,d);e=xId(f,b,null);!!e&&e.Fi();pnd(f,c);wtd((!a.c&&(a.c=new cUd(p5,a,12,10)),a.c),f);AId(f,0);DId(f,1);CId(f,true);BId(f,true)}\nfunction mUd(a,b){var c,d,e;c=Crb(a.g,b);if(JD(c,235)){e=BD(c,235);e.Qh()==null&&undefined;return e.Nh()}else if(JD(c,498)){d=BD(c,1938);e=d.b;return e}else{return null}}\nfunction Ui(a,b,c,d){var e,f;Qb(b);Qb(c);f=BD(tn(a.d,b),19);Ob(!!f,'Row %s not in %s',b,a.e);e=BD(tn(a.b,c),19);Ob(!!e,'Column %s not in %s',c,a.c);return Wi(a,f.a,e.a,d)}\nfunction JC(a,b,c,d,e,f,g){var h,i,j,k,l;k=e[f];j=f==g-1;h=j?d:0;l=LC(h,k);d!=10&&OC(GC(a,g-f),b[f],c[f],h,l);if(!j){++f;for(i=0;i1||h==-1){f=BD(i,15);e.Wb(t6d(a,f))}else{e.Wb(s6d(a,BD(i,56)))}}}}\nfunction Zbb(b,c,d,e){Ybb();var f=Wbb;$moduleName=c;$moduleBase=d;tbb=e;function g(){for(var a=0;aOqe){return c}else e>-1.0E-6&&++c}return c}\nfunction PQd(a,b){var c;if(b!=a.b){c=null;!!a.b&&(c=lid(a.b,a,-4,c));!!b&&(c=kid(b,a,-4,c));c=GQd(a,b,c);!!c&&c.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,3,b,b))}\nfunction SQd(a,b){var c;if(b!=a.f){c=null;!!a.f&&(c=lid(a.f,a,-1,c));!!b&&(c=kid(b,a,-1,c));c=IQd(a,b,c);!!c&&c.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,0,b,b))}\nfunction E9d(a){var b,c,d;if(a==null)return null;c=BD(a,15);if(c.dc())return '';d=new Hfb;for(b=c.Kc();b.Ob();){Efb(d,(Q8d(),GD(b.Pb())));d.a+=' '}return lcb(d,d.a.length-1)}\nfunction I9d(a){var b,c,d;if(a==null)return null;c=BD(a,15);if(c.dc())return '';d=new Hfb;for(b=c.Kc();b.Ob();){Efb(d,(Q8d(),GD(b.Pb())));d.a+=' '}return lcb(d,d.a.length-1)}\nfunction qEc(a,b,c){var d,e;d=a.c[b.c.p][b.p];e=a.c[c.c.p][c.p];if(d.a!=null&&e.a!=null){return Ddb(d.a,e.a)}else if(d.a!=null){return -1}else if(e.a!=null){return 1}return 0}\nfunction zqd(a,b){var c,d,e,f,g,h;if(b){f=b.a.length;c=new Yge(f);for(h=(c.b-c.a)*c.c<0?(Xge(),Wge):new she(c);h.Ob();){g=BD(h.Pb(),19);e=Zpd(b,g.a);d=new Crd(a);Aqd(d.a,e)}}}\nfunction Qqd(a,b){var c,d,e,f,g,h;if(b){f=b.a.length;c=new Yge(f);for(h=(c.b-c.a)*c.c<0?(Xge(),Wge):new she(c);h.Ob();){g=BD(h.Pb(),19);e=Zpd(b,g.a);d=new lrd(a);nqd(d.a,e)}}}\nfunction eFd(b){var c;if(b!=null&&b.length>0&&bfb(b,b.length-1)==33){try{c=PEd(qfb(b,0,b.length-1));return c.e==null}catch(a){a=ubb(a);if(!JD(a,32))throw vbb(a)}}return false}\nfunction h3d(a,b,c){var d,e,f;d=b.ak();f=b.dd();e=d.$j()?H2d(a,3,d,null,f,M2d(a,d,f,JD(d,99)&&(BD(d,18).Bb&Tje)!=0),true):H2d(a,1,d,d.zj(),f,-1,true);c?c.Ei(e):(c=e);return c}\nfunction Vee(){var a,b,c;b=0;for(a=0;a<'X'.length;a++){c=Uee((BCb(a,'X'.length),'X'.charCodeAt(a)));if(c==0)throw vbb(new mde('Unknown Option: '+'X'.substr(a)));b|=c}return b}\nfunction mZb(a,b,c){var d,e,f;d=Q_b(b);e=a_b(d);f=new H0b;F0b(f,b);switch(c.g){case 1:G0b(f,Wcd(Zcd(e)));break;case 2:G0b(f,Zcd(e));}yNb(f,(Nyc(),Uxc),ED(vNb(a,Uxc)));return f}\nfunction U9b(a){var b,c;b=BD(Rr(new Sr(ur(R_b(a.a).a.Kc(),new Sq))),17);c=BD(Rr(new Sr(ur(U_b(a.a).a.Kc(),new Sq))),17);return Ccb(DD(vNb(b,(wtc(),ltc))))||Ccb(DD(vNb(c,ltc)))}\nfunction Xjc(){Xjc=ccb;Tjc=new Yjc('ONE_SIDE',0);Vjc=new Yjc('TWO_SIDES_CORNER',1);Wjc=new Yjc('TWO_SIDES_OPPOSING',2);Ujc=new Yjc('THREE_SIDES',3);Sjc=new Yjc('FOUR_SIDES',4)}\nfunction jkc(a,b,c,d,e){var f,g;f=BD(GAb(JAb(b.Oc(),new _kc),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Dyb)]))),15);g=BD(Si(a.b,c,d),15);e==0?g.Wc(0,f):g.Gc(f)}\nfunction KDc(a,b){var c,d,e,f,g;for(f=new olb(b.a);f.a0&&ric(this,this.c-1,(Ucd(),zcd));this.c0&&a[0].length>0&&(this.c=Ccb(DD(vNb(Q_b(a[0][0]),(wtc(),Rsc)))));this.a=KC(CX,nie,2018,a.length,0,2);this.b=KC(FX,nie,2019,a.length,0,2);this.d=new ss}\nfunction tKc(a){if(a.c.length==0){return false}if((tCb(0,a.c.length),BD(a.c[0],17)).c.i.k==(j0b(),g0b)){return true}return FAb(NAb(new YAb(null,new Kub(a,16)),new wKc),new yKc)}\nfunction rRc(a,b,c){Odd(c,'Tree layout',1);H2c(a.b);K2c(a.b,(yRc(),uRc),uRc);K2c(a.b,vRc,vRc);K2c(a.b,wRc,wRc);K2c(a.b,xRc,xRc);a.a=F2c(a.b,b);sRc(a,b,Udd(c,1));Qdd(c);return b}\nfunction HXc(a,b){var c,d,e,f,g,h,i;h=gVc(b);f=b.f;i=b.g;g=$wnd.Math.sqrt(f*f+i*i);e=0;for(d=new olb(h);d.a=0){c=Abb(a,Jje);d=Hbb(a,Jje)}else{b=Pbb(a,1);c=Abb(b,500000000);d=Hbb(b,500000000);d=wbb(Nbb(d,1),xbb(a,1))}return Mbb(Nbb(d,32),xbb(c,Yje))}\nfunction oQb(a,b,c){var d,e;d=(sCb(b.b!=0),BD(Nsb(b,b.a.a),8));switch(c.g){case 0:d.b=0;break;case 2:d.b=a.f;break;case 3:d.a=0;break;default:d.a=a.g;}e=Jsb(b,0);Vsb(e,d);return b}\nfunction pmc(a,b,c,d){var e,f,g,h,i;i=a.b;f=b.d;g=f.j;h=umc(g,i.d[g.g],c);e=P6c(R6c(f.n),f.a);switch(f.j.g){case 1:case 3:h.a+=e.a;break;case 2:case 4:h.b+=e.b;}Gsb(d,h,d.c.b,d.c)}\nfunction yJc(a,b,c){var d,e,f,g;g=Jkb(a.e,b,0);f=new zJc;f.b=c;d=new Bib(a.e,g);while(d.b1;b>>=1){(b&1)!=0&&(d=Ogb(d,c));c.d==1?(c=Ogb(c,c)):(c=new Xgb(Lhb(c.a,c.d,KC(WD,oje,25,c.d<<1,15,1))))}d=Ogb(d,c);return d}\nfunction zub(){zub=ccb;var a,b,c,d;wub=KC(UD,Vje,25,25,15,1);xub=KC(UD,Vje,25,33,15,1);d=1.52587890625E-5;for(b=32;b>=0;b--){xub[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){wub[a]=c;c*=0.5}}\nfunction S1b(a){var b,c;if(Ccb(DD(hkd(a,(Nyc(),fxc))))){for(c=new Sr(ur(_sd(a).a.Kc(),new Sq));Qr(c);){b=BD(Rr(c),79);if(Qld(b)){if(Ccb(DD(hkd(b,gxc)))){return true}}}}return false}\nfunction kjc(a,b){var c,d,e;if(Qqb(a.f,b)){b.b=a;d=b.c;Jkb(a.j,d,0)!=-1||Ekb(a.j,d);e=b.d;Jkb(a.j,e,0)!=-1||Ekb(a.j,e);c=b.a.b;if(c.c.length!=0){!a.i&&(a.i=new vjc(a));qjc(a.i,c)}}}\nfunction rmc(a){var b,c,d,e,f;c=a.c.d;d=c.j;e=a.d.d;f=e.j;if(d==f){return c.p=0&&dfb(a.substr(b,'GMT'.length),'GMT')){c[0]=b+3;return tA(a,c,d)}if(b>=0&&dfb(a.substr(b,'UTC'.length),'UTC')){c[0]=b+3;return tA(a,c,d)}return tA(a,c,d)}\nfunction tjc(a,b){var c,d,e,f,g;f=a.g.a;g=a.g.b;for(d=new olb(a.d);d.ac;f--){a[f]|=b[f-c-1]>>>g;a[f-1]=b[f-c-1]<=a.f){break}f.c[f.c.length]=c}return f}\nfunction sfd(a){var b,c,d,e;b=null;for(e=new olb(a.wf());e.a0&&$fb(a.g,b,a.g,b+d,h);g=c.Kc();a.i+=d;for(e=0;ef&&nfb(j,sfb(c[h],ltb))){e=h;f=i}}e>=0&&(d[0]=b+f);return e}\nfunction MIb(a,b){var c;c=NIb(a.b.Hf(),b.b.Hf());if(c!=0){return c}switch(a.b.Hf().g){case 1:case 2:return beb(a.b.sf(),b.b.sf());case 3:case 4:return beb(b.b.sf(),a.b.sf());}return 0}\nfunction iRb(a){var b,c,d;d=a.e.c.length;a.a=IC(WD,[nie,oje],[48,25],15,[d,d],2);for(c=new olb(a.c);c.a>4&15;f=a[d]&15;g[e++]=Qmd[c];g[e++]=Qmd[f]}return zfb(g,0,g.length)}}\nfunction j3d(a,b,c){var d,e,f;d=b.ak();f=b.dd();e=d.$j()?H2d(a,4,d,f,null,M2d(a,d,f,JD(d,99)&&(BD(d,18).Bb&Tje)!=0),true):H2d(a,d.Kj()?2:1,d,f,d.zj(),-1,true);c?c.Ei(e):(c=e);return c}\nfunction wfb(a){var b,c;if(a>=Tje){b=Uje+(a-Tje>>10&1023)&aje;c=56320+(a-Tje&1023)&aje;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&aje)}}\nfunction bKb(a,b){$Jb();var c,d,e,f;e=BD(BD(Qc(a.r,b),21),84);if(e.gc()>=2){d=BD(e.Kc().Pb(),111);c=a.u.Hc((rcd(),mcd));f=a.u.Hc(qcd);return !d.a&&!c&&(e.gc()==2||f)}else{return false}}\nfunction IVc(a,b,c,d,e){var f,g,h;f=JVc(a,b,c,d,e);h=false;while(!f){AVc(a,e,true);h=true;f=JVc(a,b,c,d,e)}h&&AVc(a,e,false);g=dVc(e);if(g.c.length!=0){!!a.d&&a.d.lg(g);IVc(a,e,c,d,g)}}\nfunction Mad(){Mad=ccb;Kad=new Nad(ane,0);Iad=new Nad('DIRECTED',1);Lad=new Nad('UNDIRECTED',2);Gad=new Nad('ASSOCIATION',3);Jad=new Nad('GENERALIZATION',4);Had=new Nad('DEPENDENCY',5)}\nfunction kfd(a,b){var c;if(!mpd(a)){throw vbb(new Zdb(Sse))}c=mpd(a);switch(b.g){case 1:return -(a.j+a.f);case 2:return a.i-c.g;case 3:return a.j-c.f;case 4:return -(a.i+a.g);}return 0}\nfunction cub(a,b){var c,d;uCb(b);d=a.b.c.length;Ekb(a.b,b);while(d>0){c=d;d=(d-1)/2|0;if(a.a.ue(Ikb(a.b,d),b)<=0){Nkb(a.b,c,b);return true}Nkb(a.b,c,Ikb(a.b,d))}Nkb(a.b,d,b);return true}\nfunction BHb(a,b,c,d){var e,f;e=0;if(!c){for(f=0;f=h}\nfunction Tpd(a,b,c,d){var e;e=false;if(ND(d)){e=true;Upd(b,c,GD(d))}if(!e){if(KD(d)){e=true;Tpd(a,b,c,d)}}if(!e){if(JD(d,236)){e=true;Spd(b,c,BD(d,236))}}if(!e){throw vbb(new vcb(Ute))}}\nfunction W0d(a,b){var c,d,e;c=b.Hh(a.a);if(c){e=AAd((!c.b&&(c.b=new sId((jGd(),fGd),x6,c)),c.b),Sve);if(e!=null){for(d=1;d<(O6d(),K6d).length;++d){if(dfb(K6d[d],e)){return d}}}}return 0}\nfunction X0d(a,b){var c,d,e;c=b.Hh(a.a);if(c){e=AAd((!c.b&&(c.b=new sId((jGd(),fGd),x6,c)),c.b),Sve);if(e!=null){for(d=1;d<(O6d(),L6d).length;++d){if(dfb(L6d[d],e)){return d}}}}return 0}\nfunction Ve(a,b){var c,d,e,f;uCb(b);f=a.a.gc();if(f0?1:0;while(f.a[e]!=c){f=f.a[e];e=a.a.ue(c.d,f.d)>0?1:0}f.a[e]=d;d.b=c.b;d.a[0]=c.a[0];d.a[1]=c.a[1];c.a[0]=null;c.a[1]=null}\nfunction ucd(a){rcd();var b,c;b=qqb(ncd,OC(GC(E1,1),Kie,273,0,[pcd]));if(Ox(Cx(b,a))>1){return false}c=qqb(mcd,OC(GC(E1,1),Kie,273,0,[lcd,qcd]));if(Ox(Cx(c,a))>1){return false}return true}\nfunction fod(a,b){var c;c=Phb((yFd(),xFd),a);JD(c,498)?Shb(xFd,a,new bUd(this,b)):Shb(xFd,a,this);bod(this,b);if(b==(LFd(),KFd)){this.wb=BD(this,1939);BD(b,1941)}else{this.wb=(NFd(),MFd)}}\nfunction lZd(b){var c,d,e;if(b==null){return null}c=null;for(d=0;d=_ie?'error':d>=900?'warn':d>=800?'info':'log');gCb(c,a.a);!!a.b&&hCb(b,c,a.b,'Exception: ',true)}\nfunction vNb(a,b){var c,d;d=(!a.q&&(a.q=new Lqb),Ohb(a.q,b));if(d!=null){return d}c=b.wg();JD(c,4)&&(c==null?(!a.q&&(a.q=new Lqb),Thb(a.q,b)):(!a.q&&(a.q=new Lqb),Rhb(a.q,b,c)),a);return c}\nfunction qUb(){qUb=ccb;lUb=new rUb('P1_CYCLE_BREAKING',0);mUb=new rUb('P2_LAYERING',1);nUb=new rUb('P3_NODE_ORDERING',2);oUb=new rUb('P4_NODE_PLACEMENT',3);pUb=new rUb('P5_EDGE_ROUTING',4)}\nfunction SUb(a,b){var c,d,e,f,g;e=b==1?KUb:JUb;for(d=e.a.ec().Kc();d.Ob();){c=BD(d.Pb(),103);for(g=BD(Qc(a.f.c,c),21).Kc();g.Ob();){f=BD(g.Pb(),46);Lkb(a.b.b,f.b);Lkb(a.b.a,BD(f.b,81).d)}}}\nfunction IWb(a,b){AWb();var c;if(a.c==b.c){if(a.b==b.b||pWb(a.b,b.b)){c=mWb(a.b)?1:-1;if(a.a&&!b.a){return c}else if(!a.a&&b.a){return -c}}return beb(a.b.g,b.b.g)}else{return Kdb(a.c,b.c)}}\nfunction y6b(a,b){var c;Odd(b,'Hierarchical port position processing',1);c=a.b;c.c.length>0&&x6b((tCb(0,c.c.length),BD(c.c[0],29)),a);c.c.length>1&&x6b(BD(Ikb(c,c.c.length-1),29),a);Qdd(b)}\nfunction RVc(a,b){var c,d,e;if(CVc(a,b)){return true}for(d=new olb(b);d.a=e||b<0)throw vbb(new qcb(lue+b+mue+e));if(c>=e||c<0)throw vbb(new qcb(nue+c+mue+e));b!=c?(d=(f=a.Ti(c),a.Hi(b,f),f)):(d=a.Oi(c));return d}\nfunction m6d(a){var b,c,d;d=a;if(a){b=0;for(c=a.Ug();c;c=c.Ug()){if(++b>Wje){return m6d(c)}d=c;if(c==a){throw vbb(new Zdb('There is a cycle in the containment hierarchy of '+a))}}}return d}\nfunction Fe(a){var b,c,d;d=new xwb(She,'[',']');for(c=a.Kc();c.Ob();){b=c.Pb();uwb(d,PD(b)===PD(a)?'(this Collection)':b==null?Xhe:fcb(b))}return !d.a?d.c:d.e.length==0?d.a.a:d.a.a+(''+d.e)}\nfunction CVc(a,b){var c,d;d=false;if(b.gc()<2){return false}for(c=0;cd&&(BCb(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b1&&(a.j.b+=a.e)}else{a.j.a+=c.a;a.j.b=$wnd.Math.max(a.j.b,c.b);a.d.c.length>1&&(a.j.a+=a.e)}}\nfunction gkc(){gkc=ccb;dkc=OC(GC(F1,1),bne,61,0,[(Ucd(),Acd),zcd,Rcd]);ckc=OC(GC(F1,1),bne,61,0,[zcd,Rcd,Tcd]);ekc=OC(GC(F1,1),bne,61,0,[Rcd,Tcd,Acd]);fkc=OC(GC(F1,1),bne,61,0,[Tcd,Acd,zcd])}\nfunction omc(a,b,c,d){var e,f,g,h,i,j,k;g=a.c.d;h=a.d.d;if(g.j==h.j){return}k=a.b;e=g.j;i=null;while(e!=h.j){i=b==0?Xcd(e):Vcd(e);f=umc(e,k.d[e.g],c);j=umc(i,k.d[i.g],c);Dsb(d,P6c(f,j));e=i}}\nfunction oFc(a,b,c,d){var e,f,g,h,i;g=JHc(a.a,b,c);h=BD(g.a,19).a;f=BD(g.b,19).a;if(d){i=BD(vNb(b,(wtc(),gtc)),10);e=BD(vNb(c,gtc),10);if(!!i&&!!e){mic(a.b,i,e);h+=a.b.i;f+=a.b.e}}return h>f}\nfunction oHc(a){var b,c,d,e,f,g,h,i,j;this.a=lHc(a);this.b=new Rkb;for(c=a,d=0,e=c.length;dwic(a.d).c){a.i+=a.g.c;yic(a.d)}else if(wic(a.d).c>wic(a.g).c){a.e+=a.d.c;yic(a.g)}else{a.i+=vic(a.g);a.e+=vic(a.d);yic(a.g);yic(a.d)}}}\nfunction XOc(a,b,c){var d,e,f,g;f=b.q;g=b.r;new DOc((HOc(),FOc),b,f,1);new DOc(FOc,f,g,1);for(e=new olb(c);e.ah&&(i=h/d);e>f&&(j=f/e);g=$wnd.Math.min(i,j);a.a+=g*(b.a-a.a);a.b+=g*(b.b-a.b)}\nfunction sZc(a,b,c,d,e){var f,g;g=false;f=BD(Ikb(c.b,0),33);while(yZc(a,b,f,d,e)){g=true;NZc(c,f);if(c.b.c.length==0){break}f=BD(Ikb(c.b,0),33)}c.b.c.length==0&&v$c(c.j,c);g&&a$c(b.q);return g}\nfunction t6c(a,b){i6c();var c,d,e,f;if(b.b<2){return false}f=Jsb(b,0);c=BD(Xsb(f),8);d=c;while(f.b!=f.d.c){e=BD(Xsb(f),8);if(s6c(a,d,e)){return true}d=e}if(s6c(a,d,c)){return true}return false}\nfunction ckd(a,b,c,d){var e,f;if(c==0){return !a.o&&(a.o=new dId((Thd(),Qhd),S2,a,0)),bId(a.o,b,d)}return f=BD(XKd((e=BD(Ajd(a,16),26),!e?a.zh():e),c),66),f.Nj().Rj(a,yjd(a),c-aLd(a.zh()),b,d)}\nfunction bod(a,b){var c;if(b!=a.sb){c=null;!!a.sb&&(c=BD(a.sb,49).ih(a,1,i5,c));!!b&&(c=BD(b,49).gh(a,1,i5,c));c=Jnd(a,b,c);!!c&&c.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,4,b,b))}\nfunction yqd(a,b){var c,d,e,f;if(b){e=Xpd(b,'x');c=new zrd(a);hmd(c.a,(uCb(e),e));f=Xpd(b,'y');d=new Ard(a);imd(d.a,(uCb(f),f))}else{throw vbb(new cqd('All edge sections need an end point.'))}}\nfunction wqd(a,b){var c,d,e,f;if(b){e=Xpd(b,'x');c=new wrd(a);omd(c.a,(uCb(e),e));f=Xpd(b,'y');d=new xrd(a);pmd(d.a,(uCb(f),f))}else{throw vbb(new cqd('All edge sections need a start point.'))}}\nfunction pyb(a,b){var c,d,e,f,g,h,i;for(d=syb(a),f=0,h=d.length;f>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<a){throw vbb(new Wdb('k must be smaller than n'))}else return b==0||b==a?1:a==0?0:q6c(a)/(q6c(b)*q6c(a-b))}\nfunction jfd(a,b){var c,d,e,f;c=new _ud(a);while(c.g==null&&!c.c?Uud(c):c.g==null||c.i!=0&&BD(c.g[c.i-1],47).Ob()){f=BD(Vud(c),56);if(JD(f,160)){d=BD(f,160);for(e=0;e>4];b[c*2+1]=gde[f&15]}return zfb(b,0,b.length)}\nfunction fn(a){Vm();var b,c,d;d=a.c.length;switch(d){case 0:return Um;case 1:b=BD(qr(new olb(a)),42);return ln(b.cd(),b.dd());default:c=BD(Qkb(a,KC(CK,zie,42,a.c.length,0,1)),165);return new wx(c);}}\nfunction ITb(a){var b,c,d,e,f,g;b=new jkb;c=new jkb;Wjb(b,a);Wjb(c,a);while(c.b!=c.c){e=BD(fkb(c),37);for(g=new olb(e.a);g.a0&&WGc(a,c,b);return e}return TGc(a,b,c)}\nfunction MSc(a,b,c){var d,e,f,g;if(b.b!=0){d=new Psb;for(g=Jsb(b,0);g.b!=g.d.c;){f=BD(Xsb(g),86);ye(d,URc(f));e=f.e;e.a=BD(vNb(f,(mTc(),kTc)),19).a;e.b=BD(vNb(f,lTc),19).a}MSc(a,d,Udd(c,d.b/a.a|0))}}\nfunction JZc(a,b){var c,d,e,f,g;if(a.e<=b){return a.g}if(LZc(a,a.g,b)){return a.g}f=a.r;d=a.g;g=a.r;e=(f-d)/2+d;while(d+11&&(a.e.b+=a.a)}else{a.e.a+=c.a;a.e.b=$wnd.Math.max(a.e.b,c.b);a.d.c.length>1&&(a.e.a+=a.a)}}\nfunction cmc(a){var b,c,d,e;e=a.i;b=e.b;d=e.j;c=e.g;switch(e.a.g){case 0:c.a=(a.g.b.o.a-d.a)/2;break;case 1:c.a=b.d.n.a+b.d.a.a;break;case 2:c.a=b.d.n.a+b.d.a.a-d.a;break;case 3:c.b=b.d.n.b+b.d.a.b;}}\nfunction Q6c(a,b,c,d,e){if(dd&&(a.a=d);a.be&&(a.b=e);return a}\nfunction lsd(a){if(JD(a,149)){return esd(BD(a,149))}else if(JD(a,229)){return fsd(BD(a,229))}else if(JD(a,23)){return gsd(BD(a,23))}else{throw vbb(new Wdb(Xte+Fe(new amb(OC(GC(SI,1),Uhe,1,5,[a])))))}}\nfunction mhb(a,b,c,d,e){var f,g,h;f=true;for(g=0;g>>e|c[g+d+1]<>>e;++g}return f}\nfunction zMc(a,b,c,d){var e,f,g;if(b.k==(j0b(),g0b)){for(f=new Sr(ur(R_b(b).a.Kc(),new Sq));Qr(f);){e=BD(Rr(f),17);g=e.c.i.k;if(g==g0b&&a.c.a[e.c.i.c.p]==d&&a.c.a[b.c.p]==c){return true}}}return false}\nfunction mD(a,b){var c,d,e,f;b&=63;c=a.h&Fje;if(b<22){f=c>>>b;e=a.m>>b|c<<22-b;d=a.l>>b|a.m<<22-b}else if(b<44){f=0;e=c>>>b-22;d=a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=c>>>b-44}return TC(d&Eje,e&Eje,f&Fje)}\nfunction Iic(a,b,c,d){var e;this.b=d;this.e=a==(rGc(),pGc);e=b[c];this.d=IC(sbb,[nie,dle],[177,25],16,[e.length,e.length],2);this.a=IC(WD,[nie,oje],[48,25],15,[e.length,e.length],2);this.c=new sic(b,c)}\nfunction ljc(a){var b,c,d;a.k=new Ki((Ucd(),OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd])).length,a.j.c.length);for(d=new olb(a.j);d.a=c){K9b(a,b,d.p);return true}}return false}\nfunction Iod(a){var b;if((a.Db&64)!=0)return fld(a);b=new Wfb(dte);!a.a||Qfb(Qfb((b.a+=' \"',b),a.a),'\"');Qfb(Lfb(Qfb(Lfb(Qfb(Lfb(Qfb(Lfb((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a}\nfunction Z2d(a,b,c){var d,e,f,g,h;h=S6d(a.e.Tg(),b);e=BD(a.g,119);d=0;for(g=0;gc){return Jb(a,c,'start index')}if(b<0||b>c){return Jb(b,c,'end index')}return hc('end index (%s) must not be less than start index (%s)',OC(GC(SI,1),Uhe,1,5,[meb(b),meb(a)]))}\nfunction Pz(b,c){var d,e,f,g;for(e=0,f=b.length;e0&&iCc(a,f,c))}}b.p=0}\nfunction p5c(a){var b;this.c=new Psb;this.f=a.e;this.e=a.d;this.i=a.g;this.d=a.c;this.b=a.b;this.k=a.j;this.a=a.a;!a.i?(this.j=(b=BD(gdb(e1),9),new xqb(b,BD(_Bb(b,b.length),9),0))):(this.j=a.i);this.g=a.f}\nfunction Wb(a){var b,c,d,e;b=Kfb(Qfb(new Wfb('Predicates.'),'and'),40);c=true;for(e=new vib(a);e.b0?h[g-1]:KC(OQ,kne,10,0,0,1);e=h[g];j=g=0?a.Bh(e):vid(a,d)}else{throw vbb(new Wdb(ite+d.ne()+jte))}}else{eid(a,c,d)}}\nfunction aqd(a){var b,c;c=null;b=false;if(JD(a,204)){b=true;c=BD(a,204).a}if(!b){if(JD(a,258)){b=true;c=''+BD(a,258).a}}if(!b){if(JD(a,483)){b=true;c=''+BD(a,483).a}}if(!b){throw vbb(new vcb(Ute))}return c}\nfunction ORd(a,b){var c,d;if(a.f){while(b.Ob()){c=BD(b.Pb(),72);d=c.ak();if(JD(d,99)&&(BD(d,18).Bb&ote)!=0&&(!a.e||d.Gj()!=x2||d.aj()!=0)&&c.dd()!=null){b.Ub();return true}}return false}else{return b.Ob()}}\nfunction QRd(a,b){var c,d;if(a.f){while(b.Sb()){c=BD(b.Ub(),72);d=c.ak();if(JD(d,99)&&(BD(d,18).Bb&ote)!=0&&(!a.e||d.Gj()!=x2||d.aj()!=0)&&c.dd()!=null){b.Pb();return true}}return false}else{return b.Sb()}}\nfunction I2d(a,b,c){var d,e,f,g,h,i;i=S6d(a.e.Tg(),b);d=0;h=a.i;e=BD(a.g,119);for(g=0;g1&&(b.c[b.c.length]=f,true)}}\nfunction TJc(a){var b,c,d,e;c=new Psb;ye(c,a.o);d=new twb;while(c.b!=0){b=BD(c.b==0?null:(sCb(c.b!=0),Nsb(c,c.a.a)),508);e=KJc(a,b,true);e&&Ekb(d.a,b)}while(d.a.c.length!=0){b=BD(rwb(d),508);KJc(a,b,false)}}\nfunction _5c(){_5c=ccb;$5c=new a6c(ole,0);T5c=new a6c('BOOLEAN',1);X5c=new a6c('INT',2);Z5c=new a6c('STRING',3);U5c=new a6c('DOUBLE',4);V5c=new a6c('ENUM',5);W5c=new a6c('ENUMSET',6);Y5c=new a6c('OBJECT',7)}\nfunction H6c(a,b){var c,d,e,f,g;d=$wnd.Math.min(a.c,b.c);f=$wnd.Math.min(a.d,b.d);e=$wnd.Math.max(a.c+a.b,b.c+b.b);g=$wnd.Math.max(a.d+a.a,b.d+b.a);if(e=(e/2|0)){this.e=!d?null:d.c;this.d=e;while(c++0){uu(this)}}this.b=b;this.a=null}\nfunction rEb(a,b){var c,d;b.a?sEb(a,b):(c=BD(Exb(a.b,b.b),57),!!c&&c==a.a[b.b.f]&&!!c.a&&c.a!=b.b.a&&c.c.Fc(b.b),d=BD(Dxb(a.b,b.b),57),!!d&&a.a[d.f]==b.b&&!!d.a&&d.a!=b.b.a&&b.b.c.Fc(d),Fxb(a.b,b.b),undefined)}\nfunction FJb(a,b){var c,d;c=BD(Mpb(a.b,b),124);if(BD(BD(Qc(a.r,b),21),84).dc()){c.n.b=0;c.n.c=0;return}c.n.b=a.C.b;c.n.c=a.C.c;a.A.Hc((tdd(),sdd))&&KJb(a,b);d=JJb(a,b);KIb(a,b)==(Tbd(),Qbd)&&(d+=2*a.w);c.a.a=d}\nfunction OKb(a,b){var c,d;c=BD(Mpb(a.b,b),124);if(BD(BD(Qc(a.r,b),21),84).dc()){c.n.d=0;c.n.a=0;return}c.n.d=a.C.d;c.n.a=a.C.a;a.A.Hc((tdd(),sdd))&&SKb(a,b);d=RKb(a,b);KIb(a,b)==(Tbd(),Qbd)&&(d+=2*a.w);c.a.b=d}\nfunction cOb(a,b){var c,d,e,f;f=new Rkb;for(d=new olb(b);d.ac.a&&(d.Hc((i8c(),c8c))?(e=(b.a-c.a)/2):d.Hc(e8c)&&(e=b.a-c.a));b.b>c.b&&(d.Hc((i8c(),g8c))?(f=(b.b-c.b)/2):d.Hc(f8c)&&(f=b.b-c.b));Efd(a,e,f)}\nfunction aod(a,b,c,d,e,f,g,h,i,j,k,l,m){JD(a.Cb,88)&&XMd($Kd(BD(a.Cb,88)),4);pnd(a,c);a.f=g;dJd(a,h);fJd(a,i);ZId(a,j);eJd(a,k);CId(a,l);aJd(a,m);BId(a,true);AId(a,e);a.ok(f);yId(a,b);d!=null&&(a.i=null,_Id(a,d))}\nfunction PRd(a){var b,c;if(a.f){while(a.n>0){b=BD(a.k.Xb(a.n-1),72);c=b.ak();if(JD(c,99)&&(BD(c,18).Bb&ote)!=0&&(!a.e||c.Gj()!=x2||c.aj()!=0)&&b.dd()!=null){return true}else{--a.n}}return false}else{return a.n>0}}\nfunction Jb(a,b,c){if(a<0){return hc(The,OC(GC(SI,1),Uhe,1,5,[c,meb(a)]))}else if(b<0){throw vbb(new Wdb(Vhe+b))}else{return hc('%s (%s) must not be greater than size (%s)',OC(GC(SI,1),Uhe,1,5,[c,meb(a),meb(b)]))}}\nfunction Llb(a,b,c,d,e,f){var g,h,i,j;g=d-c;if(g<7){Ilb(b,c,d,f);return}i=c+e;h=d+e;j=i+(h-i>>1);Llb(b,a,i,j,-e,f);Llb(b,a,j,h,-e,f);if(f.ue(a[j-1],a[j])<=0){while(c=0?a.sh(f,c):uid(a,e,c)}else{throw vbb(new Wdb(ite+e.ne()+jte))}}else{did(a,d,e,c)}}\nfunction q6d(b){var c,d,e,f;d=BD(b,49).qh();if(d){try{e=null;c=nUd((yFd(),xFd),LEd(MEd(d)));if(c){f=c.rh();!!f&&(e=f.Wk(tfb(d.e)))}if(!!e&&e!=b){return q6d(e)}}catch(a){a=ubb(a);if(!JD(a,60))throw vbb(a)}}return b}\nfunction jrb(a,b,c){var d,e,f,g;g=b==null?0:a.b.se(b);e=(d=a.a.get(g),d==null?new Array:d);if(e.length==0){a.a.set(g,e)}else{f=grb(a,b,e);if(f){return f.ed(c)}}NC(e,e.length,new pjb(b,c));++a.c;zpb(a.b);return null}\nfunction YUc(a,b){var c,d;H2c(a.a);K2c(a.a,(PUc(),NUc),NUc);K2c(a.a,OUc,OUc);d=new j3c;e3c(d,OUc,(tVc(),sVc));PD(hkd(b,(ZWc(),LWc)))!==PD((pWc(),mWc))&&e3c(d,OUc,qVc);e3c(d,OUc,rVc);E2c(a.a,d);c=F2c(a.a,b);return c}\nfunction uC(a){if(!a){return OB(),NB}var b=a.valueOf?a.valueOf():a;if(b!==a){var c=qC[typeof b];return c?c(b):xC(typeof b)}else if(a instanceof Array||a instanceof $wnd.Array){return new xB(a)}else{return new fC(a)}}\nfunction RJb(a,b,c){var d,e,f;f=a.o;d=BD(Mpb(a.p,c),244);e=d.i;e.b=gIb(d);e.a=fIb(d);e.b=$wnd.Math.max(e.b,f.a);e.b>f.a&&!b&&(e.b=f.a);e.c=-(e.b-f.a)/2;switch(c.g){case 1:e.d=-e.a;break;case 3:e.d=f.b;}hIb(d);iIb(d)}\nfunction SJb(a,b,c){var d,e,f;f=a.o;d=BD(Mpb(a.p,c),244);e=d.i;e.b=gIb(d);e.a=fIb(d);e.a=$wnd.Math.max(e.a,f.b);e.a>f.b&&!b&&(e.a=f.b);e.d=-(e.a-f.b)/2;switch(c.g){case 4:e.c=-e.b;break;case 2:e.c=f.a;}hIb(d);iIb(d)}\nfunction Jgc(a,b){var c,d,e,f,g;if(b.dc()){return}e=BD(b.Xb(0),128);if(b.gc()==1){Igc(a,e,e,1,0,b);return}c=1;while(c0){try{f=Icb(c,Rie,Ohe)}catch(a){a=ubb(a);if(JD(a,127)){e=a;throw vbb(new rFd(e))}else throw vbb(a)}}d=(!b.a&&(b.a=new z0d(b)),b.a);return f=0?BD(qud(d,f),56):null}\nfunction Ib(a,b){if(a<0){return hc(The,OC(GC(SI,1),Uhe,1,5,['index',meb(a)]))}else if(b<0){throw vbb(new Wdb(Vhe+b))}else{return hc('%s (%s) must be less than size (%s)',OC(GC(SI,1),Uhe,1,5,['index',meb(a),meb(b)]))}}\nfunction Slb(a){var b,c,d,e,f;if(a==null){return Xhe}f=new xwb(She,'[',']');for(c=a,d=0,e=c.length;d0){g=a.c.d;h=a.d.d;e=Y6c(c7c(new f7c(h.a,h.b),g),1/(d+1));f=new f7c(g.a,g.b);for(c=new olb(a.a);c.a=0?a._g(c,true,true):sid(a,e,true),153));BD(d,215).ol(b)}else{throw vbb(new Wdb(ite+b.ne()+jte))}}\nfunction ugb(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=QD($wnd.Math.floor($wnd.Math.log(a)/0.6931471805599453));(!b||a!=$wnd.Math.pow(2,c))&&++c;return c}return vgb(Cbb(a))}\nfunction QOc(a){var b,c,d,e,f,g,h;f=new zsb;for(c=new olb(a);c.a2&&h.e.b+h.j.b<=2){e=h;d=g}f.a.zc(e,f);e.q=d}return f}\nfunction K5b(a,b){var c,d,e;d=new b0b(a);tNb(d,b);yNb(d,(wtc(),Gsc),b);yNb(d,(Nyc(),Vxc),(dcd(),$bd));yNb(d,mwc,(F7c(),B7c));__b(d,(j0b(),e0b));c=new H0b;F0b(c,d);G0b(c,(Ucd(),Tcd));e=new H0b;F0b(e,d);G0b(e,zcd);return d}\nfunction Spc(a){switch(a.g){case 0:return new fGc((rGc(),oGc));case 1:return new CFc;case 2:return new fHc;default:throw vbb(new Wdb('No implementation is available for the crossing minimizer '+(a.f!=null?a.f:''+a.g)));}}\nfunction tDc(a,b){var c,d,e,f,g;a.c[b.p]=true;Ekb(a.a,b);for(g=new olb(b.j);g.a=f){g.$b()}else{e=g.Kc();for(d=0;d0?zh():g<0&&Bw(a,b,-g);return true}else{return false}}\nfunction fIb(a){var b,c,d,e,f,g,h;h=0;if(a.b==0){g=jIb(a,true);b=0;for(d=g,e=0,f=d.length;e0){h+=c;++b}}b>1&&(h+=a.c*(b-1))}else{h=Mtb(Zzb(OAb(JAb(Plb(a.a),new xIb),new zIb)))}return h>0?h+a.n.d+a.n.a:0}\nfunction gIb(a){var b,c,d,e,f,g,h;h=0;if(a.b==0){h=Mtb(Zzb(OAb(JAb(Plb(a.a),new tIb),new vIb)))}else{g=kIb(a,true);b=0;for(d=g,e=0,f=d.length;e0){h+=c;++b}}b>1&&(h+=a.c*(b-1))}return h>0?h+a.n.b+a.n.c:0}\nfunction MJb(a,b){var c,d,e,f;f=BD(Mpb(a.b,b),124);c=f.a;for(e=BD(BD(Qc(a.r,b),21),84).Kc();e.Ob();){d=BD(e.Pb(),111);!!d.c&&(c.a=$wnd.Math.max(c.a,ZHb(d.c)))}if(c.a>0){switch(b.g){case 2:f.n.c=a.s;break;case 4:f.n.b=a.s;}}}\nfunction NQb(a,b){var c,d,e;c=BD(vNb(b,(wSb(),oSb)),19).a-BD(vNb(a,oSb),19).a;if(c==0){d=c7c(R6c(BD(vNb(a,(HSb(),DSb)),8)),BD(vNb(a,ESb),8));e=c7c(R6c(BD(vNb(b,DSb),8)),BD(vNb(b,ESb),8));return Kdb(d.a*d.b,e.a*e.b)}return c}\nfunction iRc(a,b){var c,d,e;c=BD(vNb(b,(JTc(),ETc)),19).a-BD(vNb(a,ETc),19).a;if(c==0){d=c7c(R6c(BD(vNb(a,(mTc(),VSc)),8)),BD(vNb(a,WSc),8));e=c7c(R6c(BD(vNb(b,VSc),8)),BD(vNb(b,WSc),8));return Kdb(d.a*d.b,e.a*e.b)}return c}\nfunction TZb(a){var b,c;c=new Ufb;c.a+='e_';b=KZb(a);b!=null&&(c.a+=''+b,c);if(!!a.c&&!!a.d){Qfb((c.a+=' ',c),C0b(a.c));Qfb(Pfb((c.a+='[',c),a.c.i),']');Qfb((c.a+=gne,c),C0b(a.d));Qfb(Pfb((c.a+='[',c),a.d.i),']')}return c.a}\nfunction zRc(a){switch(a.g){case 0:return new lUc;case 1:return new sUc;case 2:return new CUc;case 3:return new IUc;default:throw vbb(new Wdb('No implementation is available for the layout phase '+(a.f!=null?a.f:''+a.g)));}}\nfunction mfd(a,b,c,d,e){var f;f=0;switch(e.g){case 1:f=$wnd.Math.max(0,b.b+a.b-(c.b+d));break;case 3:f=$wnd.Math.max(0,-a.b-d);break;case 2:f=$wnd.Math.max(0,-a.a-d);break;case 4:f=$wnd.Math.max(0,b.a+a.a-(c.a+d));}return f}\nfunction mqd(a,b,c){var d,e,f,g,h;if(c){e=c.a.length;d=new Yge(e);for(h=(d.b-d.a)*d.c<0?(Xge(),Wge):new she(d);h.Ob();){g=BD(h.Pb(),19);f=Zpd(c,g.a);Lte in f.a||Mte in f.a?$qd(a,f,b):erd(a,f,b);otd(BD(Ohb(a.b,Wpd(f)),79))}}}\nfunction LJd(a){var b,c;switch(a.b){case -1:{return true}case 0:{c=a.t;if(c>1||c==-1){a.b=-1;return true}else{b=wId(a);if(!!b&&(Q6d(),b.Cj()==Bve)){a.b=-1;return true}else{a.b=1;return false}}}default:case 1:{return false}}}\nfunction k1d(a,b){var c,d,e,f,g;d=(!b.s&&(b.s=new cUd(t5,b,21,17)),b.s);f=null;for(e=0,g=d.i;e=0&&f=0?a._g(c,true,true):sid(a,e,true),153));return BD(d,215).ll(b)}else{throw vbb(new Wdb(ite+b.ne()+lte))}}\nfunction BZd(){tZd();var a;if(sZd)return BD(nUd((yFd(),xFd),_ve),1939);rEd(CK,new J_d);CZd();a=BD(JD(Phb((yFd(),xFd),_ve),547)?Phb(xFd,_ve):new AZd,547);sZd=true;yZd(a);zZd(a);Rhb((JFd(),IFd),a,new EZd);Shb(xFd,_ve,a);return a}\nfunction v2d(a,b){var c,d,e,f;a.j=-1;if(oid(a.e)){c=a.i;f=a.i!=0;lud(a,b);d=new pSd(a.e,3,a.c,null,b,c,f);e=b.Qk(a.e,a.c,null);e=h3d(a,b,e);if(!e){Uhd(a.e,d)}else{e.Ei(d);e.Fi()}}else{lud(a,b);e=b.Qk(a.e,a.c,null);!!e&&e.Fi()}}\nfunction rA(a,b){var c,d,e;e=0;d=b[0];if(d>=a.length){return -1}c=(BCb(d,a.length),a.charCodeAt(d));while(c>=48&&c<=57){e=e*10+(c-48);++d;if(d>=a.length){break}c=(BCb(d,a.length),a.charCodeAt(d))}d>b[0]?(b[0]=d):(e=-1);return e}\nfunction vMb(a){var b,c,d,e,f;e=BD(a.a,19).a;f=BD(a.b,19).a;c=e;d=f;b=$wnd.Math.max($wnd.Math.abs(e),$wnd.Math.abs(f));if(e<=0&&e==f){c=0;d=f-1}else{if(e==-b&&f!=b){c=f;d=e;f>=0&&++c}else{c=-f;d=e}}return new vgd(meb(c),meb(d))}\nfunction fNb(a,b,c,d){var e,f,g,h,i,j;for(e=0;e=0&&j>=0&&i=a.i)throw vbb(new qcb(lue+b+mue+a.i));if(c>=a.i)throw vbb(new qcb(nue+c+mue+a.i));d=a.g[c];if(b!=c){b>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-Rje;b=d>>16&4;c+=b;a<<=b;d=a-oie;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}}\nfunction $Pb(a){QPb();var b,c,d,e;PPb=new Rkb;OPb=new Lqb;NPb=new Rkb;b=(!a.a&&(a.a=new cUd(E2,a,10,11)),a.a);SPb(b);for(e=new Fyd(b);e.e!=e.i.gc();){d=BD(Dyd(e),33);if(Jkb(PPb,d,0)==-1){c=new Rkb;Ekb(NPb,c);TPb(d,c)}}return NPb}\nfunction BQb(a,b,c){var d,e,f,g;a.a=c.b.d;if(JD(b,352)){e=itd(BD(b,79),false,false);f=ofd(e);d=new FQb(a);reb(f,d);ifd(f,e);b.We((Y9c(),Q8c))!=null&&reb(BD(b.We(Q8c),74),d)}else{g=BD(b,470);g.Hg(g.Dg()+a.a.a);g.Ig(g.Eg()+a.a.b)}}\nfunction _5b(a,b){var c,d,e,f,g,h,i,j;j=Edb(ED(vNb(b,(Nyc(),zyc))));i=a[0].n.a+a[0].o.a+a[0].d.c+j;for(h=1;h=0){return c}h=U6c(c7c(new f7c(g.c+g.b/2,g.d+g.a/2),new f7c(f.c+f.b/2,f.d+f.a/2)));return -(xOb(f,g)-1)*h}\nfunction ufd(a,b,c){var d;MAb(new YAb(null,(!c.a&&(c.a=new cUd(A2,c,6,6)),new Kub(c.a,16))),new Mfd(a,b));MAb(new YAb(null,(!c.n&&(c.n=new cUd(D2,c,1,7)),new Kub(c.n,16))),new Ofd(a,b));d=BD(hkd(c,(Y9c(),Q8c)),74);!!d&&p7c(d,a,b)}\nfunction sid(a,b,c){var d,e,f;f=e1d((O6d(),M6d),a.Tg(),b);if(f){Q6d();BD(f,66).Oj()||(f=_1d(q1d(M6d,f)));e=(d=a.Yg(f),BD(d>=0?a._g(d,true,true):sid(a,f,true),153));return BD(e,215).hl(b,c)}else{throw vbb(new Wdb(ite+b.ne()+lte))}}\nfunction wAd(a,b,c,d){var e,f,g,h,i;e=a.d[b];if(e){f=e.g;i=e.i;if(d!=null){for(h=0;h=c){d=b;j=(i.c+i.a)/2;g=j-c;if(i.c<=j-c){e=new bPc(i.c,g);Dkb(a,d++,e)}h=j+c;if(h<=i.a){f=new bPc(h,i.a);wCb(d,a.c.length);aCb(a.c,d,f)}}}\nfunction u0d(a){var b;if(!a.c&&a.g==null){a.d=a.si(a.f);wtd(a,a.d);b=a.d}else{if(a.g==null){return true}else if(a.i==0){return false}else{b=BD(a.g[a.i-1],47)}}if(b==a.b&&null.km>=null.jm()){Vud(a);return u0d(a)}else{return b.Ob()}}\nfunction KTb(a,b,c){var d,e,f,g,h;h=c;!h&&(h=Ydd(new Zdd,0));Odd(h,Vme,1);aUb(a.c,b);g=EYb(a.a,b);if(g.gc()==1){MTb(BD(g.Xb(0),37),h)}else{f=1/g.gc();for(e=g.Kc();e.Ob();){d=BD(e.Pb(),37);MTb(d,Udd(h,f))}}CYb(a.a,g,b);NTb(b);Qdd(h)}\nfunction qYb(a){this.a=a;if(a.c.i.k==(j0b(),e0b)){this.c=a.c;this.d=BD(vNb(a.c.i,(wtc(),Hsc)),61)}else if(a.d.i.k==e0b){this.c=a.d;this.d=BD(vNb(a.d.i,(wtc(),Hsc)),61)}else{throw vbb(new Wdb('Edge '+a+' is not an external edge.'))}}\nfunction oQd(a,b){var c,d,e;e=a.b;a.b=b;(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,3,e,a.b));if(!b){pnd(a,null);qQd(a,0);pQd(a,null)}else if(b!=a){pnd(a,b.zb);qQd(a,b.d);c=(d=b.c,d==null?b.zb:d);pQd(a,c==null||dfb(c,b.zb)?null:c)}}\nfunction NRd(a){var b,c;if(a.f){while(a.n=g)throw vbb(new Cyd(b,g));e=c[b];if(g==1){d=null}else{d=KC($3,hve,415,g-1,0,1);$fb(c,0,d,0,b);f=g-b-1;f>0&&$fb(c,b+1,d,b,f)}b0d(a,d);a0d(a,b,e);return e}\nfunction m8d(){m8d=ccb;k8d=BD(qud(ZKd((r8d(),q8d).qb),6),34);h8d=BD(qud(ZKd(q8d.qb),3),34);i8d=BD(qud(ZKd(q8d.qb),4),34);j8d=BD(qud(ZKd(q8d.qb),5),18);XId(k8d);XId(h8d);XId(i8d);XId(j8d);l8d=new amb(OC(GC(t5,1),Mve,170,0,[k8d,h8d]))}\nfunction AJb(a,b){var c;this.d=new H_b;this.b=b;this.e=new g7c(b.qf());c=a.u.Hc((rcd(),ocd));a.u.Hc(ncd)?a.D?(this.a=c&&!b.If()):(this.a=true):a.u.Hc(pcd)?c?(this.a=!(b.zf().Kc().Ob()||b.Bf().Kc().Ob())):(this.a=false):(this.a=false)}\nfunction IKb(a,b){var c,d,e,f;c=a.o.a;for(f=BD(BD(Qc(a.r,b),21),84).Kc();f.Ob();){e=BD(f.Pb(),111);e.e.a=(d=e.b,d.Xe((Y9c(),s9c))?d.Hf()==(Ucd(),Tcd)?-d.rf().a-Edb(ED(d.We(s9c))):c+Edb(ED(d.We(s9c))):d.Hf()==(Ucd(),Tcd)?-d.rf().a:c)}}\nfunction Q1b(a,b){var c,d,e,f;c=BD(vNb(a,(Nyc(),Lwc)),103);f=BD(hkd(b,$xc),61);e=BD(vNb(a,Vxc),98);if(e!=(dcd(),bcd)&&e!=ccd){if(f==(Ucd(),Scd)){f=lfd(b,c);f==Scd&&(f=Zcd(c))}}else{d=M1b(b);d>0?(f=Zcd(c)):(f=Wcd(Zcd(c)))}jkd(b,$xc,f)}\nfunction olc(a,b){var c,d,e,f,g;g=a.j;b.a!=b.b&&Okb(g,new Ulc);e=g.c.length/2|0;for(d=0;d0&&WGc(a,c,b);return f}else if(d.a!=null){WGc(a,b,c);return -1}else if(e.a!=null){WGc(a,c,b);return 1}return 0}\nfunction swd(a,b){var c,d,e,f;if(a.ej()){c=a.Vi();f=a.fj();++a.j;a.Hi(c,a.oi(c,b));d=a.Zi(3,null,b,c,f);if(a.bj()){e=a.cj(b,null);if(!e){a.$i(d)}else{e.Ei(d);e.Fi()}}else{a.$i(d)}}else{Bvd(a,b);if(a.bj()){e=a.cj(b,null);!!e&&e.Fi()}}}\nfunction D2d(a,b){var c,d,e,f,g;g=S6d(a.e.Tg(),b);e=new yud;c=BD(a.g,119);for(f=a.i;--f>=0;){d=c[f];g.rl(d.ak())&&wtd(e,d)}!Yxd(a,e)&&oid(a.e)&&GLd(a,b.$j()?H2d(a,6,b,(mmb(),jmb),null,-1,false):H2d(a,b.Kj()?2:1,b,null,null,-1,false))}\nfunction Dhb(){Dhb=ccb;var a,b;Bhb=KC(cJ,nie,91,32,0,1);Chb=KC(cJ,nie,91,32,0,1);a=1;for(b=0;b<=18;b++){Bhb[b]=ghb(a);Chb[b]=ghb(Nbb(a,b));a=Ibb(a,5)}for(;bg){return false}}if(b.q){d=b.C;g=d.c.c.a-d.o.a/2;e=d.n.a-c;if(e>g){return false}}return true}\nfunction wcc(a,b){var c;Odd(b,'Partition preprocessing',1);c=BD(GAb(JAb(LAb(JAb(new YAb(null,new Kub(a.a,16)),new Acc),new Ccc),new Ecc),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Dyb)]))),15);MAb(c.Oc(),new Gcc);Qdd(b)}\nfunction DMc(a){wMc();var b,c,d,e,f,g,h;c=new $rb;for(e=new olb(a.e.b);e.a1?(a.e*=Edb(a.a)):(a.f/=Edb(a.a));DOb(a);EOb(a);AOb(a);yNb(a.b,(CPb(),uPb),a.g)}\nfunction Y5b(a,b,c){var d,e,f,g,h,i;d=0;i=c;if(!b){d=c*(a.c.length-1);i*=-1}for(f=new olb(a);f.a=0){if(!b){b=new Ifb;d>0&&Efb(b,a.substr(0,d))}b.a+='\\\\';Afb(b,c&aje)}else !!b&&Afb(b,c&aje)}return b?b.a:a}\nfunction l5c(a){var b;if(!a.a){throw vbb(new Zdb('IDataType class expected for layout option '+a.f))}b=gvd(a.a);if(b==null){throw vbb(new Zdb(\"Couldn't create new instance of property '\"+a.f+\"'. \"+ise+(fdb(Y3),Y3.k)+jse))}return BD(b,414)}\nfunction aid(a){var b,c,d,e,f;f=a.eh();if(f){if(f.kh()){e=xid(a,f);if(e!=f){c=a.Vg();d=(b=a.Vg(),b>=0?a.Qg(null):a.eh().ih(a,-1-b,null,null));a.Rg(BD(e,49),c);!!d&&d.Fi();a.Lg()&&a.Mg()&&c>-1&&Uhd(a,new nSd(a,9,c,f,e));return e}}}return f}\nfunction nTb(a){var b,c,d,e,f,g,h,i;g=0;f=a.f.e;for(d=0;d>5;if(e>=a.d){return a.e<0}c=a.a[e];b=1<<(b&31);if(a.e<0){d=Mgb(a);if(e>16)),15).Xc(f);if(h0){!(fad(a.a.c)&&b.n.d)&&!(gad(a.a.c)&&b.n.b)&&(b.g.d+=$wnd.Math.max(0,d/2-0.5));!(fad(a.a.c)&&b.n.a)&&!(gad(a.a.c)&&b.n.c)&&(b.g.a-=d-1)}}}\nfunction N3b(a){var b,c,d,e,f;e=new Rkb;f=O3b(a,e);b=BD(vNb(a,(wtc(),gtc)),10);if(b){for(d=new olb(b.j);d.a>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?Fje:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?Fje:0;f=d?Eje:0;e=c>>b-44}return TC(e&Eje,f&Eje,g&Fje)}\nfunction XOb(a){var b,c,d,e,f,g;this.c=new Rkb;this.d=a;d=Pje;e=Pje;b=Qje;c=Qje;for(g=Jsb(a,0);g.b!=g.d.c;){f=BD(Xsb(g),8);d=$wnd.Math.min(d,f.a);e=$wnd.Math.min(e,f.b);b=$wnd.Math.max(b,f.a);c=$wnd.Math.max(c,f.b)}this.a=new J6c(d,e,b-d,c-e)}\nfunction Dac(a,b){var c,d,e,f,g,h;for(f=new olb(a.b);f.a0&&JD(b,42)){a.a.qj();j=BD(b,42);i=j.cd();f=i==null?0:tb(i);g=DAd(a.a,f);c=a.a.d[g];if(c){d=BD(c.g,367);k=c.i;for(h=0;h=2){c=e.Kc();b=ED(c.Pb());while(c.Ob()){f=b;b=ED(c.Pb());d=$wnd.Math.min(d,(uCb(b),b)-(uCb(f),f))}}return d}\nfunction gUc(a,b){var c,d,e,f,g;d=new Psb;Gsb(d,b,d.c.b,d.c);do{c=(sCb(d.b!=0),BD(Nsb(d,d.a.a),86));a.b[c.g]=1;for(f=Jsb(c.d,0);f.b!=f.d.c;){e=BD(Xsb(f),188);g=e.c;a.b[g.g]==1?Dsb(a.a,e):a.b[g.g]==2?(a.b[g.g]=1):Gsb(d,g,d.c.b,d.c)}}while(d.b!=0)}\nfunction Ju(a,b){var c,d,e;if(PD(b)===PD(Qb(a))){return true}if(!JD(b,15)){return false}d=BD(b,15);e=a.gc();if(e!=d.gc()){return false}if(JD(d,54)){for(c=0;c0&&(e=c);for(g=new olb(a.f.e);g.a0){b-=1;c-=1}else{if(d>=0&&e<0){b+=1;c+=1}else{if(d>0&&e>=0){b-=1;c+=1}else{b+=1;c-=1}}}}}return new vgd(meb(b),meb(c))}\nfunction PIc(a,b){if(a.cb.c){return 1}else if(a.bb.b){return 1}else if(a.a!=b.a){return tb(a.a)-tb(b.a)}else if(a.d==(UIc(),TIc)&&b.d==SIc){return -1}else if(a.d==SIc&&b.d==TIc){return 1}return 0}\nfunction aNc(a,b){var c,d,e,f,g;f=b.a;f.c.i==b.b?(g=f.d):(g=f.c);f.c.i==b.b?(d=f.c):(d=f.d);e=NLc(a.a,g,d);if(e>0&&e0}else if(e<0&&-e0}return false}\nfunction RZc(a,b,c,d){var e,f,g,h,i,j,k,l;e=(b-a.d)/a.c.c.length;f=0;a.a+=c;a.d=b;for(l=new olb(a.c);l.a>24}return g}\nfunction vdb(a){if(a.pe()){var b=a.c;b.qe()?(a.o='['+b.n):!b.pe()?(a.o='[L'+b.ne()+';'):(a.o='['+b.ne());a.b=b.me()+'[]';a.k=b.oe()+'[]';return}var c=a.j;var d=a.d;d=d.split('/');a.o=ydb('.',[c,ydb('$',d)]);a.b=ydb('.',[c,ydb('.',d)]);a.k=d[d.length-1]}\nfunction qGb(a,b){var c,d,e,f,g;g=null;for(f=new olb(a.e.a);f.a=0;b-=2){for(c=0;c<=b;c+=2){if(a.b[c]>a.b[c+2]||a.b[c]===a.b[c+2]&&a.b[c+1]>a.b[c+3]){d=a.b[c+2];a.b[c+2]=a.b[c];a.b[c]=d;d=a.b[c+3];a.b[c+3]=a.b[c+1];a.b[c+1]=d}}}a.c=true}\nfunction UUb(a,b){var c,d,e,f,g,h,i,j;g=b==1?KUb:JUb;for(f=g.a.ec().Kc();f.Ob();){e=BD(f.Pb(),103);for(i=BD(Qc(a.f.c,e),21).Kc();i.Ob();){h=BD(i.Pb(),46);d=BD(h.b,81);j=BD(h.a,189);c=j.c;switch(e.g){case 2:case 1:d.g.d+=c;break;case 4:case 3:d.g.c+=c;}}}}\nfunction PFc(a,b){var c,d,e,f,g,h,i,j,k;j=-1;k=0;for(g=a,h=0,i=g.length;h0&&++k}}++j}return k}\nfunction Eid(a){var b,c;c=new Wfb(hdb(a.gm));c.a+='@';Qfb(c,(b=tb(a)>>>0,b.toString(16)));if(a.kh()){c.a+=' (eProxyURI: ';Pfb(c,a.qh());if(a.$g()){c.a+=' eClass: ';Pfb(c,a.$g())}c.a+=')'}else if(a.$g()){c.a+=' (eClass: ';Pfb(c,a.$g());c.a+=')'}return c.a}\nfunction TDb(a){var b,c,d,e;if(a.e){throw vbb(new Zdb((fdb(TM),Jke+TM.k+Kke)))}a.d==(ead(),cad)&&SDb(a,aad);for(c=new olb(a.a.a);c.a>24}return c}\nfunction lKb(a,b,c){var d,e,f;e=BD(Mpb(a.i,b),306);if(!e){e=new bIb(a.d,b,c);Npb(a.i,b,e);if(sJb(b)){CHb(a.a,b.c,b.b,e)}else{f=rJb(b);d=BD(Mpb(a.p,f),244);switch(f.g){case 1:case 3:e.j=true;lIb(d,b.b,e);break;case 4:case 2:e.k=true;lIb(d,b.c,e);}}}return e}\nfunction r3d(a,b,c,d){var e,f,g,h,i,j;h=new yud;i=S6d(a.e.Tg(),b);e=BD(a.g,119);Q6d();if(BD(b,66).Oj()){for(g=0;g=0){return e}else{f=1;for(h=new olb(b.j);h.a0&&b.ue((tCb(e-1,a.c.length),BD(a.c[e-1],10)),f)>0){Nkb(a,e,(tCb(e-1,a.c.length),BD(a.c[e-1],10)));--e}tCb(e,a.c.length);a.c[e]=f}c.a=new Lqb;c.b=new Lqb}\nfunction n5c(a,b,c){var d,e,f,g,h,i,j,k;k=(d=BD(b.e&&b.e(),9),new xqb(d,BD(_Bb(d,d.length),9),0));i=mfb(c,'[\\\\[\\\\]\\\\s,]+');for(f=i,g=0,h=f.length;g0){!(fad(a.a.c)&&b.n.d)&&!(gad(a.a.c)&&b.n.b)&&(b.g.d-=$wnd.Math.max(0,d/2-0.5));!(fad(a.a.c)&&b.n.a)&&!(gad(a.a.c)&&b.n.c)&&(b.g.a+=$wnd.Math.max(0,d-1))}}}\nfunction Hac(a,b,c){var d,e;if((a.c-a.b&a.a.length-1)==2){if(b==(Ucd(),Acd)||b==zcd){xac(BD(bkb(a),15),(rbd(),nbd));xac(BD(bkb(a),15),obd)}else{xac(BD(bkb(a),15),(rbd(),obd));xac(BD(bkb(a),15),nbd)}}else{for(e=new xkb(a);e.a!=e.b;){d=BD(vkb(e),15);xac(d,c)}}}\nfunction htd(a,b){var c,d,e,f,g,h,i;e=Nu(new qtd(a));h=new Bib(e,e.c.length);f=Nu(new qtd(b));i=new Bib(f,f.c.length);g=null;while(h.b>0&&i.b>0){c=(sCb(h.b>0),BD(h.a.Xb(h.c=--h.b),33));d=(sCb(i.b>0),BD(i.a.Xb(i.c=--i.b),33));if(c==d){g=c}else{break}}return g}\nfunction Cub(a,b){var c,d,e,f,g,h;f=a.a*kke+a.b*1502;h=a.b*kke+11;c=$wnd.Math.floor(h*lke);f+=c;h-=c*mke;f%=mke;a.a=f;a.b=h;if(b<=24){return $wnd.Math.floor(a.a*wub[b])}else{e=a.a*(1<=2147483648&&(d-=Zje);return d}}\nfunction Zic(a,b,c){var d,e,f,g;if(bjc(a,b)>bjc(a,c)){d=V_b(c,(Ucd(),zcd));a.d=d.dc()?0:B0b(BD(d.Xb(0),11));g=V_b(b,Tcd);a.b=g.dc()?0:B0b(BD(g.Xb(0),11))}else{e=V_b(c,(Ucd(),Tcd));a.d=e.dc()?0:B0b(BD(e.Xb(0),11));f=V_b(b,zcd);a.b=f.dc()?0:B0b(BD(f.Xb(0),11))}}\nfunction l6d(a){var b,c,d,e,f,g,h;if(a){b=a.Hh(_ve);if(b){g=GD(AAd((!b.b&&(b.b=new sId((jGd(),fGd),x6,b)),b.b),'conversionDelegates'));if(g!=null){h=new Rkb;for(d=mfb(g,'\\\\w+'),e=0,f=d.length;ea.c){break}else if(e.a>=a.s){f<0&&(f=g);h=g}}i=(a.s+a.c)/2;if(f>=0){d=NOc(a,b,f,h);i=$Oc((tCb(d,b.c.length),BD(b.c[d],329)));YOc(b,d,c)}return i}\nfunction lZc(){lZc=ccb;RYc=new Osd((Y9c(),r8c),1.3);VYc=I8c;gZc=new q0b(15);fZc=new Osd(f9c,gZc);jZc=new Osd(T9c,15);SYc=w8c;_Yc=Y8c;aZc=_8c;bZc=b9c;$Yc=W8c;cZc=e9c;hZc=x9c;eZc=(OYc(),KYc);ZYc=IYc;dZc=JYc;iZc=MYc;WYc=HYc;XYc=O8c;YYc=P8c;UYc=GYc;TYc=FYc;kZc=NYc}\nfunction Bnd(a,b,c){var d,e,f,g,h,i,j;g=(f=new RHd,f);PHd(g,(uCb(b),b));j=(!g.b&&(g.b=new sId((jGd(),fGd),x6,g)),g.b);for(i=1;i0&&JPb(this,e)}}\nfunction IQb(a,b,c,d,e,f){var g,h,i;if(!e[b.b]){e[b.b]=true;g=d;!g&&(g=new kRb);Ekb(g.e,b);for(i=f[b.b].Kc();i.Ob();){h=BD(i.Pb(),282);if(h.d==c||h.c==c){continue}h.c!=b&&IQb(a,h.c,b,g,e,f);h.d!=b&&IQb(a,h.d,b,g,e,f);Ekb(g.c,h);Gkb(g.d,h.b)}return g}return null}\nfunction e4b(a){var b,c,d,e,f,g,h;b=0;for(e=new olb(a.e);e.a=2}\nfunction gec(a,b){var c,d,e,f;Odd(b,'Self-Loop pre-processing',1);for(d=new olb(a.a);d.a1){return false}b=qqb(zbd,OC(GC(B1,1),Kie,93,0,[ybd,Bbd]));if(Ox(Cx(b,a))>1){return false}d=qqb(Gbd,OC(GC(B1,1),Kie,93,0,[Fbd,Ebd]));if(Ox(Cx(d,a))>1){return false}return true}\nfunction U0d(a,b){var c,d,e;c=b.Hh(a.a);if(c){e=GD(AAd((!c.b&&(c.b=new sId((jGd(),fGd),x6,c)),c.b),'affiliation'));if(e!=null){d=kfb(e,wfb(35));return d==-1?l1d(a,u1d(a,bKd(b.Hj())),e):d==0?l1d(a,null,e.substr(1)):l1d(a,e.substr(0,d),e.substr(d+1))}}return null}\nfunction ic(b){var c,d,e;try{return b==null?Xhe:fcb(b)}catch(a){a=ubb(a);if(JD(a,102)){c=a;e=hdb(rb(b))+'@'+(d=(Zfb(),kCb(b))>>>0,d.toString(16));tyb(xyb(),($xb(),'Exception during lenientFormat for '+e),c);return '<'+e+' threw '+hdb(c.gm)+'>'}else throw vbb(a)}}\nfunction mzc(a){switch(a.g){case 0:return new xDc;case 1:return new ZCc;case 2:return new DCc;case 3:return new QCc;case 4:return new LDc;case 5:return new iDc;default:throw vbb(new Wdb('No implementation is available for the layerer '+(a.f!=null?a.f:''+a.g)));}}\nfunction AQc(a,b,c){var d,e,f;for(f=new olb(a.t);f.a0){d.b.n-=d.c;d.b.n<=0&&d.b.u>0&&Dsb(b,d.b)}}for(e=new olb(a.i);e.a0){d.a.u-=d.c;d.a.u<=0&&d.a.n>0&&Dsb(c,d.a)}}}\nfunction Vud(a){var b,c,d,e,f;if(a.g==null){a.d=a.si(a.f);wtd(a,a.d);if(a.c){f=a.f;return f}}b=BD(a.g[a.i-1],47);e=b.Pb();a.e=b;c=a.si(e);if(c.Ob()){a.d=c;wtd(a,c)}else{a.d=null;while(!b.Ob()){NC(a.g,--a.i,null);if(a.i==0){break}d=BD(a.g[a.i-1],47);b=d}}return e}\nfunction r2d(a,b){var c,d,e,f,g,h;d=b;e=d.ak();if(T6d(a.e,e)){if(e.hi()&&E2d(a,e,d.dd())){return false}}else{h=S6d(a.e.Tg(),e);c=BD(a.g,119);for(f=0;f1||c>1){return 2}}if(b+c==1){return 2}return 0}\nfunction WQb(a,b,c){var d,e,f,g,h;Odd(c,'ELK Force',1);Ccb(DD(hkd(b,(wSb(),jSb))))||$Cb((d=new _Cb((Pgd(),new bhd(b))),d));h=TQb(b);XQb(h);YQb(a,BD(vNb(h,fSb),424));g=LQb(a.a,h);for(f=g.Kc();f.Ob();){e=BD(f.Pb(),231);tRb(a.b,e,Udd(c,1/g.gc()))}h=KQb(g);SQb(h);Qdd(c)}\nfunction yoc(a,b){var c,d,e,f,g;Odd(b,'Breaking Point Processor',1);xoc(a);if(Ccb(DD(vNb(a,(Nyc(),Jyc))))){for(e=new olb(a.b);e.a=0?a._g(d,true,true):sid(a,f,true),153));BD(e,215).ml(b,c)}else{throw vbb(new Wdb(ite+b.ne()+jte))}}\nfunction ROc(a,b){var c,d,e,f,g;c=new Rkb;e=LAb(new YAb(null,new Kub(a,16)),new iPc);f=LAb(new YAb(null,new Kub(a,16)),new kPc);g=aAb(_zb(OAb(ty(OC(GC(xM,1),Uhe,833,0,[e,f])),new mPc)));for(d=1;d=2*b&&Ekb(c,new bPc(g[d-1]+b,g[d]-b))}return c}\nfunction AXc(a,b,c){Odd(c,'Eades radial',1);c.n&&!!b&&Tdd(c,i6d(b),(pgd(),mgd));a.d=BD(hkd(b,(MUc(),LUc)),33);a.c=Edb(ED(hkd(b,(ZWc(),VWc))));a.e=tXc(BD(hkd(b,WWc),293));a.a=gWc(BD(hkd(b,YWc),426));a.b=jXc(BD(hkd(b,RWc),340));BXc(a);c.n&&!!b&&Tdd(c,i6d(b),(pgd(),mgd))}\nfunction Fqd(a,b,c){var d,e,f,g,h,j,k,l;if(c){f=c.a.length;d=new Yge(f);for(h=(d.b-d.a)*d.c<0?(Xge(),Wge):new she(d);h.Ob();){g=BD(h.Pb(),19);e=Zpd(c,g.a);!!e&&(i=null,j=Uqd(a,(k=(Fhd(),l=new ppd,l),!!b&&npd(k,b),k),e),Lkd(j,_pd(e,Vte)),grd(e,j),hrd(e,j),crd(a,e,j))}}}\nfunction UKd(a){var b,c,d,e,f,g;if(!a.j){g=new HPd;b=KKd;f=b.a.zc(a,b);if(f==null){for(d=new Fyd(_Kd(a));d.e!=d.i.gc();){c=BD(Dyd(d),26);e=UKd(c);ytd(g,e);wtd(g,c)}b.a.Bc(a)!=null}vud(g);a.j=new nNd((BD(qud(ZKd((NFd(),MFd).o),11),18),g.i),g.g);$Kd(a).b&=-33}return a.j}\nfunction O9d(a){var b,c,d,e;if(a==null){return null}else{d=Qge(a,true);e=Nwe.length;if(dfb(d.substr(d.length-e,e),Nwe)){c=d.length;if(c==4){b=(BCb(0,d.length),d.charCodeAt(0));if(b==43){return z9d}else if(b==45){return y9d}}else if(c==3){return z9d}}return new Odb(d)}}\nfunction _C(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return ieb(c)}if(b==0&&d!=0&&c==0){return ieb(d)+22}if(b!=0&&d==0&&c==0){return ieb(b)+44}return -1}\nfunction qbc(a,b){var c,d,e,f,g;Odd(b,'Edge joining',1);c=Ccb(DD(vNb(a,(Nyc(),Byc))));for(e=new olb(a.b);e.a1){for(e=new olb(a.a);e.a0);f.a.Xb(f.c=--f.b);Aib(f,e);sCb(f.b3&&EA(a,0,b-3)}}\nfunction cUb(a){var b,c,d,e;if(PD(vNb(a,(Nyc(),axc)))===PD((hbd(),ebd))){return !a.e&&PD(vNb(a,Cwc))!==PD((Xrc(),Urc))}d=BD(vNb(a,Dwc),292);e=Ccb(DD(vNb(a,Hwc)))||PD(vNb(a,Iwc))===PD((Rpc(),Opc));b=BD(vNb(a,Bwc),19).a;c=a.a.c.length;return !e&&d!=(Xrc(),Urc)&&(b==0||b>c)}\nfunction lkc(a){var b,c;c=0;for(;c0){break}}if(c>0&&c0){break}}if(b>0&&c>16!=6&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+qmd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?cmd(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=kid(b,a,6,d));d=bmd(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,6,b,b))}\nfunction npd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=9&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+opd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?lpd(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=kid(b,a,9,d));d=kpd(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,9,b,b))}\nfunction Rld(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+Sld(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?Lld(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=kid(b,a,12,d));d=Kld(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,3,b,b))}\nfunction VId(b){var c,d,e,f,g;e=wId(b);g=b.j;if(g==null&&!!e){return b.$j()?null:e.zj()}else if(JD(e,148)){d=e.Aj();if(d){f=d.Nh();if(f!=b.i){c=BD(e,148);if(c.Ej()){try{b.g=f.Kh(c,g)}catch(a){a=ubb(a);if(JD(a,78)){b.g=null}else throw vbb(a)}}b.i=f}}return b.g}return null}\nfunction wOb(a){var b;b=new Rkb;Ekb(b,new aDb(new f7c(a.c,a.d),new f7c(a.c+a.b,a.d)));Ekb(b,new aDb(new f7c(a.c,a.d),new f7c(a.c,a.d+a.a)));Ekb(b,new aDb(new f7c(a.c+a.b,a.d+a.a),new f7c(a.c+a.b,a.d)));Ekb(b,new aDb(new f7c(a.c+a.b,a.d+a.a),new f7c(a.c,a.d+a.a)));return b}\nfunction IJc(a,b,c,d){var e,f,g;g=LZb(b,c);d.c[d.c.length]=b;if(a.j[g.p]==-1||a.j[g.p]==2||a.a[b.p]){return d}a.j[g.p]=-1;for(f=new Sr(ur(O_b(g).a.Kc(),new Sq));Qr(f);){e=BD(Rr(f),17);if(!(!OZb(e)&&!(!OZb(e)&&e.c.i.c==e.d.i.c))||e==b){continue}return IJc(a,e,g,d)}return d}\nfunction vQb(a,b,c){var d,e,f;for(f=b.a.ec().Kc();f.Ob();){e=BD(f.Pb(),79);d=BD(Ohb(a.b,e),266);!d&&(Xod(jtd(e))==Xod(ltd(e))?uQb(a,e,c):jtd(e)==Xod(ltd(e))?Ohb(a.c,e)==null&&Ohb(a.b,ltd(e))!=null&&xQb(a,e,c,false):Ohb(a.d,e)==null&&Ohb(a.b,jtd(e))!=null&&xQb(a,e,c,true))}}\nfunction jcc(a,b){var c,d,e,f,g,h,i;for(e=a.Kc();e.Ob();){d=BD(e.Pb(),10);h=new H0b;F0b(h,d);G0b(h,(Ucd(),zcd));yNb(h,(wtc(),ftc),(Bcb(),true));for(g=b.Kc();g.Ob();){f=BD(g.Pb(),10);i=new H0b;F0b(i,f);G0b(i,Tcd);yNb(i,ftc,true);c=new UZb;yNb(c,ftc,true);QZb(c,h);RZb(c,i)}}}\nfunction jnc(a,b,c,d){var e,f,g,h;e=hnc(a,b,c);f=hnc(a,c,b);g=BD(Ohb(a.c,b),112);h=BD(Ohb(a.c,c),112);if(ed.b.g&&(f.c[f.c.length]=d,true)}}return f}\nfunction k$c(){k$c=ccb;g$c=new l$c('CANDIDATE_POSITION_LAST_PLACED_RIGHT',0);f$c=new l$c('CANDIDATE_POSITION_LAST_PLACED_BELOW',1);i$c=new l$c('CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT',2);h$c=new l$c('CANDIDATE_POSITION_WHOLE_DRAWING_BELOW',3);j$c=new l$c('WHOLE_DRAWING',4)}\nfunction Xqd(a,b){if(JD(b,239)){return iqd(a,BD(b,33))}else if(JD(b,186)){return jqd(a,BD(b,118))}else if(JD(b,354)){return hqd(a,BD(b,137))}else if(JD(b,352)){return gqd(a,BD(b,79))}else if(b){return null}else{throw vbb(new Wdb(Xte+Fe(new amb(OC(GC(SI,1),Uhe,1,5,[b])))))}}\nfunction aic(a){var b,c,d,e,f,g,h;f=new Psb;for(e=new olb(a.d.a);e.a1){b=nGb((c=new pGb,++a.b,c),a.d);for(h=Jsb(f,0);h.b!=h.d.c;){g=BD(Xsb(h),121);AFb(DFb(CFb(EFb(BFb(new FFb,1),0),b),g))}}}\nfunction $od(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=11&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+_od(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?Uod(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=kid(b,a,10,d));d=Tod(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,11,b,b))}\nfunction uZb(a){var b,c,d,e;for(d=new nib((new eib(a.b)).a);d.b;){c=lib(d);e=BD(c.cd(),11);b=BD(c.dd(),10);yNb(b,(wtc(),$sc),e);yNb(e,gtc,b);yNb(e,Nsc,(Bcb(),true));G0b(e,BD(vNb(b,Hsc),61));vNb(b,Hsc);yNb(e.i,(Nyc(),Vxc),(dcd(),acd));BD(vNb(Q_b(e.i),Ksc),21).Fc((Orc(),Krc))}}\nfunction G4b(a,b,c){var d,e,f,g,h,i;f=0;g=0;if(a.c){for(i=new olb(a.d.i.j);i.af.a){return -1}else if(e.ai){k=a.d;a.d=KC(y4,jve,63,2*i+4,0,1);for(f=0;f=9223372036854775807){return wD(),sD}e=false;if(a<0){e=true;a=-a}d=0;if(a>=Ije){d=QD(a/Ije);a-=d*Ije}c=0;if(a>=Hje){c=QD(a/Hje);a-=c*Hje}b=QD(a);f=TC(b,c,d);e&&ZC(f);return f}\nfunction rKb(a,b){var c,d,e,f;c=!b||!a.u.Hc((rcd(),ncd));f=0;for(e=new olb(a.e.Cf());e.a=-b&&d==b){return new vgd(meb(c-1),meb(d))}return new vgd(meb(c),meb(d-1))}\nfunction W8b(){S8b();return OC(GC(AS,1),Kie,77,0,[Y7b,V7b,Z7b,n8b,G8b,r8b,M8b,w8b,E8b,i8b,A8b,v8b,F8b,e8b,O8b,P7b,z8b,I8b,o8b,H8b,Q8b,C8b,Q7b,D8b,R8b,K8b,P8b,p8b,b8b,q8b,m8b,N8b,T7b,_7b,t8b,S7b,u8b,k8b,f8b,x8b,h8b,W7b,U7b,l8b,g8b,y8b,L8b,R7b,B8b,j8b,s8b,c8b,a8b,J8b,$7b,d8b,X7b])}\nfunction Yic(a,b,c){a.d=0;a.b=0;b.k==(j0b(),i0b)&&c.k==i0b&&BD(vNb(b,(wtc(),$sc)),10)==BD(vNb(c,$sc),10)&&(ajc(b).j==(Ucd(),Acd)?Zic(a,b,c):Zic(a,c,b));b.k==i0b&&c.k==g0b?ajc(b).j==(Ucd(),Acd)?(a.d=1):(a.b=1):c.k==i0b&&b.k==g0b&&(ajc(c).j==(Ucd(),Acd)?(a.b=1):(a.d=1));cjc(a,b,c)}\nfunction esd(a){var b,c,d,e,f,g,h,i,j,k,l;l=hsd(a);b=a.a;i=b!=null;i&&Upd(l,'category',a.a);e=Fhe(new Pib(a.d));g=!e;if(g){j=new wB;cC(l,'knownOptions',j);c=new msd(j);reb(new Pib(a.d),c)}f=Fhe(a.g);h=!f;if(h){k=new wB;cC(l,'supportedFeatures',k);d=new osd(k);reb(a.g,d)}return l}\nfunction ty(a){var b,c,d,e,f,g,h,i,j;d=false;b=336;c=0;f=new Xp(a.length);for(h=a,i=0,j=h.length;i>16!=7&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+Iod(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?Eod(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=BD(b,49).gh(a,1,C2,d));d=Dod(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,7,b,b))}\nfunction NHd(a,b){var c,d;if(b!=a.Cb||a.Db>>16!=3&&!!b){if(p6d(a,b))throw vbb(new Wdb(ste+QHd(a)));d=null;!!a.Cb&&(d=(c=a.Db>>16,c>=0?KHd(a,d):a.Cb.ih(a,-1-c,null,d)));!!b&&(d=BD(b,49).gh(a,0,k5,d));d=JHd(a,b,d);!!d&&d.Fi()}else (a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,3,b,b))}\nfunction Ehb(a,b){Dhb();var c,d,e,f,g,h,i,j,k;if(b.d>a.d){h=a;a=b;b=h}if(b.d<63){return Ihb(a,b)}g=(a.d&-2)<<4;j=Rgb(a,g);k=Rgb(b,g);d=yhb(a,Qgb(j,g));e=yhb(b,Qgb(k,g));i=Ehb(j,k);c=Ehb(d,e);f=Ehb(yhb(j,d),yhb(e,k));f=thb(thb(f,i),c);f=Qgb(f,g);i=Qgb(i,g<<1);return thb(thb(i,f),c)}\nfunction aGc(a,b,c){var d,e,f,g,h;g=CHc(a,c);h=KC(OQ,kne,10,b.length,0,1);d=0;for(f=g.Kc();f.Ob();){e=BD(f.Pb(),11);Ccb(DD(vNb(e,(wtc(),Nsc))))&&(h[d++]=BD(vNb(e,gtc),10))}if(d=0;f+=c?1:-1){g=g|b.c.Sf(i,f,c,d&&!Ccb(DD(vNb(b.j,(wtc(),Jsc))))&&!Ccb(DD(vNb(b.j,(wtc(),mtc)))));g=g|b.q._f(i,f,c);g=g|cGc(a,i[f],c,d)}Qqb(a.c,b);return g}\nfunction o3b(a,b,c){var d,e,f,g,h,i,j,k,l,m;for(k=m_b(a.j),l=0,m=k.length;l1&&(a.a=true);ZNb(BD(c.b,65),P6c(R6c(BD(b.b,65).c),Y6c(c7c(R6c(BD(c.b,65).a),BD(b.b,65).a),e)));D1c(a,b);F1c(a,c)}}\nfunction rVb(a){var b,c,d,e,f,g,h;for(f=new olb(a.a.a);f.a0&&f>0?(g.p=b++):d>0?(g.p=c++):f>0?(g.p=e++):(g.p=c++);}}mmb();Okb(a.j,new fcc)}\nfunction Vec(a){var b,c;c=null;b=BD(Ikb(a.g,0),17);do{c=b.d.i;if(wNb(c,(wtc(),Wsc))){return BD(vNb(c,Wsc),11).i}if(c.k!=(j0b(),h0b)&&Qr(new Sr(ur(U_b(c).a.Kc(),new Sq)))){b=BD(Rr(new Sr(ur(U_b(c).a.Kc(),new Sq))),17)}else if(c.k!=h0b){return null}}while(!!c&&c.k!=(j0b(),h0b));return c}\nfunction Omc(a,b){var c,d,e,f,g,h,i,j,k;h=b.j;g=b.g;i=BD(Ikb(h,h.c.length-1),113);k=(tCb(0,h.c.length),BD(h.c[0],113));j=Kmc(a,g,i,k);for(f=1;fj){i=c;k=e;j=d}}b.a=k;b.c=i}\nfunction sEb(a,b){var c,d;d=Axb(a.b,b.b);if(!d){throw vbb(new Zdb('Invalid hitboxes for scanline constraint calculation.'))}(mEb(b.b,BD(Cxb(a.b,b.b),57))||mEb(b.b,BD(Bxb(a.b,b.b),57)))&&(Zfb(),b.b+' has overlap.');a.a[b.b.f]=BD(Exb(a.b,b.b),57);c=BD(Dxb(a.b,b.b),57);!!c&&(a.a[c.f]=b.b)}\nfunction AFb(a){if(!a.a.d||!a.a.e){throw vbb(new Zdb((fdb(fN),fN.k+' must have a source and target '+(fdb(jN),jN.k)+' specified.')))}if(a.a.d==a.a.e){throw vbb(new Zdb('Network simplex does not support self-loops: '+a.a+' '+a.a.d+' '+a.a.e))}NFb(a.a.d.g,a.a);NFb(a.a.e.b,a.a);return a.a}\nfunction HHc(a,b,c){var d,e,f,g,h,i,j;j=new Hxb(new tIc(a));for(g=OC(GC(aR,1),lne,11,0,[b,c]),h=0,i=g.length;hi-a.b&&hi-a.a&&h0&&++n}}}++m}return n}\nfunction hUc(a,b){var c,d,e,f,g;g=BD(vNb(b,(JTc(),FTc)),425);for(f=Jsb(b.b,0);f.b!=f.d.c;){e=BD(Xsb(f),86);if(a.b[e.g]==0){switch(g.g){case 0:iUc(a,e);break;case 1:gUc(a,e);}a.b[e.g]=2}}for(d=Jsb(a.a,0);d.b!=d.d.c;){c=BD(Xsb(d),188);ze(c.b.d,c,true);ze(c.c.b,c,true)}yNb(b,(mTc(),gTc),a.a)}\nfunction S6d(a,b){Q6d();var c,d,e,f;if(!b){return P6d}else if(b==(Q8d(),N8d)||(b==v8d||b==t8d||b==u8d)&&a!=s8d){return new Z6d(a,b)}else{d=BD(b,677);c=d.pk();if(!c){a2d(q1d((O6d(),M6d),b));c=d.pk()}f=(!c.i&&(c.i=new Lqb),c.i);e=BD(Wd(irb(f.f,a)),1942);!e&&Rhb(f,a,e=new Z6d(a,b));return e}}\nfunction Tbc(a,b){var c,d,e,f,g,h,i,j,k;i=BD(vNb(a,(wtc(),$sc)),11);j=l7c(OC(GC(m1,1),nie,8,0,[i.i.n,i.n,i.a])).a;k=a.i.n.b;c=k_b(a.e);for(e=c,f=0,g=e.length;f0){if(f.a){h=f.b.rf().a;if(c>h){e=(c-h)/2;f.d.b=e;f.d.c=e}}else{f.d.c=a.s+c}}else if(tcd(a.u)){d=sfd(f.b);d.c<0&&(f.d.b=-d.c);d.c+d.b>f.b.rf().a&&(f.d.c=d.c+d.b-f.b.rf().a)}}}\nfunction Eec(a,b){var c,d,e,f;Odd(b,'Semi-Interactive Crossing Minimization Processor',1);c=false;for(e=new olb(a.b);e.a=0){if(b==c){return new vgd(meb(-b-1),meb(-b-1))}if(b==-c){return new vgd(meb(-b),meb(c+1))}}if($wnd.Math.abs(b)>$wnd.Math.abs(c)){if(b<0){return new vgd(meb(-b),meb(c))}return new vgd(meb(-b),meb(c+1))}return new vgd(meb(b+1),meb(c))}\nfunction q5b(a){var b,c;c=BD(vNb(a,(Nyc(),mxc)),163);b=BD(vNb(a,(wtc(),Osc)),303);if(c==(Ctc(),ytc)){yNb(a,mxc,Btc);yNb(a,Osc,(esc(),dsc))}else if(c==Atc){yNb(a,mxc,Btc);yNb(a,Osc,(esc(),bsc))}else if(b==(esc(),dsc)){yNb(a,mxc,ytc);yNb(a,Osc,csc)}else if(b==bsc){yNb(a,mxc,Atc);yNb(a,Osc,csc)}}\nfunction FNc(){FNc=ccb;DNc=new RNc;zNc=e3c(new j3c,(qUb(),nUb),(S8b(),o8b));CNc=c3c(e3c(new j3c,nUb,C8b),pUb,B8b);ENc=b3c(b3c(g3c(c3c(e3c(new j3c,lUb,M8b),pUb,L8b),oUb),K8b),N8b);ANc=c3c(e3c(e3c(e3c(new j3c,mUb,r8b),oUb,t8b),oUb,u8b),pUb,s8b);BNc=c3c(e3c(e3c(new j3c,oUb,u8b),oUb,_7b),pUb,$7b)}\nfunction hQc(){hQc=ccb;cQc=e3c(c3c(new j3c,(qUb(),pUb),(S8b(),c8b)),nUb,o8b);gQc=b3c(b3c(g3c(c3c(e3c(new j3c,lUb,M8b),pUb,L8b),oUb),K8b),N8b);dQc=c3c(e3c(e3c(e3c(new j3c,mUb,r8b),oUb,t8b),oUb,u8b),pUb,s8b);fQc=e3c(e3c(new j3c,nUb,C8b),pUb,B8b);eQc=c3c(e3c(e3c(new j3c,oUb,u8b),oUb,_7b),pUb,$7b)}\nfunction GNc(a,b,c,d,e){var f,g;if((!OZb(b)&&b.c.i.c==b.d.i.c||!T6c(l7c(OC(GC(m1,1),nie,8,0,[e.i.n,e.n,e.a])),c))&&!OZb(b)){b.c==e?St(b.a,0,new g7c(c)):Dsb(b.a,new g7c(c));if(d&&!Rqb(a.a,c)){g=BD(vNb(b,(Nyc(),jxc)),74);if(!g){g=new s7c;yNb(b,jxc,g)}f=new g7c(c);Gsb(g,f,g.c.b,g.c);Qqb(a.a,f)}}}\nfunction Qac(a){var b,c;for(c=new Sr(ur(R_b(a).a.Kc(),new Sq));Qr(c);){b=BD(Rr(c),17);if(b.c.i.k!=(j0b(),f0b)){throw vbb(new y2c(Fne+P_b(a)+\"' has its layer constraint set to FIRST, but has at least one incoming edge that \"+' does not come from a FIRST_SEPARATE node. That must not happen.'))}}}\nfunction vjd(a,b,c){var d,e,f,g,h,i,j;e=aeb(a.Db&254);if(e==0){a.Eb=c}else{if(e==1){h=KC(SI,Uhe,1,2,5,1);f=zjd(a,b);if(f==0){h[0]=c;h[1]=a.Eb}else{h[0]=a.Eb;h[1]=c}}else{h=KC(SI,Uhe,1,e+1,5,1);g=CD(a.Eb);for(d=2,i=0,j=0;d<=128;d<<=1){d==b?(h[j++]=c):(a.Db&d)!=0&&(h[j++]=g[i++])}}a.Eb=h}a.Db|=b}\nfunction ENb(a,b,c){var d,e,f,g;this.b=new Rkb;e=0;d=0;for(g=new olb(a);g.a0){f=BD(Ikb(this.b,0),167);e+=f.o;d+=f.p}e*=2;d*=2;b>1?(e=QD($wnd.Math.ceil(e*b))):(d=QD($wnd.Math.ceil(d/b)));this.a=new pNb(e,d)}\nfunction Igc(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o,p,q,r;k=d;if(b.j&&b.o){n=BD(Ohb(a.f,b.A),57);p=n.d.c+n.d.b;--k}else{p=b.a.c+b.a.b}l=e;if(c.q&&c.o){n=BD(Ohb(a.f,c.C),57);j=n.d.c;++l}else{j=c.a.c}q=j-p;i=$wnd.Math.max(2,l-k);h=q/i;o=p+h;for(m=k;m=0;g+=e?1:-1){h=b[g];i=d==(Ucd(),zcd)?e?V_b(h,d):Su(V_b(h,d)):e?Su(V_b(h,d)):V_b(h,d);f&&(a.c[h.p]=i.gc());for(l=i.Kc();l.Ob();){k=BD(l.Pb(),11);a.d[k.p]=j++}Gkb(c,i)}}\nfunction aQc(a,b,c){var d,e,f,g,h,i,j,k;f=Edb(ED(a.b.Kc().Pb()));j=Edb(ED(Pq(b.b)));d=Y6c(R6c(a.a),j-c);e=Y6c(R6c(b.a),c-f);k=P6c(d,e);Y6c(k,1/(j-f));this.a=k;this.b=new Rkb;h=true;g=a.b.Kc();g.Pb();while(g.Ob()){i=Edb(ED(g.Pb()));if(h&&i-c>Oqe){this.b.Fc(c);h=false}this.b.Fc(i)}h&&this.b.Fc(c)}\nfunction vGb(a){var b,c,d,e;yGb(a,a.n);if(a.d.c.length>0){Blb(a.c);while(GGb(a,BD(mlb(new olb(a.e.a)),121))>5;b&=31;if(d>=a.d){return a.e<0?(Hgb(),Bgb):(Hgb(),Ggb)}f=a.d-d;e=KC(WD,oje,25,f+1,15,1);mhb(e,f,a.a,d,b);if(a.e<0){for(c=0;c0&&a.a[c]<<32-b!=0){for(c=0;c=0){return false}else{c=e1d((O6d(),M6d),e,b);if(!c){return true}else{d=c.Zj();return (d>1||d==-1)&&$1d(q1d(M6d,c))!=3}}}}else{return false}}\nfunction R1b(a,b,c,d){var e,f,g,h,i;h=atd(BD(qud((!b.b&&(b.b=new y5d(z2,b,4,7)),b.b),0),82));i=atd(BD(qud((!b.c&&(b.c=new y5d(z2,b,5,8)),b.c),0),82));if(Xod(h)==Xod(i)){return null}if(ntd(i,h)){return null}g=Mld(b);if(g==c){return d}else{f=BD(Ohb(a.a,g),10);if(f){e=f.e;if(e){return e}}}return null}\nfunction Cac(a,b){var c;c=BD(vNb(a,(Nyc(),Rwc)),276);Odd(b,'Label side selection ('+c+')',1);switch(c.g){case 0:Dac(a,(rbd(),nbd));break;case 1:Dac(a,(rbd(),obd));break;case 2:Bac(a,(rbd(),nbd));break;case 3:Bac(a,(rbd(),obd));break;case 4:Eac(a,(rbd(),nbd));break;case 5:Eac(a,(rbd(),obd));}Qdd(b)}\nfunction bGc(a,b,c){var d,e,f,g,h,i;d=RFc(c,a.length);g=a[d];if(g[0].k!=(j0b(),e0b)){return}f=SFc(c,g.length);i=b.j;for(e=0;e0){c[0]+=a.d;g-=c[0]}if(c[2]>0){c[2]+=a.d;g-=c[2]}f=$wnd.Math.max(0,g);c[1]=$wnd.Math.max(c[1],g);vHb(a,eHb,e.c+d.b+c[0]-(c[1]-g)/2,c);if(b==eHb){a.c.b=f;a.c.c=e.c+d.b+(f-g)/2}}\nfunction AYb(){this.c=KC(UD,Vje,25,(Ucd(),OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd])).length,15,1);this.b=KC(UD,Vje,25,OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd]).length,15,1);this.a=KC(UD,Vje,25,OC(GC(F1,1),bne,61,0,[Scd,Acd,zcd,Rcd,Tcd]).length,15,1);zlb(this.c,Pje);zlb(this.b,Qje);zlb(this.a,Qje)}\nfunction Ufe(a,b,c){var d,e,f,g;if(b<=c){e=b;f=c}else{e=c;f=b}d=0;if(a.b==null){a.b=KC(WD,oje,25,2,15,1);a.b[0]=e;a.b[1]=f;a.c=true}else{d=a.b.length;if(a.b[d-1]+1==e){a.b[d-1]=f;return}g=KC(WD,oje,25,d+2,15,1);$fb(a.b,0,g,0,d);a.b=g;a.b[d-1]>=e&&(a.c=false,a.a=false);a.b[d++]=e;a.b[d]=f;a.c||Yfe(a)}}\nfunction inc(a,b,c){var d,e,f,g,h,i,j;j=b.d;a.a=new Skb(j.c.length);a.c=new Lqb;for(h=new olb(j);h.a=0?a._g(j,false,true):sid(a,c,false),58));n:for(f=l.Kc();f.Ob();){e=BD(f.Pb(),56);for(k=0;k1){Xxd(e,e.i-1)}}return d}}\nfunction Z2b(a,b){var c,d,e,f,g,h,i;Odd(b,'Comment post-processing',1);for(f=new olb(a.b);f.aa.d[g.p]){c+=zHc(a.b,f);Wjb(a.a,meb(f))}}while(!akb(a.a)){xHc(a.b,BD(fkb(a.a),19).a)}}return c}\nfunction o2c(a,b,c){var d,e,f,g;f=(!b.a&&(b.a=new cUd(E2,b,10,11)),b.a).i;for(e=new Fyd((!b.a&&(b.a=new cUd(E2,b,10,11)),b.a));e.e!=e.i.gc();){d=BD(Dyd(e),33);(!d.a&&(d.a=new cUd(E2,d,10,11)),d.a).i==0||(f+=o2c(a,d,false))}if(c){g=Xod(b);while(g){f+=(!g.a&&(g.a=new cUd(E2,g,10,11)),g.a).i;g=Xod(g)}}return f}\nfunction Xxd(a,b){var c,d,e,f;if(a.ej()){d=null;e=a.fj();a.ij()&&(d=a.kj(a.pi(b),null));c=a.Zi(4,f=tud(a,b),null,b,e);if(a.bj()&&f!=null){d=a.dj(f,d);if(!d){a.$i(c)}else{d.Ei(c);d.Fi()}}else{if(!d){a.$i(c)}else{d.Ei(c);d.Fi()}}return f}else{f=tud(a,b);if(a.bj()&&f!=null){d=a.dj(f,null);!!d&&d.Fi()}return f}}\nfunction UKb(a){var b,c,d,e,f,g,h,i,j,k;j=a.a;b=new Tqb;i=0;for(d=new olb(a.d);d.ah.d&&(k=h.d+h.a+j)}}c.c.d=k;b.a.zc(c,b);i=$wnd.Math.max(i,c.c.d+c.c.a)}return i}\nfunction Orc(){Orc=ccb;Frc=new Prc('COMMENTS',0);Hrc=new Prc('EXTERNAL_PORTS',1);Irc=new Prc('HYPEREDGES',2);Jrc=new Prc('HYPERNODES',3);Krc=new Prc('NON_FREE_PORTS',4);Lrc=new Prc('NORTH_SOUTH_PORTS',5);Nrc=new Prc(Wne,6);Erc=new Prc('CENTER_LABELS',7);Grc=new Prc('END_LABELS',8);Mrc=new Prc('PARTITIONS',9)}\nfunction gVc(a){var b,c,d,e,f;e=new Rkb;b=new Vqb((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));for(d=new Sr(ur(_sd(a).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),79);if(!JD(qud((!c.b&&(c.b=new y5d(z2,c,4,7)),c.b),0),186)){f=atd(BD(qud((!c.c&&(c.c=new y5d(z2,c,5,8)),c.c),0),82));b.a._b(f)||(e.c[e.c.length]=f,true)}}return e}\nfunction fVc(a){var b,c,d,e,f,g;f=new Tqb;b=new Vqb((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));for(e=new Sr(ur(_sd(a).a.Kc(),new Sq));Qr(e);){d=BD(Rr(e),79);if(!JD(qud((!d.b&&(d.b=new y5d(z2,d,4,7)),d.b),0),186)){g=atd(BD(qud((!d.c&&(d.c=new y5d(z2,d,5,8)),d.c),0),82));b.a._b(g)||(c=f.a.zc(g,f),c==null)}}return f}\nfunction zA(a,b,c,d,e){if(d<0){d=oA(a,e,OC(GC(ZI,1),nie,2,6,[bje,cje,dje,eje,fje,gje,hje,ije,jje,kje,lje,mje]),b);d<0&&(d=oA(a,e,OC(GC(ZI,1),nie,2,6,['Jan','Feb','Mar','Apr',fje,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false}\nfunction BA(a,b,c,d,e){if(d<0){d=oA(a,e,OC(GC(ZI,1),nie,2,6,[bje,cje,dje,eje,fje,gje,hje,ije,jje,kje,lje,mje]),b);d<0&&(d=oA(a,e,OC(GC(ZI,1),nie,2,6,['Jan','Feb','Mar','Apr',fje,'Jun','Jul','Aug','Sep','Oct','Nov','Dec']),b));if(d<0){return false}c.k=d;return true}else if(d>0){c.k=d-1;return true}return false}\nfunction DA(a,b,c,d,e,f){var g,h,i,j;h=32;if(d<0){if(b[0]>=a.length){return false}h=bfb(a,b[0]);if(h!=43&&h!=45){return false}++b[0];d=rA(a,b);if(d<0){return false}h==45&&(d=-d)}if(h==32&&b[0]-c==2&&e.b==2){i=new eB;j=i.q.getFullYear()-nje+nje-80;g=j%100;f.a=d==g;d+=(j/100|0)*100+(d=j&&(i=d)}!!i&&(k=$wnd.Math.max(k,i.a.o.a));if(k>m){l=j;m=k}}return l}\nfunction ode(a,b,c){var d,e,f;a.e=c;a.d=0;a.b=0;a.f=1;a.i=b;(a.e&16)==16&&(a.i=Xee(a.i));a.j=a.i.length;nde(a);f=rde(a);if(a.d!=a.j)throw vbb(new mde(tvd((h0d(),sue))));if(a.g){for(d=0;dvre?Okb(i,a.b):d<=vre&&d>wre?Okb(i,a.d):d<=wre&&d>xre?Okb(i,a.c):d<=xre&&Okb(i,a.a);f=ZXc(a,i,f)}return e}\nfunction Hgb(){Hgb=ccb;var a;Cgb=new Ugb(1,1);Egb=new Ugb(1,10);Ggb=new Ugb(0,0);Bgb=new Ugb(-1,1);Dgb=OC(GC(cJ,1),nie,91,0,[Ggb,Cgb,new Ugb(1,2),new Ugb(1,3),new Ugb(1,4),new Ugb(1,5),new Ugb(1,6),new Ugb(1,7),new Ugb(1,8),new Ugb(1,9),Egb]);Fgb=KC(cJ,nie,91,32,0,1);for(a=0;a1;if(h){d=new f7c(e,c.b);Dsb(b.a,d)}n7c(b.a,OC(GC(m1,1),nie,8,0,[m,l]))}\nfunction jdd(a){r4c(a,new E3c(P3c(M3c(O3c(N3c(new R3c,Rse),'ELK Randomizer'),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of \"real\" layout algorithms.'),new mdd)));p4c(a,Rse,ame,fdd);p4c(a,Rse,wme,15);p4c(a,Rse,yme,meb(0));p4c(a,Rse,_le,tme)}\nfunction hde(){hde=ccb;var a,b,c,d,e,f;fde=KC(SD,wte,25,255,15,1);gde=KC(TD,$ie,25,16,15,1);for(b=0;b<255;b++){fde[b]=-1}for(c=57;c>=48;c--){fde[c]=c-48<<24>>24}for(d=70;d>=65;d--){fde[d]=d-65+10<<24>>24}for(e=102;e>=97;e--){fde[e]=e-97+10<<24>>24}for(f=0;f<10;f++)gde[f]=48+f&aje;for(a=10;a<=15;a++)gde[a]=65+a-10&aje}\nfunction BVc(a,b,c){var d,e,f,g,h,i,j,k;h=b.i-a.g/2;i=c.i-a.g/2;j=b.j-a.g/2;k=c.j-a.g/2;f=b.g+a.g/2;g=c.g+a.g/2;d=b.f+a.g/2;e=c.f+a.g/2;if(h>19!=0){return '-'+qD(hD(a))}c=a;d='';while(!(c.l==0&&c.m==0&&c.h==0)){e=RC(Jje);c=UC(c,e,true);b=''+pD(QC);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;f--){b='0'+b}}d=b+d}return d}\nfunction xrb(){if(!Object.create||!Object.getOwnPropertyNames){return false}var a='__proto__';var b=Object.create(null);if(b[a]!==undefined){return false}var c=Object.getOwnPropertyNames(b);if(c.length!=0){return false}b[a]=42;if(b[a]!==42){return false}if(Object.getOwnPropertyNames(b).length==0){return false}return true}\nfunction Pgc(a){var b,c,d,e,f,g,h;b=false;c=0;for(e=new olb(a.d.b);e.a=a.a){return -1}if(!F6b(b,c)){return -1}if(Qq(BD(d.Kb(b),20))){return 1}e=0;for(g=BD(d.Kb(b),20).Kc();g.Ob();){f=BD(g.Pb(),17);i=f.c.i==b?f.d.i:f.c.i;h=G6b(a,i,c,d);if(h==-1){return -1}e=$wnd.Math.max(e,h);if(e>a.c-1){return -1}}return e+1}\nfunction Btd(a,b){var c,d,e,f,g,h;if(PD(b)===PD(a)){return true}if(!JD(b,15)){return false}d=BD(b,15);h=a.gc();if(d.gc()!=h){return false}g=d.Kc();if(a.ni()){for(c=0;c0){a.qj();if(b!=null){for(f=0;f>24}case 97:case 98:case 99:case 100:case 101:case 102:{return a-97+10<<24>>24}case 65:case 66:case 67:case 68:case 69:case 70:{return a-65+10<<24>>24}default:{throw vbb(new Oeb('Invalid hexadecimal'))}}}\nfunction AUc(a,b,c){var d,e,f,g;Odd(c,'Processor order nodes',2);a.a=Edb(ED(vNb(b,(JTc(),HTc))));e=new Psb;for(g=Jsb(b.b,0);g.b!=g.d.c;){f=BD(Xsb(g),86);Ccb(DD(vNb(f,(mTc(),jTc))))&&(Gsb(e,f,e.c.b,e.c),true)}d=(sCb(e.b!=0),BD(e.a.a.c,86));yUc(a,d);!c.b&&Rdd(c,1);BUc(a,d,0-Edb(ED(vNb(d,(mTc(),bTc))))/2,0);!c.b&&Rdd(c,1);Qdd(c)}\nfunction rFb(){rFb=ccb;qFb=new sFb('SPIRAL',0);lFb=new sFb('LINE_BY_LINE',1);mFb=new sFb('MANHATTAN',2);kFb=new sFb('JITTER',3);oFb=new sFb('QUADRANTS_LINE_BY_LINE',4);pFb=new sFb('QUADRANTS_MANHATTAN',5);nFb=new sFb('QUADRANTS_JITTER',6);jFb=new sFb('COMBINE_LINE_BY_LINE_MANHATTAN',7);iFb=new sFb('COMBINE_JITTER_MANHATTAN',8)}\nfunction roc(a,b,c,d){var e,f,g,h,i,j;i=woc(a,c);j=woc(b,c);e=false;while(!!i&&!!j){if(d||uoc(i,j,c)){g=woc(i,c);h=woc(j,c);zoc(b);zoc(a);f=i.c;sbc(i,false);sbc(j,false);if(c){Z_b(b,j.p,f);b.p=j.p;Z_b(a,i.p+1,f);a.p=i.p}else{Z_b(a,i.p,f);a.p=i.p;Z_b(b,j.p+1,f);b.p=j.p}$_b(i,null);$_b(j,null);i=g;j=h;e=true}else{break}}return e}\nfunction VDc(a,b,c,d){var e,f,g,h,i;e=false;f=false;for(h=new olb(d.j);h.a=b.length){throw vbb(new qcb('Greedy SwitchDecider: Free layer not in graph.'))}this.c=b[a];this.e=new dIc(d);THc(this.e,this.c,(Ucd(),Tcd));this.i=new dIc(d);THc(this.i,this.c,zcd);this.f=new ejc(this.c);this.a=!f&&e.i&&!e.s&&this.c[0].k==(j0b(),e0b);this.a&&hjc(this,a,b.length)}\nfunction hKb(a,b){var c,d,e,f,g,h;f=!a.B.Hc((Idd(),zdd));g=a.B.Hc(Cdd);a.a=new FHb(g,f,a.c);!!a.n&&u_b(a.a.n,a.n);lIb(a.g,(gHb(),eHb),a.a);if(!b){d=new mIb(1,f,a.c);d.n.a=a.k;Npb(a.p,(Ucd(),Acd),d);e=new mIb(1,f,a.c);e.n.d=a.k;Npb(a.p,Rcd,e);h=new mIb(0,f,a.c);h.n.c=a.k;Npb(a.p,Tcd,h);c=new mIb(0,f,a.c);c.n.b=a.k;Npb(a.p,zcd,c)}}\nfunction Vgc(a){var b,c,d;b=BD(vNb(a.d,(Nyc(),Swc)),218);switch(b.g){case 2:c=Ngc(a);break;case 3:c=(d=new Rkb,MAb(JAb(NAb(LAb(LAb(new YAb(null,new Kub(a.d.b,16)),new Shc),new Uhc),new Whc),new ehc),new Yhc(d)),d);break;default:throw vbb(new Zdb('Compaction not supported for '+b+' edges.'));}Ugc(a,c);reb(new Pib(a.g),new Ehc(a))}\nfunction a2c(a,b){var c;c=new zNb;!!b&&tNb(c,BD(Ohb(a.a,C2),94));JD(b,470)&&tNb(c,BD(Ohb(a.a,G2),94));if(JD(b,354)){tNb(c,BD(Ohb(a.a,D2),94));return c}JD(b,82)&&tNb(c,BD(Ohb(a.a,z2),94));if(JD(b,239)){tNb(c,BD(Ohb(a.a,E2),94));return c}if(JD(b,186)){tNb(c,BD(Ohb(a.a,F2),94));return c}JD(b,352)&&tNb(c,BD(Ohb(a.a,B2),94));return c}\nfunction wSb(){wSb=ccb;oSb=new Osd((Y9c(),D9c),meb(1));uSb=new Osd(T9c,80);tSb=new Osd(M9c,5);bSb=new Osd(r8c,tme);pSb=new Osd(E9c,meb(1));sSb=new Osd(H9c,(Bcb(),true));lSb=new q0b(50);kSb=new Osd(f9c,lSb);dSb=O8c;mSb=t9c;cSb=new Osd(B8c,false);jSb=e9c;iSb=b9c;hSb=Y8c;gSb=W8c;nSb=x9c;fSb=(SRb(),LRb);vSb=QRb;eSb=KRb;qSb=NRb;rSb=PRb}\nfunction ZXb(a){var b,c,d,e,f,g,h,i;i=new jYb;for(h=new olb(a.a);h.a0&&b=0){return false}else{b.p=c.b;Ekb(c.e,b)}if(e==(j0b(),g0b)||e==i0b){for(g=new olb(b.j);g.a1||g==-1)&&(f|=16);(e.Bb&ote)!=0&&(f|=64)}(c.Bb&Tje)!=0&&(f|=Dve);f|=zte}else{if(JD(b,457)){f|=512}else{d=b.Bj();!!d&&(d.i&1)!=0&&(f|=256)}}(a.Bb&512)!=0&&(f|=128);return f}\nfunction hc(a,b){var c,d,e,f,g;a=a==null?Xhe:(uCb(a),a);for(e=0;ea.d[h.p]){c+=zHc(a.b,f);Wjb(a.a,meb(f))}}else{++g}}c+=a.b.d*g;while(!akb(a.a)){xHc(a.b,BD(fkb(a.a),19).a)}}return c}\nfunction Y6d(a,b){var c;if(a.f==W6d){c=$1d(q1d((O6d(),M6d),b));return a.e?c==4&&b!=(m8d(),k8d)&&b!=(m8d(),h8d)&&b!=(m8d(),i8d)&&b!=(m8d(),j8d):c==2}if(!!a.d&&(a.d.Hc(b)||a.d.Hc(_1d(q1d((O6d(),M6d),b)))||a.d.Hc(e1d((O6d(),M6d),a.b,b)))){return true}if(a.f){if(x1d((O6d(),a.f),b2d(q1d(M6d,b)))){c=$1d(q1d(M6d,b));return a.e?c==4:c==2}}return false}\nfunction iVc(a,b,c,d){var e,f,g,h,i,j,k,l;g=BD(hkd(c,(Y9c(),C9c)),8);i=g.a;k=g.b+a;e=$wnd.Math.atan2(k,i);e<0&&(e+=dre);e+=b;e>dre&&(e-=dre);h=BD(hkd(d,C9c),8);j=h.a;l=h.b+a;f=$wnd.Math.atan2(l,j);f<0&&(f+=dre);f+=b;f>dre&&(f-=dre);return Iy(),My(1.0E-10),$wnd.Math.abs(e-f)<=1.0E-10||e==f||isNaN(e)&&isNaN(f)?0:ef?1:Ny(isNaN(e),isNaN(f))}\nfunction YDb(a){var b,c,d,e,f,g,h;h=new Lqb;for(d=new olb(a.a.b);d.a=b.o){throw vbb(new rcb)}i=c>>5;h=c&31;g=Nbb(1,Tbb(Nbb(h,1)));f?(b.n[d][i]=Mbb(b.n[d][i],g)):(b.n[d][i]=xbb(b.n[d][i],Lbb(g)));g=Nbb(g,1);e?(b.n[d][i]=Mbb(b.n[d][i],g)):(b.n[d][i]=xbb(b.n[d][i],Lbb(g)))}catch(a){a=ubb(a);if(JD(a,320)){throw vbb(new qcb(Dle+b.o+'*'+b.p+Ele+c+She+d+Fle))}else throw vbb(a)}}\nfunction BUc(a,b,c,d){var e,f,g;if(b){f=Edb(ED(vNb(b,(mTc(),fTc))))+d;g=c+Edb(ED(vNb(b,bTc)))/2;yNb(b,kTc,meb(Tbb(Cbb($wnd.Math.round(f)))));yNb(b,lTc,meb(Tbb(Cbb($wnd.Math.round(g)))));b.d.b==0||BUc(a,BD(pr((e=Jsb((new ZRc(b)).a.d,0),new aSc(e))),86),c+Edb(ED(vNb(b,bTc)))+a.a,d+Edb(ED(vNb(b,cTc))));vNb(b,iTc)!=null&&BUc(a,BD(vNb(b,iTc),86),c,d)}}\nfunction N9b(a,b){var c,d,e,f,g,h,i,j,k,l,m;i=Q_b(b.a);e=Edb(ED(vNb(i,(Nyc(),pyc))))*2;k=Edb(ED(vNb(i,wyc)));j=$wnd.Math.max(e,k);f=KC(UD,Vje,25,b.f-b.c+1,15,1);d=-j;c=0;for(h=b.b.Kc();h.Ob();){g=BD(h.Pb(),10);d+=a.a[g.c.p]+j;f[c++]=d}d+=a.a[b.a.c.p]+j;f[c++]=d;for(m=new olb(b.e);m.a0){d=(!a.n&&(a.n=new cUd(D2,a,1,7)),BD(qud(a.n,0),137)).a;!d||Qfb(Qfb((b.a+=' \"',b),d),'\"')}}else{Qfb(Qfb((b.a+=' \"',b),c),'\"')}Qfb(Lfb(Qfb(Lfb(Qfb(Lfb(Qfb(Lfb((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a}\nfunction opd(a){var b,c,d;if((a.Db&64)!=0)return fld(a);b=new Wfb(fte);c=a.k;if(!c){!a.n&&(a.n=new cUd(D2,a,1,7));if(a.n.i>0){d=(!a.n&&(a.n=new cUd(D2,a,1,7)),BD(qud(a.n,0),137)).a;!d||Qfb(Qfb((b.a+=' \"',b),d),'\"')}}else{Qfb(Qfb((b.a+=' \"',b),c),'\"')}Qfb(Lfb(Qfb(Lfb(Qfb(Lfb(Qfb(Lfb((b.a+=' (',b),a.i),','),a.j),' | '),a.g),','),a.f),')');return b.a}\nfunction h4c(a,b){var c,d,e,f,g,h,i;if(b==null||b.length==0){return null}e=BD(Phb(a.a,b),149);if(!e){for(d=(h=(new $ib(a.b)).a.vc().Kc(),new djb(h));d.a.Ob();){c=(f=BD(d.a.Pb(),42),BD(f.dd(),149));g=c.c;i=b.length;if(dfb(g.substr(g.length-i,i),b)&&(b.length==g.length||bfb(g,g.length-b.length-1)==46)){if(e){return null}e=c}}!!e&&Shb(a.a,b,e)}return e}\nfunction QLb(a,b){var c,d,e,f;c=new VLb;d=BD(GAb(NAb(new YAb(null,new Kub(a.f,16)),c),Ayb(new hzb,new jzb,new Gzb,new Izb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Eyb),Dyb]))),21);e=d.gc();d=BD(GAb(NAb(new YAb(null,new Kub(b.f,16)),c),Ayb(new hzb,new jzb,new Gzb,new Izb,OC(GC(xL,1),Kie,132,0,[Eyb,Dyb]))),21);f=d.gc();if(ee.p){G0b(f,Rcd);if(f.d){h=f.o.b;b=f.a.b;f.a.b=h-b}}else if(f.j==Rcd&&e.p>a.p){G0b(f,Acd);if(f.d){h=f.o.b;b=f.a.b;f.a.b=-(h-b)}}break}}return e}\nfunction NOc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;f=c;if(c1;if(h){d=new f7c(e,c.b);Dsb(b.a,d)}n7c(b.a,OC(GC(m1,1),nie,8,0,[m,l]))}\nfunction Nid(a,b,c){var d,e,f,g,h,i;if(!b){return null}else{if(c<=-1){d=XKd(b.Tg(),-1-c);if(JD(d,99)){return BD(d,18)}else{g=BD(b.ah(d),153);for(h=0,i=g.gc();h0){e=i.length;while(e>0&&i[e-1]==''){--e}e=40;g&&FGb(a);wGb(a);vGb(a);c=zGb(a);d=0;while(!!c&&d0&&Dsb(a.f,f)}else{a.c[g]-=j+1;a.c[g]<=0&&a.a[g]>0&&Dsb(a.e,f)}}}}}\nfunction _Kb(a){var b,c,d,e,f,g,h,i,j;h=new Hxb(BD(Qb(new nLb),62));j=Qje;for(c=new olb(a.d);c.a=0&&ic?b:c;j<=l;++j){if(j==c){h=d++}else{f=e[j];k=o.rl(f.ak());j==b&&(i=j==l&&!k?d-1:d);k&&++d}}m=BD(Wxd(a,b,c),72);h!=i&&GLd(a,new ESd(a.e,7,g,meb(h),n.dd(),i));return m}}}else{return BD(sud(a,b,c),72)}return BD(Wxd(a,b,c),72)}\nfunction Qcc(a,b){var c,d,e,f,g,h,i;Odd(b,'Port order processing',1);i=BD(vNb(a,(Nyc(),_xc)),421);for(d=new olb(a.b);d.a=0){h=bD(a,g);if(h){j<22?(i.l|=1<>>1;g.m=k>>>1|(l&1)<<21;g.l=m>>>1|(k&1)<<21;--j}c&&ZC(i);if(f){if(d){QC=hD(a);e&&(QC=nD(QC,(wD(),uD)))}else{QC=TC(a.l,a.m,a.h)}}return i}\nfunction TDc(a,b){var c,d,e,f,g,h,i,j,k,l;j=a.e[b.c.p][b.p]+1;i=b.c.a.c.length+1;for(h=new olb(a.a);h.a0&&(BCb(0,a.length),a.charCodeAt(0)==45||(BCb(0,a.length),a.charCodeAt(0)==43))?1:0;for(d=g;dc){throw vbb(new Oeb(Oje+a+'\"'))}return h}\nfunction dnc(a){var b,c,d,e,f,g,h;g=new Psb;for(f=new olb(a.a);f.a1)&&b==1&&BD(a.a[a.b],10).k==(j0b(),f0b)){zac(BD(a.a[a.b],10),(rbd(),nbd))}else if(d&&(!c||(a.c-a.b&a.a.length-1)>1)&&b==1&&BD(a.a[a.c-1&a.a.length-1],10).k==(j0b(),f0b)){zac(BD(a.a[a.c-1&a.a.length-1],10),(rbd(),obd))}else if((a.c-a.b&a.a.length-1)==2){zac(BD(bkb(a),10),(rbd(),nbd));zac(BD(bkb(a),10),obd)}else{wac(a,e)}Yjb(a)}\nfunction pRc(a,b,c){var d,e,f,g,h;f=0;for(e=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));e.e!=e.i.gc();){d=BD(Dyd(e),33);g='';(!d.n&&(d.n=new cUd(D2,d,1,7)),d.n).i==0||(g=BD(qud((!d.n&&(d.n=new cUd(D2,d,1,7)),d.n),0),137).a);h=new XRc(f++,b,g);tNb(h,d);yNb(h,(mTc(),dTc),d);h.e.b=d.j+d.f/2;h.f.a=$wnd.Math.max(d.g,1);h.e.a=d.i+d.g/2;h.f.b=$wnd.Math.max(d.f,1);Dsb(b.b,h);jrb(c.f,d,h)}}\nfunction B2b(a){var b,c,d,e,f;d=BD(vNb(a,(wtc(),$sc)),33);f=BD(hkd(d,(Nyc(),Fxc)),174).Hc((tdd(),sdd));if(!a.e){e=BD(vNb(a,Ksc),21);b=new f7c(a.f.a+a.d.b+a.d.c,a.f.b+a.d.d+a.d.a);if(e.Hc((Orc(),Hrc))){jkd(d,Vxc,(dcd(),$bd));Afd(d,b.a,b.b,false,true)}else{Ccb(DD(hkd(d,Gxc)))||Afd(d,b.a,b.b,true,true)}}f?jkd(d,Fxc,pqb(sdd)):jkd(d,Fxc,(c=BD(gdb(I1),9),new xqb(c,BD(_Bb(c,c.length),9),0)))}\nfunction tA(a,b,c){var d,e,f,g;if(b[0]>=a.length){c.o=0;return true}switch(bfb(a,b[0])){case 43:e=1;break;case 45:e=-1;break;default:c.o=0;return true;}++b[0];f=b[0];g=rA(a,b);if(g==0&&b[0]==f){return false}if(b[0]=0&&h!=c){f=new nSd(a,1,h,g,null);!d?(d=f):d.Ei(f)}if(c>=0){f=new nSd(a,1,c,h==c?g:null,b);!d?(d=f):d.Ei(f)}}return d}\nfunction LEd(a){var b,c,d;if(a.b==null){d=new Hfb;if(a.i!=null){Efb(d,a.i);d.a+=':'}if((a.f&256)!=0){if((a.f&256)!=0&&a.a!=null){YEd(a.i)||(d.a+='//',d);Efb(d,a.a)}if(a.d!=null){d.a+='/';Efb(d,a.d)}(a.f&16)!=0&&(d.a+='/',d);for(b=0,c=a.j.length;bm){return false}l=(i=MZc(d,m,false),i.a);if(k+h+l<=b.b){KZc(c,f-c.s);c.c=true;KZc(d,f-c.s);OZc(d,c.s,c.t+c.d+h);d.k=true;WZc(c.q,d);n=true;if(e){s$c(b,d);d.j=b;if(a.c.length>g){v$c((tCb(g,a.c.length),BD(a.c[g],200)),d);(tCb(g,a.c.length),BD(a.c[g],200)).a.c.length==0&&Kkb(a,g)}}}return n}\nfunction kcc(a,b){var c,d,e,f,g,h;Odd(b,'Partition midprocessing',1);e=new Hp;MAb(JAb(new YAb(null,new Kub(a.a,16)),new occ),new qcc(e));if(e.d==0){return}h=BD(GAb(UAb((f=e.i,new YAb(null,(!f?(e.i=new zf(e,e.c)):f).Nc()))),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Dyb)]))),15);d=h.Kc();c=BD(d.Pb(),19);while(d.Ob()){g=BD(d.Pb(),19);jcc(BD(Qc(e,c),21),BD(Qc(e,g),21));c=g}Qdd(b)}\nfunction DYb(a,b,c){var d,e,f,g,h,i,j,k;if(b.p==0){b.p=1;g=c;if(!g){e=new Rkb;f=(d=BD(gdb(F1),9),new xqb(d,BD(_Bb(d,d.length),9),0));g=new vgd(e,f)}BD(g.a,15).Fc(b);b.k==(j0b(),e0b)&&BD(g.b,21).Fc(BD(vNb(b,(wtc(),Hsc)),61));for(i=new olb(b.j);i.a0){e=BD(a.Ab.g,1934);if(b==null){for(f=0;f1){for(d=new olb(e);d.ac.s&&hh){h=e;k.c=KC(SI,Uhe,1,0,5,1)}e==h&&Ekb(k,new vgd(c.c.i,c))}mmb();Okb(k,a.c);Dkb(a.b,i.p,k)}}}\nfunction MMc(a,b){var c,d,e,f,g,h,i,j,k;for(g=new olb(b.b);g.ah){h=e;k.c=KC(SI,Uhe,1,0,5,1)}e==h&&Ekb(k,new vgd(c.d.i,c))}mmb();Okb(k,a.c);Dkb(a.f,i.p,k)}}}\nfunction Y7c(a){r4c(a,new E3c(P3c(M3c(O3c(N3c(new R3c,qse),'ELK Box'),'Algorithm for packing of unconnected boxes, i.e. graphs without edges.'),new _7c)));p4c(a,qse,ame,U7c);p4c(a,qse,wme,15);p4c(a,qse,vme,meb(0));p4c(a,qse,Jre,Ksd(O7c));p4c(a,qse,Fme,Ksd(Q7c));p4c(a,qse,Eme,Ksd(S7c));p4c(a,qse,_le,pse);p4c(a,qse,Ame,Ksd(P7c));p4c(a,qse,Tme,Ksd(R7c));p4c(a,qse,rse,Ksd(M7c));p4c(a,qse,lqe,Ksd(N7c))}\nfunction W$b(a,b){var c,d,e,f,g,h,i,j,k;e=a.i;g=e.o.a;f=e.o.b;if(g<=0&&f<=0){return Ucd(),Scd}j=a.n.a;k=a.n.b;h=a.o.a;c=a.o.b;switch(b.g){case 2:case 1:if(j<0){return Ucd(),Tcd}else if(j+h>g){return Ucd(),zcd}break;case 4:case 3:if(k<0){return Ucd(),Acd}else if(k+c>f){return Ucd(),Rcd}}i=(j+h/2)/g;d=(k+c/2)/f;return i+d<=1&&i-d<=0?(Ucd(),Tcd):i+d>=1&&i-d>=0?(Ucd(),zcd):d<0.5?(Ucd(),Acd):(Ucd(),Rcd)}\nfunction pJc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=false;k=Edb(ED(vNb(b,(Nyc(),vyc))));o=Qie*k;for(e=new olb(b.b);e.ai+o){p=l.g+m.g;m.a=(m.g*m.a+l.g*l.a)/p;m.g=p;l.f=m;c=true}}f=h;l=m}}return c}\nfunction VGb(a,b,c,d,e,f,g){var h,i,j,k,l,m;m=new I6c;for(j=b.Kc();j.Ob();){h=BD(j.Pb(),839);for(l=new olb(h.wf());l.a0){if(h.a){j=h.b.rf().b;if(e>j){if(a.v||h.c.d.c.length==1){g=(e-j)/2;h.d.d=g;h.d.a=g}else{c=BD(Ikb(h.c.d,0),181).rf().b;d=(c-j)/2;h.d.d=$wnd.Math.max(0,d);h.d.a=e-d-j}}}else{h.d.a=a.t+e}}else if(tcd(a.u)){f=sfd(h.b);f.d<0&&(h.d.d=-f.d);f.d+f.a>h.b.rf().b&&(h.d.a=f.d+f.a-h.b.rf().b)}}}\nfunction FC(a,b){var c;switch(HC(a)){case 6:return ND(b);case 7:return LD(b);case 8:return KD(b);case 3:return Array.isArray(b)&&(c=HC(b),!(c>=14&&c<=16));case 11:return b!=null&&typeof b===Nhe;case 12:return b!=null&&(typeof b===Jhe||typeof b==Nhe);case 0:return AD(b,a.__elementTypeId$);case 2:return OD(b)&&!(b.im===gcb);case 1:return OD(b)&&!(b.im===gcb)||AD(b,a.__elementTypeId$);default:return true;}}\nfunction xOb(a,b){var c,d,e,f;d=$wnd.Math.min($wnd.Math.abs(a.c-(b.c+b.b)),$wnd.Math.abs(a.c+a.b-b.c));f=$wnd.Math.min($wnd.Math.abs(a.d-(b.d+b.a)),$wnd.Math.abs(a.d+a.a-b.d));c=$wnd.Math.abs(a.c+a.b/2-(b.c+b.b/2));if(c>a.b/2+b.b/2){return 1}e=$wnd.Math.abs(a.d+a.a/2-(b.d+b.a/2));if(e>a.a/2+b.a/2){return 1}if(c==0&&e==0){return 0}if(c==0){return f/e+1}if(e==0){return d/c+1}return $wnd.Math.min(d/c,f/e)+1}\nfunction mgb(a,b){var c,d,e,f,g,h;e=pgb(a);h=pgb(b);if(e==h){if(a.e==b.e&&a.a<54&&b.a<54){return a.fb.f?1:0}d=a.e-b.e;c=(a.d>0?a.d:$wnd.Math.floor((a.a-1)*Xje)+1)-(b.d>0?b.d:$wnd.Math.floor((b.a-1)*Xje)+1);if(c>d+1){return e}else if(c0&&(g=Ogb(g,Khb(d)));return Igb(f,g)}}else return e0&&a.d!=(yTb(),xTb)&&(h+=g*(d.d.a+a.a[b.b][d.b]*(b.d.a-d.d.a)/c));c>0&&a.d!=(yTb(),vTb)&&(i+=g*(d.d.b+a.a[b.b][d.b]*(b.d.b-d.d.b)/c))}switch(a.d.g){case 1:return new f7c(h/f,b.d.b);case 2:return new f7c(b.d.a,i/f);default:return new f7c(h/f,i/f);}}\nfunction Wcc(a,b){Occ();var c,d,e,f,g;g=BD(vNb(a.i,(Nyc(),Vxc)),98);f=a.j.g-b.j.g;if(f!=0||!(g==(dcd(),Zbd)||g==_bd||g==$bd)){return 0}if(g==(dcd(),Zbd)){c=BD(vNb(a,Wxc),19);d=BD(vNb(b,Wxc),19);if(!!c&&!!d){e=c.a-d.a;if(e!=0){return e}}}switch(a.j.g){case 1:return Kdb(a.n.a,b.n.a);case 2:return Kdb(a.n.b,b.n.b);case 3:return Kdb(b.n.a,a.n.a);case 4:return Kdb(b.n.b,a.n.b);default:throw vbb(new Zdb(ine));}}\nfunction tfd(a){var b,c,d,e,f,g;c=(!a.a&&(a.a=new xMd(y2,a,5)),a.a).i+2;g=new Skb(c);Ekb(g,new f7c(a.j,a.k));MAb(new YAb(null,(!a.a&&(a.a=new xMd(y2,a,5)),new Kub(a.a,16))),new Qfd(g));Ekb(g,new f7c(a.b,a.c));b=1;while(b0){jEb(i,false,(ead(),aad));jEb(i,true,bad)}Hkb(b.g,new $hc(a,c));Rhb(a.g,b,c)}\nfunction Neb(){Neb=ccb;var a;Jeb=OC(GC(WD,1),oje,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]);Keb=KC(WD,oje,25,37,15,1);Leb=OC(GC(WD,1),oje,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]);Meb=KC(XD,Sje,25,37,14,1);for(a=2;a<=36;a++){Keb[a]=QD($wnd.Math.pow(a,Jeb[a]));Meb[a]=Abb(rie,Keb[a])}}\nfunction pfd(a){var b;if((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a).i!=1){throw vbb(new Wdb(Tse+(!a.a&&(a.a=new cUd(A2,a,6,6)),a.a).i))}b=new s7c;!!btd(BD(qud((!a.b&&(a.b=new y5d(z2,a,4,7)),a.b),0),82))&&ye(b,qfd(a,btd(BD(qud((!a.b&&(a.b=new y5d(z2,a,4,7)),a.b),0),82)),false));!!btd(BD(qud((!a.c&&(a.c=new y5d(z2,a,5,8)),a.c),0),82))&&ye(b,qfd(a,btd(BD(qud((!a.c&&(a.c=new y5d(z2,a,5,8)),a.c),0),82)),true));return b}\nfunction _Mc(a,b){var c,d,e,f,g;b.d?(e=a.a.c==(YLc(),XLc)?R_b(b.b):U_b(b.b)):(e=a.a.c==(YLc(),WLc)?R_b(b.b):U_b(b.b));f=false;for(d=new Sr(ur(e.a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),17);g=Ccb(a.a.f[a.a.g[b.b.p].p]);if(!g&&!OZb(c)&&c.c.i.c==c.d.i.c){continue}if(Ccb(a.a.n[a.a.g[b.b.p].p])||Ccb(a.a.n[a.a.g[b.b.p].p])){continue}f=true;if(Rqb(a.b,a.a.g[TMc(c,b.b).p])){b.c=true;b.a=c;return b}}b.c=f;b.a=null;return b}\nfunction bed(a,b,c,d,e){var f,g,h,i,j,k,l;mmb();Okb(a,new Red);h=new Bib(a,0);l=new Rkb;f=0;while(h.bf*2){k=new wed(l);j=red(g)/qed(g);i=fed(k,b,new p0b,c,d,e,j);P6c(X6c(k.e),i);l.c=KC(SI,Uhe,1,0,5,1);f=0;l.c[l.c.length]=k;l.c[l.c.length]=g;f=red(k)*qed(k)+red(g)*qed(g)}else{l.c[l.c.length]=g;f+=red(g)*qed(g)}}return l}\nfunction qwd(a,b,c){var d,e,f,g,h,i,j;d=c.gc();if(d==0){return false}else{if(a.ej()){i=a.fj();zvd(a,b,c);g=d==1?a.Zi(3,null,c.Kc().Pb(),b,i):a.Zi(5,null,c,b,i);if(a.bj()){h=d<100?null:new Ixd(d);f=b+d;for(e=b;e0){for(g=0;g>16==-15&&a.Cb.nh()&&Rwd(new oSd(a.Cb,9,13,c,a.c,HLd(QSd(BD(a.Cb,59)),a)))}else if(JD(a.Cb,88)){if(a.Db>>16==-23&&a.Cb.nh()){b=a.c;JD(b,88)||(b=(jGd(),_Fd));JD(c,88)||(c=(jGd(),_Fd));Rwd(new oSd(a.Cb,9,10,c,b,HLd(VKd(BD(a.Cb,26)),a)))}}}}return a.c}\nfunction f7b(a,b){var c,d,e,f,g,h,i,j,k,l;Odd(b,'Hypernodes processing',1);for(e=new olb(a.b);e.ac);return e}\nfunction XFc(a,b){var c,d,e;d=Cub(a.d,1)!=0;!Ccb(DD(vNb(b.j,(wtc(),Jsc))))&&!Ccb(DD(vNb(b.j,mtc)))||PD(vNb(b.j,(Nyc(),ywc)))===PD((tAc(),rAc))?b.c.Tf(b.e,d):(d=Ccb(DD(vNb(b.j,Jsc))));dGc(a,b,d,true);Ccb(DD(vNb(b.j,mtc)))&&yNb(b.j,mtc,(Bcb(),false));if(Ccb(DD(vNb(b.j,Jsc)))){yNb(b.j,Jsc,(Bcb(),false));yNb(b.j,mtc,true)}c=NFc(a,b);do{$Fc(a);if(c==0){return 0}d=!d;e=c;dGc(a,b,d,false);c=NFc(a,b)}while(e>c);return e}\nfunction uNd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;if(b==c){return true}else{b=vNd(a,b);c=vNd(a,c);d=JQd(b);if(d){k=JQd(c);if(k!=d){if(!k){return false}else{i=d.Dj();o=k.Dj();return i==o&&i!=null}}else{g=(!b.d&&(b.d=new xMd(j5,b,1)),b.d);f=g.i;m=(!c.d&&(c.d=new xMd(j5,c,1)),c.d);if(f==m.i){for(j=0;j0;h=xFb(b,f);c?OFb(h.b,b):OFb(h.g,b);LFb(h).c.length==1&&(Gsb(d,h,d.c.b,d.c),true);e=new vgd(f,b);Wjb(a.o,e);Lkb(a.e.a,f)}}\nfunction _Nb(a,b){var c,d,e,f,g,h,i;d=$wnd.Math.abs(D6c(a.b).a-D6c(b.b).a);h=$wnd.Math.abs(D6c(a.b).b-D6c(b.b).b);e=0;i=0;c=1;g=1;if(d>a.b.b/2+b.b.b/2){e=$wnd.Math.min($wnd.Math.abs(a.b.c-(b.b.c+b.b.b)),$wnd.Math.abs(a.b.c+a.b.b-b.b.c));c=1-e/d}if(h>a.b.a/2+b.b.a/2){i=$wnd.Math.min($wnd.Math.abs(a.b.d-(b.b.d+b.b.a)),$wnd.Math.abs(a.b.d+a.b.a-b.b.d));g=1-i/h}f=$wnd.Math.min(c,g);return (1-f)*$wnd.Math.sqrt(d*d+h*h)}\nfunction lQc(a){var b,c,d,e;nQc(a,a.e,a.f,(FQc(),DQc),true,a.c,a.i);nQc(a,a.e,a.f,DQc,false,a.c,a.i);nQc(a,a.e,a.f,EQc,true,a.c,a.i);nQc(a,a.e,a.f,EQc,false,a.c,a.i);mQc(a,a.c,a.e,a.f,a.i);d=new Bib(a.i,0);while(d.b=65;c--){$ce[c]=c-65<<24>>24}for(d=122;d>=97;d--){$ce[d]=d-97+26<<24>>24}for(e=57;e>=48;e--){$ce[e]=e-48+52<<24>>24}$ce[43]=62;$ce[47]=63;for(f=0;f<=25;f++)_ce[f]=65+f&aje;for(g=26,i=0;g<=51;++g,i++)_ce[g]=97+i&aje;for(a=52,h=0;a<=61;++a,h++)_ce[a]=48+h&aje;_ce[62]=43;_ce[63]=47}\nfunction FXb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;if(a.dc()){return new d7c}j=0;l=0;for(e=a.Kc();e.Ob();){d=BD(e.Pb(),37);f=d.f;j=$wnd.Math.max(j,f.a);l+=f.a*f.b}j=$wnd.Math.max(j,$wnd.Math.sqrt(l)*Edb(ED(vNb(BD(a.Kc().Pb(),37),(Nyc(),owc)))));m=0;n=0;i=0;c=b;for(h=a.Kc();h.Ob();){g=BD(h.Pb(),37);k=g.f;if(m+k.a>j){m=0;n+=i+b;i=0}uXb(g,m,n);c=$wnd.Math.max(c,m+k.a);i=$wnd.Math.max(i,k.b);m+=k.a+b}return new f7c(c+b,n+i+b)}\nfunction mQc(a,b,c,d,e){var f,g,h,i,j,k,l;for(g=new olb(b);g.af){return Ucd(),zcd}break;case 4:case 3:if(i<0){return Ucd(),Acd}else if(i+a.f>e){return Ucd(),Rcd}}g=(h+a.g/2)/f;c=(i+a.f/2)/e;return g+c<=1&&g-c<=0?(Ucd(),Tcd):g+c>=1&&g-c>=0?(Ucd(),zcd):c<0.5?(Ucd(),Acd):(Ucd(),Rcd)}\nfunction vhb(a,b,c,d,e){var f,g;f=wbb(xbb(b[0],Yje),xbb(d[0],Yje));a[0]=Tbb(f);f=Obb(f,32);if(c>=e){for(g=1;g0){e.b[g++]=0;e.b[g++]=f.b[0]-1}for(b=1;b0){pOc(i,i.d-e.d);e.c==(HOc(),FOc)&&nOc(i,i.a-e.d);i.d<=0&&i.i>0&&(Gsb(b,i,b.c.b,b.c),true)}}}for(f=new olb(a.f);f.a0){qOc(h,h.i-e.d);e.c==(HOc(),FOc)&&oOc(h,h.b-e.d);h.i<=0&&h.d>0&&(Gsb(c,h,c.c.b,c.c),true)}}}}\nfunction gSc(a,b,c){var d,e,f,g,h,i,j,k;Odd(c,'Processor compute fanout',1);Uhb(a.b);Uhb(a.a);h=null;f=Jsb(b.b,0);while(!h&&f.b!=f.d.c){j=BD(Xsb(f),86);Ccb(DD(vNb(j,(mTc(),jTc))))&&(h=j)}i=new Psb;Gsb(i,h,i.c.b,i.c);fSc(a,i);for(k=Jsb(b.b,0);k.b!=k.d.c;){j=BD(Xsb(k),86);g=GD(vNb(j,(mTc(),$Sc)));e=Phb(a.b,g)!=null?BD(Phb(a.b,g),19).a:0;yNb(j,ZSc,meb(e));d=1+(Phb(a.a,g)!=null?BD(Phb(a.a,g),19).a:0);yNb(j,XSc,meb(d))}Qdd(c)}\nfunction WPc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o;m=VPc(a,c);for(i=0;i0);d.a.Xb(d.c=--d.b);l>m+i&&uib(d)}for(g=new olb(n);g.a0);d.a.Xb(d.c=--d.b)}}}}\nfunction Jfe(){wfe();var a,b,c,d,e,f;if(gfe)return gfe;a=(++vfe,new $fe(4));Xfe(a,Kfe(vxe,true));Zfe(a,Kfe('M',true));Zfe(a,Kfe('C',true));f=(++vfe,new $fe(4));for(d=0;d<11;d++){Ufe(f,d,d)}b=(++vfe,new $fe(4));Xfe(b,Kfe('M',true));Ufe(b,4448,4607);Ufe(b,65438,65439);e=(++vfe,new Lge(2));Kge(e,a);Kge(e,ffe);c=(++vfe,new Lge(2));c.$l(Bfe(f,Kfe('L',true)));c.$l(b);c=(++vfe,new lge(3,c));c=(++vfe,new rge(e,c));gfe=c;return gfe}\nfunction S3c(a){var b,c;b=GD(hkd(a,(Y9c(),o8c)));if(T3c(b,a)){return}if(!ikd(a,F9c)&&((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a).i!=0||Ccb(DD(hkd(a,M8c))))){if(b==null||ufb(b).length==0){if(!T3c(sne,a)){c=Qfb(Qfb(new Wfb('Unable to load default layout algorithm '),sne),' for unconfigured node ');yfd(a,c);throw vbb(new y2c(c.a))}}else{c=Qfb(Qfb(new Wfb(\"Layout algorithm '\"),b),\"' not found for \");yfd(a,c);throw vbb(new y2c(c.a))}}}\nfunction hIb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;c=a.i;b=a.n;if(a.b==0){n=c.c+b.b;m=c.b-b.b-b.c;for(g=a.a,i=0,k=g.length;i0){l-=d[0]+a.c;d[0]+=a.c}d[2]>0&&(l-=d[2]+a.c);d[1]=$wnd.Math.max(d[1],l);mHb(a.a[1],c.c+b.b+d[0]-(d[1]-l)/2,d[1])}for(f=a.a,h=0,j=f.length;h0?(a.n.c.length-1)*a.i:0;for(d=new olb(a.n);d.a1){for(d=Jsb(e,0);d.b!=d.d.c;){c=BD(Xsb(d),231);f=0;for(i=new olb(c.e);i.a0){b[0]+=a.c;l-=b[0]}b[2]>0&&(l-=b[2]+a.c);b[1]=$wnd.Math.max(b[1],l);nHb(a.a[1],d.d+c.d+b[0]-(b[1]-l)/2,b[1])}else{o=d.d+c.d;n=d.a-c.d-c.a;for(g=a.a,i=0,k=g.length;i=0&&f!=c){throw vbb(new Wdb(kue))}}e=0;for(i=0;i0||Jy(e.b.d,a.b.d+a.b.a)==0&&d.b<0||Jy(e.b.d+e.b.a,a.b.d)==0&&d.b>0){h=0;break}}else{h=$wnd.Math.min(h,YNb(a,e,d))}h=$wnd.Math.min(h,ONb(a,f,h,d))}return h}\nfunction ifd(a,b){var c,d,e,f,g,h,i;if(a.b<2){throw vbb(new Wdb('The vector chain must contain at least a source and a target point.'))}e=(sCb(a.b!=0),BD(a.a.a.c,8));nmd(b,e.a,e.b);i=new Oyd((!b.a&&(b.a=new xMd(y2,b,5)),b.a));g=Jsb(a,1);while(g.aEdb(REc(g.g,g.d[0]).a)){sCb(i.b>0);i.a.Xb(i.c=--i.b);Aib(i,g);e=true}else if(!!h.e&&h.e.gc()>0){f=(!h.e&&(h.e=new Rkb),h.e).Mc(b);j=(!h.e&&(h.e=new Rkb),h.e).Mc(c);if(f||j){(!h.e&&(h.e=new Rkb),h.e).Fc(g);++g.c}}}e||(d.c[d.c.length]=g,true)}\nfunction odc(a){var b,c,d;if(fcd(BD(vNb(a,(Nyc(),Vxc)),98))){for(c=new olb(a.j);c.a>>0,'0'+b.toString(16));d='\\\\x'+qfb(c,c.length-2,c.length)}else if(a>=Tje){c=(b=a>>>0,'0'+b.toString(16));d='\\\\v'+qfb(c,c.length-6,c.length)}else d=''+String.fromCharCode(a&aje);}return d}\nfunction yhb(a,b){var c,d,e,f,g,h,i,j,k,l;g=a.e;i=b.e;if(i==0){return a}if(g==0){return b.e==0?b:new Vgb(-b.e,b.d,b.a)}f=a.d;h=b.d;if(f+h==2){c=xbb(a.a[0],Yje);d=xbb(b.a[0],Yje);g<0&&(c=Jbb(c));i<0&&(d=Jbb(d));return ghb(Qbb(c,d))}e=f!=h?f>h?1:-1:whb(a.a,b.a,f);if(e==-1){l=-i;k=g==i?zhb(b.a,h,a.a,f):uhb(b.a,h,a.a,f)}else{l=g;if(g==i){if(e==0){return Hgb(),Ggb}k=zhb(a.a,f,b.a,h)}else{k=uhb(a.a,f,b.a,h)}}j=new Vgb(l,k.length,k);Jgb(j);return j}\nfunction YPc(a){var b,c,d,e,f,g;this.e=new Rkb;this.a=new Rkb;for(c=a.b-1;c<3;c++){St(a,0,BD(Ut(a,0),8))}if(a.b<4){throw vbb(new Wdb('At (least dimension + 1) control points are necessary!'))}else{this.b=3;this.d=true;this.c=false;TPc(this,a.b+this.b-1);g=new Rkb;f=new olb(this.e);for(b=0;b=b.o&&c.f<=b.f||b.a*0.5<=c.f&&b.a*1.5>=c.f){g=BD(Ikb(b.n,b.n.c.length-1),211);if(g.e+g.d+c.g+e<=d&&(f=BD(Ikb(b.n,b.n.c.length-1),211),f.f-a.f+c.f<=a.b||a.a.c.length==1)){EZc(b,c);return true}else if(b.s+c.g<=d&&(b.t+b.d+c.f+e<=a.b||a.a.c.length==1)){Ekb(b.b,c);h=BD(Ikb(b.n,b.n.c.length-1),211);Ekb(b.n,new VZc(b.s,h.f+h.a+b.i,b.i));QZc(BD(Ikb(b.n,b.n.c.length-1),211),c);GZc(b,c);return true}}return false}\nfunction Zxd(a,b,c){var d,e,f,g;if(a.ej()){e=null;f=a.fj();d=a.Zi(1,g=uud(a,b,c),c,b,f);if(a.bj()&&!(a.ni()&&g!=null?pb(g,c):PD(g)===PD(c))){g!=null&&(e=a.dj(g,e));e=a.cj(c,e);a.ij()&&(e=a.lj(g,c,e));if(!e){a.$i(d)}else{e.Ei(d);e.Fi()}}else{a.ij()&&(e=a.lj(g,c,e));if(!e){a.$i(d)}else{e.Ei(d);e.Fi()}}return g}else{g=uud(a,b,c);if(a.bj()&&!(a.ni()&&g!=null?pb(g,c):PD(g)===PD(c))){e=null;g!=null&&(e=a.dj(g,null));e=a.cj(c,e);!!e&&e.Fi()}return g}}\nfunction YA(a,b){var c,d,e,f,g,h,i,j;b%=24;if(a.q.getHours()!=b){d=new $wnd.Date(a.q.getTime());d.setDate(d.getDate()+1);h=a.q.getTimezoneOffset()-d.getTimezoneOffset();if(h>0){i=h/60|0;j=h%60;e=a.q.getDate();c=a.q.getHours();c+i>=24&&++e;f=new $wnd.Date(a.q.getFullYear(),a.q.getMonth(),e,b+i,a.q.getMinutes()+j,a.q.getSeconds(),a.q.getMilliseconds());a.q.setTime(f.getTime())}}g=a.q.getTime();a.q.setTime(g+3600000);a.q.getHours()!=b&&a.q.setTime(g)}\nfunction opc(a,b){var c,d,e,f,g;Odd(b,'Path-Like Graph Wrapping',1);if(a.b.c.length==0){Qdd(b);return}e=new Xoc(a);g=(e.i==null&&(e.i=Soc(e,new Zoc)),Edb(e.i)*e.f);c=g/(e.i==null&&(e.i=Soc(e,new Zoc)),Edb(e.i));if(e.b>c){Qdd(b);return}switch(BD(vNb(a,(Nyc(),Gyc)),337).g){case 2:f=new hpc;break;case 0:f=new Ync;break;default:f=new kpc;}d=f.Vf(a,e);if(!f.Wf()){switch(BD(vNb(a,Myc),338).g){case 2:d=tpc(e,d);break;case 1:d=rpc(e,d);}}npc(a,e,d);Qdd(b)}\nfunction MFc(a,b){var c,d,e,f;Fub(a.d,a.e);a.c.a.$b();if(Edb(ED(vNb(b.j,(Nyc(),uwc))))!=0||Edb(ED(vNb(b.j,uwc)))!=0){c=dme;PD(vNb(b.j,ywc))!==PD((tAc(),rAc))&&yNb(b.j,(wtc(),Jsc),(Bcb(),true));f=BD(vNb(b.j,Ayc),19).a;for(e=0;ee&&++j;Ekb(g,(tCb(h+j,b.c.length),BD(b.c[h+j],19)));i+=(tCb(h+j,b.c.length),BD(b.c[h+j],19)).a-d;++c;while(c1&&(i>red(h)*qed(h)/2||g.b==0)){l=new wed(m);k=red(h)/qed(h);j=fed(l,b,new p0b,c,d,e,k);P6c(X6c(l.e),j);h=l;n.c[n.c.length]=l;i=0;m.c=KC(SI,Uhe,1,0,5,1)}}}Gkb(n,m);return n}\nfunction y6d(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p;if(c.mh(b)){k=(n=b,!n?null:BD(d,49).xh(n));if(k){p=c.bh(b,a.a);o=b.t;if(o>1||o==-1){l=BD(p,69);m=BD(k,69);if(l.dc()){m.$b()}else{g=!!zUd(b);f=0;for(h=a.a?l.Kc():l.Zh();h.Ob();){j=BD(h.Pb(),56);e=BD(Wrb(a,j),56);if(!e){if(a.b&&!g){m.Xh(f,j);++f}}else{if(g){i=m.Xc(e);i==-1?m.Xh(f,e):f!=i&&m.ji(f,e)}else{m.Xh(f,e)}++f}}}}else{if(p==null){k.Wb(null)}else{e=Wrb(a,p);e==null?a.b&&!zUd(b)&&k.Wb(p):k.Wb(e)}}}}}\nfunction E6b(a,b){var c,d,e,f,g,h,i,j;c=new L6b;for(e=new Sr(ur(R_b(b).a.Kc(),new Sq));Qr(e);){d=BD(Rr(e),17);if(OZb(d)){continue}h=d.c.i;if(F6b(h,C6b)){j=G6b(a,h,C6b,B6b);if(j==-1){continue}c.b=$wnd.Math.max(c.b,j);!c.a&&(c.a=new Rkb);Ekb(c.a,h)}}for(g=new Sr(ur(U_b(b).a.Kc(),new Sq));Qr(g);){f=BD(Rr(g),17);if(OZb(f)){continue}i=f.d.i;if(F6b(i,B6b)){j=G6b(a,i,B6b,C6b);if(j==-1){continue}c.d=$wnd.Math.max(c.d,j);!c.c&&(c.c=new Rkb);Ekb(c.c,i)}}return c}\nfunction Khb(a){Dhb();var b,c,d,e;b=QD(a);if(a1000000){throw vbb(new ocb('power of ten too big'))}if(a<=Ohe){return Qgb(Pgb(Bhb[1],b),b)}d=Pgb(Bhb[1],Ohe);e=d;c=Cbb(a-Ohe);b=QD(a%Ohe);while(ybb(c,Ohe)>0){e=Ogb(e,d);c=Qbb(c,Ohe)}e=Ogb(e,Pgb(Bhb[1],b));e=Qgb(e,Ohe);c=Cbb(a-Ohe);while(ybb(c,Ohe)>0){e=Qgb(e,Ohe);c=Qbb(c,Ohe)}e=Qgb(e,b);return e}\nfunction X5b(a,b){var c,d,e,f,g,h,i,j,k;Odd(b,'Hierarchical port dummy size processing',1);i=new Rkb;k=new Rkb;d=Edb(ED(vNb(a,(Nyc(),myc))));c=d*2;for(f=new olb(a.b);f.aj&&d>j){k=h;j=Edb(b.p[h.p])+Edb(b.d[h.p])+h.o.b+h.d.a}else{e=false;c.n&&Sdd(c,'bk node placement breaks on '+h+' which should have been after '+k);break}}if(!e){break}}c.n&&Sdd(c,b+' is feasible: '+e);return e}\nfunction XNc(a,b,c,d){var e,f,g,h,i,j,k;h=-1;for(k=new olb(a);k.a=q&&a.e[i.p]>o*a.b||t>=c*q){m.c[m.c.length]=h;h=new Rkb;ye(g,f);f.a.$b();j-=k;n=$wnd.Math.max(n,j*a.b+p);j+=t;s=t;t=0;k=0;p=0}}return new vgd(n,m)}\nfunction q4c(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;for(c=(j=(new $ib(a.c.b)).a.vc().Kc(),new djb(j));c.a.Ob();){b=(h=BD(c.a.Pb(),42),BD(h.dd(),149));e=b.a;e==null&&(e='');d=i4c(a.c,e);!d&&e.length==0&&(d=u4c(a));!!d&&!ze(d.c,b,false)&&Dsb(d.c,b)}for(g=Jsb(a.a,0);g.b!=g.d.c;){f=BD(Xsb(g),478);k=j4c(a.c,f.a);n=j4c(a.c,f.b);!!k&&!!n&&Dsb(k.c,new vgd(n,f.c))}Osb(a.a);for(m=Jsb(a.b,0);m.b!=m.d.c;){l=BD(Xsb(m),478);b=g4c(a.c,l.a);i=j4c(a.c,l.b);!!b&&!!i&&B3c(b,i,l.c)}Osb(a.b)}\nfunction qvd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;f=new fC(a);g=new ird;e=(ko(g.g),ko(g.j),Uhb(g.b),ko(g.d),ko(g.i),Uhb(g.k),Uhb(g.c),Uhb(g.e),n=drd(g,f,null),ard(g,f),n);if(b){j=new fC(b);h=rvd(j);jfd(e,OC(GC(g2,1),Uhe,527,0,[h]))}m=false;l=false;if(c){j=new fC(c);que in j.a&&(m=aC(j,que).ge().a);rue in j.a&&(l=aC(j,rue).ge().a)}k=Vdd(Xdd(new Zdd,m),l);t2c(new w2c,e,k);que in f.a&&cC(f,que,null);if(m||l){i=new eC;nvd(k,i,m,l);cC(f,que,i)}d=new Prd(g);Ghe(new _ud(e),d)}\nfunction pA(a,b,c){var d,e,f,g,h,i,j,k,l;g=new nB;j=OC(GC(WD,1),oje,25,15,[0]);e=-1;f=0;d=0;for(i=0;i0){if(e<0&&k.a){e=i;f=j[0];d=0}if(e>=0){h=k.b;if(i==e){h-=d++;if(h==0){return 0}}if(!wA(b,j,k,h,g)){i=e-1;j[0]=f;continue}}else{e=-1;if(!wA(b,j,k,0,g)){return 0}}}else{e=-1;if(bfb(k.c,0)==32){l=j[0];uA(b,j);if(j[0]>l){continue}}else if(ofb(b,k.c,j[0])){j[0]+=k.c.length;continue}return 0}}if(!mB(g,c)){return 0}return j[0]}\nfunction SKd(a){var b,c,d,e,f,g,h,i;if(!a.f){i=new CNd;h=new CNd;b=KKd;g=b.a.zc(a,b);if(g==null){for(f=new Fyd(_Kd(a));f.e!=f.i.gc();){e=BD(Dyd(f),26);ytd(i,SKd(e))}b.a.Bc(a)!=null;b.a.gc()==0&&undefined}for(d=(!a.s&&(a.s=new cUd(t5,a,21,17)),new Fyd(a.s));d.e!=d.i.gc();){c=BD(Dyd(d),170);JD(c,99)&&wtd(h,BD(c,18))}vud(h);a.r=new UNd(a,(BD(qud(ZKd((NFd(),MFd).o),6),18),h.i),h.g);ytd(i,a.r);vud(i);a.f=new nNd((BD(qud(ZKd(MFd.o),5),18),i.i),i.g);$Kd(a).b&=-3}return a.f}\nfunction rMb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;g=a.o;d=KC(WD,oje,25,g,15,1);e=KC(WD,oje,25,g,15,1);c=a.p;b=KC(WD,oje,25,c,15,1);f=KC(WD,oje,25,c,15,1);for(j=0;j=0&&!YMb(a,k,l)){--l}e[k]=l}for(n=0;n=0&&!YMb(a,h,o)){--h}f[o]=h}for(i=0;ib[m]&&md[i]&&aNb(a,i,m,false,true)}}}\nfunction lRb(a){var b,c,d,e,f,g,h,i;c=Ccb(DD(vNb(a,(wSb(),cSb))));f=a.a.c.d;h=a.a.d.d;if(c){g=Y6c(c7c(new f7c(h.a,h.b),f),0.5);i=Y6c(R6c(a.e),0.5);b=c7c(P6c(new f7c(f.a,f.b),g),i);a7c(a.d,b)}else{e=Edb(ED(vNb(a.a,tSb)));d=a.d;if(f.a>=h.a){if(f.b>=h.b){d.a=h.a+(f.a-h.a)/2+e;d.b=h.b+(f.b-h.b)/2-e-a.e.b}else{d.a=h.a+(f.a-h.a)/2+e;d.b=f.b+(h.b-f.b)/2+e}}else{if(f.b>=h.b){d.a=f.a+(h.a-f.a)/2+e;d.b=h.b+(f.b-h.b)/2+e}else{d.a=f.a+(h.a-f.a)/2+e;d.b=f.b+(h.b-f.b)/2-e-a.e.b}}}}\nfunction Qge(a,b){var c,d,e,f,g,h,i;if(a==null){return null}f=a.length;if(f==0){return ''}i=KC(TD,$ie,25,f,15,1);ACb(0,f,a.length);ACb(0,f,i.length);ffb(a,0,f,i,0);c=null;h=b;for(e=0,g=0;e0?qfb(c.a,0,f-1):''}}else{return !c?a:c.a}}\nfunction DPb(a){r4c(a,new E3c(P3c(M3c(O3c(N3c(new R3c,Yle),'ELK DisCo'),'Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out.'),new GPb)));p4c(a,Yle,Zle,Ksd(BPb));p4c(a,Yle,$le,Ksd(vPb));p4c(a,Yle,_le,Ksd(qPb));p4c(a,Yle,ame,Ksd(wPb));p4c(a,Yle,Zke,Ksd(zPb));p4c(a,Yle,$ke,Ksd(yPb));p4c(a,Yle,Yke,Ksd(APb));p4c(a,Yle,_ke,Ksd(xPb));p4c(a,Yle,Tle,Ksd(sPb));p4c(a,Yle,Ule,Ksd(rPb));p4c(a,Yle,Vle,Ksd(tPb));p4c(a,Yle,Wle,Ksd(uPb))}\nfunction Zbc(a,b,c,d){var e,f,g,h,i,j,k,l,m;f=new b0b(a);__b(f,(j0b(),i0b));yNb(f,(Nyc(),Vxc),(dcd(),$bd));e=0;if(b){g=new H0b;yNb(g,(wtc(),$sc),b);yNb(f,$sc,b.i);G0b(g,(Ucd(),Tcd));F0b(g,f);m=k_b(b.e);for(j=m,k=0,l=j.length;k0){c-=d.length-b;if(c>=0){e.a+='0.';for(;c>egb.length;c-=egb.length){Rfb(e,egb)}Sfb(e,egb,QD(c));Qfb(e,d.substr(b))}else{c=b-c;Qfb(e,qfb(d,b,QD(c)));e.a+='.';Qfb(e,pfb(d,QD(c)))}}else{Qfb(e,d.substr(b));for(;c<-egb.length;c+=egb.length){Rfb(e,egb)}Sfb(e,egb,QD(-c))}return e.a}\nfunction v6c(a,b,c,d){var e,f,g,h,i,j,k,l,m;i=c7c(new f7c(c.a,c.b),a);j=i.a*b.b-i.b*b.a;k=b.a*d.b-b.b*d.a;l=(i.a*d.b-i.b*d.a)/k;m=j/k;if(k==0){if(j==0){e=P6c(new f7c(c.a,c.b),Y6c(new f7c(d.a,d.b),0.5));f=S6c(a,e);g=S6c(P6c(new f7c(a.a,a.b),b),e);h=$wnd.Math.sqrt(d.a*d.a+d.b*d.b)*0.5;if(f=0&&l<=1&&m>=0&&m<=1?P6c(new f7c(a.a,a.b),Y6c(new f7c(b.a,b.b),l)):null}}\nfunction OTb(a,b,c){var d,e,f,g,h;d=BD(vNb(a,(Nyc(),zwc)),21);c.a>b.a&&(d.Hc((i8c(),c8c))?(a.c.a+=(c.a-b.a)/2):d.Hc(e8c)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.Hc((i8c(),g8c))?(a.c.b+=(c.b-b.b)/2):d.Hc(f8c)&&(a.c.b+=c.b-b.b));if(BD(vNb(a,(wtc(),Ksc)),21).Hc((Orc(),Hrc))&&(c.a>b.a||c.b>b.b)){for(h=new olb(a.a);h.ab.a&&(d.Hc((i8c(),c8c))?(a.c.a+=(c.a-b.a)/2):d.Hc(e8c)&&(a.c.a+=c.a-b.a));c.b>b.b&&(d.Hc((i8c(),g8c))?(a.c.b+=(c.b-b.b)/2):d.Hc(f8c)&&(a.c.b+=c.b-b.b));if(BD(vNb(a,(wtc(),Ksc)),21).Hc((Orc(),Hrc))&&(c.a>b.a||c.b>b.b)){for(g=new olb(a.a);g.ab){e=0;f+=k.b+c;l.c[l.c.length]=k;k=new x$c(f,c);d=new PZc(0,k.f,k,c);s$c(k,d);e=0}if(d.b.c.length==0||i.f>=d.o&&i.f<=d.f||d.a*0.5<=i.f&&d.a*1.5>=i.f){EZc(d,i)}else{g=new PZc(d.s+d.r+c,k.f,k,c);s$c(k,g);EZc(g,i)}e=i.i+i.g}l.c[l.c.length]=k;return l}\nfunction OKd(a){var b,c,d,e,f,g,h,i;if(!a.a){a.o=null;i=new GNd(a);b=new KNd;c=KKd;h=c.a.zc(a,c);if(h==null){for(g=new Fyd(_Kd(a));g.e!=g.i.gc();){f=BD(Dyd(g),26);ytd(i,OKd(f))}c.a.Bc(a)!=null;c.a.gc()==0&&undefined}for(e=(!a.s&&(a.s=new cUd(t5,a,21,17)),new Fyd(a.s));e.e!=e.i.gc();){d=BD(Dyd(e),170);JD(d,322)&&wtd(b,BD(d,34))}vud(b);a.k=new PNd(a,(BD(qud(ZKd((NFd(),MFd).o),7),18),b.i),b.g);ytd(i,a.k);vud(i);a.a=new nNd((BD(qud(ZKd(MFd.o),4),18),i.i),i.g);$Kd(a).b&=-2}return a.a}\nfunction vZc(a,b,c,d,e,f,g){var h,i,j,k,l,m;l=false;i=ZZc(c.q,b.f+b.b-c.q.f);m=e-(c.q.e+i-g);if(m=(tCb(f,a.c.length),BD(a.c[f],200)).e;k=(h=MZc(d,m,false),h.a);if(k>b.b&&!j){return false}if(j||k<=b.b){if(j&&k>b.b){c.d=k;KZc(c,JZc(c,k))}else{$Zc(c.q,i);c.c=true}KZc(d,e-(c.s+c.r));OZc(d,c.q.e+c.q.d,b.f);s$c(b,d);if(a.c.length>f){v$c((tCb(f,a.c.length),BD(a.c[f],200)),d);(tCb(f,a.c.length),BD(a.c[f],200)).a.c.length==0&&Kkb(a,f)}l=true}return l}\nfunction C2d(a,b,c,d){var e,f,g,h,i,j,k;k=S6d(a.e.Tg(),b);e=0;f=BD(a.g,119);i=null;Q6d();if(BD(b,66).Oj()){for(h=0;ha.o.a){k=(i-a.o.a)/2;h.b=$wnd.Math.max(h.b,k);h.c=$wnd.Math.max(h.c,k)}}\nfunction rvd(a){var b,c,d,e,f,g,h,i;f=new b2c;Z1c(f,(Y1c(),V1c));for(d=(e=$B(a,KC(ZI,nie,2,0,6,1)),new vib(new amb((new mC(a,e)).b)));d.b0?a.i:0)>b&&i>0){f=0;g+=i+a.i;e=$wnd.Math.max(e,m);d+=i+a.i;i=0;m=0;if(c){++l;Ekb(a.n,new VZc(a.s,g,a.i))}h=0}m+=j.g+(h>0?a.i:0);i=$wnd.Math.max(i,j.f);c&&QZc(BD(Ikb(a.n,l),211),j);f+=j.g+(h>0?a.i:0);++h}e=$wnd.Math.max(e,m);d+=i;if(c){a.r=e;a.d=d;u$c(a.j)}return new J6c(a.s,a.t,e,d)}\nfunction $fb(a,b,c,d,e){Zfb();var f,g,h,i,j,k,l,m,n;vCb(a,'src');vCb(c,'dest');m=rb(a);i=rb(c);rCb((m.i&4)!=0,'srcType is not an array');rCb((i.i&4)!=0,'destType is not an array');l=m.c;g=i.c;rCb((l.i&1)!=0?l==g:(g.i&1)==0,\"Array types don't match\");n=a.length;j=c.length;if(b<0||d<0||e<0||b+e>n||d+e>j){throw vbb(new pcb)}if((l.i&1)==0&&m!=i){k=CD(a);f=CD(c);if(PD(a)===PD(c)&&bd;){NC(f,h,k[--b])}}else{for(h=d+e;d0&&$Bb(a,b,c,d,e,true)}\nfunction phb(){phb=ccb;nhb=OC(GC(WD,1),oje,25,15,[Rie,1162261467,Iie,1220703125,362797056,1977326743,Iie,387420489,Jje,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,1280000000,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729000000,887503681,Iie,1291467969,1544804416,1838265625,60466176]);ohb=OC(GC(WD,1),oje,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}\nfunction soc(a){var b,c,d,e,f,g,h,i;for(e=new olb(a.b);e.a=a.b.length){f[e++]=g.b[d++];f[e++]=g.b[d++]}else if(d>=g.b.length){f[e++]=a.b[c++];f[e++]=a.b[c++]}else if(g.b[d]0?a.i:0)}++b}Ce(a.n,i);a.d=c;a.r=d;a.g=0;a.f=0;a.e=0;a.o=Pje;a.p=Pje;for(f=new olb(a.b);f.a0){e=(!a.n&&(a.n=new cUd(D2,a,1,7)),BD(qud(a.n,0),137)).a;!e||Qfb(Qfb((b.a+=' \"',b),e),'\"')}}else{Qfb(Qfb((b.a+=' \"',b),d),'\"')}c=(!a.b&&(a.b=new y5d(z2,a,4,7)),!(a.b.i<=1&&(!a.c&&(a.c=new y5d(z2,a,5,8)),a.c.i<=1)));c?(b.a+=' [',b):(b.a+=' ',b);Qfb(b,Eb(new Gb,new Fyd(a.b)));c&&(b.a+=']',b);b.a+=gne;c&&(b.a+='[',b);Qfb(b,Eb(new Gb,new Fyd(a.c)));c&&(b.a+=']',b);return b.a}\nfunction TQd(a,b){var c,d,e,f,g,h,i;if(a.a){h=a.a.ne();i=null;if(h!=null){b.a+=''+h}else{g=a.a.Dj();if(g!=null){f=hfb(g,wfb(91));if(f!=-1){i=g.substr(f);b.a+=''+qfb(g==null?Xhe:(uCb(g),g),0,f)}else{b.a+=''+g}}}if(!!a.d&&a.d.i!=0){e=true;b.a+='<';for(d=new Fyd(a.d);d.e!=d.i.gc();){c=BD(Dyd(d),87);e?(e=false):(b.a+=She,b);TQd(c,b)}b.a+='>'}i!=null&&(b.a+=''+i,b)}else if(a.e){h=a.e.zb;h!=null&&(b.a+=''+h,b)}else{b.a+='?';if(a.b){b.a+=' super ';TQd(a.b,b)}else{if(a.f){b.a+=' extends ';TQd(a.f,b)}}}}\nfunction Z9b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;v=a.c;w=b.c;c=Jkb(v.a,a,0);d=Jkb(w.a,b,0);t=BD(W_b(a,(KAc(),HAc)).Kc().Pb(),11);C=BD(W_b(a,IAc).Kc().Pb(),11);u=BD(W_b(b,HAc).Kc().Pb(),11);D=BD(W_b(b,IAc).Kc().Pb(),11);r=k_b(t.e);A=k_b(C.g);s=k_b(u.e);B=k_b(D.g);Z_b(a,d,w);for(g=s,k=0,o=g.length;kk){new DOc((HOc(),GOc),c,b,j-k)}else if(j>0&&k>0){new DOc((HOc(),GOc),b,c,0);new DOc(GOc,c,b,0)}}return g}\nfunction TUb(a,b){var c,d,e,f,g,h;for(g=new nib((new eib(a.f.b)).a);g.b;){f=lib(g);e=BD(f.cd(),594);if(b==1){if(e.gf()!=(ead(),dad)&&e.gf()!=_9c){continue}}else{if(e.gf()!=(ead(),aad)&&e.gf()!=bad){continue}}d=BD(BD(f.dd(),46).b,81);h=BD(BD(f.dd(),46).a,189);c=h.c;switch(e.gf().g){case 2:d.g.c=a.e.a;d.g.b=$wnd.Math.max(1,d.g.b+c);break;case 1:d.g.c=d.g.c+c;d.g.b=$wnd.Math.max(1,d.g.b-c);break;case 4:d.g.d=a.e.b;d.g.a=$wnd.Math.max(1,d.g.a+c);break;case 3:d.g.d=d.g.d+c;d.g.a=$wnd.Math.max(1,d.g.a-c);}}}\nfunction nJc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;h=KC(WD,oje,25,b.b.c.length,15,1);j=KC(NQ,Kie,267,b.b.c.length,0,1);i=KC(OQ,kne,10,b.b.c.length,0,1);for(l=a.a,m=0,n=l.length;m0&&!!i[d]&&(o=jBc(a.b,i[d],e));p=$wnd.Math.max(p,e.c.c.b+o)}for(f=new olb(k.e);f.a1){throw vbb(new Wdb(Hwe))}if(!i){f=R6d(b,d.Kc().Pb());g.Fc(f)}}return xtd(a,I2d(a,b,c),g)}\nfunction Pmc(a,b){var c,d,e,f;Jmc(b.b.j);MAb(NAb(new YAb(null,new Kub(b.d,16)),new $mc),new anc);for(f=new olb(b.d);f.aa.o.b){return false}c=V_b(a,zcd);h=b.d+b.a+(c.gc()-1)*g;if(h>a.o.b){return false}}return true}\nfunction thb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;g=a.e;i=b.e;if(g==0){return b}if(i==0){return a}f=a.d;h=b.d;if(f+h==2){c=xbb(a.a[0],Yje);d=xbb(b.a[0],Yje);if(g==i){k=wbb(c,d);o=Tbb(k);n=Tbb(Pbb(k,32));return n==0?new Ugb(g,o):new Vgb(g,2,OC(GC(WD,1),oje,25,15,[o,n]))}return ghb(g<0?Qbb(d,c):Qbb(c,d))}else if(g==i){m=g;l=f>=h?uhb(a.a,f,b.a,h):uhb(b.a,h,a.a,f)}else{e=f!=h?f>h?1:-1:whb(a.a,b.a,f);if(e==0){return Hgb(),Ggb}if(e==1){m=g;l=zhb(a.a,f,b.a,h)}else{m=i;l=zhb(b.a,h,a.a,f)}}j=new Vgb(m,l.length,l);Jgb(j);return j}\nfunction oZb(a,b,c,d,e,f,g){var h,i,j,k,l,m,n;l=Ccb(DD(vNb(b,(Nyc(),vxc))));m=null;f==(KAc(),HAc)&&d.c.i==c?(m=d.c):f==IAc&&d.d.i==c&&(m=d.d);j=g;if(!j||!l||!!m){k=(Ucd(),Scd);m?(k=m.j):fcd(BD(vNb(c,Vxc),98))&&(k=f==HAc?Tcd:zcd);i=lZb(a,b,c,f,k,d);h=kZb((Q_b(c),d));if(f==HAc){QZb(h,BD(Ikb(i.j,0),11));RZb(h,e)}else{QZb(h,e);RZb(h,BD(Ikb(i.j,0),11))}j=new yZb(d,h,i,BD(vNb(i,(wtc(),$sc)),11),f,!m)}else{Ekb(j.e,d);n=$wnd.Math.max(Edb(ED(vNb(j.d,Zwc))),Edb(ED(vNb(d,Zwc))));yNb(j.d,Zwc,n)}Rc(a.a,d,new BZb(j.d,b,f));return j}\nfunction V1d(a,b){var c,d,e,f,g,h,i,j,k,l;k=null;!!a.d&&(k=BD(Phb(a.d,b),138));if(!k){f=a.a.Mh();l=f.i;if(!a.d||Vhb(a.d)!=l){i=new Lqb;!!a.d&&Ld(i,a.d);j=i.f.c+i.g.c;for(h=j;h0){n=(o-1)*c;!!h&&(n+=d);!!k&&(n+=d);n=a.b[e+1]){e+=2}else if(c0){d=new Tkb(BD(Qc(a.a,f),21));mmb();Okb(d,new EZb(b));e=new Bib(f.b,0);while(e.bv)){i=2;g=Ohe}else if(i==0){i=1;g=A}else{i=0;g=A}}else{n=A>=g||g-A0?1:Ny(isNaN(d),isNaN(0)))>=0^(null,My(Jqe),($wnd.Math.abs(h)<=Jqe||h==0||isNaN(h)&&isNaN(0)?0:h<0?-1:h>0?1:Ny(isNaN(h),isNaN(0)))>=0)){return $wnd.Math.max(h,d)}My(Jqe);if(($wnd.Math.abs(d)<=Jqe||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:Ny(isNaN(d),isNaN(0)))>0){return $wnd.Math.sqrt(h*h+d*d)}return -$wnd.Math.sqrt(h*h+d*d)}\nfunction Kge(a,b){var c,d,e,f,g,h;if(!b)return;!a.a&&(a.a=new Wvb);if(a.e==2){Tvb(a.a,b);return}if(b.e==1){for(e=0;e=Tje?Efb(c,Tee(d)):Afb(c,d&aje);g=(++vfe,new Hge(10,null,0));Vvb(a.a,g,h-1)}else{c=(g.bm().length+f,new Ifb);Efb(c,g.bm())}if(b.e==0){d=b._l();d>=Tje?Efb(c,Tee(d)):Afb(c,d&aje)}else{Efb(c,b.bm())}BD(g,521).b=c.a}\nfunction rgb(a){var b,c,d,e,f;if(a.g!=null){return a.g}if(a.a<32){a.g=rhb(Cbb(a.f),QD(a.e));return a.g}e=shb((!a.c&&(a.c=fhb(a.f)),a.c),0);if(a.e==0){return e}b=(!a.c&&(a.c=fhb(a.f)),a.c).e<0?2:1;c=e.length;d=-a.e+c-b;f=new Ufb;f.a+=''+e;if(a.e>0&&d>=-6){if(d>=0){Tfb(f,c-QD(a.e),String.fromCharCode(46))}else{f.a=qfb(f.a,0,b-1)+'0.'+pfb(f.a,b-1);Tfb(f,b+1,zfb(egb,0,-QD(d)-1))}}else{if(c-b>=1){Tfb(f,b,String.fromCharCode(46));++c}Tfb(f,c,String.fromCharCode(69));d>0&&Tfb(f,++c,String.fromCharCode(43));Tfb(f,++c,''+Ubb(Cbb(d)))}a.g=f.a;return a.g}\nfunction npc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(c.dc()){return}h=0;m=0;d=c.Kc();o=BD(d.Pb(),19).a;while(h1&&(i=j.mg(i,a.a,h))}if(i.c.length==1){return BD(Ikb(i,i.c.length-1),220)}if(i.c.length==2){return lYc((tCb(0,i.c.length),BD(i.c[0],220)),(tCb(1,i.c.length),BD(i.c[1],220)),g,f)}return null}\nfunction JNb(a){var b,c,d,e,f,g;Hkb(a.a,new PNb);for(c=new olb(a.a);c.a=$wnd.Math.abs(d.b)){d.b=0;f.d+f.a>g.d&&f.dg.c&&f.c0){b=new _zd(a.i,a.g);c=a.i;f=c<100?null:new Ixd(c);if(a.ij()){for(d=0;d0){h=a.g;j=a.i;oud(a);f=j<100?null:new Ixd(j);for(d=0;d>13|(a.m&15)<<9;e=a.m>>4&8191;f=a.m>>17|(a.h&255)<<5;g=(a.h&1048320)>>8;h=b.l&8191;i=b.l>>13|(b.m&15)<<9;j=b.m>>4&8191;k=b.m>>17|(b.h&255)<<5;l=(b.h&1048320)>>8;B=c*h;C=d*h;D=e*h;F=f*h;G=g*h;if(i!=0){C+=c*i;D+=d*i;F+=e*i;G+=f*i}if(j!=0){D+=c*j;F+=d*j;G+=e*j}if(k!=0){F+=c*k;G+=d*k}l!=0&&(G+=c*l);n=B&Eje;o=(C&511)<<13;m=n+o;q=B>>22;r=C>>9;s=(D&262143)<<4;t=(F&31)<<17;p=q+r+s+t;v=D>>18;w=F>>5;A=(G&4095)<<8;u=v+w+A;p+=m>>22;m&=Eje;u+=p>>22;p&=Eje;u&=Fje;return TC(m,p,u)}\nfunction o7b(a){var b,c,d,e,f,g,h;h=BD(Ikb(a.j,0),11);if(h.g.c.length!=0&&h.e.c.length!=0){throw vbb(new Zdb('Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges.'))}if(h.g.c.length!=0){f=Pje;for(c=new olb(h.g);c.a4){if(a.wj(b)){if(a.rk()){e=BD(b,49);d=e.Ug();i=d==a.e&&(a.Dk()?e.Og(e.Vg(),a.zk())==a.Ak():-1-e.Vg()==a.aj());if(a.Ek()&&!i&&!d&&!!e.Zg()){for(f=0;f0&&(j=a.n.a/f);break;case 2:case 4:e=a.i.o.b;e>0&&(j=a.n.b/e);}yNb(a,(wtc(),htc),j)}i=a.o;g=a.a;if(d){g.a=d.a;g.b=d.b;a.d=true}else if(b!=bcd&&b!=ccd&&h!=Scd){switch(h.g){case 1:g.a=i.a/2;break;case 2:g.a=i.a;g.b=i.b/2;break;case 3:g.a=i.a/2;g.b=i.b;break;case 4:g.b=i.b/2;}}else{g.a=i.a/2;g.b=i.b/2}}\nfunction vwd(a){var b,c,d,e,f,g,h,i,j,k;if(a.ej()){k=a.Vi();i=a.fj();if(k>0){b=new Aud(a.Gi());c=k;f=c<100?null:new Ixd(c);Cvd(a,c,b.g);e=c==1?a.Zi(4,qud(b,0),null,0,i):a.Zi(6,b,null,-1,i);if(a.bj()){for(d=new Fyd(b);d.e!=d.i.gc();){f=a.dj(Dyd(d),f)}if(!f){a.$i(e)}else{f.Ei(e);f.Fi()}}else{if(!f){a.$i(e)}else{f.Ei(e);f.Fi()}}}else{Cvd(a,a.Vi(),a.Wi());a.$i(a.Zi(6,(mmb(),jmb),null,-1,i))}}else if(a.bj()){k=a.Vi();if(k>0){h=a.Wi();j=k;Cvd(a,k,h);f=j<100?null:new Ixd(j);for(d=0;da.d[g.p]){c+=zHc(a.b,f)*BD(i.b,19).a;Wjb(a.a,meb(f))}}while(!akb(a.a)){xHc(a.b,BD(fkb(a.a),19).a)}}return c}\nfunction eed(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q;l=new g7c(BD(hkd(a,(X7c(),R7c)),8));l.a=$wnd.Math.max(l.a-c.b-c.c,0);l.b=$wnd.Math.max(l.b-c.d-c.a,0);e=ED(hkd(a,L7c));(e==null||(uCb(e),e)<=0)&&(e=1.3);h=new Rkb;for(o=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));o.e!=o.i.gc();){n=BD(Dyd(o),33);g=new xed(n);h.c[h.c.length]=g}m=BD(hkd(a,M7c),311);switch(m.g){case 3:q=bed(h,b,l.a,l.b,(j=d,uCb(e),e,j));break;case 1:q=aed(h,b,l.a,l.b,(k=d,uCb(e),e,k));break;default:q=ced(h,b,l.a,l.b,(i=d,uCb(e),e,i));}f=new wed(q);p=fed(f,b,c,l.a,l.b,d,(uCb(e),e));Afd(a,p.a,p.b,false,true)}\nfunction vkc(a,b){var c,d,e,f;c=b.b;f=new Tkb(c.j);e=0;d=c.j;d.c=KC(SI,Uhe,1,0,5,1);hkc(BD(Si(a.b,(Ucd(),Acd),(Fkc(),Ekc)),15),c);e=ikc(f,e,new blc,d);hkc(BD(Si(a.b,Acd,Dkc),15),c);e=ikc(f,e,new dlc,d);hkc(BD(Si(a.b,Acd,Ckc),15),c);hkc(BD(Si(a.b,zcd,Ekc),15),c);hkc(BD(Si(a.b,zcd,Dkc),15),c);e=ikc(f,e,new flc,d);hkc(BD(Si(a.b,zcd,Ckc),15),c);hkc(BD(Si(a.b,Rcd,Ekc),15),c);e=ikc(f,e,new hlc,d);hkc(BD(Si(a.b,Rcd,Dkc),15),c);e=ikc(f,e,new jlc,d);hkc(BD(Si(a.b,Rcd,Ckc),15),c);hkc(BD(Si(a.b,Tcd,Ekc),15),c);e=ikc(f,e,new Pkc,d);hkc(BD(Si(a.b,Tcd,Dkc),15),c);hkc(BD(Si(a.b,Tcd,Ckc),15),c)}\nfunction nbc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;Odd(b,'Layer size calculation',1);k=Pje;j=Qje;e=false;for(h=new olb(a.b);h.a0.5?(r-=g*2*(o-0.5)):o<0.5&&(r+=f*2*(0.5-o));e=h.d.b;rq.a-p-k&&(r=q.a-p-k);h.n.a=b+r}}\nfunction ced(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q;h=KC(UD,Vje,25,a.c.length,15,1);m=new gub(new Ned);_tb(m,a);j=0;p=new Rkb;while(m.b.c.length!=0){g=BD(m.b.c.length==0?null:Ikb(m.b,0),157);if(j>1&&red(g)*qed(g)/2>h[0]){f=0;while(fh[f]){++f}o=new Jib(p,0,f+1);l=new wed(o);k=red(g)/qed(g);i=fed(l,b,new p0b,c,d,e,k);P6c(X6c(l.e),i);zCb(cub(m,l));n=new Jib(p,f+1,p.c.length);_tb(m,n);p.c=KC(SI,Uhe,1,0,5,1);j=0;Dlb(h,h.length,0)}else{q=m.b.c.length==0?null:Ikb(m.b,0);q!=null&&fub(m,0);j>0&&(h[j]=h[j-1]);h[j]+=red(g)*qed(g);++j;p.c[p.c.length]=g}}return p}\nfunction Wac(a){var b,c,d,e,f;d=BD(vNb(a,(Nyc(),mxc)),163);if(d==(Ctc(),ytc)){for(c=new Sr(ur(R_b(a).a.Kc(),new Sq));Qr(c);){b=BD(Rr(c),17);if(!Yac(b)){throw vbb(new y2c(Fne+P_b(a)+\"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. \"+'FIRST_SEPARATE nodes must not have incoming edges.'))}}}else if(d==Atc){for(f=new Sr(ur(U_b(a).a.Kc(),new Sq));Qr(f);){e=BD(Rr(f),17);if(!Yac(e)){throw vbb(new y2c(Fne+P_b(a)+\"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. \"+'LAST_SEPARATE nodes must not have outgoing edges.'))}}}}\nfunction C9b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;Odd(b,'Label dummy removal',1);d=Edb(ED(vNb(a,(Nyc(),nyc))));e=Edb(ED(vNb(a,ryc)));j=BD(vNb(a,Lwc),103);for(i=new olb(a.b);i.a0&&iCc(a,h,l)}for(e=new olb(l);e.a>19!=0){b=hD(b);i=!i}g=_C(b);f=false;e=false;d=false;if(a.h==Gje&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=SC((wD(),sD));d=true;i=!i}else{h=lD(a,g);i&&ZC(h);c&&(QC=TC(0,0,0));return h}}else if(a.h>>19!=0){f=true;a=hD(a);d=true;i=!i}if(g!=-1){return WC(a,g,i,f,c)}if(eD(a,b)<0){c&&(f?(QC=hD(a)):(QC=TC(a.l,a.m,a.h)));return TC(0,0,0)}return XC(d?a:TC(a.l,a.m,a.h),b,i,f,e,c)}\nfunction F2c(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;if(a.e&&a.c.cb.f||b.g>a.f){return}c=0;d=0;for(g=a.w.a.ec().Kc();g.Ob();){e=BD(g.Pb(),11);aRc(l7c(OC(GC(m1,1),nie,8,0,[e.i.n,e.n,e.a])).b,b.g,b.f)&&++c}for(h=a.r.a.ec().Kc();h.Ob();){e=BD(h.Pb(),11);aRc(l7c(OC(GC(m1,1),nie,8,0,[e.i.n,e.n,e.a])).b,b.g,b.f)&&--c}for(i=b.w.a.ec().Kc();i.Ob();){e=BD(i.Pb(),11);aRc(l7c(OC(GC(m1,1),nie,8,0,[e.i.n,e.n,e.a])).b,a.g,a.f)&&++d}for(f=b.r.a.ec().Kc();f.Ob();){e=BD(f.Pb(),11);aRc(l7c(OC(GC(m1,1),nie,8,0,[e.i.n,e.n,e.a])).b,a.g,a.f)&&--d}if(c=0){f=wid(b,c.substr(1,h-1));l=c.substr(h+1,j-(h+1));return pid(b,l,f)}}else{d=-1;Vcb==null&&(Vcb=new RegExp('\\\\d'));if(Vcb.test(String.fromCharCode(i))){d=lfb(c,wfb(46),j-1);if(d>=0){e=BD(hid(b,Bid(b,c.substr(1,d-1)),false),58);k=0;try{k=Icb(c.substr(d+1),Rie,Ohe)}catch(a){a=ubb(a);if(JD(a,127)){g=a;throw vbb(new rFd(g))}else throw vbb(a)}if(k=0){return c}switch($1d(q1d(a,c))){case 2:{if(dfb('',o1d(a,c.Hj()).ne())){i=b2d(q1d(a,c));h=a2d(q1d(a,c));k=r1d(a,b,i,h);if(k){return k}e=f1d(a,b);for(g=0,l=e.gc();g1){throw vbb(new Wdb(Hwe))}k=S6d(a.e.Tg(),b);d=BD(a.g,119);for(g=0;g1;for(j=new b1b(m.b);llb(j.a)||llb(j.b);){i=BD(llb(j.a)?mlb(j.a):mlb(j.b),17);l=i.c==m?i.d:i.c;$wnd.Math.abs(l7c(OC(GC(m1,1),nie,8,0,[l.i.n,l.n,l.a])).b-g.b)>1&&GNc(a,i,g,f,m)}}}\nfunction XPc(a){var b,c,d,e,f,g;e=new Bib(a.e,0);d=new Bib(a.a,0);if(a.d){for(c=0;cOqe){f=b;g=0;while($wnd.Math.abs(b-f)0);e.a.Xb(e.c=--e.b);WPc(a,a.b-g,f,d,e);sCb(e.b0);d.a.Xb(d.c=--d.b)}if(!a.d){for(c=0;c0){a.f[k.p]=n/(k.e.c.length+k.g.c.length);a.c=$wnd.Math.min(a.c,a.f[k.p]);a.b=$wnd.Math.max(a.b,a.f[k.p])}else h&&(a.f[k.p]=n)}}\nfunction $9d(a){a.b=null;a.bb=null;a.fb=null;a.qb=null;a.a=null;a.c=null;a.d=null;a.e=null;a.f=null;a.n=null;a.M=null;a.L=null;a.Q=null;a.R=null;a.K=null;a.db=null;a.eb=null;a.g=null;a.i=null;a.j=null;a.k=null;a.gb=null;a.o=null;a.p=null;a.q=null;a.r=null;a.$=null;a.ib=null;a.S=null;a.T=null;a.t=null;a.s=null;a.u=null;a.v=null;a.w=null;a.B=null;a.A=null;a.C=null;a.D=null;a.F=null;a.G=null;a.H=null;a.I=null;a.J=null;a.P=null;a.Z=null;a.U=null;a.V=null;a.W=null;a.X=null;a.Y=null;a._=null;a.ab=null;a.cb=null;a.hb=null;a.nb=null;a.lb=null;a.mb=null;a.ob=null;a.pb=null;a.jb=null;a.kb=null;a.N=false;a.O=false}\nfunction l5b(a,b,c){var d,e,f,g;Odd(c,'Graph transformation ('+a.a+')',1);g=Mu(b.a);for(f=new olb(b.b);f.a0){a.a=i+(n-1)*f;b.c.b+=a.a;b.f.b+=a.a}}if(o.a.gc()!=0){m=new tPc(1,f);n=sPc(m,b,o,p,b.f.b+i-b.c.b);n>0&&(b.f.b+=i+(n-1)*f)}}\nfunction kKd(a,b){var c,d,e,f;f=a.F;if(b==null){a.F=null;$Jd(a,null)}else{a.F=(uCb(b),b);d=hfb(b,wfb(60));if(d!=-1){e=b.substr(0,d);hfb(b,wfb(46))==-1&&!dfb(e,Khe)&&!dfb(e,Eve)&&!dfb(e,Fve)&&!dfb(e,Gve)&&!dfb(e,Hve)&&!dfb(e,Ive)&&!dfb(e,Jve)&&!dfb(e,Kve)&&(e=Lve);c=kfb(b,wfb(62));c!=-1&&(e+=''+b.substr(c+1));$Jd(a,e)}else{e=b;if(hfb(b,wfb(46))==-1){d=hfb(b,wfb(91));d!=-1&&(e=b.substr(0,d));if(!dfb(e,Khe)&&!dfb(e,Eve)&&!dfb(e,Fve)&&!dfb(e,Gve)&&!dfb(e,Hve)&&!dfb(e,Ive)&&!dfb(e,Jve)&&!dfb(e,Kve)){e=Lve;d!=-1&&(e+=''+b.substr(d))}else{e=b}}$Jd(a,e);e==b&&(a.F=a.D)}}(a.Db&4)!=0&&(a.Db&1)==0&&Uhd(a,new nSd(a,1,5,f,b))}\nfunction AMc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;p=b.b.c.length;if(p<3){return}n=KC(WD,oje,25,p,15,1);l=0;for(k=new olb(b.b);k.ag)&&Qqb(a.b,BD(q.b,17))}}++h}f=g}}}}\nfunction o5c(b,c){var d;if(c==null||dfb(c,Xhe)){return null}if(c.length==0&&b.k!=(_5c(),W5c)){return null}switch(b.k.g){case 1:return efb(c,kse)?(Bcb(),Acb):efb(c,lse)?(Bcb(),zcb):null;case 2:try{return meb(Icb(c,Rie,Ohe))}catch(a){a=ubb(a);if(JD(a,127)){return null}else throw vbb(a)}case 4:try{return Hcb(c)}catch(a){a=ubb(a);if(JD(a,127)){return null}else throw vbb(a)}case 3:return c;case 5:j5c(b);return m5c(b,c);case 6:j5c(b);return n5c(b,b.a,c);case 7:try{d=l5c(b);d.Jf(c);return d}catch(a){a=ubb(a);if(JD(a,32)){return null}else throw vbb(a)}default:throw vbb(new Zdb('Invalid type set for this layout option.'));}}\nfunction JWb(a){AWb();var b,c,d,e,f,g,h;h=new CWb;for(c=new olb(a);c.a=h.b.c)&&(h.b=b);if(!h.c||b.c<=h.c.c){h.d=h.c;h.c=b}(!h.e||b.d>=h.e.d)&&(h.e=b);(!h.f||b.d<=h.f.d)&&(h.f=b)}d=new NWb((lWb(),hWb));rXb(a,yWb,new amb(OC(GC(bQ,1),Uhe,369,0,[d])));g=new NWb(kWb);rXb(a,xWb,new amb(OC(GC(bQ,1),Uhe,369,0,[g])));e=new NWb(iWb);rXb(a,wWb,new amb(OC(GC(bQ,1),Uhe,369,0,[e])));f=new NWb(jWb);rXb(a,vWb,new amb(OC(GC(bQ,1),Uhe,369,0,[f])));DWb(d.c,hWb);DWb(e.c,iWb);DWb(f.c,jWb);DWb(g.c,kWb);h.a.c=KC(SI,Uhe,1,0,5,1);Gkb(h.a,d.c);Gkb(h.a,Su(e.c));Gkb(h.a,f.c);Gkb(h.a,Su(g.c));return h}\nfunction jxd(a){var b;switch(a.d){case 1:{if(a.hj()){return a.o!=-2}break}case 2:{if(a.hj()){return a.o==-2}break}case 3:case 5:case 4:case 6:case 7:{return a.o>-2}default:{return false}}b=a.gj();switch(a.p){case 0:return b!=null&&Ccb(DD(b))!=Kbb(a.k,0);case 1:return b!=null&&BD(b,217).a!=Tbb(a.k)<<24>>24;case 2:return b!=null&&BD(b,172).a!=(Tbb(a.k)&aje);case 6:return b!=null&&Kbb(BD(b,162).a,a.k);case 5:return b!=null&&BD(b,19).a!=Tbb(a.k);case 7:return b!=null&&BD(b,184).a!=Tbb(a.k)<<16>>16;case 3:return b!=null&&Edb(ED(b))!=a.j;case 4:return b!=null&&BD(b,155).a!=a.j;default:return b==null?a.n!=null:!pb(b,a.n);}}\nfunction nOd(a,b,c){var d,e,f,g;if(a.Fk()&&a.Ek()){g=oOd(a,BD(c,56));if(PD(g)!==PD(c)){a.Oi(b);a.Ui(b,pOd(a,b,g));if(a.rk()){f=(e=BD(c,49),a.Dk()?a.Bk()?e.ih(a.b,zUd(BD(XKd(wjd(a.b),a.aj()),18)).n,BD(XKd(wjd(a.b),a.aj()).Yj(),26).Bj(),null):e.ih(a.b,bLd(e.Tg(),zUd(BD(XKd(wjd(a.b),a.aj()),18))),null,null):e.ih(a.b,-1-a.aj(),null,null));!BD(g,49).eh()&&(f=(d=BD(g,49),a.Dk()?a.Bk()?d.gh(a.b,zUd(BD(XKd(wjd(a.b),a.aj()),18)).n,BD(XKd(wjd(a.b),a.aj()).Yj(),26).Bj(),f):d.gh(a.b,bLd(d.Tg(),zUd(BD(XKd(wjd(a.b),a.aj()),18))),null,f):d.gh(a.b,-1-a.aj(),null,f)));!!f&&f.Fi()}oid(a.b)&&a.$i(a.Zi(9,c,g,b,false));return g}}return c}\nfunction Noc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;k=Edb(ED(vNb(a,(Nyc(),oyc))));d=Edb(ED(vNb(a,Cyc)));m=new _fd;yNb(m,oyc,k+d);j=b;r=j.d;p=j.c.i;s=j.d.i;q=G1b(p.c);t=G1b(s.c);e=new Rkb;for(l=q;l<=t;l++){h=new b0b(a);__b(h,(j0b(),g0b));yNb(h,(wtc(),$sc),j);yNb(h,Vxc,(dcd(),$bd));yNb(h,qyc,m);n=BD(Ikb(a.b,l),29);l==q?Z_b(h,n.a.c.length-c,n):$_b(h,n);u=Edb(ED(vNb(j,Zwc)));if(u<0){u=0;yNb(j,Zwc,u)}h.o.b=u;o=$wnd.Math.floor(u/2);g=new H0b;G0b(g,(Ucd(),Tcd));F0b(g,h);g.n.b=o;i=new H0b;G0b(i,zcd);F0b(i,h);i.n.b=o;RZb(j,g);f=new UZb;tNb(f,j);yNb(f,jxc,null);QZb(f,i);RZb(f,r);Ooc(h,j,f);e.c[e.c.length]=f;j=f}return e}\nfunction sbc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;i=BD(Y_b(a,(Ucd(),Tcd)).Kc().Pb(),11).e;n=BD(Y_b(a,zcd).Kc().Pb(),11).g;h=i.c.length;t=A0b(BD(Ikb(a.j,0),11));while(h-->0){p=(tCb(0,i.c.length),BD(i.c[0],17));e=(tCb(0,n.c.length),BD(n.c[0],17));s=e.d.e;f=Jkb(s,e,0);SZb(p,e.d,f);QZb(e,null);RZb(e,null);o=p.a;b&&Dsb(o,new g7c(t));for(d=Jsb(e.a,0);d.b!=d.d.c;){c=BD(Xsb(d),8);Dsb(o,new g7c(c))}r=p.b;for(m=new olb(e.b);m.a0&&(g=$wnd.Math.max(g,IJb(a.C.b+d.d.b,e)))}else{n=m+k.d.c+a.w+d.d.b;g=$wnd.Math.max(g,(Iy(),My(ple),$wnd.Math.abs(l-e)<=ple||l==e||isNaN(l)&&isNaN(e)?0:n/(e-l)))}k=d;l=e;m=f}if(!!a.C&&a.C.c>0){n=m+a.C.c;j&&(n+=k.d.c);g=$wnd.Math.max(g,(Iy(),My(ple),$wnd.Math.abs(l-1)<=ple||l==1||isNaN(l)&&isNaN(1)?0:n/(1-l)))}c.n.b=0;c.a.a=g}\nfunction NKb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n;c=BD(Mpb(a.b,b),124);i=BD(BD(Qc(a.r,b),21),84);if(i.dc()){c.n.d=0;c.n.a=0;return}j=a.u.Hc((rcd(),ncd));g=0;a.A.Hc((tdd(),sdd))&&SKb(a,b);h=i.Kc();k=null;m=0;l=0;while(h.Ob()){d=BD(h.Pb(),111);f=Edb(ED(d.b.We((CKb(),BKb))));e=d.b.rf().b;if(!k){!!a.C&&a.C.d>0&&(g=$wnd.Math.max(g,IJb(a.C.d+d.d.d,f)))}else{n=l+k.d.a+a.w+d.d.d;g=$wnd.Math.max(g,(Iy(),My(ple),$wnd.Math.abs(m-f)<=ple||m==f||isNaN(m)&&isNaN(f)?0:n/(f-m)))}k=d;m=f;l=e}if(!!a.C&&a.C.a>0){n=l+a.C.a;j&&(n+=k.d.a);g=$wnd.Math.max(g,(Iy(),My(ple),$wnd.Math.abs(m-1)<=ple||m==1||isNaN(m)&&isNaN(1)?0:n/(1-m)))}c.n.d=0;c.a.b=g}\nfunction _Ec(a,b,c){var d,e,f,g,h,i;this.g=a;h=b.d.length;i=c.d.length;this.d=KC(OQ,kne,10,h+i,0,1);for(g=0;g0?ZEc(this,this.f/this.a):REc(b.g,b.d[0]).a!=null&&REc(c.g,c.d[0]).a!=null?ZEc(this,(Edb(REc(b.g,b.d[0]).a)+Edb(REc(c.g,c.d[0]).a))/2):REc(b.g,b.d[0]).a!=null?ZEc(this,REc(b.g,b.d[0]).a):REc(c.g,c.d[0]).a!=null&&ZEc(this,REc(c.g,c.d[0]).a)}\nfunction BUb(a,b){var c,d,e,f,g,h,i,j,k,l;a.a=new dVb(oqb(t1));for(d=new olb(b.a);d.a=1){if(q-g>0&&l>=0){i.n.a+=p;i.n.b+=f*g}else if(q-g<0&&k>=0){i.n.a+=p*q;i.n.b+=f}}}a.o.a=b.a;a.o.b=b.b;yNb(a,(Nyc(),Fxc),(tdd(),d=BD(gdb(I1),9),new xqb(d,BD(_Bb(d,d.length),9),0)))}\nfunction iFd(a,b,c,d,e,f){var g;if(!(b==null||!OEd(b,zEd,AEd))){throw vbb(new Wdb('invalid scheme: '+b))}if(!a&&!(c!=null&&hfb(c,wfb(35))==-1&&c.length>0&&(BCb(0,c.length),c.charCodeAt(0)!=47))){throw vbb(new Wdb('invalid opaquePart: '+c))}if(a&&!(b!=null&&hnb(GEd,b.toLowerCase()))&&!(c==null||!OEd(c,CEd,DEd))){throw vbb(new Wdb(mve+c))}if(a&&b!=null&&hnb(GEd,b.toLowerCase())&&!eFd(c)){throw vbb(new Wdb(mve+c))}if(!fFd(d)){throw vbb(new Wdb('invalid device: '+d))}if(!hFd(e)){g=e==null?'invalid segments: null':'invalid segment: '+VEd(e);throw vbb(new Wdb(g))}if(!(f==null||hfb(f,wfb(35))==-1)){throw vbb(new Wdb('invalid query: '+f))}}\nfunction nVc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;Odd(b,'Calculate Graph Size',1);b.n&&!!a&&Tdd(b,i6d(a),(pgd(),mgd));h=dme;i=dme;f=ere;g=ere;for(l=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));l.e!=l.i.gc();){j=BD(Dyd(l),33);o=j.i;p=j.j;r=j.g;d=j.f;e=BD(hkd(j,(Y9c(),S8c)),142);h=$wnd.Math.min(h,o-e.b);i=$wnd.Math.min(i,p-e.d);f=$wnd.Math.max(f,o+r+e.c);g=$wnd.Math.max(g,p+d+e.a)}n=BD(hkd(a,(Y9c(),f9c)),116);m=new f7c(h-n.b,i-n.d);for(k=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));k.e!=k.i.gc();){j=BD(Dyd(k),33);dld(j,j.i-m.a);eld(j,j.j-m.b)}q=f-h+(n.b+n.c);c=g-i+(n.d+n.a);cld(a,q);ald(a,c);b.n&&!!a&&Tdd(b,i6d(a),(pgd(),mgd))}\nfunction rGb(a){var b,c,d,e,f,g,h,i,j,k;d=new Rkb;for(g=new olb(a.e.a);g.a0){gA(a,c,0);c.a+=String.fromCharCode(d);e=lA(b,f);gA(a,c,e);f+=e-1;continue}if(d==39){if(f+11){p=KC(WD,oje,25,a.b.b.c.length,15,1);l=0;for(j=new olb(a.b.b);j.a=h&&e<=i){if(h<=e&&f<=i){c[k++]=e;c[k++]=f;d+=2}else if(h<=e){c[k++]=e;c[k++]=i;a.b[d]=i+1;g+=2}else if(f<=i){c[k++]=h;c[k++]=f;d+=2}else{c[k++]=h;c[k++]=i;a.b[d]=i+1}}else if(iQie)&&h<10);zVb(a.c,new _Ub);OUb(a);vVb(a.c);yUb(a.f)}\nfunction sZb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(!Ccb(DD(vNb(c,(Nyc(),fxc))))){return}for(h=new olb(c.j);h.a=2){i=Jsb(c,0);g=BD(Xsb(i),8);h=BD(Xsb(i),8);while(h.a0&&jEb(j,true,(ead(),bad));h.k==(j0b(),e0b)&&kEb(j);Rhb(a.f,h,b)}}}\nfunction Bbc(a,b,c){var d,e,f,g,h,i,j,k,l,m;Odd(c,'Node promotion heuristic',1);a.g=b;Abc(a);a.q=BD(vNb(b,(Nyc(),rxc)),260);k=BD(vNb(a.g,qxc),19).a;f=new Jbc;switch(a.q.g){case 2:case 1:Dbc(a,f);break;case 3:a.q=(kAc(),jAc);Dbc(a,f);i=0;for(h=new olb(a.a);h.aa.j){a.q=dAc;Dbc(a,f)}break;case 4:a.q=(kAc(),jAc);Dbc(a,f);j=0;for(e=new olb(a.b);e.aa.k){a.q=gAc;Dbc(a,f)}break;case 6:m=QD($wnd.Math.ceil(a.f.length*k/100));Dbc(a,new Mbc(m));break;case 5:l=QD($wnd.Math.ceil(a.d*k/100));Dbc(a,new Pbc(l));break;default:Dbc(a,f);}Ebc(a,b);Qdd(c)}\nfunction fFc(a,b,c){var d,e,f,g;this.j=a;this.e=WZb(a);this.o=this.j.e;this.i=!!this.o;this.p=this.i?BD(Ikb(c,Q_b(this.o).p),214):null;e=BD(vNb(a,(wtc(),Ksc)),21);this.g=e.Hc((Orc(),Hrc));this.b=new Rkb;this.d=new rHc(this.e);g=BD(vNb(this.j,jtc),230);this.q=wFc(b,g,this.e);this.k=new BGc(this);f=Ou(OC(GC(qY,1),Uhe,225,0,[this,this.d,this.k,this.q]));if(b==(rGc(),oGc)&&!Ccb(DD(vNb(a,(Nyc(),Awc))))){d=new SEc(this.e);f.c[f.c.length]=d;this.c=new uEc(d,g,BD(this.q,402))}else if(b==oGc&&Ccb(DD(vNb(a,(Nyc(),Awc))))){d=new SEc(this.e);f.c[f.c.length]=d;this.c=new XGc(d,g,BD(this.q,402))}else{this.c=new Oic(b,this)}Ekb(f,this.c);$Ic(f,this.e);this.s=AGc(this.k)}\nfunction xUc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;l=BD(pr((g=Jsb((new ZRc(b)).a.d,0),new aSc(g))),86);o=l?BD(vNb(l,(mTc(),_Sc)),86):null;e=1;while(!!l&&!!o){i=0;u=0;c=l;d=o;for(h=0;h=a.i){++a.i;Ekb(a.a,meb(1));Ekb(a.b,k)}else{d=a.c[b.p][1];Nkb(a.a,j,meb(BD(Ikb(a.a,j),19).a+1-d));Nkb(a.b,j,Edb(ED(Ikb(a.b,j)))+k-d*a.e)}(a.q==(kAc(),dAc)&&(BD(Ikb(a.a,j),19).a>a.j||BD(Ikb(a.a,j-1),19).a>a.j)||a.q==gAc&&(Edb(ED(Ikb(a.b,j)))>a.k||Edb(ED(Ikb(a.b,j-1)))>a.k))&&(i=false);for(g=new Sr(ur(R_b(b).a.Kc(),new Sq));Qr(g);){f=BD(Rr(g),17);h=f.c.i;if(a.f[h.p]==j){l=Cbc(a,h);e=e+BD(l.a,19).a;i=i&&Ccb(DD(l.b))}}a.f[b.p]=j;e=e+a.c[b.p][0];return new vgd(meb(e),(Bcb(),i?true:false))}\nfunction sPc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;l=new Lqb;g=new Rkb;qPc(a,c,a.d.fg(),g,l);qPc(a,d,a.d.gg(),g,l);a.b=0.2*(p=rPc(LAb(new YAb(null,new Kub(g,16)),new xPc)),q=rPc(LAb(new YAb(null,new Kub(g,16)),new zPc)),$wnd.Math.min(p,q));f=0;for(h=0;h=2&&(r=WNc(g,true,m),!a.e&&(a.e=new ZOc(a)),VOc(a.e,r,g,a.b),undefined);uPc(g,m);wPc(g);n=-1;for(k=new olb(g);k.ah}\nfunction k6b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;c=BD(vNb(a,(Nyc(),Vxc)),98);g=a.f;f=a.d;h=g.a+f.b+f.c;i=0-f.d-a.c.b;k=g.b+f.d+f.a-a.c.b;j=new Rkb;l=new Rkb;for(e=new olb(b);e.a0),BD(k.a.Xb(k.c=--k.b),17));while(f!=d&&k.b>0){a.a[f.p]=true;a.a[d.p]=true;f=(sCb(k.b>0),BD(k.a.Xb(k.c=--k.b),17))}k.b>0&&uib(k)}}}}\nfunction Vmd(b,c,d){var e,f,g,h,i,j,k,l,m;if(b.a!=c.Aj()){throw vbb(new Wdb(tte+c.ne()+ute))}e=o1d((O6d(),M6d),c).$k();if(e){return e.Aj().Nh().Ih(e,d)}h=o1d(M6d,c).al();if(h){if(d==null){return null}i=BD(d,15);if(i.dc()){return ''}m=new Hfb;for(g=i.Kc();g.Ob();){f=g.Pb();Efb(m,h.Aj().Nh().Ih(h,f));m.a+=' '}return lcb(m,m.a.length-1)}l=o1d(M6d,c).bl();if(!l.dc()){for(k=l.Kc();k.Ob();){j=BD(k.Pb(),148);if(j.wj(d)){try{m=j.Aj().Nh().Ih(j,d);if(m!=null){return m}}catch(a){a=ubb(a);if(!JD(a,102))throw vbb(a)}}}throw vbb(new Wdb(\"Invalid value: '\"+d+\"' for datatype :\"+c.ne()))}BD(c,834).Fj();return d==null?null:JD(d,172)?''+BD(d,172).a:rb(d)==$J?CQd(Pmd[0],BD(d,199)):fcb(d)}\nfunction zQc(a){var b,c,d,e,f,g,h,i,j,k;j=new Psb;h=new Psb;for(f=new olb(a);f.a-1){for(e=Jsb(h,0);e.b!=e.d.c;){d=BD(Xsb(e),128);d.v=g}while(h.b!=0){d=BD(Vt(h,0),128);for(c=new olb(d.i);c.a0){c+=i.n.a+i.o.a/2;++l}for(o=new olb(i.j);o.a0&&(c/=l);r=KC(UD,Vje,25,d.a.c.length,15,1);h=0;for(j=new olb(d.a);j.a=h&&e<=i){if(h<=e&&f<=i){d+=2}else if(h<=e){a.b[d]=i+1;g+=2}else if(f<=i){c[k++]=e;c[k++]=h-1;d+=2}else{c[k++]=e;c[k++]=h-1;a.b[d]=i+1;g+=2}}else if(i0?(e-=86400000):(e+=86400000);i=new gB(wbb(Cbb(b.q.getTime()),e))}k=new Vfb;j=a.a.length;for(f=0;f=97&&d<=122||d>=65&&d<=90){for(g=f+1;g=j){throw vbb(new Wdb(\"Missing trailing '\"))}g+10&&c.c==0){!b&&(b=new Rkb);b.c[b.c.length]=c}}if(b){while(b.c.length!=0){c=BD(Kkb(b,0),233);if(!!c.b&&c.b.c.length>0){for(f=(!c.b&&(c.b=new Rkb),new olb(c.b));f.aJkb(a,c,0)){return new vgd(e,c)}}else if(Edb(REc(e.g,e.d[0]).a)>Edb(REc(c.g,c.d[0]).a)){return new vgd(e,c)}}}for(h=(!c.e&&(c.e=new Rkb),c.e).Kc();h.Ob();){g=BD(h.Pb(),233);i=(!g.b&&(g.b=new Rkb),g.b);wCb(0,i.c.length);aCb(i.c,0,c);g.c==i.c.length&&(b.c[b.c.length]=g,true)}}}return null}\nfunction wlb(a,b){var c,d,e,f,g,h,i,j,k;if(a==null){return Xhe}i=b.a.zc(a,b);if(i!=null){return '[...]'}c=new xwb(She,'[',']');for(e=a,f=0,g=e.length;f=14&&k<=16))){if(b.a._b(d)){!c.a?(c.a=new Wfb(c.d)):Qfb(c.a,c.b);Nfb(c.a,'[...]')}else{h=CD(d);j=new Vqb(b);uwb(c,wlb(h,j))}}else JD(d,177)?uwb(c,Xlb(BD(d,177))):JD(d,190)?uwb(c,Qlb(BD(d,190))):JD(d,195)?uwb(c,Rlb(BD(d,195))):JD(d,2012)?uwb(c,Wlb(BD(d,2012))):JD(d,48)?uwb(c,Ulb(BD(d,48))):JD(d,364)?uwb(c,Vlb(BD(d,364))):JD(d,832)?uwb(c,Tlb(BD(d,832))):JD(d,104)&&uwb(c,Slb(BD(d,104)))}else{uwb(c,d==null?Xhe:fcb(d))}}return !c.a?c.c:c.e.length==0?c.a.a:c.a.a+(''+c.e)}\nfunction xQb(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;h=itd(b,false,false);r=ofd(h);d&&(r=w7c(r));t=Edb(ED(hkd(b,(CPb(),vPb))));q=(sCb(r.b!=0),BD(r.a.a.c,8));l=BD(Ut(r,1),8);if(r.b>2){k=new Rkb;Gkb(k,new Jib(r,1,r.b));f=sQb(k,t+a.a);s=new XOb(f);tNb(s,b);c.c[c.c.length]=s}else{d?(s=BD(Ohb(a.b,jtd(b)),266)):(s=BD(Ohb(a.b,ltd(b)),266))}i=jtd(b);d&&(i=ltd(b));g=zQb(q,i);j=t+a.a;if(g.a){j+=$wnd.Math.abs(q.b-l.b);p=new f7c(l.a,(l.b+q.b)/2)}else{j+=$wnd.Math.abs(q.a-l.a);p=new f7c((l.a+q.a)/2,l.b)}d?Rhb(a.d,b,new ZOb(s,g,p,j)):Rhb(a.c,b,new ZOb(s,g,p,j));Rhb(a.b,b,s);o=(!b.n&&(b.n=new cUd(D2,b,1,7)),b.n);for(n=new Fyd(o);n.e!=n.i.gc();){m=BD(Dyd(n),137);e=wQb(a,m,true,0,0);c.c[c.c.length]=e}}\nfunction wPc(a){var b,c,d,e,f,g,h,i,j,k;j=new Rkb;h=new Rkb;for(g=new olb(a);g.a-1){for(f=new olb(h);f.a0){continue}rOc(i,$wnd.Math.min(i.o,e.o-1));qOc(i,i.i-1);i.i==0&&(h.c[h.c.length]=i,true)}}}}\nfunction QQd(a,b,c){var d,e,f,g,h,i,j;j=a.c;!b&&(b=FQd);a.c=b;if((a.Db&4)!=0&&(a.Db&1)==0){i=new nSd(a,1,2,j,a.c);!c?(c=i):c.Ei(i)}if(j!=b){if(JD(a.Cb,284)){if(a.Db>>16==-10){c=BD(a.Cb,284).nk(b,c)}else if(a.Db>>16==-15){!b&&(b=(jGd(),YFd));!j&&(j=(jGd(),YFd));if(a.Cb.nh()){i=new pSd(a.Cb,1,13,j,b,HLd(QSd(BD(a.Cb,59)),a),false);!c?(c=i):c.Ei(i)}}}else if(JD(a.Cb,88)){if(a.Db>>16==-23){JD(b,88)||(b=(jGd(),_Fd));JD(j,88)||(j=(jGd(),_Fd));if(a.Cb.nh()){i=new pSd(a.Cb,1,10,j,b,HLd(VKd(BD(a.Cb,26)),a),false);!c?(c=i):c.Ei(i)}}}else if(JD(a.Cb,444)){h=BD(a.Cb,836);g=(!h.b&&(h.b=new RYd(new NYd)),h.b);for(f=(d=new nib((new eib(g.a)).a),new ZYd(d));f.a.b;){e=BD(lib(f.a).cd(),87);c=QQd(e,MQd(e,h),c)}}}return c}\nfunction O1b(a,b){var c,d,e,f,g,h,i,j,k,l,m;g=Ccb(DD(hkd(a,(Nyc(),fxc))));m=BD(hkd(a,Yxc),21);i=false;j=false;l=new Fyd((!a.c&&(a.c=new cUd(F2,a,9,9)),a.c));while(l.e!=l.i.gc()&&(!i||!j)){f=BD(Dyd(l),118);h=0;for(e=ul(pl(OC(GC(KI,1),Uhe,20,0,[(!f.d&&(f.d=new y5d(B2,f,8,5)),f.d),(!f.e&&(f.e=new y5d(B2,f,7,4)),f.e)])));Qr(e);){d=BD(Rr(e),79);k=g&&Qld(d)&&Ccb(DD(hkd(d,gxc)));c=ELd((!d.b&&(d.b=new y5d(z2,d,4,7)),d.b),f)?a==Xod(atd(BD(qud((!d.c&&(d.c=new y5d(z2,d,5,8)),d.c),0),82))):a==Xod(atd(BD(qud((!d.b&&(d.b=new y5d(z2,d,4,7)),d.b),0),82)));if(k||c){++h;if(h>1){break}}}h>0?(i=true):m.Hc((rcd(),ncd))&&(!f.n&&(f.n=new cUd(D2,f,1,7)),f.n).i>0&&(i=true);h>1&&(j=true)}i&&b.Fc((Orc(),Hrc));j&&b.Fc((Orc(),Irc))}\nfunction zfd(a){var b,c,d,e,f,g,h,i,j,k,l,m;m=BD(hkd(a,(Y9c(),Y8c)),21);if(m.dc()){return null}h=0;g=0;if(m.Hc((tdd(),rdd))){k=BD(hkd(a,t9c),98);d=2;c=2;e=2;f=2;b=!Xod(a)?BD(hkd(a,z8c),103):BD(hkd(Xod(a),z8c),103);for(j=new Fyd((!a.c&&(a.c=new cUd(F2,a,9,9)),a.c));j.e!=j.i.gc();){i=BD(Dyd(j),118);l=BD(hkd(i,A9c),61);if(l==(Ucd(),Scd)){l=lfd(i,b);jkd(i,A9c,l)}if(k==(dcd(),$bd)){switch(l.g){case 1:d=$wnd.Math.max(d,i.i+i.g);break;case 2:c=$wnd.Math.max(c,i.j+i.f);break;case 3:e=$wnd.Math.max(e,i.i+i.g);break;case 4:f=$wnd.Math.max(f,i.j+i.f);}}else{switch(l.g){case 1:d+=i.g+2;break;case 2:c+=i.f+2;break;case 3:e+=i.g+2;break;case 4:f+=i.f+2;}}}h=$wnd.Math.max(d,e);g=$wnd.Math.max(c,f)}return Afd(a,h,g,true,true)}\nfunction lnc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;s=BD(GAb(VAb(JAb(new YAb(null,new Kub(b.d,16)),new pnc(c)),new rnc(c)),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Dyb)]))),15);l=Ohe;k=Rie;for(i=new olb(b.b.j);i.a0;if(j){if(j){m=r.p;g?++m:--m;l=BD(Ikb(r.c.a,m),10);d=I4b(l);n=!(s6c(d,w,c[0])||n6c(d,w,c[0]))}}else{n=true}}o=false;v=b.D.i;if(!!v&&!!v.c&&h.e){k=g&&v.p>0||!g&&v.p0&&(b.a+=She,b);yfd(BD(Dyd(h),160),b)}b.a+=gne;i=new Oyd((!d.c&&(d.c=new y5d(z2,d,5,8)),d.c));while(i.e!=i.i.gc()){i.e>0&&(b.a+=She,b);yfd(BD(Dyd(i),160),b)}b.a+=')'}}}\nfunction y2b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;f=BD(vNb(a,(wtc(),$sc)),79);if(!f){return}d=a.a;e=new g7c(c);P6c(e,C2b(a));if(f_b(a.d.i,a.c.i)){m=a.c;l=l7c(OC(GC(m1,1),nie,8,0,[m.n,m.a]));c7c(l,c)}else{l=A0b(a.c)}Gsb(d,l,d.a,d.a.a);n=A0b(a.d);vNb(a,utc)!=null&&P6c(n,BD(vNb(a,utc),8));Gsb(d,n,d.c.b,d.c);q7c(d,e);g=itd(f,true,true);kmd(g,BD(qud((!f.b&&(f.b=new y5d(z2,f,4,7)),f.b),0),82));lmd(g,BD(qud((!f.c&&(f.c=new y5d(z2,f,5,8)),f.c),0),82));ifd(d,g);for(k=new olb(a.b);k.a=0){i=null;h=new Bib(k.a,j+1);while(h.bg?1:Ny(isNaN(0),isNaN(g)))<0&&(null,My(Jqe),($wnd.Math.abs(g-1)<=Jqe||g==1||isNaN(g)&&isNaN(1)?0:g<1?-1:g>1?1:Ny(isNaN(g),isNaN(1)))<0)&&(null,My(Jqe),($wnd.Math.abs(0-h)<=Jqe||0==h||isNaN(0)&&isNaN(h)?0:0h?1:Ny(isNaN(0),isNaN(h)))<0)&&(null,My(Jqe),($wnd.Math.abs(h-1)<=Jqe||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:Ny(isNaN(h),isNaN(1)))<0));return f}\nfunction z6d(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;for(l=new usb(new nsb(a));l.b!=l.c.a.d;){k=tsb(l);h=BD(k.d,56);b=BD(k.e,56);g=h.Tg();for(p=0,u=(g.i==null&&TKd(g),g.i).length;p=0&&p=j.c.c.length?(k=JJc((j0b(),h0b),g0b)):(k=JJc((j0b(),g0b),g0b));k*=2;f=c.a.g;c.a.g=$wnd.Math.max(f,f+(k-f));g=c.b.g;c.b.g=$wnd.Math.max(g,g+(k-g));e=b}}}\nfunction VNc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;v=Hx(a);k=new Rkb;h=a.c.length;l=h-1;m=h+1;while(v.a.c!=0){while(c.b!=0){t=(sCb(c.b!=0),BD(Nsb(c,c.a.a),112));Jwb(v.a,t)!=null;t.g=l--;YNc(t,b,c,d)}while(b.b!=0){u=(sCb(b.b!=0),BD(Nsb(b,b.a.a),112));Jwb(v.a,u)!=null;u.g=m++;YNc(u,b,c,d)}j=Rie;for(r=(g=new Ywb((new cxb((new Gjb(v.a)).a)).b),new Njb(g));sib(r.a.a);){q=(f=Wwb(r.a),BD(f.cd(),112));if(!d&&q.b>0&&q.a<=0){k.c=KC(SI,Uhe,1,0,5,1);k.c[k.c.length]=q;break}p=q.i-q.d;if(p>=j){if(p>j){k.c=KC(SI,Uhe,1,0,5,1);j=p}k.c[k.c.length]=q}}if(k.c.length!=0){i=BD(Ikb(k,Bub(e,k.c.length)),112);Jwb(v.a,i)!=null;i.g=m++;YNc(i,b,c,d);k.c=KC(SI,Uhe,1,0,5,1)}}s=a.c.length+1;for(o=new olb(a);o.a0){m.d+=k.n.d;m.d+=k.d}if(m.a>0){m.a+=k.n.a;m.a+=k.d}if(m.b>0){m.b+=k.n.b;m.b+=k.d}if(m.c>0){m.c+=k.n.c;m.c+=k.d}return m}\nfunction d6b(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o;m=c.d;l=c.c;f=new f7c(c.f.a+c.d.b+c.d.c,c.f.b+c.d.d+c.d.a);g=f.b;for(j=new olb(a.a);j.a0){a.c[b.c.p][b.p].d+=Cub(a.i,24)*lke*0.07000000029802322-0.03500000014901161;a.c[b.c.p][b.p].a=a.c[b.c.p][b.p].d/a.c[b.c.p][b.p].b}}\nfunction m5b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(o=new olb(a);o.ad.d;d.d=$wnd.Math.max(d.d,b);if(h&&c){d.d=$wnd.Math.max(d.d,d.a);d.a=d.d+e}break;case 3:c=b>d.a;d.a=$wnd.Math.max(d.a,b);if(h&&c){d.a=$wnd.Math.max(d.a,d.d);d.d=d.a+e}break;case 2:c=b>d.c;d.c=$wnd.Math.max(d.c,b);if(h&&c){d.c=$wnd.Math.max(d.b,d.c);d.b=d.c+e}break;case 4:c=b>d.b;d.b=$wnd.Math.max(d.b,b);if(h&&c){d.b=$wnd.Math.max(d.b,d.c);d.c=d.b+e}}}}}\nfunction l3b(a){var b,c,d,e,f,g,h,i,j,k,l;for(j=new olb(a);j.a0||k.j==Tcd&&k.e.c.length-k.g.c.length<0)){b=false;break}for(e=new olb(k.g);e.a=j&&v>=q){m+=o.n.b+p.n.b+p.a.b-u;++h}}}}if(c){for(g=new olb(s.e);g.a=j&&v>=q){m+=o.n.b+p.n.b+p.a.b-u;++h}}}}}if(h>0){w+=m/h;++n}}if(n>0){b.a=e*w/n;b.g=n}else{b.a=0;b.g=0}}\nfunction oMc(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(e=new olb(a.a.b);e.aQje||b.o==cMc&&k0&&dld(r,u*w);v>0&&eld(r,v*A)}stb(a.b,new CQb);b=new Rkb;for(h=new nib((new eib(a.c)).a);h.b;){g=lib(h);d=BD(g.cd(),79);c=BD(g.dd(),395).a;e=itd(d,false,false);l=oQb(jtd(d),ofd(e),c);ifd(l,e);t=ktd(d);if(!!t&&Jkb(b,t,0)==-1){b.c[b.c.length]=t;pQb(t,(sCb(l.b!=0),BD(l.a.a.c,8)),c)}}for(q=new nib((new eib(a.d)).a);q.b;){p=lib(q);d=BD(p.cd(),79);c=BD(p.dd(),395).a;e=itd(d,false,false);l=oQb(ltd(d),w7c(ofd(e)),c);l=w7c(l);ifd(l,e);t=mtd(d);if(!!t&&Jkb(b,t,0)==-1){b.c[b.c.length]=t;pQb(t,(sCb(l.b!=0),BD(l.c.b.c,8)),c)}}}\nfunction _Vc(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;if(c.c.length!=0){o=new Rkb;for(n=new olb(c);n.a1){n=new ZQc(o,t,d);reb(t,new PQc(a,n));g.c[g.c.length]=n;for(l=t.a.ec().Kc();l.Ob();){k=BD(l.Pb(),46);Lkb(f,k.b)}}if(h.a.gc()>1){n=new ZQc(o,h,d);reb(h,new RQc(a,n));g.c[g.c.length]=n;for(l=h.a.ec().Kc();l.Ob();){k=BD(l.Pb(),46);Lkb(f,k.b)}}}}\nfunction $Wc(a){r4c(a,new E3c(L3c(P3c(M3c(O3c(N3c(new R3c,sre),'ELK Radial'),'A radial layout provider which is based on the algorithm of Peter Eades published in \"Drawing free trees.\", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new bXc),sre)));p4c(a,sre,uqe,Ksd(UWc));p4c(a,sre,wme,Ksd(XWc));p4c(a,sre,Fme,Ksd(NWc));p4c(a,sre,Tme,Ksd(OWc));p4c(a,sre,Eme,Ksd(PWc));p4c(a,sre,Gme,Ksd(MWc));p4c(a,sre,Dme,Ksd(QWc));p4c(a,sre,Hme,Ksd(TWc));p4c(a,sre,ore,Ksd(KWc));p4c(a,sre,nre,Ksd(LWc));p4c(a,sre,rre,Ksd(RWc));p4c(a,sre,lre,Ksd(SWc));p4c(a,sre,mre,Ksd(VWc));p4c(a,sre,pre,Ksd(WWc));p4c(a,sre,qre,Ksd(YWc))}\nfunction LIb(a){var b;this.r=Cy(new OIb,new SIb);this.b=new Rpb(BD(Qb(F1),290));this.p=new Rpb(BD(Qb(F1),290));this.i=new Rpb(BD(Qb(DN),290));this.e=a;this.o=new g7c(a.rf());this.D=a.Df()||Ccb(DD(a.We((Y9c(),M8c))));this.A=BD(a.We((Y9c(),Y8c)),21);this.B=BD(a.We(b9c),21);this.q=BD(a.We(t9c),98);this.u=BD(a.We(x9c),21);if(!ucd(this.u)){throw vbb(new y2c('Invalid port label placement: '+this.u))}this.v=Ccb(DD(a.We(z9c)));this.j=BD(a.We(W8c),21);if(!Jbd(this.j)){throw vbb(new y2c('Invalid node label placement: '+this.j))}this.n=BD(bgd(a,U8c),116);this.k=Edb(ED(bgd(a,Q9c)));this.d=Edb(ED(bgd(a,P9c)));this.w=Edb(ED(bgd(a,X9c)));this.s=Edb(ED(bgd(a,R9c)));this.t=Edb(ED(bgd(a,S9c)));this.C=BD(bgd(a,V9c),142);this.c=2*this.d;b=!this.B.Hc((Idd(),zdd));this.f=new mIb(0,b,0);this.g=new mIb(1,b,0);lIb(this.f,(gHb(),eHb),this.g)}\nfunction Lgd(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;t=0;o=0;n=0;m=1;for(s=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));s.e!=s.i.gc();){q=BD(Dyd(s),33);m+=sr(new Sr(ur(_sd(q).a.Kc(),new Sq)));B=q.g;o=$wnd.Math.max(o,B);l=q.f;n=$wnd.Math.max(n,l);t+=B*l}p=(!a.a&&(a.a=new cUd(E2,a,10,11)),a.a).i;g=t+2*d*d*m*p;f=$wnd.Math.sqrt(g);i=$wnd.Math.max(f*c,o);h=$wnd.Math.max(f/c,n);for(r=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));r.e!=r.i.gc();){q=BD(Dyd(r),33);C=e.b+(Cub(b,26)*ike+Cub(b,27)*jke)*(i-q.g);D=e.b+(Cub(b,26)*ike+Cub(b,27)*jke)*(h-q.f);dld(q,C);eld(q,D)}A=i+(e.b+e.c);w=h+(e.d+e.a);for(v=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));v.e!=v.i.gc();){u=BD(Dyd(v),33);for(k=new Sr(ur(_sd(u).a.Kc(),new Sq));Qr(k);){j=BD(Rr(k),79);Pld(j)||Kgd(j,b,A,w)}}A+=e.b+e.c;w+=e.d+e.a;Afd(a,A,w,false,true)}\nfunction Jcb(a){var b,c,d,e,f,g,h,i,j,k,l;if(a==null){throw vbb(new Oeb(Xhe))}j=a;f=a.length;i=false;if(f>0){b=(BCb(0,a.length),a.charCodeAt(0));if(b==45||b==43){a=a.substr(1);--f;i=b==45}}if(f==0){throw vbb(new Oeb(Oje+j+'\"'))}while(a.length>0&&(BCb(0,a.length),a.charCodeAt(0)==48)){a=a.substr(1);--f}if(f>(Neb(),Leb)[10]){throw vbb(new Oeb(Oje+j+'\"'))}for(e=0;e0){l=-parseInt(a.substr(0,d),10);a=a.substr(d);f-=d;c=false}while(f>=g){d=parseInt(a.substr(0,g),10);a=a.substr(g);f-=g;if(c){c=false}else{if(ybb(l,h)<0){throw vbb(new Oeb(Oje+j+'\"'))}l=Ibb(l,k)}l=Qbb(l,d)}if(ybb(l,0)>0){throw vbb(new Oeb(Oje+j+'\"'))}if(!i){l=Jbb(l);if(ybb(l,0)<0){throw vbb(new Oeb(Oje+j+'\"'))}}return l}\nfunction Z6d(a,b){X6d();var c,d,e,f,g,h,i;this.a=new a7d(this);this.b=a;this.c=b;this.f=c2d(q1d((O6d(),M6d),b));if(this.f.dc()){if((h=t1d(M6d,a))==b){this.e=true;this.d=new Rkb;this.f=new oFd;this.f.Fc(Ewe);BD(V1d(p1d(M6d,bKd(a)),''),26)==a&&this.f.Fc(u1d(M6d,bKd(a)));for(e=g1d(M6d,a).Kc();e.Ob();){d=BD(e.Pb(),170);switch($1d(q1d(M6d,d))){case 4:{this.d.Fc(d);break}case 5:{this.f.Gc(c2d(q1d(M6d,d)));break}}}}else{Q6d();if(BD(b,66).Oj()){this.e=true;this.f=null;this.d=new Rkb;for(g=0,i=(a.i==null&&TKd(a),a.i).length;g=0&&g0&&(BD(Mpb(a.b,b),124).a.b=c)}\nfunction b3b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;Odd(b,'Comment pre-processing',1);c=0;i=new olb(a.a);while(i.a0){j=(BCb(0,c.length),c.charCodeAt(0));if(j!=64){if(j==37){m=c.lastIndexOf('%');k=false;if(m!=0&&(m==n-1||(k=(BCb(m+1,c.length),c.charCodeAt(m+1)==46)))){h=c.substr(1,m-1);u=dfb('%',h)?null:QEd(h);e=0;if(k){try{e=Icb(c.substr(m+2),Rie,Ohe)}catch(a){a=ubb(a);if(JD(a,127)){i=a;throw vbb(new rFd(i))}else throw vbb(a)}}for(r=pRd(b.Wg());r.Ob();){p=MRd(r);if(JD(p,510)){f=BD(p,590);t=f.d;if((u==null?t==null:dfb(u,t))&&e--==0){return f}}}return null}}l=c.lastIndexOf('.');o=l==-1?c:c.substr(0,l);d=0;if(l!=-1){try{d=Icb(c.substr(l+1),Rie,Ohe)}catch(a){a=ubb(a);if(JD(a,127)){o=c}else throw vbb(a)}}o=dfb('%',o)?null:QEd(o);for(q=pRd(b.Wg());q.Ob();){p=MRd(q);if(JD(p,191)){g=BD(p,191);s=g.ne();if((o==null?s==null:dfb(o,s))&&d--==0){return g}}}return null}}return rid(b,c)}\nfunction f6b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;w=new Rkb;for(o=new olb(a.b);o.a=b.length)return {done:true};var a=b[d++];return {value:[a,c.get(a)],done:false}}}};if(!xrb()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype[hke]=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e}\nfunction cde(a){ade();var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a==null)return null;l=a.length*8;if(l==0){return ''}h=l%24;n=l/24|0;m=h!=0?n+1:n;f=null;f=KC(TD,$ie,25,m*4,15,1);j=0;k=0;b=0;c=0;d=0;g=0;e=0;for(i=0;i>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;q=(d&-128)==0?d>>6<<24>>24:(d>>6^252)<<24>>24;f[g++]=_ce[o];f[g++]=_ce[p|j<<4];f[g++]=_ce[k<<2|q];f[g++]=_ce[d&63]}if(h==8){b=a[e];j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;f[g++]=_ce[o];f[g++]=_ce[j<<4];f[g++]=61;f[g++]=61}else if(h==16){b=a[e];c=a[e+1];k=(c&15)<<24>>24;j=(b&3)<<24>>24;o=(b&-128)==0?b>>2<<24>>24:(b>>2^192)<<24>>24;p=(c&-128)==0?c>>4<<24>>24:(c>>4^240)<<24>>24;f[g++]=_ce[o];f[g++]=_ce[p|j<<4];f[g++]=_ce[k<<2];f[g++]=61}return zfb(f,0,f.length)}\nfunction mB(a,b){var c,d,e,f,g,h,i;a.e==0&&a.p>0&&(a.p=-(a.p-1));a.p>Rie&&dB(b,a.p-nje);g=b.q.getDate();ZA(b,1);a.k>=0&&aB(b,a.k);if(a.c>=0){ZA(b,a.c)}else if(a.k>=0){i=new fB(b.q.getFullYear()-nje,b.q.getMonth(),35);d=35-i.q.getDate();ZA(b,$wnd.Math.min(d,g))}else{ZA(b,g)}a.f<0&&(a.f=b.q.getHours());a.b>0&&a.f<12&&(a.f+=12);$A(b,a.f==24&&a.g?0:a.f);a.j>=0&&_A(b,a.j);a.n>=0&&bB(b,a.n);a.i>=0&&cB(b,wbb(Ibb(Abb(Cbb(b.q.getTime()),_ie),_ie),a.i));if(a.a){e=new eB;dB(e,e.q.getFullYear()-nje-80);Gbb(Cbb(b.q.getTime()),Cbb(e.q.getTime()))&&dB(b,e.q.getFullYear()-nje+100)}if(a.d>=0){if(a.c==-1){c=(7+a.d-b.q.getDay())%7;c>3&&(c-=7);h=b.q.getMonth();ZA(b,b.q.getDate()+c);b.q.getMonth()!=h&&ZA(b,b.q.getDate()+(c>0?-7:7))}else{if(b.q.getDay()!=a.d){return false}}}if(a.o>Rie){f=b.q.getTimezoneOffset();cB(b,wbb(Cbb(b.q.getTime()),(a.o-f)*60*_ie))}return true}\nfunction z2b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;e=vNb(b,(wtc(),$sc));if(!JD(e,239)){return}o=BD(e,33);p=b.e;m=new g7c(b.c);f=b.d;m.a+=f.b;m.b+=f.d;u=BD(hkd(o,(Nyc(),Ixc)),174);if(uqb(u,(Idd(),Add))){n=BD(hkd(o,Kxc),116);w_b(n,f.a);z_b(n,f.d);x_b(n,f.b);y_b(n,f.c)}c=new Rkb;for(k=new olb(b.a);k.a0&&Ekb(a.p,k);Ekb(a.o,k)}b-=d;n=i+b;j+=b*a.e;Nkb(a.a,h,meb(n));Nkb(a.b,h,j);a.j=$wnd.Math.max(a.j,n);a.k=$wnd.Math.max(a.k,j);a.d+=b;b+=p}}\nfunction Ucd(){Ucd=ccb;var a;Scd=new Ycd(ole,0);Acd=new Ycd(xle,1);zcd=new Ycd(yle,2);Rcd=new Ycd(zle,3);Tcd=new Ycd(Ale,4);Fcd=(mmb(),new zob((a=BD(gdb(F1),9),new xqb(a,BD(_Bb(a,a.length),9),0))));Gcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[])));Bcd=Up(qqb(zcd,OC(GC(F1,1),bne,61,0,[])));Ocd=Up(qqb(Rcd,OC(GC(F1,1),bne,61,0,[])));Qcd=Up(qqb(Tcd,OC(GC(F1,1),bne,61,0,[])));Lcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[Rcd])));Ecd=Up(qqb(zcd,OC(GC(F1,1),bne,61,0,[Tcd])));Ncd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[Tcd])));Hcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[zcd])));Pcd=Up(qqb(Rcd,OC(GC(F1,1),bne,61,0,[Tcd])));Ccd=Up(qqb(zcd,OC(GC(F1,1),bne,61,0,[Rcd])));Kcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[zcd,Tcd])));Dcd=Up(qqb(zcd,OC(GC(F1,1),bne,61,0,[Rcd,Tcd])));Mcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[Rcd,Tcd])));Icd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[zcd,Rcd])));Jcd=Up(qqb(Acd,OC(GC(F1,1),bne,61,0,[zcd,Rcd,Tcd])))}\nfunction fSc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;if(b.b!=0){n=new Psb;h=null;o=null;d=QD($wnd.Math.floor($wnd.Math.log(b.b)*$wnd.Math.LOG10E)+1);i=0;for(t=Jsb(b,0);t.b!=t.d.c;){r=BD(Xsb(t),86);if(PD(o)!==PD(vNb(r,(mTc(),$Sc)))){o=GD(vNb(r,$Sc));i=0}o!=null?(h=o+iSc(i++,d)):(h=iSc(i++,d));yNb(r,$Sc,h);for(q=(e=Jsb((new ZRc(r)).a.d,0),new aSc(e));Wsb(q.a);){p=BD(Xsb(q.a),188).c;Gsb(n,p,n.c.b,n.c);yNb(p,$Sc,h)}}m=new Lqb;for(g=0;g=i){sCb(r.b>0);r.a.Xb(r.c=--r.b);break}else if(p.a>j){if(!e){Ekb(p.b,l);p.c=$wnd.Math.min(p.c,j);p.a=$wnd.Math.max(p.a,i);e=p}else{Gkb(e.b,p.b);e.a=$wnd.Math.max(e.a,p.a);uib(r)}}}if(!e){e=new TCc;e.c=j;e.a=i;Aib(r,e);Ekb(e.b,l)}}h=b.b;k=0;for(q=new olb(d);q.ah?1:0}if(a.b){a.b._b(f)&&(e=BD(a.b.xc(f),19).a);a.b._b(i)&&(h=BD(a.b.xc(i),19).a)}return eh?1:0}return b.e.c.length!=0&&c.g.c.length!=0?1:-1}\nfunction acc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;Odd(b,Ine,1);p=new Rkb;w=new Rkb;for(j=new olb(a.b);j.a0&&(t-=n);h_b(g,t);k=0;for(m=new olb(g.a);m.a0);h.a.Xb(h.c=--h.b)}i=0.4*d*k;!f&&h.bb.d.c){n=a.c[b.a.d];q=a.c[l.a.d];if(n==q){continue}AFb(DFb(CFb(EFb(BFb(new FFb,1),100),n),q))}}}}}}}\nfunction QEd(a){IEd();var b,c,d,e,f,g,h,i;if(a==null)return null;e=hfb(a,wfb(37));if(e<0){return a}else{i=new Wfb(a.substr(0,e));b=KC(SD,wte,25,4,15,1);h=0;d=0;for(g=a.length;ee+2&&_Ed((BCb(e+1,a.length),a.charCodeAt(e+1)),xEd,yEd)&&_Ed((BCb(e+2,a.length),a.charCodeAt(e+2)),xEd,yEd)){c=dFd((BCb(e+1,a.length),a.charCodeAt(e+1)),(BCb(e+2,a.length),a.charCodeAt(e+2)));e+=2;if(d>0){(c&192)==128?(b[h++]=c<<24>>24):(d=0)}else if(c>=128){if((c&224)==192){b[h++]=c<<24>>24;d=2}else if((c&240)==224){b[h++]=c<<24>>24;d=3}else if((c&248)==240){b[h++]=c<<24>>24;d=4}}if(d>0){if(h==d){switch(h){case 2:{Kfb(i,((b[0]&31)<<6|b[1]&63)&aje);break}case 3:{Kfb(i,((b[0]&15)<<12|(b[1]&63)<<6|b[2]&63)&aje);break}}h=0;d=0}}else{for(f=0;f0){if(g+d>a.length){return false}h=rA(a.substr(0,g+d),b)}else{h=rA(a,b)}}switch(f){case 71:h=oA(a,g,OC(GC(ZI,1),nie,2,6,[pje,qje]),b);e.e=h;return true;case 77:return zA(a,b,e,h,g);case 76:return BA(a,b,e,h,g);case 69:return xA(a,b,g,e);case 99:return AA(a,b,g,e);case 97:h=oA(a,g,OC(GC(ZI,1),nie,2,6,['AM','PM']),b);e.b=h;return true;case 121:return DA(a,b,g,h,c,e);case 100:if(h<=0){return false}e.c=h;return true;case 83:if(h<0){return false}return yA(h,g,b[0],e);case 104:h==12&&(h=0);case 75:case 72:if(h<0){return false}e.f=h;e.g=false;return true;case 107:if(h<0){return false}e.f=h;e.g=true;return true;case 109:if(h<0){return false}e.j=h;return true;case 115:if(h<0){return false}e.n=h;return true;case 90:if(gw&&(o.c=w-o.b);Ekb(g.d,new BLb(o,bLb(g,o)));s=b==Acd?$wnd.Math.max(s,p.b+j.b.rf().b):$wnd.Math.min(s,p.b)}s+=b==Acd?a.t:-a.t;t=cLb((g.e=s,g));t>0&&(BD(Mpb(a.b,b),124).a.b=t);for(k=m.Kc();k.Ob();){j=BD(k.Pb(),111);if(!j.c||j.c.d.c.length<=0){continue}o=j.c.i;o.c-=j.e.a;o.d-=j.e.b}}\nfunction SPb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;b=new Lqb;for(i=new Fyd(a);i.e!=i.i.gc();){h=BD(Dyd(i),33);c=new Tqb;Rhb(OPb,h,c);n=new aQb;e=BD(GAb(new YAb(null,new Lub(new Sr(ur($sd(h).a.Kc(),new Sq)))),Wyb(n,Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[(Fyb(),Dyb)])))),83);RPb(c,BD(e.xc((Bcb(),true)),14),new cQb);d=BD(GAb(JAb(BD(e.xc(false),15).Lc(),new eQb),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[Dyb]))),15);for(g=d.Kc();g.Ob();){f=BD(g.Pb(),79);m=ktd(f);if(m){j=BD(Wd(irb(b.f,m)),21);if(!j){j=UPb(m);jrb(b.f,m,j)}ye(c,j)}}e=BD(GAb(new YAb(null,new Lub(new Sr(ur(_sd(h).a.Kc(),new Sq)))),Wyb(n,Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[Dyb])))),83);RPb(c,BD(e.xc(true),14),new gQb);d=BD(GAb(JAb(BD(e.xc(false),15).Lc(),new iQb),Byb(new fzb,new dzb,new Ezb,OC(GC(xL,1),Kie,132,0,[Dyb]))),15);for(l=d.Kc();l.Ob();){k=BD(l.Pb(),79);m=mtd(k);if(m){j=BD(Wd(irb(b.f,m)),21);if(!j){j=UPb(m);jrb(b.f,m,j)}ye(c,j)}}}}\nfunction rhb(a,b){phb();var c,d,e,f,g,h,i,j,k,l,m,n,o,p;i=ybb(a,0)<0;i&&(a=Jbb(a));if(ybb(a,0)==0){switch(b){case 0:return '0';case 1:return $je;case 2:return '0.00';case 3:return '0.000';case 4:return '0.0000';case 5:return '0.00000';case 6:return '0.000000';default:n=new Ufb;b<0?(n.a+='0E+',n):(n.a+='0E',n);n.a+=b==Rie?'2147483648':''+-b;return n.a;}}k=18;l=KC(TD,$ie,25,k+1,15,1);c=k;p=a;do{j=p;p=Abb(p,10);l[--c]=Tbb(wbb(48,Qbb(j,Ibb(p,10))))&aje}while(ybb(p,0)!=0);e=Qbb(Qbb(Qbb(k,c),b),1);if(b==0){i&&(l[--c]=45);return zfb(l,c,k-c)}if(b>0&&ybb(e,-6)>=0){if(ybb(e,0)>=0){f=c+Tbb(e);for(h=k-1;h>=f;h--){l[h+1]=l[h]}l[++f]=46;i&&(l[--c]=45);return zfb(l,c,k-c+1)}for(g=2;Gbb(g,wbb(Jbb(e),1));g++){l[--c]=48}l[--c]=46;l[--c]=48;i&&(l[--c]=45);return zfb(l,c,k-c)}o=c+1;d=k;m=new Vfb;i&&(m.a+='-',m);if(d-o>=1){Kfb(m,l[c]);m.a+='.';m.a+=zfb(l,c+1,k-c-1)}else{m.a+=zfb(l,c,k-c)}m.a+='E';ybb(e,0)>0&&(m.a+='+',m);m.a+=''+Ubb(e);return m.a}\nfunction iQc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;a.e.a.$b();a.f.a.$b();a.c.c=KC(SI,Uhe,1,0,5,1);a.i.c=KC(SI,Uhe,1,0,5,1);a.g.a.$b();if(b){for(g=new olb(b.a);g.a=1){if(v-j>0&&o>=0){dld(l,l.i+u);eld(l,l.j+i*j)}else if(v-j<0&&n>=0){dld(l,l.i+u*v);eld(l,l.j+i)}}}}jkd(a,(Y9c(),Y8c),(tdd(),f=BD(gdb(I1),9),new xqb(f,BD(_Bb(f,f.length),9),0)));return new f7c(w,k)}\nfunction Yfd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o;n=Xod(atd(BD(qud((!a.b&&(a.b=new y5d(z2,a,4,7)),a.b),0),82)));o=Xod(atd(BD(qud((!a.c&&(a.c=new y5d(z2,a,5,8)),a.c),0),82)));l=n==o;h=new d7c;b=BD(hkd(a,(Zad(),Sad)),74);if(!!b&&b.b>=2){if((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a).i==0){c=(Fhd(),e=new rmd,e);wtd((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a),c)}else if((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a).i>1){m=new Oyd((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a));while(m.e!=m.i.gc()){Eyd(m)}}ifd(b,BD(qud((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a),0),202))}if(l){for(d=new Fyd((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a));d.e!=d.i.gc();){c=BD(Dyd(d),202);for(j=new Fyd((!c.a&&(c.a=new xMd(y2,c,5)),c.a));j.e!=j.i.gc();){i=BD(Dyd(j),469);h.a=$wnd.Math.max(h.a,i.a);h.b=$wnd.Math.max(h.b,i.b)}}}for(g=new Fyd((!a.n&&(a.n=new cUd(D2,a,1,7)),a.n));g.e!=g.i.gc();){f=BD(Dyd(g),137);k=BD(hkd(f,Yad),8);!!k&&bld(f,k.a,k.b);if(l){h.a=$wnd.Math.max(h.a,f.i+f.g);h.b=$wnd.Math.max(h.b,f.j+f.f)}}return h}\nfunction yMc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;t=b.c.length;e=new ULc(a.a,c,null,null);B=KC(UD,Vje,25,t,15,1);p=KC(UD,Vje,25,t,15,1);o=KC(UD,Vje,25,t,15,1);q=0;for(h=0;hB[i]&&(q=i);for(l=new olb(a.a.b);l.an){if(f){Fsb(w,m);Fsb(B,meb(j.b-1))}H=c.b;I+=m+b;m=0;k=$wnd.Math.max(k,c.b+c.c+G)}dld(h,H);eld(h,I);k=$wnd.Math.max(k,H+G+c.c);m=$wnd.Math.max(m,l);H+=G+b}k=$wnd.Math.max(k,d);F=I+m+c.a;if(Fqme;C=$wnd.Math.abs(m.b-o.b)>qme;(!c&&B&&C||c&&(B||C))&&Dsb(q.a,u)}ye(q.a,d);d.b==0?(m=u):(m=(sCb(d.b!=0),BD(d.c.b.c,8)));bZb(n,l,p);if(AZb(e)==A){if(Q_b(A.i)!=e.a){p=new d7c;Y$b(p,Q_b(A.i),s)}yNb(q,utc,p)}cZb(n,q,s);k.a.zc(n,k)}QZb(q,v);RZb(q,A)}for(j=k.a.ec().Kc();j.Ob();){i=BD(j.Pb(),17);QZb(i,null);RZb(i,null)}Qdd(b)}\nfunction KQb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;if(a.gc()==1){return BD(a.Xb(0),231)}else if(a.gc()<=0){return new kRb}for(e=a.Kc();e.Ob();){c=BD(e.Pb(),231);o=0;k=Ohe;l=Ohe;i=Rie;j=Rie;for(n=new olb(c.e);n.ah){t=0;u+=g+r;g=0}JQb(p,c,t,u);b=$wnd.Math.max(b,t+q.a);g=$wnd.Math.max(g,q.b);t+=q.a+r}return p}\nfunction Ioc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;k=new s7c;switch(a.a.g){case 3:m=BD(vNb(b.e,(wtc(),rtc)),15);n=BD(vNb(b.j,rtc),15);o=BD(vNb(b.f,rtc),15);c=BD(vNb(b.e,ptc),15);d=BD(vNb(b.j,ptc),15);e=BD(vNb(b.f,ptc),15);g=new Rkb;Gkb(g,m);n.Jc(new Loc);Gkb(g,JD(n,152)?km(BD(n,152)):JD(n,131)?BD(n,131).a:JD(n,54)?new ov(n):new dv(n));Gkb(g,o);f=new Rkb;Gkb(f,c);Gkb(f,JD(d,152)?km(BD(d,152)):JD(d,131)?BD(d,131).a:JD(d,54)?new ov(d):new dv(d));Gkb(f,e);yNb(b.f,rtc,g);yNb(b.f,ptc,f);yNb(b.f,stc,b.f);yNb(b.e,rtc,null);yNb(b.e,ptc,null);yNb(b.j,rtc,null);yNb(b.j,ptc,null);break;case 1:ye(k,b.e.a);Dsb(k,b.i.n);ye(k,Su(b.j.a));Dsb(k,b.a.n);ye(k,b.f.a);break;default:ye(k,b.e.a);ye(k,Su(b.j.a));ye(k,b.f.a);}Osb(b.f.a);ye(b.f.a,k);QZb(b.f,b.e.c);h=BD(vNb(b.e,(Nyc(),jxc)),74);j=BD(vNb(b.j,jxc),74);i=BD(vNb(b.f,jxc),74);if(!!h||!!j||!!i){l=new s7c;Goc(l,i);Goc(l,j);Goc(l,h);yNb(b.f,jxc,l)}QZb(b.j,null);RZb(b.j,null);QZb(b.e,null);RZb(b.e,null);$_b(b.a,null);$_b(b.i,null);!!b.g&&Ioc(a,b.g)}\nfunction bde(a){ade();var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;if(a==null)return null;f=rfb(a);o=ede(f);if(o%4!=0){return null}p=o/4|0;if(p==0)return KC(SD,wte,25,0,15,1);l=null;b=0;c=0;d=0;e=0;g=0;h=0;i=0;j=0;n=0;m=0;k=0;l=KC(SD,wte,25,p*3,15,1);for(;n>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}if(!dde(g=f[k++])||!dde(h=f[k++])){return null}b=$ce[g];c=$ce[h];i=f[k++];j=f[k++];if($ce[i]==-1||$ce[j]==-1){if(i==61&&j==61){if((c&15)!=0)return null;q=KC(SD,wte,25,n*3+1,15,1);$fb(l,0,q,0,n*3);q[m]=(b<<2|c>>4)<<24>>24;return q}else if(i!=61&&j==61){d=$ce[i];if((d&3)!=0)return null;q=KC(SD,wte,25,n*3+2,15,1);$fb(l,0,q,0,n*3);q[m++]=(b<<2|c>>4)<<24>>24;q[m]=((c&15)<<4|d>>2&15)<<24>>24;return q}else{return null}}else{d=$ce[i];e=$ce[j];l[m++]=(b<<2|c>>4)<<24>>24;l[m++]=((c&15)<<4|d>>2&15)<<24>>24;l[m++]=(d<<6|e)<<24>>24}return l}\nfunction Sbc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;Odd(b,Ine,1);o=BD(vNb(a,(Nyc(),Swc)),218);for(e=new olb(a.b);e.a=2){p=true;m=new olb(f.j);c=BD(mlb(m),11);n=null;while(m.a0){e=BD(Ikb(q.c.a,w-1),10);g=a.i[e.p];B=$wnd.Math.ceil(jBc(a.n,e,q));f=v.a.e-q.d.d-(g.a.e+e.o.b+e.d.a)-B}j=Pje;if(w0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)<0;o=t.a.e.e-t.a.a-(t.b.e.e-t.b.a)<0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)>0;n=t.a.e.e+t.b.aA.b.e.e+A.a.a;u=0;!p&&!o&&(m?f+l>0?(u=l):j-d>0&&(u=d):n&&(f+h>0?(u=h):j-s>0&&(u=s)));v.a.e+=u;v.b&&(v.d.e+=u);return false}\nfunction XGb(a,b,c){var d,e,f,g,h,i,j,k,l,m;d=new J6c(b.qf().a,b.qf().b,b.rf().a,b.rf().b);e=new I6c;if(a.c){for(g=new olb(b.wf());g.aj&&(d.a+=yfb(KC(TD,$ie,25,-j,15,1)));d.a+='Is';if(hfb(i,wfb(32))>=0){for(e=0;e=d.o.b/2}else{s=!l}if(s){r=BD(vNb(d,(wtc(),vtc)),15);if(!r){f=new Rkb;yNb(d,vtc,f)}else if(m){f=r}else{e=BD(vNb(d,tsc),15);if(!e){f=new Rkb;yNb(d,tsc,f)}else{r.gc()<=e.gc()?(f=r):(f=e)}}}else{e=BD(vNb(d,(wtc(),tsc)),15);if(!e){f=new Rkb;yNb(d,tsc,f)}else if(l){f=e}else{r=BD(vNb(d,vtc),15);if(!r){f=new Rkb;yNb(d,vtc,f)}else{e.gc()<=r.gc()?(f=e):(f=r)}}}f.Fc(a);yNb(a,(wtc(),vsc),c);if(b.d==c){RZb(b,null);c.e.c.length+c.g.c.length==0&&F0b(c,null);d3b(c)}else{QZb(b,null);c.e.c.length+c.g.c.length==0&&F0b(c,null)}Osb(b.a)}\nfunction aoc(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;s=new Bib(a.b,0);k=b.Kc();o=0;j=BD(k.Pb(),19).a;v=0;c=new Tqb;A=new zsb;while(s.b=a.a){d=E6b(a,s);k=$wnd.Math.max(k,d.b);u=$wnd.Math.max(u,d.d);Ekb(h,new vgd(s,d))}}B=new Rkb;for(j=0;j0),q.a.Xb(q.c=--q.b),C=new H1b(a.b),Aib(q,C),sCb(q.b0){j=0;!!q&&(j+=h);j+=(C-1)*g;!!t&&(j+=h);B&&!!t&&(j=$wnd.Math.max(j,jQc(t,g,s,A)));if(j0){m=k<100?null:new Ixd(k);j=new Aud(b);o=j.g;r=KC(WD,oje,25,k,15,1);d=0;u=new zud(k);for(e=0;e=0;){if(n!=null?pb(n,o[i]):PD(n)===PD(o[i])){if(r.length<=d){q=r;r=KC(WD,oje,25,2*r.length,15,1);$fb(q,0,r,0,d)}r[d++]=e;wtd(u,o[i]);break v}}n=n;if(PD(n)===PD(h)){break}}}j=u;o=u.g;k=d;if(d>r.length){q=r;r=KC(WD,oje,25,d,15,1);$fb(q,0,r,0,d)}if(d>0){t=true;for(f=0;f=0;){tud(a,r[g])}if(d!=k){for(e=k;--e>=d;){tud(j,e)}q=r;r=KC(WD,oje,25,d,15,1);$fb(q,0,r,0,d)}b=j}}}else{b=Ctd(a,b);for(e=a.i;--e>=0;){if(b.Hc(a.g[e])){tud(a,e);t=true}}}if(t){if(r!=null){c=b.gc();l=c==1?FLd(a,4,b.Kc().Pb(),null,r[0],p):FLd(a,6,b,r,r[0],p);m=c<100?null:new Ixd(c);for(e=b.Kc();e.Ob();){n=e.Pb();m=Q2d(a,BD(n,72),m)}if(!m){Uhd(a.e,l)}else{m.Ei(l);m.Fi()}}else{m=Vxd(b.gc());for(e=b.Kc();e.Ob();){n=e.Pb();m=Q2d(a,BD(n,72),m)}!!m&&m.Fi()}return true}else{return false}}\nfunction fYb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;c=new mYb(b);c.a||$Xb(b);j=ZXb(b);i=new Hp;q=new AYb;for(p=new olb(b.a);p.a0||c.o==dMc&&e0){l=BD(Ikb(m.c.a,g-1),10);B=jBc(a.b,m,l);q=m.n.b-m.d.d-(l.n.b+l.o.b+l.d.a+B)}else{q=m.n.b-m.d.d}j=$wnd.Math.min(q,j);if(gg?Anc(a,b,c):Anc(a,c,b);return eg?1:0}}d=BD(vNb(b,(wtc(),Zsc)),19).a;f=BD(vNb(c,Zsc),19).a;d>f?Anc(a,b,c):Anc(a,c,b);return df?1:0}\nfunction u2c(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;if(Ccb(DD(hkd(b,(Y9c(),d9c))))){return mmb(),mmb(),jmb}j=(!b.a&&(b.a=new cUd(E2,b,10,11)),b.a).i!=0;l=s2c(b);k=!l.dc();if(j||k){e=BD(hkd(b,F9c),149);if(!e){throw vbb(new y2c('Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout.'))}s=D3c(e,(Csd(),ysd));q2c(b);if(!j&&k&&!s){return mmb(),mmb(),jmb}i=new Rkb;if(PD(hkd(b,J8c))===PD((hbd(),ebd))&&(D3c(e,vsd)||D3c(e,usd))){n=p2c(a,b);o=new Psb;ye(o,(!b.a&&(b.a=new cUd(E2,b,10,11)),b.a));while(o.b!=0){m=BD(o.b==0?null:(sCb(o.b!=0),Nsb(o,o.a.a)),33);q2c(m);r=PD(hkd(m,J8c))===PD(gbd);if(r||ikd(m,o8c)&&!C3c(e,hkd(m,F9c))){h=u2c(a,m,c,d);Gkb(i,h);jkd(m,J8c,gbd);hfd(m)}else{ye(o,(!m.a&&(m.a=new cUd(E2,m,10,11)),m.a))}}}else{n=(!b.a&&(b.a=new cUd(E2,b,10,11)),b.a).i;for(g=new Fyd((!b.a&&(b.a=new cUd(E2,b,10,11)),b.a));g.e!=g.i.gc();){f=BD(Dyd(g),33);h=u2c(a,f,c,d);Gkb(i,h);hfd(f)}}for(q=new olb(i);q.a=0?(n=Zcd(h)):(n=Wcd(Zcd(h)));a.Ye($xc,n)}j=new d7c;m=false;if(a.Xe(Txc)){a7c(j,BD(a.We(Txc),8));m=true}else{_6c(j,g.a/2,g.b/2)}switch(n.g){case 4:yNb(k,mxc,(Ctc(),ytc));yNb(k,Bsc,(Gqc(),Fqc));k.o.b=g.b;p<0&&(k.o.a=-p);G0b(l,(Ucd(),zcd));m||(j.a=g.a);j.a-=g.a;break;case 2:yNb(k,mxc,(Ctc(),Atc));yNb(k,Bsc,(Gqc(),Dqc));k.o.b=g.b;p<0&&(k.o.a=-p);G0b(l,(Ucd(),Tcd));m||(j.a=0);break;case 1:yNb(k,Osc,(esc(),dsc));k.o.a=g.a;p<0&&(k.o.b=-p);G0b(l,(Ucd(),Rcd));m||(j.b=g.b);j.b-=g.b;break;case 3:yNb(k,Osc,(esc(),bsc));k.o.a=g.a;p<0&&(k.o.b=-p);G0b(l,(Ucd(),Acd));m||(j.b=0);}a7c(l.n,j);yNb(k,Txc,j);if(b==Zbd||b==_bd||b==$bd){o=0;if(b==Zbd&&a.Xe(Wxc)){switch(n.g){case 1:case 2:o=BD(a.We(Wxc),19).a;break;case 3:case 4:o=-BD(a.We(Wxc),19).a;}}else{switch(n.g){case 4:case 2:o=f.b;b==_bd&&(o/=e.b);break;case 1:case 3:o=f.a;b==_bd&&(o/=e.a);}}yNb(k,htc,o)}yNb(k,Hsc,n);return k}\nfunction AGc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;c=Edb(ED(vNb(a.a.j,(Nyc(),Ewc))));if(c<-1||!a.a.i||ecd(BD(vNb(a.a.o,Vxc),98))||V_b(a.a.o,(Ucd(),zcd)).gc()<2&&V_b(a.a.o,Tcd).gc()<2){return true}if(a.a.c.Rf()){return false}v=0;u=0;t=new Rkb;for(i=a.a.e,j=0,k=i.length;j=c}\nfunction ovd(){mvd();function h(f){var g=this;this.dispatch=function(a){var b=a.data;switch(b.cmd){case 'algorithms':var c=pvd((mmb(),new lnb(new $ib(lvd.b))));f.postMessage({id:b.id,data:c});break;case 'categories':var d=pvd((mmb(),new lnb(new $ib(lvd.c))));f.postMessage({id:b.id,data:d});break;case 'options':var e=pvd((mmb(),new lnb(new $ib(lvd.d))));f.postMessage({id:b.id,data:e});break;case 'register':svd(b.algorithms);f.postMessage({id:b.id});break;case 'layout':qvd(b.graph,b.layoutOptions||{},b.options||{});f.postMessage({id:b.id,data:b.graph});break;}};this.saveDispatch=function(b){try{g.dispatch(b)}catch(a){f.postMessage({id:b.data.id,error:a})}}}\nfunction j(b){var c=this;this.dispatcher=new h({postMessage:function(a){c.onmessage({data:a})}});this.postMessage=function(a){setTimeout(function(){c.dispatcher.saveDispatch({data:a})},0)}}\nif(typeof document===uke&&typeof self!==uke){var i=new h(self);self.onmessage=i.saveDispatch}else if(typeof module!==uke&&module.exports){Object.defineProperty(exports,'__esModule',{value:true});module.exports={'default':j,Worker:j}}}\nfunction aae(a){if(a.N)return;a.N=true;a.b=Lnd(a,0);Knd(a.b,0);Knd(a.b,1);Knd(a.b,2);a.bb=Lnd(a,1);Knd(a.bb,0);Knd(a.bb,1);a.fb=Lnd(a,2);Knd(a.fb,3);Knd(a.fb,4);Qnd(a.fb,5);a.qb=Lnd(a,3);Knd(a.qb,0);Qnd(a.qb,1);Qnd(a.qb,2);Knd(a.qb,3);Knd(a.qb,4);Qnd(a.qb,5);Knd(a.qb,6);a.a=Mnd(a,4);a.c=Mnd(a,5);a.d=Mnd(a,6);a.e=Mnd(a,7);a.f=Mnd(a,8);a.g=Mnd(a,9);a.i=Mnd(a,10);a.j=Mnd(a,11);a.k=Mnd(a,12);a.n=Mnd(a,13);a.o=Mnd(a,14);a.p=Mnd(a,15);a.q=Mnd(a,16);a.s=Mnd(a,17);a.r=Mnd(a,18);a.t=Mnd(a,19);a.u=Mnd(a,20);a.v=Mnd(a,21);a.w=Mnd(a,22);a.B=Mnd(a,23);a.A=Mnd(a,24);a.C=Mnd(a,25);a.D=Mnd(a,26);a.F=Mnd(a,27);a.G=Mnd(a,28);a.H=Mnd(a,29);a.J=Mnd(a,30);a.I=Mnd(a,31);a.K=Mnd(a,32);a.M=Mnd(a,33);a.L=Mnd(a,34);a.P=Mnd(a,35);a.Q=Mnd(a,36);a.R=Mnd(a,37);a.S=Mnd(a,38);a.T=Mnd(a,39);a.U=Mnd(a,40);a.V=Mnd(a,41);a.X=Mnd(a,42);a.W=Mnd(a,43);a.Y=Mnd(a,44);a.Z=Mnd(a,45);a.$=Mnd(a,46);a._=Mnd(a,47);a.ab=Mnd(a,48);a.cb=Mnd(a,49);a.db=Mnd(a,50);a.eb=Mnd(a,51);a.gb=Mnd(a,52);a.hb=Mnd(a,53);a.ib=Mnd(a,54);a.jb=Mnd(a,55);a.kb=Mnd(a,56);a.lb=Mnd(a,57);a.mb=Mnd(a,58);a.nb=Mnd(a,59);a.ob=Mnd(a,60);a.pb=Mnd(a,61)}\nfunction f5b(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;s=0;if(b.f.a==0){for(q=new olb(a);q.aj&&(tCb(j,b.c.length),BD(b.c[j],200)).a.c.length==0){Lkb(b,(tCb(j,b.c.length),b.c[j]))}}if(!i){--f;continue}if(uZc(b,k,e,i,m,c,j,d)){l=true;continue}if(m){if(vZc(b,k,e,i,c,j,d)){l=true;continue}else if(wZc(k,e)){e.c=true;l=true;continue}}else if(wZc(k,e)){e.c=true;l=true;continue}if(l){continue}}if(wZc(k,e)){e.c=true;l=true;!!i&&(i.k=false);continue}else{a$c(e.q)}}return l}\nfunction fed(a,b,c,d,e,f,g){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;p=0;D=0;for(j=new olb(a.b);j.ap){if(f){Fsb(w,n);Fsb(B,meb(k.b-1));Ekb(a.d,o);h.c=KC(SI,Uhe,1,0,5,1)}H=c.b;I+=n+b;n=0;l=$wnd.Math.max(l,c.b+c.c+G)}h.c[h.c.length]=i;ued(i,H,I);l=$wnd.Math.max(l,H+G+c.c);n=$wnd.Math.max(n,m);H+=G+b;o=i}Gkb(a.a,h);Ekb(a.d,BD(Ikb(h,h.c.length-1),157));l=$wnd.Math.max(l,d);F=I+n+c.a;if(F1&&(g=$wnd.Math.min(g,$wnd.Math.abs(BD(Ut(h.a,1),8).b-k.b)))}}}}}else{for(p=new olb(b.j);p.ae){f=m.a-e;g=Ohe;d.c=KC(SI,Uhe,1,0,5,1);e=m.a}if(m.a>=e){d.c[d.c.length]=h;h.a.b>1&&(g=$wnd.Math.min(g,$wnd.Math.abs(BD(Ut(h.a,h.a.b-2),8).b-m.b)))}}}}}if(d.c.length!=0&&f>b.o.a/2&&g>b.o.b/2){n=new H0b;F0b(n,b);G0b(n,(Ucd(),Acd));n.n.a=b.o.a/2;r=new H0b;F0b(r,b);G0b(r,Rcd);r.n.a=b.o.a/2;r.n.b=b.o.b;for(i=new olb(d);i.a=j.b?QZb(h,r):QZb(h,n)}else{j=BD(Msb(h.a),8);q=h.a.b==0?A0b(h.c):BD(Isb(h.a),8);q.b>=j.b?RZb(h,r):RZb(h,n)}l=BD(vNb(h,(Nyc(),jxc)),74);!!l&&ze(l,j,true)}b.n.a=e-b.o.a/2}}\nfunction erd(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K;D=null;G=b;F=Rqd(a,dtd(c),G);Lkd(F,_pd(G,Vte));H=BD(oo(a.g,Vpd(aC(G,Cte))),33);m=aC(G,'sourcePort');d=null;!!m&&(d=Vpd(m));I=BD(oo(a.j,d),118);if(!H){h=Wpd(G);o=\"An edge must have a source node (edge id: '\"+h;p=o+$te;throw vbb(new cqd(p))}if(!!I&&!Hb(mpd(I),H)){i=_pd(G,Vte);q=\"The source port of an edge must be a port of the edge's source node (edge id: '\"+i;r=q+$te;throw vbb(new cqd(r))}B=(!F.b&&(F.b=new y5d(z2,F,4,7)),F.b);f=null;I?(f=I):(f=H);wtd(B,f);J=BD(oo(a.g,Vpd(aC(G,bue))),33);n=aC(G,'targetPort');e=null;!!n&&(e=Vpd(n));K=BD(oo(a.j,e),118);if(!J){l=Wpd(G);s=\"An edge must have a target node (edge id: '\"+l;t=s+$te;throw vbb(new cqd(t))}if(!!K&&!Hb(mpd(K),J)){j=_pd(G,Vte);u=\"The target port of an edge must be a port of the edge's target node (edge id: '\"+j;v=u+$te;throw vbb(new cqd(v))}C=(!F.c&&(F.c=new y5d(z2,F,5,8)),F.c);g=null;K?(g=K):(g=J);wtd(C,g);if((!F.b&&(F.b=new y5d(z2,F,4,7)),F.b).i==0||(!F.c&&(F.c=new y5d(z2,F,5,8)),F.c).i==0){k=_pd(G,Vte);w=Zte+k;A=w+$te;throw vbb(new cqd(A))}grd(G,F);frd(G,F);D=crd(a,G,F);return D}\nfunction DXb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;l=FXb(zXb(a,(Ucd(),Fcd)),b);o=EXb(zXb(a,Gcd),b);u=EXb(zXb(a,Ocd),b);B=GXb(zXb(a,Qcd),b);m=GXb(zXb(a,Bcd),b);s=EXb(zXb(a,Ncd),b);p=EXb(zXb(a,Hcd),b);w=EXb(zXb(a,Pcd),b);v=EXb(zXb(a,Ccd),b);C=GXb(zXb(a,Ecd),b);r=EXb(zXb(a,Lcd),b);t=EXb(zXb(a,Kcd),b);A=EXb(zXb(a,Dcd),b);D=GXb(zXb(a,Mcd),b);n=GXb(zXb(a,Icd),b);q=EXb(zXb(a,Jcd),b);c=w6c(OC(GC(UD,1),Vje,25,15,[s.a,B.a,w.a,D.a]));d=w6c(OC(GC(UD,1),Vje,25,15,[o.a,l.a,u.a,q.a]));e=r.a;f=w6c(OC(GC(UD,1),Vje,25,15,[p.a,m.a,v.a,n.a]));j=w6c(OC(GC(UD,1),Vje,25,15,[s.b,o.b,p.b,t.b]));i=w6c(OC(GC(UD,1),Vje,25,15,[B.b,l.b,m.b,q.b]));k=C.b;h=w6c(OC(GC(UD,1),Vje,25,15,[w.b,u.b,v.b,A.b]));vXb(zXb(a,Fcd),c+e,j+k);vXb(zXb(a,Jcd),c+e,j+k);vXb(zXb(a,Gcd),c+e,0);vXb(zXb(a,Ocd),c+e,j+k+i);vXb(zXb(a,Qcd),0,j+k);vXb(zXb(a,Bcd),c+e+d,j+k);vXb(zXb(a,Hcd),c+e+d,0);vXb(zXb(a,Pcd),0,j+k+i);vXb(zXb(a,Ccd),c+e+d,j+k+i);vXb(zXb(a,Ecd),0,j);vXb(zXb(a,Lcd),c,0);vXb(zXb(a,Dcd),0,j+k+i);vXb(zXb(a,Icd),c+e+d,0);g=new d7c;g.a=w6c(OC(GC(UD,1),Vje,25,15,[c+d+e+f,C.a,t.a,A.a]));g.b=w6c(OC(GC(UD,1),Vje,25,15,[j+i+k+h,r.b,D.b,n.b]));return g}\nfunction Ngc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;p=new Rkb;for(m=new olb(a.d.b);m.ae.d.d+e.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}d.b!=d.d.c&&(b=c)}if(k){f=BD(Ohb(a.f,g.d.i),57);if(b.bf.d.d+f.d.a){k.f.d=true}else{k.f.d=true;k.f.a=true}}}}for(h=new Sr(ur(R_b(n).a.Kc(),new Sq));Qr(h);){g=BD(Rr(h),17);if(g.a.b!=0){b=BD(Isb(g.a),8);if(g.d.j==(Ucd(),Acd)){q=new hic(b,new f7c(b.a,e.d.d),e,g);q.f.a=true;q.a=g.d;p.c[p.c.length]=q}if(g.d.j==Rcd){q=new hic(b,new f7c(b.a,e.d.d+e.d.a),e,g);q.f.d=true;q.a=g.d;p.c[p.c.length]=q}}}}}return p}\nfunction WJc(a,b,c){var d,e,f,g,h,i,j,k,l;Odd(c,'Network simplex node placement',1);a.e=b;a.n=BD(vNb(b,(wtc(),otc)),304);VJc(a);HJc(a);MAb(LAb(new YAb(null,new Kub(a.e.b,16)),new KKc),new MKc(a));MAb(JAb(LAb(JAb(LAb(new YAb(null,new Kub(a.e.b,16)),new zLc),new BLc),new DLc),new FLc),new IKc(a));if(Ccb(DD(vNb(a.e,(Nyc(),Axc))))){g=Udd(c,1);Odd(g,'Straight Edges Pre-Processing',1);UJc(a);Qdd(g)}JFb(a.f);f=BD(vNb(b,Ayc),19).a*a.f.a.c.length;uGb(HGb(IGb(LGb(a.f),f),false),Udd(c,1));if(a.d.a.gc()!=0){g=Udd(c,1);Odd(g,'Flexible Where Space Processing',1);h=BD(Btb(RAb(NAb(new YAb(null,new Kub(a.f.a,16)),new OKc),new iKc)),19).a;i=BD(Btb(QAb(NAb(new YAb(null,new Kub(a.f.a,16)),new QKc),new mKc)),19).a;j=i-h;k=nGb(new pGb,a.f);l=nGb(new pGb,a.f);AFb(DFb(CFb(BFb(EFb(new FFb,20000),j),k),l));MAb(JAb(JAb(Plb(a.i),new SKc),new UKc),new WKc(h,k,j,l));for(e=a.d.a.ec().Kc();e.Ob();){d=BD(e.Pb(),213);d.g=1}uGb(HGb(IGb(LGb(a.f),f),false),Udd(g,1));Qdd(g)}if(Ccb(DD(vNb(b,Axc)))){g=Udd(c,1);Odd(g,'Straight Edges Post-Processing',1);TJc(a);Qdd(g)}GJc(a);a.e=null;a.f=null;a.i=null;a.c=null;Uhb(a.k);a.j=null;a.a=null;a.o=null;a.d.a.$b();Qdd(c)}\nfunction lMc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;for(h=new olb(a.a.b);h.a0){d=l.gc();j=QD($wnd.Math.floor((d+1)/2))-1;e=QD($wnd.Math.ceil((d+1)/2))-1;if(b.o==dMc){for(k=e;k>=j;k--){if(b.a[u.p]==u){p=BD(l.Xb(k),46);o=BD(p.a,10);if(!Rqb(c,p.b)&&n>a.b.e[o.p]){b.a[o.p]=u;b.g[u.p]=b.g[o.p];b.a[u.p]=b.g[u.p];b.f[b.g[u.p].p]=(Bcb(),Ccb(b.f[b.g[u.p].p])&u.k==(j0b(),g0b)?true:false);n=a.b.e[o.p]}}}}else{for(k=j;k<=e;k++){if(b.a[u.p]==u){r=BD(l.Xb(k),46);q=BD(r.a,10);if(!Rqb(c,r.b)&&n=o){if(s>o){n.c=KC(SI,Uhe,1,0,5,1);o=s}n.c[n.c.length]=g}}if(n.c.length!=0){m=BD(Ikb(n,Bub(b,n.c.length)),128);F.a.Bc(m)!=null;m.s=p++;AQc(m,C,w);n.c=KC(SI,Uhe,1,0,5,1)}}u=a.c.length+1;for(h=new olb(a);h.aD.s){uib(c);Lkb(D.i,d);if(d.c>0){d.a=D;Ekb(D.t,d);d.b=A;Ekb(A.i,d)}}}}}\nfunction qde(a){var b,c,d,e,f;b=a.c;switch(b){case 11:return a.Ml();case 12:return a.Ol();case 14:return a.Ql();case 15:return a.Tl();case 16:return a.Rl();case 17:return a.Ul();case 21:nde(a);return wfe(),wfe(),ffe;case 10:switch(a.a){case 65:return a.yl();case 90:return a.Dl();case 122:return a.Kl();case 98:return a.El();case 66:return a.zl();case 60:return a.Jl();case 62:return a.Hl();}}f=pde(a);b=a.c;switch(b){case 3:return a.Zl(f);case 4:return a.Xl(f);case 5:return a.Yl(f);case 0:if(a.a==123&&a.d=48&&b<=57){d=b-48;while(e=48&&b<=57){d=d*10+b-48;if(d<0)throw vbb(new mde(tvd((h0d(),bve))))}}else{throw vbb(new mde(tvd((h0d(),Zue))))}c=d;if(b==44){if(e>=a.j){throw vbb(new mde(tvd((h0d(),_ue))))}else if((b=bfb(a.i,e++))>=48&&b<=57){c=b-48;while(e=48&&b<=57){c=c*10+b-48;if(c<0)throw vbb(new mde(tvd((h0d(),bve))))}if(d>c)throw vbb(new mde(tvd((h0d(),ave))))}else{c=-1}}if(b!=125)throw vbb(new mde(tvd((h0d(),$ue))));if(a.sl(e)){f=(wfe(),wfe(),++vfe,new lge(9,f));a.d=e+1}else{f=(wfe(),wfe(),++vfe,new lge(3,f));a.d=e}f.dm(d);f.cm(c);nde(a)}}return f}\nfunction $bc(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F;p=new Skb(b.b);u=new Skb(b.b);m=new Skb(b.b);B=new Skb(b.b);q=new Skb(b.b);for(A=Jsb(b,0);A.b!=A.d.c;){v=BD(Xsb(A),11);for(h=new olb(v.g);h.a0;r=v.g.c.length>0;j&&r?(m.c[m.c.length]=v,true):j?(p.c[p.c.length]=v,true):r&&(u.c[u.c.length]=v,true)}for(o=new olb(p);o.a1){o=new Oyd((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a));while(o.e!=o.i.gc()){Eyd(o)}}g=BD(qud((!a.a&&(a.a=new cUd(A2,a,6,6)),a.a),0),202);q=H;H>v+u?(q=v+u):Hw+p?(r=w+p):Iv-u&&qw-p&&rH+G?(B=H+G):vI+A?(C=I+A):wH-G&&BI-A&&Cc&&(m=c-1);n=N+Cub(b,24)*lke*l-l/2;n<0?(n=1):n>d&&(n=d-1);e=(Fhd(),i=new xkd,i);vkd(e,m);wkd(e,n);wtd((!g.a&&(g.a=new xMd(y2,g,5)),g.a),e)}}\nfunction Nyc(){Nyc=ccb;iyc=(Y9c(),I9c);jyc=J9c;kyc=K9c;lyc=L9c;nyc=M9c;oyc=N9c;ryc=P9c;tyc=R9c;uyc=S9c;syc=Q9c;vyc=T9c;xyc=U9c;zyc=X9c;qyc=O9c;hyc=(jwc(),Bvc);myc=Cvc;pyc=Dvc;wyc=Evc;byc=new Osd(D9c,meb(0));cyc=yvc;dyc=zvc;eyc=Avc;Kyc=awc;Cyc=Hvc;Dyc=Kvc;Gyc=Svc;Eyc=Nvc;Fyc=Pvc;Myc=fwc;Lyc=cwc;Iyc=Yvc;Hyc=Wvc;Jyc=$vc;Cxc=pvc;Dxc=qvc;Xwc=Auc;Ywc=Duc;Lxc=new q0b(12);Kxc=new Osd(f9c,Lxc);Twc=(Aad(),wad);Swc=new Osd(E8c,Twc);Uxc=new Osd(s9c,0);fyc=new Osd(E9c,meb(1));owc=new Osd(r8c,tme);Jxc=d9c;Vxc=t9c;$xc=A9c;Kwc=y8c;mwc=p8c;axc=J8c;gyc=new Osd(H9c,(Bcb(),true));fxc=M8c;gxc=N8c;Fxc=Y8c;Ixc=b9c;Gxc=$8c;Nwc=(ead(),cad);Lwc=new Osd(z8c,Nwc);xxc=W8c;wxc=U8c;Yxc=x9c;Xxc=w9c;Zxc=z9c;Oxc=(Tbd(),Sbd);new Osd(l9c,Oxc);Qxc=o9c;Rxc=p9c;Sxc=q9c;Pxc=n9c;Byc=Gvc;sxc=avc;rxc=$uc;Ayc=Fvc;mxc=Suc;Jwc=muc;Iwc=kuc;Awc=Xtc;Bwc=Ytc;Dwc=buc;Cwc=Ztc;Hwc=iuc;uxc=cvc;vxc=dvc;ixc=Luc;Exc=uvc;zxc=hvc;$wc=Guc;Bxc=nvc;Vwc=wuc;Wwc=yuc;zwc=w8c;yxc=evc;swc=Mtc;rwc=Ktc;qwc=Jtc;cxc=Juc;bxc=Iuc;dxc=Kuc;Hxc=_8c;jxc=Q8c;Zwc=G8c;Qwc=C8c;Pwc=B8c;Ewc=euc;Wxc=v9c;pwc=v8c;exc=L8c;Txc=r9c;Mxc=h9c;Nxc=j9c;oxc=Vuc;pxc=Xuc;ayc=C9c;nwc=Itc;qxc=Zuc;Rwc=suc;Owc=quc;txc=S8c;kxc=Puc;Axc=kvc;yyc=V9c;Mwc=ouc;_xc=wvc;Uwc=uuc;lxc=Ruc;Fwc=guc;hxc=P8c;nxc=Uuc;Gwc=huc;ywc=Vtc;wwc=Stc;uwc=Qtc;vwc=Rtc;xwc=Utc;twc=Otc;_wc=Huc}\nfunction shb(a,b){phb();var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;B=a.e;o=a.d;e=a.a;if(B==0){switch(b){case 0:return '0';case 1:return $je;case 2:return '0.00';case 3:return '0.000';case 4:return '0.0000';case 5:return '0.00000';case 6:return '0.000000';default:w=new Ufb;b<0?(w.a+='0E+',w):(w.a+='0E',w);w.a+=-b;return w.a;}}t=o*10+1+7;u=KC(TD,$ie,25,t+1,15,1);c=t;if(o==1){h=e[0];if(h<0){H=xbb(h,Yje);do{p=H;H=Abb(H,10);u[--c]=48+Tbb(Qbb(p,Ibb(H,10)))&aje}while(ybb(H,0)!=0)}else{H=h;do{p=H;H=H/10|0;u[--c]=48+(p-H*10)&aje}while(H!=0)}}else{D=KC(WD,oje,25,o,15,1);G=o;$fb(e,0,D,0,G);I:while(true){A=0;for(j=G-1;j>=0;j--){F=wbb(Nbb(A,32),xbb(D[j],Yje));r=qhb(F);D[j]=Tbb(r);A=Tbb(Obb(r,32))}s=Tbb(A);q=c;do{u[--c]=48+s%10&aje}while((s=s/10|0)!=0&&c!=0);d=9-q+c;for(i=0;i0;i++){u[--c]=48}l=G-1;for(;D[l]==0;l--){if(l==0){break I}}G=l+1}while(u[c]==48){++c}}n=B<0;g=t-c-b-1;if(b==0){n&&(u[--c]=45);return zfb(u,c,t-c)}if(b>0&&g>=-6){if(g>=0){k=c+g;for(m=t-1;m>=k;m--){u[m+1]=u[m]}u[++k]=46;n&&(u[--c]=45);return zfb(u,c,t-c+1)}for(l=2;l<-g+1;l++){u[--c]=48}u[--c]=46;u[--c]=48;n&&(u[--c]=45);return zfb(u,c,t-c)}C=c+1;f=t;v=new Vfb;n&&(v.a+='-',v);if(f-C>=1){Kfb(v,u[c]);v.a+='.';v.a+=zfb(u,c+1,t-c-1)}else{v.a+=zfb(u,c,t-c)}v.a+='E';g>0&&(v.a+='+',v);v.a+=''+g;return v.a}\nfunction z$c(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;a.c=b;a.g=new Lqb;c=(Pgd(),new bhd(a.c));d=new YGb(c);UGb(d);t=GD(hkd(a.c,(d0c(),Y_c)));i=BD(hkd(a.c,$_c),316);v=BD(hkd(a.c,__c),429);g=BD(hkd(a.c,T_c),482);u=BD(hkd(a.c,Z_c),430);a.j=Edb(ED(hkd(a.c,a0c)));h=a.a;switch(i.g){case 0:h=a.a;break;case 1:h=a.b;break;case 2:h=a.i;break;case 3:h=a.e;break;case 4:h=a.f;break;default:throw vbb(new Wdb(Mre+(i.f!=null?i.f:''+i.g)));}a.d=new g_c(h,v,g);yNb(a.d,(XNb(),VNb),DD(hkd(a.c,V_c)));a.d.c=Ccb(DD(hkd(a.c,U_c)));if(Vod(a.c).i==0){return a.d}for(l=new Fyd(Vod(a.c));l.e!=l.i.gc();){k=BD(Dyd(l),33);n=k.g/2;m=k.f/2;w=new f7c(k.i+n,k.j+m);while(Mhb(a.g,w)){O6c(w,($wnd.Math.random()-0.5)*qme,($wnd.Math.random()-0.5)*qme)}p=BD(hkd(k,(Y9c(),S8c)),142);q=new aOb(w,new J6c(w.a-n-a.j/2-p.b,w.b-m-a.j/2-p.d,k.g+a.j+(p.b+p.c),k.f+a.j+(p.d+p.a)));Ekb(a.d.i,q);Rhb(a.g,w,new vgd(q,k))}switch(u.g){case 0:if(t==null){a.d.d=BD(Ikb(a.d.i,0),65)}else{for(s=new olb(a.d.i);s.a1&&(Gsb(k,r,k.c.b,k.c),true);Zsb(e)}}}r=s}}return k}\nfunction $Bc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L;Odd(c,'Greedy cycle removal',1);t=b.a;L=t.c.length;a.a=KC(WD,oje,25,L,15,1);a.c=KC(WD,oje,25,L,15,1);a.b=KC(WD,oje,25,L,15,1);j=0;for(r=new olb(t);r.a0?G+1:1}for(g=new olb(w.g);g.a0?G+1:1}}a.c[j]==0?Dsb(a.e,p):a.a[j]==0&&Dsb(a.f,p);++j}o=-1;n=1;l=new Rkb;a.d=BD(vNb(b,(wtc(),jtc)),230);while(L>0){while(a.e.b!=0){I=BD(Lsb(a.e),10);a.b[I.p]=o--;_Bc(a,I);--L}while(a.f.b!=0){J=BD(Lsb(a.f),10);a.b[J.p]=n++;_Bc(a,J);--L}if(L>0){m=Rie;for(s=new olb(t);s.a=m){if(u>m){l.c=KC(SI,Uhe,1,0,5,1);m=u}l.c[l.c.length]=p}}}k=a.Zf(l);a.b[k.p]=n++;_Bc(a,k);--L}}H=t.c.length+1;for(j=0;ja.b[K]){PZb(d,true);yNb(b,Asc,(Bcb(),true))}}}}a.a=null;a.c=null;a.b=null;Osb(a.f);Osb(a.e);Qdd(c)}\nfunction sQb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;d=new Rkb;h=new Rkb;q=b/2;n=a.gc();e=BD(a.Xb(0),8);r=BD(a.Xb(1),8);o=tQb(e.a,e.b,r.a,r.b,q);Ekb(d,(tCb(0,o.c.length),BD(o.c[0],8)));Ekb(h,(tCb(1,o.c.length),BD(o.c[1],8)));for(j=2;j=0;i--){Dsb(c,(tCb(i,g.c.length),BD(g.c[i],8)))}return c}\nfunction aFd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n;g=true;l=null;d=null;e=null;b=false;n=BEd;j=null;f=null;h=0;i=UEd(a,h,zEd,AEd);if(i=0&&dfb(a.substr(h,'//'.length),'//')){h+=2;i=UEd(a,h,CEd,DEd);d=a.substr(h,i-h);h=i}else if(l!=null&&(h==a.length||(BCb(h,a.length),a.charCodeAt(h)!=47))){g=false;i=ifb(a,wfb(35),h);i==-1&&(i=a.length);d=a.substr(h,i-h);h=i}if(!c&&h0&&bfb(k,k.length-1)==58){e=k;h=i}}if(h=a.j){a.a=-1;a.c=1;return}b=bfb(a.i,a.d++);a.a=b;if(a.b==1){switch(b){case 92:d=10;if(a.d>=a.j)throw vbb(new mde(tvd((h0d(),uue))));a.a=bfb(a.i,a.d++);break;case 45:if((a.e&512)==512&&a.d=a.j)break;if(bfb(a.i,a.d)!=63)break;if(++a.d>=a.j)throw vbb(new mde(tvd((h0d(),vue))));b=bfb(a.i,a.d++);switch(b){case 58:d=13;break;case 61:d=14;break;case 33:d=15;break;case 91:d=19;break;case 62:d=18;break;case 60:if(a.d>=a.j)throw vbb(new mde(tvd((h0d(),vue))));b=bfb(a.i,a.d++);if(b==61){d=16}else if(b==33){d=17}else throw vbb(new mde(tvd((h0d(),wue))));break;case 35:while(a.d=a.j)throw vbb(new mde(tvd((h0d(),uue))));a.a=bfb(a.i,a.d++);break;default:d=0;}a.c=d}\nfunction P5b(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;A=BD(vNb(a,(Nyc(),Vxc)),98);if(!(A!=(dcd(),bcd)&&A!=ccd)){return}o=a.b;n=o.c.length;k=new Skb((Xj(n+2,Mie),Oy(wbb(wbb(5,n+2),(n+2)/10|0))));p=new Skb((Xj(n+2,Mie),Oy(wbb(wbb(5,n+2),(n+2)/10|0))));Ekb(k,new Lqb);Ekb(k,new Lqb);Ekb(p,new Rkb);Ekb(p,new Rkb);w=new Rkb;for(b=0;b=v||!wCc(r,d))&&(d=yCc(b,k));$_b(r,d);for(f=new Sr(ur(R_b(r).a.Kc(),new Sq));Qr(f);){e=BD(Rr(f),17);if(a.a[e.p]){continue}p=e.c.i;--a.e[p.p];a.e[p.p]==0&&(zCb(cub(n,p)),true)}}for(j=k.c.length-1;j>=0;--j){Ekb(b.b,(tCb(j,k.c.length),BD(k.c[j],29)))}b.a.c=KC(SI,Uhe,1,0,5,1);Qdd(c)}\nfunction gee(a){var b,c,d,e,f,g,h,i,j;a.b=1;nde(a);b=null;if(a.c==0&&a.a==94){nde(a);b=(wfe(),wfe(),++vfe,new $fe(4));Ufe(b,0,lxe);h=(null,++vfe,new $fe(4))}else{h=(wfe(),wfe(),++vfe,new $fe(4))}e=true;while((j=a.c)!=1){if(j==0&&a.a==93&&!e){if(b){Zfe(b,h);h=b}break}c=a.a;d=false;if(j==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:Xfe(h,fee(c));d=true;break;case 105:case 73:case 99:case 67:c=(Xfe(h,fee(c)),-1);c<0&&(d=true);break;case 112:case 80:i=tde(a,c);if(!i)throw vbb(new mde(tvd((h0d(),Iue))));Xfe(h,i);d=true;break;default:c=eee(a);}}else if(j==24&&!e){if(b){Zfe(b,h);h=b}f=gee(a);Zfe(h,f);if(a.c!=0||a.a!=93)throw vbb(new mde(tvd((h0d(),Mue))));break}nde(a);if(!d){if(j==0){if(c==91)throw vbb(new mde(tvd((h0d(),Nue))));if(c==93)throw vbb(new mde(tvd((h0d(),Oue))));if(c==45&&!e&&a.a!=93)throw vbb(new mde(tvd((h0d(),Pue))))}if(a.c!=0||a.a!=45||c==45&&e){Ufe(h,c,c)}else{nde(a);if((j=a.c)==1)throw vbb(new mde(tvd((h0d(),Kue))));if(j==0&&a.a==93){Ufe(h,c,c);Ufe(h,45,45)}else if(j==0&&a.a==93||j==24){throw vbb(new mde(tvd((h0d(),Pue))))}else{g=a.a;if(j==0){if(g==91)throw vbb(new mde(tvd((h0d(),Nue))));if(g==93)throw vbb(new mde(tvd((h0d(),Oue))));if(g==45)throw vbb(new mde(tvd((h0d(),Pue))))}else j==10&&(g=eee(a));nde(a);if(c>g)throw vbb(new mde(tvd((h0d(),Sue))));Ufe(h,c,g)}}}e=false}if(a.c==1)throw vbb(new mde(tvd((h0d(),Kue))));Yfe(h);Vfe(h);a.b=0;nde(a);return h}\nfunction xZd(a){Bnd(a.c,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#decimal']));Bnd(a.d,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#integer']));Bnd(a.e,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#boolean']));Bnd(a.f,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EBoolean',fue,'EBoolean:Object']));Bnd(a.i,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#byte']));Bnd(a.g,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#hexBinary']));Bnd(a.j,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EByte',fue,'EByte:Object']));Bnd(a.n,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EChar',fue,'EChar:Object']));Bnd(a.t,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#double']));Bnd(a.u,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EDouble',fue,'EDouble:Object']));Bnd(a.F,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#float']));Bnd(a.G,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EFloat',fue,'EFloat:Object']));Bnd(a.I,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#int']));Bnd(a.J,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EInt',fue,'EInt:Object']));Bnd(a.N,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#long']));Bnd(a.O,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'ELong',fue,'ELong:Object']));Bnd(a.Z,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#short']));Bnd(a.$,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'EShort',fue,'EShort:Object']));Bnd(a._,Rve,OC(GC(ZI,1),nie,2,6,[cwe,'http://www.w3.org/2001/XMLSchema#string']))}\nfunction fRc(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;if(a.c.length==1){return tCb(0,a.c.length),BD(a.c[0],135)}else if(a.c.length<=0){return new SRc}for(i=new olb(a);i.al){F=0;G+=k+A;k=0}eRc(v,g,F,G);b=$wnd.Math.max(b,F+w.a);k=$wnd.Math.max(k,w.b);F+=w.a+A}u=new Lqb;c=new Lqb;for(C=new olb(a);C.aSLc(f))&&(l=f)}}!l&&(l=(tCb(0,q.c.length),BD(q.c[0],180)));for(p=new olb(b.b);p.a=-1900?1:0;c>=4?Qfb(a,OC(GC(ZI,1),nie,2,6,[pje,qje])[h]):Qfb(a,OC(GC(ZI,1),nie,2,6,['BC','AD'])[h]);break;case 121:kA(a,c,d);break;case 77:jA(a,c,d);break;case 107:i=e.q.getHours();i==0?EA(a,24,c):EA(a,i,c);break;case 83:iA(a,c,e);break;case 69:k=d.q.getDay();c==5?Qfb(a,OC(GC(ZI,1),nie,2,6,['S','M','T','W','T','F','S'])[k]):c==4?Qfb(a,OC(GC(ZI,1),nie,2,6,[rje,sje,tje,uje,vje,wje,xje])[k]):Qfb(a,OC(GC(ZI,1),nie,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[k]);break;case 97:e.q.getHours()>=12&&e.q.getHours()<24?Qfb(a,OC(GC(ZI,1),nie,2,6,['AM','PM'])[1]):Qfb(a,OC(GC(ZI,1),nie,2,6,['AM','PM'])[0]);break;case 104:l=e.q.getHours()%12;l==0?EA(a,12,c):EA(a,l,c);break;case 75:m=e.q.getHours()%12;EA(a,m,c);break;case 72:n=e.q.getHours();EA(a,n,c);break;case 99:o=d.q.getDay();c==5?Qfb(a,OC(GC(ZI,1),nie,2,6,['S','M','T','W','T','F','S'])[o]):c==4?Qfb(a,OC(GC(ZI,1),nie,2,6,[rje,sje,tje,uje,vje,wje,xje])[o]):c==3?Qfb(a,OC(GC(ZI,1),nie,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[o]):EA(a,o,1);break;case 76:p=d.q.getMonth();c==5?Qfb(a,OC(GC(ZI,1),nie,2,6,['J','F','M','A','M','J','J','A','S','O','N','D'])[p]):c==4?Qfb(a,OC(GC(ZI,1),nie,2,6,[bje,cje,dje,eje,fje,gje,hje,ije,jje,kje,lje,mje])[p]):c==3?Qfb(a,OC(GC(ZI,1),nie,2,6,['Jan','Feb','Mar','Apr',fje,'Jun','Jul','Aug','Sep','Oct','Nov','Dec'])[p]):EA(a,p+1,c);break;case 81:q=d.q.getMonth()/3|0;c<4?Qfb(a,OC(GC(ZI,1),nie,2,6,['Q1','Q2','Q3','Q4'])[q]):Qfb(a,OC(GC(ZI,1),nie,2,6,['1st quarter','2nd quarter','3rd quarter','4th quarter'])[q]);break;case 100:r=d.q.getDate();EA(a,r,c);break;case 109:j=e.q.getMinutes();EA(a,j,c);break;case 115:g=e.q.getSeconds();EA(a,g,c);break;case 122:c<4?Qfb(a,f.c[0]):Qfb(a,f.c[1]);break;case 118:Qfb(a,f.b);break;case 90:c<3?Qfb(a,OA(f)):c==3?Qfb(a,NA(f)):Qfb(a,QA(f.a));break;default:return false;}return true}\nfunction X1b(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H;N1b(b);i=BD(qud((!b.b&&(b.b=new y5d(z2,b,4,7)),b.b),0),82);k=BD(qud((!b.c&&(b.c=new y5d(z2,b,5,8)),b.c),0),82);h=atd(i);j=atd(k);g=(!b.a&&(b.a=new cUd(A2,b,6,6)),b.a).i==0?null:BD(qud((!b.a&&(b.a=new cUd(A2,b,6,6)),b.a),0),202);A=BD(Ohb(a.a,h),10);F=BD(Ohb(a.a,j),10);B=null;G=null;if(JD(i,186)){w=BD(Ohb(a.a,i),299);if(JD(w,11)){B=BD(w,11)}else if(JD(w,10)){A=BD(w,10);B=BD(Ikb(A.j,0),11)}}if(JD(k,186)){D=BD(Ohb(a.a,k),299);if(JD(D,11)){G=BD(D,11)}else if(JD(D,10)){F=BD(D,10);G=BD(Ikb(F.j,0),11)}}if(!A||!F){throw vbb(new z2c('The source or the target of edge '+b+' could not be found. '+'This usually happens when an edge connects a node laid out by ELK Layered to a node in '+'another level of hierarchy laid out by either another instance of ELK Layered or another '+'layout algorithm alltogether. The former can be solved by setting the hierarchyHandling '+'option to INCLUDE_CHILDREN.'))}p=new UZb;tNb(p,b);yNb(p,(wtc(),$sc),b);yNb(p,(Nyc(),jxc),null);n=BD(vNb(d,Ksc),21);A==F&&n.Fc((Orc(),Nrc));if(!B){v=(KAc(),IAc);C=null;if(!!g&&fcd(BD(vNb(A,Vxc),98))){C=new f7c(g.j,g.k);Bfd(C,Mld(b));Cfd(C,c);if(ntd(j,h)){v=HAc;P6c(C,A.n)}}B=$$b(A,C,v,d)}if(!G){v=(KAc(),HAc);H=null;if(!!g&&fcd(BD(vNb(F,Vxc),98))){H=new f7c(g.b,g.c);Bfd(H,Mld(b));Cfd(H,c)}G=$$b(F,H,v,Q_b(F))}QZb(p,B);RZb(p,G);(B.e.c.length>1||B.g.c.length>1||G.e.c.length>1||G.g.c.length>1)&&n.Fc((Orc(),Irc));for(m=new Fyd((!b.n&&(b.n=new cUd(D2,b,1,7)),b.n));m.e!=m.i.gc();){l=BD(Dyd(m),137);if(!Ccb(DD(hkd(l,Jxc)))&&!!l.a){q=Z1b(l);Ekb(p.b,q);switch(BD(vNb(q,Qwc),272).g){case 1:case 2:n.Fc((Orc(),Grc));break;case 0:n.Fc((Orc(),Erc));yNb(q,Qwc,(qad(),nad));}}}f=BD(vNb(d,Iwc),314);r=BD(vNb(d,Exc),315);e=f==(Rpc(),Opc)||r==(Vzc(),Rzc);if(!!g&&(!g.a&&(g.a=new xMd(y2,g,5)),g.a).i!=0&&e){s=ofd(g);o=new s7c;for(u=Jsb(s,0);u.b!=u.d.c;){t=BD(Xsb(u),8);Dsb(o,new g7c(t))}yNb(p,_sc,o)}return p}\nfunction yZd(a){if(a.gb)return;a.gb=true;a.b=Lnd(a,0);Knd(a.b,18);Qnd(a.b,19);a.a=Lnd(a,1);Knd(a.a,1);Qnd(a.a,2);Qnd(a.a,3);Qnd(a.a,4);Qnd(a.a,5);a.o=Lnd(a,2);Knd(a.o,8);Knd(a.o,9);Qnd(a.o,10);Qnd(a.o,11);Qnd(a.o,12);Qnd(a.o,13);Qnd(a.o,14);Qnd(a.o,15);Qnd(a.o,16);Qnd(a.o,17);Qnd(a.o,18);Qnd(a.o,19);Qnd(a.o,20);Qnd(a.o,21);Qnd(a.o,22);Qnd(a.o,23);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);Pnd(a.o);a.p=Lnd(a,3);Knd(a.p,2);Knd(a.p,3);Knd(a.p,4);Knd(a.p,5);Qnd(a.p,6);Qnd(a.p,7);Pnd(a.p);Pnd(a.p);a.q=Lnd(a,4);Knd(a.q,8);a.v=Lnd(a,5);Qnd(a.v,9);Pnd(a.v);Pnd(a.v);Pnd(a.v);a.w=Lnd(a,6);Knd(a.w,2);Knd(a.w,3);Knd(a.w,4);Qnd(a.w,5);a.B=Lnd(a,7);Qnd(a.B,1);Pnd(a.B);Pnd(a.B);Pnd(a.B);a.Q=Lnd(a,8);Qnd(a.Q,0);Pnd(a.Q);a.R=Lnd(a,9);Knd(a.R,1);a.S=Lnd(a,10);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);Pnd(a.S);a.T=Lnd(a,11);Qnd(a.T,10);Qnd(a.T,11);Qnd(a.T,12);Qnd(a.T,13);Qnd(a.T,14);Pnd(a.T);Pnd(a.T);a.U=Lnd(a,12);Knd(a.U,2);Knd(a.U,3);Qnd(a.U,4);Qnd(a.U,5);Qnd(a.U,6);Qnd(a.U,7);Pnd(a.U);a.V=Lnd(a,13);Qnd(a.V,10);a.W=Lnd(a,14);Knd(a.W,18);Knd(a.W,19);Knd(a.W,20);Qnd(a.W,21);Qnd(a.W,22);Qnd(a.W,23);a.bb=Lnd(a,15);Knd(a.bb,10);Knd(a.bb,11);Knd(a.bb,12);Knd(a.bb,13);Knd(a.bb,14);Knd(a.bb,15);Knd(a.bb,16);Qnd(a.bb,17);Pnd(a.bb);Pnd(a.bb);a.eb=Lnd(a,16);Knd(a.eb,2);Knd(a.eb,3);Knd(a.eb,4);Knd(a.eb,5);Knd(a.eb,6);Knd(a.eb,7);Qnd(a.eb,8);Qnd(a.eb,9);a.ab=Lnd(a,17);Knd(a.ab,0);Knd(a.ab,1);a.H=Lnd(a,18);Qnd(a.H,0);Qnd(a.H,1);Qnd(a.H,2);Qnd(a.H,3);Qnd(a.H,4);Qnd(a.H,5);Pnd(a.H);a.db=Lnd(a,19);Qnd(a.db,2);a.c=Mnd(a,20);a.d=Mnd(a,21);a.e=Mnd(a,22);a.f=Mnd(a,23);a.i=Mnd(a,24);a.g=Mnd(a,25);a.j=Mnd(a,26);a.k=Mnd(a,27);a.n=Mnd(a,28);a.r=Mnd(a,29);a.s=Mnd(a,30);a.t=Mnd(a,31);a.u=Mnd(a,32);a.fb=Mnd(a,33);a.A=Mnd(a,34);a.C=Mnd(a,35);a.D=Mnd(a,36);a.F=Mnd(a,37);a.G=Mnd(a,38);a.I=Mnd(a,39);a.J=Mnd(a,40);a.L=Mnd(a,41);a.M=Mnd(a,42);a.N=Mnd(a,43);a.O=Mnd(a,44);a.P=Mnd(a,45);a.X=Mnd(a,46);a.Y=Mnd(a,47);a.Z=Mnd(a,48);a.$=Mnd(a,49);a._=Mnd(a,50);a.cb=Mnd(a,51);a.K=Mnd(a,52)}\nfunction Y9c(){Y9c=ccb;var a,b;o8c=new Lsd(sse);F9c=new Lsd(tse);q8c=(F7c(),z7c);p8c=new Nsd($pe,q8c);new Tfd;r8c=new Nsd(_le,null);s8c=new Lsd(use);x8c=(i8c(),qqb(h8c,OC(GC(r1,1),Kie,291,0,[d8c])));w8c=new Nsd(lqe,x8c);y8c=new Nsd(Zpe,(Bcb(),false));A8c=(ead(),cad);z8c=new Nsd(cqe,A8c);F8c=(Aad(),zad);E8c=new Nsd(ype,F8c);I8c=new Nsd(Jre,false);K8c=(hbd(),fbd);J8c=new Nsd(tpe,K8c);g9c=new q0b(12);f9c=new Nsd(ame,g9c);O8c=new Nsd(Ame,false);P8c=new Nsd(xqe,false);e9c=new Nsd(Dme,false);u9c=(dcd(),ccd);t9c=new Nsd(Bme,u9c);C9c=new Lsd(uqe);D9c=new Lsd(vme);E9c=new Lsd(yme);H9c=new Lsd(zme);R8c=new s7c;Q8c=new Nsd(mqe,R8c);v8c=new Nsd(pqe,false);L8c=new Nsd(qqe,false);new Lsd(vse);T8c=new H_b;S8c=new Nsd(vqe,T8c);d9c=new Nsd(Xpe,false);new Tfd;G9c=new Nsd(wse,1);new Nsd(xse,true);meb(0);new Nsd(yse,meb(100));new Nsd(zse,false);meb(0);new Nsd(Ase,meb(4000));meb(0);new Nsd(Bse,meb(400));new Nsd(Cse,false);new Nsd(Dse,false);new Nsd(Ese,true);new Nsd(Fse,false);u8c=(Ded(),Ced);t8c=new Nsd(rse,u8c);I9c=new Nsd(Lpe,10);J9c=new Nsd(Mpe,10);K9c=new Nsd(Zle,20);L9c=new Nsd(Npe,10);M9c=new Nsd(xme,2);N9c=new Nsd(Ope,10);P9c=new Nsd(Ppe,0);Q9c=new Nsd(Spe,5);R9c=new Nsd(Qpe,1);S9c=new Nsd(Rpe,1);T9c=new Nsd(wme,20);U9c=new Nsd(Tpe,10);X9c=new Nsd(Upe,10);O9c=new Lsd(Vpe);W9c=new I_b;V9c=new Nsd(wqe,W9c);j9c=new Lsd(tqe);i9c=false;h9c=new Nsd(sqe,i9c);V8c=new q0b(5);U8c=new Nsd(dqe,V8c);X8c=(Hbd(),b=BD(gdb(B1),9),new xqb(b,BD(_Bb(b,b.length),9),0));W8c=new Nsd(Gme,X8c);m9c=(Tbd(),Qbd);l9c=new Nsd(gqe,m9c);o9c=new Lsd(hqe);p9c=new Lsd(iqe);q9c=new Lsd(jqe);n9c=new Lsd(kqe);Z8c=(a=BD(gdb(I1),9),new xqb(a,BD(_Bb(a,a.length),9),0));Y8c=new Nsd(Fme,Z8c);c9c=pqb((Idd(),Bdd));b9c=new Nsd(Eme,c9c);a9c=new f7c(0,0);_8c=new Nsd(Tme,a9c);$8c=new Nsd(bqe,false);D8c=(qad(),nad);C8c=new Nsd(nqe,D8c);B8c=new Nsd(Cme,false);new Lsd(Gse);meb(1);new Nsd(Hse,null);r9c=new Lsd(rqe);v9c=new Lsd(oqe);B9c=(Ucd(),Scd);A9c=new Nsd(Ype,B9c);s9c=new Lsd(Wpe);y9c=(rcd(),pqb(pcd));x9c=new Nsd(Hme,y9c);w9c=new Nsd(eqe,false);z9c=new Nsd(fqe,true);M8c=new Nsd(_pe,false);N8c=new Nsd(aqe,false);G8c=new Nsd($le,1);H8c=(Mad(),Kad);new Nsd(Ise,H8c);k9c=true}\nfunction wtc(){wtc=ccb;var a,b;$sc=new Lsd(Ime);xsc=new Lsd('coordinateOrigin');itc=new Lsd('processors');wsc=new Msd('compoundNode',(Bcb(),false));Nsc=new Msd('insideConnections',false);_sc=new Lsd('originalBendpoints');atc=new Lsd('originalDummyNodePosition');btc=new Lsd('originalLabelEdge');ktc=new Lsd('representedLabels');Csc=new Lsd('endLabels');Dsc=new Lsd('endLabel.origin');Ssc=new Msd('labelSide',(rbd(),qbd));Ysc=new Msd('maxEdgeThickness',0);ltc=new Msd('reversed',false);jtc=new Lsd(Jme);Vsc=new Msd('longEdgeSource',null);Wsc=new Msd('longEdgeTarget',null);Usc=new Msd('longEdgeHasLabelDummies',false);Tsc=new Msd('longEdgeBeforeLabelDummy',false);Bsc=new Msd('edgeConstraint',(Gqc(),Eqc));Psc=new Lsd('inLayerLayoutUnit');Osc=new Msd('inLayerConstraint',(esc(),csc));Qsc=new Msd('inLayerSuccessorConstraint',new Rkb);Rsc=new Msd('inLayerSuccessorConstraintBetweenNonDummies',false);gtc=new Lsd('portDummy');ysc=new Msd('crossingHint',meb(0));Ksc=new Msd('graphProperties',(b=BD(gdb(PW),9),new xqb(b,BD(_Bb(b,b.length),9),0)));Hsc=new Msd('externalPortSide',(Ucd(),Scd));Isc=new Msd('externalPortSize',new d7c);Fsc=new Lsd('externalPortReplacedDummies');Gsc=new Lsd('externalPortReplacedDummy');Esc=new Msd('externalPortConnections',(a=BD(gdb(F1),9),new xqb(a,BD(_Bb(a,a.length),9),0)));htc=new Msd(tle,0);ssc=new Lsd('barycenterAssociates');vtc=new Lsd('TopSideComments');tsc=new Lsd('BottomSideComments');vsc=new Lsd('CommentConnectionPort');Msc=new Msd('inputCollect',false);etc=new Msd('outputCollect',false);Asc=new Msd('cyclic',false);zsc=new Lsd('crossHierarchyMap');utc=new Lsd('targetOffset');new Msd('splineLabelSize',new d7c);otc=new Lsd('spacings');ftc=new Msd('partitionConstraint',false);usc=new Lsd('breakingPoint.info');stc=new Lsd('splines.survivingEdge');rtc=new Lsd('splines.route.start');ptc=new Lsd('splines.edgeChain');dtc=new Lsd('originalPortConstraints');ntc=new Lsd('selfLoopHolder');qtc=new Lsd('splines.nsPortY');Zsc=new Lsd('modelOrder');Xsc=new Lsd('longEdgeTargetNode');Jsc=new Msd(Xne,false);mtc=new Msd(Xne,false);Lsc=new Lsd('layerConstraints.hiddenNodes');ctc=new Lsd('layerConstraints.opposidePort');ttc=new Lsd('targetNode.modelOrder')}\nfunction jwc(){jwc=ccb;puc=(xqc(),vqc);ouc=new Nsd(Yne,puc);Guc=new Nsd(Zne,(Bcb(),false));Muc=(msc(),ksc);Luc=new Nsd($ne,Muc);cvc=new Nsd(_ne,false);dvc=new Nsd(aoe,true);Itc=new Nsd(boe,false);xvc=(BAc(),zAc);wvc=new Nsd(coe,xvc);meb(1);Fvc=new Nsd(doe,meb(7));Gvc=new Nsd(eoe,false);Huc=new Nsd(foe,false);nuc=(mqc(),iqc);muc=new Nsd(goe,nuc);bvc=(lzc(),jzc);avc=new Nsd(hoe,bvc);Tuc=(Ctc(),Btc);Suc=new Nsd(ioe,Tuc);meb(-1);Ruc=new Nsd(joe,meb(-1));meb(-1);Uuc=new Nsd(koe,meb(-1));meb(-1);Vuc=new Nsd(loe,meb(4));meb(-1);Xuc=new Nsd(moe,meb(2));_uc=(kAc(),iAc);$uc=new Nsd(noe,_uc);meb(0);Zuc=new Nsd(ooe,meb(0));Puc=new Nsd(poe,meb(Ohe));luc=(Rpc(),Ppc);kuc=new Nsd(qoe,luc);Xtc=new Nsd(roe,false);euc=new Nsd(soe,0.1);iuc=new Nsd(toe,false);meb(-1);guc=new Nsd(uoe,meb(-1));meb(-1);huc=new Nsd(voe,meb(-1));meb(0);Ytc=new Nsd(woe,meb(40));cuc=(Xrc(),Wrc);buc=new Nsd(xoe,cuc);$tc=Urc;Ztc=new Nsd(yoe,$tc);vvc=(Vzc(),Qzc);uvc=new Nsd(zoe,vvc);kvc=new Lsd(Aoe);fvc=(_qc(),Zqc);evc=new Nsd(Boe,fvc);ivc=(lrc(),irc);hvc=new Nsd(Coe,ivc);new Tfd;nvc=new Nsd(Doe,0.3);pvc=new Lsd(Eoe);rvc=(Izc(),Gzc);qvc=new Nsd(Foe,rvc);xuc=(TAc(),RAc);wuc=new Nsd(Goe,xuc);zuc=(_Ac(),$Ac);yuc=new Nsd(Hoe,zuc);Buc=(tBc(),sBc);Auc=new Nsd(Ioe,Buc);Duc=new Nsd(Joe,0.2);uuc=new Nsd(Koe,2);Bvc=new Nsd(Loe,null);Dvc=new Nsd(Moe,10);Cvc=new Nsd(Noe,10);Evc=new Nsd(Ooe,20);meb(0);yvc=new Nsd(Poe,meb(0));meb(0);zvc=new Nsd(Qoe,meb(0));meb(0);Avc=new Nsd(Roe,meb(0));Jtc=new Nsd(Soe,false);Ntc=(yrc(),wrc);Mtc=new Nsd(Toe,Ntc);Ltc=(Ipc(),Hpc);Ktc=new Nsd(Uoe,Ltc);Juc=new Nsd(Voe,false);meb(0);Iuc=new Nsd(Woe,meb(16));meb(0);Kuc=new Nsd(Xoe,meb(5));bwc=(LBc(),JBc);awc=new Nsd(Yoe,bwc);Hvc=new Nsd(Zoe,10);Kvc=new Nsd($oe,1);Tvc=(bqc(),aqc);Svc=new Nsd(_oe,Tvc);Nvc=new Lsd(ape);Qvc=meb(1);meb(0);Pvc=new Nsd(bpe,Qvc);gwc=(CBc(),zBc);fwc=new Nsd(cpe,gwc);cwc=new Lsd(dpe);Yvc=new Nsd(epe,true);Wvc=new Nsd(fpe,2);$vc=new Nsd(gpe,true);tuc=(Sqc(),Qqc);suc=new Nsd(hpe,tuc);ruc=(Apc(),wpc);quc=new Nsd(ipe,ruc);Wtc=(tAc(),rAc);Vtc=new Nsd(jpe,Wtc);Utc=new Nsd(kpe,false);Ptc=(RXb(),QXb);Otc=new Nsd(lpe,Ptc);Ttc=(xzc(),uzc);Stc=new Nsd(mpe,Ttc);Qtc=new Nsd(npe,0);Rtc=new Nsd(ope,0);Ouc=kqc;Nuc=Opc;Wuc=izc;Yuc=izc;Quc=fzc;fuc=(hbd(),ebd);juc=Ppc;duc=Ppc;_tc=Ppc;auc=ebd;lvc=Tzc;mvc=Qzc;gvc=Qzc;jvc=Qzc;ovc=Szc;tvc=Tzc;svc=Tzc;Cuc=(Aad(),yad);Euc=yad;Fuc=sBc;vuc=xad;Ivc=KBc;Jvc=IBc;Lvc=KBc;Mvc=IBc;Uvc=KBc;Vvc=IBc;Ovc=_pc;Rvc=aqc;hwc=KBc;iwc=IBc;dwc=KBc;ewc=IBc;Zvc=IBc;Xvc=IBc;_vc=IBc}\nfunction S8b(){S8b=ccb;Y7b=new T8b('DIRECTION_PREPROCESSOR',0);V7b=new T8b('COMMENT_PREPROCESSOR',1);Z7b=new T8b('EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER',2);n8b=new T8b('INTERACTIVE_EXTERNAL_PORT_POSITIONER',3);G8b=new T8b('PARTITION_PREPROCESSOR',4);r8b=new T8b('LABEL_DUMMY_INSERTER',5);M8b=new T8b('SELF_LOOP_PREPROCESSOR',6);w8b=new T8b('LAYER_CONSTRAINT_PREPROCESSOR',7);E8b=new T8b('PARTITION_MIDPROCESSOR',8);i8b=new T8b('HIGH_DEGREE_NODE_LAYER_PROCESSOR',9);A8b=new T8b('NODE_PROMOTION',10);v8b=new T8b('LAYER_CONSTRAINT_POSTPROCESSOR',11);F8b=new T8b('PARTITION_POSTPROCESSOR',12);e8b=new T8b('HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR',13);O8b=new T8b('SEMI_INTERACTIVE_CROSSMIN_PROCESSOR',14);P7b=new T8b('BREAKING_POINT_INSERTER',15);z8b=new T8b('LONG_EDGE_SPLITTER',16);I8b=new T8b('PORT_SIDE_PROCESSOR',17);o8b=new T8b('INVERTED_PORT_PROCESSOR',18);H8b=new T8b('PORT_LIST_SORTER',19);Q8b=new T8b('SORT_BY_INPUT_ORDER_OF_MODEL',20);C8b=new T8b('NORTH_SOUTH_PORT_PREPROCESSOR',21);Q7b=new T8b('BREAKING_POINT_PROCESSOR',22);D8b=new T8b(Bne,23);R8b=new T8b(Cne,24);K8b=new T8b('SELF_LOOP_PORT_RESTORER',25);P8b=new T8b('SINGLE_EDGE_GRAPH_WRAPPER',26);p8b=new T8b('IN_LAYER_CONSTRAINT_PROCESSOR',27);b8b=new T8b('END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR',28);q8b=new T8b('LABEL_AND_NODE_SIZE_PROCESSOR',29);m8b=new T8b('INNERMOST_NODE_MARGIN_CALCULATOR',30);N8b=new T8b('SELF_LOOP_ROUTER',31);T7b=new T8b('COMMENT_NODE_MARGIN_CALCULATOR',32);_7b=new T8b('END_LABEL_PREPROCESSOR',33);t8b=new T8b('LABEL_DUMMY_SWITCHER',34);S7b=new T8b('CENTER_LABEL_MANAGEMENT_PROCESSOR',35);u8b=new T8b('LABEL_SIDE_SELECTOR',36);k8b=new T8b('HYPEREDGE_DUMMY_MERGER',37);f8b=new T8b('HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR',38);x8b=new T8b('LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR',39);h8b=new T8b('HIERARCHICAL_PORT_POSITION_PROCESSOR',40);W7b=new T8b('CONSTRAINTS_POSTPROCESSOR',41);U7b=new T8b('COMMENT_POSTPROCESSOR',42);l8b=new T8b('HYPERNODE_PROCESSOR',43);g8b=new T8b('HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER',44);y8b=new T8b('LONG_EDGE_JOINER',45);L8b=new T8b('SELF_LOOP_POSTPROCESSOR',46);R7b=new T8b('BREAKING_POINT_REMOVER',47);B8b=new T8b('NORTH_SOUTH_PORT_POSTPROCESSOR',48);j8b=new T8b('HORIZONTAL_COMPACTOR',49);s8b=new T8b('LABEL_DUMMY_REMOVER',50);c8b=new T8b('FINAL_SPLINE_BENDPOINTS_CALCULATOR',51);a8b=new T8b('END_LABEL_SORTER',52);J8b=new T8b('REVERSED_EDGE_RESTORER',53);$7b=new T8b('END_LABEL_POSTPROCESSOR',54);d8b=new T8b('HIERARCHICAL_NODE_RESIZER',55);X7b=new T8b('DIRECTION_POSTPROCESSOR',56)}\nfunction KIc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,ab,bb,cb,db,eb,fb,gb,hb,ib,jb,kb,lb;cb=0;for(H=b,K=0,N=H.length;K0&&(a.a[U.p]=cb++)}}hb=0;for(I=c,L=0,O=I.length;L0){U=(sCb(Y.b>0),BD(Y.a.Xb(Y.c=--Y.b),11));X=0;for(h=new olb(U.e);h.a0){if(U.j==(Ucd(),Acd)){a.a[U.p]=hb;++hb}else{a.a[U.p]=hb+P+R;++R}}}hb+=R}W=new Lqb;o=new zsb;for(G=b,J=0,M=G.length;Jj.b&&(j.b=Z)}else if(U.i.c==bb){Zj.c&&(j.c=Z)}}}Klb(p,0,p.length,null);gb=KC(WD,oje,25,p.length,15,1);d=KC(WD,oje,25,hb+1,15,1);for(r=0;r0){A%2>0&&(e+=kb[A+1]);A=(A-1)/2|0;++kb[A]}}C=KC(nY,Uhe,362,p.length*2,0,1);for(u=0;u'?\":dfb(wue,a)?\"'(?<' or '(? toIndex: ',zke=', toIndex: ',Ake='Index: ',Bke=', Size: ',Cke='org.eclipse.elk.alg.common',Dke={62:1},Eke='org.eclipse.elk.alg.common.compaction',Fke='Scanline/EventHandler',Gke='org.eclipse.elk.alg.common.compaction.oned',Hke='CNode belongs to another CGroup.',Ike='ISpacingsHandler/1',Jke='The ',Kke=' instance has been finished already.',Lke='The direction ',Mke=' is not supported by the CGraph instance.',Nke='OneDimensionalCompactor',Oke='OneDimensionalCompactor/lambda$0$Type',Pke='Quadruplet',Qke='ScanlineConstraintCalculator',Rke='ScanlineConstraintCalculator/ConstraintsScanlineHandler',Ske='ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type',Tke='ScanlineConstraintCalculator/Timestamp',Uke='ScanlineConstraintCalculator/lambda$0$Type',Vke={169:1,45:1},Wke='org.eclipse.elk.alg.common.compaction.options',Xke='org.eclipse.elk.core.data',Yke='org.eclipse.elk.polyomino.traversalStrategy',Zke='org.eclipse.elk.polyomino.lowLevelSort',$ke='org.eclipse.elk.polyomino.highLevelSort',_ke='org.eclipse.elk.polyomino.fill',ale={130:1},ble='polyomino',cle='org.eclipse.elk.alg.common.networksimplex',dle={177:1,3:1,4:1},ele='org.eclipse.elk.alg.common.nodespacing',fle='org.eclipse.elk.alg.common.nodespacing.cellsystem',gle='CENTER',hle={212:1,326:1},ile={3:1,4:1,5:1,595:1},jle='LEFT',kle='RIGHT',lle='Vertical alignment cannot be null',mle='BOTTOM',nle='org.eclipse.elk.alg.common.nodespacing.internal',ole='UNDEFINED',ple=0.01,qle='org.eclipse.elk.alg.common.nodespacing.internal.algorithm',rle='LabelPlacer/lambda$0$Type',sle='LabelPlacer/lambda$1$Type',tle='portRatioOrPosition',ule='org.eclipse.elk.alg.common.overlaps',vle='DOWN',wle='org.eclipse.elk.alg.common.polyomino',xle='NORTH',yle='EAST',zle='SOUTH',Ale='WEST',Ble='org.eclipse.elk.alg.common.polyomino.structures',Cle='Direction',Dle='Grid is only of size ',Ele='. Requested point (',Fle=') is out of bounds.',Gle=' Given center based coordinates were (',Hle='org.eclipse.elk.graph.properties',Ile='IPropertyHolder',Jle={3:1,94:1,134:1},Kle='org.eclipse.elk.alg.common.spore',Lle='org.eclipse.elk.alg.common.utils',Mle={209:1},Nle='org.eclipse.elk.core',Ole='Connected Components Compaction',Ple='org.eclipse.elk.alg.disco',Qle='org.eclipse.elk.alg.disco.graph',Rle='org.eclipse.elk.alg.disco.options',Sle='CompactionStrategy',Tle='org.eclipse.elk.disco.componentCompaction.strategy',Ule='org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm',Vle='org.eclipse.elk.disco.debug.discoGraph',Wle='org.eclipse.elk.disco.debug.discoPolys',Xle='componentCompaction',Yle='org.eclipse.elk.disco',Zle='org.eclipse.elk.spacing.componentComponent',$le='org.eclipse.elk.edge.thickness',_le='org.eclipse.elk.aspectRatio',ame='org.eclipse.elk.padding',bme='org.eclipse.elk.alg.disco.transform',cme=1.5707963267948966,dme=1.7976931348623157E308,eme={3:1,4:1,5:1,192:1},fme={3:1,6:1,4:1,5:1,106:1,120:1},gme='org.eclipse.elk.alg.force',hme='ComponentsProcessor',ime='ComponentsProcessor/1',jme='org.eclipse.elk.alg.force.graph',kme='Component Layout',lme='org.eclipse.elk.alg.force.model',mme='org.eclipse.elk.force.model',nme='org.eclipse.elk.force.iterations',ome='org.eclipse.elk.force.repulsivePower',pme='org.eclipse.elk.force.temperature',qme=0.001,rme='org.eclipse.elk.force.repulsion',sme='org.eclipse.elk.alg.force.options',tme=1.600000023841858,ume='org.eclipse.elk.force',vme='org.eclipse.elk.priority',wme='org.eclipse.elk.spacing.nodeNode',xme='org.eclipse.elk.spacing.edgeLabel',yme='org.eclipse.elk.randomSeed',zme='org.eclipse.elk.separateConnectedComponents',Ame='org.eclipse.elk.interactive',Bme='org.eclipse.elk.portConstraints',Cme='org.eclipse.elk.edgeLabels.inline',Dme='org.eclipse.elk.omitNodeMicroLayout',Eme='org.eclipse.elk.nodeSize.options',Fme='org.eclipse.elk.nodeSize.constraints',Gme='org.eclipse.elk.nodeLabels.placement',Hme='org.eclipse.elk.portLabels.placement',Ime='origin',Jme='random',Kme='boundingBox.upLeft',Lme='boundingBox.lowRight',Mme='org.eclipse.elk.stress.fixed',Nme='org.eclipse.elk.stress.desiredEdgeLength',Ome='org.eclipse.elk.stress.dimension',Pme='org.eclipse.elk.stress.epsilon',Qme='org.eclipse.elk.stress.iterationLimit',Rme='org.eclipse.elk.stress',Sme='ELK Stress',Tme='org.eclipse.elk.nodeSize.minimum',Ume='org.eclipse.elk.alg.force.stress',Vme='Layered layout',Wme='org.eclipse.elk.alg.layered',Xme='org.eclipse.elk.alg.layered.compaction.components',Yme='org.eclipse.elk.alg.layered.compaction.oned',Zme='org.eclipse.elk.alg.layered.compaction.oned.algs',$me='org.eclipse.elk.alg.layered.compaction.recthull',_me='org.eclipse.elk.alg.layered.components',ane='NONE',bne={3:1,6:1,4:1,9:1,5:1,122:1},cne={3:1,6:1,4:1,5:1,141:1,106:1,120:1},dne='org.eclipse.elk.alg.layered.compound',ene={51:1},fne='org.eclipse.elk.alg.layered.graph',gne=' -> ',hne='Not supported by LGraph',ine='Port side is undefined',jne={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},kne={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},lne={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},mne='([{\"\\' \\t\\r\\n',nne=')]}\"\\' \\t\\r\\n',one='The given string contains parts that cannot be parsed as numbers.',pne='org.eclipse.elk.core.math',qne={3:1,4:1,142:1,207:1,414:1},rne={3:1,4:1,116:1,207:1,414:1},sne='org.eclipse.elk.layered',tne='org.eclipse.elk.alg.layered.graph.transform',une='ElkGraphImporter',vne='ElkGraphImporter/lambda$0$Type',wne='ElkGraphImporter/lambda$1$Type',xne='ElkGraphImporter/lambda$2$Type',yne='ElkGraphImporter/lambda$4$Type',zne='Node margin calculation',Ane='org.eclipse.elk.alg.layered.intermediate',Bne='ONE_SIDED_GREEDY_SWITCH',Cne='TWO_SIDED_GREEDY_SWITCH',Dne='No implementation is available for the layout processor ',Ene='IntermediateProcessorStrategy',Fne=\"Node '\",Gne='FIRST_SEPARATE',Hne='LAST_SEPARATE',Ine='Odd port side processing',Jne='org.eclipse.elk.alg.layered.intermediate.compaction',Kne='org.eclipse.elk.alg.layered.intermediate.greedyswitch',Lne='org.eclipse.elk.alg.layered.p3order.counting',Mne={225:1},Nne='org.eclipse.elk.alg.layered.intermediate.loops',One='org.eclipse.elk.alg.layered.intermediate.loops.ordering',Pne='org.eclipse.elk.alg.layered.intermediate.loops.routing',Qne='org.eclipse.elk.alg.layered.intermediate.preserveorder',Rne='org.eclipse.elk.alg.layered.intermediate.wrapping',Sne='org.eclipse.elk.alg.layered.options',Tne='INTERACTIVE',Une='DEPTH_FIRST',Vne='EDGE_LENGTH',Wne='SELF_LOOPS',Xne='firstTryWithInitialOrder',Yne='org.eclipse.elk.layered.directionCongruency',Zne='org.eclipse.elk.layered.feedbackEdges',$ne='org.eclipse.elk.layered.interactiveReferencePoint',_ne='org.eclipse.elk.layered.mergeEdges',aoe='org.eclipse.elk.layered.mergeHierarchyEdges',boe='org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides',coe='org.eclipse.elk.layered.portSortingStrategy',doe='org.eclipse.elk.layered.thoroughness',eoe='org.eclipse.elk.layered.unnecessaryBendpoints',foe='org.eclipse.elk.layered.generatePositionAndLayerIds',goe='org.eclipse.elk.layered.cycleBreaking.strategy',hoe='org.eclipse.elk.layered.layering.strategy',ioe='org.eclipse.elk.layered.layering.layerConstraint',joe='org.eclipse.elk.layered.layering.layerChoiceConstraint',koe='org.eclipse.elk.layered.layering.layerId',loe='org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth',moe='org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor',noe='org.eclipse.elk.layered.layering.nodePromotion.strategy',ooe='org.eclipse.elk.layered.layering.nodePromotion.maxIterations',poe='org.eclipse.elk.layered.layering.coffmanGraham.layerBound',qoe='org.eclipse.elk.layered.crossingMinimization.strategy',roe='org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder',soe='org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness',toe='org.eclipse.elk.layered.crossingMinimization.semiInteractive',uoe='org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint',voe='org.eclipse.elk.layered.crossingMinimization.positionId',woe='org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold',xoe='org.eclipse.elk.layered.crossingMinimization.greedySwitch.type',yoe='org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type',zoe='org.eclipse.elk.layered.nodePlacement.strategy',Aoe='org.eclipse.elk.layered.nodePlacement.favorStraightEdges',Boe='org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening',Coe='org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment',Doe='org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening',Eoe='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility',Foe='org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default',Goe='org.eclipse.elk.layered.edgeRouting.selfLoopDistribution',Hoe='org.eclipse.elk.layered.edgeRouting.selfLoopOrdering',Ioe='org.eclipse.elk.layered.edgeRouting.splines.mode',Joe='org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor',Koe='org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth',Loe='org.eclipse.elk.layered.spacing.baseValue',Moe='org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers',Noe='org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers',Ooe='org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers',Poe='org.eclipse.elk.layered.priority.direction',Qoe='org.eclipse.elk.layered.priority.shortness',Roe='org.eclipse.elk.layered.priority.straightness',Soe='org.eclipse.elk.layered.compaction.connectedComponents',Toe='org.eclipse.elk.layered.compaction.postCompaction.strategy',Uoe='org.eclipse.elk.layered.compaction.postCompaction.constraints',Voe='org.eclipse.elk.layered.highDegreeNodes.treatment',Woe='org.eclipse.elk.layered.highDegreeNodes.threshold',Xoe='org.eclipse.elk.layered.highDegreeNodes.treeHeight',Yoe='org.eclipse.elk.layered.wrapping.strategy',Zoe='org.eclipse.elk.layered.wrapping.additionalEdgeSpacing',$oe='org.eclipse.elk.layered.wrapping.correctionFactor',_oe='org.eclipse.elk.layered.wrapping.cutting.strategy',ape='org.eclipse.elk.layered.wrapping.cutting.cuts',bpe='org.eclipse.elk.layered.wrapping.cutting.msd.freedom',cpe='org.eclipse.elk.layered.wrapping.validify.strategy',dpe='org.eclipse.elk.layered.wrapping.validify.forbiddenIndices',epe='org.eclipse.elk.layered.wrapping.multiEdge.improveCuts',fpe='org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty',gpe='org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges',hpe='org.eclipse.elk.layered.edgeLabels.sideSelection',ipe='org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy',jpe='org.eclipse.elk.layered.considerModelOrder.strategy',kpe='org.eclipse.elk.layered.considerModelOrder.noModelOrder',lpe='org.eclipse.elk.layered.considerModelOrder.components',mpe='org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy',npe='org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence',ope='org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence',ppe='layering',qpe='layering.minWidth',rpe='layering.nodePromotion',spe='crossingMinimization',tpe='org.eclipse.elk.hierarchyHandling',upe='crossingMinimization.greedySwitch',vpe='nodePlacement',wpe='nodePlacement.bk',xpe='edgeRouting',ype='org.eclipse.elk.edgeRouting',zpe='spacing',Ape='priority',Bpe='compaction',Cpe='compaction.postCompaction',Dpe='Specifies whether and how post-process compaction is applied.',Epe='highDegreeNodes',Fpe='wrapping',Gpe='wrapping.cutting',Hpe='wrapping.validify',Ipe='wrapping.multiEdge',Jpe='edgeLabels',Kpe='considerModelOrder',Lpe='org.eclipse.elk.spacing.commentComment',Mpe='org.eclipse.elk.spacing.commentNode',Npe='org.eclipse.elk.spacing.edgeEdge',Ope='org.eclipse.elk.spacing.edgeNode',Ppe='org.eclipse.elk.spacing.labelLabel',Qpe='org.eclipse.elk.spacing.labelPortHorizontal',Rpe='org.eclipse.elk.spacing.labelPortVertical',Spe='org.eclipse.elk.spacing.labelNode',Tpe='org.eclipse.elk.spacing.nodeSelfLoop',Upe='org.eclipse.elk.spacing.portPort',Vpe='org.eclipse.elk.spacing.individual',Wpe='org.eclipse.elk.port.borderOffset',Xpe='org.eclipse.elk.noLayout',Ype='org.eclipse.elk.port.side',Zpe='org.eclipse.elk.debugMode',$pe='org.eclipse.elk.alignment',_pe='org.eclipse.elk.insideSelfLoops.activate',aqe='org.eclipse.elk.insideSelfLoops.yo',bqe='org.eclipse.elk.nodeSize.fixedGraphSize',cqe='org.eclipse.elk.direction',dqe='org.eclipse.elk.nodeLabels.padding',eqe='org.eclipse.elk.portLabels.nextToPortIfPossible',fqe='org.eclipse.elk.portLabels.treatAsGroup',gqe='org.eclipse.elk.portAlignment.default',hqe='org.eclipse.elk.portAlignment.north',iqe='org.eclipse.elk.portAlignment.south',jqe='org.eclipse.elk.portAlignment.west',kqe='org.eclipse.elk.portAlignment.east',lqe='org.eclipse.elk.contentAlignment',mqe='org.eclipse.elk.junctionPoints',nqe='org.eclipse.elk.edgeLabels.placement',oqe='org.eclipse.elk.port.index',pqe='org.eclipse.elk.commentBox',qqe='org.eclipse.elk.hypernode',rqe='org.eclipse.elk.port.anchor',sqe='org.eclipse.elk.partitioning.activate',tqe='org.eclipse.elk.partitioning.partition',uqe='org.eclipse.elk.position',vqe='org.eclipse.elk.margins',wqe='org.eclipse.elk.spacing.portsSurrounding',xqe='org.eclipse.elk.interactiveLayout',yqe='org.eclipse.elk.core.util',zqe={3:1,4:1,5:1,593:1},Aqe='NETWORK_SIMPLEX',Bqe={123:1,51:1},Cqe='org.eclipse.elk.alg.layered.p1cycles',Dqe='org.eclipse.elk.alg.layered.p2layers',Eqe={402:1,225:1},Fqe={832:1,3:1,4:1},Gqe='org.eclipse.elk.alg.layered.p3order',Hqe='org.eclipse.elk.alg.layered.p4nodes',Iqe={3:1,4:1,5:1,840:1},Jqe=1.0E-5,Kqe='org.eclipse.elk.alg.layered.p4nodes.bk',Lqe='org.eclipse.elk.alg.layered.p5edges',Mqe='org.eclipse.elk.alg.layered.p5edges.orthogonal',Nqe='org.eclipse.elk.alg.layered.p5edges.orthogonal.direction',Oqe=1.0E-6,Pqe='org.eclipse.elk.alg.layered.p5edges.splines',Qqe=0.09999999999999998,Rqe=1.0E-8,Sqe=4.71238898038469,Tqe=3.141592653589793,Uqe='org.eclipse.elk.alg.mrtree',Vqe='org.eclipse.elk.alg.mrtree.graph',Wqe='org.eclipse.elk.alg.mrtree.intermediate',Xqe='Set neighbors in level',Yqe='DESCENDANTS',Zqe='org.eclipse.elk.mrtree.weighting',$qe='org.eclipse.elk.mrtree.searchOrder',_qe='org.eclipse.elk.alg.mrtree.options',are='org.eclipse.elk.mrtree',bre='org.eclipse.elk.tree',cre='org.eclipse.elk.alg.radial',dre=6.283185307179586,ere=4.9E-324,fre='org.eclipse.elk.alg.radial.intermediate',gre='org.eclipse.elk.alg.radial.intermediate.compaction',hre={3:1,4:1,5:1,106:1},ire='org.eclipse.elk.alg.radial.intermediate.optimization',jre='No implementation is available for the layout option ',kre='org.eclipse.elk.alg.radial.options',lre='org.eclipse.elk.radial.orderId',mre='org.eclipse.elk.radial.radius',nre='org.eclipse.elk.radial.compactor',ore='org.eclipse.elk.radial.compactionStepSize',pre='org.eclipse.elk.radial.sorter',qre='org.eclipse.elk.radial.wedgeCriteria',rre='org.eclipse.elk.radial.optimizationCriteria',sre='org.eclipse.elk.radial',tre='org.eclipse.elk.alg.radial.p1position.wedge',ure='org.eclipse.elk.alg.radial.sorting',vre=5.497787143782138,wre=3.9269908169872414,xre=2.356194490192345,yre='org.eclipse.elk.alg.rectpacking',zre='org.eclipse.elk.alg.rectpacking.firstiteration',Are='org.eclipse.elk.alg.rectpacking.options',Bre='org.eclipse.elk.rectpacking.optimizationGoal',Cre='org.eclipse.elk.rectpacking.lastPlaceShift',Dre='org.eclipse.elk.rectpacking.currentPosition',Ere='org.eclipse.elk.rectpacking.desiredPosition',Fre='org.eclipse.elk.rectpacking.onlyFirstIteration',Gre='org.eclipse.elk.rectpacking.rowCompaction',Hre='org.eclipse.elk.rectpacking.expandToAspectRatio',Ire='org.eclipse.elk.rectpacking.targetWidth',Jre='org.eclipse.elk.expandNodes',Kre='org.eclipse.elk.rectpacking',Lre='org.eclipse.elk.alg.rectpacking.util',Mre='No implementation available for ',Nre='org.eclipse.elk.alg.spore',Ore='org.eclipse.elk.alg.spore.options',Pre='org.eclipse.elk.sporeCompaction',Qre='org.eclipse.elk.underlyingLayoutAlgorithm',Rre='org.eclipse.elk.processingOrder.treeConstruction',Sre='org.eclipse.elk.processingOrder.spanningTreeCostFunction',Tre='org.eclipse.elk.processingOrder.preferredRoot',Ure='org.eclipse.elk.processingOrder.rootSelection',Vre='org.eclipse.elk.structure.structureExtractionStrategy',Wre='org.eclipse.elk.compaction.compactionStrategy',Xre='org.eclipse.elk.compaction.orthogonal',Yre='org.eclipse.elk.overlapRemoval.maxIterations',Zre='org.eclipse.elk.overlapRemoval.runScanline',$re='processingOrder',_re='overlapRemoval',ase='org.eclipse.elk.sporeOverlap',bse='org.eclipse.elk.alg.spore.p1structure',cse='org.eclipse.elk.alg.spore.p2processingorder',dse='org.eclipse.elk.alg.spore.p3execution',ese='Invalid index: ',fse='org.eclipse.elk.core.alg',gse={331:1},hse={288:1},ise='Make sure its type is registered with the ',jse=' utility class.',kse='true',lse='false',mse=\"Couldn't clone property '\",nse=0.05,ose='org.eclipse.elk.core.options',pse=1.2999999523162842,qse='org.eclipse.elk.box',rse='org.eclipse.elk.box.packingMode',sse='org.eclipse.elk.algorithm',tse='org.eclipse.elk.resolvedAlgorithm',use='org.eclipse.elk.bendPoints',vse='org.eclipse.elk.labelManager',wse='org.eclipse.elk.scaleFactor',xse='org.eclipse.elk.animate',yse='org.eclipse.elk.animTimeFactor',zse='org.eclipse.elk.layoutAncestors',Ase='org.eclipse.elk.maxAnimTime',Bse='org.eclipse.elk.minAnimTime',Cse='org.eclipse.elk.progressBar',Dse='org.eclipse.elk.validateGraph',Ese='org.eclipse.elk.validateOptions',Fse='org.eclipse.elk.zoomToFit',Gse='org.eclipse.elk.font.name',Hse='org.eclipse.elk.font.size',Ise='org.eclipse.elk.edge.type',Jse='partitioning',Kse='nodeLabels',Lse='portAlignment',Mse='nodeSize',Nse='port',Ose='portLabels',Pse='insideSelfLoops',Qse='org.eclipse.elk.fixed',Rse='org.eclipse.elk.random',Sse='port must have a parent node to calculate the port side',Tse='The edge needs to have exactly one edge section. Found: ',Use='org.eclipse.elk.core.util.adapters',Vse='org.eclipse.emf.ecore',Wse='org.eclipse.elk.graph',Xse='EMapPropertyHolder',Yse='ElkBendPoint',Zse='ElkGraphElement',$se='ElkConnectableShape',_se='ElkEdge',ate='ElkEdgeSection',bte='EModelElement',cte='ENamedElement',dte='ElkLabel',ete='ElkNode',fte='ElkPort',gte={92:1,90:1},hte='org.eclipse.emf.common.notify.impl',ite=\"The feature '\",jte=\"' is not a valid changeable feature\",kte='Expecting null',lte=\"' is not a valid feature\",mte='The feature ID',nte=' is not a valid feature ID',ote=32768,pte={105:1,92:1,90:1,56:1,49:1,97:1},qte='org.eclipse.emf.ecore.impl',rte='org.eclipse.elk.graph.impl',ste='Recursive containment not allowed for ',tte=\"The datatype '\",ute=\"' is not a valid classifier\",vte=\"The value '\",wte={190:1,3:1,4:1},xte=\"The class '\",yte='http://www.eclipse.org/elk/ElkGraph',zte=1024,Ate='property',Bte='value',Cte='source',Dte='properties',Ete='identifier',Fte='height',Gte='width',Hte='parent',Ite='text',Jte='children',Kte='hierarchical',Lte='sources',Mte='targets',Nte='sections',Ote='bendPoints',Pte='outgoingShape',Qte='incomingShape',Rte='outgoingSections',Ste='incomingSections',Tte='org.eclipse.emf.common.util',Ute='Severe implementation error in the Json to ElkGraph importer.',Vte='id',Wte='org.eclipse.elk.graph.json',Xte='Unhandled parameter types: ',Yte='startPoint',Zte=\"An edge must have at least one source and one target (edge id: '\",$te=\"').\",_te='Referenced edge section does not exist: ',aue=\" (edge id: '\",bue='target',cue='sourcePoint',due='targetPoint',eue='group',fue='name',gue='connectableShape cannot be null',hue='edge cannot be null',iue=\"Passed edge is not 'simple'.\",jue='org.eclipse.elk.graph.util',kue=\"The 'no duplicates' constraint is violated\",lue='targetIndex=',mue=', size=',nue='sourceIndex=',oue={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},pue={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},que='logging',rue='measureExecutionTime',sue='parser.parse.1',tue='parser.parse.2',uue='parser.next.1',vue='parser.next.2',wue='parser.next.3',xue='parser.next.4',yue='parser.factor.1',zue='parser.factor.2',Aue='parser.factor.3',Bue='parser.factor.4',Cue='parser.factor.5',Due='parser.factor.6',Eue='parser.atom.1',Fue='parser.atom.2',Gue='parser.atom.3',Hue='parser.atom.4',Iue='parser.atom.5',Jue='parser.cc.1',Kue='parser.cc.2',Lue='parser.cc.3',Mue='parser.cc.5',Nue='parser.cc.6',Oue='parser.cc.7',Pue='parser.cc.8',Que='parser.ope.1',Rue='parser.ope.2',Sue='parser.ope.3',Tue='parser.descape.1',Uue='parser.descape.2',Vue='parser.descape.3',Wue='parser.descape.4',Xue='parser.descape.5',Yue='parser.process.1',Zue='parser.quantifier.1',$ue='parser.quantifier.2',_ue='parser.quantifier.3',ave='parser.quantifier.4',bve='parser.quantifier.5',cve='org.eclipse.emf.common.notify',dve={415:1,672:1},eve={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},fve={366:1,143:1},gve='index=',hve={3:1,4:1,5:1,126:1},ive={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},jve={3:1,6:1,4:1,5:1,192:1},kve={3:1,4:1,5:1,165:1,367:1},lve=';/?:@&=+$,',mve='invalid authority: ',nve='EAnnotation',ove='ETypedElement',pve='EStructuralFeature',qve='EAttribute',rve='EClassifier',sve='EEnumLiteral',tve='EGenericType',uve='EOperation',vve='EParameter',wve='EReference',xve='ETypeParameter',yve='org.eclipse.emf.ecore.util',zve={76:1},Ave={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},Bve='org.eclipse.emf.ecore.util.FeatureMap$Entry',Cve=8192,Dve=2048,Eve='byte',Fve='char',Gve='double',Hve='float',Ive='int',Jve='long',Kve='short',Lve='java.lang.Object',Mve={3:1,4:1,5:1,247:1},Nve={3:1,4:1,5:1,673:1},Ove={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},Pve={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},Qve='mixed',Rve='http:///org/eclipse/emf/ecore/util/ExtendedMetaData',Sve='kind',Tve={3:1,4:1,5:1,674:1},Uve={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},Vve={20:1,28:1,52:1,14:1,15:1,58:1,69:1},Wve={47:1,125:1,279:1},Xve={72:1,332:1},Yve=\"The value of type '\",Zve=\"' must be of type '\",$ve=1316,_ve='http://www.eclipse.org/emf/2002/Ecore',awe=-32768,bwe='constraints',cwe='baseType',dwe='getEStructuralFeature',ewe='getFeatureID',fwe='feature',gwe='getOperationID',hwe='operation',iwe='defaultValue',jwe='eTypeParameters',kwe='isInstance',lwe='getEEnumLiteral',mwe='eContainingClass',nwe={55:1},owe={3:1,4:1,5:1,119:1},pwe='org.eclipse.emf.ecore.resource',qwe={92:1,90:1,591:1,1935:1},rwe='org.eclipse.emf.ecore.resource.impl',swe='unspecified',twe='simple',uwe='attribute',vwe='attributeWildcard',wwe='element',xwe='elementWildcard',ywe='collapse',zwe='itemType',Awe='namespace',Bwe='##targetNamespace',Cwe='whiteSpace',Dwe='wildcards',Ewe='http://www.eclipse.org/emf/2003/XMLType',Fwe='##any',Gwe='uninitialized',Hwe='The multiplicity constraint is violated',Iwe='org.eclipse.emf.ecore.xml.type',Jwe='ProcessingInstruction',Kwe='SimpleAnyType',Lwe='XMLTypeDocumentRoot',Mwe='org.eclipse.emf.ecore.xml.type.impl',Nwe='INF',Owe='processing',Pwe='ENTITIES_._base',Qwe='minLength',Rwe='ENTITY',Swe='NCName',Twe='IDREFS_._base',Uwe='integer',Vwe='token',Wwe='pattern',Xwe='[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*',Ywe='\\\\i\\\\c*',Zwe='[\\\\i-[:]][\\\\c-[:]]*',$we='nonPositiveInteger',_we='maxInclusive',axe='NMTOKEN',bxe='NMTOKENS_._base',cxe='nonNegativeInteger',dxe='minInclusive',exe='normalizedString',fxe='unsignedByte',gxe='unsignedInt',hxe='18446744073709551615',ixe='unsignedShort',jxe='processingInstruction',kxe='org.eclipse.emf.ecore.xml.type.internal',lxe=1114111,mxe='Internal Error: shorthands: \\\\u',nxe='xml:isDigit',oxe='xml:isWord',pxe='xml:isSpace',qxe='xml:isNameChar',rxe='xml:isInitialNameChar',sxe='09\\u0660\\u0669\\u06F0\\u06F9\\u0966\\u096F\\u09E6\\u09EF\\u0A66\\u0A6F\\u0AE6\\u0AEF\\u0B66\\u0B6F\\u0BE7\\u0BEF\\u0C66\\u0C6F\\u0CE6\\u0CEF\\u0D66\\u0D6F\\u0E50\\u0E59\\u0ED0\\u0ED9\\u0F20\\u0F29',txe='AZaz\\xC0\\xD6\\xD8\\xF6\\xF8\\u0131\\u0134\\u013E\\u0141\\u0148\\u014A\\u017E\\u0180\\u01C3\\u01CD\\u01F0\\u01F4\\u01F5\\u01FA\\u0217\\u0250\\u02A8\\u02BB\\u02C1\\u0386\\u0386\\u0388\\u038A\\u038C\\u038C\\u038E\\u03A1\\u03A3\\u03CE\\u03D0\\u03D6\\u03DA\\u03DA\\u03DC\\u03DC\\u03DE\\u03DE\\u03E0\\u03E0\\u03E2\\u03F3\\u0401\\u040C\\u040E\\u044F\\u0451\\u045C\\u045E\\u0481\\u0490\\u04C4\\u04C7\\u04C8\\u04CB\\u04CC\\u04D0\\u04EB\\u04EE\\u04F5\\u04F8\\u04F9\\u0531\\u0556\\u0559\\u0559\\u0561\\u0586\\u05D0\\u05EA\\u05F0\\u05F2\\u0621\\u063A\\u0641\\u064A\\u0671\\u06B7\\u06BA\\u06BE\\u06C0\\u06CE\\u06D0\\u06D3\\u06D5\\u06D5\\u06E5\\u06E6\\u0905\\u0939\\u093D\\u093D\\u0958\\u0961\\u0985\\u098C\\u098F\\u0990\\u0993\\u09A8\\u09AA\\u09B0\\u09B2\\u09B2\\u09B6\\u09B9\\u09DC\\u09DD\\u09DF\\u09E1\\u09F0\\u09F1\\u0A05\\u0A0A\\u0A0F\\u0A10\\u0A13\\u0A28\\u0A2A\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59\\u0A5C\\u0A5E\\u0A5E\\u0A72\\u0A74\\u0A85\\u0A8B\\u0A8D\\u0A8D\\u0A8F\\u0A91\\u0A93\\u0AA8\\u0AAA\\u0AB0\\u0AB2\\u0AB3\\u0AB5\\u0AB9\\u0ABD\\u0ABD\\u0AE0\\u0AE0\\u0B05\\u0B0C\\u0B0F\\u0B10\\u0B13\\u0B28\\u0B2A\\u0B30\\u0B32\\u0B33\\u0B36\\u0B39\\u0B3D\\u0B3D\\u0B5C\\u0B5D\\u0B5F\\u0B61\\u0B85\\u0B8A\\u0B8E\\u0B90\\u0B92\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8\\u0BAA\\u0BAE\\u0BB5\\u0BB7\\u0BB9\\u0C05\\u0C0C\\u0C0E\\u0C10\\u0C12\\u0C28\\u0C2A\\u0C33\\u0C35\\u0C39\\u0C60\\u0C61\\u0C85\\u0C8C\\u0C8E\\u0C90\\u0C92\\u0CA8\\u0CAA\\u0CB3\\u0CB5\\u0CB9\\u0CDE\\u0CDE\\u0CE0\\u0CE1\\u0D05\\u0D0C\\u0D0E\\u0D10\\u0D12\\u0D28\\u0D2A\\u0D39\\u0D60\\u0D61\\u0E01\\u0E2E\\u0E30\\u0E30\\u0E32\\u0E33\\u0E40\\u0E45\\u0E81\\u0E82\\u0E84\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8A\\u0E8D\\u0E8D\\u0E94\\u0E97\\u0E99\\u0E9F\\u0EA1\\u0EA3\\u0EA5\\u0EA5\\u0EA7\\u0EA7\\u0EAA\\u0EAB\\u0EAD\\u0EAE\\u0EB0\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EBD\\u0EC0\\u0EC4\\u0F40\\u0F47\\u0F49\\u0F69\\u10A0\\u10C5\\u10D0\\u10F6\\u1100\\u1100\\u1102\\u1103\\u1105\\u1107\\u1109\\u1109\\u110B\\u110C\\u110E\\u1112\\u113C\\u113C\\u113E\\u113E\\u1140\\u1140\\u114C\\u114C\\u114E\\u114E\\u1150\\u1150\\u1154\\u1155\\u1159\\u1159\\u115F\\u1161\\u1163\\u1163\\u1165\\u1165\\u1167\\u1167\\u1169\\u1169\\u116D\\u116E\\u1172\\u1173\\u1175\\u1175\\u119E\\u119E\\u11A8\\u11A8\\u11AB\\u11AB\\u11AE\\u11AF\\u11B7\\u11B8\\u11BA\\u11BA\\u11BC\\u11C2\\u11EB\\u11EB\\u11F0\\u11F0\\u11F9\\u11F9\\u1E00\\u1E9B\\u1EA0\\u1EF9\\u1F00\\u1F15\\u1F18\\u1F1D\\u1F20\\u1F45\\u1F48\\u1F4D\\u1F50\\u1F57\\u1F59\\u1F59\\u1F5B\\u1F5B\\u1F5D\\u1F5D\\u1F5F\\u1F7D\\u1F80\\u1FB4\\u1FB6\\u1FBC\\u1FBE\\u1FBE\\u1FC2\\u1FC4\\u1FC6\\u1FCC\\u1FD0\\u1FD3\\u1FD6\\u1FDB\\u1FE0\\u1FEC\\u1FF2\\u1FF4\\u1FF6\\u1FFC\\u2126\\u2126\\u212A\\u212B\\u212E\\u212E\\u2180\\u2182\\u3007\\u3007\\u3021\\u3029\\u3041\\u3094\\u30A1\\u30FA\\u3105\\u312C\\u4E00\\u9FA5\\uAC00\\uD7A3',uxe='Private Use',vxe='ASSIGNED',wxe='\\x00\\x7F\\x80\\xFF\\u0100\\u017F\\u0180\\u024F\\u0250\\u02AF\\u02B0\\u02FF\\u0300\\u036F\\u0370\\u03FF\\u0400\\u04FF\\u0530\\u058F\\u0590\\u05FF\\u0600\\u06FF\\u0700\\u074F\\u0780\\u07BF\\u0900\\u097F\\u0980\\u09FF\\u0A00\\u0A7F\\u0A80\\u0AFF\\u0B00\\u0B7F\\u0B80\\u0BFF\\u0C00\\u0C7F\\u0C80\\u0CFF\\u0D00\\u0D7F\\u0D80\\u0DFF\\u0E00\\u0E7F\\u0E80\\u0EFF\\u0F00\\u0FFF\\u1000\\u109F\\u10A0\\u10FF\\u1100\\u11FF\\u1200\\u137F\\u13A0\\u13FF\\u1400\\u167F\\u1680\\u169F\\u16A0\\u16FF\\u1780\\u17FF\\u1800\\u18AF\\u1E00\\u1EFF\\u1F00\\u1FFF\\u2000\\u206F\\u2070\\u209F\\u20A0\\u20CF\\u20D0\\u20FF\\u2100\\u214F\\u2150\\u218F\\u2190\\u21FF\\u2200\\u22FF\\u2300\\u23FF\\u2400\\u243F\\u2440\\u245F\\u2460\\u24FF\\u2500\\u257F\\u2580\\u259F\\u25A0\\u25FF\\u2600\\u26FF\\u2700\\u27BF\\u2800\\u28FF\\u2E80\\u2EFF\\u2F00\\u2FDF\\u2FF0\\u2FFF\\u3000\\u303F\\u3040\\u309F\\u30A0\\u30FF\\u3100\\u312F\\u3130\\u318F\\u3190\\u319F\\u31A0\\u31BF\\u3200\\u32FF\\u3300\\u33FF\\u3400\\u4DB5\\u4E00\\u9FFF\\uA000\\uA48F\\uA490\\uA4CF\\uAC00\\uD7A3\\uE000\\uF8FF\\uF900\\uFAFF\\uFB00\\uFB4F\\uFB50\\uFDFF\\uFE20\\uFE2F\\uFE30\\uFE4F\\uFE50\\uFE6F\\uFE70\\uFEFE\\uFEFF\\uFEFF\\uFF00\\uFFEF',xxe='UNASSIGNED',yxe={3:1,117:1},zxe='org.eclipse.emf.ecore.xml.type.util',Axe={3:1,4:1,5:1,368:1},Bxe='org.eclipse.xtext.xbase.lib',Cxe='Cannot add elements to a Range',Dxe='Cannot set elements in a Range',Exe='Cannot remove elements from a Range',Fxe='locale',Gxe='default',Hxe='user.agent';var _,_bb,Wbb,tbb=-1;$wnd.goog=$wnd.goog||{};$wnd.goog.global=$wnd.goog.global||$wnd;acb();bcb(1,null,{},nb);_.Fb=function ob(a){return mb(this,a)};_.Gb=function qb(){return this.gm};_.Hb=function sb(){return FCb(this)};_.Ib=function ub(){var a;return hdb(rb(this))+'@'+(a=tb(this)>>>0,a.toString(16))};_.equals=function(a){return this.Fb(a)};_.hashCode=function(){return this.Hb()};_.toString=function(){return this.Ib()};var xD,yD,zD;bcb(290,1,{290:1,2026:1},jdb);_.le=function kdb(a){var b;b=new jdb;b.i=4;a>1?(b.c=rdb(this,a-1)):(b.c=this);return b};_.me=function qdb(){fdb(this);return this.b};_.ne=function sdb(){return hdb(this)};_.oe=function udb(){return fdb(this),this.k};_.pe=function wdb(){return (this.i&4)!=0};_.qe=function xdb(){return (this.i&1)!=0};_.Ib=function Adb(){return idb(this)};_.i=0;var edb=1;var SI=mdb(Phe,'Object',1);var AI=mdb(Phe,'Class',290);bcb(1998,1,Qhe);var $D=mdb(Rhe,'Optional',1998);bcb(1170,1998,Qhe,xb);_.Fb=function yb(a){return a===this};_.Hb=function zb(){return 2040732332};_.Ib=function Ab(){return 'Optional.absent()'};_.Jb=function Bb(a){Qb(a);return wb(),vb};var vb;var YD=mdb(Rhe,'Absent',1170);bcb(628,1,{},Gb);var ZD=mdb(Rhe,'Joiner',628);var _D=odb(Rhe,'Predicate');bcb(582,1,{169:1,582:1,3:1,45:1},Yb);_.Mb=function ac(a){return Xb(this,a)};_.Lb=function Zb(a){return Xb(this,a)};_.Fb=function $b(a){var b;if(JD(a,582)){b=BD(a,582);return At(this.a,b.a)}return false};_.Hb=function _b(){return qmb(this.a)+306654252};_.Ib=function bc(){return Wb(this.a)};var aE=mdb(Rhe,'Predicates/AndPredicate',582);bcb(408,1998,{408:1,3:1},cc);_.Fb=function dc(a){var b;if(JD(a,408)){b=BD(a,408);return pb(this.a,b.a)}return false};_.Hb=function ec(){return 1502476572+tb(this.a)};_.Ib=function fc(){return Whe+this.a+')'};_.Jb=function gc(a){return new cc(Rb(a.Kb(this.a),'the Function passed to Optional.transform() must not return null.'))};var bE=mdb(Rhe,'Present',408);bcb(198,1,Yhe);_.Nb=function kc(a){Rrb(this,a)};_.Qb=function lc(){jc()};var MH=mdb(Zhe,'UnmodifiableIterator',198);bcb(1978,198,$he);_.Qb=function nc(){jc()};_.Rb=function mc(a){throw vbb(new bgb)};_.Wb=function oc(a){throw vbb(new bgb)};var NH=mdb(Zhe,'UnmodifiableListIterator',1978);bcb(386,1978,$he);_.Ob=function rc(){return this.c0};_.Pb=function tc(){if(this.c>=this.d){throw vbb(new utb)}return this.Xb(this.c++)};_.Tb=function uc(){return this.c};_.Ub=function vc(){if(this.c<=0){throw vbb(new utb)}return this.Xb(--this.c)};_.Vb=function wc(){return this.c-1};_.c=0;_.d=0;var cE=mdb(Zhe,'AbstractIndexedListIterator',386);bcb(699,198,Yhe);_.Ob=function Ac(){return xc(this)};_.Pb=function Bc(){return yc(this)};_.e=1;var dE=mdb(Zhe,'AbstractIterator',699);bcb(1986,1,{224:1});_.Zb=function Hc(){var a;return a=this.f,!a?(this.f=this.ac()):a};_.Fb=function Ic(a){return hw(this,a)};_.Hb=function Jc(){return tb(this.Zb())};_.dc=function Kc(){return this.gc()==0};_.ec=function Lc(){return Ec(this)};_.Ib=function Mc(){return fcb(this.Zb())};var IE=mdb(Zhe,'AbstractMultimap',1986);bcb(726,1986,_he);_.$b=function Xc(){Nc(this)};_._b=function Yc(a){return Oc(this,a)};_.ac=function Zc(){return new ne(this,this.c)};_.ic=function $c(a){return this.hc()};_.bc=function _c(){return new zf(this,this.c)};_.jc=function ad(){return this.mc(this.hc())};_.kc=function bd(){return new Hd(this)};_.lc=function cd(){return Yj(this.c.vc().Nc(),new $g,64,this.d)};_.cc=function dd(a){return Qc(this,a)};_.fc=function gd(a){return Sc(this,a)};_.gc=function hd(){return this.d};_.mc=function jd(a){return mmb(),new lnb(a)};_.nc=function kd(){return new Dd(this)};_.oc=function ld(){return Yj(this.c.Cc().Nc(),new Fd,64,this.d)};_.pc=function md(a,b){return new dg(this,a,b,null)};_.d=0;var DE=mdb(Zhe,'AbstractMapBasedMultimap',726);bcb(1631,726,_he);_.hc=function pd(){return new Skb(this.a)};_.jc=function qd(){return mmb(),mmb(),jmb};_.cc=function sd(a){return BD(Qc(this,a),15)};_.fc=function ud(a){return BD(Sc(this,a),15)};_.Zb=function od(){return nd(this)};_.Fb=function rd(a){return hw(this,a)};_.qc=function td(a){return BD(Qc(this,a),15)};_.rc=function vd(a){return BD(Sc(this,a),15)};_.mc=function wd(a){return vmb(BD(a,15))};_.pc=function xd(a,b){return Vc(this,a,BD(b,15),null)};var eE=mdb(Zhe,'AbstractListMultimap',1631);bcb(732,1,aie);_.Nb=function zd(a){Rrb(this,a)};_.Ob=function Ad(){return this.c.Ob()||this.e.Ob()};_.Pb=function Bd(){var a;if(!this.e.Ob()){a=BD(this.c.Pb(),42);this.b=a.cd();this.a=BD(a.dd(),14);this.e=this.a.Kc()}return this.sc(this.b,this.e.Pb())};_.Qb=function Cd(){this.e.Qb();this.a.dc()&&this.c.Qb();--this.d.d};var mE=mdb(Zhe,'AbstractMapBasedMultimap/Itr',732);bcb(1099,732,aie,Dd);_.sc=function Ed(a,b){return b};var fE=mdb(Zhe,'AbstractMapBasedMultimap/1',1099);bcb(1100,1,{},Fd);_.Kb=function Gd(a){return BD(a,14).Nc()};var gE=mdb(Zhe,'AbstractMapBasedMultimap/1methodref$spliterator$Type',1100);bcb(1101,732,aie,Hd);_.sc=function Id(a,b){return new Wo(a,b)};var hE=mdb(Zhe,'AbstractMapBasedMultimap/2',1101);var DK=odb(bie,'Map');bcb(1967,1,cie);_.wc=function Td(a){stb(this,a)};_.yc=function $d(a,b,c){return ttb(this,a,b,c)};_.$b=function Od(){this.vc().$b()};_.tc=function Pd(a){return Jd(this,a)};_._b=function Qd(a){return !!Kd(this,a,false)};_.uc=function Rd(a){var b,c,d;for(c=this.vc().Kc();c.Ob();){b=BD(c.Pb(),42);d=b.dd();if(PD(a)===PD(d)||a!=null&&pb(a,d)){return true}}return false};_.Fb=function Sd(a){var b,c,d;if(a===this){return true}if(!JD(a,83)){return false}d=BD(a,83);if(this.gc()!=d.gc()){return false}for(c=d.vc().Kc();c.Ob();){b=BD(c.Pb(),42);if(!this.tc(b)){return false}}return true};_.xc=function Ud(a){return Wd(Kd(this,a,false))};_.Hb=function Xd(){return pmb(this.vc())};_.dc=function Yd(){return this.gc()==0};_.ec=function Zd(){return new Pib(this)};_.zc=function _d(a,b){throw vbb(new cgb('Put not supported on this map'))};_.Ac=function ae(a){Ld(this,a)};_.Bc=function be(a){return Wd(Kd(this,a,true))};_.gc=function ce(){return this.vc().gc()};_.Ib=function de(){return Md(this)};_.Cc=function ee(){return new $ib(this)};var sJ=mdb(bie,'AbstractMap',1967);bcb(1987,1967,cie);_.bc=function ge(){return new rf(this)};_.vc=function he(){return fe(this)};_.ec=function ie(){var a;a=this.g;return !a?(this.g=this.bc()):a};_.Cc=function je(){var a;a=this.i;return !a?(this.i=new Zv(this)):a};var bH=mdb(Zhe,'Maps/ViewCachingAbstractMap',1987);bcb(389,1987,cie,ne);_.xc=function se(a){return ke(this,a)};_.Bc=function ve(a){return le(this,a)};_.$b=function oe(){this.d==this.e.c?this.e.$b():ir(new mf(this))};_._b=function pe(a){return Gv(this.d,a)};_.Ec=function qe(){return new df(this)};_.Dc=function(){return this.Ec()};_.Fb=function re(a){return this===a||pb(this.d,a)};_.Hb=function te(){return tb(this.d)};_.ec=function ue(){return this.e.ec()};_.gc=function we(){return this.d.gc()};_.Ib=function xe(){return fcb(this.d)};var lE=mdb(Zhe,'AbstractMapBasedMultimap/AsMap',389);var KI=odb(Phe,'Iterable');bcb(28,1,die);_.Jc=function Le(a){reb(this,a)};_.Lc=function Ne(){return this.Oc()};_.Nc=function Pe(){return new Kub(this,0)};_.Oc=function Qe(){return new YAb(null,this.Nc())};_.Fc=function Ge(a){throw vbb(new cgb('Add not supported on this collection'))};_.Gc=function He(a){return ye(this,a)};_.$b=function Ie(){Ae(this)};_.Hc=function Je(a){return ze(this,a,false)};_.Ic=function Ke(a){return Be(this,a)};_.dc=function Me(){return this.gc()==0};_.Mc=function Oe(a){return ze(this,a,true)};_.Pc=function Re(){return De(this)};_.Qc=function Se(a){return Ee(this,a)};_.Ib=function Te(){return Fe(this)};var dJ=mdb(bie,'AbstractCollection',28);var LK=odb(bie,'Set');bcb(eie,28,fie);_.Nc=function Ye(){return new Kub(this,1)};_.Fb=function We(a){return Ue(this,a)};_.Hb=function Xe(){return pmb(this)};var zJ=mdb(bie,'AbstractSet',eie);bcb(1970,eie,fie);var BH=mdb(Zhe,'Sets/ImprovedAbstractSet',1970);bcb(1971,1970,fie);_.$b=function $e(){this.Rc().$b()};_.Hc=function _e(a){return Ze(this,a)};_.dc=function af(){return this.Rc().dc()};_.Mc=function bf(a){var b;if(this.Hc(a)){b=BD(a,42);return this.Rc().ec().Mc(b.cd())}return false};_.gc=function cf(){return this.Rc().gc()};var WG=mdb(Zhe,'Maps/EntrySet',1971);bcb(1097,1971,fie,df);_.Hc=function ef(a){return Ck(this.a.d.vc(),a)};_.Kc=function ff(){return new mf(this.a)};_.Rc=function gf(){return this.a};_.Mc=function hf(a){var b;if(!Ck(this.a.d.vc(),a)){return false}b=BD(a,42);Tc(this.a.e,b.cd());return true};_.Nc=function jf(){return $j(this.a.d.vc().Nc(),new kf(this.a))};var jE=mdb(Zhe,'AbstractMapBasedMultimap/AsMap/AsMapEntries',1097);bcb(1098,1,{},kf);_.Kb=function lf(a){return me(this.a,BD(a,42))};var iE=mdb(Zhe,'AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type',1098);bcb(730,1,aie,mf);_.Nb=function nf(a){Rrb(this,a)};_.Pb=function pf(){var a;return a=BD(this.b.Pb(),42),this.a=BD(a.dd(),14),me(this.c,a)};_.Ob=function of(){return this.b.Ob()};_.Qb=function qf(){Vb(!!this.a);this.b.Qb();this.c.e.d-=this.a.gc();this.a.$b();this.a=null};var kE=mdb(Zhe,'AbstractMapBasedMultimap/AsMap/AsMapIterator',730);bcb(532,1970,fie,rf);_.$b=function sf(){this.b.$b()};_.Hc=function tf(a){return this.b._b(a)};_.Jc=function uf(a){Qb(a);this.b.wc(new Xv(a))};_.dc=function vf(){return this.b.dc()};_.Kc=function wf(){return new Mv(this.b.vc().Kc())};_.Mc=function xf(a){if(this.b._b(a)){this.b.Bc(a);return true}return false};_.gc=function yf(){return this.b.gc()};var $G=mdb(Zhe,'Maps/KeySet',532);bcb(318,532,fie,zf);_.$b=function Af(){var a;ir((a=this.b.vc().Kc(),new Hf(this,a)))};_.Ic=function Bf(a){return this.b.ec().Ic(a)};_.Fb=function Cf(a){return this===a||pb(this.b.ec(),a)};_.Hb=function Df(){return tb(this.b.ec())};_.Kc=function Ef(){var a;return a=this.b.vc().Kc(),new Hf(this,a)};_.Mc=function Ff(a){var b,c;c=0;b=BD(this.b.Bc(a),14);if(b){c=b.gc();b.$b();this.a.d-=c}return c>0};_.Nc=function Gf(){return this.b.ec().Nc()};var oE=mdb(Zhe,'AbstractMapBasedMultimap/KeySet',318);bcb(731,1,aie,Hf);_.Nb=function If(a){Rrb(this,a)};_.Ob=function Jf(){return this.c.Ob()};_.Pb=function Kf(){this.a=BD(this.c.Pb(),42);return this.a.cd()};_.Qb=function Lf(){var a;Vb(!!this.a);a=BD(this.a.dd(),14);this.c.Qb();this.b.a.d-=a.gc();a.$b();this.a=null};var nE=mdb(Zhe,'AbstractMapBasedMultimap/KeySet/1',731);bcb(491,389,{83:1,161:1},Mf);_.bc=function Nf(){return this.Sc()};_.ec=function Pf(){return this.Tc()};_.Sc=function Of(){return new Yf(this.c,this.Uc())};_.Tc=function Qf(){var a;return a=this.b,!a?(this.b=this.Sc()):a};_.Uc=function Rf(){return BD(this.d,161)};var sE=mdb(Zhe,'AbstractMapBasedMultimap/SortedAsMap',491);bcb(542,491,gie,Sf);_.bc=function Tf(){return new $f(this.a,BD(BD(this.d,161),171))};_.Sc=function Uf(){return new $f(this.a,BD(BD(this.d,161),171))};_.ec=function Vf(){var a;return a=this.b,BD(!a?(this.b=new $f(this.a,BD(BD(this.d,161),171))):a,271)};_.Tc=function Wf(){var a;return a=this.b,BD(!a?(this.b=new $f(this.a,BD(BD(this.d,161),171))):a,271)};_.Uc=function Xf(){return BD(BD(this.d,161),171)};var pE=mdb(Zhe,'AbstractMapBasedMultimap/NavigableAsMap',542);bcb(490,318,hie,Yf);_.Nc=function Zf(){return this.b.ec().Nc()};var tE=mdb(Zhe,'AbstractMapBasedMultimap/SortedKeySet',490);bcb(388,490,iie,$f);var qE=mdb(Zhe,'AbstractMapBasedMultimap/NavigableKeySet',388);bcb(541,28,die,dg);_.Fc=function eg(a){var b,c;ag(this);c=this.d.dc();b=this.d.Fc(a);if(b){++this.f.d;c&&_f(this)}return b};_.Gc=function fg(a){var b,c,d;if(a.dc()){return false}d=(ag(this),this.d.gc());b=this.d.Gc(a);if(b){c=this.d.gc();this.f.d+=c-d;d==0&&_f(this)}return b};_.$b=function gg(){var a;a=(ag(this),this.d.gc());if(a==0){return}this.d.$b();this.f.d-=a;bg(this)};_.Hc=function hg(a){ag(this);return this.d.Hc(a)};_.Ic=function ig(a){ag(this);return this.d.Ic(a)};_.Fb=function jg(a){if(a===this){return true}ag(this);return pb(this.d,a)};_.Hb=function kg(){ag(this);return tb(this.d)};_.Kc=function lg(){ag(this);return new Gg(this)};_.Mc=function mg(a){var b;ag(this);b=this.d.Mc(a);if(b){--this.f.d;bg(this)}return b};_.gc=function ng(){return cg(this)};_.Nc=function og(){return ag(this),this.d.Nc()};_.Ib=function pg(){ag(this);return fcb(this.d)};var vE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedCollection',541);var yK=odb(bie,'List');bcb(728,541,{20:1,28:1,14:1,15:1},qg);_.ad=function zg(a){ktb(this,a)};_.Nc=function Ag(){return ag(this),this.d.Nc()};_.Vc=function rg(a,b){var c;ag(this);c=this.d.dc();BD(this.d,15).Vc(a,b);++this.a.d;c&&_f(this)};_.Wc=function sg(a,b){var c,d,e;if(b.dc()){return false}e=(ag(this),this.d.gc());c=BD(this.d,15).Wc(a,b);if(c){d=this.d.gc();this.a.d+=d-e;e==0&&_f(this)}return c};_.Xb=function tg(a){ag(this);return BD(this.d,15).Xb(a)};_.Xc=function ug(a){ag(this);return BD(this.d,15).Xc(a)};_.Yc=function vg(){ag(this);return new Mg(this)};_.Zc=function wg(a){ag(this);return new Ng(this,a)};_.$c=function xg(a){var b;ag(this);b=BD(this.d,15).$c(a);--this.a.d;bg(this);return b};_._c=function yg(a,b){ag(this);return BD(this.d,15)._c(a,b)};_.bd=function Bg(a,b){ag(this);return Vc(this.a,this.e,BD(this.d,15).bd(a,b),!this.b?this:this.b)};var xE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedList',728);bcb(1096,728,{20:1,28:1,14:1,15:1,54:1},Cg);var rE=mdb(Zhe,'AbstractMapBasedMultimap/RandomAccessWrappedList',1096);bcb(620,1,aie,Gg);_.Nb=function Ig(a){Rrb(this,a)};_.Ob=function Jg(){Fg(this);return this.b.Ob()};_.Pb=function Kg(){Fg(this);return this.b.Pb()};_.Qb=function Lg(){Eg(this)};var uE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedCollection/WrappedIterator',620);bcb(729,620,jie,Mg,Ng);_.Qb=function Tg(){Eg(this)};_.Rb=function Og(a){var b;b=cg(this.a)==0;(Fg(this),BD(this.b,125)).Rb(a);++this.a.a.d;b&&_f(this.a)};_.Sb=function Pg(){return (Fg(this),BD(this.b,125)).Sb()};_.Tb=function Qg(){return (Fg(this),BD(this.b,125)).Tb()};_.Ub=function Rg(){return (Fg(this),BD(this.b,125)).Ub()};_.Vb=function Sg(){return (Fg(this),BD(this.b,125)).Vb()};_.Wb=function Ug(a){(Fg(this),BD(this.b,125)).Wb(a)};var wE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedList/WrappedListIterator',729);bcb(727,541,hie,Vg);_.Nc=function Wg(){return ag(this),this.d.Nc()};var AE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedSortedSet',727);bcb(1095,727,iie,Xg);var yE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedNavigableSet',1095);bcb(1094,541,fie,Yg);_.Nc=function Zg(){return ag(this),this.d.Nc()};var zE=mdb(Zhe,'AbstractMapBasedMultimap/WrappedSet',1094);bcb(1103,1,{},$g);_.Kb=function _g(a){return fd(BD(a,42))};var BE=mdb(Zhe,'AbstractMapBasedMultimap/lambda$1$Type',1103);bcb(1102,1,{},ah);_.Kb=function bh(a){return new Wo(this.a,a)};var CE=mdb(Zhe,'AbstractMapBasedMultimap/lambda$2$Type',1102);var CK=odb(bie,'Map/Entry');bcb(345,1,kie);_.Fb=function dh(a){var b;if(JD(a,42)){b=BD(a,42);return Hb(this.cd(),b.cd())&&Hb(this.dd(),b.dd())}return false};_.Hb=function eh(){var a,b;a=this.cd();b=this.dd();return (a==null?0:tb(a))^(b==null?0:tb(b))};_.ed=function fh(a){throw vbb(new bgb)};_.Ib=function gh(){return this.cd()+'='+this.dd()};var EE=mdb(Zhe,lie,345);bcb(1988,28,die);_.$b=function hh(){this.fd().$b()};_.Hc=function ih(a){var b;if(JD(a,42)){b=BD(a,42);return Cc(this.fd(),b.cd(),b.dd())}return false};_.Mc=function jh(a){var b;if(JD(a,42)){b=BD(a,42);return Gc(this.fd(),b.cd(),b.dd())}return false};_.gc=function kh(){return this.fd().d};var fH=mdb(Zhe,'Multimaps/Entries',1988);bcb(733,1988,die,lh);_.Kc=function mh(){return this.a.kc()};_.fd=function nh(){return this.a};_.Nc=function oh(){return this.a.lc()};var FE=mdb(Zhe,'AbstractMultimap/Entries',733);bcb(734,733,fie,ph);_.Nc=function sh(){return this.a.lc()};_.Fb=function qh(a){return Ax(this,a)};_.Hb=function rh(){return Bx(this)};var GE=mdb(Zhe,'AbstractMultimap/EntrySet',734);bcb(735,28,die,th);_.$b=function uh(){this.a.$b()};_.Hc=function vh(a){return Dc(this.a,a)};_.Kc=function wh(){return this.a.nc()};_.gc=function xh(){return this.a.d};_.Nc=function yh(){return this.a.oc()};var HE=mdb(Zhe,'AbstractMultimap/Values',735);bcb(1989,28,{835:1,20:1,28:1,14:1});_.Jc=function Gh(a){Qb(a);Ah(this).Jc(new Xw(a))};_.Nc=function Kh(){var a;return a=Ah(this).Nc(),Yj(a,new cx,64|a.qd()&1296,this.a.d)};_.Fc=function Ch(a){zh();return true};_.Gc=function Dh(a){return Qb(this),Qb(a),JD(a,543)?Zw(BD(a,835)):!a.dc()&&fr(this,a.Kc())};_.Hc=function Eh(a){var b;return b=BD(Hv(nd(this.a),a),14),(!b?0:b.gc())>0};_.Fb=function Fh(a){return $w(this,a)};_.Hb=function Hh(){return tb(Ah(this))};_.dc=function Ih(){return Ah(this).dc()};_.Mc=function Jh(a){return Bw(this,a,1)>0};_.Ib=function Lh(){return fcb(Ah(this))};var KE=mdb(Zhe,'AbstractMultiset',1989);bcb(1991,1970,fie);_.$b=function Mh(){Nc(this.a.a)};_.Hc=function Nh(a){var b,c;if(JD(a,492)){c=BD(a,416);if(BD(c.a.dd(),14).gc()<=0){return false}b=Aw(this.a,c.a.cd());return b==BD(c.a.dd(),14).gc()}return false};_.Mc=function Oh(a){var b,c,d,e;if(JD(a,492)){c=BD(a,416);b=c.a.cd();d=BD(c.a.dd(),14).gc();if(d!=0){e=this.a;return ax(e,b,d)}}return false};var pH=mdb(Zhe,'Multisets/EntrySet',1991);bcb(1109,1991,fie,Ph);_.Kc=function Qh(){return new Lw(fe(nd(this.a.a)).Kc())};_.gc=function Rh(){return nd(this.a.a).gc()};var JE=mdb(Zhe,'AbstractMultiset/EntrySet',1109);bcb(619,726,_he);_.hc=function Uh(){return this.gd()};_.jc=function Vh(){return this.hd()};_.cc=function Yh(a){return this.jd(a)};_.fc=function $h(a){return this.kd(a)};_.Zb=function Th(){var a;return a=this.f,!a?(this.f=this.ac()):a};_.hd=function Wh(){return mmb(),mmb(),lmb};_.Fb=function Xh(a){return hw(this,a)};_.jd=function Zh(a){return BD(Qc(this,a),21)};_.kd=function _h(a){return BD(Sc(this,a),21)};_.mc=function ai(a){return mmb(),new zob(BD(a,21))};_.pc=function bi(a,b){return new Yg(this,a,BD(b,21))};var LE=mdb(Zhe,'AbstractSetMultimap',619);bcb(1657,619,_he);_.hc=function ei(){return new Hxb(this.b)};_.gd=function fi(){return new Hxb(this.b)};_.jc=function gi(){return Ix(new Hxb(this.b))};_.hd=function hi(){return Ix(new Hxb(this.b))};_.cc=function ii(a){return BD(BD(Qc(this,a),21),84)};_.jd=function ji(a){return BD(BD(Qc(this,a),21),84)};_.fc=function ki(a){return BD(BD(Sc(this,a),21),84)};_.kd=function li(a){return BD(BD(Sc(this,a),21),84)};_.mc=function mi(a){return JD(a,271)?Ix(BD(a,271)):(mmb(),new Zob(BD(a,84)))};_.Zb=function di(){var a;return a=this.f,!a?(this.f=JD(this.c,171)?new Sf(this,BD(this.c,171)):JD(this.c,161)?new Mf(this,BD(this.c,161)):new ne(this,this.c)):a};_.pc=function ni(a,b){return JD(b,271)?new Xg(this,a,BD(b,271)):new Vg(this,a,BD(b,84))};var NE=mdb(Zhe,'AbstractSortedSetMultimap',1657);bcb(1658,1657,_he);_.Zb=function pi(){var a;return a=this.f,BD(BD(!a?(this.f=JD(this.c,171)?new Sf(this,BD(this.c,171)):JD(this.c,161)?new Mf(this,BD(this.c,161)):new ne(this,this.c)):a,161),171)};_.ec=function ri(){var a;return a=this.i,BD(BD(!a?(this.i=JD(this.c,171)?new $f(this,BD(this.c,171)):JD(this.c,161)?new Yf(this,BD(this.c,161)):new zf(this,this.c)):a,84),271)};_.bc=function qi(){return JD(this.c,171)?new $f(this,BD(this.c,171)):JD(this.c,161)?new Yf(this,BD(this.c,161)):new zf(this,this.c)};var ME=mdb(Zhe,'AbstractSortedKeySortedSetMultimap',1658);bcb(2010,1,{1947:1});_.Fb=function si(a){return zy(this,a)};_.Hb=function ti(){var a;return pmb((a=this.g,!a?(this.g=new vi(this)):a))};_.Ib=function ui(){var a;return Md((a=this.f,!a?(this.f=new Rj(this)):a))};var QE=mdb(Zhe,'AbstractTable',2010);bcb(665,eie,fie,vi);_.$b=function wi(){Pi()};_.Hc=function xi(a){var b,c;if(JD(a,468)){b=BD(a,682);c=BD(Hv(Vi(this.a),Em(b.c.e,b.b)),83);return !!c&&Ck(c.vc(),new Wo(Em(b.c.c,b.a),Mi(b.c,b.b,b.a)))}return false};_.Kc=function yi(){return Ni(this.a)};_.Mc=function zi(a){var b,c;if(JD(a,468)){b=BD(a,682);c=BD(Hv(Vi(this.a),Em(b.c.e,b.b)),83);return !!c&&Dk(c.vc(),new Wo(Em(b.c.c,b.a),Mi(b.c,b.b,b.a)))}return false};_.gc=function Ai(){return Xi(this.a)};_.Nc=function Bi(){return Oi(this.a)};var OE=mdb(Zhe,'AbstractTable/CellSet',665);bcb(1928,28,die,Ci);_.$b=function Di(){Pi()};_.Hc=function Ei(a){return Qi(this.a,a)};_.Kc=function Fi(){return Zi(this.a)};_.gc=function Gi(){return Xi(this.a)};_.Nc=function Hi(){return $i(this.a)};var PE=mdb(Zhe,'AbstractTable/Values',1928);bcb(1632,1631,_he);var RE=mdb(Zhe,'ArrayListMultimapGwtSerializationDependencies',1632);bcb(513,1632,_he,Ji,Ki);_.hc=function Li(){return new Skb(this.a)};_.a=0;var SE=mdb(Zhe,'ArrayListMultimap',513);bcb(664,2010,{664:1,1947:1,3:1},_i);var cF=mdb(Zhe,'ArrayTable',664);bcb(1924,386,$he,aj);_.Xb=function bj(a){return new hj(this.a,a)};var TE=mdb(Zhe,'ArrayTable/1',1924);bcb(1925,1,{},cj);_.ld=function dj(a){return new hj(this.a,a)};var UE=mdb(Zhe,'ArrayTable/1methodref$getCell$Type',1925);bcb(2011,1,{682:1});_.Fb=function ej(a){var b;if(a===this){return true}if(JD(a,468)){b=BD(a,682);return Hb(Em(this.c.e,this.b),Em(b.c.e,b.b))&&Hb(Em(this.c.c,this.a),Em(b.c.c,b.a))&&Hb(Mi(this.c,this.b,this.a),Mi(b.c,b.b,b.a))}return false};_.Hb=function fj(){return Hlb(OC(GC(SI,1),Uhe,1,5,[Em(this.c.e,this.b),Em(this.c.c,this.a),Mi(this.c,this.b,this.a)]))};_.Ib=function gj(){return '('+Em(this.c.e,this.b)+','+Em(this.c.c,this.a)+')='+Mi(this.c,this.b,this.a)};var JH=mdb(Zhe,'Tables/AbstractCell',2011);bcb(468,2011,{468:1,682:1},hj);_.a=0;_.b=0;_.d=0;var VE=mdb(Zhe,'ArrayTable/2',468);bcb(1927,1,{},ij);_.ld=function jj(a){return Ti(this.a,a)};var WE=mdb(Zhe,'ArrayTable/2methodref$getValue$Type',1927);bcb(1926,386,$he,kj);_.Xb=function lj(a){return Ti(this.a,a)};var XE=mdb(Zhe,'ArrayTable/3',1926);bcb(1979,1967,cie);_.$b=function nj(){ir(this.kc())};_.vc=function oj(){return new Sv(this)};_.lc=function pj(){return new Mub(this.kc(),this.gc())};var YG=mdb(Zhe,'Maps/IteratorBasedAbstractMap',1979);bcb(828,1979,cie);_.$b=function tj(){throw vbb(new bgb)};_._b=function uj(a){return sn(this.c,a)};_.kc=function vj(){return new Jj(this,this.c.b.c.gc())};_.lc=function wj(){return Zj(this.c.b.c.gc(),16,new Dj(this))};_.xc=function xj(a){var b;b=BD(tn(this.c,a),19);return !b?null:this.nd(b.a)};_.dc=function yj(){return this.c.b.c.dc()};_.ec=function zj(){return Xm(this.c)};_.zc=function Aj(a,b){var c;c=BD(tn(this.c,a),19);if(!c){throw vbb(new Wdb(this.md()+' '+a+' not in '+Xm(this.c)))}return this.od(c.a,b)};_.Bc=function Bj(a){throw vbb(new bgb)};_.gc=function Cj(){return this.c.b.c.gc()};var _E=mdb(Zhe,'ArrayTable/ArrayMap',828);bcb(1923,1,{},Dj);_.ld=function Ej(a){return qj(this.a,a)};var YE=mdb(Zhe,'ArrayTable/ArrayMap/0methodref$getEntry$Type',1923);bcb(1921,345,kie,Fj);_.cd=function Gj(){return rj(this.a,this.b)};_.dd=function Hj(){return this.a.nd(this.b)};_.ed=function Ij(a){return this.a.od(this.b,a)};_.b=0;var ZE=mdb(Zhe,'ArrayTable/ArrayMap/1',1921);bcb(1922,386,$he,Jj);_.Xb=function Kj(a){return qj(this.a,a)};var $E=mdb(Zhe,'ArrayTable/ArrayMap/2',1922);bcb(1920,828,cie,Lj);_.md=function Mj(){return 'Column'};_.nd=function Nj(a){return Mi(this.b,this.a,a)};_.od=function Oj(a,b){return Wi(this.b,this.a,a,b)};_.a=0;var bF=mdb(Zhe,'ArrayTable/Row',1920);bcb(829,828,cie,Rj);_.nd=function Tj(a){return new Lj(this.a,a)};_.zc=function Uj(a,b){return BD(b,83),Pj()};_.od=function Vj(a,b){return BD(b,83),Qj()};_.md=function Sj(){return 'Row'};var aF=mdb(Zhe,'ArrayTable/RowMap',829);bcb(1120,1,pie,_j);_.qd=function ak(){return this.a.qd()&-262};_.rd=function bk(){return this.a.rd()};_.Nb=function ck(a){this.a.Nb(new gk(a,this.b))};_.sd=function dk(a){return this.a.sd(new ek(a,this.b))};var lF=mdb(Zhe,'CollectSpliterators/1',1120);bcb(1121,1,qie,ek);_.td=function fk(a){this.a.td(this.b.Kb(a))};var dF=mdb(Zhe,'CollectSpliterators/1/lambda$0$Type',1121);bcb(1122,1,qie,gk);_.td=function hk(a){this.a.td(this.b.Kb(a))};var eF=mdb(Zhe,'CollectSpliterators/1/lambda$1$Type',1122);bcb(1123,1,pie,jk);_.qd=function kk(){return this.a};_.rd=function lk(){!!this.d&&(this.b=Deb(this.b,this.d.rd()));return Deb(this.b,0)};_.Nb=function mk(a){if(this.d){this.d.Nb(a);this.d=null}this.c.Nb(new rk(this.e,a));this.b=0};_.sd=function ok(a){while(true){if(!!this.d&&this.d.sd(a)){Kbb(this.b,rie)&&(this.b=Qbb(this.b,1));return true}else{this.d=null}if(!this.c.sd(new pk(this,this.e))){return false}}};_.a=0;_.b=0;var hF=mdb(Zhe,'CollectSpliterators/1FlatMapSpliterator',1123);bcb(1124,1,qie,pk);_.td=function qk(a){ik(this.a,this.b,a)};var fF=mdb(Zhe,'CollectSpliterators/1FlatMapSpliterator/lambda$0$Type',1124);bcb(1125,1,qie,rk);_.td=function sk(a){nk(this.b,this.a,a)};var gF=mdb(Zhe,'CollectSpliterators/1FlatMapSpliterator/lambda$1$Type',1125);bcb(1117,1,pie,tk);_.qd=function uk(){return 16464|this.b};_.rd=function vk(){return this.a.rd()};_.Nb=function wk(a){this.a.xe(new Ak(a,this.c))};_.sd=function xk(a){return this.a.ye(new yk(a,this.c))};_.b=0;var kF=mdb(Zhe,'CollectSpliterators/1WithCharacteristics',1117);bcb(1118,1,sie,yk);_.ud=function zk(a){this.a.td(this.b.ld(a))};var iF=mdb(Zhe,'CollectSpliterators/1WithCharacteristics/lambda$0$Type',1118);bcb(1119,1,sie,Ak);_.ud=function Bk(a){this.a.td(this.b.ld(a))};var jF=mdb(Zhe,'CollectSpliterators/1WithCharacteristics/lambda$1$Type',1119);bcb(245,1,tie);_.wd=function Hk(a){return this.vd(BD(a,245))};_.vd=function Gk(a){var b;if(a==(_k(),$k)){return 1}if(a==(Lk(),Kk)){return -1}b=(ex(),Fcb(this.a,a.a));if(b!=0){return b}return JD(this,519)==JD(a,519)?0:JD(this,519)?1:-1};_.zd=function Ik(){return this.a};_.Fb=function Jk(a){return Ek(this,a)};var qF=mdb(Zhe,'Cut',245);bcb(1761,245,tie,Mk);_.vd=function Nk(a){return a==this?0:1};_.xd=function Ok(a){throw vbb(new xcb)};_.yd=function Pk(a){a.a+='+\\u221E)'};_.zd=function Qk(){throw vbb(new Zdb(uie))};_.Hb=function Rk(){return Zfb(),kCb(this)};_.Ad=function Sk(a){return false};_.Ib=function Tk(){return '+\\u221E'};var Kk;var mF=mdb(Zhe,'Cut/AboveAll',1761);bcb(519,245,{245:1,519:1,3:1,35:1},Uk);_.xd=function Vk(a){Pfb((a.a+='(',a),this.a)};_.yd=function Wk(a){Kfb(Pfb(a,this.a),93)};_.Hb=function Xk(){return ~tb(this.a)};_.Ad=function Yk(a){return ex(),Fcb(this.a,a)<0};_.Ib=function Zk(){return '/'+this.a+'\\\\'};var nF=mdb(Zhe,'Cut/AboveValue',519);bcb(1760,245,tie,al);_.vd=function bl(a){return a==this?0:-1};_.xd=function cl(a){a.a+='(-\\u221E'};_.yd=function dl(a){throw vbb(new xcb)};_.zd=function el(){throw vbb(new Zdb(uie))};_.Hb=function fl(){return Zfb(),kCb(this)};_.Ad=function gl(a){return true};_.Ib=function hl(){return '-\\u221E'};var $k;var oF=mdb(Zhe,'Cut/BelowAll',1760);bcb(1762,245,tie,il);_.xd=function jl(a){Pfb((a.a+='[',a),this.a)};_.yd=function kl(a){Kfb(Pfb(a,this.a),41)};_.Hb=function ll(){return tb(this.a)};_.Ad=function ml(a){return ex(),Fcb(this.a,a)<=0};_.Ib=function nl(){return '\\\\'+this.a+'/'};var pF=mdb(Zhe,'Cut/BelowValue',1762);bcb(537,1,vie);_.Jc=function ql(a){reb(this,a)};_.Ib=function rl(){return tr(BD(Rb(this,'use Optional.orNull() instead of Optional.or(null)'),20).Kc())};var uF=mdb(Zhe,'FluentIterable',537);bcb(433,537,vie,sl);_.Kc=function tl(){return new Sr(ur(this.a.Kc(),new Sq))};var rF=mdb(Zhe,'FluentIterable/2',433);bcb(1046,537,vie,vl);_.Kc=function wl(){return ul(this)};var tF=mdb(Zhe,'FluentIterable/3',1046);bcb(708,386,$he,xl);_.Xb=function yl(a){return this.a[a].Kc()};var sF=mdb(Zhe,'FluentIterable/3/1',708);bcb(1972,1,{});_.Ib=function zl(){return fcb(this.Bd().b)};var BF=mdb(Zhe,'ForwardingObject',1972);bcb(1973,1972,wie);_.Bd=function Fl(){return this.Cd()};_.Jc=function Gl(a){reb(this,a)};_.Lc=function Jl(){return this.Oc()};_.Nc=function Ml(){return new Kub(this,0)};_.Oc=function Nl(){return new YAb(null,this.Nc())};_.Fc=function Al(a){return this.Cd(),enb()};_.Gc=function Bl(a){return this.Cd(),fnb()};_.$b=function Cl(){this.Cd(),gnb()};_.Hc=function Dl(a){return this.Cd().Hc(a)};_.Ic=function El(a){return this.Cd().Ic(a)};_.dc=function Hl(){return this.Cd().b.dc()};_.Kc=function Il(){return this.Cd().Kc()};_.Mc=function Kl(a){return this.Cd(),jnb()};_.gc=function Ll(){return this.Cd().b.gc()};_.Pc=function Ol(){return this.Cd().Pc()};_.Qc=function Pl(a){return this.Cd().Qc(a)};var vF=mdb(Zhe,'ForwardingCollection',1973);bcb(1980,28,xie);_.Kc=function Xl(){return this.Ed()};_.Fc=function Sl(a){throw vbb(new bgb)};_.Gc=function Tl(a){throw vbb(new bgb)};_.$b=function Ul(){throw vbb(new bgb)};_.Hc=function Vl(a){return a!=null&&ze(this,a,false)};_.Dd=function Wl(){switch(this.gc()){case 0:return im(),im(),hm;case 1:return im(),new my(Qb(this.Ed().Pb()));default:return new px(this,this.Pc());}};_.Mc=function Yl(a){throw vbb(new bgb)};var WF=mdb(Zhe,'ImmutableCollection',1980);bcb(712,1980,xie,Zl);_.Kc=function cm(){return vr(this.a.Kc())};_.Hc=function $l(a){return a!=null&&this.a.Hc(a)};_.Ic=function _l(a){return this.a.Ic(a)};_.dc=function am(){return this.a.dc()};_.Ed=function bm(){return vr(this.a.Kc())};_.gc=function dm(){return this.a.gc()};_.Pc=function em(){return this.a.Pc()};_.Qc=function fm(a){return this.a.Qc(a)};_.Ib=function gm(){return fcb(this.a)};var wF=mdb(Zhe,'ForwardingImmutableCollection',712);bcb(152,1980,yie);_.Kc=function sm(){return this.Ed()};_.Yc=function tm(){return this.Fd(0)};_.Zc=function vm(a){return this.Fd(a)};_.ad=function zm(a){ktb(this,a)};_.Nc=function Am(){return new Kub(this,16)};_.bd=function Cm(a,b){return this.Gd(a,b)};_.Vc=function lm(a,b){throw vbb(new bgb)};_.Wc=function mm(a,b){throw vbb(new bgb)};_.Fb=function om(a){return Ju(this,a)};_.Hb=function pm(){return Ku(this)};_.Xc=function qm(a){return a==null?-1:Lu(this,a)};_.Ed=function rm(){return this.Fd(0)};_.Fd=function um(a){return jm(this,a)};_.$c=function xm(a){throw vbb(new bgb)};_._c=function ym(a,b){throw vbb(new bgb)};_.Gd=function Bm(a,b){var c;return Dm((c=new $u(this),new Jib(c,a,b)))};var hm;var _F=mdb(Zhe,'ImmutableList',152);bcb(2006,152,yie);_.Kc=function Nm(){return vr(this.Hd().Kc())};_.bd=function Qm(a,b){return Dm(this.Hd().bd(a,b))};_.Hc=function Fm(a){return a!=null&&this.Hd().Hc(a)};_.Ic=function Gm(a){return this.Hd().Ic(a)};_.Fb=function Hm(a){return pb(this.Hd(),a)};_.Xb=function Im(a){return Em(this,a)};_.Hb=function Jm(){return tb(this.Hd())};_.Xc=function Km(a){return this.Hd().Xc(a)};_.dc=function Lm(){return this.Hd().dc()};_.Ed=function Mm(){return vr(this.Hd().Kc())};_.gc=function Om(){return this.Hd().gc()};_.Gd=function Pm(a,b){return Dm(this.Hd().bd(a,b))};_.Pc=function Rm(){return this.Hd().Qc(KC(SI,Uhe,1,this.Hd().gc(),5,1))};_.Qc=function Sm(a){return this.Hd().Qc(a)};_.Ib=function Tm(){return fcb(this.Hd())};var xF=mdb(Zhe,'ForwardingImmutableList',2006);bcb(714,1,Aie);_.vc=function cn(){return Wm(this)};_.wc=function en(a){stb(this,a)};_.ec=function jn(){return Xm(this)};_.yc=function kn(a,b,c){return ttb(this,a,b,c)};_.Cc=function rn(){return this.Ld()};_.$b=function Zm(){throw vbb(new bgb)};_._b=function $m(a){return this.xc(a)!=null};_.uc=function _m(a){return this.Ld().Hc(a)};_.Jd=function an(){return new jq(this)};_.Kd=function bn(){return new sq(this)};_.Fb=function dn(a){return Dv(this,a)};_.Hb=function gn(){return Wm(this).Hb()};_.dc=function hn(){return this.gc()==0};_.zc=function nn(a,b){return Ym()};_.Bc=function on(a){throw vbb(new bgb)};_.Ib=function pn(){return Jv(this)};_.Ld=function qn(){if(this.e){return this.e}return this.e=this.Kd()};_.c=null;_.d=null;_.e=null;var Um;var iG=mdb(Zhe,'ImmutableMap',714);bcb(715,714,Aie);_._b=function vn(a){return sn(this,a)};_.uc=function wn(a){return dob(this.b,a)};_.Id=function xn(){return Vn(new Ln(this))};_.Jd=function yn(){return Vn(gob(this.b))};_.Kd=function zn(){return Ql(),new Zl(hob(this.b))};_.Fb=function An(a){return fob(this.b,a)};_.xc=function Bn(a){return tn(this,a)};_.Hb=function Cn(){return tb(this.b.c)};_.dc=function Dn(){return this.b.c.dc()};_.gc=function En(){return this.b.c.gc()};_.Ib=function Fn(){return fcb(this.b.c)};var zF=mdb(Zhe,'ForwardingImmutableMap',715);bcb(1974,1973,Bie);_.Bd=function Gn(){return this.Md()};_.Cd=function Hn(){return this.Md()};_.Nc=function Kn(){return new Kub(this,1)};_.Fb=function In(a){return a===this||this.Md().Fb(a)};_.Hb=function Jn(){return this.Md().Hb()};var CF=mdb(Zhe,'ForwardingSet',1974);bcb(1069,1974,Bie,Ln);_.Bd=function Nn(){return eob(this.a.b)};_.Cd=function On(){return eob(this.a.b)};_.Hc=function Mn(b){if(JD(b,42)&&BD(b,42).cd()==null){return false}try{return Dob(eob(this.a.b),b)}catch(a){a=ubb(a);if(JD(a,205)){return false}else throw vbb(a)}};_.Md=function Pn(){return eob(this.a.b)};_.Qc=function Qn(a){var b;b=Eob(eob(this.a.b),a);eob(this.a.b).b.gc()=0?'+':'')+(c/60|0);b=kB($wnd.Math.abs(c)%60);return (Dpb(),Bpb)[this.q.getDay()]+' '+Cpb[this.q.getMonth()]+' '+kB(this.q.getDate())+' '+kB(this.q.getHours())+':'+kB(this.q.getMinutes())+':'+kB(this.q.getSeconds())+' GMT'+a+b+' '+this.q.getFullYear()};var $J=mdb(bie,'Date',199);bcb(1915,199,Cje,nB);_.a=false;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;_.g=false;_.i=0;_.j=0;_.k=0;_.n=0;_.o=0;_.p=0;var eI=mdb('com.google.gwt.i18n.shared.impl','DateRecord',1915);bcb(1966,1,{});_.fe=function oB(){return null};_.ge=function pB(){return null};_.he=function qB(){return null};_.ie=function rB(){return null};_.je=function sB(){return null};var nI=mdb(Dje,'JSONValue',1966);bcb(216,1966,{216:1},wB,xB);_.Fb=function yB(a){if(!JD(a,216)){return false}return qz(this.a,BD(a,216).a)};_.ee=function zB(){return DB};_.Hb=function AB(){return rz(this.a)};_.fe=function BB(){return this};_.Ib=function CB(){var a,b,c;c=new Wfb('[');for(b=0,a=this.a.length;b0&&(c.a+=',',c);Pfb(c,tB(this,b))}c.a+=']';return c.a};var fI=mdb(Dje,'JSONArray',216);bcb(483,1966,{483:1},HB);_.ee=function IB(){return LB};_.ge=function JB(){return this};_.Ib=function KB(){return Bcb(),''+this.a};_.a=false;var EB,FB;var gI=mdb(Dje,'JSONBoolean',483);bcb(985,60,Tie,MB);var hI=mdb(Dje,'JSONException',985);bcb(1023,1966,{},PB);_.ee=function QB(){return SB};_.Ib=function RB(){return Xhe};var NB;var iI=mdb(Dje,'JSONNull',1023);bcb(258,1966,{258:1},TB);_.Fb=function UB(a){if(!JD(a,258)){return false}return this.a==BD(a,258).a};_.ee=function VB(){return ZB};_.Hb=function WB(){return Hdb(this.a)};_.he=function XB(){return this};_.Ib=function YB(){return this.a+''};_.a=0;var jI=mdb(Dje,'JSONNumber',258);bcb(183,1966,{183:1},eC,fC);_.Fb=function gC(a){if(!JD(a,183)){return false}return qz(this.a,BD(a,183).a)};_.ee=function hC(){return lC};_.Hb=function iC(){return rz(this.a)};_.ie=function jC(){return this};_.Ib=function kC(){var a,b,c,d,e,f,g;g=new Wfb('{');a=true;f=$B(this,KC(ZI,nie,2,0,6,1));for(c=f,d=0,e=c.length;d=0?':'+this.c:'')+')'};_.c=0;var VI=mdb(Phe,'StackTraceElement',310);zD={3:1,475:1,35:1,2:1};var ZI=mdb(Phe,Vie,2);bcb(107,418,{475:1},Hfb,Ifb,Jfb);var WI=mdb(Phe,'StringBuffer',107);bcb(100,418,{475:1},Ufb,Vfb,Wfb);var XI=mdb(Phe,'StringBuilder',100);bcb(687,73,Mje,Xfb);var YI=mdb(Phe,'StringIndexOutOfBoundsException',687);bcb(2043,1,{});var Yfb;bcb(844,1,{},_fb);_.Kb=function agb(a){return BD(a,78).e};var $I=mdb(Phe,'Throwable/lambda$0$Type',844);bcb(41,60,{3:1,102:1,60:1,78:1,41:1},bgb,cgb);var aJ=mdb(Phe,'UnsupportedOperationException',41);bcb(240,236,{3:1,35:1,236:1,240:1},sgb,tgb);_.wd=function wgb(a){return mgb(this,BD(a,240))};_.ke=function xgb(){return Hcb(rgb(this))};_.Fb=function ygb(a){var b;if(this===a){return true}if(JD(a,240)){b=BD(a,240);return this.e==b.e&&mgb(this,b)==0}return false};_.Hb=function zgb(){var a;if(this.b!=0){return this.b}if(this.a<54){a=Cbb(this.f);this.b=Tbb(xbb(a,-1));this.b=33*this.b+Tbb(xbb(Obb(a,32),-1));this.b=17*this.b+QD(this.e);return this.b}this.b=17*Ngb(this.c)+QD(this.e);return this.b};_.Ib=function Agb(){return rgb(this)};_.a=0;_.b=0;_.d=0;_.e=0;_.f=0;var dgb,egb,fgb,ggb,hgb,igb,jgb,kgb;var bJ=mdb('java.math','BigDecimal',240);bcb(91,236,{3:1,35:1,236:1,91:1},Tgb,Ugb,Vgb,Wgb,Xgb,Ygb);_.wd=function $gb(a){return Igb(this,BD(a,91))};_.ke=function _gb(){return Hcb(shb(this,0))};_.Fb=function ahb(a){return Kgb(this,a)};_.Hb=function chb(){return Ngb(this)};_.Ib=function ehb(){return shb(this,0)};_.b=-2;_.c=0;_.d=0;_.e=0;var Bgb,Cgb,Dgb,Egb,Fgb,Ggb;var cJ=mdb('java.math','BigInteger',91);var nhb,ohb;var Bhb,Chb;bcb(488,1967,cie);_.$b=function Xhb(){Uhb(this)};_._b=function Yhb(a){return Mhb(this,a)};_.uc=function Zhb(a){return Nhb(this,a,this.g)||Nhb(this,a,this.f)};_.vc=function $hb(){return new eib(this)};_.xc=function _hb(a){return Ohb(this,a)};_.zc=function aib(a,b){return Rhb(this,a,b)};_.Bc=function bib(a){return Thb(this,a)};_.gc=function cib(){return Vhb(this)};var gJ=mdb(bie,'AbstractHashMap',488);bcb(261,eie,fie,eib);_.$b=function fib(){this.a.$b()};_.Hc=function gib(a){return dib(this,a)};_.Kc=function hib(){return new nib(this.a)};_.Mc=function iib(a){var b;if(dib(this,a)){b=BD(a,42).cd();this.a.Bc(b);return true}return false};_.gc=function jib(){return this.a.gc()};var fJ=mdb(bie,'AbstractHashMap/EntrySet',261);bcb(262,1,aie,nib);_.Nb=function oib(a){Rrb(this,a)};_.Pb=function qib(){return lib(this)};_.Ob=function pib(){return this.b};_.Qb=function rib(){mib(this)};_.b=false;var eJ=mdb(bie,'AbstractHashMap/EntrySetIterator',262);bcb(417,1,aie,vib);_.Nb=function wib(a){Rrb(this,a)};_.Ob=function xib(){return sib(this)};_.Pb=function yib(){return tib(this)};_.Qb=function zib(){uib(this)};_.b=0;_.c=-1;var hJ=mdb(bie,'AbstractList/IteratorImpl',417);bcb(96,417,jie,Bib);_.Qb=function Hib(){uib(this)};_.Rb=function Cib(a){Aib(this,a)};_.Sb=function Dib(){return this.b>0};_.Tb=function Eib(){return this.b};_.Ub=function Fib(){return sCb(this.b>0),this.a.Xb(this.c=--this.b)};_.Vb=function Gib(){return this.b-1};_.Wb=function Iib(a){yCb(this.c!=-1);this.a._c(this.c,a)};var iJ=mdb(bie,'AbstractList/ListIteratorImpl',96);bcb(219,52,Lie,Jib);_.Vc=function Kib(a,b){wCb(a,this.b);this.c.Vc(this.a+a,b);++this.b};_.Xb=function Lib(a){tCb(a,this.b);return this.c.Xb(this.a+a)};_.$c=function Mib(a){var b;tCb(a,this.b);b=this.c.$c(this.a+a);--this.b;return b};_._c=function Nib(a,b){tCb(a,this.b);return this.c._c(this.a+a,b)};_.gc=function Oib(){return this.b};_.a=0;_.b=0;var jJ=mdb(bie,'AbstractList/SubList',219);bcb(384,eie,fie,Pib);_.$b=function Qib(){this.a.$b()};_.Hc=function Rib(a){return this.a._b(a)};_.Kc=function Sib(){var a;return a=this.a.vc().Kc(),new Vib(a)};_.Mc=function Tib(a){if(this.a._b(a)){this.a.Bc(a);return true}return false};_.gc=function Uib(){return this.a.gc()};var mJ=mdb(bie,'AbstractMap/1',384);bcb(691,1,aie,Vib);_.Nb=function Wib(a){Rrb(this,a)};_.Ob=function Xib(){return this.a.Ob()};_.Pb=function Yib(){var a;return a=BD(this.a.Pb(),42),a.cd()};_.Qb=function Zib(){this.a.Qb()};var lJ=mdb(bie,'AbstractMap/1/1',691);bcb(226,28,die,$ib);_.$b=function _ib(){this.a.$b()};_.Hc=function ajb(a){return this.a.uc(a)};_.Kc=function bjb(){var a;return a=this.a.vc().Kc(),new djb(a)};_.gc=function cjb(){return this.a.gc()};var oJ=mdb(bie,'AbstractMap/2',226);bcb(294,1,aie,djb);_.Nb=function ejb(a){Rrb(this,a)};_.Ob=function fjb(){return this.a.Ob()};_.Pb=function gjb(){var a;return a=BD(this.a.Pb(),42),a.dd()};_.Qb=function hjb(){this.a.Qb()};var nJ=mdb(bie,'AbstractMap/2/1',294);bcb(484,1,{484:1,42:1});_.Fb=function jjb(a){var b;if(!JD(a,42)){return false}b=BD(a,42);return wtb(this.d,b.cd())&&wtb(this.e,b.dd())};_.cd=function kjb(){return this.d};_.dd=function ljb(){return this.e};_.Hb=function mjb(){return xtb(this.d)^xtb(this.e)};_.ed=function njb(a){return ijb(this,a)};_.Ib=function ojb(){return this.d+'='+this.e};var pJ=mdb(bie,'AbstractMap/AbstractEntry',484);bcb(383,484,{484:1,383:1,42:1},pjb);var qJ=mdb(bie,'AbstractMap/SimpleEntry',383);bcb(1984,1,_je);_.Fb=function qjb(a){var b;if(!JD(a,42)){return false}b=BD(a,42);return wtb(this.cd(),b.cd())&&wtb(this.dd(),b.dd())};_.Hb=function rjb(){return xtb(this.cd())^xtb(this.dd())};_.Ib=function sjb(){return this.cd()+'='+this.dd()};var rJ=mdb(bie,lie,1984);bcb(1992,1967,gie);_.tc=function vjb(a){return tjb(this,a)};_._b=function wjb(a){return ujb(this,a)};_.vc=function xjb(){return new Bjb(this)};_.xc=function yjb(a){var b;b=a;return Wd(Awb(this,b))};_.ec=function Ajb(){return new Gjb(this)};var wJ=mdb(bie,'AbstractNavigableMap',1992);bcb(739,eie,fie,Bjb);_.Hc=function Cjb(a){return JD(a,42)&&tjb(this.b,BD(a,42))};_.Kc=function Djb(){return new Ywb(this.b)};_.Mc=function Ejb(a){var b;if(JD(a,42)){b=BD(a,42);return Kwb(this.b,b)}return false};_.gc=function Fjb(){return this.b.c};var tJ=mdb(bie,'AbstractNavigableMap/EntrySet',739);bcb(493,eie,iie,Gjb);_.Nc=function Mjb(){return new Rub(this)};_.$b=function Hjb(){zwb(this.a)};_.Hc=function Ijb(a){return ujb(this.a,a)};_.Kc=function Jjb(){var a;return a=new Ywb((new cxb(this.a)).b),new Njb(a)};_.Mc=function Kjb(a){if(ujb(this.a,a)){Jwb(this.a,a);return true}return false};_.gc=function Ljb(){return this.a.c};var vJ=mdb(bie,'AbstractNavigableMap/NavigableKeySet',493);bcb(494,1,aie,Njb);_.Nb=function Ojb(a){Rrb(this,a)};_.Ob=function Pjb(){return sib(this.a.a)};_.Pb=function Qjb(){var a;return a=Wwb(this.a),a.cd()};_.Qb=function Rjb(){Xwb(this.a)};var uJ=mdb(bie,'AbstractNavigableMap/NavigableKeySet/1',494);bcb(2004,28,die);_.Fc=function Sjb(a){return zCb(cub(this,a)),true};_.Gc=function Tjb(a){uCb(a);mCb(a!=this,\"Can't add a queue to itself\");return ye(this,a)};_.$b=function Ujb(){while(dub(this)!=null);};var xJ=mdb(bie,'AbstractQueue',2004);bcb(302,28,{4:1,20:1,28:1,14:1},jkb,kkb);_.Fc=function lkb(a){return Xjb(this,a),true};_.$b=function nkb(){Yjb(this)};_.Hc=function okb(a){return Zjb(new xkb(this),a)};_.dc=function pkb(){return akb(this)};_.Kc=function qkb(){return new xkb(this)};_.Mc=function rkb(a){return dkb(new xkb(this),a)};_.gc=function skb(){return this.c-this.b&this.a.length-1};_.Nc=function tkb(){return new Kub(this,272)};_.Qc=function ukb(a){var b;b=this.c-this.b&this.a.length-1;a.lengthb&&NC(a,b,null);return a};_.b=0;_.c=0;var BJ=mdb(bie,'ArrayDeque',302);bcb(446,1,aie,xkb);_.Nb=function ykb(a){Rrb(this,a)};_.Ob=function zkb(){return this.a!=this.b};_.Pb=function Akb(){return vkb(this)};_.Qb=function Bkb(){wkb(this)};_.a=0;_.b=0;_.c=-1;var AJ=mdb(bie,'ArrayDeque/IteratorImpl',446);bcb(12,52,ake,Rkb,Skb,Tkb);_.Vc=function Ukb(a,b){Dkb(this,a,b)};_.Fc=function Vkb(a){return Ekb(this,a)};_.Wc=function Wkb(a,b){return Fkb(this,a,b)};_.Gc=function Xkb(a){return Gkb(this,a)};_.$b=function Ykb(){this.c=KC(SI,Uhe,1,0,5,1)};_.Hc=function Zkb(a){return Jkb(this,a,0)!=-1};_.Jc=function $kb(a){Hkb(this,a)};_.Xb=function _kb(a){return Ikb(this,a)};_.Xc=function alb(a){return Jkb(this,a,0)};_.dc=function blb(){return this.c.length==0};_.Kc=function clb(){return new olb(this)};_.$c=function dlb(a){return Kkb(this,a)};_.Mc=function elb(a){return Lkb(this,a)};_.Ud=function flb(a,b){Mkb(this,a,b)};_._c=function glb(a,b){return Nkb(this,a,b)};_.gc=function hlb(){return this.c.length};_.ad=function ilb(a){Okb(this,a)};_.Pc=function jlb(){return Pkb(this)};_.Qc=function klb(a){return Qkb(this,a)};var DJ=mdb(bie,'ArrayList',12);bcb(7,1,aie,olb);_.Nb=function plb(a){Rrb(this,a)};_.Ob=function qlb(){return llb(this)};_.Pb=function rlb(){return mlb(this)};_.Qb=function slb(){nlb(this)};_.a=0;_.b=-1;var CJ=mdb(bie,'ArrayList/1',7);bcb(2013,$wnd.Function,{},Ylb);_.te=function Zlb(a,b){return Kdb(a,b)};bcb(154,52,bke,amb);_.Hc=function bmb(a){return Bt(this,a)!=-1};_.Jc=function cmb(a){var b,c,d,e;uCb(a);for(c=this.a,d=0,e=c.length;d>>0,a.toString(16))};_.f=0;_.i=Qje;var PM=mdb(Gke,'CNode',57);bcb(814,1,{},zDb);var OM=mdb(Gke,'CNode/CNodeBuilder',814);var EDb;bcb(1525,1,{},GDb);_.Oe=function HDb(a,b){return 0};_.Pe=function IDb(a,b){return 0};var QM=mdb(Gke,Ike,1525);bcb(1790,1,{},JDb);_.Le=function KDb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;j=Pje;for(d=new olb(a.a.b);d.ad.d.c||d.d.c==f.d.c&&d.d.b0?a+this.n.d+this.n.a:0};_.Se=function HHb(){var a,b,c,d,e;e=0;if(this.e){this.b?(e=this.b.a):!!this.a[1][1]&&(e=this.a[1][1].Se())}else if(this.g){e=EHb(this,yHb(this,null,true))}else{for(b=(gHb(),OC(GC(pN,1),Kie,232,0,[dHb,eHb,fHb])),c=0,d=b.length;c0?e+this.n.b+this.n.c:0};_.Te=function IHb(){var a,b,c,d,e;if(this.g){a=yHb(this,null,false);for(c=(gHb(),OC(GC(pN,1),Kie,232,0,[dHb,eHb,fHb])),d=0,e=c.length;d0){d[0]+=this.d;c-=d[0]}if(d[2]>0){d[2]+=this.d;c-=d[2]}this.c.a=$wnd.Math.max(0,c);this.c.d=b.d+a.d+(this.c.a-c)/2;d[1]=$wnd.Math.max(d[1],c);uHb(this,eHb,b.d+a.d+d[0]-(d[1]-c)/2,d)};_.b=null;_.d=0;_.e=false;_.f=false;_.g=false;var rHb=0,sHb=0;var rN=mdb(fle,'GridContainerCell',1473);bcb(461,22,{3:1,35:1,22:1,461:1},OHb);var KHb,LHb,MHb;var sN=ndb(fle,'HorizontalLabelAlignment',461,CI,QHb,PHb);var RHb;bcb(306,212,{212:1,306:1},aIb,bIb,cIb);_.Re=function dIb(){return YHb(this)};_.Se=function eIb(){return ZHb(this)};_.a=0;_.c=false;var tN=mdb(fle,'LabelCell',306);bcb(244,326,{212:1,326:1,244:1},mIb);_.Re=function nIb(){return fIb(this)};_.Se=function oIb(){return gIb(this)};_.Te=function rIb(){hIb(this)};_.Ue=function sIb(){iIb(this)};_.b=0;_.c=0;_.d=false;var yN=mdb(fle,'StripContainerCell',244);bcb(1626,1,Oie,tIb);_.Mb=function uIb(a){return pIb(BD(a,212))};var uN=mdb(fle,'StripContainerCell/lambda$0$Type',1626);bcb(1627,1,{},vIb);_.Fe=function wIb(a){return BD(a,212).Se()};var vN=mdb(fle,'StripContainerCell/lambda$1$Type',1627);bcb(1628,1,Oie,xIb);_.Mb=function yIb(a){return qIb(BD(a,212))};var wN=mdb(fle,'StripContainerCell/lambda$2$Type',1628);bcb(1629,1,{},zIb);_.Fe=function AIb(a){return BD(a,212).Re()};var xN=mdb(fle,'StripContainerCell/lambda$3$Type',1629);bcb(462,22,{3:1,35:1,22:1,462:1},FIb);var BIb,CIb,DIb;var zN=ndb(fle,'VerticalLabelAlignment',462,CI,HIb,GIb);var IIb;bcb(789,1,{},LIb);_.c=0;_.d=0;_.k=0;_.s=0;_.t=0;_.v=false;_.w=0;_.D=false;var CN=mdb(nle,'NodeContext',789);bcb(1471,1,Dke,OIb);_.ue=function PIb(a,b){return NIb(BD(a,61),BD(b,61))};_.Fb=function QIb(a){return this===a};_.ve=function RIb(){return new tpb(this)};var AN=mdb(nle,'NodeContext/0methodref$comparePortSides$Type',1471);bcb(1472,1,Dke,SIb);_.ue=function TIb(a,b){return MIb(BD(a,111),BD(b,111))};_.Fb=function UIb(a){return this===a};_.ve=function VIb(){return new tpb(this)};var BN=mdb(nle,'NodeContext/1methodref$comparePortContexts$Type',1472);bcb(159,22,{3:1,35:1,22:1,159:1},tJb);var WIb,XIb,YIb,ZIb,$Ib,_Ib,aJb,bJb,cJb,dJb,eJb,fJb,gJb,hJb,iJb,jJb,kJb,lJb,mJb,nJb,oJb,pJb;var DN=ndb(nle,'NodeLabelLocation',159,CI,wJb,vJb);var xJb;bcb(111,1,{111:1},AJb);_.a=false;var EN=mdb(nle,'PortContext',111);bcb(1476,1,qie,TJb);_.td=function UJb(a){WHb(BD(a,306))};var FN=mdb(qle,rle,1476);bcb(1477,1,Oie,VJb);_.Mb=function WJb(a){return !!BD(a,111).c};var GN=mdb(qle,sle,1477);bcb(1478,1,qie,XJb);_.td=function YJb(a){WHb(BD(a,111).c)};var HN=mdb(qle,'LabelPlacer/lambda$2$Type',1478);var ZJb;bcb(1475,1,qie,fKb);_.td=function gKb(a){$Jb();zJb(BD(a,111))};var IN=mdb(qle,'NodeLabelAndSizeUtilities/lambda$0$Type',1475);bcb(790,1,qie,mKb);_.td=function nKb(a){kKb(this.b,this.c,this.a,BD(a,181))};_.a=false;_.c=false;var JN=mdb(qle,'NodeLabelCellCreator/lambda$0$Type',790);bcb(1474,1,qie,tKb);_.td=function uKb(a){sKb(this.a,BD(a,181))};var KN=mdb(qle,'PortContextCreator/lambda$0$Type',1474);var BKb;bcb(1829,1,{},VKb);var MN=mdb(ule,'GreedyRectangleStripOverlapRemover',1829);bcb(1830,1,Dke,XKb);_.ue=function YKb(a,b){return WKb(BD(a,222),BD(b,222))};_.Fb=function ZKb(a){return this===a};_.ve=function $Kb(){return new tpb(this)};var LN=mdb(ule,'GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type',1830);bcb(1786,1,{},fLb);_.a=5;_.e=0;var SN=mdb(ule,'RectangleStripOverlapRemover',1786);bcb(1787,1,Dke,jLb);_.ue=function kLb(a,b){return gLb(BD(a,222),BD(b,222))};_.Fb=function lLb(a){return this===a};_.ve=function mLb(){return new tpb(this)};var NN=mdb(ule,'RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type',1787);bcb(1789,1,Dke,nLb);_.ue=function oLb(a,b){return hLb(BD(a,222),BD(b,222))};_.Fb=function pLb(a){return this===a};_.ve=function qLb(){return new tpb(this)};var ON=mdb(ule,'RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type',1789);bcb(406,22,{3:1,35:1,22:1,406:1},wLb);var rLb,sLb,tLb,uLb;var PN=ndb(ule,'RectangleStripOverlapRemover/OverlapRemovalDirection',406,CI,yLb,xLb);var zLb;bcb(222,1,{222:1},BLb);var QN=mdb(ule,'RectangleStripOverlapRemover/RectangleNode',222);bcb(1788,1,qie,CLb);_.td=function DLb(a){aLb(this.a,BD(a,222))};var RN=mdb(ule,'RectangleStripOverlapRemover/lambda$1$Type',1788);bcb(1304,1,Dke,GLb);_.ue=function HLb(a,b){return FLb(BD(a,167),BD(b,167))};_.Fb=function ILb(a){return this===a};_.ve=function JLb(){return new tpb(this)};var WN=mdb(wle,'PolyominoCompactor/CornerCasesGreaterThanRestComparator',1304);bcb(1307,1,{},KLb);_.Kb=function LLb(a){return BD(a,324).a};var TN=mdb(wle,'PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type',1307);bcb(1308,1,Oie,MLb);_.Mb=function NLb(a){return BD(a,323).a};var UN=mdb(wle,'PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type',1308);bcb(1309,1,Oie,OLb);_.Mb=function PLb(a){return BD(a,323).a};var VN=mdb(wle,'PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type',1309);bcb(1302,1,Dke,RLb);_.ue=function SLb(a,b){return QLb(BD(a,167),BD(b,167))};_.Fb=function TLb(a){return this===a};_.ve=function ULb(){return new tpb(this)};var YN=mdb(wle,'PolyominoCompactor/MinNumOfExtensionDirectionsComparator',1302);bcb(1305,1,{},VLb);_.Kb=function WLb(a){return BD(a,324).a};var XN=mdb(wle,'PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type',1305);bcb(767,1,Dke,YLb);_.ue=function ZLb(a,b){return XLb(BD(a,167),BD(b,167))};_.Fb=function $Lb(a){return this===a};_.ve=function _Lb(){return new tpb(this)};var ZN=mdb(wle,'PolyominoCompactor/MinNumOfExtensionsComparator',767);bcb(1300,1,Dke,bMb);_.ue=function cMb(a,b){return aMb(BD(a,321),BD(b,321))};_.Fb=function dMb(a){return this===a};_.ve=function eMb(){return new tpb(this)};var _N=mdb(wle,'PolyominoCompactor/MinPerimeterComparator',1300);bcb(1301,1,Dke,gMb);_.ue=function hMb(a,b){return fMb(BD(a,321),BD(b,321))};_.Fb=function iMb(a){return this===a};_.ve=function jMb(){return new tpb(this)};var $N=mdb(wle,'PolyominoCompactor/MinPerimeterComparatorWithShape',1301);bcb(1303,1,Dke,lMb);_.ue=function mMb(a,b){return kMb(BD(a,167),BD(b,167))};_.Fb=function nMb(a){return this===a};_.ve=function oMb(){return new tpb(this)};var bO=mdb(wle,'PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator',1303);bcb(1306,1,{},pMb);_.Kb=function qMb(a){return BD(a,324).a};var aO=mdb(wle,'PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type',1306);bcb(777,1,{},tMb);_.Ce=function uMb(a,b){return sMb(this,BD(a,46),BD(b,167))};var cO=mdb(wle,'SuccessorCombination',777);bcb(644,1,{},wMb);_.Ce=function xMb(a,b){var c;return vMb((c=BD(a,46),BD(b,167),c))};var dO=mdb(wle,'SuccessorJitter',644);bcb(643,1,{},zMb);_.Ce=function AMb(a,b){var c;return yMb((c=BD(a,46),BD(b,167),c))};var eO=mdb(wle,'SuccessorLineByLine',643);bcb(568,1,{},CMb);_.Ce=function DMb(a,b){var c;return BMb((c=BD(a,46),BD(b,167),c))};var fO=mdb(wle,'SuccessorManhattan',568);bcb(1356,1,{},FMb);_.Ce=function GMb(a,b){var c;return EMb((c=BD(a,46),BD(b,167),c))};var gO=mdb(wle,'SuccessorMaxNormWindingInMathPosSense',1356);bcb(400,1,{},JMb);_.Ce=function KMb(a,b){return HMb(this,a,b)};_.c=false;_.d=false;_.e=false;_.f=false;var iO=mdb(wle,'SuccessorQuadrantsGeneric',400);bcb(1357,1,{},LMb);_.Kb=function MMb(a){return BD(a,324).a};var hO=mdb(wle,'SuccessorQuadrantsGeneric/lambda$0$Type',1357);bcb(323,22,{3:1,35:1,22:1,323:1},SMb);_.a=false;var NMb,OMb,PMb,QMb;var jO=ndb(Ble,Cle,323,CI,UMb,TMb);var VMb;bcb(1298,1,{});_.Ib=function bNb(){var a,b,c,d,e,f;c=' ';a=meb(0);for(e=0;e=0?'b'+a+'['+fRb(this.a)+']':'b['+fRb(this.a)+']'}return 'b_'+FCb(this)};var YO=mdb(jme,'FBendpoint',559);bcb(282,134,{3:1,282:1,94:1,134:1},gRb);_.Ib=function hRb(){return fRb(this)};var ZO=mdb(jme,'FEdge',282);bcb(231,134,{3:1,231:1,94:1,134:1},kRb);var $O=mdb(jme,'FGraph',231);bcb(447,357,{3:1,447:1,357:1,94:1,134:1},mRb);_.Ib=function nRb(){return this.b==null||this.b.length==0?'l['+fRb(this.a)+']':'l_'+this.b};var _O=mdb(jme,'FLabel',447);bcb(144,357,{3:1,144:1,357:1,94:1,134:1},pRb);_.Ib=function qRb(){return oRb(this)};_.b=0;var aP=mdb(jme,'FNode',144);bcb(2003,1,{});_.bf=function vRb(a){rRb(this,a)};_.cf=function wRb(){sRb(this)};_.d=0;var cP=mdb(lme,'AbstractForceModel',2003);bcb(631,2003,{631:1},xRb);_.af=function zRb(a,b){var c,d,e,f,g;uRb(this.f,a,b);e=c7c(R6c(b.d),a.d);g=$wnd.Math.sqrt(e.a*e.a+e.b*e.b);d=$wnd.Math.max(0,g-U6c(a.e)/2-U6c(b.e)/2);c=jRb(this.e,a,b);c>0?(f=-yRb(d,this.c)*c):(f=CRb(d,this.b)*BD(vNb(a,(wSb(),oSb)),19).a);Y6c(e,f/g);return e};_.bf=function ARb(a){rRb(this,a);this.a=BD(vNb(a,(wSb(),eSb)),19).a;this.c=Edb(ED(vNb(a,uSb)));this.b=Edb(ED(vNb(a,qSb)))};_.df=function BRb(a){return a0&&(f-=ERb(d,this.a)*c);Y6c(e,f*this.b/g);return e};_.bf=function GRb(a){var b,c,d,e,f,g,h;rRb(this,a);this.b=Edb(ED(vNb(a,(wSb(),vSb))));this.c=this.b/BD(vNb(a,eSb),19).a;d=a.e.c.length;f=0;e=0;for(h=new olb(a.e);h.a0};_.a=0;_.b=0;_.c=0;var eP=mdb(lme,'FruchtermanReingoldModel',632);bcb(849,1,ale,TRb);_.Qe=function URb(a){t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,mme),''),'Force Model'),'Determines the model for force calculation.'),MRb),(_5c(),V5c)),gP),pqb((N5c(),L5c)))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,nme),''),'Iterations'),'The number of iterations on the force model.'),meb(300)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ome),''),'Repulsive Power'),'Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model'),meb(0)),X5c),JI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,pme),''),'FR Temperature'),'The temperature is used as a scaling factor for particle displacements.'),qme),U5c),BI),pqb(L5c))));o4c(a,pme,mme,RRb);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,rme),''),'Eades Repulsion'),\"Factor for repulsive forces in Eades' model.\"),5),U5c),BI),pqb(L5c))));o4c(a,rme,mme,ORb);xSb((new ySb,a))};var KRb,LRb,MRb,NRb,ORb,PRb,QRb,RRb;var fP=mdb(sme,'ForceMetaDataProvider',849);bcb(424,22,{3:1,35:1,22:1,424:1},YRb);var VRb,WRb;var gP=ndb(sme,'ForceModelStrategy',424,CI,$Rb,ZRb);var _Rb;bcb(988,1,ale,ySb);_.Qe=function zSb(a){xSb(a)};var bSb,cSb,dSb,eSb,fSb,gSb,hSb,iSb,jSb,kSb,lSb,mSb,nSb,oSb,pSb,qSb,rSb,sSb,tSb,uSb,vSb;var iP=mdb(sme,'ForceOptions',988);bcb(989,1,{},ASb);_.$e=function BSb(){var a;return a=new ZQb,a};_._e=function CSb(a){};var hP=mdb(sme,'ForceOptions/ForceFactory',989);var DSb,ESb,FSb,GSb;bcb(850,1,ale,PSb);_.Qe=function QSb(a){t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Mme),''),'Fixed Position'),'Prevent that the node is moved by the layout algorithm.'),(Bcb(),false)),(_5c(),T5c)),wI),pqb((N5c(),K5c)))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Nme),''),'Desired Edge Length'),'Either specified for parent nodes or for individual edges, where the latter takes higher precedence.'),100),U5c),BI),qqb(L5c,OC(GC(e1,1),Kie,175,0,[I5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ome),''),'Layout Dimension'),'Dimensions that are permitted to be altered during layout.'),KSb),V5c),oP),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Pme),''),'Stress Epsilon'),'Termination criterion for the iterative process.'),qme),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Qme),''),'Iteration Limit'),\"Maximum number of performed iterations. Takes higher precedence than 'epsilon'.\"),meb(Ohe)),X5c),JI),pqb(L5c))));cTb((new dTb,a))};var ISb,JSb,KSb,LSb,MSb,NSb;var jP=mdb(sme,'StressMetaDataProvider',850);bcb(992,1,ale,dTb);_.Qe=function eTb(a){cTb(a)};var RSb,SSb,TSb,USb,VSb,WSb,XSb,YSb,ZSb,$Sb,_Sb,aTb;var lP=mdb(sme,'StressOptions',992);bcb(993,1,{},fTb);_.$e=function gTb(){var a;return a=new iTb,a};_._e=function hTb(a){};var kP=mdb(sme,'StressOptions/StressFactory',993);bcb(1128,209,Mle,iTb);_.Ze=function jTb(a,b){var c,d,e,f,g;Odd(b,Sme,1);Ccb(DD(hkd(a,(bTb(),VSb))))?Ccb(DD(hkd(a,_Sb)))||$Cb((c=new _Cb((Pgd(),new bhd(a))),c)):WQb(new ZQb,a,Udd(b,1));e=TQb(a);d=LQb(this.a,e);for(g=d.Kc();g.Ob();){f=BD(g.Pb(),231);if(f.e.c.length<=1){continue}sTb(this.b,f);qTb(this.b);Hkb(f.d,new kTb)}e=KQb(d);SQb(e);Qdd(b)};var nP=mdb(Ume,'StressLayoutProvider',1128);bcb(1129,1,qie,kTb);_.td=function lTb(a){lRb(BD(a,447))};var mP=mdb(Ume,'StressLayoutProvider/lambda$0$Type',1129);bcb(990,1,{},tTb);_.c=0;_.e=0;_.g=0;var qP=mdb(Ume,'StressMajorization',990);bcb(379,22,{3:1,35:1,22:1,379:1},zTb);var vTb,wTb,xTb;var oP=ndb(Ume,'StressMajorization/Dimension',379,CI,BTb,ATb);var CTb;bcb(991,1,Dke,ETb);_.ue=function FTb(a,b){return uTb(this.a,BD(a,144),BD(b,144))};_.Fb=function GTb(a){return this===a};_.ve=function HTb(){return new tpb(this)};var pP=mdb(Ume,'StressMajorization/lambda$0$Type',991);bcb(1229,1,{},PTb);var tP=mdb(Wme,'ElkLayered',1229);bcb(1230,1,qie,STb);_.td=function TTb(a){QTb(BD(a,37))};var rP=mdb(Wme,'ElkLayered/lambda$0$Type',1230);bcb(1231,1,qie,UTb);_.td=function VTb(a){RTb(this.a,BD(a,37))};var sP=mdb(Wme,'ElkLayered/lambda$1$Type',1231);bcb(1263,1,{},bUb);var WTb,XTb,YTb;var xP=mdb(Wme,'GraphConfigurator',1263);bcb(759,1,qie,dUb);_.td=function eUb(a){$Tb(this.a,BD(a,10))};var uP=mdb(Wme,'GraphConfigurator/lambda$0$Type',759);bcb(760,1,{},fUb);_.Kb=function gUb(a){return ZTb(),new YAb(null,new Kub(BD(a,29).a,16))};var vP=mdb(Wme,'GraphConfigurator/lambda$1$Type',760);bcb(761,1,qie,hUb);_.td=function iUb(a){$Tb(this.a,BD(a,10))};var wP=mdb(Wme,'GraphConfigurator/lambda$2$Type',761);bcb(1127,209,Mle,jUb);_.Ze=function kUb(a,b){var c;c=U1b(new a2b,a);PD(hkd(a,(Nyc(),axc)))===PD((hbd(),ebd))?JTb(this.a,c,b):KTb(this.a,c,b);z2b(new D2b,c)};var yP=mdb(Wme,'LayeredLayoutProvider',1127);bcb(356,22,{3:1,35:1,22:1,356:1},rUb);var lUb,mUb,nUb,oUb,pUb;var zP=ndb(Wme,'LayeredPhases',356,CI,tUb,sUb);var uUb;bcb(1651,1,{},CUb);_.i=0;var wUb;var CP=mdb(Xme,'ComponentsToCGraphTransformer',1651);var hVb;bcb(1652,1,{},DUb);_.ef=function EUb(a,b){return $wnd.Math.min(a.a!=null?Edb(a.a):a.c.i,b.a!=null?Edb(b.a):b.c.i)};_.ff=function FUb(a,b){return $wnd.Math.min(a.a!=null?Edb(a.a):a.c.i,b.a!=null?Edb(b.a):b.c.i)};var AP=mdb(Xme,'ComponentsToCGraphTransformer/1',1652);bcb(81,1,{81:1});_.i=0;_.k=true;_.o=Qje;var IP=mdb(Yme,'CNode',81);bcb(460,81,{460:1,81:1},GUb,HUb);_.Ib=function IUb(){return ''};var BP=mdb(Xme,'ComponentsToCGraphTransformer/CRectNode',460);bcb(1623,1,{},VUb);var JUb,KUb;var FP=mdb(Xme,'OneDimensionalComponentsCompaction',1623);bcb(1624,1,{},YUb);_.Kb=function ZUb(a){return WUb(BD(a,46))};_.Fb=function $Ub(a){return this===a};var DP=mdb(Xme,'OneDimensionalComponentsCompaction/lambda$0$Type',1624);bcb(1625,1,{},_Ub);_.Kb=function aVb(a){return XUb(BD(a,46))};_.Fb=function bVb(a){return this===a};var EP=mdb(Xme,'OneDimensionalComponentsCompaction/lambda$1$Type',1625);bcb(1654,1,{},dVb);var GP=mdb(Yme,'CGraph',1654);bcb(189,1,{189:1},gVb);_.b=0;_.c=0;_.e=0;_.g=true;_.i=Qje;var HP=mdb(Yme,'CGroup',189);bcb(1653,1,{},jVb);_.ef=function kVb(a,b){return $wnd.Math.max(a.a!=null?Edb(a.a):a.c.i,b.a!=null?Edb(b.a):b.c.i)};_.ff=function lVb(a,b){return $wnd.Math.max(a.a!=null?Edb(a.a):a.c.i,b.a!=null?Edb(b.a):b.c.i)};var JP=mdb(Yme,Ike,1653);bcb(1655,1,{},CVb);_.d=false;var mVb;var LP=mdb(Yme,Nke,1655);bcb(1656,1,{},DVb);_.Kb=function EVb(a){return nVb(),Bcb(),BD(BD(a,46).a,81).d.e!=0?true:false};_.Fb=function FVb(a){return this===a};var KP=mdb(Yme,Oke,1656);bcb(823,1,{},IVb);_.a=false;_.b=false;_.c=false;_.d=false;var MP=mdb(Yme,Pke,823);bcb(1825,1,{},OVb);var RP=mdb(Zme,Qke,1825);var bQ=odb($me,Fke);bcb(1826,1,{369:1},SVb);_.Ke=function TVb(a){QVb(this,BD(a,466))};var OP=mdb(Zme,Rke,1826);bcb(1827,1,Dke,VVb);_.ue=function WVb(a,b){return UVb(BD(a,81),BD(b,81))};_.Fb=function XVb(a){return this===a};_.ve=function YVb(){return new tpb(this)};var NP=mdb(Zme,Ske,1827);bcb(466,1,{466:1},ZVb);_.a=false;var PP=mdb(Zme,Tke,466);bcb(1828,1,Dke,$Vb);_.ue=function _Vb(a,b){return PVb(BD(a,466),BD(b,466))};_.Fb=function aWb(a){return this===a};_.ve=function bWb(){return new tpb(this)};var QP=mdb(Zme,Uke,1828);bcb(140,1,{140:1},cWb,dWb);_.Fb=function eWb(a){var b;if(a==null){return false}if(TP!=rb(a)){return false}b=BD(a,140);return wtb(this.c,b.c)&&wtb(this.d,b.d)};_.Hb=function fWb(){return Hlb(OC(GC(SI,1),Uhe,1,5,[this.c,this.d]))};_.Ib=function gWb(){return '('+this.c+She+this.d+(this.a?'cx':'')+this.b+')'};_.a=true;_.c=0;_.d=0;var TP=mdb($me,'Point',140);bcb(405,22,{3:1,35:1,22:1,405:1},oWb);var hWb,iWb,jWb,kWb;var SP=ndb($me,'Point/Quadrant',405,CI,sWb,rWb);var tWb;bcb(1642,1,{},CWb);_.b=null;_.c=null;_.d=null;_.e=null;_.f=null;var vWb,wWb,xWb,yWb,zWb;var aQ=mdb($me,'RectilinearConvexHull',1642);bcb(574,1,{369:1},NWb);_.Ke=function OWb(a){MWb(this,BD(a,140))};_.b=0;var KWb;var VP=mdb($me,'RectilinearConvexHull/MaximalElementsEventHandler',574);bcb(1644,1,Dke,QWb);_.ue=function RWb(a,b){return PWb(ED(a),ED(b))};_.Fb=function SWb(a){return this===a};_.ve=function TWb(){return new tpb(this)};var UP=mdb($me,'RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type',1644);bcb(1643,1,{369:1},VWb);_.Ke=function WWb(a){UWb(this,BD(a,140))};_.a=0;_.b=null;_.c=null;_.d=null;_.e=null;var WP=mdb($me,'RectilinearConvexHull/RectangleEventHandler',1643);bcb(1645,1,Dke,XWb);_.ue=function YWb(a,b){return EWb(BD(a,140),BD(b,140))};_.Fb=function ZWb(a){return this===a};_.ve=function $Wb(){return new tpb(this)};var XP=mdb($me,'RectilinearConvexHull/lambda$0$Type',1645);bcb(1646,1,Dke,_Wb);_.ue=function aXb(a,b){return FWb(BD(a,140),BD(b,140))};_.Fb=function bXb(a){return this===a};_.ve=function cXb(){return new tpb(this)};var YP=mdb($me,'RectilinearConvexHull/lambda$1$Type',1646);bcb(1647,1,Dke,dXb);_.ue=function eXb(a,b){return GWb(BD(a,140),BD(b,140))};_.Fb=function fXb(a){return this===a};_.ve=function gXb(){return new tpb(this)};var ZP=mdb($me,'RectilinearConvexHull/lambda$2$Type',1647);bcb(1648,1,Dke,hXb);_.ue=function iXb(a,b){return HWb(BD(a,140),BD(b,140))};_.Fb=function jXb(a){return this===a};_.ve=function kXb(){return new tpb(this)};var $P=mdb($me,'RectilinearConvexHull/lambda$3$Type',1648);bcb(1649,1,Dke,lXb);_.ue=function mXb(a,b){return IWb(BD(a,140),BD(b,140))};_.Fb=function nXb(a){return this===a};_.ve=function oXb(){return new tpb(this)};var _P=mdb($me,'RectilinearConvexHull/lambda$4$Type',1649);bcb(1650,1,{},qXb);var cQ=mdb($me,'Scanline',1650);bcb(2005,1,{});var dQ=mdb(_me,'AbstractGraphPlacer',2005);bcb(325,1,{325:1},AXb);_.mf=function BXb(a){if(this.nf(a)){Rc(this.b,BD(vNb(a,(wtc(),Esc)),21),a);return true}else{return false}};_.nf=function CXb(a){var b,c,d,e;b=BD(vNb(a,(wtc(),Esc)),21);e=BD(Qc(wXb,b),21);for(d=e.Kc();d.Ob();){c=BD(d.Pb(),21);if(!BD(Qc(this.b,c),15).dc()){return false}}return true};var wXb;var gQ=mdb(_me,'ComponentGroup',325);bcb(765,2005,{},HXb);_.of=function IXb(a){var b,c;for(c=new olb(this.a);c.an){v=0;w+=m+e;m=0}q=g.c;uXb(g,v+q.a,w+q.b);X6c(q);c=$wnd.Math.max(c,v+s.a);m=$wnd.Math.max(m,s.b);v+=s.a+e}b.f.a=c;b.f.b=w+m;if(Ccb(DD(vNb(f,qwc)))){d=new gYb;YXb(d,a,e);for(l=a.Kc();l.Ob();){k=BD(l.Pb(),37);P6c(X6c(k.c),d.e)}P6c(X6c(b.f),d.a)}tXb(b,a)};var uQ=mdb(_me,'SimpleRowGraphPlacer',1291);bcb(1292,1,Dke,VYb);_.ue=function WYb(a,b){return UYb(BD(a,37),BD(b,37))};_.Fb=function XYb(a){return this===a};_.ve=function YYb(){return new tpb(this)};var tQ=mdb(_me,'SimpleRowGraphPlacer/1',1292);var ZYb;bcb(1262,1,Vke,dZb);_.Lb=function eZb(a){var b;return b=BD(vNb(BD(a,243).b,(Nyc(),jxc)),74),!!b&&b.b!=0};_.Fb=function fZb(a){return this===a};_.Mb=function gZb(a){var b;return b=BD(vNb(BD(a,243).b,(Nyc(),jxc)),74),!!b&&b.b!=0};var vQ=mdb(dne,'CompoundGraphPostprocessor/1',1262);bcb(1261,1,ene,wZb);_.pf=function xZb(a,b){qZb(this,BD(a,37),b)};var xQ=mdb(dne,'CompoundGraphPreprocessor',1261);bcb(441,1,{441:1},yZb);_.c=false;var wQ=mdb(dne,'CompoundGraphPreprocessor/ExternalPort',441);bcb(243,1,{243:1},BZb);_.Ib=function CZb(){return Zr(this.c)+':'+TZb(this.b)};var zQ=mdb(dne,'CrossHierarchyEdge',243);bcb(763,1,Dke,EZb);_.ue=function FZb(a,b){return DZb(this,BD(a,243),BD(b,243))};_.Fb=function GZb(a){return this===a};_.ve=function IZb(){return new tpb(this)};var yQ=mdb(dne,'CrossHierarchyEdgeComparator',763);bcb(299,134,{3:1,299:1,94:1,134:1});_.p=0;var JQ=mdb(fne,'LGraphElement',299);bcb(17,299,{3:1,17:1,299:1,94:1,134:1},UZb);_.Ib=function VZb(){return TZb(this)};var AQ=mdb(fne,'LEdge',17);bcb(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},XZb);_.Jc=function YZb(a){reb(this,a)};_.Kc=function ZZb(){return new olb(this.b)};_.Ib=function $Zb(){if(this.b.c.length==0){return 'G-unlayered'+Fe(this.a)}else if(this.a.c.length==0){return 'G-layered'+Fe(this.b)}return 'G[layerless'+Fe(this.a)+', layers'+Fe(this.b)+']'};var KQ=mdb(fne,'LGraph',37);var _Zb;bcb(657,1,{});_.qf=function b$b(){return this.e.n};_.We=function c$b(a){return vNb(this.e,a)};_.rf=function d$b(){return this.e.o};_.sf=function e$b(){return this.e.p};_.Xe=function f$b(a){return wNb(this.e,a)};_.tf=function g$b(a){this.e.n.a=a.a;this.e.n.b=a.b};_.uf=function h$b(a){this.e.o.a=a.a;this.e.o.b=a.b};_.vf=function i$b(a){this.e.p=a};var BQ=mdb(fne,'LGraphAdapters/AbstractLShapeAdapter',657);bcb(577,1,{839:1},j$b);_.wf=function k$b(){var a,b;if(!this.b){this.b=Pu(this.a.b.c.length);for(b=new olb(this.a.b);b.a0&&E_b((BCb(c-1,b.length),b.charCodeAt(c-1)),nne)){--c}if(g> ',a),C0b(c));Qfb(Pfb((a.a+='[',a),c.i),']')}return a.a};_.c=true;_.d=false;var t0b,u0b,v0b,w0b,x0b,y0b;var aR=mdb(fne,'LPort',11);bcb(397,1,vie,J0b);_.Jc=function K0b(a){reb(this,a)};_.Kc=function L0b(){var a;a=new olb(this.a.e);return new M0b(a)};var RQ=mdb(fne,'LPort/1',397);bcb(1290,1,aie,M0b);_.Nb=function N0b(a){Rrb(this,a)};_.Pb=function P0b(){return BD(mlb(this.a),17).c};_.Ob=function O0b(){return llb(this.a)};_.Qb=function Q0b(){nlb(this.a)};var QQ=mdb(fne,'LPort/1/1',1290);bcb(359,1,vie,R0b);_.Jc=function S0b(a){reb(this,a)};_.Kc=function T0b(){var a;return a=new olb(this.a.g),new U0b(a)};var TQ=mdb(fne,'LPort/2',359);bcb(762,1,aie,U0b);_.Nb=function V0b(a){Rrb(this,a)};_.Pb=function X0b(){return BD(mlb(this.a),17).d};_.Ob=function W0b(){return llb(this.a)};_.Qb=function Y0b(){nlb(this.a)};var SQ=mdb(fne,'LPort/2/1',762);bcb(1283,1,vie,Z0b);_.Jc=function $0b(a){reb(this,a)};_.Kc=function _0b(){return new b1b(this)};var VQ=mdb(fne,'LPort/CombineIter',1283);bcb(201,1,aie,b1b);_.Nb=function c1b(a){Rrb(this,a)};_.Qb=function f1b(){Srb()};_.Ob=function d1b(){return a1b(this)};_.Pb=function e1b(){return llb(this.a)?mlb(this.a):mlb(this.b)};var UQ=mdb(fne,'LPort/CombineIter/1',201);bcb(1285,1,Vke,h1b);_.Lb=function i1b(a){return g1b(a)};_.Fb=function j1b(a){return this===a};_.Mb=function k1b(a){return z0b(),BD(a,11).e.c.length!=0};var WQ=mdb(fne,'LPort/lambda$0$Type',1285);bcb(1284,1,Vke,m1b);_.Lb=function n1b(a){return l1b(a)};_.Fb=function o1b(a){return this===a};_.Mb=function p1b(a){return z0b(),BD(a,11).g.c.length!=0};var XQ=mdb(fne,'LPort/lambda$1$Type',1284);bcb(1286,1,Vke,q1b);_.Lb=function r1b(a){return z0b(),BD(a,11).j==(Ucd(),Acd)};_.Fb=function s1b(a){return this===a};_.Mb=function t1b(a){return z0b(),BD(a,11).j==(Ucd(),Acd)};var YQ=mdb(fne,'LPort/lambda$2$Type',1286);bcb(1287,1,Vke,u1b);_.Lb=function v1b(a){return z0b(),BD(a,11).j==(Ucd(),zcd)};_.Fb=function w1b(a){return this===a};_.Mb=function x1b(a){return z0b(),BD(a,11).j==(Ucd(),zcd)};var ZQ=mdb(fne,'LPort/lambda$3$Type',1287);bcb(1288,1,Vke,y1b);_.Lb=function z1b(a){return z0b(),BD(a,11).j==(Ucd(),Rcd)};_.Fb=function A1b(a){return this===a};_.Mb=function B1b(a){return z0b(),BD(a,11).j==(Ucd(),Rcd)};var $Q=mdb(fne,'LPort/lambda$4$Type',1288);bcb(1289,1,Vke,C1b);_.Lb=function D1b(a){return z0b(),BD(a,11).j==(Ucd(),Tcd)};_.Fb=function E1b(a){return this===a};_.Mb=function F1b(a){return z0b(),BD(a,11).j==(Ucd(),Tcd)};var _Q=mdb(fne,'LPort/lambda$5$Type',1289);bcb(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},H1b);_.Jc=function I1b(a){reb(this,a)};_.Kc=function J1b(){return new olb(this.a)};_.Ib=function K1b(){return 'L_'+Jkb(this.b.b,this,0)+Fe(this.a)};var cR=mdb(fne,'Layer',29);bcb(1342,1,{},a2b);var mR=mdb(tne,une,1342);bcb(1346,1,{},e2b);_.Kb=function f2b(a){return atd(BD(a,82))};var dR=mdb(tne,'ElkGraphImporter/0methodref$connectableShapeToNode$Type',1346);bcb(1349,1,{},g2b);_.Kb=function h2b(a){return atd(BD(a,82))};var eR=mdb(tne,'ElkGraphImporter/1methodref$connectableShapeToNode$Type',1349);bcb(1343,1,qie,i2b);_.td=function j2b(a){Q1b(this.a,BD(a,118))};var fR=mdb(tne,vne,1343);bcb(1344,1,qie,k2b);_.td=function l2b(a){Q1b(this.a,BD(a,118))};var gR=mdb(tne,wne,1344);bcb(1345,1,{},m2b);_.Kb=function n2b(a){return new YAb(null,new Kub(Old(BD(a,79)),16))};var hR=mdb(tne,xne,1345);bcb(1347,1,Oie,o2b);_.Mb=function p2b(a){return b2b(this.a,BD(a,33))};var iR=mdb(tne,yne,1347);bcb(1348,1,{},q2b);_.Kb=function r2b(a){return new YAb(null,new Kub(Nld(BD(a,79)),16))};var jR=mdb(tne,'ElkGraphImporter/lambda$5$Type',1348);bcb(1350,1,Oie,s2b);_.Mb=function t2b(a){return c2b(this.a,BD(a,33))};var kR=mdb(tne,'ElkGraphImporter/lambda$7$Type',1350);bcb(1351,1,Oie,u2b);_.Mb=function v2b(a){return d2b(BD(a,79))};var lR=mdb(tne,'ElkGraphImporter/lambda$8$Type',1351);bcb(1278,1,{},D2b);var w2b;var rR=mdb(tne,'ElkGraphLayoutTransferrer',1278);bcb(1279,1,Oie,G2b);_.Mb=function H2b(a){return E2b(this.a,BD(a,17))};var nR=mdb(tne,'ElkGraphLayoutTransferrer/lambda$0$Type',1279);bcb(1280,1,qie,I2b);_.td=function J2b(a){x2b();Ekb(this.a,BD(a,17))};var oR=mdb(tne,'ElkGraphLayoutTransferrer/lambda$1$Type',1280);bcb(1281,1,Oie,K2b);_.Mb=function L2b(a){return F2b(this.a,BD(a,17))};var pR=mdb(tne,'ElkGraphLayoutTransferrer/lambda$2$Type',1281);bcb(1282,1,qie,M2b);_.td=function N2b(a){x2b();Ekb(this.a,BD(a,17))};var qR=mdb(tne,'ElkGraphLayoutTransferrer/lambda$3$Type',1282);bcb(1485,1,ene,S2b);_.pf=function T2b(a,b){Q2b(BD(a,37),b)};var uR=mdb(Ane,'CommentNodeMarginCalculator',1485);bcb(1486,1,{},U2b);_.Kb=function V2b(a){return new YAb(null,new Kub(BD(a,29).a,16))};var sR=mdb(Ane,'CommentNodeMarginCalculator/lambda$0$Type',1486);bcb(1487,1,qie,W2b);_.td=function X2b(a){R2b(BD(a,10))};var tR=mdb(Ane,'CommentNodeMarginCalculator/lambda$1$Type',1487);bcb(1488,1,ene,_2b);_.pf=function a3b(a,b){Z2b(BD(a,37),b)};var vR=mdb(Ane,'CommentPostprocessor',1488);bcb(1489,1,ene,e3b);_.pf=function f3b(a,b){b3b(BD(a,37),b)};var wR=mdb(Ane,'CommentPreprocessor',1489);bcb(1490,1,ene,h3b);_.pf=function i3b(a,b){g3b(BD(a,37),b)};var xR=mdb(Ane,'ConstraintsPostprocessor',1490);bcb(1491,1,ene,p3b);_.pf=function q3b(a,b){n3b(BD(a,37),b)};var yR=mdb(Ane,'EdgeAndLayerConstraintEdgeReverser',1491);bcb(1492,1,ene,t3b);_.pf=function v3b(a,b){r3b(BD(a,37),b)};var CR=mdb(Ane,'EndLabelPostprocessor',1492);bcb(1493,1,{},w3b);_.Kb=function x3b(a){return new YAb(null,new Kub(BD(a,29).a,16))};var zR=mdb(Ane,'EndLabelPostprocessor/lambda$0$Type',1493);bcb(1494,1,Oie,y3b);_.Mb=function z3b(a){return u3b(BD(a,10))};var AR=mdb(Ane,'EndLabelPostprocessor/lambda$1$Type',1494);bcb(1495,1,qie,A3b);_.td=function B3b(a){s3b(BD(a,10))};var BR=mdb(Ane,'EndLabelPostprocessor/lambda$2$Type',1495);bcb(1496,1,ene,M3b);_.pf=function P3b(a,b){I3b(BD(a,37),b)};var JR=mdb(Ane,'EndLabelPreprocessor',1496);bcb(1497,1,{},Q3b);_.Kb=function R3b(a){return new YAb(null,new Kub(BD(a,29).a,16))};var DR=mdb(Ane,'EndLabelPreprocessor/lambda$0$Type',1497);bcb(1498,1,qie,S3b);_.td=function T3b(a){E3b(this.a,this.b,this.c,BD(a,10))};_.a=0;_.b=0;_.c=false;var ER=mdb(Ane,'EndLabelPreprocessor/lambda$1$Type',1498);bcb(1499,1,Oie,U3b);_.Mb=function V3b(a){return PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),pad))};var FR=mdb(Ane,'EndLabelPreprocessor/lambda$2$Type',1499);bcb(1500,1,qie,W3b);_.td=function X3b(a){Dsb(this.a,BD(a,70))};var GR=mdb(Ane,'EndLabelPreprocessor/lambda$3$Type',1500);bcb(1501,1,Oie,Y3b);_.Mb=function Z3b(a){return PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),oad))};var HR=mdb(Ane,'EndLabelPreprocessor/lambda$4$Type',1501);bcb(1502,1,qie,$3b);_.td=function _3b(a){Dsb(this.a,BD(a,70))};var IR=mdb(Ane,'EndLabelPreprocessor/lambda$5$Type',1502);bcb(1551,1,ene,i4b);_.pf=function j4b(a,b){f4b(BD(a,37),b)};var a4b;var RR=mdb(Ane,'EndLabelSorter',1551);bcb(1552,1,Dke,l4b);_.ue=function m4b(a,b){return k4b(BD(a,456),BD(b,456))};_.Fb=function n4b(a){return this===a};_.ve=function o4b(){return new tpb(this)};var KR=mdb(Ane,'EndLabelSorter/1',1552);bcb(456,1,{456:1},p4b);var LR=mdb(Ane,'EndLabelSorter/LabelGroup',456);bcb(1553,1,{},q4b);_.Kb=function r4b(a){return b4b(),new YAb(null,new Kub(BD(a,29).a,16))};var MR=mdb(Ane,'EndLabelSorter/lambda$0$Type',1553);bcb(1554,1,Oie,s4b);_.Mb=function t4b(a){return b4b(),BD(a,10).k==(j0b(),h0b)};var NR=mdb(Ane,'EndLabelSorter/lambda$1$Type',1554);bcb(1555,1,qie,u4b);_.td=function v4b(a){g4b(BD(a,10))};var OR=mdb(Ane,'EndLabelSorter/lambda$2$Type',1555);bcb(1556,1,Oie,w4b);_.Mb=function x4b(a){return b4b(),PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),oad))};var PR=mdb(Ane,'EndLabelSorter/lambda$3$Type',1556);bcb(1557,1,Oie,y4b);_.Mb=function z4b(a){return b4b(),PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),pad))};var QR=mdb(Ane,'EndLabelSorter/lambda$4$Type',1557);bcb(1503,1,ene,L4b);_.pf=function M4b(a,b){J4b(this,BD(a,37))};_.b=0;_.c=0;var YR=mdb(Ane,'FinalSplineBendpointsCalculator',1503);bcb(1504,1,{},N4b);_.Kb=function O4b(a){return new YAb(null,new Kub(BD(a,29).a,16))};var SR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$0$Type',1504);bcb(1505,1,{},P4b);_.Kb=function Q4b(a){return new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var TR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$1$Type',1505);bcb(1506,1,Oie,R4b);_.Mb=function S4b(a){return !OZb(BD(a,17))};var UR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$2$Type',1506);bcb(1507,1,Oie,T4b);_.Mb=function U4b(a){return wNb(BD(a,17),(wtc(),rtc))};var VR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$3$Type',1507);bcb(1508,1,qie,V4b);_.td=function W4b(a){C4b(this.a,BD(a,128))};var WR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$4$Type',1508);bcb(1509,1,qie,X4b);_.td=function Y4b(a){smb(BD(a,17).a)};var XR=mdb(Ane,'FinalSplineBendpointsCalculator/lambda$5$Type',1509);bcb(792,1,ene,u5b);_.pf=function v5b(a,b){l5b(this,BD(a,37),b)};var $R=mdb(Ane,'GraphTransformer',792);bcb(511,22,{3:1,35:1,22:1,511:1},z5b);var w5b,x5b;var ZR=ndb(Ane,'GraphTransformer/Mode',511,CI,B5b,A5b);var C5b;bcb(1510,1,ene,I5b);_.pf=function J5b(a,b){F5b(BD(a,37),b)};var _R=mdb(Ane,'HierarchicalNodeResizingProcessor',1510);bcb(1511,1,ene,Q5b);_.pf=function R5b(a,b){M5b(BD(a,37),b)};var bS=mdb(Ane,'HierarchicalPortConstraintProcessor',1511);bcb(1512,1,Dke,T5b);_.ue=function U5b(a,b){return S5b(BD(a,10),BD(b,10))};_.Fb=function V5b(a){return this===a};_.ve=function W5b(){return new tpb(this)};var aS=mdb(Ane,'HierarchicalPortConstraintProcessor/NodeComparator',1512);bcb(1513,1,ene,Z5b);_.pf=function $5b(a,b){X5b(BD(a,37),b)};var cS=mdb(Ane,'HierarchicalPortDummySizeProcessor',1513);bcb(1514,1,ene,l6b);_.pf=function m6b(a,b){e6b(this,BD(a,37),b)};_.a=0;var fS=mdb(Ane,'HierarchicalPortOrthogonalEdgeRouter',1514);bcb(1515,1,Dke,o6b);_.ue=function p6b(a,b){return n6b(BD(a,10),BD(b,10))};_.Fb=function q6b(a){return this===a};_.ve=function r6b(){return new tpb(this)};var dS=mdb(Ane,'HierarchicalPortOrthogonalEdgeRouter/1',1515);bcb(1516,1,Dke,t6b);_.ue=function u6b(a,b){return s6b(BD(a,10),BD(b,10))};_.Fb=function v6b(a){return this===a};_.ve=function w6b(){return new tpb(this)};var eS=mdb(Ane,'HierarchicalPortOrthogonalEdgeRouter/2',1516);bcb(1517,1,ene,z6b);_.pf=function A6b(a,b){y6b(BD(a,37),b)};var gS=mdb(Ane,'HierarchicalPortPositionProcessor',1517);bcb(1518,1,ene,J6b);_.pf=function K6b(a,b){I6b(this,BD(a,37))};_.a=0;_.c=0;var B6b,C6b;var kS=mdb(Ane,'HighDegreeNodeLayeringProcessor',1518);bcb(571,1,{571:1},L6b);_.b=-1;_.d=-1;var hS=mdb(Ane,'HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation',571);bcb(1519,1,{},M6b);_.Kb=function N6b(a){return D6b(),R_b(BD(a,10))};_.Fb=function O6b(a){return this===a};var iS=mdb(Ane,'HighDegreeNodeLayeringProcessor/lambda$0$Type',1519);bcb(1520,1,{},P6b);_.Kb=function Q6b(a){return D6b(),U_b(BD(a,10))};_.Fb=function R6b(a){return this===a};var jS=mdb(Ane,'HighDegreeNodeLayeringProcessor/lambda$1$Type',1520);bcb(1526,1,ene,X6b);_.pf=function Y6b(a,b){W6b(this,BD(a,37),b)};var pS=mdb(Ane,'HyperedgeDummyMerger',1526);bcb(793,1,{},Z6b);_.a=false;_.b=false;_.c=false;var lS=mdb(Ane,'HyperedgeDummyMerger/MergeState',793);bcb(1527,1,{},$6b);_.Kb=function _6b(a){return new YAb(null,new Kub(BD(a,29).a,16))};var mS=mdb(Ane,'HyperedgeDummyMerger/lambda$0$Type',1527);bcb(1528,1,{},a7b);_.Kb=function b7b(a){return new YAb(null,new Kub(BD(a,10).j,16))};var nS=mdb(Ane,'HyperedgeDummyMerger/lambda$1$Type',1528);bcb(1529,1,qie,c7b);_.td=function d7b(a){BD(a,11).p=-1};var oS=mdb(Ane,'HyperedgeDummyMerger/lambda$2$Type',1529);bcb(1530,1,ene,g7b);_.pf=function h7b(a,b){f7b(BD(a,37),b)};var qS=mdb(Ane,'HypernodesProcessor',1530);bcb(1531,1,ene,j7b);_.pf=function k7b(a,b){i7b(BD(a,37),b)};var rS=mdb(Ane,'InLayerConstraintProcessor',1531);bcb(1532,1,ene,m7b);_.pf=function n7b(a,b){l7b(BD(a,37),b)};var sS=mdb(Ane,'InnermostNodeMarginCalculator',1532);bcb(1533,1,ene,r7b);_.pf=function w7b(a,b){q7b(this,BD(a,37))};_.a=Qje;_.b=Qje;_.c=Pje;_.d=Pje;var zS=mdb(Ane,'InteractiveExternalPortPositioner',1533);bcb(1534,1,{},x7b);_.Kb=function y7b(a){return BD(a,17).d.i};_.Fb=function z7b(a){return this===a};var tS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$0$Type',1534);bcb(1535,1,{},A7b);_.Kb=function B7b(a){return s7b(this.a,ED(a))};_.Fb=function C7b(a){return this===a};var uS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$1$Type',1535);bcb(1536,1,{},D7b);_.Kb=function E7b(a){return BD(a,17).c.i};_.Fb=function F7b(a){return this===a};var vS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$2$Type',1536);bcb(1537,1,{},G7b);_.Kb=function H7b(a){return t7b(this.a,ED(a))};_.Fb=function I7b(a){return this===a};var wS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$3$Type',1537);bcb(1538,1,{},J7b);_.Kb=function K7b(a){return u7b(this.a,ED(a))};_.Fb=function L7b(a){return this===a};var xS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$4$Type',1538);bcb(1539,1,{},M7b);_.Kb=function N7b(a){return v7b(this.a,ED(a))};_.Fb=function O7b(a){return this===a};var yS=mdb(Ane,'InteractiveExternalPortPositioner/lambda$5$Type',1539);bcb(77,22,{3:1,35:1,22:1,77:1,234:1},T8b);_.Kf=function U8b(){switch(this.g){case 15:return new eoc;case 22:return new Aoc;case 47:return new Joc;case 28:case 35:return new uac;case 32:return new S2b;case 42:return new _2b;case 1:return new e3b;case 41:return new h3b;case 56:return new u5b((y5b(),x5b));case 0:return new u5b((y5b(),w5b));case 2:return new p3b;case 54:return new t3b;case 33:return new M3b;case 51:return new L4b;case 55:return new I5b;case 13:return new Q5b;case 38:return new Z5b;case 44:return new l6b;case 40:return new z6b;case 9:return new J6b;case 49:return new sgc;case 37:return new X6b;case 43:return new g7b;case 27:return new j7b;case 30:return new m7b;case 3:return new r7b;case 18:return new b9b;case 29:return new h9b;case 5:return new u9b;case 50:return new D9b;case 34:return new $9b;case 36:return new Iac;case 52:return new i4b;case 11:return new Sac;case 7:return new abc;case 39:return new obc;case 45:return new rbc;case 16:return new vbc;case 10:return new Fbc;case 48:return new Xbc;case 21:return new ccc;case 23:return new fGc((rGc(),pGc));case 8:return new lcc;case 12:return new tcc;case 4:return new ycc;case 19:return new Tcc;case 17:return new pdc;case 53:return new sdc;case 6:return new hec;case 25:return new wdc;case 46:return new Ndc;case 31:return new sec;case 14:return new Fec;case 26:return new ppc;case 20:return new Uec;case 24:return new fGc((rGc(),qGc));default:throw vbb(new Wdb(Dne+(this.f!=null?this.f:''+this.g)));}};var P7b,Q7b,R7b,S7b,T7b,U7b,V7b,W7b,X7b,Y7b,Z7b,$7b,_7b,a8b,b8b,c8b,d8b,e8b,f8b,g8b,h8b,i8b,j8b,k8b,l8b,m8b,n8b,o8b,p8b,q8b,r8b,s8b,t8b,u8b,v8b,w8b,x8b,y8b,z8b,A8b,B8b,C8b,D8b,E8b,F8b,G8b,H8b,I8b,J8b,K8b,L8b,M8b,N8b,O8b,P8b,Q8b,R8b;var AS=ndb(Ane,Ene,77,CI,W8b,V8b);var X8b;bcb(1540,1,ene,b9b);_.pf=function c9b(a,b){_8b(BD(a,37),b)};var BS=mdb(Ane,'InvertedPortProcessor',1540);bcb(1541,1,ene,h9b);_.pf=function i9b(a,b){g9b(BD(a,37),b)};var FS=mdb(Ane,'LabelAndNodeSizeProcessor',1541);bcb(1542,1,Oie,j9b);_.Mb=function k9b(a){return BD(a,10).k==(j0b(),h0b)};var CS=mdb(Ane,'LabelAndNodeSizeProcessor/lambda$0$Type',1542);bcb(1543,1,Oie,l9b);_.Mb=function m9b(a){return BD(a,10).k==(j0b(),e0b)};var DS=mdb(Ane,'LabelAndNodeSizeProcessor/lambda$1$Type',1543);bcb(1544,1,qie,n9b);_.td=function o9b(a){e9b(this.b,this.a,this.c,BD(a,10))};_.a=false;_.c=false;var ES=mdb(Ane,'LabelAndNodeSizeProcessor/lambda$2$Type',1544);bcb(1545,1,ene,u9b);_.pf=function v9b(a,b){s9b(BD(a,37),b)};var p9b;var HS=mdb(Ane,'LabelDummyInserter',1545);bcb(1546,1,Vke,w9b);_.Lb=function x9b(a){return PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),nad))};_.Fb=function y9b(a){return this===a};_.Mb=function z9b(a){return PD(vNb(BD(a,70),(Nyc(),Qwc)))===PD((qad(),nad))};var GS=mdb(Ane,'LabelDummyInserter/1',1546);bcb(1547,1,ene,D9b);_.pf=function E9b(a,b){C9b(BD(a,37),b)};var JS=mdb(Ane,'LabelDummyRemover',1547);bcb(1548,1,Oie,F9b);_.Mb=function G9b(a){return Ccb(DD(vNb(BD(a,70),(Nyc(),Pwc))))};var IS=mdb(Ane,'LabelDummyRemover/lambda$0$Type',1548);bcb(1359,1,ene,$9b);_.pf=function cac(a,b){W9b(this,BD(a,37),b)};_.a=null;var H9b;var QS=mdb(Ane,'LabelDummySwitcher',1359);bcb(286,1,{286:1},gac);_.c=0;_.d=null;_.f=0;var KS=mdb(Ane,'LabelDummySwitcher/LabelDummyInfo',286);bcb(1360,1,{},hac);_.Kb=function iac(a){return I9b(),new YAb(null,new Kub(BD(a,29).a,16))};var LS=mdb(Ane,'LabelDummySwitcher/lambda$0$Type',1360);bcb(1361,1,Oie,jac);_.Mb=function kac(a){return I9b(),BD(a,10).k==(j0b(),f0b)};var MS=mdb(Ane,'LabelDummySwitcher/lambda$1$Type',1361);bcb(1362,1,{},lac);_.Kb=function mac(a){return _9b(this.a,BD(a,10))};var NS=mdb(Ane,'LabelDummySwitcher/lambda$2$Type',1362);bcb(1363,1,qie,nac);_.td=function oac(a){aac(this.a,BD(a,286))};var OS=mdb(Ane,'LabelDummySwitcher/lambda$3$Type',1363);bcb(1364,1,Dke,pac);_.ue=function qac(a,b){return bac(BD(a,286),BD(b,286))};_.Fb=function rac(a){return this===a};_.ve=function sac(){return new tpb(this)};var PS=mdb(Ane,'LabelDummySwitcher/lambda$4$Type',1364);bcb(791,1,ene,uac);_.pf=function vac(a,b){tac(BD(a,37),b)};var RS=mdb(Ane,'LabelManagementProcessor',791);bcb(1549,1,ene,Iac);_.pf=function Jac(a,b){Cac(BD(a,37),b)};var TS=mdb(Ane,'LabelSideSelector',1549);bcb(1550,1,Oie,Kac);_.Mb=function Lac(a){return Ccb(DD(vNb(BD(a,70),(Nyc(),Pwc))))};var SS=mdb(Ane,'LabelSideSelector/lambda$0$Type',1550);bcb(1558,1,ene,Sac);_.pf=function Tac(a,b){Oac(BD(a,37),b)};var US=mdb(Ane,'LayerConstraintPostprocessor',1558);bcb(1559,1,ene,abc);_.pf=function bbc(a,b){$ac(BD(a,37),b)};var Uac;var WS=mdb(Ane,'LayerConstraintPreprocessor',1559);bcb(360,22,{3:1,35:1,22:1,360:1},ibc);var cbc,dbc,ebc,fbc;var VS=ndb(Ane,'LayerConstraintPreprocessor/HiddenNodeConnections',360,CI,kbc,jbc);var lbc;bcb(1560,1,ene,obc);_.pf=function pbc(a,b){nbc(BD(a,37),b)};var XS=mdb(Ane,'LayerSizeAndGraphHeightCalculator',1560);bcb(1561,1,ene,rbc);_.pf=function tbc(a,b){qbc(BD(a,37),b)};var YS=mdb(Ane,'LongEdgeJoiner',1561);bcb(1562,1,ene,vbc);_.pf=function xbc(a,b){ubc(BD(a,37),b)};var ZS=mdb(Ane,'LongEdgeSplitter',1562);bcb(1563,1,ene,Fbc);_.pf=function Ibc(a,b){Bbc(this,BD(a,37),b)};_.d=0;_.e=0;_.i=0;_.j=0;_.k=0;_.n=0;var bT=mdb(Ane,'NodePromotion',1563);bcb(1564,1,{},Jbc);_.Kb=function Kbc(a){return BD(a,46),Bcb(),true};_.Fb=function Lbc(a){return this===a};var $S=mdb(Ane,'NodePromotion/lambda$0$Type',1564);bcb(1565,1,{},Mbc);_.Kb=function Nbc(a){return Gbc(this.a,BD(a,46))};_.Fb=function Obc(a){return this===a};_.a=0;var _S=mdb(Ane,'NodePromotion/lambda$1$Type',1565);bcb(1566,1,{},Pbc);_.Kb=function Qbc(a){return Hbc(this.a,BD(a,46))};_.Fb=function Rbc(a){return this===a};_.a=0;var aT=mdb(Ane,'NodePromotion/lambda$2$Type',1566);bcb(1567,1,ene,Xbc);_.pf=function Ybc(a,b){Sbc(BD(a,37),b)};var cT=mdb(Ane,'NorthSouthPortPostprocessor',1567);bcb(1568,1,ene,ccc);_.pf=function ecc(a,b){acc(BD(a,37),b)};var eT=mdb(Ane,'NorthSouthPortPreprocessor',1568);bcb(1569,1,Dke,fcc);_.ue=function gcc(a,b){return dcc(BD(a,11),BD(b,11))};_.Fb=function hcc(a){return this===a};_.ve=function icc(){return new tpb(this)};var dT=mdb(Ane,'NorthSouthPortPreprocessor/lambda$0$Type',1569);bcb(1570,1,ene,lcc);_.pf=function ncc(a,b){kcc(BD(a,37),b)};var hT=mdb(Ane,'PartitionMidprocessor',1570);bcb(1571,1,Oie,occ);_.Mb=function pcc(a){return wNb(BD(a,10),(Nyc(),Nxc))};var fT=mdb(Ane,'PartitionMidprocessor/lambda$0$Type',1571);bcb(1572,1,qie,qcc);_.td=function rcc(a){mcc(this.a,BD(a,10))};var gT=mdb(Ane,'PartitionMidprocessor/lambda$1$Type',1572);bcb(1573,1,ene,tcc);_.pf=function ucc(a,b){scc(BD(a,37),b)};var iT=mdb(Ane,'PartitionPostprocessor',1573);bcb(1574,1,ene,ycc);_.pf=function zcc(a,b){wcc(BD(a,37),b)};var nT=mdb(Ane,'PartitionPreprocessor',1574);bcb(1575,1,Oie,Acc);_.Mb=function Bcc(a){return wNb(BD(a,10),(Nyc(),Nxc))};var jT=mdb(Ane,'PartitionPreprocessor/lambda$0$Type',1575);bcb(1576,1,{},Ccc);_.Kb=function Dcc(a){return new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var kT=mdb(Ane,'PartitionPreprocessor/lambda$1$Type',1576);bcb(1577,1,Oie,Ecc);_.Mb=function Fcc(a){return vcc(BD(a,17))};var lT=mdb(Ane,'PartitionPreprocessor/lambda$2$Type',1577);bcb(1578,1,qie,Gcc);_.td=function Hcc(a){xcc(BD(a,17))};var mT=mdb(Ane,'PartitionPreprocessor/lambda$3$Type',1578);bcb(1579,1,ene,Tcc);_.pf=function Xcc(a,b){Qcc(BD(a,37),b)};var Icc,Jcc,Kcc,Lcc,Mcc,Ncc;var tT=mdb(Ane,'PortListSorter',1579);bcb(1580,1,{},Zcc);_.Kb=function $cc(a){return Occ(),BD(a,11).e};var oT=mdb(Ane,'PortListSorter/lambda$0$Type',1580);bcb(1581,1,{},_cc);_.Kb=function adc(a){return Occ(),BD(a,11).g};var pT=mdb(Ane,'PortListSorter/lambda$1$Type',1581);bcb(1582,1,Dke,bdc);_.ue=function cdc(a,b){return Ucc(BD(a,11),BD(b,11))};_.Fb=function ddc(a){return this===a};_.ve=function edc(){return new tpb(this)};var qT=mdb(Ane,'PortListSorter/lambda$2$Type',1582);bcb(1583,1,Dke,fdc);_.ue=function gdc(a,b){return Vcc(BD(a,11),BD(b,11))};_.Fb=function hdc(a){return this===a};_.ve=function idc(){return new tpb(this)};var rT=mdb(Ane,'PortListSorter/lambda$3$Type',1583);bcb(1584,1,Dke,jdc);_.ue=function kdc(a,b){return Wcc(BD(a,11),BD(b,11))};_.Fb=function ldc(a){return this===a};_.ve=function mdc(){return new tpb(this)};var sT=mdb(Ane,'PortListSorter/lambda$4$Type',1584);bcb(1585,1,ene,pdc);_.pf=function qdc(a,b){ndc(BD(a,37),b)};var uT=mdb(Ane,'PortSideProcessor',1585);bcb(1586,1,ene,sdc);_.pf=function tdc(a,b){rdc(BD(a,37),b)};var vT=mdb(Ane,'ReversedEdgeRestorer',1586);bcb(1591,1,ene,wdc);_.pf=function xdc(a,b){udc(this,BD(a,37),b)};var CT=mdb(Ane,'SelfLoopPortRestorer',1591);bcb(1592,1,{},ydc);_.Kb=function zdc(a){return new YAb(null,new Kub(BD(a,29).a,16))};var wT=mdb(Ane,'SelfLoopPortRestorer/lambda$0$Type',1592);bcb(1593,1,Oie,Adc);_.Mb=function Bdc(a){return BD(a,10).k==(j0b(),h0b)};var xT=mdb(Ane,'SelfLoopPortRestorer/lambda$1$Type',1593);bcb(1594,1,Oie,Cdc);_.Mb=function Ddc(a){return wNb(BD(a,10),(wtc(),ntc))};var yT=mdb(Ane,'SelfLoopPortRestorer/lambda$2$Type',1594);bcb(1595,1,{},Edc);_.Kb=function Fdc(a){return BD(vNb(BD(a,10),(wtc(),ntc)),403)};var zT=mdb(Ane,'SelfLoopPortRestorer/lambda$3$Type',1595);bcb(1596,1,qie,Gdc);_.td=function Hdc(a){vdc(this.a,BD(a,403))};var AT=mdb(Ane,'SelfLoopPortRestorer/lambda$4$Type',1596);bcb(794,1,qie,Idc);_.td=function Jdc(a){ljc(BD(a,101))};var BT=mdb(Ane,'SelfLoopPortRestorer/lambda$5$Type',794);bcb(1597,1,ene,Ndc);_.pf=function Pdc(a,b){Kdc(BD(a,37),b)};var LT=mdb(Ane,'SelfLoopPostProcessor',1597);bcb(1598,1,{},Qdc);_.Kb=function Rdc(a){return new YAb(null,new Kub(BD(a,29).a,16))};var DT=mdb(Ane,'SelfLoopPostProcessor/lambda$0$Type',1598);bcb(1599,1,Oie,Sdc);_.Mb=function Tdc(a){return BD(a,10).k==(j0b(),h0b)};var ET=mdb(Ane,'SelfLoopPostProcessor/lambda$1$Type',1599);bcb(1600,1,Oie,Udc);_.Mb=function Vdc(a){return wNb(BD(a,10),(wtc(),ntc))};var FT=mdb(Ane,'SelfLoopPostProcessor/lambda$2$Type',1600);bcb(1601,1,qie,Wdc);_.td=function Xdc(a){Ldc(BD(a,10))};var GT=mdb(Ane,'SelfLoopPostProcessor/lambda$3$Type',1601);bcb(1602,1,{},Ydc);_.Kb=function Zdc(a){return new YAb(null,new Kub(BD(a,101).f,1))};var HT=mdb(Ane,'SelfLoopPostProcessor/lambda$4$Type',1602);bcb(1603,1,qie,$dc);_.td=function _dc(a){Mdc(this.a,BD(a,409))};var IT=mdb(Ane,'SelfLoopPostProcessor/lambda$5$Type',1603);bcb(1604,1,Oie,aec);_.Mb=function bec(a){return !!BD(a,101).i};var JT=mdb(Ane,'SelfLoopPostProcessor/lambda$6$Type',1604);bcb(1605,1,qie,cec);_.td=function dec(a){Odc(this.a,BD(a,101))};var KT=mdb(Ane,'SelfLoopPostProcessor/lambda$7$Type',1605);bcb(1587,1,ene,hec);_.pf=function iec(a,b){gec(BD(a,37),b)};var PT=mdb(Ane,'SelfLoopPreProcessor',1587);bcb(1588,1,{},jec);_.Kb=function kec(a){return new YAb(null,new Kub(BD(a,101).f,1))};var MT=mdb(Ane,'SelfLoopPreProcessor/lambda$0$Type',1588);bcb(1589,1,{},lec);_.Kb=function mec(a){return BD(a,409).a};var NT=mdb(Ane,'SelfLoopPreProcessor/lambda$1$Type',1589);bcb(1590,1,qie,nec);_.td=function oec(a){fec(BD(a,17))};var OT=mdb(Ane,'SelfLoopPreProcessor/lambda$2$Type',1590);bcb(1606,1,ene,sec);_.pf=function tec(a,b){qec(this,BD(a,37),b)};var VT=mdb(Ane,'SelfLoopRouter',1606);bcb(1607,1,{},uec);_.Kb=function vec(a){return new YAb(null,new Kub(BD(a,29).a,16))};var QT=mdb(Ane,'SelfLoopRouter/lambda$0$Type',1607);bcb(1608,1,Oie,wec);_.Mb=function xec(a){return BD(a,10).k==(j0b(),h0b)};var RT=mdb(Ane,'SelfLoopRouter/lambda$1$Type',1608);bcb(1609,1,Oie,yec);_.Mb=function zec(a){return wNb(BD(a,10),(wtc(),ntc))};var ST=mdb(Ane,'SelfLoopRouter/lambda$2$Type',1609);bcb(1610,1,{},Aec);_.Kb=function Bec(a){return BD(vNb(BD(a,10),(wtc(),ntc)),403)};var TT=mdb(Ane,'SelfLoopRouter/lambda$3$Type',1610);bcb(1611,1,qie,Cec);_.td=function Dec(a){pec(this.a,this.b,BD(a,403))};var UT=mdb(Ane,'SelfLoopRouter/lambda$4$Type',1611);bcb(1612,1,ene,Fec);_.pf=function Iec(a,b){Eec(BD(a,37),b)};var $T=mdb(Ane,'SemiInteractiveCrossMinProcessor',1612);bcb(1613,1,Oie,Jec);_.Mb=function Kec(a){return BD(a,10).k==(j0b(),h0b)};var WT=mdb(Ane,'SemiInteractiveCrossMinProcessor/lambda$0$Type',1613);bcb(1614,1,Oie,Lec);_.Mb=function Mec(a){return uNb(BD(a,10))._b((Nyc(),ayc))};var XT=mdb(Ane,'SemiInteractiveCrossMinProcessor/lambda$1$Type',1614);bcb(1615,1,Dke,Nec);_.ue=function Oec(a,b){return Gec(BD(a,10),BD(b,10))};_.Fb=function Pec(a){return this===a};_.ve=function Qec(){return new tpb(this)};var YT=mdb(Ane,'SemiInteractiveCrossMinProcessor/lambda$2$Type',1615);bcb(1616,1,{},Rec);_.Ce=function Sec(a,b){return Hec(BD(a,10),BD(b,10))};var ZT=mdb(Ane,'SemiInteractiveCrossMinProcessor/lambda$3$Type',1616);bcb(1618,1,ene,Uec);_.pf=function Yec(a,b){Tec(BD(a,37),b)};var bU=mdb(Ane,'SortByInputModelProcessor',1618);bcb(1619,1,Oie,Zec);_.Mb=function $ec(a){return BD(a,11).g.c.length!=0};var _T=mdb(Ane,'SortByInputModelProcessor/lambda$0$Type',1619);bcb(1620,1,qie,_ec);_.td=function afc(a){Wec(this.a,BD(a,11))};var aU=mdb(Ane,'SortByInputModelProcessor/lambda$1$Type',1620);bcb(1693,803,{},jfc);_.Me=function kfc(a){var b,c,d,e;this.c=a;switch(this.a.g){case 2:b=new Rkb;MAb(JAb(new YAb(null,new Kub(this.c.a.b,16)),new lgc),new ngc(this,b));nEb(this,new tfc);Hkb(b,new xfc);b.c=KC(SI,Uhe,1,0,5,1);MAb(JAb(new YAb(null,new Kub(this.c.a.b,16)),new zfc),new Bfc(b));nEb(this,new Ffc);Hkb(b,new Jfc);b.c=KC(SI,Uhe,1,0,5,1);c=Ntb($zb(OAb(new YAb(null,new Kub(this.c.a.b,16)),new Lfc(this))),new Nfc);MAb(new YAb(null,new Kub(this.c.a.a,16)),new Rfc(c,b));nEb(this,new Vfc);Hkb(b,new Zfc);b.c=KC(SI,Uhe,1,0,5,1);break;case 3:d=new Rkb;nEb(this,new lfc);e=Ntb($zb(OAb(new YAb(null,new Kub(this.c.a.b,16)),new pfc(this))),new Pfc);MAb(JAb(new YAb(null,new Kub(this.c.a.b,16)),new _fc),new bgc(e,d));nEb(this,new fgc);Hkb(d,new jgc);d.c=KC(SI,Uhe,1,0,5,1);break;default:throw vbb(new x2c);}};_.b=0;var AU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation',1693);bcb(1694,1,Vke,lfc);_.Lb=function mfc(a){return JD(BD(a,57).g,145)};_.Fb=function nfc(a){return this===a};_.Mb=function ofc(a){return JD(BD(a,57).g,145)};var cU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$0$Type',1694);bcb(1695,1,{},pfc);_.Fe=function qfc(a){return dfc(this.a,BD(a,57))};var dU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$1$Type',1695);bcb(1703,1,Pie,rfc);_.Vd=function sfc(){cfc(this.a,this.b,-1)};_.b=0;var eU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$10$Type',1703);bcb(1705,1,Vke,tfc);_.Lb=function ufc(a){return JD(BD(a,57).g,145)};_.Fb=function vfc(a){return this===a};_.Mb=function wfc(a){return JD(BD(a,57).g,145)};var fU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$11$Type',1705);bcb(1706,1,qie,xfc);_.td=function yfc(a){BD(a,365).Vd()};var gU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$12$Type',1706);bcb(1707,1,Oie,zfc);_.Mb=function Afc(a){return JD(BD(a,57).g,10)};var hU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$13$Type',1707);bcb(1709,1,qie,Bfc);_.td=function Cfc(a){efc(this.a,BD(a,57))};var iU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$14$Type',1709);bcb(1708,1,Pie,Dfc);_.Vd=function Efc(){cfc(this.b,this.a,-1)};_.a=0;var jU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$15$Type',1708);bcb(1710,1,Vke,Ffc);_.Lb=function Gfc(a){return JD(BD(a,57).g,10)};_.Fb=function Hfc(a){return this===a};_.Mb=function Ifc(a){return JD(BD(a,57).g,10)};var kU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$16$Type',1710);bcb(1711,1,qie,Jfc);_.td=function Kfc(a){BD(a,365).Vd()};var lU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$17$Type',1711);bcb(1712,1,{},Lfc);_.Fe=function Mfc(a){return ffc(this.a,BD(a,57))};var mU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$18$Type',1712);bcb(1713,1,{},Nfc);_.De=function Ofc(){return 0};var nU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$19$Type',1713);bcb(1696,1,{},Pfc);_.De=function Qfc(){return 0};var oU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$2$Type',1696);bcb(1715,1,qie,Rfc);_.td=function Sfc(a){gfc(this.a,this.b,BD(a,307))};_.a=0;var pU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$20$Type',1715);bcb(1714,1,Pie,Tfc);_.Vd=function Ufc(){bfc(this.a,this.b,-1)};_.b=0;var qU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$21$Type',1714);bcb(1716,1,Vke,Vfc);_.Lb=function Wfc(a){return BD(a,57),true};_.Fb=function Xfc(a){return this===a};_.Mb=function Yfc(a){return BD(a,57),true};var rU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$22$Type',1716);bcb(1717,1,qie,Zfc);_.td=function $fc(a){BD(a,365).Vd()};var sU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$23$Type',1717);bcb(1697,1,Oie,_fc);_.Mb=function agc(a){return JD(BD(a,57).g,10)};var tU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$3$Type',1697);bcb(1699,1,qie,bgc);_.td=function cgc(a){hfc(this.a,this.b,BD(a,57))};_.a=0;var uU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$4$Type',1699);bcb(1698,1,Pie,dgc);_.Vd=function egc(){cfc(this.b,this.a,-1)};_.a=0;var vU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$5$Type',1698);bcb(1700,1,Vke,fgc);_.Lb=function ggc(a){return BD(a,57),true};_.Fb=function hgc(a){return this===a};_.Mb=function igc(a){return BD(a,57),true};var wU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$6$Type',1700);bcb(1701,1,qie,jgc);_.td=function kgc(a){BD(a,365).Vd()};var xU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$7$Type',1701);bcb(1702,1,Oie,lgc);_.Mb=function mgc(a){return JD(BD(a,57).g,145)};var yU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$8$Type',1702);bcb(1704,1,qie,ngc);_.td=function ogc(a){ifc(this.a,this.b,BD(a,57))};var zU=mdb(Jne,'EdgeAwareScanlineConstraintCalculation/lambda$9$Type',1704);bcb(1521,1,ene,sgc);_.pf=function xgc(a,b){rgc(this,BD(a,37),b)};var pgc;var EU=mdb(Jne,'HorizontalGraphCompactor',1521);bcb(1522,1,{},ygc);_.Oe=function zgc(a,b){var c,d,e;if(vgc(a,b)){return 0}c=tgc(a);d=tgc(b);if(!!c&&c.k==(j0b(),e0b)||!!d&&d.k==(j0b(),e0b)){return 0}e=BD(vNb(this.a.a,(wtc(),otc)),304);return fBc(e,c?c.k:(j0b(),g0b),d?d.k:(j0b(),g0b))};_.Pe=function Agc(a,b){var c,d,e;if(vgc(a,b)){return 1}c=tgc(a);d=tgc(b);e=BD(vNb(this.a.a,(wtc(),otc)),304);return iBc(e,c?c.k:(j0b(),g0b),d?d.k:(j0b(),g0b))};var BU=mdb(Jne,'HorizontalGraphCompactor/1',1522);bcb(1523,1,{},Bgc);_.Ne=function Cgc(a,b){return qgc(),a.a.i==0};var CU=mdb(Jne,'HorizontalGraphCompactor/lambda$0$Type',1523);bcb(1524,1,{},Dgc);_.Ne=function Egc(a,b){return wgc(this.a,a,b)};var DU=mdb(Jne,'HorizontalGraphCompactor/lambda$1$Type',1524);bcb(1664,1,{},Ygc);var Fgc,Ggc;var cV=mdb(Jne,'LGraphToCGraphTransformer',1664);bcb(1672,1,Oie,ehc);_.Mb=function fhc(a){return a!=null};var FU=mdb(Jne,'LGraphToCGraphTransformer/0methodref$nonNull$Type',1672);bcb(1665,1,{},ghc);_.Kb=function hhc(a){return Hgc(),fcb(vNb(BD(BD(a,57).g,10),(wtc(),$sc)))};var GU=mdb(Jne,'LGraphToCGraphTransformer/lambda$0$Type',1665);bcb(1666,1,{},ihc);_.Kb=function jhc(a){return Hgc(),gic(BD(BD(a,57).g,145))};var HU=mdb(Jne,'LGraphToCGraphTransformer/lambda$1$Type',1666);bcb(1675,1,Oie,khc);_.Mb=function lhc(a){return Hgc(),JD(BD(a,57).g,10)};var IU=mdb(Jne,'LGraphToCGraphTransformer/lambda$10$Type',1675);bcb(1676,1,qie,mhc);_.td=function nhc(a){Zgc(BD(a,57))};var JU=mdb(Jne,'LGraphToCGraphTransformer/lambda$11$Type',1676);bcb(1677,1,Oie,ohc);_.Mb=function phc(a){return Hgc(),JD(BD(a,57).g,145)};var KU=mdb(Jne,'LGraphToCGraphTransformer/lambda$12$Type',1677);bcb(1681,1,qie,qhc);_.td=function rhc(a){$gc(BD(a,57))};var LU=mdb(Jne,'LGraphToCGraphTransformer/lambda$13$Type',1681);bcb(1678,1,qie,shc);_.td=function thc(a){_gc(this.a,BD(a,8))};_.a=0;var MU=mdb(Jne,'LGraphToCGraphTransformer/lambda$14$Type',1678);bcb(1679,1,qie,uhc);_.td=function vhc(a){ahc(this.a,BD(a,110))};_.a=0;var NU=mdb(Jne,'LGraphToCGraphTransformer/lambda$15$Type',1679);bcb(1680,1,qie,whc);_.td=function xhc(a){bhc(this.a,BD(a,8))};_.a=0;var OU=mdb(Jne,'LGraphToCGraphTransformer/lambda$16$Type',1680);bcb(1682,1,{},yhc);_.Kb=function zhc(a){return Hgc(),new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var PU=mdb(Jne,'LGraphToCGraphTransformer/lambda$17$Type',1682);bcb(1683,1,Oie,Ahc);_.Mb=function Bhc(a){return Hgc(),OZb(BD(a,17))};var QU=mdb(Jne,'LGraphToCGraphTransformer/lambda$18$Type',1683);bcb(1684,1,qie,Chc);_.td=function Dhc(a){Qgc(this.a,BD(a,17))};var RU=mdb(Jne,'LGraphToCGraphTransformer/lambda$19$Type',1684);bcb(1668,1,qie,Ehc);_.td=function Fhc(a){Rgc(this.a,BD(a,145))};var SU=mdb(Jne,'LGraphToCGraphTransformer/lambda$2$Type',1668);bcb(1685,1,{},Ghc);_.Kb=function Hhc(a){return Hgc(),new YAb(null,new Kub(BD(a,29).a,16))};var TU=mdb(Jne,'LGraphToCGraphTransformer/lambda$20$Type',1685);bcb(1686,1,{},Ihc);_.Kb=function Jhc(a){return Hgc(),new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var UU=mdb(Jne,'LGraphToCGraphTransformer/lambda$21$Type',1686);bcb(1687,1,{},Khc);_.Kb=function Lhc(a){return Hgc(),BD(vNb(BD(a,17),(wtc(),rtc)),15)};var VU=mdb(Jne,'LGraphToCGraphTransformer/lambda$22$Type',1687);bcb(1688,1,Oie,Mhc);_.Mb=function Nhc(a){return chc(BD(a,15))};var WU=mdb(Jne,'LGraphToCGraphTransformer/lambda$23$Type',1688);bcb(1689,1,qie,Ohc);_.td=function Phc(a){Jgc(this.a,BD(a,15))};var XU=mdb(Jne,'LGraphToCGraphTransformer/lambda$24$Type',1689);bcb(1667,1,qie,Qhc);_.td=function Rhc(a){Sgc(this.a,this.b,BD(a,145))};var YU=mdb(Jne,'LGraphToCGraphTransformer/lambda$3$Type',1667);bcb(1669,1,{},Shc);_.Kb=function Thc(a){return Hgc(),new YAb(null,new Kub(BD(a,29).a,16))};var ZU=mdb(Jne,'LGraphToCGraphTransformer/lambda$4$Type',1669);bcb(1670,1,{},Uhc);_.Kb=function Vhc(a){return Hgc(),new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var $U=mdb(Jne,'LGraphToCGraphTransformer/lambda$5$Type',1670);bcb(1671,1,{},Whc);_.Kb=function Xhc(a){return Hgc(),BD(vNb(BD(a,17),(wtc(),rtc)),15)};var _U=mdb(Jne,'LGraphToCGraphTransformer/lambda$6$Type',1671);bcb(1673,1,qie,Yhc);_.td=function Zhc(a){dhc(this.a,BD(a,15))};var aV=mdb(Jne,'LGraphToCGraphTransformer/lambda$8$Type',1673);bcb(1674,1,qie,$hc);_.td=function _hc(a){Tgc(this.a,this.b,BD(a,145))};var bV=mdb(Jne,'LGraphToCGraphTransformer/lambda$9$Type',1674);bcb(1663,1,{},dic);_.Le=function eic(a){var b,c,d,e,f;this.a=a;this.d=new KFb;this.c=KC(jN,Uhe,121,this.a.a.a.c.length,0,1);this.b=0;for(c=new olb(this.a.a.a);c.a=p){Ekb(f,meb(k));s=$wnd.Math.max(s,t[k-1]-l);h+=o;q+=t[k-1]-q;l=t[k-1];o=i[k]}o=$wnd.Math.max(o,i[k]);++k}h+=o}n=$wnd.Math.min(1/s,1/b.b/h);if(n>d){d=n;c=f}}return c};_.Wf=function mpc(){return false};var CW=mdb(Rne,'MSDCutIndexHeuristic',802);bcb(1617,1,ene,ppc);_.pf=function qpc(a,b){opc(BD(a,37),b)};var DW=mdb(Rne,'SingleEdgeGraphWrapper',1617);bcb(227,22,{3:1,35:1,22:1,227:1},Bpc);var upc,vpc,wpc,xpc,ypc,zpc;var EW=ndb(Sne,'CenterEdgeLabelPlacementStrategy',227,CI,Dpc,Cpc);var Epc;bcb(422,22,{3:1,35:1,22:1,422:1},Jpc);var Gpc,Hpc;var FW=ndb(Sne,'ConstraintCalculationStrategy',422,CI,Lpc,Kpc);var Mpc;bcb(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},Tpc);_.Kf=function Vpc(){return Spc(this)};_.Xf=function Upc(){return Spc(this)};var Opc,Ppc,Qpc;var GW=ndb(Sne,'CrossingMinimizationStrategy',314,CI,Xpc,Wpc);var Ypc;bcb(337,22,{3:1,35:1,22:1,337:1},cqc);var $pc,_pc,aqc;var HW=ndb(Sne,'CuttingStrategy',337,CI,eqc,dqc);var fqc;bcb(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},oqc);_.Kf=function qqc(){return nqc(this)};_.Xf=function pqc(){return nqc(this)};var hqc,iqc,jqc,kqc,lqc;var IW=ndb(Sne,'CycleBreakingStrategy',335,CI,sqc,rqc);var tqc;bcb(419,22,{3:1,35:1,22:1,419:1},yqc);var vqc,wqc;var JW=ndb(Sne,'DirectionCongruency',419,CI,Aqc,zqc);var Bqc;bcb(450,22,{3:1,35:1,22:1,450:1},Hqc);var Dqc,Eqc,Fqc;var KW=ndb(Sne,'EdgeConstraint',450,CI,Jqc,Iqc);var Kqc;bcb(276,22,{3:1,35:1,22:1,276:1},Uqc);var Mqc,Nqc,Oqc,Pqc,Qqc,Rqc;var LW=ndb(Sne,'EdgeLabelSideSelection',276,CI,Wqc,Vqc);var Xqc;bcb(479,22,{3:1,35:1,22:1,479:1},arc);var Zqc,$qc;var MW=ndb(Sne,'EdgeStraighteningStrategy',479,CI,crc,brc);var drc;bcb(274,22,{3:1,35:1,22:1,274:1},mrc);var frc,grc,hrc,irc,jrc,krc;var NW=ndb(Sne,'FixedAlignment',274,CI,orc,nrc);var prc;bcb(275,22,{3:1,35:1,22:1,275:1},zrc);var rrc,trc,urc,vrc,wrc,xrc;var OW=ndb(Sne,'GraphCompactionStrategy',275,CI,Brc,Arc);var Crc;bcb(256,22,{3:1,35:1,22:1,256:1},Prc);var Erc,Frc,Grc,Hrc,Irc,Jrc,Krc,Lrc,Mrc,Nrc;var PW=ndb(Sne,'GraphProperties',256,CI,Rrc,Qrc);var Src;bcb(292,22,{3:1,35:1,22:1,292:1},Yrc);var Urc,Vrc,Wrc;var QW=ndb(Sne,'GreedySwitchType',292,CI,$rc,Zrc);var _rc;bcb(303,22,{3:1,35:1,22:1,303:1},fsc);var bsc,csc,dsc;var RW=ndb(Sne,'InLayerConstraint',303,CI,hsc,gsc);var isc;bcb(420,22,{3:1,35:1,22:1,420:1},nsc);var ksc,lsc;var SW=ndb(Sne,'InteractiveReferencePoint',420,CI,psc,osc);var qsc;var ssc,tsc,usc,vsc,wsc,xsc,ysc,zsc,Asc,Bsc,Csc,Dsc,Esc,Fsc,Gsc,Hsc,Isc,Jsc,Ksc,Lsc,Msc,Nsc,Osc,Psc,Qsc,Rsc,Ssc,Tsc,Usc,Vsc,Wsc,Xsc,Ysc,Zsc,$sc,_sc,atc,btc,ctc,dtc,etc,ftc,gtc,htc,itc,jtc,ktc,ltc,mtc,ntc,otc,ptc,qtc,rtc,stc,ttc,utc,vtc;bcb(163,22,{3:1,35:1,22:1,163:1},Dtc);var xtc,ytc,ztc,Atc,Btc;var TW=ndb(Sne,'LayerConstraint',163,CI,Ftc,Etc);var Gtc;bcb(848,1,ale,kwc);_.Qe=function lwc(a){t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Yne),''),'Direction Congruency'),'Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other.'),puc),(_5c(),V5c)),JW),pqb((N5c(),L5c)))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Zne),''),'Feedback Edges'),'Whether feedback edges should be highlighted by routing around the nodes.'),(Bcb(),false)),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,$ne),''),'Interactive Reference Point'),'Determines which point of a node is considered by interactive layout phases.'),Muc),V5c),SW),pqb(L5c))));o4c(a,$ne,goe,Ouc);o4c(a,$ne,qoe,Nuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,_ne),''),'Merge Edges'),'Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,aoe),''),'Merge Hierarchy-Crossing Edges'),'If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port.'),true),T5c),wI),pqb(L5c))));t4c(a,new p5c(C5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,boe),''),'Allow Non-Flow Ports To Switch Sides'),\"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed.\"),false),T5c),wI),pqb(M5c)),OC(GC(ZI,1),nie,2,6,['org.eclipse.elk.layered.northOrSouthPort']))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,coe),''),'Port Sorting Strategy'),\"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes.\"),xvc),V5c),cX),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,doe),''),'Thoroughness'),'How much effort should be spent to produce a nice layout.'),meb(7)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,eoe),''),'Add Unnecessary Bendpoints'),'Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,foe),''),'Generate Position and Layer IDs'),'If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,goe),'cycleBreaking'),'Cycle Breaking Strategy'),'Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right).'),nuc),V5c),IW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,hoe),ppe),'Node Layering Strategy'),'Strategy for node layering.'),bvc),V5c),YW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ioe),ppe),'Layer Constraint'),'Determines a constraint on the placement of the node regarding the layering.'),Tuc),V5c),TW),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,joe),ppe),'Layer Choice Constraint'),\"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine.\"),meb(-1)),X5c),JI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,koe),ppe),'Layer ID'),'Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set.'),meb(-1)),X5c),JI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,loe),qpe),'Upper Bound On Width [MinWidth Layerer]'),\"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected.\"),meb(4)),X5c),JI),pqb(L5c))));o4c(a,loe,hoe,Wuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,moe),qpe),'Upper Layer Estimation Scaling Factor [MinWidth Layerer]'),\"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected.\"),meb(2)),X5c),JI),pqb(L5c))));o4c(a,moe,hoe,Yuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,noe),rpe),'Node Promotion Strategy'),'Reduces number of dummy nodes after layering phase (if possible).'),_uc),V5c),aX),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ooe),rpe),'Max Node Promotion Iterations'),'Limits the number of iterations for node promotion.'),meb(0)),X5c),JI),pqb(L5c))));o4c(a,ooe,noe,null);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,poe),'layering.coffmanGraham'),'Layer Bound'),'The maximum number of nodes allowed per layer.'),meb(Ohe)),X5c),JI),pqb(L5c))));o4c(a,poe,hoe,Quc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,qoe),spe),'Crossing Minimization Strategy'),'Strategy for crossing minimization.'),luc),V5c),GW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,roe),spe),'Force Node Model Order'),'The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,soe),spe),'Hierarchical Sweepiness'),'How likely it is to use cross-hierarchy (1) vs bottom-up (-1).'),0.1),U5c),BI),pqb(L5c))));o4c(a,soe,tpe,fuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,toe),spe),'Semi-Interactive Crossing Minimization'),\"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints.\"),false),T5c),wI),pqb(L5c))));o4c(a,toe,qoe,juc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,uoe),spe),'Position Choice Constraint'),\"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine.\"),meb(-1)),X5c),JI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,voe),spe),'Position ID'),'Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set.'),meb(-1)),X5c),JI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,woe),upe),'Greedy Switch Activation Threshold'),\"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation.\"),meb(40)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,xoe),upe),'Greedy Switch Crossing Minimization'),\"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used.\"),cuc),V5c),QW),pqb(L5c))));o4c(a,xoe,qoe,duc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,yoe),'crossingMinimization.greedySwitchHierarchical'),'Greedy Switch Crossing Minimization (hierarchical)'),\"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges.\"),$tc),V5c),QW),pqb(L5c))));o4c(a,yoe,qoe,_tc);o4c(a,yoe,tpe,auc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,zoe),vpe),'Node Placement Strategy'),'Strategy for node placement.'),vvc),V5c),_W),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Aoe),vpe),'Favor Straight Edges Over Balancing'),\"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false.\"),T5c),wI),pqb(L5c))));o4c(a,Aoe,zoe,lvc);o4c(a,Aoe,zoe,mvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Boe),wpe),'BK Edge Straightening'),\"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments.\"),fvc),V5c),MW),pqb(L5c))));o4c(a,Boe,zoe,gvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Coe),wpe),'BK Fixed Alignment'),'Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four.'),ivc),V5c),NW),pqb(L5c))));o4c(a,Coe,zoe,jvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Doe),'nodePlacement.linearSegments'),'Linear Segments Deflection Dampening'),'Dampens the movement of nodes to keep the diagram from getting too large.'),0.3),U5c),BI),pqb(L5c))));o4c(a,Doe,zoe,ovc);t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Eoe),'nodePlacement.networkSimplex'),'Node Flexibility'),\"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent.\"),V5c),$W),pqb(K5c))));o4c(a,Eoe,zoe,tvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Foe),'nodePlacement.networkSimplex.nodeFlexibility'),'Node Flexibility Default'),\"Default value of the 'nodeFlexibility' option for the children of a hierarchical node.\"),rvc),V5c),$W),pqb(L5c))));o4c(a,Foe,zoe,svc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Goe),xpe),'Self-Loop Distribution'),'Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE.'),xuc),V5c),eX),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Hoe),xpe),'Self-Loop Ordering'),'Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE.'),zuc),V5c),fX),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ioe),'edgeRouting.splines'),'Spline Routing Mode'),'Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes.'),Buc),V5c),hX),pqb(L5c))));o4c(a,Ioe,ype,Cuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Joe),'edgeRouting.splines.sloppy'),'Sloppy Spline Layer Spacing Factor'),'Spacing factor for routing area between layers when using sloppy spline routing.'),0.2),U5c),BI),pqb(L5c))));o4c(a,Joe,ype,Euc);o4c(a,Joe,Ioe,Fuc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Koe),'edgeRouting.polyline'),'Sloped Edge Zone Width'),'Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer.'),2),U5c),BI),pqb(L5c))));o4c(a,Koe,ype,vuc);t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Loe),zpe),'Spacing Base Value'),\"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node.\"),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Moe),zpe),'Edge Node Between Layers Spacing'),\"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used.\"),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Noe),zpe),'Edge Edge Between Layer Spacing'),\"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer.\"),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ooe),zpe),'Node Node Between Layers Spacing'),\"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself.\"),20),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Poe),Ape),'Direction Priority'),'Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase.'),meb(0)),X5c),JI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Qoe),Ape),'Shortness Priority'),'Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase.'),meb(0)),X5c),JI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Roe),Ape),'Straightness Priority'),'Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement.'),meb(0)),X5c),JI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Soe),Bpe),Ole),'Tries to further compact components (disconnected sub-graphs).'),false),T5c),wI),pqb(L5c))));o4c(a,Soe,zme,true);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Toe),Cpe),'Post Compaction Strategy'),Dpe),Ntc),V5c),OW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Uoe),Cpe),'Post Compaction Constraint Calculation'),Dpe),Ltc),V5c),FW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Voe),Epe),'High Degree Node Treatment'),'Makes room around high degree nodes to place leafs and trees.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Woe),Epe),'High Degree Node Threshold'),'Whether a node is considered to have a high degree.'),meb(16)),X5c),JI),pqb(L5c))));o4c(a,Woe,Voe,true);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Xoe),Epe),'High Degree Node Maximum Tree Height'),'Maximum height of a subtree connected to a high degree node to be moved to separate layers.'),meb(5)),X5c),JI),pqb(L5c))));o4c(a,Xoe,Voe,true);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Yoe),Fpe),'Graph Wrapping Strategy'),\"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'.\"),bwc),V5c),jX),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Zoe),Fpe),'Additional Wrapped Edges Spacing'),'To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing.'),10),U5c),BI),pqb(L5c))));o4c(a,Zoe,Yoe,Ivc);o4c(a,Zoe,Yoe,Jvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,$oe),Fpe),'Correction Factor for Wrapping'),\"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option.\"),1),U5c),BI),pqb(L5c))));o4c(a,$oe,Yoe,Lvc);o4c(a,$oe,Yoe,Mvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,_oe),Gpe),'Cutting Strategy'),'The strategy by which the layer indexes are determined at which the layering crumbles into chunks.'),Tvc),V5c),HW),pqb(L5c))));o4c(a,_oe,Yoe,Uvc);o4c(a,_oe,Yoe,Vvc);t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,ape),Gpe),'Manually Specified Cuts'),'Allows the user to specify her own cuts for a certain graph.'),Y5c),yK),pqb(L5c))));o4c(a,ape,_oe,Ovc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,bpe),'wrapping.cutting.msd'),'MSD Freedom'),'The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts.'),Qvc),X5c),JI),pqb(L5c))));o4c(a,bpe,_oe,Rvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,cpe),Hpe),'Validification Strategy'),'When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed.'),gwc),V5c),iX),pqb(L5c))));o4c(a,cpe,Yoe,hwc);o4c(a,cpe,Yoe,iwc);t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,dpe),Hpe),'Valid Indices for Wrapping'),null),Y5c),yK),pqb(L5c))));o4c(a,dpe,Yoe,dwc);o4c(a,dpe,Yoe,ewc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,epe),Ipe),'Improve Cuts'),'For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought.'),true),T5c),wI),pqb(L5c))));o4c(a,epe,Yoe,Zvc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,fpe),Ipe),'Distance Penalty When Improving Cuts'),null),2),U5c),BI),pqb(L5c))));o4c(a,fpe,Yoe,Xvc);o4c(a,fpe,epe,true);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,gpe),Ipe),'Improve Wrapped Edges'),'The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges.'),true),T5c),wI),pqb(L5c))));o4c(a,gpe,Yoe,_vc);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,hpe),Jpe),'Edge Label Side Selection'),'Method to decide on edge label sides.'),tuc),V5c),LW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ipe),Jpe),'Edge Center Label Placement Strategy'),'Determines in which layer center labels of long edges should be placed.'),ruc),V5c),EW),qqb(L5c,OC(GC(e1,1),Kie,175,0,[J5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,jpe),Kpe),'Consider Model Order'),'Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting.'),Wtc),V5c),bX),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,kpe),Kpe),'No Model Order'),'Set on a node to not set a model order for this node even though it is a real node.'),false),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,lpe),Kpe),'Consider Model Order for Components'),'If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected.'),Ptc),V5c),hQ),pqb(L5c))));o4c(a,lpe,zme,null);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,mpe),Kpe),'Long Edge Ordering Strategy'),'Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout.'),Ttc),V5c),ZW),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,npe),Kpe),'Crossing Counter Node Order Influence'),'Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0).'),0),U5c),BI),pqb(L5c))));o4c(a,npe,jpe,null);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ope),Kpe),'Crossing Counter Port Order Influence'),'Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0).'),0),U5c),BI),pqb(L5c))));o4c(a,ope,jpe,null);Oyc((new Pyc,a))};var Itc,Jtc,Ktc,Ltc,Mtc,Ntc,Otc,Ptc,Qtc,Rtc,Stc,Ttc,Utc,Vtc,Wtc,Xtc,Ytc,Ztc,$tc,_tc,auc,buc,cuc,duc,euc,fuc,guc,huc,iuc,juc,kuc,luc,muc,nuc,ouc,puc,quc,ruc,suc,tuc,uuc,vuc,wuc,xuc,yuc,zuc,Auc,Buc,Cuc,Duc,Euc,Fuc,Guc,Huc,Iuc,Juc,Kuc,Luc,Muc,Nuc,Ouc,Puc,Quc,Ruc,Suc,Tuc,Uuc,Vuc,Wuc,Xuc,Yuc,Zuc,$uc,_uc,avc,bvc,cvc,dvc,evc,fvc,gvc,hvc,ivc,jvc,kvc,lvc,mvc,nvc,ovc,pvc,qvc,rvc,svc,tvc,uvc,vvc,wvc,xvc,yvc,zvc,Avc,Bvc,Cvc,Dvc,Evc,Fvc,Gvc,Hvc,Ivc,Jvc,Kvc,Lvc,Mvc,Nvc,Ovc,Pvc,Qvc,Rvc,Svc,Tvc,Uvc,Vvc,Wvc,Xvc,Yvc,Zvc,$vc,_vc,awc,bwc,cwc,dwc,ewc,fwc,gwc,hwc,iwc;var UW=mdb(Sne,'LayeredMetaDataProvider',848);bcb(986,1,ale,Pyc);_.Qe=function Qyc(a){Oyc(a)};var mwc,nwc,owc,pwc,qwc,rwc,swc,twc,uwc,vwc,wwc,xwc,ywc,zwc,Awc,Bwc,Cwc,Dwc,Ewc,Fwc,Gwc,Hwc,Iwc,Jwc,Kwc,Lwc,Mwc,Nwc,Owc,Pwc,Qwc,Rwc,Swc,Twc,Uwc,Vwc,Wwc,Xwc,Ywc,Zwc,$wc,_wc,axc,bxc,cxc,dxc,exc,fxc,gxc,hxc,ixc,jxc,kxc,lxc,mxc,nxc,oxc,pxc,qxc,rxc,sxc,txc,uxc,vxc,wxc,xxc,yxc,zxc,Axc,Bxc,Cxc,Dxc,Exc,Fxc,Gxc,Hxc,Ixc,Jxc,Kxc,Lxc,Mxc,Nxc,Oxc,Pxc,Qxc,Rxc,Sxc,Txc,Uxc,Vxc,Wxc,Xxc,Yxc,Zxc,$xc,_xc,ayc,byc,cyc,dyc,eyc,fyc,gyc,hyc,iyc,jyc,kyc,lyc,myc,nyc,oyc,pyc,qyc,ryc,syc,tyc,uyc,vyc,wyc,xyc,yyc,zyc,Ayc,Byc,Cyc,Dyc,Eyc,Fyc,Gyc,Hyc,Iyc,Jyc,Kyc,Lyc,Myc;var WW=mdb(Sne,'LayeredOptions',986);bcb(987,1,{},Ryc);_.$e=function Syc(){var a;return a=new jUb,a};_._e=function Tyc(a){};var VW=mdb(Sne,'LayeredOptions/LayeredFactory',987);bcb(1372,1,{});_.a=0;var Uyc;var $1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder',1372);bcb(779,1372,{},ezc);var bzc,czc;var XW=mdb(Sne,'LayeredSpacings/LayeredSpacingsBuilder',779);bcb(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},nzc);_.Kf=function pzc(){return mzc(this)};_.Xf=function ozc(){return mzc(this)};var fzc,gzc,hzc,izc,jzc,kzc;var YW=ndb(Sne,'LayeringStrategy',313,CI,rzc,qzc);var szc;bcb(378,22,{3:1,35:1,22:1,378:1},zzc);var uzc,vzc,wzc;var ZW=ndb(Sne,'LongEdgeOrderingStrategy',378,CI,Bzc,Azc);var Czc;bcb(197,22,{3:1,35:1,22:1,197:1},Kzc);var Ezc,Fzc,Gzc,Hzc;var $W=ndb(Sne,'NodeFlexibility',197,CI,Nzc,Mzc);var Ozc;bcb(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},Xzc);_.Kf=function Zzc(){return Wzc(this)};_.Xf=function Yzc(){return Wzc(this)};var Qzc,Rzc,Szc,Tzc,Uzc;var _W=ndb(Sne,'NodePlacementStrategy',315,CI,_zc,$zc);var aAc;bcb(260,22,{3:1,35:1,22:1,260:1},lAc);var cAc,dAc,eAc,fAc,gAc,hAc,iAc,jAc;var aX=ndb(Sne,'NodePromotionStrategy',260,CI,nAc,mAc);var oAc;bcb(339,22,{3:1,35:1,22:1,339:1},uAc);var qAc,rAc,sAc;var bX=ndb(Sne,'OrderingStrategy',339,CI,wAc,vAc);var xAc;bcb(421,22,{3:1,35:1,22:1,421:1},CAc);var zAc,AAc;var cX=ndb(Sne,'PortSortingStrategy',421,CI,EAc,DAc);var FAc;bcb(452,22,{3:1,35:1,22:1,452:1},LAc);var HAc,IAc,JAc;var dX=ndb(Sne,'PortType',452,CI,NAc,MAc);var OAc;bcb(375,22,{3:1,35:1,22:1,375:1},UAc);var QAc,RAc,SAc;var eX=ndb(Sne,'SelfLoopDistributionStrategy',375,CI,WAc,VAc);var XAc;bcb(376,22,{3:1,35:1,22:1,376:1},aBc);var ZAc,$Ac;var fX=ndb(Sne,'SelfLoopOrderingStrategy',376,CI,cBc,bBc);var dBc;bcb(304,1,{304:1},oBc);var gX=mdb(Sne,'Spacings',304);bcb(336,22,{3:1,35:1,22:1,336:1},uBc);var qBc,rBc,sBc;var hX=ndb(Sne,'SplineRoutingMode',336,CI,wBc,vBc);var xBc;bcb(338,22,{3:1,35:1,22:1,338:1},DBc);var zBc,ABc,BBc;var iX=ndb(Sne,'ValidifyStrategy',338,CI,FBc,EBc);var GBc;bcb(377,22,{3:1,35:1,22:1,377:1},MBc);var IBc,JBc,KBc;var jX=ndb(Sne,'WrappingStrategy',377,CI,OBc,NBc);var PBc;bcb(1383,1,Bqe,VBc);_.Yf=function WBc(a){return BD(a,37),RBc};_.pf=function XBc(a,b){UBc(this,BD(a,37),b)};var RBc;var kX=mdb(Cqe,'DepthFirstCycleBreaker',1383);bcb(782,1,Bqe,aCc);_.Yf=function cCc(a){return BD(a,37),YBc};_.pf=function dCc(a,b){$Bc(this,BD(a,37),b)};_.Zf=function bCc(a){return BD(Ikb(a,Bub(this.d,a.c.length)),10)};var YBc;var lX=mdb(Cqe,'GreedyCycleBreaker',782);bcb(1386,782,Bqe,eCc);_.Zf=function fCc(a){var b,c,d,e;e=null;b=Ohe;for(d=new olb(a);d.a1){Ccb(DD(vNb(Q_b((tCb(0,a.c.length),BD(a.c[0],10))),(Nyc(),Awc))))?YGc(a,this.d,BD(this,660)):(mmb(),Okb(a,this.d));PEc(this.e,a)}};_.Sf=function DEc(a,b,c,d){var e,f,g,h,i,j,k;if(b!=sEc(c,a.length)){f=a[b-(c?1:-1)];UDc(this.f,f,c?(KAc(),IAc):(KAc(),HAc))}e=a[b][0];k=!d||e.k==(j0b(),e0b);j=Ou(a[b]);this.ag(j,k,false,c);g=0;for(i=new olb(j);i.a');a0?(RHc(this.a,a[b-1],a[b]),undefined):!c&&b1){Ccb(DD(vNb(Q_b((tCb(0,a.c.length),BD(a.c[0],10))),(Nyc(),Awc))))?YGc(a,this.d,this):(mmb(),Okb(a,this.d));Ccb(DD(vNb(Q_b((tCb(0,a.c.length),BD(a.c[0],10))),Awc)))||PEc(this.e,a)}};var YX=mdb(Gqe,'ModelOrderBarycenterHeuristic',660);bcb(1803,1,Dke,$Gc);_.ue=function _Gc(a,b){return VGc(this.a,BD(a,10),BD(b,10))};_.Fb=function aHc(a){return this===a};_.ve=function bHc(){return new tpb(this)};var XX=mdb(Gqe,'ModelOrderBarycenterHeuristic/lambda$0$Type',1803);bcb(1403,1,Bqe,fHc);_.Yf=function gHc(a){var b;return BD(a,37),b=k3c(cHc),e3c(b,(qUb(),nUb),(S8b(),H8b)),b};_.pf=function hHc(a,b){eHc((BD(a,37),b))};var cHc;var ZX=mdb(Gqe,'NoCrossingMinimizer',1403);bcb(796,402,Eqe,iHc);_.$f=function jHc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;l=this.g;switch(c.g){case 1:{e=0;f=0;for(k=new olb(a.j);k.a1&&(e.j==(Ucd(),zcd)?(this.b[a]=true):e.j==Tcd&&a>0&&(this.b[a-1]=true))};_.f=0;var aY=mdb(Lne,'AllCrossingsCounter',1798);bcb(587,1,{},BHc);_.b=0;_.d=0;var bY=mdb(Lne,'BinaryIndexedTree',587);bcb(524,1,{},dIc);var DHc,EHc;var lY=mdb(Lne,'CrossingsCounter',524);bcb(1906,1,Dke,hIc);_.ue=function iIc(a,b){return YHc(this.a,BD(a,11),BD(b,11))};_.Fb=function jIc(a){return this===a};_.ve=function kIc(){return new tpb(this)};var cY=mdb(Lne,'CrossingsCounter/lambda$0$Type',1906);bcb(1907,1,Dke,lIc);_.ue=function mIc(a,b){return ZHc(this.a,BD(a,11),BD(b,11))};_.Fb=function nIc(a){return this===a};_.ve=function oIc(){return new tpb(this)};var dY=mdb(Lne,'CrossingsCounter/lambda$1$Type',1907);bcb(1908,1,Dke,pIc);_.ue=function qIc(a,b){return $Hc(this.a,BD(a,11),BD(b,11))};_.Fb=function rIc(a){return this===a};_.ve=function sIc(){return new tpb(this)};var eY=mdb(Lne,'CrossingsCounter/lambda$2$Type',1908);bcb(1909,1,Dke,tIc);_.ue=function uIc(a,b){return _Hc(this.a,BD(a,11),BD(b,11))};_.Fb=function vIc(a){return this===a};_.ve=function wIc(){return new tpb(this)};var fY=mdb(Lne,'CrossingsCounter/lambda$3$Type',1909);bcb(1910,1,qie,xIc);_.td=function yIc(a){eIc(this.a,BD(a,11))};var gY=mdb(Lne,'CrossingsCounter/lambda$4$Type',1910);bcb(1911,1,Oie,zIc);_.Mb=function AIc(a){return fIc(this.a,BD(a,11))};var hY=mdb(Lne,'CrossingsCounter/lambda$5$Type',1911);bcb(1912,1,qie,CIc);_.td=function DIc(a){BIc(this,a)};var iY=mdb(Lne,'CrossingsCounter/lambda$6$Type',1912);bcb(1913,1,qie,EIc);_.td=function FIc(a){var b;FHc();Wjb(this.b,(b=this.a,BD(a,11),b))};var jY=mdb(Lne,'CrossingsCounter/lambda$7$Type',1913);bcb(826,1,Vke,GIc);_.Lb=function HIc(a){return FHc(),wNb(BD(a,11),(wtc(),gtc))};_.Fb=function IIc(a){return this===a};_.Mb=function JIc(a){return FHc(),wNb(BD(a,11),(wtc(),gtc))};var kY=mdb(Lne,'CrossingsCounter/lambda$8$Type',826);bcb(1905,1,{},LIc);var pY=mdb(Lne,'HyperedgeCrossingsCounter',1905);bcb(467,1,{35:1,467:1},NIc);_.wd=function OIc(a){return MIc(this,BD(a,467))};_.b=0;_.c=0;_.e=0;_.f=0;var oY=mdb(Lne,'HyperedgeCrossingsCounter/Hyperedge',467);bcb(362,1,{35:1,362:1},QIc);_.wd=function RIc(a){return PIc(this,BD(a,362))};_.b=0;_.c=0;var nY=mdb(Lne,'HyperedgeCrossingsCounter/HyperedgeCorner',362);bcb(523,22,{3:1,35:1,22:1,523:1},VIc);var SIc,TIc;var mY=ndb(Lne,'HyperedgeCrossingsCounter/HyperedgeCorner/Type',523,CI,XIc,WIc);var YIc;bcb(1405,1,Bqe,dJc);_.Yf=function eJc(a){return BD(vNb(BD(a,37),(wtc(),Ksc)),21).Hc((Orc(),Hrc))?_Ic:null};_.pf=function fJc(a,b){cJc(this,BD(a,37),b)};var _Ic;var rY=mdb(Hqe,'InteractiveNodePlacer',1405);bcb(1406,1,Bqe,tJc);_.Yf=function uJc(a){return BD(vNb(BD(a,37),(wtc(),Ksc)),21).Hc((Orc(),Hrc))?gJc:null};_.pf=function vJc(a,b){rJc(this,BD(a,37),b)};var gJc,hJc,iJc;var tY=mdb(Hqe,'LinearSegmentsNodePlacer',1406);bcb(257,1,{35:1,257:1},zJc);_.wd=function AJc(a){return wJc(this,BD(a,257))};_.Fb=function BJc(a){var b;if(JD(a,257)){b=BD(a,257);return this.b==b.b}return false};_.Hb=function CJc(){return this.b};_.Ib=function DJc(){return 'ls'+Fe(this.e)};_.a=0;_.b=0;_.c=-1;_.d=-1;_.g=0;var sY=mdb(Hqe,'LinearSegmentsNodePlacer/LinearSegment',257);bcb(1408,1,Bqe,$Jc);_.Yf=function _Jc(a){return BD(vNb(BD(a,37),(wtc(),Ksc)),21).Hc((Orc(),Hrc))?EJc:null};_.pf=function hKc(a,b){WJc(this,BD(a,37),b)};_.b=0;_.g=0;var EJc;var dZ=mdb(Hqe,'NetworkSimplexPlacer',1408);bcb(1427,1,Dke,iKc);_.ue=function jKc(a,b){return beb(BD(a,19).a,BD(b,19).a)};_.Fb=function kKc(a){return this===a};_.ve=function lKc(){return new tpb(this)};var uY=mdb(Hqe,'NetworkSimplexPlacer/0methodref$compare$Type',1427);bcb(1429,1,Dke,mKc);_.ue=function nKc(a,b){return beb(BD(a,19).a,BD(b,19).a)};_.Fb=function oKc(a){return this===a};_.ve=function pKc(){return new tpb(this)};var vY=mdb(Hqe,'NetworkSimplexPlacer/1methodref$compare$Type',1429);bcb(649,1,{649:1},qKc);var wY=mdb(Hqe,'NetworkSimplexPlacer/EdgeRep',649);bcb(401,1,{401:1},rKc);_.b=false;var xY=mdb(Hqe,'NetworkSimplexPlacer/NodeRep',401);bcb(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},vKc);var CY=mdb(Hqe,'NetworkSimplexPlacer/Path',508);bcb(1409,1,{},wKc);_.Kb=function xKc(a){return BD(a,17).d.i.k};var yY=mdb(Hqe,'NetworkSimplexPlacer/Path/lambda$0$Type',1409);bcb(1410,1,Oie,yKc);_.Mb=function zKc(a){return BD(a,267)==(j0b(),g0b)};var zY=mdb(Hqe,'NetworkSimplexPlacer/Path/lambda$1$Type',1410);bcb(1411,1,{},AKc);_.Kb=function BKc(a){return BD(a,17).d.i};var AY=mdb(Hqe,'NetworkSimplexPlacer/Path/lambda$2$Type',1411);bcb(1412,1,Oie,CKc);_.Mb=function DKc(a){return eLc(Lzc(BD(a,10)))};var BY=mdb(Hqe,'NetworkSimplexPlacer/Path/lambda$3$Type',1412);bcb(1413,1,Oie,EKc);_.Mb=function FKc(a){return dKc(BD(a,11))};var DY=mdb(Hqe,'NetworkSimplexPlacer/lambda$0$Type',1413);bcb(1414,1,qie,GKc);_.td=function HKc(a){LJc(this.a,this.b,BD(a,11))};var EY=mdb(Hqe,'NetworkSimplexPlacer/lambda$1$Type',1414);bcb(1423,1,qie,IKc);_.td=function JKc(a){MJc(this.a,BD(a,17))};var FY=mdb(Hqe,'NetworkSimplexPlacer/lambda$10$Type',1423);bcb(1424,1,{},KKc);_.Kb=function LKc(a){return FJc(),new YAb(null,new Kub(BD(a,29).a,16))};var GY=mdb(Hqe,'NetworkSimplexPlacer/lambda$11$Type',1424);bcb(1425,1,qie,MKc);_.td=function NKc(a){NJc(this.a,BD(a,10))};var HY=mdb(Hqe,'NetworkSimplexPlacer/lambda$12$Type',1425);bcb(1426,1,{},OKc);_.Kb=function PKc(a){return FJc(),meb(BD(a,121).e)};var IY=mdb(Hqe,'NetworkSimplexPlacer/lambda$13$Type',1426);bcb(1428,1,{},QKc);_.Kb=function RKc(a){return FJc(),meb(BD(a,121).e)};var JY=mdb(Hqe,'NetworkSimplexPlacer/lambda$15$Type',1428);bcb(1430,1,Oie,SKc);_.Mb=function TKc(a){return FJc(),BD(a,401).c.k==(j0b(),h0b)};var KY=mdb(Hqe,'NetworkSimplexPlacer/lambda$17$Type',1430);bcb(1431,1,Oie,UKc);_.Mb=function VKc(a){return FJc(),BD(a,401).c.j.c.length>1};var LY=mdb(Hqe,'NetworkSimplexPlacer/lambda$18$Type',1431);bcb(1432,1,qie,WKc);_.td=function XKc(a){eKc(this.c,this.b,this.d,this.a,BD(a,401))};_.c=0;_.d=0;var MY=mdb(Hqe,'NetworkSimplexPlacer/lambda$19$Type',1432);bcb(1415,1,{},YKc);_.Kb=function ZKc(a){return FJc(),new YAb(null,new Kub(BD(a,29).a,16))};var NY=mdb(Hqe,'NetworkSimplexPlacer/lambda$2$Type',1415);bcb(1433,1,qie,$Kc);_.td=function _Kc(a){fKc(this.a,BD(a,11))};_.a=0;var OY=mdb(Hqe,'NetworkSimplexPlacer/lambda$20$Type',1433);bcb(1434,1,{},aLc);_.Kb=function bLc(a){return FJc(),new YAb(null,new Kub(BD(a,29).a,16))};var PY=mdb(Hqe,'NetworkSimplexPlacer/lambda$21$Type',1434);bcb(1435,1,qie,cLc);_.td=function dLc(a){OJc(this.a,BD(a,10))};var QY=mdb(Hqe,'NetworkSimplexPlacer/lambda$22$Type',1435);bcb(1436,1,Oie,fLc);_.Mb=function gLc(a){return eLc(a)};var RY=mdb(Hqe,'NetworkSimplexPlacer/lambda$23$Type',1436);bcb(1437,1,{},hLc);_.Kb=function iLc(a){return FJc(),new YAb(null,new Kub(BD(a,29).a,16))};var SY=mdb(Hqe,'NetworkSimplexPlacer/lambda$24$Type',1437);bcb(1438,1,Oie,jLc);_.Mb=function kLc(a){return PJc(this.a,BD(a,10))};var TY=mdb(Hqe,'NetworkSimplexPlacer/lambda$25$Type',1438);bcb(1439,1,qie,lLc);_.td=function mLc(a){QJc(this.a,this.b,BD(a,10))};var UY=mdb(Hqe,'NetworkSimplexPlacer/lambda$26$Type',1439);bcb(1440,1,Oie,nLc);_.Mb=function oLc(a){return FJc(),!OZb(BD(a,17))};var VY=mdb(Hqe,'NetworkSimplexPlacer/lambda$27$Type',1440);bcb(1441,1,Oie,pLc);_.Mb=function qLc(a){return FJc(),!OZb(BD(a,17))};var WY=mdb(Hqe,'NetworkSimplexPlacer/lambda$28$Type',1441);bcb(1442,1,{},rLc);_.Ce=function sLc(a,b){return RJc(this.a,BD(a,29),BD(b,29))};var XY=mdb(Hqe,'NetworkSimplexPlacer/lambda$29$Type',1442);bcb(1416,1,{},tLc);_.Kb=function uLc(a){return FJc(),new YAb(null,new Lub(new Sr(ur(U_b(BD(a,10)).a.Kc(),new Sq))))};var YY=mdb(Hqe,'NetworkSimplexPlacer/lambda$3$Type',1416);bcb(1417,1,Oie,vLc);_.Mb=function wLc(a){return FJc(),cKc(BD(a,17))};var ZY=mdb(Hqe,'NetworkSimplexPlacer/lambda$4$Type',1417);bcb(1418,1,qie,xLc);_.td=function yLc(a){XJc(this.a,BD(a,17))};var $Y=mdb(Hqe,'NetworkSimplexPlacer/lambda$5$Type',1418);bcb(1419,1,{},zLc);_.Kb=function ALc(a){return FJc(),new YAb(null,new Kub(BD(a,29).a,16))};var _Y=mdb(Hqe,'NetworkSimplexPlacer/lambda$6$Type',1419);bcb(1420,1,Oie,BLc);_.Mb=function CLc(a){return FJc(),BD(a,10).k==(j0b(),h0b)};var aZ=mdb(Hqe,'NetworkSimplexPlacer/lambda$7$Type',1420);bcb(1421,1,{},DLc);_.Kb=function ELc(a){return FJc(),new YAb(null,new Lub(new Sr(ur(O_b(BD(a,10)).a.Kc(),new Sq))))};var bZ=mdb(Hqe,'NetworkSimplexPlacer/lambda$8$Type',1421);bcb(1422,1,Oie,FLc);_.Mb=function GLc(a){return FJc(),NZb(BD(a,17))};var cZ=mdb(Hqe,'NetworkSimplexPlacer/lambda$9$Type',1422);bcb(1404,1,Bqe,KLc);_.Yf=function LLc(a){return BD(vNb(BD(a,37),(wtc(),Ksc)),21).Hc((Orc(),Hrc))?HLc:null};_.pf=function MLc(a,b){JLc(BD(a,37),b)};var HLc;var eZ=mdb(Hqe,'SimpleNodePlacer',1404);bcb(180,1,{180:1},ULc);_.Ib=function VLc(){var a;a='';this.c==(YLc(),XLc)?(a+=kle):this.c==WLc&&(a+=jle);this.o==(eMc(),cMc)?(a+=vle):this.o==dMc?(a+='UP'):(a+='BALANCED');return a};var hZ=mdb(Kqe,'BKAlignedLayout',180);bcb(516,22,{3:1,35:1,22:1,516:1},ZLc);var WLc,XLc;var fZ=ndb(Kqe,'BKAlignedLayout/HDirection',516,CI,_Lc,$Lc);var aMc;bcb(515,22,{3:1,35:1,22:1,515:1},fMc);var cMc,dMc;var gZ=ndb(Kqe,'BKAlignedLayout/VDirection',515,CI,hMc,gMc);var iMc;bcb(1634,1,{},mMc);var iZ=mdb(Kqe,'BKAligner',1634);bcb(1637,1,{},rMc);var lZ=mdb(Kqe,'BKCompactor',1637);bcb(654,1,{654:1},sMc);_.a=0;var jZ=mdb(Kqe,'BKCompactor/ClassEdge',654);bcb(458,1,{458:1},uMc);_.a=null;_.b=0;var kZ=mdb(Kqe,'BKCompactor/ClassNode',458);bcb(1407,1,Bqe,CMc);_.Yf=function GMc(a){return BD(vNb(BD(a,37),(wtc(),Ksc)),21).Hc((Orc(),Hrc))?vMc:null};_.pf=function HMc(a,b){BMc(this,BD(a,37),b)};_.d=false;var vMc;var mZ=mdb(Kqe,'BKNodePlacer',1407);bcb(1635,1,{},JMc);_.d=0;var oZ=mdb(Kqe,'NeighborhoodInformation',1635);bcb(1636,1,Dke,OMc);_.ue=function PMc(a,b){return NMc(this,BD(a,46),BD(b,46))};_.Fb=function QMc(a){return this===a};_.ve=function RMc(){return new tpb(this)};var nZ=mdb(Kqe,'NeighborhoodInformation/NeighborComparator',1636);bcb(808,1,{});var sZ=mdb(Kqe,'ThresholdStrategy',808);bcb(1763,808,{},WMc);_.bg=function XMc(a,b,c){return this.a.o==(eMc(),dMc)?Pje:Qje};_.cg=function YMc(){};var pZ=mdb(Kqe,'ThresholdStrategy/NullThresholdStrategy',1763);bcb(579,1,{579:1},ZMc);_.c=false;_.d=false;var qZ=mdb(Kqe,'ThresholdStrategy/Postprocessable',579);bcb(1764,808,{},bNc);_.bg=function cNc(a,b,c){var d,e,f;e=b==c;d=this.a.a[c.p]==b;if(!(e||d)){return a}f=a;if(this.a.c==(YLc(),XLc)){e&&(f=$Mc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=$Mc(this,c,false))}else{e&&(f=$Mc(this,b,true));!isNaN(f)&&!isFinite(f)&&d&&(f=$Mc(this,c,false))}return f};_.cg=function dNc(){var a,b,c,d,e;while(this.d.b!=0){e=BD(Ksb(this.d),579);d=_Mc(this,e);if(!d.a){continue}a=d.a;c=Ccb(this.a.f[this.a.g[e.b.p].p]);if(!c&&!OZb(a)&&a.c.i.c==a.d.i.c){continue}b=aNc(this,e);b||swb(this.e,e)}while(this.e.a.c.length!=0){aNc(this,BD(rwb(this.e),579))}};var rZ=mdb(Kqe,'ThresholdStrategy/SimpleThresholdStrategy',1764);bcb(635,1,{635:1,246:1,234:1},hNc);_.Kf=function jNc(){return gNc(this)};_.Xf=function iNc(){return gNc(this)};var eNc;var tZ=mdb(Lqe,'EdgeRouterFactory',635);bcb(1458,1,Bqe,wNc);_.Yf=function xNc(a){return uNc(BD(a,37))};_.pf=function yNc(a,b){vNc(BD(a,37),b)};var lNc,mNc,nNc,oNc,pNc,qNc,rNc,sNc;var uZ=mdb(Lqe,'OrthogonalEdgeRouter',1458);bcb(1451,1,Bqe,NNc);_.Yf=function ONc(a){return INc(BD(a,37))};_.pf=function PNc(a,b){KNc(this,BD(a,37),b)};var zNc,ANc,BNc,CNc,DNc,ENc;var wZ=mdb(Lqe,'PolylineEdgeRouter',1451);bcb(1452,1,Vke,RNc);_.Lb=function SNc(a){return QNc(BD(a,10))};_.Fb=function TNc(a){return this===a};_.Mb=function UNc(a){return QNc(BD(a,10))};var vZ=mdb(Lqe,'PolylineEdgeRouter/1',1452);bcb(1809,1,Oie,ZNc);_.Mb=function $Nc(a){return BD(a,129).c==(HOc(),FOc)};var xZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$0$Type',1809);bcb(1810,1,{},_Nc);_.Ge=function aOc(a){return BD(a,129).d};var yZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$1$Type',1810);bcb(1811,1,Oie,bOc);_.Mb=function cOc(a){return BD(a,129).c==(HOc(),FOc)};var zZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$2$Type',1811);bcb(1812,1,{},dOc);_.Ge=function eOc(a){return BD(a,129).d};var AZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$3$Type',1812);bcb(1813,1,{},fOc);_.Ge=function gOc(a){return BD(a,129).d};var BZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$4$Type',1813);bcb(1814,1,{},hOc);_.Ge=function iOc(a){return BD(a,129).d};var CZ=mdb(Mqe,'HyperEdgeCycleDetector/lambda$5$Type',1814);bcb(112,1,{35:1,112:1},uOc);_.wd=function vOc(a){return kOc(this,BD(a,112))};_.Fb=function wOc(a){var b;if(JD(a,112)){b=BD(a,112);return this.g==b.g}return false};_.Hb=function xOc(){return this.g};_.Ib=function zOc(){var a,b,c,d;a=new Wfb('{');d=new olb(this.n);while(d.a'+this.b+' ('+Yr(this.c)+')'};_.d=0;var EZ=mdb(Mqe,'HyperEdgeSegmentDependency',129);bcb(520,22,{3:1,35:1,22:1,520:1},IOc);var FOc,GOc;var DZ=ndb(Mqe,'HyperEdgeSegmentDependency/DependencyType',520,CI,KOc,JOc);var LOc;bcb(1815,1,{},ZOc);var MZ=mdb(Mqe,'HyperEdgeSegmentSplitter',1815);bcb(1816,1,{},aPc);_.a=0;_.b=0;var FZ=mdb(Mqe,'HyperEdgeSegmentSplitter/AreaRating',1816);bcb(329,1,{329:1},bPc);_.a=0;_.b=0;_.c=0;var GZ=mdb(Mqe,'HyperEdgeSegmentSplitter/FreeArea',329);bcb(1817,1,Dke,cPc);_.ue=function dPc(a,b){return _Oc(BD(a,112),BD(b,112))};_.Fb=function ePc(a){return this===a};_.ve=function fPc(){return new tpb(this)};var HZ=mdb(Mqe,'HyperEdgeSegmentSplitter/lambda$0$Type',1817);bcb(1818,1,qie,gPc);_.td=function hPc(a){TOc(this.a,this.d,this.c,this.b,BD(a,112))};_.b=0;var IZ=mdb(Mqe,'HyperEdgeSegmentSplitter/lambda$1$Type',1818);bcb(1819,1,{},iPc);_.Kb=function jPc(a){return new YAb(null,new Kub(BD(a,112).e,16))};var JZ=mdb(Mqe,'HyperEdgeSegmentSplitter/lambda$2$Type',1819);bcb(1820,1,{},kPc);_.Kb=function lPc(a){return new YAb(null,new Kub(BD(a,112).j,16))};var KZ=mdb(Mqe,'HyperEdgeSegmentSplitter/lambda$3$Type',1820);bcb(1821,1,{},mPc);_.Fe=function nPc(a){return Edb(ED(a))};var LZ=mdb(Mqe,'HyperEdgeSegmentSplitter/lambda$4$Type',1821);bcb(655,1,{},tPc);_.a=0;_.b=0;_.c=0;var QZ=mdb(Mqe,'OrthogonalRoutingGenerator',655);bcb(1638,1,{},xPc);_.Kb=function yPc(a){return new YAb(null,new Kub(BD(a,112).e,16))};var OZ=mdb(Mqe,'OrthogonalRoutingGenerator/lambda$0$Type',1638);bcb(1639,1,{},zPc);_.Kb=function APc(a){return new YAb(null,new Kub(BD(a,112).j,16))};var PZ=mdb(Mqe,'OrthogonalRoutingGenerator/lambda$1$Type',1639);bcb(661,1,{});var RZ=mdb(Nqe,'BaseRoutingDirectionStrategy',661);bcb(1807,661,{},EPc);_.dg=function FPc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b+a.o*c;for(j=new olb(a.n);j.aqme){f=k;e=a;d=new f7c(l,f);Dsb(g.a,d);BPc(this,g,e,d,false);m=a.r;if(m){n=Edb(ED(Ut(m.e,0)));d=new f7c(n,f);Dsb(g.a,d);BPc(this,g,e,d,false);f=b+m.o*c;e=m;d=new f7c(n,f);Dsb(g.a,d);BPc(this,g,e,d,false)}d=new f7c(p,f);Dsb(g.a,d);BPc(this,g,e,d,false)}}}}};_.eg=function GPc(a){return a.i.n.a+a.n.a+a.a.a};_.fg=function HPc(){return Ucd(),Rcd};_.gg=function IPc(){return Ucd(),Acd};var SZ=mdb(Nqe,'NorthToSouthRoutingStrategy',1807);bcb(1808,661,{},JPc);_.dg=function KPc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b-a.o*c;for(j=new olb(a.n);j.aqme){f=k;e=a;d=new f7c(l,f);Dsb(g.a,d);BPc(this,g,e,d,false);m=a.r;if(m){n=Edb(ED(Ut(m.e,0)));d=new f7c(n,f);Dsb(g.a,d);BPc(this,g,e,d,false);f=b-m.o*c;e=m;d=new f7c(n,f);Dsb(g.a,d);BPc(this,g,e,d,false)}d=new f7c(p,f);Dsb(g.a,d);BPc(this,g,e,d,false)}}}}};_.eg=function LPc(a){return a.i.n.a+a.n.a+a.a.a};_.fg=function MPc(){return Ucd(),Acd};_.gg=function NPc(){return Ucd(),Rcd};var TZ=mdb(Nqe,'SouthToNorthRoutingStrategy',1808);bcb(1806,661,{},OPc);_.dg=function PPc(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!!a.r&&!a.q){return}k=b+a.o*c;for(j=new olb(a.n);j.aqme){f=k;e=a;d=new f7c(f,l);Dsb(g.a,d);BPc(this,g,e,d,true);m=a.r;if(m){n=Edb(ED(Ut(m.e,0)));d=new f7c(f,n);Dsb(g.a,d);BPc(this,g,e,d,true);f=b+m.o*c;e=m;d=new f7c(f,n);Dsb(g.a,d);BPc(this,g,e,d,true)}d=new f7c(f,p);Dsb(g.a,d);BPc(this,g,e,d,true)}}}}};_.eg=function QPc(a){return a.i.n.b+a.n.b+a.a.b};_.fg=function RPc(){return Ucd(),zcd};_.gg=function SPc(){return Ucd(),Tcd};var UZ=mdb(Nqe,'WestToEastRoutingStrategy',1806);bcb(813,1,{},YPc);_.Ib=function ZPc(){return Fe(this.a)};_.b=0;_.c=false;_.d=false;_.f=0;var WZ=mdb(Pqe,'NubSpline',813);bcb(407,1,{407:1},aQc,bQc);var VZ=mdb(Pqe,'NubSpline/PolarCP',407);bcb(1453,1,Bqe,vQc);_.Yf=function xQc(a){return qQc(BD(a,37))};_.pf=function yQc(a,b){uQc(this,BD(a,37),b)};var cQc,dQc,eQc,fQc,gQc;var b$=mdb(Pqe,'SplineEdgeRouter',1453);bcb(268,1,{268:1},BQc);_.Ib=function CQc(){return this.a+' ->('+this.c+') '+this.b};_.c=0;var XZ=mdb(Pqe,'SplineEdgeRouter/Dependency',268);bcb(455,22,{3:1,35:1,22:1,455:1},GQc);var DQc,EQc;var YZ=ndb(Pqe,'SplineEdgeRouter/SideToProcess',455,CI,IQc,HQc);var JQc;bcb(1454,1,Oie,LQc);_.Mb=function MQc(a){return hQc(),!BD(a,128).o};var ZZ=mdb(Pqe,'SplineEdgeRouter/lambda$0$Type',1454);bcb(1455,1,{},NQc);_.Ge=function OQc(a){return hQc(),BD(a,128).v+1};var $Z=mdb(Pqe,'SplineEdgeRouter/lambda$1$Type',1455);bcb(1456,1,qie,PQc);_.td=function QQc(a){sQc(this.a,this.b,BD(a,46))};var _Z=mdb(Pqe,'SplineEdgeRouter/lambda$2$Type',1456);bcb(1457,1,qie,RQc);_.td=function SQc(a){tQc(this.a,this.b,BD(a,46))};var a$=mdb(Pqe,'SplineEdgeRouter/lambda$3$Type',1457);bcb(128,1,{35:1,128:1},YQc,ZQc);_.wd=function $Qc(a){return WQc(this,BD(a,128))};_.b=0;_.e=false;_.f=0;_.g=0;_.j=false;_.k=false;_.n=0;_.o=false;_.p=false;_.q=false;_.s=0;_.u=0;_.v=0;_.F=0;var d$=mdb(Pqe,'SplineSegment',128);bcb(459,1,{459:1},_Qc);_.a=0;_.b=false;_.c=false;_.d=false;_.e=false;_.f=0;var c$=mdb(Pqe,'SplineSegment/EdgeInformation',459);bcb(1234,1,{},hRc);var f$=mdb(Uqe,hme,1234);bcb(1235,1,Dke,jRc);_.ue=function kRc(a,b){return iRc(BD(a,135),BD(b,135))};_.Fb=function lRc(a){return this===a};_.ve=function mRc(){return new tpb(this)};var e$=mdb(Uqe,ime,1235);bcb(1233,1,{},tRc);var g$=mdb(Uqe,'MrTree',1233);bcb(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},ARc);_.Kf=function CRc(){return zRc(this)};_.Xf=function BRc(){return zRc(this)};var uRc,vRc,wRc,xRc;var h$=ndb(Uqe,'TreeLayoutPhases',393,CI,ERc,DRc);var FRc;bcb(1130,209,Mle,HRc);_.Ze=function IRc(a,b){var c,d,e,f,g,h,i;Ccb(DD(hkd(a,(JTc(),ATc))))||$Cb((c=new _Cb((Pgd(),new bhd(a))),c));g=(h=new SRc,tNb(h,a),yNb(h,(mTc(),dTc),a),i=new Lqb,pRc(a,h,i),oRc(a,h,i),h);f=gRc(this.a,g);for(e=new olb(f);e.a'+WRc(this.c):'e_'+tb(this)};var l$=mdb(Vqe,'TEdge',188);bcb(135,134,{3:1,135:1,94:1,134:1},SRc);_.Ib=function TRc(){var a,b,c,d,e;e=null;for(d=Jsb(this.b,0);d.b!=d.d.c;){c=BD(Xsb(d),86);e+=(c.c==null||c.c.length==0?'n_'+c.g:'n_'+c.c)+'\\n'}for(b=Jsb(this.a,0);b.b!=b.d.c;){a=BD(Xsb(b),188);e+=(!!a.b&&!!a.c?WRc(a.b)+'->'+WRc(a.c):'e_'+tb(a))+'\\n'}return e};var n$=mdb(Vqe,'TGraph',135);bcb(633,502,{3:1,502:1,633:1,94:1,134:1});var r$=mdb(Vqe,'TShape',633);bcb(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},XRc);_.Ib=function YRc(){return WRc(this)};var q$=mdb(Vqe,'TNode',86);bcb(255,1,vie,ZRc);_.Jc=function $Rc(a){reb(this,a)};_.Kc=function _Rc(){var a;return a=Jsb(this.a.d,0),new aSc(a)};var p$=mdb(Vqe,'TNode/2',255);bcb(358,1,aie,aSc);_.Nb=function bSc(a){Rrb(this,a)};_.Pb=function dSc(){return BD(Xsb(this.a),188).c};_.Ob=function cSc(){return Wsb(this.a)};_.Qb=function eSc(){Zsb(this.a)};var o$=mdb(Vqe,'TNode/2/1',358);bcb(1840,1,ene,hSc);_.pf=function jSc(a,b){gSc(this,BD(a,135),b)};var s$=mdb(Wqe,'FanProcessor',1840);bcb(327,22,{3:1,35:1,22:1,327:1,234:1},rSc);_.Kf=function sSc(){switch(this.g){case 0:return new QSc;case 1:return new hSc;case 2:return new GSc;case 3:return new zSc;case 4:return new NSc;case 5:return new TSc;default:throw vbb(new Wdb(Dne+(this.f!=null?this.f:''+this.g)));}};var kSc,lSc,mSc,nSc,oSc,pSc;var t$=ndb(Wqe,Ene,327,CI,uSc,tSc);var vSc;bcb(1843,1,ene,zSc);_.pf=function ASc(a,b){xSc(this,BD(a,135),b)};_.a=0;var v$=mdb(Wqe,'LevelHeightProcessor',1843);bcb(1844,1,vie,BSc);_.Jc=function CSc(a){reb(this,a)};_.Kc=function DSc(){return mmb(),Emb(),Dmb};var u$=mdb(Wqe,'LevelHeightProcessor/1',1844);bcb(1841,1,ene,GSc);_.pf=function HSc(a,b){ESc(this,BD(a,135),b)};_.a=0;var x$=mdb(Wqe,'NeighborsProcessor',1841);bcb(1842,1,vie,ISc);_.Jc=function JSc(a){reb(this,a)};_.Kc=function KSc(){return mmb(),Emb(),Dmb};var w$=mdb(Wqe,'NeighborsProcessor/1',1842);bcb(1845,1,ene,NSc);_.pf=function OSc(a,b){LSc(this,BD(a,135),b)};_.a=0;var y$=mdb(Wqe,'NodePositionProcessor',1845);bcb(1839,1,ene,QSc);_.pf=function RSc(a,b){PSc(this,BD(a,135))};var z$=mdb(Wqe,'RootProcessor',1839);bcb(1846,1,ene,TSc);_.pf=function USc(a,b){SSc(BD(a,135))};var A$=mdb(Wqe,'Untreeifyer',1846);var VSc,WSc,XSc,YSc,ZSc,$Sc,_Sc,aTc,bTc,cTc,dTc,eTc,fTc,gTc,hTc,iTc,jTc,kTc,lTc;bcb(851,1,ale,sTc);_.Qe=function tTc(a){t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Zqe),''),'Weighting of Nodes'),'Which weighting to use when computing a node order.'),qTc),(_5c(),V5c)),E$),pqb((N5c(),L5c)))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,$qe),''),'Search Order'),'Which search order to use when computing a spanning tree.'),oTc),V5c),F$),pqb(L5c))));KTc((new LTc,a))};var nTc,oTc,pTc,qTc;var B$=mdb(_qe,'MrTreeMetaDataProvider',851);bcb(994,1,ale,LTc);_.Qe=function MTc(a){KTc(a)};var uTc,vTc,wTc,xTc,yTc,zTc,ATc,BTc,CTc,DTc,ETc,FTc,GTc,HTc,ITc;var D$=mdb(_qe,'MrTreeOptions',994);bcb(995,1,{},NTc);_.$e=function OTc(){var a;return a=new HRc,a};_._e=function PTc(a){};var C$=mdb(_qe,'MrTreeOptions/MrtreeFactory',995);bcb(480,22,{3:1,35:1,22:1,480:1},TTc);var QTc,RTc;var E$=ndb(_qe,'OrderWeighting',480,CI,VTc,UTc);var WTc;bcb(425,22,{3:1,35:1,22:1,425:1},_Tc);var YTc,ZTc;var F$=ndb(_qe,'TreeifyingOrder',425,CI,bUc,aUc);var cUc;bcb(1459,1,Bqe,lUc);_.Yf=function mUc(a){return BD(a,135),eUc};_.pf=function nUc(a,b){kUc(this,BD(a,135),b)};var eUc;var G$=mdb('org.eclipse.elk.alg.mrtree.p1treeify','DFSTreeifyer',1459);bcb(1460,1,Bqe,sUc);_.Yf=function tUc(a){return BD(a,135),oUc};_.pf=function uUc(a,b){rUc(this,BD(a,135),b)};var oUc;var H$=mdb('org.eclipse.elk.alg.mrtree.p2order','NodeOrderer',1460);bcb(1461,1,Bqe,CUc);_.Yf=function DUc(a){return BD(a,135),vUc};_.pf=function EUc(a,b){AUc(this,BD(a,135),b)};_.a=0;var vUc;var I$=mdb('org.eclipse.elk.alg.mrtree.p3place','NodePlacer',1461);bcb(1462,1,Bqe,IUc);_.Yf=function JUc(a){return BD(a,135),FUc};_.pf=function KUc(a,b){HUc(BD(a,135),b)};var FUc;var J$=mdb('org.eclipse.elk.alg.mrtree.p4route','EdgeRouter',1462);var LUc;bcb(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},RUc);_.Kf=function TUc(){return QUc(this)};_.Xf=function SUc(){return QUc(this)};var NUc,OUc;var K$=ndb(cre,'RadialLayoutPhases',495,CI,VUc,UUc);var WUc;bcb(1131,209,Mle,ZUc);_.Ze=function $Uc(a,b){var c,d,e,f,g,h;c=YUc(this,a);Odd(b,'Radial layout',c.c.length);Ccb(DD(hkd(a,(ZWc(),QWc))))||$Cb((d=new _Cb((Pgd(),new bhd(a))),d));h=aVc(a);jkd(a,(MUc(),LUc),h);if(!h){throw vbb(new Wdb('The given graph is not a tree!'))}e=Edb(ED(hkd(a,VWc)));e==0&&(e=_Uc(a));jkd(a,VWc,e);for(g=new olb(YUc(this,a));g.a0&&j7c((BCb(c-1,b.length),b.charCodeAt(c-1)),nne)){--c}if(e>=c){throw vbb(new Wdb('The given string does not contain any numbers.'))}f=mfb(b.substr(e,c-e),',|;|\\r|\\n');if(f.length!=2){throw vbb(new Wdb('Exactly two numbers are expected, '+f.length+' were found.'))}try{this.a=Hcb(ufb(f[0]));this.b=Hcb(ufb(f[1]))}catch(a){a=ubb(a);if(JD(a,127)){d=a;throw vbb(new Wdb(one+d))}else throw vbb(a)}};_.Ib=function m7c(){return '('+this.a+','+this.b+')'};_.a=0;_.b=0;var m1=mdb(pne,'KVector',8);bcb(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},s7c,t7c,u7c);_.Pc=function x7c(){return r7c(this)};_.Jf=function v7c(b){var c,d,e,f,g,h;e=mfb(b,',|;|\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}| |\\t|\\n');Osb(this);try{d=0;g=0;f=0;h=0;while(d0){g%2==0?(f=Hcb(e[d])):(h=Hcb(e[d]));g>0&&g%2!=0&&Dsb(this,new f7c(f,h));++g}++d}}catch(a){a=ubb(a);if(JD(a,127)){c=a;throw vbb(new Wdb('The given string does not match the expected format for vectors.'+c))}else throw vbb(a)}};_.Ib=function y7c(){var a,b,c;a=new Wfb('(');b=Jsb(this,0);while(b.b!=b.d.c){c=BD(Xsb(b),8);Qfb(a,c.a+','+c.b);b.b!=b.d.c&&(a.a+='; ',a)}return (a.a+=')',a).a};var l1=mdb(pne,'KVectorChain',74);bcb(248,22,{3:1,35:1,22:1,248:1},G7c);var z7c,A7c,B7c,C7c,D7c,E7c;var o1=ndb(ose,'Alignment',248,CI,I7c,H7c);var J7c;bcb(979,1,ale,Z7c);_.Qe=function $7c(a){Y7c(a)};var L7c,M7c,N7c,O7c,P7c,Q7c,R7c,S7c,T7c,U7c,V7c,W7c;var q1=mdb(ose,'BoxLayouterOptions',979);bcb(980,1,{},_7c);_.$e=function a8c(){var a;return a=new ged,a};_._e=function b8c(a){};var p1=mdb(ose,'BoxLayouterOptions/BoxFactory',980);bcb(291,22,{3:1,35:1,22:1,291:1},j8c);var c8c,d8c,e8c,f8c,g8c,h8c;var r1=ndb(ose,'ContentAlignment',291,CI,l8c,k8c);var m8c;bcb(684,1,ale,Z9c);_.Qe=function $9c(a){t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,sse),''),'Layout Algorithm'),'Select a specific layout algorithm.'),(_5c(),Z5c)),ZI),pqb((N5c(),L5c)))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,tse),''),'Resolved Layout Algorithm'),'Meta data associated with the selected algorithm.'),Y5c),E0),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,$pe),''),'Alignment'),'Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm.'),q8c),V5c),o1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,_le),''),'Aspect Ratio'),'The desired aspect ratio of the drawing, that is the quotient of width by height.'),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,use),''),'Bend Points'),\"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points.\"),Y5c),l1),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,lqe),''),'Content Alignment'),'Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option.'),x8c),W5c),r1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Zpe),''),'Debug Mode'),'Whether additional debug information shall be generated.'),(Bcb(),false)),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,cqe),''),Cle),'Overall direction of edges: horizontal (right / left) or vertical (down / up).'),A8c),V5c),t1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ype),''),'Edge Routing'),'What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline.'),F8c),V5c),v1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Jre),''),'Expand Nodes'),'If active, nodes are expanded to fill the area of their parent.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,tpe),''),'Hierarchy Handling'),\"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`.\"),K8c),V5c),z1),qqb(L5c,OC(GC(e1,1),Kie,175,0,[K5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,ame),''),'Padding'),\"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately.\"),g9c),Y5c),j1),qqb(L5c,OC(GC(e1,1),Kie,175,0,[K5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ame),''),'Interactive'),'Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,xqe),''),'interactive Layout'),'Whether the graph should be changeable interactively and by setting constraints'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Dme),''),'Omit Node Micro Layout'),\"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout.\"),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Bme),''),'Port Constraints'),'Defines constraints of the position of the ports of a node.'),u9c),V5c),D1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,uqe),''),'Position'),\"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position.\"),Y5c),m1),qqb(K5c,OC(GC(e1,1),Kie,175,0,[M5c,J5c])))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,vme),''),'Priority'),'Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used.'),X5c),JI),qqb(K5c,OC(GC(e1,1),Kie,175,0,[I5c])))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,yme),''),'Randomization Seed'),'Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time).'),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,zme),''),'Separate Connected Components'),'Whether each connected component should be processed separately.'),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,mqe),''),'Junction Points'),'This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order.'),R8c),Y5c),l1),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,pqe),''),'Comment Box'),'Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related.'),false),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,qqe),''),'Hypernode'),'Whether the node should be handled as a hypernode.'),false),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,vse),''),'Label Manager'),\"Label managers can shorten labels upon a layout algorithm's request.\"),Y5c),h1),qqb(L5c,OC(GC(e1,1),Kie,175,0,[J5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,vqe),''),'Margins'),\"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels.\"),T8c),Y5c),i1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Xpe),''),'No Layout'),\"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node.\"),false),T5c),wI),qqb(K5c,OC(GC(e1,1),Kie,175,0,[I5c,M5c,J5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,wse),''),'Scale Factor'),\"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set.\"),1),U5c),BI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,xse),''),'Animate'),'Whether the shift from the old layout to the new computed layout shall be animated.'),true),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,yse),''),'Animation Time Factor'),\"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'.\"),meb(100)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,zse),''),'Layout Ancestors'),'Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ase),''),'Maximal Animation Time'),'The maximal time for animations, in milliseconds.'),meb(4000)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Bse),''),'Minimal Animation Time'),'The minimal time for animations, in milliseconds.'),meb(400)),X5c),JI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Cse),''),'Progress Bar'),'Whether a progress bar shall be displayed during layout computations.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Dse),''),'Validate Graph'),'Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ese),''),'Validate Options'),'Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user.'),true),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Fse),''),'Zoom to Fit'),'Whether the zoom level shall be set to view the whole diagram after layout.'),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,rse),'box'),'Box Layout Mode'),'Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better.'),u8c),V5c),O1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Lpe),zpe),'Comment Comment Spacing'),'Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing.'),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Mpe),zpe),'Comment Node Spacing'),'Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing.'),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Zle),zpe),'Components Spacing'),\"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated.\"),20),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Npe),zpe),'Edge Spacing'),'Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines.'),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,xme),zpe),'Edge Label Spacing'),\"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option.\"),2),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ope),zpe),'Edge Node Spacing'),'Spacing to be preserved between nodes and edges.'),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ppe),zpe),'Label Spacing'),'Determines the amount of space to be left between two labels of the same graph element.'),0),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Spe),zpe),'Label Node Spacing'),\"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option.\"),5),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Qpe),zpe),'Horizontal spacing between Label and Port'),\"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option.\"),1),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Rpe),zpe),'Vertical spacing between Label and Port'),\"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option.\"),1),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,wme),zpe),'Node Spacing'),'The minimal distance to be preserved between each two nodes.'),20),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Tpe),zpe),'Node Self Loop Spacing'),'Spacing to be preserved between a node and its self loops.'),10),U5c),BI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Upe),zpe),'Port Spacing'),'Spacing between pairs of ports of the same node.'),10),U5c),BI),qqb(L5c,OC(GC(e1,1),Kie,175,0,[K5c])))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Vpe),zpe),'Individual Spacing'),\"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent.\"),Y5c),i2),qqb(K5c,OC(GC(e1,1),Kie,175,0,[I5c,M5c,J5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,wqe),zpe),'Additional Port Space'),'Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border.'),W9c),Y5c),i1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,tqe),Jse),'Layout Partition'),'Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction).'),X5c),JI),qqb(L5c,OC(GC(e1,1),Kie,175,0,[K5c])))));o4c(a,tqe,sqe,k9c);t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,sqe),Jse),'Layout Partitioning'),'Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle.'),i9c),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,dqe),Kse),'Node Label Padding'),'Define padding for node labels that are placed inside of a node.'),V8c),Y5c),j1),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Gme),Kse),'Node Label Placement'),\"Hints for where node labels are to be placed; if empty, the node label's position is not modified.\"),X8c),W5c),B1),qqb(K5c,OC(GC(e1,1),Kie,175,0,[J5c])))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,gqe),Lse),'Port Alignment'),'Defines the default port distribution for a node. May be overridden for each side individually.'),m9c),V5c),C1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,hqe),Lse),'Port Alignment (North)'),\"Defines how ports on the northern side are placed, overriding the node's general port alignment.\"),V5c),C1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,iqe),Lse),'Port Alignment (South)'),\"Defines how ports on the southern side are placed, overriding the node's general port alignment.\"),V5c),C1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,jqe),Lse),'Port Alignment (West)'),\"Defines how ports on the western side are placed, overriding the node's general port alignment.\"),V5c),C1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,kqe),Lse),'Port Alignment (East)'),\"Defines how ports on the eastern side are placed, overriding the node's general port alignment.\"),V5c),C1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Fme),Mse),'Node Size Constraints'),\"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed.\"),Z8c),W5c),I1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Eme),Mse),'Node Size Options'),'Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications.'),c9c),W5c),J1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Tme),Mse),'Node Size Minimum'),'The minimal size to which a node can be reduced.'),a9c),Y5c),m1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,bqe),Mse),'Fixed Graph Size'),\"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so.\"),false),T5c),wI),pqb(L5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,nqe),Jpe),'Edge Label Placement'),'Gives a hint on where to put edge labels.'),D8c),V5c),u1),pqb(J5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Cme),Jpe),'Inline Edge Labels'),\"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible.\"),false),T5c),wI),pqb(J5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Gse),'font'),'Font Name'),'Font name used for a label.'),Z5c),ZI),pqb(J5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Hse),'font'),'Font Size'),'Font size used for a label.'),X5c),JI),pqb(J5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,rqe),Nse),'Port Anchor Offset'),'The offset to the port position where connections shall be attached.'),Y5c),m1),pqb(M5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,oqe),Nse),'Port Index'),\"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case.\"),X5c),JI),pqb(M5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ype),Nse),'Port Side'),\"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports.\"),B9c),V5c),F1),pqb(M5c))));t4c(a,new p5c(F5c(E5c(G5c(z5c(D5c(A5c(B5c(new H5c,Wpe),Nse),'Port Border Offset'),\"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border.\"),U5c),BI),pqb(M5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Hme),Ose),'Port Label Placement'),\"Decides on a placement method for port labels; if empty, the node label's position is not modified.\"),y9c),W5c),E1),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,eqe),Ose),'Port Labels Next to Port'),\"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE.\"),false),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,fqe),Ose),'Treat Port Labels as Group'),'If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port.'),true),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,_pe),Pse),'Activate Inside Self Loops'),\"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports.\"),false),T5c),wI),pqb(K5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,aqe),Pse),'Inside Self Loop'),'Whether a self loop should be routed inside a node instead of around that node.'),false),T5c),wI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,$le),'edge'),'Edge Thickness'),'The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it.'),1),U5c),BI),pqb(I5c))));t4c(a,new p5c(F5c(E5c(G5c(y5c(z5c(D5c(A5c(B5c(new H5c,Ise),'edge'),'Edge Type'),'The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations.'),H8c),V5c),w1),pqb(I5c))));s4c(a,new W3c(b4c(d4c(c4c(new e4c,sne),'Layered'),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called \"hierarchies\", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,'org.eclipse.elk.orthogonal'),'Orthogonal'),'Orthogonal methods that follow the \"topology-shape-metrics\" approach by Batini, Nardelli and Tamassia \\'86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,ume),'Force'),'Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,'org.eclipse.elk.circle'),'Circle'),'Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,bre),'Tree'),'Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,'org.eclipse.elk.planar'),'Planar'),'Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable.')));s4c(a,new W3c(b4c(d4c(c4c(new e4c,sre),'Radial'),'Radial layout algorithms usually position the nodes of the graph on concentric circles.')));$ad((new _ad,a));Y7c((new Z7c,a));jdd((new kdd,a))};var o8c,p8c,q8c,r8c,s8c,t8c,u8c,v8c,w8c,x8c,y8c,z8c,A8c,B8c,C8c,D8c,E8c,F8c,G8c,H8c,I8c,J8c,K8c,L8c,M8c,N8c,O8c,P8c,Q8c,R8c,S8c,T8c,U8c,V8c,W8c,X8c,Y8c,Z8c,$8c,_8c,a9c,b9c,c9c,d9c,e9c,f9c,g9c,h9c,i9c,j9c,k9c,l9c,m9c,n9c,o9c,p9c,q9c,r9c,s9c,t9c,u9c,v9c,w9c,x9c,y9c,z9c,A9c,B9c,C9c,D9c,E9c,F9c,G9c,H9c,I9c,J9c,K9c,L9c,M9c,N9c,O9c,P9c,Q9c,R9c,S9c,T9c,U9c,V9c,W9c,X9c;var s1=mdb(ose,'CoreOptions',684);bcb(103,22,{3:1,35:1,22:1,103:1},iad);var _9c,aad,bad,cad,dad;var t1=ndb(ose,Cle,103,CI,kad,jad);var lad;bcb(272,22,{3:1,35:1,22:1,272:1},rad);var nad,oad,pad;var u1=ndb(ose,'EdgeLabelPlacement',272,CI,tad,sad);var uad;bcb(218,22,{3:1,35:1,22:1,218:1},Bad);var wad,xad,yad,zad;var v1=ndb(ose,'EdgeRouting',218,CI,Dad,Cad);var Ead;bcb(312,22,{3:1,35:1,22:1,312:1},Nad);var Gad,Had,Iad,Jad,Kad,Lad;var w1=ndb(ose,'EdgeType',312,CI,Pad,Oad);var Qad;bcb(977,1,ale,_ad);_.Qe=function abd(a){$ad(a)};var Sad,Tad,Uad,Vad,Wad,Xad,Yad;var y1=mdb(ose,'FixedLayouterOptions',977);bcb(978,1,{},bbd);_.$e=function cbd(){var a;return a=new Zfd,a};_._e=function dbd(a){};var x1=mdb(ose,'FixedLayouterOptions/FixedFactory',978);bcb(334,22,{3:1,35:1,22:1,334:1},ibd);var ebd,fbd,gbd;var z1=ndb(ose,'HierarchyHandling',334,CI,kbd,jbd);var lbd;bcb(285,22,{3:1,35:1,22:1,285:1},tbd);var nbd,obd,pbd,qbd;var A1=ndb(ose,'LabelSide',285,CI,vbd,ubd);var wbd;bcb(93,22,{3:1,35:1,22:1,93:1},Ibd);var ybd,zbd,Abd,Bbd,Cbd,Dbd,Ebd,Fbd,Gbd;var B1=ndb(ose,'NodeLabelPlacement',93,CI,Lbd,Kbd);var Mbd;bcb(249,22,{3:1,35:1,22:1,249:1},Ubd);var Obd,Pbd,Qbd,Rbd,Sbd;var C1=ndb(ose,'PortAlignment',249,CI,Wbd,Vbd);var Xbd;bcb(98,22,{3:1,35:1,22:1,98:1},gcd);var Zbd,$bd,_bd,acd,bcd,ccd;var D1=ndb(ose,'PortConstraints',98,CI,icd,hcd);var jcd;bcb(273,22,{3:1,35:1,22:1,273:1},scd);var lcd,mcd,ncd,ocd,pcd,qcd;var E1=ndb(ose,'PortLabelPlacement',273,CI,wcd,vcd);var xcd;bcb(61,22,{3:1,35:1,22:1,61:1},Ycd);var zcd,Acd,Bcd,Ccd,Dcd,Ecd,Fcd,Gcd,Hcd,Icd,Jcd,Kcd,Lcd,Mcd,Ncd,Ocd,Pcd,Qcd,Rcd,Scd,Tcd;var F1=ndb(ose,'PortSide',61,CI,_cd,$cd);var bdd;bcb(981,1,ale,kdd);_.Qe=function ldd(a){jdd(a)};var ddd,edd,fdd,gdd,hdd;var H1=mdb(ose,'RandomLayouterOptions',981);bcb(982,1,{},mdd);_.$e=function ndd(){var a;return a=new Mgd,a};_._e=function odd(a){};var G1=mdb(ose,'RandomLayouterOptions/RandomFactory',982);bcb(374,22,{3:1,35:1,22:1,374:1},udd);var pdd,qdd,rdd,sdd;var I1=ndb(ose,'SizeConstraint',374,CI,wdd,vdd);var xdd;bcb(259,22,{3:1,35:1,22:1,259:1},Jdd);var zdd,Add,Bdd,Cdd,Ddd,Edd,Fdd,Gdd,Hdd;var J1=ndb(ose,'SizeOptions',259,CI,Ldd,Kdd);var Mdd;bcb(370,1,{1949:1},Zdd);_.b=false;_.c=0;_.d=-1;_.e=null;_.f=null;_.g=-1;_.j=false;_.k=false;_.n=false;_.o=0;_.q=0;_.r=0;var L1=mdb(yqe,'BasicProgressMonitor',370);bcb(972,209,Mle,ged);_.Ze=function ked(a,b){var c,d,e,f,g,h,i,j,k;Odd(b,'Box layout',2);e=Gdb(ED(hkd(a,(X7c(),W7c))));f=BD(hkd(a,T7c),116);c=Ccb(DD(hkd(a,O7c)));d=Ccb(DD(hkd(a,P7c)));switch(BD(hkd(a,M7c),311).g){case 0:g=(h=new Tkb((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a)),mmb(),Okb(h,new med(d)),h);i=rfd(a);j=ED(hkd(a,L7c));(j==null||(uCb(j),j)<=0)&&(j=1.3);k=ded(g,e,f,i.a,i.b,c,(uCb(j),j));Afd(a,k.a,k.b,false,true);break;default:eed(a,e,f,c);}Qdd(b)};var S1=mdb(yqe,'BoxLayoutProvider',972);bcb(973,1,Dke,med);_.ue=function ned(a,b){return led(this,BD(a,33),BD(b,33))};_.Fb=function oed(a){return this===a};_.ve=function ped(){return new tpb(this)};_.a=false;var M1=mdb(yqe,'BoxLayoutProvider/1',973);bcb(157,1,{157:1},wed,xed);_.Ib=function yed(){return this.c?_od(this.c):Fe(this.b)};var N1=mdb(yqe,'BoxLayoutProvider/Group',157);bcb(311,22,{3:1,35:1,22:1,311:1},Eed);var zed,Aed,Bed,Ced;var O1=ndb(yqe,'BoxLayoutProvider/PackingMode',311,CI,Ged,Fed);var Hed;bcb(974,1,Dke,Jed);_.ue=function Ked(a,b){return hed(BD(a,157),BD(b,157))};_.Fb=function Led(a){return this===a};_.ve=function Med(){return new tpb(this)};var P1=mdb(yqe,'BoxLayoutProvider/lambda$0$Type',974);bcb(975,1,Dke,Ned);_.ue=function Oed(a,b){return ied(BD(a,157),BD(b,157))};_.Fb=function Ped(a){return this===a};_.ve=function Qed(){return new tpb(this)};var Q1=mdb(yqe,'BoxLayoutProvider/lambda$1$Type',975);bcb(976,1,Dke,Red);_.ue=function Sed(a,b){return jed(BD(a,157),BD(b,157))};_.Fb=function Ted(a){return this===a};_.ve=function Ued(){return new tpb(this)};var R1=mdb(yqe,'BoxLayoutProvider/lambda$2$Type',976);bcb(1365,1,{831:1},Ved);_.qg=function Wed(a,b){return Vyc(),!JD(b,160)||h2c((Y1c(),X1c,BD(a,160)),b)};var T1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type',1365);bcb(1366,1,qie,Xed);_.td=function Yed(a){Yyc(this.a,BD(a,146))};var U1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type',1366);bcb(1367,1,qie,Zed);_.td=function $ed(a){BD(a,94);Vyc()};var V1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type',1367);bcb(1371,1,qie,_ed);_.td=function afd(a){Zyc(this.a,BD(a,94))};var W1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type',1371);bcb(1369,1,Oie,bfd);_.Mb=function cfd(a){return $yc(this.a,this.b,BD(a,146))};var X1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type',1369);bcb(1368,1,Oie,dfd);_.Mb=function efd(a){return azc(this.a,this.b,BD(a,831))};var Y1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type',1368);bcb(1370,1,qie,ffd);_.td=function gfd(a){_yc(this.a,this.b,BD(a,146))};var Z1=mdb(yqe,'ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type',1370);bcb(935,1,{},Hfd);_.Kb=function Ifd(a){return Gfd(a)};_.Fb=function Jfd(a){return this===a};var _1=mdb(yqe,'ElkUtil/lambda$0$Type',935);bcb(936,1,qie,Kfd);_.td=function Lfd(a){ufd(this.a,this.b,BD(a,79))};_.a=0;_.b=0;var a2=mdb(yqe,'ElkUtil/lambda$1$Type',936);bcb(937,1,qie,Mfd);_.td=function Nfd(a){vfd(this.a,this.b,BD(a,202))};_.a=0;_.b=0;var b2=mdb(yqe,'ElkUtil/lambda$2$Type',937);bcb(938,1,qie,Ofd);_.td=function Pfd(a){wfd(this.a,this.b,BD(a,137))};_.a=0;_.b=0;var c2=mdb(yqe,'ElkUtil/lambda$3$Type',938);bcb(939,1,qie,Qfd);_.td=function Rfd(a){xfd(this.a,BD(a,469))};var d2=mdb(yqe,'ElkUtil/lambda$4$Type',939);bcb(342,1,{35:1,342:1},Tfd);_.wd=function Ufd(a){return Sfd(this,BD(a,236))};_.Fb=function Vfd(a){var b;if(JD(a,342)){b=BD(a,342);return this.a==b.a}return false};_.Hb=function Wfd(){return QD(this.a)};_.Ib=function Xfd(){return this.a+' (exclusive)'};_.a=0;var e2=mdb(yqe,'ExclusiveBounds/ExclusiveLowerBound',342);bcb(1138,209,Mle,Zfd);_.Ze=function $fd(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B;Odd(b,'Fixed Layout',1);f=BD(hkd(a,(Y9c(),E8c)),218);l=0;m=0;for(s=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));s.e!=s.i.gc();){q=BD(Dyd(s),33);B=BD(hkd(q,(Zad(),Yad)),8);if(B){bld(q,B.a,B.b);if(BD(hkd(q,Tad),174).Hc((tdd(),pdd))){n=BD(hkd(q,Vad),8);n.a>0&&n.b>0&&Afd(q,n.a,n.b,true,true)}}l=$wnd.Math.max(l,q.i+q.g);m=$wnd.Math.max(m,q.j+q.f);for(j=new Fyd((!q.n&&(q.n=new cUd(D2,q,1,7)),q.n));j.e!=j.i.gc();){h=BD(Dyd(j),137);B=BD(hkd(h,Yad),8);!!B&&bld(h,B.a,B.b);l=$wnd.Math.max(l,q.i+h.i+h.g);m=$wnd.Math.max(m,q.j+h.j+h.f)}for(v=new Fyd((!q.c&&(q.c=new cUd(F2,q,9,9)),q.c));v.e!=v.i.gc();){u=BD(Dyd(v),118);B=BD(hkd(u,Yad),8);!!B&&bld(u,B.a,B.b);w=q.i+u.i;A=q.j+u.j;l=$wnd.Math.max(l,w+u.g);m=$wnd.Math.max(m,A+u.f);for(i=new Fyd((!u.n&&(u.n=new cUd(D2,u,1,7)),u.n));i.e!=i.i.gc();){h=BD(Dyd(i),137);B=BD(hkd(h,Yad),8);!!B&&bld(h,B.a,B.b);l=$wnd.Math.max(l,w+h.i+h.g);m=$wnd.Math.max(m,A+h.j+h.f)}}for(e=new Sr(ur(_sd(q).a.Kc(),new Sq));Qr(e);){c=BD(Rr(e),79);k=Yfd(c);l=$wnd.Math.max(l,k.a);m=$wnd.Math.max(m,k.b)}for(d=new Sr(ur($sd(q).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),79);if(Xod(jtd(c))!=a){k=Yfd(c);l=$wnd.Math.max(l,k.a);m=$wnd.Math.max(m,k.b)}}}if(f==(Aad(),wad)){for(r=new Fyd((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a));r.e!=r.i.gc();){q=BD(Dyd(r),33);for(d=new Sr(ur(_sd(q).a.Kc(),new Sq));Qr(d);){c=BD(Rr(d),79);g=pfd(c);g.b==0?jkd(c,Q8c,null):jkd(c,Q8c,g)}}}if(!Ccb(DD(hkd(a,(Zad(),Uad))))){t=BD(hkd(a,Wad),116);p=l+t.b+t.c;o=m+t.d+t.a;Afd(a,p,o,true,true)}Qdd(b)};var f2=mdb(yqe,'FixedLayoutProvider',1138);bcb(373,134,{3:1,414:1,373:1,94:1,134:1},_fd,agd);_.Jf=function dgd(b){var c,d,e,f,g,h,i,j,k;if(!b){return}try{j=mfb(b,';,;');for(g=j,h=0,i=g.length;h>16&aje|b^d<<16};_.Kc=function zgd(){return new Bgd(this)};_.Ib=function Agd(){return this.a==null&&this.b==null?'pair(null,null)':this.a==null?'pair(null,'+fcb(this.b)+')':this.b==null?'pair('+fcb(this.a)+',null)':'pair('+fcb(this.a)+','+fcb(this.b)+')'};var n2=mdb(yqe,'Pair',46);bcb(983,1,aie,Bgd);_.Nb=function Cgd(a){Rrb(this,a)};_.Ob=function Dgd(){return !this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)};_.Pb=function Egd(){if(!this.c&&!this.b&&this.a.a!=null){this.b=true;return this.a.a}else if(!this.c&&this.a.b!=null){this.c=true;return this.a.b}throw vbb(new utb)};_.Qb=function Fgd(){this.c&&this.a.b!=null?(this.a.b=null):this.b&&this.a.a!=null&&(this.a.a=null);throw vbb(new Ydb)};_.b=false;_.c=false;var m2=mdb(yqe,'Pair/1',983);bcb(448,1,{448:1},Ggd);_.Fb=function Hgd(a){return wtb(this.a,BD(a,448).a)&&wtb(this.c,BD(a,448).c)&&wtb(this.d,BD(a,448).d)&&wtb(this.b,BD(a,448).b)};_.Hb=function Igd(){return Hlb(OC(GC(SI,1),Uhe,1,5,[this.a,this.c,this.d,this.b]))};_.Ib=function Jgd(){return '('+this.a+She+this.c+She+this.d+She+this.b+')'};var o2=mdb(yqe,'Quadruple',448);bcb(1126,209,Mle,Mgd);_.Ze=function Ngd(a,b){var c,d,e,f,g;Odd(b,'Random Layout',1);if((!a.a&&(a.a=new cUd(E2,a,10,11)),a.a).i==0){Qdd(b);return}f=BD(hkd(a,(idd(),gdd)),19);!!f&&f.a!=0?(e=new Hub(f.a)):(e=new Gub);c=Gdb(ED(hkd(a,ddd)));g=Gdb(ED(hkd(a,hdd)));d=BD(hkd(a,edd),116);Lgd(a,e,c,g,d);Qdd(b)};var p2=mdb(yqe,'RandomLayoutProvider',1126);var Ogd;bcb(553,1,{});_.qf=function Sgd(){return new f7c(this.f.i,this.f.j)};_.We=function Tgd(a){if(Jsd(a,(Y9c(),s9c))){return hkd(this.f,Qgd)}return hkd(this.f,a)};_.rf=function Ugd(){return new f7c(this.f.g,this.f.f)};_.sf=function Vgd(){return this.g};_.Xe=function Wgd(a){return ikd(this.f,a)};_.tf=function Xgd(a){dld(this.f,a.a);eld(this.f,a.b)};_.uf=function Ygd(a){cld(this.f,a.a);ald(this.f,a.b)};_.vf=function Zgd(a){this.g=a};_.g=0;var Qgd;var q2=mdb(Use,'ElkGraphAdapters/AbstractElkGraphElementAdapter',553);bcb(554,1,{839:1},$gd);_.wf=function _gd(){var a,b;if(!this.b){this.b=Qu(Kkd(this.a).i);for(b=new Fyd(Kkd(this.a));b.e!=b.i.gc();){a=BD(Dyd(b),137);Ekb(this.b,new dhd(a))}}return this.b};_.b=null;var r2=mdb(Use,'ElkGraphAdapters/ElkEdgeAdapter',554);bcb(301,553,{},bhd);_.xf=function chd(){return ahd(this)};_.a=null;var s2=mdb(Use,'ElkGraphAdapters/ElkGraphAdapter',301);bcb(630,553,{181:1},dhd);var t2=mdb(Use,'ElkGraphAdapters/ElkLabelAdapter',630);bcb(629,553,{680:1},hhd);_.wf=function khd(){return ehd(this)};_.Af=function lhd(){var a;return a=BD(hkd(this.f,(Y9c(),S8c)),142),!a&&(a=new H_b),a};_.Cf=function nhd(){return fhd(this)};_.Ef=function phd(a){var b;b=new K_b(a);jkd(this.f,(Y9c(),S8c),b)};_.Ff=function qhd(a){jkd(this.f,(Y9c(),f9c),new r0b(a))};_.yf=function ihd(){return this.d};_.zf=function jhd(){var a,b;if(!this.a){this.a=new Rkb;for(b=new Sr(ur($sd(BD(this.f,33)).a.Kc(),new Sq));Qr(b);){a=BD(Rr(b),79);Ekb(this.a,new $gd(a))}}return this.a};_.Bf=function mhd(){var a,b;if(!this.c){this.c=new Rkb;for(b=new Sr(ur(_sd(BD(this.f,33)).a.Kc(),new Sq));Qr(b);){a=BD(Rr(b),79);Ekb(this.c,new $gd(a))}}return this.c};_.Df=function ohd(){return Vod(BD(this.f,33)).i!=0||Ccb(DD(BD(this.f,33).We((Y9c(),M8c))))};_.Gf=function rhd(){ghd(this,(Pgd(),Ogd))};_.a=null;_.b=null;_.c=null;_.d=null;_.e=null;var u2=mdb(Use,'ElkGraphAdapters/ElkNodeAdapter',629);bcb(1266,553,{838:1},thd);_.wf=function vhd(){return shd(this)};_.zf=function uhd(){var a,b;if(!this.a){this.a=Pu(BD(this.f,118).xg().i);for(b=new Fyd(BD(this.f,118).xg());b.e!=b.i.gc();){a=BD(Dyd(b),79);Ekb(this.a,new $gd(a))}}return this.a};_.Bf=function whd(){var a,b;if(!this.c){this.c=Pu(BD(this.f,118).yg().i);for(b=new Fyd(BD(this.f,118).yg());b.e!=b.i.gc();){a=BD(Dyd(b),79);Ekb(this.c,new $gd(a))}}return this.c};_.Hf=function xhd(){return BD(BD(this.f,118).We((Y9c(),A9c)),61)};_.If=function yhd(){var a,b,c,d,e,f,g,h;d=mpd(BD(this.f,118));for(c=new Fyd(BD(this.f,118).yg());c.e!=c.i.gc();){a=BD(Dyd(c),79);for(h=new Fyd((!a.c&&(a.c=new y5d(z2,a,5,8)),a.c));h.e!=h.i.gc();){g=BD(Dyd(h),82);if(ntd(atd(g),d)){return true}else if(atd(g)==d&&Ccb(DD(hkd(a,(Y9c(),N8c))))){return true}}}for(b=new Fyd(BD(this.f,118).xg());b.e!=b.i.gc();){a=BD(Dyd(b),79);for(f=new Fyd((!a.b&&(a.b=new y5d(z2,a,4,7)),a.b));f.e!=f.i.gc();){e=BD(Dyd(f),82);if(ntd(atd(e),d)){return true}}}return false};_.a=null;_.b=null;_.c=null;var v2=mdb(Use,'ElkGraphAdapters/ElkPortAdapter',1266);bcb(1267,1,Dke,Ahd);_.ue=function Bhd(a,b){return zhd(BD(a,118),BD(b,118))};_.Fb=function Chd(a){return this===a};_.ve=function Dhd(){return new tpb(this)};var w2=mdb(Use,'ElkGraphAdapters/PortComparator',1267);var m5=odb(Vse,'EObject');var x2=odb(Wse,Xse);var y2=odb(Wse,Yse);var C2=odb(Wse,Zse);var G2=odb(Wse,'ElkShape');var z2=odb(Wse,$se);var B2=odb(Wse,_se);var A2=odb(Wse,ate);var k5=odb(Vse,bte);var i5=odb(Vse,'EFactory');var Ehd;var l5=odb(Vse,cte);var o5=odb(Vse,'EPackage');var Ghd;var Ihd,Jhd,Khd,Lhd,Mhd,Nhd,Ohd,Phd,Qhd,Rhd,Shd;var D2=odb(Wse,dte);var E2=odb(Wse,ete);var F2=odb(Wse,fte);bcb(90,1,gte);_.Jg=function Vhd(){this.Kg();return null};_.Kg=function Whd(){return null};_.Lg=function Xhd(){return this.Kg(),false};_.Mg=function Yhd(){return false};_.Ng=function Zhd(a){Uhd(this,a)};var b4=mdb(hte,'BasicNotifierImpl',90);bcb(97,90,pte);_.nh=function fjd(){return oid(this)};_.Og=function Fid(a,b){return a};_.Pg=function Gid(){throw vbb(new bgb)};_.Qg=function Hid(a){var b;return b=zUd(BD(XKd(this.Tg(),this.Vg()),18)),this.eh().ih(this,b.n,b.f,a)};_.Rg=function Iid(a,b){throw vbb(new bgb)};_.Sg=function Jid(a,b,c){return _hd(this,a,b,c)};_.Tg=function Kid(){var a;if(this.Pg()){a=this.Pg().ck();if(a){return a}}return this.zh()};_.Ug=function Lid(){return aid(this)};_.Vg=function Mid(){throw vbb(new bgb)};_.Wg=function Oid(){var a,b;b=this.ph().dk();!b&&this.Pg().ik(b=(nRd(),a=pNd(TKd(this.Tg())),a==null?mRd:new qRd(this,a)));return b};_.Xg=function Qid(a,b){return a};_.Yg=function Rid(a){var b;b=a.Gj();return !b?bLd(this.Tg(),a):a.aj()};_.Zg=function Sid(){var a;a=this.Pg();return !a?null:a.fk()};_.$g=function Tid(){return !this.Pg()?null:this.Pg().ck()};_._g=function Uid(a,b,c){return fid(this,a,b,c)};_.ah=function Vid(a){return gid(this,a)};_.bh=function Wid(a,b){return hid(this,a,b)};_.dh=function Xid(){var a;a=this.Pg();return !!a&&a.gk()};_.eh=function Yid(){throw vbb(new bgb)};_.fh=function Zid(){return jid(this)};_.gh=function $id(a,b,c,d){return kid(this,a,b,d)};_.hh=function _id(a,b,c){var d;return d=BD(XKd(this.Tg(),b),66),d.Nj().Qj(this,this.yh(),b-this.Ah(),a,c)};_.ih=function ajd(a,b,c,d){return lid(this,a,b,d)};_.jh=function bjd(a,b,c){var d;return d=BD(XKd(this.Tg(),b),66),d.Nj().Rj(this,this.yh(),b-this.Ah(),a,c)};_.kh=function cjd(){return !!this.Pg()&&!!this.Pg().ek()};_.lh=function djd(a){return mid(this,a)};_.mh=function ejd(a){return nid(this,a)};_.oh=function gjd(a){return rid(this,a)};_.ph=function hjd(){throw vbb(new bgb)};_.qh=function ijd(){return !this.Pg()?null:this.Pg().ek()};_.rh=function jjd(){return jid(this)};_.sh=function kjd(a,b){yid(this,a,b)};_.th=function ljd(a){this.ph().hk(a)};_.uh=function mjd(a){this.ph().kk(a)};_.vh=function njd(a){this.ph().jk(a)};_.wh=function ojd(a,b){var c,d,e,f;f=this.Zg();if(!!f&&!!a){b=Txd(f.Vk(),this,b);f.Zk(this)}d=this.eh();if(d){if((Nid(this,this.eh(),this.Vg()).Bb&Tje)!=0){e=d.fh();!!e&&(!a?e.Yk(this):!f&&e.Zk(this))}else{b=(c=this.Vg(),c>=0?this.Qg(b):this.eh().ih(this,-1-c,null,b));b=this.Sg(null,-1,b)}}this.uh(a);return b};_.xh=function pjd(a){var b,c,d,e,f,g,h,i;c=this.Tg();f=bLd(c,a);b=this.Ah();if(f>=b){return BD(a,66).Nj().Uj(this,this.yh(),f-b)}else if(f<=-1){g=e1d((O6d(),M6d),c,a);if(g){Q6d();BD(g,66).Oj()||(g=_1d(q1d(M6d,g)));e=(d=this.Yg(g),BD(d>=0?this._g(d,true,true):sid(this,g,true),153));i=g.Zj();if(i>1||i==-1){return BD(BD(e,215).hl(a,false),76)}}else{throw vbb(new Wdb(ite+a.ne()+lte))}}else if(a.$j()){return d=this.Yg(a),BD(d>=0?this._g(d,false,true):sid(this,a,false),76)}h=new nGd(this,a);return h};_.yh=function qjd(){return Aid(this)};_.zh=function rjd(){return (NFd(),MFd).S};_.Ah=function sjd(){return aLd(this.zh())};_.Bh=function tjd(a){Cid(this,a)};_.Ib=function ujd(){return Eid(this)};var B5=mdb(qte,'BasicEObjectImpl',97);var zFd;bcb(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1});_.Ch=function Djd(a){var b;b=xjd(this);return b[a]};_.Dh=function Ejd(a,b){var c;c=xjd(this);NC(c,a,b)};_.Eh=function Fjd(a){var b;b=xjd(this);NC(b,a,null)};_.Jg=function Gjd(){return BD(Ajd(this,4),126)};_.Kg=function Hjd(){throw vbb(new bgb)};_.Lg=function Ijd(){return (this.Db&4)!=0};_.Pg=function Jjd(){throw vbb(new bgb)};_.Fh=function Kjd(a){Cjd(this,2,a)};_.Rg=function Ljd(a,b){this.Db=b<<16|this.Db&255;this.Fh(a)};_.Tg=function Mjd(){return wjd(this)};_.Vg=function Njd(){return this.Db>>16};_.Wg=function Ojd(){var a,b;return nRd(),b=pNd(TKd((a=BD(Ajd(this,16),26),!a?this.zh():a))),b==null?(null,mRd):new qRd(this,b)};_.Mg=function Pjd(){return (this.Db&1)==0};_.Zg=function Qjd(){return BD(Ajd(this,128),1935)};_.$g=function Rjd(){return BD(Ajd(this,16),26)};_.dh=function Sjd(){return (this.Db&32)!=0};_.eh=function Tjd(){return BD(Ajd(this,2),49)};_.kh=function Ujd(){return (this.Db&64)!=0};_.ph=function Vjd(){throw vbb(new bgb)};_.qh=function Wjd(){return BD(Ajd(this,64),281)};_.th=function Xjd(a){Cjd(this,16,a)};_.uh=function Yjd(a){Cjd(this,128,a)};_.vh=function Zjd(a){Cjd(this,64,a)};_.yh=function $jd(){return yjd(this)};_.Db=0;var s8=mdb(qte,'MinimalEObjectImpl',114);bcb(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1});_.Fh=function _jd(a){this.Cb=a};_.eh=function akd(){return this.Cb};var r8=mdb(qte,'MinimalEObjectImpl/Container',115);bcb(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1});_._g=function kkd(a,b,c){return bkd(this,a,b,c)};_.jh=function lkd(a,b,c){return ckd(this,a,b,c)};_.lh=function mkd(a){return dkd(this,a)};_.sh=function nkd(a,b){ekd(this,a,b)};_.zh=function okd(){return Thd(),Shd};_.Bh=function pkd(a){fkd(this,a)};_.Ve=function qkd(){return gkd(this)};_.We=function rkd(a){return hkd(this,a)};_.Xe=function skd(a){return ikd(this,a)};_.Ye=function tkd(a,b){return jkd(this,a,b)};var H2=mdb(rte,'EMapPropertyHolderImpl',1985);bcb(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},xkd);_._g=function ykd(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return fid(this,a,b,c)};_.lh=function zkd(a){switch(a){case 0:return this.a!=0;case 1:return this.b!=0;}return mid(this,a)};_.sh=function Akd(a,b){switch(a){case 0:vkd(this,Edb(ED(b)));return;case 1:wkd(this,Edb(ED(b)));return;}yid(this,a,b)};_.zh=function Bkd(){return Thd(),Ihd};_.Bh=function Ckd(a){switch(a){case 0:vkd(this,0);return;case 1:wkd(this,0);return;}Cid(this,a)};_.Ib=function Dkd(){var a;if((this.Db&64)!=0)return Eid(this);a=new Jfb(Eid(this));a.a+=' (x: ';Bfb(a,this.a);a.a+=', y: ';Bfb(a,this.b);a.a+=')';return a.a};_.a=0;_.b=0;var I2=mdb(rte,'ElkBendPointImpl',567);bcb(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1});_._g=function Nkd(a,b,c){return Ekd(this,a,b,c)};_.hh=function Okd(a,b,c){return Fkd(this,a,b,c)};_.jh=function Pkd(a,b,c){return Gkd(this,a,b,c)};_.lh=function Qkd(a){return Hkd(this,a)};_.sh=function Rkd(a,b){Ikd(this,a,b)};_.zh=function Skd(){return Thd(),Mhd};_.Bh=function Tkd(a){Jkd(this,a)};_.zg=function Ukd(){return this.k};_.Ag=function Vkd(){return Kkd(this)};_.Ib=function Wkd(){return Mkd(this)};_.k=null;var M2=mdb(rte,'ElkGraphElementImpl',723);bcb(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1});_._g=function gld(a,b,c){return Xkd(this,a,b,c)};_.lh=function hld(a){return Ykd(this,a)};_.sh=function ild(a,b){Zkd(this,a,b)};_.zh=function jld(){return Thd(),Rhd};_.Bh=function kld(a){$kd(this,a)};_.Bg=function lld(){return this.f};_.Cg=function mld(){return this.g};_.Dg=function nld(){return this.i};_.Eg=function old(){return this.j};_.Fg=function pld(a,b){_kd(this,a,b)};_.Gg=function qld(a,b){bld(this,a,b)};_.Hg=function rld(a){dld(this,a)};_.Ig=function sld(a){eld(this,a)};_.Ib=function tld(){return fld(this)};_.f=0;_.g=0;_.i=0;_.j=0;var T2=mdb(rte,'ElkShapeImpl',724);bcb(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1});_._g=function Bld(a,b,c){return uld(this,a,b,c)};_.hh=function Cld(a,b,c){return vld(this,a,b,c)};_.jh=function Dld(a,b,c){return wld(this,a,b,c)};_.lh=function Eld(a){return xld(this,a)};_.sh=function Fld(a,b){yld(this,a,b)};_.zh=function Gld(){return Thd(),Jhd};_.Bh=function Hld(a){zld(this,a)};_.xg=function Ild(){return !this.d&&(this.d=new y5d(B2,this,8,5)),this.d};_.yg=function Jld(){return !this.e&&(this.e=new y5d(B2,this,7,4)),this.e};var J2=mdb(rte,'ElkConnectableShapeImpl',725);bcb(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},Tld);_.Qg=function Uld(a){return Lld(this,a)};_._g=function Vld(a,b,c){switch(a){case 3:return Mld(this);case 4:return !this.b&&(this.b=new y5d(z2,this,4,7)),this.b;case 5:return !this.c&&(this.c=new y5d(z2,this,5,8)),this.c;case 6:return !this.a&&(this.a=new cUd(A2,this,6,6)),this.a;case 7:return Bcb(),!this.b&&(this.b=new y5d(z2,this,4,7)),this.b.i<=1&&(!this.c&&(this.c=new y5d(z2,this,5,8)),this.c.i<=1)?false:true;case 8:return Bcb(),Pld(this)?true:false;case 9:return Bcb(),Qld(this)?true:false;case 10:return Bcb(),!this.b&&(this.b=new y5d(z2,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new y5d(z2,this,5,8)),this.c.i!=0)?true:false;}return Ekd(this,a,b,c)};_.hh=function Wld(a,b,c){var d;switch(b){case 3:!!this.Cb&&(c=(d=this.Db>>16,d>=0?Lld(this,c):this.Cb.ih(this,-1-d,null,c)));return Kld(this,BD(a,33),c);case 4:return !this.b&&(this.b=new y5d(z2,this,4,7)),Sxd(this.b,a,c);case 5:return !this.c&&(this.c=new y5d(z2,this,5,8)),Sxd(this.c,a,c);case 6:return !this.a&&(this.a=new cUd(A2,this,6,6)),Sxd(this.a,a,c);}return Fkd(this,a,b,c)};_.jh=function Xld(a,b,c){switch(b){case 3:return Kld(this,null,c);case 4:return !this.b&&(this.b=new y5d(z2,this,4,7)),Txd(this.b,a,c);case 5:return !this.c&&(this.c=new y5d(z2,this,5,8)),Txd(this.c,a,c);case 6:return !this.a&&(this.a=new cUd(A2,this,6,6)),Txd(this.a,a,c);}return Gkd(this,a,b,c)};_.lh=function Yld(a){switch(a){case 3:return !!Mld(this);case 4:return !!this.b&&this.b.i!=0;case 5:return !!this.c&&this.c.i!=0;case 6:return !!this.a&&this.a.i!=0;case 7:return !this.b&&(this.b=new y5d(z2,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new y5d(z2,this,5,8)),this.c.i<=1));case 8:return Pld(this);case 9:return Qld(this);case 10:return !this.b&&(this.b=new y5d(z2,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new y5d(z2,this,5,8)),this.c.i!=0);}return Hkd(this,a)};_.sh=function Zld(a,b){switch(a){case 3:Rld(this,BD(b,33));return;case 4:!this.b&&(this.b=new y5d(z2,this,4,7));Uxd(this.b);!this.b&&(this.b=new y5d(z2,this,4,7));ytd(this.b,BD(b,14));return;case 5:!this.c&&(this.c=new y5d(z2,this,5,8));Uxd(this.c);!this.c&&(this.c=new y5d(z2,this,5,8));ytd(this.c,BD(b,14));return;case 6:!this.a&&(this.a=new cUd(A2,this,6,6));Uxd(this.a);!this.a&&(this.a=new cUd(A2,this,6,6));ytd(this.a,BD(b,14));return;}Ikd(this,a,b)};_.zh=function $ld(){return Thd(),Khd};_.Bh=function _ld(a){switch(a){case 3:Rld(this,null);return;case 4:!this.b&&(this.b=new y5d(z2,this,4,7));Uxd(this.b);return;case 5:!this.c&&(this.c=new y5d(z2,this,5,8));Uxd(this.c);return;case 6:!this.a&&(this.a=new cUd(A2,this,6,6));Uxd(this.a);return;}Jkd(this,a)};_.Ib=function amd(){return Sld(this)};var K2=mdb(rte,'ElkEdgeImpl',352);bcb(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},rmd);_.Qg=function smd(a){return cmd(this,a)};_._g=function tmd(a,b,c){switch(a){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return !this.a&&(this.a=new xMd(y2,this,5)),this.a;case 6:return fmd(this);case 7:if(b)return emd(this);return this.i;case 8:if(b)return dmd(this);return this.f;case 9:return !this.g&&(this.g=new y5d(A2,this,9,10)),this.g;case 10:return !this.e&&(this.e=new y5d(A2,this,10,9)),this.e;case 11:return this.d;}return bkd(this,a,b,c)};_.hh=function umd(a,b,c){var d,e,f;switch(b){case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?cmd(this,c):this.Cb.ih(this,-1-e,null,c)));return bmd(this,BD(a,79),c);case 9:return !this.g&&(this.g=new y5d(A2,this,9,10)),Sxd(this.g,a,c);case 10:return !this.e&&(this.e=new y5d(A2,this,10,9)),Sxd(this.e,a,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(Thd(),Lhd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((Thd(),Lhd)),a,c)};_.jh=function vmd(a,b,c){switch(b){case 5:return !this.a&&(this.a=new xMd(y2,this,5)),Txd(this.a,a,c);case 6:return bmd(this,null,c);case 9:return !this.g&&(this.g=new y5d(A2,this,9,10)),Txd(this.g,a,c);case 10:return !this.e&&(this.e=new y5d(A2,this,10,9)),Txd(this.e,a,c);}return ckd(this,a,b,c)};_.lh=function wmd(a){switch(a){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return !!this.a&&this.a.i!=0;case 6:return !!fmd(this);case 7:return !!this.i;case 8:return !!this.f;case 9:return !!this.g&&this.g.i!=0;case 10:return !!this.e&&this.e.i!=0;case 11:return this.d!=null;}return dkd(this,a)};_.sh=function xmd(a,b){switch(a){case 1:omd(this,Edb(ED(b)));return;case 2:pmd(this,Edb(ED(b)));return;case 3:hmd(this,Edb(ED(b)));return;case 4:imd(this,Edb(ED(b)));return;case 5:!this.a&&(this.a=new xMd(y2,this,5));Uxd(this.a);!this.a&&(this.a=new xMd(y2,this,5));ytd(this.a,BD(b,14));return;case 6:mmd(this,BD(b,79));return;case 7:lmd(this,BD(b,82));return;case 8:kmd(this,BD(b,82));return;case 9:!this.g&&(this.g=new y5d(A2,this,9,10));Uxd(this.g);!this.g&&(this.g=new y5d(A2,this,9,10));ytd(this.g,BD(b,14));return;case 10:!this.e&&(this.e=new y5d(A2,this,10,9));Uxd(this.e);!this.e&&(this.e=new y5d(A2,this,10,9));ytd(this.e,BD(b,14));return;case 11:jmd(this,GD(b));return;}ekd(this,a,b)};_.zh=function ymd(){return Thd(),Lhd};_.Bh=function zmd(a){switch(a){case 1:omd(this,0);return;case 2:pmd(this,0);return;case 3:hmd(this,0);return;case 4:imd(this,0);return;case 5:!this.a&&(this.a=new xMd(y2,this,5));Uxd(this.a);return;case 6:mmd(this,null);return;case 7:lmd(this,null);return;case 8:kmd(this,null);return;case 9:!this.g&&(this.g=new y5d(A2,this,9,10));Uxd(this.g);return;case 10:!this.e&&(this.e=new y5d(A2,this,10,9));Uxd(this.e);return;case 11:jmd(this,null);return;}fkd(this,a)};_.Ib=function Amd(){return qmd(this)};_.b=0;_.c=0;_.d=null;_.j=0;_.k=0;var L2=mdb(rte,'ElkEdgeSectionImpl',439);bcb(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1});_._g=function Emd(a,b,c){var d;if(a==0){return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab}return bid(this,a-aLd(this.zh()),XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),a),b,c)};_.hh=function Fmd(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c)}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),e.Nj().Qj(this,yjd(this),b-aLd(this.zh()),a,c)};_.jh=function Gmd(a,b,c){var d,e;if(b==0){return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c)}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),e.Nj().Rj(this,yjd(this),b-aLd(this.zh()),a,c)};_.lh=function Hmd(a){var b;if(a==0){return !!this.Ab&&this.Ab.i!=0}return cid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.oh=function Imd(a){return Bmd(this,a)};_.sh=function Jmd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;}did(this,a-aLd(this.zh()),XKd((c=BD(Ajd(this,16),26),!c?this.zh():c),a),b)};_.uh=function Kmd(a){Cjd(this,128,a)};_.zh=function Lmd(){return jGd(),ZFd};_.Bh=function Mmd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;}eid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.Gh=function Nmd(){this.Bb|=1};_.Hh=function Omd(a){return Dmd(this,a)};_.Bb=0;var f6=mdb(qte,'EModelElementImpl',150);bcb(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},$md);_.Ih=function _md(a,b){return Vmd(this,a,b)};_.Jh=function and(a){var b,c,d,e,f;if(this.a!=bKd(a)||(a.Bb&256)!=0){throw vbb(new Wdb(xte+a.zb+ute))}for(d=_Kd(a);VKd(d.a).i!=0;){c=BD(nOd(d,0,(b=BD(qud(VKd(d.a),0),87),f=b.c,JD(f,88)?BD(f,26):(jGd(),_Fd))),26);if(dKd(c)){e=bKd(c).Nh().Jh(c);BD(e,49).th(a);return e}d=_Kd(c)}return (a.D!=null?a.D:a.B)=='java.util.Map$Entry'?new lHd(a):new _Gd(a)};_.Kh=function bnd(a,b){return Wmd(this,a,b)};_._g=function cnd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.a;}return bid(this,a-aLd((jGd(),WFd)),XKd((d=BD(Ajd(this,16),26),!d?WFd:d),a),b,c)};_.hh=function dnd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 1:!!this.a&&(c=BD(this.a,49).ih(this,4,o5,c));return Tmd(this,BD(a,235),c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),WFd):d),b),66),e.Nj().Qj(this,yjd(this),b-aLd((jGd(),WFd)),a,c)};_.jh=function end(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 1:return Tmd(this,null,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),WFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),WFd)),a,c)};_.lh=function fnd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return !!this.a;}return cid(this,a-aLd((jGd(),WFd)),XKd((b=BD(Ajd(this,16),26),!b?WFd:b),a))};_.sh=function gnd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:Ymd(this,BD(b,235));return;}did(this,a-aLd((jGd(),WFd)),XKd((c=BD(Ajd(this,16),26),!c?WFd:c),a),b)};_.zh=function hnd(){return jGd(),WFd};_.Bh=function ind(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:Ymd(this,null);return;}eid(this,a-aLd((jGd(),WFd)),XKd((b=BD(Ajd(this,16),26),!b?WFd:b),a))};var Pmd,Qmd,Rmd;var d6=mdb(qte,'EFactoryImpl',704);bcb(zte,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},knd);_.Ih=function lnd(a,b){switch(a.yj()){case 12:return BD(b,146).tg();case 13:return fcb(b);default:throw vbb(new Wdb(tte+a.ne()+ute));}};_.Jh=function mnd(a){var b,c,d,e,f,g,h,i;switch(a.G==-1&&(a.G=(b=bKd(a),b?HLd(b.Mh(),a):-1)),a.G){case 4:return f=new Jod,f;case 6:return g=new apd,g;case 7:return h=new ppd,h;case 8:return d=new Tld,d;case 9:return c=new xkd,c;case 10:return e=new rmd,e;case 11:return i=new Bpd,i;default:throw vbb(new Wdb(xte+a.zb+ute));}};_.Kh=function nnd(a,b){switch(a.yj()){case 13:case 12:return null;default:throw vbb(new Wdb(tte+a.ne()+ute));}};var N2=mdb(rte,'ElkGraphFactoryImpl',zte);bcb(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1});_.Wg=function rnd(){var a,b;b=(a=BD(Ajd(this,16),26),pNd(TKd(!a?this.zh():a)));return b==null?(nRd(),nRd(),mRd):new GRd(this,b)};_._g=function snd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.ne();}return bid(this,a-aLd(this.zh()),XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),a),b,c)};_.lh=function tnd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;}return cid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.sh=function und(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:this.Lh(GD(b));return;}did(this,a-aLd(this.zh()),XKd((c=BD(Ajd(this,16),26),!c?this.zh():c),a),b)};_.zh=function vnd(){return jGd(),$Fd};_.Bh=function wnd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:this.Lh(null);return;}eid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.ne=function xnd(){return this.zb};_.Lh=function ynd(a){pnd(this,a)};_.Ib=function znd(){return qnd(this)};_.zb=null;var j6=mdb(qte,'ENamedElementImpl',438);bcb(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},eod);_.Qg=function god(a){return Snd(this,a)};_._g=function hod(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return !this.rb&&(this.rb=new jUd(this,d5,this)),this.rb;case 6:return !this.vb&&(this.vb=new gUd(o5,this,6,7)),this.vb;case 7:if(b)return this.Db>>16==7?BD(this.Cb,235):null;return Ind(this);}return bid(this,a-aLd((jGd(),cGd)),XKd((d=BD(Ajd(this,16),26),!d?cGd:d),a),b,c)};_.hh=function iod(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 4:!!this.sb&&(c=BD(this.sb,49).ih(this,1,i5,c));return Jnd(this,BD(a,471),c);case 5:return !this.rb&&(this.rb=new jUd(this,d5,this)),Sxd(this.rb,a,c);case 6:return !this.vb&&(this.vb=new gUd(o5,this,6,7)),Sxd(this.vb,a,c);case 7:!!this.Cb&&(c=(e=this.Db>>16,e>=0?Snd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,7,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),cGd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),cGd)),a,c)};_.jh=function jod(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 4:return Jnd(this,null,c);case 5:return !this.rb&&(this.rb=new jUd(this,d5,this)),Txd(this.rb,a,c);case 6:return !this.vb&&(this.vb=new gUd(o5,this,6,7)),Txd(this.vb,a,c);case 7:return _hd(this,null,7,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),cGd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),cGd)),a,c)};_.lh=function kod(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return !!this.sb;case 5:return !!this.rb&&this.rb.i!=0;case 6:return !!this.vb&&this.vb.i!=0;case 7:return !!Ind(this);}return cid(this,a-aLd((jGd(),cGd)),XKd((b=BD(Ajd(this,16),26),!b?cGd:b),a))};_.oh=function lod(a){var b;b=Und(this,a);return b?b:Bmd(this,a)};_.sh=function mod(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:pnd(this,GD(b));return;case 2:dod(this,GD(b));return;case 3:cod(this,GD(b));return;case 4:bod(this,BD(b,471));return;case 5:!this.rb&&(this.rb=new jUd(this,d5,this));Uxd(this.rb);!this.rb&&(this.rb=new jUd(this,d5,this));ytd(this.rb,BD(b,14));return;case 6:!this.vb&&(this.vb=new gUd(o5,this,6,7));Uxd(this.vb);!this.vb&&(this.vb=new gUd(o5,this,6,7));ytd(this.vb,BD(b,14));return;}did(this,a-aLd((jGd(),cGd)),XKd((c=BD(Ajd(this,16),26),!c?cGd:c),a),b)};_.vh=function nod(a){var b,c;if(!!a&&!!this.rb){for(c=new Fyd(this.rb);c.e!=c.i.gc();){b=Dyd(c);JD(b,351)&&(BD(b,351).w=null)}}Cjd(this,64,a)};_.zh=function ood(){return jGd(),cGd};_.Bh=function pod(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:pnd(this,null);return;case 2:dod(this,null);return;case 3:cod(this,null);return;case 4:bod(this,null);return;case 5:!this.rb&&(this.rb=new jUd(this,d5,this));Uxd(this.rb);return;case 6:!this.vb&&(this.vb=new gUd(o5,this,6,7));Uxd(this.vb);return;}eid(this,a-aLd((jGd(),cGd)),XKd((b=BD(Ajd(this,16),26),!b?cGd:b),a))};_.Gh=function qod(){Tnd(this)};_.Mh=function rod(){return !this.rb&&(this.rb=new jUd(this,d5,this)),this.rb};_.Nh=function sod(){return this.sb};_.Oh=function tod(){return this.ub};_.Ph=function uod(){return this.xb};_.Qh=function vod(){return this.yb};_.Rh=function wod(a){this.ub=a};_.Ib=function xod(){var a;if((this.Db&64)!=0)return qnd(this);a=new Jfb(qnd(this));a.a+=' (nsURI: ';Efb(a,this.yb);a.a+=', nsPrefix: ';Efb(a,this.xb);a.a+=')';return a.a};_.xb=null;_.yb=null;var And;var t6=mdb(qte,'EPackageImpl',179);bcb(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},Bod);_.q=false;_.r=false;var yod=false;var O2=mdb(rte,'ElkGraphPackageImpl',555);bcb(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},Jod);_.Qg=function Kod(a){return Eod(this,a)};_._g=function Lod(a,b,c){switch(a){case 7:return Fod(this);case 8:return this.a;}return Xkd(this,a,b,c)};_.hh=function Mod(a,b,c){var d;switch(b){case 7:!!this.Cb&&(c=(d=this.Db>>16,d>=0?Eod(this,c):this.Cb.ih(this,-1-d,null,c)));return Dod(this,BD(a,160),c);}return Fkd(this,a,b,c)};_.jh=function Nod(a,b,c){if(b==7){return Dod(this,null,c)}return Gkd(this,a,b,c)};_.lh=function Ood(a){switch(a){case 7:return !!Fod(this);case 8:return !dfb('',this.a);}return Ykd(this,a)};_.sh=function Pod(a,b){switch(a){case 7:God(this,BD(b,160));return;case 8:Hod(this,GD(b));return;}Zkd(this,a,b)};_.zh=function Qod(){return Thd(),Nhd};_.Bh=function Rod(a){switch(a){case 7:God(this,null);return;case 8:Hod(this,'');return;}$kd(this,a)};_.Ib=function Sod(){return Iod(this)};_.a='';var P2=mdb(rte,'ElkLabelImpl',354);bcb(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},apd);_.Qg=function bpd(a){return Uod(this,a)};_._g=function cpd(a,b,c){switch(a){case 9:return !this.c&&(this.c=new cUd(F2,this,9,9)),this.c;case 10:return !this.a&&(this.a=new cUd(E2,this,10,11)),this.a;case 11:return Xod(this);case 12:return !this.b&&(this.b=new cUd(B2,this,12,3)),this.b;case 13:return Bcb(),!this.a&&(this.a=new cUd(E2,this,10,11)),this.a.i>0?true:false;}return uld(this,a,b,c)};_.hh=function dpd(a,b,c){var d;switch(b){case 9:return !this.c&&(this.c=new cUd(F2,this,9,9)),Sxd(this.c,a,c);case 10:return !this.a&&(this.a=new cUd(E2,this,10,11)),Sxd(this.a,a,c);case 11:!!this.Cb&&(c=(d=this.Db>>16,d>=0?Uod(this,c):this.Cb.ih(this,-1-d,null,c)));return Tod(this,BD(a,33),c);case 12:return !this.b&&(this.b=new cUd(B2,this,12,3)),Sxd(this.b,a,c);}return vld(this,a,b,c)};_.jh=function epd(a,b,c){switch(b){case 9:return !this.c&&(this.c=new cUd(F2,this,9,9)),Txd(this.c,a,c);case 10:return !this.a&&(this.a=new cUd(E2,this,10,11)),Txd(this.a,a,c);case 11:return Tod(this,null,c);case 12:return !this.b&&(this.b=new cUd(B2,this,12,3)),Txd(this.b,a,c);}return wld(this,a,b,c)};_.lh=function fpd(a){switch(a){case 9:return !!this.c&&this.c.i!=0;case 10:return !!this.a&&this.a.i!=0;case 11:return !!Xod(this);case 12:return !!this.b&&this.b.i!=0;case 13:return !this.a&&(this.a=new cUd(E2,this,10,11)),this.a.i>0;}return xld(this,a)};_.sh=function gpd(a,b){switch(a){case 9:!this.c&&(this.c=new cUd(F2,this,9,9));Uxd(this.c);!this.c&&(this.c=new cUd(F2,this,9,9));ytd(this.c,BD(b,14));return;case 10:!this.a&&(this.a=new cUd(E2,this,10,11));Uxd(this.a);!this.a&&(this.a=new cUd(E2,this,10,11));ytd(this.a,BD(b,14));return;case 11:$od(this,BD(b,33));return;case 12:!this.b&&(this.b=new cUd(B2,this,12,3));Uxd(this.b);!this.b&&(this.b=new cUd(B2,this,12,3));ytd(this.b,BD(b,14));return;}yld(this,a,b)};_.zh=function hpd(){return Thd(),Ohd};_.Bh=function ipd(a){switch(a){case 9:!this.c&&(this.c=new cUd(F2,this,9,9));Uxd(this.c);return;case 10:!this.a&&(this.a=new cUd(E2,this,10,11));Uxd(this.a);return;case 11:$od(this,null);return;case 12:!this.b&&(this.b=new cUd(B2,this,12,3));Uxd(this.b);return;}zld(this,a)};_.Ib=function jpd(){return _od(this)};var Q2=mdb(rte,'ElkNodeImpl',239);bcb(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ppd);_.Qg=function qpd(a){return lpd(this,a)};_._g=function rpd(a,b,c){if(a==9){return mpd(this)}return uld(this,a,b,c)};_.hh=function spd(a,b,c){var d;switch(b){case 9:!!this.Cb&&(c=(d=this.Db>>16,d>=0?lpd(this,c):this.Cb.ih(this,-1-d,null,c)));return kpd(this,BD(a,33),c);}return vld(this,a,b,c)};_.jh=function tpd(a,b,c){if(b==9){return kpd(this,null,c)}return wld(this,a,b,c)};_.lh=function upd(a){if(a==9){return !!mpd(this)}return xld(this,a)};_.sh=function vpd(a,b){switch(a){case 9:npd(this,BD(b,33));return;}yld(this,a,b)};_.zh=function wpd(){return Thd(),Phd};_.Bh=function xpd(a){switch(a){case 9:npd(this,null);return;}zld(this,a)};_.Ib=function ypd(){return opd(this)};var R2=mdb(rte,'ElkPortImpl',186);var J4=odb(Tte,'BasicEMap/Entry');bcb(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},Bpd);_.Fb=function Hpd(a){return this===a};_.cd=function Jpd(){return this.b};_.Hb=function Lpd(){return FCb(this)};_.Uh=function Npd(a){zpd(this,BD(a,146))};_._g=function Cpd(a,b,c){switch(a){case 0:return this.b;case 1:return this.c;}return fid(this,a,b,c)};_.lh=function Dpd(a){switch(a){case 0:return !!this.b;case 1:return this.c!=null;}return mid(this,a)};_.sh=function Epd(a,b){switch(a){case 0:zpd(this,BD(b,146));return;case 1:Apd(this,b);return;}yid(this,a,b)};_.zh=function Fpd(){return Thd(),Qhd};_.Bh=function Gpd(a){switch(a){case 0:zpd(this,null);return;case 1:Apd(this,null);return;}Cid(this,a)};_.Sh=function Ipd(){var a;if(this.a==-1){a=this.b;this.a=!a?0:tb(a)}return this.a};_.dd=function Kpd(){return this.c};_.Th=function Mpd(a){this.a=a};_.ed=function Opd(a){var b;b=this.c;Apd(this,a);return b};_.Ib=function Ppd(){var a;if((this.Db&64)!=0)return Eid(this);a=new Ufb;Qfb(Qfb(Qfb(a,this.b?this.b.tg():Xhe),gne),xfb(this.c));return a.a};_.a=-1;_.c=null;var S2=mdb(rte,'ElkPropertyToValueMapEntryImpl',1092);bcb(984,1,{},bqd);var U2=mdb(Wte,'JsonAdapter',984);bcb(210,60,Tie,cqd);var V2=mdb(Wte,'JsonImportException',210);bcb(857,1,{},ird);var J3=mdb(Wte,'JsonImporter',857);bcb(891,1,{},jrd);var W2=mdb(Wte,'JsonImporter/lambda$0$Type',891);bcb(892,1,{},krd);var X2=mdb(Wte,'JsonImporter/lambda$1$Type',892);bcb(900,1,{},lrd);var Y2=mdb(Wte,'JsonImporter/lambda$10$Type',900);bcb(902,1,{},mrd);var Z2=mdb(Wte,'JsonImporter/lambda$11$Type',902);bcb(903,1,{},nrd);var $2=mdb(Wte,'JsonImporter/lambda$12$Type',903);bcb(909,1,{},ord);var _2=mdb(Wte,'JsonImporter/lambda$13$Type',909);bcb(908,1,{},prd);var a3=mdb(Wte,'JsonImporter/lambda$14$Type',908);bcb(904,1,{},qrd);var b3=mdb(Wte,'JsonImporter/lambda$15$Type',904);bcb(905,1,{},rrd);var c3=mdb(Wte,'JsonImporter/lambda$16$Type',905);bcb(906,1,{},srd);var d3=mdb(Wte,'JsonImporter/lambda$17$Type',906);bcb(907,1,{},trd);var e3=mdb(Wte,'JsonImporter/lambda$18$Type',907);bcb(912,1,{},urd);var f3=mdb(Wte,'JsonImporter/lambda$19$Type',912);bcb(893,1,{},vrd);var g3=mdb(Wte,'JsonImporter/lambda$2$Type',893);bcb(910,1,{},wrd);var h3=mdb(Wte,'JsonImporter/lambda$20$Type',910);bcb(911,1,{},xrd);var i3=mdb(Wte,'JsonImporter/lambda$21$Type',911);bcb(915,1,{},yrd);var j3=mdb(Wte,'JsonImporter/lambda$22$Type',915);bcb(913,1,{},zrd);var k3=mdb(Wte,'JsonImporter/lambda$23$Type',913);bcb(914,1,{},Ard);var l3=mdb(Wte,'JsonImporter/lambda$24$Type',914);bcb(917,1,{},Brd);var m3=mdb(Wte,'JsonImporter/lambda$25$Type',917);bcb(916,1,{},Crd);var n3=mdb(Wte,'JsonImporter/lambda$26$Type',916);bcb(918,1,qie,Drd);_.td=function Erd(a){Bqd(this.b,this.a,GD(a))};var o3=mdb(Wte,'JsonImporter/lambda$27$Type',918);bcb(919,1,qie,Frd);_.td=function Grd(a){Cqd(this.b,this.a,GD(a))};var p3=mdb(Wte,'JsonImporter/lambda$28$Type',919);bcb(920,1,{},Hrd);var q3=mdb(Wte,'JsonImporter/lambda$29$Type',920);bcb(896,1,{},Ird);var r3=mdb(Wte,'JsonImporter/lambda$3$Type',896);bcb(921,1,{},Jrd);var s3=mdb(Wte,'JsonImporter/lambda$30$Type',921);bcb(922,1,{},Krd);var t3=mdb(Wte,'JsonImporter/lambda$31$Type',922);bcb(923,1,{},Lrd);var u3=mdb(Wte,'JsonImporter/lambda$32$Type',923);bcb(924,1,{},Mrd);var v3=mdb(Wte,'JsonImporter/lambda$33$Type',924);bcb(925,1,{},Nrd);var w3=mdb(Wte,'JsonImporter/lambda$34$Type',925);bcb(859,1,{},Prd);var x3=mdb(Wte,'JsonImporter/lambda$35$Type',859);bcb(929,1,{},Rrd);var y3=mdb(Wte,'JsonImporter/lambda$36$Type',929);bcb(926,1,qie,Srd);_.td=function Trd(a){Lqd(this.a,BD(a,469))};var z3=mdb(Wte,'JsonImporter/lambda$37$Type',926);bcb(927,1,qie,Urd);_.td=function Vrd(a){Mqd(this.a,this.b,BD(a,202))};var A3=mdb(Wte,'JsonImporter/lambda$38$Type',927);bcb(928,1,qie,Wrd);_.td=function Xrd(a){Nqd(this.a,this.b,BD(a,202))};var B3=mdb(Wte,'JsonImporter/lambda$39$Type',928);bcb(894,1,{},Yrd);var C3=mdb(Wte,'JsonImporter/lambda$4$Type',894);bcb(930,1,qie,Zrd);_.td=function $rd(a){Oqd(this.a,BD(a,8))};var D3=mdb(Wte,'JsonImporter/lambda$40$Type',930);bcb(895,1,{},_rd);var E3=mdb(Wte,'JsonImporter/lambda$5$Type',895);bcb(899,1,{},asd);var F3=mdb(Wte,'JsonImporter/lambda$6$Type',899);bcb(897,1,{},bsd);var G3=mdb(Wte,'JsonImporter/lambda$7$Type',897);bcb(898,1,{},csd);var H3=mdb(Wte,'JsonImporter/lambda$8$Type',898);bcb(901,1,{},dsd);var I3=mdb(Wte,'JsonImporter/lambda$9$Type',901);bcb(948,1,qie,msd);_.td=function nsd(a){Qpd(this.a,new yC(GD(a)))};var K3=mdb(Wte,'JsonMetaDataConverter/lambda$0$Type',948);bcb(949,1,qie,osd);_.td=function psd(a){isd(this.a,BD(a,237))};var L3=mdb(Wte,'JsonMetaDataConverter/lambda$1$Type',949);bcb(950,1,qie,qsd);_.td=function rsd(a){jsd(this.a,BD(a,149))};var M3=mdb(Wte,'JsonMetaDataConverter/lambda$2$Type',950);bcb(951,1,qie,ssd);_.td=function tsd(a){ksd(this.a,BD(a,175))};var N3=mdb(Wte,'JsonMetaDataConverter/lambda$3$Type',951);bcb(237,22,{3:1,35:1,22:1,237:1},Dsd);var usd,vsd,wsd,xsd,ysd,zsd,Asd,Bsd;var O3=ndb(Hle,'GraphFeature',237,CI,Fsd,Esd);var Gsd;bcb(13,1,{35:1,146:1},Lsd,Msd,Nsd,Osd);_.wd=function Psd(a){return Isd(this,BD(a,146))};_.Fb=function Qsd(a){return Jsd(this,a)};_.wg=function Rsd(){return Ksd(this)};_.tg=function Ssd(){return this.b};_.Hb=function Tsd(){return LCb(this.b)};_.Ib=function Usd(){return this.b};var T3=mdb(Hle,'Property',13);bcb(818,1,Dke,Wsd);_.ue=function Xsd(a,b){return Vsd(this,BD(a,94),BD(b,94))};_.Fb=function Ysd(a){return this===a};_.ve=function Zsd(){return new tpb(this)};var S3=mdb(Hle,'PropertyHolderComparator',818);bcb(695,1,aie,qtd);_.Nb=function rtd(a){Rrb(this,a)};_.Pb=function ttd(){return ptd(this)};_.Qb=function utd(){Srb()};_.Ob=function std(){return !!this.a};var U3=mdb(jue,'ElkGraphUtil/AncestorIterator',695);var T4=odb(Tte,'EList');bcb(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1});_.Vc=function Jtd(a,b){vtd(this,a,b)};_.Fc=function Ktd(a){return wtd(this,a)};_.Wc=function Ltd(a,b){return xtd(this,a,b)};_.Gc=function Mtd(a){return ytd(this,a)};_.Zh=function Ntd(){return new $yd(this)};_.$h=function Otd(){return new bzd(this)};_._h=function Ptd(a){return ztd(this,a)};_.ai=function Qtd(){return true};_.bi=function Rtd(a,b){};_.ci=function Std(){};_.di=function Ttd(a,b){Atd(this,a,b)};_.ei=function Utd(a,b,c){};_.fi=function Vtd(a,b){};_.gi=function Wtd(a,b,c){};_.Fb=function Xtd(a){return Btd(this,a)};_.Hb=function Ytd(){return Etd(this)};_.hi=function Ztd(){return false};_.Kc=function $td(){return new Fyd(this)};_.Yc=function _td(){return new Oyd(this)};_.Zc=function aud(a){var b;b=this.gc();if(a<0||a>b)throw vbb(new Cyd(a,b));return new Pyd(this,a)};_.ji=function bud(a,b){this.ii(a,this.Xc(b))};_.Mc=function cud(a){return Ftd(this,a)};_.li=function dud(a,b){return b};_._c=function eud(a,b){return Gtd(this,a,b)};_.Ib=function fud(){return Htd(this)};_.ni=function gud(){return true};_.oi=function hud(a,b){return Itd(this,b)};var p4=mdb(Tte,'AbstractEList',67);bcb(63,67,oue,yud,zud,Aud);_.Vh=function Bud(a,b){return iud(this,a,b)};_.Wh=function Cud(a){return jud(this,a)};_.Xh=function Dud(a,b){kud(this,a,b)};_.Yh=function Eud(a){lud(this,a)};_.pi=function Fud(a){return nud(this,a)};_.$b=function Gud(){oud(this)};_.Hc=function Hud(a){return pud(this,a)};_.Xb=function Iud(a){return qud(this,a)};_.qi=function Jud(a){var b,c,d;++this.j;c=this.g==null?0:this.g.length;if(a>c){d=this.g;b=c+(c/2|0)+4;b=0){this.$c(b);return true}else{return false}};_.mi=function lwd(a,b){return this.Ui(a,this.oi(a,b))};_.gc=function mwd(){return this.Vi()};_.Pc=function nwd(){return this.Wi()};_.Qc=function owd(a){return this.Xi(a)};_.Ib=function pwd(){return this.Yi()};var M4=mdb(Tte,'DelegatingEList',1995);bcb(1996,1995,eve);_.Vh=function xwd(a,b){return qwd(this,a,b)};_.Wh=function ywd(a){return this.Vh(this.Vi(),a)};_.Xh=function zwd(a,b){rwd(this,a,b)};_.Yh=function Awd(a){swd(this,a)};_.ai=function Bwd(){return !this.bj()};_.$b=function Cwd(){vwd(this)};_.Zi=function Dwd(a,b,c,d,e){return new Cxd(this,a,b,c,d,e)};_.$i=function Ewd(a){Uhd(this.Ai(),a)};_._i=function Fwd(){return null};_.aj=function Gwd(){return -1};_.Ai=function Hwd(){return null};_.bj=function Iwd(){return false};_.cj=function Jwd(a,b){return b};_.dj=function Kwd(a,b){return b};_.ej=function Lwd(){return false};_.fj=function Mwd(){return !this.Ri()};_.ii=function Nwd(a,b){var c,d;if(this.ej()){d=this.fj();c=Dvd(this,a,b);this.$i(this.Zi(7,meb(b),c,a,d));return c}else{return Dvd(this,a,b)}};_.$c=function Owd(a){var b,c,d,e;if(this.ej()){c=null;d=this.fj();b=this.Zi(4,e=Evd(this,a),null,a,d);if(this.bj()&&!!e){c=this.dj(e,c);if(!c){this.$i(b)}else{c.Ei(b);c.Fi()}}else{if(!c){this.$i(b)}else{c.Ei(b);c.Fi()}}return e}else{e=Evd(this,a);if(this.bj()&&!!e){c=this.dj(e,null);!!c&&c.Fi()}return e}};_.mi=function Pwd(a,b){return wwd(this,a,b)};var d4=mdb(hte,'DelegatingNotifyingListImpl',1996);bcb(143,1,fve);_.Ei=function pxd(a){return Qwd(this,a)};_.Fi=function qxd(){Rwd(this)};_.xi=function rxd(){return this.d};_._i=function sxd(){return null};_.gj=function txd(){return null};_.yi=function uxd(a){return -1};_.zi=function vxd(){return $wd(this)};_.Ai=function wxd(){return null};_.Bi=function xxd(){return hxd(this)};_.Ci=function yxd(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o};_.hj=function zxd(){return false};_.Di=function Axd(a){var b,c,d,e,f,g,h,i,j,k,l;switch(this.d){case 1:case 2:{e=a.xi();switch(e){case 1:case 2:{f=a.Ai();if(PD(f)===PD(this.Ai())&&this.yi(null)==a.yi(null)){this.g=a.zi();a.xi()==1&&(this.d=1);return true}}}}case 4:{e=a.xi();switch(e){case 4:{f=a.Ai();if(PD(f)===PD(this.Ai())&&this.yi(null)==a.yi(null)){j=jxd(this);i=this.o<0?this.o<-2?-2-this.o-1:-1:this.o;g=a.Ci();this.d=6;l=new zud(2);if(i<=g){wtd(l,this.n);wtd(l,a.Bi());this.g=OC(GC(WD,1),oje,25,15,[this.o=i,g+1])}else{wtd(l,a.Bi());wtd(l,this.n);this.g=OC(GC(WD,1),oje,25,15,[this.o=g,i])}this.n=l;j||(this.o=-2-this.o-1);return true}break}}break}case 6:{e=a.xi();switch(e){case 4:{f=a.Ai();if(PD(f)===PD(this.Ai())&&this.yi(null)==a.yi(null)){j=jxd(this);g=a.Ci();k=BD(this.g,48);d=KC(WD,oje,25,k.length+1,15,1);b=0;while(b>>0,b.toString(16)));d.a+=' (eventType: ';switch(this.d){case 1:{d.a+='SET';break}case 2:{d.a+='UNSET';break}case 3:{d.a+='ADD';break}case 5:{d.a+='ADD_MANY';break}case 4:{d.a+='REMOVE';break}case 6:{d.a+='REMOVE_MANY';break}case 7:{d.a+='MOVE';break}case 8:{d.a+='REMOVING_ADAPTER';break}case 9:{d.a+='RESOLVE';break}default:{Cfb(d,this.d);break}}ixd(this)&&(d.a+=', touch: true',d);d.a+=', position: ';Cfb(d,this.o<0?this.o<-2?-2-this.o-1:-1:this.o);d.a+=', notifier: ';Dfb(d,this.Ai());d.a+=', feature: ';Dfb(d,this._i());d.a+=', oldValue: ';Dfb(d,hxd(this));d.a+=', newValue: ';if(this.d==6&&JD(this.g,48)){c=BD(this.g,48);d.a+='[';for(a=0;a10){if(!this.b||this.c.j!=this.a){this.b=new Vqb(this);this.a=this.j}return Rqb(this.b,a)}else{return pud(this,a)}};_.ni=function Byd(){return true};_.a=0;var j4=mdb(Tte,'AbstractEList/1',953);bcb(295,73,Mje,Cyd);var k4=mdb(Tte,'AbstractEList/BasicIndexOutOfBoundsException',295);bcb(40,1,aie,Fyd);_.Nb=function Iyd(a){Rrb(this,a)};_.mj=function Gyd(){if(this.i.j!=this.f){throw vbb(new Apb)}};_.nj=function Hyd(){return Dyd(this)};_.Ob=function Jyd(){return this.e!=this.i.gc()};_.Pb=function Kyd(){return this.nj()};_.Qb=function Lyd(){Eyd(this)};_.e=0;_.f=0;_.g=-1;var l4=mdb(Tte,'AbstractEList/EIterator',40);bcb(278,40,jie,Oyd,Pyd);_.Qb=function Xyd(){Eyd(this)};_.Rb=function Qyd(a){Myd(this,a)};_.oj=function Ryd(){var b;try{b=this.d.Xb(--this.e);this.mj();this.g=this.e;return b}catch(a){a=ubb(a);if(JD(a,73)){this.mj();throw vbb(new utb)}else throw vbb(a)}};_.pj=function Syd(a){Nyd(this,a)};_.Sb=function Tyd(){return this.e!=0};_.Tb=function Uyd(){return this.e};_.Ub=function Vyd(){return this.oj()};_.Vb=function Wyd(){return this.e-1};_.Wb=function Yyd(a){this.pj(a)};var m4=mdb(Tte,'AbstractEList/EListIterator',278);bcb(341,40,aie,$yd);_.nj=function _yd(){return Zyd(this)};_.Qb=function azd(){throw vbb(new bgb)};var n4=mdb(Tte,'AbstractEList/NonResolvingEIterator',341);bcb(385,278,jie,bzd,czd);_.Rb=function dzd(a){throw vbb(new bgb)};_.nj=function ezd(){var b;try{b=this.c.ki(this.e);this.mj();this.g=this.e++;return b}catch(a){a=ubb(a);if(JD(a,73)){this.mj();throw vbb(new utb)}else throw vbb(a)}};_.oj=function fzd(){var b;try{b=this.c.ki(--this.e);this.mj();this.g=this.e;return b}catch(a){a=ubb(a);if(JD(a,73)){this.mj();throw vbb(new utb)}else throw vbb(a)}};_.Qb=function gzd(){throw vbb(new bgb)};_.Wb=function hzd(a){throw vbb(new bgb)};var o4=mdb(Tte,'AbstractEList/NonResolvingEListIterator',385);bcb(1982,67,ive);_.Vh=function pzd(a,b){var c,d,e,f,g,h,i,j,k,l,m;e=b.gc();if(e!=0){j=BD(Ajd(this.a,4),126);k=j==null?0:j.length;m=k+e;d=nzd(this,m);l=k-a;l>0&&$fb(j,a,d,a+e,l);i=b.Kc();for(g=0;gc)throw vbb(new Cyd(a,c));return new Yzd(this,a)};_.$b=function wzd(){var a,b;++this.j;a=BD(Ajd(this.a,4),126);b=a==null?0:a.length;b0d(this,null);Atd(this,b,a)};_.Hc=function xzd(a){var b,c,d,e,f;b=BD(Ajd(this.a,4),126);if(b!=null){if(a!=null){for(d=b,e=0,f=d.length;e=c)throw vbb(new Cyd(a,c));return b[a]};_.Xc=function zzd(a){var b,c,d;b=BD(Ajd(this.a,4),126);if(b!=null){if(a!=null){for(c=0,d=b.length;cc)throw vbb(new Cyd(a,c));return new Qzd(this,a)};_.ii=function Ezd(a,b){var c,d,e;c=mzd(this);e=c==null?0:c.length;if(a>=e)throw vbb(new qcb(lue+a+mue+e));if(b>=e)throw vbb(new qcb(nue+b+mue+e));d=c[b];if(a!=b){a0&&$fb(a,0,b,0,c);return b};_.Qc=function Kzd(a){var b,c,d;b=BD(Ajd(this.a,4),126);d=b==null?0:b.length;if(d>0){if(a.lengthd&&NC(a,d,null);return a};var jzd;var v4=mdb(Tte,'ArrayDelegatingEList',1982);bcb(1038,40,aie,Lzd);_.mj=function Mzd(){if(this.b.j!=this.f||PD(BD(Ajd(this.b.a,4),126))!==PD(this.a)){throw vbb(new Apb)}};_.Qb=function Nzd(){Eyd(this);this.a=BD(Ajd(this.b.a,4),126)};var r4=mdb(Tte,'ArrayDelegatingEList/EIterator',1038);bcb(706,278,jie,Pzd,Qzd);_.mj=function Rzd(){if(this.b.j!=this.f||PD(BD(Ajd(this.b.a,4),126))!==PD(this.a)){throw vbb(new Apb)}};_.pj=function Szd(a){Nyd(this,a);this.a=BD(Ajd(this.b.a,4),126)};_.Qb=function Tzd(){Eyd(this);this.a=BD(Ajd(this.b.a,4),126)};var s4=mdb(Tte,'ArrayDelegatingEList/EListIterator',706);bcb(1039,341,aie,Uzd);_.mj=function Vzd(){if(this.b.j!=this.f||PD(BD(Ajd(this.b.a,4),126))!==PD(this.a)){throw vbb(new Apb)}};var t4=mdb(Tte,'ArrayDelegatingEList/NonResolvingEIterator',1039);bcb(707,385,jie,Xzd,Yzd);_.mj=function Zzd(){if(this.b.j!=this.f||PD(BD(Ajd(this.b.a,4),126))!==PD(this.a)){throw vbb(new Apb)}};var u4=mdb(Tte,'ArrayDelegatingEList/NonResolvingEListIterator',707);bcb(606,295,Mje,$zd);var w4=mdb(Tte,'BasicEList/BasicIndexOutOfBoundsException',606);bcb(696,63,oue,_zd);_.Vc=function aAd(a,b){throw vbb(new bgb)};_.Fc=function bAd(a){throw vbb(new bgb)};_.Wc=function cAd(a,b){throw vbb(new bgb)};_.Gc=function dAd(a){throw vbb(new bgb)};_.$b=function eAd(){throw vbb(new bgb)};_.qi=function fAd(a){throw vbb(new bgb)};_.Kc=function gAd(){return this.Zh()};_.Yc=function hAd(){return this.$h()};_.Zc=function iAd(a){return this._h(a)};_.ii=function jAd(a,b){throw vbb(new bgb)};_.ji=function kAd(a,b){throw vbb(new bgb)};_.$c=function lAd(a){throw vbb(new bgb)};_.Mc=function mAd(a){throw vbb(new bgb)};_._c=function nAd(a,b){throw vbb(new bgb)};var x4=mdb(Tte,'BasicEList/UnmodifiableEList',696);bcb(705,1,{3:1,20:1,14:1,15:1,58:1,589:1});_.Vc=function OAd(a,b){oAd(this,a,BD(b,42))};_.Fc=function PAd(a){return pAd(this,BD(a,42))};_.Jc=function XAd(a){reb(this,a)};_.Xb=function YAd(a){return BD(qud(this.c,a),133)};_.ii=function fBd(a,b){return BD(this.c.ii(a,b),42)};_.ji=function gBd(a,b){GAd(this,a,BD(b,42))};_.Lc=function jBd(){return new YAb(null,new Kub(this,16))};_.$c=function kBd(a){return BD(this.c.$c(a),42)};_._c=function mBd(a,b){return MAd(this,a,BD(b,42))};_.ad=function oBd(a){ktb(this,a)};_.Nc=function pBd(){return new Kub(this,16)};_.Oc=function qBd(){return new YAb(null,new Kub(this,16))};_.Wc=function QAd(a,b){return this.c.Wc(a,b)};_.Gc=function RAd(a){return this.c.Gc(a)};_.$b=function SAd(){this.c.$b()};_.Hc=function TAd(a){return this.c.Hc(a)};_.Ic=function UAd(a){return Be(this.c,a)};_.qj=function VAd(){var a,b,c;if(this.d==null){this.d=KC(y4,jve,63,2*this.f+1,0,1);c=this.e;this.f=0;for(b=this.c.Kc();b.e!=b.i.gc();){a=BD(b.nj(),133);uAd(this,a)}this.e=c}};_.Fb=function WAd(a){return zAd(this,a)};_.Hb=function ZAd(){return Etd(this.c)};_.Xc=function $Ad(a){return this.c.Xc(a)};_.rj=function _Ad(){this.c=new yBd(this)};_.dc=function aBd(){return this.f==0};_.Kc=function bBd(){return this.c.Kc()};_.Yc=function cBd(){return this.c.Yc()};_.Zc=function dBd(a){return this.c.Zc(a)};_.sj=function eBd(){return FAd(this)};_.tj=function hBd(a,b,c){return new zCd(a,b,c)};_.uj=function iBd(){return new EBd};_.Mc=function lBd(a){return JAd(this,a)};_.gc=function nBd(){return this.f};_.bd=function rBd(a,b){return new Jib(this.c,a,b)};_.Pc=function sBd(){return this.c.Pc()};_.Qc=function tBd(a){return this.c.Qc(a)};_.Ib=function uBd(){return Htd(this.c)};_.e=0;_.f=0;var L4=mdb(Tte,'BasicEMap',705);bcb(1033,63,oue,yBd);_.bi=function zBd(a,b){vBd(this,BD(b,133))};_.ei=function BBd(a,b,c){var d;++(d=this,BD(b,133),d).a.e};_.fi=function CBd(a,b){wBd(this,BD(b,133))};_.gi=function DBd(a,b,c){xBd(this,BD(b,133),BD(c,133))};_.di=function ABd(a,b){tAd(this.a)};var z4=mdb(Tte,'BasicEMap/1',1033);bcb(1034,63,oue,EBd);_.ri=function FBd(a){return KC(I4,kve,612,a,0,1)};var A4=mdb(Tte,'BasicEMap/2',1034);bcb(1035,eie,fie,GBd);_.$b=function HBd(){this.a.c.$b()};_.Hc=function IBd(a){return qAd(this.a,a)};_.Kc=function JBd(){return this.a.f==0?(LCd(),KCd.a):new dCd(this.a)};_.Mc=function KBd(a){var b;b=this.a.f;LAd(this.a,a);return this.a.f!=b};_.gc=function LBd(){return this.a.f};var B4=mdb(Tte,'BasicEMap/3',1035);bcb(1036,28,die,MBd);_.$b=function NBd(){this.a.c.$b()};_.Hc=function OBd(a){return rAd(this.a,a)};_.Kc=function PBd(){return this.a.f==0?(LCd(),KCd.a):new fCd(this.a)};_.gc=function QBd(){return this.a.f};var C4=mdb(Tte,'BasicEMap/4',1036);bcb(1037,eie,fie,SBd);_.$b=function TBd(){this.a.c.$b()};_.Hc=function UBd(a){var b,c,d,e,f,g,h,i,j;if(this.a.f>0&&JD(a,42)){this.a.qj();i=BD(a,42);h=i.cd();e=h==null?0:tb(h);f=DAd(this.a,e);b=this.a.d[f];if(b){c=BD(b.g,367);j=b.i;for(g=0;g'+this.c};_.a=0;var I4=mdb(Tte,'BasicEMap/EntryImpl',612);bcb(536,1,{},JCd);var K4=mdb(Tte,'BasicEMap/View',536);var KCd;bcb(768,1,{});_.Fb=function ZCd(a){return At((mmb(),jmb),a)};_.Hb=function $Cd(){return qmb((mmb(),jmb))};_.Ib=function _Cd(){return Fe((mmb(),jmb))};var Q4=mdb(Tte,'ECollections/BasicEmptyUnmodifiableEList',768);bcb(1312,1,jie,aDd);_.Nb=function cDd(a){Rrb(this,a)};_.Rb=function bDd(a){throw vbb(new bgb)};_.Ob=function dDd(){return false};_.Sb=function eDd(){return false};_.Pb=function fDd(){throw vbb(new utb)};_.Tb=function gDd(){return 0};_.Ub=function hDd(){throw vbb(new utb)};_.Vb=function iDd(){return -1};_.Qb=function jDd(){throw vbb(new bgb)};_.Wb=function kDd(a){throw vbb(new bgb)};var P4=mdb(Tte,'ECollections/BasicEmptyUnmodifiableEList/1',1312);bcb(1310,768,{20:1,14:1,15:1,58:1},lDd);_.Vc=function mDd(a,b){OCd()};_.Fc=function nDd(a){return PCd()};_.Wc=function oDd(a,b){return QCd()};_.Gc=function pDd(a){return RCd()};_.$b=function qDd(){SCd()};_.Hc=function rDd(a){return false};_.Ic=function sDd(a){return false};_.Jc=function tDd(a){reb(this,a)};_.Xb=function uDd(a){return wmb((mmb(),jmb,a)),null};_.Xc=function vDd(a){return -1};_.dc=function wDd(){return true};_.Kc=function xDd(){return this.a};_.Yc=function yDd(){return this.a};_.Zc=function zDd(a){return this.a};_.ii=function ADd(a,b){return TCd()};_.ji=function BDd(a,b){UCd()};_.Lc=function CDd(){return new YAb(null,new Kub(this,16))};_.$c=function DDd(a){return VCd()};_.Mc=function EDd(a){return WCd()};_._c=function FDd(a,b){return XCd()};_.gc=function GDd(){return 0};_.ad=function HDd(a){ktb(this,a)};_.Nc=function IDd(){return new Kub(this,16)};_.Oc=function JDd(){return new YAb(null,new Kub(this,16))};_.bd=function KDd(a,b){return mmb(),new Jib(jmb,a,b)};_.Pc=function LDd(){return De((mmb(),jmb))};_.Qc=function MDd(a){return mmb(),Ee(jmb,a)};var R4=mdb(Tte,'ECollections/EmptyUnmodifiableEList',1310);bcb(1311,768,{20:1,14:1,15:1,58:1,589:1},NDd);_.Vc=function ODd(a,b){OCd()};_.Fc=function PDd(a){return PCd()};_.Wc=function QDd(a,b){return QCd()};_.Gc=function RDd(a){return RCd()};_.$b=function SDd(){SCd()};_.Hc=function TDd(a){return false};_.Ic=function UDd(a){return false};_.Jc=function VDd(a){reb(this,a)};_.Xb=function WDd(a){return wmb((mmb(),jmb,a)),null};_.Xc=function XDd(a){return -1};_.dc=function YDd(){return true};_.Kc=function ZDd(){return this.a};_.Yc=function $Dd(){return this.a};_.Zc=function _Dd(a){return this.a};_.ii=function bEd(a,b){return TCd()};_.ji=function cEd(a,b){UCd()};_.Lc=function dEd(){return new YAb(null,new Kub(this,16))};_.$c=function eEd(a){return VCd()};_.Mc=function fEd(a){return WCd()};_._c=function gEd(a,b){return XCd()};_.gc=function hEd(){return 0};_.ad=function iEd(a){ktb(this,a)};_.Nc=function jEd(){return new Kub(this,16)};_.Oc=function kEd(){return new YAb(null,new Kub(this,16))};_.bd=function lEd(a,b){return mmb(),new Jib(jmb,a,b)};_.Pc=function mEd(){return De((mmb(),jmb))};_.Qc=function nEd(a){return mmb(),Ee(jmb,a)};_.sj=function aEd(){return mmb(),mmb(),kmb};var S4=mdb(Tte,'ECollections/EmptyUnmodifiableEMap',1311);var U4=odb(Tte,'Enumerator');var oEd;bcb(281,1,{281:1},NEd);_.Fb=function REd(a){var b;if(this===a)return true;if(!JD(a,281))return false;b=BD(a,281);return this.f==b.f&&TEd(this.i,b.i)&&SEd(this.a,(this.f&256)!=0?(b.f&256)!=0?b.a:null:(b.f&256)!=0?null:b.a)&&SEd(this.d,b.d)&&SEd(this.g,b.g)&&SEd(this.e,b.e)&&KEd(this,b)};_.Hb=function WEd(){return this.f};_.Ib=function cFd(){return LEd(this)};_.f=0;var sEd=0,tEd=0,uEd=0,vEd=0,wEd=0,xEd=0,yEd=0,zEd=0,AEd=0,BEd,CEd=0,DEd=0,EEd=0,FEd=0,GEd,HEd;var Z4=mdb(Tte,'URI',281);bcb(1091,43,fke,mFd);_.zc=function nFd(a,b){return BD(Shb(this,GD(a),BD(b,281)),281)};var Y4=mdb(Tte,'URI/URICache',1091);bcb(497,63,oue,oFd,pFd);_.hi=function qFd(){return true};var $4=mdb(Tte,'UniqueEList',497);bcb(581,60,Tie,rFd);var _4=mdb(Tte,'WrappedException',581);var a5=odb(Vse,nve);var v5=odb(Vse,ove);var t5=odb(Vse,pve);var b5=odb(Vse,qve);var d5=odb(Vse,rve);var c5=odb(Vse,'EClass');var f5=odb(Vse,'EDataType');var sFd;bcb(1183,43,fke,vFd);_.xc=function wFd(a){return ND(a)?Phb(this,a):Wd(irb(this.f,a))};var e5=mdb(Vse,'EDataType/Internal/ConversionDelegate/Factory/Registry/Impl',1183);var h5=odb(Vse,'EEnum');var g5=odb(Vse,sve);var j5=odb(Vse,tve);var n5=odb(Vse,uve);var xFd;var p5=odb(Vse,vve);var q5=odb(Vse,wve);bcb(1029,1,{},BFd);_.Ib=function CFd(){return 'NIL'};var r5=mdb(Vse,'EStructuralFeature/Internal/DynamicValueHolder/1',1029);var DFd;bcb(1028,43,fke,GFd);_.xc=function HFd(a){return ND(a)?Phb(this,a):Wd(irb(this.f,a))};var s5=mdb(Vse,'EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl',1028);var u5=odb(Vse,xve);var w5=odb(Vse,'EValidator/PatternMatcher');var IFd;var KFd;var MFd;var OFd,PFd,QFd,RFd,SFd,TFd,UFd,VFd,WFd,XFd,YFd,ZFd,$Fd,_Fd,aGd,bGd,cGd,dGd,eGd,fGd,gGd,hGd,iGd;var E9=odb(yve,'FeatureMap/Entry');bcb(535,1,{72:1},kGd);_.ak=function lGd(){return this.a};_.dd=function mGd(){return this.b};var x5=mdb(qte,'BasicEObjectImpl/1',535);bcb(1027,1,zve,nGd);_.Wj=function oGd(a){return hid(this.a,this.b,a)};_.fj=function pGd(){return nid(this.a,this.b)};_.Wb=function qGd(a){zid(this.a,this.b,a)};_.Xj=function rGd(){Did(this.a,this.b)};var y5=mdb(qte,'BasicEObjectImpl/4',1027);bcb(1983,1,{108:1});_.bk=function uGd(a){this.e=a==0?sGd:KC(SI,Uhe,1,a,5,1)};_.Ch=function vGd(a){return this.e[a]};_.Dh=function wGd(a,b){this.e[a]=b};_.Eh=function xGd(a){this.e[a]=null};_.ck=function yGd(){return this.c};_.dk=function zGd(){throw vbb(new bgb)};_.ek=function AGd(){throw vbb(new bgb)};_.fk=function BGd(){return this.d};_.gk=function CGd(){return this.e!=null};_.hk=function DGd(a){this.c=a};_.ik=function EGd(a){throw vbb(new bgb)};_.jk=function FGd(a){throw vbb(new bgb)};_.kk=function GGd(a){this.d=a};var sGd;var z5=mdb(qte,'BasicEObjectImpl/EPropertiesHolderBaseImpl',1983);bcb(185,1983,{108:1},HGd);_.dk=function IGd(){return this.a};_.ek=function JGd(){return this.b};_.ik=function KGd(a){this.a=a};_.jk=function LGd(a){this.b=a};var A5=mdb(qte,'BasicEObjectImpl/EPropertiesHolderImpl',185);bcb(506,97,pte,MGd);_.Kg=function NGd(){return this.f};_.Pg=function OGd(){return this.k};_.Rg=function PGd(a,b){this.g=a;this.i=b};_.Tg=function QGd(){return (this.j&2)==0?this.zh():this.ph().ck()};_.Vg=function RGd(){return this.i};_.Mg=function SGd(){return (this.j&1)!=0};_.eh=function TGd(){return this.g};_.kh=function UGd(){return (this.j&4)!=0};_.ph=function VGd(){return !this.k&&(this.k=new HGd),this.k};_.th=function WGd(a){this.ph().hk(a);a?(this.j|=2):(this.j&=-3)};_.vh=function XGd(a){this.ph().jk(a);a?(this.j|=4):(this.j&=-5)};_.zh=function YGd(){return (NFd(),MFd).S};_.i=0;_.j=1;var l6=mdb(qte,'EObjectImpl',506);bcb(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},_Gd);_.Ch=function aHd(a){return this.e[a]};_.Dh=function bHd(a,b){this.e[a]=b};_.Eh=function cHd(a){this.e[a]=null};_.Tg=function dHd(){return this.d};_.Yg=function eHd(a){return bLd(this.d,a)};_.$g=function fHd(){return this.d};_.dh=function gHd(){return this.e!=null};_.ph=function hHd(){!this.k&&(this.k=new vHd);return this.k};_.th=function iHd(a){this.d=a};_.yh=function jHd(){var a;if(this.e==null){a=aLd(this.d);this.e=a==0?ZGd:KC(SI,Uhe,1,a,5,1)}return this};_.Ah=function kHd(){return 0};var ZGd;var E5=mdb(qte,'DynamicEObjectImpl',780);bcb(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},lHd);_.Fb=function nHd(a){return this===a};_.Hb=function rHd(){return FCb(this)};_.th=function mHd(a){this.d=a;this.b=YKd(a,'key');this.c=YKd(a,Bte)};_.Sh=function oHd(){var a;if(this.a==-1){a=iid(this,this.b);this.a=a==null?0:tb(a)}return this.a};_.cd=function pHd(){return iid(this,this.b)};_.dd=function qHd(){return iid(this,this.c)};_.Th=function sHd(a){this.a=a};_.Uh=function tHd(a){zid(this,this.b,a)};_.ed=function uHd(a){var b;b=iid(this,this.c);zid(this,this.c,a);return b};_.a=0;var C5=mdb(qte,'DynamicEObjectImpl/BasicEMapEntry',1376);bcb(1377,1,{108:1},vHd);_.bk=function wHd(a){throw vbb(new bgb)};_.Ch=function xHd(a){throw vbb(new bgb)};_.Dh=function yHd(a,b){throw vbb(new bgb)};_.Eh=function zHd(a){throw vbb(new bgb)};_.ck=function AHd(){throw vbb(new bgb)};_.dk=function BHd(){return this.a};_.ek=function CHd(){return this.b};_.fk=function DHd(){return this.c};_.gk=function EHd(){throw vbb(new bgb)};_.hk=function FHd(a){throw vbb(new bgb)};_.ik=function GHd(a){this.a=a};_.jk=function HHd(a){this.b=a};_.kk=function IHd(a){this.c=a};var D5=mdb(qte,'DynamicEObjectImpl/DynamicEPropertiesHolderImpl',1377);bcb(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},RHd);_.Qg=function SHd(a){return KHd(this,a)};_._g=function THd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.d;case 2:return c?(!this.b&&(this.b=new sId((jGd(),fGd),x6,this)),this.b):(!this.b&&(this.b=new sId((jGd(),fGd),x6,this)),FAd(this.b));case 3:return MHd(this);case 4:return !this.a&&(this.a=new xMd(m5,this,4)),this.a;case 5:return !this.c&&(this.c=new _4d(m5,this,5)),this.c;}return bid(this,a-aLd((jGd(),OFd)),XKd((d=BD(Ajd(this,16),26),!d?OFd:d),a),b,c)};_.hh=function UHd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 3:!!this.Cb&&(c=(e=this.Db>>16,e>=0?KHd(this,c):this.Cb.ih(this,-1-e,null,c)));return JHd(this,BD(a,147),c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),OFd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),OFd)),a,c)};_.jh=function VHd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 2:return !this.b&&(this.b=new sId((jGd(),fGd),x6,this)),bId(this.b,a,c);case 3:return JHd(this,null,c);case 4:return !this.a&&(this.a=new xMd(m5,this,4)),Txd(this.a,a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),OFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),OFd)),a,c)};_.lh=function WHd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return !!this.b&&this.b.f!=0;case 3:return !!MHd(this);case 4:return !!this.a&&this.a.i!=0;case 5:return !!this.c&&this.c.i!=0;}return cid(this,a-aLd((jGd(),OFd)),XKd((b=BD(Ajd(this,16),26),!b?OFd:b),a))};_.sh=function XHd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:OHd(this,GD(b));return;case 2:!this.b&&(this.b=new sId((jGd(),fGd),x6,this));cId(this.b,b);return;case 3:NHd(this,BD(b,147));return;case 4:!this.a&&(this.a=new xMd(m5,this,4));Uxd(this.a);!this.a&&(this.a=new xMd(m5,this,4));ytd(this.a,BD(b,14));return;case 5:!this.c&&(this.c=new _4d(m5,this,5));Uxd(this.c);!this.c&&(this.c=new _4d(m5,this,5));ytd(this.c,BD(b,14));return;}did(this,a-aLd((jGd(),OFd)),XKd((c=BD(Ajd(this,16),26),!c?OFd:c),a),b)};_.zh=function YHd(){return jGd(),OFd};_.Bh=function ZHd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:PHd(this,null);return;case 2:!this.b&&(this.b=new sId((jGd(),fGd),x6,this));this.b.c.$b();return;case 3:NHd(this,null);return;case 4:!this.a&&(this.a=new xMd(m5,this,4));Uxd(this.a);return;case 5:!this.c&&(this.c=new _4d(m5,this,5));Uxd(this.c);return;}eid(this,a-aLd((jGd(),OFd)),XKd((b=BD(Ajd(this,16),26),!b?OFd:b),a))};_.Ib=function $Hd(){return QHd(this)};_.d=null;var G5=mdb(qte,'EAnnotationImpl',510);bcb(151,705,Ave,dId);_.Xh=function eId(a,b){_Hd(this,a,BD(b,42))};_.lk=function fId(a,b){return aId(this,BD(a,42),b)};_.pi=function gId(a){return BD(BD(this.c,69).pi(a),133)};_.Zh=function hId(){return BD(this.c,69).Zh()};_.$h=function iId(){return BD(this.c,69).$h()};_._h=function jId(a){return BD(this.c,69)._h(a)};_.mk=function kId(a,b){return bId(this,a,b)};_.Wj=function lId(a){return BD(this.c,76).Wj(a)};_.rj=function mId(){};_.fj=function nId(){return BD(this.c,76).fj()};_.tj=function oId(a,b,c){var d;d=BD(bKd(this.b).Nh().Jh(this.b),133);d.Th(a);d.Uh(b);d.ed(c);return d};_.uj=function pId(){return new W5d(this)};_.Wb=function qId(a){cId(this,a)};_.Xj=function rId(){BD(this.c,76).Xj()};var y9=mdb(yve,'EcoreEMap',151);bcb(158,151,Ave,sId);_.qj=function tId(){var a,b,c,d,e,f;if(this.d==null){f=KC(y4,jve,63,2*this.f+1,0,1);for(c=this.c.Kc();c.e!=c.i.gc();){b=BD(c.nj(),133);d=b.Sh();e=(d&Ohe)%f.length;a=f[e];!a&&(a=f[e]=new W5d(this));a.Fc(b)}this.d=f}};var F5=mdb(qte,'EAnnotationImpl/1',158);bcb(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1});_._g=function GId(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),this.$j()?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;}return bid(this,a-aLd(this.zh()),XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),a),b,c)};_.jh=function HId(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 9:return vId(this,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),e.Nj().Rj(this,yjd(this),b-aLd(this.zh()),a,c)};_.lh=function IId(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);}return cid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.sh=function JId(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:this.Lh(GD(b));return;case 2:BId(this,Ccb(DD(b)));return;case 3:CId(this,Ccb(DD(b)));return;case 4:AId(this,BD(b,19).a);return;case 5:this.ok(BD(b,19).a);return;case 8:yId(this,BD(b,138));return;case 9:d=xId(this,BD(b,87),null);!!d&&d.Fi();return;}did(this,a-aLd(this.zh()),XKd((c=BD(Ajd(this,16),26),!c?this.zh():c),a),b)};_.zh=function KId(){return jGd(),hGd};_.Bh=function LId(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:this.Lh(null);return;case 2:BId(this,true);return;case 3:CId(this,true);return;case 4:AId(this,0);return;case 5:this.ok(1);return;case 8:yId(this,null);return;case 9:c=xId(this,null,null);!!c&&c.Fi();return;}eid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.Gh=function MId(){wId(this);this.Bb|=1};_.Yj=function NId(){return wId(this)};_.Zj=function OId(){return this.t};_.$j=function PId(){var a;return a=this.t,a>1||a==-1};_.hi=function QId(){return (this.Bb&512)!=0};_.nk=function RId(a,b){return zId(this,a,b)};_.ok=function SId(a){DId(this,a)};_.Ib=function TId(){return EId(this)};_.s=0;_.t=1;var v7=mdb(qte,'ETypedElementImpl',284);bcb(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1});_.Qg=function iJd(a){return UId(this,a)};_._g=function jJd(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),this.$j()?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;case 10:return Bcb(),(this.Bb&zte)!=0?true:false;case 11:return Bcb(),(this.Bb&Dve)!=0?true:false;case 12:return Bcb(),(this.Bb&Rje)!=0?true:false;case 13:return this.j;case 14:return VId(this);case 15:return Bcb(),(this.Bb&Cve)!=0?true:false;case 16:return Bcb(),(this.Bb&oie)!=0?true:false;case 17:return WId(this);}return bid(this,a-aLd(this.zh()),XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),a),b,c)};_.hh=function kJd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 17:!!this.Cb&&(c=(e=this.Db>>16,e>=0?UId(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,17,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),f.Nj().Qj(this,yjd(this),b-aLd(this.zh()),a,c)};_.jh=function lJd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 9:return vId(this,c);case 17:return _hd(this,null,17,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),e.Nj().Rj(this,yjd(this),b-aLd(this.zh()),a,c)};_.lh=function mJd(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);case 10:return (this.Bb&zte)==0;case 11:return (this.Bb&Dve)!=0;case 12:return (this.Bb&Rje)!=0;case 13:return this.j!=null;case 14:return VId(this)!=null;case 15:return (this.Bb&Cve)!=0;case 16:return (this.Bb&oie)!=0;case 17:return !!WId(this);}return cid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.sh=function nJd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:cJd(this,GD(b));return;case 2:BId(this,Ccb(DD(b)));return;case 3:CId(this,Ccb(DD(b)));return;case 4:AId(this,BD(b,19).a);return;case 5:this.ok(BD(b,19).a);return;case 8:yId(this,BD(b,138));return;case 9:d=xId(this,BD(b,87),null);!!d&&d.Fi();return;case 10:ZId(this,Ccb(DD(b)));return;case 11:fJd(this,Ccb(DD(b)));return;case 12:dJd(this,Ccb(DD(b)));return;case 13:$Id(this,GD(b));return;case 15:eJd(this,Ccb(DD(b)));return;case 16:aJd(this,Ccb(DD(b)));return;}did(this,a-aLd(this.zh()),XKd((c=BD(Ajd(this,16),26),!c?this.zh():c),a),b)};_.zh=function oJd(){return jGd(),gGd};_.Bh=function pJd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,88)&&XMd($Kd(BD(this.Cb,88)),4);pnd(this,null);return;case 2:BId(this,true);return;case 3:CId(this,true);return;case 4:AId(this,0);return;case 5:this.ok(1);return;case 8:yId(this,null);return;case 9:c=xId(this,null,null);!!c&&c.Fi();return;case 10:ZId(this,true);return;case 11:fJd(this,false);return;case 12:dJd(this,false);return;case 13:this.i=null;_Id(this,null);return;case 15:eJd(this,false);return;case 16:aJd(this,false);return;}eid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.Gh=function qJd(){a2d(q1d((O6d(),M6d),this));wId(this);this.Bb|=1};_.Gj=function rJd(){return this.f};_.zj=function sJd(){return VId(this)};_.Hj=function tJd(){return WId(this)};_.Lj=function uJd(){return null};_.pk=function vJd(){return this.k};_.aj=function wJd(){return this.n};_.Mj=function xJd(){return XId(this)};_.Nj=function yJd(){var a,b,c,d,e,f,g,h,i;if(!this.p){c=WId(this);(c.i==null&&TKd(c),c.i).length;d=this.Lj();!!d&&aLd(WId(d));e=wId(this);g=e.Bj();a=!g?null:(g.i&1)!=0?g==sbb?wI:g==WD?JI:g==VD?FI:g==UD?BI:g==XD?MI:g==rbb?UI:g==SD?xI:yI:g;b=VId(this);h=e.zj();n6d(this);(this.Bb&oie)!=0&&(!!(f=t1d((O6d(),M6d),c))&&f!=this||!!(f=_1d(q1d(M6d,this))))?(this.p=new zVd(this,f)):this.$j()?this.rk()?!d?(this.Bb&Cve)!=0?!a?this.sk()?(this.p=new KVd(42,this)):(this.p=new KVd(0,this)):a==CK?(this.p=new IVd(50,J4,this)):this.sk()?(this.p=new IVd(43,a,this)):(this.p=new IVd(1,a,this)):!a?this.sk()?(this.p=new KVd(44,this)):(this.p=new KVd(2,this)):a==CK?(this.p=new IVd(41,J4,this)):this.sk()?(this.p=new IVd(45,a,this)):(this.p=new IVd(3,a,this)):(this.Bb&Cve)!=0?!a?this.sk()?(this.p=new LVd(46,this,d)):(this.p=new LVd(4,this,d)):this.sk()?(this.p=new JVd(47,a,this,d)):(this.p=new JVd(5,a,this,d)):!a?this.sk()?(this.p=new LVd(48,this,d)):(this.p=new LVd(6,this,d)):this.sk()?(this.p=new JVd(49,a,this,d)):(this.p=new JVd(7,a,this,d)):JD(e,148)?a==E9?(this.p=new KVd(40,this)):(this.Bb&512)!=0?(this.Bb&Cve)!=0?!a?(this.p=new KVd(8,this)):(this.p=new IVd(9,a,this)):!a?(this.p=new KVd(10,this)):(this.p=new IVd(11,a,this)):(this.Bb&Cve)!=0?!a?(this.p=new KVd(12,this)):(this.p=new IVd(13,a,this)):!a?(this.p=new KVd(14,this)):(this.p=new IVd(15,a,this)):!d?this.sk()?(this.Bb&Cve)!=0?!a?(this.p=new KVd(16,this)):(this.p=new IVd(17,a,this)):!a?(this.p=new KVd(18,this)):(this.p=new IVd(19,a,this)):(this.Bb&Cve)!=0?!a?(this.p=new KVd(20,this)):(this.p=new IVd(21,a,this)):!a?(this.p=new KVd(22,this)):(this.p=new IVd(23,a,this)):(i=d.t,i>1||i==-1?this.sk()?(this.Bb&Cve)!=0?!a?(this.p=new LVd(24,this,d)):(this.p=new JVd(25,a,this,d)):!a?(this.p=new LVd(26,this,d)):(this.p=new JVd(27,a,this,d)):(this.Bb&Cve)!=0?!a?(this.p=new LVd(28,this,d)):(this.p=new JVd(29,a,this,d)):!a?(this.p=new LVd(30,this,d)):(this.p=new JVd(31,a,this,d)):this.sk()?(this.Bb&Cve)!=0?!a?(this.p=new LVd(32,this,d)):(this.p=new JVd(33,a,this,d)):!a?(this.p=new LVd(34,this,d)):(this.p=new JVd(35,a,this,d)):(this.Bb&Cve)!=0?!a?(this.p=new LVd(36,this,d)):(this.p=new JVd(37,a,this,d)):!a?(this.p=new LVd(38,this,d)):(this.p=new JVd(39,a,this,d))):this.qk()?this.sk()?(this.p=new kWd(BD(e,26),this,d)):(this.p=new cWd(BD(e,26),this,d)):JD(e,148)?a==E9?(this.p=new KVd(40,this)):(this.Bb&Cve)!=0?!a?(this.p=new jXd(BD(e,148),b,h,this)):(this.p=new lXd(b,h,this,(CWd(),g==WD?yWd:g==sbb?tWd:g==XD?zWd:g==VD?xWd:g==UD?wWd:g==rbb?BWd:g==SD?uWd:g==TD?vWd:AWd))):!a?(this.p=new cXd(BD(e,148),b,h,this)):(this.p=new eXd(b,h,this,(CWd(),g==WD?yWd:g==sbb?tWd:g==XD?zWd:g==VD?xWd:g==UD?wWd:g==rbb?BWd:g==SD?uWd:g==TD?vWd:AWd))):this.rk()?!d?(this.Bb&Cve)!=0?this.sk()?(this.p=new FXd(BD(e,26),this)):(this.p=new DXd(BD(e,26),this)):this.sk()?(this.p=new BXd(BD(e,26),this)):(this.p=new zXd(BD(e,26),this)):(this.Bb&Cve)!=0?this.sk()?(this.p=new NXd(BD(e,26),this,d)):(this.p=new LXd(BD(e,26),this,d)):this.sk()?(this.p=new JXd(BD(e,26),this,d)):(this.p=new HXd(BD(e,26),this,d)):this.sk()?!d?(this.Bb&Cve)!=0?(this.p=new RXd(BD(e,26),this)):(this.p=new PXd(BD(e,26),this)):(this.Bb&Cve)!=0?(this.p=new VXd(BD(e,26),this,d)):(this.p=new TXd(BD(e,26),this,d)):!d?(this.Bb&Cve)!=0?(this.p=new XXd(BD(e,26),this)):(this.p=new nXd(BD(e,26),this)):(this.Bb&Cve)!=0?(this.p=new _Xd(BD(e,26),this,d)):(this.p=new ZXd(BD(e,26),this,d))}return this.p};_.Ij=function zJd(){return (this.Bb&zte)!=0};_.qk=function AJd(){return false};_.rk=function BJd(){return false};_.Jj=function CJd(){return (this.Bb&oie)!=0};_.Oj=function DJd(){return YId(this)};_.sk=function EJd(){return false};_.Kj=function FJd(){return (this.Bb&Cve)!=0};_.tk=function GJd(a){this.k=a};_.Lh=function HJd(a){cJd(this,a)};_.Ib=function IJd(){return gJd(this)};_.e=false;_.n=0;var n7=mdb(qte,'EStructuralFeatureImpl',449);bcb(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},OJd);_._g=function PJd(a,b,c){var d,e;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),LJd(this)?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;case 10:return Bcb(),(this.Bb&zte)!=0?true:false;case 11:return Bcb(),(this.Bb&Dve)!=0?true:false;case 12:return Bcb(),(this.Bb&Rje)!=0?true:false;case 13:return this.j;case 14:return VId(this);case 15:return Bcb(),(this.Bb&Cve)!=0?true:false;case 16:return Bcb(),(this.Bb&oie)!=0?true:false;case 17:return WId(this);case 18:return Bcb(),(this.Bb&ote)!=0?true:false;case 19:if(b)return KJd(this);return JJd(this);}return bid(this,a-aLd((jGd(),PFd)),XKd((d=BD(Ajd(this,16),26),!d?PFd:d),a),b,c)};_.lh=function QJd(a){var b,c;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return LJd(this);case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);case 10:return (this.Bb&zte)==0;case 11:return (this.Bb&Dve)!=0;case 12:return (this.Bb&Rje)!=0;case 13:return this.j!=null;case 14:return VId(this)!=null;case 15:return (this.Bb&Cve)!=0;case 16:return (this.Bb&oie)!=0;case 17:return !!WId(this);case 18:return (this.Bb&ote)!=0;case 19:return !!JJd(this);}return cid(this,a-aLd((jGd(),PFd)),XKd((b=BD(Ajd(this,16),26),!b?PFd:b),a))};_.sh=function RJd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:cJd(this,GD(b));return;case 2:BId(this,Ccb(DD(b)));return;case 3:CId(this,Ccb(DD(b)));return;case 4:AId(this,BD(b,19).a);return;case 5:NJd(this,BD(b,19).a);return;case 8:yId(this,BD(b,138));return;case 9:d=xId(this,BD(b,87),null);!!d&&d.Fi();return;case 10:ZId(this,Ccb(DD(b)));return;case 11:fJd(this,Ccb(DD(b)));return;case 12:dJd(this,Ccb(DD(b)));return;case 13:$Id(this,GD(b));return;case 15:eJd(this,Ccb(DD(b)));return;case 16:aJd(this,Ccb(DD(b)));return;case 18:MJd(this,Ccb(DD(b)));return;}did(this,a-aLd((jGd(),PFd)),XKd((c=BD(Ajd(this,16),26),!c?PFd:c),a),b)};_.zh=function SJd(){return jGd(),PFd};_.Bh=function TJd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,88)&&XMd($Kd(BD(this.Cb,88)),4);pnd(this,null);return;case 2:BId(this,true);return;case 3:CId(this,true);return;case 4:AId(this,0);return;case 5:this.b=0;DId(this,1);return;case 8:yId(this,null);return;case 9:c=xId(this,null,null);!!c&&c.Fi();return;case 10:ZId(this,true);return;case 11:fJd(this,false);return;case 12:dJd(this,false);return;case 13:this.i=null;_Id(this,null);return;case 15:eJd(this,false);return;case 16:aJd(this,false);return;case 18:MJd(this,false);return;}eid(this,a-aLd((jGd(),PFd)),XKd((b=BD(Ajd(this,16),26),!b?PFd:b),a))};_.Gh=function UJd(){KJd(this);a2d(q1d((O6d(),M6d),this));wId(this);this.Bb|=1};_.$j=function VJd(){return LJd(this)};_.nk=function WJd(a,b){this.b=0;this.a=null;return zId(this,a,b)};_.ok=function XJd(a){NJd(this,a)};_.Ib=function YJd(){var a;if((this.Db&64)!=0)return gJd(this);a=new Jfb(gJd(this));a.a+=' (iD: ';Ffb(a,(this.Bb&ote)!=0);a.a+=')';return a.a};_.b=0;var H5=mdb(qte,'EAttributeImpl',322);bcb(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1});_.uk=function nKd(a){return a.Tg()==this};_.Qg=function oKd(a){return aKd(this,a)};_.Rg=function pKd(a,b){this.w=null;this.Db=b<<16|this.Db&255;this.Cb=a};_._g=function qKd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return dKd(this);case 4:return this.zj();case 5:return this.F;case 6:if(b)return bKd(this);return ZJd(this);case 7:return !this.A&&(this.A=new K4d(u5,this,7)),this.A;}return bid(this,a-aLd(this.zh()),XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),a),b,c)};_.hh=function rKd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?aKd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,6,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),f.Nj().Qj(this,yjd(this),b-aLd(this.zh()),a,c)};_.jh=function sKd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 6:return _hd(this,null,6,c);case 7:return !this.A&&(this.A=new K4d(u5,this,7)),Txd(this.A,a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?this.zh():d),b),66),e.Nj().Rj(this,yjd(this),b-aLd(this.zh()),a,c)};_.lh=function tKd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!dKd(this);case 4:return this.zj()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!ZJd(this);case 7:return !!this.A&&this.A.i!=0;}return cid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.sh=function uKd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:lKd(this,GD(b));return;case 2:iKd(this,GD(b));return;case 5:kKd(this,GD(b));return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);!this.A&&(this.A=new K4d(u5,this,7));ytd(this.A,BD(b,14));return;}did(this,a-aLd(this.zh()),XKd((c=BD(Ajd(this,16),26),!c?this.zh():c),a),b)};_.zh=function vKd(){return jGd(),RFd};_.Bh=function wKd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,179)&&(BD(this.Cb,179).tb=null);pnd(this,null);return;case 2:$Jd(this,null);_Jd(this,this.D);return;case 5:kKd(this,null);return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);return;}eid(this,a-aLd(this.zh()),XKd((b=BD(Ajd(this,16),26),!b?this.zh():b),a))};_.yj=function xKd(){var a;return this.G==-1&&(this.G=(a=bKd(this),a?HLd(a.Mh(),this):-1)),this.G};_.zj=function yKd(){return null};_.Aj=function zKd(){return bKd(this)};_.vk=function AKd(){return this.v};_.Bj=function BKd(){return dKd(this)};_.Cj=function CKd(){return this.D!=null?this.D:this.B};_.Dj=function DKd(){return this.F};_.wj=function EKd(a){return fKd(this,a)};_.wk=function FKd(a){this.v=a};_.xk=function GKd(a){gKd(this,a)};_.yk=function HKd(a){this.C=a};_.Lh=function IKd(a){lKd(this,a)};_.Ib=function JKd(){return mKd(this)};_.C=null;_.D=null;_.G=-1;var Z5=mdb(qte,'EClassifierImpl',351);bcb(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},hLd);_.uk=function iLd(a){return dLd(this,a.Tg())};_._g=function jLd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return dKd(this);case 4:return null;case 5:return this.F;case 6:if(b)return bKd(this);return ZJd(this);case 7:return !this.A&&(this.A=new K4d(u5,this,7)),this.A;case 8:return Bcb(),(this.Bb&256)!=0?true:false;case 9:return Bcb(),(this.Bb&512)!=0?true:false;case 10:return _Kd(this);case 11:return !this.q&&(this.q=new cUd(n5,this,11,10)),this.q;case 12:return OKd(this);case 13:return SKd(this);case 14:return SKd(this),this.r;case 15:return OKd(this),this.k;case 16:return PKd(this);case 17:return RKd(this);case 18:return TKd(this);case 19:return UKd(this);case 20:return OKd(this),this.o;case 21:return !this.s&&(this.s=new cUd(t5,this,21,17)),this.s;case 22:return VKd(this);case 23:return QKd(this);}return bid(this,a-aLd((jGd(),QFd)),XKd((d=BD(Ajd(this,16),26),!d?QFd:d),a),b,c)};_.hh=function kLd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 6:!!this.Cb&&(c=(e=this.Db>>16,e>=0?aKd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,6,c);case 11:return !this.q&&(this.q=new cUd(n5,this,11,10)),Sxd(this.q,a,c);case 21:return !this.s&&(this.s=new cUd(t5,this,21,17)),Sxd(this.s,a,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),QFd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),QFd)),a,c)};_.jh=function lLd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 6:return _hd(this,null,6,c);case 7:return !this.A&&(this.A=new K4d(u5,this,7)),Txd(this.A,a,c);case 11:return !this.q&&(this.q=new cUd(n5,this,11,10)),Txd(this.q,a,c);case 21:return !this.s&&(this.s=new cUd(t5,this,21,17)),Txd(this.s,a,c);case 22:return Txd(VKd(this),a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),QFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),QFd)),a,c)};_.lh=function mLd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!dKd(this);case 4:return false;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!ZJd(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)!=0;case 9:return (this.Bb&512)!=0;case 10:return !!this.u&&VKd(this.u.a).i!=0&&!(!!this.n&&FMd(this.n));case 11:return !!this.q&&this.q.i!=0;case 12:return OKd(this).i!=0;case 13:return SKd(this).i!=0;case 14:return SKd(this),this.r.i!=0;case 15:return OKd(this),this.k.i!=0;case 16:return PKd(this).i!=0;case 17:return RKd(this).i!=0;case 18:return TKd(this).i!=0;case 19:return UKd(this).i!=0;case 20:return OKd(this),!!this.o;case 21:return !!this.s&&this.s.i!=0;case 22:return !!this.n&&FMd(this.n);case 23:return QKd(this).i!=0;}return cid(this,a-aLd((jGd(),QFd)),XKd((b=BD(Ajd(this,16),26),!b?QFd:b),a))};_.oh=function nLd(a){var b;b=this.i==null||!!this.q&&this.q.i!=0?null:YKd(this,a);return b?b:Bmd(this,a)};_.sh=function oLd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:lKd(this,GD(b));return;case 2:iKd(this,GD(b));return;case 5:kKd(this,GD(b));return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);!this.A&&(this.A=new K4d(u5,this,7));ytd(this.A,BD(b,14));return;case 8:eLd(this,Ccb(DD(b)));return;case 9:fLd(this,Ccb(DD(b)));return;case 10:vwd(_Kd(this));ytd(_Kd(this),BD(b,14));return;case 11:!this.q&&(this.q=new cUd(n5,this,11,10));Uxd(this.q);!this.q&&(this.q=new cUd(n5,this,11,10));ytd(this.q,BD(b,14));return;case 21:!this.s&&(this.s=new cUd(t5,this,21,17));Uxd(this.s);!this.s&&(this.s=new cUd(t5,this,21,17));ytd(this.s,BD(b,14));return;case 22:Uxd(VKd(this));ytd(VKd(this),BD(b,14));return;}did(this,a-aLd((jGd(),QFd)),XKd((c=BD(Ajd(this,16),26),!c?QFd:c),a),b)};_.zh=function pLd(){return jGd(),QFd};_.Bh=function qLd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,179)&&(BD(this.Cb,179).tb=null);pnd(this,null);return;case 2:$Jd(this,null);_Jd(this,this.D);return;case 5:kKd(this,null);return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);return;case 8:eLd(this,false);return;case 9:fLd(this,false);return;case 10:!!this.u&&vwd(this.u);return;case 11:!this.q&&(this.q=new cUd(n5,this,11,10));Uxd(this.q);return;case 21:!this.s&&(this.s=new cUd(t5,this,21,17));Uxd(this.s);return;case 22:!!this.n&&Uxd(this.n);return;}eid(this,a-aLd((jGd(),QFd)),XKd((b=BD(Ajd(this,16),26),!b?QFd:b),a))};_.Gh=function rLd(){var a,b;OKd(this);SKd(this);PKd(this);RKd(this);TKd(this);UKd(this);QKd(this);oud(SMd($Kd(this)));if(this.s){for(a=0,b=this.s.i;a=0;--b){qud(this,b)}}return xud(this,a)};_.Xj=function nMd(){Uxd(this)};_.oi=function oMd(a,b){return LLd(this,a,b)};var t9=mdb(yve,'EcoreEList',622);bcb(496,622,Pve,pMd);_.ai=function qMd(){return false};_.aj=function rMd(){return this.c};_.bj=function sMd(){return false};_.Fk=function tMd(){return true};_.hi=function uMd(){return true};_.li=function vMd(a,b){return b};_.ni=function wMd(){return false};_.c=0;var d9=mdb(yve,'EObjectEList',496);bcb(85,496,Pve,xMd);_.bj=function yMd(){return true};_.Dk=function zMd(){return false};_.rk=function AMd(){return true};var Z8=mdb(yve,'EObjectContainmentEList',85);bcb(545,85,Pve,BMd);_.ci=function CMd(){this.b=true};_.fj=function DMd(){return this.b};_.Xj=function EMd(){var a;Uxd(this);if(oid(this.e)){a=this.b;this.b=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.b=false}};_.b=false;var Y8=mdb(yve,'EObjectContainmentEList/Unsettable',545);bcb(1140,545,Pve,JMd);_.ii=function NMd(a,b){var c,d;return c=BD(Wxd(this,a,b),87),oid(this.e)&&GLd(this,new ESd(this.a,7,(jGd(),SFd),meb(b),(d=c.c,JD(d,88)?BD(d,26):_Fd),a)),c};_.jj=function OMd(a,b){return GMd(this,BD(a,87),b)};_.kj=function PMd(a,b){return HMd(this,BD(a,87),b)};_.lj=function QMd(a,b,c){return IMd(this,BD(a,87),BD(b,87),c)};_.Zi=function KMd(a,b,c,d,e){switch(a){case 3:{return FLd(this,a,b,c,d,this.i>1)}case 5:{return FLd(this,a,b,c,d,this.i-BD(c,15).gc()>0)}default:{return new pSd(this.e,a,this.c,b,c,d,true)}}};_.ij=function LMd(){return true};_.fj=function MMd(){return FMd(this)};_.Xj=function RMd(){Uxd(this)};var N5=mdb(qte,'EClassImpl/1',1140);bcb(1154,1153,dve);_.ui=function VMd(a){var b,c,d,e,f,g,h;c=a.xi();if(c!=8){d=UMd(a);if(d==0){switch(c){case 1:case 9:{h=a.Bi();if(h!=null){b=$Kd(BD(h,473));!b.c&&(b.c=new xYd);Ftd(b.c,a.Ai())}g=a.zi();if(g!=null){e=BD(g,473);if((e.Bb&1)==0){b=$Kd(e);!b.c&&(b.c=new xYd);wtd(b.c,BD(a.Ai(),26))}}break}case 3:{g=a.zi();if(g!=null){e=BD(g,473);if((e.Bb&1)==0){b=$Kd(e);!b.c&&(b.c=new xYd);wtd(b.c,BD(a.Ai(),26))}}break}case 5:{g=a.zi();if(g!=null){for(f=BD(g,14).Kc();f.Ob();){e=BD(f.Pb(),473);if((e.Bb&1)==0){b=$Kd(e);!b.c&&(b.c=new xYd);wtd(b.c,BD(a.Ai(),26))}}}break}case 4:{h=a.Bi();if(h!=null){e=BD(h,473);if((e.Bb&1)==0){b=$Kd(e);!b.c&&(b.c=new xYd);Ftd(b.c,a.Ai())}}break}case 6:{h=a.Bi();if(h!=null){for(f=BD(h,14).Kc();f.Ob();){e=BD(f.Pb(),473);if((e.Bb&1)==0){b=$Kd(e);!b.c&&(b.c=new xYd);Ftd(b.c,a.Ai())}}}break}}}this.Hk(d)}};_.Hk=function WMd(a){TMd(this,a)};_.b=63;var p7=mdb(qte,'ESuperAdapter',1154);bcb(1155,1154,dve,YMd);_.Hk=function ZMd(a){XMd(this,a)};var I5=mdb(qte,'EClassImpl/10',1155);bcb(1144,696,Pve);_.Vh=function $Md(a,b){return iud(this,a,b)};_.Wh=function _Md(a){return jud(this,a)};_.Xh=function aNd(a,b){kud(this,a,b)};_.Yh=function bNd(a){lud(this,a)};_.pi=function dNd(a){return nud(this,a)};_.mi=function lNd(a,b){return uud(this,a,b)};_.lk=function cNd(a,b){throw vbb(new bgb)};_.Zh=function eNd(){return new $yd(this)};_.$h=function fNd(){return new bzd(this)};_._h=function gNd(a){return ztd(this,a)};_.mk=function hNd(a,b){throw vbb(new bgb)};_.Wj=function iNd(a){return this};_.fj=function jNd(){return this.i!=0};_.Wb=function kNd(a){throw vbb(new bgb)};_.Xj=function mNd(){throw vbb(new bgb)};var s9=mdb(yve,'EcoreEList/UnmodifiableEList',1144);bcb(319,1144,Pve,nNd);_.ni=function oNd(){return false};var r9=mdb(yve,'EcoreEList/UnmodifiableEList/FastCompare',319);bcb(1147,319,Pve,rNd);_.Xc=function sNd(a){var b,c,d;if(JD(a,170)){b=BD(a,170);c=b.aj();if(c!=-1){for(d=this.i;c4){if(this.wj(a)){if(this.rk()){d=BD(a,49);c=d.Ug();h=c==this.b&&(this.Dk()?d.Og(d.Vg(),BD(XKd(wjd(this.b),this.aj()).Yj(),26).Bj())==zUd(BD(XKd(wjd(this.b),this.aj()),18)).n:-1-d.Vg()==this.aj());if(this.Ek()&&!h&&!c&&!!d.Zg()){for(e=0;e1||d==-1)}else{return false}};_.Dk=function COd(){var a,b,c;b=XKd(wjd(this.b),this.aj());if(JD(b,99)){a=BD(b,18);c=zUd(a);return !!c}else{return false}};_.Ek=function DOd(){var a,b;b=XKd(wjd(this.b),this.aj());if(JD(b,99)){a=BD(b,18);return (a.Bb&Tje)!=0}else{return false}};_.Xc=function EOd(a){var b,c,d,e;d=this.Qi(a);if(d>=0)return d;if(this.Fk()){for(c=0,e=this.Vi();c=0;--a){nOd(this,a,this.Oi(a))}}return this.Wi()};_.Qc=function QOd(a){var b;if(this.Ek()){for(b=this.Vi()-1;b>=0;--b){nOd(this,b,this.Oi(b))}}return this.Xi(a)};_.Xj=function ROd(){vwd(this)};_.oi=function SOd(a,b){return pOd(this,a,b)};var K8=mdb(yve,'DelegatingEcoreEList',742);bcb(1150,742,Uve,YOd);_.Hi=function _Od(a,b){TOd(this,a,BD(b,26))};_.Ii=function aPd(a){UOd(this,BD(a,26))};_.Oi=function gPd(a){var b,c;return b=BD(qud(VKd(this.a),a),87),c=b.c,JD(c,88)?BD(c,26):(jGd(),_Fd)};_.Ti=function lPd(a){var b,c;return b=BD(Xxd(VKd(this.a),a),87),c=b.c,JD(c,88)?BD(c,26):(jGd(),_Fd)};_.Ui=function mPd(a,b){return WOd(this,a,BD(b,26))};_.ai=function ZOd(){return false};_.Zi=function $Od(a,b,c,d,e){return null};_.Ji=function bPd(){return new EPd(this)};_.Ki=function cPd(){Uxd(VKd(this.a))};_.Li=function dPd(a){return VOd(this,a)};_.Mi=function ePd(a){var b,c;for(c=a.Kc();c.Ob();){b=c.Pb();if(!VOd(this,b)){return false}}return true};_.Ni=function fPd(a){var b,c,d;if(JD(a,15)){d=BD(a,15);if(d.gc()==VKd(this.a).i){for(b=d.Kc(),c=new Fyd(this);b.Ob();){if(PD(b.Pb())!==PD(Dyd(c))){return false}}return true}}return false};_.Pi=function hPd(){var a,b,c,d,e;c=1;for(b=new Fyd(VKd(this.a));b.e!=b.i.gc();){a=BD(Dyd(b),87);d=(e=a.c,JD(e,88)?BD(e,26):(jGd(),_Fd));c=31*c+(!d?0:FCb(d))}return c};_.Qi=function iPd(a){var b,c,d,e;d=0;for(c=new Fyd(VKd(this.a));c.e!=c.i.gc();){b=BD(Dyd(c),87);if(PD(a)===PD((e=b.c,JD(e,88)?BD(e,26):(jGd(),_Fd)))){return d}++d}return -1};_.Ri=function jPd(){return VKd(this.a).i==0};_.Si=function kPd(){return null};_.Vi=function nPd(){return VKd(this.a).i};_.Wi=function oPd(){var a,b,c,d,e,f;f=VKd(this.a).i;e=KC(SI,Uhe,1,f,5,1);c=0;for(b=new Fyd(VKd(this.a));b.e!=b.i.gc();){a=BD(Dyd(b),87);e[c++]=(d=a.c,JD(d,88)?BD(d,26):(jGd(),_Fd))}return e};_.Xi=function pPd(a){var b,c,d,e,f,g,h;h=VKd(this.a).i;if(a.lengthh&&NC(a,h,null);d=0;for(c=new Fyd(VKd(this.a));c.e!=c.i.gc();){b=BD(Dyd(c),87);f=(g=b.c,JD(g,88)?BD(g,26):(jGd(),_Fd));NC(a,d++,f)}return a};_.Yi=function qPd(){var a,b,c,d,e;e=new Hfb;e.a+='[';a=VKd(this.a);for(b=0,d=VKd(this.a).i;b>16,e>=0?aKd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,6,c);case 9:return !this.a&&(this.a=new cUd(g5,this,9,5)),Sxd(this.a,a,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),UFd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),UFd)),a,c)};_.jh=function dQd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 6:return _hd(this,null,6,c);case 7:return !this.A&&(this.A=new K4d(u5,this,7)),Txd(this.A,a,c);case 9:return !this.a&&(this.a=new cUd(g5,this,9,5)),Txd(this.a,a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),UFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),UFd)),a,c)};_.lh=function eQd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return !!dKd(this);case 4:return !!$Pd(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return !!ZJd(this);case 7:return !!this.A&&this.A.i!=0;case 8:return (this.Bb&256)==0;case 9:return !!this.a&&this.a.i!=0;}return cid(this,a-aLd((jGd(),UFd)),XKd((b=BD(Ajd(this,16),26),!b?UFd:b),a))};_.sh=function fQd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:lKd(this,GD(b));return;case 2:iKd(this,GD(b));return;case 5:kKd(this,GD(b));return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);!this.A&&(this.A=new K4d(u5,this,7));ytd(this.A,BD(b,14));return;case 8:LPd(this,Ccb(DD(b)));return;case 9:!this.a&&(this.a=new cUd(g5,this,9,5));Uxd(this.a);!this.a&&(this.a=new cUd(g5,this,9,5));ytd(this.a,BD(b,14));return;}did(this,a-aLd((jGd(),UFd)),XKd((c=BD(Ajd(this,16),26),!c?UFd:c),a),b)};_.zh=function gQd(){return jGd(),UFd};_.Bh=function hQd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,179)&&(BD(this.Cb,179).tb=null);pnd(this,null);return;case 2:$Jd(this,null);_Jd(this,this.D);return;case 5:kKd(this,null);return;case 7:!this.A&&(this.A=new K4d(u5,this,7));Uxd(this.A);return;case 8:LPd(this,true);return;case 9:!this.a&&(this.a=new cUd(g5,this,9,5));Uxd(this.a);return;}eid(this,a-aLd((jGd(),UFd)),XKd((b=BD(Ajd(this,16),26),!b?UFd:b),a))};_.Gh=function iQd(){var a,b;if(this.a){for(a=0,b=this.a.i;a>16==5?BD(this.Cb,671):null;}return bid(this,a-aLd((jGd(),VFd)),XKd((d=BD(Ajd(this,16),26),!d?VFd:d),a),b,c)};_.hh=function uQd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 5:!!this.Cb&&(c=(e=this.Db>>16,e>=0?mQd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,5,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),VFd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),VFd)),a,c)};_.jh=function vQd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 5:return _hd(this,null,5,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),VFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),VFd)),a,c)};_.lh=function wQd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return !!this.b;case 4:return this.c!=null;case 5:return !!(this.Db>>16==5?BD(this.Cb,671):null);}return cid(this,a-aLd((jGd(),VFd)),XKd((b=BD(Ajd(this,16),26),!b?VFd:b),a))};_.sh=function xQd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:pnd(this,GD(b));return;case 2:qQd(this,BD(b,19).a);return;case 3:oQd(this,BD(b,1940));return;case 4:pQd(this,GD(b));return;}did(this,a-aLd((jGd(),VFd)),XKd((c=BD(Ajd(this,16),26),!c?VFd:c),a),b)};_.zh=function yQd(){return jGd(),VFd};_.Bh=function zQd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:pnd(this,null);return;case 2:qQd(this,0);return;case 3:oQd(this,null);return;case 4:pQd(this,null);return;}eid(this,a-aLd((jGd(),VFd)),XKd((b=BD(Ajd(this,16),26),!b?VFd:b),a))};_.Ib=function BQd(){var a;return a=this.c,a==null?this.zb:a};_.b=null;_.c=null;_.d=0;var a6=mdb(qte,'EEnumLiteralImpl',573);var c6=odb(qte,'EFactoryImpl/InternalEDateTimeFormat');bcb(489,1,{2015:1},EQd);var b6=mdb(qte,'EFactoryImpl/1ClientInternalEDateTimeFormat',489);bcb(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},UQd);_.Sg=function VQd(a,b,c){var d;c=_hd(this,a,b,c);if(!!this.e&&JD(a,170)){d=MQd(this,this.e);d!=this.c&&(c=QQd(this,d,c))}return c};_._g=function WQd(a,b,c){var d;switch(a){case 0:return this.f;case 1:return !this.d&&(this.d=new xMd(j5,this,1)),this.d;case 2:if(b)return KQd(this);return this.c;case 3:return this.b;case 4:return this.e;case 5:if(b)return JQd(this);return this.a;}return bid(this,a-aLd((jGd(),XFd)),XKd((d=BD(Ajd(this,16),26),!d?XFd:d),a),b,c)};_.jh=function XQd(a,b,c){var d,e;switch(b){case 0:return IQd(this,null,c);case 1:return !this.d&&(this.d=new xMd(j5,this,1)),Txd(this.d,a,c);case 3:return GQd(this,null,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),XFd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),XFd)),a,c)};_.lh=function YQd(a){var b;switch(a){case 0:return !!this.f;case 1:return !!this.d&&this.d.i!=0;case 2:return !!this.c;case 3:return !!this.b;case 4:return !!this.e;case 5:return !!this.a;}return cid(this,a-aLd((jGd(),XFd)),XKd((b=BD(Ajd(this,16),26),!b?XFd:b),a))};_.sh=function ZQd(a,b){var c;switch(a){case 0:SQd(this,BD(b,87));return;case 1:!this.d&&(this.d=new xMd(j5,this,1));Uxd(this.d);!this.d&&(this.d=new xMd(j5,this,1));ytd(this.d,BD(b,14));return;case 3:PQd(this,BD(b,87));return;case 4:RQd(this,BD(b,836));return;case 5:NQd(this,BD(b,138));return;}did(this,a-aLd((jGd(),XFd)),XKd((c=BD(Ajd(this,16),26),!c?XFd:c),a),b)};_.zh=function $Qd(){return jGd(),XFd};_.Bh=function _Qd(a){var b;switch(a){case 0:SQd(this,null);return;case 1:!this.d&&(this.d=new xMd(j5,this,1));Uxd(this.d);return;case 3:PQd(this,null);return;case 4:RQd(this,null);return;case 5:NQd(this,null);return;}eid(this,a-aLd((jGd(),XFd)),XKd((b=BD(Ajd(this,16),26),!b?XFd:b),a))};_.Ib=function aRd(){var a;a=new Wfb(Eid(this));a.a+=' (expression: ';TQd(this,a);a.a+=')';return a.a};var FQd;var e6=mdb(qte,'EGenericTypeImpl',241);bcb(1969,1964,Vve);_.Xh=function cRd(a,b){bRd(this,a,b)};_.lk=function dRd(a,b){bRd(this,this.gc(),a);return b};_.pi=function eRd(a){return Ut(this.Gi(),a)};_.Zh=function fRd(){return this.$h()};_.Gi=function gRd(){return new O0d(this)};_.$h=function hRd(){return this._h(0)};_._h=function iRd(a){return this.Gi().Zc(a)};_.mk=function jRd(a,b){ze(this,a,true);return b};_.ii=function kRd(a,b){var c,d;d=Vt(this,b);c=this.Zc(a);c.Rb(d);return d};_.ji=function lRd(a,b){var c;ze(this,b,true);c=this.Zc(a);c.Rb(b)};var B8=mdb(yve,'AbstractSequentialInternalEList',1969);bcb(486,1969,Vve,qRd);_.pi=function rRd(a){return Ut(this.Gi(),a)};_.Zh=function sRd(){if(this.b==null){return LRd(),LRd(),KRd}return this.Jk()};_.Gi=function tRd(){return new w4d(this.a,this.b)};_.$h=function uRd(){if(this.b==null){return LRd(),LRd(),KRd}return this.Jk()};_._h=function vRd(a){var b,c;if(this.b==null){if(a<0||a>1){throw vbb(new qcb(gve+a+', size=0'))}return LRd(),LRd(),KRd}c=this.Jk();for(b=0;b0){b=this.c[--this.d];if((!this.e||b.Gj()!=x2||b.aj()!=0)&&(!this.Mk()||this.b.mh(b))){f=this.b.bh(b,this.Lk());this.f=(Q6d(),BD(b,66).Oj());if(this.f||b.$j()){if(this.Lk()){d=BD(f,15);this.k=d}else{d=BD(f,69);this.k=this.j=d}if(JD(this.k,54)){this.o=this.k.gc();this.n=this.o}else{this.p=!this.j?this.k.Zc(this.k.gc()):this.j._h(this.k.gc())}if(!this.p?PRd(this):QRd(this,this.p)){e=!this.p?!this.j?this.k.Xb(--this.n):this.j.pi(--this.n):this.p.Ub();if(this.f){a=BD(e,72);a.ak();c=a.dd();this.i=c}else{c=e;this.i=c}this.g=-3;return true}}else if(f!=null){this.k=null;this.p=null;c=f;this.i=c;this.g=-2;return true}}}this.k=null;this.p=null;this.g=-1;return false}else{e=!this.p?!this.j?this.k.Xb(--this.n):this.j.pi(--this.n):this.p.Ub();if(this.f){a=BD(e,72);a.ak();c=a.dd();this.i=c}else{c=e;this.i=c}this.g=-3;return true}}}};_.Pb=function XRd(){return MRd(this)};_.Tb=function YRd(){return this.a};_.Ub=function ZRd(){var a;if(this.g<-1||this.Sb()){--this.a;this.g=0;a=this.i;this.Sb();return a}else{throw vbb(new utb)}};_.Vb=function $Rd(){return this.a-1};_.Qb=function _Rd(){throw vbb(new bgb)};_.Lk=function aSd(){return false};_.Wb=function bSd(a){throw vbb(new bgb)};_.Mk=function cSd(){return true};_.a=0;_.d=0;_.f=false;_.g=0;_.n=0;_.o=0;var KRd;var P8=mdb(yve,'EContentsEList/FeatureIteratorImpl',279);bcb(697,279,Wve,dSd);_.Lk=function eSd(){return true};var Q8=mdb(yve,'EContentsEList/ResolvingFeatureIteratorImpl',697);bcb(1157,697,Wve,fSd);_.Mk=function gSd(){return false};var g6=mdb(qte,'ENamedElementImpl/1/1',1157);bcb(1158,279,Wve,hSd);_.Mk=function iSd(){return false};var h6=mdb(qte,'ENamedElementImpl/1/2',1158);bcb(36,143,fve,lSd,mSd,nSd,oSd,pSd,qSd,rSd,sSd,tSd,uSd,vSd,wSd,xSd,ySd,zSd,ASd,BSd,CSd,DSd,ESd,FSd,GSd,HSd,ISd,JSd);_._i=function KSd(){return kSd(this)};_.gj=function LSd(){var a;a=kSd(this);if(a){return a.zj()}return null};_.yi=function MSd(a){this.b==-1&&!!this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj()));return this.c.Og(this.b,a)};_.Ai=function NSd(){return this.c};_.hj=function OSd(){var a;a=kSd(this);if(a){return a.Kj()}return false};_.b=-1;var k6=mdb(qte,'ENotificationImpl',36);bcb(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},SSd);_.Qg=function TSd(a){return PSd(this,a)};_._g=function USd(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),f=this.t,f>1||f==-1?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?BD(this.Cb,26):null;case 11:return !this.d&&(this.d=new K4d(u5,this,11)),this.d;case 12:return !this.c&&(this.c=new cUd(p5,this,12,10)),this.c;case 13:return !this.a&&(this.a=new fTd(this,this)),this.a;case 14:return QSd(this);}return bid(this,a-aLd((jGd(),aGd)),XKd((d=BD(Ajd(this,16),26),!d?aGd:d),a),b,c)};_.hh=function VSd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?PSd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,10,c);case 12:return !this.c&&(this.c=new cUd(p5,this,12,10)),Sxd(this.c,a,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),aGd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),aGd)),a,c)};_.jh=function WSd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 9:return vId(this,c);case 10:return _hd(this,null,10,c);case 11:return !this.d&&(this.d=new K4d(u5,this,11)),Txd(this.d,a,c);case 12:return !this.c&&(this.c=new cUd(p5,this,12,10)),Txd(this.c,a,c);case 14:return Txd(QSd(this),a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),aGd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),aGd)),a,c)};_.lh=function XSd(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);case 10:return !!(this.Db>>16==10?BD(this.Cb,26):null);case 11:return !!this.d&&this.d.i!=0;case 12:return !!this.c&&this.c.i!=0;case 13:return !!this.a&&QSd(this.a.a).i!=0&&!(!!this.b&&QTd(this.b));case 14:return !!this.b&&QTd(this.b);}return cid(this,a-aLd((jGd(),aGd)),XKd((b=BD(Ajd(this,16),26),!b?aGd:b),a))};_.sh=function YSd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:pnd(this,GD(b));return;case 2:BId(this,Ccb(DD(b)));return;case 3:CId(this,Ccb(DD(b)));return;case 4:AId(this,BD(b,19).a);return;case 5:DId(this,BD(b,19).a);return;case 8:yId(this,BD(b,138));return;case 9:d=xId(this,BD(b,87),null);!!d&&d.Fi();return;case 11:!this.d&&(this.d=new K4d(u5,this,11));Uxd(this.d);!this.d&&(this.d=new K4d(u5,this,11));ytd(this.d,BD(b,14));return;case 12:!this.c&&(this.c=new cUd(p5,this,12,10));Uxd(this.c);!this.c&&(this.c=new cUd(p5,this,12,10));ytd(this.c,BD(b,14));return;case 13:!this.a&&(this.a=new fTd(this,this));vwd(this.a);!this.a&&(this.a=new fTd(this,this));ytd(this.a,BD(b,14));return;case 14:Uxd(QSd(this));ytd(QSd(this),BD(b,14));return;}did(this,a-aLd((jGd(),aGd)),XKd((c=BD(Ajd(this,16),26),!c?aGd:c),a),b)};_.zh=function ZSd(){return jGd(),aGd};_.Bh=function $Sd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:pnd(this,null);return;case 2:BId(this,true);return;case 3:CId(this,true);return;case 4:AId(this,0);return;case 5:DId(this,1);return;case 8:yId(this,null);return;case 9:c=xId(this,null,null);!!c&&c.Fi();return;case 11:!this.d&&(this.d=new K4d(u5,this,11));Uxd(this.d);return;case 12:!this.c&&(this.c=new cUd(p5,this,12,10));Uxd(this.c);return;case 13:!!this.a&&vwd(this.a);return;case 14:!!this.b&&Uxd(this.b);return;}eid(this,a-aLd((jGd(),aGd)),XKd((b=BD(Ajd(this,16),26),!b?aGd:b),a))};_.Gh=function _Sd(){var a,b;if(this.c){for(a=0,b=this.c.i;ah&&NC(a,h,null);d=0;for(c=new Fyd(QSd(this.a));c.e!=c.i.gc();){b=BD(Dyd(c),87);f=(g=b.c,g?g:(jGd(),YFd));NC(a,d++,f)}return a};_.Yi=function zTd(){var a,b,c,d,e;e=new Hfb;e.a+='[';a=QSd(this.a);for(b=0,d=QSd(this.a).i;b1)}case 5:{return FLd(this,a,b,c,d,this.i-BD(c,15).gc()>0)}default:{return new pSd(this.e,a,this.c,b,c,d,true)}}};_.ij=function WTd(){return true};_.fj=function XTd(){return QTd(this)};_.Xj=function aUd(){Uxd(this)};var o6=mdb(qte,'EOperationImpl/2',1341);bcb(498,1,{1938:1,498:1},bUd);var q6=mdb(qte,'EPackageImpl/1',498);bcb(16,85,Pve,cUd);_.zk=function dUd(){return this.d};_.Ak=function eUd(){return this.b};_.Dk=function fUd(){return true};_.b=0;var b9=mdb(yve,'EObjectContainmentWithInverseEList',16);bcb(353,16,Pve,gUd);_.Ek=function hUd(){return true};_.li=function iUd(a,b){return ILd(this,a,BD(b,56))};var $8=mdb(yve,'EObjectContainmentWithInverseEList/Resolving',353);bcb(298,353,Pve,jUd);_.ci=function kUd(){this.a.tb=null};var r6=mdb(qte,'EPackageImpl/2',298);bcb(1228,1,{},lUd);var s6=mdb(qte,'EPackageImpl/3',1228);bcb(718,43,fke,oUd);_._b=function pUd(a){return ND(a)?Qhb(this,a):!!irb(this.f,a)};var u6=mdb(qte,'EPackageRegistryImpl',718);bcb(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},rUd);_.Qg=function sUd(a){return qUd(this,a)};_._g=function tUd(a,b,c){var d,e,f;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),f=this.t,f>1||f==-1?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;case 10:return this.Db>>16==10?BD(this.Cb,59):null;}return bid(this,a-aLd((jGd(),dGd)),XKd((d=BD(Ajd(this,16),26),!d?dGd:d),a),b,c)};_.hh=function uUd(a,b,c){var d,e,f;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Sxd(this.Ab,a,c);case 10:!!this.Cb&&(c=(e=this.Db>>16,e>=0?qUd(this,c):this.Cb.ih(this,-1-e,null,c)));return _hd(this,a,10,c);}return f=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),dGd):d),b),66),f.Nj().Qj(this,yjd(this),b-aLd((jGd(),dGd)),a,c)};_.jh=function vUd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 9:return vId(this,c);case 10:return _hd(this,null,10,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),dGd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),dGd)),a,c)};_.lh=function wUd(a){var b,c,d;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return d=this.t,d>1||d==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);case 10:return !!(this.Db>>16==10?BD(this.Cb,59):null);}return cid(this,a-aLd((jGd(),dGd)),XKd((b=BD(Ajd(this,16),26),!b?dGd:b),a))};_.zh=function xUd(){return jGd(),dGd};var v6=mdb(qte,'EParameterImpl',509);bcb(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},FUd);_._g=function GUd(a,b,c){var d,e,f,g;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Bcb(),(this.Bb&256)!=0?true:false;case 3:return Bcb(),(this.Bb&512)!=0?true:false;case 4:return meb(this.s);case 5:return meb(this.t);case 6:return Bcb(),g=this.t,g>1||g==-1?true:false;case 7:return Bcb(),e=this.s,e>=1?true:false;case 8:if(b)return wId(this);return this.r;case 9:return this.q;case 10:return Bcb(),(this.Bb&zte)!=0?true:false;case 11:return Bcb(),(this.Bb&Dve)!=0?true:false;case 12:return Bcb(),(this.Bb&Rje)!=0?true:false;case 13:return this.j;case 14:return VId(this);case 15:return Bcb(),(this.Bb&Cve)!=0?true:false;case 16:return Bcb(),(this.Bb&oie)!=0?true:false;case 17:return WId(this);case 18:return Bcb(),(this.Bb&ote)!=0?true:false;case 19:return Bcb(),f=zUd(this),!!f&&(f.Bb&ote)!=0?true:false;case 20:return Bcb(),(this.Bb&Tje)!=0?true:false;case 21:if(b)return zUd(this);return this.b;case 22:if(b)return AUd(this);return yUd(this);case 23:return !this.a&&(this.a=new _4d(b5,this,23)),this.a;}return bid(this,a-aLd((jGd(),eGd)),XKd((d=BD(Ajd(this,16),26),!d?eGd:d),a),b,c)};_.lh=function HUd(a){var b,c,d,e;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return (this.Bb&256)==0;case 3:return (this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return e=this.t,e>1||e==-1;case 7:return c=this.s,c>=1;case 8:return !!this.r&&!this.q.e&&LQd(this.q).i==0;case 9:return !!this.q&&!(!!this.r&&!this.q.e&&LQd(this.q).i==0);case 10:return (this.Bb&zte)==0;case 11:return (this.Bb&Dve)!=0;case 12:return (this.Bb&Rje)!=0;case 13:return this.j!=null;case 14:return VId(this)!=null;case 15:return (this.Bb&Cve)!=0;case 16:return (this.Bb&oie)!=0;case 17:return !!WId(this);case 18:return (this.Bb&ote)!=0;case 19:return d=zUd(this),!!d&&(d.Bb&ote)!=0;case 20:return (this.Bb&Tje)==0;case 21:return !!this.b;case 22:return !!yUd(this);case 23:return !!this.a&&this.a.i!=0;}return cid(this,a-aLd((jGd(),eGd)),XKd((b=BD(Ajd(this,16),26),!b?eGd:b),a))};_.sh=function IUd(a,b){var c,d;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:cJd(this,GD(b));return;case 2:BId(this,Ccb(DD(b)));return;case 3:CId(this,Ccb(DD(b)));return;case 4:AId(this,BD(b,19).a);return;case 5:DId(this,BD(b,19).a);return;case 8:yId(this,BD(b,138));return;case 9:d=xId(this,BD(b,87),null);!!d&&d.Fi();return;case 10:ZId(this,Ccb(DD(b)));return;case 11:fJd(this,Ccb(DD(b)));return;case 12:dJd(this,Ccb(DD(b)));return;case 13:$Id(this,GD(b));return;case 15:eJd(this,Ccb(DD(b)));return;case 16:aJd(this,Ccb(DD(b)));return;case 18:BUd(this,Ccb(DD(b)));return;case 20:EUd(this,Ccb(DD(b)));return;case 21:DUd(this,BD(b,18));return;case 23:!this.a&&(this.a=new _4d(b5,this,23));Uxd(this.a);!this.a&&(this.a=new _4d(b5,this,23));ytd(this.a,BD(b,14));return;}did(this,a-aLd((jGd(),eGd)),XKd((c=BD(Ajd(this,16),26),!c?eGd:c),a),b)};_.zh=function JUd(){return jGd(),eGd};_.Bh=function KUd(a){var b,c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:JD(this.Cb,88)&&XMd($Kd(BD(this.Cb,88)),4);pnd(this,null);return;case 2:BId(this,true);return;case 3:CId(this,true);return;case 4:AId(this,0);return;case 5:DId(this,1);return;case 8:yId(this,null);return;case 9:c=xId(this,null,null);!!c&&c.Fi();return;case 10:ZId(this,true);return;case 11:fJd(this,false);return;case 12:dJd(this,false);return;case 13:this.i=null;_Id(this,null);return;case 15:eJd(this,false);return;case 16:aJd(this,false);return;case 18:CUd(this,false);JD(this.Cb,88)&&XMd($Kd(BD(this.Cb,88)),2);return;case 20:EUd(this,true);return;case 21:DUd(this,null);return;case 23:!this.a&&(this.a=new _4d(b5,this,23));Uxd(this.a);return;}eid(this,a-aLd((jGd(),eGd)),XKd((b=BD(Ajd(this,16),26),!b?eGd:b),a))};_.Gh=function LUd(){AUd(this);a2d(q1d((O6d(),M6d),this));wId(this);this.Bb|=1};_.Lj=function MUd(){return zUd(this)};_.qk=function NUd(){var a;return a=zUd(this),!!a&&(a.Bb&ote)!=0};_.rk=function OUd(){return (this.Bb&ote)!=0};_.sk=function PUd(){return (this.Bb&Tje)!=0};_.nk=function QUd(a,b){this.c=null;return zId(this,a,b)};_.Ib=function RUd(){var a;if((this.Db&64)!=0)return gJd(this);a=new Jfb(gJd(this));a.a+=' (containment: ';Ffb(a,(this.Bb&ote)!=0);a.a+=', resolveProxies: ';Ffb(a,(this.Bb&Tje)!=0);a.a+=')';return a.a};var w6=mdb(qte,'EReferenceImpl',99);bcb(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},XUd);_.Fb=function bVd(a){return this===a};_.cd=function dVd(){return this.b};_.dd=function eVd(){return this.c};_.Hb=function fVd(){return FCb(this)};_.Uh=function hVd(a){SUd(this,GD(a))};_.ed=function iVd(a){return WUd(this,GD(a))};_._g=function YUd(a,b,c){var d;switch(a){case 0:return this.b;case 1:return this.c;}return bid(this,a-aLd((jGd(),fGd)),XKd((d=BD(Ajd(this,16),26),!d?fGd:d),a),b,c)};_.lh=function ZUd(a){var b;switch(a){case 0:return this.b!=null;case 1:return this.c!=null;}return cid(this,a-aLd((jGd(),fGd)),XKd((b=BD(Ajd(this,16),26),!b?fGd:b),a))};_.sh=function $Ud(a,b){var c;switch(a){case 0:TUd(this,GD(b));return;case 1:VUd(this,GD(b));return;}did(this,a-aLd((jGd(),fGd)),XKd((c=BD(Ajd(this,16),26),!c?fGd:c),a),b)};_.zh=function _Ud(){return jGd(),fGd};_.Bh=function aVd(a){var b;switch(a){case 0:UUd(this,null);return;case 1:VUd(this,null);return;}eid(this,a-aLd((jGd(),fGd)),XKd((b=BD(Ajd(this,16),26),!b?fGd:b),a))};_.Sh=function cVd(){var a;if(this.a==-1){a=this.b;this.a=a==null?0:LCb(a)}return this.a};_.Th=function gVd(a){this.a=a};_.Ib=function jVd(){var a;if((this.Db&64)!=0)return Eid(this);a=new Jfb(Eid(this));a.a+=' (key: ';Efb(a,this.b);a.a+=', value: ';Efb(a,this.c);a.a+=')';return a.a};_.a=-1;_.b=null;_.c=null;var x6=mdb(qte,'EStringToStringMapEntryImpl',548);var D9=odb(yve,'FeatureMap/Entry/Internal');bcb(565,1,Xve);_.Ok=function mVd(a){return this.Pk(BD(a,49))};_.Pk=function nVd(a){return this.Ok(a)};_.Fb=function oVd(a){var b,c;if(this===a){return true}else if(JD(a,72)){b=BD(a,72);if(b.ak()==this.c){c=this.dd();return c==null?b.dd()==null:pb(c,b.dd())}else{return false}}else{return false}};_.ak=function pVd(){return this.c};_.Hb=function qVd(){var a;a=this.dd();return tb(this.c)^(a==null?0:tb(a))};_.Ib=function rVd(){var a,b;a=this.c;b=bKd(a.Hj()).Ph();a.ne();return (b!=null&&b.length!=0?b+':'+a.ne():a.ne())+'='+this.dd()};var y6=mdb(qte,'EStructuralFeatureImpl/BasicFeatureMapEntry',565);bcb(776,565,Xve,uVd);_.Pk=function vVd(a){return new uVd(this.c,a)};_.dd=function wVd(){return this.a};_.Qk=function xVd(a,b,c){return sVd(this,a,this.a,b,c)};_.Rk=function yVd(a,b,c){return tVd(this,a,this.a,b,c)};var z6=mdb(qte,'EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry',776);bcb(1314,1,{},zVd);_.Pj=function AVd(a,b,c,d,e){var f;f=BD(gid(a,this.b),215);return f.nl(this.a).Wj(d)};_.Qj=function BVd(a,b,c,d,e){var f;f=BD(gid(a,this.b),215);return f.el(this.a,d,e)};_.Rj=function CVd(a,b,c,d,e){var f;f=BD(gid(a,this.b),215);return f.fl(this.a,d,e)};_.Sj=function DVd(a,b,c){var d;d=BD(gid(a,this.b),215);return d.nl(this.a).fj()};_.Tj=function EVd(a,b,c,d){var e;e=BD(gid(a,this.b),215);e.nl(this.a).Wb(d)};_.Uj=function FVd(a,b,c){return BD(gid(a,this.b),215).nl(this.a)};_.Vj=function GVd(a,b,c){var d;d=BD(gid(a,this.b),215);d.nl(this.a).Xj()};var A6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator',1314);bcb(89,1,{},IVd,JVd,KVd,LVd);_.Pj=function MVd(a,b,c,d,e){var f;f=b.Ch(c);f==null&&b.Dh(c,f=HVd(this,a));if(!e){switch(this.e){case 50:case 41:return BD(f,589).sj();case 40:return BD(f,215).kl();}}return f};_.Qj=function NVd(a,b,c,d,e){var f,g;g=b.Ch(c);g==null&&b.Dh(c,g=HVd(this,a));f=BD(g,69).lk(d,e);return f};_.Rj=function OVd(a,b,c,d,e){var f;f=b.Ch(c);f!=null&&(e=BD(f,69).mk(d,e));return e};_.Sj=function PVd(a,b,c){var d;d=b.Ch(c);return d!=null&&BD(d,76).fj()};_.Tj=function QVd(a,b,c,d){var e;e=BD(b.Ch(c),76);!e&&b.Dh(c,e=HVd(this,a));e.Wb(d)};_.Uj=function RVd(a,b,c){var d,e;e=b.Ch(c);e==null&&b.Dh(c,e=HVd(this,a));if(JD(e,76)){return BD(e,76)}else{d=BD(b.Ch(c),15);return new iYd(d)}};_.Vj=function SVd(a,b,c){var d;d=BD(b.Ch(c),76);!d&&b.Dh(c,d=HVd(this,a));d.Xj()};_.b=0;_.e=0;var B6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateMany',89);bcb(504,1,{});_.Qj=function WVd(a,b,c,d,e){throw vbb(new bgb)};_.Rj=function XVd(a,b,c,d,e){throw vbb(new bgb)};_.Uj=function YVd(a,b,c){return new ZVd(this,a,b,c)};var TVd;var i7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingle',504);bcb(1331,1,zve,ZVd);_.Wj=function $Vd(a){return this.a.Pj(this.c,this.d,this.b,a,true)};_.fj=function _Vd(){return this.a.Sj(this.c,this.d,this.b)};_.Wb=function aWd(a){this.a.Tj(this.c,this.d,this.b,a)};_.Xj=function bWd(){this.a.Vj(this.c,this.d,this.b)};_.b=0;var C6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingle/1',1331);bcb(769,504,{},cWd);_.Pj=function dWd(a,b,c,d,e){return Nid(a,a.eh(),a.Vg())==this.b?this.sk()&&d?aid(a):a.eh():null};_.Qj=function eWd(a,b,c,d,e){var f,g;!!a.eh()&&(e=(f=a.Vg(),f>=0?a.Qg(e):a.eh().ih(a,-1-f,null,e)));g=bLd(a.Tg(),this.e);return a.Sg(d,g,e)};_.Rj=function fWd(a,b,c,d,e){var f;f=bLd(a.Tg(),this.e);return a.Sg(null,f,e)};_.Sj=function gWd(a,b,c){var d;d=bLd(a.Tg(),this.e);return !!a.eh()&&a.Vg()==d};_.Tj=function hWd(a,b,c,d){var e,f,g,h,i;if(d!=null&&!fKd(this.a,d)){throw vbb(new Cdb(Yve+(JD(d,56)?gLd(BD(d,56).Tg()):idb(rb(d)))+Zve+this.a+\"'\"))}e=a.eh();g=bLd(a.Tg(),this.e);if(PD(d)!==PD(e)||a.Vg()!=g&&d!=null){if(p6d(a,BD(d,56)))throw vbb(new Wdb(ste+a.Ib()));i=null;!!e&&(i=(f=a.Vg(),f>=0?a.Qg(i):a.eh().ih(a,-1-f,null,i)));h=BD(d,49);!!h&&(i=h.gh(a,bLd(h.Tg(),this.b),null,i));i=a.Sg(h,g,i);!!i&&i.Fi()}else{a.Lg()&&a.Mg()&&Uhd(a,new nSd(a,1,g,d,d))}};_.Vj=function iWd(a,b,c){var d,e,f,g;d=a.eh();if(d){g=(e=a.Vg(),e>=0?a.Qg(null):a.eh().ih(a,-1-e,null,null));f=bLd(a.Tg(),this.e);g=a.Sg(null,f,g);!!g&&g.Fi()}else{a.Lg()&&a.Mg()&&Uhd(a,new DSd(a,1,this.e,null,null))}};_.sk=function jWd(){return false};var E6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainer',769);bcb(1315,769,{},kWd);_.sk=function lWd(){return true};var D6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving',1315);bcb(563,504,{});_.Pj=function oWd(a,b,c,d,e){var f;return f=b.Ch(c),f==null?this.b:PD(f)===PD(TVd)?null:f};_.Sj=function pWd(a,b,c){var d;d=b.Ch(c);return d!=null&&(PD(d)===PD(TVd)||!pb(d,this.b))};_.Tj=function qWd(a,b,c,d){var e,f;if(a.Lg()&&a.Mg()){e=(f=b.Ch(c),f==null?this.b:PD(f)===PD(TVd)?null:f);if(d==null){if(this.c!=null){b.Dh(c,null);d=this.b}else this.b!=null?b.Dh(c,TVd):b.Dh(c,null)}else{this.Sk(d);b.Dh(c,d)}Uhd(a,this.d.Tk(a,1,this.e,e,d))}else{if(d==null){this.c!=null?b.Dh(c,null):this.b!=null?b.Dh(c,TVd):b.Dh(c,null)}else{this.Sk(d);b.Dh(c,d)}}};_.Vj=function rWd(a,b,c){var d,e;if(a.Lg()&&a.Mg()){d=(e=b.Ch(c),e==null?this.b:PD(e)===PD(TVd)?null:e);b.Eh(c);Uhd(a,this.d.Tk(a,1,this.e,d,this.b))}else{b.Eh(c)}};_.Sk=function sWd(a){throw vbb(new Bdb)};var T6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData',563);bcb($ve,1,{},DWd);_.Tk=function EWd(a,b,c,d,e){return new DSd(a,b,c,d,e)};_.Uk=function FWd(a,b,c,d,e,f){return new FSd(a,b,c,d,e,f)};var tWd,uWd,vWd,wWd,xWd,yWd,zWd,AWd,BWd;var N6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator',$ve);bcb(1332,$ve,{},GWd);_.Tk=function HWd(a,b,c,d,e){return new ISd(a,b,c,Ccb(DD(d)),Ccb(DD(e)))};_.Uk=function IWd(a,b,c,d,e,f){return new JSd(a,b,c,Ccb(DD(d)),Ccb(DD(e)),f)};var F6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1',1332);bcb(1333,$ve,{},JWd);_.Tk=function KWd(a,b,c,d,e){return new rSd(a,b,c,BD(d,217).a,BD(e,217).a)};_.Uk=function LWd(a,b,c,d,e,f){return new sSd(a,b,c,BD(d,217).a,BD(e,217).a,f)};var G6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2',1333);bcb(1334,$ve,{},MWd);_.Tk=function NWd(a,b,c,d,e){return new tSd(a,b,c,BD(d,172).a,BD(e,172).a)};_.Uk=function OWd(a,b,c,d,e,f){return new uSd(a,b,c,BD(d,172).a,BD(e,172).a,f)};var H6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3',1334);bcb(1335,$ve,{},PWd);_.Tk=function QWd(a,b,c,d,e){return new vSd(a,b,c,Edb(ED(d)),Edb(ED(e)))};_.Uk=function RWd(a,b,c,d,e,f){return new wSd(a,b,c,Edb(ED(d)),Edb(ED(e)),f)};var I6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4',1335);bcb(1336,$ve,{},SWd);_.Tk=function TWd(a,b,c,d,e){return new xSd(a,b,c,BD(d,155).a,BD(e,155).a)};_.Uk=function UWd(a,b,c,d,e,f){return new ySd(a,b,c,BD(d,155).a,BD(e,155).a,f)};var J6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5',1336);bcb(1337,$ve,{},VWd);_.Tk=function WWd(a,b,c,d,e){return new zSd(a,b,c,BD(d,19).a,BD(e,19).a)};_.Uk=function XWd(a,b,c,d,e,f){return new ASd(a,b,c,BD(d,19).a,BD(e,19).a,f)};var K6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6',1337);bcb(1338,$ve,{},YWd);_.Tk=function ZWd(a,b,c,d,e){return new BSd(a,b,c,BD(d,162).a,BD(e,162).a)};_.Uk=function $Wd(a,b,c,d,e,f){return new CSd(a,b,c,BD(d,162).a,BD(e,162).a,f)};var L6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7',1338);bcb(1339,$ve,{},_Wd);_.Tk=function aXd(a,b,c,d,e){return new GSd(a,b,c,BD(d,184).a,BD(e,184).a)};_.Uk=function bXd(a,b,c,d,e,f){return new HSd(a,b,c,BD(d,184).a,BD(e,184).a,f)};var M6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8',1339);bcb(1317,563,{},cXd);_.Sk=function dXd(a){if(!this.a.wj(a)){throw vbb(new Cdb(Yve+rb(a)+Zve+this.a+\"'\"))}};var O6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic',1317);bcb(1318,563,{},eXd);_.Sk=function fXd(a){};var P6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic',1318);bcb(770,563,{});_.Sj=function gXd(a,b,c){var d;d=b.Ch(c);return d!=null};_.Tj=function hXd(a,b,c,d){var e,f;if(a.Lg()&&a.Mg()){e=true;f=b.Ch(c);if(f==null){e=false;f=this.b}else PD(f)===PD(TVd)&&(f=null);if(d==null){if(this.c!=null){b.Dh(c,null);d=this.b}else{b.Dh(c,TVd)}}else{this.Sk(d);b.Dh(c,d)}Uhd(a,this.d.Uk(a,1,this.e,f,d,!e))}else{if(d==null){this.c!=null?b.Dh(c,null):b.Dh(c,TVd)}else{this.Sk(d);b.Dh(c,d)}}};_.Vj=function iXd(a,b,c){var d,e;if(a.Lg()&&a.Mg()){d=true;e=b.Ch(c);if(e==null){d=false;e=this.b}else PD(e)===PD(TVd)&&(e=null);b.Eh(c);Uhd(a,this.d.Uk(a,2,this.e,e,this.b,d))}else{b.Eh(c)}};var S6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable',770);bcb(1319,770,{},jXd);_.Sk=function kXd(a){if(!this.a.wj(a)){throw vbb(new Cdb(Yve+rb(a)+Zve+this.a+\"'\"))}};var Q6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic',1319);bcb(1320,770,{},lXd);_.Sk=function mXd(a){};var R6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic',1320);bcb(398,504,{},nXd);_.Pj=function pXd(a,b,c,d,e){var f,g,h,i,j;j=b.Ch(c);if(this.Kj()&&PD(j)===PD(TVd)){return null}else if(this.sk()&&d&&j!=null){h=BD(j,49);if(h.kh()){i=xid(a,h);if(h!=i){if(!fKd(this.a,i)){throw vbb(new Cdb(Yve+rb(i)+Zve+this.a+\"'\"))}b.Dh(c,j=i);if(this.rk()){f=BD(i,49);g=h.ih(a,!this.b?-1-bLd(a.Tg(),this.e):bLd(h.Tg(),this.b),null,null);!f.eh()&&(g=f.gh(a,!this.b?-1-bLd(a.Tg(),this.e):bLd(f.Tg(),this.b),null,g));!!g&&g.Fi()}a.Lg()&&a.Mg()&&Uhd(a,new DSd(a,9,this.e,h,i))}}return j}else{return j}};_.Qj=function qXd(a,b,c,d,e){var f,g;g=b.Ch(c);PD(g)===PD(TVd)&&(g=null);b.Dh(c,d);if(this.bj()){if(PD(g)!==PD(d)&&g!=null){f=BD(g,49);e=f.ih(a,bLd(f.Tg(),this.b),null,e)}}else this.rk()&&g!=null&&(e=BD(g,49).ih(a,-1-bLd(a.Tg(),this.e),null,e));if(a.Lg()&&a.Mg()){!e&&(e=new Ixd(4));e.Ei(new DSd(a,1,this.e,g,d))}return e};_.Rj=function rXd(a,b,c,d,e){var f;f=b.Ch(c);PD(f)===PD(TVd)&&(f=null);b.Eh(c);if(a.Lg()&&a.Mg()){!e&&(e=new Ixd(4));this.Kj()?e.Ei(new DSd(a,2,this.e,f,null)):e.Ei(new DSd(a,1,this.e,f,null))}return e};_.Sj=function sXd(a,b,c){var d;d=b.Ch(c);return d!=null};_.Tj=function tXd(a,b,c,d){var e,f,g,h,i;if(d!=null&&!fKd(this.a,d)){throw vbb(new Cdb(Yve+(JD(d,56)?gLd(BD(d,56).Tg()):idb(rb(d)))+Zve+this.a+\"'\"))}i=b.Ch(c);h=i!=null;this.Kj()&&PD(i)===PD(TVd)&&(i=null);g=null;if(this.bj()){if(PD(i)!==PD(d)){if(i!=null){e=BD(i,49);g=e.ih(a,bLd(e.Tg(),this.b),null,g)}if(d!=null){e=BD(d,49);g=e.gh(a,bLd(e.Tg(),this.b),null,g)}}}else if(this.rk()){if(PD(i)!==PD(d)){i!=null&&(g=BD(i,49).ih(a,-1-bLd(a.Tg(),this.e),null,g));d!=null&&(g=BD(d,49).gh(a,-1-bLd(a.Tg(),this.e),null,g))}}d==null&&this.Kj()?b.Dh(c,TVd):b.Dh(c,d);if(a.Lg()&&a.Mg()){f=new FSd(a,1,this.e,i,d,this.Kj()&&!h);if(!g){Uhd(a,f)}else{g.Ei(f);g.Fi()}}else !!g&&g.Fi()};_.Vj=function uXd(a,b,c){var d,e,f,g,h;h=b.Ch(c);g=h!=null;this.Kj()&&PD(h)===PD(TVd)&&(h=null);f=null;if(h!=null){if(this.bj()){d=BD(h,49);f=d.ih(a,bLd(d.Tg(),this.b),null,f)}else this.rk()&&(f=BD(h,49).ih(a,-1-bLd(a.Tg(),this.e),null,f))}b.Eh(c);if(a.Lg()&&a.Mg()){e=new FSd(a,this.Kj()?2:1,this.e,h,null,g);if(!f){Uhd(a,e)}else{f.Ei(e);f.Fi()}}else !!f&&f.Fi()};_.bj=function vXd(){return false};_.rk=function wXd(){return false};_.sk=function xXd(){return false};_.Kj=function yXd(){return false};var h7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObject',398);bcb(564,398,{},zXd);_.rk=function AXd(){return true};var _6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment',564);bcb(1323,564,{},BXd);_.sk=function CXd(){return true};var U6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving',1323);bcb(772,564,{},DXd);_.Kj=function EXd(){return true};var W6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable',772);bcb(1325,772,{},FXd);_.sk=function GXd(){return true};var V6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving',1325);bcb(640,564,{},HXd);_.bj=function IXd(){return true};var $6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse',640);bcb(1324,640,{},JXd);_.sk=function KXd(){return true};var X6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving',1324);bcb(773,640,{},LXd);_.Kj=function MXd(){return true};var Z6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable',773);bcb(1326,773,{},NXd);_.sk=function OXd(){return true};var Y6=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving',1326);bcb(641,398,{},PXd);_.sk=function QXd(){return true};var d7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving',641);bcb(1327,641,{},RXd);_.Kj=function SXd(){return true};var a7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable',1327);bcb(774,641,{},TXd);_.bj=function UXd(){return true};var c7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse',774);bcb(1328,774,{},VXd);_.Kj=function WXd(){return true};var b7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable',1328);bcb(1321,398,{},XXd);_.Kj=function YXd(){return true};var e7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable',1321);bcb(771,398,{},ZXd);_.bj=function $Xd(){return true};var g7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse',771);bcb(1322,771,{},_Xd);_.Kj=function aYd(){return true};var f7=mdb(qte,'EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable',1322);bcb(775,565,Xve,dYd);_.Pk=function eYd(a){return new dYd(this.a,this.c,a)};_.dd=function fYd(){return this.b};_.Qk=function gYd(a,b,c){return bYd(this,a,this.b,c)};_.Rk=function hYd(a,b,c){return cYd(this,a,this.b,c)};var j7=mdb(qte,'EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry',775);bcb(1329,1,zve,iYd);_.Wj=function jYd(a){return this.a};_.fj=function kYd(){return JD(this.a,95)?BD(this.a,95).fj():!this.a.dc()};_.Wb=function lYd(a){this.a.$b();this.a.Gc(BD(a,15))};_.Xj=function mYd(){JD(this.a,95)?BD(this.a,95).Xj():this.a.$b()};var k7=mdb(qte,'EStructuralFeatureImpl/SettingMany',1329);bcb(1330,565,Xve,nYd);_.Ok=function oYd(a){return new sYd((Q8d(),P8d),this.b.Ih(this.a,a))};_.dd=function pYd(){return null};_.Qk=function qYd(a,b,c){return c};_.Rk=function rYd(a,b,c){return c};var l7=mdb(qte,'EStructuralFeatureImpl/SimpleContentFeatureMapEntry',1330);bcb(642,565,Xve,sYd);_.Ok=function tYd(a){return new sYd(this.c,a)};_.dd=function uYd(){return this.a};_.Qk=function vYd(a,b,c){return c};_.Rk=function wYd(a,b,c){return c};var m7=mdb(qte,'EStructuralFeatureImpl/SimpleFeatureMapEntry',642);bcb(391,497,oue,xYd);_.ri=function yYd(a){return KC(c5,Uhe,26,a,0,1)};_.ni=function zYd(){return false};var o7=mdb(qte,'ESuperAdapter/1',391);bcb(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},BYd);_._g=function CYd(a,b,c){var d;switch(a){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),this.Ab;case 1:return this.zb;case 2:return !this.a&&(this.a=new KYd(this,j5,this)),this.a;}return bid(this,a-aLd((jGd(),iGd)),XKd((d=BD(Ajd(this,16),26),!d?iGd:d),a),b,c)};_.jh=function DYd(a,b,c){var d,e;switch(b){case 0:return !this.Ab&&(this.Ab=new cUd(a5,this,0,3)),Txd(this.Ab,a,c);case 2:return !this.a&&(this.a=new KYd(this,j5,this)),Txd(this.a,a,c);}return e=BD(XKd((d=BD(Ajd(this,16),26),!d?(jGd(),iGd):d),b),66),e.Nj().Rj(this,yjd(this),b-aLd((jGd(),iGd)),a,c)};_.lh=function EYd(a){var b;switch(a){case 0:return !!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return !!this.a&&this.a.i!=0;}return cid(this,a-aLd((jGd(),iGd)),XKd((b=BD(Ajd(this,16),26),!b?iGd:b),a))};_.sh=function FYd(a,b){var c;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);!this.Ab&&(this.Ab=new cUd(a5,this,0,3));ytd(this.Ab,BD(b,14));return;case 1:pnd(this,GD(b));return;case 2:!this.a&&(this.a=new KYd(this,j5,this));Uxd(this.a);!this.a&&(this.a=new KYd(this,j5,this));ytd(this.a,BD(b,14));return;}did(this,a-aLd((jGd(),iGd)),XKd((c=BD(Ajd(this,16),26),!c?iGd:c),a),b)};_.zh=function GYd(){return jGd(),iGd};_.Bh=function HYd(a){var b;switch(a){case 0:!this.Ab&&(this.Ab=new cUd(a5,this,0,3));Uxd(this.Ab);return;case 1:pnd(this,null);return;case 2:!this.a&&(this.a=new KYd(this,j5,this));Uxd(this.a);return;}eid(this,a-aLd((jGd(),iGd)),XKd((b=BD(Ajd(this,16),26),!b?iGd:b),a))};var u7=mdb(qte,'ETypeParameterImpl',444);bcb(445,85,Pve,KYd);_.cj=function LYd(a,b){return IYd(this,BD(a,87),b)};_.dj=function MYd(a,b){return JYd(this,BD(a,87),b)};var q7=mdb(qte,'ETypeParameterImpl/1',445);bcb(634,43,fke,NYd);_.ec=function OYd(){return new RYd(this)};var t7=mdb(qte,'ETypeParameterImpl/2',634);bcb(556,eie,fie,RYd);_.Fc=function SYd(a){return PYd(this,BD(a,87))};_.Gc=function TYd(a){var b,c,d;d=false;for(c=a.Kc();c.Ob();){b=BD(c.Pb(),87);Rhb(this.a,b,'')==null&&(d=true)}return d};_.$b=function UYd(){Uhb(this.a)};_.Hc=function VYd(a){return Mhb(this.a,a)};_.Kc=function WYd(){var a;return a=new nib((new eib(this.a)).a),new ZYd(a)};_.Mc=function XYd(a){return QYd(this,a)};_.gc=function YYd(){return Vhb(this.a)};var s7=mdb(qte,'ETypeParameterImpl/2/1',556);bcb(557,1,aie,ZYd);_.Nb=function $Yd(a){Rrb(this,a)};_.Pb=function aZd(){return BD(lib(this.a).cd(),87)};_.Ob=function _Yd(){return this.a.b};_.Qb=function bZd(){mib(this.a)};var r7=mdb(qte,'ETypeParameterImpl/2/1/1',557);bcb(1276,43,fke,cZd);_._b=function dZd(a){return ND(a)?Qhb(this,a):!!irb(this.f,a)};_.xc=function eZd(a){var b,c;b=ND(a)?Phb(this,a):Wd(irb(this.f,a));if(JD(b,837)){c=BD(b,837);b=c._j();Rhb(this,BD(a,235),b);return b}else return b!=null?b:a==null?(g5d(),f5d):null};var w7=mdb(qte,'EValidatorRegistryImpl',1276);bcb(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},mZd);_.Ih=function nZd(a,b){switch(a.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return b==null?null:fcb(b);case 25:return gZd(b);case 27:return hZd(b);case 28:return iZd(b);case 29:return b==null?null:CQd(Pmd[0],BD(b,199));case 41:return b==null?'':hdb(BD(b,290));case 42:return fcb(b);case 50:return GD(b);default:throw vbb(new Wdb(tte+a.ne()+ute));}};_.Jh=function oZd(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;switch(a.G==-1&&(a.G=(m=bKd(a),m?HLd(m.Mh(),a):-1)),a.G){case 0:return c=new OJd,c;case 1:return b=new RHd,b;case 2:return d=new hLd,d;case 4:return e=new MPd,e;case 5:return f=new aQd,f;case 6:return g=new rQd,g;case 7:return h=new $md,h;case 10:return j=new MGd,j;case 11:return k=new SSd,k;case 12:return l=new eod,l;case 13:return n=new rUd,n;case 14:return o=new FUd,o;case 17:return p=new XUd,p;case 18:return i=new UQd,i;case 19:return q=new BYd,q;default:throw vbb(new Wdb(xte+a.zb+ute));}};_.Kh=function pZd(a,b){switch(a.yj()){case 20:return b==null?null:new tgb(b);case 21:return b==null?null:new Ygb(b);case 23:case 22:return b==null?null:fZd(b);case 26:case 24:return b==null?null:Scb(Icb(b,-128,127)<<24>>24);case 25:return Xmd(b);case 27:return jZd(b);case 28:return kZd(b);case 29:return lZd(b);case 32:case 31:return b==null?null:Hcb(b);case 38:case 37:return b==null?null:new Odb(b);case 40:case 39:return b==null?null:meb(Icb(b,Rie,Ohe));case 41:return null;case 42:return b==null?null:null;case 44:case 43:return b==null?null:Aeb(Jcb(b));case 49:case 48:return b==null?null:Web(Icb(b,awe,32767)<<16>>16);case 50:return b;default:throw vbb(new Wdb(tte+a.ne()+ute));}};var x7=mdb(qte,'EcoreFactoryImpl',1313);bcb(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},AZd);_.gb=false;_.hb=false;var rZd,sZd=false;var o8=mdb(qte,'EcorePackageImpl',547);bcb(1184,1,{837:1},EZd);_._j=function FZd(){return I6d(),H6d};var I7=mdb(qte,'EcorePackageImpl/1',1184);bcb(1193,1,nwe,GZd);_.wj=function HZd(a){return JD(a,147)};_.xj=function IZd(a){return KC(k5,Uhe,147,a,0,1)};var y7=mdb(qte,'EcorePackageImpl/10',1193);bcb(1194,1,nwe,JZd);_.wj=function KZd(a){return JD(a,191)};_.xj=function LZd(a){return KC(l5,Uhe,191,a,0,1)};var z7=mdb(qte,'EcorePackageImpl/11',1194);bcb(1195,1,nwe,MZd);_.wj=function NZd(a){return JD(a,56)};_.xj=function OZd(a){return KC(m5,Uhe,56,a,0,1)};var A7=mdb(qte,'EcorePackageImpl/12',1195);bcb(1196,1,nwe,PZd);_.wj=function QZd(a){return JD(a,399)};_.xj=function RZd(a){return KC(n5,Nve,59,a,0,1)};var B7=mdb(qte,'EcorePackageImpl/13',1196);bcb(1197,1,nwe,SZd);_.wj=function TZd(a){return JD(a,235)};_.xj=function UZd(a){return KC(o5,Uhe,235,a,0,1)};var C7=mdb(qte,'EcorePackageImpl/14',1197);bcb(1198,1,nwe,VZd);_.wj=function WZd(a){return JD(a,509)};_.xj=function XZd(a){return KC(p5,Uhe,2017,a,0,1)};var D7=mdb(qte,'EcorePackageImpl/15',1198);bcb(1199,1,nwe,YZd);_.wj=function ZZd(a){return JD(a,99)};_.xj=function $Zd(a){return KC(q5,Mve,18,a,0,1)};var E7=mdb(qte,'EcorePackageImpl/16',1199);bcb(1200,1,nwe,_Zd);_.wj=function a$d(a){return JD(a,170)};_.xj=function b$d(a){return KC(t5,Mve,170,a,0,1)};var F7=mdb(qte,'EcorePackageImpl/17',1200);bcb(1201,1,nwe,c$d);_.wj=function d$d(a){return JD(a,472)};_.xj=function e$d(a){return KC(v5,Uhe,472,a,0,1)};var G7=mdb(qte,'EcorePackageImpl/18',1201);bcb(1202,1,nwe,f$d);_.wj=function g$d(a){return JD(a,548)};_.xj=function h$d(a){return KC(x6,kve,548,a,0,1)};var H7=mdb(qte,'EcorePackageImpl/19',1202);bcb(1185,1,nwe,i$d);_.wj=function j$d(a){return JD(a,322)};_.xj=function k$d(a){return KC(b5,Mve,34,a,0,1)};var T7=mdb(qte,'EcorePackageImpl/2',1185);bcb(1203,1,nwe,l$d);_.wj=function m$d(a){return JD(a,241)};_.xj=function n$d(a){return KC(j5,Tve,87,a,0,1)};var J7=mdb(qte,'EcorePackageImpl/20',1203);bcb(1204,1,nwe,o$d);_.wj=function p$d(a){return JD(a,444)};_.xj=function q$d(a){return KC(u5,Uhe,836,a,0,1)};var K7=mdb(qte,'EcorePackageImpl/21',1204);bcb(1205,1,nwe,r$d);_.wj=function s$d(a){return KD(a)};_.xj=function t$d(a){return KC(wI,nie,476,a,8,1)};var L7=mdb(qte,'EcorePackageImpl/22',1205);bcb(1206,1,nwe,u$d);_.wj=function v$d(a){return JD(a,190)};_.xj=function w$d(a){return KC(SD,nie,190,a,0,2)};var M7=mdb(qte,'EcorePackageImpl/23',1206);bcb(1207,1,nwe,x$d);_.wj=function y$d(a){return JD(a,217)};_.xj=function z$d(a){return KC(xI,nie,217,a,0,1)};var N7=mdb(qte,'EcorePackageImpl/24',1207);bcb(1208,1,nwe,A$d);_.wj=function B$d(a){return JD(a,172)};_.xj=function C$d(a){return KC(yI,nie,172,a,0,1)};var O7=mdb(qte,'EcorePackageImpl/25',1208);bcb(1209,1,nwe,D$d);_.wj=function E$d(a){return JD(a,199)};_.xj=function F$d(a){return KC($J,nie,199,a,0,1)};var P7=mdb(qte,'EcorePackageImpl/26',1209);bcb(1210,1,nwe,G$d);_.wj=function H$d(a){return false};_.xj=function I$d(a){return KC(O4,Uhe,2110,a,0,1)};var Q7=mdb(qte,'EcorePackageImpl/27',1210);bcb(1211,1,nwe,J$d);_.wj=function K$d(a){return LD(a)};_.xj=function L$d(a){return KC(BI,nie,333,a,7,1)};var R7=mdb(qte,'EcorePackageImpl/28',1211);bcb(1212,1,nwe,M$d);_.wj=function N$d(a){return JD(a,58)};_.xj=function O$d(a){return KC(T4,eme,58,a,0,1)};var S7=mdb(qte,'EcorePackageImpl/29',1212);bcb(1186,1,nwe,P$d);_.wj=function Q$d(a){return JD(a,510)};_.xj=function R$d(a){return KC(a5,{3:1,4:1,5:1,1934:1},590,a,0,1)};var c8=mdb(qte,'EcorePackageImpl/3',1186);bcb(1213,1,nwe,S$d);_.wj=function T$d(a){return JD(a,573)};_.xj=function U$d(a){return KC(U4,Uhe,1940,a,0,1)};var U7=mdb(qte,'EcorePackageImpl/30',1213);bcb(1214,1,nwe,V$d);_.wj=function W$d(a){return JD(a,153)};_.xj=function X$d(a){return KC(O9,eme,153,a,0,1)};var V7=mdb(qte,'EcorePackageImpl/31',1214);bcb(1215,1,nwe,Y$d);_.wj=function Z$d(a){return JD(a,72)};_.xj=function $$d(a){return KC(E9,owe,72,a,0,1)};var W7=mdb(qte,'EcorePackageImpl/32',1215);bcb(1216,1,nwe,_$d);_.wj=function a_d(a){return JD(a,155)};_.xj=function b_d(a){return KC(FI,nie,155,a,0,1)};var X7=mdb(qte,'EcorePackageImpl/33',1216);bcb(1217,1,nwe,c_d);_.wj=function d_d(a){return JD(a,19)};_.xj=function e_d(a){return KC(JI,nie,19,a,0,1)};var Y7=mdb(qte,'EcorePackageImpl/34',1217);bcb(1218,1,nwe,f_d);_.wj=function g_d(a){return JD(a,290)};_.xj=function h_d(a){return KC(AI,Uhe,290,a,0,1)};var Z7=mdb(qte,'EcorePackageImpl/35',1218);bcb(1219,1,nwe,i_d);_.wj=function j_d(a){return JD(a,162)};_.xj=function k_d(a){return KC(MI,nie,162,a,0,1)};var $7=mdb(qte,'EcorePackageImpl/36',1219);bcb(1220,1,nwe,l_d);_.wj=function m_d(a){return JD(a,83)};_.xj=function n_d(a){return KC(DK,Uhe,83,a,0,1)};var _7=mdb(qte,'EcorePackageImpl/37',1220);bcb(1221,1,nwe,o_d);_.wj=function p_d(a){return JD(a,591)};_.xj=function q_d(a){return KC(v8,Uhe,591,a,0,1)};var a8=mdb(qte,'EcorePackageImpl/38',1221);bcb(1222,1,nwe,r_d);_.wj=function s_d(a){return false};_.xj=function t_d(a){return KC(u8,Uhe,2111,a,0,1)};var b8=mdb(qte,'EcorePackageImpl/39',1222);bcb(1187,1,nwe,u_d);_.wj=function v_d(a){return JD(a,88)};_.xj=function w_d(a){return KC(c5,Uhe,26,a,0,1)};var i8=mdb(qte,'EcorePackageImpl/4',1187);bcb(1223,1,nwe,x_d);_.wj=function y_d(a){return JD(a,184)};_.xj=function z_d(a){return KC(UI,nie,184,a,0,1)};var d8=mdb(qte,'EcorePackageImpl/40',1223);bcb(1224,1,nwe,A_d);_.wj=function B_d(a){return ND(a)};_.xj=function C_d(a){return KC(ZI,nie,2,a,6,1)};var e8=mdb(qte,'EcorePackageImpl/41',1224);bcb(1225,1,nwe,D_d);_.wj=function E_d(a){return JD(a,588)};_.xj=function F_d(a){return KC(X4,Uhe,588,a,0,1)};var f8=mdb(qte,'EcorePackageImpl/42',1225);bcb(1226,1,nwe,G_d);_.wj=function H_d(a){return false};_.xj=function I_d(a){return KC(V4,nie,2112,a,0,1)};var g8=mdb(qte,'EcorePackageImpl/43',1226);bcb(1227,1,nwe,J_d);_.wj=function K_d(a){return JD(a,42)};_.xj=function L_d(a){return KC(CK,zie,42,a,0,1)};var h8=mdb(qte,'EcorePackageImpl/44',1227);bcb(1188,1,nwe,M_d);_.wj=function N_d(a){return JD(a,138)};_.xj=function O_d(a){return KC(d5,Uhe,138,a,0,1)};var j8=mdb(qte,'EcorePackageImpl/5',1188);bcb(1189,1,nwe,P_d);_.wj=function Q_d(a){return JD(a,148)};_.xj=function R_d(a){return KC(f5,Uhe,148,a,0,1)};var k8=mdb(qte,'EcorePackageImpl/6',1189);bcb(1190,1,nwe,S_d);_.wj=function T_d(a){return JD(a,457)};_.xj=function U_d(a){return KC(h5,Uhe,671,a,0,1)};var l8=mdb(qte,'EcorePackageImpl/7',1190);bcb(1191,1,nwe,V_d);_.wj=function W_d(a){return JD(a,573)};_.xj=function X_d(a){return KC(g5,Uhe,678,a,0,1)};var m8=mdb(qte,'EcorePackageImpl/8',1191);bcb(1192,1,nwe,Y_d);_.wj=function Z_d(a){return JD(a,471)};_.xj=function $_d(a){return KC(i5,Uhe,471,a,0,1)};var n8=mdb(qte,'EcorePackageImpl/9',1192);bcb(1025,1982,ive,c0d);_.bi=function d0d(a,b){__d(this,BD(b,415))};_.fi=function e0d(a,b){a0d(this,a,BD(b,415))};var q8=mdb(qte,'MinimalEObjectImpl/1ArrayDelegatingAdapterList',1025);bcb(1026,143,fve,f0d);_.Ai=function g0d(){return this.a.a};var p8=mdb(qte,'MinimalEObjectImpl/1ArrayDelegatingAdapterList/1',1026);bcb(1053,1052,{},i0d);var t8=mdb('org.eclipse.emf.ecore.plugin','EcorePlugin',1053);var v8=odb(pwe,'Resource');bcb(781,1378,qwe);_.Yk=function m0d(a){};_.Zk=function n0d(a){};_.Vk=function o0d(){return !this.a&&(this.a=new z0d(this)),this.a};_.Wk=function p0d(a){var b,c,d,e,f;d=a.length;if(d>0){BCb(0,a.length);if(a.charCodeAt(0)==47){f=new Skb(4);e=1;for(b=1;b0&&(a=a.substr(0,c))}}}return k0d(this,a)};_.Xk=function q0d(){return this.c};_.Ib=function r0d(){var a;return hdb(this.gm)+'@'+(a=tb(this)>>>0,a.toString(16))+\" uri='\"+this.d+\"'\"};_.b=false;var z8=mdb(rwe,'ResourceImpl',781);bcb(1379,781,qwe,s0d);var w8=mdb(rwe,'BinaryResourceImpl',1379);bcb(1169,694,pue);_.si=function v0d(a){return JD(a,56)?t0d(this,BD(a,56)):JD(a,591)?new Fyd(BD(a,591).Vk()):PD(a)===PD(this.f)?BD(a,14).Kc():(LCd(),KCd.a)};_.Ob=function w0d(){return u0d(this)};_.a=false;var z9=mdb(yve,'EcoreUtil/ContentTreeIterator',1169);bcb(1380,1169,pue,x0d);_.si=function y0d(a){return PD(a)===PD(this.f)?BD(a,15).Kc():new C6d(BD(a,56))};var x8=mdb(rwe,'ResourceImpl/5',1380);bcb(648,1994,Ove,z0d);_.Hc=function A0d(a){return this.i<=4?pud(this,a):JD(a,49)&&BD(a,49).Zg()==this.a};_.bi=function B0d(a,b){a==this.i-1&&(this.a.b||(this.a.b=true,null))};_.di=function C0d(a,b){a==0?this.a.b||(this.a.b=true,null):Atd(this,a,b)};_.fi=function D0d(a,b){};_.gi=function E0d(a,b,c){};_.aj=function F0d(){return 2};_.Ai=function G0d(){return this.a};_.bj=function H0d(){return true};_.cj=function I0d(a,b){var c;c=BD(a,49);b=c.wh(this.a,b);return b};_.dj=function J0d(a,b){var c;c=BD(a,49);return c.wh(null,b)};_.ej=function K0d(){return false};_.hi=function L0d(){return true};_.ri=function M0d(a){return KC(m5,Uhe,56,a,0,1)};_.ni=function N0d(){return false};var y8=mdb(rwe,'ResourceImpl/ContentsEList',648);bcb(957,1964,Lie,O0d);_.Zc=function P0d(a){return this.a._h(a)};_.gc=function Q0d(){return this.a.gc()};var A8=mdb(yve,'AbstractSequentialInternalEList/1',957);var K6d,L6d,M6d,N6d;bcb(624,1,{},y1d);var R0d,S0d;var G8=mdb(yve,'BasicExtendedMetaData',624);bcb(1160,1,{},C1d);_.$k=function D1d(){return null};_._k=function E1d(){this.a==-2&&A1d(this,W0d(this.d,this.b));return this.a};_.al=function F1d(){return null};_.bl=function G1d(){return mmb(),mmb(),jmb};_.ne=function H1d(){this.c==Gwe&&B1d(this,_0d(this.d,this.b));return this.c};_.cl=function I1d(){return 0};_.a=-2;_.c=Gwe;var C8=mdb(yve,'BasicExtendedMetaData/EClassExtendedMetaDataImpl',1160);bcb(1161,1,{},O1d);_.$k=function P1d(){this.a==(T0d(),R0d)&&J1d(this,V0d(this.f,this.b));return this.a};_._k=function Q1d(){return 0};_.al=function R1d(){this.c==(T0d(),R0d)&&K1d(this,Z0d(this.f,this.b));return this.c};_.bl=function S1d(){!this.d&&L1d(this,$0d(this.f,this.b));return this.d};_.ne=function T1d(){this.e==Gwe&&M1d(this,_0d(this.f,this.b));return this.e};_.cl=function U1d(){this.g==-2&&N1d(this,c1d(this.f,this.b));return this.g};_.e=Gwe;_.g=-2;var D8=mdb(yve,'BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl',1161);bcb(1159,1,{},Y1d);_.b=false;_.c=false;var E8=mdb(yve,'BasicExtendedMetaData/EPackageExtendedMetaDataImpl',1159);bcb(1162,1,{},j2d);_.c=-2;_.e=Gwe;_.f=Gwe;var F8=mdb(yve,'BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl',1162);bcb(585,622,Pve,k2d);_.aj=function l2d(){return this.c};_.Fk=function m2d(){return false};_.li=function n2d(a,b){return b};_.c=0;var T8=mdb(yve,'EDataTypeEList',585);var O9=odb(yve,'FeatureMap');bcb(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},u3d);_.Vc=function v3d(a,b){o2d(this,a,BD(b,72))};_.Fc=function w3d(a){return r2d(this,BD(a,72))};_.Yh=function B3d(a){w2d(this,BD(a,72))};_.cj=function M3d(a,b){return O2d(this,BD(a,72),b)};_.dj=function N3d(a,b){return Q2d(this,BD(a,72),b)};_.ii=function P3d(a,b){return W2d(this,a,b)};_.li=function R3d(a,b){return _2d(this,a,BD(b,72))};_._c=function T3d(a,b){return c3d(this,a,BD(b,72))};_.jj=function X3d(a,b){return i3d(this,BD(a,72),b)};_.kj=function Y3d(a,b){return k3d(this,BD(a,72),b)};_.lj=function Z3d(a,b,c){return l3d(this,BD(a,72),BD(b,72),c)};_.oi=function _3d(a,b){return t3d(this,a,BD(b,72))};_.dl=function x3d(a,b){return q2d(this,a,b)};_.Wc=function y3d(a,b){var c,d,e,f,g,h,i,j,k;j=new zud(b.gc());for(e=b.Kc();e.Ob();){d=BD(e.Pb(),72);f=d.ak();if(T6d(this.e,f)){(!f.hi()||!E2d(this,f,d.dd())&&!pud(j,d))&&wtd(j,d)}else{k=S6d(this.e.Tg(),f);c=BD(this.g,119);g=true;for(h=0;h=0){b=a[this.c];if(this.k.rl(b.ak())){this.j=this.f?b:b.dd();this.i=-2;return true}}this.i=-1;this.g=-1;return false};var H8=mdb(yve,'BasicFeatureMap/FeatureEIterator',410);bcb(662,410,jie,s4d);_.Lk=function t4d(){return true};var I8=mdb(yve,'BasicFeatureMap/ResolvingFeatureEIterator',662);bcb(955,486,Vve,u4d);_.Gi=function v4d(){return this};var M8=mdb(yve,'EContentsEList/1',955);bcb(956,486,Vve,w4d);_.Lk=function x4d(){return false};var N8=mdb(yve,'EContentsEList/2',956);bcb(954,279,Wve,y4d);_.Nk=function z4d(a){};_.Ob=function A4d(){return false};_.Sb=function B4d(){return false};var O8=mdb(yve,'EContentsEList/FeatureIteratorImpl/1',954);bcb(825,585,Pve,C4d);_.ci=function D4d(){this.a=true};_.fj=function E4d(){return this.a};_.Xj=function F4d(){var a;Uxd(this);if(oid(this.e)){a=this.a;this.a=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var S8=mdb(yve,'EDataTypeEList/Unsettable',825);bcb(1849,585,Pve,G4d);_.hi=function H4d(){return true};var V8=mdb(yve,'EDataTypeUniqueEList',1849);bcb(1850,825,Pve,I4d);_.hi=function J4d(){return true};var U8=mdb(yve,'EDataTypeUniqueEList/Unsettable',1850);bcb(139,85,Pve,K4d);_.Ek=function L4d(){return true};_.li=function M4d(a,b){return ILd(this,a,BD(b,56))};var W8=mdb(yve,'EObjectContainmentEList/Resolving',139);bcb(1163,545,Pve,N4d);_.Ek=function O4d(){return true};_.li=function P4d(a,b){return ILd(this,a,BD(b,56))};var X8=mdb(yve,'EObjectContainmentEList/Unsettable/Resolving',1163);bcb(748,16,Pve,Q4d);_.ci=function R4d(){this.a=true};_.fj=function S4d(){return this.a};_.Xj=function T4d(){var a;Uxd(this);if(oid(this.e)){a=this.a;this.a=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var a9=mdb(yve,'EObjectContainmentWithInverseEList/Unsettable',748);bcb(1173,748,Pve,U4d);_.Ek=function V4d(){return true};_.li=function W4d(a,b){return ILd(this,a,BD(b,56))};var _8=mdb(yve,'EObjectContainmentWithInverseEList/Unsettable/Resolving',1173);bcb(743,496,Pve,X4d);_.ci=function Y4d(){this.a=true};_.fj=function Z4d(){return this.a};_.Xj=function $4d(){var a;Uxd(this);if(oid(this.e)){a=this.a;this.a=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var c9=mdb(yve,'EObjectEList/Unsettable',743);bcb(328,496,Pve,_4d);_.Ek=function a5d(){return true};_.li=function b5d(a,b){return ILd(this,a,BD(b,56))};var f9=mdb(yve,'EObjectResolvingEList',328);bcb(1641,743,Pve,c5d);_.Ek=function d5d(){return true};_.li=function e5d(a,b){return ILd(this,a,BD(b,56))};var e9=mdb(yve,'EObjectResolvingEList/Unsettable',1641);bcb(1381,1,{},h5d);var f5d;var g9=mdb(yve,'EObjectValidator',1381);bcb(546,496,Pve,i5d);_.zk=function j5d(){return this.d};_.Ak=function k5d(){return this.b};_.bj=function l5d(){return true};_.Dk=function m5d(){return true};_.b=0;var k9=mdb(yve,'EObjectWithInverseEList',546);bcb(1176,546,Pve,n5d);_.Ck=function o5d(){return true};var h9=mdb(yve,'EObjectWithInverseEList/ManyInverse',1176);bcb(625,546,Pve,p5d);_.ci=function q5d(){this.a=true};_.fj=function r5d(){return this.a};_.Xj=function s5d(){var a;Uxd(this);if(oid(this.e)){a=this.a;this.a=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var j9=mdb(yve,'EObjectWithInverseEList/Unsettable',625);bcb(1175,625,Pve,t5d);_.Ck=function u5d(){return true};var i9=mdb(yve,'EObjectWithInverseEList/Unsettable/ManyInverse',1175);bcb(749,546,Pve,v5d);_.Ek=function w5d(){return true};_.li=function x5d(a,b){return ILd(this,a,BD(b,56))};var o9=mdb(yve,'EObjectWithInverseResolvingEList',749);bcb(31,749,Pve,y5d);_.Ck=function z5d(){return true};var l9=mdb(yve,'EObjectWithInverseResolvingEList/ManyInverse',31);bcb(750,625,Pve,A5d);_.Ek=function B5d(){return true};_.li=function C5d(a,b){return ILd(this,a,BD(b,56))};var n9=mdb(yve,'EObjectWithInverseResolvingEList/Unsettable',750);bcb(1174,750,Pve,D5d);_.Ck=function E5d(){return true};var m9=mdb(yve,'EObjectWithInverseResolvingEList/Unsettable/ManyInverse',1174);bcb(1164,622,Pve);_.ai=function F5d(){return (this.b&1792)==0};_.ci=function G5d(){this.b|=1};_.Bk=function H5d(){return (this.b&4)!=0};_.bj=function I5d(){return (this.b&40)!=0};_.Ck=function J5d(){return (this.b&16)!=0};_.Dk=function K5d(){return (this.b&8)!=0};_.Ek=function L5d(){return (this.b&Dve)!=0};_.rk=function M5d(){return (this.b&32)!=0};_.Fk=function N5d(){return (this.b&zte)!=0};_.wj=function O5d(a){return !this.d?this.ak().Yj().wj(a):qEd(this.d,a)};_.fj=function P5d(){return (this.b&2)!=0?(this.b&1)!=0:this.i!=0};_.hi=function Q5d(){return (this.b&128)!=0};_.Xj=function S5d(){var a;Uxd(this);if((this.b&2)!=0){if(oid(this.e)){a=(this.b&1)!=0;this.b&=-2;GLd(this,new qSd(this.e,2,bLd(this.e.Tg(),this.ak()),a,false))}else{this.b&=-2}}};_.ni=function T5d(){return (this.b&1536)==0};_.b=0;var q9=mdb(yve,'EcoreEList/Generic',1164);bcb(1165,1164,Pve,U5d);_.ak=function V5d(){return this.a};var p9=mdb(yve,'EcoreEList/Dynamic',1165);bcb(747,63,oue,W5d);_.ri=function X5d(a){return izd(this.a.a,a)};var u9=mdb(yve,'EcoreEMap/1',747);bcb(746,85,Pve,Y5d);_.bi=function Z5d(a,b){uAd(this.b,BD(b,133))};_.di=function $5d(a,b){tAd(this.b)};_.ei=function _5d(a,b,c){var d;++(d=this.b,BD(b,133),d).e};_.fi=function a6d(a,b){vAd(this.b,BD(b,133))};_.gi=function b6d(a,b,c){vAd(this.b,BD(c,133));PD(c)===PD(b)&&BD(c,133).Th(CAd(BD(b,133).cd()));uAd(this.b,BD(b,133))};var v9=mdb(yve,'EcoreEMap/DelegateEObjectContainmentEList',746);bcb(1171,151,Ave,c6d);var x9=mdb(yve,'EcoreEMap/Unsettable',1171);bcb(1172,746,Pve,d6d);_.ci=function e6d(){this.a=true};_.fj=function f6d(){return this.a};_.Xj=function g6d(){var a;Uxd(this);if(oid(this.e)){a=this.a;this.a=false;Uhd(this.e,new qSd(this.e,2,this.c,a,false))}else{this.a=false}};_.a=false;var w9=mdb(yve,'EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList',1172);bcb(1168,228,fke,A6d);_.a=false;_.b=false;var A9=mdb(yve,'EcoreUtil/Copier',1168);bcb(745,1,aie,C6d);_.Nb=function D6d(a){Rrb(this,a)};_.Ob=function E6d(){return B6d(this)};_.Pb=function F6d(){var a;B6d(this);a=this.b;this.b=null;return a};_.Qb=function G6d(){this.a.Qb()};var B9=mdb(yve,'EcoreUtil/ProperContentIterator',745);bcb(1382,1381,{},J6d);var H6d;var C9=mdb(yve,'EcoreValidator',1382);var P6d;var N9=odb(yve,'FeatureMapUtil/Validator');bcb(1260,1,{1942:1},U6d);_.rl=function V6d(a){return true};var F9=mdb(yve,'FeatureMapUtil/1',1260);bcb(757,1,{1942:1},Z6d);_.rl=function $6d(a){var b;if(this.c==a)return true;b=DD(Ohb(this.a,a));if(b==null){if(Y6d(this,a)){_6d(this.a,a,(Bcb(),Acb));return true}else{_6d(this.a,a,(Bcb(),zcb));return false}}else{return b==(Bcb(),Acb)}};_.e=false;var W6d;var I9=mdb(yve,'FeatureMapUtil/BasicValidator',757);bcb(758,43,fke,a7d);var H9=mdb(yve,'FeatureMapUtil/BasicValidator/Cache',758);bcb(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},f7d);_.Vc=function g7d(a,b){p2d(this.c,this.b,a,b)};_.Fc=function h7d(a){return q2d(this.c,this.b,a)};_.Wc=function i7d(a,b){return s2d(this.c,this.b,a,b)};_.Gc=function j7d(a){return b7d(this,a)};_.Xh=function k7d(a,b){u2d(this.c,this.b,a,b)};_.lk=function l7d(a,b){return x2d(this.c,this.b,a,b)};_.pi=function m7d(a){return J2d(this.c,this.b,a,false)};_.Zh=function n7d(){return y2d(this.c,this.b)};_.$h=function o7d(){return z2d(this.c,this.b)};_._h=function p7d(a){return A2d(this.c,this.b,a)};_.mk=function q7d(a,b){return c7d(this,a,b)};_.$b=function r7d(){d7d(this)};_.Hc=function s7d(a){return E2d(this.c,this.b,a)};_.Ic=function t7d(a){return G2d(this.c,this.b,a)};_.Xb=function u7d(a){return J2d(this.c,this.b,a,true)};_.Wj=function v7d(a){return this};_.Xc=function w7d(a){return L2d(this.c,this.b,a)};_.dc=function x7d(){return e7d(this)};_.fj=function y7d(){return !R2d(this.c,this.b)};_.Kc=function z7d(){return S2d(this.c,this.b)};_.Yc=function A7d(){return U2d(this.c,this.b)};_.Zc=function B7d(a){return V2d(this.c,this.b,a)};_.ii=function C7d(a,b){return X2d(this.c,this.b,a,b)};_.ji=function D7d(a,b){Y2d(this.c,this.b,a,b)};_.$c=function E7d(a){return Z2d(this.c,this.b,a)};_.Mc=function F7d(a){return $2d(this.c,this.b,a)};_._c=function G7d(a,b){return e3d(this.c,this.b,a,b)};_.Wb=function H7d(a){D2d(this.c,this.b);b7d(this,BD(a,15))};_.gc=function I7d(){return n3d(this.c,this.b)};_.Pc=function J7d(){return o3d(this.c,this.b)};_.Qc=function K7d(a){return q3d(this.c,this.b,a)};_.Ib=function L7d(){var a,b;b=new Hfb;b.a+='[';for(a=y2d(this.c,this.b);b4d(a);){Efb(b,xfb(d4d(a)));b4d(a)&&(b.a+=She,b)}b.a+=']';return b.a};_.Xj=function M7d(){D2d(this.c,this.b)};var J9=mdb(yve,'FeatureMapUtil/FeatureEList',501);bcb(627,36,fve,O7d);_.yi=function P7d(a){return N7d(this,a)};_.Di=function Q7d(a){var b,c,d,e,f,g,h;switch(this.d){case 1:case 2:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){this.g=a.zi();a.xi()==1&&(this.d=1);return true}break}case 3:{e=a.xi();switch(e){case 3:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){this.d=5;b=new zud(2);wtd(b,this.g);wtd(b,a.zi());this.g=b;return true}break}}break}case 5:{e=a.xi();switch(e){case 3:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){c=BD(this.g,14);c.Fc(a.zi());return true}break}}break}case 4:{e=a.xi();switch(e){case 3:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){this.d=1;this.g=a.zi();return true}break}case 4:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){this.d=6;h=new zud(2);wtd(h,this.n);wtd(h,a.Bi());this.n=h;g=OC(GC(WD,1),oje,25,15,[this.o,a.Ci()]);this.g=g;return true}break}}break}case 6:{e=a.xi();switch(e){case 4:{f=a.Ai();if(PD(f)===PD(this.c)&&N7d(this,null)==a.yi(null)){c=BD(this.n,14);c.Fc(a.Bi());g=BD(this.g,48);d=KC(WD,oje,25,g.length+1,15,1);$fb(g,0,d,0,g.length);d[g.length]=a.Ci();this.g=d;return true}break}}break}}return false};var K9=mdb(yve,'FeatureMapUtil/FeatureENotificationImpl',627);bcb(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},R7d);_.dl=function S7d(a,b){return q2d(this.c,a,b)};_.el=function T7d(a,b,c){return x2d(this.c,a,b,c)};_.fl=function U7d(a,b,c){return C2d(this.c,a,b,c)};_.gl=function V7d(){return this};_.hl=function W7d(a,b){return K2d(this.c,a,b)};_.il=function X7d(a){return BD(J2d(this.c,this.b,a,false),72).ak()};_.jl=function Y7d(a){return BD(J2d(this.c,this.b,a,false),72).dd()};_.kl=function Z7d(){return this.a};_.ll=function $7d(a){return !R2d(this.c,a)};_.ml=function _7d(a,b){f3d(this.c,a,b)};_.nl=function a8d(a){return g3d(this.c,a)};_.ol=function b8d(a){s3d(this.c,a)};var L9=mdb(yve,'FeatureMapUtil/FeatureFeatureMap',552);bcb(1259,1,zve,c8d);_.Wj=function d8d(a){return J2d(this.b,this.a,-1,a)};_.fj=function e8d(){return !R2d(this.b,this.a)};_.Wb=function f8d(a){f3d(this.b,this.a,a)};_.Xj=function g8d(){D2d(this.b,this.a)};var M9=mdb(yve,'FeatureMapUtil/FeatureValue',1259);var h8d,i8d,j8d,k8d,l8d;var Q9=odb(Iwe,'AnyType');bcb(666,60,Tie,n8d);var R9=mdb(Iwe,'InvalidDatatypeValueException',666);var S9=odb(Iwe,Jwe);var T9=odb(Iwe,Kwe);var U9=odb(Iwe,Lwe);var o8d;var q8d;var s8d,t8d,u8d,v8d,w8d,x8d,y8d,z8d,A8d,B8d,C8d,D8d,E8d,F8d,G8d,H8d,I8d,J8d,K8d,L8d,M8d,N8d,O8d,P8d;bcb(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},R8d);_._g=function S8d(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new u3d(this,0)),this.c;return !this.c&&(this.c=new u3d(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153);return (!this.c&&(this.c=new u3d(this,0)),BD(BD(T2d(this.c,(Q8d(),t8d)),153),215)).kl();case 2:if(c)return !this.b&&(this.b=new u3d(this,2)),this.b;return !this.b&&(this.b=new u3d(this,2)),this.b.b;}return bid(this,a-aLd(this.zh()),XKd((this.j&2)==0?this.zh():(!this.k&&(this.k=new HGd),this.k).ck(),a),b,c)};_.jh=function T8d(a,b,c){var d;switch(b){case 0:return !this.c&&(this.c=new u3d(this,0)),B2d(this.c,a,c);case 1:return (!this.c&&(this.c=new u3d(this,0)),BD(BD(T2d(this.c,(Q8d(),t8d)),153),69)).mk(a,c);case 2:return !this.b&&(this.b=new u3d(this,2)),B2d(this.b,a,c);}return d=BD(XKd((this.j&2)==0?this.zh():(!this.k&&(this.k=new HGd),this.k).ck(),b),66),d.Nj().Rj(this,Aid(this),b-aLd(this.zh()),a,c)};_.lh=function U8d(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153)).dc();case 2:return !!this.b&&this.b.i!=0;}return cid(this,a-aLd(this.zh()),XKd((this.j&2)==0?this.zh():(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.sh=function V8d(a,b){switch(a){case 0:!this.c&&(this.c=new u3d(this,0));d3d(this.c,b);return;case 1:(!this.c&&(this.c=new u3d(this,0)),BD(BD(T2d(this.c,(Q8d(),t8d)),153),215)).Wb(b);return;case 2:!this.b&&(this.b=new u3d(this,2));d3d(this.b,b);return;}did(this,a-aLd(this.zh()),XKd((this.j&2)==0?this.zh():(!this.k&&(this.k=new HGd),this.k).ck(),a),b)};_.zh=function W8d(){return Q8d(),s8d};_.Bh=function X8d(a){switch(a){case 0:!this.c&&(this.c=new u3d(this,0));Uxd(this.c);return;case 1:(!this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153)).$b();return;case 2:!this.b&&(this.b=new u3d(this,2));Uxd(this.b);return;}eid(this,a-aLd(this.zh()),XKd((this.j&2)==0?this.zh():(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.Ib=function Y8d(){var a;if((this.j&4)!=0)return Eid(this);a=new Jfb(Eid(this));a.a+=' (mixed: ';Dfb(a,this.c);a.a+=', anyAttribute: ';Dfb(a,this.b);a.a+=')';return a.a};var V9=mdb(Mwe,'AnyTypeImpl',830);bcb(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},_8d);_._g=function a9d(a,b,c){switch(a){case 0:return this.a;case 1:return this.b;}return bid(this,a-aLd((Q8d(),F8d)),XKd((this.j&2)==0?F8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b,c)};_.lh=function b9d(a){switch(a){case 0:return this.a!=null;case 1:return this.b!=null;}return cid(this,a-aLd((Q8d(),F8d)),XKd((this.j&2)==0?F8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.sh=function c9d(a,b){switch(a){case 0:Z8d(this,GD(b));return;case 1:$8d(this,GD(b));return;}did(this,a-aLd((Q8d(),F8d)),XKd((this.j&2)==0?F8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b)};_.zh=function d9d(){return Q8d(),F8d};_.Bh=function e9d(a){switch(a){case 0:this.a=null;return;case 1:this.b=null;return;}eid(this,a-aLd((Q8d(),F8d)),XKd((this.j&2)==0?F8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.Ib=function f9d(){var a;if((this.j&4)!=0)return Eid(this);a=new Jfb(Eid(this));a.a+=' (data: ';Efb(a,this.a);a.a+=', target: ';Efb(a,this.b);a.a+=')';return a.a};_.a=null;_.b=null;var W9=mdb(Mwe,'ProcessingInstructionImpl',667);bcb(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},i9d);_._g=function j9d(a,b,c){switch(a){case 0:if(c)return !this.c&&(this.c=new u3d(this,0)),this.c;return !this.c&&(this.c=new u3d(this,0)),this.c.b;case 1:if(c)return !this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153);return (!this.c&&(this.c=new u3d(this,0)),BD(BD(T2d(this.c,(Q8d(),t8d)),153),215)).kl();case 2:if(c)return !this.b&&(this.b=new u3d(this,2)),this.b;return !this.b&&(this.b=new u3d(this,2)),this.b.b;case 3:return !this.c&&(this.c=new u3d(this,0)),GD(K2d(this.c,(Q8d(),I8d),true));case 4:return j6d(this.a,(!this.c&&(this.c=new u3d(this,0)),GD(K2d(this.c,(Q8d(),I8d),true))));case 5:return this.a;}return bid(this,a-aLd((Q8d(),H8d)),XKd((this.j&2)==0?H8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b,c)};_.lh=function k9d(a){switch(a){case 0:return !!this.c&&this.c.i!=0;case 1:return !(!this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153)).dc();case 2:return !!this.b&&this.b.i!=0;case 3:return !this.c&&(this.c=new u3d(this,0)),GD(K2d(this.c,(Q8d(),I8d),true))!=null;case 4:return j6d(this.a,(!this.c&&(this.c=new u3d(this,0)),GD(K2d(this.c,(Q8d(),I8d),true))))!=null;case 5:return !!this.a;}return cid(this,a-aLd((Q8d(),H8d)),XKd((this.j&2)==0?H8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.sh=function l9d(a,b){switch(a){case 0:!this.c&&(this.c=new u3d(this,0));d3d(this.c,b);return;case 1:(!this.c&&(this.c=new u3d(this,0)),BD(BD(T2d(this.c,(Q8d(),t8d)),153),215)).Wb(b);return;case 2:!this.b&&(this.b=new u3d(this,2));d3d(this.b,b);return;case 3:h9d(this,GD(b));return;case 4:h9d(this,h6d(this.a,b));return;case 5:g9d(this,BD(b,148));return;}did(this,a-aLd((Q8d(),H8d)),XKd((this.j&2)==0?H8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b)};_.zh=function m9d(){return Q8d(),H8d};_.Bh=function n9d(a){switch(a){case 0:!this.c&&(this.c=new u3d(this,0));Uxd(this.c);return;case 1:(!this.c&&(this.c=new u3d(this,0)),BD(T2d(this.c,(Q8d(),t8d)),153)).$b();return;case 2:!this.b&&(this.b=new u3d(this,2));Uxd(this.b);return;case 3:!this.c&&(this.c=new u3d(this,0));f3d(this.c,(Q8d(),I8d),null);return;case 4:h9d(this,h6d(this.a,null));return;case 5:this.a=null;return;}eid(this,a-aLd((Q8d(),H8d)),XKd((this.j&2)==0?H8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};var X9=mdb(Mwe,'SimpleAnyTypeImpl',668);bcb(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},o9d);_._g=function p9d(a,b,c){switch(a){case 0:if(c)return !this.a&&(this.a=new u3d(this,0)),this.a;return !this.a&&(this.a=new u3d(this,0)),this.a.b;case 1:return c?(!this.b&&(this.b=new dId((jGd(),fGd),x6,this,1)),this.b):(!this.b&&(this.b=new dId((jGd(),fGd),x6,this,1)),FAd(this.b));case 2:return c?(!this.c&&(this.c=new dId((jGd(),fGd),x6,this,2)),this.c):(!this.c&&(this.c=new dId((jGd(),fGd),x6,this,2)),FAd(this.c));case 3:return !this.a&&(this.a=new u3d(this,0)),T2d(this.a,(Q8d(),L8d));case 4:return !this.a&&(this.a=new u3d(this,0)),T2d(this.a,(Q8d(),M8d));case 5:return !this.a&&(this.a=new u3d(this,0)),T2d(this.a,(Q8d(),O8d));case 6:return !this.a&&(this.a=new u3d(this,0)),T2d(this.a,(Q8d(),P8d));}return bid(this,a-aLd((Q8d(),K8d)),XKd((this.j&2)==0?K8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b,c)};_.jh=function q9d(a,b,c){var d;switch(b){case 0:return !this.a&&(this.a=new u3d(this,0)),B2d(this.a,a,c);case 1:return !this.b&&(this.b=new dId((jGd(),fGd),x6,this,1)),bId(this.b,a,c);case 2:return !this.c&&(this.c=new dId((jGd(),fGd),x6,this,2)),bId(this.c,a,c);case 5:return !this.a&&(this.a=new u3d(this,0)),c7d(T2d(this.a,(Q8d(),O8d)),a,c);}return d=BD(XKd((this.j&2)==0?(Q8d(),K8d):(!this.k&&(this.k=new HGd),this.k).ck(),b),66),d.Nj().Rj(this,Aid(this),b-aLd((Q8d(),K8d)),a,c)};_.lh=function r9d(a){switch(a){case 0:return !!this.a&&this.a.i!=0;case 1:return !!this.b&&this.b.f!=0;case 2:return !!this.c&&this.c.f!=0;case 3:return !this.a&&(this.a=new u3d(this,0)),!e7d(T2d(this.a,(Q8d(),L8d)));case 4:return !this.a&&(this.a=new u3d(this,0)),!e7d(T2d(this.a,(Q8d(),M8d)));case 5:return !this.a&&(this.a=new u3d(this,0)),!e7d(T2d(this.a,(Q8d(),O8d)));case 6:return !this.a&&(this.a=new u3d(this,0)),!e7d(T2d(this.a,(Q8d(),P8d)));}return cid(this,a-aLd((Q8d(),K8d)),XKd((this.j&2)==0?K8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.sh=function s9d(a,b){switch(a){case 0:!this.a&&(this.a=new u3d(this,0));d3d(this.a,b);return;case 1:!this.b&&(this.b=new dId((jGd(),fGd),x6,this,1));cId(this.b,b);return;case 2:!this.c&&(this.c=new dId((jGd(),fGd),x6,this,2));cId(this.c,b);return;case 3:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),L8d)));!this.a&&(this.a=new u3d(this,0));b7d(T2d(this.a,L8d),BD(b,14));return;case 4:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),M8d)));!this.a&&(this.a=new u3d(this,0));b7d(T2d(this.a,M8d),BD(b,14));return;case 5:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),O8d)));!this.a&&(this.a=new u3d(this,0));b7d(T2d(this.a,O8d),BD(b,14));return;case 6:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),P8d)));!this.a&&(this.a=new u3d(this,0));b7d(T2d(this.a,P8d),BD(b,14));return;}did(this,a-aLd((Q8d(),K8d)),XKd((this.j&2)==0?K8d:(!this.k&&(this.k=new HGd),this.k).ck(),a),b)};_.zh=function t9d(){return Q8d(),K8d};_.Bh=function u9d(a){switch(a){case 0:!this.a&&(this.a=new u3d(this,0));Uxd(this.a);return;case 1:!this.b&&(this.b=new dId((jGd(),fGd),x6,this,1));this.b.c.$b();return;case 2:!this.c&&(this.c=new dId((jGd(),fGd),x6,this,2));this.c.c.$b();return;case 3:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),L8d)));return;case 4:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),M8d)));return;case 5:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),O8d)));return;case 6:!this.a&&(this.a=new u3d(this,0));d7d(T2d(this.a,(Q8d(),P8d)));return;}eid(this,a-aLd((Q8d(),K8d)),XKd((this.j&2)==0?K8d:(!this.k&&(this.k=new HGd),this.k).ck(),a))};_.Ib=function v9d(){var a;if((this.j&4)!=0)return Eid(this);a=new Jfb(Eid(this));a.a+=' (mixed: ';Dfb(a,this.a);a.a+=')';return a.a};var Y9=mdb(Mwe,'XMLTypeDocumentRootImpl',669);bcb(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},U9d);_.Ih=function V9d(a,b){switch(a.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return b==null?null:fcb(b);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return GD(b);case 6:return C9d(BD(b,190));case 12:case 47:case 49:case 11:return Vmd(this,a,b);case 13:return b==null?null:qgb(BD(b,240));case 15:case 14:return b==null?null:D9d(Edb(ED(b)));case 17:return E9d((Q8d(),b));case 18:return E9d(b);case 21:case 20:return b==null?null:F9d(BD(b,155).a);case 27:return G9d(BD(b,190));case 30:return H9d((Q8d(),BD(b,15)));case 31:return H9d(BD(b,15));case 40:return K9d((Q8d(),b));case 42:return I9d((Q8d(),b));case 43:return I9d(b);case 59:case 48:return J9d((Q8d(),b));default:throw vbb(new Wdb(tte+a.ne()+ute));}};_.Jh=function W9d(a){var b,c,d,e,f;switch(a.G==-1&&(a.G=(c=bKd(a),c?HLd(c.Mh(),a):-1)),a.G){case 0:return b=new R8d,b;case 1:return d=new _8d,d;case 2:return e=new i9d,e;case 3:return f=new o9d,f;default:throw vbb(new Wdb(xte+a.zb+ute));}};_.Kh=function X9d(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;switch(a.yj()){case 5:case 52:case 4:return b;case 6:return L9d(b);case 8:case 7:return b==null?null:B9d(b);case 9:return b==null?null:Scb(Icb((d=Qge(b,true),d.length>0&&(BCb(0,d.length),d.charCodeAt(0)==43)?d.substr(1):d),-128,127)<<24>>24);case 10:return b==null?null:Scb(Icb((e=Qge(b,true),e.length>0&&(BCb(0,e.length),e.charCodeAt(0)==43)?e.substr(1):e),-128,127)<<24>>24);case 11:return GD(Wmd(this,(Q8d(),w8d),b));case 12:return GD(Wmd(this,(Q8d(),x8d),b));case 13:return b==null?null:new tgb(Qge(b,true));case 15:case 14:return M9d(b);case 16:return GD(Wmd(this,(Q8d(),y8d),b));case 17:return N9d((Q8d(),b));case 18:return N9d(b);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return Qge(b,true);case 21:case 20:return O9d(b);case 22:return GD(Wmd(this,(Q8d(),z8d),b));case 23:return GD(Wmd(this,(Q8d(),A8d),b));case 24:return GD(Wmd(this,(Q8d(),B8d),b));case 25:return GD(Wmd(this,(Q8d(),C8d),b));case 26:return GD(Wmd(this,(Q8d(),D8d),b));case 27:return P9d(b);case 30:return Q9d((Q8d(),b));case 31:return Q9d(b);case 32:return b==null?null:meb(Icb((k=Qge(b,true),k.length>0&&(BCb(0,k.length),k.charCodeAt(0)==43)?k.substr(1):k),Rie,Ohe));case 33:return b==null?null:new Ygb((l=Qge(b,true),l.length>0&&(BCb(0,l.length),l.charCodeAt(0)==43)?l.substr(1):l));case 34:return b==null?null:meb(Icb((m=Qge(b,true),m.length>0&&(BCb(0,m.length),m.charCodeAt(0)==43)?m.substr(1):m),Rie,Ohe));case 36:return b==null?null:Aeb(Jcb((n=Qge(b,true),n.length>0&&(BCb(0,n.length),n.charCodeAt(0)==43)?n.substr(1):n)));case 37:return b==null?null:Aeb(Jcb((o=Qge(b,true),o.length>0&&(BCb(0,o.length),o.charCodeAt(0)==43)?o.substr(1):o)));case 40:return T9d((Q8d(),b));case 42:return R9d((Q8d(),b));case 43:return R9d(b);case 44:return b==null?null:new Ygb((p=Qge(b,true),p.length>0&&(BCb(0,p.length),p.charCodeAt(0)==43)?p.substr(1):p));case 45:return b==null?null:new Ygb((q=Qge(b,true),q.length>0&&(BCb(0,q.length),q.charCodeAt(0)==43)?q.substr(1):q));case 46:return Qge(b,false);case 47:return GD(Wmd(this,(Q8d(),E8d),b));case 59:case 48:return S9d((Q8d(),b));case 49:return GD(Wmd(this,(Q8d(),G8d),b));case 50:return b==null?null:Web(Icb((r=Qge(b,true),r.length>0&&(BCb(0,r.length),r.charCodeAt(0)==43)?r.substr(1):r),awe,32767)<<16>>16);case 51:return b==null?null:Web(Icb((f=Qge(b,true),f.length>0&&(BCb(0,f.length),f.charCodeAt(0)==43)?f.substr(1):f),awe,32767)<<16>>16);case 53:return GD(Wmd(this,(Q8d(),J8d),b));case 55:return b==null?null:Web(Icb((g=Qge(b,true),g.length>0&&(BCb(0,g.length),g.charCodeAt(0)==43)?g.substr(1):g),awe,32767)<<16>>16);case 56:return b==null?null:Web(Icb((h=Qge(b,true),h.length>0&&(BCb(0,h.length),h.charCodeAt(0)==43)?h.substr(1):h),awe,32767)<<16>>16);case 57:return b==null?null:Aeb(Jcb((i=Qge(b,true),i.length>0&&(BCb(0,i.length),i.charCodeAt(0)==43)?i.substr(1):i)));case 58:return b==null?null:Aeb(Jcb((j=Qge(b,true),j.length>0&&(BCb(0,j.length),j.charCodeAt(0)==43)?j.substr(1):j)));case 60:return b==null?null:meb(Icb((c=Qge(b,true),c.length>0&&(BCb(0,c.length),c.charCodeAt(0)==43)?c.substr(1):c),Rie,Ohe));case 61:return b==null?null:meb(Icb(Qge(b,true),Rie,Ohe));default:throw vbb(new Wdb(tte+a.ne()+ute));}};var w9d,x9d,y9d,z9d;var Z9=mdb(Mwe,'XMLTypeFactoryImpl',1919);bcb(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},cae);_.N=false;_.O=false;var Z9d=false;var Yab=mdb(Mwe,'XMLTypePackageImpl',586);bcb(1852,1,{837:1},fae);_._j=function gae(){return Uge(),Tge};var iab=mdb(Mwe,'XMLTypePackageImpl/1',1852);bcb(1861,1,nwe,hae);_.wj=function iae(a){return ND(a)};_.xj=function jae(a){return KC(ZI,nie,2,a,6,1)};var $9=mdb(Mwe,'XMLTypePackageImpl/10',1861);bcb(1862,1,nwe,kae);_.wj=function lae(a){return ND(a)};_.xj=function mae(a){return KC(ZI,nie,2,a,6,1)};var _9=mdb(Mwe,'XMLTypePackageImpl/11',1862);bcb(1863,1,nwe,nae);_.wj=function oae(a){return ND(a)};_.xj=function pae(a){return KC(ZI,nie,2,a,6,1)};var aab=mdb(Mwe,'XMLTypePackageImpl/12',1863);bcb(1864,1,nwe,qae);_.wj=function rae(a){return LD(a)};_.xj=function sae(a){return KC(BI,nie,333,a,7,1)};var bab=mdb(Mwe,'XMLTypePackageImpl/13',1864);bcb(1865,1,nwe,tae);_.wj=function uae(a){return ND(a)};_.xj=function vae(a){return KC(ZI,nie,2,a,6,1)};var cab=mdb(Mwe,'XMLTypePackageImpl/14',1865);bcb(1866,1,nwe,wae);_.wj=function xae(a){return JD(a,15)};_.xj=function yae(a){return KC(yK,eme,15,a,0,1)};var dab=mdb(Mwe,'XMLTypePackageImpl/15',1866);bcb(1867,1,nwe,zae);_.wj=function Aae(a){return JD(a,15)};_.xj=function Bae(a){return KC(yK,eme,15,a,0,1)};var eab=mdb(Mwe,'XMLTypePackageImpl/16',1867);bcb(1868,1,nwe,Cae);_.wj=function Dae(a){return ND(a)};_.xj=function Eae(a){return KC(ZI,nie,2,a,6,1)};var fab=mdb(Mwe,'XMLTypePackageImpl/17',1868);bcb(1869,1,nwe,Fae);_.wj=function Gae(a){return JD(a,155)};_.xj=function Hae(a){return KC(FI,nie,155,a,0,1)};var gab=mdb(Mwe,'XMLTypePackageImpl/18',1869);bcb(1870,1,nwe,Iae);_.wj=function Jae(a){return ND(a)};_.xj=function Kae(a){return KC(ZI,nie,2,a,6,1)};var hab=mdb(Mwe,'XMLTypePackageImpl/19',1870);bcb(1853,1,nwe,Lae);_.wj=function Mae(a){return JD(a,843)};_.xj=function Nae(a){return KC(Q9,Uhe,843,a,0,1)};var tab=mdb(Mwe,'XMLTypePackageImpl/2',1853);bcb(1871,1,nwe,Oae);_.wj=function Pae(a){return ND(a)};_.xj=function Qae(a){return KC(ZI,nie,2,a,6,1)};var jab=mdb(Mwe,'XMLTypePackageImpl/20',1871);bcb(1872,1,nwe,Rae);_.wj=function Sae(a){return ND(a)};_.xj=function Tae(a){return KC(ZI,nie,2,a,6,1)};var kab=mdb(Mwe,'XMLTypePackageImpl/21',1872);bcb(1873,1,nwe,Uae);_.wj=function Vae(a){return ND(a)};_.xj=function Wae(a){return KC(ZI,nie,2,a,6,1)};var lab=mdb(Mwe,'XMLTypePackageImpl/22',1873);bcb(1874,1,nwe,Xae);_.wj=function Yae(a){return ND(a)};_.xj=function Zae(a){return KC(ZI,nie,2,a,6,1)};var mab=mdb(Mwe,'XMLTypePackageImpl/23',1874);bcb(1875,1,nwe,$ae);_.wj=function _ae(a){return JD(a,190)};_.xj=function abe(a){return KC(SD,nie,190,a,0,2)};var nab=mdb(Mwe,'XMLTypePackageImpl/24',1875);bcb(1876,1,nwe,bbe);_.wj=function cbe(a){return ND(a)};_.xj=function dbe(a){return KC(ZI,nie,2,a,6,1)};var oab=mdb(Mwe,'XMLTypePackageImpl/25',1876);bcb(1877,1,nwe,ebe);_.wj=function fbe(a){return ND(a)};_.xj=function gbe(a){return KC(ZI,nie,2,a,6,1)};var pab=mdb(Mwe,'XMLTypePackageImpl/26',1877);bcb(1878,1,nwe,hbe);_.wj=function ibe(a){return JD(a,15)};_.xj=function jbe(a){return KC(yK,eme,15,a,0,1)};var qab=mdb(Mwe,'XMLTypePackageImpl/27',1878);bcb(1879,1,nwe,kbe);_.wj=function lbe(a){return JD(a,15)};_.xj=function mbe(a){return KC(yK,eme,15,a,0,1)};var rab=mdb(Mwe,'XMLTypePackageImpl/28',1879);bcb(1880,1,nwe,nbe);_.wj=function obe(a){return ND(a)};_.xj=function pbe(a){return KC(ZI,nie,2,a,6,1)};var sab=mdb(Mwe,'XMLTypePackageImpl/29',1880);bcb(1854,1,nwe,qbe);_.wj=function rbe(a){return JD(a,667)};_.xj=function sbe(a){return KC(S9,Uhe,2021,a,0,1)};var Eab=mdb(Mwe,'XMLTypePackageImpl/3',1854);bcb(1881,1,nwe,tbe);_.wj=function ube(a){return JD(a,19)};_.xj=function vbe(a){return KC(JI,nie,19,a,0,1)};var uab=mdb(Mwe,'XMLTypePackageImpl/30',1881);bcb(1882,1,nwe,wbe);_.wj=function xbe(a){return ND(a)};_.xj=function ybe(a){return KC(ZI,nie,2,a,6,1)};var vab=mdb(Mwe,'XMLTypePackageImpl/31',1882);bcb(1883,1,nwe,zbe);_.wj=function Abe(a){return JD(a,162)};_.xj=function Bbe(a){return KC(MI,nie,162,a,0,1)};var wab=mdb(Mwe,'XMLTypePackageImpl/32',1883);bcb(1884,1,nwe,Cbe);_.wj=function Dbe(a){return ND(a)};_.xj=function Ebe(a){return KC(ZI,nie,2,a,6,1)};var xab=mdb(Mwe,'XMLTypePackageImpl/33',1884);bcb(1885,1,nwe,Fbe);_.wj=function Gbe(a){return ND(a)};_.xj=function Hbe(a){return KC(ZI,nie,2,a,6,1)};var yab=mdb(Mwe,'XMLTypePackageImpl/34',1885);bcb(1886,1,nwe,Ibe);_.wj=function Jbe(a){return ND(a)};_.xj=function Kbe(a){return KC(ZI,nie,2,a,6,1)};var zab=mdb(Mwe,'XMLTypePackageImpl/35',1886);bcb(1887,1,nwe,Lbe);_.wj=function Mbe(a){return ND(a)};_.xj=function Nbe(a){return KC(ZI,nie,2,a,6,1)};var Aab=mdb(Mwe,'XMLTypePackageImpl/36',1887);bcb(1888,1,nwe,Obe);_.wj=function Pbe(a){return JD(a,15)};_.xj=function Qbe(a){return KC(yK,eme,15,a,0,1)};var Bab=mdb(Mwe,'XMLTypePackageImpl/37',1888);bcb(1889,1,nwe,Rbe);_.wj=function Sbe(a){return JD(a,15)};_.xj=function Tbe(a){return KC(yK,eme,15,a,0,1)};var Cab=mdb(Mwe,'XMLTypePackageImpl/38',1889);bcb(1890,1,nwe,Ube);_.wj=function Vbe(a){return ND(a)};_.xj=function Wbe(a){return KC(ZI,nie,2,a,6,1)};var Dab=mdb(Mwe,'XMLTypePackageImpl/39',1890);bcb(1855,1,nwe,Xbe);_.wj=function Ybe(a){return JD(a,668)};_.xj=function Zbe(a){return KC(T9,Uhe,2022,a,0,1)};var Pab=mdb(Mwe,'XMLTypePackageImpl/4',1855);bcb(1891,1,nwe,$be);_.wj=function _be(a){return ND(a)};_.xj=function ace(a){return KC(ZI,nie,2,a,6,1)};var Fab=mdb(Mwe,'XMLTypePackageImpl/40',1891);bcb(1892,1,nwe,bce);_.wj=function cce(a){return ND(a)};_.xj=function dce(a){return KC(ZI,nie,2,a,6,1)};var Gab=mdb(Mwe,'XMLTypePackageImpl/41',1892);bcb(1893,1,nwe,ece);_.wj=function fce(a){return ND(a)};_.xj=function gce(a){return KC(ZI,nie,2,a,6,1)};var Hab=mdb(Mwe,'XMLTypePackageImpl/42',1893);bcb(1894,1,nwe,hce);_.wj=function ice(a){return ND(a)};_.xj=function jce(a){return KC(ZI,nie,2,a,6,1)};var Iab=mdb(Mwe,'XMLTypePackageImpl/43',1894);bcb(1895,1,nwe,kce);_.wj=function lce(a){return ND(a)};_.xj=function mce(a){return KC(ZI,nie,2,a,6,1)};var Jab=mdb(Mwe,'XMLTypePackageImpl/44',1895);bcb(1896,1,nwe,nce);_.wj=function oce(a){return JD(a,184)};_.xj=function pce(a){return KC(UI,nie,184,a,0,1)};var Kab=mdb(Mwe,'XMLTypePackageImpl/45',1896);bcb(1897,1,nwe,qce);_.wj=function rce(a){return ND(a)};_.xj=function sce(a){return KC(ZI,nie,2,a,6,1)};var Lab=mdb(Mwe,'XMLTypePackageImpl/46',1897);bcb(1898,1,nwe,tce);_.wj=function uce(a){return ND(a)};_.xj=function vce(a){return KC(ZI,nie,2,a,6,1)};var Mab=mdb(Mwe,'XMLTypePackageImpl/47',1898);bcb(1899,1,nwe,wce);_.wj=function xce(a){return ND(a)};_.xj=function yce(a){return KC(ZI,nie,2,a,6,1)};var Nab=mdb(Mwe,'XMLTypePackageImpl/48',1899);bcb(nje,1,nwe,zce);_.wj=function Ace(a){return JD(a,184)};_.xj=function Bce(a){return KC(UI,nie,184,a,0,1)};var Oab=mdb(Mwe,'XMLTypePackageImpl/49',nje);bcb(1856,1,nwe,Cce);_.wj=function Dce(a){return JD(a,669)};_.xj=function Ece(a){return KC(U9,Uhe,2023,a,0,1)};var Tab=mdb(Mwe,'XMLTypePackageImpl/5',1856);bcb(1901,1,nwe,Fce);_.wj=function Gce(a){return JD(a,162)};_.xj=function Hce(a){return KC(MI,nie,162,a,0,1)};var Qab=mdb(Mwe,'XMLTypePackageImpl/50',1901);bcb(1902,1,nwe,Ice);_.wj=function Jce(a){return ND(a)};_.xj=function Kce(a){return KC(ZI,nie,2,a,6,1)};var Rab=mdb(Mwe,'XMLTypePackageImpl/51',1902);bcb(1903,1,nwe,Lce);_.wj=function Mce(a){return JD(a,19)};_.xj=function Nce(a){return KC(JI,nie,19,a,0,1)};var Sab=mdb(Mwe,'XMLTypePackageImpl/52',1903);bcb(1857,1,nwe,Oce);_.wj=function Pce(a){return ND(a)};_.xj=function Qce(a){return KC(ZI,nie,2,a,6,1)};var Uab=mdb(Mwe,'XMLTypePackageImpl/6',1857);bcb(1858,1,nwe,Rce);_.wj=function Sce(a){return JD(a,190)};_.xj=function Tce(a){return KC(SD,nie,190,a,0,2)};var Vab=mdb(Mwe,'XMLTypePackageImpl/7',1858);bcb(1859,1,nwe,Uce);_.wj=function Vce(a){return KD(a)};_.xj=function Wce(a){return KC(wI,nie,476,a,8,1)};var Wab=mdb(Mwe,'XMLTypePackageImpl/8',1859);bcb(1860,1,nwe,Xce);_.wj=function Yce(a){return JD(a,217)};_.xj=function Zce(a){return KC(xI,nie,217,a,0,1)};var Xab=mdb(Mwe,'XMLTypePackageImpl/9',1860);var $ce,_ce;var fde,gde;var kde;bcb(50,60,Tie,mde);var Zab=mdb(kxe,'RegEx/ParseException',50);bcb(820,1,{},ude);_.sl=function vde(a){return ac*16)throw vbb(new mde(tvd((h0d(),Uue))));c=c*16+e}while(true);if(this.a!=125)throw vbb(new mde(tvd((h0d(),Vue))));if(c>lxe)throw vbb(new mde(tvd((h0d(),Wue))));a=c}else{e=0;if(this.c!=0||(e=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));c=e;nde(this);if(this.c!=0||(e=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));c=c*16+e;a=c}break;case 117:d=0;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;a=b;break;case 118:nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;nde(this);if(this.c!=0||(d=yde(this.a))<0)throw vbb(new mde(tvd((h0d(),Tue))));b=b*16+d;if(b>lxe)throw vbb(new mde(tvd((h0d(),'parser.descappe.4'))));a=b;break;case 65:case 90:case 122:throw vbb(new mde(tvd((h0d(),Xue))));}return a};_.ul=function xde(a){var b,c;switch(a){case 100:c=(this.e&32)==32?Kfe('Nd',true):(wfe(),cfe);break;case 68:c=(this.e&32)==32?Kfe('Nd',false):(wfe(),jfe);break;case 119:c=(this.e&32)==32?Kfe('IsWord',true):(wfe(),sfe);break;case 87:c=(this.e&32)==32?Kfe('IsWord',false):(wfe(),lfe);break;case 115:c=(this.e&32)==32?Kfe('IsSpace',true):(wfe(),nfe);break;case 83:c=(this.e&32)==32?Kfe('IsSpace',false):(wfe(),kfe);break;default:throw vbb(new hz((b=a,mxe+b.toString(16))));}return c};_.vl=function zde(a){var b,c,d,e,f,g,h,i,j,k,l,m;this.b=1;nde(this);b=null;if(this.c==0&&this.a==94){nde(this);if(a){k=(wfe(),wfe(),++vfe,new $fe(5))}else{b=(wfe(),wfe(),++vfe,new $fe(4));Ufe(b,0,lxe);k=(null,++vfe,new $fe(4))}}else{k=(wfe(),wfe(),++vfe,new $fe(4))}e=true;while((m=this.c)!=1){if(m==0&&this.a==93&&!e)break;e=false;c=this.a;d=false;if(m==10){switch(c){case 100:case 68:case 119:case 87:case 115:case 83:Xfe(k,this.ul(c));d=true;break;case 105:case 73:case 99:case 67:c=this.Ll(k,c);c<0&&(d=true);break;case 112:case 80:l=tde(this,c);if(!l)throw vbb(new mde(tvd((h0d(),Iue))));Xfe(k,l);d=true;break;default:c=this.tl();}}else if(m==20){g=gfb(this.i,58,this.d);if(g<0)throw vbb(new mde(tvd((h0d(),Jue))));h=true;if(bfb(this.i,this.d)==94){++this.d;h=false}f=qfb(this.i,this.d,g);i=Lfe(f,h,(this.e&512)==512);if(!i)throw vbb(new mde(tvd((h0d(),Lue))));Xfe(k,i);d=true;if(g+1>=this.j||bfb(this.i,g+1)!=93)throw vbb(new mde(tvd((h0d(),Jue))));this.d=g+2}nde(this);if(!d){if(this.c!=0||this.a!=45){Ufe(k,c,c)}else{nde(this);if((m=this.c)==1)throw vbb(new mde(tvd((h0d(),Kue))));if(m==0&&this.a==93){Ufe(k,c,c);Ufe(k,45,45)}else{j=this.a;m==10&&(j=this.tl());nde(this);Ufe(k,c,j)}}}(this.e&zte)==zte&&this.c==0&&this.a==44&&nde(this)}if(this.c==1)throw vbb(new mde(tvd((h0d(),Kue))));if(b){Zfe(b,k);k=b}Yfe(k);Vfe(k);this.b=0;nde(this);return k};_.wl=function Ade(){var a,b,c,d;c=this.vl(false);while((d=this.c)!=7){a=this.a;if(d==0&&(a==45||a==38)||d==4){nde(this);if(this.c!=9)throw vbb(new mde(tvd((h0d(),Que))));b=this.vl(false);if(d==4)Xfe(c,b);else if(a==45)Zfe(c,b);else if(a==38)Wfe(c,b);else throw vbb(new hz('ASSERT'))}else{throw vbb(new mde(tvd((h0d(),Rue))))}}nde(this);return c};_.xl=function Bde(){var a,b;a=this.a-48;b=(wfe(),wfe(),++vfe,new Hge(12,null,a));!this.g&&(this.g=new Wvb);Tvb(this.g,new cge(a));nde(this);return b};_.yl=function Cde(){nde(this);return wfe(),ofe};_.zl=function Dde(){nde(this);return wfe(),mfe};_.Al=function Ede(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Bl=function Fde(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Cl=function Gde(){nde(this);return Ife()};_.Dl=function Hde(){nde(this);return wfe(),qfe};_.El=function Ide(){nde(this);return wfe(),tfe};_.Fl=function Jde(){var a;if(this.d>=this.j||((a=bfb(this.i,this.d++))&65504)!=64)throw vbb(new mde(tvd((h0d(),Eue))));nde(this);return wfe(),wfe(),++vfe,new ige(0,a-64)};_.Gl=function Kde(){nde(this);return Jfe()};_.Hl=function Lde(){nde(this);return wfe(),ufe};_.Il=function Mde(){var a;a=(wfe(),wfe(),++vfe,new ige(0,105));nde(this);return a};_.Jl=function Nde(){nde(this);return wfe(),rfe};_.Kl=function Ode(){nde(this);return wfe(),pfe};_.Ll=function Pde(a,b){return this.tl()};_.Ml=function Qde(){nde(this);return wfe(),hfe};_.Nl=function Rde(){var a,b,c,d,e;if(this.d+1>=this.j)throw vbb(new mde(tvd((h0d(),Bue))));d=-1;b=null;a=bfb(this.i,this.d);if(49<=a&&a<=57){d=a-48;!this.g&&(this.g=new Wvb);Tvb(this.g,new cge(d));++this.d;if(bfb(this.i,this.d)!=41)throw vbb(new mde(tvd((h0d(),yue))));++this.d}else{a==63&&--this.d;nde(this);b=qde(this);switch(b.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));break;default:throw vbb(new mde(tvd((h0d(),Cue))));}}nde(this);e=rde(this);c=null;if(e.e==2){if(e.em()!=2)throw vbb(new mde(tvd((h0d(),Due))));c=e.am(1);e=e.am(0)}if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return wfe(),wfe(),++vfe,new vge(d,b,e,c)};_.Ol=function Sde(){nde(this);return wfe(),ife};_.Pl=function Tde(){var a;nde(this);a=Cfe(24,rde(this));if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Ql=function Ude(){var a;nde(this);a=Cfe(20,rde(this));if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Rl=function Vde(){var a;nde(this);a=Cfe(22,rde(this));if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Sl=function Wde(){var a,b,c,d,e;a=0;c=0;b=-1;while(this.d=this.j)throw vbb(new mde(tvd((h0d(),zue))));if(b==45){++this.d;while(this.d=this.j)throw vbb(new mde(tvd((h0d(),zue))))}if(b==58){++this.d;nde(this);d=Dfe(rde(this),a,c);if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this)}else if(b==41){++this.d;nde(this);d=Dfe(rde(this),a,c)}else throw vbb(new mde(tvd((h0d(),Aue))));return d};_.Tl=function Xde(){var a;nde(this);a=Cfe(21,rde(this));if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Ul=function Yde(){var a;nde(this);a=Cfe(23,rde(this));if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Vl=function Zde(){var a,b;nde(this);a=this.f++;b=Efe(rde(this),a);if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return b};_.Wl=function $de(){var a;nde(this);a=Efe(rde(this),0);if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Xl=function _de(a){nde(this);if(this.c==5){nde(this);return Bfe(a,(wfe(),wfe(),++vfe,new lge(9,a)))}else return Bfe(a,(wfe(),wfe(),++vfe,new lge(3,a)))};_.Yl=function aee(a){var b;nde(this);b=(wfe(),wfe(),++vfe,new Lge(2));if(this.c==5){nde(this);Kge(b,(null,ffe));Kge(b,a)}else{Kge(b,a);Kge(b,(null,ffe))}return b};_.Zl=function bee(a){nde(this);if(this.c==5){nde(this);return wfe(),wfe(),++vfe,new lge(9,a)}else return wfe(),wfe(),++vfe,new lge(3,a)};_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=1;_.g=null;_.j=0;var bbb=mdb(kxe,'RegEx/RegexParser',820);bcb(1824,820,{},hee);_.sl=function iee(a){return false};_.tl=function jee(){return eee(this)};_.ul=function lee(a){return fee(a)};_.vl=function mee(a){return gee(this)};_.wl=function nee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.xl=function oee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.yl=function pee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.zl=function qee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Al=function ree(){nde(this);return fee(67)};_.Bl=function see(){nde(this);return fee(73)};_.Cl=function tee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Dl=function uee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.El=function vee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Fl=function wee(){nde(this);return fee(99)};_.Gl=function xee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Hl=function yee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Il=function zee(){nde(this);return fee(105)};_.Jl=function Aee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Kl=function Bee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Ll=function Cee(a,b){return Xfe(a,fee(b)),-1};_.Ml=function Dee(){nde(this);return wfe(),wfe(),++vfe,new ige(0,94)};_.Nl=function Eee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Ol=function Fee(){nde(this);return wfe(),wfe(),++vfe,new ige(0,36)};_.Pl=function Gee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Ql=function Hee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Rl=function Iee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Sl=function Jee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Tl=function Kee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Ul=function Lee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Vl=function Mee(){var a;nde(this);a=Efe(rde(this),0);if(this.c!=7)throw vbb(new mde(tvd((h0d(),yue))));nde(this);return a};_.Wl=function Nee(){throw vbb(new mde(tvd((h0d(),Yue))))};_.Xl=function Oee(a){nde(this);return Bfe(a,(wfe(),wfe(),++vfe,new lge(3,a)))};_.Yl=function Pee(a){var b;nde(this);b=(wfe(),wfe(),++vfe,new Lge(2));Kge(b,a);Kge(b,(null,ffe));return b};_.Zl=function Qee(a){nde(this);return wfe(),wfe(),++vfe,new lge(3,a)};var cee=null,dee=null;var $ab=mdb(kxe,'RegEx/ParserForXMLSchema',1824);bcb(117,1,yxe,xfe);_.$l=function yfe(a){throw vbb(new hz('Not supported.'))};_._l=function Gfe(){return -1};_.am=function Hfe(a){return null};_.bm=function Mfe(){return null};_.cm=function Pfe(a){};_.dm=function Qfe(a){};_.em=function Rfe(){return 0};_.Ib=function Sfe(){return this.fm(0)};_.fm=function Tfe(a){return this.e==11?'.':''};_.e=0;var Yee,Zee,$ee,_ee,afe,bfe=null,cfe,dfe=null,efe,ffe,gfe=null,hfe,ife,jfe,kfe,lfe,mfe,nfe,ofe,pfe,qfe,rfe,sfe,tfe,ufe,vfe=0;var lbb=mdb(kxe,'RegEx/Token',117);bcb(136,117,{3:1,136:1,117:1},$fe);_.fm=function bge(a){var b,c,d;if(this.e==4){if(this==efe)c='.';else if(this==cfe)c='\\\\d';else if(this==sfe)c='\\\\w';else if(this==nfe)c='\\\\s';else{d=new Hfb;d.a+='[';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){Efb(d,age(this.b[b]))}else{Efb(d,age(this.b[b]));d.a+='-';Efb(d,age(this.b[b+1]))}}d.a+=']';c=d.a}}else{if(this==jfe)c='\\\\D';else if(this==lfe)c='\\\\W';else if(this==kfe)c='\\\\S';else{d=new Hfb;d.a+='[^';for(b=0;b0&&(d.a+=',',d);if(this.b[b]===this.b[b+1]){Efb(d,age(this.b[b]))}else{Efb(d,age(this.b[b]));d.a+='-';Efb(d,age(this.b[b+1]))}}d.a+=']';c=d.a}}return c};_.a=false;_.c=false;var _ab=mdb(kxe,'RegEx/RangeToken',136);bcb(584,1,{584:1},cge);_.a=0;var abb=mdb(kxe,'RegEx/RegexParser/ReferencePosition',584);bcb(583,1,{3:1,583:1},ege);_.Fb=function fge(a){var b;if(a==null)return false;if(!JD(a,583))return false;b=BD(a,583);return dfb(this.b,b.b)&&this.a==b.a};_.Hb=function gge(){return LCb(this.b+'/'+See(this.a))};_.Ib=function hge(){return this.c.fm(this.a)};_.a=0;var cbb=mdb(kxe,'RegEx/RegularExpression',583);bcb(223,117,yxe,ige);_._l=function jge(){return this.a};_.fm=function kge(a){var b,c,d;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:d='\\\\'+HD(this.a&aje);break;case 12:d='\\\\f';break;case 10:d='\\\\n';break;case 13:d='\\\\r';break;case 9:d='\\\\t';break;case 27:d='\\\\e';break;default:if(this.a>=Tje){c=(b=this.a>>>0,'0'+b.toString(16));d='\\\\v'+qfb(c,c.length-6,c.length)}else d=''+HD(this.a&aje);}break;case 8:this==hfe||this==ife?(d=''+HD(this.a&aje)):(d='\\\\'+HD(this.a&aje));break;default:d=null;}return d};_.a=0;var dbb=mdb(kxe,'RegEx/Token/CharToken',223);bcb(309,117,yxe,lge);_.am=function mge(a){return this.a};_.cm=function nge(a){this.b=a};_.dm=function oge(a){this.c=a};_.em=function pge(){return 1};_.fm=function qge(a){var b;if(this.e==3){if(this.c<0&&this.b<0){b=this.a.fm(a)+'*'}else if(this.c==this.b){b=this.a.fm(a)+'{'+this.c+'}'}else if(this.c>=0&&this.b>=0){b=this.a.fm(a)+'{'+this.c+','+this.b+'}'}else if(this.c>=0&&this.b<0){b=this.a.fm(a)+'{'+this.c+',}'}else throw vbb(new hz('Token#toString(): CLOSURE '+this.c+She+this.b))}else{if(this.c<0&&this.b<0){b=this.a.fm(a)+'*?'}else if(this.c==this.b){b=this.a.fm(a)+'{'+this.c+'}?'}else if(this.c>=0&&this.b>=0){b=this.a.fm(a)+'{'+this.c+','+this.b+'}?'}else if(this.c>=0&&this.b<0){b=this.a.fm(a)+'{'+this.c+',}?'}else throw vbb(new hz('Token#toString(): NONGREEDYCLOSURE '+this.c+She+this.b))}return b};_.b=0;_.c=0;var ebb=mdb(kxe,'RegEx/Token/ClosureToken',309);bcb(821,117,yxe,rge);_.am=function sge(a){return a==0?this.a:this.b};_.em=function tge(){return 2};_.fm=function uge(a){var b;this.b.e==3&&this.b.am(0)==this.a?(b=this.a.fm(a)+'+'):this.b.e==9&&this.b.am(0)==this.a?(b=this.a.fm(a)+'+?'):(b=this.a.fm(a)+(''+this.b.fm(a)));return b};var fbb=mdb(kxe,'RegEx/Token/ConcatToken',821);bcb(1822,117,yxe,vge);_.am=function wge(a){if(a==0)return this.d;if(a==1)return this.b;throw vbb(new hz('Internal Error: '+a))};_.em=function xge(){return !this.b?1:2};_.fm=function yge(a){var b;this.c>0?(b='(?('+this.c+')'):this.a.e==8?(b='(?('+this.a+')'):(b='(?'+this.a);!this.b?(b+=this.d+')'):(b+=this.d+'|'+this.b+')');return b};_.c=0;var gbb=mdb(kxe,'RegEx/Token/ConditionToken',1822);bcb(1823,117,yxe,zge);_.am=function Age(a){return this.b};_.em=function Bge(){return 1};_.fm=function Cge(a){return '(?'+(this.a==0?'':See(this.a))+(this.c==0?'':See(this.c))+':'+this.b.fm(a)+')'};_.a=0;_.c=0;var hbb=mdb(kxe,'RegEx/Token/ModifierToken',1823);bcb(822,117,yxe,Dge);_.am=function Ege(a){return this.a};_.em=function Fge(){return 1};_.fm=function Gge(a){var b;b=null;switch(this.e){case 6:this.b==0?(b='(?:'+this.a.fm(a)+')'):(b='('+this.a.fm(a)+')');break;case 20:b='(?='+this.a.fm(a)+')';break;case 21:b='(?!'+this.a.fm(a)+')';break;case 22:b='(?<='+this.a.fm(a)+')';break;case 23:b='(?'+this.a.fm(a)+')';}return b};_.b=0;var ibb=mdb(kxe,'RegEx/Token/ParenToken',822);bcb(521,117,{3:1,117:1,521:1},Hge);_.bm=function Ige(){return this.b};_.fm=function Jge(a){return this.e==12?'\\\\'+this.a:Wee(this.b)};_.a=0;var jbb=mdb(kxe,'RegEx/Token/StringToken',521);bcb(465,117,yxe,Lge);_.$l=function Mge(a){Kge(this,a)};_.am=function Nge(a){return BD(Uvb(this.a,a),117)};_.em=function Oge(){return !this.a?0:this.a.a.c.length};_.fm=function Pge(a){var b,c,d,e,f;if(this.e==1){if(this.a.a.c.length==2){b=BD(Uvb(this.a,0),117);c=BD(Uvb(this.a,1),117);c.e==3&&c.am(0)==b?(e=b.fm(a)+'+'):c.e==9&&c.am(0)==b?(e=b.fm(a)+'+?'):(e=b.fm(a)+(''+c.fm(a)))}else{f=new Hfb;for(d=0;d=this.c.b:this.a<=this.c.b};_.Sb=function whe(){return this.b>0};_.Tb=function yhe(){return this.b};_.Vb=function Ahe(){return this.b-1};_.Qb=function Bhe(){throw vbb(new cgb(Exe))};_.a=0;_.b=0;var pbb=mdb(Bxe,'ExclusiveRange/RangeIterator',254);var TD=pdb(Fve,'C');var WD=pdb(Ive,'I');var sbb=pdb(Khe,'Z');var XD=pdb(Jve,'J');var SD=pdb(Eve,'B');var UD=pdb(Gve,'D');var VD=pdb(Hve,'F');var rbb=pdb(Kve,'S');var h1=odb('org.eclipse.elk.core.labels','ILabelManager');var O4=odb(Tte,'DiagnosticChain');var u8=odb(pwe,'ResourceSet');var V4=mdb(Tte,'InvocationTargetException',null);var Ihe=(Az(),Dz);var gwtOnLoad=gwtOnLoad=Zbb;Xbb(hcb);$bb('permProps',[[[Fxe,Gxe],[Hxe,'gecko1_8']],[[Fxe,Gxe],[Hxe,'ie10']],[[Fxe,Gxe],[Hxe,'ie8']],[[Fxe,Gxe],[Hxe,'ie9']],[[Fxe,Gxe],[Hxe,'safari']]]);\n// -------------- RUN GWT INITIALIZATION CODE -------------- \ngwtOnLoad(null, 'elk', null);\n\n}).call(this)}).call(this,typeof __webpack_require__.g !== \"undefined\" ? __webpack_require__.g : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],3:[function(require,module,exports){\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/*******************************************************************************\n * Copyright (c) 2021 Kiel University and others.\n * This program and the accompanying materials are made available under the\n * terms of the Eclipse Public License 2.0 which is available at\n * http://www.eclipse.org/legal/epl-2.0.\n * \n * SPDX-License-Identifier: EPL-2.0\n *******************************************************************************/\nvar ELK = require('./elk-api.js').default;\n\nvar ELKNode = function (_ELK) {\n _inherits(ELKNode, _ELK);\n\n function ELKNode() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, ELKNode);\n\n var optionsClone = Object.assign({}, options);\n\n var workerThreadsExist = false;\n try {\n require.resolve('web-worker');\n workerThreadsExist = true;\n } catch (e) {}\n\n // user requested a worker\n if (options.workerUrl) {\n if (workerThreadsExist) {\n var Worker = require('web-worker');\n optionsClone.workerFactory = function (url) {\n return new Worker(url);\n };\n } else {\n console.warn('Web worker requested but \\'web-worker\\' package not installed. \\nConsider installing the package or pass your own \\'workerFactory\\' to ELK\\'s constructor.\\n... Falling back to non-web worker version.');\n }\n }\n\n // unless no other workerFactory is registered, use the fake worker\n if (!optionsClone.workerFactory) {\n var _require = require('./elk-worker.min.js'),\n _Worker = _require.Worker;\n\n optionsClone.workerFactory = function (url) {\n return new _Worker(url);\n };\n }\n\n return _possibleConstructorReturn(this, (ELKNode.__proto__ || Object.getPrototypeOf(ELKNode)).call(this, optionsClone));\n }\n\n return ELKNode;\n}(ELK);\n\nObject.defineProperty(module.exports, \"__esModule\", {\n value: true\n});\nmodule.exports = ELKNode;\nELKNode.default = ELKNode;\n},{\"./elk-api.js\":1,\"./elk-worker.min.js\":2,\"web-worker\":4}],4:[function(require,module,exports){\n/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nmodule.exports = Worker;\n},{}]},{},[3])(3)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Vsa2pzL2xpYi9lbGsuYnVuZGxlZC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxhQUFhLEdBQUcsSUFBc0QsRUFBRSxtQkFBbUIsS0FBSyxVQUE0TixDQUFDLGFBQWEsMEJBQTBCLG1CQUFtQixrQkFBa0IsZ0JBQWdCLFVBQVUsVUFBVSxNQUFNLFNBQW1DLENBQUMsZ0JBQWdCLE9BQUMsT0FBTyxvQkFBb0IsOENBQThDLGtDQUFrQyxZQUFZLFlBQVksbUNBQW1DLGlCQUFpQixlQUFlLHNCQUFzQixvQkFBb0IsVUFBVSxTQUFtQyxLQUFLLFdBQVcsWUFBWSxTQUFTLFNBQVMsS0FBSztBQUN4ekI7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELCtEQUErRCx5REFBeUQscUVBQXFFLDZEQUE2RCx3QkFBd0I7O0FBRWpqQixrREFBa0QsMENBQTBDOztBQUU1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUZBQXFGO0FBQ3JGO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsbUJBQW1CO0FBQzFEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsZ0JBQWdCO0FBQ3ZEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsbUJBQW1CO0FBQzFEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDO0FBQ0QsQ0FBQyxHQUFHO0FBQ0osbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZ0JBQWdCO0FBQ2hCLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixlQUFlO0FBQ2YsZUFBZTtBQUNmLGVBQWU7QUFDZixjQUFjO0FBQ2Qsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGdCQUFnQjtBQUNoQixlQUFlO0FBQ2YsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7QUFDaEIsZ0JBQWdCO0FBQ2hCLGdCQUFnQjtBQUNoQixnQkFBZ0I7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QixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0IsU0FBUztBQUMzQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCLFNBQVM7QUFDM0Isa0JBQWtCO0FBQ2xCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQixTQUFTO0FBQzNCLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCLE1BQU07QUFD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QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07QUFDdEIsZ0JBQWdCLE1BQU07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QXlCLHlCQUF5QiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDBCQUEwQix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIsVUFBVSx5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5QixVQUFVLHlCQUF5QixVQUFVLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5QiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLFVBQVUseUJBQXlCLHlCQUF5Qiw2QkFBNkIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLFVBQVUseUJBQXlCLFVBQVUseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIsV0FBVywwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsV0FBVywwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLFdBQVcsMEJBQTBCLDBCQUEwQixVQUFVLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5Qix5QkFBeUIseUJBQXlCLHlCQUF5QixXQUFXLDBCQUEwQjtBQUNwdUcsZ0JBQWdCLE1BQU0sY0FBYyxTQUFTLGNBQWMsd0JBQXdCLFdBQVcsZ0NBQWdDLG1CQUFtQix1Q0FBdUMsdUZBQXVGLHNG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LGFBQWEsWUFBWSxzQkFBc0Isc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQixjQUFjLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLGNBQWMsYUFBYSx1QkFBdUIsYUFBYSxjQUFjLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQixjQUFjLHVCQUF1Qix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsY0FBYyx1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLGNBQWMsdUJBQXVCLHVCQUF1Qix1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQixjQUFjLGNBQWMsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1Qix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLGNBQWMsc0JBQXNCLHVCQUF1QixzQkFBc0IsY0FBYyxhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLGNBQWMsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1Qix1QkFBdUIsc0JBQXNCLHVCQUF1Qix1QkFBdUIsc0JBQXNCLGNBQWMsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLGNBQWMsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSxjQUFjLHNCQUFzQix1QkFBdUIsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSxjQUFjLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQixjQUFjLGNBQWMsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQixjQUFjLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsY0FBYyxjQUFjLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSxjQUFjLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsY0FBYyxzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsY0FBYyxhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQixjQUFjLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsY0FBYyxjQUFjLHVCQUF1Qix1QkFBdUIsc0JBQXNCLHVCQUF1Qix1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLGNBQWMsc0JBQXNCLHVCQUF1QixhQUFhLGNBQWMsc0JBQXNCLGNBQWMsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLHVCQUF1QixhQUFhLGNBQWMsYUFBYSxjQUFjLHNCQUFzQix1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSxjQUFjLGNBQWMsdUJBQXVCLHVCQUF1QixhQUFhLHVCQUF1QixjQUFjLHNCQUFzQix1QkFBdUIsYUFBYSxjQUFjLGFBQWEsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLHVCQUF1QixzQkFBc0IsdUJBQXVCLHNCQUFzQixjQUFjLGFBQWEsY0FBYyxhQUFhLGNBQWMsc0JBQXNCLHVCQUF1Qix1QkFBdUIsYUFBYSx1QkFBdUIsc0JBQXNCLHVCQUF1QixhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsY0FBYyxhQUFhLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWEsY0FBYyxzQkFBc0IsdUJBQXVCLHNCQUFzQix1QkFBdUIsc0JBQXNCLGNBQWMsYUFBYSx1QkFBdUIsYUFBYSx1QkFBdUIsYUFBYSxjQUFjLGFBQWEsdUJBQXVCLGFBQWEsdUJBQXVCLHNCQUFzQixjQUFjLGFBQWEsY0FBYyxhQUFhLGNBQWMsc0JBQXNCLGNBQWMsYUFBYSxjQUFjLGFBQWEsY0FBYyxzQkFBc0IsdUJBQXVCLHNCQUFzQixjQUFjLHNCQUFz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b0Isa0JBQWtCLG9CQUFvQixrQkFBa0IscUJBQXFCLFNBQVMsT0FBTyxvQkFBb0IscURBQXFELG9CQUFvQixpQkFBaUIsb0JBQW9CLGVBQWUsb0JBQW9CLGlCQUFpQixvQkFBb0IseUJBQXlCLE1BQU0sTUFBTSxvREFBb0Qsb0JBQW9CLG9CQUFvQixxQkFBcUIsb0JBQW9CLG9CQUFvQixvQkFBb0Isb0JBQW9CLHFCQUFxQiwwREFBMEQsa0NBQWtDLDhCQUE4QixpREFBaUQsa0JBQWtCLDRCQUE0QixTQUFTO0FBQ3Z5NWpCO0FBQ0E7O0FBRUEsQ0FBQyxhQUFhLG1CQUFtQixxQkFBTSxtQkFBbUIscUJBQU0sbUZBQW1GO0FBQ25KLENBQUMsR0FBRztBQUNKOztBQUVBLGtEQUFrRCwwQ0FBMEM7O0FBRTVGLGtEQUFrRCxhQUFhLHlGQUF5Rjs7QUFFeEosMkNBQTJDLCtEQUErRCx1R0FBdUcseUVBQXlFLGVBQWUsMEVBQTBFLEdBQUc7O0FBRXRYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUMsRUFBRSx3REFBd0Q7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUcsRUFBRSxHQUFHO0FBQ1QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZWxranMvbGliL2Vsay5idW5kbGVkLmpzP2Y4M2MiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuRUxLID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTcgS2llbCBVbml2ZXJzaXR5IGFuZCBvdGhlcnMuXG4gKiBcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGUgXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMCBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLyBcbiAqIFxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xudmFyIEVMSyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRUxLKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICAgIF9yZWYkZGVmYXVsdExheW91dE9wdCA9IF9yZWYuZGVmYXVsdExheW91dE9wdGlvbnMsXG4gICAgICAgIGRlZmF1bHRMYXlvdXRPcHRpb25zID0gX3JlZiRkZWZhdWx0TGF5b3V0T3B0ID09PSB1bmRlZmluZWQgPyB7fSA6IF9yZWYkZGVmYXVsdExheW91dE9wdCxcbiAgICAgICAgX3JlZiRhbGdvcml0aG1zID0gX3JlZi5hbGdvcml0aG1zLFxuICAgICAgICBhbGdvcml0aG1zID0gX3JlZiRhbGdvcml0aG1zID09PSB1bmRlZmluZWQgPyBbJ2xheWVyZWQnLCAnc3RyZXNzJywgJ21ydHJlZScsICdyYWRpYWwnLCAnZm9yY2UnLCAnZGlzY28nLCAnc3BvcmVPdmVybGFwJywgJ3Nwb3JlQ29tcGFjdGlvbicsICdyZWN0cGFja2luZyddIDogX3JlZiRhbGdvcml0aG1zLFxuICAgICAgICB3b3JrZXJGYWN0b3J5ID0gX3JlZi53b3JrZXJGYWN0b3J5LFxuICAgICAgICB3b3JrZXJVcmwgPSBfcmVmLndvcmtlclVybDtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFTEspO1xuXG4gICAgdGhpcy5kZWZhdWx0TGF5b3V0T3B0aW9ucyA9IGRlZmF1bHRMYXlvdXRPcHRpb25zO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIC8vIGNoZWNrIHZhbGlkIHdvcmtlciBjb25zdHJ1Y3Rpb24gcG9zc2libGVcbiAgICBpZiAodHlwZW9mIHdvcmtlclVybCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdvcmtlckZhY3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29uc3RydWN0IGFuIEVMSyB3aXRob3V0IGJvdGggJ3dvcmtlclVybCcgYW5kICd3b3JrZXJGYWN0b3J5Jy5cIik7XG4gICAgfVxuICAgIHZhciBmYWN0b3J5ID0gd29ya2VyRmFjdG9yeTtcbiAgICBpZiAodHlwZW9mIHdvcmtlclVybCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdvcmtlckZhY3RvcnkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyB1c2UgZGVmYXVsdCBXZWIgV29ya2VyXG4gICAgICBmYWN0b3J5ID0gZnVuY3Rpb24gZmFjdG9yeSh1cmwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBXb3JrZXIodXJsKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIHRoZSB3b3JrZXJcbiAgICB2YXIgd29ya2VyID0gZmFjdG9yeSh3b3JrZXJVcmwpO1xuICAgIGlmICh0eXBlb2Ygd29ya2VyLnBvc3RNZXNzYWdlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ3JlYXRlZCB3b3JrZXIgZG9lcyBub3QgcHJvdmlkZVwiICsgXCIgdGhlIHJlcXVpcmVkICdwb3N0TWVzc2FnZScgZnVuY3Rpb24uXCIpO1xuICAgIH1cblxuICAgIC8vIHdyYXAgdGhlIHdvcmtlciB0byByZXR1cm4gcHJvbWlzZXNcbiAgICB0aGlzLndvcmtlciA9IG5ldyBQcm9taXNlZFdvcmtlcih3b3JrZXIpO1xuXG4gICAgLy8gaW5pdGlhbGx5IHJlZ2lzdGVyIGFsZ29yaXRobXNcbiAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICBjbWQ6ICdyZWdpc3RlcicsXG4gICAgICBhbGdvcml0aG1zOiBhbGdvcml0aG1zXG4gICAgfSkudGhlbihmdW5jdGlvbiAocikge1xuICAgICAgcmV0dXJuIF90aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmVycik7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRUxLLCBbe1xuICAgIGtleTogJ2xheW91dCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxheW91dChncmFwaCkge1xuICAgICAgdmFyIF9yZWYyID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgICAgICBfcmVmMiRsYXlvdXRPcHRpb25zID0gX3JlZjIubGF5b3V0T3B0aW9ucyxcbiAgICAgICAgICBsYXlvdXRPcHRpb25zID0gX3JlZjIkbGF5b3V0T3B0aW9ucyA9PT0gdW5kZWZpbmVkID8gdGhpcy5kZWZhdWx0TGF5b3V0T3B0aW9ucyA6IF9yZWYyJGxheW91dE9wdGlvbnMsXG4gICAgICAgICAgX3JlZjIkbG9nZ2luZyA9IF9yZWYyLmxvZ2dpbmcsXG4gICAgICAgICAgbG9nZ2luZyA9IF9yZWYyJGxvZ2dpbmcgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZjIkbG9nZ2luZyxcbiAgICAgICAgICBfcmVmMiRtZWFzdXJlRXhlY3V0aW8gPSBfcmVmMi5tZWFzdXJlRXhlY3V0aW9uVGltZSxcbiAgICAgICAgICBtZWFzdXJlRXhlY3V0aW9uVGltZSA9IF9yZWYyJG1lYXN1cmVFeGVjdXRpbyA9PT0gdW5kZWZpbmVkID8gZmFsc2UgOiBfcmVmMiRtZWFzdXJlRXhlY3V0aW87XG5cbiAgICAgIGlmICghZ3JhcGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtZXRlciAnZ3JhcGgnLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBjbWQ6ICdsYXlvdXQnLFxuICAgICAgICBncmFwaDogZ3JhcGgsXG4gICAgICAgIGxheW91dE9wdGlvbnM6IGxheW91dE9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBsb2dnaW5nOiBsb2dnaW5nLFxuICAgICAgICAgIG1lYXN1cmVFeGVjdXRpb25UaW1lOiBtZWFzdXJlRXhlY3V0aW9uVGltZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdrbm93bkxheW91dEFsZ29yaXRobXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrbm93bkxheW91dEFsZ29yaXRobXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoeyBjbWQ6ICdhbGdvcml0aG1zJyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdrbm93bkxheW91dE9wdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrbm93bkxheW91dE9wdGlvbnMoKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoeyBjbWQ6ICdvcHRpb25zJyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdrbm93bkxheW91dENhdGVnb3JpZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBrbm93bkxheW91dENhdGVnb3JpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3JrZXIucG9zdE1lc3NhZ2UoeyBjbWQ6ICdjYXRlZ29yaWVzJyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0ZXJtaW5hdGVXb3JrZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZXJtaW5hdGVXb3JrZXIoKSB7XG4gICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRUxLO1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBFTEs7XG5cbnZhciBQcm9taXNlZFdvcmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUHJvbWlzZWRXb3JrZXIod29ya2VyKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJvbWlzZWRXb3JrZXIpO1xuXG4gICAgaWYgKHdvcmtlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBwYXJhbWV0ZXIgJ3dvcmtlcicuXCIpO1xuICAgIH1cbiAgICB0aGlzLnJlc29sdmVycyA9IHt9O1xuICAgIHRoaXMud29ya2VyID0gd29ya2VyO1xuICAgIHRoaXMud29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChhbnN3ZXIpIHtcbiAgICAgIC8vIHdoeSBpcyB0aGlzIG5lY2Vzc2FyeT9cbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIucmVjZWl2ZShfdGhpczIsIGFuc3dlcik7XG4gICAgICB9LCAwKTtcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFByb21pc2VkV29ya2VyLCBbe1xuICAgIGtleTogJ3Bvc3RNZXNzYWdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdE1lc3NhZ2UobXNnKSB7XG4gICAgICB2YXIgaWQgPSB0aGlzLmlkIHx8IDA7XG4gICAgICB0aGlzLmlkID0gaWQgKyAxO1xuICAgICAgbXNnLmlkID0gaWQ7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvLyBwcmVwYXJlIHRoZSByZXNvbHZlclxuICAgICAgICBzZWxmLnJlc29sdmVyc1tpZF0gPSBmdW5jdGlvbiAoZXJyLCByZXMpIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBzZWxmLmNvbnZlcnRHd3RTdHlsZUVycm9yKGVycik7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gcG9zdCB0aGUgbWVzc2FnZVxuICAgICAgICBzZWxmLndvcmtlci5wb3N0TWVzc2FnZShtc2cpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVjZWl2ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlY2VpdmUoc2VsZiwgYW5zd2VyKSB7XG4gICAgICB2YXIganNvbiA9IGFuc3dlci5kYXRhO1xuICAgICAgdmFyIHJlc29sdmVyID0gc2VsZi5yZXNvbHZlcnNbanNvbi5pZF07XG4gICAgICBpZiAocmVzb2x2ZXIpIHtcbiAgICAgICAgZGVsZXRlIHNlbGYucmVzb2x2ZXJzW2pzb24uaWRdO1xuICAgICAgICBpZiAoanNvbi5lcnJvcikge1xuICAgICAgICAgIHJlc29sdmVyKGpzb24uZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyKG51bGwsIGpzb24uZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0ZXJtaW5hdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0ZXJtaW5hdGUoKSB7XG4gICAgICBpZiAodGhpcy53b3JrZXIudGVybWluYXRlKSB7XG4gICAgICAgIHRoaXMud29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbnZlcnRHd3RTdHlsZUVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29udmVydEd3dFN0eWxlRXJyb3IoZXJyKSB7XG4gICAgICBpZiAoIWVycikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBTb21ld2hhdCBmbGF0dGVuIHRoZSB3YXkgR1dUIHN0b3JlcyBuZXN0ZWQgZXhjZXB0aW9uKHMpXG4gICAgICB2YXIgamF2YUV4Y2VwdGlvbiA9IGVyclsnX19qYXZhJGV4Y2VwdGlvbiddO1xuICAgICAgaWYgKGphdmFFeGNlcHRpb24pIHtcbiAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBuZXN0ZWQgZXhjZXB0aW9uIGlzIGRpZmZlcmVudFxuICAgICAgICAvLyBpbiB0aGUgbm9uLW1pbmlmaWVkICgnY2F1c2UnKSBhbmQgdGhlIG1pbmlmaWVkIChub3QgZGV0ZXJtaW5pc3RpYykgdmVyc2lvbi5cbiAgICAgICAgLy8gSGVuY2UsIHRoZSB2ZXJzaW9uIGJlbG93IG9ubHkgd29ya3MgZm9yIHRoZSBub24tbWluaWZpZWQgdmVyc2lvbi5cbiAgICAgICAgLy8gSG93ZXZlciwgYXMgdGhlIG1pbmlmaWVkIHN0YWNrIHRyYWNlIGlzIG5vdCBvZiBtdWNoIHVzZSBhbnl3YXksIG9uZVxuICAgICAgICAvLyBzaG91bGQgc3dpdGNoIHRoZSB1c2VkIHZlcnNpb24gZm9yIGRlYnVnZ2luZyBpbiBzdWNoIGEgY2FzZS5cbiAgICAgICAgaWYgKGphdmFFeGNlcHRpb24uY2F1c2UgJiYgamF2YUV4Y2VwdGlvbi5jYXVzZS5iYWNraW5nSnNPYmplY3QpIHtcbiAgICAgICAgICBlcnIuY2F1c2UgPSBqYXZhRXhjZXB0aW9uLmNhdXNlLmJhY2tpbmdKc09iamVjdDtcbiAgICAgICAgICB0aGlzLmNvbnZlcnRHd3RTdHlsZUVycm9yKGVyci5jYXVzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIGVyclsnX19qYXZhJGV4Y2VwdGlvbiddO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQcm9taXNlZFdvcmtlcjtcbn0oKTtcbn0se31dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpeyhmdW5jdGlvbiAoKXtcbid1c2Ugc3RyaWN0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0gICAgRkFLRSBFTEVNRU5UUyBHV1QgQVNTVU1FUyBFWElTVCAgIC0tLS0tLS0tLS0tLS0tIFxudmFyICR3bmQ7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgJHduZCA9IHdpbmRvd1xuZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgJHduZCA9IGdsb2JhbCAvLyBub2RlanNcbmVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJylcbiAgICAkd25kID0gc2VsZiAvLyB3ZWIgd29ya2VyXG5cbnZhciAkbW9kdWxlTmFtZSxcbiAgICAkbW9kdWxlQmFzZTtcblxuLy8gLS0tLS0tLS0tLS0tLS0gICAgV09SS0FST1VORCBTVFJJQ1QgTU9ERSwgU0VFICMxMjcgICAgLS0tLS0tLS0tLS0tLS0gXG52YXIgZywgaSwgbztcblxuLy8gLS0tLS0tLS0tLS0tLS0gICAgR0VORVJBVEVEIENPREUgICAgLS0tLS0tLS0tLS0tLS0gXG5mdW5jdGlvbiBuYigpe31cbmZ1bmN0aW9uIHhiKCl7fVxuZnVuY3Rpb24gRmQoKXt9XG5mdW5jdGlvbiAkZygpe31cbmZ1bmN0aW9uIF9wKCl7fVxuZnVuY3Rpb24geXEoKXt9XG5mdW5jdGlvbiBTcSgpe31cbmZ1bmN0aW9uIEVzKCl7fVxuZnVuY3Rpb24gSncoKXt9XG5mdW5jdGlvbiBWdygpe31cbmZ1bmN0aW9uIFZBKCl7fVxuZnVuY3Rpb24gZEEoKXt9XG5mdW5jdGlvbiBNQSgpe31cbmZ1bmN0aW9uIFBBKCl7fVxuZnVuY3Rpb24gUEIoKXt9XG5mdW5jdGlvbiBieCgpe31cbmZ1bmN0aW9uIGN4KCl7fVxuZnVuY3Rpb24gdnkoKXt9XG5mdW5jdGlvbiBOeigpe31cbmZ1bmN0aW9uIFl6KCl7fVxuZnVuY3Rpb24gWWxiKCl7fVxuZnVuY3Rpb24gWW1iKCl7fVxuZnVuY3Rpb24geG1iKCl7fVxuZnVuY3Rpb24gRm1iKCl7fVxuZnVuY3Rpb24gUW1iKCl7fVxuZnVuY3Rpb24gZ2NiKCl7fVxuZnVuY3Rpb24gY2NiKCl7fVxuZnVuY3Rpb24gamNiKCl7fVxuZnVuY3Rpb24ganRiKCl7fVxuZnVuY3Rpb24gb3RiKCl7fVxuZnVuY3Rpb24gcXRiKCl7fVxuZnVuY3Rpb24gX2ZiKCl7fVxuZnVuY3Rpb24gYnBiKCl7fVxuZnVuY3Rpb24ga3BiKCl7fVxuZnVuY3Rpb24gcHBiKCl7fVxuZnVuY3Rpb24gR3BiKCl7fVxuZnVuY3Rpb24gZHJiKCl7fVxuZnVuY3Rpb24gZHpiKCl7fVxuZnVuY3Rpb24gZnpiKCl7fVxuZnVuY3Rpb24gZnhiKCl7fVxuZnVuY3Rpb24gVnhiKCl7fVxuZnVuY3Rpb24gT3ZiKCl7fVxuZnVuY3Rpb24gYnliKCl7fVxuZnVuY3Rpb24genliKCl7fVxuZnVuY3Rpb24gWnliKCl7fVxuZnVuY3Rpb24gX3liKCl7fVxuZnVuY3Rpb24gaHpiKCl7fVxuZnVuY3Rpb24ganpiKCl7fVxuZnVuY3Rpb24gbHpiKCl7fVxuZnVuY3Rpb24gbnpiKCl7fVxuZnVuY3Rpb24gcnpiKCl7fVxuZnVuY3Rpb24genpiKCl7fVxuZnVuY3Rpb24gQ3piKCl7fVxuZnVuY3Rpb24gRXpiKCl7fVxuZnVuY3Rpb24gR3piKCl7fVxuZnVuY3Rpb24gSXpiKCl7fVxuZnVuY3Rpb24gTXpiKCl7fVxuZnVuY3Rpb24gYkJiKCl7fVxuZnVuY3Rpb24gTkJiKCl7fVxuZnVuY3Rpb24gUEJiKCl7fVxuZnVuY3Rpb24gUkJiKCl7fVxuZnVuY3Rpb24gaUNiKCl7fVxuZnVuY3Rpb24gT0NiKCl7fVxuZnVuY3Rpb24gU0NiKCl7fVxuZnVuY3Rpb24gR0RiKCl7fVxuZnVuY3Rpb24gSkRiKCl7fVxuZnVuY3Rpb24gZkViKCl7fVxuZnVuY3Rpb24geEViKCl7fVxuZnVuY3Rpb24gQ0ViKCl7fVxuZnVuY3Rpb24gR0ViKCl7fVxuZnVuY3Rpb24geUZiKCl7fVxuZnVuY3Rpb24gS0diKCl7fVxuZnVuY3Rpb24gdEliKCl7fVxuZnVuY3Rpb24gdkliKCl7fVxuZnVuY3Rpb24geEliKCl7fVxuZnVuY3Rpb24gekliKCl7fVxuZnVuY3Rpb24gT0liKCl7fVxuZnVuY3Rpb24gU0liKCl7fVxuZnVuY3Rpb24gVEpiKCl7fVxuZnVuY3Rpb24gVkpiKCl7fVxuZnVuY3Rpb24gWEpiKCl7fVxuZnVuY3Rpb24gWEtiKCl7fVxuZnVuY3Rpb24gZktiKCl7fVxuZnVuY3Rpb24gVktiKCl7fVxuZnVuY3Rpb24gVkxiKCl7fVxuZnVuY3Rpb24gakxiKCl7fVxuZnVuY3Rpb24gbkxiKCl7fVxuZnVuY3Rpb24gR0xiKCl7fVxuZnVuY3Rpb24gS0xiKCl7fVxuZnVuY3Rpb24gTUxiKCl7fVxuZnVuY3Rpb24gT0xiKCl7fVxuZnVuY3Rpb24gUkxiKCl7fVxuZnVuY3Rpb24gWUxiKCl7fVxuZnVuY3Rpb24gYk1iKCl7fVxuZnVuY3Rpb24gZ01iKCl7fVxuZnVuY3Rpb24gbE1iKCl7fVxuZnVuY3Rpb24gcE1iKCl7fVxuZnVuY3Rpb24gd01iKCl7fVxuZnVuY3Rpb24gek1iKCl7fVxuZnVuY3Rpb24gQ01iKCl7fVxuZnVuY3Rpb24gRk1iKCl7fVxuZnVuY3Rpb24gTE1iKCl7fVxuZnVuY3Rpb24gek5iKCl7fVxuZnVuY3Rpb24gUE5iKCl7fVxuZnVuY3Rpb24ga09iKCl7fVxuZnVuY3Rpb24gcE9iKCl7fVxuZnVuY3Rpb24gdE9iKCl7fVxuZnVuY3Rpb24geU9iKCl7fVxuZnVuY3Rpb24gRk9iKCl7fVxuZnVuY3Rpb24gR1BiKCl7fVxuZnVuY3Rpb24gYVFiKCl7fVxuZnVuY3Rpb24gY1FiKCl7fVxuZnVuY3Rpb24gZVFiKCl7fVxuZnVuY3Rpb24gZ1FiKCl7fVxuZnVuY3Rpb24gaVFiKCl7fVxuZnVuY3Rpb24gQ1FiKCl7fVxuZnVuY3Rpb24gTVFiKCl7fVxuZnVuY3Rpb24gT1FiKCl7fVxuZnVuY3Rpb24gQVNiKCl7fVxuZnVuY3Rpb24gZlRiKCl7fVxuZnVuY3Rpb24ga1RiKCl7fVxuZnVuY3Rpb24gU1RiKCl7fVxuZnVuY3Rpb24gZlViKCl7fVxuZnVuY3Rpb24gRFViKCl7fVxuZnVuY3Rpb24gVlViKCl7fVxuZnVuY3Rpb24gWVViKCl7fVxuZnVuY3Rpb24gX1ViKCl7fVxuZnVuY3Rpb24gX1diKCl7fVxuZnVuY3Rpb24gUVdiKCl7fVxuZnVuY3Rpb24gWFdiKCl7fVxuZnVuY3Rpb24galZiKCl7fVxuZnVuY3Rpb24gRFZiKCl7fVxuZnVuY3Rpb24gVlZiKCl7fVxuZnVuY3Rpb24gJFZiKCl7fVxuZnVuY3Rpb24gZFhiKCl7fVxuZnVuY3Rpb24gaFhiKCl7fVxuZnVuY3Rpb24gbFhiKCl7fVxuZnVuY3Rpb24gZ1liKCl7fVxuZnVuY3Rpb24gSFliKCl7fVxuZnVuY3Rpb24gU1liKCl7fVxuZnVuY3Rpb24gVlliKCl7fVxuZnVuY3Rpb24gZFpiKCl7fVxuZnVuY3Rpb24gUCRiKCl7fVxuZnVuY3Rpb24gVCRiKCl7fVxuZnVuY3Rpb24gaDFiKCl7fVxuZnVuY3Rpb24gbTFiKCl7fVxuZnVuY3Rpb24gcTFiKCl7fVxuZnVuY3Rpb24gdTFiKCl7fVxuZnVuY3Rpb24geTFiKCl7fVxuZnVuY3Rpb24gQzFiKCl7fVxuZnVuY3Rpb24gZTJiKCl7fVxuZnVuY3Rpb24gZzJiKCl7fVxuZnVuY3Rpb24gbTJiKCl7fVxuZnVuY3Rpb24gcTJiKCl7fVxuZnVuY3Rpb24gdTJiKCl7fVxuZnVuY3Rpb24gUzJiKCl7fVxuZnVuY3Rpb24gVTJiKCl7fVxuZnVuY3Rpb24gVzJiKCl7fVxuZnVuY3Rpb24gXzJiKCl7fVxuZnVuY3Rpb24gZTNiKCl7fVxuZnVuY3Rpb24gaDNiKCl7fVxuZnVuY3Rpb24gcDNiKCl7fVxuZnVuY3Rpb24gdDNiKCl7fVxuZnVuY3Rpb24gdzNiKCl7fVxuZnVuY3Rpb24geTNiKCl7fVxuZnVuY3Rpb24gQTNiKCl7fVxuZnVuY3Rpb24gTTNiKCl7fVxuZnVuY3Rpb24gUTNiKCl7fVxuZnVuY3Rpb24gVTNiKCl7fVxuZnVuY3Rpb24gWTNiKCl7fVxuZnVuY3Rpb24gbDRiKCl7fVxuZnVuY3Rpb24gcTRiKCl7fVxuZnVuY3Rpb24gczRiKCl7fVxuZnVuY3Rpb24gdTRiKCl7fVxuZnVuY3Rpb24gdzRiKCl7fVxuZnVuY3Rpb24geTRiKCl7fVxuZnVuY3Rpb24gTDRiKCl7fVxuZnVuY3Rpb24gTjRiKCl7fVxuZnVuY3Rpb24gUDRiKCl7fVxuZnVuY3Rpb24gUjRiKCl7fVxuZnVuY3Rpb24gVDRiKCl7fVxuZnVuY3Rpb24gWDRiKCl7fVxuZnVuY3Rpb24gSTViKCl7fVxuZnVuY3Rpb24gUTViKCl7fVxuZnVuY3Rpb24gVDViKCl7fVxuZnVuY3Rpb24gWjViKCl7fVxuZnVuY3Rpb24gbDZiKCl7fVxuZnVuY3Rpb24gbzZiKCl7fVxuZnVuY3Rpb24gdDZiKCl7fVxuZnVuY3Rpb24gejZiKCl7fVxuZnVuY3Rpb24gTDZiKCl7fVxuZnVuY3Rpb24gTTZiKCl7fVxuZnVuY3Rpb24gUDZiKCl7fVxuZnVuY3Rpb24gWDZiKCl7fVxuZnVuY3Rpb24gJDZiKCl7fVxuZnVuY3Rpb24gYTdiKCl7fVxuZnVuY3Rpb24gYzdiKCl7fVxuZnVuY3Rpb24gZzdiKCl7fVxuZnVuY3Rpb24gajdiKCl7fVxuZnVuY3Rpb24gbTdiKCl7fVxuZnVuY3Rpb24gcjdiKCl7fVxuZnVuY3Rpb24geDdiKCl7fVxuZnVuY3Rpb24gRDdiKCl7fVxuZnVuY3Rpb24gRDliKCl7fVxuZnVuY3Rpb24gYjliKCl7fVxuZnVuY3Rpb24gaDliKCl7fVxuZnVuY3Rpb24gajliKCl7fVxuZnVuY3Rpb24gbDliKCl7fVxuZnVuY3Rpb24gdzliKCl7fVxuZnVuY3Rpb24gRjliKCl7fVxuZnVuY3Rpb24gaGFjKCl7fVxuZnVuY3Rpb24gamFjKCl7fVxuZnVuY3Rpb24gcGFjKCl7fVxuZnVuY3Rpb24gdWFjKCl7fVxuZnVuY3Rpb24gSWFjKCl7fVxuZnVuY3Rpb24gS2FjKCl7fVxuZnVuY3Rpb24gU2FjKCl7fVxuZnVuY3Rpb24gb2JjKCl7fVxuZnVuY3Rpb24gcmJjKCl7fVxuZnVuY3Rpb24gdmJjKCl7fVxuZnVuY3Rpb24gRmJjKCl7fVxuZnVuY3Rpb24gSmJjKCl7fVxuZnVuY3Rpb24gWGJjKCl7fVxuZnVuY3Rpb24gY2NjKCl7fVxuZnVuY3Rpb24gZmNjKCl7fVxuZnVuY3Rpb24gbGNjKCl7fVxuZnVuY3Rpb24gb2NjKCl7fVxuZnVuY3Rpb24gdGNjKCl7fVxuZnVuY3Rpb24geWNjKCl7fVxuZnVuY3Rpb24gQWNjKCl7fVxuZnVuY3Rpb24gQ2NjKCl7fVxuZnVuY3Rpb24gRWNjKCl7fVxuZnVuY3Rpb24gR2NjKCl7fVxuZnVuY3Rpb24gWmNjKCl7fVxuZnVuY3Rpb24gX2NjKCl7fVxuZnVuY3Rpb24gYmRjKCl7fVxuZnVuY3Rpb24gZmRjKCl7fVxuZnVuY3Rpb24gamRjKCl7fVxuZnVuY3Rpb24gcGRjKCl7fVxuZnVuY3Rpb24gc2RjKCl7fVxuZnVuY3Rpb24geWRjKCl7fVxuZnVuY3Rpb24gQWRjKCl7fVxuZnVuY3Rpb24gQ2RjKCl7fVxuZnVuY3Rpb24gRWRjKCl7fVxuZnVuY3Rpb24gSWRjKCl7fVxuZnVuY3Rpb24gTmRjKCl7fVxuZnVuY3Rpb24gUWRjKCl7fVxuZnVuY3Rpb24gU2RjKCl7fVxuZnVuY3Rpb24gVWRjKCl7fVxuZnVuY3Rpb24gV2RjKCl7fVxuZnVuY3Rpb24gWWRjKCl7fVxuZnVuY3Rpb24gYWVjKCl7fVxuZnVuY3Rpb24gaGVjKCl7fVxuZnVuY3Rpb24gamVjKCl7fVxuZnVuY3Rpb24gbGVjKCl7fVxuZnVuY3Rpb24gbmVjKCl7fVxuZnVuY3Rpb24gdWVjKCl7fVxuZnVuY3Rpb24gd2VjKCl7fVxuZnVuY3Rpb24geWVjKCl7fVxuZnVuY3Rpb24gQWVjKCl7fVxuZnVuY3Rpb24gRmVjKCl7fVxuZnVuY3Rpb24gSmVjKCl7fVxuZnVuY3Rpb24gTGVjKCl7fVxuZnVuY3Rpb24gTmVjKCl7fVxuZnVuY3Rpb24gUmVjKCl7fVxuZnVuY3Rpb24gVWVjKCl7fVxuZnVuY3Rpb24gWmVjKCl7fVxuZnVuY3Rpb24gWmZjKCl7fVxuZnVuY3Rpb24gbGZjKCl7fVxuZnVuY3Rpb24gdGZjKCl7fVxuZnVuY3Rpb24geGZjKCl7fVxuZnVuY3Rpb24gemZjKCl7fVxuZnVuY3Rpb24gRmZjKCl7fVxuZnVuY3Rpb24gSmZjKCl7fVxuZnVuY3Rpb24gTmZjKCl7fVxuZnVuY3Rpb24gUGZjKCl7fVxuZnVuY3Rpb24gVmZjKCl7fVxuZnVuY3Rpb24gX2ZjKCl7fVxuZnVuY3Rpb24gZmdjKCl7fVxuZnVuY3Rpb24gamdjKCl7fVxuZnVuY3Rpb24gbGdjKCl7fVxuZnVuY3Rpb24gQmdjKCl7fVxuZnVuY3Rpb24gZWhjKCl7fVxuZnVuY3Rpb24gZ2hjKCl7fVxuZnVuY3Rpb24gaWhjKCl7fVxuZnVuY3Rpb24ga2hjKCl7fVxuZnVuY3Rpb24gbWhjKCl7fVxuZnVuY3Rpb24gb2hjKCl7fVxuZnVuY3Rpb24gcWhjKCl7fVxuZnVuY3Rpb24geWhjKCl7fVxuZnVuY3Rpb24gQWhjKCl7fVxuZnVuY3Rpb24gR2hjKCl7fVxuZnVuY3Rpb24gSWhjKCl7fVxuZnVuY3Rpb24gS2hjKCl7fVxuZnVuY3Rpb24gTWhjKCl7fVxuZnVuY3Rpb24gU2hjKCl7fVxuZnVuY3Rpb24gVWhjKCl7fVxuZnVuY3Rpb24gV2hjKCl7fVxuZnVuY3Rpb24gZGljKCl7fVxuZnVuY3Rpb24gZGxjKCl7fVxuZnVuY3Rpb24gYmxjKCl7fVxuZnVuY3Rpb24gZmxjKCl7fVxuZnVuY3Rpb24gaGxjKCl7fVxuZnVuY3Rpb24gamxjKCl7fVxuZnVuY3Rpb24gR2xjKCl7fVxuZnVuY3Rpb24gSWxjKCl7fVxuZnVuY3Rpb24gS2xjKCl7fVxuZnVuY3Rpb24gTWxjKCl7fVxuZnVuY3Rpb24gTWpjKCl7fVxuZnVuY3Rpb24gUWpjKCl7fVxuZnVuY3Rpb24gUWxjKCl7fVxuZnVuY3Rpb24gVWxjKCl7fVxuZnVuY3Rpb24gWWxjKCl7fVxuZnVuY3Rpb24gTGtjKCl7fVxuZnVuY3Rpb24gTmtjKCl7fVxuZnVuY3Rpb24gUGtjKCl7fVxuZnVuY3Rpb24gUmtjKCl7fVxuZnVuY3Rpb24gWGtjKCl7fVxuZnVuY3Rpb24gX2tjKCl7fVxuZnVuY3Rpb24gZ21jKCl7fVxuZnVuY3Rpb24ga21jKCl7fVxuZnVuY3Rpb24gem1jKCl7fVxuZnVuY3Rpb24gRm1jKCl7fVxuZnVuY3Rpb24gV21jKCl7fVxuZnVuY3Rpb24gJG1jKCl7fVxuZnVuY3Rpb24gYW5jKCl7fVxuZnVuY3Rpb24gbW5jKCl7fVxuZnVuY3Rpb24gd25jKCl7fVxuZnVuY3Rpb24gSG5jKCl7fVxuZnVuY3Rpb24gSm5jKCl7fVxuZnVuY3Rpb24gTG5jKCl7fVxuZnVuY3Rpb24gTm5jKCl7fVxuZnVuY3Rpb24gUG5jKCl7fVxuZnVuY3Rpb24gWW5jKCl7fVxuZnVuY3Rpb24gZW9jKCl7fVxuZnVuY3Rpb24gQW9jKCl7fVxuZnVuY3Rpb24gQ29jKCl7fVxuZnVuY3Rpb24gRW9jKCl7fVxuZnVuY3Rpb24gSm9jKCl7fVxuZnVuY3Rpb24gTG9jKCl7fVxuZnVuY3Rpb24gWm9jKCl7fVxuZnVuY3Rpb24gX29jKCl7fVxuZnVuY3Rpb24gYnBjKCl7fVxuZnVuY3Rpb24gaHBjKCl7fVxuZnVuY3Rpb24ga3BjKCl7fVxuZnVuY3Rpb24gcHBjKCl7fVxuZnVuY3Rpb24gcEZjKCl7fVxuZnVuY3Rpb24gUnljKCl7fVxuZnVuY3Rpb24gUUNjKCl7fVxuZnVuY3Rpb24gUERjKCl7fVxuZnVuY3Rpb24geEdjKCl7fVxuZnVuY3Rpb24gSEdjKCl7fVxuZnVuY3Rpb24gSkdjKCl7fVxuZnVuY3Rpb24gTkdjKCl7fVxuZnVuY3Rpb24gR0ljKCl7fVxuZnVuY3Rpb24gaUtjKCl7fVxuZnVuY3Rpb24gbUtjKCl7fVxuZnVuY3Rpb24gd0tjKCl7fVxuZnVuY3Rpb24geUtjKCl7fVxuZnVuY3Rpb24gQUtjKCl7fVxuZnVuY3Rpb24gRUtjKCl7fVxuZnVuY3Rpb24gS0tjKCl7fVxuZnVuY3Rpb24gT0tjKCl7fVxuZnVuY3Rpb24gUUtjKCl7fVxuZnVuY3Rpb24gU0tjKCl7fVxuZnVuY3Rpb24gVUtjKCl7fVxuZnVuY3Rpb24gWUtjKCl7fVxuZnVuY3Rpb24gYUxjKCl7fVxuZnVuY3Rpb24gZkxjKCl7fVxuZnVuY3Rpb24gaExjKCl7fVxuZnVuY3Rpb24gbkxjKCl7fVxuZnVuY3Rpb24gcExjKCl7fVxuZnVuY3Rpb24gdExjKCl7fVxuZnVuY3Rpb24gdkxjKCl7fVxuZnVuY3Rpb24gekxjKCl7fVxuZnVuY3Rpb24gQkxjKCl7fVxuZnVuY3Rpb24gRExjKCl7fVxuZnVuY3Rpb24gRkxjKCl7fVxuZnVuY3Rpb24gc01jKCl7fVxuZnVuY3Rpb24gSk1jKCl7fVxuZnVuY3Rpb24gaE5jKCl7fVxuZnVuY3Rpb24gUk5jKCl7fVxuZnVuY3Rpb24gWk5jKCl7fVxuZnVuY3Rpb24gX05jKCl7fVxuZnVuY3Rpb24gYk9jKCl7fVxuZnVuY3Rpb24gZE9jKCl7fVxuZnVuY3Rpb24gZk9jKCl7fVxuZnVuY3Rpb24gaE9jKCl7fVxuZnVuY3Rpb24gaFJjKCl7fVxuZnVuY3Rpb24galJjKCl7fVxuZnVuY3Rpb24gS1JjKCl7fVxuZnVuY3Rpb24gTlJjKCl7fVxuZnVuY3Rpb24gTlFjKCl7fVxuZnVuY3Rpb24gTFFjKCl7fVxuZnVuY3Rpb24gX1FjKCl7fVxuZnVuY3Rpb24gY1BjKCl7fVxuZnVuY3Rpb24gaVBjKCl7fVxuZnVuY3Rpb24ga1BjKCl7fVxuZnVuY3Rpb24gbVBjKCl7fVxuZnVuY3Rpb24geFBjKCl7fVxuZnVuY3Rpb24gelBjKCl7fVxuZnVuY3Rpb24gelNjKCl7fVxuZnVuY3Rpb24gQlNjKCl7fVxuZnVuY3Rpb24gR1NjKCl7fVxuZnVuY3Rpb24gSVNjKCl7fVxuZnVuY3Rpb24gTlNjKCl7fVxuZnVuY3Rpb24gVFNjKCl7fVxuZnVuY3Rpb24gTlRjKCl7fVxuZnVuY3Rpb24gTlZjKCl7fVxuZnVuY3Rpb24gb1ZjKCl7fVxuZnVuY3Rpb24gU1ZjKCl7fVxuZnVuY3Rpb24gVlZjKCl7fVxuZnVuY3Rpb24gWFZjKCl7fVxuZnVuY3Rpb24gWlZjKCl7fVxuZnVuY3Rpb24gYldjKCl7fVxuZnVuY3Rpb24gYlhjKCl7fVxuZnVuY3Rpb24gQ1hjKCl7fVxuZnVuY3Rpb24gRlhjKCl7fVxuZnVuY3Rpb24gSVhjKCl7fVxuZnVuY3Rpb24gTVhjKCl7fVxuZnVuY3Rpb24gVVhjKCl7fVxuZnVuY3Rpb24gYlljKCl7fVxuZnVuY3Rpb24gZlljKCl7fVxuZnVuY3Rpb24gb1ljKCl7fVxuZnVuY3Rpb24gcVljKCl7fVxuZnVuY3Rpb24gdVljKCl7fVxuZnVuY3Rpb24gcFpjKCl7fVxuZnVuY3Rpb24gRyRjKCl7fVxuZnVuY3Rpb24gaDBjKCl7fVxuZnVuY3Rpb24gTjBjKCl7fVxuZnVuY3Rpb24gazFjKCl7fVxuZnVuY3Rpb24gSTFjKCl7fVxuZnVuY3Rpb24gUTFjKCl7fVxuZnVuY3Rpb24gZjJjKCl7fVxuZnVuY3Rpb24gaTJjKCl7fVxuZnVuY3Rpb24gazJjKCl7fVxuZnVuY3Rpb24gdzJjKCl7fVxuZnVuY3Rpb24gTzJjKCl7fVxuZnVuY3Rpb24gUzJjKCl7fVxuZnVuY3Rpb24gWjJjKCl7fVxuZnVuY3Rpb24gdjNjKCl7fVxuZnVuY3Rpb24geDNjKCl7fVxuZnVuY3Rpb24gUjNjKCl7fVxuZnVuY3Rpb24gVTNjKCl7fVxuZnVuY3Rpb24gZTRjKCl7fVxuZnVuY3Rpb24gdzRjKCl7fVxuZnVuY3Rpb24geDRjKCl7fVxuZnVuY3Rpb24gejRjKCl7fVxuZnVuY3Rpb24gQjRjKCl7fVxuZnVuY3Rpb24gRDRjKCl7fVxuZnVuY3Rpb24gRjRjKCl7fVxuZnVuY3Rpb24gSDRjKCl7fVxuZnVuY3Rpb24gSjRjKCl7fVxuZnVuY3Rpb24gTDRjKCl7fVxuZnVuY3Rpb24gTjRjKCl7fVxuZnVuY3Rpb24gUDRjKCl7fVxuZnVuY3Rpb24gUjRjKCl7fVxuZnVuY3Rpb24gVDRjKCl7fVxuZnVuY3Rpb24gVjRjKCl7fVxuZnVuY3Rpb24gWDRjKCl7fVxuZnVuY3Rpb24gWjRjKCl7fVxuZnVuY3Rpb24gXzRjKCl7fVxuZnVuY3Rpb24gXzdjKCl7fVxuZnVuY3Rpb24gYjVjKCl7fVxuZnVuY3Rpb24gZDVjKCl7fVxuZnVuY3Rpb24gZjVjKCl7fVxuZnVuY3Rpb24gaDVjKCl7fVxuZnVuY3Rpb24gSDVjKCl7fVxuZnVuY3Rpb24gSGZkKCl7fVxuZnVuY3Rpb24gWmZkKCl7fVxuZnVuY3Rpb24gWmVkKCl7fVxuZnVuY3Rpb24gZ2VkKCl7fVxuZnVuY3Rpb24gSmVkKCl7fVxuZnVuY3Rpb24gTmVkKCl7fVxuZnVuY3Rpb24gUmVkKCl7fVxuZnVuY3Rpb24gVmVkKCl7fVxuZnVuY3Rpb24gYmJkKCl7fVxuZnVuY3Rpb24gbWRkKCl7fVxuZnVuY3Rpb24gX2ZkKCl7fVxuZnVuY3Rpb24gZmdkKCl7fVxuZnVuY3Rpb24ga2dkKCl7fVxuZnVuY3Rpb24gTWdkKCl7fVxuZnVuY3Rpb24gQWhkKCl7fVxuZnVuY3Rpb24gQWxkKCl7fVxuZnVuY3Rpb24gVGxkKCl7fVxuZnVuY3Rpb24geGtkKCl7fVxuZnVuY3Rpb24gcm1kKCl7fVxuZnVuY3Rpb24ga25kKCl7fVxuZnVuY3Rpb24gSm9kKCl7fVxuZnVuY3Rpb24gSkNkKCl7fVxuZnVuY3Rpb24gQnBkKCl7fVxuZnVuY3Rpb24gQkZkKCl7fVxuZnVuY3Rpb24gb0ZkKCl7fVxuZnVuY3Rpb24gYnFkKCl7fVxuZnVuY3Rpb24gYnZkKCl7fVxuZnVuY3Rpb24ganZkKCl7fVxuZnVuY3Rpb24geXVkKCl7fVxuZnVuY3Rpb24gSHhkKCl7fVxuZnVuY3Rpb24gRUJkKCl7fVxuZnVuY3Rpb24gYURkKCl7fVxuZnVuY3Rpb24gTUdkKCl7fVxuZnVuY3Rpb24gdkhkKCl7fVxuZnVuY3Rpb24gUkhkKCl7fVxuZnVuY3Rpb24gd05kKCl7fVxuZnVuY3Rpb24gek5kKCl7fVxuZnVuY3Rpb24gQ05kKCl7fVxuZnVuY3Rpb24gS05kKCl7fVxuZnVuY3Rpb24gWE5kKCl7fVxuZnVuY3Rpb24gJE5kKCl7fVxuZnVuY3Rpb24gSFBkKCl7fVxuZnVuY3Rpb24gbFVkKCl7fVxuZnVuY3Rpb24gWFVkKCl7fVxuZnVuY3Rpb24gRFdkKCl7fVxuZnVuY3Rpb24gR1dkKCl7fVxuZnVuY3Rpb24gSldkKCl7fVxuZnVuY3Rpb24gTVdkKCl7fVxuZnVuY3Rpb24gUFdkKCl7fVxuZnVuY3Rpb24gU1dkKCl7fVxuZnVuY3Rpb24gVldkKCl7fVxuZnVuY3Rpb24gWVdkKCl7fVxuZnVuY3Rpb24gX1dkKCl7fVxuZnVuY3Rpb24geFlkKCl7fVxuZnVuY3Rpb24gQllkKCl7fVxuZnVuY3Rpb24gbVpkKCl7fVxuZnVuY3Rpb24gRVpkKCl7fVxuZnVuY3Rpb24gR1pkKCl7fVxuZnVuY3Rpb24gSlpkKCl7fVxuZnVuY3Rpb24gTVpkKCl7fVxuZnVuY3Rpb24gUFpkKCl7fVxuZnVuY3Rpb24gU1pkKCl7fVxuZnVuY3Rpb24gVlpkKCl7fVxuZnVuY3Rpb24gWVpkKCl7fVxuZnVuY3Rpb24gX1pkKCl7fVxuZnVuY3Rpb24gYyRkKCl7fVxuZnVuY3Rpb24gZiRkKCl7fVxuZnVuY3Rpb24gaSRkKCl7fVxuZnVuY3Rpb24gbCRkKCl7fVxuZnVuY3Rpb24gbyRkKCl7fVxuZnVuY3Rpb24gciRkKCl7fVxuZnVuY3Rpb24gdSRkKCl7fVxuZnVuY3Rpb24geCRkKCl7fVxuZnVuY3Rpb24gQSRkKCl7fVxuZnVuY3Rpb24gRCRkKCl7fVxuZnVuY3Rpb24gRyRkKCl7fVxuZnVuY3Rpb24gSiRkKCl7fVxuZnVuY3Rpb24gTSRkKCl7fVxuZnVuY3Rpb24gUCRkKCl7fVxuZnVuY3Rpb24gUyRkKCl7fVxuZnVuY3Rpb24gViRkKCl7fVxuZnVuY3Rpb24gWSRkKCl7fVxuZnVuY3Rpb24gXyRkKCl7fVxuZnVuY3Rpb24gY19kKCl7fVxuZnVuY3Rpb24gZl9kKCl7fVxuZnVuY3Rpb24gaV9kKCl7fVxuZnVuY3Rpb24gbF9kKCl7fVxuZnVuY3Rpb24gb19kKCl7fVxuZnVuY3Rpb24gcl9kKCl7fVxuZnVuY3Rpb24gdV9kKCl7fVxuZnVuY3Rpb24geF9kKCl7fVxuZnVuY3Rpb24gQV9kKCl7fVxuZnVuY3Rpb24gRF9kKCl7fVxuZnVuY3Rpb24gR19kKCl7fVxuZnVuY3Rpb24gSl9kKCl7fVxuZnVuY3Rpb24gTV9kKCl7fVxuZnVuY3Rpb24gUF9kKCl7fVxuZnVuY3Rpb24gU19kKCl7fVxuZnVuY3Rpb24gVl9kKCl7fVxuZnVuY3Rpb24gWV9kKCl7fVxuZnVuY3Rpb24gaDVkKCl7fVxuZnVuY3Rpb24gVTZkKCl7fVxuZnVuY3Rpb24gVTlkKCl7fVxuZnVuY3Rpb24gXzhkKCl7fVxuZnVuY3Rpb24gZmFlKCl7fVxuZnVuY3Rpb24gaGFlKCl7fVxuZnVuY3Rpb24ga2FlKCl7fVxuZnVuY3Rpb24gbmFlKCl7fVxuZnVuY3Rpb24gcWFlKCl7fVxuZnVuY3Rpb24gdGFlKCl7fVxuZnVuY3Rpb24gd2FlKCl7fVxuZnVuY3Rpb24gemFlKCl7fVxuZnVuY3Rpb24gQ2FlKCl7fVxuZnVuY3Rpb24gRmFlKCl7fVxuZnVuY3Rpb24gSWFlKCl7fVxuZnVuY3Rpb24gTGFlKCl7fVxuZnVuY3Rpb24gT2FlKCl7fVxuZnVuY3Rpb24gUmFlKCl7fVxuZnVuY3Rpb24gVWFlKCl7fVxuZnVuY3Rpb24gWGFlKCl7fVxuZnVuY3Rpb24gJGFlKCl7fVxuZnVuY3Rpb24gYmJlKCl7fVxuZnVuY3Rpb24gZWJlKCl7fVxuZnVuY3Rpb24gaGJlKCl7fVxuZnVuY3Rpb24ga2JlKCl7fVxuZnVuY3Rpb24gbmJlKCl7fVxuZnVuY3Rpb24gcWJlKCl7fVxuZnVuY3Rpb24gdGJlKCl7fVxuZnVuY3Rpb24gd2JlKCl7fVxuZnVuY3Rpb24gemJlKCl7fVxuZnVuY3Rpb24gQ2JlKCl7fVxuZnVuY3Rpb24gRmJlKCl7fVxuZnVuY3Rpb24gSWJlKCl7fVxuZnVuY3Rpb24gTGJlKCl7fVxuZnVuY3Rpb24gT2JlKCl7fVxuZnVuY3Rpb24gUmJlKCl7fVxuZnVuY3Rpb24gVWJlKCl7fVxuZnVuY3Rpb24gWGJlKCl7fVxuZnVuY3Rpb24gJGJlKCl7fVxuZnVuY3Rpb24gYmNlKCl7fVxuZnVuY3Rpb24gZWNlKCl7fVxuZnVuY3Rpb24gaGNlKCl7fVxuZnVuY3Rpb24ga2NlKCl7fVxuZnVuY3Rpb24gbmNlKCl7fVxuZnVuY3Rpb24gcWNlKCl7fVxuZnVuY3Rpb24gdGNlKCl7fVxuZnVuY3Rpb24gd2NlKCl7fVxuZnVuY3Rpb24gemNlKCl7fVxuZnVuY3Rpb24gQ2NlKCl7fVxuZnVuY3Rpb24gRmNlKCl7fVxuZnVuY3Rpb24gSWNlKCl7fVxuZnVuY3Rpb24gTGNlKCl7fVxuZnVuY3Rpb24gT2NlKCl7fVxuZnVuY3Rpb24gUmNlKCl7fVxuZnVuY3Rpb24gVWNlKCl7fVxuZnVuY3Rpb24gWGNlKCl7fVxuZnVuY3Rpb24gdWRlKCl7fVxuZnVuY3Rpb24gVmdlKCl7fVxuZnVuY3Rpb24gZGhlKCl7fVxuZnVuY3Rpb24gc19iKGEpe31cbmZ1bmN0aW9uIGpTZChhKXt9XG5mdW5jdGlvbiBvbCgpe3diKCl9XG5mdW5jdGlvbiBvUGIoKXtuUGIoKX1cbmZ1bmN0aW9uIEVQYigpe0NQYigpfVxuZnVuY3Rpb24gZ0ZiKCl7ZkZiKCl9XG5mdW5jdGlvbiBUUmIoKXtTUmIoKX1cbmZ1bmN0aW9uIHlTYigpe3dTYigpfVxuZnVuY3Rpb24gUFNiKCl7T1NiKCl9XG5mdW5jdGlvbiBkVGIoKXtiVGIoKX1cbmZ1bmN0aW9uIGk0Yigpe2I0YigpfVxuZnVuY3Rpb24gRDJiKCl7eDJiKCl9XG5mdW5jdGlvbiBKNmIoKXtENmIoKX1cbmZ1bmN0aW9uIHU5Yigpe3E5YigpfVxuZnVuY3Rpb24gJDliKCl7STliKCl9XG5mdW5jdGlvbiBVbWMoKXtJbWMoKX1cbmZ1bmN0aW9uIGFiYygpe1ZhYygpfVxuZnVuY3Rpb24gWkNjKCl7VkNjKCl9XG5mdW5jdGlvbiBrQ2MoKXtoQ2MoKX1cbmZ1bmN0aW9uIHJDYygpe29DYygpfVxuZnVuY3Rpb24gVGNjKCl7T2NjKCl9XG5mdW5jdGlvbiB4a2MoKXtna2MoKX1cbmZ1bmN0aW9uIHhEYygpe3JEYygpfVxuZnVuY3Rpb24gaURjKCl7Y0RjKCl9XG5mdW5jdGlvbiBrd2MoKXtqd2MoKX1cbmZ1bmN0aW9uIHRKYygpe2pKYygpfVxuZnVuY3Rpb24gZEpjKCl7YUpjKCl9XG5mdW5jdGlvbiBQeWMoKXtOeWMoKX1cbmZ1bmN0aW9uIFZCYygpe1NCYygpfVxuZnVuY3Rpb24gQ0ZjKCl7eUZjKCl9XG5mdW5jdGlvbiBDVWMoKXt3VWMoKX1cbmZ1bmN0aW9uIGxVYygpe2ZVYygpfVxuZnVuY3Rpb24gc1VjKCl7cFVjKCl9XG5mdW5jdGlvbiBJVWMoKXtHVWMoKX1cbmZ1bmN0aW9uIElXYygpe0hXYygpfVxuZnVuY3Rpb24gX1djKCl7WldjKCl9XG5mdW5jdGlvbiBmSGMoKXtkSGMoKX1cbmZ1bmN0aW9uIGYwYygpe2QwYygpfVxuZnVuY3Rpb24gQjBjKCl7QTBjKCl9XG5mdW5jdGlvbiBMMGMoKXtKMGMoKX1cbmZ1bmN0aW9uIExUYygpe0pUYygpfVxuZnVuY3Rpb24gc1RjKCl7clRjKCl9XG5mdW5jdGlvbiBLTGMoKXtJTGMoKX1cbmZ1bmN0aW9uIHdOYygpe3ROYygpfVxuZnVuY3Rpb24gUFljKCl7T1ljKCl9XG5mdW5jdGlvbiBuWmMoKXtsWmMoKX1cbmZ1bmN0aW9uIHEzYygpe3AzYygpfVxuZnVuY3Rpb24gWjdjKCl7WDdjKCl9XG5mdW5jdGlvbiBaOWMoKXtZOWMoKX1cbmZ1bmN0aW9uIF9hZCgpe1phZCgpfVxuZnVuY3Rpb24ga2RkKCl7aWRkKCl9XG5mdW5jdGlvbiAkbWQoKXtTbWQoKX1cbmZ1bmN0aW9uIEhHZCgpe3RHZCgpfVxuZnVuY3Rpb24gaExkKCl7TktkKCl9XG5mdW5jdGlvbiBKNmQoKXtVZ2UoKX1cbmZ1bmN0aW9uIE12YihhKXt1Q2IoYSl9XG5mdW5jdGlvbiBZYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGNjKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gY2ooYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBpaihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIERqKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gZGYoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBrZihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGFoKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gbGgoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiB0aChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFBoKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gdmkoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBDaShhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEZrKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gTG4oYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBhcChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHpwKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gWXAoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBxcShhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIERxKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gd3IoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBJcihhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIHNqKGEpe3RoaXMuYz1hfVxuZnVuY3Rpb24gc3coYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBmdyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHh3KGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gQ3coYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBRdyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFJ3KGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gWHcoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBYdihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFN2KGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gZXUoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBaeChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF94KGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24geHkoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiB4QihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEhCKGEpe3RoaXMuYT1hfVxuZnVuY3Rpb24gVEIoYSl7dGhpcy5hPWF9XG5mdW5jdGlvbiBmQyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHdCKCl7dGhpcy5hPVtdfVxuZnVuY3Rpb24gTUJiKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiB3X2IoYSxiKXthLmE9Yn1cbmZ1bmN0aW9uIHhfYihhLGIpe2EuYj1ifVxuZnVuY3Rpb24gWU9iKGEsYil7YS5iPWJ9XG5mdW5jdGlvbiAkT2IoYSxiKXthLmI9Yn1cbmZ1bmN0aW9uIFpHYihhLGIpe2Euaj1ifVxuZnVuY3Rpb24gcU5iKGEsYil7YS5nPWJ9XG5mdW5jdGlvbiByTmIoYSxiKXthLmk9Yn1cbmZ1bmN0aW9uIGRSYihhLGIpe2EuYz1ifVxuZnVuY3Rpb24gZVJiKGEsYil7YS5kPWJ9XG5mdW5jdGlvbiB6X2IoYSxiKXthLmQ9Yn1cbmZ1bmN0aW9uIHlfYihhLGIpe2EuYz1ifVxuZnVuY3Rpb24gX19iKGEsYil7YS5rPWJ9XG5mdW5jdGlvbiBFMGIoYSxiKXthLmM9Yn1cbmZ1bmN0aW9uIG5qYyhhLGIpe2EuYz1ifVxuZnVuY3Rpb24gbWpjKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiBkRmMoYSxiKXthLmE9Yn1cbmZ1bmN0aW9uIGVGYyhhLGIpe2EuZj1ifVxuZnVuY3Rpb24gbk9jKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiBvT2MoYSxiKXthLmI9Yn1cbmZ1bmN0aW9uIHBPYyhhLGIpe2EuZD1ifVxuZnVuY3Rpb24gcU9jKGEsYil7YS5pPWJ9XG5mdW5jdGlvbiByT2MoYSxiKXthLm89Yn1cbmZ1bmN0aW9uIHNPYyhhLGIpe2Eucj1ifVxuZnVuY3Rpb24gJFBjKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiBfUGMoYSxiKXthLmI9Yn1cbmZ1bmN0aW9uIERWYyhhLGIpe2EuZT1ifVxuZnVuY3Rpb24gRVZjKGEsYil7YS5mPWJ9XG5mdW5jdGlvbiBGVmMoYSxiKXthLmc9Yn1cbmZ1bmN0aW9uIFNaYyhhLGIpe2EuZT1ifVxuZnVuY3Rpb24gVFpjKGEsYil7YS5mPWJ9XG5mdW5jdGlvbiBjJGMoYSxiKXthLmY9Yn1cbmZ1bmN0aW9uIGJKZChhLGIpe2Eubj1ifVxuZnVuY3Rpb24gQTFkKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiBKMWQoYSxiKXthLmE9Yn1cbmZ1bmN0aW9uIEIxZChhLGIpe2EuYz1ifVxuZnVuY3Rpb24gSzFkKGEsYil7YS5jPWJ9XG5mdW5jdGlvbiBMMWQoYSxiKXthLmQ9Yn1cbmZ1bmN0aW9uIE0xZChhLGIpe2EuZT1ifVxuZnVuY3Rpb24gTjFkKGEsYil7YS5nPWJ9XG5mdW5jdGlvbiBkMmQoYSxiKXthLmE9Yn1cbmZ1bmN0aW9uIGUyZChhLGIpe2EuYz1ifVxuZnVuY3Rpb24gZjJkKGEsYil7YS5kPWJ9XG5mdW5jdGlvbiBnMmQoYSxiKXthLmU9Yn1cbmZ1bmN0aW9uIGgyZChhLGIpe2EuZj1ifVxuZnVuY3Rpb24gaTJkKGEsYil7YS5qPWJ9XG5mdW5jdGlvbiBaOGQoYSxiKXthLmE9Yn1cbmZ1bmN0aW9uICQ4ZChhLGIpe2EuYj1ifVxuZnVuY3Rpb24gZzlkKGEsYil7YS5hPWJ9XG5mdW5jdGlvbiBDaWMoYSl7YS5iPWEuYX1cbmZ1bmN0aW9uIERnKGEpe2EuYz1hLmQuZH1cbmZ1bmN0aW9uIHZpYihhKXt0aGlzLmQ9YX1cbmZ1bmN0aW9uIGVpYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFBpYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFZpYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICRpYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1jYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1jYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFhjYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE5kYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9kYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHRlYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFFlYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGRqYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdqYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE5qYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEJqYihhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIGxuYihhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIERuYihhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIGFuYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1vYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFJvYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGlvYihhKXt0aGlzLmM9YX1cbmZ1bmN0aW9uIG9sYihhKXt0aGlzLmM9YX1cbmZ1bmN0aW9uIHF1YihhKXt0aGlzLmM9YX1cbmZ1bmN0aW9uIFR1YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFZ1YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFh1YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFp1YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHRwYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9wYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFdxYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG5zYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFJ4YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFR4YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFh4YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGJ6YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHR6YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHZ6YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHh6YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEt6YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE96YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGlBYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGtBYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1BYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEJBYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGhCYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGpCYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG5CYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFRCYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFhCYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFFDYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFdDYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9DYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGRFYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFFHYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFlHYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHRLYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIENMYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEpNYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFJOYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGtRYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1RYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEZRYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVUYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFVUYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGRVYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGhVYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVaYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGokYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHYkYihhKXt0aGlzLmU9YX1cbmZ1bmN0aW9uIEowYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE0wYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFIwYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFUwYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGkyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGsyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG8yYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHMyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEcyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEkyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEsyYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE0yYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFczYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICQzYihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFY0YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHU1YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEE3YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEc3YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEo3YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE03YihhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1iYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFBiYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGxhYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG5hYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHFjYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdkYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICRkYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGNlYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9lYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHBmYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEJmYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIExmYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHlnYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIERnYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHNoYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHVoYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHdoYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIENoYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVoYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE9oYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFloYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFRrYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFZrYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE9sYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHBuYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHJuYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGRwYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGZwYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdDYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEtDYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1EYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGpFYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEhFYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEZFYyhhKXt0aGlzLmM9YX1cbmZ1bmN0aW9uIHFvYyhhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIGJGYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdGYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGlHYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGtHYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1HYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICRHYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGhJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGxJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHBJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHRJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHhJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHpJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIENJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIExJYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIENLYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIElLYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1LYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICRLYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGNMYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGpMYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHJMYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHhMYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE9NYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFpPYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFpSYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGFTYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEkkYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEskYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE0kYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE8kYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFUkYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG4xYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHoxYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEIxYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFEyYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFUyYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHozYyhhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1lZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFhlZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9lZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFFmZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEJnZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uICRnZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGxyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHVyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHZyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHdyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHhyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHlyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHpyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEFyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEJyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIENyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIElyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEtyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIExyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1yZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE5yZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFByZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFNyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFlyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFpyZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIF9yZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGFzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGJzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGNzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGRzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG1zZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIG9zZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHFzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHNzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFdzZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIExzZChhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIHRoZChhKXt0aGlzLmY9YX1cbmZ1bmN0aW9uIHF0ZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHlCZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdCZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE1CZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFNCZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGlDZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFlNZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEdOZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVQZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVRZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE5UZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHFPZChhKXt0aGlzLmI9YX1cbmZ1bmN0aW9uIGxWZChhKXt0aGlzLmM9YX1cbmZ1bmN0aW9uIFZWZChhKXt0aGlzLmU9YX1cbmZ1bmN0aW9uIGlZZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFJZZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIFpZZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHowZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIE8wZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHMwZChhKXt0aGlzLmQ9YX1cbmZ1bmN0aW9uIFc1ZChhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIGNnZShhKXt0aGlzLmE9YX1cbmZ1bmN0aW9uIHhmZShhKXt0aGlzLmU9YX1cbmZ1bmN0aW9uIFRmZCgpe3RoaXMuYT0wfVxuZnVuY3Rpb24gamtiKCl7VmpiKHRoaXMpfVxuZnVuY3Rpb24gUmtiKCl7Q2tiKHRoaXMpfVxuZnVuY3Rpb24gTHFiKCl7VWhiKHRoaXMpfVxuZnVuY3Rpb24gbEViKCl7a0ViKHRoaXMpfVxuZnVuY3Rpb24gQV9iKCl7c19iKHRoaXMpfVxuZnVuY3Rpb24gVVFkKCl7dGhpcy5jPUZRZH1cbmZ1bmN0aW9uIHY2ZChhLGIpe2IuV2IoYSl9XG5mdW5jdGlvbiBtb2MoYSxiKXthLmIrPWJ9XG5mdW5jdGlvbiB5WGIoYSl7YS5iPW5ldyBKaX1cbmZ1bmN0aW9uIHZiYihhKXtyZXR1cm4gYS5lfVxuZnVuY3Rpb24gREIoYSl7cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIExCKGEpe3JldHVybiBhLmF9XG5mdW5jdGlvbiBaQihhKXtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gbEMoYSl7cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIEVDKGEpe3JldHVybiBhLmF9XG5mdW5jdGlvbiB3Qygpe3JldHVybiBudWxsfVxuZnVuY3Rpb24gU0IoKXtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGhjYigpe212ZCgpO292ZCgpfVxuZnVuY3Rpb24gekpiKGEpe2EuYi50ZihhLmUpfVxuZnVuY3Rpb24gajViKGEsYil7YS5iPWItYS5ifVxuZnVuY3Rpb24gZzViKGEsYil7YS5hPWItYS5hfVxuZnVuY3Rpb24gUFhjKGEsYil7Yi5hZChhLmEpfVxuZnVuY3Rpb24gcGxjKGEsYil7RzBiKGIsYSl9XG5mdW5jdGlvbiBocChhLGIsYyl7YS5PZChjLGIpfVxuZnVuY3Rpb24gQXMoYSxiKXthLmU9YjtiLmI9YX1cbmZ1bmN0aW9uIFpsKGEpe1FsKCk7dGhpcy5hPWF9XG5mdW5jdGlvbiBqcShhKXtRbCgpO3RoaXMuYT1hfVxuZnVuY3Rpb24gc3EoYSl7UWwoKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIEZxKGEpe2ltKCk7dGhpcy5hPWF9XG5mdW5jdGlvbiBTeihhKXtSeigpO1F6LmJlKGEpfVxuZnVuY3Rpb24gZ3ooKXtYeS5jYWxsKHRoaXMpfVxuZnVuY3Rpb24geGNiKCl7WHkuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHBjYigpe2d6LmNhbGwodGhpcyl9XG5mdW5jdGlvbiB0Y2IoKXtnei5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gQmRiKCl7Z3ouY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIFZkYigpe2d6LmNhbGwodGhpcyl9XG5mdW5jdGlvbiBZZGIoKXtnei5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gR2ViKCl7Z3ouY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIGJnYigpe2d6LmNhbGwodGhpcyl9XG5mdW5jdGlvbiBBcGIoKXtnei5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gSnBiKCl7Z3ouY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHV0Yigpe2d6LmNhbGwodGhpcyl9XG5mdW5jdGlvbiB4MmMoKXtnei5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gclFkKCl7dGhpcy5hPXRoaXN9XG5mdW5jdGlvbiBNUGQoKXt0aGlzLkJifD0yNTZ9XG5mdW5jdGlvbiB0VGIoKXt0aGlzLmI9bmV3IG10fVxuZnVuY3Rpb24gZkEoKXtmQT1jY2I7bmV3IExxYn1cbmZ1bmN0aW9uIHJjYigpe3BjYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gZENiKGEsYil7YS5sZW5ndGg9Yn1cbmZ1bmN0aW9uIFR2YihhLGIpe0VrYihhLmEsYil9XG5mdW5jdGlvbiBzS2IoYSxiKXtVSGIoYS5jLGIpfVxuZnVuY3Rpb24gU01jKGEsYil7UXFiKGEuYixiKX1cbmZ1bmN0aW9uIHZCZChhLGIpe3VBZChhLmEsYil9XG5mdW5jdGlvbiB3QmQoYSxiKXt2QWQoYS5hLGIpfVxuZnVuY3Rpb24gR0xkKGEsYil7VWhkKGEuZSxiKX1cbmZ1bmN0aW9uIGQ3ZChhKXtEMmQoYS5jLGEuYil9XG5mdW5jdGlvbiBtaihhLGIpe2Eua2MoKS5OYihiKX1cbmZ1bmN0aW9uIE9kYihhKXt0aGlzLmE9VGRiKGEpfVxuZnVuY3Rpb24gVHFiKCl7dGhpcy5hPW5ldyBMcWJ9XG5mdW5jdGlvbiBneWIoKXt0aGlzLmE9bmV3IExxYn1cbmZ1bmN0aW9uIFd2Yigpe3RoaXMuYT1uZXcgUmtifVxuZnVuY3Rpb24gS0ZiKCl7dGhpcy5hPW5ldyBSa2J9XG5mdW5jdGlvbiBQRmIoKXt0aGlzLmE9bmV3IFJrYn1cbmZ1bmN0aW9uIEZGYigpe3RoaXMuYT1uZXcgeUZifVxuZnVuY3Rpb24gcEdiKCl7dGhpcy5hPW5ldyBNRmJ9XG5mdW5jdGlvbiBaUWIoKXt0aGlzLmE9bmV3IE1RYn1cbmZ1bmN0aW9uIEd4Yigpe3RoaXMuYT1uZXcgUHdifVxuZnVuY3Rpb24galViKCl7dGhpcy5hPW5ldyBQVGJ9XG5mdW5jdGlvbiBzRGIoKXt0aGlzLmE9bmV3IG9EYn1cbmZ1bmN0aW9uIHpEYigpe3RoaXMuYT1uZXcgdERifVxuZnVuY3Rpb24gQ1diKCl7dGhpcy5hPW5ldyBSa2J9XG5mdW5jdGlvbiBIWGIoKXt0aGlzLmE9bmV3IFJrYn1cbmZ1bmN0aW9uIG5ZYigpe3RoaXMuYT1uZXcgUmtifVxuZnVuY3Rpb24gQlliKCl7dGhpcy5hPW5ldyBSa2J9XG5mdW5jdGlvbiBmTGIoKXt0aGlzLmQ9bmV3IFJrYn1cbmZ1bmN0aW9uIHZZYigpe3RoaXMuYT1uZXcgVHFifVxuZnVuY3Rpb24gYTJiKCl7dGhpcy5hPW5ldyBMcWJ9XG5mdW5jdGlvbiB3WmIoKXt0aGlzLmI9bmV3IExxYn1cbmZ1bmN0aW9uIFRDYygpe3RoaXMuYj1uZXcgUmtifVxuZnVuY3Rpb24gekpjKCl7dGhpcy5lPW5ldyBSa2J9XG5mdW5jdGlvbiB1TWMoKXt0aGlzLmQ9bmV3IFJrYn1cbmZ1bmN0aW9uIHdkYygpe3RoaXMuYT1uZXcgeGtjfVxuZnVuY3Rpb24gdktjKCl7UmtiLmNhbGwodGhpcyl9XG5mdW5jdGlvbiB0d2IoKXtXdmIuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIG9IYigpeyRHYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gTFhiKCl7SFhiLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBMX2IoKXtIX2IuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIEhfYigpe0FfYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gcDBiKCl7QV9iLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBzMGIoKXtwMGIuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIFdNYygpe1ZNYy5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gYk5jKCl7Vk1jLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBFUGMoKXtDUGMuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIEpQYygpe0NQYy5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gT1BjKCl7Q1BjLmNhbGwodGhpcyl9XG5mdW5jdGlvbiB3MWMoKXtzMWMuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHM3Yygpe1BzYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gYXBkKCl7QWxkLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBwcGQoKXtBbGQuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIGxEZCgpe1lDZC5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gTkRkKCl7WUNkLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBtRmQoKXtMcWIuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHZGZCgpe0xxYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gR0ZkKCl7THFiLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBLUGQoKXtUcWIuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIE9KZCgpe2hKZC5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gYVFkKCl7TVBkLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBTU2QoKXtGSWQuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHJVZCgpe0ZJZC5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gb1VkKCl7THFiLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBOWWQoKXtMcWIuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIGNaZCgpe0xxYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gUjhkKCl7TUdkLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBvOWQoKXtNR2QuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIGk5ZCgpe1I4ZC5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gaGVlKCl7dWRlLmNhbGwodGhpcyl9XG5mdW5jdGlvbiBEZChhKXt5ZC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBIZChhKXt5ZC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBwaChhKXtsaC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBTaChhKXtXYy5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBvaShhKXtTaC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBJaShhKXtXYy5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBaZGQoKXt0aGlzLmE9bmV3IFBzYn1cbmZ1bmN0aW9uIENQYygpe3RoaXMuYT1uZXcgVHFifVxuZnVuY3Rpb24gczFjKCl7dGhpcy5hPW5ldyBMcWJ9XG5mdW5jdGlvbiBRU2MoKXt0aGlzLmE9bmV3IFJrYn1cbmZ1bmN0aW9uIEQyYygpe3RoaXMuaj1uZXcgUmtifVxuZnVuY3Rpb24gUVhjKCl7dGhpcy5hPW5ldyBVWGN9XG5mdW5jdGlvbiBlX2MoKXt0aGlzLmE9bmV3IGRfY31cbmZ1bmN0aW9uIFlDZCgpe3RoaXMuYT1uZXcgYURkfVxuZnVuY3Rpb24gX2soKXtfaz1jY2I7JGs9bmV3IGFsfVxuZnVuY3Rpb24gTGsoKXtMaz1jY2I7S2s9bmV3IE1rfVxuZnVuY3Rpb24gd2IoKXt3Yj1jY2I7dmI9bmV3IHhifVxuZnVuY3Rpb24gaHMoKXtocz1jY2I7Z3M9bmV3IGlzfVxuZnVuY3Rpb24gcnMoYSl7U2guY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gR3AoYSl7U2guY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24geHAoYSl7TG8uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gRXAoYSl7TG8uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gVHAoYSl7V24uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gd3goYSl7dW4uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gb3YoYSl7ZHYuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gTXYoYSl7QnIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gT3YoYSl7QnIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gTHcoYSl7QnIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gaHooYSl7WXkuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gTUIoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gZUMoKXtmQy5jYWxsKHRoaXMse30pfVxuZnVuY3Rpb24gRnRiKGEpe0F0YigpO3RoaXMuYT1hfVxuZnVuY3Rpb24gendiKGEpe2EuYj1udWxsO2EuYz0wfVxuZnVuY3Rpb24gVnkoYSxiKXthLmU9YjtTeShhLGIpfVxuZnVuY3Rpb24gTFZiKGEsYil7YS5hPWI7TlZiKGEpfVxuZnVuY3Rpb24gbEliKGEsYixjKXthLmFbYi5nXT1jfVxuZnVuY3Rpb24gdmZkKGEsYixjKXtEZmQoYyxhLGIpfVxuZnVuY3Rpb24gT2RjKGEsYil7cmpjKGIuaSxhLm4pfVxuZnVuY3Rpb24gV3ljKGEsYil7WHljKGEpLnRkKGIpfVxuZnVuY3Rpb24gRVJiKGEsYil7cmV0dXJuIGEqYS9ifVxuZnVuY3Rpb24gWHIoYSxiKXtyZXR1cm4gYS5nLWIuZ31cbmZ1bmN0aW9uIHRDKGEpe3JldHVybiBuZXcgVEIoYSl9XG5mdW5jdGlvbiB2QyhhKXtyZXR1cm4gbmV3IHlDKGEpfVxuZnVuY3Rpb24gb2NiKGEpe2h6LmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIHFjYihhKXtoei5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiB1Y2IoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gdmNiKGEpe1l5LmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIGZHYyhhKXtMRmMoKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIGMwZChhKXtremQoKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIGJoZChhKXtSZ2QoKTt0aGlzLmY9YX1cbmZ1bmN0aW9uIGRoZChhKXtSZ2QoKTt0aGlzLmY9YX1cbmZ1bmN0aW9uIENkYihhKXtoei5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBXZGIoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gWmRiKGEpe2h6LmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIEZlYihhKXtoei5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBIZWIoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gQ2NiKGEpe3JldHVybiB1Q2IoYSksYX1cbmZ1bmN0aW9uIEVkYihhKXtyZXR1cm4gdUNiKGEpLGF9XG5mdW5jdGlvbiBHZGIoYSl7cmV0dXJuIHVDYihhKSxhfVxuZnVuY3Rpb24gamZiKGEpe3JldHVybiB1Q2IoYSksYX1cbmZ1bmN0aW9uIHRmYihhKXtyZXR1cm4gdUNiKGEpLGF9XG5mdW5jdGlvbiBha2IoYSl7cmV0dXJuIGEuYj09YS5jfVxuZnVuY3Rpb24gSHdiKGEpe3JldHVybiAhIWEmJmEuYn1cbmZ1bmN0aW9uIHBJYihhKXtyZXR1cm4gISFhJiZhLmt9XG5mdW5jdGlvbiBxSWIoYSl7cmV0dXJuICEhYSYmYS5qfVxuZnVuY3Rpb24gYW1iKGEpe3VDYihhKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIHdWYihhKXtxVmIoYSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBCbGIoYSl7R2xiKGEsYS5sZW5ndGgpfVxuZnVuY3Rpb24gY2diKGEpe2h6LmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIGNxZChhKXtoei5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBuOGQoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24geTJjKGEpe2h6LmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIHoyYyhhKXtoei5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBtZGUoYSl7aHouY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gcGMoYSl7cWMuY2FsbCh0aGlzLGEsMCl9XG5mdW5jdGlvbiBKaSgpe0tpLmNhbGwodGhpcywxMiwzKX1cbmZ1bmN0aW9uIEt6KCl7S3o9Y2NiO0p6PW5ldyBOen1cbmZ1bmN0aW9uIGp6KCl7ano9Y2NiO2l6PW5ldyBuYn1cbmZ1bmN0aW9uIEtBKCl7S0E9Y2NiO0pBPW5ldyBNQX1cbmZ1bmN0aW9uIE9CKCl7T0I9Y2NiO05CPW5ldyBQQn1cbmZ1bmN0aW9uIGpjKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gemgoKXt0aHJvdyB2YmIobmV3IGJnYil9XG5mdW5jdGlvbiBQaSgpe3Rocm93IHZiYihuZXcgYmdiKX1cbmZ1bmN0aW9uIFBqKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gUWooKXt0aHJvdyB2YmIobmV3IGJnYil9XG5mdW5jdGlvbiBZbSgpe3Rocm93IHZiYihuZXcgYmdiKX1cbmZ1bmN0aW9uIEdiKCl7dGhpcy5hPUdEKFFiKFNoZSkpfVxuZnVuY3Rpb24gb3koYSl7UWwoKTt0aGlzLmE9UWIoYSl9XG5mdW5jdGlvbiBCcyhhLGIpe2EuVGQoYik7Yi5TZChhKX1cbmZ1bmN0aW9uIGl3KGEsYil7YS5hLmVjKCkuTWMoYil9XG5mdW5jdGlvbiBDWWIoYSxiLGMpe2EuYy5sZihiLGMpfVxuZnVuY3Rpb24gc2NiKGEpe3FjYi5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBPZWIoYSl7V2RiLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIEhmYigpe21jYi5jYWxsKHRoaXMsJycpfVxuZnVuY3Rpb24gSWZiKCl7bWNiLmNhbGwodGhpcywnJyl9XG5mdW5jdGlvbiBVZmIoKXttY2IuY2FsbCh0aGlzLCcnKX1cbmZ1bmN0aW9uIFZmYigpe21jYi5jYWxsKHRoaXMsJycpfVxuZnVuY3Rpb24gWGZiKGEpe3FjYi5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiB6b2IoYSl7bG5iLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIFlvYihhKXtJbmIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gR29iKGEpe3pvYi5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBNaygpe0ZrLmNhbGwodGhpcyxudWxsKX1cbmZ1bmN0aW9uIGFsKCl7RmsuY2FsbCh0aGlzLG51bGwpfVxuZnVuY3Rpb24gQXooKXtBej1jY2I7ISEoUnooKSxReil9XG5mdW5jdGlvbiB3cmIoKXt3cmI9Y2NiO3ZyYj15cmIoKX1cbmZ1bmN0aW9uIE10YihhKXtyZXR1cm4gYS5hP2EuYjowfVxuZnVuY3Rpb24gVnRiKGEpe3JldHVybiBhLmE/YS5iOjB9XG5mdW5jdGlvbiBMY2IoYSxiKXtyZXR1cm4gYS5hLWIuYX1cbmZ1bmN0aW9uIFdjYihhLGIpe3JldHVybiBhLmEtYi5hfVxuZnVuY3Rpb24gUGViKGEsYil7cmV0dXJuIGEuYS1iLmF9XG5mdW5jdGlvbiBlQ2IoYSxiKXtyZXR1cm4gUEMoYSxiKX1cbmZ1bmN0aW9uIEdDKGEsYil7cmV0dXJuIHJkYihhLGIpfVxuZnVuY3Rpb24gX0IoYixhKXtyZXR1cm4gYSBpbiBiLmF9XG5mdW5jdGlvbiBfRGIoYSxiKXthLmY9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIFpEYihhLGIpe2EuYj1iO3JldHVybiBhfVxuZnVuY3Rpb24gJERiKGEsYil7YS5jPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBhRWIoYSxiKXthLmc9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIEhHYihhLGIpe2EuYT1iO3JldHVybiBhfVxuZnVuY3Rpb24gSUdiKGEsYil7YS5mPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBKR2IoYSxiKXthLms9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIGRMYihhLGIpe2EuYT1iO3JldHVybiBhfVxuZnVuY3Rpb24gZUxiKGEsYil7YS5lPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiB6VmIoYSxiKXthLmU9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIEFWYihhLGIpe2EuZj1iO3JldHVybiBhfVxuZnVuY3Rpb24gS09iKGEsYil7YS5iPXRydWU7YS5kPWJ9XG5mdW5jdGlvbiBESGIoYSxiKXthLmI9bmV3IGc3YyhiKX1cbmZ1bmN0aW9uIHV2YihhLGIsYyl7Yi50ZChhLmFbY10pfVxuZnVuY3Rpb24genZiKGEsYixjKXtiLndlKGEuYVtjXSl9XG5mdW5jdGlvbiB3SmMoYSxiKXtyZXR1cm4gYS5iLWIuYn1cbmZ1bmN0aW9uIGtPYyhhLGIpe3JldHVybiBhLmctYi5nfVxuZnVuY3Rpb24gV1FjKGEsYil7cmV0dXJuIGEucy1iLnN9XG5mdW5jdGlvbiBMaWMoYSxiKXtyZXR1cm4gYT8wOmItMX1cbmZ1bmN0aW9uIFNGYyhhLGIpe3JldHVybiBhPzA6Yi0xfVxuZnVuY3Rpb24gUkZjKGEsYil7cmV0dXJuIGE/Yi0xOjB9XG5mdW5jdGlvbiBNMmMoYSxiKXtyZXR1cm4gYi5ZZihhKX1cbmZ1bmN0aW9uIE0zYyhhLGIpe2EuYj1iO3JldHVybiBhfVxuZnVuY3Rpb24gTDNjKGEsYil7YS5hPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBOM2MoYSxiKXthLmM9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIE8zYyhhLGIpe2EuZD1iO3JldHVybiBhfVxuZnVuY3Rpb24gUDNjKGEsYil7YS5lPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBRM2MoYSxiKXthLmY9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIGI0YyhhLGIpe2EuYT1iO3JldHVybiBhfVxuZnVuY3Rpb24gYzRjKGEsYil7YS5iPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBkNGMoYSxiKXthLmM9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIHo1YyhhLGIpe2EuYz1iO3JldHVybiBhfVxuZnVuY3Rpb24geTVjKGEsYil7YS5iPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBBNWMoYSxiKXthLmQ9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIEI1YyhhLGIpe2EuZT1iO3JldHVybiBhfVxuZnVuY3Rpb24gQzVjKGEsYil7YS5mPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBENWMoYSxiKXthLmc9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIEU1YyhhLGIpe2EuYT1iO3JldHVybiBhfVxuZnVuY3Rpb24gRjVjKGEsYil7YS5pPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBHNWMoYSxiKXthLmo9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIFZkZChhLGIpe2Euaz1iO3JldHVybiBhfVxuZnVuY3Rpb24gV2RkKGEsYil7YS5qPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiB5a2MoYSxiKXtna2MoKTtGMGIoYixhKX1cbmZ1bmN0aW9uIFQkYyhhLGIsYyl7UiRjKGEuYSxiLGMpfVxuZnVuY3Rpb24gUkdjKGEpe2NFYy5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBpSGMoYSl7Y0VjLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIHQ3YyhhKXtRc2IuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gYVBiKGEpe19PYi5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBJeGQoYSl7enVkLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIGRDZChhKXtaQmQuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gZkNkKGEpe1pCZC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBwX2IoKXtxX2IuY2FsbCh0aGlzLCcnKX1cbmZ1bmN0aW9uIGQ3Yygpe3RoaXMuYT0wO3RoaXMuYj0wfVxuZnVuY3Rpb24gYVBjKCl7dGhpcy5iPTA7dGhpcy5hPTB9XG5mdW5jdGlvbiBOSmQoYSxiKXthLmI9MDtESWQoYSxiKX1cbmZ1bmN0aW9uIFgxZChhLGIpe2EuYz1iO2EuYj10cnVlfVxuZnVuY3Rpb24gT2MoYSxiKXtyZXR1cm4gYS5jLl9iKGIpfVxuZnVuY3Rpb24gZ2RiKGEpe3JldHVybiBhLmUmJmEuZSgpfVxuZnVuY3Rpb24gVmQoYSl7cmV0dXJuICFhP251bGw6YS5kfVxuZnVuY3Rpb24gc24oYSxiKXtyZXR1cm4gR3YoYS5iLGIpfVxuZnVuY3Rpb24gRnYoYSl7cmV0dXJuICFhP251bGw6YS5nfVxuZnVuY3Rpb24gS3YoYSl7cmV0dXJuICFhP251bGw6YS5pfVxuZnVuY3Rpb24gaGRiKGEpe2ZkYihhKTtyZXR1cm4gYS5vfVxuZnVuY3Rpb24gRmhkKCl7RmhkPWNjYjtFaGQ9b25kKCl9XG5mdW5jdGlvbiBIaGQoKXtIaGQ9Y2NiO0doZD1Db2QoKX1cbmZ1bmN0aW9uIExGZCgpe0xGZD1jY2I7S0ZkPXFaZCgpfVxuZnVuY3Rpb24gcDhkKCl7cDhkPWNjYjtvOGQ9WTlkKCl9XG5mdW5jdGlvbiByOGQoKXtyOGQ9Y2NiO3E4ZD1kYWUoKX1cbmZ1bmN0aW9uIG12ZCgpe212ZD1jY2I7bHZkPW40YygpfVxuZnVuY3Rpb24gU3JiKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gZW5iKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gZm5iKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gZ25iKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gam5iKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gQ25iKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gVXFiKGEpe3RoaXMuYT1uZXcgTXFiKGEpfVxuZnVuY3Rpb24gdGdiKGEpe2xnYigpO25nYih0aGlzLGEpfVxuZnVuY3Rpb24gSHhiKGEpe3RoaXMuYT1uZXcgUXdiKGEpfVxuZnVuY3Rpb24gX3ViKGEsYil7d2hpbGUoYS55ZShiKSk7fVxuZnVuY3Rpb24gU3ViKGEsYil7d2hpbGUoYS5zZChiKSk7fVxuZnVuY3Rpb24gQmZiKGEsYil7YS5hKz1iO3JldHVybiBhfVxuZnVuY3Rpb24gQ2ZiKGEsYil7YS5hKz1iO3JldHVybiBhfVxuZnVuY3Rpb24gRmZiKGEsYil7YS5hKz1iO3JldHVybiBhfVxuZnVuY3Rpb24gTGZiKGEsYil7YS5hKz1iO3JldHVybiBhfVxuZnVuY3Rpb24gV0FiKGEpe1R6YihhKTtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gV3NiKGEpe3JldHVybiBhLmIhPWEuZC5jfVxuZnVuY3Rpb24gcEQoYSl7cmV0dXJuIGEubHxhLm08PDIyfVxuZnVuY3Rpb24gYUljKGEsYil7cmV0dXJuIGEuZFtiLnBdfVxuZnVuY3Rpb24gaDJjKGEsYil7cmV0dXJuIGMyYyhhLGIpfVxuZnVuY3Rpb24gY0NiKGEsYixjKXthLnNwbGljZShiLGMpfVxuZnVuY3Rpb24gV0hiKGEpe2EuYz9WSGIoYSk6WEhiKGEpfVxuZnVuY3Rpb24galZjKGEpe3RoaXMuYT0wO3RoaXMuYj1hfVxuZnVuY3Rpb24gWlVjKCl7dGhpcy5hPW5ldyBMMmMoSyQpfVxuZnVuY3Rpb24gdFJjKCl7dGhpcy5iPW5ldyBMMmMoaCQpfVxuZnVuY3Rpb24gUSRjKCl7dGhpcy5iPW5ldyBMMmMoSl8pfVxuZnVuY3Rpb24gZF9jKCl7dGhpcy5iPW5ldyBMMmMoSl8pfVxuZnVuY3Rpb24gT0NkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gUENkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gUUNkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gUkNkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gU0NkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gVENkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gVUNkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gVkNkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gV0NkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gWENkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfVxuZnVuY3Rpb24gYWhlKCl7dGhyb3cgdmJiKG5ldyB1dGIpfVxuZnVuY3Rpb24gYmhlKCl7dGhyb3cgdmJiKG5ldyB1dGIpfVxuZnVuY3Rpb24gUmdlKGEpe3RoaXMuYT1uZXcgZWdlKGEpfVxuZnVuY3Rpb24gZWdlKGEpe2RnZSh0aGlzLGEsVmVlKCkpfVxuZnVuY3Rpb24gRmhlKGEpe3JldHVybiAhYXx8RWhlKGEpfVxuZnVuY3Rpb24gZGRlKGEpe3JldHVybiAkY2VbYV0hPS0xfVxuZnVuY3Rpb24gSXooKXt4eiE9MCYmKHh6PTApO3p6PS0xfVxuZnVuY3Rpb24gWWJiKCl7V2JiPT1udWxsJiYoV2JiPVtdKX1cbmZ1bmN0aW9uIE9OZChhLGIpe1J4ZChaS2QoYS5hKSxiKX1cbmZ1bmN0aW9uIFROZChhLGIpe1J4ZChaS2QoYS5hKSxiKX1cbmZ1bmN0aW9uIFlmKGEsYil7emYuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiAkZihhLGIpe1lmLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gSGYoYSxiKXt0aGlzLmI9YTt0aGlzLmM9Yn1cbmZ1bmN0aW9uIHJrKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBlayhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gZ2soYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIHBrKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiB5ayhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gQWsoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIEZqKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBfaihhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gZHIoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIHpyKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBTbyhhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gcXAoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uICRxKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiAkcihhLGIpe3RoaXMuZj1hO3RoaXMuZz1ifVxuZnVuY3Rpb24gbmUoYSxiKXt0aGlzLmU9YTt0aGlzLmQ9Yn1cbmZ1bmN0aW9uIFdvKGEsYil7dGhpcy5nPWE7dGhpcy5pPWJ9XG5mdW5jdGlvbiBidShhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gcXUoYSxiKXt0aGlzLmE9YTt0aGlzLmY9Yn1cbmZ1bmN0aW9uIHF2KGEsYil7dGhpcy5iPWE7dGhpcy5jPWJ9XG5mdW5jdGlvbiBveChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gUHgoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIG1DKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBXYyhhKXtMYihhLmRjKCkpO3RoaXMuYz1hfVxuZnVuY3Rpb24gcmYoYSl7dGhpcy5iPUJEKFFiKGEpLDgzKX1cbmZ1bmN0aW9uIFp2KGEpe3RoaXMuYT1CRChRYihhKSw4Myl9XG5mdW5jdGlvbiBkdihhKXt0aGlzLmE9QkQoUWIoYSksMTUpfVxuZnVuY3Rpb24gJHUoYSl7dGhpcy5hPUJEKFFiKGEpLDE1KX1cbmZ1bmN0aW9uIEJyKGEpe3RoaXMuYj1CRChRYihhKSw0Nyl9XG5mdW5jdGlvbiBlQigpe3RoaXMucT1uZXcgJHduZC5EYXRlfVxuZnVuY3Rpb24gWmZiKCl7WmZiPWNjYjtZZmI9bmV3IGpjYn1cbmZ1bmN0aW9uIEVtYigpe0VtYj1jY2I7RG1iPW5ldyBGbWJ9XG5mdW5jdGlvbiBWaGIoYSl7cmV0dXJuIGEuZi5jK2EuZy5jfVxuZnVuY3Rpb24gaG5iKGEsYil7cmV0dXJuIGEuYi5IYyhiKX1cbmZ1bmN0aW9uIGluYihhLGIpe3JldHVybiBhLmIuSWMoYil9XG5mdW5jdGlvbiBrbmIoYSxiKXtyZXR1cm4gYS5iLlFjKGIpfVxuZnVuY3Rpb24gRG9iKGEsYil7cmV0dXJuIGEuYi5IYyhiKX1cbmZ1bmN0aW9uIGRvYihhLGIpe3JldHVybiBhLmMudWMoYil9XG5mdW5jdGlvbiBScWIoYSxiKXtyZXR1cm4gYS5hLl9iKGIpfVxuZnVuY3Rpb24gZm9iKGEsYil7cmV0dXJuIHBiKGEuYyxiKX1cbmZ1bmN0aW9uIGp0KGEsYil7cmV0dXJuIE1oYihhLmIsYil9XG5mdW5jdGlvbiBMcChhLGIpe3JldHVybiBhPmImJmI8SWllfVxuZnVuY3Rpb24gUnliKGEsYil7cmV0dXJuIGEuR2MoYiksYX1cbmZ1bmN0aW9uIFN5YihhLGIpe3JldHVybiB5ZShhLGIpLGF9XG5mdW5jdGlvbiBzQyhhKXtyZXR1cm4gR0IoKSxhP0ZCOkVCfVxuZnVuY3Rpb24gTXFiKGEpe1doYi5jYWxsKHRoaXMsYSwwKX1cbmZ1bmN0aW9uIFB3Yigpe1F3Yi5jYWxsKHRoaXMsbnVsbCl9XG5mdW5jdGlvbiB5QWIoKXtWemIuY2FsbCh0aGlzLG51bGwpfVxuZnVuY3Rpb24gR3FiKGEpe3RoaXMuYz1hO0RxYih0aGlzKX1cbmZ1bmN0aW9uIFBzYigpe0NzYih0aGlzKTtPc2IodGhpcyl9XG5mdW5jdGlvbiBNQWIoYSxiKXtUemIoYSk7YS5hLk5iKGIpfVxuZnVuY3Rpb24gTXliKGEsYil7YS5HYyhiKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHFEYihhLGIpe2EuYS5mPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiB3RGIoYSxiKXthLmEuZD1iO3JldHVybiBhfVxuZnVuY3Rpb24geERiKGEsYil7YS5hLmc9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIHlEYihhLGIpe2EuYS5qPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBCRmIoYSxiKXthLmEuYT1iO3JldHVybiBhfVxuZnVuY3Rpb24gQ0ZiKGEsYil7YS5hLmQ9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIERGYihhLGIpe2EuYS5lPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBFRmIoYSxiKXthLmEuZz1iO3JldHVybiBhfVxuZnVuY3Rpb24gb0diKGEsYil7YS5hLmY9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIFRHYihhKXthLmI9ZmFsc2U7cmV0dXJuIGF9XG5mdW5jdGlvbiBMdGIoKXtMdGI9Y2NiO0t0Yj1uZXcgT3RifVxuZnVuY3Rpb24gVXRiKCl7VXRiPWNjYjtUdGI9bmV3IFd0Yn1cbmZ1bmN0aW9uICR4YigpeyR4Yj1jY2I7WnhiPW5ldyBieWJ9XG5mdW5jdGlvbiAkWWIoKXskWWI9Y2NiO1pZYj1uZXcgZFpifVxuZnVuY3Rpb24gY1BiKCl7Y1BiPWNjYjtiUGI9bmV3IGRQYn1cbmZ1bmN0aW9uIEVBYigpe0VBYj1jY2I7REFiPW5ldyBQQmJ9XG5mdW5jdGlvbiBhJGIoKXthJGI9Y2NiO19aYj1uZXcgUCRifVxuZnVuY3Rpb24gRkRiKCl7RkRiPWNjYjtFRGI9bmV3IEdEYn1cbmZ1bmN0aW9uIHhVYigpe3hVYj1jY2I7d1ViPW5ldyBEVWJ9XG5mdW5jdGlvbiB4MmIoKXt4MmI9Y2NiO3cyYj1uZXcgZDdjfVxuZnVuY3Rpb24gaVZiKCl7aVZiPWNjYjtoVmI9bmV3IGpWYn1cbmZ1bmN0aW9uIG5WYigpe25WYj1jY2I7bVZiPW5ldyBPVmJ9XG5mdW5jdGlvbiBMV2IoKXtMV2I9Y2NiO0tXYj1uZXcgUVdifVxuZnVuY3Rpb24gYjRiKCl7YjRiPWNjYjthNGI9bmV3IGw0Yn1cbmZ1bmN0aW9uIHE5Yigpe3E5Yj1jY2I7cDliPW5ldyB3OWJ9XG5mdW5jdGlvbiBxZ2MoKXtxZ2M9Y2NiO3BnYz1uZXcgZGljfVxuZnVuY3Rpb24gSW1jKCl7SW1jPWNjYjtIbWM9bmV3IFdtY31cbmZ1bmN0aW9uIEdVYygpe0dVYz1jY2I7RlVjPW5ldyBqM2N9XG5mdW5jdGlvbiBpX2MoKXtpX2M9Y2NiO2hfYz1uZXcga19jfVxuZnVuY3Rpb24gc19jKCl7c19jPWNjYjtyX2M9bmV3IHRfY31cbmZ1bmN0aW9uIFIwYygpe1IwYz1jY2I7UTBjPW5ldyBUMGN9XG5mdW5jdGlvbiBWeWMoKXtWeWM9Y2NiO1V5Yz1uZXcgVmVkfVxuZnVuY3Rpb24gRENjKCl7dkNjKCk7dGhpcy5jPW5ldyBKaX1cbmZ1bmN0aW9uIGtfYygpeyRyLmNhbGwodGhpcyxVbmUsMCl9XG5mdW5jdGlvbiByNGMoYSxiKXtYcmIoYS5jLmIsYi5jLGIpfVxuZnVuY3Rpb24gczRjKGEsYil7WHJiKGEuYy5jLGIuYixiKX1cbmZ1bmN0aW9uIEIzYyhhLGIsYyl7U2hiKGEuZCxiLmYsYyl9XG5mdW5jdGlvbiBrS2IoYSxiLGMsZCl7aktiKGEsZCxiLGMpfVxuZnVuY3Rpb24gRTNiKGEsYixjLGQpe0ozYihkLGEsYixjKX1cbmZ1bmN0aW9uIGU5YihhLGIsYyxkKXtmOWIoZCxhLGIsYyl9XG5mdW5jdGlvbiBnM2MoYSxiKXthLmE9Yi5nO3JldHVybiBhfVxuZnVuY3Rpb24gRFFkKGEsYil7cmV0dXJuIHFBKGEuYSxiKX1cbmZ1bmN0aW9uIG5RZChhKXtyZXR1cm4gYS5iP2EuYjphLmF9XG5mdW5jdGlvbiAkT2MoYSl7cmV0dXJuIChhLmMrYS5hKS8yfVxuZnVuY3Rpb24gUGdkKCl7UGdkPWNjYjtPZ2Q9bmV3IEFoZH1cbmZ1bmN0aW9uIEFGZCgpe0FGZD1jY2I7ekZkPW5ldyBCRmR9XG5mdW5jdGlvbiB0RmQoKXt0RmQ9Y2NiO3NGZD1uZXcgdkZkfVxuZnVuY3Rpb24gRUZkKCl7RUZkPWNjYjtERmQ9bmV3IEdGZH1cbmZ1bmN0aW9uIHlGZCgpe3lGZD1jY2I7eEZkPW5ldyBvVWR9XG5mdW5jdGlvbiBKRmQoKXtKRmQ9Y2NiO0lGZD1uZXcgY1pkfVxuZnVuY3Rpb24gblJkKCl7blJkPWNjYjttUmQ9bmV3IHU0ZH1cbmZ1bmN0aW9uIExSZCgpe0xSZD1jY2I7S1JkPW5ldyB5NGR9XG5mdW5jdGlvbiBnNWQoKXtnNWQ9Y2NiO2Y1ZD1uZXcgaDVkfVxuZnVuY3Rpb24gUTZkKCl7UTZkPWNjYjtQNmQ9bmV3IFU2ZH1cbmZ1bmN0aW9uIHBFZCgpe3BFZD1jY2I7b0VkPW5ldyBMcWJ9XG5mdW5jdGlvbiB0WmQoKXt0WmQ9Y2NiO3JaZD1uZXcgUmtifVxuZnVuY3Rpb24gWGdlKCl7WGdlPWNjYjtXZ2U9bmV3IGRoZX1cbmZ1bmN0aW9uIEh6KGEpeyR3bmQuY2xlYXJUaW1lb3V0KGEpfVxuZnVuY3Rpb24gancoYSl7dGhpcy5hPUJEKFFiKGEpLDIyNCl9XG5mdW5jdGlvbiBMdihhKXtyZXR1cm4gQkQoYSw0MikuY2QoKX1cbmZ1bmN0aW9uIHNpYihhKXtyZXR1cm4gYS5iPGEuZC5nYygpfVxuZnVuY3Rpb24gTHBiKGEsYil7cmV0dXJuIHRxYihhLmEsYil9XG5mdW5jdGlvbiBEYmIoYSxiKXtyZXR1cm4geWJiKGEsYik+MH1cbmZ1bmN0aW9uIEdiYihhLGIpe3JldHVybiB5YmIoYSxiKTwwfVxuZnVuY3Rpb24gQ3JiKGEsYil7cmV0dXJuIGEuYS5nZXQoYil9XG5mdW5jdGlvbiBpY2IoYixhKXtyZXR1cm4gYS5zcGxpdChiKX1cbmZ1bmN0aW9uIFZyYihhLGIpe3JldHVybiBNaGIoYS5lLGIpfVxuZnVuY3Rpb24gTnZiKGEpe3JldHVybiB1Q2IoYSksZmFsc2V9XG5mdW5jdGlvbiBSdWIoYSl7S3ViLmNhbGwodGhpcyxhLDIxKX1cbmZ1bmN0aW9uIHdjYihhLGIpe1p5LmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gbXhiKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBHeWIoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHp4KGEpe3l4KCk7V24uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gemxiKGEsYil7RGxiKGEsYS5sZW5ndGgsYil9XG5mdW5jdGlvbiBBbGIoYSxiKXtGbGIoYSxhLmxlbmd0aCxiKX1cbmZ1bmN0aW9uIEFCYihhLGIsYyl7Yi51ZChhLmEuR2UoYykpfVxuZnVuY3Rpb24gdUJiKGEsYixjKXtiLndlKGEuYS5GZShjKSl9XG5mdW5jdGlvbiBHQmIoYSxiLGMpe2IudGQoYS5hLktiKGMpKX1cbmZ1bmN0aW9uIFpxKGEsYixjKXthLk1iKGMpJiZiLnRkKGMpfVxuZnVuY3Rpb24gYUNiKGEsYixjKXthLnNwbGljZShiLDAsYyl9XG5mdW5jdGlvbiBsRGIoYSxiKXtyZXR1cm4gdXFiKGEuZSxiKX1cbmZ1bmN0aW9uIHBqYihhLGIpe3RoaXMuZD1hO3RoaXMuZT1ifVxuZnVuY3Rpb24ga3FiKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBWQmIoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIEJFYihhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gc0JiKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiB5QmIoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIEVCYihhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gS0JiKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBhRGIoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIHRNYihhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gb09iKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBTT2IoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFNNYihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gTkViKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBWRWIoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHNGYihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gaEhiKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBPSGIoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIEZJYihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gd0xiKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBZUmIoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHpUYihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gclViKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBvV2IoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFNYYihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gazBiKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiB6NWIoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFQ4YihhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gaWJjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBDZWMoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIHJmYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gUmZjKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBUZmMoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIGJnYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gbmdjKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBRaGMoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uICRoYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gWjBiKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBaVmIoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIERmYyhhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gZGdjKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBCbWMoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIGNXYihhLGIpe3RoaXMuYz1hO3RoaXMuZD1ifVxuZnVuY3Rpb24gSSRiKGEsYil7dGhpcy5lPWE7dGhpcy5kPWJ9XG5mdW5jdGlvbiBVbmMoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIE9pYyhhLGIpe3RoaXMuYj1iO3RoaXMuYz1hfVxuZnVuY3Rpb24gQmpjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBZamMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIEdrYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gQnBjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBKcGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFRwYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gY3FjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBvcWMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHlxYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gSHFjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBVcWMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIGFyYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gbXJjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiB6cmMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFByYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gWXJjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBmc2MoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIG5zYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gbnpjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiB6emMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIEt6YyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gWHpjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBEdGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIGxBYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gdUFjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBDQWMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIExBYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gVUFjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBhQmMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHVCYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gREJjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBNQmMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHNHYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gVkljKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBFSWMoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIHFLYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gR0tjKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBsTGMoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIG1NYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gZk1jKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBaTGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFpNYyhhLGIpe3RoaXMuYj1hO3RoaXMuZD1ifVxuZnVuY3Rpb24gSU9jKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBHUWMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFBRYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gUlFjKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBBUmMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHJTYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gVFRjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBfVGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFJVYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gdVZjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBoV2MoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHJXYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24ga1hjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiB1WGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIEFZYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gbCRjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBaJGMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIERfYyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gT19jKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBjMWMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIGNWYihhLGIpe3JldHVybiB1cWIoYS5jLGIpfVxuZnVuY3Rpb24gbm5jKGEsYil7cmV0dXJuIHVxYihiLmIsYSl9XG5mdW5jdGlvbiB4MWMoYSxiKXtyZXR1cm4gLWEuYi5KZShiKX1cbmZ1bmN0aW9uIEQzYyhhLGIpe3JldHVybiB1cWIoYS5nLGIpfVxuZnVuY3Rpb24gTzVjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBhNmMoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIG0yYyhhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gVzJjKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBmN2MoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIEc3YyhhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gajhjKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBpYWQoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHJhZChhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gQmFkKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBOYWQoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIGliZChhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gdGJkKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBJYmQoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFViZChhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gZ2NkKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBzY2QoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFljZChhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gdWRkKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBKZGQoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIEVlZChhLGIpeyRyLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gYmZkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBkZmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIGZmZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gS2ZkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBNZmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIE9mZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gdmdkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBxZ2QoYSxiKXskci5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIGpyZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24ga3JkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBtcmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIG5yZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gcXJkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBycmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIHNyZChhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gdHJkKGEsYil7dGhpcy5iPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBEcmQoYSxiKXt0aGlzLmI9YTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIEZyZChhLGIpe3RoaXMuYj1hO3RoaXMuYT1ifVxuZnVuY3Rpb24gSHJkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBKcmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIE9yZChhLGIpe1hxZChhLmEsQkQoYiw1NikpfVxuZnVuY3Rpb24gQkljKGEsYil7Z0ljKGEuYSxCRChiLDExKSl9XG5mdW5jdGlvbiBmSWMoYSxiKXtGSGMoKTtyZXR1cm4gYiE9YX1cbmZ1bmN0aW9uIEFyYigpe3dyYigpO3JldHVybiBuZXcgdnJifVxuZnVuY3Rpb24gQ01jKCl7d01jKCk7dGhpcy5iPW5ldyBUcWJ9XG5mdW5jdGlvbiBOTmMoKXtGTmMoKTt0aGlzLmE9bmV3IFRxYn1cbmZ1bmN0aW9uIGVDYygpe1pCYygpO2FDYy5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gRHNkKGEsYil7JHIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBVcmQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIFdyZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24ga0dkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBuR2QoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIGJVZChhLGIpe3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gelZkKGEsYil7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBDMWQoYSxiKXt0aGlzLmQ9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIE1MZChhLGIpe3RoaXMuZD1hO3RoaXMuZT1ifVxuZnVuY3Rpb24gV3VkKGEsYil7dGhpcy5mPWE7dGhpcy5jPWJ9XG5mdW5jdGlvbiBmN2QoYSxiKXt0aGlzLmI9YTt0aGlzLmM9Yn1cbmZ1bmN0aW9uIF96ZChhLGIpe3RoaXMuaT1hO3RoaXMuZz1ifVxuZnVuY3Rpb24gWTFkKGEsYil7dGhpcy5lPWE7dGhpcy5hPWJ9XG5mdW5jdGlvbiBjOGQoYSxiKXt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uICRJZChhLGIpe2EuaT1udWxsO19JZChhLGIpfVxuZnVuY3Rpb24gaXZkKGEsYil7ISFhJiZSaGIoY3ZkLGEsYil9XG5mdW5jdGlvbiBoQ2QoYSxiKXtyZXR1cm4gcUFkKGEuYSxiKX1cbmZ1bmN0aW9uIGU3ZChhKXtyZXR1cm4gUjJkKGEuYyxhLmIpfVxuZnVuY3Rpb24gV2QoYSl7cmV0dXJuICFhP251bGw6YS5kZCgpfVxuZnVuY3Rpb24gUEQoYSl7cmV0dXJuIGE9PW51bGw/bnVsbDphfVxuZnVuY3Rpb24gS0QoYSl7cmV0dXJuIHR5cGVvZiBhPT09S2hlfVxuZnVuY3Rpb24gTEQoYSl7cmV0dXJuIHR5cGVvZiBhPT09TGhlfVxuZnVuY3Rpb24gTkQoYSl7cmV0dXJuIHR5cGVvZiBhPT09TWhlfVxuZnVuY3Rpb24gRW0oYSxiKXtyZXR1cm4gYS5IZCgpLlhiKGIpfVxuZnVuY3Rpb24gS3EoYSxiKXtyZXR1cm4gaHIoYS5LYygpLGIpfVxuZnVuY3Rpb24gQmJiKGEsYil7cmV0dXJuIHliYihhLGIpPT0wfVxuZnVuY3Rpb24gRWJiKGEsYil7cmV0dXJuIHliYihhLGIpPj0wfVxuZnVuY3Rpb24gS2JiKGEsYil7cmV0dXJuIHliYihhLGIpIT0wfVxuZnVuY3Rpb24gSmRiKGEpe3JldHVybiAnJysodUNiKGEpLGEpfVxuZnVuY3Rpb24gcGZiKGEsYil7cmV0dXJuIGEuc3Vic3RyKGIpfVxuZnVuY3Rpb24gY2coYSl7YWcoYSk7cmV0dXJuIGEuZC5nYygpfVxuZnVuY3Rpb24gb1ZiKGEpe3BWYihhLGEuYyk7cmV0dXJuIGF9XG5mdW5jdGlvbiBSRChhKXtDQ2IoYT09bnVsbCk7cmV0dXJuIGF9XG5mdW5jdGlvbiBEZmIoYSxiKXthLmErPScnK2I7cmV0dXJuIGF9XG5mdW5jdGlvbiBFZmIoYSxiKXthLmErPScnK2I7cmV0dXJuIGF9XG5mdW5jdGlvbiBOZmIoYSxiKXthLmErPScnK2I7cmV0dXJuIGF9XG5mdW5jdGlvbiBQZmIoYSxiKXthLmErPScnK2I7cmV0dXJuIGF9XG5mdW5jdGlvbiBRZmIoYSxiKXthLmErPScnK2I7cmV0dXJuIGF9XG5mdW5jdGlvbiBNZmIoYSxiKXtyZXR1cm4gYS5hKz0nJytiLGF9XG5mdW5jdGlvbiBFc2IoYSxiKXtHc2IoYSxiLGEuYSxhLmEuYSl9XG5mdW5jdGlvbiBGc2IoYSxiKXtHc2IoYSxiLGEuYy5iLGEuYyl9XG5mdW5jdGlvbiBNcWQoYSxiLGMpe1JwZChiLGtxZChhLGMpKX1cbmZ1bmN0aW9uIE5xZChhLGIsYyl7UnBkKGIsa3FkKGEsYykpfVxuZnVuY3Rpb24gRGhlKGEsYil7SGhlKG5ldyBGeWQoYSksYil9XG5mdW5jdGlvbiBjQihhLGIpe2EucS5zZXRUaW1lKFNiYihiKSl9XG5mdW5jdGlvbiBmdmIoYSxiKXtidmIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBqdmIoYSxiKXtidmIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBudmIoYSxiKXtidmIuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBOcWIoYSl7VWhiKHRoaXMpO0xkKHRoaXMsYSl9XG5mdW5jdGlvbiB3bWIoYSl7dENiKGEsMCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBYNmMoYSl7YS5hPTA7YS5iPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBmM2MoYSxiKXthLmE9Yi5nKzE7cmV0dXJuIGF9XG5mdW5jdGlvbiBQSmMoYSxiKXtyZXR1cm4gYS5qW2IucF09PTJ9XG5mdW5jdGlvbiBfUGIoYSl7cmV0dXJuIFZQYihCRChhLDc5KSl9XG5mdW5jdGlvbiB5SmIoKXt5SmI9Y2NiO3hKYj1hcyh3SmIoKSl9XG5mdW5jdGlvbiBZOGIoKXtZOGI9Y2NiO1g4Yj1hcyhXOGIoKSl9XG5mdW5jdGlvbiBtdCgpe3RoaXMuYj1uZXcgTXFiKEN2KDEyKSl9XG5mdW5jdGlvbiBPdGIoKXt0aGlzLmI9MDt0aGlzLmE9ZmFsc2V9XG5mdW5jdGlvbiBXdGIoKXt0aGlzLmI9MDt0aGlzLmE9ZmFsc2V9XG5mdW5jdGlvbiBzbChhKXt0aGlzLmE9YTtvbC5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gdmwoYSl7dGhpcy5hPWE7b2wuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIE5zZChhLGIpe01zZC5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uICR6ZChhLGIpe0N5ZC5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIG5OZChhLGIpe196ZC5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHM0ZChhLGIpe3A0ZC5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHc0ZChhLGIpe3FSZC5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIHJFZChhLGIpe3BFZCgpO1JoYihvRWQsYSxiKX1cbmZ1bmN0aW9uIGxjYihhLGIpe3JldHVybiBxZmIoYS5hLDAsYil9XG5mdW5jdGlvbiB3dyhhLGIpe3JldHVybiBhLmEuYS5hLmNjKGIpfVxuZnVuY3Rpb24gbWIoYSxiKXtyZXR1cm4gUEQoYSk9PT1QRChiKX1cbmZ1bmN0aW9uIE1kYihhLGIpe3JldHVybiBLZGIoYS5hLGIuYSl9XG5mdW5jdGlvbiAkZGIoYSxiKXtyZXR1cm4gYmViKGEuYSxiLmEpfVxuZnVuY3Rpb24gc2ViKGEsYil7cmV0dXJuIHVlYihhLmEsYi5hKX1cbmZ1bmN0aW9uIGhmYihhLGIpe3JldHVybiBhLmluZGV4T2YoYil9XG5mdW5jdGlvbiBOeShhLGIpe3JldHVybiBhPT1iPzA6YT8xOi0xfVxuZnVuY3Rpb24ga0IoYSl7cmV0dXJuIGE8MTA/JzAnK2E6JycrYX1cbmZ1bmN0aW9uIE1xKGEpe3JldHVybiBRYihhKSxuZXcgc2woYSl9XG5mdW5jdGlvbiBTQyhhKXtyZXR1cm4gVEMoYS5sLGEubSxhLmgpfVxuZnVuY3Rpb24gSGRiKGEpe3JldHVybiBRRCgodUNiKGEpLGEpKX1cbmZ1bmN0aW9uIElkYihhKXtyZXR1cm4gUUQoKHVDYihhKSxhKSl9XG5mdW5jdGlvbiBOSWIoYSxiKXtyZXR1cm4gYmViKGEuZyxiLmcpfVxuZnVuY3Rpb24gRmJiKGEpe3JldHVybiB0eXBlb2YgYT09PUxoZX1cbmZ1bmN0aW9uIG1XYihhKXtyZXR1cm4gYT09aFdifHxhPT1rV2J9XG5mdW5jdGlvbiBuV2IoYSl7cmV0dXJuIGE9PWhXYnx8YT09aVdifVxuZnVuY3Rpb24gRzFiKGEpe3JldHVybiBKa2IoYS5iLmIsYSwwKX1cbmZ1bmN0aW9uIGxyYihhKXt0aGlzLmE9QXJiKCk7dGhpcy5iPWF9XG5mdW5jdGlvbiBGcmIoYSl7dGhpcy5hPUFyYigpO3RoaXMuYj1hfVxuZnVuY3Rpb24gc3diKGEsYil7RWtiKGEuYSxiKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIFoxYyhhLGIpe0VrYihhLmMsYik7cmV0dXJuIGF9XG5mdW5jdGlvbiBFMmMoYSxiKXtkM2MoYS5hLGIpO3JldHVybiBhfVxuZnVuY3Rpb24gX2djKGEsYil7SGdjKCk7cmV0dXJuIGIuYSs9YX1cbmZ1bmN0aW9uIGJoYyhhLGIpe0hnYygpO3JldHVybiBiLmErPWF9XG5mdW5jdGlvbiBhaGMoYSxiKXtIZ2MoKTtyZXR1cm4gYi5jKz1hfVxuZnVuY3Rpb24gTmxiKGEsYil7S2xiKGEsMCxhLmxlbmd0aCxiKX1cbmZ1bmN0aW9uIHpzYigpe1dxYi5jYWxsKHRoaXMsbmV3ICRyYil9XG5mdW5jdGlvbiBJX2IoKXtCX2IuY2FsbCh0aGlzLDAsMCwwLDApfVxuZnVuY3Rpb24gSTZjKCl7SjZjLmNhbGwodGhpcywwLDAsMCwwKX1cbmZ1bmN0aW9uIGc3YyhhKXt0aGlzLmE9YS5hO3RoaXMuYj1hLmJ9XG5mdW5jdGlvbiBmYWQoYSl7cmV0dXJuIGE9PWFhZHx8YT09YmFkfVxuZnVuY3Rpb24gZ2FkKGEpe3JldHVybiBhPT1kYWR8fGE9PV85Y31cbmZ1bmN0aW9uIEp6YyhhKXtyZXR1cm4gYT09RnpjfHxhPT1FemN9XG5mdW5jdGlvbiBmY2QoYSl7cmV0dXJuIGEhPWJjZCYmYSE9Y2NkfVxuZnVuY3Rpb24gb2lkKGEpe3JldHVybiBhLkxnKCkmJmEuTWcoKX1cbmZ1bmN0aW9uIEdmZChhKXtyZXR1cm4gS2tkKEJEKGEsMTE4KSl9XG5mdW5jdGlvbiBrM2MoYSl7cmV0dXJuIGQzYyhuZXcgajNjLGEpfVxuZnVuY3Rpb24geTJkKGEsYil7cmV0dXJuIG5ldyBwNGQoYixhKX1cbmZ1bmN0aW9uIHoyZChhLGIpe3JldHVybiBuZXcgcDRkKGIsYSl9XG5mdW5jdGlvbiB1a2QoYSxiLGMpe3ZrZChhLGIpO3drZChhLGMpfVxuZnVuY3Rpb24gX2tkKGEsYixjKXtjbGQoYSxiKTthbGQoYSxjKX1cbmZ1bmN0aW9uIGJsZChhLGIsYyl7ZGxkKGEsYik7ZWxkKGEsYyl9XG5mdW5jdGlvbiBnbWQoYSxiLGMpe2htZChhLGIpO2ltZChhLGMpfVxuZnVuY3Rpb24gbm1kKGEsYixjKXtvbWQoYSxiKTtwbWQoYSxjKX1cbmZ1bmN0aW9uIGlLZChhLGIpeyRKZChhLGIpO19KZChhLGEuRCl9XG5mdW5jdGlvbiBfdWQoYSl7V3VkLmNhbGwodGhpcyxhLHRydWUpfVxuZnVuY3Rpb24gWGcoYSxiLGMpe1ZnLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBZZ2IoYSl7SGdiKCk7WmdiLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIHJ4Yigpe214Yi5jYWxsKHRoaXMsJ0hlYWQnLDEpfVxuZnVuY3Rpb24gd3hiKCl7bXhiLmNhbGwodGhpcywnVGFpbCcsMyl9XG5mdW5jdGlvbiBDa2IoYSl7YS5jPUtDKFNJLFVoZSwxLDAsNSwxKX1cbmZ1bmN0aW9uIFZqYihhKXthLmE9S0MoU0ksVWhlLDEsOCw1LDEpfVxuZnVuY3Rpb24gTUdiKGEpe0hrYihhLnhmKCksbmV3IFFHYihhKSl9XG5mdW5jdGlvbiB4dGIoYSl7cmV0dXJuIGEhPW51bGw/dGIoYSk6MH1cbmZ1bmN0aW9uIGIyYihhLGIpe3JldHVybiBudGQoYixtcGQoYSkpfVxuZnVuY3Rpb24gYzJiKGEsYil7cmV0dXJuIG50ZChiLG1wZChhKSl9XG5mdW5jdGlvbiBkQWIoYSxiKXtyZXR1cm4gYVthLmxlbmd0aF09Yn1cbmZ1bmN0aW9uIGdBYihhLGIpe3JldHVybiBhW2EubGVuZ3RoXT1ifVxuZnVuY3Rpb24gVnEoYSl7cmV0dXJuIGxyKGEuYi5LYygpLGEuYSl9XG5mdW5jdGlvbiBkcWQoYSxiKXtyZXR1cm4gX28ocW8oYS5kKSxiKX1cbmZ1bmN0aW9uIGVxZChhLGIpe3JldHVybiBfbyhxbyhhLmcpLGIpfVxuZnVuY3Rpb24gZnFkKGEsYil7cmV0dXJuIF9vKHFvKGEuaiksYil9XG5mdW5jdGlvbiBPc2QoYSxiKXtNc2QuY2FsbCh0aGlzLGEuYixiKX1cbmZ1bmN0aW9uIHEwYihhKXtCX2IuY2FsbCh0aGlzLGEsYSxhLGEpfVxuZnVuY3Rpb24gSE9iKGEpe2EuYiYmTE9iKGEpO3JldHVybiBhLmF9XG5mdW5jdGlvbiBJT2IoYSl7YS5iJiZMT2IoYSk7cmV0dXJuIGEuY31cbmZ1bmN0aW9uIHV5YihhLGIpe2lmKGx5Yil7cmV0dXJufWEuYj1ifVxuZnVuY3Rpb24gbHpkKGEsYixjKXtOQyhhLGIsYyk7cmV0dXJuIGN9XG5mdW5jdGlvbiBtQmMoYSxiLGMpe05DKGEuY1tiLmddLGIuZyxjKX1cbmZ1bmN0aW9uIF9IZChhLGIsYyl7QkQoYS5jLDY5KS5YaChiLGMpfVxuZnVuY3Rpb24gd2ZkKGEsYixjKXtibGQoYyxjLmkrYSxjLmorYil9XG5mdW5jdGlvbiBVT2QoYSxiKXt3dGQoVktkKGEuYSksWE9kKGIpKX1cbmZ1bmN0aW9uIGJUZChhLGIpe3d0ZChRU2QoYS5hKSxlVGQoYikpfVxuZnVuY3Rpb24gTGdlKGEpe3dmZSgpO3hmZS5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBDQWQoYSl7cmV0dXJuIGE9PW51bGw/MDp0YihhKX1cbmZ1bmN0aW9uIGZOYygpe2ZOYz1jY2I7ZU5jPW5ldyBScGIodjEpfVxuZnVuY3Rpb24gaDBkKCl7aDBkPWNjYjtuZXcgaTBkO25ldyBSa2J9XG5mdW5jdGlvbiBpMGQoKXtuZXcgTHFiO25ldyBMcWI7bmV3IExxYn1cbmZ1bmN0aW9uIEdBKCl7R0E9Y2NiO2ZBKCk7RkE9bmV3IExxYn1cbmZ1bmN0aW9uIEl5KCl7SXk9Y2NiOyR3bmQuTWF0aC5sb2coMil9XG5mdW5jdGlvbiBVVmQoKXtVVmQ9Y2NiO1RWZD0oQUZkKCksekZkKX1cbmZ1bmN0aW9uIF9nZSgpe3Rocm93IHZiYihuZXcgY2diKEN4ZSkpfVxuZnVuY3Rpb24gb2hlKCl7dGhyb3cgdmJiKG5ldyBjZ2IoQ3hlKSl9XG5mdW5jdGlvbiBjaGUoKXt0aHJvdyB2YmIobmV3IGNnYihEeGUpKX1cbmZ1bmN0aW9uIHJoZSgpe3Rocm93IHZiYihuZXcgY2diKER4ZSkpfVxuZnVuY3Rpb24gTWcoYSl7dGhpcy5hPWE7R2cuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gdXAoYSl7dGhpcy5hPWE7cmYuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gQnAoYSl7dGhpcy5hPWE7cmYuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gT2tiKGEsYil7TWxiKGEuYyxhLmMubGVuZ3RoLGIpfVxuZnVuY3Rpb24gbGxiKGEpe3JldHVybiBhLmE8YS5jLmMubGVuZ3RofVxuZnVuY3Rpb24gRXFiKGEpe3JldHVybiBhLmE8YS5jLmEubGVuZ3RofVxuZnVuY3Rpb24gTnRiKGEsYil7cmV0dXJuIGEuYT9hLmI6Yi5EZSgpfVxuZnVuY3Rpb24gYmViKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfVxuZnVuY3Rpb24gRGViKGEsYil7cmV0dXJuIHliYihhLGIpPjA/YTpifVxuZnVuY3Rpb24gVEMoYSxiLGMpe3JldHVybiB7bDphLG06YixoOmN9fVxuZnVuY3Rpb24gQ3RiKGEsYil7YS5hIT1udWxsJiZCSWMoYixhLmEpfVxuZnVuY3Rpb24gQ3NiKGEpe2EuYT1uZXcganRiO2EuYz1uZXcganRifVxuZnVuY3Rpb24gaERiKGEpe3RoaXMuYj1hO3RoaXMuYT1uZXcgUmtifVxuZnVuY3Rpb24gZE9iKGEpe3RoaXMuYj1uZXcgcE9iO3RoaXMuYT1hfVxuZnVuY3Rpb24gcV9iKGEpe25fYi5jYWxsKHRoaXMpO3RoaXMuYT1hfVxuZnVuY3Rpb24gdHhiKCl7bXhiLmNhbGwodGhpcywnUmFuZ2UnLDIpfVxuZnVuY3Rpb24gYlViKCl7WlRiKCk7dGhpcy5hPW5ldyBMMmMoelApfVxuZnVuY3Rpb24gQmgoYSxiKXtRYihiKTtBaChhKS5KYyhuZXcgVncpfVxuZnVuY3Rpb24gZktjKGEsYil7RkpjKCk7cmV0dXJuIGIubi5iKz1hfVxuZnVuY3Rpb24gVGdjKGEsYixjKXtyZXR1cm4gUmhiKGEuZyxjLGIpfVxuZnVuY3Rpb24gTEpjKGEsYixjKXtyZXR1cm4gUmhiKGEuayxjLGIpfVxuZnVuY3Rpb24gcjFjKGEsYil7cmV0dXJuIFJoYihhLmEsYi5hLGIpfVxuZnVuY3Rpb24gakJjKGEsYixjKXtyZXR1cm4gaEJjKGIsYyxhLmMpfVxuZnVuY3Rpb24gRTZjKGEpe3JldHVybiBuZXcgZjdjKGEuYyxhLmQpfVxuZnVuY3Rpb24gRjZjKGEpe3JldHVybiBuZXcgZjdjKGEuYyxhLmQpfVxuZnVuY3Rpb24gUjZjKGEpe3JldHVybiBuZXcgZjdjKGEuYSxhLmIpfVxuZnVuY3Rpb24gQ1FkKGEsYil7cmV0dXJuIGhBKGEuYSxiLG51bGwpfVxuZnVuY3Rpb24gZmVjKGEpe1FaYihhLG51bGwpO1JaYihhLG51bGwpfVxuZnVuY3Rpb24gQU9jKGEpe0JPYyhhLG51bGwpO0NPYyhhLG51bGwpfVxuZnVuY3Rpb24gdTRkKCl7cVJkLmNhbGwodGhpcyxudWxsLG51bGwpfVxuZnVuY3Rpb24geTRkKCl7UlJkLmNhbGwodGhpcyxudWxsLG51bGwpfVxuZnVuY3Rpb24gYTdkKGEpe3RoaXMuYT1hO0xxYi5jYWxsKHRoaXMpfVxuZnVuY3Rpb24gUHAoYSl7dGhpcy5iPShtbWIoKSxuZXcgaW9iKGEpKX1cbmZ1bmN0aW9uIFB5KGEpe2Euaj1LQyhWSSxuaWUsMzEwLDAsMCwxKX1cbmZ1bmN0aW9uIG9BZChhLGIsYyl7YS5jLlZjKGIsQkQoYywxMzMpKX1cbmZ1bmN0aW9uIEdBZChhLGIsYyl7YS5jLmppKGIsQkQoYywxMzMpKX1cbmZ1bmN0aW9uIEpMZChhLGIpe1V4ZChhKTthLkdjKEJEKGIsMTUpKX1cbmZ1bmN0aW9uIGI3ZChhLGIpe3JldHVybiB0MmQoYS5jLGEuYixiKX1cbmZ1bmN0aW9uIEJ2KGEsYil7cmV0dXJuIG5ldyBRdihhLktjKCksYil9XG5mdW5jdGlvbiBMcShhLGIpe3JldHVybiBycihhLktjKCksYikhPS0xfVxuZnVuY3Rpb24gU3FiKGEsYil7cmV0dXJuIGEuYS5CYyhiKSE9bnVsbH1cbmZ1bmN0aW9uIHByKGEpe3JldHVybiBhLk9iKCk/YS5QYigpOm51bGx9XG5mdW5jdGlvbiB5ZmIoYSl7cmV0dXJuIHpmYihhLDAsYS5sZW5ndGgpfVxuZnVuY3Rpb24gSkQoYSxiKXtyZXR1cm4gYSE9bnVsbCYmQUQoYSxiKX1cbmZ1bmN0aW9uICRBKGEsYil7YS5xLnNldEhvdXJzKGIpO1lBKGEsYil9XG5mdW5jdGlvbiBZcmIoYSxiKXtpZihhLmMpe2pzYihiKTtpc2IoYil9fVxuZnVuY3Rpb24gbmsoYSxiLGMpe0JEKGEuS2IoYyksMTY0KS5OYihiKX1cbmZ1bmN0aW9uIFJKYyhhLGIsYyl7U0pjKGEsYixjKTtyZXR1cm4gY31cbmZ1bmN0aW9uIEV1YihhLGIsYyl7YS5hPWJeMTUwMjthLmI9Y15ra2V9XG5mdW5jdGlvbiB4SGIoYSxiLGMpe3JldHVybiBhLmFbYi5nXVtjLmddfVxuZnVuY3Rpb24gUkVjKGEsYil7cmV0dXJuIGEuYVtiLmMucF1bYi5wXX1cbmZ1bmN0aW9uIGFFYyhhLGIpe3JldHVybiBhLmVbYi5jLnBdW2IucF19XG5mdW5jdGlvbiB0RWMoYSxiKXtyZXR1cm4gYS5jW2IuYy5wXVtiLnBdfVxuZnVuY3Rpb24gT0pjKGEsYil7cmV0dXJuIGEualtiLnBdPWFLYyhiKX1cbmZ1bmN0aW9uIGs1YyhhLGIpe3JldHVybiBjZmIoYS5mLGIudGcoKSl9XG5mdW5jdGlvbiBJc2QoYSxiKXtyZXR1cm4gY2ZiKGEuYixiLnRnKCkpfVxuZnVuY3Rpb24gU2ZkKGEsYil7cmV0dXJuIGEuYTxLY2IoYik/LTE6MX1cbmZ1bmN0aW9uIFpEYyhhLGIsYyl7cmV0dXJuIGM/YiE9MDpiIT1hLTF9XG5mdW5jdGlvbiBfNmMoYSxiLGMpe2EuYT1iO2EuYj1jO3JldHVybiBhfVxuZnVuY3Rpb24gWTZjKGEsYil7YS5hKj1iO2EuYio9YjtyZXR1cm4gYX1cbmZ1bmN0aW9uIG11ZChhLGIsYyl7TkMoYS5nLGIsYyk7cmV0dXJuIGN9XG5mdW5jdGlvbiBDSGIoYSxiLGMsZCl7TkMoYS5hW2IuZ10sYy5nLGQpfVxuZnVuY3Rpb24gRVFiKGEsYil7TzZjKGIsYS5hLmEuYSxhLmEuYS5iKX1cbmZ1bmN0aW9uIE96ZChhKXthLmE9QkQoQWpkKGEuYi5hLDQpLDEyNil9XG5mdW5jdGlvbiBXemQoYSl7YS5hPUJEKEFqZChhLmIuYSw0KSwxMjYpfVxuZnVuY3Rpb24gb3RkKGEpe3l0YihhLGh1ZSk7UmxkKGEsZ3RkKGEpKX1cbmZ1bmN0aW9uIEF0Yigpe0F0Yj1jY2I7enRiPW5ldyBGdGIobnVsbCl9XG5mdW5jdGlvbiBJdmIoKXtJdmI9Y2NiO0l2YigpO0h2Yj1uZXcgT3ZifVxuZnVuY3Rpb24gRklkKCl7dGhpcy5CYnw9MjU2O3RoaXMuQmJ8PTUxMn1cbmZ1bmN0aW9uIEZ5ZChhKXt0aGlzLmk9YTt0aGlzLmY9dGhpcy5pLmp9XG5mdW5jdGlvbiB4TWQoYSxiLGMpe3BNZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gQk1kKGEsYixjKXt4TWQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIEs0ZChhLGIsYyl7eE1kLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBONGQoYSxiLGMpe0JNZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gWDRkKGEsYixjKXtwTWQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIF80ZChhLGIsYyl7cE1kLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBDNGQoYSxiLGMpe2syZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gRzRkKGEsYixjKXtrMmQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIEk0ZChhLGIsYyl7QzRkLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBjNWQoYSxiLGMpe1g0ZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gemYoYSxiKXt0aGlzLmE9YTtyZi5jYWxsKHRoaXMsYil9XG5mdW5jdGlvbiBhaihhLGIpe3RoaXMuYT1hO3BjLmNhbGwodGhpcyxiKX1cbmZ1bmN0aW9uIGtqKGEsYil7dGhpcy5hPWE7cGMuY2FsbCh0aGlzLGIpfVxuZnVuY3Rpb24gSmooYSxiKXt0aGlzLmE9YTtwYy5jYWxsKHRoaXMsYil9XG5mdW5jdGlvbiBSaihhKXt0aGlzLmE9YTtzai5jYWxsKHRoaXMsYS5kKX1cbmZ1bmN0aW9uIHNoZShhKXt0aGlzLmM9YTt0aGlzLmE9dGhpcy5jLmF9XG5mdW5jdGlvbiB4bChhLGIpe3RoaXMuYT1iO3BjLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIFFvKGEsYil7dGhpcy5hPWI7TG8uY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gb3AoYSxiKXt0aGlzLmE9YTtMby5jYWxsKHRoaXMsYil9XG5mdW5jdGlvbiByaihhLGIpe3JldHVybiBSbChYbShhLmMpKS5YYihiKX1cbmZ1bmN0aW9uIEViKGEsYil7cmV0dXJuIERiKGEsbmV3IFVmYixiKS5hfVxuZnVuY3Rpb24gdXIoYSxiKXtRYihiKTtyZXR1cm4gbmV3IEdyKGEsYil9XG5mdW5jdGlvbiBHcihhLGIpe3RoaXMuYT1iO0JyLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIEhzKGEpe3RoaXMuYj1hO3RoaXMuYT10aGlzLmIuYS5lfVxuZnVuY3Rpb24gRWcoYSl7YS5iLlFiKCk7LS1hLmQuZi5kO2JnKGEuZCl9XG5mdW5jdGlvbiBVayhhKXtGay5jYWxsKHRoaXMsQkQoUWIoYSksMzUpKX1cbmZ1bmN0aW9uIGlsKGEpe0ZrLmNhbGwodGhpcyxCRChRYihhKSwzNSkpfVxuZnVuY3Rpb24gaXMoKXskci5jYWxsKHRoaXMsJ0lOU1RBTkNFJywwKX1cbmZ1bmN0aW9uIExiKGEpe2lmKCFhKXt0aHJvdyB2YmIobmV3IFZkYil9fVxuZnVuY3Rpb24gVWIoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgWWRiKX19XG5mdW5jdGlvbiBvdChhKXtpZighYSl7dGhyb3cgdmJiKG5ldyB1dGIpfX1cbmZ1bmN0aW9uIEk2ZCgpe0k2ZD1jY2I7ZzVkKCk7SDZkPW5ldyBKNmR9XG5mdW5jdGlvbiBCY2IoKXtCY2I9Y2NiO3pjYj1mYWxzZTtBY2I9dHJ1ZX1cbmZ1bmN0aW9uIEpmYihhKXttY2IuY2FsbCh0aGlzLCh1Q2IoYSksYSkpfVxuZnVuY3Rpb24gV2ZiKGEpe21jYi5jYWxsKHRoaXMsKHVDYihhKSxhKSl9XG5mdW5jdGlvbiBJbmIoYSl7bG5iLmNhbGwodGhpcyxhKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIFhuYihhKXtEbmIuY2FsbCh0aGlzLGEpO3RoaXMuYT1hfVxuZnVuY3Rpb24gWm9iKGEpe3pvYi5jYWxsKHRoaXMsYSk7dGhpcy5hPWF9XG5mdW5jdGlvbiBYeSgpe1B5KHRoaXMpO1J5KHRoaXMpO3RoaXMuX2QoKX1cbmZ1bmN0aW9uIFF2KGEsYil7dGhpcy5hPWI7QnIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gYXUoYSxiKXtyZXR1cm4gbmV3IHh1KGEuYSxhLmIsYil9XG5mdW5jdGlvbiBrZmIoYSxiKXtyZXR1cm4gYS5sYXN0SW5kZXhPZihiKX1cbmZ1bmN0aW9uIGlmYihhLGIsYyl7cmV0dXJuIGEuaW5kZXhPZihiLGMpfVxuZnVuY3Rpb24geGZiKGEpe3JldHVybiBhPT1udWxsP1hoZTpmY2IoYSl9XG5mdW5jdGlvbiBueihhKXtyZXR1cm4gYT09bnVsbD9udWxsOmEubmFtZX1cbmZ1bmN0aW9uIEV0YihhKXtyZXR1cm4gYS5hIT1udWxsP2EuYTpudWxsfVxuZnVuY3Rpb24gb3IoYSl7cmV0dXJuIFdzYihhLmEpP25yKGEpOm51bGx9XG5mdW5jdGlvbiBGeGIoYSxiKXtyZXR1cm4gSndiKGEuYSxiKSE9bnVsbH1cbmZ1bmN0aW9uIHVxYihhLGIpe3JldHVybiAhIWImJmEuYltiLmddPT1ifVxuZnVuY3Rpb24gRkNiKGEpe3JldHVybiBhLiRIfHwoYS4kSD0rK0VDYil9XG5mdW5jdGlvbiBhRChhKXtyZXR1cm4gYS5sK2EubSpIamUrYS5oKklqZX1cbmZ1bmN0aW9uIHBEYihhLGIpe0VrYihiLmEsYS5hKTtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gdkRiKGEsYil7RWtiKGIuYixhLmEpO3JldHVybiBhLmF9XG5mdW5jdGlvbiBuR2IoYSxiKXtFa2IoYi5hLGEuYSk7cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIEJ0YihhKXtzQ2IoYS5hIT1udWxsKTtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gQXNiKGEpe1dxYi5jYWxsKHRoaXMsbmV3IF9yYihhKSl9XG5mdW5jdGlvbiBHVWIoYSxiKXtIVWIuY2FsbCh0aGlzLGEsYixudWxsKX1cbmZ1bmN0aW9uIGN4YihhKXt0aGlzLmE9YTtCamIuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gQ0tiKCl7Q0tiPWNjYjtCS2I9bmV3IE1zZCh0bGUsMCl9XG5mdW5jdGlvbiBORmIoYSxiKXsrK2EuYjtyZXR1cm4gRWtiKGEuYSxiKX1cbmZ1bmN0aW9uIE9GYihhLGIpeysrYS5iO3JldHVybiBMa2IoYS5hLGIpfVxuZnVuY3Rpb24gbjZiKGEsYil7cmV0dXJuIEtkYihhLm4uYSxiLm4uYSl9XG5mdW5jdGlvbiBXS2IoYSxiKXtyZXR1cm4gS2RiKGEuYy5kLGIuYy5kKX1cbmZ1bmN0aW9uIGdMYihhLGIpe3JldHVybiBLZGIoYS5jLmMsYi5jLmMpfVxuZnVuY3Rpb24gelhiKGEsYil7cmV0dXJuIEJEKFFjKGEuYixiKSwxNSl9XG5mdW5jdGlvbiBzN2IoYSxiKXtyZXR1cm4gYS5uLmI9KHVDYihiKSxiKX1cbmZ1bmN0aW9uIHQ3YihhLGIpe3JldHVybiBhLm4uYj0odUNiKGIpLGIpfVxuZnVuY3Rpb24gYTFiKGEpe3JldHVybiBsbGIoYS5hKXx8bGxiKGEuYil9XG5mdW5jdGlvbiBmQmMoYSxiLGMpe3JldHVybiBnQmMoYSxiLGMsYS5iKX1cbmZ1bmN0aW9uIGlCYyhhLGIsYyl7cmV0dXJuIGdCYyhhLGIsYyxhLmMpfVxuZnVuY3Rpb24gaTNjKGEsYixjKXtCRChCMmMoYSxiKSwyMSkuRmMoYyl9XG5mdW5jdGlvbiB4QmQoYSxiLGMpe3ZBZChhLmEsYyk7dUFkKGEuYSxiKX1cbmZ1bmN0aW9uIHFSZChhLGIpe25SZCgpO3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gUlJkKGEsYil7TFJkKCk7dGhpcy5iPWE7dGhpcy5jPWJ9XG5mdW5jdGlvbiBoaGQoYSxiKXtSZ2QoKTt0aGlzLmY9Yjt0aGlzLmQ9YX1cbmZ1bmN0aW9uIHFjKGEsYil7U2IoYixhKTt0aGlzLmQ9YTt0aGlzLmM9Yn1cbmZ1bmN0aW9uIG41YihhKXt2YXIgYjtiPWEuYTthLmE9YS5iO2EuYj1ifVxuZnVuY3Rpb24gY2hjKGEpe0hnYygpO3JldHVybiAhIWEmJiFhLmRjKCl9XG5mdW5jdGlvbiBBZmUoYSl7Kyt2ZmU7cmV0dXJuIG5ldyBsZ2UoMyxhKX1cbmZ1bmN0aW9uIGptKGEsYil7cmV0dXJuIG5ldyBWcChhLGEuZ2MoKSxiKX1cbmZ1bmN0aW9uIG5zKGEpe2hzKCk7cmV0dXJuIGVzKChxcygpLHBzKSxhKX1cbmZ1bmN0aW9uIE95ZChhKXt0aGlzLmQ9YTtGeWQuY2FsbCh0aGlzLGEpfVxuZnVuY3Rpb24gJHlkKGEpe3RoaXMuYz1hO0Z5ZC5jYWxsKHRoaXMsYSl9XG5mdW5jdGlvbiBiemQoYSl7dGhpcy5jPWE7T3lkLmNhbGwodGhpcyxhKX1cbmZ1bmN0aW9uIHNnYygpe3FnYygpO3RoaXMuYj1uZXcgeWdjKHRoaXMpfVxuZnVuY3Rpb24gUHUoYSl7WGooYSxKaWUpO3JldHVybiBuZXcgU2tiKGEpfVxuZnVuY3Rpb24gVnooYSl7UnooKTtyZXR1cm4gcGFyc2VJbnQoYSl8fC0xfVxuZnVuY3Rpb24gcWZiKGEsYixjKXtyZXR1cm4gYS5zdWJzdHIoYixjLWIpfVxuZnVuY3Rpb24gZ2ZiKGEsYixjKXtyZXR1cm4gaWZiKGEsd2ZiKGIpLGMpfVxuZnVuY3Rpb24gUGtiKGEpe3JldHVybiBaQmIoYS5jLGEuYy5sZW5ndGgpfVxuZnVuY3Rpb24gWXIoYSl7cmV0dXJuIGEuZiE9bnVsbD9hLmY6JycrYS5nfVxuZnVuY3Rpb24gWnIoYSl7cmV0dXJuIGEuZiE9bnVsbD9hLmY6JycrYS5nfVxuZnVuY3Rpb24gSHNiKGEpe3NDYihhLmIhPTApO3JldHVybiBhLmEuYS5jfVxuZnVuY3Rpb24gSXNiKGEpe3NDYihhLmIhPTApO3JldHVybiBhLmMuYi5jfVxuZnVuY3Rpb24gQ21kKGEpe0pEKGEsMTUwKSYmQkQoYSwxNTApLkdoKCl9XG5mdW5jdGlvbiBXd2IoYSl7cmV0dXJuIGEuYj1CRCh0aWIoYS5hKSw0Mil9XG5mdW5jdGlvbiBQdGIoYSl7THRiKCk7dGhpcy5iPWE7dGhpcy5hPXRydWV9XG5mdW5jdGlvbiBYdGIoYSl7VXRiKCk7dGhpcy5iPWE7dGhpcy5hPXRydWV9XG5mdW5jdGlvbiBUcmIoYSl7YS5kPW5ldyBrc2IoYSk7YS5lPW5ldyBMcWJ9XG5mdW5jdGlvbiBta2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgQXBiKX19XG5mdW5jdGlvbiBsQ2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgVmRiKX19XG5mdW5jdGlvbiB5Q2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgWWRiKX19XG5mdW5jdGlvbiBxQ2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgdGNiKX19XG5mdW5jdGlvbiBzQ2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgdXRiKX19XG5mdW5jdGlvbiBrc2IoYSl7bHNiLmNhbGwodGhpcyxhLG51bGwsbnVsbCl9XG5mdW5jdGlvbiBkUGIoKXskci5jYWxsKHRoaXMsJ1BPTFlPTUlOTycsMCl9XG5mdW5jdGlvbiBDZyhhLGIsYyxkKXtxZy5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiB6a2MoYSxiKXtna2MoKTtyZXR1cm4gUmMoYSxiLmUsYil9XG5mdW5jdGlvbiBhemMoYSxiLGMpe1Z5YygpO3JldHVybiBjLnFnKGEsYil9XG5mdW5jdGlvbiB3TmIoYSxiKXtyZXR1cm4gISFhLnEmJk1oYihhLnEsYil9XG5mdW5jdGlvbiBKUmIoYSxiKXtyZXR1cm4gYT4wP2IqYi9hOmIqYioxMDB9XG5mdW5jdGlvbiBDUmIoYSxiKXtyZXR1cm4gYT4wP2IvKGEqYSk6YioxMDB9XG5mdW5jdGlvbiBHMmMoYSxiLGMpe3JldHVybiBFa2IoYixJMmMoYSxjKSl9XG5mdW5jdGlvbiB0M2MoYSxiLGMpe3AzYygpO2EuWGUoYikmJmMudGQoYSl9XG5mdW5jdGlvbiBTdChhLGIsYyl7dmFyIGQ7ZD1hLlpjKGIpO2QuUmIoYyl9XG5mdW5jdGlvbiBPNmMoYSxiLGMpe2EuYSs9YjthLmIrPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiBaNmMoYSxiLGMpe2EuYSo9YjthLmIqPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiBiN2MoYSxiLGMpe2EuYS09YjthLmItPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiBhN2MoYSxiKXthLmE9Yi5hO2EuYj1iLmI7cmV0dXJuIGF9XG5mdW5jdGlvbiBWNmMoYSl7YS5hPS1hLmE7YS5iPS1hLmI7cmV0dXJuIGF9XG5mdW5jdGlvbiBEaWMoYSl7dGhpcy5jPWE7dGhpcy5hPTE7dGhpcy5iPTF9XG5mdW5jdGlvbiB4ZWQoYSl7dGhpcy5jPWE7ZGxkKGEsMCk7ZWxkKGEsMCl9XG5mdW5jdGlvbiB1N2MoYSl7UHNiLmNhbGwodGhpcyk7bjdjKHRoaXMsYSl9XG5mdW5jdGlvbiBBWGIoYSl7eFhiKCk7eVhiKHRoaXMpO3RoaXMubWYoYSl9XG5mdW5jdGlvbiBHUmQoYSxiKXtuUmQoKTtxUmQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBkU2QoYSxiKXtMUmQoKTtSUmQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBoU2QoYSxiKXtMUmQoKTtSUmQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBmU2QoYSxiKXtMUmQoKTtkU2QuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBzSWQoYSxiLGMpe2RJZC5jYWxsKHRoaXMsYSxiLGMsMil9XG5mdW5jdGlvbiB6WGQoYSxiKXtVVmQoKTtuWGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBCWGQoYSxiKXtVVmQoKTt6WGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBEWGQoYSxiKXtVVmQoKTt6WGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBGWGQoYSxiKXtVVmQoKTtEWGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBQWGQoYSxiKXtVVmQoKTtuWGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBSWGQoYSxiKXtVVmQoKTtQWGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBYWGQoYSxiKXtVVmQoKTtuWGQuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBwQWQoYSxiKXtyZXR1cm4gYS5jLkZjKEJEKGIsMTMzKSl9XG5mdW5jdGlvbiB3MWQoYSxiLGMpe3JldHVybiBWMWQocDFkKGEsYiksYyl9XG5mdW5jdGlvbiBOMmQoYSxiLGMpe3JldHVybiBiLlFrKGEuZSxhLmMsYyl9XG5mdW5jdGlvbiBQMmQoYSxiLGMpe3JldHVybiBiLlJrKGEuZSxhLmMsYyl9XG5mdW5jdGlvbiBhM2QoYSxiKXtyZXR1cm4geGlkKGEuZSxCRChiLDQ5KSl9XG5mdW5jdGlvbiBhVGQoYSxiLGMpe3Z0ZChRU2QoYS5hKSxiLGVUZChjKSl9XG5mdW5jdGlvbiBUT2QoYSxiLGMpe3Z0ZChWS2QoYS5hKSxiLFhPZChjKSl9XG5mdW5jdGlvbiB5cGIoYSxiKXtiLiRtb2RDb3VudD1hLiRtb2RDb3VudH1cbmZ1bmN0aW9uIE1VYygpe01VYz1jY2I7TFVjPW5ldyBMc2QoJ3Jvb3QnKX1cbmZ1bmN0aW9uIExDZCgpe0xDZD1jY2I7S0NkPW5ldyBsRGQ7bmV3IE5EZH1cbmZ1bmN0aW9uIEtWYygpe3RoaXMuYT1uZXcgSHA7dGhpcy5iPW5ldyBIcH1cbmZ1bmN0aW9uIEZVZCgpe2hKZC5jYWxsKHRoaXMpO3RoaXMuQmJ8PVRqZX1cbmZ1bmN0aW9uIHRfYygpeyRyLmNhbGwodGhpcywnR1JPV19UUkVFJywwKX1cbmZ1bmN0aW9uIEM5ZChhKXtyZXR1cm4gYT09bnVsbD9udWxsOmNkZShhKX1cbmZ1bmN0aW9uIEc5ZChhKXtyZXR1cm4gYT09bnVsbD9udWxsOmpkZShhKX1cbmZ1bmN0aW9uIEo5ZChhKXtyZXR1cm4gYT09bnVsbD9udWxsOmZjYihhKX1cbmZ1bmN0aW9uIEs5ZChhKXtyZXR1cm4gYT09bnVsbD9udWxsOmZjYihhKX1cbmZ1bmN0aW9uIGZkYihhKXtpZihhLm8hPW51bGwpe3JldHVybn12ZGIoYSl9XG5mdW5jdGlvbiBERChhKXtDQ2IoYT09bnVsbHx8S0QoYSkpO3JldHVybiBhfVxuZnVuY3Rpb24gRUQoYSl7Q0NiKGE9PW51bGx8fExEKGEpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIEdEKGEpe0NDYihhPT1udWxsfHxORChhKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBnQihhKXt0aGlzLnE9bmV3ICR3bmQuRGF0ZShTYmIoYSkpfVxuZnVuY3Rpb24gTWYoYSxiKXt0aGlzLmM9YTtuZS5jYWxsKHRoaXMsYSxiKX1cbmZ1bmN0aW9uIFNmKGEsYil7dGhpcy5hPWE7TWYuY2FsbCh0aGlzLGEsYil9XG5mdW5jdGlvbiBIZyhhLGIpe3RoaXMuZD1hO0RnKHRoaXMpO3RoaXMuYj1ifVxuZnVuY3Rpb24gYkFiKGEsYil7VnpiLmNhbGwodGhpcyxhKTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIHZBYihhLGIpe1Z6Yi5jYWxsKHRoaXMsYSk7dGhpcy5hPWJ9XG5mdW5jdGlvbiBzTmIoYSl7cE5iLmNhbGwodGhpcywwLDApO3RoaXMuZj1hfVxuZnVuY3Rpb24gVmcoYSxiLGMpe2RnLmNhbGwodGhpcyxhLGIsYyxudWxsKX1cbmZ1bmN0aW9uIFlnKGEsYixjKXtkZy5jYWxsKHRoaXMsYSxiLGMsbnVsbCl9XG5mdW5jdGlvbiBQeGIoYSxiLGMpe3JldHVybiBhLnVlKGIsYyk8PTA/YzpifVxuZnVuY3Rpb24gUXhiKGEsYixjKXtyZXR1cm4gYS51ZShiLGMpPD0wP2I6Y31cbmZ1bmN0aW9uIGc0YyhhLGIpe3JldHVybiBCRChXcmIoYS5iLGIpLDE0OSl9XG5mdW5jdGlvbiBpNGMoYSxiKXtyZXR1cm4gQkQoV3JiKGEuYyxiKSwyMjkpfVxuZnVuY3Rpb24gd2ljKGEpe3JldHVybiBCRChJa2IoYS5hLGEuYiksMjg3KX1cbmZ1bmN0aW9uIEI2YyhhKXtyZXR1cm4gbmV3IGY3YyhhLmMsYS5kK2EuYSl9XG5mdW5jdGlvbiBlTGMoYSl7cmV0dXJuIEZKYygpLEp6YyhCRChhLDE5NykpfVxuZnVuY3Rpb24gJEpiKCl7JEpiPWNjYjtaSmI9cHFiKCh0ZGQoKSxzZGQpKX1cbmZ1bmN0aW9uIGZPYihhLGIpe2IuYT9nT2IoYSxiKTpGeGIoYS5hLGIuYil9XG5mdW5jdGlvbiBxeWIoYSxiKXtpZihseWIpe3JldHVybn1Fa2IoYS5hLGIpfVxuZnVuY3Rpb24gRjJiKGEsYil7eDJiKCk7cmV0dXJuIGZfYihiLmQuaSxhKX1cbmZ1bmN0aW9uIF85YihhLGIpe0k5YigpO3JldHVybiBuZXcgZ2FjKGIsYSl9XG5mdW5jdGlvbiBfSGIoYSxiKXt5dGIoYixsbGUpO2EuZj1iO3JldHVybiBhfVxuZnVuY3Rpb24gS2xkKGEsYixjKXtjPV9oZChhLGIsMyxjKTtyZXR1cm4gY31cbmZ1bmN0aW9uIGJtZChhLGIsYyl7Yz1faGQoYSxiLDYsYyk7cmV0dXJuIGN9XG5mdW5jdGlvbiBrcGQoYSxiLGMpe2M9X2hkKGEsYiw5LGMpO3JldHVybiBjfVxuZnVuY3Rpb24gQ3ZkKGEsYixjKXsrK2EuajthLktpKCk7QXRkKGEsYixjKX1cbmZ1bmN0aW9uIEF2ZChhLGIsYyl7KythLmo7YS5IaShiLGEub2koYixjKSl9XG5mdW5jdGlvbiBiUmQoYSxiLGMpe3ZhciBkO2Q9YS5aYyhiKTtkLlJiKGMpfVxuZnVuY3Rpb24gYzdkKGEsYixjKXtyZXR1cm4gQzJkKGEuYyxhLmIsYixjKX1cbmZ1bmN0aW9uIERBZChhLGIpe3JldHVybiAoYiZPaGUpJWEuZC5sZW5ndGh9XG5mdW5jdGlvbiBNc2QoYSxiKXtMc2QuY2FsbCh0aGlzLGEpO3RoaXMuYT1ifVxuZnVuY3Rpb24gdVZkKGEsYil7bFZkLmNhbGwodGhpcyxhKTt0aGlzLmE9Yn1cbmZ1bmN0aW9uIHNZZChhLGIpe2xWZC5jYWxsKHRoaXMsYSk7dGhpcy5hPWJ9XG5mdW5jdGlvbiB6eWQoYSxiKXt0aGlzLmM9YTt6dWQuY2FsbCh0aGlzLGIpfVxuZnVuY3Rpb24gWU9kKGEsYil7dGhpcy5hPWE7cU9kLmNhbGwodGhpcyxiKX1cbmZ1bmN0aW9uIGZUZChhLGIpe3RoaXMuYT1hO3FPZC5jYWxsKHRoaXMsYil9XG5mdW5jdGlvbiBYcChhKXt0aGlzLmE9KFhqKGEsSmllKSxuZXcgU2tiKGEpKX1cbmZ1bmN0aW9uIGNxKGEpe3RoaXMuYT0oWGooYSxKaWUpLG5ldyBTa2IoYSkpfVxuZnVuY3Rpb24gTEEoYSl7IWEuYSYmKGEuYT1uZXcgVkEpO3JldHVybiBhLmF9XG5mdW5jdGlvbiBYTWIoYSl7aWYoYT44KXtyZXR1cm4gMH1yZXR1cm4gYSsxfVxuZnVuY3Rpb24gRWNiKGEsYil7QmNiKCk7cmV0dXJuIGE9PWI/MDphPzE6LTF9XG5mdW5jdGlvbiBPcGIoYSxiLGMpe3JldHVybiBOcGIoYSxCRChiLDIyKSxjKX1cbmZ1bmN0aW9uIEJ6KGEsYixjKXtyZXR1cm4gYS5hcHBseShiLGMpO3ZhciBkfVxuZnVuY3Rpb24gU2ZiKGEsYixjKXthLmErPXpmYihiLDAsYyk7cmV0dXJuIGF9XG5mdW5jdGlvbiBpamIoYSxiKXt2YXIgYztjPWEuZTthLmU9YjtyZXR1cm4gY31cbmZ1bmN0aW9uIHRyYihhLGIpe3ZhciBjO2M9YVtoa2VdO2MuY2FsbChhLGIpfVxuZnVuY3Rpb24gdXJiKGEsYil7dmFyIGM7Yz1hW2hrZV07Yy5jYWxsKGEsYil9XG5mdW5jdGlvbiBBaWIoYSxiKXthLmEuVmMoYS5iLGIpOysrYS5iO2EuYz0tMX1cbmZ1bmN0aW9uIFVyYihhKXtVaGIoYS5lKTthLmQuYj1hLmQ7YS5kLmE9YS5kfVxuZnVuY3Rpb24gX2YoYSl7YS5iP19mKGEuYik6YS5mLmMuemMoYS5lLGEuZCl9XG5mdW5jdGlvbiBfQWIoYSxiLGMpe0VBYigpO01CYihhLGIuQ2UoYS5hLGMpKX1cbmZ1bmN0aW9uIEJ4YihhLGIpe3JldHVybiBWZChDd2IoYS5hLGIsdHJ1ZSkpfVxuZnVuY3Rpb24gQ3hiKGEsYil7cmV0dXJuIFZkKER3YihhLmEsYix0cnVlKSl9XG5mdW5jdGlvbiBfQmIoYSxiKXtyZXR1cm4gZUNiKG5ldyBBcnJheShiKSxhKX1cbmZ1bmN0aW9uIEhEKGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGEpfVxuZnVuY3Rpb24gbXooYSl7cmV0dXJuIGE9PW51bGw/bnVsbDphLm1lc3NhZ2V9XG5mdW5jdGlvbiBnUmIoKXt0aGlzLmE9bmV3IFJrYjt0aGlzLmI9bmV3IFJrYn1cbmZ1bmN0aW9uIGlUYigpe3RoaXMuYT1uZXcgTVFiO3RoaXMuYj1uZXcgdFRifVxuZnVuY3Rpb24gdERiKCl7dGhpcy5iPW5ldyBkN2M7dGhpcy5jPW5ldyBSa2J9XG5mdW5jdGlvbiBfUWIoKXt0aGlzLmQ9bmV3IGQ3Yzt0aGlzLmU9bmV3IGQ3Y31cbmZ1bmN0aW9uIG5fYigpe3RoaXMubj1uZXcgZDdjO3RoaXMubz1uZXcgZDdjfVxuZnVuY3Rpb24gJEdiKCl7dGhpcy5uPW5ldyBwMGI7dGhpcy5pPW5ldyBJNmN9XG5mdW5jdGlvbiBzZWMoKXt0aGlzLmE9bmV3IFVtYzt0aGlzLmI9bmV3IG1uY31cbmZ1bmN0aW9uIE5JYygpe3RoaXMuYT1uZXcgUmtiO3RoaXMuZD1uZXcgUmtifVxuZnVuY3Rpb24gTERjKCl7dGhpcy5iPW5ldyBUcWI7dGhpcy5hPW5ldyBUcWJ9XG5mdW5jdGlvbiBoU2MoKXt0aGlzLmI9bmV3IExxYjt0aGlzLmE9bmV3IExxYn1cbmZ1bmN0aW9uIEhSYygpe3RoaXMuYj1uZXcgdFJjO3RoaXMuYT1uZXcgaFJjfVxuZnVuY3Rpb24gYUhiKCl7JEdiLmNhbGwodGhpcyk7dGhpcy5hPW5ldyBkN2N9XG5mdW5jdGlvbiBZd2IoYSl7WndiLmNhbGwodGhpcyxhLChseGIoKSxoeGIpKX1cbmZ1bmN0aW9uIEpfYihhLGIsYyxkKXtCX2IuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24gc3FkKGEsYixjKXtjIT1udWxsJiZrbWQoYixXcWQoYSxjKSl9XG5mdW5jdGlvbiB0cWQoYSxiLGMpe2MhPW51bGwmJmxtZChiLFdxZChhLGMpKX1cbmZ1bmN0aW9uIFRvZChhLGIsYyl7Yz1faGQoYSxiLDExLGMpO3JldHVybiBjfVxuZnVuY3Rpb24gUDZjKGEsYil7YS5hKz1iLmE7YS5iKz1iLmI7cmV0dXJuIGF9XG5mdW5jdGlvbiBjN2MoYSxiKXthLmEtPWIuYTthLmItPWIuYjtyZXR1cm4gYX1cbmZ1bmN0aW9uIHU3YihhLGIpe3JldHVybiBhLm4uYT0odUNiKGIpLGIpKzEwfVxuZnVuY3Rpb24gdjdiKGEsYil7cmV0dXJuIGEubi5hPSh1Q2IoYiksYikrMTB9XG5mdW5jdGlvbiBkTGQoYSxiKXtyZXR1cm4gYj09YXx8cHVkKFVLZChiKSxhKX1cbmZ1bmN0aW9uIFBZZChhLGIpe3JldHVybiBSaGIoYS5hLGIsJycpPT1udWxsfVxuZnVuY3Rpb24gRTJiKGEsYil7eDJiKCk7cmV0dXJuICFmX2IoYi5kLmksYSl9XG5mdW5jdGlvbiByamMoYSxiKXtmYWQoYS5mKT9zamMoYSxiKTp0amMoYSxiKX1cbmZ1bmN0aW9uIGgxZChhLGIpe3ZhciBjO2M9Yi5IaChhLmEpO3JldHVybiBjfVxuZnVuY3Rpb24gQ3lkKGEsYil7cWNiLmNhbGwodGhpcyxndmUrYSttdWUrYil9XG5mdW5jdGlvbiBnVWQoYSxiLGMsZCl7Y1VkLmNhbGwodGhpcyxhLGIsYyxkKX1cbmZ1bmN0aW9uIFE0ZChhLGIsYyxkKXtjVWQuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24gVTRkKGEsYixjLGQpe1E0ZC5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiBuNWQoYSxiLGMsZCl7aTVkLmNhbGwodGhpcyxhLGIsYyxkKX1cbmZ1bmN0aW9uIHA1ZChhLGIsYyxkKXtpNWQuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24gdjVkKGEsYixjLGQpe2k1ZC5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiB0NWQoYSxiLGMsZCl7cDVkLmNhbGwodGhpcyxhLGIsYyxkKX1cbmZ1bmN0aW9uIEE1ZChhLGIsYyxkKXtwNWQuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24geTVkKGEsYixjLGQpe3Y1ZC5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiBENWQoYSxiLGMsZCl7QTVkLmNhbGwodGhpcyxhLGIsYyxkKX1cbmZ1bmN0aW9uIGQ2ZChhLGIsYyxkKXtZNWQuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24gVnAoYSxiLGMpe3RoaXMuYT1hO3FjLmNhbGwodGhpcyxiLGMpfVxuZnVuY3Rpb24gdGsoYSxiLGMpe3RoaXMuYz1iO3RoaXMuYj1jO3RoaXMuYT1hfVxuZnVuY3Rpb24gaWsoYSxiLGMpe3JldHVybiBhLmQ9QkQoYi5LYihjKSwxNjQpfVxuZnVuY3Rpb24gajZkKGEsYil7cmV0dXJuIGEuQWooKS5OaCgpLktoKGEsYil9XG5mdW5jdGlvbiBoNmQoYSxiKXtyZXR1cm4gYS5BaigpLk5oKCkuSWgoYSxiKX1cbmZ1bmN0aW9uIEZkYihhLGIpe3JldHVybiB1Q2IoYSksUEQoYSk9PT1QRChiKX1cbmZ1bmN0aW9uIGRmYihhLGIpe3JldHVybiB1Q2IoYSksUEQoYSk9PT1QRChiKX1cbmZ1bmN0aW9uIER4YihhLGIpe3JldHVybiBWZChDd2IoYS5hLGIsZmFsc2UpKX1cbmZ1bmN0aW9uIEV4YihhLGIpe3JldHVybiBWZChEd2IoYS5hLGIsZmFsc2UpKX1cbmZ1bmN0aW9uIHZCYihhLGIpe3JldHVybiBhLmIuc2QobmV3IHlCYihhLGIpKX1cbmZ1bmN0aW9uIEJCYihhLGIpe3JldHVybiBhLmIuc2QobmV3IEVCYihhLGIpKX1cbmZ1bmN0aW9uIEhCYihhLGIpe3JldHVybiBhLmIuc2QobmV3IEtCYihhLGIpKX1cbmZ1bmN0aW9uIGxmYihhLGIsYyl7cmV0dXJuIGEubGFzdEluZGV4T2YoYixjKX1cbmZ1bmN0aW9uIHVUYihhLGIsYyl7cmV0dXJuIEtkYihhW2IuYl0sYVtjLmJdKX1cbmZ1bmN0aW9uIFJUYihhLGIpe3JldHVybiB5TmIoYiwoTnljKCksQ3djKSxhKX1cbmZ1bmN0aW9uIGZtYyhhLGIpe3JldHVybiBiZWIoYi5hLmQucCxhLmEuZC5wKX1cbmZ1bmN0aW9uIGVtYyhhLGIpe3JldHVybiBiZWIoYS5hLmQucCxiLmEuZC5wKX1cbmZ1bmN0aW9uIF9PYyhhLGIpe3JldHVybiBLZGIoYS5jLWEucyxiLmMtYi5zKX1cbmZ1bmN0aW9uIFNfYihhKXtyZXR1cm4gIWEuYz8tMTpKa2IoYS5jLmEsYSwwKX1cbmZ1bmN0aW9uIFZ4ZChhKXtyZXR1cm4gYTwxMDA/bnVsbDpuZXcgSXhkKGEpfVxuZnVuY3Rpb24gZWNkKGEpe3JldHVybiBhPT1aYmR8fGE9PV9iZHx8YT09JGJkfVxuZnVuY3Rpb24gekFkKGEsYil7cmV0dXJuIEpEKGIsMTUpJiZCdGQoYS5jLGIpfVxuZnVuY3Rpb24gdnliKGEsYil7aWYobHliKXtyZXR1cm59ISFiJiYoYS5kPWIpfVxuZnVuY3Rpb24gdWpiKGEsYil7dmFyIGM7Yz1iO3JldHVybiAhIUF3YihhLGMpfVxuZnVuY3Rpb24gY3pkKGEsYil7dGhpcy5jPWE7UHlkLmNhbGwodGhpcyxhLGIpfVxuZnVuY3Rpb24gZkJiKGEpe3RoaXMuYz1hO252Yi5jYWxsKHRoaXMscmllLDApfVxuZnVuY3Rpb24gQXZiKGEsYil7QnZiLmNhbGwodGhpcyxhLGEubGVuZ3RoLGIpfVxuZnVuY3Rpb24gYUlkKGEsYixjKXtyZXR1cm4gQkQoYS5jLDY5KS5sayhiLGMpfVxuZnVuY3Rpb24gYklkKGEsYixjKXtyZXR1cm4gQkQoYS5jLDY5KS5tayhiLGMpfVxuZnVuY3Rpb24gTzJkKGEsYixjKXtyZXR1cm4gTjJkKGEsQkQoYiwzMzIpLGMpfVxuZnVuY3Rpb24gUTJkKGEsYixjKXtyZXR1cm4gUDJkKGEsQkQoYiwzMzIpLGMpfVxuZnVuY3Rpb24gaTNkKGEsYixjKXtyZXR1cm4gaDNkKGEsQkQoYiwzMzIpLGMpfVxuZnVuY3Rpb24gazNkKGEsYixjKXtyZXR1cm4gajNkKGEsQkQoYiwzMzIpLGMpfVxuZnVuY3Rpb24gdG4oYSxiKXtyZXR1cm4gYj09bnVsbD9udWxsOkh2KGEuYixiKX1cbmZ1bmN0aW9uIEtjYihhKXtyZXR1cm4gTEQoYSk/KHVDYihhKSxhKTphLmtlKCl9XG5mdW5jdGlvbiBMZGIoYSl7cmV0dXJuICFpc05hTihhKSYmIWlzRmluaXRlKGEpfVxuZnVuY3Rpb24gV24oYSl7UWwoKTt0aGlzLmE9KG1tYigpLG5ldyB6b2IoYSkpfVxuZnVuY3Rpb24gZEljKGEpe0ZIYygpO3RoaXMuZD1hO3RoaXMuYT1uZXcgamtifVxuZnVuY3Rpb24geHFiKGEsYixjKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIE5yYihhLGIsYyl7dGhpcy5hPWE7dGhpcy5iPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiAkc2IoYSxiLGMpe3RoaXMuZD1hO3RoaXMuYj1jO3RoaXMuYT1ifVxuZnVuY3Rpb24gUXNiKGEpe0NzYih0aGlzKTtPc2IodGhpcyk7eWUodGhpcyxhKX1cbmZ1bmN0aW9uIFRrYihhKXtDa2IodGhpcyk7YkNiKHRoaXMuYywwLGEuUGMoKSl9XG5mdW5jdGlvbiBYd2IoYSl7dWliKGEuYSk7S3diKGEuYyxhLmIpO2EuYj1udWxsfVxuZnVuY3Rpb24gaXliKGEpe3RoaXMuYT1hO1pmYigpO0NiYihEYXRlLm5vdygpKX1cbmZ1bmN0aW9uIEpDYigpe0pDYj1jY2I7R0NiPW5ldyBuYjtJQ2I9bmV3IG5ifVxuZnVuY3Rpb24gbnRiKCl7bnRiPWNjYjtsdGI9bmV3IG90YjttdGI9bmV3IHF0Yn1cbmZ1bmN0aW9uIGt6ZCgpe2t6ZD1jY2I7anpkPUtDKFNJLFVoZSwxLDAsNSwxKX1cbmZ1bmN0aW9uIHRHZCgpe3RHZD1jY2I7c0dkPUtDKFNJLFVoZSwxLDAsNSwxKX1cbmZ1bmN0aW9uICRHZCgpeyRHZD1jY2I7WkdkPUtDKFNJLFVoZSwxLDAsNSwxKX1cbmZ1bmN0aW9uIFFsKCl7UWw9Y2NiO25ldyBabCgobW1iKCksbW1iKCksam1iKSl9XG5mdW5jdGlvbiBweGIoYSl7bHhiKCk7cmV0dXJuIGVzKCh6eGIoKSx5eGIpLGEpfVxuZnVuY3Rpb24gSHliKGEpe0Z5YigpO3JldHVybiBlcygoS3liKCksSnliKSxhKX1cbmZ1bmN0aW9uIE9FYihhKXtNRWIoKTtyZXR1cm4gZXMoKFJFYigpLFFFYiksYSl9XG5mdW5jdGlvbiBXRWIoYSl7VUViKCk7cmV0dXJuIGVzKChaRWIoKSxZRWIpLGEpfVxuZnVuY3Rpb24gdEZiKGEpe3JGYigpO3JldHVybiBlcygod0ZiKCksdkZiKSxhKX1cbmZ1bmN0aW9uIGlIYihhKXtnSGIoKTtyZXR1cm4gZXMoKGxIYigpLGtIYiksYSl9XG5mdW5jdGlvbiBQSGIoYSl7TkhiKCk7cmV0dXJuIGVzKChTSGIoKSxSSGIpLGEpfVxuZnVuY3Rpb24gR0liKGEpe0VJYigpO3JldHVybiBlcygoSkliKCksSUliKSxhKX1cbmZ1bmN0aW9uIHZKYihhKXtxSmIoKTtyZXR1cm4gZXMoKHlKYigpLHhKYiksYSl9XG5mdW5jdGlvbiB4TGIoYSl7dkxiKCk7cmV0dXJuIGVzKChBTGIoKSx6TGIpLGEpfVxuZnVuY3Rpb24gVE1iKGEpe1JNYigpO3JldHVybiBlcygoV01iKCksVk1iKSxhKX1cbmZ1bmN0aW9uIFRPYihhKXtST2IoKTtyZXR1cm4gZXMoKFdPYigpLFZPYiksYSl9XG5mdW5jdGlvbiBlUGIoYSl7Y1BiKCk7cmV0dXJuIGVzKChoUGIoKSxnUGIpLGEpfVxuZnVuY3Rpb24gWlJiKGEpe1hSYigpO3JldHVybiBlcygoYVNiKCksX1JiKSxhKX1cbmZ1bmN0aW9uIEFUYihhKXt5VGIoKTtyZXR1cm4gZXMoKERUYigpLENUYiksYSl9XG5mdW5jdGlvbiBzVWIoYSl7cVViKCk7cmV0dXJuIGVzKCh2VWIoKSx1VWIpLGEpfVxuZnVuY3Rpb24gcldiKGEpe2xXYigpO3JldHVybiBlcygodVdiKCksdFdiKSxhKX1cbmZ1bmN0aW9uIFRYYihhKXtSWGIoKTtyZXR1cm4gZXMoKFdYYigpLFZYYiksYSl9XG5mdW5jdGlvbiBNYihhLGIpe2lmKCFhKXt0aHJvdyB2YmIobmV3IFdkYihiKSl9fVxuZnVuY3Rpb24gbDBiKGEpe2owYigpO3JldHVybiBlcygobzBiKCksbjBiKSxhKX1cbmZ1bmN0aW9uIHIwYihhKXtCX2IuY2FsbCh0aGlzLGEuZCxhLmMsYS5hLGEuYil9XG5mdW5jdGlvbiBLX2IoYSl7Ql9iLmNhbGwodGhpcyxhLmQsYS5jLGEuYSxhLmIpfVxuZnVuY3Rpb24gbUtiKGEsYixjKXt0aGlzLmI9YTt0aGlzLmM9Yjt0aGlzLmE9Y31cbmZ1bmN0aW9uIEJaYihhLGIsYyl7dGhpcy5iPWE7dGhpcy5hPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiBUTmIoYSxiLGMpe3RoaXMuYT1hO3RoaXMuYj1iO3RoaXMuYz1jfVxuZnVuY3Rpb24gdU9iKGEsYixjKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIFMzYihhLGIsYyl7dGhpcy5hPWE7dGhpcy5iPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiBaNmIoYSxiLGMpe3RoaXMuYT1hO3RoaXMuYj1iO3RoaXMuYz1jfVxuZnVuY3Rpb24gbjliKGEsYixjKXt0aGlzLmI9YTt0aGlzLmE9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIHgkYihhLGIsYyl7dGhpcy5lPWI7dGhpcy5iPWE7dGhpcy5kPWN9XG5mdW5jdGlvbiAkQWIoYSxiLGMpe0VBYigpO2EuYS5PZChiLGMpO3JldHVybiBifVxuZnVuY3Rpb24gTEdiKGEpe3ZhciBiO2I9bmV3IEtHYjtiLmU9YTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGlMYihhKXt2YXIgYjtiPW5ldyBmTGI7Yi5iPWE7cmV0dXJuIGJ9XG5mdW5jdGlvbiBENmIoKXtENmI9Y2NiO0I2Yj1uZXcgTTZiO0M2Yj1uZXcgUDZifVxuZnVuY3Rpb24gSGdjKCl7SGdjPWNjYjtGZ2M9bmV3IGdoYztHZ2M9bmV3IGloY31cbmZ1bmN0aW9uIGpiYyhhKXtnYmMoKTtyZXR1cm4gZXMoKG1iYygpLGxiYyksYSl9XG5mdW5jdGlvbiBDamMoYSl7QWpjKCk7cmV0dXJuIGVzKChGamMoKSxFamMpLGEpfVxuZnVuY3Rpb24gQ2xjKGEpe0FsYygpO3JldHVybiBlcygoRmxjKCksRWxjKSxhKX1cbmZ1bmN0aW9uIENwYyhhKXtBcGMoKTtyZXR1cm4gZXMoKEZwYygpLEVwYyksYSl9XG5mdW5jdGlvbiBLcGMoYSl7SXBjKCk7cmV0dXJuIGVzKChOcGMoKSxNcGMpLGEpfVxuZnVuY3Rpb24gV3BjKGEpe1JwYygpO3JldHVybiBlcygoWnBjKCksWXBjKSxhKX1cbmZ1bmN0aW9uICRqYyhhKXtYamMoKTtyZXR1cm4gZXMoKGJrYygpLGFrYyksYSl9XG5mdW5jdGlvbiBIa2MoYSl7RmtjKCk7cmV0dXJuIGVzKChLa2MoKSxKa2MpLGEpfVxuZnVuY3Rpb24gZHFjKGEpe2JxYygpO3JldHVybiBlcygoZ3FjKCksZnFjKSxhKX1cbmZ1bmN0aW9uIHJxYyhhKXttcWMoKTtyZXR1cm4gZXMoKHVxYygpLHRxYyksYSl9XG5mdW5jdGlvbiB6cWMoYSl7eHFjKCk7cmV0dXJuIGVzKChDcWMoKSxCcWMpLGEpfVxuZnVuY3Rpb24gSXFjKGEpe0dxYygpO3JldHVybiBlcygoTHFjKCksS3FjKSxhKX1cbmZ1bmN0aW9uIFZxYyhhKXtTcWMoKTtyZXR1cm4gZXMoKFlxYygpLFhxYyksYSl9XG5mdW5jdGlvbiBicmMoYSl7X3FjKCk7cmV0dXJuIGVzKChlcmMoKSxkcmMpLGEpfVxuZnVuY3Rpb24gbnJjKGEpe2xyYygpO3JldHVybiBlcygocXJjKCkscHJjKSxhKX1cbmZ1bmN0aW9uIEFyYyhhKXt5cmMoKTtyZXR1cm4gZXMoKERyYygpLENyYyksYSl9XG5mdW5jdGlvbiBRcmMoYSl7T3JjKCk7cmV0dXJuIGVzKChUcmMoKSxTcmMpLGEpfVxuZnVuY3Rpb24gWnJjKGEpe1hyYygpO3JldHVybiBlcygoYXNjKCksX3JjKSxhKX1cbmZ1bmN0aW9uIGdzYyhhKXtlc2MoKTtyZXR1cm4gZXMoKGpzYygpLGlzYyksYSl9XG5mdW5jdGlvbiBvc2MoYSl7bXNjKCk7cmV0dXJuIGVzKChyc2MoKSxxc2MpLGEpfVxuZnVuY3Rpb24gRXRjKGEpe0N0YygpO3JldHVybiBlcygoSHRjKCksR3RjKSxhKX1cbmZ1bmN0aW9uIHF6YyhhKXtsemMoKTtyZXR1cm4gZXMoKHR6YygpLHN6YyksYSl9XG5mdW5jdGlvbiBBemMoYSl7eHpjKCk7cmV0dXJuIGVzKChEemMoKSxDemMpLGEpfVxuZnVuY3Rpb24gTXpjKGEpe0l6YygpO3JldHVybiBlcygoUHpjKCksT3pjKSxhKX1cbmZ1bmN0aW9uIE1BYyhhKXtLQWMoKTtyZXR1cm4gZXMoKFBBYygpLE9BYyksYSl9XG5mdW5jdGlvbiBtQWMoYSl7a0FjKCk7cmV0dXJuIGVzKChwQWMoKSxvQWMpLGEpfVxuZnVuY3Rpb24gdkFjKGEpe3RBYygpO3JldHVybiBlcygoeUFjKCkseEFjKSxhKX1cbmZ1bmN0aW9uIERBYyhhKXtCQWMoKTtyZXR1cm4gZXMoKEdBYygpLEZBYyksYSl9XG5mdW5jdGlvbiBWQWMoYSl7VEFjKCk7cmV0dXJuIGVzKChZQWMoKSxYQWMpLGEpfVxuZnVuY3Rpb24gJHpjKGEpe1Z6YygpO3JldHVybiBlcygoYkFjKCksYUFjKSxhKX1cbmZ1bmN0aW9uIGJCYyhhKXtfQWMoKTtyZXR1cm4gZXMoKGVCYygpLGRCYyksYSl9XG5mdW5jdGlvbiB2QmMoYSl7dEJjKCk7cmV0dXJuIGVzKCh5QmMoKSx4QmMpLGEpfVxuZnVuY3Rpb24gRUJjKGEpe0NCYygpO3JldHVybiBlcygoSEJjKCksR0JjKSxhKX1cbmZ1bmN0aW9uIE5CYyhhKXtMQmMoKTtyZXR1cm4gZXMoKFFCYygpLFBCYyksYSl9XG5mdW5jdGlvbiB0R2MoYSl7ckdjKCk7cmV0dXJuIGVzKCh3R2MoKSx2R2MpLGEpfVxuZnVuY3Rpb24gV0ljKGEpe1VJYygpO3JldHVybiBlcygoWkljKCksWUljKSxhKX1cbmZ1bmN0aW9uICRMYyhhKXtZTGMoKTtyZXR1cm4gZXMoKGJNYygpLGFNYyksYSl9XG5mdW5jdGlvbiBnTWMoYSl7ZU1jKCk7cmV0dXJuIGVzKChqTWMoKSxpTWMpLGEpfVxuZnVuY3Rpb24gSk9jKGEpe0hPYygpO3JldHVybiBlcygoTU9jKCksTE9jKSxhKX1cbmZ1bmN0aW9uIEhRYyhhKXtGUWMoKTtyZXR1cm4gZXMoKEtRYygpLEpRYyksYSl9XG5mdW5jdGlvbiBEUmMoYSl7eVJjKCk7cmV0dXJuIGVzKChHUmMoKSxGUmMpLGEpfVxuZnVuY3Rpb24gdFNjKGEpe3FTYygpO3JldHVybiBlcygod1NjKCksdlNjKSxhKX1cbmZ1bmN0aW9uIFVUYyhhKXtTVGMoKTtyZXR1cm4gZXMoKFhUYygpLFdUYyksYSl9XG5mdW5jdGlvbiBVVWMoYSl7UFVjKCk7cmV0dXJuIGVzKChYVWMoKSxXVWMpLGEpfVxuZnVuY3Rpb24gYVVjKGEpeyRUYygpO3JldHVybiBlcygoZFVjKCksY1VjKSxhKX1cbmZ1bmN0aW9uIHdWYyhhKXt0VmMoKTtyZXR1cm4gZXMoKHpWYygpLHlWYyksYSl9XG5mdW5jdGlvbiBpV2MoYSl7ZldjKCk7cmV0dXJuIGVzKChsV2MoKSxrV2MpLGEpfVxuZnVuY3Rpb24gc1djKGEpe3BXYygpO3JldHVybiBlcygodldjKCksdVdjKSxhKX1cbmZ1bmN0aW9uIGxYYyhhKXtpWGMoKTtyZXR1cm4gZXMoKG9YYygpLG5YYyksYSl9XG5mdW5jdGlvbiB2WGMoYSl7c1hjKCk7cmV0dXJuIGVzKCh5WGMoKSx4WGMpLGEpfVxuZnVuY3Rpb24gQlljKGEpe3pZYygpO3JldHVybiBlcygoRVljKCksRFljKSxhKX1cbmZ1bmN0aW9uIG0kYyhhKXtrJGMoKTtyZXR1cm4gZXMoKHAkYygpLG8kYyksYSl9XG5mdW5jdGlvbiAkJGMoYSl7WSRjKCk7cmV0dXJuIGVzKChiX2MoKSxhX2MpLGEpfVxuZnVuY3Rpb24gbl9jKGEpe2lfYygpO3JldHVybiBlcygocV9jKCkscF9jKSxhKX1cbmZ1bmN0aW9uIHdfYyhhKXtzX2MoKTtyZXR1cm4gZXMoKHpfYygpLHlfYyksYSl9XG5mdW5jdGlvbiBFX2MoYSl7Q19jKCk7cmV0dXJuIGVzKChIX2MoKSxHX2MpLGEpfVxuZnVuY3Rpb24gUF9jKGEpe05fYygpO3JldHVybiBlcygoU19jKCksUl9jKSxhKX1cbmZ1bmN0aW9uIFcwYyhhKXtSMGMoKTtyZXR1cm4gZXMoKFowYygpLFkwYyksYSl9XG5mdW5jdGlvbiBmMWMoYSl7YTFjKCk7cmV0dXJuIGVzKChpMWMoKSxoMWMpLGEpfVxuZnVuY3Rpb24gUDVjKGEpe041YygpO3JldHVybiBlcygoUzVjKCksUjVjKSxhKX1cbmZ1bmN0aW9uIGI2YyhhKXtfNWMoKTtyZXR1cm4gZXMoKGU2YygpLGQ2YyksYSl9XG5mdW5jdGlvbiBIN2MoYSl7RjdjKCk7cmV0dXJuIGVzKChLN2MoKSxKN2MpLGEpfVxuZnVuY3Rpb24gazhjKGEpe2k4YygpO3JldHVybiBlcygobjhjKCksbThjKSxhKX1cbmZ1bmN0aW9uIFY4YihhKXtTOGIoKTtyZXR1cm4gZXMoKFk4YigpLFg4YiksYSl9XG5mdW5jdGlvbiBBNWIoYSl7eTViKCk7cmV0dXJuIGVzKChENWIoKSxDNWIpLGEpfVxuZnVuY3Rpb24gamFkKGEpe2VhZCgpO3JldHVybiBlcygobWFkKCksbGFkKSxhKX1cbmZ1bmN0aW9uIHNhZChhKXtxYWQoKTtyZXR1cm4gZXMoKHZhZCgpLHVhZCksYSl9XG5mdW5jdGlvbiBDYWQoYSl7QWFkKCk7cmV0dXJuIGVzKChGYWQoKSxFYWQpLGEpfVxuZnVuY3Rpb24gT2FkKGEpe01hZCgpO3JldHVybiBlcygoUmFkKCksUWFkKSxhKX1cbmZ1bmN0aW9uIGpiZChhKXtoYmQoKTtyZXR1cm4gZXMoKG1iZCgpLGxiZCksYSl9XG5mdW5jdGlvbiB1YmQoYSl7cmJkKCk7cmV0dXJuIGVzKCh4YmQoKSx3YmQpLGEpfVxuZnVuY3Rpb24gS2JkKGEpe0hiZCgpO3JldHVybiBlcygoTmJkKCksTWJkKSxhKX1cbmZ1bmN0aW9uIFZiZChhKXtUYmQoKTtyZXR1cm4gZXMoKFliZCgpLFhiZCksYSl9XG5mdW5jdGlvbiBoY2QoYSl7ZGNkKCk7cmV0dXJuIGVzKChrY2QoKSxqY2QpLGEpfVxuZnVuY3Rpb24gdmNkKGEpe3JjZCgpO3JldHVybiBlcygoeWNkKCkseGNkKSxhKX1cbmZ1bmN0aW9uIHZkZChhKXt0ZGQoKTtyZXR1cm4gZXMoKHlkZCgpLHhkZCksYSl9XG5mdW5jdGlvbiBLZGQoYSl7SWRkKCk7cmV0dXJuIGVzKChOZGQoKSxNZGQpLGEpfVxuZnVuY3Rpb24gJGNkKGEpe1VjZCgpO3JldHVybiBlcygoY2RkKCksYmRkKSxhKX1cbmZ1bmN0aW9uIEZlZChhKXtEZWQoKTtyZXR1cm4gZXMoKEllZCgpLEhlZCksYSl9XG5mdW5jdGlvbiByZ2QoYSl7cGdkKCk7cmV0dXJuIGVzKCh1Z2QoKSx0Z2QpLGEpfVxuZnVuY3Rpb24gRXNkKGEpe0NzZCgpO3JldHVybiBlcygoSHNkKCksR3NkKSxhKX1cbmZ1bmN0aW9uIFlvYyhhLGIpe3JldHVybiAodUNiKGEpLGEpKyh1Q2IoYiksYil9XG5mdW5jdGlvbiBOTmQoYSxiKXtaZmIoKTtyZXR1cm4gd3RkKFpLZChhLmEpLGIpfVxuZnVuY3Rpb24gU05kKGEsYil7WmZiKCk7cmV0dXJuIHd0ZChaS2QoYS5hKSxiKX1cbmZ1bmN0aW9uIGJQYyhhLGIpe3RoaXMuYz1hO3RoaXMuYT1iO3RoaXMuYj1iLWF9XG5mdW5jdGlvbiBuWWMoYSxiLGMpe3RoaXMuYT1hO3RoaXMuYj1iO3RoaXMuYz1jfVxuZnVuY3Rpb24gTDFjKGEsYixjKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIFQxYyhhLGIsYyl7dGhpcy5hPWE7dGhpcy5iPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiBScmQoYSxiLGMpe3RoaXMuYT1hO3RoaXMuYj1iO3RoaXMuYz1jfVxuZnVuY3Rpb24gekNkKGEsYixjKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIElWZChhLGIsYyl7dGhpcy5lPWE7dGhpcy5hPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiBrV2QoYSxiLGMpe1VWZCgpO2NXZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gSFhkKGEsYixjKXtVVmQoKTtvWGQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIFRYZChhLGIsYyl7VVZkKCk7b1hkLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBaWGQoYSxiLGMpe1VWZCgpO29YZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gSlhkKGEsYixjKXtVVmQoKTtIWGQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIExYZChhLGIsYyl7VVZkKCk7SFhkLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiBOWGQoYSxiLGMpe1VWZCgpO0xYZC5jYWxsKHRoaXMsYSxiLGMpfVxuZnVuY3Rpb24gVlhkKGEsYixjKXtVVmQoKTtUWGQuY2FsbCh0aGlzLGEsYixjKX1cbmZ1bmN0aW9uIF9YZChhLGIsYyl7VVZkKCk7WlhkLmNhbGwodGhpcyxhLGIsYyl9XG5mdW5jdGlvbiAkaihhLGIpe1FiKGEpO1FiKGIpO3JldHVybiBuZXcgX2ooYSxiKX1cbmZ1bmN0aW9uIE5xKGEsYil7UWIoYSk7UWIoYik7cmV0dXJuIG5ldyBXcShhLGIpfVxuZnVuY3Rpb24gUnEoYSxiKXtRYihhKTtRYihiKTtyZXR1cm4gbmV3IGFyKGEsYil9XG5mdW5jdGlvbiBscihhLGIpe1FiKGEpO1FiKGIpO3JldHVybiBuZXcgenIoYSxiKX1cbmZ1bmN0aW9uIEJEKGEsYil7Q0NiKGE9PW51bGx8fEFEKGEsYikpO3JldHVybiBhfVxuZnVuY3Rpb24gTnUoYSl7dmFyIGI7Yj1uZXcgUmtiO2ZyKGIsYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBFeChhKXt2YXIgYjtiPW5ldyBUcWI7ZnIoYixhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEh4KGEpe3ZhciBiO2I9bmV3IEd4YjtKcShiLGEpO3JldHVybiBifVxuZnVuY3Rpb24gUnUoYSl7dmFyIGI7Yj1uZXcgUHNiO0pxKGIsYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBZRWMoYSl7IWEuZSYmKGEuZT1uZXcgUmtiKTtyZXR1cm4gYS5lfVxuZnVuY3Rpb24gU01kKGEpeyFhLmMmJihhLmM9bmV3IHhZZCk7cmV0dXJuIGEuY31cbmZ1bmN0aW9uIEVrYihhLGIpe2EuY1thLmMubGVuZ3RoXT1iO3JldHVybiB0cnVlfVxuZnVuY3Rpb24gV0EoYSxiKXt0aGlzLmM9YTt0aGlzLmI9Yjt0aGlzLmE9ZmFsc2V9XG5mdW5jdGlvbiBHZyhhKXt0aGlzLmQ9YTtEZyh0aGlzKTt0aGlzLmI9ZWQoYS5kKX1cbmZ1bmN0aW9uIHB6Yigpe3RoaXMuYT0nOyw7Jzt0aGlzLmI9Jyc7dGhpcy5jPScnfVxuZnVuY3Rpb24gQnZiKGEsYixjKXtxdmIuY2FsbCh0aGlzLGIsYyk7dGhpcy5hPWF9XG5mdW5jdGlvbiBmQWIoYSxiLGMpe3RoaXMuYj1hO2Z2Yi5jYWxsKHRoaXMsYixjKX1cbmZ1bmN0aW9uIGxzYihhLGIsYyl7dGhpcy5jPWE7cGpiLmNhbGwodGhpcyxiLGMpfVxuZnVuY3Rpb24gYkNiKGEsYixjKXskQmIoYywwLGEsYixjLmxlbmd0aCxmYWxzZSl9XG5mdW5jdGlvbiBIVmIoYSxiLGMsZCxlKXthLmI9YjthLmM9YzthLmQ9ZDthLmE9ZX1cbmZ1bmN0aW9uIGVCYihhLGIpe2lmKGIpe2EuYj1iO2EuYT0oVHpiKGIpLGIuYSl9fVxuZnVuY3Rpb24gdl9iKGEsYixjLGQsZSl7YS5kPWI7YS5jPWM7YS5hPWQ7YS5iPWV9XG5mdW5jdGlvbiBoNWIoYSl7dmFyIGIsYztiPWEuYjtjPWEuYzthLmI9YzthLmM9Yn1cbmZ1bmN0aW9uIGs1YihhKXt2YXIgYixjO2M9YS5kO2I9YS5hO2EuZD1iO2EuYT1jfVxuZnVuY3Rpb24gTGJiKGEpe3JldHVybiB6YmIoaUQoRmJiKGEpP1JiYihhKTphKSl9XG5mdW5jdGlvbiBybGMoYSxiKXtyZXR1cm4gYmViKEQwYihhLmQpLEQwYihiLmQpKX1cbmZ1bmN0aW9uIHVpYyhhLGIpe3JldHVybiBiPT0oVWNkKCksVGNkKT9hLmM6YS5kfVxuZnVuY3Rpb24gRkhjKCl7RkhjPWNjYjtESGM9KFVjZCgpLFRjZCk7RUhjPXpjZH1cbmZ1bmN0aW9uIERSYigpe3RoaXMuYj1FZGIoRUQoS3NkKCh3U2IoKSx2U2IpKSkpfVxuZnVuY3Rpb24gYUJiKGEpe3JldHVybiBFQWIoKSxLQyhTSSxVaGUsMSxhLDUsMSl9XG5mdW5jdGlvbiBDNmMoYSl7cmV0dXJuIG5ldyBmN2MoYS5jK2EuYixhLmQrYS5hKX1cbmZ1bmN0aW9uIFZtYyhhLGIpe0ltYygpO3JldHVybiBiZWIoYS5kLnAsYi5kLnApfVxuZnVuY3Rpb24gTHNiKGEpe3NDYihhLmIhPTApO3JldHVybiBOc2IoYSxhLmEuYSl9XG5mdW5jdGlvbiBNc2IoYSl7c0NiKGEuYiE9MCk7cmV0dXJuIE5zYihhLGEuYy5iKX1cbmZ1bmN0aW9uIHJDYihhLGIpe2lmKCFhKXt0aHJvdyB2YmIobmV3IHVjYihiKSl9fVxuZnVuY3Rpb24gbUNiKGEsYil7aWYoIWEpe3Rocm93IHZiYihuZXcgV2RiKGIpKX19XG5mdW5jdGlvbiBkV2IoYSxiLGMpe2NXYi5jYWxsKHRoaXMsYSxiKTt0aGlzLmI9Y31cbmZ1bmN0aW9uIHBNZChhLGIsYyl7TUxkLmNhbGwodGhpcyxhLGIpO3RoaXMuYz1jfVxuZnVuY3Rpb24gRG5jKGEsYixjKXtDbmMuY2FsbCh0aGlzLGIsYyk7dGhpcy5kPWF9XG5mdW5jdGlvbiBfR2QoYSl7JEdkKCk7TUdkLmNhbGwodGhpcyk7dGhpcy50aChhKX1cbmZ1bmN0aW9uIFBOZChhLGIsYyl7dGhpcy5hPWE7bk5kLmNhbGwodGhpcyxiLGMpfVxuZnVuY3Rpb24gVU5kKGEsYixjKXt0aGlzLmE9YTtuTmQuY2FsbCh0aGlzLGIsYyl9XG5mdW5jdGlvbiBrMmQoYSxiLGMpe01MZC5jYWxsKHRoaXMsYSxiKTt0aGlzLmM9Y31cbmZ1bmN0aW9uIHkxZCgpe1QwZCgpO3oxZC5jYWxsKHRoaXMsKHlGZCgpLHhGZCkpfVxuZnVuY3Rpb24gZ0ZkKGEpe3JldHVybiBhIT1udWxsJiYhT0VkKGEsQ0VkLERFZCl9XG5mdW5jdGlvbiBkRmQoYSxiKXtyZXR1cm4gKGpGZChhKTw8NHxqRmQoYikpJmFqZX1cbmZ1bmN0aW9uIGxuKGEsYil7cmV0dXJuIFZtKCksV2ooYSxiKSxuZXcgaXkoYSxiKX1cbmZ1bmN0aW9uIFNkZChhLGIpe3ZhciBjO2lmKGEubil7Yz1iO0VrYihhLmYsYyl9fVxuZnVuY3Rpb24gVXBkKGEsYixjKXt2YXIgZDtkPW5ldyB5QyhjKTtjQyhhLGIsZCl9XG5mdW5jdGlvbiBXVWQoYSxiKXt2YXIgYztjPWEuYztWVWQoYSxiKTtyZXR1cm4gY31cbmZ1bmN0aW9uIFlkZChhLGIpe2I8MD8oYS5nPS0xKTooYS5nPWIpO3JldHVybiBhfVxuZnVuY3Rpb24gJDZjKGEsYil7VzZjKGEpO2EuYSo9YjthLmIqPWI7cmV0dXJuIGF9XG5mdW5jdGlvbiBHNmMoYSxiLGMsZCxlKXthLmM9YjthLmQ9YzthLmI9ZDthLmE9ZX1cbmZ1bmN0aW9uIERzYihhLGIpe0dzYihhLGIsYS5jLmIsYS5jKTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIGpzYihhKXthLmEuYj1hLmI7YS5iLmE9YS5hO2EuYT1hLmI9bnVsbH1cbmZ1bmN0aW9uIEFxKGEpe3RoaXMuYj1hO3RoaXMuYT1XbSh0aGlzLmIuYSkuRWQoKX1cbmZ1bmN0aW9uIFdxKGEsYil7dGhpcy5iPWE7dGhpcy5hPWI7b2wuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIGFyKGEsYil7dGhpcy5hPWE7dGhpcy5iPWI7b2wuY2FsbCh0aGlzKX1cbmZ1bmN0aW9uIHZ2YihhLGIpe3F2Yi5jYWxsKHRoaXMsYiwxMDQwKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIEVlYihhKXtyZXR1cm4gYT09MHx8aXNOYU4oYSk/YTphPDA/LTE6MX1cbmZ1bmN0aW9uIFdQYihhKXtRUGIoKTtyZXR1cm4ganRkKGEpPT1Yb2QobHRkKGEpKX1cbmZ1bmN0aW9uIFhQYihhKXtRUGIoKTtyZXR1cm4gbHRkKGEpPT1Yb2QoanRkKGEpKX1cbmZ1bmN0aW9uIGlZYihhLGIpe3JldHVybiBoWWIoYSxuZXcgY1diKGIuYSxiLmIpKX1cbmZ1bmN0aW9uIE5aYihhKXtyZXR1cm4gIU9aYihhKSYmYS5jLmkuYz09YS5kLmkuY31cbmZ1bmN0aW9uIF9HYihhKXt2YXIgYjtiPWEubjtyZXR1cm4gYS5hLmIrYi5kK2IuYX1cbmZ1bmN0aW9uIFlIYihhKXt2YXIgYjtiPWEubjtyZXR1cm4gYS5lLmIrYi5kK2IuYX1cbmZ1bmN0aW9uIFpIYihhKXt2YXIgYjtiPWEubjtyZXR1cm4gYS5lLmErYi5iK2IuY31cbmZ1bmN0aW9uIHpmZShhKXt3ZmUoKTsrK3ZmZTtyZXR1cm4gbmV3IGlnZSgwLGEpfVxuZnVuY3Rpb24gb19iKGEpe2lmKGEuYSl7cmV0dXJuIGEuYX1yZXR1cm4gSlpiKGEpfVxuZnVuY3Rpb24gQ0NiKGEpe2lmKCFhKXt0aHJvdyB2YmIobmV3IENkYihudWxsKSl9fVxuZnVuY3Rpb24gWDZkKCl7WDZkPWNjYjtXNmQ9KG1tYigpLG5ldyBhbmIoRndlKSl9XG5mdW5jdGlvbiBleCgpe2V4PWNjYjtuZXcgZ3goKF9rKCksJGspLChMaygpLEtrKSl9XG5mdW5jdGlvbiBvZWIoKXtvZWI9Y2NiO25lYj1LQyhKSSxuaWUsMTksMjU2LDAsMSl9XG5mdW5jdGlvbiBkJGMoYSxiLGMsZCl7ZSRjLmNhbGwodGhpcyxhLGIsYyxkLDAsMCl9XG5mdW5jdGlvbiBzUWMoYSxiLGMpe3JldHVybiBSaGIoYS5iLEJEKGMuYiwxNyksYil9XG5mdW5jdGlvbiB0UWMoYSxiLGMpe3JldHVybiBSaGIoYS5iLEJEKGMuYiwxNyksYil9XG5mdW5jdGlvbiB4ZmQoYSxiKXtyZXR1cm4gRWtiKGEsbmV3IGY3YyhiLmEsYi5iKSl9XG5mdW5jdGlvbiBCaWMoYSxiKXtyZXR1cm4gYS5jPGIuYz8tMTphLmM9PWIuYz8wOjF9XG5mdW5jdGlvbiBCMGIoYSl7cmV0dXJuIGEuZS5jLmxlbmd0aCthLmcuYy5sZW5ndGh9XG5mdW5jdGlvbiBEMGIoYSl7cmV0dXJuIGEuZS5jLmxlbmd0aC1hLmcuYy5sZW5ndGh9XG5mdW5jdGlvbiBPamMoYSl7cmV0dXJuIGEuYi5jLmxlbmd0aC1hLmUuYy5sZW5ndGh9XG5mdW5jdGlvbiBkS2MoYSl7RkpjKCk7cmV0dXJuIChVY2QoKSxFY2QpLkhjKGEuail9XG5mdW5jdGlvbiBsSGQoYSl7JEdkKCk7X0dkLmNhbGwodGhpcyxhKTt0aGlzLmE9LTF9XG5mdW5jdGlvbiBSN2QoYSxiKXtmN2QuY2FsbCh0aGlzLGEsYik7dGhpcy5hPXRoaXN9XG5mdW5jdGlvbiBvZGIoYSxiKXt2YXIgYztjPWxkYihhLGIpO2MuaT0yO3JldHVybiBjfVxuZnVuY3Rpb24gRXZkKGEsYil7dmFyIGM7KythLmo7Yz1hLlRpKGIpO3JldHVybiBjfVxuZnVuY3Rpb24gZTNjKGEsYixjKXthLmE9LTE7aTNjKGEsYi5nLGMpO3JldHVybiBhfVxuZnVuY3Rpb24gUXJkKGEsYixjKXtLcWQoYS5hLGEuYixhLmMsQkQoYiwyMDIpLGMpfVxuZnVuY3Rpb24gT0hkKGEsYil7UEhkKGEsYj09bnVsbD9udWxsOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gU1VkKGEsYil7VVVkKGEsYj09bnVsbD9udWxsOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gVFVkKGEsYil7VVVkKGEsYj09bnVsbD9udWxsOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gWmooYSxiLGMpe3JldHVybiBuZXcgdGsob0FiKGEpLkllKCksYyxiKX1cbmZ1bmN0aW9uIElDKGEsYixjLGQsZSxmKXtyZXR1cm4gSkMoYSxiLGMsZCxlLDAsZil9XG5mdW5jdGlvbiBVY2IoKXtVY2I9Y2NiO1RjYj1LQyh4SSxuaWUsMjE3LDI1NiwwLDEpfVxuZnVuY3Rpb24gQ2ViKCl7Q2ViPWNjYjtCZWI9S0MoTUksbmllLDE2MiwyNTYsMCwxKX1cbmZ1bmN0aW9uIFllYigpe1llYj1jY2I7WGViPUtDKFVJLG5pZSwxODQsMjU2LDAsMSl9XG5mdW5jdGlvbiBkZGIoKXtkZGI9Y2NiO2NkYj1LQyh5SSxuaWUsMTcyLDEyOCwwLDEpfVxuZnVuY3Rpb24gSVZiKCl7SFZiKHRoaXMsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpfVxuZnVuY3Rpb24gbXkoYSl7aW0oKTt0aGlzLmE9KG1tYigpLG5ldyBhbmIoUWIoYSkpKX1cbmZ1bmN0aW9uIGlyKGEpe1FiKGEpO3doaWxlKGEuT2IoKSl7YS5QYigpO2EuUWIoKX19XG5mdW5jdGlvbiBUdyhhKXthLmEuY2QoKTtCRChhLmEuZGQoKSwxNCkuZ2MoKTt6aCgpfVxuZnVuY3Rpb24gbWYoYSl7dGhpcy5jPWE7dGhpcy5iPXRoaXMuYy5kLnZjKCkuS2MoKX1cbmZ1bmN0aW9uIGZxYihhKXt0aGlzLmM9YTt0aGlzLmE9bmV3IEdxYih0aGlzLmMuYSl9XG5mdW5jdGlvbiBWcWIoYSl7dGhpcy5hPW5ldyBNcWIoYS5nYygpKTt5ZSh0aGlzLGEpfVxuZnVuY3Rpb24gQnNiKGEpe1dxYi5jYWxsKHRoaXMsbmV3ICRyYik7eWUodGhpcyxhKX1cbmZ1bmN0aW9uIFJmYihhLGIpe2EuYSs9emZiKGIsMCxiLmxlbmd0aCk7cmV0dXJuIGF9XG5mdW5jdGlvbiBJa2IoYSxiKXt0Q2IoYixhLmMubGVuZ3RoKTtyZXR1cm4gYS5jW2JdfVxuZnVuY3Rpb24gJGxiKGEsYil7dENiKGIsYS5hLmxlbmd0aCk7cmV0dXJuIGEuYVtiXX1cbmZ1bmN0aW9uIFlBYihhLGIpe0VBYigpO1Z6Yi5jYWxsKHRoaXMsYSk7dGhpcy5hPWJ9XG5mdW5jdGlvbiBReWIoYSxiKXtyZXR1cm4gQWViKHdiYihBZWIoYS5hKS5hLGIuYSkpfVxuZnVuY3Rpb24ganBiKGEsYil7cmV0dXJuIHVDYihhKSxGY2IoYSwodUNiKGIpLGIpKX1cbmZ1bmN0aW9uIG9wYihhLGIpe3JldHVybiB1Q2IoYiksRmNiKGIsKHVDYihhKSxhKSl9XG5mdW5jdGlvbiBPeWIoYSxiKXtyZXR1cm4gTkMoYiwwLEJ6YihiWzBdLEFlYigxKSkpfVxuZnVuY3Rpb24gQnpiKGEsYil7cmV0dXJuIFF5YihCRChhLDE2MiksQkQoYiwxNjIpKX1cbmZ1bmN0aW9uIHZpYyhhKXtyZXR1cm4gYS5jLUJEKElrYihhLmEsYS5iKSwyODcpLmJ9XG5mdW5jdGlvbiB1TmIoYSl7cmV0dXJuICFhLnE/KG1tYigpLG1tYigpLGttYik6YS5xfVxuZnVuY3Rpb24gWGkoYSl7cmV0dXJuIGEuZS5IZCgpLmdjKCkqYS5jLkhkKCkuZ2MoKX1cbmZ1bmN0aW9uIG9uYyhhLGIsYyl7cmV0dXJuIGJlYihiLmRbYS5nXSxjLmRbYS5nXSl9XG5mdW5jdGlvbiBZSGMoYSxiLGMpe3JldHVybiBiZWIoYS5kW2IucF0sYS5kW2MucF0pfVxuZnVuY3Rpb24gWkhjKGEsYixjKXtyZXR1cm4gYmViKGEuZFtiLnBdLGEuZFtjLnBdKX1cbmZ1bmN0aW9uICRIYyhhLGIsYyl7cmV0dXJuIGJlYihhLmRbYi5wXSxhLmRbYy5wXSl9XG5mdW5jdGlvbiBfSGMoYSxiLGMpe3JldHVybiBiZWIoYS5kW2IucF0sYS5kW2MucF0pfVxuZnVuY3Rpb24gcSRjKGEsYixjKXtyZXR1cm4gJHduZC5NYXRoLm1pbihjL2EsMS9iKX1cbmZ1bmN0aW9uIHNFYyhhLGIpe3JldHVybiBhPzA6JHduZC5NYXRoLm1heCgwLGItMSl9XG5mdW5jdGlvbiBFbGIoYSxiKXt2YXIgYztmb3IoYz0wO2M8YjsrK2Mpe2FbY109LTF9fVxuZnVuY3Rpb24gYlZjKGEpe3ZhciBiO2I9aFZjKGEpO3JldHVybiAhYj9hOmJWYyhiKX1cbmZ1bmN0aW9uIFZvYyhhLGIpe2EuYT09bnVsbCYmVG9jKGEpO3JldHVybiBhLmFbYl19XG5mdW5jdGlvbiBxZWQoYSl7aWYoYS5jKXtyZXR1cm4gYS5jLmZ9cmV0dXJuIGEuZS5ifVxuZnVuY3Rpb24gcmVkKGEpe2lmKGEuYyl7cmV0dXJuIGEuYy5nfXJldHVybiBhLmUuYX1cbmZ1bmN0aW9uIHBGZChhKXt6dWQuY2FsbCh0aGlzLGEuZ2MoKSk7eXRkKHRoaXMsYSl9XG5mdW5jdGlvbiBuWGQoYSxiKXtVVmQoKTtWVmQuY2FsbCh0aGlzLGIpO3RoaXMuYT1hfVxuZnVuY3Rpb24gS1lkKGEsYixjKXt0aGlzLmE9YTt4TWQuY2FsbCh0aGlzLGIsYywyKX1cbmZ1bmN0aW9uIEJfYihhLGIsYyxkKXtzX2IodGhpcyk7dl9iKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiBpZ2UoYSxiKXt3ZmUoKTt4ZmUuY2FsbCh0aGlzLGEpO3RoaXMuYT1ifVxuZnVuY3Rpb24gamdkKGEpe3RoaXMuYj1uZXcgUHNiO3RoaXMuYT1hO3RoaXMuYz0tMX1cbmZ1bmN0aW9uIE1PYigpe3RoaXMuZD1uZXcgZjdjKDAsMCk7dGhpcy5lPW5ldyBUcWJ9XG5mdW5jdGlvbiBOcihhKXtxYy5jYWxsKHRoaXMsMCwwKTt0aGlzLmE9YTt0aGlzLmI9MH1cbmZ1bmN0aW9uIGVqYyhhKXt0aGlzLmE9YTt0aGlzLmM9bmV3IExxYjskaWModGhpcyl9XG5mdW5jdGlvbiBqdShhKXtpZihhLmUuYyE9YS5iKXt0aHJvdyB2YmIobmV3IEFwYil9fVxuZnVuY3Rpb24gYnQoYSl7aWYoYS5jLmUhPWEuYSl7dGhyb3cgdmJiKG5ldyBBcGIpfX1cbmZ1bmN0aW9uIFRiYihhKXtpZihGYmIoYSkpe3JldHVybiBhfDB9cmV0dXJuIHBEKGEpfVxuZnVuY3Rpb24gQmZlKGEsYil7d2ZlKCk7Kyt2ZmU7cmV0dXJuIG5ldyByZ2UoYSxiKX1cbmZ1bmN0aW9uIFNFZChhLGIpe3JldHVybiBhPT1udWxsP2I9PW51bGw6ZGZiKGEsYil9XG5mdW5jdGlvbiBURWQoYSxiKXtyZXR1cm4gYT09bnVsbD9iPT1udWxsOmVmYihhLGIpfVxuZnVuY3Rpb24gTnBiKGEsYixjKXtycWIoYS5hLGIpO3JldHVybiBRcGIoYSxiLmcsYyl9XG5mdW5jdGlvbiBNbGIoYSxiLGMpe29DYigwLGIsYS5sZW5ndGgpO0tsYihhLDAsYixjKX1cbmZ1bmN0aW9uIERrYihhLGIsYyl7d0NiKGIsYS5jLmxlbmd0aCk7YUNiKGEuYyxiLGMpfVxuZnVuY3Rpb24gRGxiKGEsYixjKXt2YXIgZDtmb3IoZD0wO2Q8YjsrK2Qpe2FbZF09Y319XG5mdW5jdGlvbiBxcWIoYSxiKXt2YXIgYztjPXBxYihhKTtubWIoYyxiKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE96KGEsYil7IWEmJihhPVtdKTthW2EubGVuZ3RoXT1iO3JldHVybiBhfVxuZnVuY3Rpb24gQnJiKGEsYil7cmV0dXJuICEoYS5hLmdldChiKT09PXVuZGVmaW5lZCl9XG5mdW5jdGlvbiBXeWIoYSxiKXtyZXR1cm4gTnliKG5ldyByemIsbmV3IGJ6YihhKSxiKX1cbmZ1bmN0aW9uIEl0YihhKXtyZXR1cm4gYT09bnVsbD96dGI6bmV3IEZ0Yih1Q2IoYSkpfVxuZnVuY3Rpb24gdHFiKGEsYil7cmV0dXJuIEpEKGIsMjIpJiZ1cWIoYSxCRChiLDIyKSl9XG5mdW5jdGlvbiB2cWIoYSxiKXtyZXR1cm4gSkQoYiwyMikmJndxYihhLEJEKGIsMjIpKX1cbmZ1bmN0aW9uIEF1YihhKXtyZXR1cm4gQ3ViKGEsMjYpKmlrZStDdWIoYSwyNykqamtlfVxuZnVuY3Rpb24gTUMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSkmJmEuaW09PT1nY2J9XG5mdW5jdGlvbiBiZyhhKXthLmI/YmcoYS5iKTphLmQuZGMoKSYmYS5mLmMuQmMoYS5lKX1cbmZ1bmN0aW9uICROYihhLGIpe1A2YyhhLmMsYik7YS5iLmMrPWIuYTthLmIuZCs9Yi5ifVxuZnVuY3Rpb24gWk5iKGEsYil7JE5iKGEsYzdjKG5ldyBmN2MoYi5hLGIuYiksYS5jKSl9XG5mdW5jdGlvbiBCTGIoYSxiKXt0aGlzLmI9bmV3IFBzYjt0aGlzLmE9YTt0aGlzLmM9Yn1cbmZ1bmN0aW9uIE9WYigpe3RoaXMuYj1uZXcgJFZiO3RoaXMuYz1uZXcgU1ZiKHRoaXMpfVxuZnVuY3Rpb24gb0ViKCl7dGhpcy5kPW5ldyBDRWI7dGhpcy5lPW5ldyB1RWIodGhpcyl9XG5mdW5jdGlvbiBhQ2MoKXtaQmMoKTt0aGlzLmY9bmV3IFBzYjt0aGlzLmU9bmV3IFBzYn1cbmZ1bmN0aW9uICRKYygpe0ZKYygpO3RoaXMuaz1uZXcgTHFiO3RoaXMuZD1uZXcgVHFifVxuZnVuY3Rpb24gUmdkKCl7UmdkPWNjYjtRZ2Q9bmV3IE9zZCgoWTljKCksczljKSwwKX1cbmZ1bmN0aW9uIE1yKCl7TXI9Y2NiO0xyPW5ldyBOcihLQyhTSSxVaGUsMSwwLDUsMSkpfVxuZnVuY3Rpb24gZ2ZjKGEsYixjKXtiZmMoYyxhLDEpO0VrYihiLG5ldyBUZmMoYyxhKSl9XG5mdW5jdGlvbiBoZmMoYSxiLGMpe2NmYyhjLGEsMSk7RWtiKGIsbmV3IGRnYyhjLGEpKX1cbmZ1bmN0aW9uIFIkYyhhLGIsYyl7cmV0dXJuIFFxYihhLG5ldyBhRGIoYi5hLGMuYSkpfVxuZnVuY3Rpb24gQUNjKGEsYixjKXtyZXR1cm4gLWJlYihhLmZbYi5wXSxhLmZbYy5wXSl9XG5mdW5jdGlvbiBtSGIoYSxiLGMpe3ZhciBkO2lmKGEpe2Q9YS5pO2QuYz1iO2QuYj1jfX1cbmZ1bmN0aW9uIG5IYihhLGIsYyl7dmFyIGQ7aWYoYSl7ZD1hLmk7ZC5kPWI7ZC5hPWN9fVxuZnVuY3Rpb24gYzNjKGEsYixjKXthLmE9LTE7aTNjKGEsYi5nKzEsYyk7cmV0dXJuIGF9XG5mdW5jdGlvbiBEb2QoYSxiLGMpe2M9X2hkKGEsQkQoYiw0OSksNyxjKTtyZXR1cm4gY31cbmZ1bmN0aW9uIEpIZChhLGIsYyl7Yz1faGQoYSxCRChiLDQ5KSwzLGMpO3JldHVybiBjfVxuZnVuY3Rpb24gSk1kKGEsYixjKXt0aGlzLmE9YTtCTWQuY2FsbCh0aGlzLGIsYywyMil9XG5mdW5jdGlvbiBVVGQoYSxiLGMpe3RoaXMuYT1hO0JNZC5jYWxsKHRoaXMsYixjLDE0KX1cbmZ1bmN0aW9uIGVYZChhLGIsYyxkKXtVVmQoKTtuV2QuY2FsbCh0aGlzLGEsYixjLGQpfVxuZnVuY3Rpb24gbFhkKGEsYixjLGQpe1VWZCgpO25XZC5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiBGTmQoYSxiKXsoYi5CYiZvdGUpIT0wJiYhYS5hLm8mJihhLmEubz1iKX1cbmZ1bmN0aW9uIE1EKGEpe3JldHVybiBhIT1udWxsJiZPRChhKSYmIShhLmltPT09Z2NiKX1cbmZ1bmN0aW9uIElEKGEpe3JldHVybiAhQXJyYXkuaXNBcnJheShhKSYmYS5pbT09PWdjYn1cbmZ1bmN0aW9uIGVkKGEpe3JldHVybiBKRChhLDE1KT9CRChhLDE1KS5ZYygpOmEuS2MoKX1cbmZ1bmN0aW9uIERlKGEpe3JldHVybiBhLlFjKEtDKFNJLFVoZSwxLGEuZ2MoKSw1LDEpKX1cbmZ1bmN0aW9uIHUxZChhLGIpe3JldHVybiBXMWQocDFkKGEsYikpP2IuUWgoKTpudWxsfVxuZnVuY3Rpb24gdXZkKGEpe2E/VHkoYSwoWmZiKCksWWZiKSwnJyk6KFpmYigpLFlmYil9XG5mdW5jdGlvbiBTcihhKXt0aGlzLmE9KE1yKCksTHIpO3RoaXMuZD1CRChRYihhKSw0Nyl9XG5mdW5jdGlvbiBxZyhhLGIsYyxkKXt0aGlzLmE9YTtkZy5jYWxsKHRoaXMsYSxiLGMsZCl9XG5mdW5jdGlvbiBZZ2UoYSl7WGdlKCk7dGhpcy5hPTA7dGhpcy5iPWEtMTt0aGlzLmM9MX1cbmZ1bmN0aW9uIFl5KGEpe1B5KHRoaXMpO3RoaXMuZz1hO1J5KHRoaXMpO3RoaXMuX2QoKX1cbmZ1bmN0aW9uIFdtKGEpe2lmKGEuYyl7cmV0dXJuIGEuY31yZXR1cm4gYS5jPWEuSWQoKX1cbmZ1bmN0aW9uIFhtKGEpe2lmKGEuZCl7cmV0dXJuIGEuZH1yZXR1cm4gYS5kPWEuSmQoKX1cbmZ1bmN0aW9uIFJsKGEpe3ZhciBiO2I9YS5jO3JldHVybiAhYj8oYS5jPWEuRGQoKSk6Yn1cbmZ1bmN0aW9uIGZlKGEpe3ZhciBiO2I9YS5mO3JldHVybiAhYj8oYS5mPWEuRGMoKSk6Yn1cbmZ1bmN0aW9uIEVjKGEpe3ZhciBiO2I9YS5pO3JldHVybiAhYj8oYS5pPWEuYmMoKSk6Yn1cbmZ1bmN0aW9uIEZmZShhKXt3ZmUoKTsrK3ZmZTtyZXR1cm4gbmV3IEhnZSgxMCxhLDApfVxuZnVuY3Rpb24gVWJiKGEpe2lmKEZiYihhKSl7cmV0dXJuICcnK2F9cmV0dXJuIHFEKGEpfVxuZnVuY3Rpb24gYTRkKGEpe2lmKGEuZS5qIT1hLmQpe3Rocm93IHZiYihuZXcgQXBiKX19XG5mdW5jdGlvbiBOYmIoYSxiKXtyZXR1cm4gemJiKGtEKEZiYihhKT9SYmIoYSk6YSxiKSl9XG5mdW5jdGlvbiBPYmIoYSxiKXtyZXR1cm4gemJiKGxEKEZiYihhKT9SYmIoYSk6YSxiKSl9XG5mdW5jdGlvbiBQYmIoYSxiKXtyZXR1cm4gemJiKG1EKEZiYihhKT9SYmIoYSk6YSxiKSl9XG5mdW5jdGlvbiBEY2IoYSxiKXtyZXR1cm4gRWNiKCh1Q2IoYSksYSksKHVDYihiKSxiKSl9XG5mdW5jdGlvbiBEZGIoYSxiKXtyZXR1cm4gS2RiKCh1Q2IoYSksYSksKHVDYihiKSxiKSl9XG5mdW5jdGlvbiBmeChhLGIpe3JldHVybiBRYihiKSxhLmEuQWQoYikmJiFhLmIuQWQoYil9XG5mdW5jdGlvbiBkRChhLGIpe3JldHVybiBUQyhhLmwmYi5sLGEubSZiLm0sYS5oJmIuaCl9XG5mdW5jdGlvbiBqRChhLGIpe3JldHVybiBUQyhhLmx8Yi5sLGEubXxiLm0sYS5ofGIuaCl9XG5mdW5jdGlvbiByRChhLGIpe3JldHVybiBUQyhhLmxeYi5sLGEubV5iLm0sYS5oXmIuaCl9XG5mdW5jdGlvbiBRQWIoYSxiKXtyZXR1cm4gVEFiKGEsKHVDYihiKSxuZXcgUnhiKGIpKSl9XG5mdW5jdGlvbiBSQWIoYSxiKXtyZXR1cm4gVEFiKGEsKHVDYihiKSxuZXcgVHhiKGIpKSl9XG5mdW5jdGlvbiBnMWIoYSl7cmV0dXJuIHowYigpLEJEKGEsMTEpLmUuYy5sZW5ndGghPTB9XG5mdW5jdGlvbiBsMWIoYSl7cmV0dXJuIHowYigpLEJEKGEsMTEpLmcuYy5sZW5ndGghPTB9XG5mdW5jdGlvbiBiYWMoYSxiKXtJOWIoKTtyZXR1cm4gS2RiKGIuYS5vLmEsYS5hLm8uYSl9XG5mdW5jdGlvbiBSbmMoYSxiLGMpe3JldHVybiBTbmMoYSxCRChiLDExKSxCRChjLDExKSl9XG5mdW5jdGlvbiBrb2MoYSl7aWYoYS5lKXtyZXR1cm4gcG9jKGEuZSl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBJdWIoYSl7aWYoIWEuZCl7YS5kPWEuYi5LYygpO2EuYz1hLmIuZ2MoKX19XG5mdW5jdGlvbiBwQmIoYSxiLGMpe2lmKGEuYS5NYihjKSl7YS5iPXRydWU7Yi50ZChjKX19XG5mdW5jdGlvbiBfdmIoYSxiKXtpZihhPDB8fGE+PWIpe3Rocm93IHZiYihuZXcgcmNiKX19XG5mdW5jdGlvbiBQeWIoYSxiLGMpe05DKGIsMCxCemIoYlswXSxjWzBdKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBfeWMoYSxiLGMpe2IuWWUoYyxFZGIoRUQoT2hiKGEuYixjKSkpKmEuYSl9XG5mdW5jdGlvbiBuNmMoYSxiLGMpe2k2YygpO3JldHVybiBtNmMoYSxiKSYmbTZjKGEsYyl9XG5mdW5jdGlvbiB0Y2QoYSl7cmNkKCk7cmV0dXJuICFhLkhjKG5jZCkmJiFhLkhjKHBjZCl9XG5mdW5jdGlvbiBENmMoYSl7cmV0dXJuIG5ldyBmN2MoYS5jK2EuYi8yLGEuZCthLmEvMil9XG5mdW5jdGlvbiBvT2QoYSxiKXtyZXR1cm4gYi5raCgpP3hpZChhLmIsQkQoYiw0OSkpOmJ9XG5mdW5jdGlvbiBidmIoYSxiKXt0aGlzLmU9YTt0aGlzLmQ9KGImNjQpIT0wP2J8b2llOmJ9XG5mdW5jdGlvbiBxdmIoYSxiKXt0aGlzLmM9MDt0aGlzLmQ9YTt0aGlzLmI9Ynw2NHxvaWV9XG5mdW5jdGlvbiBndWIoYSl7dGhpcy5iPW5ldyBTa2IoMTEpO3RoaXMuYT0oaXBiKCksYSl9XG5mdW5jdGlvbiBRd2IoYSl7dGhpcy5iPW51bGw7dGhpcy5hPShpcGIoKSwhYT9mcGI6YSl9XG5mdW5jdGlvbiBuSGMoYSl7dGhpcy5hPWxIYyhhLmEpO3RoaXMuYj1uZXcgVGtiKGEuYil9XG5mdW5jdGlvbiBQemQoYSl7dGhpcy5iPWE7T3lkLmNhbGwodGhpcyxhKTtPemQodGhpcyl9XG5mdW5jdGlvbiBYemQoYSl7dGhpcy5iPWE7YnpkLmNhbGwodGhpcyxhKTtXemQodGhpcyl9XG5mdW5jdGlvbiBqVWQoYSxiLGMpe3RoaXMuYT1hO2dVZC5jYWxsKHRoaXMsYixjLDUsNil9XG5mdW5jdGlvbiBZNWQoYSxiLGMsZCl7dGhpcy5iPWE7eE1kLmNhbGwodGhpcyxiLGMsZCl9XG5mdW5jdGlvbiBuU2QoYSxiLGMsZCxlKXtvU2QuY2FsbCh0aGlzLGEsYixjLGQsZSwtMSl9XG5mdW5jdGlvbiBEU2QoYSxiLGMsZCxlKXtFU2QuY2FsbCh0aGlzLGEsYixjLGQsZSwtMSl9XG5mdW5jdGlvbiBjVWQoYSxiLGMsZCl7eE1kLmNhbGwodGhpcyxhLGIsYyk7dGhpcy5iPWR9XG5mdW5jdGlvbiBpNWQoYSxiLGMsZCl7cE1kLmNhbGwodGhpcyxhLGIsYyk7dGhpcy5iPWR9XG5mdW5jdGlvbiB4MGQoYSl7V3VkLmNhbGwodGhpcyxhLGZhbHNlKTt0aGlzLmE9ZmFsc2V9XG5mdW5jdGlvbiBMaihhLGIpe3RoaXMuYj1hO3NqLmNhbGwodGhpcyxhLmIpO3RoaXMuYT1ifVxuZnVuY3Rpb24gcHgoYSxiKXtpbSgpO294LmNhbGwodGhpcyxhLERtKG5ldyBhbWIoYikpKX1cbmZ1bmN0aW9uIENmZShhLGIpe3dmZSgpOysrdmZlO3JldHVybiBuZXcgRGdlKGEsYiwwKX1cbmZ1bmN0aW9uIEVmZShhLGIpe3dmZSgpOysrdmZlO3JldHVybiBuZXcgRGdlKDYsYSxiKX1cbmZ1bmN0aW9uIG5mYihhLGIpe3JldHVybiBkZmIoYS5zdWJzdHIoMCxiLmxlbmd0aCksYil9XG5mdW5jdGlvbiBNaGIoYSxiKXtyZXR1cm4gTkQoYik/UWhiKGEsYik6ISFpcmIoYS5mLGIpfVxuZnVuY3Rpb24gUnJiKGEsYil7dUNiKGIpO3doaWxlKGEuT2IoKSl7Yi50ZChhLlBiKCkpfX1cbmZ1bmN0aW9uIFZnYihhLGIsYyl7SGdiKCk7dGhpcy5lPWE7dGhpcy5kPWI7dGhpcy5hPWN9XG5mdW5jdGlvbiBhbWMoYSxiLGMsZCl7dmFyIGU7ZT1hLmk7ZS5pPWI7ZS5hPWM7ZS5iPWR9XG5mdW5jdGlvbiB4SmMoYSl7dmFyIGI7Yj1hO3doaWxlKGIuZil7Yj1iLmZ9cmV0dXJuIGJ9XG5mdW5jdGlvbiBma2IoYSl7dmFyIGI7Yj1ia2IoYSk7c0NiKGIhPW51bGwpO3JldHVybiBifVxuZnVuY3Rpb24gZ2tiKGEpe3ZhciBiO2I9Y2tiKGEpO3NDYihiIT1udWxsKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGN2KGEsYil7dmFyIGM7Yz1hLmEuZ2MoKTtTYihiLGMpO3JldHVybiBjLWJ9XG5mdW5jdGlvbiBHbGIoYSxiKXt2YXIgYztmb3IoYz0wO2M8YjsrK2Mpe2FbY109ZmFsc2V9fVxuZnVuY3Rpb24gQ2xiKGEsYixjLGQpe3ZhciBlO2ZvcihlPWI7ZTxjOysrZSl7YVtlXT1kfX1cbmZ1bmN0aW9uIHlsYihhLGIsYyxkKXtvQ2IoYixjLGEubGVuZ3RoKTtDbGIoYSxiLGMsZCl9XG5mdW5jdGlvbiBWdmIoYSxiLGMpe192YihjLGEuYS5jLmxlbmd0aCk7TmtiKGEuYSxjLGIpfVxuZnVuY3Rpb24gTHliKGEsYixjKXt0aGlzLmM9YTt0aGlzLmE9YjttbWIoKTt0aGlzLmI9Y31cbmZ1bmN0aW9uIFFwYihhLGIsYyl7dmFyIGQ7ZD1hLmJbYl07YS5iW2JdPWM7cmV0dXJuIGR9XG5mdW5jdGlvbiBRcWIoYSxiKXt2YXIgYztjPWEuYS56YyhiLGEpO3JldHVybiBjPT1udWxsfVxuZnVuY3Rpb24gempiKGEpe2lmKCFhKXt0aHJvdyB2YmIobmV3IHV0Yil9cmV0dXJuIGEuZH1cbmZ1bmN0aW9uIHZDYihhLGIpe2lmKGE9PW51bGwpe3Rocm93IHZiYihuZXcgSGViKGIpKX19XG5mdW5jdGlvbiBHb2MoYSxiKXtpZighYil7cmV0dXJuIGZhbHNlfXJldHVybiB5ZShhLGIpfVxuZnVuY3Rpb24gSzJjKGEsYixjKXtDMmMoYSxiLmcsYyk7cnFiKGEuYyxiKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHZWYihhKXt0VmIoYSwoZWFkKCksYWFkKSk7YS5kPXRydWU7cmV0dXJuIGF9XG5mdW5jdGlvbiBjMmQoYSl7IWEuaiYmaTJkKGEsZDFkKGEuZyxhLmIpKTtyZXR1cm4gYS5qfVxuZnVuY3Rpb24gbmxiKGEpe3lDYihhLmIhPS0xKTtLa2IoYS5jLGEuYT1hLmIpO2EuYj0tMX1cbmZ1bmN0aW9uIFVoYihhKXthLmY9bmV3IGxyYihhKTthLmc9bmV3IEZyYihhKTt6cGIoYSl9XG5mdW5jdGlvbiBQbGIoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxPbGIoYSxhLmxlbmd0aCkpfVxuZnVuY3Rpb24gdWwoYSl7cmV0dXJuIG5ldyBTcihuZXcgeGwoYS5hLmxlbmd0aCxhLmEpKX1cbmZ1bmN0aW9uIGlEKGEpe3JldHVybiBUQyh+YS5sJkVqZSx+YS5tJkVqZSx+YS5oJkZqZSl9XG5mdW5jdGlvbiBPRChhKXtyZXR1cm4gdHlwZW9mIGE9PT1KaGV8fHR5cGVvZiBhPT09TmhlfVxuZnVuY3Rpb24gRDlkKGEpe3JldHVybiBhPT1QamU/TndlOmE9PVFqZT8nLUlORic6JycrYX1cbmZ1bmN0aW9uIEY5ZChhKXtyZXR1cm4gYT09UGplP053ZTphPT1RamU/Jy1JTkYnOicnK2F9XG5mdW5jdGlvbiB5UmIoYSxiKXtyZXR1cm4gYT4wPyR3bmQuTWF0aC5sb2coYS9iKTotMTAwfVxuZnVuY3Rpb24gdWViKGEsYil7cmV0dXJuIHliYihhLGIpPDA/LTE6eWJiKGEsYik+MD8xOjB9XG5mdW5jdGlvbiBITWIoYSxiLGMpe3JldHVybiBJTWIoYSxCRChiLDQ2KSxCRChjLDE2NykpfVxuZnVuY3Rpb24gaXEoYSxiKXtyZXR1cm4gQkQoUmwoV20oYS5hKSkuWGIoYiksNDIpLmNkKCl9XG5mdW5jdGlvbiBPbGIoYSxiKXtyZXR1cm4gYXZiKGIsYS5sZW5ndGgpLG5ldyB2dmIoYSxiKX1cbmZ1bmN0aW9uIFB5ZChhLGIpe3RoaXMuZD1hO0Z5ZC5jYWxsKHRoaXMsYSk7dGhpcy5lPWJ9XG5mdW5jdGlvbiBMdWIoYSl7dGhpcy5kPSh1Q2IoYSksYSk7dGhpcy5hPTA7dGhpcy5jPXJpZX1cbmZ1bmN0aW9uIHJnZShhLGIpe3hmZS5jYWxsKHRoaXMsMSk7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBSemIoYSxiKXshYS5jP0VrYihhLmIsYik6UnpiKGEuYyxiKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHVCKGEsYixjKXt2YXIgZDtkPXRCKGEsYik7dkIoYSxiLGMpO3JldHVybiBkfVxuZnVuY3Rpb24gWkJiKGEsYil7dmFyIGM7Yz1hLnNsaWNlKDAsYik7cmV0dXJuIFBDKGMsYSl9XG5mdW5jdGlvbiBGbGIoYSxiLGMpe3ZhciBkO2ZvcihkPTA7ZDxiOysrZCl7TkMoYSxkLGMpfX1cbmZ1bmN0aW9uIGZmYihhLGIsYyxkLGUpe3doaWxlKGI8Yyl7ZFtlKytdPWJmYihhLGIrKyl9fVxuZnVuY3Rpb24gaExiKGEsYil7cmV0dXJuIEtkYihhLmMuYythLmMuYixiLmMuYytiLmMuYil9XG5mdW5jdGlvbiBBeGIoYSxiKXtyZXR1cm4gSXdiKGEuYSxiLChCY2IoKSx6Y2IpKT09bnVsbH1cbmZ1bmN0aW9uIFZzYihhLGIpe0dzYihhLmQsYixhLmIuYixhLmIpOysrYS5hO2EuYz1udWxsfVxuZnVuY3Rpb24gZDNkKGEsYil7SkxkKGEsSkQoYiwxNTMpP2I6QkQoYiwxOTM3KS5nbCgpKX1cbmZ1bmN0aW9uIGhrYyhhLGIpe01BYihOQWIoYS5PYygpLG5ldyBSa2MpLG5ldyBUa2MoYikpfVxuZnVuY3Rpb24ga2tjKGEsYixjLGQsZSl7amtjKGEsQkQoUWMoYi5rLGMpLDE1KSxjLGQsZSl9XG5mdW5jdGlvbiBsT2MoYSl7YS5zPU5hTjthLmM9TmFOO21PYyhhLGEuZSk7bU9jKGEsYS5qKX1cbmZ1bmN0aW9uIGl0KGEpe2EuYT1udWxsO2EuZT1udWxsO1VoYihhLmIpO2EuZD0wOysrYS5jfVxuZnVuY3Rpb24gZ0tjKGEpe3JldHVybiAkd25kLk1hdGguYWJzKGEuZC5lLWEuZS5lKS1hLmF9XG5mdW5jdGlvbiBNQWQoYSxiLGMpe3JldHVybiBCRChhLmMuX2MoYixCRChjLDEzMykpLDQyKX1cbmZ1bmN0aW9uIG9zKCl7aHMoKTtyZXR1cm4gT0MoR0MoeUcsMSksS2llLDUzOCwwLFtnc10pfVxuZnVuY3Rpb24gVlBiKGEpe1FQYigpO3JldHVybiBYb2QoanRkKGEpKT09WG9kKGx0ZChhKSl9XG5mdW5jdGlvbiBhUmIoYSl7X1FiLmNhbGwodGhpcyk7dGhpcy5hPWE7RWtiKGEuYSx0aGlzKX1cbmZ1bmN0aW9uIHRQYyhhLGIpe3RoaXMuZD1EUGMoYSk7dGhpcy5jPWI7dGhpcy5hPTAuNSpifVxuZnVuY3Rpb24gQTZkKCl7JHJiLmNhbGwodGhpcyk7dGhpcy5hPXRydWU7dGhpcy5iPXRydWV9XG5mdW5jdGlvbiBhTGQoYSl7cmV0dXJuIChhLmk9PW51bGwmJlRLZChhKSxhLmkpLmxlbmd0aH1cbmZ1bmN0aW9uIG9SZChhKXtyZXR1cm4gSkQoYSw5OSkmJihCRChhLDE4KS5CYiZvdGUpIT0wfVxuZnVuY3Rpb24gdzJkKGEsYil7KythLmo7dDNkKGEsYS5pLGIpO3YyZChhLEJEKGIsMzMyKSl9XG5mdW5jdGlvbiB2SWQoYSxiKXtiPWEubmsobnVsbCxiKTtyZXR1cm4gdUlkKGEsbnVsbCxiKX1cbmZ1bmN0aW9uIHl0ZChhLGIpe2EuaGkoKSYmKGI9RHRkKGEsYikpO3JldHVybiBhLldoKGIpfVxuZnVuY3Rpb24gbWRiKGEsYixjKXt2YXIgZDtkPWxkYihhLGIpO3pkYihjLGQpO3JldHVybiBkfVxuZnVuY3Rpb24gbGRiKGEsYil7dmFyIGM7Yz1uZXcgamRiO2Muaj1hO2MuZD1iO3JldHVybiBjfVxuZnVuY3Rpb24gUWIoYSl7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBHZWIpfXJldHVybiBhfVxuZnVuY3Rpb24gRmMoYSl7dmFyIGI7Yj1hLmo7cmV0dXJuICFiPyhhLmo9bmV3IEN3KGEpKTpifVxuZnVuY3Rpb24gVmkoYSl7dmFyIGI7Yj1hLmY7cmV0dXJuICFiPyhhLmY9bmV3IFJqKGEpKTpifVxuZnVuY3Rpb24gY2koYSl7dmFyIGI7cmV0dXJuIGI9YS5rLCFiPyhhLms9bmV3IHRoKGEpKTpifVxuZnVuY3Rpb24gVWMoYSl7dmFyIGI7cmV0dXJuIGI9YS5rLCFiPyhhLms9bmV3IHRoKGEpKTpifVxuZnVuY3Rpb24gUGMoYSl7dmFyIGI7cmV0dXJuIGI9YS5nLCFiPyhhLmc9bmV3IGxoKGEpKTpifVxuZnVuY3Rpb24gWWkoYSl7dmFyIGI7cmV0dXJuIGI9YS5pLCFiPyhhLmk9bmV3IENpKGEpKTpifVxuZnVuY3Rpb24gcW8oYSl7dmFyIGI7Yj1hLmQ7cmV0dXJuICFiPyhhLmQ9bmV3IGFwKGEpKTpifVxuZnVuY3Rpb24gRmIoYSl7UWIoYSk7cmV0dXJuIEpEKGEsNDc1KT9CRChhLDQ3NSk6ZmNiKGEpfVxuZnVuY3Rpb24gSXgoYSl7aWYoSkQoYSw2MDcpKXtyZXR1cm4gYX1yZXR1cm4gbmV3IGJ5KGEpfVxuZnVuY3Rpb24gcWooYSxiKXtQYihiLGEuYy5iLmMuZ2MoKSk7cmV0dXJuIG5ldyBGaihhLGIpfVxuZnVuY3Rpb24gRGZlKGEsYixjKXt3ZmUoKTsrK3ZmZTtyZXR1cm4gbmV3IHpnZShhLGIsYyl9XG5mdW5jdGlvbiBOQyhhLGIsYyl7cUNiKGM9PW51bGx8fEZDKGEsYykpO3JldHVybiBhW2JdPWN9XG5mdW5jdGlvbiBidihhLGIpe3ZhciBjO2M9YS5hLmdjKCk7UGIoYixjKTtyZXR1cm4gYy0xLWJ9XG5mdW5jdGlvbiBBZmIoYSxiKXthLmErPVN0cmluZy5mcm9tQ2hhckNvZGUoYik7cmV0dXJuIGF9XG5mdW5jdGlvbiBLZmIoYSxiKXthLmErPVN0cmluZy5mcm9tQ2hhckNvZGUoYik7cmV0dXJuIGF9XG5mdW5jdGlvbiBvdmIoYSxiKXt1Q2IoYik7d2hpbGUoYS5jPGEuZCl7YS56ZShiLGEuYysrKX19XG5mdW5jdGlvbiBPaGIoYSxiKXtyZXR1cm4gTkQoYik/UGhiKGEsYik6V2QoaXJiKGEuZixiKSl9XG5mdW5jdGlvbiBaUGIoYSxiKXtRUGIoKTtyZXR1cm4gYT09anRkKGIpP2x0ZChiKTpqdGQoYil9XG5mdW5jdGlvbiBpc2QoYSxiKXtRcGQoYSxuZXcgeUMoYi5mIT1udWxsP2IuZjonJytiLmcpKX1cbmZ1bmN0aW9uIGtzZChhLGIpe1FwZChhLG5ldyB5QyhiLmYhPW51bGw/Yi5mOicnK2IuZykpfVxuZnVuY3Rpb24gZFZiKGEpe3RoaXMuYj1uZXcgUmtiO3RoaXMuYT1uZXcgUmtiO3RoaXMuYz1hfVxuZnVuY3Rpb24gSDFiKGEpe3RoaXMuYz1uZXcgZDdjO3RoaXMuYT1uZXcgUmtiO3RoaXMuYj1hfVxuZnVuY3Rpb24gcFJiKGEpe19RYi5jYWxsKHRoaXMpO3RoaXMuYT1uZXcgZDdjO3RoaXMuYz1hfVxuZnVuY3Rpb24geUMoYSl7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBHZWIpfXRoaXMuYT1hfVxuZnVuY3Rpb24gSEEoYSl7ZkEoKTt0aGlzLmI9bmV3IFJrYjt0aGlzLmE9YTtzQSh0aGlzLGEpfVxuZnVuY3Rpb24gdjRjKGEpe3RoaXMuYz1hO3RoaXMuYT1uZXcgUHNiO3RoaXMuYj1uZXcgUHNifVxuZnVuY3Rpb24gR0IoKXtHQj1jY2I7RUI9bmV3IEhCKGZhbHNlKTtGQj1uZXcgSEIodHJ1ZSl9XG5mdW5jdGlvbiBpbSgpe2ltPWNjYjtRbCgpO2htPW5ldyB1eCgobW1iKCksbW1iKCksam1iKSl9XG5mdW5jdGlvbiB5eCgpe3l4PWNjYjtRbCgpO3h4PW5ldyB6eCgobW1iKCksbW1iKCksbG1iKSl9XG5mdW5jdGlvbiBORmQoKXtORmQ9Y2NiO01GZD1CWmQoKTshIShqR2QoKSxQRmQpJiZEWmQoKX1cbmZ1bmN0aW9uIGFhYyhhLGIpe0k5YigpO3JldHVybiBCRChNcGIoYSxiLmQpLDE1KS5GYyhiKX1cbmZ1bmN0aW9uIHBUYihhLGIsYyxkKXtyZXR1cm4gYz09MHx8KGMtZCkvYzxhLmV8fGI+PWEuZ31cbmZ1bmN0aW9uIE5IYyhhLGIsYyl7dmFyIGQ7ZD1USGMoYSxiLGMpO3JldHVybiBNSGMoYSxkKX1cbmZ1bmN0aW9uIFFwZChhLGIpe3ZhciBjO2M9YS5hLmxlbmd0aDt0QihhLGMpO3ZCKGEsYyxiKX1cbmZ1bmN0aW9uIGdDYihhLGIpe3ZhciBjO2M9Y29uc29sZVthXTtjLmNhbGwoY29uc29sZSxiKX1cbmZ1bmN0aW9uIEJ2ZChhLGIpe3ZhciBjOysrYS5qO2M9YS5WaSgpO2EuSWkoYS5vaShjLGIpKX1cbmZ1bmN0aW9uIEUxYyhhLGIsYyl7QkQoYi5iLDY1KTtIa2IoYi5hLG5ldyBMMWMoYSxjLGIpKX1cbmZ1bmN0aW9uIG9YZChhLGIsYyl7VlZkLmNhbGwodGhpcyxiKTt0aGlzLmE9YTt0aGlzLmI9Y31cbmZ1bmN0aW9uIERnZShhLGIsYyl7eGZlLmNhbGwodGhpcyxhKTt0aGlzLmE9Yjt0aGlzLmI9Y31cbmZ1bmN0aW9uIGRZZChhLGIsYyl7dGhpcy5hPWE7bFZkLmNhbGwodGhpcyxiKTt0aGlzLmI9Y31cbmZ1bmN0aW9uIGYwZChhLGIsYyl7dGhpcy5hPWE7bXhkLmNhbGwodGhpcyw4LGIsbnVsbCxjKX1cbmZ1bmN0aW9uIHoxZChhKXt0aGlzLmE9KHVDYihSdmUpLFJ2ZSk7dGhpcy5iPWE7bmV3IG9VZH1cbmZ1bmN0aW9uIGN0KGEpe3RoaXMuYz1hO3RoaXMuYj10aGlzLmMuYTt0aGlzLmE9dGhpcy5jLmV9XG5mdW5jdGlvbiB1c2IoYSl7dGhpcy5jPWE7dGhpcy5iPWEuYS5kLmE7eXBiKGEuYS5lLHRoaXMpfVxuZnVuY3Rpb24gdWliKGEpe3lDYihhLmMhPS0xKTthLmQuJGMoYS5jKTthLmI9YS5jO2EuYz0tMX1cbmZ1bmN0aW9uIFU2YyhhKXtyZXR1cm4gJHduZC5NYXRoLnNxcnQoYS5hKmEuYSthLmIqYS5iKX1cbmZ1bmN0aW9uIFV2YihhLGIpe3JldHVybiBfdmIoYixhLmEuYy5sZW5ndGgpLElrYihhLmEsYil9XG5mdW5jdGlvbiBIYihhLGIpe3JldHVybiBQRChhKT09PVBEKGIpfHxhIT1udWxsJiZwYihhLGIpfVxuZnVuY3Rpb24gb0FiKGEpe2lmKDA+PWEpe3JldHVybiBuZXcgeUFifXJldHVybiBwQWIoYS0xKX1cbmZ1bmN0aW9uIE5mZShhKXtpZighYmZlKXJldHVybiBmYWxzZTtyZXR1cm4gUWhiKGJmZSxhKX1cbmZ1bmN0aW9uIEVoZShhKXtpZihhKXJldHVybiBhLmRjKCk7cmV0dXJuICFhLktjKCkuT2IoKX1cbmZ1bmN0aW9uIFFfYihhKXtpZighYS5hJiYhIWEuYyl7cmV0dXJuIGEuYy5ifXJldHVybiBhLmF9XG5mdW5jdGlvbiBMSGQoYSl7IWEuYSYmKGEuYT1uZXcgeE1kKG01LGEsNCkpO3JldHVybiBhLmF9XG5mdW5jdGlvbiBMUWQoYSl7IWEuZCYmKGEuZD1uZXcgeE1kKGo1LGEsMSkpO3JldHVybiBhLmR9XG5mdW5jdGlvbiB1Q2IoYSl7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBHZWIpfXJldHVybiBhfVxuZnVuY3Rpb24gUXpiKGEpe2lmKCFhLmMpe2EuZD10cnVlO1N6YihhKX1lbHNle2EuYy5IZSgpfX1cbmZ1bmN0aW9uIFR6YihhKXtpZighYS5jKXtVemIoYSk7YS5kPXRydWV9ZWxzZXtUemIoYS5jKX19XG5mdW5jdGlvbiBLcGIoYSl7QWUoYS5hKTthLmI9S0MoU0ksVWhlLDEsYS5iLmxlbmd0aCw1LDEpfVxuZnVuY3Rpb24gcWxjKGEsYil7cmV0dXJuIGJlYihiLmouYy5sZW5ndGgsYS5qLmMubGVuZ3RoKX1cbmZ1bmN0aW9uIGlnZChhLGIpe2EuYzwwfHxhLmIuYjxhLmM/RnNiKGEuYixiKTphLmEuX2UoYil9XG5mdW5jdGlvbiBEaWQoYSxiKXt2YXIgYztjPWEuWWcoYik7Yz49MD9hLkJoKGMpOnZpZChhLGIpfVxuZnVuY3Rpb24gV0hjKGEpe3ZhciBiLGM7Yj1hLmMuaS5jO2M9YS5kLmkuYztyZXR1cm4gYj09Y31cbmZ1bmN0aW9uIFd3ZChhKXtpZihhLnAhPTQpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBhLmV9XG5mdW5jdGlvbiBWd2QoYSl7aWYoYS5wIT0zKXRocm93IHZiYihuZXcgWWRiKTtyZXR1cm4gYS5lfVxuZnVuY3Rpb24gWXdkKGEpe2lmKGEucCE9Nil0aHJvdyB2YmIobmV3IFlkYik7cmV0dXJuIGEuZn1cbmZ1bmN0aW9uIGZ4ZChhKXtpZihhLnAhPTYpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBhLmt9XG5mdW5jdGlvbiBjeGQoYSl7aWYoYS5wIT0zKXRocm93IHZiYihuZXcgWWRiKTtyZXR1cm4gYS5qfVxuZnVuY3Rpb24gZHhkKGEpe2lmKGEucCE9NCl0aHJvdyB2YmIobmV3IFlkYik7cmV0dXJuIGEuan1cbmZ1bmN0aW9uIEFZZChhKXshYS5iJiYoYS5iPW5ldyBSWWQobmV3IE5ZZCkpO3JldHVybiBhLmJ9XG5mdW5jdGlvbiAkMWQoYSl7YS5jPT0tMiYmZTJkKGEsWDBkKGEuZyxhLmIpKTtyZXR1cm4gYS5jfVxuZnVuY3Rpb24gcGRiKGEsYil7dmFyIGM7Yz1sZGIoJycsYSk7Yy5uPWI7Yy5pPTE7cmV0dXJuIGN9XG5mdW5jdGlvbiBNTmIoYSxiKXskTmIoQkQoYi5iLDY1KSxhKTtIa2IoYi5hLG5ldyBSTmIoYSkpfVxuZnVuY3Rpb24gQ25kKGEsYil7d3RkKCghYS5hJiYoYS5hPW5ldyBmVGQoYSxhKSksYS5hKSxiKX1cbmZ1bmN0aW9uIFF6ZChhLGIpe3RoaXMuYj1hO1B5ZC5jYWxsKHRoaXMsYSxiKTtPemQodGhpcyl9XG5mdW5jdGlvbiBZemQoYSxiKXt0aGlzLmI9YTtjemQuY2FsbCh0aGlzLGEsYik7V3pkKHRoaXMpfVxuZnVuY3Rpb24gTXMoYSxiLGMsZCl7V28uY2FsbCh0aGlzLGEsYik7dGhpcy5kPWM7dGhpcy5hPWR9XG5mdW5jdGlvbiAkbyhhLGIsYyxkKXtXby5jYWxsKHRoaXMsYSxjKTt0aGlzLmE9Yjt0aGlzLmY9ZH1cbmZ1bmN0aW9uIGl5KGEsYil7UHAuY2FsbCh0aGlzLHVtYihRYihhKSxRYihiKSkpO3RoaXMuYT1ifVxuZnVuY3Rpb24gY2FlKCl7Zm9kLmNhbGwodGhpcyxFd2UsKHA4ZCgpLG84ZCkpOyQ5ZCh0aGlzKX1cbmZ1bmN0aW9uIEFaZCgpe2ZvZC5jYWxsKHRoaXMsX3ZlLChMRmQoKSxLRmQpKTt1WmQodGhpcyl9XG5mdW5jdGlvbiBUMGMoKXskci5jYWxsKHRoaXMsJ0RFTEFVTkFZX1RSSUFOR1VMQVRJT04nLDApfVxuZnVuY3Rpb24gdmZiKGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYSl9XG5mdW5jdGlvbiBSaGIoYSxiLGMpe3JldHVybiBORChiKT9TaGIoYSxiLGMpOmpyYihhLmYsYixjKX1cbmZ1bmN0aW9uIHRtYihhKXttbWIoKTtyZXR1cm4gIWE/KGlwYigpLGlwYigpLGhwYik6YS52ZSgpfVxuZnVuY3Rpb24gZDJjKGEsYixjKXtZMWMoKTtyZXR1cm4gYy5wZyhhLEJEKGIuY2QoKSwxNDYpKX1cbmZ1bmN0aW9uIGl4KGEsYil7ZXgoKTtyZXR1cm4gbmV3IGd4KG5ldyBpbChhKSxuZXcgVWsoYikpfVxuZnVuY3Rpb24gSXUoYSl7WGooYSxNaWUpO3JldHVybiBPeSh3YmIod2JiKDUsYSksYS8xMHwwKSl9XG5mdW5jdGlvbiBWbSgpe1ZtPWNjYjtVbT1uZXcgd3goT0MoR0MoQ0ssMSksemllLDQyLDAsW10pKX1cbmZ1bmN0aW9uIGhvYihhKXshYS5kJiYoYS5kPW5ldyBsbmIoYS5jLkNjKCkpKTtyZXR1cm4gYS5kfVxuZnVuY3Rpb24gZW9iKGEpeyFhLmEmJihhLmE9bmV3IEdvYihhLmMudmMoKSkpO3JldHVybiBhLmF9XG5mdW5jdGlvbiBnb2IoYSl7IWEuYiYmKGEuYj1uZXcgem9iKGEuYy5lYygpKSk7cmV0dXJuIGEuYn1cbmZ1bmN0aW9uIGtlYihhLGIpe3doaWxlKGItLT4wKXthPWE8PDF8KGE8MD8xOjApfXJldHVybiBhfVxuZnVuY3Rpb24gd3RiKGEsYil7cmV0dXJuIFBEKGEpPT09UEQoYil8fGEhPW51bGwmJnBiKGEsYil9XG5mdW5jdGlvbiBHYmMoYSxiKXtyZXR1cm4gQmNiKCksQkQoYi5iLDE5KS5hPGE/dHJ1ZTpmYWxzZX1cbmZ1bmN0aW9uIEhiYyhhLGIpe3JldHVybiBCY2IoKSxCRChiLmEsMTkpLmE8YT90cnVlOmZhbHNlfVxuZnVuY3Rpb24gTXBiKGEsYil7cmV0dXJuIHRxYihhLmEsYik/YS5iW0JEKGIsMjIpLmddOm51bGx9XG5mdW5jdGlvbiBrY2IoYSxiLGMsZCl7YS5hPXFmYihhLmEsMCxiKSsoJycrZCkrcGZiKGEuYSxjKX1cbmZ1bmN0aW9uIE9KYihhLGIpe2EudS5IYygocmNkKCksbmNkKSkmJk1KYihhLGIpO1FKYihhLGIpfVxuZnVuY3Rpb24gYmZiKGEsYil7QkNiKGIsYS5sZW5ndGgpO3JldHVybiBhLmNoYXJDb2RlQXQoYil9XG5mdW5jdGlvbiB2dGIoKXtoei5jYWxsKHRoaXMsJ1RoZXJlIGlzIG5vIG1vcmUgZWxlbWVudC4nKX1cbmZ1bmN0aW9uIHhrYihhKXt0aGlzLmQ9YTt0aGlzLmE9dGhpcy5kLmI7dGhpcy5iPXRoaXMuZC5jfVxuZnVuY3Rpb24ga0ViKGEpe2EuYj1mYWxzZTthLmM9ZmFsc2U7YS5kPWZhbHNlO2EuYT1mYWxzZX1cbmZ1bmN0aW9uIFpuZChhLGIsYyxkKXtZbmQoYSxiLGMsZmFsc2UpO0xQZChhLGQpO3JldHVybiBhfVxuZnVuY3Rpb24gaDNjKGEpe2Euai5jPUtDKFNJLFVoZSwxLDAsNSwxKTthLmE9LTE7cmV0dXJuIGF9XG5mdW5jdGlvbiBPbGQoYSl7IWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSk7cmV0dXJuIGEuY31cbmZ1bmN0aW9uIE5sZChhKXshYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKTtyZXR1cm4gYS5ifVxuZnVuY3Rpb24gS2tkKGEpeyFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpO3JldHVybiBhLm59XG5mdW5jdGlvbiBZb2QoYSl7IWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSk7cmV0dXJuIGEuY31cbmZ1bmN0aW9uIGEyZChhKXthLmU9PUd3ZSYmZzJkKGEsYTFkKGEuZyxhLmIpKTtyZXR1cm4gYS5lfVxuZnVuY3Rpb24gYjJkKGEpe2EuZj09R3dlJiZoMmQoYSxiMWQoYS5nLGEuYikpO3JldHVybiBhLmZ9XG5mdW5jdGlvbiBBaChhKXt2YXIgYjtiPWEuYjshYiYmKGEuYj1iPW5ldyBQaChhKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBZShhKXt2YXIgYjtmb3IoYj1hLktjKCk7Yi5PYigpOyl7Yi5QYigpO2IuUWIoKX19XG5mdW5jdGlvbiBGZyhhKXthZyhhLmQpO2lmKGEuZC5kIT1hLmMpe3Rocm93IHZiYihuZXcgQXBiKX19XG5mdW5jdGlvbiBYeChhLGIpe3RoaXMuYj1hO3RoaXMuYz1iO3RoaXMuYT1uZXcgR3FiKHRoaXMuYil9XG5mdW5jdGlvbiBaZWIoYSxiLGMpe3RoaXMuYT1aaWU7dGhpcy5kPWE7dGhpcy5iPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiBNdWIoYSxiKXt0aGlzLmQ9KHVDYihhKSxhKTt0aGlzLmE9MTY0NDk7dGhpcy5jPWJ9XG5mdW5jdGlvbiBucWQoYSxiKXtjdGQoYSxFZGIoWHBkKGIsJ3gnKSksRWRiKFhwZChiLCd5JykpKX1cbmZ1bmN0aW9uIEFxZChhLGIpe2N0ZChhLEVkYihYcGQoYiwneCcpKSxFZGIoWHBkKGIsJ3knKSkpfVxuZnVuY3Rpb24gSkFiKGEsYil7VXpiKGEpO3JldHVybiBuZXcgWUFiKGEsbmV3IHFCYihiLGEuYSkpfVxuZnVuY3Rpb24gTkFiKGEsYil7VXpiKGEpO3JldHVybiBuZXcgWUFiKGEsbmV3IElCYihiLGEuYSkpfVxuZnVuY3Rpb24gT0FiKGEsYil7VXpiKGEpO3JldHVybiBuZXcgYkFiKGEsbmV3IHdCYihiLGEuYSkpfVxuZnVuY3Rpb24gUEFiKGEsYil7VXpiKGEpO3JldHVybiBuZXcgdkFiKGEsbmV3IENCYihiLGEuYSkpfVxuZnVuY3Rpb24gQ3koYSxiKXtyZXR1cm4gbmV3IEF5KEJEKFFiKGEpLDYyKSxCRChRYihiKSw2MikpfVxuZnVuY3Rpb24gUFdiKGEsYil7TFdiKCk7cmV0dXJuIEtkYigodUNiKGEpLGEpLCh1Q2IoYiksYikpfVxuZnVuY3Rpb24gZlBiKCl7Y1BiKCk7cmV0dXJuIE9DKEdDKEdPLDEpLEtpZSw0ODEsMCxbYlBiXSl9XG5mdW5jdGlvbiBvX2MoKXtpX2MoKTtyZXR1cm4gT0MoR0MoTl8sMSksS2llLDQ4MiwwLFtoX2NdKX1cbmZ1bmN0aW9uIHhfYygpe3NfYygpO3JldHVybiBPQyhHQyhPXywxKSxLaWUsNTUxLDAsW3JfY10pfVxuZnVuY3Rpb24gWDBjKCl7UjBjKCk7cmV0dXJuIE9DKEdDKFdfLDEpLEtpZSw1MzAsMCxbUTBjXSl9XG5mdW5jdGlvbiBjRWMoYSl7dGhpcy5hPW5ldyBSa2I7dGhpcy5lPUtDKFdELG5pZSw0OCxhLDAsMil9XG5mdW5jdGlvbiBsJGIoYSxiLGMsZCl7dGhpcy5hPWE7dGhpcy5lPWI7dGhpcy5kPWM7dGhpcy5jPWR9XG5mdW5jdGlvbiBRSWMoYSxiLGMsZCl7dGhpcy5hPWE7dGhpcy5jPWI7dGhpcy5iPWM7dGhpcy5kPWR9XG5mdW5jdGlvbiByS2MoYSxiLGMsZCl7dGhpcy5jPWE7dGhpcy5iPWI7dGhpcy5hPWM7dGhpcy5kPWR9XG5mdW5jdGlvbiBXS2MoYSxiLGMsZCl7dGhpcy5jPWE7dGhpcy5iPWI7dGhpcy5kPWM7dGhpcy5hPWR9XG5mdW5jdGlvbiBKNmMoYSxiLGMsZCl7dGhpcy5jPWE7dGhpcy5kPWI7dGhpcy5iPWM7dGhpcy5hPWR9XG5mdW5jdGlvbiBnUGMoYSxiLGMsZCl7dGhpcy5hPWE7dGhpcy5kPWI7dGhpcy5jPWM7dGhpcy5iPWR9XG5mdW5jdGlvbiBCbGMoYSxiLGMsZCl7JHIuY2FsbCh0aGlzLGEsYik7dGhpcy5hPWM7dGhpcy5iPWR9XG5mdW5jdGlvbiBHZ2QoYSxiLGMsZCl7dGhpcy5hPWE7dGhpcy5jPWI7dGhpcy5kPWM7dGhpcy5iPWR9XG5mdW5jdGlvbiBwZWMoYSxiLGMpe1BtYyhhLmEsYyk7ZG1jKGMpO2VuYyhhLmIsYyk7eG1jKGIsYyl9XG5mdW5jdGlvbiBQaWQoYSxiLGMpe3ZhciBkLGU7ZD1RRWQoYSk7ZT1iLktoKGMsZCk7cmV0dXJuIGV9XG5mdW5jdGlvbiBLUGIoYSxiKXt2YXIgYyxkO2M9YS9iO2Q9UUQoYyk7Yz5kJiYrK2Q7cmV0dXJuIGR9XG5mdW5jdGlvbiBObmQoYSl7dmFyIGIsYztjPShiPW5ldyBVUWQsYik7TlFkKGMsYSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBPbmQoYSl7dmFyIGIsYztjPShiPW5ldyBVUWQsYik7UlFkKGMsYSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBocWQoYSxiKXt2YXIgYztjPU9oYihhLmYsYik7WXFkKGIsYyk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBKWmIoYSl7dmFyIGI7Yj1QMmIoYSk7aWYoYil7cmV0dXJuIGJ9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBXb2QoYSl7IWEuYiYmKGEuYj1uZXcgY1VkKEIyLGEsMTIsMykpO3JldHVybiBhLmJ9XG5mdW5jdGlvbiBZRWQoYSl7cmV0dXJuIGEhPW51bGwmJmhuYihHRWQsYS50b0xvd2VyQ2FzZSgpKX1cbmZ1bmN0aW9uIGllZChhLGIpe3JldHVybiBLZGIocmVkKGEpKnFlZChhKSxyZWQoYikqcWVkKGIpKX1cbmZ1bmN0aW9uIGplZChhLGIpe3JldHVybiBLZGIocmVkKGEpKnFlZChhKSxyZWQoYikqcWVkKGIpKX1cbmZ1bmN0aW9uIHdFYihhLGIpe3JldHVybiBLZGIoYS5kLmMrYS5kLmIvMixiLmQuYytiLmQuYi8yKX1cbmZ1bmN0aW9uIFVWYihhLGIpe3JldHVybiBLZGIoYS5nLmMrYS5nLmIvMixiLmcuYytiLmcuYi8yKX1cbmZ1bmN0aW9uIHBRYihhLGIsYyl7Yy5hP2VsZChhLGIuYi1hLmYvMik6ZGxkKGEsYi5hLWEuZy8yKX1cbmZ1bmN0aW9uIHByZChhLGIsYyxkKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Yzt0aGlzLmQ9ZH1cbmZ1bmN0aW9uIG9yZChhLGIsYyxkKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Yzt0aGlzLmQ9ZH1cbmZ1bmN0aW9uIEpWZChhLGIsYyxkKXt0aGlzLmU9YTt0aGlzLmE9Yjt0aGlzLmM9Yzt0aGlzLmQ9ZH1cbmZ1bmN0aW9uIFpWZChhLGIsYyxkKXt0aGlzLmE9YTt0aGlzLmM9Yjt0aGlzLmQ9Yzt0aGlzLmI9ZH1cbmZ1bmN0aW9uIGNYZChhLGIsYyxkKXtVVmQoKTttV2QuY2FsbCh0aGlzLGIsYyxkKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIGpYZChhLGIsYyxkKXtVVmQoKTttV2QuY2FsbCh0aGlzLGIsYyxkKTt0aGlzLmE9YX1cbmZ1bmN0aW9uIE5nKGEsYil7dGhpcy5hPWE7SGcuY2FsbCh0aGlzLGEsQkQoYS5kLDE1KS5aYyhiKSl9XG5mdW5jdGlvbiBaQmQoYSl7dGhpcy5mPWE7dGhpcy5jPXRoaXMuZi5lO2EuZj4wJiZZQmQodGhpcyl9XG5mdW5jdGlvbiBsQmIoYSxiLGMsZCl7dGhpcy5iPWE7dGhpcy5jPWQ7bnZiLmNhbGwodGhpcyxiLGMpfVxuZnVuY3Rpb24gdGliKGEpe3NDYihhLmI8YS5kLmdjKCkpO3JldHVybiBhLmQuWGIoYS5jPWEuYisrKX1cbmZ1bmN0aW9uIE9zYihhKXthLmEuYT1hLmM7YS5jLmI9YS5hO2EuYS5iPWEuYy5hPW51bGw7YS5iPTB9XG5mdW5jdGlvbiB1X2IoYSxiKXthLmI9Yi5iO2EuYz1iLmM7YS5kPWIuZDthLmE9Yi5hO3JldHVybiBhfVxuZnVuY3Rpb24gUnkoYSl7aWYoYS5uKXthLmUhPT1TaWUmJmEuX2QoKTthLmo9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIEZEKGEpe0NDYihhPT1udWxsfHxPRChhKSYmIShhLmltPT09Z2NiKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBwNGIoYSl7dGhpcy5iPW5ldyBSa2I7R2tiKHRoaXMuYix0aGlzLmIpO3RoaXMuYT1hfVxuZnVuY3Rpb24gUVBiKCl7UVBiPWNjYjtQUGI9bmV3IFJrYjtPUGI9bmV3IExxYjtOUGI9bmV3IFJrYn1cbmZ1bmN0aW9uIG1tYigpe21tYj1jY2I7am1iPW5ldyB4bWI7a21iPW5ldyBRbWI7bG1iPW5ldyBZbWJ9XG5mdW5jdGlvbiBpcGIoKXtpcGI9Y2NiO2ZwYj1uZXcga3BiO2dwYj1uZXcga3BiO2hwYj1uZXcgcHBifVxuZnVuY3Rpb24gT0RiKCl7T0RiPWNjYjtMRGI9bmV3IEpEYjtORGI9bmV3IG9FYjtNRGI9bmV3IGZFYn1cbmZ1bmN0aW9uIE1DYigpe2lmKEhDYj09MjU2KXtHQ2I9SUNiO0lDYj1uZXcgbmI7SENiPTB9KytIQ2J9XG5mdW5jdGlvbiBuZChhKXt2YXIgYjtyZXR1cm4gYj1hLmYsIWI/KGEuZj1uZXcgbmUoYSxhLmMpKTpifVxuZnVuY3Rpb24gZDJiKGEpe3JldHVybiBRbGQoYSkmJkNjYihERChoa2QoYSwoTnljKCksZ3hjKSkpKX1cbmZ1bmN0aW9uIG1jYyhhLGIpe3JldHVybiBSYyhhLEJEKHZOYihiLChOeWMoKSxOeGMpKSwxOSksYil9XG5mdW5jdGlvbiBQT2MoYSxiKXtyZXR1cm4gdlBjKGEuaixiLnMsYi5jKSt2UGMoYi5lLGEucyxhLmMpfVxuZnVuY3Rpb24gb29jKGEsYil7aWYoISFhLmUmJiFhLmUuYSl7bW9jKGEuZSxiKTtvb2MoYS5lLGIpfX1cbmZ1bmN0aW9uIG5vYyhhLGIpe2lmKCEhYS5kJiYhYS5kLmEpe21vYyhhLmQsYik7bm9jKGEuZCxiKX19XG5mdW5jdGlvbiBoZWQoYSxiKXtyZXR1cm4gLUtkYihyZWQoYSkqcWVkKGEpLHJlZChiKSpxZWQoYikpfVxuZnVuY3Rpb24gY2dkKGEpe3JldHVybiBCRChhLmNkKCksMTQ2KS50ZygpKyc6JytmY2IoYS5kZCgpKX1cbmZ1bmN0aW9uIFpnYyhhKXtIZ2MoKTt2YXIgYjtiPUJEKGEuZywxMCk7Yi5uLmE9YS5kLmMrYi5kLmJ9XG5mdW5jdGlvbiB3Z2MoYSxiLGMpe3FnYygpO3JldHVybiBpRWIoQkQoT2hiKGEuZSxiKSw1MjIpLGMpfVxuZnVuY3Rpb24gWTJjKGEsYil7cmIoYSk7cmIoYik7cmV0dXJuIFhyKEJEKGEsMjIpLEJEKGIsMjIpKX1cbmZ1bmN0aW9uIG9pYyhhLGIsYyl7YS5pPTA7YS5lPTA7aWYoYj09Yyl7cmV0dXJufWtpYyhhLGIsYyl9XG5mdW5jdGlvbiBwaWMoYSxiLGMpe2EuaT0wO2EuZT0wO2lmKGI9PWMpe3JldHVybn1saWMoYSxiLGMpfVxuZnVuY3Rpb24gU3BkKGEsYixjKXt2YXIgZCxlO2Q9S2NiKGMpO2U9bmV3IFRCKGQpO2NDKGEsYixlKX1cbmZ1bmN0aW9uIEZTZChhLGIsYyxkLGUsZil7RVNkLmNhbGwodGhpcyxhLGIsYyxkLGUsZj8tMjotMSl9XG5mdW5jdGlvbiBVNWQoYSxiLGMsZCl7TUxkLmNhbGwodGhpcyxiLGMpO3RoaXMuYj1hO3RoaXMuYT1kfVxuZnVuY3Rpb24gUVJjKGEsYil7bmV3IFBzYjt0aGlzLmE9bmV3IHM3Yzt0aGlzLmI9YTt0aGlzLmM9Yn1cbmZ1bmN0aW9uIEhlYyhhLGIpe0JEKHZOYihhLCh3dGMoKSxRc2MpKSwxNSkuRmMoYik7cmV0dXJuIGJ9XG5mdW5jdGlvbiBSYihhLGIpe2lmKGE9PW51bGwpe3Rocm93IHZiYihuZXcgSGViKGIpKX1yZXR1cm4gYX1cbmZ1bmN0aW9uIFdLZChhKXshYS5xJiYoYS5xPW5ldyBjVWQobjUsYSwxMSwxMCkpO3JldHVybiBhLnF9XG5mdW5jdGlvbiBaS2QoYSl7IWEucyYmKGEucz1uZXcgY1VkKHQ1LGEsMjEsMTcpKTtyZXR1cm4gYS5zfVxuZnVuY3Rpb24gVm9kKGEpeyFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSk7cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIER4KGEpe3JldHVybiBKRChhLDE0KT9uZXcgVnFiKEJEKGEsMTQpKTpFeChhLktjKCkpfVxuZnVuY3Rpb24gTmkoYSl7cmV0dXJuIG5ldyBhaihhLGEuZS5IZCgpLmdjKCkqYS5jLkhkKCkuZ2MoKSl9XG5mdW5jdGlvbiBaaShhKXtyZXR1cm4gbmV3IGtqKGEsYS5lLkhkKCkuZ2MoKSphLmMuSGQoKS5nYygpKX1cbmZ1bmN0aW9uIHJ6KGEpe3JldHVybiAhIWEmJiEhYS5oYXNoQ29kZT9hLmhhc2hDb2RlKCk6RkNiKGEpfVxuZnVuY3Rpb24gUWhiKGEsYil7cmV0dXJuIGI9PW51bGw/ISFpcmIoYS5mLG51bGwpOkJyYihhLmcsYil9XG5mdW5jdGlvbiBPcShhKXtRYihhKTtyZXR1cm4gbXIobmV3IFNyKHVyKGEuYS5LYygpLG5ldyBTcSkpKX1cbmZ1bmN0aW9uIHZtYihhKXttbWIoKTtyZXR1cm4gSkQoYSw1NCk/bmV3IFlvYihhKTpuZXcgSW5iKGEpfVxuZnVuY3Rpb24gVkRiKGEsYixjKXtpZihhLmYpe3JldHVybiBhLmYuTmUoYixjKX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBHZmIoYSxiKXthLmE9cWZiKGEuYSwwLGIpKycnK3BmYihhLmEsYisxKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIGZWYihhLGIpe3ZhciBjO2M9U3FiKGEuYSxiKTtjJiYoYi5kPW51bGwpO3JldHVybiBjfVxuZnVuY3Rpb24genBiKGEpe3ZhciBiLGM7Yz1hO2I9Yy4kbW9kQ291bnR8MDtjLiRtb2RDb3VudD1iKzF9XG5mdW5jdGlvbiBwdShhKXt0aGlzLmI9YTt0aGlzLmM9YTthLmU9bnVsbDthLmM9bnVsbDt0aGlzLmE9MX1cbmZ1bmN0aW9uIGhPYihhKXt0aGlzLmI9YTt0aGlzLmE9bmV3IEh4YihCRChRYihuZXcga09iKSw2MikpfVxuZnVuY3Rpb24gdUViKGEpe3RoaXMuYz1hO3RoaXMuYj1uZXcgSHhiKEJEKFFiKG5ldyB4RWIpLDYyKSl9XG5mdW5jdGlvbiBTVmIoYSl7dGhpcy5jPWE7dGhpcy5iPW5ldyBIeGIoQkQoUWIobmV3IFZWYiksNjIpKX1cbmZ1bmN0aW9uIEZZYigpe3RoaXMuYT1uZXcgSFhiO3RoaXMuYj1uZXcgTFhiO3RoaXMuZD1uZXcgU1lifVxuZnVuY3Rpb24gVVpiKCl7dGhpcy5hPW5ldyBzN2M7dGhpcy5iPShYaigzLEppZSksbmV3IFNrYigzKSl9XG5mdW5jdGlvbiBWTWMoKXt0aGlzLmI9bmV3IFRxYjt0aGlzLmQ9bmV3IFBzYjt0aGlzLmU9bmV3IHR3Yn1cbmZ1bmN0aW9uIEs2YyhhKXt0aGlzLmM9YS5jO3RoaXMuZD1hLmQ7dGhpcy5iPWEuYjt0aGlzLmE9YS5hfVxuZnVuY3Rpb24gQXkoYSxiKXtvaS5jYWxsKHRoaXMsbmV3IFF3YihhKSk7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBlb2QoKXtib2QodGhpcyxuZXcgJG1kKTt0aGlzLndiPShORmQoKSxNRmQpO0xGZCgpfVxuZnVuY3Rpb24gZUhjKGEpe09kZChhLCdObyBjcm9zc2luZyBtaW5pbWl6YXRpb24nLDEpO1FkZChhKX1cbmZ1bmN0aW9uIEd6KGEpe0F6KCk7JHduZC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYX0sMCl9XG5mdW5jdGlvbiBfS2QoYSl7aWYoIWEudSl7JEtkKGEpO2EudT1uZXcgWU9kKGEsYSl9cmV0dXJuIGEudX1cbmZ1bmN0aW9uIHdqZChhKXt2YXIgYjtiPUJEKEFqZChhLDE2KSwyNik7cmV0dXJuICFiP2EuemgoKTpifVxuZnVuY3Rpb24gSnNkKGEsYil7cmV0dXJuIEpEKGIsMTQ2KSYmZGZiKGEuYixCRChiLDE0NikudGcoKSl9XG5mdW5jdGlvbiB0MGQoYSxiKXtyZXR1cm4gYS5hP2IuV2coKS5LYygpOkJEKGIuV2coKSw2OSkuWmgoKX1cbmZ1bmN0aW9uIHUzYihhKXtyZXR1cm4gYS5rPT0oajBiKCksaDBiKSYmd05iKGEsKHd0YygpLENzYykpfVxuZnVuY3Rpb24gdXgoYSl7dGhpcy5hPShtbWIoKSxKRChhLDU0KT9uZXcgWW9iKGEpOm5ldyBJbmIoYSkpfVxuZnVuY3Rpb24gUnooKXtSej1jY2I7dmFyIGEsYjtiPSFYeigpO2E9bmV3IGRBO1F6PWI/bmV3IFl6OmF9XG5mdW5jdGlvbiBXeShhLGIpe3ZhciBjO2M9aGRiKGEuZ20pO3JldHVybiBiPT1udWxsP2M6YysnOiAnK2J9XG5mdW5jdGlvbiBFb2IoYSxiKXt2YXIgYztjPWEuYi5RYyhiKTtGb2IoYyxhLmIuZ2MoKSk7cmV0dXJuIGN9XG5mdW5jdGlvbiB5dGIoYSxiKXtpZihhPT1udWxsKXt0aHJvdyB2YmIobmV3IEhlYihiKSl9cmV0dXJuIGF9XG5mdW5jdGlvbiBpcmIoYSxiKXtyZXR1cm4gZ3JiKGEsYixocmIoYSxiPT1udWxsPzA6YS5iLnNlKGIpKSl9XG5mdW5jdGlvbiBvZmIoYSxiLGMpe3JldHVybiBjPj0wJiZkZmIoYS5zdWJzdHIoYyxiLmxlbmd0aCksYil9XG5mdW5jdGlvbiBIMmQoYSxiLGMsZCxlLGYsZyl7cmV0dXJuIG5ldyBPN2QoYS5lLGIsYyxkLGUsZixnKX1cbmZ1bmN0aW9uIEN4ZChhLGIsYyxkLGUsZil7dGhpcy5hPWE7bnhkLmNhbGwodGhpcyxiLGMsZCxlLGYpfVxuZnVuY3Rpb24gdnlkKGEsYixjLGQsZSxmKXt0aGlzLmE9YTtueGQuY2FsbCh0aGlzLGIsYyxkLGUsZil9XG5mdW5jdGlvbiAkRWMoYSxiKXt0aGlzLmc9YTt0aGlzLmQ9T0MoR0MoT1EsMSksa25lLDEwLDAsW2JdKX1cbmZ1bmN0aW9uIEtWZChhLGIpe3RoaXMuZT1hO3RoaXMuYT1TSTt0aGlzLmI9UjVkKGIpO3RoaXMuYz1ifVxuZnVuY3Rpb24gY0liKGEsYil7JEdiLmNhbGwodGhpcyk7VEhiKHRoaXMpO3RoaXMuYT1hO3RoaXMuYz1ifVxuZnVuY3Rpb24ga0JjKGEsYixjLGQpe05DKGEuY1tiLmddLGMuZyxkKTtOQyhhLmNbYy5nXSxiLmcsZCl9XG5mdW5jdGlvbiBuQmMoYSxiLGMsZCl7TkMoYS5jW2IuZ10sYi5nLGMpO05DKGEuYltiLmddLGIuZyxkKX1cbmZ1bmN0aW9uIGNCYygpe19BYygpO3JldHVybiBPQyhHQyhmWCwxKSxLaWUsMzc2LDAsWyRBYyxaQWNdKX1cbmZ1bmN0aW9uIGNyYygpe19xYygpO3JldHVybiBPQyhHQyhNVywxKSxLaWUsNDc5LDAsWyRxYyxacWNdKX1cbmZ1bmN0aW9uIEFxYygpe3hxYygpO3JldHVybiBPQyhHQyhKVywxKSxLaWUsNDE5LDAsW3ZxYyx3cWNdKX1cbmZ1bmN0aW9uIExwYygpe0lwYygpO3JldHVybiBPQyhHQyhGVywxKSxLaWUsNDIyLDAsW0dwYyxIcGNdKX1cbmZ1bmN0aW9uIHBzYygpe21zYygpO3JldHVybiBPQyhHQyhTVywxKSxLaWUsNDIwLDAsW2tzYyxsc2NdKX1cbmZ1bmN0aW9uIEVBYygpe0JBYygpO3JldHVybiBPQyhHQyhjWCwxKSxLaWUsNDIxLDAsW3pBYyxBQWNdKX1cbmZ1bmN0aW9uIFhJYygpe1VJYygpO3JldHVybiBPQyhHQyhtWSwxKSxLaWUsNTIzLDAsW1RJYyxTSWNdKX1cbmZ1bmN0aW9uIEtPYygpe0hPYygpO3JldHVybiBPQyhHQyhEWiwxKSxLaWUsNTIwLDAsW0dPYyxGT2NdKX1cbmZ1bmN0aW9uIF9MYygpe1lMYygpO3JldHVybiBPQyhHQyhmWiwxKSxLaWUsNTE2LDAsW1hMYyxXTGNdKX1cbmZ1bmN0aW9uIGhNYygpe2VNYygpO3JldHVybiBPQyhHQyhnWiwxKSxLaWUsNTE1LDAsW2NNYyxkTWNdKX1cbmZ1bmN0aW9uIElRYygpe0ZRYygpO3JldHVybiBPQyhHQyhZWiwxKSxLaWUsNDU1LDAsW0RRYyxFUWNdKX1cbmZ1bmN0aW9uIGJVYygpeyRUYygpO3JldHVybiBPQyhHQyhGJCwxKSxLaWUsNDI1LDAsW1pUYyxZVGNdKX1cbmZ1bmN0aW9uIFZUYygpe1NUYygpO3JldHVybiBPQyhHQyhFJCwxKSxLaWUsNDgwLDAsW1FUYyxSVGNdKX1cbmZ1bmN0aW9uIFZVYygpe1BVYygpO3JldHVybiBPQyhHQyhLJCwxKSxLaWUsNDk1LDAsW05VYyxPVWNdKX1cbmZ1bmN0aW9uIGpXYygpe2ZXYygpO3JldHVybiBPQyhHQyhYJCwxKSxLaWUsNDI2LDAsW2RXYyxlV2NdKX1cbmZ1bmN0aW9uIGcxYygpe2ExYygpO3JldHVybiBPQyhHQyhYXywxKSxLaWUsNDI5LDAsW18wYywkMGNdKX1cbmZ1bmN0aW9uIEZfYygpe0NfYygpO3JldHVybiBPQyhHQyhQXywxKSxLaWUsNDMwLDAsW0JfYyxBX2NdKX1cbmZ1bmN0aW9uIFBFYigpe01FYigpO3JldHVybiBPQyhHQyhhTiwxKSxLaWUsNDI4LDAsW0xFYixLRWJdKX1cbmZ1bmN0aW9uIFhFYigpe1VFYigpO3JldHVybiBPQyhHQyhiTiwxKSxLaWUsNDI3LDAsW1NFYixURWJdKX1cbmZ1bmN0aW9uICRSYigpe1hSYigpO3JldHVybiBPQyhHQyhnUCwxKSxLaWUsNDI0LDAsW1ZSYixXUmJdKX1cbmZ1bmN0aW9uIEI1Yigpe3k1YigpO3JldHVybiBPQyhHQyhaUiwxKSxLaWUsNTExLDAsW3g1Yix3NWJdKX1cbmZ1bmN0aW9uIGxpZChhLGIsYyxkKXtyZXR1cm4gYz49MD9hLmpoKGIsYyxkKTphLlNnKG51bGwsYyxkKX1cbmZ1bmN0aW9uIGhnZChhKXtpZihhLmIuYj09MCl7cmV0dXJuIGEuYS4kZSgpfXJldHVybiBMc2IoYS5iKX1cbmZ1bmN0aW9uIFh3ZChhKXtpZihhLnAhPTUpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBUYmIoYS5mKX1cbmZ1bmN0aW9uIGV4ZChhKXtpZihhLnAhPTUpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBUYmIoYS5rKX1cbmZ1bmN0aW9uIHBOZChhKXtQRChhLmEpPT09UEQoKE5LZCgpLE1LZCkpJiZxTmQoYSk7cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIGJ5KGEpe3RoaXMuYT1CRChRYihhKSwyNzEpO3RoaXMuYj0obW1iKCksbmV3IFpvYihhKSl9XG5mdW5jdGlvbiBiUWMoYSxiKXskUGModGhpcyxuZXcgZjdjKGEuYSxhLmIpKTtfUGModGhpcyxSdShiKSl9XG5mdW5jdGlvbiBGUWMoKXtGUWM9Y2NiO0RRYz1uZXcgR1FjKGpsZSwwKTtFUWM9bmV3IEdRYyhrbGUsMSl9XG5mdW5jdGlvbiBZTGMoKXtZTGM9Y2NiO1hMYz1uZXcgWkxjKGtsZSwwKTtXTGM9bmV3IFpMYyhqbGUsMSl9XG5mdW5jdGlvbiBIcCgpe0dwLmNhbGwodGhpcyxuZXcgTXFiKEN2KDEyKSkpO0xiKHRydWUpO3RoaXMuYT0yfVxuZnVuY3Rpb24gSGdlKGEsYixjKXt3ZmUoKTt4ZmUuY2FsbCh0aGlzLGEpO3RoaXMuYj1iO3RoaXMuYT1jfVxuZnVuY3Rpb24gY1dkKGEsYixjKXtVVmQoKTtWVmQuY2FsbCh0aGlzLGIpO3RoaXMuYT1hO3RoaXMuYj1jfVxuZnVuY3Rpb24gYUliKGEpeyRHYi5jYWxsKHRoaXMpO1RIYih0aGlzKTt0aGlzLmE9YTt0aGlzLmM9dHJ1ZX1cbmZ1bmN0aW9uIGlzYihhKXt2YXIgYjtiPWEuYy5kLmI7YS5iPWI7YS5hPWEuYy5kO2IuYT1hLmMuZC5iPWF9XG5mdW5jdGlvbiAkQ2IoYSl7dmFyIGI7TkdiKGEuYSk7TUdiKGEuYSk7Yj1uZXcgWUdiKGEuYSk7VUdiKGIpfVxuZnVuY3Rpb24gaUtiKGEsYil7aEtiKGEsdHJ1ZSk7SGtiKGEuZS53ZigpLG5ldyBtS2IoYSx0cnVlLGIpKX1cbmZ1bmN0aW9uIHRsYihhLGIpe3BDYihiKTtyZXR1cm4gdmxiKGEsS0MoV0Qsb2plLDI1LGIsMTUsMSksYil9XG5mdW5jdGlvbiBZUGIoYSxiKXtRUGIoKTtyZXR1cm4gYT09WG9kKGp0ZChiKSl8fGE9PVhvZChsdGQoYikpfVxuZnVuY3Rpb24gUGhiKGEsYil7cmV0dXJuIGI9PW51bGw/V2QoaXJiKGEuZixudWxsKSk6Q3JiKGEuZyxiKX1cbmZ1bmN0aW9uIEtzYihhKXtyZXR1cm4gYS5iPT0wP251bGw6KHNDYihhLmIhPTApLE5zYihhLGEuYS5hKSl9XG5mdW5jdGlvbiBRRChhKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oYSxPaGUpLC0yMTQ3NDgzNjQ4KXwwfVxuZnVuY3Rpb24gdXooYSxiKXt2YXIgYz10elthLmNoYXJDb2RlQXQoMCldO3JldHVybiBjPT1udWxsP2E6Y31cbmZ1bmN0aW9uIEN4KGEsYil7UmIoYSwnc2V0MScpO1JiKGIsJ3NldDInKTtyZXR1cm4gbmV3IFB4KGEsYil9XG5mdW5jdGlvbiBRVWIoYSxiKXt2YXIgYztjPXpVYihhLmYsYik7cmV0dXJuIFA2YyhWNmMoYyksYS5mLmQpfVxuZnVuY3Rpb24gSndiKGEsYil7dmFyIGMsZDtjPWI7ZD1uZXcgZnhiO0x3YihhLGMsZCk7cmV0dXJuIGQuZH1cbmZ1bmN0aW9uIE5KYihhLGIsYyxkKXt2YXIgZTtlPW5ldyBhSGI7Yi5hW2MuZ109ZTtOcGIoYS5iLGQsZSl9XG5mdW5jdGlvbiB6aWQoYSxiLGMpe3ZhciBkO2Q9YS5ZZyhiKTtkPj0wP2Euc2goZCxjKTp1aWQoYSxiLGMpfVxuZnVuY3Rpb24gaHZkKGEsYixjKXtldmQoKTshIWEmJlJoYihkdmQsYSxiKTshIWEmJlJoYihjdmQsYSxjKX1cbmZ1bmN0aW9uIGdfYyhhLGIsYyl7dGhpcy5pPW5ldyBSa2I7dGhpcy5iPWE7dGhpcy5nPWI7dGhpcy5hPWN9XG5mdW5jdGlvbiBWWmMoYSxiLGMpe3RoaXMuYz1uZXcgUmtiO3RoaXMuZT1hO3RoaXMuZj1iO3RoaXMuYj1jfVxuZnVuY3Rpb24gYiRjKGEsYixjKXt0aGlzLmE9bmV3IFJrYjt0aGlzLmU9YTt0aGlzLmY9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIFp5KGEsYil7UHkodGhpcyk7dGhpcy5mPWI7dGhpcy5nPWE7UnkodGhpcyk7dGhpcy5fZCgpfVxuZnVuY3Rpb24gWkEoYSxiKXt2YXIgYztjPWEucS5nZXRIb3VycygpO2EucS5zZXREYXRlKGIpO1lBKGEsYyl9XG5mdW5jdGlvbiBubyhhLGIpe3ZhciBjO1FiKGIpO2ZvcihjPWEuYTtjO2M9Yy5jKXtiLk9kKGMuZyxjLmkpfX1cbmZ1bmN0aW9uIEZ4KGEpe3ZhciBiO2I9bmV3IFVxYihDdihhLmxlbmd0aCkpO25tYihiLGEpO3JldHVybiBifVxuZnVuY3Rpb24gZWNiKGEpe2Z1bmN0aW9uIGIoKXt9XG47Yi5wcm90b3R5cGU9YXx8e307cmV0dXJuIG5ldyBifVxuZnVuY3Rpb24gZGtiKGEsYil7aWYoWmpiKGEsYikpe3drYihhKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBhQyhhLGIpe2lmKGI9PW51bGwpe3Rocm93IHZiYihuZXcgR2ViKX1yZXR1cm4gYkMoYSxiKX1cbmZ1bmN0aW9uIHRkYihhKXtpZihhLnFlKCkpe3JldHVybiBudWxsfXZhciBiPWEubjtyZXR1cm4gX2JiW2JdfVxuZnVuY3Rpb24gTWxkKGEpe2lmKGEuRGI+PjE2IT0zKXJldHVybiBudWxsO3JldHVybiBCRChhLkNiLDMzKX1cbmZ1bmN0aW9uIG1wZChhKXtpZihhLkRiPj4xNiE9OSlyZXR1cm4gbnVsbDtyZXR1cm4gQkQoYS5DYiwzMyl9XG5mdW5jdGlvbiBmbWQoYSl7aWYoYS5EYj4+MTYhPTYpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGEuQ2IsNzkpfVxuZnVuY3Rpb24gSW5kKGEpe2lmKGEuRGI+PjE2IT03KXJldHVybiBudWxsO3JldHVybiBCRChhLkNiLDIzNSl9XG5mdW5jdGlvbiBGb2QoYSl7aWYoYS5EYj4+MTYhPTcpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGEuQ2IsMTYwKX1cbmZ1bmN0aW9uIFhvZChhKXtpZihhLkRiPj4xNiE9MTEpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGEuQ2IsMzMpfVxuZnVuY3Rpb24gbmlkKGEsYil7dmFyIGM7Yz1hLllnKGIpO3JldHVybiBjPj0wP2EubGgoYyk6dGlkKGEsYil9XG5mdW5jdGlvbiBEdGQoYSxiKXt2YXIgYztjPW5ldyBCc2IoYik7VmUoYyxhKTtyZXR1cm4gbmV3IFRrYihjKX1cbmZ1bmN0aW9uIFV1ZChhKXt2YXIgYjtiPWEuZDtiPWEuc2koYS5mKTt3dGQoYSxiKTtyZXR1cm4gYi5PYigpfVxuZnVuY3Rpb24gdF9iKGEsYil7YS5iKz1iLmI7YS5jKz1iLmM7YS5kKz1iLmQ7YS5hKz1iLmE7cmV0dXJuIGF9XG5mdW5jdGlvbiBBNGIoYSxiKXtyZXR1cm4gJHduZC5NYXRoLmFicyhhKTwkd25kLk1hdGguYWJzKGIpP2E6Yn1cbmZ1bmN0aW9uIFpvZChhKXtyZXR1cm4gIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEuaT4wfVxuZnVuY3Rpb24gb0RiKCl7dGhpcy5hPW5ldyB6c2I7dGhpcy5lPW5ldyBUcWI7dGhpcy5nPTA7dGhpcy5pPTB9XG5mdW5jdGlvbiBCR2MoYSl7dGhpcy5hPWE7dGhpcy5iPUtDKFNYLG5pZSwxOTQ0LGEuZS5sZW5ndGgsMCwyKX1cbmZ1bmN0aW9uIFJIYyhhLGIsYyl7dmFyIGQ7ZD1TSGMoYSxiLGMpO2EuYj1uZXcgQkhjKGQuYy5sZW5ndGgpfVxuZnVuY3Rpb24gZU1jKCl7ZU1jPWNjYjtjTWM9bmV3IGZNYyh2bGUsMCk7ZE1jPW5ldyBmTWMoJ1VQJywxKX1cbmZ1bmN0aW9uIFNUYygpe1NUYz1jY2I7UVRjPW5ldyBUVGMoWXFlLDApO1JUYz1uZXcgVFRjKCdGQU4nLDEpfVxuZnVuY3Rpb24gZXZkKCl7ZXZkPWNjYjtkdmQ9bmV3IExxYjtjdmQ9bmV3IExxYjtpdmQoaEssbmV3IGp2ZCl9XG5mdW5jdGlvbiBTd2QoYSl7aWYoYS5wIT0wKXRocm93IHZiYihuZXcgWWRiKTtyZXR1cm4gS2JiKGEuZiwwKX1cbmZ1bmN0aW9uIF93ZChhKXtpZihhLnAhPTApdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBLYmIoYS5rLDApfVxuZnVuY3Rpb24gTUhkKGEpe2lmKGEuRGI+PjE2IT0zKXJldHVybiBudWxsO3JldHVybiBCRChhLkNiLDE0Nyl9XG5mdW5jdGlvbiBaSmQoYSl7aWYoYS5EYj4+MTYhPTYpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGEuQ2IsMjM1KX1cbmZ1bmN0aW9uIFdJZChhKXtpZihhLkRiPj4xNiE9MTcpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGEuQ2IsMjYpfVxuZnVuY3Rpb24gcmRiKGEsYil7dmFyIGM9YS5hPWEuYXx8W107cmV0dXJuIGNbYl18fChjW2JdPWEubGUoYikpfVxuZnVuY3Rpb24gaHJiKGEsYil7dmFyIGM7Yz1hLmEuZ2V0KGIpO3JldHVybiBjPT1udWxsP25ldyBBcnJheTpjfVxuZnVuY3Rpb24gYUIoYSxiKXt2YXIgYztjPWEucS5nZXRIb3VycygpO2EucS5zZXRNb250aChiKTtZQShhLGMpfVxuZnVuY3Rpb24gU2hiKGEsYixjKXtyZXR1cm4gYj09bnVsbD9qcmIoYS5mLG51bGwsYyk6RHJiKGEuZyxiLGMpfVxuZnVuY3Rpb24gRkxkKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IHBTZChhLmUsYixhLmFqKCksYyxkLGUsZil9XG5mdW5jdGlvbiBUZmIoYSxiLGMpe2EuYT1xZmIoYS5hLDAsYikrKCcnK2MpK3BmYihhLmEsYik7cmV0dXJuIGF9XG5mdW5jdGlvbiBicShhLGIsYyl7RWtiKGEuYSwoVm0oKSxXaihiLGMpLG5ldyBXbyhiLGMpKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiB1dShhKXtvdChhLmMpO2EuZT1hLmE9YS5jO2EuYz1hLmMuYzsrK2EuZDtyZXR1cm4gYS5hLmZ9XG5mdW5jdGlvbiB2dShhKXtvdChhLmUpO2EuYz1hLmE9YS5lO2EuZT1hLmUuZTstLWEuZDtyZXR1cm4gYS5hLmZ9XG5mdW5jdGlvbiBSWmIoYSxiKXshIWEuZCYmTGtiKGEuZC5lLGEpO2EuZD1iOyEhYS5kJiZFa2IoYS5kLmUsYSl9XG5mdW5jdGlvbiBRWmIoYSxiKXshIWEuYyYmTGtiKGEuYy5nLGEpO2EuYz1iOyEhYS5jJiZFa2IoYS5jLmcsYSl9XG5mdW5jdGlvbiAkX2IoYSxiKXshIWEuYyYmTGtiKGEuYy5hLGEpO2EuYz1iOyEhYS5jJiZFa2IoYS5jLmEsYSl9XG5mdW5jdGlvbiBGMGIoYSxiKXshIWEuaSYmTGtiKGEuaS5qLGEpO2EuaT1iOyEhYS5pJiZFa2IoYS5pLmosYSl9XG5mdW5jdGlvbiBqRGIoYSxiLGMpe3RoaXMuYT1iO3RoaXMuYz1hO3RoaXMuYj0oUWIoYyksbmV3IFRrYihjKSl9XG5mdW5jdGlvbiBxWGIoYSxiLGMpe3RoaXMuYT1iO3RoaXMuYz1hO3RoaXMuYj0oUWIoYyksbmV3IFRrYihjKSl9XG5mdW5jdGlvbiBhT2IoYSxiKXt0aGlzLmE9YTt0aGlzLmM9UjZjKHRoaXMuYSk7dGhpcy5iPW5ldyBLNmMoYil9XG5mdW5jdGlvbiBJQWIoYSl7dmFyIGI7VXpiKGEpO2I9bmV3IFRxYjtyZXR1cm4gSkFiKGEsbmV3IGpCYihiKSl9XG5mdW5jdGlvbiB3Q2IoYSxiKXtpZihhPDB8fGE+Yil7dGhyb3cgdmJiKG5ldyBxY2IoQWtlK2ErQmtlK2IpKX19XG5mdW5jdGlvbiBQcGIoYSxiKXtyZXR1cm4gdnFiKGEuYSxiKT9RcGIoYSxCRChiLDIyKS5nLG51bGwpOm51bGx9XG5mdW5jdGlvbiBXVWIoYSl7TFViKCk7cmV0dXJuIEJjYigpLEJEKGEuYSw4MSkuZC5lIT0wP3RydWU6ZmFsc2V9XG5mdW5jdGlvbiBxcygpe3FzPWNjYjtwcz1hcygoaHMoKSxPQyhHQyh5RywxKSxLaWUsNTM4LDAsW2dzXSkpKX1cbmZ1bmN0aW9uIFNCYygpe1NCYz1jY2I7UkJjPWMzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxKOGIpKX1cbmZ1bmN0aW9uIFpCYygpe1pCYz1jY2I7WUJjPWMzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxKOGIpKX1cbmZ1bmN0aW9uIG9DYygpe29DYz1jY2I7bkNjPWMzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxKOGIpKX1cbmZ1bmN0aW9uIGFKYygpe2FKYz1jY2I7X0ljPWUzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxoOGIpKX1cbmZ1bmN0aW9uIEZKYygpe0ZKYz1jY2I7RUpjPWUzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxoOGIpKX1cbmZ1bmN0aW9uIElMYygpe0lMYz1jY2I7SExjPWUzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxoOGIpKX1cbmZ1bmN0aW9uIHdNYygpe3dNYz1jY2I7dk1jPWUzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxoOGIpKX1cbmZ1bmN0aW9uIGZVYygpe2ZVYz1jY2I7ZVVjPWMzYyhuZXcgajNjLCh5UmMoKSx4UmMpLChxU2MoKSxrU2MpKX1cbmZ1bmN0aW9uIERPYyhhLGIsYyxkKXt0aGlzLmM9YTt0aGlzLmQ9ZDtCT2ModGhpcyxiKTtDT2ModGhpcyxjKX1cbmZ1bmN0aW9uIFczYyhhKXt0aGlzLmM9bmV3IFBzYjt0aGlzLmI9YS5iO3RoaXMuZD1hLmM7dGhpcy5hPWEuYX1cbmZ1bmN0aW9uIGU3YyhhKXt0aGlzLmE9JHduZC5NYXRoLmNvcyhhKTt0aGlzLmI9JHduZC5NYXRoLnNpbihhKX1cbmZ1bmN0aW9uIEJPYyhhLGIpeyEhYS5hJiZMa2IoYS5hLmssYSk7YS5hPWI7ISFhLmEmJkVrYihhLmEuayxhKX1cbmZ1bmN0aW9uIENPYyhhLGIpeyEhYS5iJiZMa2IoYS5iLmYsYSk7YS5iPWI7ISFhLmImJkVrYihhLmIuZixhKX1cbmZ1bmN0aW9uIEQxYyhhLGIpe0UxYyhhLGEuYixhLmMpO0JEKGEuYi5iLDY1KTshIWImJkJEKGIuYiw2NSkuYn1cbmZ1bmN0aW9uIEJVZChhLGIpe0NVZChhLGIpO0pEKGEuQ2IsODgpJiZYTWQoJEtkKEJEKGEuQ2IsODgpKSwyKX1cbmZ1bmN0aW9uIGNKZChhLGIpe0pEKGEuQ2IsODgpJiZYTWQoJEtkKEJEKGEuQ2IsODgpKSw0KTtwbmQoYSxiKX1cbmZ1bmN0aW9uIGxLZChhLGIpe0pEKGEuQ2IsMTc5KSYmKEJEKGEuQ2IsMTc5KS50Yj1udWxsKTtwbmQoYSxiKX1cbmZ1bmN0aW9uIFQyZChhLGIpe3JldHVybiBRNmQoKSxZSWQoYik/bmV3IFI3ZChiLGEpOm5ldyBmN2QoYixhKX1cbmZ1bmN0aW9uIGpzZChhLGIpe3ZhciBjLGQ7Yz1iLmM7ZD1jIT1udWxsO2QmJlFwZChhLG5ldyB5QyhiLmMpKX1cbmZ1bmN0aW9uIFhPZChhKXt2YXIgYixjO2M9KExGZCgpLGI9bmV3IFVRZCxiKTtOUWQoYyxhKTtyZXR1cm4gY31cbmZ1bmN0aW9uIGVUZChhKXt2YXIgYixjO2M9KExGZCgpLGI9bmV3IFVRZCxiKTtOUWQoYyxhKTtyZXR1cm4gY31cbmZ1bmN0aW9uIHlDYyhhLGIpe3ZhciBjO2M9bmV3IEgxYihhKTtiLmNbYi5jLmxlbmd0aF09YztyZXR1cm4gY31cbmZ1bmN0aW9uIEF3KGEsYil7dmFyIGM7Yz1CRChIdihuZChhLmEpLGIpLDE0KTtyZXR1cm4gIWM/MDpjLmdjKCl9XG5mdW5jdGlvbiBVQWIoYSl7dmFyIGI7VXpiKGEpO2I9KGlwYigpLGlwYigpLGdwYik7cmV0dXJuIFZBYihhLGIpfVxuZnVuY3Rpb24gbnIoYSl7dmFyIGI7d2hpbGUodHJ1ZSl7Yj1hLlBiKCk7aWYoIWEuT2IoKSl7cmV0dXJuIGJ9fX1cbmZ1bmN0aW9uIEtpKGEsYil7SWkuY2FsbCh0aGlzLG5ldyBNcWIoQ3YoYSkpKTtYaihiLG1pZSk7dGhpcy5hPWJ9XG5mdW5jdGlvbiBKaWIoYSxiLGMpe3hDYihiLGMsYS5nYygpKTt0aGlzLmM9YTt0aGlzLmE9Yjt0aGlzLmI9Yy1ifVxuZnVuY3Rpb24gTWtiKGEsYixjKXt2YXIgZDt4Q2IoYixjLGEuYy5sZW5ndGgpO2Q9Yy1iO2NDYihhLmMsYixkKX1cbmZ1bmN0aW9uIEZ1YihhLGIpe0V1YihhLFRiYih4YmIoT2JiKGIsMjQpLG5rZSkpLFRiYih4YmIoYixua2UpKSl9XG5mdW5jdGlvbiB0Q2IoYSxiKXtpZihhPDB8fGE+PWIpe3Rocm93IHZiYihuZXcgcWNiKEFrZSthK0JrZStiKSl9fVxuZnVuY3Rpb24gQkNiKGEsYil7aWYoYTwwfHxhPj1iKXt0aHJvdyB2YmIobmV3IFhmYihBa2UrYStCa2UrYikpfX1cbmZ1bmN0aW9uIEt1YihhLGIpe3RoaXMuYj0odUNiKGEpLGEpO3RoaXMuYT0oYiZSamUpPT0wP2J8NjR8b2llOmJ9XG5mdW5jdGlvbiBra2IoYSl7VmpiKHRoaXMpO2RDYih0aGlzLmEsZ2ViKCR3bmQuTWF0aC5tYXgoOCxhKSk8PDEpfVxuZnVuY3Rpb24gQTBiKGEpe3JldHVybiBsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbYS5pLm4sYS5uLGEuYV0pKX1cbmZ1bmN0aW9uIEl5Yigpe0Z5YigpO3JldHVybiBPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW0N5YixEeWIsRXliXSl9XG5mdW5jdGlvbiBqSGIoKXtnSGIoKTtyZXR1cm4gT0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pfVxuZnVuY3Rpb24gUUhiKCl7TkhiKCk7cmV0dXJuIE9DKEdDKHNOLDEpLEtpZSw0NjEsMCxbTEhiLEtIYixNSGJdKX1cbmZ1bmN0aW9uIEhJYigpe0VJYigpO3JldHVybiBPQyhHQyh6TiwxKSxLaWUsNDYyLDAsW0RJYixDSWIsQkliXSl9XG5mdW5jdGlvbiBVWGIoKXtSWGIoKTtyZXR1cm4gT0MoR0MoaFEsMSksS2llLDQyMywwLFtRWGIsUFhiLE9YYl0pfVxuZnVuY3Rpb24gQlRiKCl7eVRiKCk7cmV0dXJuIE9DKEdDKG9QLDEpLEtpZSwzNzksMCxbd1RiLHZUYix4VGJdKX1cbmZ1bmN0aW9uIEJ6Yygpe3h6YygpO3JldHVybiBPQyhHQyhaVywxKSxLaWUsMzc4LDAsW3V6Yyx2emMsd3pjXSl9XG5mdW5jdGlvbiBYcGMoKXtScGMoKTtyZXR1cm4gT0MoR0MoR1csMSksS2llLDMxNCwwLFtQcGMsT3BjLFFwY10pfVxuZnVuY3Rpb24gZXFjKCl7YnFjKCk7cmV0dXJuIE9DKEdDKEhXLDEpLEtpZSwzMzcsMCxbJHBjLGFxYyxfcGNdKX1cbmZ1bmN0aW9uIEpxYygpe0dxYygpO3JldHVybiBPQyhHQyhLVywxKSxLaWUsNDUwLDAsW0VxYyxEcWMsRnFjXSl9XG5mdW5jdGlvbiBJa2MoKXtGa2MoKTtyZXR1cm4gT0MoR0ModlYsMSksS2llLDM2MSwwLFtFa2MsRGtjLENrY10pfVxuZnVuY3Rpb24gaHNjKCl7ZXNjKCk7cmV0dXJuIE9DKEdDKFJXLDEpLEtpZSwzMDMsMCxbY3NjLGRzYyxic2NdKX1cbmZ1bmN0aW9uICRyYygpe1hyYygpO3JldHVybiBPQyhHQyhRVywxKSxLaWUsMjkyLDAsW1ZyYyxXcmMsVXJjXSl9XG5mdW5jdGlvbiBOQWMoKXtLQWMoKTtyZXR1cm4gT0MoR0MoZFgsMSksS2llLDQ1MiwwLFtKQWMsSEFjLElBY10pfVxuZnVuY3Rpb24gd0FjKCl7dEFjKCk7cmV0dXJuIE9DKEdDKGJYLDEpLEtpZSwzMzksMCxbckFjLHFBYyxzQWNdKX1cbmZ1bmN0aW9uIFdBYygpe1RBYygpO3JldHVybiBPQyhHQyhlWCwxKSxLaWUsMzc1LDAsW1FBYyxSQWMsU0FjXSl9XG5mdW5jdGlvbiBPQmMoKXtMQmMoKTtyZXR1cm4gT0MoR0MoalgsMSksS2llLDM3NywwLFtKQmMsS0JjLElCY10pfVxuZnVuY3Rpb24gd0JjKCl7dEJjKCk7cmV0dXJuIE9DKEdDKGhYLDEpLEtpZSwzMzYsMCxbcUJjLHJCYyxzQmNdKX1cbmZ1bmN0aW9uIEZCYygpe0NCYygpO3JldHVybiBPQyhHQyhpWCwxKSxLaWUsMzM4LDAsW0JCYyx6QmMsQUJjXSl9XG5mdW5jdGlvbiB1R2MoKXtyR2MoKTtyZXR1cm4gT0MoR0MoUFgsMSksS2llLDQ1NCwwLFtvR2MscEdjLHFHY10pfVxuZnVuY3Rpb24geFZjKCl7dFZjKCk7cmV0dXJuIE9DKEdDKE8kLDEpLEtpZSw0NDIsMCxbc1ZjLHFWYyxyVmNdKX1cbmZ1bmN0aW9uIHRXYygpe3BXYygpO3JldHVybiBPQyhHQyhZJCwxKSxLaWUsMzgwLDAsW21XYyxuV2Msb1djXSl9XG5mdW5jdGlvbiBDWWMoKXt6WWMoKTtyZXR1cm4gT0MoR0MocV8sMSksS2llLDM4MSwwLFt4WWMseVljLHdZY10pfVxuZnVuY3Rpb24gd1hjKCl7c1hjKCk7cmV0dXJuIE9DKEdDKGJfLDEpLEtpZSwyOTMsMCxbcVhjLHJYYyxwWGNdKX1cbmZ1bmN0aW9uIF8kYygpe1kkYygpO3JldHVybiBPQyhHQyhKXywxKSxLaWUsNDM3LDAsW1YkYyxXJGMsWCRjXSl9XG5mdW5jdGlvbiBrYmQoKXtoYmQoKTtyZXR1cm4gT0MoR0MoejEsMSksS2llLDMzNCwwLFtmYmQsZWJkLGdiZF0pfVxuZnVuY3Rpb24gdGFkKCl7cWFkKCk7cmV0dXJuIE9DKEdDKHUxLDEpLEtpZSwyNzIsMCxbbmFkLG9hZCxwYWRdKX1cbmZ1bmN0aW9uIG8zZChhLGIpe3JldHVybiBwM2QoYSxiLEpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MCl9XG5mdW5jdGlvbiBMWmMoYSxiLGMpe3ZhciBkO2Q9TVpjKGEsYixmYWxzZSk7cmV0dXJuIGQuYjw9YiYmZC5hPD1jfVxuZnVuY3Rpb24gdE1jKGEsYixjKXt2YXIgZDtkPW5ldyBzTWM7ZC5iPWI7ZC5hPWM7KytiLmI7RWtiKGEuZCxkKX1cbmZ1bmN0aW9uIGZzKGEsYil7dmFyIGM7Yz0odUNiKGEpLGEpLmc7bENiKCEhYyk7dUNiKGIpO3JldHVybiBjKGIpfVxuZnVuY3Rpb24gYXYoYSxiKXt2YXIgYyxkO2Q9Y3YoYSxiKTtjPWEuYS5aYyhkKTtyZXR1cm4gbmV3IHF2KGEsYyl9XG5mdW5jdGlvbiBjS2QoYSl7aWYoYS5EYj4+MTYhPTYpcmV0dXJuIG51bGw7cmV0dXJuIEJEKGFpZChhKSwyMzUpfVxuZnVuY3Rpb24gVXdkKGEpe2lmKGEucCE9Mil0aHJvdyB2YmIobmV3IFlkYik7cmV0dXJuIFRiYihhLmYpJmFqZX1cbmZ1bmN0aW9uIGJ4ZChhKXtpZihhLnAhPTIpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBUYmIoYS5rKSZhamV9XG5mdW5jdGlvbiBaMWQoYSl7YS5hPT0oVDBkKCksUzBkKSYmZDJkKGEsVTBkKGEuZyxhLmIpKTtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gXzFkKGEpe2EuZD09KFQwZCgpLFMwZCkmJmYyZChhLFkwZChhLmcsYS5iKSk7cmV0dXJuIGEuZH1cbmZ1bmN0aW9uIG1sYihhKXtzQ2IoYS5hPGEuYy5jLmxlbmd0aCk7YS5iPWEuYSsrO3JldHVybiBhLmMuY1thLmJdfVxuZnVuY3Rpb24gaEViKGEsYil7YS5iPWEuYnxiLmI7YS5jPWEuY3xiLmM7YS5kPWEuZHxiLmQ7YS5hPWEuYXxiLmF9XG5mdW5jdGlvbiB4YmIoYSxiKXtyZXR1cm4gemJiKGREKEZiYihhKT9SYmIoYSk6YSxGYmIoYik/UmJiKGIpOmIpKX1cbmZ1bmN0aW9uIE1iYihhLGIpe3JldHVybiB6YmIoakQoRmJiKGEpP1JiYihhKTphLEZiYihiKT9SYmIoYik6YikpfVxuZnVuY3Rpb24gVmJiKGEsYil7cmV0dXJuIHpiYihyRChGYmIoYSk/UmJiKGEpOmEsRmJiKGIpP1JiYihiKTpiKSl9XG5mdW5jdGlvbiBEdWIoYSl7cmV0dXJuIHdiYihOYmIoQ2JiKEN1YihhLDMyKSksMzIpLENiYihDdWIoYSwzMikpKX1cbmZ1bmN0aW9uIE11KGEpe1FiKGEpO3JldHVybiBKRChhLDE0KT9uZXcgVGtiKEJEKGEsMTQpKTpOdShhLktjKCkpfVxuZnVuY3Rpb24gRVdiKGEsYil7QVdiKCk7cmV0dXJuIGEuYz09Yi5jP0tkYihiLmQsYS5kKTpLZGIoYS5jLGIuYyl9XG5mdW5jdGlvbiBGV2IoYSxiKXtBV2IoKTtyZXR1cm4gYS5jPT1iLmM/S2RiKGEuZCxiLmQpOktkYihhLmMsYi5jKX1cbmZ1bmN0aW9uIEhXYihhLGIpe0FXYigpO3JldHVybiBhLmM9PWIuYz9LZGIoYS5kLGIuZCk6S2RiKGIuYyxhLmMpfVxuZnVuY3Rpb24gR1diKGEsYil7QVdiKCk7cmV0dXJuIGEuYz09Yi5jP0tkYihiLmQsYS5kKTpLZGIoYi5jLGEuYyl9XG5mdW5jdGlvbiBXR2IoYSxiKXt2YXIgYztjPUVkYihFRChhLmEuV2UoKFk5YygpLFE5YykpKSk7WEdiKGEsYixjKX1cbmZ1bmN0aW9uIFJnYyhhLGIpe3ZhciBjO2M9QkQoT2hiKGEuZyxiKSw1Nyk7SGtiKGIuZCxuZXcgUWhjKGEsYykpfVxuZnVuY3Rpb24gR1liKGEsYil7dmFyIGMsZDtjPWRfYihhKTtkPWRfYihiKTtyZXR1cm4gYzxkPy0xOmM+ZD8xOjB9XG5mdW5jdGlvbiBiamMoYSxiKXt2YXIgYyxkO2M9YWpjKGIpO2Q9YztyZXR1cm4gQkQoT2hiKGEuYyxkKSwxOSkuYX1cbmZ1bmN0aW9uIGlTYyhhLGIpe3ZhciBjO2M9YSsnJzt3aGlsZShjLmxlbmd0aDxiKXtjPScwJytjfXJldHVybiBjfVxuZnVuY3Rpb24gV1JjKGEpe3JldHVybiBhLmM9PW51bGx8fGEuYy5sZW5ndGg9PTA/J25fJythLmc6J25fJythLmN9XG5mdW5jdGlvbiBvUmIoYSl7cmV0dXJuIGEuYz09bnVsbHx8YS5jLmxlbmd0aD09MD8nbl8nK2EuYjonbl8nK2EuY31cbmZ1bmN0aW9uIHF6KGEsYil7cmV0dXJuICEhYSYmISFhLmVxdWFscz9hLmVxdWFscyhiKTpQRChhKT09PVBEKGIpfVxuZnVuY3Rpb24gZGtkKGEsYil7aWYoYj09MCl7cmV0dXJuICEhYS5vJiZhLm8uZiE9MH1yZXR1cm4gbWlkKGEsYil9XG5mdW5jdGlvbiBUZGQoYSxiLGMpe3ZhciBkO2lmKGEubiYmISFiJiYhIWMpe2Q9bmV3IGtnZDtFa2IoYS5lLGQpfX1cbmZ1bmN0aW9uIGNJYyhhLGIsYyl7dmFyIGQ7ZD1hLmRbYi5wXTthLmRbYi5wXT1hLmRbYy5wXTthLmRbYy5wXT1kfVxuZnVuY3Rpb24ga3hkKGEsYixjKXt0aGlzLmQ9YTt0aGlzLmo9Yjt0aGlzLmU9Yzt0aGlzLm89LTE7dGhpcy5wPTN9XG5mdW5jdGlvbiBseGQoYSxiLGMpe3RoaXMuZD1hO3RoaXMuaz1iO3RoaXMuZj1jO3RoaXMubz0tMTt0aGlzLnA9NX1cbmZ1bmN0aW9uIHpnZShhLGIsYyl7eGZlLmNhbGwodGhpcywyNSk7dGhpcy5iPWE7dGhpcy5hPWI7dGhpcy5jPWN9XG5mdW5jdGlvbiAkZmUoYSl7d2ZlKCk7eGZlLmNhbGwodGhpcyxhKTt0aGlzLmM9ZmFsc2U7dGhpcy5hPWZhbHNlfVxuZnVuY3Rpb24gc1NkKGEsYixjLGQsZSxmKXtyU2QuY2FsbCh0aGlzLGEsYixjLGQsZSk7ZiYmKHRoaXMubz0tMil9XG5mdW5jdGlvbiB1U2QoYSxiLGMsZCxlLGYpe3RTZC5jYWxsKHRoaXMsYSxiLGMsZCxlKTtmJiYodGhpcy5vPS0yKX1cbmZ1bmN0aW9uIHdTZChhLGIsYyxkLGUsZil7dlNkLmNhbGwodGhpcyxhLGIsYyxkLGUpO2YmJih0aGlzLm89LTIpfVxuZnVuY3Rpb24geVNkKGEsYixjLGQsZSxmKXt4U2QuY2FsbCh0aGlzLGEsYixjLGQsZSk7ZiYmKHRoaXMubz0tMil9XG5mdW5jdGlvbiBBU2QoYSxiLGMsZCxlLGYpe3pTZC5jYWxsKHRoaXMsYSxiLGMsZCxlKTtmJiYodGhpcy5vPS0yKX1cbmZ1bmN0aW9uIENTZChhLGIsYyxkLGUsZil7QlNkLmNhbGwodGhpcyxhLGIsYyxkLGUpO2YmJih0aGlzLm89LTIpfVxuZnVuY3Rpb24gSFNkKGEsYixjLGQsZSxmKXtHU2QuY2FsbCh0aGlzLGEsYixjLGQsZSk7ZiYmKHRoaXMubz0tMil9XG5mdW5jdGlvbiBKU2QoYSxiLGMsZCxlLGYpe0lTZC5jYWxsKHRoaXMsYSxiLGMsZCxlKTtmJiYodGhpcy5vPS0yKX1cbmZ1bmN0aW9uIG5XZChhLGIsYyxkKXtWVmQuY2FsbCh0aGlzLGMpO3RoaXMuYj1hO3RoaXMuYz1iO3RoaXMuZD1kfVxuZnVuY3Rpb24geCRjKGEsYil7dGhpcy5hPW5ldyBSa2I7dGhpcy5kPW5ldyBSa2I7dGhpcy5mPWE7dGhpcy5jPWJ9XG5mdW5jdGlvbiBQVGIoKXt0aGlzLmM9bmV3IGJVYjt0aGlzLmE9bmV3IEZZYjt0aGlzLmI9bmV3IHdaYjskWWIoKX1cbmZ1bmN0aW9uIGIyYygpe1kxYygpO3RoaXMuYj1uZXcgTHFiO3RoaXMuYT1uZXcgTHFiO3RoaXMuYz1uZXcgUmtifVxuZnVuY3Rpb24gajJkKGEsYil7dGhpcy5nPWE7dGhpcy5kPShUMGQoKSxTMGQpO3RoaXMuYT1TMGQ7dGhpcy5iPWJ9XG5mdW5jdGlvbiBPMWQoYSxiKXt0aGlzLmY9YTt0aGlzLmE9KFQwZCgpLFIwZCk7dGhpcy5jPVIwZDt0aGlzLmI9Yn1cbmZ1bmN0aW9uIGg5ZChhLGIpeyFhLmMmJihhLmM9bmV3IHUzZChhLDApKTtmM2QoYS5jLChROGQoKSxJOGQpLGIpfVxuZnVuY3Rpb24gJFRjKCl7JFRjPWNjYjtaVGM9bmV3IF9UYygnREZTJywwKTtZVGM9bmV3IF9UYygnQkZTJywxKX1cbmZ1bmN0aW9uIENjKGEsYixjKXt2YXIgZDtkPUJEKGEuWmIoKS54YyhiKSwxNCk7cmV0dXJuICEhZCYmZC5IYyhjKX1cbmZ1bmN0aW9uIEdjKGEsYixjKXt2YXIgZDtkPUJEKGEuWmIoKS54YyhiKSwxNCk7cmV0dXJuICEhZCYmZC5NYyhjKX1cbmZ1bmN0aW9uIE9mYihhLGIsYyxkKXthLmErPScnK3FmYihiPT1udWxsP1hoZTpmY2IoYiksYyxkKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFhuZChhLGIsYyxkLGUsZil7WW5kKGEsYixjLGYpO2VMZChhLGQpO2ZMZChhLGUpO3JldHVybiBhfVxuZnVuY3Rpb24gWXNiKGEpe3NDYihhLmIuYiE9YS5kLmEpO2EuYz1hLmI9YS5iLmI7LS1hLmE7cmV0dXJuIGEuYy5jfVxuZnVuY3Rpb24gSmdiKGEpe3doaWxlKGEuZD4wJiZhLmFbLS1hLmRdPT0wKTthLmFbYS5kKytdPT0wJiYoYS5lPTApfVxuZnVuY3Rpb24gd3diKGEpe3JldHVybiAhYS5hP2EuYzphLmUubGVuZ3RoPT0wP2EuYS5hOmEuYS5hKygnJythLmUpfVxuZnVuY3Rpb24gUlNkKGEpe3JldHVybiAhIWEuYSYmUVNkKGEuYS5hKS5pIT0wJiYhKCEhYS5iJiZRVGQoYS5iKSl9XG5mdW5jdGlvbiBjTGQoYSl7cmV0dXJuICEhYS51JiZWS2QoYS51LmEpLmkhPTAmJiEoISFhLm4mJkZNZChhLm4pKX1cbmZ1bmN0aW9uICRpKGEpe3JldHVybiBaaihhLmUuSGQoKS5nYygpKmEuYy5IZCgpLmdjKCksMTYsbmV3IGlqKGEpKX1cbmZ1bmN0aW9uIFhBKGEsYil7cmV0dXJuIHVlYihDYmIoYS5xLmdldFRpbWUoKSksQ2JiKGIucS5nZXRUaW1lKCkpKX1cbmZ1bmN0aW9uIGtfYihhKXtyZXR1cm4gQkQoUWtiKGEsS0MoQVEsam5lLDE3LGEuYy5sZW5ndGgsMCwxKSksNDc0KX1cbmZ1bmN0aW9uIGxfYihhKXtyZXR1cm4gQkQoUWtiKGEsS0MoT1Esa25lLDEwLGEuYy5sZW5ndGgsMCwxKSksMTkzKX1cbmZ1bmN0aW9uIGNLYyhhKXtGSmMoKTtyZXR1cm4gIU9aYihhKSYmISghT1piKGEpJiZhLmMuaS5jPT1hLmQuaS5jKX1cbmZ1bmN0aW9uIGtEYihhLGIsYyl7dmFyIGQ7ZD0oUWIoYSksbmV3IFRrYihhKSk7aURiKG5ldyBqRGIoZCxiLGMpKX1cbmZ1bmN0aW9uIHJYYihhLGIsYyl7dmFyIGQ7ZD0oUWIoYSksbmV3IFRrYihhKSk7cFhiKG5ldyBxWGIoZCxiLGMpKX1cbmZ1bmN0aW9uIE53YihhLGIpe3ZhciBjO2M9MS1iO2EuYVtjXT1Pd2IoYS5hW2NdLGMpO3JldHVybiBPd2IoYSxiKX1cbmZ1bmN0aW9uIFlYYyhhLGIpe3ZhciBjO2EuZT1uZXcgUVhjO2M9Z1ZjKGIpO09rYihjLGEuYyk7WlhjKGEsYywwKX1cbmZ1bmN0aW9uIG80YyhhLGIsYyxkKXt2YXIgZTtlPW5ldyB3NGM7ZS5hPWI7ZS5iPWM7ZS5jPWQ7RHNiKGEuYSxlKX1cbmZ1bmN0aW9uIHA0YyhhLGIsYyxkKXt2YXIgZTtlPW5ldyB3NGM7ZS5hPWI7ZS5iPWM7ZS5jPWQ7RHNiKGEuYixlKX1cbmZ1bmN0aW9uIGk2ZChhKXt2YXIgYixjLGQ7Yj1uZXcgQTZkO2M9czZkKGIsYSk7ejZkKGIpO2Q9YztyZXR1cm4gZH1cbmZ1bmN0aW9uIHZaZCgpe3ZhciBhLGIsYztiPShjPShhPW5ldyBVUWQsYSksYyk7RWtiKHJaZCxiKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEgyYyhhKXthLmouYz1LQyhTSSxVaGUsMSwwLDUsMSk7QWUoYS5jKTtoM2MoYS5hKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHRnYyhhKXtxZ2MoKTtpZihKRChhLmcsMTApKXtyZXR1cm4gQkQoYS5nLDEwKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFp3KGEpe2lmKEFoKGEpLmRjKCkpe3JldHVybiBmYWxzZX1CaChhLG5ldyBieCk7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBfeShiKXtpZighKCdzdGFjaycgaW4gYikpe3RyeXt0aHJvdyBifWNhdGNoKGEpe319cmV0dXJuIGJ9XG5mdW5jdGlvbiBQYihhLGIpe2lmKGE8MHx8YT49Yil7dGhyb3cgdmJiKG5ldyBxY2IoSWIoYSxiKSkpfXJldHVybiBhfVxuZnVuY3Rpb24gVGIoYSxiLGMpe2lmKGE8MHx8YjxhfHxiPmMpe3Rocm93IHZiYihuZXcgcWNiKEtiKGEsYixjKSkpfX1cbmZ1bmN0aW9uIGVWYihhLGIpe1FxYihhLmEsYik7aWYoYi5kKXt0aHJvdyB2YmIobmV3IGh6KEhrZSkpfWIuZD1hfVxuZnVuY3Rpb24geHBiKGEsYil7aWYoYi4kbW9kQ291bnQhPWEuJG1vZENvdW50KXt0aHJvdyB2YmIobmV3IEFwYil9fVxuZnVuY3Rpb24gJHBiKGEsYil7aWYoSkQoYiw0Mikpe3JldHVybiBKZChhLmEsQkQoYiw0MikpfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGRpYihhLGIpe2lmKEpEKGIsNDIpKXtyZXR1cm4gSmQoYS5hLEJEKGIsNDIpKX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBtc2IoYSxiKXtpZihKRChiLDQyKSl7cmV0dXJuIEpkKGEuYSxCRChiLDQyKSl9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gcUFiKGEsYil7aWYoYS5hPD1hLmIpe2IudWQoYS5hKyspO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIFNiYihhKXt2YXIgYjtpZihGYmIoYSkpe2I9YTtyZXR1cm4gYj09LTAuPzA6Yn1yZXR1cm4gb0QoYSl9XG5mdW5jdGlvbiB0QWIoYSl7dmFyIGI7VHpiKGEpO2I9bmV3IGRyYjtfdWIoYS5hLG5ldyBCQWIoYikpO3JldHVybiBifVxuZnVuY3Rpb24gWXpiKGEpe3ZhciBiO1R6YihhKTtiPW5ldyBHcGI7X3ViKGEuYSxuZXcgbUFiKGIpKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEJpYihhLGIpe3RoaXMuYT1hO3ZpYi5jYWxsKHRoaXMsYSk7d0NiKGIsYS5nYygpKTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIG9yYihhKXt0aGlzLmU9YTt0aGlzLmI9dGhpcy5lLmEuZW50cmllcygpO3RoaXMuYT1uZXcgQXJyYXl9XG5mdW5jdGlvbiBPaShhKXtyZXR1cm4gWmooYS5lLkhkKCkuZ2MoKSphLmMuSGQoKS5nYygpLDI3MyxuZXcgY2ooYSkpfVxuZnVuY3Rpb24gUXUoYSl7cmV0dXJuIG5ldyBTa2IoKFhqKGEsTWllKSxPeSh3YmIod2JiKDUsYSksYS8xMHwwKSkpKX1cbmZ1bmN0aW9uIG1fYihhKXtyZXR1cm4gQkQoUWtiKGEsS0MoYVIsbG5lLDExLGEuYy5sZW5ndGgsMCwxKSksMTk0Myl9XG5mdW5jdGlvbiBzTWIoYSxiLGMpe3JldHVybiBjLmYuYy5sZW5ndGg+MD9ITWIoYS5hLGIsYyk6SE1iKGEuYixiLGMpfVxuZnVuY3Rpb24gU1piKGEsYixjKXshIWEuZCYmTGtiKGEuZC5lLGEpO2EuZD1iOyEhYS5kJiZEa2IoYS5kLmUsYyxhKX1cbmZ1bmN0aW9uIGE1YihhLGIpe2k1YihiLGEpO2s1YihhLmQpO2s1YihCRCh2TmIoYSwoTnljKCksd3hjKSksMjA3KSl9XG5mdW5jdGlvbiBfNGIoYSxiKXtmNWIoYixhKTtoNWIoYS5kKTtoNWIoQkQodk5iKGEsKE55YygpLHd4YykpLDIwNykpfVxuZnVuY3Rpb24gWXBkKGEsYil7dmFyIGMsZDtjPWFDKGEsYik7ZD1udWxsOyEhYyYmKGQ9Yy5mZSgpKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFpwZChhLGIpe3ZhciBjLGQ7Yz10QihhLGIpO2Q9bnVsbDshIWMmJihkPWMuaWUoKSk7cmV0dXJuIGR9XG5mdW5jdGlvbiAkcGQoYSxiKXt2YXIgYyxkO2M9YUMoYSxiKTtkPW51bGw7ISFjJiYoZD1jLmllKCkpO3JldHVybiBkfVxuZnVuY3Rpb24gX3BkKGEsYil7dmFyIGMsZDtjPWFDKGEsYik7ZD1udWxsOyEhYyYmKGQ9YXFkKGMpKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFRxZChhLGIsYyl7dmFyIGQ7ZD1XcGQoYyk7cm8oYS5nLGQsYik7cm8oYS5pLGIsYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBFeihhLGIsYyl7dmFyIGQ7ZD1DeigpO3RyeXtyZXR1cm4gQnooYSxiLGMpfWZpbmFsbHl7RnooZCl9fVxuZnVuY3Rpb24gQzZkKGEpe3ZhciBiO2I9YS5XZygpO3RoaXMuYT1KRChiLDY5KT9CRChiLDY5KS5aaCgpOmIuS2MoKX1cbmZ1bmN0aW9uIGozYygpe0QyYy5jYWxsKHRoaXMpO3RoaXMuai5jPUtDKFNJLFVoZSwxLDAsNSwxKTt0aGlzLmE9LTF9XG5mdW5jdGlvbiBteGQoYSxiLGMsZCl7dGhpcy5kPWE7dGhpcy5uPWI7dGhpcy5nPWM7dGhpcy5vPWQ7dGhpcy5wPS0xfVxuZnVuY3Rpb24gamsoYSxiLGMsZCl7dGhpcy5lPWQ7dGhpcy5kPW51bGw7dGhpcy5jPWE7dGhpcy5hPWI7dGhpcy5iPWN9XG5mdW5jdGlvbiB1RWMoYSxiLGMpe3RoaXMuZD1uZXcgSEVjKHRoaXMpO3RoaXMuZT1hO3RoaXMuaT1iO3RoaXMuZj1jfVxuZnVuY3Rpb24gbXNjKCl7bXNjPWNjYjtrc2M9bmV3IG5zYyhnbGUsMCk7bHNjPW5ldyBuc2MoJ1RPUF9MRUZUJywxKX1cbmZ1bmN0aW9uIGNEYygpe2NEYz1jY2I7YkRjPWl4KG1lYigxKSxtZWIoNCkpO2FEYz1peChtZWIoMSksbWViKDIpKX1cbmZ1bmN0aW9uIHpfYygpe3pfYz1jY2I7eV9jPWFzKChzX2MoKSxPQyhHQyhPXywxKSxLaWUsNTUxLDAsW3JfY10pKSl9XG5mdW5jdGlvbiBxX2MoKXtxX2M9Y2NiO3BfYz1hcygoaV9jKCksT0MoR0MoTl8sMSksS2llLDQ4MiwwLFtoX2NdKSkpfVxuZnVuY3Rpb24gWjBjKCl7WjBjPWNjYjtZMGM9YXMoKFIwYygpLE9DKEdDKFdfLDEpLEtpZSw1MzAsMCxbUTBjXSkpKX1cbmZ1bmN0aW9uIGhQYigpe2hQYj1jY2I7Z1BiPWFzKChjUGIoKSxPQyhHQyhHTywxKSxLaWUsNDgxLDAsW2JQYl0pKSl9XG5mdW5jdGlvbiB5TGIoKXt2TGIoKTtyZXR1cm4gT0MoR0MoUE4sMSksS2llLDQwNiwwLFt1TGIsckxiLHNMYix0TGJdKX1cbmZ1bmN0aW9uIHF4Yigpe2x4YigpO3JldHVybiBPQyhHQyhpTCwxKSxLaWUsMjk3LDAsW2h4YixpeGIsanhiLGt4Yl0pfVxuZnVuY3Rpb24gVU9iKCl7Uk9iKCk7cmV0dXJuIE9DKEdDKENPLDEpLEtpZSwzOTQsMCxbT09iLE5PYixQT2IsUU9iXSl9XG5mdW5jdGlvbiBVTWIoKXtSTWIoKTtyZXR1cm4gT0MoR0Moak8sMSksS2llLDMyMywwLFtPTWIsTk1iLFBNYixRTWJdKX1cbmZ1bmN0aW9uIHNXYigpe2xXYigpO3JldHVybiBPQyhHQyhTUCwxKSxLaWUsNDA1LDAsW2hXYixrV2IsaVdiLGpXYl0pfVxuZnVuY3Rpb24ga2JjKCl7Z2JjKCk7cmV0dXJuIE9DKEdDKFZTLDEpLEtpZSwzNjAsMCxbZmJjLGRiYyxlYmMsY2JjXSl9XG5mdW5jdGlvbiBWYyhhLGIsYyxkKXtyZXR1cm4gSkQoYyw1NCk/bmV3IENnKGEsYixjLGQpOm5ldyBxZyhhLGIsYyxkKX1cbmZ1bmN0aW9uIERqYygpe0FqYygpO3JldHVybiBPQyhHQyhtViwxKSxLaWUsNDExLDAsW3dqYyx4amMseWpjLHpqY10pfVxuZnVuY3Rpb24gb2tjKGEpe3ZhciBiO3JldHVybiBhLmo9PShVY2QoKSxSY2QpJiYoYj1wa2MoYSksdXFiKGIsemNkKSl9XG5mdW5jdGlvbiBNZGMoYSxiKXt2YXIgYztjPWIuYTtRWmIoYyxiLmMuZCk7UlpiKGMsYi5kLmQpO3E3YyhjLmEsYS5uKX1cbmZ1bmN0aW9uIFNtYyhhLGIpe3JldHVybiBCRChCdGIoUUFiKEJEKFFjKGEuayxiKSwxNSkuT2MoKSxIbWMpKSwxMTMpfVxuZnVuY3Rpb24gVG1jKGEsYil7cmV0dXJuIEJEKEJ0YihSQWIoQkQoUWMoYS5rLGIpLDE1KS5PYygpLEhtYykpLDExMyl9XG5mdW5jdGlvbiBfdyhhKXtyZXR1cm4gbmV3IEt1YihybWIoQkQoYS5hLmRkKCksMTQpLmdjKCksYS5hLmNkKCkpLDE2KX1cbmZ1bmN0aW9uIFFxKGEpe2lmKEpEKGEsMTQpKXtyZXR1cm4gQkQoYSwxNCkuZGMoKX1yZXR1cm4gIWEuS2MoKS5PYigpfVxuZnVuY3Rpb24gdWdjKGEpe3FnYygpO2lmKEpEKGEuZywxNDUpKXtyZXR1cm4gQkQoYS5nLDE0NSl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBLbyhhKXtpZihhLmUuZyE9YS5iKXt0aHJvdyB2YmIobmV3IEFwYil9cmV0dXJuICEhYS5jJiZhLmQ+MH1cbmZ1bmN0aW9uIFhzYihhKXtzQ2IoYS5iIT1hLmQuYyk7YS5jPWEuYjthLmI9YS5iLmE7KythLmE7cmV0dXJuIGEuYy5jfVxuZnVuY3Rpb24gWGpiKGEsYil7dUNiKGIpO05DKGEuYSxhLmMsYik7YS5jPWEuYysxJmEuYS5sZW5ndGgtMTtfamIoYSl9XG5mdW5jdGlvbiBXamIoYSxiKXt1Q2IoYik7YS5iPWEuYi0xJmEuYS5sZW5ndGgtMTtOQyhhLmEsYS5iLGIpO19qYihhKX1cbmZ1bmN0aW9uIEEyYyhhLGIpe3ZhciBjO2ZvcihjPWEuai5jLmxlbmd0aDtjPGI7YysrKXtFa2IoYS5qLGEucmcoKSl9fVxuZnVuY3Rpb24gZ0JjKGEsYixjLGQpe3ZhciBlO2U9ZFtiLmddW2MuZ107cmV0dXJuIEVkYihFRCh2TmIoYS5hLGUpKSl9XG5mdW5jdGlvbiBnb2MoYSxiLGMsZCxlKXt0aGlzLmk9YTt0aGlzLmE9Yjt0aGlzLmU9Yzt0aGlzLmo9ZDt0aGlzLmY9ZX1cbmZ1bmN0aW9uIERaYyhhLGIsYyxkLGUpe3RoaXMuYT1hO3RoaXMuZT1iO3RoaXMuZj1jO3RoaXMuYj1kO3RoaXMuZz1lfVxuZnVuY3Rpb24gRnooYSl7YSYmTXooKEt6KCksSnopKTstLXh6O2lmKGEpe2lmKHp6IT0tMSl7SHooenopO3p6PS0xfX19XG5mdW5jdGlvbiBOemMoKXtJemMoKTtyZXR1cm4gT0MoR0MoJFcsMSksS2llLDE5NywwLFtHemMsSHpjLEZ6YyxFemNdKX1cbmZ1bmN0aW9uIEVSYygpe3lSYygpO3JldHVybiBPQyhHQyhoJCwxKSxLaWUsMzkzLDAsW3VSYyx2UmMsd1JjLHhSY10pfVxuZnVuY3Rpb24gbVhjKCl7aVhjKCk7cmV0dXJuIE9DKEdDKGFfLDEpLEtpZSwzNDAsMCxbaFhjLGZYYyxnWGMsZVhjXSl9XG5mdW5jdGlvbiB3ZGQoKXt0ZGQoKTtyZXR1cm4gT0MoR0MoSTEsMSksS2llLDM3NCwwLFtyZGQsc2RkLHFkZCxwZGRdKX1cbmZ1bmN0aW9uIHZiZCgpe3JiZCgpO3JldHVybiBPQyhHQyhBMSwxKSxLaWUsMjg1LDAsW3FiZCxuYmQsb2JkLHBiZF0pfVxuZnVuY3Rpb24gRGFkKCl7QWFkKCk7cmV0dXJuIE9DKEdDKHYxLDEpLEtpZSwyMTgsMCxbemFkLHhhZCx3YWQseWFkXSl9XG5mdW5jdGlvbiBHZWQoKXtEZWQoKTtyZXR1cm4gT0MoR0MoTzEsMSksS2llLDMxMSwwLFtDZWQsemVkLEJlZCxBZWRdKX1cbmZ1bmN0aW9uIHNnZCgpe3BnZCgpO3JldHVybiBPQyhHQyhrMiwxKSxLaWUsMzk2LDAsW21nZCxuZ2QsbGdkLG9nZF0pfVxuZnVuY3Rpb24gZ3ZkKGEpe2V2ZCgpO3JldHVybiBNaGIoZHZkLGEpP0JEKE9oYihkdmQsYSksMzMxKS51ZygpOm51bGx9XG5mdW5jdGlvbiBjaWQoYSxiLGMpe3JldHVybiBiPDA/dGlkKGEsYyk6QkQoYyw2NikuTmooKS5TaihhLGEueWgoKSxiKX1cbmZ1bmN0aW9uIFNxZChhLGIsYyl7dmFyIGQ7ZD1XcGQoYyk7cm8oYS5kLGQsYik7UmhiKGEuZSxiLGMpO3JldHVybiBifVxuZnVuY3Rpb24gVXFkKGEsYixjKXt2YXIgZDtkPVdwZChjKTtybyhhLmosZCxiKTtSaGIoYS5rLGIsYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBkdGQoYSl7dmFyIGIsYztiPShGaGQoKSxjPW5ldyBUbGQsYyk7ISFhJiZSbGQoYixhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHd1ZChhKXt2YXIgYjtiPWEucmkoYS5pKTthLmk+MCYmJGZiKGEuZywwLGIsMCxhLmkpO3JldHVybiBifVxuZnVuY3Rpb24gcUVkKGEsYil7cEVkKCk7dmFyIGM7Yz1CRChPaGIob0VkLGEpLDU1KTtyZXR1cm4gIWN8fGMud2ooYil9XG5mdW5jdGlvbiBUd2QoYSl7aWYoYS5wIT0xKXRocm93IHZiYihuZXcgWWRiKTtyZXR1cm4gVGJiKGEuZik8PDI0Pj4yNH1cbmZ1bmN0aW9uIGF4ZChhKXtpZihhLnAhPTEpdGhyb3cgdmJiKG5ldyBZZGIpO3JldHVybiBUYmIoYS5rKTw8MjQ+PjI0fVxuZnVuY3Rpb24gZ3hkKGEpe2lmKGEucCE9Nyl0aHJvdyB2YmIobmV3IFlkYik7cmV0dXJuIFRiYihhLmspPDwxNj4+MTZ9XG5mdW5jdGlvbiBad2QoYSl7aWYoYS5wIT03KXRocm93IHZiYihuZXcgWWRiKTtyZXR1cm4gVGJiKGEuZik8PDE2Pj4xNn1cbmZ1bmN0aW9uIHNyKGEpe3ZhciBiO2I9MDt3aGlsZShhLk9iKCkpe2EuUGIoKTtiPXdiYihiLDEpfXJldHVybiBPeShiKX1cbmZ1bmN0aW9uIG54KGEsYil7dmFyIGM7Yz1uZXcgVmZiO2EueGQoYyk7Yy5hKz0nLi4nO2IueWQoYyk7cmV0dXJuIGMuYX1cbmZ1bmN0aW9uIFNnYyhhLGIsYyl7dmFyIGQ7ZD1CRChPaGIoYS5nLGMpLDU3KTtFa2IoYS5hLmMsbmV3IHZnZChiLGQpKX1cbmZ1bmN0aW9uIFZDYihhLGIsYyl7cmV0dXJuIERkYihFRChXZChpcmIoYS5mLGIpKSksRUQoV2QoaXJiKGEuZixjKSkpKX1cbmZ1bmN0aW9uIEUyZChhLGIsYyl7cmV0dXJuIEYyZChhLGIsYyxKRChiLDk5KSYmKEJEKGIsMTgpLkJiJlRqZSkhPTApfVxuZnVuY3Rpb24gTDJkKGEsYixjKXtyZXR1cm4gTTJkKGEsYixjLEpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MCl9XG5mdW5jdGlvbiBxM2QoYSxiLGMpe3JldHVybiByM2QoYSxiLGMsSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wKX1cbmZ1bmN0aW9uIEpKYyhhLGIpe3JldHVybiBhPT0oajBiKCksaDBiKSYmYj09aDBiPzQ6YT09aDBifHxiPT1oMGI/ODozMn1cbmZ1bmN0aW9uIE5kKGEsYil7cmV0dXJuIFBEKGIpPT09UEQoYSk/Jyh0aGlzIE1hcCknOmI9PW51bGw/WGhlOmZjYihiKX1cbmZ1bmN0aW9uIGtGZChhLGIpe3JldHVybiBCRChiPT1udWxsP1dkKGlyYihhLmYsbnVsbCkpOkNyYihhLmcsYiksMjgxKX1cbmZ1bmN0aW9uIFJxZChhLGIsYyl7dmFyIGQ7ZD1XcGQoYyk7UmhiKGEuYixkLGIpO1JoYihhLmMsYixjKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEJmZChhLGIpe3ZhciBjO2M9Yjt3aGlsZShjKXtPNmMoYSxjLmksYy5qKTtjPVhvZChjKX1yZXR1cm4gYX1cbmZ1bmN0aW9uIGt0KGEsYil7dmFyIGM7Yz12bWIoTnUobmV3IHd1KGEsYikpKTtpcihuZXcgd3UoYSxiKSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBSNmQoYSxiKXtRNmQoKTt2YXIgYztjPUJEKGEsNjYpLk1qKCk7a1ZkKGMsYik7cmV0dXJuIGMuT2soYil9XG5mdW5jdGlvbiBUT2MoYSxiLGMsZCxlKXt2YXIgZjtmPU9PYyhlLGMsZCk7RWtiKGIsdE9jKGUsZikpO1hPYyhhLGUsYil9XG5mdW5jdGlvbiBtaWMoYSxiLGMpe2EuaT0wO2EuZT0wO2lmKGI9PWMpe3JldHVybn1saWMoYSxiLGMpO2tpYyhhLGIsYyl9XG5mdW5jdGlvbiBkQihhLGIpe3ZhciBjO2M9YS5xLmdldEhvdXJzKCk7YS5xLnNldEZ1bGxZZWFyKGIrbmplKTtZQShhLGMpfVxuZnVuY3Rpb24gZEMoZCxhLGIpe2lmKGIpe3ZhciBjPWIuZWUoKTtkLmFbYV09YyhiKX1lbHNle2RlbGV0ZSBkLmFbYV19fVxuZnVuY3Rpb24gdkIoZCxhLGIpe2lmKGIpe3ZhciBjPWIuZWUoKTtiPWMoYil9ZWxzZXtiPXVuZGVmaW5lZH1kLmFbYV09Yn1cbmZ1bmN0aW9uIHBDYihhKXtpZihhPDApe3Rocm93IHZiYihuZXcgRmViKCdOZWdhdGl2ZSBhcnJheSBzaXplOiAnK2EpKX19XG5mdW5jdGlvbiBWS2QoYSl7aWYoIWEubil7JEtkKGEpO2Eubj1uZXcgSk1kKGEsajUsYSk7X0tkKGEpfXJldHVybiBhLm59XG5mdW5jdGlvbiBGcWIoYSl7c0NiKGEuYTxhLmMuYS5sZW5ndGgpO2EuYj1hLmE7RHFiKGEpO3JldHVybiBhLmMuYlthLmJdfVxuZnVuY3Rpb24gWWpiKGEpe2lmKGEuYj09YS5jKXtyZXR1cm59YS5hPUtDKFNJLFVoZSwxLDgsNSwxKTthLmI9MDthLmM9MH1cbmZ1bmN0aW9uIEFRYihhKXt0aGlzLmI9bmV3IExxYjt0aGlzLmM9bmV3IExxYjt0aGlzLmQ9bmV3IExxYjt0aGlzLmE9YX1cbmZ1bmN0aW9uIGxnZShhLGIpe3dmZSgpO3hmZS5jYWxsKHRoaXMsYSk7dGhpcy5hPWI7dGhpcy5jPS0xO3RoaXMuYj0tMX1cbmZ1bmN0aW9uIGxTZChhLGIsYyxkKXtreGQuY2FsbCh0aGlzLDEsYyxkKTtqU2QodGhpcyk7dGhpcy5jPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBtU2QoYSxiLGMsZCl7bHhkLmNhbGwodGhpcywxLGMsZCk7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gTzdkKGEsYixjLGQsZSxmLGcpe254ZC5jYWxsKHRoaXMsYixkLGUsZixnKTt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIExWZChhLGIsYyl7dGhpcy5lPWE7dGhpcy5hPVNJO3RoaXMuYj1SNWQoYik7dGhpcy5jPWI7dGhpcy5kPWN9XG5mdW5jdGlvbiBMbyhhKXt0aGlzLmU9YTt0aGlzLmM9dGhpcy5lLmE7dGhpcy5iPXRoaXMuZS5nO3RoaXMuZD10aGlzLmUuaX1cbmZ1bmN0aW9uIG5ZZChhKXt0aGlzLmM9YTt0aGlzLmE9QkQod0lkKGEpLDE0OCk7dGhpcy5iPXRoaXMuYS5BaigpLk5oKCl9XG5mdW5jdGlvbiBJcmIoYSl7dGhpcy5kPWE7dGhpcy5iPXRoaXMuZC5hLmVudHJpZXMoKTt0aGlzLmE9dGhpcy5iLm5leHQoKX1cbmZ1bmN0aW9uICRyYigpe0xxYi5jYWxsKHRoaXMpO1RyYih0aGlzKTt0aGlzLmQuYj10aGlzLmQ7dGhpcy5kLmE9dGhpcy5kfVxuZnVuY3Rpb24gbVJiKGEsYil7X1FiLmNhbGwodGhpcyk7dGhpcy5hPWE7dGhpcy5iPWI7RWtiKHRoaXMuYS5iLHRoaXMpfVxuZnVuY3Rpb24gdUZkKGEsYil7dmFyIGM7cmV0dXJuIGM9YiE9bnVsbD9QaGIoYSxiKTpXZChpcmIoYS5mLGIpKSxSRChjKX1cbmZ1bmN0aW9uIEZGZChhLGIpe3ZhciBjO3JldHVybiBjPWIhPW51bGw/UGhiKGEsYik6V2QoaXJiKGEuZixiKSksUkQoYyl9XG5mdW5jdGlvbiBGb2IoYSxiKXt2YXIgYztmb3IoYz0wO2M8YjsrK2Mpe05DKGEsYyxuZXcgUm9iKEJEKGFbY10sNDIpKSl9fVxuZnVuY3Rpb24gTGdiKGEsYil7dmFyIGM7Zm9yKGM9YS5kLTE7Yz49MCYmYS5hW2NdPT09YltjXTtjLS0pO3JldHVybiBjPDB9XG5mdW5jdGlvbiBVY2MoYSxiKXtPY2MoKTt2YXIgYztjPWEuai5nLWIuai5nO2lmKGMhPTApe3JldHVybiBjfXJldHVybiAwfVxuZnVuY3Rpb24gRHRiKGEsYil7dUNiKGIpO2lmKGEuYSE9bnVsbCl7cmV0dXJuIEl0YihiLktiKGEuYSkpfXJldHVybiB6dGJ9XG5mdW5jdGlvbiBHeChhKXt2YXIgYjtpZihhKXtyZXR1cm4gbmV3IEJzYihhKX1iPW5ldyB6c2I7SnEoYixhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEdBYihhLGIpe3ZhciBjO3JldHVybiBiLmIuS2IoU0FiKGEsYi5jLkVlKCksKGM9bmV3IFRCYihiKSxjKSkpfVxuZnVuY3Rpb24gSHViKGEpe3p1YigpO0V1Yih0aGlzLFRiYih4YmIoT2JiKGEsMjQpLG5rZSkpLFRiYih4YmIoYSxua2UpKSl9XG5mdW5jdGlvbiBSRWIoKXtSRWI9Y2NiO1FFYj1hcygoTUViKCksT0MoR0MoYU4sMSksS2llLDQyOCwwLFtMRWIsS0ViXSkpKX1cbmZ1bmN0aW9uIFpFYigpe1pFYj1jY2I7WUViPWFzKChVRWIoKSxPQyhHQyhiTiwxKSxLaWUsNDI3LDAsW1NFYixURWJdKSkpfVxuZnVuY3Rpb24gYVNiKCl7YVNiPWNjYjtfUmI9YXMoKFhSYigpLE9DKEdDKGdQLDEpLEtpZSw0MjQsMCxbVlJiLFdSYl0pKSl9XG5mdW5jdGlvbiBENWIoKXtENWI9Y2NiO0M1Yj1hcygoeTViKCksT0MoR0MoWlIsMSksS2llLDUxMSwwLFt4NWIsdzViXSkpKX1cbmZ1bmN0aW9uIENxYygpe0NxYz1jY2I7QnFjPWFzKCh4cWMoKSxPQyhHQyhKVywxKSxLaWUsNDE5LDAsW3ZxYyx3cWNdKSkpfVxuZnVuY3Rpb24gZXJjKCl7ZXJjPWNjYjtkcmM9YXMoKF9xYygpLE9DKEdDKE1XLDEpLEtpZSw0NzksMCxbJHFjLFpxY10pKSl9XG5mdW5jdGlvbiBlQmMoKXtlQmM9Y2NiO2RCYz1hcygoX0FjKCksT0MoR0MoZlgsMSksS2llLDM3NiwwLFskQWMsWkFjXSkpKX1cbmZ1bmN0aW9uIEdBYygpe0dBYz1jY2I7RkFjPWFzKChCQWMoKSxPQyhHQyhjWCwxKSxLaWUsNDIxLDAsW3pBYyxBQWNdKSkpfVxuZnVuY3Rpb24gTnBjKCl7TnBjPWNjYjtNcGM9YXMoKElwYygpLE9DKEdDKEZXLDEpLEtpZSw0MjIsMCxbR3BjLEhwY10pKSl9XG5mdW5jdGlvbiByc2MoKXtyc2M9Y2NiO3FzYz1hcygobXNjKCksT0MoR0MoU1csMSksS2llLDQyMCwwLFtrc2MsbHNjXSkpKX1cbmZ1bmN0aW9uIE1PYygpe01PYz1jY2I7TE9jPWFzKChIT2MoKSxPQyhHQyhEWiwxKSxLaWUsNTIwLDAsW0dPYyxGT2NdKSkpfVxuZnVuY3Rpb24gWkljKCl7WkljPWNjYjtZSWM9YXMoKFVJYygpLE9DKEdDKG1ZLDEpLEtpZSw1MjMsMCxbVEljLFNJY10pKSl9XG5mdW5jdGlvbiBiTWMoKXtiTWM9Y2NiO2FNYz1hcygoWUxjKCksT0MoR0MoZlosMSksS2llLDUxNiwwLFtYTGMsV0xjXSkpKX1cbmZ1bmN0aW9uIGpNYygpe2pNYz1jY2I7aU1jPWFzKChlTWMoKSxPQyhHQyhnWiwxKSxLaWUsNTE1LDAsW2NNYyxkTWNdKSkpfVxuZnVuY3Rpb24gS1FjKCl7S1FjPWNjYjtKUWM9YXMoKEZRYygpLE9DKEdDKFlaLDEpLEtpZSw0NTUsMCxbRFFjLEVRY10pKSl9XG5mdW5jdGlvbiBkVWMoKXtkVWM9Y2NiO2NVYz1hcygoJFRjKCksT0MoR0MoRiQsMSksS2llLDQyNSwwLFtaVGMsWVRjXSkpKX1cbmZ1bmN0aW9uIFhVYygpe1hVYz1jY2I7V1VjPWFzKChQVWMoKSxPQyhHQyhLJCwxKSxLaWUsNDk1LDAsW05VYyxPVWNdKSkpfVxuZnVuY3Rpb24gWFRjKCl7WFRjPWNjYjtXVGM9YXMoKFNUYygpLE9DKEdDKEUkLDEpLEtpZSw0ODAsMCxbUVRjLFJUY10pKSl9XG5mdW5jdGlvbiBsV2MoKXtsV2M9Y2NiO2tXYz1hcygoZldjKCksT0MoR0MoWCQsMSksS2llLDQyNiwwLFtkV2MsZVdjXSkpKX1cbmZ1bmN0aW9uIGkxYygpe2kxYz1jY2I7aDFjPWFzKChhMWMoKSxPQyhHQyhYXywxKSxLaWUsNDI5LDAsW18wYywkMGNdKSkpfVxuZnVuY3Rpb24gSF9jKCl7SF9jPWNjYjtHX2M9YXMoKENfYygpLE9DKEdDKFBfLDEpLEtpZSw0MzAsMCxbQl9jLEFfY10pKSl9XG5mdW5jdGlvbiBVSWMoKXtVSWM9Y2NiO1RJYz1uZXcgVkljKCdVUFBFUicsMCk7U0ljPW5ldyBWSWMoJ0xPV0VSJywxKX1cbmZ1bmN0aW9uIExxZChhLGIpe3ZhciBjO2M9bmV3IGVDO1NwZChjLCd4JyxiLmEpO1NwZChjLCd5JyxiLmIpO1FwZChhLGMpfVxuZnVuY3Rpb24gT3FkKGEsYil7dmFyIGM7Yz1uZXcgZUM7U3BkKGMsJ3gnLGIuYSk7U3BkKGMsJ3knLGIuYik7UXBkKGEsYyl9XG5mdW5jdGlvbiBKaWMoYSxiKXt2YXIgYyxkO2Q9ZmFsc2U7ZG97Yz1NaWMoYSxiKTtkPWR8Y313aGlsZShjKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHpIYyhhLGIpe3ZhciBjLGQ7Yz1iO2Q9MDt3aGlsZShjPjApe2QrPWEuYVtjXTtjLT1jJi1jfXJldHVybiBkfVxuZnVuY3Rpb24gQ2ZkKGEsYil7dmFyIGM7Yz1iO3doaWxlKGMpe082YyhhLC1jLmksLWMuaik7Yz1Yb2QoYyl9cmV0dXJuIGF9XG5mdW5jdGlvbiByZWIoYSxiKXt2YXIgYyxkO3VDYihiKTtmb3IoZD1hLktjKCk7ZC5PYigpOyl7Yz1kLlBiKCk7Yi50ZChjKX19XG5mdW5jdGlvbiBtZShhLGIpe3ZhciBjO2M9Yi5jZCgpO3JldHVybiBuZXcgV28oYyxhLmUucGMoYyxCRChiLmRkKCksMTQpKSl9XG5mdW5jdGlvbiBHc2IoYSxiLGMsZCl7dmFyIGU7ZT1uZXcganRiO2UuYz1iO2UuYj1jO2UuYT1kO2QuYj1jLmE9ZTsrK2EuYn1cbmZ1bmN0aW9uIE5rYihhLGIsYyl7dmFyIGQ7ZD0odENiKGIsYS5jLmxlbmd0aCksYS5jW2JdKTthLmNbYl09YztyZXR1cm4gZH1cbmZ1bmN0aW9uIGxGZChhLGIsYyl7cmV0dXJuIEJEKGI9PW51bGw/anJiKGEuZixudWxsLGMpOkRyYihhLmcsYixjKSwyODEpfVxuZnVuY3Rpb24gZlJiKGEpe3JldHVybiAhIWEuYyYmISFhLmQ/b1JiKGEuYykrJy0+JytvUmIoYS5kKTonZV8nK0ZDYihhKX1cbmZ1bmN0aW9uIEZBYihhLGIpe3JldHVybiAoVXpiKGEpLFdBYihuZXcgWUFiKGEsbmV3IHFCYihiLGEuYSkpKSkuc2QoREFiKX1cbmZ1bmN0aW9uIHRVYigpe3FVYigpO3JldHVybiBPQyhHQyh6UCwxKSxLaWUsMzU2LDAsW2xVYixtVWIsblViLG9VYixwVWJdKX1cbmZ1bmN0aW9uIF9jZCgpe1VjZCgpO3JldHVybiBPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pfVxuZnVuY3Rpb24gRHooYil7QXooKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gRXooYix0aGlzLGFyZ3VtZW50cyk7dmFyIGF9fVxuZnVuY3Rpb24gc3ooKXtpZihEYXRlLm5vdyl7cmV0dXJuIERhdGUubm93KCl9cmV0dXJuIChuZXcgRGF0ZSkuZ2V0VGltZSgpfVxuZnVuY3Rpb24gT1piKGEpe2lmKCFhLmN8fCFhLmQpe3JldHVybiBmYWxzZX1yZXR1cm4gISFhLmMuaSYmYS5jLmk9PWEuZC5pfVxuZnVuY3Rpb24gcHYoYSl7aWYoIWEuYy5TYigpKXt0aHJvdyB2YmIobmV3IHV0Yil9YS5hPXRydWU7cmV0dXJuIGEuYy5VYigpfVxuZnVuY3Rpb24ga28oYSl7YS5pPTA7QWxiKGEuYixudWxsKTtBbGIoYS5jLG51bGwpO2EuYT1udWxsO2EuZT1udWxsOysrYS5nfVxuZnVuY3Rpb24geWNiKGEpe3djYi5jYWxsKHRoaXMsYT09bnVsbD9YaGU6ZmNiKGEpLEpEKGEsNzgpP0JEKGEsNzgpOm51bGwpfVxuZnVuY3Rpb24gUFliKGEpe01ZYigpO3lYYih0aGlzKTt0aGlzLmE9bmV3IFBzYjtOWWIodGhpcyxhKTtEc2IodGhpcy5hLGEpfVxuZnVuY3Rpb24galliKCl7Q2tiKHRoaXMpO3RoaXMuYj1uZXcgZjdjKFBqZSxQamUpO3RoaXMuYT1uZXcgZjdjKFFqZSxRamUpfVxuZnVuY3Rpb24gckFiKGEsYil7dGhpcy5jPTA7dGhpcy5iPWI7anZiLmNhbGwodGhpcyxhLDE3NDkzKTt0aGlzLmE9dGhpcy5jfVxuZnVuY3Rpb24gd3liKGEpe295YigpO2lmKGx5Yil7cmV0dXJufXRoaXMuYz1hO3RoaXMuZT10cnVlO3RoaXMuYT1uZXcgUmtifVxuZnVuY3Rpb24gb3liKCl7b3liPWNjYjtseWI9dHJ1ZTtqeWI9ZmFsc2U7a3liPWZhbHNlO255Yj1mYWxzZTtteWI9ZmFsc2V9XG5mdW5jdGlvbiBDM2MoYSxiKXtpZihKRChiLDE0OSkpe3JldHVybiBkZmIoYS5jLEJEKGIsMTQ5KS5jKX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiB6VWMoYSxiKXt2YXIgYztjPTA7ISFhJiYoYys9YS5mLmEvMik7ISFiJiYoYys9Yi5mLmEvMik7cmV0dXJuIGN9XG5mdW5jdGlvbiBqNGMoYSxiKXt2YXIgYztjPUJEKFdyYihhLmQsYiksMjMpO3JldHVybiBjP2M6QkQoV3JiKGEuZSxiKSwyMyl9XG5mdW5jdGlvbiBMemQoYSl7dGhpcy5iPWE7RnlkLmNhbGwodGhpcyxhKTt0aGlzLmE9QkQoQWpkKHRoaXMuYi5hLDQpLDEyNil9XG5mdW5jdGlvbiBVemQoYSl7dGhpcy5iPWE7JHlkLmNhbGwodGhpcyxhKTt0aGlzLmE9QkQoQWpkKHRoaXMuYi5hLDQpLDEyNil9XG5mdW5jdGlvbiAkS2QoYSl7aWYoIWEudCl7YS50PW5ldyBZTWQoYSk7dnRkKG5ldyBjMGQoYSksMCxhLnQpfXJldHVybiBhLnR9XG5mdW5jdGlvbiBrYWQoKXtlYWQoKTtyZXR1cm4gT0MoR0ModDEsMSksS2llLDEwMywwLFtjYWQsYmFkLGFhZCxfOWMsZGFkXSl9XG5mdW5jdGlvbiBXYmQoKXtUYmQoKTtyZXR1cm4gT0MoR0MoQzEsMSksS2llLDI0OSwwLFtRYmQsU2JkLE9iZCxQYmQsUmJkXSl9XG5mdW5jdGlvbiBRNWMoKXtONWMoKTtyZXR1cm4gT0MoR0MoZTEsMSksS2llLDE3NSwwLFtMNWMsSzVjLEk1YyxNNWMsSjVjXSl9XG5mdW5jdGlvbiBRX2MoKXtOX2MoKTtyZXR1cm4gT0MoR0MoUV8sMSksS2llLDMxNiwwLFtJX2MsSl9jLE1fYyxLX2MsTF9jXSl9XG5mdW5jdGlvbiBfemMoKXtWemMoKTtyZXR1cm4gT0MoR0MoX1csMSksS2llLDMxNSwwLFtVemMsUnpjLFN6YyxRemMsVHpjXSl9XG5mdW5jdGlvbiBzcWMoKXttcWMoKTtyZXR1cm4gT0MoR0MoSVcsMSksS2llLDMzNSwwLFtpcWMsaHFjLGtxYyxscWMsanFjXSl9XG5mdW5jdGlvbiBuJGMoKXtrJGMoKTtyZXR1cm4gT0MoR0MoeV8sMSksS2llLDM1NSwwLFtnJGMsZiRjLGkkYyxoJGMsaiRjXSl9XG5mdW5jdGlvbiBfamMoKXtYamMoKTtyZXR1cm4gT0MoR0ModVYsMSksS2llLDM2MywwLFtUamMsVmpjLFdqYyxVamMsU2pjXSl9XG5mdW5jdGlvbiBGdGMoKXtDdGMoKTtyZXR1cm4gT0MoR0MoVFcsMSksS2llLDE2MywwLFtCdGMseHRjLHl0Yyx6dGMsQXRjXSl9XG5mdW5jdGlvbiBUMGQoKXtUMGQ9Y2NiO3ZhciBhLGI7UjBkPShMRmQoKSxiPW5ldyBNUGQsYik7UzBkPShhPW5ldyBPSmQsYSl9XG5mdW5jdGlvbiB5VWQoYSl7dmFyIGI7aWYoIWEuYyl7Yj1hLnI7SkQoYiw4OCkmJihhLmM9QkQoYiwyNikpfXJldHVybiBhLmN9XG5mdW5jdGlvbiB6YyhhKXthLmU9MzthLmQ9YS5ZYigpO2lmKGEuZSE9Mil7YS5lPTA7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gUkMoYSl7dmFyIGIsYyxkO2I9YSZFamU7Yz1hPj4yMiZFamU7ZD1hPDA/RmplOjA7cmV0dXJuIFRDKGIsYyxkKX1cbmZ1bmN0aW9uIHV5KGEpe3ZhciBiLGMsZCxlO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdO1F6YihiKX19XG5mdW5jdGlvbiBUYyhhLGIpe3ZhciBjLGQ7Yz1CRChJdihhLmMsYiksMTQpO2lmKGMpe2Q9Yy5nYygpO2MuJGIoKTthLmQtPWR9fVxuZnVuY3Rpb24gdGpiKGEsYil7dmFyIGMsZDtjPWIuY2QoKTtkPUF3YihhLGMpO3JldHVybiAhIWQmJnd0YihkLmUsYi5kZCgpKX1cbmZ1bmN0aW9uIFFnYihhLGIpe2lmKGI9PTB8fGEuZT09MCl7cmV0dXJuIGF9cmV0dXJuIGI+MD9paGIoYSxiKTpsaGIoYSwtYil9XG5mdW5jdGlvbiBSZ2IoYSxiKXtpZihiPT0wfHxhLmU9PTApe3JldHVybiBhfXJldHVybiBiPjA/bGhiKGEsYik6aWhiKGEsLWIpfVxuZnVuY3Rpb24gUnIoYSl7aWYoUXIoYSkpe2EuYz1hLmE7cmV0dXJuIGEuYS5QYigpfWVsc2V7dGhyb3cgdmJiKG5ldyB1dGIpfX1cbmZ1bmN0aW9uIFlhYyhhKXt2YXIgYixjO2I9YS5jLmk7Yz1hLmQuaTtyZXR1cm4gYi5rPT0oajBiKCksZTBiKSYmYy5rPT1lMGJ9XG5mdW5jdGlvbiBrWmIoYSl7dmFyIGI7Yj1uZXcgVVpiO3ROYihiLGEpO3lOYihiLChOeWMoKSxqeGMpLG51bGwpO3JldHVybiBifVxuZnVuY3Rpb24gaGlkKGEsYixjKXt2YXIgZDtyZXR1cm4gZD1hLllnKGIpLGQ+PTA/YS5fZyhkLGMsdHJ1ZSk6c2lkKGEsYixjKX1cbmZ1bmN0aW9uIHVIYihhLGIsYyxkKXt2YXIgZTtmb3IoZT0wO2U8ckhiO2UrKyl7bkhiKGEuYVtiLmddW2VdLGMsZFtiLmddKX19XG5mdW5jdGlvbiB2SGIoYSxiLGMsZCl7dmFyIGU7Zm9yKGU9MDtlPHNIYjtlKyspe21IYihhLmFbZV1bYi5nXSxjLGRbYi5nXSl9fVxuZnVuY3Rpb24gdlNkKGEsYixjLGQsZSl7a3hkLmNhbGwodGhpcyxiLGQsZSk7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYT1jfVxuZnVuY3Rpb24gelNkKGEsYixjLGQsZSl7bHhkLmNhbGwodGhpcyxiLGQsZSk7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYT1jfVxuZnVuY3Rpb24gSVNkKGEsYixjLGQsZSl7b3hkLmNhbGwodGhpcyxiLGQsZSk7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYT1jfVxuZnVuY3Rpb24gcVNkKGEsYixjLGQsZSl7b3hkLmNhbGwodGhpcyxiLGQsZSk7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYj1jfVxuZnVuY3Rpb24gbVdkKGEsYixjKXtWVmQuY2FsbCh0aGlzLGMpO3RoaXMuYj1hO3RoaXMuYz1iO3RoaXMuZD0oQ1dkKCksQVdkKX1cbmZ1bmN0aW9uIG94ZChhLGIsYyl7dGhpcy5kPWE7dGhpcy5rPWI/MTowO3RoaXMuZj1jPzE6MDt0aGlzLm89LTE7dGhpcy5wPTB9XG5mdW5jdGlvbiBfNmQoYSxiLGMpe3ZhciBkO2Q9bmV3IGE3ZChhLmEpO0xkKGQsYS5hLmEpO2pyYihkLmYsYixjKTthLmEuYT1kfVxuZnVuY3Rpb24gbHVkKGEsYil7YS5xaShhLmkrMSk7bXVkKGEsYS5pLGEub2koYS5pLGIpKTthLmJpKGEuaSsrLGIpO2EuY2koKX1cbmZ1bmN0aW9uIG91ZChhKXt2YXIgYixjOysrYS5qO2I9YS5nO2M9YS5pO2EuZz1udWxsO2EuaT0wO2EuZGkoYyxiKTthLmNpKCl9XG5mdW5jdGlvbiBPdShhKXt2YXIgYixjO1FiKGEpO2I9SXUoYS5sZW5ndGgpO2M9bmV3IFNrYihiKTtubWIoYyxhKTtyZXR1cm4gY31cbmZ1bmN0aW9uIGttKGEpe3ZhciBiO2I9KFFiKGEpLGE/bmV3IFRrYihhKTpOdShhLktjKCkpKTtzbWIoYik7cmV0dXJuIERtKGIpfVxuZnVuY3Rpb24gS2tiKGEsYil7dmFyIGM7Yz0odENiKGIsYS5jLmxlbmd0aCksYS5jW2JdKTtjQ2IoYS5jLGIsMSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBRYyhhLGIpe3ZhciBjO2M9QkQoYS5jLnhjKGIpLDE0KTshYyYmKGM9YS5pYyhiKSk7cmV0dXJuIGEucGMoYixjKX1cbmZ1bmN0aW9uIGNmYihhLGIpe3ZhciBjLGQ7Yz0odUNiKGEpLGEpO2Q9KHVDYihiKSxiKTtyZXR1cm4gYz09ZD8wOmM8ZD8tMToxfVxuZnVuY3Rpb24gRnBiKGEpe3ZhciBiO2I9YS5lK2EuZjtpZihpc05hTihiKSYmTGRiKGEuZCkpe3JldHVybiBhLmR9cmV0dXJuIGJ9XG5mdW5jdGlvbiB1d2IoYSxiKXshYS5hPyhhLmE9bmV3IFdmYihhLmQpKTpRZmIoYS5hLGEuYik7TmZiKGEuYSxiKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFNiKGEsYil7aWYoYTwwfHxhPmIpe3Rocm93IHZiYihuZXcgcWNiKEpiKGEsYiwnaW5kZXgnKSkpfXJldHVybiBhfVxuZnVuY3Rpb24gemhiKGEsYixjLGQpe3ZhciBlO2U9S0MoV0Qsb2plLDI1LGIsMTUsMSk7QWhiKGUsYSxiLGMsZCk7cmV0dXJuIGV9XG5mdW5jdGlvbiBfQShhLGIpe3ZhciBjO2M9YS5xLmdldEhvdXJzKCkrKGIvNjB8MCk7YS5xLnNldE1pbnV0ZXMoYik7WUEoYSxjKX1cbmZ1bmN0aW9uIEEkYyhhLGIpe3JldHVybiAkd25kLk1hdGgubWluKFM2YyhiLmEsYS5kLmQuYyksUzZjKGIuYixhLmQuZC5jKSl9XG5mdW5jdGlvbiBUaGIoYSxiKXtyZXR1cm4gTkQoYik/Yj09bnVsbD9rcmIoYS5mLG51bGwpOkVyYihhLmcsYik6a3JiKGEuZixiKX1cbmZ1bmN0aW9uIGIxYihhKXt0aGlzLmM9YTt0aGlzLmE9bmV3IG9sYih0aGlzLmMuYSk7dGhpcy5iPW5ldyBvbGIodGhpcy5jLmIpfVxuZnVuY3Rpb24ga1JiKCl7dGhpcy5lPW5ldyBSa2I7dGhpcy5jPW5ldyBSa2I7dGhpcy5kPW5ldyBSa2I7dGhpcy5iPW5ldyBSa2J9XG5mdW5jdGlvbiBNRmIoKXt0aGlzLmc9bmV3IFBGYjt0aGlzLmI9bmV3IFBGYjt0aGlzLmE9bmV3IFJrYjt0aGlzLms9bmV3IFJrYn1cbmZ1bmN0aW9uIEdqYyhhLGIsYyl7dGhpcy5hPWE7dGhpcy5jPWI7dGhpcy5kPWM7RWtiKGIuZSx0aGlzKTtFa2IoYy5iLHRoaXMpfVxuZnVuY3Rpb24gd0JiKGEsYil7ZnZiLmNhbGwodGhpcyxiLnJkKCksYi5xZCgpJi02KTt1Q2IoYSk7dGhpcy5hPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBDQmIoYSxiKXtqdmIuY2FsbCh0aGlzLGIucmQoKSxiLnFkKCkmLTYpO3VDYihhKTt0aGlzLmE9YTt0aGlzLmI9Yn1cbmZ1bmN0aW9uIElCYihhLGIpe252Yi5jYWxsKHRoaXMsYi5yZCgpLGIucWQoKSYtNik7dUNiKGEpO3RoaXMuYT1hO3RoaXMuYj1ifVxuZnVuY3Rpb24gQlFjKGEsYixjKXt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9YztFa2IoYS50LHRoaXMpO0VrYihiLmksdGhpcyl9XG5mdW5jdGlvbiBTUmMoKXt0aGlzLmI9bmV3IFBzYjt0aGlzLmE9bmV3IFBzYjt0aGlzLmI9bmV3IFBzYjt0aGlzLmE9bmV3IFBzYn1cbmZ1bmN0aW9uIGc2Yygpe2c2Yz1jY2I7ZjZjPW5ldyBMc2QoJ29yZy5lY2xpcHNlLmVsay5sYWJlbHMubGFiZWxNYW5hZ2VyJyl9XG5mdW5jdGlvbiBWYWMoKXtWYWM9Y2NiO1VhYz1uZXcgTXNkKCdzZXBhcmF0ZUxheWVyQ29ubmVjdGlvbnMnLChnYmMoKSxmYmMpKX1cbmZ1bmN0aW9uIEhPYygpe0hPYz1jY2I7R09jPW5ldyBJT2MoJ1JFR1VMQVInLDApO0ZPYz1uZXcgSU9jKCdDUklUSUNBTCcsMSl9XG5mdW5jdGlvbiBfQWMoKXtfQWM9Y2NiOyRBYz1uZXcgYUJjKCdTVEFDS0VEJywwKTtaQWM9bmV3IGFCYygnU0VRVUVOQ0VEJywxKX1cbmZ1bmN0aW9uIENfYygpe0NfYz1jY2I7Ql9jPW5ldyBEX2MoJ0ZJWEVEJywwKTtBX2M9bmV3IERfYygnQ0VOVEVSX05PREUnLDEpfVxuZnVuY3Rpb24gUEhjKGEsYil7dmFyIGM7Yz1WSGMoYSxiKTthLmI9bmV3IEJIYyhjLmMubGVuZ3RoKTtyZXR1cm4gT0hjKGEsYyl9XG5mdW5jdGlvbiBLQWQoYSxiLGMpe3ZhciBkOysrYS5lOy0tYS5mO2Q9QkQoYS5kW2JdLiRjKGMpLDEzMyk7cmV0dXJuIGQuZGQoKX1cbmZ1bmN0aW9uIEpKZChhKXt2YXIgYjtpZighYS5hKXtiPWEucjtKRChiLDE0OCkmJihhLmE9QkQoYiwxNDgpKX1yZXR1cm4gYS5hfVxuZnVuY3Rpb24gcG9jKGEpe2lmKGEuYSl7aWYoYS5lKXtyZXR1cm4gcG9jKGEuZSl9fWVsc2V7cmV0dXJuIGF9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBPRGMoYSxiKXtpZihhLnA8Yi5wKXtyZXR1cm4gMX1lbHNlIGlmKGEucD5iLnApe3JldHVybiAtMX1yZXR1cm4gMH1cbmZ1bmN0aW9uIHB2YihhLGIpe3VDYihiKTtpZihhLmM8YS5kKXthLnplKGIsYS5jKyspO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIFFZZChhLGIpe2lmKE1oYihhLmEsYikpe1RoYihhLmEsYik7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gZmQoYSl7dmFyIGIsYztiPWEuY2QoKTtjPUJEKGEuZGQoKSwxNCk7cmV0dXJuICRqKGMuTmMoKSxuZXcgYWgoYikpfVxuZnVuY3Rpb24gc3FiKGEpe3ZhciBiO2I9QkQoWkJiKGEuYixhLmIubGVuZ3RoKSw5KTtyZXR1cm4gbmV3IHhxYihhLmEsYixhLmMpfVxuZnVuY3Rpb24gX3piKGEpe3ZhciBiO1V6YihhKTtiPW5ldyBmQWIoYSxhLmEuZSxhLmEuZHw0KTtyZXR1cm4gbmV3IGJBYihhLGIpfVxuZnVuY3Rpb24gSEFiKGEpe3ZhciBiO1R6YihhKTtiPTA7d2hpbGUoYS5hLnNkKG5ldyBSQmIpKXtiPXdiYihiLDEpfXJldHVybiBifVxuZnVuY3Rpb24gVURjKGEsYixjKXt2YXIgZCxlO2Q9MDtmb3IoZT0wO2U8Yi5sZW5ndGg7ZSsrKXtkKz1hLiRmKGJbZV0sZCxjKX19XG5mdW5jdGlvbiBRSmIoYSxiKXt2YXIgYztpZihhLkMpe2M9QkQoTXBiKGEuYixiKSwxMjQpLm47Yy5kPWEuQy5kO2MuYT1hLkMuYX19XG5mdW5jdGlvbiBNaShhLGIsYyl7UGIoYixhLmUuSGQoKS5nYygpKTtQYihjLGEuYy5IZCgpLmdjKCkpO3JldHVybiBhLmFbYl1bY119XG5mdW5jdGlvbiBVZ2IoYSxiKXtIZ2IoKTt0aGlzLmU9YTt0aGlzLmQ9MTt0aGlzLmE9T0MoR0MoV0QsMSksb2plLDI1LDE1LFtiXSl9XG5mdW5jdGlvbiBkZyhhLGIsYyxkKXt0aGlzLmY9YTt0aGlzLmU9Yjt0aGlzLmQ9Yzt0aGlzLmI9ZDt0aGlzLmM9IWQ/bnVsbDpkLmR9XG5mdW5jdGlvbiBvNWIoYSl7dmFyIGIsYyxkLGU7ZT1hLmQ7Yj1hLmE7Yz1hLmI7ZD1hLmM7YS5kPWM7YS5hPWQ7YS5iPWU7YS5jPWJ9XG5mdW5jdGlvbiBZMmQoYSxiLGMsZCl7WDJkKGEsYixjLE0yZChhLGIsZCxKRChiLDk5KSYmKEJEKGIsMTgpLkJiJlRqZSkhPTApKX1cbmZ1bmN0aW9uIHRhYyhhLGIpe09kZChiLCdMYWJlbCBtYW5hZ2VtZW50JywxKTtSRCh2TmIoYSwoZzZjKCksZjZjKSkpO1FkZChiKX1cbmZ1bmN0aW9uIFNrYihhKXtDa2IodGhpcyk7bUNiKGE+PTAsJ0luaXRpYWwgY2FwYWNpdHkgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1cbmZ1bmN0aW9uIGxIYigpe2xIYj1jY2I7a0hiPWFzKChnSGIoKSxPQyhHQyhwTiwxKSxLaWUsMjMyLDAsW2RIYixlSGIsZkhiXSkpKX1cbmZ1bmN0aW9uIFNIYigpe1NIYj1jY2I7UkhiPWFzKChOSGIoKSxPQyhHQyhzTiwxKSxLaWUsNDYxLDAsW0xIYixLSGIsTUhiXSkpKX1cbmZ1bmN0aW9uIEpJYigpe0pJYj1jY2I7SUliPWFzKChFSWIoKSxPQyhHQyh6TiwxKSxLaWUsNDYyLDAsW0RJYixDSWIsQkliXSkpKX1cbmZ1bmN0aW9uIEt5Yigpe0t5Yj1jY2I7SnliPWFzKChGeWIoKSxPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW0N5YixEeWIsRXliXSkpKX1cbmZ1bmN0aW9uIERUYigpe0RUYj1jY2I7Q1RiPWFzKCh5VGIoKSxPQyhHQyhvUCwxKSxLaWUsMzc5LDAsW3dUYix2VGIseFRiXSkpKX1cbmZ1bmN0aW9uIFdYYigpe1dYYj1jY2I7VlhiPWFzKChSWGIoKSxPQyhHQyhoUSwxKSxLaWUsNDIzLDAsW1FYYixQWGIsT1hiXSkpKX1cbmZ1bmN0aW9uIFpwYygpe1pwYz1jY2I7WXBjPWFzKChScGMoKSxPQyhHQyhHVywxKSxLaWUsMzE0LDAsW1BwYyxPcGMsUXBjXSkpKX1cbmZ1bmN0aW9uIGdxYygpe2dxYz1jY2I7ZnFjPWFzKChicWMoKSxPQyhHQyhIVywxKSxLaWUsMzM3LDAsWyRwYyxhcWMsX3BjXSkpKX1cbmZ1bmN0aW9uIExxYygpe0xxYz1jY2I7S3FjPWFzKChHcWMoKSxPQyhHQyhLVywxKSxLaWUsNDUwLDAsW0VxYyxEcWMsRnFjXSkpKX1cbmZ1bmN0aW9uIEtrYygpe0trYz1jY2I7SmtjPWFzKChGa2MoKSxPQyhHQyh2ViwxKSxLaWUsMzYxLDAsW0VrYyxEa2MsQ2tjXSkpKX1cbmZ1bmN0aW9uIGpzYygpe2pzYz1jY2I7aXNjPWFzKChlc2MoKSxPQyhHQyhSVywxKSxLaWUsMzAzLDAsW2NzYyxkc2MsYnNjXSkpKX1cbmZ1bmN0aW9uIGFzYygpe2FzYz1jY2I7X3JjPWFzKChYcmMoKSxPQyhHQyhRVywxKSxLaWUsMjkyLDAsW1ZyYyxXcmMsVXJjXSkpKX1cbmZ1bmN0aW9uIER6Yygpe0R6Yz1jY2I7Q3pjPWFzKCh4emMoKSxPQyhHQyhaVywxKSxLaWUsMzc4LDAsW3V6Yyx2emMsd3pjXSkpKX1cbmZ1bmN0aW9uIFlBYygpe1lBYz1jY2I7WEFjPWFzKChUQWMoKSxPQyhHQyhlWCwxKSxLaWUsMzc1LDAsW1FBYyxSQWMsU0FjXSkpKX1cbmZ1bmN0aW9uIHlBYygpe3lBYz1jY2I7eEFjPWFzKCh0QWMoKSxPQyhHQyhiWCwxKSxLaWUsMzM5LDAsW3JBYyxxQWMsc0FjXSkpKX1cbmZ1bmN0aW9uIFBBYygpe1BBYz1jY2I7T0FjPWFzKChLQWMoKSxPQyhHQyhkWCwxKSxLaWUsNDUyLDAsW0pBYyxIQWMsSUFjXSkpKX1cbmZ1bmN0aW9uIFFCYygpe1FCYz1jY2I7UEJjPWFzKChMQmMoKSxPQyhHQyhqWCwxKSxLaWUsMzc3LDAsW0pCYyxLQmMsSUJjXSkpKX1cbmZ1bmN0aW9uIHlCYygpe3lCYz1jY2I7eEJjPWFzKCh0QmMoKSxPQyhHQyhoWCwxKSxLaWUsMzM2LDAsW3FCYyxyQmMsc0JjXSkpKX1cbmZ1bmN0aW9uIEhCYygpe0hCYz1jY2I7R0JjPWFzKChDQmMoKSxPQyhHQyhpWCwxKSxLaWUsMzM4LDAsW0JCYyx6QmMsQUJjXSkpKX1cbmZ1bmN0aW9uIHdHYygpe3dHYz1jY2I7dkdjPWFzKChyR2MoKSxPQyhHQyhQWCwxKSxLaWUsNDU0LDAsW29HYyxwR2MscUdjXSkpKX1cbmZ1bmN0aW9uIHpWYygpe3pWYz1jY2I7eVZjPWFzKCh0VmMoKSxPQyhHQyhPJCwxKSxLaWUsNDQyLDAsW3NWYyxxVmMsclZjXSkpKX1cbmZ1bmN0aW9uIHZXYygpe3ZXYz1jY2I7dVdjPWFzKChwV2MoKSxPQyhHQyhZJCwxKSxLaWUsMzgwLDAsW21XYyxuV2Msb1djXSkpKX1cbmZ1bmN0aW9uIEVZYygpe0VZYz1jY2I7RFljPWFzKCh6WWMoKSxPQyhHQyhxXywxKSxLaWUsMzgxLDAsW3hZYyx5WWMsd1ljXSkpKX1cbmZ1bmN0aW9uIHlYYygpe3lYYz1jY2I7eFhjPWFzKChzWGMoKSxPQyhHQyhiXywxKSxLaWUsMjkzLDAsW3FYYyxyWGMscFhjXSkpKX1cbmZ1bmN0aW9uIGJfYygpe2JfYz1jY2I7YV9jPWFzKChZJGMoKSxPQyhHQyhKXywxKSxLaWUsNDM3LDAsW1YkYyxXJGMsWCRjXSkpKX1cbmZ1bmN0aW9uIG1iZCgpe21iZD1jY2I7bGJkPWFzKChoYmQoKSxPQyhHQyh6MSwxKSxLaWUsMzM0LDAsW2ZiZCxlYmQsZ2JkXSkpKX1cbmZ1bmN0aW9uIHZhZCgpe3ZhZD1jY2I7dWFkPWFzKChxYWQoKSxPQyhHQyh1MSwxKSxLaWUsMjcyLDAsW25hZCxvYWQscGFkXSkpKX1cbmZ1bmN0aW9uIGljZCgpe2RjZCgpO3JldHVybiBPQyhHQyhEMSwxKSxLaWUsOTgsMCxbY2NkLGJjZCxhY2QsWmJkLF9iZCwkYmRdKX1cbmZ1bmN0aW9uIGlrZChhLGIpe3JldHVybiAhYS5vJiYoYS5vPW5ldyBkSWQoKFRoZCgpLFFoZCksUzIsYSwwKSkscUFkKGEubyxiKX1cbmZ1bmN0aW9uIE5BZChhKXshYS5nJiYoYS5nPW5ldyBKQ2QpOyFhLmcuZCYmKGEuZy5kPW5ldyBNQmQoYSkpO3JldHVybiBhLmcuZH1cbmZ1bmN0aW9uIHlBZChhKXshYS5nJiYoYS5nPW5ldyBKQ2QpOyFhLmcuYSYmKGEuZy5hPW5ldyBTQmQoYSkpO3JldHVybiBhLmcuYX1cbmZ1bmN0aW9uIEVBZChhKXshYS5nJiYoYS5nPW5ldyBKQ2QpOyFhLmcuYiYmKGEuZy5iPW5ldyBHQmQoYSkpO3JldHVybiBhLmcuYn1cbmZ1bmN0aW9uIEZBZChhKXshYS5nJiYoYS5nPW5ldyBKQ2QpOyFhLmcuYyYmKGEuZy5jPW5ldyBpQ2QoYSkpO3JldHVybiBhLmcuY31cbmZ1bmN0aW9uIEEyZChhLGIsYyl7dmFyIGQsZTtlPW5ldyBwNGQoYixhKTtmb3IoZD0wO2Q8YzsrK2Qpe2Q0ZChlKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIEF0ZChhLGIsYyl7dmFyIGQsZTtpZihjIT1udWxsKXtmb3IoZD0wO2Q8YjsrK2Qpe2U9Y1tkXTthLmZpKGQsZSl9fX1cbmZ1bmN0aW9uIHVoYihhLGIsYyxkKXt2YXIgZTtlPUtDKFdELG9qZSwyNSxiKzEsMTUsMSk7dmhiKGUsYSxiLGMsZCk7cmV0dXJuIGV9XG5mdW5jdGlvbiBLQyhhLGIsYyxkLGUsZil7dmFyIGc7Zz1MQyhlLGQpO2UhPTEwJiZPQyhHQyhhLGYpLGIsYyxlLGcpO3JldHVybiBnfVxuZnVuY3Rpb24gYllkKGEsYixjLGQpeyEhYyYmKGQ9Yy5naChiLGJMZChjLlRnKCksYS5jLkxqKCkpLG51bGwsZCkpO3JldHVybiBkfVxuZnVuY3Rpb24gY1lkKGEsYixjLGQpeyEhYyYmKGQ9Yy5paChiLGJMZChjLlRnKCksYS5jLkxqKCkpLG51bGwsZCkpO3JldHVybiBkfVxuZnVuY3Rpb24gS05iKGEsYixjKXtCRChhLmIsNjUpO0JEKGEuYiw2NSk7QkQoYS5iLDY1KTtIa2IoYS5hLG5ldyBUTmIoYyxiLGEpKX1cbmZ1bmN0aW9uIEFDYihhLGIsYyl7aWYoYTwwfHxiPmN8fGI8YSl7dGhyb3cgdmJiKG5ldyBYZmIoeGtlK2EremtlK2Irb2tlK2MpKX19XG5mdW5jdGlvbiB6Q2IoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgWmRiKCdVbmFibGUgdG8gYWRkIGVsZW1lbnQgdG8gcXVldWUnKSl9fVxuZnVuY3Rpb24gVnpiKGEpe2lmKCFhKXt0aGlzLmM9bnVsbDt0aGlzLmI9bmV3IFJrYn1lbHNle3RoaXMuYz1hO3RoaXMuYj1udWxsfX1cbmZ1bmN0aW9uIGV4YihhLGIpe3BqYi5jYWxsKHRoaXMsYSxiKTt0aGlzLmE9S0MoZEwsemllLDQzNiwyLDAsMSk7dGhpcy5iPXRydWV9XG5mdW5jdGlvbiBfcmIoYSl7V2hiLmNhbGwodGhpcyxhLDApO1RyYih0aGlzKTt0aGlzLmQuYj10aGlzLmQ7dGhpcy5kLmE9dGhpcy5kfVxuZnVuY3Rpb24gVlJjKGEpe3ZhciBiO2I9YS5iO2lmKGIuYj09MCl7cmV0dXJuIG51bGx9cmV0dXJuIEJEKFV0KGIsMCksMTg4KS5ifVxuZnVuY3Rpb24gS3diKGEsYil7dmFyIGM7Yz1uZXcgZnhiO2MuYz10cnVlO2MuZD1iLmRkKCk7cmV0dXJuIEx3YihhLGIuY2QoKSxjKX1cbmZ1bmN0aW9uIGJCKGEsYil7dmFyIGM7Yz1hLnEuZ2V0SG91cnMoKSsoYi8zNjAwfDApO2EucS5zZXRTZWNvbmRzKGIpO1lBKGEsYyl9XG5mdW5jdGlvbiB6R2MoYSxiLGMpe3ZhciBkO2Q9YS5iW2MuYy5wXVtjLnBdO2QuYis9Yi5iO2QuYys9Yi5jO2QuYSs9Yi5hOysrZC5hfVxuZnVuY3Rpb24gUzZjKGEsYil7dmFyIGMsZDtjPWEuYS1iLmE7ZD1hLmItYi5iO3JldHVybiAkd25kLk1hdGguc3FydChjKmMrZCpkKX1cbmZ1bmN0aW9uIElwYygpe0lwYz1jY2I7R3BjPW5ldyBKcGMoJ1FVQURSQVRJQycsMCk7SHBjPW5ldyBKcGMoJ1NDQU5MSU5FJywxKX1cbmZ1bmN0aW9uIGhDYygpe2hDYz1jY2I7Z0NjPWMzYyhlM2MobmV3IGozYywocVViKCksbFViKSwoUzhiKCksbjhiKSkscFViLEo4Yil9XG5mdW5jdGlvbiBsOGMoKXtpOGMoKTtyZXR1cm4gT0MoR0MocjEsMSksS2llLDI5MSwwLFtoOGMsZzhjLGY4YyxkOGMsYzhjLGU4Y10pfVxuZnVuY3Rpb24gSTdjKCl7RjdjKCk7cmV0dXJuIE9DKEdDKG8xLDEpLEtpZSwyNDgsMCxbejdjLEM3YyxEN2MsRTdjLEE3YyxCN2NdKX1cbmZ1bmN0aW9uIERwYygpe0FwYygpO3JldHVybiBPQyhHQyhFVywxKSxLaWUsMjI3LDAsW3dwYyx5cGMsdnBjLHhwYyx6cGMsdXBjXSl9XG5mdW5jdGlvbiBCcmMoKXt5cmMoKTtyZXR1cm4gT0MoR0MoT1csMSksS2llLDI3NSwwLFt3cmMsdHJjLHhyYyx2cmMsdXJjLHJyY10pfVxuZnVuY3Rpb24gb3JjKCl7bHJjKCk7cmV0dXJuIE9DKEdDKE5XLDEpLEtpZSwyNzQsMCxbaXJjLGhyYyxrcmMsZ3JjLGpyYyxmcmNdKX1cbmZ1bmN0aW9uIHJ6Yygpe2x6YygpO3JldHVybiBPQyhHQyhZVywxKSxLaWUsMzEzLDAsW2p6YyxoemMsZnpjLGd6YyxremMsaXpjXSl9XG5mdW5jdGlvbiBXcWMoKXtTcWMoKTtyZXR1cm4gT0MoR0MoTFcsMSksS2llLDI3NiwwLFtOcWMsTXFjLFBxYyxPcWMsUnFjLFFxY10pfVxuZnVuY3Rpb24gdVNjKCl7cVNjKCk7cmV0dXJuIE9DKEdDKHQkLDEpLEtpZSwzMjcsMCxbcFNjLGxTYyxuU2MsbVNjLG9TYyxrU2NdKX1cbmZ1bmN0aW9uIHdjZCgpe3JjZCgpO3JldHVybiBPQyhHQyhFMSwxKSxLaWUsMjczLDAsW3BjZCxuY2Qsb2NkLG1jZCxsY2QscWNkXSl9XG5mdW5jdGlvbiBQYWQoKXtNYWQoKTtyZXR1cm4gT0MoR0ModzEsMSksS2llLDMxMiwwLFtLYWQsSWFkLExhZCxHYWQsSmFkLEhhZF0pfVxuZnVuY3Rpb24gbTBiKCl7ajBiKCk7cmV0dXJuIE9DKEdDKE5RLDEpLEtpZSwyNjcsMCxbaDBiLGcwYixlMGIsaTBiLGYwYixkMGJdKX1cbmZ1bmN0aW9uIG1pYihhKXt5Q2IoISFhLmMpO3hwYihhLmUsYSk7YS5jLlFiKCk7YS5jPW51bGw7YS5iPWtpYihhKTt5cGIoYS5lLGEpfVxuZnVuY3Rpb24gdHNiKGEpe3hwYihhLmMuYS5lLGEpO3NDYihhLmIhPWEuYy5hLmQpO2EuYT1hLmI7YS5iPWEuYi5hO3JldHVybiBhLmF9XG5mdW5jdGlvbiBrU2QoYSl7dmFyIGI7aWYoIWEuYSYmYS5iIT0tMSl7Yj1hLmMuVGcoKTthLmE9WEtkKGIsYS5iKX1yZXR1cm4gYS5hfVxuZnVuY3Rpb24gd3RkKGEsYil7aWYoYS5oaSgpJiZhLkhjKGIpKXtyZXR1cm4gZmFsc2V9ZWxzZXthLlloKGIpO3JldHVybiB0cnVlfX1cbmZ1bmN0aW9uICRIYihhLGIpe3l0YihiLCdIb3Jpem9udGFsIGFsaWdubWVudCBjYW5ub3QgYmUgbnVsbCcpO2EuYj1iO3JldHVybiBhfVxuZnVuY3Rpb24gTGZlKGEsYixjKXt3ZmUoKTt2YXIgZDtkPUtmZShhLGIpO2MmJiEhZCYmTmZlKGEpJiYoZD1udWxsKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZYYihhLGIsYyl7dmFyIGQsZTtmb3IoZT1hLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMzcpO3VYYihkLGIsYyl9fVxuZnVuY3Rpb24gdFhiKGEsYil7dmFyIGMsZDtmb3IoZD1iLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMzcpO3NYYihhLGMsMCwwKX19XG5mdW5jdGlvbiBvamMoYSxiLGMpe3ZhciBkO2EuZFtiLmddPWM7ZD1hLmcuYztkW2IuZ109JHduZC5NYXRoLm1heChkW2IuZ10sYysxKX1cbmZ1bmN0aW9uIEtaYyhhLGIpe3ZhciBjLGQsZTtlPWEucjtkPWEuZDtjPU1aYyhhLGIsdHJ1ZSk7cmV0dXJuIGMuYiE9ZXx8Yy5hIT1kfVxuZnVuY3Rpb24gSmpjKGEsYil7VnJiKGEuZSxiKXx8WHJiKGEuZSxiLG5ldyBQamMoYikpO3JldHVybiBCRChXcmIoYS5lLGIpLDExMyl9XG5mdW5jdGlvbiBCeWIoYSxiLGMsZCl7dUNiKGEpO3VDYihiKTt1Q2IoYyk7dUNiKGQpO3JldHVybiBuZXcgTHliKGEsYixuZXcgVnhiKX1cbmZ1bmN0aW9uIGRJZChhLGIsYyxkKXt0aGlzLnJqKCk7dGhpcy5hPWI7dGhpcy5iPWE7dGhpcy5jPW5ldyBZNWQodGhpcyxiLGMsZCl9XG5mdW5jdGlvbiBvU2QoYSxiLGMsZCxlLGYpe214ZC5jYWxsKHRoaXMsYixkLGUsZik7alNkKHRoaXMpO3RoaXMuYz1hO3RoaXMuYj1jfVxuZnVuY3Rpb24gRVNkKGEsYixjLGQsZSxmKXtteGQuY2FsbCh0aGlzLGIsZCxlLGYpO2pTZCh0aGlzKTt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIEJxZChhLGIsYyl7dmFyIGQsZSxmO2Q9YUMoYSxjKTtlPW51bGw7ISFkJiYoZT1hcWQoZCkpO2Y9ZTtWcWQoYixjLGYpfVxuZnVuY3Rpb24gQ3FkKGEsYixjKXt2YXIgZCxlLGY7ZD1hQyhhLGMpO2U9bnVsbDshIWQmJihlPWFxZChkKSk7Zj1lO1ZxZChiLGMsZil9XG5mdW5jdGlvbiB2MWQoYSxiLGMpe3ZhciBkLGU7ZT0oZD1uVWQoYS5iLGIpLGQpO3JldHVybiAhZT9udWxsOlYxZChwMWQoYSxlKSxjKX1cbmZ1bmN0aW9uIGdpZChhLGIpe3ZhciBjO3JldHVybiBjPWEuWWcoYiksYz49MD9hLl9nKGMsdHJ1ZSx0cnVlKTpzaWQoYSxiLHRydWUpfVxuZnVuY3Rpb24gczZiKGEsYil7cmV0dXJuIEtkYihFZGIoRUQodk5iKGEsKHd0YygpLGh0YykpKSksRWRiKEVEKHZOYihiLGh0YykpKSl9XG5mdW5jdGlvbiBwVWMoKXtwVWM9Y2NiO29VYz1iM2MoYjNjKGczYyhuZXcgajNjLCh5UmMoKSx2UmMpKSwocVNjKCkscFNjKSksbFNjKX1cbmZ1bmN0aW9uIElIYyhhLGIsYyl7dmFyIGQ7ZD1TSGMoYSxiLGMpO2EuYj1uZXcgQkhjKGQuYy5sZW5ndGgpO3JldHVybiBLSGMoYSxkKX1cbmZ1bmN0aW9uIHFoZShhKXtpZihhLmI8PTApdGhyb3cgdmJiKG5ldyB1dGIpOy0tYS5iO2EuYS09YS5jLmM7cmV0dXJuIG1lYihhLmEpfVxuZnVuY3Rpb24gcHRkKGEpe3ZhciBiO2lmKCFhLmEpe3Rocm93IHZiYihuZXcgdnRiKX1iPWEuYTthLmE9WG9kKGEuYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBkQmIoYSl7d2hpbGUoIWEuYSl7aWYoIUhCYihhLmMsbmV3IGhCYihhKSkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiB2cihhKXt2YXIgYjtRYihhKTtpZihKRChhLDE5OCkpe2I9QkQoYSwxOTgpO3JldHVybiBifXJldHVybiBuZXcgd3IoYSl9XG5mdW5jdGlvbiByM2MoYSl7cDNjKCk7QkQoYS5XZSgoWTljKCkseDljKSksMTc0KS5GYygocmNkKCksb2NkKSk7YS5ZZSh3OWMsbnVsbCl9XG5mdW5jdGlvbiBwM2MoKXtwM2M9Y2NiO20zYz1uZXcgdjNjO28zYz1uZXcgeDNjO24zYz1tbigoWTljKCksdzljKSxtM2MsYjljLG8zYyl9XG5mdW5jdGlvbiBmV2MoKXtmV2M9Y2NiO2RXYz1uZXcgaFdjKCdMRUFGX05VTUJFUicsMCk7ZVdjPW5ldyBoV2MoJ05PREVfU0laRScsMSl9XG5mdW5jdGlvbiBVTWMoYSxiLGMpe2EuYT1iO2EuYz1jO2EuYi5hLiRiKCk7T3NiKGEuZCk7YS5lLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSl9XG5mdW5jdGlvbiB5SGMoYSl7YS5hPUtDKFdELG9qZSwyNSxhLmIrMSwxNSwxKTthLmM9S0MoV0Qsb2plLDI1LGEuYiwxNSwxKTthLmQ9MH1cbmZ1bmN0aW9uIE1XYihhLGIpe2lmKGEuYS51ZShiLmQsYS5iKT4wKXtFa2IoYS5jLG5ldyBkV2IoYi5jLGIuZCxhLmQpKTthLmI9Yi5kfX1cbmZ1bmN0aW9uIG51ZChhLGIpe2lmKGEuZz09bnVsbHx8Yj49YS5pKXRocm93IHZiYihuZXcgJHpkKGIsYS5pKSk7cmV0dXJuIGEuZ1tiXX1cbmZ1bmN0aW9uIHBPZChhLGIsYyl7SXRkKGEsYyk7aWYoYyE9bnVsbCYmIWEud2ooYykpe3Rocm93IHZiYihuZXcgdGNiKX1yZXR1cm4gY31cbmZ1bmN0aW9uIEtMZChhKXt2YXIgYjtpZihhLkVrKCkpe2ZvcihiPWEuaS0xO2I+PTA7LS1iKXtxdWQoYSxiKX19cmV0dXJuIHd1ZChhKX1cbmZ1bmN0aW9uIEJ3YihhKXt2YXIgYixjO2lmKCFhLmIpe3JldHVybiBudWxsfWM9YS5iO3doaWxlKGI9Yy5hWzBdKXtjPWJ9cmV0dXJuIGN9XG5mdW5jdGlvbiB1bGIoYSxiKXt2YXIgYyxkO3BDYihiKTtyZXR1cm4gYz0oZD1hLnNsaWNlKDAsYiksUEMoZCxhKSksYy5sZW5ndGg9YixjfVxuZnVuY3Rpb24gS2xiKGEsYixjLGQpe3ZhciBlO2Q9KGlwYigpLCFkP2ZwYjpkKTtlPWEuc2xpY2UoYixjKTtMbGIoZSxhLGIsYywtYixkKX1cbmZ1bmN0aW9uIGJpZChhLGIsYyxkLGUpe3JldHVybiBiPDA/c2lkKGEsYyxkKTpCRChjLDY2KS5OaigpLlBqKGEsYS55aCgpLGIsZCxlKX1cbmZ1bmN0aW9uIGhaZChhKXtpZihKRChhLDE3Mikpe3JldHVybiAnJytCRChhLDE3MikuYX1yZXR1cm4gYT09bnVsbD9udWxsOmZjYihhKX1cbmZ1bmN0aW9uIGlaZChhKXtpZihKRChhLDE3Mikpe3JldHVybiAnJytCRChhLDE3MikuYX1yZXR1cm4gYT09bnVsbD9udWxsOmZjYihhKX1cbmZ1bmN0aW9uIG5EYihhLGIpe2lmKGIuYSl7dGhyb3cgdmJiKG5ldyBoeihIa2UpKX1RcWIoYS5hLGIpO2IuYT1hOyFhLmomJihhLmo9Yil9XG5mdW5jdGlvbiBxQmIoYSxiKXtudmIuY2FsbCh0aGlzLGIucmQoKSxiLnFkKCkmLTE2NDQ5KTt1Q2IoYSk7dGhpcy5hPWE7dGhpcy5jPWJ9XG5mdW5jdGlvbiBUaShhLGIpe3ZhciBjLGQ7ZD1iL2EuYy5IZCgpLmdjKCl8MDtjPWIlYS5jLkhkKCkuZ2MoKTtyZXR1cm4gTWkoYSxkLGMpfVxuZnVuY3Rpb24gTkhiKCl7TkhiPWNjYjtMSGI9bmV3IE9IYihqbGUsMCk7S0hiPW5ldyBPSGIoZ2xlLDEpO01IYj1uZXcgT0hiKGtsZSwyKX1cbmZ1bmN0aW9uIGx4Yigpe2x4Yj1jY2I7aHhiPW5ldyBteGIoJ0FsbCcsMCk7aXhiPW5ldyByeGI7anhiPW5ldyB0eGI7a3hiPW5ldyB3eGJ9XG5mdW5jdGlvbiB6eGIoKXt6eGI9Y2NiO3l4Yj1hcygobHhiKCksT0MoR0MoaUwsMSksS2llLDI5NywwLFtoeGIsaXhiLGp4YixreGJdKSkpfVxuZnVuY3Rpb24gdVdiKCl7dVdiPWNjYjt0V2I9YXMoKGxXYigpLE9DKEdDKFNQLDEpLEtpZSw0MDUsMCxbaFdiLGtXYixpV2IsaldiXSkpKX1cbmZ1bmN0aW9uIEFMYigpe0FMYj1jY2I7ekxiPWFzKCh2TGIoKSxPQyhHQyhQTiwxKSxLaWUsNDA2LDAsW3VMYixyTGIsc0xiLHRMYl0pKSl9XG5mdW5jdGlvbiBXTWIoKXtXTWI9Y2NiO1ZNYj1hcygoUk1iKCksT0MoR0Moak8sMSksS2llLDMyMywwLFtPTWIsTk1iLFBNYixRTWJdKSkpfVxuZnVuY3Rpb24gV09iKCl7V09iPWNjYjtWT2I9YXMoKFJPYigpLE9DKEdDKENPLDEpLEtpZSwzOTQsMCxbT09iLE5PYixQT2IsUU9iXSkpKX1cbmZ1bmN0aW9uIEdSYygpe0dSYz1jY2I7RlJjPWFzKCh5UmMoKSxPQyhHQyhoJCwxKSxLaWUsMzkzLDAsW3VSYyx2UmMsd1JjLHhSY10pKSl9XG5mdW5jdGlvbiBtYmMoKXttYmM9Y2NiO2xiYz1hcygoZ2JjKCksT0MoR0MoVlMsMSksS2llLDM2MCwwLFtmYmMsZGJjLGViYyxjYmNdKSkpfVxuZnVuY3Rpb24gb1hjKCl7b1hjPWNjYjtuWGM9YXMoKGlYYygpLE9DKEdDKGFfLDEpLEtpZSwzNDAsMCxbaFhjLGZYYyxnWGMsZVhjXSkpKX1cbmZ1bmN0aW9uIEZqYygpe0ZqYz1jY2I7RWpjPWFzKChBamMoKSxPQyhHQyhtViwxKSxLaWUsNDExLDAsW3dqYyx4amMseWpjLHpqY10pKSl9XG5mdW5jdGlvbiBQemMoKXtQemM9Y2NiO096Yz1hcygoSXpjKCksT0MoR0MoJFcsMSksS2llLDE5NywwLFtHemMsSHpjLEZ6YyxFemNdKSkpfVxuZnVuY3Rpb24gdWdkKCl7dWdkPWNjYjt0Z2Q9YXMoKHBnZCgpLE9DKEdDKGsyLDEpLEtpZSwzOTYsMCxbbWdkLG5nZCxsZ2Qsb2dkXSkpKX1cbmZ1bmN0aW9uIHhiZCgpe3hiZD1jY2I7d2JkPWFzKChyYmQoKSxPQyhHQyhBMSwxKSxLaWUsMjg1LDAsW3FiZCxuYmQsb2JkLHBiZF0pKSl9XG5mdW5jdGlvbiBGYWQoKXtGYWQ9Y2NiO0VhZD1hcygoQWFkKCksT0MoR0ModjEsMSksS2llLDIxOCwwLFt6YWQseGFkLHdhZCx5YWRdKSkpfVxuZnVuY3Rpb24gSWVkKCl7SWVkPWNjYjtIZWQ9YXMoKERlZCgpLE9DKEdDKE8xLDEpLEtpZSwzMTEsMCxbQ2VkLHplZCxCZWQsQWVkXSkpKX1cbmZ1bmN0aW9uIHlkZCgpe3lkZD1jY2I7eGRkPWFzKCh0ZGQoKSxPQyhHQyhJMSwxKSxLaWUsMzc0LDAsW3JkZCxzZGQscWRkLHBkZF0pKSl9XG5mdW5jdGlvbiBBOWQoKXtBOWQ9Y2NiO1NtZCgpO3g5ZD1QamU7dzlkPVFqZTt6OWQ9bmV3IE5kYihQamUpO3k5ZD1uZXcgTmRiKFFqZSl9XG5mdW5jdGlvbiBfcWMoKXtfcWM9Y2NiOyRxYz1uZXcgYXJjKGFuZSwwKTtacWM9bmV3IGFyYygnSU1QUk9WRV9TVFJBSUdIVE5FU1MnLDEpfVxuZnVuY3Rpb24gZUljKGEsYil7RkhjKCk7cmV0dXJuIEVrYihhLG5ldyB2Z2QoYixtZWIoYi5lLmMubGVuZ3RoK2IuZy5jLmxlbmd0aCkpKX1cbmZ1bmN0aW9uIGdJYyhhLGIpe0ZIYygpO3JldHVybiBFa2IoYSxuZXcgdmdkKGIsbWViKGIuZS5jLmxlbmd0aCtiLmcuYy5sZW5ndGgpKSl9XG5mdW5jdGlvbiBQQyhhLGIpe0hDKGIpIT0xMCYmT0MocmIoYiksYi5obSxiLl9fZWxlbWVudFR5cGVJZCQsSEMoYiksYSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBMa2IoYSxiKXt2YXIgYztjPUprYihhLGIsMCk7aWYoYz09LTEpe3JldHVybiBmYWxzZX1La2IoYSxjKTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIFpyYihhLGIpe3ZhciBjO2M9QkQoVGhiKGEuZSxiKSwzODcpO2lmKGMpe2pzYihjKTtyZXR1cm4gYy5lfXJldHVybiBudWxsfVxuZnVuY3Rpb24gSmJiKGEpe3ZhciBiO2lmKEZiYihhKSl7Yj0wLWE7aWYoIWlzTmFOKGIpKXtyZXR1cm4gYn19cmV0dXJuIHpiYihoRChhKSl9XG5mdW5jdGlvbiBKa2IoYSxiLGMpe2Zvcig7YzxhLmMubGVuZ3RoOysrYyl7aWYod3RiKGIsYS5jW2NdKSl7cmV0dXJuIGN9fXJldHVybiAtMX1cbmZ1bmN0aW9uIFNBYihhLGIsYyl7dmFyIGQ7VHpiKGEpO2Q9bmV3IE5CYjtkLmE9YjthLmEuTmIobmV3IFZCYihkLGMpKTtyZXR1cm4gZC5hfVxuZnVuY3Rpb24gYUFiKGEpe3ZhciBiO1R6YihhKTtiPUtDKFVELFZqZSwyNSwwLDE1LDEpO191YihhLmEsbmV3IGtBYihiKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBhamMoYSl7dmFyIGIsYztjPUJEKElrYihhLmosMCksMTEpO2I9QkQodk5iKGMsKHd0YygpLCRzYykpLDExKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHljKGEpe3ZhciBiO2lmKCF4YyhhKSl7dGhyb3cgdmJiKG5ldyB1dGIpfWEuZT0xO2I9YS5kO2EuZD1udWxsO3JldHVybiBifVxuZnVuY3Rpb24gd3UoYSxiKXt2YXIgYzt0aGlzLmY9YTt0aGlzLmI9YjtjPUJEKE9oYihhLmIsYiksMjgzKTt0aGlzLmM9IWM/bnVsbDpjLmJ9XG5mdW5jdGlvbiBZZ2MoKXtIZ2MoKTt0aGlzLmI9bmV3IExxYjt0aGlzLmY9bmV3IExxYjt0aGlzLmc9bmV3IExxYjt0aGlzLmU9bmV3IExxYn1cbmZ1bmN0aW9uIFRuYyhhLGIpe3RoaXMuYT1LQyhPUSxrbmUsMTAsYS5hLmMubGVuZ3RoLDAsMSk7UWtiKGEuYSx0aGlzLmEpO3RoaXMuYj1ifVxuZnVuY3Rpb24gem9jKGEpe3ZhciBiO2ZvcihiPWEucCsxO2I8YS5jLmEuYy5sZW5ndGg7KytiKXstLUJEKElrYihhLmMuYSxiKSwxMCkucH19XG5mdW5jdGlvbiBSd2QoYSl7dmFyIGI7Yj1hLkFpKCk7YiE9bnVsbCYmYS5kIT0tMSYmQkQoYiw5MikuTmcoYSk7ISFhLmkmJmEuaS5GaSgpfVxuZnVuY3Rpb24gckZkKGEpe1B5KHRoaXMpO3RoaXMuZz0hYT9udWxsOld5KGEsYS4kZCgpKTt0aGlzLmY9YTtSeSh0aGlzKTt0aGlzLl9kKCl9XG5mdW5jdGlvbiBwU2QoYSxiLGMsZCxlLGYsZyl7bnhkLmNhbGwodGhpcyxiLGQsZSxmLGcpO2pTZCh0aGlzKTt0aGlzLmM9YTt0aGlzLmI9Y31cbmZ1bmN0aW9uIEF5YihhLGIsYyxkLGUpe3VDYihhKTt1Q2IoYik7dUNiKGMpO3VDYihkKTt1Q2IoZSk7cmV0dXJuIG5ldyBMeWIoYSxiLGQpfVxuZnVuY3Rpb24gQjJjKGEsYil7aWYoYjwwKXt0aHJvdyB2YmIobmV3IHFjYihlc2UrYikpfUEyYyhhLGIrMSk7cmV0dXJuIElrYihhLmosYil9XG5mdW5jdGlvbiBPYihhLGIsYyxkKXtpZighYSl7dGhyb3cgdmJiKG5ldyBXZGIoaGMoYixPQyhHQyhTSSwxKSxVaGUsMSw1LFtjLGRdKSkpKX19XG5mdW5jdGlvbiBkRGIoYSxiKXtyZXR1cm4gd3RiKGIsSWtiKGEuZiwwKSl8fHd0YihiLElrYihhLmYsMSkpfHx3dGIoYixJa2IoYS5mLDIpKX1cbmZ1bmN0aW9uIGdoZChhLGIpe2VjZChCRChCRChhLmYsMzMpLldlKChZOWMoKSx0OWMpKSw5OCkpJiZOQ2QoWW9kKEJEKGEuZiwzMykpLGIpfVxuZnVuY3Rpb24gcDFkKGEsYil7dmFyIGMsZDtjPUJEKGIsNjc1KTtkPWMuT2goKTshZCYmYy5SaChkPW5ldyBZMWQoYSxiKSk7cmV0dXJuIGR9XG5mdW5jdGlvbiBxMWQoYSxiKXt2YXIgYyxkO2M9QkQoYiw2NzcpO2Q9Yy5waygpOyFkJiZjLnRrKGQ9bmV3IGoyZChhLGIpKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFFTZChhKXtpZighYS5iKXthLmI9bmV3IFVUZChhLGo1LGEpOyFhLmEmJihhLmE9bmV3IGZUZChhLGEpKX1yZXR1cm4gYS5ifVxuZnVuY3Rpb24geVRiKCl7eVRiPWNjYjt3VGI9bmV3IHpUYignWFknLDApO3ZUYj1uZXcgelRiKCdYJywxKTt4VGI9bmV3IHpUYignWScsMil9XG5mdW5jdGlvbiBFSWIoKXtFSWI9Y2NiO0RJYj1uZXcgRkliKCdUT1AnLDApO0NJYj1uZXcgRkliKGdsZSwxKTtCSWI9bmV3IEZJYihtbGUsMil9XG5mdW5jdGlvbiBlc2MoKXtlc2M9Y2NiO2NzYz1uZXcgZnNjKGFuZSwwKTtkc2M9bmV3IGZzYygnVE9QJywxKTtic2M9bmV3IGZzYyhtbGUsMil9XG5mdW5jdGlvbiBCQWMoKXtCQWM9Y2NiO3pBYz1uZXcgQ0FjKCdJTlBVVF9PUkRFUicsMCk7QUFjPW5ldyBDQWMoJ1BPUlRfREVHUkVFJywxKX1cbmZ1bmN0aW9uIHdEKCl7d0Q9Y2NiO3NEPVRDKEVqZSxFamUsNTI0Mjg3KTt0RD1UQygwLDAsR2plKTt1RD1SQygxKTtSQygyKTt2RD1SQygwKX1cbmZ1bmN0aW9uIFdEYyhhLGIsYyl7YS5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpOyREYyhhLGIsYyk7YS5hLmMubGVuZ3RoPT0wfHxURGMoYSxiKX1cbmZ1bmN0aW9uIHJmYihhKXt2YXIgYixjO2M9YS5sZW5ndGg7Yj1LQyhURCwkaWUsMjUsYywxNSwxKTtmZmIoYSwwLGMsYiwwKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFpZChhKXt2YXIgYjtpZighYS5kaCgpKXtiPWFMZChhLlRnKCkpLWEuQWgoKTthLnBoKCkuYmsoYil9cmV0dXJuIGEuUGcoKX1cbmZ1bmN0aW9uIHhqZChhKXt2YXIgYjtiPUNEKEFqZChhLDMyKSk7aWYoYj09bnVsbCl7eWpkKGEpO2I9Q0QoQWpkKGEsMzIpKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGlpZChhLGIpe3ZhciBjO2M9YkxkKGEuZCxiKTtyZXR1cm4gYz49MD9maWQoYSxjLHRydWUsdHJ1ZSk6c2lkKGEsYix0cnVlKX1cbmZ1bmN0aW9uIHZnYyhhLGIpe3FnYygpO3ZhciBjLGQ7Yz11Z2MoYSk7ZD11Z2MoYik7cmV0dXJuICEhYyYmISFkJiYhb21iKGMuayxkLmspfVxuZnVuY3Rpb24gR3FkKGEsYil7ZGxkKGEsYj09bnVsbHx8TGRiKCh1Q2IoYiksYikpfHxpc05hTigodUNiKGIpLGIpKT8wOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gSHFkKGEsYil7ZWxkKGEsYj09bnVsbHx8TGRiKCh1Q2IoYiksYikpfHxpc05hTigodUNiKGIpLGIpKT8wOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gSXFkKGEsYil7Y2xkKGEsYj09bnVsbHx8TGRiKCh1Q2IoYiksYikpfHxpc05hTigodUNiKGIpLGIpKT8wOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gSnFkKGEsYil7YWxkKGEsYj09bnVsbHx8TGRiKCh1Q2IoYiksYikpfHxpc05hTigodUNiKGIpLGIpKT8wOih1Q2IoYiksYikpfVxuZnVuY3Rpb24gYWdkKGEpeyghdGhpcy5xPyhtbWIoKSxtbWIoKSxrbWIpOnRoaXMucSkuQWMoIWEucT8obW1iKCksbW1iKCksa21iKTphLnEpfVxuZnVuY3Rpb24gUzJkKGEsYil7cmV0dXJuIEpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MD9uZXcgczRkKGIsYSk6bmV3IHA0ZChiLGEpfVxuZnVuY3Rpb24gVTJkKGEsYil7cmV0dXJuIEpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MD9uZXcgczRkKGIsYSk6bmV3IHA0ZChiLGEpfVxuZnVuY3Rpb24gSU5iKGEsYil7SE5iPW5ldyB0T2I7Rk5iPWI7R05iPWE7QkQoR05iLmIsNjUpO0tOYihHTmIsSE5iLG51bGwpO0pOYihHTmIpfVxuZnVuY3Rpb24gdXVkKGEsYixjKXt2YXIgZDtkPWEuZ1tiXTttdWQoYSxiLGEub2koYixjKSk7YS5naShiLGMsZCk7YS5jaSgpO3JldHVybiBkfVxuZnVuY3Rpb24gRnRkKGEsYil7dmFyIGM7Yz1hLlhjKGIpO2lmKGM+PTApe2EuJGMoYyk7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gWUlkKGEpe3ZhciBiO2lmKGEuZCE9YS5yKXtiPXdJZChhKTthLmU9ISFiJiZiLkNqKCk9PUJ2ZTthLmQ9Yn1yZXR1cm4gYS5lfVxuZnVuY3Rpb24gZnIoYSxiKXt2YXIgYztRYihhKTtRYihiKTtjPWZhbHNlO3doaWxlKGIuT2IoKSl7Yz1jfGEuRmMoYi5QYigpKX1yZXR1cm4gY31cbmZ1bmN0aW9uIFdyYihhLGIpe3ZhciBjO2M9QkQoT2hiKGEuZSxiKSwzODcpO2lmKGMpe1lyYihhLGMpO3JldHVybiBjLmV9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBVQShhKXt2YXIgYixjO2I9YS82MHwwO2M9YSU2MDtpZihjPT0wKXtyZXR1cm4gJycrYn1yZXR1cm4gJycrYisnOicrKCcnK2MpfVxuZnVuY3Rpb24gTEFiKGEsYil7dmFyIGMsZDtVemIoYSk7ZD1uZXcgSUJiKGIsYS5hKTtjPW5ldyBmQmIoZCk7cmV0dXJuIG5ldyBZQWIoYSxjKX1cbmZ1bmN0aW9uIHRCKGQsYSl7dmFyIGI9ZC5hW2FdO3ZhciBjPShyQygpLHFDKVt0eXBlb2YgYl07cmV0dXJuIGM/YyhiKTp4Qyh0eXBlb2YgYil9XG5mdW5jdGlvbiB5emMoYSl7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBPaGU7Y2FzZSAxOnJldHVybiAtMTtkZWZhdWx0OnJldHVybiAwO319XG5mdW5jdGlvbiBvRChhKXtpZihlRChhLCh3RCgpLHZEKSk8MCl7cmV0dXJuIC1hRChoRChhKSl9cmV0dXJuIGEubCthLm0qSGplK2EuaCpJamV9XG5mdW5jdGlvbiBIQyhhKXtyZXR1cm4gYS5fX2VsZW1lbnRUeXBlQ2F0ZWdvcnkkPT1udWxsPzEwOmEuX19lbGVtZW50VHlwZUNhdGVnb3J5JH1cbmZ1bmN0aW9uIGR1YihhKXt2YXIgYjtiPWEuYi5jLmxlbmd0aD09MD9udWxsOklrYihhLmIsMCk7YiE9bnVsbCYmZnViKGEsMCk7cmV0dXJuIGJ9XG5mdW5jdGlvbiB1QShhLGIpe3doaWxlKGJbMF08YS5sZW5ndGgmJmhmYignIFxcdFxcclxcbicsd2ZiKGJmYihhLGJbMF0pKSk+PTApeysrYlswXX19XG5mdW5jdGlvbiBzZ2IoYSxiKXt0aGlzLmU9Yjt0aGlzLmE9dmdiKGEpO3RoaXMuYTw1ND8odGhpcy5mPVNiYihhKSk6KHRoaXMuYz1naGIoYSkpfVxuZnVuY3Rpb24gdmdlKGEsYixjLGQpe3dmZSgpO3hmZS5jYWxsKHRoaXMsMjYpO3RoaXMuYz1hO3RoaXMuYT1iO3RoaXMuZD1jO3RoaXMuYj1kfVxuZnVuY3Rpb24gRUEoYSxiLGMpe3ZhciBkLGU7ZD0xMDtmb3IoZT0wO2U8Yy0xO2UrKyl7YjxkJiYoYS5hKz0nMCcsYSk7ZCo9MTB9YS5hKz1ifVxuZnVuY3Rpb24gSGhlKGEsYil7dmFyIGM7Yz0wO3doaWxlKGEuZSE9YS5pLmdjKCkpe1FyZChiLER5ZChhKSxtZWIoYykpO2MhPU9oZSYmKytjfX1cbmZ1bmN0aW9uIHhIYyhhLGIpe3ZhciBjOysrYS5kOysrYS5jW2JdO2M9YisxO3doaWxlKGM8YS5hLmxlbmd0aCl7KythLmFbY107Yys9YyYtY319XG5mdW5jdGlvbiBRZ2MoYSxiKXt2YXIgYyxkLGU7ZT1iLmMuaTtjPUJEKE9oYihhLmYsZSksNTcpO2Q9Yy5kLmMtYy5lLmM7cDdjKGIuYSxkLDApfVxuZnVuY3Rpb24gU2NiKGEpe3ZhciBiLGM7Yj1hKzEyODtjPShVY2IoKSxUY2IpW2JdOyFjJiYoYz1UY2JbYl09bmV3IE1jYihhKSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBlcyhhLGIpe3ZhciBjO3VDYihiKTtjPWFbJzonK2JdO25DYighIWMsT0MoR0MoU0ksMSksVWhlLDEsNSxbYl0pKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE16KGEpe3ZhciBiLGM7aWYoYS5iKXtjPW51bGw7ZG97Yj1hLmI7YS5iPW51bGw7Yz1QeihiLGMpfXdoaWxlKGEuYik7YS5iPWN9fVxuZnVuY3Rpb24gTHooYSl7dmFyIGIsYztpZihhLmEpe2M9bnVsbDtkb3tiPWEuYTthLmE9bnVsbDtjPVB6KGIsYyl9d2hpbGUoYS5hKTthLmE9Y319XG5mdW5jdGlvbiBEcWIoYSl7dmFyIGI7KythLmE7Zm9yKGI9YS5jLmEubGVuZ3RoO2EuYTxiOysrYS5hKXtpZihhLmMuYlthLmFdKXtyZXR1cm59fX1cbmZ1bmN0aW9uIFM5YihhLGIpe3ZhciBjLGQ7ZD1iLmM7Zm9yKGM9ZCsxO2M8PWIuZjtjKyspe2EuYVtjXT5hLmFbZF0mJihkPWMpfXJldHVybiBkfVxuZnVuY3Rpb24gZmljKGEsYil7dmFyIGM7Yz1KeShhLmUuYyxiLmUuYyk7aWYoYz09MCl7cmV0dXJuIEtkYihhLmUuZCxiLmUuZCl9cmV0dXJuIGN9XG5mdW5jdGlvbiBPZ2IoYSxiKXtpZihiLmU9PTApe3JldHVybiBHZ2J9aWYoYS5lPT0wKXtyZXR1cm4gR2difXJldHVybiBEaGIoKSxFaGIoYSxiKX1cbmZ1bmN0aW9uIG5DYihhLGIpe2lmKCFhKXt0aHJvdyB2YmIobmV3IFdkYihEQ2IoJ0VudW0gY29uc3RhbnQgdW5kZWZpbmVkOiAlcycsYikpKX19XG5mdW5jdGlvbiBBV2IoKXtBV2I9Y2NiO3hXYj1uZXcgWFdiO3lXYj1uZXcgX1diO3ZXYj1uZXcgZFhiO3dXYj1uZXcgaFhiO3pXYj1uZXcgbFhifVxuZnVuY3Rpb24gVUViKCl7VUViPWNjYjtTRWI9bmV3IFZFYignQllfU0laRScsMCk7VEViPW5ldyBWRWIoJ0JZX1NJWkVfQU5EX1NIQVBFJywxKX1cbmZ1bmN0aW9uIFhSYigpe1hSYj1jY2I7VlJiPW5ldyBZUmIoJ0VBREVTJywwKTtXUmI9bmV3IFlSYignRlJVQ0hURVJNQU5fUkVJTkdPTEQnLDEpfVxuZnVuY3Rpb24geHFjKCl7eHFjPWNjYjt2cWM9bmV3IHlxYygnUkVBRElOR19ESVJFQ1RJT04nLDApO3dxYz1uZXcgeXFjKCdST1RBVElPTicsMSl9XG5mdW5jdGlvbiB1cWMoKXt1cWM9Y2NiO3RxYz1hcygobXFjKCksT0MoR0MoSVcsMSksS2llLDMzNSwwLFtpcWMsaHFjLGtxYyxscWMsanFjXSkpKX1cbmZ1bmN0aW9uIGJBYygpe2JBYz1jY2I7YUFjPWFzKChWemMoKSxPQyhHQyhfVywxKSxLaWUsMzE1LDAsW1V6YyxSemMsU3pjLFF6YyxUemNdKSkpfVxuZnVuY3Rpb24gYmtjKCl7YmtjPWNjYjtha2M9YXMoKFhqYygpLE9DKEdDKHVWLDEpLEtpZSwzNjMsMCxbVGpjLFZqYyxXamMsVWpjLFNqY10pKSl9XG5mdW5jdGlvbiBIdGMoKXtIdGM9Y2NiO0d0Yz1hcygoQ3RjKCksT0MoR0MoVFcsMSksS2llLDE2MywwLFtCdGMseHRjLHl0Yyx6dGMsQXRjXSkpKX1cbmZ1bmN0aW9uIFNfYygpe1NfYz1jY2I7Ul9jPWFzKChOX2MoKSxPQyhHQyhRXywxKSxLaWUsMzE2LDAsW0lfYyxKX2MsTV9jLEtfYyxMX2NdKSkpfVxuZnVuY3Rpb24gUzVjKCl7UzVjPWNjYjtSNWM9YXMoKE41YygpLE9DKEdDKGUxLDEpLEtpZSwxNzUsMCxbTDVjLEs1YyxJNWMsTTVjLEo1Y10pKSl9XG5mdW5jdGlvbiBwJGMoKXtwJGM9Y2NiO28kYz1hcygoayRjKCksT0MoR0MoeV8sMSksS2llLDM1NSwwLFtnJGMsZiRjLGkkYyxoJGMsaiRjXSkpKX1cbmZ1bmN0aW9uIHZVYigpe3ZVYj1jY2I7dVViPWFzKChxVWIoKSxPQyhHQyh6UCwxKSxLaWUsMzU2LDAsW2xVYixtVWIsblViLG9VYixwVWJdKSkpfVxuZnVuY3Rpb24gbWFkKCl7bWFkPWNjYjtsYWQ9YXMoKGVhZCgpLE9DKEdDKHQxLDEpLEtpZSwxMDMsMCxbY2FkLGJhZCxhYWQsXzljLGRhZF0pKSl9XG5mdW5jdGlvbiBZYmQoKXtZYmQ9Y2NiO1hiZD1hcygoVGJkKCksT0MoR0MoQzEsMSksS2llLDI0OSwwLFtRYmQsU2JkLE9iZCxQYmQsUmJkXSkpKX1cbmZ1bmN0aW9uIGNkZCgpe2NkZD1jY2I7YmRkPWFzKChVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKSl9XG5mdW5jdGlvbiBfMWMoYSxiKXt2YXIgYztjPUJEKE9oYihhLmEsYiksMTM0KTtpZighYyl7Yz1uZXcgek5iO1JoYihhLmEsYixjKX1yZXR1cm4gY31cbmZ1bmN0aW9uIGhvYyhhKXt2YXIgYjtiPUJEKHZOYihhLCh3dGMoKSx1c2MpKSwzMDUpO2lmKGIpe3JldHVybiBiLmE9PWF9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gaW9jKGEpe3ZhciBiO2I9QkQodk5iKGEsKHd0YygpLHVzYykpLDMwNSk7aWYoYil7cmV0dXJuIGIuaT09YX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBKdWIoYSxiKXt1Q2IoYik7SXViKGEpO2lmKGEuZC5PYigpKXtiLnRkKGEuZC5QYigpKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBPeShhKXtpZih5YmIoYSxPaGUpPjApe3JldHVybiBPaGV9aWYoeWJiKGEsUmllKTwwKXtyZXR1cm4gUmllfXJldHVybiBUYmIoYSl9XG5mdW5jdGlvbiBDdihhKXtpZihhPDMpe1hqKGEsSGllKTtyZXR1cm4gYSsxfWlmKGE8SWllKXtyZXR1cm4gUUQoYS8wLjc1KzEpfXJldHVybiBPaGV9XG5mdW5jdGlvbiBYS2QoYSxiKXt2YXIgYztjPShhLmk9PW51bGwmJlRLZChhKSxhLmkpO3JldHVybiBiPj0wJiZiPGMubGVuZ3RoP2NbYl06bnVsbH1cbmZ1bmN0aW9uIGNDKGEsYixjKXt2YXIgZDtpZihiPT1udWxsKXt0aHJvdyB2YmIobmV3IEdlYil9ZD1hQyhhLGIpO2RDKGEsYixjKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIEVtYyhhKXthLmE+PS0wLjAxJiZhLmE8PXBsZSYmKGEuYT0wKTthLmI+PS0wLjAxJiZhLmI8PXBsZSYmKGEuYj0wKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHNmYihhLGIpe3JldHVybiBiPT0obnRiKCksbnRiKCksbXRiKT9hLnRvTG9jYWxlTG93ZXJDYXNlKCk6YS50b0xvd2VyQ2FzZSgpfVxuZnVuY3Rpb24gaWRiKGEpe3JldHVybiAoKGEuaSYyKSE9MD8naW50ZXJmYWNlICc6KGEuaSYxKSE9MD8nJzonY2xhc3MgJykrKGZkYihhKSxhLm8pfVxuZnVuY3Rpb24gUG5kKGEpe3ZhciBiLGM7Yz0oYj1uZXcgU1NkLGIpO3d0ZCgoIWEucSYmKGEucT1uZXcgY1VkKG41LGEsMTEsMTApKSxhLnEpLGMpfVxuZnVuY3Rpb24gUGRkKGEsYil7dmFyIGM7Yz1iPjA/Yi0xOmI7cmV0dXJuIFZkZChXZGQoWGRkKFlkZChuZXcgWmRkLGMpLGEubiksYS5qKSxhLmspfVxuZnVuY3Rpb24gdTJkKGEsYixjLGQpe3ZhciBlO2Euaj0tMTtReGQoYSxJMmQoYSxiLGMpLChRNmQoKSxlPUJEKGIsNjYpLk1qKCksZS5PayhkKSkpfVxuZnVuY3Rpb24gVldiKGEpe3RoaXMuZz1hO3RoaXMuZj1uZXcgUmtiO3RoaXMuYT0kd25kLk1hdGgubWluKHRoaXMuZy5jLmMsdGhpcy5nLmQuYyl9XG5mdW5jdGlvbiBtRGIoYSl7dGhpcy5iPW5ldyBSa2I7dGhpcy5hPW5ldyBSa2I7dGhpcy5jPW5ldyBSa2I7dGhpcy5kPW5ldyBSa2I7dGhpcy5lPWF9XG5mdW5jdGlvbiBDbmMoYSxiKXt0aGlzLmE9bmV3IExxYjt0aGlzLmU9bmV3IExxYjt0aGlzLmI9KHh6YygpLHd6Yyk7dGhpcy5jPWE7dGhpcy5iPWJ9XG5mdW5jdGlvbiBiSWIoYSxiLGMpeyRHYi5jYWxsKHRoaXMpO1RIYih0aGlzKTt0aGlzLmE9YTt0aGlzLmM9Yzt0aGlzLmI9Yi5kO3RoaXMuZj1iLmV9XG5mdW5jdGlvbiB5ZChhKXt0aGlzLmQ9YTt0aGlzLmM9YS5jLnZjKCkuS2MoKTt0aGlzLmI9bnVsbDt0aGlzLmE9bnVsbDt0aGlzLmU9KGhzKCksZ3MpfVxuZnVuY3Rpb24genVkKGEpe2lmKGE8MCl7dGhyb3cgdmJiKG5ldyBXZGIoJ0lsbGVnYWwgQ2FwYWNpdHk6ICcrYSkpfXRoaXMuZz10aGlzLnJpKGEpfVxuZnVuY3Rpb24gYXZiKGEsYil7aWYoMD5hfHxhPmIpe3Rocm93IHZiYihuZXcgc2NiKCdmcm9tSW5kZXg6IDAsIHRvSW5kZXg6ICcrYStva2UrYikpfX1cbmZ1bmN0aW9uIEdzKGEpe3ZhciBiO2lmKGEuYT09YS5iLmEpe3Rocm93IHZiYihuZXcgdXRiKX1iPWEuYTthLmM9YjthLmE9YS5hLmU7cmV0dXJuIGJ9XG5mdW5jdGlvbiBac2IoYSl7dmFyIGI7eUNiKCEhYS5jKTtiPWEuYy5hO05zYihhLmQsYS5jKTthLmI9PWEuYz8oYS5iPWIpOi0tYS5hO2EuYz1udWxsfVxuZnVuY3Rpb24gVkFiKGEsYil7dmFyIGM7VXpiKGEpO2M9bmV3IGxCYihhLGEuYS5yZCgpLGEuYS5xZCgpfDQsYik7cmV0dXJuIG5ldyBZQWIoYSxjKX1cbmZ1bmN0aW9uIGtlKGEsYil7dmFyIGMsZDtjPUJEKEh2KGEuZCxiKSwxNCk7aWYoIWMpe3JldHVybiBudWxsfWQ9YjtyZXR1cm4gYS5lLnBjKGQsYyl9XG5mdW5jdGlvbiB4YWMoYSxiKXt2YXIgYyxkO2ZvcihkPWEuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSw3MCk7eU5iKGMsKHd0YygpLFNzYyksYil9fVxuZnVuY3Rpb24gdDliKGEpe3ZhciBiO2I9RWRiKEVEKHZOYihhLChOeWMoKSxad2MpKSkpO2lmKGI8MCl7Yj0wO3lOYihhLFp3YyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGlmYyhhLGIsYyl7dmFyIGQ7ZD0kd25kLk1hdGgubWF4KDAsYS5iLzItMC41KTtjZmMoYyxkLDEpO0VrYihiLG5ldyByZmMoYyxkKSl9XG5mdW5jdGlvbiBOTWMoYSxiLGMpe3ZhciBkO2Q9YS5hLmVbQkQoYi5hLDEwKS5wXS1hLmEuZVtCRChjLmEsMTApLnBdO3JldHVybiBRRChFZWIoZCkpfVxuZnVuY3Rpb24gaVpiKGEsYixjLGQsZSxmKXt2YXIgZztnPWtaYihkKTtRWmIoZyxlKTtSWmIoZyxmKTtSYyhhLmEsZCxuZXcgQlpiKGcsYixjLmYpKX1cbmZ1bmN0aW9uIEJpZChhLGIpe3ZhciBjO2M9WUtkKGEuVGcoKSxiKTtpZighYyl7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2IrbHRlKSl9cmV0dXJuIGN9XG5mdW5jdGlvbiBudGQoYSxiKXt2YXIgYztjPWE7d2hpbGUoWG9kKGMpKXtjPVhvZChjKTtpZihjPT1iKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gVXcoYSxiKXt2YXIgYyxkLGU7ZD1iLmEuY2QoKTtjPUJEKGIuYS5kZCgpLDE0KS5nYygpO2ZvcihlPTA7ZTxjO2UrKyl7YS50ZChkKX19XG5mdW5jdGlvbiBIa2IoYSxiKXt2YXIgYyxkLGUsZjt1Q2IoYik7Zm9yKGQ9YS5jLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtiLnRkKGMpfX1cbmZ1bmN0aW9uIE5zYihhLGIpe3ZhciBjO2M9Yi5jO2IuYS5iPWIuYjtiLmIuYT1iLmE7Yi5hPWIuYj1udWxsO2IuYz1udWxsOy0tYS5iO3JldHVybiBjfVxuZnVuY3Rpb24gd3FiKGEsYil7aWYoISFiJiZhLmJbYi5nXT09Yil7TkMoYS5iLGIuZyxudWxsKTstLWEuYztyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBsbyhhLGIpe3JldHVybiAhIXZvKGEsYixUYmIoSWJiKEVpZSxrZWIoVGJiKEliYihiPT1udWxsPzA6dGIoYiksRmllKSksMTUpKSkpfVxuZnVuY3Rpb24gdyRiKGEsYil7ZWNkKEJEKHZOYihCRChhLmUsMTApLChOeWMoKSxWeGMpKSw5OCkpJiYobW1iKCksT2tiKEJEKGEuZSwxMCkuaixiKSl9XG5mdW5jdGlvbiBUSGIoYSl7YS5iPShOSGIoKSxLSGIpO2EuZj0oRUliKCksQ0liKTthLmQ9KFhqKDIsSmllKSxuZXcgU2tiKDIpKTthLmU9bmV3IGQ3Y31cbmZ1bmN0aW9uIGdIYigpe2dIYj1jY2I7ZEhiPW5ldyBoSGIoJ0JFR0lOJywwKTtlSGI9bmV3IGhIYihnbGUsMSk7ZkhiPW5ldyBoSGIoJ0VORCcsMil9XG5mdW5jdGlvbiBxYWQoKXtxYWQ9Y2NiO25hZD1uZXcgcmFkKGdsZSwwKTtvYWQ9bmV3IHJhZCgnSEVBRCcsMSk7cGFkPW5ldyByYWQoJ1RBSUwnLDIpfVxuZnVuY3Rpb24gRnNkKCl7Q3NkKCk7cmV0dXJuIE9DKEdDKE8zLDEpLEtpZSwyMzcsMCxbQnNkLHlzZCx6c2QseHNkLEFzZCx2c2QsdXNkLHdzZF0pfVxuZnVuY3Rpb24gYzZjKCl7XzVjKCk7cmV0dXJuIE9DKEdDKGYxLDEpLEtpZSwyNzcsMCxbJDVjLFQ1YyxYNWMsWjVjLFU1YyxWNWMsVzVjLFk1Y10pfVxuZnVuY3Rpb24gRGxjKCl7QWxjKCk7cmV0dXJuIE9DKEdDKEtWLDEpLEtpZSwyNzAsMCxbdGxjLHdsYyxzbGMsemxjLHZsYyx1bGMseWxjLHhsY10pfVxuZnVuY3Rpb24gbkFjKCl7a0FjKCk7cmV0dXJuIE9DKEdDKGFYLDEpLEtpZSwyNjAsMCxbaUFjLGRBYyxnQWMsZUFjLGZBYyxjQWMsaEFjLGpBY10pfVxuZnVuY3Rpb24ga2NkKCl7a2NkPWNjYjtqY2Q9YXMoKGRjZCgpLE9DKEdDKEQxLDEpLEtpZSw5OCwwLFtjY2QsYmNkLGFjZCxaYmQsX2JkLCRiZF0pKSl9XG5mdW5jdGlvbiB0SGIoKXt0SGI9Y2NiO3NIYj0oZ0hiKCksT0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pKS5sZW5ndGg7ckhiPXNIYn1cbmZ1bmN0aW9uIHdlZChhKXt0aGlzLmI9KFFiKGEpLG5ldyBUa2IoYSkpO3RoaXMuYT1uZXcgUmtiO3RoaXMuZD1uZXcgUmtiO3RoaXMuZT1uZXcgZDdjfVxuZnVuY3Rpb24gVzZjKGEpe3ZhciBiO2I9JHduZC5NYXRoLnNxcnQoYS5hKmEuYSthLmIqYS5iKTtpZihiPjApe2EuYS89YjthLmIvPWJ9cmV0dXJuIGF9XG5mdW5jdGlvbiBiS2QoYSl7dmFyIGI7aWYoYS53KXtyZXR1cm4gYS53fWVsc2V7Yj1jS2QoYSk7ISFiJiYhYi5raCgpJiYoYS53PWIpO3JldHVybiBifX1cbmZ1bmN0aW9uIGdaZChhKXt2YXIgYjtpZihhPT1udWxsKXtyZXR1cm4gbnVsbH1lbHNle2I9QkQoYSwxOTApO3JldHVybiBVbWQoYixiLmxlbmd0aCl9fVxuZnVuY3Rpb24gcXVkKGEsYil7aWYoYS5nPT1udWxsfHxiPj1hLmkpdGhyb3cgdmJiKG5ldyAkemQoYixhLmkpKTtyZXR1cm4gYS5saShiLGEuZ1tiXSl9XG5mdW5jdGlvbiBNbWMoYSl7dmFyIGIsYztiPWEuYS5kLmo7Yz1hLmMuZC5qO3doaWxlKGIhPWMpe3JxYihhLmIsYik7Yj1YY2QoYil9cnFiKGEuYixiKX1cbmZ1bmN0aW9uIEptYyhhKXt2YXIgYjtmb3IoYj0wO2I8YS5jLmxlbmd0aDtiKyspeyh0Q2IoYixhLmMubGVuZ3RoKSxCRChhLmNbYl0sMTEpKS5wPWJ9fVxuZnVuY3Rpb24gYkVjKGEsYixjKXt2YXIgZCxlLGY7ZT1iW2NdO2ZvcihkPTA7ZDxlLmxlbmd0aDtkKyspe2Y9ZVtkXTthLmVbZi5jLnBdW2YucF09ZH19XG5mdW5jdGlvbiBaRWMoYSxiKXt2YXIgYyxkLGUsZjtmb3IoZD1hLmQsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO1JFYyhhLmcsYykuYT1ifX1cbmZ1bmN0aW9uIHE3YyhhLGIpe3ZhciBjLGQ7Zm9yKGQ9SnNiKGEsMCk7ZC5iIT1kLmQuYzspe2M9QkQoWHNiKGQpLDgpO1A2YyhjLGIpfXJldHVybiBhfVxuZnVuY3Rpb24gelViKGEsYil7dmFyIGM7Yz1jN2MoUjZjKEJEKE9oYihhLmcsYiksOCkpLEU2YyhCRChPaGIoYS5mLGIpLDQ2MCkuYikpO3JldHVybiBjfVxuZnVuY3Rpb24gbGliKGEpe3ZhciBiO3hwYihhLmUsYSk7c0NiKGEuYik7YS5jPWEuYTtiPUJEKGEuYS5QYigpLDQyKTthLmI9a2liKGEpO3JldHVybiBifVxuZnVuY3Rpb24gQ0QoYSl7dmFyIGI7Q0NiKGE9PW51bGx8fEFycmF5LmlzQXJyYXkoYSkmJihiPUhDKGEpLCEoYj49MTQmJmI8PTE2KSkpO3JldHVybiBhfVxuZnVuY3Rpb24gZGNiKGEsYixjKXt2YXIgZD1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGQsYXJndW1lbnRzKX07Yi5hcHBseShkLGMpO3JldHVybiBkfVxuZnVuY3Rpb24gVExjKGEsYixjKXt2YXIgZCxlO2Q9Yjtkb3tlPUVkYihhLnBbZC5wXSkrYzthLnBbZC5wXT1lO2Q9YS5hW2QucF19d2hpbGUoZCE9Yil9XG5mdW5jdGlvbiBOUWQoYSxiKXt2YXIgYyxkO2Q9YS5hO2M9T1FkKGEsYixudWxsKTtkIT1iJiYhYS5lJiYoYz1RUWQoYSxiLGMpKTshIWMmJmMuRmkoKX1cbmZ1bmN0aW9uIEFEYihhLGIpe3JldHVybiBJeSgpLE15KFFpZSksJHduZC5NYXRoLmFicyhhLWIpPD1RaWV8fGE9PWJ8fGlzTmFOKGEpJiZpc05hTihiKX1cbmZ1bmN0aW9uIEt5KGEsYil7SXkoKTtNeShRaWUpO3JldHVybiAkd25kLk1hdGguYWJzKGEtYik8PVFpZXx8YT09Ynx8aXNOYU4oYSkmJmlzTmFOKGIpfVxuZnVuY3Rpb24gQWtjKGEsYil7Z2tjKCk7cmV0dXJuIGJlYihhLmIuYy5sZW5ndGgtYS5lLmMubGVuZ3RoLGIuYi5jLmxlbmd0aC1iLmUuYy5sZW5ndGgpfVxuZnVuY3Rpb24gb28oYSxiKXtyZXR1cm4gS3YodW8oYSxiLFRiYihJYmIoRWllLGtlYihUYmIoSWJiKGI9PW51bGw/MDp0YihiKSxGaWUpKSwxNSkpKSkpfVxuZnVuY3Rpb24gbzBiKCl7bzBiPWNjYjtuMGI9YXMoKGowYigpLE9DKEdDKE5RLDEpLEtpZSwyNjcsMCxbaDBiLGcwYixlMGIsaTBiLGYwYixkMGJdKSkpfVxuZnVuY3Rpb24gbjhjKCl7bjhjPWNjYjttOGM9YXMoKGk4YygpLE9DKEdDKHIxLDEpLEtpZSwyOTEsMCxbaDhjLGc4YyxmOGMsZDhjLGM4YyxlOGNdKSkpfVxuZnVuY3Rpb24gSzdjKCl7SzdjPWNjYjtKN2M9YXMoKEY3YygpLE9DKEdDKG8xLDEpLEtpZSwyNDgsMCxbejdjLEM3YyxEN2MsRTdjLEE3YyxCN2NdKSkpfVxuZnVuY3Rpb24gRnBjKCl7RnBjPWNjYjtFcGM9YXMoKEFwYygpLE9DKEdDKEVXLDEpLEtpZSwyMjcsMCxbd3BjLHlwYyx2cGMseHBjLHpwYyx1cGNdKSkpfVxuZnVuY3Rpb24gRHJjKCl7RHJjPWNjYjtDcmM9YXMoKHlyYygpLE9DKEdDKE9XLDEpLEtpZSwyNzUsMCxbd3JjLHRyYyx4cmMsdnJjLHVyYyxycmNdKSkpfVxuZnVuY3Rpb24gcXJjKCl7cXJjPWNjYjtwcmM9YXMoKGxyYygpLE9DKEdDKE5XLDEpLEtpZSwyNzQsMCxbaXJjLGhyYyxrcmMsZ3JjLGpyYyxmcmNdKSkpfVxuZnVuY3Rpb24gdHpjKCl7dHpjPWNjYjtzemM9YXMoKGx6YygpLE9DKEdDKFlXLDEpLEtpZSwzMTMsMCxbanpjLGh6YyxmemMsZ3pjLGt6YyxpemNdKSkpfVxuZnVuY3Rpb24gWXFjKCl7WXFjPWNjYjtYcWM9YXMoKFNxYygpLE9DKEdDKExXLDEpLEtpZSwyNzYsMCxbTnFjLE1xYyxQcWMsT3FjLFJxYyxRcWNdKSkpfVxuZnVuY3Rpb24gd1NjKCl7d1NjPWNjYjt2U2M9YXMoKHFTYygpLE9DKEdDKHQkLDEpLEtpZSwzMjcsMCxbcFNjLGxTYyxuU2MsbVNjLG9TYyxrU2NdKSkpfVxuZnVuY3Rpb24geWNkKCl7eWNkPWNjYjt4Y2Q9YXMoKHJjZCgpLE9DKEdDKEUxLDEpLEtpZSwyNzMsMCxbcGNkLG5jZCxvY2QsbWNkLGxjZCxxY2RdKSkpfVxuZnVuY3Rpb24gUmFkKCl7UmFkPWNjYjtRYWQ9YXMoKE1hZCgpLE9DKEdDKHcxLDEpLEtpZSwzMTIsMCxbS2FkLElhZCxMYWQsR2FkLEphZCxIYWRdKSkpfVxuZnVuY3Rpb24gTGJkKCl7SGJkKCk7cmV0dXJuIE9DKEdDKEIxLDEpLEtpZSw5MywwLFt6YmQseWJkLEJiZCxHYmQsRmJkLEViZCxDYmQsRGJkLEFiZF0pfVxuZnVuY3Rpb24gdmtkKGEsYil7dmFyIGM7Yz1hLmE7YS5hPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMCxjLGEuYSkpfVxuZnVuY3Rpb24gd2tkKGEsYil7dmFyIGM7Yz1hLmI7YS5iPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMSxjLGEuYikpfVxuZnVuY3Rpb24gaG1kKGEsYil7dmFyIGM7Yz1hLmI7YS5iPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMyxjLGEuYikpfVxuZnVuY3Rpb24gYWxkKGEsYil7dmFyIGM7Yz1hLmY7YS5mPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMyxjLGEuZikpfVxuZnVuY3Rpb24gY2xkKGEsYil7dmFyIGM7Yz1hLmc7YS5nPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsNCxjLGEuZykpfVxuZnVuY3Rpb24gZGxkKGEsYil7dmFyIGM7Yz1hLmk7YS5pPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsNSxjLGEuaSkpfVxuZnVuY3Rpb24gZWxkKGEsYil7dmFyIGM7Yz1hLmo7YS5qPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsNixjLGEuaikpfVxuZnVuY3Rpb24gb21kKGEsYil7dmFyIGM7Yz1hLmo7YS5qPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMSxjLGEuaikpfVxuZnVuY3Rpb24gaW1kKGEsYil7dmFyIGM7Yz1hLmM7YS5jPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsNCxjLGEuYykpfVxuZnVuY3Rpb24gcG1kKGEsYil7dmFyIGM7Yz1hLms7YS5rPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbFNkKGEsMixjLGEuaykpfVxuZnVuY3Rpb24gcVFkKGEsYil7dmFyIGM7Yz1hLmQ7YS5kPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbVNkKGEsMixjLGEuZCkpfVxuZnVuY3Rpb24gQUlkKGEsYil7dmFyIGM7Yz1hLnM7YS5zPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbVNkKGEsNCxjLGEucykpfVxuZnVuY3Rpb24gRElkKGEsYil7dmFyIGM7Yz1hLnQ7YS50PWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgbVNkKGEsNSxjLGEudCkpfVxuZnVuY3Rpb24gX0pkKGEsYil7dmFyIGM7Yz1hLkY7YS5GPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw1LGMsYikpfVxuZnVuY3Rpb24gaXpkKGEsYil7dmFyIGM7Yz1CRChPaGIoKHBFZCgpLG9FZCksYSksNTUpO3JldHVybiBjP2MueGooYik6S0MoU0ksVWhlLDEsYiw1LDEpfVxuZnVuY3Rpb24gWHBkKGEsYil7dmFyIGMsZDtjPWIgaW4gYS5hO2lmKGMpe2Q9YUMoYSxiKS5oZSgpO2lmKGQpe3JldHVybiBkLmF9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gZnRkKGEsYil7dmFyIGMsZCxlO2M9KGQ9KEZoZCgpLGU9bmV3IEpvZCxlKSwhIWImJkdvZChkLGIpLGQpO0hvZChjLGEpO3JldHVybiBjfVxuZnVuY3Rpb24gTExkKGEsYixjKXtJdGQoYSxjKTtpZighYS5CaygpJiZjIT1udWxsJiYhYS53aihjKSl7dGhyb3cgdmJiKG5ldyB0Y2IpfXJldHVybiBjfVxuZnVuY3Rpb24gWGRkKGEsYil7YS5uPWI7aWYoYS5uKXthLmY9bmV3IFJrYjthLmU9bmV3IFJrYn1lbHNle2EuZj1udWxsO2EuZT1udWxsfXJldHVybiBhfVxuZnVuY3Rpb24gbmRiKGEsYixjLGQsZSxmKXt2YXIgZztnPWxkYihhLGIpO3pkYihjLGcpO2cuaT1lPzg6MDtnLmY9ZDtnLmU9ZTtnLmc9ZjtyZXR1cm4gZ31cbmZ1bmN0aW9uIHJTZChhLGIsYyxkLGUpe3RoaXMuZD1iO3RoaXMuaz1kO3RoaXMuZj1lO3RoaXMubz0tMTt0aGlzLnA9MTt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIHRTZChhLGIsYyxkLGUpe3RoaXMuZD1iO3RoaXMuaz1kO3RoaXMuZj1lO3RoaXMubz0tMTt0aGlzLnA9Mjt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIEJTZChhLGIsYyxkLGUpe3RoaXMuZD1iO3RoaXMuaz1kO3RoaXMuZj1lO3RoaXMubz0tMTt0aGlzLnA9Njt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIEdTZChhLGIsYyxkLGUpe3RoaXMuZD1iO3RoaXMuaz1kO3RoaXMuZj1lO3RoaXMubz0tMTt0aGlzLnA9Nzt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIHhTZChhLGIsYyxkLGUpe3RoaXMuZD1iO3RoaXMuaj1kO3RoaXMuZT1lO3RoaXMubz0tMTt0aGlzLnA9NDt0aGlzLmM9YTt0aGlzLmE9Y31cbmZ1bmN0aW9uIHJEYihhLGIpe3ZhciBjLGQsZSxmO2ZvcihkPWIsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO25EYihhLmEsYyl9cmV0dXJuIGF9XG5mdW5jdGlvbiBwbChhKXt2YXIgYixjLGQsZTtmb3IoYz1hLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtRYihiKX1yZXR1cm4gbmV3IHZsKGEpfVxuZnVuY3Rpb24gVXooYSl7dmFyIGI9L2Z1bmN0aW9uKD86XFxzKyhbXFx3JF0rKSk/XFxzKlxcKC87dmFyIGM9Yi5leGVjKGEpO3JldHVybiBjJiZjWzFdfHxYaWV9XG5mdW5jdGlvbiB6ZGIoYSxiKXt2YXIgYztpZighYSl7cmV0dXJufWIubj1hO3ZhciBkPXRkYihiKTtpZighZCl7X2JiW2FdPVtiXTtyZXR1cm59ZC5nbT1ifVxuZnVuY3Rpb24gdmxiKGEsYixjKXt2YXIgZCxlO2U9YS5sZW5ndGg7ZD0kd25kLk1hdGgubWluKGMsZSk7JEJiKGEsMCxiLDAsZCx0cnVlKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIFJQYihhLGIsYyl7dmFyIGQsZTtmb3IoZT1iLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksNzkpO1FxYihhLEJEKGMuS2IoZCksMzMpKX19XG5mdW5jdGlvbiBYYmIoKXtZYmIoKTt2YXIgYT1XYmI7Zm9yKHZhciBiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKyl7YS5wdXNoKGFyZ3VtZW50c1tiXSl9fVxuZnVuY3Rpb24gbjdjKGEsYil7dmFyIGMsZCxlLGY7Zm9yKGQ9YixlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07R3NiKGEsYyxhLmMuYixhLmMpfX1cbmZ1bmN0aW9uIHMkYyhhLGIpe2EuYj0kd25kLk1hdGgubWF4KGEuYixiLmQpO2EuZSs9Yi5yKyhhLmEuYy5sZW5ndGg9PTA/MDphLmMpO0VrYihhLmEsYil9XG5mdW5jdGlvbiB3a2IoYSl7eUNiKGEuYz49MCk7aWYoZWtiKGEuZCxhLmMpPDApe2EuYT1hLmEtMSZhLmQuYS5sZW5ndGgtMTthLmI9YS5kLmN9YS5jPS0xfVxuZnVuY3Rpb24gcGdiKGEpe2lmKGEuYTw1NCl7cmV0dXJuIGEuZjwwPy0xOmEuZj4wPzE6MH1yZXR1cm4gKCFhLmMmJihhLmM9ZmhiKGEuZikpLGEuYykuZX1cbmZ1bmN0aW9uIE15KGEpe2lmKCEoYT49MCkpe3Rocm93IHZiYihuZXcgV2RiKCd0b2xlcmFuY2UgKCcrYSsnKSBtdXN0IGJlID49IDAnKSl9cmV0dXJuIGF9XG5mdW5jdGlvbiBuNGMoKXtpZighZjRjKXtmNGM9bmV3IG00YztsNGMoZjRjLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IFo5Y10pKX1yZXR1cm4gZjRjfVxuZnVuY3Rpb24gS0FjKCl7S0FjPWNjYjtKQWM9bmV3IExBYyhvbGUsMCk7SEFjPW5ldyBMQWMoJ0lOUFVUJywxKTtJQWM9bmV3IExBYygnT1VUUFVUJywyKX1cbmZ1bmN0aW9uIGJxYygpe2JxYz1jY2I7JHBjPW5ldyBjcWMoJ0FSRCcsMCk7YXFjPW5ldyBjcWMoJ01TRCcsMSk7X3BjPW5ldyBjcWMoJ01BTlVBTCcsMil9XG5mdW5jdGlvbiByR2MoKXtyR2M9Y2NiO29HYz1uZXcgc0djKCdCQVJZQ0VOVEVSJywwKTtwR2M9bmV3IHNHYyhCbmUsMSk7cUdjPW5ldyBzR2MoQ25lLDIpfVxuZnVuY3Rpb24genRkKGEsYil7dmFyIGM7Yz1hLmdjKCk7aWYoYjwwfHxiPmMpdGhyb3cgdmJiKG5ldyBDeWQoYixjKSk7cmV0dXJuIG5ldyBjemQoYSxiKX1cbmZ1bmN0aW9uIEpBZChhLGIpe3ZhciBjO2lmKEpEKGIsNDIpKXtyZXR1cm4gYS5jLk1jKGIpfWVsc2V7Yz1xQWQoYSxiKTtMQWQoYSxiKTtyZXR1cm4gY319XG5mdW5jdGlvbiAkbmQoYSxiLGMpe3lJZChhLGIpO3BuZChhLGMpO0FJZChhLDApO0RJZChhLDEpO0NJZChhLHRydWUpO0JJZChhLHRydWUpO3JldHVybiBhfVxuZnVuY3Rpb24gWGooYSxiKXtpZihhPDApe3Rocm93IHZiYihuZXcgV2RiKGIrJyBjYW5ub3QgYmUgbmVnYXRpdmUgYnV0IHdhczogJythKSl9cmV0dXJuIGF9XG5mdW5jdGlvbiBCdChhLGIpe3ZhciBjLGQ7Zm9yKGM9MCxkPWEuZ2MoKTtjPGQ7KytjKXtpZih3dGIoYixhLlhiKGMpKSl7cmV0dXJuIGN9fXJldHVybiAtMX1cbmZ1bmN0aW9uIE5jKGEpe3ZhciBiLGM7Zm9yKGM9YS5jLkNjKCkuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSwxNCk7Yi4kYigpfWEuYy4kYigpO2EuZD0wfVxuZnVuY3Rpb24gUmkoYSl7dmFyIGIsYyxkLGU7Zm9yKGM9YS5hLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtGbGIoYixiLmxlbmd0aCxudWxsKX19XG5mdW5jdGlvbiBpZWIoYSl7dmFyIGIsYztpZihhPT0wKXtyZXR1cm4gMzJ9ZWxzZXtjPTA7Zm9yKGI9MTsoYiZhKT09MDtiPDw9MSl7KytjfXJldHVybiBjfX1cbmZ1bmN0aW9uIE5HYihhKXt2YXIgYixjO2ZvcihjPW5ldyBvbGIoYWhkKGEpKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksNjgwKTtiLkdmKCl9fVxuZnVuY3Rpb24gQ1ViKGEpe3hVYigpO3RoaXMuZz1uZXcgTHFiO3RoaXMuZj1uZXcgTHFiO3RoaXMuYj1uZXcgTHFiO3RoaXMuYz1uZXcgSHA7dGhpcy5pPWF9XG5mdW5jdGlvbiBYWmIoKXt0aGlzLmY9bmV3IGQ3Yzt0aGlzLmQ9bmV3IHMwYjt0aGlzLmM9bmV3IGQ3Yzt0aGlzLmE9bmV3IFJrYjt0aGlzLmI9bmV3IFJrYn1cbmZ1bmN0aW9uIGM2ZChhLGIsYyxkKXt0aGlzLnJqKCk7dGhpcy5hPWI7dGhpcy5iPWE7dGhpcy5jPW51bGw7dGhpcy5jPW5ldyBkNmQodGhpcyxiLGMsZCl9XG5mdW5jdGlvbiBueGQoYSxiLGMsZCxlKXt0aGlzLmQ9YTt0aGlzLm49Yjt0aGlzLmc9Yzt0aGlzLm89ZDt0aGlzLnA9LTE7ZXx8KHRoaXMubz0tMi1kLTEpfVxuZnVuY3Rpb24gaEpkKCl7RklkLmNhbGwodGhpcyk7dGhpcy5uPS0xO3RoaXMuZz1udWxsO3RoaXMuaT1udWxsO3RoaXMuaj1udWxsO3RoaXMuQmJ8PXp0ZX1cbmZ1bmN0aW9uIExkZCgpe0lkZCgpO3JldHVybiBPQyhHQyhKMSwxKSxLaWUsMjU5LDAsW0JkZCxEZGQsQWRkLEVkZCxGZGQsSGRkLEdkZCxDZGQsemRkXSl9XG5mdW5jdGlvbiB1RmIoKXtyRmIoKTtyZXR1cm4gT0MoR0MoZE4sMSksS2llLDI1MCwwLFtxRmIsbEZiLG1GYixrRmIsb0ZiLHBGYixuRmIsakZiLGlGYl0pfVxuZnVuY3Rpb24gcWViKCl7cWViPWNjYjtwZWI9T0MoR0MoV0QsMSksb2plLDI1LDE1LFswLDgsNCwxMiwyLDEwLDYsMTQsMSw5LDUsMTMsMywxMSw3LDE1XSl9XG5mdW5jdGlvbiB2Q2MoKXt2Q2M9Y2NiO3VDYz1lM2MoZTNjKGUzYyhuZXcgajNjLChxVWIoKSxsVWIpLChTOGIoKSxaN2IpKSxtVWIsdzhiKSxuVWIsdjhiKX1cbmZ1bmN0aW9uIFZDYygpe1ZDYz1jY2I7VUNjPWUzYyhlM2MoZTNjKG5ldyBqM2MsKHFVYigpLGxVYiksKFM4YigpLFo3YikpLG1VYix3OGIpLG5VYix2OGIpfVxuZnVuY3Rpb24gckRjKCl7ckRjPWNjYjtxRGM9ZTNjKGUzYyhlM2MobmV3IGozYywocVViKCksbFViKSwoUzhiKCksWjdiKSksbVViLHc4YiksblViLHY4Yil9XG5mdW5jdGlvbiB5RmMoKXt5RmM9Y2NiO3hGYz1jM2MoZTNjKGUzYyhuZXcgajNjLChxVWIoKSxuVWIpLChTOGIoKSx6OGIpKSxvVWIscDhiKSxwVWIseThiKX1cbmZ1bmN0aW9uIFJwYygpe1JwYz1jY2I7UHBjPW5ldyBUcGMoJ0xBWUVSX1NXRUVQJywwKTtPcGM9bmV3IFRwYyhUbmUsMSk7UXBjPW5ldyBUcGMoYW5lLDIpfVxuZnVuY3Rpb24gUkxjKGEsYil7dmFyIGMsZDtjPWEuYztkPWIuZVthLnBdO2lmKGQ+MCl7cmV0dXJuIEJEKElrYihjLmEsZC0xKSwxMCl9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBMa2QoYSxiKXt2YXIgYztjPWEuazthLms9YjsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDIsYyxhLmspKX1cbmZ1bmN0aW9uIGttZChhLGIpe3ZhciBjO2M9YS5mO2EuZj1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsOCxjLGEuZikpfVxuZnVuY3Rpb24gbG1kKGEsYil7dmFyIGM7Yz1hLmk7YS5pPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw3LGMsYS5pKSl9XG5mdW5jdGlvbiBIb2QoYSxiKXt2YXIgYztjPWEuYTthLmE9YjsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDgsYyxhLmEpKX1cbmZ1bmN0aW9uIHpwZChhLGIpe3ZhciBjO2M9YS5iO2EuYj1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMCxjLGEuYikpfVxuZnVuY3Rpb24gVVVkKGEsYil7dmFyIGM7Yz1hLmI7YS5iPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSwwLGMsYS5iKSl9XG5mdW5jdGlvbiBWVWQoYSxiKXt2YXIgYztjPWEuYzthLmM9YjsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDEsYyxhLmMpKX1cbmZ1bmN0aW9uIEFwZChhLGIpe3ZhciBjO2M9YS5jO2EuYz1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMSxjLGEuYykpfVxuZnVuY3Rpb24gcFFkKGEsYil7dmFyIGM7Yz1hLmM7YS5jPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw0LGMsYS5jKSl9XG5mdW5jdGlvbiBQSGQoYSxiKXt2YXIgYztjPWEuZDthLmQ9YjsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDEsYyxhLmQpKX1cbmZ1bmN0aW9uIGpLZChhLGIpe3ZhciBjO2M9YS5EO2EuRD1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMixjLGEuRCkpfVxuZnVuY3Rpb24gUmRkKGEsYil7aWYoYS5yPjAmJmEuYzxhLnIpe2EuYys9YjshIWEuaSYmYS5pLmQ+MCYmYS5nIT0wJiZSZGQoYS5pLGIvYS5yKmEuaS5kKX19XG5mdW5jdGlvbiBkZ2UoYSxiLGMpe3ZhciBkO2EuYj1iO2EuYT1jO2Q9KGEuYSY1MTIpPT01MTI/bmV3IGhlZTpuZXcgdWRlO2EuYz1vZGUoZCxhLmIsYS5hKX1cbmZ1bmN0aW9uIGczZChhLGIpe3JldHVybiBUNmQoYS5lLGIpPyhRNmQoKSxZSWQoYik/bmV3IFI3ZChiLGEpOm5ldyBmN2QoYixhKSk6bmV3IGM4ZChiLGEpfVxuZnVuY3Rpb24gX28oYSxiKXtyZXR1cm4gRnYodm8oYS5hLGIsVGJiKEliYihFaWUsa2ViKFRiYihJYmIoYj09bnVsbD8wOnRiKGIpLEZpZSkpLDE1KSkpKSl9XG5mdW5jdGlvbiBOeWIoYSxiLGMpe3JldHVybiBBeWIoYSxuZXcgS3piKGIpLG5ldyBNemIsbmV3IE96YihjKSxPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW10pKX1cbmZ1bmN0aW9uIHBBYihhKXt2YXIgYixjO2lmKDA+YSl7cmV0dXJuIG5ldyB5QWJ9Yj1hKzE7Yz1uZXcgckFiKGIsYSk7cmV0dXJuIG5ldyB2QWIobnVsbCxjKX1cbmZ1bmN0aW9uIHVtYihhLGIpe21tYigpO3ZhciBjO2M9bmV3IE1xYigxKTtORChhKT9TaGIoYyxhLGIpOmpyYihjLmYsYSxiKTtyZXR1cm4gbmV3IGlvYihjKX1cbmZ1bmN0aW9uIGFNYihhLGIpe3ZhciBjLGQ7Yz1hLm8rYS5wO2Q9Yi5vK2IucDtpZihjPGQpe3JldHVybiAtMX1pZihjPT1kKXtyZXR1cm4gMH1yZXR1cm4gMX1cbmZ1bmN0aW9uIFAyYihhKXt2YXIgYjtiPXZOYihhLCh3dGMoKSwkc2MpKTtpZihKRChiLDE2MCkpe3JldHVybiBPMmIoQkQoYiwxNjApKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIEtwKGEpe3ZhciBiO2E9JHduZC5NYXRoLm1heChhLDIpO2I9Z2ViKGEpO2lmKGE+Yil7Yjw8PTE7cmV0dXJuIGI+MD9iOklpZX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHhjKGEpe1ViKGEuZSE9Myk7c3dpdGNoKGEuZSl7Y2FzZSAyOnJldHVybiBmYWxzZTtjYXNlIDA6cmV0dXJuIHRydWU7fXJldHVybiB6YyhhKX1cbmZ1bmN0aW9uIFQ2YyhhLGIpe3ZhciBjO2lmKEpEKGIsOCkpe2M9QkQoYiw4KTtyZXR1cm4gYS5hPT1jLmEmJmEuYj09Yy5ifWVsc2V7cmV0dXJuIGZhbHNlfX1cbmZ1bmN0aW9uIF9NYihhLGIsYyl7dmFyIGQsZSxmO2Y9Yj4+NTtlPWImMzE7ZD14YmIoUGJiKGEubltjXVtmXSxUYmIoTmJiKGUsMSkpKSwzKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIElBZChhLGIpe3ZhciBjLGQ7Zm9yKGQ9Yi52YygpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksNDIpO0hBZChhLGMuY2QoKSxjLmRkKCkpfX1cbmZ1bmN0aW9uIE4xYyhhLGIpe3ZhciBjO2M9bmV3IHRPYjtCRChiLmIsNjUpO0JEKGIuYiw2NSk7QkQoYi5iLDY1KTtIa2IoYi5hLG5ldyBUMWMoYSxjLGIpKX1cbmZ1bmN0aW9uIERVZChhLGIpe3ZhciBjO2M9YS5iO2EuYj1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMjEsYyxhLmIpKX1cbmZ1bmN0aW9uIGptZChhLGIpe3ZhciBjO2M9YS5kO2EuZD1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMTEsYyxhLmQpKX1cbmZ1bmN0aW9uIF9JZChhLGIpe3ZhciBjO2M9YS5qO2Euaj1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMTMsYyxhLmopKX1cbmZ1bmN0aW9uICRqYihhLGIsYyl7dmFyIGQsZSxmO2Y9YS5hLmxlbmd0aC0xO2ZvcihlPWEuYixkPTA7ZDxjO2U9ZSsxJmYsKytkKXtOQyhiLGQsYS5hW2VdKX19XG5mdW5jdGlvbiBycWIoYSxiKXt2YXIgYzt1Q2IoYik7Yz1iLmc7aWYoIWEuYltjXSl7TkMoYS5iLGMsYik7KythLmM7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gZXViKGEsYil7dmFyIGM7Yz1iPT1udWxsPy0xOkprYihhLmIsYiwwKTtpZihjPDApe3JldHVybiBmYWxzZX1mdWIoYSxjKTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIGZ1YihhLGIpe3ZhciBjO2M9S2tiKGEuYixhLmIuYy5sZW5ndGgtMSk7aWYoYjxhLmIuYy5sZW5ndGgpe05rYihhLmIsYixjKTtidWIoYSxiKX19XG5mdW5jdGlvbiBleWIoYSxiKXsoKG95YigpLGx5Yik/bnVsbDpiLmMpLmxlbmd0aD09MCYmcXliKGIsbmV3IHp5Yik7U2hiKGEuYSxseWI/bnVsbDpiLmMsYil9XG5mdW5jdGlvbiBNNWIoYSxiKXtPZGQoYiwnSGllcmFyY2hpY2FsIHBvcnQgY29uc3RyYWludCBwcm9jZXNzaW5nJywxKTtONWIoYSk7UDViKGEpO1FkZChiKX1cbmZ1bmN0aW9uIEdPYihhLGIpe3ZhciBjLGQ7Zm9yKGQ9Yi5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDI2Nik7YS5iPXRydWU7UXFiKGEuZSxjKTtjLmI9YX19XG5mdW5jdGlvbiBPd2IoYSxiKXt2YXIgYyxkO2M9MS1iO2Q9YS5hW2NdO2EuYVtjXT1kLmFbYl07ZC5hW2JdPWE7YS5iPXRydWU7ZC5iPWZhbHNlO3JldHVybiBkfVxuZnVuY3Rpb24gR2VjKGEsYil7dmFyIGMsZDtjPUJEKHZOYihhLChOeWMoKSxheWMpKSw4KTtkPUJEKHZOYihiLGF5YyksOCk7cmV0dXJuIEtkYihjLmIsZC5iKX1cbmZ1bmN0aW9uIGpmYyhhKXtvRWIuY2FsbCh0aGlzKTt0aGlzLmI9RWRiKEVEKHZOYihhLChOeWMoKSxseWMpKSkpO3RoaXMuYT1CRCh2TmIoYSxTd2MpLDIxOCl9XG5mdW5jdGlvbiBYR2MoYSxiLGMpe3VFYy5jYWxsKHRoaXMsYSxiLGMpO3RoaXMuYT1uZXcgTHFiO3RoaXMuYj1uZXcgTHFiO3RoaXMuZD1uZXcgJEdjKHRoaXMpfVxuZnVuY3Rpb24ga3UoYSl7dGhpcy5lPWE7dGhpcy5kPW5ldyBVcWIoQ3YoRWModGhpcy5lKS5nYygpKSk7dGhpcy5jPXRoaXMuZS5hO3RoaXMuYj10aGlzLmUuY31cbmZ1bmN0aW9uIEJIYyhhKXt0aGlzLmI9YTt0aGlzLmE9S0MoV0Qsb2plLDI1LGErMSwxNSwxKTt0aGlzLmM9S0MoV0Qsb2plLDI1LGEsMTUsMSk7dGhpcy5kPTB9XG5mdW5jdGlvbiBUSGMoYSxiLGMpe3ZhciBkO2Q9bmV3IFJrYjtVSGMoYSxiLGQsYyx0cnVlLHRydWUpO2EuYj1uZXcgQkhjKGQuYy5sZW5ndGgpO3JldHVybiBkfVxuZnVuY3Rpb24gbk1jKGEsYil7dmFyIGM7Yz1CRChPaGIoYS5jLGIpLDQ1OCk7aWYoIWMpe2M9bmV3IHVNYztjLmM9YjtSaGIoYS5jLGMuYyxjKX1yZXR1cm4gY31cbmZ1bmN0aW9uICRCKGUsYSl7dmFyIGI9ZS5hO3ZhciBjPTA7Zm9yKHZhciBkIGluIGIpe2IuaGFzT3duUHJvcGVydHkoZCkmJihhW2MrK109ZCl9cmV0dXJuIGF9XG5mdW5jdGlvbiBwUmQoYSl7dmFyIGI7aWYoYS5iPT1udWxsKXtyZXR1cm4gTFJkKCksTFJkKCksS1JkfWI9YS5MaygpP2EuS2soKTphLkprKCk7cmV0dXJuIGJ9XG5mdW5jdGlvbiByJGMoYSl7dmFyIGIsYztmb3IoYz1uZXcgRnlkKGEpO2MuZSE9Yy5pLmdjKCk7KXtiPUJEKER5ZChjKSwzMyk7ZGxkKGIsMCk7ZWxkKGIsMCl9fVxuZnVuY3Rpb24gSFNiKCl7SFNiPWNjYjtGU2I9bmV3IExzZChJbWUpO0dTYj1uZXcgTHNkKEptZSk7RVNiPW5ldyBMc2QoS21lKTtEU2I9bmV3IExzZChMbWUpfVxuZnVuY3Rpb24geTViKCl7eTViPWNjYjt4NWI9bmV3IHo1YignVE9fSU5URVJOQUxfTFRSJywwKTt3NWI9bmV3IHo1YignVE9fSU5QVVRfRElSRUNUSU9OJywxKX1cbmZ1bmN0aW9uIFBVYygpe1BVYz1jY2I7TlVjPW5ldyBSVWMoJ1AxX05PREVfUExBQ0VNRU5UJywwKTtPVWM9bmV3IFJVYygnUDJfRURHRV9ST1VUSU5HJywxKX1cbmZ1bmN0aW9uIEZrYygpe0ZrYz1jY2I7RWtjPW5ldyBHa2MoJ1NUQVJUJywwKTtEa2M9bmV3IEdrYygnTUlERExFJywxKTtDa2M9bmV3IEdrYygnRU5EJywyKX1cbmZ1bmN0aW9uIEk5Yigpe0k5Yj1jY2I7SDliPW5ldyBNc2QoJ2VkZ2VsYWJlbGNlbnRlcmVkbmVzc2FuYWx5c2lzLmluY2x1ZGVsYWJlbCcsKEJjYigpLHpjYikpfVxuZnVuY3Rpb24gWnljKGEsYil7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihuZXcgUGliKGEuYiksMSkpLG5ldyBiZmQoYSxiKSksbmV3IGZmZChhLGIpKX1cbmZ1bmN0aW9uICRYYygpe3RoaXMuYz1uZXcgalZjKDApO3RoaXMuYj1uZXcgalZjKFRxZSk7dGhpcy5kPW5ldyBqVmMoU3FlKTt0aGlzLmE9bmV3IGpWYyhjbWUpfVxuZnVuY3Rpb24gJEZjKGEpe3ZhciBiLGM7Zm9yKGM9YS5jLmEuZWMoKS5LYygpO2MuT2IoKTspe2I9QkQoYy5QYigpLDIxNCk7ZUZjKGIsbmV3IG9IYyhiLmUpKX19XG5mdW5jdGlvbiBaRmMoYSl7dmFyIGIsYztmb3IoYz1hLmMuYS5lYygpLktjKCk7Yy5PYigpOyl7Yj1CRChjLlBiKCksMjE0KTtkRmMoYixuZXcgbkhjKGIuZikpfX1cbmZ1bmN0aW9uIHBuZChhLGIpe3ZhciBjO2M9YS56YjthLnpiPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSwxLGMsYS56YikpfVxuZnVuY3Rpb24gY29kKGEsYil7dmFyIGM7Yz1hLnhiO2EueGI9YjsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDMsYyxhLnhiKSl9XG5mdW5jdGlvbiBkb2QoYSxiKXt2YXIgYztjPWEueWI7YS55Yj1iOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMixjLGEueWIpKX1cbmZ1bmN0aW9uIEtuZChhLGIpe3ZhciBjLGQ7Yz0oZD1uZXcgT0pkLGQpO2Mubj1iO3d0ZCgoIWEucyYmKGEucz1uZXcgY1VkKHQ1LGEsMjEsMTcpKSxhLnMpLGMpfVxuZnVuY3Rpb24gUW5kKGEsYil7dmFyIGMsZDtkPShjPW5ldyBGVWQsYyk7ZC5uPWI7d3RkKCghYS5zJiYoYS5zPW5ldyBjVWQodDUsYSwyMSwxNykpLGEucyksZCl9XG5mdW5jdGlvbiBrdGIoYSxiKXt2YXIgYyxkO2M9YS5QYygpO0tsYihjLDAsYy5sZW5ndGgsYik7Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrKyl7YS5fYyhkLGNbZF0pfX1cbmZ1bmN0aW9uIHllKGEsYil7dmFyIGMsZCxlO3VDYihiKTtjPWZhbHNlO2ZvcihlPWIuS2MoKTtlLk9iKCk7KXtkPWUuUGIoKTtjPWN8YS5GYyhkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIEJ4KGEpe3ZhciBiLGMsZDtiPTA7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9ZC5QYigpO2IrPWMhPW51bGw/dGIoYyk6MDtiPX5+Yn1yZXR1cm4gYn1cbmZ1bmN0aW9uIFNBKGEpe3ZhciBiO2lmKGE9PTApe3JldHVybiAnVVRDJ31pZihhPDApe2E9LWE7Yj0nVVRDKyd9ZWxzZXtiPSdVVEMtJ31yZXR1cm4gYitVQShhKX1cbmZ1bmN0aW9uIEpxKGEsYil7dmFyIGM7aWYoSkQoYiwxNCkpe2M9QkQoYiwxNCk7cmV0dXJuIGEuR2MoYyl9cmV0dXJuIGZyKGEsQkQoUWIoYiksMjApLktjKCkpfVxuZnVuY3Rpb24gQm5jKGEsYixjKXtDbmMuY2FsbCh0aGlzLGIsYyk7dGhpcy5kPUtDKE9RLGtuZSwxMCxhLmEuYy5sZW5ndGgsMCwxKTtRa2IoYS5hLHRoaXMuZCl9XG5mdW5jdGlvbiBJTWMoYSl7YS5hPW51bGw7YS5lPW51bGw7YS5iLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2EuZi5jPUtDKFNJLFVoZSwxLDAsNSwxKTthLmM9bnVsbH1cbmZ1bmN0aW9uIGdLZChhLGIpe2lmKGIpe2lmKGEuQj09bnVsbCl7YS5CPWEuRDthLkQ9bnVsbH19ZWxzZSBpZihhLkIhPW51bGwpe2EuRD1hLkI7YS5CPW51bGx9fVxuZnVuY3Rpb24gUG9jKGEsYil7cmV0dXJuIEVkYihFRChCdGIoVEFiKE5BYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmMuYiwxNikpLG5ldyBmcGMoYSkpLGIpKSkpfVxuZnVuY3Rpb24gU29jKGEsYil7cmV0dXJuIEVkYihFRChCdGIoVEFiKE5BYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmMuYiwxNikpLG5ldyBkcGMoYSkpLGIpKSkpfVxuZnVuY3Rpb24gUTJiKGEsYil7T2RkKGIsem5lLDEpO01BYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5iLDE2KSksbmV3IFUyYiksbmV3IFcyYik7UWRkKGIpfVxuZnVuY3Rpb24gU1hjKGEsYil7dmFyIGMsZDtjPUJEKGhrZChhLChaV2MoKSxTV2MpKSwxOSk7ZD1CRChoa2QoYixTV2MpLDE5KTtyZXR1cm4gYmViKGMuYSxkLmEpfVxuZnVuY3Rpb24gcDdjKGEsYixjKXt2YXIgZCxlO2ZvcihlPUpzYihhLDApO2UuYiE9ZS5kLmM7KXtkPUJEKFhzYihlKSw4KTtkLmErPWI7ZC5iKz1jfXJldHVybiBhfVxuZnVuY3Rpb24gdW8oYSxiLGMpe3ZhciBkO2ZvcihkPWEuYltjJmEuZl07ZDtkPWQuYil7aWYoYz09ZC5hJiZIYihiLGQuZykpe3JldHVybiBkfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHZvKGEsYixjKXt2YXIgZDtmb3IoZD1hLmNbYyZhLmZdO2Q7ZD1kLmQpe2lmKGM9PWQuZiYmSGIoYixkLmkpKXtyZXR1cm4gZH19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBraGIoYSxiLGMpe3ZhciBkLGUsZjtkPTA7Zm9yKGU9MDtlPGM7ZSsrKXtmPWJbZV07YVtlXT1mPDwxfGQ7ZD1mPj4+MzF9ZCE9MCYmKGFbY109ZCl9XG5mdW5jdGlvbiBybWIoYSxiKXttbWIoKTt2YXIgYyxkO2Q9bmV3IFJrYjtmb3IoYz0wO2M8YTsrK2Mpe2QuY1tkLmMubGVuZ3RoXT1ifXJldHVybiBuZXcgWW9iKGQpfVxuZnVuY3Rpb24gWnpiKGEpe3ZhciBiO2I9WXpiKGEpO2lmKEJiYihiLmEsMCkpe3JldHVybiBMdGIoKSxMdGIoKSxLdGJ9cmV0dXJuIEx0YigpLG5ldyBQdGIoYi5iKX1cbmZ1bmN0aW9uICR6YihhKXt2YXIgYjtiPVl6YihhKTtpZihCYmIoYi5hLDApKXtyZXR1cm4gTHRiKCksTHRiKCksS3RifXJldHVybiBMdGIoKSxuZXcgUHRiKGIuYyl9XG5mdW5jdGlvbiB1QWIoYSl7dmFyIGI7Yj10QWIoYSk7aWYoQmJiKGIuYSwwKSl7cmV0dXJuIFV0YigpLFV0YigpLFR0Yn1yZXR1cm4gVXRiKCksbmV3IFh0YihiLmIpfVxuZnVuY3Rpb24gelpiKGEpe2lmKGEuYi5jLmkuaz09KGowYigpLGUwYikpe3JldHVybiBCRCh2TmIoYS5iLmMuaSwod3RjKCksJHNjKSksMTEpfXJldHVybiBhLmIuY31cbmZ1bmN0aW9uIEFaYihhKXtpZihhLmIuZC5pLms9PShqMGIoKSxlMGIpKXtyZXR1cm4gQkQodk5iKGEuYi5kLmksKHd0YygpLCRzYykpLDExKX1yZXR1cm4gYS5iLmR9XG5mdW5jdGlvbiBWbmQoYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSl7YW9kKGEsYixjLGQsZSxmLGcsaCxpLGosayxsLG0pO01KZChhLGZhbHNlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHRKYihhLGIsYyxkLGUsZixnKXskci5jYWxsKHRoaXMsYSxiKTt0aGlzLmQ9Yzt0aGlzLmU9ZDt0aGlzLmM9ZTt0aGlzLmI9Zjt0aGlzLmE9T3UoZyl9XG5mdW5jdGlvbiAkYmIoYSxiKXt0eXBlb2Ygd2luZG93PT09SmhlJiZ0eXBlb2Ygd2luZG93WyckZ3d0J109PT1KaGUmJih3aW5kb3dbJyRnd3QnXVthXT1iKX1cbmZ1bmN0aW9uIHBXYihhLGIpe2xXYigpO3JldHVybiBhPT1oV2ImJmI9PWtXYnx8YT09a1diJiZiPT1oV2J8fGE9PWpXYiYmYj09aVdifHxhPT1pV2ImJmI9PWpXYn1cbmZ1bmN0aW9uIHFXYihhLGIpe2xXYigpO3JldHVybiBhPT1oV2ImJmI9PWlXYnx8YT09aFdiJiZiPT1qV2J8fGE9PWtXYiYmYj09aldifHxhPT1rV2ImJmI9PWlXYn1cbmZ1bmN0aW9uIElKYihhLGIpe3JldHVybiBJeSgpLE15KHBsZSksJHduZC5NYXRoLmFicygwLWIpPD1wbGV8fDA9PWJ8fGlzTmFOKDApJiZpc05hTihiKT8wOmEvYn1cbmZ1bmN0aW9uIFJyYygpe09yYygpO3JldHVybiBPQyhHQyhQVywxKSxLaWUsMjU2LDAsW0ZyYyxIcmMsSXJjLEpyYyxLcmMsTHJjLE5yYyxFcmMsR3JjLE1yY10pfVxuZnVuY3Rpb24gTktkKCl7TktkPWNjYjtLS2Q9bmV3IEtQZDtNS2Q9T0MoR0ModDUsMSksTXZlLDE3MCwwLFtdKTtMS2Q9T0MoR0MobjUsMSksTnZlLDU5LDAsW10pfVxuZnVuY3Rpb24gQ0JjKCl7Q0JjPWNjYjtCQmM9bmV3IERCYygnTk8nLDApO3pCYz1uZXcgREJjKCdHUkVFRFknLDEpO0FCYz1uZXcgREJjKCdMT09LX0JBQ0snLDIpfVxuZnVuY3Rpb24gejBiKCl7ejBiPWNjYjt3MGI9bmV3IG0xYjt1MGI9bmV3IGgxYjt2MGI9bmV3IHExYjt0MGI9bmV3IHUxYjt4MGI9bmV3IHkxYjt5MGI9bmV3IEMxYn1cbmZ1bmN0aW9uIEo5YihhKXt2YXIgYixjLGQ7ZD0wO2ZvcihjPW5ldyBvbGIoYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMjkpO2IucD1kOysrZH19XG5mdW5jdGlvbiBuZmQoYSxiKXt2YXIgYztjPXNmZChhKTtyZXR1cm4gbWZkKG5ldyBmN2MoYy5jLGMuZCksbmV3IGY3YyhjLmIsYy5hKSxhLnJmKCksYixhLkhmKCkpfVxuZnVuY3Rpb24gVWRkKGEsYil7dmFyIGM7aWYoYS5iKXtyZXR1cm4gbnVsbH1lbHNle2M9UGRkKGEsYS5nKTtEc2IoYS5hLGMpO2MuaT1hO2EuZD1iO3JldHVybiBjfX1cbmZ1bmN0aW9uIGtVYyhhLGIsYyl7T2RkKGMsJ0RGUyBUcmVlaWZ5aW5nIHBoYXNlJywxKTtqVWMoYSxiKTtoVWMoYSxiKTthLmE9bnVsbDthLmI9bnVsbDtRZGQoYyl9XG5mdW5jdGlvbiB6aWMoYSxiLGMpe3RoaXMuZz1hO3RoaXMuZD1iO3RoaXMuZT1jO3RoaXMuYT1uZXcgUmtiO3hpYyh0aGlzKTttbWIoKTtPa2IodGhpcy5hLG51bGwpfVxuZnVuY3Rpb24gQXVkKGEpe3RoaXMuaT1hLmdjKCk7aWYodGhpcy5pPjApe3RoaXMuZz10aGlzLnJpKHRoaXMuaSsodGhpcy5pLzh8MCkrMSk7YS5RYyh0aGlzLmcpfX1cbmZ1bmN0aW9uIHUzZChhLGIpe2syZC5jYWxsKHRoaXMsRDksYSxiKTt0aGlzLmI9dGhpczt0aGlzLmE9UzZkKGEuVGcoKSxYS2QodGhpcy5lLlRnKCksdGhpcy5jKSl9XG5mdW5jdGlvbiBMZChhLGIpe3ZhciBjLGQ7dUNiKGIpO2ZvcihkPWIudmMoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDQyKTthLnpjKGMuY2QoKSxjLmRkKCkpfX1cbmZ1bmN0aW9uIEcyZChhLGIsYyl7dmFyIGQ7Zm9yKGQ9Yy5LYygpO2QuT2IoKTspe2lmKCFFMmQoYSxiLGQuUGIoKSkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBzVmQoYSxiLGMsZCxlKXt2YXIgZjtpZihjKXtmPWJMZChiLlRnKCksYS5jKTtlPWMuZ2goYiwtMS0oZj09LTE/ZDpmKSxudWxsLGUpfXJldHVybiBlfVxuZnVuY3Rpb24gdFZkKGEsYixjLGQsZSl7dmFyIGY7aWYoYyl7Zj1iTGQoYi5UZygpLGEuYyk7ZT1jLmloKGIsLTEtKGY9PS0xP2Q6ZiksbnVsbCxlKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIE1nYihhKXt2YXIgYjtpZihhLmI9PS0yKXtpZihhLmU9PTApe2I9LTF9ZWxzZXtmb3IoYj0wO2EuYVtiXT09MDtiKyspO31hLmI9Yn1yZXR1cm4gYS5ifVxuZnVuY3Rpb24gWjRiKGEpe3N3aXRjaChhLmcpe2Nhc2UgMjpyZXR1cm4gVWNkKCksVGNkO2Nhc2UgNDpyZXR1cm4gVWNkKCksemNkO2RlZmF1bHQ6cmV0dXJuIGE7fX1cbmZ1bmN0aW9uICQ0YihhKXtzd2l0Y2goYS5nKXtjYXNlIDE6cmV0dXJuIFVjZCgpLFJjZDtjYXNlIDM6cmV0dXJuIFVjZCgpLEFjZDtkZWZhdWx0OnJldHVybiBhO319XG5mdW5jdGlvbiBua2MoYSl7dmFyIGIsYyxkO3JldHVybiBhLmo9PShVY2QoKSxBY2QpJiYoYj1wa2MoYSksYz11cWIoYix6Y2QpLGQ9dXFiKGIsVGNkKSxkfHxkJiZjKX1cbmZ1bmN0aW9uIG9xYihhKXt2YXIgYixjO2I9QkQoYS5lJiZhLmUoKSw5KTtjPUJEKFpCYihiLGIubGVuZ3RoKSw5KTtyZXR1cm4gbmV3IHhxYihiLGMsYi5sZW5ndGgpfVxuZnVuY3Rpb24gbDdiKGEsYil7T2RkKGIsem5lLDEpO1VHYihUR2IobmV3IFlHYigoYSRiKCksbmV3IGwkYihhLGZhbHNlLGZhbHNlLG5ldyBUJGIpKSkpKTtRZGQoYil9XG5mdW5jdGlvbiBGY2IoYSxiKXtCY2IoKTtyZXR1cm4gTkQoYSk/Y2ZiKGEsR0QoYikpOkxEKGEpP0RkYihhLEVEKGIpKTpLRChhKT9EY2IoYSxERChiKSk6YS53ZChiKX1cbmZ1bmN0aW9uIFdaYyhhLGIpe2IucT1hO2EuZD0kd25kLk1hdGgubWF4KGEuZCxiLnIpO2EuYis9Yi5kKyhhLmEuYy5sZW5ndGg9PTA/MDphLmMpO0VrYihhLmEsYil9XG5mdW5jdGlvbiBtNmMoYSxiKXt2YXIgYyxkLGUsZjtlPWEuYztjPWEuYythLmI7Zj1hLmQ7ZD1hLmQrYS5hO3JldHVybiBiLmE+ZSYmYi5hPGMmJmIuYj5mJiZiLmI8ZH1cbmZ1bmN0aW9uIFluZChhLGIsYyxkKXtKRChhLkNiLDE3OSkmJihCRChhLkNiLDE3OSkudGI9bnVsbCk7cG5kKGEsYyk7ISFiJiZoS2QoYSxiKTtkJiZhLnhrKHRydWUpfVxuZnVuY3Rpb24gWXFkKGEsYil7dmFyIGM7Yz1CRChiLDE4Myk7U3BkKGMsJ3gnLGEuaSk7U3BkKGMsJ3knLGEuaik7U3BkKGMsR3RlLGEuZyk7U3BkKGMsRnRlLGEuZil9XG5mdW5jdGlvbiBMRmMoKXtMRmM9Y2NiO0tGYz1iM2MoZjNjKGUzYyhlM2MobmV3IGozYywocVViKCksblViKSwoUzhiKCksejhiKSksb1ViLHA4YikscFViKSx5OGIpfVxuZnVuY3Rpb24gZEhjKCl7ZEhjPWNjYjtjSGM9YjNjKGYzYyhlM2MoZTNjKG5ldyBqM2MsKHFVYigpLG5VYiksKFM4YigpLHo4YikpLG9VYixwOGIpLHBVYikseThiKX1cbmZ1bmN0aW9uIHNYYygpe3NYYz1jY2I7cVhjPW5ldyB1WGMoYW5lLDApO3JYYz1uZXcgdVhjKCdQT0xBUl9DT09SRElOQVRFJywxKTtwWGM9bmV3IHVYYygnSUQnLDIpfVxuZnVuY3Rpb24gVEFjKCl7VEFjPWNjYjtRQWM9bmV3IFVBYygnRVFVQUxMWScsMCk7UkFjPW5ldyBVQWMoeGxlLDEpO1NBYz1uZXcgVUFjKCdOT1JUSF9TT1VUSCcsMil9XG5mdW5jdGlvbiBwQWMoKXtwQWM9Y2NiO29BYz1hcygoa0FjKCksT0MoR0MoYVgsMSksS2llLDI2MCwwLFtpQWMsZEFjLGdBYyxlQWMsZkFjLGNBYyxoQWMsakFjXSkpKX1cbmZ1bmN0aW9uIEZsYygpe0ZsYz1jY2I7RWxjPWFzKChBbGMoKSxPQyhHQyhLViwxKSxLaWUsMjcwLDAsW3RsYyx3bGMsc2xjLHpsYyx2bGMsdWxjLHlsYyx4bGNdKSkpfVxuZnVuY3Rpb24gZTZjKCl7ZTZjPWNjYjtkNmM9YXMoKF81YygpLE9DKEdDKGYxLDEpLEtpZSwyNzcsMCxbJDVjLFQ1YyxYNWMsWjVjLFU1YyxWNWMsVzVjLFk1Y10pKSl9XG5mdW5jdGlvbiBIc2QoKXtIc2Q9Y2NiO0dzZD1hcygoQ3NkKCksT0MoR0MoTzMsMSksS2llLDIzNywwLFtCc2QseXNkLHpzZCx4c2QsQXNkLHZzZCx1c2Qsd3NkXSkpKX1cbmZ1bmN0aW9uIFhOYigpe1hOYj1jY2I7Vk5iPW5ldyBNc2QoJ2RlYnVnU1ZHJywoQmNiKCksZmFsc2UpKTtXTmI9bmV3IE1zZCgnb3ZlcmxhcHNFeGlzdGVkJyx0cnVlKX1cbmZ1bmN0aW9uIFh5YihhLGIpe3JldHVybiBBeWIobmV3IHR6YihhKSxuZXcgdnpiKGIpLG5ldyB4emIoYiksbmV3IHp6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW10pKX1cbmZ1bmN0aW9uIGh5Yigpe3ZhciBhO2lmKCFkeWIpe2R5Yj1uZXcgZ3liO2E9bmV3IHd5YignJyk7dXliKGEsKCR4YigpLFp4YikpO2V5YihkeWIsYSl9cmV0dXJuIGR5Yn1cbmZ1bmN0aW9uIGhyKGEsYil7dmFyIGM7UWIoYik7d2hpbGUoYS5PYigpKXtjPWEuUGIoKTtpZighUU5jKEJEKGMsMTApKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIFQzYyhhLGIpe3ZhciBjO2M9aDRjKG40YygpLGEpO2lmKGMpe2prZChiLChZOWMoKSxGOWMpLGMpO3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX1cbmZ1bmN0aW9uIGQzYyhhLGIpe3ZhciBjO2ZvcihjPTA7YzxiLmouYy5sZW5ndGg7YysrKXtCRChCMmMoYSxjKSwyMSkuR2MoQkQoQjJjKGIsYyksMTQpKX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE05YihhLGIpe3ZhciBjLGQ7Zm9yKGQ9bmV3IG9sYihiLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyOSk7YS5hW2MucF09XyRiKGMpfX1cbmZ1bmN0aW9uIHN0YihhLGIpe3ZhciBjLGQ7dUNiKGIpO2ZvcihkPWEudmMoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDQyKTtiLk9kKGMuY2QoKSxjLmRkKCkpfX1cbmZ1bmN0aW9uIGNJZChhLGIpe3ZhciBjO2lmKEpEKGIsODMpKXtCRChhLmMsNzYpLlhqKCk7Yz1CRChiLDgzKTtJQWQoYSxjKX1lbHNle0JEKGEuYyw3NikuV2IoYil9fVxuZnVuY3Rpb24gU3UoYSl7cmV0dXJuIEpEKGEsMTUyKT9rbShCRChhLDE1MikpOkpEKGEsMTMxKT9CRChhLDEzMSkuYTpKRChhLDU0KT9uZXcgb3YoYSk6bmV3IGR2KGEpfVxuZnVuY3Rpb24gZmFjKGEsYil7cmV0dXJuIGI8YS5iLmdjKCk/QkQoYS5iLlhiKGIpLDEwKTpiPT1hLmIuZ2MoKT9hLmE6QkQoSWtiKGEuZSxiLWEuYi5nYygpLTEpLDEwKX1cbmZ1bmN0aW9uIGNyYihhLGIpe2EuYT13YmIoYS5hLDEpO2EuYz0kd25kLk1hdGgubWluKGEuYyxiKTthLmI9JHduZC5NYXRoLm1heChhLmIsYik7YS5kPXdiYihhLmQsYil9XG5mdW5jdGlvbiBuM2IoYSxiKXt2YXIgYztPZGQoYiwnRWRnZSBhbmQgbGF5ZXIgY29uc3RyYWludCBlZGdlIHJldmVyc2FsJywxKTtjPW0zYihhKTtsM2IoYyk7UWRkKGIpfVxuZnVuY3Rpb24gdEFkKGEpe3ZhciBiO2lmKGEuZD09bnVsbCl7KythLmU7YS5mPTA7c0FkKG51bGwpfWVsc2V7KythLmU7Yj1hLmQ7YS5kPW51bGw7YS5mPTA7c0FkKGIpfX1cbmZ1bmN0aW9uIHpiYihhKXt2YXIgYjtiPWEuaDtpZihiPT0wKXtyZXR1cm4gYS5sK2EubSpIamV9aWYoYj09RmplKXtyZXR1cm4gYS5sK2EubSpIamUtSWplfXJldHVybiBhfVxuZnVuY3Rpb24gYUtiKGEpeyRKYigpO2lmKGEuQS5IYygodGRkKCkscGRkKSkpe2lmKCFhLkIuSGMoKElkZCgpLERkZCkpKXtyZXR1cm4gX0piKGEpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFpnYihhKXt1Q2IoYSk7aWYoYS5sZW5ndGg9PTApe3Rocm93IHZiYihuZXcgT2ViKCdaZXJvIGxlbmd0aCBCaWdJbnRlZ2VyJykpfWRoYih0aGlzLGEpfVxuZnVuY3Rpb24gVmIoYSl7aWYoIWEpe3Rocm93IHZiYihuZXcgWmRiKCdubyBjYWxscyB0byBuZXh0KCkgc2luY2UgdGhlIGxhc3QgY2FsbCB0byByZW1vdmUoKScpKX19XG5mdW5jdGlvbiBDYmIoYSl7aWYoS2plPGEmJmE8SWplKXtyZXR1cm4gYTwwPyR3bmQuTWF0aC5jZWlsKGEpOiR3bmQuTWF0aC5mbG9vcihhKX1yZXR1cm4gemJiKGZEKGEpKX1cbmZ1bmN0aW9uIFl5YihhLGIpe3ZhciBjLGQsZTtjPWEuYy5FZSgpO2ZvcihlPWIuS2MoKTtlLk9iKCk7KXtkPWUuUGIoKTthLmEuT2QoYyxkKX1yZXR1cm4gYS5iLktiKGMpfVxuZnVuY3Rpb24gVWhkKGEsYil7dmFyIGMsZCxlO2M9YS5KZygpO2lmKGMhPW51bGwmJmEuTWcoKSl7Zm9yKGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2NbZF0udWkoYil9fX1cbmZ1bmN0aW9uIGZfYihhLGIpe3ZhciBjLGQ7Yz1hO2Q9UV9iKGMpLmU7d2hpbGUoZCl7Yz1kO2lmKGM9PWIpe3JldHVybiB0cnVlfWQ9UV9iKGMpLmV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gbERjKGEsYixjKXt2YXIgZCxlO2Q9YS5hLmZbYi5wXTtlPWEuYS5mW2MucF07aWYoZDxlKXtyZXR1cm4gLTF9aWYoZD09ZSl7cmV0dXJuIDB9cmV0dXJuIDF9XG5mdW5jdGlvbiBTaShhLGIsYyl7dmFyIGQsZTtlPUJEKHRuKGEuZCxiKSwxOSk7ZD1CRCh0bihhLmIsYyksMTkpO3JldHVybiAhZXx8IWQ/bnVsbDpNaShhLGUuYSxkLmEpfVxuZnVuY3Rpb24gY1ljKGEsYil7dmFyIGMsZDtmb3IoZD1uZXcgRnlkKGEpO2QuZSE9ZC5pLmdjKCk7KXtjPUJEKER5ZChkKSwzMyk7YmxkKGMsYy5pK2IuYixjLmorYi5kKX19XG5mdW5jdGlvbiBxamMoYSxiKXt2YXIgYyxkO2ZvcihkPW5ldyBvbGIoYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDcwKTtFa2IoYS5kLGMpO3VqYyhhLGMpfX1cbmZ1bmN0aW9uIHBRYyhhLGIpe3ZhciBjLGQ7ZD1uZXcgUmtiO2M9Yjtkb3tkLmNbZC5jLmxlbmd0aF09YztjPUJEKE9oYihhLmssYyksMTcpfXdoaWxlKGMpO3JldHVybiBkfVxuZnVuY3Rpb24gQWpkKGEsYil7dmFyIGM7aWYoKGEuRGImYikhPTApe2M9empkKGEsYik7cmV0dXJuIGM9PS0xP2EuRWI6Q0QoYS5FYilbY119ZWxzZXtyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBMbmQoYSxiKXt2YXIgYyxkO2M9KGQ9bmV3IGhMZCxkKTtjLkc9YjshYS5yYiYmKGEucmI9bmV3IGpVZChhLGQ1LGEpKTt3dGQoYS5yYixjKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE1uZChhLGIpe3ZhciBjLGQ7Yz0oZD1uZXcgTVBkLGQpO2MuRz1iOyFhLnJiJiYoYS5yYj1uZXcgalVkKGEsZDUsYSkpO3d0ZChhLnJiLGMpO3JldHVybiBjfVxuZnVuY3Rpb24gSGtkKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTpyZXR1cm4gISFhLm4mJmEubi5pIT0wO2Nhc2UgMjpyZXR1cm4gYS5rIT1udWxsO31yZXR1cm4gZGtkKGEsYil9XG5mdW5jdGlvbiBnTmMoYSl7c3dpdGNoKGEuYS5nKXtjYXNlIDE6cmV0dXJuIG5ldyBOTmM7Y2FzZSAzOnJldHVybiBuZXcgdlFjO2RlZmF1bHQ6cmV0dXJuIG5ldyB3TmM7fX1cbmZ1bmN0aW9uIE1SZChhKXt2YXIgYjtpZihhLmc+MXx8YS5PYigpKXsrK2EuYTthLmc9MDtiPWEuaTthLk9iKCk7cmV0dXJuIGJ9ZWxzZXt0aHJvdyB2YmIobmV3IHV0Yil9fVxuZnVuY3Rpb24ga05jKGEpe2ZOYygpO3ZhciBiO2lmKCFMcGIoZU5jLGEpKXtiPW5ldyBoTmM7Yi5hPWE7T3BiKGVOYyxhLGIpfXJldHVybiBCRChNcGIoZU5jLGEpLDYzNSl9XG5mdW5jdGlvbiBSYmIoYSl7dmFyIGIsYyxkLGU7ZT1hO2Q9MDtpZihlPDApe2UrPUlqZTtkPUZqZX1jPVFEKGUvSGplKTtiPVFEKGUtYypIamUpO3JldHVybiBUQyhiLGMsZCl9XG5mdW5jdGlvbiBPeChhKXt2YXIgYixjLGQ7ZD0wO2ZvcihjPW5ldyBHcWIoYS5hKTtjLmE8Yy5jLmEubGVuZ3RoOyl7Yj1GcWIoYyk7YS5iLkhjKGIpJiYrK2R9cmV0dXJuIGR9XG5mdW5jdGlvbiBLdShhKXt2YXIgYixjLGQ7Yj0xO2ZvcihkPWEuS2MoKTtkLk9iKCk7KXtjPWQuUGIoKTtiPTMxKmIrKGM9PW51bGw/MDp0YihjKSk7Yj1+fmJ9cmV0dXJuIGJ9XG5mdW5jdGlvbiBad2IoYSxiKXt2YXIgYzt0aGlzLmM9YTtjPW5ldyBSa2I7RXdiKGEsYyxiLGEuYixudWxsLGZhbHNlLG51bGwsZmFsc2UpO3RoaXMuYT1uZXcgQmliKGMsMCl9XG5mdW5jdGlvbiBwNGQoYSxiKXt0aGlzLmI9YTt0aGlzLmU9Yjt0aGlzLmQ9Yi5qO3RoaXMuZj0oUTZkKCksQkQoYSw2NikuT2ooKSk7dGhpcy5rPVM2ZChiLmUuVGcoKSxhKX1cbmZ1bmN0aW9uIHh3YihhLGIsYyl7dGhpcy5iPSh1Q2IoYSksYSk7dGhpcy5kPSh1Q2IoYiksYik7dGhpcy5lPSh1Q2IoYyksYyk7dGhpcy5jPXRoaXMuZCsoJycrdGhpcy5lKX1cbmZ1bmN0aW9uIHhSYigpe3RoaXMuYT1CRChLc2QoKHdTYigpLGVTYikpLDE5KS5hO3RoaXMuYz1FZGIoRUQoS3NkKHVTYikpKTt0aGlzLmI9RWRiKEVEKEtzZChxU2IpKSl9XG5mdW5jdGlvbiBOYmQoKXtOYmQ9Y2NiO01iZD1hcygoSGJkKCksT0MoR0MoQjEsMSksS2llLDkzLDAsW3piZCx5YmQsQmJkLEdiZCxGYmQsRWJkLENiZCxEYmQsQWJkXSkpKX1cbmZ1bmN0aW9uIHdGYigpe3dGYj1jY2I7dkZiPWFzKChyRmIoKSxPQyhHQyhkTiwxKSxLaWUsMjUwLDAsW3FGYixsRmIsbUZiLGtGYixvRmIscEZiLG5GYixqRmIsaUZiXSkpKX1cbmZ1bmN0aW9uIHZMYigpe3ZMYj1jY2I7dUxiPW5ldyB3TGIoJ1VQJywwKTtyTGI9bmV3IHdMYih2bGUsMSk7c0xiPW5ldyB3TGIoamxlLDIpO3RMYj1uZXcgd0xiKGtsZSwzKX1cbmZ1bmN0aW9uIHJUYygpe3JUYz1jY2I7cVRjPShTVGMoKSxRVGMpO3BUYz1uZXcgTnNkKFpxZSxxVGMpO29UYz0oJFRjKCksWlRjKTtuVGM9bmV3IE5zZCgkcWUsb1RjKX1cbmZ1bmN0aW9uIFhyYygpe1hyYz1jY2I7VnJjPW5ldyBZcmMoJ09ORV9TSURFRCcsMCk7V3JjPW5ldyBZcmMoJ1RXT19TSURFRCcsMSk7VXJjPW5ldyBZcmMoJ09GRicsMil9XG5mdW5jdGlvbiBUUWMoYSl7YS5yPW5ldyBUcWI7YS53PW5ldyBUcWI7YS50PW5ldyBSa2I7YS5pPW5ldyBSa2I7YS5kPW5ldyBUcWI7YS5hPW5ldyBJNmM7YS5jPW5ldyBMcWJ9XG5mdW5jdGlvbiB1T2MoYSl7dGhpcy5uPW5ldyBSa2I7dGhpcy5lPW5ldyBQc2I7dGhpcy5qPW5ldyBQc2I7dGhpcy5rPW5ldyBSa2I7dGhpcy5mPW5ldyBSa2I7dGhpcy5wPWF9XG5mdW5jdGlvbiBQRWMoYSxiKXtpZihhLmMpe1FFYyhhLGIsdHJ1ZSk7TUFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIsMTYpKSxuZXcgYkZjKGEpKX1RRWMoYSxiLGZhbHNlKX1cbmZ1bmN0aW9uIHdGYyhhLGIsYyl7cmV0dXJuIGE9PShyR2MoKSxxR2MpP25ldyBwRmM6Q3ViKGIsMSkhPTA/bmV3IGlIYyhjLmxlbmd0aCk6bmV3IFJHYyhjLmxlbmd0aCl9XG5mdW5jdGlvbiB0TmIoYSxiKXt2YXIgYztpZighYil7cmV0dXJuIGF9Yz1iLlZlKCk7Yy5kYygpfHwoIWEucT8oYS5xPW5ldyBOcWIoYykpOkxkKGEucSxjKSk7cmV0dXJuIGF9XG5mdW5jdGlvbiBFcmIoYSxiKXt2YXIgYztjPWEuYS5nZXQoYik7aWYoYz09PXVuZGVmaW5lZCl7KythLmR9ZWxzZXt1cmIoYS5hLGIpOy0tYS5jO3pwYihhLmIpfXJldHVybiBjfVxuZnVuY3Rpb24gVVliKGEsYil7dmFyIGMsZCxlO2M9Yi5wLWEucDtpZihjPT0wKXtkPWEuZi5hKmEuZi5iO2U9Yi5mLmEqYi5mLmI7cmV0dXJuIEtkYihkLGUpfXJldHVybiBjfVxuZnVuY3Rpb24gWExiKGEsYil7dmFyIGMsZDtjPWEuZi5jLmxlbmd0aDtkPWIuZi5jLmxlbmd0aDtpZihjPGQpe3JldHVybiAtMX1pZihjPT1kKXtyZXR1cm4gMH1yZXR1cm4gMX1cbmZ1bmN0aW9uIEtaYihhKXtpZihhLmIuYy5sZW5ndGghPTAmJiEhQkQoSWtiKGEuYiwwKSw3MCkuYSl7cmV0dXJuIEJEKElrYihhLmIsMCksNzApLmF9cmV0dXJuIEpaYihhKX1cbmZ1bmN0aW9uIFBxKGEpe3ZhciBiO2lmKGEpe2I9YTtpZihiLmRjKCkpe3Rocm93IHZiYihuZXcgdXRiKX1yZXR1cm4gYi5YYihiLmdjKCktMSl9cmV0dXJuIG5yKGEuS2MoKSl9XG5mdW5jdGlvbiB2Z2IoYSl7dmFyIGI7eWJiKGEsMCk8MCYmKGE9TGJiKGEpKTtyZXR1cm4gYj1UYmIoT2JiKGEsMzIpKSw2NC0oYiE9MD9oZWIoYik6aGViKFRiYihhKSkrMzIpfVxuZnVuY3Rpb24gUU5jKGEpe3ZhciBiO2I9QkQodk5iKGEsKHd0YygpLEhzYykpLDYxKTtyZXR1cm4gYS5rPT0oajBiKCksZTBiKSYmKGI9PShVY2QoKSxUY2QpfHxiPT16Y2QpfVxuZnVuY3Rpb24gYlpiKGEsYixjKXt2YXIgZCxlO2U9QkQodk5iKGEsKE55YygpLGp4YykpLDc0KTtpZihlKXtkPW5ldyBzN2M7bzdjKGQsMCxlKTtxN2MoZCxjKTt5ZShiLGQpfX1cbmZ1bmN0aW9uIE1fYihhLGIsYyl7dmFyIGQsZSxmLGc7Zz1RX2IoYSk7ZD1nLmQ7ZT1nLmM7Zj1hLm47YiYmKGYuYT1mLmEtZC5iLWUuYSk7YyYmKGYuYj1mLmItZC5kLWUuYil9XG5mdW5jdGlvbiBkY2MoYSxiKXt2YXIgYyxkO2M9YS5qO2Q9Yi5qO3JldHVybiBjIT1kP2MuZy1kLmc6YS5wPT1iLnA/MDpjPT0oVWNkKCksQWNkKT9hLnAtYi5wOmIucC1hLnB9XG5mdW5jdGlvbiBkbWMoYSl7dmFyIGIsYztibWMoYSk7Zm9yKGM9bmV3IG9sYihhLmQpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMDEpOyEhYi5pJiZjbWMoYil9fVxuZnVuY3Rpb24gbEJjKGEsYixjLGQsZSl7TkMoYS5jW2IuZ10sYy5nLGQpO05DKGEuY1tjLmddLGIuZyxkKTtOQyhhLmJbYi5nXSxjLmcsZSk7TkMoYS5iW2MuZ10sYi5nLGUpfVxuZnVuY3Rpb24gRzFjKGEsYixjLGQpe0JEKGMuYiw2NSk7QkQoYy5iLDY1KTtCRChkLmIsNjUpO0JEKGQuYiw2NSk7QkQoZC5iLDY1KTtIa2IoZC5hLG5ldyBMMWMoYSxiLGQpKX1cbmZ1bmN0aW9uIFdEYihhLGIpe2EuZD09KGVhZCgpLGFhZCl8fGEuZD09ZGFkP0JEKGIuYSw1NykuYy5GYyhCRChiLmIsNTcpKTpCRChiLmIsNTcpLmMuRmMoQkQoYi5hLDU3KSl9XG5mdW5jdGlvbiBHa2QoYSxiLGMsZCl7aWYoYz09MSl7cmV0dXJuICFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpLFR4ZChhLm4sYixkKX1yZXR1cm4gY2tkKGEsYixjLGQpfVxuZnVuY3Rpb24gR25kKGEsYil7dmFyIGMsZDtkPShjPW5ldyBCWWQsYyk7cG5kKGQsYik7d3RkKCghYS5BJiYoYS5BPW5ldyBLNGQodTUsYSw3KSksYS5BKSxkKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFpxZChhLGIsYyl7dmFyIGQsZSxmLGc7Zj1udWxsO2c9YjtlPVlwZChnLEp0ZSk7ZD1uZXcganJkKGEsYyk7Zj0obHFkKGQuYSxkLmIsZSksZSk7cmV0dXJuIGZ9XG5mdW5jdGlvbiBLSmQoYSl7dmFyIGI7aWYoIWEuYXx8KGEuQmImMSk9PTAmJmEuYS5raCgpKXtiPXdJZChhKTtKRChiLDE0OCkmJihhLmE9QkQoYiwxNDgpKX1yZXR1cm4gYS5hfVxuZnVuY3Rpb24gQmUoYSxiKXt2YXIgYyxkO3VDYihiKTtmb3IoZD1iLktjKCk7ZC5PYigpOyl7Yz1kLlBiKCk7aWYoIWEuSGMoYykpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBjRChhLGIpe3ZhciBjLGQsZTtjPWEubCtiLmw7ZD1hLm0rYi5tKyhjPj4yMik7ZT1hLmgrYi5oKyhkPj4yMik7cmV0dXJuIFRDKGMmRWplLGQmRWplLGUmRmplKX1cbmZ1bmN0aW9uIG5EKGEsYil7dmFyIGMsZCxlO2M9YS5sLWIubDtkPWEubS1iLm0rKGM+PjIyKTtlPWEuaC1iLmgrKGQ+PjIyKTtyZXR1cm4gVEMoYyZFamUsZCZFamUsZSZGamUpfVxuZnVuY3Rpb24gYmRiKGEpe3ZhciBiO2lmKGE8MTI4KXtiPShkZGIoKSxjZGIpW2FdOyFiJiYoYj1jZGJbYV09bmV3IFhjYihhKSk7cmV0dXJuIGJ9cmV0dXJuIG5ldyBYY2IoYSl9XG5mdW5jdGlvbiB1YmIoYSl7dmFyIGI7aWYoSkQoYSw3OCkpe3JldHVybiBhfWI9YSYmYS5fX2phdmEkZXhjZXB0aW9uO2lmKCFiKXtiPW5ldyBseihhKTtTeihiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGJ0ZChhKXtpZihKRChhLDE4Nikpe3JldHVybiBCRChhLDExOCl9ZWxzZSBpZighYSl7dGhyb3cgdmJiKG5ldyBIZWIoZ3VlKSl9ZWxzZXtyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBaamIoYSxiKXtpZihiPT1udWxsKXtyZXR1cm4gZmFsc2V9d2hpbGUoYS5hIT1hLmIpe2lmKHBiKGIsdmtiKGEpKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGtpYihhKXtpZihhLmEuT2IoKSl7cmV0dXJuIHRydWV9aWYoYS5hIT1hLmQpe3JldHVybiBmYWxzZX1hLmE9bmV3IG9yYihhLmUuZik7cmV0dXJuIGEuYS5PYigpfVxuZnVuY3Rpb24gR2tiKGEsYil7dmFyIGMsZDtjPWIuUGMoKTtkPWMubGVuZ3RoO2lmKGQ9PTApe3JldHVybiBmYWxzZX1iQ2IoYS5jLGEuYy5sZW5ndGgsYyk7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBWeWIoYSxiLGMpe3ZhciBkLGU7Zm9yKGU9Yi52YygpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksNDIpO2EueWMoZC5jZCgpLGQuZGQoKSxjKX1yZXR1cm4gYX1cbmZ1bmN0aW9uIHlhYyhhLGIpe3ZhciBjLGQ7Zm9yKGQ9bmV3IG9sYihhLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw3MCk7eU5iKGMsKHd0YygpLFNzYyksYil9fVxuZnVuY3Rpb24gRlpjKGEsYixjKXt2YXIgZCxlO2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMzMpO2JsZChkLGQuaStiLGQuaitjKX19XG5mdW5jdGlvbiBOYihhLGIpe2lmKCFhKXt0aHJvdyB2YmIobmV3IFdkYihoYygndmFsdWUgYWxyZWFkeSBwcmVzZW50OiAlcycsT0MoR0MoU0ksMSksVWhlLDEsNSxbYl0pKSkpfX1cbmZ1bmN0aW9uIG1FYihhLGIpe2lmKCFhfHwhYnx8YT09Yil7cmV0dXJuIGZhbHNlfXJldHVybiBDRGIoYS5kLmMsYi5kLmMrYi5kLmIpJiZDRGIoYi5kLmMsYS5kLmMrYS5kLmIpfVxuZnVuY3Rpb24geHliKCl7b3liKCk7aWYobHliKXtyZXR1cm4gbmV3IHd5YihudWxsKX1yZXR1cm4gZnliKGh5YigpLCdjb20uZ29vZ2xlLmNvbW1vbi5iYXNlLlN0cmluZ3MnKX1cbmZ1bmN0aW9uIEoyYyhhLGIpe3ZhciBjO2M9UHUoYi5hLmdjKCkpO01BYihWQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYiwxKSksYS5pKSxuZXcgVzJjKGEsYykpO3JldHVybiBjfVxuZnVuY3Rpb24gSG5kKGEpe3ZhciBiLGM7Yz0oYj1uZXcgQllkLGIpO3BuZChjLCdUJyk7d3RkKCghYS5kJiYoYS5kPW5ldyBLNGQodTUsYSwxMSkpLGEuZCksYyk7cmV0dXJuIGN9XG5mdW5jdGlvbiBFdGQoYSl7dmFyIGIsYyxkLGU7Yj0xO2ZvcihjPTAsZT1hLmdjKCk7YzxlOysrYyl7ZD1hLmtpKGMpO2I9MzEqYisoZD09bnVsbD8wOnRiKGQpKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIFdpKGEsYixjLGQpe3ZhciBlO1BiKGIsYS5lLkhkKCkuZ2MoKSk7UGIoYyxhLmMuSGQoKS5nYygpKTtlPWEuYVtiXVtjXTtOQyhhLmFbYl0sYyxkKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIE9DKGEsYixjLGQsZSl7ZS5nbT1hO2UuaG09YjtlLmltPWdjYjtlLl9fZWxlbWVudFR5cGVJZCQ9YztlLl9fZWxlbWVudFR5cGVDYXRlZ29yeSQ9ZDtyZXR1cm4gZX1cbmZ1bmN0aW9uIHA2YyhhLGIsYyxkLGUpe2k2YygpO3JldHVybiAkd25kLk1hdGgubWluKEE2YyhhLGIsYyxkLGUpLEE2YyhjLGQsYSxiLFY2YyhuZXcgZjdjKGUuYSxlLmIpKSkpfVxuZnVuY3Rpb24gZ2JjKCl7Z2JjPWNjYjtmYmM9bmV3IGliYyhhbmUsMCk7ZGJjPW5ldyBpYmMoR25lLDEpO2ViYz1uZXcgaWJjKEhuZSwyKTtjYmM9bmV3IGliYygnQk9USCcsMyl9XG5mdW5jdGlvbiBBamMoKXtBamM9Y2NiO3dqYz1uZXcgQmpjKGdsZSwwKTt4amM9bmV3IEJqYyhqbGUsMSk7eWpjPW5ldyBCamMoa2xlLDIpO3pqYz1uZXcgQmpjKCdUT1AnLDMpfVxuZnVuY3Rpb24gbFdiKCl7bFdiPWNjYjtoV2I9bmV3IG9XYignUTEnLDApO2tXYj1uZXcgb1diKCdRNCcsMSk7aVdiPW5ldyBvV2IoJ1EyJywyKTtqV2I9bmV3IG9XYignUTMnLDMpfVxuZnVuY3Rpb24gTEJjKCl7TEJjPWNjYjtKQmM9bmV3IE1CYygnT0ZGJywwKTtLQmM9bmV3IE1CYygnU0lOR0xFX0VER0UnLDEpO0lCYz1uZXcgTUJjKCdNVUxUSV9FREdFJywyKX1cbmZ1bmN0aW9uIGExYygpe2ExYz1jY2I7XzBjPW5ldyBjMWMoJ01JTklNVU1fU1BBTk5JTkdfVFJFRScsMCk7JDBjPW5ldyBjMWMoJ01BWElNVU1fU1BBTk5JTkdfVFJFRScsMSl9XG5mdW5jdGlvbiBZMWMoKXtZMWM9Y2NiO25ldyBMc2QoJ29yZy5lY2xpcHNlLmVsay5hZGRMYXlvdXRDb25maWcnKTtXMWM9bmV3IGsyYztWMWM9bmV3IGYyYztYMWM9bmV3IGkyY31cbmZ1bmN0aW9uIFVSYyhhKXt2YXIgYixjLGQ7Yj1uZXcgUHNiO2ZvcihkPUpzYihhLmQsMCk7ZC5iIT1kLmQuYzspe2M9QkQoWHNiKGQpLDE4OCk7RHNiKGIsYy5jKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGRWYyhhKXt2YXIgYixjLGQsZTtlPW5ldyBSa2I7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDMzKTtiPWdWYyhjKTtHa2IoZSxiKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIHhjYyhhKXt2YXIgYjtQWmIoYSx0cnVlKTtiPV9pZTt3TmIoYSwoTnljKCksY3ljKSkmJihiKz1CRCh2TmIoYSxjeWMpLDE5KS5hKTt5TmIoYSxjeWMsbWViKGIpKX1cbmZ1bmN0aW9uIHExYyhhLGIsYyl7dmFyIGQ7VWhiKGEuYSk7SGtiKGMuaSxuZXcgQjFjKGEpKTtkPW5ldyBoRGIoQkQoT2hiKGEuYSxiLmIpLDY1KSk7cDFjKGEsZCxiKTtjLmY9ZH1cbmZ1bmN0aW9uIFFMYyhhLGIpe3ZhciBjLGQ7Yz1hLmM7ZD1iLmVbYS5wXTtpZihkPGMuYS5jLmxlbmd0aC0xKXtyZXR1cm4gQkQoSWtiKGMuYSxkKzEpLDEwKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHJyKGEsYil7dmFyIGMsZDtSYihiLCdwcmVkaWNhdGUnKTtmb3IoZD0wO2EuT2IoKTtkKyspe2M9YS5QYigpO2lmKGIuTGIoYykpe3JldHVybiBkfX1yZXR1cm4gLTF9XG5mdW5jdGlvbiBaRWQoYSxiKXt2YXIgYyxkO2Q9MDtpZihhPDY0JiZhPD1iKXtiPWI8NjQ/Yjo2Mztmb3IoYz1hO2M8PWI7YysrKXtkPU1iYihkLE5iYigxLGMpKX19cmV0dXJuIGR9XG5mdW5jdGlvbiBwbWIoYSl7bW1iKCk7dmFyIGIsYyxkO2Q9MDtmb3IoYz1hLktjKCk7Yy5PYigpOyl7Yj1jLlBiKCk7ZD1kKyhiIT1udWxsP3RiKGIpOjApO2Q9ZHwwfXJldHVybiBkfVxuZnVuY3Rpb24gZXRkKGEpe3ZhciBiLGM7Yz0oRmhkKCksYj1uZXcgcm1kLGIpOyEhYSYmd3RkKCghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLGMpO3JldHVybiBjfVxuZnVuY3Rpb24gVEEoYSl7dmFyIGI7Yj1uZXcgUEE7Yi5hPWE7Yi5iPVJBKGEpO2IuYz1LQyhaSSxuaWUsMiwyLDYsMSk7Yi5jWzBdPVNBKGEpO2IuY1sxXT1TQShhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGZrZChhLGIpe3N3aXRjaChiKXtjYXNlIDA6IWEubyYmKGEubz1uZXcgZElkKChUaGQoKSxRaGQpLFMyLGEsMCkpO2Euby5jLiRiKCk7cmV0dXJuO31DaWQoYSxiKX1cbmZ1bmN0aW9uIGpFYihhLGIsYyl7c3dpdGNoKGMuZyl7Y2FzZSAyOmEuYj1iO2JyZWFrO2Nhc2UgMTphLmM9YjticmVhaztjYXNlIDQ6YS5kPWI7YnJlYWs7Y2FzZSAzOmEuYT1iO319XG5mdW5jdGlvbiBzYmQoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiBvYmQ7Y2FzZSAyOnJldHVybiBuYmQ7Y2FzZSAzOnJldHVybiBwYmQ7ZGVmYXVsdDpyZXR1cm4gcWJkO319XG5mdW5jdGlvbiBaYWMoYSl7c3dpdGNoKEJEKHZOYihhLChOeWMoKSxteGMpKSwxNjMpLmcpe2Nhc2UgMjpjYXNlIDQ6cmV0dXJuIHRydWU7ZGVmYXVsdDpyZXR1cm4gZmFsc2U7fX1cbmZ1bmN0aW9uIFRyYygpe1RyYz1jY2I7U3JjPWFzKChPcmMoKSxPQyhHQyhQVywxKSxLaWUsMjU2LDAsW0ZyYyxIcmMsSXJjLEpyYyxLcmMsTHJjLE5yYyxFcmMsR3JjLE1yY10pKSl9XG5mdW5jdGlvbiBOZGQoKXtOZGQ9Y2NiO01kZD1hcygoSWRkKCksT0MoR0MoSjEsMSksS2llLDI1OSwwLFtCZGQsRGRkLEFkZCxFZGQsRmRkLEhkZCxHZGQsQ2RkLHpkZF0pKSl9XG5mdW5jdGlvbiB3VWMoKXt3VWM9Y2NiO3ZVYz1lM2MoYjNjKGIzYyhnM2MoZTNjKG5ldyBqM2MsKHlSYygpLHZSYyksKHFTYygpLHBTYykpLHdSYyksbVNjKSxuU2MpLHhSYyxvU2MpfVxuZnVuY3Rpb24gR3FjKCl7R3FjPWNjYjtFcWM9bmV3IEhxYyhhbmUsMCk7RHFjPW5ldyBIcWMoJ0lOQ09NSU5HX09OTFknLDEpO0ZxYz1uZXcgSHFjKCdPVVRHT0lOR19PTkxZJywyKX1cbmZ1bmN0aW9uIHJDKCl7ckM9Y2NiO3FDPXsnYm9vbGVhbic6c0MsJ251bWJlcic6dEMsJ3N0cmluZyc6dkMsJ29iamVjdCc6dUMsJ2Z1bmN0aW9uJzp1QywndW5kZWZpbmVkJzp3Q319XG5mdW5jdGlvbiBXaGIoYSxiKXttQ2IoYT49MCwnTmVnYXRpdmUgaW5pdGlhbCBjYXBhY2l0eScpO21DYihiPj0wLCdOb24tcG9zaXRpdmUgbG9hZCBmYWN0b3InKTtVaGIodGhpcyl9XG5mdW5jdGlvbiBfRWQoYSxiLGMpe2lmKGE+PTEyOClyZXR1cm4gZmFsc2U7cmV0dXJuIGE8NjQ/S2JiKHhiYihOYmIoMSxhKSxjKSwwKTpLYmIoeGJiKE5iYigxLGEtNjQpLGIpLDApfVxuZnVuY3Rpb24gYk9iKGEsYil7aWYoIWF8fCFifHxhPT1iKXtyZXR1cm4gZmFsc2V9cmV0dXJuIEp5KGEuYi5jLGIuYi5jK2IuYi5iKTwwJiZKeShiLmIuYyxhLmIuYythLmIuYik8MH1cbmZ1bmN0aW9uIEk0YihhKXt2YXIgYixjLGQ7Yz1hLm47ZD1hLm87Yj1hLmQ7cmV0dXJuIG5ldyBKNmMoYy5hLWIuYixjLmItYi5kLGQuYSsoYi5iK2IuYyksZC5iKyhiLmQrYi5hKSl9XG5mdW5jdGlvbiAkaWMoYSl7dmFyIGIsYyxkLGU7Zm9yKGM9YS5hLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtkamMoYSxiLChVY2QoKSxSY2QpKTtkamMoYSxiLEFjZCl9fVxuZnVuY3Rpb24gVXkoYSl7dmFyIGIsYyxkLGU7Zm9yKGI9KGEuaj09bnVsbCYmKGEuaj0oUnooKSxlPVF6LmNlKGEpLFR6KGUpKSksYS5qKSxjPTAsZD1iLmxlbmd0aDtjPGQ7KytjKTt9XG5mdW5jdGlvbiBoRChhKXt2YXIgYixjLGQ7Yj1+YS5sKzEmRWplO2M9fmEubSsoYj09MD8xOjApJkVqZTtkPX5hLmgrKGI9PTAmJmM9PTA/MTowKSZGamU7cmV0dXJuIFRDKGIsYyxkKX1cbmZ1bmN0aW9uIEMkYyhhLGIpe3ZhciBjLGQ7Yz1CRChCRChPaGIoYS5nLGIuYSksNDYpLmEsNjUpO2Q9QkQoQkQoT2hiKGEuZyxiLmIpLDQ2KS5hLDY1KTtyZXR1cm4gX05iKGMsZCl9XG5mdW5jdGlvbiB4dGQoYSxiLGMpe3ZhciBkO2Q9YS5nYygpO2lmKGI+ZCl0aHJvdyB2YmIobmV3IEN5ZChiLGQpKTthLmhpKCkmJihjPUR0ZChhLGMpKTtyZXR1cm4gYS5WaChiLGMpfVxuZnVuY3Rpb24geE5iKGEsYixjKXtyZXR1cm4gYz09bnVsbD8oIWEucSYmKGEucT1uZXcgTHFiKSxUaGIoYS5xLGIpKTooIWEucSYmKGEucT1uZXcgTHFiKSxSaGIoYS5xLGIsYykpLGF9XG5mdW5jdGlvbiB5TmIoYSxiLGMpe2M9PW51bGw/KCFhLnEmJihhLnE9bmV3IExxYiksVGhiKGEucSxiKSk6KCFhLnEmJihhLnE9bmV3IExxYiksUmhiKGEucSxiLGMpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFRRYihhKXt2YXIgYixjO2M9bmV3IGtSYjt0TmIoYyxhKTt5TmIoYywoSFNiKCksRlNiKSxhKTtiPW5ldyBMcWI7VlFiKGEsYyxiKTtVUWIoYSxjLGIpO3JldHVybiBjfVxuZnVuY3Rpb24gajZjKGEpe2k2YygpO3ZhciBiLGMsZDtjPUtDKG0xLG5pZSw4LDIsMCwxKTtkPTA7Zm9yKGI9MDtiPDI7YisrKXtkKz0wLjU7Y1tiXT1yNmMoZCxhKX1yZXR1cm4gY31cbmZ1bmN0aW9uIE1pYyhhLGIpe3ZhciBjLGQsZSxmO2M9ZmFsc2U7ZD1hLmFbYl0ubGVuZ3RoO2ZvcihmPTA7ZjxkLTE7ZisrKXtlPWYrMTtjPWN8TmljKGEsYixmLGUpfXJldHVybiBjfVxuZnVuY3Rpb24gbk5iKGEsYixjLGQsZSl7dmFyIGYsZztmb3IoZz1jO2c8PWU7ZysrKXtmb3IoZj1iO2Y8PWQ7ZisrKXtZTWIoYSxmLGcpfHxhTmIoYSxmLGcsdHJ1ZSxmYWxzZSl9fX1cbmZ1bmN0aW9uIHJOZChhLGIpe3RoaXMuYj1hO25OZC5jYWxsKHRoaXMsKEJEKHF1ZChaS2QoKE5GZCgpLE1GZCkubyksMTApLDE4KSxiLmkpLGIuZyk7dGhpcy5hPShOS2QoKSxNS2QpfVxuZnVuY3Rpb24gaGooYSxiKXt0aGlzLmM9YTt0aGlzLmQ9Yjt0aGlzLmI9dGhpcy5kL3RoaXMuYy5jLkhkKCkuZ2MoKXwwO3RoaXMuYT10aGlzLmQldGhpcy5jLmMuSGQoKS5nYygpfVxuZnVuY3Rpb24gamRiKCl7KytlZGI7dGhpcy5vPW51bGw7dGhpcy5rPW51bGw7dGhpcy5qPW51bGw7dGhpcy5kPW51bGw7dGhpcy5iPW51bGw7dGhpcy5uPW51bGw7dGhpcy5hPW51bGx9XG5mdW5jdGlvbiBmQihhLGIsYyl7dGhpcy5xPW5ldyAkd25kLkRhdGU7dGhpcy5xLnNldEZ1bGxZZWFyKGErbmplLGIsYyk7dGhpcy5xLnNldEhvdXJzKDAsMCwwLDApO1lBKHRoaXMsMCl9XG5mdW5jdGlvbiB0QWMoKXt0QWM9Y2NiO3JBYz1uZXcgdUFjKGFuZSwwKTtxQWM9bmV3IHVBYygnTk9ERVNfQU5EX0VER0VTJywxKTtzQWM9bmV3IHVBYygnUFJFRkVSX0VER0VTJywyKX1cbmZ1bmN0aW9uIFJBKGEpe3ZhciBiO2lmKGE9PTApe3JldHVybiAnRXRjL0dNVCd9aWYoYTwwKXthPS1hO2I9J0V0Yy9HTVQtJ31lbHNle2I9J0V0Yy9HTVQrJ31yZXR1cm4gYitVQShhKX1cbmZ1bmN0aW9uIGdlYihhKXt2YXIgYjtpZihhPDApe3JldHVybiBSaWV9ZWxzZSBpZihhPT0wKXtyZXR1cm4gMH1lbHNle2ZvcihiPUlpZTsoYiZhKT09MDtiPj49MSk7cmV0dXJuIGJ9fVxuZnVuY3Rpb24gJEMoYSl7dmFyIGIsYztjPWhlYihhLmgpO2lmKGM9PTMyKXtiPWhlYihhLm0pO3JldHVybiBiPT0zMj9oZWIoYS5sKSszMjpiKzIwLTEwfWVsc2V7cmV0dXJuIGMtMTJ9fVxuZnVuY3Rpb24gYmtiKGEpe3ZhciBiO2I9YS5hW2EuYl07aWYoYj09bnVsbCl7cmV0dXJuIG51bGx9TkMoYS5hLGEuYixudWxsKTthLmI9YS5iKzEmYS5hLmxlbmd0aC0xO3JldHVybiBifVxuZnVuY3Rpb24gRURjKGEpe3ZhciBiLGM7Yj1hLnQtYS5rW2Euby5wXSphLmQrYS5qW2Euby5wXT5hLmY7Yz1hLnUrYS5lW2Euby5wXSphLmQ+YS5mKmEucyphLmQ7cmV0dXJuIGJ8fGN9XG5mdW5jdGlvbiBJd2IoYSxiLGMpe3ZhciBkLGU7ZD1uZXcgZXhiKGIsYyk7ZT1uZXcgZnhiO2EuYj1Hd2IoYSxhLmIsZCxlKTtlLmJ8fCsrYS5jO2EuYi5iPWZhbHNlO3JldHVybiBlLmR9XG5mdW5jdGlvbiBkamMoYSxiLGMpe3ZhciBkLGUsZixnO2c9Q0hjKGIsYyk7Zj0wO2ZvcihlPWcuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMSk7UmhiKGEuYyxkLG1lYihmKyspKX19XG5mdW5jdGlvbiB4VmIoYSl7dmFyIGIsYztmb3IoYz1uZXcgb2xiKGEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksODEpO2IuZy5jPS1iLmcuYy1iLmcuYn1zVmIoYSl9XG5mdW5jdGlvbiBYRGIoYSl7dmFyIGIsYztmb3IoYz1uZXcgb2xiKGEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksNTcpO2IuZC5jPS1iLmQuYy1iLmQuYn1SRGIoYSl9XG5mdW5jdGlvbiBBVWQoYSl7dmFyIGI7aWYoIWEuY3x8KGEuQmImMSk9PTAmJihhLmMuRGImNjQpIT0wKXtiPXdJZChhKTtKRChiLDg4KSYmKGEuYz1CRChiLDI2KSl9cmV0dXJuIGEuY31cbmZ1bmN0aW9uIFpDKGEpe3ZhciBiLGMsZDtiPX5hLmwrMSZFamU7Yz1+YS5tKyhiPT0wPzE6MCkmRWplO2Q9fmEuaCsoYj09MCYmYz09MD8xOjApJkZqZTthLmw9YjthLm09YzthLmg9ZH1cbmZ1bmN0aW9uIGw3YyhhKXt2YXIgYixjLGQsZSxmO2I9bmV3IGQ3Yztmb3IoZD1hLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtiLmErPWMuYTtiLmIrPWMuYn1yZXR1cm4gYn1cbmZ1bmN0aW9uIG5tYihhLGIpe21tYigpO3ZhciBjLGQsZSxmLGc7Zz1mYWxzZTtmb3IoZD1iLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtnPWd8YS5GYyhjKX1yZXR1cm4gZ31cbmZ1bmN0aW9uIHc2YyhhKXtpNmMoKTt2YXIgYixjO2M9LTEuNzk3NjkzMTM0ODYyMzE1N0UzMDg7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl7YVtiXT5jJiYoYz1hW2JdKX1yZXR1cm4gY31cbmZ1bmN0aW9uIFNIYyhhLGIsYyl7dmFyIGQ7ZD1uZXcgUmtiO1VIYyhhLGIsZCwoVWNkKCksemNkKSx0cnVlLGZhbHNlKTtVSGMoYSxjLGQsVGNkLGZhbHNlLGZhbHNlKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIGNyZChhLGIsYyl7dmFyIGQsZSxmLGc7Zj1udWxsO2c9YjtlPVlwZChnLCdsYWJlbHMnKTtkPW5ldyBIcmQoYSxjKTtmPShEcWQoZC5hLGQuYixlKSxlKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIGoxZChhLGIsYyxkKXt2YXIgZTtlPXIxZChhLGIsYyxkKTtpZighZSl7ZT1pMWQoYSxjLGQpO2lmKCEhZSYmIWUxZChhLGIsZSkpe3JldHVybiBudWxsfX1yZXR1cm4gZX1cbmZ1bmN0aW9uIG0xZChhLGIsYyxkKXt2YXIgZTtlPXMxZChhLGIsYyxkKTtpZighZSl7ZT1sMWQoYSxjLGQpO2lmKCEhZSYmIWUxZChhLGIsZSkpe3JldHVybiBudWxsfX1yZXR1cm4gZX1cbmZ1bmN0aW9uIFhiKGEsYil7dmFyIGM7Zm9yKGM9MDtjPGEuYS5hLmxlbmd0aDtjKyspe2lmKCFCRCgkbGIoYS5hLGMpLDE2OSkuTGIoYikpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBDYihhLGIsYyl7UWIoYik7aWYoYy5PYigpKXtNZmIoYixGYihjLlBiKCkpKTt3aGlsZShjLk9iKCkpe01mYihiLGEuYSk7TWZiKGIsRmIoYy5QYigpKSl9fXJldHVybiBifVxuZnVuY3Rpb24gcW1iKGEpe21tYigpO3ZhciBiLGMsZDtkPTE7Zm9yKGM9YS5LYygpO2MuT2IoKTspe2I9Yy5QYigpO2Q9MzEqZCsoYiE9bnVsbD90YihiKTowKTtkPWR8MH1yZXR1cm4gZH1cbmZ1bmN0aW9uIFdDKGEsYixjLGQsZSl7dmFyIGY7Zj1sRChhLGIpO2MmJlpDKGYpO2lmKGUpe2E9WUMoYSxiKTtkPyhRQz1oRChhKSk6KFFDPVRDKGEubCxhLm0sYS5oKSl9cmV0dXJuIGZ9XG5mdW5jdGlvbiBYemIoYixjKXt2YXIgZDt0cnl7Yy5WZCgpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzgpKXtkPWE7Yi5jW2IuYy5sZW5ndGhdPWR9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24galJiKGEsYixjKXt2YXIgZCxlO2lmKEpEKGIsMTQ0KSYmISFjKXtkPUJEKGIsMTQ0KTtlPWM7cmV0dXJuIGEuYVtkLmJdW2UuYl0rYS5hW2UuYl1bZC5iXX1yZXR1cm4gMH1cbmZ1bmN0aW9uIHhsZChhLGIpe3N3aXRjaChiKXtjYXNlIDc6cmV0dXJuICEhYS5lJiZhLmUuaSE9MDtjYXNlIDg6cmV0dXJuICEhYS5kJiZhLmQuaSE9MDt9cmV0dXJuIFlrZChhLGIpfVxuZnVuY3Rpb24gWVFiKGEsYil7c3dpdGNoKGIuZyl7Y2FzZSAwOkpEKGEuYiw2MzEpfHwoYS5iPW5ldyB4UmIpO2JyZWFrO2Nhc2UgMTpKRChhLmIsNjMyKXx8KGEuYj1uZXcgRFJiKTt9fVxuZnVuY3Rpb24gR2hlKGEsYil7d2hpbGUoYS5nPT1udWxsJiYhYS5jP1V1ZChhKTphLmc9PW51bGx8fGEuaSE9MCYmQkQoYS5nW2EuaS0xXSw0NykuT2IoKSl7T3JkKGIsVnVkKGEpKX19XG5mdW5jdGlvbiBraWMoYSxiLGMpe2EuZz1xaWMoYSxiLChVY2QoKSx6Y2QpLGEuYik7YS5kPXFpYyhhLGMsemNkLGEuYik7aWYoYS5nLmM9PTB8fGEuZC5jPT0wKXtyZXR1cm59bmljKGEpfVxuZnVuY3Rpb24gbGljKGEsYixjKXthLmc9cWljKGEsYiwoVWNkKCksVGNkKSxhLmopO2EuZD1xaWMoYSxjLFRjZCxhLmopO2lmKGEuZy5jPT0wfHxhLmQuYz09MCl7cmV0dXJufW5pYyhhKX1cbmZ1bmN0aW9uICR5YyhhLGIsYyl7cmV0dXJuICFXQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuYywxNikpLG5ldyBYeGIobmV3IGRmZChiLGMpKSkpLnNkKChFQWIoKSxEQWIpKX1cbmZ1bmN0aW9uIEtBYihhKXt2YXIgYjtUemIoYSk7Yj1uZXcgTkJiO2lmKGEuYS5zZChiKSl7cmV0dXJuIEF0YigpLG5ldyBGdGIodUNiKGIuYSkpfXJldHVybiBBdGIoKSxBdGIoKSx6dGJ9XG5mdW5jdGlvbiBuQShhKXt2YXIgYjtpZihhLmI8PTApe3JldHVybiBmYWxzZX1iPWhmYignTUx5ZGhIbXNTRGtLJyx3ZmIoYmZiKGEuYywwKSkpO3JldHVybiBiPjF8fGI+PTAmJmEuYjwzfVxuZnVuY3Rpb24gdzdjKGEpe3ZhciBiLGMsZDtiPW5ldyBzN2M7Zm9yKGQ9SnNiKGEsMCk7ZC5iIT1kLmQuYzspe2M9QkQoWHNiKGQpLDgpO1N0KGIsMCxuZXcgZzdjKGMpKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHFWYihhKXt2YXIgYixjO2ZvcihjPW5ldyBvbGIoYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw4MSk7Yi5mLiRiKCl9TFZiKGEuYixhKTtyVmIoYSl9XG5mdW5jdGlvbiB0YihhKXtyZXR1cm4gTkQoYSk/TENiKGEpOkxEKGEpP0hkYihhKTpLRChhKT8odUNiKGEpLGEpPzEyMzE6MTIzNzpJRChhKT9hLkhiKCk6TUMoYSk/RkNiKGEpOnJ6KGEpfVxuZnVuY3Rpb24gcmIoYSl7cmV0dXJuIE5EKGEpP1pJOkxEKGEpP0JJOktEKGEpP3dJOklEKGEpP2EuZ206TUMoYSk/YS5nbTphLmdtfHxBcnJheS5pc0FycmF5KGEpJiZHQyhQSCwxKXx8UEh9XG5mdW5jdGlvbiBqX2MoYSl7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBuZXcgUTFjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoTXJlKyhhLmYhPW51bGw/YS5mOicnK2EuZykpKTt9fVxuZnVuY3Rpb24gUzBjKGEpe3N3aXRjaChhLmcpe2Nhc2UgMDpyZXR1cm4gbmV3IGsxYztkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKE1yZSsoYS5mIT1udWxsP2EuZjonJythLmcpKSk7fX1cbmZ1bmN0aW9uIGVrZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgMDohYS5vJiYoYS5vPW5ldyBkSWQoKFRoZCgpLFFoZCksUzIsYSwwKSk7Y0lkKGEubyxjKTtyZXR1cm47fXlpZChhLGIsYyl9XG5mdW5jdGlvbiBYUmMoYSxiLGMpe3RoaXMuZz1hO3RoaXMuZT1uZXcgZDdjO3RoaXMuZj1uZXcgZDdjO3RoaXMuZD1uZXcgUHNiO3RoaXMuYj1uZXcgUHNiO3RoaXMuYT1iO3RoaXMuYz1jfVxuZnVuY3Rpb24gUFpjKGEsYixjLGQpe3RoaXMuYj1uZXcgUmtiO3RoaXMubj1uZXcgUmtiO3RoaXMuaT1kO3RoaXMuaj1jO3RoaXMucz1hO3RoaXMudD1iO3RoaXMucj0wO3RoaXMuZD0wfVxuZnVuY3Rpb24gbmliKGEpe3RoaXMuZT1hO3RoaXMuZD1uZXcgSXJiKHRoaXMuZS5nKTt0aGlzLmE9dGhpcy5kO3RoaXMuYj1raWIodGhpcyk7dGhpcy4kbW9kQ291bnQ9YS4kbW9kQ291bnR9XG5mdW5jdGlvbiBQcihhKXt3aGlsZSghYS5kfHwhYS5kLk9iKCkpe2lmKCEhYS5iJiYhYWtiKGEuYikpe2EuZD1CRChma2IoYS5iKSw0Nyl9ZWxzZXtyZXR1cm4gbnVsbH19cmV0dXJuIGEuZH1cbmZ1bmN0aW9uIFh5YyhhKXtFa2IoYS5jLChZMWMoKSxXMWMpKTtpZihLeShhLmEsRWRiKEVEKEtzZCgoZHpjKCksYnpjKSkpKSkpe3JldHVybiBuZXcgWmVkfXJldHVybiBuZXcgX2VkKGEpfVxuZnVuY3Rpb24gYlJjKGEpe3N3aXRjaChhLmcpe2Nhc2UgMTpyZXR1cm4gU3FlO2RlZmF1bHQ6Y2FzZSAyOnJldHVybiAwO2Nhc2UgMzpyZXR1cm4gY21lO2Nhc2UgNDpyZXR1cm4gVHFlO319XG5mdW5jdGlvbiBJZmUoKXt3ZmUoKTt2YXIgYTtpZihkZmUpcmV0dXJuIGRmZTthPUFmZShLZmUoJ00nLHRydWUpKTthPUJmZShLZmUoJ00nLGZhbHNlKSxhKTtkZmU9YTtyZXR1cm4gZGZlfVxuZnVuY3Rpb24gQXdiKGEsYil7dmFyIGMsZCxlO2U9YS5iO3doaWxlKGUpe2M9YS5hLnVlKGIsZS5kKTtpZihjPT0wKXtyZXR1cm4gZX1kPWM8MD8wOjE7ZT1lLmFbZF19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBUeWIoYSxiLGMpe3ZhciBkLGU7ZD0oQmNiKCksX1BiKGMpP3RydWU6ZmFsc2UpO2U9QkQoYi54YyhkKSwxNSk7aWYoIWUpe2U9bmV3IFJrYjtiLnpjKGQsZSl9ZS5GYyhjKX1cbmZ1bmN0aW9uIGRZYyhhLGIpe3ZhciBjLGQ7Yz1CRChoa2QoYSwobFpjKCksVVljKSksMTkpLmE7ZD1CRChoa2QoYixVWWMpLDE5KS5hO3JldHVybiBjPT1kPy0xOmM8ZD8tMTpjPmQ/MTowfVxuZnVuY3Rpb24gTlliKGEsYil7aWYoT1liKGEsYikpe1JjKGEuYixCRCh2TmIoYiwod3RjKCksRXNjKSksMjEpLGIpO0RzYihhLmEsYik7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gZDNiKGEpe3ZhciBiLGM7Yj1CRCh2TmIoYSwod3RjKCksZ3RjKSksMTApO2lmKGIpe2M9Yi5jO0xrYihjLmEsYik7Yy5hLmMubGVuZ3RoPT0wJiZMa2IoUV9iKGIpLmIsYyl9fVxuZnVuY3Rpb24gc3liKGEpe2lmKGx5Yil7cmV0dXJuIEtDKHFMLHRrZSw1NzIsMCwwLDEpfXJldHVybiBCRChRa2IoYS5hLEtDKHFMLHRrZSw1NzIsYS5hLmMubGVuZ3RoLDAsMSkpLDg0Mil9XG5mdW5jdGlvbiBtbihhLGIsYyxkKXtWbSgpO3JldHVybiBuZXcgd3goT0MoR0MoQ0ssMSksemllLDQyLDAsWyhXaihhLGIpLG5ldyBXbyhhLGIpKSwoV2ooYyxkKSxuZXcgV28oYyxkKSldKSl9XG5mdW5jdGlvbiBEbmQoYSxiLGMpe3ZhciBkLGU7ZT0oZD1uZXcgU1NkLGQpOyRuZChlLGIsYyk7d3RkKCghYS5xJiYoYS5xPW5ldyBjVWQobjUsYSwxMSwxMCkpLGEucSksZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBabWQoYSl7dmFyIGIsYyxkLGU7ZT1pY2IoUm1kLGEpO2M9ZS5sZW5ndGg7ZD1LQyhaSSxuaWUsMixjLDYsMSk7Zm9yKGI9MDtiPGM7KytiKXtkW2JdPWVbYl19cmV0dXJuIGR9XG5mdW5jdGlvbiBsNGMoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihkPWIsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO2c9bmV3IHY0YyhhKTtjLlFlKGcpO3E0YyhnKX1VaGIoYS5mKX1cbmZ1bmN0aW9uIGh3KGEsYil7dmFyIGM7aWYoYj09PWEpe3JldHVybiB0cnVlfWlmKEpEKGIsMjI0KSl7Yz1CRChiLDIyNCk7cmV0dXJuIHBiKGEuWmIoKSxjLlpiKCkpfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGF1YihhLGIpe3ZhciBjO2lmKGIqMisxPj1hLmIuYy5sZW5ndGgpe3JldHVybn1hdWIoYSwyKmIrMSk7Yz0yKmIrMjtjPGEuYi5jLmxlbmd0aCYmYXViKGEsYyk7YnViKGEsYil9XG5mdW5jdGlvbiBTcyhhLGIsYyl7dmFyIGQsZTt0aGlzLmc9YTt0aGlzLmM9Yjt0aGlzLmE9dGhpczt0aGlzLmQ9dGhpcztlPUtwKGMpO2Q9S0MoQkcsR2llLDMzMCxlLDAsMSk7dGhpcy5iPWR9XG5mdW5jdGlvbiB3aGIoYSxiLGMpe3ZhciBkO2ZvcihkPWMtMTtkPj0wJiZhW2RdPT09YltkXTtkLS0pO3JldHVybiBkPDA/MDpHYmIoeGJiKGFbZF0sWWplKSx4YmIoYltkXSxZamUpKT8tMToxfVxuZnVuY3Rpb24gVUZjKGEsYil7dmFyIGMsZDtmb3IoZD1Kc2IoYSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksMjE0KTtpZihjLmUubGVuZ3RoPjApe2IudGQoYyk7Yy5pJiZfRmMoYyl9fX1cbmZ1bmN0aW9uIG56ZChhLGIpe3ZhciBjLGQ7ZD1CRChBamQoYS5hLDQpLDEyNik7Yz1LQygkMyxodmUsNDE1LGIsMCwxKTtkIT1udWxsJiYkZmIoZCwwLGMsMCxkLmxlbmd0aCk7cmV0dXJuIGN9XG5mdW5jdGlvbiBKRWQoYSxiKXt2YXIgYztjPW5ldyBORWQoKGEuZiYyNTYpIT0wLGEuaSxhLmEsYS5kLChhLmYmMTYpIT0wLGEuaixhLmcsYik7YS5lIT1udWxsfHwoYy5jPWEpO3JldHVybiBjfVxuZnVuY3Rpb24gRGMoYSxiKXt2YXIgYyxkO2ZvcihkPWEuWmIoKS5DYygpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTQpO2lmKGMuSGMoYikpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBvTmIoYSxiLGMsZCxlKXt2YXIgZixnO2ZvcihnPWM7Zzw9ZTtnKyspe2ZvcihmPWI7Zjw9ZDtmKyspe2lmKFlNYihhLGYsZykpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gVHQoYSxiLGMpe3ZhciBkLGUsZixnO3VDYihjKTtnPWZhbHNlO2Y9YS5aYyhiKTtmb3IoZT1jLktjKCk7ZS5PYigpOyl7ZD1lLlBiKCk7Zi5SYihkKTtnPXRydWV9cmV0dXJuIGd9XG5mdW5jdGlvbiBEdihhLGIpe3ZhciBjO2lmKGE9PT1iKXtyZXR1cm4gdHJ1ZX1lbHNlIGlmKEpEKGIsODMpKXtjPUJEKGIsODMpO3JldHVybiBBeChXbShhKSxjLnZjKCkpfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIE5oYihhLGIsYyl7dmFyIGQsZTtmb3IoZT1jLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksNDIpO2lmKGEucmUoYixkLmRkKCkpKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gSGljKGEsYixjKXtpZighYS5kW2IucF1bYy5wXSl7R2ljKGEsYixjKTthLmRbYi5wXVtjLnBdPXRydWU7YS5kW2MucF1bYi5wXT10cnVlfXJldHVybiBhLmFbYi5wXVtjLnBdfVxuZnVuY3Rpb24gSXRkKGEsYil7aWYoIWEuYWkoKSYmYj09bnVsbCl7dGhyb3cgdmJiKG5ldyBXZGIoXCJUaGUgJ25vIG51bGwnIGNvbnN0cmFpbnQgaXMgdmlvbGF0ZWRcIikpfXJldHVybiBifVxuZnVuY3Rpb24gJEpkKGEsYil7aWYoYS5EPT1udWxsJiZhLkIhPW51bGwpe2EuRD1hLkI7YS5CPW51bGx9aktkKGEsYj09bnVsbD9udWxsOih1Q2IoYiksYikpOyEhYS5DJiZhLnlrKG51bGwpfVxuZnVuY3Rpb24gWEhjKGEsYil7dmFyIGM7aWYoIWF8fGE9PWJ8fCF3TmIoYiwod3RjKCksUHNjKSkpe3JldHVybiBmYWxzZX1jPUJEKHZOYihiLCh3dGMoKSxQc2MpKSwxMCk7cmV0dXJuIGMhPWF9XG5mdW5jdGlvbiBiNGQoYSl7c3dpdGNoKGEuaSl7Y2FzZSAyOntyZXR1cm4gdHJ1ZX1jYXNlIDE6e3JldHVybiBmYWxzZX1jYXNlIC0xOnsrK2EuY31kZWZhdWx0OntyZXR1cm4gYS5wbCgpfX19XG5mdW5jdGlvbiBjNGQoYSl7c3dpdGNoKGEuaSl7Y2FzZSAtMjp7cmV0dXJuIHRydWV9Y2FzZSAtMTp7cmV0dXJuIGZhbHNlfWNhc2UgMTp7LS1hLmN9ZGVmYXVsdDp7cmV0dXJuIGEucWwoKX19fVxuZnVuY3Rpb24gWGRiKGEpe1p5LmNhbGwodGhpcywnVGhlIGdpdmVuIHN0cmluZyBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0IGZvciBpbmRpdmlkdWFsIHNwYWNpbmdzLicsYSl9XG5mdW5jdGlvbiBwZ2QoKXtwZ2Q9Y2NiO21nZD1uZXcgcWdkKCdFTEsnLDApO25nZD1uZXcgcWdkKCdKU09OJywxKTtsZ2Q9bmV3IHFnZCgnRE9UJywyKTtvZ2Q9bmV3IHFnZCgnU1ZHJywzKX1cbmZ1bmN0aW9uIHBXYygpe3BXYz1jY2I7bVdjPW5ldyByV2MoYW5lLDApO25XYz1uZXcgcldjKCdSQURJQUxfQ09NUEFDVElPTicsMSk7b1djPW5ldyByV2MoJ1dFREdFX0NPTVBBQ1RJT04nLDIpfVxuZnVuY3Rpb24gRnliKCl7RnliPWNjYjtDeWI9bmV3IEd5YignQ09OQ1VSUkVOVCcsMCk7RHliPW5ldyBHeWIoJ0lERU5USVRZX0ZJTklTSCcsMSk7RXliPW5ldyBHeWIoJ1VOT1JERVJFRCcsMil9XG5mdW5jdGlvbiBuUGIoKXtuUGI9Y2NiO2tQYj0oY1BiKCksYlBiKTtqUGI9bmV3IE5zZChUbGUsa1BiKTtpUGI9bmV3IExzZChVbGUpO2xQYj1uZXcgTHNkKFZsZSk7bVBiPW5ldyBMc2QoV2xlKX1cbmZ1bmN0aW9uIE9jYygpe09jYz1jY2I7TWNjPW5ldyBaY2M7TmNjPW5ldyBfY2M7TGNjPW5ldyBiZGM7S2NjPW5ldyBmZGM7SmNjPW5ldyBqZGM7SWNjPSh1Q2IoSmNjKSxuZXcgYnBiKX1cbmZ1bmN0aW9uIHRCYygpe3RCYz1jY2I7cUJjPW5ldyB1QmMoJ0NPTlNFUlZBVElWRScsMCk7ckJjPW5ldyB1QmMoJ0NPTlNFUlZBVElWRV9TT0ZUJywxKTtzQmM9bmV3IHVCYygnU0xPUFBZJywyKX1cbmZ1bmN0aW9uIFphZCgpe1phZD1jY2I7WGFkPW5ldyBxMGIoMTUpO1dhZD1uZXcgT3NkKChZOWMoKSxmOWMpLFhhZCk7WWFkPUM5YztTYWQ9czhjO1RhZD1ZOGM7VmFkPV84YztVYWQ9JDhjfVxuZnVuY3Rpb24gbzdjKGEsYixjKXt2YXIgZCxlLGY7ZD1uZXcgUHNiO2ZvcihmPUpzYihjLDApO2YuYiE9Zi5kLmM7KXtlPUJEKFhzYihmKSw4KTtEc2IoZCxuZXcgZzdjKGUpKX1UdChhLGIsZCl9XG5mdW5jdGlvbiByN2MoYSl7dmFyIGIsYyxkO2I9MDtkPUtDKG0xLG5pZSw4LGEuYiwwLDEpO2M9SnNiKGEsMCk7d2hpbGUoYy5iIT1jLmQuYyl7ZFtiKytdPUJEKFhzYihjKSw4KX1yZXR1cm4gZH1cbmZ1bmN0aW9uICRQZChhKXt2YXIgYjtiPSghYS5hJiYoYS5hPW5ldyBjVWQoZzUsYSw5LDUpKSxhLmEpO2lmKGIuaSE9MCl7cmV0dXJuIG5RZChCRChxdWQoYiwwKSw2NzgpKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIEx5KGEsYil7dmFyIGM7Yz13YmIoYSxiKTtpZihHYmIoVmJiKGEsYiksMCl8RWJiKFZiYihhLGMpLDApKXtyZXR1cm4gY31yZXR1cm4gd2JiKHJpZSxWYmIoUGJiKGMsNjMpLDEpKX1cbmZ1bmN0aW9uIFl5YyhhLGIpe3ZhciBjO2M9S3NkKChkemMoKSxiemMpKSE9bnVsbCYmYi53ZygpIT1udWxsP0VkYihFRChiLndnKCkpKS9FZGIoRUQoS3NkKGJ6YykpKToxO1JoYihhLmIsYixjKX1cbmZ1bmN0aW9uIGxlKGEsYil7dmFyIGMsZDtjPUJEKGEuZC5CYyhiKSwxNCk7aWYoIWMpe3JldHVybiBudWxsfWQ9YS5lLmhjKCk7ZC5HYyhjKTthLmUuZC09Yy5nYygpO2MuJGIoKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIEFIYyhhLGIpe3ZhciBjLGQ7ZD1hLmNbYl07aWYoZD09MCl7cmV0dXJufWEuY1tiXT0wO2EuZC09ZDtjPWIrMTt3aGlsZShjPGEuYS5sZW5ndGgpe2EuYVtjXS09ZDtjKz1jJi1jfX1cbmZ1bmN0aW9uIHJ3YihhKXt2YXIgYjtiPWEuYS5jLmxlbmd0aDtpZihiPjApe3JldHVybiBfdmIoYi0xLGEuYS5jLmxlbmd0aCksS2tiKGEuYSxiLTEpfWVsc2V7dGhyb3cgdmJiKG5ldyBKcGIpfX1cbmZ1bmN0aW9uIEMyYyhhLGIsYyl7aWYoYjwwKXt0aHJvdyB2YmIobmV3IHFjYihlc2UrYikpfWlmKGI8YS5qLmMubGVuZ3RoKXtOa2IoYS5qLGIsYyl9ZWxzZXtBMmMoYSxiKTtFa2IoYS5qLGMpfX1cbmZ1bmN0aW9uIG9DYihhLGIsYyl7aWYoYT5iKXt0aHJvdyB2YmIobmV3IFdkYih4a2UrYSt5a2UrYikpfWlmKGE8MHx8Yj5jKXt0aHJvdyB2YmIobmV3IHNjYih4a2UrYSt6a2UrYitva2UrYykpfX1cbmZ1bmN0aW9uIGo1YyhhKXtpZighYS5hfHwoYS5hLmkmOCk9PTApe3Rocm93IHZiYihuZXcgWmRiKCdFbnVtZXJhdGlvbiBjbGFzcyBleHBlY3RlZCBmb3IgbGF5b3V0IG9wdGlvbiAnK2EuZikpfX1cbmZ1bmN0aW9uIHZ1ZChhKXt2YXIgYjsrK2EuajtpZihhLmk9PTApe2EuZz1udWxsfWVsc2UgaWYoYS5pPGEuZy5sZW5ndGgpe2I9YS5nO2EuZz1hLnJpKGEuaSk7JGZiKGIsMCxhLmcsMCxhLmkpfX1cbmZ1bmN0aW9uIGhrYihhLGIpe3ZhciBjLGQ7Yz1hLmEubGVuZ3RoLTE7YS5jPWEuYy0xJmM7d2hpbGUoYiE9YS5jKXtkPWIrMSZjO05DKGEuYSxiLGEuYVtkXSk7Yj1kfU5DKGEuYSxhLmMsbnVsbCl9XG5mdW5jdGlvbiBpa2IoYSxiKXt2YXIgYyxkO2M9YS5hLmxlbmd0aC0xO3doaWxlKGIhPWEuYil7ZD1iLTEmYztOQyhhLmEsYixhLmFbZF0pO2I9ZH1OQyhhLmEsYS5iLG51bGwpO2EuYj1hLmIrMSZjfVxuZnVuY3Rpb24gRmtiKGEsYixjKXt2YXIgZCxlO3dDYihiLGEuYy5sZW5ndGgpO2Q9Yy5QYygpO2U9ZC5sZW5ndGg7aWYoZT09MCl7cmV0dXJuIGZhbHNlfWJDYihhLmMsYixkKTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIFZFZChhKXt2YXIgYixjO2lmKGE9PW51bGwpcmV0dXJuIG51bGw7Zm9yKGI9MCxjPWEubGVuZ3RoO2I8YztiKyspe2lmKCFnRmQoYVtiXSkpcmV0dXJuIGFbYl19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBncmIoYSxiLGMpe3ZhciBkLGUsZixnO2ZvcihlPWMsZj0wLGc9ZS5sZW5ndGg7ZjxnOysrZil7ZD1lW2ZdO2lmKGEuYi5yZShiLGQuY2QoKSkpe3JldHVybiBkfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIEhsYihhKXt2YXIgYixjLGQsZSxmO2Y9MTtmb3IoYz1hLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtmPTMxKmYrKGIhPW51bGw/dGIoYik6MCk7Zj1mfDB9cmV0dXJuIGZ9XG5mdW5jdGlvbiBhcyhhKXt2YXIgYixjLGQsZSxmO2I9e307Zm9yKGQ9YSxlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07YlsnOicrKGMuZiE9bnVsbD9jLmY6JycrYy5nKV09Y31yZXR1cm4gYn1cbmZ1bmN0aW9uIGdyKGEpe3ZhciBiO1FiKGEpO01iKHRydWUsJ251bWJlclRvQWR2YW5jZSBtdXN0IGJlIG5vbm5lZ2F0aXZlJyk7Zm9yKGI9MDtiPDAmJlFyKGEpO2IrKyl7UnIoYSl9cmV0dXJuIGJ9XG5mdW5jdGlvbiBlRGMoYSl7dmFyIGIsYyxkO2Q9MDtmb3IoYz1uZXcgU3IodXIoYS5hLktjKCksbmV3IFNxKSk7UXIoYyk7KXtiPUJEKFJyKGMpLDE3KTtiLmMuaT09Yi5kLml8fCsrZH1yZXR1cm4gZH1cbmZ1bmN0aW9uIEhaYihhLGIpe3ZhciBjLGQsZTtjPWE7ZT0wO2Rve2lmKGM9PWIpe3JldHVybiBlfWQ9Yy5lO2lmKCFkKXt0aHJvdyB2YmIobmV3IFZkYil9Yz1RX2IoZCk7KytlfXdoaWxlKHRydWUpfVxuZnVuY3Rpb24gdyRjKGEsYil7dmFyIGMsZCxlO2U9Yi1hLmY7Zm9yKGQ9bmV3IG9sYihhLmQpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw0NDMpO19aYyhjLGMuZSxjLmYrZSl9YS5mPWJ9XG5mdW5jdGlvbiBhUmMoYSxiLGMpe2lmKCR3bmQuTWF0aC5hYnMoYi1hKTxScWV8fCR3bmQuTWF0aC5hYnMoYy1hKTxScWUpe3JldHVybiB0cnVlfXJldHVybiBiLWE+UnFlP2EtYz5ScWU6Yy1hPlJxZX1cbmZ1bmN0aW9uIHBIYihhLGIpe2lmKCFhKXtyZXR1cm4gMH1pZihiJiYhYS5qKXtyZXR1cm4gMH1pZihKRChhLDEyNCkpe2lmKEJEKGEsMTI0KS5hLmI9PTApe3JldHVybiAwfX1yZXR1cm4gYS5SZSgpfVxuZnVuY3Rpb24gcUhiKGEsYil7aWYoIWEpe3JldHVybiAwfWlmKGImJiFhLmspe3JldHVybiAwfWlmKEpEKGEsMTI0KSl7aWYoQkQoYSwxMjQpLmEuYT09MCl7cmV0dXJuIDB9fXJldHVybiBhLlNlKCl9XG5mdW5jdGlvbiBmaGIoYSl7SGdiKCk7aWYoYTwwKXtpZihhIT0tMSl7cmV0dXJuIG5ldyBUZ2IoLTEsLWEpfXJldHVybiBCZ2J9ZWxzZSByZXR1cm4gYTw9MTA/RGdiW1FEKGEpXTpuZXcgVGdiKDEsYSl9XG5mdW5jdGlvbiB4QyhhKXtyQygpO3Rocm93IHZiYihuZXcgTUIoXCJVbmV4cGVjdGVkIHR5cGVvZiByZXN1bHQgJ1wiK2ErXCInOyBwbGVhc2UgcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBHV1QgdGVhbVwiKSl9XG5mdW5jdGlvbiBseihhKXtqeigpO1B5KHRoaXMpO1J5KHRoaXMpO3RoaXMuZT1hO1N5KHRoaXMsYSk7dGhpcy5nPWE9PW51bGw/WGhlOmZjYihhKTt0aGlzLmE9Jyc7dGhpcy5iPWE7dGhpcy5hPScnfVxuZnVuY3Rpb24gRiRjKCl7dGhpcy5hPW5ldyBHJGM7dGhpcy5mPW5ldyBJJGModGhpcyk7dGhpcy5iPW5ldyBLJGModGhpcyk7dGhpcy5pPW5ldyBNJGModGhpcyk7dGhpcy5lPW5ldyBPJGModGhpcyl9XG5mdW5jdGlvbiBzcygpe3JzLmNhbGwodGhpcyxuZXcgX3JiKEN2KDE2KSkpO1hqKDIsbWllKTt0aGlzLmI9Mjt0aGlzLmE9bmV3IE1zKG51bGwsbnVsbCwwLG51bGwpO0FzKHRoaXMuYSx0aGlzLmEpfVxuZnVuY3Rpb24geHpjKCl7eHpjPWNjYjt1emM9bmV3IHp6YygnRFVNTVlfTk9ERV9PVkVSJywwKTt2emM9bmV3IHp6YygnRFVNTVlfTk9ERV9VTkRFUicsMSk7d3pjPW5ldyB6emMoJ0VRVUFMJywyKX1cbmZ1bmN0aW9uIExVYigpe0xVYj1jY2I7SlViPUZ4KE9DKEdDKHQxLDEpLEtpZSwxMDMsMCxbKGVhZCgpLGFhZCksYmFkXSkpO0tVYj1GeChPQyhHQyh0MSwxKSxLaWUsMTAzLDAsW2RhZCxfOWNdKSl9XG5mdW5jdGlvbiBWUWMoYSl7cmV0dXJuIChVY2QoKSxMY2QpLkhjKGEuaik/RWRiKEVEKHZOYihhLCh3dGMoKSxxdGMpKSkpOmw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFthLmkubixhLm4sYS5hXSkpLmJ9XG5mdW5jdGlvbiBET2IoYSl7dmFyIGIsYyxkLGU7ZD1hLmIuYTtmb3IoYz1kLmEuZWMoKS5LYygpO2MuT2IoKTspe2I9QkQoYy5QYigpLDU2MSk7ZT1uZXcgTVBiKGIsYS5lLGEuZik7RWtiKGEuZyxlKX19XG5mdW5jdGlvbiB5SWQoYSxiKXt2YXIgYyxkLGU7ZD1hLm5rKGIsbnVsbCk7ZT1udWxsO2lmKGIpe2U9KExGZCgpLGM9bmV3IFVRZCxjKTtOUWQoZSxhLnIpfWQ9eElkKGEsZSxkKTshIWQmJmQuRmkoKX1cbmZ1bmN0aW9uIFZGYyhhLGIpe3ZhciBjLGQ7ZD1DdWIoYS5kLDEpIT0wO2M9dHJ1ZTt3aGlsZShjKXtjPWZhbHNlO2M9Yi5jLlRmKGIuZSxkKTtjPWN8ZEdjKGEsYixkLGZhbHNlKTtkPSFkfSRGYyhhKX1cbmZ1bmN0aW9uIHdaYyhhLGIpe3ZhciBjLGQsZTtkPWZhbHNlO2M9Yi5xLmQ7aWYoYi5kPGEuYil7ZT1aWmMoYi5xLGEuYik7aWYoYi5xLmQ+ZSl7JFpjKGIucSxlKTtkPWMhPWIucS5kfX1yZXR1cm4gZH1cbmZ1bmN0aW9uIFBWYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aT1iLmk7aj1iLmo7ZD1hLmY7ZT1kLmk7Zj1kLmo7Zz1pLWU7aD1qLWY7Yz0kd25kLk1hdGguc3FydChnKmcraCpoKTtyZXR1cm4gY31cbmZ1bmN0aW9uIFJuZChhLGIpe3ZhciBjLGQ7ZD1qaWQoYSk7aWYoIWQpeyFBbmQmJihBbmQ9bmV3IGxVZCk7Yz0oSUVkKCksUEVkKGIpKTtkPW5ldyBzMGQoYyk7d3RkKGQuVmsoKSxhKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIFNjKGEsYil7dmFyIGMsZDtjPUJEKGEuYy5CYyhiKSwxNCk7aWYoIWMpe3JldHVybiBhLmpjKCl9ZD1hLmhjKCk7ZC5HYyhjKTthLmQtPWMuZ2MoKTtjLiRiKCk7cmV0dXJuIGEubWMoZCl9XG5mdW5jdGlvbiBqN2MoYSxiKXt2YXIgYztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXtpZihhPT0oQkNiKGMsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChjKSkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBFX2IoYSxiKXt2YXIgYztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXtpZihhPT0oQkNiKGMsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChjKSkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBoRmQoYSl7dmFyIGIsYztpZihhPT1udWxsKXJldHVybiBmYWxzZTtmb3IoYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl7aWYoIWdGZChhW2JdKSlyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBOZ2IoYSl7dmFyIGI7aWYoYS5jIT0wKXtyZXR1cm4gYS5jfWZvcihiPTA7YjxhLmEubGVuZ3RoO2IrKyl7YS5jPWEuYyozMysoYS5hW2JdJi0xKX1hLmM9YS5jKmEuZTtyZXR1cm4gYS5jfVxuZnVuY3Rpb24gdmtiKGEpe3ZhciBiO3NDYihhLmEhPWEuYik7Yj1hLmQuYVthLmFdO21rYihhLmI9PWEuZC5jJiZiIT1udWxsKTthLmM9YS5hO2EuYT1hLmErMSZhLmQuYS5sZW5ndGgtMTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHBoZShhKXt2YXIgYjtpZighKGEuYy5jPDA/YS5hPj1hLmMuYjphLmE8PWEuYy5iKSl7dGhyb3cgdmJiKG5ldyB1dGIpfWI9YS5hO2EuYSs9YS5jLmM7KythLmI7cmV0dXJuIG1lYihiKX1cbmZ1bmN0aW9uIEJXYihhKXt2YXIgYjtiPW5ldyBWV2IoYSk7clhiKGEuYSx6V2IsbmV3IGFtYihPQyhHQyhiUSwxKSxVaGUsMzY5LDAsW2JdKSkpOyEhYi5kJiZFa2IoYi5mLGIuZCk7cmV0dXJuIGIuZn1cbmZ1bmN0aW9uIFoxYihhKXt2YXIgYjtiPW5ldyBxX2IoYS5hKTt0TmIoYixhKTt5TmIoYiwod3RjKCksJHNjKSxhKTtiLm8uYT1hLmc7Yi5vLmI9YS5mO2Iubi5hPWEuaTtiLm4uYj1hLmo7cmV0dXJuIGJ9XG5mdW5jdGlvbiBBOWIoYSxiLGMsZCl7dmFyIGUsZjtmb3IoZj1hLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksNzApO2Uubi5hPWIuYSsoZC5hLWUuby5hKS8yO2Uubi5iPWIuYjtiLmIrPWUuby5iK2N9fVxuZnVuY3Rpb24gVURiKGEsYixjKXt2YXIgZCxlO2ZvcihlPWIuYS5hLmVjKCkuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSw1Nyk7aWYoVkRiKGEsZCxjKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIEpEYyhhKXt2YXIgYixjO2ZvcihjPW5ldyBvbGIoYS5yKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTApO2lmKGEubltiLnBdPD0wKXtyZXR1cm4gYn19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBjVmMoYSl7dmFyIGIsYyxkLGU7ZT1uZXcgVHFiO2ZvcihkPW5ldyBvbGIoYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDMzKTtiPWZWYyhjKTt5ZShlLGIpfXJldHVybiBlfVxuZnVuY3Rpb24gekZjKGEpe3ZhciBiO2I9azNjKHhGYyk7QkQodk5iKGEsKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksS3JjKSkmJmUzYyhiLChxVWIoKSxuVWIpLChTOGIoKSxIOGIpKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIHFLYihhLGIsYyl7dmFyIGQ7ZD1uZXcgQUpiKGEsYik7UmMoYS5yLGIuSGYoKSxkKTtpZihjJiYhdGNkKGEudSkpe2QuYz1uZXcgYUliKGEuZCk7SGtiKGIud2YoKSxuZXcgdEtiKGQpKX19XG5mdW5jdGlvbiB5YmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hLWI7aWYoIWlzTmFOKGMpKXtyZXR1cm4gY319cmV0dXJuIGVEKEZiYihhKT9SYmIoYSk6YSxGYmIoYik/UmJiKGIpOmIpfVxuZnVuY3Rpb24gYkZkKGEsYil7cmV0dXJuIGI8YS5sZW5ndGgmJihCQ2IoYixhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGIpIT02MykmJihCQ2IoYixhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGIpIT0zNSl9XG5mdW5jdGlvbiBLaWMoYSxiLGMsZCl7dmFyIGUsZjthLmE9YjtmPWQ/MDoxO2EuZj0oZT1uZXcgSWljKGEuYyxhLmEsYyxmKSxuZXcgampjKGMsYS5hLGUsYS5lLGEuYixhLmM9PShyR2MoKSxwR2MpKSl9XG5mdW5jdGlvbiBUbWQoYSxiLGMpe3ZhciBkLGU7ZT1hLmE7YS5hPWI7aWYoKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wKXtkPW5ldyBuU2QoYSwxLDEsZSxiKTshYz8oYz1kKTpjLkVpKGQpfXJldHVybiBjfVxuZnVuY3Rpb24gR1FkKGEsYixjKXt2YXIgZCxlO2U9YS5iO2EuYj1iO2lmKChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCl7ZD1uZXcgblNkKGEsMSwzLGUsYik7IWM/KGM9ZCk6Yy5FaShkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIElRZChhLGIsYyl7dmFyIGQsZTtlPWEuZjthLmY9YjtpZigoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTApe2Q9bmV3IG5TZChhLDEsMCxlLGIpOyFjPyhjPWQpOmMuRWkoZCl9cmV0dXJuIGN9XG5mdW5jdGlvbiB4aWQoYSxiKXt2YXIgYyxkLGUsZjtmPShlPWE/amlkKGEpOm51bGwscTZkKChkPWIsZT9lLlhrKCk6bnVsbCxkKSkpO2lmKGY9PWIpe2M9amlkKGEpOyEhYyYmYy5YaygpfXJldHVybiBmfVxuZnVuY3Rpb24geDZjKGEsYil7dmFyIGMsZCxlO2U9MTtjPWE7ZD1iPj0wP2I6LWI7d2hpbGUoZD4wKXtpZihkJTI9PTApe2MqPWM7ZD1kLzJ8MH1lbHNle2UqPWM7ZC09MX19cmV0dXJuIGI8MD8xL2U6ZX1cbmZ1bmN0aW9uIHk2YyhhLGIpe3ZhciBjLGQsZTtlPTE7Yz1hO2Q9Yj49MD9iOi1iO3doaWxlKGQ+MCl7aWYoZCUyPT0wKXtjKj1jO2Q9ZC8yfDB9ZWxzZXtlKj1jO2QtPTF9fXJldHVybiBiPDA/MS9lOmV9XG5mdW5jdGlvbiBzQWQoYSl7dmFyIGIsYyxkLGU7aWYoYSE9bnVsbCl7Zm9yKGM9MDtjPGEubGVuZ3RoOysrYyl7Yj1hW2NdO2lmKGIpe0JEKGIuZywzNjcpO2U9Yi5pO2ZvcihkPTA7ZDxlOysrZCk7fX19fVxuZnVuY3Rpb24gWVpjKGEpe3ZhciBiLGMsZDtkPTA7Zm9yKGM9bmV3IG9sYihhLmEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxODcpO2Q9JHduZC5NYXRoLm1heChkLGIuZyl9cmV0dXJuIGR9XG5mdW5jdGlvbiBlR2MoYSl7dmFyIGIsYyxkO2ZvcihkPW5ldyBvbGIoYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjE0KTtiPWMuYy5SZigpP2MuZjpjLmE7ISFiJiZtSGMoYixjLmopfX1cbmZ1bmN0aW9uIGhiZCgpe2hiZD1jY2I7ZmJkPW5ldyBpYmQoJ0lOSEVSSVQnLDApO2ViZD1uZXcgaWJkKCdJTkNMVURFX0NISUxEUkVOJywxKTtnYmQ9bmV3IGliZCgnU0VQQVJBVEVfQ0hJTERSRU4nLDIpfVxuZnVuY3Rpb24gSmtkKGEsYil7c3dpdGNoKGIpe2Nhc2UgMTohYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKTtVeGQoYS5uKTtyZXR1cm47Y2FzZSAyOkxrZChhLG51bGwpO3JldHVybjt9ZmtkKGEsYil9XG5mdW5jdGlvbiBEbShhKXt2YXIgYjtzd2l0Y2goYS5nYygpKXtjYXNlIDA6cmV0dXJuIGhtO2Nhc2UgMTpyZXR1cm4gbmV3IG15KFFiKGEuWGIoMCkpKTtkZWZhdWx0OmI9YTtyZXR1cm4gbmV3IHV4KGIpO319XG5mdW5jdGlvbiBWbihhKXtRbCgpO3N3aXRjaChhLmdjKCkpe2Nhc2UgMDpyZXR1cm4geXgoKSx4eDtjYXNlIDE6cmV0dXJuIG5ldyBveShhLktjKCkuUGIoKSk7ZGVmYXVsdDpyZXR1cm4gbmV3IHp4KGEpO319XG5mdW5jdGlvbiBVcChhKXtRbCgpO3N3aXRjaChhLmMpe2Nhc2UgMDpyZXR1cm4geXgoKSx4eDtjYXNlIDE6cmV0dXJuIG5ldyBveShxcihuZXcgR3FiKGEpKSk7ZGVmYXVsdDpyZXR1cm4gbmV3IFRwKGEpO319XG5mdW5jdGlvbiBIdihiLGMpe1FiKGIpO3RyeXtyZXR1cm4gYi54YyhjKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDIwNSl8fEpEKGEsMTczKSl7cmV0dXJuIG51bGx9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gSXYoYixjKXtRYihiKTt0cnl7cmV0dXJuIGIuQmMoYyl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwyMDUpfHxKRChhLDE3Mykpe3JldHVybiBudWxsfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIENrKGIsYyl7UWIoYik7dHJ5e3JldHVybiBiLkhjKGMpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMjA1KXx8SkQoYSwxNzMpKXtyZXR1cm4gZmFsc2V9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gRGsoYixjKXtRYihiKTt0cnl7cmV0dXJuIGIuTWMoYyl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwyMDUpfHxKRChhLDE3Mykpe3JldHVybiBmYWxzZX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBHdihiLGMpe1FiKGIpO3RyeXtyZXR1cm4gYi5fYihjKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDIwNSl8fEpEKGEsMTczKSl7cmV0dXJuIGZhbHNlfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIEtYYihhLGIpe3ZhciBjO2lmKGEuYS5jLmxlbmd0aD4wKXtjPUJEKElrYihhLmEsYS5hLmMubGVuZ3RoLTEpLDU3MCk7aWYoTlliKGMsYikpe3JldHVybn19RWtiKGEuYSxuZXcgUFliKGIpKX1cbmZ1bmN0aW9uICRnYyhhKXtIZ2MoKTt2YXIgYixjO2I9YS5kLmMtYS5lLmM7Yz1CRChhLmcsMTQ1KTtIa2IoYy5iLG5ldyBzaGMoYikpO0hrYihjLmMsbmV3IHVoYyhiKSk7cmViKGMuaSxuZXcgd2hjKGIpKX1cbmZ1bmN0aW9uIGdpYyhhKXt2YXIgYjtiPW5ldyBVZmI7Yi5hKz0nVmVydGljYWxTZWdtZW50ICc7UGZiKGIsYS5lKTtiLmErPScgJztRZmIoYixFYihuZXcgR2IsbmV3IG9sYihhLmspKSk7cmV0dXJuIGIuYX1cbmZ1bmN0aW9uIHU0YyhhKXt2YXIgYjtiPUJEKFdyYihhLmMuYywnJyksMjI5KTtpZighYil7Yj1uZXcgVzNjKGQ0YyhjNGMobmV3IGU0YywnJyksJ090aGVyJykpO1hyYihhLmMuYywnJyxiKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHFuZChhKXt2YXIgYjtpZigoYS5EYiY2NCkhPTApcmV0dXJuIEVpZChhKTtiPW5ldyBKZmIoRWlkKGEpKTtiLmErPScgKG5hbWU6ICc7RWZiKGIsYS56Yik7Yi5hKz0nKSc7cmV0dXJuIGIuYX1cbmZ1bmN0aW9uIEpuZChhLGIsYyl7dmFyIGQsZTtlPWEuc2I7YS5zYj1iO2lmKChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCl7ZD1uZXcgblNkKGEsMSw0LGUsYik7IWM/KGM9ZCk6Yy5FaShkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIF9pYyhhLGIpe3ZhciBjLGQsZTtjPTA7Zm9yKGU9Vl9iKGEsYikuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMSk7Yys9dk5iKGQsKHd0YygpLGd0YykpIT1udWxsPzE6MH1yZXR1cm4gY31cbmZ1bmN0aW9uIHZQYyhhLGIsYyl7dmFyIGQsZSxmO2Q9MDtmb3IoZj1Kc2IoYSwwKTtmLmIhPWYuZC5jOyl7ZT1FZGIoRUQoWHNiKGYpKSk7aWYoZT5jKXticmVha31lbHNlIGU+PWImJisrZH1yZXR1cm4gZH1cbmZ1bmN0aW9uIFJUZChhLGIsYyl7dmFyIGQsZTtkPW5ldyBwU2QoYS5lLDMsMTMsbnVsbCwoZT1iLmMsZT9lOihqR2QoKSxZRmQpKSxITGQoYSxiKSxmYWxzZSk7IWM/KGM9ZCk6Yy5FaShkKTtyZXR1cm4gY31cbmZ1bmN0aW9uIFNUZChhLGIsYyl7dmFyIGQsZTtkPW5ldyBwU2QoYS5lLDQsMTMsKGU9Yi5jLGU/ZTooakdkKCksWUZkKSksbnVsbCxITGQoYSxiKSxmYWxzZSk7IWM/KGM9ZCk6Yy5FaShkKTtyZXR1cm4gY31cbmZ1bmN0aW9uIHpJZChhLGIsYyl7dmFyIGQsZTtlPWEucjthLnI9YjtpZigoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTApe2Q9bmV3IG5TZChhLDEsOCxlLGEucik7IWM/KGM9ZCk6Yy5FaShkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIG8xZChhLGIpe3ZhciBjLGQ7Yz1CRChiLDY3Nik7ZD1jLnZrKCk7IWQmJmMud2soZD1KRChiLDg4KT9uZXcgQzFkKGEsQkQoYiwyNikpOm5ldyBPMWQoYSxCRChiLDE0OCkpKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIGt1ZChhLGIsYyl7dmFyIGQ7YS5xaShhLmkrMSk7ZD1hLm9pKGIsYyk7YiE9YS5pJiYkZmIoYS5nLGIsYS5nLGIrMSxhLmktYik7TkMoYS5nLGIsZCk7KythLmk7YS5iaShiLGMpO2EuY2koKX1cbmZ1bmN0aW9uIHZ3YihhLGIpe3ZhciBjO2lmKGIuYSl7Yz1iLmEuYS5sZW5ndGg7IWEuYT8oYS5hPW5ldyBXZmIoYS5kKSk6UWZiKGEuYSxhLmIpO09mYihhLmEsYi5hLGIuZC5sZW5ndGgsYyl9cmV0dXJuIGF9XG5mdW5jdGlvbiBfX2QoYSxiKXt2YXIgYyxkLGUsZjtiLnZpKGEuYSk7Zj1CRChBamQoYS5hLDgpLDE5MzYpO2lmKGYhPW51bGwpe2ZvcihjPWYsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7bnVsbC5qbSgpfX19XG5mdW5jdGlvbiBUQWIoYSxiKXt2YXIgYztjPW5ldyBOQmI7aWYoIWEuYS5zZChjKSl7VHpiKGEpO3JldHVybiBBdGIoKSxBdGIoKSx6dGJ9cmV0dXJuIEF0YigpLG5ldyBGdGIodUNiKFNBYihhLGMuYSxiKSkpfVxuZnVuY3Rpb24gQ0hjKGEsYil7c3dpdGNoKGIuZyl7Y2FzZSAyOmNhc2UgMTpyZXR1cm4gVl9iKGEsYik7Y2FzZSAzOmNhc2UgNDpyZXR1cm4gU3UoVl9iKGEsYikpO31yZXR1cm4gbW1iKCksbW1iKCksam1ifVxuZnVuY3Rpb24gcGIoYSxiKXtyZXR1cm4gTkQoYSk/ZGZiKGEsYik6TEQoYSk/RmRiKGEsYik6S0QoYSk/KHVDYihhKSxQRChhKT09PVBEKGIpKTpJRChhKT9hLkZiKGIpOk1DKGEpP21iKGEsYik6cXooYSxiKX1cbmZ1bmN0aW9uIHI2ZChhKXtyZXR1cm4gIWE/bnVsbDooYS5pJjEpIT0wP2E9PXNiYj93STphPT1XRD9KSTphPT1WRD9GSTphPT1VRD9CSTphPT1YRD9NSTphPT1yYmI/VUk6YT09U0Q/eEk6eUk6YX1cbmZ1bmN0aW9uIEZoYihhLGIsYyxkLGUpe2lmKGI9PTB8fGQ9PTApe3JldHVybn1iPT0xPyhlW2RdPUhoYihlLGMsZCxhWzBdKSk6ZD09MT8oZVtiXT1IaGIoZSxhLGIsY1swXSkpOkdoYihhLGMsZSxiLGQpfVxuZnVuY3Rpb24gYzZiKGEsYil7dmFyIGM7aWYoYS5jLmxlbmd0aD09MCl7cmV0dXJufWM9QkQoUWtiKGEsS0MoT1Esa25lLDEwLGEuYy5sZW5ndGgsMCwxKSksMTkzKTtObGIoYyxuZXcgbzZiKTtfNWIoYyxiKX1cbmZ1bmN0aW9uIGk2YihhLGIpe3ZhciBjO2lmKGEuYy5sZW5ndGg9PTApe3JldHVybn1jPUJEKFFrYihhLEtDKE9RLGtuZSwxMCxhLmMubGVuZ3RoLDAsMSkpLDE5Myk7TmxiKGMsbmV3IHQ2Yik7XzViKGMsYil9XG5mdW5jdGlvbiBFa2QoYSxiLGMsZCl7c3dpdGNoKGIpe2Nhc2UgMTpyZXR1cm4gIWEubiYmKGEubj1uZXcgY1VkKEQyLGEsMSw3KSksYS5uO2Nhc2UgMjpyZXR1cm4gYS5rO31yZXR1cm4gYmtkKGEsYixjLGQpfVxuZnVuY3Rpb24gZWFkKCl7ZWFkPWNjYjtjYWQ9bmV3IGlhZChvbGUsMCk7YmFkPW5ldyBpYWQoa2xlLDEpO2FhZD1uZXcgaWFkKGpsZSwyKTtfOWM9bmV3IGlhZCh2bGUsMyk7ZGFkPW5ldyBpYWQoJ1VQJyw0KX1cbmZ1bmN0aW9uIFJYYigpe1JYYj1jY2I7UVhiPW5ldyBTWGIoYW5lLDApO1BYYj1uZXcgU1hiKCdJTlNJREVfUE9SVF9TSURFX0dST1VQUycsMSk7T1hiPW5ldyBTWGIoJ0ZPUkNFX01PREVMX09SREVSJywyKX1cbmZ1bmN0aW9uIHhDYihhLGIsYyl7aWYoYTwwfHxiPmMpe3Rocm93IHZiYihuZXcgcWNiKHhrZSthK3prZStiKycsIHNpemU6ICcrYykpfWlmKGE+Yil7dGhyb3cgdmJiKG5ldyBXZGIoeGtlK2EreWtlK2IpKX19XG5mdW5jdGlvbiBlaWQoYSxiLGMpe2lmKGI8MCl7dmlkKGEsYyl9ZWxzZXtpZighYy5JaigpKXt0aHJvdyB2YmIobmV3IFdkYihpdGUrYy5uZSgpK2p0ZSkpfUJEKGMsNjYpLk5qKCkuVmooYSxhLnloKCksYil9fVxuZnVuY3Rpb24gSmxiKGEsYixjLGQsZSxmLGcsaCl7dmFyIGk7aT1jO3doaWxlKGY8Zyl7aT49ZHx8YjxjJiZoLnVlKGFbYl0sYVtpXSk8PTA/TkMoZSxmKyssYVtiKytdKTpOQyhlLGYrKyxhW2krK10pfX1cbmZ1bmN0aW9uIHlaYihhLGIsYyxkLGUsZil7dGhpcy5lPW5ldyBSa2I7dGhpcy5mPShLQWMoKSxKQWMpO0VrYih0aGlzLmUsYSk7dGhpcy5kPWI7dGhpcy5hPWM7dGhpcy5iPWQ7dGhpcy5mPWU7dGhpcy5jPWZ9XG5mdW5jdGlvbiBWT2QoYSxiKXt2YXIgYyxkO2ZvcihkPW5ldyBGeWQoYSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDI2KTtpZihQRChiKT09PVBEKGMpKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gdUpiKGEpe3FKYigpO3ZhciBiLGMsZCxlO2ZvcihjPXdKYigpLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtpZihKa2IoYi5hLGEsMCkhPS0xKXtyZXR1cm4gYn19cmV0dXJuIHBKYn1cbmZ1bmN0aW9uIGpGZChhKXtpZihhPj02NSYmYTw9NzApe3JldHVybiBhLTY1KzEwfWlmKGE+PTk3JiZhPD0xMDIpe3JldHVybiBhLTk3KzEwfWlmKGE+PTQ4JiZhPD01Nyl7cmV0dXJuIGEtNDh9cmV0dXJuIDB9XG5mdW5jdGlvbiBRSGQoYSl7dmFyIGI7aWYoKGEuRGImNjQpIT0wKXJldHVybiBFaWQoYSk7Yj1uZXcgSmZiKEVpZChhKSk7Yi5hKz0nIChzb3VyY2U6ICc7RWZiKGIsYS5kKTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gT1FkKGEsYixjKXt2YXIgZCxlO2U9YS5hO2EuYT1iO2lmKChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCl7ZD1uZXcgblNkKGEsMSw1LGUsYS5hKTshYz8oYz1kKTpRd2QoYyxkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIEJJZChhLGIpe3ZhciBjO2M9KGEuQmImMjU2KSE9MDtiPyhhLkJifD0yNTYpOihhLkJiJj0tMjU3KTsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBxU2QoYSwxLDIsYyxiKSl9XG5mdW5jdGlvbiBlTGQoYSxiKXt2YXIgYztjPShhLkJiJjI1NikhPTA7Yj8oYS5CYnw9MjU2KTooYS5CYiY9LTI1Nyk7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgcVNkKGEsMSw4LGMsYikpfVxuZnVuY3Rpb24gTFBkKGEsYil7dmFyIGM7Yz0oYS5CYiYyNTYpIT0wO2I/KGEuQmJ8PTI1Nik6KGEuQmImPS0yNTcpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsOCxjLGIpKX1cbmZ1bmN0aW9uIENJZChhLGIpe3ZhciBjO2M9KGEuQmImNTEyKSE9MDtiPyhhLkJifD01MTIpOihhLkJiJj0tNTEzKTsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBxU2QoYSwxLDMsYyxiKSl9XG5mdW5jdGlvbiBmTGQoYSxiKXt2YXIgYztjPShhLkJiJjUxMikhPTA7Yj8oYS5CYnw9NTEyKTooYS5CYiY9LTUxMyk7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgcVNkKGEsMSw5LGMsYikpfVxuZnVuY3Rpb24gTjdkKGEsYil7dmFyIGM7aWYoYS5iPT0tMSYmISFhLmEpe2M9YS5hLkdqKCk7YS5iPSFjP2JMZChhLmMuVGcoKSxhLmEpOmEuYy5YZyhhLmEuYWooKSxjKX1yZXR1cm4gYS5jLk9nKGEuYixiKX1cbmZ1bmN0aW9uIG1lYihhKXt2YXIgYixjO2lmKGE+LTEyOSYmYTwxMjgpe2I9YSsxMjg7Yz0ob2ViKCksbmViKVtiXTshYyYmKGM9bmViW2JdPW5ldyBfZGIoYSkpO3JldHVybiBjfXJldHVybiBuZXcgX2RiKGEpfVxuZnVuY3Rpb24gV2ViKGEpe3ZhciBiLGM7aWYoYT4tMTI5JiZhPDEyOCl7Yj1hKzEyODtjPShZZWIoKSxYZWIpW2JdOyFjJiYoYz1YZWJbYl09bmV3IFFlYihhKSk7cmV0dXJuIGN9cmV0dXJuIG5ldyBRZWIoYSl9XG5mdW5jdGlvbiBMNWIoYSl7dmFyIGIsYztiPWEuaztpZihiPT0oajBiKCksZTBiKSl7Yz1CRCh2TmIoYSwod3RjKCksSHNjKSksNjEpO3JldHVybiBjPT0oVWNkKCksQWNkKXx8Yz09UmNkfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGkxZChhLGIsYyl7dmFyIGQsZSxmO2Y9KGU9blVkKGEuYixiKSxlKTtpZihmKXtkPUJEKFYxZChwMWQoYSxmKSwnJyksMjYpO2lmKGQpe3JldHVybiByMWQoYSxkLGIsYyl9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gbDFkKGEsYixjKXt2YXIgZCxlLGY7Zj0oZT1uVWQoYS5iLGIpLGUpO2lmKGYpe2Q9QkQoVjFkKHAxZChhLGYpLCcnKSwyNik7aWYoZCl7cmV0dXJuIHMxZChhLGQsYixjKX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBjVGQoYSxiKXt2YXIgYyxkO2ZvcihkPW5ldyBGeWQoYSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDEzOCk7aWYoUEQoYik9PT1QRChjKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIHZ0ZChhLGIsYyl7dmFyIGQ7ZD1hLmdjKCk7aWYoYj5kKXRocm93IHZiYihuZXcgQ3lkKGIsZCkpO2lmKGEuaGkoKSYmYS5IYyhjKSl7dGhyb3cgdmJiKG5ldyBXZGIoa3VlKSl9YS5YaChiLGMpfVxuZnVuY3Rpb24gaXFkKGEsYil7dmFyIGM7Yz1vbyhhLmksYik7aWYoYz09bnVsbCl7dGhyb3cgdmJiKG5ldyBjcWQoJ05vZGUgZGlkIG5vdCBleGlzdCBpbiBpbnB1dC4nKSl9WXFkKGIsYyk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiAkaGQoYSxiKXt2YXIgYztjPVlLZChhLGIpO2lmKEpEKGMsMzIyKSl7cmV0dXJuIEJEKGMsMzQpfXRocm93IHZiYihuZXcgV2RiKGl0ZStiK1wiJyBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGVcIikpfVxuZnVuY3Rpb24gVjJkKGEsYixjKXt2YXIgZCxlO2U9SkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wP25ldyBzNGQoYixhKTpuZXcgcDRkKGIsYSk7Zm9yKGQ9MDtkPGM7KytkKXtkNGQoZSl9cmV0dXJuIGV9XG5mdW5jdGlvbiBlZGUoYSl7dmFyIGIsYyxkO2Q9MDtjPWEubGVuZ3RoO2ZvcihiPTA7YjxjO2IrKyl7YVtiXT09MzJ8fGFbYl09PTEzfHxhW2JdPT0xMHx8YVtiXT09OXx8KGFbZCsrXT1hW2JdKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIGxZYihhKXt2YXIgYixjLGQ7Yj1uZXcgUmtiO2ZvcihkPW5ldyBvbGIoYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNTk0KTtHa2IoYixCRChjLmpmKCksMTQpKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIFNTYyhhKXt2YXIgYixjLGQ7Yj1CRCh2TmIoYSwobVRjKCksZ1RjKSksMTUpO2ZvcihkPWIuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwxODgpO0RzYihjLmIuZCxjKTtEc2IoYy5jLmIsYyl9fVxuZnVuY3Rpb24gYjViKGEpe3N3aXRjaChCRCh2TmIoYSwod3RjKCksT3NjKSksMzAzKS5nKXtjYXNlIDE6eU5iKGEsT3NjLChlc2MoKSxic2MpKTticmVhaztjYXNlIDI6eU5iKGEsT3NjLChlc2MoKSxkc2MpKTt9fVxuZnVuY3Rpb24gX0ZjKGEpe3ZhciBiO2lmKGEuZyl7Yj1hLmMuUmYoKT9hLmY6YS5hO2JHYyhiLmEsYS5vLHRydWUpO2JHYyhiLmEsYS5vLGZhbHNlKTt5TmIoYS5vLChOeWMoKSxWeGMpLChkY2QoKSxaYmQpKX19XG5mdW5jdGlvbiBsb2MoYSl7dmFyIGI7aWYoIWEuYSl7dGhyb3cgdmJiKG5ldyBaZGIoJ0Nhbm5vdCBvZmZzZXQgYW4gdW5hc3NpZ25lZCBjdXQuJykpfWI9YS5jLWEuYjthLmIrPWI7bm9jKGEsYik7b29jKGEsYil9XG5mdW5jdGlvbiBja2IoYSl7dmFyIGI7Yj1hLmFbYS5jLTEmYS5hLmxlbmd0aC0xXTtpZihiPT1udWxsKXtyZXR1cm4gbnVsbH1hLmM9YS5jLTEmYS5hLmxlbmd0aC0xO05DKGEuYSxhLmMsbnVsbCk7cmV0dXJuIGJ9XG5mdW5jdGlvbiB6R2IoYSl7dmFyIGIsYztmb3IoYz1hLnAuYS5lYygpLktjKCk7Yy5PYigpOyl7Yj1CRChjLlBiKCksMjEzKTtpZihiLmYmJmEuYltiLmNdPC0xLjBFLTEwKXtyZXR1cm4gYn19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBiTGIoYSxiKXtzd2l0Y2goYS5iLmcpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGI7Y2FzZSAyOmNhc2UgMzpyZXR1cm4gbmV3IEo2YyhiLmQsMCxiLmEsYi5iKTtkZWZhdWx0OnJldHVybiBudWxsO319XG5mdW5jdGlvbiBoYWQoYSl7c3dpdGNoKGEuZyl7Y2FzZSAyOnJldHVybiBiYWQ7Y2FzZSAxOnJldHVybiBhYWQ7Y2FzZSA0OnJldHVybiBfOWM7Y2FzZSAzOnJldHVybiBkYWQ7ZGVmYXVsdDpyZXR1cm4gY2FkO319XG5mdW5jdGlvbiBWY2QoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiBUY2Q7Y2FzZSAyOnJldHVybiBBY2Q7Y2FzZSAzOnJldHVybiB6Y2Q7Y2FzZSA0OnJldHVybiBSY2Q7ZGVmYXVsdDpyZXR1cm4gU2NkO319XG5mdW5jdGlvbiBXY2QoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiBSY2Q7Y2FzZSAyOnJldHVybiBUY2Q7Y2FzZSAzOnJldHVybiBBY2Q7Y2FzZSA0OnJldHVybiB6Y2Q7ZGVmYXVsdDpyZXR1cm4gU2NkO319XG5mdW5jdGlvbiBYY2QoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiB6Y2Q7Y2FzZSAyOnJldHVybiBSY2Q7Y2FzZSAzOnJldHVybiBUY2Q7Y2FzZSA0OnJldHVybiBBY2Q7ZGVmYXVsdDpyZXR1cm4gU2NkO319XG5mdW5jdGlvbiBEUGMoYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gbmV3IE9QYztjYXNlIDE6cmV0dXJuIG5ldyBFUGM7Y2FzZSAyOnJldHVybiBuZXcgSlBjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBWZGIpO319XG5mdW5jdGlvbiBLZGIoYSxiKXtpZihhPGIpe3JldHVybiAtMX1pZihhPmIpe3JldHVybiAxfWlmKGE9PWIpe3JldHVybiBhPT0wP0tkYigxL2EsMS9iKTowfXJldHVybiBpc05hTihhKT9pc05hTihiKT8wOjE6LTF9XG5mdW5jdGlvbiBmNGIoYSxiKXtPZGQoYiwnU29ydCBlbmQgbGFiZWxzJywxKTtNQWIoSkFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmIsMTYpKSxuZXcgcTRiKSxuZXcgczRiKSxuZXcgdTRiKTtRZGQoYil9XG5mdW5jdGlvbiBXeGQoYSxiLGMpe3ZhciBkLGU7aWYoYS5laigpKXtlPWEuZmooKTtkPXN1ZChhLGIsYyk7YS4kaShhLlppKDcsbWViKGMpLGQsYixlKSk7cmV0dXJuIGR9ZWxzZXtyZXR1cm4gc3VkKGEsYixjKX19XG5mdW5jdGlvbiB2QWQoYSxiKXt2YXIgYyxkLGU7aWYoYS5kPT1udWxsKXsrK2EuZTstLWEuZn1lbHNle2U9Yi5jZCgpO2M9Yi5TaCgpO2Q9KGMmT2hlKSVhLmQubGVuZ3RoO0tBZChhLGQseEFkKGEsZCxjLGUpKX19XG5mdW5jdGlvbiBaSWQoYSxiKXt2YXIgYztjPShhLkJiJnp0ZSkhPTA7Yj8oYS5CYnw9enRlKTooYS5CYiY9LTEwMjUpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMTAsYyxiKSl9XG5mdW5jdGlvbiBkSmQoYSxiKXt2YXIgYztjPShhLkJiJlJqZSkhPTA7Yj8oYS5CYnw9UmplKTooYS5CYiY9LTQwOTcpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMTIsYyxiKSl9XG5mdW5jdGlvbiBlSmQoYSxiKXt2YXIgYztjPShhLkJiJkN2ZSkhPTA7Yj8oYS5CYnw9Q3ZlKTooYS5CYiY9LTgxOTMpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMTUsYyxiKSl9XG5mdW5jdGlvbiBmSmQoYSxiKXt2YXIgYztjPShhLkJiJkR2ZSkhPTA7Yj8oYS5CYnw9RHZlKTooYS5CYiY9LTIwNDkpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMTEsYyxiKSl9XG5mdW5jdGlvbiBqT2IoYSxiKXt2YXIgYztjPUtkYihhLmIuYyxiLmIuYyk7aWYoYyE9MCl7cmV0dXJuIGN9Yz1LZGIoYS5hLmEsYi5hLmEpO2lmKGMhPTApe3JldHVybiBjfXJldHVybiBLZGIoYS5hLmIsYi5hLmIpfVxuZnVuY3Rpb24ganFkKGEsYil7dmFyIGM7Yz1PaGIoYS5rLGIpO2lmKGM9PW51bGwpe3Rocm93IHZiYihuZXcgY3FkKCdQb3J0IGRpZCBub3QgZXhpc3QgaW4gaW5wdXQuJykpfVlxZChiLGMpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gazZkKGEpe3ZhciBiLGM7Zm9yKGM9bDZkKGJLZChhKSkuS2MoKTtjLk9iKCk7KXtiPUdEKGMuUGIoKSk7aWYoRG1kKGEsYikpe3JldHVybiB1RmQoKHRGZCgpLHNGZCksYil9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gbjNkKGEsYil7dmFyIGMsZCxlLGYsZztnPVM2ZChhLmUuVGcoKSxiKTtmPTA7Yz1CRChhLmcsMTE5KTtmb3IoZT0wO2U8YS5pOysrZSl7ZD1jW2VdO2cucmwoZC5haygpKSYmKytmfXJldHVybiBmfVxuZnVuY3Rpb24gVnNkKGEsYixjKXt2YXIgZCxlO2Q9QkQoYi5XZShhLmEpLDM1KTtlPUJEKGMuV2UoYS5hKSwzNSk7cmV0dXJuIGQhPW51bGwmJmUhPW51bGw/RmNiKGQsZSk6ZCE9bnVsbD8tMTplIT1udWxsPzE6MH1cbmZ1bmN0aW9uIHZlZChhLGIsYyl7dmFyIGQsZTtpZihhLmMpe0VmZChhLmMsYixjKX1lbHNle2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTU3KTt2ZWQoZCxiLGMpfX19XG5mdW5jdGlvbiBSVWIoYSxiKXt2YXIgYyxkO2ZvcihkPW5ldyBvbGIoYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDQ2KTtMa2IoYS5iLmIsYy5iKTtmVmIoQkQoYy5hLDE4OSksQkQoYy5iLDgxKSl9fVxuZnVuY3Rpb24gdHIoYSl7dmFyIGIsYztjPUtmYihuZXcgVWZiLDkxKTtiPXRydWU7d2hpbGUoYS5PYigpKXtifHwoYy5hKz1TaGUsYyk7Yj1mYWxzZTtQZmIoYyxhLlBiKCkpfXJldHVybiAoYy5hKz0nXScsYykuYX1cbmZ1bmN0aW9uIGFKZChhLGIpe3ZhciBjO2M9KGEuQmImb2llKSE9MDtiPyhhLkJifD1vaWUpOihhLkJiJj0tMTYzODUpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMTYsYyxiKSl9XG5mdW5jdGlvbiBNSmQoYSxiKXt2YXIgYztjPShhLkJiJm90ZSkhPTA7Yj8oYS5CYnw9b3RlKTooYS5CYiY9LTMyNzY5KTsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBxU2QoYSwxLDE4LGMsYikpfVxuZnVuY3Rpb24gQ1VkKGEsYil7dmFyIGM7Yz0oYS5CYiZvdGUpIT0wO2I/KGEuQmJ8PW90ZSk6KGEuQmImPS0zMjc2OSk7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgcVNkKGEsMSwxOCxjLGIpKX1cbmZ1bmN0aW9uIEVVZChhLGIpe3ZhciBjO2M9KGEuQmImVGplKSE9MDtiPyhhLkJifD1UamUpOihhLkJiJj0tNjU1MzcpOyhhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IHFTZChhLDEsMjAsYyxiKSl9XG5mdW5jdGlvbiBUZWUoYSl7dmFyIGI7Yj1LQyhURCwkaWUsMjUsMiwxNSwxKTthLT1UamU7YlswXT0oYT4+MTApK1VqZSZhamU7YlsxXT0oYSYxMDIzKSs1NjMyMCZhamU7cmV0dXJuIHpmYihiLDAsYi5sZW5ndGgpfVxuZnVuY3Rpb24gYV9iKGEpe3ZhciBiLGM7Yz1CRCh2TmIoYSwoTnljKCksTHdjKSksMTAzKTtpZihjPT0oZWFkKCksY2FkKSl7Yj1FZGIoRUQodk5iKGEsb3djKSkpO3JldHVybiBiPj0xP2JhZDpfOWN9cmV0dXJuIGN9XG5mdW5jdGlvbiByZWMoYSl7c3dpdGNoKEJEKHZOYihhLChOeWMoKSxTd2MpKSwyMTgpLmcpe2Nhc2UgMTpyZXR1cm4gbmV3IEZtYztjYXNlIDM6cmV0dXJuIG5ldyB3bmM7ZGVmYXVsdDpyZXR1cm4gbmV3IHptYzt9fVxuZnVuY3Rpb24gVXpiKGEpe2lmKGEuYyl7VXpiKGEuYyl9ZWxzZSBpZihhLmQpe3Rocm93IHZiYihuZXcgWmRiKFwiU3RyZWFtIGFscmVhZHkgdGVybWluYXRlZCwgY2FuJ3QgYmUgbW9kaWZpZWQgb3IgdXNlZFwiKSl9fVxuZnVuY3Rpb24gTWtkKGEpe3ZhciBiO2lmKChhLkRiJjY0KSE9MClyZXR1cm4gRWlkKGEpO2I9bmV3IEpmYihFaWQoYSkpO2IuYSs9JyAoaWRlbnRpZmllcjogJztFZmIoYixhLmspO2IuYSs9JyknO3JldHVybiBiLmF9XG5mdW5jdGlvbiBjdGQoYSxiLGMpe3ZhciBkLGU7ZD0oRmhkKCksZT1uZXcgeGtkLGUpO3ZrZChkLGIpO3drZChkLGMpOyEhYSYmd3RkKCghYS5hJiYoYS5hPW5ldyB4TWQoeTIsYSw1KSksYS5hKSxkKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHR0YihhLGIsYyxkKXt2YXIgZSxmO3VDYihkKTt1Q2IoYyk7ZT1hLnhjKGIpO2Y9ZT09bnVsbD9jOk15YihCRChlLDE1KSxCRChjLDE0KSk7Zj09bnVsbD9hLkJjKGIpOmEuemMoYixmKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIHBxYihhKXt2YXIgYixjLGQsZTtjPShiPUJEKGdkYigoZD1hLmdtLGU9ZC5mLGU9PUNJP2Q6ZSkpLDkpLG5ldyB4cWIoYixCRChfQmIoYixiLmxlbmd0aCksOSksMCkpO3JxYihjLGEpO3JldHVybiBjfVxuZnVuY3Rpb24gaERjKGEsYixjKXt2YXIgZCxlO2ZvcihlPWEuYS5lYygpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTApO2lmKEJlKGMsQkQoSWtiKGIsZC5wKSwxNCkpKXtyZXR1cm4gZH19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBEYihiLGMsZCl7dmFyIGU7dHJ5e0NiKGIsYyxkKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDU5Nykpe2U9YTt0aHJvdyB2YmIobmV3IHljYihlKSl9ZWxzZSB0aHJvdyB2YmIoYSl9cmV0dXJuIGN9XG5mdW5jdGlvbiBRYmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hLWI7aWYoS2plPGMmJmM8SWplKXtyZXR1cm4gY319cmV0dXJuIHpiYihuRChGYmIoYSk/UmJiKGEpOmEsRmJiKGIpP1JiYihiKTpiKSl9XG5mdW5jdGlvbiB3YmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hK2I7aWYoS2plPGMmJmM8SWplKXtyZXR1cm4gY319cmV0dXJuIHpiYihjRChGYmIoYSk/UmJiKGEpOmEsRmJiKGIpP1JiYihiKTpiKSl9XG5mdW5jdGlvbiBJYmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hKmI7aWYoS2plPGMmJmM8SWplKXtyZXR1cm4gY319cmV0dXJuIHpiYihnRChGYmIoYSk/UmJiKGEpOmEsRmJiKGIpP1JiYihiKTpiKSl9XG5mdW5jdGlvbiBWX2IoYSxiKXt2YXIgYzthLml8fE5fYihhKTtjPUJEKE1wYihhLmcsYiksNDYpO3JldHVybiAhYz8obW1iKCksbW1iKCksam1iKTpuZXcgSmliKGEuaixCRChjLmEsMTkpLmEsQkQoYy5iLDE5KS5hKX1cbmZ1bmN0aW9uIERyYihhLGIsYyl7dmFyIGQ7ZD1hLmEuZ2V0KGIpO2EuYS5zZXQoYixjPT09dW5kZWZpbmVkP251bGw6Yyk7aWYoZD09PXVuZGVmaW5lZCl7KythLmM7enBiKGEuYil9ZWxzZXsrK2EuZH1yZXR1cm4gZH1cbmZ1bmN0aW9uIGtOYihhLGIsYyl7YS5uPUlDKFhELFtuaWUsU2plXSxbMzY0LDI1XSwxNCxbYyxRRCgkd25kLk1hdGguY2VpbChiLzMyKSldLDIpO2Eubz1iO2EucD1jO2Euaj1iLTE+PjE7YS5rPWMtMT4+MX1cbmZ1bmN0aW9uIEd1Yigpe3p1YigpO3ZhciBhLGIsYztjPXl1YisrK0RhdGUubm93KCk7YT1RRCgkd25kLk1hdGguZmxvb3IoYypsa2UpKSZua2U7Yj1RRChjLWEqbWtlKTt0aGlzLmE9YV4xNTAyO3RoaXMuYj1iXmtrZX1cbmZ1bmN0aW9uIE9fYihhKXt2YXIgYixjLGQ7Yj1uZXcgUmtiO2ZvcihkPW5ldyBvbGIoYS5qKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTEpO0VrYihiLGMuYil9cmV0dXJuIFFiKGIpLG5ldyBzbChiKX1cbmZ1bmN0aW9uIFJfYihhKXt2YXIgYixjLGQ7Yj1uZXcgUmtiO2ZvcihkPW5ldyBvbGIoYS5qKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTEpO0VrYihiLGMuZSl9cmV0dXJuIFFiKGIpLG5ldyBzbChiKX1cbmZ1bmN0aW9uIFVfYihhKXt2YXIgYixjLGQ7Yj1uZXcgUmtiO2ZvcihkPW5ldyBvbGIoYS5qKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTEpO0VrYihiLGMuZyl9cmV0dXJuIFFiKGIpLG5ldyBzbChiKX1cbmZ1bmN0aW9uIG42ZChhKXt2YXIgYixjO2ZvcihjPW82ZChiS2QoV0lkKGEpKSkuS2MoKTtjLk9iKCk7KXtiPUdEKGMuUGIoKSk7aWYoRG1kKGEsYikpcmV0dXJuIEZGZCgoRUZkKCksREZkKSxiKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHdtKGEpe3ZhciBiLGMsZDtmb3IoYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyl7aWYoYVtjXT09bnVsbCl7dGhyb3cgdmJiKG5ldyBIZWIoJ2F0IGluZGV4ICcrYykpfX1iPWE7cmV0dXJuIG5ldyBhbWIoYil9XG5mdW5jdGlvbiB3aWQoYSxiKXt2YXIgYztjPVlLZChhLlRnKCksYik7aWYoSkQoYyw5OSkpe3JldHVybiBCRChjLDE4KX10aHJvdyB2YmIobmV3IFdkYihpdGUrYitcIicgaXMgbm90IGEgdmFsaWQgcmVmZXJlbmNlXCIpKX1cbmZ1bmN0aW9uIFRkYihhKXt2YXIgYjtiPUhjYihhKTtpZihiPjMuNDAyODIzNDY2Mzg1Mjg4NkUzOCl7cmV0dXJuIFBqZX1lbHNlIGlmKGI8LTMuNDAyODIzNDY2Mzg1Mjg4NkUzOCl7cmV0dXJuIFFqZX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGFlYihhKXthLT1hPj4xJjE0MzE2NTU3NjU7YT0oYT4+MiY4NTg5OTM0NTkpKyhhJjg1ODk5MzQ1OSk7YT0oYT4+NCkrYSYyNTI2NDUxMzU7YSs9YT4+ODthKz1hPj4xNjtyZXR1cm4gYSY2M31cbmZ1bmN0aW9uIEV2KGEpe3ZhciBiLGMsZCxlO2I9bmV3IGNxKGEuSGQoKS5nYygpKTtlPTA7Zm9yKGQ9dnIoYS5IZCgpLktjKCkpO2QuT2IoKTspe2M9ZC5QYigpO2JxKGIsYyxtZWIoZSsrKSl9cmV0dXJuIGZuKGIuYSl9XG5mdW5jdGlvbiBVeWIoYSxiKXt2YXIgYyxkLGU7ZT1uZXcgTHFiO2ZvcihkPWIudmMoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDQyKTtSaGIoZSxjLmNkKCksWXliKGEsQkQoYy5kZCgpLDE1KSkpfXJldHVybiBlfVxuZnVuY3Rpb24gRVpjKGEsYil7YS5uLmMubGVuZ3RoPT0wJiZFa2IoYS5uLG5ldyBWWmMoYS5zLGEudCxhLmkpKTtFa2IoYS5iLGIpO1FaYyhCRChJa2IoYS5uLGEubi5jLmxlbmd0aC0xKSwyMTEpLGIpO0daYyhhLGIpfVxuZnVuY3Rpb24gTEZiKGEpe2lmKGEuYyE9YS5iLmJ8fGEuaSE9YS5nLmIpe2EuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtHa2IoYS5hLGEuYik7R2tiKGEuYSxhLmcpO2EuYz1hLmIuYjthLmk9YS5nLmJ9cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIFljYyhhLGIpe3ZhciBjLGQsZTtlPTA7Zm9yKGQ9QkQoYi5LYihhKSwyMCkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwxNyk7Q2NiKEREKHZOYihjLCh3dGMoKSxsdGMpKSkpfHwrK2V9cmV0dXJuIGV9XG5mdW5jdGlvbiBlZmMoYSxiKXt2YXIgYyxkLGU7ZD10Z2MoYik7ZT1FZGIoRUQocEJjKGQsKE55YygpLGx5YykpKSk7Yz0kd25kLk1hdGgubWF4KDAsZS8yLTAuNSk7Y2ZjKGIsYywxKTtFa2IoYSxuZXcgRGZjKGIsYykpfVxuZnVuY3Rpb24gQ3RjKCl7Q3RjPWNjYjtCdGM9bmV3IER0YyhhbmUsMCk7eHRjPW5ldyBEdGMoJ0ZJUlNUJywxKTt5dGM9bmV3IER0YyhHbmUsMik7enRjPW5ldyBEdGMoJ0xBU1QnLDMpO0F0Yz1uZXcgRHRjKEhuZSw0KX1cbmZ1bmN0aW9uIEFhZCgpe0FhZD1jY2I7emFkPW5ldyBCYWQob2xlLDApO3hhZD1uZXcgQmFkKCdQT0xZTElORScsMSk7d2FkPW5ldyBCYWQoJ09SVEhPR09OQUwnLDIpO3lhZD1uZXcgQmFkKCdTUExJTkVTJywzKX1cbmZ1bmN0aW9uIHpZYygpe3pZYz1jY2I7eFljPW5ldyBBWWMoJ0FTUEVDVF9SQVRJT19EUklWRU4nLDApO3lZYz1uZXcgQVljKCdNQVhfU0NBTEVfRFJJVkVOJywxKTt3WWM9bmV3IEFZYygnQVJFQV9EUklWRU4nLDIpfVxuZnVuY3Rpb24gWSRjKCl7WSRjPWNjYjtWJGM9bmV3IFokYygnUDFfU1RSVUNUVVJFJywwKTtXJGM9bmV3IFokYygnUDJfUFJPQ0VTU0lOR19PUkRFUicsMSk7WCRjPW5ldyBaJGMoJ1AzX0VYRUNVVElPTicsMil9XG5mdW5jdGlvbiB0VmMoKXt0VmM9Y2NiO3NWYz1uZXcgdVZjKCdPVkVSTEFQX1JFTU9WQUwnLDApO3FWYz1uZXcgdVZjKCdDT01QQUNUSU9OJywxKTtyVmM9bmV3IHVWYygnR1JBUEhfU0laRV9DQUxDVUxBVElPTicsMil9XG5mdW5jdGlvbiBKeShhLGIpe0l5KCk7cmV0dXJuIE15KFFpZSksJHduZC5NYXRoLmFicyhhLWIpPD1RaWV8fGE9PWJ8fGlzTmFOKGEpJiZpc05hTihiKT8wOmE8Yj8tMTphPmI/MTpOeShpc05hTihhKSxpc05hTihiKSl9XG5mdW5jdGlvbiB5T2MoYSxiKXt2YXIgYyxkO2M9SnNiKGEsMCk7d2hpbGUoYy5iIT1jLmQuYyl7ZD1HZGIoRUQoWHNiKGMpKSk7aWYoZD09Yil7cmV0dXJufWVsc2UgaWYoZD5iKXtZc2IoYyk7YnJlYWt9fVZzYihjLGIpfVxuZnVuY3Rpb24gdDRjKGEsYil7dmFyIGMsZCxlLGYsZztjPWIuZjtYcmIoYS5jLmQsYyxiKTtpZihiLmchPW51bGwpe2ZvcihlPWIuZyxmPTAsZz1lLmxlbmd0aDtmPGc7KytmKXtkPWVbZl07WHJiKGEuYy5lLGQsYil9fX1cbmZ1bmN0aW9uIElsYihhLGIsYyxkKXt2YXIgZSxmLGc7Zm9yKGU9YisxO2U8YzsrK2Upe2ZvcihmPWU7Zj5iJiZkLnVlKGFbZi0xXSxhW2ZdKT4wOy0tZil7Zz1hW2ZdO05DKGEsZixhW2YtMV0pO05DKGEsZi0xLGcpfX19XG5mdW5jdGlvbiBkaWQoYSxiLGMsZCl7aWYoYjwwKXt1aWQoYSxjLGQpfWVsc2V7aWYoIWMuSWooKSl7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2MubmUoKStqdGUpKX1CRChjLDY2KS5OaigpLlRqKGEsYS55aCgpLGIsZCl9fVxuZnVuY3Rpb24geEZiKGEsYil7aWYoYj09YS5kKXtyZXR1cm4gYS5lfWVsc2UgaWYoYj09YS5lKXtyZXR1cm4gYS5kfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoJ05vZGUgJytiKycgbm90IHBhcnQgb2YgZWRnZSAnK2EpKX19XG5mdW5jdGlvbiBpRWIoYSxiKXtzd2l0Y2goYi5nKXtjYXNlIDI6cmV0dXJuIGEuYjtjYXNlIDE6cmV0dXJuIGEuYztjYXNlIDQ6cmV0dXJuIGEuZDtjYXNlIDM6cmV0dXJuIGEuYTtkZWZhdWx0OnJldHVybiBmYWxzZTt9fVxuZnVuY3Rpb24gR1ZiKGEsYil7c3dpdGNoKGIuZyl7Y2FzZSAyOnJldHVybiBhLmI7Y2FzZSAxOnJldHVybiBhLmM7Y2FzZSA0OnJldHVybiBhLmQ7Y2FzZSAzOnJldHVybiBhLmE7ZGVmYXVsdDpyZXR1cm4gZmFsc2U7fX1cbmZ1bmN0aW9uIFhrZChhLGIsYyxkKXtzd2l0Y2goYil7Y2FzZSAzOnJldHVybiBhLmY7Y2FzZSA0OnJldHVybiBhLmc7Y2FzZSA1OnJldHVybiBhLmk7Y2FzZSA2OnJldHVybiBhLmo7fXJldHVybiBFa2QoYSxiLGMsZCl9XG5mdW5jdGlvbiBMamMoYSl7aWYoYS5rIT0oajBiKCksaDBiKSl7cmV0dXJuIGZhbHNlfXJldHVybiBGQWIobmV3IFlBYihudWxsLG5ldyBMdWIobmV3IFNyKHVyKFVfYihhKS5hLktjKCksbmV3IFNxKSkpKSxuZXcgTWpjKX1cbmZ1bmN0aW9uIE1FZChhKXtpZihhLmU9PW51bGwpe3JldHVybiBhfWVsc2UgIWEuYyYmKGEuYz1uZXcgTkVkKChhLmYmMjU2KSE9MCxhLmksYS5hLGEuZCwoYS5mJjE2KSE9MCxhLmosYS5nLG51bGwpKTtyZXR1cm4gYS5jfVxuZnVuY3Rpb24gVkMoYSxiKXtpZihhLmg9PUdqZSYmYS5tPT0wJiZhLmw9PTApe2ImJihRQz1UQygwLDAsMCkpO3JldHVybiBTQygod0QoKSx1RCkpfWImJihRQz1UQyhhLmwsYS5tLGEuaCkpO3JldHVybiBUQygwLDAsMCl9XG5mdW5jdGlvbiBmY2IoYSl7dmFyIGI7aWYoQXJyYXkuaXNBcnJheShhKSYmYS5pbT09PWdjYil7cmV0dXJuIGhkYihyYihhKSkrJ0AnKyhiPXRiKGEpPj4+MCxiLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGEudG9TdHJpbmcoKX1cbmZ1bmN0aW9uIFJwYihhKXt2YXIgYjt0aGlzLmE9KGI9QkQoYS5lJiZhLmUoKSw5KSxuZXcgeHFiKGIsQkQoX0JiKGIsYi5sZW5ndGgpLDkpLDApKTt0aGlzLmI9S0MoU0ksVWhlLDEsdGhpcy5hLmEubGVuZ3RoLDUsMSl9XG5mdW5jdGlvbiBfT2IoYSl7dmFyIGIsYyxkO3RoaXMuYT1uZXcgenNiO2ZvcihkPW5ldyBvbGIoYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE0KTtiPW5ldyBNT2I7R09iKGIsYyk7UXFiKHRoaXMuYSxiKX19XG5mdW5jdGlvbiBjS2IoYSl7JEpiKCk7dmFyIGIsYyxkLGU7Yj1hLm8uYjtmb3IoZD1CRChCRChRYyhhLnIsKFVjZCgpLFJjZCkpLDIxKSw4NCkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwxMTEpO2U9Yy5lO2UuYis9Yn19XG5mdW5jdGlvbiBhZyhhKXt2YXIgYjtpZihhLmIpe2FnKGEuYik7aWYoYS5iLmQhPWEuYyl7dGhyb3cgdmJiKG5ldyBBcGIpfX1lbHNlIGlmKGEuZC5kYygpKXtiPUJEKGEuZi5jLnhjKGEuZSksMTQpOyEhYiYmKGEuZD1iKX19XG5mdW5jdGlvbiBmRmQoYSl7dmFyIGI7aWYoYT09bnVsbClyZXR1cm4gdHJ1ZTtiPWEubGVuZ3RoO3JldHVybiBiPjAmJihCQ2IoYi0xLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoYi0xKT09NTgpJiYhT0VkKGEsQ0VkLERFZCl9XG5mdW5jdGlvbiBPRWQoYSxiLGMpe3ZhciBkLGU7Zm9yKGQ9MCxlPWEubGVuZ3RoO2Q8ZTtkKyspe2lmKF9FZCgoQkNiKGQsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChkKSksYixjKSlyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBKT2IoYSxiKXt2YXIgYyxkO2ZvcihkPWEuZS5hLmVjKCkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwyNjYpO2lmKHQ2YyhiLGMuZCl8fG82YyhiLGMuZCkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBROWIoYSxiKXt2YXIgYyxkLGU7ZD1OOWIoYSxiKTtlPWRbZC5sZW5ndGgtMV0vMjtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKXtpZihkW2NdPj1lKXtyZXR1cm4gYi5jK2N9fXJldHVybiBiLmMrYi5iLmdjKCl9XG5mdW5jdGlvbiBOQ2QoYSxiKXtMQ2QoKTt2YXIgYyxkLGUsZjtkPUtMZChhKTtlPWI7S2xiKGQsMCxkLmxlbmd0aCxlKTtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKXtmPU1DZChhLGRbY10sYyk7YyE9ZiYmV3hkKGEsYyxmKX19XG5mdW5jdGlvbiBFSGIoYSxiKXt2YXIgYyxkLGUsZixnLGg7ZD0wO2M9MDtmb3IoZj1iLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpe2U9ZltnXTtpZihlPjApe2QrPWU7KytjfX1jPjEmJihkKz1hLmQqKGMtMSkpO3JldHVybiBkfVxuZnVuY3Rpb24gSHRkKGEpe3ZhciBiLGMsZDtkPW5ldyBIZmI7ZC5hKz0nWyc7Zm9yKGI9MCxjPWEuZ2MoKTtiPGM7KXtFZmIoZCx4ZmIoYS5raShiKSkpOysrYjxjJiYoZC5hKz1TaGUsZCl9ZC5hKz0nXSc7cmV0dXJuIGQuYX1cbmZ1bmN0aW9uIGZzZChhKXt2YXIgYixjLGQsZSxmO2Y9aHNkKGEpO2M9RmhlKGEuYyk7ZD0hYztpZihkKXtlPW5ldyB3QjtjQyhmLCdrbm93bkxheW91dGVycycsZSk7Yj1uZXcgcXNkKGUpO3JlYihhLmMsYil9cmV0dXJuIGZ9XG5mdW5jdGlvbiBDZShhLGIpe3ZhciBjLGQsZTt1Q2IoYik7Yz1mYWxzZTtmb3IoZD1uZXcgb2xiKGEpO2QuYTxkLmMuYy5sZW5ndGg7KXtlPW1sYihkKTtpZih6ZShiLGUsZmFsc2UpKXtubGIoZCk7Yz10cnVlfX1yZXR1cm4gY31cbmZ1bmN0aW9uIFVHYihhKXt2YXIgYixjLGQ7ZD1FZGIoRUQoYS5hLldlKChZOWMoKSxROWMpKSkpO2ZvcihjPW5ldyBvbGIoYS5hLnhmKCkpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw2ODApO1hHYihhLGIsZCl9fVxuZnVuY3Rpb24gTVViKGEsYil7dmFyIGMsZDtmb3IoZD1uZXcgb2xiKGIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw0Nik7RWtiKGEuYi5iLEJEKGMuYiw4MSkpO2VWYihCRChjLmEsMTg5KSxCRChjLmIsODEpKX19XG5mdW5jdGlvbiBYQ2MoYSxiLGMpe3ZhciBkLGU7ZT1hLmEuYjtmb3IoZD1lLmMubGVuZ3RoO2Q8YztkKyspe0RrYihlLDAsbmV3IEgxYihhLmEpKX0kX2IoYixCRChJa2IoZSxlLmMubGVuZ3RoLWMpLDI5KSk7YS5iW2IucF09Y31cbmZ1bmN0aW9uIEpUYihhLGIsYyl7dmFyIGQ7ZD1jOyFkJiYoZD1ZZGQobmV3IFpkZCwwKSk7T2RkKGQsVm1lLDIpO3FaYihhLmIsYixVZGQoZCwxKSk7TFRiKGEsYixVZGQoZCwxKSk7X1liKGIsVWRkKGQsMSkpO1FkZChkKX1cbmZ1bmN0aW9uIGVLYyhhLGIsYyxkLGUpe0ZKYygpO0FGYihERmIoQ0ZiKEJGYihFRmIobmV3IEZGYiwwKSxlLmQuZS1hKSxiKSxlLmQpKTtBRmIoREZiKENGYihCRmIoRUZiKG5ldyBGRmIsMCksYy1lLmEuZSksZS5hKSxkKSl9XG5mdW5jdGlvbiBlJGMoYSxiLGMsZCxlLGYpe3RoaXMuYT1hO3RoaXMuYz1iO3RoaXMuYj1jO3RoaXMuZj1kO3RoaXMuZD1lO3RoaXMuZT1mO3RoaXMuYz4wJiZ0aGlzLmI+MCYmcSRjKHRoaXMuYyx0aGlzLmIsdGhpcy5hKX1cbmZ1bmN0aW9uIGV6YyhhKXtkemMoKTt0aGlzLmM9T3UoT0MoR0MoaDAsMSksVWhlLDgzMSwwLFtVeWNdKSk7dGhpcy5iPW5ldyBMcWI7dGhpcy5hPWE7UmhiKHRoaXMuYixiemMsMSk7SGtiKGN6YyxuZXcgWGVkKHRoaXMpKX1cbmZ1bmN0aW9uIEkyYyhhLGIpe3ZhciBjO2lmKGEuZCl7aWYoTWhiKGEuYixiKSl7cmV0dXJuIEJEKE9oYihhLmIsYiksNTEpfWVsc2V7Yz1iLktmKCk7UmhiKGEuYixiLGMpO3JldHVybiBjfX1lbHNle3JldHVybiBiLktmKCl9fVxuZnVuY3Rpb24gS2diKGEsYil7dmFyIGM7aWYoUEQoYSk9PT1QRChiKSl7cmV0dXJuIHRydWV9aWYoSkQoYiw5MSkpe2M9QkQoYiw5MSk7cmV0dXJuIGEuZT09Yy5lJiZhLmQ9PWMuZCYmTGdiKGEsYy5hKX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBaY2QoYSl7VWNkKCk7c3dpdGNoKGEuZyl7Y2FzZSA0OnJldHVybiBBY2Q7Y2FzZSAxOnJldHVybiB6Y2Q7Y2FzZSAzOnJldHVybiBSY2Q7Y2FzZSAyOnJldHVybiBUY2Q7ZGVmYXVsdDpyZXR1cm4gU2NkO319XG5mdW5jdGlvbiBZa2QoYSxiKXtzd2l0Y2goYil7Y2FzZSAzOnJldHVybiBhLmYhPTA7Y2FzZSA0OnJldHVybiBhLmchPTA7Y2FzZSA1OnJldHVybiBhLmkhPTA7Y2FzZSA2OnJldHVybiBhLmohPTA7fXJldHVybiBIa2QoYSxiKX1cbmZ1bmN0aW9uIGdXYyhhKXtzd2l0Y2goYS5nKXtjYXNlIDA6cmV0dXJuIG5ldyBGWGM7Y2FzZSAxOnJldHVybiBuZXcgSVhjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoanJlKyhhLmYhPW51bGw/YS5mOicnK2EuZykpKTt9fVxuZnVuY3Rpb24gUVVjKGEpe3N3aXRjaChhLmcpe2Nhc2UgMDpyZXR1cm4gbmV3IENYYztjYXNlIDE6cmV0dXJuIG5ldyBNWGM7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYihEbmUrKGEuZiE9bnVsbD9hLmY6JycrYS5nKSkpO319XG5mdW5jdGlvbiBiMWMoYSl7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBuZXcgczFjO2Nhc2UgMTpyZXR1cm4gbmV3IHcxYztkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKE1yZSsoYS5mIT1udWxsP2EuZjonJythLmcpKSk7fX1cbmZ1bmN0aW9uIHFXYyhhKXtzd2l0Y2goYS5nKXtjYXNlIDE6cmV0dXJuIG5ldyBTVmM7Y2FzZSAyOnJldHVybiBuZXcgS1ZjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoanJlKyhhLmYhPW51bGw/YS5mOicnK2EuZykpKTt9fVxuZnVuY3Rpb24gcnliKGEpe3ZhciBiLGM7aWYoYS5iKXtyZXR1cm4gYS5ifWM9bHliP251bGw6YS5kO3doaWxlKGMpe2I9bHliP251bGw6Yy5iO2lmKGIpe3JldHVybiBifWM9bHliP251bGw6Yy5kfXJldHVybiAkeGIoKSxaeGJ9XG5mdW5jdGlvbiBoaGIoYSl7dmFyIGIsYyxkO2lmKGEuZT09MCl7cmV0dXJuIDB9Yj1hLmQ8PDU7Yz1hLmFbYS5kLTFdO2lmKGEuZTwwKXtkPU1nYihhKTtpZihkPT1hLmQtMSl7LS1jO2M9Y3wwfX1iLT1oZWIoYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBiaGIoYSl7dmFyIGIsYyxkO2lmKGE8RmdiLmxlbmd0aCl7cmV0dXJuIEZnYlthXX1jPWE+PjU7Yj1hJjMxO2Q9S0MoV0Qsb2plLDI1LGMrMSwxNSwxKTtkW2NdPTE8PGI7cmV0dXJuIG5ldyBWZ2IoMSxjKzEsZCl9XG5mdW5jdGlvbiBPMmIoYSl7dmFyIGIsYyxkO2M9YS56ZygpO2lmKGMpe2I9YS5VZygpO2lmKEpEKGIsMTYwKSl7ZD1PMmIoQkQoYiwxNjApKTtpZihkIT1udWxsKXtyZXR1cm4gZCsnLicrY319cmV0dXJuIGN9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiB6ZShhLGIsYyl7dmFyIGQsZTtmb3IoZT1hLktjKCk7ZS5PYigpOyl7ZD1lLlBiKCk7aWYoUEQoYik9PT1QRChkKXx8YiE9bnVsbCYmcGIoYixkKSl7YyYmZS5RYigpO3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiB6dmQoYSxiLGMpe3ZhciBkLGU7KythLmo7aWYoYy5kYygpKXtyZXR1cm4gZmFsc2V9ZWxzZXtmb3IoZT1jLktjKCk7ZS5PYigpOyl7ZD1lLlBiKCk7YS5IaShiLGEub2koYixkKSk7KytifXJldHVybiB0cnVlfX1cbmZ1bmN0aW9uIHlBKGEsYixjLGQpe3ZhciBlLGY7Zj1jLWI7aWYoZjwzKXt3aGlsZShmPDMpe2EqPTEwOysrZn19ZWxzZXtlPTE7d2hpbGUoZj4zKXtlKj0xMDstLWZ9YT0oYSsoZT4+MSkpL2V8MH1kLmk9YTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIFhVYihhKXtMVWIoKTtyZXR1cm4gQmNiKCksR1ZiKEJEKGEuYSw4MSkuaixCRChhLmIsMTAzKSl8fEJEKGEuYSw4MSkuZC5lIT0wJiZHVmIoQkQoYS5hLDgxKS5qLEJEKGEuYiwxMDMpKT90cnVlOmZhbHNlfVxuZnVuY3Rpb24gczNjKGEpe3AzYygpO2lmKEJEKGEuV2UoKFk5YygpLGI5YykpLDE3NCkuSGMoKElkZCgpLEdkZCkpKXtCRChhLldlKHg5YyksMTc0KS5GYygocmNkKCkscWNkKSk7QkQoYS5XZShiOWMpLDE3NCkuTWMoR2RkKX19XG5mdW5jdGlvbiBHeGQoYSxiKXt2YXIgYyxkO2lmKCFiKXtyZXR1cm4gZmFsc2V9ZWxzZXtmb3IoYz0wO2M8YS5pOysrYyl7ZD1CRChhLmdbY10sMzY2KTtpZihkLkRpKGIpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB3dGQoYSxiKX19XG5mdW5jdGlvbiBwdmQoYSl7dmFyIGIsYyxkLGU7Yj1uZXcgd0I7Zm9yKGU9bmV3IERuYihhLmIuS2MoKSk7ZS5iLk9iKCk7KXtkPUJEKGUuYi5QYigpLDY4Nik7Yz1sc2QoZCk7dUIoYixiLmEubGVuZ3RoLGMpfXJldHVybiBiLmF9XG5mdW5jdGlvbiBjTGIoYSl7dmFyIGI7IWEuYyYmKGEuYz1uZXcgVktiKTtPa2IoYS5kLG5ldyBqTGIpO19LYihhKTtiPVVLYihhKTtNQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5kLDE2KSksbmV3IENMYihhKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBtS2QoYSl7dmFyIGI7aWYoKGEuRGImNjQpIT0wKXJldHVybiBxbmQoYSk7Yj1uZXcgSmZiKHFuZChhKSk7Yi5hKz0nIChpbnN0YW5jZUNsYXNzTmFtZTogJztFZmIoYixhLkQpO2IuYSs9JyknO3JldHVybiBiLmF9XG5mdW5jdGlvbiBQcWQoYSxiKXt2YXIgYyxkLGUsZjtpZihiKXtlPVhwZChiLCd4Jyk7Yz1uZXcgYnNkKGEpO2htZChjLmEsKHVDYihlKSxlKSk7Zj1YcGQoYiwneScpO2Q9bmV3IGNzZChhKTtpbWQoZC5hLCh1Q2IoZiksZikpfX1cbmZ1bmN0aW9uIEVxZChhLGIpe3ZhciBjLGQsZSxmO2lmKGIpe2U9WHBkKGIsJ3gnKTtjPW5ldyBZcmQoYSk7b21kKGMuYSwodUNiKGUpLGUpKTtmPVhwZChiLCd5Jyk7ZD1uZXcgX3JkKGEpO3BtZChkLmEsKHVDYihmKSxmKSl9fVxuZnVuY3Rpb24gYkxkKGEsYil7dmFyIGMsZCxlO2M9KGEuaT09bnVsbCYmVEtkKGEpLGEuaSk7ZD1iLmFqKCk7aWYoZCE9LTEpe2ZvcihlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2lmKGNbZF09PWIpe3JldHVybiBkfX19cmV0dXJuIC0xfVxuZnVuY3Rpb24gdE5kKGEpe3ZhciBiLGMsZCxlLGY7Yz1CRChhLmcsNjc0KTtmb3IoZD1hLmktMTtkPj0wOy0tZCl7Yj1jW2RdO2ZvcihlPTA7ZTxkOysrZSl7Zj1jW2VdO2lmKHVOZChhLGIsZikpe3R1ZChhLGQpO2JyZWFrfX19fVxuZnVuY3Rpb24gakNiKGIpe3ZhciBjPWIuZTtmdW5jdGlvbiBkKGEpe2lmKCFhfHxhLmxlbmd0aD09MCl7cmV0dXJuICcnfXJldHVybiAnXFx0JythLmpvaW4oJ1xcblxcdCcpfVxucmV0dXJuIGMmJihjLnN0YWNrfHxkKGJbWWllXSkpfVxuZnVuY3Rpb24gbm0oYSl7aW0oKTt2YXIgYjtiPWEuUGMoKTtzd2l0Y2goYi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gaG07Y2FzZSAxOnJldHVybiBuZXcgbXkoUWIoYlswXSkpO2RlZmF1bHQ6cmV0dXJuIG5ldyB1eCh3bShiKSk7fX1cbmZ1bmN0aW9uIFdfYihhLGIpe3N3aXRjaChiLmcpe2Nhc2UgMTpyZXR1cm4gTnEoYS5qLCh6MGIoKSx1MGIpKTtjYXNlIDI6cmV0dXJuIE5xKGEuaiwoejBiKCksdzBiKSk7ZGVmYXVsdDpyZXR1cm4gbW1iKCksbW1iKCksam1iO319XG5mdW5jdGlvbiAka2QoYSxiKXtzd2l0Y2goYil7Y2FzZSAzOmFsZChhLDApO3JldHVybjtjYXNlIDQ6Y2xkKGEsMCk7cmV0dXJuO2Nhc2UgNTpkbGQoYSwwKTtyZXR1cm47Y2FzZSA2OmVsZChhLDApO3JldHVybjt9SmtkKGEsYil9XG5mdW5jdGlvbiBkemMoKXtkemM9Y2NiO1Z5YygpO2J6Yz0oTnljKCksdnljKTtjemM9T3UoT0MoR0MoUTMsMSksenFlLDE0NiwwLFtreWMsbHljLG55YyxveWMscnljLHN5Yyx0eWMsdXljLHh5Yyx6eWMsbXljLHB5Yyx3eWNdKSl9XG5mdW5jdGlvbiBZOWIoYSl7dmFyIGIsYztiPWEuZD09KEFwYygpLHZwYyk7Yz1VOWIoYSk7YiYmIWN8fCFiJiZjP3lOYihhLmEsKE55YygpLG13YyksKEY3YygpLEQ3YykpOnlOYihhLmEsKE55YygpLG13YyksKEY3YygpLEM3YykpfVxuZnVuY3Rpb24gWEFiKGEsYil7dmFyIGM7Yz1CRChHQWIoYSxCeWIobmV3IGZ6YixuZXcgZHpiLG5ldyBFemIsT0MoR0MoeEwsMSksS2llLDEzMiwwLFsoRnliKCksRHliKV0pKSksMTUpO3JldHVybiBjLlFjKGFCYihjLmdjKCkpKX1cbmZ1bmN0aW9uIERlZCgpe0RlZD1jY2I7Q2VkPW5ldyBFZWQoJ1NJTVBMRScsMCk7emVkPW5ldyBFZWQoJ0dST1VQX0RFQycsMSk7QmVkPW5ldyBFZWQoJ0dST1VQX01JWEVEJywyKTtBZWQ9bmV3IEVlZCgnR1JPVVBfSU5DJywzKX1cbmZ1bmN0aW9uIENXZCgpe0NXZD1jY2I7QVdkPW5ldyBEV2Q7dFdkPW5ldyBHV2Q7dVdkPW5ldyBKV2Q7dldkPW5ldyBNV2Q7d1dkPW5ldyBQV2Q7eFdkPW5ldyBTV2Q7eVdkPW5ldyBWV2Q7eldkPW5ldyBZV2Q7QldkPW5ldyBfV2R9XG5mdW5jdGlvbiBGSGIoYSxiLGMpe3RIYigpO29IYi5jYWxsKHRoaXMpO3RoaXMuYT1JQyhvTixbbmllLGlsZV0sWzU5NSwyMTJdLDAsW3NIYixySGJdLDIpO3RoaXMuYz1uZXcgSTZjO3RoaXMuZz1hO3RoaXMuZj1iO3RoaXMuZD1jfVxuZnVuY3Rpb24gcE5iKGEsYil7dGhpcy5uPUlDKFhELFtuaWUsU2plXSxbMzY0LDI1XSwxNCxbYixRRCgkd25kLk1hdGguY2VpbChhLzMyKSldLDIpO3RoaXMubz1hO3RoaXMucD1iO3RoaXMuaj1hLTE+PjE7dGhpcy5rPWItMT4+MX1cbmZ1bmN0aW9uIHIzYihhLGIpe09kZChiLCdFbmQgbGFiZWwgcG9zdC1wcm9jZXNzaW5nJywxKTtNQWIoSkFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmIsMTYpKSxuZXcgdzNiKSxuZXcgeTNiKSxuZXcgQTNiKTtRZGQoYil9XG5mdW5jdGlvbiBOTGMoYSxiLGMpe3ZhciBkLGU7ZD1FZGIoYS5wW2IuaS5wXSkrRWRiKGEuZFtiLmkucF0pK2Iubi5iK2IuYS5iO2U9RWRiKGEucFtjLmkucF0pK0VkYihhLmRbYy5pLnBdKStjLm4uYitjLmEuYjtyZXR1cm4gZS1kfVxuZnVuY3Rpb24geGhiKGEsYixjKXt2YXIgZCxlO2Q9eGJiKGMsWWplKTtmb3IoZT0wO3liYihkLDApIT0wJiZlPGI7ZSsrKXtkPXdiYihkLHhiYihhW2VdLFlqZSkpO2FbZV09VGJiKGQpO2Q9T2JiKGQsMzIpfXJldHVybiBUYmIoZCl9XG5mdW5jdGlvbiAkRWQoYSl7dmFyIGIsYyxkLGU7ZT0wO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKXtiPShCQ2IoYyxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGMpKTtiPDY0JiYoZT1NYmIoZSxOYmIoMSxiKSkpfXJldHVybiBlfVxuZnVuY3Rpb24gUzlkKGEpe3ZhciBiO3JldHVybiBhPT1udWxsP251bGw6bmV3IFlnYigoYj1RZ2UoYSx0cnVlKSxiLmxlbmd0aD4wJiYoQkNiKDAsYi5sZW5ndGgpLGIuY2hhckNvZGVBdCgwKT09NDMpP2Iuc3Vic3RyKDEpOmIpKX1cbmZ1bmN0aW9uIFQ5ZChhKXt2YXIgYjtyZXR1cm4gYT09bnVsbD9udWxsOm5ldyBZZ2IoKGI9UWdlKGEsdHJ1ZSksYi5sZW5ndGg+MCYmKEJDYigwLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoMCk9PTQzKT9iLnN1YnN0cigxKTpiKSl9XG5mdW5jdGlvbiB4dWQoYSxiKXt2YXIgYztpZihhLmk+MCl7aWYoYi5sZW5ndGg8YS5pKXtjPWl6ZChyYihiKS5jLGEuaSk7Yj1jfSRmYihhLmcsMCxiLDAsYS5pKX1iLmxlbmd0aD5hLmkmJk5DKGIsYS5pLG51bGwpO3JldHVybiBifVxuZnVuY3Rpb24gU3hkKGEsYixjKXt2YXIgZCxlLGY7aWYoYS5laigpKXtkPWEuaTtmPWEuZmooKTtrdWQoYSxkLGIpO2U9YS5aaSgzLG51bGwsYixkLGYpOyFjPyhjPWUpOmMuRWkoZSl9ZWxzZXtrdWQoYSxhLmksYil9cmV0dXJuIGN9XG5mdW5jdGlvbiBITWQoYSxiLGMpe3ZhciBkLGU7ZD1uZXcgcFNkKGEuZSw0LDEwLChlPWIuYyxKRChlLDg4KT9CRChlLDI2KTooakdkKCksX0ZkKSksbnVsbCxITGQoYSxiKSxmYWxzZSk7IWM/KGM9ZCk6Yy5FaShkKTtyZXR1cm4gY31cbmZ1bmN0aW9uIEdNZChhLGIsYyl7dmFyIGQsZTtkPW5ldyBwU2QoYS5lLDMsMTAsbnVsbCwoZT1iLmMsSkQoZSw4OCk/QkQoZSwyNik6KGpHZCgpLF9GZCkpLEhMZChhLGIpLGZhbHNlKTshYz8oYz1kKTpjLkVpKGQpO3JldHVybiBjfVxuZnVuY3Rpb24gX0piKGEpeyRKYigpO3ZhciBiO2I9bmV3IGc3YyhCRChhLmUuV2UoKFk5YygpLF84YykpLDgpKTtpZihhLkIuSGMoKElkZCgpLEJkZCkpKXtiLmE8PTAmJihiLmE9MjApO2IuYjw9MCYmKGIuYj0yMCl9cmV0dXJuIGJ9XG5mdW5jdGlvbiBMemMoYSl7SXpjKCk7dmFyIGI7KCFhLnE/KG1tYigpLG1tYigpLGttYik6YS5xKS5fYigoTnljKCksQ3hjKSk/KGI9QkQodk5iKGEsQ3hjKSwxOTcpKTooYj1CRCh2TmIoUV9iKGEpLER4YyksMTk3KSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBwQmMoYSxiKXt2YXIgYyxkO2Q9bnVsbDtpZih3TmIoYSwoTnljKCkscXljKSkpe2M9QkQodk5iKGEscXljKSw5NCk7Yy5YZShiKSYmKGQ9Yy5XZShiKSl9ZD09bnVsbCYmKGQ9dk5iKFFfYihhKSxiKSk7cmV0dXJuIGR9XG5mdW5jdGlvbiBaZShhLGIpe3ZhciBjLGQsZTtpZihKRChiLDQyKSl7Yz1CRChiLDQyKTtkPWMuY2QoKTtlPUh2KGEuUmMoKSxkKTtyZXR1cm4gSGIoZSxjLmRkKCkpJiYoZSE9bnVsbHx8YS5SYygpLl9iKGQpKX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBxQWQoYSxiKXt2YXIgYyxkLGU7aWYoYS5mPjApe2EucWooKTtkPWI9PW51bGw/MDp0YihiKTtlPShkJk9oZSklYS5kLmxlbmd0aDtjPXhBZChhLGUsZCxiKTtyZXR1cm4gYyE9LTF9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gQUFkKGEsYil7dmFyIGMsZCxlO2lmKGEuZj4wKXthLnFqKCk7ZD1iPT1udWxsPzA6dGIoYik7ZT0oZCZPaGUpJWEuZC5sZW5ndGg7Yz13QWQoYSxlLGQsYik7aWYoYyl7cmV0dXJuIGMuZGQoKX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSMmQoYSxiKXt2YXIgYyxkLGUsZjtmPVM2ZChhLmUuVGcoKSxiKTtjPUJEKGEuZywxMTkpO2ZvcihlPTA7ZTxhLmk7KytlKXtkPWNbZV07aWYoZi5ybChkLmFrKCkpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfVxuZnVuY3Rpb24gQjZkKGEpe2lmKGEuYj09bnVsbCl7d2hpbGUoYS5hLk9iKCkpe2EuYj1hLmEuUGIoKTtpZighQkQoYS5iLDQ5KS5aZygpKXtyZXR1cm4gdHJ1ZX19YS5iPW51bGw7cmV0dXJuIGZhbHNlfWVsc2V7cmV0dXJuIHRydWV9fVxuZnVuY3Rpb24gTXlkKGIsYyl7Yi5taigpO3RyeXtiLmQuVmMoYi5lKyssYyk7Yi5mPWIuZC5qO2IuZz0tMX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDczKSl7dGhyb3cgdmJiKG5ldyBBcGIpfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIElBKGEsYil7R0EoKTt2YXIgYyxkO2M9TEEoKEtBKCksS0EoKSxKQSkpO2Q9bnVsbDtiPT1jJiYoZD1CRChQaGIoRkEsYSksNjE1KSk7aWYoIWQpe2Q9bmV3IEhBKGEpO2I9PWMmJlNoYihGQSxhLGQpfXJldHVybiBkfVxuZnVuY3Rpb24gRXBiKGEsYil7dmFyIGMsZDthLmE9d2JiKGEuYSwxKTthLmM9JHduZC5NYXRoLm1pbihhLmMsYik7YS5iPSR3bmQuTWF0aC5tYXgoYS5iLGIpO2EuZCs9YjtjPWItYS5mO2Q9YS5lK2M7YS5mPWQtYS5lLWM7YS5lPWR9XG5mdW5jdGlvbiBvZ2IoYSxiKXt2YXIgYzthLmM9YjthLmE9aGhiKGIpO2EuYTw1NCYmKGEuZj0oYz1iLmQ+MT9NYmIoTmJiKGIuYVsxXSwzMikseGJiKGIuYVswXSxZamUpKTp4YmIoYi5hWzBdLFlqZSksU2JiKEliYihiLmUsYykpKSl9XG5mdW5jdGlvbiBIYmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hJWI7aWYoS2plPGMmJmM8SWplKXtyZXR1cm4gY319cmV0dXJuIHpiYigoVUMoRmJiKGEpP1JiYihhKTphLEZiYihiKT9SYmIoYik6Yix0cnVlKSxRQykpfVxuZnVuY3Rpb24gcDViKGEsYil7dmFyIGM7bTViKGIpO2M9QkQodk5iKGEsKE55YygpLFJ3YykpLDI3Nik7ISFjJiZ5TmIoYSxSd2MsVHFjKGMpKTtuNWIoYS5jKTtuNWIoYS5mKTtvNWIoYS5kKTtvNWIoQkQodk5iKGEsd3hjKSwyMDcpKX1cbmZ1bmN0aW9uIHJIYyhhKXt0aGlzLmU9S0MoV0Qsb2plLDI1LGEubGVuZ3RoLDE1LDEpO3RoaXMuYz1LQyhzYmIsZGxlLDI1LGEubGVuZ3RoLDE2LDEpO3RoaXMuYj1LQyhzYmIsZGxlLDI1LGEubGVuZ3RoLDE2LDEpO3RoaXMuZj0wfVxuZnVuY3Rpb24gQkRjKGEpe3ZhciBiLGM7YS5qPUtDKFVELFZqZSwyNSxhLnAuYy5sZW5ndGgsMTUsMSk7Zm9yKGM9bmV3IG9sYihhLnApO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMCk7YS5qW2IucF09Yi5vLmIvYS5pfX1cbmZ1bmN0aW9uIHlpYyhhKXt2YXIgYjtpZihhLmM9PTApe3JldHVybn1iPUJEKElrYihhLmEsYS5iKSwyODcpO2IuYj09MT8oKythLmIsYS5iPGEuYS5jLmxlbmd0aCYmQ2ljKEJEKElrYihhLmEsYS5iKSwyODcpKSk6LS1iLmI7LS1hLmN9XG5mdW5jdGlvbiBlYWMoYSl7dmFyIGI7Yj1hLmE7ZG97Yj1CRChScihuZXcgU3IodXIoVV9iKGIpLmEuS2MoKSxuZXcgU3EpKSksMTcpLmQuaTtiLms9PShqMGIoKSxnMGIpJiZFa2IoYS5lLGIpfXdoaWxlKGIuaz09KGowYigpLGcwYikpfVxuZnVuY3Rpb24gaWRkKCl7aWRkPWNjYjtmZGQ9bmV3IHEwYigxNSk7ZWRkPW5ldyBPc2QoKFk5YygpLGY5YyksZmRkKTtoZGQ9bmV3IE9zZChUOWMsMTUpO2dkZD1uZXcgT3NkKEU5YyxtZWIoMCkpO2RkZD1uZXcgT3NkKHI4Yyx0bWUpfVxuZnVuY3Rpb24gdGRkKCl7dGRkPWNjYjtyZGQ9bmV3IHVkZCgnUE9SVFMnLDApO3NkZD1uZXcgdWRkKCdQT1JUX0xBQkVMUycsMSk7cWRkPW5ldyB1ZGQoJ05PREVfTEFCRUxTJywyKTtwZGQ9bmV3IHVkZCgnTUlOSU1VTV9TSVpFJywzKX1cbmZ1bmN0aW9uIFJlZShhLGIpe3ZhciBjLGQ7ZD1iLmxlbmd0aDtmb3IoYz0wO2M8ZDtjKz0yKVVmZShhLChCQ2IoYyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGMpKSwoQkNiKGMrMSxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGMrMSkpKX1cbmZ1bmN0aW9uIF9aYyhhLGIsYyl7dmFyIGQsZSxmLGc7Zj1iLWEuZTtnPWMtYS5mO2ZvcihlPW5ldyBvbGIoYS5hKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTg3KTtPWmMoZCxkLnMrZixkLnQrZyl9YS5lPWI7YS5mPWN9XG5mdW5jdGlvbiBqVWMoYSxiKXt2YXIgYyxkLGUsZjtmPWIuYi5iO2EuYT1uZXcgUHNiO2EuYj1LQyhXRCxvamUsMjUsZiwxNSwxKTtjPTA7Zm9yKGU9SnNiKGIuYiwwKTtlLmIhPWUuZC5jOyl7ZD1CRChYc2IoZSksODYpO2QuZz1jKyt9fVxuZnVuY3Rpb24gaWhiKGEsYil7dmFyIGMsZCxlLGY7Yz1iPj41O2ImPTMxO2U9YS5kK2MrKGI9PTA/MDoxKTtkPUtDKFdELG9qZSwyNSxlLDE1LDEpO2poYihkLGEuYSxjLGIpO2Y9bmV3IFZnYihhLmUsZSxkKTtKZ2IoZik7cmV0dXJuIGZ9XG5mdW5jdGlvbiBPZmUoYSxiLGMpe3ZhciBkLGU7ZD1CRChQaGIoWmVlLGIpLDExNyk7ZT1CRChQaGIoJGVlLGIpLDExNyk7aWYoYyl7U2hiKFplZSxhLGQpO1NoYigkZWUsYSxlKX1lbHNle1NoYigkZWUsYSxkKTtTaGIoWmVlLGEsZSl9fVxuZnVuY3Rpb24gQ3diKGEsYixjKXt2YXIgZCxlLGY7ZT1udWxsO2Y9YS5iO3doaWxlKGYpe2Q9YS5hLnVlKGIsZi5kKTtpZihjJiZkPT0wKXtyZXR1cm4gZn1pZihkPj0wKXtmPWYuYVsxXX1lbHNle2U9ZjtmPWYuYVswXX19cmV0dXJuIGV9XG5mdW5jdGlvbiBEd2IoYSxiLGMpe3ZhciBkLGUsZjtlPW51bGw7Zj1hLmI7d2hpbGUoZil7ZD1hLmEudWUoYixmLmQpO2lmKGMmJmQ9PTApe3JldHVybiBmfWlmKGQ8PTApe2Y9Zi5hWzBdfWVsc2V7ZT1mO2Y9Zi5hWzFdfX1yZXR1cm4gZX1cbmZ1bmN0aW9uIE5pYyhhLGIsYyxkKXt2YXIgZSxmLGc7ZT1mYWxzZTtpZihmamMoYS5mLGMsZCkpe2lqYyhhLmYsYS5hW2JdW2NdLGEuYVtiXVtkXSk7Zj1hLmFbYl07Zz1mW2RdO2ZbZF09ZltjXTtmW2NdPWc7ZT10cnVlfXJldHVybiBlfVxuZnVuY3Rpb24gUUhjKGEsYixjLGQsZSl7dmFyIGYsZyxoO2c9ZTt3aGlsZShiLmIhPWIuYyl7Zj1CRChma2IoYiksMTApO2g9QkQoVl9iKGYsZCkuWGIoMCksMTEpO2EuZFtoLnBdPWcrKztjLmNbYy5jLmxlbmd0aF09aH1yZXR1cm4gZ31cbmZ1bmN0aW9uIGhCYyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtnPWEuaztoPWIuaztkPWNbZy5nXVtoLmddO2U9RUQocEJjKGEsZCkpO2Y9RUQocEJjKGIsZCkpO3JldHVybiAkd25kLk1hdGgubWF4KCh1Q2IoZSksZSksKHVDYihmKSxmKSl9XG5mdW5jdGlvbiB6WmMoYSxiLGMpe3ZhciBkLGUsZixnO2Q9Yy9hLmMubGVuZ3RoO2U9MDtmb3IoZz1uZXcgb2xiKGEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyMDApO3ckYyhmLGYuZitkKmUpO3QkYyhmLGIsZCk7KytlfX1cbmZ1bmN0aW9uIGhuYyhhLGIsYyl7dmFyIGQsZSxmLGc7ZT1CRChPaGIoYS5iLGMpLDE3Nyk7ZD0wO2ZvcihnPW5ldyBvbGIoYi5qKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTEzKTtlW2YuZC5wXSYmKytkfXJldHVybiBkfVxuZnVuY3Rpb24gbXpkKGEpe3ZhciBiLGM7Yj1CRChBamQoYS5hLDQpLDEyNik7aWYoYiE9bnVsbCl7Yz1LQygkMyxodmUsNDE1LGIubGVuZ3RoLDAsMSk7JGZiKGIsMCxjLDAsYi5sZW5ndGgpO3JldHVybiBjfWVsc2V7cmV0dXJuIGp6ZH19XG5mdW5jdGlvbiBDeigpe3ZhciBhO2lmKHh6IT0wKXthPXN6KCk7aWYoYS15ej4yMDAwKXt5ej1hO3p6PSR3bmQuc2V0VGltZW91dChJeiwxMCl9fWlmKHh6Kys9PTApe0x6KChLeigpLEp6KSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gd0NjKGEsYil7dmFyIGMsZCxlO2ZvcihkPW5ldyBTcih1cihVX2IoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7ZT1jLmQuaTtpZihlLmM9PWIpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBFayhiLGMpe3ZhciBkLGU7aWYoSkQoYywyNDUpKXtlPUJEKGMsMjQ1KTt0cnl7ZD1iLnZkKGUpO3JldHVybiBkPT0wfWNhdGNoKGEpe2E9dWJiKGEpO2lmKCFKRChhLDIwNSkpdGhyb3cgdmJiKGEpfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBYeigpe2lmKEVycm9yLnN0YWNrVHJhY2VMaW1pdD4wKXskd25kLkVycm9yLnN0YWNrVHJhY2VMaW1pdD1FcnJvci5zdGFja1RyYWNlTGltaXQ9NjQ7cmV0dXJuIHRydWV9cmV0dXJuICdzdGFjaycgaW4gbmV3IEVycm9yfVxuZnVuY3Rpb24gQkRiKGEsYil7cmV0dXJuIEl5KCksSXkoKSxNeShRaWUpLCgkd25kLk1hdGguYWJzKGEtYik8PVFpZXx8YT09Ynx8aXNOYU4oYSkmJmlzTmFOKGIpPzA6YTxiPy0xOmE+Yj8xOk55KGlzTmFOKGEpLGlzTmFOKGIpKSk+MH1cbmZ1bmN0aW9uIEREYihhLGIpe3JldHVybiBJeSgpLEl5KCksTXkoUWllKSwoJHduZC5NYXRoLmFicyhhLWIpPD1RaWV8fGE9PWJ8fGlzTmFOKGEpJiZpc05hTihiKT8wOmE8Yj8tMTphPmI/MTpOeShpc05hTihhKSxpc05hTihiKSkpPDB9XG5mdW5jdGlvbiBDRGIoYSxiKXtyZXR1cm4gSXkoKSxJeSgpLE15KFFpZSksKCR3bmQuTWF0aC5hYnMoYS1iKTw9UWllfHxhPT1ifHxpc05hTihhKSYmaXNOYU4oYik/MDphPGI/LTE6YT5iPzE6TnkoaXNOYU4oYSksaXNOYU4oYikpKTw9MH1cbmZ1bmN0aW9uIHlkYihhLGIpe3ZhciBjPTA7d2hpbGUoIWJbY118fGJbY109PScnKXtjKyt9dmFyIGQ9YltjKytdO2Zvcig7YzxiLmxlbmd0aDtjKyspe2lmKCFiW2NdfHxiW2NdPT0nJyl7Y29udGludWV9ZCs9YStiW2NdfXJldHVybiBkfVxuZnVuY3Rpb24gemZiKGEsYixjKXt2YXIgZCxlLGYsZztmPWIrYztBQ2IoYixmLGEubGVuZ3RoKTtnPScnO2ZvcihlPWI7ZTxmOyl7ZD0kd25kLk1hdGgubWluKGUrMTAwMDAsZik7Zys9dmZiKGEuc2xpY2UoZSxkKSk7ZT1kfXJldHVybiBnfVxuZnVuY3Rpb24gTjlkKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtmPW5ldyBSa2I7Zm9yKGM9Wm1kKGEpLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtFa2IoZixRZ2UoYix0cnVlKSl9cmV0dXJuIGZ9XG5mdW5jdGlvbiBROWQoYSl7dmFyIGIsYyxkLGUsZjtpZihhPT1udWxsKXJldHVybiBudWxsO2Y9bmV3IFJrYjtmb3IoYz1abWQoYSksZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdO0VrYihmLFFnZShiLHRydWUpKX1yZXR1cm4gZn1cbmZ1bmN0aW9uIFI5ZChhKXt2YXIgYixjLGQsZSxmO2lmKGE9PW51bGwpcmV0dXJuIG51bGw7Zj1uZXcgUmtiO2ZvcihjPVptZChhKSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07RWtiKGYsUWdlKGIsdHJ1ZSkpfXJldHVybiBmfVxuZnVuY3Rpb24gdGVkKGEsYil7dmFyIGMsZCxlO2lmKGEuYyl7Y2xkKGEuYyxiKX1lbHNle2M9Yi1yZWQoYSk7Zm9yKGU9bmV3IG9sYihhLmQpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNTcpO3RlZChkLHJlZChkKStjKX19fVxuZnVuY3Rpb24gc2VkKGEsYil7dmFyIGMsZCxlO2lmKGEuYyl7YWxkKGEuYyxiKX1lbHNle2M9Yi1xZWQoYSk7Zm9yKGU9bmV3IG9sYihhLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNTcpO3NlZChkLHFlZChkKStjKX19fVxuZnVuY3Rpb24gdDZkKGEsYil7dmFyIGMsZCxlLGY7ZT1uZXcgU2tiKGIuZ2MoKSk7Zm9yKGQ9Yi5LYygpO2QuT2IoKTspe2M9ZC5QYigpO2Y9czZkKGEsQkQoYyw1NikpOyEhZiYmKGUuY1tlLmMubGVuZ3RoXT1mLHRydWUpfXJldHVybiBlfVxuZnVuY3Rpb24gTEFkKGEsYil7dmFyIGMsZCxlO2EucWooKTtkPWI9PW51bGw/MDp0YihiKTtlPShkJk9oZSklYS5kLmxlbmd0aDtjPXdBZChhLGUsZCxiKTtpZihjKXtKQWQoYSxjKTtyZXR1cm4gYy5kZCgpfWVsc2V7cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24gcmRlKGEpe3ZhciBiLGM7Yz1zZGUoYSk7Yj1udWxsO3doaWxlKGEuYz09Mil7bmRlKGEpO2lmKCFiKXtiPSh3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgTGdlKDIpKTtLZ2UoYixjKTtjPWJ9Yy4kbChzZGUoYSkpfXJldHVybiBjfVxuZnVuY3Rpb24gV3BkKGEpe3ZhciBiLGMsZDtkPW51bGw7Yj1WdGUgaW4gYS5hO2M9IWI7aWYoYyl7dGhyb3cgdmJiKG5ldyBjcWQoJ0V2ZXJ5IGVsZW1lbnQgbXVzdCBoYXZlIGFuIGlkLicpKX1kPVZwZChhQyhhLFZ0ZSkpO3JldHVybiBkfVxuZnVuY3Rpb24gamlkKGEpe3ZhciBiLGMsZDtkPWEuWmcoKTtpZighZCl7Yj0wO2ZvcihjPWEuZWgoKTtjO2M9Yy5laCgpKXtpZigrK2I+V2plKXtyZXR1cm4gYy5maCgpfWQ9Yy5aZygpO2lmKCEhZHx8Yz09YSl7YnJlYWt9fX1yZXR1cm4gZH1cbmZ1bmN0aW9uIGZ2ZChhKXtldmQoKTtpZihKRChhLDE1Nikpe3JldHVybiBCRChPaGIoY3ZkLGhLKSwyODgpLnZnKGEpfWlmKE1oYihjdmQscmIoYSkpKXtyZXR1cm4gQkQoT2hiKGN2ZCxyYihhKSksMjg4KS52ZyhhKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGZaZChhKXtpZihlZmIoa3NlLGEpKXtyZXR1cm4gQmNiKCksQWNifWVsc2UgaWYoZWZiKGxzZSxhKSl7cmV0dXJuIEJjYigpLHpjYn1lbHNle3Rocm93IHZiYihuZXcgV2RiKCdFeHBlY3RpbmcgdHJ1ZSBvciBmYWxzZScpKX19XG5mdW5jdGlvbiB1RGMoYSxiKXtpZihiLmM9PWEpe3JldHVybiBiLmR9ZWxzZSBpZihiLmQ9PWEpe3JldHVybiBiLmN9dGhyb3cgdmJiKG5ldyBXZGIoJ0lucHV0IGVkZ2UgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUgaW5wdXQgcG9ydC4nKSl9XG5mdW5jdGlvbiBJZ2IoYSxiKXtpZihhLmU+Yi5lKXtyZXR1cm4gMX1pZihhLmU8Yi5lKXtyZXR1cm4gLTF9aWYoYS5kPmIuZCl7cmV0dXJuIGEuZX1pZihhLmQ8Yi5kKXtyZXR1cm4gLWIuZX1yZXR1cm4gYS5lKndoYihhLmEsYi5hLGEuZCl9XG5mdW5jdGlvbiBaY2IoYSl7aWYoYT49NDgmJmE8NDgrJHduZC5NYXRoLm1pbigxMCwxMCkpe3JldHVybiBhLTQ4fWlmKGE+PTk3JiZhPDk3KXtyZXR1cm4gYS05NysxMH1pZihhPj02NSYmYTw2NSl7cmV0dXJuIGEtNjUrMTB9cmV0dXJuIC0xfVxuZnVuY3Rpb24gVWUoYSxiKXt2YXIgYztpZihQRChiKT09PVBEKGEpKXtyZXR1cm4gdHJ1ZX1pZighSkQoYiwyMSkpe3JldHVybiBmYWxzZX1jPUJEKGIsMjEpO2lmKGMuZ2MoKSE9YS5nYygpKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGEuSWMoYyl9XG5mdW5jdGlvbiBla2IoYSxiKXt2YXIgYyxkLGUsZjtkPWEuYS5sZW5ndGgtMTtjPWItYS5iJmQ7Zj1hLmMtYiZkO2U9YS5jLWEuYiZkO21rYihjPGUpO2lmKGM+PWYpe2hrYihhLGIpO3JldHVybiAtMX1lbHNle2lrYihhLGIpO3JldHVybiAxfX1cbmZ1bmN0aW9uIGxBKGEsYil7dmFyIGMsZDtjPShCQ2IoYixhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGIpKTtkPWIrMTt3aGlsZShkPGEubGVuZ3RoJiYoQkNiKGQsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChkKT09YykpeysrZH1yZXR1cm4gZC1ifVxuZnVuY3Rpb24gc0piKGEpe3N3aXRjaChhLmcpe2Nhc2UgMTI6Y2FzZSAxMzpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSAxOTpjYXNlIDIwOnJldHVybiB0cnVlO2RlZmF1bHQ6cmV0dXJuIGZhbHNlO319XG5mdW5jdGlvbiBiQyhmLGEpe3ZhciBiPWYuYTt2YXIgYzthPVN0cmluZyhhKTtiLmhhc093blByb3BlcnR5KGEpJiYoYz1iW2FdKTt2YXIgZD0ockMoKSxxQylbdHlwZW9mIGNdO3ZhciBlPWQ/ZChjKTp4Qyh0eXBlb2YgYyk7cmV0dXJuIGV9XG5mdW5jdGlvbiBiM2MoYSxiKXtpZihhLmE8MCl7dGhyb3cgdmJiKG5ldyBaZGIoJ0RpZCBub3QgY2FsbCBiZWZvcmUoLi4uKSBvciBhZnRlciguLi4pIGJlZm9yZSBjYWxsaW5nIGFkZCguLi4pLicpKX1pM2MoYSxhLmEsYik7cmV0dXJuIGF9XG5mdW5jdGlvbiBWT2MoYSxiLGMsZCl7dmFyIGUsZjtpZihiLmMubGVuZ3RoPT0wKXtyZXR1cm59ZT1ST2MoYyxkKTtmPVFPYyhiKTtNQWIoVkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGYsMSkpLG5ldyBjUGMpLG5ldyBnUGMoYSxjLGUsZCkpfVxuZnVuY3Rpb24gQ2pkKGEsYixjKXt2YXIgZDtpZigoYS5EYiZiKSE9MCl7aWYoYz09bnVsbCl7QmpkKGEsYil9ZWxzZXtkPXpqZChhLGIpO2Q9PS0xPyhhLkViPWMpOk5DKENEKGEuRWIpLGQsYyl9fWVsc2UgYyE9bnVsbCYmdmpkKGEsYixjKX1cbmZ1bmN0aW9uIHlqZChhKXt2YXIgYixjO2lmKChhLkRiJjMyKT09MCl7Yz0oYj1CRChBamQoYSwxNiksMjYpLGFMZCghYj9hLnpoKCk6YiktYUxkKGEuemgoKSkpO2MhPTAmJkNqZChhLDMyLEtDKFNJLFVoZSwxLGMsNSwxKSl9cmV0dXJuIGF9XG5mdW5jdGlvbiBXMWQoYSl7dmFyIGI7YS5ifHxYMWQoYSwoYj1oMWQoYS5lLGEuYSksIWJ8fCFkZmIobHNlLEFBZCgoIWIuYiYmKGIuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGIpKSxiLmIpLCdxdWFsaWZpZWQnKSkpKTtyZXR1cm4gYS5jfVxuZnVuY3Rpb24gZFRkKGEsYixjKXt2YXIgZCxlLGY7ZD1CRChxdWQoUVNkKGEuYSksYiksODcpO2Y9KGU9ZC5jLGU/ZTooakdkKCksWUZkKSk7KGYua2goKT94aWQoYS5iLEJEKGYsNDkpKTpmKT09Yz9LUWQoZCk6TlFkKGQsYyk7cmV0dXJuIGZ9XG5mdW5jdGlvbiBmQ2IoYSxiKXsoIWImJmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQhPW51bGw/Y29uc29sZS5ncm91cENvbGxhcHNlZDpjb25zb2xlLmdyb3VwIT1udWxsP2NvbnNvbGUuZ3JvdXA6Y29uc29sZS5sb2cpLmNhbGwoY29uc29sZSxhKX1cbmZ1bmN0aW9uIE5OYihhLGIsYyxkKXtkPT1hPyhCRChjLmIsNjUpLEJEKGMuYiw2NSksQkQoZC5iLDY1KSxCRChkLmIsNjUpLmMuYik6KEJEKGMuYiw2NSksQkQoYy5iLDY1KSxCRChkLmIsNjUpLEJEKGQuYiw2NSkuYy5iKTtLTmIoZCxiLGEpfVxuZnVuY3Rpb24gRU9iKGEpe3ZhciBiLGMsZDtiPTA7Zm9yKGM9bmV3IG9sYihhLmcpO2MuYTxjLmMuYy5sZW5ndGg7KXtCRChtbGIoYyksNTYyKTsrK2J9ZD1uZXcgRU5iKGEuZyxFZGIoYS5hKSxhLmMpO0VMYihkKTthLmc9ZC5iO2EuZD1kLmF9XG5mdW5jdGlvbiB5bWMoYSxiLGMpe2IuYj0kd25kLk1hdGgubWF4KGIuYiwtYy5hKTtiLmM9JHduZC5NYXRoLm1heChiLmMsYy5hLWEuYSk7Yi5kPSR3bmQuTWF0aC5tYXgoYi5kLC1jLmIpO2IuYT0kd25kLk1hdGgubWF4KGIuYSxjLmItYS5iKX1cbmZ1bmN0aW9uIE1JYyhhLGIpe2lmKGEuZTxiLmUpe3JldHVybiAtMX1lbHNlIGlmKGEuZT5iLmUpe3JldHVybiAxfWVsc2UgaWYoYS5mPGIuZil7cmV0dXJuIC0xfWVsc2UgaWYoYS5mPmIuZil7cmV0dXJuIDF9cmV0dXJuIHRiKGEpLXRiKGIpfVxuZnVuY3Rpb24gZWZiKGEsYil7dUNiKGEpO2lmKGI9PW51bGwpe3JldHVybiBmYWxzZX1pZihkZmIoYSxiKSl7cmV0dXJuIHRydWV9cmV0dXJuIGEubGVuZ3RoPT1iLmxlbmd0aCYmZGZiKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfVxuZnVuY3Rpb24geDZkKGEsYil7dmFyIGMsZCxlLGY7Zm9yKGQ9MCxlPWIuZ2MoKTtkPGU7KytkKXtjPWIuaWwoZCk7aWYoSkQoYyw5OSkmJihCRChjLDE4KS5CYiZvdGUpIT0wKXtmPWIuamwoZCk7ZiE9bnVsbCYmczZkKGEsQkQoZiw1NikpfX19XG5mdW5jdGlvbiBwMWMoYSxiLGMpe3ZhciBkLGUsZjtmb3IoZj1uZXcgb2xiKGMuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDIyMSk7ZD1uZXcgaERiKEJEKE9oYihhLmEsZS5iKSw2NSkpO0VrYihiLmEsZCk7cDFjKGEsZCxlKX19XG5mdW5jdGlvbiBBZWIoYSl7dmFyIGIsYztpZih5YmIoYSwtMTI5KT4wJiZ5YmIoYSwxMjgpPDApe2I9VGJiKGEpKzEyODtjPShDZWIoKSxCZWIpW2JdOyFjJiYoYz1CZWJbYl09bmV3IHRlYihhKSk7cmV0dXJuIGN9cmV0dXJuIG5ldyB0ZWIoYSl9XG5mdW5jdGlvbiBfMGQoYSxiKXt2YXIgYyxkO2M9Yi5IaChhLmEpO2lmKGMpe2Q9R0QoQUFkKCghYy5iJiYoYy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYykpLGMuYiksZnVlKSk7aWYoZCE9bnVsbCl7cmV0dXJuIGR9fXJldHVybiBiLm5lKCl9XG5mdW5jdGlvbiBhMWQoYSxiKXt2YXIgYyxkO2M9Yi5IaChhLmEpO2lmKGMpe2Q9R0QoQUFkKCghYy5iJiYoYy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYykpLGMuYiksZnVlKSk7aWYoZCE9bnVsbCl7cmV0dXJuIGR9fXJldHVybiBiLm5lKCl9XG5mdW5jdGlvbiBGTWMoYSxiKXt3TWMoKTt2YXIgYyxkO2ZvcihkPW5ldyBTcih1cihPX2IoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7aWYoYy5kLmk9PWJ8fGMuYy5pPT1iKXtyZXR1cm4gY319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBIVWIoYSxiLGMpe3RoaXMuYz1hO3RoaXMuZj1uZXcgUmtiO3RoaXMuZT1uZXcgZDdjO3RoaXMuaj1uZXcgSVZiO3RoaXMubj1uZXcgSVZiO3RoaXMuYj1iO3RoaXMuZz1uZXcgSjZjKGIuYyxiLmQsYi5iLGIuYSk7dGhpcy5hPWN9XG5mdW5jdGlvbiBnVmIoYSl7dmFyIGIsYyxkLGU7dGhpcy5hPW5ldyB6c2I7dGhpcy5kPW5ldyBUcWI7dGhpcy5lPTA7Zm9yKGM9YSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07IXRoaXMuZiYmKHRoaXMuZj1iKTtlVmIodGhpcyxiKX19XG5mdW5jdGlvbiBYZ2IoYSl7SGdiKCk7aWYoYS5sZW5ndGg9PTApe3RoaXMuZT0wO3RoaXMuZD0xO3RoaXMuYT1PQyhHQyhXRCwxKSxvamUsMjUsMTUsWzBdKX1lbHNle3RoaXMuZT0xO3RoaXMuZD1hLmxlbmd0aDt0aGlzLmE9YTtKZ2IodGhpcyl9fVxuZnVuY3Rpb24gbUliKGEsYixjKXtvSGIuY2FsbCh0aGlzKTt0aGlzLmE9S0Mob04saWxlLDIxMiwoZ0hiKCksT0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pKS5sZW5ndGgsMCwxKTt0aGlzLmI9YTt0aGlzLmQ9Yjt0aGlzLmM9Y31cbmZ1bmN0aW9uIEtqYyhhKXt0aGlzLmQ9bmV3IFJrYjt0aGlzLmU9bmV3ICRyYjt0aGlzLmM9S0MoV0Qsb2plLDI1LChVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKS5sZW5ndGgsMTUsMSk7dGhpcy5iPWF9XG5mdW5jdGlvbiBWYmMoYSl7dmFyIGIsYyxkLGUsZixnO2c9QkQodk5iKGEsKHd0YygpLCRzYykpLDExKTt5TmIoZyxxdGMsYS5pLm4uYik7Yj1rX2IoYS5lKTtmb3IoZD1iLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtSWmIoYyxnKX19XG5mdW5jdGlvbiBXYmMoYSl7dmFyIGIsYyxkLGUsZixnO2M9QkQodk5iKGEsKHd0YygpLCRzYykpLDExKTt5TmIoYyxxdGMsYS5pLm4uYik7Yj1rX2IoYS5nKTtmb3IoZT1iLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtRWmIoZCxjKX19XG5mdW5jdGlvbiB2Y2MoYSl7dmFyIGIsYztpZih3TmIoYS5kLmksKE55YygpLE54YykpKXtiPUJEKHZOYihhLmMuaSxOeGMpLDE5KTtjPUJEKHZOYihhLmQuaSxOeGMpLDE5KTtyZXR1cm4gYmViKGIuYSxjLmEpPjB9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gcTJjKGEpe3ZhciBiO2lmKFBEKGhrZChhLChZOWMoKSxKOGMpKSk9PT1QRCgoaGJkKCksZmJkKSkpe2lmKCFYb2QoYSkpe2prZChhLEo4YyxnYmQpfWVsc2V7Yj1CRChoa2QoWG9kKGEpLEo4YyksMzM0KTtqa2QoYSxKOGMsYil9fX1cbmZ1bmN0aW9uIGlqYyhhLGIsYyl7dmFyIGQsZTtiSWMoYS5lLGIsYywoVWNkKCksVGNkKSk7YkljKGEuaSxiLGMsemNkKTtpZihhLmEpe2U9QkQodk5iKGIsKHd0YygpLCRzYykpLDExKTtkPUJEKHZOYihjLCRzYyksMTEpO2NJYyhhLmcsZSxkKX19XG5mdW5jdGlvbiBPRWMoYSxiLGMpe3ZhciBkLGUsZjtkPWIuYy5wO2Y9Yi5wO2EuYltkXVtmXT1uZXcgJEVjKGEsYik7aWYoYyl7YS5hW2RdW2ZdPW5ldyBGRWMoYik7ZT1CRCh2TmIoYiwod3RjKCksUHNjKSksMTApOyEhZSYmUmMoYS5kLGUsYil9fVxuZnVuY3Rpb24gVFBiKGEsYil7dmFyIGMsZCxlO0VrYihQUGIsYSk7Yi5GYyhhKTtjPUJEKE9oYihPUGIsYSksMjEpO2lmKGMpe2ZvcihlPWMuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwzMyk7SmtiKFBQYixkLDApIT0tMXx8VFBiKGQsYil9fX1cbmZ1bmN0aW9uIHR5YihhLGIsYyl7dmFyIGQ7KGp5Yj8ocnliKGEpLHRydWUpOmt5Yj8oJHhiKCksdHJ1ZSk6bnliPygkeGIoKSx0cnVlKTpteWImJigkeGIoKSxmYWxzZSkpJiYoZD1uZXcgaXliKGIpLGQuYj1jLHB5YihhLGQpLHVuZGVmaW5lZCl9XG5mdW5jdGlvbiB4S2IoYSxiKXt2YXIgYztjPSFhLkEuSGMoKHRkZCgpLHNkZCkpfHxhLnE9PShkY2QoKSwkYmQpO2EudS5IYygocmNkKCksbmNkKSk/Yz92S2IoYSxiKTp6S2IoYSxiKTphLnUuSGMocGNkKSYmKGM/d0tiKGEsYik6QUtiKGEsYikpfVxuZnVuY3Rpb24gYjBkKGEsYil7dmFyIGMsZDsrK2EuajtpZihiIT1udWxsKXtjPShkPWEuYS5DYixKRChkLDk3KT9CRChkLDk3KS5KZygpOm51bGwpO2lmKHhsYihiLGMpKXtDamQoYS5hLDQsYyk7cmV0dXJufX1DamQoYS5hLDQsQkQoYiwxMjYpKX1cbmZ1bmN0aW9uIGRZYihhLGIsYyl7cmV0dXJuIG5ldyBKNmMoJHduZC5NYXRoLm1pbihhLmEsYi5hKS1jLzIsJHduZC5NYXRoLm1pbihhLmIsYi5iKS1jLzIsJHduZC5NYXRoLmFicyhhLmEtYi5hKStjLCR3bmQuTWF0aC5hYnMoYS5iLWIuYikrYyl9XG5mdW5jdGlvbiBrNGIoYSxiKXt2YXIgYyxkO2M9YmViKGEuYS5jLnAsYi5hLmMucCk7aWYoYyE9MCl7cmV0dXJuIGN9ZD1iZWIoYS5hLmQuaS5wLGIuYS5kLmkucCk7aWYoZCE9MCl7cmV0dXJuIGR9cmV0dXJuIGJlYihiLmEuZC5wLGEuYS5kLnApfVxuZnVuY3Rpb24gX0RjKGEsYixjKXt2YXIgZCxlLGYsZztmPWIuajtnPWMuajtpZihmIT1nKXtyZXR1cm4gZi5nLWcuZ31lbHNle2Q9YS5mW2IucF07ZT1hLmZbYy5wXTtyZXR1cm4gZD09MCYmZT09MD8wOmQ9PTA/LTE6ZT09MD8xOktkYihkLGUpfX1cbmZ1bmN0aW9uIEhGYihhLGIsYyl7dmFyIGQsZSxmO2lmKGNbYi5kXSl7cmV0dXJufWNbYi5kXT10cnVlO2ZvcihlPW5ldyBvbGIoTEZiKGIpKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjEzKTtmPXhGYihkLGIpO0hGYihhLGYsYyl9fVxuZnVuY3Rpb24gdW1jKGEsYixjKXt2YXIgZDtkPWNbYS5nXVtiXTtzd2l0Y2goYS5nKXtjYXNlIDE6Y2FzZSAzOnJldHVybiBuZXcgZjdjKDAsZCk7Y2FzZSAyOmNhc2UgNDpyZXR1cm4gbmV3IGY3YyhkLDApO2RlZmF1bHQ6cmV0dXJuIG51bGw7fX1cbmZ1bmN0aW9uIHIyYyhiLGMsZCl7dmFyIGUsZjtmPUJEKGhnZChjLmYpLDIwOSk7dHJ5e2YuWmUoYixkKTtpZ2QoYy5mLGYpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTAyKSl7ZT1hO3Rocm93IHZiYihlKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBWcWQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtkPW51bGw7aD1rNGMobjRjKCksYik7Zj1udWxsO2lmKGgpe2U9bnVsbDtpPW81YyhoLGMpO2c9bnVsbDtpIT1udWxsJiYoZz1hLlllKGgsaSkpO2U9ZztmPWV9ZD1mO3JldHVybiBkfVxuZnVuY3Rpb24gVFRkKGEsYixjLGQpe3ZhciBlLGYsZztlPW5ldyBwU2QoYS5lLDEsMTMsKGc9Yi5jLGc/ZzooakdkKCksWUZkKSksKGY9Yy5jLGY/ZjooakdkKCksWUZkKSksSExkKGEsYiksZmFsc2UpOyFkPyhkPWUpOmQuRWkoZSk7cmV0dXJuIGR9XG5mdW5jdGlvbiBVRWQoYSxiLGMsZCl7dmFyIGU7ZT1hLmxlbmd0aDtpZihiPj1lKXJldHVybiBlO2ZvcihiPWI+MD9iOjA7YjxlO2IrKyl7aWYoX0VkKChCQ2IoYixhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGIpKSxjLGQpKWJyZWFrfXJldHVybiBifVxuZnVuY3Rpb24gUWtiKGEsYil7dmFyIGMsZDtkPWEuYy5sZW5ndGg7Yi5sZW5ndGg8ZCYmKGI9ZUNiKG5ldyBBcnJheShkKSxiKSk7Zm9yKGM9MDtjPGQ7KytjKXtOQyhiLGMsYS5jW2NdKX1iLmxlbmd0aD5kJiZOQyhiLGQsbnVsbCk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBfbGIoYSxiKXt2YXIgYyxkO2Q9YS5hLmxlbmd0aDtiLmxlbmd0aDxkJiYoYj1lQ2IobmV3IEFycmF5KGQpLGIpKTtmb3IoYz0wO2M8ZDsrK2Mpe05DKGIsYyxhLmFbY10pfWIubGVuZ3RoPmQmJk5DKGIsZCxudWxsKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIFhyYihhLGIsYyl7dmFyIGQsZSxmO2U9QkQoT2hiKGEuZSxiKSwzODcpO2lmKCFlKXtkPW5ldyBsc2IoYSxiLGMpO1JoYihhLmUsYixkKTtpc2IoZCk7cmV0dXJuIG51bGx9ZWxzZXtmPWlqYihlLGMpO1lyYihhLGUpO3JldHVybiBmfX1cbmZ1bmN0aW9uIFA5ZChhKXt2YXIgYjtpZihhPT1udWxsKXJldHVybiBudWxsO2I9aWRlKFFnZShhLHRydWUpKTtpZihiPT1udWxsKXt0aHJvdyB2YmIobmV3IG44ZChcIkludmFsaWQgaGV4QmluYXJ5IHZhbHVlOiAnXCIrYStcIidcIikpfXJldHVybiBifVxuZnVuY3Rpb24gZ2hiKGEpe0hnYigpO2lmKHliYihhLDApPDApe2lmKHliYihhLC0xKSE9MCl7cmV0dXJuIG5ldyBXZ2IoLTEsSmJiKGEpKX1yZXR1cm4gQmdifWVsc2UgcmV0dXJuIHliYihhLDEwKTw9MD9EZ2JbVGJiKGEpXTpuZXcgV2diKDEsYSl9XG5mdW5jdGlvbiB3SmIoKXtxSmIoKTtyZXR1cm4gT0MoR0MoRE4sMSksS2llLDE1OSwwLFtuSmIsbUpiLG9KYixlSmIsZEpiLGZKYixpSmIsaEpiLGdKYixsSmIsa0piLGpKYixiSmIsYUpiLGNKYiwkSWIsWkliLF9JYixYSWIsV0liLFlJYixwSmJdKX1cbmZ1bmN0aW9uIHZqYyhhKXt2YXIgYjt0aGlzLmQ9bmV3IFJrYjt0aGlzLmo9bmV3IGQ3Yzt0aGlzLmc9bmV3IGQ3YztiPWEuZy5iO3RoaXMuZj1CRCh2TmIoUV9iKGIpLChOeWMoKSxMd2MpKSwxMDMpO3RoaXMuZT1FZGIoRUQoY19iKGIscnljKSkpfVxuZnVuY3Rpb24gUGpjKGEpe3RoaXMuYj1uZXcgUmtiO3RoaXMuZT1uZXcgUmtiO3RoaXMuZD1hO3RoaXMuYT0hV0FiKEpBYihuZXcgWUFiKG51bGwsbmV3IEx1YihuZXcgYjFiKGEuYikpKSxuZXcgWHhiKG5ldyBRamMpKSkuc2QoKEVBYigpLERBYikpfVxuZnVuY3Rpb24gTjVjKCl7TjVjPWNjYjtMNWM9bmV3IE81YygnUEFSRU5UUycsMCk7SzVjPW5ldyBPNWMoJ05PREVTJywxKTtJNWM9bmV3IE81YygnRURHRVMnLDIpO001Yz1uZXcgTzVjKCdQT1JUUycsMyk7SjVjPW5ldyBPNWMoJ0xBQkVMUycsNCl9XG5mdW5jdGlvbiBUYmQoKXtUYmQ9Y2NiO1FiZD1uZXcgVWJkKCdESVNUUklCVVRFRCcsMCk7U2JkPW5ldyBVYmQoJ0pVU1RJRklFRCcsMSk7T2JkPW5ldyBVYmQoJ0JFR0lOJywyKTtQYmQ9bmV3IFViZChnbGUsMyk7UmJkPW5ldyBVYmQoJ0VORCcsNCl9XG5mdW5jdGlvbiBVTWQoYSl7dmFyIGI7Yj1hLnlpKG51bGwpO3N3aXRjaChiKXtjYXNlIDEwOnJldHVybiAwO2Nhc2UgMTU6cmV0dXJuIDE7Y2FzZSAxNDpyZXR1cm4gMjtjYXNlIDExOnJldHVybiAzO2Nhc2UgMjE6cmV0dXJuIDQ7fXJldHVybiAtMX1cbmZ1bmN0aW9uIGNZYihhKXtzd2l0Y2goYS5nKXtjYXNlIDE6cmV0dXJuIGVhZCgpLGRhZDtjYXNlIDQ6cmV0dXJuIGVhZCgpLGFhZDtjYXNlIDI6cmV0dXJuIGVhZCgpLGJhZDtjYXNlIDM6cmV0dXJuIGVhZCgpLF85Yzt9cmV0dXJuIGVhZCgpLGNhZH1cbmZ1bmN0aW9uIGtBKGEsYixjKXt2YXIgZDtkPWMucS5nZXRGdWxsWWVhcigpLW5qZStuamU7ZDwwJiYoZD0tZCk7c3dpdGNoKGIpe2Nhc2UgMTphLmErPWQ7YnJlYWs7Y2FzZSAyOkVBKGEsZCUxMDAsMik7YnJlYWs7ZGVmYXVsdDpFQShhLGQsYik7fX1cbmZ1bmN0aW9uIEpzYihhLGIpe3ZhciBjLGQ7d0NiKGIsYS5iKTtpZihiPj1hLmI+PjEpe2Q9YS5jO2ZvcihjPWEuYjtjPmI7LS1jKXtkPWQuYn19ZWxzZXtkPWEuYS5hO2ZvcihjPTA7YzxiOysrYyl7ZD1kLmF9fXJldHVybiBuZXcgJHNiKGEsYixkKX1cbmZ1bmN0aW9uIE1FYigpe01FYj1jY2I7TEViPW5ldyBORWIoJ05VTV9PRl9FWFRFUk5BTF9TSURFU19USEFOX05VTV9PRl9FWFRFTlNJT05TX0xBU1QnLDApO0tFYj1uZXcgTkViKCdDT1JORVJfQ0FTRVNfVEhBTl9TSU5HTEVfU0lERV9MQVNUJywxKX1cbmZ1bmN0aW9uIGg0YihhKXt2YXIgYixjLGQsZTtkPWM0YihhKTtPa2IoZCxhNGIpO2U9YS5kO2UuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Zm9yKGM9bmV3IG9sYihkKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksNDU2KTtHa2IoZSxiLmIpfX1cbmZ1bmN0aW9uIGdrZChhKXt2YXIgYixjLGQ7ZD0oIWEubyYmKGEubz1uZXcgZElkKChUaGQoKSxRaGQpLFMyLGEsMCkpLGEubyk7Zm9yKGM9ZC5jLktjKCk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoYy5uaigpLDQyKTtiLmRkKCl9cmV0dXJuIEZBZChkKX1cbmZ1bmN0aW9uIE41YihhKXt2YXIgYjtpZighZWNkKEJEKHZOYihhLChOeWMoKSxWeGMpKSw5OCkpKXtyZXR1cm59Yj1hLmI7TzViKCh0Q2IoMCxiLmMubGVuZ3RoKSxCRChiLmNbMF0sMjkpKSk7TzViKEJEKElrYihiLGIuYy5sZW5ndGgtMSksMjkpKX1cbmZ1bmN0aW9uIFJvYyhhLGIpe3ZhciBjLGQsZSxmO2M9MDtmb3IoZT1uZXcgb2xiKGIuYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEwKTtmPWQuby5hK2QuZC5jK2QuZC5iK2EuajtjPSR3bmQuTWF0aC5tYXgoYyxmKX1yZXR1cm4gY31cbmZ1bmN0aW9uIFhFZChhKXt2YXIgYixjLGQsZTtlPTA7Zm9yKGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspe2I9KEJDYihjLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoYykpO2I+PTY0JiZiPDEyOCYmKGU9TWJiKGUsTmJiKDEsYi02NCkpKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIGNfYihhLGIpe3ZhciBjLGQ7ZD1udWxsO2lmKHdOYihhLChZOWMoKSxPOWMpKSl7Yz1CRCh2TmIoYSxPOWMpLDk0KTtjLlhlKGIpJiYoZD1jLldlKGIpKX1kPT1udWxsJiYhIVFfYihhKSYmKGQ9dk5iKFFfYihhKSxiKSk7cmV0dXJuIGR9XG5mdW5jdGlvbiBvUWMoYSxiKXt2YXIgYyxkLGU7ZT1iLmQuaTtkPWUuaztpZihkPT0oajBiKCksaDBiKXx8ZD09ZDBiKXtyZXR1cm59Yz1uZXcgU3IodXIoVV9iKGUpLmEuS2MoKSxuZXcgU3EpKTtRcihjKSYmUmhiKGEuayxiLEJEKFJyKGMpLDE3KSl9XG5mdW5jdGlvbiBtaWQoYSxiKXt2YXIgYyxkLGU7ZD1YS2QoYS5UZygpLGIpO2M9Yi1hLkFoKCk7cmV0dXJuIGM8MD8oZT1hLllnKGQpLGU+PTA/YS5saChlKTp0aWQoYSxkKSk6YzwwP3RpZChhLGQpOkJEKGQsNjYpLk5qKCkuU2ooYSxhLnloKCksYyl9XG5mdW5jdGlvbiBLc2QoYSl7dmFyIGI7aWYoSkQoYS5hLDQpKXtiPWZ2ZChhLmEpO2lmKGI9PW51bGwpe3Rocm93IHZiYihuZXcgWmRiKG1zZSthLmIrXCInLiBcIitpc2UrKGZkYihZMyksWTMuaykranNlKSl9cmV0dXJuIGJ9ZWxzZXtyZXR1cm4gYS5hfX1cbmZ1bmN0aW9uIEw5ZChhKXt2YXIgYjtpZihhPT1udWxsKXJldHVybiBudWxsO2I9YmRlKFFnZShhLHRydWUpKTtpZihiPT1udWxsKXt0aHJvdyB2YmIobmV3IG44ZChcIkludmFsaWQgYmFzZTY0QmluYXJ5IHZhbHVlOiAnXCIrYStcIidcIikpfXJldHVybiBifVxuZnVuY3Rpb24gRHlkKGIpe3ZhciBjO3RyeXtjPWIuaS5YYihiLmUpO2IubWooKTtiLmc9Yi5lKys7cmV0dXJuIGN9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3Mykpe2IubWooKTt0aHJvdyB2YmIobmV3IHV0Yil9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gWnlkKGIpe3ZhciBjO3RyeXtjPWIuYy5raShiLmUpO2IubWooKTtiLmc9Yi5lKys7cmV0dXJuIGN9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3Mykpe2IubWooKTt0aHJvdyB2YmIobmV3IHV0Yil9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gQ1BiKCl7Q1BiPWNjYjtCUGI9KFk5YygpLEs5Yyk7dlBiPUc4YztxUGI9cjhjO3dQYj1mOWM7elBiPShmRmIoKSxiRmIpO3lQYj1fRWI7QVBiPWRGYjt4UGI9JEViO3NQYj0oblBiKCksalBiKTtyUGI9aVBiO3RQYj1sUGI7dVBiPW1QYn1cbmZ1bmN0aW9uIE5XYihhKXtMV2IoKTt0aGlzLmM9bmV3IFJrYjt0aGlzLmQ9YTtzd2l0Y2goYS5nKXtjYXNlIDA6Y2FzZSAyOnRoaXMuYT10bWIoS1diKTt0aGlzLmI9UGplO2JyZWFrO2Nhc2UgMzpjYXNlIDE6dGhpcy5hPUtXYjt0aGlzLmI9UWplO319XG5mdW5jdGlvbiB1ZWQoYSxiLGMpe3ZhciBkLGU7aWYoYS5jKXtkbGQoYS5jLGEuYy5pK2IpO2VsZChhLmMsYS5jLmorYyl9ZWxzZXtmb3IoZT1uZXcgb2xiKGEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE1Nyk7dWVkKGQsYixjKX19fVxuZnVuY3Rpb24gS0VkKGEsYil7dmFyIGMsZDtpZihhLmoubGVuZ3RoIT1iLmoubGVuZ3RoKXJldHVybiBmYWxzZTtmb3IoYz0wLGQ9YS5qLmxlbmd0aDtjPGQ7YysrKXtpZighZGZiKGEualtjXSxiLmpbY10pKXJldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIGdBKGEsYixjKXt2YXIgZDtpZihiLmEubGVuZ3RoPjApe0VrYihhLmIsbmV3IFdBKGIuYSxjKSk7ZD1iLmEubGVuZ3RoOzA8ZD8oYi5hPWIuYS5zdWJzdHIoMCwwKSk6MD5kJiYoYi5hKz15ZmIoS0MoVEQsJGllLDI1LC1kLDE1LDEpKSl9fVxuZnVuY3Rpb24gSktiKGEsYil7dmFyIGMsZCxlO2M9YS5vO2ZvcihlPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTExKTtkLmUuYT1ES2IoZCxjLmEpO2QuZS5iPWMuYipFZGIoRUQoZC5iLldlKEJLYikpKX19XG5mdW5jdGlvbiBTNWIoYSxiKXt2YXIgYyxkLGUsZjtlPWEuaztjPUVkYihFRCh2TmIoYSwod3RjKCksaHRjKSkpKTtmPWIuaztkPUVkYihFRCh2TmIoYixodGMpKSk7cmV0dXJuIGYhPShqMGIoKSxlMGIpPy0xOmUhPWUwYj8xOmM9PWQ/MDpjPGQ/LTE6MX1cbmZ1bmN0aW9uIEIkYyhhLGIpe3ZhciBjLGQ7Yz1CRChCRChPaGIoYS5nLGIuYSksNDYpLmEsNjUpO2Q9QkQoQkQoT2hiKGEuZyxiLmIpLDQ2KS5hLDY1KTtyZXR1cm4gUzZjKGIuYSxiLmIpLVM2YyhiLmEsRTZjKGMuYikpLVM2YyhiLmIsRTZjKGQuYikpfVxuZnVuY3Rpb24gYVpiKGEsYil7dmFyIGM7Yz1CRCh2TmIoYSwoTnljKCksanhjKSksNzQpO2lmKExxKGIsWlliKSl7aWYoIWMpe2M9bmV3IHM3Yzt5TmIoYSxqeGMsYyl9ZWxzZXtPc2IoYyl9fWVsc2UgISFjJiZ5TmIoYSxqeGMsbnVsbCk7cmV0dXJuIGN9XG5mdW5jdGlvbiBhMGIoYSl7dmFyIGI7Yj1uZXcgVWZiO2IuYSs9J24nO2EuayE9KGowYigpLGgwYikmJlFmYihRZmIoKGIuYSs9JygnLGIpLFpyKGEuaykudG9Mb3dlckNhc2UoKSksJyknKTtRZmIoKGIuYSs9J18nLGIpLFBfYihhKSk7cmV0dXJuIGIuYX1cbmZ1bmN0aW9uIEtkYyhhLGIpe09kZChiLCdTZWxmLUxvb3AgcG9zdC1wcm9jZXNzaW5nJywxKTtNQWIoSkFiKEpBYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5iLDE2KSksbmV3IFFkYyksbmV3IFNkYyksbmV3IFVkYyksbmV3IFdkYyk7UWRkKGIpfVxuZnVuY3Rpb24ga2lkKGEsYixjLGQpe3ZhciBlO2lmKGM+PTApe3JldHVybiBhLmhoKGIsYyxkKX1lbHNleyEhYS5laCgpJiYoZD0oZT1hLlZnKCksZT49MD9hLlFnKGQpOmEuZWgoKS5paChhLC0xLWUsbnVsbCxkKSkpO3JldHVybiBhLlNnKGIsYyxkKX19XG5mdW5jdGlvbiB6bGQoYSxiKXtzd2l0Y2goYil7Y2FzZSA3OiFhLmUmJihhLmU9bmV3IHk1ZChCMixhLDcsNCkpO1V4ZChhLmUpO3JldHVybjtjYXNlIDg6IWEuZCYmKGEuZD1uZXcgeTVkKEIyLGEsOCw1KSk7VXhkKGEuZCk7cmV0dXJuO30ka2QoYSxiKX1cbmZ1bmN0aW9uIFV0KGIsYyl7dmFyIGQ7ZD1iLlpjKGMpO3RyeXtyZXR1cm4gZC5QYigpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTA5KSl7dGhyb3cgdmJiKG5ldyBxY2IoXCJDYW4ndCBnZXQgZWxlbWVudCBcIitjKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gVGdiKGEsYil7dGhpcy5lPWE7aWYoYjxaamUpe3RoaXMuZD0xO3RoaXMuYT1PQyhHQyhXRCwxKSxvamUsMjUsMTUsW2J8MF0pfWVsc2V7dGhpcy5kPTI7dGhpcy5hPU9DKEdDKFdELDEpLG9qZSwyNSwxNSxbYiVaamV8MCxiL1pqZXwwXSl9fVxuZnVuY3Rpb24gb21iKGEsYil7bW1iKCk7dmFyIGMsZCxlLGY7Yz1hO2Y9YjtpZihKRChhLDIxKSYmIUpEKGIsMjEpKXtjPWI7Zj1hfWZvcihlPWMuS2MoKTtlLk9iKCk7KXtkPWUuUGIoKTtpZihmLkhjKGQpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfVxuZnVuY3Rpb24gVHhkKGEsYixjKXt2YXIgZCxlLGYsZztkPWEuWGMoYik7aWYoZCE9LTEpe2lmKGEuZWooKSl7Zj1hLmZqKCk7Zz10dWQoYSxkKTtlPWEuWmkoNCxnLG51bGwsZCxmKTshYz8oYz1lKTpjLkVpKGUpfWVsc2V7dHVkKGEsZCl9fXJldHVybiBjfVxuZnVuY3Rpb24gdXdkKGEsYixjKXt2YXIgZCxlLGYsZztkPWEuWGMoYik7aWYoZCE9LTEpe2lmKGEuZWooKSl7Zj1hLmZqKCk7Zz1FdmQoYSxkKTtlPWEuWmkoNCxnLG51bGwsZCxmKTshYz8oYz1lKTpjLkVpKGUpfWVsc2V7RXZkKGEsZCl9fXJldHVybiBjfVxuZnVuY3Rpb24gUEpiKGEsYil7dmFyIGM7Yz1CRChNcGIoYS5iLGIpLDEyNCkubjtzd2l0Y2goYi5nKXtjYXNlIDE6YS50Pj0wJiYoYy5kPWEudCk7YnJlYWs7Y2FzZSAzOmEudD49MCYmKGMuYT1hLnQpO31pZihhLkMpe2MuYj1hLkMuYjtjLmM9YS5DLmN9fVxuZnVuY3Rpb24gUk1iKCl7Uk1iPWNjYjtPTWI9bmV3IFNNYih4bGUsMCk7Tk1iPW5ldyBTTWIoeWxlLDEpO1BNYj1uZXcgU01iKHpsZSwyKTtRTWI9bmV3IFNNYihBbGUsMyk7T01iLmE9ZmFsc2U7Tk1iLmE9dHJ1ZTtQTWIuYT1mYWxzZTtRTWIuYT10cnVlfVxuZnVuY3Rpb24gUk9iKCl7Uk9iPWNjYjtPT2I9bmV3IFNPYih4bGUsMCk7Tk9iPW5ldyBTT2IoeWxlLDEpO1BPYj1uZXcgU09iKHpsZSwyKTtRT2I9bmV3IFNPYihBbGUsMyk7T09iLmE9ZmFsc2U7Tk9iLmE9dHJ1ZTtQT2IuYT1mYWxzZTtRT2IuYT10cnVlfVxuZnVuY3Rpb24gZGFjKGEpe3ZhciBiO2I9YS5hO2Rve2I9QkQoUnIobmV3IFNyKHVyKFJfYihiKS5hLktjKCksbmV3IFNxKSkpLDE3KS5jLmk7Yi5rPT0oajBiKCksZzBiKSYmYS5iLkZjKGIpfXdoaWxlKGIuaz09KGowYigpLGcwYikpO2EuYj1TdShhLmIpfVxuZnVuY3Rpb24gQ0RjKGEpe3ZhciBiLGMsZDtkPWEuYy5hO2EucD0oUWIoZCksbmV3IFRrYihkKSk7Zm9yKGM9bmV3IG9sYihkKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTApO2IucD1HRGMoYikuYX1tbWIoKTtPa2IoYS5wLG5ldyBQRGMpfVxuZnVuY3Rpb24gZVZjKGEpe3ZhciBiLGMsZCxlO2Q9MDtlPWdWYyhhKTtpZihlLmMubGVuZ3RoPT0wKXtyZXR1cm4gMX1lbHNle2ZvcihjPW5ldyBvbGIoZSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDMzKTtkKz1lVmMoYil9fXJldHVybiBkfVxuZnVuY3Rpb24gSkpiKGEsYil7dmFyIGMsZCxlO2U9MDtkPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7d2hpbGUoZC5PYigpKXtjPUJEKGQuUGIoKSwxMTEpO2UrPWMuZC5iK2MuYi5yZigpLmErYy5kLmM7ZC5PYigpJiYoZSs9YS53KX1yZXR1cm4gZX1cbmZ1bmN0aW9uIFJLYihhLGIpe3ZhciBjLGQsZTtlPTA7ZD1CRChCRChRYyhhLnIsYiksMjEpLDg0KS5LYygpO3doaWxlKGQuT2IoKSl7Yz1CRChkLlBiKCksMTExKTtlKz1jLmQuZCtjLmIucmYoKS5iK2MuZC5hO2QuT2IoKSYmKGUrPWEudyl9cmV0dXJuIGV9XG5mdW5jdGlvbiBTT2MoYSxiLGMsZCl7aWYoYi5hPGQuYSl7cmV0dXJuIHRydWV9ZWxzZSBpZihiLmE9PWQuYSl7aWYoYi5iPGQuYil7cmV0dXJuIHRydWV9ZWxzZSBpZihiLmI9PWQuYil7aWYoYS5iPmMuYil7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBBRChhLGIpe2lmKE5EKGEpKXtyZXR1cm4gISF6RFtiXX1lbHNlIGlmKGEuaG0pe3JldHVybiAhIWEuaG1bYl19ZWxzZSBpZihMRChhKSl7cmV0dXJuICEheURbYl19ZWxzZSBpZihLRChhKSl7cmV0dXJuICEheERbYl19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gamtkKGEsYixjKXtjPT1udWxsPyghYS5vJiYoYS5vPW5ldyBkSWQoKFRoZCgpLFFoZCksUzIsYSwwKSksTEFkKGEubyxiKSk6KCFhLm8mJihhLm89bmV3IGRJZCgoVGhkKCksUWhkKSxTMixhLDApKSxIQWQoYS5vLGIsYykpO3JldHVybiBhfVxuZnVuY3Rpb24gaktiKGEsYixjLGQpe3ZhciBlLGY7Zj1iLlhlKChZOWMoKSxXOGMpKT9CRChiLldlKFc4YyksMjEpOmEuajtlPXVKYihmKTtpZihlPT0ocUpiKCkscEpiKSl7cmV0dXJufWlmKGMmJiFzSmIoZSkpe3JldHVybn1VSGIobEtiKGEsZSxkKSxiKX1cbmZ1bmN0aW9uIGZpZChhLGIsYyxkKXt2YXIgZSxmLGc7Zj1YS2QoYS5UZygpLGIpO2U9Yi1hLkFoKCk7cmV0dXJuIGU8MD8oZz1hLllnKGYpLGc+PTA/YS5fZyhnLGMsdHJ1ZSk6c2lkKGEsZixjKSk6QkQoZiw2NikuTmooKS5QaihhLGEueWgoKSxlLGMsZCl9XG5mdW5jdGlvbiB1NmQoYSxiLGMsZCl7dmFyIGUsZixnO2lmKGMubWgoYikpe1E2ZCgpO2lmKFlJZChiKSl7ZT1CRChjLmFoKGIpLDE1Myk7eDZkKGEsZSl9ZWxzZXtmPShnPWIsIWc/bnVsbDpCRChkLDQ5KS54aChnKSk7ISFmJiZ2NmQoYy5haChiKSxmKX19fVxuZnVuY3Rpb24gSDNiKGEpe3N3aXRjaChhLmcpe2Nhc2UgMTpyZXR1cm4gdkxiKCksdUxiO2Nhc2UgMzpyZXR1cm4gdkxiKCksckxiO2Nhc2UgMjpyZXR1cm4gdkxiKCksdExiO2Nhc2UgNDpyZXR1cm4gdkxiKCksc0xiO2RlZmF1bHQ6cmV0dXJuIG51bGw7fX1cbmZ1bmN0aW9uIGtDYihhKXtzd2l0Y2godHlwZW9mKGEpKXtjYXNlIE1oZTpyZXR1cm4gTENiKGEpO2Nhc2UgTGhlOnJldHVybiBRRChhKTtjYXNlIEtoZTpyZXR1cm4gQmNiKCksYT8xMjMxOjEyMzc7ZGVmYXVsdDpyZXR1cm4gYT09bnVsbD8wOkZDYihhKTt9fVxuZnVuY3Rpb24gR2ljKGEsYixjKXtpZihhLmUpe3N3aXRjaChhLmIpe2Nhc2UgMTpvaWMoYS5jLGIsYyk7YnJlYWs7Y2FzZSAwOnBpYyhhLmMsYixjKTt9fWVsc2V7bWljKGEuYyxiLGMpfWEuYVtiLnBdW2MucF09YS5jLmk7YS5hW2MucF1bYi5wXT1hLmMuZX1cbmZ1bmN0aW9uIGxIYyhhKXt2YXIgYixjO2lmKGE9PW51bGwpe3JldHVybiBudWxsfWM9S0MoT1EsbmllLDE5MyxhLmxlbmd0aCwwLDIpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe2NbYl09QkQodWxiKGFbYl0sYVtiXS5sZW5ndGgpLDE5Myl9cmV0dXJuIGN9XG5mdW5jdGlvbiBkNGQoYSl7dmFyIGI7aWYoYjRkKGEpKXthNGQoYSk7aWYoYS5MaygpKXtiPWIzZChhLmUsYS5iLGEuYyxhLmEsYS5qKTthLmo9Yn1hLmc9YS5hOysrYS5hOysrYS5jO2EuaT0wO3JldHVybiBhLmp9ZWxzZXt0aHJvdyB2YmIobmV3IHV0Yil9fVxuZnVuY3Rpb24gZk1iKGEsYil7dmFyIGMsZCxlLGY7Zj1hLm87Yz1hLnA7ZjxjPyhmKj1mKTooYyo9Yyk7ZD1mK2M7Zj1iLm87Yz1iLnA7ZjxjPyhmKj1mKTooYyo9Yyk7ZT1mK2M7aWYoZDxlKXtyZXR1cm4gLTF9aWYoZD09ZSl7cmV0dXJuIDB9cmV0dXJuIDF9XG5mdW5jdGlvbiBITGQoYSxiKXt2YXIgYyxkLGU7ZT1ydWQoYSxiKTtpZihlPj0wKXJldHVybiBlO2lmKGEuRmsoKSl7Zm9yKGQ9MDtkPGEuaTsrK2Qpe2M9YS5HayhCRChhLmdbZF0sNTYpKTtpZihQRChjKT09PVBEKGIpKXtyZXR1cm4gZH19fXJldHVybiAtMX1cbmZ1bmN0aW9uIEd0ZChhLGIsYyl7dmFyIGQsZTtlPWEuZ2MoKTtpZihiPj1lKXRocm93IHZiYihuZXcgQ3lkKGIsZSkpO2lmKGEuaGkoKSl7ZD1hLlhjKGMpO2lmKGQ+PTAmJmQhPWIpe3Rocm93IHZiYihuZXcgV2RiKGt1ZSkpfX1yZXR1cm4gYS5taShiLGMpfVxuZnVuY3Rpb24gZ3goYSxiKXt0aGlzLmE9QkQoUWIoYSksMjQ1KTt0aGlzLmI9QkQoUWIoYiksMjQ1KTtpZihhLnZkKGIpPjB8fGE9PShMaygpLEtrKXx8Yj09KF9rKCksJGspKXt0aHJvdyB2YmIobmV3IFdkYignSW52YWxpZCByYW5nZTogJytueChhLGIpKSl9fVxuZnVuY3Rpb24gbVliKGEpe3ZhciBiLGM7dGhpcy5iPW5ldyBSa2I7dGhpcy5jPWE7dGhpcy5hPWZhbHNlO2ZvcihjPW5ldyBvbGIoYS5hKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTApO3RoaXMuYT10aGlzLmF8Yi5rPT0oajBiKCksaDBiKX19XG5mdW5jdGlvbiBHRmIoYSxiKXt2YXIgYyxkLGU7Yz1uR2IobmV3IHBHYixhKTtmb3IoZT1uZXcgb2xiKGIpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMjEpO0FGYihERmIoQ0ZiKEVGYihCRmIobmV3IEZGYiwwKSwwKSxjKSxkKSl9cmV0dXJuIGN9XG5mdW5jdGlvbiBOYWMoYSxiLGMpe3ZhciBkLGUsZjtmb3IoZT1uZXcgU3IodXIoKGI/Ul9iKGEpOlVfYihhKSkuYS5LYygpLG5ldyBTcSkpO1FyKGUpOyl7ZD1CRChScihlKSwxNyk7Zj1iP2QuYy5pOmQuZC5pO2Yuaz09KGowYigpLGYwYikmJiRfYihmLGMpfX1cbmZ1bmN0aW9uIEl6Yygpe0l6Yz1jY2I7R3pjPW5ldyBLemMoYW5lLDApO0h6Yz1uZXcgS3pjKCdQT1JUX1BPU0lUSU9OJywxKTtGemM9bmV3IEt6YygnTk9ERV9TSVpFX1dIRVJFX1NQQUNFX1BFUk1JVFMnLDIpO0V6Yz1uZXcgS3pjKCdOT0RFX1NJWkUnLDMpfVxuZnVuY3Rpb24gRjdjKCl7RjdjPWNjYjt6N2M9bmV3IEc3YygnQVVUT01BVElDJywwKTtDN2M9bmV3IEc3YyhqbGUsMSk7RDdjPW5ldyBHN2Moa2xlLDIpO0U3Yz1uZXcgRzdjKCdUT1AnLDMpO0E3Yz1uZXcgRzdjKG1sZSw0KTtCN2M9bmV3IEc3YyhnbGUsNSl9XG5mdW5jdGlvbiBIaGIoYSxiLGMsZCl7RGhiKCk7dmFyIGUsZjtlPTA7Zm9yKGY9MDtmPGM7ZisrKXtlPXdiYihJYmIoeGJiKGJbZl0sWWplKSx4YmIoZCxZamUpKSx4YmIoVGJiKGUpLFlqZSkpO2FbZl09VGJiKGUpO2U9UGJiKGUsMzIpfXJldHVybiBUYmIoZSl9XG5mdW5jdGlvbiB6SGIoYSxiLGMpe3ZhciBkLGU7ZT0wO2ZvcihkPTA7ZDxySGI7ZCsrKXtlPSR3bmQuTWF0aC5tYXgoZSxwSGIoYS5hW2IuZ11bZF0sYykpfWI9PShnSGIoKSxlSGIpJiYhIWEuYiYmKGU9JHduZC5NYXRoLm1heChlLGEuYi5iKSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBCdWIoYSxiKXt2YXIgYyxkO2xDYihiPjApO2lmKChiJi1iKT09Yil7cmV0dXJuIFFEKGIqQ3ViKGEsMzEpKjQuNjU2NjEyODczMDc3MzkyNkUtMTApfWRve2M9Q3ViKGEsMzEpO2Q9YyVifXdoaWxlKGMtZCsoYi0xKTwwKTtyZXR1cm4gUUQoZCl9XG5mdW5jdGlvbiBMQ2IoYSl7SkNiKCk7dmFyIGIsYyxkO2M9JzonK2E7ZD1JQ2JbY107aWYoZCE9bnVsbCl7cmV0dXJuIFFEKCh1Q2IoZCksZCkpfWQ9R0NiW2NdO2I9ZD09bnVsbD9LQ2IoYSk6UUQoKHVDYihkKSxkKSk7TUNiKCk7SUNiW2NdPWI7cmV0dXJuIGJ9XG5mdW5jdGlvbiBxWmIoYSxiLGMpe09kZChjLCdDb21wb3VuZCBncmFwaCBwcmVwcm9jZXNzb3InLDEpO2EuYT1uZXcgSHA7dlpiKGEsYixudWxsKTtwWmIoYSxiKTt1WmIoYSk7eU5iKGIsKHd0YygpLHpzYyksYS5hKTthLmE9bnVsbDtVaGIoYS5iKTtRZGQoYyl9XG5mdW5jdGlvbiBYJGIoYSxiLGMpe3N3aXRjaChjLmcpe2Nhc2UgMTphLmE9Yi5hLzI7YS5iPTA7YnJlYWs7Y2FzZSAyOmEuYT1iLmE7YS5iPWIuYi8yO2JyZWFrO2Nhc2UgMzphLmE9Yi5hLzI7YS5iPWIuYjticmVhaztjYXNlIDQ6YS5hPTA7YS5iPWIuYi8yO319XG5mdW5jdGlvbiB0a2MoYSl7dmFyIGIsYyxkO2ZvcihkPUJEKFFjKGEuYSwoWGpjKCksVmpjKSksMTUpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTAxKTtiPUJrYyhjKTtra2MoYSxjLGJbMF0sKEZrYygpLENrYyksMCk7a2tjKGEsYyxiWzFdLEVrYywxKX19XG5mdW5jdGlvbiB1a2MoYSl7dmFyIGIsYyxkO2ZvcihkPUJEKFFjKGEuYSwoWGpjKCksV2pjKSksMTUpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTAxKTtiPUJrYyhjKTtra2MoYSxjLGJbMF0sKEZrYygpLENrYyksMCk7a2tjKGEsYyxiWzFdLEVrYywxKX19XG5mdW5jdGlvbiB0WGMoYSl7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpyZXR1cm4gbmV3ICRYYztjYXNlIDI6cmV0dXJuIG5ldyBRWGM7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYihqcmUrKGEuZiE9bnVsbD9hLmY6JycrYS5nKSkpO319XG5mdW5jdGlvbiBPWmMoYSxiLGMpe3ZhciBkLGU7RlpjKGEsYi1hLnMsYy1hLnQpO2ZvcihlPW5ldyBvbGIoYS5uKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjExKTtTWmMoZCxkLmUrYi1hLnMpO1RaYyhkLGQuZitjLWEudCl9YS5zPWI7YS50PWN9XG5mdW5jdGlvbiBKRmIoYSl7dmFyIGIsYyxkLGUsZjtjPTA7Zm9yKGU9bmV3IG9sYihhLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMjEpO2QuZD1jKyt9Yj1JRmIoYSk7Zj1udWxsO2IuYy5sZW5ndGg+MSYmKGY9R0ZiKGEsYikpO3JldHVybiBmfVxuZnVuY3Rpb24gZG1kKGEpe3ZhciBiO2lmKCEhYS5mJiZhLmYua2goKSl7Yj1CRChhLmYsNDkpO2EuZj1CRCh4aWQoYSxiKSw4Mik7YS5mIT1iJiYoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSw5LDgsYixhLmYpKX1yZXR1cm4gYS5mfVxuZnVuY3Rpb24gZW1kKGEpe3ZhciBiO2lmKCEhYS5pJiZhLmkua2goKSl7Yj1CRChhLmksNDkpO2EuaT1CRCh4aWQoYSxiKSw4Mik7YS5pIT1iJiYoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSw5LDcsYixhLmkpKX1yZXR1cm4gYS5pfVxuZnVuY3Rpb24gelVkKGEpe3ZhciBiO2lmKCEhYS5iJiYoYS5iLkRiJjY0KSE9MCl7Yj1hLmI7YS5iPUJEKHhpZChhLGIpLDE4KTthLmIhPWImJihhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDksMjEsYixhLmIpKX1yZXR1cm4gYS5ifVxuZnVuY3Rpb24gdUFkKGEsYil7dmFyIGMsZCxlO2lmKGEuZD09bnVsbCl7KythLmU7KythLmZ9ZWxzZXtkPWIuU2goKTtCQWQoYSxhLmYrMSk7ZT0oZCZPaGUpJWEuZC5sZW5ndGg7Yz1hLmRbZV07IWMmJihjPWEuZFtlXT1hLnVqKCkpO2MuRmMoYik7KythLmZ9fVxuZnVuY3Rpb24gbTNkKGEsYixjKXt2YXIgZDtpZihiLktqKCkpe3JldHVybiBmYWxzZX1lbHNlIGlmKGIuWmooKSE9LTIpe2Q9Yi56aigpO3JldHVybiBkPT1udWxsP2M9PW51bGw6cGIoZCxjKX1lbHNlIHJldHVybiBiLkhqKCk9PWEuZS5UZygpJiZjPT1udWxsfVxuZnVuY3Rpb24gd28oKXt2YXIgYTtYaigxNixIaWUpO2E9S3AoMTYpO3RoaXMuYj1LQyhHRixHaWUsMzE3LGEsMCwxKTt0aGlzLmM9S0MoR0YsR2llLDMxNyxhLDAsMSk7dGhpcy5hPW51bGw7dGhpcy5lPW51bGw7dGhpcy5pPTA7dGhpcy5mPWEtMTt0aGlzLmc9MH1cbmZ1bmN0aW9uIGIwYihhKXtuX2IuY2FsbCh0aGlzKTt0aGlzLms9KGowYigpLGgwYik7dGhpcy5qPShYaig2LEppZSksbmV3IFNrYig2KSk7dGhpcy5iPShYaigyLEppZSksbmV3IFNrYigyKSk7dGhpcy5kPW5ldyBMX2I7dGhpcy5mPW5ldyBzMGI7dGhpcy5hPWF9XG5mdW5jdGlvbiBTY2MoYSl7dmFyIGIsYztpZihhLmMubGVuZ3RoPD0xKXtyZXR1cm59Yj1QY2MoYSwoVWNkKCksUmNkKSk7UmNjKGEsQkQoYi5hLDE5KS5hLEJEKGIuYiwxOSkuYSk7Yz1QY2MoYSxUY2QpO1JjYyhhLEJEKGMuYSwxOSkuYSxCRChjLmIsMTkpLmEpfVxuZnVuY3Rpb24gVnpjKCl7VnpjPWNjYjtVemM9bmV3IFh6YygnU0lNUExFJywwKTtSemM9bmV3IFh6YyhUbmUsMSk7U3pjPW5ldyBYemMoJ0xJTkVBUl9TRUdNRU5UUycsMik7UXpjPW5ldyBYemMoJ0JSQU5ERVNfS09FUEYnLDMpO1R6Yz1uZXcgWHpjKEFxZSw0KX1cbmZ1bmN0aW9uIFhEYyhhLGIsYyl7aWYoIWVjZChCRCh2TmIoYiwoTnljKCksVnhjKSksOTgpKSl7V0RjKGEsYixZX2IoYixjKSk7V0RjKGEsYixZX2IoYiwoVWNkKCksUmNkKSkpO1dEYyhhLGIsWV9iKGIsQWNkKSk7bW1iKCk7T2tiKGIuaixuZXcgakVjKGEpKX19XG5mdW5jdGlvbiBIVmMoYSxiLGMsZCl7dmFyIGUsZixnO2U9ZD9CRChRYyhhLmEsYiksMjEpOkJEKFFjKGEuYixiKSwyMSk7Zm9yKGc9ZS5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDMzKTtpZihCVmMoYSxjLGYpKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gRk1kKGEpe3ZhciBiLGM7Zm9yKGM9bmV3IEZ5ZChhKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChEeWQoYyksODcpO2lmKCEhYi5lfHwoIWIuZCYmKGIuZD1uZXcgeE1kKGo1LGIsMSkpLGIuZCkuaSE9MCl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIFFUZChhKXt2YXIgYixjO2ZvcihjPW5ldyBGeWQoYSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDg3KTtpZighIWIuZXx8KCFiLmQmJihiLmQ9bmV3IHhNZChqNSxiLDEpKSxiLmQpLmkhPTApe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBGRGMoYSl7dmFyIGIsYyxkO2I9MDtmb3IoZD1uZXcgb2xiKGEuYy5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTApO2IrPXNyKG5ldyBTcih1cihVX2IoYykuYS5LYygpLG5ldyBTcSkpKX1yZXR1cm4gYi9hLmMuYS5jLmxlbmd0aH1cbmZ1bmN0aW9uIFVQYyhhKXt2YXIgYixjO2EuY3x8WFBjKGEpO2M9bmV3IHM3YztiPW5ldyBvbGIoYS5hKTttbGIoYik7d2hpbGUoYi5hPGIuYy5jLmxlbmd0aCl7RHNiKGMsQkQobWxiKGIpLDQwNykuYSl9c0NiKGMuYiE9MCk7TnNiKGMsYy5jLmIpO3JldHVybiBjfVxuZnVuY3Rpb24gSjBjKCl7SjBjPWNjYjtJMGM9KEEwYygpLHowYyk7RzBjPW5ldyBxMGIoOCk7bmV3IE9zZCgoWTljKCksZjljKSxHMGMpO25ldyBPc2QoVDljLDgpO0gwYz14MGM7RTBjPW4wYztGMGM9bzBjO0QwYz1uZXcgT3NkKHk4YywoQmNiKCksZmFsc2UpKX1cbmZ1bmN0aW9uIHVsZChhLGIsYyxkKXtzd2l0Y2goYil7Y2FzZSA3OnJldHVybiAhYS5lJiYoYS5lPW5ldyB5NWQoQjIsYSw3LDQpKSxhLmU7Y2FzZSA4OnJldHVybiAhYS5kJiYoYS5kPW5ldyB5NWQoQjIsYSw4LDUpKSxhLmQ7fXJldHVybiBYa2QoYSxiLGMsZCl9XG5mdW5jdGlvbiBKUWQoYSl7dmFyIGI7aWYoISFhLmEmJmEuYS5raCgpKXtiPUJEKGEuYSw0OSk7YS5hPUJEKHhpZChhLGIpLDEzOCk7YS5hIT1iJiYoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSw5LDUsYixhLmEpKX1yZXR1cm4gYS5hfVxuZnVuY3Rpb24geWRlKGEpe2lmKGE8NDgpcmV0dXJuIC0xO2lmKGE+MTAyKXJldHVybiAtMTtpZihhPD01NylyZXR1cm4gYS00ODtpZihhPDY1KXJldHVybiAtMTtpZihhPD03MClyZXR1cm4gYS02NSsxMDtpZihhPDk3KXJldHVybiAtMTtyZXR1cm4gYS05NysxMH1cbmZ1bmN0aW9uIFdqKGEsYil7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBIZWIoJ251bGwga2V5IGluIGVudHJ5OiBudWxsPScrYikpfWVsc2UgaWYoYj09bnVsbCl7dGhyb3cgdmJiKG5ldyBIZWIoJ251bGwgdmFsdWUgaW4gZW50cnk6ICcrYSsnPW51bGwnKSl9fVxuZnVuY3Rpb24ga3IoYSxiKXt2YXIgYyxkO3doaWxlKGEuT2IoKSl7aWYoIWIuT2IoKSl7cmV0dXJuIGZhbHNlfWM9YS5QYigpO2Q9Yi5QYigpO2lmKCEoUEQoYyk9PT1QRChkKXx8YyE9bnVsbCYmcGIoYyxkKSkpe3JldHVybiBmYWxzZX19cmV0dXJuICFiLk9iKCl9XG5mdW5jdGlvbiBqSWIoYSxiKXt2YXIgYztjPU9DKEdDKFVELDEpLFZqZSwyNSwxNSxbcEhiKGEuYVswXSxiKSxwSGIoYS5hWzFdLGIpLHBIYihhLmFbMl0sYildKTtpZihhLmQpe2NbMF09JHduZC5NYXRoLm1heChjWzBdLGNbMl0pO2NbMl09Y1swXX1yZXR1cm4gY31cbmZ1bmN0aW9uIGtJYihhLGIpe3ZhciBjO2M9T0MoR0MoVUQsMSksVmplLDI1LDE1LFtxSGIoYS5hWzBdLGIpLHFIYihhLmFbMV0sYikscUhiKGEuYVsyXSxiKV0pO2lmKGEuZCl7Y1swXT0kd25kLk1hdGgubWF4KGNbMF0sY1syXSk7Y1syXT1jWzBdfXJldHVybiBjfVxuZnVuY3Rpb24gbXFjKCl7bXFjPWNjYjtpcWM9bmV3IG9xYygnR1JFRURZJywwKTtocWM9bmV3IG9xYyhVbmUsMSk7a3FjPW5ldyBvcWMoVG5lLDIpO2xxYz1uZXcgb3FjKCdNT0RFTF9PUkRFUicsMyk7anFjPW5ldyBvcWMoJ0dSRUVEWV9NT0RFTF9PUkRFUicsNCl9XG5mdW5jdGlvbiBpVWMoYSxiKXt2YXIgYyxkLGU7YS5iW2IuZ109MTtmb3IoZD1Kc2IoYi5kLDApO2QuYiE9ZC5kLmM7KXtjPUJEKFhzYihkKSwxODgpO2U9Yy5jO2EuYltlLmddPT0xP0RzYihhLmEsYyk6YS5iW2UuZ109PTI/KGEuYltlLmddPTEpOmlVYyhhLGUpfX1cbmZ1bmN0aW9uIFY5YihhLGIpe3ZhciBjLGQsZTtlPW5ldyBTa2IoYi5nYygpKTtmb3IoZD1iLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjg2KTtjLmM9PWMuZj9LOWIoYSxjLGMuYyk6TDliKGEsYyl8fChlLmNbZS5jLmxlbmd0aF09Yyx0cnVlKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIElaYyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtoPWEucitiO2Eucis9YjthLmQrPWM7ZD1jL2Eubi5jLmxlbmd0aDtlPTA7Zm9yKGc9bmV3IG9sYihhLm4pO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyMTEpO1JaYyhmLGgsZCxlKTsrK2V9fVxuZnVuY3Rpb24gdEViKGEpe3ZhciBiLGMsZDt6d2IoYS5iLmEpO2EuYT1LQyhQTSxVaGUsNTcsYS5jLmMuYS5iLmMubGVuZ3RoLDAsMSk7Yj0wO2ZvcihkPW5ldyBvbGIoYS5jLmMuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNTcpO2MuZj1iKyt9fVxuZnVuY3Rpb24gUlZiKGEpe3ZhciBiLGMsZDt6d2IoYS5iLmEpO2EuYT1LQyhJUCxVaGUsODEsYS5jLmEuYS5iLmMubGVuZ3RoLDAsMSk7Yj0wO2ZvcihkPW5ldyBvbGIoYS5jLmEuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksODEpO2MuaT1iKyt9fVxuZnVuY3Rpb24gUDFjKGEsYixjKXt2YXIgZDtPZGQoYywnU2hyaW5raW5nIHRyZWUgY29tcGFjdGlvbicsMSk7aWYoQ2NiKEREKHZOYihiLChYTmIoKSxWTmIpKSkpKXtOMWMoYSxiLmYpO0lOYihiLmYsKGQ9Yi5jLGQpKX1lbHNle0lOYihiLmYsYi5jKX1RZGQoYyl9XG5mdW5jdGlvbiBtcihhKXt2YXIgYjtiPWdyKGEpO2lmKCFRcihhKSl7dGhyb3cgdmJiKG5ldyBxY2IoJ3Bvc2l0aW9uICgwKSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgcmVtYWluZWQgKCcrYisnKScpKX1yZXR1cm4gUnIoYSl9XG5mdW5jdGlvbiBoTmIoYixjLGQpe3ZhciBlO3RyeXtyZXR1cm4gWU1iKGIsYytiLmosZCtiLmspfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXtlPWE7dGhyb3cgdmJiKG5ldyBxY2IoZS5nK0dsZStjK1NoZStkKycpLicpKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBpTmIoYixjLGQpe3ZhciBlO3RyeXtyZXR1cm4gWk1iKGIsYytiLmosZCtiLmspfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXtlPWE7dGhyb3cgdmJiKG5ldyBxY2IoZS5nK0dsZStjK1NoZStkKycpLicpKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBqTmIoYixjLGQpe3ZhciBlO3RyeXtyZXR1cm4gJE1iKGIsYytiLmosZCtiLmspfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXtlPWE7dGhyb3cgdmJiKG5ldyBxY2IoZS5nK0dsZStjK1NoZStkKycpLicpKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBzNWIoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiBVY2QoKSxUY2Q7Y2FzZSA0OnJldHVybiBVY2QoKSxBY2Q7Y2FzZSAzOnJldHVybiBVY2QoKSx6Y2Q7Y2FzZSAyOnJldHVybiBVY2QoKSxSY2Q7ZGVmYXVsdDpyZXR1cm4gVWNkKCksU2NkO319XG5mdW5jdGlvbiBjamMoYSxiLGMpe2lmKGIuaz09KGowYigpLGgwYikmJmMuaz09ZzBiKXthLmQ9X2ljKGIsKFVjZCgpLFJjZCkpO2EuYj1faWMoYixBY2QpfWlmKGMuaz09aDBiJiZiLms9PWcwYil7YS5kPV9pYyhjLChVY2QoKSxBY2QpKTthLmI9X2ljKGMsUmNkKX19XG5mdW5jdGlvbiBnamMoYSxiKXt2YXIgYyxkLGU7ZT1WX2IoYSxiKTtmb3IoZD1lLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTEpO2lmKHZOYihjLCh3dGMoKSxndGMpKSE9bnVsbHx8YTFiKG5ldyBiMWIoYy5iKSkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBRWmMoYSxiKXtkbGQoYixhLmUrYS5kKyhhLmMuYy5sZW5ndGg9PTA/MDphLmIpKTtlbGQoYixhLmYpO2EuYT0kd25kLk1hdGgubWF4KGEuYSxiLmYpO2EuZCs9Yi5nKyhhLmMuYy5sZW5ndGg9PTA/MDphLmIpO0VrYihhLmMsYik7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBYWmMoYSxiLGMpe3ZhciBkLGUsZixnO2c9MDtkPWMvYS5hLmMubGVuZ3RoO2ZvcihmPW5ldyBvbGIoYS5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTg3KTtPWmMoZSxlLnMsZS50K2cqZCk7SVpjKGUsYS5kLWUucitiLGQpOysrZ319XG5mdW5jdGlvbiBINGIoYSl7dmFyIGIsYyxkLGUsZjtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDI5KTtiPTA7Zm9yKGY9bmV3IG9sYihjLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7ZS5wPWIrK319fVxuZnVuY3Rpb24gcjZjKGEsYil7dmFyIGMsZCxlLGYsZyxoO2U9Yi5sZW5ndGgtMTtnPTA7aD0wO2ZvcihkPTA7ZDw9ZTtkKyspe2Y9YltkXTtjPWs2YyhlLGQpKng2YygxLWEsZS1kKSp4NmMoYSxkKTtnKz1mLmEqYztoKz1mLmIqY31yZXR1cm4gbmV3IGY3YyhnLGgpfVxuZnVuY3Rpb24ganVkKGEsYil7dmFyIGMsZCxlLGYsZztjPWIuZ2MoKTthLnFpKGEuaStjKTtmPWIuS2MoKTtnPWEuaTthLmkrPWM7Zm9yKGQ9ZztkPGEuaTsrK2Qpe2U9Zi5QYigpO211ZChhLGQsYS5vaShkLGUpKTthLmJpKGQsZSk7YS5jaSgpfXJldHVybiBjIT0wfVxuZnVuY3Rpb24gdHdkKGEsYixjKXt2YXIgZCxlLGY7aWYoYS5laigpKXtkPWEuVmkoKTtmPWEuZmooKTsrK2EuajthLkhpKGQsYS5vaShkLGIpKTtlPWEuWmkoMyxudWxsLGIsZCxmKTshYz8oYz1lKTpjLkVpKGUpfWVsc2V7QXZkKGEsYS5WaSgpLGIpfXJldHVybiBjfVxuZnVuY3Rpb24gV09kKGEsYixjKXt2YXIgZCxlLGY7ZD1CRChxdWQoVktkKGEuYSksYiksODcpO2Y9KGU9ZC5jLEpEKGUsODgpP0JEKGUsMjYpOihqR2QoKSxfRmQpKTsoKGYuRGImNjQpIT0wP3hpZChhLmIsZik6Zik9PWM/S1FkKGQpOk5RZChkLGMpO3JldHVybiBmfVxuZnVuY3Rpb24gRXdiKGEsYixjLGQsZSxmLGcsaCl7dmFyIGksajtpZighZCl7cmV0dXJufWk9ZC5hWzBdOyEhaSYmRXdiKGEsYixjLGksZSxmLGcsaCk7RndiKGEsYyxkLmQsZSxmLGcsaCkmJmIuRmMoZCk7aj1kLmFbMV07ISFqJiZFd2IoYSxiLGMsaixlLGYsZyxoKX1cbmZ1bmN0aW9uIGVBYihhLGIpe3ZhciBjO2lmKCFhLmEpe2M9S0MoVUQsVmplLDI1LDAsMTUsMSk7X3ViKGEuYi5hLG5ldyBpQWIoYykpO2Muc29ydChkY2IoWWxiLnByb3RvdHlwZS50ZSxZbGIsW10pKTthLmE9bmV3IEF2YihjLGEuZCl9cmV0dXJuIHB2YihhLmEsYil9XG5mdW5jdGlvbiBZTWIoYixjLGQpe3RyeXtyZXR1cm4gQmJiKF9NYihiLGMsZCksMSl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwzMjApKXt0aHJvdyB2YmIobmV3IHFjYihEbGUrYi5vKycqJytiLnArRWxlK2MrU2hlK2QrRmxlKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gWk1iKGIsYyxkKXt0cnl7cmV0dXJuIEJiYihfTWIoYixjLGQpLDApfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMzIwKSl7dGhyb3cgdmJiKG5ldyBxY2IoRGxlK2IubysnKicrYi5wK0VsZStjK1NoZStkK0ZsZSkpfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uICRNYihiLGMsZCl7dHJ5e3JldHVybiBCYmIoX01iKGIsYyxkKSwyKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDMyMCkpe3Rocm93IHZiYihuZXcgcWNiKERsZStiLm8rJyonK2IucCtFbGUrYytTaGUrZCtGbGUpKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBOeWQoYixjKXtpZihiLmc9PS0xKXt0aHJvdyB2YmIobmV3IFlkYil9Yi5taigpO3RyeXtiLmQuX2MoYi5nLGMpO2IuZj1iLmQuan1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDczKSl7dGhyb3cgdmJiKG5ldyBBcGIpfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIHJKYyhhLGIsYyl7T2RkKGMsJ0xpbmVhciBzZWdtZW50cyBub2RlIHBsYWNlbWVudCcsMSk7YS5iPUJEKHZOYihiLCh3dGMoKSxvdGMpKSwzMDQpO3NKYyhhLGIpO25KYyhhLGIpO2tKYyhhLGIpO3FKYyhhKTthLmE9bnVsbDthLmI9bnVsbDtRZGQoYyl9XG5mdW5jdGlvbiBFZShhLGIpe3ZhciBjLGQsZSxmO2Y9YS5nYygpO2IubGVuZ3RoPGYmJihiPWVDYihuZXcgQXJyYXkoZiksYikpO2U9YjtkPWEuS2MoKTtmb3IoYz0wO2M8ZjsrK2Mpe05DKGUsYyxkLlBiKCkpfWIubGVuZ3RoPmYmJk5DKGIsZixudWxsKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEx1KGEsYil7dmFyIGMsZDtkPWEuZ2MoKTtpZihiPT1udWxsKXtmb3IoYz0wO2M8ZDtjKyspe2lmKGEuWGIoYyk9PW51bGwpe3JldHVybiBjfX19ZWxzZXtmb3IoYz0wO2M8ZDtjKyspe2lmKHBiKGIsYS5YYihjKSkpe3JldHVybiBjfX19cmV0dXJuIC0xfVxuZnVuY3Rpb24gSmQoYSxiKXt2YXIgYyxkLGU7Yz1iLmNkKCk7ZT1iLmRkKCk7ZD1hLnhjKGMpO2lmKCEoUEQoZSk9PT1QRChkKXx8ZSE9bnVsbCYmcGIoZSxkKSkpe3JldHVybiBmYWxzZX1pZihkPT1udWxsJiYhYS5fYihjKSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gWUMoYSxiKXt2YXIgYyxkLGU7aWYoYjw9MjIpe2M9YS5sJigxPDxiKS0xO2Q9ZT0wfWVsc2UgaWYoYjw9NDQpe2M9YS5sO2Q9YS5tJigxPDxiLTIyKS0xO2U9MH1lbHNle2M9YS5sO2Q9YS5tO2U9YS5oJigxPDxiLTQ0KS0xfXJldHVybiBUQyhjLGQsZSl9XG5mdW5jdGlvbiB5S2IoYSxiKXtzd2l0Y2goYi5nKXtjYXNlIDE6cmV0dXJuIGEuZi5uLmQrYS50O2Nhc2UgMzpyZXR1cm4gYS5mLm4uYSthLnQ7Y2FzZSAyOnJldHVybiBhLmYubi5jK2EucztjYXNlIDQ6cmV0dXJuIGEuZi5uLmIrYS5zO2RlZmF1bHQ6cmV0dXJuIDA7fX1cbmZ1bmN0aW9uIGFMYihhLGIpe3ZhciBjLGQ7ZD1iLmM7Yz1iLmE7c3dpdGNoKGEuYi5nKXtjYXNlIDA6Yy5kPWEuZS1kLmEtZC5kO2JyZWFrO2Nhc2UgMTpjLmQrPWEuZTticmVhaztjYXNlIDI6Yy5jPWEuZS1kLmEtZC5kO2JyZWFrO2Nhc2UgMzpjLmM9YS5lK2QuZDt9fVxuZnVuY3Rpb24gWk9iKGEsYixjLGQpe3ZhciBlLGY7dGhpcy5hPWI7dGhpcy5jPWQ7ZT1hLmE7WU9iKHRoaXMsbmV3IGY3YygtZS5jLC1lLmQpKTtQNmModGhpcy5iLGMpO2Y9ZC8yO2IuYT9iN2ModGhpcy5iLDAsZik6YjdjKHRoaXMuYixmLDApO0VrYihhLmMsdGhpcyl9XG5mdW5jdGlvbiBpWGMoKXtpWGM9Y2NiO2hYYz1uZXcga1hjKGFuZSwwKTtmWGM9bmV3IGtYYyhWbmUsMSk7Z1hjPW5ldyBrWGMoJ0VER0VfTEVOR1RIX0JZX1BPU0lUSU9OJywyKTtlWGM9bmV3IGtYYygnQ1JPU1NJTkdfTUlOSU1JWkFUSU9OX0JZX1BPU0lUSU9OJywzKX1cbmZ1bmN0aW9uIFdxZChhLGIpe3ZhciBjLGQ7Yz1CRChvbyhhLmcsYiksMzMpO2lmKGMpe3JldHVybiBjfWQ9QkQob28oYS5qLGIpLDExOCk7aWYoZCl7cmV0dXJuIGR9dGhyb3cgdmJiKG5ldyBjcWQoJ1JlZmVyZW5jZWQgc2hhcGUgZG9lcyBub3QgZXhpc3Q6ICcrYikpfVxuZnVuY3Rpb24gclRiKGEsYil7aWYoYS5jPT1iKXtyZXR1cm4gYS5kfWVsc2UgaWYoYS5kPT1iKXtyZXR1cm4gYS5jfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoXCJOb2RlICdvbmUnIG11c3QgYmUgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgb2YgZWRnZSAnZWRnZScuXCIpKX19XG5mdW5jdGlvbiBUTWMoYSxiKXtpZihhLmMuaT09Yil7cmV0dXJuIGEuZC5pfWVsc2UgaWYoYS5kLmk9PWIpe3JldHVybiBhLmMuaX1lbHNle3Rocm93IHZiYihuZXcgV2RiKCdOb2RlICcrYisnIGlzIG5laXRoZXIgc291cmNlIG5vciB0YXJnZXQgb2YgZWRnZSAnK2EpKX19XG5mdW5jdGlvbiBfbGMoYSxiKXt2YXIgYztzd2l0Y2goYi5nKXtjYXNlIDI6Y2FzZSA0OmM9YS5hO2EuYy5kLm4uYjxjLmQubi5iJiYoYz1hLmMpO2FtYyhhLGIsKEFqYygpLHpqYyksYyk7YnJlYWs7Y2FzZSAxOmNhc2UgMzphbWMoYSxiLChBamMoKSx3amMpLG51bGwpO319XG5mdW5jdGlvbiBzbWMoYSxiLGMsZCxlLGYpe3ZhciBnLGgsaSxqLGs7Zz1xbWMoYixjLGYpO2g9Yz09KFVjZCgpLEFjZCl8fGM9PVRjZD8tMToxO2o9YVtjLmddO2ZvcihrPTA7azxqLmxlbmd0aDtrKyspe2k9altrXTtpPjAmJihpKz1lKTtqW2tdPWc7Zys9aCooaStkKX19XG5mdW5jdGlvbiBVb2MoYSl7dmFyIGIsYyxkO2Q9YS5mO2Eubj1LQyhVRCxWamUsMjUsZCwxNSwxKTthLmQ9S0MoVUQsVmplLDI1LGQsMTUsMSk7Zm9yKGI9MDtiPGQ7YisrKXtjPUJEKElrYihhLmMuYixiKSwyOSk7YS5uW2JdPVJvYyhhLGMpO2EuZFtiXT1Rb2MoYSxjKX19XG5mdW5jdGlvbiB6amQoYSxiKXt2YXIgYyxkLGU7ZT0wO2ZvcihkPTI7ZDxiO2Q8PD0xKXsoYS5EYiZkKSE9MCYmKytlfWlmKGU9PTApe2ZvcihjPWI8PD0xO2M8PTEyODtjPDw9MSl7aWYoKGEuRGImYykhPTApe3JldHVybiAwfX1yZXR1cm4gLTF9ZWxzZXtyZXR1cm4gZX19XG5mdW5jdGlvbiBzM2QoYSxiKXt2YXIgYyxkLGUsZixnO2c9UzZkKGEuZS5UZygpLGIpO2Y9bnVsbDtjPUJEKGEuZywxMTkpO2ZvcihlPTA7ZTxhLmk7KytlKXtkPWNbZV07aWYoZy5ybChkLmFrKCkpKXshZiYmKGY9bmV3IHl1ZCk7d3RkKGYsZCl9fSEhZiYmWXhkKGEsZil9XG5mdW5jdGlvbiBIOWQoYSl7dmFyIGIsYyxkO2lmKCFhKXJldHVybiBudWxsO2lmKGEuZGMoKSlyZXR1cm4gJyc7ZD1uZXcgSGZiO2ZvcihjPWEuS2MoKTtjLk9iKCk7KXtiPWMuUGIoKTtFZmIoZCxHRChiKSk7ZC5hKz0nICd9cmV0dXJuIGxjYihkLGQuYS5sZW5ndGgtMSl9XG5mdW5jdGlvbiBUeShhLGIsYyl7dmFyIGQsZSxmLGcsaDtVeShhKTtmb3IoZT0oYS5rPT1udWxsJiYoYS5rPUtDKF9JLG5pZSw3OCwwLDAsMSkpLGEuayksZj0wLGc9ZS5sZW5ndGg7ZjxnOysrZil7ZD1lW2ZdO1R5KGQsYiwnXFx0JytjKX1oPWEuZjshIWgmJlR5KGgsYixjKX1cbmZ1bmN0aW9uIExDKGEsYil7dmFyIGM9bmV3IEFycmF5KGIpO3ZhciBkO3N3aXRjaChhKXtjYXNlIDE0OmNhc2UgMTU6ZD0wO2JyZWFrO2Nhc2UgMTY6ZD1mYWxzZTticmVhaztkZWZhdWx0OnJldHVybiBjO31mb3IodmFyIGU9MDtlPGI7KytlKXtjW2VdPWR9cmV0dXJuIGN9XG5mdW5jdGlvbiBQRGIoYSl7dmFyIGIsYyxkO2ZvcihjPW5ldyBvbGIoYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw1Nyk7Yi5jLiRiKCl9ZmFkKGEuZCk/KGQ9YS5hLmMpOihkPWEuYS5kKTtIa2IoZCxuZXcgZEViKGEpKTthLmMuTWUoYSk7UURiKGEpfVxuZnVuY3Rpb24gc1JiKGEpe3ZhciBiLGMsZCxlO2ZvcihjPW5ldyBvbGIoYS5lLmMpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyODIpO2ZvcihlPW5ldyBvbGIoYi5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksNDQ3KTtsUmIoZCl9Y1JiKGIpfX1cbmZ1bmN0aW9uIGEkYyhhKXt2YXIgYixjLGQsZSxmO2Q9MDtmPTA7ZT0wO2ZvcihjPW5ldyBvbGIoYS5hKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTg3KTtmPSR3bmQuTWF0aC5tYXgoZixiLnIpO2QrPWIuZCsoZT4wP2EuYzowKTsrK2V9YS5iPWQ7YS5kPWZ9XG5mdW5jdGlvbiBCWmMoYSxiKXt2YXIgYyxkLGUsZixnO2Q9MDtlPTA7Yz0wO2ZvcihnPW5ldyBvbGIoYik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDIwMCk7ZD0kd25kLk1hdGgubWF4KGQsZi5lKTtlKz1mLmIrKGM+MD9hLmc6MCk7KytjfWEuYz1lO2EuZD1kfVxuZnVuY3Rpb24gQUhiKGEsYil7dmFyIGM7Yz1PQyhHQyhVRCwxKSxWamUsMjUsMTUsW3pIYihhLChnSGIoKSxkSGIpLGIpLHpIYihhLGVIYixiKSx6SGIoYSxmSGIsYildKTtpZihhLmYpe2NbMF09JHduZC5NYXRoLm1heChjWzBdLGNbMl0pO2NbMl09Y1swXX1yZXR1cm4gY31cbmZ1bmN0aW9uIGxOYihiLGMsZCl7dmFyIGU7dHJ5e2FOYihiLGMrYi5qLGQrYi5rLGZhbHNlLHRydWUpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXtlPWE7dGhyb3cgdmJiKG5ldyBxY2IoZS5nK0dsZStjK1NoZStkKycpLicpKX1lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBtTmIoYixjLGQpe3ZhciBlO3RyeXthTmIoYixjK2IuaixkK2Iuayx0cnVlLGZhbHNlKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDczKSl7ZT1hO3Rocm93IHZiYihuZXcgcWNiKGUuZytHbGUrYytTaGUrZCsnKS4nKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gZDViKGEpe3ZhciBiO2lmKCF3TmIoYSwoTnljKCkseHhjKSkpe3JldHVybn1iPUJEKHZOYihhLHh4YyksMjEpO2lmKGIuSGMoKEhiZCgpLHpiZCkpKXtiLk1jKHpiZCk7Yi5GYyhCYmQpfWVsc2UgaWYoYi5IYyhCYmQpKXtiLk1jKEJiZCk7Yi5GYyh6YmQpfX1cbmZ1bmN0aW9uIGU1YihhKXt2YXIgYjtpZighd05iKGEsKE55YygpLHh4YykpKXtyZXR1cm59Yj1CRCh2TmIoYSx4eGMpLDIxKTtpZihiLkhjKChIYmQoKSxHYmQpKSl7Yi5NYyhHYmQpO2IuRmMoRWJkKX1lbHNlIGlmKGIuSGMoRWJkKSl7Yi5NYyhFYmQpO2IuRmMoR2JkKX19XG5mdW5jdGlvbiB1ZGMoYSxiLGMpe09kZChjLCdTZWxmLUxvb3Agb3JkZXJpbmcnLDEpO01BYihOQWIoSkFiKEpBYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYi5iLDE2KSksbmV3IHlkYyksbmV3IEFkYyksbmV3IENkYyksbmV3IEVkYyksbmV3IEdkYyhhKSk7UWRkKGMpfVxuZnVuY3Rpb24gaWtjKGEsYixjLGQpe3ZhciBlLGY7Zm9yKGU9YjtlPGEuYy5sZW5ndGg7ZSsrKXtmPSh0Q2IoZSxhLmMubGVuZ3RoKSxCRChhLmNbZV0sMTEpKTtpZihjLk1iKGYpKXtkLmNbZC5jLmxlbmd0aF09Zn1lbHNle3JldHVybiBlfX1yZXR1cm4gYS5jLmxlbmd0aH1cbmZ1bmN0aW9uIEttYyhhLGIsYyxkKXt2YXIgZSxmLGcsaDthLmE9PW51bGwmJk5tYyhhLGIpO2c9Yi5iLmouYy5sZW5ndGg7Zj1jLmQucDtoPWQuZC5wO2U9aC0xO2U8MCYmKGU9Zy0xKTtyZXR1cm4gZjw9ZT9hLmFbZV0tYS5hW2ZdOmEuYVtnLTFdLWEuYVtmXSthLmFbZV19XG5mdW5jdGlvbiBlaGQoYSl7dmFyIGIsYztpZighYS5iKXthLmI9UXUoQkQoYS5mLDMzKS5BZygpLmkpO2ZvcihjPW5ldyBGeWQoQkQoYS5mLDMzKS5BZygpKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChEeWQoYyksMTM3KTtFa2IoYS5iLG5ldyBkaGQoYikpfX1yZXR1cm4gYS5ifVxuZnVuY3Rpb24gZmhkKGEpe3ZhciBiLGM7aWYoIWEuZSl7YS5lPVF1KFlvZChCRChhLmYsMzMpKS5pKTtmb3IoYz1uZXcgRnlkKFlvZChCRChhLmYsMzMpKSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDExOCk7RWtiKGEuZSxuZXcgdGhkKGIpKX19cmV0dXJuIGEuZX1cbmZ1bmN0aW9uIGFoZChhKXt2YXIgYixjO2lmKCFhLmEpe2EuYT1RdShWb2QoQkQoYS5mLDMzKSkuaSk7Zm9yKGM9bmV3IEZ5ZChWb2QoQkQoYS5mLDMzKSkpO2MuZSE9Yy5pLmdjKCk7KXtiPUJEKER5ZChjKSwzMyk7RWtiKGEuYSxuZXcgaGhkKGEsYikpfX1yZXR1cm4gYS5hfVxuZnVuY3Rpb24gZEtkKGIpe3ZhciBjO2lmKCFiLkMmJihiLkQhPW51bGx8fGIuQiE9bnVsbCkpe2M9ZUtkKGIpO2lmKGMpe2IueWsoYyl9ZWxzZXt0cnl7Yi55ayhudWxsKX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSw2MCkpdGhyb3cgdmJiKGEpfX19cmV0dXJuIGIuQ31cbmZ1bmN0aW9uIEdKYihhKXtzd2l0Y2goYS5xLmcpe2Nhc2UgNTpESmIoYSwoVWNkKCksQWNkKSk7REpiKGEsUmNkKTticmVhaztjYXNlIDQ6RUpiKGEsKFVjZCgpLEFjZCkpO0VKYihhLFJjZCk7YnJlYWs7ZGVmYXVsdDpGSmIoYSwoVWNkKCksQWNkKSk7RkpiKGEsUmNkKTt9fVxuZnVuY3Rpb24gUEtiKGEpe3N3aXRjaChhLnEuZyl7Y2FzZSA1Ok1LYihhLChVY2QoKSx6Y2QpKTtNS2IoYSxUY2QpO2JyZWFrO2Nhc2UgNDpOS2IoYSwoVWNkKCksemNkKSk7TktiKGEsVGNkKTticmVhaztkZWZhdWx0Ok9LYihhLChVY2QoKSx6Y2QpKTtPS2IoYSxUY2QpO319XG5mdW5jdGlvbiBFWGIoYSxiKXt2YXIgYyxkLGU7ZT1uZXcgZDdjO2ZvcihkPWEuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwzNyk7dVhiKGMsZS5hLDApO2UuYSs9Yy5mLmErYjtlLmI9JHduZC5NYXRoLm1heChlLmIsYy5mLmIpfWUuYj4wJiYoZS5iKz1iKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIEdYYihhLGIpe3ZhciBjLGQsZTtlPW5ldyBkN2M7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDM3KTt1WGIoYywwLGUuYik7ZS5iKz1jLmYuYitiO2UuYT0kd25kLk1hdGgubWF4KGUuYSxjLmYuYSl9ZS5hPjAmJihlLmErPWIpO3JldHVybiBlfVxuZnVuY3Rpb24gZF9iKGEpe3ZhciBiLGMsZDtkPU9oZTtmb3IoYz1uZXcgb2xiKGEuYSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDEwKTt3TmIoYiwod3RjKCksWnNjKSkmJihkPSR3bmQuTWF0aC5taW4oZCxCRCh2TmIoYixac2MpLDE5KS5hKSl9cmV0dXJuIGR9XG5mdW5jdGlvbiBwSGMoYSxiKXt2YXIgYyxkO2lmKGIubGVuZ3RoPT0wKXtyZXR1cm4gMH1jPU5IYyhhLmEsYlswXSwoVWNkKCksVGNkKSk7Yys9TkhjKGEuYSxiW2IubGVuZ3RoLTFdLHpjZCk7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKyl7Yys9cUhjKGEsZCxiKX1yZXR1cm4gY31cbmZ1bmN0aW9uIHZRYygpe2hRYygpO3RoaXMuYz1uZXcgUmtiO3RoaXMuaT1uZXcgUmtiO3RoaXMuZT1uZXcgenNiO3RoaXMuZj1uZXcgenNiO3RoaXMuZz1uZXcgenNiO3RoaXMuaj1uZXcgUmtiO3RoaXMuYT1uZXcgUmtiO3RoaXMuYj1uZXcgTHFiO3RoaXMuaz1uZXcgTHFifVxuZnVuY3Rpb24gYUtkKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09Nil7cmV0dXJuIGEuQ2IuaWgoYSw1LG81LGIpfXJldHVybiBkPXpVZChCRChYS2QoKGM9QkQoQWpkKGEsMTYpLDI2KSwhYz9hLnpoKCk6YyksYS5EYj4+MTYpLDE4KSksYS5DYi5paChhLGQubixkLmYsYil9XG5mdW5jdGlvbiBXeihhKXtSeigpO3ZhciBiPWEuZTtpZihiJiZiLnN0YWNrKXt2YXIgYz1iLnN0YWNrO3ZhciBkPWIrJ1xcbic7Yy5zdWJzdHJpbmcoMCxkLmxlbmd0aCk9PWQmJihjPWMuc3Vic3RyaW5nKGQubGVuZ3RoKSk7cmV0dXJuIGMuc3BsaXQoJ1xcbicpfXJldHVybiBbXX1cbmZ1bmN0aW9uIGplYihhKXt2YXIgYjtiPShxZWIoKSxwZWIpO3JldHVybiBiW2E+Pj4yOF18YlthPj4yNCYxNV08PDR8YlthPj4yMCYxNV08PDh8YlthPj4xNiYxNV08PDEyfGJbYT4+MTImMTVdPDwxNnxiW2E+PjgmMTVdPDwyMHxiW2E+PjQmMTVdPDwyNHxiW2EmMTVdPDwyOH1cbmZ1bmN0aW9uIF9qYihhKXt2YXIgYixjLGQ7aWYoYS5iIT1hLmMpe3JldHVybn1kPWEuYS5sZW5ndGg7Yz1nZWIoJHduZC5NYXRoLm1heCg4LGQpKTw8MTtpZihhLmIhPTApe2I9X0JiKGEuYSxjKTskamIoYSxiLGQpO2EuYT1iO2EuYj0wfWVsc2V7ZENiKGEuYSxjKX1hLmM9ZH1cbmZ1bmN0aW9uIERLYihhLGIpe3ZhciBjO2M9YS5iO3JldHVybiBjLlhlKChZOWMoKSxzOWMpKT9jLkhmKCk9PShVY2QoKSxUY2QpPy1jLnJmKCkuYS1FZGIoRUQoYy5XZShzOWMpKSk6YitFZGIoRUQoYy5XZShzOWMpKSk6Yy5IZigpPT0oVWNkKCksVGNkKT8tYy5yZigpLmE6Yn1cbmZ1bmN0aW9uIFBfYihhKXt2YXIgYjtpZihhLmIuYy5sZW5ndGghPTAmJiEhQkQoSWtiKGEuYiwwKSw3MCkuYSl7cmV0dXJuIEJEKElrYihhLmIsMCksNzApLmF9Yj1KWmIoYSk7aWYoYiE9bnVsbCl7cmV0dXJuIGJ9cmV0dXJuICcnKyghYS5jPy0xOkprYihhLmMuYSxhLDApKX1cbmZ1bmN0aW9uIEMwYihhKXt2YXIgYjtpZihhLmYuYy5sZW5ndGghPTAmJiEhQkQoSWtiKGEuZiwwKSw3MCkuYSl7cmV0dXJuIEJEKElrYihhLmYsMCksNzApLmF9Yj1KWmIoYSk7aWYoYiE9bnVsbCl7cmV0dXJuIGJ9cmV0dXJuICcnKyghYS5pPy0xOkprYihhLmkuaixhLDApKX1cbmZ1bmN0aW9uIE9nYyhhLGIpe3ZhciBjLGQ7aWYoYjwwfHxiPj1hLmdjKCkpe3JldHVybiBudWxsfWZvcihjPWI7YzxhLmdjKCk7KytjKXtkPUJEKGEuWGIoYyksMTI4KTtpZihjPT1hLmdjKCktMXx8IWQubyl7cmV0dXJuIG5ldyB2Z2QobWViKGMpLGQpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHVvYyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtmPWEuYztoPWM/YjphO2Q9Yz9hOmI7Zm9yKGU9aC5wKzE7ZTxkLnA7KytlKXtnPUJEKElrYihmLmEsZSksMTApO2lmKCEoZy5rPT0oajBiKCksZDBiKXx8dm9jKGcpKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIHUkYyhhKXt2YXIgYixjLGQsZSxmO2Y9MDtlPVFqZTtkPTA7Zm9yKGM9bmV3IG9sYihhLmEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxODcpO2YrPWIucisoZD4wP2EuYzowKTtlPSR3bmQuTWF0aC5tYXgoZSxiLmQpOysrZH1hLmU9ZjthLmI9ZX1cbmZ1bmN0aW9uIHNoZChhKXt2YXIgYixjO2lmKCFhLmIpe2EuYj1RdShCRChhLmYsMTE4KS5BZygpLmkpO2ZvcihjPW5ldyBGeWQoQkQoYS5mLDExOCkuQWcoKSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDEzNyk7RWtiKGEuYixuZXcgZGhkKGIpKX19cmV0dXJuIGEuYn1cbmZ1bmN0aW9uIEN0ZChhLGIpe3ZhciBjLGQsZTtpZihiLmRjKCkpe3JldHVybiBMQ2QoKSxMQ2QoKSxLQ2R9ZWxzZXtjPW5ldyB6eWQoYSxiLmdjKCkpO2ZvcihlPW5ldyBGeWQoYSk7ZS5lIT1lLmkuZ2MoKTspe2Q9RHlkKGUpO2IuSGMoZCkmJnd0ZChjLGQpfXJldHVybiBjfX1cbmZ1bmN0aW9uIGJrZChhLGIsYyxkKXtpZihiPT0wKXtyZXR1cm4gZD8oIWEubyYmKGEubz1uZXcgZElkKChUaGQoKSxRaGQpLFMyLGEsMCkpLGEubyk6KCFhLm8mJihhLm89bmV3IGRJZCgoVGhkKCksUWhkKSxTMixhLDApKSxGQWQoYS5vKSl9cmV0dXJuIGZpZChhLGIsYyxkKX1cbmZ1bmN0aW9uIFRuZChhKXt2YXIgYixjO2lmKGEucmIpe2ZvcihiPTAsYz1hLnJiLmk7YjxjOysrYil7Q21kKHF1ZChhLnJiLGIpKX19aWYoYS52Yil7Zm9yKGI9MCxjPWEudmIuaTtiPGM7KytiKXtDbWQocXVkKGEudmIsYikpfX11MWQoKE82ZCgpLE02ZCksYSk7YS5CYnw9MX1cbmZ1bmN0aW9uIF9uZChhLGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4pe2FvZChhLGIsZCxudWxsLGUsZixnLGgsaSxqLG0sdHJ1ZSxuKTtDVWQoYSxrKTtKRChhLkNiLDg4KSYmWE1kKCRLZChCRChhLkNiLDg4KSksMik7ISFjJiZEVWQoYSxjKTtFVWQoYSxsKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIGpaZChiKXt2YXIgYyxkO2lmKGI9PW51bGwpe3JldHVybiBudWxsfWQ9MDt0cnl7ZD1JY2IoYixSaWUsT2hlKSZhamV9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMjcpKXtjPXJmYihiKTtkPWNbMF19ZWxzZSB0aHJvdyB2YmIoYSl9cmV0dXJuIGJkYihkKX1cbmZ1bmN0aW9uIGtaZChiKXt2YXIgYyxkO2lmKGI9PW51bGwpe3JldHVybiBudWxsfWQ9MDt0cnl7ZD1JY2IoYixSaWUsT2hlKSZhamV9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMjcpKXtjPXJmYihiKTtkPWNbMF19ZWxzZSB0aHJvdyB2YmIoYSl9cmV0dXJuIGJkYihkKX1cbmZ1bmN0aW9uIGJEKGEsYil7dmFyIGMsZCxlO2U9YS5oLWIuaDtpZihlPDApe3JldHVybiBmYWxzZX1jPWEubC1iLmw7ZD1hLm0tYi5tKyhjPj4yMik7ZSs9ZD4+MjI7aWYoZTwwKXtyZXR1cm4gZmFsc2V9YS5sPWMmRWplO2EubT1kJkVqZTthLmg9ZSZGamU7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBGd2IoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaTtpZihiLkFlKCkmJihpPWEuYS51ZShjLGQpLGk8MHx8IWUmJmk9PTApKXtyZXR1cm4gZmFsc2V9aWYoYi5CZSgpJiYoaD1hLmEudWUoYyxmKSxoPjB8fCFnJiZoPT0wKSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gVmNjKGEsYil7T2NjKCk7dmFyIGM7Yz1hLmouZy1iLmouZztpZihjIT0wKXtyZXR1cm4gMH1zd2l0Y2goYS5qLmcpe2Nhc2UgMjpyZXR1cm4gWWNjKGIsTmNjKS1ZY2MoYSxOY2MpO2Nhc2UgNDpyZXR1cm4gWWNjKGEsTWNjKS1ZY2MoYixNY2MpO31yZXR1cm4gMH1cbmZ1bmN0aW9uIFRxYyhhKXtzd2l0Y2goYS5nKXtjYXNlIDA6cmV0dXJuIE1xYztjYXNlIDE6cmV0dXJuIE5xYztjYXNlIDI6cmV0dXJuIE9xYztjYXNlIDM6cmV0dXJuIFBxYztjYXNlIDQ6cmV0dXJuIFFxYztjYXNlIDU6cmV0dXJuIFJxYztkZWZhdWx0OnJldHVybiBudWxsO319XG5mdW5jdGlvbiBFbmQoYSxiLGMpe3ZhciBkLGU7ZD0oZT1uZXcgclVkLHlJZChlLGIpLHBuZChlLGMpLHd0ZCgoIWEuYyYmKGEuYz1uZXcgY1VkKHA1LGEsMTIsMTApKSxhLmMpLGUpLGUpO0FJZChkLDApO0RJZChkLDEpO0NJZChkLHRydWUpO0JJZChkLHRydWUpO3JldHVybiBkfVxuZnVuY3Rpb24gdHVkKGEsYil7dmFyIGMsZDtpZihiPj1hLmkpdGhyb3cgdmJiKG5ldyAkemQoYixhLmkpKTsrK2EuajtjPWEuZ1tiXTtkPWEuaS1iLTE7ZD4wJiYkZmIoYS5nLGIrMSxhLmcsYixkKTtOQyhhLmcsLS1hLmksbnVsbCk7YS5maShiLGMpO2EuY2koKTtyZXR1cm4gY31cbmZ1bmN0aW9uIFVJZChhLGIpe3ZhciBjLGQ7aWYoYS5EYj4+MTY9PTE3KXtyZXR1cm4gYS5DYi5paChhLDIxLGM1LGIpfXJldHVybiBkPXpVZChCRChYS2QoKGM9QkQoQWpkKGEsMTYpLDI2KSwhYz9hLnpoKCk6YyksYS5EYj4+MTYpLDE4KSksYS5DYi5paChhLGQubixkLmYsYil9XG5mdW5jdGlvbiBpRGIoYSl7dmFyIGIsYyxkLGU7bW1iKCk7T2tiKGEuYyxhLmEpO2ZvcihlPW5ldyBvbGIoYS5jKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1tbGIoZSk7Zm9yKGM9bmV3IG9sYihhLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw2NzkpO2IuS2UoZCl9fX1cbmZ1bmN0aW9uIHBYYihhKXt2YXIgYixjLGQsZTttbWIoKTtPa2IoYS5jLGEuYSk7Zm9yKGU9bmV3IG9sYihhLmMpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPW1sYihlKTtmb3IoYz1uZXcgb2xiKGEuYik7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDM2OSk7Yi5LZShkKX19fVxuZnVuY3Rpb24gQUdiKGEpe3ZhciBiLGMsZCxlLGY7ZT1PaGU7Zj1udWxsO2ZvcihkPW5ldyBvbGIoYS5kKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjEzKTtpZihjLmQual5jLmUuail7Yj1jLmUuZS1jLmQuZS1jLmE7aWYoYjxlKXtlPWI7Zj1jfX19cmV0dXJuIGZ9XG5mdW5jdGlvbiBPU2IoKXtPU2I9Y2NiO01TYj1uZXcgTnNkKE1tZSwoQmNiKCksZmFsc2UpKTtJU2I9bmV3IE5zZChObWUsMTAwKTtLU2I9KHlUYigpLHdUYik7SlNiPW5ldyBOc2QoT21lLEtTYik7TFNiPW5ldyBOc2QoUG1lLHFtZSk7TlNiPW5ldyBOc2QoUW1lLG1lYihPaGUpKX1cbmZ1bmN0aW9uIHJpYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztqPTA7Zm9yKGU9YS5hW2JdLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtrPUNIYyhkLGMpO2ZvcihpPWsuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwxMSk7UmhiKGEuZixoLG1lYihqKyspKX19fVxuZnVuY3Rpb24gdXFkKGEsYixjKXt2YXIgZCxlLGYsZztpZihjKXtlPWMuYS5sZW5ndGg7ZD1uZXcgWWdlKGUpO2ZvcihnPShkLmItZC5hKSpkLmM8MD8oWGdlKCksV2dlKTpuZXcgc2hlKGQpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDE5KTtSYyhhLGIsVnBkKHRCKGMsZi5hKSkpfX19XG5mdW5jdGlvbiB2cWQoYSxiLGMpe3ZhciBkLGUsZixnO2lmKGMpe2U9Yy5hLmxlbmd0aDtkPW5ldyBZZ2UoZSk7Zm9yKGc9KGQuYi1kLmEpKmQuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoZCk7Zy5PYigpOyl7Zj1CRChnLlBiKCksMTkpO1JjKGEsYixWcGQodEIoYyxmLmEpKSl9fX1cbmZ1bmN0aW9uIEJrYyhhKXtna2MoKTt2YXIgYjtiPUJEKEVlKEVjKGEuayksS0MoRjEsYm5lLDYxLDIsMCwxKSksMTIyKTtLbGIoYiwwLGIubGVuZ3RoLG51bGwpO2lmKGJbMF09PShVY2QoKSxBY2QpJiZiWzFdPT1UY2Qpe05DKGIsMCxUY2QpO05DKGIsMSxBY2QpfXJldHVybiBifVxuZnVuY3Rpb24gSkhjKGEsYixjKXt2YXIgZCxlLGY7ZT1ISGMoYSxiLGMpO2Y9S0hjKGEsZSk7eUhjKGEuYik7Y0ljKGEsYixjKTttbWIoKTtPa2IoZSxuZXcgaEljKGEpKTtkPUtIYyhhLGUpO3lIYyhhLmIpO2NJYyhhLGMsYik7cmV0dXJuIG5ldyB2Z2QobWViKGYpLG1lYihkKSl9XG5mdW5jdGlvbiBqSmMoKXtqSmM9Y2NiO2dKYz1lM2MobmV3IGozYywocVViKCkscFViKSwoUzhiKCksaDhiKSk7aEpjPW5ldyBNc2QoJ2xpbmVhclNlZ21lbnRzLmlucHV0UHJpbycsbWViKDApKTtpSmM9bmV3IE1zZCgnbGluZWFyU2VnbWVudHMub3V0cHV0UHJpbycsbWViKDApKX1cbmZ1bmN0aW9uIHlSYygpe3lSYz1jY2I7dVJjPW5ldyBBUmMoJ1AxX1RSRUVJRklDQVRJT04nLDApO3ZSYz1uZXcgQVJjKCdQMl9OT0RFX09SREVSSU5HJywxKTt3UmM9bmV3IEFSYygnUDNfTk9ERV9QTEFDRU1FTlQnLDIpO3hSYz1uZXcgQVJjKCdQNF9FREdFX1JPVVRJTkcnLDMpfVxuZnVuY3Rpb24gWldjKCl7WldjPWNjYjtVV2M9KFk5YygpLEM5Yyk7WFdjPVQ5YztOV2M9WThjO09XYz1fOGM7UFdjPWI5YztNV2M9VzhjO1FXYz1lOWM7VFdjPXg5YztLV2M9KEhXYygpLHdXYyk7TFdjPXhXYztSV2M9eldjO1NXYz1CV2M7VldjPUNXYztXV2M9RFdjO1lXYz1GV2N9XG5mdW5jdGlvbiByYmQoKXtyYmQ9Y2NiO3FiZD1uZXcgdGJkKCdVTktOT1dOJywwKTtuYmQ9bmV3IHRiZCgnQUJPVkUnLDEpO29iZD1uZXcgdGJkKCdCRUxPVycsMik7cGJkPW5ldyB0YmQoJ0lOTElORScsMyk7bmV3IE1zZCgnb3JnLmVjbGlwc2UuZWxrLmxhYmVsU2lkZScscWJkKX1cbmZ1bmN0aW9uIHJ1ZChhLGIpe3ZhciBjO2lmKGEubmkoKSYmYiE9bnVsbCl7Zm9yKGM9MDtjPGEuaTsrK2Mpe2lmKHBiKGIsYS5nW2NdKSl7cmV0dXJuIGN9fX1lbHNle2ZvcihjPTA7YzxhLmk7KytjKXtpZihQRChhLmdbY10pPT09UEQoYikpe3JldHVybiBjfX19cmV0dXJuIC0xfVxuZnVuY3Rpb24gRFpiKGEsYixjKXt2YXIgZCxlO2lmKGIuYz09KEtBYygpLElBYykmJmMuYz09SEFjKXtyZXR1cm4gLTF9ZWxzZSBpZihiLmM9PUhBYyYmYy5jPT1JQWMpe3JldHVybiAxfWQ9SFpiKGIuYSxhLmEpO2U9SFpiKGMuYSxhLmEpO3JldHVybiBiLmM9PUlBYz9lLWQ6ZC1lfVxuZnVuY3Rpb24gWl9iKGEsYixjKXtpZighIWMmJihiPDB8fGI+Yy5hLmMubGVuZ3RoKSl7dGhyb3cgdmJiKG5ldyBXZGIoJ2luZGV4IG11c3QgYmUgPj0gMCBhbmQgPD0gbGF5ZXIgbm9kZSBjb3VudCcpKX0hIWEuYyYmTGtiKGEuYy5hLGEpO2EuYz1jOyEhYyYmRGtiKGMuYSxiLGEpfVxuZnVuY3Rpb24gcDdiKGEsYil7dmFyIGMsZCxlO2ZvcihkPW5ldyBTcih1cihPX2IoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7ZT1CRChiLktiKGMpLDEwKTtyZXR1cm4gbmV3IGNjKFFiKGUubi5iK2Uuby5iLzIpKX1yZXR1cm4gd2IoKSx3YigpLHZifVxuZnVuY3Rpb24gck1jKGEsYil7dGhpcy5jPW5ldyBMcWI7dGhpcy5hPWE7dGhpcy5iPWI7dGhpcy5kPUJEKHZOYihhLCh3dGMoKSxvdGMpKSwzMDQpO1BEKHZOYihhLChOeWMoKSx5eGMpKSk9PT1QRCgoX3FjKCksWnFjKSk/KHRoaXMuZT1uZXcgYk5jKToodGhpcy5lPW5ldyBXTWMpfVxuZnVuY3Rpb24gJGRkKGEsYil7dmFyIGMsZCxlLGY7Zj0wO2ZvcihkPW5ldyBvbGIoYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDMzKTtmKz0kd25kLk1hdGgucG93KGMuZypjLmYtYiwyKX1lPSR3bmQuTWF0aC5zcXJ0KGYvKGEuYy5sZW5ndGgtMSkpO3JldHVybiBlfVxuZnVuY3Rpb24gYmdkKGEsYil7dmFyIGMsZDtkPW51bGw7aWYoYS5YZSgoWTljKCksTzljKSkpe2M9QkQoYS5XZShPOWMpLDk0KTtjLlhlKGIpJiYoZD1jLldlKGIpKX1kPT1udWxsJiYhIWEueWYoKSYmKGQ9YS55ZigpLldlKGIpKTtkPT1udWxsJiYoZD1Lc2QoYikpO3JldHVybiBkfVxuZnVuY3Rpb24gVnQoYixjKXt2YXIgZCxlO2Q9Yi5aYyhjKTt0cnl7ZT1kLlBiKCk7ZC5RYigpO3JldHVybiBlfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTA5KSl7dGhyb3cgdmJiKG5ldyBxY2IoXCJDYW4ndCByZW1vdmUgZWxlbWVudCBcIitjKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fVxuZnVuY3Rpb24gcUEoYSxiKXt2YXIgYyxkLGU7ZD1uZXcgZUI7ZT1uZXcgZkIoZC5xLmdldEZ1bGxZZWFyKCktbmplLGQucS5nZXRNb250aCgpLGQucS5nZXREYXRlKCkpO2M9cEEoYSxiLGUpO2lmKGM9PTB8fGM8Yi5sZW5ndGgpe3Rocm93IHZiYihuZXcgV2RiKGIpKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIF90YihhLGIpe3ZhciBjLGQsZTt1Q2IoYik7bENiKGIhPWEpO2U9YS5iLmMubGVuZ3RoO2ZvcihkPWIuS2MoKTtkLk9iKCk7KXtjPWQuUGIoKTtFa2IoYS5iLHVDYihjKSl9aWYoZSE9YS5iLmMubGVuZ3RoKXthdWIoYSwwKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBiVGIoKXtiVGI9Y2NiO1ZTYj0oWTljKCksTzhjKTtuZXcgT3NkKEI4YywoQmNiKCksdHJ1ZSkpO1lTYj1ZOGM7WlNiPV84YzskU2I9YjljO1hTYj1XOGM7X1NiPWU5YzthVGI9eDljO1VTYj0oT1NiKCksTVNiKTtTU2I9SlNiO1RTYj1MU2I7V1NiPU5TYjtSU2I9SVNifVxuZnVuY3Rpb24gTVpiKGEsYil7aWYoYj09YS5jKXtyZXR1cm4gYS5kfWVsc2UgaWYoYj09YS5kKXtyZXR1cm4gYS5jfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoXCIncG9ydCcgbXVzdCBiZSBlaXRoZXIgdGhlIHNvdXJjZSBwb3J0IG9yIHRhcmdldCBwb3J0IG9mIHRoZSBlZGdlLlwiKSl9fVxuZnVuY3Rpb24gQzNiKGEsYixjKXt2YXIgZCxlO2U9YS5vO2Q9YS5kO3N3aXRjaChiLmcpe2Nhc2UgMTpyZXR1cm4gLWQuZC1jO2Nhc2UgMzpyZXR1cm4gZS5iK2QuYStjO2Nhc2UgMjpyZXR1cm4gZS5hK2QuYytjO2Nhc2UgNDpyZXR1cm4gLWQuYi1jO2RlZmF1bHQ6cmV0dXJuIDA7fX1cbmZ1bmN0aW9uIEg2YihhLGIsYyxkKXt2YXIgZSxmLGcsaDskX2IoYixCRChkLlhiKDApLDI5KSk7aD1kLmJkKDEsZC5nYygpKTtmb3IoZj1CRChjLktiKGIpLDIwKS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDE3KTtnPWUuYy5pPT1iP2UuZC5pOmUuYy5pO0g2YihhLGcsYyxoKX19XG5mdW5jdGlvbiBYZWMoYSl7dmFyIGI7Yj1uZXcgTHFiO2lmKHdOYihhLCh3dGMoKSx0dGMpKSl7cmV0dXJuIEJEKHZOYihhLHR0YyksODMpfU1BYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5qLDE2KSksbmV3IFplYyksbmV3IF9lYyhiKSk7eU5iKGEsdHRjLGIpO3JldHVybiBifVxuZnVuY3Rpb24gY21kKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09Nil7cmV0dXJuIGEuQ2IuaWgoYSw2LEIyLGIpfXJldHVybiBkPXpVZChCRChYS2QoKGM9QkQoQWpkKGEsMTYpLDI2KSwhYz8oVGhkKCksTGhkKTpjKSxhLkRiPj4xNiksMTgpKSxhLkNiLmloKGEsZC5uLGQuZixiKX1cbmZ1bmN0aW9uIEVvZChhLGIpe3ZhciBjLGQ7aWYoYS5EYj4+MTY9PTcpe3JldHVybiBhLkNiLmloKGEsMSxDMixiKX1yZXR1cm4gZD16VWQoQkQoWEtkKChjPUJEKEFqZChhLDE2KSwyNiksIWM/KFRoZCgpLE5oZCk6YyksYS5EYj4+MTYpLDE4KSksYS5DYi5paChhLGQubixkLmYsYil9XG5mdW5jdGlvbiBscGQoYSxiKXt2YXIgYyxkO2lmKGEuRGI+PjE2PT05KXtyZXR1cm4gYS5DYi5paChhLDksRTIsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhUaGQoKSxQaGQpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gbVFkKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09NSl7cmV0dXJuIGEuQ2IuaWgoYSw5LGg1LGIpfXJldHVybiBkPXpVZChCRChYS2QoKGM9QkQoQWpkKGEsMTYpLDI2KSwhYz8oakdkKCksVkZkKTpjKSxhLkRiPj4xNiksMTgpKSxhLkNiLmloKGEsZC5uLGQuZixiKX1cbmZ1bmN0aW9uIEtIZChhLGIpe3ZhciBjLGQ7aWYoYS5EYj4+MTY9PTMpe3JldHVybiBhLkNiLmloKGEsMCxrNSxiKX1yZXR1cm4gZD16VWQoQkQoWEtkKChjPUJEKEFqZChhLDE2KSwyNiksIWM/KGpHZCgpLE9GZCk6YyksYS5EYj4+MTYpLDE4KSksYS5DYi5paChhLGQubixkLmYsYil9XG5mdW5jdGlvbiBTbmQoYSxiKXt2YXIgYyxkO2lmKGEuRGI+PjE2PT03KXtyZXR1cm4gYS5DYi5paChhLDYsbzUsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhqR2QoKSxjR2QpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gaXJkKCl7dGhpcy5hPW5ldyBicWQ7dGhpcy5nPW5ldyB3bzt0aGlzLmo9bmV3IHdvO3RoaXMuYj1uZXcgTHFiO3RoaXMuZD1uZXcgd287dGhpcy5pPW5ldyB3bzt0aGlzLms9bmV3IExxYjt0aGlzLmM9bmV3IExxYjt0aGlzLmU9bmV3IExxYjt0aGlzLmY9bmV3IExxYn1cbmZ1bmN0aW9uIE1DZChhLGIsYyl7dmFyIGQsZSxmO2M8MCYmKGM9MCk7Zj1hLmk7Zm9yKGU9YztlPGY7ZSsrKXtkPXF1ZChhLGUpO2lmKGI9PW51bGwpe2lmKGQ9PW51bGwpe3JldHVybiBlfX1lbHNlIGlmKFBEKGIpPT09UEQoZCl8fHBiKGIsZCkpe3JldHVybiBlfX1yZXR1cm4gLTF9XG5mdW5jdGlvbiBiMWQoYSxiKXt2YXIgYyxkO2M9Yi5IaChhLmEpO2lmKCFjKXtyZXR1cm4gbnVsbH1lbHNle2Q9R0QoQUFkKCghYy5iJiYoYy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYykpLGMuYiksQXdlKSk7cmV0dXJuIGRmYihCd2UsZCk/dTFkKGEsYktkKGIuSGooKSkpOmR9fVxuZnVuY3Rpb24gcDZkKGEsYil7dmFyIGMsZDtpZihiKXtpZihiPT1hKXtyZXR1cm4gdHJ1ZX1jPTA7Zm9yKGQ9QkQoYiw0OSkuZWgoKTshIWQmJmQhPWI7ZD1kLmVoKCkpe2lmKCsrYz5XamUpe3JldHVybiBwNmQoYSxkKX1pZihkPT1hKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIEhLYihhKXtDS2IoKTtzd2l0Y2goYS5xLmcpe2Nhc2UgNTpFS2IoYSwoVWNkKCksQWNkKSk7RUtiKGEsUmNkKTticmVhaztjYXNlIDQ6RktiKGEsKFVjZCgpLEFjZCkpO0ZLYihhLFJjZCk7YnJlYWs7ZGVmYXVsdDpHS2IoYSwoVWNkKCksQWNkKSk7R0tiKGEsUmNkKTt9fVxuZnVuY3Rpb24gTEtiKGEpe0NLYigpO3N3aXRjaChhLnEuZyl7Y2FzZSA1OklLYihhLChVY2QoKSx6Y2QpKTtJS2IoYSxUY2QpO2JyZWFrO2Nhc2UgNDpKS2IoYSwoVWNkKCksemNkKSk7SktiKGEsVGNkKTticmVhaztkZWZhdWx0OktLYihhLChVY2QoKSx6Y2QpKTtLS2IoYSxUY2QpO319XG5mdW5jdGlvbiBYUWIoYSl7dmFyIGIsYztiPUJEKHZOYihhLCh3U2IoKSxwU2IpKSwxOSk7aWYoYil7Yz1iLmE7Yz09MD95TmIoYSwoSFNiKCksR1NiKSxuZXcgR3ViKTp5TmIoYSwoSFNiKCksR1NiKSxuZXcgSHViKGMpKX1lbHNle3lOYihhLChIU2IoKSxHU2IpLG5ldyBIdWIoMSkpfX1cbmZ1bmN0aW9uIFYkYihhLGIpe3ZhciBjO2M9YS5pO3N3aXRjaChiLmcpe2Nhc2UgMTpyZXR1cm4gLShhLm4uYithLm8uYik7Y2FzZSAyOnJldHVybiBhLm4uYS1jLm8uYTtjYXNlIDM6cmV0dXJuIGEubi5iLWMuby5iO2Nhc2UgNDpyZXR1cm4gLShhLm4uYSthLm8uYSk7fXJldHVybiAwfVxuZnVuY3Rpb24gaGJjKGEsYil7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBiPT0oQ3RjKCkseXRjKT9kYmM6ZWJjO2Nhc2UgMTpyZXR1cm4gYj09KEN0YygpLHl0Yyk/ZGJjOmNiYztjYXNlIDI6cmV0dXJuIGI9PShDdGMoKSx5dGMpP2NiYzplYmM7ZGVmYXVsdDpyZXR1cm4gY2JjO319XG5mdW5jdGlvbiB2JGMoYSxiKXt2YXIgYyxkLGU7TGtiKGEuYSxiKTthLmUtPWIucisoYS5hLmMubGVuZ3RoPT0wPzA6YS5jKTtlPWVyZTtmb3IoZD1uZXcgb2xiKGEuYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE4Nyk7ZT0kd25kLk1hdGgubWF4KGUsYy5kKX1hLmI9ZX1cbmZ1bmN0aW9uIExsZChhLGIpe3ZhciBjLGQ7aWYoYS5EYj4+MTY9PTMpe3JldHVybiBhLkNiLmloKGEsMTIsRTIsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhUaGQoKSxLaGQpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gVW9kKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09MTEpe3JldHVybiBhLkNiLmloKGEsMTAsRTIsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhUaGQoKSxPaGQpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gUFNkKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09MTApe3JldHVybiBhLkNiLmloKGEsMTEsYzUsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhqR2QoKSxhR2QpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gcVVkKGEsYil7dmFyIGMsZDtpZihhLkRiPj4xNj09MTApe3JldHVybiBhLkNiLmloKGEsMTIsbjUsYil9cmV0dXJuIGQ9elVkKEJEKFhLZCgoYz1CRChBamQoYSwxNiksMjYpLCFjPyhqR2QoKSxkR2QpOmMpLGEuRGI+PjE2KSwxOCkpLGEuQ2IuaWgoYSxkLm4sZC5mLGIpfVxuZnVuY3Rpb24gd0lkKGEpe3ZhciBiO2lmKChhLkJiJjEpPT0wJiYhIWEuciYmYS5yLmtoKCkpe2I9QkQoYS5yLDQ5KTthLnI9QkQoeGlkKGEsYiksMTM4KTthLnIhPWImJihhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDksOCxiLGEucikpfXJldHVybiBhLnJ9XG5mdW5jdGlvbiB5SGIoYSxiLGMpe3ZhciBkO2Q9T0MoR0MoVUQsMSksVmplLDI1LDE1LFtCSGIoYSwoZ0hiKCksZEhiKSxiLGMpLEJIYihhLGVIYixiLGMpLEJIYihhLGZIYixiLGMpXSk7aWYoYS5mKXtkWzBdPSR3bmQuTWF0aC5tYXgoZFswXSxkWzJdKTtkWzJdPWRbMF19cmV0dXJuIGR9XG5mdW5jdGlvbiBPOWIoYSxiKXt2YXIgYyxkLGU7ZT1WOWIoYSxiKTtpZihlLmMubGVuZ3RoPT0wKXtyZXR1cm59T2tiKGUsbmV3IHBhYyk7Yz1lLmMubGVuZ3RoO2ZvcihkPTA7ZDxjO2QrKyl7SzliKGEsKHRDYihkLGUuYy5sZW5ndGgpLEJEKGUuY1tkXSwyODYpKSxSOWIoYSxlLGQpKX19XG5mdW5jdGlvbiBxa2MoYSl7dmFyIGIsYyxkLGU7Zm9yKGU9QkQoUWMoYS5hLChYamMoKSxTamMpKSwxNSkuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMDEpO2ZvcihjPUVjKGQuaykuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSw2MSk7a2tjKGEsZCxiLChGa2MoKSxEa2MpLDEpfX19XG5mdW5jdGlvbiB2b2MoYSl7dmFyIGIsYztpZihhLms9PShqMGIoKSxnMGIpKXtmb3IoYz1uZXcgU3IodXIoT19iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksMTcpO2lmKCFPWmIoYikmJmEuYz09TFpiKGIsYSkuYyl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBKTmMoYSl7dmFyIGIsYztpZihhLms9PShqMGIoKSxnMGIpKXtmb3IoYz1uZXcgU3IodXIoT19iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksMTcpO2lmKCFPWmIoYikmJmIuYy5pLmM9PWIuZC5pLmMpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gSFVjKGEsYil7dmFyIGMsZCxlLGY7T2RkKGIsJ0R1bGwgZWRnZSByb3V0aW5nJywxKTtmb3IoZj1Kc2IoYS5iLDApO2YuYiE9Zi5kLmM7KXtlPUJEKFhzYihmKSw4Nik7Zm9yKGQ9SnNiKGUuZCwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksMTg4KTtPc2IoYy5hKX19fVxuZnVuY3Rpb24geHFkKGEsYil7dmFyIGMsZCxlLGYsZztpZihiKXtlPWIuYS5sZW5ndGg7Yz1uZXcgWWdlKGUpO2ZvcihnPShjLmItYy5hKSpjLmM8MD8oWGdlKCksV2dlKTpuZXcgc2hlKGMpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDE5KTtkPVpwZChiLGYuYSk7ISFkJiZhcmQoYSxkKX19fVxuZnVuY3Rpb24gRFpkKCl7dFpkKCk7dmFyIGEsYjt4WmQoKE5GZCgpLE1GZCkpO3daZChNRmQpO1RuZChNRmQpO0ZRZD0oakdkKCksWUZkKTtmb3IoYj1uZXcgb2xiKHJaZCk7Yi5hPGIuYy5jLmxlbmd0aDspe2E9QkQobWxiKGIpLDI0MSk7UVFkKGEsWUZkLG51bGwpfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gZUQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2k9YS5oPj4xOTtqPWIuaD4+MTk7aWYoaSE9ail7cmV0dXJuIGotaX1lPWEuaDtoPWIuaDtpZihlIT1oKXtyZXR1cm4gZS1ofWQ9YS5tO2c9Yi5tO2lmKGQhPWcpe3JldHVybiBkLWd9Yz1hLmw7Zj1iLmw7cmV0dXJuIGMtZn1cbmZ1bmN0aW9uIGZGYigpe2ZGYj1jY2I7ZUZiPShyRmIoKSxvRmIpO2RGYj1uZXcgTnNkKFlrZSxlRmIpO2NGYj0oVUViKCksVEViKTtiRmI9bmV3IE5zZChaa2UsY0ZiKTthRmI9KE1FYigpLExFYik7X0ViPW5ldyBOc2QoJGtlLGFGYik7JEViPW5ldyBOc2QoX2tlLChCY2IoKSx0cnVlKSl9XG5mdW5jdGlvbiBjZmMoYSxiLGMpe3ZhciBkLGU7ZD1iKmM7aWYoSkQoYS5nLDE0NSkpe2U9dWdjKGEpO2lmKGUuZi5kKXtlLmYuYXx8KGEuZC5hKz1kK3BsZSl9ZWxzZXthLmQuZC09ZCtwbGU7YS5kLmErPWQrcGxlfX1lbHNlIGlmKEpEKGEuZywxMCkpe2EuZC5kLT1kO2EuZC5hKz0yKmR9fVxuZnVuY3Rpb24gdm1jKGEsYixjKXt2YXIgZCxlLGYsZyxoO2U9YVtjLmddO2ZvcihoPW5ldyBvbGIoYi5kKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTAxKTtmPWcuaTtpZighIWYmJmYuaT09Yyl7ZD1nLmRbYy5nXTtlW2RdPSR3bmQuTWF0aC5tYXgoZVtkXSxmLmouYil9fX1cbmZ1bmN0aW9uIEFaYyhhLGIpe3ZhciBjLGQsZSxmLGc7ZD0wO2U9MDtjPTA7Zm9yKGc9bmV3IG9sYihiLmQpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSw0NDMpO2EkYyhmKTtkPSR3bmQuTWF0aC5tYXgoZCxmLmIpO2UrPWYuZCsoYz4wP2EuZzowKTsrK2N9Yi5iPWQ7Yi5lPWV9XG5mdW5jdGlvbiB0byhhKXt2YXIgYixjLGQ7ZD1hLmI7aWYoTHAoYS5pLGQubGVuZ3RoKSl7Yz1kLmxlbmd0aCoyO2EuYj1LQyhHRixHaWUsMzE3LGMsMCwxKTthLmM9S0MoR0YsR2llLDMxNyxjLDAsMSk7YS5mPWMtMTthLmk9MDtmb3IoYj1hLmE7YjtiPWIuYyl7cG8oYSxiLGIpfSsrYS5nfX1cbmZ1bmN0aW9uIGNOYihhLGIsYyxkKXt2YXIgZSxmLGcsaDtmb3IoZT0wO2U8Yi5vO2UrKyl7Zj1lLWIuaitjO2ZvcihnPTA7ZzxiLnA7ZysrKXtoPWctYi5rK2Q7WU1iKGIsZSxnKT9qTmIoYSxmLGgpfHxsTmIoYSxmLGgpOiRNYihiLGUsZykmJihoTmIoYSxmLGgpfHxtTmIoYSxmLGgpKX19fVxuZnVuY3Rpb24gT29jKGEsYixjKXt2YXIgZDtkPWIuYy5pO2lmKGQuaz09KGowYigpLGcwYikpe3lOYihhLCh3dGMoKSxWc2MpLEJEKHZOYihkLFZzYyksMTEpKTt5TmIoYSxXc2MsQkQodk5iKGQsV3NjKSwxMSkpfWVsc2V7eU5iKGEsKHd0YygpLFZzYyksYi5jKTt5TmIoYSxXc2MsYy5kKX19XG5mdW5jdGlvbiBsNmMoYSxiLGMpe2k2YygpO3ZhciBkLGUsZixnLGgsaTtnPWIvMjtmPWMvMjtkPSR3bmQuTWF0aC5hYnMoYS5hKTtlPSR3bmQuTWF0aC5hYnMoYS5iKTtoPTE7aT0xO2Q+ZyYmKGg9Zy9kKTtlPmYmJihpPWYvZSk7WTZjKGEsJHduZC5NYXRoLm1pbihoLGkpKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIG9uZCgpe1NtZCgpO3ZhciBiLGM7dHJ5e2M9QkQobVVkKCh5RmQoKSx4RmQpLHl0ZSksMjAxNCk7aWYoYyl7cmV0dXJuIGN9fWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTAyKSl7Yj1hO3V2ZCgoaDBkKCksYikpfWVsc2UgdGhyb3cgdmJiKGEpfXJldHVybiBuZXcga25kfVxuZnVuY3Rpb24gWTlkKCl7QTlkKCk7dmFyIGIsYzt0cnl7Yz1CRChtVWQoKHlGZCgpLHhGZCksRXdlKSwyMDI0KTtpZihjKXtyZXR1cm4gY319Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMDIpKXtiPWE7dXZkKChoMGQoKSxiKSl9ZWxzZSB0aHJvdyB2YmIoYSl9cmV0dXJuIG5ldyBVOWR9XG5mdW5jdGlvbiBxWmQoKXtTbWQoKTt2YXIgYixjO3RyeXtjPUJEKG1VZCgoeUZkKCkseEZkKSxfdmUpLDE5NDEpO2lmKGMpe3JldHVybiBjfX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEwMikpe2I9YTt1dmQoKGgwZCgpLGIpKX1lbHNlIHRocm93IHZiYihhKX1yZXR1cm4gbmV3IG1aZH1cbmZ1bmN0aW9uIEhRZChhLGIsYyl7dmFyIGQsZTtlPWEuZTthLmU9YjtpZigoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTApe2Q9bmV3IG5TZChhLDEsNCxlLGIpOyFjPyhjPWQpOmMuRWkoZCl9ZSE9YiYmKGI/KGM9UVFkKGEsTVFkKGEsYiksYykpOihjPVFRZChhLGEuYSxjKSkpO3JldHVybiBjfVxuZnVuY3Rpb24gbkIoKXtlQi5jYWxsKHRoaXMpO3RoaXMuZT0tMTt0aGlzLmE9ZmFsc2U7dGhpcy5wPVJpZTt0aGlzLms9LTE7dGhpcy5jPS0xO3RoaXMuYj0tMTt0aGlzLmc9ZmFsc2U7dGhpcy5mPS0xO3RoaXMuaj0tMTt0aGlzLm49LTE7dGhpcy5pPS0xO3RoaXMuZD0tMTt0aGlzLm89UmllfVxuZnVuY3Rpb24gcUViKGEsYil7dmFyIGMsZCxlO2Q9YS5iLmQuZDthLmF8fChkKz1hLmIuZC5hKTtlPWIuYi5kLmQ7Yi5hfHwoZSs9Yi5iLmQuYSk7Yz1LZGIoZCxlKTtpZihjPT0wKXtpZighYS5hJiZiLmEpe3JldHVybiAtMX1lbHNlIGlmKCFiLmEmJmEuYSl7cmV0dXJuIDF9fXJldHVybiBjfVxuZnVuY3Rpb24gZU9iKGEsYil7dmFyIGMsZCxlO2Q9YS5iLmIuZDthLmF8fChkKz1hLmIuYi5hKTtlPWIuYi5iLmQ7Yi5hfHwoZSs9Yi5iLmIuYSk7Yz1LZGIoZCxlKTtpZihjPT0wKXtpZighYS5hJiZiLmEpe3JldHVybiAtMX1lbHNlIGlmKCFiLmEmJmEuYSl7cmV0dXJuIDF9fXJldHVybiBjfVxuZnVuY3Rpb24gUFZiKGEsYil7dmFyIGMsZCxlO2Q9YS5iLmcuZDthLmF8fChkKz1hLmIuZy5hKTtlPWIuYi5nLmQ7Yi5hfHwoZSs9Yi5iLmcuYSk7Yz1LZGIoZCxlKTtpZihjPT0wKXtpZighYS5hJiZiLmEpe3JldHVybiAtMX1lbHNlIGlmKCFiLmEmJmEuYSl7cmV0dXJuIDF9fXJldHVybiBjfVxuZnVuY3Rpb24gWlRiKCl7WlRiPWNjYjtXVGI9YzNjKGUzYyhlM2MoZTNjKG5ldyBqM2MsKHFVYigpLG9VYiksKFM4YigpLG04YikpLG9VYixxOGIpLHBVYix4OGIpLHBVYixhOGIpO1lUYj1lM2MoZTNjKG5ldyBqM2Msb1ViLFM3Yiksb1ViLGI4Yik7WFRiPWMzYyhuZXcgajNjLHBVYixkOGIpfVxuZnVuY3Rpb24gczNiKGEpe3ZhciBiLGMsZCxlLGY7Yj1CRCh2TmIoYSwod3RjKCksQ3NjKSksODMpO2Y9YS5uO2ZvcihkPWIuQ2MoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDMwNik7ZT1jLmk7ZS5jKz1mLmE7ZS5kKz1mLmI7Yy5jP1ZIYihjKTpYSGIoYyl9eU5iKGEsQ3NjLG51bGwpfVxuZnVuY3Rpb24gcW1jKGEsYixjKXt2YXIgZCxlO2U9YS5iO2Q9ZS5kO3N3aXRjaChiLmcpe2Nhc2UgMTpyZXR1cm4gLWQuZC1jO2Nhc2UgMjpyZXR1cm4gZS5vLmErZC5jK2M7Y2FzZSAzOnJldHVybiBlLm8uYitkLmErYztjYXNlIDQ6cmV0dXJuIC1kLmItYztkZWZhdWx0OnJldHVybiAtMTt9fVxuZnVuY3Rpb24gQlhjKGEpe3ZhciBiLGMsZCxlLGY7ZD0wO2U9ZG1lO2lmKGEuYil7Zm9yKGI9MDtiPDM2MDtiKyspe2M9YiowLjAxNzQ1MzI5MjUxOTk0MzI5NTt6WGMoYSxhLmQsMCwwLGRyZSxjKTtmPWEuYi5pZyhhLmQpO2lmKGY8ZSl7ZD1jO2U9Zn19fXpYYyhhLGEuZCwwLDAsZHJlLGQpfVxuZnVuY3Rpb24gRSRjKGEsYil7dmFyIGMsZCxlLGY7Zj1uZXcgTHFiO2IuZT1udWxsO2IuZj1udWxsO2ZvcihkPW5ldyBvbGIoYi5pKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNjUpO2U9QkQoT2hiKGEuZyxjLmEpLDQ2KTtjLmE9RDZjKGMuYik7UmhiKGYsYy5hLGUpfWEuZz1mfVxuZnVuY3Rpb24gdCRjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7ZT1iLWEuZTtmPWUvYS5kLmMubGVuZ3RoO2c9MDtmb3IoaT1uZXcgb2xiKGEuZCk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDQ0Myk7ZD1hLmItaC5iK2M7X1pjKGgsaC5lK2cqZixoLmYpO1haYyhoLGYsZCk7KytnfX1cbmZ1bmN0aW9uIFlCZChhKXt2YXIgYjthLmYucWooKTtpZihhLmIhPS0xKXsrK2EuYjtiPWEuZi5kW2EuYV07aWYoYS5iPGIuaSl7cmV0dXJufSsrYS5hfWZvcig7YS5hPGEuZi5kLmxlbmd0aDsrK2EuYSl7Yj1hLmYuZFthLmFdO2lmKCEhYiYmYi5pIT0wKXthLmI9MDtyZXR1cm59fWEuYj0tMX1cbmZ1bmN0aW9uIGowZChhLGIpe3ZhciBjLGQsZTtlPWIuYy5sZW5ndGg7Yz1sMGQoYSxlPT0wPycnOih0Q2IoMCxiLmMubGVuZ3RoKSxHRChiLmNbMF0pKSk7Zm9yKGQ9MTtkPGUmJiEhYzsrK2Qpe2M9QkQoYyw0OSkub2goKHRDYihkLGIuYy5sZW5ndGgpLEdEKGIuY1tkXSkpKX1yZXR1cm4gY31cbmZ1bmN0aW9uIHJFYyhhLGIpe3ZhciBjLGQ7Zm9yKGQ9bmV3IG9sYihiKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTApO2EuY1tjLmMucF1bYy5wXS5hPUF1YihhLmkpO2EuY1tjLmMucF1bYy5wXS5kPUVkYihhLmNbYy5jLnBdW2MucF0uYSk7YS5jW2MuYy5wXVtjLnBdLmI9MX19XG5mdW5jdGlvbiBfZGQoYSxiKXt2YXIgYyxkLGUsZjtmPTA7Zm9yKGQ9bmV3IG9sYihhKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTU3KTtmKz0kd25kLk1hdGgucG93KHJlZChjKSpxZWQoYyktYiwyKX1lPSR3bmQuTWF0aC5zcXJ0KGYvKGEuYy5sZW5ndGgtMSkpO3JldHVybiBlfVxuZnVuY3Rpb24gTEhjKGEsYixjLGQpe3ZhciBlLGYsZztmPUdIYyhhLGIsYyxkKTtnPU1IYyhhLGYpO2JJYyhhLGIsYyxkKTt5SGMoYS5iKTttbWIoKTtPa2IoZixuZXcgbEljKGEpKTtlPU1IYyhhLGYpO2JJYyhhLGMsYixkKTt5SGMoYS5iKTtyZXR1cm4gbmV3IHZnZChtZWIoZyksbWViKGUpKX1cbmZ1bmN0aW9uIGNKYyhhLGIsYyl7dmFyIGQsZTtPZGQoYywnSW50ZXJhY3RpdmUgbm9kZSBwbGFjZW1lbnQnLDEpO2EuYT1CRCh2TmIoYiwod3RjKCksb3RjKSksMzA0KTtmb3IoZT1uZXcgb2xiKGIuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtiSmMoYSxkKX1RZGQoYyl9XG5mdW5jdGlvbiBNVmMoYSxiKXt2YXIgYztPZGQoYiwnR2VuZXJhbCBDb21wYWN0b3InLDEpO2IubiYmISFhJiZUZGQoYixpNmQoYSksKHBnZCgpLG1nZCkpO2M9cVdjKEJEKGhrZChhLChaV2MoKSxMV2MpKSwzODApKTtjLmhnKGEpO2IubiYmISFhJiZUZGQoYixpNmQoYSksKHBnZCgpLG1nZCkpfVxuZnVuY3Rpb24gRGZkKGEsYixjKXt2YXIgZCxlO25tZChhLGEuaitiLGEuaytjKTtmb3IoZT1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyB4TWQoeTIsYSw1KSksYS5hKSk7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDQ2OSk7dWtkKGQsZC5hK2IsZC5iK2MpfWdtZChhLGEuYitiLGEuYytjKX1cbmZ1bmN0aW9uIHZsZChhLGIsYyxkKXtzd2l0Y2goYyl7Y2FzZSA3OnJldHVybiAhYS5lJiYoYS5lPW5ldyB5NWQoQjIsYSw3LDQpKSxTeGQoYS5lLGIsZCk7Y2FzZSA4OnJldHVybiAhYS5kJiYoYS5kPW5ldyB5NWQoQjIsYSw4LDUpKSxTeGQoYS5kLGIsZCk7fXJldHVybiBGa2QoYSxiLGMsZCl9XG5mdW5jdGlvbiB3bGQoYSxiLGMsZCl7c3dpdGNoKGMpe2Nhc2UgNzpyZXR1cm4gIWEuZSYmKGEuZT1uZXcgeTVkKEIyLGEsNyw0KSksVHhkKGEuZSxiLGQpO2Nhc2UgODpyZXR1cm4gIWEuZCYmKGEuZD1uZXcgeTVkKEIyLGEsOCw1KSksVHhkKGEuZCxiLGQpO31yZXR1cm4gR2tkKGEsYixjLGQpfVxuZnVuY3Rpb24gbHFkKGEsYixjKXt2YXIgZCxlLGYsZyxoO2lmKGMpe2Y9Yy5hLmxlbmd0aDtkPW5ldyBZZ2UoZik7Zm9yKGg9KGQuYi1kLmEpKmQuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoZCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTkpO2U9WnBkKGMsZy5hKTshIWUmJmRyZChhLGUsYil9fX1cbmZ1bmN0aW9uIEhBZChhLGIsYyl7dmFyIGQsZSxmLGcsaDthLnFqKCk7Zj1iPT1udWxsPzA6dGIoYik7aWYoYS5mPjApe2c9KGYmT2hlKSVhLmQubGVuZ3RoO2U9d0FkKGEsZyxmLGIpO2lmKGUpe2g9ZS5lZChjKTtyZXR1cm4gaH19ZD1hLnRqKGYsYixjKTthLmMuRmMoZCk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiB0MWQoYSxiKXt2YXIgYyxkLGUsZjtzd2l0Y2gobzFkKGEsYikuX2soKSl7Y2FzZSAzOmNhc2UgMjp7Yz1PS2QoYik7Zm9yKGU9MCxmPWMuaTtlPGY7KytlKXtkPUJEKHF1ZChjLGUpLDM0KTtpZigkMWQocTFkKGEsZCkpPT01KXtyZXR1cm4gZH19YnJlYWt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUXMoYSl7dmFyIGIsYyxkLGUsZjtpZihMcChhLmYsYS5iLmxlbmd0aCkpe2Q9S0MoQkcsR2llLDMzMCxhLmIubGVuZ3RoKjIsMCwxKTthLmI9ZDtlPWQubGVuZ3RoLTE7Zm9yKGM9YS5hO2MhPWE7Yz1jLlJkKCkpe2Y9QkQoYywzMzApO2I9Zi5kJmU7Zi5hPWRbYl07ZFtiXT1mfX19XG5mdW5jdGlvbiBESmIoYSxiKXt2YXIgYyxkLGUsZjtmPTA7Zm9yKGU9QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCkuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMTEpO2Y9JHduZC5NYXRoLm1heChmLGQuZS5hK2QuYi5yZigpLmEpfWM9QkQoTXBiKGEuYixiKSwxMjQpO2Mubi5iPTA7Yy5hLmE9Zn1cbmZ1bmN0aW9uIE1LYihhLGIpe3ZhciBjLGQsZSxmO2M9MDtmb3IoZj1CRChCRChRYyhhLnIsYiksMjEpLDg0KS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDExMSk7Yz0kd25kLk1hdGgubWF4KGMsZS5lLmIrZS5iLnJmKCkuYil9ZD1CRChNcGIoYS5iLGIpLDEyNCk7ZC5uLmQ9MDtkLmEuYj1jfVxuZnVuY3Rpb24gSU5jKGEpe3ZhciBiLGM7Yz1CRCh2TmIoYSwod3RjKCksS3NjKSksMjEpO2I9azNjKHpOYyk7Yy5IYygoT3JjKCksTHJjKSkmJmQzYyhiLENOYyk7Yy5IYyhOcmMpJiZkM2MoYixFTmMpO2MuSGMoRXJjKSYmZDNjKGIsQU5jKTtjLkhjKEdyYykmJmQzYyhiLEJOYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBqMWMoYSxiKXt2YXIgYztPZGQoYiwnRGVsYXVuYXkgdHJpYW5ndWxhdGlvbicsMSk7Yz1uZXcgUmtiO0hrYihhLmksbmV3IG4xYyhjKSk7Q2NiKEREKHZOYihhLChYTmIoKSxWTmIpKSkpJiYnbnVsbDEwYncnOyFhLmU/KGEuZT1OQ2IoYykpOnllKGEuZSxOQ2IoYykpO1FkZChiKX1cbmZ1bmN0aW9uIHE2YyhhKXtpZihhPDApe3Rocm93IHZiYihuZXcgV2RiKCdUaGUgaW5wdXQgbXVzdCBiZSBwb3NpdGl2ZScpKX1lbHNlIHJldHVybiBhPGg2Yy5sZW5ndGg/U2JiKGg2Y1thXSk6JHduZC5NYXRoLnNxcnQoZHJlKmEpKih5NmMoYSxhKS94NmMoMi43MTgyODE4Mjg0NTkwNDUsYSkpfVxuZnVuY3Rpb24gcHVkKGEsYil7dmFyIGM7aWYoYS5uaSgpJiZiIT1udWxsKXtmb3IoYz0wO2M8YS5pOysrYyl7aWYocGIoYixhLmdbY10pKXtyZXR1cm4gdHJ1ZX19fWVsc2V7Zm9yKGM9MDtjPGEuaTsrK2Mpe2lmKFBEKGEuZ1tjXSk9PT1QRChiKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBqcihhLGIpe2lmKGI9PW51bGwpe3doaWxlKGEuYS5PYigpKXtpZihCRChhLmEuUGIoKSw0MikuZGQoKT09bnVsbCl7cmV0dXJuIHRydWV9fX1lbHNle3doaWxlKGEuYS5PYigpKXtpZihwYihiLEJEKGEuYS5QYigpLDQyKS5kZCgpKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiB6eShhLGIpe3ZhciBjLGQsZTtpZihiPT09YSl7cmV0dXJuIHRydWV9ZWxzZSBpZihKRChiLDY2NCkpe2U9QkQoYiwxOTQ3KTtyZXR1cm4gVWUoKGQ9YS5nLCFkPyhhLmc9bmV3IHZpKGEpKTpkKSwoYz1lLmcsIWM/KGUuZz1uZXcgdmkoZSkpOmMpKX1lbHNle3JldHVybiBmYWxzZX19XG5mdW5jdGlvbiBUeihhKXt2YXIgYixjLGQsZTtiPSdTeic7Yz0nZXonO2U9JHduZC5NYXRoLm1pbihhLmxlbmd0aCw1KTtmb3IoZD1lLTE7ZD49MDtkLS0pe2lmKGRmYihhW2RdLmQsYil8fGRmYihhW2RdLmQsYykpe2EubGVuZ3RoPj1kKzEmJmEuc3BsaWNlKDAsZCsxKTticmVha319cmV0dXJuIGF9XG5mdW5jdGlvbiBBYmIoYSxiKXt2YXIgYztpZihGYmIoYSkmJkZiYihiKSl7Yz1hL2I7aWYoS2plPGMmJmM8SWplKXtyZXR1cm4gYzwwPyR3bmQuTWF0aC5jZWlsKGMpOiR3bmQuTWF0aC5mbG9vcihjKX19cmV0dXJuIHpiYihVQyhGYmIoYSk/UmJiKGEpOmEsRmJiKGIpP1JiYihiKTpiLGZhbHNlKSl9XG5mdW5jdGlvbiBMWmIoYSxiKXtpZihiPT1hLmMuaSl7cmV0dXJuIGEuZC5pfWVsc2UgaWYoYj09YS5kLmkpe3JldHVybiBhLmMuaX1lbHNle3Rocm93IHZiYihuZXcgV2RiKFwiJ25vZGUnIG11c3QgZWl0aGVyIGJlIHRoZSBzb3VyY2Ugbm9kZSBvciB0YXJnZXQgbm9kZSBvZiB0aGUgZWRnZS5cIikpfX1cbmZ1bmN0aW9uIEMyYihhKXt2YXIgYixjLGQsZTtlPUJEKHZOYihhLCh3dGMoKSx4c2MpKSwzNyk7aWYoZSl7ZD1uZXcgZDdjO2I9UV9iKGEuYy5pKTt3aGlsZShiIT1lKXtjPWIuZTtiPVFfYihjKTtPNmMoUDZjKFA2YyhkLGMubiksYi5jKSxiLmQuYixiLmQuZCl9cmV0dXJuIGR9cmV0dXJuIHcyYn1cbmZ1bmN0aW9uIExkYyhhKXt2YXIgYjtiPUJEKHZOYihhLCh3dGMoKSxudGMpKSw0MDMpO01BYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYi5kLDE2KSksbmV3IFlkYyksbmV3ICRkYyhhKSk7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmQsMTYpKSxuZXcgYWVjKSxuZXcgY2VjKGEpKX1cbmZ1bmN0aW9uIHdvYyhhLGIpe3ZhciBjLGQsZSxmO2U9Yj9VX2IoYSk6Ul9iKGEpO2ZvcihkPW5ldyBTcih1cihlLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2Y9TFpiKGMsYSk7aWYoZi5rPT0oajBiKCksZzBiKSYmZi5jIT1hLmMpe3JldHVybiBmfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIEhEYyhhKXt2YXIgYixjLGQ7Zm9yKGM9bmV3IG9sYihhLnApO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMCk7aWYoYi5rIT0oajBiKCksaDBiKSl7Y29udGludWV9ZD1iLm8uYjthLmk9JHduZC5NYXRoLm1pbihhLmksZCk7YS5nPSR3bmQuTWF0aC5tYXgoYS5nLGQpfX1cbmZ1bmN0aW9uIG9FYyhhLGIsYyl7dmFyIGQsZSxmO2ZvcihmPW5ldyBvbGIoYik7Zi5hPGYuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGYpLDEwKTthLmNbZC5jLnBdW2QucF0uZT1mYWxzZX1mb3IoZT1uZXcgb2xiKGIpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMCk7bkVjKGEsZCxjKX19XG5mdW5jdGlvbiBXT2MoYSxiLGMpe3ZhciBkLGU7ZD12UGMoYi5qLGMucyxjLmMpK3ZQYyhjLmUsYi5zLGIuYyk7ZT12UGMoYy5qLGIucyxiLmMpK3ZQYyhiLmUsYy5zLGMuYyk7aWYoZD09ZSl7aWYoZD4wKXthLmIrPTI7YS5hKz1kfX1lbHNle2EuYis9MTthLmErPSR3bmQuTWF0aC5taW4oZCxlKX19XG5mdW5jdGlvbiBScGQoYSxiKXt2YXIgYyxkO2Q9ZmFsc2U7aWYoTkQoYikpe2Q9dHJ1ZTtRcGQoYSxuZXcgeUMoR0QoYikpKX1pZighZCl7aWYoSkQoYiwyMzYpKXtkPXRydWU7UXBkKGEsKGM9S2NiKEJEKGIsMjM2KSksbmV3IFRCKGMpKSl9fWlmKCFkKXt0aHJvdyB2YmIobmV3IHZjYihVdGUpKX19XG5mdW5jdGlvbiBJTWQoYSxiLGMsZCl7dmFyIGUsZixnO2U9bmV3IHBTZChhLmUsMSwxMCwoZz1iLmMsSkQoZyw4OCk/QkQoZywyNik6KGpHZCgpLF9GZCkpLChmPWMuYyxKRChmLDg4KT9CRChmLDI2KTooakdkKCksX0ZkKSksSExkKGEsYiksZmFsc2UpOyFkPyhkPWUpOmQuRWkoZSk7cmV0dXJuIGR9XG5mdW5jdGlvbiBUX2IoYSl7dmFyIGIsYztzd2l0Y2goQkQodk5iKFFfYihhKSwoTnljKCksaXhjKSksNDIwKS5nKXtjYXNlIDA6Yj1hLm47Yz1hLm87cmV0dXJuIG5ldyBmN2MoYi5hK2MuYS8yLGIuYitjLmIvMik7Y2FzZSAxOnJldHVybiBuZXcgZzdjKGEubik7ZGVmYXVsdDpyZXR1cm4gbnVsbDt9fVxuZnVuY3Rpb24gbHJjKCl7bHJjPWNjYjtpcmM9bmV3IG1yYyhhbmUsMCk7aHJjPW5ldyBtcmMoJ0xFRlRVUCcsMSk7a3JjPW5ldyBtcmMoJ1JJR0hUVVAnLDIpO2dyYz1uZXcgbXJjKCdMRUZURE9XTicsMyk7anJjPW5ldyBtcmMoJ1JJR0hURE9XTicsNCk7ZnJjPW5ldyBtcmMoJ0JBTEFOQ0VEJyw1KX1cbmZ1bmN0aW9uIEZGYyhhLGIsYyl7dmFyIGQsZSxmO2Q9S2RiKGEuYVtiLnBdLGEuYVtjLnBdKTtpZihkPT0wKXtlPUJEKHZOYihiLCh3dGMoKSxRc2MpKSwxNSk7Zj1CRCh2TmIoYyxRc2MpLDE1KTtpZihlLkhjKGMpKXtyZXR1cm4gLTF9ZWxzZSBpZihmLkhjKGIpKXtyZXR1cm4gMX19cmV0dXJuIGR9XG5mdW5jdGlvbiBqWGMoYSl7c3dpdGNoKGEuZyl7Y2FzZSAxOnJldHVybiBuZXcgWFZjO2Nhc2UgMjpyZXR1cm4gbmV3IFpWYztjYXNlIDM6cmV0dXJuIG5ldyBWVmM7Y2FzZSAwOnJldHVybiBudWxsO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoanJlKyhhLmYhPW51bGw/YS5mOicnK2EuZykpKTt9fVxuZnVuY3Rpb24gSWtkKGEsYixjKXtzd2l0Y2goYil7Y2FzZSAxOiFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpO1V4ZChhLm4pOyFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpO3l0ZChhLm4sQkQoYywxNCkpO3JldHVybjtjYXNlIDI6TGtkKGEsR0QoYykpO3JldHVybjt9ZWtkKGEsYixjKX1cbmZ1bmN0aW9uIFprZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgMzphbGQoYSxFZGIoRUQoYykpKTtyZXR1cm47Y2FzZSA0OmNsZChhLEVkYihFRChjKSkpO3JldHVybjtjYXNlIDU6ZGxkKGEsRWRiKEVEKGMpKSk7cmV0dXJuO2Nhc2UgNjplbGQoYSxFZGIoRUQoYykpKTtyZXR1cm47fUlrZChhLGIsYyl9XG5mdW5jdGlvbiBGbmQoYSxiLGMpe3ZhciBkLGUsZjtmPShkPW5ldyByVWQsZCk7ZT14SWQoZixiLG51bGwpOyEhZSYmZS5GaSgpO3BuZChmLGMpO3d0ZCgoIWEuYyYmKGEuYz1uZXcgY1VkKHA1LGEsMTIsMTApKSxhLmMpLGYpO0FJZChmLDApO0RJZChmLDEpO0NJZChmLHRydWUpO0JJZChmLHRydWUpfVxuZnVuY3Rpb24gbVVkKGEsYil7dmFyIGMsZCxlO2M9Q3JiKGEuZyxiKTtpZihKRChjLDIzNSkpe2U9QkQoYywyMzUpO2UuUWgoKT09bnVsbCYmdW5kZWZpbmVkO3JldHVybiBlLk5oKCl9ZWxzZSBpZihKRChjLDQ5OCkpe2Q9QkQoYywxOTM4KTtlPWQuYjtyZXR1cm4gZX1lbHNle3JldHVybiBudWxsfX1cbmZ1bmN0aW9uIFVpKGEsYixjLGQpe3ZhciBlLGY7UWIoYik7UWIoYyk7Zj1CRCh0bihhLmQsYiksMTkpO09iKCEhZiwnUm93ICVzIG5vdCBpbiAlcycsYixhLmUpO2U9QkQodG4oYS5iLGMpLDE5KTtPYighIWUsJ0NvbHVtbiAlcyBub3QgaW4gJXMnLGMsYS5jKTtyZXR1cm4gV2koYSxmLmEsZS5hLGQpfVxuZnVuY3Rpb24gSkMoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaSxqLGssbDtrPWVbZl07aj1mPT1nLTE7aD1qP2Q6MDtsPUxDKGgsayk7ZCE9MTAmJk9DKEdDKGEsZy1mKSxiW2ZdLGNbZl0saCxsKTtpZighail7KytmO2ZvcihpPTA7aTxrOysraSl7bFtpXT1KQyhhLGIsYyxkLGUsZixnKX19cmV0dXJuIGx9XG5mdW5jdGlvbiBFeWQoYil7aWYoYi5nPT0tMSl7dGhyb3cgdmJiKG5ldyBZZGIpfWIubWooKTt0cnl7Yi5pLiRjKGIuZyk7Yi5mPWIuaS5qO2IuZzxiLmUmJi0tYi5lO2IuZz0tMX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDczKSl7dGhyb3cgdmJiKG5ldyBBcGIpfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIGhZYihhLGIpe2EuYi5hPSR3bmQuTWF0aC5taW4oYS5iLmEsYi5jKTthLmIuYj0kd25kLk1hdGgubWluKGEuYi5iLGIuZCk7YS5hLmE9JHduZC5NYXRoLm1heChhLmEuYSxiLmMpO2EuYS5iPSR3bmQuTWF0aC5tYXgoYS5hLmIsYi5kKTtyZXR1cm4gYS5jW2EuYy5sZW5ndGhdPWIsdHJ1ZX1cbmZ1bmN0aW9uIG5aYihhKXt2YXIgYixjLGQsZTtlPS0xO2Q9MDtmb3IoYz1uZXcgb2xiKGEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyNDMpO2lmKGIuYz09KEtBYygpLEhBYykpe2U9ZD09MD8wOmQtMTticmVha31lbHNlIGQ9PWEuYy5sZW5ndGgtMSYmKGU9ZCk7ZCs9MX1yZXR1cm4gZX1cbmZ1bmN0aW9uIFVaYyhhKXt2YXIgYixjLGQsZTtlPTA7Yj0wO2ZvcihkPW5ldyBvbGIoYS5jKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMzMpO2RsZChjLGEuZStlKTtlbGQoYyxhLmYpO2UrPWMuZythLmI7Yj0kd25kLk1hdGgubWF4KGIsYy5mK2EuYil9YS5kPWUtYS5iO2EuYT1iLWEuYn1cbmZ1bmN0aW9uIGJFYihhKXt2YXIgYixjLGQ7Zm9yKGM9bmV3IG9sYihhLmEuYik7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDU3KTtkPWIuZC5jO2IuZC5jPWIuZC5kO2IuZC5kPWQ7ZD1iLmQuYjtiLmQuYj1iLmQuYTtiLmQuYT1kO2Q9Yi5iLmE7Yi5iLmE9Yi5iLmI7Yi5iLmI9ZH1SRGIoYSl9XG5mdW5jdGlvbiBCVmIoYSl7dmFyIGIsYyxkO2ZvcihjPW5ldyBvbGIoYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw4MSk7ZD1iLmcuYztiLmcuYz1iLmcuZDtiLmcuZD1kO2Q9Yi5nLmI7Yi5nLmI9Yi5nLmE7Yi5nLmE9ZDtkPWIuZS5hO2IuZS5hPWIuZS5iO2IuZS5iPWR9c1ZiKGEpfVxuZnVuY3Rpb24gTG1jKGEpe3ZhciBiLGMsZCxlLGY7Zj1FYyhhLmspO2ZvcihjPShVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07aWYoYiE9U2NkJiYhZi5IYyhiKSl7cmV0dXJuIGJ9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gem5jKGEsYil7dmFyIGMsZDtkPUJEKEV0YihLQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuaiwxNikpLG5ldyBQbmMpKSksMTEpO2lmKGQpe2M9QkQoSWtiKGQuZSwwKSwxNyk7aWYoYyl7cmV0dXJuIEJEKHZOYihjLCh3dGMoKSxac2MpKSwxOSkuYX19cmV0dXJuIHl6YyhhLmIpfVxuZnVuY3Rpb24gQ0NjKGEsYil7dmFyIGMsZCxlLGY7Zm9yKGY9bmV3IG9sYihiLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7QmxiKGEuZCk7Zm9yKGQ9bmV3IFNyKHVyKFVfYihlKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDE3KTt6Q2MoYSxlLGMuZC5pKX19fVxuZnVuY3Rpb24gTlpjKGEsYil7dmFyIGMsZDtMa2IoYS5iLGIpO2ZvcihkPW5ldyBvbGIoYS5uKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjExKTtpZihKa2IoYy5jLGIsMCkhPS0xKXtMa2IoYy5jLGIpO1VaYyhjKTtjLmMuYy5sZW5ndGg9PTAmJkxrYihhLm4sYyk7YnJlYWt9fUhaYyhhKX1cbmZ1bmN0aW9uICRaYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zz1hLmY7ZT0wO2Y9MDtmb3IoZD1uZXcgb2xiKGEuYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE4Nyk7T1pjKGMsYS5lLGcpO0taYyhjLGIpO2Y9JHduZC5NYXRoLm1heChmLGMucik7Zys9Yy5kK2EuYztlPWd9YS5kPWY7YS5iPWV9XG5mdW5jdGlvbiBoVmMoYSl7dmFyIGIsYztjPSRzZChhKTtpZihRcShjKSl7cmV0dXJuIG51bGx9ZWxzZXtiPShRYihjKSxCRChtcihuZXcgU3IodXIoYy5hLktjKCksbmV3IFNxKSkpLDc5KSk7cmV0dXJuIGF0ZChCRChxdWQoKCFiLmImJihiLmI9bmV3IHk1ZCh6MixiLDQsNykpLGIuYiksMCksODIpKX19XG5mdW5jdGlvbiBYSWQoYSl7dmFyIGI7aWYoIWEubyl7Yj1hLkxqKCk7Yj8oYS5vPW5ldyBkWWQoYSxhLG51bGwpKTphLnJrKCk/KGEubz1uZXcgdVZkKGEsbnVsbCkpOiQxZChxMWQoKE82ZCgpLE02ZCksYSkpPT0xPyhhLm89bmV3IG5ZZChhKSk6KGEubz1uZXcgc1lkKGEsbnVsbCkpfXJldHVybiBhLm99XG5mdW5jdGlvbiB3NmQoYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtpZihjLm1oKGIpKXtlPShnPWIsIWc/bnVsbDpCRChkLDQ5KS54aChnKSk7aWYoZSl7aT1jLmFoKGIpO2g9Yi50O2lmKGg+MXx8aD09LTEpe2Y9QkQoaSwxNSk7ZS5XYih0NmQoYSxmKSl9ZWxzZXtlLldiKHM2ZChhLEJEKGksNTYpKSl9fX19XG5mdW5jdGlvbiBaYmIoYixjLGQsZSl7WWJiKCk7dmFyIGY9V2JiOyRtb2R1bGVOYW1lPWM7JG1vZHVsZUJhc2U9ZDt0YmI9ZTtmdW5jdGlvbiBnKCl7Zm9yKHZhciBhPTA7YTxmLmxlbmd0aDthKyspe2ZbYV0oKX19XG5pZihiKXt0cnl7SWhlKGcpKCl9Y2F0Y2goYSl7YihjLGEpfX1lbHNle0loZShnKSgpfX1cbmZ1bmN0aW9uIEtnYyhhKXt2YXIgYixjLGQsZSxmO2ZvcihkPW5ldyBuaWIoKG5ldyBlaWIoYS5iKSkuYSk7ZC5iOyl7Yz1saWIoZCk7Yj1CRChjLmNkKCksMTApO2Y9QkQoQkQoYy5kZCgpLDQ2KS5hLDEwKTtlPUJEKEJEKGMuZGQoKSw0NikuYiw4KTtQNmMoWDZjKGIubiksUDZjKFI2YyhmLm4pLGUpKX19XG5mdW5jdGlvbiBsbGMoYSl7c3dpdGNoKEJEKHZOYihhLmIsKE55YygpLFZ3YykpLDM3NSkuZyl7Y2FzZSAxOk1BYihOQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZCwxNikpLG5ldyBHbGMpLG5ldyBJbGMpLG5ldyBLbGMpO2JyZWFrO2Nhc2UgMjpubGMoYSk7YnJlYWs7Y2FzZSAwOm1sYyhhKTt9fVxuZnVuY3Rpb24gS1hjKGEsYixjKXt2YXIgZDtPZGQoYywnU3RyYWlnaHQgTGluZSBFZGdlIFJvdXRpbmcnLDEpO2MubiYmISFiJiZUZGQoYyxpNmQoYiksKHBnZCgpLG1nZCkpO2Q9QkQoaGtkKGIsKE1VYygpLExVYykpLDMzKTtMWGMoYSxkKTtjLm4mJiEhYiYmVGRkKGMsaTZkKGIpLChwZ2QoKSxtZ2QpKX1cbmZ1bmN0aW9uIGk4Yygpe2k4Yz1jY2I7aDhjPW5ldyBqOGMoJ1ZfVE9QJywwKTtnOGM9bmV3IGo4YygnVl9DRU5URVInLDEpO2Y4Yz1uZXcgajhjKCdWX0JPVFRPTScsMik7ZDhjPW5ldyBqOGMoJ0hfTEVGVCcsMyk7YzhjPW5ldyBqOGMoJ0hfQ0VOVEVSJyw0KTtlOGM9bmV3IGo4YygnSF9SSUdIVCcsNSl9XG5mdW5jdGlvbiBnTGQoYSl7dmFyIGI7aWYoKGEuRGImNjQpIT0wKXJldHVybiBtS2QoYSk7Yj1uZXcgSmZiKG1LZChhKSk7Yi5hKz0nIChhYnN0cmFjdDogJztGZmIoYiwoYS5CYiYyNTYpIT0wKTtiLmErPScsIGludGVyZmFjZTogJztGZmIoYiwoYS5CYiY1MTIpIT0wKTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gbDNkKGEsYixjLGQpe3ZhciBlLGYsZyxoO2lmKG9pZChhLmUpKXtlPWIuYWsoKTtoPWIuZGQoKTtmPWMuZGQoKTtnPUgyZChhLDEsZSxoLGYsZS4kaigpP00yZChhLGUsZixKRChlLDk5KSYmKEJEKGUsMTgpLkJiJlRqZSkhPTApOi0xLHRydWUpO2Q/ZC5FaShnKTooZD1nKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIGt6KGEpe3ZhciBiO2lmKGEuYz09bnVsbCl7Yj1QRChhLmIpPT09UEQoaXopP251bGw6YS5iO2EuZD1iPT1udWxsP1hoZTpNRChiKT9ueihGRChiKSk6TkQoYik/VmllOmhkYihyYihiKSk7YS5hPWEuYSsnOiAnKyhNRChiKT9teihGRChiKSk6YisnJyk7YS5jPScoJythLmQrJykgJythLmF9fVxuZnVuY3Rpb24gV2diKGEsYil7dGhpcy5lPWE7aWYoQmJiKHhiYihiLC00Mjk0OTY3Mjk2KSwwKSl7dGhpcy5kPTE7dGhpcy5hPU9DKEdDKFdELDEpLG9qZSwyNSwxNSxbVGJiKGIpXSl9ZWxzZXt0aGlzLmQ9Mjt0aGlzLmE9T0MoR0MoV0QsMSksb2plLDI1LDE1LFtUYmIoYiksVGJiKE9iYihiLDMyKSldKX19XG5mdW5jdGlvbiB5cmIoKXtmdW5jdGlvbiBiKCl7dHJ5e3JldHVybiAobmV3IE1hcCkuZW50cmllcygpLm5leHQoKS5kb25lfWNhdGNoKGEpe3JldHVybiBmYWxzZX19XG5pZih0eXBlb2YgTWFwPT09TmhlJiZNYXAucHJvdG90eXBlLmVudHJpZXMmJmIoKSl7cmV0dXJuIE1hcH1lbHNle3JldHVybiB6cmIoKX19XG5mdW5jdGlvbiBWUGMoYSxiKXt2YXIgYyxkLGUsZjtmPW5ldyBCaWIoYS5lLDApO2M9MDt3aGlsZShmLmI8Zi5kLmdjKCkpe2Q9RWRiKChzQ2IoZi5iPGYuZC5nYygpKSxFRChmLmQuWGIoZi5jPWYuYisrKSkpKTtlPWQtYjtpZihlPk9xZSl7cmV0dXJuIGN9ZWxzZSBlPi0xLjBFLTYmJisrY31yZXR1cm4gY31cbmZ1bmN0aW9uIFBRZChhLGIpe3ZhciBjO2lmKGIhPWEuYil7Yz1udWxsOyEhYS5iJiYoYz1saWQoYS5iLGEsLTQsYykpOyEhYiYmKGM9a2lkKGIsYSwtNCxjKSk7Yz1HUWQoYSxiLGMpOyEhYyYmYy5GaSgpfWVsc2UgKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSwzLGIsYikpfVxuZnVuY3Rpb24gU1FkKGEsYil7dmFyIGM7aWYoYiE9YS5mKXtjPW51bGw7ISFhLmYmJihjPWxpZChhLmYsYSwtMSxjKSk7ISFiJiYoYz1raWQoYixhLC0xLGMpKTtjPUlRZChhLGIsYyk7ISFjJiZjLkZpKCl9ZWxzZSAoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDAsYixiKSl9XG5mdW5jdGlvbiBFOWQoYSl7dmFyIGIsYyxkO2lmKGE9PW51bGwpcmV0dXJuIG51bGw7Yz1CRChhLDE1KTtpZihjLmRjKCkpcmV0dXJuICcnO2Q9bmV3IEhmYjtmb3IoYj1jLktjKCk7Yi5PYigpOyl7RWZiKGQsKFE4ZCgpLEdEKGIuUGIoKSkpKTtkLmErPScgJ31yZXR1cm4gbGNiKGQsZC5hLmxlbmd0aC0xKX1cbmZ1bmN0aW9uIEk5ZChhKXt2YXIgYixjLGQ7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtjPUJEKGEsMTUpO2lmKGMuZGMoKSlyZXR1cm4gJyc7ZD1uZXcgSGZiO2ZvcihiPWMuS2MoKTtiLk9iKCk7KXtFZmIoZCwoUThkKCksR0QoYi5QYigpKSkpO2QuYSs9JyAnfXJldHVybiBsY2IoZCxkLmEubGVuZ3RoLTEpfVxuZnVuY3Rpb24gcUVjKGEsYixjKXt2YXIgZCxlO2Q9YS5jW2IuYy5wXVtiLnBdO2U9YS5jW2MuYy5wXVtjLnBdO2lmKGQuYSE9bnVsbCYmZS5hIT1udWxsKXtyZXR1cm4gRGRiKGQuYSxlLmEpfWVsc2UgaWYoZC5hIT1udWxsKXtyZXR1cm4gLTF9ZWxzZSBpZihlLmEhPW51bGwpe3JldHVybiAxfXJldHVybiAwfVxuZnVuY3Rpb24genFkKGEsYil7dmFyIGMsZCxlLGYsZyxoO2lmKGIpe2Y9Yi5hLmxlbmd0aDtjPW5ldyBZZ2UoZik7Zm9yKGg9KGMuYi1jLmEpKmMuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoYyk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTkpO2U9WnBkKGIsZy5hKTtkPW5ldyBDcmQoYSk7QXFkKGQuYSxlKX19fVxuZnVuY3Rpb24gUXFkKGEsYil7dmFyIGMsZCxlLGYsZyxoO2lmKGIpe2Y9Yi5hLmxlbmd0aDtjPW5ldyBZZ2UoZik7Zm9yKGg9KGMuYi1jLmEpKmMuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoYyk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTkpO2U9WnBkKGIsZy5hKTtkPW5ldyBscmQoYSk7bnFkKGQuYSxlKX19fVxuZnVuY3Rpb24gZUZkKGIpe3ZhciBjO2lmKGIhPW51bGwmJmIubGVuZ3RoPjAmJmJmYihiLGIubGVuZ3RoLTEpPT0zMyl7dHJ5e2M9UEVkKHFmYihiLDAsYi5sZW5ndGgtMSkpO3JldHVybiBjLmU9PW51bGx9Y2F0Y2goYSl7YT11YmIoYSk7aWYoIUpEKGEsMzIpKXRocm93IHZiYihhKX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gaDNkKGEsYixjKXt2YXIgZCxlLGY7ZD1iLmFrKCk7Zj1iLmRkKCk7ZT1kLiRqKCk/SDJkKGEsMyxkLG51bGwsZixNMmQoYSxkLGYsSkQoZCw5OSkmJihCRChkLDE4KS5CYiZUamUpIT0wKSx0cnVlKTpIMmQoYSwxLGQsZC56aigpLGYsLTEsdHJ1ZSk7Yz9jLkVpKGUpOihjPWUpO3JldHVybiBjfVxuZnVuY3Rpb24gVmVlKCl7dmFyIGEsYixjO2I9MDtmb3IoYT0wO2E8J1gnLmxlbmd0aDthKyspe2M9VWVlKChCQ2IoYSwnWCcubGVuZ3RoKSwnWCcuY2hhckNvZGVBdChhKSkpO2lmKGM9PTApdGhyb3cgdmJiKG5ldyBtZGUoJ1Vua25vd24gT3B0aW9uOiAnKydYJy5zdWJzdHIoYSkpKTtifD1jfXJldHVybiBifVxuZnVuY3Rpb24gbVpiKGEsYixjKXt2YXIgZCxlLGY7ZD1RX2IoYik7ZT1hX2IoZCk7Zj1uZXcgSDBiO0YwYihmLGIpO3N3aXRjaChjLmcpe2Nhc2UgMTpHMGIoZixXY2QoWmNkKGUpKSk7YnJlYWs7Y2FzZSAyOkcwYihmLFpjZChlKSk7fXlOYihmLChOeWMoKSxVeGMpLEVEKHZOYihhLFV4YykpKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIFU5YihhKXt2YXIgYixjO2I9QkQoUnIobmV3IFNyKHVyKFJfYihhLmEpLmEuS2MoKSxuZXcgU3EpKSksMTcpO2M9QkQoUnIobmV3IFNyKHVyKFVfYihhLmEpLmEuS2MoKSxuZXcgU3EpKSksMTcpO3JldHVybiBDY2IoREQodk5iKGIsKHd0YygpLGx0YykpKSl8fENjYihERCh2TmIoYyxsdGMpKSl9XG5mdW5jdGlvbiBYamMoKXtYamM9Y2NiO1RqYz1uZXcgWWpjKCdPTkVfU0lERScsMCk7VmpjPW5ldyBZamMoJ1RXT19TSURFU19DT1JORVInLDEpO1dqYz1uZXcgWWpjKCdUV09fU0lERVNfT1BQT1NJTkcnLDIpO1VqYz1uZXcgWWpjKCdUSFJFRV9TSURFUycsMyk7U2pjPW5ldyBZamMoJ0ZPVVJfU0lERVMnLDQpfVxuZnVuY3Rpb24gamtjKGEsYixjLGQsZSl7dmFyIGYsZztmPUJEKEdBYihKQWIoYi5PYygpLG5ldyBfa2MpLEJ5YihuZXcgZnpiLG5ldyBkemIsbmV3IEV6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsWyhGeWIoKSxEeWIpXSkpKSwxNSk7Zz1CRChTaShhLmIsYyxkKSwxNSk7ZT09MD9nLldjKDAsZik6Zy5HYyhmKX1cbmZ1bmN0aW9uIEtEYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGY9bmV3IG9sYihiLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7Zm9yKGQ9bmV3IFNyKHVyKFJfYihlKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDE3KTtnPWMuYy5pLnA7YS5uW2ddPWEubltnXS0xfX19XG5mdW5jdGlvbiBjbmMoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihmPW5ldyBvbGIoYi5kKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTAxKTtnPUJEKE9oYihhLmMsZSksMTEyKS5vO2ZvcihkPW5ldyBHcWIoZS5iKTtkLmE8ZC5jLmEubGVuZ3RoOyl7Yz1CRChGcWIoZCksNjEpO29qYyhlLGMsZyl9fX1cbmZ1bmN0aW9uIEhKYyhhKXt2YXIgYixjO2ZvcihjPW5ldyBvbGIoYS5lLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyOSk7WUpjKGEsYil9TUFiKEpBYihMQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZS5iLDE2KSksbmV3IFlLYyksbmV3IHRMYyksbmV3IHZMYyksbmV3IHhMYyhhKSl9XG5mdW5jdGlvbiBRd2QoYSxiKXtpZighYil7cmV0dXJuIGZhbHNlfWVsc2V7aWYoYS5EaShiKSl7cmV0dXJuIGZhbHNlfWlmKCFhLmkpe2lmKEpEKGIsMTQzKSl7YS5pPUJEKGIsMTQzKTtyZXR1cm4gdHJ1ZX1lbHNle2EuaT1uZXcgSHhkO3JldHVybiBhLmkuRWkoYil9fWVsc2V7cmV0dXJuIGEuaS5FaShiKX19fVxuZnVuY3Rpb24gQjlkKGEpe2E9UWdlKGEsdHJ1ZSk7aWYoZGZiKGtzZSxhKXx8ZGZiKCcxJyxhKSl7cmV0dXJuIEJjYigpLEFjYn1lbHNlIGlmKGRmYihsc2UsYSl8fGRmYignMCcsYSkpe3JldHVybiBCY2IoKSx6Y2J9dGhyb3cgdmJiKG5ldyBuOGQoXCJJbnZhbGlkIGJvb2xlYW4gdmFsdWU6ICdcIithK1wiJ1wiKSl9XG5mdW5jdGlvbiBLZChhLGIsYyl7dmFyIGQsZSxmO2ZvcihlPWEudmMoKS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDQyKTtmPWQuY2QoKTtpZihQRChiKT09PVBEKGYpfHxiIT1udWxsJiZwYihiLGYpKXtpZihjKXtkPW5ldyBwamIoZC5jZCgpLGQuZGQoKSk7ZS5RYigpfXJldHVybiBkfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGRLYihhKXskSmIoKTt2YXIgYixjLGQ7aWYoIWEuQi5IYygoSWRkKCksQWRkKSkpe3JldHVybn1kPWEuZi5pO2I9bmV3IEs2YyhhLmEuYyk7Yz1uZXcgcDBiO2MuYj1iLmMtZC5jO2MuZD1iLmQtZC5kO2MuYz1kLmMrZC5iLShiLmMrYi5iKTtjLmE9ZC5kK2QuYS0oYi5kK2IuYSk7YS5lLkZmKGMpfVxuZnVuY3Rpb24gTE5iKGEsYixjLGQpe3ZhciBlLGYsZztnPSR3bmQuTWF0aC5taW4oYyxPTmIoQkQoYS5iLDY1KSxiLGMsZCkpO2ZvcihmPW5ldyBvbGIoYS5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMjIxKTtlIT1iJiYoZz0kd25kLk1hdGgubWluKGcsTE5iKGUsYixnLGQpKSl9cmV0dXJuIGd9XG5mdW5jdGlvbiBXWmIoYSl7dmFyIGIsYyxkLGU7ZT1LQyhPUSxuaWUsMTkzLGEuYi5jLmxlbmd0aCwwLDIpO2Q9bmV3IEJpYihhLmIsMCk7d2hpbGUoZC5iPGQuZC5nYygpKXtiPShzQ2IoZC5iPGQuZC5nYygpKSxCRChkLmQuWGIoZC5jPWQuYisrKSwyOSkpO2M9ZC5iLTE7ZVtjXT1sX2IoYi5hKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIEszYihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpO2c9ZUxiKGRMYihpTGIoSDNiKGMpKSxkKSxDM2IoYSxjLGUpKTtmb3IoaT1ZX2IoYSxjKS5LYygpO2kuT2IoKTspe2g9QkQoaS5QYigpLDExKTtpZihiW2gucF0pe2Y9YltoLnBdLmk7RWtiKGcuZCxuZXcgQkxiKGYsYkxiKGcsZikpKX19Y0xiKGcpfVxuZnVuY3Rpb24gc2ljKGEsYil7dGhpcy5mPW5ldyBMcWI7dGhpcy5iPW5ldyBMcWI7dGhpcy5qPW5ldyBMcWI7dGhpcy5hPWE7dGhpcy5jPWI7dGhpcy5jPjAmJnJpYyh0aGlzLHRoaXMuYy0xLChVY2QoKSx6Y2QpKTt0aGlzLmM8dGhpcy5hLmxlbmd0aC0xJiZyaWModGhpcyx0aGlzLmMrMSwoVWNkKCksVGNkKSl9XG5mdW5jdGlvbiBTRWMoYSl7YS5sZW5ndGg+MCYmYVswXS5sZW5ndGg+MCYmKHRoaXMuYz1DY2IoREQodk5iKFFfYihhWzBdWzBdKSwod3RjKCksUnNjKSkpKSk7dGhpcy5hPUtDKENYLG5pZSwyMDE4LGEubGVuZ3RoLDAsMik7dGhpcy5iPUtDKEZYLG5pZSwyMDE5LGEubGVuZ3RoLDAsMik7dGhpcy5kPW5ldyBzc31cbmZ1bmN0aW9uIHRLYyhhKXtpZihhLmMubGVuZ3RoPT0wKXtyZXR1cm4gZmFsc2V9aWYoKHRDYigwLGEuYy5sZW5ndGgpLEJEKGEuY1swXSwxNykpLmMuaS5rPT0oajBiKCksZzBiKSl7cmV0dXJuIHRydWV9cmV0dXJuIEZBYihOQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYSwxNikpLG5ldyB3S2MpLG5ldyB5S2MpfVxuZnVuY3Rpb24gclJjKGEsYixjKXtPZGQoYywnVHJlZSBsYXlvdXQnLDEpO0gyYyhhLmIpO0syYyhhLmIsKHlSYygpLHVSYyksdVJjKTtLMmMoYS5iLHZSYyx2UmMpO0syYyhhLmIsd1JjLHdSYyk7SzJjKGEuYix4UmMseFJjKTthLmE9RjJjKGEuYixiKTtzUmMoYSxiLFVkZChjLDEpKTtRZGQoYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBIWGMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtoPWdWYyhiKTtmPWIuZjtpPWIuZztnPSR3bmQuTWF0aC5zcXJ0KGYqZitpKmkpO2U9MDtmb3IoZD1uZXcgb2xiKGgpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwzMyk7ZSs9SFhjKGEsYyl9cmV0dXJuICR3bmQuTWF0aC5tYXgoZSxnKX1cbmZ1bmN0aW9uIGRjZCgpe2RjZD1jY2I7Y2NkPW5ldyBnY2Qob2xlLDApO2JjZD1uZXcgZ2NkKCdGUkVFJywxKTthY2Q9bmV3IGdjZCgnRklYRURfU0lERScsMik7WmJkPW5ldyBnY2QoJ0ZJWEVEX09SREVSJywzKTtfYmQ9bmV3IGdjZCgnRklYRURfUkFUSU8nLDQpOyRiZD1uZXcgZ2NkKCdGSVhFRF9QT1MnLDUpfVxuZnVuY3Rpb24gYzFkKGEsYil7dmFyIGMsZCxlO2M9Yi5IaChhLmEpO2lmKGMpe2U9R0QoQUFkKCghYy5iJiYoYy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYykpLGMuYiksQ3dlKSk7Zm9yKGQ9MTtkPChPNmQoKSxONmQpLmxlbmd0aDsrK2Qpe2lmKGRmYihONmRbZF0sZSkpe3JldHVybiBkfX19cmV0dXJuIDB9XG5mdW5jdGlvbiBRbGIoYSl7dmFyIGIsYyxkLGUsZjtpZihhPT1udWxsKXtyZXR1cm4gWGhlfWY9bmV3IHh3YihTaGUsJ1snLCddJyk7Zm9yKGM9YSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07dXdiKGYsJycrYil9cmV0dXJuICFmLmE/Zi5jOmYuZS5sZW5ndGg9PTA/Zi5hLmE6Zi5hLmErKCcnK2YuZSl9XG5mdW5jdGlvbiBXbGIoYSl7dmFyIGIsYyxkLGUsZjtpZihhPT1udWxsKXtyZXR1cm4gWGhlfWY9bmV3IHh3YihTaGUsJ1snLCddJyk7Zm9yKGM9YSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07dXdiKGYsJycrYil9cmV0dXJuICFmLmE/Zi5jOmYuZS5sZW5ndGg9PTA/Zi5hLmE6Zi5hLmErKCcnK2YuZSl9XG5mdW5jdGlvbiBNZChhKXt2YXIgYixjLGQ7ZD1uZXcgeHdiKFNoZSwneycsJ30nKTtmb3IoYz1hLnZjKCkuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSw0Mik7dXdiKGQsTmQoYSxiLmNkKCkpKyc9JytOZChhLGIuZGQoKSkpfXJldHVybiAhZC5hP2QuYzpkLmUubGVuZ3RoPT0wP2QuYS5hOmQuYS5hKygnJytkLmUpfVxuZnVuY3Rpb24gRUdiKGEpe3ZhciBiLGMsZCxlO3doaWxlKCFha2IoYS5vKSl7Yz1CRChma2IoYS5vKSw0Nik7ZD1CRChjLmEsMTIxKTtiPUJEKGMuYiwyMTMpO2U9eEZiKGIsZCk7aWYoYi5lPT1kKXtORmIoZS5nLGIpO2QuZT1lLmUrYi5hfWVsc2V7TkZiKGUuYixiKTtkLmU9ZS5lLWIuYX1Fa2IoYS5lLmEsZCl9fVxuZnVuY3Rpb24gRjZiKGEsYil7dmFyIGMsZCxlO2M9bnVsbDtmb3IoZT1CRChiLktiKGEpLDIwKS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDE3KTtpZighYyl7Yz1kLmMuaT09YT9kLmQuaTpkLmMuaX1lbHNle2lmKChkLmMuaT09YT9kLmQuaTpkLmMuaSkhPWMpe3JldHVybiBmYWxzZX19fXJldHVybiB0cnVlfVxuZnVuY3Rpb24gdVBjKGEsYil7dmFyIGMsZCxlLGYsZztjPVdOYyhhLGZhbHNlLGIpO2ZvcihlPW5ldyBvbGIoYyk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEyOSk7ZC5kPT0wPyhCT2MoZCxudWxsKSxDT2MoZCxudWxsKSk6KGY9ZC5hLGc9ZC5iLEJPYyhkLGcpLENPYyhkLGYpLHVuZGVmaW5lZCl9fVxuZnVuY3Rpb24gcVFjKGEpe3ZhciBiLGM7Yj1uZXcgajNjO2QzYyhiLGNRYyk7Yz1CRCh2TmIoYSwod3RjKCksS3NjKSksMjEpO2MuSGMoKE9yYygpLE5yYykpJiZkM2MoYixnUWMpO2MuSGMoRXJjKSYmZDNjKGIsZFFjKTtjLkhjKExyYykmJmQzYyhiLGZRYyk7Yy5IYyhHcmMpJiZkM2MoYixlUWMpO3JldHVybiBifVxuZnVuY3Rpb24gWGFjKGEpe3ZhciBiLGMsZCxlO1dhYyhhKTtmb3IoYz1uZXcgU3IodXIoT19iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksMTcpO2Q9Yi5jLmk9PWE7ZT1kP2IuZDpiLmM7ZD9SWmIoYixudWxsKTpRWmIoYixudWxsKTt5TmIoYiwod3RjKCksY3RjKSxlKTtfYWMoYSxlLmkpfX1cbmZ1bmN0aW9uIHdtYyhhLGIsYyxkKXt2YXIgZSxmO2Y9Yi5pO2U9Y1tmLmddW2EuZFtmLmddXTtzd2l0Y2goZi5nKXtjYXNlIDE6ZS09ZCtiLmouYjtiLmcuYj1lO2JyZWFrO2Nhc2UgMzplKz1kO2IuZy5iPWU7YnJlYWs7Y2FzZSA0OmUtPWQrYi5qLmE7Yi5nLmE9ZTticmVhaztjYXNlIDI6ZSs9ZDtiLmcuYT1lO319XG5mdW5jdGlvbiBhVmMoYSl7dmFyIGIsYyxkO2ZvcihjPW5ldyBGeWQoKCFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSksYS5hKSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDMzKTtkPSRzZChiKTtpZighUXIobmV3IFNyKHVyKGQuYS5LYygpLG5ldyBTcSkpKSl7cmV0dXJuIGJ9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gQ29kKCl7dmFyIGE7aWYoeW9kKXJldHVybiBCRChuVWQoKHlGZCgpLHhGZCkseXRlKSwyMDE2KTthPUJEKEpEKFBoYigoeUZkKCkseEZkKSx5dGUpLDU1NSk/UGhiKHhGZCx5dGUpOm5ldyBCb2QsNTU1KTt5b2Q9dHJ1ZTt6b2QoYSk7QW9kKGEpO1RuZChhKTtTaGIoeEZkLHl0ZSxhKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIHQzZChhLGIsYyl7dmFyIGQsZTtpZihhLmo9PTApcmV0dXJuIGM7ZT1CRChMTGQoYSxiLGMpLDcyKTtkPWMuYWsoKTtpZighZC5JaigpfHwhYS5hLnJsKGQpKXt0aHJvdyB2YmIobmV3IGh6KFwiSW52YWxpZCBlbnRyeSBmZWF0dXJlICdcIitkLkhqKCkuemIrJy4nK2QubmUoKStcIidcIikpfXJldHVybiBlfVxuZnVuY3Rpb24gUWkoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2ZvcihoPWEuYSxpPTAsaj1oLmxlbmd0aDtpPGo7KytpKXtnPWhbaV07Zm9yKGQ9ZyxlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07aWYoUEQoYik9PT1QRChjKXx8YiE9bnVsbCYmcGIoYixjKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBxaGIoYSl7dmFyIGIsYyxkO2lmKHliYihhLDApPj0wKXtjPUFiYihhLEpqZSk7ZD1IYmIoYSxKamUpfWVsc2V7Yj1QYmIoYSwxKTtjPUFiYihiLDUwMDAwMDAwMCk7ZD1IYmIoYiw1MDAwMDAwMDApO2Q9d2JiKE5iYihkLDEpLHhiYihhLDEpKX1yZXR1cm4gTWJiKE5iYihkLDMyKSx4YmIoYyxZamUpKX1cbmZ1bmN0aW9uIG9RYihhLGIsYyl7dmFyIGQsZTtkPShzQ2IoYi5iIT0wKSxCRChOc2IoYixiLmEuYSksOCkpO3N3aXRjaChjLmcpe2Nhc2UgMDpkLmI9MDticmVhaztjYXNlIDI6ZC5iPWEuZjticmVhaztjYXNlIDM6ZC5hPTA7YnJlYWs7ZGVmYXVsdDpkLmE9YS5nO31lPUpzYihiLDApO1ZzYihlLGQpO3JldHVybiBifVxuZnVuY3Rpb24gcG1jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7aT1hLmI7Zj1iLmQ7Zz1mLmo7aD11bWMoZyxpLmRbZy5nXSxjKTtlPVA2YyhSNmMoZi5uKSxmLmEpO3N3aXRjaChmLmouZyl7Y2FzZSAxOmNhc2UgMzpoLmErPWUuYTticmVhaztjYXNlIDI6Y2FzZSA0OmguYis9ZS5iO31Hc2IoZCxoLGQuYy5iLGQuYyl9XG5mdW5jdGlvbiB5SmMoYSxiLGMpe3ZhciBkLGUsZixnO2c9SmtiKGEuZSxiLDApO2Y9bmV3IHpKYztmLmI9YztkPW5ldyBCaWIoYS5lLGcpO3doaWxlKGQuYjxkLmQuZ2MoKSl7ZT0oc0NiKGQuYjxkLmQuZ2MoKSksQkQoZC5kLlhiKGQuYz1kLmIrKyksMTApKTtlLnA9YztFa2IoZi5lLGUpO3VpYihkKX1yZXR1cm4gZn1cbmZ1bmN0aW9uIHNZYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2U9bnVsbDtmPTA7Zm9yKGg9bmV3IG9sYihiKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMzMpO2k9Zy5pK2cuZztpZihhPGcuaitnLmYrZCl7IWU/KGU9Zyk6Yy5pLWk8Yy5pLWYmJihlPWcpO2Y9ZS5pK2UuZ319cmV0dXJuICFlPzA6ZitkfVxuZnVuY3Rpb24gdFljKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7Zj1udWxsO2U9MDtmb3IoaD1uZXcgb2xiKGIpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwzMyk7aT1nLmorZy5mO2lmKGE8Zy5pK2cuZytkKXshZj8oZj1nKTpjLmotaTxjLmotZSYmKGY9Zyk7ZT1mLmorZi5mfX1yZXR1cm4gIWY/MDplK2R9XG5mdW5jdGlvbiBtQShhKXt2YXIgYixjLGQ7Yj1mYWxzZTtkPWEuYi5jLmxlbmd0aDtmb3IoYz0wO2M8ZDtjKyspe2lmKG5BKEJEKElrYihhLmIsYyksNDM0KSkpe2lmKCFiJiZjKzE8ZCYmbkEoQkQoSWtiKGEuYixjKzEpLDQzNCkpKXtiPXRydWU7QkQoSWtiKGEuYixjKSw0MzQpLmE9dHJ1ZX19ZWxzZXtiPWZhbHNlfX19XG5mdW5jdGlvbiBBaGIoYSxiLGMsZCxlKXt2YXIgZixnO2Y9MDtmb3IoZz0wO2c8ZTtnKyspe2Y9d2JiKGYsUWJiKHhiYihiW2ddLFlqZSkseGJiKGRbZ10sWWplKSkpO2FbZ109VGJiKGYpO2Y9T2JiKGYsMzIpfWZvcig7ZzxjO2crKyl7Zj13YmIoZix4YmIoYltnXSxZamUpKTthW2ddPVRiYihmKTtmPU9iYihmLDMyKX19XG5mdW5jdGlvbiBKaGIoYSxiKXtEaGIoKTt2YXIgYyxkO2Q9KEhnYigpLENnYik7Yz1hO2Zvcig7Yj4xO2I+Pj0xKXsoYiYxKSE9MCYmKGQ9T2diKGQsYykpO2MuZD09MT8oYz1PZ2IoYyxjKSk6KGM9bmV3IFhnYihMaGIoYy5hLGMuZCxLQyhXRCxvamUsMjUsYy5kPDwxLDE1LDEpKSkpfWQ9T2diKGQsYyk7cmV0dXJuIGR9XG5mdW5jdGlvbiB6dWIoKXt6dWI9Y2NiO3ZhciBhLGIsYyxkO3d1Yj1LQyhVRCxWamUsMjUsMjUsMTUsMSk7eHViPUtDKFVELFZqZSwyNSwzMywxNSwxKTtkPTEuNTI1ODc4OTA2MjVFLTU7Zm9yKGI9MzI7Yj49MDtiLS0pe3h1YltiXT1kO2QqPTAuNX1jPTE7Zm9yKGE9MjQ7YT49MDthLS0pe3d1YlthXT1jO2MqPTAuNX19XG5mdW5jdGlvbiBTMWIoYSl7dmFyIGIsYztpZihDY2IoREQoaGtkKGEsKE55YygpLGZ4YykpKSkpe2ZvcihjPW5ldyBTcih1cihfc2QoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGMpOyl7Yj1CRChScihjKSw3OSk7aWYoUWxkKGIpKXtpZihDY2IoREQoaGtkKGIsZ3hjKSkpKXtyZXR1cm4gdHJ1ZX19fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBramMoYSxiKXt2YXIgYyxkLGU7aWYoUXFiKGEuZixiKSl7Yi5iPWE7ZD1iLmM7SmtiKGEuaixkLDApIT0tMXx8RWtiKGEuaixkKTtlPWIuZDtKa2IoYS5qLGUsMCkhPS0xfHxFa2IoYS5qLGUpO2M9Yi5hLmI7aWYoYy5jLmxlbmd0aCE9MCl7IWEuaSYmKGEuaT1uZXcgdmpjKGEpKTtxamMoYS5pLGMpfX19XG5mdW5jdGlvbiBybWMoYSl7dmFyIGIsYyxkLGUsZjtjPWEuYy5kO2Q9Yy5qO2U9YS5kLmQ7Zj1lLmo7aWYoZD09Zil7cmV0dXJuIGMucDxlLnA/MDoxfWVsc2UgaWYoWGNkKGQpPT1mKXtyZXR1cm4gMH1lbHNlIGlmKFZjZChkKT09Zil7cmV0dXJuIDF9ZWxzZXtiPWEuYjtyZXR1cm4gdXFiKGIuYixYY2QoZCkpPzA6MX19XG5mdW5jdGlvbiBsemMoKXtsemM9Y2NiO2p6Yz1uZXcgbnpjKEFxZSwwKTtoemM9bmV3IG56YygnTE9OR0VTVF9QQVRIJywxKTtmemM9bmV3IG56YygnQ09GRk1BTl9HUkFIQU0nLDIpO2d6Yz1uZXcgbnpjKFRuZSwzKTtremM9bmV3IG56YygnU1RSRVRDSF9XSURUSCcsNCk7aXpjPW5ldyBuemMoJ01JTl9XSURUSCcsNSl9XG5mdW5jdGlvbiBFM2MoYSl7dmFyIGI7dGhpcy5kPW5ldyBMcWI7dGhpcy5jPWEuYzt0aGlzLmU9YS5kO3RoaXMuYj1hLmI7dGhpcy5mPW5ldyBqZ2QoYS5lKTt0aGlzLmE9YS5hOyFhLmY/KHRoaXMuZz0oYj1CRChnZGIoTzMpLDkpLG5ldyB4cWIoYixCRChfQmIoYixiLmxlbmd0aCksOSksMCkpKToodGhpcy5nPWEuZil9XG5mdW5jdGlvbiBncmQoYSxiKXt2YXIgYyxkLGUsZixnLGg7ZT1hO2c9JHBkKGUsJ2xheW91dE9wdGlvbnMnKTshZyYmKGc9JHBkKGUsRHRlKSk7aWYoZyl7aD1nO2Q9bnVsbDshIWgmJihkPShmPSRCKGgsS0MoWkksbmllLDIsMCw2LDEpKSxuZXcgbUMoaCxmKSkpO2lmKGQpe2M9bmV3IERyZChoLGIpO3JlYihkLGMpfX19XG5mdW5jdGlvbiBhdGQoYSl7aWYoSkQoYSwyMzkpKXtyZXR1cm4gQkQoYSwzMyl9ZWxzZSBpZihKRChhLDE4Nikpe3JldHVybiBtcGQoQkQoYSwxMTgpKX1lbHNlIGlmKCFhKXt0aHJvdyB2YmIobmV3IEhlYihndWUpKX1lbHNle3Rocm93IHZiYihuZXcgY2diKCdPbmx5IHN1cHBvcnQgbm9kZXMgYW5kIHBvcnRzLicpKX19XG5mdW5jdGlvbiBDQShhLGIsYyxkKXtpZihiPj0wJiZkZmIoYS5zdWJzdHIoYiwnR01UJy5sZW5ndGgpLCdHTVQnKSl7Y1swXT1iKzM7cmV0dXJuIHRBKGEsYyxkKX1pZihiPj0wJiZkZmIoYS5zdWJzdHIoYiwnVVRDJy5sZW5ndGgpLCdVVEMnKSl7Y1swXT1iKzM7cmV0dXJuIHRBKGEsYyxkKX1yZXR1cm4gdEEoYSxjLGQpfVxuZnVuY3Rpb24gdGpjKGEsYil7dmFyIGMsZCxlLGYsZztmPWEuZy5hO2c9YS5nLmI7Zm9yKGQ9bmV3IG9sYihhLmQpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw3MCk7ZT1jLm47ZS5hPWY7YS5pPT0oVWNkKCksQWNkKT8oZS5iPWcrYS5qLmItYy5vLmIpOihlLmI9Zyk7UDZjKGUsYik7Zis9Yy5vLmErYS5lfX1cbmZ1bmN0aW9uIE9kZChhLGIsYyl7aWYoYS5iKXt0aHJvdyB2YmIobmV3IFpkYignVGhlIHRhc2sgaXMgYWxyZWFkeSBkb25lLicpKX1lbHNlIGlmKGEucCE9bnVsbCl7cmV0dXJuIGZhbHNlfWVsc2V7YS5wPWI7YS5yPWM7YS5rJiYoYS5vPShaZmIoKSxJYmIoQ2JiKERhdGUubm93KCkpLF9pZSkpKTtyZXR1cm4gdHJ1ZX19XG5mdW5jdGlvbiBoc2QoYSl7dmFyIGIsYyxkLGUsZixnLGg7aD1uZXcgZUM7Yz1hLnRnKCk7ZT1jIT1udWxsO2UmJlVwZChoLFZ0ZSxhLnRnKCkpO2Q9YS5uZSgpO2Y9ZCE9bnVsbDtmJiZVcGQoaCxmdWUsYS5uZSgpKTtiPWEuc2coKTtnPWIhPW51bGw7ZyYmVXBkKGgsJ2Rlc2NyaXB0aW9uJyxhLnNnKCkpO3JldHVybiBofVxuZnVuY3Rpb24gdUlkKGEsYixjKXt2YXIgZCxlLGY7Zj1hLnE7YS5xPWI7aWYoKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wKXtlPW5ldyBuU2QoYSwxLDksZixiKTshYz8oYz1lKTpjLkVpKGUpfWlmKCFiKXshIWEuciYmKGM9YS5uayhudWxsLGMpKX1lbHNle2Q9Yi5jO2QhPWEuciYmKGM9YS5uayhkLGMpKX1yZXR1cm4gY31cbmZ1bmN0aW9uIElZZChhLGIsYyl7dmFyIGQsZSxmLGcsaDtjPShoPWIsa2lkKGgsYS5lLC0xLWEuYyxjKSk7Zz1BWWQoYS5hKTtmb3IoZj0oZD1uZXcgbmliKChuZXcgZWliKGcuYSkpLmEpLG5ldyBaWWQoZCkpO2YuYS5iOyl7ZT1CRChsaWIoZi5hKS5jZCgpLDg3KTtjPVFRZChlLE1RZChlLGEuYSksYyl9cmV0dXJuIGN9XG5mdW5jdGlvbiBKWWQoYSxiLGMpe3ZhciBkLGUsZixnLGg7Yz0oaD1iLGxpZChoLGEuZSwtMS1hLmMsYykpO2c9QVlkKGEuYSk7Zm9yKGY9KGQ9bmV3IG5pYigobmV3IGVpYihnLmEpKS5hKSxuZXcgWllkKGQpKTtmLmEuYjspe2U9QkQobGliKGYuYSkuY2QoKSw4Nyk7Yz1RUWQoZSxNUWQoZSxhLmEpLGMpfXJldHVybiBjfVxuZnVuY3Rpb24gamhiKGEsYixjLGQpe3ZhciBlLGYsZztpZihkPT0wKXskZmIoYiwwLGEsYyxhLmxlbmd0aC1jKX1lbHNle2c9MzItZDthW2EubGVuZ3RoLTFdPTA7Zm9yKGY9YS5sZW5ndGgtMTtmPmM7Zi0tKXthW2ZdfD1iW2YtYy0xXT4+Pmc7YVtmLTFdPWJbZi1jLTFdPDxkfX1mb3IoZT0wO2U8YztlKyspe2FbZV09MH19XG5mdW5jdGlvbiBMSmIoYSl7dmFyIGIsYyxkLGUsZjtiPTA7Yz0wO2ZvcihmPWEuS2MoKTtmLk9iKCk7KXtkPUJEKGYuUGIoKSwxMTEpO2I9JHduZC5NYXRoLm1heChiLGQuZC5iKTtjPSR3bmQuTWF0aC5tYXgoYyxkLmQuYyl9Zm9yKGU9YS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDExMSk7ZC5kLmI9YjtkLmQuYz1jfX1cbmZ1bmN0aW9uIFRLYihhKXt2YXIgYixjLGQsZSxmO2M9MDtiPTA7Zm9yKGY9YS5LYygpO2YuT2IoKTspe2Q9QkQoZi5QYigpLDExMSk7Yz0kd25kLk1hdGgubWF4KGMsZC5kLmQpO2I9JHduZC5NYXRoLm1heChiLGQuZC5hKX1mb3IoZT1hLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTExKTtkLmQuZD1jO2QuZC5hPWJ9fVxuZnVuY3Rpb24gcnBjKGEsYil7dmFyIGMsZCxlLGY7Zj1uZXcgUmtiO2U9MDtkPWIuS2MoKTt3aGlsZShkLk9iKCkpe2M9bWViKEJEKGQuUGIoKSwxOSkuYStlKTt3aGlsZShjLmE8YS5mJiYhVm9jKGEsYy5hKSl7Yz1tZWIoYy5hKzEpOysrZX1pZihjLmE+PWEuZil7YnJlYWt9Zi5jW2YuYy5sZW5ndGhdPWN9cmV0dXJuIGZ9XG5mdW5jdGlvbiBzZmQoYSl7dmFyIGIsYyxkLGU7Yj1udWxsO2ZvcihlPW5ldyBvbGIoYS53ZigpKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTgxKTtjPW5ldyBKNmMoZC5xZigpLmEsZC5xZigpLmIsZC5yZigpLmEsZC5yZigpLmIpOyFiPyhiPWMpOkg2YyhiLGMpfSFiJiYoYj1uZXcgSTZjKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEZrZChhLGIsYyxkKXt2YXIgZSxmO2lmKGM9PTEpe3JldHVybiAhYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKSxTeGQoYS5uLGIsZCl9cmV0dXJuIGY9QkQoWEtkKChlPUJEKEFqZChhLDE2KSwyNiksIWU/YS56aCgpOmUpLGMpLDY2KSxmLk5qKCkuUWooYSx5amQoYSksYy1hTGQoYS56aCgpKSxiLGQpfVxuZnVuY3Rpb24gaXVkKGEsYixjKXt2YXIgZCxlLGYsZyxoO2Q9Yy5nYygpO2EucWkoYS5pK2QpO2g9YS5pLWI7aD4wJiYkZmIoYS5nLGIsYS5nLGIrZCxoKTtnPWMuS2MoKTthLmkrPWQ7Zm9yKGU9MDtlPGQ7KytlKXtmPWcuUGIoKTttdWQoYSxiLGEub2koYixmKSk7YS5iaShiLGYpO2EuY2koKTsrK2J9cmV0dXJuIGQhPTB9XG5mdW5jdGlvbiB4SWQoYSxiLGMpe3ZhciBkO2lmKGIhPWEucSl7ISFhLnEmJihjPWxpZChhLnEsYSwtMTAsYykpOyEhYiYmKGM9a2lkKGIsYSwtMTAsYykpO2M9dUlkKGEsYixjKX1lbHNlIGlmKChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCl7ZD1uZXcgblNkKGEsMSw5LGIsYik7IWM/KGM9ZCk6Yy5FaShkKX1yZXR1cm4gY31cbmZ1bmN0aW9uIFlqKGEsYixjLGQpe01iKChjJm9pZSk9PTAsJ2ZsYXRNYXAgZG9lcyBub3Qgc3VwcG9ydCBTVUJTSVpFRCBjaGFyYWN0ZXJpc3RpYycpO01iKChjJjQpPT0wLCdmbGF0TWFwIGRvZXMgbm90IHN1cHBvcnQgU09SVEVEIGNoYXJhY3RlcmlzdGljJyk7UWIoYSk7UWIoYik7cmV0dXJuIG5ldyBqayhhLGMsZCxiKX1cbmZ1bmN0aW9uIFF5KGEsYil7dkNiKGIsJ0Nhbm5vdCBzdXBwcmVzcyBhIG51bGwgZXhjZXB0aW9uLicpO21DYihiIT1hLCdFeGNlcHRpb24gY2FuIG5vdCBzdXBwcmVzcyBpdHNlbGYuJyk7aWYoYS5pKXtyZXR1cm59YS5rPT1udWxsPyhhLms9T0MoR0MoX0ksMSksbmllLDc4LDAsW2JdKSk6KGEua1thLmsubGVuZ3RoXT1iKX1cbmZ1bmN0aW9uIG9BKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtnPWMubGVuZ3RoO2Y9MDtlPS0xO2o9c2ZiKGEuc3Vic3RyKGIpLChudGIoKSxsdGIpKTtmb3IoaD0wO2g8ZzsrK2gpe2k9Y1toXS5sZW5ndGg7aWYoaT5mJiZuZmIoaixzZmIoY1toXSxsdGIpKSl7ZT1oO2Y9aX19ZT49MCYmKGRbMF09YitmKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIE1JYihhLGIpe3ZhciBjO2M9TkliKGEuYi5IZigpLGIuYi5IZigpKTtpZihjIT0wKXtyZXR1cm4gY31zd2l0Y2goYS5iLkhmKCkuZyl7Y2FzZSAxOmNhc2UgMjpyZXR1cm4gYmViKGEuYi5zZigpLGIuYi5zZigpKTtjYXNlIDM6Y2FzZSA0OnJldHVybiBiZWIoYi5iLnNmKCksYS5iLnNmKCkpO31yZXR1cm4gMH1cbmZ1bmN0aW9uIGlSYihhKXt2YXIgYixjLGQ7ZD1hLmUuYy5sZW5ndGg7YS5hPUlDKFdELFtuaWUsb2plXSxbNDgsMjVdLDE1LFtkLGRdLDIpO2ZvcihjPW5ldyBvbGIoYS5jKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMjgyKTthLmFbYi5jLmJdW2IuZC5iXSs9QkQodk5iKGIsKHdTYigpLG9TYikpLDE5KS5hfX1cbmZ1bmN0aW9uIEgxYyhhLGIsYyl7T2RkKGMsJ0dyb3cgVHJlZScsMSk7YS5iPWIuZjtpZihDY2IoREQodk5iKGIsKFhOYigpLFZOYikpKSkpe2EuYz1uZXcgdE9iO0QxYyhhLG51bGwpfWVsc2V7YS5jPW5ldyB0T2J9YS5hPWZhbHNlO0YxYyhhLGIuZik7eU5iKGIsV05iLChCY2IoKSxhLmE/dHJ1ZTpmYWxzZSkpO1FkZChjKX1cbmZ1bmN0aW9uIFVtZChhLGIpe3ZhciBjLGQsZSxmLGc7aWYoYT09bnVsbCl7cmV0dXJuIG51bGx9ZWxzZXtnPUtDKFRELCRpZSwyNSwyKmIsMTUsMSk7Zm9yKGQ9MCxlPTA7ZDxiOysrZCl7Yz1hW2RdPj40JjE1O2Y9YVtkXSYxNTtnW2UrK109UW1kW2NdO2dbZSsrXT1RbWRbZl19cmV0dXJuIHpmYihnLDAsZy5sZW5ndGgpfX1cbmZ1bmN0aW9uIGozZChhLGIsYyl7dmFyIGQsZSxmO2Q9Yi5haygpO2Y9Yi5kZCgpO2U9ZC4kaigpP0gyZChhLDQsZCxmLG51bGwsTTJkKGEsZCxmLEpEKGQsOTkpJiYoQkQoZCwxOCkuQmImVGplKSE9MCksdHJ1ZSk6SDJkKGEsZC5LaigpPzI6MSxkLGYsZC56aigpLC0xLHRydWUpO2M/Yy5FaShlKTooYz1lKTtyZXR1cm4gY31cbmZ1bmN0aW9uIHdmYihhKXt2YXIgYixjO2lmKGE+PVRqZSl7Yj1VamUrKGEtVGplPj4xMCYxMDIzKSZhamU7Yz01NjMyMCsoYS1UamUmMTAyMykmYWplO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGIpKygnJytTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKX1lbHNle3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGEmYWplKX19XG5mdW5jdGlvbiBiS2IoYSxiKXskSmIoKTt2YXIgYyxkLGUsZjtlPUJEKEJEKFFjKGEucixiKSwyMSksODQpO2lmKGUuZ2MoKT49Mil7ZD1CRChlLktjKCkuUGIoKSwxMTEpO2M9YS51LkhjKChyY2QoKSxtY2QpKTtmPWEudS5IYyhxY2QpO3JldHVybiAhZC5hJiYhYyYmKGUuZ2MoKT09Mnx8Zil9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gSVZjKGEsYixjLGQsZSl7dmFyIGYsZyxoO2Y9SlZjKGEsYixjLGQsZSk7aD1mYWxzZTt3aGlsZSghZil7QVZjKGEsZSx0cnVlKTtoPXRydWU7Zj1KVmMoYSxiLGMsZCxlKX1oJiZBVmMoYSxlLGZhbHNlKTtnPWRWYyhlKTtpZihnLmMubGVuZ3RoIT0wKXshIWEuZCYmYS5kLmxnKGcpO0lWYyhhLGUsYyxkLGcpfX1cbmZ1bmN0aW9uIE1hZCgpe01hZD1jY2I7S2FkPW5ldyBOYWQoYW5lLDApO0lhZD1uZXcgTmFkKCdESVJFQ1RFRCcsMSk7TGFkPW5ldyBOYWQoJ1VORElSRUNURUQnLDIpO0dhZD1uZXcgTmFkKCdBU1NPQ0lBVElPTicsMyk7SmFkPW5ldyBOYWQoJ0dFTkVSQUxJWkFUSU9OJyw0KTtIYWQ9bmV3IE5hZCgnREVQRU5ERU5DWScsNSl9XG5mdW5jdGlvbiBrZmQoYSxiKXt2YXIgYztpZighbXBkKGEpKXt0aHJvdyB2YmIobmV3IFpkYihTc2UpKX1jPW1wZChhKTtzd2l0Y2goYi5nKXtjYXNlIDE6cmV0dXJuIC0oYS5qK2EuZik7Y2FzZSAyOnJldHVybiBhLmktYy5nO2Nhc2UgMzpyZXR1cm4gYS5qLWMuZjtjYXNlIDQ6cmV0dXJuIC0oYS5pK2EuZyk7fXJldHVybiAwfVxuZnVuY3Rpb24gY3ViKGEsYil7dmFyIGMsZDt1Q2IoYik7ZD1hLmIuYy5sZW5ndGg7RWtiKGEuYixiKTt3aGlsZShkPjApe2M9ZDtkPShkLTEpLzJ8MDtpZihhLmEudWUoSWtiKGEuYixkKSxiKTw9MCl7TmtiKGEuYixjLGIpO3JldHVybiB0cnVlfU5rYihhLmIsYyxJa2IoYS5iLGQpKX1Oa2IoYS5iLGQsYik7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBCSGIoYSxiLGMsZCl7dmFyIGUsZjtlPTA7aWYoIWMpe2ZvcihmPTA7ZjxzSGI7ZisrKXtlPSR3bmQuTWF0aC5tYXgoZSxxSGIoYS5hW2ZdW2IuZ10sZCkpfX1lbHNle2U9cUhiKGEuYVtjLmddW2IuZ10sZCl9Yj09KGdIYigpLGVIYikmJiEhYS5iJiYoZT0kd25kLk1hdGgubWF4KGUsYS5iLmEpKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIGtuYyhhLGIpe3ZhciBjLGQsZSxmLGcsaDtlPWEuaTtmPWIuaTtpZighZXx8IWYpe3JldHVybiBmYWxzZX1pZihlLmkhPWYuaXx8ZS5pPT0oVWNkKCksemNkKXx8ZS5pPT0oVWNkKCksVGNkKSl7cmV0dXJuIGZhbHNlfWc9ZS5nLmE7Yz1nK2Uuai5hO2g9Zi5nLmE7ZD1oK2Yuai5hO3JldHVybiBnPD1kJiZjPj1ofVxuZnVuY3Rpb24gVHBkKGEsYixjLGQpe3ZhciBlO2U9ZmFsc2U7aWYoTkQoZCkpe2U9dHJ1ZTtVcGQoYixjLEdEKGQpKX1pZighZSl7aWYoS0QoZCkpe2U9dHJ1ZTtUcGQoYSxiLGMsZCl9fWlmKCFlKXtpZihKRChkLDIzNikpe2U9dHJ1ZTtTcGQoYixjLEJEKGQsMjM2KSl9fWlmKCFlKXt0aHJvdyB2YmIobmV3IHZjYihVdGUpKX19XG5mdW5jdGlvbiBXMGQoYSxiKXt2YXIgYyxkLGU7Yz1iLkhoKGEuYSk7aWYoYyl7ZT1BQWQoKCFjLmImJihjLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4NixjKSksYy5iKSxTdmUpO2lmKGUhPW51bGwpe2ZvcihkPTE7ZDwoTzZkKCksSzZkKS5sZW5ndGg7KytkKXtpZihkZmIoSzZkW2RdLGUpKXtyZXR1cm4gZH19fX1yZXR1cm4gMH1cbmZ1bmN0aW9uIFgwZChhLGIpe3ZhciBjLGQsZTtjPWIuSGgoYS5hKTtpZihjKXtlPUFBZCgoIWMuYiYmKGMuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGMpKSxjLmIpLFN2ZSk7aWYoZSE9bnVsbCl7Zm9yKGQ9MTtkPChPNmQoKSxMNmQpLmxlbmd0aDsrK2Qpe2lmKGRmYihMNmRbZF0sZSkpe3JldHVybiBkfX19fXJldHVybiAwfVxuZnVuY3Rpb24gVmUoYSxiKXt2YXIgYyxkLGUsZjt1Q2IoYik7Zj1hLmEuZ2MoKTtpZihmPGIuZ2MoKSl7Zm9yKGM9YS5hLmVjKCkuS2MoKTtjLk9iKCk7KXtkPWMuUGIoKTtiLkhjKGQpJiZjLlFiKCl9fWVsc2V7Zm9yKGU9Yi5LYygpO2UuT2IoKTspe2Q9ZS5QYigpO2EuYS5CYyhkKSE9bnVsbH19cmV0dXJuIGYhPWEuYS5nYygpfVxuZnVuY3Rpb24gYlliKGEpe3ZhciBiLGM7Yz1SNmMobDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2EuaS5uLGEubixhLmFdKSkpO2I9YS5pLmQ7c3dpdGNoKGEuai5nKXtjYXNlIDE6Yy5iLT1iLmQ7YnJlYWs7Y2FzZSAyOmMuYSs9Yi5jO2JyZWFrO2Nhc2UgMzpjLmIrPWIuYTticmVhaztjYXNlIDQ6Yy5hLT1iLmI7fXJldHVybiBjfVxuZnVuY3Rpb24gUDliKGEpe3ZhciBiO2I9KEk5YigpLEJEKFJyKG5ldyBTcih1cihSX2IoYSkuYS5LYygpLG5ldyBTcSkpKSwxNykuYy5pKTt3aGlsZShiLms9PShqMGIoKSxnMGIpKXt5TmIoYiwod3RjKCksVHNjKSwoQmNiKCksdHJ1ZSkpO2I9QkQoUnIobmV3IFNyKHVyKFJfYihiKS5hLktjKCksbmV3IFNxKSkpLDE3KS5jLml9fVxuZnVuY3Rpb24gYkljKGEsYixjLGQpe3ZhciBlLGYsZyxoO2g9Q0hjKGIsZCk7Zm9yKGc9aC5LYygpO2cuT2IoKTspe2U9QkQoZy5QYigpLDExKTthLmRbZS5wXT1hLmRbZS5wXSthLmNbYy5wXX1oPUNIYyhjLGQpO2ZvcihmPWguS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSwxMSk7YS5kW2UucF09YS5kW2UucF0tYS5jW2IucF19fVxuZnVuY3Rpb24gRWZkKGEsYixjKXt2YXIgZCxlO2ZvcihlPW5ldyBGeWQoKCFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSksYS5hKSk7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDMzKTtibGQoZCxkLmkrYixkLmorYyl9cmViKCghYS5iJiYoYS5iPW5ldyBjVWQoQjIsYSwxMiwzKSksYS5iKSxuZXcgS2ZkKGIsYykpfVxuZnVuY3Rpb24gTXdiKGEsYixjLGQpe3ZhciBlLGY7Zj1iO2U9Zi5kPT1udWxsfHxhLmEudWUoYy5kLGYuZCk+MD8xOjA7d2hpbGUoZi5hW2VdIT1jKXtmPWYuYVtlXTtlPWEuYS51ZShjLmQsZi5kKT4wPzE6MH1mLmFbZV09ZDtkLmI9Yy5iO2QuYVswXT1jLmFbMF07ZC5hWzFdPWMuYVsxXTtjLmFbMF09bnVsbDtjLmFbMV09bnVsbH1cbmZ1bmN0aW9uIHVjZChhKXtyY2QoKTt2YXIgYixjO2I9cXFiKG5jZCxPQyhHQyhFMSwxKSxLaWUsMjczLDAsW3BjZF0pKTtpZihPeChDeChiLGEpKT4xKXtyZXR1cm4gZmFsc2V9Yz1xcWIobWNkLE9DKEdDKEUxLDEpLEtpZSwyNzMsMCxbbGNkLHFjZF0pKTtpZihPeChDeChjLGEpKT4xKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBmb2QoYSxiKXt2YXIgYztjPVBoYigoeUZkKCkseEZkKSxhKTtKRChjLDQ5OCk/U2hiKHhGZCxhLG5ldyBiVWQodGhpcyxiKSk6U2hiKHhGZCxhLHRoaXMpO2JvZCh0aGlzLGIpO2lmKGI9PShMRmQoKSxLRmQpKXt0aGlzLndiPUJEKHRoaXMsMTkzOSk7QkQoYiwxOTQxKX1lbHNle3RoaXMud2I9KE5GZCgpLE1GZCl9fVxuZnVuY3Rpb24gbFpkKGIpe3ZhciBjLGQsZTtpZihiPT1udWxsKXtyZXR1cm4gbnVsbH1jPW51bGw7Zm9yKGQ9MDtkPFBtZC5sZW5ndGg7KytkKXt0cnl7cmV0dXJuIERRZChQbWRbZF0sYil9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwzMikpe2U9YTtjPWV9ZWxzZSB0aHJvdyB2YmIoYSl9fXRocm93IHZiYihuZXcgckZkKGMpKX1cbmZ1bmN0aW9uIERwYigpe0RwYj1jY2I7QnBiPU9DKEdDKFpJLDEpLG5pZSwyLDYsWydTdW4nLCdNb24nLCdUdWUnLCdXZWQnLCdUaHUnLCdGcmknLCdTYXQnXSk7Q3BiPU9DKEdDKFpJLDEpLG5pZSwyLDYsWydKYW4nLCdGZWInLCdNYXInLCdBcHInLGZqZSwnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ10pfVxuZnVuY3Rpb24geXliKGEpe3ZhciBiLGMsZDtiPWRmYih0eXBlb2YoYiksdWtlKT9udWxsOm5ldyBpQ2I7aWYoIWIpe3JldHVybn0keGIoKTtjPShkPTkwMCxkPj1faWU/J2Vycm9yJzpkPj05MDA/J3dhcm4nOmQ+PTgwMD8naW5mbyc6J2xvZycpO2dDYihjLGEuYSk7ISFhLmImJmhDYihiLGMsYS5iLCdFeGNlcHRpb246ICcsdHJ1ZSl9XG5mdW5jdGlvbiB2TmIoYSxiKXt2YXIgYyxkO2Q9KCFhLnEmJihhLnE9bmV3IExxYiksT2hiKGEucSxiKSk7aWYoZCE9bnVsbCl7cmV0dXJuIGR9Yz1iLndnKCk7SkQoYyw0KSYmKGM9PW51bGw/KCFhLnEmJihhLnE9bmV3IExxYiksVGhiKGEucSxiKSk6KCFhLnEmJihhLnE9bmV3IExxYiksUmhiKGEucSxiLGMpKSxhKTtyZXR1cm4gY31cbmZ1bmN0aW9uIHFVYigpe3FVYj1jY2I7bFViPW5ldyByVWIoJ1AxX0NZQ0xFX0JSRUFLSU5HJywwKTttVWI9bmV3IHJVYignUDJfTEFZRVJJTkcnLDEpO25VYj1uZXcgclViKCdQM19OT0RFX09SREVSSU5HJywyKTtvVWI9bmV3IHJVYignUDRfTk9ERV9QTEFDRU1FTlQnLDMpO3BVYj1uZXcgclViKCdQNV9FREdFX1JPVVRJTkcnLDQpfVxuZnVuY3Rpb24gU1ViKGEsYil7dmFyIGMsZCxlLGYsZztlPWI9PTE/S1ViOkpVYjtmb3IoZD1lLmEuZWMoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDEwMyk7Zm9yKGc9QkQoUWMoYS5mLmMsYyksMjEpLktjKCk7Zy5PYigpOyl7Zj1CRChnLlBiKCksNDYpO0xrYihhLmIuYixmLmIpO0xrYihhLmIuYSxCRChmLmIsODEpLmQpfX19XG5mdW5jdGlvbiBJV2IoYSxiKXtBV2IoKTt2YXIgYztpZihhLmM9PWIuYyl7aWYoYS5iPT1iLmJ8fHBXYihhLmIsYi5iKSl7Yz1tV2IoYS5iKT8xOi0xO2lmKGEuYSYmIWIuYSl7cmV0dXJuIGN9ZWxzZSBpZighYS5hJiZiLmEpe3JldHVybiAtY319cmV0dXJuIGJlYihhLmIuZyxiLmIuZyl9ZWxzZXtyZXR1cm4gS2RiKGEuYyxiLmMpfX1cbmZ1bmN0aW9uIHk2YihhLGIpe3ZhciBjO09kZChiLCdIaWVyYXJjaGljYWwgcG9ydCBwb3NpdGlvbiBwcm9jZXNzaW5nJywxKTtjPWEuYjtjLmMubGVuZ3RoPjAmJng2YigodENiKDAsYy5jLmxlbmd0aCksQkQoYy5jWzBdLDI5KSksYSk7Yy5jLmxlbmd0aD4xJiZ4NmIoQkQoSWtiKGMsYy5jLmxlbmd0aC0xKSwyOSksYSk7UWRkKGIpfVxuZnVuY3Rpb24gUlZjKGEsYil7dmFyIGMsZCxlO2lmKENWYyhhLGIpKXtyZXR1cm4gdHJ1ZX1mb3IoZD1uZXcgb2xiKGIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwzMyk7ZT1oVmMoYyk7aWYoQlZjKGEsYyxlKSl7cmV0dXJuIHRydWV9aWYoUFZjKGEsYyktYS5nPD1hLmEpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBkMGMoKXtkMGM9Y2NiO2MwYz0oQTBjKCksejBjKTtfX2M9djBjOyRfYz10MGM7WV9jPXAwYztaX2M9cjBjO1hfYz1uZXcgcTBiKDgpO1dfYz1uZXcgT3NkKChZOWMoKSxmOWMpLFhfYyk7YTBjPW5ldyBPc2QoVDljLDgpO2IwYz14MGM7VF9jPWswYztVX2M9bTBjO1ZfYz1uZXcgT3NkKHk4YywoQmNiKCksZmFsc2UpKX1cbmZ1bmN0aW9uIFg3Yygpe1g3Yz1jY2I7VTdjPW5ldyBxMGIoMTUpO1Q3Yz1uZXcgT3NkKChZOWMoKSxmOWMpLFU3Yyk7VzdjPW5ldyBPc2QoVDljLDE1KTtWN2M9bmV3IE9zZChEOWMsbWViKDApKTtPN2M9SThjO1E3Yz1ZOGM7UzdjPWI5YztMN2M9bmV3IE9zZChyOGMscHNlKTtQN2M9TzhjO1I3Yz1fOGM7TTdjPXQ4YztON2M9dzhjfVxuZnVuY3Rpb24ganRkKGEpe2lmKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLmkhPTF8fCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLmkhPTEpe3Rocm93IHZiYihuZXcgV2RiKGl1ZSkpfXJldHVybiBhdGQoQkQocXVkKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLDApLDgyKSl9XG5mdW5jdGlvbiBrdGQoYSl7aWYoKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYikuaSE9MXx8KCFhLmMmJihhLmM9bmV3IHk1ZCh6MixhLDUsOCkpLGEuYykuaSE9MSl7dGhyb3cgdmJiKG5ldyBXZGIoaXVlKSl9cmV0dXJuIGJ0ZChCRChxdWQoKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYiksMCksODIpKX1cbmZ1bmN0aW9uIG10ZChhKXtpZigoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKS5pIT0xfHwoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKS5pIT0xKXt0aHJvdyB2YmIobmV3IFdkYihpdWUpKX1yZXR1cm4gYnRkKEJEKHF1ZCgoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKSwwKSw4MikpfVxuZnVuY3Rpb24gbHRkKGEpe2lmKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLmkhPTF8fCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLmkhPTEpe3Rocm93IHZiYihuZXcgV2RiKGl1ZSkpfXJldHVybiBhdGQoQkQocXVkKCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLDApLDgyKSl9XG5mdW5jdGlvbiBEdmQoYSxiLGMpe3ZhciBkLGUsZjsrK2EuajtlPWEuVmkoKTtpZihiPj1lfHxiPDApdGhyb3cgdmJiKG5ldyBxY2IobHVlK2IrbXVlK2UpKTtpZihjPj1lfHxjPDApdGhyb3cgdmJiKG5ldyBxY2IobnVlK2MrbXVlK2UpKTtiIT1jPyhkPShmPWEuVGkoYyksYS5IaShiLGYpLGYpKTooZD1hLk9pKGMpKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIG02ZChhKXt2YXIgYixjLGQ7ZD1hO2lmKGEpe2I9MDtmb3IoYz1hLlVnKCk7YztjPWMuVWcoKSl7aWYoKytiPldqZSl7cmV0dXJuIG02ZChjKX1kPWM7aWYoYz09YSl7dGhyb3cgdmJiKG5ldyBaZGIoJ1RoZXJlIGlzIGEgY3ljbGUgaW4gdGhlIGNvbnRhaW5tZW50IGhpZXJhcmNoeSBvZiAnK2EpKX19fXJldHVybiBkfVxuZnVuY3Rpb24gRmUoYSl7dmFyIGIsYyxkO2Q9bmV3IHh3YihTaGUsJ1snLCddJyk7Zm9yKGM9YS5LYygpO2MuT2IoKTspe2I9Yy5QYigpO3V3YihkLFBEKGIpPT09UEQoYSk/Jyh0aGlzIENvbGxlY3Rpb24pJzpiPT1udWxsP1hoZTpmY2IoYikpfXJldHVybiAhZC5hP2QuYzpkLmUubGVuZ3RoPT0wP2QuYS5hOmQuYS5hKygnJytkLmUpfVxuZnVuY3Rpb24gQ1ZjKGEsYil7dmFyIGMsZDtkPWZhbHNlO2lmKGIuZ2MoKTwyKXtyZXR1cm4gZmFsc2V9Zm9yKGM9MDtjPGIuZ2MoKTtjKyspe2M8Yi5nYygpLTE/KGQ9ZHxCVmMoYSxCRChiLlhiKGMpLDMzKSxCRChiLlhiKGMrMSksMzMpKSk6KGQ9ZHxCVmMoYSxCRChiLlhiKGMpLDMzKSxCRChiLlhiKDApLDMzKSkpfXJldHVybiBkfVxuZnVuY3Rpb24gWW1kKGEsYil7dmFyIGM7aWYoYiE9YS5hKXtjPW51bGw7ISFhLmEmJihjPUJEKGEuYSw0OSkuaWgoYSw0LG81LGMpKTshIWImJihjPUJEKGIsNDkpLmdoKGEsNCxvNSxjKSk7Yz1UbWQoYSxiLGMpOyEhYyYmYy5GaSgpfWVsc2UgKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSwxLGIsYikpfVxuZnVuY3Rpb24gUlFkKGEsYil7dmFyIGM7aWYoYiE9YS5lKXshIWEuZSYmUVlkKEFZZChhLmUpLGEpOyEhYiYmKCFiLmImJihiLmI9bmV3IFJZZChuZXcgTllkKSksUFlkKGIuYixhKSk7Yz1IUWQoYSxiLG51bGwpOyEhYyYmYy5GaSgpfWVsc2UgKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw0LGIsYikpfVxuZnVuY3Rpb24gdWZiKGEpe3ZhciBiLGMsZDtjPWEubGVuZ3RoO2Q9MDt3aGlsZShkPGMmJihCQ2IoZCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGQpPD0zMikpeysrZH1iPWM7d2hpbGUoYj5kJiYoQkNiKGItMSxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGItMSk8PTMyKSl7LS1ifXJldHVybiBkPjB8fGI8Yz9hLnN1YnN0cihkLGItZCk6YX1cbmZ1bmN0aW9uIHVqYyhhLGIpe3ZhciBjO2M9Yi5vO2lmKGZhZChhLmYpKXthLmouYT0kd25kLk1hdGgubWF4KGEuai5hLGMuYSk7YS5qLmIrPWMuYjthLmQuYy5sZW5ndGg+MSYmKGEuai5iKz1hLmUpfWVsc2V7YS5qLmErPWMuYTthLmouYj0kd25kLk1hdGgubWF4KGEuai5iLGMuYik7YS5kLmMubGVuZ3RoPjEmJihhLmouYSs9YS5lKX19XG5mdW5jdGlvbiBna2MoKXtna2M9Y2NiO2RrYz1PQyhHQyhGMSwxKSxibmUsNjEsMCxbKFVjZCgpLEFjZCksemNkLFJjZF0pO2NrYz1PQyhHQyhGMSwxKSxibmUsNjEsMCxbemNkLFJjZCxUY2RdKTtla2M9T0MoR0MoRjEsMSksYm5lLDYxLDAsW1JjZCxUY2QsQWNkXSk7ZmtjPU9DKEdDKEYxLDEpLGJuZSw2MSwwLFtUY2QsQWNkLHpjZF0pfVxuZnVuY3Rpb24gb21jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrO2c9YS5jLmQ7aD1hLmQuZDtpZihnLmo9PWguail7cmV0dXJufWs9YS5iO2U9Zy5qO2k9bnVsbDt3aGlsZShlIT1oLmope2k9Yj09MD9YY2QoZSk6VmNkKGUpO2Y9dW1jKGUsay5kW2UuZ10sYyk7aj11bWMoaSxrLmRbaS5nXSxjKTtEc2IoZCxQNmMoZixqKSk7ZT1pfX1cbmZ1bmN0aW9uIG9GYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2c9SkhjKGEuYSxiLGMpO2g9QkQoZy5hLDE5KS5hO2Y9QkQoZy5iLDE5KS5hO2lmKGQpe2k9QkQodk5iKGIsKHd0YygpLGd0YykpLDEwKTtlPUJEKHZOYihjLGd0YyksMTApO2lmKCEhaSYmISFlKXttaWMoYS5iLGksZSk7aCs9YS5iLmk7Zis9YS5iLmV9fXJldHVybiBoPmZ9XG5mdW5jdGlvbiBvSGMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqO3RoaXMuYT1sSGMoYSk7dGhpcy5iPW5ldyBSa2I7Zm9yKGM9YSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07Zj1uZXcgUmtiO0VrYih0aGlzLmIsZik7Zm9yKGg9YixpPTAsaj1oLmxlbmd0aDtpPGo7KytpKXtnPWhbaV07RWtiKGYsbmV3IFRrYihnLmopKX19fVxuZnVuY3Rpb24gcUhjKGEsYixjKXt2YXIgZCxlLGY7Zj0wO2Q9Y1tiXTtpZihiPGMubGVuZ3RoLTEpe2U9Y1tiKzFdO2lmKGEuYltiXSl7Zj1LSWMoYS5kLGQsZSk7Zis9TkhjKGEuYSxkLChVY2QoKSx6Y2QpKTtmKz1OSGMoYS5hLGUsVGNkKX1lbHNle2Y9SUhjKGEuYSxkLGUpfX1hLmNbYl0mJihmKz1QSGMoYS5hLGQpKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIGpaYihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpO2k9bnVsbDtmb3IoaD1uZXcgb2xiKGQpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSw0NDEpO2lmKGchPWMmJkprYihnLmUsZSwwKSE9LTEpe2k9ZzticmVha319Zj1rWmIoZSk7UVpiKGYsYy5iKTtSWmIoZixpLmIpO1JjKGEuYSxlLG5ldyBCWmIoZixiLGMuZikpfVxuZnVuY3Rpb24gbmljKGEpe3doaWxlKGEuZy5jIT0wJiZhLmQuYyE9MCl7aWYod2ljKGEuZykuYz53aWMoYS5kKS5jKXthLmkrPWEuZy5jO3lpYyhhLmQpfWVsc2UgaWYod2ljKGEuZCkuYz53aWMoYS5nKS5jKXthLmUrPWEuZC5jO3lpYyhhLmcpfWVsc2V7YS5pKz12aWMoYS5nKTthLmUrPXZpYyhhLmQpO3lpYyhhLmcpO3lpYyhhLmQpfX19XG5mdW5jdGlvbiBYT2MoYSxiLGMpe3ZhciBkLGUsZixnO2Y9Yi5xO2c9Yi5yO25ldyBET2MoKEhPYygpLEZPYyksYixmLDEpO25ldyBET2MoRk9jLGYsZywxKTtmb3IoZT1uZXcgb2xiKGMpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMTIpO2lmKGQhPWYmJmQhPWImJmQhPWcpe3BQYyhhLmEsZCxiKTtwUGMoYS5hLGQsZyl9fX1cbmZ1bmN0aW9uIFhRYyhhLGIsYyxkKXthLmEuZD0kd25kLk1hdGgubWluKGIsYyk7YS5hLmE9JHduZC5NYXRoLm1heChiLGQpLWEuYS5kO2lmKGI8Yyl7YS5iPTAuNSooYitjKTthLmc9UXFlKmEuYiswLjkqYjthLmY9UXFlKmEuYiswLjkqY31lbHNle2EuYj0wLjUqKGIrZCk7YS5nPVFxZSphLmIrMC45KmQ7YS5mPVFxZSphLmIrMC45KmJ9fVxuZnVuY3Rpb24gYWNiKCl7X2JiPXt9OyFBcnJheS5pc0FycmF5JiYoQXJyYXkuaXNBcnJheT1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpPT09J1tvYmplY3QgQXJyYXldJ30pO2Z1bmN0aW9uIGIoKXtyZXR1cm4gKG5ldyBEYXRlKS5nZXRUaW1lKCl9XG4hRGF0ZS5ub3cmJihEYXRlLm5vdz1iKX1cbmZ1bmN0aW9uICRUYihhLGIpe3ZhciBjLGQ7ZD1CRCh2TmIoYiwoTnljKCksVnhjKSksOTgpO3lOYihiLCh3dGMoKSxkdGMpLGQpO2M9Yi5lOyEhYyYmKE1BYihuZXcgWUFiKG51bGwsbmV3IEt1YihjLmEsMTYpKSxuZXcgZFViKGEpKSxNQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGMuYiwxNikpLG5ldyBmVWIpLG5ldyBoVWIoYSkpKX1cbmZ1bmN0aW9uIF8kYihhKXt2YXIgYixjLGQsZTtpZihnYWQoQkQodk5iKGEuYiwoTnljKCksTHdjKSksMTAzKSkpe3JldHVybiAwfWI9MDtmb3IoZD1uZXcgb2xiKGEuYSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDEwKTtpZihjLms9PShqMGIoKSxoMGIpKXtlPWMuby5hO2I9JHduZC5NYXRoLm1heChiLGUpfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGM1YihhKXtzd2l0Y2goQkQodk5iKGEsKE55YygpLG14YykpLDE2MykuZyl7Y2FzZSAxOnlOYihhLG14YywoQ3RjKCksenRjKSk7YnJlYWs7Y2FzZSAyOnlOYihhLG14YywoQ3RjKCksQXRjKSk7YnJlYWs7Y2FzZSAzOnlOYihhLG14YywoQ3RjKCkseHRjKSk7YnJlYWs7Y2FzZSA0OnlOYihhLG14YywoQ3RjKCkseXRjKSk7fX1cbmZ1bmN0aW9uIHlyYygpe3lyYz1jY2I7d3JjPW5ldyB6cmMoYW5lLDApO3RyYz1uZXcgenJjKGpsZSwxKTt4cmM9bmV3IHpyYyhrbGUsMik7dnJjPW5ldyB6cmMoJ0xFRlRfUklHSFRfQ09OU1RSQUlOVF9MT0NLSU5HJywzKTt1cmM9bmV3IHpyYygnTEVGVF9SSUdIVF9DT05ORUNUSU9OX0xPQ0tJTkcnLDQpO3JyYz1uZXcgenJjKFZuZSw1KX1cbmZ1bmN0aW9uIHFSYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7aD1jLmEvMjtmPWMuYi8yO2Q9JHduZC5NYXRoLmFicyhiLmEtYS5hKTtlPSR3bmQuTWF0aC5hYnMoYi5iLWEuYik7aT0xO2o9MTtkPmgmJihpPWgvZCk7ZT5mJiYoaj1mL2UpO2c9JHduZC5NYXRoLm1pbihpLGopO2EuYSs9ZyooYi5hLWEuYSk7YS5iKz1nKihiLmItYS5iKX1cbmZ1bmN0aW9uIHNaYyhhLGIsYyxkLGUpe3ZhciBmLGc7Zz1mYWxzZTtmPUJEKElrYihjLmIsMCksMzMpO3doaWxlKHlaYyhhLGIsZixkLGUpKXtnPXRydWU7TlpjKGMsZik7aWYoYy5iLmMubGVuZ3RoPT0wKXticmVha31mPUJEKElrYihjLmIsMCksMzMpfWMuYi5jLmxlbmd0aD09MCYmdiRjKGMuaixjKTtnJiZhJGMoYi5xKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIHQ2YyhhLGIpe2k2YygpO3ZhciBjLGQsZSxmO2lmKGIuYjwyKXtyZXR1cm4gZmFsc2V9Zj1Kc2IoYiwwKTtjPUJEKFhzYihmKSw4KTtkPWM7d2hpbGUoZi5iIT1mLmQuYyl7ZT1CRChYc2IoZiksOCk7aWYoczZjKGEsZCxlKSl7cmV0dXJuIHRydWV9ZD1lfWlmKHM2YyhhLGQsYykpe3JldHVybiB0cnVlfXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGNrZChhLGIsYyxkKXt2YXIgZSxmO2lmKGM9PTApe3JldHVybiAhYS5vJiYoYS5vPW5ldyBkSWQoKFRoZCgpLFFoZCksUzIsYSwwKSksYklkKGEubyxiLGQpfXJldHVybiBmPUJEKFhLZCgoZT1CRChBamQoYSwxNiksMjYpLCFlP2EuemgoKTplKSxjKSw2NiksZi5OaigpLlJqKGEseWpkKGEpLGMtYUxkKGEuemgoKSksYixkKX1cbmZ1bmN0aW9uIGJvZChhLGIpe3ZhciBjO2lmKGIhPWEuc2Ipe2M9bnVsbDshIWEuc2ImJihjPUJEKGEuc2IsNDkpLmloKGEsMSxpNSxjKSk7ISFiJiYoYz1CRChiLDQ5KS5naChhLDEsaTUsYykpO2M9Sm5kKGEsYixjKTshIWMmJmMuRmkoKX1lbHNlIChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsNCxiLGIpKX1cbmZ1bmN0aW9uIHlxZChhLGIpe3ZhciBjLGQsZSxmO2lmKGIpe2U9WHBkKGIsJ3gnKTtjPW5ldyB6cmQoYSk7aG1kKGMuYSwodUNiKGUpLGUpKTtmPVhwZChiLCd5Jyk7ZD1uZXcgQXJkKGEpO2ltZChkLmEsKHVDYihmKSxmKSl9ZWxzZXt0aHJvdyB2YmIobmV3IGNxZCgnQWxsIGVkZ2Ugc2VjdGlvbnMgbmVlZCBhbiBlbmQgcG9pbnQuJykpfX1cbmZ1bmN0aW9uIHdxZChhLGIpe3ZhciBjLGQsZSxmO2lmKGIpe2U9WHBkKGIsJ3gnKTtjPW5ldyB3cmQoYSk7b21kKGMuYSwodUNiKGUpLGUpKTtmPVhwZChiLCd5Jyk7ZD1uZXcgeHJkKGEpO3BtZChkLmEsKHVDYihmKSxmKSl9ZWxzZXt0aHJvdyB2YmIobmV3IGNxZCgnQWxsIGVkZ2Ugc2VjdGlvbnMgbmVlZCBhIHN0YXJ0IHBvaW50LicpKX19XG5mdW5jdGlvbiBweWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtmb3IoZD1zeWIoYSksZj0wLGg9ZC5sZW5ndGg7ZjxoOysrZil7eXliKGIpfWk9IWx5YiYmYS5lP2x5Yj9udWxsOmEuZDpudWxsO3doaWxlKGkpe2ZvcihjPXN5YihpKSxlPTAsZz1jLmxlbmd0aDtlPGc7KytlKXt5eWIoYil9aT0hbHliJiZpLmU/bHliP251bGw6aS5kOm51bGx9fVxuZnVuY3Rpb24gajBiKCl7ajBiPWNjYjtoMGI9bmV3IGswYignTk9STUFMJywwKTtnMGI9bmV3IGswYignTE9OR19FREdFJywxKTtlMGI9bmV3IGswYignRVhURVJOQUxfUE9SVCcsMik7aTBiPW5ldyBrMGIoJ05PUlRIX1NPVVRIX1BPUlQnLDMpO2YwYj1uZXcgazBiKCdMQUJFTCcsNCk7ZDBiPW5ldyBrMGIoJ0JSRUFLSU5HX1BPSU5UJyw1KX1cbmZ1bmN0aW9uIGc0YihhKXt2YXIgYixjLGQsZTtiPWZhbHNlO2lmKHdOYihhLCh3dGMoKSxDc2MpKSl7Yz1CRCh2TmIoYSxDc2MpLDgzKTtmb3IoZT1uZXcgb2xiKGEuaik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDExKTtpZihlNGIoZCkpe2lmKCFiKXtkNGIoUV9iKGEpKTtiPXRydWV9aDRiKEJEKGMueGMoZCksMzA2KSl9fX19XG5mdW5jdGlvbiBxZWMoYSxiLGMpe3ZhciBkO09kZChjLCdTZWxmLUxvb3Agcm91dGluZycsMSk7ZD1yZWMoYik7UkQodk5iKGIsKGc2YygpLGY2YykpKTtNQWIoTkFiKEpBYihKQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuYiwxNikpLG5ldyB1ZWMpLG5ldyB3ZWMpLG5ldyB5ZWMpLG5ldyBBZWMpLG5ldyBDZWMoYSxkKSk7UWRkKGMpfVxuZnVuY3Rpb24gZ3NkKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajtqPWhzZChhKTtjPWEuZTtmPWMhPW51bGw7ZiYmVXBkKGosZXVlLGEuZSk7aD1hLms7Zz0hIWg7ZyYmVXBkKGosJ3R5cGUnLFpyKGEuaykpO2Q9RmhlKGEuaik7ZT0hZDtpZihlKXtpPW5ldyB3QjtjQyhqLE10ZSxpKTtiPW5ldyBzc2QoaSk7cmViKGEuaixiKX1yZXR1cm4gan1cbmZ1bmN0aW9uIEp2KGEpe3ZhciBiLGMsZCxlO2U9S2ZiKChYaihhLmdjKCksJ3NpemUnKSxuZXcgVmZiKSwxMjMpO2Q9dHJ1ZTtmb3IoYz1XbShhKS5LYygpO2MuT2IoKTspe2I9QkQoYy5QYigpLDQyKTtkfHwoZS5hKz1TaGUsZSk7ZD1mYWxzZTtQZmIoS2ZiKFBmYihlLGIuY2QoKSksNjEpLGIuZGQoKSl9cmV0dXJuIChlLmErPSd9JyxlKS5hfVxuZnVuY3Rpb24ga0QoYSxiKXt2YXIgYyxkLGU7YiY9NjM7aWYoYjwyMil7Yz1hLmw8PGI7ZD1hLm08PGJ8YS5sPj4yMi1iO2U9YS5oPDxifGEubT4+MjItYn1lbHNlIGlmKGI8NDQpe2M9MDtkPWEubDw8Yi0yMjtlPWEubTw8Yi0yMnxhLmw+PjQ0LWJ9ZWxzZXtjPTA7ZD0wO2U9YS5sPDxiLTQ0fXJldHVybiBUQyhjJkVqZSxkJkVqZSxlJkZqZSl9XG5mdW5jdGlvbiBIY2IoYSl7R2NiPT1udWxsJiYoR2NiPW5ldyBSZWdFeHAoJ15cXFxccypbKy1dPyhOYU58SW5maW5pdHl8KChcXFxcZCtcXFxcLj9cXFxcZCopfChcXFxcLlxcXFxkKykpKFtlRV1bKy1dP1xcXFxkKyk/W2REZkZdPylcXFxccyokJykpO2lmKCFHY2IudGVzdChhKSl7dGhyb3cgdmJiKG5ldyBPZWIoT2plK2ErJ1wiJykpfXJldHVybiBwYXJzZUZsb2F0KGEpfVxuZnVuY3Rpb24gSUZiKGEpe3ZhciBiLGMsZCxlO2I9bmV3IFJrYjtjPUtDKHNiYixkbGUsMjUsYS5hLmMubGVuZ3RoLDE2LDEpO0dsYihjLGMubGVuZ3RoKTtmb3IoZT1uZXcgb2xiKGEuYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEyMSk7aWYoIWNbZC5kXSl7Yi5jW2IuYy5sZW5ndGhdPWQ7SEZiKGEsZCxjKX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBObWMoYSxiKXt2YXIgYyxkLGUsZjtmPWIuYi5qO2EuYT1LQyhXRCxvamUsMjUsZi5jLmxlbmd0aCwxNSwxKTtlPTA7Zm9yKGQ9MDtkPGYuYy5sZW5ndGg7ZCsrKXtjPSh0Q2IoZCxmLmMubGVuZ3RoKSxCRChmLmNbZF0sMTEpKTtjLmUuYy5sZW5ndGg9PTAmJmMuZy5jLmxlbmd0aD09MD8oZSs9MSk6KGUrPTMpO2EuYVtkXT1lfX1cbmZ1bmN0aW9uIFNxYygpe1NxYz1jY2I7TnFjPW5ldyBVcWMoJ0FMV0FZU19VUCcsMCk7TXFjPW5ldyBVcWMoJ0FMV0FZU19ET1dOJywxKTtQcWM9bmV3IFVxYygnRElSRUNUSU9OX1VQJywyKTtPcWM9bmV3IFVxYygnRElSRUNUSU9OX0RPV04nLDMpO1JxYz1uZXcgVXFjKCdTTUFSVF9VUCcsNCk7UXFjPW5ldyBVcWMoJ1NNQVJUX0RPV04nLDUpfVxuZnVuY3Rpb24gazZjKGEsYil7aWYoYTwwfHxiPDApe3Rocm93IHZiYihuZXcgV2RiKCdrIGFuZCBuIG11c3QgYmUgcG9zaXRpdmUnKSl9ZWxzZSBpZihiPmEpe3Rocm93IHZiYihuZXcgV2RiKCdrIG11c3QgYmUgc21hbGxlciB0aGFuIG4nKSl9ZWxzZSByZXR1cm4gYj09MHx8Yj09YT8xOmE9PTA/MDpxNmMoYSkvKHE2YyhiKSpxNmMoYS1iKSl9XG5mdW5jdGlvbiBqZmQoYSxiKXt2YXIgYyxkLGUsZjtjPW5ldyBfdWQoYSk7d2hpbGUoYy5nPT1udWxsJiYhYy5jP1V1ZChjKTpjLmc9PW51bGx8fGMuaSE9MCYmQkQoYy5nW2MuaS0xXSw0NykuT2IoKSl7Zj1CRChWdWQoYyksNTYpO2lmKEpEKGYsMTYwKSl7ZD1CRChmLDE2MCk7Zm9yKGU9MDtlPGIubGVuZ3RoO2UrKyl7YltlXS5vZyhkKX19fX1cbmZ1bmN0aW9uIGZsZChhKXt2YXIgYjtpZigoYS5EYiY2NCkhPTApcmV0dXJuIE1rZChhKTtiPW5ldyBKZmIoTWtkKGEpKTtiLmErPScgKGhlaWdodDogJztCZmIoYixhLmYpO2IuYSs9Jywgd2lkdGg6ICc7QmZiKGIsYS5nKTtiLmErPScsIHg6ICc7QmZiKGIsYS5pKTtiLmErPScsIHk6ICc7QmZiKGIsYS5qKTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gdW4oYSl7dmFyIGIsYyxkLGUsZixnLGg7Yj1uZXcgJHJiO2ZvcihkPWEsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO2c9UWIoYy5jZCgpKTtoPVhyYihiLGcsUWIoYy5kZCgpKSk7aWYoaCE9bnVsbCl7dGhyb3cgdmJiKG5ldyBXZGIoJ2R1cGxpY2F0ZSBrZXk6ICcrZykpfX10aGlzLmI9KG1tYigpLG5ldyBpb2IoYikpfVxuZnVuY3Rpb24gUmxiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1mPW5ldyB4d2IoU2hlLCdbJywnXScpO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdO3V3YihmLFN0cmluZy5mcm9tQ2hhckNvZGUoYikpfXJldHVybiAhZi5hP2YuYzpmLmUubGVuZ3RoPT0wP2YuYS5hOmYuYS5hKygnJytmLmUpfVxuZnVuY3Rpb24gU1JiKCl7U1JiPWNjYjtNUmI9KFhSYigpLFdSYik7TFJiPW5ldyBOc2QobW1lLE1SYik7bWViKDEpO0tSYj1uZXcgTnNkKG5tZSxtZWIoMzAwKSk7bWViKDApO1BSYj1uZXcgTnNkKG9tZSxtZWIoMCkpO25ldyBUZmQ7UVJiPW5ldyBOc2QocG1lLHFtZSk7bmV3IFRmZDtOUmI9bmV3IE5zZChybWUsNSk7UlJiPVdSYjtPUmI9VlJifVxuZnVuY3Rpb24gTlViKGEsYil7dmFyIGMsZCxlLGYsZztlPWI9PTE/S1ViOkpVYjtmb3IoZD1lLmEuZWMoKS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDEwMyk7Zm9yKGc9QkQoUWMoYS5mLmMsYyksMjEpLktjKCk7Zy5PYigpOyl7Zj1CRChnLlBiKCksNDYpO0VrYihhLmIuYixCRChmLmIsODEpKTtFa2IoYS5iLmEsQkQoZi5iLDgxKS5kKX19fVxuZnVuY3Rpb24ga1ZkKGEsYil7dmFyIGM7aWYoYiE9bnVsbCYmIWEuYy5ZaigpLndqKGIpKXtjPUpEKGIsNTYpP0JEKGIsNTYpLlRnKCkuemI6aGRiKHJiKGIpKTt0aHJvdyB2YmIobmV3IENkYihpdGUrYS5jLm5lKCkrXCIncyB0eXBlICdcIithLmMuWWooKS5uZSgpK1wiJyBkb2VzIG5vdCBwZXJtaXQgYSB2YWx1ZSBvZiB0eXBlICdcIitjK1wiJ1wiKSl9fVxuZnVuY3Rpb24gY1piKGEsYixjKXt2YXIgZCxlO2U9bmV3IEJpYihhLmIsMCk7d2hpbGUoZS5iPGUuZC5nYygpKXtkPShzQ2IoZS5iPGUuZC5nYygpKSxCRChlLmQuWGIoZS5jPWUuYisrKSw3MCkpO2lmKFBEKHZOYihkLCh3dGMoKSxidGMpKSkhPT1QRChiKSl7Y29udGludWV9WSRiKGQubixRX2IoYS5jLmkpLGMpO3VpYihlKTtFa2IoYi5iLGQpfX1cbmZ1bmN0aW9uIHZkYyhhLGIpe2lmKGIuYSl7c3dpdGNoKEJEKHZOYihiLmIsKHd0YygpLGR0YykpLDk4KS5nKXtjYXNlIDA6Y2FzZSAxOmxsYyhiKTtjYXNlIDI6TUFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuZCwxNikpLG5ldyBJZGMpO3drYyhhLmEsYik7fX1lbHNle01BYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmQsMTYpKSxuZXcgSWRjKX19XG5mdW5jdGlvbiBabmMoYSl7dmFyIGIsYztjPSR3bmQuTWF0aC5zcXJ0KChhLms9PW51bGwmJihhLms9U29jKGEsbmV3IGJwYykpLEVkYihhLmspLyhhLmIqKGEuZz09bnVsbCYmKGEuZz1Qb2MoYSxuZXcgX29jKSksRWRiKGEuZykpKSkpO2I9VGJiKENiYigkd25kLk1hdGgucm91bmQoYykpKTtiPSR3bmQuTWF0aC5taW4oYixhLmYpO3JldHVybiBifVxuZnVuY3Rpb24gSDBiKCl7ejBiKCk7bl9iLmNhbGwodGhpcyk7dGhpcy5qPShVY2QoKSxTY2QpO3RoaXMuYT1uZXcgZDdjO25ldyBMX2I7dGhpcy5mPShYaigyLEppZSksbmV3IFNrYigyKSk7dGhpcy5lPShYaig0LEppZSksbmV3IFNrYig0KSk7dGhpcy5nPShYaig0LEppZSksbmV3IFNrYig0KSk7dGhpcy5iPW5ldyBaMGIodGhpcy5lLHRoaXMuZyl9XG5mdW5jdGlvbiBqM2IoYSxiKXt2YXIgYyxkO2lmKENjYihERCh2TmIoYiwod3RjKCksbHRjKSkpKSl7cmV0dXJuIGZhbHNlfWQ9Yi5jLmk7aWYoYT09KEN0YygpLHh0Yykpe2lmKGQuaz09KGowYigpLGYwYikpe3JldHVybiBmYWxzZX19Yz1CRCh2TmIoZCwoTnljKCksbXhjKSksMTYzKTtpZihjPT15dGMpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIGszYihhLGIpe3ZhciBjLGQ7aWYoQ2NiKEREKHZOYihiLCh3dGMoKSxsdGMpKSkpKXtyZXR1cm4gZmFsc2V9ZD1iLmQuaTtpZihhPT0oQ3RjKCksenRjKSl7aWYoZC5rPT0oajBiKCksZjBiKSl7cmV0dXJuIGZhbHNlfX1jPUJEKHZOYihkLChOeWMoKSxteGMpKSwxNjMpO2lmKGM9PUF0Yyl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gTDNiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7Zz1hLmQ7aT1hLm87aD1uZXcgSjZjKC1nLmIsLWcuZCxnLmIraS5hK2cuYyxnLmQraS5iK2cuYSk7Zm9yKGQ9YixlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07ISFjJiZINmMoaCxjLmkpfWcuYj0taC5jO2cuZD0taC5kO2cuYz1oLmItZy5iLWkuYTtnLmE9aC5hLWcuZC1pLmJ9XG5mdW5jdGlvbiBOX2MoKXtOX2M9Y2NiO0lfYz1uZXcgT19jKCdDRU5URVJfRElTVEFOQ0UnLDApO0pfYz1uZXcgT19jKCdDSVJDTEVfVU5ERVJMQVAnLDEpO01fYz1uZXcgT19jKCdSRUNUQU5HTEVfVU5ERVJMQVAnLDIpO0tfYz1uZXcgT19jKCdJTlZFUlRFRF9PVkVSTEFQJywzKTtMX2M9bmV3IE9fYygnTUlOSU1VTV9ST09UX0RJU1RBTkNFJyw0KX1cbmZ1bmN0aW9uIGpkZShhKXtoZGUoKTt2YXIgYixjLGQsZSxmO2lmKGE9PW51bGwpcmV0dXJuIG51bGw7ZD1hLmxlbmd0aDtlPWQqMjtiPUtDKFRELCRpZSwyNSxlLDE1LDEpO2ZvcihjPTA7YzxkO2MrKyl7Zj1hW2NdO2Y8MCYmKGYrPTI1Nik7YltjKjJdPWdkZVtmPj40XTtiW2MqMisxXT1nZGVbZiYxNV19cmV0dXJuIHpmYihiLDAsYi5sZW5ndGgpfVxuZnVuY3Rpb24gZm4oYSl7Vm0oKTt2YXIgYixjLGQ7ZD1hLmMubGVuZ3RoO3N3aXRjaChkKXtjYXNlIDA6cmV0dXJuIFVtO2Nhc2UgMTpiPUJEKHFyKG5ldyBvbGIoYSkpLDQyKTtyZXR1cm4gbG4oYi5jZCgpLGIuZGQoKSk7ZGVmYXVsdDpjPUJEKFFrYihhLEtDKENLLHppZSw0MixhLmMubGVuZ3RoLDAsMSkpLDE2NSk7cmV0dXJuIG5ldyB3eChjKTt9fVxuZnVuY3Rpb24gSVRiKGEpe3ZhciBiLGMsZCxlLGYsZztiPW5ldyBqa2I7Yz1uZXcgamtiO1dqYihiLGEpO1dqYihjLGEpO3doaWxlKGMuYiE9Yy5jKXtlPUJEKGZrYihjKSwzNyk7Zm9yKGc9bmV3IG9sYihlLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMCk7aWYoZi5lKXtkPWYuZTtXamIoYixkKTtXamIoYyxkKX19fXJldHVybiBifVxuZnVuY3Rpb24gWV9iKGEsYil7c3dpdGNoKGIuZyl7Y2FzZSAxOnJldHVybiBOcShhLmosKHowYigpLHYwYikpO2Nhc2UgMjpyZXR1cm4gTnEoYS5qLCh6MGIoKSx0MGIpKTtjYXNlIDM6cmV0dXJuIE5xKGEuaiwoejBiKCkseDBiKSk7Y2FzZSA0OnJldHVybiBOcShhLmosKHowYigpLHkwYikpO2RlZmF1bHQ6cmV0dXJuIG1tYigpLG1tYigpLGptYjt9fVxuZnVuY3Rpb24gdGljKGEsYil7dmFyIGMsZCxlO2M9dWljKGIsYS5lKTtkPUJEKE9oYihhLmcuZixjKSwxOSkuYTtlPWEuYS5jLmxlbmd0aC0xO2lmKGEuYS5jLmxlbmd0aCE9MCYmQkQoSWtiKGEuYSxlKSwyODcpLmM9PWQpeysrQkQoSWtiKGEuYSxlKSwyODcpLmE7KytCRChJa2IoYS5hLGUpLDI4NykuYn1lbHNle0VrYihhLmEsbmV3IERpYyhkKSl9fVxuZnVuY3Rpb24gVkdjKGEsYixjKXt2YXIgZCxlO2Q9VUdjKGEsYixjKTtpZihkIT0wKXtyZXR1cm4gZH1pZih3TmIoYiwod3RjKCksWnNjKSkmJndOYihjLFpzYykpe2U9YmViKEJEKHZOYihiLFpzYyksMTkpLmEsQkQodk5iKGMsWnNjKSwxOSkuYSk7ZTwwP1dHYyhhLGIsYyk6ZT4wJiZXR2MoYSxjLGIpO3JldHVybiBlfXJldHVybiBUR2MoYSxiLGMpfVxuZnVuY3Rpb24gTVNjKGEsYixjKXt2YXIgZCxlLGYsZztpZihiLmIhPTApe2Q9bmV3IFBzYjtmb3IoZz1Kc2IoYiwwKTtnLmIhPWcuZC5jOyl7Zj1CRChYc2IoZyksODYpO3llKGQsVVJjKGYpKTtlPWYuZTtlLmE9QkQodk5iKGYsKG1UYygpLGtUYykpLDE5KS5hO2UuYj1CRCh2TmIoZixsVGMpLDE5KS5hfU1TYyhhLGQsVWRkKGMsZC5iL2EuYXwwKSl9fVxuZnVuY3Rpb24gSlpjKGEsYil7dmFyIGMsZCxlLGYsZztpZihhLmU8PWIpe3JldHVybiBhLmd9aWYoTFpjKGEsYS5nLGIpKXtyZXR1cm4gYS5nfWY9YS5yO2Q9YS5nO2c9YS5yO2U9KGYtZCkvMitkO3doaWxlKGQrMTxmKXtjPU1aYyhhLGUsZmFsc2UpO2lmKGMuYjw9ZSYmYy5hPD1iKXtnPWU7Zj1lfWVsc2V7ZD1lfWU9KGYtZCkvMitkfXJldHVybiBnfVxuZnVuY3Rpb24gdDJjKGEsYixjKXt2YXIgZDtkPW8yYyhhLGIsdHJ1ZSk7T2RkKGMsJ1JlY3Vyc2l2ZSBHcmFwaCBMYXlvdXQnLGQpO2pmZChiLE9DKEdDKGcyLDEpLFVoZSw1MjcsMCxbbmV3IHEzY10pKTtpa2QoYiwoWTljKCksRjljKSl8fGpmZChiLE9DKEdDKGcyLDEpLFVoZSw1MjcsMCxbbmV3IFUzY10pKTt1MmMoYSxiLG51bGwsYyk7UWRkKGMpfVxuZnVuY3Rpb24gUWRkKGEpe3ZhciBiO2lmKGEucD09bnVsbCl7dGhyb3cgdmJiKG5ldyBaZGIoJ1RoZSB0YXNrIGhhcyBub3QgYmVndW4geWV0LicpKX1pZighYS5iKXtpZihhLmspe2I9KFpmYigpLEliYihDYmIoRGF0ZS5ub3coKSksX2llKSk7YS5xPVNiYihRYmIoYixhLm8pKSoxLjBFLTl9YS5jPGEuciYmUmRkKGEsYS5yLWEuYyk7YS5iPXRydWV9fVxuZnVuY3Rpb24gb2ZkKGEpe3ZhciBiLGMsZDtkPW5ldyBzN2M7RHNiKGQsbmV3IGY3YyhhLmosYS5rKSk7Zm9yKGM9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgeE1kKHkyLGEsNSkpLGEuYSkpO2MuZSE9Yy5pLmdjKCk7KXtiPUJEKER5ZChjKSw0NjkpO0RzYihkLG5ldyBmN2MoYi5hLGIuYikpfURzYihkLG5ldyBmN2MoYS5iLGEuYykpO3JldHVybiBkfVxuZnVuY3Rpb24gcXFkKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrO2lmKGUpe2k9ZS5hLmxlbmd0aDtmPW5ldyBZZ2UoaSk7Zm9yKGs9KGYuYi1mLmEpKmYuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoZik7ay5PYigpOyl7aj1CRChrLlBiKCksMTkpO2g9WnBkKGUsai5hKTtnPW5ldyBwcmQoYSxiLGMsZCk7cnFkKGcuYSxnLmIsZy5jLGcuZCxoKX19fVxuZnVuY3Rpb24gQXgoYixjKXt2YXIgZDtpZihQRChiKT09PVBEKGMpKXtyZXR1cm4gdHJ1ZX1pZihKRChjLDIxKSl7ZD1CRChjLDIxKTt0cnl7cmV0dXJuIGIuZ2MoKT09ZC5nYygpJiZiLkljKGQpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTczKXx8SkQoYSwyMDUpKXtyZXR1cm4gZmFsc2V9ZWxzZSB0aHJvdyB2YmIoYSl9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIFVIYihhLGIpe3ZhciBjO0VrYihhLmQsYik7Yz1iLnJmKCk7aWYoYS5jKXthLmUuYT0kd25kLk1hdGgubWF4KGEuZS5hLGMuYSk7YS5lLmIrPWMuYjthLmQuYy5sZW5ndGg+MSYmKGEuZS5iKz1hLmEpfWVsc2V7YS5lLmErPWMuYTthLmUuYj0kd25kLk1hdGgubWF4KGEuZS5iLGMuYik7YS5kLmMubGVuZ3RoPjEmJihhLmUuYSs9YS5hKX19XG5mdW5jdGlvbiBjbWMoYSl7dmFyIGIsYyxkLGU7ZT1hLmk7Yj1lLmI7ZD1lLmo7Yz1lLmc7c3dpdGNoKGUuYS5nKXtjYXNlIDA6Yy5hPShhLmcuYi5vLmEtZC5hKS8yO2JyZWFrO2Nhc2UgMTpjLmE9Yi5kLm4uYStiLmQuYS5hO2JyZWFrO2Nhc2UgMjpjLmE9Yi5kLm4uYStiLmQuYS5hLWQuYTticmVhaztjYXNlIDM6Yy5iPWIuZC5uLmIrYi5kLmEuYjt9fVxuZnVuY3Rpb24gUTZjKGEsYixjLGQsZSl7aWYoZDxifHxlPGMpe3Rocm93IHZiYihuZXcgV2RiKCdUaGUgaGlnaHggbXVzdCBiZSBiaWdnZXIgdGhlbiBsb3d4IGFuZCB0aGUgaGlnaHkgbXVzdCBiZSBiaWdnZXIgdGhlbiBsb3d5JykpfWEuYTxiPyhhLmE9Yik6YS5hPmQmJihhLmE9ZCk7YS5iPGM/KGEuYj1jKTphLmI+ZSYmKGEuYj1lKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIGxzZChhKXtpZihKRChhLDE0OSkpe3JldHVybiBlc2QoQkQoYSwxNDkpKX1lbHNlIGlmKEpEKGEsMjI5KSl7cmV0dXJuIGZzZChCRChhLDIyOSkpfWVsc2UgaWYoSkQoYSwyMykpe3JldHVybiBnc2QoQkQoYSwyMykpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoWHRlK0ZlKG5ldyBhbWIoT0MoR0MoU0ksMSksVWhlLDEsNSxbYV0pKSkpKX19XG5mdW5jdGlvbiBtaGIoYSxiLGMsZCxlKXt2YXIgZixnLGg7Zj10cnVlO2ZvcihnPTA7ZzxkO2crKyl7Zj1mJmNbZ109PTB9aWYoZT09MCl7JGZiKGMsZCxhLDAsYik7Zz1ifWVsc2V7aD0zMi1lO2Y9ZiZjW2ddPDxoPT0wO2ZvcihnPTA7ZzxiLTE7ZysrKXthW2ddPWNbZytkXT4+PmV8Y1tnK2QrMV08PGh9YVtnXT1jW2crZF0+Pj5lOysrZ31yZXR1cm4gZn1cbmZ1bmN0aW9uIHpNYyhhLGIsYyxkKXt2YXIgZSxmLGc7aWYoYi5rPT0oajBiKCksZzBiKSl7Zm9yKGY9bmV3IFNyKHVyKFJfYihiKS5hLktjKCksbmV3IFNxKSk7UXIoZik7KXtlPUJEKFJyKGYpLDE3KTtnPWUuYy5pLms7aWYoZz09ZzBiJiZhLmMuYVtlLmMuaS5jLnBdPT1kJiZhLmMuYVtiLmMucF09PWMpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gbUQoYSxiKXt2YXIgYyxkLGUsZjtiJj02MztjPWEuaCZGamU7aWYoYjwyMil7Zj1jPj4+YjtlPWEubT4+YnxjPDwyMi1iO2Q9YS5sPj5ifGEubTw8MjItYn1lbHNlIGlmKGI8NDQpe2Y9MDtlPWM+Pj5iLTIyO2Q9YS5tPj5iLTIyfGEuaDw8NDQtYn1lbHNle2Y9MDtlPTA7ZD1jPj4+Yi00NH1yZXR1cm4gVEMoZCZFamUsZSZFamUsZiZGamUpfVxuZnVuY3Rpb24gSWljKGEsYixjLGQpe3ZhciBlO3RoaXMuYj1kO3RoaXMuZT1hPT0ockdjKCkscEdjKTtlPWJbY107dGhpcy5kPUlDKHNiYixbbmllLGRsZV0sWzE3NywyNV0sMTYsW2UubGVuZ3RoLGUubGVuZ3RoXSwyKTt0aGlzLmE9SUMoV0QsW25pZSxvamVdLFs0OCwyNV0sMTUsW2UubGVuZ3RoLGUubGVuZ3RoXSwyKTt0aGlzLmM9bmV3IHNpYyhiLGMpfVxuZnVuY3Rpb24gbGpjKGEpe3ZhciBiLGMsZDthLms9bmV3IEtpKChVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKS5sZW5ndGgsYS5qLmMubGVuZ3RoKTtmb3IoZD1uZXcgb2xiKGEuaik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDExMyk7Yj1jLmQuajtSYyhhLmssYixjKX1hLmU9WmpjKEVjKGEuaykpfVxuZnVuY3Rpb24gVVFjKGEsYil7dmFyIGMsZCxlO1FxYihhLmQsYik7Yz1uZXcgX1FjO1JoYihhLmMsYixjKTtjLmY9VlFjKGIuYyk7Yy5hPVZRYyhiLmQpO2MuZD0oaFFjKCksZT1iLmMuaS5rLGU9PShqMGIoKSxoMGIpfHxlPT1kMGIpO2MuZT0oZD1iLmQuaS5rLGQ9PWgwYnx8ZD09ZDBiKTtjLmI9Yi5jLmo9PShVY2QoKSxUY2QpO2MuYz1iLmQuaj09emNkfVxuZnVuY3Rpb24gQkdiKGEpe3ZhciBiLGMsZCxlLGY7Zj1PaGU7ZT1PaGU7Zm9yKGQ9bmV3IG9sYihMRmIoYSkpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyMTMpO2I9Yy5lLmUtYy5kLmU7Yy5lPT1hJiZiPGU/KGU9Yik6YjxmJiYoZj1iKX1lPT1PaGUmJihlPS0xKTtmPT1PaGUmJihmPS0xKTtyZXR1cm4gbmV3IHZnZChtZWIoZSksbWViKGYpKX1cbmZ1bmN0aW9uIHpRYihhLGIpe3ZhciBjLGQsZTtlPWRtZTtkPShST2IoKSxPT2IpO2U9JHduZC5NYXRoLmFicyhhLmIpO2M9JHduZC5NYXRoLmFicyhiLmYtYS5iKTtpZihjPGUpe2U9YztkPVBPYn1jPSR3bmQuTWF0aC5hYnMoYS5hKTtpZihjPGUpe2U9YztkPVFPYn1jPSR3bmQuTWF0aC5hYnMoYi5nLWEuYSk7aWYoYzxlKXtlPWM7ZD1OT2J9cmV0dXJuIGR9XG5mdW5jdGlvbiBMOWIoYSxiKXt2YXIgYyxkLGUsZjtjPWIuYS5vLmE7Zj1uZXcgSmliKFFfYihiLmEpLmIsYi5jLGIuZisxKTtmb3IoZT1uZXcgdmliKGYpO2UuYjxlLmQuZ2MoKTspe2Q9KHNDYihlLmI8ZS5kLmdjKCkpLEJEKGUuZC5YYihlLmM9ZS5iKyspLDI5KSk7aWYoZC5jLmE+PWMpe0s5YihhLGIsZC5wKTtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gSW9kKGEpe3ZhciBiO2lmKChhLkRiJjY0KSE9MClyZXR1cm4gZmxkKGEpO2I9bmV3IFdmYihkdGUpOyFhLmF8fFFmYihRZmIoKGIuYSs9JyBcIicsYiksYS5hKSwnXCInKTtRZmIoTGZiKFFmYihMZmIoUWZiKExmYihRZmIoTGZiKChiLmErPScgKCcsYiksYS5pKSwnLCcpLGEuaiksJyB8ICcpLGEuZyksJywnKSxhLmYpLCcpJyk7cmV0dXJuIGIuYX1cbmZ1bmN0aW9uIFoyZChhLGIsYyl7dmFyIGQsZSxmLGcsaDtoPVM2ZChhLmUuVGcoKSxiKTtlPUJEKGEuZywxMTkpO2Q9MDtmb3IoZz0wO2c8YS5pOysrZyl7Zj1lW2ddO2lmKGgucmwoZi5haygpKSl7aWYoZD09Yyl7WHhkKGEsZyk7cmV0dXJuIFE2ZCgpLEJEKGIsNjYpLk9qKCk/ZjpmLmRkKCl9KytkfX10aHJvdyB2YmIobmV3IHFjYihndmUrYyttdWUrZCkpfVxuZnVuY3Rpb24gc2RlKGEpe3ZhciBiLGMsZDtiPWEuYztpZihiPT0yfHxiPT03fHxiPT0xKXtyZXR1cm4gd2ZlKCksd2ZlKCksZmZlfWVsc2V7ZD1xZGUoYSk7Yz1udWxsO3doaWxlKChiPWEuYykhPTImJmIhPTcmJmIhPTEpe2lmKCFjKXtjPSh3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgTGdlKDEpKTtLZ2UoYyxkKTtkPWN9S2dlKGMscWRlKGEpKX1yZXR1cm4gZH19XG5mdW5jdGlvbiBLYihhLGIsYyl7aWYoYTwwfHxhPmMpe3JldHVybiBKYihhLGMsJ3N0YXJ0IGluZGV4Jyl9aWYoYjwwfHxiPmMpe3JldHVybiBKYihiLGMsJ2VuZCBpbmRleCcpfXJldHVybiBoYygnZW5kIGluZGV4ICglcykgbXVzdCBub3QgYmUgbGVzcyB0aGFuIHN0YXJ0IGluZGV4ICglcyknLE9DKEdDKFNJLDEpLFVoZSwxLDUsW21lYihiKSxtZWIoYSldKSl9XG5mdW5jdGlvbiBQeihiLGMpe3ZhciBkLGUsZixnO2ZvcihlPTAsZj1iLmxlbmd0aDtlPGY7ZSsrKXtnPWJbZV07dHJ5e2dbMV0/Z1swXS5qbSgpJiYoYz1PeihjLGcpKTpnWzBdLmptKCl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3OCkpe2Q9YTtBeigpO0d6KEpEKGQsNDc3KT9CRChkLDQ3NykuYWUoKTpkKX1lbHNlIHRocm93IHZiYihhKX19cmV0dXJuIGN9XG5mdW5jdGlvbiBLOWIoYSxiLGMpe3ZhciBkLGUsZjtjIT1iLmMrYi5iLmdjKCkmJlo5YihiLmEsZmFjKGIsYy1iLmMpKTtmPWIuYS5jLnA7YS5hW2ZdPSR3bmQuTWF0aC5tYXgoYS5hW2ZdLGIuYS5vLmEpO2ZvcihlPUJEKHZOYihiLmEsKHd0YygpLGt0YykpLDE1KS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDcwKTt5TmIoZCxIOWIsKEJjYigpLHRydWUpKX19XG5mdW5jdGlvbiBXZWMoYSxiKXt2YXIgYyxkLGU7ZT1WZWMoYik7eU5iKGIsKHd0YygpLFhzYyksZSk7aWYoZSl7ZD1PaGU7ISFpcmIoYS5mLGUpJiYoZD1CRChXZChpcmIoYS5mLGUpKSwxOSkuYSk7Yz1CRChJa2IoYi5nLDApLDE3KTtDY2IoREQodk5iKGMsbHRjKSkpfHxSaGIoYSxlLG1lYigkd25kLk1hdGgubWluKEJEKHZOYihjLFpzYyksMTkpLmEsZCkpKX19XG5mdW5jdGlvbiBpQ2MoYSxiLGMpe3ZhciBkLGUsZixnLGg7Yi5wPS0xO2ZvcihoPVdfYihiLChLQWMoKSxJQWMpKS5LYygpO2guT2IoKTspe2c9QkQoaC5QYigpLDExKTtmb3IoZT1uZXcgb2xiKGcuZyk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE3KTtmPWQuZC5pO2IhPWYmJihmLnA8MD9jLkZjKGQpOmYucD4wJiZpQ2MoYSxmLGMpKX19Yi5wPTB9XG5mdW5jdGlvbiBwNWMoYSl7dmFyIGI7dGhpcy5jPW5ldyBQc2I7dGhpcy5mPWEuZTt0aGlzLmU9YS5kO3RoaXMuaT1hLmc7dGhpcy5kPWEuYzt0aGlzLmI9YS5iO3RoaXMuaz1hLmo7dGhpcy5hPWEuYTshYS5pPyh0aGlzLmo9KGI9QkQoZ2RiKGUxKSw5KSxuZXcgeHFiKGIsQkQoX0JiKGIsYi5sZW5ndGgpLDkpLDApKSk6KHRoaXMuaj1hLmkpO3RoaXMuZz1hLmZ9XG5mdW5jdGlvbiBXYihhKXt2YXIgYixjLGQsZTtiPUtmYihRZmIobmV3IFdmYignUHJlZGljYXRlcy4nKSwnYW5kJyksNDApO2M9dHJ1ZTtmb3IoZT1uZXcgdmliKGEpO2UuYjxlLmQuZ2MoKTspe2Q9KHNDYihlLmI8ZS5kLmdjKCkpLGUuZC5YYihlLmM9ZS5iKyspKTtjfHwoYi5hKz0nLCcsYik7Yi5hKz0nJytkO2M9ZmFsc2V9cmV0dXJuIChiLmErPScpJyxiKS5hfVxuZnVuY3Rpb24gUmNjKGEsYixjKXt2YXIgZCxlLGY7aWYoYzw9YisyKXtyZXR1cm59ZT0oYy1iKS8yfDA7Zm9yKGQ9MDtkPGU7KytkKXtmPSh0Q2IoYitkLGEuYy5sZW5ndGgpLEJEKGEuY1tiK2RdLDExKSk7TmtiKGEsYitkLCh0Q2IoYy1kLTEsYS5jLmxlbmd0aCksQkQoYS5jW2MtZC0xXSwxMSkpKTt0Q2IoYy1kLTEsYS5jLmxlbmd0aCk7YS5jW2MtZC0xXT1mfX1cbmZ1bmN0aW9uIGhqYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztmPWEuZC5wO2g9Zi5lO2k9Zi5yO2EuZz1uZXcgZEljKGkpO2c9YS5kLm8uYy5wO2Q9Zz4wP2hbZy0xXTpLQyhPUSxrbmUsMTAsMCwwLDEpO2U9aFtnXTtqPWc8aC5sZW5ndGgtMT9oW2crMV06S0MoT1Esa25lLDEwLDAsMCwxKTtrPWI9PWMtMTtrP1JIYyhhLmcsZSxqKTpSSGMoYS5nLGQsZSl9XG5mdW5jdGlvbiBwamMoYSl7dmFyIGI7dGhpcy5qPW5ldyBSa2I7dGhpcy5mPW5ldyBUcWI7dGhpcy5iPShiPUJEKGdkYihGMSksOSksbmV3IHhxYihiLEJEKF9CYihiLGIubGVuZ3RoKSw5KSwwKSk7dGhpcy5kPUtDKFdELG9qZSwyNSwoVWNkKCksT0MoR0MoRjEsMSksYm5lLDYxLDAsW1NjZCxBY2QsemNkLFJjZCxUY2RdKSkubGVuZ3RoLDE1LDEpO3RoaXMuZz1hfVxuZnVuY3Rpb24gUVZjKGEsYil7dmFyIGMsZCxlO2lmKGIuYy5sZW5ndGghPTApe2M9UlZjKGEsYik7ZT1mYWxzZTt3aGlsZSghYyl7QVZjKGEsYix0cnVlKTtlPXRydWU7Yz1SVmMoYSxiKX1lJiZBVmMoYSxiLGZhbHNlKTtkPWRWYyhiKTshIWEuYiYmYS5iLmxnKGQpO2EuYT1QVmMoYSwodENiKDAsYi5jLmxlbmd0aCksQkQoYi5jWzBdLDMzKSkpO1FWYyhhLGQpfX1cbmZ1bmN0aW9uIENpZChhLGIpe3ZhciBjLGQsZTtkPVhLZChhLlRnKCksYik7Yz1iLWEuQWgoKTtpZihjPDApe2lmKCFkKXt0aHJvdyB2YmIobmV3IFdkYihtdGUrYitudGUpKX1lbHNlIGlmKGQuSWooKSl7ZT1hLllnKGQpO2U+PTA/YS5CaChlKTp2aWQoYSxkKX1lbHNle3Rocm93IHZiYihuZXcgV2RiKGl0ZStkLm5lKCkranRlKSl9fWVsc2V7ZWlkKGEsYyxkKX19XG5mdW5jdGlvbiBhcWQoYSl7dmFyIGIsYztjPW51bGw7Yj1mYWxzZTtpZihKRChhLDIwNCkpe2I9dHJ1ZTtjPUJEKGEsMjA0KS5hfWlmKCFiKXtpZihKRChhLDI1OCkpe2I9dHJ1ZTtjPScnK0JEKGEsMjU4KS5hfX1pZighYil7aWYoSkQoYSw0ODMpKXtiPXRydWU7Yz0nJytCRChhLDQ4MykuYX19aWYoIWIpe3Rocm93IHZiYihuZXcgdmNiKFV0ZSkpfXJldHVybiBjfVxuZnVuY3Rpb24gT1JkKGEsYil7dmFyIGMsZDtpZihhLmYpe3doaWxlKGIuT2IoKSl7Yz1CRChiLlBiKCksNzIpO2Q9Yy5haygpO2lmKEpEKGQsOTkpJiYoQkQoZCwxOCkuQmImb3RlKSE9MCYmKCFhLmV8fGQuR2ooKSE9eDJ8fGQuYWooKSE9MCkmJmMuZGQoKSE9bnVsbCl7Yi5VYigpO3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9ZWxzZXtyZXR1cm4gYi5PYigpfX1cbmZ1bmN0aW9uIFFSZChhLGIpe3ZhciBjLGQ7aWYoYS5mKXt3aGlsZShiLlNiKCkpe2M9QkQoYi5VYigpLDcyKTtkPWMuYWsoKTtpZihKRChkLDk5KSYmKEJEKGQsMTgpLkJiJm90ZSkhPTAmJighYS5lfHxkLkdqKCkhPXgyfHxkLmFqKCkhPTApJiZjLmRkKCkhPW51bGwpe2IuUGIoKTtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfWVsc2V7cmV0dXJuIGIuU2IoKX19XG5mdW5jdGlvbiBJMmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtpPVM2ZChhLmUuVGcoKSxiKTtkPTA7aD1hLmk7ZT1CRChhLmcsMTE5KTtmb3IoZz0wO2c8YS5pOysrZyl7Zj1lW2ddO2lmKGkucmwoZi5haygpKSl7aWYoYz09ZCl7cmV0dXJuIGd9KytkO2g9ZysxfX1pZihjPT1kKXtyZXR1cm4gaH1lbHNle3Rocm93IHZiYihuZXcgcWNiKGd2ZStjK211ZStkKSl9fVxuZnVuY3Rpb24gZDliKGEsYil7dmFyIGMsZCxlLGY7aWYoYS5mLmMubGVuZ3RoPT0wKXtyZXR1cm4gbnVsbH1lbHNle2Y9bmV3IEk2Yztmb3IoZD1uZXcgb2xiKGEuZik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDcwKTtlPWMubztmLmI9JHduZC5NYXRoLm1heChmLmIsZS5hKTtmLmErPWUuYn1mLmErPShhLmYuYy5sZW5ndGgtMSkqYjtyZXR1cm4gZn19XG5mdW5jdGlvbiBRSmMoYSxiLGMpe3ZhciBkLGUsZjtmb3IoZT1uZXcgU3IodXIoT19iKGMpLmEuS2MoKSxuZXcgU3EpKTtRcihlKTspe2Q9QkQoUnIoZSksMTcpO2lmKCEoIU9aYihkKSYmISghT1piKGQpJiZkLmMuaS5jPT1kLmQuaS5jKSkpe2NvbnRpbnVlfWY9SUpjKGEsZCxjLG5ldyB2S2MpO2YuYy5sZW5ndGg+MSYmKGIuY1tiLmMubGVuZ3RoXT1mLHRydWUpfX1cbmZ1bmN0aW9uIFRKYyhhKXt2YXIgYixjLGQsZTtjPW5ldyBQc2I7eWUoYyxhLm8pO2Q9bmV3IHR3Yjt3aGlsZShjLmIhPTApe2I9QkQoYy5iPT0wP251bGw6KHNDYihjLmIhPTApLE5zYihjLGMuYS5hKSksNTA4KTtlPUtKYyhhLGIsdHJ1ZSk7ZSYmRWtiKGQuYSxiKX13aGlsZShkLmEuYy5sZW5ndGghPTApe2I9QkQocndiKGQpLDUwOCk7S0pjKGEsYixmYWxzZSl9fVxuZnVuY3Rpb24gXzVjKCl7XzVjPWNjYjskNWM9bmV3IGE2YyhvbGUsMCk7VDVjPW5ldyBhNmMoJ0JPT0xFQU4nLDEpO1g1Yz1uZXcgYTZjKCdJTlQnLDIpO1o1Yz1uZXcgYTZjKCdTVFJJTkcnLDMpO1U1Yz1uZXcgYTZjKCdET1VCTEUnLDQpO1Y1Yz1uZXcgYTZjKCdFTlVNJyw1KTtXNWM9bmV3IGE2YygnRU5VTVNFVCcsNik7WTVjPW5ldyBhNmMoJ09CSkVDVCcsNyl9XG5mdW5jdGlvbiBINmMoYSxiKXt2YXIgYyxkLGUsZixnO2Q9JHduZC5NYXRoLm1pbihhLmMsYi5jKTtmPSR3bmQuTWF0aC5taW4oYS5kLGIuZCk7ZT0kd25kLk1hdGgubWF4KGEuYythLmIsYi5jK2IuYik7Zz0kd25kLk1hdGgubWF4KGEuZCthLmEsYi5kK2IuYSk7aWYoZTxkKXtjPWQ7ZD1lO2U9Y31pZihnPGYpe2M9ZjtmPWc7Zz1jfUc2YyhhLGQsZixlLWQsZy1mKX1cbmZ1bmN0aW9uIE82ZCgpe082ZD1jY2I7TDZkPU9DKEdDKFpJLDEpLG5pZSwyLDYsW3N3ZSx0d2UsdXdlLHZ3ZSx3d2UseHdlLGV1ZV0pO0s2ZD1PQyhHQyhaSSwxKSxuaWUsMiw2LFtzd2UsJ2VtcHR5Jyx0d2UsUXZlLCdlbGVtZW50T25seSddKTtONmQ9T0MoR0MoWkksMSksbmllLDIsNixbc3dlLCdwcmVzZXJ2ZScsJ3JlcGxhY2UnLHl3ZV0pO002ZD1uZXcgeTFkfVxuZnVuY3Rpb24gWSRiKGEsYixjKXt2YXIgZCxlLGY7aWYoYj09Yyl7cmV0dXJufWQ9Yjtkb3tQNmMoYSxkLmMpO2U9ZC5lO2lmKGUpe2Y9ZC5kO082YyhhLGYuYixmLmQpO1A2YyhhLGUubik7ZD1RX2IoZSl9fXdoaWxlKGUpO2Q9Yztkb3tjN2MoYSxkLmMpO2U9ZC5lO2lmKGUpe2Y9ZC5kO2I3YyhhLGYuYixmLmQpO2M3YyhhLGUubik7ZD1RX2IoZSl9fXdoaWxlKGUpfVxuZnVuY3Rpb24gcWljKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7aWYoZC5mLmMrZC5nLmM9PTApe2ZvcihnPWEuYVthLmNdLGg9MCxpPWcubGVuZ3RoO2g8aTsrK2gpe2Y9Z1toXTtSaGIoZCxmLG5ldyB6aWMoYSxmLGMpKX19ZT1CRChXZChpcmIoZC5mLGIpKSw2NjMpO2UuYj0wO2UuYz1lLmY7ZS5jPT0wfHxDaWMoQkQoSWtiKGUuYSxlLmIpLDI4NykpO3JldHVybiBlfVxuZnVuY3Rpb24gQXBjKCl7QXBjPWNjYjt3cGM9bmV3IEJwYygnTUVESUFOX0xBWUVSJywwKTt5cGM9bmV3IEJwYygnVEFJTF9MQVlFUicsMSk7dnBjPW5ldyBCcGMoJ0hFQURfTEFZRVInLDIpO3hwYz1uZXcgQnBjKCdTUEFDRV9FRkZJQ0lFTlRfTEFZRVInLDMpO3pwYz1uZXcgQnBjKCdXSURFU1RfTEFZRVInLDQpO3VwYz1uZXcgQnBjKCdDRU5URVJfTEFZRVInLDUpfVxuZnVuY3Rpb24gckpiKGEpe3N3aXRjaChhLmcpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOnJldHVybiBVY2QoKSxBY2Q7Y2FzZSAzOmNhc2UgNDpjYXNlIDU6cmV0dXJuIFVjZCgpLFJjZDtjYXNlIDY6Y2FzZSA3OmNhc2UgODpyZXR1cm4gVWNkKCksVGNkO2Nhc2UgOTpjYXNlIDEwOmNhc2UgMTE6cmV0dXJuIFVjZCgpLHpjZDtkZWZhdWx0OnJldHVybiBVY2QoKSxTY2Q7fX1cbmZ1bmN0aW9uIHNLYyhhLGIpe3ZhciBjO2lmKGEuYy5sZW5ndGg9PTApe3JldHVybiBmYWxzZX1jPUx6YygodENiKDAsYS5jLmxlbmd0aCksQkQoYS5jWzBdLDE3KSkuYy5pKTtGSmMoKTtpZihjPT0oSXpjKCksRnpjKXx8Yz09RXpjKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gRkFiKE5BYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLDE2KSksbmV3IEFLYyksbmV3IENLYyhiKSl9XG5mdW5jdGlvbiBjUmMoYSxiLGMpe3ZhciBkLGUsZjtpZighYS5iW2IuZ10pe2EuYltiLmddPXRydWU7ZD1jOyFkJiYoZD1uZXcgU1JjKTtEc2IoZC5iLGIpO2ZvcihmPWEuYVtiLmddLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksMTg4KTtlLmIhPWImJmNSYyhhLGUuYixkKTtlLmMhPWImJmNSYyhhLGUuYyxkKTtEc2IoZC5hLGUpfXJldHVybiBkfXJldHVybiBudWxsfVxuZnVuY3Rpb24gcVNjKCl7cVNjPWNjYjtwU2M9bmV3IHJTYygnUk9PVF9QUk9DJywwKTtsU2M9bmV3IHJTYygnRkFOX1BST0MnLDEpO25TYz1uZXcgclNjKCdORUlHSEJPUlNfUFJPQycsMik7bVNjPW5ldyByU2MoJ0xFVkVMX0hFSUdIVCcsMyk7b1NjPW5ldyByU2MoJ05PREVfUE9TSVRJT05fUFJPQycsNCk7a1NjPW5ldyByU2MoJ0RFVFJFRUlGWUlOR19QUk9DJyw1KX1cbmZ1bmN0aW9uIGtxZChhLGIpe2lmKEpEKGIsMjM5KSl7cmV0dXJuIGVxZChhLEJEKGIsMzMpKX1lbHNlIGlmKEpEKGIsMTg2KSl7cmV0dXJuIGZxZChhLEJEKGIsMTE4KSl9ZWxzZSBpZihKRChiLDQzOSkpe3JldHVybiBkcWQoYSxCRChiLDIwMikpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoWHRlK0ZlKG5ldyBhbWIoT0MoR0MoU0ksMSksVWhlLDEsNSxbYl0pKSkpKX19XG5mdW5jdGlvbiB4dShhLGIsYyl7dmFyIGQsZTt0aGlzLmY9YTtkPUJEKE9oYihhLmIsYiksMjgzKTtlPSFkPzA6ZC5hO1NiKGMsZSk7aWYoYz49KGUvMnwwKSl7dGhpcy5lPSFkP251bGw6ZC5jO3RoaXMuZD1lO3doaWxlKGMrKzxlKXt2dSh0aGlzKX19ZWxzZXt0aGlzLmM9IWQ/bnVsbDpkLmI7d2hpbGUoYy0tPjApe3V1KHRoaXMpfX10aGlzLmI9Yjt0aGlzLmE9bnVsbH1cbmZ1bmN0aW9uIHJFYihhLGIpe3ZhciBjLGQ7Yi5hP3NFYihhLGIpOihjPUJEKEV4YihhLmIsYi5iKSw1NyksISFjJiZjPT1hLmFbYi5iLmZdJiYhIWMuYSYmYy5hIT1iLmIuYSYmYy5jLkZjKGIuYiksZD1CRChEeGIoYS5iLGIuYiksNTcpLCEhZCYmYS5hW2QuZl09PWIuYiYmISFkLmEmJmQuYSE9Yi5iLmEmJmIuYi5jLkZjKGQpLEZ4YihhLmIsYi5iKSx1bmRlZmluZWQpfVxuZnVuY3Rpb24gRkpiKGEsYil7dmFyIGMsZDtjPUJEKE1wYihhLmIsYiksMTI0KTtpZihCRChCRChRYyhhLnIsYiksMjEpLDg0KS5kYygpKXtjLm4uYj0wO2Mubi5jPTA7cmV0dXJufWMubi5iPWEuQy5iO2Mubi5jPWEuQy5jO2EuQS5IYygodGRkKCksc2RkKSkmJktKYihhLGIpO2Q9SkpiKGEsYik7S0liKGEsYik9PShUYmQoKSxRYmQpJiYoZCs9MiphLncpO2MuYS5hPWR9XG5mdW5jdGlvbiBPS2IoYSxiKXt2YXIgYyxkO2M9QkQoTXBiKGEuYixiKSwxMjQpO2lmKEJEKEJEKFFjKGEucixiKSwyMSksODQpLmRjKCkpe2Mubi5kPTA7Yy5uLmE9MDtyZXR1cm59Yy5uLmQ9YS5DLmQ7Yy5uLmE9YS5DLmE7YS5BLkhjKCh0ZGQoKSxzZGQpKSYmU0tiKGEsYik7ZD1SS2IoYSxiKTtLSWIoYSxiKT09KFRiZCgpLFFiZCkmJihkKz0yKmEudyk7Yy5hLmI9ZH1cbmZ1bmN0aW9uIGNPYihhLGIpe3ZhciBjLGQsZSxmO2Y9bmV3IFJrYjtmb3IoZD1uZXcgb2xiKGIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw2NSk7RWtiKGYsbmV3IG9PYihjLHRydWUpKTtFa2IoZixuZXcgb09iKGMsZmFsc2UpKX1lPW5ldyBoT2IoYSk7endiKGUuYS5hKTtrRGIoZixhLmIsbmV3IGFtYihPQyhHQyhKTSwxKSxVaGUsNjc5LDAsW2VdKSkpfVxuZnVuY3Rpb24gclFiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2k9YS5hO249YS5iO2o9Yi5hO289Yi5iO2s9Yy5hO3A9Yy5iO2w9ZC5hO3E9ZC5iO2Y9aSpvLW4qajtnPWsqcS1wKmw7ZT0oaS1qKSoocC1xKS0obi1vKSooay1sKTtoPShmKihrLWwpLWcqKGktaikpL2U7bT0oZioocC1xKS1nKihuLW8pKS9lO3JldHVybiBuZXcgZjdjKGgsbSl9XG5mdW5jdGlvbiBUQmMoYSxiKXt2YXIgYyxkLGU7aWYoYS5kW2IucF0pe3JldHVybn1hLmRbYi5wXT10cnVlO2EuYVtiLnBdPXRydWU7Zm9yKGQ9bmV3IFNyKHVyKFVfYihiKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDE3KTtpZihPWmIoYykpe2NvbnRpbnVlfWU9Yy5kLmk7YS5hW2UucF0/RWtiKGEuYixjKTpUQmMoYSxlKX1hLmFbYi5wXT1mYWxzZX1cbmZ1bmN0aW9uIHBDYyhhLGIsYyl7dmFyIGQ7ZD0wO3N3aXRjaChCRCh2TmIoYiwoTnljKCksbXhjKSksMTYzKS5nKXtjYXNlIDI6ZD0yKi1jK2EuYTsrK2EuYTticmVhaztjYXNlIDE6ZD0tYzticmVhaztjYXNlIDM6ZD1jO2JyZWFrO2Nhc2UgNDpkPTIqYythLmI7KythLmI7fXdOYihiLCh3dGMoKSxac2MpKSYmKGQrPUJEKHZOYihiLFpzYyksMTkpLmEpO3JldHVybiBkfVxuZnVuY3Rpb24gak9jKGEsYixjKXt2YXIgZCxlLGY7Yy56YyhiLGEpO0VrYihhLm4sYik7Zj1hLnAuZWcoYik7Yi5qPT1hLnAuZmcoKT95T2MoYS5lLGYpOnlPYyhhLmosZik7bE9jKGEpO2ZvcihlPXVsKHBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFtuZXcgSjBiKGIpLG5ldyBSMGIoYildKSkpO1FyKGUpOyl7ZD1CRChScihlKSwxMSk7Yy5fYihkKXx8ak9jKGEsZCxjKX19XG5mdW5jdGlvbiByZmQoYSl7dmFyIGIsYyxkO2M9QkQoaGtkKGEsKFk5YygpLFk4YykpLDIxKTtpZihjLkhjKCh0ZGQoKSxwZGQpKSl7ZD1CRChoa2QoYSxiOWMpLDIxKTtiPW5ldyBnN2MoQkQoaGtkKGEsXzhjKSw4KSk7aWYoZC5IYygoSWRkKCksQmRkKSkpe2IuYTw9MCYmKGIuYT0yMCk7Yi5iPD0wJiYoYi5iPTIwKX1yZXR1cm4gYn1lbHNle3JldHVybiBuZXcgZDdjfX1cbmZ1bmN0aW9uIFBLZChhKXt2YXIgYixjLGQ7aWYoIWEuYil7ZD1uZXcgJE5kO2ZvcihjPW5ldyAkeWQoU0tkKGEpKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChaeWQoYyksMTgpOyhiLkJiJm90ZSkhPTAmJnd0ZChkLGIpfXZ1ZChkKTthLmI9bmV3IG5OZCgoQkQocXVkKFpLZCgoTkZkKCksTUZkKS5vKSw4KSwxOCksZC5pKSxkLmcpOyRLZChhKS5iJj0tOX1yZXR1cm4gYS5ifVxuZnVuY3Rpb24gUm1jKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtpPUJEKEVlKEVjKGIuayksS0MoRjEsYm5lLDYxLDIsMCwxKSksMTIyKTtqPWIuZztjPVRtYyhiLGlbMF0pO2U9U21jKGIsaVsxXSk7ZD1LbWMoYSxqLGMsZSk7Zj1UbWMoYixpWzFdKTtoPVNtYyhiLGlbMF0pO2c9S21jKGEsaixmLGgpO2lmKGQ8PWcpe2IuYT1jO2IuYz1lfWVsc2V7Yi5hPWY7Yi5jPWh9fVxuZnVuY3Rpb24gRVNjKGEsYixjKXt2YXIgZCxlLGY7T2RkKGMsJ1Byb2Nlc3NvciBzZXQgbmVpZ2hib3JzJywxKTthLmE9Yi5iLmI9PTA/MTpiLmIuYjtlPW51bGw7ZD1Kc2IoYi5iLDApO3doaWxlKCFlJiZkLmIhPWQuZC5jKXtmPUJEKFhzYihkKSw4Nik7Q2NiKEREKHZOYihmLChtVGMoKSxqVGMpKSkpJiYoZT1mKX0hIWUmJkZTYyhhLG5ldyBaUmMoZSksYyk7UWRkKGMpfVxuZnVuY3Rpb24gUEVkKGEpe0lFZCgpO3ZhciBiLGMsZCxlO2Q9aGZiKGEsd2ZiKDM1KSk7Yj1kPT0tMT9hOmEuc3Vic3RyKDAsZCk7Yz1kPT0tMT9udWxsOmEuc3Vic3RyKGQrMSk7ZT1rRmQoSEVkLGIpO2lmKCFlKXtlPWFGZChiKTtsRmQoSEVkLGIsZSk7YyE9bnVsbCYmKGU9SkVkKGUsYykpfWVsc2UgYyE9bnVsbCYmKGU9SkVkKGUsKHVDYihjKSxjKSkpO3JldHVybiBlfVxuZnVuY3Rpb24gc21iKGEpe3ZhciBoO21tYigpO3ZhciBiLGMsZCxlLGYsZztpZihKRChhLDU0KSl7Zm9yKGU9MCxkPWEuZ2MoKS0xO2U8ZDsrK2UsLS1kKXtoPWEuWGIoZSk7YS5fYyhlLGEuWGIoZCkpO2EuX2MoZCxoKX19ZWxzZXtiPWEuWWMoKTtmPWEuWmMoYS5nYygpKTt3aGlsZShiLlRiKCk8Zi5WYigpKXtjPWIuUGIoKTtnPWYuVWIoKTtiLldiKGcpO2YuV2IoYyl9fX1cbmZ1bmN0aW9uIEkzYihhLGIpe3ZhciBjLGQsZTtPZGQoYiwnRW5kIGxhYmVsIHByZS1wcm9jZXNzaW5nJywxKTtjPUVkYihFRCh2TmIoYSwoTnljKCksbnljKSkpKTtkPUVkYihFRCh2TmIoYSxyeWMpKSk7ZT1nYWQoQkQodk5iKGEsTHdjKSwxMDMpKTtNQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuYiwxNikpLG5ldyBRM2IpLG5ldyBTM2IoYyxkLGUpKTtRZGQoYil9XG5mdW5jdGlvbiBORmMoYSxiKXt2YXIgYyxkLGUsZixnLGg7aD0wO2Y9bmV3IGprYjtXamIoZixiKTt3aGlsZShmLmIhPWYuYyl7Zz1CRChma2IoZiksMjE0KTtoKz1wSGMoZy5kLGcuZSk7Zm9yKGU9bmV3IG9sYihnLmIpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwzNyk7Yz1CRChJa2IoYS5iLGQucCksMjE0KTtjLnN8fChoKz1ORmMoYSxjKSl9fXJldHVybiBofVxuZnVuY3Rpb24gWVFjKGEsYixjKXt2YXIgZCxlO1RRYyh0aGlzKTtiPT0oRlFjKCksRFFjKT9RcWIodGhpcy5yLGEuYyk6UXFiKHRoaXMudyxhLmMpO2M9PURRYz9RcWIodGhpcy5yLGEuZCk6UXFiKHRoaXMudyxhLmQpO1VRYyh0aGlzLGEpO2Q9VlFjKGEuYyk7ZT1WUWMoYS5kKTtYUWModGhpcyxkLGUsZSk7dGhpcy5vPShoUWMoKSwkd25kLk1hdGguYWJzKGQtZSk8MC4yKX1cbmZ1bmN0aW9uIGEwZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2g9QkQoQWpkKGEuYSw4KSwxOTM2KTtpZihoIT1udWxsKXtmb3IoZT1oLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype251bGwuam0oKX19ZD1jO2lmKChhLmEuRGImMSk9PTApe2k9bmV3IGYwZChhLGMsYik7ZC51aShpKX1KRChkLDY3Mik/QkQoZCw2NzIpLndpKGEuYSk6ZC50aSgpPT1hLmEmJmQudmkobnVsbCl9XG5mdW5jdGlvbiBkYWUoKXt2YXIgYTtpZihaOWQpcmV0dXJuIEJEKG5VZCgoeUZkKCkseEZkKSxFd2UpLDE5NDUpO2VhZSgpO2E9QkQoSkQoUGhiKCh5RmQoKSx4RmQpLEV3ZSksNTg2KT9QaGIoeEZkLEV3ZSk6bmV3IGNhZSw1ODYpO1o5ZD10cnVlO2FhZShhKTtiYWUoYSk7UmhiKChKRmQoKSxJRmQpLGEsbmV3IGZhZSk7VG5kKGEpO1NoYih4RmQsRXdlLGEpO3JldHVybiBhfVxuZnVuY3Rpb24geEEoYSxiLGMsZCl7dmFyIGU7ZT1vQShhLGMsT0MoR0MoWkksMSksbmllLDIsNixbcmplLHNqZSx0amUsdWplLHZqZSx3amUseGplXSksYik7ZTwwJiYoZT1vQShhLGMsT0MoR0MoWkksMSksbmllLDIsNixbJ1N1bicsJ01vbicsJ1R1ZScsJ1dlZCcsJ1RodScsJ0ZyaScsJ1NhdCddKSxiKSk7aWYoZTwwKXtyZXR1cm4gZmFsc2V9ZC5kPWU7cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBBQShhLGIsYyxkKXt2YXIgZTtlPW9BKGEsYyxPQyhHQyhaSSwxKSxuaWUsMiw2LFtyamUsc2plLHRqZSx1amUsdmplLHdqZSx4amVdKSxiKTtlPDAmJihlPW9BKGEsYyxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnU3VuJywnTW9uJywnVHVlJywnV2VkJywnVGh1JywnRnJpJywnU2F0J10pLGIpKTtpZihlPDApe3JldHVybiBmYWxzZX1kLmQ9ZTtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIE5WYihhKXt2YXIgYixjLGQ7S1ZiKGEpO2Q9bmV3IFJrYjtmb3IoYz1uZXcgb2xiKGEuYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw4MSk7RWtiKGQsbmV3IFpWYihiLHRydWUpKTtFa2IoZCxuZXcgWlZiKGIsZmFsc2UpKX1SVmIoYS5jKTtyWGIoZCxhLmIsbmV3IGFtYihPQyhHQyhiUSwxKSxVaGUsMzY5LDAsW2EuY10pKSk7TVZiKGEpfVxuZnVuY3Rpb24gYzRiKGEpe3ZhciBiLGMsZCxlO2M9bmV3IExxYjtmb3IoZT1uZXcgb2xiKGEuZCk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE4MSk7Yj1CRChkLldlKCh3dGMoKSxEc2MpKSwxNyk7ISFpcmIoYy5mLGIpfHxSaGIoYyxiLG5ldyBwNGIoYikpO0VrYihCRChXZChpcmIoYy5mLGIpKSw0NTYpLmIsZCl9cmV0dXJuIG5ldyBUa2IobmV3ICRpYihjKSl9XG5mdW5jdGlvbiBHYWMoYSxiKXt2YXIgYyxkLGUsZixnO2Q9bmV3IGtrYihhLmouYy5sZW5ndGgpO2M9bnVsbDtmb3IoZj1uZXcgb2xiKGEuaik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDExKTtpZihlLmohPWMpe2QuYj09ZC5jfHxIYWMoZCxjLGIpO1lqYihkKTtjPWUuan1nPU4zYihlKTshIWcmJihYamIoZCxnKSx0cnVlKX1kLmI9PWQuY3x8SGFjKGQsYyxiKX1cbmZ1bmN0aW9uIHdiYyhhLGIpe3ZhciBjLGQsZTtkPW5ldyBCaWIoYS5iLDApO3doaWxlKGQuYjxkLmQuZ2MoKSl7Yz0oc0NiKGQuYjxkLmQuZ2MoKSksQkQoZC5kLlhiKGQuYz1kLmIrKyksNzApKTtlPUJEKHZOYihjLChOeWMoKSxRd2MpKSwyNzIpO2lmKGU9PShxYWQoKSxvYWQpKXt1aWIoZCk7RWtiKGIuYixjKTt3TmIoYywod3RjKCksRHNjKSl8fHlOYihjLERzYyxhKX19fVxuZnVuY3Rpb24gR0RjKGEpe3ZhciBiLGMsZCxlLGY7Yj1zcihuZXcgU3IodXIoVV9iKGEpLmEuS2MoKSxuZXcgU3EpKSk7Zm9yKGU9bmV3IFNyKHVyKFJfYihhKS5hLktjKCksbmV3IFNxKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDE3KTtjPWQuYy5pO2Y9c3IobmV3IFNyKHVyKFVfYihjKS5hLktjKCksbmV3IFNxKSkpO2I9JHduZC5NYXRoLm1heChiLGYpfXJldHVybiBtZWIoYil9XG5mdW5jdGlvbiByVWMoYSxiLGMpe3ZhciBkLGUsZixnO09kZChjLCdQcm9jZXNzb3IgYXJyYW5nZSBub2RlJywxKTtlPW51bGw7Zj1uZXcgUHNiO2Q9SnNiKGIuYiwwKTt3aGlsZSghZSYmZC5iIT1kLmQuYyl7Zz1CRChYc2IoZCksODYpO0NjYihERCh2TmIoZywobVRjKCksalRjKSkpKSYmKGU9Zyl9R3NiKGYsZSxmLmMuYixmLmMpO3FVYyhhLGYsVWRkKGMsMSkpO1FkZChjKX1cbmZ1bmN0aW9uIEZmZChhLGIsYyl7dmFyIGQsZSxmO2Q9QkQoaGtkKGEsKFk5YygpLHc4YykpLDIxKTtlPTA7Zj0wO2IuYT5jLmEmJihkLkhjKChpOGMoKSxjOGMpKT8oZT0oYi5hLWMuYSkvMik6ZC5IYyhlOGMpJiYoZT1iLmEtYy5hKSk7Yi5iPmMuYiYmKGQuSGMoKGk4YygpLGc4YykpPyhmPShiLmItYy5iKS8yKTpkLkhjKGY4YykmJihmPWIuYi1jLmIpKTtFZmQoYSxlLGYpfVxuZnVuY3Rpb24gYW9kKGEsYixjLGQsZSxmLGcsaCxpLGosayxsLG0pe0pEKGEuQ2IsODgpJiZYTWQoJEtkKEJEKGEuQ2IsODgpKSw0KTtwbmQoYSxjKTthLmY9ZztkSmQoYSxoKTtmSmQoYSxpKTtaSWQoYSxqKTtlSmQoYSxrKTtDSWQoYSxsKTthSmQoYSxtKTtCSWQoYSx0cnVlKTtBSWQoYSxlKTthLm9rKGYpO3lJZChhLGIpO2QhPW51bGwmJihhLmk9bnVsbCxfSWQoYSxkKSl9XG5mdW5jdGlvbiBQUmQoYSl7dmFyIGIsYztpZihhLmYpe3doaWxlKGEubj4wKXtiPUJEKGEuay5YYihhLm4tMSksNzIpO2M9Yi5haygpO2lmKEpEKGMsOTkpJiYoQkQoYywxOCkuQmImb3RlKSE9MCYmKCFhLmV8fGMuR2ooKSE9eDJ8fGMuYWooKSE9MCkmJmIuZGQoKSE9bnVsbCl7cmV0dXJuIHRydWV9ZWxzZXstLWEubn19cmV0dXJuIGZhbHNlfWVsc2V7cmV0dXJuIGEubj4wfX1cbmZ1bmN0aW9uIEpiKGEsYixjKXtpZihhPDApe3JldHVybiBoYyhUaGUsT0MoR0MoU0ksMSksVWhlLDEsNSxbYyxtZWIoYSldKSl9ZWxzZSBpZihiPDApe3Rocm93IHZiYihuZXcgV2RiKFZoZStiKSl9ZWxzZXtyZXR1cm4gaGMoJyVzICglcykgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIHNpemUgKCVzKScsT0MoR0MoU0ksMSksVWhlLDEsNSxbYyxtZWIoYSksbWViKGIpXSkpfX1cbmZ1bmN0aW9uIExsYihhLGIsYyxkLGUsZil7dmFyIGcsaCxpLGo7Zz1kLWM7aWYoZzw3KXtJbGIoYixjLGQsZik7cmV0dXJufWk9YytlO2g9ZCtlO2o9aSsoaC1pPj4xKTtMbGIoYixhLGksaiwtZSxmKTtMbGIoYixhLGosaCwtZSxmKTtpZihmLnVlKGFbai0xXSxhW2pdKTw9MCl7d2hpbGUoYzxkKXtOQyhiLGMrKyxhW2krK10pfXJldHVybn1KbGIoYSxpLGosaCxiLGMsZCxmKX1cbmZ1bmN0aW9uIG5FYihhLGIpe3ZhciBjLGQsZTtlPW5ldyBSa2I7Zm9yKGQ9bmV3IG9sYihhLmMuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNTcpO2lmKGIuTGIoYykpe0VrYihlLG5ldyBCRWIoYyx0cnVlKSk7RWtiKGUsbmV3IEJFYihjLGZhbHNlKSl9fXRFYihhLmUpO2tEYihlLGEuZCxuZXcgYW1iKE9DKEdDKEpNLDEpLFVoZSw2NzksMCxbYS5lXSkpKX1cbmZ1bmN0aW9uIGduYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2k9Yi5kO2U9Yi5iLmo7Zm9yKGg9bmV3IG9sYihpKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTAxKTtmPUtDKHNiYixkbGUsMjUsZS5jLmxlbmd0aCwxNiwxKTtSaGIoYS5iLGcsZik7Yz1nLmEuZC5wLTE7ZD1nLmMuZC5wO3doaWxlKGMhPWQpe2M9KGMrMSklZS5jLmxlbmd0aDtmW2NdPXRydWV9fX1cbmZ1bmN0aW9uIHRPYyhhLGIpe2Eucj1uZXcgdU9jKGEucCk7c09jKGEucixhKTt5ZShhLnIuaixhLmopO09zYihhLmopO0RzYihhLmosYik7RHNiKGEuci5lLGIpO2xPYyhhKTtsT2MoYS5yKTt3aGlsZShhLmYuYy5sZW5ndGghPTApe0FPYyhCRChJa2IoYS5mLDApLDEyOSkpfXdoaWxlKGEuay5jLmxlbmd0aCE9MCl7QU9jKEJEKElrYihhLmssMCksMTI5KSl9cmV0dXJuIGEucn1cbmZ1bmN0aW9uIHlpZChhLGIsYyl7dmFyIGQsZSxmO2U9WEtkKGEuVGcoKSxiKTtkPWItYS5BaCgpO2lmKGQ8MCl7aWYoIWUpe3Rocm93IHZiYihuZXcgV2RiKG10ZStiK250ZSkpfWVsc2UgaWYoZS5JaigpKXtmPWEuWWcoZSk7Zj49MD9hLnNoKGYsYyk6dWlkKGEsZSxjKX1lbHNle3Rocm93IHZiYihuZXcgV2RiKGl0ZStlLm5lKCkranRlKSl9fWVsc2V7ZGlkKGEsZCxlLGMpfX1cbmZ1bmN0aW9uIHE2ZChiKXt2YXIgYyxkLGUsZjtkPUJEKGIsNDkpLnFoKCk7aWYoZCl7dHJ5e2U9bnVsbDtjPW5VZCgoeUZkKCkseEZkKSxMRWQoTUVkKGQpKSk7aWYoYyl7Zj1jLnJoKCk7ISFmJiYoZT1mLldrKHRmYihkLmUpKSl9aWYoISFlJiZlIT1iKXtyZXR1cm4gcTZkKGUpfX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSw2MCkpdGhyb3cgdmJiKGEpfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGpyYihhLGIsYyl7dmFyIGQsZSxmLGc7Zz1iPT1udWxsPzA6YS5iLnNlKGIpO2U9KGQ9YS5hLmdldChnKSxkPT1udWxsP25ldyBBcnJheTpkKTtpZihlLmxlbmd0aD09MCl7YS5hLnNldChnLGUpfWVsc2V7Zj1ncmIoYSxiLGUpO2lmKGYpe3JldHVybiBmLmVkKGMpfX1OQyhlLGUubGVuZ3RoLG5ldyBwamIoYixjKSk7KythLmM7enBiKGEuYik7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBZVWMoYSxiKXt2YXIgYyxkO0gyYyhhLmEpO0syYyhhLmEsKFBVYygpLE5VYyksTlVjKTtLMmMoYS5hLE9VYyxPVWMpO2Q9bmV3IGozYztlM2MoZCxPVWMsKHRWYygpLHNWYykpO1BEKGhrZChiLChaV2MoKSxMV2MpKSkhPT1QRCgocFdjKCksbVdjKSkmJmUzYyhkLE9VYyxxVmMpO2UzYyhkLE9VYyxyVmMpO0UyYyhhLmEsZCk7Yz1GMmMoYS5hLGIpO3JldHVybiBjfVxuZnVuY3Rpb24gdUMoYSl7aWYoIWEpe3JldHVybiBPQigpLE5CfXZhciBiPWEudmFsdWVPZj9hLnZhbHVlT2YoKTphO2lmKGIhPT1hKXt2YXIgYz1xQ1t0eXBlb2YgYl07cmV0dXJuIGM/YyhiKTp4Qyh0eXBlb2YgYil9ZWxzZSBpZihhIGluc3RhbmNlb2YgQXJyYXl8fGEgaW5zdGFuY2VvZiAkd25kLkFycmF5KXtyZXR1cm4gbmV3IHhCKGEpfWVsc2V7cmV0dXJuIG5ldyBmQyhhKX19XG5mdW5jdGlvbiBSSmIoYSxiLGMpe3ZhciBkLGUsZjtmPWEubztkPUJEKE1wYihhLnAsYyksMjQ0KTtlPWQuaTtlLmI9Z0liKGQpO2UuYT1mSWIoZCk7ZS5iPSR3bmQuTWF0aC5tYXgoZS5iLGYuYSk7ZS5iPmYuYSYmIWImJihlLmI9Zi5hKTtlLmM9LShlLmItZi5hKS8yO3N3aXRjaChjLmcpe2Nhc2UgMTplLmQ9LWUuYTticmVhaztjYXNlIDM6ZS5kPWYuYjt9aEliKGQpO2lJYihkKX1cbmZ1bmN0aW9uIFNKYihhLGIsYyl7dmFyIGQsZSxmO2Y9YS5vO2Q9QkQoTXBiKGEucCxjKSwyNDQpO2U9ZC5pO2UuYj1nSWIoZCk7ZS5hPWZJYihkKTtlLmE9JHduZC5NYXRoLm1heChlLmEsZi5iKTtlLmE+Zi5iJiYhYiYmKGUuYT1mLmIpO2UuZD0tKGUuYS1mLmIpLzI7c3dpdGNoKGMuZyl7Y2FzZSA0OmUuYz0tZS5iO2JyZWFrO2Nhc2UgMjplLmM9Zi5hO31oSWIoZCk7aUliKGQpfVxuZnVuY3Rpb24gSmdjKGEsYil7dmFyIGMsZCxlLGYsZztpZihiLmRjKCkpe3JldHVybn1lPUJEKGIuWGIoMCksMTI4KTtpZihiLmdjKCk9PTEpe0lnYyhhLGUsZSwxLDAsYik7cmV0dXJufWM9MTt3aGlsZShjPGIuZ2MoKSl7aWYoZS5qfHwhZS5vKXtmPU9nYyhiLGMpO2lmKGYpe2Q9QkQoZi5hLDE5KS5hO2c9QkQoZi5iLDEyOCk7SWdjKGEsZSxnLGMsZCxiKTtjPWQrMTtlPWd9fX19XG5mdW5jdGlvbiBtbGMoYSl7dmFyIGIsYyxkLGUsZixnO2c9bmV3IFRrYihhLmQpO09rYihnLG5ldyBRbGMpO2I9KEFsYygpLE9DKEdDKEtWLDEpLEtpZSwyNzAsMCxbdGxjLHdsYyxzbGMsemxjLHZsYyx1bGMseWxjLHhsY10pKTtjPTA7Zm9yKGY9bmV3IG9sYihnKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTAxKTtkPWJbYyViLmxlbmd0aF07b2xjKGUsZCk7KytjfX1cbmZ1bmN0aW9uIG82YyhhLGIpe2k2YygpO3ZhciBjLGQsZSxmO2lmKGIuYjwyKXtyZXR1cm4gZmFsc2V9Zj1Kc2IoYiwwKTtjPUJEKFhzYihmKSw4KTtkPWM7d2hpbGUoZi5iIT1mLmQuYyl7ZT1CRChYc2IoZiksOCk7aWYoIShtNmMoYSxkKSYmbTZjKGEsZSkpKXtyZXR1cm4gZmFsc2V9ZD1lfWlmKCEobTZjKGEsZCkmJm02YyhhLGMpKSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gaHJkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7az1udWxsO2w9YTtnPVhwZChsLCd4Jyk7Yz1uZXcgS3JkKGIpO0dxZChjLmEsZyk7aD1YcGQobCwneScpO2Q9bmV3IExyZChiKTtIcWQoZC5hLGgpO2k9WHBkKGwsR3RlKTtlPW5ldyBNcmQoYik7SXFkKGUuYSxpKTtqPVhwZChsLEZ0ZSk7Zj1uZXcgTnJkKGIpO2s9KEpxZChmLmEsaiksaik7cmV0dXJuIGt9XG5mdW5jdGlvbiBYTWQoYSxiKXtUTWQoYSxiKTsoYS5iJjEpIT0wJiYoYS5hLmE9bnVsbCk7KGEuYiYyKSE9MCYmKGEuYS5mPW51bGwpO2lmKChhLmImNCkhPTApe2EuYS5nPW51bGw7YS5hLmk9bnVsbH1pZigoYS5iJjE2KSE9MCl7YS5hLmQ9bnVsbDthLmEuZT1udWxsfShhLmImOCkhPTAmJihhLmEuYj1udWxsKTtpZigoYS5iJjMyKSE9MCl7YS5hLmo9bnVsbDthLmEuYz1udWxsfX1cbmZ1bmN0aW9uIGwwZChiLGMpe3ZhciBkLGUsZjtmPTA7aWYoYy5sZW5ndGg+MCl7dHJ5e2Y9SWNiKGMsUmllLE9oZSl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMjcpKXtlPWE7dGhyb3cgdmJiKG5ldyByRmQoZSkpfWVsc2UgdGhyb3cgdmJiKGEpfX1kPSghYi5hJiYoYi5hPW5ldyB6MGQoYikpLGIuYSk7cmV0dXJuIGY8ZC5pJiZmPj0wP0JEKHF1ZChkLGYpLDU2KTpudWxsfVxuZnVuY3Rpb24gSWIoYSxiKXtpZihhPDApe3JldHVybiBoYyhUaGUsT0MoR0MoU0ksMSksVWhlLDEsNSxbJ2luZGV4JyxtZWIoYSldKSl9ZWxzZSBpZihiPDApe3Rocm93IHZiYihuZXcgV2RiKFZoZStiKSl9ZWxzZXtyZXR1cm4gaGMoJyVzICglcykgbXVzdCBiZSBsZXNzIHRoYW4gc2l6ZSAoJXMpJyxPQyhHQyhTSSwxKSxVaGUsMSw1LFsnaW5kZXgnLG1lYihhKSxtZWIoYildKSl9fVxuZnVuY3Rpb24gU2xiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1mPW5ldyB4d2IoU2hlLCdbJywnXScpO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdOyFmLmE/KGYuYT1uZXcgV2ZiKGYuZCkpOlFmYihmLmEsZi5iKTtOZmIoZi5hLCcnK2IpfXJldHVybiAhZi5hP2YuYzpmLmUubGVuZ3RoPT0wP2YuYS5hOmYuYS5hKygnJytmLmUpfVxuZnVuY3Rpb24gVGxiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1mPW5ldyB4d2IoU2hlLCdbJywnXScpO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdOyFmLmE/KGYuYT1uZXcgV2ZiKGYuZCkpOlFmYihmLmEsZi5iKTtOZmIoZi5hLCcnK2IpfXJldHVybiAhZi5hP2YuYzpmLmUubGVuZ3RoPT0wP2YuYS5hOmYuYS5hKygnJytmLmUpfVxuZnVuY3Rpb24gVWxiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1mPW5ldyB4d2IoU2hlLCdbJywnXScpO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdOyFmLmE/KGYuYT1uZXcgV2ZiKGYuZCkpOlFmYihmLmEsZi5iKTtOZmIoZi5hLCcnK2IpfXJldHVybiAhZi5hP2YuYzpmLmUubGVuZ3RoPT0wP2YuYS5hOmYuYS5hKygnJytmLmUpfVxuZnVuY3Rpb24gWGxiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1mPW5ldyB4d2IoU2hlLCdbJywnXScpO2ZvcihjPWEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdOyFmLmE/KGYuYT1uZXcgV2ZiKGYuZCkpOlFmYihmLmEsZi5iKTtOZmIoZi5hLCcnK2IpfXJldHVybiAhZi5hP2YuYzpmLmUubGVuZ3RoPT0wP2YuYS5hOmYuYS5hKygnJytmLmUpfVxuZnVuY3Rpb24gYnViKGEsYil7dmFyIGMsZCxlLGYsZyxoO2M9YS5iLmMubGVuZ3RoO2U9SWtiKGEuYixiKTt3aGlsZShiKjIrMTxjKXtkPShmPTIqYisxLGc9ZisxLGg9ZixnPGMmJmEuYS51ZShJa2IoYS5iLGcpLElrYihhLmIsZikpPDAmJihoPWcpLGgpO2lmKGEuYS51ZShlLElrYihhLmIsZCkpPDApe2JyZWFrfU5rYihhLmIsYixJa2IoYS5iLGQpKTtiPWR9TmtiKGEuYixiLGUpfVxuZnVuY3Rpb24gJEJiKGEsYixjLGQsZSxmKXt2YXIgZyxoLGksaixrO2lmKFBEKGEpPT09UEQoYykpe2E9YS5zbGljZShiLGIrZSk7Yj0wfWk9Yztmb3IoaD1iLGo9YitlO2g8ajspe2c9JHduZC5NYXRoLm1pbihoKzEwMDAwLGopO2U9Zy1oO2s9YS5zbGljZShoLGcpO2suc3BsaWNlKDAsMCxkLGY/ZTowKTtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGksayk7aD1nO2QrPWV9fVxuZnVuY3Rpb24geEdiKGEsYixjKXt2YXIgZCxlO2Q9Yy5kO2U9Yy5lO2lmKGEuZ1tkLmRdPD1hLmlbYi5kXSYmYS5pW2IuZF08PWEuaVtkLmRdJiZhLmdbZS5kXTw9YS5pW2IuZF0mJmEuaVtiLmRdPD1hLmlbZS5kXSl7aWYoYS5pW2QuZF08YS5pW2UuZF0pe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1pZihhLmlbZC5kXTxhLmlbZS5kXSl7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gY1JiKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2Q9YS5hLmMubGVuZ3RoO2lmKGQ+MCl7Zz1hLmMuZDtoPWEuZC5kO2U9WTZjKGM3YyhuZXcgZjdjKGguYSxoLmIpLGcpLDEvKGQrMSkpO2Y9bmV3IGY3YyhnLmEsZy5iKTtmb3IoYz1uZXcgb2xiKGEuYSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDU1OSk7Yi5kLmE9Zi5hO2IuZC5iPWYuYjtQNmMoZixlKX19fVxuZnVuY3Rpb24gWU5iKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aT1QamU7Zm9yKGY9bmV3IG9sYih3T2IoYS5iKSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDE2OCk7Zm9yKGg9bmV3IG9sYih3T2IoYi5iKSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDE2OCk7ZD1wNmMoZS5hLGUuYixnLmEsZy5iLGMpO2k9JHduZC5NYXRoLm1pbihpLGQpfX1yZXR1cm4gaX1cbmZ1bmN0aW9uIEcwYihhLGIpe2lmKCFiKXt0aHJvdyB2YmIobmV3IEdlYil9YS5qPWI7aWYoIWEuZCl7c3dpdGNoKGEuai5nKXtjYXNlIDE6YS5hLmE9YS5vLmEvMjthLmEuYj0wO2JyZWFrO2Nhc2UgMjphLmEuYT1hLm8uYTthLmEuYj1hLm8uYi8yO2JyZWFrO2Nhc2UgMzphLmEuYT1hLm8uYS8yO2EuYS5iPWEuby5iO2JyZWFrO2Nhc2UgNDphLmEuYT0wO2EuYS5iPWEuby5iLzI7fX19XG5mdW5jdGlvbiBkZmMoYSxiKXt2YXIgYyxkLGU7aWYoSkQoYi5nLDEwKSYmQkQoYi5nLDEwKS5rPT0oajBiKCksZTBiKSl7cmV0dXJuIFBqZX1lPXVnYyhiKTtpZihlKXtyZXR1cm4gJHduZC5NYXRoLm1heCgwLGEuYi8yLTAuNSl9Yz10Z2MoYik7aWYoYyl7ZD1FZGIoRUQocEJjKGMsKE55YygpLHZ5YykpKSk7cmV0dXJuICR3bmQuTWF0aC5tYXgoMCxkLzItMC41KX1yZXR1cm4gUGplfVxuZnVuY3Rpb24gZmZjKGEsYil7dmFyIGMsZCxlO2lmKEpEKGIuZywxMCkmJkJEKGIuZywxMCkuaz09KGowYigpLGUwYikpe3JldHVybiBQamV9ZT11Z2MoYik7aWYoZSl7cmV0dXJuICR3bmQuTWF0aC5tYXgoMCxhLmIvMi0wLjUpfWM9dGdjKGIpO2lmKGMpe2Q9RWRiKEVEKHBCYyhjLChOeWMoKSx2eWMpKSkpO3JldHVybiAkd25kLk1hdGgubWF4KDAsZC8yLTAuNSl9cmV0dXJuIFBqZX1cbmZ1bmN0aW9uIHhpYyhhKXt2YXIgYixjLGQsZSxmLGc7Zz1DSGMoYS5kLGEuZSk7Zm9yKGY9Zy5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDExKTtkPWEuZT09KFVjZCgpLFRjZCk/ZS5lOmUuZztmb3IoYz1uZXcgb2xiKGQpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxNyk7aWYoIU9aYihiKSYmYi5jLmkuYyE9Yi5kLmkuYyl7dGljKGEsYik7KythLmY7KythLmN9fX19XG5mdW5jdGlvbiB0cGMoYSxiKXt2YXIgYyxkO2lmKGIuZGMoKSl7cmV0dXJuIG1tYigpLG1tYigpLGptYn1kPW5ldyBSa2I7RWtiKGQsbWViKFJpZSkpO2ZvcihjPTE7YzxhLmY7KytjKXthLmE9PW51bGwmJlRvYyhhKTthLmFbY10mJkVrYihkLG1lYihjKSl9aWYoZC5jLmxlbmd0aD09MSl7cmV0dXJuIG1tYigpLG1tYigpLGptYn1Fa2IoZCxtZWIoT2hlKSk7cmV0dXJuIHNwYyhiLGQpfVxuZnVuY3Rpb24gTUpjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7Zz1iLmMuaS5rIT0oajBiKCksaDBiKTtpPWc/Yi5kOmIuYztjPU1aYihiLGkpLmk7ZT1CRChPaGIoYS5rLGkpLDEyMSk7ZD1hLmlbYy5wXS5hO2lmKFNfYihpLmkpPCghYy5jPy0xOkprYihjLmMuYSxjLDApKSl7Zj1lO2g9ZH1lbHNle2Y9ZDtoPWV9QUZiKERGYihDRmIoRUZiKEJGYihuZXcgRkZiLDApLDQpLGYpLGgpKX1cbmZ1bmN0aW9uIG9xZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKGMpe2U9Yy5hLmxlbmd0aDtkPW5ldyBZZ2UoZSk7Zm9yKGg9KGQuYi1kLmEpKmQuYzwwPyhYZ2UoKSxXZ2UpOm5ldyBzaGUoZCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTkpO2k9V3FkKGEsVnBkKHRCKGMsZy5hKSkpO2lmKGkpe2Y9KCFiLmImJihiLmI9bmV3IHk1ZCh6MixiLDQsNykpLGIuYik7d3RkKGYsaSl9fX19XG5mdW5jdGlvbiBwcWQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtpZihjKXtlPWMuYS5sZW5ndGg7ZD1uZXcgWWdlKGUpO2ZvcihoPShkLmItZC5hKSpkLmM8MD8oWGdlKCksV2dlKTpuZXcgc2hlKGQpO2guT2IoKTspe2c9QkQoaC5QYigpLDE5KTtpPVdxZChhLFZwZCh0QihjLGcuYSkpKTtpZihpKXtmPSghYi5jJiYoYi5jPW5ldyB5NWQoejIsYiw1LDgpKSxiLmMpO3d0ZChmLGkpfX19fVxuZnVuY3Rpb24gcG8oYSxiLGMpe3ZhciBkLGU7ZD1iLmEmYS5mO2IuYj1hLmJbZF07YS5iW2RdPWI7ZT1iLmYmYS5mO2IuZD1hLmNbZV07YS5jW2VdPWI7aWYoIWMpe2IuZT1hLmU7Yi5jPW51bGw7IWEuZT8oYS5hPWIpOihhLmUuYz1iKTthLmU9Yn1lbHNle2IuZT1jLmU7IWIuZT8oYS5hPWIpOihiLmUuYz1iKTtiLmM9Yy5jOyFiLmM/KGEuZT1iKTooYi5jLmU9Yil9KythLmk7KythLmd9XG5mdW5jdGlvbiBxcihhKXt2YXIgYixjLGQ7Yj1hLlBiKCk7aWYoIWEuT2IoKSl7cmV0dXJuIGJ9ZD1QZmIoUWZiKG5ldyBVZmIsJ2V4cGVjdGVkIG9uZSBlbGVtZW50IGJ1dCB3YXM6IDwnKSxiKTtmb3IoYz0wO2M8NCYmYS5PYigpO2MrKyl7UGZiKChkLmErPVNoZSxkKSxhLlBiKCkpfWEuT2IoKSYmKGQuYSs9JywgLi4uJyxkKTtkLmErPSc+Jzt0aHJvdyB2YmIobmV3IFdkYihkLmEpKX1cbmZ1bmN0aW9uIGx0KGEsYil7dmFyIGM7Yi5kPyhiLmQuYj1iLmIpOihhLmE9Yi5iKTtiLmI/KGIuYi5kPWIuZCk6KGEuZT1iLmQpO2lmKCFiLmUmJiFiLmMpe2M9QkQoVGhiKGEuYixiLmEpLDI4Myk7Yy5hPTA7KythLmN9ZWxzZXtjPUJEKE9oYihhLmIsYi5hKSwyODMpOy0tYy5hOyFiLmU/KGMuYj1iLmMpOihiLmUuYz1iLmMpOyFiLmM/KGMuYz1iLmUpOihiLmMuZT1iLmUpfS0tYS5kfVxuZnVuY3Rpb24gT0EoYSl7dmFyIGIsYztjPS1hLmE7Yj1PQyhHQyhURCwxKSwkaWUsMjUsMTUsWzQzLDQ4LDQ4LDQ4LDQ4XSk7aWYoYzwwKXtiWzBdPTQ1O2M9LWN9YlsxXT1iWzFdKygoYy82MHwwKS8xMHwwKSZhamU7YlsyXT1iWzJdKyhjLzYwfDApJTEwJmFqZTtiWzNdPWJbM10rKGMlNjAvMTB8MCkmYWplO2JbNF09Yls0XStjJTEwJmFqZTtyZXR1cm4gemZiKGIsMCxiLmxlbmd0aCl9XG5mdW5jdGlvbiB1UmIoYSxiLGMpe3ZhciBkLGU7ZD1iLmQ7ZT1jLmQ7d2hpbGUoZC5hLWUuYT09MCYmZC5iLWUuYj09MCl7ZC5hKz1DdWIoYSwyNikqaWtlK0N1YihhLDI3KSpqa2UtMC41O2QuYis9Q3ViKGEsMjYpKmlrZStDdWIoYSwyNykqamtlLTAuNTtlLmErPUN1YihhLDI2KSppa2UrQ3ViKGEsMjcpKmprZS0wLjU7ZS5iKz1DdWIoYSwyNikqaWtlK0N1YihhLDI3KSpqa2UtMC41fX1cbmZ1bmN0aW9uIE5fYihhKXt2YXIgYixjLGQsZTthLmc9bmV3IFJwYihCRChRYihGMSksMjkwKSk7ZD0wO2M9KFVjZCgpLEFjZCk7Yj0wO2Zvcig7YjxhLmouYy5sZW5ndGg7YisrKXtlPUJEKElrYihhLmosYiksMTEpO2lmKGUuaiE9Yyl7ZCE9YiYmTnBiKGEuZyxjLG5ldyB2Z2QobWViKGQpLG1lYihiKSkpO2M9ZS5qO2Q9Yn19TnBiKGEuZyxjLG5ldyB2Z2QobWViKGQpLG1lYihiKSkpfVxuZnVuY3Rpb24gZDRiKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2Q9MDtmb3IoYz1uZXcgb2xiKGEuYik7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDI5KTtmb3IoZj1uZXcgb2xiKGIuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEwKTtlLnA9ZCsrO2ZvcihoPW5ldyBvbGIoZS5qKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTEpO2cucD1kKyt9fX19XG5mdW5jdGlvbiBxUGMoYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqO2lmKGIpe2ZvcihoPWIuS2MoKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwxMCk7Zm9yKGo9WF9iKGcsKEtBYygpLElBYyksYykuS2MoKTtqLk9iKCk7KXtpPUJEKGouUGIoKSwxMSk7Zj1CRChXZChpcmIoZS5mLGkpKSwxMTIpO2lmKCFmKXtmPW5ldyB1T2MoYS5kKTtkLmNbZC5jLmxlbmd0aF09ZjtqT2MoZixpLGUpfX19fX1cbmZ1bmN0aW9uIHZpZChhLGIpe3ZhciBjLGQsZTtlPWUxZCgoTzZkKCksTTZkKSxhLlRnKCksYik7aWYoZSl7UTZkKCk7QkQoZSw2NikuT2ooKXx8KGU9XzFkKHExZChNNmQsZSkpKTtkPShjPWEuWWcoZSksQkQoYz49MD9hLl9nKGMsdHJ1ZSx0cnVlKTpzaWQoYSxlLHRydWUpLDE1MykpO0JEKGQsMjE1KS5vbChiKX1lbHNle3Rocm93IHZiYihuZXcgV2RiKGl0ZStiLm5lKCkranRlKSl9fVxuZnVuY3Rpb24gdWdiKGEpe3ZhciBiLGM7aWYoYT4tMTQwNzM3NDg4MzU1MzI4JiZhPDE0MDczNzQ4ODM1NTMyOCl7aWYoYT09MCl7cmV0dXJuIDB9Yj1hPDA7YiYmKGE9LWEpO2M9UUQoJHduZC5NYXRoLmZsb29yKCR3bmQuTWF0aC5sb2coYSkvMC42OTMxNDcxODA1NTk5NDUzKSk7KCFifHxhIT0kd25kLk1hdGgucG93KDIsYykpJiYrK2M7cmV0dXJuIGN9cmV0dXJuIHZnYihDYmIoYSkpfVxuZnVuY3Rpb24gUU9jKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2Y9bmV3IHpzYjtmb3IoYz1uZXcgb2xiKGEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMjkpO2c9Yi5hO2g9Yi5iO2lmKGYuYS5fYihnKXx8Zi5hLl9iKGgpKXtjb250aW51ZX1lPWc7ZD1oO2lmKGcuZS5iK2cuai5iPjImJmguZS5iK2guai5iPD0yKXtlPWg7ZD1nfWYuYS56YyhlLGYpO2UucT1kfXJldHVybiBmfVxuZnVuY3Rpb24gSzViKGEsYil7dmFyIGMsZCxlO2Q9bmV3IGIwYihhKTt0TmIoZCxiKTt5TmIoZCwod3RjKCksR3NjKSxiKTt5TmIoZCwoTnljKCksVnhjKSwoZGNkKCksJGJkKSk7eU5iKGQsbXdjLChGN2MoKSxCN2MpKTtfX2IoZCwoajBiKCksZTBiKSk7Yz1uZXcgSDBiO0YwYihjLGQpO0cwYihjLChVY2QoKSxUY2QpKTtlPW5ldyBIMGI7RjBiKGUsZCk7RzBiKGUsemNkKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFNwYyhhKXtzd2l0Y2goYS5nKXtjYXNlIDA6cmV0dXJuIG5ldyBmR2MoKHJHYygpLG9HYykpO2Nhc2UgMTpyZXR1cm4gbmV3IENGYztjYXNlIDI6cmV0dXJuIG5ldyBmSGM7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYignTm8gaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIGZvciB0aGUgY3Jvc3NpbmcgbWluaW1pemVyICcrKGEuZiE9bnVsbD9hLmY6JycrYS5nKSkpO319XG5mdW5jdGlvbiB0RGMoYSxiKXt2YXIgYyxkLGUsZixnO2EuY1tiLnBdPXRydWU7RWtiKGEuYSxiKTtmb3IoZz1uZXcgb2xiKGIuaik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDExKTtmb3IoZD1uZXcgYjFiKGYuYik7bGxiKGQuYSl8fGxsYihkLmIpOyl7Yz1CRChsbGIoZC5hKT9tbGIoZC5hKTptbGIoZC5iKSwxNyk7ZT11RGMoZixjKS5pO2EuY1tlLnBdfHx0RGMoYSxlKX19fVxuZnVuY3Rpb24gX1VjKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2c9MDtmb3IoYz1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO2MuZSE9Yy5pLmdjKCk7KXtiPUJEKER5ZChjKSwzMyk7aD1iLmc7ZT1iLmY7ZD0kd25kLk1hdGguc3FydChoKmgrZSplKTtnPSR3bmQuTWF0aC5tYXgoZCxnKTtmPV9VYyhiKTtnPSR3bmQuTWF0aC5tYXgoZixnKX1yZXR1cm4gZ31cbmZ1bmN0aW9uIHJjZCgpe3JjZD1jY2I7cGNkPW5ldyBzY2QoJ09VVFNJREUnLDApO25jZD1uZXcgc2NkKCdJTlNJREUnLDEpO29jZD1uZXcgc2NkKCdORVhUX1RPX1BPUlRfSUZfUE9TU0lCTEUnLDIpO21jZD1uZXcgc2NkKCdBTFdBWVNfU0FNRV9TSURFJywzKTtsY2Q9bmV3IHNjZCgnQUxXQVlTX09USEVSX1NBTUVfU0lERScsNCk7cWNkPW5ldyBzY2QoJ1NQQUNFX0VGRklDSUVOVCcsNSl9XG5mdW5jdGlvbiBkcmQoYSxiLGMpe3ZhciBkLGUsZixoLGksajtkPVRxZChhLChlPShGaGQoKSxmPW5ldyBhcGQsZiksISFjJiYkb2QoZSxjKSxlKSxiKTtMa2QoZCxfcGQoYixWdGUpKTtncmQoYixkKTticmQoYixkKTtocmQoYixkKTtnPW51bGw7aD1iO2k9WXBkKGgsJ3BvcnRzJyk7aj1uZXcgSnJkKGEsZCk7RnFkKGouYSxqLmIsaSk7Y3JkKGEsYixkKTtacWQoYSxiLGQpO3JldHVybiBkfVxuZnVuY3Rpb24gTkEoYSl7dmFyIGIsYztjPS1hLmE7Yj1PQyhHQyhURCwxKSwkaWUsMjUsMTUsWzQzLDQ4LDQ4LDU4LDQ4LDQ4XSk7aWYoYzwwKXtiWzBdPTQ1O2M9LWN9YlsxXT1iWzFdKygoYy82MHwwKS8xMHwwKSZhamU7YlsyXT1iWzJdKyhjLzYwfDApJTEwJmFqZTtiWzRdPWJbNF0rKGMlNjAvMTB8MCkmYWplO2JbNV09Yls1XStjJTEwJmFqZTtyZXR1cm4gemZiKGIsMCxiLmxlbmd0aCl9XG5mdW5jdGlvbiBRQShhKXt2YXIgYjtiPU9DKEdDKFRELDEpLCRpZSwyNSwxNSxbNzEsNzcsODQsNDUsNDgsNDgsNTgsNDgsNDhdKTtpZihhPD0wKXtiWzNdPTQzO2E9LWF9Yls0XT1iWzRdKygoYS82MHwwKS8xMHwwKSZhamU7Yls1XT1iWzVdKyhhLzYwfDApJTEwJmFqZTtiWzddPWJbN10rKGElNjAvMTB8MCkmYWplO2JbOF09Yls4XSthJTEwJmFqZTtyZXR1cm4gemZiKGIsMCxiLmxlbmd0aCl9XG5mdW5jdGlvbiBWbGIoYSl7dmFyIGIsYyxkLGUsZjtpZihhPT1udWxsKXtyZXR1cm4gWGhlfWY9bmV3IHh3YihTaGUsJ1snLCddJyk7Zm9yKGM9YSxkPTAsZT1jLmxlbmd0aDtkPGU7KytkKXtiPWNbZF07IWYuYT8oZi5hPW5ldyBXZmIoZi5kKSk6UWZiKGYuYSxmLmIpO05mYihmLmEsJycrVWJiKGIpKX1yZXR1cm4gIWYuYT9mLmM6Zi5lLmxlbmd0aD09MD9mLmEuYTpmLmEuYSsoJycrZi5lKX1cbmZ1bmN0aW9uIERHYihhLGIpe3ZhciBjLGQsZTtlPU9oZTtmb3IoZD1uZXcgb2xiKExGYihiKSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDIxMyk7aWYoYy5mJiYhYS5jW2MuY10pe2EuY1tjLmNdPXRydWU7ZT0kd25kLk1hdGgubWluKGUsREdiKGEseEZiKGMsYikpKX19YS5pW2IuZF09YS5qO2EuZ1tiLmRdPSR3bmQuTWF0aC5taW4oZSxhLmorKyk7cmV0dXJuIGEuZ1tiLmRdfVxuZnVuY3Rpb24gRUtiKGEsYil7dmFyIGMsZCxlO2ZvcihlPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTExKTtkLmUuYj0oYz1kLmIsYy5YZSgoWTljKCksczljKSk/Yy5IZigpPT0oVWNkKCksQWNkKT8tYy5yZigpLmItRWRiKEVEKGMuV2UoczljKSkpOkVkYihFRChjLldlKHM5YykpKTpjLkhmKCk9PShVY2QoKSxBY2QpPy1jLnJmKCkuYjowKX19XG5mdW5jdGlvbiBMUGIoYSl7dmFyIGIsYyxkLGUsZixnLGg7Yz1JT2IoYS5lKTtmPVk2YyhiN2MoUjZjKEhPYihhLmUpKSxhLmQqYS5hLGEuYyphLmIpLC0wLjUpO2I9Yy5hLWYuYTtlPWMuYi1mLmI7Zm9yKGg9MDtoPGEuYztoKyspe2Q9Yjtmb3IoZz0wO2c8YS5kO2crKyl7Sk9iKGEuZSxuZXcgSjZjKGQsZSxhLmEsYS5iKSkmJmFOYihhLGcsaCxmYWxzZSx0cnVlKTtkKz1hLmF9ZSs9YS5ifX1cbmZ1bmN0aW9uIHMyYyhhKXt2YXIgYixjLGQ7aWYoQ2NiKEREKGhrZChhLChZOWMoKSxNOGMpKSkpKXtkPW5ldyBSa2I7Zm9yKGM9bmV3IFNyKHVyKF9zZChhKS5hLktjKCksbmV3IFNxKSk7UXIoYyk7KXtiPUJEKFJyKGMpLDc5KTtRbGQoYikmJkNjYihERChoa2QoYixOOGMpKSkmJihkLmNbZC5jLmxlbmd0aF09Yix0cnVlKX1yZXR1cm4gZH1lbHNle3JldHVybiBtbWIoKSxtbWIoKSxqbWJ9fVxuZnVuY3Rpb24gVnBkKGEpe3ZhciBiLGM7Yz1mYWxzZTtpZihKRChhLDIwNCkpe2M9dHJ1ZTtyZXR1cm4gQkQoYSwyMDQpLmF9aWYoIWMpe2lmKEpEKGEsMjU4KSl7Yj1CRChhLDI1OCkuYSUxPT0wO2lmKGIpe2M9dHJ1ZTtyZXR1cm4gbWViKElkYihCRChhLDI1OCkuYSkpfX19dGhyb3cgdmJiKG5ldyBjcWQoXCJJZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGludGVnZXI6ICdcIithK1wiJy5cIikpfVxuZnVuY3Rpb24gazBkKGEsYil7dmFyIGMsZCxlLGYsZyxoO2Y9bnVsbDtmb3IoZT1uZXcgeDBkKCghYS5hJiYoYS5hPW5ldyB6MGQoYSkpLGEuYSkpO3UwZChlKTspe2M9QkQoVnVkKGUpLDU2KTtkPShnPWMuVGcoKSxoPShPS2QoZyksZy5vKSwhaHx8IWMubWgoaCk/bnVsbDpoNmQoS0pkKGgpLGMuYWgoaCkpKTtpZihkIT1udWxsKXtpZihkZmIoZCxiKSl7Zj1jO2JyZWFrfX19cmV0dXJuIGZ9XG5mdW5jdGlvbiBCdyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtYaihjLCdvY2N1cnJlbmNlcycpO2lmKGM9PTApe3JldHVybiBoPUJEKEh2KG5kKGEuYSksYiksMTQpLCFoPzA6aC5nYygpfWc9QkQoSHYobmQoYS5hKSxiKSwxNCk7aWYoIWcpe3JldHVybiAwfWY9Zy5nYygpO2lmKGM+PWYpe2cuJGIoKX1lbHNle2U9Zy5LYygpO2ZvcihkPTA7ZDxjO2QrKyl7ZS5QYigpO2UuUWIoKX19cmV0dXJuIGZ9XG5mdW5jdGlvbiBheChhLGIsYyl7dmFyIGQsZSxmLGc7WGooYywnb2xkQ291bnQnKTtYaigwLCduZXdDb3VudCcpO2Q9QkQoSHYobmQoYS5hKSxiKSwxNCk7aWYoKCFkPzA6ZC5nYygpKT09Yyl7WGooMCwnY291bnQnKTtlPShmPUJEKEh2KG5kKGEuYSksYiksMTQpLCFmPzA6Zi5nYygpKTtnPS1lO2c+MD96aCgpOmc8MCYmQncoYSxiLC1nKTtyZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19XG5mdW5jdGlvbiBmSWIoYSl7dmFyIGIsYyxkLGUsZixnLGg7aD0wO2lmKGEuYj09MCl7Zz1qSWIoYSx0cnVlKTtiPTA7Zm9yKGQ9ZyxlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07aWYoYz4wKXtoKz1jOysrYn19Yj4xJiYoaCs9YS5jKihiLTEpKX1lbHNle2g9TXRiKFp6YihPQWIoSkFiKFBsYihhLmEpLG5ldyB4SWIpLG5ldyB6SWIpKSl9cmV0dXJuIGg+MD9oK2Eubi5kK2Eubi5hOjB9XG5mdW5jdGlvbiBnSWIoYSl7dmFyIGIsYyxkLGUsZixnLGg7aD0wO2lmKGEuYj09MCl7aD1NdGIoWnpiKE9BYihKQWIoUGxiKGEuYSksbmV3IHRJYiksbmV3IHZJYikpKX1lbHNle2c9a0liKGEsdHJ1ZSk7Yj0wO2ZvcihkPWcsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO2lmKGM+MCl7aCs9YzsrK2J9fWI+MSYmKGgrPWEuYyooYi0xKSl9cmV0dXJuIGg+MD9oK2Eubi5iK2Eubi5jOjB9XG5mdW5jdGlvbiBNSmIoYSxiKXt2YXIgYyxkLGUsZjtmPUJEKE1wYihhLmIsYiksMTI0KTtjPWYuYTtmb3IoZT1CRChCRChRYyhhLnIsYiksMjEpLDg0KS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDExMSk7ISFkLmMmJihjLmE9JHduZC5NYXRoLm1heChjLmEsWkhiKGQuYykpKX1pZihjLmE+MCl7c3dpdGNoKGIuZyl7Y2FzZSAyOmYubi5jPWEuczticmVhaztjYXNlIDQ6Zi5uLmI9YS5zO319fVxuZnVuY3Rpb24gTlFiKGEsYil7dmFyIGMsZCxlO2M9QkQodk5iKGIsKHdTYigpLG9TYikpLDE5KS5hLUJEKHZOYihhLG9TYiksMTkpLmE7aWYoYz09MCl7ZD1jN2MoUjZjKEJEKHZOYihhLChIU2IoKSxEU2IpKSw4KSksQkQodk5iKGEsRVNiKSw4KSk7ZT1jN2MoUjZjKEJEKHZOYihiLERTYiksOCkpLEJEKHZOYihiLEVTYiksOCkpO3JldHVybiBLZGIoZC5hKmQuYixlLmEqZS5iKX1yZXR1cm4gY31cbmZ1bmN0aW9uIGlSYyhhLGIpe3ZhciBjLGQsZTtjPUJEKHZOYihiLChKVGMoKSxFVGMpKSwxOSkuYS1CRCh2TmIoYSxFVGMpLDE5KS5hO2lmKGM9PTApe2Q9YzdjKFI2YyhCRCh2TmIoYSwobVRjKCksVlNjKSksOCkpLEJEKHZOYihhLFdTYyksOCkpO2U9YzdjKFI2YyhCRCh2TmIoYixWU2MpLDgpKSxCRCh2TmIoYixXU2MpLDgpKTtyZXR1cm4gS2RiKGQuYSpkLmIsZS5hKmUuYil9cmV0dXJuIGN9XG5mdW5jdGlvbiBUWmIoYSl7dmFyIGIsYztjPW5ldyBVZmI7Yy5hKz0nZV8nO2I9S1piKGEpO2IhPW51bGwmJihjLmErPScnK2IsYyk7aWYoISFhLmMmJiEhYS5kKXtRZmIoKGMuYSs9JyAnLGMpLEMwYihhLmMpKTtRZmIoUGZiKChjLmErPSdbJyxjKSxhLmMuaSksJ10nKTtRZmIoKGMuYSs9Z25lLGMpLEMwYihhLmQpKTtRZmIoUGZiKChjLmErPSdbJyxjKSxhLmQuaSksJ10nKX1yZXR1cm4gYy5hfVxuZnVuY3Rpb24gelJjKGEpe3N3aXRjaChhLmcpe2Nhc2UgMDpyZXR1cm4gbmV3IGxVYztjYXNlIDE6cmV0dXJuIG5ldyBzVWM7Y2FzZSAyOnJldHVybiBuZXcgQ1VjO2Nhc2UgMzpyZXR1cm4gbmV3IElVYztkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKCdObyBpbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgZm9yIHRoZSBsYXlvdXQgcGhhc2UgJysoYS5mIT1udWxsP2EuZjonJythLmcpKSk7fX1cbmZ1bmN0aW9uIG1mZChhLGIsYyxkLGUpe3ZhciBmO2Y9MDtzd2l0Y2goZS5nKXtjYXNlIDE6Zj0kd25kLk1hdGgubWF4KDAsYi5iK2EuYi0oYy5iK2QpKTticmVhaztjYXNlIDM6Zj0kd25kLk1hdGgubWF4KDAsLWEuYi1kKTticmVhaztjYXNlIDI6Zj0kd25kLk1hdGgubWF4KDAsLWEuYS1kKTticmVhaztjYXNlIDQ6Zj0kd25kLk1hdGgubWF4KDAsYi5hK2EuYS0oYy5hK2QpKTt9cmV0dXJuIGZ9XG5mdW5jdGlvbiBtcWQoYSxiLGMpe3ZhciBkLGUsZixnLGg7aWYoYyl7ZT1jLmEubGVuZ3RoO2Q9bmV3IFlnZShlKTtmb3IoaD0oZC5iLWQuYSkqZC5jPDA/KFhnZSgpLFdnZSk6bmV3IHNoZShkKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwxOSk7Zj1acGQoYyxnLmEpO0x0ZSBpbiBmLmF8fE10ZSBpbiBmLmE/JHFkKGEsZixiKTplcmQoYSxmLGIpO290ZChCRChPaGIoYS5iLFdwZChmKSksNzkpKX19fVxuZnVuY3Rpb24gTEpkKGEpe3ZhciBiLGM7c3dpdGNoKGEuYil7Y2FzZSAtMTp7cmV0dXJuIHRydWV9Y2FzZSAwOntjPWEudDtpZihjPjF8fGM9PS0xKXthLmI9LTE7cmV0dXJuIHRydWV9ZWxzZXtiPXdJZChhKTtpZighIWImJihRNmQoKSxiLkNqKCk9PUJ2ZSkpe2EuYj0tMTtyZXR1cm4gdHJ1ZX1lbHNle2EuYj0xO3JldHVybiBmYWxzZX19fWRlZmF1bHQ6Y2FzZSAxOntyZXR1cm4gZmFsc2V9fX1cbmZ1bmN0aW9uIGsxZChhLGIpe3ZhciBjLGQsZSxmLGc7ZD0oIWIucyYmKGIucz1uZXcgY1VkKHQ1LGIsMjEsMTcpKSxiLnMpO2Y9bnVsbDtmb3IoZT0wLGc9ZC5pO2U8ZzsrK2Upe2M9QkQocXVkKGQsZSksMTcwKTtzd2l0Y2goJDFkKHExZChhLGMpKSl7Y2FzZSAyOmNhc2UgMzp7IWYmJihmPW5ldyBSa2IpO2YuY1tmLmMubGVuZ3RoXT1jfX19cmV0dXJuICFmPyhtbWIoKSxtbWIoKSxqbWIpOmZ9XG5mdW5jdGlvbiB0ZGUoYSxiKXt2YXIgYyxkLGUsZjtuZGUoYSk7aWYoYS5jIT0wfHxhLmEhPTEyMyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEZ1ZSkpKSk7Zj1iPT0xMTI7ZD1hLmQ7Yz1nZmIoYS5pLDEyNSxkKTtpZihjPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxHdWUpKSkpO2U9cWZiKGEuaSxkLGMpO2EuZD1jKzE7cmV0dXJuIExmZShlLGYsKGEuZSY1MTIpPT01MTIpfVxuZnVuY3Rpb24gUVRiKGEpe3ZhciBiO2I9QkQodk5iKGEsKE55YygpLEl3YykpLDMxNCk7aWYoYj09KFJwYygpLFBwYykpe3Rocm93IHZiYihuZXcgejJjKCdUaGUgaGllcmFyY2h5IGF3YXJlIHByb2Nlc3NvciAnK2IrJyBpbiBjaGlsZCBub2RlICcrYSsnIGlzIG9ubHkgYWxsb3dlZCBpZiB0aGUgcm9vdCBub2RlIHNwZWNpZmllcyB0aGUgc2FtZSBoaWVyYXJjaGljYWwgcHJvY2Vzc29yLicpKX19XG5mdW5jdGlvbiBkaGMoYSxiKXtIZ2MoKTt2YXIgYyxkLGUsZixnLGg7Yz1udWxsO2ZvcihnPWIuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxMjgpO2lmKGYubyl7Y29udGludWV9ZD1GNmMoZi5hKTtlPUM2YyhmLmEpO2g9bmV3IGhpYyhkLGUsbnVsbCxCRChmLmQuYS5lYygpLktjKCkuUGIoKSwxNykpO0VrYihoLmMsZi5hKTthLmNbYS5jLmxlbmd0aF09aDshIWMmJkVrYihjLmQsaCk7Yz1ofX1cbmZ1bmN0aW9uIGhLZChhLGIpe3ZhciBjLGQsZTtpZighYil7aktkKGEsbnVsbCk7X0pkKGEsbnVsbCl9ZWxzZSBpZigoYi5pJjQpIT0wKXtkPSdbXSc7Zm9yKGM9Yi5jOztjPWMuYyl7aWYoKGMuaSY0KT09MCl7ZT1qZmIoKGZkYihjKSxjLm8rZCkpO2pLZChhLGUpO19KZChhLGUpO2JyZWFrfWQrPSdbXSd9fWVsc2V7ZT1qZmIoKGZkYihiKSxiLm8pKTtqS2QoYSxlKTtfSmQoYSxlKX1hLnlrKGIpfVxuZnVuY3Rpb24gYjNkKGEsYixjLGQsZSl7dmFyIGYsZyxoLGk7aT1hM2QoYSxCRChlLDU2KSk7aWYoUEQoaSkhPT1QRChlKSl7aD1CRChhLmdbY10sNzIpO2Y9UjZkKGIsaSk7bXVkKGEsYyx0M2QoYSxjLGYpKTtpZihvaWQoYS5lKSl7Zz1IMmQoYSw5LGYuYWsoKSxlLGksZCxmYWxzZSk7UXdkKGcsbmV3IHBTZChhLmUsOSxhLmMsaCxmLGQsZmFsc2UpKTtSd2QoZyl9cmV0dXJuIGl9cmV0dXJuIGV9XG5mdW5jdGlvbiB4Q2MoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtkPUJEKFFjKGEuYyxiKSwxNSk7ZT1CRChRYyhhLmMsYyksMTUpO2Y9ZC5aYyhkLmdjKCkpO2c9ZS5aYyhlLmdjKCkpO3doaWxlKGYuU2IoKSYmZy5TYigpKXtoPUJEKGYuVWIoKSwxOSk7aT1CRChnLlViKCksMTkpO2lmKGghPWkpe3JldHVybiBiZWIoaC5hLGkuYSl9fXJldHVybiAhZi5PYigpJiYhZy5PYigpPzA6Zi5PYigpPzE6LTF9XG5mdW5jdGlvbiBtNWMoYyxkKXt2YXIgZSxmLGc7dHJ5e2c9ZnMoYy5hLGQpO3JldHVybiBnfWNhdGNoKGIpe2I9dWJiKGIpO2lmKEpEKGIsMzIpKXt0cnl7Zj1JY2IoZCxSaWUsT2hlKTtlPWdkYihjLmEpO2lmKGY+PTAmJmY8ZS5sZW5ndGgpe3JldHVybiBlW2ZdfX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSwxMjcpKXRocm93IHZiYihhKX1yZXR1cm4gbnVsbH1lbHNlIHRocm93IHZiYihiKX19XG5mdW5jdGlvbiB0aWQoYSxiKXt2YXIgYyxkLGU7ZT1lMWQoKE82ZCgpLE02ZCksYS5UZygpLGIpO2lmKGUpe1E2ZCgpO0JEKGUsNjYpLk9qKCl8fChlPV8xZChxMWQoTTZkLGUpKSk7ZD0oYz1hLllnKGUpLEJEKGM+PTA/YS5fZyhjLHRydWUsdHJ1ZSk6c2lkKGEsZSx0cnVlKSwxNTMpKTtyZXR1cm4gQkQoZCwyMTUpLmxsKGIpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2IubmUoKStsdGUpKX19XG5mdW5jdGlvbiBCWmQoKXt0WmQoKTt2YXIgYTtpZihzWmQpcmV0dXJuIEJEKG5VZCgoeUZkKCkseEZkKSxfdmUpLDE5MzkpO3JFZChDSyxuZXcgSl9kKTtDWmQoKTthPUJEKEpEKFBoYigoeUZkKCkseEZkKSxfdmUpLDU0Nyk/UGhiKHhGZCxfdmUpOm5ldyBBWmQsNTQ3KTtzWmQ9dHJ1ZTt5WmQoYSk7elpkKGEpO1JoYigoSkZkKCksSUZkKSxhLG5ldyBFWmQpO1NoYih4RmQsX3ZlLGEpO3JldHVybiBhfVxuZnVuY3Rpb24gdjJkKGEsYil7dmFyIGMsZCxlLGY7YS5qPS0xO2lmKG9pZChhLmUpKXtjPWEuaTtmPWEuaSE9MDtsdWQoYSxiKTtkPW5ldyBwU2QoYS5lLDMsYS5jLG51bGwsYixjLGYpO2U9Yi5RayhhLmUsYS5jLG51bGwpO2U9aDNkKGEsYixlKTtpZighZSl7VWhkKGEuZSxkKX1lbHNle2UuRWkoZCk7ZS5GaSgpfX1lbHNle2x1ZChhLGIpO2U9Yi5RayhhLmUsYS5jLG51bGwpOyEhZSYmZS5GaSgpfX1cbmZ1bmN0aW9uIHJBKGEsYil7dmFyIGMsZCxlO2U9MDtkPWJbMF07aWYoZD49YS5sZW5ndGgpe3JldHVybiAtMX1jPShCQ2IoZCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGQpKTt3aGlsZShjPj00OCYmYzw9NTcpe2U9ZSoxMCsoYy00OCk7KytkO2lmKGQ+PWEubGVuZ3RoKXticmVha31jPShCQ2IoZCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGQpKX1kPmJbMF0/KGJbMF09ZCk6KGU9LTEpO3JldHVybiBlfVxuZnVuY3Rpb24gdk1iKGEpe3ZhciBiLGMsZCxlLGY7ZT1CRChhLmEsMTkpLmE7Zj1CRChhLmIsMTkpLmE7Yz1lO2Q9ZjtiPSR3bmQuTWF0aC5tYXgoJHduZC5NYXRoLmFicyhlKSwkd25kLk1hdGguYWJzKGYpKTtpZihlPD0wJiZlPT1mKXtjPTA7ZD1mLTF9ZWxzZXtpZihlPT0tYiYmZiE9Yil7Yz1mO2Q9ZTtmPj0wJiYrK2N9ZWxzZXtjPS1mO2Q9ZX19cmV0dXJuIG5ldyB2Z2QobWViKGMpLG1lYihkKSl9XG5mdW5jdGlvbiBmTmIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqO2ZvcihlPTA7ZTxiLm87ZSsrKXtmPWUtYi5qK2M7Zm9yKGc9MDtnPGIucDtnKyspe2g9Zy1iLmsrZDtpZigoaT1mLGo9aCxpKz1hLmosais9YS5rLGk+PTAmJmo+PTAmJmk8YS5vJiZqPGEucCkmJighWk1iKGIsZSxnKSYmaE5iKGEsZixoKXx8WU1iKGIsZSxnKSYmIWlOYihhLGYsaCkpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIExOYyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtnPWEuYztoPWEuZDtmPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtnLmkubixnLm4sZy5hXSkpLmI7ZT0oZitsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbaC5pLm4saC5uLGguYV0pKS5iKS8yO2Q9bnVsbDtnLmo9PShVY2QoKSx6Y2QpPyhkPW5ldyBmN2MoYitnLmkuYy5jLmErYyxlKSk6KGQ9bmV3IGY3YyhiLWMsZSkpO1N0KGEuYSwwLGQpfVxuZnVuY3Rpb24gUWxkKGEpe3ZhciBiLGMsZCxlO2I9bnVsbDtmb3IoZD11bChwbChPQyhHQyhLSSwxKSxVaGUsMjAsMCxbKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYiksKCFhLmMmJihhLmM9bmV3IHk1ZCh6MixhLDUsOCkpLGEuYyldKSkpO1FyKGQpOyl7Yz1CRChScihkKSw4Mik7ZT1hdGQoYyk7aWYoIWIpe2I9ZX1lbHNlIGlmKGIhPWUpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBzdWQoYSxiLGMpe3ZhciBkOysrYS5qO2lmKGI+PWEuaSl0aHJvdyB2YmIobmV3IHFjYihsdWUrYittdWUrYS5pKSk7aWYoYz49YS5pKXRocm93IHZiYihuZXcgcWNiKG51ZStjK211ZSthLmkpKTtkPWEuZ1tjXTtpZihiIT1jKXtiPGM/JGZiKGEuZyxiLGEuZyxiKzEsYy1iKTokZmIoYS5nLGMrMSxhLmcsYyxiLWMpO05DKGEuZyxiLGQpO2EuZWkoYixkLGMpO2EuY2koKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIFJjKGEsYixjKXt2YXIgZDtkPUJEKGEuYy54YyhiKSwxNCk7aWYoIWQpe2Q9YS5pYyhiKTtpZihkLkZjKGMpKXsrK2EuZDthLmMuemMoYixkKTtyZXR1cm4gdHJ1ZX1lbHNle3Rocm93IHZiYihuZXcgeWNiKCdOZXcgQ29sbGVjdGlvbiB2aW9sYXRlZCB0aGUgQ29sbGVjdGlvbiBzcGVjJykpfX1lbHNlIGlmKGQuRmMoYykpeysrYS5kO3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX1cbmZ1bmN0aW9uIGhlYihhKXt2YXIgYixjLGQ7aWYoYTwwKXtyZXR1cm4gMH1lbHNlIGlmKGE9PTApe3JldHVybiAzMn1lbHNle2Q9LShhPj4xNik7Yj1kPj4xNiYxNjtjPTE2LWI7YT1hPj5iO2Q9YS0yNTY7Yj1kPj4xNiY4O2MrPWI7YTw8PWI7ZD1hLVJqZTtiPWQ+PjE2JjQ7Yys9YjthPDw9YjtkPWEtb2llO2I9ZD4+MTYmMjtjKz1iO2E8PD1iO2Q9YT4+MTQ7Yj1kJn4oZD4+MSk7cmV0dXJuIGMrMi1ifX1cbmZ1bmN0aW9uICRQYihhKXtRUGIoKTt2YXIgYixjLGQsZTtQUGI9bmV3IFJrYjtPUGI9bmV3IExxYjtOUGI9bmV3IFJrYjtiPSghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSk7U1BiKGIpO2ZvcihlPW5ldyBGeWQoYik7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDMzKTtpZihKa2IoUFBiLGQsMCk9PS0xKXtjPW5ldyBSa2I7RWtiKE5QYixjKTtUUGIoZCxjKX19cmV0dXJuIE5QYn1cbmZ1bmN0aW9uIEJRYihhLGIsYyl7dmFyIGQsZSxmLGc7YS5hPWMuYi5kO2lmKEpEKGIsMzUyKSl7ZT1pdGQoQkQoYiw3OSksZmFsc2UsZmFsc2UpO2Y9b2ZkKGUpO2Q9bmV3IEZRYihhKTtyZWIoZixkKTtpZmQoZixlKTtiLldlKChZOWMoKSxROGMpKSE9bnVsbCYmcmViKEJEKGIuV2UoUThjKSw3NCksZCl9ZWxzZXtnPUJEKGIsNDcwKTtnLkhnKGcuRGcoKSthLmEuYSk7Zy5JZyhnLkVnKCkrYS5hLmIpfX1cbmZ1bmN0aW9uIF81YihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aj1FZGIoRUQodk5iKGIsKE55YygpLHp5YykpKSk7aT1hWzBdLm4uYSthWzBdLm8uYSthWzBdLmQuYytqO2ZvcihoPTE7aDxhLmxlbmd0aDtoKyspe2Q9YVtoXS5uO2U9YVtoXS5vO2M9YVtoXS5kO2Y9ZC5hLWMuYi1pO2Y8MCYmKGQuYS09Zik7Zz1iLmY7Zy5hPSR3bmQuTWF0aC5tYXgoZy5hLGQuYStlLmEpO2k9ZC5hK2UuYStjLmMran19XG5mdW5jdGlvbiBEJGMoYSxiKXt2YXIgYyxkLGUsZixnLGg7ZD1CRChCRChPaGIoYS5nLGIuYSksNDYpLmEsNjUpO2U9QkQoQkQoT2hiKGEuZyxiLmIpLDQ2KS5hLDY1KTtmPWQuYjtnPWUuYjtjPXo2YyhmLGcpO2lmKGM+PTApe3JldHVybiBjfWg9VTZjKGM3YyhuZXcgZjdjKGcuYytnLmIvMixnLmQrZy5hLzIpLG5ldyBmN2MoZi5jK2YuYi8yLGYuZCtmLmEvMikpKTtyZXR1cm4gLSh4T2IoZixnKS0xKSpofVxuZnVuY3Rpb24gdWZkKGEsYixjKXt2YXIgZDtNQWIobmV3IFlBYihudWxsLCghYy5hJiYoYy5hPW5ldyBjVWQoQTIsYyw2LDYpKSxuZXcgS3ViKGMuYSwxNikpKSxuZXcgTWZkKGEsYikpO01BYihuZXcgWUFiKG51bGwsKCFjLm4mJihjLm49bmV3IGNVZChEMixjLDEsNykpLG5ldyBLdWIoYy5uLDE2KSkpLG5ldyBPZmQoYSxiKSk7ZD1CRChoa2QoYywoWTljKCksUThjKSksNzQpOyEhZCYmcDdjKGQsYSxiKX1cbmZ1bmN0aW9uIHNpZChhLGIsYyl7dmFyIGQsZSxmO2Y9ZTFkKChPNmQoKSxNNmQpLGEuVGcoKSxiKTtpZihmKXtRNmQoKTtCRChmLDY2KS5PaigpfHwoZj1fMWQocTFkKE02ZCxmKSkpO2U9KGQ9YS5ZZyhmKSxCRChkPj0wP2EuX2coZCx0cnVlLHRydWUpOnNpZChhLGYsdHJ1ZSksMTUzKSk7cmV0dXJuIEJEKGUsMjE1KS5obChiLGMpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2IubmUoKStsdGUpKX19XG5mdW5jdGlvbiB3QWQoYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtlPWEuZFtiXTtpZihlKXtmPWUuZztpPWUuaTtpZihkIT1udWxsKXtmb3IoaD0wO2g8aTsrK2gpe2c9QkQoZltoXSwxMzMpO2lmKGcuU2goKT09YyYmcGIoZCxnLmNkKCkpKXtyZXR1cm4gZ319fWVsc2V7Zm9yKGg9MDtoPGk7KytoKXtnPUJEKGZbaF0sMTMzKTtpZihQRChnLmNkKCkpPT09UEQoZCkpe3JldHVybiBnfX19fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUGdiKGEsYil7dmFyIGM7aWYoYjwwKXt0aHJvdyB2YmIobmV3IG9jYignTmVnYXRpdmUgZXhwb25lbnQnKSl9aWYoYj09MCl7cmV0dXJuIENnYn1lbHNlIGlmKGI9PTF8fEtnYihhLENnYil8fEtnYihhLEdnYikpe3JldHVybiBhfWlmKCFTZ2IoYSwwKSl7Yz0xO3doaWxlKCFTZ2IoYSxjKSl7KytjfXJldHVybiBPZ2IoYmhiKGMqYiksUGdiKFJnYihhLGMpLGIpKX1yZXR1cm4gSmhiKGEsYil9XG5mdW5jdGlvbiB4bGIoYSxiKXt2YXIgYyxkLGU7aWYoUEQoYSk9PT1QRChiKSl7cmV0dXJuIHRydWV9aWYoYT09bnVsbHx8Yj09bnVsbCl7cmV0dXJuIGZhbHNlfWlmKGEubGVuZ3RoIT1iLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWZvcihjPTA7YzxhLmxlbmd0aDsrK2Mpe2Q9YVtjXTtlPWJbY107aWYoIShQRChkKT09PVBEKGUpfHxkIT1udWxsJiZwYihkLGUpKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIENWYihhKXtuVmIoKTt2YXIgYixjLGQ7dGhpcy5iPW1WYjt0aGlzLmM9KGVhZCgpLGNhZCk7dGhpcy5mPShpVmIoKSxoVmIpO3RoaXMuYT1hO3pWYih0aGlzLG5ldyBEVmIpO3NWYih0aGlzKTtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDgxKTtpZighYy5kKXtiPW5ldyBnVmIoT0MoR0MoSVAsMSksVWhlLDgxLDAsW2NdKSk7RWtiKGEuYSxiKX19fVxuZnVuY3Rpb24gRDNiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoIWF8fGEuYy5sZW5ndGg9PTApe3JldHVybiBudWxsfWY9bmV3IGNJYihiLCFjKTtmb3IoZT1uZXcgb2xiKGEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSw3MCk7VUhiKGYsKGEkYigpLG5ldyB2JGIoZCkpKX1nPWYuaTtnLmE9KGk9Zi5uLGYuZS5iK2kuZCtpLmEpO2cuYj0oaD1mLm4sZi5lLmEraC5iK2guYyk7cmV0dXJuIGZ9XG5mdW5jdGlvbiBPNWIoYSl7dmFyIGIsYyxkLGUsZixnLGg7aD1sX2IoYS5hKTtObGIoaCxuZXcgVDViKTtjPW51bGw7Zm9yKGU9aCxmPTAsZz1lLmxlbmd0aDtmPGc7KytmKXtkPWVbZl07aWYoZC5rIT0oajBiKCksZTBiKSl7YnJlYWt9Yj1CRCh2TmIoZCwod3RjKCksSHNjKSksNjEpO2lmKGIhPShVY2QoKSxUY2QpJiZiIT16Y2Qpe2NvbnRpbnVlfSEhYyYmQkQodk5iKGMsUXNjKSwxNSkuRmMoZCk7Yz1kfX1cbmZ1bmN0aW9uIFlPYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7aT0odENiKGIsYS5jLmxlbmd0aCksQkQoYS5jW2JdLDMyOSkpO0trYihhLGIpO2lmKGkuYi8yPj1jKXtkPWI7aj0oaS5jK2kuYSkvMjtnPWotYztpZihpLmM8PWotYyl7ZT1uZXcgYlBjKGkuYyxnKTtEa2IoYSxkKyssZSl9aD1qK2M7aWYoaDw9aS5hKXtmPW5ldyBiUGMoaCxpLmEpO3dDYihkLGEuYy5sZW5ndGgpO2FDYihhLmMsZCxmKX19fVxuZnVuY3Rpb24gdTBkKGEpe3ZhciBiO2lmKCFhLmMmJmEuZz09bnVsbCl7YS5kPWEuc2koYS5mKTt3dGQoYSxhLmQpO2I9YS5kfWVsc2V7aWYoYS5nPT1udWxsKXtyZXR1cm4gdHJ1ZX1lbHNlIGlmKGEuaT09MCl7cmV0dXJuIGZhbHNlfWVsc2V7Yj1CRChhLmdbYS5pLTFdLDQ3KX19aWYoYj09YS5iJiZudWxsLmttPj1udWxsLmptKCkpe1Z1ZChhKTtyZXR1cm4gdTBkKGEpfWVsc2V7cmV0dXJuIGIuT2IoKX19XG5mdW5jdGlvbiBLVGIoYSxiLGMpe3ZhciBkLGUsZixnLGg7aD1jOyFoJiYoaD1ZZGQobmV3IFpkZCwwKSk7T2RkKGgsVm1lLDEpO2FVYihhLmMsYik7Zz1FWWIoYS5hLGIpO2lmKGcuZ2MoKT09MSl7TVRiKEJEKGcuWGIoMCksMzcpLGgpfWVsc2V7Zj0xL2cuZ2MoKTtmb3IoZT1nLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMzcpO01UYihkLFVkZChoLGYpKX19Q1liKGEuYSxnLGIpO05UYihiKTtRZGQoaCl9XG5mdW5jdGlvbiBxWWIoYSl7dGhpcy5hPWE7aWYoYS5jLmkuaz09KGowYigpLGUwYikpe3RoaXMuYz1hLmM7dGhpcy5kPUJEKHZOYihhLmMuaSwod3RjKCksSHNjKSksNjEpfWVsc2UgaWYoYS5kLmkuaz09ZTBiKXt0aGlzLmM9YS5kO3RoaXMuZD1CRCh2TmIoYS5kLmksKHd0YygpLEhzYykpLDYxKX1lbHNle3Rocm93IHZiYihuZXcgV2RiKCdFZGdlICcrYSsnIGlzIG5vdCBhbiBleHRlcm5hbCBlZGdlLicpKX19XG5mdW5jdGlvbiBvUWQoYSxiKXt2YXIgYyxkLGU7ZT1hLmI7YS5iPWI7KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSwzLGUsYS5iKSk7aWYoIWIpe3BuZChhLG51bGwpO3FRZChhLDApO3BRZChhLG51bGwpfWVsc2UgaWYoYiE9YSl7cG5kKGEsYi56Yik7cVFkKGEsYi5kKTtjPShkPWIuYyxkPT1udWxsP2IuemI6ZCk7cFFkKGEsYz09bnVsbHx8ZGZiKGMsYi56Yik/bnVsbDpjKX19XG5mdW5jdGlvbiBOUmQoYSl7dmFyIGIsYztpZihhLmYpe3doaWxlKGEubjxhLm8pe2I9QkQoIWEuaj9hLmsuWGIoYS5uKTphLmoucGkoYS5uKSw3Mik7Yz1iLmFrKCk7aWYoSkQoYyw5OSkmJihCRChjLDE4KS5CYiZvdGUpIT0wJiYoIWEuZXx8Yy5HaigpIT14Mnx8Yy5haigpIT0wKSYmYi5kZCgpIT1udWxsKXtyZXR1cm4gdHJ1ZX1lbHNleysrYS5ufX1yZXR1cm4gZmFsc2V9ZWxzZXtyZXR1cm4gYS5uPGEub319XG5mdW5jdGlvbiBfaShhLGIpe3ZhciBjO3RoaXMuZT0oaW0oKSxRYihhKSxpbSgpLG5tKGEpKTt0aGlzLmM9KFFiKGIpLG5tKGIpKTtMYih0aGlzLmUuSGQoKS5kYygpPT10aGlzLmMuSGQoKS5kYygpKTt0aGlzLmQ9RXYodGhpcy5lKTt0aGlzLmI9RXYodGhpcy5jKTtjPUlDKFNJLFtuaWUsVWhlXSxbNSwxXSw1LFt0aGlzLmUuSGQoKS5nYygpLHRoaXMuYy5IZCgpLmdjKCldLDIpO3RoaXMuYT1jO1JpKHRoaXMpfVxuZnVuY3Rpb24gdnooYil7dmFyIGM9KCF0eiYmKHR6PXd6KCkpLHR6KTt2YXIgZD1iLnJlcGxhY2UoL1tcXHgwMC1cXHgxZlxceGFkXFx1MDYwMC1cXHUwNjAzXFx1MDZkZFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGItXFx1MjAwZlxcdTIwMjgtXFx1MjAyZVxcdTIwNjAtXFx1MjA2NFxcdTIwNmEtXFx1MjA2ZlxcdWZlZmZcXHVmZmY5LVxcdWZmZmJcIlxcXFxdL2csZnVuY3Rpb24oYSl7cmV0dXJuIHV6KGEsYyl9KTtyZXR1cm4gJ1wiJytkKydcIid9XG5mdW5jdGlvbiBjRWIoYSl7T0RiKCk7dmFyIGIsYzt0aGlzLmI9TERiO3RoaXMuYz1ORGI7dGhpcy5nPShGRGIoKSxFRGIpO3RoaXMuZD0oZWFkKCksY2FkKTt0aGlzLmE9YTtSRGIodGhpcyk7Zm9yKGM9bmV3IG9sYihhLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw1Nyk7IWIuYSYmcERiKHJEYihuZXcgc0RiLE9DKEdDKFBNLDEpLFVoZSw1NywwLFtiXSkpLGEpO2IuZT1uZXcgSzZjKGIuZCl9fVxuZnVuY3Rpb24gSFFiKGEpe3ZhciBiLGMsZCxlLGYsZztlPWEuZS5jLmxlbmd0aDtkPUtDKHlLLGVtZSwxNSxlLDAsMSk7Zm9yKGc9bmV3IG9sYihhLmUpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxNDQpO2RbZi5iXT1uZXcgUHNifWZvcihjPW5ldyBvbGIoYS5jKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMjgyKTtkW2IuYy5iXS5GYyhiKTtkW2IuZC5iXS5GYyhiKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIGZEYyhhKXt2YXIgYixjLGQsZSxmLGcsaDtoPVB1KGEuYy5sZW5ndGgpO2ZvcihlPW5ldyBvbGIoYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEwKTtnPW5ldyBUcWI7Zj1VX2IoZCk7Zm9yKGM9bmV3IFNyKHVyKGYuYS5LYygpLG5ldyBTcSkpO1FyKGMpOyl7Yj1CRChScihjKSwxNyk7Yi5jLmk9PWIuZC5pfHxRcWIoZyxiLmQuaSl9aC5jW2guYy5sZW5ndGhdPWd9cmV0dXJuIGh9XG5mdW5jdGlvbiBvemQoYSxiKXt2YXIgYyxkLGUsZixnO2M9QkQoQWpkKGEuYSw0KSwxMjYpO2c9Yz09bnVsbD8wOmMubGVuZ3RoO2lmKGI+PWcpdGhyb3cgdmJiKG5ldyBDeWQoYixnKSk7ZT1jW2JdO2lmKGc9PTEpe2Q9bnVsbH1lbHNle2Q9S0MoJDMsaHZlLDQxNSxnLTEsMCwxKTskZmIoYywwLGQsMCxiKTtmPWctYi0xO2Y+MCYmJGZiKGMsYisxLGQsYixmKX1iMGQoYSxkKTthMGQoYSxiLGUpO3JldHVybiBlfVxuZnVuY3Rpb24gbThkKCl7bThkPWNjYjtrOGQ9QkQocXVkKFpLZCgocjhkKCkscThkKS5xYiksNiksMzQpO2g4ZD1CRChxdWQoWktkKHE4ZC5xYiksMyksMzQpO2k4ZD1CRChxdWQoWktkKHE4ZC5xYiksNCksMzQpO2o4ZD1CRChxdWQoWktkKHE4ZC5xYiksNSksMTgpO1hJZChrOGQpO1hJZChoOGQpO1hJZChpOGQpO1hJZChqOGQpO2w4ZD1uZXcgYW1iKE9DKEdDKHQ1LDEpLE12ZSwxNzAsMCxbazhkLGg4ZF0pKX1cbmZ1bmN0aW9uIEFKYihhLGIpe3ZhciBjO3RoaXMuZD1uZXcgSF9iO3RoaXMuYj1iO3RoaXMuZT1uZXcgZzdjKGIucWYoKSk7Yz1hLnUuSGMoKHJjZCgpLG9jZCkpO2EudS5IYyhuY2QpP2EuRD8odGhpcy5hPWMmJiFiLklmKCkpOih0aGlzLmE9dHJ1ZSk6YS51LkhjKHBjZCk/Yz8odGhpcy5hPSEoYi56ZigpLktjKCkuT2IoKXx8Yi5CZigpLktjKCkuT2IoKSkpOih0aGlzLmE9ZmFsc2UpOih0aGlzLmE9ZmFsc2UpfVxuZnVuY3Rpb24gSUtiKGEsYil7dmFyIGMsZCxlLGY7Yz1hLm8uYTtmb3IoZj1CRChCRChRYyhhLnIsYiksMjEpLDg0KS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDExMSk7ZS5lLmE9KGQ9ZS5iLGQuWGUoKFk5YygpLHM5YykpP2QuSGYoKT09KFVjZCgpLFRjZCk/LWQucmYoKS5hLUVkYihFRChkLldlKHM5YykpKTpjK0VkYihFRChkLldlKHM5YykpKTpkLkhmKCk9PShVY2QoKSxUY2QpPy1kLnJmKCkuYTpjKX19XG5mdW5jdGlvbiBRMWIoYSxiKXt2YXIgYyxkLGUsZjtjPUJEKHZOYihhLChOeWMoKSxMd2MpKSwxMDMpO2Y9QkQoaGtkKGIsJHhjKSw2MSk7ZT1CRCh2TmIoYSxWeGMpLDk4KTtpZihlIT0oZGNkKCksYmNkKSYmZSE9Y2NkKXtpZihmPT0oVWNkKCksU2NkKSl7Zj1sZmQoYixjKTtmPT1TY2QmJihmPVpjZChjKSl9fWVsc2V7ZD1NMWIoYik7ZD4wPyhmPVpjZChjKSk6KGY9V2NkKFpjZChjKSkpfWprZChiLCR4YyxmKX1cbmZ1bmN0aW9uIG9sYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zz1hLmo7Yi5hIT1iLmImJk9rYihnLG5ldyBVbGMpO2U9Zy5jLmxlbmd0aC8yfDA7Zm9yKGQ9MDtkPGU7ZCsrKXtmPSh0Q2IoZCxnLmMubGVuZ3RoKSxCRChnLmNbZF0sMTEzKSk7Zi5jJiZHMGIoZi5kLGIuYSl9Zm9yKGM9ZTtjPGcuYy5sZW5ndGg7YysrKXtmPSh0Q2IoYyxnLmMubGVuZ3RoKSxCRChnLmNbY10sMTEzKSk7Zi5jJiZHMGIoZi5kLGIuYil9fVxuZnVuY3Rpb24gVEdjKGEsYixjKXt2YXIgZCxlLGY7ZD1hLmNbYi5jLnBdW2IucF07ZT1hLmNbYy5jLnBdW2MucF07aWYoZC5hIT1udWxsJiZlLmEhPW51bGwpe2Y9RGRiKGQuYSxlLmEpO2Y8MD9XR2MoYSxiLGMpOmY+MCYmV0djKGEsYyxiKTtyZXR1cm4gZn1lbHNlIGlmKGQuYSE9bnVsbCl7V0djKGEsYixjKTtyZXR1cm4gLTF9ZWxzZSBpZihlLmEhPW51bGwpe1dHYyhhLGMsYik7cmV0dXJuIDF9cmV0dXJuIDB9XG5mdW5jdGlvbiBzd2QoYSxiKXt2YXIgYyxkLGUsZjtpZihhLmVqKCkpe2M9YS5WaSgpO2Y9YS5maigpOysrYS5qO2EuSGkoYyxhLm9pKGMsYikpO2Q9YS5aaSgzLG51bGwsYixjLGYpO2lmKGEuYmooKSl7ZT1hLmNqKGIsbnVsbCk7aWYoIWUpe2EuJGkoZCl9ZWxzZXtlLkVpKGQpO2UuRmkoKX19ZWxzZXthLiRpKGQpfX1lbHNle0J2ZChhLGIpO2lmKGEuYmooKSl7ZT1hLmNqKGIsbnVsbCk7ISFlJiZlLkZpKCl9fX1cbmZ1bmN0aW9uIEQyZChhLGIpe3ZhciBjLGQsZSxmLGc7Zz1TNmQoYS5lLlRnKCksYik7ZT1uZXcgeXVkO2M9QkQoYS5nLDExOSk7Zm9yKGY9YS5pOy0tZj49MDspe2Q9Y1tmXTtnLnJsKGQuYWsoKSkmJnd0ZChlLGQpfSFZeGQoYSxlKSYmb2lkKGEuZSkmJkdMZChhLGIuJGooKT9IMmQoYSw2LGIsKG1tYigpLGptYiksbnVsbCwtMSxmYWxzZSk6SDJkKGEsYi5LaigpPzI6MSxiLG51bGwsbnVsbCwtMSxmYWxzZSkpfVxuZnVuY3Rpb24gRGhiKCl7RGhiPWNjYjt2YXIgYSxiO0JoYj1LQyhjSixuaWUsOTEsMzIsMCwxKTtDaGI9S0MoY0osbmllLDkxLDMyLDAsMSk7YT0xO2ZvcihiPTA7Yjw9MTg7YisrKXtCaGJbYl09Z2hiKGEpO0NoYltiXT1naGIoTmJiKGEsYikpO2E9SWJiKGEsNSl9Zm9yKDtiPENoYi5sZW5ndGg7YisrKXtCaGJbYl09T2diKEJoYltiLTFdLEJoYlsxXSk7Q2hiW2JdPU9nYihDaGJbYi0xXSwoSGdiKCksRWdiKSl9fVxuZnVuY3Rpb24gSzRiKGEsYil7dmFyIGMsZCxlLGYsZztpZihhLmE9PSh5cmMoKSx3cmMpKXtyZXR1cm4gdHJ1ZX1mPWIuYS5jO2M9Yi5hLmMrYi5hLmI7aWYoYi5qKXtkPWIuQTtnPWQuYy5jLmEtZC5vLmEvMjtlPWYtKGQubi5hK2Quby5hKTtpZihlPmcpe3JldHVybiBmYWxzZX19aWYoYi5xKXtkPWIuQztnPWQuYy5jLmEtZC5vLmEvMjtlPWQubi5hLWM7aWYoZT5nKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfVxuZnVuY3Rpb24gd2NjKGEsYil7dmFyIGM7T2RkKGIsJ1BhcnRpdGlvbiBwcmVwcm9jZXNzaW5nJywxKTtjPUJEKEdBYihKQWIoTEFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmEsMTYpKSxuZXcgQWNjKSxuZXcgQ2NjKSxuZXcgRWNjKSxCeWIobmV3IGZ6YixuZXcgZHpiLG5ldyBFemIsT0MoR0MoeEwsMSksS2llLDEzMiwwLFsoRnliKCksRHliKV0pKSksMTUpO01BYihjLk9jKCksbmV3IEdjYyk7UWRkKGIpfVxuZnVuY3Rpb24gRE1jKGEpe3dNYygpO3ZhciBiLGMsZCxlLGYsZyxoO2M9bmV3ICRyYjtmb3IoZT1uZXcgb2xiKGEuZS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2ZvcihnPW5ldyBvbGIoZC5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTApO2g9YS5nW2YucF07Yj1CRChXcmIoYyxoKSwxNSk7aWYoIWIpe2I9bmV3IFJrYjtYcmIoYyxoLGIpfWIuRmMoZil9fXJldHVybiBjfVxuZnVuY3Rpb24gZFJjKGEsYil7dmFyIGMsZCxlLGYsZztlPWIuYi5iO2EuYT1LQyh5SyxlbWUsMTUsZSwwLDEpO2EuYj1LQyhzYmIsZGxlLDI1LGUsMTYsMSk7Zm9yKGc9SnNiKGIuYiwwKTtnLmIhPWcuZC5jOyl7Zj1CRChYc2IoZyksODYpO2EuYVtmLmddPW5ldyBQc2J9Zm9yKGQ9SnNiKGIuYSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksMTg4KTthLmFbYy5iLmddLkZjKGMpO2EuYVtjLmMuZ10uRmMoYyl9fVxuZnVuY3Rpb24gcW1kKGEpe3ZhciBiO2lmKChhLkRiJjY0KSE9MClyZXR1cm4gRWlkKGEpO2I9bmV3IEpmYihFaWQoYSkpO2IuYSs9JyAoc3RhcnRYOiAnO0JmYihiLGEuaik7Yi5hKz0nLCBzdGFydFk6ICc7QmZiKGIsYS5rKTtiLmErPScsIGVuZFg6ICc7QmZiKGIsYS5iKTtiLmErPScsIGVuZFk6ICc7QmZiKGIsYS5jKTtiLmErPScsIGlkZW50aWZpZXI6ICc7RWZiKGIsYS5kKTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gRUlkKGEpe3ZhciBiO2lmKChhLkRiJjY0KSE9MClyZXR1cm4gcW5kKGEpO2I9bmV3IEpmYihxbmQoYSkpO2IuYSs9JyAob3JkZXJlZDogJztGZmIoYiwoYS5CYiYyNTYpIT0wKTtiLmErPScsIHVuaXF1ZTogJztGZmIoYiwoYS5CYiY1MTIpIT0wKTtiLmErPScsIGxvd2VyQm91bmQ6ICc7Q2ZiKGIsYS5zKTtiLmErPScsIHVwcGVyQm91bmQ6ICc7Q2ZiKGIsYS50KTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gV25kKGEsYixjLGQsZSxmLGcsaCl7dmFyIGk7SkQoYS5DYiw4OCkmJlhNZCgkS2QoQkQoYS5DYiw4OCkpLDQpO3BuZChhLGMpO2EuZj1kO2RKZChhLGUpO2ZKZChhLGYpO1pJZChhLGcpO2VKZChhLGZhbHNlKTtDSWQoYSx0cnVlKTthSmQoYSxoKTtCSWQoYSx0cnVlKTtBSWQoYSwwKTthLmI9MDtESWQoYSwxKTtpPXhJZChhLGIsbnVsbCk7ISFpJiZpLkZpKCk7TUpkKGEsZmFsc2UpO3JldHVybiBhfVxuZnVuY3Rpb24gZnliKGEsYil7dmFyIGMsZCxlLGY7Yz1CRChQaGIoYS5hLGIpLDUxMik7aWYoIWMpe2Q9bmV3IHd5YihiKTtlPShveWIoKSxseWIpP251bGw6ZC5jO2Y9cWZiKGUsMCwkd25kLk1hdGgubWF4KDAsa2ZiKGUsd2ZiKDQ2KSkpKTt2eWIoZCxmeWIoYSxmKSk7KGx5Yj9udWxsOmQuYykubGVuZ3RoPT0wJiZxeWIoZCxuZXcgenliKTtTaGIoYS5hLGx5Yj9udWxsOmQuYyxkKTtyZXR1cm4gZH1yZXR1cm4gY31cbmZ1bmN0aW9uIEJPYihhLGIpe3ZhciBjO2EuYj1iO2EuZz1uZXcgUmtiO2M9Q09iKGEuYik7YS5lPWM7YS5mPWM7YS5jPUNjYihERCh2TmIoYS5iLChmRmIoKSwkRWIpKSkpO2EuYT1FRCh2TmIoYS5iLChZOWMoKSxyOGMpKSk7YS5hPT1udWxsJiYoYS5hPTEpO0VkYihhLmEpPjE/KGEuZSo9RWRiKGEuYSkpOihhLmYvPUVkYihhLmEpKTtET2IoYSk7RU9iKGEpO0FPYihhKTt5TmIoYS5iLChDUGIoKSx1UGIpLGEuZyl9XG5mdW5jdGlvbiBZNWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtkPTA7aT1jO2lmKCFiKXtkPWMqKGEuYy5sZW5ndGgtMSk7aSo9LTF9Zm9yKGY9bmV3IG9sYihhKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTApO3lOYihlLChOeWMoKSxtd2MpLChGN2MoKSxCN2MpKTtlLm8uYT1kO2ZvcihoPVlfYihlLChVY2QoKSx6Y2QpKS5LYygpO2guT2IoKTspe2c9QkQoaC5QYigpLDExKTtnLm4uYT1kfWQrPWl9fVxuZnVuY3Rpb24gUXhkKGEsYixjKXt2YXIgZCxlLGY7aWYoYS5laigpKXtmPWEuZmooKTtrdWQoYSxiLGMpO2Q9YS5aaSgzLG51bGwsYyxiLGYpO2lmKGEuYmooKSl7ZT1hLmNqKGMsbnVsbCk7YS5paigpJiYoZT1hLmpqKGMsZSkpO2lmKCFlKXthLiRpKGQpfWVsc2V7ZS5FaShkKTtlLkZpKCl9fWVsc2V7YS4kaShkKX19ZWxzZXtrdWQoYSxiLGMpO2lmKGEuYmooKSl7ZT1hLmNqKGMsbnVsbCk7ISFlJiZlLkZpKCl9fX1cbmZ1bmN0aW9uIElMZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2g9YS5HayhjKTtpZihoIT1jKXtnPWEuZ1tiXTtpPWg7bXVkKGEsYixhLm9pKGIsaSkpO2Y9ZzthLmdpKGIsaSxmKTtpZihhLnJrKCkpe2Q9YztlPWEuZGooZCxudWxsKTshQkQoaCw0OSkuZWgoKSYmKGU9YS5jaihpLGUpKTshIWUmJmUuRmkoKX1vaWQoYS5lKSYmR0xkKGEsYS5aaSg5LGMsaCxiLGZhbHNlKSk7cmV0dXJuIGh9ZWxzZXtyZXR1cm4gY319XG5mdW5jdGlvbiBwVmIoYSxiKXt2YXIgYyxkLGUsZjtmb3IoZD1uZXcgb2xiKGEuYS5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTg5KTtjLmc9dHJ1ZX1mb3IoZj1uZXcgb2xiKGEuYS5iKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksODEpO2Uuaz1DY2IoREQoYS5lLktiKG5ldyB2Z2QoZSxiKSkpKTtlLmQuZz1lLmQuZyZDY2IoREQoYS5lLktiKG5ldyB2Z2QoZSxiKSkpKX1yZXR1cm4gYX1cbmZ1bmN0aW9uIHBrYyhhKXt2YXIgYixjLGQsZSxmO2M9KGI9QkQoZ2RiKEYxKSw5KSxuZXcgeHFiKGIsQkQoX0JiKGIsYi5sZW5ndGgpLDkpLDApKTtmPUJEKHZOYihhLCh3dGMoKSxndGMpKSwxMCk7aWYoZil7Zm9yKGU9bmV3IG9sYihmLmopO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMSk7UEQodk5iKGQsJHNjKSk9PT1QRChhKSYmYTFiKG5ldyBiMWIoZC5iKSkmJnJxYihjLGQuail9fXJldHVybiBjfVxuZnVuY3Rpb24gekNjKGEsYixjKXt2YXIgZCxlLGYsZyxoO2lmKGEuZFtjLnBdKXtyZXR1cm59Zm9yKGU9bmV3IFNyKHVyKFVfYihjKS5hLktjKCksbmV3IFNxKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDE3KTtoPWQuZC5pO2ZvcihnPW5ldyBTcih1cihSX2IoaCkuYS5LYygpLG5ldyBTcSkpO1FyKGcpOyl7Zj1CRChScihnKSwxNyk7Zi5jLmk9PWImJihhLmFbZi5wXT10cnVlKX16Q2MoYSxiLGgpfWEuZFtjLnBdPXRydWV9XG5mdW5jdGlvbiBCamQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtkPWFlYihhLkRiJjI1NCk7aWYoZD09MSl7YS5FYj1udWxsfWVsc2V7Zj1DRChhLkViKTtpZihkPT0yKXtlPXpqZChhLGIpO2EuRWI9ZltlPT0wPzE6MF19ZWxzZXtnPUtDKFNJLFVoZSwxLGQtMSw1LDEpO2ZvcihjPTIsaD0wLGk9MDtjPD0xMjg7Yzw8PTEpe2M9PWI/KytoOihhLkRiJmMpIT0wJiYoZ1tpKytdPWZbaCsrXSl9YS5FYj1nfX1hLkRiJj1+Yn1cbmZ1bmN0aW9uIG4xZChhLGIpe3ZhciBjLGQsZSxmLGc7ZD0oIWIucyYmKGIucz1uZXcgY1VkKHQ1LGIsMjEsMTcpKSxiLnMpO2Y9bnVsbDtmb3IoZT0wLGc9ZC5pO2U8ZzsrK2Upe2M9QkQocXVkKGQsZSksMTcwKTtzd2l0Y2goJDFkKHExZChhLGMpKSl7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6eyFmJiYoZj1uZXcgUmtiKTtmLmNbZi5jLmxlbmd0aF09YzticmVha319fXJldHVybiAhZj8obW1iKCksbW1iKCksam1iKTpmfVxuZnVuY3Rpb24gVWVlKGEpe3ZhciBiO2I9MDtzd2l0Y2goYSl7Y2FzZSAxMDU6Yj0yO2JyZWFrO2Nhc2UgMTA5OmI9ODticmVhaztjYXNlIDExNTpiPTQ7YnJlYWs7Y2FzZSAxMjA6Yj0xNjticmVhaztjYXNlIDExNzpiPTMyO2JyZWFrO2Nhc2UgMTE5OmI9NjQ7YnJlYWs7Y2FzZSA3MDpiPTI1NjticmVhaztjYXNlIDcyOmI9MTI4O2JyZWFrO2Nhc2UgODg6Yj01MTI7YnJlYWs7Y2FzZSA0NDpiPXp0ZTt9cmV0dXJuIGJ9XG5mdW5jdGlvbiBHaGIoYSxiLGMsZCxlKXt2YXIgZixnLGgsaTtpZihQRChhKT09PVBEKGIpJiZkPT1lKXtMaGIoYSxkLGMpO3JldHVybn1mb3IoaD0wO2g8ZDtoKyspe2c9MDtmPWFbaF07Zm9yKGk9MDtpPGU7aSsrKXtnPXdiYih3YmIoSWJiKHhiYihmLFlqZSkseGJiKGJbaV0sWWplKSkseGJiKGNbaCtpXSxZamUpKSx4YmIoVGJiKGcpLFlqZSkpO2NbaCtpXT1UYmIoZyk7Zz1QYmIoZywzMil9Y1toK2VdPVRiYihnKX19XG5mdW5jdGlvbiBDT2IoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDtrPTA7aj0wO2U9YS5hO2g9ZS5hLmdjKCk7Zm9yKGQ9ZS5hLmVjKCkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSw1NjEpO2I9KGMuYiYmTE9iKGMpLGMuYSk7bD1iLmE7Zz1iLmI7ays9bCtnO2orPWwqZ31pPSR3bmQuTWF0aC5zcXJ0KDQwMCpoKmotNCpqK2sqaykraztmPTIqKDEwMCpoLTEpO2lmKGY9PTApe3JldHVybiBpfXJldHVybiBpL2Z9XG5mdW5jdGlvbiBtT2MoYSxiKXtpZihiLmIhPTApe2lzTmFOKGEucyk/KGEucz1FZGIoKHNDYihiLmIhPTApLEVEKGIuYS5hLmMpKSkpOihhLnM9JHduZC5NYXRoLm1pbihhLnMsRWRiKChzQ2IoYi5iIT0wKSxFRChiLmEuYS5jKSkpKSk7aXNOYU4oYS5jKT8oYS5jPUVkYigoc0NiKGIuYiE9MCksRUQoYi5jLmIuYykpKSk6KGEuYz0kd25kLk1hdGgubWF4KGEuYyxFZGIoKHNDYihiLmIhPTApLEVEKGIuYy5iLmMpKSkpKX19XG5mdW5jdGlvbiBQbGQoYSl7dmFyIGIsYyxkLGU7Yj1udWxsO2ZvcihkPXVsKHBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFsoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKSwoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKV0pKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDgyKTtlPWF0ZChjKTtpZighYil7Yj1Yb2QoZSl9ZWxzZSBpZihiIT1Yb2QoZSkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBSeGQoYSxiKXt2YXIgYyxkLGUsZjtpZihhLmVqKCkpe2M9YS5pO2Y9YS5maigpO2x1ZChhLGIpO2Q9YS5aaSgzLG51bGwsYixjLGYpO2lmKGEuYmooKSl7ZT1hLmNqKGIsbnVsbCk7YS5paigpJiYoZT1hLmpqKGIsZSkpO2lmKCFlKXthLiRpKGQpfWVsc2V7ZS5FaShkKTtlLkZpKCl9fWVsc2V7YS4kaShkKX19ZWxzZXtsdWQoYSxiKTtpZihhLmJqKCkpe2U9YS5jaihiLG51bGwpOyEhZSYmZS5GaSgpfX19XG5mdW5jdGlvbiByd2QoYSxiLGMpe3ZhciBkLGUsZjtpZihhLmVqKCkpe2Y9YS5maigpOysrYS5qO2EuSGkoYixhLm9pKGIsYykpO2Q9YS5aaSgzLG51bGwsYyxiLGYpO2lmKGEuYmooKSl7ZT1hLmNqKGMsbnVsbCk7aWYoIWUpe2EuJGkoZCl9ZWxzZXtlLkVpKGQpO2UuRmkoKX19ZWxzZXthLiRpKGQpfX1lbHNleysrYS5qO2EuSGkoYixhLm9pKGIsYykpO2lmKGEuYmooKSl7ZT1hLmNqKGMsbnVsbCk7ISFlJiZlLkZpKCl9fX1cbmZ1bmN0aW9uIFdlZShhKXt2YXIgYixjLGQsZTtlPWEubGVuZ3RoO2I9bnVsbDtmb3IoZD0wO2Q8ZTtkKyspe2M9KEJDYihkLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoZCkpO2lmKGhmYignLiorP3tbKCl8XFxcXF4kJyx3ZmIoYykpPj0wKXtpZighYil7Yj1uZXcgSWZiO2Q+MCYmRWZiKGIsYS5zdWJzdHIoMCxkKSl9Yi5hKz0nXFxcXCc7QWZiKGIsYyZhamUpfWVsc2UgISFiJiZBZmIoYixjJmFqZSl9cmV0dXJuIGI/Yi5hOmF9XG5mdW5jdGlvbiBsNWMoYSl7dmFyIGI7aWYoIWEuYSl7dGhyb3cgdmJiKG5ldyBaZGIoJ0lEYXRhVHlwZSBjbGFzcyBleHBlY3RlZCBmb3IgbGF5b3V0IG9wdGlvbiAnK2EuZikpfWI9Z3ZkKGEuYSk7aWYoYj09bnVsbCl7dGhyb3cgdmJiKG5ldyBaZGIoXCJDb3VsZG4ndCBjcmVhdGUgbmV3IGluc3RhbmNlIG9mIHByb3BlcnR5ICdcIithLmYrXCInLiBcIitpc2UrKGZkYihZMyksWTMuaykranNlKSl9cmV0dXJuIEJEKGIsNDE0KX1cbmZ1bmN0aW9uIGFpZChhKXt2YXIgYixjLGQsZSxmO2Y9YS5laCgpO2lmKGYpe2lmKGYua2goKSl7ZT14aWQoYSxmKTtpZihlIT1mKXtjPWEuVmcoKTtkPShiPWEuVmcoKSxiPj0wP2EuUWcobnVsbCk6YS5laCgpLmloKGEsLTEtYixudWxsLG51bGwpKTthLlJnKEJEKGUsNDkpLGMpOyEhZCYmZC5GaSgpO2EuTGcoKSYmYS5NZygpJiZjPi0xJiZVaGQoYSxuZXcgblNkKGEsOSxjLGYsZSkpO3JldHVybiBlfX19cmV0dXJuIGZ9XG5mdW5jdGlvbiBuVGIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtnPTA7Zj1hLmYuZTtmb3IoZD0wO2Q8Zi5jLmxlbmd0aDsrK2Qpe2g9KHRDYihkLGYuYy5sZW5ndGgpLEJEKGYuY1tkXSwxNDQpKTtmb3IoZT1kKzE7ZTxmLmMubGVuZ3RoOysrZSl7aT0odENiKGUsZi5jLmxlbmd0aCksQkQoZi5jW2VdLDE0NCkpO2M9UzZjKGguZCxpLmQpO2I9Yy1hLmFbaC5iXVtpLmJdO2crPWEuaVtoLmJdW2kuYl0qYipifX1yZXR1cm4gZ31cbmZ1bmN0aW9uIF9hYyhhLGIpe3ZhciBjO2lmKHdOYihiLChOeWMoKSxteGMpKSl7cmV0dXJufWM9aGJjKEJEKHZOYihiLFVhYyksMzYwKSxCRCh2TmIoYSxteGMpLDE2MykpO3lOYihiLFVhYyxjKTtpZihRcihuZXcgU3IodXIoT19iKGIpLmEuS2MoKSxuZXcgU3EpKSkpe3JldHVybn1zd2l0Y2goYy5nKXtjYXNlIDE6eU5iKGIsbXhjLChDdGMoKSx4dGMpKTticmVhaztjYXNlIDI6eU5iKGIsbXhjLChDdGMoKSx6dGMpKTt9fVxuZnVuY3Rpb24gd2tjKGEsYil7dmFyIGM7bWtjKGEpO2EuYT0oYz1uZXcgSmksTUFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuZCwxNikpLG5ldyBWa2MoYykpLGMpO3JrYyhhLEJEKHZOYihiLmIsKE55YygpLFd3YykpLDM3NikpO3RrYyhhKTtza2MoYSk7cWtjKGEpO3VrYyhhKTt2a2MoYSxiKTtNQWIoTEFiKG5ldyBZQWIobnVsbCwkaShZaShhLmIpLmEpKSxuZXcgTGtjKSxuZXcgTmtjKTtiLmE9ZmFsc2U7YS5hPW51bGx9XG5mdW5jdGlvbiBCb2QoKXtmb2QuY2FsbCh0aGlzLHl0ZSwoRmhkKCksRWhkKSk7dGhpcy5wPW51bGw7dGhpcy5hPW51bGw7dGhpcy5mPW51bGw7dGhpcy5uPW51bGw7dGhpcy5nPW51bGw7dGhpcy5jPW51bGw7dGhpcy5pPW51bGw7dGhpcy5qPW51bGw7dGhpcy5kPW51bGw7dGhpcy5iPW51bGw7dGhpcy5lPW51bGw7dGhpcy5rPW51bGw7dGhpcy5vPW51bGw7dGhpcy5zPW51bGw7dGhpcy5xPWZhbHNlO3RoaXMucj1mYWxzZX1cbmZ1bmN0aW9uIENzZCgpe0NzZD1jY2I7QnNkPW5ldyBEc2QoV25lLDApO3lzZD1uZXcgRHNkKCdJTlNJREVfU0VMRl9MT09QUycsMSk7enNkPW5ldyBEc2QoJ01VTFRJX0VER0VTJywyKTt4c2Q9bmV3IERzZCgnRURHRV9MQUJFTFMnLDMpO0FzZD1uZXcgRHNkKCdQT1JUUycsNCk7dnNkPW5ldyBEc2QoJ0NPTVBPVU5EJyw1KTt1c2Q9bmV3IERzZCgnQ0xVU1RFUlMnLDYpO3dzZD1uZXcgRHNkKCdESVNDT05ORUNURUQnLDcpfVxuZnVuY3Rpb24gU2diKGEsYil7dmFyIGMsZCxlO2lmKGI9PTApe3JldHVybiAoYS5hWzBdJjEpIT0wfWlmKGI8MCl7dGhyb3cgdmJiKG5ldyBvY2IoJ05lZ2F0aXZlIGJpdCBhZGRyZXNzJykpfWU9Yj4+NTtpZihlPj1hLmQpe3JldHVybiBhLmU8MH1jPWEuYVtlXTtiPTE8PChiJjMxKTtpZihhLmU8MCl7ZD1NZ2IoYSk7aWYoZTxkKXtyZXR1cm4gZmFsc2V9ZWxzZSBkPT1lPyhjPS1jKTooYz1+Yyl9cmV0dXJuIChjJmIpIT0wfVxuZnVuY3Rpb24gTzFjKGEsYixjLGQpe3ZhciBlO0JEKGMuYiw2NSk7QkQoYy5iLDY1KTtCRChkLmIsNjUpO0JEKGQuYiw2NSk7ZT1jN2MoUjZjKEJEKGMuYiw2NSkuYyksQkQoZC5iLDY1KS5jKTskNmMoZSxZTmIoQkQoYy5iLDY1KSxCRChkLmIsNjUpLGUpKTtCRChkLmIsNjUpO0JEKGQuYiw2NSk7QkQoZC5iLDY1KS5jLmErZS5hO0JEKGQuYiw2NSkuYy5iK2UuYjtCRChkLmIsNjUpO0hrYihkLmEsbmV3IFQxYyhhLGIsZCkpfVxuZnVuY3Rpb24gdk5kKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7Zj1iLmU7aWYoZil7Yz1haWQoZik7ZD1CRChhLmcsNjc0KTtmb3IoZz0wO2c8YS5pOysrZyl7aT1kW2ddO2lmKEpRZChpKT09Yyl7ZT0oIWkuZCYmKGkuZD1uZXcgeE1kKGo1LGksMSkpLGkuZCk7aD1CRChjLmFoKE5pZChmLGYuQ2IsZi5EYj4+MTYpKSwxNSkuWGMoZik7aWYoaDxlLmkpe3JldHVybiB2TmQoYSxCRChxdWQoZSxoKSw4NykpfX19fXJldHVybiBifVxuZnVuY3Rpb24gYmNiKGEsYixjKXt2YXIgZD1fYmIsaDt2YXIgZT1kW2FdO3ZhciBmPWUgaW5zdGFuY2VvZiBBcnJheT9lWzBdOm51bGw7aWYoZSYmIWYpe189ZX1lbHNle189KGg9YiYmYi5wcm90b3R5cGUsIWgmJihoPV9iYltiXSksZWNiKGgpKTtfLmhtPWM7IWImJihfLmltPWdjYik7ZFthXT1ffWZvcih2YXIgZz0zO2c8YXJndW1lbnRzLmxlbmd0aDsrK2cpe2FyZ3VtZW50c1tnXS5wcm90b3R5cGU9X31mJiYoXy5nbT1mKX1cbmZ1bmN0aW9uIFFyKGEpe3ZhciBiO3doaWxlKCFCRChRYihhLmEpLDQ3KS5PYigpKXthLmQ9UHIoYSk7aWYoIWEuZCl7cmV0dXJuIGZhbHNlfWEuYT1CRChhLmQuUGIoKSw0Nyk7aWYoSkQoYS5hLDM5KSl7Yj1CRChhLmEsMzkpO2EuYT1iLmE7IWEuYiYmKGEuYj1uZXcgamtiKTtXamIoYS5iLGEuZCk7aWYoYi5iKXt3aGlsZSghYWtiKGIuYikpe1dqYihhLmIsQkQoZ2tiKGIuYiksNDcpKX19YS5kPWIuZH19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBrcmIoYSxiKXt2YXIgYyxkLGUsZixnO2Y9Yj09bnVsbD8wOmEuYi5zZShiKTtkPShjPWEuYS5nZXQoZiksYz09bnVsbD9uZXcgQXJyYXk6Yyk7Zm9yKGc9MDtnPGQubGVuZ3RoO2crKyl7ZT1kW2ddO2lmKGEuYi5yZShiLGUuY2QoKSkpe2lmKGQubGVuZ3RoPT0xKXtkLmxlbmd0aD0wO3RyYihhLmEsZil9ZWxzZXtkLnNwbGljZShnLDEpfS0tYS5jO3pwYihhLmIpO3JldHVybiBlLmRkKCl9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gR0diKGEsYil7dmFyIGMsZCxlLGY7ZT0xO2Iuaj10cnVlO2Y9bnVsbDtmb3IoZD1uZXcgb2xiKExGYihiKSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDIxMyk7aWYoIWEuY1tjLmNdKXthLmNbYy5jXT10cnVlO2Y9eEZiKGMsYik7aWYoYy5mKXtlKz1HR2IoYSxmKX1lbHNlIGlmKCFmLmomJmMuYT09Yy5lLmUtYy5kLmUpe2MuZj10cnVlO1FxYihhLnAsYyk7ZSs9R0diKGEsZil9fX1yZXR1cm4gZX1cbmZ1bmN0aW9uIE1WYihhKXt2YXIgYixjLGQ7Zm9yKGM9bmV3IG9sYihhLmEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksODEpO2Q9KHVDYigwKSwwKTtpZihkPjApeyEoZmFkKGEuYS5jKSYmYi5uLmQpJiYhKGdhZChhLmEuYykmJmIubi5iKSYmKGIuZy5kKz0kd25kLk1hdGgubWF4KDAsZC8yLTAuNSkpOyEoZmFkKGEuYS5jKSYmYi5uLmEpJiYhKGdhZChhLmEuYykmJmIubi5jKSYmKGIuZy5hLT1kLTEpfX19XG5mdW5jdGlvbiBOM2IoYSl7dmFyIGIsYyxkLGUsZjtlPW5ldyBSa2I7Zj1PM2IoYSxlKTtiPUJEKHZOYihhLCh3dGMoKSxndGMpKSwxMCk7aWYoYil7Zm9yKGQ9bmV3IG9sYihiLmopO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxMSk7UEQodk5iKGMsJHNjKSk9PT1QRChhKSYmKGY9JHduZC5NYXRoLm1heChmLE8zYihjLGUpKSl9fWUuYy5sZW5ndGg9PTB8fHlOYihhLFlzYyxmKTtyZXR1cm4gZiE9LTE/ZTpudWxsfVxuZnVuY3Rpb24gYTliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7Zj1CRChJa2IoYi5lLDApLDE3KS5jO2Q9Zi5pO2U9ZC5rO2k9QkQoSWtiKGMuZywwKSwxNykuZDtnPWkuaTtoPWcuaztlPT0oajBiKCksZzBiKT95TmIoYSwod3RjKCksVnNjKSxCRCh2TmIoZCxWc2MpLDExKSk6eU5iKGEsKHd0YygpLFZzYyksZik7aD09ZzBiP3lOYihhLCh3dGMoKSxXc2MpLEJEKHZOYihnLFdzYyksMTEpKTp5TmIoYSwod3RjKCksV3NjKSxpKX1cbmZ1bmN0aW9uIFJzKGEsYil7dmFyIGMsZCxlLGY7Zj1UYmIoSWJiKEVpZSxrZWIoVGJiKEliYihiPT1udWxsPzA6dGIoYiksRmllKSksMTUpKSk7Yz1mJmEuYi5sZW5ndGgtMTtlPW51bGw7Zm9yKGQ9YS5iW2NdO2Q7ZT1kLGQ9ZC5hKXtpZihkLmQ9PWYmJkhiKGQuaSxiKSl7IWU/KGEuYltjXT1kLmEpOihlLmE9ZC5hKTtCcyhkLmMsZC5mKTtBcyhkLmIsZC5lKTstLWEuZjsrK2EuZTtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gbEQoYSxiKXt2YXIgYyxkLGUsZixnO2ImPTYzO2M9YS5oO2Q9KGMmR2plKSE9MDtkJiYoY3w9LTEwNDg1NzYpO2lmKGI8MjIpe2c9Yz4+YjtmPWEubT4+YnxjPDwyMi1iO2U9YS5sPj5ifGEubTw8MjItYn1lbHNlIGlmKGI8NDQpe2c9ZD9GamU6MDtmPWM+PmItMjI7ZT1hLm0+PmItMjJ8Yzw8NDQtYn1lbHNle2c9ZD9GamU6MDtmPWQ/RWplOjA7ZT1jPj5iLTQ0fXJldHVybiBUQyhlJkVqZSxmJkVqZSxnJkZqZSl9XG5mdW5jdGlvbiBYT2IoYSl7dmFyIGIsYyxkLGUsZixnO3RoaXMuYz1uZXcgUmtiO3RoaXMuZD1hO2Q9UGplO2U9UGplO2I9UWplO2M9UWplO2ZvcihnPUpzYihhLDApO2cuYiE9Zy5kLmM7KXtmPUJEKFhzYihnKSw4KTtkPSR3bmQuTWF0aC5taW4oZCxmLmEpO2U9JHduZC5NYXRoLm1pbihlLGYuYik7Yj0kd25kLk1hdGgubWF4KGIsZi5hKTtjPSR3bmQuTWF0aC5tYXgoYyxmLmIpfXRoaXMuYT1uZXcgSjZjKGQsZSxiLWQsYy1lKX1cbmZ1bmN0aW9uIERhYyhhLGIpe3ZhciBjLGQsZSxmLGcsaDtmb3IoZj1uZXcgb2xiKGEuYik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDI5KTtmb3IoaD1uZXcgb2xiKGUuYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTtnLms9PShqMGIoKSxmMGIpJiZ6YWMoZyxiKTtmb3IoZD1uZXcgU3IodXIoVV9iKGcpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO3lhYyhjLGIpfX19fVxuZnVuY3Rpb24gWG9jKGEpe3ZhciBiLGMsZDt0aGlzLmM9YTtkPUJEKHZOYihhLChOeWMoKSxMd2MpKSwxMDMpO2I9RWRiKEVEKHZOYihhLG93YykpKTtjPUVkYihFRCh2TmIoYSxEeWMpKSk7ZD09KGVhZCgpLGFhZCl8fGQ9PWJhZHx8ZD09Y2FkPyh0aGlzLmI9YipjKToodGhpcy5iPTEvKGIqYykpO3RoaXMuaj1FZGIoRUQodk5iKGEsd3ljKSkpO3RoaXMuZT1FZGIoRUQodk5iKGEsdnljKSkpO3RoaXMuZj1hLmIuYy5sZW5ndGh9XG5mdW5jdGlvbiBBRGMoYSl7dmFyIGIsYzthLmU9S0MoV0Qsb2plLDI1LGEucC5jLmxlbmd0aCwxNSwxKTthLms9S0MoV0Qsb2plLDI1LGEucC5jLmxlbmd0aCwxNSwxKTtmb3IoYz1uZXcgb2xiKGEucCk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDEwKTthLmVbYi5wXT1zcihuZXcgU3IodXIoUl9iKGIpLmEuS2MoKSxuZXcgU3EpKSk7YS5rW2IucF09c3IobmV3IFNyKHVyKFVfYihiKS5hLktjKCksbmV3IFNxKSkpfX1cbmZ1bmN0aW9uIEREYyhhKXt2YXIgYixjLGQsZSxmLGc7ZT0wO2EucT1uZXcgUmtiO2I9bmV3IFRxYjtmb3IoZz1uZXcgb2xiKGEucCk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtmLnA9ZTtmb3IoZD1uZXcgU3IodXIoVV9iKGYpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO1FxYihiLGMuZC5pKX1iLmEuQmMoZikhPW51bGw7RWtiKGEucSxuZXcgVnFiKGIpKTtiLmEuJGIoKTsrK2V9fVxuZnVuY3Rpb24gSlRjKCl7SlRjPWNjYjtDVGM9bmV3IHEwYigyMCk7QlRjPW5ldyBPc2QoKFk5YygpLGY5YyksQ1RjKTtIVGM9bmV3IE9zZChUOWMsMjApO3VUYz1uZXcgT3NkKHI4Yyx0bWUpO0VUYz1uZXcgT3NkKEQ5YyxtZWIoMSkpO0dUYz1uZXcgT3NkKEg5YywoQmNiKCksdHJ1ZSkpO3ZUYz15OGM7eFRjPVk4Yzt5VGM9XzhjO3pUYz1iOWM7d1RjPVc4YztBVGM9ZTljO0RUYz14OWM7SVRjPShyVGMoKSxwVGMpO0ZUYz1uVGN9XG5mdW5jdGlvbiBSQmQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aWYoYS5hLmY+MCYmSkQoYiw0Mikpe2EuYS5xaigpO2o9QkQoYiw0Mik7aT1qLmNkKCk7Zj1pPT1udWxsPzA6dGIoaSk7Zz1EQWQoYS5hLGYpO2M9YS5hLmRbZ107aWYoYyl7ZD1CRChjLmcsMzY3KTtrPWMuaTtmb3IoaD0wO2g8azsrK2gpe2U9ZFtoXTtpZihlLlNoKCk9PWYmJmUuRmIoaikpe1JCZChhLGopO3JldHVybiB0cnVlfX19fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIHNrYyhhKXt2YXIgYixjLGQsZTtmb3IoZT1CRChRYyhhLmEsKFhqYygpLFVqYykpLDE1KS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDEwMSk7Yz0oYj1FYyhkLmspLGIuSGMoKFVjZCgpLEFjZCkpP2IuSGMoemNkKT9iLkhjKFJjZCk/Yi5IYyhUY2QpP251bGw6ZGtjOmZrYzpla2M6Y2tjKTtra2MoYSxkLGNbMF0sKEZrYygpLENrYyksMCk7a2tjKGEsZCxjWzFdLERrYywxKTtra2MoYSxkLGNbMl0sRWtjLDEpfX1cbmZ1bmN0aW9uIGVuYyhhLGIpe3ZhciBjLGQ7Yz1mbmMoYik7aW5jKGEsYixjKTt1UGMoYS5hLEJEKHZOYihRX2IoYi5iKSwod3RjKCksanRjKSksMjMwKSk7ZG5jKGEpO2NuYyhhLGIpO2Q9S0MoV0Qsb2plLDI1LGIuYi5qLmMubGVuZ3RoLDE1LDEpO2xuYyhhLGIsKFVjZCgpLEFjZCksZCxjKTtsbmMoYSxiLHpjZCxkLGMpO2xuYyhhLGIsUmNkLGQsYyk7bG5jKGEsYixUY2QsZCxjKTthLmE9bnVsbDthLmM9bnVsbDthLmI9bnVsbH1cbmZ1bmN0aW9uIE9ZYygpe09ZYz1jY2I7TFljPSh6WWMoKSx5WWMpO0tZYz1uZXcgTnNkKEJyZSxMWWMpO0lZYz1uZXcgTnNkKENyZSwoQmNiKCksdHJ1ZSkpO21lYigtMSk7RlljPW5ldyBOc2QoRHJlLG1lYigtMSkpO21lYigtMSk7R1ljPW5ldyBOc2QoRXJlLG1lYigtMSkpO0pZYz1uZXcgTnNkKEZyZSxmYWxzZSk7TVljPW5ldyBOc2QoR3JlLHRydWUpO0hZYz1uZXcgTnNkKEhyZSxmYWxzZSk7TlljPW5ldyBOc2QoSXJlLC0xKX1cbmZ1bmN0aW9uIHlsZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgNzohYS5lJiYoYS5lPW5ldyB5NWQoQjIsYSw3LDQpKTtVeGQoYS5lKTshYS5lJiYoYS5lPW5ldyB5NWQoQjIsYSw3LDQpKTt5dGQoYS5lLEJEKGMsMTQpKTtyZXR1cm47Y2FzZSA4OiFhLmQmJihhLmQ9bmV3IHk1ZChCMixhLDgsNSkpO1V4ZChhLmQpOyFhLmQmJihhLmQ9bmV3IHk1ZChCMixhLDgsNSkpO3l0ZChhLmQsQkQoYywxNCkpO3JldHVybjt9WmtkKGEsYixjKX1cbmZ1bmN0aW9uIEF0KGEsYil7dmFyIGMsZCxlLGYsZztpZihQRChiKT09PVBEKGEpKXtyZXR1cm4gdHJ1ZX1pZighSkQoYiwxNSkpe3JldHVybiBmYWxzZX1nPUJEKGIsMTUpO2lmKGEuZ2MoKSE9Zy5nYygpKXtyZXR1cm4gZmFsc2V9Zj1nLktjKCk7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9ZC5QYigpO2U9Zi5QYigpO2lmKCEoUEQoYyk9PT1QRChlKXx8YyE9bnVsbCYmcGIoYyxlKSkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBVNmIoYSxiKXt2YXIgYyxkLGUsZjtmPUJEKEdBYihMQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuYiwxNikpLG5ldyAkNmIpLG5ldyBhN2IpLEJ5YihuZXcgZnpiLG5ldyBkemIsbmV3IEV6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsWyhGeWIoKSxEeWIpXSkpKSwxNSk7Zi5KYyhuZXcgYzdiKTtjPTA7Zm9yKGU9Zi5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDExKTtkLnA9PS0xJiZUNmIoYSxkLGMrKyl9fVxuZnVuY3Rpb24gV3pjKGEpe3N3aXRjaChhLmcpe2Nhc2UgMDpyZXR1cm4gbmV3IEtMYztjYXNlIDE6cmV0dXJuIG5ldyBkSmM7Y2FzZSAyOnJldHVybiBuZXcgdEpjO2Nhc2UgMzpyZXR1cm4gbmV3IENNYztjYXNlIDQ6cmV0dXJuIG5ldyAkSmM7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYignTm8gaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIGZvciB0aGUgbm9kZSBwbGFjZXIgJysoYS5mIT1udWxsP2EuZjonJythLmcpKSk7fX1cbmZ1bmN0aW9uIG5xYyhhKXtzd2l0Y2goYS5nKXtjYXNlIDA6cmV0dXJuIG5ldyBhQ2M7Y2FzZSAxOnJldHVybiBuZXcgVkJjO2Nhc2UgMjpyZXR1cm4gbmV3IGtDYztjYXNlIDM6cmV0dXJuIG5ldyByQ2M7Y2FzZSA0OnJldHVybiBuZXcgZUNjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoJ05vIGltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGN5Y2xlIGJyZWFrZXIgJysoYS5mIT1udWxsP2EuZjonJythLmcpKSk7fX1cbmZ1bmN0aW9uIEhXYygpe0hXYz1jY2I7QldjPW5ldyBOc2QobHJlLG1lYigwKSk7Q1djPW5ldyBOc2QobXJlLDApO3lXYz0ocFdjKCksbVdjKTt4V2M9bmV3IE5zZChucmUseVdjKTttZWIoMCk7d1djPW5ldyBOc2Qob3JlLG1lYigxKSk7RVdjPShzWGMoKSxxWGMpO0RXYz1uZXcgTnNkKHByZSxFV2MpO0dXYz0oZldjKCksZVdjKTtGV2M9bmV3IE5zZChxcmUsR1djKTtBV2M9KGlYYygpLGhYYyk7eldjPW5ldyBOc2QocnJlLEFXYyl9XG5mdW5jdGlvbiBYWGIoYSxiLGMpe3ZhciBkO2Q9bnVsbDshIWImJihkPWIuZCk7aFliKGEsbmV3IGNXYihiLm4uYS1kLmIrYy5hLGIubi5iLWQuZCtjLmIpKTtoWWIoYSxuZXcgY1diKGIubi5hLWQuYitjLmEsYi5uLmIrYi5vLmIrZC5hK2MuYikpO2hZYihhLG5ldyBjV2IoYi5uLmErYi5vLmErZC5jK2MuYSxiLm4uYi1kLmQrYy5iKSk7aFliKGEsbmV3IGNXYihiLm4uYStiLm8uYStkLmMrYy5hLGIubi5iK2Iuby5iK2QuYStjLmIpKX1cbmZ1bmN0aW9uIFQ2YihhLGIsYyl7dmFyIGQsZSxmO2IucD1jO2ZvcihmPXVsKHBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFtuZXcgSjBiKGIpLG5ldyBSMGIoYildKSkpO1FyKGYpOyl7ZD1CRChScihmKSwxMSk7ZC5wPT0tMSYmVDZiKGEsZCxjKX1pZihiLmkuaz09KGowYigpLGcwYikpe2ZvcihlPW5ldyBvbGIoYi5pLmopO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMSk7ZCE9YiYmZC5wPT0tMSYmVDZiKGEsZCxjKX19fVxuZnVuY3Rpb24gclBjKGEpe3ZhciBiLGMsZCxlLGY7ZT1CRChHQWIoSUFiKFVBYihhKSksQnliKG5ldyBmemIsbmV3IGR6YixuZXcgRXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLER5YildKSkpLDE1KTtkPWRtZTtpZihlLmdjKCk+PTIpe2M9ZS5LYygpO2I9RUQoYy5QYigpKTt3aGlsZShjLk9iKCkpe2Y9YjtiPUVEKGMuUGIoKSk7ZD0kd25kLk1hdGgubWluKGQsKHVDYihiKSxiKS0odUNiKGYpLGYpKX19cmV0dXJuIGR9XG5mdW5jdGlvbiBnVWMoYSxiKXt2YXIgYyxkLGUsZixnO2Q9bmV3IFBzYjtHc2IoZCxiLGQuYy5iLGQuYyk7ZG97Yz0oc0NiKGQuYiE9MCksQkQoTnNiKGQsZC5hLmEpLDg2KSk7YS5iW2MuZ109MTtmb3IoZj1Kc2IoYy5kLDApO2YuYiE9Zi5kLmM7KXtlPUJEKFhzYihmKSwxODgpO2c9ZS5jO2EuYltnLmddPT0xP0RzYihhLmEsZSk6YS5iW2cuZ109PTI/KGEuYltnLmddPTEpOkdzYihkLGcsZC5jLmIsZC5jKX19d2hpbGUoZC5iIT0wKX1cbmZ1bmN0aW9uIEp1KGEsYil7dmFyIGMsZCxlO2lmKFBEKGIpPT09UEQoUWIoYSkpKXtyZXR1cm4gdHJ1ZX1pZighSkQoYiwxNSkpe3JldHVybiBmYWxzZX1kPUJEKGIsMTUpO2U9YS5nYygpO2lmKGUhPWQuZ2MoKSl7cmV0dXJuIGZhbHNlfWlmKEpEKGQsNTQpKXtmb3IoYz0wO2M8ZTtjKyspe2lmKCFIYihhLlhiKGMpLGQuWGIoYykpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWVsc2V7cmV0dXJuIGtyKGEuS2MoKSxkLktjKCkpfX1cbmZ1bmN0aW9uIEFhYyhhLGIpe3ZhciBjLGQ7aWYoYS5jLmxlbmd0aCE9MCl7aWYoYS5jLmxlbmd0aD09Mil7emFjKCh0Q2IoMCxhLmMubGVuZ3RoKSxCRChhLmNbMF0sMTApKSwocmJkKCksbmJkKSk7emFjKCh0Q2IoMSxhLmMubGVuZ3RoKSxCRChhLmNbMV0sMTApKSxvYmQpfWVsc2V7Zm9yKGQ9bmV3IG9sYihhKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTApO3phYyhjLGIpfX1hLmM9S0MoU0ksVWhlLDEsMCw1LDEpfX1cbmZ1bmN0aW9uIHVLYyhhKXt2YXIgYixjO2lmKGEuYy5sZW5ndGghPTIpe3Rocm93IHZiYihuZXcgWmRiKCdPcmRlciBvbmx5IGFsbG93ZWQgZm9yIHR3byBwYXRocy4nKSl9Yj0odENiKDAsYS5jLmxlbmd0aCksQkQoYS5jWzBdLDE3KSk7Yz0odENiKDEsYS5jLmxlbmd0aCksQkQoYS5jWzFdLDE3KSk7aWYoYi5kLmkhPWMuYy5pKXthLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2EuY1thLmMubGVuZ3RoXT1jO2EuY1thLmMubGVuZ3RoXT1ifX1cbmZ1bmN0aW9uIEVNYyhhLGIpe3ZhciBjLGQsZSxmLGcsaDtkPW5ldyAkcmI7Zz1HeChuZXcgYW1iKGEuZykpO2ZvcihmPWcuYS5lYygpLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksMTApO2lmKCFlKXtTZGQoYiwnVGhlcmUgYXJlIG5vIGNsYXNzZXMgaW4gYSBiYWxhbmNlZCBsYXlvdXQuJyk7YnJlYWt9aD1hLmpbZS5wXTtjPUJEKFdyYihkLGgpLDE1KTtpZighYyl7Yz1uZXcgUmtiO1hyYihkLGgsYyl9Yy5GYyhlKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIERxZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7aWYoYyl7Zj1jLmEubGVuZ3RoO2Q9bmV3IFlnZShmKTtmb3IoaD0oZC5iLWQuYSkqZC5jPDA/KFhnZSgpLFdnZSk6bmV3IHNoZShkKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwxOSk7aT1acGQoYyxnLmEpO2lmKGkpe2o9ZnRkKF9wZChpLEl0ZSksYik7UmhiKGEuZixqLGkpO2U9VnRlIGluIGkuYTtlJiZMa2QoaixfcGQoaSxWdGUpKTtncmQoaSxqKTtocmQoaSxqKX19fX1cbmZ1bmN0aW9uIG5kYyhhLGIpe3ZhciBjLGQsZSxmLGc7T2RkKGIsJ1BvcnQgc2lkZSBwcm9jZXNzaW5nJywxKTtmb3IoZz1uZXcgb2xiKGEuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2U9QkQobWxiKGcpLDEwKTtvZGMoZSl9Zm9yKGQ9bmV3IG9sYihhLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyOSk7Zm9yKGY9bmV3IG9sYihjLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7b2RjKGUpfX1RZGQoYil9XG5mdW5jdGlvbiBiZmMoYSxiLGMpe3ZhciBkLGUsZixnLGg7ZT1hLmY7IWUmJihlPUJEKGEuYS5hLmVjKCkuS2MoKS5QYigpLDU3KSk7Y2ZjKGUsYixjKTtpZihhLmEuYS5nYygpPT0xKXtyZXR1cm59ZD1iKmM7Zm9yKGc9YS5hLmEuZWMoKS5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDU3KTtpZihmIT1lKXtoPXVnYyhmKTtpZihoLmYuZCl7Zi5kLmQrPWQrcGxlO2YuZC5hLT1kK3BsZX1lbHNlIGguZi5hJiYoZi5kLmEtPWQrcGxlKX19fVxuZnVuY3Rpb24gdFFiKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuO2c9Yy1hO2g9ZC1iO2Y9JHduZC5NYXRoLmF0YW4yKGcsaCk7aT1mK2NtZTtqPWYtY21lO2s9ZSokd25kLk1hdGguc2luKGkpK2E7bT1lKiR3bmQuTWF0aC5jb3MoaSkrYjtsPWUqJHduZC5NYXRoLnNpbihqKSthO249ZSokd25kLk1hdGguY29zKGopK2I7cmV0dXJuIE91KE9DKEdDKG0xLDEpLG5pZSw4LDAsW25ldyBmN2MoayxtKSxuZXcgZjdjKGwsbildKSl9XG5mdW5jdGlvbiBPTGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbDtlPWM7az1iO2Y9aztkb3tmPWEuYVtmLnBdO2g9KGw9YS5nW2YucF0sRWRiKGEucFtsLnBdKStFZGIoYS5kW2YucF0pLWYuZC5kKTtpPVJMYyhmLGQpO2lmKGkpe2c9KGo9YS5nW2kucF0sRWRiKGEucFtqLnBdKStFZGIoYS5kW2kucF0pK2kuby5iK2kuZC5hKTtlPSR3bmQuTWF0aC5taW4oZSxoLShnK2pCYyhhLmssZixpKSkpfX13aGlsZShrIT1mKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFBMYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsO2U9YztrPWI7Zj1rO2Rve2Y9YS5hW2YucF07Zz0obD1hLmdbZi5wXSxFZGIoYS5wW2wucF0pK0VkYihhLmRbZi5wXSkrZi5vLmIrZi5kLmEpO2k9UUxjKGYsZCk7aWYoaSl7aD0oaj1hLmdbaS5wXSxFZGIoYS5wW2oucF0pK0VkYihhLmRbaS5wXSktaS5kLmQpO2U9JHduZC5NYXRoLm1pbihlLGgtKGcrakJjKGEuayxmLGkpKSl9fXdoaWxlKGshPWYpO3JldHVybiBlfVxuZnVuY3Rpb24gaGtkKGEsYil7dmFyIGMsZDtkPSghYS5vJiYoYS5vPW5ldyBkSWQoKFRoZCgpLFFoZCksUzIsYSwwKSksQUFkKGEubyxiKSk7aWYoZCE9bnVsbCl7cmV0dXJuIGR9Yz1iLndnKCk7SkQoYyw0KSYmKGM9PW51bGw/KCFhLm8mJihhLm89bmV3IGRJZCgoVGhkKCksUWhkKSxTMixhLDApKSxMQWQoYS5vLGIpKTooIWEubyYmKGEubz1uZXcgZElkKChUaGQoKSxRaGQpLFMyLGEsMCkpLEhBZChhLm8sYixjKSksYSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBIYmQoKXtIYmQ9Y2NiO3piZD1uZXcgSWJkKCdIX0xFRlQnLDApO3liZD1uZXcgSWJkKCdIX0NFTlRFUicsMSk7QmJkPW5ldyBJYmQoJ0hfUklHSFQnLDIpO0diZD1uZXcgSWJkKCdWX1RPUCcsMyk7RmJkPW5ldyBJYmQoJ1ZfQ0VOVEVSJyw0KTtFYmQ9bmV3IEliZCgnVl9CT1RUT00nLDUpO0NiZD1uZXcgSWJkKCdJTlNJREUnLDYpO0RiZD1uZXcgSWJkKCdPVVRTSURFJyw3KTtBYmQ9bmV3IEliZCgnSF9QUklPUklUWScsOCl9XG5mdW5jdGlvbiBvNmQoYSl7dmFyIGIsYyxkLGUsZixnLGg7Yj1hLkhoKF92ZSk7aWYoYil7aD1HRChBQWQoKCFiLmImJihiLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4NixiKSksYi5iKSwnc2V0dGluZ0RlbGVnYXRlcycpKTtpZihoIT1udWxsKXtjPW5ldyBSa2I7Zm9yKGU9bWZiKGgsJ1xcXFx3KycpLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtjLmNbYy5jLmxlbmd0aF09ZH1yZXR1cm4gY319cmV0dXJuIG1tYigpLG1tYigpLGptYn1cbmZ1bmN0aW9uIHNHYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2lmKCFiLmYpe3Rocm93IHZiYihuZXcgV2RiKCdUaGUgaW5wdXQgZWRnZSBpcyBub3QgYSB0cmVlIGVkZ2UuJykpfWY9bnVsbDtlPU9oZTtmb3IoZD1uZXcgb2xiKGEuZCk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDIxMyk7aD1jLmQ7aT1jLmU7aWYoeEdiKGEsaCxiKSYmIXhHYihhLGksYikpe2c9aS5lLWguZS1jLmE7aWYoZzxlKXtlPWc7Zj1jfX19cmV0dXJuIGZ9XG5mdW5jdGlvbiBxVGIoYSl7dmFyIGIsYyxkLGUsZixnO2lmKGEuZi5lLmMubGVuZ3RoPD0xKXtyZXR1cm59Yj0wO2U9blRiKGEpO2M9UGplO2Rve2I+MCYmKGU9Yyk7Zm9yKGc9bmV3IG9sYihhLmYuZSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDE0NCk7aWYoQ2NiKEREKHZOYihmLChiVGIoKSxVU2IpKSkpKXtjb250aW51ZX1kPW1UYihhLGYpO1A2YyhYNmMoZi5kKSxkKX1jPW5UYihhKX13aGlsZSghcFRiKGEsYisrLGUsYykpfVxuZnVuY3Rpb24gJGFjKGEsYil7dmFyIGMsZCxlO09kZChiLCdMYXllciBjb25zdHJhaW50IHByZXByb2Nlc3NpbmcnLDEpO2M9bmV3IFJrYjtlPW5ldyBCaWIoYS5hLDApO3doaWxlKGUuYjxlLmQuZ2MoKSl7ZD0oc0NiKGUuYjxlLmQuZ2MoKSksQkQoZS5kLlhiKGUuYz1lLmIrKyksMTApKTtpZihaYWMoZCkpe1hhYyhkKTtjLmNbYy5jLmxlbmd0aF09ZDt1aWIoZSl9fWMuYy5sZW5ndGg9PTB8fHlOYihhLCh3dGMoKSxMc2MpLGMpO1FkZChiKX1cbmZ1bmN0aW9uIHNqYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zj1hLmcuYTtnPWEuZy5iO2ZvcihkPW5ldyBvbGIoYS5kKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNzApO2U9Yy5uO2EuYT09KEFqYygpLHhqYyl8fGEuaT09KFVjZCgpLHpjZCk/KGUuYT1mKTphLmE9PXlqY3x8YS5pPT0oVWNkKCksVGNkKT8oZS5hPWYrYS5qLmEtYy5vLmEpOihlLmE9ZisoYS5qLmEtYy5vLmEpLzIpO2UuYj1nO1A2YyhlLGIpO2crPWMuby5iK2EuZX19XG5mdW5jdGlvbiBMU2MoYSxiLGMpe3ZhciBkLGUsZixnO09kZChjLCdQcm9jZXNzb3Igc2V0IGNvb3JkaW5hdGVzJywxKTthLmE9Yi5iLmI9PTA/MTpiLmIuYjtmPW51bGw7ZD1Kc2IoYi5iLDApO3doaWxlKCFmJiZkLmIhPWQuZC5jKXtnPUJEKFhzYihkKSw4Nik7aWYoQ2NiKEREKHZOYihnLChtVGMoKSxqVGMpKSkpKXtmPWc7ZT1nLmU7ZS5hPUJEKHZOYihnLGtUYyksMTkpLmE7ZS5iPTB9fU1TYyhhLFVSYyhmKSxVZGQoYywxKSk7UWRkKGMpfVxuZnVuY3Rpb24geFNjKGEsYixjKXt2YXIgZCxlLGY7T2RkKGMsJ1Byb2Nlc3NvciBkZXRlcm1pbmUgdGhlIGhlaWdodCBmb3IgZWFjaCBsZXZlbCcsMSk7YS5hPWIuYi5iPT0wPzE6Yi5iLmI7ZT1udWxsO2Q9SnNiKGIuYiwwKTt3aGlsZSghZSYmZC5iIT1kLmQuYyl7Zj1CRChYc2IoZCksODYpO0NjYihERCh2TmIoZiwobVRjKCksalRjKSkpKSYmKGU9Zil9ISFlJiZ5U2MoYSxPdShPQyhHQyhxJCwxKSxmbWUsODYsMCxbZV0pKSxjKTtRZGQoYyl9XG5mdW5jdGlvbiBicmQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtqPWE7aT0kcGQoaiwnaW5kaXZpZHVhbFNwYWNpbmdzJyk7aWYoaSl7ZD1pa2QoYiwoWTljKCksTzljKSk7Zz0hZDtpZihnKXtlPW5ldyBfZmQ7amtkKGIsTzljLGUpfWg9QkQoaGtkKGIsTzljKSwzNzMpO2w9aTtmPW51bGw7ISFsJiYoZj0oaz0kQihsLEtDKFpJLG5pZSwyLDAsNiwxKSksbmV3IG1DKGwsaykpKTtpZihmKXtjPW5ldyBGcmQobCxoKTtyZWIoZixjKX19fVxuZnVuY3Rpb24gZnJkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbTtpPW51bGw7bD1hO2s9bnVsbDtpZihjdWUgaW4gbC5hfHxkdWUgaW4gbC5hfHxPdGUgaW4gbC5hKXtqPW51bGw7bT1ldGQoYik7Zz0kcGQobCxjdWUpO2M9bmV3IElyZChtKTtFcWQoYy5hLGcpO2g9JHBkKGwsZHVlKTtkPW5ldyBhc2QobSk7UHFkKGQuYSxoKTtmPVlwZChsLE90ZSk7ZT1uZXcgZHNkKG0pO2o9KFFxZChlLmEsZiksZik7az1qfWk9aztyZXR1cm4gaX1cbmZ1bmN0aW9uICR3KGEsYil7dmFyIGMsZCxlO2lmKGI9PT1hKXtyZXR1cm4gdHJ1ZX1pZihKRChiLDU0Mykpe2U9QkQoYiw4MzUpO2lmKGEuYS5kIT1lLmEuZHx8QWgoYSkuZ2MoKSE9QWgoZSkuZ2MoKSl7cmV0dXJuIGZhbHNlfWZvcihkPUFoKGUpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksNDE2KTtpZihBdyhhLGMuYS5jZCgpKSE9QkQoYy5hLmRkKCksMTQpLmdjKCkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gQk1iKGEpe3ZhciBiLGMsZCxlO2Q9QkQoYS5hLDE5KS5hO2U9QkQoYS5iLDE5KS5hO2I9ZDtjPWU7aWYoZD09MCYmZT09MCl7Yy09MX1lbHNle2lmKGQ9PS0xJiZlPD0wKXtiPTA7Yy09Mn1lbHNle2lmKGQ8PTAmJmU+MCl7Yi09MTtjLT0xfWVsc2V7aWYoZD49MCYmZTwwKXtiKz0xO2MrPTF9ZWxzZXtpZihkPjAmJmU+PTApe2ItPTE7Yys9MX1lbHNle2IrPTE7Yy09MX19fX19cmV0dXJuIG5ldyB2Z2QobWViKGIpLG1lYihjKSl9XG5mdW5jdGlvbiBQSWMoYSxiKXtpZihhLmM8Yi5jKXtyZXR1cm4gLTF9ZWxzZSBpZihhLmM+Yi5jKXtyZXR1cm4gMX1lbHNlIGlmKGEuYjxiLmIpe3JldHVybiAtMX1lbHNlIGlmKGEuYj5iLmIpe3JldHVybiAxfWVsc2UgaWYoYS5hIT1iLmEpe3JldHVybiB0YihhLmEpLXRiKGIuYSl9ZWxzZSBpZihhLmQ9PShVSWMoKSxUSWMpJiZiLmQ9PVNJYyl7cmV0dXJuIC0xfWVsc2UgaWYoYS5kPT1TSWMmJmIuZD09VEljKXtyZXR1cm4gMX1yZXR1cm4gMH1cbmZ1bmN0aW9uIGFOYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zj1iLmE7Zi5jLmk9PWIuYj8oZz1mLmQpOihnPWYuYyk7Zi5jLmk9PWIuYj8oZD1mLmMpOihkPWYuZCk7ZT1OTGMoYS5hLGcsZCk7aWYoZT4wJiZlPGRtZSl7Yz1PTGMoYS5hLGQuaSxlLGEuYyk7VExjKGEuYSxkLmksLWMpO3JldHVybiBjPjB9ZWxzZSBpZihlPDAmJi1lPGRtZSl7Yz1QTGMoYS5hLGQuaSwtZSxhLmMpO1RMYyhhLmEsZC5pLGMpO3JldHVybiBjPjB9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gUlpjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGw7ZT0oYi1hLmQpL2EuYy5jLmxlbmd0aDtmPTA7YS5hKz1jO2EuZD1iO2ZvcihsPW5ldyBvbGIoYS5jKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMzMpO2o9ay5nO2k9ay5mO2RsZChrLGsuaStmKmUpO2VsZChrLGsuaitkKmMpO2NsZChrLGsuZytlKTthbGQoayxhLmEpOysrZjtoPWsuZztnPWsuZjtGZmQoayxuZXcgZjdjKGgsZyksbmV3IGY3YyhqLGkpKX19XG5mdW5jdGlvbiBYbWQoYSl7dmFyIGIsYyxkLGUsZixnLGg7aWYoYT09bnVsbCl7cmV0dXJuIG51bGx9aD1hLmxlbmd0aDtlPShoKzEpLzJ8MDtnPUtDKFNELHd0ZSwyNSxlLDE1LDEpO2glMiE9MCYmKGdbLS1lXT1qbmQoKEJDYihoLTEsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChoLTEpKSkpO2ZvcihjPTAsZD0wO2M8ZTsrK2Mpe2I9am5kKGJmYihhLGQrKykpO2Y9am5kKGJmYihhLGQrKykpO2dbY109KGI8PDR8Zik8PDI0Pj4yNH1yZXR1cm4gZ31cbmZ1bmN0aW9uIHZkYihhKXtpZihhLnBlKCkpe3ZhciBiPWEuYztiLnFlKCk/KGEubz0nWycrYi5uKTohYi5wZSgpPyhhLm89J1tMJytiLm5lKCkrJzsnKTooYS5vPSdbJytiLm5lKCkpO2EuYj1iLm1lKCkrJ1tdJzthLms9Yi5vZSgpKydbXSc7cmV0dXJufXZhciBjPWEuajt2YXIgZD1hLmQ7ZD1kLnNwbGl0KCcvJyk7YS5vPXlkYignLicsW2MseWRiKCckJyxkKV0pO2EuYj15ZGIoJy4nLFtjLHlkYignLicsZCldKTthLms9ZFtkLmxlbmd0aC0xXX1cbmZ1bmN0aW9uIHFHYihhLGIpe3ZhciBjLGQsZSxmLGc7Zz1udWxsO2ZvcihmPW5ldyBvbGIoYS5lLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMjEpO2lmKGUuYi5hLmMubGVuZ3RoPT1lLmcuYS5jLmxlbmd0aCl7ZD1lLmU7Zz1CR2IoZSk7Zm9yKGM9ZS5lLUJEKGcuYSwxOSkuYSsxO2M8ZS5lK0JEKGcuYiwxOSkuYTtjKyspe2JbY108YltkXSYmKGQ9Yyl9aWYoYltkXTxiW2UuZV0pey0tYltlLmVdOysrYltkXTtlLmU9ZH19fX1cbmZ1bmN0aW9uIFNMYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2U9UGplO2Q9UWplO2ZvcihjPW5ldyBvbGIoYS5lLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyOSk7Zm9yKGc9bmV3IG9sYihiLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMCk7aT1FZGIoYS5wW2YucF0pO2g9aStFZGIoYS5iW2EuZ1tmLnBdLnBdKTtlPSR3bmQuTWF0aC5taW4oZSxpKTtkPSR3bmQuTWF0aC5tYXgoZCxoKX19cmV0dXJuIGQtZX1cbmZ1bmN0aW9uIHIxZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo7aT1udWxsO2U9ZjFkKGEsYik7Zm9yKGg9MCxqPWUuZ2MoKTtoPGo7KytoKXtmPUJEKGUuWGIoaCksMTcwKTtpZihkZmIoZCxhMmQocTFkKGEsZikpKSl7Zz1iMmQocTFkKGEsZikpO2lmKGM9PW51bGwpe2lmKGc9PW51bGwpe3JldHVybiBmfWVsc2UgIWkmJihpPWYpfWVsc2UgaWYoZGZiKGMsZykpe3JldHVybiBmfWVsc2UgZz09bnVsbCYmIWkmJihpPWYpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHMxZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo7aT1udWxsO2U9ZzFkKGEsYik7Zm9yKGg9MCxqPWUuZ2MoKTtoPGo7KytoKXtmPUJEKGUuWGIoaCksMTcwKTtpZihkZmIoZCxhMmQocTFkKGEsZikpKSl7Zz1iMmQocTFkKGEsZikpO2lmKGM9PW51bGwpe2lmKGc9PW51bGwpe3JldHVybiBmfWVsc2UgIWkmJihpPWYpfWVsc2UgaWYoZGZiKGMsZykpe3JldHVybiBmfWVsc2UgZz09bnVsbCYmIWkmJihpPWYpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIHAzZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2c9bmV3IHl1ZDtoPVM2ZChhLmUuVGcoKSxiKTtkPUJEKGEuZywxMTkpO1E2ZCgpO2lmKEJEKGIsNjYpLk9qKCkpe2ZvcihmPTA7ZjxhLmk7KytmKXtlPWRbZl07aC5ybChlLmFrKCkpJiZ3dGQoZyxlKX19ZWxzZXtmb3IoZj0wO2Y8YS5pOysrZil7ZT1kW2ZdO2lmKGgucmwoZS5haygpKSl7aT1lLmRkKCk7d3RkKGcsYz9iM2QoYSxiLGYsZy5pLGkpOmkpfX19cmV0dXJuIHd1ZChnKX1cbmZ1bmN0aW9uIFQ5YihhLGIpe3ZhciBjLGQsZSxmLGc7Yz1uZXcgUnBiKEVXKTtmb3IoZT0oQXBjKCksT0MoR0MoRVcsMSksS2llLDIyNywwLFt3cGMseXBjLHZwYyx4cGMsenBjLHVwY10pKSxmPTAsZz1lLmxlbmd0aDtmPGc7KytmKXtkPWVbZl07T3BiKGMsZCxuZXcgUmtiKX1NQWIoTkFiKEpBYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5iLDE2KSksbmV3IGhhYyksbmV3IGphYyksbmV3IGxhYyhiKSksbmV3IG5hYyhjKSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBBVmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtO2ZvcihmPWIuS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSwzMyk7az1lLmkrZS5nLzI7bT1lLmorZS5mLzI7aT1hLmY7Zz1pLmkraS5nLzI7aD1pLmoraS5mLzI7aj1rLWc7bD1tLWg7ZD0kd25kLk1hdGguc3FydChqKmorbCpsKTtqKj1hLmUvZDtsKj1hLmUvZDtpZihjKXtrLT1qO20tPWx9ZWxzZXtrKz1qO20rPWx9ZGxkKGUsay1lLmcvMik7ZWxkKGUsbS1lLmYvMil9fVxuZnVuY3Rpb24gWWZlKGEpe3ZhciBiLGMsZDtpZihhLmMpcmV0dXJuO2lmKGEuYj09bnVsbClyZXR1cm47Zm9yKGI9YS5iLmxlbmd0aC00O2I+PTA7Yi09Mil7Zm9yKGM9MDtjPD1iO2MrPTIpe2lmKGEuYltjXT5hLmJbYysyXXx8YS5iW2NdPT09YS5iW2MrMl0mJmEuYltjKzFdPmEuYltjKzNdKXtkPWEuYltjKzJdO2EuYltjKzJdPWEuYltjXTthLmJbY109ZDtkPWEuYltjKzNdO2EuYltjKzNdPWEuYltjKzFdO2EuYltjKzFdPWR9fX1hLmM9dHJ1ZX1cbmZ1bmN0aW9uIFVVYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7Zz1iPT0xP0tVYjpKVWI7Zm9yKGY9Zy5hLmVjKCkuS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSwxMDMpO2ZvcihpPUJEKFFjKGEuZi5jLGUpLDIxKS5LYygpO2kuT2IoKTspe2g9QkQoaS5QYigpLDQ2KTtkPUJEKGguYiw4MSk7aj1CRChoLmEsMTg5KTtjPWouYztzd2l0Y2goZS5nKXtjYXNlIDI6Y2FzZSAxOmQuZy5kKz1jO2JyZWFrO2Nhc2UgNDpjYXNlIDM6ZC5nLmMrPWM7fX19fVxuZnVuY3Rpb24gUEZjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO2o9LTE7az0wO2ZvcihnPWEsaD0wLGk9Zy5sZW5ndGg7aDxpOysraCl7Zj1nW2hdO2M9bmV3IERuYyhqPT0tMT9hWzBdOmFbal0sYiwoeHpjKCksd3pjKSk7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyl7Zm9yKGU9ZCsxO2U8Zi5sZW5ndGg7ZSsrKXt3TmIoZltkXSwod3RjKCksWnNjKSkmJndOYihmW2VdLFpzYykmJnluYyhjLGZbZF0sZltlXSk+MCYmKytrfX0rK2p9cmV0dXJuIGt9XG5mdW5jdGlvbiBFaWQoYSl7dmFyIGIsYztjPW5ldyBXZmIoaGRiKGEuZ20pKTtjLmErPSdAJztRZmIoYywoYj10YihhKT4+PjAsYi50b1N0cmluZygxNikpKTtpZihhLmtoKCkpe2MuYSs9JyAoZVByb3h5VVJJOiAnO1BmYihjLGEucWgoKSk7aWYoYS4kZygpKXtjLmErPScgZUNsYXNzOiAnO1BmYihjLGEuJGcoKSl9Yy5hKz0nKSd9ZWxzZSBpZihhLiRnKCkpe2MuYSs9JyAoZUNsYXNzOiAnO1BmYihjLGEuJGcoKSk7Yy5hKz0nKSd9cmV0dXJuIGMuYX1cbmZ1bmN0aW9uIFREYihhKXt2YXIgYixjLGQsZTtpZihhLmUpe3Rocm93IHZiYihuZXcgWmRiKChmZGIoVE0pLEprZStUTS5rK0trZSkpKX1hLmQ9PShlYWQoKSxjYWQpJiZTRGIoYSxhYWQpO2ZvcihjPW5ldyBvbGIoYS5hLmEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwzMDcpO2IuZz1iLml9Zm9yKGU9bmV3IG9sYihhLmEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDU3KTtkLmk9UWplfWEuYi5MZShhKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFRQYyhhLGIpe3ZhciBjLGQsZSxmLGc7aWYoYjwyKmEuYil7dGhyb3cgdmJiKG5ldyBXZGIoJ1RoZSBrbm90IHZlY3RvciBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIHRpbWUgdGhlIGRpbWVuc2lvbiBlbGVtZW50cy4nKSl9YS5mPTE7Zm9yKGU9MDtlPGEuYjtlKyspe0VrYihhLmUsMCl9Zz1iKzEtMiphLmI7Yz1nO2ZvcihmPTE7ZjxnO2YrKyl7RWtiKGEuZSxmL2MpfWlmKGEuZCl7Zm9yKGQ9MDtkPGEuYjtkKyspe0VrYihhLmUsMSl9fX1cbmZ1bmN0aW9uIGFyZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztqPWI7az1CRChfbyhxbyhhLmkpLGopLDMzKTtpZighayl7ZT1fcGQoaixWdGUpO2g9XCJVbmFibGUgdG8gZmluZCBlbGsgbm9kZSBmb3IganNvbiBvYmplY3QgJ1wiK2U7aT1oK1wiJyBQYW5pYyFcIjt0aHJvdyB2YmIobmV3IGNxZChpKSl9Zj1ZcGQoaiwnZWRnZXMnKTtjPW5ldyBrcmQoYSxrKTttcWQoYy5hLGMuYixmKTtnPVlwZChqLEp0ZSk7ZD1uZXcgdnJkKGEpO3hxZChkLmEsZyl9XG5mdW5jdGlvbiB4QWQoYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtpZihkIT1udWxsKXtlPWEuZFtiXTtpZihlKXtmPWUuZztpPWUuaTtmb3IoaD0wO2g8aTsrK2gpe2c9QkQoZltoXSwxMzMpO2lmKGcuU2goKT09YyYmcGIoZCxnLmNkKCkpKXtyZXR1cm4gaH19fX1lbHNle2U9YS5kW2JdO2lmKGUpe2Y9ZS5nO2k9ZS5pO2ZvcihoPTA7aDxpOysraCl7Zz1CRChmW2hdLDEzMyk7aWYoUEQoZy5jZCgpKT09PVBEKGQpKXtyZXR1cm4gaH19fX1yZXR1cm4gLTF9XG5mdW5jdGlvbiBuVWQoYSxiKXt2YXIgYyxkLGU7Yz1iPT1udWxsP1dkKGlyYihhLmYsbnVsbCkpOkNyYihhLmcsYik7aWYoSkQoYywyMzUpKXtlPUJEKGMsMjM1KTtlLlFoKCk9PW51bGwmJnVuZGVmaW5lZDtyZXR1cm4gZX1lbHNlIGlmKEpEKGMsNDk4KSl7ZD1CRChjLDE5MzgpO2U9ZC5hOyEhZSYmKGUueWI9PW51bGw/dW5kZWZpbmVkOmI9PW51bGw/anJiKGEuZixudWxsLGUpOkRyYihhLmcsYixlKSk7cmV0dXJuIGV9ZWxzZXtyZXR1cm4gbnVsbH19XG5mdW5jdGlvbiBpZGUoYSl7aGRlKCk7dmFyIGIsYyxkLGUsZixnLGg7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtlPWEubGVuZ3RoO2lmKGUlMiE9MClyZXR1cm4gbnVsbDtiPXJmYihhKTtmPWUvMnwwO2M9S0MoU0Qsd3RlLDI1LGYsMTUsMSk7Zm9yKGQ9MDtkPGY7ZCsrKXtnPWZkZVtiW2QqMl1dO2lmKGc9PS0xKXJldHVybiBudWxsO2g9ZmRlW2JbZCoyKzFdXTtpZihoPT0tMSlyZXR1cm4gbnVsbDtjW2RdPShnPDw0fGgpPDwyND4+MjR9cmV0dXJuIGN9XG5mdW5jdGlvbiBsS2IoYSxiLGMpe3ZhciBkLGUsZjtlPUJEKE1wYihhLmksYiksMzA2KTtpZighZSl7ZT1uZXcgYkliKGEuZCxiLGMpO05wYihhLmksYixlKTtpZihzSmIoYikpe0NIYihhLmEsYi5jLGIuYixlKX1lbHNle2Y9ckpiKGIpO2Q9QkQoTXBiKGEucCxmKSwyNDQpO3N3aXRjaChmLmcpe2Nhc2UgMTpjYXNlIDM6ZS5qPXRydWU7bEliKGQsYi5iLGUpO2JyZWFrO2Nhc2UgNDpjYXNlIDI6ZS5rPXRydWU7bEliKGQsYi5jLGUpO319fXJldHVybiBlfVxuZnVuY3Rpb24gcjNkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtoPW5ldyB5dWQ7aT1TNmQoYS5lLlRnKCksYik7ZT1CRChhLmcsMTE5KTtRNmQoKTtpZihCRChiLDY2KS5PaigpKXtmb3IoZz0wO2c8YS5pOysrZyl7Zj1lW2ddO2kucmwoZi5haygpKSYmd3RkKGgsZil9fWVsc2V7Zm9yKGc9MDtnPGEuaTsrK2cpe2Y9ZVtnXTtpZihpLnJsKGYuYWsoKSkpe2o9Zi5kZCgpO3d0ZChoLGQ/YjNkKGEsYixnLGguaSxqKTpqKX19fXJldHVybiB4dWQoaCxjKX1cbmZ1bmN0aW9uIFlDYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7ZT1hLmJbYi5wXTtpZihlPj0wKXtyZXR1cm4gZX1lbHNle2Y9MTtmb3IoaD1uZXcgb2xiKGIuaik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDExKTtmb3IoZD1uZXcgb2xiKGcuZyk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE3KTtqPWMuZC5pO2lmKGIhPWope2k9WUNjKGEsaik7Zj0kd25kLk1hdGgubWF4KGYsaSsxKX19fVhDYyhhLGIsZik7cmV0dXJuIGZ9fVxuZnVuY3Rpb24gWUdjKGEsYixjKXt2YXIgZCxlLGY7Zm9yKGQ9MTtkPGEuYy5sZW5ndGg7ZCsrKXtmPSh0Q2IoZCxhLmMubGVuZ3RoKSxCRChhLmNbZF0sMTApKTtlPWQ7d2hpbGUoZT4wJiZiLnVlKCh0Q2IoZS0xLGEuYy5sZW5ndGgpLEJEKGEuY1tlLTFdLDEwKSksZik+MCl7TmtiKGEsZSwodENiKGUtMSxhLmMubGVuZ3RoKSxCRChhLmNbZS0xXSwxMCkpKTstLWV9dENiKGUsYS5jLmxlbmd0aCk7YS5jW2VdPWZ9Yy5hPW5ldyBMcWI7Yy5iPW5ldyBMcWJ9XG5mdW5jdGlvbiBuNWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7az0oZD1CRChiLmUmJmIuZSgpLDkpLG5ldyB4cWIoZCxCRChfQmIoZCxkLmxlbmd0aCksOSksMCkpO2k9bWZiKGMsJ1tcXFxcW1xcXFxdXFxcXHMsXSsnKTtmb3IoZj1pLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpe2U9ZltnXTtpZih1ZmIoZSkubGVuZ3RoPT0wKXtjb250aW51ZX1qPW01YyhhLGUpO2lmKGo9PW51bGwpe3JldHVybiBudWxsfWVsc2V7cnFiKGssQkQoaiwyMikpfX1yZXR1cm4ga31cbmZ1bmN0aW9uIEtWYihhKXt2YXIgYixjLGQ7Zm9yKGM9bmV3IG9sYihhLmEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksODEpO2Q9KHVDYigwKSwwKTtpZihkPjApeyEoZmFkKGEuYS5jKSYmYi5uLmQpJiYhKGdhZChhLmEuYykmJmIubi5iKSYmKGIuZy5kLT0kd25kLk1hdGgubWF4KDAsZC8yLTAuNSkpOyEoZmFkKGEuYS5jKSYmYi5uLmEpJiYhKGdhZChhLmEuYykmJmIubi5jKSYmKGIuZy5hKz0kd25kLk1hdGgubWF4KDAsZC0xKSl9fX1cbmZ1bmN0aW9uIEhhYyhhLGIsYyl7dmFyIGQsZTtpZigoYS5jLWEuYiZhLmEubGVuZ3RoLTEpPT0yKXtpZihiPT0oVWNkKCksQWNkKXx8Yj09emNkKXt4YWMoQkQoYmtiKGEpLDE1KSwocmJkKCksbmJkKSk7eGFjKEJEKGJrYihhKSwxNSksb2JkKX1lbHNle3hhYyhCRChia2IoYSksMTUpLChyYmQoKSxvYmQpKTt4YWMoQkQoYmtiKGEpLDE1KSxuYmQpfX1lbHNle2ZvcihlPW5ldyB4a2IoYSk7ZS5hIT1lLmI7KXtkPUJEKHZrYihlKSwxNSk7eGFjKGQsYyl9fX1cbmZ1bmN0aW9uIGh0ZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2U9TnUobmV3IHF0ZChhKSk7aD1uZXcgQmliKGUsZS5jLmxlbmd0aCk7Zj1OdShuZXcgcXRkKGIpKTtpPW5ldyBCaWIoZixmLmMubGVuZ3RoKTtnPW51bGw7d2hpbGUoaC5iPjAmJmkuYj4wKXtjPShzQ2IoaC5iPjApLEJEKGguYS5YYihoLmM9LS1oLmIpLDMzKSk7ZD0oc0NiKGkuYj4wKSxCRChpLmEuWGIoaS5jPS0taS5iKSwzMykpO2lmKGM9PWQpe2c9Y31lbHNle2JyZWFrfX1yZXR1cm4gZ31cbmZ1bmN0aW9uIEN1YihhLGIpe3ZhciBjLGQsZSxmLGcsaDtmPWEuYSpra2UrYS5iKjE1MDI7aD1hLmIqa2tlKzExO2M9JHduZC5NYXRoLmZsb29yKGgqbGtlKTtmKz1jO2gtPWMqbWtlO2YlPW1rZTthLmE9ZjthLmI9aDtpZihiPD0yNCl7cmV0dXJuICR3bmQuTWF0aC5mbG9vcihhLmEqd3ViW2JdKX1lbHNle2U9YS5hKigxPDxiLTI0KTtnPSR3bmQuTWF0aC5mbG9vcihhLmIqeHViW2JdKTtkPWUrZztkPj0yMTQ3NDgzNjQ4JiYoZC09WmplKTtyZXR1cm4gZH19XG5mdW5jdGlvbiBaaWMoYSxiLGMpe3ZhciBkLGUsZixnO2lmKGJqYyhhLGIpPmJqYyhhLGMpKXtkPVZfYihjLChVY2QoKSx6Y2QpKTthLmQ9ZC5kYygpPzA6QjBiKEJEKGQuWGIoMCksMTEpKTtnPVZfYihiLFRjZCk7YS5iPWcuZGMoKT8wOkIwYihCRChnLlhiKDApLDExKSl9ZWxzZXtlPVZfYihjLChVY2QoKSxUY2QpKTthLmQ9ZS5kYygpPzA6QjBiKEJEKGUuWGIoMCksMTEpKTtmPVZfYihiLHpjZCk7YS5iPWYuZGMoKT8wOkIwYihCRChmLlhiKDApLDExKSl9fVxuZnVuY3Rpb24gbDZkKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKGEpe2I9YS5IaChfdmUpO2lmKGIpe2c9R0QoQUFkKCghYi5iJiYoYi5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYikpLGIuYiksJ2NvbnZlcnNpb25EZWxlZ2F0ZXMnKSk7aWYoZyE9bnVsbCl7aD1uZXcgUmtiO2ZvcihkPW1mYihnLCdcXFxcdysnKSxlPTAsZj1kLmxlbmd0aDtlPGY7KytlKXtjPWRbZV07aC5jW2guYy5sZW5ndGhdPWN9cmV0dXJuIGh9fX1yZXR1cm4gbW1iKCksbW1iKCksam1ifVxuZnVuY3Rpb24gRktiKGEsYil7dmFyIGMsZCxlLGY7Yz1hLm8uYTtmb3IoZj1CRChCRChRYyhhLnIsYiksMjEpLDg0KS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDExMSk7ZS5lLmE9YypFZGIoRUQoZS5iLldlKEJLYikpKTtlLmUuYj0oZD1lLmIsZC5YZSgoWTljKCksczljKSk/ZC5IZigpPT0oVWNkKCksQWNkKT8tZC5yZigpLmItRWRiKEVEKGQuV2UoczljKSkpOkVkYihFRChkLldlKHM5YykpKTpkLkhmKCk9PShVY2QoKSxBY2QpPy1kLnJmKCkuYjowKX19XG5mdW5jdGlvbiBXb2MoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtiPXRydWU7ZT1udWxsO2Y9bnVsbDtqOmZvcihpPW5ldyBvbGIoYS5hKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTApO2ZvcihkPW5ldyBTcih1cihSX2IoaCkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7aWYoISFlJiZlIT1oKXtiPWZhbHNlO2JyZWFrIGp9ZT1oO2c9Yy5jLmk7aWYoISFmJiZmIT1nKXtiPWZhbHNlO2JyZWFrIGp9Zj1nfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIE9PYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2Y9LTE7aD0tMTtmb3IoZz0wO2c8Yi5jLmxlbmd0aDtnKyspe2U9KHRDYihnLGIuYy5sZW5ndGgpLEJEKGIuY1tnXSwzMjkpKTtpZihlLmM+YS5jKXticmVha31lbHNlIGlmKGUuYT49YS5zKXtmPDAmJihmPWcpO2g9Z319aT0oYS5zK2EuYykvMjtpZihmPj0wKXtkPU5PYyhhLGIsZixoKTtpPSRPYygodENiKGQsYi5jLmxlbmd0aCksQkQoYi5jW2RdLDMyOSkpKTtZT2MoYixkLGMpfXJldHVybiBpfVxuZnVuY3Rpb24gbFpjKCl7bFpjPWNjYjtSWWM9bmV3IE9zZCgoWTljKCkscjhjKSwxLjMpO1ZZYz1JOGM7Z1pjPW5ldyBxMGIoMTUpO2ZaYz1uZXcgT3NkKGY5YyxnWmMpO2paYz1uZXcgT3NkKFQ5YywxNSk7U1ljPXc4YztfWWM9WThjO2FaYz1fOGM7YlpjPWI5YzskWWM9VzhjO2NaYz1lOWM7aFpjPXg5YztlWmM9KE9ZYygpLEtZYyk7WlljPUlZYztkWmM9SlljO2laYz1NWWM7V1ljPUhZYztYWWM9TzhjO1lZYz1QOGM7VVljPUdZYztUWWM9RlljO2taYz1OWWN9XG5mdW5jdGlvbiBCbmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqO2c9KGY9bmV3IFJIZCxmKTtQSGQoZywodUNiKGIpLGIpKTtqPSghZy5iJiYoZy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsZykpLGcuYik7Zm9yKGk9MTtpPGMubGVuZ3RoO2krPTIpe0hBZChqLGNbaS0xXSxjW2ldKX1kPSghYS5BYiYmKGEuQWI9bmV3IGNVZChhNSxhLDAsMykpLGEuQWIpO2ZvcihoPTA7aDwwOysraCl7ZT1MSGQoQkQocXVkKGQsZC5pLTEpLDU5MCkpO2Q9ZX13dGQoZCxnKX1cbmZ1bmN0aW9uIE1QYihhLGIsYyl7dmFyIGQsZSxmO3NOYi5jYWxsKHRoaXMsbmV3IFJrYik7dGhpcy5hPWI7dGhpcy5iPWM7dGhpcy5lPWE7ZD0oYS5iJiZMT2IoYSksYS5hKTt0aGlzLmQ9S1BiKGQuYSx0aGlzLmEpO3RoaXMuYz1LUGIoZC5iLHRoaXMuYik7a05iKHRoaXMsdGhpcy5kLHRoaXMuYyk7TFBiKHRoaXMpO2ZvcihmPXRoaXMuZS5lLmEuZWMoKS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDI2Nik7ZS5jLmMubGVuZ3RoPjAmJkpQYih0aGlzLGUpfX1cbmZ1bmN0aW9uIElRYihhLGIsYyxkLGUsZil7dmFyIGcsaCxpO2lmKCFlW2IuYl0pe2VbYi5iXT10cnVlO2c9ZDshZyYmKGc9bmV3IGtSYik7RWtiKGcuZSxiKTtmb3IoaT1mW2IuYl0uS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwyODIpO2lmKGguZD09Y3x8aC5jPT1jKXtjb250aW51ZX1oLmMhPWImJklRYihhLGguYyxiLGcsZSxmKTtoLmQhPWImJklRYihhLGguZCxiLGcsZSxmKTtFa2IoZy5jLGgpO0drYihnLmQsaC5iKX1yZXR1cm4gZ31yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGU0YihhKXt2YXIgYixjLGQsZSxmLGcsaDtiPTA7Zm9yKGU9bmV3IG9sYihhLmUpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7Yz1GQWIobmV3IFlBYihudWxsLG5ldyBLdWIoZC5iLDE2KSksbmV3IHc0Yik7YyYmKytifWZvcihnPW5ldyBvbGIoYS5nKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTcpO2g9RkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGYuYiwxNikpLG5ldyB5NGIpO2gmJisrYn1yZXR1cm4gYj49Mn1cbmZ1bmN0aW9uIGdlYyhhLGIpe3ZhciBjLGQsZSxmO09kZChiLCdTZWxmLUxvb3AgcHJlLXByb2Nlc3NpbmcnLDEpO2ZvcihkPW5ldyBvbGIoYS5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTApO2lmKExqYyhjKSl7ZT0oZj1uZXcgS2pjKGMpLHlOYihjLCh3dGMoKSxudGMpLGYpLEhqYyhmKSxmKTtNQWIoTkFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihlLmQsMTYpKSxuZXcgamVjKSxuZXcgbGVjKSxuZXcgbmVjKTtlZWMoZSl9fVFkZChiKX1cbmZ1bmN0aW9uIHZuYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosaztmPWEuYy5kLmo7Zz1CRChVdChjLDApLDgpO2ZvcihrPTE7azxjLmI7aysrKXtqPUJEKFV0KGMsayksOCk7R3NiKGQsZyxkLmMuYixkLmMpO2g9WTZjKFA2YyhuZXcgZzdjKGcpLGopLDAuNSk7aT1ZNmMobmV3IGU3YyhiUmMoZikpLGUpO1A2YyhoLGkpO0dzYihkLGgsZC5jLmIsZC5jKTtnPWo7Zj1iPT0wP1hjZChmKTpWY2QoZil9RHNiKGQsKHNDYihjLmIhPTApLEJEKGMuYy5iLmMsOCkpKX1cbmZ1bmN0aW9uIEpiZChhKXtIYmQoKTt2YXIgYixjLGQ7Yz1xcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtEYmRdKSk7aWYoT3goQ3goYyxhKSk+MSl7cmV0dXJuIGZhbHNlfWI9cXFiKHpiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbeWJkLEJiZF0pKTtpZihPeChDeChiLGEpKT4xKXtyZXR1cm4gZmFsc2V9ZD1xcWIoR2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtGYmQsRWJkXSkpO2lmKE94KEN4KGQsYSkpPjEpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIFUwZChhLGIpe3ZhciBjLGQsZTtjPWIuSGgoYS5hKTtpZihjKXtlPUdEKEFBZCgoIWMuYiYmKGMuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGMpKSxjLmIpLCdhZmZpbGlhdGlvbicpKTtpZihlIT1udWxsKXtkPWtmYihlLHdmYigzNSkpO3JldHVybiBkPT0tMT9sMWQoYSx1MWQoYSxiS2QoYi5IaigpKSksZSk6ZD09MD9sMWQoYSxudWxsLGUuc3Vic3RyKDEpKTpsMWQoYSxlLnN1YnN0cigwLGQpLGUuc3Vic3RyKGQrMSkpfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGljKGIpe3ZhciBjLGQsZTt0cnl7cmV0dXJuIGI9PW51bGw/WGhlOmZjYihiKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEwMikpe2M9YTtlPWhkYihyYihiKSkrJ0AnKyhkPShaZmIoKSxrQ2IoYikpPj4+MCxkLnRvU3RyaW5nKDE2KSk7dHliKHh5YigpLCgkeGIoKSwnRXhjZXB0aW9uIGR1cmluZyBsZW5pZW50Rm9ybWF0IGZvciAnK2UpLGMpO3JldHVybiAnPCcrZSsnIHRocmV3ICcraGRiKGMuZ20pKyc+J31lbHNlIHRocm93IHZiYihhKX19XG5mdW5jdGlvbiBtemMoYSl7c3dpdGNoKGEuZyl7Y2FzZSAwOnJldHVybiBuZXcgeERjO2Nhc2UgMTpyZXR1cm4gbmV3IFpDYztjYXNlIDI6cmV0dXJuIG5ldyBEQ2M7Y2FzZSAzOnJldHVybiBuZXcgUUNjO2Nhc2UgNDpyZXR1cm4gbmV3IExEYztjYXNlIDU6cmV0dXJuIG5ldyBpRGM7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYignTm8gaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIGZvciB0aGUgbGF5ZXJlciAnKyhhLmYhPW51bGw/YS5mOicnK2EuZykpKTt9fVxuZnVuY3Rpb24gQVFjKGEsYixjKXt2YXIgZCxlLGY7Zm9yKGY9bmV3IG9sYihhLnQpO2YuYTxmLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihmKSwyNjgpO2lmKGQuYi5zPDAmJmQuYz4wKXtkLmIubi09ZC5jO2QuYi5uPD0wJiZkLmIudT4wJiZEc2IoYixkLmIpfX1mb3IoZT1uZXcgb2xiKGEuaSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI2OCk7aWYoZC5hLnM8MCYmZC5jPjApe2QuYS51LT1kLmM7ZC5hLnU8PTAmJmQuYS5uPjAmJkRzYihjLGQuYSl9fX1cbmZ1bmN0aW9uIFZ1ZChhKXt2YXIgYixjLGQsZSxmO2lmKGEuZz09bnVsbCl7YS5kPWEuc2koYS5mKTt3dGQoYSxhLmQpO2lmKGEuYyl7Zj1hLmY7cmV0dXJuIGZ9fWI9QkQoYS5nW2EuaS0xXSw0Nyk7ZT1iLlBiKCk7YS5lPWI7Yz1hLnNpKGUpO2lmKGMuT2IoKSl7YS5kPWM7d3RkKGEsYyl9ZWxzZXthLmQ9bnVsbDt3aGlsZSghYi5PYigpKXtOQyhhLmcsLS1hLmksbnVsbCk7aWYoYS5pPT0wKXticmVha31kPUJEKGEuZ1thLmktMV0sNDcpO2I9ZH19cmV0dXJuIGV9XG5mdW5jdGlvbiByMmQoYSxiKXt2YXIgYyxkLGUsZixnLGg7ZD1iO2U9ZC5haygpO2lmKFQ2ZChhLmUsZSkpe2lmKGUuaGkoKSYmRTJkKGEsZSxkLmRkKCkpKXtyZXR1cm4gZmFsc2V9fWVsc2V7aD1TNmQoYS5lLlRnKCksZSk7Yz1CRChhLmcsMTE5KTtmb3IoZj0wO2Y8YS5pOysrZil7Zz1jW2ZdO2lmKGgucmwoZy5haygpKSl7aWYocGIoZyxkKSl7cmV0dXJuIGZhbHNlfWVsc2V7QkQoR3RkKGEsZixiKSw3Mik7cmV0dXJuIHRydWV9fX19cmV0dXJuIHd0ZChhLGIpfVxuZnVuY3Rpb24gcjliKGEsYixjLGQpe3ZhciBlLGYsZyxoO2U9bmV3IGIwYihhKTtfX2IoZSwoajBiKCksZjBiKSk7eU5iKGUsKHd0YygpLCRzYyksYik7eU5iKGUsa3RjLGQpO3lOYihlLChOeWMoKSxWeGMpLChkY2QoKSwkYmQpKTt5TmIoZSxWc2MsYi5jKTt5TmIoZSxXc2MsYi5kKTt6YmMoYixlKTtoPSR3bmQuTWF0aC5mbG9vcihjLzIpO2ZvcihnPW5ldyBvbGIoZS5qKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTEpO2Yubi5iPWh9cmV0dXJuIGV9XG5mdW5jdGlvbiB3YWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aT1QdShhLmMtYS5iJmEuYS5sZW5ndGgtMSk7aj1udWxsO2s9bnVsbDtmb3IoZj1uZXcgeGtiKGEpO2YuYSE9Zi5iOyl7ZT1CRCh2a2IoZiksMTApO2M9KGg9QkQodk5iKGUsKHd0YygpLFZzYykpLDExKSwhaD9udWxsOmguaSk7ZD0oZz1CRCh2TmIoZSxXc2MpLDExKSwhZz9udWxsOmcuaSk7aWYoaiE9Y3x8ayE9ZCl7QWFjKGksYik7aj1jO2s9ZH1pLmNbaS5jLmxlbmd0aF09ZX1BYWMoaSxiKX1cbmZ1bmN0aW9uIEhOYyhhKXt2YXIgYixjLGQsZSxmLGcsaDtiPTA7Zm9yKGQ9bmV3IG9sYihhLmEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxMCk7Zm9yKGY9bmV3IFNyKHVyKFVfYihjKS5hLktjKCksbmV3IFNxKSk7UXIoZik7KXtlPUJEKFJyKGYpLDE3KTtpZihhPT1lLmQuaS5jJiZlLmMuaj09KFVjZCgpLFRjZCkpe2c9QTBiKGUuYykuYjtoPUEwYihlLmQpLmI7Yj0kd25kLk1hdGgubWF4KGIsJHduZC5NYXRoLmFicyhoLWcpKX19fXJldHVybiBifVxuZnVuY3Rpb24gYVdjKGEsYixjKXt2YXIgZCxlLGY7T2RkKGMsJ1JlbW92ZSBvdmVybGFwcycsMSk7Yy5uJiYhIWImJlRkZChjLGk2ZChiKSwocGdkKCksbWdkKSk7ZD1CRChoa2QoYiwoTVVjKCksTFVjKSksMzMpO2EuZj1kO2EuYT10WGMoQkQoaGtkKGIsKFpXYygpLFdXYykpLDI5MykpO2U9RUQoaGtkKGIsKFk5YygpLFQ5YykpKTtGVmMoYSwodUNiKGUpLGUpKTtmPWdWYyhkKTtfVmMoYSxiLGYsYyk7Yy5uJiYhIWImJlRkZChjLGk2ZChiKSwocGdkKCksbWdkKSl9XG5mdW5jdGlvbiBhWWIoYSxiLGMpe3N3aXRjaChjLmcpe2Nhc2UgMTpyZXR1cm4gbmV3IGY3YyhiLmEsJHduZC5NYXRoLm1pbihhLmQuYixiLmIpKTtjYXNlIDI6cmV0dXJuIG5ldyBmN2MoJHduZC5NYXRoLm1heChhLmMuYSxiLmEpLGIuYik7Y2FzZSAzOnJldHVybiBuZXcgZjdjKGIuYSwkd25kLk1hdGgubWF4KGEuYy5iLGIuYikpO2Nhc2UgNDpyZXR1cm4gbmV3IGY3Yygkd25kLk1hdGgubWluKGIuYSxhLmQuYSksYi5iKTt9cmV0dXJuIG5ldyBmN2MoYi5hLGIuYil9XG5mdW5jdGlvbiBtRmMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtO2w9ZD8oVWNkKCksVGNkKTooVWNkKCksemNkKTtlPWZhbHNlO2ZvcihpPWJbY10saj0wLGs9aS5sZW5ndGg7ajxrOysrail7aD1pW2pdO2lmKGVjZChCRCh2TmIoaCwoTnljKCksVnhjKSksOTgpKSl7Y29udGludWV9Zz1oLmU7bT0hVl9iKGgsbCkuZGMoKSYmISFnO2lmKG0pe2Y9V1piKGcpO2EuYj1uZXcgc2ljKGYsZD8wOmYubGVuZ3RoLTEpfWU9ZXxuRmMoYSxoLGwsbSl9cmV0dXJuIGV9XG5mdW5jdGlvbiAkc2QoYSl7dmFyIGIsYyxkO2I9UHUoMSsoIWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSksYS5jKS5pKTtFa2IoYiwoIWEuZCYmKGEuZD1uZXcgeTVkKEIyLGEsOCw1KSksYS5kKSk7Zm9yKGQ9bmV3IEZ5ZCgoIWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSksYS5jKSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDExOCk7RWtiKGIsKCFjLmQmJihjLmQ9bmV3IHk1ZChCMixjLDgsNSkpLGMuZCkpfXJldHVybiBRYihiKSxuZXcgc2woYil9XG5mdW5jdGlvbiBfc2QoYSl7dmFyIGIsYyxkO2I9UHUoMSsoIWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSksYS5jKS5pKTtFa2IoYiwoIWEuZSYmKGEuZT1uZXcgeTVkKEIyLGEsNyw0KSksYS5lKSk7Zm9yKGQ9bmV3IEZ5ZCgoIWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSksYS5jKSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDExOCk7RWtiKGIsKCFjLmUmJihjLmU9bmV3IHk1ZChCMixjLDcsNCkpLGMuZSkpfXJldHVybiBRYihiKSxuZXcgc2woYil9XG5mdW5jdGlvbiBNOWQoYSl7dmFyIGIsYyxkLGU7aWYoYT09bnVsbCl7cmV0dXJuIG51bGx9ZWxzZXtkPVFnZShhLHRydWUpO2U9TndlLmxlbmd0aDtpZihkZmIoZC5zdWJzdHIoZC5sZW5ndGgtZSxlKSxOd2UpKXtjPWQubGVuZ3RoO2lmKGM9PTQpe2I9KEJDYigwLGQubGVuZ3RoKSxkLmNoYXJDb2RlQXQoMCkpO2lmKGI9PTQzKXtyZXR1cm4geDlkfWVsc2UgaWYoYj09NDUpe3JldHVybiB3OWR9fWVsc2UgaWYoYz09Myl7cmV0dXJuIHg5ZH19cmV0dXJuIEhjYihkKX19XG5mdW5jdGlvbiBhS2MoYSl7dmFyIGIsYyxkLGU7Yj0wO2M9MDtmb3IoZT1uZXcgb2xiKGEuaik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDExKTtiPVRiYih3YmIoYixIQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGQuZSwxNikpLG5ldyBuTGMpKSkpO2M9VGJiKHdiYihjLEhBYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIoZC5nLDE2KSksbmV3IHBMYykpKSk7aWYoYj4xfHxjPjEpe3JldHVybiAyfX1pZihiK2M9PTEpe3JldHVybiAyfXJldHVybiAwfVxuZnVuY3Rpb24gV1FiKGEsYixjKXt2YXIgZCxlLGYsZyxoO09kZChjLCdFTEsgRm9yY2UnLDEpO0NjYihERChoa2QoYiwod1NiKCksalNiKSkpKXx8JENiKChkPW5ldyBfQ2IoKFBnZCgpLG5ldyBiaGQoYikpKSxkKSk7aD1UUWIoYik7WFFiKGgpO1lRYihhLEJEKHZOYihoLGZTYiksNDI0KSk7Zz1MUWIoYS5hLGgpO2ZvcihmPWcuS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSwyMzEpO3RSYihhLmIsZSxVZGQoYywxL2cuZ2MoKSkpfWg9S1FiKGcpO1NRYihoKTtRZGQoYyl9XG5mdW5jdGlvbiB5b2MoYSxiKXt2YXIgYyxkLGUsZixnO09kZChiLCdCcmVha2luZyBQb2ludCBQcm9jZXNzb3InLDEpO3hvYyhhKTtpZihDY2IoREQodk5iKGEsKE55YygpLEp5YykpKSkpe2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2M9MDtmb3IoZz1uZXcgb2xiKGQuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtmLnA9YysrfX1zb2MoYSk7dG9jKGEsdHJ1ZSk7dG9jKGEsZmFsc2UpfVFkZChiKX1cbmZ1bmN0aW9uICQxYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2g9YS5jO2ZvcihnPSghYy5xPyhtbWIoKSxtbWIoKSxrbWIpOmMucSkudmMoKS5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDQyKTtkPSFXQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGgsMTYpKSxuZXcgWHhiKG5ldyBtMmMoYixmKSkpKS5zZCgoRUFiKCksREFiKSk7aWYoZCl7aT1mLmRkKCk7aWYoSkQoaSw0KSl7ZT1mdmQoaSk7ZSE9bnVsbCYmKGk9ZSl9Yi5ZZShCRChmLmNkKCksMTQ2KSxpKX19fVxuZnVuY3Rpb24gTVFkKGEsYil7dmFyIGMsZCxlLGYsZztpZighYil7cmV0dXJuIG51bGx9ZWxzZXtmPUpEKGEuQ2IsODgpfHxKRChhLkNiLDk5KTtnPSFmJiZKRChhLkNiLDMyMik7Zm9yKGQ9bmV3IEZ5ZCgoIWIuYSYmKGIuYT1uZXcgS1lkKGIsajUsYikpLGIuYSkpO2QuZSE9ZC5pLmdjKCk7KXtjPUJEKER5ZChkKSw4Nyk7ZT1LUWQoYyk7aWYoZj9KRChlLDg4KTpnP0pEKGUsMTQ4KTohIWUpe3JldHVybiBlfX1yZXR1cm4gZj8oakdkKCksX0ZkKTooakdkKCksWUZkKX19XG5mdW5jdGlvbiBnM2IoYSxiKXt2YXIgYyxkLGUsZixnLGg7T2RkKGIsJ0NvbnN0cmFpbnRzIFBvc3Rwcm9jZXNzb3InLDEpO2c9MDtmb3IoZj1uZXcgb2xiKGEuYik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDI5KTtoPTA7Zm9yKGQ9bmV3IG9sYihlLmEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxMCk7aWYoYy5rPT0oajBiKCksaDBiKSl7eU5iKGMsKE55YygpLG54YyksbWViKGcpKTt5TmIoYyxHd2MsbWViKGgpKTsrK2h9fSsrZ31RZGQoYil9XG5mdW5jdGlvbiBlUmMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGs7aT1uZXcgZjdjKGMsZCk7YzdjKGksQkQodk5iKGIsKG1UYygpLFdTYykpLDgpKTtmb3Ioaz1Kc2IoYi5iLDApO2suYiE9ay5kLmM7KXtqPUJEKFhzYihrKSw4Nik7UDZjKGouZSxpKTtEc2IoYS5iLGopfWZvcihoPUpzYihiLmEsMCk7aC5iIT1oLmQuYzspe2c9QkQoWHNiKGgpLDE4OCk7Zm9yKGY9SnNiKGcuYSwwKTtmLmIhPWYuZC5jOyl7ZT1CRChYc2IoZiksOCk7UDZjKGUsaSl9RHNiKGEuYSxnKX19XG5mdW5jdGlvbiB1aWQoYSxiLGMpe3ZhciBkLGUsZjtmPWUxZCgoTzZkKCksTTZkKSxhLlRnKCksYik7aWYoZil7UTZkKCk7aWYoIUJEKGYsNjYpLk9qKCkpe2Y9XzFkKHExZChNNmQsZikpO2lmKCFmKXt0aHJvdyB2YmIobmV3IFdkYihpdGUrYi5uZSgpK2p0ZSkpfX1lPShkPWEuWWcoZiksQkQoZD49MD9hLl9nKGQsdHJ1ZSx0cnVlKTpzaWQoYSxmLHRydWUpLDE1MykpO0JEKGUsMjE1KS5tbChiLGMpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2IubmUoKStqdGUpKX19XG5mdW5jdGlvbiBST2MoYSxiKXt2YXIgYyxkLGUsZixnO2M9bmV3IFJrYjtlPUxBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLDE2KSksbmV3IGlQYyk7Zj1MQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYSwxNikpLG5ldyBrUGMpO2c9YUFiKF96YihPQWIodHkoT0MoR0MoeE0sMSksVWhlLDgzMywwLFtlLGZdKSksbmV3IG1QYykpKTtmb3IoZD0xO2Q8Zy5sZW5ndGg7ZCsrKXtnW2RdLWdbZC0xXT49MipiJiZFa2IoYyxuZXcgYlBjKGdbZC0xXStiLGdbZF0tYikpfXJldHVybiBjfVxuZnVuY3Rpb24gQVhjKGEsYixjKXtPZGQoYywnRWFkZXMgcmFkaWFsJywxKTtjLm4mJiEhYiYmVGRkKGMsaTZkKGIpLChwZ2QoKSxtZ2QpKTthLmQ9QkQoaGtkKGIsKE1VYygpLExVYykpLDMzKTthLmM9RWRiKEVEKGhrZChiLChaV2MoKSxWV2MpKSkpO2EuZT10WGMoQkQoaGtkKGIsV1djKSwyOTMpKTthLmE9Z1djKEJEKGhrZChiLFlXYyksNDI2KSk7YS5iPWpYYyhCRChoa2QoYixSV2MpLDM0MCkpO0JYYyhhKTtjLm4mJiEhYiYmVGRkKGMsaTZkKGIpLChwZ2QoKSxtZ2QpKX1cbmZ1bmN0aW9uIEZxZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxqLGssbDtpZihjKXtmPWMuYS5sZW5ndGg7ZD1uZXcgWWdlKGYpO2ZvcihoPShkLmItZC5hKSpkLmM8MD8oWGdlKCksV2dlKTpuZXcgc2hlKGQpO2guT2IoKTspe2c9QkQoaC5QYigpLDE5KTtlPVpwZChjLGcuYSk7ISFlJiYoaT1udWxsLGo9VXFkKGEsKGs9KEZoZCgpLGw9bmV3IHBwZCxsKSwhIWImJm5wZChrLGIpLGspLGUpLExrZChqLF9wZChlLFZ0ZSkpLGdyZChlLGopLGhyZChlLGopLGNyZChhLGUsaikpfX19XG5mdW5jdGlvbiBVS2QoYSl7dmFyIGIsYyxkLGUsZixnO2lmKCFhLmope2c9bmV3IEhQZDtiPUtLZDtmPWIuYS56YyhhLGIpO2lmKGY9PW51bGwpe2ZvcihkPW5ldyBGeWQoX0tkKGEpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksMjYpO2U9VUtkKGMpO3l0ZChnLGUpO3d0ZChnLGMpfWIuYS5CYyhhKSE9bnVsbH12dWQoZyk7YS5qPW5ldyBuTmQoKEJEKHF1ZChaS2QoKE5GZCgpLE1GZCkubyksMTEpLDE4KSxnLmkpLGcuZyk7JEtkKGEpLmImPS0zM31yZXR1cm4gYS5qfVxuZnVuY3Rpb24gTzlkKGEpe3ZhciBiLGMsZCxlO2lmKGE9PW51bGwpe3JldHVybiBudWxsfWVsc2V7ZD1RZ2UoYSx0cnVlKTtlPU53ZS5sZW5ndGg7aWYoZGZiKGQuc3Vic3RyKGQubGVuZ3RoLWUsZSksTndlKSl7Yz1kLmxlbmd0aDtpZihjPT00KXtiPShCQ2IoMCxkLmxlbmd0aCksZC5jaGFyQ29kZUF0KDApKTtpZihiPT00Myl7cmV0dXJuIHo5ZH1lbHNlIGlmKGI9PTQ1KXtyZXR1cm4geTlkfX1lbHNlIGlmKGM9PTMpe3JldHVybiB6OWR9fXJldHVybiBuZXcgT2RiKGQpfX1cbmZ1bmN0aW9uIF9DKGEpe3ZhciBiLGMsZDtjPWEubDtpZigoYyZjLTEpIT0wKXtyZXR1cm4gLTF9ZD1hLm07aWYoKGQmZC0xKSE9MCl7cmV0dXJuIC0xfWI9YS5oO2lmKChiJmItMSkhPTApe3JldHVybiAtMX1pZihiPT0wJiZkPT0wJiZjPT0wKXtyZXR1cm4gLTF9aWYoYj09MCYmZD09MCYmYyE9MCl7cmV0dXJuIGllYihjKX1pZihiPT0wJiZkIT0wJiZjPT0wKXtyZXR1cm4gaWViKGQpKzIyfWlmKGIhPTAmJmQ9PTAmJmM9PTApe3JldHVybiBpZWIoYikrNDR9cmV0dXJuIC0xfVxuZnVuY3Rpb24gcWJjKGEsYil7dmFyIGMsZCxlLGYsZztPZGQoYiwnRWRnZSBqb2luaW5nJywxKTtjPUNjYihERCh2TmIoYSwoTnljKCksQnljKSkpKTtmb3IoZT1uZXcgb2xiKGEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtnPW5ldyBCaWIoZC5hLDApO3doaWxlKGcuYjxnLmQuZ2MoKSl7Zj0oc0NiKGcuYjxnLmQuZ2MoKSksQkQoZy5kLlhiKGcuYz1nLmIrKyksMTApKTtpZihmLms9PShqMGIoKSxnMGIpKXtzYmMoZixjKTt1aWIoZyl9fX1RZGQoYil9XG5mdW5jdGlvbiBjX2MoYSxiLGMpe3ZhciBkLGU7SDJjKGEuYik7SzJjKGEuYiwoWSRjKCksViRjKSwoUjBjKCksUTBjKSk7SzJjKGEuYixXJGMsYi5nKTtLMmMoYS5iLFgkYyxiLmEpO2EuYT1GMmMoYS5iLGIpO09kZChjLCdDb21wYWN0aW9uIGJ5IHNocmlua2luZyBhIHRyZWUnLGEuYS5jLmxlbmd0aCk7aWYoYi5pLmMubGVuZ3RoPjEpe2ZvcihlPW5ldyBvbGIoYS5hKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksNTEpO2QucGYoYixVZGQoYywxKSl9fVFkZChjKX1cbmZ1bmN0aW9uIG1vKGEsYil7dmFyIGMsZCxlLGYsZztlPWIuYSZhLmY7Zj1udWxsO2ZvcihkPWEuYltlXTt0cnVlO2Q9ZC5iKXtpZihkPT1iKXshZj8oYS5iW2VdPWIuYik6KGYuYj1iLmIpO2JyZWFrfWY9ZH1nPWIuZiZhLmY7Zj1udWxsO2ZvcihjPWEuY1tnXTt0cnVlO2M9Yy5kKXtpZihjPT1iKXshZj8oYS5jW2ddPWIuZCk6KGYuZD1iLmQpO2JyZWFrfWY9Y30hYi5lPyhhLmE9Yi5jKTooYi5lLmM9Yi5jKTshYi5jPyhhLmU9Yi5lKTooYi5jLmU9Yi5lKTstLWEuaTsrK2EuZ31cbmZ1bmN0aW9uIGVOYihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosaztjPWEubztiPWEucDtnPU9oZTtlPVJpZTtoPU9oZTtmPVJpZTtmb3Ioaj0wO2o8YzsrK2ope2ZvcihrPTA7azxiOysrayl7aWYoWU1iKGEsaixrKSl7Zz0kd25kLk1hdGgubWluKGcsaik7ZT0kd25kLk1hdGgubWF4KGUsaik7aD0kd25kLk1hdGgubWluKGgsayk7Zj0kd25kLk1hdGgubWF4KGYsayl9fX1pPWUtZysxO2Q9Zi1oKzE7cmV0dXJuIG5ldyBHZ2QobWViKGcpLG1lYihoKSxtZWIoaSksbWViKGQpKX1cbmZ1bmN0aW9uIERXYihhLGIpe3ZhciBjLGQsZSxmO2Y9bmV3IEJpYihhLDApO2M9KHNDYihmLmI8Zi5kLmdjKCkpLEJEKGYuZC5YYihmLmM9Zi5iKyspLDE0MCkpO3doaWxlKGYuYjxmLmQuZ2MoKSl7ZD0oc0NiKGYuYjxmLmQuZ2MoKSksQkQoZi5kLlhiKGYuYz1mLmIrKyksMTQwKSk7ZT1uZXcgZFdiKGQuYyxjLmQsYik7c0NiKGYuYj4wKTtmLmEuWGIoZi5jPS0tZi5iKTtBaWIoZixlKTtzQ2IoZi5iPGYuZC5nYygpKTtmLmQuWGIoZi5jPWYuYisrKTtlLmE9ZmFsc2U7Yz1kfX1cbmZ1bmN0aW9uIFkyYihhKXt2YXIgYixjLGQsZSxmLGc7ZT1CRCh2TmIoYSwod3RjKCksdnNjKSksMTEpO2ZvcihnPW5ldyBvbGIoYS5qKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTEpO2ZvcihkPW5ldyBvbGIoZi5nKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoZCksMTcpO1JaYihiLGUpO3JldHVybiBmfWZvcihjPW5ldyBvbGIoZi5lKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTcpO1FaYihiLGUpO3JldHVybiBmfX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGlBKGEsYixjKXt2YXIgZCxlO2Q9Q2JiKGMucS5nZXRUaW1lKCkpO2lmKHliYihkLDApPDApe2U9X2llLVRiYihIYmIoSmJiKGQpLF9pZSkpO2U9PV9pZSYmKGU9MCl9ZWxzZXtlPVRiYihIYmIoZCxfaWUpKX1pZihiPT0xKXtlPSR3bmQuTWF0aC5taW4oKGUrNTApLzEwMHwwLDkpO0tmYihhLDQ4K2UmYWplKX1lbHNlIGlmKGI9PTIpe2U9JHduZC5NYXRoLm1pbigoZSs1KS8xMHwwLDk5KTtFQShhLGUsMil9ZWxzZXtFQShhLGUsMyk7Yj4zJiZFQShhLDAsYi0zKX19XG5mdW5jdGlvbiBjVWIoYSl7dmFyIGIsYyxkLGU7aWYoUEQodk5iKGEsKE55YygpLGF4YykpKT09PVBEKChoYmQoKSxlYmQpKSl7cmV0dXJuICFhLmUmJlBEKHZOYihhLEN3YykpIT09UEQoKFhyYygpLFVyYykpfWQ9QkQodk5iKGEsRHdjKSwyOTIpO2U9Q2NiKEREKHZOYihhLEh3YykpKXx8UEQodk5iKGEsSXdjKSk9PT1QRCgoUnBjKCksT3BjKSk7Yj1CRCh2TmIoYSxCd2MpLDE5KS5hO2M9YS5hLmMubGVuZ3RoO3JldHVybiAhZSYmZCE9KFhyYygpLFVyYykmJihiPT0wfHxiPmMpfVxuZnVuY3Rpb24gbGtjKGEpe3ZhciBiLGM7Yz0wO2Zvcig7YzxhLmMubGVuZ3RoO2MrKyl7aWYoT2pjKCh0Q2IoYyxhLmMubGVuZ3RoKSxCRChhLmNbY10sMTEzKSkpPjApe2JyZWFrfX1pZihjPjAmJmM8YS5jLmxlbmd0aC0xKXtyZXR1cm4gY31iPTA7Zm9yKDtiPGEuYy5sZW5ndGg7YisrKXtpZihPamMoKHRDYihiLGEuYy5sZW5ndGgpLEJEKGEuY1tiXSwxMTMpKSk+MCl7YnJlYWt9fWlmKGI+MCYmYzxhLmMubGVuZ3RoLTEpe3JldHVybiBifXJldHVybiBhLmMubGVuZ3RoLzJ8MH1cbmZ1bmN0aW9uIG1tZChhLGIpe3ZhciBjLGQ7aWYoYiE9YS5DYnx8YS5EYj4+MTYhPTYmJiEhYil7aWYocDZkKGEsYikpdGhyb3cgdmJiKG5ldyBXZGIoc3RlK3FtZChhKSkpO2Q9bnVsbDshIWEuQ2ImJihkPShjPWEuRGI+PjE2LGM+PTA/Y21kKGEsZCk6YS5DYi5paChhLC0xLWMsbnVsbCxkKSkpOyEhYiYmKGQ9a2lkKGIsYSw2LGQpKTtkPWJtZChhLGIsZCk7ISFkJiZkLkZpKCl9ZWxzZSAoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDYsYixiKSl9XG5mdW5jdGlvbiBucGQoYSxiKXt2YXIgYyxkO2lmKGIhPWEuQ2J8fGEuRGI+PjE2IT05JiYhIWIpe2lmKHA2ZChhLGIpKXRocm93IHZiYihuZXcgV2RiKHN0ZStvcGQoYSkpKTtkPW51bGw7ISFhLkNiJiYoZD0oYz1hLkRiPj4xNixjPj0wP2xwZChhLGQpOmEuQ2IuaWgoYSwtMS1jLG51bGwsZCkpKTshIWImJihkPWtpZChiLGEsOSxkKSk7ZD1rcGQoYSxiLGQpOyEhZCYmZC5GaSgpfWVsc2UgKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw5LGIsYikpfVxuZnVuY3Rpb24gUmxkKGEsYil7dmFyIGMsZDtpZihiIT1hLkNifHxhLkRiPj4xNiE9MyYmISFiKXtpZihwNmQoYSxiKSl0aHJvdyB2YmIobmV3IFdkYihzdGUrU2xkKGEpKSk7ZD1udWxsOyEhYS5DYiYmKGQ9KGM9YS5EYj4+MTYsYz49MD9MbGQoYSxkKTphLkNiLmloKGEsLTEtYyxudWxsLGQpKSk7ISFiJiYoZD1raWQoYixhLDEyLGQpKTtkPUtsZChhLGIsZCk7ISFkJiZkLkZpKCl9ZWxzZSAoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDMsYixiKSl9XG5mdW5jdGlvbiBWSWQoYil7dmFyIGMsZCxlLGYsZztlPXdJZChiKTtnPWIuajtpZihnPT1udWxsJiYhIWUpe3JldHVybiBiLiRqKCk/bnVsbDplLnpqKCl9ZWxzZSBpZihKRChlLDE0OCkpe2Q9ZS5BaigpO2lmKGQpe2Y9ZC5OaCgpO2lmKGYhPWIuaSl7Yz1CRChlLDE0OCk7aWYoYy5FaigpKXt0cnl7Yi5nPWYuS2goYyxnKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDc4KSl7Yi5nPW51bGx9ZWxzZSB0aHJvdyB2YmIoYSl9fWIuaT1mfX1yZXR1cm4gYi5nfXJldHVybiBudWxsfVxuZnVuY3Rpb24gd09iKGEpe3ZhciBiO2I9bmV3IFJrYjtFa2IoYixuZXcgYURiKG5ldyBmN2MoYS5jLGEuZCksbmV3IGY3YyhhLmMrYS5iLGEuZCkpKTtFa2IoYixuZXcgYURiKG5ldyBmN2MoYS5jLGEuZCksbmV3IGY3YyhhLmMsYS5kK2EuYSkpKTtFa2IoYixuZXcgYURiKG5ldyBmN2MoYS5jK2EuYixhLmQrYS5hKSxuZXcgZjdjKGEuYythLmIsYS5kKSkpO0VrYihiLG5ldyBhRGIobmV3IGY3YyhhLmMrYS5iLGEuZCthLmEpLG5ldyBmN2MoYS5jLGEuZCthLmEpKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBJSmMoYSxiLGMsZCl7dmFyIGUsZixnO2c9TFpiKGIsYyk7ZC5jW2QuYy5sZW5ndGhdPWI7aWYoYS5qW2cucF09PS0xfHxhLmpbZy5wXT09Mnx8YS5hW2IucF0pe3JldHVybiBkfWEualtnLnBdPS0xO2ZvcihmPW5ldyBTcih1cihPX2IoZykuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7aWYoISghT1piKGUpJiYhKCFPWmIoZSkmJmUuYy5pLmM9PWUuZC5pLmMpKXx8ZT09Yil7Y29udGludWV9cmV0dXJuIElKYyhhLGUsZyxkKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIHZRYihhLGIsYyl7dmFyIGQsZSxmO2ZvcihmPWIuYS5lYygpLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksNzkpO2Q9QkQoT2hiKGEuYixlKSwyNjYpOyFkJiYoWG9kKGp0ZChlKSk9PVhvZChsdGQoZSkpP3VRYihhLGUsYyk6anRkKGUpPT1Yb2QobHRkKGUpKT9PaGIoYS5jLGUpPT1udWxsJiZPaGIoYS5iLGx0ZChlKSkhPW51bGwmJnhRYihhLGUsYyxmYWxzZSk6T2hiKGEuZCxlKT09bnVsbCYmT2hiKGEuYixqdGQoZSkpIT1udWxsJiZ4UWIoYSxlLGMsdHJ1ZSkpfX1cbmZ1bmN0aW9uIGpjYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2ZvcihlPWEuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMCk7aD1uZXcgSDBiO0YwYihoLGQpO0cwYihoLChVY2QoKSx6Y2QpKTt5TmIoaCwod3RjKCksZnRjKSwoQmNiKCksdHJ1ZSkpO2ZvcihnPWIuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxMCk7aT1uZXcgSDBiO0YwYihpLGYpO0cwYihpLFRjZCk7eU5iKGksZnRjLHRydWUpO2M9bmV3IFVaYjt5TmIoYyxmdGMsdHJ1ZSk7UVpiKGMsaCk7UlpiKGMsaSl9fX1cbmZ1bmN0aW9uIGpuYyhhLGIsYyxkKXt2YXIgZSxmLGcsaDtlPWhuYyhhLGIsYyk7Zj1obmMoYSxjLGIpO2c9QkQoT2hiKGEuYyxiKSwxMTIpO2g9QkQoT2hiKGEuYyxjKSwxMTIpO2lmKGU8Zil7bmV3IERPYygoSE9jKCksR09jKSxnLGgsZi1lKX1lbHNlIGlmKGY8ZSl7bmV3IERPYygoSE9jKCksR09jKSxoLGcsZS1mKX1lbHNlIGlmKGUhPTB8fCEoIWIuaXx8IWMuaSkmJmRbYi5pLmNdW2MuaS5jXSl7bmV3IERPYygoSE9jKCksR09jKSxnLGgsMCk7bmV3IERPYyhHT2MsaCxnLDApfX1cbmZ1bmN0aW9uIFFvYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2U9MDtmb3IoZz1uZXcgb2xiKGIuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtlKz1mLm8uYitmLmQuYStmLmQuZCthLmU7Zm9yKGQ9bmV3IFNyKHVyKFJfYihmKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDE3KTtpZihjLmMuaS5rPT0oajBiKCksaTBiKSl7aT1jLmMuaTtoPUJEKHZOYihpLCh3dGMoKSwkc2MpKSwxMCk7ZSs9aC5vLmIraC5kLmEraC5kLmR9fX1yZXR1cm4gZX1cbmZ1bmN0aW9uIFdOYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7Zj1uZXcgUmtiO2o9bmV3IFBzYjtnPW5ldyBQc2I7WE5jKGEsaixnLGIpO1ZOYyhhLGosZyxiLGMpO2ZvcihpPW5ldyBvbGIoYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDExMik7Zm9yKGU9bmV3IG9sYihoLmspO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMjkpOyghYnx8ZC5jPT0oSE9jKCksRk9jKSkmJmguZz5kLmIuZyYmKGYuY1tmLmMubGVuZ3RoXT1kLHRydWUpfX1yZXR1cm4gZn1cbmZ1bmN0aW9uIGskYygpe2skYz1jY2I7ZyRjPW5ldyBsJGMoJ0NBTkRJREFURV9QT1NJVElPTl9MQVNUX1BMQUNFRF9SSUdIVCcsMCk7ZiRjPW5ldyBsJGMoJ0NBTkRJREFURV9QT1NJVElPTl9MQVNUX1BMQUNFRF9CRUxPVycsMSk7aSRjPW5ldyBsJGMoJ0NBTkRJREFURV9QT1NJVElPTl9XSE9MRV9EUkFXSU5HX1JJR0hUJywyKTtoJGM9bmV3IGwkYygnQ0FORElEQVRFX1BPU0lUSU9OX1dIT0xFX0RSQVdJTkdfQkVMT1cnLDMpO2okYz1uZXcgbCRjKCdXSE9MRV9EUkFXSU5HJyw0KX1cbmZ1bmN0aW9uIFhxZChhLGIpe2lmKEpEKGIsMjM5KSl7cmV0dXJuIGlxZChhLEJEKGIsMzMpKX1lbHNlIGlmKEpEKGIsMTg2KSl7cmV0dXJuIGpxZChhLEJEKGIsMTE4KSl9ZWxzZSBpZihKRChiLDM1NCkpe3JldHVybiBocWQoYSxCRChiLDEzNykpfWVsc2UgaWYoSkQoYiwzNTIpKXtyZXR1cm4gZ3FkKGEsQkQoYiw3OSkpfWVsc2UgaWYoYil7cmV0dXJuIG51bGx9ZWxzZXt0aHJvdyB2YmIobmV3IFdkYihYdGUrRmUobmV3IGFtYihPQyhHQyhTSSwxKSxVaGUsMSw1LFtiXSkpKSkpfX1cbmZ1bmN0aW9uIGFpYyhhKXt2YXIgYixjLGQsZSxmLGcsaDtmPW5ldyBQc2I7Zm9yKGU9bmV3IG9sYihhLmQuYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEyMSk7ZC5iLmEuYy5sZW5ndGg9PTAmJihHc2IoZixkLGYuYy5iLGYuYyksdHJ1ZSl9aWYoZi5iPjEpe2I9bkdiKChjPW5ldyBwR2IsKythLmIsYyksYS5kKTtmb3IoaD1Kc2IoZiwwKTtoLmIhPWguZC5jOyl7Zz1CRChYc2IoaCksMTIxKTtBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsMSksMCksYiksZykpfX19XG5mdW5jdGlvbiAkb2QoYSxiKXt2YXIgYyxkO2lmKGIhPWEuQ2J8fGEuRGI+PjE2IT0xMSYmISFiKXtpZihwNmQoYSxiKSl0aHJvdyB2YmIobmV3IFdkYihzdGUrX29kKGEpKSk7ZD1udWxsOyEhYS5DYiYmKGQ9KGM9YS5EYj4+MTYsYz49MD9Vb2QoYSxkKTphLkNiLmloKGEsLTEtYyxudWxsLGQpKSk7ISFiJiYoZD1raWQoYixhLDEwLGQpKTtkPVRvZChhLGIsZCk7ISFkJiZkLkZpKCl9ZWxzZSAoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSwxLDExLGIsYikpfVxuZnVuY3Rpb24gdVpiKGEpe3ZhciBiLGMsZCxlO2ZvcihkPW5ldyBuaWIoKG5ldyBlaWIoYS5iKSkuYSk7ZC5iOyl7Yz1saWIoZCk7ZT1CRChjLmNkKCksMTEpO2I9QkQoYy5kZCgpLDEwKTt5TmIoYiwod3RjKCksJHNjKSxlKTt5TmIoZSxndGMsYik7eU5iKGUsTnNjLChCY2IoKSx0cnVlKSk7RzBiKGUsQkQodk5iKGIsSHNjKSw2MSkpO3ZOYihiLEhzYyk7eU5iKGUuaSwoTnljKCksVnhjKSwoZGNkKCksYWNkKSk7QkQodk5iKFFfYihlLmkpLEtzYyksMjEpLkZjKChPcmMoKSxLcmMpKX19XG5mdW5jdGlvbiBHNGIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtmPTA7Zz0wO2lmKGEuYyl7Zm9yKGk9bmV3IG9sYihhLmQuaS5qKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTEpO2YrPWguZS5jLmxlbmd0aH19ZWxzZXtmPTF9aWYoYS5kKXtmb3IoaT1uZXcgb2xiKGEuYy5pLmopO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMSk7Zys9aC5nLmMubGVuZ3RofX1lbHNle2c9MX1lPVFEKEVlYihnLWYpKTtkPShjK2IpLzIrKGMtYikqKDAuNCplKTtyZXR1cm4gZH1cbmZ1bmN0aW9uIFpqYyhhKXtYamMoKTt2YXIgYixjO2lmKGEuSGMoKFVjZCgpLFNjZCkpKXt0aHJvdyB2YmIobmV3IFdkYignUG9ydCBzaWRlcyBtdXN0IG5vdCBjb250YWluIFVOREVGSU5FRCcpKX1zd2l0Y2goYS5nYygpKXtjYXNlIDE6cmV0dXJuIFRqYztjYXNlIDI6Yj1hLkhjKHpjZCkmJmEuSGMoVGNkKTtjPWEuSGMoQWNkKSYmYS5IYyhSY2QpO3JldHVybiBifHxjP1dqYzpWamM7Y2FzZSAzOnJldHVybiBVamM7Y2FzZSA0OnJldHVybiBTamM7ZGVmYXVsdDpyZXR1cm4gbnVsbDt9fVxuZnVuY3Rpb24gSG9jKGEsYixjKXt2YXIgZCxlLGYsZyxoO09kZChjLCdCcmVha2luZyBQb2ludCBSZW1vdmluZycsMSk7YS5hPUJEKHZOYihiLChOeWMoKSxTd2MpKSwyMTgpO2ZvcihmPW5ldyBvbGIoYi5iKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMjkpO2ZvcihoPW5ldyBvbGIoTXUoZS5hKSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTtpZihob2MoZykpe2Q9QkQodk5iKGcsKHd0YygpLHVzYykpLDMwNSk7IWQuZCYmSW9jKGEsZCl9fX1RZGQoYyl9XG5mdW5jdGlvbiBzNmMoYSxiLGMpe2k2YygpO2lmKG02YyhhLGIpJiZtNmMoYSxjKSl7cmV0dXJuIGZhbHNlfXJldHVybiB1NmMobmV3IGY3YyhhLmMsYS5kKSxuZXcgZjdjKGEuYythLmIsYS5kKSxiLGMpfHx1NmMobmV3IGY3YyhhLmMrYS5iLGEuZCksbmV3IGY3YyhhLmMrYS5iLGEuZCthLmEpLGIsYyl8fHU2YyhuZXcgZjdjKGEuYythLmIsYS5kK2EuYSksbmV3IGY3YyhhLmMsYS5kK2EuYSksYixjKXx8dTZjKG5ldyBmN2MoYS5jLGEuZCthLmEpLG5ldyBmN2MoYS5jLGEuZCksYixjKX1cbmZ1bmN0aW9uIHgxZChhLGIpe3ZhciBjLGQsZSxmO2lmKCFhLmRjKCkpe2ZvcihjPTAsZD1hLmdjKCk7YzxkOysrYyl7Zj1HRChhLlhiKGMpKTtpZihmPT1udWxsP2I9PW51bGw6ZGZiKGYuc3Vic3RyKDAsMyksJyEjIycpP2IhPW51bGwmJihlPWIubGVuZ3RoLCFkZmIoZi5zdWJzdHIoZi5sZW5ndGgtZSxlKSxiKXx8Zi5sZW5ndGghPWIubGVuZ3RoKzMpJiYhZGZiKEV3ZSxiKTpkZmIoZixGd2UpJiYhZGZiKEV3ZSxiKXx8ZGZiKGYsYikpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gSjNiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtnPWEuai5jLmxlbmd0aDtpPUtDKHROLGlsZSwzMDYsZywwLDEpO2ZvcihoPTA7aDxnO2grKyl7Zj1CRChJa2IoYS5qLGgpLDExKTtmLnA9aDtpW2hdPUQzYihOM2IoZiksYyxkKX1GM2IoYSxpLGMsYixkKTtqPW5ldyBMcWI7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKyl7ISFpW2VdJiZSaGIoaixCRChJa2IoYS5qLGUpLDExKSxpW2VdKX1pZihqLmYuYytqLmcuYyE9MCl7eU5iKGEsKHd0YygpLENzYyksaik7TDNiKGEsaSl9fVxuZnVuY3Rpb24gTGdjKGEsYixjKXt2YXIgZCxlLGY7Zm9yKGU9bmV3IG9sYihhLmEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDU3KTtmPXRnYyhkKTtpZihmKXtpZihmLms9PShqMGIoKSxlMGIpKXtzd2l0Y2goQkQodk5iKGYsKHd0YygpLEhzYykpLDYxKS5nKXtjYXNlIDQ6Zi5uLmE9Yi5hO2JyZWFrO2Nhc2UgMjpmLm4uYT1jLmEtKGYuby5hK2YuZC5jKTticmVhaztjYXNlIDE6Zi5uLmI9Yi5iO2JyZWFrO2Nhc2UgMzpmLm4uYj1jLmItKGYuby5iK2YuZC5hKTt9fX19fVxuZnVuY3Rpb24ga0FjKCl7a0FjPWNjYjtpQWM9bmV3IGxBYyhhbmUsMCk7ZEFjPW5ldyBsQWMoJ05JS09MT1YnLDEpO2dBYz1uZXcgbEFjKCdOSUtPTE9WX1BJWEVMJywyKTtlQWM9bmV3IGxBYygnTklLT0xPVl9JTVBST1ZFRCcsMyk7ZkFjPW5ldyBsQWMoJ05JS09MT1ZfSU1QUk9WRURfUElYRUwnLDQpO2NBYz1uZXcgbEFjKCdEVU1NWU5PREVfUEVSQ0VOVEFHRScsNSk7aEFjPW5ldyBsQWMoJ05PREVDT1VOVF9QRVJDRU5UQUdFJyw2KTtqQWM9bmV3IGxBYygnTk9fQk9VTkRBUlknLDcpfVxuZnVuY3Rpb24gbGVkKGEsYixjKXt2YXIgZCxlLGYsZyxoO2U9QkQoaGtkKGIsKFg3YygpLFY3YykpLDE5KTshZSYmKGU9bWViKDApKTtmPUJEKGhrZChjLFY3YyksMTkpOyFmJiYoZj1tZWIoMCkpO2lmKGUuYT5mLmEpe3JldHVybiAtMX1lbHNlIGlmKGUuYTxmLmEpe3JldHVybiAxfWVsc2V7aWYoYS5hKXtkPUtkYihiLmosYy5qKTtpZihkIT0wKXtyZXR1cm4gZH1kPUtkYihiLmksYy5pKTtpZihkIT0wKXtyZXR1cm4gZH19Zz1iLmcqYi5mO2g9Yy5nKmMuZjtyZXR1cm4gS2RiKGcsaCl9fVxuZnVuY3Rpb24gQkFkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7KythLmU7aT1hLmQ9PW51bGw/MDphLmQubGVuZ3RoO2lmKGI+aSl7az1hLmQ7YS5kPUtDKHk0LGp2ZSw2MywyKmkrNCwwLDEpO2ZvcihmPTA7ZjxpOysrZil7aj1rW2ZdO2lmKGope2Q9ai5nO2w9ai5pO2ZvcihoPTA7aDxsOysraCl7ZT1CRChkW2hdLDEzMyk7Zz1EQWQoYSxlLlNoKCkpO2M9YS5kW2ddOyFjJiYoYz1hLmRbZ109YS51aigpKTtjLkZjKGUpfX19cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9fVxuZnVuY3Rpb24gbzJkKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7ZT1jO2Y9ZS5haygpO2lmKFQ2ZChhLmUsZikpe2lmKGYuaGkoKSl7ZD1CRChhLmcsMTE5KTtmb3IoZz0wO2c8YS5pOysrZyl7aD1kW2ddO2lmKHBiKGgsZSkmJmchPWIpe3Rocm93IHZiYihuZXcgV2RiKGt1ZSkpfX19fWVsc2V7aT1TNmQoYS5lLlRnKCksZik7ZD1CRChhLmcsMTE5KTtmb3IoZz0wO2c8YS5pOysrZyl7aD1kW2ddO2lmKGkucmwoaC5haygpKSl7dGhyb3cgdmJiKG5ldyBXZGIoSHdlKSl9fX12dGQoYSxiLGMpfVxuZnVuY3Rpb24gT1liKGEsYil7dmFyIGMsZCxlLGYsZyxoO2M9QkQodk5iKGIsKHd0YygpLEVzYykpLDIxKTtnPUJEKFFjKCh4WGIoKSx3WGIpLGMpLDIxKTtoPUJEKFFjKExZYixjKSwyMSk7Zm9yKGY9Zy5LYygpO2YuT2IoKTspe2Q9QkQoZi5QYigpLDIxKTtpZighQkQoUWMoYS5iLGQpLDE1KS5kYygpKXtyZXR1cm4gZmFsc2V9fWZvcihlPWguS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwyMSk7aWYoIUJEKFFjKGEuYixkKSwxNSkuZGMoKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIHNjYyhhLGIpe3ZhciBjLGQsZSxmLGcsaDtPZGQoYiwnUGFydGl0aW9uIHBvc3Rwcm9jZXNzaW5nJywxKTtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDI5KTtmb3IoZj1uZXcgb2xiKGMuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEwKTtoPW5ldyBvbGIoZS5qKTt3aGlsZShoLmE8aC5jLmMubGVuZ3RoKXtnPUJEKG1sYihoKSwxMSk7Q2NiKEREKHZOYihnLCh3dGMoKSxmdGMpKSkpJiZubGIoaCl9fX1RZGQoYil9XG5mdW5jdGlvbiBaWmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aWYoYS5hLmMubGVuZ3RoPT0xKXtyZXR1cm4gSlpjKEJEKElrYihhLmEsMCksMTg3KSxiKX1nPVlaYyhhKTtpPTA7aj1hLmQ7Zj1nO2s9YS5kO2g9KGotZikvMitmO3doaWxlKGYrMTxqKXtpPTA7Zm9yKGQ9bmV3IG9sYihhLmEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxODcpO2krPShlPU1aYyhjLGgsZmFsc2UpLGUuYSl9aWYoaTxiKXtrPWg7aj1ofWVsc2V7Zj1ofWg9KGotZikvMitmfXJldHVybiBrfVxuZnVuY3Rpb24gZkQoYSl7dmFyIGIsYyxkLGUsZjtpZihpc05hTihhKSl7cmV0dXJuIHdEKCksdkR9aWYoYTwtOTIyMzM3MjAzNjg1NDc3NTgwOCl7cmV0dXJuIHdEKCksdER9aWYoYT49OTIyMzM3MjAzNjg1NDc3NTgwNyl7cmV0dXJuIHdEKCksc0R9ZT1mYWxzZTtpZihhPDApe2U9dHJ1ZTthPS1hfWQ9MDtpZihhPj1JamUpe2Q9UUQoYS9JamUpO2EtPWQqSWplfWM9MDtpZihhPj1IamUpe2M9UUQoYS9IamUpO2EtPWMqSGplfWI9UUQoYSk7Zj1UQyhiLGMsZCk7ZSYmWkMoZik7cmV0dXJuIGZ9XG5mdW5jdGlvbiByS2IoYSxiKXt2YXIgYyxkLGUsZjtjPSFifHwhYS51LkhjKChyY2QoKSxuY2QpKTtmPTA7Zm9yKGU9bmV3IG9sYihhLmUuQ2YoKSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDgzOCk7aWYoZC5IZigpPT0oVWNkKCksU2NkKSl7dGhyb3cgdmJiKG5ldyBXZGIoJ0xhYmVsIGFuZCBub2RlIHNpemUgY2FsY3VsYXRvciBjYW4gb25seSBiZSB1c2VkIHdpdGggcG9ydHMgdGhhdCBoYXZlIHBvcnQgc2lkZXMgYXNzaWduZWQuJykpfWQudmYoZisrKTtxS2IoYSxkLGMpfX1cbmZ1bmN0aW9uIFYwZChhLGIpe3ZhciBjLGQsZSxmLGc7ZT1iLkhoKGEuYSk7aWYoZSl7ZD0oIWUuYiYmKGUuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGUpKSxlLmIpO2M9R0QoQUFkKGQsY3dlKSk7aWYoYyE9bnVsbCl7Zj1jLmxhc3RJbmRleE9mKCcjJyk7Zz1mPT0tMT93MWQoYSxiLkFqKCksYyk6Zj09MD92MWQoYSxudWxsLGMuc3Vic3RyKDEpKTp2MWQoYSxjLnN1YnN0cigwLGYpLGMuc3Vic3RyKGYrMSkpO2lmKEpEKGcsMTQ4KSl7cmV0dXJuIEJEKGcsMTQ4KX19fXJldHVybiBudWxsfVxuZnVuY3Rpb24gWjBkKGEsYil7dmFyIGMsZCxlLGYsZztkPWIuSGgoYS5hKTtpZihkKXtjPSghZC5iJiYoZC5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsZCkpLGQuYik7Zj1HRChBQWQoYyx6d2UpKTtpZihmIT1udWxsKXtlPWYubGFzdEluZGV4T2YoJyMnKTtnPWU9PS0xP3cxZChhLGIuQWooKSxmKTplPT0wP3YxZChhLG51bGwsZi5zdWJzdHIoMSkpOnYxZChhLGYuc3Vic3RyKDAsZSksZi5zdWJzdHIoZSsxKSk7aWYoSkQoZywxNDgpKXtyZXR1cm4gQkQoZywxNDgpfX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSRGIoYSl7dmFyIGIsYyxkLGUsZjtmb3IoYz1uZXcgb2xiKGEuYS5hKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMzA3KTtiLmo9bnVsbDtmb3IoZj1iLmEuYS5lYygpLktjKCk7Zi5PYigpOyl7ZD1CRChmLlBiKCksNTcpO1g2YyhkLmIpOyghYi5qfHxkLmQuYzxiLmouZC5jKSYmKGIuaj1kKX1mb3IoZT1iLmEuYS5lYygpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksNTcpO2QuYi5hPWQuZC5jLWIuai5kLmM7ZC5iLmI9ZC5kLmQtYi5qLmQuZH19cmV0dXJuIGF9XG5mdW5jdGlvbiBzVmIoYSl7dmFyIGIsYyxkLGUsZjtmb3IoYz1uZXcgb2xiKGEuYS5hKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTg5KTtiLmY9bnVsbDtmb3IoZj1iLmEuYS5lYygpLktjKCk7Zi5PYigpOyl7ZD1CRChmLlBiKCksODEpO1g2YyhkLmUpOyghYi5mfHxkLmcuYzxiLmYuZy5jKSYmKGIuZj1kKX1mb3IoZT1iLmEuYS5lYygpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksODEpO2QuZS5hPWQuZy5jLWIuZi5nLmM7ZC5lLmI9ZC5nLmQtYi5mLmcuZH19cmV0dXJuIGF9XG5mdW5jdGlvbiBFTWIoYSl7dmFyIGIsYyxkO2M9QkQoYS5hLDE5KS5hO2Q9QkQoYS5iLDE5KS5hO2I9JHduZC5NYXRoLm1heCgkd25kLk1hdGguYWJzKGMpLCR3bmQuTWF0aC5hYnMoZCkpO2lmKGM8YiYmZD09LWIpe3JldHVybiBuZXcgdmdkKG1lYihjKzEpLG1lYihkKSl9aWYoYz09YiYmZDxiKXtyZXR1cm4gbmV3IHZnZChtZWIoYyksbWViKGQrMSkpfWlmKGM+PS1iJiZkPT1iKXtyZXR1cm4gbmV3IHZnZChtZWIoYy0xKSxtZWIoZCkpfXJldHVybiBuZXcgdmdkKG1lYihjKSxtZWIoZC0xKSl9XG5mdW5jdGlvbiBXOGIoKXtTOGIoKTtyZXR1cm4gT0MoR0MoQVMsMSksS2llLDc3LDAsW1k3YixWN2IsWjdiLG44YixHOGIscjhiLE04Yix3OGIsRThiLGk4YixBOGIsdjhiLEY4YixlOGIsTzhiLFA3Yix6OGIsSThiLG84YixIOGIsUThiLEM4YixRN2IsRDhiLFI4YixLOGIsUDhiLHA4YixiOGIscThiLG04YixOOGIsVDdiLF83Yix0OGIsUzdiLHU4YixrOGIsZjhiLHg4YixoOGIsVzdiLFU3YixsOGIsZzhiLHk4YixMOGIsUjdiLEI4YixqOGIsczhiLGM4YixhOGIsSjhiLCQ3YixkOGIsWDdiXSl9XG5mdW5jdGlvbiBZaWMoYSxiLGMpe2EuZD0wO2EuYj0wO2Iuaz09KGowYigpLGkwYikmJmMuaz09aTBiJiZCRCh2TmIoYiwod3RjKCksJHNjKSksMTApPT1CRCh2TmIoYywkc2MpLDEwKSYmKGFqYyhiKS5qPT0oVWNkKCksQWNkKT9aaWMoYSxiLGMpOlppYyhhLGMsYikpO2Iuaz09aTBiJiZjLms9PWcwYj9hamMoYikuaj09KFVjZCgpLEFjZCk/KGEuZD0xKTooYS5iPTEpOmMuaz09aTBiJiZiLms9PWcwYiYmKGFqYyhjKS5qPT0oVWNkKCksQWNkKT8oYS5iPTEpOihhLmQ9MSkpO2NqYyhhLGIsYyl9XG5mdW5jdGlvbiBlc2QoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDtsPWhzZChhKTtiPWEuYTtpPWIhPW51bGw7aSYmVXBkKGwsJ2NhdGVnb3J5JyxhLmEpO2U9RmhlKG5ldyBQaWIoYS5kKSk7Zz0hZTtpZihnKXtqPW5ldyB3QjtjQyhsLCdrbm93bk9wdGlvbnMnLGopO2M9bmV3IG1zZChqKTtyZWIobmV3IFBpYihhLmQpLGMpfWY9RmhlKGEuZyk7aD0hZjtpZihoKXtrPW5ldyB3QjtjQyhsLCdzdXBwb3J0ZWRGZWF0dXJlcycsayk7ZD1uZXcgb3NkKGspO3JlYihhLmcsZCl9cmV0dXJuIGx9XG5mdW5jdGlvbiB0eShhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGo7ZD1mYWxzZTtiPTMzNjtjPTA7Zj1uZXcgWHAoYS5sZW5ndGgpO2ZvcihoPWEsaT0wLGo9aC5sZW5ndGg7aTxqOysraSl7Zz1oW2ldO2Q9ZHwoVXpiKGcpLGZhbHNlKTtlPShUemIoZyksZy5hKTtFa2IoZi5hLFFiKGUpKTtiJj1lLnFkKCk7Yz1MeShjLGUucmQoKSl9cmV0dXJuIEJEKEJEKFJ6YihuZXcgWUFiKG51bGwsWWoobmV3IEt1YigoaW0oKSxubShmLmEpKSwxNiksbmV3IHZ5LGIsYykpLG5ldyB4eShhKSksNjcwKSw4MzMpfVxuZnVuY3Rpb24gVVdiKGEsYil7dmFyIGM7aWYoISFhLmQmJihiLmMhPWEuZS5jfHxxV2IoYS5lLmIsYi5iKSkpe0VrYihhLmYsYS5kKTthLmE9YS5kLmMrYS5kLmI7YS5kPW51bGw7YS5lPW51bGx9bldiKGIuYik/KGEuYz1iKTooYS5iPWIpO2lmKGIuYj09KGxXYigpLGhXYikmJiFiLmF8fGIuYj09aVdiJiZiLmF8fGIuYj09aldiJiZiLmF8fGIuYj09a1diJiYhYi5hKXtpZighIWEuYyYmISFhLmIpe2M9bmV3IEo2YyhhLmEsYS5jLmQsYi5jLWEuYSxhLmIuZC1hLmMuZCk7YS5kPWM7YS5lPWJ9fX1cbmZ1bmN0aW9uIEwyYyhhKXt2YXIgYjtEMmMuY2FsbCh0aGlzKTt0aGlzLmk9bmV3IFoyYzt0aGlzLmc9YTt0aGlzLmY9QkQoYS5lJiZhLmUoKSw5KS5sZW5ndGg7aWYodGhpcy5mPT0wKXt0aHJvdyB2YmIobmV3IFdkYignVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgcGhhc2UgaW4gdGhlIHBoYXNlIGVudW1lcmF0aW9uLicpKX10aGlzLmM9KGI9QkQoZ2RiKHRoaXMuZyksOSksbmV3IHhxYihiLEJEKF9CYihiLGIubGVuZ3RoKSw5KSwwKSk7dGhpcy5hPW5ldyBqM2M7dGhpcy5iPW5ldyBMcWJ9XG5mdW5jdGlvbiBHb2QoYSxiKXt2YXIgYyxkO2lmKGIhPWEuQ2J8fGEuRGI+PjE2IT03JiYhIWIpe2lmKHA2ZChhLGIpKXRocm93IHZiYihuZXcgV2RiKHN0ZStJb2QoYSkpKTtkPW51bGw7ISFhLkNiJiYoZD0oYz1hLkRiPj4xNixjPj0wP0VvZChhLGQpOmEuQ2IuaWgoYSwtMS1jLG51bGwsZCkpKTshIWImJihkPUJEKGIsNDkpLmdoKGEsMSxDMixkKSk7ZD1Eb2QoYSxiLGQpOyEhZCYmZC5GaSgpfWVsc2UgKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw3LGIsYikpfVxuZnVuY3Rpb24gTkhkKGEsYil7dmFyIGMsZDtpZihiIT1hLkNifHxhLkRiPj4xNiE9MyYmISFiKXtpZihwNmQoYSxiKSl0aHJvdyB2YmIobmV3IFdkYihzdGUrUUhkKGEpKSk7ZD1udWxsOyEhYS5DYiYmKGQ9KGM9YS5EYj4+MTYsYz49MD9LSGQoYSxkKTphLkNiLmloKGEsLTEtYyxudWxsLGQpKSk7ISFiJiYoZD1CRChiLDQ5KS5naChhLDAsazUsZCkpO2Q9SkhkKGEsYixkKTshIWQmJmQuRmkoKX1lbHNlIChhLkRiJjQpIT0wJiYoYS5EYiYxKT09MCYmVWhkKGEsbmV3IG5TZChhLDEsMyxiLGIpKX1cbmZ1bmN0aW9uIEVoYihhLGIpe0RoYigpO3ZhciBjLGQsZSxmLGcsaCxpLGosaztpZihiLmQ+YS5kKXtoPWE7YT1iO2I9aH1pZihiLmQ8NjMpe3JldHVybiBJaGIoYSxiKX1nPShhLmQmLTIpPDw0O2o9UmdiKGEsZyk7az1SZ2IoYixnKTtkPXloYihhLFFnYihqLGcpKTtlPXloYihiLFFnYihrLGcpKTtpPUVoYihqLGspO2M9RWhiKGQsZSk7Zj1FaGIoeWhiKGosZCkseWhiKGUsaykpO2Y9dGhiKHRoYihmLGkpLGMpO2Y9UWdiKGYsZyk7aT1RZ2IoaSxnPDwxKTtyZXR1cm4gdGhiKHRoYihpLGYpLGMpfVxuZnVuY3Rpb24gYUdjKGEsYixjKXt2YXIgZCxlLGYsZyxoO2c9Q0hjKGEsYyk7aD1LQyhPUSxrbmUsMTAsYi5sZW5ndGgsMCwxKTtkPTA7Zm9yKGY9Zy5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDExKTtDY2IoREQodk5iKGUsKHd0YygpLE5zYykpKSkmJihoW2QrK109QkQodk5iKGUsZ3RjKSwxMCkpfWlmKGQ8Yi5sZW5ndGgpe3Rocm93IHZiYihuZXcgWmRiKCdFeHBlY3RlZCAnK2IubGVuZ3RoKycgaGllcmFyY2hpY2FsIHBvcnRzLCBidXQgZm91bmQgb25seSAnK2QrJy4nKSl9cmV0dXJuIGh9XG5mdW5jdGlvbiBVbmQoYSxiKXt2YXIgYyxkLGUsZixnLGg7aWYoIWEudGIpe2Y9KCFhLnJiJiYoYS5yYj1uZXcgalVkKGEsZDUsYSkpLGEucmIpO2g9bmV3IE1xYihmLmkpO2ZvcihlPW5ldyBGeWQoZik7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDEzOCk7Zz1kLm5lKCk7Yz1CRChnPT1udWxsP2pyYihoLmYsbnVsbCxkKTpEcmIoaC5nLGcsZCksMTM4KTshIWMmJihnPT1udWxsP2pyYihoLmYsbnVsbCxjKTpEcmIoaC5nLGcsYykpfWEudGI9aH1yZXR1cm4gQkQoUGhiKGEudGIsYiksMTM4KX1cbmZ1bmN0aW9uIFlLZChhLGIpe3ZhciBjLGQsZSxmLGc7KGEuaT09bnVsbCYmVEtkKGEpLGEuaSkubGVuZ3RoO2lmKCFhLnApe2c9bmV3IE1xYigoMyphLmcuaS8yfDApKzEpO2ZvcihlPW5ldyAkeWQoYS5nKTtlLmUhPWUuaS5nYygpOyl7ZD1CRChaeWQoZSksMTcwKTtmPWQubmUoKTtjPUJEKGY9PW51bGw/anJiKGcuZixudWxsLGQpOkRyYihnLmcsZixkKSwxNzApOyEhYyYmKGY9PW51bGw/anJiKGcuZixudWxsLGMpOkRyYihnLmcsZixjKSl9YS5wPWd9cmV0dXJuIEJEKFBoYihhLnAsYiksMTcwKX1cbmZ1bmN0aW9uIGhDYihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGo7ZkNiKGQrV3koYyxjLiRkKCkpLGUpO2dDYihiLGpDYihjKSk7Zj1jLmY7ISFmJiZoQ2IoYSxiLGYsJ0NhdXNlZCBieTogJyxmYWxzZSk7Zm9yKGg9KGMuaz09bnVsbCYmKGMuaz1LQyhfSSxuaWUsNzgsMCwwLDEpKSxjLmspLGk9MCxqPWgubGVuZ3RoO2k8ajsrK2kpe2c9aFtpXTtoQ2IoYSxiLGcsJ1N1cHByZXNzZWQ6ICcsZmFsc2UpfWNvbnNvbGUuZ3JvdXBFbmQhPW51bGwmJmNvbnNvbGUuZ3JvdXBFbmQuY2FsbChjb25zb2xlKX1cbmZ1bmN0aW9uIGRHYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2k9Yi5lO2g9aS5sZW5ndGg7Zz1iLnEuX2YoaSxjPzA6aC0xLGMpO2U9aVtjPzA6aC0xXTtnPWd8Y0djKGEsZSxjLGQpO2ZvcihmPWM/MTpoLTI7Yz9mPGg6Zj49MDtmKz1jPzE6LTEpe2c9Z3xiLmMuU2YoaSxmLGMsZCYmIUNjYihERCh2TmIoYi5qLCh3dGMoKSxKc2MpKSkpJiYhQ2NiKEREKHZOYihiLmosKHd0YygpLG10YykpKSkpO2c9Z3xiLnEuX2YoaSxmLGMpO2c9Z3xjR2MoYSxpW2ZdLGMsZCl9UXFiKGEuYyxiKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIG8zYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07Zm9yKGs9bV9iKGEuaiksbD0wLG09ay5sZW5ndGg7bDxtOysrbCl7aj1rW2xdO2lmKGM9PShLQWMoKSxIQWMpfHxjPT1KQWMpe2k9a19iKGouZyk7Zm9yKGU9aSxmPTAsZz1lLmxlbmd0aDtmPGc7KytmKXtkPWVbZl07azNiKGIsZCkmJlBaYihkLHRydWUpfX1pZihjPT1JQWN8fGM9PUpBYyl7aD1rX2Ioai5lKTtmb3IoZT1oLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtqM2IoYixkKSYmUFpiKGQsdHJ1ZSl9fX19XG5mdW5jdGlvbiBRbWMoYSl7dmFyIGIsYztiPW51bGw7Yz1udWxsO3N3aXRjaChMbWMoYSkuZyl7Y2FzZSAxOmI9KFVjZCgpLHpjZCk7Yz1UY2Q7YnJlYWs7Y2FzZSAyOmI9KFVjZCgpLFJjZCk7Yz1BY2Q7YnJlYWs7Y2FzZSAzOmI9KFVjZCgpLFRjZCk7Yz16Y2Q7YnJlYWs7Y2FzZSA0OmI9KFVjZCgpLEFjZCk7Yz1SY2Q7fW1qYyhhLEJEKEJ0YihSQWIoQkQoUWMoYS5rLGIpLDE1KS5PYygpLEhtYykpLDExMykpO25qYyhhLEJEKEJ0YihRQWIoQkQoUWMoYS5rLGMpLDE1KS5PYygpLEhtYykpLDExMykpfVxuZnVuY3Rpb24gYTZiKGEpe3ZhciBiLGMsZCxlLGYsZztlPUJEKElrYihhLmosMCksMTEpO2lmKGUuZS5jLmxlbmd0aCtlLmcuYy5sZW5ndGg9PTApe2Eubi5hPTB9ZWxzZXtnPTA7Zm9yKGQ9dWwocGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW25ldyBKMGIoZSksbmV3IFIwYihlKV0pKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDExKTtnKz1jLmkubi5hK2Mubi5hK2MuYS5hfWI9QkQodk5iKGEsKE55YygpLFR4YykpLDgpO2Y9IWI/MDpiLmE7YS5uLmE9Zy8oZS5lLmMubGVuZ3RoK2UuZy5jLmxlbmd0aCktZn19XG5mdW5jdGlvbiBGMWMoYSxiKXt2YXIgYyxkLGU7Zm9yKGQ9bmV3IG9sYihiLmEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyMjEpOyROYihCRChjLmIsNjUpLGM3YyhSNmMoQkQoYi5iLDY1KS5jKSxCRChiLmIsNjUpLmEpKTtlPXhPYihCRChiLmIsNjUpLmIsQkQoYy5iLDY1KS5iKTtlPjEmJihhLmE9dHJ1ZSk7Wk5iKEJEKGMuYiw2NSksUDZjKFI2YyhCRChiLmIsNjUpLmMpLFk2YyhjN2MoUjZjKEJEKGMuYiw2NSkuYSksQkQoYi5iLDY1KS5hKSxlKSkpO0QxYyhhLGIpO0YxYyhhLGMpfX1cbmZ1bmN0aW9uIHJWYihhKXt2YXIgYixjLGQsZSxmLGcsaDtmb3IoZj1uZXcgb2xiKGEuYS5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMTg5KTtkLmU9MDtkLmQuYS4kYigpfWZvcihlPW5ldyBvbGIoYS5hLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxODkpO2ZvcihjPWQuYS5hLmVjKCkuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSw4MSk7Zm9yKGg9Yi5mLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksODEpO2lmKGcuZCE9ZCl7UXFiKGQuZCxnKTsrK2cuZC5lfX19fX1cbmZ1bmN0aW9uIGJjYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2k9YS5qLmMubGVuZ3RoO2M9MDtiPWk7ZT0yKmk7Zm9yKGg9bmV3IG9sYihhLmopO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMSk7c3dpdGNoKGcuai5nKXtjYXNlIDI6Y2FzZSA0OmcucD0tMTticmVhaztjYXNlIDE6Y2FzZSAzOmQ9Zy5lLmMubGVuZ3RoO2Y9Zy5nLmMubGVuZ3RoO2Q+MCYmZj4wPyhnLnA9YisrKTpkPjA/KGcucD1jKyspOmY+MD8oZy5wPWUrKyk6KGcucD1jKyspO319bW1iKCk7T2tiKGEuaixuZXcgZmNjKX1cbmZ1bmN0aW9uIFZlYyhhKXt2YXIgYixjO2M9bnVsbDtiPUJEKElrYihhLmcsMCksMTcpO2Rve2M9Yi5kLmk7aWYod05iKGMsKHd0YygpLFdzYykpKXtyZXR1cm4gQkQodk5iKGMsV3NjKSwxMSkuaX1pZihjLmshPShqMGIoKSxoMGIpJiZRcihuZXcgU3IodXIoVV9iKGMpLmEuS2MoKSxuZXcgU3EpKSkpe2I9QkQoUnIobmV3IFNyKHVyKFVfYihjKS5hLktjKCksbmV3IFNxKSkpLDE3KX1lbHNlIGlmKGMuayE9aDBiKXtyZXR1cm4gbnVsbH19d2hpbGUoISFjJiZjLmshPShqMGIoKSxoMGIpKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE9tYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztoPWIuajtnPWIuZztpPUJEKElrYihoLGguYy5sZW5ndGgtMSksMTEzKTtrPSh0Q2IoMCxoLmMubGVuZ3RoKSxCRChoLmNbMF0sMTEzKSk7aj1LbWMoYSxnLGksayk7Zm9yKGY9MTtmPGguYy5sZW5ndGg7ZisrKXtjPSh0Q2IoZi0xLGguYy5sZW5ndGgpLEJEKGguY1tmLTFdLDExMykpO2U9KHRDYihmLGguYy5sZW5ndGgpLEJEKGguY1tmXSwxMTMpKTtkPUttYyhhLGcsYyxlKTtpZihkPmope2k9YztrPWU7aj1kfX1iLmE9aztiLmM9aX1cbmZ1bmN0aW9uIHNFYihhLGIpe3ZhciBjLGQ7ZD1BeGIoYS5iLGIuYik7aWYoIWQpe3Rocm93IHZiYihuZXcgWmRiKCdJbnZhbGlkIGhpdGJveGVzIGZvciBzY2FubGluZSBjb25zdHJhaW50IGNhbGN1bGF0aW9uLicpKX0obUViKGIuYixCRChDeGIoYS5iLGIuYiksNTcpKXx8bUViKGIuYixCRChCeGIoYS5iLGIuYiksNTcpKSkmJihaZmIoKSxiLmIrJyBoYXMgb3ZlcmxhcC4nKTthLmFbYi5iLmZdPUJEKEV4YihhLmIsYi5iKSw1Nyk7Yz1CRChEeGIoYS5iLGIuYiksNTcpOyEhYyYmKGEuYVtjLmZdPWIuYil9XG5mdW5jdGlvbiBBRmIoYSl7aWYoIWEuYS5kfHwhYS5hLmUpe3Rocm93IHZiYihuZXcgWmRiKChmZGIoZk4pLGZOLmsrJyBtdXN0IGhhdmUgYSBzb3VyY2UgYW5kIHRhcmdldCAnKyhmZGIoak4pLGpOLmspKycgc3BlY2lmaWVkLicpKSl9aWYoYS5hLmQ9PWEuYS5lKXt0aHJvdyB2YmIobmV3IFpkYignTmV0d29yayBzaW1wbGV4IGRvZXMgbm90IHN1cHBvcnQgc2VsZi1sb29wczogJythLmErJyAnK2EuYS5kKycgJythLmEuZSkpfU5GYihhLmEuZC5nLGEuYSk7TkZiKGEuYS5lLmIsYS5hKTtyZXR1cm4gYS5hfVxuZnVuY3Rpb24gSEhjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksajtqPW5ldyBIeGIobmV3IHRJYyhhKSk7Zm9yKGc9T0MoR0MoYVIsMSksbG5lLDExLDAsW2IsY10pLGg9MCxpPWcubGVuZ3RoO2g8aTsrK2gpe2Y9Z1toXTtJd2Ioai5hLGYsKEJjYigpLHpjYikpPT1udWxsO2ZvcihlPW5ldyBiMWIoZi5iKTtsbGIoZS5hKXx8bGxiKGUuYik7KXtkPUJEKGxsYihlLmEpP21sYihlLmEpOm1sYihlLmIpLDE3KTtkLmM9PWQuZHx8QXhiKGosZj09ZC5jP2QuZDpkLmMpfX1yZXR1cm4gUWIoaiksbmV3IFRrYihqKX1cbmZ1bmN0aW9uIG9QYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2Q9MDtpZihiLmIhPTAmJmMuYiE9MCl7Zj1Kc2IoYiwwKTtnPUpzYihjLDApO2g9RWRiKEVEKFhzYihmKSkpO2k9RWRiKEVEKFhzYihnKSkpO2U9dHJ1ZTtkb3tpZihoPmktYS5iJiZoPGkrYS5iKXtyZXR1cm4gLTF9ZWxzZSBoPmktYS5hJiZoPGkrYS5hJiYrK2Q7aDw9aSYmZi5iIT1mLmQuYz8oaD1FZGIoRUQoWHNiKGYpKSkpOmk8PWgmJmcuYiE9Zy5kLmM/KGk9RWRiKEVEKFhzYihnKSkpKTooZT1mYWxzZSl9d2hpbGUoZSl9cmV0dXJuIGR9XG5mdW5jdGlvbiBGM2IoYSxiLGMsZCxlKXt2YXIgZixnLGgsaTtpPShmPUJEKGdkYihGMSksOSksbmV3IHhxYihmLEJEKF9CYihmLGYubGVuZ3RoKSw5KSwwKSk7Zm9yKGg9bmV3IG9sYihhLmopO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMSk7aWYoYltnLnBdKXtHM2IoZyxiW2cucF0sZCk7cnFiKGksZy5qKX19aWYoZSl7SzNiKGEsYiwoVWNkKCksemNkKSwyKmMsZCk7SzNiKGEsYixUY2QsMipjLGQpfWVsc2V7SzNiKGEsYiwoVWNkKCksQWNkKSwyKmMsZCk7SzNiKGEsYixSY2QsMipjLGQpfX1cbmZ1bmN0aW9uIFN6YihhKXt2YXIgYixjLGQsZSxmO2Y9bmV3IFJrYjtIa2IoYS5iLG5ldyBYQmIoZikpO2EuYi5jPUtDKFNJLFVoZSwxLDAsNSwxKTtpZihmLmMubGVuZ3RoIT0wKXtiPSh0Q2IoMCxmLmMubGVuZ3RoKSxCRChmLmNbMF0sNzgpKTtmb3IoYz0xLGQ9Zi5jLmxlbmd0aDtjPGQ7KytjKXtlPSh0Q2IoYyxmLmMubGVuZ3RoKSxCRChmLmNbY10sNzgpKTtlIT1iJiZReShiLGUpfWlmKEpEKGIsNjApKXt0aHJvdyB2YmIoQkQoYiw2MCkpfWlmKEpEKGIsMjg5KSl7dGhyb3cgdmJiKEJEKGIsMjg5KSl9fX1cbmZ1bmN0aW9uIERDYihhLGIpe3ZhciBjLGQsZSxmO2E9YT09bnVsbD9YaGU6KHVDYihhKSxhKTtjPW5ldyBWZmI7Zj0wO2Q9MDt3aGlsZShkPGIubGVuZ3RoKXtlPWEuaW5kZXhPZignJXMnLGYpO2lmKGU9PS0xKXticmVha31RZmIoYyxhLnN1YnN0cihmLGUtZikpO1BmYihjLGJbZCsrXSk7Zj1lKzJ9UWZiKGMsYS5zdWJzdHIoZikpO2lmKGQ8Yi5sZW5ndGgpe2MuYSs9JyBbJztQZmIoYyxiW2QrK10pO3doaWxlKGQ8Yi5sZW5ndGgpe2MuYSs9U2hlO1BmYihjLGJbZCsrXSl9Yy5hKz0nXSd9cmV0dXJuIGMuYX1cbmZ1bmN0aW9uIEtDYihhKXt2YXIgYixjLGQsZTtiPTA7ZD1hLmxlbmd0aDtlPWQtNDtjPTA7d2hpbGUoYzxlKXtiPShCQ2IoYyszLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoYyszKSsoQkNiKGMrMixhLmxlbmd0aCksMzEqKGEuY2hhckNvZGVBdChjKzIpKyhCQ2IoYysxLGEubGVuZ3RoKSwzMSooYS5jaGFyQ29kZUF0KGMrMSkrKEJDYihjLGEubGVuZ3RoKSwzMSooYS5jaGFyQ29kZUF0KGMpKzMxKmIpKSkpKSkpO2I9YnwwO2MrPTR9d2hpbGUoYzxkKXtiPWIqMzErYmZiKGEsYysrKX1iPWJ8MDtyZXR1cm4gYn1cbmZ1bmN0aW9uIFJhYyhhKXt2YXIgYixjO2ZvcihjPW5ldyBTcih1cihVX2IoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGMpOyl7Yj1CRChScihjKSwxNyk7aWYoYi5kLmkuayE9KGowYigpLGYwYikpe3Rocm93IHZiYihuZXcgeTJjKEZuZStQX2IoYSkrXCInIGhhcyBpdHMgbGF5ZXIgY29uc3RyYWludCBzZXQgdG8gTEFTVCwgYnV0IGhhcyBhdCBsZWFzdCBvbmUgb3V0Z29pbmcgZWRnZSB0aGF0IFwiKycgZG9lcyBub3QgZ28gdG8gYSBMQVNUX1NFUEFSQVRFIG5vZGUuIFRoYXQgbXVzdCBub3QgaGFwcGVuLicpKX19fVxuZnVuY3Rpb24galFjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbTtpPTA7Zm9yKGs9bmV3IG9sYihhLmEpO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMCk7aD0wO2ZvcihmPW5ldyBTcih1cihSX2IoaikuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7bD1BMGIoZS5jKS5iO209QTBiKGUuZCkuYjtoPSR3bmQuTWF0aC5tYXgoaCwkd25kLk1hdGguYWJzKG0tbCkpfWk9JHduZC5NYXRoLm1heChpLGgpfWc9ZCokd25kLk1hdGgubWluKDEsYi9jKSppO3JldHVybiBnfVxuZnVuY3Rpb24gU2VlKGEpe3ZhciBiO2I9bmV3IElmYjsoYSYyNTYpIT0wJiYoYi5hKz0nRicsYik7KGEmMTI4KSE9MCYmKGIuYSs9J0gnLGIpOyhhJjUxMikhPTAmJihiLmErPSdYJyxiKTsoYSYyKSE9MCYmKGIuYSs9J2knLGIpOyhhJjgpIT0wJiYoYi5hKz0nbScsYik7KGEmNCkhPTAmJihiLmErPSdzJyxiKTsoYSYzMikhPTAmJihiLmErPSd1JyxiKTsoYSY2NCkhPTAmJihiLmErPSd3JyxiKTsoYSYxNikhPTAmJihiLmErPSd4JyxiKTsoYSZ6dGUpIT0wJiYoYi5hKz0nLCcsYik7cmV0dXJuIGpmYihiLmEpfVxuZnVuY3Rpb24gRjViKGEsYil7dmFyIGMsZCxlLGY7T2RkKGIsJ1Jlc2l6ZSBjaGlsZCBncmFwaCB0byBmaXQgcGFyZW50LicsMSk7Zm9yKGQ9bmV3IG9sYihhLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyOSk7R2tiKGEuYSxjLmEpO2MuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKX1mb3IoZj1uZXcgb2xiKGEuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEwKTskX2IoZSxudWxsKX1hLmIuYz1LQyhTSSxVaGUsMSwwLDUsMSk7RzViKGEpOyEhYS5lJiZFNWIoYS5lLGEpO1FkZChiKX1cbmZ1bmN0aW9uIGVlYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGo7ZD1hLmI7Zj1kLmU7Zz1lY2QoQkQodk5iKGQsKE55YygpLFZ4YykpLDk4KSk7Yz0hIWYmJkJEKHZOYihmLCh3dGMoKSxLc2MpKSwyMSkuSGMoKE9yYygpLEhyYykpO2lmKGd8fGMpe3JldHVybn1mb3Ioaj0oaD0obmV3ICRpYihhLmUpKS5hLnZjKCkuS2MoKSxuZXcgZGpiKGgpKTtqLmEuT2IoKTspe2k9KGI9QkQoai5hLlBiKCksNDIpLEJEKGIuZGQoKSwxMTMpKTtpZihpLmEpe2U9aS5kO0YwYihlLG51bGwpO2kuYz10cnVlO2EuYT10cnVlfX19XG5mdW5jdGlvbiBRRmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG47bT0tMTtuPTA7Zm9yKGo9YSxrPTAsbD1qLmxlbmd0aDtrPGw7KytrKXtpPWpba107Zm9yKGY9aSxnPTAsaD1mLmxlbmd0aDtnPGg7KytnKXtlPWZbZ107Yj1uZXcgVW5jKG09PS0xP2FbMF06YVttXSxYZWMoZSkpO2ZvcihjPTA7YzxlLmouYy5sZW5ndGg7YysrKXtmb3IoZD1jKzE7ZDxlLmouYy5sZW5ndGg7ZCsrKXtSbmMoYixCRChJa2IoZS5qLGMpLDExKSxCRChJa2IoZS5qLGQpLDExKSk+MCYmKytufX19KyttfXJldHVybiBufVxuZnVuY3Rpb24gaFVjKGEsYil7dmFyIGMsZCxlLGYsZztnPUJEKHZOYihiLChKVGMoKSxGVGMpKSw0MjUpO2ZvcihmPUpzYihiLmIsMCk7Zi5iIT1mLmQuYzspe2U9QkQoWHNiKGYpLDg2KTtpZihhLmJbZS5nXT09MCl7c3dpdGNoKGcuZyl7Y2FzZSAwOmlVYyhhLGUpO2JyZWFrO2Nhc2UgMTpnVWMoYSxlKTt9YS5iW2UuZ109Mn19Zm9yKGQ9SnNiKGEuYSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksMTg4KTt6ZShjLmIuZCxjLHRydWUpO3plKGMuYy5iLGMsdHJ1ZSl9eU5iKGIsKG1UYygpLGdUYyksYS5hKX1cbmZ1bmN0aW9uIFM2ZChhLGIpe1E2ZCgpO3ZhciBjLGQsZSxmO2lmKCFiKXtyZXR1cm4gUDZkfWVsc2UgaWYoYj09KFE4ZCgpLE44ZCl8fChiPT12OGR8fGI9PXQ4ZHx8Yj09dThkKSYmYSE9czhkKXtyZXR1cm4gbmV3IFo2ZChhLGIpfWVsc2V7ZD1CRChiLDY3Nyk7Yz1kLnBrKCk7aWYoIWMpe2EyZChxMWQoKE82ZCgpLE02ZCksYikpO2M9ZC5waygpfWY9KCFjLmkmJihjLmk9bmV3IExxYiksYy5pKTtlPUJEKFdkKGlyYihmLmYsYSkpLDE5NDIpOyFlJiZSaGIoZixhLGU9bmV3IFo2ZChhLGIpKTtyZXR1cm4gZX19XG5mdW5jdGlvbiBUYmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aT1CRCh2TmIoYSwod3RjKCksJHNjKSksMTEpO2o9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2kuaS5uLGkubixpLmFdKSkuYTtrPWEuaS5uLmI7Yz1rX2IoYS5lKTtmb3IoZT1jLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtSWmIoZCxpKTtGc2IoZC5hLG5ldyBmN2MoaixrKSk7aWYoYil7aD1CRCh2TmIoZCwoTnljKCksanhjKSksNzQpO2lmKCFoKXtoPW5ldyBzN2M7eU5iKGQsanhjLGgpfURzYihoLG5ldyBmN2MoaixrKSl9fX1cbmZ1bmN0aW9uIFViYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztlPUJEKHZOYihhLCh3dGMoKSwkc2MpKSwxMSk7aj1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbZS5pLm4sZS5uLGUuYV0pKS5hO2s9YS5pLm4uYjtjPWtfYihhLmcpO2ZvcihnPWMsaD0wLGk9Zy5sZW5ndGg7aDxpOysraCl7Zj1nW2hdO1FaYihmLGUpO0VzYihmLmEsbmV3IGY3YyhqLGspKTtpZihiKXtkPUJEKHZOYihmLChOeWMoKSxqeGMpKSw3NCk7aWYoIWQpe2Q9bmV3IHM3Yzt5TmIoZixqeGMsZCl9RHNiKGQsbmV3IGY3YyhqLGspKX19fVxuZnVuY3Rpb24gVEZjKGEsYil7dmFyIGMsZCxlLGYsZyxoO2EuYj1uZXcgUmtiO2EuZD1CRCh2TmIoYiwod3RjKCksanRjKSksMjMwKTthLmU9RHViKGEuZCk7Zj1uZXcgUHNiO2U9T3UoT0MoR0MoS1EsMSksY25lLDM3LDAsW2JdKSk7Zz0wO3doaWxlKGc8ZS5jLmxlbmd0aCl7ZD0odENiKGcsZS5jLmxlbmd0aCksQkQoZS5jW2ddLDM3KSk7ZC5wPWcrKztjPW5ldyBmRmMoZCxhLmEsYS5iKTtHa2IoZSxjLmIpO0VrYihhLmIsYyk7Yy5zJiYoaD1Kc2IoZiwwKSxWc2IoaCxjKSl9YS5jPW5ldyBUcWI7cmV0dXJuIGZ9XG5mdW5jdGlvbiBISmIoYSxiKXt2YXIgYyxkLGUsZixnLGg7Zm9yKGc9QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCkuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxMTEpO2M9Zi5jP1pIYihmLmMpOjA7aWYoYz4wKXtpZihmLmEpe2g9Zi5iLnJmKCkuYTtpZihjPmgpe2U9KGMtaCkvMjtmLmQuYj1lO2YuZC5jPWV9fWVsc2V7Zi5kLmM9YS5zK2N9fWVsc2UgaWYodGNkKGEudSkpe2Q9c2ZkKGYuYik7ZC5jPDAmJihmLmQuYj0tZC5jKTtkLmMrZC5iPmYuYi5yZigpLmEmJihmLmQuYz1kLmMrZC5iLWYuYi5yZigpLmEpfX19XG5mdW5jdGlvbiBFZWMoYSxiKXt2YXIgYyxkLGUsZjtPZGQoYiwnU2VtaS1JbnRlcmFjdGl2ZSBDcm9zc2luZyBNaW5pbWl6YXRpb24gUHJvY2Vzc29yJywxKTtjPWZhbHNlO2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2Y9VEFiKFZBYihKQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGQuYSwxNikpLG5ldyBKZWMpLG5ldyBMZWMpLG5ldyBOZWMpLG5ldyBSZWMpO2M9Y3xmLmEhPW51bGx9YyYmeU5iKGEsKHd0YygpLFJzYyksKEJjYigpLHRydWUpKTtRZGQoYil9XG5mdW5jdGlvbiBzUmMoYSxiLGMpe3ZhciBkLGUsZixnLGg7ZT1jOyFlJiYoZT1uZXcgWmRkKTtPZGQoZSwnTGF5b3V0JyxhLmEuYy5sZW5ndGgpO2lmKENjYihERCh2TmIoYiwoSlRjKCksdlRjKSkpKSl7WmZiKCk7Zm9yKGQ9MDtkPGEuYS5jLmxlbmd0aDtkKyspe2g9KGQ8MTA/JzAnOicnKStkKys7JyAgIFNsb3QgJytoKyc6ICcraGRiKHJiKEJEKElrYihhLmEsZCksNTEpKSl9fWZvcihnPW5ldyBvbGIoYS5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksNTEpO2YucGYoYixVZGQoZSwxKSl9UWRkKGUpfVxuZnVuY3Rpb24geU1iKGEpe3ZhciBiLGM7Yj1CRChhLmEsMTkpLmE7Yz1CRChhLmIsMTkpLmE7aWYoYj49MCl7aWYoYj09Yyl7cmV0dXJuIG5ldyB2Z2QobWViKC1iLTEpLG1lYigtYi0xKSl9aWYoYj09LWMpe3JldHVybiBuZXcgdmdkKG1lYigtYiksbWViKGMrMSkpfX1pZigkd25kLk1hdGguYWJzKGIpPiR3bmQuTWF0aC5hYnMoYykpe2lmKGI8MCl7cmV0dXJuIG5ldyB2Z2QobWViKC1iKSxtZWIoYykpfXJldHVybiBuZXcgdmdkKG1lYigtYiksbWViKGMrMSkpfXJldHVybiBuZXcgdmdkKG1lYihiKzEpLG1lYihjKSl9XG5mdW5jdGlvbiBxNWIoYSl7dmFyIGIsYztjPUJEKHZOYihhLChOeWMoKSxteGMpKSwxNjMpO2I9QkQodk5iKGEsKHd0YygpLE9zYykpLDMwMyk7aWYoYz09KEN0YygpLHl0Yykpe3lOYihhLG14YyxCdGMpO3lOYihhLE9zYywoZXNjKCksZHNjKSl9ZWxzZSBpZihjPT1BdGMpe3lOYihhLG14YyxCdGMpO3lOYihhLE9zYywoZXNjKCksYnNjKSl9ZWxzZSBpZihiPT0oZXNjKCksZHNjKSl7eU5iKGEsbXhjLHl0Yyk7eU5iKGEsT3NjLGNzYyl9ZWxzZSBpZihiPT1ic2Mpe3lOYihhLG14YyxBdGMpO3lOYihhLE9zYyxjc2MpfX1cbmZ1bmN0aW9uIEZOYygpe0ZOYz1jY2I7RE5jPW5ldyBSTmM7ek5jPWUzYyhuZXcgajNjLChxVWIoKSxuVWIpLChTOGIoKSxvOGIpKTtDTmM9YzNjKGUzYyhuZXcgajNjLG5VYixDOGIpLHBVYixCOGIpO0VOYz1iM2MoYjNjKGczYyhjM2MoZTNjKG5ldyBqM2MsbFViLE04YikscFViLEw4Yiksb1ViKSxLOGIpLE44Yik7QU5jPWMzYyhlM2MoZTNjKGUzYyhuZXcgajNjLG1VYixyOGIpLG9VYix0OGIpLG9VYix1OGIpLHBVYixzOGIpO0JOYz1jM2MoZTNjKGUzYyhuZXcgajNjLG9VYix1OGIpLG9VYixfN2IpLHBVYiwkN2IpfVxuZnVuY3Rpb24gaFFjKCl7aFFjPWNjYjtjUWM9ZTNjKGMzYyhuZXcgajNjLChxVWIoKSxwVWIpLChTOGIoKSxjOGIpKSxuVWIsbzhiKTtnUWM9YjNjKGIzYyhnM2MoYzNjKGUzYyhuZXcgajNjLGxVYixNOGIpLHBVYixMOGIpLG9VYiksSzhiKSxOOGIpO2RRYz1jM2MoZTNjKGUzYyhlM2MobmV3IGozYyxtVWIscjhiKSxvVWIsdDhiKSxvVWIsdThiKSxwVWIsczhiKTtmUWM9ZTNjKGUzYyhuZXcgajNjLG5VYixDOGIpLHBVYixCOGIpO2VRYz1jM2MoZTNjKGUzYyhuZXcgajNjLG9VYix1OGIpLG9VYixfN2IpLHBVYiwkN2IpfVxuZnVuY3Rpb24gR05jKGEsYixjLGQsZSl7dmFyIGYsZztpZigoIU9aYihiKSYmYi5jLmkuYz09Yi5kLmkuY3x8IVQ2YyhsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbZS5pLm4sZS5uLGUuYV0pKSxjKSkmJiFPWmIoYikpe2IuYz09ZT9TdChiLmEsMCxuZXcgZzdjKGMpKTpEc2IoYi5hLG5ldyBnN2MoYykpO2lmKGQmJiFScWIoYS5hLGMpKXtnPUJEKHZOYihiLChOeWMoKSxqeGMpKSw3NCk7aWYoIWcpe2c9bmV3IHM3Yzt5TmIoYixqeGMsZyl9Zj1uZXcgZzdjKGMpO0dzYihnLGYsZy5jLmIsZy5jKTtRcWIoYS5hLGYpfX19XG5mdW5jdGlvbiBRYWMoYSl7dmFyIGIsYztmb3IoYz1uZXcgU3IodXIoUl9iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksMTcpO2lmKGIuYy5pLmshPShqMGIoKSxmMGIpKXt0aHJvdyB2YmIobmV3IHkyYyhGbmUrUF9iKGEpK1wiJyBoYXMgaXRzIGxheWVyIGNvbnN0cmFpbnQgc2V0IHRvIEZJUlNULCBidXQgaGFzIGF0IGxlYXN0IG9uZSBpbmNvbWluZyBlZGdlIHRoYXQgXCIrJyBkb2VzIG5vdCBjb21lIGZyb20gYSBGSVJTVF9TRVBBUkFURSBub2RlLiBUaGF0IG11c3Qgbm90IGhhcHBlbi4nKSl9fX1cbmZ1bmN0aW9uIHZqZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7ZT1hZWIoYS5EYiYyNTQpO2lmKGU9PTApe2EuRWI9Y31lbHNle2lmKGU9PTEpe2g9S0MoU0ksVWhlLDEsMiw1LDEpO2Y9empkKGEsYik7aWYoZj09MCl7aFswXT1jO2hbMV09YS5FYn1lbHNle2hbMF09YS5FYjtoWzFdPWN9fWVsc2V7aD1LQyhTSSxVaGUsMSxlKzEsNSwxKTtnPUNEKGEuRWIpO2ZvcihkPTIsaT0wLGo9MDtkPD0xMjg7ZDw8PTEpe2Q9PWI/KGhbaisrXT1jKTooYS5EYiZkKSE9MCYmKGhbaisrXT1nW2krK10pfX1hLkViPWh9YS5EYnw9Yn1cbmZ1bmN0aW9uIEVOYihhLGIsYyl7dmFyIGQsZSxmLGc7dGhpcy5iPW5ldyBSa2I7ZT0wO2Q9MDtmb3IoZz1uZXcgb2xiKGEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxNjcpO2MmJnJNYihmKTtFa2IodGhpcy5iLGYpO2UrPWYubztkKz1mLnB9aWYodGhpcy5iLmMubGVuZ3RoPjApe2Y9QkQoSWtiKHRoaXMuYiwwKSwxNjcpO2UrPWYubztkKz1mLnB9ZSo9MjtkKj0yO2I+MT8oZT1RRCgkd25kLk1hdGguY2VpbChlKmIpKSk6KGQ9UUQoJHduZC5NYXRoLmNlaWwoZC9iKSkpO3RoaXMuYT1uZXcgcE5iKGUsZCl9XG5mdW5jdGlvbiBJZ2MoYSxiLGMsZCxlLGYpe3ZhciBnLGgsaSxqLGssbCxtLG4sbyxwLHEscjtrPWQ7aWYoYi5qJiZiLm8pe249QkQoT2hiKGEuZixiLkEpLDU3KTtwPW4uZC5jK24uZC5iOy0ta31lbHNle3A9Yi5hLmMrYi5hLmJ9bD1lO2lmKGMucSYmYy5vKXtuPUJEKE9oYihhLmYsYy5DKSw1Nyk7aj1uLmQuYzsrK2x9ZWxzZXtqPWMuYS5jfXE9ai1wO2k9JHduZC5NYXRoLm1heCgyLGwtayk7aD1xL2k7bz1wK2g7Zm9yKG09azttPGw7KyttKXtnPUJEKGYuWGIobSksMTI4KTtyPWcuYS5iO2cuYS5jPW8tci8yO28rPWh9fVxuZnVuY3Rpb24gVUhjKGEsYixjLGQsZSxmKXt2YXIgZyxoLGksaixrLGw7aj1jLmMubGVuZ3RoO2YmJihhLmM9S0MoV0Qsb2plLDI1LGIubGVuZ3RoLDE1LDEpKTtmb3IoZz1lPzA6Yi5sZW5ndGgtMTtlP2c8Yi5sZW5ndGg6Zz49MDtnKz1lPzE6LTEpe2g9YltnXTtpPWQ9PShVY2QoKSx6Y2QpP2U/Vl9iKGgsZCk6U3UoVl9iKGgsZCkpOmU/U3UoVl9iKGgsZCkpOlZfYihoLGQpO2YmJihhLmNbaC5wXT1pLmdjKCkpO2ZvcihsPWkuS2MoKTtsLk9iKCk7KXtrPUJEKGwuUGIoKSwxMSk7YS5kW2sucF09aisrfUdrYihjLGkpfX1cbmZ1bmN0aW9uIGFRYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztmPUVkYihFRChhLmIuS2MoKS5QYigpKSk7aj1FZGIoRUQoUHEoYi5iKSkpO2Q9WTZjKFI2YyhhLmEpLGotYyk7ZT1ZNmMoUjZjKGIuYSksYy1mKTtrPVA2YyhkLGUpO1k2YyhrLDEvKGotZikpO3RoaXMuYT1rO3RoaXMuYj1uZXcgUmtiO2g9dHJ1ZTtnPWEuYi5LYygpO2cuUGIoKTt3aGlsZShnLk9iKCkpe2k9RWRiKEVEKGcuUGIoKSkpO2lmKGgmJmktYz5PcWUpe3RoaXMuYi5GYyhjKTtoPWZhbHNlfXRoaXMuYi5GYyhpKX1oJiZ0aGlzLmIuRmMoYyl9XG5mdW5jdGlvbiB2R2IoYSl7dmFyIGIsYyxkLGU7eUdiKGEsYS5uKTtpZihhLmQuYy5sZW5ndGg+MCl7QmxiKGEuYyk7d2hpbGUoR0diKGEsQkQobWxiKG5ldyBvbGIoYS5lLmEpKSwxMjEpKTxhLmUuYS5jLmxlbmd0aCl7Yj1BR2IoYSk7ZT1iLmUuZS1iLmQuZS1iLmE7Yi5lLmomJihlPS1lKTtmb3IoZD1uZXcgb2xiKGEuZS5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTIxKTtjLmomJihjLmUrPWUpfUJsYihhLmMpfUJsYihhLmMpO0RHYihhLEJEKG1sYihuZXcgb2xiKGEuZS5hKSksMTIxKSk7ckdiKGEpfX1cbmZ1bmN0aW9uIHJrYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGU9QkQoUWMoYS5hLChYamMoKSxUamMpKSwxNSkuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxMDEpO2M9QkQoSWtiKGQuaiwwKSwxMTMpLmQuajtmPW5ldyBUa2IoZC5qKTtPa2IoZixuZXcgWGtjKTtzd2l0Y2goYi5nKXtjYXNlIDE6amtjKGEsZixjLChGa2MoKSxEa2MpLDEpO2JyZWFrO2Nhc2UgMDpnPWxrYyhmKTtqa2MoYSxuZXcgSmliKGYsMCxnKSxjLChGa2MoKSxEa2MpLDApO2prYyhhLG5ldyBKaWIoZixnLGYuYy5sZW5ndGgpLGMsRGtjLDEpO319fVxuZnVuY3Rpb24gYzJjKGEsYil7WTFjKCk7dmFyIGMsZDtjPWo0YyhuNGMoKSxiLnRnKCkpO2lmKGMpe2Q9Yy5qO2lmKEpEKGEsMjM5KSl7cmV0dXJuIFpvZChCRChhLDMzKSk/dXFiKGQsKE41YygpLEs1YykpfHx1cWIoZCxMNWMpOnVxYihkLChONWMoKSxLNWMpKX1lbHNlIGlmKEpEKGEsMzUyKSl7cmV0dXJuIHVxYihkLChONWMoKSxJNWMpKX1lbHNlIGlmKEpEKGEsMTg2KSl7cmV0dXJuIHVxYihkLChONWMoKSxNNWMpKX1lbHNlIGlmKEpEKGEsMzU0KSl7cmV0dXJuIHVxYihkLChONWMoKSxKNWMpKX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBjM2QoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtlPWM7Zj1lLmFrKCk7aWYoVDZkKGEuZSxmKSl7aWYoZi5oaSgpKXtkPUJEKGEuZywxMTkpO2ZvcihnPTA7ZzxhLmk7KytnKXtoPWRbZ107aWYocGIoaCxlKSYmZyE9Yil7dGhyb3cgdmJiKG5ldyBXZGIoa3VlKSl9fX19ZWxzZXtpPVM2ZChhLmUuVGcoKSxmKTtkPUJEKGEuZywxMTkpO2ZvcihnPTA7ZzxhLmk7KytnKXtoPWRbZ107aWYoaS5ybChoLmFrKCkpJiZnIT1iKXt0aHJvdyB2YmIobmV3IFdkYihId2UpKX19fXJldHVybiBCRChHdGQoYSxiLGMpLDcyKX1cbmZ1bmN0aW9uIFN5KGQsYil7aWYoYiBpbnN0YW5jZW9mIE9iamVjdCl7dHJ5e2IuX19qYXZhJGV4Y2VwdGlvbj1kO2lmKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtc2llJykhPS0xJiYkZG9jLmRvY3VtZW50TW9kZTw5KXtyZXR1cm59dmFyIGM9ZDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhiLHtjYXVzZTp7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9Yy5aZCgpO3JldHVybiBhJiZhLlhkKCl9fSxzdXBwcmVzc2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5ZZCgpfX19KX1jYXRjaChhKXt9fX1cbmZ1bmN0aW9uIGxoYihhLGIpe3ZhciBjLGQsZSxmLGc7ZD1iPj41O2ImPTMxO2lmKGQ+PWEuZCl7cmV0dXJuIGEuZTwwPyhIZ2IoKSxCZ2IpOihIZ2IoKSxHZ2IpfWY9YS5kLWQ7ZT1LQyhXRCxvamUsMjUsZisxLDE1LDEpO21oYihlLGYsYS5hLGQsYik7aWYoYS5lPDApe2ZvcihjPTA7YzxkJiZhLmFbY109PTA7YysrKTtpZihjPGR8fGI+MCYmYS5hW2NdPDwzMi1iIT0wKXtmb3IoYz0wO2M8ZiYmZVtjXT09LTE7YysrKXtlW2NdPTB9Yz09ZiYmKytmOysrZVtjXX19Zz1uZXcgVmdiKGEuZSxmLGUpO0pnYihnKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIFVQYihhKXt2YXIgYixjLGQsZTtlPW1wZChhKTtjPW5ldyBrUWIoZSk7ZD1uZXcgbVFiKGUpO2I9bmV3IFJrYjtHa2IoYiwoIWEuZCYmKGEuZD1uZXcgeTVkKEIyLGEsOCw1KSksYS5kKSk7R2tiKGIsKCFhLmUmJihhLmU9bmV3IHk1ZChCMixhLDcsNCkpLGEuZSkpO3JldHVybiBCRChHQWIoTkFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLDE2KSksYyksZCksQXliKG5ldyBoemIsbmV3IGp6YixuZXcgR3piLG5ldyBJemIsT0MoR0MoeEwsMSksS2llLDEzMiwwLFsoRnliKCksRXliKSxEeWJdKSkpLDIxKX1cbmZ1bmN0aW9uIHAyZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2g9KFE2ZCgpLEJEKGIsNjYpLk9qKCkpO2lmKFQ2ZChhLmUsYikpe2lmKGIuaGkoKSYmRjJkKGEsYixkLEpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MCkpe3Rocm93IHZiYihuZXcgV2RiKGt1ZSkpfX1lbHNle2k9UzZkKGEuZS5UZygpLGIpO2U9QkQoYS5nLDExOSk7Zm9yKGc9MDtnPGEuaTsrK2cpe2Y9ZVtnXTtpZihpLnJsKGYuYWsoKSkpe3Rocm93IHZiYihuZXcgV2RiKEh3ZSkpfX19dnRkKGEsSTJkKGEsYixjKSxoP0JEKGQsNzIpOlI2ZChiLGQpKX1cbmZ1bmN0aW9uIFQ2ZChhLGIpe1E2ZCgpO3ZhciBjLGQsZTtpZihiLiRqKCkpe3JldHVybiB0cnVlfWVsc2UgaWYoYi5aaigpPT0tMil7aWYoYj09KG04ZCgpLGs4ZCl8fGI9PWg4ZHx8Yj09aThkfHxiPT1qOGQpe3JldHVybiB0cnVlfWVsc2V7ZT1hLlRnKCk7aWYoYkxkKGUsYik+PTApe3JldHVybiBmYWxzZX1lbHNle2M9ZTFkKChPNmQoKSxNNmQpLGUsYik7aWYoIWMpe3JldHVybiB0cnVlfWVsc2V7ZD1jLlpqKCk7cmV0dXJuIChkPjF8fGQ9PS0xKSYmJDFkKHExZChNNmQsYykpIT0zfX19fWVsc2V7cmV0dXJuIGZhbHNlfX1cbmZ1bmN0aW9uIFIxYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2g9YXRkKEJEKHF1ZCgoIWIuYiYmKGIuYj1uZXcgeTVkKHoyLGIsNCw3KSksYi5iKSwwKSw4MikpO2k9YXRkKEJEKHF1ZCgoIWIuYyYmKGIuYz1uZXcgeTVkKHoyLGIsNSw4KSksYi5jKSwwKSw4MikpO2lmKFhvZChoKT09WG9kKGkpKXtyZXR1cm4gbnVsbH1pZihudGQoaSxoKSl7cmV0dXJuIG51bGx9Zz1NbGQoYik7aWYoZz09Yyl7cmV0dXJuIGR9ZWxzZXtmPUJEKE9oYihhLmEsZyksMTApO2lmKGYpe2U9Zi5lO2lmKGUpe3JldHVybiBlfX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBDYWMoYSxiKXt2YXIgYztjPUJEKHZOYihhLChOeWMoKSxSd2MpKSwyNzYpO09kZChiLCdMYWJlbCBzaWRlIHNlbGVjdGlvbiAoJytjKycpJywxKTtzd2l0Y2goYy5nKXtjYXNlIDA6RGFjKGEsKHJiZCgpLG5iZCkpO2JyZWFrO2Nhc2UgMTpEYWMoYSwocmJkKCksb2JkKSk7YnJlYWs7Y2FzZSAyOkJhYyhhLChyYmQoKSxuYmQpKTticmVhaztjYXNlIDM6QmFjKGEsKHJiZCgpLG9iZCkpO2JyZWFrO2Nhc2UgNDpFYWMoYSwocmJkKCksbmJkKSk7YnJlYWs7Y2FzZSA1OkVhYyhhLChyYmQoKSxvYmQpKTt9UWRkKGIpfVxuZnVuY3Rpb24gYkdjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7ZD1SRmMoYyxhLmxlbmd0aCk7Zz1hW2RdO2lmKGdbMF0uayE9KGowYigpLGUwYikpe3JldHVybn1mPVNGYyhjLGcubGVuZ3RoKTtpPWIuajtmb3IoZT0wO2U8aS5jLmxlbmd0aDtlKyspe2g9KHRDYihlLGkuYy5sZW5ndGgpLEJEKGkuY1tlXSwxMSkpO2lmKChjP2guaj09KFVjZCgpLHpjZCk6aC5qPT0oVWNkKCksVGNkKSkmJkNjYihERCh2TmIoaCwod3RjKCksTnNjKSkpKSl7TmtiKGksZSxCRCh2TmIoZ1tmXSwod3RjKCksJHNjKSksMTEpKTtmKz1jPzE6LTF9fX1cbmZ1bmN0aW9uIHJRYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zz1uZXcgUmtiO2M9Yjtkb3tmPUJEKE9oYihhLmIsYyksMTI4KTtmLkI9Yy5jO2YuRD1jLmQ7Zy5jW2cuYy5sZW5ndGhdPWY7Yz1CRChPaGIoYS5rLGMpLDE3KX13aGlsZShjKTtkPSh0Q2IoMCxnLmMubGVuZ3RoKSxCRChnLmNbMF0sMTI4KSk7ZC5qPXRydWU7ZC5BPUJEKGQuZC5hLmVjKCkuS2MoKS5QYigpLDE3KS5jLmk7ZT1CRChJa2IoZyxnLmMubGVuZ3RoLTEpLDEyOCk7ZS5xPXRydWU7ZS5DPUJEKGUuZC5hLmVjKCkuS2MoKS5QYigpLDE3KS5kLmk7cmV0dXJuIGd9XG5mdW5jdGlvbiAkd2QoYSl7aWYoYS5nPT1udWxsKXtzd2l0Y2goYS5wKXtjYXNlIDA6YS5nPVN3ZChhKT8oQmNiKCksQWNiKTooQmNiKCksemNiKTticmVhaztjYXNlIDE6YS5nPVNjYihUd2QoYSkpO2JyZWFrO2Nhc2UgMjphLmc9YmRiKFV3ZChhKSk7YnJlYWs7Y2FzZSAzOmEuZz1Wd2QoYSk7YnJlYWs7Y2FzZSA0OmEuZz1uZXcgTmRiKFd3ZChhKSk7YnJlYWs7Y2FzZSA2OmEuZz1BZWIoWXdkKGEpKTticmVhaztjYXNlIDU6YS5nPW1lYihYd2QoYSkpO2JyZWFrO2Nhc2UgNzphLmc9V2ViKFp3ZChhKSk7fX1yZXR1cm4gYS5nfVxuZnVuY3Rpb24gaHhkKGEpe2lmKGEubj09bnVsbCl7c3dpdGNoKGEucCl7Y2FzZSAwOmEubj1fd2QoYSk/KEJjYigpLEFjYik6KEJjYigpLHpjYik7YnJlYWs7Y2FzZSAxOmEubj1TY2IoYXhkKGEpKTticmVhaztjYXNlIDI6YS5uPWJkYihieGQoYSkpO2JyZWFrO2Nhc2UgMzphLm49Y3hkKGEpO2JyZWFrO2Nhc2UgNDphLm49bmV3IE5kYihkeGQoYSkpO2JyZWFrO2Nhc2UgNjphLm49QWViKGZ4ZChhKSk7YnJlYWs7Y2FzZSA1OmEubj1tZWIoZXhkKGEpKTticmVhaztjYXNlIDc6YS5uPVdlYihneGQoYSkpO319cmV0dXJuIGEubn1cbmZ1bmN0aW9uIFFEYihhKXt2YXIgYixjLGQsZSxmLGcsaDtmb3IoZj1uZXcgb2xiKGEuYS5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMzA3KTtkLmc9MDtkLmk9MDtkLmUuYS4kYigpfWZvcihlPW5ldyBvbGIoYS5hLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwzMDcpO2ZvcihjPWQuYS5hLmVjKCkuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSw1Nyk7Zm9yKGg9Yi5jLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksNTcpO2lmKGcuYSE9ZCl7UXFiKGQuZSxnKTsrK2cuYS5nOysrZy5hLml9fX19fVxuZnVuY3Rpb24gZ09iKGEsYil7dmFyIGMsZCxlLGYsZyxoO2g9QXhiKGEuYSxiLmIpO2lmKCFoKXt0aHJvdyB2YmIobmV3IFpkYignSW52YWxpZCBoaXRib3hlcyBmb3Igc2NhbmxpbmUgb3ZlcmxhcCBjYWxjdWxhdGlvbi4nKSl9Zz1mYWxzZTtmb3IoZj0oZD1uZXcgWXdiKChuZXcgY3hiKChuZXcgR2piKGEuYS5hKSkuYSkpLmIpLG5ldyBOamIoZCkpO3NpYihmLmEuYSk7KXtlPShjPVd3YihmLmEpLEJEKGMuY2QoKSw2NSkpO2lmKGJPYihiLmIsZSkpe1QkYyhhLmIuYSxiLmIsZSk7Zz10cnVlfWVsc2V7aWYoZyl7YnJlYWt9fX19XG5mdW5jdGlvbiBHNWIoYSl7dmFyIGIsYyxkLGUsZjtlPUJEKHZOYihhLChOeWMoKSxGeGMpKSwyMSk7Zj1CRCh2TmIoYSxJeGMpLDIxKTtjPW5ldyBmN2MoYS5mLmErYS5kLmIrYS5kLmMsYS5mLmIrYS5kLmQrYS5kLmEpO2I9bmV3IGc3YyhjKTtpZihlLkhjKCh0ZGQoKSxwZGQpKSl7ZD1CRCh2TmIoYSxIeGMpLDgpO2lmKGYuSGMoKElkZCgpLEJkZCkpKXtkLmE8PTAmJihkLmE9MjApO2QuYjw9MCYmKGQuYj0yMCl9Yi5hPSR3bmQuTWF0aC5tYXgoYy5hLGQuYSk7Yi5iPSR3bmQuTWF0aC5tYXgoYy5iLGQuYil9SDViKGEsYyxiKX1cbmZ1bmN0aW9uIHRvYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07ZT1iP25ldyBDb2M6bmV3IEVvYztmPWZhbHNlO2Rve2Y9ZmFsc2U7aj1iP1N1KGEuYik6YS5iO2ZvcihpPWouS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwyOSk7bT1NdShoLmEpO2J8fG5ldyBvdihtKTtmb3IobD1uZXcgb2xiKG0pO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxMCk7aWYoZS5NYihrKSl7ZD1rO2M9QkQodk5iKGssKHd0YygpLHVzYykpLDMwNSk7Zz1iP2MuYjpjLms7Zj1yb2MoZCxnLGIsZmFsc2UpfX19fXdoaWxlKGYpfVxuZnVuY3Rpb24gV0NjKGEsYixjKXt2YXIgZCxlLGYsZyxoO09kZChjLCdMb25nZXN0IHBhdGggbGF5ZXJpbmcnLDEpO2EuYT1iO2g9YS5hLmE7YS5iPUtDKFdELG9qZSwyNSxoLmMubGVuZ3RoLDE1LDEpO2Q9MDtmb3IoZz1uZXcgb2xiKGgpO2cuYTxnLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihnKSwxMCk7ZS5wPWQ7YS5iW2RdPS0xOysrZH1mb3IoZj1uZXcgb2xiKGgpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7WUNjKGEsZSl9aC5jPUtDKFNJLFVoZSwxLDAsNSwxKTthLmE9bnVsbDthLmI9bnVsbDtRZGQoYyl9XG5mdW5jdGlvbiBRVmIoYSxiKXt2YXIgYyxkLGU7Yi5hPyhBeGIoYS5iLGIuYiksYS5hW2IuYi5pXT1CRChFeGIoYS5iLGIuYiksODEpLGM9QkQoRHhiKGEuYixiLmIpLDgxKSwhIWMmJihhLmFbYy5pXT1iLmIpLHVuZGVmaW5lZCk6KGQ9QkQoRXhiKGEuYixiLmIpLDgxKSwhIWQmJmQ9PWEuYVtiLmIuaV0mJiEhZC5kJiZkLmQhPWIuYi5kJiZkLmYuRmMoYi5iKSxlPUJEKER4YihhLmIsYi5iKSw4MSksISFlJiZhLmFbZS5pXT09Yi5iJiYhIWUuZCYmZS5kIT1iLmIuZCYmYi5iLmYuRmMoZSksRnhiKGEuYixiLmIpLHVuZGVmaW5lZCl9XG5mdW5jdGlvbiB6YmMoYSxiKXt2YXIgYyxkLGUsZixnLGg7Zj1hLmQ7aD1FZGIoRUQodk5iKGEsKE55YygpLFp3YykpKSk7aWYoaDwwKXtoPTA7eU5iKGEsWndjLGgpfWIuby5iPWg7Zz0kd25kLk1hdGguZmxvb3IoaC8yKTtkPW5ldyBIMGI7RzBiKGQsKFVjZCgpLFRjZCkpO0YwYihkLGIpO2Qubi5iPWc7ZT1uZXcgSDBiO0cwYihlLHpjZCk7RjBiKGUsYik7ZS5uLmI9ZztSWmIoYSxkKTtjPW5ldyBVWmI7dE5iKGMsYSk7eU5iKGMsanhjLG51bGwpO1FaYihjLGUpO1JaYihjLGYpO3liYyhiLGEsYyk7d2JjKGEsYyk7cmV0dXJuIGN9XG5mdW5jdGlvbiB1TmMoYSl7dmFyIGIsYztjPUJEKHZOYihhLCh3dGMoKSxLc2MpKSwyMSk7Yj1uZXcgajNjO2lmKGMuSGMoKE9yYygpLElyYykpKXtkM2MoYixvTmMpO2QzYyhiLHFOYyl9aWYoYy5IYyhLcmMpfHxDY2IoREQodk5iKGEsKE55YygpLCR3YykpKSkpe2QzYyhiLHFOYyk7Yy5IYyhMcmMpJiZkM2MoYixyTmMpfWMuSGMoSHJjKSYmZDNjKGIsbk5jKTtjLkhjKE5yYykmJmQzYyhiLHNOYyk7Yy5IYyhKcmMpJiZkM2MoYixwTmMpO2MuSGMoRXJjKSYmZDNjKGIsbE5jKTtjLkhjKEdyYykmJmQzYyhiLG1OYyk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBJaGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtO2Q9YS5kO2Y9Yi5kO2g9ZCtmO2k9YS5lIT1iLmU/LTE6MTtpZihoPT0yKXtrPUliYih4YmIoYS5hWzBdLFlqZSkseGJiKGIuYVswXSxZamUpKTttPVRiYihrKTtsPVRiYihQYmIoaywzMikpO3JldHVybiBsPT0wP25ldyBVZ2IoaSxtKTpuZXcgVmdiKGksMixPQyhHQyhXRCwxKSxvamUsMjUsMTUsW20sbF0pKX1jPWEuYTtlPWIuYTtnPUtDKFdELG9qZSwyNSxoLDE1LDEpO0ZoYihjLGQsZSxmLGcpO2o9bmV3IFZnYihpLGgsZyk7SmdiKGopO3JldHVybiBqfVxuZnVuY3Rpb24gR3diKGEsYixjLGQpe3ZhciBlLGY7aWYoIWIpe3JldHVybiBjfWVsc2V7ZT1hLmEudWUoYy5kLGIuZCk7aWYoZT09MCl7ZC5kPWlqYihiLGMuZSk7ZC5iPXRydWU7cmV0dXJuIGJ9Zj1lPDA/MDoxO2IuYVtmXT1Hd2IoYSxiLmFbZl0sYyxkKTtpZihId2IoYi5hW2ZdKSl7aWYoSHdiKGIuYVsxLWZdKSl7Yi5iPXRydWU7Yi5hWzBdLmI9ZmFsc2U7Yi5hWzFdLmI9ZmFsc2V9ZWxzZXtId2IoYi5hW2ZdLmFbZl0pPyhiPU93YihiLDEtZikpOkh3YihiLmFbZl0uYVsxLWZdKSYmKGI9TndiKGIsMS1mKSl9fX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHdIYihhLGIsYyl7dmFyIGQsZSxmLGc7ZT1hLmk7ZD1hLm47dkhiKGEsKGdIYigpLGRIYiksZS5jK2QuYixjKTt2SGIoYSxmSGIsZS5jK2UuYi1kLmMtY1syXSxjKTtnPWUuYi1kLmItZC5jO2lmKGNbMF0+MCl7Y1swXSs9YS5kO2ctPWNbMF19aWYoY1syXT4wKXtjWzJdKz1hLmQ7Zy09Y1syXX1mPSR3bmQuTWF0aC5tYXgoMCxnKTtjWzFdPSR3bmQuTWF0aC5tYXgoY1sxXSxnKTt2SGIoYSxlSGIsZS5jK2QuYitjWzBdLShjWzFdLWcpLzIsYyk7aWYoYj09ZUhiKXthLmMuYj1mO2EuYy5jPWUuYytkLmIrKGYtZykvMn19XG5mdW5jdGlvbiBBWWIoKXt0aGlzLmM9S0MoVUQsVmplLDI1LChVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKS5sZW5ndGgsMTUsMSk7dGhpcy5iPUtDKFVELFZqZSwyNSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pLmxlbmd0aCwxNSwxKTt0aGlzLmE9S0MoVUQsVmplLDI1LE9DKEdDKEYxLDEpLGJuZSw2MSwwLFtTY2QsQWNkLHpjZCxSY2QsVGNkXSkubGVuZ3RoLDE1LDEpO3psYih0aGlzLmMsUGplKTt6bGIodGhpcy5iLFFqZSk7emxiKHRoaXMuYSxRamUpfVxuZnVuY3Rpb24gVWZlKGEsYixjKXt2YXIgZCxlLGYsZztpZihiPD1jKXtlPWI7Zj1jfWVsc2V7ZT1jO2Y9Yn1kPTA7aWYoYS5iPT1udWxsKXthLmI9S0MoV0Qsb2plLDI1LDIsMTUsMSk7YS5iWzBdPWU7YS5iWzFdPWY7YS5jPXRydWV9ZWxzZXtkPWEuYi5sZW5ndGg7aWYoYS5iW2QtMV0rMT09ZSl7YS5iW2QtMV09ZjtyZXR1cm59Zz1LQyhXRCxvamUsMjUsZCsyLDE1LDEpOyRmYihhLmIsMCxnLDAsZCk7YS5iPWc7YS5iW2QtMV0+PWUmJihhLmM9ZmFsc2UsYS5hPWZhbHNlKTthLmJbZCsrXT1lO2EuYltkXT1mO2EuY3x8WWZlKGEpfX1cbmZ1bmN0aW9uIGluYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7aj1iLmQ7YS5hPW5ldyBTa2Ioai5jLmxlbmd0aCk7YS5jPW5ldyBMcWI7Zm9yKGg9bmV3IG9sYihqKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTAxKTtmPW5ldyB1T2MobnVsbCk7RWtiKGEuYSxmKTtSaGIoYS5jLGcsZil9YS5iPW5ldyBMcWI7Z25jKGEsYik7Zm9yKGQ9MDtkPGouYy5sZW5ndGgtMTtkKyspe2k9QkQoSWtiKGIuZCxkKSwxMDEpO2ZvcihlPWQrMTtlPGouYy5sZW5ndGg7ZSsrKXtqbmMoYSxpLEJEKElrYihiLmQsZSksMTAxKSxjKX19fVxuZnVuY3Rpb24geVNjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoIVFxKGIpKXtpPVVkZChjLChKRChiLDE0KT9CRChiLDE0KS5nYygpOnNyKGIuS2MoKSkpL2EuYXwwKTtPZGQoaSxYcWUsMSk7aD1uZXcgQlNjO2c9MDtmb3IoZj1iLktjKCk7Zi5PYigpOyl7ZD1CRChmLlBiKCksODYpO2g9cGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW2gsbmV3IFpSYyhkKV0pKTtnPGQuZi5iJiYoZz1kLmYuYil9Zm9yKGU9Yi5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDg2KTt5TmIoZCwobVRjKCksYlRjKSxnKX1RZGQoaSk7eVNjKGEsaCxjKX19XG5mdW5jdGlvbiBiSmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtjPVFqZTtoPShqMGIoKSxoMGIpO2ZvcihlPW5ldyBvbGIoYi5hKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTApO2Y9ZC5rO2lmKGYhPWgwYil7Zz1FRCh2TmIoZCwod3RjKCksYXRjKSkpO2lmKGc9PW51bGwpe2M9JHduZC5NYXRoLm1heChjLDApO2Qubi5iPWMraUJjKGEuYSxmLGgpfWVsc2V7ZC5uLmI9KHVDYihnKSxnKX19aT1pQmMoYS5hLGYsaCk7ZC5uLmI8YytpK2QuZC5kJiYoZC5uLmI9YytpK2QuZC5kKTtjPWQubi5iK2Quby5iK2QuZC5hO2g9Zn19XG5mdW5jdGlvbiB1UWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbDtmPWl0ZChiLGZhbHNlLGZhbHNlKTtqPW9mZChmKTtsPUVkYihFRChoa2QoYiwoQ1BiKCksdlBiKSkpKTtlPXNRYihqLGwrYS5hKTtrPW5ldyBYT2IoZSk7dE5iKGssYik7UmhiKGEuYixiLGspO2MuY1tjLmMubGVuZ3RoXT1rO2k9KCFiLm4mJihiLm49bmV3IGNVZChEMixiLDEsNykpLGIubik7Zm9yKGg9bmV3IEZ5ZChpKTtoLmUhPWguaS5nYygpOyl7Zz1CRChEeWQoaCksMTM3KTtkPXdRYihhLGcsdHJ1ZSwwLDApO2MuY1tjLmMubGVuZ3RoXT1kfXJldHVybiBrfVxuZnVuY3Rpb24gSlZjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrOyEhYS5kJiZhLmQubGcoZSk7Zj1CRChlLlhiKDApLDMzKTtpZihIVmMoYSxjLGYsZmFsc2UpKXtyZXR1cm4gdHJ1ZX1nPUJEKGUuWGIoZS5nYygpLTEpLDMzKTtpZihIVmMoYSxkLGcsdHJ1ZSkpe3JldHVybiB0cnVlfWlmKENWYyhhLGUpKXtyZXR1cm4gdHJ1ZX1mb3Ioaz1lLktjKCk7ay5PYigpOyl7aj1CRChrLlBiKCksMzMpO2ZvcihpPWIuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwzMyk7aWYoQlZjKGEsaixoKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBxaWQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtO209Yi5jLmxlbmd0aDtsPShqPWEuWWcoYyksQkQoaj49MD9hLl9nKGosZmFsc2UsdHJ1ZSk6c2lkKGEsYyxmYWxzZSksNTgpKTtuOmZvcihmPWwuS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSw1Nik7Zm9yKGs9MDtrPG07KytrKXtnPSh0Q2IoayxiLmMubGVuZ3RoKSxCRChiLmNba10sNzIpKTtpPWcuZGQoKTtoPWcuYWsoKTtkPWUuYmgoaCxmYWxzZSk7aWYoaT09bnVsbD9kIT1udWxsOiFwYihpLGQpKXtjb250aW51ZSBufX1yZXR1cm4gZX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFY2YihhLGIsYyxkKXt2YXIgZSxmLGcsaDtlPUJEKFlfYihiLChVY2QoKSxUY2QpKS5LYygpLlBiKCksMTEpO2Y9QkQoWV9iKGIsemNkKS5LYygpLlBiKCksMTEpO2ZvcihoPW5ldyBvbGIoYS5qKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTEpO3doaWxlKGcuZS5jLmxlbmd0aCE9MCl7UlpiKEJEKElrYihnLmUsMCksMTcpLGUpfXdoaWxlKGcuZy5jLmxlbmd0aCE9MCl7UVpiKEJEKElrYihnLmcsMCksMTcpLGYpfX1jfHx5TmIoYiwod3RjKCksVnNjKSxudWxsKTtkfHx5TmIoYiwod3RjKCksV3NjKSxudWxsKX1cbmZ1bmN0aW9uIGl0ZChhLGIsYyl7dmFyIGQsZTtpZigoIWEuYSYmKGEuYT1uZXcgY1VkKEEyLGEsNiw2KSksYS5hKS5pPT0wKXtyZXR1cm4gZXRkKGEpfWVsc2V7ZD1CRChxdWQoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSksMCksMjAyKTtpZihiKXtVeGQoKCFkLmEmJihkLmE9bmV3IHhNZCh5MixkLDUpKSxkLmEpKTtvbWQoZCwwKTtwbWQoZCwwKTtobWQoZCwwKTtpbWQoZCwwKX1pZihjKXtlPSghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpO3doaWxlKGUuaT4xKXtYeGQoZSxlLmktMSl9fXJldHVybiBkfX1cbmZ1bmN0aW9uIFoyYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO09kZChiLCdDb21tZW50IHBvc3QtcHJvY2Vzc2luZycsMSk7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyOSk7ZD1uZXcgUmtiO2ZvcihoPW5ldyBvbGIoZS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTApO2k9QkQodk5iKGcsKHd0YygpLHZ0YykpLDE1KTtjPUJEKHZOYihnLHRzYyksMTUpO2lmKCEhaXx8ISFjKXskMmIoZyxpLGMpOyEhaSYmR2tiKGQsaSk7ISFjJiZHa2IoZCxjKX19R2tiKGUuYSxkKX1RZGQoYil9XG5mdW5jdGlvbiBFYWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtjPW5ldyBqa2I7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyOSk7aT10cnVlO2Q9MDtmb3IoaD1uZXcgb2xiKGUuYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTtzd2l0Y2goZy5rLmcpe2Nhc2UgNDorK2Q7Y2FzZSAxOlhqYihjLGcpO2JyZWFrO2Nhc2UgMDpHYWMoZyxiKTtkZWZhdWx0OmMuYj09Yy5jfHxGYWMoYyxkLGksZmFsc2UsYik7aT1mYWxzZTtkPTA7fX1jLmI9PWMuY3x8RmFjKGMsZCxpLHRydWUsYil9fVxuZnVuY3Rpb24gRWJjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7ZT1uZXcgUmtiO2ZvcihjPTA7Yzw9YS5pO2MrKyl7ZD1uZXcgSDFiKGIpO2QucD1hLmktYztlLmNbZS5jLmxlbmd0aF09ZH1mb3IoaD1uZXcgb2xiKGEubyk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTskX2IoZyxCRChJa2IoZSxhLmktYS5mW2cucF0pLDI5KSl9Zj1uZXcgb2xiKGUpO3doaWxlKGYuYTxmLmMuYy5sZW5ndGgpe2k9QkQobWxiKGYpLDI5KTtpLmEuYy5sZW5ndGg9PTAmJm5sYihmKX1iLmIuYz1LQyhTSSxVaGUsMSwwLDUsMSk7R2tiKGIuYixlKX1cbmZ1bmN0aW9uIEtIYyhhLGIpe3ZhciBjLGQsZSxmLGcsaDtjPTA7Zm9yKGg9bmV3IG9sYihiKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTEpO0FIYyhhLmIsYS5kW2cucF0pO2ZvcihlPW5ldyBiMWIoZy5iKTtsbGIoZS5hKXx8bGxiKGUuYik7KXtkPUJEKGxsYihlLmEpP21sYihlLmEpOm1sYihlLmIpLDE3KTtmPWFJYyhhLGc9PWQuYz9kLmQ6ZC5jKTtpZihmPmEuZFtnLnBdKXtjKz16SGMoYS5iLGYpO1dqYihhLmEsbWViKGYpKX19d2hpbGUoIWFrYihhLmEpKXt4SGMoYS5iLEJEKGZrYihhLmEpLDE5KS5hKX19cmV0dXJuIGN9XG5mdW5jdGlvbiBvMmMoYSxiLGMpe3ZhciBkLGUsZixnO2Y9KCFiLmEmJihiLmE9bmV3IGNVZChFMixiLDEwLDExKSksYi5hKS5pO2ZvcihlPW5ldyBGeWQoKCFiLmEmJihiLmE9bmV3IGNVZChFMixiLDEwLDExKSksYi5hKSk7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDMzKTsoIWQuYSYmKGQuYT1uZXcgY1VkKEUyLGQsMTAsMTEpKSxkLmEpLmk9PTB8fChmKz1vMmMoYSxkLGZhbHNlKSl9aWYoYyl7Zz1Yb2QoYik7d2hpbGUoZyl7Zis9KCFnLmEmJihnLmE9bmV3IGNVZChFMixnLDEwLDExKSksZy5hKS5pO2c9WG9kKGcpfX1yZXR1cm4gZn1cbmZ1bmN0aW9uIFh4ZChhLGIpe3ZhciBjLGQsZSxmO2lmKGEuZWooKSl7ZD1udWxsO2U9YS5maigpO2EuaWooKSYmKGQ9YS5raihhLnBpKGIpLG51bGwpKTtjPWEuWmkoNCxmPXR1ZChhLGIpLG51bGwsYixlKTtpZihhLmJqKCkmJmYhPW51bGwpe2Q9YS5kaihmLGQpO2lmKCFkKXthLiRpKGMpfWVsc2V7ZC5FaShjKTtkLkZpKCl9fWVsc2V7aWYoIWQpe2EuJGkoYyl9ZWxzZXtkLkVpKGMpO2QuRmkoKX19cmV0dXJuIGZ9ZWxzZXtmPXR1ZChhLGIpO2lmKGEuYmooKSYmZiE9bnVsbCl7ZD1hLmRqKGYsbnVsbCk7ISFkJiZkLkZpKCl9cmV0dXJuIGZ9fVxuZnVuY3Rpb24gVUtiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrO2o9YS5hO2I9bmV3IFRxYjtpPTA7Zm9yKGQ9bmV3IG9sYihhLmQpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyMjIpO2s9MDtrdGIoYy5iLG5ldyBYS2IpO2ZvcihnPUpzYihjLmIsMCk7Zy5iIT1nLmQuYzspe2Y9QkQoWHNiKGcpLDIyMik7aWYoYi5hLl9iKGYpKXtlPWMuYztoPWYuYztrPGguZCtoLmEraiYmaytlLmEraj5oLmQmJihrPWguZCtoLmErail9fWMuYy5kPWs7Yi5hLnpjKGMsYik7aT0kd25kLk1hdGgubWF4KGksYy5jLmQrYy5jLmEpfXJldHVybiBpfVxuZnVuY3Rpb24gT3JjKCl7T3JjPWNjYjtGcmM9bmV3IFByYygnQ09NTUVOVFMnLDApO0hyYz1uZXcgUHJjKCdFWFRFUk5BTF9QT1JUUycsMSk7SXJjPW5ldyBQcmMoJ0hZUEVSRURHRVMnLDIpO0pyYz1uZXcgUHJjKCdIWVBFUk5PREVTJywzKTtLcmM9bmV3IFByYygnTk9OX0ZSRUVfUE9SVFMnLDQpO0xyYz1uZXcgUHJjKCdOT1JUSF9TT1VUSF9QT1JUUycsNSk7TnJjPW5ldyBQcmMoV25lLDYpO0VyYz1uZXcgUHJjKCdDRU5URVJfTEFCRUxTJyw3KTtHcmM9bmV3IFByYygnRU5EX0xBQkVMUycsOCk7TXJjPW5ldyBQcmMoJ1BBUlRJVElPTlMnLDkpfVxuZnVuY3Rpb24gZ1ZjKGEpe3ZhciBiLGMsZCxlLGY7ZT1uZXcgUmtiO2I9bmV3IFZxYigoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtmb3IoZD1uZXcgU3IodXIoX3NkKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksNzkpO2lmKCFKRChxdWQoKCFjLmImJihjLmI9bmV3IHk1ZCh6MixjLDQsNykpLGMuYiksMCksMTg2KSl7Zj1hdGQoQkQocXVkKCghYy5jJiYoYy5jPW5ldyB5NWQoejIsYyw1LDgpKSxjLmMpLDApLDgyKSk7Yi5hLl9iKGYpfHwoZS5jW2UuYy5sZW5ndGhdPWYsdHJ1ZSl9fXJldHVybiBlfVxuZnVuY3Rpb24gZlZjKGEpe3ZhciBiLGMsZCxlLGYsZztmPW5ldyBUcWI7Yj1uZXcgVnFiKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO2ZvcihlPW5ldyBTcih1cihfc2QoYSkuYS5LYygpLG5ldyBTcSkpO1FyKGUpOyl7ZD1CRChScihlKSw3OSk7aWYoIUpEKHF1ZCgoIWQuYiYmKGQuYj1uZXcgeTVkKHoyLGQsNCw3KSksZC5iKSwwKSwxODYpKXtnPWF0ZChCRChxdWQoKCFkLmMmJihkLmM9bmV3IHk1ZCh6MixkLDUsOCkpLGQuYyksMCksODIpKTtiLmEuX2IoZyl8fChjPWYuYS56YyhnLGYpLGM9PW51bGwpfX1yZXR1cm4gZn1cbmZ1bmN0aW9uIHpBKGEsYixjLGQsZSl7aWYoZDwwKXtkPW9BKGEsZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtiamUsY2plLGRqZSxlamUsZmplLGdqZSxoamUsaWplLGpqZSxramUsbGplLG1qZV0pLGIpO2Q8MCYmKGQ9b0EoYSxlLE9DKEdDKFpJLDEpLG5pZSwyLDYsWydKYW4nLCdGZWInLCdNYXInLCdBcHInLGZqZSwnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ10pLGIpKTtpZihkPDApe3JldHVybiBmYWxzZX1jLms9ZDtyZXR1cm4gdHJ1ZX1lbHNlIGlmKGQ+MCl7Yy5rPWQtMTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBCQShhLGIsYyxkLGUpe2lmKGQ8MCl7ZD1vQShhLGUsT0MoR0MoWkksMSksbmllLDIsNixbYmplLGNqZSxkamUsZWplLGZqZSxnamUsaGplLGlqZSxqamUsa2plLGxqZSxtamVdKSxiKTtkPDAmJihkPW9BKGEsZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnSmFuJywnRmViJywnTWFyJywnQXByJyxmamUsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddKSxiKSk7aWYoZDwwKXtyZXR1cm4gZmFsc2V9Yy5rPWQ7cmV0dXJuIHRydWV9ZWxzZSBpZihkPjApe2Muaz1kLTE7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gREEoYSxiLGMsZCxlLGYpe3ZhciBnLGgsaSxqO2g9MzI7aWYoZDwwKXtpZihiWzBdPj1hLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWg9YmZiKGEsYlswXSk7aWYoaCE9NDMmJmghPTQ1KXtyZXR1cm4gZmFsc2V9KytiWzBdO2Q9ckEoYSxiKTtpZihkPDApe3JldHVybiBmYWxzZX1oPT00NSYmKGQ9LWQpfWlmKGg9PTMyJiZiWzBdLWM9PTImJmUuYj09Mil7aT1uZXcgZUI7aj1pLnEuZ2V0RnVsbFllYXIoKS1uamUrbmplLTgwO2c9aiUxMDA7Zi5hPWQ9PWc7ZCs9KGovMTAwfDApKjEwMCsoZDxnPzEwMDowKX1mLnA9ZDtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIEwxYihhLGIpe3ZhciBjLGQsZSxmLGc7aWYoIVhvZChhKSl7cmV0dXJufWc9QkQodk5iKGIsKE55YygpLEZ4YykpLDE3NCk7UEQoaGtkKGEsVnhjKSk9PT1QRCgoZGNkKCksY2NkKSkmJmprZChhLFZ4YyxiY2QpO2Q9KFBnZCgpLG5ldyBiaGQoWG9kKGEpKSk7Zj1uZXcgaGhkKCFYb2QoYSk/bnVsbDpuZXcgYmhkKFhvZChhKSksYSk7ZT1QR2IoZCxmLGZhbHNlLHRydWUpO3JxYihnLCh0ZGQoKSxwZGQpKTtjPUJEKHZOYihiLEh4YyksOCk7Yy5hPSR3bmQuTWF0aC5tYXgoZS5hLGMuYSk7Yy5iPSR3bmQuTWF0aC5tYXgoZS5iLGMuYil9XG5mdW5jdGlvbiBQYWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtmb3IoZz1CRCh2TmIoYSwod3RjKCksTHNjKSksMTUpLktjKCk7Zy5PYigpOyl7Zj1CRChnLlBiKCksMTApO3N3aXRjaChCRCh2TmIoZiwoTnljKCksbXhjKSksMTYzKS5nKXtjYXNlIDI6JF9iKGYsYik7YnJlYWs7Y2FzZSA0OiRfYihmLGMpO31mb3IoZT1uZXcgU3IodXIoT19iKGYpLmEuS2MoKSxuZXcgU3EpKTtRcihlKTspe2Q9QkQoUnIoZSksMTcpO2lmKCEhZC5jJiYhIWQuZCl7Y29udGludWV9aD0hZC5kO2k9QkQodk5iKGQsY3RjKSwxMSk7aD9SWmIoZCxpKTpRWmIoZCxpKX19fVxuZnVuY3Rpb24gQWxjKCl7QWxjPWNjYjt0bGM9bmV3IEJsYyh4bGUsMCwoVWNkKCksQWNkKSxBY2QpO3dsYz1uZXcgQmxjKHpsZSwxLFJjZCxSY2QpO3NsYz1uZXcgQmxjKHlsZSwyLHpjZCx6Y2QpO3psYz1uZXcgQmxjKEFsZSwzLFRjZCxUY2QpO3ZsYz1uZXcgQmxjKCdOT1JUSF9XRVNUX0NPUk5FUicsNCxUY2QsQWNkKTt1bGM9bmV3IEJsYygnTk9SVEhfRUFTVF9DT1JORVInLDUsQWNkLHpjZCk7eWxjPW5ldyBCbGMoJ1NPVVRIX1dFU1RfQ09STkVSJyw2LFJjZCxUY2QpO3hsYz1uZXcgQmxjKCdTT1VUSF9FQVNUX0NPUk5FUicsNyx6Y2QsUmNkKX1cbmZ1bmN0aW9uIGk2Yygpe2k2Yz1jY2I7aDZjPU9DKEdDKFhELDEpLFNqZSwyNSwxNCxbMSwxLDIsNiwyNCwxMjAsNzIwLDUwNDAsNDAzMjAsMzYyODgwLDM2Mjg4MDAsMzk5MTY4MDAsNDc5MDAxNjAwLDYyMjcwMjA4MDAsODcxNzgyOTEyMDAsMTMwNzY3NDM2ODAwMCx7bDozNTA2MTc2LG06Nzk0MDc3LGg6MX0se2w6ODg0NzM2LG06OTE2NDExLGg6MjB9LHtsOjMzNDIzMzYsbTozOTEyNDg5LGg6MzYzfSx7bDo1ODk4MjQsbTozMDM0MTM4LGg6NjkxNH0se2w6MzQwNzg3MixtOjE5NjI1MDYsaDoxMzgyOTR9XSk7JHduZC5NYXRoLnBvdygyLC02NSl9XG5mdW5jdGlvbiBQY2MoYSxiKXt2YXIgYyxkLGUsZixnO2lmKGEuYy5sZW5ndGg9PTApe3JldHVybiBuZXcgdmdkKG1lYigwKSxtZWIoMCkpfWM9KHRDYigwLGEuYy5sZW5ndGgpLEJEKGEuY1swXSwxMSkpLmo7Zz0wO2Y9Yi5nO2Q9Yi5nKzE7d2hpbGUoZzxhLmMubGVuZ3RoLTEmJmMuZzxmKXsrK2c7Yz0odENiKGcsYS5jLmxlbmd0aCksQkQoYS5jW2ddLDExKSkuan1lPWc7d2hpbGUoZTxhLmMubGVuZ3RoLTEmJmMuZzxkKXsrK2U7Yz0odENiKGcsYS5jLmxlbmd0aCksQkQoYS5jW2ddLDExKSkuan1yZXR1cm4gbmV3IHZnZChtZWIoZyksbWViKGUpKX1cbmZ1bmN0aW9uIFI5YihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07Zj1iLmMubGVuZ3RoO2c9KHRDYihjLGIuYy5sZW5ndGgpLEJEKGIuY1tjXSwyODYpKTtoPWcuYS5vLmE7bD1nLmM7bT0wO2ZvcihqPWcuYztqPD1nLmY7aisrKXtpZihoPD1hLmFbal0pe3JldHVybiBqfWs9YS5hW2pdO2k9bnVsbDtmb3IoZT1jKzE7ZTxmO2UrKyl7ZD0odENiKGUsYi5jLmxlbmd0aCksQkQoYi5jW2VdLDI4NikpO2QuYzw9aiYmZC5mPj1qJiYoaT1kKX0hIWkmJihrPSR3bmQuTWF0aC5tYXgoayxpLmEuby5hKSk7aWYoaz5tKXtsPWo7bT1rfX1yZXR1cm4gbH1cbmZ1bmN0aW9uIG9kZShhLGIsYyl7dmFyIGQsZSxmO2EuZT1jO2EuZD0wO2EuYj0wO2EuZj0xO2EuaT1iOyhhLmUmMTYpPT0xNiYmKGEuaT1YZWUoYS5pKSk7YS5qPWEuaS5sZW5ndGg7bmRlKGEpO2Y9cmRlKGEpO2lmKGEuZCE9YS5qKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksc3VlKSkpKTtpZihhLmcpe2ZvcihkPTA7ZDxhLmcuYS5jLmxlbmd0aDtkKyspe2U9QkQoVXZiKGEuZyxkKSw1ODQpO2lmKGEuZjw9ZS5hKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksdHVlKSkpKX1hLmcuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKX1yZXR1cm4gZn1cbmZ1bmN0aW9uIF9QZChhLGIpe3ZhciBjLGQsZTtpZihiPT1udWxsKXtmb3IoZD0oIWEuYSYmKGEuYT1uZXcgY1VkKGc1LGEsOSw1KSksbmV3IEZ5ZChhLmEpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksNjc4KTtlPWMuYztpZigoZT09bnVsbD9jLnpiOmUpPT1udWxsKXtyZXR1cm4gY319fWVsc2V7Zm9yKGQ9KCFhLmEmJihhLmE9bmV3IGNVZChnNSxhLDksNSkpLG5ldyBGeWQoYS5hKSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDY3OCk7aWYoZGZiKGIsKGU9Yy5jLGU9PW51bGw/Yy56YjplKSkpe3JldHVybiBjfX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBLSWIoYSxiKXt2YXIgYztjPW51bGw7c3dpdGNoKGIuZyl7Y2FzZSAxOmEuZS5YZSgoWTljKCksbzljKSkmJihjPUJEKGEuZS5XZShvOWMpLDI0OSkpO2JyZWFrO2Nhc2UgMzphLmUuWGUoKFk5YygpLHA5YykpJiYoYz1CRChhLmUuV2UocDljKSwyNDkpKTticmVhaztjYXNlIDI6YS5lLlhlKChZOWMoKSxuOWMpKSYmKGM9QkQoYS5lLldlKG45YyksMjQ5KSk7YnJlYWs7Y2FzZSA0OmEuZS5YZSgoWTljKCkscTljKSkmJihjPUJEKGEuZS5XZShxOWMpLDI0OSkpO30hYyYmKGM9QkQoYS5lLldlKChZOWMoKSxsOWMpKSwyNDkpKTtyZXR1cm4gY31cbmZ1bmN0aW9uIE9DYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsO2IucD0xO2Y9Yi5jO2ZvcihsPVdfYihiLChLQWMoKSxJQWMpKS5LYygpO2wuT2IoKTspe2s9QkQobC5QYigpLDExKTtmb3IoZT1uZXcgb2xiKGsuZyk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE3KTtqPWQuZC5pO2lmKGIhPWope2c9ai5jO2lmKGcucDw9Zi5wKXtoPWYucCsxO2lmKGg9PWMuYi5jLmxlbmd0aCl7aT1uZXcgSDFiKGMpO2kucD1oO0VrYihjLmIsaSk7JF9iKGosaSl9ZWxzZXtpPUJEKElrYihjLmIsaCksMjkpOyRfYihqLGkpfU9DYyhhLGosYyl9fX19fVxuZnVuY3Rpb24gWlhjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7ZT1jO2Y9MDtmb3IoaD1uZXcgb2xiKGIpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwzMyk7amtkKGcsKFpXYygpLFNXYyksbWViKGUrKykpO2k9Z1ZjKGcpO2Q9JHduZC5NYXRoLmF0YW4yKGcuaitnLmYvMixnLmkrZy5nLzIpO2QrPWQ8MD9kcmU6MDtkPDAuNzg1Mzk4MTYzMzk3NDQ4M3x8ZD52cmU/T2tiKGksYS5iKTpkPD12cmUmJmQ+d3JlP09rYihpLGEuZCk6ZDw9d3JlJiZkPnhyZT9Pa2IoaSxhLmMpOmQ8PXhyZSYmT2tiKGksYS5hKTtmPVpYYyhhLGksZil9cmV0dXJuIGV9XG5mdW5jdGlvbiBIZ2IoKXtIZ2I9Y2NiO3ZhciBhO0NnYj1uZXcgVWdiKDEsMSk7RWdiPW5ldyBVZ2IoMSwxMCk7R2diPW5ldyBVZ2IoMCwwKTtCZ2I9bmV3IFVnYigtMSwxKTtEZ2I9T0MoR0MoY0osMSksbmllLDkxLDAsW0dnYixDZ2IsbmV3IFVnYigxLDIpLG5ldyBVZ2IoMSwzKSxuZXcgVWdiKDEsNCksbmV3IFVnYigxLDUpLG5ldyBVZ2IoMSw2KSxuZXcgVWdiKDEsNyksbmV3IFVnYigxLDgpLG5ldyBVZ2IoMSw5KSxFZ2JdKTtGZ2I9S0MoY0osbmllLDkxLDMyLDAsMSk7Zm9yKGE9MDthPEZnYi5sZW5ndGg7YSsrKXtGZ2JbYV09Z2hiKE5iYigxLGEpKX19XG5mdW5jdGlvbiBCOWIoYSxiLGMsZCxlLGYpe3ZhciBnLGgsaSxqO2g9IVdBYihKQWIoYS5PYygpLG5ldyBYeGIobmV3IEY5YikpKS5zZCgoRUFiKCksREFiKSk7Zz1hO2Y9PShlYWQoKSxkYWQpJiYoZz1KRChnLDE1Mik/a20oQkQoZywxNTIpKTpKRChnLDEzMSk/QkQoZywxMzEpLmE6SkQoZyw1NCk/bmV3IG92KGcpOm5ldyBkdihnKSk7Zm9yKGo9Zy5LYygpO2ouT2IoKTspe2k9QkQoai5QYigpLDcwKTtpLm4uYT1iLmE7aD8oaS5uLmI9Yi5iKyhkLmItaS5vLmIpLzIpOmU/KGkubi5iPWIuYik6KGkubi5iPWIuYitkLmItaS5vLmIpO2IuYSs9aS5vLmErY319XG5mdW5jdGlvbiBVT2MoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqO2U9KGQuYytkLmEpLzI7T3NiKGIuaik7RHNiKGIuaixlKTtPc2IoYy5lKTtEc2IoYy5lLGUpO2o9bmV3IGFQYztmb3IoaD1uZXcgb2xiKGEuZik7aC5hPGguYy5jLmxlbmd0aDspe2Y9QkQobWxiKGgpLDEyOSk7aT1mLmE7V09jKGosYixpKTtXT2MoaixjLGkpfWZvcihnPW5ldyBvbGIoYS5rKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTI5KTtpPWYuYjtXT2MoaixiLGkpO1dPYyhqLGMsaSl9ai5iKz0yO2ouYSs9UE9jKGIsYS5xKTtqLmErPVBPYyhhLnEsYyk7cmV0dXJuIGp9XG5mdW5jdGlvbiBGU2MoYSxiLGMpe3ZhciBkLGUsZixnLGg7aWYoIVFxKGIpKXtoPVVkZChjLChKRChiLDE0KT9CRChiLDE0KS5nYygpOnNyKGIuS2MoKSkpL2EuYXwwKTtPZGQoaCxYcWUsMSk7Zz1uZXcgSVNjO2Y9bnVsbDtmb3IoZT1iLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksODYpO2c9cGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW2csbmV3IFpSYyhkKV0pKTtpZihmKXt5TmIoZiwobVRjKCksaFRjKSxkKTt5TmIoZCxfU2MsZik7aWYoVlJjKGQpPT1WUmMoZikpe3lOYihmLGlUYyxkKTt5TmIoZCxhVGMsZil9fWY9ZH1RZGQoaCk7RlNjKGEsZyxjKX19XG5mdW5jdGlvbiBWSGIoYSl7dmFyIGIsYyxkLGUsZixnLGg7Yz1hLmk7Yj1hLm47aD1jLmQ7YS5mPT0oRUliKCksQ0liKT8oaCs9KGMuYS1hLmUuYikvMik6YS5mPT1CSWImJihoKz1jLmEtYS5lLmIpO2ZvcihlPW5ldyBvbGIoYS5kKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTgxKTtnPWQucmYoKTtmPW5ldyBkN2M7Zi5iPWg7aCs9Zy5iK2EuYTtzd2l0Y2goYS5iLmcpe2Nhc2UgMDpmLmE9Yy5jK2IuYjticmVhaztjYXNlIDE6Zi5hPWMuYytiLmIrKGMuYi1nLmEpLzI7YnJlYWs7Y2FzZSAyOmYuYT1jLmMrYy5iLWIuYy1nLmE7fWQudGYoZil9fVxuZnVuY3Rpb24gWEhiKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2M9YS5pO2I9YS5uO2g9Yy5jO2EuYj09KE5IYigpLEtIYik/KGgrPShjLmItYS5lLmEpLzIpOmEuYj09TUhiJiYoaCs9Yy5iLWEuZS5hKTtmb3IoZT1uZXcgb2xiKGEuZCk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE4MSk7Zz1kLnJmKCk7Zj1uZXcgZDdjO2YuYT1oO2grPWcuYSthLmE7c3dpdGNoKGEuZi5nKXtjYXNlIDA6Zi5iPWMuZCtiLmQ7YnJlYWs7Y2FzZSAxOmYuYj1jLmQrYi5kKyhjLmEtZy5iKS8yO2JyZWFrO2Nhc2UgMjpmLmI9Yy5kK2MuYS1iLmEtZy5iO31kLnRmKGYpfX1cbmZ1bmN0aW9uIEQ0YihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2s9Yy5hLmM7Zz1jLmEuYytjLmEuYjtmPUJEKE9oYihjLmMsYiksNDU5KTtuPWYuZjtvPWYuYTtpPW5ldyBmN2MoayxuKTtsPW5ldyBmN2MoZyxvKTtlPWs7Yy5wfHwoZSs9YS5jKTtlKz1jLkYrYy52KmEuYjtqPW5ldyBmN2MoZSxuKTttPW5ldyBmN2MoZSxvKTtuN2MoYi5hLE9DKEdDKG0xLDEpLG5pZSw4LDAsW2ksal0pKTtoPWMuZC5hLmdjKCk+MTtpZihoKXtkPW5ldyBmN2MoZSxjLmIpO0RzYihiLmEsZCl9bjdjKGIuYSxPQyhHQyhtMSwxKSxuaWUsOCwwLFttLGxdKSl9XG5mdW5jdGlvbiBqZGQoYSl7cjRjKGEsbmV3IEUzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyxSc2UpLCdFTEsgUmFuZG9taXplcicpLCdEaXN0cmlidXRlcyB0aGUgbm9kZXMgcmFuZG9tbHkgb24gdGhlIHBsYW5lLCBsZWFkaW5nIHRvIHZlcnkgb2JmdXNjYXRpbmcgbGF5b3V0cy4gQ2FuIGJlIHVzZWZ1bCB0byBkZW1vbnN0cmF0ZSB0aGUgcG93ZXIgb2YgXCJyZWFsXCIgbGF5b3V0IGFsZ29yaXRobXMuJyksbmV3IG1kZCkpKTtwNGMoYSxSc2UsYW1lLGZkZCk7cDRjKGEsUnNlLHdtZSwxNSk7cDRjKGEsUnNlLHltZSxtZWIoMCkpO3A0YyhhLFJzZSxfbGUsdG1lKX1cbmZ1bmN0aW9uIGhkZSgpe2hkZT1jY2I7dmFyIGEsYixjLGQsZSxmO2ZkZT1LQyhTRCx3dGUsMjUsMjU1LDE1LDEpO2dkZT1LQyhURCwkaWUsMjUsMTYsMTUsMSk7Zm9yKGI9MDtiPDI1NTtiKyspe2ZkZVtiXT0tMX1mb3IoYz01NztjPj00ODtjLS0pe2ZkZVtjXT1jLTQ4PDwyND4+MjR9Zm9yKGQ9NzA7ZD49NjU7ZC0tKXtmZGVbZF09ZC02NSsxMDw8MjQ+PjI0fWZvcihlPTEwMjtlPj05NztlLS0pe2ZkZVtlXT1lLTk3KzEwPDwyND4+MjR9Zm9yKGY9MDtmPDEwO2YrKylnZGVbZl09NDgrZiZhamU7Zm9yKGE9MTA7YTw9MTU7YSsrKWdkZVthXT02NSthLTEwJmFqZX1cbmZ1bmN0aW9uIEJWYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztoPWIuaS1hLmcvMjtpPWMuaS1hLmcvMjtqPWIuai1hLmcvMjtrPWMuai1hLmcvMjtmPWIuZythLmcvMjtnPWMuZythLmcvMjtkPWIuZithLmcvMjtlPWMuZithLmcvMjtpZihoPGkrZyYmaTxoJiZqPGsrZSYmazxqKXtyZXR1cm4gdHJ1ZX1lbHNlIGlmKGk8aCtmJiZoPGkmJms8aitkJiZqPGspe3JldHVybiB0cnVlfWVsc2UgaWYoaDxpK2cmJmk8aCYmajxrJiZrPGorZCl7cmV0dXJuIHRydWV9ZWxzZSBpZihpPGgrZiYmaDxpJiZqPGsrZSYmazxqKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBOVGIoYSl7dmFyIGIsYyxkLGUsZjtlPUJEKHZOYihhLChOeWMoKSxGeGMpKSwyMSk7Zj1CRCh2TmIoYSxJeGMpLDIxKTtjPW5ldyBmN2MoYS5mLmErYS5kLmIrYS5kLmMsYS5mLmIrYS5kLmQrYS5kLmEpO2I9bmV3IGc3YyhjKTtpZihlLkhjKCh0ZGQoKSxwZGQpKSl7ZD1CRCh2TmIoYSxIeGMpLDgpO2lmKGYuSGMoKElkZCgpLEJkZCkpKXtkLmE8PTAmJihkLmE9MjApO2QuYjw9MCYmKGQuYj0yMCl9Yi5hPSR3bmQuTWF0aC5tYXgoYy5hLGQuYSk7Yi5iPSR3bmQuTWF0aC5tYXgoYy5iLGQuYil9Q2NiKEREKHZOYihhLEd4YykpKXx8T1RiKGEsYyxiKX1cbmZ1bmN0aW9uIE5KYyhhLGIpe3ZhciBjLGQsZSxmO2ZvcihmPVZfYihiLChVY2QoKSxSY2QpKS5LYygpO2YuT2IoKTspe2Q9QkQoZi5QYigpLDExKTtjPUJEKHZOYihkLCh3dGMoKSxndGMpKSwxMCk7ISFjJiZBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsMCksMC4xKSxhLmlbYi5wXS5kKSxhLmlbYy5wXS5hKSl9Zm9yKGU9Vl9iKGIsQWNkKS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDExKTtjPUJEKHZOYihkLCh3dGMoKSxndGMpKSwxMCk7ISFjJiZBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsMCksMC4xKSxhLmlbYy5wXS5kKSxhLmlbYi5wXS5hKSl9fVxuZnVuY3Rpb24gUUtkKGEpe3ZhciBiLGMsZCxlLGYsZztpZighYS5jKXtnPW5ldyB3TmQ7Yj1LS2Q7Zj1iLmEuemMoYSxiKTtpZihmPT1udWxsKXtmb3IoZD1uZXcgRnlkKFZLZChhKSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDg3KTtlPUtRZChjKTtKRChlLDg4KSYmeXRkKGcsUUtkKEJEKGUsMjYpKSk7d3RkKGcsYyl9Yi5hLkJjKGEpIT1udWxsO2IuYS5nYygpPT0wJiZ1bmRlZmluZWR9dE5kKGcpO3Z1ZChnKTthLmM9bmV3IG5OZCgoQkQocXVkKFpLZCgoTkZkKCksTUZkKS5vKSwxNSksMTgpLGcuaSksZy5nKTskS2QoYSkuYiY9LTMzfXJldHVybiBhLmN9XG5mdW5jdGlvbiBlZWUoYSl7dmFyIGI7aWYoYS5jIT0xMCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHV1ZSkpKSk7Yj1hLmE7c3dpdGNoKGIpe2Nhc2UgMTEwOmI9MTA7YnJlYWs7Y2FzZSAxMTQ6Yj0xMzticmVhaztjYXNlIDExNjpiPTk7YnJlYWs7Y2FzZSA5MjpjYXNlIDEyNDpjYXNlIDQ2OmNhc2UgOTQ6Y2FzZSA0NTpjYXNlIDYzOmNhc2UgNDI6Y2FzZSA0MzpjYXNlIDEyMzpjYXNlIDEyNTpjYXNlIDQwOmNhc2UgNDE6Y2FzZSA5MTpjYXNlIDkzOmJyZWFrO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpO31yZXR1cm4gYn1cbmZ1bmN0aW9uIHFEKGEpe3ZhciBiLGMsZCxlLGY7aWYoYS5sPT0wJiZhLm09PTAmJmEuaD09MCl7cmV0dXJuICcwJ31pZihhLmg9PUdqZSYmYS5tPT0wJiZhLmw9PTApe3JldHVybiAnLTkyMjMzNzIwMzY4NTQ3NzU4MDgnfWlmKGEuaD4+MTkhPTApe3JldHVybiAnLScrcUQoaEQoYSkpfWM9YTtkPScnO3doaWxlKCEoYy5sPT0wJiZjLm09PTAmJmMuaD09MCkpe2U9UkMoSmplKTtjPVVDKGMsZSx0cnVlKTtiPScnK3BEKFFDKTtpZighKGMubD09MCYmYy5tPT0wJiZjLmg9PTApKXtmPTktYi5sZW5ndGg7Zm9yKDtmPjA7Zi0tKXtiPScwJytifX1kPWIrZH1yZXR1cm4gZH1cbmZ1bmN0aW9uIHhyYigpe2lmKCFPYmplY3QuY3JlYXRlfHwhT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMpe3JldHVybiBmYWxzZX12YXIgYT0nX19wcm90b19fJzt2YXIgYj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGJbYV0hPT11bmRlZmluZWQpe3JldHVybiBmYWxzZX12YXIgYz1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKTtpZihjLmxlbmd0aCE9MCl7cmV0dXJuIGZhbHNlfWJbYV09NDI7aWYoYlthXSE9PTQyKXtyZXR1cm4gZmFsc2V9aWYoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYikubGVuZ3RoPT0wKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBQZ2MoYSl7dmFyIGIsYyxkLGUsZixnLGg7Yj1mYWxzZTtjPTA7Zm9yKGU9bmV3IG9sYihhLmQuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtkLnA9YysrO2ZvcihnPW5ldyBvbGIoZC5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTApOyFiJiYhUXEoT19iKGYpKSYmKGI9dHJ1ZSl9fWg9cXFiKChlYWQoKSxjYWQpLE9DKEdDKHQxLDEpLEtpZSwxMDMsMCxbYWFkLGJhZF0pKTtpZighYil7cnFiKGgsZGFkKTtycWIoaCxfOWMpfWEuYT1uZXcgbURiKGgpO1VoYihhLmYpO1VoYihhLmIpO1VoYihhLmUpO1VoYihhLmcpfVxuZnVuY3Rpb24gX1hiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7ZD1jLmM7ZT1jLmQ7aD1BMGIoYi5jKTtpPUEwYihiLmQpO2lmKGQ9PWIuYyl7aD1hWWIoYSxoLGUpO2k9YlliKGIuZCl9ZWxzZXtoPWJZYihiLmMpO2k9YVliKGEsaSxlKX1qPW5ldyB0N2MoYi5hKTtHc2IoaixoLGouYSxqLmEuYSk7R3NiKGosaSxqLmMuYixqLmMpO2c9Yi5jPT1kO2w9bmV3IEJZYjtmb3IoZj0wO2Y8ai5iLTE7KytmKXtrPW5ldyB2Z2QoQkQoVXQoaixmKSw4KSxCRChVdChqLGYrMSksOCkpO2cmJmY9PTB8fCFnJiZmPT1qLmItMj8obC5iPWspOkVrYihsLmEsayl9cmV0dXJuIGx9XG5mdW5jdGlvbiBPJGIoYSxiKXt2YXIgYyxkLGUsZjtmPWEuai5nLWIuai5nO2lmKGYhPTApe3JldHVybiBmfWM9QkQodk5iKGEsKE55YygpLFd4YykpLDE5KTtkPUJEKHZOYihiLFd4YyksMTkpO2lmKCEhYyYmISFkKXtlPWMuYS1kLmE7aWYoZSE9MCl7cmV0dXJuIGV9fXN3aXRjaChhLmouZyl7Y2FzZSAxOnJldHVybiBLZGIoYS5uLmEsYi5uLmEpO2Nhc2UgMjpyZXR1cm4gS2RiKGEubi5iLGIubi5iKTtjYXNlIDM6cmV0dXJuIEtkYihiLm4uYSxhLm4uYSk7Y2FzZSA0OnJldHVybiBLZGIoYi5uLmIsYS5uLmIpO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBaZGIoaW5lKSk7fX1cbmZ1bmN0aW9uIEc2YihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2lmKHNyKChENmIoKSxuZXcgU3IodXIoT19iKGIpLmEuS2MoKSxuZXcgU3EpKSkpPj1hLmEpe3JldHVybiAtMX1pZighRjZiKGIsYykpe3JldHVybiAtMX1pZihRcShCRChkLktiKGIpLDIwKSkpe3JldHVybiAxfWU9MDtmb3IoZz1CRChkLktiKGIpLDIwKS5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDE3KTtpPWYuYy5pPT1iP2YuZC5pOmYuYy5pO2g9RzZiKGEsaSxjLGQpO2lmKGg9PS0xKXtyZXR1cm4gLTF9ZT0kd25kLk1hdGgubWF4KGUsaCk7aWYoZT5hLmMtMSl7cmV0dXJuIC0xfX1yZXR1cm4gZSsxfVxuZnVuY3Rpb24gQnRkKGEsYil7dmFyIGMsZCxlLGYsZyxoO2lmKFBEKGIpPT09UEQoYSkpe3JldHVybiB0cnVlfWlmKCFKRChiLDE1KSl7cmV0dXJuIGZhbHNlfWQ9QkQoYiwxNSk7aD1hLmdjKCk7aWYoZC5nYygpIT1oKXtyZXR1cm4gZmFsc2V9Zz1kLktjKCk7aWYoYS5uaSgpKXtmb3IoYz0wO2M8aDsrK2Mpe2U9YS5raShjKTtmPWcuUGIoKTtpZihlPT1udWxsP2YhPW51bGw6IXBiKGUsZikpe3JldHVybiBmYWxzZX19fWVsc2V7Zm9yKGM9MDtjPGg7KytjKXtlPWEua2koYyk7Zj1nLlBiKCk7aWYoUEQoZSkhPT1QRChmKSl7cmV0dXJuIGZhbHNlfX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiByQWQoYSxiKXt2YXIgYyxkLGUsZixnLGg7aWYoYS5mPjApe2EucWooKTtpZihiIT1udWxsKXtmb3IoZj0wO2Y8YS5kLmxlbmd0aDsrK2Ype2M9YS5kW2ZdO2lmKGMpe2Q9QkQoYy5nLDM2Nyk7aD1jLmk7Zm9yKGc9MDtnPGg7KytnKXtlPWRbZ107aWYocGIoYixlLmRkKCkpKXtyZXR1cm4gdHJ1ZX19fX19ZWxzZXtmb3IoZj0wO2Y8YS5kLmxlbmd0aDsrK2Ype2M9YS5kW2ZdO2lmKGMpe2Q9QkQoYy5nLDM2Nyk7aD1jLmk7Zm9yKGc9MDtnPGg7KytnKXtlPWRbZ107aWYoUEQoYik9PT1QRChlLmRkKCkpKXtyZXR1cm4gdHJ1ZX19fX19fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGU2YihhLGIsYyl7dmFyIGQsZSxmLGc7T2RkKGMsJ09ydGhvZ29uYWxseSByb3V0aW5nIGhpZXJhcmNoaWNhbCBwb3J0IGVkZ2VzJywxKTthLmE9MDtkPWg2YihiKTtrNmIoYixkKTtqNmIoYSxiLGQpO2Y2YihiKTtlPUJEKHZOYihiLChOeWMoKSxWeGMpKSw5OCk7Zj1iLmI7ZDZiKCh0Q2IoMCxmLmMubGVuZ3RoKSxCRChmLmNbMF0sMjkpKSxlLGIpO2Q2YihCRChJa2IoZixmLmMubGVuZ3RoLTEpLDI5KSxlLGIpO2c9Yi5iO2I2YigodENiKDAsZy5jLmxlbmd0aCksQkQoZy5jWzBdLDI5KSkpO2I2YihCRChJa2IoZyxnLmMubGVuZ3RoLTEpLDI5KSk7UWRkKGMpfVxuZnVuY3Rpb24gam5kKGEpe3N3aXRjaChhKXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OntyZXR1cm4gYS00ODw8MjQ+PjI0fWNhc2UgOTc6Y2FzZSA5ODpjYXNlIDk5OmNhc2UgMTAwOmNhc2UgMTAxOmNhc2UgMTAyOntyZXR1cm4gYS05NysxMDw8MjQ+PjI0fWNhc2UgNjU6Y2FzZSA2NjpjYXNlIDY3OmNhc2UgNjg6Y2FzZSA2OTpjYXNlIDcwOntyZXR1cm4gYS02NSsxMDw8MjQ+PjI0fWRlZmF1bHQ6e3Rocm93IHZiYihuZXcgT2ViKCdJbnZhbGlkIGhleGFkZWNpbWFsJykpfX19XG5mdW5jdGlvbiBBVWMoYSxiLGMpe3ZhciBkLGUsZixnO09kZChjLCdQcm9jZXNzb3Igb3JkZXIgbm9kZXMnLDIpO2EuYT1FZGIoRUQodk5iKGIsKEpUYygpLEhUYykpKSk7ZT1uZXcgUHNiO2ZvcihnPUpzYihiLmIsMCk7Zy5iIT1nLmQuYzspe2Y9QkQoWHNiKGcpLDg2KTtDY2IoREQodk5iKGYsKG1UYygpLGpUYykpKSkmJihHc2IoZSxmLGUuYy5iLGUuYyksdHJ1ZSl9ZD0oc0NiKGUuYiE9MCksQkQoZS5hLmEuYyw4NikpO3lVYyhhLGQpOyFjLmImJlJkZChjLDEpO0JVYyhhLGQsMC1FZGIoRUQodk5iKGQsKG1UYygpLGJUYykpKSkvMiwwKTshYy5iJiZSZGQoYywxKTtRZGQoYyl9XG5mdW5jdGlvbiByRmIoKXtyRmI9Y2NiO3FGYj1uZXcgc0ZiKCdTUElSQUwnLDApO2xGYj1uZXcgc0ZiKCdMSU5FX0JZX0xJTkUnLDEpO21GYj1uZXcgc0ZiKCdNQU5IQVRUQU4nLDIpO2tGYj1uZXcgc0ZiKCdKSVRURVInLDMpO29GYj1uZXcgc0ZiKCdRVUFEUkFOVFNfTElORV9CWV9MSU5FJyw0KTtwRmI9bmV3IHNGYignUVVBRFJBTlRTX01BTkhBVFRBTicsNSk7bkZiPW5ldyBzRmIoJ1FVQURSQU5UU19KSVRURVInLDYpO2pGYj1uZXcgc0ZiKCdDT01CSU5FX0xJTkVfQllfTElORV9NQU5IQVRUQU4nLDcpO2lGYj1uZXcgc0ZiKCdDT01CSU5FX0pJVFRFUl9NQU5IQVRUQU4nLDgpfVxuZnVuY3Rpb24gcm9jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtpPXdvYyhhLGMpO2o9d29jKGIsYyk7ZT1mYWxzZTt3aGlsZSghIWkmJiEhail7aWYoZHx8dW9jKGksaixjKSl7Zz13b2MoaSxjKTtoPXdvYyhqLGMpO3pvYyhiKTt6b2MoYSk7Zj1pLmM7c2JjKGksZmFsc2UpO3NiYyhqLGZhbHNlKTtpZihjKXtaX2IoYixqLnAsZik7Yi5wPWoucDtaX2IoYSxpLnArMSxmKTthLnA9aS5wfWVsc2V7Wl9iKGEsaS5wLGYpO2EucD1pLnA7Wl9iKGIsai5wKzEsZik7Yi5wPWoucH0kX2IoaSxudWxsKTskX2IoaixudWxsKTtpPWc7aj1oO2U9dHJ1ZX1lbHNle2JyZWFrfX1yZXR1cm4gZX1cbmZ1bmN0aW9uIFZEYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2U9ZmFsc2U7Zj1mYWxzZTtmb3IoaD1uZXcgb2xiKGQuaik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDExKTtQRCh2TmIoZywod3RjKCksJHNjKSkpPT09UEQoYykmJihnLmcuYy5sZW5ndGg9PTA/Zy5lLmMubGVuZ3RoPT0wfHwoZT10cnVlKTooZj10cnVlKSl9aT0wO2UmJmVeZj8oaT1jLmo9PShVY2QoKSxBY2QpPy1hLmVbZC5jLnBdW2QucF06Yi1hLmVbZC5jLnBdW2QucF0pOmYmJmVeZj8oaT1hLmVbZC5jLnBdW2QucF0rMSk6ZSYmZiYmKGk9Yy5qPT0oVWNkKCksQWNkKT8wOmIvMik7cmV0dXJuIGl9XG5mdW5jdGlvbiBORWQoYSxiLGMsZCxlLGYsZyxoKXt2YXIgaSxqLGs7aT0wO2IhPW51bGwmJihpXj1MQ2IoYi50b0xvd2VyQ2FzZSgpKSk7YyE9bnVsbCYmKGlePUxDYihjKSk7ZCE9bnVsbCYmKGlePUxDYihkKSk7ZyE9bnVsbCYmKGlePUxDYihnKSk7aCE9bnVsbCYmKGlePUxDYihoKSk7Zm9yKGo9MCxrPWYubGVuZ3RoO2o8aztqKyspe2lePUxDYihmW2pdKX1hPyhpfD0yNTYpOihpJj0tMjU3KTtlPyhpfD0xNik6KGkmPS0xNyk7dGhpcy5mPWk7dGhpcy5pPWI9PW51bGw/bnVsbDoodUNiKGIpLGIpO3RoaXMuYT1jO3RoaXMuZD1kO3RoaXMuaj1mO3RoaXMuZz1nO3RoaXMuZT1ofVxuZnVuY3Rpb24gWF9iKGEsYixjKXt2YXIgZCxlO2U9bnVsbDtzd2l0Y2goYi5nKXtjYXNlIDE6ZT0oejBiKCksdTBiKTticmVhaztjYXNlIDI6ZT0oejBiKCksdzBiKTt9ZD1udWxsO3N3aXRjaChjLmcpe2Nhc2UgMTpkPSh6MGIoKSx2MGIpO2JyZWFrO2Nhc2UgMjpkPSh6MGIoKSx0MGIpO2JyZWFrO2Nhc2UgMzpkPSh6MGIoKSx4MGIpO2JyZWFrO2Nhc2UgNDpkPSh6MGIoKSx5MGIpO31yZXR1cm4gISFlJiYhIWQ/TnEoYS5qLG5ldyBZYihuZXcgYW1iKE9DKEdDKF9ELDEpLFVoZSwxNjksMCxbQkQoUWIoZSksMTY5KSxCRChRYihkKSwxNjkpXSkpKSk6KG1tYigpLG1tYigpLGptYil9XG5mdW5jdGlvbiB0NWIoYSl7dmFyIGIsYyxkO2I9QkQodk5iKGEsKE55YygpLEh4YykpLDgpO3lOYihhLEh4YyxuZXcgZjdjKGIuYixiLmEpKTtzd2l0Y2goQkQodk5iKGEsbXdjKSwyNDgpLmcpe2Nhc2UgMTp5TmIoYSxtd2MsKEY3YygpLEU3YykpO2JyZWFrO2Nhc2UgMjp5TmIoYSxtd2MsKEY3YygpLEE3YykpO2JyZWFrO2Nhc2UgMzp5TmIoYSxtd2MsKEY3YygpLEM3YykpO2JyZWFrO2Nhc2UgNDp5TmIoYSxtd2MsKEY3YygpLEQ3YykpO31pZigoIWEucT8obW1iKCksbW1iKCksa21iKTphLnEpLl9iKGF5Yykpe2M9QkQodk5iKGEsYXljKSw4KTtkPWMuYTtjLmE9Yy5iO2MuYj1kfX1cbmZ1bmN0aW9uIGpqYyhhLGIsYyxkLGUsZil7dGhpcy5iPWM7dGhpcy5kPWU7aWYoYT49Yi5sZW5ndGgpe3Rocm93IHZiYihuZXcgcWNiKCdHcmVlZHkgU3dpdGNoRGVjaWRlcjogRnJlZSBsYXllciBub3QgaW4gZ3JhcGguJykpfXRoaXMuYz1iW2FdO3RoaXMuZT1uZXcgZEljKGQpO1RIYyh0aGlzLmUsdGhpcy5jLChVY2QoKSxUY2QpKTt0aGlzLmk9bmV3IGRJYyhkKTtUSGModGhpcy5pLHRoaXMuYyx6Y2QpO3RoaXMuZj1uZXcgZWpjKHRoaXMuYyk7dGhpcy5hPSFmJiZlLmkmJiFlLnMmJnRoaXMuY1swXS5rPT0oajBiKCksZTBiKTt0aGlzLmEmJmhqYyh0aGlzLGEsYi5sZW5ndGgpfVxuZnVuY3Rpb24gaEtiKGEsYil7dmFyIGMsZCxlLGYsZyxoO2Y9IWEuQi5IYygoSWRkKCksemRkKSk7Zz1hLkIuSGMoQ2RkKTthLmE9bmV3IEZIYihnLGYsYS5jKTshIWEubiYmdV9iKGEuYS5uLGEubik7bEliKGEuZywoZ0hiKCksZUhiKSxhLmEpO2lmKCFiKXtkPW5ldyBtSWIoMSxmLGEuYyk7ZC5uLmE9YS5rO05wYihhLnAsKFVjZCgpLEFjZCksZCk7ZT1uZXcgbUliKDEsZixhLmMpO2Uubi5kPWEuaztOcGIoYS5wLFJjZCxlKTtoPW5ldyBtSWIoMCxmLGEuYyk7aC5uLmM9YS5rO05wYihhLnAsVGNkLGgpO2M9bmV3IG1JYigwLGYsYS5jKTtjLm4uYj1hLms7TnBiKGEucCx6Y2QsYyl9fVxuZnVuY3Rpb24gVmdjKGEpe3ZhciBiLGMsZDtiPUJEKHZOYihhLmQsKE55YygpLFN3YykpLDIxOCk7c3dpdGNoKGIuZyl7Y2FzZSAyOmM9TmdjKGEpO2JyZWFrO2Nhc2UgMzpjPShkPW5ldyBSa2IsTUFiKEpBYihOQWIoTEFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmQuYiwxNikpLG5ldyBTaGMpLG5ldyBVaGMpLG5ldyBXaGMpLG5ldyBlaGMpLG5ldyBZaGMoZCkpLGQpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBaZGIoJ0NvbXBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgJytiKycgZWRnZXMuJykpO31VZ2MoYSxjKTtyZWIobmV3IFBpYihhLmcpLG5ldyBFaGMoYSkpfVxuZnVuY3Rpb24gYTJjKGEsYil7dmFyIGM7Yz1uZXcgek5iOyEhYiYmdE5iKGMsQkQoT2hiKGEuYSxDMiksOTQpKTtKRChiLDQ3MCkmJnROYihjLEJEKE9oYihhLmEsRzIpLDk0KSk7aWYoSkQoYiwzNTQpKXt0TmIoYyxCRChPaGIoYS5hLEQyKSw5NCkpO3JldHVybiBjfUpEKGIsODIpJiZ0TmIoYyxCRChPaGIoYS5hLHoyKSw5NCkpO2lmKEpEKGIsMjM5KSl7dE5iKGMsQkQoT2hiKGEuYSxFMiksOTQpKTtyZXR1cm4gY31pZihKRChiLDE4Nikpe3ROYihjLEJEKE9oYihhLmEsRjIpLDk0KSk7cmV0dXJuIGN9SkQoYiwzNTIpJiZ0TmIoYyxCRChPaGIoYS5hLEIyKSw5NCkpO3JldHVybiBjfVxuZnVuY3Rpb24gd1NiKCl7d1NiPWNjYjtvU2I9bmV3IE9zZCgoWTljKCksRDljKSxtZWIoMSkpO3VTYj1uZXcgT3NkKFQ5Yyw4MCk7dFNiPW5ldyBPc2QoTTljLDUpO2JTYj1uZXcgT3NkKHI4Yyx0bWUpO3BTYj1uZXcgT3NkKEU5YyxtZWIoMSkpO3NTYj1uZXcgT3NkKEg5YywoQmNiKCksdHJ1ZSkpO2xTYj1uZXcgcTBiKDUwKTtrU2I9bmV3IE9zZChmOWMsbFNiKTtkU2I9TzhjO21TYj10OWM7Y1NiPW5ldyBPc2QoQjhjLGZhbHNlKTtqU2I9ZTljO2lTYj1iOWM7aFNiPVk4YztnU2I9VzhjO25TYj14OWM7ZlNiPShTUmIoKSxMUmIpO3ZTYj1RUmI7ZVNiPUtSYjtxU2I9TlJiO3JTYj1QUmJ9XG5mdW5jdGlvbiBaWGIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtpPW5ldyBqWWI7Zm9yKGg9bmV3IG9sYihhLmEpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMCk7aWYoZy5rPT0oajBiKCksZTBiKSl7Y29udGludWV9WFhiKGksZyxuZXcgZDdjKTtmb3IoZj1uZXcgU3IodXIoVV9iKGcpLmEuS2MoKSxuZXcgU3EpKTtRcihmKTspe2U9QkQoUnIoZiksMTcpO2lmKGUuYy5pLms9PWUwYnx8ZS5kLmkuaz09ZTBiKXtjb250aW51ZX1mb3IoZD1Kc2IoZS5hLDApO2QuYiE9ZC5kLmM7KXtjPUJEKFhzYihkKSw4KTtiPWM7aFliKGksbmV3IGNXYihiLmEsYi5iKSl9fX1yZXR1cm4gaX1cbmZ1bmN0aW9uIEEwYygpe0EwYz1jY2I7ejBjPW5ldyBMc2QoUXJlKTt5MGM9KFIwYygpLFEwYyk7eDBjPW5ldyBOc2QoVnJlLHkwYyk7dzBjPShhMWMoKSxfMGMpO3YwYz1uZXcgTnNkKFJyZSx3MGMpO3UwYz0oTl9jKCksSl9jKTt0MGM9bmV3IE5zZChTcmUsdTBjKTtwMGM9bmV3IE5zZChUcmUsbnVsbCk7czBjPShDX2MoKSxBX2MpO3IwYz1uZXcgTnNkKFVyZSxzMGMpO2wwYz0oaV9jKCksaF9jKTtrMGM9bmV3IE5zZChXcmUsbDBjKTttMGM9bmV3IE5zZChYcmUsKEJjYigpLGZhbHNlKSk7bjBjPW5ldyBOc2QoWXJlLG1lYig2NCkpO28wYz1uZXcgTnNkKFpyZSx0cnVlKTtxMGM9Ql9jfVxuZnVuY3Rpb24gVG9jKGEpe3ZhciBiLGMsZCxlLGYsZztpZihhLmEhPW51bGwpe3JldHVybn1hLmE9S0Moc2JiLGRsZSwyNSxhLmMuYi5jLmxlbmd0aCwxNiwxKTthLmFbMF09ZmFsc2U7aWYod05iKGEuYywoTnljKCksTHljKSkpe2Q9QkQodk5iKGEuYyxMeWMpLDE1KTtmb3IoYz1kLktjKCk7Yy5PYigpOyl7Yj1CRChjLlBiKCksMTkpLmE7Yj4wJiZiPGEuYS5sZW5ndGgmJihhLmFbYl09ZmFsc2UpfX1lbHNle2c9bmV3IG9sYihhLmMuYik7Zy5hPGcuYy5jLmxlbmd0aCYmbWxiKGcpO2U9MTt3aGlsZShnLmE8Zy5jLmMubGVuZ3RoKXtmPUJEKG1sYihnKSwyOSk7YS5hW2UrK109V29jKGYpfX19XG5mdW5jdGlvbiBUTWQoYSxiKXt2YXIgYyxkLGUsZjtlPWEuYjtzd2l0Y2goYil7Y2FzZSAxOnthLmJ8PTE7YS5ifD00O2EuYnw9ODticmVha31jYXNlIDI6e2EuYnw9MjthLmJ8PTQ7YS5ifD04O2JyZWFrfWNhc2UgNDp7YS5ifD0xO2EuYnw9MjthLmJ8PTQ7YS5ifD04O2JyZWFrfWNhc2UgMzp7YS5ifD0xNjthLmJ8PTg7YnJlYWt9Y2FzZSAwOnthLmJ8PTMyO2EuYnw9MTY7YS5ifD04O2EuYnw9MTthLmJ8PTI7YS5ifD00O2JyZWFrfX1pZihhLmIhPWUmJiEhYS5jKXtmb3IoZD1uZXcgRnlkKGEuYyk7ZC5lIT1kLmkuZ2MoKTspe2Y9QkQoRHlkKGQpLDQ3Myk7Yz0kS2QoZik7WE1kKGMsYil9fX1cbmZ1bmN0aW9uIGNHYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvO2U9ZmFsc2U7Zm9yKGc9YixoPTAsaT1nLmxlbmd0aDtoPGk7KytoKXtmPWdbaF07Q2NiKChCY2IoKSxmLmU/dHJ1ZTpmYWxzZSkpJiYhQkQoSWtiKGEuYixmLmUucCksMjE0KS5zJiYoZT1lfChqPWYuZSxrPUJEKElrYihhLmIsai5wKSwyMTQpLGw9ay5lLG09U0ZjKGMsbC5sZW5ndGgpLG49bFttXVswXSxuLms9PShqMGIoKSxlMGIpPyhsW21dPWFHYyhmLGxbbV0sYz8oVWNkKCksVGNkKTooVWNkKCksemNkKSkpOmsuYy5UZihsLGMpLG89ZEdjKGEsayxjLGQpLGJHYyhrLmUsay5vLGMpLG8pKX1yZXR1cm4gZX1cbmZ1bmN0aW9uIHAyYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zj0oIWIuYSYmKGIuYT1uZXcgY1VkKEUyLGIsMTAsMTEpKSxiLmEpLmk7Zm9yKGU9bmV3IEZ5ZCgoIWIuYSYmKGIuYT1uZXcgY1VkKEUyLGIsMTAsMTEpKSxiLmEpKTtlLmUhPWUuaS5nYygpOyl7ZD1CRChEeWQoZSksMzMpO2lmKFBEKGhrZChkLChZOWMoKSxKOGMpKSkhPT1QRCgoaGJkKCksZ2JkKSkpe2c9QkQoaGtkKGIsRjljKSwxNDkpO2M9QkQoaGtkKGQsRjljKSwxNDkpOyhnPT1jfHwhIWcmJkMzYyhnLGMpKSYmKCFkLmEmJihkLmE9bmV3IGNVZChFMixkLDEwLDExKSksZC5hKS5pIT0wJiYoZis9cDJjKGEsZCkpfX1yZXR1cm4gZn1cbmZ1bmN0aW9uIG5sYyhhKXt2YXIgYixjLGQsZSxmLGcsaDtkPTA7aD0wO2ZvcihnPW5ldyBvbGIoYS5kKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTAxKTtlPUJEKEdBYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIoZi5qLDE2KSksbmV3IFlsYyksQnliKG5ldyBmemIsbmV3IGR6YixuZXcgRXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLER5YildKSkpLDE1KTtjPW51bGw7aWYoZDw9aCl7Yz0oVWNkKCksQWNkKTtkKz1lLmdjKCl9ZWxzZSBpZihoPGQpe2M9KFVjZCgpLFJjZCk7aCs9ZS5nYygpfWI9YztNQWIoTkFiKGUuT2MoKSxuZXcgTWxjKSxuZXcgT2xjKGIpKX19XG5mdW5jdGlvbiBta2MoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTthLmI9bmV3IF9pKG5ldyBhbWIoKFVjZCgpLE9DKEdDKEYxLDEpLGJuZSw2MSwwLFtTY2QsQWNkLHpjZCxSY2QsVGNkXSkpKSxuZXcgYW1iKChGa2MoKSxPQyhHQyh2ViwxKSxLaWUsMzYxLDAsW0VrYyxEa2MsQ2tjXSkpKSk7Zm9yKGc9T0MoR0MoRjEsMSksYm5lLDYxLDAsW1NjZCxBY2QsemNkLFJjZCxUY2RdKSxoPTAsaT1nLmxlbmd0aDtoPGk7KytoKXtmPWdbaF07Zm9yKGM9T0MoR0ModlYsMSksS2llLDM2MSwwLFtFa2MsRGtjLENrY10pLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTtVaShhLmIsZixiLG5ldyBSa2IpfX19XG5mdW5jdGlvbiBLSmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtnPUJEKEJEKFFjKGEucixiKSwyMSksODQpO2g9YS51LkhjKChyY2QoKSxwY2QpKTtjPWEudS5IYyhtY2QpO2Q9YS51LkhjKGxjZCk7aj1hLnUuSGMocWNkKTtsPWEuQi5IYygoSWRkKCksSGRkKSk7az0hYyYmIWQmJihqfHxnLmdjKCk9PTIpO0hKYihhLGIpO2U9bnVsbDtpPW51bGw7aWYoaCl7Zj1nLktjKCk7ZT1CRChmLlBiKCksMTExKTtpPWU7d2hpbGUoZi5PYigpKXtpPUJEKGYuUGIoKSwxMTEpfWUuZC5iPTA7aS5kLmM9MDtrJiYhZS5hJiYoZS5kLmM9MCl9aWYobCl7TEpiKGcpO2lmKGgpe2UuZC5iPTA7aS5kLmM9MH19fVxuZnVuY3Rpb24gU0tiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7Zz1CRChCRChRYyhhLnIsYiksMjEpLDg0KTtoPWEudS5IYygocmNkKCkscGNkKSk7Yz1hLnUuSGMobWNkKTtkPWEudS5IYyhsY2QpO2k9YS51LkhjKHFjZCk7bD1hLkIuSGMoKElkZCgpLEhkZCkpO2o9IWMmJiFkJiYoaXx8Zy5nYygpPT0yKTtRS2IoYSxiKTtrPW51bGw7ZT1udWxsO2lmKGgpe2Y9Zy5LYygpO2s9QkQoZi5QYigpLDExMSk7ZT1rO3doaWxlKGYuT2IoKSl7ZT1CRChmLlBiKCksMTExKX1rLmQuZD0wO2UuZC5hPTA7aiYmIWsuYSYmKGsuZC5hPTApfWlmKGwpe1RLYihnKTtpZihoKXtrLmQuZD0wO2UuZC5hPTB9fX1cbmZ1bmN0aW9uIG9KYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztlPWIuaztpZihiLnA+PTApe3JldHVybiBmYWxzZX1lbHNle2IucD1jLmI7RWtiKGMuZSxiKX1pZihlPT0oajBiKCksZzBiKXx8ZT09aTBiKXtmb3IoZz1uZXcgb2xiKGIuaik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDExKTtmb3Ioaz0oZD1uZXcgb2xiKChuZXcgUjBiKGYpKS5hLmcpLG5ldyBVMGIoZCkpO2xsYihrLmEpOyl7aj1CRChtbGIoay5hKSwxNykuZDtoPWouaTtpPWguaztpZihiLmMhPWguYyl7aWYoaT09ZzBifHxpPT1pMGIpe2lmKG9KYyhhLGgsYykpe3JldHVybiB0cnVlfX19fX19cmV0dXJuIHRydWV9XG5mdW5jdGlvbiBnSmQoYSl7dmFyIGI7aWYoKGEuRGImNjQpIT0wKXJldHVybiBFSWQoYSk7Yj1uZXcgSmZiKEVJZChhKSk7Yi5hKz0nIChjaGFuZ2VhYmxlOiAnO0ZmYihiLChhLkJiJnp0ZSkhPTApO2IuYSs9Jywgdm9sYXRpbGU6ICc7RmZiKGIsKGEuQmImRHZlKSE9MCk7Yi5hKz0nLCB0cmFuc2llbnQ6ICc7RmZiKGIsKGEuQmImUmplKSE9MCk7Yi5hKz0nLCBkZWZhdWx0VmFsdWVMaXRlcmFsOiAnO0VmYihiLGEuaik7Yi5hKz0nLCB1bnNldHRhYmxlOiAnO0ZmYihiLChhLkJiJkN2ZSkhPTApO2IuYSs9JywgZGVyaXZlZDogJztGZmIoYiwoYS5CYiZvaWUpIT0wKTtiLmErPScpJztyZXR1cm4gYi5hfVxuZnVuY3Rpb24gQU9iKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbTtlPWVOYihhLmQpO2c9QkQodk5iKGEuYiwoQ1BiKCksd1BiKSksMTE2KTtoPWcuYitnLmM7aT1nLmQrZy5hO2s9ZS5kLmEqYS5lK2g7aj1lLmIuYSphLmYraTskT2IoYS5iLG5ldyBmN2MoayxqKSk7Zm9yKG09bmV3IG9sYihhLmcpO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSw1NjIpO2I9bC5nLWUuYS5hO2M9bC5pLWUuYy5hO2Q9UDZjKFo2YyhuZXcgZjdjKGIsYyksbC5hLGwuYiksWTZjKGI3YyhSNmMoSE9iKGwuZSkpLGwuZCpsLmEsbC5jKmwuYiksLTAuNSkpO2Y9SU9iKGwuZSk7S09iKGwuZSxjN2MoZCxmKSl9fVxuZnVuY3Rpb24gdG1jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7aT1LQyhVRCxuaWUsMTA0LChVY2QoKSxPQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pKS5sZW5ndGgsMCwyKTtmb3IoZj1PQyhHQyhGMSwxKSxibmUsNjEsMCxbU2NkLEFjZCx6Y2QsUmNkLFRjZF0pLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpe2U9ZltnXTtpW2UuZ109S0MoVUQsVmplLDI1LGEuY1tlLmddLDE1LDEpfXZtYyhpLGEsQWNkKTt2bWMoaSxhLFJjZCk7c21jKGksYSxBY2QsYixjLGQpO3NtYyhpLGEsemNkLGIsYyxkKTtzbWMoaSxhLFJjZCxiLGMsZCk7c21jKGksYSxUY2QsYixjLGQpO3JldHVybiBpfVxuZnVuY3Rpb24gVUdjKGEsYixjKXtpZihNaGIoYS5hLGIpKXtpZihScWIoQkQoT2hiKGEuYSxiKSw1MyksYykpe3JldHVybiAxfX1lbHNle1JoYihhLmEsYixuZXcgVHFiKX1pZihNaGIoYS5hLGMpKXtpZihScWIoQkQoT2hiKGEuYSxjKSw1MyksYikpe3JldHVybiAtMX19ZWxzZXtSaGIoYS5hLGMsbmV3IFRxYil9aWYoTWhiKGEuYixiKSl7aWYoUnFiKEJEKE9oYihhLmIsYiksNTMpLGMpKXtyZXR1cm4gLTF9fWVsc2V7UmhiKGEuYixiLG5ldyBUcWIpfWlmKE1oYihhLmIsYykpe2lmKFJxYihCRChPaGIoYS5iLGMpLDUzKSxiKSl7cmV0dXJuIDF9fWVsc2V7UmhiKGEuYixjLG5ldyBUcWIpfXJldHVybiAwfVxuZnVuY3Rpb24geDJkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtpZihjPT1udWxsKXtlPUJEKGEuZywxMTkpO2ZvcihoPTA7aDxhLmk7KytoKXtnPWVbaF07aWYoZy5haygpPT1iKXtyZXR1cm4gVHhkKGEsZyxkKX19fWY9KFE2ZCgpLEJEKGIsNjYpLk9qKCk/QkQoYyw3Mik6UjZkKGIsYykpO2lmKG9pZChhLmUpKXtqPSFSMmQoYSxiKTtkPVN4ZChhLGYsZCk7aT1iLiRqKCk/SDJkKGEsMyxiLG51bGwsYyxNMmQoYSxiLGMsSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wKSxqKTpIMmQoYSwxLGIsYi56aigpLGMsLTEsaik7ZD9kLkVpKGkpOihkPWkpfWVsc2V7ZD1TeGQoYSxmLGQpfXJldHVybiBkfVxuZnVuY3Rpb24gQ0piKGEpe3ZhciBiLGMsZCxlLGYsZztpZihhLnE9PShkY2QoKSxfYmQpfHxhLnE9PSRiZCl7cmV0dXJufWU9YS5mLm4uZCtfR2IoQkQoTXBiKGEuYiwoVWNkKCksQWNkKSksMTI0KSkrYS5jO2I9YS5mLm4uYStfR2IoQkQoTXBiKGEuYixSY2QpLDEyNCkpK2EuYztkPUJEKE1wYihhLmIsemNkKSwxMjQpO2c9QkQoTXBiKGEuYixUY2QpLDEyNCk7Zj0kd25kLk1hdGgubWF4KDAsZC5uLmQtZSk7Zj0kd25kLk1hdGgubWF4KGYsZy5uLmQtZSk7Yz0kd25kLk1hdGgubWF4KDAsZC5uLmEtYik7Yz0kd25kLk1hdGgubWF4KGMsZy5uLmEtYik7ZC5uLmQ9ZjtnLm4uZD1mO2Qubi5hPWM7Zy5uLmE9Y31cbmZ1bmN0aW9uIHJkYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07T2RkKGIsJ1Jlc3RvcmluZyByZXZlcnNlZCBlZGdlcycsMSk7Zm9yKGk9bmV3IG9sYihhLmIpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwyOSk7Zm9yKGs9bmV3IG9sYihoLmEpO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMCk7Zm9yKG09bmV3IG9sYihqLmopO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSwxMSk7Zz1rX2IobC5nKTtmb3IoZD1nLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtDY2IoREQodk5iKGMsKHd0YygpLGx0YykpKSkmJlBaYihjLGZhbHNlKX19fX1RZGQoYil9XG5mdW5jdGlvbiBtNGMoKXt0aGlzLmI9bmV3ICRyYjt0aGlzLmQ9bmV3ICRyYjt0aGlzLmU9bmV3ICRyYjt0aGlzLmM9bmV3ICRyYjt0aGlzLmE9bmV3IExxYjt0aGlzLmY9bmV3IExxYjtodmQobTEsbmV3IHg0YyxuZXcgejRjKTtodmQobDEsbmV3IFY0YyxuZXcgWDRjKTtodmQoaTEsbmV3IFo0YyxuZXcgXzRjKTtodmQoajEsbmV3IGI1YyxuZXcgZDVjKTtodmQoaTIsbmV3IGY1YyxuZXcgaDVjKTtodmQoREosbmV3IEI0YyxuZXcgRDRjKTtodmQoeEssbmV3IEY0YyxuZXcgSDRjKTtodmQoakssbmV3IEo0YyxuZXcgTDRjKTtodmQodUssbmV3IE40YyxuZXcgUDRjKTtodmQoa0wsbmV3IFI0YyxuZXcgVDRjKX1cbmZ1bmN0aW9uIFI1ZChhKXt2YXIgYixjLGQsZSxmLGc7Zj0wO2I9d0lkKGEpOyEhYi5CaigpJiYoZnw9NCk7KGEuQmImQ3ZlKSE9MCYmKGZ8PTIpO2lmKEpEKGEsOTkpKXtjPUJEKGEsMTgpO2U9elVkKGMpOyhjLkJiJm90ZSkhPTAmJihmfD0zMik7aWYoZSl7YUxkKFdJZChlKSk7Znw9ODtnPWUudDsoZz4xfHxnPT0tMSkmJihmfD0xNik7KGUuQmImb3RlKSE9MCYmKGZ8PTY0KX0oYy5CYiZUamUpIT0wJiYoZnw9RHZlKTtmfD16dGV9ZWxzZXtpZihKRChiLDQ1Nykpe2Z8PTUxMn1lbHNle2Q9Yi5CaigpOyEhZCYmKGQuaSYxKSE9MCYmKGZ8PTI1Nil9fShhLkJiJjUxMikhPTAmJihmfD0xMjgpO3JldHVybiBmfVxuZnVuY3Rpb24gaGMoYSxiKXt2YXIgYyxkLGUsZixnO2E9YT09bnVsbD9YaGU6KHVDYihhKSxhKTtmb3IoZT0wO2U8Yi5sZW5ndGg7ZSsrKXtiW2VdPWljKGJbZV0pfWM9bmV3IFZmYjtnPTA7ZD0wO3doaWxlKGQ8Yi5sZW5ndGgpe2Y9YS5pbmRleE9mKCclcycsZyk7aWYoZj09LTEpe2JyZWFrfWMuYSs9JycrcWZiKGE9PW51bGw/WGhlOih1Q2IoYSksYSksZyxmKTtQZmIoYyxiW2QrK10pO2c9ZisyfU9mYihjLGEsZyxhLmxlbmd0aCk7aWYoZDxiLmxlbmd0aCl7Yy5hKz0nIFsnO1BmYihjLGJbZCsrXSk7d2hpbGUoZDxiLmxlbmd0aCl7Yy5hKz1TaGU7UGZiKGMsYltkKytdKX1jLmErPSddJ31yZXR1cm4gYy5hfVxuZnVuY3Rpb24gbTNiKGEpe3ZhciBiLGMsZCxlLGY7Zj1uZXcgU2tiKGEuYS5jLmxlbmd0aCk7Zm9yKGU9bmV3IG9sYihhLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMCk7Yz1CRCh2TmIoZCwoTnljKCksbXhjKSksMTYzKTtiPW51bGw7c3dpdGNoKGMuZyl7Y2FzZSAxOmNhc2UgMjpiPShHcWMoKSxGcWMpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6Yj0oR3FjKCksRHFjKTt9aWYoYil7eU5iKGQsKHd0YygpLEJzYyksKEdxYygpLEZxYykpO2I9PURxYz9vM2IoZCxjLChLQWMoKSxIQWMpKTpiPT1GcWMmJm8zYihkLGMsKEtBYygpLElBYykpfWVsc2V7Zi5jW2YuYy5sZW5ndGhdPWR9fXJldHVybiBmfVxuZnVuY3Rpb24gTUhjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7Yz0wO2ZvcihpPW5ldyBvbGIoYik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDExKTtBSGMoYS5iLGEuZFtoLnBdKTtnPTA7Zm9yKGU9bmV3IGIxYihoLmIpO2xsYihlLmEpfHxsbGIoZS5iKTspe2Q9QkQobGxiKGUuYSk/bWxiKGUuYSk6bWxiKGUuYiksMTcpO2lmKFdIYyhkKSl7Zj1hSWMoYSxoPT1kLmM/ZC5kOmQuYyk7aWYoZj5hLmRbaC5wXSl7Yys9ekhjKGEuYixmKTtXamIoYS5hLG1lYihmKSl9fWVsc2V7KytnfX1jKz1hLmIuZCpnO3doaWxlKCFha2IoYS5hKSl7eEhjKGEuYixCRChma2IoYS5hKSwxOSkuYSl9fXJldHVybiBjfVxuZnVuY3Rpb24gWTZkKGEsYil7dmFyIGM7aWYoYS5mPT1XNmQpe2M9JDFkKHExZCgoTzZkKCksTTZkKSxiKSk7cmV0dXJuIGEuZT9jPT00JiZiIT0obThkKCksazhkKSYmYiE9KG04ZCgpLGg4ZCkmJmIhPShtOGQoKSxpOGQpJiZiIT0obThkKCksajhkKTpjPT0yfWlmKCEhYS5kJiYoYS5kLkhjKGIpfHxhLmQuSGMoXzFkKHExZCgoTzZkKCksTTZkKSxiKSkpfHxhLmQuSGMoZTFkKChPNmQoKSxNNmQpLGEuYixiKSkpKXtyZXR1cm4gdHJ1ZX1pZihhLmYpe2lmKHgxZCgoTzZkKCksYS5mKSxiMmQocTFkKE02ZCxiKSkpKXtjPSQxZChxMWQoTTZkLGIpKTtyZXR1cm4gYS5lP2M9PTQ6Yz09Mn19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gaVZjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGw7Zz1CRChoa2QoYywoWTljKCksQzljKSksOCk7aT1nLmE7az1nLmIrYTtlPSR3bmQuTWF0aC5hdGFuMihrLGkpO2U8MCYmKGUrPWRyZSk7ZSs9YjtlPmRyZSYmKGUtPWRyZSk7aD1CRChoa2QoZCxDOWMpLDgpO2o9aC5hO2w9aC5iK2E7Zj0kd25kLk1hdGguYXRhbjIobCxqKTtmPDAmJihmKz1kcmUpO2YrPWI7Zj5kcmUmJihmLT1kcmUpO3JldHVybiBJeSgpLE15KDEuMEUtMTApLCR3bmQuTWF0aC5hYnMoZS1mKTw9MS4wRS0xMHx8ZT09Znx8aXNOYU4oZSkmJmlzTmFOKGYpPzA6ZTxmPy0xOmU+Zj8xOk55KGlzTmFOKGUpLGlzTmFOKGYpKX1cbmZ1bmN0aW9uIFlEYihhKXt2YXIgYixjLGQsZSxmLGcsaDtoPW5ldyBMcWI7Zm9yKGQ9bmV3IG9sYihhLmEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2I9QkQobWxiKGQpLDU3KTtSaGIoaCxiLG5ldyBSa2IpfWZvcihlPW5ldyBvbGIoYS5hLmIpO2UuYTxlLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihlKSw1Nyk7Yi5pPVFqZTtmb3IoZz1iLmMuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSw1Nyk7QkQoV2QoaXJiKGguZixmKSksMTUpLkZjKGIpfX1mb3IoYz1uZXcgb2xiKGEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksNTcpO2IuYy4kYigpO2IuYz1CRChXZChpcmIoaC5mLGIpKSwxNSl9UURiKGEpfVxuZnVuY3Rpb24geVZiKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2g9bmV3IExxYjtmb3IoZD1uZXcgb2xiKGEuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoZCksODEpO1JoYihoLGIsbmV3IFJrYil9Zm9yKGU9bmV3IG9sYihhLmEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2I9QkQobWxiKGUpLDgxKTtiLm89UWplO2ZvcihnPWIuZi5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDgxKTtCRChXZChpcmIoaC5mLGYpKSwxNSkuRmMoYil9fWZvcihjPW5ldyBvbGIoYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw4MSk7Yi5mLiRiKCk7Yi5mPUJEKFdkKGlyYihoLmYsYikpLDE1KX1yVmIoYSl9XG5mdW5jdGlvbiBkTmIoYSxiLGMsZCl7dmFyIGUsZjtjTmIoYSxiLGMsZCk7cU5iKGIsYS5qLWIuaitjKTtyTmIoYixhLmstYi5rK2QpO2ZvcihmPW5ldyBvbGIoYi5mKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMzI0KTtzd2l0Y2goZS5hLmcpe2Nhc2UgMDpuTmIoYSxiLmcrZS5iLmEsMCxiLmcrZS5jLmEsYi5pLTEpO2JyZWFrO2Nhc2UgMTpuTmIoYSxiLmcrYi5vLGIuaStlLmIuYSxhLm8tMSxiLmkrZS5jLmEpO2JyZWFrO2Nhc2UgMjpuTmIoYSxiLmcrZS5iLmEsYi5pK2IucCxiLmcrZS5jLmEsYS5wLTEpO2JyZWFrO2RlZmF1bHQ6bk5iKGEsMCxiLmkrZS5iLmEsYi5nLTEsYi5pK2UuYy5hKTt9fX1cbmZ1bmN0aW9uIGFOYihiLGMsZCxlLGYpe3ZhciBnLGgsaTt0cnl7aWYoYz49Yi5vKXt0aHJvdyB2YmIobmV3IHJjYil9aT1jPj41O2g9YyYzMTtnPU5iYigxLFRiYihOYmIoaCwxKSkpO2Y/KGIubltkXVtpXT1NYmIoYi5uW2RdW2ldLGcpKTooYi5uW2RdW2ldPXhiYihiLm5bZF1baV0sTGJiKGcpKSk7Zz1OYmIoZywxKTtlPyhiLm5bZF1baV09TWJiKGIubltkXVtpXSxnKSk6KGIubltkXVtpXT14YmIoYi5uW2RdW2ldLExiYihnKSkpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMzIwKSl7dGhyb3cgdmJiKG5ldyBxY2IoRGxlK2IubysnKicrYi5wK0VsZStjK1NoZStkK0ZsZSkpfWVsc2UgdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIEJVYyhhLGIsYyxkKXt2YXIgZSxmLGc7aWYoYil7Zj1FZGIoRUQodk5iKGIsKG1UYygpLGZUYykpKSkrZDtnPWMrRWRiKEVEKHZOYihiLGJUYykpKS8yO3lOYihiLGtUYyxtZWIoVGJiKENiYigkd25kLk1hdGgucm91bmQoZikpKSkpO3lOYihiLGxUYyxtZWIoVGJiKENiYigkd25kLk1hdGgucm91bmQoZykpKSkpO2IuZC5iPT0wfHxCVWMoYSxCRChwcigoZT1Kc2IoKG5ldyBaUmMoYikpLmEuZCwwKSxuZXcgYVNjKGUpKSksODYpLGMrRWRiKEVEKHZOYihiLGJUYykpKSthLmEsZCtFZGIoRUQodk5iKGIsY1RjKSkpKTt2TmIoYixpVGMpIT1udWxsJiZCVWMoYSxCRCh2TmIoYixpVGMpLDg2KSxjLGQpfX1cbmZ1bmN0aW9uIE45YihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07aT1RX2IoYi5hKTtlPUVkYihFRCh2TmIoaSwoTnljKCkscHljKSkpKSoyO2s9RWRiKEVEKHZOYihpLHd5YykpKTtqPSR3bmQuTWF0aC5tYXgoZSxrKTtmPUtDKFVELFZqZSwyNSxiLmYtYi5jKzEsMTUsMSk7ZD0tajtjPTA7Zm9yKGg9Yi5iLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTApO2QrPWEuYVtnLmMucF0rajtmW2MrK109ZH1kKz1hLmFbYi5hLmMucF0rajtmW2MrK109ZDtmb3IobT1uZXcgb2xiKGIuZSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDEwKTtkKz1hLmFbbC5jLnBdK2o7ZltjKytdPWR9cmV0dXJuIGZ9XG5mdW5jdGlvbiBHSGMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtO209bmV3IEh4YihuZXcgcEljKGEpKTtmb3IoaD1PQyhHQyhPUSwxKSxrbmUsMTAsMCxbYixjXSksaT0wLGo9aC5sZW5ndGg7aTxqOysraSl7Zz1oW2ldO2ZvcihsPUNIYyhnLGQpLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMTEpO2ZvcihmPW5ldyBiMWIoay5iKTtsbGIoZi5hKXx8bGxiKGYuYik7KXtlPUJEKGxsYihmLmEpP21sYihmLmEpOm1sYihmLmIpLDE3KTtpZighT1piKGUpKXtJd2IobS5hLGssKEJjYigpLHpjYikpPT1udWxsO1dIYyhlKSYmQXhiKG0saz09ZS5jP2UuZDplLmMpfX19fXJldHVybiBRYihtKSxuZXcgVGtiKG0pfVxuZnVuY3Rpb24gemhkKGEsYil7dmFyIGMsZCxlLGY7Zj1CRChoa2QoYSwoWTljKCksQTljKSksNjEpLmctQkQoaGtkKGIsQTljKSw2MSkuZztpZihmIT0wKXtyZXR1cm4gZn1jPUJEKGhrZChhLHY5YyksMTkpO2Q9QkQoaGtkKGIsdjljKSwxOSk7aWYoISFjJiYhIWQpe2U9Yy5hLWQuYTtpZihlIT0wKXtyZXR1cm4gZX19c3dpdGNoKEJEKGhrZChhLEE5YyksNjEpLmcpe2Nhc2UgMTpyZXR1cm4gS2RiKGEuaSxiLmkpO2Nhc2UgMjpyZXR1cm4gS2RiKGEuaixiLmopO2Nhc2UgMzpyZXR1cm4gS2RiKGIuaSxhLmkpO2Nhc2UgNDpyZXR1cm4gS2RiKGIuaixhLmopO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBaZGIoaW5lKSk7fX1cbmZ1bmN0aW9uIF9vZChhKXt2YXIgYixjLGQ7aWYoKGEuRGImNjQpIT0wKXJldHVybiBmbGQoYSk7Yj1uZXcgV2ZiKGV0ZSk7Yz1hLms7aWYoIWMpeyFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpO2lmKGEubi5pPjApe2Q9KCFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpLEJEKHF1ZChhLm4sMCksMTM3KSkuYTshZHx8UWZiKFFmYigoYi5hKz0nIFwiJyxiKSxkKSwnXCInKX19ZWxzZXtRZmIoUWZiKChiLmErPScgXCInLGIpLGMpLCdcIicpfVFmYihMZmIoUWZiKExmYihRZmIoTGZiKFFmYihMZmIoKGIuYSs9JyAoJyxiKSxhLmkpLCcsJyksYS5qKSwnIHwgJyksYS5nKSwnLCcpLGEuZiksJyknKTtyZXR1cm4gYi5hfVxuZnVuY3Rpb24gb3BkKGEpe3ZhciBiLGMsZDtpZigoYS5EYiY2NCkhPTApcmV0dXJuIGZsZChhKTtiPW5ldyBXZmIoZnRlKTtjPWEuaztpZighYyl7IWEubiYmKGEubj1uZXcgY1VkKEQyLGEsMSw3KSk7aWYoYS5uLmk+MCl7ZD0oIWEubiYmKGEubj1uZXcgY1VkKEQyLGEsMSw3KSksQkQocXVkKGEubiwwKSwxMzcpKS5hOyFkfHxRZmIoUWZiKChiLmErPScgXCInLGIpLGQpLCdcIicpfX1lbHNle1FmYihRZmIoKGIuYSs9JyBcIicsYiksYyksJ1wiJyl9UWZiKExmYihRZmIoTGZiKFFmYihMZmIoUWZiKExmYigoYi5hKz0nICgnLGIpLGEuaSksJywnKSxhLmopLCcgfCAnKSxhLmcpLCcsJyksYS5mKSwnKScpO3JldHVybiBiLmF9XG5mdW5jdGlvbiBoNGMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihiPT1udWxsfHxiLmxlbmd0aD09MCl7cmV0dXJuIG51bGx9ZT1CRChQaGIoYS5hLGIpLDE0OSk7aWYoIWUpe2ZvcihkPShoPShuZXcgJGliKGEuYikpLmEudmMoKS5LYygpLG5ldyBkamIoaCkpO2QuYS5PYigpOyl7Yz0oZj1CRChkLmEuUGIoKSw0MiksQkQoZi5kZCgpLDE0OSkpO2c9Yy5jO2k9Yi5sZW5ndGg7aWYoZGZiKGcuc3Vic3RyKGcubGVuZ3RoLWksaSksYikmJihiLmxlbmd0aD09Zy5sZW5ndGh8fGJmYihnLGcubGVuZ3RoLWIubGVuZ3RoLTEpPT00Nikpe2lmKGUpe3JldHVybiBudWxsfWU9Y319ISFlJiZTaGIoYS5hLGIsZSl9cmV0dXJuIGV9XG5mdW5jdGlvbiBRTGIoYSxiKXt2YXIgYyxkLGUsZjtjPW5ldyBWTGI7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLEV5YiksRHliXSkpKSwyMSk7ZT1kLmdjKCk7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbRXliLER5Yl0pKSksMjEpO2Y9ZC5nYygpO2lmKGU8Zil7cmV0dXJuIC0xfWlmKGU9PWYpe3JldHVybiAwfXJldHVybiAxfVxuZnVuY3Rpb24gcjViKGEpe3ZhciBiLGMsZDtpZighd05iKGEsKE55YygpLHh4YykpKXtyZXR1cm59ZD1CRCh2TmIoYSx4eGMpLDIxKTtpZihkLmRjKCkpe3JldHVybn1jPShiPUJEKGdkYihCMSksOSksbmV3IHhxYihiLEJEKF9CYihiLGIubGVuZ3RoKSw5KSwwKSk7ZC5IYygoSGJkKCksQ2JkKSk/cnFiKGMsQ2JkKTpycWIoYyxEYmQpO2QuSGMoQWJkKXx8cnFiKGMsQWJkKTtkLkhjKHpiZCk/cnFiKGMsR2JkKTpkLkhjKHliZCk/cnFiKGMsRmJkKTpkLkhjKEJiZCkmJnJxYihjLEViZCk7ZC5IYyhHYmQpP3JxYihjLHpiZCk6ZC5IYyhGYmQpP3JxYihjLHliZCk6ZC5IYyhFYmQpJiZycWIoYyxCYmQpO3lOYihhLHh4YyxjKX1cbmZ1bmN0aW9uIGtIYyhhKXt2YXIgYixjLGQsZSxmLGcsaDtlPUJEKHZOYihhLCh3dGMoKSxQc2MpKSwxMCk7ZD1hLmo7Yz0odENiKDAsZC5jLmxlbmd0aCksQkQoZC5jWzBdLDExKSk7Zm9yKGc9bmV3IG9sYihlLmopO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMSk7aWYoUEQoZik9PT1QRCh2TmIoYywkc2MpKSl7aWYoZi5qPT0oVWNkKCksQWNkKSYmYS5wPmUucCl7RzBiKGYsUmNkKTtpZihmLmQpe2g9Zi5vLmI7Yj1mLmEuYjtmLmEuYj1oLWJ9fWVsc2UgaWYoZi5qPT1SY2QmJmUucD5hLnApe0cwYihmLEFjZCk7aWYoZi5kKXtoPWYuby5iO2I9Zi5hLmI7Zi5hLmI9LShoLWIpfX1icmVha319cmV0dXJuIGV9XG5mdW5jdGlvbiBOT2MoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbztmPWM7aWYoYzxkKXttPShuPW5ldyB1T2MoYS5wKSxvPW5ldyB1T2MoYS5wKSx5ZShuLmUsYS5lKSxuLnE9YS5xLG4ucj1vLGxPYyhuKSx5ZShvLmosYS5qKSxvLnI9bixsT2MobyksbmV3IHZnZChuLG8pKTtsPUJEKG0uYSwxMTIpO2s9QkQobS5iLDExMik7ZT0odENiKGYsYi5jLmxlbmd0aCksQkQoYi5jW2ZdLDMyOSkpO2c9VU9jKGEsbCxrLGUpO2ZvcihqPWMrMTtqPD1kO2orKyl7aD0odENiKGosYi5jLmxlbmd0aCksQkQoYi5jW2pdLDMyOSkpO2k9VU9jKGEsbCxrLGgpO2lmKFNPYyhoLGksZSxnKSl7ZT1oO2c9aX19fXJldHVybiBmfVxuZnVuY3Rpb24gd1FiKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGw7aWYoIShKRChiLDIzOSl8fEpEKGIsMzU0KXx8SkQoYiwxODYpKSl7dGhyb3cgdmJiKG5ldyBXZGIoJ01ldGhvZCBvbmx5IHdvcmtzIGZvciBFbGtOb2RlLSwgRWxrTGFiZWwgYW5kIEVsa1BvcnQtb2JqZWN0cy4nKSl9Zz1hLmEvMjtpPWIuaStkLWc7az1iLmorZS1nO2o9aStiLmcrYS5hO2w9aytiLmYrYS5hO2Y9bmV3IHM3YztEc2IoZixuZXcgZjdjKGksaykpO0RzYihmLG5ldyBmN2MoaSxsKSk7RHNiKGYsbmV3IGY3YyhqLGwpKTtEc2IoZixuZXcgZjdjKGosaykpO2g9bmV3IFhPYihmKTt0TmIoaCxiKTtjJiZSaGIoYS5iLGIsaCk7cmV0dXJuIGh9XG5mdW5jdGlvbiB1WGIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtO2Y9bmV3IGY3YyhiLGMpO2ZvcihrPW5ldyBvbGIoYS5hKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksMTApO1A2YyhqLm4sZik7Zm9yKG09bmV3IG9sYihqLmopO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSwxMSk7Zm9yKGU9bmV3IG9sYihsLmcpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7cTdjKGQuYSxmKTtnPUJEKHZOYihkLChOeWMoKSxqeGMpKSw3NCk7ISFnJiZxN2MoZyxmKTtmb3IoaT1uZXcgb2xiKGQuYik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDcwKTtQNmMoaC5uLGYpfX19fX1cbmZ1bmN0aW9uIGdfYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07Zj1uZXcgZjdjKGIsYyk7Zm9yKGs9bmV3IG9sYihhLmEpO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMCk7UDZjKGoubixmKTtmb3IobT1uZXcgb2xiKGouaik7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDExKTtmb3IoZT1uZXcgb2xiKGwuZyk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE3KTtxN2MoZC5hLGYpO2c9QkQodk5iKGQsKE55YygpLGp4YykpLDc0KTshIWcmJnE3YyhnLGYpO2ZvcihpPW5ldyBvbGIoZC5iKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksNzApO1A2YyhoLm4sZil9fX19fVxuZnVuY3Rpb24gTjFiKGEpe2lmKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLmk9PTApe3Rocm93IHZiYihuZXcgejJjKCdFZGdlcyBtdXN0IGhhdmUgYSBzb3VyY2UuJykpfWVsc2UgaWYoKCFhLmMmJihhLmM9bmV3IHk1ZCh6MixhLDUsOCkpLGEuYykuaT09MCl7dGhyb3cgdmJiKG5ldyB6MmMoJ0VkZ2VzIG11c3QgaGF2ZSBhIHRhcmdldC4nKSl9ZWxzZXshYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKTtpZighKGEuYi5pPD0xJiYoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jLmk8PTEpKSl7dGhyb3cgdmJiKG5ldyB6MmMoJ0h5cGVyZWRnZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJykpfX19XG5mdW5jdGlvbiBPRmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtsPTA7Zj1uZXcgamtiO1dqYihmLGIpO3doaWxlKGYuYiE9Zi5jKXtpPUJEKGZrYihmKSwyMTQpO2o9MDtrPUJEKHZOYihiLmosKE55YygpLHl3YykpLDMzOSk7Zz1FZGIoRUQodk5iKGIuaix1d2MpKSk7aD1FZGIoRUQodk5iKGIuaix2d2MpKSk7aWYoayE9KHRBYygpLHJBYykpe2orPWcqUEZjKGkuZSxrKTtqKz1oKlFGYyhpLmUpfWwrPXBIYyhpLmQsaS5lKStqO2ZvcihlPW5ldyBvbGIoaS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMzcpO2M9QkQoSWtiKGEuYixkLnApLDIxNCk7Yy5zfHwobCs9TkZjKGEsYykpfX1yZXR1cm4gbH1cbmZ1bmN0aW9uIGRoYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscTtuPWIubGVuZ3RoO2k9bjtCQ2IoMCxiLmxlbmd0aCk7aWYoYi5jaGFyQ29kZUF0KDApPT00NSl7bD0tMTttPTE7LS1ufWVsc2V7bD0xO209MH1mPShwaGIoKSxvaGIpWzEwXTtlPW4vZnwwO3E9biVmO3EhPTAmJisrZTtoPUtDKFdELG9qZSwyNSxlLDE1LDEpO2M9bmhiWzhdO2c9MDtvPW0rKHE9PTA/ZjpxKTtmb3IocD1tO3A8aTtwPW8sbz1wK2Ype2Q9SWNiKGIuc3Vic3RyKHAsby1wKSxSaWUsT2hlKTtqPShEaGIoKSxIaGIoaCxoLGcsYykpO2orPXhoYihoLGcsZCk7aFtnKytdPWp9az1nO2EuZT1sO2EuZD1rO2EuYT1oO0pnYihhKX1cbmZ1bmN0aW9uIFNHYihhLGIsYyxkLGUsZixnKXthLmM9ZC5xZigpLmE7YS5kPWQucWYoKS5iO2lmKGUpe2EuYys9ZS5xZigpLmE7YS5kKz1lLnFmKCkuYn1hLmI9Yi5yZigpLmE7YS5hPWIucmYoKS5iO2lmKCFlKXtjPyhhLmMtPWcrYi5yZigpLmEpOihhLmMrPWQucmYoKS5hK2cpfWVsc2V7c3dpdGNoKGUuSGYoKS5nKXtjYXNlIDA6Y2FzZSAyOmEuYys9ZS5yZigpLmErZytmLmErZzticmVhaztjYXNlIDQ6YS5jLT1nK2YuYStnK2IucmYoKS5hO2JyZWFrO2Nhc2UgMTphLmMrPWUucmYoKS5hK2c7YS5kLT1nK2YuYitnK2IucmYoKS5iO2JyZWFrO2Nhc2UgMzphLmMrPWUucmYoKS5hK2c7YS5kKz1lLnJmKCkuYitnK2YuYitnO319fVxuZnVuY3Rpb24gZ2FjKGEsYil7dmFyIGMsZDt0aGlzLmI9bmV3IFJrYjt0aGlzLmU9bmV3IFJrYjt0aGlzLmE9YTt0aGlzLmQ9YjtkYWModGhpcyk7ZWFjKHRoaXMpO3RoaXMuYi5kYygpPyh0aGlzLmM9YS5jLnApOih0aGlzLmM9QkQodGhpcy5iLlhiKDApLDEwKS5jLnApO3RoaXMuZS5jLmxlbmd0aD09MD8odGhpcy5mPWEuYy5wKToodGhpcy5mPUJEKElrYih0aGlzLmUsdGhpcy5lLmMubGVuZ3RoLTEpLDEwKS5jLnApO2ZvcihkPUJEKHZOYihhLCh3dGMoKSxrdGMpKSwxNSkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSw3MCk7aWYod05iKGMsKE55YygpLE93YykpKXt0aGlzLmQ9QkQodk5iKGMsT3djKSwyMjcpO2JyZWFrfX19XG5mdW5jdGlvbiBBbmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7ZD1CRChPaGIoYS5hLGIpLDUzKTtmPUJEKE9oYihhLmEsYyksNTMpO2U9QkQoT2hiKGEuZSxiKSw1Myk7Zz1CRChPaGIoYS5lLGMpLDUzKTtkLmEuemMoYyxkKTtnLmEuemMoYixnKTtmb3Ioaz1mLmEuZWMoKS5LYygpO2suT2IoKTspe2o9QkQoay5QYigpLDEwKTtkLmEuemMoaixkKTtRcWIoQkQoT2hiKGEuZSxqKSw1MyksYik7eWUoQkQoT2hiKGEuZSxqKSw1MyksZSl9Zm9yKGk9ZS5hLmVjKCkuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwxMCk7Zy5hLnpjKGgsZyk7UXFiKEJEKE9oYihhLmEsaCksNTMpLGMpO3llKEJEKE9oYihhLmEsaCksNTMpLGYpfX1cbmZ1bmN0aW9uIFdHYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztkPUJEKE9oYihhLmEsYiksNTMpO2Y9QkQoT2hiKGEuYSxjKSw1Myk7ZT1CRChPaGIoYS5iLGIpLDUzKTtnPUJEKE9oYihhLmIsYyksNTMpO2QuYS56YyhjLGQpO2cuYS56YyhiLGcpO2ZvcihrPWYuYS5lYygpLktjKCk7ay5PYigpOyl7aj1CRChrLlBiKCksMTApO2QuYS56YyhqLGQpO1FxYihCRChPaGIoYS5iLGopLDUzKSxiKTt5ZShCRChPaGIoYS5iLGopLDUzKSxlKX1mb3IoaT1lLmEuZWMoKS5LYygpO2kuT2IoKTspe2g9QkQoaS5QYigpLDEwKTtnLmEuemMoaCxnKTtRcWIoQkQoT2hiKGEuYSxoKSw1MyksYyk7eWUoQkQoT2hiKGEuYSxoKSw1MyksZil9fVxuZnVuY3Rpb24gZG9jKGEsYil7dmFyIGMsZCxlO09kZChiLCdCcmVha2luZyBQb2ludCBJbnNlcnRpb24nLDEpO2Q9bmV3IFhvYyhhKTtzd2l0Y2goQkQodk5iKGEsKE55YygpLEd5YykpLDMzNykuZyl7Y2FzZSAyOmU9bmV3IGhwYztjYXNlIDA6ZT1uZXcgWW5jO2JyZWFrO2RlZmF1bHQ6ZT1uZXcga3BjO31jPWUuVmYoYSxkKTtDY2IoREQodk5iKGEsSXljKSkpJiYoYz1jb2MoYSxjKSk7aWYoIWUuV2YoKSYmd05iKGEsTXljKSl7c3dpdGNoKEJEKHZOYihhLE15YyksMzM4KS5nKXtjYXNlIDI6Yz10cGMoZCxjKTticmVhaztjYXNlIDE6Yz1ycGMoZCxjKTt9fWlmKGMuZGMoKSl7UWRkKGIpO3JldHVybn1hb2MoYSxjKTtRZGQoYil9XG5mdW5jdGlvbiAkcWQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtO2s9bnVsbDttPWI7bD1ScWQoYSxkdGQoYyksbSk7TGtkKGwsX3BkKG0sVnRlKSk7Zz1ZcGQobSxMdGUpO2Q9bmV3IG1yZChhLGwpO29xZChkLmEsZC5iLGcpO2g9WXBkKG0sTXRlKTtlPW5ldyBucmQoYSxsKTtwcWQoZS5hLGUuYixoKTtpZigoIWwuYiYmKGwuYj1uZXcgeTVkKHoyLGwsNCw3KSksbC5iKS5pPT0wfHwoIWwuYyYmKGwuYz1uZXcgeTVkKHoyLGwsNSw4KSksbC5jKS5pPT0wKXtmPV9wZChtLFZ0ZSk7aT1adGUrZjtqPWkrJHRlO3Rocm93IHZiYihuZXcgY3FkKGopKX1ncmQobSxsKTtfcWQoYSxtLGwpO2s9Y3JkKGEsbSxsKTtyZXR1cm4ga31cbmZ1bmN0aW9uIHlHYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2U9S0MoV0Qsb2plLDI1LGEuZS5hLmMubGVuZ3RoLDE1LDEpO2ZvcihnPW5ldyBvbGIoYS5lLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMjEpO2VbZi5kXSs9Zi5iLmEuYy5sZW5ndGh9aD1SdShiKTt3aGlsZShoLmIhPTApe2Y9QkQoaC5iPT0wP251bGw6KHNDYihoLmIhPTApLE5zYihoLGguYS5hKSksMTIxKTtmb3IoZD12cihuZXcgb2xiKGYuZy5hKSk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjEzKTtpPWMuZTtpLmU9JHduZC5NYXRoLm1heChpLmUsZi5lK2MuYSk7LS1lW2kuZF07ZVtpLmRdPT0wJiYoR3NiKGgsaSxoLmMuYixoLmMpLHRydWUpfX19XG5mdW5jdGlvbiBDR2IoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDtjPVJpZTtlPU9oZTtmb3IoaD1uZXcgb2xiKGEuZS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoaCksMTIxKTtlPSR3bmQuTWF0aC5taW4oZSxmLmUpO2M9JHduZC5NYXRoLm1heChjLGYuZSl9Yj1LQyhXRCxvamUsMjUsYy1lKzEsMTUsMSk7Zm9yKGc9bmV3IG9sYihhLmUuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEyMSk7Zi5lLT1lOysrYltmLmVdfWQ9MDtpZihhLmshPW51bGwpe2ZvcihqPWEuayxrPTAsbD1qLmxlbmd0aDtrPGw7KytrKXtpPWpba107YltkKytdKz1pO2lmKGIubGVuZ3RoPT1kKXticmVha319fXJldHVybiBifVxuZnVuY3Rpb24gaXhkKGEpe3N3aXRjaChhLmQpe2Nhc2UgOTpjYXNlIDg6e3JldHVybiB0cnVlfWNhc2UgMzpjYXNlIDU6Y2FzZSA0OmNhc2UgNjp7cmV0dXJuIGZhbHNlfWNhc2UgNzp7cmV0dXJuIEJEKGh4ZChhKSwxOSkuYT09YS5vfWNhc2UgMTpjYXNlIDI6e2lmKGEubz09LTIpe3JldHVybiBmYWxzZX1lbHNle3N3aXRjaChhLnApe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmNhc2UgNjpjYXNlIDU6Y2FzZSA3OntyZXR1cm4gQmJiKGEuayxhLmYpfWNhc2UgMzpjYXNlIDQ6e3JldHVybiBhLmo9PWEuZX1kZWZhdWx0OntyZXR1cm4gYS5uPT1udWxsP2EuZz09bnVsbDpwYihhLm4sYS5nKX19fX1kZWZhdWx0OntyZXR1cm4gZmFsc2V9fX1cbmZ1bmN0aW9uICRhZChhKXtyNGMoYSxuZXcgRTNjKFAzYyhNM2MoTzNjKE4zYyhuZXcgUjNjLFFzZSksJ0VMSyBGaXhlZCcpLCdLZWVwcyB0aGUgY3VycmVudCBsYXlvdXQgYXMgaXQgaXMsIHdpdGhvdXQgYW55IGF1dG9tYXRpYyBtb2RpZmljYXRpb24uIE9wdGlvbmFsIGNvb3JkaW5hdGVzIGNhbiBiZSBnaXZlbiBmb3Igbm9kZXMgYW5kIGVkZ2UgYmVuZCBwb2ludHMuJyksbmV3IGJiZCkpKTtwNGMoYSxRc2UsYW1lLFhhZCk7cDRjKGEsUXNlLHVxZSxLc2QoWWFkKSk7cDRjKGEsUXNlLHVzZSxLc2QoU2FkKSk7cDRjKGEsUXNlLEZtZSxLc2QoVGFkKSk7cDRjKGEsUXNlLFRtZSxLc2QoVmFkKSk7cDRjKGEsUXNlLGJxZSxLc2QoVWFkKSl9XG5mdW5jdGlvbiBybyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtkPVRiYihJYmIoRWllLGtlYihUYmIoSWJiKGI9PW51bGw/MDp0YihiKSxGaWUpKSwxNSkpKTtoPVRiYihJYmIoRWllLGtlYihUYmIoSWJiKGM9PW51bGw/MDp0YihjKSxGaWUpKSwxNSkpKTtmPXVvKGEsYixkKTtpZighIWYmJmg9PWYuZiYmSGIoYyxmLmkpKXtyZXR1cm4gY31nPXZvKGEsYyxoKTtpZihnKXt0aHJvdyB2YmIobmV3IFdkYigndmFsdWUgYWxyZWFkeSBwcmVzZW50OiAnK2MpKX1lPW5ldyAkbyhiLGQsYyxoKTtpZihmKXttbyhhLGYpO3BvKGEsZSxmKTtmLmU9bnVsbDtmLmM9bnVsbDtyZXR1cm4gZi5pfWVsc2V7cG8oYSxlLG51bGwpO3RvKGEpO3JldHVybiBudWxsfX1cbmZ1bmN0aW9uIEU0YihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2s9Yy5hLmM7Zz1jLmEuYytjLmEuYjtmPUJEKE9oYihjLmMsYiksNDU5KTtuPWYuZjtvPWYuYTtmLmI/KGk9bmV3IGY3YyhnLG4pKTooaT1uZXcgZjdjKGssbikpO2YuYz8obD1uZXcgZjdjKGssbykpOihsPW5ldyBmN2MoZyxvKSk7ZT1rO2MucHx8KGUrPWEuYyk7ZSs9Yy5GK2MudiphLmI7aj1uZXcgZjdjKGUsbik7bT1uZXcgZjdjKGUsbyk7bjdjKGIuYSxPQyhHQyhtMSwxKSxuaWUsOCwwLFtpLGpdKSk7aD1jLmQuYS5nYygpPjE7aWYoaCl7ZD1uZXcgZjdjKGUsYy5iKTtEc2IoYi5hLGQpfW43YyhiLmEsT0MoR0MobTEsMSksbmllLDgsMCxbbSxsXSkpfVxuZnVuY3Rpb24gTmlkKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoIWIpe3JldHVybiBudWxsfWVsc2V7aWYoYzw9LTEpe2Q9WEtkKGIuVGcoKSwtMS1jKTtpZihKRChkLDk5KSl7cmV0dXJuIEJEKGQsMTgpfWVsc2V7Zz1CRChiLmFoKGQpLDE1Myk7Zm9yKGg9MCxpPWcuZ2MoKTtoPGk7KytoKXtpZihQRChnLmpsKGgpKT09PVBEKGEpKXtlPWcuaWwoaCk7aWYoSkQoZSw5OSkpe2Y9QkQoZSwxOCk7aWYoKGYuQmImb3RlKSE9MCl7cmV0dXJuIGZ9fX19dGhyb3cgdmJiKG5ldyBaZGIoJ1RoZSBjb250YWlubWVudCBmZWF0dXJlIGNvdWxkIG5vdCBiZSBsb2NhdGVkJykpfX1lbHNle3JldHVybiB6VWQoQkQoWEtkKGEuVGcoKSxjKSwxOCkpfX19XG5mdW5jdGlvbiBYZWUoYSl7dmFyIGIsYyxkLGUsZjtkPWEubGVuZ3RoO2I9bmV3IElmYjtmPTA7d2hpbGUoZjxkKXtjPWJmYihhLGYrKyk7aWYoYz09OXx8Yz09MTB8fGM9PTEyfHxjPT0xM3x8Yz09MzIpY29udGludWU7aWYoYz09MzUpe3doaWxlKGY8ZCl7Yz1iZmIoYSxmKyspO2lmKGM9PTEzfHxjPT0xMClicmVha31jb250aW51ZX1pZihjPT05MiYmZjxkKXtpZigoZT0oQkNiKGYsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChmKSkpPT0zNXx8ZT09OXx8ZT09MTB8fGU9PTEyfHxlPT0xM3x8ZT09MzIpe0FmYihiLGUmYWplKTsrK2Z9ZWxzZXtiLmErPSdcXFxcJztBZmIoYixlJmFqZSk7KytmfX1lbHNlIEFmYihiLGMmYWplKX1yZXR1cm4gYi5hfVxuZnVuY3Rpb24gR1ZjKGEsYil7dmFyIGMsZCxlO2ZvcihkPW5ldyBvbGIoYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDMzKTtSYyhhLmEsYyxjKTtSYyhhLmIsYyxjKTtlPWdWYyhjKTtpZihlLmMubGVuZ3RoIT0wKXshIWEuZCYmYS5kLmxnKGUpO1JjKGEuYSxjLCh0Q2IoMCxlLmMubGVuZ3RoKSxCRChlLmNbMF0sMzMpKSk7UmMoYS5iLGMsQkQoSWtiKGUsZS5jLmxlbmd0aC0xKSwzMykpO3doaWxlKGRWYyhlKS5jLmxlbmd0aCE9MCl7ZT1kVmMoZSk7ISFhLmQmJmEuZC5sZyhlKTtSYyhhLmEsYywodENiKDAsZS5jLmxlbmd0aCksQkQoZS5jWzBdLDMzKSkpO1JjKGEuYixjLEJEKElrYihlLGUuYy5sZW5ndGgtMSksMzMpKX19fX1cbmZ1bmN0aW9uIGZuYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosaztjPTA7Zm9yKGg9bmV3IG9sYihhLmQpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMDEpOyEhZy5pJiYoZy5pLmM9YysrKX1iPUlDKHNiYixbbmllLGRsZV0sWzE3NywyNV0sMTYsW2MsY10sMik7az1hLmQ7Zm9yKGU9MDtlPGsuYy5sZW5ndGg7ZSsrKXtpPSh0Q2IoZSxrLmMubGVuZ3RoKSxCRChrLmNbZV0sMTAxKSk7aWYoaS5pKXtmb3IoZj1lKzE7ZjxrLmMubGVuZ3RoO2YrKyl7aj0odENiKGYsay5jLmxlbmd0aCksQkQoay5jW2ZdLDEwMSkpO2lmKGouaSl7ZD1rbmMoaSxqKTtiW2kuaS5jXVtqLmkuY109ZDtiW2ouaS5jXVtpLmkuY109ZH19fX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGh0KGEsYixjLGQpe3ZhciBlLGYsZztnPW5ldyBxdShiLGMpO2lmKCFhLmEpe2EuYT1hLmU9ZztSaGIoYS5iLGIsbmV3IHB1KGcpKTsrK2EuY31lbHNlIGlmKCFkKXthLmUuYj1nO2cuZD1hLmU7YS5lPWc7ZT1CRChPaGIoYS5iLGIpLDI4Myk7aWYoIWUpe1JoYihhLmIsYixlPW5ldyBwdShnKSk7KythLmN9ZWxzZXsrK2UuYTtmPWUuYztmLmM9ZztnLmU9ZjtlLmM9Z319ZWxzZXtlPUJEKE9oYihhLmIsYiksMjgzKTsrK2UuYTtnLmQ9ZC5kO2cuZT1kLmU7Zy5iPWQ7Zy5jPWQ7IWQuZT8oQkQoT2hiKGEuYixiKSwyODMpLmI9Zyk6KGQuZS5jPWcpOyFkLmQ/KGEuYT1nKTooZC5kLmI9Zyk7ZC5kPWc7ZC5lPWd9KythLmQ7cmV0dXJuIGd9XG5mdW5jdGlvbiBtZmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2M9bmV3IFJlZ0V4cChiLCdnJyk7aT1LQyhaSSxuaWUsMiwwLDYsMSk7ZD0wO2o9YTtmPW51bGw7d2hpbGUodHJ1ZSl7aD1jLmV4ZWMoaik7aWYoaD09bnVsbHx8aj09Jycpe2lbZF09ajticmVha31lbHNle2c9aC5pbmRleDtpW2RdPWouc3Vic3RyKDAsZyk7aj1xZmIoaixnK2hbMF0ubGVuZ3RoLGoubGVuZ3RoKTtjLmxhc3RJbmRleD0wO2lmKGY9PWope2lbZF09ai5zdWJzdHIoMCwxKTtqPWouc3Vic3RyKDEpfWY9ajsrK2R9fWlmKGEubGVuZ3RoPjApe2U9aS5sZW5ndGg7d2hpbGUoZT4wJiZpW2UtMV09PScnKXstLWV9ZTxpLmxlbmd0aCYmKGkubGVuZ3RoPWUpfXJldHVybiBpfVxuZnVuY3Rpb24gZjFkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7bD1fS2QoYik7aj1udWxsO2U9ZmFsc2U7Zm9yKGg9MCxrPVZLZChsLmEpLmk7aDxrOysraCl7Zz1CRChuT2QobCxoLChmPUJEKHF1ZChWS2QobC5hKSxoKSw4NyksaT1mLmMsSkQoaSw4OCk/QkQoaSwyNik6KGpHZCgpLF9GZCkpKSwyNik7Yz1mMWQoYSxnKTtpZighYy5kYygpKXtpZighail7aj1jfWVsc2V7aWYoIWUpe2U9dHJ1ZTtqPW5ldyBwRmQoail9ai5HYyhjKX19fWQ9azFkKGEsYik7aWYoZC5kYygpKXtyZXR1cm4gIWo/KG1tYigpLG1tYigpLGptYik6an1lbHNle2lmKCFqKXtyZXR1cm4gZH1lbHNle2V8fChqPW5ldyBwRmQoaikpO2ouR2MoZCk7cmV0dXJuIGp9fX1cbmZ1bmN0aW9uIGcxZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO2w9X0tkKGIpO2o9bnVsbDtkPWZhbHNlO2ZvcihoPTAsaz1WS2QobC5hKS5pO2g8azsrK2gpe2Y9QkQobk9kKGwsaCwoZT1CRChxdWQoVktkKGwuYSksaCksODcpLGk9ZS5jLEpEKGksODgpP0JEKGksMjYpOihqR2QoKSxfRmQpKSksMjYpO2M9ZzFkKGEsZik7aWYoIWMuZGMoKSl7aWYoIWope2o9Y31lbHNle2lmKCFkKXtkPXRydWU7aj1uZXcgcEZkKGopfWouR2MoYyl9fX1nPW4xZChhLGIpO2lmKGcuZGMoKSl7cmV0dXJuICFqPyhtbWIoKSxtbWIoKSxqbWIpOmp9ZWxzZXtpZighail7cmV0dXJuIGd9ZWxzZXtkfHwoaj1uZXcgcEZkKGopKTtqLkdjKGcpO3JldHVybiBqfX19XG5mdW5jdGlvbiBCMmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtpZihKRChiLDcyKSl7cmV0dXJuIFR4ZChhLGIsYyl9ZWxzZXtoPW51bGw7Zj1udWxsO2Q9QkQoYS5nLDExOSk7Zm9yKGc9MDtnPGEuaTsrK2cpe2U9ZFtnXTtpZihwYihiLGUuZGQoKSkpe2Y9ZS5haygpO2lmKEpEKGYsOTkpJiYoQkQoZiwxOCkuQmImb3RlKSE9MCl7aD1lO2JyZWFrfX19aWYoaCl7aWYob2lkKGEuZSkpe2k9Zi4kaigpP0gyZChhLDQsZixiLG51bGwsTTJkKGEsZixiLEpEKGYsOTkpJiYoQkQoZiwxOCkuQmImVGplKSE9MCksdHJ1ZSk6SDJkKGEsZi5LaigpPzI6MSxmLGIsZi56aigpLC0xLHRydWUpO2M/Yy5FaShpKTooYz1pKX1jPUIyZChhLGgsYyl9cmV0dXJuIGN9fVxuZnVuY3Rpb24gcEtiKGEpe3ZhciBiLGMsZCxlO2Q9YS5vOyRKYigpO2lmKGEuQS5kYygpfHxwYihhLkEsWkpiKSl7ZT1kLmF9ZWxzZXtlPWdJYihhLmYpO2lmKGEuQS5IYygodGRkKCkscWRkKSkmJiFhLkIuSGMoKElkZCgpLEVkZCkpKXtlPSR3bmQuTWF0aC5tYXgoZSxnSWIoQkQoTXBiKGEucCwoVWNkKCksQWNkKSksMjQ0KSkpO2U9JHduZC5NYXRoLm1heChlLGdJYihCRChNcGIoYS5wLFJjZCksMjQ0KSkpfWI9YUtiKGEpOyEhYiYmKGU9JHduZC5NYXRoLm1heChlLGIuYSkpfUNjYihERChhLmUueWYoKS5XZSgoWTljKCksJDhjKSkpKT8oZC5hPSR3bmQuTWF0aC5tYXgoZC5hLGUpKTooZC5hPWUpO2M9YS5mLmk7Yy5jPTA7Yy5iPWU7aEliKGEuZil9XG5mdW5jdGlvbiAkMGQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7Yz1iLkhoKGEuYSk7aWYoYyl7aT1HRChBQWQoKCFjLmImJihjLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4NixjKSksYy5iKSwnbWVtYmVyVHlwZXMnKSk7aWYoaSE9bnVsbCl7aj1uZXcgUmtiO2ZvcihmPW1mYihpLCdcXFxcdycpLGc9MCxoPWYubGVuZ3RoO2c8aDsrK2cpe2U9ZltnXTtkPWUubGFzdEluZGV4T2YoJyMnKTtrPWQ9PS0xP3cxZChhLGIuQWooKSxlKTpkPT0wP3YxZChhLG51bGwsZS5zdWJzdHIoMSkpOnYxZChhLGUuc3Vic3RyKDAsZCksZS5zdWJzdHIoZCsxKSk7SkQoaywxNDgpJiZFa2IoaixCRChrLDE0OCkpfXJldHVybiBqfX1yZXR1cm4gbW1iKCksbW1iKCksam1ifVxuZnVuY3Rpb24gdFJiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrO09kZChjLGttZSwxKTthLmJmKGIpO2Y9MDt3aGlsZShhLmRmKGYpKXtmb3Ioaz1uZXcgb2xiKGIuZSk7ay5hPGsuYy5jLmxlbmd0aDspe2k9QkQobWxiKGspLDE0NCk7Zm9yKGg9dWwocGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW2IuZSxiLmQsYi5iXSkpKTtRcihoKTspe2c9QkQoUnIoaCksMzU3KTtpZihnIT1pKXtlPWEuYWYoZyxpKTshIWUmJlA2YyhpLmEsZSl9fX1mb3Ioaj1uZXcgb2xiKGIuZSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDE0NCk7ZD1pLmE7UTZjKGQsLWEuZCwtYS5kLGEuZCxhLmQpO1A2YyhpLmQsZCk7WDZjKGQpfWEuY2YoKTsrK2Z9UWRkKGMpfVxuZnVuY3Rpb24gJDJkKGEsYixjKXt2YXIgZCxlLGYsZztnPVM2ZChhLmUuVGcoKSxiKTtkPUJEKGEuZywxMTkpO1E2ZCgpO2lmKEJEKGIsNjYpLk9qKCkpe2ZvcihmPTA7ZjxhLmk7KytmKXtlPWRbZl07aWYoZy5ybChlLmFrKCkpKXtpZihwYihlLGMpKXtYeGQoYSxmKTtyZXR1cm4gdHJ1ZX19fX1lbHNlIGlmKGMhPW51bGwpe2ZvcihmPTA7ZjxhLmk7KytmKXtlPWRbZl07aWYoZy5ybChlLmFrKCkpKXtpZihwYihjLGUuZGQoKSkpe1h4ZChhLGYpO3JldHVybiB0cnVlfX19fWVsc2V7Zm9yKGY9MDtmPGEuaTsrK2Ype2U9ZFtmXTtpZihnLnJsKGUuYWsoKSkpe2lmKGUuZGQoKT09bnVsbCl7WHhkKGEsZik7cmV0dXJuIHRydWV9fX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gc0RjKGEsYil7dmFyIGMsZCxlLGYsZzthLmM9PW51bGx8fGEuYy5sZW5ndGg8Yi5jLmxlbmd0aD8oYS5jPUtDKHNiYixkbGUsMjUsYi5jLmxlbmd0aCwxNiwxKSk6QmxiKGEuYyk7YS5hPW5ldyBSa2I7ZD0wO2ZvcihnPW5ldyBvbGIoYik7Zy5hPGcuYy5jLmxlbmd0aDspe2U9QkQobWxiKGcpLDEwKTtlLnA9ZCsrfWM9bmV3IFBzYjtmb3IoZj1uZXcgb2xiKGIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7aWYoIWEuY1tlLnBdKXt0RGMoYSxlKTtjLmI9PTB8fChzQ2IoYy5iIT0wKSxCRChjLmEuYS5jLDE1KSkuZ2MoKTxhLmEuYy5sZW5ndGg/RXNiKGMsYS5hKTpGc2IoYyxhLmEpO2EuYT1uZXcgUmtifX1yZXR1cm4gY31cbmZ1bmN0aW9uIGpZYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvO2c9QkQocXVkKGIsMCksMzMpO2RsZChnLDApO2VsZChnLDApO209bmV3IFJrYjttLmNbbS5jLmxlbmd0aF09ZztoPWc7Zj1uZXcgZCRjKGEuYSxnLmcsZy5mLChrJGMoKSxqJGMpKTtmb3Iobj0xO248Yi5pO24rKyl7bz1CRChxdWQoYixuKSwzMyk7aT1rWWMoYSxnJGMsbyxoLGYsbSxjKTtqPWtZYyhhLGYkYyxvLGgsZixtLGMpO2s9a1ljKGEsaSRjLG8saCxmLG0sYyk7bD1rWWMoYSxoJGMsbyxoLGYsbSxjKTtlPW1ZYyhhLGksaixrLGwsbyxoLGQpO2RsZChvLGUuZCk7ZWxkKG8sZS5lKTtjJGMoZSxqJGMpO2Y9ZTtoPW87bS5jW20uYy5sZW5ndGhdPW99cmV0dXJuIGZ9XG5mdW5jdGlvbiBLMGMoYSl7cjRjKGEsbmV3IEUzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyxhc2UpLCdFTEsgU1BPckUgT3ZlcmxhcCBSZW1vdmFsJyksJ0Egbm9kZSBvdmVybGFwIHJlbW92YWwgYWxnb3JpdGhtIHByb3Bvc2VkIGJ5IE5hY2htYW5zb24gZXQgYWwuIGluIFwiTm9kZSBvdmVybGFwIHJlbW92YWwgYnkgZ3Jvd2luZyBhIHRyZWVcIi4nKSxuZXcgTjBjKSkpO3A0YyhhLGFzZSxRcmUsS3NkKEkwYykpO3A0YyhhLGFzZSxhbWUsRzBjKTtwNGMoYSxhc2Usd21lLDgpO3A0YyhhLGFzZSxWcmUsS3NkKEgwYykpO3A0YyhhLGFzZSxZcmUsS3NkKEUwYykpO3A0YyhhLGFzZSxacmUsS3NkKEYwYykpO3A0YyhhLGFzZSxacGUsKEJjYigpLGZhbHNlKSl9XG5mdW5jdGlvbiBzWGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG47Zz1PNmMoYi5jLGMsZCk7Zm9yKGw9bmV3IG9sYihiLmEpO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxMCk7UDZjKGsubixnKTtmb3Iobj1uZXcgb2xiKGsuaik7bi5hPG4uYy5jLmxlbmd0aDspe209QkQobWxiKG4pLDExKTtmb3IoZj1uZXcgb2xiKG0uZyk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDE3KTtxN2MoZS5hLGcpO2g9QkQodk5iKGUsKE55YygpLGp4YykpLDc0KTshIWgmJnE3YyhoLGcpO2ZvcihqPW5ldyBvbGIoZS5iKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksNzApO1A2YyhpLm4sZyl9fX1Fa2IoYS5hLGspO2suYT1hfX1cbmZ1bmN0aW9uIGc5YihhLGIpe3ZhciBjLGQsZSxmLGc7T2RkKGIsJ05vZGUgYW5kIFBvcnQgTGFiZWwgUGxhY2VtZW50IGFuZCBOb2RlIFNpemluZycsMSk7TUdiKChhJGIoKSxuZXcgbCRiKGEsdHJ1ZSx0cnVlLG5ldyBqOWIpKSk7aWYoQkQodk5iKGEsKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSkpe2Y9QkQodk5iKGEsKE55YygpLFl4YykpLDIxKTtlPWYuSGMoKHJjZCgpLG9jZCkpO2c9Q2NiKEREKHZOYihhLFp4YykpKTtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDI5KTtNQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGMuYSwxNikpLG5ldyBsOWIpLG5ldyBuOWIoZixlLGcpKX19UWRkKGIpfVxuZnVuY3Rpb24gWTBkKGEsYil7dmFyIGMsZCxlLGYsZyxoO2M9Yi5IaChhLmEpO2lmKGMpe2g9R0QoQUFkKCghYy5iJiYoYy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsYykpLGMuYiksZXVlKSk7aWYoaCE9bnVsbCl7ZT1rZmIoaCx3ZmIoMzUpKTtkPWIuSGooKTtpZihlPT0tMSl7Zz11MWQoYSxiS2QoZCkpO2Y9aH1lbHNlIGlmKGU9PTApe2c9bnVsbDtmPWguc3Vic3RyKDEpfWVsc2V7Zz1oLnN1YnN0cigwLGUpO2Y9aC5zdWJzdHIoZSsxKX1zd2l0Y2goJDFkKHExZChhLGIpKSl7Y2FzZSAyOmNhc2UgMzp7cmV0dXJuIGoxZChhLGQsZyxmKX1jYXNlIDA6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6e3JldHVybiBtMWQoYSxkLGcsZil9fX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBxMmQoYSxiLGMpe3ZhciBkLGUsZixnLGg7Zz0oUTZkKCksQkQoYiw2NikuT2ooKSk7aWYoVDZkKGEuZSxiKSl7aWYoYi5oaSgpJiZGMmQoYSxiLGMsSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wKSl7cmV0dXJuIGZhbHNlfX1lbHNle2g9UzZkKGEuZS5UZygpLGIpO2Q9QkQoYS5nLDExOSk7Zm9yKGY9MDtmPGEuaTsrK2Ype2U9ZFtmXTtpZihoLnJsKGUuYWsoKSkpe2lmKGc/cGIoZSxjKTpjPT1udWxsP2UuZGQoKT09bnVsbDpwYihjLGUuZGQoKSkpe3JldHVybiBmYWxzZX1lbHNle0JEKEd0ZChhLGYsZz9CRChjLDcyKTpSNmQoYixjKSksNzIpO3JldHVybiB0cnVlfX19fXJldHVybiB3dGQoYSxnP0JEKGMsNzIpOlI2ZChiLGMpKX1cbmZ1bmN0aW9uIHVWYihhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2lmKGEuZCl7dGhyb3cgdmJiKG5ldyBaZGIoKGZkYihMUCksSmtlK0xQLmsrS2tlKSkpfWEuYz09KGVhZCgpLGNhZCkmJnRWYihhLGFhZCk7Zm9yKGM9bmV3IG9sYihhLmEuYSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDE4OSk7Yi5lPTB9Zm9yKGc9bmV3IG9sYihhLmEuYik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDgxKTtmLm89UWplO2ZvcihlPWYuZi5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDgxKTsrK2QuZC5lfX1KVmIoYSk7Zm9yKGk9bmV3IG9sYihhLmEuYik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDgxKTtoLms9dHJ1ZX1yZXR1cm4gYX1cbmZ1bmN0aW9uIElqYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aD1uZXcgcGpjKGEpO2M9bmV3IFBzYjtHc2IoYyxiLGMuYy5iLGMuYyk7d2hpbGUoYy5iIT0wKXtkPUJEKGMuYj09MD9udWxsOihzQ2IoYy5iIT0wKSxOc2IoYyxjLmEuYSkpLDExMyk7ZC5kLnA9MTtmb3IoZz1uZXcgb2xiKGQuZSk7Zy5hPGcuYy5jLmxlbmd0aDspe2U9QkQobWxiKGcpLDQwOSk7a2pjKGgsZSk7aj1lLmQ7ai5kLnA9PTAmJihHc2IoYyxqLGMuYy5iLGMuYyksdHJ1ZSl9Zm9yKGY9bmV3IG9sYihkLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSw0MDkpO2tqYyhoLGUpO2k9ZS5jO2kuZC5wPT0wJiYoR3NiKGMsaSxjLmMuYixjLmMpLHRydWUpfX1yZXR1cm4gaH1cbmZ1bmN0aW9uIGhmZChhKXt2YXIgYixjLGQsZSxmO2Q9RWRiKEVEKGhrZChhLChZOWMoKSxHOWMpKSkpO2lmKGQ9PTEpe3JldHVybn1fa2QoYSxkKmEuZyxkKmEuZik7Yz1NcShScSgoIWEuYyYmKGEuYz1uZXcgY1VkKEYyLGEsOSw5KSksYS5jKSxuZXcgSGZkKSk7Zm9yKGY9dWwocGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsWyghYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKSxhLm4pLCghYS5jJiYoYS5jPW5ldyBjVWQoRjIsYSw5LDkpKSxhLmMpLGNdKSkpO1FyKGYpOyl7ZT1CRChScihmKSw0NzApO2UuR2coZCplLkRnKCksZCplLkVnKCkpO2UuRmcoZCplLkNnKCksZCplLkJnKCkpO2I9QkQoZS5XZShyOWMpLDgpO2lmKGIpe2IuYSo9ZDtiLmIqPWR9fX1cbmZ1bmN0aW9uIE1hYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG07Zm9yKGc9bmV3IG9sYihhLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7bT1sX2IoZi5hKTtmb3Ioaj1tLGs9MCxsPWoubGVuZ3RoO2s8bDsrK2spe2k9altrXTtzd2l0Y2goQkQodk5iKGksKE55YygpLG14YykpLDE2MykuZyl7Y2FzZSAxOlFhYyhpKTskX2IoaSxiKTtOYWMoaSx0cnVlLGQpO2JyZWFrO2Nhc2UgMzpSYWMoaSk7JF9iKGksYyk7TmFjKGksZmFsc2UsZSk7fX19aD1uZXcgQmliKGEuYiwwKTt3aGlsZShoLmI8aC5kLmdjKCkpeyhzQ2IoaC5iPGguZC5nYygpKSxCRChoLmQuWGIoaC5jPWguYisrKSwyOSkpLmEuYy5sZW5ndGg9PTAmJnVpYihoKX19XG5mdW5jdGlvbiBkMWQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtjPWIuSGgoYS5hKTtpZihjKXtpPUdEKEFBZCgoIWMuYiYmKGMuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGMpKSxjLmIpLER3ZSkpO2lmKGkhPW51bGwpe2Q9bmV3IFJrYjtmb3IoZj1tZmIoaSwnXFxcXHcnKSxnPTAsaD1mLmxlbmd0aDtnPGg7KytnKXtlPWZbZ107ZGZiKGUsJyMjb3RoZXInKT9Fa2IoZCwnISMjJyt1MWQoYSxiS2QoYi5IaigpKSkpOmRmYihlLCcjI2xvY2FsJyk/KGQuY1tkLmMubGVuZ3RoXT1udWxsLHRydWUpOmRmYihlLEJ3ZSk/RWtiKGQsdTFkKGEsYktkKGIuSGooKSkpKTooZC5jW2QuYy5sZW5ndGhdPWUsdHJ1ZSl9cmV0dXJuIGR9fXJldHVybiBtbWIoKSxtbWIoKSxqbWJ9XG5mdW5jdGlvbiBrTWIoYSxiKXt2YXIgYyxkLGUsZjtjPW5ldyBwTWI7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLEV5YiksRHliXSkpKSwyMSk7ZT1kLmdjKCk7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbRXliLER5Yl0pKSksMjEpO2Y9ZC5nYygpO2U9ZT09MT8xOjA7Zj1mPT0xPzE6MDtpZihlPGYpe3JldHVybiAtMX1pZihlPT1mKXtyZXR1cm4gMH1yZXR1cm4gMX1cbmZ1bmN0aW9uIGhaYihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG07aD1hLmk7ZT1DY2IoREQodk5iKGgsKE55YygpLGZ4YykpKSk7az0wO2Q9MDtmb3Ioaj1uZXcgb2xiKGEuZyk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDE3KTtnPU9aYihpKTtmPWcmJmUmJkNjYihERCh2TmIoaSxneGMpKSk7bT1pLmQuaTtnJiZmPysrZDpnJiYhZj8rK2s6UV9iKG0pLmU9PWg/KytkOisra31mb3IoYz1uZXcgb2xiKGEuZSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDE3KTtnPU9aYihiKTtmPWcmJmUmJkNjYihERCh2TmIoYixneGMpKSk7bD1iLmMuaTtnJiZmPysrazpnJiYhZj8rK2Q6UV9iKGwpLmU9PWg/KytrOisrZH1yZXR1cm4gay1kfVxuZnVuY3Rpb24gVUxjKGEsYixjLGQpe3RoaXMuZT1hO3RoaXMuaz1CRCh2TmIoYSwod3RjKCksb3RjKSksMzA0KTt0aGlzLmc9S0MoT1Esa25lLDEwLGIsMCwxKTt0aGlzLmI9S0MoQkksbmllLDMzMyxiLDcsMSk7dGhpcy5hPUtDKE9RLGtuZSwxMCxiLDAsMSk7dGhpcy5kPUtDKEJJLG5pZSwzMzMsYiw3LDEpO3RoaXMuaj1LQyhPUSxrbmUsMTAsYiwwLDEpO3RoaXMuaT1LQyhCSSxuaWUsMzMzLGIsNywxKTt0aGlzLnA9S0MoQkksbmllLDMzMyxiLDcsMSk7dGhpcy5uPUtDKHdJLG5pZSw0NzYsYiw4LDEpO0FsYih0aGlzLm4sKEJjYigpLGZhbHNlKSk7dGhpcy5mPUtDKHdJLG5pZSw0NzYsYiw4LDEpO0FsYih0aGlzLmYsdHJ1ZSk7dGhpcy5vPWM7dGhpcy5jPWR9XG5mdW5jdGlvbiBYOWIoYSxiKXt2YXIgYyxkLGUsZixnLGg7aWYoYi5kYygpKXtyZXR1cm59aWYoQkQoYi5YYigwKSwyODYpLmQ9PShBcGMoKSx4cGMpKXtPOWIoYSxiKX1lbHNle2ZvcihkPWIuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSwyODYpO3N3aXRjaChjLmQuZyl7Y2FzZSA1Oks5YihhLGMsUTliKGEsYykpO2JyZWFrO2Nhc2UgMDpLOWIoYSxjLChnPWMuZi1jLmMrMSxoPShnLTEpLzJ8MCxjLmMraCkpO2JyZWFrO2Nhc2UgNDpLOWIoYSxjLFM5YihhLGMpKTticmVhaztjYXNlIDI6WTliKGMpO0s5YihhLGMsKGY9VTliKGMpLGY/Yy5jOmMuZikpO2JyZWFrO2Nhc2UgMTpZOWIoYyk7SzliKGEsYywoZT1VOWIoYyksZT9jLmY6Yy5jKSk7fVA5YihjLmEpfX19XG5mdW5jdGlvbiBDNGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihiLmUpe3JldHVybn1iLmU9dHJ1ZTtmb3IoZD1iLmQuYS5lYygpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTcpO2lmKGIubyYmYi5kLmEuZ2MoKTw9MSl7Zz1iLmEuYztoPWIuYS5jK2IuYS5iO2k9bmV3IGY3YyhnKyhoLWcpLzIsYi5iKTtEc2IoQkQoYi5kLmEuZWMoKS5LYygpLlBiKCksMTcpLmEsaSk7Y29udGludWV9ZT1CRChPaGIoYi5jLGMpLDQ1OSk7aWYoZS5ifHxlLmMpe0U0YihhLGMsYik7Y29udGludWV9Zj1hLmQ9PSh0QmMoKSxzQmMpJiYoZS5kfHxlLmUpJiZLNGIoYSxiKSYmYi5kLmEuZ2MoKTw9MTtmP0Y0YihjLGIpOkQ0YihhLGMsYil9Yi5rJiZyZWIoYi5kLG5ldyBYNGIpfVxuZnVuY3Rpb24gelhjKGEsYixjLGQsZSxmKXt2YXIgZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O209ZjtoPShkK2UpLzIrbTtxPWMqJHduZC5NYXRoLmNvcyhoKTtyPWMqJHduZC5NYXRoLnNpbihoKTtzPXEtYi5nLzI7dD1yLWIuZi8yO2RsZChiLHMpO2VsZChiLHQpO2w9YS5hLmpnKGIpO3A9Miokd25kLk1hdGguYWNvcyhjL2MrYS5jKTtpZihwPGUtZCl7bj1wL2w7Zz0oZCtlLXApLzJ9ZWxzZXtuPShlLWQpL2w7Zz1kfW89Z1ZjKGIpO2lmKGEuZSl7YS5lLmtnKGEuZCk7YS5lLmxnKG8pfWZvcihqPW5ldyBvbGIobyk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDMzKTtrPWEuYS5qZyhpKTt6WGMoYSxpLGMrYS5jLGcsZytuKmssZik7Zys9biprfX1cbmZ1bmN0aW9uIGpBKGEsYixjKXt2YXIgZDtkPWMucS5nZXRNb250aCgpO3N3aXRjaChiKXtjYXNlIDU6UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbJ0onLCdGJywnTScsJ0EnLCdNJywnSicsJ0onLCdBJywnUycsJ08nLCdOJywnRCddKVtkXSk7YnJlYWs7Y2FzZSA0OlFmYihhLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2JqZSxjamUsZGplLGVqZSxmamUsZ2plLGhqZSxpamUsamplLGtqZSxsamUsbWplXSlbZF0pO2JyZWFrO2Nhc2UgMzpRZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnSmFuJywnRmViJywnTWFyJywnQXByJyxmamUsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddKVtkXSk7YnJlYWs7ZGVmYXVsdDpFQShhLGQrMSxiKTt9fVxuZnVuY3Rpb24gdUdiKGEsYil7dmFyIGMsZCxlLGYsZztPZGQoYiwnTmV0d29yayBzaW1wbGV4JywxKTtpZihhLmUuYS5jLmxlbmd0aDwxKXtRZGQoYik7cmV0dXJufWZvcihmPW5ldyBvbGIoYS5lLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMjEpO2UuZT0wfWc9YS5lLmEuYy5sZW5ndGg+PTQwO2cmJkZHYihhKTt3R2IoYSk7dkdiKGEpO2M9ekdiKGEpO2Q9MDt3aGlsZSghIWMmJmQ8YS5mKXt0R2IoYSxjLHNHYihhLGMpKTtjPXpHYihhKTsrK2R9ZyYmRUdiKGEpO2EuYT9xR2IoYSxDR2IoYSkpOkNHYihhKTthLmI9bnVsbDthLmQ9bnVsbDthLnA9bnVsbDthLmM9bnVsbDthLmc9bnVsbDthLmk9bnVsbDthLm49bnVsbDthLm89bnVsbDtRZGQoYil9XG5mdW5jdGlvbiBKUWIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtO2k9bmV3IGY3YyhjLGQpO2M3YyhpLEJEKHZOYihiLChIU2IoKSxFU2IpKSw4KSk7Zm9yKG09bmV3IG9sYihiLmUpO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSwxNDQpO1A2YyhsLmQsaSk7RWtiKGEuZSxsKX1mb3IoaD1uZXcgb2xiKGIuYyk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDI4Mik7Zm9yKGY9bmV3IG9sYihnLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSw1NTkpO1A2YyhlLmQsaSl9RWtiKGEuYyxnKX1mb3Ioaz1uZXcgb2xiKGIuZCk7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDQ0Nyk7UDZjKGouZCxpKTtFa2IoYS5kLGopfX1cbmZ1bmN0aW9uIF9CYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7Zm9yKGk9bmV3IG9sYihiLmopO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMSk7Zm9yKGU9bmV3IGIxYihoLmIpO2xsYihlLmEpfHxsbGIoZS5iKTspe2Q9QkQobGxiKGUuYSk/bWxiKGUuYSk6bWxiKGUuYiksMTcpO2M9ZC5jPT1oP2QuZDpkLmM7Zj1jLmk7aWYoYj09Zil7Y29udGludWV9aj1CRCh2TmIoZCwoTnljKCksY3ljKSksMTkpLmE7ajwwJiYoaj0wKTtnPWYucDtpZihhLmJbZ109PTApe2lmKGQuZD09Yyl7YS5hW2ddLT1qKzE7YS5hW2ddPD0wJiZhLmNbZ10+MCYmRHNiKGEuZixmKX1lbHNle2EuY1tnXS09aisxO2EuY1tnXTw9MCYmYS5hW2ddPjAmJkRzYihhLmUsZil9fX19fVxuZnVuY3Rpb24gX0tiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajtoPW5ldyBIeGIoQkQoUWIobmV3IG5MYiksNjIpKTtqPVFqZTtmb3IoYz1uZXcgb2xiKGEuZCk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDIyMik7aj1iLmMuYzt3aGlsZShoLmEuYyE9MCl7aT1CRCh6amIoQndiKGguYSkpLDIyMik7aWYoaS5jLmMraS5jLmI8ail7SndiKGguYSxpKSE9bnVsbH1lbHNle2JyZWFrfX1mb3IoZz0oZT1uZXcgWXdiKChuZXcgY3hiKChuZXcgR2piKGguYSkpLmEpKS5iKSxuZXcgTmpiKGUpKTtzaWIoZy5hLmEpOyl7Zj0oZD1Xd2IoZy5hKSxCRChkLmNkKCksMjIyKSk7RHNiKGYuYixiKTtEc2IoYi5iLGYpfUl3YihoLmEsYiwoQmNiKCksemNiKSk9PW51bGx9fVxuZnVuY3Rpb24gUUVjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7Zj1uZXcgU2tiKGIuYy5sZW5ndGgpO2ZvcihqPW5ldyBvbGIoYik7ai5hPGouYy5jLmxlbmd0aDspe2c9QkQobWxiKGopLDEwKTtFa2IoZixhLmJbZy5jLnBdW2cucF0pfUxFYyhhLGYsYyk7bD1udWxsO3doaWxlKGw9TUVjKGYpKXtORWMoYSxCRChsLmEsMjMzKSxCRChsLmIsMjMzKSxmKX1iLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2ZvcihlPW5ldyBvbGIoZik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDIzMyk7Zm9yKGg9ZC5kLGk9MCxrPWgubGVuZ3RoO2k8azsrK2kpe2c9aFtpXTtiLmNbYi5jLmxlbmd0aF09ZzthLmFbZy5jLnBdW2cucF0uYT1SRWMoZC5nLGQuZFswXSkuYX19fVxuZnVuY3Rpb24gSlJjKGEsYil7dmFyIGMsZCxlLGY7aWYoMDwoSkQoYSwxNCk/QkQoYSwxNCkuZ2MoKTpzcihhLktjKCkpKSl7ZT1iO2lmKDE8ZSl7LS1lO2Y9bmV3IEtSYztmb3IoZD1hLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksODYpO2Y9cGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW2YsbmV3IFpSYyhjKV0pKX1yZXR1cm4gSlJjKGYsZSl9aWYoZTwwKXtmPW5ldyBOUmM7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9QkQoZC5QYigpLDg2KTtmPXBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFtmLG5ldyBaUmMoYyldKSl9aWYoMDwoSkQoZiwxNCk/QkQoZiwxNCkuZ2MoKTpzcihmLktjKCkpKSl7cmV0dXJuIEpSYyhmLGUpfX19cmV0dXJuIEJEKHByKGEuS2MoKSksODYpfVxuZnVuY3Rpb24gSWRkKCl7SWRkPWNjYjtCZGQ9bmV3IEpkZCgnREVGQVVMVF9NSU5JTVVNX1NJWkUnLDApO0RkZD1uZXcgSmRkKCdNSU5JTVVNX1NJWkVfQUNDT1VOVFNfRk9SX1BBRERJTkcnLDEpO0FkZD1uZXcgSmRkKCdDT01QVVRFX1BBRERJTkcnLDIpO0VkZD1uZXcgSmRkKCdPVVRTSURFX05PREVfTEFCRUxTX09WRVJIQU5HJywzKTtGZGQ9bmV3IEpkZCgnUE9SVFNfT1ZFUkhBTkcnLDQpO0hkZD1uZXcgSmRkKCdVTklGT1JNX1BPUlRfU1BBQ0lORycsNSk7R2RkPW5ldyBKZGQoJ1NQQUNFX0VGRklDSUVOVF9QT1JUX0xBQkVMUycsNik7Q2RkPW5ldyBKZGQoJ0ZPUkNFX1RBQlVMQVJfTk9ERV9MQUJFTFMnLDcpO3pkZD1uZXcgSmRkKCdBU1lNTUVUUklDQUwnLDgpfVxuZnVuY3Rpb24gczZkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtpZighYil7cmV0dXJuIG51bGx9ZWxzZXtjPShmPWIuVGcoKSwhZj9udWxsOmJLZChmKS5OaCgpLkpoKGYpKTtpZihjKXtYcmIoYSxiLGMpO2U9Yi5UZygpO2ZvcihpPTAsaj0oZS5pPT1udWxsJiZUS2QoZSksZS5pKS5sZW5ndGg7aTxqOysraSl7aD0oZD0oZS5pPT1udWxsJiZUS2QoZSksZS5pKSxpPj0wJiZpPGQubGVuZ3RoP2RbaV06bnVsbCk7aWYoaC5JaigpJiYhaC5KaigpKXtpZihKRChoLDMyMikpe3U2ZChhLEJEKGgsMzQpLGIsYyl9ZWxzZXtnPUJEKGgsMTgpOyhnLkJiJm90ZSkhPTAmJnc2ZChhLGcsYixjKX19fWIua2goKSYmQkQoYyw0OSkudmgoQkQoYiw0OSkucWgoKSl9cmV0dXJuIGN9fVxuZnVuY3Rpb24gdEdiKGEsYixjKXt2YXIgZCxlLGY7aWYoIWIuZil7dGhyb3cgdmJiKG5ldyBXZGIoJ0dpdmVuIGxlYXZlIGVkZ2UgaXMgbm8gdHJlZSBlZGdlLicpKX1pZihjLmYpe3Rocm93IHZiYihuZXcgV2RiKCdHaXZlbiBlbnRlciBlZGdlIGlzIGEgdHJlZSBlZGdlIGFscmVhZHkuJykpfWIuZj1mYWxzZTtTcWIoYS5wLGIpO2MuZj10cnVlO1FxYihhLnAsYyk7ZD1jLmUuZS1jLmQuZS1jLmE7eEdiKGEsYy5lLGIpfHwoZD0tZCk7Zm9yKGY9bmV3IG9sYihhLmUuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEyMSk7eEdiKGEsZSxiKXx8KGUuZSs9ZCl9YS5qPTE7QmxiKGEuYyk7REdiKGEsQkQobWxiKG5ldyBvbGIoYS5lLmEpKSwxMjEpKTtyR2IoYSl9XG5mdW5jdGlvbiB4NmIoYSxiKXt2YXIgYyxkLGUsZixnLGg7aD1CRCh2TmIoYiwoTnljKCksVnhjKSksOTgpO2lmKCEoaD09KGRjZCgpLF9iZCl8fGg9PSRiZCkpe3JldHVybn1lPShuZXcgZjdjKGIuZi5hK2IuZC5iK2IuZC5jLGIuZi5iK2IuZC5kK2IuZC5hKSkuYjtmb3IoZz1uZXcgb2xiKGEuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtpZihmLmshPShqMGIoKSxlMGIpKXtjb250aW51ZX1jPUJEKHZOYihmLCh3dGMoKSxIc2MpKSw2MSk7aWYoYyE9KFVjZCgpLHpjZCkmJmMhPVRjZCl7Y29udGludWV9ZD1FZGIoRUQodk5iKGYsaHRjKSkpO2g9PV9iZCYmKGQqPWUpO2Yubi5iPWQtQkQodk5iKGYsVHhjKSw4KS5iO01fYihmLGZhbHNlLHRydWUpfX1cbmZ1bmN0aW9uIFlEYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbjtiRWMoYSxiLGMpO2Y9YltjXTtuPWQ/KFVjZCgpLFRjZCk6KFVjZCgpLHpjZCk7aWYoWkRjKGIubGVuZ3RoLGMsZCkpe2U9YltkP2MtMTpjKzFdO1VEYyhhLGUsZD8oS0FjKCksSUFjKTooS0FjKCksSEFjKSk7Zm9yKGk9ZixrPTAsbT1pLmxlbmd0aDtrPG07KytrKXtnPWlba107WERjKGEsZyxuKX1VRGMoYSxmLGQ/KEtBYygpLEhBYyk6KEtBYygpLElBYykpO2ZvcihoPWUsaj0wLGw9aC5sZW5ndGg7ajxsOysrail7Zz1oW2pdOyEhZy5lfHxYRGMoYSxnLFdjZChuKSl9fWVsc2V7Zm9yKGg9ZixqPTAsbD1oLmxlbmd0aDtqPGw7KytqKXtnPWhbal07WERjKGEsZyxuKX19cmV0dXJuIGZhbHNlfVxuZnVuY3Rpb24gbkZjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrO2k9Vl9iKGIsYyk7KGM9PShVY2QoKSxSY2QpfHxjPT1UY2QpJiYoaT1KRChpLDE1Mik/a20oQkQoaSwxNTIpKTpKRChpLDEzMSk/QkQoaSwxMzEpLmE6SkQoaSw1NCk/bmV3IG92KGkpOm5ldyBkdihpKSk7Zz1mYWxzZTtkb3tlPWZhbHNlO2ZvcihmPTA7ZjxpLmdjKCktMTtmKyspe2o9QkQoaS5YYihmKSwxMSk7aD1CRChpLlhiKGYrMSksMTEpO2lmKG9GYyhhLGosaCxkKSl7Zz10cnVlO2NJYyhhLmEsQkQoaS5YYihmKSwxMSksQkQoaS5YYihmKzEpLDExKSk7az1CRChpLlhiKGYrMSksMTEpO2kuX2MoZisxLEJEKGkuWGIoZiksMTEpKTtpLl9jKGYsayk7ZT10cnVlfX19d2hpbGUoZSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBXMmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbztpZihvaWQoYS5lKSl7aWYoYiE9Yyl7ZT1CRChhLmcsMTE5KTtuPWVbY107Zz1uLmFrKCk7aWYoVDZkKGEuZSxnKSl7bz1TNmQoYS5lLlRnKCksZyk7aT0tMTtoPS0xO2Q9MDtmb3Ioaj0wLGw9Yj5jP2I6YztqPD1sOysrail7aWYoaj09Yyl7aD1kKyt9ZWxzZXtmPWVbal07az1vLnJsKGYuYWsoKSk7aj09YiYmKGk9aj09bCYmIWs/ZC0xOmQpO2smJisrZH19bT1CRChXeGQoYSxiLGMpLDcyKTtoIT1pJiZHTGQoYSxuZXcgRVNkKGEuZSw3LGcsbWViKGgpLG4uZGQoKSxpKSk7cmV0dXJuIG19fX1lbHNle3JldHVybiBCRChzdWQoYSxiLGMpLDcyKX1yZXR1cm4gQkQoV3hkKGEsYixjKSw3Mil9XG5mdW5jdGlvbiBRY2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtPZGQoYiwnUG9ydCBvcmRlciBwcm9jZXNzaW5nJywxKTtpPUJEKHZOYihhLChOeWMoKSxfeGMpKSw0MjEpO2ZvcihkPW5ldyBvbGIoYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjkpO2ZvcihmPW5ldyBvbGIoYy5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTApO2c9QkQodk5iKGUsVnhjKSw5OCk7aD1lLmo7aWYoZz09KGRjZCgpLFpiZCl8fGc9PV9iZHx8Zz09JGJkKXttbWIoKTtPa2IoaCxJY2MpfWVsc2UgaWYoZyE9YmNkJiZnIT1jY2Qpe21tYigpO09rYihoLExjYyk7U2NjKGgpO2k9PShCQWMoKSxBQWMpJiZPa2IoaCxLY2MpfWUuaT10cnVlO05fYihlKX19UWRkKGIpfVxuZnVuY3Rpb24gdkRjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk7aT1uZXcgTHFiO2I9bmV3IEtGYjtmb3IoZz1hLktjKCk7Zy5PYigpOyl7ZT1CRChnLlBiKCksMTApO2g9bkdiKG9HYihuZXcgcEdiLGUpLGIpO2pyYihpLmYsZSxoKX1mb3IoZj1hLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksMTApO2ZvcihkPW5ldyBTcih1cihVX2IoZSkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7aWYoT1piKGMpKXtjb250aW51ZX1BRmIoREZiKENGYihCRmIoRUZiKG5ldyBGRmIsJHduZC5NYXRoLm1heCgxLEJEKHZOYihjLChOeWMoKSxkeWMpKSwxOSkuYSkpLDEpLEJEKE9oYihpLGMuYy5pKSwxMjEpKSxCRChPaGIoaSxjLmQuaSksMTIxKSkpfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIHROYygpe3ROYz1jY2I7b05jPWUzYyhuZXcgajNjLChxVWIoKSxvVWIpLChTOGIoKSxrOGIpKTtxTmM9ZTNjKG5ldyBqM2MsblViLG84Yik7ck5jPWMzYyhlM2MobmV3IGozYyxuVWIsQzhiKSxwVWIsQjhiKTtuTmM9YzNjKGUzYyhlM2MobmV3IGozYyxuVWIsZThiKSxvVWIsZjhiKSxwVWIsZzhiKTtzTmM9YjNjKGIzYyhnM2MoYzNjKGUzYyhuZXcgajNjLGxVYixNOGIpLHBVYixMOGIpLG9VYiksSzhiKSxOOGIpO3BOYz1jM2MobmV3IGozYyxwVWIsbDhiKTtsTmM9YzNjKGUzYyhlM2MoZTNjKG5ldyBqM2MsbVViLHI4Yiksb1ViLHQ4Yiksb1ViLHU4YikscFViLHM4Yik7bU5jPWMzYyhlM2MoZTNjKG5ldyBqM2Msb1ViLHU4Yiksb1ViLF83YikscFViLCQ3Yil9XG5mdW5jdGlvbiBYQyhhLGIsYyxkLGUsZil7dmFyIGcsaCxpLGosayxsLG07aj0kQyhiKS0kQyhhKTtnPWtEKGIsaik7aT1UQygwLDAsMCk7d2hpbGUoaj49MCl7aD1iRChhLGcpO2lmKGgpe2o8MjI/KGkubHw9MTw8aix1bmRlZmluZWQpOmo8NDQ/KGkubXw9MTw8ai0yMix1bmRlZmluZWQpOihpLmh8PTE8PGotNDQsdW5kZWZpbmVkKTtpZihhLmw9PTAmJmEubT09MCYmYS5oPT0wKXticmVha319az1nLm07bD1nLmg7bT1nLmw7Zy5oPWw+Pj4xO2cubT1rPj4+MXwobCYxKTw8MjE7Zy5sPW0+Pj4xfChrJjEpPDwyMTstLWp9YyYmWkMoaSk7aWYoZil7aWYoZCl7UUM9aEQoYSk7ZSYmKFFDPW5EKFFDLCh3RCgpLHVEKSkpfWVsc2V7UUM9VEMoYS5sLGEubSxhLmgpfX1yZXR1cm4gaX1cbmZ1bmN0aW9uIFREYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO2o9YS5lW2IuYy5wXVtiLnBdKzE7aT1iLmMuYS5jLmxlbmd0aCsxO2ZvcihoPW5ldyBvbGIoYS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTEpO2w9MDtmPTA7Zm9yKGU9dWwocGwoT0MoR0MoS0ksMSksVWhlLDIwLDAsW25ldyBKMGIoZyksbmV3IFIwYihnKV0pKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDExKTtpZihkLmkuYz09Yi5jKXtsKz1hRWMoYSxkLmkpKzE7KytmfX1jPWwvZjtrPWcuajtrPT0oVWNkKCksemNkKT9jPGo/KGEuZltnLnBdPWEuYy1jKTooYS5mW2cucF09YS5iKyhpLWMpKTprPT1UY2QmJihjPGo/KGEuZltnLnBdPWEuYitjKTooYS5mW2cucF09YS5jLShpLWMpKSl9fVxuZnVuY3Rpb24gSWNiKGEsYixjKXt2YXIgZCxlLGYsZyxoO2lmKGE9PW51bGwpe3Rocm93IHZiYihuZXcgT2ViKFhoZSkpfWY9YS5sZW5ndGg7Zz1mPjAmJihCQ2IoMCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KDApPT00NXx8KEJDYigwLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoMCk9PTQzKSk/MTowO2ZvcihkPWc7ZDxmO2QrKyl7aWYoWmNiKChCQ2IoZCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGQpKSk9PS0xKXt0aHJvdyB2YmIobmV3IE9lYihPamUrYSsnXCInKSl9fWg9cGFyc2VJbnQoYSwxMCk7ZT1oPGI7aWYoaXNOYU4oaCkpe3Rocm93IHZiYihuZXcgT2ViKE9qZSthKydcIicpKX1lbHNlIGlmKGV8fGg+Yyl7dGhyb3cgdmJiKG5ldyBPZWIoT2plK2ErJ1wiJykpfXJldHVybiBofVxuZnVuY3Rpb24gZG5jKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2c9bmV3IFBzYjtmb3IoZj1uZXcgb2xiKGEuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDExMik7cE9jKGUsZS5mLmMubGVuZ3RoKTtxT2MoZSxlLmsuYy5sZW5ndGgpO2lmKGUuaT09MCl7ZS5vPTA7R3NiKGcsZSxnLmMuYixnLmMpfX13aGlsZShnLmIhPTApe2U9QkQoZy5iPT0wP251bGw6KHNDYihnLmIhPTApLE5zYihnLGcuYS5hKSksMTEyKTtkPWUubysxO2ZvcihjPW5ldyBvbGIoZS5mKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTI5KTtoPWIuYTtyT2MoaCwkd25kLk1hdGgubWF4KGgubyxkKSk7cU9jKGgsaC5pLTEpO2guaT09MCYmKEdzYihnLGgsZy5jLmIsZy5jKSx0cnVlKX19fVxuZnVuY3Rpb24gdjJjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk7Zm9yKGc9bmV3IG9sYihhKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksNzkpO2Q9YXRkKEJEKHF1ZCgoIWYuYiYmKGYuYj1uZXcgeTVkKHoyLGYsNCw3KSksZi5iKSwwKSw4MikpO2g9ZC5pO2k9ZC5qO2U9QkQocXVkKCghZi5hJiYoZi5hPW5ldyBjVWQoQTIsZiw2LDYpKSxmLmEpLDApLDIwMik7bm1kKGUsZS5qK2gsZS5rK2kpO2dtZChlLGUuYitoLGUuYytpKTtmb3IoYz1uZXcgRnlkKCghZS5hJiYoZS5hPW5ldyB4TWQoeTIsZSw1KSksZS5hKSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDQ2OSk7dWtkKGIsYi5hK2gsYi5iK2kpfXA3YyhCRChoa2QoZiwoWTljKCksUThjKSksNzQpLGgsaSl9fVxuZnVuY3Rpb24gZmVlKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDEwMDpyZXR1cm4ga2VlKG54ZSx0cnVlKTtjYXNlIDY4OnJldHVybiBrZWUobnhlLGZhbHNlKTtjYXNlIDExOTpyZXR1cm4ga2VlKG94ZSx0cnVlKTtjYXNlIDg3OnJldHVybiBrZWUob3hlLGZhbHNlKTtjYXNlIDExNTpyZXR1cm4ga2VlKHB4ZSx0cnVlKTtjYXNlIDgzOnJldHVybiBrZWUocHhlLGZhbHNlKTtjYXNlIDk5OnJldHVybiBrZWUocXhlLHRydWUpO2Nhc2UgNjc6cmV0dXJuIGtlZShxeGUsZmFsc2UpO2Nhc2UgMTA1OnJldHVybiBrZWUocnhlLHRydWUpO2Nhc2UgNzM6cmV0dXJuIGtlZShyeGUsZmFsc2UpO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBoeigoYj1hLG14ZStiLnRvU3RyaW5nKDE2KSkpKTt9fVxuZnVuY3Rpb24gJFhiKGEpe3ZhciBiLGMsZCxlLGY7ZT1CRChJa2IoYS5hLDApLDEwKTtiPW5ldyBiMGIoYSk7RWtiKGEuYSxiKTtiLm8uYT0kd25kLk1hdGgubWF4KDEsZS5vLmEpO2Iuby5iPSR3bmQuTWF0aC5tYXgoMSxlLm8uYik7Yi5uLmE9ZS5uLmE7Yi5uLmI9ZS5uLmI7c3dpdGNoKEJEKHZOYihlLCh3dGMoKSxIc2MpKSw2MSkuZyl7Y2FzZSA0OmIubi5hKz0yO2JyZWFrO2Nhc2UgMTpiLm4uYis9MjticmVhaztjYXNlIDI6Yi5uLmEtPTI7YnJlYWs7Y2FzZSAzOmIubi5iLT0yO31kPW5ldyBIMGI7RjBiKGQsYik7Yz1uZXcgVVpiO2Y9QkQoSWtiKGUuaiwwKSwxMSk7UVpiKGMsZik7UlpiKGMsZCk7UDZjKFg2YyhkLm4pLGYubik7UDZjKFg2YyhkLmEpLGYuYSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBGYWMoYSxiLGMsZCxlKXtpZihjJiYoIWR8fChhLmMtYS5iJmEuYS5sZW5ndGgtMSk+MSkmJmI9PTEmJkJEKGEuYVthLmJdLDEwKS5rPT0oajBiKCksZjBiKSl7emFjKEJEKGEuYVthLmJdLDEwKSwocmJkKCksbmJkKSl9ZWxzZSBpZihkJiYoIWN8fChhLmMtYS5iJmEuYS5sZW5ndGgtMSk+MSkmJmI9PTEmJkJEKGEuYVthLmMtMSZhLmEubGVuZ3RoLTFdLDEwKS5rPT0oajBiKCksZjBiKSl7emFjKEJEKGEuYVthLmMtMSZhLmEubGVuZ3RoLTFdLDEwKSwocmJkKCksb2JkKSl9ZWxzZSBpZigoYS5jLWEuYiZhLmEubGVuZ3RoLTEpPT0yKXt6YWMoQkQoYmtiKGEpLDEwKSwocmJkKCksbmJkKSk7emFjKEJEKGJrYihhKSwxMCksb2JkKX1lbHNle3dhYyhhLGUpfVlqYihhKX1cbmZ1bmN0aW9uIHBSYyhhLGIsYyl7dmFyIGQsZSxmLGcsaDtmPTA7Zm9yKGU9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtlLmUhPWUuaS5nYygpOyl7ZD1CRChEeWQoZSksMzMpO2c9Jyc7KCFkLm4mJihkLm49bmV3IGNVZChEMixkLDEsNykpLGQubikuaT09MHx8KGc9QkQocXVkKCghZC5uJiYoZC5uPW5ldyBjVWQoRDIsZCwxLDcpKSxkLm4pLDApLDEzNykuYSk7aD1uZXcgWFJjKGYrKyxiLGcpO3ROYihoLGQpO3lOYihoLChtVGMoKSxkVGMpLGQpO2guZS5iPWQuaitkLmYvMjtoLmYuYT0kd25kLk1hdGgubWF4KGQuZywxKTtoLmUuYT1kLmkrZC5nLzI7aC5mLmI9JHduZC5NYXRoLm1heChkLmYsMSk7RHNiKGIuYixoKTtqcmIoYy5mLGQsaCl9fVxuZnVuY3Rpb24gQjJiKGEpe3ZhciBiLGMsZCxlLGY7ZD1CRCh2TmIoYSwod3RjKCksJHNjKSksMzMpO2Y9QkQoaGtkKGQsKE55YygpLEZ4YykpLDE3NCkuSGMoKHRkZCgpLHNkZCkpO2lmKCFhLmUpe2U9QkQodk5iKGEsS3NjKSwyMSk7Yj1uZXcgZjdjKGEuZi5hK2EuZC5iK2EuZC5jLGEuZi5iK2EuZC5kK2EuZC5hKTtpZihlLkhjKChPcmMoKSxIcmMpKSl7amtkKGQsVnhjLChkY2QoKSwkYmQpKTtBZmQoZCxiLmEsYi5iLGZhbHNlLHRydWUpfWVsc2V7Q2NiKEREKGhrZChkLEd4YykpKXx8QWZkKGQsYi5hLGIuYix0cnVlLHRydWUpfX1mP2prZChkLEZ4YyxwcWIoc2RkKSk6amtkKGQsRnhjLChjPUJEKGdkYihJMSksOSksbmV3IHhxYihjLEJEKF9CYihjLGMubGVuZ3RoKSw5KSwwKSkpfVxuZnVuY3Rpb24gdEEoYSxiLGMpe3ZhciBkLGUsZixnO2lmKGJbMF0+PWEubGVuZ3RoKXtjLm89MDtyZXR1cm4gdHJ1ZX1zd2l0Y2goYmZiKGEsYlswXSkpe2Nhc2UgNDM6ZT0xO2JyZWFrO2Nhc2UgNDU6ZT0tMTticmVhaztkZWZhdWx0OmMubz0wO3JldHVybiB0cnVlO30rK2JbMF07Zj1iWzBdO2c9ckEoYSxiKTtpZihnPT0wJiZiWzBdPT1mKXtyZXR1cm4gZmFsc2V9aWYoYlswXTxhLmxlbmd0aCYmYmZiKGEsYlswXSk9PTU4KXtkPWcqNjA7KytiWzBdO2Y9YlswXTtnPXJBKGEsYik7aWYoZz09MCYmYlswXT09Zil7cmV0dXJuIGZhbHNlfWQrPWd9ZWxzZXtkPWc7ZDwyNCYmYlswXS1mPD0yPyhkKj02MCk6KGQ9ZCUxMDArKGQvMTAwfDApKjYwKX1kKj1lO2Mubz0tZDtyZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIEhqYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGo7Zz1uZXcgUmtiO2ZvcihkPW5ldyBTcih1cihVX2IoYS5iKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDE3KTtPWmIoYykmJkVrYihnLG5ldyBHamMoYyxKamMoYSxjLmMpLEpqYyhhLGMuZCkpKX1mb3Ioaj0oZj0obmV3ICRpYihhLmUpKS5hLnZjKCkuS2MoKSxuZXcgZGpiKGYpKTtqLmEuT2IoKTspe2g9KGI9QkQoai5hLlBiKCksNDIpLEJEKGIuZGQoKSwxMTMpKTtoLmQucD0wfWZvcihpPShlPShuZXcgJGliKGEuZSkpLmEudmMoKS5LYygpLG5ldyBkamIoZSkpO2kuYS5PYigpOyl7aD0oYj1CRChpLmEuUGIoKSw0MiksQkQoYi5kZCgpLDExMykpO2guZC5wPT0wJiZFa2IoYS5kLElqYyhhLGgpKX19XG5mdW5jdGlvbiBXMWIoYSl7dmFyIGIsYyxkLGUsZixnLGg7Zj1tcGQoYSk7Zm9yKGU9bmV3IEZ5ZCgoIWEuZSYmKGEuZT1uZXcgeTVkKEIyLGEsNyw0KSksYS5lKSk7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDc5KTtoPWF0ZChCRChxdWQoKCFkLmMmJihkLmM9bmV3IHk1ZCh6MixkLDUsOCkpLGQuYyksMCksODIpKTtpZighbnRkKGgsZikpe3JldHVybiB0cnVlfX1mb3IoYz1uZXcgRnlkKCghYS5kJiYoYS5kPW5ldyB5NWQoQjIsYSw4LDUpKSxhLmQpKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChEeWQoYyksNzkpO2c9YXRkKEJEKHF1ZCgoIWIuYiYmKGIuYj1uZXcgeTVkKHoyLGIsNCw3KSksYi5iKSwwKSw4MikpO2lmKCFudGQoZyxmKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIERtYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2k9bmV3IHM3YztiPUpzYihhLDApO2g9bnVsbDtjPUJEKFhzYihiKSw4KTtlPUJEKFhzYihiKSw4KTt3aGlsZShiLmIhPWIuZC5jKXtoPWM7Yz1lO2U9QkQoWHNiKGIpLDgpO2Y9RW1jKGM3YyhuZXcgZjdjKGguYSxoLmIpLGMpKTtnPUVtYyhjN2MobmV3IGY3YyhlLmEsZS5iKSxjKSk7ZD0xMDtkPSR3bmQuTWF0aC5taW4oZCwkd25kLk1hdGguYWJzKGYuYStmLmIpLzIpO2Q9JHduZC5NYXRoLm1pbihkLCR3bmQuTWF0aC5hYnMoZy5hK2cuYikvMik7Zi5hPUVlYihmLmEpKmQ7Zi5iPUVlYihmLmIpKmQ7Zy5hPUVlYihnLmEpKmQ7Zy5iPUVlYihnLmIpKmQ7RHNiKGksUDZjKGYsYykpO0RzYihpLFA2YyhnLGMpKX1yZXR1cm4gaX1cbmZ1bmN0aW9uIF9oZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2c9YS5laCgpO2k9YS5aZygpO2U9bnVsbDtpZihpKXtpZighIWImJihOaWQoYSxiLGMpLkJiJlRqZSk9PTApe2Q9VHhkKGkuVmsoKSxhLGQpO2EudWgobnVsbCk7ZT1iLmZoKCl9ZWxzZXtpPW51bGx9fWVsc2V7ISFnJiYoaT1nLmZoKCkpOyEhYiYmKGU9Yi5maCgpKX1pIT1lJiYhIWkmJmkuWmsoYSk7aD1hLlZnKCk7YS5SZyhiLGMpO2khPWUmJiEhZSYmZS5ZayhhKTtpZihhLkxnKCkmJmEuTWcoKSl7aWYoISFnJiZoPj0wJiZoIT1jKXtmPW5ldyBuU2QoYSwxLGgsZyxudWxsKTshZD8oZD1mKTpkLkVpKGYpfWlmKGM+PTApe2Y9bmV3IG5TZChhLDEsYyxoPT1jP2c6bnVsbCxiKTshZD8oZD1mKTpkLkVpKGYpfX1yZXR1cm4gZH1cbmZ1bmN0aW9uIExFZChhKXt2YXIgYixjLGQ7aWYoYS5iPT1udWxsKXtkPW5ldyBIZmI7aWYoYS5pIT1udWxsKXtFZmIoZCxhLmkpO2QuYSs9JzonfWlmKChhLmYmMjU2KSE9MCl7aWYoKGEuZiYyNTYpIT0wJiZhLmEhPW51bGwpe1lFZChhLmkpfHwoZC5hKz0nLy8nLGQpO0VmYihkLGEuYSl9aWYoYS5kIT1udWxsKXtkLmErPScvJztFZmIoZCxhLmQpfShhLmYmMTYpIT0wJiYoZC5hKz0nLycsZCk7Zm9yKGI9MCxjPWEuai5sZW5ndGg7YjxjO2IrKyl7YiE9MCYmKGQuYSs9Jy8nLGQpO0VmYihkLGEualtiXSl9aWYoYS5nIT1udWxsKXtkLmErPSc/JztFZmIoZCxhLmcpfX1lbHNle0VmYihkLGEuYSl9aWYoYS5lIT1udWxsKXtkLmErPScjJztFZmIoZCxhLmUpfWEuYj1kLmF9cmV0dXJuIGEuYn1cbmZ1bmN0aW9uIEU1YihhLGIpe3ZhciBjLGQsZSxmLGcsaDtmb3IoZT1uZXcgb2xiKGIuYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEwKTtmPXZOYihkLCh3dGMoKSwkc2MpKTtpZihKRChmLDExKSl7Zz1CRChmLDExKTtoPWJfYihiLGQsZy5vLmEsZy5vLmIpO2cubi5hPWguYTtnLm4uYj1oLmI7RzBiKGcsQkQodk5iKGQsSHNjKSw2MSkpfX1jPW5ldyBmN2MoYi5mLmErYi5kLmIrYi5kLmMsYi5mLmIrYi5kLmQrYi5kLmEpO2lmKEJEKHZOYihiLCh3dGMoKSxLc2MpKSwyMSkuSGMoKE9yYygpLEhyYykpKXt5TmIoYSwoTnljKCksVnhjKSwoZGNkKCksJGJkKSk7QkQodk5iKFFfYihhKSxLc2MpLDIxKS5GYyhLcmMpO2pfYihhLGMsZmFsc2UpfWVsc2V7al9iKGEsYyx0cnVlKX19XG5mdW5jdGlvbiBZRmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtPZGQoYywnTWluaW1pemUgQ3Jvc3NpbmdzICcrYS5hLDEpO2Q9Yi5iLmMubGVuZ3RoPT0wfHwhV0FiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmIsMTYpKSxuZXcgWHhiKG5ldyB4R2MpKSkuc2QoKEVBYigpLERBYikpO2k9Yi5iLmMubGVuZ3RoPT0xJiZCRChJa2IoYi5iLDApLDI5KS5hLmMubGVuZ3RoPT0xO2Y9UEQodk5iKGIsKE55YygpLGF4YykpKT09PVBEKChoYmQoKSxlYmQpKTtpZihkfHxpJiYhZil7UWRkKGMpO3JldHVybn1lPVRGYyhhLGIpO2c9KGg9QkQoVXQoZSwwKSwyMTQpLGguYy5SZigpP2guYy5MZigpP25ldyBrR2MoYSk6bmV3IG1HYyhhKTpuZXcgaUdjKGEpKTtVRmMoZSxnKTtlR2MoYSk7UWRkKGMpfVxuZnVuY3Rpb24gc28oYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtpPVRiYihJYmIoRWllLGtlYihUYmIoSWJiKGI9PW51bGw/MDp0YihiKSxGaWUpKSwxNSkpKTtlPVRiYihJYmIoRWllLGtlYihUYmIoSWJiKGM9PW51bGw/MDp0YihjKSxGaWUpKSwxNSkpKTtoPXZvKGEsYixpKTtnPXVvKGEsYyxlKTtpZighIWgmJmU9PWguYSYmSGIoYyxoLmcpKXtyZXR1cm4gY31lbHNlIGlmKCEhZyYmIWQpe3Rocm93IHZiYihuZXcgV2RiKCdrZXkgYWxyZWFkeSBwcmVzZW50OiAnK2MpKX0hIWgmJm1vKGEsaCk7ISFnJiZtbyhhLGcpO2Y9bmV3ICRvKGMsZSxiLGkpO3BvKGEsZixnKTtpZihnKXtnLmU9bnVsbDtnLmM9bnVsbH1pZihoKXtoLmU9bnVsbDtoLmM9bnVsbH10byhhKTtyZXR1cm4gIWg/bnVsbDpoLmd9XG5mdW5jdGlvbiBMaGIoYSxiLGMpe3ZhciBkLGUsZixnLGg7Zm9yKGY9MDtmPGI7ZisrKXtkPTA7Zm9yKGg9ZisxO2g8YjtoKyspe2Q9d2JiKHdiYihJYmIoeGJiKGFbZl0sWWplKSx4YmIoYVtoXSxZamUpKSx4YmIoY1tmK2hdLFlqZSkpLHhiYihUYmIoZCksWWplKSk7Y1tmK2hdPVRiYihkKTtkPVBiYihkLDMyKX1jW2YrYl09VGJiKGQpfWtoYihjLGMsYjw8MSk7ZD0wO2ZvcihlPTAsZz0wO2U8YjsrK2UsZysrKXtkPXdiYih3YmIoSWJiKHhiYihhW2VdLFlqZSkseGJiKGFbZV0sWWplKSkseGJiKGNbZ10sWWplKSkseGJiKFRiYihkKSxZamUpKTtjW2ddPVRiYihkKTtkPVBiYihkLDMyKTsrK2c7ZD13YmIoZCx4YmIoY1tnXSxZamUpKTtjW2ddPVRiYihkKTtkPVBiYihkLDMyKX1yZXR1cm4gY31cbmZ1bmN0aW9uIFpKYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztpZihRcShiKSl7cmV0dXJufWk9RWRiKEVEKHBCYyhjLmMsKE55YygpLHp5YykpKSk7aj1CRChwQmMoYy5jLHl5YyksMTQyKTshaiYmKGo9bmV3IEhfYik7ZD1jLmE7ZT1udWxsO2ZvcihoPWIuS2MoKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwxMSk7az0wO2lmKCFlKXtrPWouZH1lbHNle2s9aTtrKz1lLm8uYn1mPW5HYihvR2IobmV3IHBHYixnKSxhLmYpO1JoYihhLmssZyxmKTtBRmIoREZiKENGYihCRmIoRUZiKG5ldyBGRmIsMCksUUQoJHduZC5NYXRoLmNlaWwoaykpKSxkKSxmKSk7ZT1nO2Q9Zn1BRmIoREZiKENGYihCRmIoRUZiKG5ldyBGRmIsMCksUUQoJHduZC5NYXRoLmNlaWwoai5hK2Uuby5iKSkpLGQpLGMuZCkpfVxuZnVuY3Rpb24gdVpjKGEsYixjLGQsZSxmLGcsaCl7dmFyIGksaixrLGwsbSxuO249ZmFsc2U7bT1mLWMucztrPWMudC1iLmYrKGo9TVpjKGMsbSxmYWxzZSksai5hKTtpZihkLmcraD5tKXtyZXR1cm4gZmFsc2V9bD0oaT1NWmMoZCxtLGZhbHNlKSxpLmEpO2lmKGsraCtsPD1iLmIpe0taYyhjLGYtYy5zKTtjLmM9dHJ1ZTtLWmMoZCxmLWMucyk7T1pjKGQsYy5zLGMudCtjLmQraCk7ZC5rPXRydWU7V1pjKGMucSxkKTtuPXRydWU7aWYoZSl7cyRjKGIsZCk7ZC5qPWI7aWYoYS5jLmxlbmd0aD5nKXt2JGMoKHRDYihnLGEuYy5sZW5ndGgpLEJEKGEuY1tnXSwyMDApKSxkKTsodENiKGcsYS5jLmxlbmd0aCksQkQoYS5jW2ddLDIwMCkpLmEuYy5sZW5ndGg9PTAmJktrYihhLGcpfX19cmV0dXJuIG59XG5mdW5jdGlvbiBrY2MoYSxiKXt2YXIgYyxkLGUsZixnLGg7T2RkKGIsJ1BhcnRpdGlvbiBtaWRwcm9jZXNzaW5nJywxKTtlPW5ldyBIcDtNQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuYSwxNikpLG5ldyBvY2MpLG5ldyBxY2MoZSkpO2lmKGUuZD09MCl7cmV0dXJufWg9QkQoR0FiKFVBYigoZj1lLmksbmV3IFlBYihudWxsLCghZj8oZS5pPW5ldyB6ZihlLGUuYykpOmYpLk5jKCkpKSksQnliKG5ldyBmemIsbmV3IGR6YixuZXcgRXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLER5YildKSkpLDE1KTtkPWguS2MoKTtjPUJEKGQuUGIoKSwxOSk7d2hpbGUoZC5PYigpKXtnPUJEKGQuUGIoKSwxOSk7amNjKEJEKFFjKGUsYyksMjEpLEJEKFFjKGUsZyksMjEpKTtjPWd9UWRkKGIpfVxuZnVuY3Rpb24gRFliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrO2lmKGIucD09MCl7Yi5wPTE7Zz1jO2lmKCFnKXtlPW5ldyBSa2I7Zj0oZD1CRChnZGIoRjEpLDkpLG5ldyB4cWIoZCxCRChfQmIoZCxkLmxlbmd0aCksOSksMCkpO2c9bmV3IHZnZChlLGYpfUJEKGcuYSwxNSkuRmMoYik7Yi5rPT0oajBiKCksZTBiKSYmQkQoZy5iLDIxKS5GYyhCRCh2TmIoYiwod3RjKCksSHNjKSksNjEpKTtmb3IoaT1uZXcgb2xiKGIuaik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDExKTtmb3Ioaz11bChwbChPQyhHQyhLSSwxKSxVaGUsMjAsMCxbbmV3IEowYihoKSxuZXcgUjBiKGgpXSkpKTtRcihrKTspe2o9QkQoUnIoayksMTEpO0RZYihhLGouaSxnKX19cmV0dXJuIGd9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBEbWQoYSxiKXt2YXIgYyxkLGUsZixnO2lmKGEuQWIpe2lmKGEuQWIpe2c9YS5BYi5pO2lmKGc+MCl7ZT1CRChhLkFiLmcsMTkzNCk7aWYoYj09bnVsbCl7Zm9yKGY9MDtmPGc7KytmKXtjPWVbZl07aWYoYy5kPT1udWxsKXtyZXR1cm4gY319fWVsc2V7Zm9yKGY9MDtmPGc7KytmKXtjPWVbZl07aWYoZGZiKGIsYy5kKSl7cmV0dXJuIGN9fX19fWVsc2V7aWYoYj09bnVsbCl7Zm9yKGQ9bmV3IEZ5ZChhLkFiKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksNTkwKTtpZihjLmQ9PW51bGwpe3JldHVybiBjfX19ZWxzZXtmb3IoZD1uZXcgRnlkKGEuQWIpO2QuZSE9ZC5pLmdjKCk7KXtjPUJEKER5ZChkKSw1OTApO2lmKGRmYihiLGMuZCkpe3JldHVybiBjfX19fX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGdSYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7aj1ERCh2TmIoYiwoSlRjKCksR1RjKSkpO2lmKGo9PW51bGx8fCh1Q2Ioaiksaikpe2RSYyhhLGIpO2U9bmV3IFJrYjtmb3IoaT1Kc2IoYi5iLDApO2kuYiE9aS5kLmM7KXtnPUJEKFhzYihpKSw4Nik7Yz1jUmMoYSxnLG51bGwpO2lmKGMpe3ROYihjLGIpO2UuY1tlLmMubGVuZ3RoXT1jfX1hLmE9bnVsbDthLmI9bnVsbDtpZihlLmMubGVuZ3RoPjEpe2ZvcihkPW5ldyBvbGIoZSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDEzNSk7Zj0wO2ZvcihoPUpzYihjLmIsMCk7aC5iIT1oLmQuYzspe2c9QkQoWHNiKGgpLDg2KTtnLmc9ZisrfX19cmV0dXJuIGV9cmV0dXJuIE91KE9DKEdDKG4kLDEpLGZtZSwxMzUsMCxbYl0pKX1cbmZ1bmN0aW9uIHJxZChhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixwLHEscixzLHQsdSx2O249U3FkKGEsZXRkKGIpLGUpO2ptZChuLF9wZChlLFZ0ZSkpO289bnVsbDtwPWU7cT0kcGQocCxZdGUpO3I9bmV3IHVyZChuKTt3cWQoci5hLHEpO3M9JHBkKHAsJ2VuZFBvaW50Jyk7dD1uZXcgeXJkKG4pO3lxZCh0LmEscyk7dT1ZcGQocCxPdGUpO3Y9bmV3IEJyZChuKTt6cWQodi5hLHUpO2w9X3BkKGUsUXRlKTtmPW5ldyBxcmQoYSxuKTtzcWQoZi5hLGYuYixsKTttPV9wZChlLFB0ZSk7Zz1uZXcgcnJkKGEsbik7dHFkKGcuYSxnLmIsbSk7aj1ZcGQoZSxTdGUpO2g9bmV3IHNyZChjLG4pO3VxZChoLmIsaC5hLGopO2s9WXBkKGUsUnRlKTtpPW5ldyB0cmQoZCxuKTt2cWQoaS5iLGkuYSxrKX1cbmZ1bmN0aW9uIGlfYihhLGIsYyl7dmFyIGQsZSxmLGcsaDtoPW51bGw7c3dpdGNoKGIuZyl7Y2FzZSAxOmZvcihlPW5ldyBvbGIoYS5qKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTEpO2lmKENjYihERCh2TmIoZCwod3RjKCksTXNjKSkpKSl7cmV0dXJuIGR9fWg9bmV3IEgwYjt5TmIoaCwod3RjKCksTXNjKSwoQmNiKCksdHJ1ZSkpO2JyZWFrO2Nhc2UgMjpmb3IoZz1uZXcgb2xiKGEuaik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDExKTtpZihDY2IoREQodk5iKGYsKHd0YygpLGV0YykpKSkpe3JldHVybiBmfX1oPW5ldyBIMGI7eU5iKGgsKHd0YygpLGV0YyksKEJjYigpLHRydWUpKTt9aWYoaCl7RjBiKGgsYSk7RzBiKGgsYyk7WCRiKGgubixhLm8sYyl9cmV0dXJuIGh9XG5mdW5jdGlvbiBPM2IoYSxiKXt2YXIgYyxkLGUsZixnLGg7aD0tMTtnPW5ldyBQc2I7Zm9yKGQ9bmV3IGIxYihhLmIpO2xsYihkLmEpfHxsbGIoZC5iKTspe2M9QkQobGxiKGQuYSk/bWxiKGQuYSk6bWxiKGQuYiksMTcpO2g9JHduZC5NYXRoLm1heChoLEVkYihFRCh2TmIoYywoTnljKCksWndjKSkpKSk7Yy5jPT1hP01BYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYy5iLDE2KSksbmV3IFUzYiksbmV3IFczYihnKSk6TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihjLmIsMTYpKSxuZXcgWTNiKSxuZXcgJDNiKGcpKTtmb3IoZj1Kc2IoZywwKTtmLmIhPWYuZC5jOyl7ZT1CRChYc2IoZiksNzApO3dOYihlLCh3dGMoKSxEc2MpKXx8eU5iKGUsRHNjLGMpfUdrYihiLGcpO09zYihnKX1yZXR1cm4gaH1cbmZ1bmN0aW9uIF9iYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpO2Y9bmV3IGIwYihhKTtfX2IoZiwoajBiKCksaTBiKSk7eU5iKGYsKE55YygpLFZ4YyksKGRjZCgpLCRiZCkpO3lOYihmLCh3dGMoKSwkc2MpLGIuYy5pKTtnPW5ldyBIMGI7eU5iKGcsJHNjLGIuYyk7RzBiKGcsZSk7RjBiKGcsZik7eU5iKGIuYyxndGMsZik7aD1uZXcgYjBiKGEpO19fYihoLGkwYik7eU5iKGgsVnhjLCRiZCk7eU5iKGgsJHNjLGIuZC5pKTtpPW5ldyBIMGI7eU5iKGksJHNjLGIuZCk7RzBiKGksZSk7RjBiKGksaCk7eU5iKGIuZCxndGMsaCk7UVpiKGIsZyk7UlpiKGIsaSk7d0NiKDAsYy5jLmxlbmd0aCk7YUNiKGMuYywwLGYpO2QuY1tkLmMubGVuZ3RoXT1oO3lOYihmLHlzYyxtZWIoMSkpO3lOYihoLHlzYyxtZWIoMSkpfVxuZnVuY3Rpb24gQlBjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksajtoPWU/ZC5iOmQuYTtpZihScWIoYS5hLGQpKXtyZXR1cm59aj1oPmMucyYmaDxjLmM7aT1mYWxzZTtpZihjLmUuYiE9MCYmYy5qLmIhPTApe2k9aXwoJHduZC5NYXRoLmFicyhoLUVkYihFRChIc2IoYy5lKSkpKTxxbWUmJiR3bmQuTWF0aC5hYnMoaC1FZGIoRUQoSHNiKGMuaikpKSk8cW1lKTtpPWl8KCR3bmQuTWF0aC5hYnMoaC1FZGIoRUQoSXNiKGMuZSkpKSk8cW1lJiYkd25kLk1hdGguYWJzKGgtRWRiKEVEKElzYihjLmopKSkpPHFtZSl9aWYoanx8aSl7Zz1CRCh2TmIoYiwoTnljKCksanhjKSksNzQpO2lmKCFnKXtnPW5ldyBzN2M7eU5iKGIsanhjLGcpfWY9bmV3IGc3YyhkKTtHc2IoZyxmLGcuYy5iLGcuYyk7UXFiKGEuYSxmKX19XG5mdW5jdGlvbiBnTmIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGs7aWYoZk5iKGEsYixjLGQpKXtyZXR1cm4gdHJ1ZX1lbHNle2ZvcihnPW5ldyBvbGIoYi5mKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMzI0KTtoPWZhbHNlO2k9YS5qLWIuaitjO2o9aStiLm87az1hLmstYi5rK2Q7ZT1rK2IucDtzd2l0Y2goZi5hLmcpe2Nhc2UgMDpoPW9OYihhLGkrZi5iLmEsMCxpK2YuYy5hLGstMSk7YnJlYWs7Y2FzZSAxOmg9b05iKGEsaixrK2YuYi5hLGEuby0xLGsrZi5jLmEpO2JyZWFrO2Nhc2UgMjpoPW9OYihhLGkrZi5iLmEsZSxpK2YuYy5hLGEucC0xKTticmVhaztkZWZhdWx0Omg9b05iKGEsMCxrK2YuYi5hLGktMSxrK2YuYy5hKTt9aWYoaCl7cmV0dXJuIHRydWV9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBMTWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7Zm9yKGc9bmV3IG9sYihiLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7Zm9yKGo9bmV3IG9sYihmLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMCk7az1uZXcgUmtiO2g9MDtmb3IoZD1uZXcgU3IodXIoUl9iKGkpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2lmKE9aYihjKXx8IU9aYihjKSYmYy5jLmkuYz09Yy5kLmkuYyl7Y29udGludWV9ZT1CRCh2TmIoYywoTnljKCksZXljKSksMTkpLmE7aWYoZT5oKXtoPWU7ay5jPUtDKFNJLFVoZSwxLDAsNSwxKX1lPT1oJiZFa2IoayxuZXcgdmdkKGMuYy5pLGMpKX1tbWIoKTtPa2IoayxhLmMpO0RrYihhLmIsaS5wLGspfX19XG5mdW5jdGlvbiBNTWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7Zm9yKGc9bmV3IG9sYihiLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7Zm9yKGo9bmV3IG9sYihmLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMCk7az1uZXcgUmtiO2g9MDtmb3IoZD1uZXcgU3IodXIoVV9iKGkpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2lmKE9aYihjKXx8IU9aYihjKSYmYy5jLmkuYz09Yy5kLmkuYyl7Y29udGludWV9ZT1CRCh2TmIoYywoTnljKCksZXljKSksMTkpLmE7aWYoZT5oKXtoPWU7ay5jPUtDKFNJLFVoZSwxLDAsNSwxKX1lPT1oJiZFa2IoayxuZXcgdmdkKGMuZC5pLGMpKX1tbWIoKTtPa2IoayxhLmMpO0RrYihhLmYsaS5wLGspfX19XG5mdW5jdGlvbiBZN2MoYSl7cjRjKGEsbmV3IEUzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyxxc2UpLCdFTEsgQm94JyksJ0FsZ29yaXRobSBmb3IgcGFja2luZyBvZiB1bmNvbm5lY3RlZCBib3hlcywgaS5lLiBncmFwaHMgd2l0aG91dCBlZGdlcy4nKSxuZXcgXzdjKSkpO3A0YyhhLHFzZSxhbWUsVTdjKTtwNGMoYSxxc2Usd21lLDE1KTtwNGMoYSxxc2Usdm1lLG1lYigwKSk7cDRjKGEscXNlLEpyZSxLc2QoTzdjKSk7cDRjKGEscXNlLEZtZSxLc2QoUTdjKSk7cDRjKGEscXNlLEVtZSxLc2QoUzdjKSk7cDRjKGEscXNlLF9sZSxwc2UpO3A0YyhhLHFzZSxBbWUsS3NkKFA3YykpO3A0YyhhLHFzZSxUbWUsS3NkKFI3YykpO3A0YyhhLHFzZSxyc2UsS3NkKE03YykpO3A0YyhhLHFzZSxscWUsS3NkKE43YykpfVxuZnVuY3Rpb24gVyRiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO2U9YS5pO2c9ZS5vLmE7Zj1lLm8uYjtpZihnPD0wJiZmPD0wKXtyZXR1cm4gVWNkKCksU2NkfWo9YS5uLmE7az1hLm4uYjtoPWEuby5hO2M9YS5vLmI7c3dpdGNoKGIuZyl7Y2FzZSAyOmNhc2UgMTppZihqPDApe3JldHVybiBVY2QoKSxUY2R9ZWxzZSBpZihqK2g+Zyl7cmV0dXJuIFVjZCgpLHpjZH1icmVhaztjYXNlIDQ6Y2FzZSAzOmlmKGs8MCl7cmV0dXJuIFVjZCgpLEFjZH1lbHNlIGlmKGsrYz5mKXtyZXR1cm4gVWNkKCksUmNkfX1pPShqK2gvMikvZztkPShrK2MvMikvZjtyZXR1cm4gaStkPD0xJiZpLWQ8PTA/KFVjZCgpLFRjZCk6aStkPj0xJiZpLWQ+PTA/KFVjZCgpLHpjZCk6ZDwwLjU/KFVjZCgpLEFjZCk6KFVjZCgpLFJjZCl9XG5mdW5jdGlvbiBwSmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2M9ZmFsc2U7az1FZGIoRUQodk5iKGIsKE55YygpLHZ5YykpKSk7bz1RaWUqaztmb3IoZT1uZXcgb2xiKGIuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtqPW5ldyBvbGIoZC5hKTtmPUJEKG1sYihqKSwxMCk7bD14SmMoYS5hW2YucF0pO3doaWxlKGouYTxqLmMuYy5sZW5ndGgpe2g9QkQobWxiKGopLDEwKTttPXhKYyhhLmFbaC5wXSk7aWYobCE9bSl7bj1qQmMoYS5iLGYsaCk7Zz1mLm4uYitmLm8uYitmLmQuYStsLmErbjtpPWgubi5iLWguZC5kK20uYTtpZihnPmkrbyl7cD1sLmcrbS5nO20uYT0obS5nKm0uYStsLmcqbC5hKS9wO20uZz1wO2wuZj1tO2M9dHJ1ZX19Zj1oO2w9bX19cmV0dXJuIGN9XG5mdW5jdGlvbiBWR2IoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaSxqLGssbCxtO209bmV3IEk2Yztmb3Ioaj1iLktjKCk7ai5PYigpOyl7aD1CRChqLlBiKCksODM5KTtmb3IobD1uZXcgb2xiKGgud2YoKSk7bC5hPGwuYy5jLmxlbmd0aDspe2s9QkQobWxiKGwpLDE4MSk7aWYoUEQoay5XZSgoWTljKCksQzhjKSkpPT09UEQoKHFhZCgpLHBhZCkpKXtTR2IobSxrLGZhbHNlLGQsZSxmLGcpO0g2YyhhLG0pfX19Zm9yKGk9Yy5LYygpO2kuT2IoKTspe2g9QkQoaS5QYigpLDgzOSk7Zm9yKGw9bmV3IG9sYihoLndmKCkpO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxODEpO2lmKFBEKGsuV2UoKFk5YygpLEM4YykpKT09PVBEKChxYWQoKSxvYWQpKSl7U0diKG0sayx0cnVlLGQsZSxmLGcpO0g2YyhhLG0pfX19fVxuZnVuY3Rpb24gb1JjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksajtmb3IoZz1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwzMyk7Zm9yKGU9bmV3IFNyKHVyKF9zZChmKS5hLktjKCksbmV3IFNxKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDc5KTtpZighUGxkKGQpJiYhUGxkKGQpJiYhUWxkKGQpKXtpPUJEKFdkKGlyYihjLmYsZikpLDg2KTtqPUJEKE9oYihjLGF0ZChCRChxdWQoKCFkLmMmJihkLmM9bmV3IHk1ZCh6MixkLDUsOCkpLGQuYyksMCksODIpKSksODYpO2lmKCEhaSYmISFqKXtoPW5ldyBRUmMoaSxqKTt5TmIoaCwobVRjKCksZFRjKSxkKTt0TmIoaCxkKTtEc2IoaS5kLGgpO0RzYihqLmIsaCk7RHNiKGIuYSxoKX19fX19XG5mdW5jdGlvbiBRS2IoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2ZvcihpPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7aS5PYigpOyl7aD1CRChpLlBiKCksMTExKTtlPWguYz9ZSGIoaC5jKTowO2lmKGU+MCl7aWYoaC5hKXtqPWguYi5yZigpLmI7aWYoZT5qKXtpZihhLnZ8fGguYy5kLmMubGVuZ3RoPT0xKXtnPShlLWopLzI7aC5kLmQ9ZztoLmQuYT1nfWVsc2V7Yz1CRChJa2IoaC5jLmQsMCksMTgxKS5yZigpLmI7ZD0oYy1qKS8yO2guZC5kPSR3bmQuTWF0aC5tYXgoMCxkKTtoLmQuYT1lLWQtan19fWVsc2V7aC5kLmE9YS50K2V9fWVsc2UgaWYodGNkKGEudSkpe2Y9c2ZkKGguYik7Zi5kPDAmJihoLmQuZD0tZi5kKTtmLmQrZi5hPmguYi5yZigpLmImJihoLmQuYT1mLmQrZi5hLWguYi5yZigpLmIpfX19XG5mdW5jdGlvbiBGQyhhLGIpe3ZhciBjO3N3aXRjaChIQyhhKSl7Y2FzZSA2OnJldHVybiBORChiKTtjYXNlIDc6cmV0dXJuIExEKGIpO2Nhc2UgODpyZXR1cm4gS0QoYik7Y2FzZSAzOnJldHVybiBBcnJheS5pc0FycmF5KGIpJiYoYz1IQyhiKSwhKGM+PTE0JiZjPD0xNikpO2Nhc2UgMTE6cmV0dXJuIGIhPW51bGwmJnR5cGVvZiBiPT09TmhlO2Nhc2UgMTI6cmV0dXJuIGIhPW51bGwmJih0eXBlb2YgYj09PUpoZXx8dHlwZW9mIGI9PU5oZSk7Y2FzZSAwOnJldHVybiBBRChiLGEuX19lbGVtZW50VHlwZUlkJCk7Y2FzZSAyOnJldHVybiBPRChiKSYmIShiLmltPT09Z2NiKTtjYXNlIDE6cmV0dXJuIE9EKGIpJiYhKGIuaW09PT1nY2IpfHxBRChiLGEuX19lbGVtZW50VHlwZUlkJCk7ZGVmYXVsdDpyZXR1cm4gdHJ1ZTt9fVxuZnVuY3Rpb24geE9iKGEsYil7dmFyIGMsZCxlLGY7ZD0kd25kLk1hdGgubWluKCR3bmQuTWF0aC5hYnMoYS5jLShiLmMrYi5iKSksJHduZC5NYXRoLmFicyhhLmMrYS5iLWIuYykpO2Y9JHduZC5NYXRoLm1pbigkd25kLk1hdGguYWJzKGEuZC0oYi5kK2IuYSkpLCR3bmQuTWF0aC5hYnMoYS5kK2EuYS1iLmQpKTtjPSR3bmQuTWF0aC5hYnMoYS5jK2EuYi8yLShiLmMrYi5iLzIpKTtpZihjPmEuYi8yK2IuYi8yKXtyZXR1cm4gMX1lPSR3bmQuTWF0aC5hYnMoYS5kK2EuYS8yLShiLmQrYi5hLzIpKTtpZihlPmEuYS8yK2IuYS8yKXtyZXR1cm4gMX1pZihjPT0wJiZlPT0wKXtyZXR1cm4gMH1pZihjPT0wKXtyZXR1cm4gZi9lKzF9aWYoZT09MCl7cmV0dXJuIGQvYysxfXJldHVybiAkd25kLk1hdGgubWluKGQvYyxmL2UpKzF9XG5mdW5jdGlvbiBtZ2IoYSxiKXt2YXIgYyxkLGUsZixnLGg7ZT1wZ2IoYSk7aD1wZ2IoYik7aWYoZT09aCl7aWYoYS5lPT1iLmUmJmEuYTw1NCYmYi5hPDU0KXtyZXR1cm4gYS5mPGIuZj8tMTphLmY+Yi5mPzE6MH1kPWEuZS1iLmU7Yz0oYS5kPjA/YS5kOiR3bmQuTWF0aC5mbG9vcigoYS5hLTEpKlhqZSkrMSktKGIuZD4wP2IuZDokd25kLk1hdGguZmxvb3IoKGIuYS0xKSpYamUpKzEpO2lmKGM+ZCsxKXtyZXR1cm4gZX1lbHNlIGlmKGM8ZC0xKXtyZXR1cm4gLWV9ZWxzZXtmPSghYS5jJiYoYS5jPWZoYihhLmYpKSxhLmMpO2c9KCFiLmMmJihiLmM9ZmhiKGIuZikpLGIuYyk7ZDwwPyhmPU9nYihmLEtoYigtZCkpKTpkPjAmJihnPU9nYihnLEtoYihkKSkpO3JldHVybiBJZ2IoZixnKX19ZWxzZSByZXR1cm4gZTxoPy0xOjF9XG5mdW5jdGlvbiBtVGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtmPTA7aD0wO2k9MDtmb3IoZT1uZXcgb2xiKGEuZi5lKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTQ0KTtpZihiPT1kKXtjb250aW51ZX1nPWEuaVtiLmJdW2QuYl07Zis9ZztjPVM2YyhiLmQsZC5kKTtjPjAmJmEuZCE9KHlUYigpLHhUYikmJihoKz1nKihkLmQuYSthLmFbYi5iXVtkLmJdKihiLmQuYS1kLmQuYSkvYykpO2M+MCYmYS5kIT0oeVRiKCksdlRiKSYmKGkrPWcqKGQuZC5iK2EuYVtiLmJdW2QuYl0qKGIuZC5iLWQuZC5iKS9jKSl9c3dpdGNoKGEuZC5nKXtjYXNlIDE6cmV0dXJuIG5ldyBmN2MoaC9mLGIuZC5iKTtjYXNlIDI6cmV0dXJuIG5ldyBmN2MoYi5kLmEsaS9mKTtkZWZhdWx0OnJldHVybiBuZXcgZjdjKGgvZixpL2YpO319XG5mdW5jdGlvbiBXY2MoYSxiKXtPY2MoKTt2YXIgYyxkLGUsZixnO2c9QkQodk5iKGEuaSwoTnljKCksVnhjKSksOTgpO2Y9YS5qLmctYi5qLmc7aWYoZiE9MHx8IShnPT0oZGNkKCksWmJkKXx8Zz09X2JkfHxnPT0kYmQpKXtyZXR1cm4gMH1pZihnPT0oZGNkKCksWmJkKSl7Yz1CRCh2TmIoYSxXeGMpLDE5KTtkPUJEKHZOYihiLFd4YyksMTkpO2lmKCEhYyYmISFkKXtlPWMuYS1kLmE7aWYoZSE9MCl7cmV0dXJuIGV9fX1zd2l0Y2goYS5qLmcpe2Nhc2UgMTpyZXR1cm4gS2RiKGEubi5hLGIubi5hKTtjYXNlIDI6cmV0dXJuIEtkYihhLm4uYixiLm4uYik7Y2FzZSAzOnJldHVybiBLZGIoYi5uLmEsYS5uLmEpO2Nhc2UgNDpyZXR1cm4gS2RiKGIubi5iLGEubi5iKTtkZWZhdWx0OnRocm93IHZiYihuZXcgWmRiKGluZSkpO319XG5mdW5jdGlvbiB0ZmQoYSl7dmFyIGIsYyxkLGUsZixnO2M9KCFhLmEmJihhLmE9bmV3IHhNZCh5MixhLDUpKSxhLmEpLmkrMjtnPW5ldyBTa2IoYyk7RWtiKGcsbmV3IGY3YyhhLmosYS5rKSk7TUFiKG5ldyBZQWIobnVsbCwoIWEuYSYmKGEuYT1uZXcgeE1kKHkyLGEsNSkpLG5ldyBLdWIoYS5hLDE2KSkpLG5ldyBRZmQoZykpO0VrYihnLG5ldyBmN2MoYS5iLGEuYykpO2I9MTt3aGlsZShiPGcuYy5sZW5ndGgtMSl7ZD0odENiKGItMSxnLmMubGVuZ3RoKSxCRChnLmNbYi0xXSw4KSk7ZT0odENiKGIsZy5jLmxlbmd0aCksQkQoZy5jW2JdLDgpKTtmPSh0Q2IoYisxLGcuYy5sZW5ndGgpLEJEKGcuY1tiKzFdLDgpKTtkLmE9PWUuYSYmZS5hPT1mLmF8fGQuYj09ZS5iJiZlLmI9PWYuYj9La2IoZyxiKTorK2J9cmV0dXJuIGd9XG5mdW5jdGlvbiBYZ2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtjPXZEYih5RGIod0RiKHhEYihuZXcgekRiLGIpLG5ldyBLNmMoYi5lKSksR2djKSxhLmEpO2Iuai5jLmxlbmd0aD09MHx8bkRiKEJEKElrYihiLmosMCksNTcpLmEsYyk7aT1uZXcgbEViO1JoYihhLmUsYyxpKTtnPW5ldyBUcWI7aD1uZXcgVHFiO2ZvcihmPW5ldyBvbGIoYi5rKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTcpO1FxYihnLGUuYyk7UXFiKGgsZS5kKX1kPWcuYS5nYygpLWguYS5nYygpO2lmKGQ8MCl7akViKGksdHJ1ZSwoZWFkKCksYWFkKSk7akViKGksZmFsc2UsYmFkKX1lbHNlIGlmKGQ+MCl7akViKGksZmFsc2UsKGVhZCgpLGFhZCkpO2pFYihpLHRydWUsYmFkKX1Ia2IoYi5nLG5ldyAkaGMoYSxjKSk7UmhiKGEuZyxiLGMpfVxuZnVuY3Rpb24gTmViKCl7TmViPWNjYjt2YXIgYTtKZWI9T0MoR0MoV0QsMSksb2plLDI1LDE1LFstMSwtMSwzMCwxOSwxNSwxMywxMSwxMSwxMCw5LDksOCw4LDgsOCw3LDcsNyw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw1XSk7S2ViPUtDKFdELG9qZSwyNSwzNywxNSwxKTtMZWI9T0MoR0MoV0QsMSksb2plLDI1LDE1LFstMSwtMSw2Myw0MCwzMiwyOCwyNSwyMywyMSwyMCwxOSwxOSwxOCwxOCwxNywxNywxNiwxNiwxNiwxNSwxNSwxNSwxNSwxNCwxNCwxNCwxNCwxNCwxNCwxMywxMywxMywxMywxMywxMywxMywxM10pO01lYj1LQyhYRCxTamUsMjUsMzcsMTQsMSk7Zm9yKGE9MjthPD0zNjthKyspe0tlYlthXT1RRCgkd25kLk1hdGgucG93KGEsSmViW2FdKSk7TWViW2FdPUFiYihyaWUsS2ViW2FdKX19XG5mdW5jdGlvbiBwZmQoYSl7dmFyIGI7aWYoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkuaSE9MSl7dGhyb3cgdmJiKG5ldyBXZGIoVHNlKyghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLmkpKX1iPW5ldyBzN2M7ISFidGQoQkQocXVkKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLDApLDgyKSkmJnllKGIscWZkKGEsYnRkKEJEKHF1ZCgoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKSwwKSw4MikpLGZhbHNlKSk7ISFidGQoQkQocXVkKCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLDApLDgyKSkmJnllKGIscWZkKGEsYnRkKEJEKHF1ZCgoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKSwwKSw4MikpLHRydWUpKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIF9NYyhhLGIpe3ZhciBjLGQsZSxmLGc7Yi5kPyhlPWEuYS5jPT0oWUxjKCksWExjKT9SX2IoYi5iKTpVX2IoYi5iKSk6KGU9YS5hLmM9PShZTGMoKSxXTGMpP1JfYihiLmIpOlVfYihiLmIpKTtmPWZhbHNlO2ZvcihkPW5ldyBTcih1cihlLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2c9Q2NiKGEuYS5mW2EuYS5nW2IuYi5wXS5wXSk7aWYoIWcmJiFPWmIoYykmJmMuYy5pLmM9PWMuZC5pLmMpe2NvbnRpbnVlfWlmKENjYihhLmEublthLmEuZ1tiLmIucF0ucF0pfHxDY2IoYS5hLm5bYS5hLmdbYi5iLnBdLnBdKSl7Y29udGludWV9Zj10cnVlO2lmKFJxYihhLmIsYS5hLmdbVE1jKGMsYi5iKS5wXSkpe2IuYz10cnVlO2IuYT1jO3JldHVybiBifX1iLmM9ZjtiLmE9bnVsbDtyZXR1cm4gYn1cbmZ1bmN0aW9uIGJlZChhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsO21tYigpO09rYihhLG5ldyBSZWQpO2g9bmV3IEJpYihhLDApO2w9bmV3IFJrYjtmPTA7d2hpbGUoaC5iPGguZC5nYygpKXtnPShzQ2IoaC5iPGguZC5nYygpKSxCRChoLmQuWGIoaC5jPWguYisrKSwxNTcpKTtpZihsLmMubGVuZ3RoIT0wJiZyZWQoZykqcWVkKGcpPmYqMil7az1uZXcgd2VkKGwpO2o9cmVkKGcpL3FlZChnKTtpPWZlZChrLGIsbmV3IHAwYixjLGQsZSxqKTtQNmMoWDZjKGsuZSksaSk7bC5jPUtDKFNJLFVoZSwxLDAsNSwxKTtmPTA7bC5jW2wuYy5sZW5ndGhdPWs7bC5jW2wuYy5sZW5ndGhdPWc7Zj1yZWQoaykqcWVkKGspK3JlZChnKSpxZWQoZyl9ZWxzZXtsLmNbbC5jLmxlbmd0aF09ZztmKz1yZWQoZykqcWVkKGcpfX1yZXR1cm4gbH1cbmZ1bmN0aW9uIHF3ZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7ZD1jLmdjKCk7aWYoZD09MCl7cmV0dXJuIGZhbHNlfWVsc2V7aWYoYS5laigpKXtpPWEuZmooKTt6dmQoYSxiLGMpO2c9ZD09MT9hLlppKDMsbnVsbCxjLktjKCkuUGIoKSxiLGkpOmEuWmkoNSxudWxsLGMsYixpKTtpZihhLmJqKCkpe2g9ZDwxMDA/bnVsbDpuZXcgSXhkKGQpO2Y9YitkO2ZvcihlPWI7ZTxmOysrZSl7aj1hLk9pKGUpO2g9YS5jaihqLGgpO2g9aH1pZighaCl7YS4kaShnKX1lbHNle2guRWkoZyk7aC5GaSgpfX1lbHNle2EuJGkoZyl9fWVsc2V7enZkKGEsYixjKTtpZihhLmJqKCkpe2g9ZDwxMDA/bnVsbDpuZXcgSXhkKGQpO2Y9YitkO2ZvcihlPWI7ZTxmOysrZSl7aD1hLmNqKGEuT2koZSksaCl9ISFoJiZoLkZpKCl9fXJldHVybiB0cnVlfX1cbmZ1bmN0aW9uIHd3ZChhLGIsYyl7dmFyIGQsZSxmLGcsaDtpZihhLmVqKCkpe2U9bnVsbDtmPWEuZmooKTtkPWEuWmkoMSxoPShnPWEuVWkoYixhLm9pKGIsYykpLGcpLGMsYixmKTtpZihhLmJqKCkmJiEoYS5uaSgpJiYhIWg/cGIoaCxjKTpQRChoKT09PVBEKGMpKSl7ISFoJiYoZT1hLmRqKGgsZSkpO2U9YS5jaihjLGUpO2lmKCFlKXthLiRpKGQpfWVsc2V7ZS5FaShkKTtlLkZpKCl9fWVsc2V7aWYoIWUpe2EuJGkoZCl9ZWxzZXtlLkVpKGQpO2UuRmkoKX19cmV0dXJuIGh9ZWxzZXtoPShnPWEuVWkoYixhLm9pKGIsYykpLGcpO2lmKGEuYmooKSYmIShhLm5pKCkmJiEhaD9wYihoLGMpOlBEKGgpPT09UEQoYykpKXtlPW51bGw7ISFoJiYoZT1hLmRqKGgsbnVsbCkpO2U9YS5jaihjLGUpOyEhZSYmZS5GaSgpfXJldHVybiBofX1cbmZ1bmN0aW9uIHJSYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosazthLmU9YjthLmY9QkQodk5iKGIsKEhTYigpLEdTYikpLDIzMCk7aVJiKGIpO2EuZD0kd25kLk1hdGgubWF4KGIuZS5jLmxlbmd0aCoxNitiLmMuYy5sZW5ndGgsMjU2KTtpZighQ2NiKEREKHZOYihiLCh3U2IoKSxkU2IpKSkpKXtrPWEuZS5lLmMubGVuZ3RoO2ZvcihpPW5ldyBvbGIoYi5lKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTQ0KTtqPWguZDtqLmE9QXViKGEuZikqaztqLmI9QXViKGEuZikqa319Yz1iLmI7Zm9yKGY9bmV3IG9sYihiLmMpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyODIpO2Q9QkQodk5iKGUsclNiKSwxOSkuYTtpZihkPjApe2ZvcihnPTA7ZzxkO2crKyl7RWtiKGMsbmV3IGFSYihlKSl9Y1JiKGUpfX19XG5mdW5jdGlvbiB6YWMoYSxiKXt2YXIgYyxkLGUsZixnLGg7aWYoYS5rPT0oajBiKCksZjBiKSl7Yz1XQWIoSkFiKEJEKHZOYihhLCh3dGMoKSxrdGMpKSwxNSkuT2MoKSxuZXcgWHhiKG5ldyBLYWMpKSkuc2QoKEVBYigpLERBYikpP2I6KHJiZCgpLHBiZCk7eU5iKGEsU3NjLGMpO2lmKGMhPShyYmQoKSxvYmQpKXtkPUJEKHZOYihhLCRzYyksMTcpO2g9RWRiKEVEKHZOYihkLChOeWMoKSxad2MpKSkpO2c9MDtpZihjPT1uYmQpe2c9YS5vLmItJHduZC5NYXRoLmNlaWwoaC8yKX1lbHNlIGlmKGM9PXBiZCl7YS5vLmItPUVkYihFRCh2TmIoUV9iKGEpLG55YykpKTtnPShhLm8uYi0kd25kLk1hdGguY2VpbChoKSkvMn1mb3IoZj1uZXcgb2xiKGEuaik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDExKTtlLm4uYj1nfX19fVxuZnVuY3Rpb24gVWdlKCl7VWdlPWNjYjtnNWQoKTtUZ2U9bmV3IFZnZTtPQyhHQyh3NSwyKSxuaWUsMzY4LDAsW09DKEdDKHc1LDEpLEF4ZSw1OTIsMCxbbmV3IFJnZShYd2UpXSldKTtPQyhHQyh3NSwyKSxuaWUsMzY4LDAsW09DKEdDKHc1LDEpLEF4ZSw1OTIsMCxbbmV3IFJnZShZd2UpXSldKTtPQyhHQyh3NSwyKSxuaWUsMzY4LDAsW09DKEdDKHc1LDEpLEF4ZSw1OTIsMCxbbmV3IFJnZShad2UpXSksT0MoR0ModzUsMSksQXhlLDU5MiwwLFtuZXcgUmdlKFl3ZSldKV0pO25ldyBZZ2IoJy0xJyk7T0MoR0ModzUsMiksbmllLDM2OCwwLFtPQyhHQyh3NSwxKSxBeGUsNTkyLDAsW25ldyBSZ2UoJ1xcXFxjKycpXSldKTtuZXcgWWdiKCcwJyk7bmV3IFlnYignMCcpO25ldyBZZ2IoJzEnKTtuZXcgWWdiKCcwJyk7bmV3IFlnYihoeGUpfVxuZnVuY3Rpb24gS1FkKGEpe3ZhciBiLGM7aWYoISFhLmMmJmEuYy5raCgpKXtjPUJEKGEuYyw0OSk7YS5jPUJEKHhpZChhLGMpLDEzOCk7aWYoYS5jIT1jKXsoYS5EYiY0KSE9MCYmKGEuRGImMSk9PTAmJlVoZChhLG5ldyBuU2QoYSw5LDIsYyxhLmMpKTtpZihKRChhLkNiLDM5OSkpe2EuRGI+PjE2PT0tMTUmJmEuQ2IubmgoKSYmUndkKG5ldyBvU2QoYS5DYiw5LDEzLGMsYS5jLEhMZChRU2QoQkQoYS5DYiw1OSkpLGEpKSl9ZWxzZSBpZihKRChhLkNiLDg4KSl7aWYoYS5EYj4+MTY9PS0yMyYmYS5DYi5uaCgpKXtiPWEuYztKRChiLDg4KXx8KGI9KGpHZCgpLF9GZCkpO0pEKGMsODgpfHwoYz0oakdkKCksX0ZkKSk7UndkKG5ldyBvU2QoYS5DYiw5LDEwLGMsYixITGQoVktkKEJEKGEuQ2IsMjYpKSxhKSkpfX19fXJldHVybiBhLmN9XG5mdW5jdGlvbiBmN2IoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtPZGQoYiwnSHlwZXJub2RlcyBwcm9jZXNzaW5nJywxKTtmb3IoZT1uZXcgb2xiKGEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtmb3IoaD1uZXcgb2xiKGQuYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTtpZihDY2IoREQodk5iKGcsKE55YygpLGV4YykpKSkmJmcuai5jLmxlbmd0aDw9Mil7bD0wO2s9MDtjPTA7Zj0wO2ZvcihqPW5ldyBvbGIoZy5qKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTEpO3N3aXRjaChpLmouZyl7Y2FzZSAxOisrbDticmVhaztjYXNlIDI6KytrO2JyZWFrO2Nhc2UgMzorK2M7YnJlYWs7Y2FzZSA0OisrZjt9fWw9PTAmJmM9PTAmJmU3YihhLGcsZjw9ayl9fX1RZGQoYil9XG5mdW5jdGlvbiBpN2IoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7T2RkKGIsJ0xheWVyIGNvbnN0cmFpbnQgZWRnZSByZXZlcnNhbCcsMSk7Zm9yKGc9bmV3IG9sYihhLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7az0tMTtjPW5ldyBSa2I7aj1sX2IoZi5hKTtmb3IoZT0wO2U8ai5sZW5ndGg7ZSsrKXtkPUJEKHZOYihqW2VdLCh3dGMoKSxPc2MpKSwzMDMpO2lmKGs9PS0xKXtkIT0oZXNjKCksZHNjKSYmKGs9ZSl9ZWxzZXtpZihkPT0oZXNjKCksZHNjKSl7JF9iKGpbZV0sbnVsbCk7Wl9iKGpbZV0saysrLGYpfX1kPT0oZXNjKCksYnNjKSYmRWtiKGMsaltlXSl9Zm9yKGk9bmV3IG9sYihjKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTApOyRfYihoLG51bGwpOyRfYihoLGYpfX1RZGQoYil9XG5mdW5jdGlvbiBXNmIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbDtPZGQoYywnSHlwZXJlZGdlIG1lcmdpbmcnLDEpO1U2YihhLGIpO2k9bmV3IEJpYihiLmIsMCk7d2hpbGUoaS5iPGkuZC5nYygpKXtoPShzQ2IoaS5iPGkuZC5nYygpKSxCRChpLmQuWGIoaS5jPWkuYisrKSwyOSkpO2s9aC5hO2lmKGsuYy5sZW5ndGg9PTApe2NvbnRpbnVlfWQ9bnVsbDtlPW51bGw7Zj1udWxsO2c9bnVsbDtmb3Ioaj0wO2o8ay5jLmxlbmd0aDtqKyspe2Q9KHRDYihqLGsuYy5sZW5ndGgpLEJEKGsuY1tqXSwxMCkpO2U9ZC5rO2lmKGU9PShqMGIoKSxnMGIpJiZnPT1nMGIpe2w9UzZiKGQsZik7aWYobC5hKXtWNmIoZCxmLGwuYixsLmMpO3RDYihqLGsuYy5sZW5ndGgpO2NDYihrLmMsaiwxKTstLWo7ZD1mO2U9Z319Zj1kO2c9ZX19UWRkKGMpfVxuZnVuY3Rpb24gV0ZjKGEsYil7dmFyIGMsZCxlO2Q9Q3ViKGEuZCwxKSE9MDshQ2NiKEREKHZOYihiLmosKHd0YygpLEpzYykpKSkmJiFDY2IoREQodk5iKGIuaixtdGMpKSl8fFBEKHZOYihiLmosKE55YygpLHl3YykpKT09PVBEKCh0QWMoKSxyQWMpKT9iLmMuVGYoYi5lLGQpOihkPUNjYihERCh2TmIoYi5qLEpzYykpKSk7ZEdjKGEsYixkLHRydWUpO0NjYihERCh2TmIoYi5qLG10YykpKSYmeU5iKGIuaixtdGMsKEJjYigpLGZhbHNlKSk7aWYoQ2NiKEREKHZOYihiLmosSnNjKSkpKXt5TmIoYi5qLEpzYywoQmNiKCksZmFsc2UpKTt5TmIoYi5qLG10Yyx0cnVlKX1jPU9GYyhhLGIpO2RveyRGYyhhKTtpZihjPT0wKXtyZXR1cm4gMH1kPSFkO2U9YztkR2MoYSxiLGQsZmFsc2UpO2M9T0ZjKGEsYil9d2hpbGUoZT5jKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFhGYyhhLGIpe3ZhciBjLGQsZTtkPUN1YihhLmQsMSkhPTA7IUNjYihERCh2TmIoYi5qLCh3dGMoKSxKc2MpKSkpJiYhQ2NiKEREKHZOYihiLmosbXRjKSkpfHxQRCh2TmIoYi5qLChOeWMoKSx5d2MpKSk9PT1QRCgodEFjKCksckFjKSk/Yi5jLlRmKGIuZSxkKTooZD1DY2IoREQodk5iKGIuaixKc2MpKSkpO2RHYyhhLGIsZCx0cnVlKTtDY2IoREQodk5iKGIuaixtdGMpKSkmJnlOYihiLmosbXRjLChCY2IoKSxmYWxzZSkpO2lmKENjYihERCh2TmIoYi5qLEpzYykpKSl7eU5iKGIuaixKc2MsKEJjYigpLGZhbHNlKSk7eU5iKGIuaixtdGMsdHJ1ZSl9Yz1ORmMoYSxiKTtkb3skRmMoYSk7aWYoYz09MCl7cmV0dXJuIDB9ZD0hZDtlPWM7ZEdjKGEsYixkLGZhbHNlKTtjPU5GYyhhLGIpfXdoaWxlKGU+Yyk7cmV0dXJuIGV9XG5mdW5jdGlvbiB1TmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbztpZihiPT1jKXtyZXR1cm4gdHJ1ZX1lbHNle2I9dk5kKGEsYik7Yz12TmQoYSxjKTtkPUpRZChiKTtpZihkKXtrPUpRZChjKTtpZihrIT1kKXtpZighayl7cmV0dXJuIGZhbHNlfWVsc2V7aT1kLkRqKCk7bz1rLkRqKCk7cmV0dXJuIGk9PW8mJmkhPW51bGx9fWVsc2V7Zz0oIWIuZCYmKGIuZD1uZXcgeE1kKGo1LGIsMSkpLGIuZCk7Zj1nLmk7bT0oIWMuZCYmKGMuZD1uZXcgeE1kKGo1LGMsMSkpLGMuZCk7aWYoZj09bS5pKXtmb3Ioaj0wO2o8ZjsrK2ope2U9QkQocXVkKGcsaiksODcpO2w9QkQocXVkKG0saiksODcpO2lmKCF1TmQoYSxlLGwpKXtyZXR1cm4gZmFsc2V9fX1yZXR1cm4gdHJ1ZX19ZWxzZXtoPWIuZTtuPWMuZTtyZXR1cm4gaD09bn19fVxuZnVuY3Rpb24gWDJkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGw7aWYoVDZkKGEuZSxiKSl7bD1TNmQoYS5lLlRnKCksYik7Zj1CRChhLmcsMTE5KTtrPW51bGw7aT0tMTtoPS0xO2U9MDtmb3Ioaj0wO2o8YS5pOysrail7Zz1mW2pdO2lmKGwucmwoZy5haygpKSl7ZT09YyYmKGk9aik7aWYoZT09ZCl7aD1qO2s9Zy5kZCgpfSsrZX19aWYoaT09LTEpe3Rocm93IHZiYihuZXcgcWNiKGx1ZStjK211ZStlKSl9aWYoaD09LTEpe3Rocm93IHZiYihuZXcgcWNiKG51ZStkK211ZStlKSl9V3hkKGEsaSxoKTtvaWQoYS5lKSYmR0xkKGEsSDJkKGEsNyxiLG1lYihkKSxrLGMsdHJ1ZSkpO3JldHVybiBrfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoJ1RoZSBmZWF0dXJlIG11c3QgYmUgbWFueS12YWx1ZWQgdG8gc3VwcG9ydCBtb3ZlJykpfX1cbmZ1bmN0aW9uIGJfYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpO2k9bmV3IGc3YyhiLm4pO2kuYSs9Yi5vLmEvMjtpLmIrPWIuby5iLzI7aD1FZGIoRUQodk5iKGIsKE55YygpLFV4YykpKSk7Zj1hLmY7Zz1hLmQ7ZT1hLmM7c3dpdGNoKEJEKHZOYihiLCh3dGMoKSxIc2MpKSw2MSkuZyl7Y2FzZSAxOmkuYSs9Zy5iK2UuYS1jLzI7aS5iPS1kLWg7Yi5uLmI9LShnLmQraCtlLmIpO2JyZWFrO2Nhc2UgMjppLmE9Zi5hK2cuYitnLmMraDtpLmIrPWcuZCtlLmItZC8yO2Iubi5hPWYuYStnLmMraC1lLmE7YnJlYWs7Y2FzZSAzOmkuYSs9Zy5iK2UuYS1jLzI7aS5iPWYuYitnLmQrZy5hK2g7Yi5uLmI9Zi5iK2cuYStoLWUuYjticmVhaztjYXNlIDQ6aS5hPS1jLWg7aS5iKz1nLmQrZS5iLWQvMjtiLm4uYT0tKGcuYitoK2UuYSk7fXJldHVybiBpfVxuZnVuY3Rpb24gUDFiKGEpe3ZhciBiLGMsZCxlLGYsZztkPW5ldyBYWmI7dE5iKGQsYSk7UEQodk5iKGQsKE55YygpLEx3YykpKT09PVBEKChlYWQoKSxjYWQpKSYmeU5iKGQsTHdjLGFfYihkKSk7aWYodk5iKGQsKGc2YygpLGY2YykpPT1udWxsKXtnPUJEKG02ZChhKSwxNjApO3lOYihkLGY2YyxSRChnLldlKGY2YykpKX15TmIoZCwod3RjKCksJHNjKSxhKTt5TmIoZCxLc2MsKGI9QkQoZ2RiKFBXKSw5KSxuZXcgeHFiKGIsQkQoX0JiKGIsYi5sZW5ndGgpLDkpLDApKSk7ZT1PR2IoKCFYb2QoYSk/bnVsbDooUGdkKCksbmV3IGJoZChYb2QoYSkpKSxQZ2QoKSxuZXcgaGhkKCFYb2QoYSk/bnVsbDpuZXcgYmhkKFhvZChhKSksYSkpLGJhZCk7Zj1CRCh2TmIoZCxLeGMpLDExNik7Yz1kLmQ7dF9iKGMsZik7dF9iKGMsZSk7cmV0dXJuIGR9XG5mdW5jdGlvbiB5YmMoYSxiLGMpe3ZhciBkLGU7ZD1iLmMuaTtlPWMuZC5pO2lmKGQuaz09KGowYigpLGcwYikpe3lOYihhLCh3dGMoKSxWc2MpLEJEKHZOYihkLFZzYyksMTEpKTt5TmIoYSxXc2MsQkQodk5iKGQsV3NjKSwxMSkpO3lOYihhLFVzYyxERCh2TmIoZCxVc2MpKSl9ZWxzZSBpZihkLms9PWYwYil7eU5iKGEsKHd0YygpLFZzYyksQkQodk5iKGQsVnNjKSwxMSkpO3lOYihhLFdzYyxCRCh2TmIoZCxXc2MpLDExKSk7eU5iKGEsVXNjLChCY2IoKSx0cnVlKSl9ZWxzZSBpZihlLms9PWYwYil7eU5iKGEsKHd0YygpLFZzYyksQkQodk5iKGUsVnNjKSwxMSkpO3lOYihhLFdzYyxCRCh2TmIoZSxXc2MpLDExKSk7eU5iKGEsVXNjLChCY2IoKSx0cnVlKSl9ZWxzZXt5TmIoYSwod3RjKCksVnNjKSxiLmMpO3lOYihhLFdzYyxjLmQpfX1cbmZ1bmN0aW9uIEZHYihhKXt2YXIgYixjLGQsZSxmLGcsaDthLm89bmV3IGprYjtkPW5ldyBQc2I7Zm9yKGc9bmV3IG9sYihhLmUuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEyMSk7TEZiKGYpLmMubGVuZ3RoPT0xJiYoR3NiKGQsZixkLmMuYixkLmMpLHRydWUpfXdoaWxlKGQuYiE9MCl7Zj1CRChkLmI9PTA/bnVsbDooc0NiKGQuYiE9MCksTnNiKGQsZC5hLmEpKSwxMjEpO2lmKExGYihmKS5jLmxlbmd0aD09MCl7Y29udGludWV9Yj1CRChJa2IoTEZiKGYpLDApLDIxMyk7Yz1mLmcuYS5jLmxlbmd0aD4wO2g9eEZiKGIsZik7Yz9PRmIoaC5iLGIpOk9GYihoLmcsYik7TEZiKGgpLmMubGVuZ3RoPT0xJiYoR3NiKGQsaCxkLmMuYixkLmMpLHRydWUpO2U9bmV3IHZnZChmLGIpO1dqYihhLm8sZSk7TGtiKGEuZS5hLGYpfX1cbmZ1bmN0aW9uIF9OYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2Q9JHduZC5NYXRoLmFicyhENmMoYS5iKS5hLUQ2YyhiLmIpLmEpO2g9JHduZC5NYXRoLmFicyhENmMoYS5iKS5iLUQ2YyhiLmIpLmIpO2U9MDtpPTA7Yz0xO2c9MTtpZihkPmEuYi5iLzIrYi5iLmIvMil7ZT0kd25kLk1hdGgubWluKCR3bmQuTWF0aC5hYnMoYS5iLmMtKGIuYi5jK2IuYi5iKSksJHduZC5NYXRoLmFicyhhLmIuYythLmIuYi1iLmIuYykpO2M9MS1lL2R9aWYoaD5hLmIuYS8yK2IuYi5hLzIpe2k9JHduZC5NYXRoLm1pbigkd25kLk1hdGguYWJzKGEuYi5kLShiLmIuZCtiLmIuYSkpLCR3bmQuTWF0aC5hYnMoYS5iLmQrYS5iLmEtYi5iLmQpKTtnPTEtaS9ofWY9JHduZC5NYXRoLm1pbihjLGcpO3JldHVybiAoMS1mKSokd25kLk1hdGguc3FydChkKmQraCpoKX1cbmZ1bmN0aW9uIGxRYyhhKXt2YXIgYixjLGQsZTtuUWMoYSxhLmUsYS5mLChGUWMoKSxEUWMpLHRydWUsYS5jLGEuaSk7blFjKGEsYS5lLGEuZixEUWMsZmFsc2UsYS5jLGEuaSk7blFjKGEsYS5lLGEuZixFUWMsdHJ1ZSxhLmMsYS5pKTtuUWMoYSxhLmUsYS5mLEVRYyxmYWxzZSxhLmMsYS5pKTttUWMoYSxhLmMsYS5lLGEuZixhLmkpO2Q9bmV3IEJpYihhLmksMCk7d2hpbGUoZC5iPGQuZC5nYygpKXtiPShzQ2IoZC5iPGQuZC5nYygpKSxCRChkLmQuWGIoZC5jPWQuYisrKSwxMjgpKTtlPW5ldyBCaWIoYS5pLGQuYik7d2hpbGUoZS5iPGUuZC5nYygpKXtjPShzQ2IoZS5iPGUuZC5nYygpKSxCRChlLmQuWGIoZS5jPWUuYisrKSwxMjgpKTtrUWMoYixjKX19d1FjKGEuaSxCRCh2TmIoYS5kLCh3dGMoKSxqdGMpKSwyMzApKTt6UWMoYS5pKX1cbmZ1bmN0aW9uIGZLZChhLGIpe3ZhciBjLGQ7aWYoYiE9bnVsbCl7ZD1kS2QoYSk7aWYoZCl7aWYoKGQuaSYxKSE9MCl7aWYoZD09c2JiKXtyZXR1cm4gS0QoYil9ZWxzZSBpZihkPT1XRCl7cmV0dXJuIEpEKGIsMTkpfWVsc2UgaWYoZD09VkQpe3JldHVybiBKRChiLDE1NSl9ZWxzZSBpZihkPT1TRCl7cmV0dXJuIEpEKGIsMjE3KX1lbHNlIGlmKGQ9PVREKXtyZXR1cm4gSkQoYiwxNzIpfWVsc2UgaWYoZD09VUQpe3JldHVybiBMRChiKX1lbHNlIGlmKGQ9PXJiYil7cmV0dXJuIEpEKGIsMTg0KX1lbHNlIGlmKGQ9PVhEKXtyZXR1cm4gSkQoYiwxNjIpfX1lbHNle3JldHVybiBwRWQoKSxjPUJEKE9oYihvRWQsZCksNTUpLCFjfHxjLndqKGIpfX1lbHNlIGlmKEpEKGIsNTYpKXtyZXR1cm4gYS51ayhCRChiLDU2KSl9fXJldHVybiBmYWxzZX1cbmZ1bmN0aW9uIGFkZSgpe2FkZT1jY2I7dmFyIGEsYixjLGQsZSxmLGcsaCxpOyRjZT1LQyhTRCx3dGUsMjUsMjU1LDE1LDEpO19jZT1LQyhURCwkaWUsMjUsNjQsMTUsMSk7Zm9yKGI9MDtiPDI1NTtiKyspeyRjZVtiXT0tMX1mb3IoYz05MDtjPj02NTtjLS0peyRjZVtjXT1jLTY1PDwyND4+MjR9Zm9yKGQ9MTIyO2Q+PTk3O2QtLSl7JGNlW2RdPWQtOTcrMjY8PDI0Pj4yNH1mb3IoZT01NztlPj00ODtlLS0peyRjZVtlXT1lLTQ4KzUyPDwyND4+MjR9JGNlWzQzXT02MjskY2VbNDddPTYzO2ZvcihmPTA7Zjw9MjU7ZisrKV9jZVtmXT02NStmJmFqZTtmb3IoZz0yNixpPTA7Zzw9NTE7KytnLGkrKylfY2VbZ109OTcraSZhamU7Zm9yKGE9NTIsaD0wO2E8PTYxOysrYSxoKyspX2NlW2FdPTQ4K2gmYWplO19jZVs2Ml09NDM7X2NlWzYzXT00N31cbmZ1bmN0aW9uIEZYYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbjtpZihhLmRjKCkpe3JldHVybiBuZXcgZDdjfWo9MDtsPTA7Zm9yKGU9YS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDM3KTtmPWQuZjtqPSR3bmQuTWF0aC5tYXgoaixmLmEpO2wrPWYuYSpmLmJ9aj0kd25kLk1hdGgubWF4KGosJHduZC5NYXRoLnNxcnQobCkqRWRiKEVEKHZOYihCRChhLktjKCkuUGIoKSwzNyksKE55YygpLG93YykpKSkpO209MDtuPTA7aT0wO2M9Yjtmb3IoaD1hLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMzcpO2s9Zy5mO2lmKG0ray5hPmope209MDtuKz1pK2I7aT0wfXVYYihnLG0sbik7Yz0kd25kLk1hdGgubWF4KGMsbStrLmEpO2k9JHduZC5NYXRoLm1heChpLGsuYik7bSs9ay5hK2J9cmV0dXJuIG5ldyBmN2MoYytiLG4raStiKX1cbmZ1bmN0aW9uIG1RYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsO2ZvcihnPW5ldyBvbGIoYik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDE3KTtpPWYuYztpZihjLmEuX2IoaSkpe2o9KEZRYygpLERRYyl9ZWxzZSBpZihkLmEuX2IoaSkpe2o9KEZRYygpLEVRYyl9ZWxzZXt0aHJvdyB2YmIobmV3IFdkYignU291cmNlIHBvcnQgbXVzdCBiZSBpbiBvbmUgb2YgdGhlIHBvcnQgc2V0cy4nKSl9az1mLmQ7aWYoYy5hLl9iKGspKXtsPShGUWMoKSxEUWMpfWVsc2UgaWYoZC5hLl9iKGspKXtsPShGUWMoKSxFUWMpfWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoJ1RhcmdldCBwb3J0IG11c3QgYmUgaW4gb25lIG9mIHRoZSBwb3J0IHNldHMuJykpfWg9bmV3IFlRYyhmLGosbCk7UmhiKGEuYixmLGgpO2UuY1tlLmMubGVuZ3RoXT1ofX1cbmZ1bmN0aW9uIGxmZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2lmKCFtcGQoYSkpe3Rocm93IHZiYihuZXcgWmRiKFNzZSkpfWQ9bXBkKGEpO2Y9ZC5nO2U9ZC5mO2lmKGY8PTAmJmU8PTApe3JldHVybiBVY2QoKSxTY2R9aD1hLmk7aT1hLmo7c3dpdGNoKGIuZyl7Y2FzZSAyOmNhc2UgMTppZihoPDApe3JldHVybiBVY2QoKSxUY2R9ZWxzZSBpZihoK2EuZz5mKXtyZXR1cm4gVWNkKCksemNkfWJyZWFrO2Nhc2UgNDpjYXNlIDM6aWYoaTwwKXtyZXR1cm4gVWNkKCksQWNkfWVsc2UgaWYoaSthLmY+ZSl7cmV0dXJuIFVjZCgpLFJjZH19Zz0oaCthLmcvMikvZjtjPShpK2EuZi8yKS9lO3JldHVybiBnK2M8PTEmJmctYzw9MD8oVWNkKCksVGNkKTpnK2M+PTEmJmctYz49MD8oVWNkKCksemNkKTpjPDAuNT8oVWNkKCksQWNkKTooVWNkKCksUmNkKX1cbmZ1bmN0aW9uIHZoYihhLGIsYyxkLGUpe3ZhciBmLGc7Zj13YmIoeGJiKGJbMF0sWWplKSx4YmIoZFswXSxZamUpKTthWzBdPVRiYihmKTtmPU9iYihmLDMyKTtpZihjPj1lKXtmb3IoZz0xO2c8ZTtnKyspe2Y9d2JiKGYsd2JiKHhiYihiW2ddLFlqZSkseGJiKGRbZ10sWWplKSkpO2FbZ109VGJiKGYpO2Y9T2JiKGYsMzIpfWZvcig7ZzxjO2crKyl7Zj13YmIoZix4YmIoYltnXSxZamUpKTthW2ddPVRiYihmKTtmPU9iYihmLDMyKX19ZWxzZXtmb3IoZz0xO2c8YztnKyspe2Y9d2JiKGYsd2JiKHhiYihiW2ddLFlqZSkseGJiKGRbZ10sWWplKSkpO2FbZ109VGJiKGYpO2Y9T2JiKGYsMzIpfWZvcig7ZzxlO2crKyl7Zj13YmIoZix4YmIoZFtnXSxZamUpKTthW2ddPVRiYihmKTtmPU9iYihmLDMyKX19eWJiKGYsMCkhPTAmJihhW2ddPVRiYihmKSl9XG5mdW5jdGlvbiBfZmUoYSl7d2ZlKCk7dmFyIGIsYyxkLGUsZixnO2lmKGEuZSE9NCYmYS5lIT01KXRocm93IHZiYihuZXcgV2RiKCdUb2tlbiNjb21wbGVtZW50UmFuZ2VzKCk6IG11c3QgYmUgUkFOR0U6ICcrYS5lKSk7Zj1hO1lmZShmKTtWZmUoZik7ZD1mLmIubGVuZ3RoKzI7Zi5iWzBdPT0wJiYoZC09Mik7Yz1mLmJbZi5iLmxlbmd0aC0xXTtjPT1seGUmJihkLT0yKTtlPSgrK3ZmZSxuZXcgJGZlKDQpKTtlLmI9S0MoV0Qsb2plLDI1LGQsMTUsMSk7Zz0wO2lmKGYuYlswXT4wKXtlLmJbZysrXT0wO2UuYltnKytdPWYuYlswXS0xfWZvcihiPTE7YjxmLmIubGVuZ3RoLTI7Yis9Mil7ZS5iW2crK109Zi5iW2JdKzE7ZS5iW2crK109Zi5iW2IrMV0tMX1pZihjIT1seGUpe2UuYltnKytdPWMrMTtlLmJbZ109bHhlfWUuYT10cnVlO3JldHVybiBlfVxuZnVuY3Rpb24gUHhkKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrO2Q9Yy5nYygpO2lmKGQ9PTApe3JldHVybiBmYWxzZX1lbHNle2lmKGEuZWooKSl7aj1hLmZqKCk7aXVkKGEsYixjKTtnPWQ9PTE/YS5aaSgzLG51bGwsYy5LYygpLlBiKCksYixqKTphLlppKDUsbnVsbCxjLGIsaik7aWYoYS5iaigpKXtoPWQ8MTAwP251bGw6bmV3IEl4ZChkKTtmPWIrZDtmb3IoZT1iO2U8ZjsrK2Upe2s9YS5nW2VdO2g9YS5jaihrLGgpO2g9YS5qaihrLGgpfWlmKCFoKXthLiRpKGcpfWVsc2V7aC5FaShnKTtoLkZpKCl9fWVsc2V7YS4kaShnKX19ZWxzZXtpdWQoYSxiLGMpO2lmKGEuYmooKSl7aD1kPDEwMD9udWxsOm5ldyBJeGQoZCk7Zj1iK2Q7Zm9yKGU9YjtlPGY7KytlKXtpPWEuZ1tlXTtoPWEuY2ooaSxoKX0hIWgmJmguRmkoKX19cmV0dXJuIHRydWV9fVxuZnVuY3Rpb24gWU5jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7Zm9yKGc9bmV3IG9sYihhLmspO2cuYTxnLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihnKSwxMjkpO2lmKCFkfHxlLmM9PShIT2MoKSxGT2MpKXtpPWUuYjtpZihpLmc8MCYmZS5kPjApe3BPYyhpLGkuZC1lLmQpO2UuYz09KEhPYygpLEZPYykmJm5PYyhpLGkuYS1lLmQpO2kuZDw9MCYmaS5pPjAmJihHc2IoYixpLGIuYy5iLGIuYyksdHJ1ZSl9fX1mb3IoZj1uZXcgb2xiKGEuZik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEyOSk7aWYoIWR8fGUuYz09KEhPYygpLEZPYykpe2g9ZS5hO2lmKGguZzwwJiZlLmQ+MCl7cU9jKGgsaC5pLWUuZCk7ZS5jPT0oSE9jKCksRk9jKSYmb09jKGgsaC5iLWUuZCk7aC5pPD0wJiZoLmQ+MCYmKEdzYihjLGgsYy5jLmIsYy5jKSx0cnVlKX19fX1cbmZ1bmN0aW9uIGdTYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztPZGQoYywnUHJvY2Vzc29yIGNvbXB1dGUgZmFub3V0JywxKTtVaGIoYS5iKTtVaGIoYS5hKTtoPW51bGw7Zj1Kc2IoYi5iLDApO3doaWxlKCFoJiZmLmIhPWYuZC5jKXtqPUJEKFhzYihmKSw4Nik7Q2NiKEREKHZOYihqLChtVGMoKSxqVGMpKSkpJiYoaD1qKX1pPW5ldyBQc2I7R3NiKGksaCxpLmMuYixpLmMpO2ZTYyhhLGkpO2ZvcihrPUpzYihiLmIsMCk7ay5iIT1rLmQuYzspe2o9QkQoWHNiKGspLDg2KTtnPUdEKHZOYihqLChtVGMoKSwkU2MpKSk7ZT1QaGIoYS5iLGcpIT1udWxsP0JEKFBoYihhLmIsZyksMTkpLmE6MDt5TmIoaixaU2MsbWViKGUpKTtkPTErKFBoYihhLmEsZykhPW51bGw/QkQoUGhiKGEuYSxnKSwxOSkuYTowKTt5TmIoaixYU2MsbWViKGQpKX1RZGQoYyl9XG5mdW5jdGlvbiBXUGMoYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbzttPVZQYyhhLGMpO2ZvcihpPTA7aTxiO2krKyl7QWliKGUsYyk7bj1uZXcgUmtiO289KHNDYihkLmI8ZC5kLmdjKCkpLEJEKGQuZC5YYihkLmM9ZC5iKyspLDQwNykpO2ZvcihrPW0raTtrPGEuYjtrKyspe2g9bztvPShzQ2IoZC5iPGQuZC5nYygpKSxCRChkLmQuWGIoZC5jPWQuYisrKSw0MDcpKTtFa2IobixuZXcgYVFjKGgsbyxjKSl9Zm9yKGw9bStpO2w8YS5iO2wrKyl7c0NiKGQuYj4wKTtkLmEuWGIoZC5jPS0tZC5iKTtsPm0raSYmdWliKGQpfWZvcihnPW5ldyBvbGIobik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDQwNyk7QWliKGQsZil9aWYoaTxiLTEpe2ZvcihqPW0raTtqPGEuYjtqKyspe3NDYihkLmI+MCk7ZC5hLlhiKGQuYz0tLWQuYil9fX19XG5mdW5jdGlvbiBKZmUoKXt3ZmUoKTt2YXIgYSxiLGMsZCxlLGY7aWYoZ2ZlKXJldHVybiBnZmU7YT0oKyt2ZmUsbmV3ICRmZSg0KSk7WGZlKGEsS2ZlKHZ4ZSx0cnVlKSk7WmZlKGEsS2ZlKCdNJyx0cnVlKSk7WmZlKGEsS2ZlKCdDJyx0cnVlKSk7Zj0oKyt2ZmUsbmV3ICRmZSg0KSk7Zm9yKGQ9MDtkPDExO2QrKyl7VWZlKGYsZCxkKX1iPSgrK3ZmZSxuZXcgJGZlKDQpKTtYZmUoYixLZmUoJ00nLHRydWUpKTtVZmUoYiw0NDQ4LDQ2MDcpO1VmZShiLDY1NDM4LDY1NDM5KTtlPSgrK3ZmZSxuZXcgTGdlKDIpKTtLZ2UoZSxhKTtLZ2UoZSxmZmUpO2M9KCsrdmZlLG5ldyBMZ2UoMikpO2MuJGwoQmZlKGYsS2ZlKCdMJyx0cnVlKSkpO2MuJGwoYik7Yz0oKyt2ZmUsbmV3IGxnZSgzLGMpKTtjPSgrK3ZmZSxuZXcgcmdlKGUsYykpO2dmZT1jO3JldHVybiBnZmV9XG5mdW5jdGlvbiBTM2MoYSl7dmFyIGIsYztiPUdEKGhrZChhLChZOWMoKSxvOGMpKSk7aWYoVDNjKGIsYSkpe3JldHVybn1pZighaWtkKGEsRjljKSYmKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkuaSE9MHx8Q2NiKEREKGhrZChhLE04YykpKSkpe2lmKGI9PW51bGx8fHVmYihiKS5sZW5ndGg9PTApe2lmKCFUM2Moc25lLGEpKXtjPVFmYihRZmIobmV3IFdmYignVW5hYmxlIHRvIGxvYWQgZGVmYXVsdCBsYXlvdXQgYWxnb3JpdGhtICcpLHNuZSksJyBmb3IgdW5jb25maWd1cmVkIG5vZGUgJyk7eWZkKGEsYyk7dGhyb3cgdmJiKG5ldyB5MmMoYy5hKSl9fWVsc2V7Yz1RZmIoUWZiKG5ldyBXZmIoXCJMYXlvdXQgYWxnb3JpdGhtICdcIiksYiksXCInIG5vdCBmb3VuZCBmb3IgXCIpO3lmZChhLGMpO3Rocm93IHZiYihuZXcgeTJjKGMuYSkpfX19XG5mdW5jdGlvbiBoSWIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG47Yz1hLmk7Yj1hLm47aWYoYS5iPT0wKXtuPWMuYytiLmI7bT1jLmItYi5iLWIuYztmb3IoZz1hLmEsaT0wLGs9Zy5sZW5ndGg7aTxrOysraSl7ZT1nW2ldO21IYihlLG4sbSl9fWVsc2V7ZD1rSWIoYSxmYWxzZSk7bUhiKGEuYVswXSxjLmMrYi5iLGRbMF0pO21IYihhLmFbMl0sYy5jK2MuYi1iLmMtZFsyXSxkWzJdKTtsPWMuYi1iLmItYi5jO2lmKGRbMF0+MCl7bC09ZFswXSthLmM7ZFswXSs9YS5jfWRbMl0+MCYmKGwtPWRbMl0rYS5jKTtkWzFdPSR3bmQuTWF0aC5tYXgoZFsxXSxsKTttSGIoYS5hWzFdLGMuYytiLmIrZFswXS0oZFsxXS1sKS8yLGRbMV0pfWZvcihmPWEuYSxoPTAsaj1mLmxlbmd0aDtoPGo7KytoKXtlPWZbaF07SkQoZSwzMjYpJiZCRChlLDMyNikuVGUoKX19XG5mdW5jdGlvbiBLTWMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDtsPW5ldyBKTWM7bC5kPTA7Zm9yKGc9bmV3IG9sYihhLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7bC5kKz1mLmEuYy5sZW5ndGh9ZD0wO2U9MDtsLmE9S0MoV0Qsb2plLDI1LGEuYi5jLmxlbmd0aCwxNSwxKTtqPTA7az0wO2wuZT1LQyhXRCxvamUsMjUsbC5kLDE1LDEpO2ZvcihjPW5ldyBvbGIoYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMjkpO2IucD1kKys7bC5hW2IucF09ZSsrO2s9MDtmb3IoaT1uZXcgb2xiKGIuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtoLnA9aisrO2wuZVtoLnBdPWsrK319bC5jPW5ldyBPTWMobCk7bC5iPVB1KGwuZCk7TE1jKGwsYSk7bC5mPVB1KGwuZCk7TU1jKGwsYSk7cmV0dXJuIGx9XG5mdW5jdGlvbiBHWmMoYSxiKXt2YXIgYyxkLGUsZjtmPUJEKElrYihhLm4sYS5uLmMubGVuZ3RoLTEpLDIxMSkuZDthLnA9JHduZC5NYXRoLm1pbihhLnAsYi5nKTthLnI9JHduZC5NYXRoLm1heChhLnIsZik7YS5nPSR3bmQuTWF0aC5tYXgoYS5nLGIuZysoYS5iLmMubGVuZ3RoPT0xPzA6YS5pKSk7YS5vPSR3bmQuTWF0aC5taW4oYS5vLGIuZik7YS5lKz1iLmYrKGEuYi5jLmxlbmd0aD09MT8wOmEuaSk7YS5mPSR3bmQuTWF0aC5tYXgoYS5mLGIuZik7ZT1hLm4uYy5sZW5ndGg+MD8oYS5uLmMubGVuZ3RoLTEpKmEuaTowO2ZvcihkPW5ldyBvbGIoYS5uKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjExKTtlKz1jLmF9YS5kPWU7YS5hPWEuZS9hLmIuYy5sZW5ndGgtYS5pKigoYS5iLmMubGVuZ3RoLTEpL2EuYi5jLmxlbmd0aCk7dSRjKGEuail9XG5mdW5jdGlvbiBMUWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtrPUREKHZOYihiLCh3U2IoKSxzU2IpKSk7aWYoaz09bnVsbHx8KHVDYihrKSxrKSl7bD1LQyhzYmIsZGxlLDI1LGIuZS5jLmxlbmd0aCwxNiwxKTtnPUhRYihiKTtlPW5ldyBQc2I7Zm9yKGo9bmV3IG9sYihiLmUpO2ouYTxqLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihqKSwxNDQpO2M9SVFiKGEsaCxudWxsLG51bGwsbCxnKTtpZihjKXt0TmIoYyxiKTtHc2IoZSxjLGUuYy5iLGUuYyl9fWlmKGUuYj4xKXtmb3IoZD1Kc2IoZSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksMjMxKTtmPTA7Zm9yKGk9bmV3IG9sYihjLmUpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxNDQpO2guYj1mKyt9fX1yZXR1cm4gZX1yZXR1cm4gT3UoT0MoR0MoJE8sMSksZm1lLDIzMSwwLFtiXSkpfVxuZnVuY3Rpb24gVEtkKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKCFhLmcpe2g9bmV3IHpOZDtiPUtLZDtnPWIuYS56YyhhLGIpO2lmKGc9PW51bGwpe2ZvcihkPW5ldyBGeWQoX0tkKGEpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksMjYpO3l0ZChoLFRLZChjKSl9Yi5hLkJjKGEpIT1udWxsO2IuYS5nYygpPT0wJiZ1bmRlZmluZWR9ZT1oLmk7Zm9yKGY9KCFhLnMmJihhLnM9bmV3IGNVZCh0NSxhLDIxLDE3KSksbmV3IEZ5ZChhLnMpKTtmLmUhPWYuaS5nYygpOysrZSl7YkpkKEJEKER5ZChmKSw0NDkpLGUpfXl0ZChoLCghYS5zJiYoYS5zPW5ldyBjVWQodDUsYSwyMSwxNykpLGEucykpO3Z1ZChoKTthLmc9bmV3IHJOZChhLGgpO2EuaT1CRChoLmcsMjQ3KTthLmk9PW51bGwmJihhLmk9TUtkKTthLnA9bnVsbDskS2QoYSkuYiY9LTV9cmV0dXJuIGEuZ31cbmZ1bmN0aW9uIGlJYihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2Q9YS5pO2M9YS5uO2lmKGEuYj09MCl7Yj1qSWIoYSxmYWxzZSk7bkhiKGEuYVswXSxkLmQrYy5kLGJbMF0pO25IYihhLmFbMl0sZC5kK2QuYS1jLmEtYlsyXSxiWzJdKTttPWQuYS1jLmQtYy5hO2w9bTtpZihiWzBdPjApe2JbMF0rPWEuYztsLT1iWzBdfWJbMl0+MCYmKGwtPWJbMl0rYS5jKTtiWzFdPSR3bmQuTWF0aC5tYXgoYlsxXSxsKTtuSGIoYS5hWzFdLGQuZCtjLmQrYlswXS0oYlsxXS1sKS8yLGJbMV0pfWVsc2V7bz1kLmQrYy5kO249ZC5hLWMuZC1jLmE7Zm9yKGc9YS5hLGk9MCxrPWcubGVuZ3RoO2k8azsrK2kpe2U9Z1tpXTtuSGIoZSxvLG4pfX1mb3IoZj1hLmEsaD0wLGo9Zi5sZW5ndGg7aDxqOysraCl7ZT1mW2hdO0pEKGUsMzI2KSYmQkQoZSwzMjYpLlVlKCl9fVxuZnVuY3Rpb24gYm9jKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrO2s9S0MoV0Qsb2plLDI1LGEuYi5jLmxlbmd0aCsxLDE1LDEpO2o9bmV3IFRxYjtkPTA7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyOSk7a1tkKytdPWouYS5nYygpO2ZvcihpPW5ldyBvbGIoZS5hKTtpLmE8aS5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaSksMTApO2ZvcihjPW5ldyBTcih1cihVX2IoZykuYS5LYygpLG5ldyBTcSkpO1FyKGMpOyl7Yj1CRChScihjKSwxNyk7ai5hLnpjKGIsail9fWZvcihoPW5ldyBvbGIoZS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTApO2ZvcihjPW5ldyBTcih1cihSX2IoZykuYS5LYygpLG5ldyBTcSkpO1FyKGMpOyl7Yj1CRChScihjKSwxNyk7ai5hLkJjKGIpIT1udWxsfX19cmV0dXJuIGt9XG5mdW5jdGlvbiBGMmQoYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtpPVM2ZChhLmUuVGcoKSxiKTtlPUJEKGEuZywxMTkpO1E2ZCgpO2lmKEJEKGIsNjYpLk9qKCkpe2ZvcihnPTA7ZzxhLmk7KytnKXtmPWVbZ107aWYoaS5ybChmLmFrKCkpJiZwYihmLGMpKXtyZXR1cm4gdHJ1ZX19fWVsc2UgaWYoYyE9bnVsbCl7Zm9yKGg9MDtoPGEuaTsrK2gpe2Y9ZVtoXTtpZihpLnJsKGYuYWsoKSkmJnBiKGMsZi5kZCgpKSl7cmV0dXJuIHRydWV9fWlmKGQpe2ZvcihnPTA7ZzxhLmk7KytnKXtmPWVbZ107aWYoaS5ybChmLmFrKCkpJiZQRChjKT09PVBEKGEzZChhLEJEKGYuZGQoKSw1NikpKSl7cmV0dXJuIHRydWV9fX19ZWxzZXtmb3IoZz0wO2c8YS5pOysrZyl7Zj1lW2ddO2lmKGkucmwoZi5haygpKSYmZi5kZCgpPT1udWxsKXtyZXR1cm4gZmFsc2V9fX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBlM2QoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqO2o9UzZkKGEuZS5UZygpLGIpO2c9QkQoYS5nLDExOSk7aWYoVDZkKGEuZSxiKSl7aWYoYi5oaSgpKXtmPU0yZChhLGIsZCxKRChiLDk5KSYmKEJEKGIsMTgpLkJiJlRqZSkhPTApO2lmKGY+PTAmJmYhPWMpe3Rocm93IHZiYihuZXcgV2RiKGt1ZSkpfX1lPTA7Zm9yKGk9MDtpPGEuaTsrK2kpe2g9Z1tpXTtpZihqLnJsKGguYWsoKSkpe2lmKGU9PWMpe3JldHVybiBCRChHdGQoYSxpLChRNmQoKSxCRChiLDY2KS5PaigpP0JEKGQsNzIpOlI2ZChiLGQpKSksNzIpfSsrZX19dGhyb3cgdmJiKG5ldyBxY2IoZ3ZlK2MrbXVlK2UpKX1lbHNle2ZvcihpPTA7aTxhLmk7KytpKXtoPWdbaV07aWYoai5ybChoLmFrKCkpKXtyZXR1cm4gUTZkKCksQkQoYiw2NikuT2ooKT9oOmguZGQoKX19cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24gT05iKGEsYixjLGQpe3ZhciBlLGYsZyxoO2g9Yztmb3IoZz1uZXcgb2xiKGIuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDIyMSk7ZT1CRChmLmIsNjUpO2lmKEp5KGEuYi5jLGUuYi5jK2UuYi5iKTw9MCYmSnkoZS5iLmMsYS5iLmMrYS5iLmIpPD0wJiZKeShhLmIuZCxlLmIuZCtlLmIuYSk8PTAmJkp5KGUuYi5kLGEuYi5kK2EuYi5hKTw9MCl7aWYoSnkoZS5iLmMsYS5iLmMrYS5iLmIpPT0wJiZkLmE8MHx8SnkoZS5iLmMrZS5iLmIsYS5iLmMpPT0wJiZkLmE+MHx8SnkoZS5iLmQsYS5iLmQrYS5iLmEpPT0wJiZkLmI8MHx8SnkoZS5iLmQrZS5iLmEsYS5iLmQpPT0wJiZkLmI+MCl7aD0wO2JyZWFrfX1lbHNle2g9JHduZC5NYXRoLm1pbihoLFlOYihhLGUsZCkpfWg9JHduZC5NYXRoLm1pbihoLE9OYihhLGYsaCxkKSl9cmV0dXJuIGh9XG5mdW5jdGlvbiBpZmQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihhLmI8Mil7dGhyb3cgdmJiKG5ldyBXZGIoJ1RoZSB2ZWN0b3IgY2hhaW4gbXVzdCBjb250YWluIGF0IGxlYXN0IGEgc291cmNlIGFuZCBhIHRhcmdldCBwb2ludC4nKSl9ZT0oc0NiKGEuYiE9MCksQkQoYS5hLmEuYyw4KSk7bm1kKGIsZS5hLGUuYik7aT1uZXcgT3lkKCghYi5hJiYoYi5hPW5ldyB4TWQoeTIsYiw1KSksYi5hKSk7Zz1Kc2IoYSwxKTt3aGlsZShnLmE8YS5iLTEpe2g9QkQoWHNiKGcpLDgpO2lmKGkuZSE9aS5pLmdjKCkpe2M9QkQoRHlkKGkpLDQ2OSl9ZWxzZXtjPShGaGQoKSxkPW5ldyB4a2QsZCk7TXlkKGksYyl9dWtkKGMsaC5hLGguYil9d2hpbGUoaS5lIT1pLmkuZ2MoKSl7RHlkKGkpO0V5ZChpKX1mPShzQ2IoYS5iIT0wKSxCRChhLmMuYi5jLDgpKTtnbWQoYixmLmEsZi5iKX1cbmZ1bmN0aW9uICRsYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztjPTA7Zm9yKGU9bmV3IG9sYigodENiKDAsYS5jLmxlbmd0aCksQkQoYS5jWzBdLDEwMSkpLmcuYi5qKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTEpO2QucD1jKyt9Yj09KFVjZCgpLEFjZCk/T2tiKGEsbmV3IGdtYyk6T2tiKGEsbmV3IGttYyk7aD0wO2s9YS5jLmxlbmd0aC0xO3doaWxlKGg8ayl7Zz0odENiKGgsYS5jLmxlbmd0aCksQkQoYS5jW2hdLDEwMSkpO2o9KHRDYihrLGEuYy5sZW5ndGgpLEJEKGEuY1trXSwxMDEpKTtmPWI9PUFjZD9nLmM6Zy5hO2k9Yj09QWNkP2ouYTpqLmM7YW1jKGcsYiwoQWpjKCkseWpjKSxmKTthbWMoaixiLHhqYyxpKTsrK2g7LS1rfWg9PWsmJmFtYygodENiKGgsYS5jLmxlbmd0aCksQkQoYS5jW2hdLDEwMSkpLGIsKEFqYygpLHdqYyksbnVsbCl9XG5mdW5jdGlvbiBVVmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscjtsPWEuYS5pK2EuYS5nLzI7bT1hLmEuaSthLmEuZy8yO289Yi5pK2IuZy8yO3E9Yi5qK2IuZi8yO2g9bmV3IGY3YyhvLHEpO2o9QkQoaGtkKGIsKFk5YygpLEM5YykpLDgpO2ouYT1qLmErbDtqLmI9ai5iK207Zj0oaC5iLWouYikvKGguYS1qLmEpO2Q9aC5iLWYqaC5hO3A9Yy5pK2MuZy8yO3I9Yy5qK2MuZi8yO2k9bmV3IGY3YyhwLHIpO2s9QkQoaGtkKGMsQzljKSw4KTtrLmE9ay5hK2w7ay5iPWsuYittO2c9KGkuYi1rLmIpLyhpLmEtay5hKTtlPWkuYi1nKmkuYTtuPShkLWUpLyhnLWYpO2lmKGouYTxuJiZoLmE8bnx8bjxqLmEmJm48aC5hKXtyZXR1cm4gZmFsc2V9ZWxzZSBpZihrLmE8biYmaS5hPG58fG48ay5hJiZuPGkuYSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gZ3FkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuO209QkQoT2hiKGEuYyxiKSwxODMpO2lmKCFtKXt0aHJvdyB2YmIobmV3IGNxZCgnRWRnZSBkaWQgbm90IGV4aXN0IGluIGlucHV0LicpKX1qPVdwZChtKTtmPUZoZSgoIWIuYSYmKGIuYT1uZXcgY1VkKEEyLGIsNiw2KSksYi5hKSk7aD0hZjtpZihoKXtuPW5ldyB3QjtjPW5ldyBScmQoYSxqLG4pO0RoZSgoIWIuYSYmKGIuYT1uZXcgY1VkKEEyLGIsNiw2KSksYi5hKSxjKTtjQyhtLE50ZSxuKX1lPWlrZChiLChZOWMoKSxROGMpKTtpZihlKXtrPUJEKGhrZChiLFE4YyksNzQpO2c9IWt8fEVoZShrKTtpPSFnO2lmKGkpe2w9bmV3IHdCO2Q9bmV3IFpyZChsKTtyZWIoayxkKTtjQyhtLCdqdW5jdGlvblBvaW50cycsbCl9fVVwZChtLCdjb250YWluZXInLE1sZChiKS5rKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGVEYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosazt0aGlzLmE9YTt0aGlzLmI9Yjt0aGlzLmM9Yzt0aGlzLmU9T3UoT0MoR0MoR00sMSksVWhlLDE2OCwwLFtuZXcgYURiKGEsYiksbmV3IGFEYihiLGMpLG5ldyBhRGIoYyxhKV0pKTt0aGlzLmY9T3UoT0MoR0MobTEsMSksbmllLDgsMCxbYSxiLGNdKSk7dGhpcy5kPShkPWM3YyhSNmModGhpcy5iKSx0aGlzLmEpLGU9YzdjKFI2Yyh0aGlzLmMpLHRoaXMuYSksZj1jN2MoUjZjKHRoaXMuYyksdGhpcy5iKSxnPWQuYSoodGhpcy5hLmErdGhpcy5iLmEpK2QuYioodGhpcy5hLmIrdGhpcy5iLmIpLGg9ZS5hKih0aGlzLmEuYSt0aGlzLmMuYSkrZS5iKih0aGlzLmEuYit0aGlzLmMuYiksaT0yKihkLmEqZi5iLWQuYipmLmEpLGo9KGUuYipnLWQuYipoKS9pLGs9KGQuYSpoLWUuYSpnKS9pLG5ldyBmN2MoaixrKSl9XG5mdW5jdGlvbiBudmQoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbzttPW5ldyB5QyhhLnApO2NDKGIsZnVlLG0pO2lmKGMmJiEoIWEuZj9udWxsOnZtYihhLmYpKS5hLmRjKCkpe2s9bmV3IHdCO2NDKGIsJ2xvZ3MnLGspO2g9MDtmb3Iobz1uZXcgRG5iKCghYS5mP251bGw6dm1iKGEuZikpLmIuS2MoKSk7by5iLk9iKCk7KXtuPUdEKG8uYi5QYigpKTtsPW5ldyB5QyhuKTt0QihrLGgpO3ZCKGssaCxsKTsrK2h9fWlmKGQpe2o9bmV3IFRCKGEucSk7Y0MoYiwnZXhlY3V0aW9uVGltZScsail9aWYoIXZtYihhLmEpLmEuZGMoKSl7Zz1uZXcgd0I7Y0MoYixKdGUsZyk7aD0wO2ZvcihmPW5ldyBEbmIodm1iKGEuYSkuYi5LYygpKTtmLmIuT2IoKTspe2U9QkQoZi5iLlBiKCksMTk0OSk7aT1uZXcgZUM7dEIoZyxoKTt2QihnLGgsaSk7bnZkKGUsaSxjLGQpOysraH19fVxuZnVuY3Rpb24gUFpiKGEsYil7dmFyIGMsZCxlLGYsZyxoO2Y9YS5jO2c9YS5kO1FaYihhLG51bGwpO1JaYihhLG51bGwpO2ImJkNjYihERCh2TmIoZywod3RjKCksTXNjKSkpKT9RWmIoYSxpX2IoZy5pLChLQWMoKSxJQWMpLChVY2QoKSx6Y2QpKSk6UVpiKGEsZyk7YiYmQ2NiKEREKHZOYihmLCh3dGMoKSxldGMpKSkpP1JaYihhLGlfYihmLmksKEtBYygpLEhBYyksKFVjZCgpLFRjZCkpKTpSWmIoYSxmKTtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDcwKTtlPUJEKHZOYihjLChOeWMoKSxRd2MpKSwyNzIpO2U9PShxYWQoKSxwYWQpP3lOYihjLFF3YyxvYWQpOmU9PW9hZCYmeU5iKGMsUXdjLHBhZCl9aD1DY2IoREQodk5iKGEsKHd0YygpLGx0YykpKSk7eU5iKGEsbHRjLChCY2IoKSxoP2ZhbHNlOnRydWUpKTthLmE9dzdjKGEuYSl9XG5mdW5jdGlvbiBWUWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTtkPTA7Zm9yKGY9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtmLmUhPWYuaS5nYygpOyl7ZT1CRChEeWQoZiksMzMpO2c9Jyc7KCFlLm4mJihlLm49bmV3IGNVZChEMixlLDEsNykpLGUubikuaT09MHx8KGc9QkQocXVkKCghZS5uJiYoZS5uPW5ldyBjVWQoRDIsZSwxLDcpKSxlLm4pLDApLDEzNykuYSk7aD1uZXcgcFJiKGcpO3ROYihoLGUpO3lOYihoLChIU2IoKSxGU2IpLGUpO2guYj1kKys7aC5kLmE9ZS5pK2UuZy8yO2guZC5iPWUuaitlLmYvMjtoLmUuYT0kd25kLk1hdGgubWF4KGUuZywxKTtoLmUuYj0kd25kLk1hdGgubWF4KGUuZiwxKTtFa2IoYi5lLGgpO2pyYihjLmYsZSxoKTtpPUJEKGhrZChlLCh3U2IoKSxtU2IpKSw5OCk7aT09KGRjZCgpLGNjZCkmJihpPWJjZCl9fVxuZnVuY3Rpb24gWEpjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2M9bkdiKG5ldyBwR2IsYS5mKTtqPWEuaVtiLmMuaS5wXTtuPWEuaVtiLmQuaS5wXTtpPWIuYzttPWIuZDtoPWkuYS5iO2w9bS5hLmI7ai5ifHwoaCs9aS5uLmIpO24uYnx8KGwrPW0ubi5iKTtrPVFEKCR3bmQuTWF0aC5tYXgoMCxoLWwpKTtnPVFEKCR3bmQuTWF0aC5tYXgoMCxsLWgpKTtvPShwPSR3bmQuTWF0aC5tYXgoMSxCRCh2TmIoYiwoTnljKCksZXljKSksMTkpLmEpLHE9SkpjKGIuYy5pLmssYi5kLmkuaykscCpxKTtlPUFGYihERmIoQ0ZiKEJGYihFRmIobmV3IEZGYixvKSxnKSxjKSxCRChPaGIoYS5rLGIuYyksMTIxKSkpO2Y9QUZiKERGYihDRmIoQkZiKEVGYihuZXcgRkZiLG8pLGspLGMpLEJEKE9oYihhLmssYi5kKSwxMjEpKSk7ZD1uZXcgcUtjKGUsZik7YS5jW2IucF09ZH1cbmZ1bmN0aW9uIE5FYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo7Zz1uZXcgX0VjKGEsYixjKTtpPW5ldyBCaWIoZCwwKTtlPWZhbHNlO3doaWxlKGkuYjxpLmQuZ2MoKSl7aD0oc0NiKGkuYjxpLmQuZ2MoKSksQkQoaS5kLlhiKGkuYz1pLmIrKyksMjMzKSk7aWYoaD09Ynx8aD09Yyl7dWliKGkpfWVsc2UgaWYoIWUmJkVkYihSRWMoaC5nLGguZFswXSkuYSk+RWRiKFJFYyhnLmcsZy5kWzBdKS5hKSl7c0NiKGkuYj4wKTtpLmEuWGIoaS5jPS0taS5iKTtBaWIoaSxnKTtlPXRydWV9ZWxzZSBpZighIWguZSYmaC5lLmdjKCk+MCl7Zj0oIWguZSYmKGguZT1uZXcgUmtiKSxoLmUpLk1jKGIpO2o9KCFoLmUmJihoLmU9bmV3IFJrYiksaC5lKS5NYyhjKTtpZihmfHxqKXsoIWguZSYmKGguZT1uZXcgUmtiKSxoLmUpLkZjKGcpOysrZy5jfX19ZXx8KGQuY1tkLmMubGVuZ3RoXT1nLHRydWUpfVxuZnVuY3Rpb24gb2RjKGEpe3ZhciBiLGMsZDtpZihmY2QoQkQodk5iKGEsKE55YygpLFZ4YykpLDk4KSkpe2ZvcihjPW5ldyBvbGIoYS5qKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTEpO2Iuaj09KFVjZCgpLFNjZCkmJihkPUJEKHZOYihiLCh3dGMoKSxndGMpKSwxMCksZD9HMGIoYixCRCh2TmIoZCxIc2MpLDYxKSk6Yi5lLmMubGVuZ3RoLWIuZy5jLmxlbmd0aDwwP0cwYihiLHpjZCk6RzBiKGIsVGNkKSl9fWVsc2V7Zm9yKGM9bmV3IG9sYihhLmopO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMSk7ZD1CRCh2TmIoYiwod3RjKCksZ3RjKSksMTApO2Q/RzBiKGIsQkQodk5iKGQsSHNjKSw2MSkpOmIuZS5jLmxlbmd0aC1iLmcuYy5sZW5ndGg8MD9HMGIoYiwoVWNkKCksemNkKSk6RzBiKGIsKFVjZCgpLFRjZCkpfXlOYihhLFZ4YywoZGNkKCksYWNkKSl9fVxuZnVuY3Rpb24gYWdlKGEpe3ZhciBiLGMsZDtzd2l0Y2goYSl7Y2FzZSA5MTpjYXNlIDkzOmNhc2UgNDU6Y2FzZSA5NDpjYXNlIDQ0OmNhc2UgOTI6ZD0nXFxcXCcrU3RyaW5nLmZyb21DaGFyQ29kZShhJmFqZSk7YnJlYWs7Y2FzZSAxMjpkPSdcXFxcZic7YnJlYWs7Y2FzZSAxMDpkPSdcXFxcbic7YnJlYWs7Y2FzZSAxMzpkPSdcXFxccic7YnJlYWs7Y2FzZSA5OmQ9J1xcXFx0JzticmVhaztjYXNlIDI3OmQ9J1xcXFxlJzticmVhaztkZWZhdWx0OmlmKGE8MzIpe2M9KGI9YT4+PjAsJzAnK2IudG9TdHJpbmcoMTYpKTtkPSdcXFxceCcrcWZiKGMsYy5sZW5ndGgtMixjLmxlbmd0aCl9ZWxzZSBpZihhPj1UamUpe2M9KGI9YT4+PjAsJzAnK2IudG9TdHJpbmcoMTYpKTtkPSdcXFxcdicrcWZiKGMsYy5sZW5ndGgtNixjLmxlbmd0aCl9ZWxzZSBkPScnK1N0cmluZy5mcm9tQ2hhckNvZGUoYSZhamUpO31yZXR1cm4gZH1cbmZ1bmN0aW9uIHloYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO2c9YS5lO2k9Yi5lO2lmKGk9PTApe3JldHVybiBhfWlmKGc9PTApe3JldHVybiBiLmU9PTA/YjpuZXcgVmdiKC1iLmUsYi5kLGIuYSl9Zj1hLmQ7aD1iLmQ7aWYoZitoPT0yKXtjPXhiYihhLmFbMF0sWWplKTtkPXhiYihiLmFbMF0sWWplKTtnPDAmJihjPUpiYihjKSk7aTwwJiYoZD1KYmIoZCkpO3JldHVybiBnaGIoUWJiKGMsZCkpfWU9ZiE9aD9mPmg/MTotMTp3aGIoYS5hLGIuYSxmKTtpZihlPT0tMSl7bD0taTtrPWc9PWk/emhiKGIuYSxoLGEuYSxmKTp1aGIoYi5hLGgsYS5hLGYpfWVsc2V7bD1nO2lmKGc9PWkpe2lmKGU9PTApe3JldHVybiBIZ2IoKSxHZ2J9az16aGIoYS5hLGYsYi5hLGgpfWVsc2V7az11aGIoYS5hLGYsYi5hLGgpfX1qPW5ldyBWZ2IobCxrLmxlbmd0aCxrKTtKZ2Ioaik7cmV0dXJuIGp9XG5mdW5jdGlvbiBZUGMoYSl7dmFyIGIsYyxkLGUsZixnO3RoaXMuZT1uZXcgUmtiO3RoaXMuYT1uZXcgUmtiO2ZvcihjPWEuYi0xO2M8MztjKyspe1N0KGEsMCxCRChVdChhLDApLDgpKX1pZihhLmI8NCl7dGhyb3cgdmJiKG5ldyBXZGIoJ0F0IChsZWFzdCBkaW1lbnNpb24gKyAxKSBjb250cm9sIHBvaW50cyBhcmUgbmVjZXNzYXJ5IScpKX1lbHNle3RoaXMuYj0zO3RoaXMuZD10cnVlO3RoaXMuYz1mYWxzZTtUUGModGhpcyxhLmIrdGhpcy5iLTEpO2c9bmV3IFJrYjtmPW5ldyBvbGIodGhpcy5lKTtmb3IoYj0wO2I8dGhpcy5iLTE7YisrKXtFa2IoZyxFRChtbGIoZikpKX1mb3IoZT1Kc2IoYSwwKTtlLmIhPWUuZC5jOyl7ZD1CRChYc2IoZSksOCk7RWtiKGcsRUQobWxiKGYpKSk7RWtiKHRoaXMuYSxuZXcgYlFjKGQsZykpO3RDYigwLGcuYy5sZW5ndGgpO2cuYy5zcGxpY2UoMCwxKX19fVxuZnVuY3Rpb24gQmFjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO2ZvcihmPW5ldyBvbGIoYS5iKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMjkpO2ZvcihoPW5ldyBvbGIoZS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTApO2lmKGcuaz09KGowYigpLGYwYikpe2k9KGo9QkQoUnIobmV3IFNyKHVyKFJfYihnKS5hLktjKCksbmV3IFNxKSkpLDE3KSxrPUJEKFJyKG5ldyBTcih1cihVX2IoZykuYS5LYygpLG5ldyBTcSkpKSwxNyksIUNjYihERCh2TmIoaiwod3RjKCksbHRjKSkpKXx8IUNjYihERCh2TmIoayxsdGMpKSkpP2I6c2JkKGIpO3phYyhnLGkpfWZvcihkPW5ldyBTcih1cihVX2IoZykuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSwxNyk7aT1DY2IoREQodk5iKGMsKHd0YygpLGx0YykpKSk/c2JkKGIpOmI7eWFjKGMsaSl9fX19XG5mdW5jdGlvbiB5WmMoYSxiLGMsZCxlKXt2YXIgZixnLGg7aWYoYy5mPj1iLm8mJmMuZjw9Yi5mfHxiLmEqMC41PD1jLmYmJmIuYSoxLjU+PWMuZil7Zz1CRChJa2IoYi5uLGIubi5jLmxlbmd0aC0xKSwyMTEpO2lmKGcuZStnLmQrYy5nK2U8PWQmJihmPUJEKElrYihiLm4sYi5uLmMubGVuZ3RoLTEpLDIxMSksZi5mLWEuZitjLmY8PWEuYnx8YS5hLmMubGVuZ3RoPT0xKSl7RVpjKGIsYyk7cmV0dXJuIHRydWV9ZWxzZSBpZihiLnMrYy5nPD1kJiYoYi50K2IuZCtjLmYrZTw9YS5ifHxhLmEuYy5sZW5ndGg9PTEpKXtFa2IoYi5iLGMpO2g9QkQoSWtiKGIubixiLm4uYy5sZW5ndGgtMSksMjExKTtFa2IoYi5uLG5ldyBWWmMoYi5zLGguZitoLmErYi5pLGIuaSkpO1FaYyhCRChJa2IoYi5uLGIubi5jLmxlbmd0aC0xKSwyMTEpLGMpO0daYyhiLGMpO3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9XG5mdW5jdGlvbiBaeGQoYSxiLGMpe3ZhciBkLGUsZixnO2lmKGEuZWooKSl7ZT1udWxsO2Y9YS5maigpO2Q9YS5aaSgxLGc9dXVkKGEsYixjKSxjLGIsZik7aWYoYS5iaigpJiYhKGEubmkoKSYmZyE9bnVsbD9wYihnLGMpOlBEKGcpPT09UEQoYykpKXtnIT1udWxsJiYoZT1hLmRqKGcsZSkpO2U9YS5jaihjLGUpO2EuaWooKSYmKGU9YS5saihnLGMsZSkpO2lmKCFlKXthLiRpKGQpfWVsc2V7ZS5FaShkKTtlLkZpKCl9fWVsc2V7YS5paigpJiYoZT1hLmxqKGcsYyxlKSk7aWYoIWUpe2EuJGkoZCl9ZWxzZXtlLkVpKGQpO2UuRmkoKX19cmV0dXJuIGd9ZWxzZXtnPXV1ZChhLGIsYyk7aWYoYS5iaigpJiYhKGEubmkoKSYmZyE9bnVsbD9wYihnLGMpOlBEKGcpPT09UEQoYykpKXtlPW51bGw7ZyE9bnVsbCYmKGU9YS5kaihnLG51bGwpKTtlPWEuY2ooYyxlKTshIWUmJmUuRmkoKX1yZXR1cm4gZ319XG5mdW5jdGlvbiBZQShhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGo7YiU9MjQ7aWYoYS5xLmdldEhvdXJzKCkhPWIpe2Q9bmV3ICR3bmQuRGF0ZShhLnEuZ2V0VGltZSgpKTtkLnNldERhdGUoZC5nZXREYXRlKCkrMSk7aD1hLnEuZ2V0VGltZXpvbmVPZmZzZXQoKS1kLmdldFRpbWV6b25lT2Zmc2V0KCk7aWYoaD4wKXtpPWgvNjB8MDtqPWglNjA7ZT1hLnEuZ2V0RGF0ZSgpO2M9YS5xLmdldEhvdXJzKCk7YytpPj0yNCYmKytlO2Y9bmV3ICR3bmQuRGF0ZShhLnEuZ2V0RnVsbFllYXIoKSxhLnEuZ2V0TW9udGgoKSxlLGIraSxhLnEuZ2V0TWludXRlcygpK2osYS5xLmdldFNlY29uZHMoKSxhLnEuZ2V0TWlsbGlzZWNvbmRzKCkpO2EucS5zZXRUaW1lKGYuZ2V0VGltZSgpKX19Zz1hLnEuZ2V0VGltZSgpO2EucS5zZXRUaW1lKGcrMzYwMDAwMCk7YS5xLmdldEhvdXJzKCkhPWImJmEucS5zZXRUaW1lKGcpfVxuZnVuY3Rpb24gb3BjKGEsYil7dmFyIGMsZCxlLGYsZztPZGQoYiwnUGF0aC1MaWtlIEdyYXBoIFdyYXBwaW5nJywxKTtpZihhLmIuYy5sZW5ndGg9PTApe1FkZChiKTtyZXR1cm59ZT1uZXcgWG9jKGEpO2c9KGUuaT09bnVsbCYmKGUuaT1Tb2MoZSxuZXcgWm9jKSksRWRiKGUuaSkqZS5mKTtjPWcvKGUuaT09bnVsbCYmKGUuaT1Tb2MoZSxuZXcgWm9jKSksRWRiKGUuaSkpO2lmKGUuYj5jKXtRZGQoYik7cmV0dXJufXN3aXRjaChCRCh2TmIoYSwoTnljKCksR3ljKSksMzM3KS5nKXtjYXNlIDI6Zj1uZXcgaHBjO2JyZWFrO2Nhc2UgMDpmPW5ldyBZbmM7YnJlYWs7ZGVmYXVsdDpmPW5ldyBrcGM7fWQ9Zi5WZihhLGUpO2lmKCFmLldmKCkpe3N3aXRjaChCRCh2TmIoYSxNeWMpLDMzOCkuZyl7Y2FzZSAyOmQ9dHBjKGUsZCk7YnJlYWs7Y2FzZSAxOmQ9cnBjKGUsZCk7fX1ucGMoYSxlLGQpO1FkZChiKX1cbmZ1bmN0aW9uIE1GYyhhLGIpe3ZhciBjLGQsZSxmO0Z1YihhLmQsYS5lKTthLmMuYS4kYigpO2lmKEVkYihFRCh2TmIoYi5qLChOeWMoKSx1d2MpKSkpIT0wfHxFZGIoRUQodk5iKGIuaix1d2MpKSkhPTApe2M9ZG1lO1BEKHZOYihiLmoseXdjKSkhPT1QRCgodEFjKCksckFjKSkmJnlOYihiLmosKHd0YygpLEpzYyksKEJjYigpLHRydWUpKTtmPUJEKHZOYihiLmosQXljKSwxOSkuYTtmb3IoZT0wO2U8ZjtlKyspe2Q9V0ZjKGEsYik7aWYoZDxjKXtjPWQ7WkZjKGEpO2lmKGM9PTApe2JyZWFrfX19fWVsc2V7Yz1PaGU7UEQodk5iKGIuaix5d2MpKSE9PVBEKCh0QWMoKSxyQWMpKSYmeU5iKGIuaiwod3RjKCksSnNjKSwoQmNiKCksdHJ1ZSkpO2Y9QkQodk5iKGIuaixBeWMpLDE5KS5hO2ZvcihlPTA7ZTxmO2UrKyl7ZD1YRmMoYSxiKTtpZihkPGMpe2M9ZDtaRmMoYSk7aWYoYz09MCl7YnJlYWt9fX19fVxuZnVuY3Rpb24gc3BjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtnPW5ldyBSa2I7aD0wO2M9MDtpPTA7d2hpbGUoaDxiLmMubGVuZ3RoLTEmJmM8YS5nYygpKXtkPUJEKGEuWGIoYyksMTkpLmEraTt3aGlsZSgodENiKGgrMSxiLmMubGVuZ3RoKSxCRChiLmNbaCsxXSwxOSkpLmE8ZCl7KytofWo9MDtmPWQtKHRDYihoLGIuYy5sZW5ndGgpLEJEKGIuY1toXSwxOSkpLmE7ZT0odENiKGgrMSxiLmMubGVuZ3RoKSxCRChiLmNbaCsxXSwxOSkpLmEtZDtmPmUmJisrajtFa2IoZywodENiKGgraixiLmMubGVuZ3RoKSxCRChiLmNbaCtqXSwxOSkpKTtpKz0odENiKGgraixiLmMubGVuZ3RoKSxCRChiLmNbaCtqXSwxOSkpLmEtZDsrK2M7d2hpbGUoYzxhLmdjKCkmJkJEKGEuWGIoYyksMTkpLmEraTw9KHRDYihoK2osYi5jLmxlbmd0aCksQkQoYi5jW2gral0sMTkpKS5hKXsrK2N9aCs9MStqfXJldHVybiBnfVxuZnVuY3Rpb24gUktkKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKCFhLmQpe2g9bmV3IFhOZDtiPUtLZDtmPWIuYS56YyhhLGIpO2lmKGY9PW51bGwpe2ZvcihkPW5ldyBGeWQoX0tkKGEpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksMjYpO3l0ZChoLFJLZChjKSl9Yi5hLkJjKGEpIT1udWxsO2IuYS5nYygpPT0wJiZ1bmRlZmluZWR9Zz1oLmk7Zm9yKGU9KCFhLnEmJihhLnE9bmV3IGNVZChuNSxhLDExLDEwKSksbmV3IEZ5ZChhLnEpKTtlLmUhPWUuaS5nYygpOysrZyl7QkQoRHlkKGUpLDM5OSl9eXRkKGgsKCFhLnEmJihhLnE9bmV3IGNVZChuNSxhLDExLDEwKSksYS5xKSk7dnVkKGgpO2EuZD1uZXcgbk5kKChCRChxdWQoWktkKChORmQoKSxNRmQpLm8pLDkpLDE4KSxoLmkpLGguZyk7YS5lPUJEKGguZyw2NzMpO2EuZT09bnVsbCYmKGEuZT1MS2QpOyRLZChhKS5iJj0tMTd9cmV0dXJuIGEuZH1cbmZ1bmN0aW9uIE0yZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo7aj1TNmQoYS5lLlRnKCksYik7aT0wO2U9QkQoYS5nLDExOSk7UTZkKCk7aWYoQkQoYiw2NikuT2ooKSl7Zm9yKGc9MDtnPGEuaTsrK2cpe2Y9ZVtnXTtpZihqLnJsKGYuYWsoKSkpe2lmKHBiKGYsYykpe3JldHVybiBpfSsraX19fWVsc2UgaWYoYyE9bnVsbCl7Zm9yKGg9MDtoPGEuaTsrK2gpe2Y9ZVtoXTtpZihqLnJsKGYuYWsoKSkpe2lmKHBiKGMsZi5kZCgpKSl7cmV0dXJuIGl9KytpfX1pZihkKXtpPTA7Zm9yKGc9MDtnPGEuaTsrK2cpe2Y9ZVtnXTtpZihqLnJsKGYuYWsoKSkpe2lmKFBEKGMpPT09UEQoYTNkKGEsQkQoZi5kZCgpLDU2KSkpKXtyZXR1cm4gaX0rK2l9fX19ZWxzZXtmb3IoZz0wO2c8YS5pOysrZyl7Zj1lW2ddO2lmKGoucmwoZi5haygpKSl7aWYoZi5kZCgpPT1udWxsKXtyZXR1cm4gaX0rK2l9fX1yZXR1cm4gLTF9XG5mdW5jdGlvbiBhZWQoYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG47bW1iKCk7T2tiKGEsbmV3IEplZCk7Zz1SdShhKTtuPW5ldyBSa2I7bT1uZXcgUmtiO2g9bnVsbDtpPTA7d2hpbGUoZy5iIT0wKXtmPUJEKGcuYj09MD9udWxsOihzQ2IoZy5iIT0wKSxOc2IoZyxnLmEuYSkpLDE1Nyk7aWYoIWh8fHJlZChoKSpxZWQoaCkvMjxyZWQoZikqcWVkKGYpKXtoPWY7bi5jW24uYy5sZW5ndGhdPWZ9ZWxzZXtpKz1yZWQoZikqcWVkKGYpO20uY1ttLmMubGVuZ3RoXT1mO2lmKG0uYy5sZW5ndGg+MSYmKGk+cmVkKGgpKnFlZChoKS8yfHxnLmI9PTApKXtsPW5ldyB3ZWQobSk7az1yZWQoaCkvcWVkKGgpO2o9ZmVkKGwsYixuZXcgcDBiLGMsZCxlLGspO1A2YyhYNmMobC5lKSxqKTtoPWw7bi5jW24uYy5sZW5ndGhdPWw7aT0wO20uYz1LQyhTSSxVaGUsMSwwLDUsMSl9fX1Ha2IobixtKTtyZXR1cm4gbn1cbmZ1bmN0aW9uIHk2ZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHA7aWYoYy5taChiKSl7az0obj1iLCFuP251bGw6QkQoZCw0OSkueGgobikpO2lmKGspe3A9Yy5iaChiLGEuYSk7bz1iLnQ7aWYobz4xfHxvPT0tMSl7bD1CRChwLDY5KTttPUJEKGssNjkpO2lmKGwuZGMoKSl7bS4kYigpfWVsc2V7Zz0hIXpVZChiKTtmPTA7Zm9yKGg9YS5hP2wuS2MoKTpsLlpoKCk7aC5PYigpOyl7aj1CRChoLlBiKCksNTYpO2U9QkQoV3JiKGEsaiksNTYpO2lmKCFlKXtpZihhLmImJiFnKXttLlhoKGYsaik7KytmfX1lbHNle2lmKGcpe2k9bS5YYyhlKTtpPT0tMT9tLlhoKGYsZSk6ZiE9aSYmbS5qaShmLGUpfWVsc2V7bS5YaChmLGUpfSsrZn19fX1lbHNle2lmKHA9PW51bGwpe2suV2IobnVsbCl9ZWxzZXtlPVdyYihhLHApO2U9PW51bGw/YS5iJiYhelVkKGIpJiZrLldiKHApOmsuV2IoZSl9fX19fVxuZnVuY3Rpb24gRTZiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtjPW5ldyBMNmI7Zm9yKGU9bmV3IFNyKHVyKFJfYihiKS5hLktjKCksbmV3IFNxKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDE3KTtpZihPWmIoZCkpe2NvbnRpbnVlfWg9ZC5jLmk7aWYoRjZiKGgsQzZiKSl7aj1HNmIoYSxoLEM2YixCNmIpO2lmKGo9PS0xKXtjb250aW51ZX1jLmI9JHduZC5NYXRoLm1heChjLmIsaik7IWMuYSYmKGMuYT1uZXcgUmtiKTtFa2IoYy5hLGgpfX1mb3IoZz1uZXcgU3IodXIoVV9iKGIpLmEuS2MoKSxuZXcgU3EpKTtRcihnKTspe2Y9QkQoUnIoZyksMTcpO2lmKE9aYihmKSl7Y29udGludWV9aT1mLmQuaTtpZihGNmIoaSxCNmIpKXtqPUc2YihhLGksQjZiLEM2Yik7aWYoaj09LTEpe2NvbnRpbnVlfWMuZD0kd25kLk1hdGgubWF4KGMuZCxqKTshYy5jJiYoYy5jPW5ldyBSa2IpO0VrYihjLmMsaSl9fXJldHVybiBjfVxuZnVuY3Rpb24gS2hiKGEpe0RoYigpO3ZhciBiLGMsZCxlO2I9UUQoYSk7aWYoYTxDaGIubGVuZ3RoKXtyZXR1cm4gQ2hiW2JdfWVsc2UgaWYoYTw9NTApe3JldHVybiBQZ2IoKEhnYigpLEVnYiksYil9ZWxzZSBpZihhPD1faWUpe3JldHVybiBRZ2IoUGdiKEJoYlsxXSxiKSxiKX1pZihhPjEwMDAwMDApe3Rocm93IHZiYihuZXcgb2NiKCdwb3dlciBvZiB0ZW4gdG9vIGJpZycpKX1pZihhPD1PaGUpe3JldHVybiBRZ2IoUGdiKEJoYlsxXSxiKSxiKX1kPVBnYihCaGJbMV0sT2hlKTtlPWQ7Yz1DYmIoYS1PaGUpO2I9UUQoYSVPaGUpO3doaWxlKHliYihjLE9oZSk+MCl7ZT1PZ2IoZSxkKTtjPVFiYihjLE9oZSl9ZT1PZ2IoZSxQZ2IoQmhiWzFdLGIpKTtlPVFnYihlLE9oZSk7Yz1DYmIoYS1PaGUpO3doaWxlKHliYihjLE9oZSk+MCl7ZT1RZ2IoZSxPaGUpO2M9UWJiKGMsT2hlKX1lPVFnYihlLGIpO3JldHVybiBlfVxuZnVuY3Rpb24gWDViKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO09kZChiLCdIaWVyYXJjaGljYWwgcG9ydCBkdW1teSBzaXplIHByb2Nlc3NpbmcnLDEpO2k9bmV3IFJrYjtrPW5ldyBSa2I7ZD1FZGIoRUQodk5iKGEsKE55YygpLG15YykpKSk7Yz1kKjI7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyOSk7aS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtrLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2ZvcihoPW5ldyBvbGIoZS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTApO2lmKGcuaz09KGowYigpLGUwYikpe2o9QkQodk5iKGcsKHd0YygpLEhzYykpLDYxKTtqPT0oVWNkKCksQWNkKT8oaS5jW2kuYy5sZW5ndGhdPWcsdHJ1ZSk6aj09UmNkJiYoay5jW2suYy5sZW5ndGhdPWcsdHJ1ZSl9fVk1YihpLHRydWUsYyk7WTViKGssZmFsc2UsYyl9UWRkKGIpfVxuZnVuY3Rpb24gT2FjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7T2RkKGIsJ0xheWVyIGNvbnN0cmFpbnQgcG9zdHByb2Nlc3NpbmcnLDEpO2k9YS5iO2lmKGkuYy5sZW5ndGghPTApe2Q9KHRDYigwLGkuYy5sZW5ndGgpLEJEKGkuY1swXSwyOSkpO2c9QkQoSWtiKGksaS5jLmxlbmd0aC0xKSwyOSk7Yz1uZXcgSDFiKGEpO2Y9bmV3IEgxYihhKTtNYWMoYSxkLGcsYyxmKTtjLmEuYy5sZW5ndGg9PTB8fCh3Q2IoMCxpLmMubGVuZ3RoKSxhQ2IoaS5jLDAsYykpO2YuYS5jLmxlbmd0aD09MHx8KGkuY1tpLmMubGVuZ3RoXT1mLHRydWUpfWlmKHdOYihhLCh3dGMoKSxMc2MpKSl7ZT1uZXcgSDFiKGEpO2g9bmV3IEgxYihhKTtQYWMoYSxlLGgpO2UuYS5jLmxlbmd0aD09MHx8KHdDYigwLGkuYy5sZW5ndGgpLGFDYihpLmMsMCxlKSk7aC5hLmMubGVuZ3RoPT0wfHwoaS5jW2kuYy5sZW5ndGhdPWgsdHJ1ZSl9UWRkKGIpfVxuZnVuY3Rpb24gYjZiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrO2ZvcihpPW5ldyBvbGIoYS5hKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTApO2lmKGguayE9KGowYigpLGUwYikpe2NvbnRpbnVlfWU9QkQodk5iKGgsKHd0YygpLEhzYykpLDYxKTtpZihlPT0oVWNkKCksemNkKXx8ZT09VGNkKXtmb3IoZD1uZXcgU3IodXIoT19iKGgpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2I9Yy5hO2lmKGIuYj09MCl7Y29udGludWV9aj1jLmM7aWYoai5pPT1oKXtmPShzQ2IoYi5iIT0wKSxCRChiLmEuYS5jLDgpKTtmLmI9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2ouaS5uLGoubixqLmFdKSkuYn1rPWMuZDtpZihrLmk9PWgpe2c9KHNDYihiLmIhPTApLEJEKGIuYy5iLmMsOCkpO2cuYj1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbay5pLm4say5uLGsuYV0pKS5ifX19fX1cbmZ1bmN0aW9uIFRlYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO09kZChiLCdTb3J0IEJ5IElucHV0IE1vZGVsICcrdk5iKGEsKE55YygpLHl3YykpLDEpO2U9MDtmb3IoZD1uZXcgb2xiKGEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDI5KTtpPWU9PTA/MDplLTE7aD1CRChJa2IoYS5iLGkpLDI5KTtmb3IoZz1uZXcgb2xiKGMuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtpZihQRCh2TmIoZixWeGMpKSE9PVBEKChkY2QoKSxaYmQpKSYmUEQodk5iKGYsVnhjKSkhPT1QRCgkYmQpKXttbWIoKTtPa2IoZi5qLG5ldyBUbmMoaCxYZWMoZikpKTtTZGQoYiwnTm9kZSAnK2YrJyBwb3J0czogJytmLmopfX1tbWIoKTtPa2IoYy5hLG5ldyBCbmMoaCxCRCh2TmIoYSx5d2MpLDMzOSksQkQodk5iKGEsd3djKSwzNzgpKSk7U2RkKGIsJ0xheWVyICcrZSsnOiAnK2MpOysrZX1RZGQoYil9XG5mdW5jdGlvbiBVMWIoYSxiKXt2YXIgYyxkLGUsZjtmPVAxYihiKTtNQWIobmV3IFlBYihudWxsLCghYi5jJiYoYi5jPW5ldyBjVWQoRjIsYiw5LDkpKSxuZXcgS3ViKGIuYywxNikpKSxuZXcgaTJiKGYpKTtlPUJEKHZOYihmLCh3dGMoKSxLc2MpKSwyMSk7TzFiKGIsZSk7aWYoZS5IYygoT3JjKCksSHJjKSkpe2ZvcihkPW5ldyBGeWQoKCFiLmMmJihiLmM9bmV3IGNVZChGMixiLDksOSkpLGIuYykpO2QuZSE9ZC5pLmdjKCk7KXtjPUJEKER5ZChkKSwxMTgpO1kxYihhLGIsZixjKX19QkQoaGtkKGIsKE55YygpLEZ4YykpLDE3NCkuZ2MoKSE9MCYmTDFiKGIsZik7Q2NiKEREKHZOYihmLE14YykpKSYmZS5GYyhNcmMpO3dOYihmLGh5YykmJld5YyhuZXcgZXpjKEVkYihFRCh2TmIoZixoeWMpKSkpLGYpO1BEKGhrZChiLGF4YykpPT09UEQoKGhiZCgpLGViZCkpP1YxYihhLGIsZik6VDFiKGEsYixmKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIGhpYyhhLGIsYyxkKXt2YXIgZSxmLGc7dGhpcy5qPW5ldyBSa2I7dGhpcy5rPW5ldyBSa2I7dGhpcy5iPW5ldyBSa2I7dGhpcy5jPW5ldyBSa2I7dGhpcy5lPW5ldyBJNmM7dGhpcy5pPW5ldyBzN2M7dGhpcy5mPW5ldyBsRWI7dGhpcy5kPW5ldyBSa2I7dGhpcy5nPW5ldyBSa2I7RWtiKHRoaXMuYixhKTtFa2IodGhpcy5iLGIpO3RoaXMuZS5jPSR3bmQuTWF0aC5taW4oYS5hLGIuYSk7dGhpcy5lLmQ9JHduZC5NYXRoLm1pbihhLmIsYi5iKTt0aGlzLmUuYj0kd25kLk1hdGguYWJzKGEuYS1iLmEpO3RoaXMuZS5hPSR3bmQuTWF0aC5hYnMoYS5iLWIuYik7ZT1CRCh2TmIoZCwoTnljKCksanhjKSksNzQpO2lmKGUpe2ZvcihnPUpzYihlLDApO2cuYiE9Zy5kLmM7KXtmPUJEKFhzYihnKSw4KTtBRGIoZi5hLGEuYSkmJkRzYih0aGlzLmksZil9fSEhYyYmRWtiKHRoaXMuaixjKTtFa2IodGhpcy5rLGQpfVxuZnVuY3Rpb24gb1RiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbTtrPW5ldyBndWIobmV3IEVUYihjKSk7aD1LQyhzYmIsZGxlLDI1LGEuZi5lLmMubGVuZ3RoLDE2LDEpO0dsYihoLGgubGVuZ3RoKTtjW2IuYl09MDtmb3Ioaj1uZXcgb2xiKGEuZi5lKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTQ0KTtpLmIhPWIuYiYmKGNbaS5iXT1PaGUpO3pDYihjdWIoayxpKSl9d2hpbGUoay5iLmMubGVuZ3RoIT0wKXtsPUJEKGR1YihrKSwxNDQpO2hbbC5iXT10cnVlO2ZvcihmPWF1KG5ldyBidShhLmIsbCksMCk7Zi5jOyl7ZT1CRCh1dShmKSwyODIpO209clRiKGUsbCk7aWYoaFttLmJdKXtjb250aW51ZX13TmIoZSwoYlRiKCksUlNiKSk/KGc9RWRiKEVEKHZOYihlLFJTYikpKSk6KGc9YS5jKTtkPWNbbC5iXStnO2lmKGQ8Y1ttLmJdKXtjW20uYl09ZDtldWIoayxtKTt6Q2IoY3ViKGssbSkpfX19fVxuZnVuY3Rpb24geE1jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7ZT10cnVlO2ZvcihnPW5ldyBvbGIoYS5iKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMjkpO2o9UWplO2s9bnVsbDtmb3IoaT1uZXcgb2xiKGYuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtsPUVkYihiLnBbaC5wXSkrRWRiKGIuZFtoLnBdKS1oLmQuZDtkPUVkYihiLnBbaC5wXSkrRWRiKGIuZFtoLnBdKStoLm8uYitoLmQuYTtpZihsPmomJmQ+ail7az1oO2o9RWRiKGIucFtoLnBdKStFZGIoYi5kW2gucF0pK2guby5iK2guZC5hfWVsc2V7ZT1mYWxzZTtjLm4mJlNkZChjLCdiayBub2RlIHBsYWNlbWVudCBicmVha3Mgb24gJytoKycgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBhZnRlciAnK2spO2JyZWFrfX1pZighZSl7YnJlYWt9fWMubiYmU2RkKGMsYisnIGlzIGZlYXNpYmxlOiAnK2UpO3JldHVybiBlfVxuZnVuY3Rpb24gWE5jKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrO2g9LTE7Zm9yKGs9bmV3IG9sYihhKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksMTEyKTtqLmc9aC0tO2U9VGJiKHRBYihQQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGouZiwxNikpLG5ldyBaTmMpLG5ldyBfTmMpKS5kKTtmPVRiYih0QWIoUEFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihqLmssMTYpKSxuZXcgYk9jKSxuZXcgZE9jKSkuZCk7Zz1lO2k9ZjtpZighZCl7Zz1UYmIodEFiKFBBYihuZXcgWUFiKG51bGwsbmV3IEt1YihqLmYsMTYpKSxuZXcgZk9jKSkuZCk7aT1UYmIodEFiKFBBYihuZXcgWUFiKG51bGwsbmV3IEt1YihqLmssMTYpKSxuZXcgaE9jKSkuZCl9ai5kPWc7ai5hPWU7ai5pPWk7ai5iPWY7aT09MD8oR3NiKGMsaixjLmMuYixjLmMpLHRydWUpOmc9PTAmJihHc2IoYixqLGIuYy5iLGIuYyksdHJ1ZSl9fVxuZnVuY3Rpb24gJDhiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrO2lmKGMuZC5pPT1iLmkpe3JldHVybn1lPW5ldyBiMGIoYSk7X19iKGUsKGowYigpLGcwYikpO3lOYihlLCh3dGMoKSwkc2MpLGMpO3lOYihlLChOeWMoKSxWeGMpLChkY2QoKSwkYmQpKTtkLmNbZC5jLmxlbmd0aF09ZTtnPW5ldyBIMGI7RjBiKGcsZSk7RzBiKGcsKFVjZCgpLFRjZCkpO2g9bmV3IEgwYjtGMGIoaCxlKTtHMGIoaCx6Y2QpO2s9Yy5kO1JaYihjLGcpO2Y9bmV3IFVaYjt0TmIoZixjKTt5TmIoZixqeGMsbnVsbCk7UVpiKGYsaCk7UlpiKGYsayk7aj1uZXcgQmliKGMuYiwwKTt3aGlsZShqLmI8ai5kLmdjKCkpe2k9KHNDYihqLmI8ai5kLmdjKCkpLEJEKGouZC5YYihqLmM9ai5iKyspLDcwKSk7aWYoUEQodk5iKGksUXdjKSk9PT1QRCgocWFkKCksb2FkKSkpe3lOYihpLERzYyxjKTt1aWIoaik7RWtiKGYuYixpKX19YTliKGUsZyxoKX1cbmZ1bmN0aW9uIFo4YihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosaztpZihjLmMuaT09Yi5pKXtyZXR1cm59ZT1uZXcgYjBiKGEpO19fYihlLChqMGIoKSxnMGIpKTt5TmIoZSwod3RjKCksJHNjKSxjKTt5TmIoZSwoTnljKCksVnhjKSwoZGNkKCksJGJkKSk7ZC5jW2QuYy5sZW5ndGhdPWU7Zz1uZXcgSDBiO0YwYihnLGUpO0cwYihnLChVY2QoKSxUY2QpKTtoPW5ldyBIMGI7RjBiKGgsZSk7RzBiKGgsemNkKTtSWmIoYyxnKTtmPW5ldyBVWmI7dE5iKGYsYyk7eU5iKGYsanhjLG51bGwpO1FaYihmLGgpO1JaYihmLGIpO2E5YihlLGcsaCk7aj1uZXcgQmliKGMuYiwwKTt3aGlsZShqLmI8ai5kLmdjKCkpe2k9KHNDYihqLmI8ai5kLmdjKCkpLEJEKGouZC5YYihqLmM9ai5iKyspLDcwKSk7az1CRCh2TmIoaSxRd2MpLDI3Mik7aWYoaz09KHFhZCgpLG9hZCkpe3dOYihpLERzYyl8fHlOYihpLERzYyxjKTt1aWIoaik7RWtiKGYuYixpKX19fVxuZnVuY3Rpb24gZERjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O209bmV3IFJrYjtyPUd4KGQpO3E9YiphLmE7bD0wO289MDtmPW5ldyBUcWI7Zz1uZXcgVHFiO2g9bmV3IFJrYjtzPTA7dD0wO249MDtwPTA7aj0wO2s9MDt3aGlsZShyLmEuZ2MoKSE9MCl7aT1oRGMocixlLGcpO2lmKGkpe3IuYS5CYyhpKSE9bnVsbDtoLmNbaC5jLmxlbmd0aF09aTtmLmEuemMoaSxmKTtvPWEuZltpLnBdO3MrPWEuZVtpLnBdLW8qYS5iO2w9YS5jW2kucF07dCs9bCphLmI7ays9byphLmI7cCs9YS5lW2kucF19aWYoIWl8fHIuYS5nYygpPT0wfHxzPj1xJiZhLmVbaS5wXT5vKmEuYnx8dD49YypxKXttLmNbbS5jLmxlbmd0aF09aDtoPW5ldyBSa2I7eWUoZyxmKTtmLmEuJGIoKTtqLT1rO249JHduZC5NYXRoLm1heChuLGoqYS5iK3ApO2orPXQ7cz10O3Q9MDtrPTA7cD0wfX1yZXR1cm4gbmV3IHZnZChuLG0pfVxuZnVuY3Rpb24gcTRjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuO2ZvcihjPShqPShuZXcgJGliKGEuYy5iKSkuYS52YygpLktjKCksbmV3IGRqYihqKSk7Yy5hLk9iKCk7KXtiPShoPUJEKGMuYS5QYigpLDQyKSxCRChoLmRkKCksMTQ5KSk7ZT1iLmE7ZT09bnVsbCYmKGU9JycpO2Q9aTRjKGEuYyxlKTshZCYmZS5sZW5ndGg9PTAmJihkPXU0YyhhKSk7ISFkJiYhemUoZC5jLGIsZmFsc2UpJiZEc2IoZC5jLGIpfWZvcihnPUpzYihhLmEsMCk7Zy5iIT1nLmQuYzspe2Y9QkQoWHNiKGcpLDQ3OCk7az1qNGMoYS5jLGYuYSk7bj1qNGMoYS5jLGYuYik7ISFrJiYhIW4mJkRzYihrLmMsbmV3IHZnZChuLGYuYykpfU9zYihhLmEpO2ZvcihtPUpzYihhLmIsMCk7bS5iIT1tLmQuYzspe2w9QkQoWHNiKG0pLDQ3OCk7Yj1nNGMoYS5jLGwuYSk7aT1qNGMoYS5jLGwuYik7ISFiJiYhIWkmJkIzYyhiLGksbC5jKX1Pc2IoYS5iKX1cbmZ1bmN0aW9uIHF2ZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbjtmPW5ldyBmQyhhKTtnPW5ldyBpcmQ7ZT0oa28oZy5nKSxrbyhnLmopLFVoYihnLmIpLGtvKGcuZCksa28oZy5pKSxVaGIoZy5rKSxVaGIoZy5jKSxVaGIoZy5lKSxuPWRyZChnLGYsbnVsbCksYXJkKGcsZiksbik7aWYoYil7aj1uZXcgZkMoYik7aD1ydmQoaik7amZkKGUsT0MoR0MoZzIsMSksVWhlLDUyNywwLFtoXSkpfW09ZmFsc2U7bD1mYWxzZTtpZihjKXtqPW5ldyBmQyhjKTtxdWUgaW4gai5hJiYobT1hQyhqLHF1ZSkuZ2UoKS5hKTtydWUgaW4gai5hJiYobD1hQyhqLHJ1ZSkuZ2UoKS5hKX1rPVZkZChYZGQobmV3IFpkZCxtKSxsKTt0MmMobmV3IHcyYyxlLGspO3F1ZSBpbiBmLmEmJmNDKGYscXVlLG51bGwpO2lmKG18fGwpe2k9bmV3IGVDO252ZChrLGksbSxsKTtjQyhmLHF1ZSxpKX1kPW5ldyBQcmQoZyk7R2hlKG5ldyBfdWQoZSksZCl9XG5mdW5jdGlvbiBwQShhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsO2c9bmV3IG5CO2o9T0MoR0MoV0QsMSksb2plLDI1LDE1LFswXSk7ZT0tMTtmPTA7ZD0wO2ZvcihpPTA7aTxhLmIuYy5sZW5ndGg7KytpKXtrPUJEKElrYihhLmIsaSksNDM0KTtpZihrLmI+MCl7aWYoZTwwJiZrLmEpe2U9aTtmPWpbMF07ZD0wfWlmKGU+PTApe2g9ay5iO2lmKGk9PWUpe2gtPWQrKztpZihoPT0wKXtyZXR1cm4gMH19aWYoIXdBKGIsaixrLGgsZykpe2k9ZS0xO2pbMF09Zjtjb250aW51ZX19ZWxzZXtlPS0xO2lmKCF3QShiLGosaywwLGcpKXtyZXR1cm4gMH19fWVsc2V7ZT0tMTtpZihiZmIoay5jLDApPT0zMil7bD1qWzBdO3VBKGIsaik7aWYoalswXT5sKXtjb250aW51ZX19ZWxzZSBpZihvZmIoYixrLmMsalswXSkpe2pbMF0rPWsuYy5sZW5ndGg7Y29udGludWV9cmV0dXJuIDB9fWlmKCFtQihnLGMpKXtyZXR1cm4gMH1yZXR1cm4galswXX1cbmZ1bmN0aW9uIFNLZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2lmKCFhLmYpe2k9bmV3IENOZDtoPW5ldyBDTmQ7Yj1LS2Q7Zz1iLmEuemMoYSxiKTtpZihnPT1udWxsKXtmb3IoZj1uZXcgRnlkKF9LZChhKSk7Zi5lIT1mLmkuZ2MoKTspe2U9QkQoRHlkKGYpLDI2KTt5dGQoaSxTS2QoZSkpfWIuYS5CYyhhKSE9bnVsbDtiLmEuZ2MoKT09MCYmdW5kZWZpbmVkfWZvcihkPSghYS5zJiYoYS5zPW5ldyBjVWQodDUsYSwyMSwxNykpLG5ldyBGeWQoYS5zKSk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDE3MCk7SkQoYyw5OSkmJnd0ZChoLEJEKGMsMTgpKX12dWQoaCk7YS5yPW5ldyBVTmQoYSwoQkQocXVkKFpLZCgoTkZkKCksTUZkKS5vKSw2KSwxOCksaC5pKSxoLmcpO3l0ZChpLGEucik7dnVkKGkpO2EuZj1uZXcgbk5kKChCRChxdWQoWktkKE1GZC5vKSw1KSwxOCksaS5pKSxpLmcpOyRLZChhKS5iJj0tM31yZXR1cm4gYS5mfVxuZnVuY3Rpb24gck1iKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG87Zz1hLm87ZD1LQyhXRCxvamUsMjUsZywxNSwxKTtlPUtDKFdELG9qZSwyNSxnLDE1LDEpO2M9YS5wO2I9S0MoV0Qsb2plLDI1LGMsMTUsMSk7Zj1LQyhXRCxvamUsMjUsYywxNSwxKTtmb3Ioaj0wO2o8ZztqKyspe2w9MDt3aGlsZShsPGMmJiFZTWIoYSxqLGwpKXsrK2x9ZFtqXT1sfWZvcihrPTA7azxnO2srKyl7bD1jLTE7d2hpbGUobD49MCYmIVlNYihhLGssbCkpey0tbH1lW2tdPWx9Zm9yKG49MDtuPGM7bisrKXtoPTA7d2hpbGUoaDxnJiYhWU1iKGEsaCxuKSl7KytofWJbbl09aH1mb3Iobz0wO288YztvKyspe2g9Zy0xO3doaWxlKGg+PTAmJiFZTWIoYSxoLG8pKXstLWh9ZltvXT1ofWZvcihpPTA7aTxnO2krKyl7Zm9yKG09MDttPGM7bSsrKXtpPGZbbV0mJmk+YlttXSYmbTxlW2ldJiZtPmRbaV0mJmFOYihhLGksbSxmYWxzZSx0cnVlKX19fVxuZnVuY3Rpb24gbFJiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk7Yz1DY2IoREQodk5iKGEsKHdTYigpLGNTYikpKSk7Zj1hLmEuYy5kO2g9YS5hLmQuZDtpZihjKXtnPVk2YyhjN2MobmV3IGY3YyhoLmEsaC5iKSxmKSwwLjUpO2k9WTZjKFI2YyhhLmUpLDAuNSk7Yj1jN2MoUDZjKG5ldyBmN2MoZi5hLGYuYiksZyksaSk7YTdjKGEuZCxiKX1lbHNle2U9RWRiKEVEKHZOYihhLmEsdFNiKSkpO2Q9YS5kO2lmKGYuYT49aC5hKXtpZihmLmI+PWguYil7ZC5hPWguYSsoZi5hLWguYSkvMitlO2QuYj1oLmIrKGYuYi1oLmIpLzItZS1hLmUuYn1lbHNle2QuYT1oLmErKGYuYS1oLmEpLzIrZTtkLmI9Zi5iKyhoLmItZi5iKS8yK2V9fWVsc2V7aWYoZi5iPj1oLmIpe2QuYT1mLmErKGguYS1mLmEpLzIrZTtkLmI9aC5iKyhmLmItaC5iKS8yK2V9ZWxzZXtkLmE9Zi5hKyhoLmEtZi5hKS8yK2U7ZC5iPWYuYisoaC5iLWYuYikvMi1lLWEuZS5ifX19fVxuZnVuY3Rpb24gUWdlKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7aWYoYT09bnVsbCl7cmV0dXJuIG51bGx9Zj1hLmxlbmd0aDtpZihmPT0wKXtyZXR1cm4gJyd9aT1LQyhURCwkaWUsMjUsZiwxNSwxKTtBQ2IoMCxmLGEubGVuZ3RoKTtBQ2IoMCxmLGkubGVuZ3RoKTtmZmIoYSwwLGYsaSwwKTtjPW51bGw7aD1iO2ZvcihlPTAsZz0wO2U8ZjtlKyspe2Q9aVtlXTtsZGUoKTtpZihkPD0zMiYmKGtkZVtkXSYyKSE9MCl7aWYoaCl7IWMmJihjPW5ldyBKZmIoYSkpO0dmYihjLGUtZysrKX1lbHNle2g9YjtpZihkIT0zMil7IWMmJihjPW5ldyBKZmIoYSkpO2tjYihjLGUtZyxlLWcrMSxTdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSl9fX1lbHNle2g9ZmFsc2V9fWlmKGgpe2lmKCFjKXtyZXR1cm4gYS5zdWJzdHIoMCxmLTEpfWVsc2V7Zj1jLmEubGVuZ3RoO3JldHVybiBmPjA/cWZiKGMuYSwwLGYtMSk6Jyd9fWVsc2V7cmV0dXJuICFjP2E6Yy5hfX1cbmZ1bmN0aW9uIERQYihhKXtyNGMoYSxuZXcgRTNjKFAzYyhNM2MoTzNjKE4zYyhuZXcgUjNjLFlsZSksJ0VMSyBEaXNDbycpLCdMYXlvdXRlciBmb3IgYXJyYW5naW5nIHVuY29ubmVjdGVkIHN1YmdyYXBocy4gVGhlIHN1YmdyYXBocyB0aGVtc2VsdmVzIGFyZSwgYnkgZGVmYXVsdCwgbm90IGxhaWQgb3V0LicpLG5ldyBHUGIpKSk7cDRjKGEsWWxlLFpsZSxLc2QoQlBiKSk7cDRjKGEsWWxlLCRsZSxLc2QodlBiKSk7cDRjKGEsWWxlLF9sZSxLc2QocVBiKSk7cDRjKGEsWWxlLGFtZSxLc2Qod1BiKSk7cDRjKGEsWWxlLFprZSxLc2QoelBiKSk7cDRjKGEsWWxlLCRrZSxLc2QoeVBiKSk7cDRjKGEsWWxlLFlrZSxLc2QoQVBiKSk7cDRjKGEsWWxlLF9rZSxLc2QoeFBiKSk7cDRjKGEsWWxlLFRsZSxLc2Qoc1BiKSk7cDRjKGEsWWxlLFVsZSxLc2QoclBiKSk7cDRjKGEsWWxlLFZsZSxLc2QodFBiKSk7cDRjKGEsWWxlLFdsZSxLc2QodVBiKSl9XG5mdW5jdGlvbiBaYmMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtO2Y9bmV3IGIwYihhKTtfX2IoZiwoajBiKCksaTBiKSk7eU5iKGYsKE55YygpLFZ4YyksKGRjZCgpLCRiZCkpO2U9MDtpZihiKXtnPW5ldyBIMGI7eU5iKGcsKHd0YygpLCRzYyksYik7eU5iKGYsJHNjLGIuaSk7RzBiKGcsKFVjZCgpLFRjZCkpO0YwYihnLGYpO209a19iKGIuZSk7Zm9yKGo9bSxrPTAsbD1qLmxlbmd0aDtrPGw7KytrKXtpPWpba107UlpiKGksZyl9eU5iKGIsZ3RjLGYpOysrZX1pZihjKXtoPW5ldyBIMGI7eU5iKGYsKHd0YygpLCRzYyksYy5pKTt5TmIoaCwkc2MsYyk7RzBiKGgsKFVjZCgpLHpjZCkpO0YwYihoLGYpO209a19iKGMuZyk7Zm9yKGo9bSxrPTAsbD1qLmxlbmd0aDtrPGw7KytrKXtpPWpba107UVpiKGksaCl9eU5iKGMsZ3RjLGYpOysrZX15TmIoZiwod3RjKCkseXNjKSxtZWIoZSkpO2QuY1tkLmMubGVuZ3RoXT1mO3JldHVybiBmfVxuZnVuY3Rpb24gU21kKCl7U21kPWNjYjtRbWQ9T0MoR0MoVEQsMSksJGllLDI1LDE1LFs0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw2NSw2Niw2Nyw2OCw2OSw3MF0pO1JtZD1uZXcgUmVnRXhwKCdbIFxcdFxcblxcclxcZl0rJyk7dHJ5e1BtZD1PQyhHQyhjNiwxKSxVaGUsMjAxNSwwLFtuZXcgRVFkKChHQSgpLElBKFwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzJy4nU1NTWlwiLExBKChLQSgpLEtBKCksSkEpKSkpKSxuZXcgRVFkKElBKFwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzJy4nU1NTXCIsTEEoKG51bGwsSkEpKSkpLG5ldyBFUWQoSUEoXCJ5eXl5LU1NLWRkJ1QnSEg6bW06c3NcIixMQSgobnVsbCxKQSkpKSksbmV3IEVRZChJQShcInl5eXktTU0tZGQnVCdISDptbVwiLExBKChudWxsLEpBKSkpKSxuZXcgRVFkKElBKCd5eXl5LU1NLWRkJyxMQSgobnVsbCxKQSkpKSldKX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSw3OCkpdGhyb3cgdmJiKGEpfX1cbmZ1bmN0aW9uIHFnYihhKXt2YXIgYixjLGQsZTtkPXNoYigoIWEuYyYmKGEuYz1maGIoYS5mKSksYS5jKSwwKTtpZihhLmU9PTB8fGEuYT09MCYmYS5mIT0tMSYmYS5lPDApe3JldHVybiBkfWI9cGdiKGEpPDA/MTowO2M9YS5lO2U9KGQubGVuZ3RoKzErJHduZC5NYXRoLmFicyhRRChhLmUpKSxuZXcgVmZiKTtiPT0xJiYoZS5hKz0nLScsZSk7aWYoYS5lPjApe2MtPWQubGVuZ3RoLWI7aWYoYz49MCl7ZS5hKz0nMC4nO2Zvcig7Yz5lZ2IubGVuZ3RoO2MtPWVnYi5sZW5ndGgpe1JmYihlLGVnYil9U2ZiKGUsZWdiLFFEKGMpKTtRZmIoZSxkLnN1YnN0cihiKSl9ZWxzZXtjPWItYztRZmIoZSxxZmIoZCxiLFFEKGMpKSk7ZS5hKz0nLic7UWZiKGUscGZiKGQsUUQoYykpKX19ZWxzZXtRZmIoZSxkLnN1YnN0cihiKSk7Zm9yKDtjPC1lZ2IubGVuZ3RoO2MrPWVnYi5sZW5ndGgpe1JmYihlLGVnYil9U2ZiKGUsZWdiLFFEKC1jKSl9cmV0dXJuIGUuYX1cbmZ1bmN0aW9uIHY2YyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG07aT1jN2MobmV3IGY3YyhjLmEsYy5iKSxhKTtqPWkuYSpiLmItaS5iKmIuYTtrPWIuYSpkLmItYi5iKmQuYTtsPShpLmEqZC5iLWkuYipkLmEpL2s7bT1qL2s7aWYoaz09MCl7aWYoaj09MCl7ZT1QNmMobmV3IGY3YyhjLmEsYy5iKSxZNmMobmV3IGY3YyhkLmEsZC5iKSwwLjUpKTtmPVM2YyhhLGUpO2c9UzZjKFA2YyhuZXcgZjdjKGEuYSxhLmIpLGIpLGUpO2g9JHduZC5NYXRoLnNxcnQoZC5hKmQuYStkLmIqZC5iKSowLjU7aWYoZjxnJiZmPD1oKXtyZXR1cm4gbmV3IGY3YyhhLmEsYS5iKX1pZihnPD1oKXtyZXR1cm4gUDZjKG5ldyBmN2MoYS5hLGEuYiksYil9cmV0dXJuIG51bGx9ZWxzZXtyZXR1cm4gbnVsbH19ZWxzZXtyZXR1cm4gbD49MCYmbDw9MSYmbT49MCYmbTw9MT9QNmMobmV3IGY3YyhhLmEsYS5iKSxZNmMobmV3IGY3YyhiLmEsYi5iKSxsKSk6bnVsbH19XG5mdW5jdGlvbiBPVGIoYSxiLGMpe3ZhciBkLGUsZixnLGg7ZD1CRCh2TmIoYSwoTnljKCksendjKSksMjEpO2MuYT5iLmEmJihkLkhjKChpOGMoKSxjOGMpKT8oYS5jLmErPShjLmEtYi5hKS8yKTpkLkhjKGU4YykmJihhLmMuYSs9Yy5hLWIuYSkpO2MuYj5iLmImJihkLkhjKChpOGMoKSxnOGMpKT8oYS5jLmIrPShjLmItYi5iKS8yKTpkLkhjKGY4YykmJihhLmMuYis9Yy5iLWIuYikpO2lmKEJEKHZOYihhLCh3dGMoKSxLc2MpKSwyMSkuSGMoKE9yYygpLEhyYykpJiYoYy5hPmIuYXx8Yy5iPmIuYikpe2ZvcihoPW5ldyBvbGIoYS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTApO2lmKGcuaz09KGowYigpLGUwYikpe2U9QkQodk5iKGcsSHNjKSw2MSk7ZT09KFVjZCgpLHpjZCk/KGcubi5hKz1jLmEtYi5hKTplPT1SY2QmJihnLm4uYis9Yy5iLWIuYil9fX1mPWEuZDthLmYuYT1jLmEtZi5iLWYuYzthLmYuYj1jLmItZi5kLWYuYX1cbmZ1bmN0aW9uIEg1YihhLGIsYyl7dmFyIGQsZSxmLGcsaDtkPUJEKHZOYihhLChOeWMoKSx6d2MpKSwyMSk7Yy5hPmIuYSYmKGQuSGMoKGk4YygpLGM4YykpPyhhLmMuYSs9KGMuYS1iLmEpLzIpOmQuSGMoZThjKSYmKGEuYy5hKz1jLmEtYi5hKSk7Yy5iPmIuYiYmKGQuSGMoKGk4YygpLGc4YykpPyhhLmMuYis9KGMuYi1iLmIpLzIpOmQuSGMoZjhjKSYmKGEuYy5iKz1jLmItYi5iKSk7aWYoQkQodk5iKGEsKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSkmJihjLmE+Yi5hfHxjLmI+Yi5iKSl7Zm9yKGc9bmV3IG9sYihhLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMCk7aWYoZi5rPT0oajBiKCksZTBiKSl7ZT1CRCh2TmIoZixIc2MpLDYxKTtlPT0oVWNkKCksemNkKT8oZi5uLmErPWMuYS1iLmEpOmU9PVJjZCYmKGYubi5iKz1jLmItYi5iKX19fWg9YS5kO2EuZi5hPWMuYS1oLmItaC5jO2EuZi5iPWMuYi1oLmQtaC5hfVxuZnVuY3Rpb24ga01jKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbTtiPURNYyhhKTtmb3Ioaz0oaD0obmV3IFBpYihiKSkuYS52YygpLktjKCksbmV3IFZpYihoKSk7ay5hLk9iKCk7KXtqPShlPUJEKGsuYS5QYigpLDQyKSxCRChlLmNkKCksMTApKTtsPTA7bT0wO2w9ai5kLmQ7bT1qLm8uYitqLmQuYTthLmRbai5wXT0wO2M9ajt3aGlsZSgoZj1hLmFbYy5wXSkhPWope2Q9Rk1jKGMsZik7aT0wO2EuYz09KFlMYygpLFdMYyk/KGk9ZC5kLm4uYitkLmQuYS5iLWQuYy5uLmItZC5jLmEuYik6KGk9ZC5jLm4uYitkLmMuYS5iLWQuZC5uLmItZC5kLmEuYik7Zz1FZGIoYS5kW2MucF0pK2k7YS5kW2YucF09ZztsPSR3bmQuTWF0aC5tYXgobCxmLmQuZC1nKTttPSR3bmQuTWF0aC5tYXgobSxnK2Yuby5iK2YuZC5hKTtjPWZ9Yz1qO2Rve2EuZFtjLnBdPUVkYihhLmRbYy5wXSkrbDtjPWEuYVtjLnBdfXdoaWxlKGMhPWopO2EuYltqLnBdPWwrbX19XG5mdW5jdGlvbiBMT2IoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtO2EuYj1mYWxzZTtsPVBqZTtpPVFqZTttPVBqZTtqPVFqZTtmb3IoZD1hLmUuYS5lYygpLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjY2KTtlPWMuYTtsPSR3bmQuTWF0aC5taW4obCxlLmMpO2k9JHduZC5NYXRoLm1heChpLGUuYytlLmIpO209JHduZC5NYXRoLm1pbihtLGUuZCk7aj0kd25kLk1hdGgubWF4KGosZS5kK2UuYSk7Zm9yKGc9bmV3IG9sYihjLmMpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwzOTUpO2I9Zi5hO2lmKGIuYSl7az1lLmQrZi5iLmI7aD1rK2YuYzttPSR3bmQuTWF0aC5taW4obSxrKTtqPSR3bmQuTWF0aC5tYXgoaixoKX1lbHNle2s9ZS5jK2YuYi5hO2g9aytmLmM7bD0kd25kLk1hdGgubWluKGwsayk7aT0kd25kLk1hdGgubWF4KGksaCl9fX1hLmE9bmV3IGY3YyhpLWwsai1tKTthLmM9bmV3IGY3YyhsK2EuZC5hLG0rYS5kLmIpfVxuZnVuY3Rpb24geFpjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7bD1uZXcgUmtiO2s9bmV3IHgkYygwLGMpO2Y9MDtzJGMoayxuZXcgUFpjKDAsMCxrLGMpKTtlPTA7Zm9yKGo9bmV3IEZ5ZChhKTtqLmUhPWouaS5nYygpOyl7aT1CRChEeWQoaiksMzMpO2Q9QkQoSWtiKGsuYSxrLmEuYy5sZW5ndGgtMSksMTg3KTtoPWUraS5nKyhCRChJa2Ioay5hLDApLDE4NykuYi5jLmxlbmd0aD09MD8wOmMpO2lmKGg+Yil7ZT0wO2YrPWsuYitjO2wuY1tsLmMubGVuZ3RoXT1rO2s9bmV3IHgkYyhmLGMpO2Q9bmV3IFBaYygwLGsuZixrLGMpO3MkYyhrLGQpO2U9MH1pZihkLmIuYy5sZW5ndGg9PTB8fGkuZj49ZC5vJiZpLmY8PWQuZnx8ZC5hKjAuNTw9aS5mJiZkLmEqMS41Pj1pLmYpe0VaYyhkLGkpfWVsc2V7Zz1uZXcgUFpjKGQucytkLnIrYyxrLmYsayxjKTtzJGMoayxnKTtFWmMoZyxpKX1lPWkuaStpLmd9bC5jW2wuYy5sZW5ndGhdPWs7cmV0dXJuIGx9XG5mdW5jdGlvbiBPS2QoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtpZighYS5hKXthLm89bnVsbDtpPW5ldyBHTmQoYSk7Yj1uZXcgS05kO2M9S0tkO2g9Yy5hLnpjKGEsYyk7aWYoaD09bnVsbCl7Zm9yKGc9bmV3IEZ5ZChfS2QoYSkpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwyNik7eXRkKGksT0tkKGYpKX1jLmEuQmMoYSkhPW51bGw7Yy5hLmdjKCk9PTAmJnVuZGVmaW5lZH1mb3IoZT0oIWEucyYmKGEucz1uZXcgY1VkKHQ1LGEsMjEsMTcpKSxuZXcgRnlkKGEucykpO2UuZSE9ZS5pLmdjKCk7KXtkPUJEKER5ZChlKSwxNzApO0pEKGQsMzIyKSYmd3RkKGIsQkQoZCwzNCkpfXZ1ZChiKTthLms9bmV3IFBOZChhLChCRChxdWQoWktkKChORmQoKSxNRmQpLm8pLDcpLDE4KSxiLmkpLGIuZyk7eXRkKGksYS5rKTt2dWQoaSk7YS5hPW5ldyBuTmQoKEJEKHF1ZChaS2QoTUZkLm8pLDQpLDE4KSxpLmkpLGkuZyk7JEtkKGEpLmImPS0yfXJldHVybiBhLmF9XG5mdW5jdGlvbiB2WmMoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaSxqLGssbCxtO2w9ZmFsc2U7aT1aWmMoYy5xLGIuZitiLmItYy5xLmYpO209ZS0oYy5xLmUraS1nKTtpZihtPGQuZyl7cmV0dXJuIGZhbHNlfWo9Zj09YS5jLmxlbmd0aC0xJiZtPj0odENiKGYsYS5jLmxlbmd0aCksQkQoYS5jW2ZdLDIwMCkpLmU7az0oaD1NWmMoZCxtLGZhbHNlKSxoLmEpO2lmKGs+Yi5iJiYhail7cmV0dXJuIGZhbHNlfWlmKGp8fGs8PWIuYil7aWYoaiYmaz5iLmIpe2MuZD1rO0taYyhjLEpaYyhjLGspKX1lbHNleyRaYyhjLnEsaSk7Yy5jPXRydWV9S1pjKGQsZS0oYy5zK2MucikpO09aYyhkLGMucS5lK2MucS5kLGIuZik7cyRjKGIsZCk7aWYoYS5jLmxlbmd0aD5mKXt2JGMoKHRDYihmLGEuYy5sZW5ndGgpLEJEKGEuY1tmXSwyMDApKSxkKTsodENiKGYsYS5jLmxlbmd0aCksQkQoYS5jW2ZdLDIwMCkpLmEuYy5sZW5ndGg9PTAmJktrYihhLGYpfWw9dHJ1ZX1yZXR1cm4gbH1cbmZ1bmN0aW9uIEMyZChhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosaztrPVM2ZChhLmUuVGcoKSxiKTtlPTA7Zj1CRChhLmcsMTE5KTtpPW51bGw7UTZkKCk7aWYoQkQoYiw2NikuT2ooKSl7Zm9yKGg9MDtoPGEuaTsrK2gpe2c9ZltoXTtpZihrLnJsKGcuYWsoKSkpe2lmKHBiKGcsYykpe2k9ZzticmVha30rK2V9fX1lbHNlIGlmKGMhPW51bGwpe2ZvcihoPTA7aDxhLmk7KytoKXtnPWZbaF07aWYoay5ybChnLmFrKCkpKXtpZihwYihjLGcuZGQoKSkpe2k9ZzticmVha30rK2V9fX1lbHNle2ZvcihoPTA7aDxhLmk7KytoKXtnPWZbaF07aWYoay5ybChnLmFrKCkpKXtpZihnLmRkKCk9PW51bGwpe2k9ZzticmVha30rK2V9fX1pZihpKXtpZihvaWQoYS5lKSl7aj1iLiRqKCk/bmV3IE83ZChhLmUsNCxiLGMsbnVsbCxlLHRydWUpOkgyZChhLGIuS2ooKT8yOjEsYixjLGIuemooKSwtMSx0cnVlKTtkP2QuRWkoaik6KGQ9ail9ZD1CMmQoYSxpLGQpfXJldHVybiBkfVxuZnVuY3Rpb24ga1ljKGEsYixjLGQsZSxmLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scDtvPTA7cD0wO2k9ZS5jO2g9ZS5iO2s9Yy5mO249Yy5nO3N3aXRjaChiLmcpe2Nhc2UgMDpvPWQuaStkLmcrZzthLmM/KHA9dFljKG8sZixkLGcpKToocD1kLmopO209JHduZC5NYXRoLm1heChpLG8rbik7aj0kd25kLk1hdGgubWF4KGgscCtrKTticmVhaztjYXNlIDE6cD1kLmorZC5mK2c7YS5jPyhvPXNZYyhwLGYsZCxnKSk6KG89ZC5pKTttPSR3bmQuTWF0aC5tYXgoaSxvK24pO2o9JHduZC5NYXRoLm1heChoLHArayk7YnJlYWs7Y2FzZSAyOm89aStnO3A9MDttPWkrZytuO2o9JHduZC5NYXRoLm1heChoLGspO2JyZWFrO2Nhc2UgMzpvPTA7cD1oK2c7bT0kd25kLk1hdGgubWF4KGksbik7aj1oK2crazticmVhaztkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKCdJbGxlZ2FsUGxhY2VtZW50T3B0aW9uLicpKTt9bD1uZXcgZSRjKGEuYSxtLGosYixvLHApO3JldHVybiBsfVxuZnVuY3Rpb24gUjJiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbTtoPWEuZDtsPUJEKHZOYihhLCh3dGMoKSx2dGMpKSwxNSk7Yj1CRCh2TmIoYSx0c2MpLDE1KTtpZighbCYmIWIpe3JldHVybn1mPUVkYihFRChwQmMoYSwoTnljKCksaXljKSkpKTtnPUVkYihFRChwQmMoYSxqeWMpKSk7bT0wO2lmKGwpe2o9MDtmb3IoZT1sLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTApO2o9JHduZC5NYXRoLm1heChqLGQuby5iKTttKz1kLm8uYX1tKz1mKihsLmdjKCktMSk7aC5kKz1qK2d9Yz0wO2lmKGIpe2o9MDtmb3IoZT1iLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTApO2o9JHduZC5NYXRoLm1heChqLGQuby5iKTtjKz1kLm8uYX1jKz1mKihiLmdjKCktMSk7aC5hKz1qK2d9aT0kd25kLk1hdGgubWF4KG0sYyk7aWYoaT5hLm8uYSl7az0oaS1hLm8uYSkvMjtoLmI9JHduZC5NYXRoLm1heChoLmIsayk7aC5jPSR3bmQuTWF0aC5tYXgoaC5jLGspfX1cbmZ1bmN0aW9uIHJ2ZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2Y9bmV3IGIyYztaMWMoZiwoWTFjKCksVjFjKSk7Zm9yKGQ9KGU9JEIoYSxLQyhaSSxuaWUsMiwwLDYsMSkpLG5ldyB2aWIobmV3IGFtYigobmV3IG1DKGEsZSkpLmIpKSk7ZC5iPGQuZC5nYygpOyl7Yz0oc0NiKGQuYjxkLmQuZ2MoKSksR0QoZC5kLlhiKGQuYz1kLmIrKykpKTtnPWs0YyhsdmQsYyk7aWYoZyl7Yj1hQyhhLGMpO2IuamUoKT8oaD1iLmplKCkuYSk6Yi5nZSgpPyhoPScnK2IuZ2UoKS5hKTpiLmhlKCk/KGg9JycrYi5oZSgpLmEpOihoPWIuSWIoKSk7aT1vNWMoZyxoKTtpZihpIT1udWxsKXsodXFiKGcuaiwoTjVjKCksSzVjKSl8fHVxYihnLmosTDVjKSkmJnhOYihfMWMoZixFMiksZyxpKTt1cWIoZy5qLEk1YykmJnhOYihfMWMoZixCMiksZyxpKTt1cWIoZy5qLE01YykmJnhOYihfMWMoZixGMiksZyxpKTt1cWIoZy5qLEo1YykmJnhOYihfMWMoZixEMiksZyxpKX19fXJldHVybiBmfVxuZnVuY3Rpb24gSjJkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksajtpPVM2ZChhLmUuVGcoKSxiKTtmPUJEKGEuZywxMTkpO2lmKFQ2ZChhLmUsYikpe2U9MDtmb3IoaD0wO2g8YS5pOysraCl7Zz1mW2hdO2lmKGkucmwoZy5haygpKSl7aWYoZT09Yyl7UTZkKCk7aWYoQkQoYiw2NikuT2ooKSl7cmV0dXJuIGd9ZWxzZXtqPWcuZGQoKTtqIT1udWxsJiZkJiZKRChiLDk5KSYmKEJEKGIsMTgpLkJiJlRqZSkhPTAmJihqPWIzZChhLGIsaCxlLGopKTtyZXR1cm4gan19KytlfX10aHJvdyB2YmIobmV3IHFjYihndmUrYyttdWUrZSkpfWVsc2V7ZT0wO2ZvcihoPTA7aDxhLmk7KytoKXtnPWZbaF07aWYoaS5ybChnLmFrKCkpKXtRNmQoKTtpZihCRChiLDY2KS5PaigpKXtyZXR1cm4gZ31lbHNle2o9Zy5kZCgpO2ohPW51bGwmJmQmJkpEKGIsOTkpJiYoQkQoYiwxOCkuQmImVGplKSE9MCYmKGo9YjNkKGEsYixoLGUsaikpO3JldHVybiBqfX0rK2V9cmV0dXJuIGIuemooKX19XG5mdW5jdGlvbiBLMmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7ZT1CRChhLmcsMTE5KTtpZihUNmQoYS5lLGIpKXtyZXR1cm4gUTZkKCksQkQoYiw2NikuT2ooKT9uZXcgUjdkKGIsYSk6bmV3IGY3ZChiLGEpfWVsc2V7aj1TNmQoYS5lLlRnKCksYik7ZD0wO2ZvcihoPTA7aDxhLmk7KytoKXtmPWVbaF07Zz1mLmFrKCk7aWYoai5ybChnKSl7UTZkKCk7aWYoQkQoYiw2NikuT2ooKSl7cmV0dXJuIGZ9ZWxzZSBpZihnPT0obThkKCksazhkKXx8Zz09aDhkKXtpPW5ldyBXZmIoZmNiKGYuZGQoKSkpO3doaWxlKCsraDxhLmkpe2Y9ZVtoXTtnPWYuYWsoKTsoZz09azhkfHxnPT1oOGQpJiZRZmIoaSxmY2IoZi5kZCgpKSl9cmV0dXJuIGo2ZChCRChiLllqKCksMTQ4KSxpLmEpfWVsc2V7az1mLmRkKCk7ayE9bnVsbCYmYyYmSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wJiYoaz1iM2QoYSxiLGgsZCxrKSk7cmV0dXJuIGt9fSsrZH1yZXR1cm4gYi56aigpfX1cbmZ1bmN0aW9uIE1aYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07Zj0wO2c9YS50O2U9MDtkPTA7aT0wO209MDtsPTA7aWYoYyl7YS5uLmM9S0MoU0ksVWhlLDEsMCw1LDEpO0VrYihhLm4sbmV3IFZaYyhhLnMsYS50LGEuaSkpfWg9MDtmb3Ioaz1uZXcgb2xiKGEuYik7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDMzKTtpZihmK2ouZysoaD4wP2EuaTowKT5iJiZpPjApe2Y9MDtnKz1pK2EuaTtlPSR3bmQuTWF0aC5tYXgoZSxtKTtkKz1pK2EuaTtpPTA7bT0wO2lmKGMpeysrbDtFa2IoYS5uLG5ldyBWWmMoYS5zLGcsYS5pKSl9aD0wfW0rPWouZysoaD4wP2EuaTowKTtpPSR3bmQuTWF0aC5tYXgoaSxqLmYpO2MmJlFaYyhCRChJa2IoYS5uLGwpLDIxMSksaik7Zis9ai5nKyhoPjA/YS5pOjApOysraH1lPSR3bmQuTWF0aC5tYXgoZSxtKTtkKz1pO2lmKGMpe2Eucj1lO2EuZD1kO3UkYyhhLmopfXJldHVybiBuZXcgSjZjKGEucyxhLnQsZSxkKX1cbmZ1bmN0aW9uICRmYihhLGIsYyxkLGUpe1pmYigpO3ZhciBmLGcsaCxpLGosayxsLG0sbjt2Q2IoYSwnc3JjJyk7dkNiKGMsJ2Rlc3QnKTttPXJiKGEpO2k9cmIoYyk7ckNiKChtLmkmNCkhPTAsJ3NyY1R5cGUgaXMgbm90IGFuIGFycmF5Jyk7ckNiKChpLmkmNCkhPTAsJ2Rlc3RUeXBlIGlzIG5vdCBhbiBhcnJheScpO2w9bS5jO2c9aS5jO3JDYigobC5pJjEpIT0wP2w9PWc6KGcuaSYxKT09MCxcIkFycmF5IHR5cGVzIGRvbid0IG1hdGNoXCIpO249YS5sZW5ndGg7aj1jLmxlbmd0aDtpZihiPDB8fGQ8MHx8ZTwwfHxiK2U+bnx8ZCtlPmope3Rocm93IHZiYihuZXcgcGNiKX1pZigobC5pJjEpPT0wJiZtIT1pKXtrPUNEKGEpO2Y9Q0QoYyk7aWYoUEQoYSk9PT1QRChjKSYmYjxkKXtiKz1lO2ZvcihoPWQrZTtoLS0+ZDspe05DKGYsaCxrWy0tYl0pfX1lbHNle2ZvcihoPWQrZTtkPGg7KXtOQyhmLGQrKyxrW2IrK10pfX19ZWxzZSBlPjAmJiRCYihhLGIsYyxkLGUsdHJ1ZSl9XG5mdW5jdGlvbiBwaGIoKXtwaGI9Y2NiO25oYj1PQyhHQyhXRCwxKSxvamUsMjUsMTUsW1JpZSwxMTYyMjYxNDY3LElpZSwxMjIwNzAzMTI1LDM2Mjc5NzA1NiwxOTc3MzI2NzQzLElpZSwzODc0MjA0ODksSmplLDIxNDM1ODg4MSw0Mjk5ODE2OTYsODE1NzMwNzIxLDE0NzU3ODkwNTYsMTcwODU5Mzc1LDI2ODQzNTQ1Niw0MTAzMzg2NzMsNjEyMjIwMDMyLDg5Mzg3MTczOSwxMjgwMDAwMDAwLDE4MDEwODg1NDEsMTEzMzc5OTA0LDE0ODAzNTg4OSwxOTExMDI5NzYsMjQ0MTQwNjI1LDMwODkxNTc3NiwzODc0MjA0ODksNDgxODkwMzA0LDU5NDgyMzMyMSw3MjkwMDAwMDAsODg3NTAzNjgxLElpZSwxMjkxNDY3OTY5LDE1NDQ4MDQ0MTYsMTgzODI2NTYyNSw2MDQ2NjE3Nl0pO29oYj1PQyhHQyhXRCwxKSxvamUsMjUsMTUsWy0xLC0xLDMxLDE5LDE1LDEzLDExLDExLDEwLDksOSw4LDgsOCw4LDcsNyw3LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDYsNiw2LDVdKX1cbmZ1bmN0aW9uIHNvYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2ZvcihnPW5ldyBvbGIoTXUoZC5hKSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtpZihpb2MoZikpe2M9QkQodk5iKGYsKHd0YygpLHVzYykpLDMwNSk7aWYoIWMuZyYmISFjLmQpe2I9YztpPWMuZDt3aGlsZShpKXtyb2MoaS5pLGkuayxmYWxzZSx0cnVlKTt6b2MoYi5hKTt6b2MoaS5pKTt6b2MoaS5rKTt6b2MoaS5iKTtSWmIoaS5jLGIuYy5kKTtSWmIoYi5jLG51bGwpOyRfYihiLmEsbnVsbCk7JF9iKGkuaSxudWxsKTskX2IoaS5rLG51bGwpOyRfYihpLmIsbnVsbCk7aD1uZXcgZ29jKGIuaSxpLmEsYi5lLGkuaixpLmYpO2guaz1iLms7aC5uPWIubjtoLmI9Yi5iO2guYz1pLmM7aC5nPWIuZztoLmQ9aS5kO3lOYihiLmksdXNjLGgpO3lOYihpLmEsdXNjLGgpO2k9aS5kO2I9aH19fX19fVxuZnVuY3Rpb24gWGZlKGEsYil7dmFyIGMsZCxlLGYsZztnPUJEKGIsMTM2KTtZZmUoYSk7WWZlKGcpO2lmKGcuYj09bnVsbClyZXR1cm47YS5jPXRydWU7aWYoYS5iPT1udWxsKXthLmI9S0MoV0Qsb2plLDI1LGcuYi5sZW5ndGgsMTUsMSk7JGZiKGcuYiwwLGEuYiwwLGcuYi5sZW5ndGgpO3JldHVybn1mPUtDKFdELG9qZSwyNSxhLmIubGVuZ3RoK2cuYi5sZW5ndGgsMTUsMSk7Zm9yKGM9MCxkPTAsZT0wO2M8YS5iLmxlbmd0aHx8ZDxnLmIubGVuZ3RoOyl7aWYoYz49YS5iLmxlbmd0aCl7ZltlKytdPWcuYltkKytdO2ZbZSsrXT1nLmJbZCsrXX1lbHNlIGlmKGQ+PWcuYi5sZW5ndGgpe2ZbZSsrXT1hLmJbYysrXTtmW2UrK109YS5iW2MrK119ZWxzZSBpZihnLmJbZF08YS5iW2NdfHxnLmJbZF09PT1hLmJbY10mJmcuYltkKzFdPGEuYltjKzFdKXtmW2UrK109Zy5iW2QrK107ZltlKytdPWcuYltkKytdfWVsc2V7ZltlKytdPWEuYltjKytdO2ZbZSsrXT1hLmJbYysrXX19YS5iPWZ9XG5mdW5jdGlvbiBTNmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDtjPUNjYihERCh2TmIoYSwod3RjKCksVXNjKSkpKTtoPUNjYihERCh2TmIoYixVc2MpKSk7ZD1CRCh2TmIoYSxWc2MpLDExKTtpPUJEKHZOYihiLFZzYyksMTEpO2U9QkQodk5iKGEsV3NjKSwxMSk7aj1CRCh2TmIoYixXc2MpLDExKTtrPSEhZCYmZD09aTtsPSEhZSYmZT09ajtpZighYyYmIWgpe3JldHVybiBuZXcgWjZiKEJEKG1sYihuZXcgb2xiKGEuaikpLDExKS5wPT1CRChtbGIobmV3IG9sYihiLmopKSwxMSkucCxrLGwpfWY9KCFDY2IoREQodk5iKGEsVXNjKSkpfHxDY2IoREQodk5iKGEsVHNjKSkpKSYmKCFDY2IoREQodk5iKGIsVXNjKSkpfHxDY2IoREQodk5iKGIsVHNjKSkpKTtnPSghQ2NiKEREKHZOYihhLFVzYykpKXx8IUNjYihERCh2TmIoYSxUc2MpKSkpJiYoIUNjYihERCh2TmIoYixVc2MpKSl8fCFDY2IoREQodk5iKGIsVHNjKSkpKTtyZXR1cm4gbmV3IFo2YihrJiZmfHxsJiZnLGssbCl9XG5mdW5jdGlvbiBIWmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtkPTA7Yz0wO2k9bmV3IFBzYjtiPTA7Zm9yKGg9bmV3IG9sYihhLm4pO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwyMTEpO2lmKGcuYy5jLmxlbmd0aD09MCl7R3NiKGksZyxpLmMuYixpLmMpfWVsc2V7ZD0kd25kLk1hdGgubWF4KGQsZy5kKTtjKz1nLmErKGI+MD9hLmk6MCl9KytifUNlKGEubixpKTthLmQ9YzthLnI9ZDthLmc9MDthLmY9MDthLmU9MDthLm89UGplO2EucD1QamU7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwzMyk7YS5wPSR3bmQuTWF0aC5taW4oYS5wLGUuZyk7YS5nPSR3bmQuTWF0aC5tYXgoYS5nLGUuZyk7YS5mPSR3bmQuTWF0aC5tYXgoYS5mLGUuZik7YS5vPSR3bmQuTWF0aC5taW4oYS5vLGUuZik7YS5lKz1lLmYrYS5pfWEuYT1hLmUvYS5iLmMubGVuZ3RoLWEuaSooKGEuYi5jLmxlbmd0aC0xKS9hLmIuYy5sZW5ndGgpO3UkYyhhLmopfVxuZnVuY3Rpb24gU2xkKGEpe3ZhciBiLGMsZCxlO2lmKChhLkRiJjY0KSE9MClyZXR1cm4gTWtkKGEpO2I9bmV3IFdmYihfc2UpO2Q9YS5rO2lmKCFkKXshYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKTtpZihhLm4uaT4wKXtlPSghYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKSxCRChxdWQoYS5uLDApLDEzNykpLmE7IWV8fFFmYihRZmIoKGIuYSs9JyBcIicsYiksZSksJ1wiJyl9fWVsc2V7UWZiKFFmYigoYi5hKz0nIFwiJyxiKSxkKSwnXCInKX1jPSghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSwhKGEuYi5pPD0xJiYoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jLmk8PTEpKSk7Yz8oYi5hKz0nIFsnLGIpOihiLmErPScgJyxiKTtRZmIoYixFYihuZXcgR2IsbmV3IEZ5ZChhLmIpKSk7YyYmKGIuYSs9J10nLGIpO2IuYSs9Z25lO2MmJihiLmErPSdbJyxiKTtRZmIoYixFYihuZXcgR2IsbmV3IEZ5ZChhLmMpKSk7YyYmKGIuYSs9J10nLGIpO3JldHVybiBiLmF9XG5mdW5jdGlvbiBUUWQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihhLmEpe2g9YS5hLm5lKCk7aT1udWxsO2lmKGghPW51bGwpe2IuYSs9JycraH1lbHNle2c9YS5hLkRqKCk7aWYoZyE9bnVsbCl7Zj1oZmIoZyx3ZmIoOTEpKTtpZihmIT0tMSl7aT1nLnN1YnN0cihmKTtiLmErPScnK3FmYihnPT1udWxsP1hoZToodUNiKGcpLGcpLDAsZil9ZWxzZXtiLmErPScnK2d9fX1pZighIWEuZCYmYS5kLmkhPTApe2U9dHJ1ZTtiLmErPSc8Jztmb3IoZD1uZXcgRnlkKGEuZCk7ZC5lIT1kLmkuZ2MoKTspe2M9QkQoRHlkKGQpLDg3KTtlPyhlPWZhbHNlKTooYi5hKz1TaGUsYik7VFFkKGMsYil9Yi5hKz0nPid9aSE9bnVsbCYmKGIuYSs9JycraSxiKX1lbHNlIGlmKGEuZSl7aD1hLmUuemI7aCE9bnVsbCYmKGIuYSs9JycraCxiKX1lbHNle2IuYSs9Jz8nO2lmKGEuYil7Yi5hKz0nIHN1cGVyICc7VFFkKGEuYixiKX1lbHNle2lmKGEuZil7Yi5hKz0nIGV4dGVuZHMgJztUUWQoYS5mLGIpfX19fVxuZnVuY3Rpb24gWjliKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQ7dj1hLmM7dz1iLmM7Yz1Ka2Iodi5hLGEsMCk7ZD1Ka2Iody5hLGIsMCk7dD1CRChXX2IoYSwoS0FjKCksSEFjKSkuS2MoKS5QYigpLDExKTtDPUJEKFdfYihhLElBYykuS2MoKS5QYigpLDExKTt1PUJEKFdfYihiLEhBYykuS2MoKS5QYigpLDExKTtEPUJEKFdfYihiLElBYykuS2MoKS5QYigpLDExKTtyPWtfYih0LmUpO0E9a19iKEMuZyk7cz1rX2IodS5lKTtCPWtfYihELmcpO1pfYihhLGQsdyk7Zm9yKGc9cyxrPTAsbz1nLmxlbmd0aDtrPG87KytrKXtlPWdba107UlpiKGUsdCl9Zm9yKGg9QixsPTAscD1oLmxlbmd0aDtsPHA7KytsKXtlPWhbbF07UVpiKGUsQyl9Wl9iKGIsYyx2KTtmb3IoaT1yLG09MCxxPWkubGVuZ3RoO208cTsrK20pe2U9aVttXTtSWmIoZSx1KX1mb3IoZj1BLGo9MCxuPWYubGVuZ3RoO2o8bjsrK2ope2U9ZltqXTtRWmIoZSxEKX19XG5mdW5jdGlvbiAkJGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGs7Zj1hX2IoZCk7aD1DY2IoREQodk5iKGQsKE55YygpLHV4YykpKSk7aWYoKGh8fENjYihERCh2TmIoYSxleGMpKSkpJiYhZmNkKEJEKHZOYihhLFZ4YyksOTgpKSl7ZT1aY2QoZik7aT1pX2IoYSxjLGM9PShLQWMoKSxJQWMpP2U6V2NkKGUpKX1lbHNle2k9bmV3IEgwYjtGMGIoaSxhKTtpZihiKXtrPWkubjtrLmE9Yi5hLWEubi5hO2suYj1iLmItYS5uLmI7UTZjKGssMCwwLGEuby5hLGEuby5iKTtHMGIoaSxXJGIoaSxmKSl9ZWxzZXtlPVpjZChmKTtHMGIoaSxjPT0oS0FjKCksSUFjKT9lOldjZChlKSl9Zz1CRCh2TmIoZCwod3RjKCksS3NjKSksMjEpO2o9aS5qO3N3aXRjaChmLmcpe2Nhc2UgMjpjYXNlIDE6KGo9PShVY2QoKSxBY2QpfHxqPT1SY2QpJiZnLkZjKChPcmMoKSxMcmMpKTticmVhaztjYXNlIDQ6Y2FzZSAzOihqPT0oVWNkKCksemNkKXx8aj09VGNkKSYmZy5GYygoT3JjKCksTHJjKSk7fX1yZXR1cm4gaX1cbmZ1bmN0aW9uIHBQYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztpZigkd25kLk1hdGguYWJzKGIucy1iLmMpPHFtZXx8JHduZC5NYXRoLmFicyhjLnMtYy5jKTxxbWUpe3JldHVybiAwfWQ9b1BjKGEsYi5qLGMuZSk7ZT1vUGMoYSxjLmosYi5lKTtmPWQ9PS0xfHxlPT0tMTtnPTA7aWYoZil7aWYoZD09LTEpe25ldyBET2MoKEhPYygpLEZPYyksYyxiLDEpOysrZ31pZihlPT0tMSl7bmV3IERPYygoSE9jKCksRk9jKSxiLGMsMSk7KytnfX1lbHNle2g9dlBjKGIuaixjLnMsYy5jKTtoKz12UGMoYy5lLGIucyxiLmMpO2k9dlBjKGMuaixiLnMsYi5jKTtpKz12UGMoYi5lLGMucyxjLmMpO2o9ZCsxNipoO2s9ZSsxNippO2lmKGo8ayl7bmV3IERPYygoSE9jKCksR09jKSxiLGMsay1qKX1lbHNlIGlmKGo+ayl7bmV3IERPYygoSE9jKCksR09jKSxjLGIsai1rKX1lbHNlIGlmKGo+MCYmaz4wKXtuZXcgRE9jKChIT2MoKSxHT2MpLGIsYywwKTtuZXcgRE9jKEdPYyxjLGIsMCl9fXJldHVybiBnfVxuZnVuY3Rpb24gVFViKGEsYil7dmFyIGMsZCxlLGYsZyxoO2ZvcihnPW5ldyBuaWIoKG5ldyBlaWIoYS5mLmIpKS5hKTtnLmI7KXtmPWxpYihnKTtlPUJEKGYuY2QoKSw1OTQpO2lmKGI9PTEpe2lmKGUuZ2YoKSE9KGVhZCgpLGRhZCkmJmUuZ2YoKSE9XzljKXtjb250aW51ZX19ZWxzZXtpZihlLmdmKCkhPShlYWQoKSxhYWQpJiZlLmdmKCkhPWJhZCl7Y29udGludWV9fWQ9QkQoQkQoZi5kZCgpLDQ2KS5iLDgxKTtoPUJEKEJEKGYuZGQoKSw0NikuYSwxODkpO2M9aC5jO3N3aXRjaChlLmdmKCkuZyl7Y2FzZSAyOmQuZy5jPWEuZS5hO2QuZy5iPSR3bmQuTWF0aC5tYXgoMSxkLmcuYitjKTticmVhaztjYXNlIDE6ZC5nLmM9ZC5nLmMrYztkLmcuYj0kd25kLk1hdGgubWF4KDEsZC5nLmItYyk7YnJlYWs7Y2FzZSA0OmQuZy5kPWEuZS5iO2QuZy5hPSR3bmQuTWF0aC5tYXgoMSxkLmcuYStjKTticmVhaztjYXNlIDM6ZC5nLmQ9ZC5nLmQrYztkLmcuYT0kd25kLk1hdGgubWF4KDEsZC5nLmEtYyk7fX19XG5mdW5jdGlvbiBuSmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2g9S0MoV0Qsb2plLDI1LGIuYi5jLmxlbmd0aCwxNSwxKTtqPUtDKE5RLEtpZSwyNjcsYi5iLmMubGVuZ3RoLDAsMSk7aT1LQyhPUSxrbmUsMTAsYi5iLmMubGVuZ3RoLDAsMSk7Zm9yKGw9YS5hLG09MCxuPWwubGVuZ3RoO208bjsrK20pe2s9bFttXTtwPTA7Zm9yKGc9bmV3IG9sYihrLmUpO2cuYTxnLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihnKSwxMCk7ZD1HMWIoZS5jKTsrK2hbZF07bz1FZGIoRUQodk5iKGIsKE55YygpLGx5YykpKSk7aFtkXT4wJiYhIWlbZF0mJihvPWpCYyhhLmIsaVtkXSxlKSk7cD0kd25kLk1hdGgubWF4KHAsZS5jLmMuYitvKX1mb3IoZj1uZXcgb2xiKGsuZSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEwKTtlLm4uYj1wK2UuZC5kO2M9ZS5jO2MuYy5iPXArZS5kLmQrZS5vLmIrZS5kLmE7altKa2IoYy5iLmIsYywwKV09ZS5rO2lbSmtiKGMuYi5iLGMsMCldPWV9fX1cbmZ1bmN0aW9uIExYYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07Zm9yKGQ9bmV3IFNyKHVyKF9zZChiKS5hLktjKCksbmV3IFNxKSk7UXIoZCk7KXtjPUJEKFJyKGQpLDc5KTtpZighSkQocXVkKCghYy5iJiYoYy5iPW5ldyB5NWQoejIsYyw0LDcpKSxjLmIpLDApLDE4Nikpe2k9YXRkKEJEKHF1ZCgoIWMuYyYmKGMuYz1uZXcgeTVkKHoyLGMsNSw4KSksYy5jKSwwKSw4MikpO2lmKCFQbGQoYykpe2c9Yi5pK2IuZy8yO2g9Yi5qK2IuZi8yO2s9aS5pK2kuZy8yO2w9aS5qK2kuZi8yO209bmV3IGQ3YzttLmE9ay1nO20uYj1sLWg7Zj1uZXcgZjdjKG0uYSxtLmIpO2w2YyhmLGIuZyxiLmYpO20uYS09Zi5hO20uYi09Zi5iO2c9ay1tLmE7aD1sLW0uYjtqPW5ldyBmN2MobS5hLG0uYik7bDZjKGosaS5nLGkuZik7bS5hLT1qLmE7bS5iLT1qLmI7az1nK20uYTtsPWgrbS5iO2U9aXRkKGMsdHJ1ZSx0cnVlKTtvbWQoZSxnKTtwbWQoZSxoKTtobWQoZSxrKTtpbWQoZSxsKTtMWGMoYSxpKX19fX1cbmZ1bmN0aW9uIGUwYyhhKXtyNGMoYSxuZXcgRTNjKFAzYyhNM2MoTzNjKE4zYyhuZXcgUjNjLFByZSksJ0VMSyBTUE9yRSBDb21wYWN0aW9uJyksJ1Nocmlua1RyZWUgaXMgYSBjb21wYWN0aW9uIGFsZ29yaXRobSB0aGF0IG1haW50YWlucyB0aGUgdG9wb2xvZ3kgb2YgYSBsYXlvdXQuIFRoZSByZWxvY2F0aW9uIG9mIGRpYWdyYW0gZWxlbWVudHMgaXMgYmFzZWQgb24gY29udHJhY3RpbmcgYSBzcGFubmluZyB0cmVlLicpLG5ldyBoMGMpKSk7cDRjKGEsUHJlLFFyZSxLc2QoYzBjKSk7cDRjKGEsUHJlLFJyZSxLc2QoX19jKSk7cDRjKGEsUHJlLFNyZSxLc2QoJF9jKSk7cDRjKGEsUHJlLFRyZSxLc2QoWV9jKSk7cDRjKGEsUHJlLFVyZSxLc2QoWl9jKSk7cDRjKGEsUHJlLGFtZSxYX2MpO3A0YyhhLFByZSx3bWUsOCk7cDRjKGEsUHJlLFZyZSxLc2QoYjBjKSk7cDRjKGEsUHJlLFdyZSxLc2QoVF9jKSk7cDRjKGEsUHJlLFhyZSxLc2QoVV9jKSk7cDRjKGEsUHJlLFpwZSwoQmNiKCksZmFsc2UpKX1cbmZ1bmN0aW9uIEpMYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO09kZChiLCdTaW1wbGUgbm9kZSBwbGFjZW1lbnQnLDEpO2w9QkQodk5iKGEsKHd0YygpLG90YykpLDMwNCk7aD0wO2ZvcihmPW5ldyBvbGIoYS5iKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMjkpO2c9ZC5jO2cuYj0wO2M9bnVsbDtmb3Ioaj1uZXcgb2xiKGQuYSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDEwKTshIWMmJihnLmIrPWhCYyhpLGMsbC5jKSk7Zy5iKz1pLmQuZCtpLm8uYitpLmQuYTtjPWl9aD0kd25kLk1hdGgubWF4KGgsZy5iKX1mb3IoZT1uZXcgb2xiKGEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI5KTtnPWQuYztrPShoLWcuYikvMjtjPW51bGw7Zm9yKGo9bmV3IG9sYihkLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMCk7ISFjJiYoays9aEJjKGksYyxsLmMpKTtrKz1pLmQuZDtpLm4uYj1rO2srPWkuby5iK2kuZC5hO2M9aX19UWRkKGIpfVxuZnVuY3Rpb24gczJkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGw7aWYoZC5nYygpPT0wKXtyZXR1cm4gZmFsc2V9aT0oUTZkKCksQkQoYiw2NikuT2ooKSk7Zz1pP2Q6bmV3IHp1ZChkLmdjKCkpO2lmKFQ2ZChhLmUsYikpe2lmKGIuaGkoKSl7Zm9yKGs9ZC5LYygpO2suT2IoKTspe2o9ay5QYigpO2lmKCFGMmQoYSxiLGosSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wKSl7Zj1SNmQoYixqKTtnLkZjKGYpfX19ZWxzZSBpZighaSl7Zm9yKGs9ZC5LYygpO2suT2IoKTspe2o9ay5QYigpO2Y9UjZkKGIsaik7Zy5GYyhmKX19fWVsc2V7bD1TNmQoYS5lLlRnKCksYik7ZT1CRChhLmcsMTE5KTtmb3IoaD0wO2g8YS5pOysraCl7Zj1lW2hdO2lmKGwucmwoZi5haygpKSl7dGhyb3cgdmJiKG5ldyBXZGIoSHdlKSl9fWlmKGQuZ2MoKT4xKXt0aHJvdyB2YmIobmV3IFdkYihId2UpKX1pZighaSl7Zj1SNmQoYixkLktjKCkuUGIoKSk7Zy5GYyhmKX19cmV0dXJuIHh0ZChhLEkyZChhLGIsYyksZyl9XG5mdW5jdGlvbiBQbWMoYSxiKXt2YXIgYyxkLGUsZjtKbWMoYi5iLmopO01BYihOQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYi5kLDE2KSksbmV3ICRtYyksbmV3IGFuYyk7Zm9yKGY9bmV3IG9sYihiLmQpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMDEpO3N3aXRjaChlLmUuZyl7Y2FzZSAwOmM9QkQoSWtiKGUuaiwwKSwxMTMpLmQuajttamMoZSxCRChCdGIoUkFiKEJEKFFjKGUuayxjKSwxNSkuT2MoKSxIbWMpKSwxMTMpKTtuamMoZSxCRChCdGIoUUFiKEJEKFFjKGUuayxjKSwxNSkuT2MoKSxIbWMpKSwxMTMpKTticmVhaztjYXNlIDE6ZD1Ca2MoZSk7bWpjKGUsQkQoQnRiKFJBYihCRChRYyhlLmssZFswXSksMTUpLk9jKCksSG1jKSksMTEzKSk7bmpjKGUsQkQoQnRiKFFBYihCRChRYyhlLmssZFsxXSksMTUpLk9jKCksSG1jKSksMTEzKSk7YnJlYWs7Y2FzZSAyOlJtYyhhLGUpO2JyZWFrO2Nhc2UgMzpRbWMoZSk7YnJlYWs7Y2FzZSA0Ok9tYyhhLGUpO31NbWMoZSl9YS5hPW51bGx9XG5mdW5jdGlvbiAkTWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7ZD1hLmEubz09KGVNYygpLGRNYyk/UGplOlFqZTtoPV9NYyhhLG5ldyBaTWMoYixjKSk7aWYoIWguYSYmaC5jKXtEc2IoYS5kLGgpO3JldHVybiBkfWVsc2UgaWYoaC5hKXtlPWguYS5jO2k9aC5hLmQ7aWYoYyl7aj1hLmEuYz09KFlMYygpLFhMYyk/aTplO2Y9YS5hLmM9PVhMYz9lOmk7Zz1hLmEuZ1tmLmkucF07az1FZGIoYS5hLnBbZy5wXSkrRWRiKGEuYS5kW2YuaS5wXSkrZi5uLmIrZi5hLmItRWRiKGEuYS5kW2ouaS5wXSktai5uLmItai5hLmJ9ZWxzZXtqPWEuYS5jPT0oWUxjKCksV0xjKT9pOmU7Zj1hLmEuYz09V0xjP2U6aTtrPUVkYihhLmEucFthLmEuZ1tmLmkucF0ucF0pK0VkYihhLmEuZFtmLmkucF0pK2Yubi5iK2YuYS5iLUVkYihhLmEuZFtqLmkucF0pLWoubi5iLWouYS5ifWEuYS5uW2EuYS5nW2UuaS5wXS5wXT0oQmNiKCksdHJ1ZSk7YS5hLm5bYS5hLmdbaS5pLnBdLnBdPXRydWU7cmV0dXJuIGt9cmV0dXJuIGR9XG5mdW5jdGlvbiBmM2QoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7aWYoVDZkKGEuZSxiKSl7aT0oUTZkKCksQkQoYiw2NikuT2ooKT9uZXcgUjdkKGIsYSk6bmV3IGY3ZChiLGEpKTtEMmQoaS5jLGkuYik7YjdkKGksQkQoYywxNCkpfWVsc2V7az1TNmQoYS5lLlRnKCksYik7ZD1CRChhLmcsMTE5KTtmb3IoZz0wO2c8YS5pOysrZyl7ZT1kW2ddO2Y9ZS5haygpO2lmKGsucmwoZikpe2lmKGY9PShtOGQoKSxrOGQpfHxmPT1oOGQpe2o9bTNkKGEsYixjKTtoPWc7aj9YeGQoYSxnKTorK2c7d2hpbGUoZzxhLmkpe2U9ZFtnXTtmPWUuYWsoKTtmPT1rOGR8fGY9PWg4ZD9YeGQoYSxnKTorK2d9anx8QkQoR3RkKGEsaCxSNmQoYixjKSksNzIpfWVsc2UgbTNkKGEsYixjKT9YeGQoYSxnKTpCRChHdGQoYSxnLChRNmQoKSxCRChiLDY2KS5PaigpP0JEKGMsNzIpOlI2ZChiLGMpKSksNzIpO3JldHVybn19bTNkKGEsYixjKXx8d3RkKGEsKFE2ZCgpLEJEKGIsNjYpLk9qKCk/QkQoYyw3Mik6UjZkKGIsYykpKX19XG5mdW5jdGlvbiBJTWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7aWYoIXBiKGMsYS5iKSl7YS5iPWM7Zj1uZXcgTE1iO2c9QkQoR0FiKE5BYihuZXcgWUFiKG51bGwsbmV3IEt1YihjLmYsMTYpKSxmKSxBeWIobmV3IGh6YixuZXcganpiLG5ldyBHemIsbmV3IEl6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsWyhGeWIoKSxFeWIpLER5Yl0pKSksMjEpO2EuZT10cnVlO2EuZj10cnVlO2EuYz10cnVlO2EuZD10cnVlO2U9Zy5IYygoUk1iKCksT01iKSk7ZD1nLkhjKFBNYik7ZSYmIWQmJihhLmY9ZmFsc2UpOyFlJiZkJiYoYS5kPWZhbHNlKTtlPWcuSGMoTk1iKTtkPWcuSGMoUU1iKTtlJiYhZCYmKGEuYz1mYWxzZSk7IWUmJmQmJihhLmU9ZmFsc2UpfWs9QkQoYS5hLkNlKGIsYyksNDYpO2k9QkQoay5hLDE5KS5hO2o9QkQoay5iLDE5KS5hO2g9ZmFsc2U7aTwwP2EuY3x8KGg9dHJ1ZSk6YS5lfHwoaD10cnVlKTtqPDA/YS5kfHwoaD10cnVlKTphLmZ8fChoPXRydWUpO3JldHVybiBoP0lNYihhLGssYyk6a31cbmZ1bmN0aW9uIG9LYihhKXt2YXIgYixjLGQsZTtlPWEubzskSmIoKTtpZihhLkEuZGMoKXx8cGIoYS5BLFpKYikpe2I9ZS5ifWVsc2V7Yj1mSWIoYS5mKTtpZihhLkEuSGMoKHRkZCgpLHFkZCkpJiYhYS5CLkhjKChJZGQoKSxFZGQpKSl7Yj0kd25kLk1hdGgubWF4KGIsZkliKEJEKE1wYihhLnAsKFVjZCgpLHpjZCkpLDI0NCkpKTtiPSR3bmQuTWF0aC5tYXgoYixmSWIoQkQoTXBiKGEucCxUY2QpLDI0NCkpKX1jPWFLYihhKTshIWMmJihiPSR3bmQuTWF0aC5tYXgoYixjLmIpKTtpZihhLkEuSGMocmRkKSl7aWYoYS5xPT0oZGNkKCksX2JkKXx8YS5xPT0kYmQpe2I9JHduZC5NYXRoLm1heChiLF9HYihCRChNcGIoYS5iLChVY2QoKSx6Y2QpKSwxMjQpKSk7Yj0kd25kLk1hdGgubWF4KGIsX0diKEJEKE1wYihhLmIsVGNkKSwxMjQpKSl9fX1DY2IoREQoYS5lLnlmKCkuV2UoKFk5YygpLCQ4YykpKSk/KGUuYj0kd25kLk1hdGgubWF4KGUuYixiKSk6KGUuYj1iKTtkPWEuZi5pO2QuZD0wO2QuYT1iO2lJYihhLmYpfVxuZnVuY3Rpb24gJEljKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scDtmb3IobD0wO2w8Yi5sZW5ndGg7bCsrKXtmb3IoaD1hLktjKCk7aC5PYigpOyl7Zj1CRChoLlBiKCksMjI1KTtmLk9mKGwsYil9Zm9yKG09MDttPGJbbF0ubGVuZ3RoO20rKyl7Zm9yKGk9YS5LYygpO2kuT2IoKTspe2Y9QkQoaS5QYigpLDIyNSk7Zi5QZihsLG0sYil9cD1iW2xdW21dLmo7Zm9yKG49MDtuPHAuYy5sZW5ndGg7bisrKXtmb3Ioaj1hLktjKCk7ai5PYigpOyl7Zj1CRChqLlBiKCksMjI1KTtmLlFmKGwsbSxuLGIpfW89KHRDYihuLHAuYy5sZW5ndGgpLEJEKHAuY1tuXSwxMSkpO2M9MDtmb3IoZT1uZXcgYjFiKG8uYik7bGxiKGUuYSl8fGxsYihlLmIpOyl7ZD1CRChsbGIoZS5hKT9tbGIoZS5hKTptbGIoZS5iKSwxNyk7Zm9yKGs9YS5LYygpO2suT2IoKTspe2Y9QkQoay5QYigpLDIyNSk7Zi5OZihsLG0sbixjKyssZCxiKX19fX19Zm9yKGc9YS5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDIyNSk7Zi5NZigpfX1cbmZ1bmN0aW9uIEo0YihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2EuYj1FZGIoRUQodk5iKGIsKE55YygpLG15YykpKSk7YS5jPUVkYihFRCh2TmIoYixweWMpKSk7YS5kPUJEKHZOYihiLFh3YyksMzM2KTthLmE9QkQodk5iKGIsc3djKSwyNzUpO0g0YihiKTtoPUJEKEdBYihKQWIoSkFiKExBYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYi5iLDE2KSksbmV3IE40YiksbmV3IFA0YiksbmV3IFI0YiksbmV3IFQ0YiksQnliKG5ldyBmemIsbmV3IGR6YixuZXcgRXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLER5YildKSkpLDE1KTtmb3IoZT1oLktjKCk7ZS5PYigpOyl7Yz1CRChlLlBiKCksMTcpO2c9QkQodk5iKGMsKHd0YygpLHJ0YykpLDE1KTtnLkpjKG5ldyBWNGIoYSkpO3lOYihjLHJ0YyxudWxsKX1mb3IoZD1oLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMTcpO2k9QkQodk5iKGMsKHd0YygpLHN0YykpLDE3KTtmPUJEKHZOYihjLHB0YyksMTUpO0I0YihhLGYsaSk7eU5iKGMscHRjLG51bGwpfX1cbmZ1bmN0aW9uIHVaZChhKXthLmI9bnVsbDthLmE9bnVsbDthLm89bnVsbDthLnE9bnVsbDthLnY9bnVsbDthLnc9bnVsbDthLkI9bnVsbDthLnA9bnVsbDthLlE9bnVsbDthLlI9bnVsbDthLlM9bnVsbDthLlQ9bnVsbDthLlU9bnVsbDthLlY9bnVsbDthLlc9bnVsbDthLmJiPW51bGw7YS5lYj1udWxsO2EuYWI9bnVsbDthLkg9bnVsbDthLmRiPW51bGw7YS5jPW51bGw7YS5kPW51bGw7YS5mPW51bGw7YS5uPW51bGw7YS5yPW51bGw7YS5zPW51bGw7YS51PW51bGw7YS5HPW51bGw7YS5KPW51bGw7YS5lPW51bGw7YS5qPW51bGw7YS5pPW51bGw7YS5nPW51bGw7YS5rPW51bGw7YS50PW51bGw7YS5GPW51bGw7YS5JPW51bGw7YS5MPW51bGw7YS5NPW51bGw7YS5PPW51bGw7YS5QPW51bGw7YS4kPW51bGw7YS5OPW51bGw7YS5aPW51bGw7YS5jYj1udWxsO2EuSz1udWxsO2EuRD1udWxsO2EuQT1udWxsO2EuQz1udWxsO2EuXz1udWxsO2EuZmI9bnVsbDthLlg9bnVsbDthLlk9bnVsbDthLmdiPWZhbHNlO2EuaGI9ZmFsc2V9XG5mdW5jdGlvbiBiS2MoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqO2lmKGEuayE9KGowYigpLGgwYikpe3JldHVybiBmYWxzZX1pZihhLmouYy5sZW5ndGg8PTEpe3JldHVybiBmYWxzZX1mPUJEKHZOYihhLChOeWMoKSxWeGMpKSw5OCk7aWYoZj09KGRjZCgpLCRiZCkpe3JldHVybiBmYWxzZX1lPShJemMoKSwoIWEucT8obW1iKCksbW1iKCksa21iKTphLnEpLl9iKEN4Yyk/KGQ9QkQodk5iKGEsQ3hjKSwxOTcpKTooZD1CRCh2TmIoUV9iKGEpLER4YyksMTk3KSksZCk7aWYoZT09R3pjKXtyZXR1cm4gZmFsc2V9aWYoIShlPT1GemN8fGU9PUV6Yykpe2c9RWRiKEVEKHBCYyhhLHp5YykpKTtiPUJEKHZOYihhLHl5YyksMTQyKTshYiYmKGI9bmV3IEpfYihnLGcsZyxnKSk7aj1WX2IoYSwoVWNkKCksVGNkKSk7aT1iLmQrYi5hKyhqLmdjKCktMSkqZztpZihpPmEuby5iKXtyZXR1cm4gZmFsc2V9Yz1WX2IoYSx6Y2QpO2g9Yi5kK2IuYSsoYy5nYygpLTEpKmc7aWYoaD5hLm8uYil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1cbmZ1bmN0aW9uIHRoYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2c9YS5lO2k9Yi5lO2lmKGc9PTApe3JldHVybiBifWlmKGk9PTApe3JldHVybiBhfWY9YS5kO2g9Yi5kO2lmKGYraD09Mil7Yz14YmIoYS5hWzBdLFlqZSk7ZD14YmIoYi5hWzBdLFlqZSk7aWYoZz09aSl7az13YmIoYyxkKTtvPVRiYihrKTtuPVRiYihQYmIoaywzMikpO3JldHVybiBuPT0wP25ldyBVZ2IoZyxvKTpuZXcgVmdiKGcsMixPQyhHQyhXRCwxKSxvamUsMjUsMTUsW28sbl0pKX1yZXR1cm4gZ2hiKGc8MD9RYmIoZCxjKTpRYmIoYyxkKSl9ZWxzZSBpZihnPT1pKXttPWc7bD1mPj1oP3VoYihhLmEsZixiLmEsaCk6dWhiKGIuYSxoLGEuYSxmKX1lbHNle2U9ZiE9aD9mPmg/MTotMTp3aGIoYS5hLGIuYSxmKTtpZihlPT0wKXtyZXR1cm4gSGdiKCksR2difWlmKGU9PTEpe209ZztsPXpoYihhLmEsZixiLmEsaCl9ZWxzZXttPWk7bD16aGIoYi5hLGgsYS5hLGYpfX1qPW5ldyBWZ2IobSxsLmxlbmd0aCxsKTtKZ2Ioaik7cmV0dXJuIGp9XG5mdW5jdGlvbiBvWmIoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaSxqLGssbCxtLG47bD1DY2IoREQodk5iKGIsKE55YygpLHZ4YykpKSk7bT1udWxsO2Y9PShLQWMoKSxIQWMpJiZkLmMuaT09Yz8obT1kLmMpOmY9PUlBYyYmZC5kLmk9PWMmJihtPWQuZCk7aj1nO2lmKCFqfHwhbHx8ISFtKXtrPShVY2QoKSxTY2QpO20/KGs9bS5qKTpmY2QoQkQodk5iKGMsVnhjKSw5OCkpJiYoaz1mPT1IQWM/VGNkOnpjZCk7aT1sWmIoYSxiLGMsZixrLGQpO2g9a1piKChRX2IoYyksZCkpO2lmKGY9PUhBYyl7UVpiKGgsQkQoSWtiKGkuaiwwKSwxMSkpO1JaYihoLGUpfWVsc2V7UVpiKGgsZSk7UlpiKGgsQkQoSWtiKGkuaiwwKSwxMSkpfWo9bmV3IHlaYihkLGgsaSxCRCh2TmIoaSwod3RjKCksJHNjKSksMTEpLGYsIW0pfWVsc2V7RWtiKGouZSxkKTtuPSR3bmQuTWF0aC5tYXgoRWRiKEVEKHZOYihqLmQsWndjKSkpLEVkYihFRCh2TmIoZCxad2MpKSkpO3lOYihqLmQsWndjLG4pfVJjKGEuYSxkLG5ldyBCWmIoai5kLGIsZikpO3JldHVybiBqfVxuZnVuY3Rpb24gVjFkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7az1udWxsOyEhYS5kJiYoaz1CRChQaGIoYS5kLGIpLDEzOCkpO2lmKCFrKXtmPWEuYS5NaCgpO2w9Zi5pO2lmKCFhLmR8fFZoYihhLmQpIT1sKXtpPW5ldyBMcWI7ISFhLmQmJkxkKGksYS5kKTtqPWkuZi5jK2kuZy5jO2ZvcihoPWo7aDxsOysraCl7ZD1CRChxdWQoZixoKSwxMzgpO2U9bzFkKGEuZSxkKS5uZSgpO2M9QkQoZT09bnVsbD9qcmIoaS5mLG51bGwsZCk6RHJiKGkuZyxlLGQpLDEzOCk7ISFjJiZjIT1kJiYoZT09bnVsbD9qcmIoaS5mLG51bGwsYyk6RHJiKGkuZyxlLGMpKX1pZihpLmYuYytpLmcuYyE9bCl7Zm9yKGc9MDtnPGo7KytnKXtkPUJEKHF1ZChmLGcpLDEzOCk7ZT1vMWQoYS5lLGQpLm5lKCk7Yz1CRChlPT1udWxsP2pyYihpLmYsbnVsbCxkKTpEcmIoaS5nLGUsZCksMTM4KTshIWMmJmMhPWQmJihlPT1udWxsP2pyYihpLmYsbnVsbCxjKTpEcmIoaS5nLGUsYykpfX1hLmQ9aX1rPUJEKFBoYihhLmQsYiksMTM4KX1yZXR1cm4ga31cbmZ1bmN0aW9uIGxaYihhLGIsYyxkLGUsZil7dmFyIGcsaCxpLGosayxsO2c9bnVsbDtqPWQ9PShLQWMoKSxIQWMpP2YuYzpmLmQ7aT1hX2IoYik7aWYoai5pPT1jKXtnPUJEKE9oYihhLmIsaiksMTApO2lmKCFnKXtnPVokYihqLEJEKHZOYihjLChOeWMoKSxWeGMpKSw5OCksZSxoWmIoaiksbnVsbCxqLm4sai5vLGksYik7eU5iKGcsKHd0YygpLCRzYyksaik7UmhiKGEuYixqLGcpfX1lbHNle2c9WiRiKChrPW5ldyB6TmIsbD1FZGIoRUQodk5iKGIsKE55YygpLGx5YykpKSkvMix4TmIoayxVeGMsbCksayksQkQodk5iKGMsVnhjKSw5OCksZSxkPT1IQWM/LTE6MSxudWxsLG5ldyBkN2MsbmV3IGY3YygwLDApLGksYik7aD1tWmIoZyxjLGQpO3lOYihnLCh3dGMoKSwkc2MpLGgpO1JoYihhLmIsaCxnKX1CRCh2TmIoYiwod3RjKCksS3NjKSksMjEpLkZjKChPcmMoKSxIcmMpKTtmY2QoQkQodk5iKGIsKE55YygpLFZ4YykpLDk4KSk/eU5iKGIsVnhjLChkY2QoKSxhY2QpKTp5TmIoYixWeGMsKGRjZCgpLGJjZCkpO3JldHVybiBnfVxuZnVuY3Rpb24gdk5jKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO09kZChiLCdPcnRob2dvbmFsIGVkZ2Ugcm91dGluZycsMSk7aj1FZGIoRUQodk5iKGEsKE55YygpLHd5YykpKSk7Yz1FZGIoRUQodk5iKGEsbXljKSkpO2Q9RWRiKEVEKHZOYihhLHB5YykpKTttPW5ldyB0UGMoMCxjKTtxPTA7Zz1uZXcgQmliKGEuYiwwKTtoPW51bGw7az1udWxsO2k9bnVsbDtsPW51bGw7ZG97az1nLmI8Zy5kLmdjKCk/KHNDYihnLmI8Zy5kLmdjKCkpLEJEKGcuZC5YYihnLmM9Zy5iKyspLDI5KSk6bnVsbDtsPSFrP251bGw6ay5hO2lmKGgpe2hfYihoLHEpO3ErPWguYy5hfXA9IWg/cTpxK2Q7bz1zUGMobSxhLGksbCxwKTtlPSFofHxLcShpLChGTmMoKSxETmMpKTtmPSFrfHxLcShsLChGTmMoKSxETmMpKTtpZihvPjApe249KG8tMSkqYzshIWgmJihuKz1kKTshIWsmJihuKz1kKTtuPGomJiFlJiYhZiYmKG49aik7cSs9bn1lbHNlICFlJiYhZiYmKHErPWopO2g9aztpPWx9d2hpbGUoayk7YS5mLmE9cTtRZGQoYil9XG5mdW5jdGlvbiBJRWQoKXtJRWQ9Y2NiO3ZhciBhO0hFZD1uZXcgbUZkO0JFZD1LQyhaSSxuaWUsMiwwLDYsMSk7dUVkPU1iYihaRWQoMzMsNTgpLFpFZCgxLDI2KSk7dkVkPU1iYihaRWQoOTcsMTIyKSxaRWQoNjUsOTApKTt3RWQ9WkVkKDQ4LDU3KTtzRWQ9TWJiKHVFZCwwKTt0RWQ9TWJiKHZFZCx3RWQpO3hFZD1NYmIoTWJiKDAsWkVkKDEsNikpLFpFZCgzMywzOCkpO3lFZD1NYmIoTWJiKHdFZCxaRWQoNjUsNzApKSxaRWQoOTcsMTAyKSk7RUVkPU1iYihzRWQsWEVkKFwiLV8uIX4qJygpXCIpKTtGRWQ9TWJiKHRFZCwkRWQoXCItXy4hfionKClcIikpO1hFZChsdmUpOyRFZChsdmUpO01iYihFRWQsWEVkKCc7OkAmPSskLCcpKTtNYmIoRkVkLCRFZCgnOzpAJj0rJCwnKSk7ekVkPVhFZCgnOi8/IycpO0FFZD0kRWQoJzovPyMnKTtDRWQ9WEVkKCcvPyMnKTtERWQ9JEVkKCcvPyMnKTthPW5ldyBUcWI7YS5hLnpjKCdqYXInLGEpO2EuYS56YygnemlwJyxhKTthLmEuemMoJ2FyY2hpdmUnLGEpO0dFZD0obW1iKCksbmV3IHpvYihhKSl9XG5mdW5jdGlvbiB5VWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbDt5TmIoYiwobVRjKCksY1RjKSwwKTtpPUJEKHZOYihiLGFUYyksODYpO2lmKGIuZC5iPT0wKXtpZihpKXtrPUVkYihFRCh2TmIoaSxmVGMpKSkrYS5hK3pVYyhpLGIpO3lOYihiLGZUYyxrKX1lbHNle3lOYihiLGZUYywwKX19ZWxzZXtmb3IoZD0oZj1Kc2IoKG5ldyBaUmMoYikpLmEuZCwwKSxuZXcgYVNjKGYpKTtXc2IoZC5hKTspe2M9QkQoWHNiKGQuYSksMTg4KS5jO3lVYyhhLGMpfWg9QkQocHIoKGc9SnNiKChuZXcgWlJjKGIpKS5hLmQsMCksbmV3IGFTYyhnKSkpLDg2KTtsPUJEKG9yKChlPUpzYigobmV3IFpSYyhiKSkuYS5kLDApLG5ldyBhU2MoZSkpKSw4Nik7aj0oRWRiKEVEKHZOYihsLGZUYykpKStFZGIoRUQodk5iKGgsZlRjKSkpKS8yO2lmKGkpe2s9RWRiKEVEKHZOYihpLGZUYykpKSthLmErelVjKGksYik7eU5iKGIsZlRjLGspO3lOYihiLGNUYyxFZGIoRUQodk5iKGIsZlRjKSkpLWopO3hVYyhhLGIpfWVsc2V7eU5iKGIsZlRjLGopfX19XG5mdW5jdGlvbiBEYmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbztoPTA7bz0wO2k9dGxiKGEuZixhLmYubGVuZ3RoKTtmPWEuZDtnPWEuaTtkPWEuYTtlPWEuYjtkb3tuPTA7Zm9yKGs9bmV3IG9sYihhLnApO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMCk7bT1DYmMoYSxqKTtjPXRydWU7KGEucT09KGtBYygpLGRBYyl8fGEucT09Z0FjKSYmKGM9Q2NiKEREKG0uYikpKTtpZihCRChtLmEsMTkpLmE8MCYmYyl7KytuO2k9dGxiKGEuZixhLmYubGVuZ3RoKTthLmQ9YS5kK0JEKG0uYSwxOSkuYTtvKz1mLWEuZDtmPWEuZCtCRChtLmEsMTkpLmE7Zz1hLmk7ZD1NdShhLmEpO2U9TXUoYS5iKX1lbHNle2EuZj10bGIoaSxpLmxlbmd0aCk7YS5kPWY7YS5hPShRYihkKSxkP25ldyBUa2IoZCk6TnUobmV3IG9sYihkKSkpO2EuYj0oUWIoZSksZT9uZXcgVGtiKGUpOk51KG5ldyBvbGIoZSkpKTthLmk9Z319KytoO2w9biE9MCYmQ2NiKEREKGIuS2IobmV3IHZnZChtZWIobyksbWViKGgpKSkpKX13aGlsZShsKX1cbmZ1bmN0aW9uIGxZYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQztnPWEuZjttPWIuZjtoPWc9PShrJGMoKSxmJGMpfHxnPT1oJGM7bj1tPT1mJGN8fG09PWgkYztpPWc9PWckY3x8Zz09aSRjO289bT09ZyRjfHxtPT1pJGM7aj1nPT1nJGN8fGc9PWYkYztwPW09PWckY3x8bT09ZiRjO2lmKGgmJm4pe3JldHVybiBhLmY9PWgkYz9hOmJ9ZWxzZSBpZihpJiZvKXtyZXR1cm4gYS5mPT1pJGM/YTpifWVsc2UgaWYoaiYmcCl7aWYoZz09ZyRjKXtsPWE7az1ifWVsc2V7bD1iO2s9YX1mPShxPWMuaitjLmYscj1sLmUrZC5mLHM9JHduZC5NYXRoLm1heChxLHIpLHQ9cy0kd25kLk1hdGgubWluKGMuaixsLmUpLHU9bC5kK2QuZy1jLmksdSp0KTtlPSh2PWMuaStjLmcsdz1rLmQrZC5nLEE9JHduZC5NYXRoLm1heCh2LHcpLEI9QS0kd25kLk1hdGgubWluKGMuaSxrLmQpLEM9ay5lK2QuZi1jLmosQipDKTtyZXR1cm4gZjw9ZT9hLmY9PWckYz9hOmI6YS5mPT1mJGM/YTpifXJldHVybiBhfVxuZnVuY3Rpb24gd0diKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGw7az1hLmUuYS5jLmxlbmd0aDtmb3IoZz1uZXcgb2xiKGEuZS5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTIxKTtmLmo9ZmFsc2V9YS5pPUtDKFdELG9qZSwyNSxrLDE1LDEpO2EuZz1LQyhXRCxvamUsMjUsaywxNSwxKTthLm49bmV3IFJrYjtlPTA7bD1uZXcgUmtiO2ZvcihpPW5ldyBvbGIoYS5lLmEpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMjEpO2guZD1lKys7aC5iLmEuYy5sZW5ndGg9PTAmJkVrYihhLm4saCk7R2tiKGwsaC5nKX1iPTA7Zm9yKGQ9bmV3IG9sYihsKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjEzKTtjLmM9YisrO2MuZj1mYWxzZX1qPWwuYy5sZW5ndGg7aWYoYS5iPT1udWxsfHxhLmIubGVuZ3RoPGope2EuYj1LQyhVRCxWamUsMjUsaiwxNSwxKTthLmM9S0Moc2JiLGRsZSwyNSxqLDE2LDEpfWVsc2V7QmxiKGEuYyl9YS5kPWw7YS5wPW5ldyBBc2IoQ3YoYS5kLmMubGVuZ3RoKSk7YS5qPTF9XG5mdW5jdGlvbiBzVGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aWYoYi5lLmMubGVuZ3RoPD0xKXtyZXR1cm59YS5mPWI7YS5kPUJEKHZOYihhLmYsKGJUYigpLFNTYikpLDM3OSk7YS5nPUJEKHZOYihhLmYsV1NiKSwxOSkuYTthLmU9RWRiKEVEKHZOYihhLmYsVFNiKSkpO2EuYz1FZGIoRUQodk5iKGEuZixSU2IpKSk7aXQoYS5iKTtmb3IoZT1uZXcgb2xiKGEuZi5jKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjgyKTtodChhLmIsZC5jLGQsbnVsbCk7aHQoYS5iLGQuZCxkLG51bGwpfWg9YS5mLmUuYy5sZW5ndGg7YS5hPUlDKFVELFtuaWUsVmplXSxbMTA0LDI1XSwxNSxbaCxoXSwyKTtmb3Ioaj1uZXcgb2xiKGEuZi5lKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTQ0KTtvVGIoYSxpLGEuYVtpLmJdKX1hLmk9SUMoVUQsW25pZSxWamVdLFsxMDQsMjVdLDE1LFtoLGhdLDIpO2ZvcihmPTA7ZjxoOysrZil7Zm9yKGc9MDtnPGg7KytnKXtjPWEuYVtmXVtnXTtrPTEvKGMqYyk7YS5pW2ZdW2ddPWt9fX1cbmZ1bmN0aW9uIFZmZShhKXt2YXIgYixjLGQsZTtpZihhLmI9PW51bGx8fGEuYi5sZW5ndGg8PTIpcmV0dXJuO2lmKGEuYSlyZXR1cm47Yj0wO2U9MDt3aGlsZShlPGEuYi5sZW5ndGgpe2lmKGIhPWUpe2EuYltiXT1hLmJbZSsrXTthLmJbYisxXT1hLmJbZSsrXX1lbHNlIGUrPTI7Yz1hLmJbYisxXTt3aGlsZShlPGEuYi5sZW5ndGgpe2lmKGMrMTxhLmJbZV0pYnJlYWs7aWYoYysxPT1hLmJbZV0pe2EuYltiKzFdPWEuYltlKzFdO2M9YS5iW2IrMV07ZSs9Mn1lbHNlIGlmKGM+PWEuYltlKzFdKXtlKz0yfWVsc2UgaWYoYzxhLmJbZSsxXSl7YS5iW2IrMV09YS5iW2UrMV07Yz1hLmJbYisxXTtlKz0yfWVsc2V7dGhyb3cgdmJiKG5ldyBoeignVG9rZW4jY29tcGFjdFJhbmdlcygpOiBJbnRlcm5lbCBFcnJvcjogWycrYS5iW2JdKycsJythLmJbYisxXSsnXSBbJythLmJbZV0rJywnK2EuYltlKzFdKyddJykpfX1iKz0yfWlmKGIhPWEuYi5sZW5ndGgpe2Q9S0MoV0Qsb2plLDI1LGIsMTUsMSk7JGZiKGEuYiwwLGQsMCxiKTthLmI9ZH1hLmE9dHJ1ZX1cbmZ1bmN0aW9uIHBaYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO2ZvcihnPUVjKGEuYSkuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxNyk7aWYoZi5iLmMubGVuZ3RoPjApe2Q9bmV3IFRrYihCRChRYyhhLmEsZiksMjEpKTttbWIoKTtPa2IoZCxuZXcgRVpiKGIpKTtlPW5ldyBCaWIoZi5iLDApO3doaWxlKGUuYjxlLmQuZ2MoKSl7Yz0oc0NiKGUuYjxlLmQuZ2MoKSksQkQoZS5kLlhiKGUuYz1lLmIrKyksNzApKTtoPS0xO3N3aXRjaChCRCh2TmIoYywoTnljKCksUXdjKSksMjcyKS5nKXtjYXNlIDE6aD1kLmMubGVuZ3RoLTE7YnJlYWs7Y2FzZSAwOmg9blpiKGQpO2JyZWFrO2Nhc2UgMjpoPTA7fWlmKGghPS0xKXtpPSh0Q2IoaCxkLmMubGVuZ3RoKSxCRChkLmNbaF0sMjQzKSk7RWtiKGkuYi5iLGMpO0JEKHZOYihRX2IoaS5iLmMuaSksKHd0YygpLEtzYykpLDIxKS5GYygoT3JjKCksR3JjKSk7QkQodk5iKFFfYihpLmIuYy5pKSxLc2MpLDIxKS5GYyhFcmMpO3VpYihlKTt5TmIoYyxidGMsZil9fX1RWmIoZixudWxsKTtSWmIoZixudWxsKX19XG5mdW5jdGlvbiBGTGIoYSxiKXt2YXIgYyxkLGUsZjtjPW5ldyBLTGI7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbKEZ5YigpLEV5YiksRHliXSkpKSwyMSk7ZT1kLmdjKCk7ZT1lPT0yPzE6MDtlPT0xJiZCYmIoSGJiKEJEKEdBYihKQWIoZC5MYygpLG5ldyBNTGIpLFh5YihBZWIoMCksbmV3IEN6YikpLDE2MikuYSwyKSwwKSYmKGU9MCk7ZD1CRChHQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGIuZiwxNikpLGMpLEF5YihuZXcgaHpiLG5ldyBqemIsbmV3IEd6YixuZXcgSXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbRXliLER5Yl0pKSksMjEpO2Y9ZC5nYygpO2Y9Zj09Mj8xOjA7Zj09MSYmQmJiKEhiYihCRChHQWIoSkFiKGQuTGMoKSxuZXcgT0xiKSxYeWIoQWViKDApLG5ldyBDemIpKSwxNjIpLmEsMiksMCkmJihmPTApO2lmKGU8Zil7cmV0dXJuIC0xfWlmKGU9PWYpe3JldHVybiAwfXJldHVybiAxfVxuZnVuY3Rpb24gaDZiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuO2o9bmV3IFJrYjtpZighd05iKGEsKHd0YygpLEZzYykpKXtyZXR1cm4gan1mb3IoZD1CRCh2TmIoYSxGc2MpLDE1KS5LYygpO2QuT2IoKTspe2I9QkQoZC5QYigpLDEwKTtnNmIoYixhKTtqLmNbai5jLmxlbmd0aF09Yn1mb3IoZj1uZXcgb2xiKGEuYik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDI5KTtmb3IoaD1uZXcgb2xiKGUuYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEwKTtpZihnLmshPShqMGIoKSxlMGIpKXtjb250aW51ZX1pPUJEKHZOYihnLEdzYyksMTApOyEhaSYmKGs9bmV3IEgwYixGMGIoayxnKSxsPUJEKHZOYihnLEhzYyksNjEpLEcwYihrLGwpLG09QkQoSWtiKGkuaiwwKSwxMSksbj1uZXcgVVpiLFFaYihuLGspLFJaYihuLG0pLHVuZGVmaW5lZCl9fWZvcihjPW5ldyBvbGIoaik7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDEwKTskX2IoYixCRChJa2IoYS5iLGEuYi5jLmxlbmd0aC0xKSwyOSkpfXJldHVybiBqfVxuZnVuY3Rpb24gTTFiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbTtiPW1wZChhKTtmPUNjYihERChoa2QoYiwoTnljKCksZnhjKSkpKTtrPTA7ZT0wO2ZvcihqPW5ldyBGeWQoKCFhLmUmJihhLmU9bmV3IHk1ZChCMixhLDcsNCkpLGEuZSkpO2ouZSE9ai5pLmdjKCk7KXtpPUJEKER5ZChqKSw3OSk7aD1RbGQoaSk7Zz1oJiZmJiZDY2IoREQoaGtkKGksZ3hjKSkpO209YXRkKEJEKHF1ZCgoIWkuYyYmKGkuYz1uZXcgeTVkKHoyLGksNSw4KSksaS5jKSwwKSw4MikpO2gmJmc/KytlOmgmJiFnPysrazpYb2QobSk9PWJ8fG09PWI/KytlOisra31mb3IoZD1uZXcgRnlkKCghYS5kJiYoYS5kPW5ldyB5NWQoQjIsYSw4LDUpKSxhLmQpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksNzkpO2g9UWxkKGMpO2c9aCYmZiYmQ2NiKEREKGhrZChjLGd4YykpKTtsPWF0ZChCRChxdWQoKCFjLmImJihjLmI9bmV3IHk1ZCh6MixjLDQsNykpLGMuYiksMCksODIpKTtoJiZnPysrazpoJiYhZz8rK2U6WG9kKGwpPT1ifHxsPT1iPysrazorK2V9cmV0dXJuIGstZX1cbmZ1bmN0aW9uIHViYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbjtPZGQoYiwnRWRnZSBzcGxpdHRpbmcnLDEpO2lmKGEuYi5jLmxlbmd0aDw9Mil7UWRkKGIpO3JldHVybn1mPW5ldyBCaWIoYS5iLDApO2c9KHNDYihmLmI8Zi5kLmdjKCkpLEJEKGYuZC5YYihmLmM9Zi5iKyspLDI5KSk7d2hpbGUoZi5iPGYuZC5nYygpKXtlPWc7Zz0oc0NiKGYuYjxmLmQuZ2MoKSksQkQoZi5kLlhiKGYuYz1mLmIrKyksMjkpKTtmb3IoaT1uZXcgb2xiKGUuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtmb3Ioaz1uZXcgb2xiKGguaik7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDExKTtmb3IoZD1uZXcgb2xiKGouZyk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE3KTttPWMuZDtsPW0uaS5jO2whPWUmJmwhPWcmJnpiYyhjLChuPW5ldyBiMGIoYSksX19iKG4sKGowYigpLGcwYikpLHlOYihuLCh3dGMoKSwkc2MpLGMpLHlOYihuLChOeWMoKSxWeGMpLChkY2QoKSwkYmQpKSwkX2IobixnKSxuKSl9fX19UWRkKGIpfVxuZnVuY3Rpb24gTVRiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG87aD1iLnAhPW51bGwmJiFiLmI7aHx8T2RkKGIsa21lLDEpO2M9QkQodk5iKGEsKHd0YygpLGl0YykpLDE1KTtnPTEvYy5nYygpO2lmKGIubil7U2RkKGIsJ0VMSyBMYXllcmVkIHVzZXMgdGhlIGZvbGxvd2luZyAnK2MuZ2MoKSsnIG1vZHVsZXM6Jyk7bj0wO2ZvcihtPWMuS2MoKTttLk9iKCk7KXtrPUJEKG0uUGIoKSw1MSk7ZD0objwxMD8nMCc6JycpK24rKztTZGQoYiwnICAgU2xvdCAnK2QrJzogJytoZGIocmIoaykpKX19bz0wO2ZvcihsPWMuS2MoKTtsLk9iKCk7KXtrPUJEKGwuUGIoKSw1MSk7ay5wZihhLFVkZChiLGcpKTsrK299Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyOSk7R2tiKGEuYSxlLmEpO2UuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKX1mb3Ioaj1uZXcgb2xiKGEuYSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDEwKTskX2IoaSxudWxsKX1hLmIuYz1LQyhTSSxVaGUsMSwwLDUsMSk7aHx8UWRkKGIpfVxuZnVuY3Rpb24ga0pjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEE7ZD1FZGIoRUQodk5iKGIsKE55YygpLEJ4YykpKSk7dj1CRCh2TmIoYixBeWMpLDE5KS5hO209NDtlPTM7dz0yMC92O249ZmFsc2U7aT0wO2c9T2hlO2Rve2Y9aSE9MTtsPWkhPTA7QT0wO2ZvcihxPWEuYSxzPTAsdT1xLmxlbmd0aDtzPHU7KytzKXtvPXFbc107by5mPW51bGw7bEpjKGEsbyxmLGwsZCk7QSs9JHduZC5NYXRoLmFicyhvLmEpfWRve2g9cEpjKGEsYil9d2hpbGUoaCk7Zm9yKHA9YS5hLHI9MCx0PXAubGVuZ3RoO3I8dDsrK3Ipe289cFtyXTtjPXhKYyhvKS5hO2lmKGMhPTApe2ZvcihrPW5ldyBvbGIoby5lKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksMTApO2oubi5iKz1jfX19aWYoaT09MHx8aT09MSl7LS1tO2lmKG08PTAmJihBPGd8fC1tPnYpKXtpPTI7Zz1PaGV9ZWxzZSBpZihpPT0wKXtpPTE7Zz1BfWVsc2V7aT0wO2c9QX19ZWxzZXtuPUE+PWd8fGctQTx3O2c9QTtuJiYtLWV9fXdoaWxlKCEobiYmZTw9MCkpfVxuZnVuY3Rpb24gVUNiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG87bz1uZXcgTHFiO2ZvcihmPWEuYS5lYygpLktjKCk7Zi5PYigpOyl7ZD1CRChmLlBiKCksMTY4KTtSaGIobyxkLGMuSmUoZCkpfWc9KFFiKGEpLGE/bmV3IFRrYihhKTpOdShhLmEuZWMoKS5LYygpKSk7T2tiKGcsbmV3IFdDYihvKSk7aD1HeChnKTtpPW5ldyBoRGIoYik7bj1uZXcgTHFiO2pyYihuLmYsYixpKTt3aGlsZShoLmEuZ2MoKSE9MCl7aj1udWxsO2s9bnVsbDtsPW51bGw7Zm9yKGU9aC5hLmVjKCkuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwxNjgpO2lmKEVkYihFRChXZChpcmIoby5mLGQpKSkpPD1QamUpe2lmKE1oYihuLGQuYSkmJiFNaGIobixkLmIpKXtrPWQuYjtsPWQuYTtqPWQ7YnJlYWt9aWYoTWhiKG4sZC5iKSl7aWYoIU1oYihuLGQuYSkpe2s9ZC5hO2w9ZC5iO2o9ZDticmVha319fX1pZighail7YnJlYWt9bT1uZXcgaERiKGspO0VrYihCRChXZChpcmIobi5mLGwpKSwyMjEpLmEsbSk7anJiKG4uZixrLG0pO2guYS5CYyhqKSE9bnVsbH1yZXR1cm4gaX1cbmZ1bmN0aW9uIFVCYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbjtPZGQoYywnRGVwdGgtZmlyc3QgY3ljbGUgcmVtb3ZhbCcsMSk7bD1iLmE7az1sLmMubGVuZ3RoO2EuYz1uZXcgUmtiO2EuZD1LQyhzYmIsZGxlLDI1LGssMTYsMSk7YS5hPUtDKHNiYixkbGUsMjUsaywxNiwxKTthLmI9bmV3IFJrYjtnPTA7Zm9yKGo9bmV3IG9sYihsKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTApO2kucD1nO1FxKFJfYihpKSkmJkVrYihhLmMsaSk7KytnfWZvcihuPW5ldyBvbGIoYS5jKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTApO1RCYyhhLG0pfWZvcihmPTA7ZjxrO2YrKyl7aWYoIWEuZFtmXSl7aD0odENiKGYsbC5jLmxlbmd0aCksQkQobC5jW2ZdLDEwKSk7VEJjKGEsaCl9fWZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTcpO1BaYihkLHRydWUpO3lOYihiLCh3dGMoKSxBc2MpLChCY2IoKSx0cnVlKSl9YS5jPW51bGw7YS5kPW51bGw7YS5hPW51bGw7YS5iPW51bGw7UWRkKGMpfVxuZnVuY3Rpb24gUFNjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7YS5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2ZvcihkPUpzYihiLmIsMCk7ZC5iIT1kLmQuYzspe2M9QkQoWHNiKGQpLDg2KTtpZihjLmIuYj09MCl7eU5iKGMsKG1UYygpLGpUYyksKEJjYigpLHRydWUpKTtFa2IoYS5hLGMpfX1zd2l0Y2goYS5hLmMubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgWFJjKDAsYiwnRFVNTVlfUk9PVCcpO3lOYihlLChtVGMoKSxqVGMpLChCY2IoKSx0cnVlKSk7eU5iKGUsWVNjLHRydWUpO0RzYihiLmIsZSk7YnJlYWs7Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6Zj1uZXcgWFJjKDAsYiwnU1VQRVJfUk9PVCcpO2ZvcihoPW5ldyBvbGIoYS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksODYpO2k9bmV3IFFSYyhmLGcpO3lOYihpLChtVGMoKSxZU2MpLChCY2IoKSx0cnVlKSk7RHNiKGYuYS5hLGkpO0RzYihmLmQsaSk7RHNiKGcuYixpKTt5TmIoZyxqVGMsZmFsc2UpfXlOYihmLChtVGMoKSxqVGMpLChCY2IoKSx0cnVlKSk7eU5iKGYsWVNjLHRydWUpO0RzYihiLmIsZik7fX1cbmZ1bmN0aW9uIHo2YyhhLGIpe2k2YygpO3ZhciBjLGQsZSxmLGcsaDtmPWIuYy0oYS5jK2EuYik7ZT1hLmMtKGIuYytiLmIpO2c9YS5kLShiLmQrYi5hKTtjPWIuZC0oYS5kK2EuYSk7ZD0kd25kLk1hdGgubWF4KGUsZik7aD0kd25kLk1hdGgubWF4KGcsYyk7SXkoKTtNeShKcWUpO2lmKCgkd25kLk1hdGguYWJzKGQpPD1KcWV8fGQ9PTB8fGlzTmFOKGQpJiZpc05hTigwKT8wOmQ8MD8tMTpkPjA/MTpOeShpc05hTihkKSxpc05hTigwKSkpPj0wXihudWxsLE15KEpxZSksKCR3bmQuTWF0aC5hYnMoaCk8PUpxZXx8aD09MHx8aXNOYU4oaCkmJmlzTmFOKDApPzA6aDwwPy0xOmg+MD8xOk55KGlzTmFOKGgpLGlzTmFOKDApKSk+PTApKXtyZXR1cm4gJHduZC5NYXRoLm1heChoLGQpfU15KEpxZSk7aWYoKCR3bmQuTWF0aC5hYnMoZCk8PUpxZXx8ZD09MHx8aXNOYU4oZCkmJmlzTmFOKDApPzA6ZDwwPy0xOmQ+MD8xOk55KGlzTmFOKGQpLGlzTmFOKDApKSk+MCl7cmV0dXJuICR3bmQuTWF0aC5zcXJ0KGgqaCtkKmQpfXJldHVybiAtJHduZC5NYXRoLnNxcnQoaCpoK2QqZCl9XG5mdW5jdGlvbiBLZ2UoYSxiKXt2YXIgYyxkLGUsZixnLGg7aWYoIWIpcmV0dXJuOyFhLmEmJihhLmE9bmV3IFd2Yik7aWYoYS5lPT0yKXtUdmIoYS5hLGIpO3JldHVybn1pZihiLmU9PTEpe2ZvcihlPTA7ZTxiLmVtKCk7ZSsrKUtnZShhLGIuYW0oZSkpO3JldHVybn1oPWEuYS5hLmMubGVuZ3RoO2lmKGg9PTApe1R2YihhLmEsYik7cmV0dXJufWc9QkQoVXZiKGEuYSxoLTEpLDExNyk7aWYoISgoZy5lPT0wfHxnLmU9PTEwKSYmKGIuZT09MHx8Yi5lPT0xMCkpKXtUdmIoYS5hLGIpO3JldHVybn1mPWIuZT09MD8yOmIuYm0oKS5sZW5ndGg7aWYoZy5lPT0wKXtjPW5ldyBJZmI7ZD1nLl9sKCk7ZD49VGplP0VmYihjLFRlZShkKSk6QWZiKGMsZCZhamUpO2c9KCsrdmZlLG5ldyBIZ2UoMTAsbnVsbCwwKSk7VnZiKGEuYSxnLGgtMSl9ZWxzZXtjPShnLmJtKCkubGVuZ3RoK2YsbmV3IElmYik7RWZiKGMsZy5ibSgpKX1pZihiLmU9PTApe2Q9Yi5fbCgpO2Q+PVRqZT9FZmIoYyxUZWUoZCkpOkFmYihjLGQmYWplKX1lbHNle0VmYihjLGIuYm0oKSl9QkQoZyw1MjEpLmI9Yy5hfVxuZnVuY3Rpb24gcmdiKGEpe3ZhciBiLGMsZCxlLGY7aWYoYS5nIT1udWxsKXtyZXR1cm4gYS5nfWlmKGEuYTwzMil7YS5nPXJoYihDYmIoYS5mKSxRRChhLmUpKTtyZXR1cm4gYS5nfWU9c2hiKCghYS5jJiYoYS5jPWZoYihhLmYpKSxhLmMpLDApO2lmKGEuZT09MCl7cmV0dXJuIGV9Yj0oIWEuYyYmKGEuYz1maGIoYS5mKSksYS5jKS5lPDA/MjoxO2M9ZS5sZW5ndGg7ZD0tYS5lK2MtYjtmPW5ldyBVZmI7Zi5hKz0nJytlO2lmKGEuZT4wJiZkPj0tNil7aWYoZD49MCl7VGZiKGYsYy1RRChhLmUpLFN0cmluZy5mcm9tQ2hhckNvZGUoNDYpKX1lbHNle2YuYT1xZmIoZi5hLDAsYi0xKSsnMC4nK3BmYihmLmEsYi0xKTtUZmIoZixiKzEsemZiKGVnYiwwLC1RRChkKS0xKSl9fWVsc2V7aWYoYy1iPj0xKXtUZmIoZixiLFN0cmluZy5mcm9tQ2hhckNvZGUoNDYpKTsrK2N9VGZiKGYsYyxTdHJpbmcuZnJvbUNoYXJDb2RlKDY5KSk7ZD4wJiZUZmIoZiwrK2MsU3RyaW5nLmZyb21DaGFyQ29kZSg0MykpO1RmYihmLCsrYywnJytVYmIoQ2JiKGQpKSl9YS5nPWYuYTtyZXR1cm4gYS5nfVxuZnVuY3Rpb24gbnBjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2lmKGMuZGMoKSl7cmV0dXJufWg9MDttPTA7ZD1jLktjKCk7bz1CRChkLlBiKCksMTkpLmE7d2hpbGUoaDxiLmYpe2lmKGg9PW8pe209MDtkLk9iKCk/KG89QkQoZC5QYigpLDE5KS5hKToobz1iLmYrMSl9aWYoaCE9bSl7cT1CRChJa2IoYS5iLGgpLDI5KTtuPUJEKElrYihhLmIsbSksMjkpO3A9TXUocS5hKTtmb3IobD1uZXcgb2xiKHApO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxMCk7Wl9iKGssbi5hLmMubGVuZ3RoLG4pO2lmKG09PTApe2c9TXUoUl9iKGspKTtmb3IoZj1uZXcgb2xiKGcpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxNyk7UFpiKGUsdHJ1ZSk7eU5iKGEsKHd0YygpLEFzYyksKEJjYigpLHRydWUpKTtOb2MoYSxlLDEpfX19fSsrbTsrK2h9aT1uZXcgQmliKGEuYiwwKTt3aGlsZShpLmI8aS5kLmdjKCkpe2o9KHNDYihpLmI8aS5kLmdjKCkpLEJEKGkuZC5YYihpLmM9aS5iKyspLDI5KSk7ai5hLmMubGVuZ3RoPT0wJiZ1aWIoaSl9fVxuZnVuY3Rpb24geG1jKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O2c9Yi5iO2s9Zy5vO2k9Zy5kO2Q9RWRiKEVEKGNfYihnLChOeWMoKSxseWMpKSkpO2U9RWRiKEVEKGNfYihnLG55YykpKTtqPUVkYihFRChjX2IoZyx4eWMpKSk7aD1uZXcgTF9iO3ZfYihoLGkuZCxpLmMsaS5hLGkuYik7bT10bWMoYixkLGUsaik7Zm9yKHI9bmV3IG9sYihiLmQpO3IuYTxyLmMuYy5sZW5ndGg7KXtxPUJEKG1sYihyKSwxMDEpO2ZvcihvPXEuZi5hLmVjKCkuS2MoKTtvLk9iKCk7KXtuPUJEKG8uUGIoKSw0MDkpO2Y9bi5hO2w9cm1jKG4pO2M9KHM9bmV3IHM3YyxwbWMobixuLmMsbSxzKSxvbWMobixsLG0scykscG1jKG4sbi5kLG0scykscyk7Yz1hLlVmKG4sbCxjKTtPc2IoZi5hKTt5ZShmLmEsYyk7TUFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGMsMTYpKSxuZXcgQm1jKGssaCkpfXA9cS5pO2lmKHApe3dtYyhxLHAsbSxlKTt0PW5ldyBnN2MocC5nKTt5bWMoayxoLHQpO1A2Yyh0LHAuaik7eW1jKGssaCx0KX19dl9iKGksaC5kLGguYyxoLmEsaC5iKX1cbmZ1bmN0aW9uIHJnYyhhLGIsYyl7dmFyIGQsZSxmO2U9QkQodk5iKGIsKE55YygpLHN3YykpLDI3NSk7aWYoZT09KHlyYygpLHdyYykpe3JldHVybn1PZGQoYywnSG9yaXpvbnRhbCBDb21wYWN0aW9uJywxKTthLmE9YjtmPW5ldyBZZ2M7ZD1uZXcgY0ViKChmLmQ9YixmLmM9QkQodk5iKGYuZCxTd2MpLDIxOCksUGdjKGYpLFdnYyhmKSxWZ2MoZiksZi5hKSk7YUViKGQsYS5iKTtzd2l0Y2goQkQodk5iKGIscndjKSw0MjIpLmcpe2Nhc2UgMTokRGIoZCxuZXcgamZjKGEuYSkpO2JyZWFrO2RlZmF1bHQ6JERiKGQsKE9EYigpLE1EYikpO31zd2l0Y2goZS5nKXtjYXNlIDE6VERiKGQpO2JyZWFrO2Nhc2UgMjpURGIoU0RiKGQsKGVhZCgpLGJhZCkpKTticmVhaztjYXNlIDM6VERiKF9EYihTRGIoVERiKGQpLChlYWQoKSxiYWQpKSxuZXcgQmdjKSk7YnJlYWs7Y2FzZSA0OlREYihfRGIoU0RiKFREYihkKSwoZWFkKCksYmFkKSksbmV3IERnYyhmKSkpO2JyZWFrO2Nhc2UgNTpURGIoWkRiKGQscGdjKSk7fVNEYihkLChlYWQoKSxhYWQpKTtkLmU9dHJ1ZTtNZ2MoZik7UWRkKGMpfVxuZnVuY3Rpb24gbVljKGEsYixjLGQsZSxmLGcsaCl7dmFyIGksaixrLGw7aT1PdShPQyhHQyh6XywxKSxVaGUsMjIwLDAsW2IsYyxkLGVdKSk7bD1udWxsO3N3aXRjaChhLmIuZyl7Y2FzZSAxOmw9T3UoT0MoR0Mob18sMSksVWhlLDUyNiwwLFtuZXcgdVljLG5ldyBvWWMsbmV3IHFZY10pKTticmVhaztjYXNlIDA6bD1PdShPQyhHQyhvXywxKSxVaGUsNTI2LDAsW25ldyBxWWMsbmV3IG9ZYyxuZXcgdVljXSkpO2JyZWFrO2Nhc2UgMjpsPU91KE9DKEdDKG9fLDEpLFVoZSw1MjYsMCxbbmV3IG9ZYyxuZXcgdVljLG5ldyBxWWNdKSk7fWZvcihrPW5ldyBvbGIobCk7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDUyNik7aS5jLmxlbmd0aD4xJiYoaT1qLm1nKGksYS5hLGgpKX1pZihpLmMubGVuZ3RoPT0xKXtyZXR1cm4gQkQoSWtiKGksaS5jLmxlbmd0aC0xKSwyMjApfWlmKGkuYy5sZW5ndGg9PTIpe3JldHVybiBsWWMoKHRDYigwLGkuYy5sZW5ndGgpLEJEKGkuY1swXSwyMjApKSwodENiKDEsaS5jLmxlbmd0aCksQkQoaS5jWzFdLDIyMCkpLGcsZil9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBKTmIoYSl7dmFyIGIsYyxkLGUsZixnO0hrYihhLmEsbmV3IFBOYik7Zm9yKGM9bmV3IG9sYihhLmEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyMjEpO2Q9YzdjKFI2YyhCRChhLmIsNjUpLmMpLEJEKGIuYiw2NSkuYyk7aWYoRk5iKXtnPUJEKGEuYiw2NSkuYjtmPUJEKGIuYiw2NSkuYjtpZigkd25kLk1hdGguYWJzKGQuYSk+PSR3bmQuTWF0aC5hYnMoZC5iKSl7ZC5iPTA7Zi5kK2YuYT5nLmQmJmYuZDxnLmQrZy5hJiYkNmMoZCwkd25kLk1hdGgubWF4KGcuYy0oZi5jK2YuYiksZi5jLShnLmMrZy5iKSkpfWVsc2V7ZC5hPTA7Zi5jK2YuYj5nLmMmJmYuYzxnLmMrZy5iJiYkNmMoZCwkd25kLk1hdGgubWF4KGcuZC0oZi5kK2YuYSksZi5kLShnLmQrZy5hKSkpfX1lbHNleyQ2YyhkLF9OYihCRChhLmIsNjUpLEJEKGIuYiw2NSkpKX1lPSR3bmQuTWF0aC5zcXJ0KGQuYSpkLmErZC5iKmQuYik7ZT1MTmIoR05iLGIsZSxkKTskNmMoZCxlKTskTmIoQkQoYi5iLDY1KSxkKTtIa2IoYi5hLG5ldyBSTmIoZCkpO0JEKEdOYi5iLDY1KTtLTmIoR05iLEhOYixiKX19XG5mdW5jdGlvbiBWSmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbzthLmY9bmV3IEtGYjtqPTA7ZT0wO2ZvcihnPW5ldyBvbGIoYS5lLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwyOSk7Zm9yKGk9bmV3IG9sYihmLmEpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMCk7aC5wPWorKztmb3IoZD1uZXcgU3IodXIoVV9iKGgpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksMTcpO2MucD1lKyt9Yj1iS2MoaCk7Zm9yKG09bmV3IG9sYihoLmopO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSwxMSk7aWYoYil7bz1sLmEuYjtpZihvIT0kd25kLk1hdGguZmxvb3Iobykpe2s9by1TYmIoQ2JiKCR3bmQuTWF0aC5yb3VuZChvKSkpO2wuYS5iLT1rfX1uPWwubi5iK2wuYS5iO2lmKG4hPSR3bmQuTWF0aC5mbG9vcihuKSl7az1uLVNiYihDYmIoJHduZC5NYXRoLnJvdW5kKG4pKSk7bC5uLmItPWt9fX19YS5nPWo7YS5iPWU7YS5pPUtDKHhZLFVoZSw0MDEsaiwwLDEpO2EuYz1LQyh3WSxVaGUsNjQ5LGUsMCwxKTthLmQuYS4kYigpfVxuZnVuY3Rpb24gVXhkKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajtpZihhLmVqKCkpe2k9YS5maigpO2lmKGEuaT4wKXtiPW5ldyBfemQoYS5pLGEuZyk7Yz1hLmk7Zj1jPDEwMD9udWxsOm5ldyBJeGQoYyk7aWYoYS5paigpKXtmb3IoZD0wO2Q8YS5pOysrZCl7Zz1hLmdbZF07Zj1hLmtqKGcsZil9fW91ZChhKTtlPWM9PTE/YS5aaSg0LHF1ZChiLDApLG51bGwsMCxpKTphLlppKDYsYixudWxsLC0xLGkpO2lmKGEuYmooKSl7Zm9yKGQ9bmV3ICR5ZChiKTtkLmUhPWQuaS5nYygpOyl7Zj1hLmRqKFp5ZChkKSxmKX1pZighZil7YS4kaShlKX1lbHNle2YuRWkoZSk7Zi5GaSgpfX1lbHNle2lmKCFmKXthLiRpKGUpfWVsc2V7Zi5FaShlKTtmLkZpKCl9fX1lbHNle291ZChhKTthLiRpKGEuWmkoNiwobW1iKCksam1iKSxudWxsLC0xLGkpKX19ZWxzZSBpZihhLmJqKCkpe2lmKGEuaT4wKXtoPWEuZztqPWEuaTtvdWQoYSk7Zj1qPDEwMD9udWxsOm5ldyBJeGQoaik7Zm9yKGQ9MDtkPGo7KytkKXtnPWhbZF07Zj1hLmRqKGcsZil9ISFmJiZmLkZpKCl9ZWxzZXtvdWQoYSl9fWVsc2V7b3VkKGEpfX1cbmZ1bmN0aW9uIFpRYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07VFFjKHRoaXMpO2M9PShGUWMoKSxEUWMpP1FxYih0aGlzLnIsYSk6UXFiKHRoaXMudyxhKTtrPVBqZTtqPVFqZTtmb3IoZz1iLmEuZWMoKS5LYygpO2cuT2IoKTspe2U9QkQoZy5QYigpLDQ2KTtoPUJEKGUuYSw0NTUpO2Q9QkQoZS5iLDE3KTtpPWQuYztpPT1hJiYoaT1kLmQpO2g9PURRYz9RcWIodGhpcy5yLGkpOlFxYih0aGlzLncsaSk7bT0oVWNkKCksTGNkKS5IYyhpLmopP0VkYihFRCh2TmIoaSwod3RjKCkscXRjKSkpKTpsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbaS5pLm4saS5uLGkuYV0pKS5iO2s9JHduZC5NYXRoLm1pbihrLG0pO2o9JHduZC5NYXRoLm1heChqLG0pfWw9KFVjZCgpLExjZCkuSGMoYS5qKT9FZGIoRUQodk5iKGEsKHd0YygpLHF0YykpKSk6bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2EuaS5uLGEubixhLmFdKSkuYjtYUWModGhpcyxsLGssaik7Zm9yKGY9Yi5hLmVjKCkuS2MoKTtmLk9iKCk7KXtlPUJEKGYuUGIoKSw0Nik7VVFjKHRoaXMsQkQoZS5iLDE3KSl9dGhpcy5vPWZhbHNlfVxuZnVuY3Rpb24gZ0QoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEc7Yz1hLmwmODE5MTtkPWEubD4+MTN8KGEubSYxNSk8PDk7ZT1hLm0+PjQmODE5MTtmPWEubT4+MTd8KGEuaCYyNTUpPDw1O2c9KGEuaCYxMDQ4MzIwKT4+ODtoPWIubCY4MTkxO2k9Yi5sPj4xM3woYi5tJjE1KTw8OTtqPWIubT4+NCY4MTkxO2s9Yi5tPj4xN3woYi5oJjI1NSk8PDU7bD0oYi5oJjEwNDgzMjApPj44O0I9YypoO0M9ZCpoO0Q9ZSpoO0Y9ZipoO0c9ZypoO2lmKGkhPTApe0MrPWMqaTtEKz1kKmk7Ris9ZSppO0crPWYqaX1pZihqIT0wKXtEKz1jKmo7Ris9ZCpqO0crPWUqan1pZihrIT0wKXtGKz1jKms7Rys9ZCprfWwhPTAmJihHKz1jKmwpO249QiZFamU7bz0oQyY1MTEpPDwxMzttPW4rbztxPUI+PjIyO3I9Qz4+OTtzPShEJjI2MjE0Myk8PDQ7dD0oRiYzMSk8PDE3O3A9cStyK3MrdDt2PUQ+PjE4O3c9Rj4+NTtBPShHJjQwOTUpPDw4O3U9dit3K0E7cCs9bT4+MjI7bSY9RWplO3UrPXA+PjIyO3AmPUVqZTt1Jj1GamU7cmV0dXJuIFRDKG0scCx1KX1cbmZ1bmN0aW9uIG83YihhKXt2YXIgYixjLGQsZSxmLGcsaDtoPUJEKElrYihhLmosMCksMTEpO2lmKGguZy5jLmxlbmd0aCE9MCYmaC5lLmMubGVuZ3RoIT0wKXt0aHJvdyB2YmIobmV3IFpkYignSW50ZXJhY3RpdmUgbGF5b3V0IGRvZXMgbm90IHN1cHBvcnQgTk9SVEgvU09VVEggcG9ydHMgd2l0aCBpbmNvbWluZyBfYW5kXyBvdXRnb2luZyBlZGdlcy4nKSl9aWYoaC5nLmMubGVuZ3RoIT0wKXtmPVBqZTtmb3IoYz1uZXcgb2xiKGguZyk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDE3KTtnPWIuZC5pO2Q9QkQodk5iKGcsKE55YygpLHR4YykpLDE0Mik7Zj0kd25kLk1hdGgubWluKGYsZy5uLmEtZC5iKX1yZXR1cm4gbmV3IGNjKFFiKGYpKX1pZihoLmUuYy5sZW5ndGghPTApe2U9UWplO2ZvcihjPW5ldyBvbGIoaC5lKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTcpO2c9Yi5jLmk7ZD1CRCh2TmIoZywoTnljKCksdHhjKSksMTQyKTtlPSR3bmQuTWF0aC5tYXgoZSxnLm4uYStnLm8uYStkLmMpfXJldHVybiBuZXcgY2MoUWIoZSkpfXJldHVybiB3YigpLHdiKCksdmJ9XG5mdW5jdGlvbiBFTGQoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihhLkZrKCkpe2lmKGEuaT40KXtpZihhLndqKGIpKXtpZihhLnJrKCkpe2U9QkQoYiw0OSk7ZD1lLlVnKCk7aT1kPT1hLmUmJihhLkRrKCk/ZS5PZyhlLlZnKCksYS56aygpKT09YS5BaygpOi0xLWUuVmcoKT09YS5haigpKTtpZihhLkVrKCkmJiFpJiYhZCYmISFlLlpnKCkpe2ZvcihmPTA7ZjxhLmk7KytmKXtjPWEuR2soQkQoYS5nW2ZdLDU2KSk7aWYoUEQoYyk9PT1QRChiKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gaX1lbHNlIGlmKGEuRGsoKSYmIWEuQ2soKSl7Zz1CRChiLDU2KS5haCh6VWQoQkQoYS5haygpLDE4KSkpO2lmKFBEKGcpPT09UEQoYS5lKSl7cmV0dXJuIHRydWV9ZWxzZSBpZihnPT1udWxsfHwhQkQoZyw1Nikua2goKSl7cmV0dXJuIGZhbHNlfX19ZWxzZXtyZXR1cm4gZmFsc2V9fWg9cHVkKGEsYik7aWYoYS5FaygpJiYhaCl7Zm9yKGY9MDtmPGEuaTsrK2Ype2U9YS5HayhCRChhLmdbZl0sNTYpKTtpZihQRChlKT09PVBEKGIpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBofWVsc2V7cmV0dXJuIHB1ZChhLGIpfX1cbmZ1bmN0aW9uIG1IYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07az1uZXcgUmtiO209bmV3IFRxYjtnPWIuYjtmb3IoZT0wO2U8Zy5jLmxlbmd0aDtlKyspe2o9KHRDYihlLGcuYy5sZW5ndGgpLEJEKGcuY1tlXSwyOSkpLmE7ay5jPUtDKFNJLFVoZSwxLDAsNSwxKTtmb3IoZj0wO2Y8ai5jLmxlbmd0aDtmKyspe2g9YS5hW2VdW2ZdO2gucD1mO2guaz09KGowYigpLGkwYikmJihrLmNbay5jLmxlbmd0aF09aCx0cnVlKTtOa2IoQkQoSWtiKGIuYixlKSwyOSkuYSxmLGgpO2guai5jPUtDKFNJLFVoZSwxLDAsNSwxKTtHa2IoaC5qLEJEKEJEKElrYihhLmIsZSksMTUpLlhiKGYpLDE0KSk7ZWNkKEJEKHZOYihoLChOeWMoKSxWeGMpKSw5OCkpfHx5TmIoaCxWeGMsKGRjZCgpLFpiZCkpfWZvcihkPW5ldyBvbGIoayk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDEwKTtsPWtIYyhjKTttLmEuemMobCxtKTttLmEuemMoYyxtKX19Zm9yKGk9bS5hLmVjKCkuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwxMCk7bW1iKCk7T2tiKGguaiwoT2NjKCksSWNjKSk7aC5pPXRydWU7Tl9iKGgpfX1cbmZ1bmN0aW9uIGc2YihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO2s9QkQodk5iKGEsKHd0YygpLEhzYykpLDYxKTtkPUJEKElrYihhLmosMCksMTEpO2s9PShVY2QoKSxBY2QpP0cwYihkLFJjZCk6az09UmNkJiZHMGIoZCxBY2QpO2lmKEJEKHZOYihiLChOeWMoKSxGeGMpKSwxNzQpLkhjKCh0ZGQoKSxzZGQpKSl7aT1FZGIoRUQodk5iKGEsdHljKSkpO2o9RWRiKEVEKHZOYihhLHV5YykpKTtnPUVkYihFRCh2TmIoYSxyeWMpKSk7aD1CRCh2TmIoYixZeGMpLDIxKTtpZihoLkhjKChyY2QoKSxuY2QpKSl7Yz1qO2w9YS5vLmEvMi1kLm4uYTtmb3IoZj1uZXcgb2xiKGQuZik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDcwKTtlLm4uYj1jO2Uubi5hPWwtZS5vLmEvMjtjKz1lLm8uYitnfX1lbHNlIGlmKGguSGMocGNkKSl7Zm9yKGY9bmV3IG9sYihkLmYpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSw3MCk7ZS5uLmE9aSthLm8uYS1kLm4uYX19V0diKG5ldyBZR2IoKGEkYigpLG5ldyBsJGIoYixmYWxzZSxmYWxzZSxuZXcgVCRiKSkpLG5ldyB4JGIobnVsbCxhLGZhbHNlKSl9fVxuZnVuY3Rpb24gVWdjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO2lmKGIuYy5sZW5ndGg9PTApe3JldHVybn1tbWIoKTtNbGIoYi5jLGIuYy5sZW5ndGgsbnVsbCk7ZT1uZXcgb2xiKGIpO2Q9QkQobWxiKGUpLDE0NSk7d2hpbGUoZS5hPGUuYy5jLmxlbmd0aCl7Yz1CRChtbGIoZSksMTQ1KTtpZihBRGIoZC5lLmMsYy5lLmMpJiYhKEREYihCNmMoZC5lKS5iLGMuZS5kKXx8RERiKEI2YyhjLmUpLmIsZC5lLmQpKSl7ZD0oR2tiKGQuayxjLmspLEdrYihkLmIsYy5iKSxHa2IoZC5jLGMuYykseWUoZC5pLGMuaSksR2tiKGQuZCxjLmQpLEdrYihkLmosYy5qKSxmPSR3bmQuTWF0aC5taW4oZC5lLmMsYy5lLmMpLGc9JHduZC5NYXRoLm1pbihkLmUuZCxjLmUuZCksaD0kd25kLk1hdGgubWF4KGQuZS5jK2QuZS5iLGMuZS5jK2MuZS5iKSxpPWgtZixqPSR3bmQuTWF0aC5tYXgoZC5lLmQrZC5lLmEsYy5lLmQrYy5lLmEpLGs9ai1nLEc2YyhkLmUsZixnLGksayksaEViKGQuZixjLmYpLCFkLmEmJihkLmE9Yy5hKSxHa2IoZC5nLGMuZyksRWtiKGQuZyxjKSxkKX1lbHNle1hnYyhhLGQpO2Q9Y319WGdjKGEsZCl9XG5mdW5jdGlvbiBlX2IoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqO2g9YS5qO2lmKGg9PShVY2QoKSxTY2QpJiZiIT0oZGNkKCksYmNkKSYmYiE9KGRjZCgpLGNjZCkpe2g9VyRiKGEsYyk7RzBiKGEsaCk7ISghYS5xPyhtbWIoKSxtbWIoKSxrbWIpOmEucSkuX2IoKE55YygpLFV4YykpJiZoIT1TY2QmJihhLm4uYSE9MHx8YS5uLmIhPTApJiZ5TmIoYSxVeGMsViRiKGEsaCkpfWlmKGI9PShkY2QoKSxfYmQpKXtqPTA7c3dpdGNoKGguZyl7Y2FzZSAxOmNhc2UgMzpmPWEuaS5vLmE7Zj4wJiYoaj1hLm4uYS9mKTticmVhaztjYXNlIDI6Y2FzZSA0OmU9YS5pLm8uYjtlPjAmJihqPWEubi5iL2UpO315TmIoYSwod3RjKCksaHRjKSxqKX1pPWEubztnPWEuYTtpZihkKXtnLmE9ZC5hO2cuYj1kLmI7YS5kPXRydWV9ZWxzZSBpZihiIT1iY2QmJmIhPWNjZCYmaCE9U2NkKXtzd2l0Y2goaC5nKXtjYXNlIDE6Zy5hPWkuYS8yO2JyZWFrO2Nhc2UgMjpnLmE9aS5hO2cuYj1pLmIvMjticmVhaztjYXNlIDM6Zy5hPWkuYS8yO2cuYj1pLmI7YnJlYWs7Y2FzZSA0OmcuYj1pLmIvMjt9fWVsc2V7Zy5hPWkuYS8yO2cuYj1pLmIvMn19XG5mdW5jdGlvbiB2d2QoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGs7aWYoYS5laigpKXtrPWEuVmkoKTtpPWEuZmooKTtpZihrPjApe2I9bmV3IEF1ZChhLkdpKCkpO2M9aztmPWM8MTAwP251bGw6bmV3IEl4ZChjKTtDdmQoYSxjLGIuZyk7ZT1jPT0xP2EuWmkoNCxxdWQoYiwwKSxudWxsLDAsaSk6YS5aaSg2LGIsbnVsbCwtMSxpKTtpZihhLmJqKCkpe2ZvcihkPW5ldyBGeWQoYik7ZC5lIT1kLmkuZ2MoKTspe2Y9YS5kaihEeWQoZCksZil9aWYoIWYpe2EuJGkoZSl9ZWxzZXtmLkVpKGUpO2YuRmkoKX19ZWxzZXtpZighZil7YS4kaShlKX1lbHNle2YuRWkoZSk7Zi5GaSgpfX19ZWxzZXtDdmQoYSxhLlZpKCksYS5XaSgpKTthLiRpKGEuWmkoNiwobW1iKCksam1iKSxudWxsLC0xLGkpKX19ZWxzZSBpZihhLmJqKCkpe2s9YS5WaSgpO2lmKGs+MCl7aD1hLldpKCk7aj1rO0N2ZChhLGssaCk7Zj1qPDEwMD9udWxsOm5ldyBJeGQoaik7Zm9yKGQ9MDtkPGo7KytkKXtnPWhbZF07Zj1hLmRqKGcsZil9ISFmJiZmLkZpKCl9ZWxzZXtDdmQoYSxhLlZpKCksYS5XaSgpKX19ZWxzZXtDdmQoYSxhLlZpKCksYS5XaSgpKX19XG5mdW5jdGlvbiBMRWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG47Zm9yKGg9bmV3IG9sYihiKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoaCksMjMzKTtmLmU9bnVsbDtmLmM9MH1pPW51bGw7Zm9yKGc9bmV3IG9sYihiKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMjMzKTtsPWYuZFswXTtpZihjJiZsLmshPShqMGIoKSxoMGIpKXtjb250aW51ZX1mb3Iobj1CRCh2TmIobCwod3RjKCksUXNjKSksMTUpLktjKCk7bi5PYigpOyl7bT1CRChuLlBiKCksMTApO2lmKCFjfHxtLms9PShqMGIoKSxoMGIpKXsoIWYuZSYmKGYuZT1uZXcgUmtiKSxmLmUpLkZjKGEuYlttLmMucF1bbS5wXSk7KythLmJbbS5jLnBdW20ucF0uY319aWYoIWMmJmwuaz09KGowYigpLGgwYikpe2lmKGkpe2ZvcihrPUJEKFFjKGEuZCxpKSwyMSkuS2MoKTtrLk9iKCk7KXtqPUJEKGsuUGIoKSwxMCk7Zm9yKGU9QkQoUWMoYS5kLGwpLDIxKS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDEwKTtZRWMoYS5iW2ouYy5wXVtqLnBdKS5GYyhhLmJbZC5jLnBdW2QucF0pOysrYS5iW2QuYy5wXVtkLnBdLmN9fX1pPWx9fX1cbmZ1bmN0aW9uIE9IYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztjPTA7az1uZXcgUmtiO2ZvcihoPW5ldyBvbGIoYik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDExKTtBSGMoYS5iLGEuZFtnLnBdKTtrLmM9S0MoU0ksVWhlLDEsMCw1LDEpO3N3aXRjaChnLmkuay5nKXtjYXNlIDA6ZD1CRCh2TmIoZywod3RjKCksZ3RjKSksMTApO0hrYihkLmosbmV3IHhJYyhrKSk7YnJlYWs7Y2FzZSAxOkN0YihLQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGcuaS5qLDE2KSksbmV3IHpJYyhnKSkpLG5ldyBDSWMoaykpO2JyZWFrO2Nhc2UgMzplPUJEKHZOYihnLCh3dGMoKSwkc2MpKSwxMSk7RWtiKGssbmV3IHZnZChlLG1lYihnLmUuYy5sZW5ndGgrZy5nLmMubGVuZ3RoKSkpO31mb3Ioaj1uZXcgb2xiKGspO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSw0Nik7Zj1hSWMoYSxCRChpLmEsMTEpKTtpZihmPmEuZFtnLnBdKXtjKz16SGMoYS5iLGYpKkJEKGkuYiwxOSkuYTtXamIoYS5hLG1lYihmKSl9fXdoaWxlKCFha2IoYS5hKSl7eEhjKGEuYixCRChma2IoYS5hKSwxOSkuYSl9fXJldHVybiBjfVxuZnVuY3Rpb24gZWVkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2w9bmV3IGc3YyhCRChoa2QoYSwoWDdjKCksUjdjKSksOCkpO2wuYT0kd25kLk1hdGgubWF4KGwuYS1jLmItYy5jLDApO2wuYj0kd25kLk1hdGgubWF4KGwuYi1jLmQtYy5hLDApO2U9RUQoaGtkKGEsTDdjKSk7KGU9PW51bGx8fCh1Q2IoZSksZSk8PTApJiYoZT0xLjMpO2g9bmV3IFJrYjtmb3Iobz1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO28uZSE9by5pLmdjKCk7KXtuPUJEKER5ZChvKSwzMyk7Zz1uZXcgeGVkKG4pO2guY1toLmMubGVuZ3RoXT1nfW09QkQoaGtkKGEsTTdjKSwzMTEpO3N3aXRjaChtLmcpe2Nhc2UgMzpxPWJlZChoLGIsbC5hLGwuYiwoaj1kLHVDYihlKSxlLGopKTticmVhaztjYXNlIDE6cT1hZWQoaCxiLGwuYSxsLmIsKGs9ZCx1Q2IoZSksZSxrKSk7YnJlYWs7ZGVmYXVsdDpxPWNlZChoLGIsbC5hLGwuYiwoaT1kLHVDYihlKSxlLGkpKTt9Zj1uZXcgd2VkKHEpO3A9ZmVkKGYsYixjLGwuYSxsLmIsZCwodUNiKGUpLGUpKTtBZmQoYSxwLmEscC5iLGZhbHNlLHRydWUpfVxuZnVuY3Rpb24gdmtjKGEsYil7dmFyIGMsZCxlLGY7Yz1iLmI7Zj1uZXcgVGtiKGMuaik7ZT0wO2Q9Yy5qO2QuYz1LQyhTSSxVaGUsMSwwLDUsMSk7aGtjKEJEKFNpKGEuYiwoVWNkKCksQWNkKSwoRmtjKCksRWtjKSksMTUpLGMpO2U9aWtjKGYsZSxuZXcgYmxjLGQpO2hrYyhCRChTaShhLmIsQWNkLERrYyksMTUpLGMpO2U9aWtjKGYsZSxuZXcgZGxjLGQpO2hrYyhCRChTaShhLmIsQWNkLENrYyksMTUpLGMpO2hrYyhCRChTaShhLmIsemNkLEVrYyksMTUpLGMpO2hrYyhCRChTaShhLmIsemNkLERrYyksMTUpLGMpO2U9aWtjKGYsZSxuZXcgZmxjLGQpO2hrYyhCRChTaShhLmIsemNkLENrYyksMTUpLGMpO2hrYyhCRChTaShhLmIsUmNkLEVrYyksMTUpLGMpO2U9aWtjKGYsZSxuZXcgaGxjLGQpO2hrYyhCRChTaShhLmIsUmNkLERrYyksMTUpLGMpO2U9aWtjKGYsZSxuZXcgamxjLGQpO2hrYyhCRChTaShhLmIsUmNkLENrYyksMTUpLGMpO2hrYyhCRChTaShhLmIsVGNkLEVrYyksMTUpLGMpO2U9aWtjKGYsZSxuZXcgUGtjLGQpO2hrYyhCRChTaShhLmIsVGNkLERrYyksMTUpLGMpO2hrYyhCRChTaShhLmIsVGNkLENrYyksMTUpLGMpfVxuZnVuY3Rpb24gbmJjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scDtPZGQoYiwnTGF5ZXIgc2l6ZSBjYWxjdWxhdGlvbicsMSk7az1QamU7aj1RamU7ZT1mYWxzZTtmb3IoaD1uZXcgb2xiKGEuYik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDI5KTtpPWcuYztpLmE9MDtpLmI9MDtpZihnLmEuYy5sZW5ndGg9PTApe2NvbnRpbnVlfWU9dHJ1ZTtmb3IobT1uZXcgb2xiKGcuYSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDEwKTtvPWwubztuPWwuZDtpLmE9JHduZC5NYXRoLm1heChpLmEsby5hK24uYituLmMpfWQ9QkQoSWtiKGcuYSwwKSwxMCk7cD1kLm4uYi1kLmQuZDtkLms9PShqMGIoKSxlMGIpJiYocC09QkQodk5iKGEsKE55YygpLHl5YykpLDE0MikuZCk7Zj1CRChJa2IoZy5hLGcuYS5jLmxlbmd0aC0xKSwxMCk7Yz1mLm4uYitmLm8uYitmLmQuYTtmLms9PWUwYiYmKGMrPUJEKHZOYihhLChOeWMoKSx5eWMpKSwxNDIpLmEpO2kuYj1jLXA7az0kd25kLk1hdGgubWluKGsscCk7aj0kd25kLk1hdGgubWF4KGosYyl9aWYoIWUpe2s9MDtqPTB9YS5mLmI9ai1rO2EuYy5iLT1rO1FkZChiKX1cbmZ1bmN0aW9uIGhfYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO2Y9MDtnPTA7Zm9yKGo9bmV3IG9sYihhLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihqKSwxMCk7Zj0kd25kLk1hdGgubWF4KGYsaC5kLmIpO2c9JHduZC5NYXRoLm1heChnLGguZC5jKX1mb3IoaT1uZXcgb2xiKGEuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtjPUJEKHZOYihoLChOeWMoKSxtd2MpKSwyNDgpO3N3aXRjaChjLmcpe2Nhc2UgMTpvPTA7YnJlYWs7Y2FzZSAyOm89MTticmVhaztjYXNlIDU6bz0wLjU7YnJlYWs7ZGVmYXVsdDpkPTA7bD0wO2ZvcihuPW5ldyBvbGIoaC5qKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTEpO20uZS5jLmxlbmd0aD09MHx8KytkO20uZy5jLmxlbmd0aD09MHx8KytsfWQrbD09MD8obz0wLjUpOihvPWwvKGQrbCkpO31xPWEuYztrPWguby5hO3I9KHEuYS1rKSpvO28+MC41PyhyLT1nKjIqKG8tMC41KSk6bzwwLjUmJihyKz1mKjIqKDAuNS1vKSk7ZT1oLmQuYjtyPGUmJihyPWUpO3A9aC5kLmM7cj5xLmEtcC1rJiYocj1xLmEtcC1rKTtoLm4uYT1iK3J9fVxuZnVuY3Rpb24gY2VkKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2g9S0MoVUQsVmplLDI1LGEuYy5sZW5ndGgsMTUsMSk7bT1uZXcgZ3ViKG5ldyBOZWQpO190YihtLGEpO2o9MDtwPW5ldyBSa2I7d2hpbGUobS5iLmMubGVuZ3RoIT0wKXtnPUJEKG0uYi5jLmxlbmd0aD09MD9udWxsOklrYihtLmIsMCksMTU3KTtpZihqPjEmJnJlZChnKSpxZWQoZykvMj5oWzBdKXtmPTA7d2hpbGUoZjxwLmMubGVuZ3RoLTEmJnJlZChnKSpxZWQoZykvMj5oW2ZdKXsrK2Z9bz1uZXcgSmliKHAsMCxmKzEpO2w9bmV3IHdlZChvKTtrPXJlZChnKS9xZWQoZyk7aT1mZWQobCxiLG5ldyBwMGIsYyxkLGUsayk7UDZjKFg2YyhsLmUpLGkpO3pDYihjdWIobSxsKSk7bj1uZXcgSmliKHAsZisxLHAuYy5sZW5ndGgpO190YihtLG4pO3AuYz1LQyhTSSxVaGUsMSwwLDUsMSk7aj0wO0RsYihoLGgubGVuZ3RoLDApfWVsc2V7cT1tLmIuYy5sZW5ndGg9PTA/bnVsbDpJa2IobS5iLDApO3EhPW51bGwmJmZ1YihtLDApO2o+MCYmKGhbal09aFtqLTFdKTtoW2pdKz1yZWQoZykqcWVkKGcpOysrajtwLmNbcC5jLmxlbmd0aF09Z319cmV0dXJuIHB9XG5mdW5jdGlvbiBXYWMoYSl7dmFyIGIsYyxkLGUsZjtkPUJEKHZOYihhLChOeWMoKSxteGMpKSwxNjMpO2lmKGQ9PShDdGMoKSx5dGMpKXtmb3IoYz1uZXcgU3IodXIoUl9iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksMTcpO2lmKCFZYWMoYikpe3Rocm93IHZiYihuZXcgeTJjKEZuZStQX2IoYSkrXCInIGhhcyBpdHMgbGF5ZXIgY29uc3RyYWludCBzZXQgdG8gRklSU1RfU0VQQVJBVEUsIGJ1dCBoYXMgYXQgbGVhc3Qgb25lIGluY29taW5nIGVkZ2UuIFwiKydGSVJTVF9TRVBBUkFURSBub2RlcyBtdXN0IG5vdCBoYXZlIGluY29taW5nIGVkZ2VzLicpKX19fWVsc2UgaWYoZD09QXRjKXtmb3IoZj1uZXcgU3IodXIoVV9iKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihmKTspe2U9QkQoUnIoZiksMTcpO2lmKCFZYWMoZSkpe3Rocm93IHZiYihuZXcgeTJjKEZuZStQX2IoYSkrXCInIGhhcyBpdHMgbGF5ZXIgY29uc3RyYWludCBzZXQgdG8gTEFTVF9TRVBBUkFURSwgYnV0IGhhcyBhdCBsZWFzdCBvbmUgb3V0Z29pbmcgZWRnZS4gXCIrJ0xBU1RfU0VQQVJBVEUgbm9kZXMgbXVzdCBub3QgaGF2ZSBvdXRnb2luZyBlZGdlcy4nKSl9fX19XG5mdW5jdGlvbiBDOWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbztPZGQoYiwnTGFiZWwgZHVtbXkgcmVtb3ZhbCcsMSk7ZD1FZGIoRUQodk5iKGEsKE55YygpLG55YykpKSk7ZT1FZGIoRUQodk5iKGEscnljKSkpO2o9QkQodk5iKGEsTHdjKSwxMDMpO2ZvcihpPW5ldyBvbGIoYS5iKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMjkpO2w9bmV3IEJpYihoLmEsMCk7d2hpbGUobC5iPGwuZC5nYygpKXtrPShzQ2IobC5iPGwuZC5nYygpKSxCRChsLmQuWGIobC5jPWwuYisrKSwxMCkpO2lmKGsuaz09KGowYigpLGYwYikpe209QkQodk5iKGssKHd0YygpLCRzYykpLDE3KTtvPUVkYihFRCh2TmIobSxad2MpKSk7Zz1QRCh2TmIoayxTc2MpKT09PVBEKChyYmQoKSxvYmQpKTtjPW5ldyBnN2Moay5uKTtnJiYoYy5iKz1vK2QpO2Y9bmV3IGY3YyhrLm8uYSxrLm8uYi1vLWQpO249QkQodk5iKGssa3RjKSwxNSk7aj09KGVhZCgpLGRhZCl8fGo9PV85Yz9COWIobixjLGUsZixnLGopOkE5YihuLGMsZSxmKTtHa2IobS5iLG4pO3NiYyhrLFBEKHZOYihhLFN3YykpPT09UEQoKEFhZCgpLHhhZCkpKTt1aWIobCl9fX1RZGQoYil9XG5mdW5jdGlvbiB0WmIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2O2k9bmV3IFJrYjtmb3IoZj1uZXcgb2xiKGIuYSk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDEwKTtmb3IoaD1uZXcgb2xiKGUuaik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDExKTtrPW51bGw7Zm9yKHQ9a19iKGcuZyksdT0wLHY9dC5sZW5ndGg7dTx2OysrdSl7cz10W3VdO2lmKCFmX2Iocy5kLmksYykpe3I9b1piKGEsYixjLHMscy5jLChLQWMoKSxJQWMpLGspO3IhPWsmJihpLmNbaS5jLmxlbmd0aF09cix0cnVlKTtyLmMmJihrPXIpfX1qPW51bGw7Zm9yKG89a19iKGcuZSkscD0wLHE9by5sZW5ndGg7cDxxOysrcCl7bj1vW3BdO2lmKCFmX2Iobi5jLmksYykpe3I9b1piKGEsYixjLG4sbi5kLChLQWMoKSxIQWMpLGopO3IhPWomJihpLmNbaS5jLmxlbmd0aF09cix0cnVlKTtyLmMmJihqPXIpfX19fWZvcihtPW5ldyBvbGIoaSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDQ0MSk7SmtiKGIuYSxsLmEsMCkhPS0xfHxFa2IoYi5hLGwuYSk7bC5jJiYoZC5jW2QuYy5sZW5ndGhdPWwsdHJ1ZSl9fVxuZnVuY3Rpb24gakNjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO09kZChjLCdJbnRlcmFjdGl2ZSBjeWNsZSBicmVha2luZycsMSk7bD1uZXcgUmtiO2ZvcihuPW5ldyBvbGIoYi5hKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTApO20ucD0xO289VF9iKG0pLmE7Zm9yKGs9V19iKG0sKEtBYygpLElBYykpLktjKCk7ay5PYigpOyl7aj1CRChrLlBiKCksMTEpO2ZvcihmPW5ldyBvbGIoai5nKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMTcpO3A9ZC5kLmk7aWYocCE9bSl7cT1UX2IocCkuYTtxPG8mJihsLmNbbC5jLmxlbmd0aF09ZCx0cnVlKX19fX1mb3IoZz1uZXcgb2xiKGwpO2cuYTxnLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihnKSwxNyk7UFpiKGQsdHJ1ZSl9bC5jPUtDKFNJLFVoZSwxLDAsNSwxKTtmb3IoaT1uZXcgb2xiKGIuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtoLnA+MCYmaUNjKGEsaCxsKX1mb3IoZT1uZXcgb2xiKGwpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7UFpiKGQsdHJ1ZSl9bC5jPUtDKFNJLFVoZSwxLDAsNSwxKTtRZGQoYyl9XG5mdW5jdGlvbiBfeihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztqPScnO2lmKGIubGVuZ3RoPT0wKXtyZXR1cm4gYS5kZShaaWUsWGllLC0xLC0xKX1rPXVmYihiKTtkZmIoay5zdWJzdHIoMCwzKSwnYXQgJykmJihrPWsuc3Vic3RyKDMpKTtrPWsucmVwbGFjZSgvXFxbLio/XFxdL2csJycpO2c9ay5pbmRleE9mKCcoJyk7aWYoZz09LTEpe2c9ay5pbmRleE9mKCdAJyk7aWYoZz09LTEpe2o9aztrPScnfWVsc2V7aj11ZmIoay5zdWJzdHIoZysxKSk7az11ZmIoay5zdWJzdHIoMCxnKSl9fWVsc2V7Yz1rLmluZGV4T2YoJyknLGcpO2o9ay5zdWJzdHIoZysxLGMtKGcrMSkpO2s9dWZiKGsuc3Vic3RyKDAsZykpfWc9aGZiKGssd2ZiKDQ2KSk7ZyE9LTEmJihrPWsuc3Vic3RyKGcrMSkpOyhrLmxlbmd0aD09MHx8ZGZiKGssJ0Fub255bW91cyBmdW5jdGlvbicpKSYmKGs9WGllKTtoPWtmYihqLHdmYig1OCkpO2U9bGZiKGosd2ZiKDU4KSxoLTEpO2k9LTE7ZD0tMTtmPVppZTtpZihoIT0tMSYmZSE9LTEpe2Y9ai5zdWJzdHIoMCxlKTtpPVZ6KGouc3Vic3RyKGUrMSxoLShlKzEpKSk7ZD1WeihqLnN1YnN0cihoKzEpKX1yZXR1cm4gYS5kZShmLGssaSxkKX1cbmZ1bmN0aW9uIFVDKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aWYoYi5sPT0wJiZiLm09PTAmJmIuaD09MCl7dGhyb3cgdmJiKG5ldyBvY2IoJ2RpdmlkZSBieSB6ZXJvJykpfWlmKGEubD09MCYmYS5tPT0wJiZhLmg9PTApe2MmJihRQz1UQygwLDAsMCkpO3JldHVybiBUQygwLDAsMCl9aWYoYi5oPT1HamUmJmIubT09MCYmYi5sPT0wKXtyZXR1cm4gVkMoYSxjKX1pPWZhbHNlO2lmKGIuaD4+MTkhPTApe2I9aEQoYik7aT0haX1nPV9DKGIpO2Y9ZmFsc2U7ZT1mYWxzZTtkPWZhbHNlO2lmKGEuaD09R2plJiZhLm09PTAmJmEubD09MCl7ZT10cnVlO2Y9dHJ1ZTtpZihnPT0tMSl7YT1TQygod0QoKSxzRCkpO2Q9dHJ1ZTtpPSFpfWVsc2V7aD1sRChhLGcpO2kmJlpDKGgpO2MmJihRQz1UQygwLDAsMCkpO3JldHVybiBofX1lbHNlIGlmKGEuaD4+MTkhPTApe2Y9dHJ1ZTthPWhEKGEpO2Q9dHJ1ZTtpPSFpfWlmKGchPS0xKXtyZXR1cm4gV0MoYSxnLGksZixjKX1pZihlRChhLGIpPDApe2MmJihmPyhRQz1oRChhKSk6KFFDPVRDKGEubCxhLm0sYS5oKSkpO3JldHVybiBUQygwLDAsMCl9cmV0dXJuIFhDKGQ/YTpUQyhhLmwsYS5tLGEuaCksYixpLGYsZSxjKX1cbmZ1bmN0aW9uIEYyYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2lmKGEuZSYmYS5jLmM8YS5mKXt0aHJvdyB2YmIobmV3IFpkYignRXhwZWN0ZWQgJythLmYrJyBwaGFzZXMgdG8gYmUgY29uZmlndXJlZDsgJysnb25seSBmb3VuZCAnK2EuYy5jKSl9az1CRChnZGIoYS5nKSw5KTtuPVB1KGEuZik7Zm9yKGY9ayxoPTAsaj1mLmxlbmd0aDtoPGo7KytoKXtkPWZbaF07bD1CRChCMmMoYSxkLmcpLDI0Nik7bD9Fa2IobixCRChJMmMoYSxsKSwxMjMpKToobi5jW24uYy5sZW5ndGhdPW51bGwsdHJ1ZSl9bz1uZXcgajNjO01BYihKQWIoTkFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihuLDE2KSksbmV3IE8yYyksbmV3IFEyYyhiKSksbmV3IFMyYyksbmV3IFUyYyhvKSk7ZDNjKG8sYS5hKTtjPW5ldyBSa2I7Zm9yKGU9ayxnPTAsaT1lLmxlbmd0aDtnPGk7KytnKXtkPWVbZ107R2tiKGMsSjJjKGEsRHgoQkQoQjJjKG8sZC5nKSwyMCkpKSk7bT1CRChJa2IobixkLmcpLDEyMyk7ISFtJiYoYy5jW2MuYy5sZW5ndGhdPW0sdHJ1ZSl9R2tiKGMsSjJjKGEsRHgoQkQoQjJjKG8sa1trLmxlbmd0aC0xXS5nKzEpLDIwKSkpKTtyZXR1cm4gY31cbmZ1bmN0aW9uIHFDYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscTtPZGQoYywnTW9kZWwgb3JkZXIgY3ljbGUgYnJlYWtpbmcnLDEpO2EuYT0wO2EuYj0wO249bmV3IFJrYjtrPWIuYS5jLmxlbmd0aDtmb3Ioaj1uZXcgb2xiKGIuYSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDEwKTt3TmIoaSwod3RjKCksWnNjKSkmJihrPSR3bmQuTWF0aC5tYXgoayxCRCh2TmIoaSxac2MpLDE5KS5hKzEpKX1mb3IocD1uZXcgb2xiKGIuYSk7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDEwKTtnPXBDYyhhLG8sayk7Zm9yKG09V19iKG8sKEtBYygpLElBYykpLktjKCk7bS5PYigpOyl7bD1CRChtLlBiKCksMTEpO2ZvcihmPW5ldyBvbGIobC5nKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMTcpO3E9ZC5kLmk7aD1wQ2MoYSxxLGspO2g8ZyYmKG4uY1tuLmMubGVuZ3RoXT1kLHRydWUpfX19Zm9yKGU9bmV3IG9sYihuKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTcpO1BaYihkLHRydWUpO3lOYihiLCh3dGMoKSxBc2MpLChCY2IoKSx0cnVlKSl9bi5jPUtDKFNJLFVoZSwxLDAsNSwxKTtRZGQoYyl9XG5mdW5jdGlvbiBrUWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaTtpZihhLmc+Yi5mfHxiLmc+YS5mKXtyZXR1cm59Yz0wO2Q9MDtmb3IoZz1hLncuYS5lYygpLktjKCk7Zy5PYigpOyl7ZT1CRChnLlBiKCksMTEpO2FSYyhsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbZS5pLm4sZS5uLGUuYV0pKS5iLGIuZyxiLmYpJiYrK2N9Zm9yKGg9YS5yLmEuZWMoKS5LYygpO2guT2IoKTspe2U9QkQoaC5QYigpLDExKTthUmMobDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2UuaS5uLGUubixlLmFdKSkuYixiLmcsYi5mKSYmLS1jfWZvcihpPWIudy5hLmVjKCkuS2MoKTtpLk9iKCk7KXtlPUJEKGkuUGIoKSwxMSk7YVJjKGw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtlLmkubixlLm4sZS5hXSkpLmIsYS5nLGEuZikmJisrZH1mb3IoZj1iLnIuYS5lYygpLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksMTEpO2FSYyhsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbZS5pLm4sZS5uLGUuYV0pKS5iLGEuZyxhLmYpJiYtLWR9aWYoYzxkKXtuZXcgQlFjKGEsYixkLWMpfWVsc2UgaWYoZDxjKXtuZXcgQlFjKGIsYSxjLWQpfWVsc2V7bmV3IEJRYyhiLGEsMCk7bmV3IEJRYyhhLGIsMCl9fVxuZnVuY3Rpb24gSlBiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscztqPWIuYztlPUlPYihhLmUpO2w9WTZjKGI3YyhSNmMoSE9iKGEuZSkpLGEuZCphLmEsYS5jKmEuYiksLTAuNSk7Yz1lLmEtbC5hO2Q9ZS5iLWwuYjtnPWIuYTtjPWcuYy1jO2Q9Zy5kLWQ7Zm9yKGk9bmV3IG9sYihqKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMzk1KTttPWguYjtuPWMrbS5hO3E9ZCttLmI7bz1RRChuL2EuYSk7cj1RRChxL2EuYik7Zj1oLmE7c3dpdGNoKGYuZyl7Y2FzZSAwOms9KFJNYigpLE9NYik7YnJlYWs7Y2FzZSAxOms9KFJNYigpLE5NYik7YnJlYWs7Y2FzZSAyOms9KFJNYigpLFBNYik7YnJlYWs7ZGVmYXVsdDprPShSTWIoKSxRTWIpO31pZihmLmEpe3M9UUQoKHEraC5jKS9hLmIpO0VrYihhLmYsbmV3IHVPYihrLG1lYihyKSxtZWIocykpKTtmPT0oUk9iKCksUU9iKT9uTmIoYSwwLHIsbyxzKTpuTmIoYSxvLHIsYS5kLTEscyl9ZWxzZXtwPVFEKChuK2guYykvYS5hKTtFa2IoYS5mLG5ldyB1T2IoayxtZWIobyksbWViKHApKSk7Zj09KFJPYigpLE9PYik/bk5iKGEsbywwLHAscik6bk5iKGEsbyxyLHAsYS5jLTEpfX19XG5mdW5jdGlvbiBjb2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdTttPW5ldyBSa2I7ZT1uZXcgUmtiO3A9bnVsbDtmb3IoaD1iLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTkpO2Y9bmV3IHFvYyhnLmEpO2UuY1tlLmMubGVuZ3RoXT1mO2lmKHApe2YuZD1wO3AuZT1mfXA9Zn10PWJvYyhhKTtmb3Ioaz0wO2s8ZS5jLmxlbmd0aDsrK2spe249bnVsbDtxPXBvYygodENiKDAsZS5jLmxlbmd0aCksQkQoZS5jWzBdLDY1MikpKTtjPW51bGw7ZD1QamU7Zm9yKGw9MTtsPGEuYi5jLmxlbmd0aDsrK2wpe3I9cT8kd25kLk1hdGguYWJzKHEuYi1sKTokd25kLk1hdGguYWJzKGwtbi5iKSsxO289bj8kd25kLk1hdGguYWJzKGwtbi5iKTpyKzE7aWYobzxyKXtqPW47aT1vfWVsc2V7aj1xO2k9cn1zPSh1PUVkYihFRCh2TmIoYSwoTnljKCksSHljKSkpKSx0W2xdKyR3bmQuTWF0aC5wb3coaSx1KSk7aWYoczxkKXtkPXM7Yz1qO2MuYz1sfWlmKCEhcSYmbD09cS5iKXtuPXE7cT1rb2MocSl9fWlmKGMpe0VrYihtLG1lYihjLmMpKTtjLmE9dHJ1ZTtsb2MoYyl9fW1tYigpO01sYihtLmMsbS5jLmxlbmd0aCxudWxsKTtyZXR1cm4gbX1cbmZ1bmN0aW9uIHFOZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosaztiPW5ldyB6TmQ7Yz1uZXcgek5kO2o9ZGZiKFF2ZSwoZT1EbWQoYS5iLFJ2ZSksIWU/bnVsbDpHRChBQWQoKCFlLmImJihlLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4NixlKSksZS5iKSxTdmUpKSkpO2ZvcihpPTA7aTxhLmk7KytpKXtoPUJEKGEuZ1tpXSwxNzApO2lmKEpEKGgsOTkpKXtnPUJEKGgsMTgpOyhnLkJiJm90ZSkhPTA/KChnLkJiJm9pZSk9PTB8fCFqJiYoZj1EbWQoZyxSdmUpLCghZj9udWxsOkdEKEFBZCgoIWYuYiYmKGYuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LGYpKSxmLmIpLGV1ZSkpKT09bnVsbCkpJiZ3dGQoYixnKTooaz16VWQoZyksISFrJiYoay5CYiZvdGUpIT0wfHwoKGcuQmImb2llKT09MHx8IWomJihkPURtZChnLFJ2ZSksKCFkP251bGw6R0QoQUFkKCghZC5iJiYoZC5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsZCkpLGQuYiksZXVlKSkpPT1udWxsKSkmJnd0ZChjLGcpKX1lbHNle1E2ZCgpO2lmKEJEKGgsNjYpLk9qKCkpe2lmKCFoLkpqKCkpe3d0ZChiLGgpO3d0ZChjLGgpfX19fXZ1ZChiKTt2dWQoYyk7YS5hPUJEKGIuZywyNDcpO0JEKGMuZywyNDcpfVxuZnVuY3Rpb24gTFRiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHI7aj1JVGIoYik7cT1CRCh2TmIoYiwoTnljKCksSXdjKSksMzE0KTtxIT0oUnBjKCksUHBjKSYmcmViKGosbmV3IFNUYik7cj1CRCh2TmIoYixDd2MpLDI5Mik7cmViKGosbmV3IFVUYihyKSk7cD0wO2s9bmV3IFJrYjtmb3IoZj1uZXcgeGtiKGopO2YuYSE9Zi5iOyl7ZT1CRCh2a2IoZiksMzcpO2FVYihhLmMsZSk7bT1CRCh2TmIoZSwod3RjKCksaXRjKSksMTUpO3ArPW0uZ2MoKTtkPW0uS2MoKTtFa2IoayxuZXcgdmdkKGUsZCkpfU9kZChjLCdSZWN1cnNpdmUgaGllcmFyY2hpY2FsIGxheW91dCcscCk7bz0wO249QkQoQkQoSWtiKGssay5jLmxlbmd0aC0xKSw0NikuYiw0Nyk7d2hpbGUobi5PYigpKXtmb3IoaT1uZXcgb2xiKGspO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSw0Nik7bT1CRChoLmIsNDcpO2c9QkQoaC5hLDM3KTt3aGlsZShtLk9iKCkpe2w9QkQobS5QYigpLDUxKTtpZihKRChsLDUwNykpe2lmKCFnLmUpe2wucGYoZyxVZGQoYywxKSk7KytvO2JyZWFrfWVsc2V7YnJlYWt9fWVsc2V7bC5wZihnLFVkZChjLDEpKTsrK299fX19UWRkKGMpfVxuZnVuY3Rpb24gcmlkKGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07aj1jLmxlbmd0aC0xO2k9KEJDYihqLGMubGVuZ3RoKSxjLmNoYXJDb2RlQXQoaikpO2lmKGk9PTkzKXtoPWhmYihjLHdmYig5MSkpO2lmKGg+PTApe2Y9d2lkKGIsYy5zdWJzdHIoMSxoLTEpKTtsPWMuc3Vic3RyKGgrMSxqLShoKzEpKTtyZXR1cm4gcGlkKGIsbCxmKX19ZWxzZXtkPS0xO1ZjYj09bnVsbCYmKFZjYj1uZXcgUmVnRXhwKCdcXFxcZCcpKTtpZihWY2IudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGkpKSl7ZD1sZmIoYyx3ZmIoNDYpLGotMSk7aWYoZD49MCl7ZT1CRChoaWQoYixCaWQoYixjLnN1YnN0cigxLGQtMSkpLGZhbHNlKSw1OCk7az0wO3RyeXtrPUljYihjLnN1YnN0cihkKzEpLFJpZSxPaGUpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTI3KSl7Zz1hO3Rocm93IHZiYihuZXcgckZkKGcpKX1lbHNlIHRocm93IHZiYihhKX1pZihrPGUuZ2MoKSl7bT1lLlhiKGspO0pEKG0sNzIpJiYobT1CRChtLDcyKS5kZCgpKTtyZXR1cm4gQkQobSw1Nil9fX1pZihkPDApe3JldHVybiBCRChoaWQoYixCaWQoYixjLnN1YnN0cigxKSksZmFsc2UpLDU2KX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBlMWQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbDtpZihiTGQoYixjKT49MCl7cmV0dXJuIGN9c3dpdGNoKCQxZChxMWQoYSxjKSkpe2Nhc2UgMjp7aWYoZGZiKCcnLG8xZChhLGMuSGooKSkubmUoKSkpe2k9YjJkKHExZChhLGMpKTtoPWEyZChxMWQoYSxjKSk7az1yMWQoYSxiLGksaCk7aWYoayl7cmV0dXJuIGt9ZT1mMWQoYSxiKTtmb3IoZz0wLGw9ZS5nYygpO2c8bDsrK2cpe2s9QkQoZS5YYihnKSwxNzApO2lmKHgxZChjMmQocTFkKGEsaykpLGkpKXtyZXR1cm4ga319fXJldHVybiBudWxsfWNhc2UgNDp7aWYoZGZiKCcnLG8xZChhLGMuSGooKSkubmUoKSkpe2ZvcihkPWM7ZDtkPVoxZChxMWQoYSxkKSkpe2o9YjJkKHExZChhLGQpKTtoPWEyZChxMWQoYSxkKSk7az1zMWQoYSxiLGosaCk7aWYoayl7cmV0dXJuIGt9fWk9YjJkKHExZChhLGMpKTtpZihkZmIoRXdlLGkpKXtyZXR1cm4gdDFkKGEsYil9ZWxzZXtmPWcxZChhLGIpO2ZvcihnPTAsbD1mLmdjKCk7ZzxsOysrZyl7az1CRChmLlhiKGcpLDE3MCk7aWYoeDFkKGMyZChxMWQoYSxrKSksaSkpe3JldHVybiBrfX19fXJldHVybiBudWxsfWRlZmF1bHQ6e3JldHVybiBudWxsfX19XG5mdW5jdGlvbiB0MmQoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs7aWYoYy5nYygpPT0wKXtyZXR1cm4gZmFsc2V9aD0oUTZkKCksQkQoYiw2NikuT2ooKSk7Zj1oP2M6bmV3IHp1ZChjLmdjKCkpO2lmKFQ2ZChhLmUsYikpe2lmKGIuaGkoKSl7Zm9yKGo9Yy5LYygpO2ouT2IoKTspe2k9ai5QYigpO2lmKCFGMmQoYSxiLGksSkQoYiw5OSkmJihCRChiLDE4KS5CYiZUamUpIT0wKSl7ZT1SNmQoYixpKTtmLkhjKGUpfHxmLkZjKGUpfX19ZWxzZSBpZighaCl7Zm9yKGo9Yy5LYygpO2ouT2IoKTspe2k9ai5QYigpO2U9UjZkKGIsaSk7Zi5GYyhlKX19fWVsc2V7aWYoYy5nYygpPjEpe3Rocm93IHZiYihuZXcgV2RiKEh3ZSkpfWs9UzZkKGEuZS5UZygpLGIpO2Q9QkQoYS5nLDExOSk7Zm9yKGc9MDtnPGEuaTsrK2cpe2U9ZFtnXTtpZihrLnJsKGUuYWsoKSkpe2lmKGMuSGMoaD9lOmUuZGQoKSkpe3JldHVybiBmYWxzZX1lbHNle2ZvcihqPWMuS2MoKTtqLk9iKCk7KXtpPWouUGIoKTtCRChHdGQoYSxnLGg/QkQoaSw3Mik6UjZkKGIsaSkpLDcyKX1yZXR1cm4gdHJ1ZX19fWlmKCFoKXtlPVI2ZChiLGMuS2MoKS5QYigpKTtmLkZjKGUpfX1yZXR1cm4geXRkKGEsZil9XG5mdW5jdGlvbiBxTWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7az1uZXcgUHNiO2ZvcihoPShqPShuZXcgJGliKGEuYykpLmEudmMoKS5LYygpLG5ldyBkamIoaikpO2guYS5PYigpOyl7Zj0oZT1CRChoLmEuUGIoKSw0MiksQkQoZS5kZCgpLDQ1OCkpO2YuYj09MCYmKEdzYihrLGYsay5jLmIsay5jKSx0cnVlKX13aGlsZShrLmIhPTApe2Y9QkQoay5iPT0wP251bGw6KHNDYihrLmIhPTApLE5zYihrLGsuYS5hKSksNDU4KTtmLmE9PW51bGwmJihmLmE9MCk7Zm9yKGQ9bmV3IG9sYihmLmQpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSw2NTQpO2MuYi5hPT1udWxsPyhjLmIuYT1FZGIoZi5hKStjLmEpOmIubz09KGVNYygpLGNNYyk/KGMuYi5hPSR3bmQuTWF0aC5taW4oRWRiKGMuYi5hKSxFZGIoZi5hKStjLmEpKTooYy5iLmE9JHduZC5NYXRoLm1heChFZGIoYy5iLmEpLEVkYihmLmEpK2MuYSkpOy0tYy5iLmI7Yy5iLmI9PTAmJkRzYihrLGMuYil9fWZvcihnPShpPShuZXcgJGliKGEuYykpLmEudmMoKS5LYygpLG5ldyBkamIoaSkpO2cuYS5PYigpOyl7Zj0oZT1CRChnLmEuUGIoKSw0MiksQkQoZS5kZCgpLDQ1OCkpO2IuaVtmLmMucF09Zi5hfX1cbmZ1bmN0aW9uIG1UYygpe21UYz1jY2I7ZFRjPW5ldyBMc2QoSW1lKTtuZXcgTHNkKEptZSk7bmV3IE1zZCgnREVQVEgnLG1lYigwKSk7WlNjPW5ldyBNc2QoJ0ZBTicsbWViKDApKTtYU2M9bmV3IE1zZChZcWUsbWViKDApKTtqVGM9bmV3IE1zZCgnUk9PVCcsKEJjYigpLGZhbHNlKSk7X1NjPW5ldyBNc2QoJ0xFRlRORUlHSEJPUicsbnVsbCk7aFRjPW5ldyBNc2QoJ1JJR0hUTkVJR0hCT1InLG51bGwpO2FUYz1uZXcgTXNkKCdMRUZUU0lCTElORycsbnVsbCk7aVRjPW5ldyBNc2QoJ1JJR0hUU0lCTElORycsbnVsbCk7WVNjPW5ldyBNc2QoJ0RVTU1ZJyxmYWxzZSk7bmV3IE1zZCgnTEVWRUwnLG1lYigwKSk7Z1RjPW5ldyBNc2QoJ1JFTU9WQUJMRV9FREdFUycsbmV3IFBzYik7a1RjPW5ldyBNc2QoJ1hDT09SJyxtZWIoMCkpO2xUYz1uZXcgTXNkKCdZQ09PUicsbWViKDApKTtiVGM9bmV3IE1zZCgnTEVWRUxIRUlHSFQnLDApOyRTYz1uZXcgTXNkKCdJRCcsJycpO2VUYz1uZXcgTXNkKCdQT1NJVElPTicsbWViKDApKTtmVGM9bmV3IE1zZCgnUFJFTElNJywwKTtjVGM9bmV3IE1zZCgnTU9ESUZJRVInLDApO1dTYz1uZXcgTHNkKEttZSk7VlNjPW5ldyBMc2QoTG1lKX1cbmZ1bmN0aW9uIE1OYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvO2s9YytiLmMuYy5hO2ZvcihuPW5ldyBvbGIoYi5qKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTEpO2U9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW20uaS5uLG0ubixtLmFdKSk7aWYoYi5rPT0oajBiKCksaTBiKSl7aD1CRCh2TmIobSwod3RjKCksJHNjKSksMTEpO2UuYT1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbaC5pLm4saC5uLGguYV0pKS5hO2Iubi5hPWUuYX1nPW5ldyBmN2MoMCxlLmIpO2lmKG0uaj09KFVjZCgpLHpjZCkpe2cuYT1rfWVsc2UgaWYobS5qPT1UY2Qpe2cuYT1jfWVsc2V7Y29udGludWV9bz0kd25kLk1hdGguYWJzKGUuYS1nLmEpO2lmKG88PWQmJiFKTmMoYikpe2NvbnRpbnVlfWY9bS5nLmMubGVuZ3RoK20uZS5jLmxlbmd0aD4xO2ZvcihqPW5ldyBiMWIobS5iKTtsbGIoai5hKXx8bGxiKGouYik7KXtpPUJEKGxsYihqLmEpP21sYihqLmEpOm1sYihqLmIpLDE3KTtsPWkuYz09bT9pLmQ6aS5jOyR3bmQuTWF0aC5hYnMobDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2wuaS5uLGwubixsLmFdKSkuYi1nLmIpPjEmJkdOYyhhLGksZyxmLG0pfX19XG5mdW5jdGlvbiBYUGMoYSl7dmFyIGIsYyxkLGUsZixnO2U9bmV3IEJpYihhLmUsMCk7ZD1uZXcgQmliKGEuYSwwKTtpZihhLmQpe2ZvcihjPTA7YzxhLmI7YysrKXtzQ2IoZS5iPGUuZC5nYygpKTtlLmQuWGIoZS5jPWUuYisrKX19ZWxzZXtmb3IoYz0wO2M8YS5iLTE7YysrKXtzQ2IoZS5iPGUuZC5nYygpKTtlLmQuWGIoZS5jPWUuYisrKTt1aWIoZSl9fWI9RWRiKChzQ2IoZS5iPGUuZC5nYygpKSxFRChlLmQuWGIoZS5jPWUuYisrKSkpKTt3aGlsZShhLmYtYj5PcWUpe2Y9YjtnPTA7d2hpbGUoJHduZC5NYXRoLmFicyhiLWYpPE9xZSl7KytnO2I9RWRiKChzQ2IoZS5iPGUuZC5nYygpKSxFRChlLmQuWGIoZS5jPWUuYisrKSkpKTtzQ2IoZC5iPGQuZC5nYygpKTtkLmQuWGIoZC5jPWQuYisrKX1pZihnPGEuYil7c0NiKGUuYj4wKTtlLmEuWGIoZS5jPS0tZS5iKTtXUGMoYSxhLmItZyxmLGQsZSk7c0NiKGUuYjxlLmQuZ2MoKSk7ZS5kLlhiKGUuYz1lLmIrKyl9c0NiKGQuYj4wKTtkLmEuWGIoZC5jPS0tZC5iKX1pZighYS5kKXtmb3IoYz0wO2M8YS5iLTE7YysrKXtzQ2IoZS5iPGUuZC5nYygpKTtlLmQuWGIoZS5jPWUuYisrKTt1aWIoZSl9fWEuZD10cnVlO2EuYz10cnVlfVxuZnVuY3Rpb24gUThkKCl7UThkPWNjYjtzOGQ9KHI4ZCgpLHE4ZCkuYjt2OGQ9QkQocXVkKFpLZChxOGQuYiksMCksMzQpO3Q4ZD1CRChxdWQoWktkKHE4ZC5iKSwxKSwzNCk7dThkPUJEKHF1ZChaS2QocThkLmIpLDIpLDM0KTtGOGQ9cThkLmJiO0JEKHF1ZChaS2QocThkLmJiKSwwKSwzNCk7QkQocXVkKFpLZChxOGQuYmIpLDEpLDM0KTtIOGQ9cThkLmZiO0k4ZD1CRChxdWQoWktkKHE4ZC5mYiksMCksMzQpO0JEKHF1ZChaS2QocThkLmZiKSwxKSwzNCk7QkQocXVkKFpLZChxOGQuZmIpLDIpLDE4KTtLOGQ9cThkLnFiO044ZD1CRChxdWQoWktkKHE4ZC5xYiksMCksMzQpO0JEKHF1ZChaS2QocThkLnFiKSwxKSwxOCk7QkQocXVkKFpLZChxOGQucWIpLDIpLDE4KTtMOGQ9QkQocXVkKFpLZChxOGQucWIpLDMpLDM0KTtNOGQ9QkQocXVkKFpLZChxOGQucWIpLDQpLDM0KTtQOGQ9QkQocXVkKFpLZChxOGQucWIpLDYpLDM0KTtPOGQ9QkQocXVkKFpLZChxOGQucWIpLDUpLDE4KTt3OGQ9cThkLmo7eDhkPXE4ZC5rO3k4ZD1xOGQucTt6OGQ9cThkLnc7QThkPXE4ZC5CO0I4ZD1xOGQuQTtDOGQ9cThkLkM7RDhkPXE4ZC5EO0U4ZD1xOGQuXztHOGQ9cThkLmNiO0o4ZD1xOGQuaGJ9XG5mdW5jdGlvbiAkRGMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG47YS5jPTA7YS5iPTA7ZD0yKmIuYy5hLmMubGVuZ3RoKzE7bzpmb3IobD1jLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMTEpO2g9ay5qPT0oVWNkKCksQWNkKXx8ay5qPT1SY2Q7bj0wO2lmKGgpe209QkQodk5iKGssKHd0YygpLGd0YykpLDEwKTtpZighbSl7Y29udGludWV9bis9VkRjKGEsZCxrLG0pfWVsc2V7Zm9yKGo9bmV3IG9sYihrLmcpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxNyk7ZT1pLmQ7aWYoZS5pLmM9PWIuYyl7RWtiKGEuYSxrKTtjb250aW51ZSBvfWVsc2V7bis9YS5nW2UucF19fWZvcihnPW5ldyBvbGIoay5lKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTcpO2U9Zi5jO2lmKGUuaS5jPT1iLmMpe0VrYihhLmEsayk7Y29udGludWUgb31lbHNle24tPWEuZ1tlLnBdfX19aWYoay5lLmMubGVuZ3RoK2suZy5jLmxlbmd0aD4wKXthLmZbay5wXT1uLyhrLmUuYy5sZW5ndGgray5nLmMubGVuZ3RoKTthLmM9JHduZC5NYXRoLm1pbihhLmMsYS5mW2sucF0pO2EuYj0kd25kLk1hdGgubWF4KGEuYixhLmZbay5wXSl9ZWxzZSBoJiYoYS5mW2sucF09bil9fVxuZnVuY3Rpb24gJDlkKGEpe2EuYj1udWxsO2EuYmI9bnVsbDthLmZiPW51bGw7YS5xYj1udWxsO2EuYT1udWxsO2EuYz1udWxsO2EuZD1udWxsO2EuZT1udWxsO2EuZj1udWxsO2Eubj1udWxsO2EuTT1udWxsO2EuTD1udWxsO2EuUT1udWxsO2EuUj1udWxsO2EuSz1udWxsO2EuZGI9bnVsbDthLmViPW51bGw7YS5nPW51bGw7YS5pPW51bGw7YS5qPW51bGw7YS5rPW51bGw7YS5nYj1udWxsO2Eubz1udWxsO2EucD1udWxsO2EucT1udWxsO2Eucj1udWxsO2EuJD1udWxsO2EuaWI9bnVsbDthLlM9bnVsbDthLlQ9bnVsbDthLnQ9bnVsbDthLnM9bnVsbDthLnU9bnVsbDthLnY9bnVsbDthLnc9bnVsbDthLkI9bnVsbDthLkE9bnVsbDthLkM9bnVsbDthLkQ9bnVsbDthLkY9bnVsbDthLkc9bnVsbDthLkg9bnVsbDthLkk9bnVsbDthLko9bnVsbDthLlA9bnVsbDthLlo9bnVsbDthLlU9bnVsbDthLlY9bnVsbDthLlc9bnVsbDthLlg9bnVsbDthLlk9bnVsbDthLl89bnVsbDthLmFiPW51bGw7YS5jYj1udWxsO2EuaGI9bnVsbDthLm5iPW51bGw7YS5sYj1udWxsO2EubWI9bnVsbDthLm9iPW51bGw7YS5wYj1udWxsO2EuamI9bnVsbDthLmtiPW51bGw7YS5OPWZhbHNlO2EuTz1mYWxzZX1cbmZ1bmN0aW9uIGw1YihhLGIsYyl7dmFyIGQsZSxmLGc7T2RkKGMsJ0dyYXBoIHRyYW5zZm9ybWF0aW9uICgnK2EuYSsnKScsMSk7Zz1NdShiLmEpO2ZvcihmPW5ldyBvbGIoYi5iKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMjkpO0drYihnLGUuYSl9ZD1CRCh2TmIoYiwoTnljKCksTXdjKSksNDE5KTtpZihkPT0oeHFjKCksdnFjKSl7c3dpdGNoKEJEKHZOYihiLEx3YyksMTAzKS5nKXtjYXNlIDI6XzRiKGIsZyk7YnJlYWs7Y2FzZSAzOnA1YihiLGcpO2JyZWFrO2Nhc2UgNDppZihhLmE9PSh5NWIoKSx4NWIpKXtwNWIoYixnKTthNWIoYixnKX1lbHNle2E1YihiLGcpO3A1YihiLGcpfX19ZWxzZXtpZihhLmE9PSh5NWIoKSx4NWIpKXtzd2l0Y2goQkQodk5iKGIsTHdjKSwxMDMpLmcpe2Nhc2UgMjpfNGIoYixnKTthNWIoYixnKTticmVhaztjYXNlIDM6cDViKGIsZyk7XzRiKGIsZyk7YnJlYWs7Y2FzZSA0Ol80YihiLGcpO3A1YihiLGcpO319ZWxzZXtzd2l0Y2goQkQodk5iKGIsTHdjKSwxMDMpLmcpe2Nhc2UgMjpfNGIoYixnKTthNWIoYixnKTticmVhaztjYXNlIDM6XzRiKGIsZyk7cDViKGIsZyk7YnJlYWs7Y2FzZSA0OnA1YihiLGcpO180YihiLGcpO319fVFkZChjKX1cbmZ1bmN0aW9uIGo2YihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHA7aj1uZXcgenNiO2s9bmV3IHpzYjtvPW5ldyB6c2I7cD1uZXcgenNiO2k9RWRiKEVEKHZOYihiLChOeWMoKSx2eWMpKSkpO2Y9RWRiKEVEKHZOYihiLGx5YykpKTtmb3IoaD1uZXcgb2xiKGMpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMCk7bD1CRCh2TmIoZywod3RjKCksSHNjKSksNjEpO2lmKGw9PShVY2QoKSxBY2QpKXtrLmEuemMoZyxrKTtmb3IoZT1uZXcgU3IodXIoUl9iKGcpLmEuS2MoKSxuZXcgU3EpKTtRcihlKTspe2Q9QkQoUnIoZSksMTcpO1FxYihqLGQuYy5pKX19ZWxzZSBpZihsPT1SY2Qpe3AuYS56YyhnLHApO2ZvcihlPW5ldyBTcih1cihSX2IoZykuYS5LYygpLG5ldyBTcSkpO1FyKGUpOyl7ZD1CRChScihlKSwxNyk7UXFiKG8sZC5jLmkpfX19aWYoai5hLmdjKCkhPTApe209bmV3IHRQYygyLGYpO249c1BjKG0sYixqLGssLWktYi5jLmIpO2lmKG4+MCl7YS5hPWkrKG4tMSkqZjtiLmMuYis9YS5hO2IuZi5iKz1hLmF9fWlmKG8uYS5nYygpIT0wKXttPW5ldyB0UGMoMSxmKTtuPXNQYyhtLGIsbyxwLGIuZi5iK2ktYi5jLmIpO24+MCYmKGIuZi5iKz1pKyhuLTEpKmYpfX1cbmZ1bmN0aW9uIGtLZChhLGIpe3ZhciBjLGQsZSxmO2Y9YS5GO2lmKGI9PW51bGwpe2EuRj1udWxsOyRKZChhLG51bGwpfWVsc2V7YS5GPSh1Q2IoYiksYik7ZD1oZmIoYix3ZmIoNjApKTtpZihkIT0tMSl7ZT1iLnN1YnN0cigwLGQpO2hmYihiLHdmYig0NikpPT0tMSYmIWRmYihlLEtoZSkmJiFkZmIoZSxFdmUpJiYhZGZiKGUsRnZlKSYmIWRmYihlLEd2ZSkmJiFkZmIoZSxIdmUpJiYhZGZiKGUsSXZlKSYmIWRmYihlLEp2ZSkmJiFkZmIoZSxLdmUpJiYoZT1MdmUpO2M9a2ZiKGIsd2ZiKDYyKSk7YyE9LTEmJihlKz0nJytiLnN1YnN0cihjKzEpKTskSmQoYSxlKX1lbHNle2U9YjtpZihoZmIoYix3ZmIoNDYpKT09LTEpe2Q9aGZiKGIsd2ZiKDkxKSk7ZCE9LTEmJihlPWIuc3Vic3RyKDAsZCkpO2lmKCFkZmIoZSxLaGUpJiYhZGZiKGUsRXZlKSYmIWRmYihlLEZ2ZSkmJiFkZmIoZSxHdmUpJiYhZGZiKGUsSHZlKSYmIWRmYihlLEl2ZSkmJiFkZmIoZSxKdmUpJiYhZGZiKGUsS3ZlKSl7ZT1MdmU7ZCE9LTEmJihlKz0nJytiLnN1YnN0cihkKSl9ZWxzZXtlPWJ9fSRKZChhLGUpO2U9PWImJihhLkY9YS5EKX19KGEuRGImNCkhPTAmJihhLkRiJjEpPT0wJiZVaGQoYSxuZXcgblNkKGEsMSw1LGYsYikpfVxuZnVuY3Rpb24gQU1jKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O3A9Yi5iLmMubGVuZ3RoO2lmKHA8Myl7cmV0dXJufW49S0MoV0Qsb2plLDI1LHAsMTUsMSk7bD0wO2ZvcihrPW5ldyBvbGIoYi5iKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksMjkpO25bbCsrXT1qLmEuYy5sZW5ndGh9bT1uZXcgQmliKGIuYiwyKTtmb3IoZD0xO2Q8cC0xO2QrKyl7Yz0oc0NiKG0uYjxtLmQuZ2MoKSksQkQobS5kLlhiKG0uYz1tLmIrKyksMjkpKTtvPW5ldyBvbGIoYy5hKTtmPTA7aD0wO2ZvcihpPTA7aTxuW2QrMV07aSsrKXt0PUJEKG1sYihvKSwxMCk7aWYoaT09bltkKzFdLTF8fHpNYyhhLHQsZCsxLGQpKXtnPW5bZF0tMTt6TWMoYSx0LGQrMSxkKSYmKGc9YS5jLmVbQkQoQkQoQkQoSWtiKGEuYy5iLHQucCksMTUpLlhiKDApLDQ2KS5hLDEwKS5wXSk7d2hpbGUoaDw9aSl7cz1CRChJa2IoYy5hLGgpLDEwKTtpZighek1jKGEscyxkKzEsZCkpe2ZvcihyPUJEKElrYihhLmMuYixzLnApLDE1KS5LYygpO3IuT2IoKTspe3E9QkQoci5QYigpLDQ2KTtlPWEuYy5lW0JEKHEuYSwxMCkucF07KGU8Znx8ZT5nKSYmUXFiKGEuYixCRChxLmIsMTcpKX19KytofWY9Z319fX1cbmZ1bmN0aW9uIG81YyhiLGMpe3ZhciBkO2lmKGM9PW51bGx8fGRmYihjLFhoZSkpe3JldHVybiBudWxsfWlmKGMubGVuZ3RoPT0wJiZiLmshPShfNWMoKSxXNWMpKXtyZXR1cm4gbnVsbH1zd2l0Y2goYi5rLmcpe2Nhc2UgMTpyZXR1cm4gZWZiKGMsa3NlKT8oQmNiKCksQWNiKTplZmIoYyxsc2UpPyhCY2IoKSx6Y2IpOm51bGw7Y2FzZSAyOnRyeXtyZXR1cm4gbWViKEljYihjLFJpZSxPaGUpKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEyNykpe3JldHVybiBudWxsfWVsc2UgdGhyb3cgdmJiKGEpfWNhc2UgNDp0cnl7cmV0dXJuIEhjYihjKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEyNykpe3JldHVybiBudWxsfWVsc2UgdGhyb3cgdmJiKGEpfWNhc2UgMzpyZXR1cm4gYztjYXNlIDU6ajVjKGIpO3JldHVybiBtNWMoYixjKTtjYXNlIDY6ajVjKGIpO3JldHVybiBuNWMoYixiLmEsYyk7Y2FzZSA3OnRyeXtkPWw1YyhiKTtkLkpmKGMpO3JldHVybiBkfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMzIpKXtyZXR1cm4gbnVsbH1lbHNlIHRocm93IHZiYihhKX1kZWZhdWx0OnRocm93IHZiYihuZXcgWmRiKCdJbnZhbGlkIHR5cGUgc2V0IGZvciB0aGlzIGxheW91dCBvcHRpb24uJykpO319XG5mdW5jdGlvbiBKV2IoYSl7QVdiKCk7dmFyIGIsYyxkLGUsZixnLGg7aD1uZXcgQ1diO2ZvcihjPW5ldyBvbGIoYSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDE0MCk7KCFoLmJ8fGIuYz49aC5iLmMpJiYoaC5iPWIpO2lmKCFoLmN8fGIuYzw9aC5jLmMpe2guZD1oLmM7aC5jPWJ9KCFoLmV8fGIuZD49aC5lLmQpJiYoaC5lPWIpOyghaC5mfHxiLmQ8PWguZi5kKSYmKGguZj1iKX1kPW5ldyBOV2IoKGxXYigpLGhXYikpO3JYYihhLHlXYixuZXcgYW1iKE9DKEdDKGJRLDEpLFVoZSwzNjksMCxbZF0pKSk7Zz1uZXcgTldiKGtXYik7clhiKGEseFdiLG5ldyBhbWIoT0MoR0MoYlEsMSksVWhlLDM2OSwwLFtnXSkpKTtlPW5ldyBOV2IoaVdiKTtyWGIoYSx3V2IsbmV3IGFtYihPQyhHQyhiUSwxKSxVaGUsMzY5LDAsW2VdKSkpO2Y9bmV3IE5XYihqV2IpO3JYYihhLHZXYixuZXcgYW1iKE9DKEdDKGJRLDEpLFVoZSwzNjksMCxbZl0pKSk7RFdiKGQuYyxoV2IpO0RXYihlLmMsaVdiKTtEV2IoZi5jLGpXYik7RFdiKGcuYyxrV2IpO2guYS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtHa2IoaC5hLGQuYyk7R2tiKGguYSxTdShlLmMpKTtHa2IoaC5hLGYuYyk7R2tiKGguYSxTdShnLmMpKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIGp4ZChhKXt2YXIgYjtzd2l0Y2goYS5kKXtjYXNlIDE6e2lmKGEuaGooKSl7cmV0dXJuIGEubyE9LTJ9YnJlYWt9Y2FzZSAyOntpZihhLmhqKCkpe3JldHVybiBhLm89PS0yfWJyZWFrfWNhc2UgMzpjYXNlIDU6Y2FzZSA0OmNhc2UgNjpjYXNlIDc6e3JldHVybiBhLm8+LTJ9ZGVmYXVsdDp7cmV0dXJuIGZhbHNlfX1iPWEuZ2ooKTtzd2l0Y2goYS5wKXtjYXNlIDA6cmV0dXJuIGIhPW51bGwmJkNjYihERChiKSkhPUtiYihhLmssMCk7Y2FzZSAxOnJldHVybiBiIT1udWxsJiZCRChiLDIxNykuYSE9VGJiKGEuayk8PDI0Pj4yNDtjYXNlIDI6cmV0dXJuIGIhPW51bGwmJkJEKGIsMTcyKS5hIT0oVGJiKGEuaykmYWplKTtjYXNlIDY6cmV0dXJuIGIhPW51bGwmJktiYihCRChiLDE2MikuYSxhLmspO2Nhc2UgNTpyZXR1cm4gYiE9bnVsbCYmQkQoYiwxOSkuYSE9VGJiKGEuayk7Y2FzZSA3OnJldHVybiBiIT1udWxsJiZCRChiLDE4NCkuYSE9VGJiKGEuayk8PDE2Pj4xNjtjYXNlIDM6cmV0dXJuIGIhPW51bGwmJkVkYihFRChiKSkhPWEuajtjYXNlIDQ6cmV0dXJuIGIhPW51bGwmJkJEKGIsMTU1KS5hIT1hLmo7ZGVmYXVsdDpyZXR1cm4gYj09bnVsbD9hLm4hPW51bGw6IXBiKGIsYS5uKTt9fVxuZnVuY3Rpb24gbk9kKGEsYixjKXt2YXIgZCxlLGYsZztpZihhLkZrKCkmJmEuRWsoKSl7Zz1vT2QoYSxCRChjLDU2KSk7aWYoUEQoZykhPT1QRChjKSl7YS5PaShiKTthLlVpKGIscE9kKGEsYixnKSk7aWYoYS5yaygpKXtmPShlPUJEKGMsNDkpLGEuRGsoKT9hLkJrKCk/ZS5paChhLmIselVkKEJEKFhLZCh3amQoYS5iKSxhLmFqKCkpLDE4KSkubixCRChYS2Qod2pkKGEuYiksYS5haigpKS5ZaigpLDI2KS5CaigpLG51bGwpOmUuaWgoYS5iLGJMZChlLlRnKCkselVkKEJEKFhLZCh3amQoYS5iKSxhLmFqKCkpLDE4KSkpLG51bGwsbnVsbCk6ZS5paChhLmIsLTEtYS5haigpLG51bGwsbnVsbCkpOyFCRChnLDQ5KS5laCgpJiYoZj0oZD1CRChnLDQ5KSxhLkRrKCk/YS5CaygpP2QuZ2goYS5iLHpVZChCRChYS2Qod2pkKGEuYiksYS5haigpKSwxOCkpLm4sQkQoWEtkKHdqZChhLmIpLGEuYWooKSkuWWooKSwyNikuQmooKSxmKTpkLmdoKGEuYixiTGQoZC5UZygpLHpVZChCRChYS2Qod2pkKGEuYiksYS5haigpKSwxOCkpKSxudWxsLGYpOmQuZ2goYS5iLC0xLWEuYWooKSxudWxsLGYpKSk7ISFmJiZmLkZpKCl9b2lkKGEuYikmJmEuJGkoYS5aaSg5LGMsZyxiLGZhbHNlKSk7cmV0dXJuIGd9fXJldHVybiBjfVxuZnVuY3Rpb24gTm9jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7az1FZGIoRUQodk5iKGEsKE55YygpLG95YykpKSk7ZD1FZGIoRUQodk5iKGEsQ3ljKSkpO209bmV3IF9mZDt5TmIobSxveWMsaytkKTtqPWI7cj1qLmQ7cD1qLmMuaTtzPWouZC5pO3E9RzFiKHAuYyk7dD1HMWIocy5jKTtlPW5ldyBSa2I7Zm9yKGw9cTtsPD10O2wrKyl7aD1uZXcgYjBiKGEpO19fYihoLChqMGIoKSxnMGIpKTt5TmIoaCwod3RjKCksJHNjKSxqKTt5TmIoaCxWeGMsKGRjZCgpLCRiZCkpO3lOYihoLHF5YyxtKTtuPUJEKElrYihhLmIsbCksMjkpO2w9PXE/Wl9iKGgsbi5hLmMubGVuZ3RoLWMsbik6JF9iKGgsbik7dT1FZGIoRUQodk5iKGosWndjKSkpO2lmKHU8MCl7dT0wO3lOYihqLFp3Yyx1KX1oLm8uYj11O289JHduZC5NYXRoLmZsb29yKHUvMik7Zz1uZXcgSDBiO0cwYihnLChVY2QoKSxUY2QpKTtGMGIoZyxoKTtnLm4uYj1vO2k9bmV3IEgwYjtHMGIoaSx6Y2QpO0YwYihpLGgpO2kubi5iPW87UlpiKGosZyk7Zj1uZXcgVVpiO3ROYihmLGopO3lOYihmLGp4YyxudWxsKTtRWmIoZixpKTtSWmIoZixyKTtPb2MoaCxqLGYpO2UuY1tlLmMubGVuZ3RoXT1mO2o9Zn1yZXR1cm4gZX1cbmZ1bmN0aW9uIHNiYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDtpPUJEKFlfYihhLChVY2QoKSxUY2QpKS5LYygpLlBiKCksMTEpLmU7bj1CRChZX2IoYSx6Y2QpLktjKCkuUGIoKSwxMSkuZztoPWkuYy5sZW5ndGg7dD1BMGIoQkQoSWtiKGEuaiwwKSwxMSkpO3doaWxlKGgtLT4wKXtwPSh0Q2IoMCxpLmMubGVuZ3RoKSxCRChpLmNbMF0sMTcpKTtlPSh0Q2IoMCxuLmMubGVuZ3RoKSxCRChuLmNbMF0sMTcpKTtzPWUuZC5lO2Y9SmtiKHMsZSwwKTtTWmIocCxlLmQsZik7UVpiKGUsbnVsbCk7UlpiKGUsbnVsbCk7bz1wLmE7YiYmRHNiKG8sbmV3IGc3Yyh0KSk7Zm9yKGQ9SnNiKGUuYSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksOCk7RHNiKG8sbmV3IGc3YyhjKSl9cj1wLmI7Zm9yKG09bmV3IG9sYihlLmIpO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSw3MCk7ci5jW3IuYy5sZW5ndGhdPWx9cT1CRCh2TmIocCwoTnljKCksanhjKSksNzQpO2c9QkQodk5iKGUsanhjKSw3NCk7aWYoZyl7aWYoIXEpe3E9bmV3IHM3Yzt5TmIocCxqeGMscSl9Zm9yKGs9SnNiKGcsMCk7ay5iIT1rLmQuYzspe2o9QkQoWHNiKGspLDgpO0RzYihxLG5ldyBnN2MoaikpfX19fVxuZnVuY3Rpb24gRUpiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuO2M9QkQoTXBiKGEuYixiKSwxMjQpO2k9QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCk7aWYoaS5kYygpKXtjLm4uYj0wO2Mubi5jPTA7cmV0dXJufWo9YS51LkhjKChyY2QoKSxuY2QpKTtnPTA7aD1pLktjKCk7az1udWxsO2w9MDttPTA7d2hpbGUoaC5PYigpKXtkPUJEKGguUGIoKSwxMTEpO2U9RWRiKEVEKGQuYi5XZSgoQ0tiKCksQktiKSkpKTtmPWQuYi5yZigpLmE7YS5BLkhjKCh0ZGQoKSxzZGQpKSYmS0piKGEsYik7aWYoIWspeyEhYS5DJiZhLkMuYj4wJiYoZz0kd25kLk1hdGgubWF4KGcsSUpiKGEuQy5iK2QuZC5iLGUpKSl9ZWxzZXtuPW0ray5kLmMrYS53K2QuZC5iO2c9JHduZC5NYXRoLm1heChnLChJeSgpLE15KHBsZSksJHduZC5NYXRoLmFicyhsLWUpPD1wbGV8fGw9PWV8fGlzTmFOKGwpJiZpc05hTihlKT8wOm4vKGUtbCkpKX1rPWQ7bD1lO209Zn1pZighIWEuQyYmYS5DLmM+MCl7bj1tK2EuQy5jO2omJihuKz1rLmQuYyk7Zz0kd25kLk1hdGgubWF4KGcsKEl5KCksTXkocGxlKSwkd25kLk1hdGguYWJzKGwtMSk8PXBsZXx8bD09MXx8aXNOYU4obCkmJmlzTmFOKDEpPzA6bi8oMS1sKSkpfWMubi5iPTA7Yy5hLmE9Z31cbmZ1bmN0aW9uIE5LYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbjtjPUJEKE1wYihhLmIsYiksMTI0KTtpPUJEKEJEKFFjKGEucixiKSwyMSksODQpO2lmKGkuZGMoKSl7Yy5uLmQ9MDtjLm4uYT0wO3JldHVybn1qPWEudS5IYygocmNkKCksbmNkKSk7Zz0wO2EuQS5IYygodGRkKCksc2RkKSkmJlNLYihhLGIpO2g9aS5LYygpO2s9bnVsbDttPTA7bD0wO3doaWxlKGguT2IoKSl7ZD1CRChoLlBiKCksMTExKTtmPUVkYihFRChkLmIuV2UoKENLYigpLEJLYikpKSk7ZT1kLmIucmYoKS5iO2lmKCFrKXshIWEuQyYmYS5DLmQ+MCYmKGc9JHduZC5NYXRoLm1heChnLElKYihhLkMuZCtkLmQuZCxmKSkpfWVsc2V7bj1sK2suZC5hK2EudytkLmQuZDtnPSR3bmQuTWF0aC5tYXgoZywoSXkoKSxNeShwbGUpLCR3bmQuTWF0aC5hYnMobS1mKTw9cGxlfHxtPT1mfHxpc05hTihtKSYmaXNOYU4oZik/MDpuLyhmLW0pKSl9az1kO209ZjtsPWV9aWYoISFhLkMmJmEuQy5hPjApe249bCthLkMuYTtqJiYobis9ay5kLmEpO2c9JHduZC5NYXRoLm1heChnLChJeSgpLE15KHBsZSksJHduZC5NYXRoLmFicyhtLTEpPD1wbGV8fG09PTF8fGlzTmFOKG0pJiZpc05hTigxKT8wOm4vKDEtbSkpKX1jLm4uZD0wO2MuYS5iPWd9XG5mdW5jdGlvbiBfRWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaTt0aGlzLmc9YTtoPWIuZC5sZW5ndGg7aT1jLmQubGVuZ3RoO3RoaXMuZD1LQyhPUSxrbmUsMTAsaCtpLDAsMSk7Zm9yKGc9MDtnPGg7ZysrKXt0aGlzLmRbZ109Yi5kW2ddfWZvcihmPTA7ZjxpO2YrKyl7dGhpcy5kW2grZl09Yy5kW2ZdfWlmKGIuZSl7dGhpcy5lPVJ1KGIuZSk7dGhpcy5lLk1jKGMpO2lmKGMuZSl7Zm9yKGU9Yy5lLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMjMzKTtpZihkPT1iKXtjb250aW51ZX1lbHNlIHRoaXMuZS5IYyhkKT8tLWQuYzp0aGlzLmUuRmMoZCl9fX1lbHNlIGlmKGMuZSl7dGhpcy5lPVJ1KGMuZSk7dGhpcy5lLk1jKGIpfXRoaXMuZj1iLmYrYy5mO3RoaXMuYT1iLmErYy5hO3RoaXMuYT4wP1pFYyh0aGlzLHRoaXMuZi90aGlzLmEpOlJFYyhiLmcsYi5kWzBdKS5hIT1udWxsJiZSRWMoYy5nLGMuZFswXSkuYSE9bnVsbD9aRWModGhpcywoRWRiKFJFYyhiLmcsYi5kWzBdKS5hKStFZGIoUkVjKGMuZyxjLmRbMF0pLmEpKS8yKTpSRWMoYi5nLGIuZFswXSkuYSE9bnVsbD9aRWModGhpcyxSRWMoYi5nLGIuZFswXSkuYSk6UkVjKGMuZyxjLmRbMF0pLmEhPW51bGwmJlpFYyh0aGlzLFJFYyhjLmcsYy5kWzBdKS5hKX1cbmZ1bmN0aW9uIEJVYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsO2EuYT1uZXcgZFZiKG9xYih0MSkpO2ZvcihkPW5ldyBvbGIoYi5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksODQxKTtoPW5ldyBnVmIoT0MoR0MoSVAsMSksVWhlLDgxLDAsW10pKTtFa2IoYS5hLmEsaCk7Zm9yKGo9bmV3IG9sYihjLmQpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMTApO2s9bmV3IEdVYihhLGkpO0FVYihrLEJEKHZOYihjLmMsKHd0YygpLEVzYykpLDIxKSk7aWYoIU1oYihhLmcsYykpe1JoYihhLmcsYyxuZXcgZjdjKGkuYyxpLmQpKTtSaGIoYS5mLGMsayl9RWtiKGEuYS5iLGspO2VWYihoLGspfWZvcihnPW5ldyBvbGIoYy5iKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksNTk0KTtrPW5ldyBHVWIoYSxmLmtmKCkpO1JoYihhLmIsZixuZXcgdmdkKGgsaykpO0FVYihrLEJEKHZOYihjLmMsKHd0YygpLEVzYykpLDIxKSk7aWYoZi5oZigpKXtsPW5ldyBIVWIoYSxmLmhmKCksMSk7QVViKGwsQkQodk5iKGMuYyxFc2MpLDIxKSk7ZT1uZXcgZ1ZiKE9DKEdDKElQLDEpLFVoZSw4MSwwLFtdKSk7ZVZiKGUsbCk7UmMoYS5jLGYuZ2YoKSxuZXcgdmdkKGgsbCkpfX19cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIG9CYyhhKXt2YXIgYjt0aGlzLmE9YTtiPShqMGIoKSxPQyhHQyhOUSwxKSxLaWUsMjY3LDAsW2gwYixnMGIsZTBiLGkwYixmMGIsZDBiXSkpLmxlbmd0aDt0aGlzLmI9SUMoUTMsW25pZSx6cWVdLFs1OTMsMTQ2XSwwLFtiLGJdLDIpO3RoaXMuYz1JQyhRMyxbbmllLHpxZV0sWzU5MywxNDZdLDAsW2IsYl0sMik7bkJjKHRoaXMsaDBiLChOeWMoKSx2eWMpLHd5Yyk7bEJjKHRoaXMsaDBiLGcwYixveWMscHljKTtrQmModGhpcyxoMGIsaTBiLG95Yyk7a0JjKHRoaXMsaDBiLGUwYixveWMpO2xCYyh0aGlzLGgwYixmMGIsdnljLHd5Yyk7bkJjKHRoaXMsZzBiLGx5YyxteWMpO2tCYyh0aGlzLGcwYixpMGIsbHljKTtrQmModGhpcyxnMGIsZTBiLGx5Yyk7bEJjKHRoaXMsZzBiLGYwYixveWMscHljKTttQmModGhpcyxpMGIsbHljKTtrQmModGhpcyxpMGIsZTBiLGx5Yyk7a0JjKHRoaXMsaTBiLGYwYixzeWMpO21CYyh0aGlzLGUwYix6eWMpO2xCYyh0aGlzLGUwYixmMGIsdXljLHR5Yyk7bkJjKHRoaXMsZjBiLGx5YyxseWMpO25CYyh0aGlzLGQwYixseWMsbXljKTtsQmModGhpcyxkMGIsaDBiLG95YyxweWMpO2xCYyh0aGlzLGQwYixmMGIsb3ljLHB5Yyk7bEJjKHRoaXMsZDBiLGcwYixveWMscHljKX1cbmZ1bmN0aW9uIF8yZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscTtnPWMuYWsoKTtpZihKRChnLDk5KSYmKEJEKGcsMTgpLkJiJlRqZSkhPTApe209QkQoYy5kZCgpLDQ5KTtwPXhpZChhLmUsbSk7aWYocCE9bSl7az1SNmQoZyxwKTttdWQoYSxiLHQzZChhLGIsaykpO2w9bnVsbDtpZihvaWQoYS5lKSl7ZD1lMWQoKE82ZCgpLE02ZCksYS5lLlRnKCksZyk7aWYoZCE9WEtkKGEuZS5UZygpLGEuYykpe3E9UzZkKGEuZS5UZygpLGcpO2g9MDtmPUJEKGEuZywxMTkpO2ZvcihpPTA7aTxiOysraSl7ZT1mW2ldO3EucmwoZS5haygpKSYmKytofWw9bmV3IE83ZChhLmUsOSxkLG0scCxoLGZhbHNlKTtsLkVpKG5ldyBwU2QoYS5lLDksYS5jLGMsayxiLGZhbHNlKSl9fW89QkQoZywxOCk7bj16VWQobyk7aWYobil7bD1tLmloKGEuZSxiTGQobS5UZygpLG4pLG51bGwsbCk7bD1CRChwLDQ5KS5naChhLmUsYkxkKHAuVGcoKSxuKSxudWxsLGwpfWVsc2UgaWYoKG8uQmImb3RlKSE9MCl7aj0tMS1iTGQoYS5lLlRnKCksbyk7bD1tLmloKGEuZSxqLG51bGwsbnVsbCk7IUJEKHAsNDkpLmVoKCkmJihsPUJEKHAsNDkpLmdoKGEuZSxqLG51bGwsbCkpfSEhbCYmbC5GaSgpO3JldHVybiBrfX1yZXR1cm4gY31cbmZ1bmN0aW9uIHlVYihhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2ZvcihmPW5ldyBvbGIoYS5hLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSw4MSk7ZS5iLmM9ZS5nLmM7ZS5iLmQ9ZS5nLmR9aT1uZXcgZjdjKFBqZSxQamUpO2I9bmV3IGY3YyhRamUsUWplKTtmb3IoZD1uZXcgb2xiKGEuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksODEpO2kuYT0kd25kLk1hdGgubWluKGkuYSxjLmcuYyk7aS5iPSR3bmQuTWF0aC5taW4oaS5iLGMuZy5kKTtiLmE9JHduZC5NYXRoLm1heChiLmEsYy5nLmMrYy5nLmIpO2IuYj0kd25kLk1hdGgubWF4KGIuYixjLmcuZCtjLmcuYSl9Zm9yKGg9VWMoYS5jKS5hLm5jKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksNDYpO2M9QkQoZy5iLDgxKTtpLmE9JHduZC5NYXRoLm1pbihpLmEsYy5nLmMpO2kuYj0kd25kLk1hdGgubWluKGkuYixjLmcuZCk7Yi5hPSR3bmQuTWF0aC5tYXgoYi5hLGMuZy5jK2MuZy5iKTtiLmI9JHduZC5NYXRoLm1heChiLmIsYy5nLmQrYy5nLmEpfWEuZD1WNmMobmV3IGY3YyhpLmEsaS5iKSk7YS5lPWM3YyhuZXcgZjdjKGIuYSxiLmIpLGkpO2EuYS5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2EuYS5iLmM9S0MoU0ksVWhlLDEsMCw1LDEpfVxuZnVuY3Rpb24gc3ZkKGEpe3ZhciBiLGMsZDtsNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IFo5Y10pKTtjPW5ldyB4QihhKTtmb3IoZD0wO2Q8Yy5hLmxlbmd0aDsrK2Qpe2I9dEIoYyxkKS5qZSgpLmE7ZGZiKGIsJ2xheWVyZWQnKT9sNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IGt3Y10pKTpkZmIoYiwnZm9yY2UnKT9sNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IFRSYl0pKTpkZmIoYiwnc3RyZXNzJyk/bDRjKGx2ZCxPQyhHQyhDMCwxKSxVaGUsMTMwLDAsW25ldyBQU2JdKSk6ZGZiKGIsJ21ydHJlZScpP2w0YyhsdmQsT0MoR0MoQzAsMSksVWhlLDEzMCwwLFtuZXcgc1RjXSkpOmRmYihiLCdyYWRpYWwnKT9sNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IElXY10pKTpkZmIoYiwnZGlzY28nKT9sNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IGdGYixuZXcgb1BiXSkpOmRmYihiLCdzcG9yZU92ZXJsYXAnKXx8ZGZiKGIsJ3Nwb3JlQ29tcGFjdGlvbicpP2w0YyhsdmQsT0MoR0MoQzAsMSksVWhlLDEzMCwwLFtuZXcgQjBjXSkpOmRmYihiLCdyZWN0cGFja2luZycpJiZsNGMobHZkLE9DKEdDKEMwLDEpLFVoZSwxMzAsMCxbbmV3IFBZY10pKX19XG5mdW5jdGlvbiBqX2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscjttPW5ldyBnN2MoYS5vKTtyPWIuYS9tLmE7aD1iLmIvbS5iO3A9Yi5hLW0uYTtmPWIuYi1tLmI7aWYoYyl7ZT1QRCh2TmIoYSwoTnljKCksVnhjKSkpPT09UEQoKGRjZCgpLCRiZCkpO2ZvcihvPW5ldyBvbGIoYS5qKTtvLmE8by5jLmMubGVuZ3RoOyl7bj1CRChtbGIobyksMTEpO3N3aXRjaChuLmouZyl7Y2FzZSAxOmV8fChuLm4uYSo9cik7YnJlYWs7Y2FzZSAyOm4ubi5hKz1wO2V8fChuLm4uYio9aCk7YnJlYWs7Y2FzZSAzOmV8fChuLm4uYSo9cik7bi5uLmIrPWY7YnJlYWs7Y2FzZSA0OmV8fChuLm4uYio9aCk7fX19Zm9yKGo9bmV3IG9sYihhLmIpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSw3MCk7az1pLm4uYStpLm8uYS8yO2w9aS5uLmIraS5vLmIvMjtxPWsvbS5hO2c9bC9tLmI7aWYocStnPj0xKXtpZihxLWc+MCYmbD49MCl7aS5uLmErPXA7aS5uLmIrPWYqZ31lbHNlIGlmKHEtZzwwJiZrPj0wKXtpLm4uYSs9cCpxO2kubi5iKz1mfX19YS5vLmE9Yi5hO2Euby5iPWIuYjt5TmIoYSwoTnljKCksRnhjKSwodGRkKCksZD1CRChnZGIoSTEpLDkpLG5ldyB4cWIoZCxCRChfQmIoZCxkLmxlbmd0aCksOSksMCkpKX1cbmZ1bmN0aW9uIGlGZChhLGIsYyxkLGUsZil7dmFyIGc7aWYoIShiPT1udWxsfHwhT0VkKGIsekVkLEFFZCkpKXt0aHJvdyB2YmIobmV3IFdkYignaW52YWxpZCBzY2hlbWU6ICcrYikpfWlmKCFhJiYhKGMhPW51bGwmJmhmYihjLHdmYigzNSkpPT0tMSYmYy5sZW5ndGg+MCYmKEJDYigwLGMubGVuZ3RoKSxjLmNoYXJDb2RlQXQoMCkhPTQ3KSkpe3Rocm93IHZiYihuZXcgV2RiKCdpbnZhbGlkIG9wYXF1ZVBhcnQ6ICcrYykpfWlmKGEmJiEoYiE9bnVsbCYmaG5iKEdFZCxiLnRvTG93ZXJDYXNlKCkpKSYmIShjPT1udWxsfHwhT0VkKGMsQ0VkLERFZCkpKXt0aHJvdyB2YmIobmV3IFdkYihtdmUrYykpfWlmKGEmJmIhPW51bGwmJmhuYihHRWQsYi50b0xvd2VyQ2FzZSgpKSYmIWVGZChjKSl7dGhyb3cgdmJiKG5ldyBXZGIobXZlK2MpKX1pZighZkZkKGQpKXt0aHJvdyB2YmIobmV3IFdkYignaW52YWxpZCBkZXZpY2U6ICcrZCkpfWlmKCFoRmQoZSkpe2c9ZT09bnVsbD8naW52YWxpZCBzZWdtZW50czogbnVsbCc6J2ludmFsaWQgc2VnbWVudDogJytWRWQoZSk7dGhyb3cgdmJiKG5ldyBXZGIoZykpfWlmKCEoZj09bnVsbHx8aGZiKGYsd2ZiKDM1KSk9PS0xKSl7dGhyb3cgdmJiKG5ldyBXZGIoJ2ludmFsaWQgcXVlcnk6ICcrZikpfX1cbmZ1bmN0aW9uIG5WYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO09kZChiLCdDYWxjdWxhdGUgR3JhcGggU2l6ZScsMSk7Yi5uJiYhIWEmJlRkZChiLGk2ZChhKSwocGdkKCksbWdkKSk7aD1kbWU7aT1kbWU7Zj1lcmU7Zz1lcmU7Zm9yKGw9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtsLmUhPWwuaS5nYygpOyl7aj1CRChEeWQobCksMzMpO289ai5pO3A9ai5qO3I9ai5nO2Q9ai5mO2U9QkQoaGtkKGosKFk5YygpLFM4YykpLDE0Mik7aD0kd25kLk1hdGgubWluKGgsby1lLmIpO2k9JHduZC5NYXRoLm1pbihpLHAtZS5kKTtmPSR3bmQuTWF0aC5tYXgoZixvK3IrZS5jKTtnPSR3bmQuTWF0aC5tYXgoZyxwK2QrZS5hKX1uPUJEKGhrZChhLChZOWMoKSxmOWMpKSwxMTYpO209bmV3IGY3YyhoLW4uYixpLW4uZCk7Zm9yKGs9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtrLmUhPWsuaS5nYygpOyl7aj1CRChEeWQoayksMzMpO2RsZChqLGouaS1tLmEpO2VsZChqLGouai1tLmIpfXE9Zi1oKyhuLmIrbi5jKTtjPWctaSsobi5kK24uYSk7Y2xkKGEscSk7YWxkKGEsYyk7Yi5uJiYhIWEmJlRkZChiLGk2ZChhKSwocGdkKCksbWdkKSl9XG5mdW5jdGlvbiByR2IoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGs7ZD1uZXcgUmtiO2ZvcihnPW5ldyBvbGIoYS5lLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihnKSwxMjEpO2s9MDtlLmsuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Zm9yKGM9bmV3IG9sYihMRmIoZSkpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyMTMpO2lmKGIuZil7RWtiKGUuayxiKTsrK2t9fWs9PTEmJihkLmNbZC5jLmxlbmd0aF09ZSx0cnVlKX1mb3IoZj1uZXcgb2xiKGQpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMjEpO3doaWxlKGUuay5jLmxlbmd0aD09MSl7aj1CRChtbGIobmV3IG9sYihlLmspKSwyMTMpO2EuYltqLmNdPWouZztoPWouZDtpPWouZTtmb3IoYz1uZXcgb2xiKExGYihlKSk7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDIxMyk7cGIoYixqKXx8KGIuZj9oPT1iLmR8fGk9PWIuZT8oYS5iW2ouY10tPWEuYltiLmNdLWIuZyk6KGEuYltqLmNdKz1hLmJbYi5jXS1iLmcpOmU9PWg/Yi5kPT1lPyhhLmJbai5jXSs9Yi5nKTooYS5iW2ouY10tPWIuZyk6Yi5kPT1lPyhhLmJbai5jXS09Yi5nKTooYS5iW2ouY10rPWIuZykpfUxrYihoLmssaik7TGtiKGkuayxqKTtoPT1lPyhlPWouZSk6KGU9ai5kKX19fVxuZnVuY3Rpb24gazRjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG87aWYoYj09bnVsbHx8Yi5sZW5ndGg9PTApe3JldHVybiBudWxsfWY9QkQoUGhiKGEuZixiKSwyMyk7aWYoIWYpe2ZvcihlPShuPShuZXcgJGliKGEuZCkpLmEudmMoKS5LYygpLG5ldyBkamIobikpO2UuYS5PYigpOyl7Yz0oZz1CRChlLmEuUGIoKSw0MiksQkQoZy5kZCgpLDIzKSk7aD1jLmY7bz1iLmxlbmd0aDtpZihkZmIoaC5zdWJzdHIoaC5sZW5ndGgtbyxvKSxiKSYmKGIubGVuZ3RoPT1oLmxlbmd0aHx8YmZiKGgsaC5sZW5ndGgtYi5sZW5ndGgtMSk9PTQ2KSl7aWYoZil7cmV0dXJuIG51bGx9Zj1jfX1pZighZil7Zm9yKGQ9KG09KG5ldyAkaWIoYS5kKSkuYS52YygpLktjKCksbmV3IGRqYihtKSk7ZC5hLk9iKCk7KXtjPShnPUJEKGQuYS5QYigpLDQyKSxCRChnLmRkKCksMjMpKTtsPWMuZztpZihsIT1udWxsKXtmb3IoaT1sLGo9MCxrPWkubGVuZ3RoO2o8azsrK2ope2g9aVtqXTtvPWIubGVuZ3RoO2lmKGRmYihoLnN1YnN0cihoLmxlbmd0aC1vLG8pLGIpJiYoYi5sZW5ndGg9PWgubGVuZ3RofHxiZmIoaCxoLmxlbmd0aC1iLmxlbmd0aC0xKT09NDYpKXtpZihmKXtyZXR1cm4gbnVsbH1mPWN9fX19fSEhZiYmU2hiKGEuZixiLGYpfXJldHVybiBmfVxuZnVuY3Rpb24gc0EoYSxiKXt2YXIgYyxkLGUsZixnO2M9bmV3IFZmYjtnPWZhbHNlO2ZvcihmPTA7ZjxiLmxlbmd0aDtmKyspe2Q9KEJDYihmLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZikpO2lmKGQ9PTMyKXtnQShhLGMsMCk7Yy5hKz0nICc7Z0EoYSxjLDApO3doaWxlKGYrMTxiLmxlbmd0aCYmKEJDYihmKzEsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChmKzEpPT0zMikpeysrZn1jb250aW51ZX1pZihnKXtpZihkPT0zOSl7aWYoZisxPGIubGVuZ3RoJiYoQkNiKGYrMSxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGYrMSk9PTM5KSl7Yy5hKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGQpOysrZn1lbHNle2c9ZmFsc2V9fWVsc2V7Yy5hKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGQpfWNvbnRpbnVlfWlmKGhmYignR3lNTGRrSG1zU0VjRGFoS3padicsd2ZiKGQpKT4wKXtnQShhLGMsMCk7Yy5hKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGQpO2U9bEEoYixmKTtnQShhLGMsZSk7Zis9ZS0xO2NvbnRpbnVlfWlmKGQ9PTM5KXtpZihmKzE8Yi5sZW5ndGgmJihCQ2IoZisxLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZisxKT09MzkpKXtjLmErPVwiJ1wiOysrZn1lbHNle2c9dHJ1ZX19ZWxzZXtjLmErPVN0cmluZy5mcm9tQ2hhckNvZGUoZCl9fWdBKGEsYywwKTttQShhKX1cbmZ1bmN0aW9uIHdEYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO09kZChjLCdOZXR3b3JrIHNpbXBsZXggbGF5ZXJpbmcnLDEpO2EuYj1iO3I9QkQodk5iKGIsKE55YygpLEF5YykpLDE5KS5hKjQ7cT1hLmIuYTtpZihxLmMubGVuZ3RoPDEpe1FkZChjKTtyZXR1cm59Zj1zRGMoYSxxKTtwPW51bGw7Zm9yKGU9SnNiKGYsMCk7ZS5iIT1lLmQuYzspe2Q9QkQoWHNiKGUpLDE1KTtoPXIqUUQoJHduZC5NYXRoLnNxcnQoZC5nYygpKSk7Zz12RGMoZCk7dUdiKEhHYihKR2IoSUdiKExHYihnKSxoKSxwKSx0cnVlKSxVZGQoYywxKSk7bT1hLmIuYjtmb3Iobz1uZXcgb2xiKGcuYSk7by5hPG8uYy5jLmxlbmd0aDspe249QkQobWxiKG8pLDEyMSk7d2hpbGUobS5jLmxlbmd0aDw9bi5lKXtEa2IobSxtLmMubGVuZ3RoLG5ldyBIMWIoYS5iKSl9az1CRChuLmYsMTApOyRfYihrLEJEKElrYihtLG4uZSksMjkpKX1pZihmLmI+MSl7cD1LQyhXRCxvamUsMjUsYS5iLmIuYy5sZW5ndGgsMTUsMSk7bD0wO2ZvcihqPW5ldyBvbGIoYS5iLmIpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwyOSk7cFtsKytdPWkuYS5jLmxlbmd0aH19fXEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7YS5hPW51bGw7YS5iPW51bGw7YS5jPW51bGw7UWRkKGMpfVxuZnVuY3Rpb24gT1ViKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2I9MDtmb3IoZj1uZXcgb2xiKGEuYi5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMTg5KTtkLmI9MDtkLmM9MH1OVWIoYSwwKTtNVWIoYSxhLmcpO3NWYihhLmMpO3dWYihhLmMpO2M9KGVhZCgpLGFhZCk7dVZiKG9WYih0VmIodVZiKG9WYih0VmIodVZiKHRWYihhLmMsYykpLGhhZChjKSkpKSxjKSkpO3RWYihhLmMsYWFkKTtSVWIoYSxhLmcpO1NVYihhLDApO1RVYihhLDApO1VVYihhLDEpO05VYihhLDEpO01VYihhLGEuZCk7c1ZiKGEuYyk7Zm9yKGc9bmV3IG9sYihhLmIuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGcpLDE4OSk7Yis9JHduZC5NYXRoLmFicyhkLmMpfWZvcihoPW5ldyBvbGIoYS5iLmEpO2guYTxoLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihoKSwxODkpO2QuYj0wO2QuYz0wfWM9ZGFkO3VWYihvVmIodFZiKHVWYihvVmIodFZiKHVWYih3VmIodFZiKGEuYyxjKSkpLGhhZChjKSkpKSxjKSkpO3RWYihhLmMsYWFkKTtSVWIoYSxhLmQpO1NVYihhLDEpO1RVYihhLDEpO1VVYihhLDApO3dWYihhLmMpO2ZvcihlPW5ldyBvbGIoYS5iLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxODkpO2IrPSR3bmQuTWF0aC5hYnMoZC5jKX1yZXR1cm4gYn1cbmZ1bmN0aW9uIFdmZShhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztqPWI7aWYoai5iPT1udWxsfHxhLmI9PW51bGwpcmV0dXJuO1lmZShhKTtWZmUoYSk7WWZlKGopO1ZmZShqKTtjPUtDKFdELG9qZSwyNSxhLmIubGVuZ3RoK2ouYi5sZW5ndGgsMTUsMSk7az0wO2Q9MDtnPTA7d2hpbGUoZDxhLmIubGVuZ3RoJiZnPGouYi5sZW5ndGgpe2U9YS5iW2RdO2Y9YS5iW2QrMV07aD1qLmJbZ107aT1qLmJbZysxXTtpZihmPGgpe2QrPTJ9ZWxzZSBpZihmPj1oJiZlPD1pKXtpZihoPD1lJiZmPD1pKXtjW2srK109ZTtjW2srK109ZjtkKz0yfWVsc2UgaWYoaDw9ZSl7Y1trKytdPWU7Y1trKytdPWk7YS5iW2RdPWkrMTtnKz0yfWVsc2UgaWYoZjw9aSl7Y1trKytdPWg7Y1trKytdPWY7ZCs9Mn1lbHNle2NbaysrXT1oO2NbaysrXT1pO2EuYltkXT1pKzF9fWVsc2UgaWYoaTxlKXtnKz0yfWVsc2V7dGhyb3cgdmJiKG5ldyBoeignVG9rZW4jaW50ZXJzZWN0UmFuZ2VzKCk6IEludGVybmFsIEVycm9yOiBbJythLmJbZF0rJywnK2EuYltkKzFdKyddICYgWycrai5iW2ddKycsJytqLmJbZysxXSsnXScpKX19d2hpbGUoZDxhLmIubGVuZ3RoKXtjW2srK109YS5iW2QrK107Y1trKytdPWEuYltkKytdfWEuYj1LQyhXRCxvamUsMjUsaywxNSwxKTskZmIoYywwLGEuYiwwLGspfVxuZnVuY3Rpb24gUFViKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2I9bmV3IFJrYjthLmc9bmV3IFJrYjthLmQ9bmV3IFJrYjtmb3IoZz1uZXcgbmliKChuZXcgZWliKGEuZi5iKSkuYSk7Zy5iOyl7Zj1saWIoZyk7RWtiKGIsQkQoQkQoZi5kZCgpLDQ2KS5iLDgxKSk7ZmFkKEJEKGYuY2QoKSw1OTQpLmdmKCkpP0VrYihhLmQsQkQoZi5kZCgpLDQ2KSk6RWtiKGEuZyxCRChmLmRkKCksNDYpKX1NVWIoYSxhLmQpO01VYihhLGEuZyk7YS5jPW5ldyBDVmIoYS5iKTtBVmIoYS5jLCh4VWIoKSx3VWIpKTtSVWIoYSxhLmQpO1JVYihhLGEuZyk7R2tiKGIsYS5jLmEuYik7YS5lPW5ldyBmN2MoUGplLFBqZSk7YS5hPW5ldyBmN2MoUWplLFFqZSk7Zm9yKGQ9bmV3IG9sYihiKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksODEpO2EuZS5hPSR3bmQuTWF0aC5taW4oYS5lLmEsYy5nLmMpO2EuZS5iPSR3bmQuTWF0aC5taW4oYS5lLmIsYy5nLmQpO2EuYS5hPSR3bmQuTWF0aC5tYXgoYS5hLmEsYy5nLmMrYy5nLmIpO2EuYS5iPSR3bmQuTWF0aC5tYXgoYS5hLmIsYy5nLmQrYy5nLmEpfXpWYihhLmMsbmV3IFlVYik7aD0wO2Rve2U9T1ViKGEpOysraH13aGlsZSgoaDwyfHxlPlFpZSkmJmg8MTApO3pWYihhLmMsbmV3IF9VYik7T1ViKGEpO3ZWYihhLmMpO3lVYihhLmYpfVxuZnVuY3Rpb24gc1piKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2lmKCFDY2IoREQodk5iKGMsKE55YygpLGZ4YykpKSkpe3JldHVybn1mb3IoaD1uZXcgb2xiKGMuaik7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDExKTttPWtfYihnLmcpO2ZvcihqPW0saz0wLGw9ai5sZW5ndGg7azxsOysrayl7aT1qW2tdO2Y9aS5kLmk9PWM7ZT1mJiZDY2IoREQodk5iKGksZ3hjKSkpO2lmKGUpe289aS5jO249QkQoT2hiKGEuYixvKSwxMCk7aWYoIW4pe249WiRiKG8sKGRjZCgpLGJjZCksby5qLC0xLG51bGwsbnVsbCxvLm8sQkQodk5iKGIsTHdjKSwxMDMpLGIpO3lOYihuLCh3dGMoKSwkc2MpLG8pO1JoYihhLmIsbyxuKTtFa2IoYi5hLG4pfXE9aS5kO3A9QkQoT2hiKGEuYixxKSwxMCk7aWYoIXApe3A9WiRiKHEsKGRjZCgpLGJjZCkscS5qLDEsbnVsbCxudWxsLHEubyxCRCh2TmIoYixMd2MpLDEwMyksYik7eU5iKHAsKHd0YygpLCRzYykscSk7UmhiKGEuYixxLHApO0VrYihiLmEscCl9ZD1rWmIoaSk7UVpiKGQsQkQoSWtiKG4uaiwwKSwxMSkpO1JaYihkLEJEKElrYihwLmosMCksMTEpKTtSYyhhLmEsaSxuZXcgQlpiKGQsYiwoS0FjKCksSUFjKSkpO0JEKHZOYihiLCh3dGMoKSxLc2MpKSwyMSkuRmMoKE9yYygpLEhyYykpfX19fVxuZnVuY3Rpb24gVzliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG87T2RkKGMsJ0xhYmVsIGR1bW15IHN3aXRjaGluZycsMSk7ZD1CRCh2TmIoYiwoTnljKCksT3djKSksMjI3KTtKOWIoYik7ZT1UOWIoYixkKTthLmE9S0MoVUQsVmplLDI1LGIuYi5jLmxlbmd0aCwxNSwxKTtmb3IoaD0oQXBjKCksT0MoR0MoRVcsMSksS2llLDIyNywwLFt3cGMseXBjLHZwYyx4cGMsenBjLHVwY10pKSxrPTAsbj1oLmxlbmd0aDtrPG47KytrKXtmPWhba107aWYoKGY9PXpwY3x8Zj09dXBjfHxmPT14cGMpJiYhQkQodXFiKGUuYSxmKT9lLmJbZi5nXTpudWxsLDE1KS5kYygpKXtNOWIoYSxiKTticmVha319Zm9yKGk9T0MoR0MoRVcsMSksS2llLDIyNywwLFt3cGMseXBjLHZwYyx4cGMsenBjLHVwY10pLGw9MCxvPWkubGVuZ3RoO2w8bzsrK2wpe2Y9aVtsXTtmPT16cGN8fGY9PXVwY3x8Zj09eHBjfHxYOWIoYSxCRCh1cWIoZS5hLGYpP2UuYltmLmddOm51bGwsMTUpKX1mb3IoZz1PQyhHQyhFVywxKSxLaWUsMjI3LDAsW3dwYyx5cGMsdnBjLHhwYyx6cGMsdXBjXSksaj0wLG09Zy5sZW5ndGg7ajxtOysrail7Zj1nW2pdOyhmPT16cGN8fGY9PXVwY3x8Zj09eHBjKSYmWDliKGEsQkQodXFiKGUuYSxmKT9lLmJbZi5nXTpudWxsLDE1KSl9YS5hPW51bGw7UWRkKGMpfVxuZnVuY3Rpb24gQUZjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbTtzd2l0Y2goYS5rLmcpe2Nhc2UgMTpkPUJEKHZOYihhLCh3dGMoKSwkc2MpKSwxNyk7Yz1CRCh2TmIoZCxfc2MpLDc0KTshYz8oYz1uZXcgczdjKTpDY2IoREQodk5iKGQsbHRjKSkpJiYoYz13N2MoYykpO2o9QkQodk5iKGEsVnNjKSwxMSk7aWYoail7az1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbai5pLm4sai5uLGouYV0pKTtpZihiPD1rLmEpe3JldHVybiBrLmJ9R3NiKGMsayxjLmEsYy5hLmEpfWw9QkQodk5iKGEsV3NjKSwxMSk7aWYobCl7bT1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbbC5pLm4sbC5uLGwuYV0pKTtpZihtLmE8PWIpe3JldHVybiBtLmJ9R3NiKGMsbSxjLmMuYixjLmMpfWlmKGMuYj49Mil7aT1Kc2IoYywwKTtnPUJEKFhzYihpKSw4KTtoPUJEKFhzYihpKSw4KTt3aGlsZShoLmE8YiYmaS5iIT1pLmQuYyl7Zz1oO2g9QkQoWHNiKGkpLDgpfXJldHVybiBnLmIrKGItZy5hKS8oaC5hLWcuYSkqKGguYi1nLmIpfWJyZWFrO2Nhc2UgMzpmPUJEKHZOYihCRChJa2IoYS5qLDApLDExKSwod3RjKCksJHNjKSksMTEpO2U9Zi5pO3N3aXRjaChmLmouZyl7Y2FzZSAxOnJldHVybiBlLm4uYjtjYXNlIDM6cmV0dXJuIGUubi5iK2Uuby5iO319cmV0dXJuIFRfYihhKS5ifVxuZnVuY3Rpb24gV2djKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGw7Zm9yKGc9bmV3IG9sYihhLmQuYik7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDI5KTtmb3IoaT1uZXcgb2xiKGYuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtpZihDY2IoREQodk5iKGgsKE55YygpLHB3YykpKSkpe2lmKCFRcShPX2IoaCkpKXtkPUJEKE9xKE9fYihoKSksMTcpO2s9ZC5jLmk7az09aCYmKGs9ZC5kLmkpO2w9bmV3IHZnZChrLGM3YyhSNmMoaC5uKSxrLm4pKTtSaGIoYS5iLGgsbCk7Y29udGludWV9fWU9bmV3IEo2YyhoLm4uYS1oLmQuYixoLm4uYi1oLmQuZCxoLm8uYStoLmQuYitoLmQuYyxoLm8uYitoLmQuZCtoLmQuYSk7Yj12RGIoeURiKHdEYih4RGIobmV3IHpEYixoKSxlKSxGZ2MpLGEuYSk7cERiKHFEYihyRGIobmV3IHNEYixPQyhHQyhQTSwxKSxVaGUsNTcsMCxbYl0pKSxiKSxhLmEpO2o9bmV3IGxFYjtSaGIoYS5lLGIsaik7Yz1zcihuZXcgU3IodXIoUl9iKGgpLmEuS2MoKSxuZXcgU3EpKSktc3IobmV3IFNyKHVyKFVfYihoKS5hLktjKCksbmV3IFNxKSkpO2M8MD9qRWIoaix0cnVlLChlYWQoKSxhYWQpKTpjPjAmJmpFYihqLHRydWUsKGVhZCgpLGJhZCkpO2guaz09KGowYigpLGUwYikmJmtFYihqKTtSaGIoYS5mLGgsYil9fX1cbmZ1bmN0aW9uIEJiYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07T2RkKGMsJ05vZGUgcHJvbW90aW9uIGhldXJpc3RpYycsMSk7YS5nPWI7QWJjKGEpO2EucT1CRCh2TmIoYiwoTnljKCkscnhjKSksMjYwKTtrPUJEKHZOYihhLmcscXhjKSwxOSkuYTtmPW5ldyBKYmM7c3dpdGNoKGEucS5nKXtjYXNlIDI6Y2FzZSAxOkRiYyhhLGYpO2JyZWFrO2Nhc2UgMzphLnE9KGtBYygpLGpBYyk7RGJjKGEsZik7aT0wO2ZvcihoPW5ldyBvbGIoYS5hKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTkpO2k9JHduZC5NYXRoLm1heChpLGcuYSl9aWYoaT5hLmope2EucT1kQWM7RGJjKGEsZil9YnJlYWs7Y2FzZSA0OmEucT0oa0FjKCksakFjKTtEYmMoYSxmKTtqPTA7Zm9yKGU9bmV3IG9sYihhLmIpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUVEKG1sYihlKSk7aj0kd25kLk1hdGgubWF4KGosKHVDYihkKSxkKSl9aWYoaj5hLmspe2EucT1nQWM7RGJjKGEsZil9YnJlYWs7Y2FzZSA2Om09UUQoJHduZC5NYXRoLmNlaWwoYS5mLmxlbmd0aCprLzEwMCkpO0RiYyhhLG5ldyBNYmMobSkpO2JyZWFrO2Nhc2UgNTpsPVFEKCR3bmQuTWF0aC5jZWlsKGEuZCprLzEwMCkpO0RiYyhhLG5ldyBQYmMobCkpO2JyZWFrO2RlZmF1bHQ6RGJjKGEsZik7fUViYyhhLGIpO1FkZChjKX1cbmZ1bmN0aW9uIGZGYyhhLGIsYyl7dmFyIGQsZSxmLGc7dGhpcy5qPWE7dGhpcy5lPVdaYihhKTt0aGlzLm89dGhpcy5qLmU7dGhpcy5pPSEhdGhpcy5vO3RoaXMucD10aGlzLmk/QkQoSWtiKGMsUV9iKHRoaXMubykucCksMjE0KTpudWxsO2U9QkQodk5iKGEsKHd0YygpLEtzYykpLDIxKTt0aGlzLmc9ZS5IYygoT3JjKCksSHJjKSk7dGhpcy5iPW5ldyBSa2I7dGhpcy5kPW5ldyBySGModGhpcy5lKTtnPUJEKHZOYih0aGlzLmosanRjKSwyMzApO3RoaXMucT13RmMoYixnLHRoaXMuZSk7dGhpcy5rPW5ldyBCR2ModGhpcyk7Zj1PdShPQyhHQyhxWSwxKSxVaGUsMjI1LDAsW3RoaXMsdGhpcy5kLHRoaXMuayx0aGlzLnFdKSk7aWYoYj09KHJHYygpLG9HYykmJiFDY2IoREQodk5iKGEsKE55YygpLEF3YykpKSkpe2Q9bmV3IFNFYyh0aGlzLmUpO2YuY1tmLmMubGVuZ3RoXT1kO3RoaXMuYz1uZXcgdUVjKGQsZyxCRCh0aGlzLnEsNDAyKSl9ZWxzZSBpZihiPT1vR2MmJkNjYihERCh2TmIoYSwoTnljKCksQXdjKSkpKSl7ZD1uZXcgU0VjKHRoaXMuZSk7Zi5jW2YuYy5sZW5ndGhdPWQ7dGhpcy5jPW5ldyBYR2MoZCxnLEJEKHRoaXMucSw0MDIpKX1lbHNle3RoaXMuYz1uZXcgT2ljKGIsdGhpcyl9RWtiKGYsdGhpcy5jKTskSWMoZix0aGlzLmUpO3RoaXMucz1BR2ModGhpcy5rKX1cbmZ1bmN0aW9uIHhVYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1O2w9QkQocHIoKGc9SnNiKChuZXcgWlJjKGIpKS5hLmQsMCksbmV3IGFTYyhnKSkpLDg2KTtvPWw/QkQodk5iKGwsKG1UYygpLF9TYykpLDg2KTpudWxsO2U9MTt3aGlsZSghIWwmJiEhbyl7aT0wO3U9MDtjPWw7ZD1vO2ZvcihoPTA7aDxlO2grKyl7Yz1WUmMoYyk7ZD1WUmMoZCk7dSs9RWRiKEVEKHZOYihjLChtVGMoKSxjVGMpKSkpO2krPUVkYihFRCh2TmIoZCxjVGMpKSl9dD1FZGIoRUQodk5iKG8sKG1UYygpLGZUYykpKSk7cz1FZGIoRUQodk5iKGwsZlRjKSkpO209elVjKGwsbyk7bj10K2krYS5hK20tcy11O2lmKDA8bil7aj1iO2s9MDt3aGlsZSghIWomJmohPWQpeysraztqPUJEKHZOYihqLGFUYyksODYpfWlmKGope3I9bi9rO2o9Yjt3aGlsZShqIT1kKXtxPUVkYihFRCh2TmIoaixmVGMpKSkrbjt5TmIoaixmVGMscSk7cD1FZGIoRUQodk5iKGosY1RjKSkpK247eU5iKGosY1RjLHApO24tPXI7aj1CRCh2TmIoaixhVGMpLDg2KX19ZWxzZXtyZXR1cm59fSsrZTtsLmQuYj09MD8obD1KUmMobmV3IFpSYyhiKSxlKSk6KGw9QkQocHIoKGY9SnNiKChuZXcgWlJjKGwpKS5hLmQsMCksbmV3IGFTYyhmKSkpLDg2KSk7bz1sP0JEKHZOYihsLF9TYyksODYpOm51bGx9fVxuZnVuY3Rpb24gQ2JjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7aT10cnVlO2U9MDtqPWEuZltiLnBdO2s9Yi5vLmIrYS5uO2M9YS5jW2IucF1bMl07TmtiKGEuYSxqLG1lYihCRChJa2IoYS5hLGopLDE5KS5hLTErYykpO05rYihhLmIsaixFZGIoRUQoSWtiKGEuYixqKSkpLWsrYyphLmUpOysrajtpZihqPj1hLmkpeysrYS5pO0VrYihhLmEsbWViKDEpKTtFa2IoYS5iLGspfWVsc2V7ZD1hLmNbYi5wXVsxXTtOa2IoYS5hLGosbWViKEJEKElrYihhLmEsaiksMTkpLmErMS1kKSk7TmtiKGEuYixqLEVkYihFRChJa2IoYS5iLGopKSkray1kKmEuZSl9KGEucT09KGtBYygpLGRBYykmJihCRChJa2IoYS5hLGopLDE5KS5hPmEuanx8QkQoSWtiKGEuYSxqLTEpLDE5KS5hPmEuail8fGEucT09Z0FjJiYoRWRiKEVEKElrYihhLmIsaikpKT5hLmt8fEVkYihFRChJa2IoYS5iLGotMSkpKT5hLmspKSYmKGk9ZmFsc2UpO2ZvcihnPW5ldyBTcih1cihSX2IoYikuYS5LYygpLG5ldyBTcSkpO1FyKGcpOyl7Zj1CRChScihnKSwxNyk7aD1mLmMuaTtpZihhLmZbaC5wXT09ail7bD1DYmMoYSxoKTtlPWUrQkQobC5hLDE5KS5hO2k9aSYmQ2NiKEREKGwuYikpfX1hLmZbYi5wXT1qO2U9ZSthLmNbYi5wXVswXTtyZXR1cm4gbmV3IHZnZChtZWIoZSksKEJjYigpLGk/dHJ1ZTpmYWxzZSkpfVxuZnVuY3Rpb24gc1BjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHI7bD1uZXcgTHFiO2c9bmV3IFJrYjtxUGMoYSxjLGEuZC5mZygpLGcsbCk7cVBjKGEsZCxhLmQuZ2coKSxnLGwpO2EuYj0wLjIqKHA9clBjKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihnLDE2KSksbmV3IHhQYykpLHE9clBjKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihnLDE2KSksbmV3IHpQYykpLCR3bmQuTWF0aC5taW4ocCxxKSk7Zj0wO2ZvcihoPTA7aDxnLmMubGVuZ3RoLTE7aCsrKXtpPSh0Q2IoaCxnLmMubGVuZ3RoKSxCRChnLmNbaF0sMTEyKSk7Zm9yKG89aCsxO288Zy5jLmxlbmd0aDtvKyspe2YrPXBQYyhhLGksKHRDYihvLGcuYy5sZW5ndGgpLEJEKGcuY1tvXSwxMTIpKSl9fW09QkQodk5iKGIsKHd0YygpLGp0YykpLDIzMCk7Zj49MiYmKHI9V05jKGcsdHJ1ZSxtKSwhYS5lJiYoYS5lPW5ldyBaT2MoYSkpLFZPYyhhLmUscixnLGEuYiksdW5kZWZpbmVkKTt1UGMoZyxtKTt3UGMoZyk7bj0tMTtmb3Ioaz1uZXcgb2xiKGcpO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMTIpO2lmKCR3bmQuTWF0aC5hYnMoai5zLWouYyk8cW1lKXtjb250aW51ZX1uPSR3bmQuTWF0aC5tYXgobixqLm8pO2EuZC5kZyhqLGUsYS5jKX1hLmQuYS5hLiRiKCk7cmV0dXJuIG4rMX1cbmZ1bmN0aW9uIGFVYihhLGIpe3ZhciBjLGQsZSxmLGc7Yz1FZGIoRUQodk5iKGIsKE55YygpLGx5YykpKSk7YzwyJiZ5TmIoYixseWMsMik7ZD1CRCh2TmIoYixMd2MpLDEwMyk7ZD09KGVhZCgpLGNhZCkmJnlOYihiLEx3YyxhX2IoYikpO2U9QkQodk5iKGIsZnljKSwxOSk7ZS5hPT0wP3lOYihiLCh3dGMoKSxqdGMpLG5ldyBHdWIpOnlOYihiLCh3dGMoKSxqdGMpLG5ldyBIdWIoZS5hKSk7Zj1ERCh2TmIoYixBeGMpKTtmPT1udWxsJiZ5TmIoYixBeGMsKEJjYigpLFBEKHZOYihiLFN3YykpPT09UEQoKEFhZCgpLHdhZCkpP3RydWU6ZmFsc2UpKTtNQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYi5hLDE2KSksbmV3IGRVYihhKSk7TUFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmIsMTYpKSxuZXcgZlViKSxuZXcgaFViKGEpKTtnPW5ldyBvQmMoYik7eU5iKGIsKHd0YygpLG90YyksZyk7SDJjKGEuYSk7SzJjKGEuYSwocVViKCksbFViKSxCRCh2TmIoYixKd2MpLDI0NikpO0syYyhhLmEsbVViLEJEKHZOYihiLHN4YyksMjQ2KSk7SzJjKGEuYSxuVWIsQkQodk5iKGIsSXdjKSwyNDYpKTtLMmMoYS5hLG9VYixCRCh2TmIoYixFeGMpLDI0NikpO0syYyhhLmEscFViLGtOYyhCRCh2TmIoYixTd2MpLDIxOCkpKTtFMmMoYS5hLF9UYihiKSk7eU5iKGIsaXRjLEYyYyhhLmEsYikpfVxuZnVuY3Rpb24gZmpjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3O2lmKG09YS5jW2JdLG49YS5jW2NdLChvPUJEKHZOYihtLCh3dGMoKSxRc2MpKSwxNSksISFvJiZvLmdjKCkhPTAmJm8uSGMobikpfHwocD1tLmshPShqMGIoKSxnMGIpJiZuLmshPWcwYixxPUJEKHZOYihtLFBzYyksMTApLHI9QkQodk5iKG4sUHNjKSwxMCkscz1xIT1yLHQ9ISFxJiZxIT1tfHwhIXImJnIhPW4sdT1namMobSwoVWNkKCksQWNkKSksdj1namMobixSY2QpLHQ9dHwoZ2pjKG0sUmNkKXx8Z2pjKG4sQWNkKSksdz10JiZzfHx1fHx2LHAmJncpfHxtLms9PShqMGIoKSxpMGIpJiZuLms9PWgwYnx8bi5rPT0oajBiKCksaTBiKSYmbS5rPT1oMGIpe3JldHVybiBmYWxzZX1rPWEuY1tiXTtmPWEuY1tjXTtlPUxIYyhhLmUsayxmLChVY2QoKSxUY2QpKTtpPUxIYyhhLmksayxmLHpjZCk7WWljKGEuZixrLGYpO2o9SGljKGEuYixrLGYpK0JEKGUuYSwxOSkuYStCRChpLmEsMTkpLmErYS5mLmQ7aD1IaWMoYS5iLGYsaykrQkQoZS5iLDE5KS5hK0JEKGkuYiwxOSkuYSthLmYuYjtpZihhLmEpe2w9QkQodk5iKGssJHNjKSwxMSk7Zz1CRCh2TmIoZiwkc2MpLDExKTtkPUpIYyhhLmcsbCxnKTtqKz1CRChkLmEsMTkpLmE7aCs9QkQoZC5iLDE5KS5hfXJldHVybiBqPmh9XG5mdW5jdGlvbiBrNmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2M9QkQodk5iKGEsKE55YygpLFZ4YykpLDk4KTtnPWEuZjtmPWEuZDtoPWcuYStmLmIrZi5jO2k9MC1mLmQtYS5jLmI7az1nLmIrZi5kK2YuYS1hLmMuYjtqPW5ldyBSa2I7bD1uZXcgUmtiO2ZvcihlPW5ldyBvbGIoYik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEwKTtzd2l0Y2goYy5nKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzphNmIoZCk7YnJlYWs7Y2FzZSA0Om09QkQodk5iKGQsVHhjKSw4KTtuPSFtPzA6bS5hO2Qubi5hPWgqRWRiKEVEKHZOYihkLCh3dGMoKSxodGMpKSkpLW47TV9iKGQsdHJ1ZSxmYWxzZSk7YnJlYWs7Y2FzZSA1Om89QkQodk5iKGQsVHhjKSw4KTtwPSFvPzA6by5hO2Qubi5hPUVkYihFRCh2TmIoZCwod3RjKCksaHRjKSkpKS1wO01fYihkLHRydWUsZmFsc2UpO2cuYT0kd25kLk1hdGgubWF4KGcuYSxkLm4uYStkLm8uYS8yKTt9c3dpdGNoKEJEKHZOYihkLCh3dGMoKSxIc2MpKSw2MSkuZyl7Y2FzZSAxOmQubi5iPWk7ai5jW2ouYy5sZW5ndGhdPWQ7YnJlYWs7Y2FzZSAzOmQubi5iPWs7bC5jW2wuYy5sZW5ndGhdPWQ7fX1zd2l0Y2goYy5nKXtjYXNlIDE6Y2FzZSAyOmM2YihqLGEpO2M2YihsLGEpO2JyZWFrO2Nhc2UgMzppNmIoaixhKTtpNmIobCxhKTt9fVxuZnVuY3Rpb24gVkhjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGw7az1uZXcgUmtiO2w9bmV3IGprYjtmPW51bGw7ZT0wO2ZvcihkPTA7ZDxiLmxlbmd0aDsrK2Qpe2M9YltkXTtYSGMoZixjKSYmKGU9UUhjKGEsbCxrLEVIYyxlKSk7d05iKGMsKHd0YygpLFBzYykpJiYoZj1CRCh2TmIoYyxQc2MpLDEwKSk7c3dpdGNoKGMuay5nKXtjYXNlIDA6Zm9yKGk9VnEoTnEoVl9iKGMsKFVjZCgpLEFjZCkpLG5ldyBHSWMpKTt4YyhpKTspe2c9QkQoeWMoaSksMTEpO2EuZFtnLnBdPWUrKztrLmNbay5jLmxlbmd0aF09Z31lPVFIYyhhLGwsayxFSGMsZSk7Zm9yKGo9VnEoTnEoVl9iKGMsUmNkKSxuZXcgR0ljKSk7eGMoaik7KXtnPUJEKHljKGopLDExKTthLmRbZy5wXT1lKys7ay5jW2suYy5sZW5ndGhdPWd9YnJlYWs7Y2FzZSAzOmlmKCFWX2IoYyxESGMpLmRjKCkpe2c9QkQoVl9iKGMsREhjKS5YYigwKSwxMSk7YS5kW2cucF09ZSsrO2suY1trLmMubGVuZ3RoXT1nfVZfYihjLEVIYykuZGMoKXx8V2piKGwsYyk7YnJlYWs7Y2FzZSAxOmZvcihoPVZfYihjLChVY2QoKSxUY2QpKS5LYygpO2guT2IoKTspe2c9QkQoaC5QYigpLDExKTthLmRbZy5wXT1lKys7ay5jW2suYy5sZW5ndGhdPWd9Vl9iKGMsemNkKS5KYyhuZXcgRUljKGwsYykpO319UUhjKGEsbCxrLEVIYyxlKTtyZXR1cm4ga31cbmZ1bmN0aW9uIHkkYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHM7aj1QamU7az1QamU7aD1RamU7aT1RamU7Zm9yKG09bmV3IG9sYihiLmkpO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSw2NSk7ZT1CRChCRChPaGIoYS5nLGwuYSksNDYpLmIsMzMpO2JsZChlLGwuYi5jLGwuYi5kKTtqPSR3bmQuTWF0aC5taW4oaixlLmkpO2s9JHduZC5NYXRoLm1pbihrLGUuaik7aD0kd25kLk1hdGgubWF4KGgsZS5pK2UuZyk7aT0kd25kLk1hdGgubWF4KGksZS5qK2UuZil9bj1CRChoa2QoYS5jLChkMGMoKSxXX2MpKSwxMTYpO0FmZChhLmMsaC1qKyhuLmIrbi5jKSxpLWsrKG4uZCtuLmEpLHRydWUsdHJ1ZSk7RWZkKGEuYywtaituLmIsLWsrbi5kKTtmb3IoZD1uZXcgRnlkKFdvZChhLmMpKTtkLmUhPWQuaS5nYygpOyl7Yz1CRChEeWQoZCksNzkpO2c9aXRkKGMsdHJ1ZSx0cnVlKTtvPWp0ZChjKTtxPWx0ZChjKTtwPW5ldyBmN2Moby5pK28uZy8yLG8uaitvLmYvMik7Zj1uZXcgZjdjKHEuaStxLmcvMixxLmorcS5mLzIpO3I9YzdjKG5ldyBmN2MoZi5hLGYuYikscCk7bDZjKHIsby5nLG8uZik7UDZjKHAscik7cz1jN2MobmV3IGY3YyhwLmEscC5iKSxmKTtsNmMocyxxLmcscS5mKTtQNmMoZixzKTtubWQoZyxwLmEscC5iKTtnbWQoZyxmLmEsZi5iKX19XG5mdW5jdGlvbiBFWWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbzthLmM9YS5kO289REQodk5iKGIsKE55YygpLGd5YykpKTtuPW89PW51bGx8fCh1Q2Iobyksbyk7Zj1CRCh2TmIoYiwod3RjKCksS3NjKSksMjEpLkhjKChPcmMoKSxIcmMpKTtlPUJEKHZOYihiLFZ4YyksOTgpO2M9IShlPT0oZGNkKCksWmJkKXx8ZT09X2JkfHxlPT0kYmQpO2lmKG4mJihjfHwhZikpe2ZvcihsPW5ldyBvbGIoYi5hKTtsLmE8bC5jLmMubGVuZ3RoOyl7aj1CRChtbGIobCksMTApO2oucD0wfW09bmV3IFJrYjtmb3Ioaz1uZXcgb2xiKGIuYSk7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDEwKTtkPURZYihhLGosbnVsbCk7aWYoZCl7aT1uZXcgWFpiO3ROYihpLGIpO3lOYihpLEVzYyxCRChkLmIsMjEpKTt1X2IoaS5kLGIuZCk7eU5iKGksSHhjLG51bGwpO2ZvcihoPUJEKGQuYSwxNSkuS2MoKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwxMCk7RWtiKGkuYSxnKTtnLmE9aX1tLkZjKGkpfX1mJiYoUEQodk5iKGIsdHdjKSk9PT1QRCgoUlhiKCksT1hiKSk/KGEuYz1hLmIpOihhLmM9YS5hKSl9ZWxzZXttPW5ldyBhbWIoT0MoR0MoS1EsMSksY25lLDM3LDAsW2JdKSl9UEQodk5iKGIsdHdjKSkhPT1QRCgoUlhiKCksUVhiKSkmJihtbWIoKSxtLmFkKG5ldyBIWWIpKTtyZXR1cm4gbX1cbmZ1bmN0aW9uIEtUYyhhKXtyNGMoYSxuZXcgRTNjKFEzYyhMM2MoUDNjKE0zYyhPM2MoTjNjKG5ldyBSM2MsYXJlKSwnRUxLIE1yLiBUcmVlJyksXCJUcmVlLWJhc2VkIGFsZ29yaXRobSBwcm92aWRlZCBieSB0aGUgRWNsaXBzZSBMYXlvdXQgS2VybmVsLiBDb21wdXRlcyBhIHNwYW5uaW5nIHRyZWUgb2YgdGhlIGlucHV0IGdyYXBoIGFuZCBhcnJhbmdlcyBhbGwgbm9kZXMgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHRpbmcgcGFyZW50LWNoaWxkcmVuIGhpZXJhcmNoeS4gSSBwaXR5IHRoZSBmb29sIHdobyBkb2Vzbid0IHVzZSBNci4gVHJlZSBMYXlvdXQuXCIpLG5ldyBOVGMpLGJyZSkscHFiKChDc2QoKSx3c2QpKSkpKTtwNGMoYSxhcmUsYW1lLENUYyk7cDRjKGEsYXJlLHdtZSwyMCk7cDRjKGEsYXJlLF9sZSx0bWUpO3A0YyhhLGFyZSx2bWUsbWViKDEpKTtwNGMoYSxhcmUsem1lLChCY2IoKSx0cnVlKSk7cDRjKGEsYXJlLFpwZSxLc2QodlRjKSk7cDRjKGEsYXJlLEZtZSxLc2QoeFRjKSk7cDRjKGEsYXJlLFRtZSxLc2QoeVRjKSk7cDRjKGEsYXJlLEVtZSxLc2QoelRjKSk7cDRjKGEsYXJlLEdtZSxLc2Qod1RjKSk7cDRjKGEsYXJlLERtZSxLc2QoQVRjKSk7cDRjKGEsYXJlLEhtZSxLc2QoRFRjKSk7cDRjKGEsYXJlLFpxZSxLc2QoSVRjKSk7cDRjKGEsYXJlLCRxZSxLc2QoRlRjKSl9XG5mdW5jdGlvbiB6b2QoYSl7aWYoYS5xKXJldHVybjthLnE9dHJ1ZTthLnA9TG5kKGEsMCk7YS5hPUxuZChhLDEpO1FuZChhLmEsMCk7YS5mPUxuZChhLDIpO1FuZChhLmYsMSk7S25kKGEuZiwyKTthLm49TG5kKGEsMyk7S25kKGEubiwzKTtLbmQoYS5uLDQpO0tuZChhLm4sNSk7S25kKGEubiw2KTthLmc9TG5kKGEsNCk7UW5kKGEuZyw3KTtLbmQoYS5nLDgpO2EuYz1MbmQoYSw1KTtRbmQoYS5jLDcpO1FuZChhLmMsOCk7YS5pPUxuZChhLDYpO1FuZChhLmksOSk7UW5kKGEuaSwxMCk7UW5kKGEuaSwxMSk7UW5kKGEuaSwxMik7S25kKGEuaSwxMyk7YS5qPUxuZChhLDcpO1FuZChhLmosOSk7YS5kPUxuZChhLDgpO1FuZChhLmQsMyk7UW5kKGEuZCw0KTtRbmQoYS5kLDUpO1FuZChhLmQsNik7S25kKGEuZCw3KTtLbmQoYS5kLDgpO0tuZChhLmQsOSk7S25kKGEuZCwxMCk7YS5iPUxuZChhLDkpO0tuZChhLmIsMCk7S25kKGEuYiwxKTthLmU9TG5kKGEsMTApO0tuZChhLmUsMSk7S25kKGEuZSwyKTtLbmQoYS5lLDMpO0tuZChhLmUsNCk7UW5kKGEuZSw1KTtRbmQoYS5lLDYpO1FuZChhLmUsNyk7UW5kKGEuZSw4KTtRbmQoYS5lLDkpO1FuZChhLmUsMTApO0tuZChhLmUsMTEpO2Euaz1MbmQoYSwxMSk7S25kKGEuaywwKTtLbmQoYS5rLDEpO2Eubz1NbmQoYSwxMik7YS5zPU1uZChhLDEzKX1cbmZ1bmN0aW9uIEFVYihhLGIpe2IuZGMoKSYmSFZiKGEuaix0cnVlLHRydWUsdHJ1ZSx0cnVlKTtwYihiLChVY2QoKSxHY2QpKSYmSFZiKGEuaix0cnVlLHRydWUsdHJ1ZSxmYWxzZSk7cGIoYixCY2QpJiZIVmIoYS5qLGZhbHNlLHRydWUsdHJ1ZSx0cnVlKTtwYihiLE9jZCkmJkhWYihhLmosdHJ1ZSx0cnVlLGZhbHNlLHRydWUpO3BiKGIsUWNkKSYmSFZiKGEuaix0cnVlLGZhbHNlLHRydWUsdHJ1ZSk7cGIoYixIY2QpJiZIVmIoYS5qLGZhbHNlLHRydWUsdHJ1ZSxmYWxzZSk7cGIoYixDY2QpJiZIVmIoYS5qLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSk7cGIoYixQY2QpJiZIVmIoYS5qLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSk7cGIoYixOY2QpJiZIVmIoYS5qLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7cGIoYixMY2QpJiZIVmIoYS5qLHRydWUsdHJ1ZSx0cnVlLHRydWUpO3BiKGIsRWNkKSYmSFZiKGEuaix0cnVlLHRydWUsdHJ1ZSx0cnVlKTtwYihiLExjZCkmJkhWYihhLmosdHJ1ZSx0cnVlLHRydWUsdHJ1ZSk7cGIoYixEY2QpJiZIVmIoYS5qLHRydWUsdHJ1ZSx0cnVlLHRydWUpO3BiKGIsTWNkKSYmSFZiKGEuaix0cnVlLHRydWUsdHJ1ZSx0cnVlKTtwYihiLEtjZCkmJkhWYihhLmosdHJ1ZSx0cnVlLHRydWUsdHJ1ZSk7cGIoYixKY2QpJiZIVmIoYS5qLHRydWUsdHJ1ZSx0cnVlLHRydWUpfVxuZnVuY3Rpb24gclpiKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2Y9bmV3IFJrYjtmb3Ioaj1uZXcgb2xiKGQpO2ouYTxqLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihqKSw0NDEpO2c9bnVsbDtpZihoLmY9PShLQWMoKSxJQWMpKXtmb3Iobz1uZXcgb2xiKGguZSk7by5hPG8uYy5jLmxlbmd0aDspe249QkQobWxiKG8pLDE3KTtxPW4uZC5pO2lmKFFfYihxKT09Yil7aVpiKGEsYixoLG4saC5iLG4uZCl9ZWxzZSBpZighY3x8Zl9iKHEsYykpe2paYihhLGIsaCxkLG4pfWVsc2V7bT1vWmIoYSxiLGMsbixoLmIsSUFjLGcpO20hPWcmJihmLmNbZi5jLmxlbmd0aF09bSx0cnVlKTttLmMmJihnPW0pfX19ZWxzZXtmb3IobD1uZXcgb2xiKGguZSk7bC5hPGwuYy5jLmxlbmd0aDspe2s9QkQobWxiKGwpLDE3KTtwPWsuYy5pO2lmKFFfYihwKT09Yil7aVpiKGEsYixoLGssay5jLGguYil9ZWxzZSBpZighY3x8Zl9iKHAsYykpe2NvbnRpbnVlfWVsc2V7bT1vWmIoYSxiLGMsayxoLmIsSEFjLGcpO20hPWcmJihmLmNbZi5jLmxlbmd0aF09bSx0cnVlKTttLmMmJihnPW0pfX19fWZvcihpPW5ldyBvbGIoZik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDQ0MSk7SmtiKGIuYSxoLmEsMCkhPS0xfHxFa2IoYi5hLGguYSk7aC5jJiYoZS5jW2UuYy5sZW5ndGhdPWgsdHJ1ZSl9fVxuZnVuY3Rpb24gU0pjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbTtqPW5ldyBSa2I7Zm9yKGk9bmV3IG9sYihiLmEpO2kuYTxpLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihpKSwxMCk7Zm9yKG09Vl9iKGcsKFVjZCgpLHpjZCkpLktjKCk7bS5PYigpOyl7bD1CRChtLlBiKCksMTEpO2ZvcihlPW5ldyBvbGIobC5nKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTcpO2lmKCFPWmIoZCkmJmQuYy5pLmM9PWQuZC5pLmN8fE9aYihkKXx8ZC5kLmkuYyE9Yyl7Y29udGludWV9ai5jW2ouYy5sZW5ndGhdPWR9fX1mb3IoaD1TdShjLmEpLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTApO2ZvcihtPVZfYihnLChVY2QoKSxUY2QpKS5LYygpO20uT2IoKTspe2w9QkQobS5QYigpLDExKTtmb3IoZT1uZXcgb2xiKGwuZSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE3KTtpZighT1piKGQpJiZkLmMuaS5jPT1kLmQuaS5jfHxPWmIoZCl8fGQuYy5pLmMhPWIpe2NvbnRpbnVlfWs9bmV3IEJpYihqLGouYy5sZW5ndGgpO2Y9KHNDYihrLmI+MCksQkQoay5hLlhiKGsuYz0tLWsuYiksMTcpKTt3aGlsZShmIT1kJiZrLmI+MCl7YS5hW2YucF09dHJ1ZTthLmFbZC5wXT10cnVlO2Y9KHNDYihrLmI+MCksQkQoay5hLlhiKGsuYz0tLWsuYiksMTcpKX1rLmI+MCYmdWliKGspfX19fVxuZnVuY3Rpb24gVm1kKGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG07aWYoYi5hIT1jLkFqKCkpe3Rocm93IHZiYihuZXcgV2RiKHR0ZStjLm5lKCkrdXRlKSl9ZT1vMWQoKE82ZCgpLE02ZCksYykuJGsoKTtpZihlKXtyZXR1cm4gZS5BaigpLk5oKCkuSWgoZSxkKX1oPW8xZChNNmQsYykuYWwoKTtpZihoKXtpZihkPT1udWxsKXtyZXR1cm4gbnVsbH1pPUJEKGQsMTUpO2lmKGkuZGMoKSl7cmV0dXJuICcnfW09bmV3IEhmYjtmb3IoZz1pLktjKCk7Zy5PYigpOyl7Zj1nLlBiKCk7RWZiKG0saC5BaigpLk5oKCkuSWgoaCxmKSk7bS5hKz0nICd9cmV0dXJuIGxjYihtLG0uYS5sZW5ndGgtMSl9bD1vMWQoTTZkLGMpLmJsKCk7aWYoIWwuZGMoKSl7Zm9yKGs9bC5LYygpO2suT2IoKTspe2o9QkQoay5QYigpLDE0OCk7aWYoai53aihkKSl7dHJ5e209ai5BaigpLk5oKCkuSWgoaixkKTtpZihtIT1udWxsKXtyZXR1cm4gbX19Y2F0Y2goYSl7YT11YmIoYSk7aWYoIUpEKGEsMTAyKSl0aHJvdyB2YmIoYSl9fX10aHJvdyB2YmIobmV3IFdkYihcIkludmFsaWQgdmFsdWU6ICdcIitkK1wiJyBmb3IgZGF0YXR5cGUgOlwiK2MubmUoKSkpfUJEKGMsODM0KS5GaigpO3JldHVybiBkPT1udWxsP251bGw6SkQoZCwxNzIpPycnK0JEKGQsMTcyKS5hOnJiKGQpPT0kSj9DUWQoUG1kWzBdLEJEKGQsMTk5KSk6ZmNiKGQpfVxuZnVuY3Rpb24gelFjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrO2o9bmV3IFBzYjtoPW5ldyBQc2I7Zm9yKGY9bmV3IG9sYihhKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZiksMTI4KTtkLnY9MDtkLm49ZC5pLmMubGVuZ3RoO2QudT1kLnQuYy5sZW5ndGg7ZC5uPT0wJiYoR3NiKGosZCxqLmMuYixqLmMpLHRydWUpO2QudT09MCYmZC5yLmEuZ2MoKT09MCYmKEdzYihoLGQsaC5jLmIsaC5jKSx0cnVlKX1nPS0xO3doaWxlKGouYiE9MCl7ZD1CRChWdChqLDApLDEyOCk7Zm9yKGM9bmV3IG9sYihkLnQpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyNjgpO2s9Yi5iO2sudj0kd25kLk1hdGgubWF4KGsudixkLnYrMSk7Zz0kd25kLk1hdGgubWF4KGcsay52KTstLWsubjtrLm49PTAmJihHc2IoaixrLGouYy5iLGouYyksdHJ1ZSl9fWlmKGc+LTEpe2ZvcihlPUpzYihoLDApO2UuYiE9ZS5kLmM7KXtkPUJEKFhzYihlKSwxMjgpO2Qudj1nfXdoaWxlKGguYiE9MCl7ZD1CRChWdChoLDApLDEyOCk7Zm9yKGM9bmV3IG9sYihkLmkpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwyNjgpO2k9Yi5hO2lmKGkuci5hLmdjKCkhPTApe2NvbnRpbnVlfWkudj0kd25kLk1hdGgubWluKGkudixkLnYtMSk7LS1pLnU7aS51PT0wJiYoR3NiKGgsaSxoLmMuYixoLmMpLHRydWUpfX19fVxuZnVuY3Rpb24gQTZjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGk7aT1QamU7Zz1mYWxzZTtoPXY2YyhhLGM3YyhuZXcgZjdjKGIuYSxiLmIpLGEpLFA2YyhuZXcgZjdjKGMuYSxjLmIpLGUpLGM3YyhuZXcgZjdjKGQuYSxkLmIpLGMpKTtmPSEhaCYmISgkd25kLk1hdGguYWJzKGguYS1hLmEpPD1uc2UmJiR3bmQuTWF0aC5hYnMoaC5iLWEuYik8PW5zZXx8JHduZC5NYXRoLmFicyhoLmEtYi5hKTw9bnNlJiYkd25kLk1hdGguYWJzKGguYi1iLmIpPD1uc2UpO2g9djZjKGEsYzdjKG5ldyBmN2MoYi5hLGIuYiksYSksYyxlKTshIWgmJigoJHduZC5NYXRoLmFicyhoLmEtYS5hKTw9bnNlJiYkd25kLk1hdGguYWJzKGguYi1hLmIpPD1uc2UpPT0oJHduZC5NYXRoLmFicyhoLmEtYi5hKTw9bnNlJiYkd25kLk1hdGguYWJzKGguYi1iLmIpPD1uc2UpfHxmPyhpPSR3bmQuTWF0aC5taW4oaSxVNmMoYzdjKGgsYykpKSk6KGc9dHJ1ZSkpO2g9djZjKGEsYzdjKG5ldyBmN2MoYi5hLGIuYiksYSksZCxlKTshIWgmJihnfHwoJHduZC5NYXRoLmFicyhoLmEtYS5hKTw9bnNlJiYkd25kLk1hdGguYWJzKGguYi1hLmIpPD1uc2UpPT0oJHduZC5NYXRoLmFicyhoLmEtYi5hKTw9bnNlJiYkd25kLk1hdGguYWJzKGguYi1iLmIpPD1uc2UpfHxmKSYmKGk9JHduZC5NYXRoLm1pbihpLFU2YyhjN2MoaCxkKSkpKTtyZXR1cm4gaX1cbmZ1bmN0aW9uIGNUYihhKXtyNGMoYSxuZXcgRTNjKEwzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyxSbWUpLFNtZSksXCJNaW5pbWl6ZXMgdGhlIHN0cmVzcyB3aXRoaW4gYSBsYXlvdXQgdXNpbmcgc3RyZXNzIG1ham9yaXphdGlvbi4gU3RyZXNzIGV4aXN0cyBpZiB0aGUgZXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gYSBwYWlyIG9mIG5vZGVzIGRvZXNuJ3QgbWF0Y2ggdGhlaXIgZ3JhcGggdGhlb3JldGljIGRpc3RhbmNlLCB0aGF0IGlzLCB0aGUgc2hvcnRlc3QgcGF0aCBiZXR3ZWVuIHRoZSB0d28gbm9kZXMuIFRoZSBtZXRob2QgYWxsb3dzIHRvIHNwZWNpZnkgaW5kaXZpZHVhbCBlZGdlIGxlbmd0aHMuXCIpLG5ldyBmVGIpLHVtZSkpKTtwNGMoYSxSbWUsQW1lLEtzZChWU2IpKTtwNGMoYSxSbWUsQ21lLChCY2IoKSx0cnVlKSk7cDRjKGEsUm1lLEZtZSxLc2QoWVNiKSk7cDRjKGEsUm1lLFRtZSxLc2QoWlNiKSk7cDRjKGEsUm1lLEVtZSxLc2QoJFNiKSk7cDRjKGEsUm1lLEdtZSxLc2QoWFNiKSk7cDRjKGEsUm1lLERtZSxLc2QoX1NiKSk7cDRjKGEsUm1lLEhtZSxLc2QoYVRiKSk7cDRjKGEsUm1lLE1tZSxLc2QoVVNiKSk7cDRjKGEsUm1lLE9tZSxLc2QoU1NiKSk7cDRjKGEsUm1lLFBtZSxLc2QoVFNiKSk7cDRjKGEsUm1lLFFtZSxLc2QoV1NiKSk7cDRjKGEsUm1lLE5tZSxLc2QoUlNiKSl9XG5mdW5jdGlvbiBCRmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscjtPZGQoYiwnSW50ZXJhY3RpdmUgY3Jvc3NpbmcgbWluaW1pemF0aW9uJywxKTtnPTA7Zm9yKGY9bmV3IG9sYihhLmIpO2YuYTxmLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihmKSwyOSk7ZC5wPWcrK31tPVdaYihhKTtxPW5ldyBpSGMobS5sZW5ndGgpOyRJYyhuZXcgYW1iKE9DKEdDKHFZLDEpLFVoZSwyMjUsMCxbcV0pKSxtKTtwPTA7Zz0wO2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2M9MDtsPTA7Zm9yKGs9bmV3IG9sYihkLmEpO2suYTxrLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihrKSwxMCk7aWYoaS5uLmE+MCl7Yys9aS5uLmEraS5vLmEvMjsrK2x9Zm9yKG89bmV3IG9sYihpLmopO28uYTxvLmMuYy5sZW5ndGg7KXtuPUJEKG1sYihvKSwxMSk7bi5wPXArK319bD4wJiYoYy89bCk7cj1LQyhVRCxWamUsMjUsZC5hLmMubGVuZ3RoLDE1LDEpO2g9MDtmb3Ioaj1uZXcgb2xiKGQuYSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDEwKTtpLnA9aCsrO3JbaS5wXT1BRmMoaSxjKTtpLms9PShqMGIoKSxnMGIpJiZ5TmIoaSwod3RjKCksYXRjKSxyW2kucF0pfW1tYigpO09rYihkLmEsbmV3IEdGYyhyKSk7WURjKHEsbSxnLHRydWUpOysrZ31RZGQoYil9XG5mdW5jdGlvbiBaZmUoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aWYoYi5lPT01KXtXZmUoYSxiKTtyZXR1cm59aj1iO2lmKGouYj09bnVsbHx8YS5iPT1udWxsKXJldHVybjtZZmUoYSk7VmZlKGEpO1lmZShqKTtWZmUoaik7Yz1LQyhXRCxvamUsMjUsYS5iLmxlbmd0aCtqLmIubGVuZ3RoLDE1LDEpO2s9MDtkPTA7Zz0wO3doaWxlKGQ8YS5iLmxlbmd0aCYmZzxqLmIubGVuZ3RoKXtlPWEuYltkXTtmPWEuYltkKzFdO2g9ai5iW2ddO2k9ai5iW2crMV07aWYoZjxoKXtjW2srK109YS5iW2QrK107Y1trKytdPWEuYltkKytdfWVsc2UgaWYoZj49aCYmZTw9aSl7aWYoaDw9ZSYmZjw9aSl7ZCs9Mn1lbHNlIGlmKGg8PWUpe2EuYltkXT1pKzE7Zys9Mn1lbHNlIGlmKGY8PWkpe2NbaysrXT1lO2NbaysrXT1oLTE7ZCs9Mn1lbHNle2NbaysrXT1lO2NbaysrXT1oLTE7YS5iW2RdPWkrMTtnKz0yfX1lbHNlIGlmKGk8ZSl7Zys9Mn1lbHNle3Rocm93IHZiYihuZXcgaHooJ1Rva2VuI3N1YnRyYWN0UmFuZ2VzKCk6IEludGVybmFsIEVycm9yOiBbJythLmJbZF0rJywnK2EuYltkKzFdKyddIC0gWycrai5iW2ddKycsJytqLmJbZysxXSsnXScpKX19d2hpbGUoZDxhLmIubGVuZ3RoKXtjW2srK109YS5iW2QrK107Y1trKytdPWEuYltkKytdfWEuYj1LQyhXRCxvamUsMjUsaywxNSwxKTskZmIoYywwLGEuYiwwLGspfVxuZnVuY3Rpb24gQkpiKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKGEuQS5kYygpKXtyZXR1cm59aWYoYS5BLkhjKCh0ZGQoKSxyZGQpKSl7QkQoTXBiKGEuYiwoVWNkKCksQWNkKSksMTI0KS5rPXRydWU7QkQoTXBiKGEuYixSY2QpLDEyNCkuaz10cnVlO2I9YS5xIT0oZGNkKCksX2JkKSYmYS5xIT0kYmQ7WkdiKEJEKE1wYihhLmIsemNkKSwxMjQpLGIpO1pHYihCRChNcGIoYS5iLFRjZCksMTI0KSxiKTtaR2IoYS5nLGIpO2lmKGEuQS5IYyhzZGQpKXtCRChNcGIoYS5iLEFjZCksMTI0KS5qPXRydWU7QkQoTXBiKGEuYixSY2QpLDEyNCkuaj10cnVlO0JEKE1wYihhLmIsemNkKSwxMjQpLms9dHJ1ZTtCRChNcGIoYS5iLFRjZCksMTI0KS5rPXRydWU7YS5nLms9dHJ1ZX19aWYoYS5BLkhjKHFkZCkpe2EuYS5qPXRydWU7YS5hLms9dHJ1ZTthLmcuaj10cnVlO2EuZy5rPXRydWU7aD1hLkIuSGMoKElkZCgpLEVkZCkpO2ZvcihlPXdKYigpLGY9MCxnPWUubGVuZ3RoO2Y8ZzsrK2Ype2Q9ZVtmXTtjPUJEKE1wYihhLmksZCksMzA2KTtpZihjKXtpZihzSmIoZCkpe2Muaj10cnVlO2Muaz10cnVlfWVsc2V7Yy5qPSFoO2Muaz0haH19fX1pZihhLkEuSGMocGRkKSYmYS5CLkhjKChJZGQoKSxEZGQpKSl7YS5nLmo9dHJ1ZTthLmcuaj10cnVlO2lmKCFhLmEuail7YS5hLmo9dHJ1ZTthLmEuaz10cnVlO2EuYS5lPXRydWV9fX1cbmZ1bmN0aW9uIEdKYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO2ZvcihkPW5ldyBvbGIoYS5lLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyOSk7Zm9yKGY9bmV3IG9sYihjLmEpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxMCk7bj1hLmlbZS5wXTtqPW4uYS5lO2k9bi5kLmU7ZS5uLmI9ajtyPWktai1lLm8uYjtiPWJLYyhlKTttPShJemMoKSwoIWUucT8obW1iKCksbW1iKCksa21iKTplLnEpLl9iKChOeWMoKSxDeGMpKT8obD1CRCh2TmIoZSxDeGMpLDE5NykpOihsPUJEKHZOYihRX2IoZSksRHhjKSwxOTcpKSxsKTtiJiYobT09RnpjfHxtPT1FemMpJiYoZS5vLmIrPXIpO2lmKGImJihtPT1IemN8fG09PUZ6Y3x8bT09RXpjKSl7Zm9yKHA9bmV3IG9sYihlLmopO3AuYTxwLmMuYy5sZW5ndGg7KXtvPUJEKG1sYihwKSwxMSk7aWYoKFVjZCgpLEVjZCkuSGMoby5qKSl7az1CRChPaGIoYS5rLG8pLDEyMSk7by5uLmI9ay5lLWp9fWZvcihoPW5ldyBvbGIoZS5iKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksNzApO3E9QkQodk5iKGUseHhjKSwyMSk7cS5IYygoSGJkKCksRWJkKSk/KGcubi5iKz1yKTpxLkhjKEZiZCkmJihnLm4uYis9ci8yKX0obT09RnpjfHxtPT1FemMpJiZWX2IoZSwoVWNkKCksUmNkKSkuSmMobmV3ICRLYyhyKSl9fX19XG5mdW5jdGlvbiBMd2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG47aWYoIWEuYil7cmV0dXJuIGZhbHNlfWc9bnVsbDttPW51bGw7aT1uZXcgZXhiKG51bGwsbnVsbCk7ZT0xO2kuYVsxXT1hLmI7bD1pO3doaWxlKGwuYVtlXSl7aj1lO2g9bTttPWw7bD1sLmFbZV07ZD1hLmEudWUoYixsLmQpO2U9ZDwwPzA6MTtkPT0wJiYoIWMuY3x8d3RiKGwuZSxjLmQpKSYmKGc9bCk7aWYoISghIWwmJmwuYikmJiFId2IobC5hW2VdKSl7aWYoSHdiKGwuYVsxLWVdKSl7bT1tLmFbal09T3diKGwsZSl9ZWxzZSBpZighSHdiKGwuYVsxLWVdKSl7bj1tLmFbMS1qXTtpZihuKXtpZighSHdiKG4uYVsxLWpdKSYmIUh3YihuLmFbal0pKXttLmI9ZmFsc2U7bi5iPXRydWU7bC5iPXRydWV9ZWxzZXtmPWguYVsxXT09bT8xOjA7SHdiKG4uYVtqXSk/KGguYVtmXT1Od2IobSxqKSk6SHdiKG4uYVsxLWpdKSYmKGguYVtmXT1Pd2IobSxqKSk7bC5iPWguYVtmXS5iPXRydWU7aC5hW2ZdLmFbMF0uYj1mYWxzZTtoLmFbZl0uYVsxXS5iPWZhbHNlfX19fX1pZihnKXtjLmI9dHJ1ZTtjLmQ9Zy5lO2lmKGwhPWcpe2s9bmV3IGV4YihsLmQsbC5lKTtNd2IoYSxpLGcsayk7bT09ZyYmKG09ayl9bS5hW20uYVsxXT09bD8xOjBdPWwuYVshbC5hWzBdPzE6MF07LS1hLmN9YS5iPWkuYVsxXTshIWEuYiYmKGEuYi5iPWZhbHNlKTtyZXR1cm4gYy5ifVxuZnVuY3Rpb24gY2ljKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbTtmb3IoZT1uZXcgb2xiKGEuYS5hLmIpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSw1Nyk7Zm9yKGk9ZC5jLktjKCk7aS5PYigpOyl7aD1CRChpLlBiKCksNTcpO2lmKGQuYT09aC5hKXtjb250aW51ZX1mYWQoYS5hLmQpPyhsPWEuYS5nLk9lKGQsaCkpOihsPWEuYS5nLlBlKGQsaCkpO2Y9ZC5iLmErZC5kLmIrbC1oLmIuYTtmPSR3bmQuTWF0aC5jZWlsKGYpO2Y9JHduZC5NYXRoLm1heCgwLGYpO2lmKHZnYyhkLGgpKXtnPW5HYihuZXcgcEdiLGEuZCk7aj1RRCgkd25kLk1hdGguY2VpbChoLmIuYS1kLmIuYSkpO2I9ai0oaC5iLmEtZC5iLmEpO2s9dWdjKGQpLmE7Yz1kO2lmKCFrKXtrPXVnYyhoKS5hO2I9LWI7Yz1ofWlmKGspe2MuYi5hLT1iO2subi5hLT1ifUFGYihERmIoQ0ZiKEVGYihCRmIobmV3IEZGYiwkd25kLk1hdGgubWF4KDAsaikpLDEpLGcpLGEuY1tkLmEuZF0pKTtBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsJHduZC5NYXRoLm1heCgwLC1qKSksMSksZyksYS5jW2guYS5kXSkpfWVsc2V7bT0xOyhKRChkLmcsMTQ1KSYmSkQoaC5nLDEwKXx8SkQoaC5nLDE0NSkmJkpEKGQuZywxMCkpJiYobT0yKTtBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsUUQoZikpLG0pLGEuY1tkLmEuZF0pLGEuY1toLmEuZF0pKX19fX1cbmZ1bmN0aW9uIHBFYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07aWYoYyl7ZD0tMTtrPW5ldyBCaWIoYiwwKTt3aGlsZShrLmI8ay5kLmdjKCkpe2g9KHNDYihrLmI8ay5kLmdjKCkpLEJEKGsuZC5YYihrLmM9ay5iKyspLDEwKSk7bD1hLmNbaC5jLnBdW2gucF0uYTtpZihsPT1udWxsKXtnPWQrMTtmPW5ldyBCaWIoYixrLmIpO3doaWxlKGYuYjxmLmQuZ2MoKSl7bT10RWMoYSwoc0NiKGYuYjxmLmQuZ2MoKSksQkQoZi5kLlhiKGYuYz1mLmIrKyksMTApKSkuYTtpZihtIT1udWxsKXtnPSh1Q2IobSksbSk7YnJlYWt9fWw9KGQrZykvMjthLmNbaC5jLnBdW2gucF0uYT1sO2EuY1toLmMucF1baC5wXS5kPSh1Q2IobCksbCk7YS5jW2guYy5wXVtoLnBdLmI9MX1kPSh1Q2IobCksbCl9fWVsc2V7ZT0wO2ZvcihqPW5ldyBvbGIoYik7ai5hPGouYy5jLmxlbmd0aDspe2g9QkQobWxiKGopLDEwKTthLmNbaC5jLnBdW2gucF0uYSE9bnVsbCYmKGU9JHduZC5NYXRoLm1heChlLEVkYihhLmNbaC5jLnBdW2gucF0uYSkpKX1lKz0yO2ZvcihpPW5ldyBvbGIoYik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtpZihhLmNbaC5jLnBdW2gucF0uYT09bnVsbCl7bD1DdWIoYS5pLDI0KSpsa2UqZS0xO2EuY1toLmMucF1baC5wXS5hPWw7YS5jW2guYy5wXVtoLnBdLmQ9bDthLmNbaC5jLnBdW2gucF0uYj0xfX19fVxuZnVuY3Rpb24gQ1pkKCl7ckVkKGI1LG5ldyBpJGQpO3JFZChhNSxuZXcgUCRkKTtyRWQoYzUsbmV3IHVfZCk7ckVkKGQ1LG5ldyBNX2QpO3JFZChmNSxuZXcgUF9kKTtyRWQoaDUsbmV3IFNfZCk7ckVkKGc1LG5ldyBWX2QpO3JFZChpNSxuZXcgWV9kKTtyRWQoazUsbmV3IEdaZCk7ckVkKGw1LG5ldyBKWmQpO3JFZChtNSxuZXcgTVpkKTtyRWQobjUsbmV3IFBaZCk7ckVkKG81LG5ldyBTWmQpO3JFZChwNSxuZXcgVlpkKTtyRWQocTUsbmV3IFlaZCk7ckVkKHQ1LG5ldyBfWmQpO3JFZCh2NSxuZXcgYyRkKTtyRWQoeDYsbmV3IGYkZCk7ckVkKGo1LG5ldyBsJGQpO3JFZCh1NSxuZXcgbyRkKTtyRWQod0ksbmV3IHIkZCk7ckVkKEdDKFNELDEpLG5ldyB1JGQpO3JFZCh4SSxuZXcgeCRkKTtyRWQoeUksbmV3IEEkZCk7ckVkKCRKLG5ldyBEJGQpO3JFZChPNCxuZXcgRyRkKTtyRWQoQkksbmV3IEokZCk7ckVkKFQ0LG5ldyBNJGQpO3JFZChVNCxuZXcgUyRkKTtyRWQoTzksbmV3IFYkZCk7ckVkKEU5LG5ldyBZJGQpO3JFZChGSSxuZXcgXyRkKTtyRWQoSkksbmV3IGNfZCk7ckVkKEFJLG5ldyBmX2QpO3JFZChNSSxuZXcgaV9kKTtyRWQoREssbmV3IGxfZCk7ckVkKHY4LG5ldyBvX2QpO3JFZCh1OCxuZXcgcl9kKTtyRWQoVUksbmV3IHhfZCk7ckVkKFpJLG5ldyBBX2QpO3JFZChYNCxuZXcgRF9kKTtyRWQoVjQsbmV3IEdfZCl9XG5mdW5jdGlvbiBoQShhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsOyFjJiYoYz1UQShiLnEuZ2V0VGltZXpvbmVPZmZzZXQoKSkpO2U9KGIucS5nZXRUaW1lem9uZU9mZnNldCgpLWMuYSkqNjAwMDA7aD1uZXcgZ0Iod2JiKENiYihiLnEuZ2V0VGltZSgpKSxlKSk7aT1oO2lmKGgucS5nZXRUaW1lem9uZU9mZnNldCgpIT1iLnEuZ2V0VGltZXpvbmVPZmZzZXQoKSl7ZT4wPyhlLT04NjQwMDAwMCk6KGUrPTg2NDAwMDAwKTtpPW5ldyBnQih3YmIoQ2JiKGIucS5nZXRUaW1lKCkpLGUpKX1rPW5ldyBWZmI7aj1hLmEubGVuZ3RoO2ZvcihmPTA7ZjxqOyl7ZD1iZmIoYS5hLGYpO2lmKGQ+PTk3JiZkPD0xMjJ8fGQ+PTY1JiZkPD05MCl7Zm9yKGc9ZisxO2c8aiYmYmZiKGEuYSxnKT09ZDsrK2cpO3ZBKGssZCxnLWYsaCxpLGMpO2Y9Z31lbHNlIGlmKGQ9PTM5KXsrK2Y7aWYoZjxqJiZiZmIoYS5hLGYpPT0zOSl7ay5hKz1cIidcIjsrK2Y7Y29udGludWV9bD1mYWxzZTt3aGlsZSghbCl7Zz1mO3doaWxlKGc8aiYmYmZiKGEuYSxnKSE9MzkpeysrZ31pZihnPj1qKXt0aHJvdyB2YmIobmV3IFdkYihcIk1pc3NpbmcgdHJhaWxpbmcgJ1wiKSl9ZysxPGomJmJmYihhLmEsZysxKT09Mzk/KytnOihsPXRydWUpO1FmYihrLHFmYihhLmEsZixnKSk7Zj1nKzF9fWVsc2V7ay5hKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGQpOysrZn19cmV0dXJuIGsuYX1cbmZ1bmN0aW9uIE1FYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpO2I9bnVsbDtmb3IoZD1uZXcgb2xiKGEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyMzMpO0VkYihSRWMoYy5nLGMuZFswXSkuYSk7Yy5iPW51bGw7aWYoISFjLmUmJmMuZS5nYygpPjAmJmMuYz09MCl7IWImJihiPW5ldyBSa2IpO2IuY1tiLmMubGVuZ3RoXT1jfX1pZihiKXt3aGlsZShiLmMubGVuZ3RoIT0wKXtjPUJEKEtrYihiLDApLDIzMyk7aWYoISFjLmImJmMuYi5jLmxlbmd0aD4wKXtmb3IoZj0oIWMuYiYmKGMuYj1uZXcgUmtiKSxuZXcgb2xiKGMuYikpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwyMzMpO2lmKEdkYihSRWMoZS5nLGUuZFswXSkuYSk9PUdkYihSRWMoYy5nLGMuZFswXSkuYSkpe2lmKEprYihhLGUsMCk+SmtiKGEsYywwKSl7cmV0dXJuIG5ldyB2Z2QoZSxjKX19ZWxzZSBpZihFZGIoUkVjKGUuZyxlLmRbMF0pLmEpPkVkYihSRWMoYy5nLGMuZFswXSkuYSkpe3JldHVybiBuZXcgdmdkKGUsYyl9fX1mb3IoaD0oIWMuZSYmKGMuZT1uZXcgUmtiKSxjLmUpLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMjMzKTtpPSghZy5iJiYoZy5iPW5ldyBSa2IpLGcuYik7d0NiKDAsaS5jLmxlbmd0aCk7YUNiKGkuYywwLGMpO2cuYz09aS5jLmxlbmd0aCYmKGIuY1tiLmMubGVuZ3RoXT1nLHRydWUpfX19cmV0dXJuIG51bGx9XG5mdW5jdGlvbiB3bGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGs7aWYoYT09bnVsbCl7cmV0dXJuIFhoZX1pPWIuYS56YyhhLGIpO2lmKGkhPW51bGwpe3JldHVybiAnWy4uLl0nfWM9bmV3IHh3YihTaGUsJ1snLCddJyk7Zm9yKGU9YSxmPTAsZz1lLmxlbmd0aDtmPGc7KytmKXtkPWVbZl07aWYoZCE9bnVsbCYmKHJiKGQpLmkmNCkhPTApe2lmKEFycmF5LmlzQXJyYXkoZCkmJihrPUhDKGQpLCEoaz49MTQmJms8PTE2KSkpe2lmKGIuYS5fYihkKSl7IWMuYT8oYy5hPW5ldyBXZmIoYy5kKSk6UWZiKGMuYSxjLmIpO05mYihjLmEsJ1suLi5dJyl9ZWxzZXtoPUNEKGQpO2o9bmV3IFZxYihiKTt1d2IoYyx3bGIoaCxqKSl9fWVsc2UgSkQoZCwxNzcpP3V3YihjLFhsYihCRChkLDE3NykpKTpKRChkLDE5MCk/dXdiKGMsUWxiKEJEKGQsMTkwKSkpOkpEKGQsMTk1KT91d2IoYyxSbGIoQkQoZCwxOTUpKSk6SkQoZCwyMDEyKT91d2IoYyxXbGIoQkQoZCwyMDEyKSkpOkpEKGQsNDgpP3V3YihjLFVsYihCRChkLDQ4KSkpOkpEKGQsMzY0KT91d2IoYyxWbGIoQkQoZCwzNjQpKSk6SkQoZCw4MzIpP3V3YihjLFRsYihCRChkLDgzMikpKTpKRChkLDEwNCkmJnV3YihjLFNsYihCRChkLDEwNCkpKX1lbHNle3V3YihjLGQ9PW51bGw/WGhlOmZjYihkKSl9fXJldHVybiAhYy5hP2MuYzpjLmUubGVuZ3RoPT0wP2MuYS5hOmMuYS5hKygnJytjLmUpfVxuZnVuY3Rpb24geFFiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O2g9aXRkKGIsZmFsc2UsZmFsc2UpO3I9b2ZkKGgpO2QmJihyPXc3YyhyKSk7dD1FZGIoRUQoaGtkKGIsKENQYigpLHZQYikpKSk7cT0oc0NiKHIuYiE9MCksQkQoci5hLmEuYyw4KSk7bD1CRChVdChyLDEpLDgpO2lmKHIuYj4yKXtrPW5ldyBSa2I7R2tiKGssbmV3IEppYihyLDEsci5iKSk7Zj1zUWIoayx0K2EuYSk7cz1uZXcgWE9iKGYpO3ROYihzLGIpO2MuY1tjLmMubGVuZ3RoXT1zfWVsc2V7ZD8ocz1CRChPaGIoYS5iLGp0ZChiKSksMjY2KSk6KHM9QkQoT2hiKGEuYixsdGQoYikpLDI2NikpfWk9anRkKGIpO2QmJihpPWx0ZChiKSk7Zz16UWIocSxpKTtqPXQrYS5hO2lmKGcuYSl7ais9JHduZC5NYXRoLmFicyhxLmItbC5iKTtwPW5ldyBmN2MobC5hLChsLmIrcS5iKS8yKX1lbHNle2orPSR3bmQuTWF0aC5hYnMocS5hLWwuYSk7cD1uZXcgZjdjKChsLmErcS5hKS8yLGwuYil9ZD9SaGIoYS5kLGIsbmV3IFpPYihzLGcscCxqKSk6UmhiKGEuYyxiLG5ldyBaT2IocyxnLHAsaikpO1JoYihhLmIsYixzKTtvPSghYi5uJiYoYi5uPW5ldyBjVWQoRDIsYiwxLDcpKSxiLm4pO2ZvcihuPW5ldyBGeWQobyk7bi5lIT1uLmkuZ2MoKTspe209QkQoRHlkKG4pLDEzNyk7ZT13UWIoYSxtLHRydWUsMCwwKTtjLmNbYy5jLmxlbmd0aF09ZX19XG5mdW5jdGlvbiB3UGMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGs7aj1uZXcgUmtiO2g9bmV3IFJrYjtmb3IoZz1uZXcgb2xiKGEpO2cuYTxnLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihnKSwxMTIpO3BPYyhlLGUuZi5jLmxlbmd0aCk7cU9jKGUsZS5rLmMubGVuZ3RoKTtlLmQ9PTAmJihqLmNbai5jLmxlbmd0aF09ZSx0cnVlKTtlLmk9PTAmJmUuZS5iPT0wJiYoaC5jW2guYy5sZW5ndGhdPWUsdHJ1ZSl9ZD0tMTt3aGlsZShqLmMubGVuZ3RoIT0wKXtlPUJEKEtrYihqLDApLDExMik7Zm9yKGM9bmV3IG9sYihlLmspO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwxMjkpO2s9Yi5iO3JPYyhrLCR3bmQuTWF0aC5tYXgoay5vLGUubysxKSk7ZD0kd25kLk1hdGgubWF4KGQsay5vKTtwT2MoayxrLmQtMSk7ay5kPT0wJiYoai5jW2ouYy5sZW5ndGhdPWssdHJ1ZSl9fWlmKGQ+LTEpe2ZvcihmPW5ldyBvbGIoaCk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDExMik7ZS5vPWR9d2hpbGUoaC5jLmxlbmd0aCE9MCl7ZT1CRChLa2IoaCwwKSwxMTIpO2ZvcihjPW5ldyBvbGIoZS5mKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMTI5KTtpPWIuYTtpZihpLmUuYj4wKXtjb250aW51ZX1yT2MoaSwkd25kLk1hdGgubWluKGkubyxlLm8tMSkpO3FPYyhpLGkuaS0xKTtpLmk9PTAmJihoLmNbaC5jLmxlbmd0aF09aSx0cnVlKX19fX1cbmZ1bmN0aW9uIFFRZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGo7aj1hLmM7IWImJihiPUZRZCk7YS5jPWI7aWYoKGEuRGImNCkhPTAmJihhLkRiJjEpPT0wKXtpPW5ldyBuU2QoYSwxLDIsaixhLmMpOyFjPyhjPWkpOmMuRWkoaSl9aWYoaiE9Yil7aWYoSkQoYS5DYiwyODQpKXtpZihhLkRiPj4xNj09LTEwKXtjPUJEKGEuQ2IsMjg0KS5uayhiLGMpfWVsc2UgaWYoYS5EYj4+MTY9PS0xNSl7IWImJihiPShqR2QoKSxZRmQpKTshaiYmKGo9KGpHZCgpLFlGZCkpO2lmKGEuQ2IubmgoKSl7aT1uZXcgcFNkKGEuQ2IsMSwxMyxqLGIsSExkKFFTZChCRChhLkNiLDU5KSksYSksZmFsc2UpOyFjPyhjPWkpOmMuRWkoaSl9fX1lbHNlIGlmKEpEKGEuQ2IsODgpKXtpZihhLkRiPj4xNj09LTIzKXtKRChiLDg4KXx8KGI9KGpHZCgpLF9GZCkpO0pEKGosODgpfHwoaj0oakdkKCksX0ZkKSk7aWYoYS5DYi5uaCgpKXtpPW5ldyBwU2QoYS5DYiwxLDEwLGosYixITGQoVktkKEJEKGEuQ2IsMjYpKSxhKSxmYWxzZSk7IWM/KGM9aSk6Yy5FaShpKX19fWVsc2UgaWYoSkQoYS5DYiw0NDQpKXtoPUJEKGEuQ2IsODM2KTtnPSghaC5iJiYoaC5iPW5ldyBSWWQobmV3IE5ZZCkpLGguYik7Zm9yKGY9KGQ9bmV3IG5pYigobmV3IGVpYihnLmEpKS5hKSxuZXcgWllkKGQpKTtmLmEuYjspe2U9QkQobGliKGYuYSkuY2QoKSw4Nyk7Yz1RUWQoZSxNUWQoZSxoKSxjKX19fXJldHVybiBjfVxuZnVuY3Rpb24gTzFiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbTtnPUNjYihERChoa2QoYSwoTnljKCksZnhjKSkpKTttPUJEKGhrZChhLFl4YyksMjEpO2k9ZmFsc2U7aj1mYWxzZTtsPW5ldyBGeWQoKCFhLmMmJihhLmM9bmV3IGNVZChGMixhLDksOSkpLGEuYykpO3doaWxlKGwuZSE9bC5pLmdjKCkmJighaXx8IWopKXtmPUJEKER5ZChsKSwxMTgpO2g9MDtmb3IoZT11bChwbChPQyhHQyhLSSwxKSxVaGUsMjAsMCxbKCFmLmQmJihmLmQ9bmV3IHk1ZChCMixmLDgsNSkpLGYuZCksKCFmLmUmJihmLmU9bmV3IHk1ZChCMixmLDcsNCkpLGYuZSldKSkpO1FyKGUpOyl7ZD1CRChScihlKSw3OSk7az1nJiZRbGQoZCkmJkNjYihERChoa2QoZCxneGMpKSk7Yz1FTGQoKCFkLmImJihkLmI9bmV3IHk1ZCh6MixkLDQsNykpLGQuYiksZik/YT09WG9kKGF0ZChCRChxdWQoKCFkLmMmJihkLmM9bmV3IHk1ZCh6MixkLDUsOCkpLGQuYyksMCksODIpKSk6YT09WG9kKGF0ZChCRChxdWQoKCFkLmImJihkLmI9bmV3IHk1ZCh6MixkLDQsNykpLGQuYiksMCksODIpKSk7aWYoa3x8Yyl7KytoO2lmKGg+MSl7YnJlYWt9fX1oPjA/KGk9dHJ1ZSk6bS5IYygocmNkKCksbmNkKSkmJighZi5uJiYoZi5uPW5ldyBjVWQoRDIsZiwxLDcpKSxmLm4pLmk+MCYmKGk9dHJ1ZSk7aD4xJiYoaj10cnVlKX1pJiZiLkZjKChPcmMoKSxIcmMpKTtqJiZiLkZjKChPcmMoKSxJcmMpKX1cbmZ1bmN0aW9uIHpmZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG07bT1CRChoa2QoYSwoWTljKCksWThjKSksMjEpO2lmKG0uZGMoKSl7cmV0dXJuIG51bGx9aD0wO2c9MDtpZihtLkhjKCh0ZGQoKSxyZGQpKSl7az1CRChoa2QoYSx0OWMpLDk4KTtkPTI7Yz0yO2U9MjtmPTI7Yj0hWG9kKGEpP0JEKGhrZChhLHo4YyksMTAzKTpCRChoa2QoWG9kKGEpLHo4YyksMTAzKTtmb3Ioaj1uZXcgRnlkKCghYS5jJiYoYS5jPW5ldyBjVWQoRjIsYSw5LDkpKSxhLmMpKTtqLmUhPWouaS5nYygpOyl7aT1CRChEeWQoaiksMTE4KTtsPUJEKGhrZChpLEE5YyksNjEpO2lmKGw9PShVY2QoKSxTY2QpKXtsPWxmZChpLGIpO2prZChpLEE5YyxsKX1pZihrPT0oZGNkKCksJGJkKSl7c3dpdGNoKGwuZyl7Y2FzZSAxOmQ9JHduZC5NYXRoLm1heChkLGkuaStpLmcpO2JyZWFrO2Nhc2UgMjpjPSR3bmQuTWF0aC5tYXgoYyxpLmoraS5mKTticmVhaztjYXNlIDM6ZT0kd25kLk1hdGgubWF4KGUsaS5pK2kuZyk7YnJlYWs7Y2FzZSA0OmY9JHduZC5NYXRoLm1heChmLGkuaitpLmYpO319ZWxzZXtzd2l0Y2gobC5nKXtjYXNlIDE6ZCs9aS5nKzI7YnJlYWs7Y2FzZSAyOmMrPWkuZisyO2JyZWFrO2Nhc2UgMzplKz1pLmcrMjticmVhaztjYXNlIDQ6Zis9aS5mKzI7fX19aD0kd25kLk1hdGgubWF4KGQsZSk7Zz0kd25kLk1hdGgubWF4KGMsZil9cmV0dXJuIEFmZChhLGgsZyx0cnVlLHRydWUpfVxuZnVuY3Rpb24gbG5jKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7cz1CRChHQWIoVkFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmQsMTYpKSxuZXcgcG5jKGMpKSxuZXcgcm5jKGMpKSxCeWIobmV3IGZ6YixuZXcgZHpiLG5ldyBFemIsT0MoR0MoeEwsMSksS2llLDEzMiwwLFsoRnliKCksRHliKV0pKSksMTUpO2w9T2hlO2s9UmllO2ZvcihpPW5ldyBvbGIoYi5iLmopO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMSk7aWYoaC5qPT1jKXtsPSR3bmQuTWF0aC5taW4obCxoLnApO2s9JHduZC5NYXRoLm1heChrLGgucCl9fWlmKGw9PU9oZSl7Zm9yKGc9MDtnPHMuZ2MoKTtnKyspe29qYyhCRChzLlhiKGcpLDEwMSksYyxnKX19ZWxzZXt0PUtDKFdELG9qZSwyNSxlLmxlbmd0aCwxNSwxKTtFbGIodCx0Lmxlbmd0aCk7Zm9yKHI9cy5LYygpO3IuT2IoKTspe3E9QkQoci5QYigpLDEwMSk7Zj1CRChPaGIoYS5iLHEpLDE3Nyk7aj0wO2ZvcihwPWw7cDw9aztwKyspe2ZbcF0mJihqPSR3bmQuTWF0aC5tYXgoaixkW3BdKSl9aWYocS5pKXtuPXEuaS5jO3U9bmV3IFRxYjtmb3IobT0wO208ZS5sZW5ndGg7bSsrKXtlW25dW21dJiZRcWIodSxtZWIodFttXSkpfXdoaWxlKFJxYih1LG1lYihqKSkpeysran19b2pjKHEsYyxqKTtmb3Iobz1sO288PWs7bysrKXtmW29dJiYoZFtvXT1qKzEpfSEhcS5pJiYodFtxLmkuY109ail9fX1cbmZ1bmN0aW9uIFlKYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHA7ZT1udWxsO2ZvcihkPW5ldyBvbGIoYi5hKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMTApO2JLYyhjKT8oZj0oaD1uR2Iob0diKG5ldyBwR2IsYyksYS5mKSxpPW5HYihvR2IobmV3IHBHYixjKSxhLmYpLGo9bmV3IHJLYyhjLHRydWUsaCxpKSxrPWMuby5iLGw9KEl6YygpLCghYy5xPyhtbWIoKSxtbWIoKSxrbWIpOmMucSkuX2IoKE55YygpLEN4YykpPyhtPUJEKHZOYihjLEN4YyksMTk3KSk6KG09QkQodk5iKFFfYihjKSxEeGMpLDE5NykpLG0pLG49MTAwMDAsbD09RXpjJiYobj0xKSxvPUFGYihERmIoQ0ZiKEJGYihFRmIobmV3IEZGYixuKSxRRCgkd25kLk1hdGguY2VpbChrKSkpLGgpLGkpKSxsPT1GemMmJlFxYihhLmQsbyksWkpjKGEsU3UoVl9iKGMsKFVjZCgpLFRjZCkpKSxqKSxaSmMoYSxWX2IoYyx6Y2QpLGopLGopKTooZj0ocD1uR2Iob0diKG5ldyBwR2IsYyksYS5mKSxNQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGMuaiwxNikpLG5ldyBFS2MpLG5ldyBHS2MoYSxwKSksbmV3IHJLYyhjLGZhbHNlLHAscCkpKTthLmlbYy5wXT1mO2lmKGUpe2c9ZS5jLmQuYStqQmMoYS5uLGUuYyxjKStjLmQuZDtlLmJ8fChnKz1lLmMuby5iKTtBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsUUQoJHduZC5NYXRoLmNlaWwoZykpKSwwKSxlLmQpLGYuYSkpfWU9Zn19XG5mdW5jdGlvbiBzOWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO09kZChiLCdMYWJlbCBkdW1teSBpbnNlcnRpb25zJywxKTtsPW5ldyBSa2I7Zz1FZGIoRUQodk5iKGEsKE55YygpLG55YykpKSk7aj1FZGIoRUQodk5iKGEscnljKSkpO2s9QkQodk5iKGEsTHdjKSwxMDMpO2ZvcihuPW5ldyBvbGIoYS5hKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTApO2ZvcihmPW5ldyBTcih1cihVX2IobSkuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7aWYoZS5jLmkhPWUuZC5pJiZMcShlLmIscDliKSl7cD10OWIoZSk7bz1QdShlLmIuYy5sZW5ndGgpO2M9cjliKGEsZSxwLG8pO2wuY1tsLmMubGVuZ3RoXT1jO2Q9Yy5vO2g9bmV3IEJpYihlLmIsMCk7d2hpbGUoaC5iPGguZC5nYygpKXtpPShzQ2IoaC5iPGguZC5nYygpKSxCRChoLmQuWGIoaC5jPWguYisrKSw3MCkpO2lmKFBEKHZOYihpLFF3YykpPT09UEQoKHFhZCgpLG5hZCkpKXtpZihrPT0oZWFkKCksZGFkKXx8az09XzljKXtkLmErPWkuby5hK2o7ZC5iPSR3bmQuTWF0aC5tYXgoZC5iLGkuby5iKX1lbHNle2QuYT0kd25kLk1hdGgubWF4KGQuYSxpLm8uYSk7ZC5iKz1pLm8uYitqfW8uY1tvLmMubGVuZ3RoXT1pO3VpYihoKX19aWYoaz09KGVhZCgpLGRhZCl8fGs9PV85Yyl7ZC5hLT1qO2QuYis9ZytwfWVsc2V7ZC5iKz1nLWorcH19fX1Ha2IoYS5hLGwpO1FkZChiKX1cbmZ1bmN0aW9uIGVZYihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbjtmPW5ldyBxWWIoYik7bD1fWGIoYSxiLGYpO249JHduZC5NYXRoLm1heChFZGIoRUQodk5iKGIsKE55YygpLFp3YykpKSksMSk7Zm9yKGs9bmV3IG9sYihsLmEpO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSw0Nik7aT1kWWIoQkQoai5hLDgpLEJEKGouYiw4KSxuKTtvPXRydWU7bz1vJmlZYihjLG5ldyBmN2MoaS5jLGkuZCkpO289byZpWWIoYyxPNmMobmV3IGY3YyhpLmMsaS5kKSxpLmIsMCkpO289byZpWWIoYyxPNmMobmV3IGY3YyhpLmMsaS5kKSwwLGkuYSkpO28maVliKGMsTzZjKG5ldyBmN2MoaS5jLGkuZCksaS5iLGkuYSkpfW09Zi5kO2g9ZFliKEJEKGwuYi5hLDgpLEJEKGwuYi5iLDgpLG4pO2lmKG09PShVY2QoKSxUY2QpfHxtPT16Y2Qpe2QuY1ttLmddPSR3bmQuTWF0aC5taW4oZC5jW20uZ10saC5kKTtkLmJbbS5nXT0kd25kLk1hdGgubWF4KGQuYlttLmddLGguZCtoLmEpfWVsc2V7ZC5jW20uZ109JHduZC5NYXRoLm1pbihkLmNbbS5nXSxoLmMpO2QuYlttLmddPSR3bmQuTWF0aC5tYXgoZC5iW20uZ10saC5jK2guYil9ZT1RamU7Zz1mLmMuaS5kO3N3aXRjaChtLmcpe2Nhc2UgNDplPWcuYzticmVhaztjYXNlIDI6ZT1nLmI7YnJlYWs7Y2FzZSAxOmU9Zy5hO2JyZWFrO2Nhc2UgMzplPWcuZDt9ZC5hW20uZ109JHduZC5NYXRoLm1heChkLmFbbS5nXSxlKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIGVLZChiKXt2YXIgYyxkLGUsZjtkPWIuRCE9bnVsbD9iLkQ6Yi5CO2M9aGZiKGQsd2ZiKDkxKSk7aWYoYyE9LTEpe2U9ZC5zdWJzdHIoMCxjKTtmPW5ldyBIZmI7ZG8gZi5hKz0nWyc7d2hpbGUoKGM9Z2ZiKGQsOTEsKytjKSkhPS0xKTtpZihkZmIoZSxLaGUpKWYuYSs9J1onO2Vsc2UgaWYoZGZiKGUsRXZlKSlmLmErPSdCJztlbHNlIGlmKGRmYihlLEZ2ZSkpZi5hKz0nQyc7ZWxzZSBpZihkZmIoZSxHdmUpKWYuYSs9J0QnO2Vsc2UgaWYoZGZiKGUsSHZlKSlmLmErPSdGJztlbHNlIGlmKGRmYihlLEl2ZSkpZi5hKz0nSSc7ZWxzZSBpZihkZmIoZSxKdmUpKWYuYSs9J0onO2Vsc2UgaWYoZGZiKGUsS3ZlKSlmLmErPSdTJztlbHNle2YuYSs9J0wnO2YuYSs9JycrZTtmLmErPSc7J310cnl7cmV0dXJuIG51bGx9Y2F0Y2goYSl7YT11YmIoYSk7aWYoIUpEKGEsNjApKXRocm93IHZiYihhKX19ZWxzZSBpZihoZmIoZCx3ZmIoNDYpKT09LTEpe2lmKGRmYihkLEtoZSkpcmV0dXJuIHNiYjtlbHNlIGlmKGRmYihkLEV2ZSkpcmV0dXJuIFNEO2Vsc2UgaWYoZGZiKGQsRnZlKSlyZXR1cm4gVEQ7ZWxzZSBpZihkZmIoZCxHdmUpKXJldHVybiBVRDtlbHNlIGlmKGRmYihkLEh2ZSkpcmV0dXJuIFZEO2Vsc2UgaWYoZGZiKGQsSXZlKSlyZXR1cm4gV0Q7ZWxzZSBpZihkZmIoZCxKdmUpKXJldHVybiBYRDtlbHNlIGlmKGRmYihkLEt2ZSkpcmV0dXJuIHJiYn1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uICQxYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztqPW5ldyBiMGIoYyk7dE5iKGosYik7eU5iKGosKHd0YygpLCRzYyksYik7ai5vLmE9Yi5nO2ouby5iPWIuZjtqLm4uYT1iLmk7ai5uLmI9Yi5qO0VrYihjLmEsaik7UmhiKGEuYSxiLGopOygoIWIuYSYmKGIuYT1uZXcgY1VkKEUyLGIsMTAsMTEpKSxiLmEpLmkhPTB8fENjYihERChoa2QoYiwoTnljKCksZnhjKSkpKSkmJnlOYihqLHdzYywoQmNiKCksdHJ1ZSkpO2k9QkQodk5iKGMsS3NjKSwyMSk7az1CRCh2TmIoaiwoTnljKCksVnhjKSksOTgpO2s9PShkY2QoKSxjY2QpP3lOYihqLFZ4YyxiY2QpOmshPWJjZCYmaS5GYygoT3JjKCksS3JjKSk7ZD1CRCh2TmIoYyxMd2MpLDEwMyk7Zm9yKGg9bmV3IEZ5ZCgoIWIuYyYmKGIuYz1uZXcgY1VkKEYyLGIsOSw5KSksYi5jKSk7aC5lIT1oLmkuZ2MoKTspe2c9QkQoRHlkKGgpLDExOCk7Q2NiKEREKGhrZChnLEp4YykpKXx8XzFiKGEsZyxqLGksZCxrKX1mb3IoZj1uZXcgRnlkKCghYi5uJiYoYi5uPW5ldyBjVWQoRDIsYiwxLDcpKSxiLm4pKTtmLmUhPWYuaS5nYygpOyl7ZT1CRChEeWQoZiksMTM3KTshQ2NiKEREKGhrZChlLEp4YykpKSYmISFlLmEmJkVrYihqLmIsWjFiKGUpKX1DY2IoREQodk5iKGoscHdjKSkpJiZpLkZjKChPcmMoKSxGcmMpKTtpZihDY2IoREQodk5iKGosZXhjKSkpKXtpLkZjKChPcmMoKSxKcmMpKTtpLkZjKElyYyk7eU5iKGosVnhjLGJjZCl9cmV0dXJuIGp9XG5mdW5jdGlvbiBGNGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRDtoPUJEKE9oYihiLmMsYSksNDU5KTtzPWIuYS5jO2k9Yi5hLmMrYi5hLmI7Qz1oLmY7RD1oLmE7Zz1DPEQ7cD1uZXcgZjdjKHMsQyk7dD1uZXcgZjdjKGksRCk7ZT0ocytpKS8yO3E9bmV3IGY3YyhlLEMpO3U9bmV3IGY3YyhlLEQpO2Y9RzRiKGEsQyxEKTt3PUEwYihiLkIpO0E9bmV3IGY3YyhlLGYpO0I9QTBiKGIuRCk7Yz1qNmMoT0MoR0MobTEsMSksbmllLDgsMCxbdyxBLEJdKSk7bj1mYWxzZTtyPWIuQi5pO2lmKCEhciYmISFyLmMmJmguZCl7aj1nJiZyLnA8ci5jLmEuYy5sZW5ndGgtMXx8IWcmJnIucD4wO2lmKGope2lmKGope209ci5wO2c/KyttOi0tbTtsPUJEKElrYihyLmMuYSxtKSwxMCk7ZD1JNGIobCk7bj0hKHM2YyhkLHcsY1swXSl8fG42YyhkLHcsY1swXSkpfX1lbHNle249dHJ1ZX19bz1mYWxzZTt2PWIuRC5pO2lmKCEhdiYmISF2LmMmJmguZSl7az1nJiZ2LnA+MHx8IWcmJnYucDx2LmMuYS5jLmxlbmd0aC0xO2lmKGspe209di5wO2c/LS1tOisrbTtsPUJEKElrYih2LmMuYSxtKSwxMCk7ZD1JNGIobCk7bz0hKHM2YyhkLGNbMF0sQil8fG42YyhkLGNbMF0sQikpfWVsc2V7bz10cnVlfX1uJiZvJiZEc2IoYS5hLEEpO258fG43YyhhLmEsT0MoR0MobTEsMSksbmllLDgsMCxbcCxxXSkpO298fG43YyhhLmEsT0MoR0MobTEsMSksbmllLDgsMCxbdSx0XSkpfVxuZnVuY3Rpb24geWZkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtpZihKRChhLlVnKCksMTYwKSl7eWZkKEJEKGEuVWcoKSwxNjApLGIpO2IuYSs9JyA+ICd9ZWxzZXtiLmErPSdSb290ICd9Yz1hLlRnKCkuemI7ZGZiKGMuc3Vic3RyKDAsMyksJ0VsaycpP1FmYihiLGMuc3Vic3RyKDMpKTooYi5hKz0nJytjLGIpO2U9YS56ZygpO2lmKGUpe1FmYigoYi5hKz0nICcsYiksZSk7cmV0dXJufWlmKEpEKGEsMzU0KSl7aj1CRChhLDEzNykuYTtpZihqKXtRZmIoKGIuYSs9JyAnLGIpLGopO3JldHVybn19Zm9yKGc9bmV3IEZ5ZChhLkFnKCkpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwxMzcpO2o9Zi5hO2lmKGope1FmYigoYi5hKz0nICcsYiksaik7cmV0dXJufX1pZihKRChhLDM1Mikpe2Q9QkQoYSw3OSk7IWQuYiYmKGQuYj1uZXcgeTVkKHoyLGQsNCw3KSk7aWYoZC5iLmkhPTAmJighZC5jJiYoZC5jPW5ldyB5NWQoejIsZCw1LDgpKSxkLmMuaSE9MCkpe2IuYSs9JyAoJztoPW5ldyBPeWQoKCFkLmImJihkLmI9bmV3IHk1ZCh6MixkLDQsNykpLGQuYikpO3doaWxlKGguZSE9aC5pLmdjKCkpe2guZT4wJiYoYi5hKz1TaGUsYik7eWZkKEJEKER5ZChoKSwxNjApLGIpfWIuYSs9Z25lO2k9bmV3IE95ZCgoIWQuYyYmKGQuYz1uZXcgeTVkKHoyLGQsNSw4KSksZC5jKSk7d2hpbGUoaS5lIT1pLmkuZ2MoKSl7aS5lPjAmJihiLmErPVNoZSxiKTt5ZmQoQkQoRHlkKGkpLDE2MCksYil9Yi5hKz0nKSd9fX1cbmZ1bmN0aW9uIHkyYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbjtmPUJEKHZOYihhLCh3dGMoKSwkc2MpKSw3OSk7aWYoIWYpe3JldHVybn1kPWEuYTtlPW5ldyBnN2MoYyk7UDZjKGUsQzJiKGEpKTtpZihmX2IoYS5kLmksYS5jLmkpKXttPWEuYztsPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFttLm4sbS5hXSkpO2M3YyhsLGMpfWVsc2V7bD1BMGIoYS5jKX1Hc2IoZCxsLGQuYSxkLmEuYSk7bj1BMGIoYS5kKTt2TmIoYSx1dGMpIT1udWxsJiZQNmMobixCRCh2TmIoYSx1dGMpLDgpKTtHc2IoZCxuLGQuYy5iLGQuYyk7cTdjKGQsZSk7Zz1pdGQoZix0cnVlLHRydWUpO2ttZChnLEJEKHF1ZCgoIWYuYiYmKGYuYj1uZXcgeTVkKHoyLGYsNCw3KSksZi5iKSwwKSw4MikpO2xtZChnLEJEKHF1ZCgoIWYuYyYmKGYuYz1uZXcgeTVkKHoyLGYsNSw4KSksZi5jKSwwKSw4MikpO2lmZChkLGcpO2ZvcihrPW5ldyBvbGIoYS5iKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksNzApO2g9QkQodk5iKGosJHNjKSwxMzcpO2NsZChoLGouby5hKTthbGQoaCxqLm8uYik7YmxkKGgsai5uLmErZS5hLGoubi5iK2UuYik7amtkKGgsKEk5YigpLEg5YiksREQodk5iKGosSDliKSkpfWk9QkQodk5iKGEsKE55YygpLGp4YykpLDc0KTtpZihpKXtxN2MoaSxlKTtqa2QoZixqeGMsaSl9ZWxzZXtqa2QoZixqeGMsbnVsbCl9Yj09KEFhZCgpLHlhZCk/amtkKGYsU3djLHlhZCk6amtkKGYsU3djLG51bGwpfVxuZnVuY3Rpb24gbUpjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscztuPWIuYy5sZW5ndGg7bT0wO2ZvcihsPW5ldyBvbGIoYS5iKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMjkpO3I9ay5hO2lmKHIuYy5sZW5ndGg9PTApe2NvbnRpbnVlfXE9bmV3IG9sYihyKTtqPTA7cz1udWxsO2U9QkQobWxiKHEpLDEwKTtmPW51bGw7d2hpbGUoZSl7Zj1CRChJa2IoYixlLnApLDI1Nyk7aWYoZi5jPj0wKXtpPW51bGw7aD1uZXcgQmliKGsuYSxqKzEpO3doaWxlKGguYjxoLmQuZ2MoKSl7Zz0oc0NiKGguYjxoLmQuZ2MoKSksQkQoaC5kLlhiKGguYz1oLmIrKyksMTApKTtpPUJEKElrYihiLGcucCksMjU3KTtpZihpLmQ9PWYuZCYmaS5jPGYuYyl7YnJlYWt9ZWxzZXtpPW51bGx9fWlmKGkpe2lmKHMpe05rYihkLGUucCxtZWIoQkQoSWtiKGQsZS5wKSwxOSkuYS0xKSk7QkQoSWtiKGMscy5wKSwxNSkuTWMoZil9Zj15SmMoZixlLG4rKyk7Yi5jW2IuYy5sZW5ndGhdPWY7RWtiKGMsbmV3IFJrYik7aWYocyl7QkQoSWtiKGMscy5wKSwxNSkuRmMoZik7RWtiKGQsbWViKDEpKX1lbHNle0VrYihkLG1lYigwKSl9fX1vPW51bGw7aWYocS5hPHEuYy5jLmxlbmd0aCl7bz1CRChtbGIocSksMTApO3A9QkQoSWtiKGIsby5wKSwyNTcpO0JEKElrYihjLGUucCksMTUpLkZjKHApO05rYihkLG8ucCxtZWIoQkQoSWtiKGQsby5wKSwxOSkuYSsxKSl9Zi5kPW07Zi5jPWorKztzPWU7ZT1vfSsrbX19XG5mdW5jdGlvbiB1NmMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQ7aT1hO2s9YzdjKG5ldyBmN2MoYi5hLGIuYiksYSk7aj1jO2w9YzdjKG5ldyBmN2MoZC5hLGQuYiksYyk7bT1pLmE7cT1pLmI7bz1qLmE7cz1qLmI7bj1rLmE7cj1rLmI7cD1sLmE7dD1sLmI7ZT1wKnItbip0O0l5KCk7TXkoSnFlKTtpZigkd25kLk1hdGguYWJzKDAtZSk8PUpxZXx8MD09ZXx8aXNOYU4oMCkmJmlzTmFOKGUpKXtyZXR1cm4gZmFsc2V9Zz0xL2UqKChtLW8pKnItKHEtcykqbik7aD0xL2UqLSgtKG0tbykqdCsocS1zKSpwKTtmPShudWxsLE15KEpxZSksKCR3bmQuTWF0aC5hYnMoMC1nKTw9SnFlfHwwPT1nfHxpc05hTigwKSYmaXNOYU4oZyk/MDowPGc/LTE6MD5nPzE6TnkoaXNOYU4oMCksaXNOYU4oZykpKTwwJiYobnVsbCxNeShKcWUpLCgkd25kLk1hdGguYWJzKGctMSk8PUpxZXx8Zz09MXx8aXNOYU4oZykmJmlzTmFOKDEpPzA6ZzwxPy0xOmc+MT8xOk55KGlzTmFOKGcpLGlzTmFOKDEpKSk8MCkmJihudWxsLE15KEpxZSksKCR3bmQuTWF0aC5hYnMoMC1oKTw9SnFlfHwwPT1ofHxpc05hTigwKSYmaXNOYU4oaCk/MDowPGg/LTE6MD5oPzE6TnkoaXNOYU4oMCksaXNOYU4oaCkpKTwwKSYmKG51bGwsTXkoSnFlKSwoJHduZC5NYXRoLmFicyhoLTEpPD1KcWV8fGg9PTF8fGlzTmFOKGgpJiZpc05hTigxKT8wOmg8MT8tMTpoPjE/MTpOeShpc05hTihoKSxpc05hTigxKSkpPDApKTtyZXR1cm4gZn1cbmZ1bmN0aW9uIHo2ZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdztmb3IobD1uZXcgdXNiKG5ldyBuc2IoYSkpO2wuYiE9bC5jLmEuZDspe2s9dHNiKGwpO2g9QkQoay5kLDU2KTtiPUJEKGsuZSw1Nik7Zz1oLlRnKCk7Zm9yKHA9MCx1PShnLmk9PW51bGwmJlRLZChnKSxnLmkpLmxlbmd0aDtwPHU7KytwKXtqPShmPShnLmk9PW51bGwmJlRLZChnKSxnLmkpLHA+PTAmJnA8Zi5sZW5ndGg/ZltwXTpudWxsKTtpZihqLklqKCkmJiFqLkpqKCkpe2lmKEpEKGosOTkpKXtpPUJEKGosMTgpOyhpLkJiJm90ZSk9PTAmJih3PXpVZChpKSwhKCEhdyYmKHcuQmImb3RlKSE9MCkpJiZ5NmQoYSxpLGgsYil9ZWxzZXtRNmQoKTtpZihCRChqLDY2KS5PaigpKXtjPSh2PWosQkQoIXY/bnVsbDpCRChiLDQ5KS54aCh2KSwxNTMpKTtpZihjKXtuPUJEKGguYWgoaiksMTUzKTtkPWMuZ2MoKTtmb3IocT0wLG89bi5nYygpO3E8bzsrK3Epe209bi5pbChxKTtpZihKRChtLDk5KSl7dD1uLmpsKHEpO2U9V3JiKGEsdCk7aWYoZT09bnVsbCYmdCE9bnVsbCl7cz1CRChtLDE4KTtpZighYS5ifHwocy5CYiZvdGUpIT0wfHwhIXpVZChzKSl7Y29udGludWV9ZT10fWlmKCFjLmRsKG0sZSkpe2ZvcihyPTA7cjxkOysrcil7aWYoYy5pbChyKT09bSYmUEQoYy5qbChyKSk9PT1QRChlKSl7Yy5paShjLmdjKCktMSxyKTstLWQ7YnJlYWt9fX19ZWxzZXtjLmRsKG4uaWwocSksbi5qbChxKSl9fX19fX19fX1cbmZ1bmN0aW9uIENaYyhhLGIsYyxkLGUsZixnKXt2YXIgaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDtyPXhaYyhiLGMsYS5nKTtlLm4mJmUubiYmISFmJiZUZGQoZSxpNmQoZiksKHBnZCgpLG1nZCkpO2lmKGEuYil7Zm9yKHE9MDtxPHIuYy5sZW5ndGg7cSsrKXtsPSh0Q2IocSxyLmMubGVuZ3RoKSxCRChyLmNbcV0sMjAwKSk7aWYocSE9MCl7bj0odENiKHEtMSxyLmMubGVuZ3RoKSxCRChyLmNbcS0xXSwyMDApKTt3JGMobCxuLmYrbi5iK2EuZyl9dFpjKHEscixjLGEuZyk7QVpjKGEsbCk7ZS5uJiYhIWYmJlRkZChlLGk2ZChmKSwocGdkKCksbWdkKSl9fWVsc2V7Zm9yKHA9bmV3IG9sYihyKTtwLmE8cC5jLmMubGVuZ3RoOyl7bz1CRChtbGIocCksMjAwKTtmb3Ioaz1uZXcgb2xiKG8uYSk7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDE4Nyk7cz1uZXcgYiRjKGoucyxqLnQsYS5nKTtXWmMocyxqKTtFa2Ioby5kLHMpfX19QlpjKGEscik7ZS5uJiZlLm4mJiEhZiYmVGRkKGUsaTZkKGYpLChwZ2QoKSxtZ2QpKTt0PSR3bmQuTWF0aC5tYXgoYS5kLGQuYS0oZy5iK2cuYykpO209JHduZC5NYXRoLm1heChhLmMsZC5iLShnLmQrZy5hKSk7aD1tLWEuYztpZihhLmUmJmEuZil7aT10L207aTxhLmE/KHQ9bSphLmEpOihoKz10L2EuYS1tKX1hLmUmJnpaYyhyLHQsaCk7ZS5uJiZlLm4mJiEhZiYmVGRkKGUsaTZkKGYpLChwZ2QoKSxtZ2QpKTtyZXR1cm4gbmV3IGQkYyhhLmEsdCxhLmMraCwoayRjKCksaiRjKSl9XG5mdW5jdGlvbiBVSmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDthLmo9S0MoV0Qsb2plLDI1LGEuZywxNSwxKTthLm89bmV3IFJrYjtNQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZS5iLDE2KSksbmV3IGFMYyksbmV3IGNMYyhhKSk7YS5hPUtDKHNiYixkbGUsMjUsYS5iLDE2LDEpO1RBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmUuYiwxNikpLG5ldyByTGMoYSkpO2Q9KGw9bmV3IFJrYixNQWIoSkFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmUuYiwxNikpLG5ldyBoTGMpLG5ldyBqTGMoYSkpLG5ldyBsTGMoYSxsKSksbCk7Zm9yKGk9bmV3IG9sYihkKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksNTA4KTtpZihoLmMubGVuZ3RoPD0xKXtjb250aW51ZX1pZihoLmMubGVuZ3RoPT0yKXt1S2MoaCk7YktjKCh0Q2IoMCxoLmMubGVuZ3RoKSxCRChoLmNbMF0sMTcpKS5kLmkpfHxFa2IoYS5vLGgpO2NvbnRpbnVlfWlmKHRLYyhoKXx8c0tjKGgsbmV3IGZMYykpe2NvbnRpbnVlfWo9bmV3IG9sYihoKTtlPW51bGw7d2hpbGUoai5hPGouYy5jLmxlbmd0aCl7Yj1CRChtbGIoaiksMTcpO2M9YS5jW2IucF07IWV8fGouYT49ai5jLmMubGVuZ3RoPyhrPUpKYygoajBiKCksaDBiKSxnMGIpKTooaz1KSmMoKGowYigpLGcwYiksZzBiKSk7ayo9MjtmPWMuYS5nO2MuYS5nPSR3bmQuTWF0aC5tYXgoZixmKyhrLWYpKTtnPWMuYi5nO2MuYi5nPSR3bmQuTWF0aC5tYXgoZyxnKyhrLWcpKTtlPWJ9fX1cbmZ1bmN0aW9uIFZOYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHY7dj1IeChhKTtrPW5ldyBSa2I7aD1hLmMubGVuZ3RoO2w9aC0xO209aCsxO3doaWxlKHYuYS5jIT0wKXt3aGlsZShjLmIhPTApe3Q9KHNDYihjLmIhPTApLEJEKE5zYihjLGMuYS5hKSwxMTIpKTtKd2Iodi5hLHQpIT1udWxsO3QuZz1sLS07WU5jKHQsYixjLGQpfXdoaWxlKGIuYiE9MCl7dT0oc0NiKGIuYiE9MCksQkQoTnNiKGIsYi5hLmEpLDExMikpO0p3Yih2LmEsdSkhPW51bGw7dS5nPW0rKztZTmModSxiLGMsZCl9aj1SaWU7Zm9yKHI9KGc9bmV3IFl3YigobmV3IGN4YigobmV3IEdqYih2LmEpKS5hKSkuYiksbmV3IE5qYihnKSk7c2liKHIuYS5hKTspe3E9KGY9V3diKHIuYSksQkQoZi5jZCgpLDExMikpO2lmKCFkJiZxLmI+MCYmcS5hPD0wKXtrLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2suY1trLmMubGVuZ3RoXT1xO2JyZWFrfXA9cS5pLXEuZDtpZihwPj1qKXtpZihwPmope2suYz1LQyhTSSxVaGUsMSwwLDUsMSk7aj1wfWsuY1trLmMubGVuZ3RoXT1xfX1pZihrLmMubGVuZ3RoIT0wKXtpPUJEKElrYihrLEJ1YihlLGsuYy5sZW5ndGgpKSwxMTIpO0p3Yih2LmEsaSkhPW51bGw7aS5nPW0rKztZTmMoaSxiLGMsZCk7ay5jPUtDKFNJLFVoZSwxLDAsNSwxKX19cz1hLmMubGVuZ3RoKzE7Zm9yKG89bmV3IG9sYihhKTtvLmE8by5jLmMubGVuZ3RoOyl7bj1CRChtbGIobyksMTEyKTtuLmc8aCYmKG4uZz1uLmcrcyl9fVxuZnVuY3Rpb24gU0RiKGEsYil7dmFyIGM7aWYoYS5lKXt0aHJvdyB2YmIobmV3IFpkYigoZmRiKFRNKSxKa2UrVE0uaytLa2UpKSl9aWYoIWxEYihhLmEsYikpe3Rocm93IHZiYihuZXcgaHooTGtlK2IrTWtlKSl9aWYoYj09YS5kKXtyZXR1cm4gYX1jPWEuZDthLmQ9Yjtzd2l0Y2goYy5nKXtjYXNlIDA6c3dpdGNoKGIuZyl7Y2FzZSAyOlBEYihhKTticmVhaztjYXNlIDE6WERiKGEpO1BEYihhKTticmVhaztjYXNlIDQ6YkViKGEpO1BEYihhKTticmVhaztjYXNlIDM6YkViKGEpO1hEYihhKTtQRGIoYSk7fWJyZWFrO2Nhc2UgMjpzd2l0Y2goYi5nKXtjYXNlIDE6WERiKGEpO1lEYihhKTticmVhaztjYXNlIDQ6YkViKGEpO1BEYihhKTticmVhaztjYXNlIDM6YkViKGEpO1hEYihhKTtQRGIoYSk7fWJyZWFrO2Nhc2UgMTpzd2l0Y2goYi5nKXtjYXNlIDI6WERiKGEpO1lEYihhKTticmVhaztjYXNlIDQ6WERiKGEpO2JFYihhKTtQRGIoYSk7YnJlYWs7Y2FzZSAzOlhEYihhKTtiRWIoYSk7WERiKGEpO1BEYihhKTt9YnJlYWs7Y2FzZSA0OnN3aXRjaChiLmcpe2Nhc2UgMjpiRWIoYSk7UERiKGEpO2JyZWFrO2Nhc2UgMTpiRWIoYSk7WERiKGEpO1BEYihhKTticmVhaztjYXNlIDM6WERiKGEpO1lEYihhKTt9YnJlYWs7Y2FzZSAzOnN3aXRjaChiLmcpe2Nhc2UgMjpYRGIoYSk7YkViKGEpO1BEYihhKTticmVhaztjYXNlIDE6WERiKGEpO2JFYihhKTtYRGIoYSk7UERiKGEpO2JyZWFrO2Nhc2UgNDpYRGIoYSk7WURiKGEpO319cmV0dXJuIGF9XG5mdW5jdGlvbiB0VmIoYSxiKXt2YXIgYztpZihhLmQpe3Rocm93IHZiYihuZXcgWmRiKChmZGIoTFApLEprZStMUC5rK0trZSkpKX1pZighY1ZiKGEuYSxiKSl7dGhyb3cgdmJiKG5ldyBoeihMa2UrYitNa2UpKX1pZihiPT1hLmMpe3JldHVybiBhfWM9YS5jO2EuYz1iO3N3aXRjaChjLmcpe2Nhc2UgMDpzd2l0Y2goYi5nKXtjYXNlIDI6cVZiKGEpO2JyZWFrO2Nhc2UgMTp4VmIoYSk7cVZiKGEpO2JyZWFrO2Nhc2UgNDpCVmIoYSk7cVZiKGEpO2JyZWFrO2Nhc2UgMzpCVmIoYSk7eFZiKGEpO3FWYihhKTt9YnJlYWs7Y2FzZSAyOnN3aXRjaChiLmcpe2Nhc2UgMTp4VmIoYSk7eVZiKGEpO2JyZWFrO2Nhc2UgNDpCVmIoYSk7cVZiKGEpO2JyZWFrO2Nhc2UgMzpCVmIoYSk7eFZiKGEpO3FWYihhKTt9YnJlYWs7Y2FzZSAxOnN3aXRjaChiLmcpe2Nhc2UgMjp4VmIoYSk7eVZiKGEpO2JyZWFrO2Nhc2UgNDp4VmIoYSk7QlZiKGEpO3FWYihhKTticmVhaztjYXNlIDM6eFZiKGEpO0JWYihhKTt4VmIoYSk7cVZiKGEpO31icmVhaztjYXNlIDQ6c3dpdGNoKGIuZyl7Y2FzZSAyOkJWYihhKTtxVmIoYSk7YnJlYWs7Y2FzZSAxOkJWYihhKTt4VmIoYSk7cVZiKGEpO2JyZWFrO2Nhc2UgMzp4VmIoYSk7eVZiKGEpO31icmVhaztjYXNlIDM6c3dpdGNoKGIuZyl7Y2FzZSAyOnhWYihhKTtCVmIoYSk7cVZiKGEpO2JyZWFrO2Nhc2UgMTp4VmIoYSk7QlZiKGEpO3hWYihhKTtxVmIoYSk7YnJlYWs7Y2FzZSA0OnhWYihhKTt5VmIoYSk7fX1yZXR1cm4gYX1cbmZ1bmN0aW9uIFVRYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaztmb3IoaT1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO2kuZSE9aS5pLmdjKCk7KXtoPUJEKER5ZChpKSwzMyk7Zm9yKGU9bmV3IFNyKHVyKF9zZChoKS5hLktjKCksbmV3IFNxKSk7UXIoZSk7KXtkPUJEKFJyKGUpLDc5KTshZC5iJiYoZC5iPW5ldyB5NWQoejIsZCw0LDcpKTtpZighKGQuYi5pPD0xJiYoIWQuYyYmKGQuYz1uZXcgeTVkKHoyLGQsNSw4KSksZC5jLmk8PTEpKSl7dGhyb3cgdmJiKG5ldyB6MmMoJ0dyYXBoIG11c3Qgbm90IGNvbnRhaW4gaHlwZXJlZGdlcy4nKSl9aWYoIVBsZChkKSYmaCE9YXRkKEJEKHF1ZCgoIWQuYyYmKGQuYz1uZXcgeTVkKHoyLGQsNSw4KSksZC5jKSwwKSw4MikpKXtqPW5ldyBnUmI7dE5iKGosZCk7eU5iKGosKEhTYigpLEZTYiksZCk7ZFJiKGosQkQoV2QoaXJiKGMuZixoKSksMTQ0KSk7ZVJiKGosQkQoT2hiKGMsYXRkKEJEKHF1ZCgoIWQuYyYmKGQuYz1uZXcgeTVkKHoyLGQsNSw4KSksZC5jKSwwKSw4MikpKSwxNDQpKTtFa2IoYi5jLGopO2ZvcihnPW5ldyBGeWQoKCFkLm4mJihkLm49bmV3IGNVZChEMixkLDEsNykpLGQubikpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwxMzcpO2s9bmV3IG1SYihqLGYuYSk7dE5iKGssZik7eU5iKGssRlNiLGYpO2suZS5hPSR3bmQuTWF0aC5tYXgoZi5nLDEpO2suZS5iPSR3bmQuTWF0aC5tYXgoZi5mLDEpO2xSYihrKTtFa2IoYi5kLGspfX19fX1cbmZ1bmN0aW9uIE9HYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDtsPW5ldyBMSWIoYSk7aUtiKGwsIShiPT0oZWFkKCksZGFkKXx8Yj09XzljKSk7az1sLmE7bT1uZXcgcDBiO2ZvcihlPShnSGIoKSxPQyhHQyhwTiwxKSxLaWUsMjMyLDAsW2RIYixlSGIsZkhiXSkpLGc9MCxpPWUubGVuZ3RoO2c8aTsrK2cpe2M9ZVtnXTtqPXhIYihrLGRIYixjKTshIWomJihtLmQ9JHduZC5NYXRoLm1heChtLmQsai5SZSgpKSl9Zm9yKGQ9T0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pLGY9MCxoPWQubGVuZ3RoO2Y8aDsrK2Ype2M9ZFtmXTtqPXhIYihrLGZIYixjKTshIWomJihtLmE9JHduZC5NYXRoLm1heChtLmEsai5SZSgpKSl9Zm9yKHA9T0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pLHI9MCx0PXAubGVuZ3RoO3I8dDsrK3Ipe249cFtyXTtqPXhIYihrLG4sZEhiKTshIWomJihtLmI9JHduZC5NYXRoLm1heChtLmIsai5TZSgpKSl9Zm9yKG89T0MoR0MocE4sMSksS2llLDIzMiwwLFtkSGIsZUhiLGZIYl0pLHE9MCxzPW8ubGVuZ3RoO3E8czsrK3Epe249b1txXTtqPXhIYihrLG4sZkhiKTshIWomJihtLmM9JHduZC5NYXRoLm1heChtLmMsai5TZSgpKSl9aWYobS5kPjApe20uZCs9ay5uLmQ7bS5kKz1rLmR9aWYobS5hPjApe20uYSs9ay5uLmE7bS5hKz1rLmR9aWYobS5iPjApe20uYis9ay5uLmI7bS5iKz1rLmR9aWYobS5jPjApe20uYys9ay5uLmM7bS5jKz1rLmR9cmV0dXJuIG19XG5mdW5jdGlvbiBkNmIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbzttPWMuZDtsPWMuYztmPW5ldyBmN2MoYy5mLmErYy5kLmIrYy5kLmMsYy5mLmIrYy5kLmQrYy5kLmEpO2c9Zi5iO2ZvcihqPW5ldyBvbGIoYS5hKTtqLmE8ai5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaiksMTApO2lmKGguayE9KGowYigpLGUwYikpe2NvbnRpbnVlfWQ9QkQodk5iKGgsKHd0YygpLEhzYykpLDYxKTtlPUJEKHZOYihoLElzYyksOCk7az1oLm47c3dpdGNoKGQuZyl7Y2FzZSAyOmsuYT1jLmYuYSttLmMtbC5hO2JyZWFrO2Nhc2UgNDprLmE9LWwuYS1tLmI7fW89MDtzd2l0Y2goZC5nKXtjYXNlIDI6Y2FzZSA0OmlmKGI9PShkY2QoKSxfYmQpKXtuPUVkYihFRCh2TmIoaCxodGMpKSk7ay5iPWYuYipuLUJEKHZOYihoLChOeWMoKSxUeGMpKSw4KS5iO289ay5iK2UuYjtNX2IoaCxmYWxzZSx0cnVlKX1lbHNlIGlmKGI9PSRiZCl7ay5iPUVkYihFRCh2TmIoaCxodGMpKSktQkQodk5iKGgsKE55YygpLFR4YykpLDgpLmI7bz1rLmIrZS5iO01fYihoLGZhbHNlLHRydWUpfX1nPSR3bmQuTWF0aC5tYXgoZyxvKX1jLmYuYis9Zy1mLmI7Zm9yKGk9bmV3IG9sYihhLmEpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxMCk7aWYoaC5rIT0oajBiKCksZTBiKSl7Y29udGludWV9ZD1CRCh2TmIoaCwod3RjKCksSHNjKSksNjEpO2s9aC5uO3N3aXRjaChkLmcpe2Nhc2UgMTprLmI9LWwuYi1tLmQ7YnJlYWs7Y2FzZSAzOmsuYj1jLmYuYittLmEtbC5iO319fVxuZnVuY3Rpb24gblJjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQjtlPUJEKHZOYihhLChtVGMoKSxkVGMpKSwzMyk7aj1PaGU7az1PaGU7aD1SaWU7aT1SaWU7Zm9yKHc9SnNiKGEuYiwwKTt3LmIhPXcuZC5jOyl7dT1CRChYc2IodyksODYpO3A9dS5lO3E9dS5mO2o9JHduZC5NYXRoLm1pbihqLHAuYS1xLmEvMik7az0kd25kLk1hdGgubWluKGsscC5iLXEuYi8yKTtoPSR3bmQuTWF0aC5tYXgoaCxwLmErcS5hLzIpO2k9JHduZC5NYXRoLm1heChpLHAuYitxLmIvMil9bz1CRChoa2QoZSwoSlRjKCksQlRjKSksMTE2KTtuPW5ldyBmN2Moby5iLWosby5kLWspO2Zvcih2PUpzYihhLmIsMCk7di5iIT12LmQuYzspe3U9QkQoWHNiKHYpLDg2KTttPXZOYih1LGRUYyk7aWYoSkQobSwyMzkpKXtmPUJEKG0sMzMpO2w9UDZjKHUuZSxuKTtibGQoZixsLmEtZi5nLzIsbC5iLWYuZi8yKX19Zm9yKHQ9SnNiKGEuYSwwKTt0LmIhPXQuZC5jOyl7cz1CRChYc2IodCksMTg4KTtkPUJEKHZOYihzLGRUYyksNzkpO2lmKGQpe2I9cy5hO3I9bmV3IGc3YyhzLmIuZSk7R3NiKGIscixiLmEsYi5hLmEpO0E9bmV3IGc3YyhzLmMuZSk7R3NiKGIsQSxiLmMuYixiLmMpO3FSYyhyLEJEKFV0KGIsMSksOCkscy5iLmYpO3FSYyhBLEJEKFV0KGIsYi5iLTIpLDgpLHMuYy5mKTtjPWl0ZChkLHRydWUsdHJ1ZSk7aWZkKGIsYyl9fUI9aC1qKyhvLmIrby5jKTtnPWktaysoby5kK28uYSk7QWZkKGUsQixnLGZhbHNlLGZhbHNlKX1cbmZ1bmN0aW9uIHhvYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDtsPWEuYjtrPW5ldyBCaWIobCwwKTtBaWIoayxuZXcgSDFiKGEpKTtzPWZhbHNlO2c9MTt3aGlsZShrLmI8ay5kLmdjKCkpe2o9KHNDYihrLmI8ay5kLmdjKCkpLEJEKGsuZC5YYihrLmM9ay5iKyspLDI5KSk7cD0odENiKGcsbC5jLmxlbmd0aCksQkQobC5jW2ddLDI5KSk7cT1NdShqLmEpO3I9cS5jLmxlbmd0aDtmb3Iobz1uZXcgb2xiKHEpO28uYTxvLmMuYy5sZW5ndGg7KXttPUJEKG1sYihvKSwxMCk7JF9iKG0scCl9aWYocyl7Zm9yKG49YXYobmV3IG92KHEpLDApO24uYy5TYigpOyl7bT1CRChwdihuKSwxMCk7Zm9yKGY9bmV3IG9sYihNdShSX2IobSkpKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTcpO1BaYihlLHRydWUpO3lOYihhLCh3dGMoKSxBc2MpLChCY2IoKSx0cnVlKSk7ZD1Ob2MoYSxlLHIpO2M9QkQodk5iKG0sdXNjKSwzMDUpO3Q9QkQoSWtiKGQsZC5jLmxlbmd0aC0xKSwxNyk7Yy5rPXQuYy5pO2Mubj10O2MuYj1lLmQuaTtjLmM9ZX19cz1mYWxzZX1lbHNle2lmKHEuYy5sZW5ndGghPTApe2I9KHRDYigwLHEuYy5sZW5ndGgpLEJEKHEuY1swXSwxMCkpO2lmKGIuaz09KGowYigpLGQwYikpe3M9dHJ1ZTtnPS0xfX19KytnfWg9bmV3IEJpYihhLmIsMCk7d2hpbGUoaC5iPGguZC5nYygpKXtpPShzQ2IoaC5iPGguZC5nYygpKSxCRChoLmQuWGIoaC5jPWguYisrKSwyOSkpO2kuYS5jLmxlbmd0aD09MCYmdWliKGgpfX1cbmZ1bmN0aW9uIHdLYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO2s9QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCk7aWYoay5nYygpPD0yfHxiPT0oVWNkKCksemNkKXx8Yj09KFVjZCgpLFRjZCkpe0FLYihhLGIpO3JldHVybn1wPWEudS5IYygocmNkKCkscWNkKSk7Yz1iPT0oVWNkKCksQWNkKT8odkxiKCksdUxiKToodkxiKCksckxiKTtyPWI9PUFjZD8oRUliKCksQkliKTooRUliKCksREliKTtkPWRMYihpTGIoYyksYS5zKTtxPWI9PUFjZD9QamU6UWplO2ZvcihqPWsuS2MoKTtqLk9iKCk7KXtoPUJEKGouUGIoKSwxMTEpO2lmKCFoLmN8fGguYy5kLmMubGVuZ3RoPD0wKXtjb250aW51ZX1vPWguYi5yZigpO249aC5lO2w9aC5jO209bC5pO20uYj0oZj1sLm4sbC5lLmErZi5iK2YuYyk7bS5hPShnPWwubixsLmUuYitnLmQrZy5hKTtpZihwKXttLmM9bi5hLShlPWwubixsLmUuYStlLmIrZS5jKS1hLnM7cD1mYWxzZX1lbHNle20uYz1uLmErby5hK2Euc315dGIocixsbGUpO2wuZj1yOyRIYihsLChOSGIoKSxNSGIpKTtFa2IoZC5kLG5ldyBCTGIobSxiTGIoZCxtKSkpO3E9Yj09QWNkPyR3bmQuTWF0aC5taW4ocSxuLmIpOiR3bmQuTWF0aC5tYXgocSxuLmIraC5iLnJmKCkuYil9cSs9Yj09QWNkPy1hLnQ6YS50O2NMYigoZC5lPXEsZCkpO2ZvcihpPWsuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSwxMTEpO2lmKCFoLmN8fGguYy5kLmMubGVuZ3RoPD0wKXtjb250aW51ZX1tPWguYy5pO20uYy09aC5lLmE7bS5kLT1oLmUuYn19XG5mdW5jdGlvbiBJRGMoYSxiLGMpe3ZhciBkO09kZChjLCdTdHJldGNoV2lkdGggbGF5ZXJpbmcnLDEpO2lmKGIuYS5jLmxlbmd0aD09MCl7UWRkKGMpO3JldHVybn1hLmM9YjthLnQ9MDthLnU9MDthLmk9UGplO2EuZz1RamU7YS5kPUVkYihFRCh2TmIoYiwoTnljKCksbHljKSkpKTtDRGMoYSk7RERjKGEpO0FEYyhhKTtIRGMoYSk7QkRjKGEpO2EuaT0kd25kLk1hdGgubWF4KDEsYS5pKTthLmc9JHduZC5NYXRoLm1heCgxLGEuZyk7YS5kPWEuZC9hLmk7YS5mPWEuZy9hLmk7YS5zPUZEYyhhKTtkPW5ldyBIMWIoYS5jKTtFa2IoYS5jLmIsZCk7YS5yPU11KGEucCk7YS5uPXRsYihhLmssYS5rLmxlbmd0aCk7d2hpbGUoYS5yLmMubGVuZ3RoIT0wKXthLm89SkRjKGEpO2lmKCFhLm98fEVEYyhhKSYmYS5iLmEuZ2MoKSE9MCl7S0RjKGEsZCk7ZD1uZXcgSDFiKGEuYyk7RWtiKGEuYy5iLGQpO3llKGEuYSxhLmIpO2EuYi5hLiRiKCk7YS50PWEudTthLnU9MH1lbHNle2lmKEVEYyhhKSl7YS5jLmIuYz1LQyhTSSxVaGUsMSwwLDUsMSk7ZD1uZXcgSDFiKGEuYyk7RWtiKGEuYy5iLGQpO2EudD0wO2EudT0wO2EuYi5hLiRiKCk7YS5hLmEuJGIoKTsrK2EuZjthLnI9TXUoYS5wKTthLm49dGxiKGEuayxhLmsubGVuZ3RoKX1lbHNleyRfYihhLm8sZCk7TGtiKGEucixhLm8pO1FxYihhLmIsYS5vKTthLnQ9YS50LWEua1thLm8ucF0qYS5kK2EualthLm8ucF07YS51Kz1hLmVbYS5vLnBdKmEuZH19fWIuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtzbWIoYi5iKTtRZGQoYyl9XG5mdW5jdGlvbiBNZ2MoYSl7dmFyIGIsYyxkLGU7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmEuYiwxNikpLG5ldyBraGMpLG5ldyBtaGMpO0tnYyhhKTtNQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuYS5iLDE2KSksbmV3IG9oYyksbmV3IHFoYyk7aWYoYS5jPT0oQWFkKCkseWFkKSl7TUFiKEpBYihMQWIobmV3IFlBYihudWxsLG5ldyBLdWIobmV3IFBpYihhLmYpLDEpKSxuZXcgeWhjKSxuZXcgQWhjKSxuZXcgQ2hjKGEpKTtNQWIoSkFiKE5BYihMQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZC5iLDE2KSksbmV3IEdoYyksbmV3IEloYyksbmV3IEtoYyksbmV3IE1oYyksbmV3IE9oYyhhKSl9ZT1uZXcgZjdjKFBqZSxQamUpO2I9bmV3IGY3YyhRamUsUWplKTtmb3IoZD1uZXcgb2xiKGEuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksNTcpO2UuYT0kd25kLk1hdGgubWluKGUuYSxjLmQuYyk7ZS5iPSR3bmQuTWF0aC5taW4oZS5iLGMuZC5kKTtiLmE9JHduZC5NYXRoLm1heChiLmEsYy5kLmMrYy5kLmIpO2IuYj0kd25kLk1hdGgubWF4KGIuYixjLmQuZCtjLmQuYSl9UDZjKFg2YyhhLmQuYyksVjZjKG5ldyBmN2MoZS5hLGUuYikpKTtQNmMoWDZjKGEuZC5mKSxjN2MobmV3IGY3YyhiLmEsYi5iKSxlKSk7TGdjKGEsZSxiKTtVaGIoYS5mKTtVaGIoYS5iKTtVaGIoYS5nKTtVaGIoYS5lKTthLmEuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKTthLmEuYi5jPUtDKFNJLFVoZSwxLDAsNSwxKTthLmE9bnVsbDthLmQ9bnVsbH1cbmZ1bmN0aW9uIHZaYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDtlPW5ldyBSa2I7Zm9yKHA9bmV3IG9sYihiLmEpO3AuYTxwLmMuYy5sZW5ndGg7KXtvPUJEKG1sYihwKSwxMCk7bj1vLmU7aWYobil7ZD12WmIoYSxuLG8pO0drYihlLGQpO3NaYihhLG4sbyk7aWYoQkQodk5iKG4sKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSkpe3M9QkQodk5iKG8sKE55YygpLFZ4YykpLDk4KTttPUJEKHZOYihvLFl4YyksMTc0KS5IYygocmNkKCksbmNkKSk7Zm9yKHI9bmV3IG9sYihvLmopO3IuYTxyLmMuYy5sZW5ndGg7KXtxPUJEKG1sYihyKSwxMSk7Zj1CRChPaGIoYS5iLHEpLDEwKTtpZighZil7Zj1aJGIocSxzLHEuaiwtKHEuZS5jLmxlbmd0aC1xLmcuYy5sZW5ndGgpLG51bGwsbmV3IGQ3YyxxLm8sQkQodk5iKG4sTHdjKSwxMDMpLG4pO3lOYihmLCRzYyxxKTtSaGIoYS5iLHEsZik7RWtiKG4uYSxmKX1nPUJEKElrYihmLmosMCksMTEpO2ZvcihrPW5ldyBvbGIocS5mKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksNzApO2g9bmV3IHBfYjtoLm8uYT1qLm8uYTtoLm8uYj1qLm8uYjtFa2IoZy5mLGgpO2lmKCFtKXt0PXEuajtsPTA7dGNkKEJEKHZOYihvLFl4YyksMjEpKSYmKGw9bWZkKGoubixqLm8scS5vLDAsdCkpO3M9PShkY2QoKSxiY2QpfHwoVWNkKCksRWNkKS5IYyh0KT8oaC5vLmE9bCk6KGguby5iPWwpfX19fX19aT1uZXcgUmtiO3JaYihhLGIsYyxlLGkpOyEhYyYmdFpiKGEsYixjLGkpO3JldHVybiBpfVxuZnVuY3Rpb24gbkVjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7aWYoYS5jW2IuYy5wXVtiLnBdLmUpe3JldHVybn1lbHNle2EuY1tiLmMucF1bYi5wXS5lPXRydWV9YS5jW2IuYy5wXVtiLnBdLmI9MDthLmNbYi5jLnBdW2IucF0uZD0wO2EuY1tiLmMucF1bYi5wXS5hPW51bGw7Zm9yKGs9bmV3IG9sYihiLmopO2suYTxrLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihrKSwxMSk7bD1jP25ldyBKMGIoaik6bmV3IFIwYihqKTtmb3IoaT1sLktjKCk7aS5PYigpOyl7aD1CRChpLlBiKCksMTEpO2c9aC5pO2lmKGcuYz09Yi5jKXtpZihnIT1iKXtuRWMoYSxnLGMpO2EuY1tiLmMucF1bYi5wXS5iKz1hLmNbZy5jLnBdW2cucF0uYjthLmNbYi5jLnBdW2IucF0uZCs9YS5jW2cuYy5wXVtnLnBdLmR9fWVsc2V7YS5jW2IuYy5wXVtiLnBdLmQrPWEuZ1toLnBdOysrYS5jW2IuYy5wXVtiLnBdLmJ9fX1mPUJEKHZOYihiLCh3dGMoKSxzc2MpKSwxNSk7aWYoZil7Zm9yKGU9Zi5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDEwKTtpZihiLmM9PWQuYyl7bkVjKGEsZCxjKTthLmNbYi5jLnBdW2IucF0uYis9YS5jW2QuYy5wXVtkLnBdLmI7YS5jW2IuYy5wXVtiLnBdLmQrPWEuY1tkLmMucF1bZC5wXS5kfX19aWYoYS5jW2IuYy5wXVtiLnBdLmI+MCl7YS5jW2IuYy5wXVtiLnBdLmQrPUN1YihhLmksMjQpKmxrZSowLjA3MDAwMDAwMDI5ODAyMzIyLTAuMDM1MDAwMDAwMTQ5MDExNjE7YS5jW2IuYy5wXVtiLnBdLmE9YS5jW2IuYy5wXVtiLnBdLmQvYS5jW2IuYy5wXVtiLnBdLmJ9fVxuZnVuY3Rpb24gbTViKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2ZvcihvPW5ldyBvbGIoYSk7by5hPG8uYy5jLmxlbmd0aDspe249QkQobWxiKG8pLDEwKTtuNWIobi5uKTtuNWIobi5vKTtvNWIobi5mKTtyNWIobik7dDViKG4pO2ZvcihxPW5ldyBvbGIobi5qKTtxLmE8cS5jLmMubGVuZ3RoOyl7cD1CRChtbGIocSksMTEpO241YihwLm4pO241YihwLmEpO241YihwLm8pO0cwYihwLHM1YihwLmopKTtmPUJEKHZOYihwLChOeWMoKSxXeGMpKSwxOSk7ISFmJiZ5TmIocCxXeGMsbWViKC1mLmEpKTtmb3IoZT1uZXcgb2xiKHAuZyk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDE3KTtmb3IoYz1Kc2IoZC5hLDApO2MuYiE9Yy5kLmM7KXtiPUJEKFhzYihjKSw4KTtuNWIoYil9aT1CRCh2TmIoZCxqeGMpLDc0KTtpZihpKXtmb3IoaD1Kc2IoaSwwKTtoLmIhPWguZC5jOyl7Zz1CRChYc2IoaCksOCk7bjViKGcpfX1mb3IobD1uZXcgb2xiKGQuYik7bC5hPGwuYy5jLmxlbmd0aDspe2o9QkQobWxiKGwpLDcwKTtuNWIoai5uKTtuNWIoai5vKX19Zm9yKG09bmV3IG9sYihwLmYpO20uYTxtLmMuYy5sZW5ndGg7KXtqPUJEKG1sYihtKSw3MCk7bjViKGoubik7bjViKGoubyl9fWlmKG4uaz09KGowYigpLGUwYikpe3lOYihuLCh3dGMoKSxIc2MpLHM1YihCRCh2TmIobixIc2MpLDYxKSkpO3E1YihuKX1mb3Ioaz1uZXcgb2xiKG4uYik7ay5hPGsuYy5jLmxlbmd0aDspe2o9QkQobWxiKGspLDcwKTtyNWIoaik7bjViKGoubyk7bjViKGoubil9fX1cbmZ1bmN0aW9uIHlRYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBO2EuZT1iO2g9JFBiKGIpO3c9bmV3IFJrYjtmb3IoZD1uZXcgb2xiKGgpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxNSk7QT1uZXcgUmtiO3cuY1t3LmMubGVuZ3RoXT1BO2k9bmV3IFRxYjtmb3Iobz1jLktjKCk7by5PYigpOyl7bj1CRChvLlBiKCksMzMpO2Y9d1FiKGEsbix0cnVlLDAsMCk7QS5jW0EuYy5sZW5ndGhdPWY7cD1uLmk7cT1uLmo7bmV3IGY3YyhwLHEpO209KCFuLm4mJihuLm49bmV3IGNVZChEMixuLDEsNykpLG4ubik7Zm9yKGw9bmV3IEZ5ZChtKTtsLmUhPWwuaS5nYygpOyl7aj1CRChEeWQobCksMTM3KTtlPXdRYihhLGosZmFsc2UscCxxKTtBLmNbQS5jLmxlbmd0aF09ZX12PSghbi5jJiYobi5jPW5ldyBjVWQoRjIsbiw5LDkpKSxuLmMpO2ZvcihzPW5ldyBGeWQodik7cy5lIT1zLmkuZ2MoKTspe3I9QkQoRHlkKHMpLDExOCk7Zz13UWIoYSxyLGZhbHNlLHAscSk7QS5jW0EuYy5sZW5ndGhdPWc7dD1yLmkrcDt1PXIuaitxO209KCFyLm4mJihyLm49bmV3IGNVZChEMixyLDEsNykpLHIubik7Zm9yKGs9bmV3IEZ5ZChtKTtrLmUhPWsuaS5nYygpOyl7aj1CRChEeWQoayksMTM3KTtlPXdRYihhLGosZmFsc2UsdCx1KTtBLmNbQS5jLmxlbmd0aF09ZX19eWUoaSxEeChwbChPQyhHQyhLSSwxKSxVaGUsMjAsMCxbX3NkKG4pLCRzZChuKV0pKSkpfXZRYihhLGksQSl9YS5mPW5ldyBhUGIodyk7dE5iKGEuZixiKTtyZXR1cm4gYS5mfVxuZnVuY3Rpb24gS3FkKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHO0Q9T2hiKGEuZSxkKTtpZihEPT1udWxsKXtEPW5ldyBlQztuPUJEKEQsMTgzKTtzPWIrJ19zJzt0PXMrZTttPW5ldyB5Qyh0KTtjQyhuLFZ0ZSxtKX1DPUJEKEQsMTgzKTtRcGQoYyxDKTtHPW5ldyBlQztTcGQoRywneCcsZC5qKTtTcGQoRywneScsZC5rKTtjQyhDLFl0ZSxHKTtBPW5ldyBlQztTcGQoQSwneCcsZC5iKTtTcGQoQSwneScsZC5jKTtjQyhDLCdlbmRQb2ludCcsQSk7bD1GaGUoKCFkLmEmJihkLmE9bmV3IHhNZCh5MixkLDUpKSxkLmEpKTtvPSFsO2lmKG8pe3c9bmV3IHdCO2Y9bmV3IFNyZCh3KTtyZWIoKCFkLmEmJihkLmE9bmV3IHhNZCh5MixkLDUpKSxkLmEpLGYpO2NDKEMsT3RlLHcpfWk9ZG1kKGQpO3U9ISFpO3UmJlRwZChhLmEsQyxRdGUsa3FkKGEsZG1kKGQpKSk7cj1lbWQoZCk7dj0hIXI7diYmVHBkKGEuYSxDLFB0ZSxrcWQoYSxlbWQoZCkpKTtqPSghZC5lJiYoZC5lPW5ldyB5NWQoQTIsZCwxMCw5KSksZC5lKS5pPT0wO3A9IWo7aWYocCl7Qj1uZXcgd0I7Zz1uZXcgVXJkKGEsQik7cmViKCghZC5lJiYoZC5lPW5ldyB5NWQoQTIsZCwxMCw5KSksZC5lKSxnKTtjQyhDLFN0ZSxCKX1rPSghZC5nJiYoZC5nPW5ldyB5NWQoQTIsZCw5LDEwKSksZC5nKS5pPT0wO3E9IWs7aWYocSl7Rj1uZXcgd0I7aD1uZXcgV3JkKGEsRik7cmViKCghZC5nJiYoZC5nPW5ldyB5NWQoQTIsZCw5LDEwKSksZC5nKSxoKTtjQyhDLFJ0ZSxGKX19XG5mdW5jdGlvbiBlS2IoYSl7JEpiKCk7dmFyIGIsYyxkLGUsZixnLGg7ZD1hLmYubjtmb3IoZz1jaShhLnIpLmEubmMoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxMTEpO2U9MDtpZihmLmIuWGUoKFk5YygpLHM5YykpKXtlPUVkYihFRChmLmIuV2UoczljKSkpO2lmKGU8MCl7c3dpdGNoKGYuYi5IZigpLmcpe2Nhc2UgMTpkLmQ9JHduZC5NYXRoLm1heChkLmQsLWUpO2JyZWFrO2Nhc2UgMzpkLmE9JHduZC5NYXRoLm1heChkLmEsLWUpO2JyZWFrO2Nhc2UgMjpkLmM9JHduZC5NYXRoLm1heChkLmMsLWUpO2JyZWFrO2Nhc2UgNDpkLmI9JHduZC5NYXRoLm1heChkLmIsLWUpO319fWlmKHRjZChhLnUpKXtiPW5mZChmLmIsZSk7aD0hQkQoYS5lLldlKGI5YyksMTc0KS5IYygoSWRkKCksemRkKSk7Yz1mYWxzZTtzd2l0Y2goZi5iLkhmKCkuZyl7Y2FzZSAxOmM9Yj5kLmQ7ZC5kPSR3bmQuTWF0aC5tYXgoZC5kLGIpO2lmKGgmJmMpe2QuZD0kd25kLk1hdGgubWF4KGQuZCxkLmEpO2QuYT1kLmQrZX1icmVhaztjYXNlIDM6Yz1iPmQuYTtkLmE9JHduZC5NYXRoLm1heChkLmEsYik7aWYoaCYmYyl7ZC5hPSR3bmQuTWF0aC5tYXgoZC5hLGQuZCk7ZC5kPWQuYStlfWJyZWFrO2Nhc2UgMjpjPWI+ZC5jO2QuYz0kd25kLk1hdGgubWF4KGQuYyxiKTtpZihoJiZjKXtkLmM9JHduZC5NYXRoLm1heChkLmIsZC5jKTtkLmI9ZC5jK2V9YnJlYWs7Y2FzZSA0OmM9Yj5kLmI7ZC5iPSR3bmQuTWF0aC5tYXgoZC5iLGIpO2lmKGgmJmMpe2QuYj0kd25kLk1hdGgubWF4KGQuYixkLmMpO2QuYz1kLmIrZX19fX19XG5mdW5jdGlvbiBsM2IoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbDtmb3Ioaj1uZXcgb2xiKGEpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMCk7Zz1CRCh2TmIoaSwoTnljKCksbXhjKSksMTYzKTtmPW51bGw7c3dpdGNoKGcuZyl7Y2FzZSAxOmNhc2UgMjpmPShHcWMoKSxGcWMpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6Zj0oR3FjKCksRHFjKTt9aWYoZil7eU5iKGksKHd0YygpLEJzYyksKEdxYygpLEZxYykpO2Y9PURxYz9vM2IoaSxnLChLQWMoKSxIQWMpKTpmPT1GcWMmJm8zYihpLGcsKEtBYygpLElBYykpfWVsc2V7aWYoZmNkKEJEKHZOYihpLFZ4YyksOTgpKSYmaS5qLmMubGVuZ3RoIT0wKXtiPXRydWU7Zm9yKGw9bmV3IG9sYihpLmopO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxMSk7aWYoIShrLmo9PShVY2QoKSx6Y2QpJiZrLmUuYy5sZW5ndGgtay5nLmMubGVuZ3RoPjB8fGsuaj09VGNkJiZrLmUuYy5sZW5ndGgtay5nLmMubGVuZ3RoPDApKXtiPWZhbHNlO2JyZWFrfWZvcihlPW5ldyBvbGIoay5nKTtlLmE8ZS5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZSksMTcpO2g9QkQodk5iKGMuZC5pLG14YyksMTYzKTtpZihoPT0oQ3RjKCksenRjKXx8aD09QXRjKXtiPWZhbHNlO2JyZWFrfX1mb3IoZD1uZXcgb2xiKGsuZSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE3KTtoPUJEKHZOYihjLmMuaSxteGMpLDE2Myk7aWYoaD09KEN0YygpLHh0Yyl8fGg9PXl0Yyl7Yj1mYWxzZTticmVha319fWImJm8zYihpLGcsKEtBYygpLEpBYykpfX19fVxuZnVuY3Rpb24gbEpjKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3O3c9MDtuPTA7Zm9yKGw9bmV3IG9sYihiLmUpO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSwxMCk7bT0wO2g9MDtpPWM/QkQodk5iKGssaEpjKSwxOSkuYTpSaWU7cj1kP0JEKHZOYihrLGlKYyksMTkpLmE6UmllO2o9JHduZC5NYXRoLm1heChpLHIpO2Zvcih0PW5ldyBvbGIoay5qKTt0LmE8dC5jLmMubGVuZ3RoOyl7cz1CRChtbGIodCksMTEpO3U9ay5uLmIrcy5uLmIrcy5hLmI7aWYoZCl7Zm9yKGc9bmV3IG9sYihzLmcpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxNyk7cD1mLmQ7bz1wLmk7aWYoYiE9YS5hW28ucF0pe3E9JHduZC5NYXRoLm1heChCRCh2TmIobyxoSmMpLDE5KS5hLEJEKHZOYihvLGlKYyksMTkpLmEpO3Y9QkQodk5iKGYsKE55YygpLGV5YykpLDE5KS5hO2lmKHY+PWomJnY+PXEpe20rPW8ubi5iK3Aubi5iK3AuYS5iLXU7KytofX19fWlmKGMpe2ZvcihnPW5ldyBvbGIocy5lKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTcpO3A9Zi5jO289cC5pO2lmKGIhPWEuYVtvLnBdKXtxPSR3bmQuTWF0aC5tYXgoQkQodk5iKG8saEpjKSwxOSkuYSxCRCh2TmIobyxpSmMpLDE5KS5hKTt2PUJEKHZOYihmLChOeWMoKSxleWMpKSwxOSkuYTtpZih2Pj1qJiZ2Pj1xKXttKz1vLm4uYitwLm4uYitwLmEuYi11OysraH19fX19aWYoaD4wKXt3Kz1tL2g7KytufX1pZihuPjApe2IuYT1lKncvbjtiLmc9bn1lbHNle2IuYT0wO2IuZz0wfX1cbmZ1bmN0aW9uIG9NYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG07Zm9yKGU9bmV3IG9sYihhLmEuYik7ZS5hPGUuYy5jLmxlbmd0aDspe2M9QkQobWxiKGUpLDI5KTtmb3IoaT1uZXcgb2xiKGMuYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDEwKTtiLmpbaC5wXT1oO2IuaVtoLnBdPWIubz09KGVNYygpLGRNYyk/UWplOlBqZX19VWhiKGEuYyk7Zz1hLmEuYjtiLmM9PShZTGMoKSxXTGMpJiYoZz1KRChnLDE1Mik/a20oQkQoZywxNTIpKTpKRChnLDEzMSk/QkQoZywxMzEpLmE6SkQoZyw1NCk/bmV3IG92KGcpOm5ldyBkdihnKSk7VU1jKGEuZSxiLGEuYik7QWxiKGIucCxudWxsKTtmb3IoZj1nLktjKCk7Zi5PYigpOyl7Yz1CRChmLlBiKCksMjkpO2o9Yy5hO2Iubz09KGVNYygpLGRNYykmJihqPUpEKGosMTUyKT9rbShCRChqLDE1MikpOkpEKGosMTMxKT9CRChqLDEzMSkuYTpKRChqLDU0KT9uZXcgb3Yoaik6bmV3IGR2KGopKTtmb3IobT1qLktjKCk7bS5PYigpOyl7bD1CRChtLlBiKCksMTApO2IuZ1tsLnBdPT1sJiZwTWMoYSxsLGIpfX1xTWMoYSxiKTtmb3IoZD1nLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjkpO2ZvcihtPW5ldyBvbGIoYy5hKTttLmE8bS5jLmMubGVuZ3RoOyl7bD1CRChtbGIobSksMTApO2IucFtsLnBdPWIucFtiLmdbbC5wXS5wXTtpZihsPT1iLmdbbC5wXSl7az1FZGIoYi5pW2IualtsLnBdLnBdKTsoYi5vPT0oZU1jKCksZE1jKSYmaz5RamV8fGIubz09Y01jJiZrPFBqZSkmJihiLnBbbC5wXT1FZGIoYi5wW2wucF0pK2spfX19YS5lLmNnKCl9XG5mdW5jdGlvbiBQR2IoYSxiLGMsZCl7dmFyIGUsZixnLGgsaTtoPW5ldyBMSWIoYik7cktiKGgsZCk7ZT10cnVlO2lmKCEhYSYmYS5YZSgoWTljKCksejhjKSkpe2Y9QkQoYS5XZSgoWTljKCksejhjKSksMTAzKTtlPWY9PShlYWQoKSxjYWQpfHxmPT1hYWR8fGY9PWJhZH1oS2IoaCxmYWxzZSk7SGtiKGguZS53ZigpLG5ldyBtS2IoaCxmYWxzZSxlKSk7TkpiKGgsaC5mLChnSGIoKSxkSGIpLChVY2QoKSxBY2QpKTtOSmIoaCxoLmYsZkhiLFJjZCk7TkpiKGgsaC5nLGRIYixUY2QpO05KYihoLGguZyxmSGIsemNkKTtQSmIoaCxBY2QpO1BKYihoLFJjZCk7T0piKGgsemNkKTtPSmIoaCxUY2QpOyRKYigpO2c9aC5BLkhjKCh0ZGQoKSxwZGQpKSYmaC5CLkhjKChJZGQoKSxEZGQpKT9fSmIoaCk6bnVsbDshIWcmJkRIYihoLmEsZyk7ZUtiKGgpO0dKYihoKTtQS2IoaCk7QkpiKGgpO3BLYihoKTtIS2IoaCk7eEtiKGgsQWNkKTt4S2IoaCxSY2QpO0NKYihoKTtvS2IoaCk7aWYoIWMpe3JldHVybiBoLm99Y0tiKGgpO0xLYihoKTt4S2IoaCx6Y2QpO3hLYihoLFRjZCk7aT1oLkIuSGMoKElkZCgpLEVkZCkpO1JKYihoLGksQWNkKTtSSmIoaCxpLFJjZCk7U0piKGgsaSx6Y2QpO1NKYihoLGksVGNkKTtNQWIobmV3IFlBYihudWxsLG5ldyBLdWIobmV3ICRpYihoLmkpLDApKSxuZXcgVEpiKTtNQWIoSkFiKG5ldyBZQWIobnVsbCxjaShoLnIpLmEub2MoKSksbmV3IFZKYiksbmV3IFhKYik7ZEtiKGgpO2guZS51ZihoLm8pO01BYihuZXcgWUFiKG51bGwsY2koaC5yKS5hLm9jKCkpLG5ldyBmS2IpO3JldHVybiBoLm99XG5mdW5jdGlvbiBKVmIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2o9UGplO2ZvcihkPW5ldyBvbGIoYS5hLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihkKSw4MSk7aj0kd25kLk1hdGgubWluKGosYi5kLmYuZy5jK2IuZS5hKX1uPW5ldyBQc2I7Zm9yKGc9bmV3IG9sYihhLmEuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDE4OSk7Zi5pPWo7Zi5lPT0wJiYoR3NiKG4sZixuLmMuYixuLmMpLHRydWUpfXdoaWxlKG4uYiE9MCl7Zj1CRChuLmI9PTA/bnVsbDooc0NiKG4uYiE9MCksTnNiKG4sbi5hLmEpKSwxODkpO2U9Zi5mLmcuYztmb3IobT1mLmEuYS5lYygpLktjKCk7bS5PYigpOyl7az1CRChtLlBiKCksODEpO3A9Zi5pK2suZS5hO2suZC5nfHxrLmcuYzxwPyhrLm89cCk6KGsubz1rLmcuYyl9ZS09Zi5mLm87Zi5iKz1lO2EuYz09KGVhZCgpLGJhZCl8fGEuYz09XzljPyhmLmMrPWUpOihmLmMtPWUpO2ZvcihsPWYuYS5hLmVjKCkuS2MoKTtsLk9iKCk7KXtrPUJEKGwuUGIoKSw4MSk7Zm9yKGk9ay5mLktjKCk7aS5PYigpOyl7aD1CRChpLlBiKCksODEpO2ZhZChhLmMpPyhvPWEuZi5lZihrLGgpKToobz1hLmYuZmYoayxoKSk7aC5kLmk9JHduZC5NYXRoLm1heChoLmQuaSxrLm8ray5nLmIrby1oLmUuYSk7aC5rfHwoaC5kLmk9JHduZC5NYXRoLm1heChoLmQuaSxoLmcuYy1oLmUuYSkpOy0taC5kLmU7aC5kLmU9PTAmJkRzYihuLGguZCl9fX1mb3IoYz1uZXcgb2xiKGEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksODEpO2IuZy5jPWIub319XG5mdW5jdGlvbiBFTGIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtoPWEuYjtiPWEuYTtzd2l0Y2goQkQodk5iKGEsKGZGYigpLGJGYikpLDQyNykuZyl7Y2FzZSAwOk9rYihoLG5ldyB0cGIobmV3IGJNYikpO2JyZWFrO2Nhc2UgMTpkZWZhdWx0Ok9rYihoLG5ldyB0cGIobmV3IGdNYikpO31zd2l0Y2goQkQodk5iKGEsX0ViKSw0MjgpLmcpe2Nhc2UgMTpPa2IoaCxuZXcgWUxiKTtPa2IoaCxuZXcgbE1iKTtPa2IoaCxuZXcgR0xiKTticmVhaztjYXNlIDA6ZGVmYXVsdDpPa2IoaCxuZXcgWUxiKTtPa2IoaCxuZXcgUkxiKTt9c3dpdGNoKEJEKHZOYihhLGRGYiksMjUwKS5nKXtjYXNlIDA6aT1uZXcgRk1iO2JyZWFrO2Nhc2UgMTppPW5ldyB6TWI7YnJlYWs7Y2FzZSAyOmk9bmV3IENNYjticmVhaztjYXNlIDM6aT1uZXcgd01iO2JyZWFrO2Nhc2UgNTppPW5ldyBKTWIobmV3IENNYik7YnJlYWs7Y2FzZSA0Omk9bmV3IEpNYihuZXcgek1iKTticmVhaztjYXNlIDc6aT1uZXcgdE1iKG5ldyBKTWIobmV3IHpNYiksbmV3IEpNYihuZXcgQ01iKSk7YnJlYWs7Y2FzZSA4Omk9bmV3IHRNYihuZXcgSk1iKG5ldyB3TWIpLG5ldyBKTWIobmV3IENNYikpO2JyZWFrO2Nhc2UgNjpkZWZhdWx0Omk9bmV3IEpNYihuZXcgd01iKTt9Zm9yKGc9bmV3IG9sYihoKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTY3KTtkPTA7ZT0wO2M9bmV3IHZnZChtZWIoZCksbWViKGUpKTt3aGlsZShnTmIoYixmLGQsZSkpe2M9QkQoaS5DZShjLGYpLDQ2KTtkPUJEKGMuYSwxOSkuYTtlPUJEKGMuYiwxOSkuYX1kTmIoYixmLGQsZSl9fVxuZnVuY3Rpb24gcVFiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEE7Zj1hLmYuYjttPWYuYTtrPWYuYjtvPWEuZS5nO249YS5lLmY7X2tkKGEuZSxmLmEsZi5iKTt3PW0vbztBPWsvbjtmb3Ioaj1uZXcgRnlkKEtrZChhLmUpKTtqLmUhPWouaS5nYygpOyl7aT1CRChEeWQoaiksMTM3KTtkbGQoaSxpLmkqdyk7ZWxkKGksaS5qKkEpfWZvcihzPW5ldyBGeWQoWW9kKGEuZSkpO3MuZSE9cy5pLmdjKCk7KXtyPUJEKER5ZChzKSwxMTgpO3U9ci5pO3Y9ci5qO3U+MCYmZGxkKHIsdSp3KTt2PjAmJmVsZChyLHYqQSl9c3RiKGEuYixuZXcgQ1FiKTtiPW5ldyBSa2I7Zm9yKGg9bmV3IG5pYigobmV3IGVpYihhLmMpKS5hKTtoLmI7KXtnPWxpYihoKTtkPUJEKGcuY2QoKSw3OSk7Yz1CRChnLmRkKCksMzk1KS5hO2U9aXRkKGQsZmFsc2UsZmFsc2UpO2w9b1FiKGp0ZChkKSxvZmQoZSksYyk7aWZkKGwsZSk7dD1rdGQoZCk7aWYoISF0JiZKa2IoYix0LDApPT0tMSl7Yi5jW2IuYy5sZW5ndGhdPXQ7cFFiKHQsKHNDYihsLmIhPTApLEJEKGwuYS5hLmMsOCkpLGMpfX1mb3IocT1uZXcgbmliKChuZXcgZWliKGEuZCkpLmEpO3EuYjspe3A9bGliKHEpO2Q9QkQocC5jZCgpLDc5KTtjPUJEKHAuZGQoKSwzOTUpLmE7ZT1pdGQoZCxmYWxzZSxmYWxzZSk7bD1vUWIobHRkKGQpLHc3YyhvZmQoZSkpLGMpO2w9dzdjKGwpO2lmZChsLGUpO3Q9bXRkKGQpO2lmKCEhdCYmSmtiKGIsdCwwKT09LTEpe2IuY1tiLmMubGVuZ3RoXT10O3BRYih0LChzQ2IobC5iIT0wKSxCRChsLmMuYi5jLDgpKSxjKX19fVxuZnVuY3Rpb24gX1ZjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQjtpZihjLmMubGVuZ3RoIT0wKXtvPW5ldyBSa2I7Zm9yKG49bmV3IG9sYihjKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMzMpO0VrYihvLG5ldyBmN2MobS5pLG0uaikpfWQubiYmISFiJiZUZGQoZCxpNmQoYiksKHBnZCgpLG1nZCkpO3doaWxlKENWYyhhLGMpKXtBVmMoYSxjLGZhbHNlKX1kLm4mJiEhYiYmVGRkKGQsaTZkKGIpLChwZ2QoKSxtZ2QpKTtoPTA7aT0wO2U9bnVsbDtpZihjLmMubGVuZ3RoIT0wKXtlPSh0Q2IoMCxjLmMubGVuZ3RoKSxCRChjLmNbMF0sMzMpKTtoPWUuaS0odENiKDAsby5jLmxlbmd0aCksQkQoby5jWzBdLDgpKS5hO2k9ZS5qLSh0Q2IoMCxvLmMubGVuZ3RoKSxCRChvLmNbMF0sOCkpLmJ9Zz0kd25kLk1hdGguc3FydChoKmgraSppKTtsPWNWYyhjKTtmPTE7d2hpbGUobC5hLmdjKCkhPTApe2ZvcihrPWwuYS5lYygpLktjKCk7ay5PYigpOyl7aj1CRChrLlBiKCksMzMpO3A9YS5mO3E9cC5pK3AuZy8yO3I9cC5qK3AuZi8yO3M9ai5pK2ouZy8yO3Q9ai5qK2ouZi8yO3U9cy1xO3Y9dC1yO3c9JHduZC5NYXRoLnNxcnQodSp1K3Yqdik7QT11L3c7Qj12L3c7ZGxkKGosai5pK0EqZyk7ZWxkKGosai5qK0IqZyl9ZC5uJiYhIWImJlRkZChkLGk2ZChiKSwocGdkKCksbWdkKSk7bD1jVmMobmV3IFRrYihsKSk7KytmfSEhYS5hJiZhLmEubGcobmV3IFRrYihsKSk7ZC5uJiYhIWImJlRkZChkLGk2ZChiKSwocGdkKCksbWdkKSk7X1ZjKGEsYixuZXcgVGtiKGwpLGQpfX1cbmZ1bmN0aW9uICQyYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO3A9YS5uO3E9YS5vO209YS5kO2w9RWRiKEVEKHBCYyhhLChOeWMoKSxpeWMpKSkpO2lmKGIpe2s9bCooYi5nYygpLTEpO249MDtmb3IoaT1iLktjKCk7aS5PYigpOyl7Zz1CRChpLlBiKCksMTApO2srPWcuby5hO249JHduZC5NYXRoLm1heChuLGcuby5iKX1yPXAuYS0oay1xLmEpLzI7Zj1wLmItbS5kK247ZD1xLmEvKGIuZ2MoKSsxKTtlPWQ7Zm9yKGg9Yi5LYygpO2guT2IoKTspe2c9QkQoaC5QYigpLDEwKTtnLm4uYT1yO2cubi5iPWYtZy5vLmI7cis9Zy5vLmErbDtqPVkyYihnKTtqLm4uYT1nLm8uYS8yLWouYS5hO2oubi5iPWcuby5iO289QkQodk5iKGcsKHd0YygpLHZzYykpLDExKTtpZihvLmUuYy5sZW5ndGgrby5nLmMubGVuZ3RoPT0xKXtvLm4uYT1lLW8uYS5hO28ubi5iPTA7RjBiKG8sYSl9ZSs9ZH19aWYoYyl7az1sKihjLmdjKCktMSk7bj0wO2ZvcihpPWMuS2MoKTtpLk9iKCk7KXtnPUJEKGkuUGIoKSwxMCk7ays9Zy5vLmE7bj0kd25kLk1hdGgubWF4KG4sZy5vLmIpfXI9cC5hLShrLXEuYSkvMjtmPXAuYitxLmIrbS5hLW47ZD1xLmEvKGMuZ2MoKSsxKTtlPWQ7Zm9yKGg9Yy5LYygpO2guT2IoKTspe2c9QkQoaC5QYigpLDEwKTtnLm4uYT1yO2cubi5iPWY7cis9Zy5vLmErbDtqPVkyYihnKTtqLm4uYT1nLm8uYS8yLWouYS5hO2oubi5iPTA7bz1CRCh2TmIoZywod3RjKCksdnNjKSksMTEpO2lmKG8uZS5jLmxlbmd0aCtvLmcuYy5sZW5ndGg9PTEpe28ubi5hPWUtby5hLmE7by5uLmI9cS5iO0YwYihvLGEpfWUrPWR9fX1cbmZ1bmN0aW9uIHE3YihhLGIpe3ZhciBjLGQsZSxmLGcsaDtpZighQkQodk5iKGIsKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSkpe3JldHVybn1mb3IoaD1uZXcgb2xiKGIuYSk7aC5hPGguYy5jLmxlbmd0aDspe2Y9QkQobWxiKGgpLDEwKTtpZihmLms9PShqMGIoKSxoMGIpKXtlPUJEKHZOYihmLChOeWMoKSx0eGMpKSwxNDIpO2EuYz0kd25kLk1hdGgubWluKGEuYyxmLm4uYS1lLmIpO2EuYT0kd25kLk1hdGgubWF4KGEuYSxmLm4uYStmLm8uYStlLmMpO2EuZD0kd25kLk1hdGgubWluKGEuZCxmLm4uYi1lLmQpO2EuYj0kd25kLk1hdGgubWF4KGEuYixmLm4uYitmLm8uYitlLmEpfX1mb3IoZz1uZXcgb2xiKGIuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDEwKTtpZihmLmshPShqMGIoKSxoMGIpKXtzd2l0Y2goZi5rLmcpe2Nhc2UgMjpkPUJEKHZOYihmLChOeWMoKSxteGMpKSwxNjMpO2lmKGQ9PShDdGMoKSx5dGMpKXtmLm4uYT1hLmMtMTA7cDdiKGYsbmV3IHg3YikuSmIobmV3IEE3YihmKSk7YnJlYWt9aWYoZD09QXRjKXtmLm4uYT1hLmErMTA7cDdiKGYsbmV3IEQ3YikuSmIobmV3IEc3YihmKSk7YnJlYWt9Yz1CRCh2TmIoZixPc2MpLDMwMyk7aWYoYz09KGVzYygpLGRzYykpe283YihmKS5KYihuZXcgSjdiKGYpKTtmLm4uYj1hLmQtMTA7YnJlYWt9aWYoYz09YnNjKXtvN2IoZikuSmIobmV3IE03YihmKSk7Zi5uLmI9YS5iKzEwO2JyZWFrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoJ1RoZSBub2RlIHR5cGUgJytmLmsrJyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSAnK3pTKSk7fX19fVxuZnVuY3Rpb24gWTFiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2k9bmV3IGY3YyhkLmkrZC5nLzIsZC5qK2QuZi8yKTtuPU0xYihkKTtvPUJEKGhrZChiLChOeWMoKSxWeGMpKSw5OCk7cT1CRChoa2QoZCwkeGMpLDYxKTtpZighaENkKGdrZChkKSxVeGMpKXtkLmk9PTAmJmQuaj09MD8ocD0wKToocD1rZmQoZCxxKSk7amtkKGQsVXhjLHApfWo9bmV3IGY3YyhiLmcsYi5mKTtlPVokYihkLG8scSxuLGosaSxuZXcgZjdjKGQuZyxkLmYpLEJEKHZOYihjLEx3YyksMTAzKSxjKTt5TmIoZSwod3RjKCksJHNjKSxkKTtmPUJEKElrYihlLmosMCksMTEpO0UwYihmLFcxYihkKSk7eU5iKGUsWXhjLChyY2QoKSxwcWIocGNkKSkpO2w9QkQoaGtkKGIsWXhjKSwxNzQpLkhjKG5jZCk7Zm9yKGg9bmV3IEZ5ZCgoIWQubiYmKGQubj1uZXcgY1VkKEQyLGQsMSw3KSksZC5uKSk7aC5lIT1oLmkuZ2MoKTspe2c9QkQoRHlkKGgpLDEzNyk7aWYoIUNjYihERChoa2QoZyxKeGMpKSkmJiEhZy5hKXttPVoxYihnKTtFa2IoZi5mLG0pO2lmKCFsKXtrPTA7dGNkKEJEKGhrZChiLFl4YyksMjEpKSYmKGs9bWZkKG5ldyBmN2MoZy5pLGcuaiksbmV3IGY3YyhnLmcsZy5mKSxuZXcgZjdjKGQuZyxkLmYpLDAscSkpO3N3aXRjaChxLmcpe2Nhc2UgMjpjYXNlIDQ6bS5vLmE9azticmVhaztjYXNlIDE6Y2FzZSAzOm0uby5iPWs7fX19fXlOYihlLHR5YyxFRChoa2QoWG9kKGIpLHR5YykpKTt5TmIoZSx1eWMsRUQoaGtkKFhvZChiKSx1eWMpKSk7eU5iKGUscnljLEVEKGhrZChYb2QoYikscnljKSkpO0VrYihjLmEsZSk7UmhiKGEuYSxkLGUpfVxuZnVuY3Rpb24gcVVjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdjtPZGQoYywnUHJvY2Vzc29yIGFycmFuZ2UgbGV2ZWwnLDEpO2s9MDttbWIoKTtrdGIoYixuZXcgV3NkKChtVGMoKSxaU2MpKSk7Zj1iLmI7aD1Kc2IoYixiLmIpO2o9dHJ1ZTt3aGlsZShqJiZoLmIuYiE9aC5kLmEpe3I9QkQoWXNiKGgpLDg2KTtCRCh2TmIocixaU2MpLDE5KS5hPT0wPy0tZjooaj1mYWxzZSl9dj1uZXcgSmliKGIsMCxmKTtnPW5ldyBRc2Iodik7dj1uZXcgSmliKGIsZixiLmIpO2k9bmV3IFFzYih2KTtpZihnLmI9PTApe2ZvcihvPUpzYihpLDApO28uYiE9by5kLmM7KXtuPUJEKFhzYihvKSw4Nik7eU5iKG4sZVRjLG1lYihrKyspKX19ZWxzZXtsPWcuYjtmb3IodT1Kc2IoZywwKTt1LmIhPXUuZC5jOyl7dD1CRChYc2IodSksODYpO3lOYih0LGVUYyxtZWIoaysrKSk7ZD1VUmModCk7cVVjKGEsZCxVZGQoYywxL2x8MCkpO2t0YihkLHRtYihuZXcgV3NkKGVUYykpKTttPW5ldyBQc2I7Zm9yKHM9SnNiKGQsMCk7cy5iIT1zLmQuYzspe3I9QkQoWHNiKHMpLDg2KTtmb3IocT1Kc2IodC5kLDApO3EuYiE9cS5kLmM7KXtwPUJEKFhzYihxKSwxODgpO3AuYz09ciYmKEdzYihtLHAsbS5jLmIsbS5jKSx0cnVlKX19T3NiKHQuZCk7eWUodC5kLG0pO2g9SnNiKGksaS5iKTtlPXQuZC5iO2o9dHJ1ZTt3aGlsZSgwPGUmJmomJmguYi5iIT1oLmQuYSl7cj1CRChZc2IoaCksODYpO2lmKEJEKHZOYihyLFpTYyksMTkpLmE9PTApe3lOYihyLGVUYyxtZWIoaysrKSk7LS1lO1pzYihoKX1lbHNle2o9ZmFsc2V9fX19UWRkKGMpfVxuZnVuY3Rpb24gXzhiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O09kZChiLCdJbnZlcnRlZCBwb3J0IHByZXByb2Nlc3NpbmcnLDEpO2s9YS5iO2o9bmV3IEJpYihrLDApO2M9bnVsbDt0PW5ldyBSa2I7d2hpbGUoai5iPGouZC5nYygpKXtzPWM7Yz0oc0NiKGouYjxqLmQuZ2MoKSksQkQoai5kLlhiKGouYz1qLmIrKyksMjkpKTtmb3Iobj1uZXcgb2xiKHQpO24uYTxuLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihuKSwxMCk7JF9iKGwscyl9dC5jPUtDKFNJLFVoZSwxLDAsNSwxKTtmb3Iobz1uZXcgb2xiKGMuYSk7by5hPG8uYy5jLmxlbmd0aDspe2w9QkQobWxiKG8pLDEwKTtpZihsLmshPShqMGIoKSxoMGIpKXtjb250aW51ZX1pZighZmNkKEJEKHZOYihsLChOeWMoKSxWeGMpKSw5OCkpKXtjb250aW51ZX1mb3Iocj1YX2IobCwoS0FjKCksSEFjKSwoVWNkKCksemNkKSkuS2MoKTtyLk9iKCk7KXtwPUJEKHIuUGIoKSwxMSk7aT1wLmU7aD1CRChRa2IoaSxLQyhBUSxqbmUsMTcsaS5jLmxlbmd0aCwwLDEpKSw0NzQpO2ZvcihlPWgsZj0wLGc9ZS5sZW5ndGg7ZjxnOysrZil7ZD1lW2ZdO1o4YihhLHAsZCx0KX19Zm9yKHE9WF9iKGwsSUFjLFRjZCkuS2MoKTtxLk9iKCk7KXtwPUJEKHEuUGIoKSwxMSk7aT1wLmc7aD1CRChRa2IoaSxLQyhBUSxqbmUsMTcsaS5jLmxlbmd0aCwwLDEpKSw0NzQpO2ZvcihlPWgsZj0wLGc9ZS5sZW5ndGg7ZjxnOysrZil7ZD1lW2ZdOyQ4YihhLHAsZCx0KX19fX1mb3IobT1uZXcgb2xiKHQpO20uYTxtLmMuYy5sZW5ndGg7KXtsPUJEKG1sYihtKSwxMCk7JF9iKGwsYyl9UWRkKGIpfVxuZnVuY3Rpb24gXzFiKGEsYixjLGQsZSxmKXt2YXIgZyxoLGksaixrLGw7aj1uZXcgSDBiO3ROYihqLGIpO0cwYihqLEJEKGhrZChiLChOeWMoKSwkeGMpKSw2MSkpO3lOYihqLCh3dGMoKSwkc2MpLGIpO0YwYihqLGMpO2w9ai5vO2wuYT1iLmc7bC5iPWIuZjtrPWoubjtrLmE9Yi5pO2suYj1iLmo7UmhiKGEuYSxiLGopO2c9RkFiKE5BYihMQWIobmV3IFlBYihudWxsLCghYi5lJiYoYi5lPW5ldyB5NWQoQjIsYiw3LDQpKSxuZXcgS3ViKGIuZSwxNikpKSxuZXcgbTJiKSxuZXcgZTJiKSxuZXcgbzJiKGIpKTtnfHwoZz1GQWIoTkFiKExBYihuZXcgWUFiKG51bGwsKCFiLmQmJihiLmQ9bmV3IHk1ZChCMixiLDgsNSkpLG5ldyBLdWIoYi5kLDE2KSkpLG5ldyBxMmIpLG5ldyBnMmIpLG5ldyBzMmIoYikpKTtnfHwoZz1GQWIobmV3IFlBYihudWxsLCghYi5lJiYoYi5lPW5ldyB5NWQoQjIsYiw3LDQpKSxuZXcgS3ViKGIuZSwxNikpKSxuZXcgdTJiKSk7eU5iKGosTnNjLChCY2IoKSxnP3RydWU6ZmFsc2UpKTtlX2IoaixmLGUsQkQoaGtkKGIsVHhjKSw4KSk7Zm9yKGk9bmV3IEZ5ZCgoIWIubiYmKGIubj1uZXcgY1VkKEQyLGIsMSw3KSksYi5uKSk7aS5lIT1pLmkuZ2MoKTspe2g9QkQoRHlkKGkpLDEzNyk7IUNjYihERChoa2QoaCxKeGMpKSkmJiEhaC5hJiZFa2Ioai5mLFoxYihoKSl9c3dpdGNoKGUuZyl7Y2FzZSAyOmNhc2UgMTooai5qPT0oVWNkKCksQWNkKXx8ai5qPT1SY2QpJiZkLkZjKChPcmMoKSxMcmMpKTticmVhaztjYXNlIDQ6Y2FzZSAzOihqLmo9PShVY2QoKSx6Y2QpfHxqLmo9PVRjZCkmJmQuRmMoKE9yYygpLExyYykpO31yZXR1cm4gan1cbmZ1bmN0aW9uIG5RYyhhLGIsYyxkLGUsZixnKXt2YXIgaCxpLGosayxsLG0sbixvLHAscSxyLHMsdDttPW51bGw7ZD09KEZRYygpLERRYyk/KG09Yik6ZD09RVFjJiYobT1jKTtmb3IocD1tLmEuZWMoKS5LYygpO3AuT2IoKTspe289QkQocC5QYigpLDExKTtxPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtvLmkubixvLm4sby5hXSkpLmI7dD1uZXcgVHFiO2g9bmV3IFRxYjtmb3Ioaj1uZXcgYjFiKG8uYik7bGxiKGouYSl8fGxsYihqLmIpOyl7aT1CRChsbGIoai5hKT9tbGIoai5hKTptbGIoai5iKSwxNyk7aWYoQ2NiKEREKHZOYihpLCh3dGMoKSxsdGMpKSkpIT1lKXtjb250aW51ZX1pZihKa2IoZixpLDApIT0tMSl7aS5kPT1vPyhyPWkuYyk6KHI9aS5kKTtzPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtyLmkubixyLm4sci5hXSkpLmI7aWYoJHduZC5NYXRoLmFicyhzLXEpPDAuMil7Y29udGludWV9czxxP2IuYS5fYihyKT9RcWIodCxuZXcgdmdkKERRYyxpKSk6UXFiKHQsbmV3IHZnZChFUWMsaSkpOmIuYS5fYihyKT9RcWIoaCxuZXcgdmdkKERRYyxpKSk6UXFiKGgsbmV3IHZnZChFUWMsaSkpfX1pZih0LmEuZ2MoKT4xKXtuPW5ldyBaUWMobyx0LGQpO3JlYih0LG5ldyBQUWMoYSxuKSk7Zy5jW2cuYy5sZW5ndGhdPW47Zm9yKGw9dC5hLmVjKCkuS2MoKTtsLk9iKCk7KXtrPUJEKGwuUGIoKSw0Nik7TGtiKGYsay5iKX19aWYoaC5hLmdjKCk+MSl7bj1uZXcgWlFjKG8saCxkKTtyZWIoaCxuZXcgUlFjKGEsbikpO2cuY1tnLmMubGVuZ3RoXT1uO2ZvcihsPWguYS5lYygpLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksNDYpO0xrYihmLGsuYil9fX19XG5mdW5jdGlvbiAkV2MoYSl7cjRjKGEsbmV3IEUzYyhMM2MoUDNjKE0zYyhPM2MoTjNjKG5ldyBSM2Msc3JlKSwnRUxLIFJhZGlhbCcpLCdBIHJhZGlhbCBsYXlvdXQgcHJvdmlkZXIgd2hpY2ggaXMgYmFzZWQgb24gdGhlIGFsZ29yaXRobSBvZiBQZXRlciBFYWRlcyBwdWJsaXNoZWQgaW4gXCJEcmF3aW5nIGZyZWUgdHJlZXMuXCIsIHB1Ymxpc2hlZCBieSBJbnRlcm5hdGlvbmFsIEluc3RpdHV0ZSBmb3IgQWR2YW5jZWQgU3R1ZHkgb2YgU29jaWFsIEluZm9ybWF0aW9uIFNjaWVuY2UsIEZ1aml0c3UgTGltaXRlZCBpbiAxOTkxLiBUaGUgcmFkaWFsIGxheW91dGVyIHRha2VzIGEgdHJlZSBhbmQgcGxhY2VzIHRoZSBub2RlcyBpbiByYWRpYWwgb3JkZXIgYXJvdW5kIHRoZSByb290LiBUaGUgbm9kZXMgb2YgdGhlIHNhbWUgdHJlZSBsZXZlbCBhcmUgcGxhY2VkIG9uIHRoZSBzYW1lIHJhZGl1cy4nKSxuZXcgYlhjKSxzcmUpKSk7cDRjKGEsc3JlLHVxZSxLc2QoVVdjKSk7cDRjKGEsc3JlLHdtZSxLc2QoWFdjKSk7cDRjKGEsc3JlLEZtZSxLc2QoTldjKSk7cDRjKGEsc3JlLFRtZSxLc2QoT1djKSk7cDRjKGEsc3JlLEVtZSxLc2QoUFdjKSk7cDRjKGEsc3JlLEdtZSxLc2QoTVdjKSk7cDRjKGEsc3JlLERtZSxLc2QoUVdjKSk7cDRjKGEsc3JlLEhtZSxLc2QoVFdjKSk7cDRjKGEsc3JlLG9yZSxLc2QoS1djKSk7cDRjKGEsc3JlLG5yZSxLc2QoTFdjKSk7cDRjKGEsc3JlLHJyZSxLc2QoUldjKSk7cDRjKGEsc3JlLGxyZSxLc2QoU1djKSk7cDRjKGEsc3JlLG1yZSxLc2QoVldjKSk7cDRjKGEsc3JlLHByZSxLc2QoV1djKSk7cDRjKGEsc3JlLHFyZSxLc2QoWVdjKSl9XG5mdW5jdGlvbiBMSWIoYSl7dmFyIGI7dGhpcy5yPUN5KG5ldyBPSWIsbmV3IFNJYik7dGhpcy5iPW5ldyBScGIoQkQoUWIoRjEpLDI5MCkpO3RoaXMucD1uZXcgUnBiKEJEKFFiKEYxKSwyOTApKTt0aGlzLmk9bmV3IFJwYihCRChRYihETiksMjkwKSk7dGhpcy5lPWE7dGhpcy5vPW5ldyBnN2MoYS5yZigpKTt0aGlzLkQ9YS5EZigpfHxDY2IoREQoYS5XZSgoWTljKCksTThjKSkpKTt0aGlzLkE9QkQoYS5XZSgoWTljKCksWThjKSksMjEpO3RoaXMuQj1CRChhLldlKGI5YyksMjEpO3RoaXMucT1CRChhLldlKHQ5YyksOTgpO3RoaXMudT1CRChhLldlKHg5YyksMjEpO2lmKCF1Y2QodGhpcy51KSl7dGhyb3cgdmJiKG5ldyB5MmMoJ0ludmFsaWQgcG9ydCBsYWJlbCBwbGFjZW1lbnQ6ICcrdGhpcy51KSl9dGhpcy52PUNjYihERChhLldlKHo5YykpKTt0aGlzLmo9QkQoYS5XZShXOGMpLDIxKTtpZighSmJkKHRoaXMuaikpe3Rocm93IHZiYihuZXcgeTJjKCdJbnZhbGlkIG5vZGUgbGFiZWwgcGxhY2VtZW50OiAnK3RoaXMuaikpfXRoaXMubj1CRChiZ2QoYSxVOGMpLDExNik7dGhpcy5rPUVkYihFRChiZ2QoYSxROWMpKSk7dGhpcy5kPUVkYihFRChiZ2QoYSxQOWMpKSk7dGhpcy53PUVkYihFRChiZ2QoYSxYOWMpKSk7dGhpcy5zPUVkYihFRChiZ2QoYSxSOWMpKSk7dGhpcy50PUVkYihFRChiZ2QoYSxTOWMpKSk7dGhpcy5DPUJEKGJnZChhLFY5YyksMTQyKTt0aGlzLmM9Mip0aGlzLmQ7Yj0hdGhpcy5CLkhjKChJZGQoKSx6ZGQpKTt0aGlzLmY9bmV3IG1JYigwLGIsMCk7dGhpcy5nPW5ldyBtSWIoMSxiLDApO2xJYih0aGlzLmYsKGdIYigpLGVIYiksdGhpcy5nKX1cbmZ1bmN0aW9uIExnZChhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxEO3Q9MDtvPTA7bj0wO209MTtmb3Iocz1uZXcgRnlkKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkpO3MuZSE9cy5pLmdjKCk7KXtxPUJEKER5ZChzKSwzMyk7bSs9c3IobmV3IFNyKHVyKF9zZChxKS5hLktjKCksbmV3IFNxKSkpO0I9cS5nO289JHduZC5NYXRoLm1heChvLEIpO2w9cS5mO249JHduZC5NYXRoLm1heChuLGwpO3QrPUIqbH1wPSghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkuaTtnPXQrMipkKmQqbSpwO2Y9JHduZC5NYXRoLnNxcnQoZyk7aT0kd25kLk1hdGgubWF4KGYqYyxvKTtoPSR3bmQuTWF0aC5tYXgoZi9jLG4pO2ZvcihyPW5ldyBGeWQoKCFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSksYS5hKSk7ci5lIT1yLmkuZ2MoKTspe3E9QkQoRHlkKHIpLDMzKTtDPWUuYisoQ3ViKGIsMjYpKmlrZStDdWIoYiwyNykqamtlKSooaS1xLmcpO0Q9ZS5iKyhDdWIoYiwyNikqaWtlK0N1YihiLDI3KSpqa2UpKihoLXEuZik7ZGxkKHEsQyk7ZWxkKHEsRCl9QT1pKyhlLmIrZS5jKTt3PWgrKGUuZCtlLmEpO2Zvcih2PW5ldyBGeWQoKCFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSksYS5hKSk7di5lIT12LmkuZ2MoKTspe3U9QkQoRHlkKHYpLDMzKTtmb3Ioaz1uZXcgU3IodXIoX3NkKHUpLmEuS2MoKSxuZXcgU3EpKTtRcihrKTspe2o9QkQoUnIoayksNzkpO1BsZChqKXx8S2dkKGosYixBLHcpfX1BKz1lLmIrZS5jO3crPWUuZCtlLmE7QWZkKGEsQSx3LGZhbHNlLHRydWUpfVxuZnVuY3Rpb24gSmNiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGw7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBPZWIoWGhlKSl9aj1hO2Y9YS5sZW5ndGg7aT1mYWxzZTtpZihmPjApe2I9KEJDYigwLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoMCkpO2lmKGI9PTQ1fHxiPT00Myl7YT1hLnN1YnN0cigxKTstLWY7aT1iPT00NX19aWYoZj09MCl7dGhyb3cgdmJiKG5ldyBPZWIoT2plK2orJ1wiJykpfXdoaWxlKGEubGVuZ3RoPjAmJihCQ2IoMCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KDApPT00OCkpe2E9YS5zdWJzdHIoMSk7LS1mfWlmKGY+KE5lYigpLExlYilbMTBdKXt0aHJvdyB2YmIobmV3IE9lYihPamUraisnXCInKSl9Zm9yKGU9MDtlPGY7ZSsrKXtpZihaY2IoKEJDYihlLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoZSkpKT09LTEpe3Rocm93IHZiYihuZXcgT2ViKE9qZStqKydcIicpKX19bD0wO2c9SmViWzEwXTtrPUtlYlsxMF07aD1KYmIoTWViWzEwXSk7Yz10cnVlO2Q9ZiVnO2lmKGQ+MCl7bD0tcGFyc2VJbnQoYS5zdWJzdHIoMCxkKSwxMCk7YT1hLnN1YnN0cihkKTtmLT1kO2M9ZmFsc2V9d2hpbGUoZj49Zyl7ZD1wYXJzZUludChhLnN1YnN0cigwLGcpLDEwKTthPWEuc3Vic3RyKGcpO2YtPWc7aWYoYyl7Yz1mYWxzZX1lbHNle2lmKHliYihsLGgpPDApe3Rocm93IHZiYihuZXcgT2ViKE9qZStqKydcIicpKX1sPUliYihsLGspfWw9UWJiKGwsZCl9aWYoeWJiKGwsMCk+MCl7dGhyb3cgdmJiKG5ldyBPZWIoT2plK2orJ1wiJykpfWlmKCFpKXtsPUpiYihsKTtpZih5YmIobCwwKTwwKXt0aHJvdyB2YmIobmV3IE9lYihPamUraisnXCInKSl9fXJldHVybiBsfVxuZnVuY3Rpb24gWjZkKGEsYil7WDZkKCk7dmFyIGMsZCxlLGYsZyxoLGk7dGhpcy5hPW5ldyBhN2QodGhpcyk7dGhpcy5iPWE7dGhpcy5jPWI7dGhpcy5mPWMyZChxMWQoKE82ZCgpLE02ZCksYikpO2lmKHRoaXMuZi5kYygpKXtpZigoaD10MWQoTTZkLGEpKT09Yil7dGhpcy5lPXRydWU7dGhpcy5kPW5ldyBSa2I7dGhpcy5mPW5ldyBvRmQ7dGhpcy5mLkZjKEV3ZSk7QkQoVjFkKHAxZChNNmQsYktkKGEpKSwnJyksMjYpPT1hJiZ0aGlzLmYuRmModTFkKE02ZCxiS2QoYSkpKTtmb3IoZT1nMWQoTTZkLGEpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMTcwKTtzd2l0Y2goJDFkKHExZChNNmQsZCkpKXtjYXNlIDQ6e3RoaXMuZC5GYyhkKTticmVha31jYXNlIDU6e3RoaXMuZi5HYyhjMmQocTFkKE02ZCxkKSkpO2JyZWFrfX19fWVsc2V7UTZkKCk7aWYoQkQoYiw2NikuT2ooKSl7dGhpcy5lPXRydWU7dGhpcy5mPW51bGw7dGhpcy5kPW5ldyBSa2I7Zm9yKGc9MCxpPShhLmk9PW51bGwmJlRLZChhKSxhLmkpLmxlbmd0aDtnPGk7KytnKXtkPShjPShhLmk9PW51bGwmJlRLZChhKSxhLmkpLGc+PTAmJmc8Yy5sZW5ndGg/Y1tnXTpudWxsKTtmb3IoZj1fMWQocTFkKE02ZCxkKSk7ZjtmPV8xZChxMWQoTTZkLGYpKSl7Zj09YiYmdGhpcy5kLkZjKGQpfX19ZWxzZSBpZigkMWQocTFkKE02ZCxiKSk9PTEmJiEhaCl7dGhpcy5mPW51bGw7dGhpcy5kPShtOGQoKSxsOGQpfWVsc2V7dGhpcy5mPW51bGw7dGhpcy5lPXRydWU7dGhpcy5kPShtbWIoKSxuZXcgYW5iKGIpKX19fWVsc2V7dGhpcy5lPSQxZChxMWQoTTZkLGIpKT09NTt0aGlzLmYuRmIoVzZkKSYmKHRoaXMuZj1XNmQpfX1cbmZ1bmN0aW9uIHpLYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2M9MDtkPXlLYihhLGIpO209YS5zO249YS50O2ZvcihqPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7ai5PYigpOyl7aT1CRChqLlBiKCksMTExKTtpZighaS5jfHxpLmMuZC5jLmxlbmd0aDw9MCl7Y29udGludWV9bz1pLmIucmYoKTtoPWkuYi5YZSgoWTljKCksczljKSk/RWRiKEVEKGkuYi5XZShzOWMpKSk6MDtrPWkuYztsPWsuaTtsLmI9KGc9ay5uLGsuZS5hK2cuYitnLmMpO2wuYT0oZj1rLm4say5lLmIrZi5kK2YuYSk7c3dpdGNoKGIuZyl7Y2FzZSAxOmwuYz1pLmE/KG8uYS1sLmIpLzI6by5hK207bC5kPW8uYitoK2Q7JEhiKGssKE5IYigpLEtIYikpO19IYihrLChFSWIoKSxESWIpKTticmVhaztjYXNlIDM6bC5jPWkuYT8oby5hLWwuYikvMjpvLmErbTtsLmQ9LWgtZC1sLmE7JEhiKGssKE5IYigpLEtIYikpO19IYihrLChFSWIoKSxCSWIpKTticmVhaztjYXNlIDI6bC5jPS1oLWQtbC5iO2lmKGkuYSl7ZT1hLnY/bC5hOkJEKElrYihrLmQsMCksMTgxKS5yZigpLmI7bC5kPShvLmItZSkvMn1lbHNle2wuZD1vLmIrbn0kSGIoaywoTkhiKCksTUhiKSk7X0hiKGssKEVJYigpLENJYikpO2JyZWFrO2Nhc2UgNDpsLmM9by5hK2grZDtpZihpLmEpe2U9YS52P2wuYTpCRChJa2Ioay5kLDApLDE4MSkucmYoKS5iO2wuZD0oby5iLWUpLzJ9ZWxzZXtsLmQ9by5iK259JEhiKGssKE5IYigpLExIYikpO19IYihrLChFSWIoKSxDSWIpKTt9KGI9PShVY2QoKSxBY2QpfHxiPT1SY2QpJiYoYz0kd25kLk1hdGgubWF4KGMsbC5hKSl9Yz4wJiYoQkQoTXBiKGEuYixiKSwxMjQpLmEuYj1jKX1cbmZ1bmN0aW9uIGIzYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO09kZChiLCdDb21tZW50IHByZS1wcm9jZXNzaW5nJywxKTtjPTA7aT1uZXcgb2xiKGEuYSk7d2hpbGUoaS5hPGkuYy5jLmxlbmd0aCl7aD1CRChtbGIoaSksMTApO2lmKENjYihERCh2TmIoaCwoTnljKCkscHdjKSkpKSl7KytjO2U9MDtkPW51bGw7aj1udWxsO2ZvcihvPW5ldyBvbGIoaC5qKTtvLmE8by5jLmMubGVuZ3RoOyl7bT1CRChtbGIobyksMTEpO2UrPW0uZS5jLmxlbmd0aCttLmcuYy5sZW5ndGg7aWYobS5lLmMubGVuZ3RoPT0xKXtkPUJEKElrYihtLmUsMCksMTcpO2o9ZC5jfWlmKG0uZy5jLmxlbmd0aD09MSl7ZD1CRChJa2IobS5nLDApLDE3KTtqPWQuZH19aWYoZT09MSYmai5lLmMubGVuZ3RoK2ouZy5jLmxlbmd0aD09MSYmIUNjYihERCh2TmIoai5pLHB3YykpKSl7YzNiKGgsZCxqLGouaSk7bmxiKGkpfWVsc2V7cj1uZXcgUmtiO2ZvcihuPW5ldyBvbGIoaC5qKTtuLmE8bi5jLmMubGVuZ3RoOyl7bT1CRChtbGIobiksMTEpO2ZvcihsPW5ldyBvbGIobS5nKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMTcpO2suZC5nLmMubGVuZ3RoPT0wfHwoci5jW3IuYy5sZW5ndGhdPWssdHJ1ZSl9Zm9yKGc9bmV3IG9sYihtLmUpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxNyk7Zi5jLmUuYy5sZW5ndGg9PTB8fChyLmNbci5jLmxlbmd0aF09Zix0cnVlKX19Zm9yKHE9bmV3IG9sYihyKTtxLmE8cS5jLmMubGVuZ3RoOyl7cD1CRChtbGIocSksMTcpO1BaYihwLHRydWUpfX19fWIubiYmU2RkKGIsJ0ZvdW5kICcrYysnIGNvbW1lbnQgYm94ZXMnKTtRZGQoYil9XG5mdW5jdGlvbiBmOWIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO209RWRiKEVEKHZOYihhLChOeWMoKSx0eWMpKSkpO249RWRiKEVEKHZOYihhLHV5YykpKTtsPUVkYihFRCh2TmIoYSxyeWMpKSk7aD1hLm87Zj1CRChJa2IoYS5qLDApLDExKTtnPWYubjtwPWQ5YihmLGwpO2lmKCFwKXtyZXR1cm59aWYoYi5IYygocmNkKCksbmNkKSkpe3N3aXRjaChCRCh2TmIoYSwod3RjKCksSHNjKSksNjEpLmcpe2Nhc2UgMTpwLmM9KGguYS1wLmIpLzItZy5hO3AuZD1uO2JyZWFrO2Nhc2UgMzpwLmM9KGguYS1wLmIpLzItZy5hO3AuZD0tbi1wLmE7YnJlYWs7Y2FzZSAyOmlmKGMmJmYuZS5jLmxlbmd0aD09MCYmZi5nLmMubGVuZ3RoPT0wKXtrPWQ/cC5hOkJEKElrYihmLmYsMCksNzApLm8uYjtwLmQ9KGguYi1rKS8yLWcuYn1lbHNle3AuZD1oLmIrbi1nLmJ9cC5jPS1tLXAuYjticmVhaztjYXNlIDQ6aWYoYyYmZi5lLmMubGVuZ3RoPT0wJiZmLmcuYy5sZW5ndGg9PTApe2s9ZD9wLmE6QkQoSWtiKGYuZiwwKSw3MCkuby5iO3AuZD0oaC5iLWspLzItZy5ifWVsc2V7cC5kPWguYituLWcuYn1wLmM9bTt9fWVsc2UgaWYoYi5IYyhwY2QpKXtzd2l0Y2goQkQodk5iKGEsKHd0YygpLEhzYykpLDYxKS5nKXtjYXNlIDE6Y2FzZSAzOnAuYz1nLmErbTticmVhaztjYXNlIDI6Y2FzZSA0OmlmKGMmJiFmLmMpe2s9ZD9wLmE6QkQoSWtiKGYuZiwwKSw3MCkuby5iO3AuZD0oaC5iLWspLzItZy5ifWVsc2V7cC5kPWcuYitufX19ZT1wLmQ7Zm9yKGo9bmV3IG9sYihmLmYpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSw3MCk7bz1pLm47by5hPXAuYztvLmI9ZTtlKz1pLm8uYitsfX1cbmZ1bmN0aW9uIGVhZSgpe3JFZChROSxuZXcgTGFlKTtyRWQoUzksbmV3IHFiZSk7ckVkKFQ5LG5ldyBYYmUpO3JFZChVOSxuZXcgQ2NlKTtyRWQoWkksbmV3IE9jZSk7ckVkKEdDKFNELDEpLG5ldyBSY2UpO3JFZCh3SSxuZXcgVWNlKTtyRWQoeEksbmV3IFhjZSk7ckVkKFpJLG5ldyBoYWUpO3JFZChaSSxuZXcga2FlKTtyRWQoWkksbmV3IG5hZSk7ckVkKEJJLG5ldyBxYWUpO3JFZChaSSxuZXcgdGFlKTtyRWQoeUssbmV3IHdhZSk7ckVkKHlLLG5ldyB6YWUpO3JFZChaSSxuZXcgQ2FlKTtyRWQoRkksbmV3IEZhZSk7ckVkKFpJLG5ldyBJYWUpO3JFZChaSSxuZXcgT2FlKTtyRWQoWkksbmV3IFJhZSk7ckVkKFpJLG5ldyBVYWUpO3JFZChaSSxuZXcgWGFlKTtyRWQoR0MoU0QsMSksbmV3ICRhZSk7ckVkKFpJLG5ldyBiYmUpO3JFZChaSSxuZXcgZWJlKTtyRWQoeUssbmV3IGhiZSk7ckVkKHlLLG5ldyBrYmUpO3JFZChaSSxuZXcgbmJlKTtyRWQoSkksbmV3IHRiZSk7ckVkKFpJLG5ldyB3YmUpO3JFZChNSSxuZXcgemJlKTtyRWQoWkksbmV3IENiZSk7ckVkKFpJLG5ldyBGYmUpO3JFZChaSSxuZXcgSWJlKTtyRWQoWkksbmV3IExiZSk7ckVkKHlLLG5ldyBPYmUpO3JFZCh5SyxuZXcgUmJlKTtyRWQoWkksbmV3IFViZSk7ckVkKFpJLG5ldyAkYmUpO3JFZChaSSxuZXcgYmNlKTtyRWQoWkksbmV3IGVjZSk7ckVkKFpJLG5ldyBoY2UpO3JFZChaSSxuZXcga2NlKTtyRWQoVUksbmV3IG5jZSk7ckVkKFpJLG5ldyBxY2UpO3JFZChaSSxuZXcgdGNlKTtyRWQoWkksbmV3IHdjZSk7ckVkKFVJLG5ldyB6Y2UpO3JFZChNSSxuZXcgRmNlKTtyRWQoWkksbmV3IEljZSk7ckVkKEpJLG5ldyBMY2UpfVxuZnVuY3Rpb24gQm1kKGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1O249Yy5sZW5ndGg7aWYobj4wKXtqPShCQ2IoMCxjLmxlbmd0aCksYy5jaGFyQ29kZUF0KDApKTtpZihqIT02NCl7aWYoaj09Mzcpe209Yy5sYXN0SW5kZXhPZignJScpO2s9ZmFsc2U7aWYobSE9MCYmKG09PW4tMXx8KGs9KEJDYihtKzEsYy5sZW5ndGgpLGMuY2hhckNvZGVBdChtKzEpPT00NikpKSl7aD1jLnN1YnN0cigxLG0tMSk7dT1kZmIoJyUnLGgpP251bGw6UUVkKGgpO2U9MDtpZihrKXt0cnl7ZT1JY2IoYy5zdWJzdHIobSsyKSxSaWUsT2hlKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEyNykpe2k9YTt0aHJvdyB2YmIobmV3IHJGZChpKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fWZvcihyPXBSZChiLldnKCkpO3IuT2IoKTspe3A9TVJkKHIpO2lmKEpEKHAsNTEwKSl7Zj1CRChwLDU5MCk7dD1mLmQ7aWYoKHU9PW51bGw/dD09bnVsbDpkZmIodSx0KSkmJmUtLT09MCl7cmV0dXJuIGZ9fX1yZXR1cm4gbnVsbH19bD1jLmxhc3RJbmRleE9mKCcuJyk7bz1sPT0tMT9jOmMuc3Vic3RyKDAsbCk7ZD0wO2lmKGwhPS0xKXt0cnl7ZD1JY2IoYy5zdWJzdHIobCsxKSxSaWUsT2hlKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDEyNykpe289Y31lbHNlIHRocm93IHZiYihhKX19bz1kZmIoJyUnLG8pP251bGw6UUVkKG8pO2ZvcihxPXBSZChiLldnKCkpO3EuT2IoKTspe3A9TVJkKHEpO2lmKEpEKHAsMTkxKSl7Zz1CRChwLDE5MSk7cz1nLm5lKCk7aWYoKG89PW51bGw/cz09bnVsbDpkZmIobyxzKSkmJmQtLT09MCl7cmV0dXJuIGd9fX1yZXR1cm4gbnVsbH19cmV0dXJuIHJpZChiLGMpfVxuZnVuY3Rpb24gZjZiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRjt3PW5ldyBSa2I7Zm9yKG89bmV3IG9sYihhLmIpO28uYTxvLmMuYy5sZW5ndGg7KXtuPUJEKG1sYihvKSwyOSk7Zm9yKHI9bmV3IG9sYihuLmEpO3IuYTxyLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihyKSwxMCk7aWYocC5rIT0oajBiKCksZTBiKSl7Y29udGludWV9aWYoIXdOYihwLCh3dGMoKSxHc2MpKSl7Y29udGludWV9cz1udWxsO3U9bnVsbDt0PW51bGw7Zm9yKEM9bmV3IG9sYihwLmopO0MuYTxDLmMuYy5sZW5ndGg7KXtCPUJEKG1sYihDKSwxMSk7c3dpdGNoKEIuai5nKXtjYXNlIDQ6cz1CO2JyZWFrO2Nhc2UgMjp1PUI7YnJlYWs7ZGVmYXVsdDp0PUI7fX12PUJEKElrYih0LmcsMCksMTcpO2s9bmV3IHQ3Yyh2LmEpO2o9bmV3IGc3Yyh0Lm4pO1A2YyhqLHAubik7bD1Kc2IoaywwKTtWc2IobCxqKTtBPXc3Yyh2LmEpO209bmV3IGc3Yyh0Lm4pO1A2YyhtLHAubik7R3NiKEEsbSxBLmMuYixBLmMpO0Q9QkQodk5iKHAsR3NjKSwxMCk7Rj1CRChJa2IoRC5qLDApLDExKTtpPUJEKFFrYihzLmUsS0MoQVEsam5lLDE3LDAsMCwxKSksNDc0KTtmb3IoZD1pLGY9MCxoPWQubGVuZ3RoO2Y8aDsrK2Ype2I9ZFtmXTtSWmIoYixGKTtvN2MoYi5hLGIuYS5iLGspfWk9a19iKHUuZyk7Zm9yKGM9aSxlPTAsZz1jLmxlbmd0aDtlPGc7KytlKXtiPWNbZV07UVpiKGIsRik7bzdjKGIuYSwwLEEpfVFaYih2LG51bGwpO1JaYih2LG51bGwpO3cuY1t3LmMubGVuZ3RoXT1wfX1mb3IocT1uZXcgb2xiKHcpO3EuYTxxLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihxKSwxMCk7JF9iKHAsbnVsbCl9fVxuZnVuY3Rpb24gbGdiKCl7bGdiPWNjYjt2YXIgYSxiLGM7bmV3IHNnYigxLDApO25ldyBzZ2IoMTAsMCk7bmV3IHNnYigwLDApO2RnYj1LQyhiSixuaWUsMjQwLDExLDAsMSk7ZWdiPUtDKFRELCRpZSwyNSwxMDAsMTUsMSk7ZmdiPU9DKEdDKFVELDEpLFZqZSwyNSwxNSxbMSw1LDI1LDEyNSw2MjUsMzEyNSwxNTYyNSw3ODEyNSwzOTA2MjUsMTk1MzEyNSw5NzY1NjI1LDQ4ODI4MTI1LDI0NDE0MDYyNSwxMjIwNzAzMTI1LDYxMDM1MTU2MjUsMzA1MTc1NzgxMjUsMTUyNTg3ODkwNjI1LDc2MjkzOTQ1MzEyNSwzODE0Njk3MjY1NjI1LDE5MDczNDg2MzI4MTI1LDk1MzY3NDMxNjQwNjI1LDQ3NjgzNzE1ODIwMzEyNSwyMzg0MTg1NzkxMDE1NjI1XSk7Z2diPUtDKFdELG9qZSwyNSxmZ2IubGVuZ3RoLDE1LDEpO2hnYj1PQyhHQyhVRCwxKSxWamUsMjUsMTUsWzEsMTAsMTAwLF9pZSwxMDAwMCxXamUsMTAwMDAwMCwxMDAwMDAwMCwxMDAwMDAwMDAsSmplLDEwMDAwMDAwMDAwLDEwMDAwMDAwMDAwMCwxMDAwMDAwMDAwMDAwLDEwMDAwMDAwMDAwMDAwLDEwMDAwMDAwMDAwMDAwMCwxMDAwMDAwMDAwMDAwMDAwLDEwMDAwMDAwMDAwMDAwMDAwXSk7aWdiPUtDKFdELG9qZSwyNSxoZ2IubGVuZ3RoLDE1LDEpO2pnYj1LQyhiSixuaWUsMjQwLDExLDAsMSk7YT0wO2Zvcig7YTxqZ2IubGVuZ3RoO2ErKyl7ZGdiW2FdPW5ldyBzZ2IoYSwwKTtqZ2JbYV09bmV3IHNnYigwLGEpO2VnYlthXT00OH1mb3IoO2E8ZWdiLmxlbmd0aDthKyspe2VnYlthXT00OH1mb3IoYz0wO2M8Z2diLmxlbmd0aDtjKyspe2dnYltjXT11Z2IoZmdiW2NdKX1mb3IoYj0wO2I8aWdiLmxlbmd0aDtiKyspe2lnYltiXT11Z2IoaGdiW2JdKX1EaGIoKX1cbmZ1bmN0aW9uIHpyYigpe2Z1bmN0aW9uIGUoKXt0aGlzLm9iaj10aGlzLmNyZWF0ZU9iamVjdCgpfVxuO2UucHJvdG90eXBlLmNyZWF0ZU9iamVjdD1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKX07ZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9ialthXX07ZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5vYmpbYV09Yn07ZS5wcm90b3R5cGVbaGtlXT1mdW5jdGlvbihhKXtkZWxldGUgdGhpcy5vYmpbYV19O2UucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5vYmopfTtlLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5rZXlzKCk7dmFyIGM9dGhpczt2YXIgZD0wO3JldHVybiB7bmV4dDpmdW5jdGlvbigpe2lmKGQ+PWIubGVuZ3RoKXJldHVybiB7ZG9uZTp0cnVlfTt2YXIgYT1iW2QrK107cmV0dXJuIHt2YWx1ZTpbYSxjLmdldChhKV0sZG9uZTpmYWxzZX19fX07aWYoIXhyYigpKXtlLnByb3RvdHlwZS5jcmVhdGVPYmplY3Q9ZnVuY3Rpb24oKXtyZXR1cm4ge319O2UucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vYmpbJzonK2FdfTtlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXt0aGlzLm9ialsnOicrYV09Yn07ZS5wcm90b3R5cGVbaGtlXT1mdW5jdGlvbihhKXtkZWxldGUgdGhpcy5vYmpbJzonK2FdfTtlLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGE9W107Zm9yKHZhciBiIGluIHRoaXMub2JqKXtiLmNoYXJDb2RlQXQoMCk9PTU4JiZhLnB1c2goYi5zdWJzdHJpbmcoMSkpfXJldHVybiBhfX1yZXR1cm4gZX1cbmZ1bmN0aW9uIGNkZShhKXthZGUoKTt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscTtpZihhPT1udWxsKXJldHVybiBudWxsO2w9YS5sZW5ndGgqODtpZihsPT0wKXtyZXR1cm4gJyd9aD1sJTI0O249bC8yNHwwO209aCE9MD9uKzE6bjtmPW51bGw7Zj1LQyhURCwkaWUsMjUsbSo0LDE1LDEpO2o9MDtrPTA7Yj0wO2M9MDtkPTA7Zz0wO2U9MDtmb3IoaT0wO2k8bjtpKyspe2I9YVtlKytdO2M9YVtlKytdO2Q9YVtlKytdO2s9KGMmMTUpPDwyND4+MjQ7aj0oYiYzKTw8MjQ+PjI0O289KGImLTEyOCk9PTA/Yj4+Mjw8MjQ+PjI0OihiPj4yXjE5Mik8PDI0Pj4yNDtwPShjJi0xMjgpPT0wP2M+PjQ8PDI0Pj4yNDooYz4+NF4yNDApPDwyND4+MjQ7cT0oZCYtMTI4KT09MD9kPj42PDwyND4+MjQ6KGQ+PjZeMjUyKTw8MjQ+PjI0O2ZbZysrXT1fY2Vbb107ZltnKytdPV9jZVtwfGo8PDRdO2ZbZysrXT1fY2Vbazw8MnxxXTtmW2crK109X2NlW2QmNjNdfWlmKGg9PTgpe2I9YVtlXTtqPShiJjMpPDwyND4+MjQ7bz0oYiYtMTI4KT09MD9iPj4yPDwyND4+MjQ6KGI+PjJeMTkyKTw8MjQ+PjI0O2ZbZysrXT1fY2Vbb107ZltnKytdPV9jZVtqPDw0XTtmW2crK109NjE7ZltnKytdPTYxfWVsc2UgaWYoaD09MTYpe2I9YVtlXTtjPWFbZSsxXTtrPShjJjE1KTw8MjQ+PjI0O2o9KGImMyk8PDI0Pj4yNDtvPShiJi0xMjgpPT0wP2I+PjI8PDI0Pj4yNDooYj4+Ml4xOTIpPDwyND4+MjQ7cD0oYyYtMTI4KT09MD9jPj40PDwyND4+MjQ6KGM+PjReMjQwKTw8MjQ+PjI0O2ZbZysrXT1fY2Vbb107ZltnKytdPV9jZVtwfGo8PDRdO2ZbZysrXT1fY2Vbazw8Ml07ZltnKytdPTYxfXJldHVybiB6ZmIoZiwwLGYubGVuZ3RoKX1cbmZ1bmN0aW9uIG1CKGEsYil7dmFyIGMsZCxlLGYsZyxoLGk7YS5lPT0wJiZhLnA+MCYmKGEucD0tKGEucC0xKSk7YS5wPlJpZSYmZEIoYixhLnAtbmplKTtnPWIucS5nZXREYXRlKCk7WkEoYiwxKTthLms+PTAmJmFCKGIsYS5rKTtpZihhLmM+PTApe1pBKGIsYS5jKX1lbHNlIGlmKGEuaz49MCl7aT1uZXcgZkIoYi5xLmdldEZ1bGxZZWFyKCktbmplLGIucS5nZXRNb250aCgpLDM1KTtkPTM1LWkucS5nZXREYXRlKCk7WkEoYiwkd25kLk1hdGgubWluKGQsZykpfWVsc2V7WkEoYixnKX1hLmY8MCYmKGEuZj1iLnEuZ2V0SG91cnMoKSk7YS5iPjAmJmEuZjwxMiYmKGEuZis9MTIpOyRBKGIsYS5mPT0yNCYmYS5nPzA6YS5mKTthLmo+PTAmJl9BKGIsYS5qKTthLm4+PTAmJmJCKGIsYS5uKTthLmk+PTAmJmNCKGIsd2JiKEliYihBYmIoQ2JiKGIucS5nZXRUaW1lKCkpLF9pZSksX2llKSxhLmkpKTtpZihhLmEpe2U9bmV3IGVCO2RCKGUsZS5xLmdldEZ1bGxZZWFyKCktbmplLTgwKTtHYmIoQ2JiKGIucS5nZXRUaW1lKCkpLENiYihlLnEuZ2V0VGltZSgpKSkmJmRCKGIsZS5xLmdldEZ1bGxZZWFyKCktbmplKzEwMCl9aWYoYS5kPj0wKXtpZihhLmM9PS0xKXtjPSg3K2EuZC1iLnEuZ2V0RGF5KCkpJTc7Yz4zJiYoYy09Nyk7aD1iLnEuZ2V0TW9udGgoKTtaQShiLGIucS5nZXREYXRlKCkrYyk7Yi5xLmdldE1vbnRoKCkhPWgmJlpBKGIsYi5xLmdldERhdGUoKSsoYz4wPy03OjcpKX1lbHNle2lmKGIucS5nZXREYXkoKSE9YS5kKXtyZXR1cm4gZmFsc2V9fX1pZihhLm8+UmllKXtmPWIucS5nZXRUaW1lem9uZU9mZnNldCgpO2NCKGIsd2JiKENiYihiLnEuZ2V0VGltZSgpKSwoYS5vLWYpKjYwKl9pZSkpfXJldHVybiB0cnVlfVxuZnVuY3Rpb24gejJiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7ZT12TmIoYiwod3RjKCksJHNjKSk7aWYoIUpEKGUsMjM5KSl7cmV0dXJufW89QkQoZSwzMyk7cD1iLmU7bT1uZXcgZzdjKGIuYyk7Zj1iLmQ7bS5hKz1mLmI7bS5iKz1mLmQ7dT1CRChoa2QobywoTnljKCksSXhjKSksMTc0KTtpZih1cWIodSwoSWRkKCksQWRkKSkpe249QkQoaGtkKG8sS3hjKSwxMTYpO3dfYihuLGYuYSk7el9iKG4sZi5kKTt4X2IobixmLmIpO3lfYihuLGYuYyl9Yz1uZXcgUmtiO2ZvcihrPW5ldyBvbGIoYi5hKTtrLmE8ay5jLmMubGVuZ3RoOyl7aT1CRChtbGIoayksMTApO2lmKEpEKHZOYihpLCRzYyksMjM5KSl7QTJiKGksbSl9ZWxzZSBpZihKRCh2TmIoaSwkc2MpLDE4NikmJiFwKXtkPUJEKHZOYihpLCRzYyksMTE4KTtzPWJfYihiLGksZC5nLGQuZik7YmxkKGQscy5hLHMuYil9Zm9yKHI9bmV3IG9sYihpLmopO3IuYTxyLmMuYy5sZW5ndGg7KXtxPUJEKG1sYihyKSwxMSk7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihxLmcsMTYpKSxuZXcgRzJiKGkpKSxuZXcgSTJiKGMpKX19aWYocCl7Zm9yKHI9bmV3IG9sYihwLmopO3IuYTxyLmMuYy5sZW5ndGg7KXtxPUJEKG1sYihyKSwxMSk7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihxLmcsMTYpKSxuZXcgSzJiKHApKSxuZXcgTTJiKGMpKX19dD1CRChoa2QobyxTd2MpLDIxOCk7Zm9yKGg9bmV3IG9sYihjKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTcpO3kyYihnLHQsbSl9QjJiKGIpO2ZvcihqPW5ldyBvbGIoYi5hKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTApO2w9aS5lOyEhbCYmejJiKGEsbCl9fVxuZnVuY3Rpb24geFNiKGEpe3I0YyhhLG5ldyBFM2MoUTNjKEwzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyx1bWUpLCdFTEsgRm9yY2UnKSwnRm9yY2UtYmFzZWQgYWxnb3JpdGhtIHByb3ZpZGVkIGJ5IHRoZSBFY2xpcHNlIExheW91dCBLZXJuZWwuIEltcGxlbWVudHMgbWV0aG9kcyB0aGF0IGZvbGxvdyBwaHlzaWNhbCBhbmFsb2dpZXMgYnkgc2ltdWxhdGluZyBmb3JjZXMgdGhhdCBtb3ZlIHRoZSBub2RlcyBpbnRvIGEgYmFsYW5jZWQgZGlzdHJpYnV0aW9uLiBDdXJyZW50bHkgdGhlIG9yaWdpbmFsIEVhZGVzIG1vZGVsIGFuZCB0aGUgRnJ1Y2h0ZXJtYW4gLSBSZWluZ29sZCBtb2RlbCBhcmUgc3VwcG9ydGVkLicpLG5ldyBBU2IpLHVtZSkscXFiKChDc2QoKSx6c2QpLE9DKEdDKE8zLDEpLEtpZSwyMzcsMCxbeHNkXSkpKSkpO3A0YyhhLHVtZSx2bWUsbWViKDEpKTtwNGMoYSx1bWUsd21lLDgwKTtwNGMoYSx1bWUseG1lLDUpO3A0YyhhLHVtZSxfbGUsdG1lKTtwNGMoYSx1bWUseW1lLG1lYigxKSk7cDRjKGEsdW1lLHptZSwoQmNiKCksdHJ1ZSkpO3A0YyhhLHVtZSxhbWUsbFNiKTtwNGMoYSx1bWUsQW1lLEtzZChkU2IpKTtwNGMoYSx1bWUsQm1lLEtzZChtU2IpKTtwNGMoYSx1bWUsQ21lLGZhbHNlKTtwNGMoYSx1bWUsRG1lLEtzZChqU2IpKTtwNGMoYSx1bWUsRW1lLEtzZChpU2IpKTtwNGMoYSx1bWUsRm1lLEtzZChoU2IpKTtwNGMoYSx1bWUsR21lLEtzZChnU2IpKTtwNGMoYSx1bWUsSG1lLEtzZChuU2IpKTtwNGMoYSx1bWUsbW1lLEtzZChmU2IpKTtwNGMoYSx1bWUscG1lLEtzZCh2U2IpKTtwNGMoYSx1bWUsbm1lLEtzZChlU2IpKTtwNGMoYSx1bWUscm1lLEtzZChxU2IpKTtwNGMoYSx1bWUsb21lLEtzZChyU2IpKX1cbmZ1bmN0aW9uIEdLYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbjtpZihCRChCRChRYyhhLnIsYiksMjEpLDg0KS5kYygpKXtyZXR1cm59Zz1CRChNcGIoYS5iLGIpLDEyNCk7aT1nLmk7aD1nLm47az1LSWIoYSxiKTtkPWkuYi1oLmItaC5jO2U9Zy5hLmE7Zj1pLmMraC5iO249YS53O2lmKChrPT0oVGJkKCksUWJkKXx8az09U2JkKSYmQkQoQkQoUWMoYS5yLGIpLDIxKSw4NCkuZ2MoKT09MSl7ZT1rPT1RYmQ/ZS0yKmEudzplO2s9UGJkfWlmKGQ8ZSYmIWEuQi5IYygoSWRkKCksRmRkKSkpe2lmKGs9PVFiZCl7bis9KGQtZSkvKEJEKEJEKFFjKGEucixiKSwyMSksODQpLmdjKCkrMSk7Zis9bn1lbHNle24rPShkLWUpLyhCRChCRChRYyhhLnIsYiksMjEpLDg0KS5nYygpLTEpfX1lbHNle2lmKGQ8ZSl7ZT1rPT1RYmQ/ZS0yKmEudzplO2s9UGJkfXN3aXRjaChrLmcpe2Nhc2UgMzpmKz0oZC1lKS8yO2JyZWFrO2Nhc2UgNDpmKz1kLWU7YnJlYWs7Y2FzZSAwOmM9KGQtZSkvKEJEKEJEKFFjKGEucixiKSwyMSksODQpLmdjKCkrMSk7bis9JHduZC5NYXRoLm1heCgwLGMpO2YrPW47YnJlYWs7Y2FzZSAxOmM9KGQtZSkvKEJEKEJEKFFjKGEucixiKSwyMSksODQpLmdjKCktMSk7bis9JHduZC5NYXRoLm1heCgwLGMpO319Zm9yKG09QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCkuS2MoKTttLk9iKCk7KXtsPUJEKG0uUGIoKSwxMTEpO2wuZS5hPWYrbC5kLmI7bC5lLmI9KGo9bC5iLGouWGUoKFk5YygpLHM5YykpP2ouSGYoKT09KFVjZCgpLEFjZCk/LWoucmYoKS5iLUVkYihFRChqLldlKHM5YykpKTpFZGIoRUQoai5XZShzOWMpKSk6ai5IZigpPT0oVWNkKCksQWNkKT8tai5yZigpLmI6MCk7Zis9bC5kLmIrbC5iLnJmKCkuYStsLmQuYytufX1cbmZ1bmN0aW9uIEtLYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvO2lmKEJEKEJEKFFjKGEucixiKSwyMSksODQpLmRjKCkpe3JldHVybn1nPUJEKE1wYihhLmIsYiksMTI0KTtpPWcuaTtoPWcubjtsPUtJYihhLGIpO2Q9aS5hLWguZC1oLmE7ZT1nLmEuYjtmPWkuZCtoLmQ7bz1hLnc7aj1hLm8uYTtpZigobD09KFRiZCgpLFFiZCl8fGw9PVNiZCkmJkJEKEJEKFFjKGEucixiKSwyMSksODQpLmdjKCk9PTEpe2U9bD09UWJkP2UtMiphLnc6ZTtsPVBiZH1pZihkPGUmJiFhLkIuSGMoKElkZCgpLEZkZCkpKXtpZihsPT1RYmQpe28rPShkLWUpLyhCRChCRChRYyhhLnIsYiksMjEpLDg0KS5nYygpKzEpO2YrPW99ZWxzZXtvKz0oZC1lKS8oQkQoQkQoUWMoYS5yLGIpLDIxKSw4NCkuZ2MoKS0xKX19ZWxzZXtpZihkPGUpe2U9bD09UWJkP2UtMiphLnc6ZTtsPVBiZH1zd2l0Y2gobC5nKXtjYXNlIDM6Zis9KGQtZSkvMjticmVhaztjYXNlIDQ6Zis9ZC1lO2JyZWFrO2Nhc2UgMDpjPShkLWUpLyhCRChCRChRYyhhLnIsYiksMjEpLDg0KS5nYygpKzEpO28rPSR3bmQuTWF0aC5tYXgoMCxjKTtmKz1vO2JyZWFrO2Nhc2UgMTpjPShkLWUpLyhCRChCRChRYyhhLnIsYiksMjEpLDg0KS5nYygpLTEpO28rPSR3bmQuTWF0aC5tYXgoMCxjKTt9fWZvcihuPUJEKEJEKFFjKGEucixiKSwyMSksODQpLktjKCk7bi5PYigpOyl7bT1CRChuLlBiKCksMTExKTttLmUuYT0oaz1tLmIsay5YZSgoWTljKCksczljKSk/ay5IZigpPT0oVWNkKCksVGNkKT8tay5yZigpLmEtRWRiKEVEKGsuV2UoczljKSkpOmorRWRiKEVEKGsuV2UoczljKSkpOmsuSGYoKT09KFVjZCgpLFRjZCk/LWsucmYoKS5hOmopO20uZS5iPWYrbS5kLmQ7Zis9bS5kLmQrbS5iLnJmKCkuYittLmQuYStvfX1cbmZ1bmN0aW9uIEFiYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHA7YS5uPUVkYihFRCh2TmIoYS5nLChOeWMoKSx2eWMpKSkpO2EuZT1FZGIoRUQodk5iKGEuZyxweWMpKSk7YS5pPWEuZy5iLmMubGVuZ3RoO2g9YS5pLTE7bT0wO2Euaj0wO2Euaz0wO2EuYT1PdShLQyhKSSxuaWUsMTksYS5pLDAsMSkpO2EuYj1PdShLQyhCSSxuaWUsMzMzLGEuaSw3LDEpKTtmb3IoZz1uZXcgb2xiKGEuZy5iKTtnLmE8Zy5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZyksMjkpO2UucD1oO2ZvcihsPW5ldyBvbGIoZS5hKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMTApO2sucD1tOysrbX0tLWh9YS5mPUtDKFdELG9qZSwyNSxtLDE1LDEpO2EuYz1JQyhXRCxbbmllLG9qZV0sWzQ4LDI1XSwxNSxbbSwzXSwyKTthLm89bmV3IFJrYjthLnA9bmV3IFJrYjtiPTA7YS5kPTA7Zm9yKGY9bmV3IG9sYihhLmcuYik7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDI5KTtoPWUucDtkPTA7cD0wO2k9ZS5hLmMubGVuZ3RoO2o9MDtmb3IobD1uZXcgb2xiKGUuYSk7bC5hPGwuYy5jLmxlbmd0aDspe2s9QkQobWxiKGwpLDEwKTttPWsucDthLmZbbV09ay5jLnA7ais9ay5vLmIrYS5uO2M9c3IobmV3IFNyKHVyKFJfYihrKS5hLktjKCksbmV3IFNxKSkpO289c3IobmV3IFNyKHVyKFVfYihrKS5hLktjKCksbmV3IFNxKSkpO2EuY1ttXVswXT1vLWM7YS5jW21dWzFdPWM7YS5jW21dWzJdPW87ZCs9YztwKz1vO2M+MCYmRWtiKGEucCxrKTtFa2IoYS5vLGspfWItPWQ7bj1pK2I7ais9YiphLmU7TmtiKGEuYSxoLG1lYihuKSk7TmtiKGEuYixoLGopO2Euaj0kd25kLk1hdGgubWF4KGEuaixuKTthLms9JHduZC5NYXRoLm1heChhLmssaik7YS5kKz1iO2IrPXB9fVxuZnVuY3Rpb24gVWNkKCl7VWNkPWNjYjt2YXIgYTtTY2Q9bmV3IFljZChvbGUsMCk7QWNkPW5ldyBZY2QoeGxlLDEpO3pjZD1uZXcgWWNkKHlsZSwyKTtSY2Q9bmV3IFljZCh6bGUsMyk7VGNkPW5ldyBZY2QoQWxlLDQpO0ZjZD0obW1iKCksbmV3IHpvYigoYT1CRChnZGIoRjEpLDkpLG5ldyB4cWIoYSxCRChfQmIoYSxhLmxlbmd0aCksOSksMCkpKSk7R2NkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW10pKSk7QmNkPVVwKHFxYih6Y2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW10pKSk7T2NkPVVwKHFxYihSY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW10pKSk7UWNkPVVwKHFxYihUY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW10pKSk7TGNkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW1JjZF0pKSk7RWNkPVVwKHFxYih6Y2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW1RjZF0pKSk7TmNkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW1RjZF0pKSk7SGNkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW3pjZF0pKSk7UGNkPVVwKHFxYihSY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW1RjZF0pKSk7Q2NkPVVwKHFxYih6Y2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW1JjZF0pKSk7S2NkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW3pjZCxUY2RdKSkpO0RjZD1VcChxcWIoemNkLE9DKEdDKEYxLDEpLGJuZSw2MSwwLFtSY2QsVGNkXSkpKTtNY2Q9VXAocXFiKEFjZCxPQyhHQyhGMSwxKSxibmUsNjEsMCxbUmNkLFRjZF0pKSk7SWNkPVVwKHFxYihBY2QsT0MoR0MoRjEsMSksYm5lLDYxLDAsW3pjZCxSY2RdKSkpO0pjZD1VcChxcWIoQWNkLE9DKEdDKEYxLDEpLGJuZSw2MSwwLFt6Y2QsUmNkLFRjZF0pKSl9XG5mdW5jdGlvbiBmU2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQ7aWYoYi5iIT0wKXtuPW5ldyBQc2I7aD1udWxsO289bnVsbDtkPVFEKCR3bmQuTWF0aC5mbG9vcigkd25kLk1hdGgubG9nKGIuYikqJHduZC5NYXRoLkxPRzEwRSkrMSk7aT0wO2Zvcih0PUpzYihiLDApO3QuYiE9dC5kLmM7KXtyPUJEKFhzYih0KSw4Nik7aWYoUEQobykhPT1QRCh2TmIociwobVRjKCksJFNjKSkpKXtvPUdEKHZOYihyLCRTYykpO2k9MH1vIT1udWxsPyhoPW8raVNjKGkrKyxkKSk6KGg9aVNjKGkrKyxkKSk7eU5iKHIsJFNjLGgpO2ZvcihxPShlPUpzYigobmV3IFpSYyhyKSkuYS5kLDApLG5ldyBhU2MoZSkpO1dzYihxLmEpOyl7cD1CRChYc2IocS5hKSwxODgpLmM7R3NiKG4scCxuLmMuYixuLmMpO3lOYihwLCRTYyxoKX19bT1uZXcgTHFiO2ZvcihnPTA7ZzxoLmxlbmd0aC1kO2crKyl7Zm9yKHM9SnNiKGIsMCk7cy5iIT1zLmQuYzspe3I9QkQoWHNiKHMpLDg2KTtqPXFmYihHRCh2TmIociwobVRjKCksJFNjKSkpLDAsZysxKTtjPShqPT1udWxsP1dkKGlyYihtLmYsbnVsbCkpOkNyYihtLmcsaikpIT1udWxsP0JEKGo9PW51bGw/V2QoaXJiKG0uZixudWxsKSk6Q3JiKG0uZyxqKSwxOSkuYSsxOjE7U2hiKG0saixtZWIoYykpfX1mb3IobD1uZXcgbmliKChuZXcgZWliKG0pKS5hKTtsLmI7KXtrPWxpYihsKTtmPW1lYihPaGIoYS5hLGsuY2QoKSkhPW51bGw/QkQoT2hiKGEuYSxrLmNkKCkpLDE5KS5hOjApO1NoYihhLmEsR0Qoay5jZCgpKSxtZWIoQkQoay5kZCgpLDE5KS5hK2YuYSkpO2Y9QkQoT2hiKGEuYixrLmNkKCkpLDE5KTsoIWZ8fGYuYTxCRChrLmRkKCksMTkpLmEpJiZTaGIoYS5iLEdEKGsuY2QoKSksQkQoay5kZCgpLDE5KSl9ZlNjKGEsbil9fVxuZnVuY3Rpb24gUENjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHI7T2RkKGMsJ0ludGVyYWN0aXZlIG5vZGUgbGF5ZXJpbmcnLDEpO2Q9bmV3IFJrYjtmb3Iobj1uZXcgb2xiKGIuYSk7bi5hPG4uYy5jLmxlbmd0aDspe2w9QkQobWxiKG4pLDEwKTtqPWwubi5hO2k9aitsLm8uYTtpPSR3bmQuTWF0aC5tYXgoaisxLGkpO3I9bmV3IEJpYihkLDApO2U9bnVsbDt3aGlsZShyLmI8ci5kLmdjKCkpe3A9KHNDYihyLmI8ci5kLmdjKCkpLEJEKHIuZC5YYihyLmM9ci5iKyspLDU2OSkpO2lmKHAuYz49aSl7c0NiKHIuYj4wKTtyLmEuWGIoci5jPS0tci5iKTticmVha31lbHNlIGlmKHAuYT5qKXtpZighZSl7RWtiKHAuYixsKTtwLmM9JHduZC5NYXRoLm1pbihwLmMsaik7cC5hPSR3bmQuTWF0aC5tYXgocC5hLGkpO2U9cH1lbHNle0drYihlLmIscC5iKTtlLmE9JHduZC5NYXRoLm1heChlLmEscC5hKTt1aWIocil9fX1pZighZSl7ZT1uZXcgVENjO2UuYz1qO2UuYT1pO0FpYihyLGUpO0VrYihlLmIsbCl9fWg9Yi5iO2s9MDtmb3IocT1uZXcgb2xiKGQpO3EuYTxxLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihxKSw1NjkpO2Y9bmV3IEgxYihiKTtmLnA9aysrO2guY1toLmMubGVuZ3RoXT1mO2ZvcihvPW5ldyBvbGIocC5iKTtvLmE8by5jLmMubGVuZ3RoOyl7bD1CRChtbGIobyksMTApOyRfYihsLGYpO2wucD0wfX1mb3IobT1uZXcgb2xiKGIuYSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDEwKTtsLnA9PTAmJk9DYyhhLGwsYil9Zz1uZXcgQmliKGgsMCk7d2hpbGUoZy5iPGcuZC5nYygpKXsoc0NiKGcuYjxnLmQuZ2MoKSksQkQoZy5kLlhiKGcuYz1nLmIrKyksMjkpKS5hLmMubGVuZ3RoPT0wJiZ1aWIoZyl9Yi5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO1FkZChjKX1cbmZ1bmN0aW9uIFNuYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07aWYoYi5lLmMubGVuZ3RoIT0wJiZjLmUuYy5sZW5ndGghPTApe2Q9QkQoSWtiKGIuZSwwKSwxNykuYy5pO2c9QkQoSWtiKGMuZSwwKSwxNykuYy5pO2lmKGQ9PWcpe3JldHVybiBiZWIoQkQodk5iKEJEKElrYihiLmUsMCksMTcpLCh3dGMoKSxac2MpKSwxOSkuYSxCRCh2TmIoQkQoSWtiKGMuZSwwKSwxNyksWnNjKSwxOSkuYSl9Zm9yKGs9YS5hLGw9MCxtPWsubGVuZ3RoO2w8bTsrK2wpe2o9a1tsXTtpZihqPT1kKXtyZXR1cm4gMX1lbHNlIGlmKGo9PWcpe3JldHVybiAtMX19fWlmKGIuZy5jLmxlbmd0aCE9MCYmYy5nLmMubGVuZ3RoIT0wKXtmPUJEKHZOYihiLCh3dGMoKSxYc2MpKSwxMCk7aT1CRCh2TmIoYyxYc2MpLDEwKTtlPTA7aD0wO3dOYihCRChJa2IoYi5nLDApLDE3KSxac2MpJiYoZT1CRCh2TmIoQkQoSWtiKGIuZywwKSwxNyksWnNjKSwxOSkuYSk7d05iKEJEKElrYihjLmcsMCksMTcpLFpzYykmJihoPUJEKHZOYihCRChJa2IoYi5nLDApLDE3KSxac2MpLDE5KS5hKTtpZighIWYmJmY9PWkpe2lmKENjYihERCh2TmIoQkQoSWtiKGIuZywwKSwxNyksbHRjKSkpJiYhQ2NiKEREKHZOYihCRChJa2IoYy5nLDApLDE3KSxsdGMpKSkpe3JldHVybiAxfWVsc2UgaWYoIUNjYihERCh2TmIoQkQoSWtiKGIuZywwKSwxNyksbHRjKSkpJiZDY2IoREQodk5iKEJEKElrYihjLmcsMCksMTcpLGx0YykpKSl7cmV0dXJuIC0xfXJldHVybiBlPGg/LTE6ZT5oPzE6MH1pZihhLmIpe2EuYi5fYihmKSYmKGU9QkQoYS5iLnhjKGYpLDE5KS5hKTthLmIuX2IoaSkmJihoPUJEKGEuYi54YyhpKSwxOSkuYSl9cmV0dXJuIGU8aD8tMTplPmg/MTowfXJldHVybiBiLmUuYy5sZW5ndGghPTAmJmMuZy5jLmxlbmd0aCE9MD8xOi0xfVxuZnVuY3Rpb24gYWNjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEE7T2RkKGIsSW5lLDEpO3A9bmV3IFJrYjt3PW5ldyBSa2I7Zm9yKGo9bmV3IG9sYihhLmIpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwyOSk7cj0tMTtvPWxfYihpLmEpO2ZvcihsPW8sbT0wLG49bC5sZW5ndGg7bTxuOysrbSl7az1sW21dOysrcjtpZighKGsuaz09KGowYigpLGgwYikmJmZjZChCRCh2TmIoaywoTnljKCksVnhjKSksOTgpKSkpe2NvbnRpbnVlfWVjZChCRCh2TmIoaywoTnljKCksVnhjKSksOTgpKXx8YmNjKGspO3lOYihrLCh3dGMoKSxQc2MpLGspO3AuYz1LQyhTSSxVaGUsMSwwLDUsMSk7dy5jPUtDKFNJLFVoZSwxLDAsNSwxKTtjPW5ldyBSa2I7dT1uZXcgUHNiO0pxKHUsWV9iKGssKFVjZCgpLEFjZCkpKTskYmMoYSx1LHAsdyxjKTtoPXI7QT1rO2ZvcihmPW5ldyBvbGIocCk7Zi5hPGYuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGYpLDEwKTtaX2IoZCxoLGkpOysrcjt5TmIoZCxQc2Msayk7Zz1CRChJa2IoZC5qLDApLDExKTtxPUJEKHZOYihnLCRzYyksMTEpO0NjYihERCh2TmIocSxud2MpKSl8fEJEKHZOYihkLFFzYyksMTUpLkZjKEEpfU9zYih1KTtmb3IodD1ZX2IoayxSY2QpLktjKCk7dC5PYigpOyl7cz1CRCh0LlBiKCksMTEpO0dzYih1LHMsdS5hLHUuYS5hKX0kYmMoYSx1LHcsbnVsbCxjKTt2PWs7Zm9yKGU9bmV3IG9sYih3KTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTApO1pfYihkLCsrcixpKTt5TmIoZCxQc2Msayk7Zz1CRChJa2IoZC5qLDApLDExKTtxPUJEKHZOYihnLCRzYyksMTEpO0NjYihERCh2TmIocSxud2MpKSl8fEJEKHZOYih2LFFzYyksMTUpLkZjKGQpfWMuYy5sZW5ndGg9PTB8fHlOYihrLHNzYyxjKX19UWRkKGIpfVxuZnVuY3Rpb24gU1FiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEgsSTtsPUJEKHZOYihhLChIU2IoKSxGU2IpKSwzMyk7cj1PaGU7cz1PaGU7cD1SaWU7cT1SaWU7Zm9yKHU9bmV3IG9sYihhLmUpO3UuYTx1LmMuYy5sZW5ndGg7KXt0PUJEKG1sYih1KSwxNDQpO0M9dC5kO0Q9dC5lO3I9JHduZC5NYXRoLm1pbihyLEMuYS1ELmEvMik7cz0kd25kLk1hdGgubWluKHMsQy5iLUQuYi8yKTtwPSR3bmQuTWF0aC5tYXgocCxDLmErRC5hLzIpO3E9JHduZC5NYXRoLm1heChxLEMuYitELmIvMil9Qj1CRChoa2QobCwod1NiKCksa1NiKSksMTE2KTtBPW5ldyBmN2MoQi5iLXIsQi5kLXMpO2ZvcihoPW5ldyBvbGIoYS5lKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTQ0KTt3PXZOYihnLEZTYik7aWYoSkQodywyMzkpKXtuPUJEKHcsMzMpO3Y9UDZjKGcuZCxBKTtibGQobix2LmEtbi5nLzIsdi5iLW4uZi8yKX19Zm9yKGQ9bmV3IG9sYihhLmMpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwyODIpO2o9QkQodk5iKGMsRlNiKSw3OSk7az1pdGQoaix0cnVlLHRydWUpO0Y9KEg9YzdjKFI2YyhjLmQuZCksYy5jLmQpLGw2YyhILGMuYy5lLmEsYy5jLmUuYiksUDZjKEgsYy5jLmQpKTtubWQoayxGLmEsRi5iKTtiPShJPWM3YyhSNmMoYy5jLmQpLGMuZC5kKSxsNmMoSSxjLmQuZS5hLGMuZC5lLmIpLFA2YyhJLGMuZC5kKSk7Z21kKGssYi5hLGIuYil9Zm9yKGY9bmV3IG9sYihhLmQpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSw0NDcpO209QkQodk5iKGUsRlNiKSwxMzcpO289UDZjKGUuZCxBKTtibGQobSxvLmEsby5iKX1HPXAtcisoQi5iK0IuYyk7aT1xLXMrKEIuZCtCLmEpO0FmZChsLEcsaSxmYWxzZSx0cnVlKX1cbmZ1bmN0aW9uIGJtYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG07Yz1udWxsO2k9bnVsbDtlPUJEKHZOYihhLmIsKE55YygpLFd3YykpLDM3Nik7aWYoZT09KF9BYygpLFpBYykpe2M9bmV3IFJrYjtpPW5ldyBSa2J9Zm9yKGg9bmV3IG9sYihhLmQpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxMDEpO2Y9Zy5pO2lmKCFmKXtjb250aW51ZX1zd2l0Y2goZy5lLmcpe2Nhc2UgMDpiPUJEKEZxYihuZXcgR3FiKGcuYikpLDYxKTtlPT1aQWMmJmI9PShVY2QoKSxBY2QpPyhjLmNbYy5jLmxlbmd0aF09Zyx0cnVlKTplPT1aQWMmJmI9PShVY2QoKSxSY2QpPyhpLmNbaS5jLmxlbmd0aF09Zyx0cnVlKTpfbGMoZyxiKTticmVhaztjYXNlIDE6aj1nLmEuZC5qO2s9Zy5jLmQuajtqPT0oVWNkKCksQWNkKT9hbWMoZyxBY2QsKEFqYygpLHhqYyksZy5hKTprPT1BY2Q/YW1jKGcsQWNkLChBamMoKSx5amMpLGcuYyk6aj09UmNkP2FtYyhnLFJjZCwoQWpjKCkseWpjKSxnLmEpOms9PVJjZCYmYW1jKGcsUmNkLChBamMoKSx4amMpLGcuYyk7YnJlYWs7Y2FzZSAyOmNhc2UgMzpkPWcuYjt1cWIoZCwoVWNkKCksQWNkKSk/dXFiKGQsUmNkKT91cWIoZCxUY2QpP3VxYihkLHpjZCl8fGFtYyhnLEFjZCwoQWpjKCkseWpjKSxnLmMpOmFtYyhnLEFjZCwoQWpjKCkseGpjKSxnLmEpOmFtYyhnLEFjZCwoQWpjKCksd2pjKSxudWxsKTphbWMoZyxSY2QsKEFqYygpLHdqYyksbnVsbCk7YnJlYWs7Y2FzZSA0Omw9Zy5hLmQuajttPWcuYS5kLmo7bD09KFVjZCgpLEFjZCl8fG09PUFjZD9hbWMoZyxSY2QsKEFqYygpLHdqYyksbnVsbCk6YW1jKGcsQWNkLChBamMoKSx3amMpLG51bGwpO319aWYoYyl7Yy5jLmxlbmd0aD09MHx8JGxjKGMsKFVjZCgpLEFjZCkpO2kuYy5sZW5ndGg9PTB8fCRsYyhpLChVY2QoKSxSY2QpKX19XG5mdW5jdGlvbiBBMmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2Q9QkQodk5iKGEsKHd0YygpLCRzYykpLDMzKTtvPUJEKHZOYihhLChOeWMoKSxHd2MpKSwxOSkuYTtmPUJEKHZOYihhLG54YyksMTkpLmE7amtkKGQsR3djLG1lYihvKSk7amtkKGQsbnhjLG1lYihmKSk7ZGxkKGQsYS5uLmErYi5hKTtlbGQoZCxhLm4uYitiLmIpO2lmKEJEKGhrZChkLEZ4YyksMTc0KS5nYygpIT0wfHwhIWEuZXx8UEQodk5iKFFfYihhKSxFeGMpKT09PVBEKChWemMoKSxUemMpKSYmSnpjKChJemMoKSwoIWEucT8obW1iKCksbW1iKCksa21iKTphLnEpLl9iKEN4Yyk/KG09QkQodk5iKGEsQ3hjKSwxOTcpKToobT1CRCh2TmIoUV9iKGEpLER4YyksMTk3KSksbSkpKXtjbGQoZCxhLm8uYSk7YWxkKGQsYS5vLmIpfWZvcihsPW5ldyBvbGIoYS5qKTtsLmE8bC5jLmMubGVuZ3RoOyl7aj1CRChtbGIobCksMTEpO3A9dk5iKGosJHNjKTtpZihKRChwLDE4Nikpe2U9QkQocCwxMTgpO2JsZChlLGoubi5hLGoubi5iKTtqa2QoZSwkeGMsai5qKX19bj1CRCh2TmIoYSx4eGMpLDE3NCkuZ2MoKSE9MDtmb3IoaT1uZXcgb2xiKGEuYik7aS5hPGkuYy5jLmxlbmd0aDspe2c9QkQobWxiKGkpLDcwKTtpZihufHxCRCh2TmIoZyx4eGMpLDE3NCkuZ2MoKSE9MCl7Yz1CRCh2TmIoZywkc2MpLDEzNyk7X2tkKGMsZy5vLmEsZy5vLmIpO2JsZChjLGcubi5hLGcubi5iKX19aWYoIXRjZChCRCh2TmIoYSxZeGMpLDIxKSkpe2ZvcihrPW5ldyBvbGIoYS5qKTtrLmE8ay5jLmMubGVuZ3RoOyl7aj1CRChtbGIoayksMTEpO2ZvcihoPW5ldyBvbGIoai5mKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksNzApO2M9QkQodk5iKGcsJHNjKSwxMzcpO2NsZChjLGcuby5hKTthbGQoYyxnLm8uYik7YmxkKGMsZy5uLmEsZy5uLmIpfX19fVxuZnVuY3Rpb24gZ3RkKGEpe3ZhciBiLGMsZCxlLGY7eXRiKGEsaHVlKTtzd2l0Y2goKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYikuaSsoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKS5pKXtjYXNlIDA6dGhyb3cgdmJiKG5ldyBXZGIoJ1RoZSBlZGdlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgc291cmNlIG9yIHRhcmdldC4nKSk7Y2FzZSAxOnJldHVybiAoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKS5pPT0wP1hvZChhdGQoQkQocXVkKCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLDApLDgyKSkpOlhvZChhdGQoQkQocXVkKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLDApLDgyKSkpO31pZigoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKS5pPT0xJiYoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKS5pPT0xKXtlPWF0ZChCRChxdWQoKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYiksMCksODIpKTtmPWF0ZChCRChxdWQoKCFhLmMmJihhLmM9bmV3IHk1ZCh6MixhLDUsOCkpLGEuYyksMCksODIpKTtpZihYb2QoZSk9PVhvZChmKSl7cmV0dXJuIFhvZChlKX1lbHNlIGlmKGU9PVhvZChmKSl7cmV0dXJuIGV9ZWxzZSBpZihmPT1Yb2QoZSkpe3JldHVybiBmfX1kPXVsKHBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFsoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKSwoIWEuYyYmKGEuYz1uZXcgeTVkKHoyLGEsNSw4KSksYS5jKV0pKSk7Yj1hdGQoQkQoUnIoZCksODIpKTt3aGlsZShRcihkKSl7Yz1hdGQoQkQoUnIoZCksODIpKTtpZihjIT1iJiYhbnRkKGMsYikpe2lmKFhvZChjKT09WG9kKGIpKXtiPVhvZChjKX1lbHNle2I9aHRkKGIsYyk7aWYoIWIpe3JldHVybiBudWxsfX19fXJldHVybiBifVxuZnVuY3Rpb24gS05jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7T2RkKGMsJ1BvbHlsaW5lIGVkZ2Ugcm91dGluZycsMSk7cT1FZGIoRUQodk5iKGIsKE55YygpLFV3YykpKSk7bj1FZGIoRUQodk5iKGIsd3ljKSkpO2U9RWRiKEVEKHZOYihiLG15YykpKTtkPSR3bmQuTWF0aC5taW4oMSxlL24pO3Q9MDtpPTA7aWYoYi5iLmMubGVuZ3RoIT0wKXt1PUhOYyhCRChJa2IoYi5iLDApLDI5KSk7dD0wLjQqZCp1fWg9bmV3IEJpYihiLmIsMCk7d2hpbGUoaC5iPGguZC5nYygpKXtnPShzQ2IoaC5iPGguZC5nYygpKSxCRChoLmQuWGIoaC5jPWguYisrKSwyOSkpO2Y9S3EoZyxETmMpO2YmJnQ+MCYmKHQtPW4pO2hfYihnLHQpO2s9MDtmb3IobT1uZXcgb2xiKGcuYSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDEwKTtqPTA7Zm9yKHA9bmV3IFNyKHVyKFVfYihsKS5hLktjKCksbmV3IFNxKSk7UXIocCk7KXtvPUJEKFJyKHApLDE3KTtyPUEwYihvLmMpLmI7cz1BMGIoby5kKS5iO2lmKGc9PW8uZC5pLmMmJiFPWmIobykpe0xOYyhvLHQsMC40KmQqJHduZC5NYXRoLmFicyhyLXMpKTtpZihvLmMuaj09KFVjZCgpLFRjZCkpe3I9MDtzPTB9fWo9JHduZC5NYXRoLm1heChqLCR3bmQuTWF0aC5hYnMocy1yKSl9c3dpdGNoKGwuay5nKXtjYXNlIDA6Y2FzZSA0OmNhc2UgMTpjYXNlIDM6Y2FzZSA1Ok1OYyhhLGwsdCxxKTt9az0kd25kLk1hdGgubWF4KGssail9aWYoaC5iPGguZC5nYygpKXt1PUhOYygoc0NiKGguYjxoLmQuZ2MoKSksQkQoaC5kLlhiKGguYz1oLmIrKyksMjkpKSk7az0kd25kLk1hdGgubWF4KGssdSk7c0NiKGguYj4wKTtoLmEuWGIoaC5jPS0taC5iKX1pPTAuNCpkKms7IWYmJmguYjxoLmQuZ2MoKSYmKGkrPW4pO3QrPWcuYy5hK2l9YS5hLmEuJGIoKTtiLmYuYT10O1FkZChjKX1cbmZ1bmN0aW9uIGJpYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHM7az1uZXcgTHFiO2k9bmV3IEhwO2ZvcihkPW5ldyBvbGIoYS5hLmEuYik7ZC5hPGQuYy5jLmxlbmd0aDspe2I9QkQobWxiKGQpLDU3KTtqPXRnYyhiKTtpZihqKXtqcmIoay5mLGosYil9ZWxzZXtzPXVnYyhiKTtpZihzKXtmb3IoZj1uZXcgb2xiKHMuayk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDE3KTtSYyhpLGUsYil9fX19Zm9yKGM9bmV3IG9sYihhLmEuYS5iKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksNTcpO2o9dGdjKGIpO2lmKGope2ZvcihoPW5ldyBTcih1cihVX2IoaikuYS5LYygpLG5ldyBTcSkpO1FyKGgpOyl7Zz1CRChScihoKSwxNyk7aWYoT1piKGcpKXtjb250aW51ZX1vPWcuYztyPWcuZDtpZigoVWNkKCksTGNkKS5IYyhnLmMuaikmJkxjZC5IYyhnLmQuaikpe2NvbnRpbnVlfXA9QkQoT2hiKGssZy5kLmkpLDU3KTtBRmIoREZiKENGYihFRmIoQkZiKG5ldyBGRmIsMCksMTAwKSxhLmNbYi5hLmRdKSxhLmNbcC5hLmRdKSk7aWYoby5qPT1UY2QmJmwxYigoejBiKCksdzBiLG8pKSl7Zm9yKG09QkQoUWMoaSxnKSwyMSkuS2MoKTttLk9iKCk7KXtsPUJEKG0uUGIoKSw1Nyk7aWYobC5kLmM8Yi5kLmMpe249YS5jW2wuYS5kXTtxPWEuY1tiLmEuZF07aWYobj09cSl7Y29udGludWV9QUZiKERGYihDRmIoRUZiKEJGYihuZXcgRkZiLDEpLDEwMCksbikscSkpfX19aWYoci5qPT16Y2QmJmcxYigoejBiKCksdTBiLHIpKSl7Zm9yKG09QkQoUWMoaSxnKSwyMSkuS2MoKTttLk9iKCk7KXtsPUJEKG0uUGIoKSw1Nyk7aWYobC5kLmM+Yi5kLmMpe249YS5jW2IuYS5kXTtxPWEuY1tsLmEuZF07aWYobj09cSl7Y29udGludWV9QUZiKERGYihDRmIoRUZiKEJGYihuZXcgRkZiLDEpLDEwMCksbikscSkpfX19fX19fVxuZnVuY3Rpb24gUUVkKGEpe0lFZCgpO3ZhciBiLGMsZCxlLGYsZyxoLGk7aWYoYT09bnVsbClyZXR1cm4gbnVsbDtlPWhmYihhLHdmYigzNykpO2lmKGU8MCl7cmV0dXJuIGF9ZWxzZXtpPW5ldyBXZmIoYS5zdWJzdHIoMCxlKSk7Yj1LQyhTRCx3dGUsMjUsNCwxNSwxKTtoPTA7ZD0wO2ZvcihnPWEubGVuZ3RoO2U8ZztlKyspe0JDYihlLGEubGVuZ3RoKTtpZihhLmNoYXJDb2RlQXQoZSk9PTM3JiZhLmxlbmd0aD5lKzImJl9FZCgoQkNiKGUrMSxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGUrMSkpLHhFZCx5RWQpJiZfRWQoKEJDYihlKzIsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChlKzIpKSx4RWQseUVkKSl7Yz1kRmQoKEJDYihlKzEsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChlKzEpKSwoQkNiKGUrMixhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGUrMikpKTtlKz0yO2lmKGQ+MCl7KGMmMTkyKT09MTI4PyhiW2grK109Yzw8MjQ+PjI0KTooZD0wKX1lbHNlIGlmKGM+PTEyOCl7aWYoKGMmMjI0KT09MTkyKXtiW2grK109Yzw8MjQ+PjI0O2Q9Mn1lbHNlIGlmKChjJjI0MCk9PTIyNCl7YltoKytdPWM8PDI0Pj4yNDtkPTN9ZWxzZSBpZigoYyYyNDgpPT0yNDApe2JbaCsrXT1jPDwyND4+MjQ7ZD00fX1pZihkPjApe2lmKGg9PWQpe3N3aXRjaChoKXtjYXNlIDI6e0tmYihpLCgoYlswXSYzMSk8PDZ8YlsxXSY2MykmYWplKTticmVha31jYXNlIDM6e0tmYihpLCgoYlswXSYxNSk8PDEyfChiWzFdJjYzKTw8NnxiWzJdJjYzKSZhamUpO2JyZWFrfX1oPTA7ZD0wfX1lbHNle2ZvcihmPTA7ZjxoOysrZil7S2ZiKGksYltmXSZhamUpfWg9MDtpLmErPVN0cmluZy5mcm9tQ2hhckNvZGUoYyl9fWVsc2V7Zm9yKGY9MDtmPGg7KytmKXtLZmIoaSxiW2ZdJmFqZSl9aD0wO0tmYihpLChCQ2IoZSxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGUpKSl9fXJldHVybiBpLmF9fVxuZnVuY3Rpb24gd0EoYSxiLGMsZCxlKXt2YXIgZixnLGg7dUEoYSxiKTtnPWJbMF07Zj1iZmIoYy5jLDApO2g9LTE7aWYobkEoYykpe2lmKGQ+MCl7aWYoZytkPmEubGVuZ3RoKXtyZXR1cm4gZmFsc2V9aD1yQShhLnN1YnN0cigwLGcrZCksYil9ZWxzZXtoPXJBKGEsYil9fXN3aXRjaChmKXtjYXNlIDcxOmg9b0EoYSxnLE9DKEdDKFpJLDEpLG5pZSwyLDYsW3BqZSxxamVdKSxiKTtlLmU9aDtyZXR1cm4gdHJ1ZTtjYXNlIDc3OnJldHVybiB6QShhLGIsZSxoLGcpO2Nhc2UgNzY6cmV0dXJuIEJBKGEsYixlLGgsZyk7Y2FzZSA2OTpyZXR1cm4geEEoYSxiLGcsZSk7Y2FzZSA5OTpyZXR1cm4gQUEoYSxiLGcsZSk7Y2FzZSA5NzpoPW9BKGEsZyxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnQU0nLCdQTSddKSxiKTtlLmI9aDtyZXR1cm4gdHJ1ZTtjYXNlIDEyMTpyZXR1cm4gREEoYSxiLGcsaCxjLGUpO2Nhc2UgMTAwOmlmKGg8PTApe3JldHVybiBmYWxzZX1lLmM9aDtyZXR1cm4gdHJ1ZTtjYXNlIDgzOmlmKGg8MCl7cmV0dXJuIGZhbHNlfXJldHVybiB5QShoLGcsYlswXSxlKTtjYXNlIDEwNDpoPT0xMiYmKGg9MCk7Y2FzZSA3NTpjYXNlIDcyOmlmKGg8MCl7cmV0dXJuIGZhbHNlfWUuZj1oO2UuZz1mYWxzZTtyZXR1cm4gdHJ1ZTtjYXNlIDEwNzppZihoPDApe3JldHVybiBmYWxzZX1lLmY9aDtlLmc9dHJ1ZTtyZXR1cm4gdHJ1ZTtjYXNlIDEwOTppZihoPDApe3JldHVybiBmYWxzZX1lLmo9aDtyZXR1cm4gdHJ1ZTtjYXNlIDExNTppZihoPDApe3JldHVybiBmYWxzZX1lLm49aDtyZXR1cm4gdHJ1ZTtjYXNlIDkwOmlmKGc8YS5sZW5ndGgmJihCQ2IoZyxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGcpPT05MCkpeysrYlswXTtlLm89MDtyZXR1cm4gdHJ1ZX1jYXNlIDEyMjpjYXNlIDExODpyZXR1cm4gQ0EoYSxnLGIsZSk7ZGVmYXVsdDpyZXR1cm4gZmFsc2U7fX1cbmZ1bmN0aW9uIHZLYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdzttPUJEKEJEKFFjKGEucixiKSwyMSksODQpO2lmKGI9PShVY2QoKSx6Y2QpfHxiPT1UY2Qpe3pLYihhLGIpO3JldHVybn1mPWI9PUFjZD8odkxiKCksckxiKToodkxiKCksdUxiKTt1PWI9PUFjZD8oRUliKCksREliKTooRUliKCksQkliKTtjPUJEKE1wYihhLmIsYiksMTI0KTtkPWMuaTtlPWQuYyt3NmMoT0MoR0MoVUQsMSksVmplLDI1LDE1LFtjLm4uYixhLkMuYixhLmtdKSk7cj1kLmMrZC5iLXc2YyhPQyhHQyhVRCwxKSxWamUsMjUsMTUsW2Mubi5jLGEuQy5jLGEua10pKTtnPWRMYihpTGIoZiksYS50KTtzPWI9PUFjZD9RamU6UGplO2ZvcihsPW0uS2MoKTtsLk9iKCk7KXtqPUJEKGwuUGIoKSwxMTEpO2lmKCFqLmN8fGouYy5kLmMubGVuZ3RoPD0wKXtjb250aW51ZX1xPWouYi5yZigpO3A9ai5lO249ai5jO289bi5pO28uYj0oaT1uLm4sbi5lLmEraS5iK2kuYyk7by5hPShoPW4ubixuLmUuYitoLmQraC5hKTt5dGIodSxsbGUpO24uZj11OyRIYihuLChOSGIoKSxNSGIpKTtvLmM9cC5hLShvLmItcS5hKS8yO3Y9JHduZC5NYXRoLm1pbihlLHAuYSk7dz0kd25kLk1hdGgubWF4KHIscC5hK3EuYSk7by5jPHY/KG8uYz12KTpvLmMrby5iPncmJihvLmM9dy1vLmIpO0VrYihnLmQsbmV3IEJMYihvLGJMYihnLG8pKSk7cz1iPT1BY2Q/JHduZC5NYXRoLm1heChzLHAuYitqLmIucmYoKS5iKTokd25kLk1hdGgubWluKHMscC5iKX1zKz1iPT1BY2Q/YS50Oi1hLnQ7dD1jTGIoKGcuZT1zLGcpKTt0PjAmJihCRChNcGIoYS5iLGIpLDEyNCkuYS5iPXQpO2ZvcihrPW0uS2MoKTtrLk9iKCk7KXtqPUJEKGsuUGIoKSwxMTEpO2lmKCFqLmN8fGouYy5kLmMubGVuZ3RoPD0wKXtjb250aW51ZX1vPWouYy5pO28uYy09ai5lLmE7by5kLT1qLmUuYn19XG5mdW5jdGlvbiBTUGIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG47Yj1uZXcgTHFiO2ZvcihpPW5ldyBGeWQoYSk7aS5lIT1pLmkuZ2MoKTspe2g9QkQoRHlkKGkpLDMzKTtjPW5ldyBUcWI7UmhiKE9QYixoLGMpO249bmV3IGFRYjtlPUJEKEdBYihuZXcgWUFiKG51bGwsbmV3IEx1YihuZXcgU3IodXIoJHNkKGgpLmEuS2MoKSxuZXcgU3EpKSkpLFd5YihuLEJ5YihuZXcgZnpiLG5ldyBkemIsbmV3IEV6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsWyhGeWIoKSxEeWIpXSkpKSksODMpO1JQYihjLEJEKGUueGMoKEJjYigpLHRydWUpKSwxNCksbmV3IGNRYik7ZD1CRChHQWIoSkFiKEJEKGUueGMoZmFsc2UpLDE1KS5MYygpLG5ldyBlUWIpLEJ5YihuZXcgZnpiLG5ldyBkemIsbmV3IEV6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW0R5Yl0pKSksMTUpO2ZvcihnPWQuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSw3OSk7bT1rdGQoZik7aWYobSl7aj1CRChXZChpcmIoYi5mLG0pKSwyMSk7aWYoIWope2o9VVBiKG0pO2pyYihiLmYsbSxqKX15ZShjLGopfX1lPUJEKEdBYihuZXcgWUFiKG51bGwsbmV3IEx1YihuZXcgU3IodXIoX3NkKGgpLmEuS2MoKSxuZXcgU3EpKSkpLFd5YihuLEJ5YihuZXcgZnpiLG5ldyBkemIsbmV3IEV6YixPQyhHQyh4TCwxKSxLaWUsMTMyLDAsW0R5Yl0pKSkpLDgzKTtSUGIoYyxCRChlLnhjKHRydWUpLDE0KSxuZXcgZ1FiKTtkPUJEKEdBYihKQWIoQkQoZS54YyhmYWxzZSksMTUpLkxjKCksbmV3IGlRYiksQnliKG5ldyBmemIsbmV3IGR6YixuZXcgRXpiLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbRHliXSkpKSwxNSk7Zm9yKGw9ZC5LYygpO2wuT2IoKTspe2s9QkQobC5QYigpLDc5KTttPW10ZChrKTtpZihtKXtqPUJEKFdkKGlyYihiLmYsbSkpLDIxKTtpZighail7aj1VUGIobSk7anJiKGIuZixtLGopfXllKGMsail9fX19XG5mdW5jdGlvbiByaGIoYSxiKXtwaGIoKTt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2k9eWJiKGEsMCk8MDtpJiYoYT1KYmIoYSkpO2lmKHliYihhLDApPT0wKXtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAnMCc7Y2FzZSAxOnJldHVybiAkamU7Y2FzZSAyOnJldHVybiAnMC4wMCc7Y2FzZSAzOnJldHVybiAnMC4wMDAnO2Nhc2UgNDpyZXR1cm4gJzAuMDAwMCc7Y2FzZSA1OnJldHVybiAnMC4wMDAwMCc7Y2FzZSA2OnJldHVybiAnMC4wMDAwMDAnO2RlZmF1bHQ6bj1uZXcgVWZiO2I8MD8obi5hKz0nMEUrJyxuKToobi5hKz0nMEUnLG4pO24uYSs9Yj09UmllPycyMTQ3NDgzNjQ4JzonJystYjtyZXR1cm4gbi5hO319az0xODtsPUtDKFRELCRpZSwyNSxrKzEsMTUsMSk7Yz1rO3A9YTtkb3tqPXA7cD1BYmIocCwxMCk7bFstLWNdPVRiYih3YmIoNDgsUWJiKGosSWJiKHAsMTApKSkpJmFqZX13aGlsZSh5YmIocCwwKSE9MCk7ZT1RYmIoUWJiKFFiYihrLGMpLGIpLDEpO2lmKGI9PTApe2kmJihsWy0tY109NDUpO3JldHVybiB6ZmIobCxjLGstYyl9aWYoYj4wJiZ5YmIoZSwtNik+PTApe2lmKHliYihlLDApPj0wKXtmPWMrVGJiKGUpO2ZvcihoPWstMTtoPj1mO2gtLSl7bFtoKzFdPWxbaF19bFsrK2ZdPTQ2O2kmJihsWy0tY109NDUpO3JldHVybiB6ZmIobCxjLGstYysxKX1mb3IoZz0yO0diYihnLHdiYihKYmIoZSksMSkpO2crKyl7bFstLWNdPTQ4fWxbLS1jXT00NjtsWy0tY109NDg7aSYmKGxbLS1jXT00NSk7cmV0dXJuIHpmYihsLGMsay1jKX1vPWMrMTtkPWs7bT1uZXcgVmZiO2kmJihtLmErPSctJyxtKTtpZihkLW8+PTEpe0tmYihtLGxbY10pO20uYSs9Jy4nO20uYSs9emZiKGwsYysxLGstYy0xKX1lbHNle20uYSs9emZiKGwsYyxrLWMpfW0uYSs9J0UnO3liYihlLDApPjAmJihtLmErPScrJyxtKTttLmErPScnK1ViYihlKTtyZXR1cm4gbS5hfVxuZnVuY3Rpb24gaVFjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuO2EuZS5hLiRiKCk7YS5mLmEuJGIoKTthLmMuYz1LQyhTSSxVaGUsMSwwLDUsMSk7YS5pLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2EuZy5hLiRiKCk7aWYoYil7Zm9yKGc9bmV3IG9sYihiLmEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxMCk7Zm9yKGw9WV9iKGYsKFVjZCgpLHpjZCkpLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMTEpO1FxYihhLmUsayk7Zm9yKGU9bmV3IG9sYihrLmcpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7aWYoT1piKGQpKXtjb250aW51ZX1Fa2IoYS5jLGQpO29RYyhhLGQpO2g9ZC5jLmkuazsoaD09KGowYigpLGgwYil8fGg9PWkwYnx8aD09ZTBifHxoPT1kMGIpJiZFa2IoYS5qLGQpO249ZC5kO209bi5pLmM7bT09Yz9RcWIoYS5mLG4pOm09PWI/UXFiKGEuZSxuKTpMa2IoYS5jLGQpfX19fWlmKGMpe2ZvcihnPW5ldyBvbGIoYy5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTApO2ZvcihqPW5ldyBvbGIoZi5qKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTEpO2ZvcihlPW5ldyBvbGIoaS5nKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMTcpO09aYihkKSYmUXFiKGEuZyxkKX19Zm9yKGw9WV9iKGYsKFVjZCgpLFRjZCkpLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMTEpO1FxYihhLmYsayk7Zm9yKGU9bmV3IG9sYihrLmcpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7aWYoT1piKGQpKXtjb250aW51ZX1Fa2IoYS5jLGQpO29RYyhhLGQpO2g9ZC5jLmkuazsoaD09KGowYigpLGgwYil8fGg9PWkwYnx8aD09ZTBifHxoPT1kMGIpJiZFa2IoYS5qLGQpO249ZC5kO209bi5pLmM7bT09Yz9RcWIoYS5mLG4pOm09PWI/UXFiKGEuZSxuKTpMa2IoYS5jLGQpfX19fX1cbmZ1bmN0aW9uIEFmZChhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdztxPW5ldyBmN2MoYS5nLGEuZik7cD1yZmQoYSk7cC5hPSR3bmQuTWF0aC5tYXgocC5hLGIpO3AuYj0kd25kLk1hdGgubWF4KHAuYixjKTt3PXAuYS9xLmE7az1wLmIvcS5iO3U9cC5hLXEuYTtpPXAuYi1xLmI7aWYoZCl7Zz0hWG9kKGEpP0JEKGhrZChhLChZOWMoKSx6OGMpKSwxMDMpOkJEKGhrZChYb2QoYSksKFk5YygpLHo4YykpLDEwMyk7aD1QRChoa2QoYSwoWTljKCksdDljKSkpPT09UEQoKGRjZCgpLCRiZCkpO2ZvcihzPW5ldyBGeWQoKCFhLmMmJihhLmM9bmV3IGNVZChGMixhLDksOSkpLGEuYykpO3MuZSE9cy5pLmdjKCk7KXtyPUJEKER5ZChzKSwxMTgpO3Q9QkQoaGtkKHIsQTljKSw2MSk7aWYodD09KFVjZCgpLFNjZCkpe3Q9bGZkKHIsZyk7amtkKHIsQTljLHQpfXN3aXRjaCh0Lmcpe2Nhc2UgMTpofHxkbGQocixyLmkqdyk7YnJlYWs7Y2FzZSAyOmRsZChyLHIuaSt1KTtofHxlbGQocixyLmoqayk7YnJlYWs7Y2FzZSAzOmh8fGRsZChyLHIuaSp3KTtlbGQocixyLmoraSk7YnJlYWs7Y2FzZSA0Omh8fGVsZChyLHIuaiprKTt9fX1fa2QoYSxwLmEscC5iKTtpZihlKXtmb3IobT1uZXcgRnlkKCghYS5uJiYoYS5uPW5ldyBjVWQoRDIsYSwxLDcpKSxhLm4pKTttLmUhPW0uaS5nYygpOyl7bD1CRChEeWQobSksMTM3KTtuPWwuaStsLmcvMjtvPWwuaitsLmYvMjt2PW4vcS5hO2o9by9xLmI7aWYoditqPj0xKXtpZih2LWo+MCYmbz49MCl7ZGxkKGwsbC5pK3UpO2VsZChsLGwuaitpKmopfWVsc2UgaWYodi1qPDAmJm4+PTApe2RsZChsLGwuaSt1KnYpO2VsZChsLGwuaitpKX19fX1qa2QoYSwoWTljKCksWThjKSwodGRkKCksZj1CRChnZGIoSTEpLDkpLG5ldyB4cWIoZixCRChfQmIoZixmLmxlbmd0aCksOSksMCkpKTtyZXR1cm4gbmV3IGY3Yyh3LGspfVxuZnVuY3Rpb24gWWZkKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG87bj1Yb2QoYXRkKEJEKHF1ZCgoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKSwwKSw4MikpKTtvPVhvZChhdGQoQkQocXVkKCghYS5jJiYoYS5jPW5ldyB5NWQoejIsYSw1LDgpKSxhLmMpLDApLDgyKSkpO2w9bj09bztoPW5ldyBkN2M7Yj1CRChoa2QoYSwoWmFkKCksU2FkKSksNzQpO2lmKCEhYiYmYi5iPj0yKXtpZigoIWEuYSYmKGEuYT1uZXcgY1VkKEEyLGEsNiw2KSksYS5hKS5pPT0wKXtjPShGaGQoKSxlPW5ldyBybWQsZSk7d3RkKCghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLGMpfWVsc2UgaWYoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkuaT4xKXttPW5ldyBPeWQoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkpO3doaWxlKG0uZSE9bS5pLmdjKCkpe0V5ZChtKX19aWZkKGIsQkQocXVkKCghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLDApLDIwMikpfWlmKGwpe2ZvcihkPW5ldyBGeWQoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkpO2QuZSE9ZC5pLmdjKCk7KXtjPUJEKER5ZChkKSwyMDIpO2ZvcihqPW5ldyBGeWQoKCFjLmEmJihjLmE9bmV3IHhNZCh5MixjLDUpKSxjLmEpKTtqLmUhPWouaS5nYygpOyl7aT1CRChEeWQoaiksNDY5KTtoLmE9JHduZC5NYXRoLm1heChoLmEsaS5hKTtoLmI9JHduZC5NYXRoLm1heChoLmIsaS5iKX19fWZvcihnPW5ldyBGeWQoKCFhLm4mJihhLm49bmV3IGNVZChEMixhLDEsNykpLGEubikpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwxMzcpO2s9QkQoaGtkKGYsWWFkKSw4KTshIWsmJmJsZChmLGsuYSxrLmIpO2lmKGwpe2guYT0kd25kLk1hdGgubWF4KGguYSxmLmkrZi5nKTtoLmI9JHduZC5NYXRoLm1heChoLmIsZi5qK2YuZil9fXJldHVybiBofVxuZnVuY3Rpb24geU1jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQjt0PWIuYy5sZW5ndGg7ZT1uZXcgVUxjKGEuYSxjLG51bGwsbnVsbCk7Qj1LQyhVRCxWamUsMjUsdCwxNSwxKTtwPUtDKFVELFZqZSwyNSx0LDE1LDEpO289S0MoVUQsVmplLDI1LHQsMTUsMSk7cT0wO2ZvcihoPTA7aDx0O2grKyl7cFtoXT1PaGU7b1toXT1SaWV9Zm9yKGk9MDtpPHQ7aSsrKXtkPSh0Q2IoaSxiLmMubGVuZ3RoKSxCRChiLmNbaV0sMTgwKSk7QltpXT1TTGMoZCk7QltxXT5CW2ldJiYocT1pKTtmb3IobD1uZXcgb2xiKGEuYS5iKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMjkpO2ZvcihzPW5ldyBvbGIoay5hKTtzLmE8cy5jLmMubGVuZ3RoOyl7cj1CRChtbGIocyksMTApO3c9RWRiKGQucFtyLnBdKStFZGIoZC5kW3IucF0pO3BbaV09JHduZC5NYXRoLm1pbihwW2ldLHcpO29baV09JHduZC5NYXRoLm1heChvW2ldLHcrci5vLmIpfX19QT1LQyhVRCxWamUsMjUsdCwxNSwxKTtmb3Ioaj0wO2o8dDtqKyspeyh0Q2IoaixiLmMubGVuZ3RoKSxCRChiLmNbal0sMTgwKSkubz09KGVNYygpLGNNYyk/KEFbal09cFtxXS1wW2pdKTooQVtqXT1vW3FdLW9bal0pfWY9S0MoVUQsVmplLDI1LHQsMTUsMSk7Zm9yKG49bmV3IG9sYihhLmEuYik7bi5hPG4uYy5jLmxlbmd0aDspe209QkQobWxiKG4pLDI5KTtmb3Iodj1uZXcgb2xiKG0uYSk7di5hPHYuYy5jLmxlbmd0aDspe3U9QkQobWxiKHYpLDEwKTtmb3IoZz0wO2c8dDtnKyspe2ZbZ109RWRiKCh0Q2IoZyxiLmMubGVuZ3RoKSxCRChiLmNbZ10sMTgwKSkucFt1LnBdKStFZGIoKHRDYihnLGIuYy5sZW5ndGgpLEJEKGIuY1tnXSwxODApKS5kW3UucF0pK0FbZ119Zi5zb3J0KGRjYihZbGIucHJvdG90eXBlLnRlLFlsYixbXSkpO2UucFt1LnBdPShmWzFdK2ZbMl0pLzI7ZS5kW3UucF09MH19cmV0dXJuIGV9XG5mdW5jdGlvbiBHM2IoYSxiLGMpe3ZhciBkLGUsZixnLGg7ZD1iLmk7Zj1hLmkubztlPWEuaS5kO2g9YS5uO2c9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2gsYS5hXSkpO3N3aXRjaChhLmouZyl7Y2FzZSAxOl9IYihiLChFSWIoKSxCSWIpKTtkLmQ9LWUuZC1jLWQuYTtpZihCRChCRChJa2IoYi5kLDApLDE4MSkuV2UoKHd0YygpLFNzYykpLDI4NSk9PShyYmQoKSxuYmQpKXskSGIoYiwoTkhiKCksTUhiKSk7ZC5jPWcuYS1FZGIoRUQodk5iKGEsWXNjKSkpLWMtZC5ifWVsc2V7JEhiKGIsKE5IYigpLExIYikpO2QuYz1nLmErRWRiKEVEKHZOYihhLFlzYykpKStjfWJyZWFrO2Nhc2UgMjokSGIoYiwoTkhiKCksTEhiKSk7ZC5jPWYuYStlLmMrYztpZihCRChCRChJa2IoYi5kLDApLDE4MSkuV2UoKHd0YygpLFNzYykpLDI4NSk9PShyYmQoKSxuYmQpKXtfSGIoYiwoRUliKCksQkliKSk7ZC5kPWcuYi1FZGIoRUQodk5iKGEsWXNjKSkpLWMtZC5hfWVsc2V7X0hiKGIsKEVJYigpLERJYikpO2QuZD1nLmIrRWRiKEVEKHZOYihhLFlzYykpKStjfWJyZWFrO2Nhc2UgMzpfSGIoYiwoRUliKCksREliKSk7ZC5kPWYuYitlLmErYztpZihCRChCRChJa2IoYi5kLDApLDE4MSkuV2UoKHd0YygpLFNzYykpLDI4NSk9PShyYmQoKSxuYmQpKXskSGIoYiwoTkhiKCksTUhiKSk7ZC5jPWcuYS1FZGIoRUQodk5iKGEsWXNjKSkpLWMtZC5ifWVsc2V7JEhiKGIsKE5IYigpLExIYikpO2QuYz1nLmErRWRiKEVEKHZOYihhLFlzYykpKStjfWJyZWFrO2Nhc2UgNDokSGIoYiwoTkhiKCksTUhiKSk7ZC5jPS1lLmItYy1kLmI7aWYoQkQoQkQoSWtiKGIuZCwwKSwxODEpLldlKCh3dGMoKSxTc2MpKSwyODUpPT0ocmJkKCksbmJkKSl7X0hiKGIsKEVJYigpLEJJYikpO2QuZD1nLmItRWRiKEVEKHZOYihhLFlzYykpKS1jLWQuYX1lbHNle19IYihiLChFSWIoKSxESWIpKTtkLmQ9Zy5iK0VkYihFRCh2TmIoYSxZc2MpKSkrY319fVxuZnVuY3Rpb24gZGVkKGEsYixjLGQsZSxmLGcpe3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEgsSTtuPTA7RD0wO2ZvcihpPW5ldyBvbGIoYSk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDMzKTt6ZmQoaCk7bj0kd25kLk1hdGgubWF4KG4saC5nKTtEKz1oLmcqaC5mfW89RC9hLmMubGVuZ3RoO0M9JGRkKGEsbyk7RCs9YS5jLmxlbmd0aCpDO249JHduZC5NYXRoLm1heChuLCR3bmQuTWF0aC5zcXJ0KEQqZykpK2MuYjtIPWMuYjtJPWMuZDttPTA7az1jLmIrYy5jO0I9bmV3IFBzYjtEc2IoQixtZWIoMCkpO3c9bmV3IFBzYjtqPW5ldyBCaWIoYSwwKTt3aGlsZShqLmI8ai5kLmdjKCkpe2g9KHNDYihqLmI8ai5kLmdjKCkpLEJEKGouZC5YYihqLmM9ai5iKyspLDMzKSk7Rz1oLmc7bD1oLmY7aWYoSCtHPm4pe2lmKGYpe0ZzYih3LG0pO0ZzYihCLG1lYihqLmItMSkpfUg9Yy5iO0krPW0rYjttPTA7az0kd25kLk1hdGgubWF4KGssYy5iK2MuYytHKX1kbGQoaCxIKTtlbGQoaCxJKTtrPSR3bmQuTWF0aC5tYXgoayxIK0crYy5jKTttPSR3bmQuTWF0aC5tYXgobSxsKTtIKz1HK2J9az0kd25kLk1hdGgubWF4KGssZCk7Rj1JK20rYy5hO2lmKEY8ZSl7bSs9ZS1GO0Y9ZX1pZihmKXtIPWMuYjtqPW5ldyBCaWIoYSwwKTtGc2IoQixtZWIoYS5jLmxlbmd0aCkpO0E9SnNiKEIsMCk7cj1CRChYc2IoQSksMTkpLmE7RnNiKHcsbSk7dj1Kc2IodywwKTt1PTA7d2hpbGUoai5iPGouZC5nYygpKXtpZihqLmI9PXIpe0g9Yy5iO3U9RWRiKEVEKFhzYih2KSkpO3I9QkQoWHNiKEEpLDE5KS5hfWg9KHNDYihqLmI8ai5kLmdjKCkpLEJEKGouZC5YYihqLmM9ai5iKyspLDMzKSk7cz1oLmY7YWxkKGgsdSk7cD11O2lmKGouYj09cil7cT1rLUgtYy5jO3Q9aC5nO2NsZChoLHEpO0ZmZChoLG5ldyBmN2MocSxwKSxuZXcgZjdjKHQscykpfUgrPWguZytifX1yZXR1cm4gbmV3IGY3YyhrLEYpfVxuZnVuY3Rpb24gX1liKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDO09kZChiLCdDb21wb3VuZCBncmFwaCBwb3N0cHJvY2Vzc29yJywxKTtjPUNjYihERCh2TmIoYSwoTnljKCksQnljKSkpKTtoPUJEKHZOYihhLCh3dGMoKSx6c2MpKSwyMjQpO2s9bmV3IFRxYjtmb3Iocj1oLmVjKCkuS2MoKTtyLk9iKCk7KXtxPUJEKHIuUGIoKSwxNyk7Zz1uZXcgVGtiKGguY2MocSkpO21tYigpO09rYihnLG5ldyBFWmIoYSkpO3Y9elpiKCh0Q2IoMCxnLmMubGVuZ3RoKSxCRChnLmNbMF0sMjQzKSkpO0E9QVpiKEJEKElrYihnLGcuYy5sZW5ndGgtMSksMjQzKSk7dD12Lmk7Zl9iKEEuaSx0KT8ocz10LmUpOihzPVFfYih0KSk7bD1hWmIocSxnKTtPc2IocS5hKTttPW51bGw7Zm9yKGY9bmV3IG9sYihnKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMjQzKTtwPW5ldyBkN2M7WSRiKHAsZS5hLHMpO249ZS5iO2Q9bmV3IHM3YztvN2MoZCwwLG4uYSk7cTdjKGQscCk7dT1uZXcgZzdjKEEwYihuLmMpKTt3PW5ldyBnN2MoQTBiKG4uZCkpO1A2Yyh1LHApO1A2Yyh3LHApO2lmKG0pe2QuYj09MD8obz13KToobz0oc0NiKGQuYiE9MCksQkQoZC5hLmEuYyw4KSkpO0I9JHduZC5NYXRoLmFicyhtLmEtby5hKT5xbWU7Qz0kd25kLk1hdGguYWJzKG0uYi1vLmIpPnFtZTsoIWMmJkImJkN8fGMmJihCfHxDKSkmJkRzYihxLmEsdSl9eWUocS5hLGQpO2QuYj09MD8obT11KToobT0oc0NiKGQuYiE9MCksQkQoZC5jLmIuYyw4KSkpO2JaYihuLGwscCk7aWYoQVpiKGUpPT1BKXtpZihRX2IoQS5pKSE9ZS5hKXtwPW5ldyBkN2M7WSRiKHAsUV9iKEEuaSkscyl9eU5iKHEsdXRjLHApfWNaYihuLHEscyk7ay5hLnpjKG4sayl9UVpiKHEsdik7UlpiKHEsQSl9Zm9yKGo9ay5hLmVjKCkuS2MoKTtqLk9iKCk7KXtpPUJEKGouUGIoKSwxNyk7UVpiKGksbnVsbCk7UlpiKGksbnVsbCl9UWRkKGIpfVxuZnVuY3Rpb24gS1FiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7aWYoYS5nYygpPT0xKXtyZXR1cm4gQkQoYS5YYigwKSwyMzEpfWVsc2UgaWYoYS5nYygpPD0wKXtyZXR1cm4gbmV3IGtSYn1mb3IoZT1hLktjKCk7ZS5PYigpOyl7Yz1CRChlLlBiKCksMjMxKTtvPTA7az1PaGU7bD1PaGU7aT1SaWU7aj1SaWU7Zm9yKG49bmV3IG9sYihjLmUpO24uYTxuLmMuYy5sZW5ndGg7KXttPUJEKG1sYihuKSwxNDQpO28rPUJEKHZOYihtLCh3U2IoKSxvU2IpKSwxOSkuYTtrPSR3bmQuTWF0aC5taW4oayxtLmQuYS1tLmUuYS8yKTtsPSR3bmQuTWF0aC5taW4obCxtLmQuYi1tLmUuYi8yKTtpPSR3bmQuTWF0aC5tYXgoaSxtLmQuYSttLmUuYS8yKTtqPSR3bmQuTWF0aC5tYXgoaixtLmQuYittLmUuYi8yKX15TmIoYywod1NiKCksb1NiKSxtZWIobykpO3lOYihjLChIU2IoKSxFU2IpLG5ldyBmN2MoayxsKSk7eU5iKGMsRFNiLG5ldyBmN2MoaSxqKSl9bW1iKCk7YS5hZChuZXcgT1FiKTtwPW5ldyBrUmI7dE5iKHAsQkQoYS5YYigwKSw5NCkpO2g9MDtzPTA7Zm9yKGY9YS5LYygpO2YuT2IoKTspe2M9QkQoZi5QYigpLDIzMSk7cT1jN2MoUjZjKEJEKHZOYihjLChIU2IoKSxEU2IpKSw4KSksQkQodk5iKGMsRVNiKSw4KSk7aD0kd25kLk1hdGgubWF4KGgscS5hKTtzKz1xLmEqcS5ifWg9JHduZC5NYXRoLm1heChoLCR3bmQuTWF0aC5zcXJ0KHMpKkVkYihFRCh2TmIocCwod1NiKCksYlNiKSkpKSk7cj1FZGIoRUQodk5iKHAsdVNiKSkpO3Q9MDt1PTA7Zz0wO2I9cjtmb3IoZD1hLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjMxKTtxPWM3YyhSNmMoQkQodk5iKGMsKEhTYigpLERTYikpLDgpKSxCRCh2TmIoYyxFU2IpLDgpKTtpZih0K3EuYT5oKXt0PTA7dSs9ZytyO2c9MH1KUWIocCxjLHQsdSk7Yj0kd25kLk1hdGgubWF4KGIsdCtxLmEpO2c9JHduZC5NYXRoLm1heChnLHEuYik7dCs9cS5hK3J9cmV0dXJuIHB9XG5mdW5jdGlvbiBJb2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbztrPW5ldyBzN2M7c3dpdGNoKGEuYS5nKXtjYXNlIDM6bT1CRCh2TmIoYi5lLCh3dGMoKSxydGMpKSwxNSk7bj1CRCh2TmIoYi5qLHJ0YyksMTUpO289QkQodk5iKGIuZixydGMpLDE1KTtjPUJEKHZOYihiLmUscHRjKSwxNSk7ZD1CRCh2TmIoYi5qLHB0YyksMTUpO2U9QkQodk5iKGIuZixwdGMpLDE1KTtnPW5ldyBSa2I7R2tiKGcsbSk7bi5KYyhuZXcgTG9jKTtHa2IoZyxKRChuLDE1Mik/a20oQkQobiwxNTIpKTpKRChuLDEzMSk/QkQobiwxMzEpLmE6SkQobiw1NCk/bmV3IG92KG4pOm5ldyBkdihuKSk7R2tiKGcsbyk7Zj1uZXcgUmtiO0drYihmLGMpO0drYihmLEpEKGQsMTUyKT9rbShCRChkLDE1MikpOkpEKGQsMTMxKT9CRChkLDEzMSkuYTpKRChkLDU0KT9uZXcgb3YoZCk6bmV3IGR2KGQpKTtHa2IoZixlKTt5TmIoYi5mLHJ0YyxnKTt5TmIoYi5mLHB0YyxmKTt5TmIoYi5mLHN0YyxiLmYpO3lOYihiLmUscnRjLG51bGwpO3lOYihiLmUscHRjLG51bGwpO3lOYihiLmoscnRjLG51bGwpO3lOYihiLmoscHRjLG51bGwpO2JyZWFrO2Nhc2UgMTp5ZShrLGIuZS5hKTtEc2IoayxiLmkubik7eWUoayxTdShiLmouYSkpO0RzYihrLGIuYS5uKTt5ZShrLGIuZi5hKTticmVhaztkZWZhdWx0OnllKGssYi5lLmEpO3llKGssU3UoYi5qLmEpKTt5ZShrLGIuZi5hKTt9T3NiKGIuZi5hKTt5ZShiLmYuYSxrKTtRWmIoYi5mLGIuZS5jKTtoPUJEKHZOYihiLmUsKE55YygpLGp4YykpLDc0KTtqPUJEKHZOYihiLmosanhjKSw3NCk7aT1CRCh2TmIoYi5mLGp4YyksNzQpO2lmKCEhaHx8ISFqfHwhIWkpe2w9bmV3IHM3YztHb2MobCxpKTtHb2MobCxqKTtHb2MobCxoKTt5TmIoYi5mLGp4YyxsKX1RWmIoYi5qLG51bGwpO1JaYihiLmosbnVsbCk7UVpiKGIuZSxudWxsKTtSWmIoYi5lLG51bGwpOyRfYihiLmEsbnVsbCk7JF9iKGIuaSxudWxsKTshIWIuZyYmSW9jKGEsYi5nKX1cbmZ1bmN0aW9uIGJkZShhKXthZGUoKTt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscTtpZihhPT1udWxsKXJldHVybiBudWxsO2Y9cmZiKGEpO289ZWRlKGYpO2lmKG8lNCE9MCl7cmV0dXJuIG51bGx9cD1vLzR8MDtpZihwPT0wKXJldHVybiBLQyhTRCx3dGUsMjUsMCwxNSwxKTtsPW51bGw7Yj0wO2M9MDtkPTA7ZT0wO2c9MDtoPTA7aT0wO2o9MDtuPTA7bT0wO2s9MDtsPUtDKFNELHd0ZSwyNSxwKjMsMTUsMSk7Zm9yKDtuPHAtMTtuKyspe2lmKCFkZGUoZz1mW2srK10pfHwhZGRlKGg9ZltrKytdKXx8IWRkZShpPWZbaysrXSl8fCFkZGUoaj1mW2srK10pKXJldHVybiBudWxsO2I9JGNlW2ddO2M9JGNlW2hdO2Q9JGNlW2ldO2U9JGNlW2pdO2xbbSsrXT0oYjw8MnxjPj40KTw8MjQ+PjI0O2xbbSsrXT0oKGMmMTUpPDw0fGQ+PjImMTUpPDwyND4+MjQ7bFttKytdPShkPDw2fGUpPDwyND4+MjR9aWYoIWRkZShnPWZbaysrXSl8fCFkZGUoaD1mW2srK10pKXtyZXR1cm4gbnVsbH1iPSRjZVtnXTtjPSRjZVtoXTtpPWZbaysrXTtqPWZbaysrXTtpZigkY2VbaV09PS0xfHwkY2Vbal09PS0xKXtpZihpPT02MSYmaj09NjEpe2lmKChjJjE1KSE9MClyZXR1cm4gbnVsbDtxPUtDKFNELHd0ZSwyNSxuKjMrMSwxNSwxKTskZmIobCwwLHEsMCxuKjMpO3FbbV09KGI8PDJ8Yz4+NCk8PDI0Pj4yNDtyZXR1cm4gcX1lbHNlIGlmKGkhPTYxJiZqPT02MSl7ZD0kY2VbaV07aWYoKGQmMykhPTApcmV0dXJuIG51bGw7cT1LQyhTRCx3dGUsMjUsbiozKzIsMTUsMSk7JGZiKGwsMCxxLDAsbiozKTtxW20rK109KGI8PDJ8Yz4+NCk8PDI0Pj4yNDtxW21dPSgoYyYxNSk8PDR8ZD4+MiYxNSk8PDI0Pj4yNDtyZXR1cm4gcX1lbHNle3JldHVybiBudWxsfX1lbHNle2Q9JGNlW2ldO2U9JGNlW2pdO2xbbSsrXT0oYjw8MnxjPj40KTw8MjQ+PjI0O2xbbSsrXT0oKGMmMTUpPDw0fGQ+PjImMTUpPDwyND4+MjQ7bFttKytdPShkPDw2fGUpPDwyND4+MjR9cmV0dXJuIGx9XG5mdW5jdGlvbiBTYmMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2O09kZChiLEluZSwxKTtvPUJEKHZOYihhLChOeWMoKSxTd2MpKSwyMTgpO2ZvcihlPW5ldyBvbGIoYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjkpO2o9bF9iKGQuYSk7Zm9yKGc9aixoPTAsaT1nLmxlbmd0aDtoPGk7KytoKXtmPWdbaF07aWYoZi5rIT0oajBiKCksaTBiKSl7Y29udGludWV9aWYobz09KEFhZCgpLHlhZCkpe2ZvcihsPW5ldyBvbGIoZi5qKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMTEpO2suZS5jLmxlbmd0aD09MHx8VmJjKGspO2suZy5jLmxlbmd0aD09MHx8V2JjKGspfX1lbHNlIGlmKEpEKHZOYihmLCh3dGMoKSwkc2MpKSwxNykpe3E9QkQodk5iKGYsJHNjKSwxNyk7cj1CRChZX2IoZiwoVWNkKCksVGNkKSkuS2MoKS5QYigpLDExKTtzPUJEKFlfYihmLHpjZCkuS2MoKS5QYigpLDExKTt0PUJEKHZOYihyLCRzYyksMTEpO3U9QkQodk5iKHMsJHNjKSwxMSk7UVpiKHEsdSk7UlpiKHEsdCk7dj1uZXcgZzdjKHMuaS5uKTt2LmE9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW3UuaS5uLHUubix1LmFdKSkuYTtEc2IocS5hLHYpO3Y9bmV3IGc3YyhyLmkubik7di5hPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFt0Lmkubix0Lm4sdC5hXSkpLmE7RHNiKHEuYSx2KX1lbHNle2lmKGYuai5jLmxlbmd0aD49Mil7cD10cnVlO209bmV3IG9sYihmLmopO2M9QkQobWxiKG0pLDExKTtuPW51bGw7d2hpbGUobS5hPG0uYy5jLmxlbmd0aCl7bj1jO2M9QkQobWxiKG0pLDExKTtpZighcGIodk5iKG4sJHNjKSx2TmIoYywkc2MpKSl7cD1mYWxzZTticmVha319fWVsc2V7cD1mYWxzZX1mb3IobD1uZXcgb2xiKGYuaik7bC5hPGwuYy5jLmxlbmd0aDspe2s9QkQobWxiKGwpLDExKTtrLmUuYy5sZW5ndGg9PTB8fFRiYyhrLHApO2suZy5jLmxlbmd0aD09MHx8VWJjKGsscCl9fSRfYihmLG51bGwpfX1RZGQoYil9XG5mdW5jdGlvbiBLSmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCO3Q9YS5jWyh0Q2IoMCxiLmMubGVuZ3RoKSxCRChiLmNbMF0sMTcpKS5wXTtBPWEuY1sodENiKDEsYi5jLmxlbmd0aCksQkQoYi5jWzFdLDE3KSkucF07aWYodC5hLmUuZS10LmEuYS0odC5iLmUuZS10LmIuYSk9PTAmJkEuYS5lLmUtQS5hLmEtKEEuYi5lLmUtQS5iLmEpPT0wKXtyZXR1cm4gZmFsc2V9cj10LmIuZS5mO2lmKCFKRChyLDEwKSl7cmV0dXJuIGZhbHNlfXE9QkQociwxMCk7dj1hLmlbcS5wXTt3PSFxLmM/LTE6SmtiKHEuYy5hLHEsMCk7Zj1QamU7aWYodz4wKXtlPUJEKElrYihxLmMuYSx3LTEpLDEwKTtnPWEuaVtlLnBdO0I9JHduZC5NYXRoLmNlaWwoakJjKGEubixlLHEpKTtmPXYuYS5lLXEuZC5kLShnLmEuZStlLm8uYitlLmQuYSktQn1qPVBqZTtpZih3PHEuYy5hLmMubGVuZ3RoLTEpe2k9QkQoSWtiKHEuYy5hLHcrMSksMTApO2s9YS5pW2kucF07Qj0kd25kLk1hdGguY2VpbChqQmMoYS5uLGkscSkpO2o9ay5hLmUtaS5kLmQtKHYuYS5lK3Euby5iK3EuZC5hKS1CfWlmKGMmJihJeSgpLE15KEpxZSksJHduZC5NYXRoLmFicyhmLWopPD1KcWV8fGY9PWp8fGlzTmFOKGYpJiZpc05hTihqKSkpe3JldHVybiB0cnVlfWQ9Z0tjKHQuYSk7aD0tZ0tjKHQuYik7bD0tZ0tjKEEuYSk7cz1nS2MoQS5iKTtwPXQuYS5lLmUtdC5hLmEtKHQuYi5lLmUtdC5iLmEpPjAmJkEuYS5lLmUtQS5hLmEtKEEuYi5lLmUtQS5iLmEpPDA7bz10LmEuZS5lLXQuYS5hLSh0LmIuZS5lLXQuYi5hKTwwJiZBLmEuZS5lLUEuYS5hLShBLmIuZS5lLUEuYi5hKT4wO249dC5hLmUuZSt0LmIuYTxBLmIuZS5lK0EuYS5hO209dC5hLmUuZSt0LmIuYT5BLmIuZS5lK0EuYS5hO3U9MDshcCYmIW8mJihtP2YrbD4wPyh1PWwpOmotZD4wJiYodT1kKTpuJiYoZitoPjA/KHU9aCk6ai1zPjAmJih1PXMpKSk7di5hLmUrPXU7di5iJiYodi5kLmUrPXUpO3JldHVybiBmYWxzZX1cbmZ1bmN0aW9uIFhHYihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07ZD1uZXcgSjZjKGIucWYoKS5hLGIucWYoKS5iLGIucmYoKS5hLGIucmYoKS5iKTtlPW5ldyBJNmM7aWYoYS5jKXtmb3IoZz1uZXcgb2xiKGIud2YoKSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDE4MSk7ZS5jPWYucWYoKS5hK2IucWYoKS5hO2UuZD1mLnFmKCkuYitiLnFmKCkuYjtlLmI9Zi5yZigpLmE7ZS5hPWYucmYoKS5iO0g2YyhkLGUpfX1mb3Ioaj1uZXcgb2xiKGIuQ2YoKSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDgzOCk7az1pLnFmKCkuYStiLnFmKCkuYTtsPWkucWYoKS5iK2IucWYoKS5iO2lmKGEuZSl7ZS5jPWs7ZS5kPWw7ZS5iPWkucmYoKS5hO2UuYT1pLnJmKCkuYjtINmMoZCxlKX1pZihhLmQpe2ZvcihnPW5ldyBvbGIoaS53ZigpKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTgxKTtlLmM9Zi5xZigpLmEraztlLmQ9Zi5xZigpLmIrbDtlLmI9Zi5yZigpLmE7ZS5hPWYucmYoKS5iO0g2YyhkLGUpfX1pZihhLmIpe209bmV3IGY3YygtYywtYyk7aWYoQkQoYi5XZSgoWTljKCkseDljKSksMTc0KS5IYygocmNkKCkscGNkKSkpe2ZvcihnPW5ldyBvbGIoaS53ZigpKTtnLmE8Zy5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoZyksMTgxKTttLmErPWYucmYoKS5hK2M7bS5iKz1mLnJmKCkuYitjfX1tLmE9JHduZC5NYXRoLm1heChtLmEsMCk7bS5iPSR3bmQuTWF0aC5tYXgobS5iLDApO1ZHYihkLGkuQmYoKSxpLnpmKCksYixpLG0sYyl9fWEuYiYmVkdiKGQsYi5CZigpLGIuemYoKSxiLG51bGwsbnVsbCxjKTtoPW5ldyBLX2IoYi5BZigpKTtoLmQ9JHduZC5NYXRoLm1heCgwLGIucWYoKS5iLWQuZCk7aC5hPSR3bmQuTWF0aC5tYXgoMCxkLmQrZC5hLShiLnFmKCkuYitiLnJmKCkuYikpO2guYj0kd25kLk1hdGgubWF4KDAsYi5xZigpLmEtZC5jKTtoLmM9JHduZC5NYXRoLm1heCgwLGQuYytkLmItKGIucWYoKS5hK2IucmYoKS5hKSk7Yi5FZihoKX1cbmZ1bmN0aW9uIHd6KCl7dmFyIGE9WydcXFxcdTAwMDAnLCdcXFxcdTAwMDEnLCdcXFxcdTAwMDInLCdcXFxcdTAwMDMnLCdcXFxcdTAwMDQnLCdcXFxcdTAwMDUnLCdcXFxcdTAwMDYnLCdcXFxcdTAwMDcnLCdcXFxcYicsJ1xcXFx0JywnXFxcXG4nLCdcXFxcdTAwMEInLCdcXFxcZicsJ1xcXFxyJywnXFxcXHUwMDBFJywnXFxcXHUwMDBGJywnXFxcXHUwMDEwJywnXFxcXHUwMDExJywnXFxcXHUwMDEyJywnXFxcXHUwMDEzJywnXFxcXHUwMDE0JywnXFxcXHUwMDE1JywnXFxcXHUwMDE2JywnXFxcXHUwMDE3JywnXFxcXHUwMDE4JywnXFxcXHUwMDE5JywnXFxcXHUwMDFBJywnXFxcXHUwMDFCJywnXFxcXHUwMDFDJywnXFxcXHUwMDFEJywnXFxcXHUwMDFFJywnXFxcXHUwMDFGJ107YVszNF09J1xcXFxcIic7YVs5Ml09J1xcXFxcXFxcJzthWzE3M109J1xcXFx1MDBhZCc7YVsxNTM2XT0nXFxcXHUwNjAwJzthWzE1MzddPSdcXFxcdTA2MDEnO2FbMTUzOF09J1xcXFx1MDYwMic7YVsxNTM5XT0nXFxcXHUwNjAzJzthWzE3NTddPSdcXFxcdTA2ZGQnO2FbMTgwN109J1xcXFx1MDcwZic7YVs2MDY4XT0nXFxcXHUxN2I0JzthWzYwNjldPSdcXFxcdTE3YjUnO2FbODIwM109J1xcXFx1MjAwYic7YVs4MjA0XT0nXFxcXHUyMDBjJzthWzgyMDVdPSdcXFxcdTIwMGQnO2FbODIwNl09J1xcXFx1MjAwZSc7YVs4MjA3XT0nXFxcXHUyMDBmJzthWzgyMzJdPSdcXFxcdTIwMjgnO2FbODIzM109J1xcXFx1MjAyOSc7YVs4MjM0XT0nXFxcXHUyMDJhJzthWzgyMzVdPSdcXFxcdTIwMmInO2FbODIzNl09J1xcXFx1MjAyYyc7YVs4MjM3XT0nXFxcXHUyMDJkJzthWzgyMzhdPSdcXFxcdTIwMmUnO2FbODI4OF09J1xcXFx1MjA2MCc7YVs4Mjg5XT0nXFxcXHUyMDYxJzthWzgyOTBdPSdcXFxcdTIwNjInO2FbODI5MV09J1xcXFx1MjA2Myc7YVs4MjkyXT0nXFxcXHUyMDY0JzthWzgyOThdPSdcXFxcdTIwNmEnO2FbODI5OV09J1xcXFx1MjA2Yic7YVs4MzAwXT0nXFxcXHUyMDZjJzthWzgzMDFdPSdcXFxcdTIwNmQnO2FbODMwMl09J1xcXFx1MjA2ZSc7YVs4MzAzXT0nXFxcXHUyMDZmJzthWzY1Mjc5XT0nXFxcXHVmZWZmJzthWzY1NTI5XT0nXFxcXHVmZmY5JzthWzY1NTMwXT0nXFxcXHVmZmZhJzthWzY1NTMxXT0nXFxcXHVmZmZiJztyZXR1cm4gYX1cbmZ1bmN0aW9uIHBpZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG07aT1uZXcgUmtiO2w9Yi5sZW5ndGg7Zz1BVWQoYyk7Zm9yKGo9MDtqPGw7KytqKXtrPWlmYihiLHdmYig2MSksaik7ZD0kaGQoZyxiLnN1YnN0cihqLGstaikpO2U9S0pkKGQpO2Y9ZS5BaigpLk5oKCk7c3dpdGNoKGJmYihiLCsraykpe2Nhc2UgMzk6e2g9Z2ZiKGIsMzksKytrKTtFa2IoaSxuZXcga0dkKGQsUGlkKGIuc3Vic3RyKGssaC1rKSxmLGUpKSk7aj1oKzE7YnJlYWt9Y2FzZSAzNDp7aD1nZmIoYiwzNCwrK2spO0VrYihpLG5ldyBrR2QoZCxQaWQoYi5zdWJzdHIoayxoLWspLGYsZSkpKTtqPWgrMTticmVha31jYXNlIDkxOnttPW5ldyBSa2I7RWtiKGksbmV3IGtHZChkLG0pKTtuOmZvcig7Oyl7c3dpdGNoKGJmYihiLCsraykpe2Nhc2UgMzk6e2g9Z2ZiKGIsMzksKytrKTtFa2IobSxQaWQoYi5zdWJzdHIoayxoLWspLGYsZSkpO2s9aCsxO2JyZWFrfWNhc2UgMzQ6e2g9Z2ZiKGIsMzQsKytrKTtFa2IobSxQaWQoYi5zdWJzdHIoayxoLWspLGYsZSkpO2s9aCsxO2JyZWFrfWNhc2UgMTEwOnsrK2s7aWYoYi5pbmRleE9mKCd1bGwnLGspPT1rKXttLmNbbS5jLmxlbmd0aF09bnVsbH1lbHNle3Rocm93IHZiYihuZXcgaHooa3RlKSl9ays9MzticmVha319aWYoazxsKXtzd2l0Y2goQkNiKGssYi5sZW5ndGgpLGIuY2hhckNvZGVBdChrKSl7Y2FzZSA0NDp7YnJlYWt9Y2FzZSA5Mzp7YnJlYWsgbn1kZWZhdWx0Ont0aHJvdyB2YmIobmV3IGh6KCdFeHBlY3RpbmcgLCBvciBdJykpfX19ZWxzZXticmVha319aj1rKzE7YnJlYWt9Y2FzZSAxMTA6eysraztpZihiLmluZGV4T2YoJ3VsbCcsayk9PWspe0VrYihpLG5ldyBrR2QoZCxudWxsKSl9ZWxzZXt0aHJvdyB2YmIobmV3IGh6KGt0ZSkpfWo9ayszO2JyZWFrfX1pZihqPGwpe0JDYihqLGIubGVuZ3RoKTtpZihiLmNoYXJDb2RlQXQoaikhPTQ0KXt0aHJvdyB2YmIobmV3IGh6KCdFeHBlY3RpbmcgLCcpKX19ZWxzZXticmVha319cmV0dXJuIHFpZChhLGksYyl9XG5mdW5jdGlvbiBBS2IoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtO2o9QkQoQkQoUWMoYS5yLGIpLDIxKSw4NCk7Zz1iS2IoYSxiKTtjPWEudS5IYygocmNkKCksbGNkKSk7Zm9yKGk9ai5LYygpO2kuT2IoKTspe2g9QkQoaS5QYigpLDExMSk7aWYoIWguY3x8aC5jLmQuYy5sZW5ndGg8PTApe2NvbnRpbnVlfW09aC5iLnJmKCk7az1oLmM7bD1rLmk7bC5iPShmPWsubixrLmUuYStmLmIrZi5jKTtsLmE9KGU9ay5uLGsuZS5iK2UuZCtlLmEpO3N3aXRjaChiLmcpe2Nhc2UgMTppZihoLmEpe2wuYz0obS5hLWwuYikvMjskSGIoaywoTkhiKCksS0hiKSl9ZWxzZSBpZihnfHxjKXtsLmM9LWwuYi1hLnM7JEhiKGssKE5IYigpLE1IYikpfWVsc2V7bC5jPW0uYSthLnM7JEhiKGssKE5IYigpLExIYikpfWwuZD0tbC5hLWEudDtfSGIoaywoRUliKCksQkliKSk7YnJlYWs7Y2FzZSAzOmlmKGguYSl7bC5jPShtLmEtbC5iKS8yOyRIYihrLChOSGIoKSxLSGIpKX1lbHNlIGlmKGd8fGMpe2wuYz0tbC5iLWEuczskSGIoaywoTkhiKCksTUhiKSl9ZWxzZXtsLmM9bS5hK2EuczskSGIoaywoTkhiKCksTEhiKSl9bC5kPW0uYithLnQ7X0hiKGssKEVJYigpLERJYikpO2JyZWFrO2Nhc2UgMjppZihoLmEpe2Q9YS52P2wuYTpCRChJa2Ioay5kLDApLDE4MSkucmYoKS5iO2wuZD0obS5iLWQpLzI7X0hiKGssKEVJYigpLENJYikpfWVsc2UgaWYoZ3x8Yyl7bC5kPS1sLmEtYS50O19IYihrLChFSWIoKSxCSWIpKX1lbHNle2wuZD1tLmIrYS50O19IYihrLChFSWIoKSxESWIpKX1sLmM9bS5hK2EuczskSGIoaywoTkhiKCksTEhiKSk7YnJlYWs7Y2FzZSA0OmlmKGguYSl7ZD1hLnY/bC5hOkJEKElrYihrLmQsMCksMTgxKS5yZigpLmI7bC5kPShtLmItZCkvMjtfSGIoaywoRUliKCksQ0liKSl9ZWxzZSBpZihnfHxjKXtsLmQ9LWwuYS1hLnQ7X0hiKGssKEVJYigpLEJJYikpfWVsc2V7bC5kPW0uYithLnQ7X0hiKGssKEVJYigpLERJYikpfWwuYz0tbC5iLWEuczskSGIoaywoTkhiKCksTUhiKSk7fWc9ZmFsc2V9fVxuZnVuY3Rpb24gS2ZlKGEsYil7d2ZlKCk7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG87aWYoVmhiKFplZSk9PTApe2w9S0MobGJiLG5pZSwxMTcsX2VlLmxlbmd0aCwwLDEpO2ZvcihnPTA7ZzxsLmxlbmd0aDtnKyspe2xbZ109KCsrdmZlLG5ldyAkZmUoNCkpfWQ9bmV3IElmYjtmb3IoZj0wO2Y8WWVlLmxlbmd0aDtmKyspe2s9KCsrdmZlLG5ldyAkZmUoNCkpO2lmKGY8ODQpe2g9ZioyO249KEJDYihoLHd4ZS5sZW5ndGgpLHd4ZS5jaGFyQ29kZUF0KGgpKTttPShCQ2IoaCsxLHd4ZS5sZW5ndGgpLHd4ZS5jaGFyQ29kZUF0KGgrMSkpO1VmZShrLG4sbSl9ZWxzZXtoPShmLTg0KSoyO1VmZShrLGFmZVtoXSxhZmVbaCsxXSl9aT1ZZWVbZl07ZGZiKGksJ1NwZWNpYWxzJykmJlVmZShrLDY1NTIwLDY1NTMzKTtpZihkZmIoaSx1eGUpKXtVZmUoayw5ODMwNDAsMTA0ODU3Myk7VWZlKGssMTA0ODU3NiwxMTE0MTA5KX1TaGIoWmVlLGksayk7U2hiKCRlZSxpLF9mZShrKSk7aj1kLmEubGVuZ3RoOzA8aj8oZC5hPWQuYS5zdWJzdHIoMCwwKSk6MD5qJiYoZC5hKz15ZmIoS0MoVEQsJGllLDI1LC1qLDE1LDEpKSk7ZC5hKz0nSXMnO2lmKGhmYihpLHdmYigzMikpPj0wKXtmb3IoZT0wO2U8aS5sZW5ndGg7ZSsrKXtCQ2IoZSxpLmxlbmd0aCk7aS5jaGFyQ29kZUF0KGUpIT0zMiYmQWZiKGQsKEJDYihlLGkubGVuZ3RoKSxpLmNoYXJDb2RlQXQoZSkpKX19ZWxzZXtkLmErPScnK2l9T2ZlKGQuYSxpLHRydWUpfU9mZSh2eGUsJ0NuJyxmYWxzZSk7T2ZlKHh4ZSwnQ24nLHRydWUpO2M9KCsrdmZlLG5ldyAkZmUoNCkpO1VmZShjLDAsbHhlKTtTaGIoWmVlLCdBTEwnLGMpO1NoYigkZWUsJ0FMTCcsX2ZlKGMpKTshYmZlJiYoYmZlPW5ldyBMcWIpO1NoYihiZmUsdnhlLHZ4ZSk7IWJmZSYmKGJmZT1uZXcgTHFiKTtTaGIoYmZlLHh4ZSx4eGUpOyFiZmUmJihiZmU9bmV3IExxYik7U2hiKGJmZSwnQUxMJywnQUxMJyl9bz1iP0JEKFBoYihaZWUsYSksMTM2KTpCRChQaGIoJGVlLGEpLDEzNik7cmV0dXJuIG99XG5mdW5jdGlvbiBjM2IoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzO209ZmFsc2U7bD1mYWxzZTtpZihmY2QoQkQodk5iKGQsKE55YygpLFZ4YykpLDk4KSkpe2c9ZmFsc2U7aD1mYWxzZTt0OmZvcihvPW5ldyBvbGIoZC5qKTtvLmE8by5jLmMubGVuZ3RoOyl7bj1CRChtbGIobyksMTEpO2ZvcihxPXVsKHBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFtuZXcgSjBiKG4pLG5ldyBSMGIobildKSkpO1FyKHEpOyl7cD1CRChScihxKSwxMSk7aWYoIUNjYihERCh2TmIocC5pLHB3YykpKSl7aWYobi5qPT0oVWNkKCksQWNkKSl7Zz10cnVlO2JyZWFrIHR9aWYobi5qPT1SY2Qpe2g9dHJ1ZTticmVhayB0fX19fW09aCYmIWc7bD1nJiYhaH1pZighbSYmIWwmJmQuYi5jLmxlbmd0aCE9MCl7az0wO2ZvcihqPW5ldyBvbGIoZC5iKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksNzApO2srPWkubi5iK2kuby5iLzJ9ay89ZC5iLmMubGVuZ3RoO3M9az49ZC5vLmIvMn1lbHNle3M9IWx9aWYocyl7cj1CRCh2TmIoZCwod3RjKCksdnRjKSksMTUpO2lmKCFyKXtmPW5ldyBSa2I7eU5iKGQsdnRjLGYpfWVsc2UgaWYobSl7Zj1yfWVsc2V7ZT1CRCh2TmIoZCx0c2MpLDE1KTtpZighZSl7Zj1uZXcgUmtiO3lOYihkLHRzYyxmKX1lbHNle3IuZ2MoKTw9ZS5nYygpPyhmPXIpOihmPWUpfX19ZWxzZXtlPUJEKHZOYihkLCh3dGMoKSx0c2MpKSwxNSk7aWYoIWUpe2Y9bmV3IFJrYjt5TmIoZCx0c2MsZil9ZWxzZSBpZihsKXtmPWV9ZWxzZXtyPUJEKHZOYihkLHZ0YyksMTUpO2lmKCFyKXtmPW5ldyBSa2I7eU5iKGQsdnRjLGYpfWVsc2V7ZS5nYygpPD1yLmdjKCk/KGY9ZSk6KGY9cil9fX1mLkZjKGEpO3lOYihhLCh3dGMoKSx2c2MpLGMpO2lmKGIuZD09Yyl7UlpiKGIsbnVsbCk7Yy5lLmMubGVuZ3RoK2MuZy5jLmxlbmd0aD09MCYmRjBiKGMsbnVsbCk7ZDNiKGMpfWVsc2V7UVpiKGIsbnVsbCk7Yy5lLmMubGVuZ3RoK2MuZy5jLmxlbmd0aD09MCYmRjBiKGMsbnVsbCl9T3NiKGIuYSl9XG5mdW5jdGlvbiBhb2MoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEcsSDtzPW5ldyBCaWIoYS5iLDApO2s9Yi5LYygpO289MDtqPUJEKGsuUGIoKSwxOSkuYTt2PTA7Yz1uZXcgVHFiO0E9bmV3IHpzYjt3aGlsZShzLmI8cy5kLmdjKCkpe3I9KHNDYihzLmI8cy5kLmdjKCkpLEJEKHMuZC5YYihzLmM9cy5iKyspLDI5KSk7Zm9yKHU9bmV3IG9sYihyLmEpO3UuYTx1LmMuYy5sZW5ndGg7KXt0PUJEKG1sYih1KSwxMCk7Zm9yKG49bmV3IFNyKHVyKFVfYih0KS5hLktjKCksbmV3IFNxKSk7UXIobik7KXtsPUJEKFJyKG4pLDE3KTtBLmEuemMobCxBKX1mb3IobT1uZXcgU3IodXIoUl9iKHQpLmEuS2MoKSxuZXcgU3EpKTtRcihtKTspe2w9QkQoUnIobSksMTcpO0EuYS5CYyhsKSE9bnVsbH19aWYobysxPT1qKXtlPW5ldyBIMWIoYSk7QWliKHMsZSk7Zj1uZXcgSDFiKGEpO0FpYihzLGYpO2ZvcihDPUEuYS5lYygpLktjKCk7Qy5PYigpOyl7Qj1CRChDLlBiKCksMTcpO2lmKCFjLmEuX2IoQikpeysrdjtjLmEuemMoQixjKX1nPW5ldyBiMGIoYSk7eU5iKGcsKE55YygpLFZ4YyksKGRjZCgpLGFjZCkpOyRfYihnLGUpO19fYihnLChqMGIoKSxkMGIpKTtwPW5ldyBIMGI7RjBiKHAsZyk7RzBiKHAsKFVjZCgpLFRjZCkpO0Q9bmV3IEgwYjtGMGIoRCxnKTtHMGIoRCx6Y2QpO2Q9bmV3IGIwYihhKTt5TmIoZCxWeGMsYWNkKTskX2IoZCxmKTtfX2IoZCxkMGIpO3E9bmV3IEgwYjtGMGIocSxkKTtHMGIocSxUY2QpO0Y9bmV3IEgwYjtGMGIoRixkKTtHMGIoRix6Y2QpO3c9bmV3IFVaYjtRWmIodyxCLmMpO1JaYih3LHApO0g9bmV3IFVaYjtRWmIoSCxEKTtSWmIoSCxxKTtRWmIoQixGKTtoPW5ldyBnb2MoZyxkLHcsSCxCKTt5TmIoZywod3RjKCksdXNjKSxoKTt5TmIoZCx1c2MsaCk7Rz13LmMuaTtpZihHLms9PWQwYil7aT1CRCh2TmIoRyx1c2MpLDMwNSk7aS5kPWg7aC5nPWl9fWlmKGsuT2IoKSl7aj1CRChrLlBiKCksMTkpLmF9ZWxzZXticmVha319KytvfXJldHVybiBtZWIodil9XG5mdW5jdGlvbiBUMWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2w9MDtmb3IoZT1uZXcgRnlkKCghYi5hJiYoYi5hPW5ldyBjVWQoRTIsYiwxMCwxMSkpLGIuYSkpO2UuZSE9ZS5pLmdjKCk7KXtkPUJEKER5ZChlKSwzMyk7aWYoIUNjYihERChoa2QoZCwoTnljKCksSnhjKSkpKSl7aWYoKFBEKGhrZChiLHl3YykpIT09UEQoKHRBYygpLHJBYykpfHxQRChoa2QoYixKd2MpKT09PVBEKChtcWMoKSxscWMpKXx8UEQoaGtkKGIsSndjKSk9PT1QRCgobXFjKCksanFjKSl8fENjYihERChoa2QoYixBd2MpKSl8fFBEKGhrZChiLHR3YykpIT09UEQoKFJYYigpLFFYYikpKSYmIUNjYihERChoa2QoZCx4d2MpKSkpe2prZChkLCh3dGMoKSxac2MpLG1lYihsKSk7KytsfSQxYihhLGQsYyl9fWw9MDtmb3Ioaj1uZXcgRnlkKCghYi5iJiYoYi5iPW5ldyBjVWQoQjIsYiwxMiwzKSksYi5iKSk7ai5lIT1qLmkuZ2MoKTspe2g9QkQoRHlkKGopLDc5KTtpZihQRChoa2QoYiwoTnljKCkseXdjKSkpIT09UEQoKHRBYygpLHJBYykpfHxQRChoa2QoYixKd2MpKT09PVBEKChtcWMoKSxscWMpKXx8UEQoaGtkKGIsSndjKSk9PT1QRCgobXFjKCksanFjKSl8fENjYihERChoa2QoYixBd2MpKSl8fFBEKGhrZChiLHR3YykpIT09UEQoKFJYYigpLFFYYikpKXtqa2QoaCwod3RjKCksWnNjKSxtZWIobCkpOysrbH1vPWp0ZChoKTtwPWx0ZChoKTtrPUNjYihERChoa2QobyxmeGMpKSk7bj0hQ2NiKEREKGhrZChoLEp4YykpKTttPWsmJlFsZChoKSYmQ2NiKEREKGhrZChoLGd4YykpKTtmPVhvZChvKT09YiYmWG9kKG8pPT1Yb2QocCk7Zz0oWG9kKG8pPT1iJiZwPT1iKV4oWG9kKHApPT1iJiZvPT1iKTtuJiYhbSYmKGd8fGYpJiZYMWIoYSxoLGIsYyl9aWYoWG9kKGIpKXtmb3IoaT1uZXcgRnlkKFdvZChYb2QoYikpKTtpLmUhPWkuaS5nYygpOyl7aD1CRChEeWQoaSksNzkpO289anRkKGgpO2lmKG89PWImJlFsZChoKSl7bT1DY2IoREQoaGtkKG8sKE55YygpLGZ4YykpKSkmJkNjYihERChoa2QoaCxneGMpKSk7bSYmWDFiKGEsaCxiLGMpfX19fVxuZnVuY3Rpb24gZ0RjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEgsSTtPZGQoYywnTWluV2lkdGggbGF5ZXJpbmcnLDEpO249Yi5iO0E9Yi5hO0k9QkQodk5iKGIsKE55YygpLG94YykpLDE5KS5hO2g9QkQodk5iKGIscHhjKSwxOSkuYTthLmI9RWRiKEVEKHZOYihiLGx5YykpKTthLmQ9UGplO2Zvcih1PW5ldyBvbGIoQSk7dS5hPHUuYy5jLmxlbmd0aDspe3M9QkQobWxiKHUpLDEwKTtpZihzLmshPShqMGIoKSxoMGIpKXtjb250aW51ZX1EPXMuby5iO2EuZD0kd25kLk1hdGgubWluKGEuZCxEKX1hLmQ9JHduZC5NYXRoLm1heCgxLGEuZCk7Qj1BLmMubGVuZ3RoO2EuYz1LQyhXRCxvamUsMjUsQiwxNSwxKTthLmY9S0MoV0Qsb2plLDI1LEIsMTUsMSk7YS5lPUtDKFVELFZqZSwyNSxCLDE1LDEpO2o9MDthLmE9MDtmb3Iodj1uZXcgb2xiKEEpO3YuYTx2LmMuYy5sZW5ndGg7KXtzPUJEKG1sYih2KSwxMCk7cy5wPWorKzthLmNbcy5wXT1lRGMoUl9iKHMpKTthLmZbcy5wXT1lRGMoVV9iKHMpKTthLmVbcy5wXT1zLm8uYi9hLmQ7YS5hKz1hLmVbcy5wXX1hLmIvPWEuZDthLmEvPUI7dz1mRGMoQSk7T2tiKEEsdG1iKG5ldyBtRGMoYSkpKTtwPVBqZTtvPU9oZTtnPW51bGw7SD1JO0c9STtmPWg7ZT1oO2lmKEk8MCl7SD1CRChiRGMuYS56ZCgpLDE5KS5hO0c9QkQoYkRjLmIuemQoKSwxOSkuYX1pZihoPDApe2Y9QkQoYURjLmEuemQoKSwxOSkuYTtlPUJEKGFEYy5iLnpkKCksMTkpLmF9Zm9yKEY9SDtGPD1HO0YrKyl7Zm9yKGQ9ZjtkPD1lO2QrKyl7Qz1kRGMoYSxGLGQsQSx3KTtyPUVkYihFRChDLmEpKTttPUJEKEMuYiwxNSk7cT1tLmdjKCk7aWYocjxwfHxyPT1wJiZxPG8pe3A9cjtvPXE7Zz1tfX19Zm9yKGw9Zy5LYygpO2wuT2IoKTspe2s9QkQobC5QYigpLDE1KTtpPW5ldyBIMWIoYik7Zm9yKHQ9ay5LYygpO3QuT2IoKTspe3M9QkQodC5QYigpLDEwKTskX2IocyxpKX1uLmNbbi5jLmxlbmd0aF09aX1zbWIobik7QS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtRZGQoYyl9XG5mdW5jdGlvbiBJNmIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRDthLmI9YjthLmE9QkQodk5iKGIsKE55YygpLGJ4YykpLDE5KS5hO2EuYz1CRCh2TmIoYixkeGMpLDE5KS5hO2EuYz09MCYmKGEuYz1PaGUpO3E9bmV3IEJpYihiLmIsMCk7d2hpbGUocS5iPHEuZC5nYygpKXtwPShzQ2IocS5iPHEuZC5nYygpKSxCRChxLmQuWGIocS5jPXEuYisrKSwyOSkpO2g9bmV3IFJrYjtrPS0xO3U9LTE7Zm9yKHQ9bmV3IG9sYihwLmEpO3QuYTx0LmMuYy5sZW5ndGg7KXtzPUJEKG1sYih0KSwxMCk7aWYoc3IoKEQ2YigpLG5ldyBTcih1cihPX2IocykuYS5LYygpLG5ldyBTcSkpKSk+PWEuYSl7ZD1FNmIoYSxzKTtrPSR3bmQuTWF0aC5tYXgoayxkLmIpO3U9JHduZC5NYXRoLm1heCh1LGQuZCk7RWtiKGgsbmV3IHZnZChzLGQpKX19Qj1uZXcgUmtiO2ZvcihqPTA7ajxrOysrail7RGtiKEIsMCwoc0NiKHEuYj4wKSxxLmEuWGIocS5jPS0tcS5iKSxDPW5ldyBIMWIoYS5iKSxBaWIocSxDKSxzQ2IocS5iPHEuZC5nYygpKSxxLmQuWGIocS5jPXEuYisrKSxDKSl9Zm9yKGc9bmV3IG9sYihoKTtnLmE8Zy5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZyksNDYpO249QkQoZS5iLDU3MSkuYTtpZighbil7Y29udGludWV9Zm9yKG09bmV3IG9sYihuKTttLmE8bS5jLmMubGVuZ3RoOyl7bD1CRChtbGIobSksMTApO0g2YihhLGwsQjZiLEIpfX1jPW5ldyBSa2I7Zm9yKGk9MDtpPHU7KytpKXtFa2IoYywoRD1uZXcgSDFiKGEuYiksQWliKHEsRCksRCkpfWZvcihmPW5ldyBvbGIoaCk7Zi5hPGYuYy5jLmxlbmd0aDspe2U9QkQobWxiKGYpLDQ2KTtBPUJEKGUuYiw1NzEpLmM7aWYoIUEpe2NvbnRpbnVlfWZvcih3PW5ldyBvbGIoQSk7dy5hPHcuYy5jLmxlbmd0aDspe3Y9QkQobWxiKHcpLDEwKTtINmIoYSx2LEM2YixjKX19fXI9bmV3IEJpYihiLmIsMCk7d2hpbGUoci5iPHIuZC5nYygpKXtvPShzQ2Ioci5iPHIuZC5nYygpKSxCRChyLmQuWGIoci5jPXIuYisrKSwyOSkpO28uYS5jLmxlbmd0aD09MCYmdWliKHIpfX1cbmZ1bmN0aW9uIHVRYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxELEYsRztPZGQoYywnU3BsaW5lIGVkZ2Ugcm91dGluZycsMSk7aWYoYi5iLmMubGVuZ3RoPT0wKXtiLmYuYT0wO1FkZChjKTtyZXR1cm59cz1FZGIoRUQodk5iKGIsKE55YygpLHd5YykpKSk7aD1FZGIoRUQodk5iKGIscHljKSkpO2c9RWRiKEVEKHZOYihiLG15YykpKTtyPUJEKHZOYihiLFh3YyksMzM2KTtCPXI9PSh0QmMoKSxzQmMpO0E9RWRiKEVEKHZOYihiLFl3YykpKTthLmQ9YjthLmouYz1LQyhTSSxVaGUsMSwwLDUsMSk7YS5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO1VoYihhLmspO2k9QkQoSWtiKGIuYiwwKSwyOSk7az1LcShpLmEsKEZOYygpLEROYykpO289QkQoSWtiKGIuYixiLmIuYy5sZW5ndGgtMSksMjkpO2w9S3Eoby5hLEROYyk7cD1uZXcgb2xiKGIuYik7cT1udWxsO0c9MDtkb3t0PXAuYTxwLmMuYy5sZW5ndGg/QkQobWxiKHApLDI5KTpudWxsO2lRYyhhLHEsdCk7bFFjKGEpO0M9VnRiKHVBYihQQWIoSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuaSwxNikpLG5ldyBMUWMpLG5ldyBOUWMpKSk7Rj0wO3U9RzttPSFxfHxrJiZxPT1pO249IXR8fGwmJnQ9PW87aWYoQz4wKXtqPTA7ISFxJiYoais9aCk7ais9KEMtMSkqZzshIXQmJihqKz1oKTtCJiYhIXQmJihqPSR3bmQuTWF0aC5tYXgoaixqUWModCxnLHMsQSkpKTtpZihqPHMmJiFtJiYhbil7Rj0ocy1qKS8yO2o9c311Kz1qfWVsc2UgIW0mJiFuJiYodSs9cyk7ISF0JiZoX2IodCx1KTtmb3Iodz1uZXcgb2xiKGEuaSk7dy5hPHcuYy5jLmxlbmd0aDspe3Y9QkQobWxiKHcpLDEyOCk7di5hLmM9Rzt2LmEuYj11LUc7di5GPUY7di5wPSFxfUdrYihhLmEsYS5pKTtHPXU7ISF0JiYoRys9dC5jLmEpO3E9dDttPW59d2hpbGUodCk7Zm9yKGU9bmV3IG9sYihhLmopO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxNyk7Zj1wUWMoYSxkKTt5TmIoZCwod3RjKCkscHRjKSxmKTtEPXJRYyhhLGQpO3lOYihkLHJ0YyxEKX1iLmYuYT1HO2EuZD1udWxsO1FkZChjKX1cbmZ1bmN0aW9uIFl4ZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1O3A9YS5pIT0wO3Q9ZmFsc2U7cj1udWxsO2lmKG9pZChhLmUpKXtrPWIuZ2MoKTtpZihrPjApe209azwxMDA/bnVsbDpuZXcgSXhkKGspO2o9bmV3IEF1ZChiKTtvPWouZztyPUtDKFdELG9qZSwyNSxrLDE1LDEpO2Q9MDt1PW5ldyB6dWQoayk7Zm9yKGU9MDtlPGEuaTsrK2Upe2g9YS5nW2VdO249aDt2OmZvcihzPTA7czwyOysrcyl7Zm9yKGk9azstLWk+PTA7KXtpZihuIT1udWxsP3BiKG4sb1tpXSk6UEQobik9PT1QRChvW2ldKSl7aWYoci5sZW5ndGg8PWQpe3E9cjtyPUtDKFdELG9qZSwyNSwyKnIubGVuZ3RoLDE1LDEpOyRmYihxLDAsciwwLGQpfXJbZCsrXT1lO3d0ZCh1LG9baV0pO2JyZWFrIHZ9fW49bjtpZihQRChuKT09PVBEKGgpKXticmVha319fWo9dTtvPXUuZztrPWQ7aWYoZD5yLmxlbmd0aCl7cT1yO3I9S0MoV0Qsb2plLDI1LGQsMTUsMSk7JGZiKHEsMCxyLDAsZCl9aWYoZD4wKXt0PXRydWU7Zm9yKGY9MDtmPGQ7KytmKXtuPW9bZl07bT1rM2QoYSxCRChuLDcyKSxtKX1mb3IoZz1kOy0tZz49MDspe3R1ZChhLHJbZ10pfWlmKGQhPWspe2ZvcihlPWs7LS1lPj1kOyl7dHVkKGosZSl9cT1yO3I9S0MoV0Qsb2plLDI1LGQsMTUsMSk7JGZiKHEsMCxyLDAsZCl9Yj1qfX19ZWxzZXtiPUN0ZChhLGIpO2ZvcihlPWEuaTstLWU+PTA7KXtpZihiLkhjKGEuZ1tlXSkpe3R1ZChhLGUpO3Q9dHJ1ZX19fWlmKHQpe2lmKHIhPW51bGwpe2M9Yi5nYygpO2w9Yz09MT9GTGQoYSw0LGIuS2MoKS5QYigpLG51bGwsclswXSxwKTpGTGQoYSw2LGIscixyWzBdLHApO209YzwxMDA/bnVsbDpuZXcgSXhkKGMpO2ZvcihlPWIuS2MoKTtlLk9iKCk7KXtuPWUuUGIoKTttPVEyZChhLEJEKG4sNzIpLG0pfWlmKCFtKXtVaGQoYS5lLGwpfWVsc2V7bS5FaShsKTttLkZpKCl9fWVsc2V7bT1WeGQoYi5nYygpKTtmb3IoZT1iLktjKCk7ZS5PYigpOyl7bj1lLlBiKCk7bT1RMmQoYSxCRChuLDcyKSxtKX0hIW0mJm0uRmkoKX1yZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19XG5mdW5jdGlvbiBmWWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQ7Yz1uZXcgbVliKGIpO2MuYXx8JFhiKGIpO2o9WlhiKGIpO2k9bmV3IEhwO3E9bmV3IEFZYjtmb3IocD1uZXcgb2xiKGIuYSk7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDEwKTtmb3IoZT1uZXcgU3IodXIoVV9iKG8pLmEuS2MoKSxuZXcgU3EpKTtRcihlKTspe2Q9QkQoUnIoZSksMTcpO2lmKGQuYy5pLms9PShqMGIoKSxlMGIpfHxkLmQuaS5rPT1lMGIpe2s9ZVliKGEsZCxqLHEpO1JjKGksY1liKGsuZCksay5hKX19fWc9bmV3IFJrYjtmb3IodD1CRCh2TmIoYy5jLCh3dGMoKSxFc2MpKSwyMSkuS2MoKTt0Lk9iKCk7KXtzPUJEKHQuUGIoKSw2MSk7bj1xLmNbcy5nXTttPXEuYltzLmddO2g9cS5hW3MuZ107Zj1udWxsO3I9bnVsbDtzd2l0Y2gocy5nKXtjYXNlIDQ6Zj1uZXcgSjZjKGEuZC5hLG4sai5iLmEtYS5kLmEsbS1uKTtyPW5ldyBKNmMoYS5kLmEsbixoLG0tbik7aVliKGosbmV3IGY3YyhmLmMrZi5iLGYuZCkpO2lZYihqLG5ldyBmN2MoZi5jK2YuYixmLmQrZi5hKSk7YnJlYWs7Y2FzZSAyOmY9bmV3IEo2YyhqLmEuYSxuLGEuYy5hLWouYS5hLG0tbik7cj1uZXcgSjZjKGEuYy5hLWgsbixoLG0tbik7aVliKGosbmV3IGY3YyhmLmMsZi5kKSk7aVliKGosbmV3IGY3YyhmLmMsZi5kK2YuYSkpO2JyZWFrO2Nhc2UgMTpmPW5ldyBKNmMobixhLmQuYixtLW4sai5iLmItYS5kLmIpO3I9bmV3IEo2YyhuLGEuZC5iLG0tbixoKTtpWWIoaixuZXcgZjdjKGYuYyxmLmQrZi5hKSk7aVliKGosbmV3IGY3YyhmLmMrZi5iLGYuZCtmLmEpKTticmVhaztjYXNlIDM6Zj1uZXcgSjZjKG4sai5hLmIsbS1uLGEuYy5iLWouYS5iKTtyPW5ldyBKNmMobixhLmMuYi1oLG0tbixoKTtpWWIoaixuZXcgZjdjKGYuYyxmLmQpKTtpWWIoaixuZXcgZjdjKGYuYytmLmIsZi5kKSk7fWlmKGYpe2w9bmV3IHZZYjtsLmQ9cztsLmI9ZjtsLmM9cjtsLmE9RHgoQkQoUWMoaSxjWWIocykpLDIxKSk7Zy5jW2cuYy5sZW5ndGhdPWx9fUdrYihjLmIsZyk7Yy5kPUJXYihKV2IoaikpO3JldHVybiBjfVxuZnVuY3Rpb24gcE1jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scDtpZihjLnBbYi5wXSE9bnVsbCl7cmV0dXJufWg9dHJ1ZTtjLnBbYi5wXT0wO2c9YjtwPWMubz09KGVNYygpLGNNYyk/UWplOlBqZTtkb3tlPWEuYi5lW2cucF07Zj1nLmMuYS5jLmxlbmd0aDtpZihjLm89PWNNYyYmZT4wfHxjLm89PWRNYyYmZTxmLTEpe2k9bnVsbDtqPW51bGw7Yy5vPT1kTWM/KGk9QkQoSWtiKGcuYy5hLGUrMSksMTApKTooaT1CRChJa2IoZy5jLmEsZS0xKSwxMCkpO2o9Yy5nW2kucF07cE1jKGEsaixjKTtwPWEuZS5iZyhwLGIsZyk7Yy5qW2IucF09PWImJihjLmpbYi5wXT1jLmpbai5wXSk7aWYoYy5qW2IucF09PWMualtqLnBdKXtvPWpCYyhhLmQsZyxpKTtpZihjLm89PWRNYyl7ZD1FZGIoYy5wW2IucF0pO2w9RWRiKGMucFtqLnBdKStFZGIoYy5kW2kucF0pLWkuZC5kLW8tZy5kLmEtZy5vLmItRWRiKGMuZFtnLnBdKTtpZihoKXtoPWZhbHNlO2MucFtiLnBdPSR3bmQuTWF0aC5taW4obCxwKX1lbHNle2MucFtiLnBdPSR3bmQuTWF0aC5taW4oZCwkd25kLk1hdGgubWluKGwscCkpfX1lbHNle2Q9RWRiKGMucFtiLnBdKTtsPUVkYihjLnBbai5wXSkrRWRiKGMuZFtpLnBdKStpLm8uYitpLmQuYStvK2cuZC5kLUVkYihjLmRbZy5wXSk7aWYoaCl7aD1mYWxzZTtjLnBbYi5wXT0kd25kLk1hdGgubWF4KGwscCl9ZWxzZXtjLnBbYi5wXT0kd25kLk1hdGgubWF4KGQsJHduZC5NYXRoLm1heChsLHApKX19fWVsc2V7bz1FZGIoRUQodk5iKGEuYSwoTnljKCksdnljKSkpKTtuPW5NYyhhLGMualtiLnBdKTtrPW5NYyhhLGMualtqLnBdKTtpZihjLm89PWRNYyl7bT1FZGIoYy5wW2IucF0pK0VkYihjLmRbZy5wXSkrZy5vLmIrZy5kLmErby0oRWRiKGMucFtqLnBdKStFZGIoYy5kW2kucF0pLWkuZC5kKTt0TWMobixrLG0pfWVsc2V7bT1FZGIoYy5wW2IucF0pK0VkYihjLmRbZy5wXSktZy5kLmQtRWRiKGMucFtqLnBdKS1FZGIoYy5kW2kucF0pLWkuby5iLWkuZC5hLW87dE1jKG4sayxtKX19fWVsc2V7cD1hLmUuYmcocCxiLGcpfWc9Yy5hW2cucF19d2hpbGUoZyE9Yik7U01jKGEuZSxiKX1cbmZ1bmN0aW9uIF9xZChhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxELEYsRzt0PWI7cz1uZXcgSHA7dT1uZXcgSHA7az1ZcGQodCxOdGUpO2Q9bmV3IG9yZChhLGMscyx1KTtxcWQoZC5hLGQuYixkLmMsZC5kLGspO2k9KEE9cy5pLCFBPyhzLmk9bmV3IHpmKHMscy5jKSk6QSk7Zm9yKEM9aS5LYygpO0MuT2IoKTspe0I9QkQoQy5QYigpLDIwMik7ZT1CRChRYyhzLEIpLDIxKTtmb3IocD1lLktjKCk7cC5PYigpOyl7bz1wLlBiKCk7dj1CRChvbyhhLmQsbyksMjAyKTtpZih2KXtoPSghQi5lJiYoQi5lPW5ldyB5NWQoQTIsQiwxMCw5KSksQi5lKTt3dGQoaCx2KX1lbHNle2c9X3BkKHQsVnRlKTttPV90ZStvK2F1ZStnO249bSskdGU7dGhyb3cgdmJiKG5ldyBjcWQobikpfX19aj0odz11LmksIXc/KHUuaT1uZXcgemYodSx1LmMpKTp3KTtmb3IoRj1qLktjKCk7Ri5PYigpOyl7RD1CRChGLlBiKCksMjAyKTtmPUJEKFFjKHUsRCksMjEpO2ZvcihyPWYuS2MoKTtyLk9iKCk7KXtxPXIuUGIoKTt2PUJEKG9vKGEuZCxxKSwyMDIpO2lmKHYpe2w9KCFELmcmJihELmc9bmV3IHk1ZChBMixELDksMTApKSxELmcpO3d0ZChsLHYpfWVsc2V7Zz1fcGQodCxWdGUpO209X3RlK3ErYXVlK2c7bj1tKyR0ZTt0aHJvdyB2YmIobmV3IGNxZChuKSl9fX0hYy5iJiYoYy5iPW5ldyB5NWQoejIsYyw0LDcpKTtpZihjLmIuaSE9MCYmKCFjLmMmJihjLmM9bmV3IHk1ZCh6MixjLDUsOCkpLGMuYy5pIT0wKSYmKCFjLmImJihjLmI9bmV3IHk1ZCh6MixjLDQsNykpLGMuYi5pPD0xJiYoIWMuYyYmKGMuYz1uZXcgeTVkKHoyLGMsNSw4KSksYy5jLmk8PTEpKSYmKCFjLmEmJihjLmE9bmV3IGNVZChBMixjLDYsNikpLGMuYSkuaT09MSl7Rz1CRChxdWQoKCFjLmEmJihjLmE9bmV3IGNVZChBMixjLDYsNikpLGMuYSksMCksMjAyKTtpZighZG1kKEcpJiYhZW1kKEcpKXtrbWQoRyxCRChxdWQoKCFjLmImJihjLmI9bmV3IHk1ZCh6MixjLDQsNykpLGMuYiksMCksODIpKTtsbWQoRyxCRChxdWQoKCFjLmMmJihjLmM9bmV3IHk1ZCh6MixjLDUsOCkpLGMuYyksMCksODIpKX19fVxuZnVuY3Rpb24gcUpjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQ7Zm9yKHQ9YS5hLHU9MCx2PXQubGVuZ3RoO3U8djsrK3Upe3M9dFt1XTtqPU9oZTtrPU9oZTtmb3Iobz1uZXcgb2xiKHMuZSk7by5hPG8uYy5jLmxlbmd0aDspe209QkQobWxiKG8pLDEwKTtnPSFtLmM/LTE6SmtiKG0uYy5hLG0sMCk7aWYoZz4wKXtsPUJEKElrYihtLmMuYSxnLTEpLDEwKTtCPWpCYyhhLmIsbSxsKTtxPW0ubi5iLW0uZC5kLShsLm4uYitsLm8uYitsLmQuYStCKX1lbHNle3E9bS5uLmItbS5kLmR9aj0kd25kLk1hdGgubWluKHEsaik7aWYoZzxtLmMuYS5jLmxlbmd0aC0xKXtsPUJEKElrYihtLmMuYSxnKzEpLDEwKTtCPWpCYyhhLmIsbSxsKTtyPWwubi5iLWwuZC5kLShtLm4uYittLm8uYittLmQuYStCKX1lbHNle3I9MiptLm4uYn1rPSR3bmQuTWF0aC5taW4ocixrKX1pPU9oZTtmPWZhbHNlO2U9QkQoSWtiKHMuZSwwKSwxMCk7Zm9yKEQ9bmV3IG9sYihlLmopO0QuYTxELmMuYy5sZW5ndGg7KXtDPUJEKG1sYihEKSwxMSk7cD1lLm4uYitDLm4uYitDLmEuYjtmb3IoZD1uZXcgb2xiKEMuZSk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE3KTt3PWMuYztiPXcuaS5uLmIrdy5uLmIrdy5hLmItcDtpZigkd25kLk1hdGguYWJzKGIpPCR3bmQuTWF0aC5hYnMoaSkmJiR3bmQuTWF0aC5hYnMoYik8KGI8MD9qOmspKXtpPWI7Zj10cnVlfX19aD1CRChJa2Iocy5lLHMuZS5jLmxlbmd0aC0xKSwxMCk7Zm9yKEE9bmV3IG9sYihoLmopO0EuYTxBLmMuYy5sZW5ndGg7KXt3PUJEKG1sYihBKSwxMSk7cD1oLm4uYit3Lm4uYit3LmEuYjtmb3IoZD1uZXcgb2xiKHcuZyk7ZC5hPGQuYy5jLmxlbmd0aDspe2M9QkQobWxiKGQpLDE3KTtDPWMuZDtiPUMuaS5uLmIrQy5uLmIrQy5hLmItcDtpZigkd25kLk1hdGguYWJzKGIpPCR3bmQuTWF0aC5hYnMoaSkmJiR3bmQuTWF0aC5hYnMoYik8KGI8MD9qOmspKXtpPWI7Zj10cnVlfX19aWYoZiYmaSE9MCl7Zm9yKG49bmV3IG9sYihzLmUpO24uYTxuLmMuYy5sZW5ndGg7KXttPUJEKG1sYihuKSwxMCk7bS5uLmIrPWl9fX19XG5mdW5jdGlvbiB5bmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHE7aWYoTWhiKGEuYSxiKSl7aWYoUnFiKEJEKE9oYihhLmEsYiksNTMpLGMpKXtyZXR1cm4gMX19ZWxzZXtSaGIoYS5hLGIsbmV3IFRxYil9aWYoTWhiKGEuYSxjKSl7aWYoUnFiKEJEKE9oYihhLmEsYyksNTMpLGIpKXtyZXR1cm4gLTF9fWVsc2V7UmhiKGEuYSxjLG5ldyBUcWIpfWlmKE1oYihhLmUsYikpe2lmKFJxYihCRChPaGIoYS5lLGIpLDUzKSxjKSl7cmV0dXJuIC0xfX1lbHNle1JoYihhLmUsYixuZXcgVHFiKX1pZihNaGIoYS5lLGMpKXtpZihScWIoQkQoT2hiKGEuYSxjKSw1MyksYikpe3JldHVybiAxfX1lbHNle1JoYihhLmUsYyxuZXcgVHFiKX1pZihhLmM9PSh0QWMoKSxzQWMpfHwhd05iKGIsKHd0YygpLFpzYykpfHwhd05iKGMsKHd0YygpLFpzYykpKXtpPUJEKEV0YihEdGIoS0FiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihiLmosMTYpKSxuZXcgSG5jKSksbmV3IEpuYykpLDExKTtrPUJEKEV0YihEdGIoS0FiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1YihjLmosMTYpKSxuZXcgTG5jKSksbmV3IE5uYykpLDExKTtpZighIWkmJiEhayl7aD1pLmk7aj1rLmk7aWYoISFoJiZoPT1qKXtmb3IobT1uZXcgb2xiKGguaik7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDExKTtpZihsPT1pKXtBbmMoYSxjLGIpO3JldHVybiAtMX1lbHNlIGlmKGw9PWspe0FuYyhhLGIsYyk7cmV0dXJuIDF9fXJldHVybiBiZWIoem5jKGEsYiksem5jKGEsYykpfWZvcihvPWEuZCxwPTAscT1vLmxlbmd0aDtwPHE7KytwKXtuPW9bcF07aWYobj09aCl7QW5jKGEsYyxiKTtyZXR1cm4gLTF9ZWxzZSBpZihuPT1qKXtBbmMoYSxiLGMpO3JldHVybiAxfX19aWYoIXdOYihiLCh3dGMoKSxac2MpKXx8IXdOYihjLFpzYykpe2U9em5jKGEsYik7Zz16bmMoYSxjKTtlPmc/QW5jKGEsYixjKTpBbmMoYSxjLGIpO3JldHVybiBlPGc/LTE6ZT5nPzE6MH19ZD1CRCh2TmIoYiwod3RjKCksWnNjKSksMTkpLmE7Zj1CRCh2TmIoYyxac2MpLDE5KS5hO2Q+Zj9BbmMoYSxiLGMpOkFuYyhhLGMsYik7cmV0dXJuIGQ8Zj8tMTpkPmY/MTowfVxuZnVuY3Rpb24gdTJjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscztpZihDY2IoREQoaGtkKGIsKFk5YygpLGQ5YykpKSkpe3JldHVybiBtbWIoKSxtbWIoKSxqbWJ9aj0oIWIuYSYmKGIuYT1uZXcgY1VkKEUyLGIsMTAsMTEpKSxiLmEpLmkhPTA7bD1zMmMoYik7az0hbC5kYygpO2lmKGp8fGspe2U9QkQoaGtkKGIsRjljKSwxNDkpO2lmKCFlKXt0aHJvdyB2YmIobmV3IHkyYygnUmVzb2x2ZWQgYWxnb3JpdGhtIGlzIG5vdCBzZXQ7IGFwcGx5IGEgTGF5b3V0QWxnb3JpdGhtUmVzb2x2ZXIgYmVmb3JlIGNvbXB1dGluZyBsYXlvdXQuJykpfXM9RDNjKGUsKENzZCgpLHlzZCkpO3EyYyhiKTtpZighaiYmayYmIXMpe3JldHVybiBtbWIoKSxtbWIoKSxqbWJ9aT1uZXcgUmtiO2lmKFBEKGhrZChiLEo4YykpPT09UEQoKGhiZCgpLGViZCkpJiYoRDNjKGUsdnNkKXx8RDNjKGUsdXNkKSkpe249cDJjKGEsYik7bz1uZXcgUHNiO3llKG8sKCFiLmEmJihiLmE9bmV3IGNVZChFMixiLDEwLDExKSksYi5hKSk7d2hpbGUoby5iIT0wKXttPUJEKG8uYj09MD9udWxsOihzQ2Ioby5iIT0wKSxOc2IobyxvLmEuYSkpLDMzKTtxMmMobSk7cj1QRChoa2QobSxKOGMpKT09PVBEKGdiZCk7aWYocnx8aWtkKG0sbzhjKSYmIUMzYyhlLGhrZChtLEY5YykpKXtoPXUyYyhhLG0sYyxkKTtHa2IoaSxoKTtqa2QobSxKOGMsZ2JkKTtoZmQobSl9ZWxzZXt5ZShvLCghbS5hJiYobS5hPW5ldyBjVWQoRTIsbSwxMCwxMSkpLG0uYSkpfX19ZWxzZXtuPSghYi5hJiYoYi5hPW5ldyBjVWQoRTIsYiwxMCwxMSkpLGIuYSkuaTtmb3IoZz1uZXcgRnlkKCghYi5hJiYoYi5hPW5ldyBjVWQoRTIsYiwxMCwxMSkpLGIuYSkpO2cuZSE9Zy5pLmdjKCk7KXtmPUJEKER5ZChnKSwzMyk7aD11MmMoYSxmLGMsZCk7R2tiKGksaCk7aGZkKGYpfX1mb3IocT1uZXcgb2xiKGkpO3EuYTxxLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihxKSw3OSk7amtkKHAsZDljLChCY2IoKSx0cnVlKSl9cjJjKGIsZSxVZGQoZCxuKSk7djJjKGkpO3JldHVybiBrJiZzP2w6KG1tYigpLG1tYigpLGptYil9ZWxzZXtyZXR1cm4gbW1iKCksbW1iKCksam1ifX1cbmZ1bmN0aW9uIFokYihhLGIsYyxkLGUsZixnLGgsaSl7dmFyIGosayxsLG0sbixvLHA7bj1jO2s9bmV3IGIwYihpKTtfX2IoaywoajBiKCksZTBiKSk7eU5iKGssKHd0YygpLElzYyksZyk7eU5iKGssKE55YygpLFZ4YyksKGRjZCgpLCRiZCkpO3A9RWRiKEVEKGEuV2UoVXhjKSkpO3lOYihrLFV4YyxwKTtsPW5ldyBIMGI7RjBiKGwsayk7aWYoIShiIT1iY2QmJmIhPWNjZCkpe2Q+PTA/KG49WmNkKGgpKToobj1XY2QoWmNkKGgpKSk7YS5ZZSgkeGMsbil9aj1uZXcgZDdjO209ZmFsc2U7aWYoYS5YZShUeGMpKXthN2MoaixCRChhLldlKFR4YyksOCkpO209dHJ1ZX1lbHNle182YyhqLGcuYS8yLGcuYi8yKX1zd2l0Y2gobi5nKXtjYXNlIDQ6eU5iKGssbXhjLChDdGMoKSx5dGMpKTt5TmIoayxCc2MsKEdxYygpLEZxYykpO2suby5iPWcuYjtwPDAmJihrLm8uYT0tcCk7RzBiKGwsKFVjZCgpLHpjZCkpO218fChqLmE9Zy5hKTtqLmEtPWcuYTticmVhaztjYXNlIDI6eU5iKGssbXhjLChDdGMoKSxBdGMpKTt5TmIoayxCc2MsKEdxYygpLERxYykpO2suby5iPWcuYjtwPDAmJihrLm8uYT0tcCk7RzBiKGwsKFVjZCgpLFRjZCkpO218fChqLmE9MCk7YnJlYWs7Y2FzZSAxOnlOYihrLE9zYywoZXNjKCksZHNjKSk7ay5vLmE9Zy5hO3A8MCYmKGsuby5iPS1wKTtHMGIobCwoVWNkKCksUmNkKSk7bXx8KGouYj1nLmIpO2ouYi09Zy5iO2JyZWFrO2Nhc2UgMzp5TmIoayxPc2MsKGVzYygpLGJzYykpO2suby5hPWcuYTtwPDAmJihrLm8uYj0tcCk7RzBiKGwsKFVjZCgpLEFjZCkpO218fChqLmI9MCk7fWE3YyhsLm4saik7eU5iKGssVHhjLGopO2lmKGI9PVpiZHx8Yj09X2JkfHxiPT0kYmQpe289MDtpZihiPT1aYmQmJmEuWGUoV3hjKSl7c3dpdGNoKG4uZyl7Y2FzZSAxOmNhc2UgMjpvPUJEKGEuV2UoV3hjKSwxOSkuYTticmVhaztjYXNlIDM6Y2FzZSA0Om89LUJEKGEuV2UoV3hjKSwxOSkuYTt9fWVsc2V7c3dpdGNoKG4uZyl7Y2FzZSA0OmNhc2UgMjpvPWYuYjtiPT1fYmQmJihvLz1lLmIpO2JyZWFrO2Nhc2UgMTpjYXNlIDM6bz1mLmE7Yj09X2JkJiYoby89ZS5hKTt9fXlOYihrLGh0YyxvKX15TmIoayxIc2Msbik7cmV0dXJuIGt9XG5mdW5jdGlvbiBBR2MoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEM7Yz1FZGIoRUQodk5iKGEuYS5qLChOeWMoKSxFd2MpKSkpO2lmKGM8LTF8fCFhLmEuaXx8ZWNkKEJEKHZOYihhLmEubyxWeGMpLDk4KSl8fFZfYihhLmEubywoVWNkKCksemNkKSkuZ2MoKTwyJiZWX2IoYS5hLm8sVGNkKS5nYygpPDIpe3JldHVybiB0cnVlfWlmKGEuYS5jLlJmKCkpe3JldHVybiBmYWxzZX12PTA7dT0wO3Q9bmV3IFJrYjtmb3IoaT1hLmEuZSxqPTAsaz1pLmxlbmd0aDtqPGs7KytqKXtoPWlbal07Zm9yKG09aCxuPTAscD1tLmxlbmd0aDtuPHA7KytuKXtsPW1bbl07aWYobC5rPT0oajBiKCksaTBiKSl7dC5jW3QuYy5sZW5ndGhdPWw7Y29udGludWV9ZD1hLmJbbC5jLnBdW2wucF07aWYobC5rPT1lMGIpe2QuYj0xO0JEKHZOYihsLCh3dGMoKSwkc2MpKSwxMSkuaj09KFVjZCgpLHpjZCkmJih1Kz1kLmEpfWVsc2V7Qz1WX2IobCwoVWNkKCksVGNkKSk7Qy5kYygpfHwhTHEoQyxuZXcgTkdjKT8oZC5jPTEpOihlPVZfYihsLHpjZCksKGUuZGMoKXx8IUxxKGUsbmV3IEpHYykpJiYodis9ZC5hKSl9Zm9yKGc9bmV3IFNyKHVyKFVfYihsKS5hLktjKCksbmV3IFNxKSk7UXIoZyk7KXtmPUJEKFJyKGcpLDE3KTt2Kz1kLmM7dSs9ZC5iO0I9Zi5kLmk7ekdjKGEsZCxCKX1yPXBsKE9DKEdDKEtJLDEpLFVoZSwyMCwwLFtWX2IobCwoVWNkKCksQWNkKSksVl9iKGwsUmNkKV0pKTtmb3IoQT1uZXcgU3IobmV3IHhsKHIuYS5sZW5ndGgsci5hKSk7UXIoQSk7KXt3PUJEKFJyKEEpLDExKTtzPUJEKHZOYih3LCh3dGMoKSxndGMpKSwxMCk7aWYocyl7dis9ZC5jO3UrPWQuYjt6R2MoYSxkLHMpfX19Zm9yKG89bmV3IG9sYih0KTtvLmE8by5jLmMubGVuZ3RoOyl7bD1CRChtbGIobyksMTApO2Q9YS5iW2wuYy5wXVtsLnBdO2ZvcihnPW5ldyBTcih1cihVX2IobCkuYS5LYygpLG5ldyBTcSkpO1FyKGcpOyl7Zj1CRChScihnKSwxNyk7dis9ZC5jO3UrPWQuYjtCPWYuZC5pO3pHYyhhLGQsQil9fXQuYz1LQyhTSSxVaGUsMSwwLDUsMSl9Yj12K3U7cT1iPT0wP1BqZToodi11KS9iO3JldHVybiBxPj1jfVxuZnVuY3Rpb24gb3ZkKCl7bXZkKCk7ZnVuY3Rpb24gaChmKXt2YXIgZz10aGlzO3RoaXMuZGlzcGF0Y2g9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhO3N3aXRjaChiLmNtZCl7Y2FzZSAnYWxnb3JpdGhtcyc6dmFyIGM9cHZkKChtbWIoKSxuZXcgbG5iKG5ldyAkaWIobHZkLmIpKSkpO2YucG9zdE1lc3NhZ2Uoe2lkOmIuaWQsZGF0YTpjfSk7YnJlYWs7Y2FzZSAnY2F0ZWdvcmllcyc6dmFyIGQ9cHZkKChtbWIoKSxuZXcgbG5iKG5ldyAkaWIobHZkLmMpKSkpO2YucG9zdE1lc3NhZ2Uoe2lkOmIuaWQsZGF0YTpkfSk7YnJlYWs7Y2FzZSAnb3B0aW9ucyc6dmFyIGU9cHZkKChtbWIoKSxuZXcgbG5iKG5ldyAkaWIobHZkLmQpKSkpO2YucG9zdE1lc3NhZ2Uoe2lkOmIuaWQsZGF0YTplfSk7YnJlYWs7Y2FzZSAncmVnaXN0ZXInOnN2ZChiLmFsZ29yaXRobXMpO2YucG9zdE1lc3NhZ2Uoe2lkOmIuaWR9KTticmVhaztjYXNlICdsYXlvdXQnOnF2ZChiLmdyYXBoLGIubGF5b3V0T3B0aW9uc3x8e30sYi5vcHRpb25zfHx7fSk7Zi5wb3N0TWVzc2FnZSh7aWQ6Yi5pZCxkYXRhOmIuZ3JhcGh9KTticmVhazt9fTt0aGlzLnNhdmVEaXNwYXRjaD1mdW5jdGlvbihiKXt0cnl7Zy5kaXNwYXRjaChiKX1jYXRjaChhKXtmLnBvc3RNZXNzYWdlKHtpZDpiLmRhdGEuaWQsZXJyb3I6YX0pfX19XG5mdW5jdGlvbiBqKGIpe3ZhciBjPXRoaXM7dGhpcy5kaXNwYXRjaGVyPW5ldyBoKHtwb3N0TWVzc2FnZTpmdW5jdGlvbihhKXtjLm9ubWVzc2FnZSh7ZGF0YTphfSl9fSk7dGhpcy5wb3N0TWVzc2FnZT1mdW5jdGlvbihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5kaXNwYXRjaGVyLnNhdmVEaXNwYXRjaCh7ZGF0YTphfSl9LDApfX1cbmlmKHR5cGVvZiBkb2N1bWVudD09PXVrZSYmdHlwZW9mIHNlbGYhPT11a2Upe3ZhciBpPW5ldyBoKHNlbGYpO3NlbGYub25tZXNzYWdlPWkuc2F2ZURpc3BhdGNofWVsc2UgaWYodHlwZW9mIG1vZHVsZSE9PXVrZSYmbW9kdWxlLmV4cG9ydHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCdfX2VzTW9kdWxlJyx7dmFsdWU6dHJ1ZX0pO21vZHVsZS5leHBvcnRzPXsnZGVmYXVsdCc6aixXb3JrZXI6an19fVxuZnVuY3Rpb24gYWFlKGEpe2lmKGEuTilyZXR1cm47YS5OPXRydWU7YS5iPUxuZChhLDApO0tuZChhLmIsMCk7S25kKGEuYiwxKTtLbmQoYS5iLDIpO2EuYmI9TG5kKGEsMSk7S25kKGEuYmIsMCk7S25kKGEuYmIsMSk7YS5mYj1MbmQoYSwyKTtLbmQoYS5mYiwzKTtLbmQoYS5mYiw0KTtRbmQoYS5mYiw1KTthLnFiPUxuZChhLDMpO0tuZChhLnFiLDApO1FuZChhLnFiLDEpO1FuZChhLnFiLDIpO0tuZChhLnFiLDMpO0tuZChhLnFiLDQpO1FuZChhLnFiLDUpO0tuZChhLnFiLDYpO2EuYT1NbmQoYSw0KTthLmM9TW5kKGEsNSk7YS5kPU1uZChhLDYpO2EuZT1NbmQoYSw3KTthLmY9TW5kKGEsOCk7YS5nPU1uZChhLDkpO2EuaT1NbmQoYSwxMCk7YS5qPU1uZChhLDExKTthLms9TW5kKGEsMTIpO2Eubj1NbmQoYSwxMyk7YS5vPU1uZChhLDE0KTthLnA9TW5kKGEsMTUpO2EucT1NbmQoYSwxNik7YS5zPU1uZChhLDE3KTthLnI9TW5kKGEsMTgpO2EudD1NbmQoYSwxOSk7YS51PU1uZChhLDIwKTthLnY9TW5kKGEsMjEpO2Eudz1NbmQoYSwyMik7YS5CPU1uZChhLDIzKTthLkE9TW5kKGEsMjQpO2EuQz1NbmQoYSwyNSk7YS5EPU1uZChhLDI2KTthLkY9TW5kKGEsMjcpO2EuRz1NbmQoYSwyOCk7YS5IPU1uZChhLDI5KTthLko9TW5kKGEsMzApO2EuST1NbmQoYSwzMSk7YS5LPU1uZChhLDMyKTthLk09TW5kKGEsMzMpO2EuTD1NbmQoYSwzNCk7YS5QPU1uZChhLDM1KTthLlE9TW5kKGEsMzYpO2EuUj1NbmQoYSwzNyk7YS5TPU1uZChhLDM4KTthLlQ9TW5kKGEsMzkpO2EuVT1NbmQoYSw0MCk7YS5WPU1uZChhLDQxKTthLlg9TW5kKGEsNDIpO2EuVz1NbmQoYSw0Myk7YS5ZPU1uZChhLDQ0KTthLlo9TW5kKGEsNDUpO2EuJD1NbmQoYSw0Nik7YS5fPU1uZChhLDQ3KTthLmFiPU1uZChhLDQ4KTthLmNiPU1uZChhLDQ5KTthLmRiPU1uZChhLDUwKTthLmViPU1uZChhLDUxKTthLmdiPU1uZChhLDUyKTthLmhiPU1uZChhLDUzKTthLmliPU1uZChhLDU0KTthLmpiPU1uZChhLDU1KTthLmtiPU1uZChhLDU2KTthLmxiPU1uZChhLDU3KTthLm1iPU1uZChhLDU4KTthLm5iPU1uZChhLDU5KTthLm9iPU1uZChhLDYwKTthLnBiPU1uZChhLDYxKX1cbmZ1bmN0aW9uIGY1YihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1O3M9MDtpZihiLmYuYT09MCl7Zm9yKHE9bmV3IG9sYihhKTtxLmE8cS5jLmMubGVuZ3RoOyl7bz1CRChtbGIocSksMTApO3M9JHduZC5NYXRoLm1heChzLG8ubi5hK28uby5hK28uZC5jKX19ZWxzZXtzPWIuZi5hLWIuYy5hfXMtPWIuYy5hO2ZvcihwPW5ldyBvbGIoYSk7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDEwKTtnNWIoby5uLHMtby5vLmEpO2g1YihvLmYpO2Q1YihvKTsoIW8ucT8obW1iKCksbW1iKCksa21iKTpvLnEpLl9iKChOeWMoKSxheWMpKSYmZzViKEJEKHZOYihvLGF5YyksOCkscy1vLm8uYSk7c3dpdGNoKEJEKHZOYihvLG13YyksMjQ4KS5nKXtjYXNlIDE6eU5iKG8sbXdjLChGN2MoKSxEN2MpKTticmVhaztjYXNlIDI6eU5iKG8sbXdjLChGN2MoKSxDN2MpKTt9cj1vLm87Zm9yKHU9bmV3IG9sYihvLmopO3UuYTx1LmMuYy5sZW5ndGg7KXt0PUJEKG1sYih1KSwxMSk7ZzViKHQubixyLmEtdC5vLmEpO2c1Yih0LmEsdC5vLmEpO0cwYih0LFo0Yih0LmopKTtnPUJEKHZOYih0LFd4YyksMTkpOyEhZyYmeU5iKHQsV3hjLG1lYigtZy5hKSk7Zm9yKGY9bmV3IG9sYih0LmcpO2YuYTxmLmMuYy5sZW5ndGg7KXtlPUJEKG1sYihmKSwxNyk7Zm9yKGQ9SnNiKGUuYSwwKTtkLmIhPWQuZC5jOyl7Yz1CRChYc2IoZCksOCk7Yy5hPXMtYy5hfWo9QkQodk5iKGUsanhjKSw3NCk7aWYoail7Zm9yKGk9SnNiKGosMCk7aS5iIT1pLmQuYzspe2g9QkQoWHNiKGkpLDgpO2guYT1zLWguYX19Zm9yKG09bmV3IG9sYihlLmIpO20uYTxtLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihtKSw3MCk7ZzViKGsubixzLWsuby5hKX19Zm9yKG49bmV3IG9sYih0LmYpO24uYTxuLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihuKSw3MCk7ZzViKGsubix0Lm8uYS1rLm8uYSl9fWlmKG8uaz09KGowYigpLGUwYikpe3lOYihvLCh3dGMoKSxIc2MpLFo0YihCRCh2TmIobyxIc2MpLDYxKSkpO2M1YihvKX1mb3IobD1uZXcgb2xiKG8uYik7bC5hPGwuYy5jLmxlbmd0aDspe2s9QkQobWxiKGwpLDcwKTtkNWIoayk7ZzViKGsubixyLmEtay5vLmEpfX19XG5mdW5jdGlvbiBpNWIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdTtzPTA7aWYoYi5mLmI9PTApe2ZvcihxPW5ldyBvbGIoYSk7cS5hPHEuYy5jLmxlbmd0aDspe289QkQobWxiKHEpLDEwKTtzPSR3bmQuTWF0aC5tYXgocyxvLm4uYitvLm8uYitvLmQuYSl9fWVsc2V7cz1iLmYuYi1iLmMuYn1zLT1iLmMuYjtmb3IocD1uZXcgb2xiKGEpO3AuYTxwLmMuYy5sZW5ndGg7KXtvPUJEKG1sYihwKSwxMCk7ajViKG8ubixzLW8uby5iKTtrNWIoby5mKTtlNWIobyk7KCFvLnE/KG1tYigpLG1tYigpLGttYik6by5xKS5fYigoTnljKCksYXljKSkmJmo1YihCRCh2TmIobyxheWMpLDgpLHMtby5vLmIpO3N3aXRjaChCRCh2TmIobyxtd2MpLDI0OCkuZyl7Y2FzZSAzOnlOYihvLG13YywoRjdjKCksQTdjKSk7YnJlYWs7Y2FzZSA0OnlOYihvLG13YywoRjdjKCksRTdjKSk7fXI9by5vO2Zvcih1PW5ldyBvbGIoby5qKTt1LmE8dS5jLmMubGVuZ3RoOyl7dD1CRChtbGIodSksMTEpO2o1Yih0Lm4sci5iLXQuby5iKTtqNWIodC5hLHQuby5iKTtHMGIodCwkNGIodC5qKSk7Zz1CRCh2TmIodCxXeGMpLDE5KTshIWcmJnlOYih0LFd4YyxtZWIoLWcuYSkpO2ZvcihmPW5ldyBvbGIodC5nKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTcpO2ZvcihkPUpzYihlLmEsMCk7ZC5iIT1kLmQuYzspe2M9QkQoWHNiKGQpLDgpO2MuYj1zLWMuYn1qPUJEKHZOYihlLGp4YyksNzQpO2lmKGope2ZvcihpPUpzYihqLDApO2kuYiE9aS5kLmM7KXtoPUJEKFhzYihpKSw4KTtoLmI9cy1oLmJ9fWZvcihtPW5ldyBvbGIoZS5iKTttLmE8bS5jLmMubGVuZ3RoOyl7az1CRChtbGIobSksNzApO2o1YihrLm4scy1rLm8uYil9fWZvcihuPW5ldyBvbGIodC5mKTtuLmE8bi5jLmMubGVuZ3RoOyl7az1CRChtbGIobiksNzApO2o1YihrLm4sdC5vLmItay5vLmIpfX1pZihvLms9PShqMGIoKSxlMGIpKXt5TmIobywod3RjKCksSHNjKSwkNGIoQkQodk5iKG8sSHNjKSw2MSkpKTtiNWIobyl9Zm9yKGw9bmV3IG9sYihvLmIpO2wuYTxsLmMuYy5sZW5ndGg7KXtrPUJEKG1sYihsKSw3MCk7ZTViKGspO2o1YihrLm4sci5iLWsuby5iKX19fVxuZnVuY3Rpb24gdFpjKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuO2w9ZmFsc2U7aj1hKzE7az0odENiKGEsYi5jLmxlbmd0aCksQkQoYi5jW2FdLDIwMCkpO2c9ay5hO2g9bnVsbDtmb3IoZj0wO2Y8ay5hLmMubGVuZ3RoO2YrKyl7ZT0odENiKGYsZy5jLmxlbmd0aCksQkQoZy5jW2ZdLDE4NykpO2lmKGUuYyl7Y29udGludWV9aWYoZS5iLmMubGVuZ3RoPT0wKXtaZmIoKTt2JGMoayxlKTstLWY7bD10cnVlO2NvbnRpbnVlfWlmKCFlLmspeyEhaCYmYSRjKGgpO2g9bmV3IGIkYyghaD8wOmguZStoLmQrZCxrLmYsZCk7T1pjKGUsaC5lK2guZCxrLmYpO0VrYihrLmQsaCk7V1pjKGgsZSk7ZS5rPXRydWV9aT1udWxsO2k9KG49bnVsbCxmPGsuYS5jLmxlbmd0aC0xPyhuPUJEKElrYihrLmEsZisxKSwxODcpKTpqPGIuYy5sZW5ndGgmJih0Q2IoaixiLmMubGVuZ3RoKSxCRChiLmNbal0sMjAwKSkuYS5jLmxlbmd0aCE9MCYmKG49QkQoSWtiKCh0Q2IoaixiLmMubGVuZ3RoKSxCRChiLmNbal0sMjAwKSkuYSwwKSwxODcpKSxuKTttPWZhbHNlOyEhaSYmKG09IXBiKGkuaixrKSk7aWYoaSl7aWYoaS5iLmMubGVuZ3RoPT0wKXt2JGMoayxpKTticmVha31lbHNle0taYyhlLGMtZS5zKTthJGMoZS5xKTtsPWx8c1pjKGssZSxpLGMsZCl9aWYoaS5iLmMubGVuZ3RoPT0wKXt2JGMoKHRDYihqLGIuYy5sZW5ndGgpLEJEKGIuY1tqXSwyMDApKSxpKTtpPW51bGw7d2hpbGUoYi5jLmxlbmd0aD5qJiYodENiKGosYi5jLmxlbmd0aCksQkQoYi5jW2pdLDIwMCkpLmEuYy5sZW5ndGg9PTApe0xrYihiLCh0Q2IoaixiLmMubGVuZ3RoKSxiLmNbal0pKX19aWYoIWkpey0tZjtjb250aW51ZX1pZih1WmMoYixrLGUsaSxtLGMsaixkKSl7bD10cnVlO2NvbnRpbnVlfWlmKG0pe2lmKHZaYyhiLGssZSxpLGMsaixkKSl7bD10cnVlO2NvbnRpbnVlfWVsc2UgaWYod1pjKGssZSkpe2UuYz10cnVlO2w9dHJ1ZTtjb250aW51ZX19ZWxzZSBpZih3WmMoayxlKSl7ZS5jPXRydWU7bD10cnVlO2NvbnRpbnVlfWlmKGwpe2NvbnRpbnVlfX1pZih3WmMoayxlKSl7ZS5jPXRydWU7bD10cnVlOyEhaSYmKGkuaz1mYWxzZSk7Y29udGludWV9ZWxzZXthJGMoZS5xKX19cmV0dXJuIGx9XG5mdW5jdGlvbiBmZWQoYSxiLGMsZCxlLGYsZyl7dmFyIGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEcsSCxJO3A9MDtEPTA7Zm9yKGo9bmV3IG9sYihhLmIpO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxNTcpOyEhaS5jJiZ6ZmQoaS5jKTtwPSR3bmQuTWF0aC5tYXgocCxyZWQoaSkpO0QrPXJlZChpKSpxZWQoaSl9cT1EL2EuYi5jLmxlbmd0aDtDPV9kZChhLmIscSk7RCs9YS5iLmMubGVuZ3RoKkM7cD0kd25kLk1hdGgubWF4KHAsJHduZC5NYXRoLnNxcnQoRCpnKSkrYy5iO0g9Yy5iO0k9Yy5kO249MDtsPWMuYitjLmM7Qj1uZXcgUHNiO0RzYihCLG1lYigwKSk7dz1uZXcgUHNiO2s9bmV3IEJpYihhLmIsMCk7bz1udWxsO2g9bmV3IFJrYjt3aGlsZShrLmI8ay5kLmdjKCkpe2k9KHNDYihrLmI8ay5kLmdjKCkpLEJEKGsuZC5YYihrLmM9ay5iKyspLDE1NykpO0c9cmVkKGkpO209cWVkKGkpO2lmKEgrRz5wKXtpZihmKXtGc2IodyxuKTtGc2IoQixtZWIoay5iLTEpKTtFa2IoYS5kLG8pO2guYz1LQyhTSSxVaGUsMSwwLDUsMSl9SD1jLmI7SSs9bitiO249MDtsPSR3bmQuTWF0aC5tYXgobCxjLmIrYy5jK0cpfWguY1toLmMubGVuZ3RoXT1pO3VlZChpLEgsSSk7bD0kd25kLk1hdGgubWF4KGwsSCtHK2MuYyk7bj0kd25kLk1hdGgubWF4KG4sbSk7SCs9RytiO289aX1Ha2IoYS5hLGgpO0VrYihhLmQsQkQoSWtiKGgsaC5jLmxlbmd0aC0xKSwxNTcpKTtsPSR3bmQuTWF0aC5tYXgobCxkKTtGPUkrbitjLmE7aWYoRjxlKXtuKz1lLUY7Rj1lfWlmKGYpe0g9Yy5iO2s9bmV3IEJpYihhLmIsMCk7RnNiKEIsbWViKGEuYi5jLmxlbmd0aCkpO0E9SnNiKEIsMCk7cz1CRChYc2IoQSksMTkpLmE7RnNiKHcsbik7dj1Kc2IodywwKTt1PTA7d2hpbGUoay5iPGsuZC5nYygpKXtpZihrLmI9PXMpe0g9Yy5iO3U9RWRiKEVEKFhzYih2KSkpO3M9QkQoWHNiKEEpLDE5KS5hfWk9KHNDYihrLmI8ay5kLmdjKCkpLEJEKGsuZC5YYihrLmM9ay5iKyspLDE1NykpO3NlZChpLHUpO2lmKGsuYj09cyl7cj1sLUgtYy5jO3Q9cmVkKGkpO3RlZChpLHIpO3ZlZChpLChyLXQpLzIsMCl9SCs9cmVkKGkpK2J9fXJldHVybiBuZXcgZjdjKGwsRil9XG5mdW5jdGlvbiBwZGUoYSl7dmFyIGIsYyxkLGUsZjtiPWEuYztmPW51bGw7c3dpdGNoKGIpe2Nhc2UgNjpyZXR1cm4gYS5WbCgpO2Nhc2UgMTM6cmV0dXJuIGEuV2woKTtjYXNlIDIzOnJldHVybiBhLk5sKCk7Y2FzZSAyMjpyZXR1cm4gYS5TbCgpO2Nhc2UgMTg6cmV0dXJuIGEuUGwoKTtjYXNlIDg6bmRlKGEpO2Y9KHdmZSgpLGVmZSk7YnJlYWs7Y2FzZSA5OnJldHVybiBhLnZsKHRydWUpO2Nhc2UgMTk6cmV0dXJuIGEud2woKTtjYXNlIDEwOnN3aXRjaChhLmEpe2Nhc2UgMTAwOmNhc2UgNjg6Y2FzZSAxMTk6Y2FzZSA4NzpjYXNlIDExNTpjYXNlIDgzOmY9YS51bChhLmEpO25kZShhKTtyZXR1cm4gZjtjYXNlIDEwMTpjYXNlIDEwMjpjYXNlIDExMDpjYXNlIDExNDpjYXNlIDExNjpjYXNlIDExNzpjYXNlIDExODpjYXNlIDEyMDp7Yz1hLnRsKCk7YzxUamU/KGY9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyBpZ2UoMCxjKSkpOihmPUZmZShUZWUoYykpKX1icmVhaztjYXNlIDk5OnJldHVybiBhLkZsKCk7Y2FzZSA2NzpyZXR1cm4gYS5BbCgpO2Nhc2UgMTA1OnJldHVybiBhLklsKCk7Y2FzZSA3MzpyZXR1cm4gYS5CbCgpO2Nhc2UgMTAzOnJldHVybiBhLkdsKCk7Y2FzZSA4ODpyZXR1cm4gYS5DbCgpO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OnJldHVybiBhLnhsKCk7Y2FzZSA4MDpjYXNlIDExMjpmPXRkZShhLGEuYSk7aWYoIWYpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxJdWUpKSkpO2JyZWFrO2RlZmF1bHQ6Zj16ZmUoYS5hKTt9bmRlKGEpO2JyZWFrO2Nhc2UgMDppZihhLmE9PTkzfHxhLmE9PTEyM3x8YS5hPT0xMjUpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxIdWUpKSkpO2Y9emZlKGEuYSk7ZD1hLmE7bmRlKGEpO2lmKChkJjY0NTEyKT09VWplJiZhLmM9PTAmJihhLmEmNjQ1MTIpPT01NjMyMCl7ZT1LQyhURCwkaWUsMjUsMiwxNSwxKTtlWzBdPWQmYWplO2VbMV09YS5hJmFqZTtmPUVmZShGZmUoemZiKGUsMCxlLmxlbmd0aCkpLDApO25kZShhKX1icmVhaztkZWZhdWx0OnRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksSHVlKSkpKTt9cmV0dXJuIGZ9XG5mdW5jdGlvbiBlN2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscjtkPW5ldyBSa2I7ZT1PaGU7Zj1PaGU7Zz1PaGU7aWYoYyl7ZT1hLmYuYTtmb3IocD1uZXcgb2xiKGIuaik7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDExKTtmb3IoaT1uZXcgb2xiKG8uZyk7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDE3KTtpZihoLmEuYiE9MCl7az1CRChIc2IoaC5hKSw4KTtpZihrLmE8ZSl7Zj1lLWsuYTtnPU9oZTtkLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2U9ay5hfWlmKGsuYTw9ZSl7ZC5jW2QuYy5sZW5ndGhdPWg7aC5hLmI+MSYmKGc9JHduZC5NYXRoLm1pbihnLCR3bmQuTWF0aC5hYnMoQkQoVXQoaC5hLDEpLDgpLmItay5iKSkpfX19fX1lbHNle2ZvcihwPW5ldyBvbGIoYi5qKTtwLmE8cC5jLmMubGVuZ3RoOyl7bz1CRChtbGIocCksMTEpO2ZvcihpPW5ldyBvbGIoby5lKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTcpO2lmKGguYS5iIT0wKXttPUJEKElzYihoLmEpLDgpO2lmKG0uYT5lKXtmPW0uYS1lO2c9T2hlO2QuYz1LQyhTSSxVaGUsMSwwLDUsMSk7ZT1tLmF9aWYobS5hPj1lKXtkLmNbZC5jLmxlbmd0aF09aDtoLmEuYj4xJiYoZz0kd25kLk1hdGgubWluKGcsJHduZC5NYXRoLmFicyhCRChVdChoLmEsaC5hLmItMiksOCkuYi1tLmIpKSl9fX19fWlmKGQuYy5sZW5ndGghPTAmJmY+Yi5vLmEvMiYmZz5iLm8uYi8yKXtuPW5ldyBIMGI7RjBiKG4sYik7RzBiKG4sKFVjZCgpLEFjZCkpO24ubi5hPWIuby5hLzI7cj1uZXcgSDBiO0YwYihyLGIpO0cwYihyLFJjZCk7ci5uLmE9Yi5vLmEvMjtyLm4uYj1iLm8uYjtmb3IoaT1uZXcgb2xiKGQpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwxNyk7aWYoYyl7aj1CRChMc2IoaC5hKSw4KTtxPWguYS5iPT0wP0EwYihoLmQpOkJEKEhzYihoLmEpLDgpO3EuYj49ai5iP1FaYihoLHIpOlFaYihoLG4pfWVsc2V7aj1CRChNc2IoaC5hKSw4KTtxPWguYS5iPT0wP0EwYihoLmMpOkJEKElzYihoLmEpLDgpO3EuYj49ai5iP1JaYihoLHIpOlJaYihoLG4pfWw9QkQodk5iKGgsKE55YygpLGp4YykpLDc0KTshIWwmJnplKGwsaix0cnVlKX1iLm4uYT1lLWIuby5hLzJ9fVxuZnVuY3Rpb24gZXJkKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEgsSSxKLEs7RD1udWxsO0c9YjtGPVJxZChhLGR0ZChjKSxHKTtMa2QoRixfcGQoRyxWdGUpKTtIPUJEKG9vKGEuZyxWcGQoYUMoRyxDdGUpKSksMzMpO209YUMoRywnc291cmNlUG9ydCcpO2Q9bnVsbDshIW0mJihkPVZwZChtKSk7ST1CRChvbyhhLmosZCksMTE4KTtpZighSCl7aD1XcGQoRyk7bz1cIkFuIGVkZ2UgbXVzdCBoYXZlIGEgc291cmNlIG5vZGUgKGVkZ2UgaWQ6ICdcIitoO3A9byskdGU7dGhyb3cgdmJiKG5ldyBjcWQocCkpfWlmKCEhSSYmIUhiKG1wZChJKSxIKSl7aT1fcGQoRyxWdGUpO3E9XCJUaGUgc291cmNlIHBvcnQgb2YgYW4gZWRnZSBtdXN0IGJlIGEgcG9ydCBvZiB0aGUgZWRnZSdzIHNvdXJjZSBub2RlIChlZGdlIGlkOiAnXCIraTtyPXErJHRlO3Rocm93IHZiYihuZXcgY3FkKHIpKX1CPSghRi5iJiYoRi5iPW5ldyB5NWQoejIsRiw0LDcpKSxGLmIpO2Y9bnVsbDtJPyhmPUkpOihmPUgpO3d0ZChCLGYpO0o9QkQob28oYS5nLFZwZChhQyhHLGJ1ZSkpKSwzMyk7bj1hQyhHLCd0YXJnZXRQb3J0Jyk7ZT1udWxsOyEhbiYmKGU9VnBkKG4pKTtLPUJEKG9vKGEuaixlKSwxMTgpO2lmKCFKKXtsPVdwZChHKTtzPVwiQW4gZWRnZSBtdXN0IGhhdmUgYSB0YXJnZXQgbm9kZSAoZWRnZSBpZDogJ1wiK2w7dD1zKyR0ZTt0aHJvdyB2YmIobmV3IGNxZCh0KSl9aWYoISFLJiYhSGIobXBkKEspLEopKXtqPV9wZChHLFZ0ZSk7dT1cIlRoZSB0YXJnZXQgcG9ydCBvZiBhbiBlZGdlIG11c3QgYmUgYSBwb3J0IG9mIHRoZSBlZGdlJ3MgdGFyZ2V0IG5vZGUgKGVkZ2UgaWQ6ICdcIitqO3Y9dSskdGU7dGhyb3cgdmJiKG5ldyBjcWQodikpfUM9KCFGLmMmJihGLmM9bmV3IHk1ZCh6MixGLDUsOCkpLEYuYyk7Zz1udWxsO0s/KGc9Syk6KGc9Sik7d3RkKEMsZyk7aWYoKCFGLmImJihGLmI9bmV3IHk1ZCh6MixGLDQsNykpLEYuYikuaT09MHx8KCFGLmMmJihGLmM9bmV3IHk1ZCh6MixGLDUsOCkpLEYuYykuaT09MCl7az1fcGQoRyxWdGUpO3c9WnRlK2s7QT13KyR0ZTt0aHJvdyB2YmIobmV3IGNxZChBKSl9Z3JkKEcsRik7ZnJkKEcsRik7RD1jcmQoYSxHLEYpO3JldHVybiBEfVxuZnVuY3Rpb24gRFhiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQ7bD1GWGIoelhiKGEsKFVjZCgpLEZjZCkpLGIpO289RVhiKHpYYihhLEdjZCksYik7dT1FWGIoelhiKGEsT2NkKSxiKTtCPUdYYih6WGIoYSxRY2QpLGIpO209R1hiKHpYYihhLEJjZCksYik7cz1FWGIoelhiKGEsTmNkKSxiKTtwPUVYYih6WGIoYSxIY2QpLGIpO3c9RVhiKHpYYihhLFBjZCksYik7dj1FWGIoelhiKGEsQ2NkKSxiKTtDPUdYYih6WGIoYSxFY2QpLGIpO3I9RVhiKHpYYihhLExjZCksYik7dD1FWGIoelhiKGEsS2NkKSxiKTtBPUVYYih6WGIoYSxEY2QpLGIpO0Q9R1hiKHpYYihhLE1jZCksYik7bj1HWGIoelhiKGEsSWNkKSxiKTtxPUVYYih6WGIoYSxKY2QpLGIpO2M9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbcy5hLEIuYSx3LmEsRC5hXSkpO2Q9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbby5hLGwuYSx1LmEscS5hXSkpO2U9ci5hO2Y9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbcC5hLG0uYSx2LmEsbi5hXSkpO2o9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbcy5iLG8uYixwLmIsdC5iXSkpO2k9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbQi5iLGwuYixtLmIscS5iXSkpO2s9Qy5iO2g9dzZjKE9DKEdDKFVELDEpLFZqZSwyNSwxNSxbdy5iLHUuYix2LmIsQS5iXSkpO3ZYYih6WGIoYSxGY2QpLGMrZSxqK2spO3ZYYih6WGIoYSxKY2QpLGMrZSxqK2spO3ZYYih6WGIoYSxHY2QpLGMrZSwwKTt2WGIoelhiKGEsT2NkKSxjK2UsaitrK2kpO3ZYYih6WGIoYSxRY2QpLDAsaitrKTt2WGIoelhiKGEsQmNkKSxjK2UrZCxqK2spO3ZYYih6WGIoYSxIY2QpLGMrZStkLDApO3ZYYih6WGIoYSxQY2QpLDAsaitrK2kpO3ZYYih6WGIoYSxDY2QpLGMrZStkLGoraytpKTt2WGIoelhiKGEsRWNkKSwwLGopO3ZYYih6WGIoYSxMY2QpLGMsMCk7dlhiKHpYYihhLERjZCksMCxqK2sraSk7dlhiKHpYYihhLEljZCksYytlK2QsMCk7Zz1uZXcgZDdjO2cuYT13NmMoT0MoR0MoVUQsMSksVmplLDI1LDE1LFtjK2QrZStmLEMuYSx0LmEsQS5hXSkpO2cuYj13NmMoT0MoR0MoVUQsMSksVmplLDI1LDE1LFtqK2kraytoLHIuYixELmIsbi5iXSkpO3JldHVybiBnfVxuZnVuY3Rpb24gTmdjKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO3A9bmV3IFJrYjtmb3IobT1uZXcgb2xiKGEuZC5iKTttLmE8bS5jLmMubGVuZ3RoOyl7bD1CRChtbGIobSksMjkpO2ZvcihvPW5ldyBvbGIobC5hKTtvLmE8by5jLmMubGVuZ3RoOyl7bj1CRChtbGIobyksMTApO2U9QkQoT2hiKGEuZixuKSw1Nyk7Zm9yKGk9bmV3IFNyKHVyKFVfYihuKS5hLktjKCksbmV3IFNxKSk7UXIoaSk7KXtnPUJEKFJyKGkpLDE3KTtkPUpzYihnLmEsMCk7aj10cnVlO2s9bnVsbDtpZihkLmIhPWQuZC5jKXtiPUJEKFhzYihkKSw4KTtjPW51bGw7aWYoZy5jLmo9PShVY2QoKSxBY2QpKXtxPW5ldyBoaWMoYixuZXcgZjdjKGIuYSxlLmQuZCksZSxnKTtxLmYuYT10cnVlO3EuYT1nLmM7cC5jW3AuYy5sZW5ndGhdPXF9aWYoZy5jLmo9PVJjZCl7cT1uZXcgaGljKGIsbmV3IGY3YyhiLmEsZS5kLmQrZS5kLmEpLGUsZyk7cS5mLmQ9dHJ1ZTtxLmE9Zy5jO3AuY1twLmMubGVuZ3RoXT1xfXdoaWxlKGQuYiE9ZC5kLmMpe2M9QkQoWHNiKGQpLDgpO2lmKCFBRGIoYi5iLGMuYikpe2s9bmV3IGhpYyhiLGMsbnVsbCxnKTtwLmNbcC5jLmxlbmd0aF09aztpZihqKXtqPWZhbHNlO2lmKGMuYjxlLmQuZCl7ay5mLmE9dHJ1ZX1lbHNlIGlmKGMuYj5lLmQuZCtlLmQuYSl7ay5mLmQ9dHJ1ZX1lbHNle2suZi5kPXRydWU7ay5mLmE9dHJ1ZX19fWQuYiE9ZC5kLmMmJihiPWMpfWlmKGspe2Y9QkQoT2hiKGEuZixnLmQuaSksNTcpO2lmKGIuYjxmLmQuZCl7ay5mLmE9dHJ1ZX1lbHNlIGlmKGIuYj5mLmQuZCtmLmQuYSl7ay5mLmQ9dHJ1ZX1lbHNle2suZi5kPXRydWU7ay5mLmE9dHJ1ZX19fX1mb3IoaD1uZXcgU3IodXIoUl9iKG4pLmEuS2MoKSxuZXcgU3EpKTtRcihoKTspe2c9QkQoUnIoaCksMTcpO2lmKGcuYS5iIT0wKXtiPUJEKElzYihnLmEpLDgpO2lmKGcuZC5qPT0oVWNkKCksQWNkKSl7cT1uZXcgaGljKGIsbmV3IGY3YyhiLmEsZS5kLmQpLGUsZyk7cS5mLmE9dHJ1ZTtxLmE9Zy5kO3AuY1twLmMubGVuZ3RoXT1xfWlmKGcuZC5qPT1SY2Qpe3E9bmV3IGhpYyhiLG5ldyBmN2MoYi5hLGUuZC5kK2UuZC5hKSxlLGcpO3EuZi5kPXRydWU7cS5hPWcuZDtwLmNbcC5jLmxlbmd0aF09cX19fX19cmV0dXJuIHB9XG5mdW5jdGlvbiBXSmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbDtPZGQoYywnTmV0d29yayBzaW1wbGV4IG5vZGUgcGxhY2VtZW50JywxKTthLmU9YjthLm49QkQodk5iKGIsKHd0YygpLG90YykpLDMwNCk7VkpjKGEpO0hKYyhhKTtNQWIoTEFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZS5iLDE2KSksbmV3IEtLYyksbmV3IE1LYyhhKSk7TUFiKEpBYihMQWIoSkFiKExBYihuZXcgWUFiKG51bGwsbmV3IEt1YihhLmUuYiwxNikpLG5ldyB6TGMpLG5ldyBCTGMpLG5ldyBETGMpLG5ldyBGTGMpLG5ldyBJS2MoYSkpO2lmKENjYihERCh2TmIoYS5lLChOeWMoKSxBeGMpKSkpKXtnPVVkZChjLDEpO09kZChnLCdTdHJhaWdodCBFZGdlcyBQcmUtUHJvY2Vzc2luZycsMSk7VUpjKGEpO1FkZChnKX1KRmIoYS5mKTtmPUJEKHZOYihiLEF5YyksMTkpLmEqYS5mLmEuYy5sZW5ndGg7dUdiKEhHYihJR2IoTEdiKGEuZiksZiksZmFsc2UpLFVkZChjLDEpKTtpZihhLmQuYS5nYygpIT0wKXtnPVVkZChjLDEpO09kZChnLCdGbGV4aWJsZSBXaGVyZSBTcGFjZSBQcm9jZXNzaW5nJywxKTtoPUJEKEJ0YihSQWIoTkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKGEuZi5hLDE2KSksbmV3IE9LYyksbmV3IGlLYykpLDE5KS5hO2k9QkQoQnRiKFFBYihOQWIobmV3IFlBYihudWxsLG5ldyBLdWIoYS5mLmEsMTYpKSxuZXcgUUtjKSxuZXcgbUtjKSksMTkpLmE7aj1pLWg7az1uR2IobmV3IHBHYixhLmYpO2w9bkdiKG5ldyBwR2IsYS5mKTtBRmIoREZiKENGYihCRmIoRUZiKG5ldyBGRmIsMjAwMDApLGopLGspLGwpKTtNQWIoSkFiKEpBYihQbGIoYS5pKSxuZXcgU0tjKSxuZXcgVUtjKSxuZXcgV0tjKGgsayxqLGwpKTtmb3IoZT1hLmQuYS5lYygpLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksMjEzKTtkLmc9MX11R2IoSEdiKElHYihMR2IoYS5mKSxmKSxmYWxzZSksVWRkKGcsMSkpO1FkZChnKX1pZihDY2IoREQodk5iKGIsQXhjKSkpKXtnPVVkZChjLDEpO09kZChnLCdTdHJhaWdodCBFZGdlcyBQb3N0LVByb2Nlc3NpbmcnLDEpO1RKYyhhKTtRZGQoZyl9R0pjKGEpO2EuZT1udWxsO2EuZj1udWxsO2EuaT1udWxsO2EuYz1udWxsO1VoYihhLmspO2Euaj1udWxsO2EuYT1udWxsO2Eubz1udWxsO2EuZC5hLiRiKCk7UWRkKGMpfVxuZnVuY3Rpb24gbE1jKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdjtmb3IoaD1uZXcgb2xiKGEuYS5iKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoaCksMjkpO2Zvcih0PW5ldyBvbGIoZi5hKTt0LmE8dC5jLmMubGVuZ3RoOyl7cz1CRChtbGIodCksMTApO2IuZ1tzLnBdPXM7Yi5hW3MucF09cztiLmRbcy5wXT0wfX1pPWEuYS5iO2IuYz09KFlMYygpLFdMYykmJihpPUpEKGksMTUyKT9rbShCRChpLDE1MikpOkpEKGksMTMxKT9CRChpLDEzMSkuYTpKRChpLDU0KT9uZXcgb3YoaSk6bmV3IGR2KGkpKTtmb3IoZz1pLktjKCk7Zy5PYigpOyl7Zj1CRChnLlBiKCksMjkpO249LTE7bT1mLmE7aWYoYi5vPT0oZU1jKCksZE1jKSl7bj1PaGU7bT1KRChtLDE1Mik/a20oQkQobSwxNTIpKTpKRChtLDEzMSk/QkQobSwxMzEpLmE6SkQobSw1NCk/bmV3IG92KG0pOm5ldyBkdihtKX1mb3Iodj1tLktjKCk7di5PYigpOyl7dT1CRCh2LlBiKCksMTApO2w9bnVsbDtiLmM9PVdMYz8obD1CRChJa2IoYS5iLmYsdS5wKSwxNSkpOihsPUJEKElrYihhLmIuYix1LnApLDE1KSk7aWYobC5nYygpPjApe2Q9bC5nYygpO2o9UUQoJHduZC5NYXRoLmZsb29yKChkKzEpLzIpKS0xO2U9UUQoJHduZC5NYXRoLmNlaWwoKGQrMSkvMikpLTE7aWYoYi5vPT1kTWMpe2ZvcihrPWU7az49ajtrLS0pe2lmKGIuYVt1LnBdPT11KXtwPUJEKGwuWGIoayksNDYpO289QkQocC5hLDEwKTtpZighUnFiKGMscC5iKSYmbj5hLmIuZVtvLnBdKXtiLmFbby5wXT11O2IuZ1t1LnBdPWIuZ1tvLnBdO2IuYVt1LnBdPWIuZ1t1LnBdO2IuZltiLmdbdS5wXS5wXT0oQmNiKCksQ2NiKGIuZltiLmdbdS5wXS5wXSkmdS5rPT0oajBiKCksZzBiKT90cnVlOmZhbHNlKTtuPWEuYi5lW28ucF19fX19ZWxzZXtmb3Ioaz1qO2s8PWU7aysrKXtpZihiLmFbdS5wXT09dSl7cj1CRChsLlhiKGspLDQ2KTtxPUJEKHIuYSwxMCk7aWYoIVJxYihjLHIuYikmJm48YS5iLmVbcS5wXSl7Yi5hW3EucF09dTtiLmdbdS5wXT1iLmdbcS5wXTtiLmFbdS5wXT1iLmdbdS5wXTtiLmZbYi5nW3UucF0ucF09KEJjYigpLENjYihiLmZbYi5nW3UucF0ucF0pJnUuaz09KGowYigpLGcwYik/dHJ1ZTpmYWxzZSk7bj1hLmIuZVtxLnBdfX19fX19fX1cbmZ1bmN0aW9uIFRoZCgpe1RoZD1jY2I7SGhkKCk7U2hkPUdoZC5hO0JEKHF1ZChaS2QoR2hkLmEpLDApLDE4KTtNaGQ9R2hkLmY7QkQocXVkKFpLZChHaGQuZiksMCksMTgpO0JEKHF1ZChaS2QoR2hkLmYpLDEpLDM0KTtSaGQ9R2hkLm47QkQocXVkKFpLZChHaGQubiksMCksMzQpO0JEKHF1ZChaS2QoR2hkLm4pLDEpLDM0KTtCRChxdWQoWktkKEdoZC5uKSwyKSwzNCk7QkQocXVkKFpLZChHaGQubiksMyksMzQpO05oZD1HaGQuZztCRChxdWQoWktkKEdoZC5nKSwwKSwxOCk7QkQocXVkKFpLZChHaGQuZyksMSksMzQpO0poZD1HaGQuYztCRChxdWQoWktkKEdoZC5jKSwwKSwxOCk7QkQocXVkKFpLZChHaGQuYyksMSksMTgpO09oZD1HaGQuaTtCRChxdWQoWktkKEdoZC5pKSwwKSwxOCk7QkQocXVkKFpLZChHaGQuaSksMSksMTgpO0JEKHF1ZChaS2QoR2hkLmkpLDIpLDE4KTtCRChxdWQoWktkKEdoZC5pKSwzKSwxOCk7QkQocXVkKFpLZChHaGQuaSksNCksMzQpO1BoZD1HaGQuajtCRChxdWQoWktkKEdoZC5qKSwwKSwxOCk7S2hkPUdoZC5kO0JEKHF1ZChaS2QoR2hkLmQpLDApLDE4KTtCRChxdWQoWktkKEdoZC5kKSwxKSwxOCk7QkQocXVkKFpLZChHaGQuZCksMiksMTgpO0JEKHF1ZChaS2QoR2hkLmQpLDMpLDE4KTtCRChxdWQoWktkKEdoZC5kKSw0KSwzNCk7QkQocXVkKFpLZChHaGQuZCksNSksMzQpO0JEKHF1ZChaS2QoR2hkLmQpLDYpLDM0KTtCRChxdWQoWktkKEdoZC5kKSw3KSwzNCk7SWhkPUdoZC5iO0JEKHF1ZChaS2QoR2hkLmIpLDApLDM0KTtCRChxdWQoWktkKEdoZC5iKSwxKSwzNCk7TGhkPUdoZC5lO0JEKHF1ZChaS2QoR2hkLmUpLDApLDM0KTtCRChxdWQoWktkKEdoZC5lKSwxKSwzNCk7QkQocXVkKFpLZChHaGQuZSksMiksMzQpO0JEKHF1ZChaS2QoR2hkLmUpLDMpLDM0KTtCRChxdWQoWktkKEdoZC5lKSw0KSwxOCk7QkQocXVkKFpLZChHaGQuZSksNSksMTgpO0JEKHF1ZChaS2QoR2hkLmUpLDYpLDE4KTtCRChxdWQoWktkKEdoZC5lKSw3KSwxOCk7QkQocXVkKFpLZChHaGQuZSksOCksMTgpO0JEKHF1ZChaS2QoR2hkLmUpLDkpLDE4KTtCRChxdWQoWktkKEdoZC5lKSwxMCksMzQpO1FoZD1HaGQuaztCRChxdWQoWktkKEdoZC5rKSwwKSwzNCk7QkQocXVkKFpLZChHaGQuayksMSksMzQpfVxuZnVuY3Rpb24gd1FjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRjtDPW5ldyBQc2I7dz1uZXcgUHNiO3E9LTE7Zm9yKGk9bmV3IG9sYihhKTtpLmE8aS5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaSksMTI4KTtnLnM9cS0tO2s9MDt0PTA7Zm9yKGY9bmV3IG9sYihnLnQpO2YuYTxmLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihmKSwyNjgpO3QrPWQuY31mb3IoZT1uZXcgb2xiKGcuaSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDI2OCk7ays9ZC5jfWcubj1rO2cudT10O3Q9PTA/KEdzYih3LGcsdy5jLmIsdy5jKSx0cnVlKTprPT0wJiYoR3NiKEMsZyxDLmMuYixDLmMpLHRydWUpfUY9R3goYSk7bD1hLmMubGVuZ3RoO3A9bCsxO3I9bC0xO249bmV3IFJrYjt3aGlsZShGLmEuZ2MoKSE9MCl7d2hpbGUody5iIT0wKXt2PShzQ2Iody5iIT0wKSxCRChOc2Iodyx3LmEuYSksMTI4KSk7Ri5hLkJjKHYpIT1udWxsO3Yucz1yLS07QVFjKHYsQyx3KX13aGlsZShDLmIhPTApe0E9KHNDYihDLmIhPTApLEJEKE5zYihDLEMuYS5hKSwxMjgpKTtGLmEuQmMoQSkhPW51bGw7QS5zPXArKztBUWMoQSxDLHcpfW89UmllO2ZvcihqPUYuYS5lYygpLktjKCk7ai5PYigpOyl7Zz1CRChqLlBiKCksMTI4KTtzPWcudS1nLm47aWYocz49byl7aWYocz5vKXtuLmM9S0MoU0ksVWhlLDEsMCw1LDEpO289c31uLmNbbi5jLmxlbmd0aF09Z319aWYobi5jLmxlbmd0aCE9MCl7bT1CRChJa2IobixCdWIoYixuLmMubGVuZ3RoKSksMTI4KTtGLmEuQmMobSkhPW51bGw7bS5zPXArKztBUWMobSxDLHcpO24uYz1LQyhTSSxVaGUsMSwwLDUsMSl9fXU9YS5jLmxlbmd0aCsxO2ZvcihoPW5ldyBvbGIoYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEyOCk7Zy5zPGwmJihnLnMrPXUpfWZvcihCPW5ldyBvbGIoYSk7Qi5hPEIuYy5jLmxlbmd0aDspe0E9QkQobWxiKEIpLDEyOCk7Yz1uZXcgQmliKEEudCwwKTt3aGlsZShjLmI8Yy5kLmdjKCkpe2Q9KHNDYihjLmI8Yy5kLmdjKCkpLEJEKGMuZC5YYihjLmM9Yy5iKyspLDI2OCkpO0Q9ZC5iO2lmKEEucz5ELnMpe3VpYihjKTtMa2IoRC5pLGQpO2lmKGQuYz4wKXtkLmE9RDtFa2IoRC50LGQpO2QuYj1BO0VrYihBLmksZCl9fX19fVxuZnVuY3Rpb24gcWRlKGEpe3ZhciBiLGMsZCxlLGY7Yj1hLmM7c3dpdGNoKGIpe2Nhc2UgMTE6cmV0dXJuIGEuTWwoKTtjYXNlIDEyOnJldHVybiBhLk9sKCk7Y2FzZSAxNDpyZXR1cm4gYS5RbCgpO2Nhc2UgMTU6cmV0dXJuIGEuVGwoKTtjYXNlIDE2OnJldHVybiBhLlJsKCk7Y2FzZSAxNzpyZXR1cm4gYS5VbCgpO2Nhc2UgMjE6bmRlKGEpO3JldHVybiB3ZmUoKSx3ZmUoKSxmZmU7Y2FzZSAxMDpzd2l0Y2goYS5hKXtjYXNlIDY1OnJldHVybiBhLnlsKCk7Y2FzZSA5MDpyZXR1cm4gYS5EbCgpO2Nhc2UgMTIyOnJldHVybiBhLktsKCk7Y2FzZSA5ODpyZXR1cm4gYS5FbCgpO2Nhc2UgNjY6cmV0dXJuIGEuemwoKTtjYXNlIDYwOnJldHVybiBhLkpsKCk7Y2FzZSA2MjpyZXR1cm4gYS5IbCgpO319Zj1wZGUoYSk7Yj1hLmM7c3dpdGNoKGIpe2Nhc2UgMzpyZXR1cm4gYS5abChmKTtjYXNlIDQ6cmV0dXJuIGEuWGwoZik7Y2FzZSA1OnJldHVybiBhLllsKGYpO2Nhc2UgMDppZihhLmE9PTEyMyYmYS5kPGEuail7ZT1hLmQ7ZD0wO2M9LTE7aWYoKGI9YmZiKGEuaSxlKyspKT49NDgmJmI8PTU3KXtkPWItNDg7d2hpbGUoZTxhLmomJihiPWJmYihhLmksZSsrKSk+PTQ4JiZiPD01Nyl7ZD1kKjEwK2ItNDg7aWYoZDwwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksYnZlKSkpKX19ZWxzZXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFp1ZSkpKSl9Yz1kO2lmKGI9PTQ0KXtpZihlPj1hLmope3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksX3VlKSkpKX1lbHNlIGlmKChiPWJmYihhLmksZSsrKSk+PTQ4JiZiPD01Nyl7Yz1iLTQ4O3doaWxlKGU8YS5qJiYoYj1iZmIoYS5pLGUrKykpPj00OCYmYjw9NTcpe2M9YyoxMCtiLTQ4O2lmKGM8MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLGJ2ZSkpKSl9aWYoZD5jKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksYXZlKSkpKX1lbHNle2M9LTF9fWlmKGIhPTEyNSl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLCR1ZSkpKSk7aWYoYS5zbChlKSl7Zj0od2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGxnZSg5LGYpKTthLmQ9ZSsxfWVsc2V7Zj0od2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGxnZSgzLGYpKTthLmQ9ZX1mLmRtKGQpO2YuY20oYyk7bmRlKGEpfX1yZXR1cm4gZn1cbmZ1bmN0aW9uICRiYyhhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxELEY7cD1uZXcgU2tiKGIuYik7dT1uZXcgU2tiKGIuYik7bT1uZXcgU2tiKGIuYik7Qj1uZXcgU2tiKGIuYik7cT1uZXcgU2tiKGIuYik7Zm9yKEE9SnNiKGIsMCk7QS5iIT1BLmQuYzspe3Y9QkQoWHNiKEEpLDExKTtmb3IoaD1uZXcgb2xiKHYuZyk7aC5hPGguYy5jLmxlbmd0aDspe2Y9QkQobWxiKGgpLDE3KTtpZihmLmMuaT09Zi5kLmkpe2lmKHYuaj09Zi5kLmope0IuY1tCLmMubGVuZ3RoXT1mO2NvbnRpbnVlfWVsc2UgaWYodi5qPT0oVWNkKCksQWNkKSYmZi5kLmo9PVJjZCl7cS5jW3EuYy5sZW5ndGhdPWY7Y29udGludWV9fX19Zm9yKGk9bmV3IG9sYihxKTtpLmE8aS5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoaSksMTcpO19iYyhhLGYsYyxkLChVY2QoKSx6Y2QpKX1mb3IoZz1uZXcgb2xiKEIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxNyk7Qz1uZXcgYjBiKGEpO19fYihDLChqMGIoKSxpMGIpKTt5TmIoQywoTnljKCksVnhjKSwoZGNkKCksJGJkKSk7eU5iKEMsKHd0YygpLCRzYyksZik7RD1uZXcgSDBiO3lOYihELCRzYyxmLmQpO0cwYihELChVY2QoKSxUY2QpKTtGMGIoRCxDKTtGPW5ldyBIMGI7eU5iKEYsJHNjLGYuYyk7RzBiKEYsemNkKTtGMGIoRixDKTt5TmIoZi5jLGd0YyxDKTt5TmIoZi5kLGd0YyxDKTtRWmIoZixudWxsKTtSWmIoZixudWxsKTtjLmNbYy5jLmxlbmd0aF09Qzt5TmIoQyx5c2MsbWViKDIpKX1mb3Iodz1Kc2IoYiwwKTt3LmIhPXcuZC5jOyl7dj1CRChYc2IodyksMTEpO2o9di5lLmMubGVuZ3RoPjA7cj12LmcuYy5sZW5ndGg+MDtqJiZyPyhtLmNbbS5jLmxlbmd0aF09dix0cnVlKTpqPyhwLmNbcC5jLmxlbmd0aF09dix0cnVlKTpyJiYodS5jW3UuYy5sZW5ndGhdPXYsdHJ1ZSl9Zm9yKG89bmV3IG9sYihwKTtvLmE8by5jLmMubGVuZ3RoOyl7bj1CRChtbGIobyksMTEpO0VrYihlLFpiYyhhLG4sbnVsbCxjKSl9Zm9yKHQ9bmV3IG9sYih1KTt0LmE8dC5jLmMubGVuZ3RoOyl7cz1CRChtbGIodCksMTEpO0VrYihlLFpiYyhhLG51bGwscyxjKSl9Zm9yKGw9bmV3IG9sYihtKTtsLmE8bC5jLmMubGVuZ3RoOyl7az1CRChtbGIobCksMTEpO0VrYihlLFpiYyhhLGssayxjKSl9fVxuZnVuY3Rpb24gTkNiKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQ7cz1uZXcgZjdjKFBqZSxQamUpO2I9bmV3IGY3YyhRamUsUWplKTtmb3IoQj1uZXcgb2xiKGEpO0IuYTxCLmMuYy5sZW5ndGg7KXtBPUJEKG1sYihCKSw4KTtzLmE9JHduZC5NYXRoLm1pbihzLmEsQS5hKTtzLmI9JHduZC5NYXRoLm1pbihzLmIsQS5iKTtiLmE9JHduZC5NYXRoLm1heChiLmEsQS5hKTtiLmI9JHduZC5NYXRoLm1heChiLmIsQS5iKX1tPW5ldyBmN2MoYi5hLXMuYSxiLmItcy5iKTtqPW5ldyBmN2Mocy5hLTUwLHMuYi1tLmEtNTApO2s9bmV3IGY3YyhzLmEtNTAsYi5iK20uYSs1MCk7bD1uZXcgZjdjKGIuYSttLmIvMis1MCxzLmIrbS5iLzIpO249bmV3IGVEYihqLGssbCk7dz1uZXcgVHFiO2Y9bmV3IFJrYjtjPW5ldyBSa2I7dy5hLnpjKG4sdyk7Zm9yKEQ9bmV3IG9sYihhKTtELmE8RC5jLmMubGVuZ3RoOyl7Qz1CRChtbGIoRCksOCk7Zi5jPUtDKFNJLFVoZSwxLDAsNSwxKTtmb3Iodj13LmEuZWMoKS5LYygpO3YuT2IoKTspe3Q9QkQodi5QYigpLDMwOCk7ZD10LmQ7UzZjKGQsdC5hKTtKeShTNmModC5kLEMpLFM2Yyh0LmQsdC5hKSk8MCYmKGYuY1tmLmMubGVuZ3RoXT10LHRydWUpfWMuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Zm9yKHU9bmV3IG9sYihmKTt1LmE8dS5jLmMubGVuZ3RoOyl7dD1CRChtbGIodSksMzA4KTtmb3IocT1uZXcgb2xiKHQuZSk7cS5hPHEuYy5jLmxlbmd0aDspe289QkQobWxiKHEpLDE2OCk7Zz10cnVlO2ZvcihpPW5ldyBvbGIoZik7aS5hPGkuYy5jLmxlbmd0aDspe2g9QkQobWxiKGkpLDMwOCk7aCE9dCYmKHd0YihvLElrYihoLmUsMCkpfHx3dGIobyxJa2IoaC5lLDEpKXx8d3RiKG8sSWtiKGguZSwyKSkpJiYoZz1mYWxzZSl9ZyYmKGMuY1tjLmMubGVuZ3RoXT1vLHRydWUpfX1WZSh3LGYpO3JlYih3LG5ldyBPQ2IpO2ZvcihwPW5ldyBvbGIoYyk7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDE2OCk7UXFiKHcsbmV3IGVEYihDLG8uYSxvLmIpKX19cj1uZXcgVHFiO3JlYih3LG5ldyBRQ2IocikpO2U9ci5hLmVjKCkuS2MoKTt3aGlsZShlLk9iKCkpe289QkQoZS5QYigpLDE2OCk7KGREYihuLG8uYSl8fGREYihuLG8uYikpJiZlLlFiKCl9cmViKHIsbmV3IFNDYik7cmV0dXJuIHJ9XG5mdW5jdGlvbiBfVGIoYSl7dmFyIGIsYyxkLGUsZjtjPUJEKHZOYihhLCh3dGMoKSxLc2MpKSwyMSk7Yj1rM2MoV1RiKTtlPUJEKHZOYihhLChOeWMoKSxheGMpKSwzMzQpO2U9PShoYmQoKSxlYmQpJiZkM2MoYixYVGIpO0NjYihERCh2TmIoYSwkd2MpKSk/ZTNjKGIsKHFVYigpLGxVYiksKFM4YigpLEk4YikpOmUzYyhiLChxVWIoKSxuVWIpLChTOGIoKSxJOGIpKTt2TmIoYSwoZzZjKCksZjZjKSkhPW51bGwmJmQzYyhiLFlUYik7KENjYihERCh2TmIoYSxoeGMpKSl8fENjYihERCh2TmIoYSxfd2MpKSkpJiZjM2MoYiwocVViKCkscFViKSwoUzhiKCksVzdiKSk7c3dpdGNoKEJEKHZOYihhLEx3YyksMTAzKS5nKXtjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjM2MoZTNjKGIsKHFVYigpLGxVYiksKFM4YigpLFk3YikpLHBVYixYN2IpO31jLkhjKChPcmMoKSxGcmMpKSYmYzNjKGUzYyhlM2MoYiwocVViKCksbFViKSwoUzhiKCksVjdiKSksb1ViLFQ3YikscFViLFU3Yik7UEQodk5iKGEscnhjKSkhPT1QRCgoa0FjKCksaUFjKSkmJmUzYyhiLChxVWIoKSxuVWIpLChTOGIoKSxBOGIpKTtpZihjLkhjKE1yYykpe2UzYyhiLChxVWIoKSxsVWIpLChTOGIoKSxHOGIpKTtlM2MoYixtVWIsRThiKTtlM2MoYixuVWIsRjhiKX1QRCh2TmIoYSxzd2MpKSE9PVBEKCh5cmMoKSx3cmMpKSYmUEQodk5iKGEsU3djKSkhPT1QRCgoQWFkKCkseGFkKSkmJmMzYyhiLChxVWIoKSxwVWIpLChTOGIoKSxqOGIpKTtDY2IoREQodk5iKGEsY3hjKSkpJiZlM2MoYiwocVViKCksblViKSwoUzhiKCksaThiKSk7Q2NiKEREKHZOYihhLEh3YykpKSYmZTNjKGIsKHFVYigpLG5VYiksKFM4YigpLE84YikpO2lmKGNVYihhKSl7UEQodk5iKGEsYXhjKSk9PT1QRChlYmQpPyhkPUJEKHZOYihhLEN3YyksMjkyKSk6KGQ9QkQodk5iKGEsRHdjKSwyOTIpKTtmPWQ9PShYcmMoKSxWcmMpPyhTOGIoKSxEOGIpOihTOGIoKSxSOGIpO2UzYyhiLChxVWIoKSxvVWIpLGYpfXN3aXRjaChCRCh2TmIoYSxLeWMpLDM3NykuZyl7Y2FzZSAxOmUzYyhiLChxVWIoKSxvVWIpLChTOGIoKSxQOGIpKTticmVhaztjYXNlIDI6YzNjKGUzYyhlM2MoYiwocVViKCksblViKSwoUzhiKCksUDdiKSksb1ViLFE3YikscFViLFI3Yik7fVBEKHZOYihhLHl3YykpIT09UEQoKHRBYygpLHJBYykpJiZlM2MoYiwocVViKCksblViKSwoUzhiKCksUThiKSk7cmV0dXJuIGJ9XG5mdW5jdGlvbiBtWmMoYSl7cjRjKGEsbmV3IEUzYyhQM2MoTTNjKE8zYyhOM2MobmV3IFIzYyxLcmUpLCdFTEsgUmVjdGFuZ2xlIFBhY2tpbmcnKSwnQWxnb3JpdGhtIGZvciBwYWNraW5nIG9mIHVuY29ubmVjdGVkIGJveGVzLCBpLmUuIGdyYXBocyB3aXRob3V0IGVkZ2VzLiBUaGUgZ2l2ZW4gb3JkZXIgb2YgdGhlIGJveGVzIGlzIGFsd2F5cyBwcmVzZXJ2ZWQgYW5kIHRoZSBtYWluIHJlYWRpbmcgZGlyZWN0aW9uIG9mIHRoZSBib3hlcyBpcyBsZWZ0IHRvIHJpZ2h0LiBUaGUgYWxnb3JpdGhtIGlzIGRpdmlkZWQgaW50byB0d28gcGhhc2VzLiBPbmUgcGhhc2UgYXBwcm94aW1hdGVzIHRoZSB3aWR0aCBpbiB3aGljaCB0aGUgcmVjdGFuZ2xlcyBjYW4gYmUgcGxhY2VkLiBUaGUgbmV4dCBwaGFzZSBwbGFjZXMgdGhlIHJlY3RhbmdsZXMgaW4gcm93cyB1c2luZyB0aGUgcHJldmlvdXNseSBjYWxjdWxhdGVkIHdpZHRoIGFzIGJvdW5kaW5nIHdpZHRoIGFuZCBidW5kbGVzIHJlY3RhbmdsZXMgd2l0aCBhIHNpbWlsYXIgaGVpZ2h0IGluIGJsb2Nrcy4gQSBjb21wYWN0aW9uIHN0ZXAgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgZHJhd2luZy4gRmluYWxseSwgdGhlIHJlY3RhbmdsZXMgYXJlIGV4cGFuZGVkIHRvIGZpbGwgdGhlaXIgYm91bmRpbmcgYm94IGFuZCBlbGltaW5hdGUgZW1wdHkgdW51c2VkIHNwYWNlcy4nKSxuZXcgcFpjKSkpO3A0YyhhLEtyZSxfbGUsMS4zKTtwNGMoYSxLcmUsSnJlLEtzZChWWWMpKTtwNGMoYSxLcmUsYW1lLGdaYyk7cDRjKGEsS3JlLHdtZSwxNSk7cDRjKGEsS3JlLGxxZSxLc2QoU1ljKSk7cDRjKGEsS3JlLEZtZSxLc2QoX1ljKSk7cDRjKGEsS3JlLFRtZSxLc2QoYVpjKSk7cDRjKGEsS3JlLEVtZSxLc2QoYlpjKSk7cDRjKGEsS3JlLEdtZSxLc2QoJFljKSk7cDRjKGEsS3JlLERtZSxLc2QoY1pjKSk7cDRjKGEsS3JlLEhtZSxLc2QoaFpjKSk7cDRjKGEsS3JlLEJyZSxLc2QoZVpjKSk7cDRjKGEsS3JlLENyZSxLc2QoWlljKSk7cDRjKGEsS3JlLEZyZSxLc2QoZFpjKSk7cDRjKGEsS3JlLEdyZSxLc2QoaVpjKSk7cDRjKGEsS3JlLEhyZSxLc2QoV1ljKSk7cDRjKGEsS3JlLEFtZSxLc2QoWFljKSk7cDRjKGEsS3JlLHhxZSxLc2QoWVljKSk7cDRjKGEsS3JlLEVyZSxLc2QoVVljKSk7cDRjKGEsS3JlLERyZSxLc2QoVFljKSk7cDRjKGEsS3JlLElyZSxLc2Qoa1pjKSl9XG5mdW5jdGlvbiBXbWQoYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHI7aWYoZD09bnVsbCl7cmV0dXJuIG51bGx9aWYoYi5hIT1jLkFqKCkpe3Rocm93IHZiYihuZXcgV2RiKHR0ZStjLm5lKCkrdXRlKSl9aWYoSkQoYyw0NTcpKXtyPV9QZChCRChjLDY3MSksZCk7aWYoIXIpe3Rocm93IHZiYihuZXcgV2RiKHZ0ZStkK1wiJyBpcyBub3QgYSB2YWxpZCBlbnVtZXJhdG9yIG9mICdcIitjLm5lKCkrXCInXCIpKX1yZXR1cm4gcn1zd2l0Y2gobzFkKChPNmQoKSxNNmQpLGMpLmNsKCkpe2Nhc2UgMjp7ZD1RZ2UoZCxmYWxzZSk7YnJlYWt9Y2FzZSAzOntkPVFnZShkLHRydWUpO2JyZWFrfX1lPW8xZChNNmQsYykuJGsoKTtpZihlKXtyZXR1cm4gZS5BaigpLk5oKCkuS2goZSxkKX1uPW8xZChNNmQsYykuYWwoKTtpZihuKXtyPW5ldyBSa2I7Zm9yKGs9Wm1kKGQpLGw9MCxtPWsubGVuZ3RoO2w8bTsrK2wpe2o9a1tsXTtFa2IocixuLkFqKCkuTmgoKS5LaChuLGopKX1yZXR1cm4gcn1xPW8xZChNNmQsYykuYmwoKTtpZighcS5kYygpKXtmb3IocD1xLktjKCk7cC5PYigpOyl7bz1CRChwLlBiKCksMTQ4KTt0cnl7cj1vLkFqKCkuTmgoKS5LaChvLGQpO2lmKHIhPW51bGwpe3JldHVybiByfX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSw2MCkpdGhyb3cgdmJiKGEpfX10aHJvdyB2YmIobmV3IFdkYih2dGUrZCtcIicgZG9lcyBub3QgbWF0Y2ggYW55IG1lbWJlciB0eXBlcyBvZiB0aGUgdW5pb24gZGF0YXR5cGUgJ1wiK2MubmUoKStcIidcIikpfUJEKGMsODM0KS5GaigpO2Y9cjZkKGMuQmooKSk7aWYoIWYpcmV0dXJuIG51bGw7aWYoZj09eUkpe2g9MDt0cnl7aD1JY2IoZCxSaWUsT2hlKSZhamV9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMjcpKXtnPXJmYihkKTtoPWdbMF19ZWxzZSB0aHJvdyB2YmIoYSl9cmV0dXJuIGJkYihoKX1pZihmPT0kSil7Zm9yKGk9MDtpPFBtZC5sZW5ndGg7KytpKXt0cnl7cmV0dXJuIERRZChQbWRbaV0sZCl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoIUpEKGEsMzIpKXRocm93IHZiYihhKX19dGhyb3cgdmJiKG5ldyBXZGIodnRlK2QrXCInIGlzIG5vdCBhIGRhdGUgZm9ybWF0dGVkIHN0cmluZyBvZiB0aGUgZm9ybSB5eXl5LU1NLWRkJ1QnSEg6bW06c3MnLidTU1NaIG9yIGEgdmFsaWQgc3Vic2V0IHRoZXJlb2ZcIikpfXRocm93IHZiYihuZXcgV2RiKHZ0ZStkK1wiJyBpcyBpbnZhbGlkLiBcIikpfVxuZnVuY3Rpb24gbmdiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksajtjPTA7Zz0wO2Y9Yi5sZW5ndGg7aD1udWxsO2o9bmV3IFZmYjtpZihnPGYmJihCQ2IoZyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGcpPT00MykpeysrZzsrK2M7aWYoZzxmJiYoQkNiKGcsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChnKT09NDN8fChCQ2IoZyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGcpPT00NSkpKXt0aHJvdyB2YmIobmV3IE9lYihPamUrYisnXCInKSl9fXdoaWxlKGc8ZiYmKEJDYihnLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZykhPTQ2KSYmKEJDYihnLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZykhPTEwMSkmJihCQ2IoZyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGcpIT02OSkpeysrZ31qLmErPScnK3FmYihiPT1udWxsP1hoZToodUNiKGIpLGIpLGMsZyk7aWYoZzxmJiYoQkNiKGcsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChnKT09NDYpKXsrK2c7Yz1nO3doaWxlKGc8ZiYmKEJDYihnLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZykhPTEwMSkmJihCQ2IoZyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGcpIT02OSkpeysrZ31hLmU9Zy1jO2ouYSs9JycrcWZiKGI9PW51bGw/WGhlOih1Q2IoYiksYiksYyxnKX1lbHNle2EuZT0wfWlmKGc8ZiYmKEJDYihnLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZyk9PTEwMXx8KEJDYihnLGIubGVuZ3RoKSxiLmNoYXJDb2RlQXQoZyk9PTY5KSkpeysrZztjPWc7aWYoZzxmJiYoQkNiKGcsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChnKT09NDMpKXsrK2c7ZzxmJiYoQkNiKGcsYi5sZW5ndGgpLGIuY2hhckNvZGVBdChnKSE9NDUpJiYrK2N9aD1iLnN1YnN0cihjLGYtYyk7YS5lPWEuZS1JY2IoaCxSaWUsT2hlKTtpZihhLmUhPVFEKGEuZSkpe3Rocm93IHZiYihuZXcgT2ViKCdTY2FsZSBvdXQgb2YgcmFuZ2UuJykpfX1pPWouYTtpZihpLmxlbmd0aDwxNil7YS5mPShrZ2I9PW51bGwmJihrZ2I9bmV3IFJlZ0V4cCgnXlsrLV0/XFxcXGQqJCcsJ2knKSksa2diLnRlc3QoaSk/cGFyc2VJbnQoaSwxMCk6TmFOKTtpZihpc05hTihhLmYpKXt0aHJvdyB2YmIobmV3IE9lYihPamUrYisnXCInKSl9YS5hPXVnYihhLmYpfWVsc2V7b2diKGEsbmV3IFlnYihpKSl9YS5kPWouYS5sZW5ndGg7Zm9yKGU9MDtlPGouYS5sZW5ndGg7KytlKXtkPWJmYihqLmEsZSk7aWYoZCE9NDUmJmQhPTQ4KXticmVha30tLWEuZH1hLmQ9PTAmJihhLmQ9MSl9XG5mdW5jdGlvbiB4WGIoKXt4WGI9Y2NiO3dYYj1uZXcgSHA7UmMod1hiLChVY2QoKSxGY2QpLEpjZCk7UmMod1hiLFFjZCxKY2QpO1JjKHdYYixRY2QsTWNkKTtSYyh3WGIsQmNkLEljZCk7UmMod1hiLEJjZCxKY2QpO1JjKHdYYixHY2QsSmNkKTtSYyh3WGIsR2NkLEtjZCk7UmMod1hiLE9jZCxEY2QpO1JjKHdYYixPY2QsSmNkKTtSYyh3WGIsTGNkLEVjZCk7UmMod1hiLExjZCxKY2QpO1JjKHdYYixMY2QsS2NkKTtSYyh3WGIsTGNkLERjZCk7UmMod1hiLEVjZCxMY2QpO1JjKHdYYixFY2QsTWNkKTtSYyh3WGIsRWNkLEljZCk7UmMod1hiLEVjZCxKY2QpO1JjKHdYYixOY2QsTmNkKTtSYyh3WGIsTmNkLEtjZCk7UmMod1hiLE5jZCxNY2QpO1JjKHdYYixIY2QsSGNkKTtSYyh3WGIsSGNkLEtjZCk7UmMod1hiLEhjZCxJY2QpO1JjKHdYYixQY2QsUGNkKTtSYyh3WGIsUGNkLERjZCk7UmMod1hiLFBjZCxNY2QpO1JjKHdYYixDY2QsQ2NkKTtSYyh3WGIsQ2NkLERjZCk7UmMod1hiLENjZCxJY2QpO1JjKHdYYixLY2QsR2NkKTtSYyh3WGIsS2NkLExjZCk7UmMod1hiLEtjZCxOY2QpO1JjKHdYYixLY2QsSGNkKTtSYyh3WGIsS2NkLEpjZCk7UmMod1hiLEtjZCxLY2QpO1JjKHdYYixLY2QsTWNkKTtSYyh3WGIsS2NkLEljZCk7UmMod1hiLERjZCxPY2QpO1JjKHdYYixEY2QsTGNkKTtSYyh3WGIsRGNkLFBjZCk7UmMod1hiLERjZCxDY2QpO1JjKHdYYixEY2QsRGNkKTtSYyh3WGIsRGNkLE1jZCk7UmMod1hiLERjZCxJY2QpO1JjKHdYYixEY2QsSmNkKTtSYyh3WGIsTWNkLFFjZCk7UmMod1hiLE1jZCxFY2QpO1JjKHdYYixNY2QsTmNkKTtSYyh3WGIsTWNkLFBjZCk7UmMod1hiLE1jZCxLY2QpO1JjKHdYYixNY2QsRGNkKTtSYyh3WGIsTWNkLE1jZCk7UmMod1hiLE1jZCxKY2QpO1JjKHdYYixJY2QsQmNkKTtSYyh3WGIsSWNkLEVjZCk7UmMod1hiLEljZCxIY2QpO1JjKHdYYixJY2QsQ2NkKTtSYyh3WGIsSWNkLEtjZCk7UmMod1hiLEljZCxEY2QpO1JjKHdYYixJY2QsSWNkKTtSYyh3WGIsSWNkLEpjZCk7UmMod1hiLEpjZCxGY2QpO1JjKHdYYixKY2QsUWNkKTtSYyh3WGIsSmNkLEJjZCk7UmMod1hiLEpjZCxHY2QpO1JjKHdYYixKY2QsT2NkKTtSYyh3WGIsSmNkLExjZCk7UmMod1hiLEpjZCxFY2QpO1JjKHdYYixKY2QsS2NkKTtSYyh3WGIsSmNkLERjZCk7UmMod1hiLEpjZCxNY2QpO1JjKHdYYixKY2QsSWNkKTtSYyh3WGIsSmNkLEpjZCl9XG5mdW5jdGlvbiBZWGIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCO2EuZD1uZXcgZjdjKFBqZSxQamUpO2EuYz1uZXcgZjdjKFFqZSxRamUpO2ZvcihtPWIuS2MoKTttLk9iKCk7KXtrPUJEKG0uUGIoKSwzNyk7Zm9yKHQ9bmV3IG9sYihrLmEpO3QuYTx0LmMuYy5sZW5ndGg7KXtzPUJEKG1sYih0KSwxMCk7YS5kLmE9JHduZC5NYXRoLm1pbihhLmQuYSxzLm4uYS1zLmQuYik7YS5kLmI9JHduZC5NYXRoLm1pbihhLmQuYixzLm4uYi1zLmQuZCk7YS5jLmE9JHduZC5NYXRoLm1heChhLmMuYSxzLm4uYStzLm8uYStzLmQuYyk7YS5jLmI9JHduZC5NYXRoLm1heChhLmMuYixzLm4uYitzLm8uYitzLmQuYSl9fWg9bmV3IG5ZYjtmb3IobD1iLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMzcpO2Q9ZlliKGEsayk7RWtiKGguYSxkKTtkLmE9ZC5hfCFCRCh2TmIoZC5jLCh3dGMoKSxFc2MpKSwyMSkuZGMoKX1hLmI9KExVYigpLEI9bmV3IFZVYixCLmY9bmV3IENVYihjKSxCLmI9QlViKEIuZixoKSxCKTtQVWIoKG89YS5iLG5ldyBaZGQsbykpO2EuZT1uZXcgZDdjO2EuYT1hLmIuZi5lO2ZvcihnPW5ldyBvbGIoaC5hKTtnLmE8Zy5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZyksODQxKTt1PVFVYihhLmIsZSk7Z19iKGUuYyx1LmEsdS5iKTtmb3IocT1uZXcgb2xiKGUuYy5hKTtxLmE8cS5jLmMubGVuZ3RoOyl7cD1CRChtbGIocSksMTApO2lmKHAuaz09KGowYigpLGUwYikpe3I9YVliKGEscC5uLEJEKHZOYihwLCh3dGMoKSxIc2MpKSw2MSkpO1A2YyhYNmMocC5uKSxyKX19fWZvcihmPW5ldyBvbGIoaC5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksODQxKTtmb3Ioaj1uZXcgb2xiKGxZYihlKSk7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDE3KTtBPW5ldyB0N2MoaS5hKTtTdChBLDAsQTBiKGkuYykpO0RzYihBLEEwYihpLmQpKTtuPW51bGw7Zm9yKHc9SnNiKEEsMCk7dy5iIT13LmQuYzspe3Y9QkQoWHNiKHcpLDgpO2lmKCFuKXtuPXY7Y29udGludWV9aWYoS3kobi5hLHYuYSkpe2EuZS5hPSR3bmQuTWF0aC5taW4oYS5lLmEsbi5hKTthLmEuYT0kd25kLk1hdGgubWF4KGEuYS5hLG4uYSl9ZWxzZSBpZihLeShuLmIsdi5iKSl7YS5lLmI9JHduZC5NYXRoLm1pbihhLmUuYixuLmIpO2EuYS5iPSR3bmQuTWF0aC5tYXgoYS5hLmIsbi5iKX1uPXZ9fX1WNmMoYS5lKTtQNmMoYS5hLGEuZSl9XG5mdW5jdGlvbiB3WmQoYSl7Qm5kKGEuYixfdmUsT0MoR0MoWkksMSksbmllLDIsNixbYndlLCdDb25zaXN0ZW50VHJhbnNpZW50J10pKTtCbmQoYS5hLF92ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtid2UsJ1dlbGxGb3JtZWRTb3VyY2VVUkknXSkpO0JuZChhLm8sX3ZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2J3ZSwnSW50ZXJmYWNlSXNBYnN0cmFjdCBBdE1vc3RPbmVJRCBVbmlxdWVGZWF0dXJlTmFtZXMgVW5pcXVlT3BlcmF0aW9uU2lnbmF0dXJlcyBOb0NpcmN1bGFyU3VwZXJUeXBlcyBXZWxsRm9ybWVkTWFwRW50cnlDbGFzcyBDb25zaXN0ZW50U3VwZXJUeXBlcyBEaXNqb2ludEZlYXR1cmVBbmRPcGVyYXRpb25TaWduYXR1cmVzJ10pKTtCbmQoYS5wLF92ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtid2UsJ1dlbGxGb3JtZWRJbnN0YW5jZVR5cGVOYW1lIFVuaXF1ZVR5cGVQYXJhbWV0ZXJOYW1lcyddKSk7Qm5kKGEudixfdmUsT0MoR0MoWkksMSksbmllLDIsNixbYndlLCdVbmlxdWVFbnVtZXJhdG9yTmFtZXMgVW5pcXVlRW51bWVyYXRvckxpdGVyYWxzJ10pKTtCbmQoYS5SLF92ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtid2UsJ1dlbGxGb3JtZWROYW1lJ10pKTtCbmQoYS5ULF92ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtid2UsJ1VuaXF1ZVBhcmFtZXRlck5hbWVzIFVuaXF1ZVR5cGVQYXJhbWV0ZXJOYW1lcyBOb1JlcGVhdGluZ1ZvaWQnXSkpO0JuZChhLlUsX3ZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2J3ZSwnV2VsbEZvcm1lZE5zVVJJIFdlbGxGb3JtZWROc1ByZWZpeCBVbmlxdWVTdWJwYWNrYWdlTmFtZXMgVW5pcXVlQ2xhc3NpZmllck5hbWVzIFVuaXF1ZU5zVVJJcyddKSk7Qm5kKGEuVyxfdmUsT0MoR0MoWkksMSksbmllLDIsNixbYndlLCdDb25zaXN0ZW50T3Bwb3NpdGUgU2luZ2xlQ29udGFpbmVyIENvbnNpc3RlbnRLZXlzIENvbnNpc3RlbnRVbmlxdWUgQ29uc2lzdGVudENvbnRhaW5lciddKSk7Qm5kKGEuYmIsX3ZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2J3ZSwnVmFsaWREZWZhdWx0VmFsdWVMaXRlcmFsJ10pKTtCbmQoYS5lYixfdmUsT0MoR0MoWkksMSksbmllLDIsNixbYndlLCdWYWxpZExvd2VyQm91bmQgVmFsaWRVcHBlckJvdW5kIENvbnNpc3RlbnRCb3VuZHMgVmFsaWRUeXBlJ10pKTtCbmQoYS5ILF92ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtid2UsJ0NvbnNpc3RlbnRUeXBlIENvbnNpc3RlbnRCb3VuZHMgQ29uc2lzdGVudEFyZ3VtZW50cyddKSl9XG5mdW5jdGlvbiBCNGIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEM7aWYoYi5kYygpKXtyZXR1cm59ZT1uZXcgczdjO2g9Yz9jOkJEKGIuWGIoMCksMTcpO289aC5jO2hRYygpO209by5pLms7aWYoIShtPT0oajBiKCksaDBiKXx8bT09aTBifHxtPT1lMGJ8fG09PWQwYikpe3Rocm93IHZiYihuZXcgV2RiKCdUaGUgdGFyZ2V0IG5vZGUgb2YgdGhlIGVkZ2UgbXVzdCBiZSBhIG5vcm1hbCBub2RlIG9yIGEgbm9ydGhTb3V0aFBvcnQuJykpfUZzYihlLGw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtvLmkubixvLm4sby5hXSkpKTtpZigoVWNkKCksTGNkKS5IYyhvLmopKXtxPUVkYihFRCh2TmIobywod3RjKCkscXRjKSkpKTtsPW5ldyBmN2MobDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW28uaS5uLG8ubixvLmFdKSkuYSxxKTtHc2IoZSxsLGUuYy5iLGUuYyl9az1udWxsO2Q9ZmFsc2U7aT1iLktjKCk7d2hpbGUoaS5PYigpKXtnPUJEKGkuUGIoKSwxNyk7Zj1nLmE7aWYoZi5iIT0wKXtpZihkKXtqPVk2YyhQNmMoaywoc0NiKGYuYiE9MCksQkQoZi5hLmEuYyw4KSkpLDAuNSk7R3NiKGUsaixlLmMuYixlLmMpO2Q9ZmFsc2V9ZWxzZXtkPXRydWV9az1SNmMoKHNDYihmLmIhPTApLEJEKGYuYy5iLmMsOCkpKTt5ZShlLGYpO09zYihmKX19cD1oLmQ7aWYoTGNkLkhjKHAuaikpe3E9RWRiKEVEKHZOYihwLCh3dGMoKSxxdGMpKSkpO2w9bmV3IGY3YyhsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbcC5pLm4scC5uLHAuYV0pKS5hLHEpO0dzYihlLGwsZS5jLmIsZS5jKX1Gc2IoZSxsN2MoT0MoR0MobTEsMSksbmllLDgsMCxbcC5pLm4scC5uLHAuYV0pKSk7YS5kPT0odEJjKCkscUJjKSYmKHI9KHNDYihlLmIhPTApLEJEKGUuYS5hLmMsOCkpLHM9QkQoVXQoZSwxKSw4KSx0PW5ldyBlN2MoYlJjKG8uaikpLHQuYSo9NSx0LmIqPTUsdT1jN2MobmV3IGY3YyhzLmEscy5iKSxyKSx2PW5ldyBmN2MoQTRiKHQuYSx1LmEpLEE0Yih0LmIsdS5iKSksUDZjKHYsciksdz1Kc2IoZSwxKSxWc2Iodyx2KSxBPShzQ2IoZS5iIT0wKSxCRChlLmMuYi5jLDgpKSxCPUJEKFV0KGUsZS5iLTIpLDgpLHQ9bmV3IGU3YyhiUmMocC5qKSksdC5hKj01LHQuYio9NSx1PWM3YyhuZXcgZjdjKEIuYSxCLmIpLEEpLEM9bmV3IGY3YyhBNGIodC5hLHUuYSksQTRiKHQuYix1LmIpKSxQNmMoQyxBKSxTdChlLGUuYi0xLEMpLHVuZGVmaW5lZCk7bj1uZXcgWVBjKGUpO3llKGguYSxVUGMobikpfVxuZnVuY3Rpb24gS2dkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEgsSSxKLEssTCxNLE4sTyxQO3Q9QkQocXVkKCghYS5iJiYoYS5iPW5ldyB5NWQoejIsYSw0LDcpKSxhLmIpLDApLDgyKTt2PXQuRGcoKTt3PXQuRWcoKTt1PXQuQ2coKS8yO3A9dC5CZygpLzI7aWYoSkQodCwxODYpKXtzPUJEKHQsMTE4KTt2Kz1tcGQocykuaTt2Kz1tcGQocykuaX12Kz11O3crPXA7Rj1CRChxdWQoKCFhLmImJihhLmI9bmV3IHk1ZCh6MixhLDQsNykpLGEuYiksMCksODIpO0g9Ri5EZygpO0k9Ri5FZygpO0c9Ri5DZygpLzI7QT1GLkJnKCkvMjtpZihKRChGLDE4Nikpe0Q9QkQoRiwxMTgpO0grPW1wZChEKS5pO0grPW1wZChEKS5pfUgrPUc7SSs9QTtpZigoIWEuYSYmKGEuYT1uZXcgY1VkKEEyLGEsNiw2KSksYS5hKS5pPT0wKXtoPShGaGQoKSxqPW5ldyBybWQsaik7d3RkKCghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLGgpfWVsc2UgaWYoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkuaT4xKXtvPW5ldyBPeWQoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkpO3doaWxlKG8uZSE9by5pLmdjKCkpe0V5ZChvKX19Zz1CRChxdWQoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSksMCksMjAyKTtxPUg7SD52K3U/KHE9dit1KTpIPHYtdSYmKHE9di11KTtyPUk7ST53K3A/KHI9dytwKTpJPHctcCYmKHI9dy1wKTtxPnYtdSYmcTx2K3UmJnI+dy1wJiZyPHcrcCYmKHE9dit1KTtvbWQoZyxxKTtwbWQoZyxyKTtCPXY7dj5IK0c/KEI9SCtHKTp2PEgtRyYmKEI9SC1HKTtDPXc7dz5JK0E/KEM9SStBKTp3PEktQSYmKEM9SS1BKTtCPkgtRyYmQjxIK0cmJkM+SS1BJiZDPEkrQSYmKEM9SStBKTtobWQoZyxCKTtpbWQoZyxDKTtVeGQoKCFnLmEmJihnLmE9bmV3IHhNZCh5MixnLDUpKSxnLmEpKTtmPUJ1YihiLDUpO3Q9PUYmJisrZjtMPUItcTtPPUMtcjtKPSR3bmQuTWF0aC5zcXJ0KEwqTCtPKk8pO2w9SiowLjIwMDAwMDAwMjk4MDIzMjI0O009TC8oZisxKTtQPU8vKGYrMSk7Sz1xO049cjtmb3Ioaz0wO2s8ZjtrKyspe0srPU07Tis9UDttPUsrQ3ViKGIsMjQpKmxrZSpsLWwvMjttPDA/KG09MSk6bT5jJiYobT1jLTEpO249TitDdWIoYiwyNCkqbGtlKmwtbC8yO248MD8obj0xKTpuPmQmJihuPWQtMSk7ZT0oRmhkKCksaT1uZXcgeGtkLGkpO3ZrZChlLG0pO3drZChlLG4pO3d0ZCgoIWcuYSYmKGcuYT1uZXcgeE1kKHkyLGcsNSkpLGcuYSksZSl9fVxuZnVuY3Rpb24gTnljKCl7TnljPWNjYjtpeWM9KFk5YygpLEk5Yyk7anljPUo5YztreWM9SzljO2x5Yz1MOWM7bnljPU05YztveWM9TjljO3J5Yz1QOWM7dHljPVI5Yzt1eWM9UzljO3N5Yz1ROWM7dnljPVQ5Yzt4eWM9VTljO3p5Yz1YOWM7cXljPU85YztoeWM9KGp3YygpLEJ2Yyk7bXljPUN2YztweWM9RHZjO3d5Yz1FdmM7YnljPW5ldyBPc2QoRDljLG1lYigwKSk7Y3ljPXl2YztkeWM9enZjO2V5Yz1BdmM7S3ljPWF3YztDeWM9SHZjO0R5Yz1LdmM7R3ljPVN2YztFeWM9TnZjO0Z5Yz1QdmM7TXljPWZ3YztMeWM9Y3djO0l5Yz1ZdmM7SHljPVd2YztKeWM9JHZjO0N4Yz1wdmM7RHhjPXF2YztYd2M9QXVjO1l3Yz1EdWM7THhjPW5ldyBxMGIoMTIpO0t4Yz1uZXcgT3NkKGY5YyxMeGMpO1R3Yz0oQWFkKCksd2FkKTtTd2M9bmV3IE9zZChFOGMsVHdjKTtVeGM9bmV3IE9zZChzOWMsMCk7ZnljPW5ldyBPc2QoRTljLG1lYigxKSk7b3djPW5ldyBPc2QocjhjLHRtZSk7SnhjPWQ5YztWeGM9dDljOyR4Yz1BOWM7S3djPXk4Yzttd2M9cDhjO2F4Yz1KOGM7Z3ljPW5ldyBPc2QoSDljLChCY2IoKSx0cnVlKSk7ZnhjPU04YztneGM9TjhjO0Z4Yz1ZOGM7SXhjPWI5YztHeGM9JDhjO053Yz0oZWFkKCksY2FkKTtMd2M9bmV3IE9zZCh6OGMsTndjKTt4eGM9VzhjO3d4Yz1VOGM7WXhjPXg5YztYeGM9dzljO1p4Yz16OWM7T3hjPShUYmQoKSxTYmQpO25ldyBPc2QobDljLE94Yyk7UXhjPW85YztSeGM9cDljO1N4Yz1xOWM7UHhjPW45YztCeWM9R3ZjO3N4Yz1hdmM7cnhjPSR1YztBeWM9RnZjO214Yz1TdWM7SndjPW11YztJd2M9a3VjO0F3Yz1YdGM7QndjPVl0YztEd2M9YnVjO0N3Yz1adGM7SHdjPWl1Yzt1eGM9Y3ZjO3Z4Yz1kdmM7aXhjPUx1YztFeGM9dXZjO3p4Yz1odmM7JHdjPUd1YztCeGM9bnZjO1Z3Yz13dWM7V3djPXl1Yzt6d2M9dzhjO3l4Yz1ldmM7c3djPU10Yztyd2M9S3RjO3F3Yz1KdGM7Y3hjPUp1YztieGM9SXVjO2R4Yz1LdWM7SHhjPV84YztqeGM9UThjO1p3Yz1HOGM7UXdjPUM4YztQd2M9QjhjO0V3Yz1ldWM7V3hjPXY5Yztwd2M9djhjO2V4Yz1MOGM7VHhjPXI5YztNeGM9aDljO054Yz1qOWM7b3hjPVZ1YztweGM9WHVjO2F5Yz1DOWM7bndjPUl0YztxeGM9WnVjO1J3Yz1zdWM7T3djPXF1Yzt0eGM9UzhjO2t4Yz1QdWM7QXhjPWt2Yzt5eWM9VjljO013Yz1vdWM7X3hjPXd2YztVd2M9dXVjO2x4Yz1SdWM7RndjPWd1YztoeGM9UDhjO254Yz1VdWM7R3djPWh1Yzt5d2M9VnRjO3d3Yz1TdGM7dXdjPVF0Yzt2d2M9UnRjO3h3Yz1VdGM7dHdjPU90Yztfd2M9SHVjfVxuZnVuY3Rpb24gc2hiKGEsYil7cGhiKCk7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEg7Qj1hLmU7bz1hLmQ7ZT1hLmE7aWYoQj09MCl7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gJzAnO2Nhc2UgMTpyZXR1cm4gJGplO2Nhc2UgMjpyZXR1cm4gJzAuMDAnO2Nhc2UgMzpyZXR1cm4gJzAuMDAwJztjYXNlIDQ6cmV0dXJuICcwLjAwMDAnO2Nhc2UgNTpyZXR1cm4gJzAuMDAwMDAnO2Nhc2UgNjpyZXR1cm4gJzAuMDAwMDAwJztkZWZhdWx0Onc9bmV3IFVmYjtiPDA/KHcuYSs9JzBFKycsdyk6KHcuYSs9JzBFJyx3KTt3LmErPS1iO3JldHVybiB3LmE7fX10PW8qMTArMSs3O3U9S0MoVEQsJGllLDI1LHQrMSwxNSwxKTtjPXQ7aWYobz09MSl7aD1lWzBdO2lmKGg8MCl7SD14YmIoaCxZamUpO2Rve3A9SDtIPUFiYihILDEwKTt1Wy0tY109NDgrVGJiKFFiYihwLEliYihILDEwKSkpJmFqZX13aGlsZSh5YmIoSCwwKSE9MCl9ZWxzZXtIPWg7ZG97cD1IO0g9SC8xMHwwO3VbLS1jXT00OCsocC1IKjEwKSZhamV9d2hpbGUoSCE9MCl9fWVsc2V7RD1LQyhXRCxvamUsMjUsbywxNSwxKTtHPW87JGZiKGUsMCxELDAsRyk7STp3aGlsZSh0cnVlKXtBPTA7Zm9yKGo9Ry0xO2o+PTA7ai0tKXtGPXdiYihOYmIoQSwzMikseGJiKERbal0sWWplKSk7cj1xaGIoRik7RFtqXT1UYmIocik7QT1UYmIoT2JiKHIsMzIpKX1zPVRiYihBKTtxPWM7ZG97dVstLWNdPTQ4K3MlMTAmYWplfXdoaWxlKChzPXMvMTB8MCkhPTAmJmMhPTApO2Q9OS1xK2M7Zm9yKGk9MDtpPGQmJmM+MDtpKyspe3VbLS1jXT00OH1sPUctMTtmb3IoO0RbbF09PTA7bC0tKXtpZihsPT0wKXticmVhayBJfX1HPWwrMX13aGlsZSh1W2NdPT00OCl7KytjfX1uPUI8MDtnPXQtYy1iLTE7aWYoYj09MCl7biYmKHVbLS1jXT00NSk7cmV0dXJuIHpmYih1LGMsdC1jKX1pZihiPjAmJmc+PS02KXtpZihnPj0wKXtrPWMrZztmb3IobT10LTE7bT49azttLS0pe3VbbSsxXT11W21dfXVbKytrXT00NjtuJiYodVstLWNdPTQ1KTtyZXR1cm4gemZiKHUsYyx0LWMrMSl9Zm9yKGw9MjtsPC1nKzE7bCsrKXt1Wy0tY109NDh9dVstLWNdPTQ2O3VbLS1jXT00ODtuJiYodVstLWNdPTQ1KTtyZXR1cm4gemZiKHUsYyx0LWMpfUM9YysxO2Y9dDt2PW5ldyBWZmI7biYmKHYuYSs9Jy0nLHYpO2lmKGYtQz49MSl7S2ZiKHYsdVtjXSk7di5hKz0nLic7di5hKz16ZmIodSxjKzEsdC1jLTEpfWVsc2V7di5hKz16ZmIodSxjLHQtYyl9di5hKz0nRSc7Zz4wJiYodi5hKz0nKycsdik7di5hKz0nJytnO3JldHVybiB2LmF9XG5mdW5jdGlvbiB6JGMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHc7YS5jPWI7YS5nPW5ldyBMcWI7Yz0oUGdkKCksbmV3IGJoZChhLmMpKTtkPW5ldyBZR2IoYyk7VUdiKGQpO3Q9R0QoaGtkKGEuYywoZDBjKCksWV9jKSkpO2k9QkQoaGtkKGEuYywkX2MpLDMxNik7dj1CRChoa2QoYS5jLF9fYyksNDI5KTtnPUJEKGhrZChhLmMsVF9jKSw0ODIpO3U9QkQoaGtkKGEuYyxaX2MpLDQzMCk7YS5qPUVkYihFRChoa2QoYS5jLGEwYykpKTtoPWEuYTtzd2l0Y2goaS5nKXtjYXNlIDA6aD1hLmE7YnJlYWs7Y2FzZSAxOmg9YS5iO2JyZWFrO2Nhc2UgMjpoPWEuaTticmVhaztjYXNlIDM6aD1hLmU7YnJlYWs7Y2FzZSA0Omg9YS5mO2JyZWFrO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoTXJlKyhpLmYhPW51bGw/aS5mOicnK2kuZykpKTt9YS5kPW5ldyBnX2MoaCx2LGcpO3lOYihhLmQsKFhOYigpLFZOYiksREQoaGtkKGEuYyxWX2MpKSk7YS5kLmM9Q2NiKEREKGhrZChhLmMsVV9jKSkpO2lmKFZvZChhLmMpLmk9PTApe3JldHVybiBhLmR9Zm9yKGw9bmV3IEZ5ZChWb2QoYS5jKSk7bC5lIT1sLmkuZ2MoKTspe2s9QkQoRHlkKGwpLDMzKTtuPWsuZy8yO209ay5mLzI7dz1uZXcgZjdjKGsuaStuLGsuaittKTt3aGlsZShNaGIoYS5nLHcpKXtPNmModywoJHduZC5NYXRoLnJhbmRvbSgpLTAuNSkqcW1lLCgkd25kLk1hdGgucmFuZG9tKCktMC41KSpxbWUpfXA9QkQoaGtkKGssKFk5YygpLFM4YykpLDE0Mik7cT1uZXcgYU9iKHcsbmV3IEo2Yyh3LmEtbi1hLmovMi1wLmIsdy5iLW0tYS5qLzItcC5kLGsuZythLmorKHAuYitwLmMpLGsuZithLmorKHAuZCtwLmEpKSk7RWtiKGEuZC5pLHEpO1JoYihhLmcsdyxuZXcgdmdkKHEsaykpfXN3aXRjaCh1Lmcpe2Nhc2UgMDppZih0PT1udWxsKXthLmQuZD1CRChJa2IoYS5kLmksMCksNjUpfWVsc2V7Zm9yKHM9bmV3IG9sYihhLmQuaSk7cy5hPHMuYy5jLmxlbmd0aDspe3E9QkQobWxiKHMpLDY1KTtvPUJEKEJEKE9oYihhLmcscS5hKSw0NikuYiwzMykuemcoKTtvIT1udWxsJiZkZmIobyx0KSYmKGEuZC5kPXEpfX1icmVhaztjYXNlIDE6ZT1uZXcgZjdjKGEuYy5nLGEuYy5mKTtlLmEqPTAuNTtlLmIqPTAuNTtPNmMoZSxhLmMuaSxhLmMuaik7Zj1QamU7Zm9yKHI9bmV3IG9sYihhLmQuaSk7ci5hPHIuYy5jLmxlbmd0aDspe3E9QkQobWxiKHIpLDY1KTtqPVM2YyhxLmEsZSk7aWYoajxmKXtmPWo7YS5kLmQ9cX19YnJlYWs7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYihNcmUrKHUuZiE9bnVsbD91LmY6JycrdS5nKSkpO31yZXR1cm4gYS5kfVxuZnVuY3Rpb24gcWZkKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3O3Y9QkQocXVkKCghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLDApLDIwMik7az1uZXcgczdjO3U9bmV3IExxYjt3PXRmZCh2KTtqcmIodS5mLHYsdyk7bT1uZXcgTHFiO2Q9bmV3IFBzYjtmb3Iobz11bChwbChPQyhHQyhLSSwxKSxVaGUsMjAsMCxbKCFiLmQmJihiLmQ9bmV3IHk1ZChCMixiLDgsNSkpLGIuZCksKCFiLmUmJihiLmU9bmV3IHk1ZChCMixiLDcsNCkpLGIuZSldKSkpO1FyKG8pOyl7bj1CRChScihvKSw3OSk7aWYoKCFhLmEmJihhLmE9bmV3IGNVZChBMixhLDYsNikpLGEuYSkuaSE9MSl7dGhyb3cgdmJiKG5ldyBXZGIoVHNlKyghYS5hJiYoYS5hPW5ldyBjVWQoQTIsYSw2LDYpKSxhLmEpLmkpKX1pZihuIT1hKXtxPUJEKHF1ZCgoIW4uYSYmKG4uYT1uZXcgY1VkKEEyLG4sNiw2KSksbi5hKSwwKSwyMDIpO0dzYihkLHEsZC5jLmIsZC5jKTtwPUJEKFdkKGlyYih1LmYscSkpLDEyKTtpZighcCl7cD10ZmQocSk7anJiKHUuZixxLHApfWw9Yz9jN2MobmV3IGc3YyhCRChJa2Iodyx3LmMubGVuZ3RoLTEpLDgpKSxCRChJa2IocCxwLmMubGVuZ3RoLTEpLDgpKTpjN2MobmV3IGc3YygodENiKDAsdy5jLmxlbmd0aCksQkQody5jWzBdLDgpKSksKHRDYigwLHAuYy5sZW5ndGgpLEJEKHAuY1swXSw4KSkpO2pyYihtLmYscSxsKX19aWYoZC5iIT0wKXtyPUJEKElrYih3LGM/dy5jLmxlbmd0aC0xOjApLDgpO2ZvcihqPTE7ajx3LmMubGVuZ3RoO2orKyl7cz1CRChJa2IodyxjP3cuYy5sZW5ndGgtMS1qOmopLDgpO2U9SnNiKGQsMCk7d2hpbGUoZS5iIT1lLmQuYyl7cT1CRChYc2IoZSksMjAyKTtwPUJEKFdkKGlyYih1LmYscSkpLDEyKTtpZihwLmMubGVuZ3RoPD1qKXtac2IoZSl9ZWxzZXt0PVA2YyhuZXcgZzdjKEJEKElrYihwLGM/cC5jLmxlbmd0aC0xLWo6aiksOCkpLEJEKFdkKGlyYihtLmYscSkpLDgpKTtpZihzLmEhPXQuYXx8cy5iIT10LmIpe2Y9cy5hLXIuYTtoPXMuYi1yLmI7Zz10LmEtci5hO2k9dC5iLXIuYjtnKmg9PWkqZiYmKGY9PTB8fGlzTmFOKGYpP2Y6ZjwwPy0xOjEpPT0oZz09MHx8aXNOYU4oZyk/ZzpnPDA/LTE6MSkmJihoPT0wfHxpc05hTihoKT9oOmg8MD8tMToxKT09KGk9PTB8fGlzTmFOKGkpP2k6aTwwPy0xOjEpPygkd25kLk1hdGguYWJzKGYpPCR3bmQuTWF0aC5hYnMoZyl8fCR3bmQuTWF0aC5hYnMoaCk8JHduZC5NYXRoLmFicyhpKSkmJihHc2IoayxzLGsuYy5iLGsuYyksdHJ1ZSk6aj4xJiYoR3NiKGsscixrLmMuYixrLmMpLHRydWUpO1pzYihlKX19fXI9c319cmV0dXJuIGt9XG5mdW5jdGlvbiAkQmMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEcsSCxJLEosSyxMO09kZChjLCdHcmVlZHkgY3ljbGUgcmVtb3ZhbCcsMSk7dD1iLmE7TD10LmMubGVuZ3RoO2EuYT1LQyhXRCxvamUsMjUsTCwxNSwxKTthLmM9S0MoV0Qsb2plLDI1LEwsMTUsMSk7YS5iPUtDKFdELG9qZSwyNSxMLDE1LDEpO2o9MDtmb3Iocj1uZXcgb2xiKHQpO3IuYTxyLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihyKSwxMCk7cC5wPWo7Zm9yKEM9bmV3IG9sYihwLmopO0MuYTxDLmMuYy5sZW5ndGg7KXt3PUJEKG1sYihDKSwxMSk7Zm9yKGg9bmV3IG9sYih3LmUpO2guYTxoLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihoKSwxNyk7aWYoZC5jLmk9PXApe2NvbnRpbnVlfUc9QkQodk5iKGQsKE55YygpLGN5YykpLDE5KS5hO2EuYVtqXSs9Rz4wP0crMToxfWZvcihnPW5ldyBvbGIody5nKTtnLmE8Zy5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZyksMTcpO2lmKGQuZC5pPT1wKXtjb250aW51ZX1HPUJEKHZOYihkLChOeWMoKSxjeWMpKSwxOSkuYTthLmNbal0rPUc+MD9HKzE6MX19YS5jW2pdPT0wP0RzYihhLmUscCk6YS5hW2pdPT0wJiZEc2IoYS5mLHApOysran1vPS0xO249MTtsPW5ldyBSa2I7YS5kPUJEKHZOYihiLCh3dGMoKSxqdGMpKSwyMzApO3doaWxlKEw+MCl7d2hpbGUoYS5lLmIhPTApe0k9QkQoTHNiKGEuZSksMTApO2EuYltJLnBdPW8tLTtfQmMoYSxJKTstLUx9d2hpbGUoYS5mLmIhPTApe0o9QkQoTHNiKGEuZiksMTApO2EuYltKLnBdPW4rKztfQmMoYSxKKTstLUx9aWYoTD4wKXttPVJpZTtmb3Iocz1uZXcgb2xiKHQpO3MuYTxzLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihzKSwxMCk7aWYoYS5iW3AucF09PTApe3U9YS5jW3AucF0tYS5hW3AucF07aWYodT49bSl7aWYodT5tKXtsLmM9S0MoU0ksVWhlLDEsMCw1LDEpO209dX1sLmNbbC5jLmxlbmd0aF09cH19fWs9YS5aZihsKTthLmJbay5wXT1uKys7X0JjKGEsayk7LS1MfX1IPXQuYy5sZW5ndGgrMTtmb3Ioaj0wO2o8dC5jLmxlbmd0aDtqKyspe2EuYltqXTwwJiYoYS5iW2pdKz1IKX1mb3IocT1uZXcgb2xiKHQpO3EuYTxxLmMuYy5sZW5ndGg7KXtwPUJEKG1sYihxKSwxMCk7Rj1tX2IocC5qKTtmb3IoQT1GLEI9MCxEPUEubGVuZ3RoO0I8RDsrK0Ipe3c9QVtCXTt2PWtfYih3LmcpO2ZvcihlPXYsZj0wLGk9ZS5sZW5ndGg7ZjxpOysrZil7ZD1lW2ZdO0s9ZC5kLmkucDtpZihhLmJbcC5wXT5hLmJbS10pe1BaYihkLHRydWUpO3lOYihiLEFzYywoQmNiKCksdHJ1ZSkpfX19fWEuYT1udWxsO2EuYz1udWxsO2EuYj1udWxsO09zYihhLmYpO09zYihhLmUpO1FkZChjKX1cbmZ1bmN0aW9uIHNRYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO2Q9bmV3IFJrYjtoPW5ldyBSa2I7cT1iLzI7bj1hLmdjKCk7ZT1CRChhLlhiKDApLDgpO3I9QkQoYS5YYigxKSw4KTtvPXRRYihlLmEsZS5iLHIuYSxyLmIscSk7RWtiKGQsKHRDYigwLG8uYy5sZW5ndGgpLEJEKG8uY1swXSw4KSkpO0VrYihoLCh0Q2IoMSxvLmMubGVuZ3RoKSxCRChvLmNbMV0sOCkpKTtmb3Ioaj0yO2o8bjtqKyspe3A9ZTtlPXI7cj1CRChhLlhiKGopLDgpO289dFFiKGUuYSxlLmIscC5hLHAuYixxKTtFa2IoZCwodENiKDEsby5jLmxlbmd0aCksQkQoby5jWzFdLDgpKSk7RWtiKGgsKHRDYigwLG8uYy5sZW5ndGgpLEJEKG8uY1swXSw4KSkpO289dFFiKGUuYSxlLmIsci5hLHIuYixxKTtFa2IoZCwodENiKDAsby5jLmxlbmd0aCksQkQoby5jWzBdLDgpKSk7RWtiKGgsKHRDYigxLG8uYy5sZW5ndGgpLEJEKG8uY1sxXSw4KSkpfW89dFFiKHIuYSxyLmIsZS5hLGUuYixxKTtFa2IoZCwodENiKDEsby5jLmxlbmd0aCksQkQoby5jWzFdLDgpKSk7RWtiKGgsKHRDYigwLG8uYy5sZW5ndGgpLEJEKG8uY1swXSw4KSkpO2M9bmV3IHM3YztnPW5ldyBSa2I7RHNiKGMsKHRDYigwLGQuYy5sZW5ndGgpLEJEKGQuY1swXSw4KSkpO2ZvcihrPTE7azxkLmMubGVuZ3RoLTI7ays9Mil7Zj0odENiKGssZC5jLmxlbmd0aCksQkQoZC5jW2tdLDgpKTttPXJRYigodENiKGstMSxkLmMubGVuZ3RoKSxCRChkLmNbay0xXSw4KSksZiwodENiKGsrMSxkLmMubGVuZ3RoKSxCRChkLmNbaysxXSw4KSksKHRDYihrKzIsZC5jLmxlbmd0aCksQkQoZC5jW2srMl0sOCkpKTshaXNGaW5pdGUobS5hKXx8IWlzRmluaXRlKG0uYik/KEdzYihjLGYsYy5jLmIsYy5jKSx0cnVlKTooR3NiKGMsbSxjLmMuYixjLmMpLHRydWUpfURzYihjLEJEKElrYihkLGQuYy5sZW5ndGgtMSksOCkpO0VrYihnLCh0Q2IoMCxoLmMubGVuZ3RoKSxCRChoLmNbMF0sOCkpKTtmb3IobD0xO2w8aC5jLmxlbmd0aC0yO2wrPTIpe2Y9KHRDYihsLGguYy5sZW5ndGgpLEJEKGguY1tsXSw4KSk7bT1yUWIoKHRDYihsLTEsaC5jLmxlbmd0aCksQkQoaC5jW2wtMV0sOCkpLGYsKHRDYihsKzEsaC5jLmxlbmd0aCksQkQoaC5jW2wrMV0sOCkpLCh0Q2IobCsyLGguYy5sZW5ndGgpLEJEKGguY1tsKzJdLDgpKSk7IWlzRmluaXRlKG0uYSl8fCFpc0Zpbml0ZShtLmIpPyhnLmNbZy5jLmxlbmd0aF09Zix0cnVlKTooZy5jW2cuYy5sZW5ndGhdPW0sdHJ1ZSl9RWtiKGcsQkQoSWtiKGgsaC5jLmxlbmd0aC0xKSw4KSk7Zm9yKGk9Zy5jLmxlbmd0aC0xO2k+PTA7aS0tKXtEc2IoYywodENiKGksZy5jLmxlbmd0aCksQkQoZy5jW2ldLDgpKSl9cmV0dXJuIGN9XG5mdW5jdGlvbiBhRmQoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG47Zz10cnVlO2w9bnVsbDtkPW51bGw7ZT1udWxsO2I9ZmFsc2U7bj1CRWQ7aj1udWxsO2Y9bnVsbDtoPTA7aT1VRWQoYSxoLHpFZCxBRWQpO2lmKGk8YS5sZW5ndGgmJihCQ2IoaSxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGkpPT01OCkpe2w9YS5zdWJzdHIoaCxpLWgpO2g9aSsxfWM9bCE9bnVsbCYmaG5iKEdFZCxsLnRvTG93ZXJDYXNlKCkpO2lmKGMpe2k9YS5sYXN0SW5kZXhPZignIS8nKTtpZihpPT0tMSl7dGhyb3cgdmJiKG5ldyBXZGIoJ25vIGFyY2hpdmUgc2VwYXJhdG9yJykpfWc9dHJ1ZTtkPXFmYihhLGgsKytpKTtoPWl9ZWxzZSBpZihoPj0wJiZkZmIoYS5zdWJzdHIoaCwnLy8nLmxlbmd0aCksJy8vJykpe2grPTI7aT1VRWQoYSxoLENFZCxERWQpO2Q9YS5zdWJzdHIoaCxpLWgpO2g9aX1lbHNlIGlmKGwhPW51bGwmJihoPT1hLmxlbmd0aHx8KEJDYihoLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoaCkhPTQ3KSkpe2c9ZmFsc2U7aT1pZmIoYSx3ZmIoMzUpLGgpO2k9PS0xJiYoaT1hLmxlbmd0aCk7ZD1hLnN1YnN0cihoLGktaCk7aD1pfWlmKCFjJiZoPGEubGVuZ3RoJiYoQkNiKGgsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChoKT09NDcpKXtpPVVFZChhLGgrMSxDRWQsREVkKTtrPWEuc3Vic3RyKGgrMSxpLShoKzEpKTtpZihrLmxlbmd0aD4wJiZiZmIoayxrLmxlbmd0aC0xKT09NTgpe2U9aztoPWl9fWlmKGg8YS5sZW5ndGgmJihCQ2IoaCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGgpPT00NykpeysraDtiPXRydWV9aWYoaDxhLmxlbmd0aCYmKEJDYihoLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoaCkhPTYzKSYmKEJDYihoLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoaCkhPTM1KSl7bT1uZXcgUmtiO3doaWxlKGg8YS5sZW5ndGgmJihCQ2IoaCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGgpIT02MykmJihCQ2IoaCxhLmxlbmd0aCksYS5jaGFyQ29kZUF0KGgpIT0zNSkpe2k9VUVkKGEsaCxDRWQsREVkKTtFa2IobSxhLnN1YnN0cihoLGktaCkpO2g9aTtoPGEubGVuZ3RoJiYoQkNiKGgsYS5sZW5ndGgpLGEuY2hhckNvZGVBdChoKT09NDcpJiYoYkZkKGEsKytoKXx8KG0uY1ttLmMubGVuZ3RoXT0nJyx0cnVlKSl9bj1LQyhaSSxuaWUsMixtLmMubGVuZ3RoLDYsMSk7UWtiKG0sbil9aWYoaDxhLmxlbmd0aCYmKEJDYihoLGEubGVuZ3RoKSxhLmNoYXJDb2RlQXQoaCk9PTYzKSl7aT1nZmIoYSwzNSwrK2gpO2k9PS0xJiYoaT1hLmxlbmd0aCk7aj1hLnN1YnN0cihoLGktaCk7aD1pfWg8YS5sZW5ndGgmJihmPXBmYihhLCsraCkpO2lGZChnLGwsZCxlLG4saik7cmV0dXJuIG5ldyBORWQoZyxsLGQsZSxiLG4saixmKX1cbmZ1bmN0aW9uIHNKYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxELEYsRyxILEksSixLO0k9bmV3IFJrYjtmb3Iobz1uZXcgb2xiKGIuYik7by5hPG8uYy5jLmxlbmd0aDspe209QkQobWxiKG8pLDI5KTtmb3Iodj1uZXcgb2xiKG0uYSk7di5hPHYuYy5jLmxlbmd0aDspe3U9QkQobWxiKHYpLDEwKTt1LnA9LTE7bD1SaWU7Qj1SaWU7Zm9yKEQ9bmV3IG9sYih1LmopO0QuYTxELmMuYy5sZW5ndGg7KXtDPUJEKG1sYihEKSwxMSk7Zm9yKGU9bmV3IG9sYihDLmUpO2UuYTxlLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihlKSwxNyk7Rj1CRCh2TmIoYywoTnljKCksZXljKSksMTkpLmE7bD0kd25kLk1hdGgubWF4KGwsRil9Zm9yKGQ9bmV3IG9sYihDLmcpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxNyk7Rj1CRCh2TmIoYywoTnljKCksZXljKSksMTkpLmE7Qj0kd25kLk1hdGgubWF4KEIsRil9fXlOYih1LGhKYyxtZWIobCkpO3lOYih1LGlKYyxtZWIoQikpfX1yPTA7Zm9yKG49bmV3IG9sYihiLmIpO24uYTxuLmMuYy5sZW5ndGg7KXttPUJEKG1sYihuKSwyOSk7Zm9yKHY9bmV3IG9sYihtLmEpO3YuYTx2LmMuYy5sZW5ndGg7KXt1PUJEKG1sYih2KSwxMCk7aWYodS5wPDApe0g9bmV3IHpKYztILmI9cisrO29KYyhhLHUsSCk7SS5jW0kuYy5sZW5ndGhdPUh9fX1BPVB1KEkuYy5sZW5ndGgpO2s9UHUoSS5jLmxlbmd0aCk7Zm9yKGc9MDtnPEkuYy5sZW5ndGg7ZysrKXtFa2IoQSxuZXcgUmtiKTtFa2IoayxtZWIoMCkpfW1KYyhiLEksQSxrKTtKPUJEKFFrYihJLEtDKHNZLElxZSwyNTcsSS5jLmxlbmd0aCwwLDEpKSw4NDApO3c9QkQoUWtiKEEsS0MoeUssZW1lLDE1LEEuYy5sZW5ndGgsMCwxKSksMTkyKTtqPUtDKFdELG9qZSwyNSxrLmMubGVuZ3RoLDE1LDEpO2ZvcihoPTA7aDxqLmxlbmd0aDtoKyspe2pbaF09KHRDYihoLGsuYy5sZW5ndGgpLEJEKGsuY1toXSwxOSkpLmF9cz0wO3Q9bmV3IFJrYjtmb3IoaT0wO2k8Si5sZW5ndGg7aSsrKXtqW2ldPT0wJiZFa2IodCxKW2ldKX1xPUtDKFdELG9qZSwyNSxKLmxlbmd0aCwxNSwxKTt3aGlsZSh0LmMubGVuZ3RoIT0wKXtIPUJEKEtrYih0LDApLDI1Nyk7cVtILmJdPXMrKzt3aGlsZSghd1tILmJdLmRjKCkpe0s9QkQod1tILmJdLiRjKDApLDI1Nyk7LS1qW0suYl07altLLmJdPT0wJiYodC5jW3QuYy5sZW5ndGhdPUssdHJ1ZSl9fWEuYT1LQyhzWSxJcWUsMjU3LEoubGVuZ3RoLDAsMSk7Zm9yKGY9MDtmPEoubGVuZ3RoO2YrKyl7cD1KW2ZdO0c9cVtmXTthLmFbR109cDtwLmI9Rztmb3Iodj1uZXcgb2xiKHAuZSk7di5hPHYuYy5jLmxlbmd0aDspe3U9QkQobWxiKHYpLDEwKTt1LnA9R319cmV0dXJuIGEuYX1cbmZ1bmN0aW9uIG5kZShhKXt2YXIgYixjLGQ7aWYoYS5kPj1hLmope2EuYT0tMTthLmM9MTtyZXR1cm59Yj1iZmIoYS5pLGEuZCsrKTthLmE9YjtpZihhLmI9PTEpe3N3aXRjaChiKXtjYXNlIDkyOmQ9MTA7aWYoYS5kPj1hLmopdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx1dWUpKSkpO2EuYT1iZmIoYS5pLGEuZCsrKTticmVhaztjYXNlIDQ1OmlmKChhLmUmNTEyKT09NTEyJiZhLmQ8YS5qJiZiZmIoYS5pLGEuZCk9PTkxKXsrK2EuZDtkPTI0fWVsc2UgZD0wO2JyZWFrO2Nhc2UgOTE6aWYoKGEuZSY1MTIpIT01MTImJmEuZDxhLmomJmJmYihhLmksYS5kKT09NTgpeysrYS5kO2Q9MjA7YnJlYWt9ZGVmYXVsdDppZigoYiY2NDUxMik9PVVqZSYmYS5kPGEuail7Yz1iZmIoYS5pLGEuZCk7aWYoKGMmNjQ1MTIpPT01NjMyMCl7YS5hPVRqZSsoYi1VamU8PDEwKStjLTU2MzIwOysrYS5kfX1kPTA7fWEuYz1kO3JldHVybn1zd2l0Y2goYil7Y2FzZSAxMjQ6ZD0yO2JyZWFrO2Nhc2UgNDI6ZD0zO2JyZWFrO2Nhc2UgNDM6ZD00O2JyZWFrO2Nhc2UgNjM6ZD01O2JyZWFrO2Nhc2UgNDE6ZD03O2JyZWFrO2Nhc2UgNDY6ZD04O2JyZWFrO2Nhc2UgOTE6ZD05O2JyZWFrO2Nhc2UgOTQ6ZD0xMTticmVhaztjYXNlIDM2OmQ9MTI7YnJlYWs7Y2FzZSA0MDpkPTY7aWYoYS5kPj1hLmopYnJlYWs7aWYoYmZiKGEuaSxhLmQpIT02MylicmVhaztpZigrK2EuZD49YS5qKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksdnVlKSkpKTtiPWJmYihhLmksYS5kKyspO3N3aXRjaChiKXtjYXNlIDU4OmQ9MTM7YnJlYWs7Y2FzZSA2MTpkPTE0O2JyZWFrO2Nhc2UgMzM6ZD0xNTticmVhaztjYXNlIDkxOmQ9MTk7YnJlYWs7Y2FzZSA2MjpkPTE4O2JyZWFrO2Nhc2UgNjA6aWYoYS5kPj1hLmopdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx2dWUpKSkpO2I9YmZiKGEuaSxhLmQrKyk7aWYoYj09NjEpe2Q9MTZ9ZWxzZSBpZihiPT0zMyl7ZD0xN31lbHNlIHRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksd3VlKSkpKTticmVhaztjYXNlIDM1OndoaWxlKGEuZDxhLmope2I9YmZiKGEuaSxhLmQrKyk7aWYoYj09NDEpYnJlYWt9aWYoYiE9NDEpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx4dWUpKSkpO2Q9MjE7YnJlYWs7ZGVmYXVsdDppZihiPT00NXx8OTc8PWImJmI8PTEyMnx8NjU8PWImJmI8PTkwKXstLWEuZDtkPTIyO2JyZWFrfWVsc2UgaWYoYj09NDApe2Q9MjM7YnJlYWt9dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx2dWUpKSkpO31icmVhaztjYXNlIDkyOmQ9MTA7aWYoYS5kPj1hLmopdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx1dWUpKSkpO2EuYT1iZmIoYS5pLGEuZCsrKTticmVhaztkZWZhdWx0OmQ9MDt9YS5jPWR9XG5mdW5jdGlvbiBQNWIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEc7QT1CRCh2TmIoYSwoTnljKCksVnhjKSksOTgpO2lmKCEoQSE9KGRjZCgpLGJjZCkmJkEhPWNjZCkpe3JldHVybn1vPWEuYjtuPW8uYy5sZW5ndGg7az1uZXcgU2tiKChYaihuKzIsTWllKSxPeSh3YmIod2JiKDUsbisyKSwobisyKS8xMHwwKSkpKTtwPW5ldyBTa2IoKFhqKG4rMixNaWUpLE95KHdiYih3YmIoNSxuKzIpLChuKzIpLzEwfDApKSkpO0VrYihrLG5ldyBMcWIpO0VrYihrLG5ldyBMcWIpO0VrYihwLG5ldyBSa2IpO0VrYihwLG5ldyBSa2IpO3c9bmV3IFJrYjtmb3IoYj0wO2I8bjtiKyspe2M9KHRDYihiLG8uYy5sZW5ndGgpLEJEKG8uY1tiXSwyOSkpO0I9KHRDYihiLGsuYy5sZW5ndGgpLEJEKGsuY1tiXSw4MykpO3E9bmV3IExxYjtrLmNbay5jLmxlbmd0aF09cTtEPSh0Q2IoYixwLmMubGVuZ3RoKSxCRChwLmNbYl0sMTUpKTtzPW5ldyBSa2I7cC5jW3AuYy5sZW5ndGhdPXM7Zm9yKGU9bmV3IG9sYihjLmEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwxMCk7aWYoTDViKGQpKXt3LmNbdy5jLmxlbmd0aF09ZDtjb250aW51ZX1mb3Ioaj1uZXcgU3IodXIoUl9iKGQpLmEuS2MoKSxuZXcgU3EpKTtRcihqKTspe2g9QkQoUnIoaiksMTcpO0Y9aC5jLmk7aWYoIUw1YihGKSl7Y29udGludWV9Qz1CRChCLnhjKHZOYihGLCh3dGMoKSwkc2MpKSksMTApO2lmKCFDKXtDPUs1YihhLEYpO0IuemModk5iKEYsJHNjKSxDKTtELkZjKEMpfVFaYihoLEJEKElrYihDLmosMSksMTEpKX1mb3IoaT1uZXcgU3IodXIoVV9iKGQpLmEuS2MoKSxuZXcgU3EpKTtRcihpKTspe2g9QkQoUnIoaSksMTcpO0c9aC5kLmk7aWYoIUw1YihHKSl7Y29udGludWV9cj1CRChPaGIocSx2TmIoRywod3RjKCksJHNjKSkpLDEwKTtpZighcil7cj1LNWIoYSxHKTtSaGIocSx2TmIoRywkc2MpLHIpO3MuY1tzLmMubGVuZ3RoXT1yfVJaYihoLEJEKElrYihyLmosMCksMTEpKX19fWZvcihsPTA7bDxwLmMubGVuZ3RoO2wrKyl7dD0odENiKGwscC5jLmxlbmd0aCksQkQocC5jW2xdLDE1KSk7aWYodC5kYygpKXtjb250aW51ZX1tPW51bGw7aWYobD09MCl7bT1uZXcgSDFiKGEpO3dDYigwLG8uYy5sZW5ndGgpO2FDYihvLmMsMCxtKX1lbHNlIGlmKGw9PWsuYy5sZW5ndGgtMSl7bT1uZXcgSDFiKGEpO28uY1tvLmMubGVuZ3RoXT1tfWVsc2V7bT0odENiKGwtMSxvLmMubGVuZ3RoKSxCRChvLmNbbC0xXSwyOSkpfWZvcihnPXQuS2MoKTtnLk9iKCk7KXtmPUJEKGcuUGIoKSwxMCk7JF9iKGYsbSl9fWZvcih2PW5ldyBvbGIodyk7di5hPHYuYy5jLmxlbmd0aDspe3U9QkQobWxiKHYpLDEwKTskX2IodSxudWxsKX15TmIoYSwod3RjKCksRnNjKSx3KX1cbmZ1bmN0aW9uIEJDYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHY7T2RkKGMsJ0NvZmZtYW4tR3JhaGFtIExheWVyaW5nJywxKTtpZihiLmEuYy5sZW5ndGg9PTApe1FkZChjKTtyZXR1cm59dj1CRCh2TmIoYiwoTnljKCksa3hjKSksMTkpLmE7aT0wO2c9MDtmb3IobT1uZXcgb2xiKGIuYSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDEwKTtsLnA9aSsrO2ZvcihmPW5ldyBTcih1cihVX2IobCkuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7ZS5wPWcrK319YS5kPUtDKHNiYixkbGUsMjUsaSwxNiwxKTthLmE9S0Moc2JiLGRsZSwyNSxnLDE2LDEpO2EuYj1LQyhXRCxvamUsMjUsaSwxNSwxKTthLmU9S0MoV0Qsb2plLDI1LGksMTUsMSk7YS5mPUtDKFdELG9qZSwyNSxpLDE1LDEpO05jKGEuYyk7Q0NjKGEsYik7bz1uZXcgZ3ViKG5ldyBHQ2MoYSkpO2Zvcih1PW5ldyBvbGIoYi5hKTt1LmE8dS5jLmMubGVuZ3RoOyl7cz1CRChtbGIodSksMTApO2ZvcihmPW5ldyBTcih1cihSX2IocykuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7YS5hW2UucF18fCsrYS5iW3MucF19YS5iW3MucF09PTAmJih6Q2IoY3ViKG8scykpLHRydWUpfWg9MDt3aGlsZShvLmIuYy5sZW5ndGghPTApe3M9QkQoZHViKG8pLDEwKTthLmZbcy5wXT1oKys7Zm9yKGY9bmV3IFNyKHVyKFVfYihzKS5hLktjKCksbmV3IFNxKSk7UXIoZik7KXtlPUJEKFJyKGYpLDE3KTtpZihhLmFbZS5wXSl7Y29udGludWV9cT1lLmQuaTstLWEuYltxLnBdO1JjKGEuYyxxLG1lYihhLmZbcy5wXSkpO2EuYltxLnBdPT0wJiYoekNiKGN1YihvLHEpKSx0cnVlKX19bj1uZXcgZ3ViKG5ldyBLQ2MoYSkpO2Zvcih0PW5ldyBvbGIoYi5hKTt0LmE8dC5jLmMubGVuZ3RoOyl7cz1CRChtbGIodCksMTApO2ZvcihmPW5ldyBTcih1cihVX2IocykuYS5LYygpLG5ldyBTcSkpO1FyKGYpOyl7ZT1CRChScihmKSwxNyk7YS5hW2UucF18fCsrYS5lW3MucF19YS5lW3MucF09PTAmJih6Q2IoY3ViKG4scykpLHRydWUpfWs9bmV3IFJrYjtkPXlDYyhiLGspO3doaWxlKG4uYi5jLmxlbmd0aCE9MCl7cj1CRChkdWIobiksMTApOyhkLmEuYy5sZW5ndGg+PXZ8fCF3Q2MocixkKSkmJihkPXlDYyhiLGspKTskX2IocixkKTtmb3IoZj1uZXcgU3IodXIoUl9iKHIpLmEuS2MoKSxuZXcgU3EpKTtRcihmKTspe2U9QkQoUnIoZiksMTcpO2lmKGEuYVtlLnBdKXtjb250aW51ZX1wPWUuYy5pOy0tYS5lW3AucF07YS5lW3AucF09PTAmJih6Q2IoY3ViKG4scCkpLHRydWUpfX1mb3Ioaj1rLmMubGVuZ3RoLTE7aj49MDstLWope0VrYihiLmIsKHRDYihqLGsuYy5sZW5ndGgpLEJEKGsuY1tqXSwyOSkpKX1iLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7UWRkKGMpfVxuZnVuY3Rpb24gZ2VlKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajthLmI9MTtuZGUoYSk7Yj1udWxsO2lmKGEuYz09MCYmYS5hPT05NCl7bmRlKGEpO2I9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyAkZmUoNCkpO1VmZShiLDAsbHhlKTtoPShudWxsLCsrdmZlLG5ldyAkZmUoNCkpfWVsc2V7aD0od2ZlKCksd2ZlKCksKyt2ZmUsbmV3ICRmZSg0KSl9ZT10cnVlO3doaWxlKChqPWEuYykhPTEpe2lmKGo9PTAmJmEuYT09OTMmJiFlKXtpZihiKXtaZmUoYixoKTtoPWJ9YnJlYWt9Yz1hLmE7ZD1mYWxzZTtpZihqPT0xMCl7c3dpdGNoKGMpe2Nhc2UgMTAwOmNhc2UgNjg6Y2FzZSAxMTk6Y2FzZSA4NzpjYXNlIDExNTpjYXNlIDgzOlhmZShoLGZlZShjKSk7ZD10cnVlO2JyZWFrO2Nhc2UgMTA1OmNhc2UgNzM6Y2FzZSA5OTpjYXNlIDY3OmM9KFhmZShoLGZlZShjKSksLTEpO2M8MCYmKGQ9dHJ1ZSk7YnJlYWs7Y2FzZSAxMTI6Y2FzZSA4MDppPXRkZShhLGMpO2lmKCFpKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksSXVlKSkpKTtYZmUoaCxpKTtkPXRydWU7YnJlYWs7ZGVmYXVsdDpjPWVlZShhKTt9fWVsc2UgaWYoaj09MjQmJiFlKXtpZihiKXtaZmUoYixoKTtoPWJ9Zj1nZWUoYSk7WmZlKGgsZik7aWYoYS5jIT0wfHxhLmEhPTkzKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksTXVlKSkpKTticmVha31uZGUoYSk7aWYoIWQpe2lmKGo9PTApe2lmKGM9PTkxKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksTnVlKSkpKTtpZihjPT05Myl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLE91ZSkpKSk7aWYoYz09NDUmJiFlJiZhLmEhPTkzKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksUHVlKSkpKX1pZihhLmMhPTB8fGEuYSE9NDV8fGM9PTQ1JiZlKXtVZmUoaCxjLGMpfWVsc2V7bmRlKGEpO2lmKChqPWEuYyk9PTEpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxLdWUpKSkpO2lmKGo9PTAmJmEuYT09OTMpe1VmZShoLGMsYyk7VWZlKGgsNDUsNDUpfWVsc2UgaWYoaj09MCYmYS5hPT05M3x8aj09MjQpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksUHVlKSkpKX1lbHNle2c9YS5hO2lmKGo9PTApe2lmKGc9PTkxKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksTnVlKSkpKTtpZihnPT05Myl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLE91ZSkpKSk7aWYoZz09NDUpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxQdWUpKSkpfWVsc2Ugaj09MTAmJihnPWVlZShhKSk7bmRlKGEpO2lmKGM+Zyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFN1ZSkpKSk7VWZlKGgsYyxnKX19fWU9ZmFsc2V9aWYoYS5jPT0xKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksS3VlKSkpKTtZZmUoaCk7VmZlKGgpO2EuYj0wO25kZShhKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIHhaZChhKXtCbmQoYS5jLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2RlY2ltYWwnXSkpO0JuZChhLmQsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2N3ZSwnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50ZWdlciddKSk7Qm5kKGEuZSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbY3dlLCdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuJ10pKTtCbmQoYS5mLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ0VCb29sZWFuJyxmdWUsJ0VCb29sZWFuOk9iamVjdCddKSk7Qm5kKGEuaSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbY3dlLCdodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNieXRlJ10pKTtCbmQoYS5nLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2hleEJpbmFyeSddKSk7Qm5kKGEuaixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbY3dlLCdFQnl0ZScsZnVlLCdFQnl0ZTpPYmplY3QnXSkpO0JuZChhLm4sUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2N3ZSwnRUNoYXInLGZ1ZSwnRUNoYXI6T2JqZWN0J10pKTtCbmQoYS50LFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2RvdWJsZSddKSk7Qm5kKGEudSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbY3dlLCdFRG91YmxlJyxmdWUsJ0VEb3VibGU6T2JqZWN0J10pKTtCbmQoYS5GLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Zsb2F0J10pKTtCbmQoYS5HLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ0VGbG9hdCcsZnVlLCdFRmxvYXQ6T2JqZWN0J10pKTtCbmQoYS5JLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludCddKSk7Qm5kKGEuSixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbY3dlLCdFSW50JyxmdWUsJ0VJbnQ6T2JqZWN0J10pKTtCbmQoYS5OLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2xvbmcnXSkpO0JuZChhLk8sUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2N3ZSwnRUxvbmcnLGZ1ZSwnRUxvbmc6T2JqZWN0J10pKTtCbmQoYS5aLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3Nob3J0J10pKTtCbmQoYS4kLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ0VTaG9ydCcsZnVlLCdFU2hvcnQ6T2JqZWN0J10pKTtCbmQoYS5fLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtjd2UsJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZyddKSl9XG5mdW5jdGlvbiBmUmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGLEc7aWYoYS5jLmxlbmd0aD09MSl7cmV0dXJuIHRDYigwLGEuYy5sZW5ndGgpLEJEKGEuY1swXSwxMzUpfWVsc2UgaWYoYS5jLmxlbmd0aDw9MCl7cmV0dXJuIG5ldyBTUmN9Zm9yKGk9bmV3IG9sYihhKTtpLmE8aS5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaSksMTM1KTtzPTA7bz1PaGU7cD1PaGU7bT1SaWU7bj1SaWU7Zm9yKHI9SnNiKGcuYiwwKTtyLmIhPXIuZC5jOyl7cT1CRChYc2IociksODYpO3MrPUJEKHZOYihxLChKVGMoKSxFVGMpKSwxOSkuYTtvPSR3bmQuTWF0aC5taW4obyxxLmUuYSk7cD0kd25kLk1hdGgubWluKHAscS5lLmIpO209JHduZC5NYXRoLm1heChtLHEuZS5hK3EuZi5hKTtuPSR3bmQuTWF0aC5tYXgobixxLmUuYitxLmYuYil9eU5iKGcsKEpUYygpLEVUYyksbWViKHMpKTt5TmIoZywobVRjKCksV1NjKSxuZXcgZjdjKG8scCkpO3lOYihnLFZTYyxuZXcgZjdjKG0sbikpfW1tYigpO09rYihhLG5ldyBqUmMpO3Y9bmV3IFNSYzt0TmIodiwodENiKDAsYS5jLmxlbmd0aCksQkQoYS5jWzBdLDk0KSkpO2w9MDtEPTA7Zm9yKGo9bmV3IG9sYihhKTtqLmE8ai5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaiksMTM1KTt3PWM3YyhSNmMoQkQodk5iKGcsKG1UYygpLFZTYykpLDgpKSxCRCh2TmIoZyxXU2MpLDgpKTtsPSR3bmQuTWF0aC5tYXgobCx3LmEpO0QrPXcuYSp3LmJ9bD0kd25kLk1hdGgubWF4KGwsJHduZC5NYXRoLnNxcnQoRCkqRWRiKEVEKHZOYih2LChKVGMoKSx1VGMpKSkpKTtBPUVkYihFRCh2TmIodixIVGMpKSk7Rj0wO0c9MDtrPTA7Yj1BO2ZvcihoPW5ldyBvbGIoYSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDEzNSk7dz1jN2MoUjZjKEJEKHZOYihnLChtVGMoKSxWU2MpKSw4KSksQkQodk5iKGcsV1NjKSw4KSk7aWYoRit3LmE+bCl7Rj0wO0crPWsrQTtrPTB9ZVJjKHYsZyxGLEcpO2I9JHduZC5NYXRoLm1heChiLEYrdy5hKTtrPSR3bmQuTWF0aC5tYXgoayx3LmIpO0YrPXcuYStBfXU9bmV3IExxYjtjPW5ldyBMcWI7Zm9yKEM9bmV3IG9sYihhKTtDLmE8Qy5jLmMubGVuZ3RoOyl7Qj1CRChtbGIoQyksMTM1KTtkPUNjYihERCh2TmIoQiwoWTljKCkseThjKSkpKTt0PSFCLnE/KG51bGwsa21iKTpCLnE7Zm9yKGY9dC52YygpLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksNDIpO2lmKE1oYih1LGUuY2QoKSkpe2lmKFBEKEJEKGUuY2QoKSwxNDYpLndnKCkpIT09UEQoZS5kZCgpKSl7aWYoZCYmTWhiKGMsZS5jZCgpKSl7WmZiKCk7J0ZvdW5kIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHByb3BlcnR5ICcrQkQoZS5jZCgpLDE0NikudGcoKSsnIGluIGNvbXBvbmVudHMuJ31lbHNle1JoYih1LEJEKGUuY2QoKSwxNDYpLGUuZGQoKSk7eU5iKHYsQkQoZS5jZCgpLDE0NiksZS5kZCgpKTtkJiZSaGIoYyxCRChlLmNkKCksMTQ2KSxlLmRkKCkpfX19ZWxzZXtSaGIodSxCRChlLmNkKCksMTQ2KSxlLmRkKCkpO3lOYih2LEJEKGUuY2QoKSwxNDYpLGUuZGQoKSl9fX1yZXR1cm4gdn1cbmZ1bmN0aW9uIE1ZYigpe01ZYj1jY2I7eFhiKCk7TFliPW5ldyBIcDtSYyhMWWIsKFVjZCgpLEdjZCksRmNkKTtSYyhMWWIsUWNkLEZjZCk7UmMoTFliLEhjZCxGY2QpO1JjKExZYixOY2QsRmNkKTtSYyhMWWIsTWNkLEZjZCk7UmMoTFliLEtjZCxGY2QpO1JjKExZYixOY2QsR2NkKTtSYyhMWWIsRmNkLEJjZCk7UmMoTFliLEdjZCxCY2QpO1JjKExZYixRY2QsQmNkKTtSYyhMWWIsSGNkLEJjZCk7UmMoTFliLExjZCxCY2QpO1JjKExZYixOY2QsQmNkKTtSYyhMWWIsTWNkLEJjZCk7UmMoTFliLEtjZCxCY2QpO1JjKExZYixFY2QsQmNkKTtSYyhMWWIsRmNkLE9jZCk7UmMoTFliLEdjZCxPY2QpO1JjKExZYixCY2QsT2NkKTtSYyhMWWIsUWNkLE9jZCk7UmMoTFliLEhjZCxPY2QpO1JjKExZYixMY2QsT2NkKTtSYyhMWWIsTmNkLE9jZCk7UmMoTFliLEVjZCxPY2QpO1JjKExZYixQY2QsT2NkKTtSYyhMWWIsTWNkLE9jZCk7UmMoTFliLEljZCxPY2QpO1JjKExZYixLY2QsT2NkKTtSYyhMWWIsR2NkLFFjZCk7UmMoTFliLEhjZCxRY2QpO1JjKExZYixOY2QsUWNkKTtSYyhMWWIsS2NkLFFjZCk7UmMoTFliLEdjZCxIY2QpO1JjKExZYixRY2QsSGNkKTtSYyhMWWIsTmNkLEhjZCk7UmMoTFliLEhjZCxIY2QpO1JjKExZYixNY2QsSGNkKTtSYyhMWWIsRmNkLENjZCk7UmMoTFliLEdjZCxDY2QpO1JjKExZYixCY2QsQ2NkKTtSYyhMWWIsT2NkLENjZCk7UmMoTFliLFFjZCxDY2QpO1JjKExZYixIY2QsQ2NkKTtSYyhMWWIsTGNkLENjZCk7UmMoTFliLE5jZCxDY2QpO1JjKExZYixQY2QsQ2NkKTtSYyhMWWIsRWNkLENjZCk7UmMoTFliLEtjZCxDY2QpO1JjKExZYixNY2QsQ2NkKTtSYyhMWWIsSmNkLENjZCk7UmMoTFliLEZjZCxQY2QpO1JjKExZYixHY2QsUGNkKTtSYyhMWWIsQmNkLFBjZCk7UmMoTFliLFFjZCxQY2QpO1JjKExZYixIY2QsUGNkKTtSYyhMWWIsTGNkLFBjZCk7UmMoTFliLE5jZCxQY2QpO1JjKExZYixFY2QsUGNkKTtSYyhMWWIsS2NkLFBjZCk7UmMoTFliLEljZCxQY2QpO1JjKExZYixKY2QsUGNkKTtSYyhMWWIsR2NkLEVjZCk7UmMoTFliLFFjZCxFY2QpO1JjKExZYixIY2QsRWNkKTtSYyhMWWIsTmNkLEVjZCk7UmMoTFliLFBjZCxFY2QpO1JjKExZYixLY2QsRWNkKTtSYyhMWWIsTWNkLEVjZCk7UmMoTFliLEZjZCxEY2QpO1JjKExZYixHY2QsRGNkKTtSYyhMWWIsQmNkLERjZCk7UmMoTFliLFFjZCxEY2QpO1JjKExZYixIY2QsRGNkKTtSYyhMWWIsTGNkLERjZCk7UmMoTFliLE5jZCxEY2QpO1JjKExZYixFY2QsRGNkKTtSYyhMWWIsS2NkLERjZCk7UmMoTFliLEdjZCxNY2QpO1JjKExZYixCY2QsTWNkKTtSYyhMWWIsT2NkLE1jZCk7UmMoTFliLEhjZCxNY2QpO1JjKExZYixGY2QsSWNkKTtSYyhMWWIsR2NkLEljZCk7UmMoTFliLE9jZCxJY2QpO1JjKExZYixRY2QsSWNkKTtSYyhMWWIsSGNkLEljZCk7UmMoTFliLExjZCxJY2QpO1JjKExZYixOY2QsSWNkKTtSYyhMWWIsTmNkLEpjZCk7UmMoTFliLEhjZCxKY2QpO1JjKExZYixFY2QsRmNkKTtSYyhMWWIsRWNkLFFjZCk7UmMoTFliLEVjZCxCY2QpO1JjKExZYixMY2QsRmNkKTtSYyhMWWIsTGNkLEdjZCk7UmMoTFliLExjZCxPY2QpfVxuZnVuY3Rpb24gSFZkKGEsYil7c3dpdGNoKGEuZSl7Y2FzZSAwOmNhc2UgMjpjYXNlIDQ6Y2FzZSA2OmNhc2UgNDI6Y2FzZSA0NDpjYXNlIDQ2OmNhc2UgNDg6Y2FzZSA4OmNhc2UgMTA6Y2FzZSAxMjpjYXNlIDE0OmNhc2UgMTY6Y2FzZSAxODpjYXNlIDIwOmNhc2UgMjI6Y2FzZSAyNDpjYXNlIDI2OmNhc2UgMjg6Y2FzZSAzMDpjYXNlIDMyOmNhc2UgMzQ6Y2FzZSAzNjpjYXNlIDM4OnJldHVybiBuZXcgVTVkKGEuYixhLmEsYixhLmMpO2Nhc2UgMTpyZXR1cm4gbmV3IEJNZChhLmEsYixiTGQoYi5UZygpLGEuYykpO2Nhc2UgNDM6cmV0dXJuIG5ldyBONGQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpKTtjYXNlIDM6cmV0dXJuIG5ldyB4TWQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpKTtjYXNlIDQ1OnJldHVybiBuZXcgSzRkKGEuYSxiLGJMZChiLlRnKCksYS5jKSk7Y2FzZSA0MTpyZXR1cm4gbmV3IGRJZChCRCh3SWQoYS5jKSwyNiksYS5hLGIsYkxkKGIuVGcoKSxhLmMpKTtjYXNlIDUwOnJldHVybiBuZXcgYzZkKEJEKHdJZChhLmMpLDI2KSxhLmEsYixiTGQoYi5UZygpLGEuYykpO2Nhc2UgNTpyZXR1cm4gbmV3IFE0ZChhLmEsYixiTGQoYi5UZygpLGEuYyksYS5kLm4pO2Nhc2UgNDc6cmV0dXJuIG5ldyBVNGQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpLGEuZC5uKTtjYXNlIDc6cmV0dXJuIG5ldyBjVWQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpLGEuZC5uKTtjYXNlIDQ5OnJldHVybiBuZXcgZ1VkKGEuYSxiLGJMZChiLlRnKCksYS5jKSxhLmQubik7Y2FzZSA5OnJldHVybiBuZXcgSTRkKGEuYSxiLGJMZChiLlRnKCksYS5jKSk7Y2FzZSAxMTpyZXR1cm4gbmV3IEc0ZChhLmEsYixiTGQoYi5UZygpLGEuYykpO2Nhc2UgMTM6cmV0dXJuIG5ldyBDNGQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpKTtjYXNlIDE1OnJldHVybiBuZXcgazJkKGEuYSxiLGJMZChiLlRnKCksYS5jKSk7Y2FzZSAxNzpyZXR1cm4gbmV3IGM1ZChhLmEsYixiTGQoYi5UZygpLGEuYykpO2Nhc2UgMTk6cmV0dXJuIG5ldyBfNGQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpKTtjYXNlIDIxOnJldHVybiBuZXcgWDRkKGEuYSxiLGJMZChiLlRnKCksYS5jKSk7Y2FzZSAyMzpyZXR1cm4gbmV3IHBNZChhLmEsYixiTGQoYi5UZygpLGEuYykpO2Nhc2UgMjU6cmV0dXJuIG5ldyBENWQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpLGEuZC5uKTtjYXNlIDI3OnJldHVybiBuZXcgeTVkKGEuYSxiLGJMZChiLlRnKCksYS5jKSxhLmQubik7Y2FzZSAyOTpyZXR1cm4gbmV3IHQ1ZChhLmEsYixiTGQoYi5UZygpLGEuYyksYS5kLm4pO2Nhc2UgMzE6cmV0dXJuIG5ldyBuNWQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpLGEuZC5uKTtjYXNlIDMzOnJldHVybiBuZXcgQTVkKGEuYSxiLGJMZChiLlRnKCksYS5jKSxhLmQubik7Y2FzZSAzNTpyZXR1cm4gbmV3IHY1ZChhLmEsYixiTGQoYi5UZygpLGEuYyksYS5kLm4pO2Nhc2UgMzc6cmV0dXJuIG5ldyBwNWQoYS5hLGIsYkxkKGIuVGcoKSxhLmMpLGEuZC5uKTtjYXNlIDM5OnJldHVybiBuZXcgaTVkKGEuYSxiLGJMZChiLlRnKCksYS5jKSxhLmQubik7Y2FzZSA0MDpyZXR1cm4gbmV3IHUzZChiLGJMZChiLlRnKCksYS5jKSk7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IGh6KCdVbmtub3duIGZlYXR1cmUgc3R5bGU6ICcrYS5lKSk7fX1cbmZ1bmN0aW9uIEJNYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdztPZGQoYywnQnJhbmRlcyAmIEtvZXBmIG5vZGUgcGxhY2VtZW50JywxKTthLmE9YjthLmM9S01jKGIpO2Q9QkQodk5iKGIsKE55YygpLHp4YykpLDI3NCk7bj1DY2IoREQodk5iKGIsQXhjKSkpO2EuZD1kPT0obHJjKCksaXJjKSYmIW58fGQ9PWZyYztBTWMoYSxiKTt2PW51bGw7dz1udWxsO3I9bnVsbDtzPW51bGw7cT0oWGooNCxKaWUpLG5ldyBTa2IoNCkpO3N3aXRjaChCRCh2TmIoYix6eGMpLDI3NCkuZyl7Y2FzZSAzOnI9bmV3IFVMYyhiLGEuYy5kLChlTWMoKSxjTWMpLChZTGMoKSxXTGMpKTtxLmNbcS5jLmxlbmd0aF09cjticmVhaztjYXNlIDE6cz1uZXcgVUxjKGIsYS5jLmQsKGVNYygpLGRNYyksKFlMYygpLFdMYykpO3EuY1txLmMubGVuZ3RoXT1zO2JyZWFrO2Nhc2UgNDp2PW5ldyBVTGMoYixhLmMuZCwoZU1jKCksY01jKSwoWUxjKCksWExjKSk7cS5jW3EuYy5sZW5ndGhdPXY7YnJlYWs7Y2FzZSAyOnc9bmV3IFVMYyhiLGEuYy5kLChlTWMoKSxkTWMpLChZTGMoKSxYTGMpKTtxLmNbcS5jLmxlbmd0aF09dzticmVhaztkZWZhdWx0OnI9bmV3IFVMYyhiLGEuYy5kLChlTWMoKSxjTWMpLChZTGMoKSxXTGMpKTtzPW5ldyBVTGMoYixhLmMuZCxkTWMsV0xjKTt2PW5ldyBVTGMoYixhLmMuZCxjTWMsWExjKTt3PW5ldyBVTGMoYixhLmMuZCxkTWMsWExjKTtxLmNbcS5jLmxlbmd0aF09djtxLmNbcS5jLmxlbmd0aF09dztxLmNbcS5jLmxlbmd0aF09cjtxLmNbcS5jLmxlbmd0aF09czt9ZT1uZXcgbU1jKGIsYS5jKTtmb3IoaD1uZXcgb2xiKHEpO2guYTxoLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihoKSwxODApO2xNYyhlLGYsYS5iKTtrTWMoZil9bT1uZXcgck1jKGIsYS5jKTtmb3IoaT1uZXcgb2xiKHEpO2kuYTxpLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihpKSwxODApO29NYyhtLGYpfWlmKGMubil7Zm9yKGo9bmV3IG9sYihxKTtqLmE8ai5jLmMubGVuZ3RoOyl7Zj1CRChtbGIoaiksMTgwKTtTZGQoYyxmKycgc2l6ZSBpcyAnK1NMYyhmKSl9fWw9bnVsbDtpZihhLmQpe2s9eU1jKGEscSxhLmMuZCk7eE1jKGIsayxjKSYmKGw9ayl9aWYoIWwpe2ZvcihqPW5ldyBvbGIocSk7ai5hPGouYy5jLmxlbmd0aDspe2Y9QkQobWxiKGopLDE4MCk7eE1jKGIsZixjKSYmKCFsfHxTTGMobCk+U0xjKGYpKSYmKGw9Zil9fSFsJiYobD0odENiKDAscS5jLmxlbmd0aCksQkQocS5jWzBdLDE4MCkpKTtmb3IocD1uZXcgb2xiKGIuYik7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDI5KTtmb3IodT1uZXcgb2xiKG8uYSk7dS5hPHUuYy5jLmxlbmd0aDspe3Q9QkQobWxiKHUpLDEwKTt0Lm4uYj1FZGIobC5wW3QucF0pK0VkYihsLmRbdC5wXSl9fWlmKGMubil7U2RkKGMsJ0Nob3NlbiBub2RlIHBsYWNlbWVudDogJytsKTtTZGQoYywnQmxvY2tzOiAnK0RNYyhsKSk7U2RkKGMsJ0NsYXNzZXM6ICcrRU1jKGwsYykpO1NkZChjLCdNYXJrZWQgZWRnZXM6ICcrYS5iKX1mb3IoZz1uZXcgb2xiKHEpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSwxODApO2YuZz1udWxsO2YuYj1udWxsO2YuYT1udWxsO2YuZD1udWxsO2Yuaj1udWxsO2YuaT1udWxsO2YucD1udWxsfUlNYyhhLmMpO2EuYi5hLiRiKCk7UWRkKGMpfVxuZnVuY3Rpb24gVjFiKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRjtnPW5ldyBQc2I7dj1CRCh2TmIoYywoTnljKCksTHdjKSksMTAzKTtvPTA7eWUoZywoIWIuYSYmKGIuYT1uZXcgY1VkKEUyLGIsMTAsMTEpKSxiLmEpKTt3aGlsZShnLmIhPTApe2o9QkQoZy5iPT0wP251bGw6KHNDYihnLmIhPTApLE5zYihnLGcuYS5hKSksMzMpOyhQRChoa2QoYix5d2MpKSE9PVBEKCh0QWMoKSxyQWMpKXx8UEQoaGtkKGIsSndjKSk9PT1QRCgobXFjKCksbHFjKSl8fFBEKGhrZChiLEp3YykpPT09UEQoKG1xYygpLGpxYykpfHxDY2IoREQoaGtkKGIsQXdjKSkpfHxQRChoa2QoYix0d2MpKSE9PVBEKChSWGIoKSxRWGIpKSkmJiFDY2IoREQoaGtkKGoseHdjKSkpJiZqa2Qoaiwod3RjKCksWnNjKSxtZWIobysrKSk7cT0hQ2NiKEREKGhrZChqLEp4YykpKTtpZihxKXtsPSghai5hJiYoai5hPW5ldyBjVWQoRTIsaiwxMCwxMSkpLGouYSkuaSE9MDtuPVMxYihqKTttPVBEKGhrZChqLGF4YykpPT09UEQoKGhiZCgpLGViZCkpO0Y9IWlrZChqLChZOWMoKSxvOGMpKXx8ZGZiKEdEKGhrZChqLG84YykpLHNuZSk7dD1udWxsO2lmKEYmJm0mJihsfHxuKSl7dD1QMWIoaik7eU5iKHQsTHdjLHYpO3dOYih0LGh5YykmJld5YyhuZXcgZXpjKEVkYihFRCh2TmIodCxoeWMpKSkpLHQpO2lmKEJEKGhrZChqLEZ4YyksMTc0KS5nYygpIT0wKXtrPXQ7TUFiKG5ldyBZQWIobnVsbCwoIWouYyYmKGouYz1uZXcgY1VkKEYyLGosOSw5KSksbmV3IEt1YihqLmMsMTYpKSksbmV3IGsyYihrKSk7TDFiKGosdCl9fXc9YztBPUJEKE9oYihhLmEsWG9kKGopKSwxMCk7ISFBJiYodz1BLmUpO3M9JDFiKGEsaix3KTtpZih0KXtzLmU9dDt0LmU9czt5ZShnLCghai5hJiYoai5hPW5ldyBjVWQoRTIsaiwxMCwxMSkpLGouYSkpfX19bz0wO0dzYihnLGIsZy5jLmIsZy5jKTt3aGlsZShnLmIhPTApe2Y9QkQoZy5iPT0wP251bGw6KHNDYihnLmIhPTApLE5zYihnLGcuYS5hKSksMzMpO2ZvcihpPW5ldyBGeWQoKCFmLmImJihmLmI9bmV3IGNVZChCMixmLDEyLDMpKSxmLmIpKTtpLmUhPWkuaS5nYygpOyl7aD1CRChEeWQoaSksNzkpO04xYihoKTsoUEQoaGtkKGIseXdjKSkhPT1QRCgodEFjKCksckFjKSl8fFBEKGhrZChiLEp3YykpPT09UEQoKG1xYygpLGxxYykpfHxQRChoa2QoYixKd2MpKT09PVBEKChtcWMoKSxqcWMpKXx8Q2NiKEREKGhrZChiLEF3YykpKXx8UEQoaGtkKGIsdHdjKSkhPT1QRCgoUlhiKCksUVhiKSkpJiZqa2QoaCwod3RjKCksWnNjKSxtZWIobysrKSk7Qz1hdGQoQkQocXVkKCghaC5iJiYoaC5iPW5ldyB5NWQoejIsaCw0LDcpKSxoLmIpLDApLDgyKSk7RD1hdGQoQkQocXVkKCghaC5jJiYoaC5jPW5ldyB5NWQoejIsaCw1LDgpKSxoLmMpLDApLDgyKSk7aWYoQ2NiKEREKGhrZChoLEp4YykpKXx8Q2NiKEREKGhrZChDLEp4YykpKXx8Q2NiKEREKGhrZChELEp4YykpKSl7Y29udGludWV9cD1RbGQoaCkmJkNjYihERChoa2QoQyxmeGMpKSkmJkNjYihERChoa2QoaCxneGMpKSk7dT1mO3B8fG50ZChELEMpPyh1PUMpOm50ZChDLEQpJiYodT1EKTt3PWM7QT1CRChPaGIoYS5hLHUpLDEwKTshIUEmJih3PUEuZSk7cj1YMWIoYSxoLHUsdyk7eU5iKHIsKHd0YygpLHhzYyksUjFiKGEsaCxiLGMpKX1tPVBEKGhrZChmLGF4YykpPT09UEQoKGhiZCgpLGViZCkpO2lmKG0pe2ZvcihlPW5ldyBGeWQoKCFmLmEmJihmLmE9bmV3IGNVZChFMixmLDEwLDExKSksZi5hKSk7ZS5lIT1lLmkuZ2MoKTspe2Q9QkQoRHlkKGUpLDMzKTtGPSFpa2QoZCwoWTljKCksbzhjKSl8fGRmYihHRChoa2QoZCxvOGMpKSxzbmUpO0I9UEQoaGtkKGQsYXhjKSk9PT1QRChlYmQpO0YmJkImJihHc2IoZyxkLGcuYy5iLGcuYyksdHJ1ZSl9fX19XG5mdW5jdGlvbiB2QShhLGIsYyxkLGUsZil7dmFyIGcsaCxpLGosayxsLG0sbixvLHAscSxyO3N3aXRjaChiKXtjYXNlIDcxOmg9ZC5xLmdldEZ1bGxZZWFyKCktbmplPj0tMTkwMD8xOjA7Yz49ND9RZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtwamUscWplXSlbaF0pOlFmYihhLE9DKEdDKFpJLDEpLG5pZSwyLDYsWydCQycsJ0FEJ10pW2hdKTticmVhaztjYXNlIDEyMTprQShhLGMsZCk7YnJlYWs7Y2FzZSA3NzpqQShhLGMsZCk7YnJlYWs7Y2FzZSAxMDc6aT1lLnEuZ2V0SG91cnMoKTtpPT0wP0VBKGEsMjQsYyk6RUEoYSxpLGMpO2JyZWFrO2Nhc2UgODM6aUEoYSxjLGUpO2JyZWFrO2Nhc2UgNjk6az1kLnEuZ2V0RGF5KCk7Yz09NT9RZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnUycsJ00nLCdUJywnVycsJ1QnLCdGJywnUyddKVtrXSk6Yz09ND9RZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtyamUsc2plLHRqZSx1amUsdmplLHdqZSx4amVdKVtrXSk6UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbJ1N1bicsJ01vbicsJ1R1ZScsJ1dlZCcsJ1RodScsJ0ZyaScsJ1NhdCddKVtrXSk7YnJlYWs7Y2FzZSA5NzplLnEuZ2V0SG91cnMoKT49MTImJmUucS5nZXRIb3VycygpPDI0P1FmYihhLE9DKEdDKFpJLDEpLG5pZSwyLDYsWydBTScsJ1BNJ10pWzFdKTpRZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnQU0nLCdQTSddKVswXSk7YnJlYWs7Y2FzZSAxMDQ6bD1lLnEuZ2V0SG91cnMoKSUxMjtsPT0wP0VBKGEsMTIsYyk6RUEoYSxsLGMpO2JyZWFrO2Nhc2UgNzU6bT1lLnEuZ2V0SG91cnMoKSUxMjtFQShhLG0sYyk7YnJlYWs7Y2FzZSA3MjpuPWUucS5nZXRIb3VycygpO0VBKGEsbixjKTticmVhaztjYXNlIDk5Om89ZC5xLmdldERheSgpO2M9PTU/UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbJ1MnLCdNJywnVCcsJ1cnLCdUJywnRicsJ1MnXSlbb10pOmM9PTQ/UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbcmplLHNqZSx0amUsdWplLHZqZSx3amUseGplXSlbb10pOmM9PTM/UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbJ1N1bicsJ01vbicsJ1R1ZScsJ1dlZCcsJ1RodScsJ0ZyaScsJ1NhdCddKVtvXSk6RUEoYSxvLDEpO2JyZWFrO2Nhc2UgNzY6cD1kLnEuZ2V0TW9udGgoKTtjPT01P1FmYihhLE9DKEdDKFpJLDEpLG5pZSwyLDYsWydKJywnRicsJ00nLCdBJywnTScsJ0onLCdKJywnQScsJ1MnLCdPJywnTicsJ0QnXSlbcF0pOmM9PTQ/UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbYmplLGNqZSxkamUsZWplLGZqZSxnamUsaGplLGlqZSxqamUsa2plLGxqZSxtamVdKVtwXSk6Yz09Mz9RZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnSmFuJywnRmViJywnTWFyJywnQXByJyxmamUsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddKVtwXSk6RUEoYSxwKzEsYyk7YnJlYWs7Y2FzZSA4MTpxPWQucS5nZXRNb250aCgpLzN8MDtjPDQ/UWZiKGEsT0MoR0MoWkksMSksbmllLDIsNixbJ1ExJywnUTInLCdRMycsJ1E0J10pW3FdKTpRZmIoYSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnMXN0IHF1YXJ0ZXInLCcybmQgcXVhcnRlcicsJzNyZCBxdWFydGVyJywnNHRoIHF1YXJ0ZXInXSlbcV0pO2JyZWFrO2Nhc2UgMTAwOnI9ZC5xLmdldERhdGUoKTtFQShhLHIsYyk7YnJlYWs7Y2FzZSAxMDk6aj1lLnEuZ2V0TWludXRlcygpO0VBKGEsaixjKTticmVhaztjYXNlIDExNTpnPWUucS5nZXRTZWNvbmRzKCk7RUEoYSxnLGMpO2JyZWFrO2Nhc2UgMTIyOmM8ND9RZmIoYSxmLmNbMF0pOlFmYihhLGYuY1sxXSk7YnJlYWs7Y2FzZSAxMTg6UWZiKGEsZi5iKTticmVhaztjYXNlIDkwOmM8Mz9RZmIoYSxPQShmKSk6Yz09Mz9RZmIoYSxOQShmKSk6UWZiKGEsUUEoZi5hKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZmFsc2U7fXJldHVybiB0cnVlfVxuZnVuY3Rpb24gWDFiKGEsYixjLGQpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQixDLEQsRixHLEg7TjFiKGIpO2k9QkQocXVkKCghYi5iJiYoYi5iPW5ldyB5NWQoejIsYiw0LDcpKSxiLmIpLDApLDgyKTtrPUJEKHF1ZCgoIWIuYyYmKGIuYz1uZXcgeTVkKHoyLGIsNSw4KSksYi5jKSwwKSw4Mik7aD1hdGQoaSk7aj1hdGQoayk7Zz0oIWIuYSYmKGIuYT1uZXcgY1VkKEEyLGIsNiw2KSksYi5hKS5pPT0wP251bGw6QkQocXVkKCghYi5hJiYoYi5hPW5ldyBjVWQoQTIsYiw2LDYpKSxiLmEpLDApLDIwMik7QT1CRChPaGIoYS5hLGgpLDEwKTtGPUJEKE9oYihhLmEsaiksMTApO0I9bnVsbDtHPW51bGw7aWYoSkQoaSwxODYpKXt3PUJEKE9oYihhLmEsaSksMjk5KTtpZihKRCh3LDExKSl7Qj1CRCh3LDExKX1lbHNlIGlmKEpEKHcsMTApKXtBPUJEKHcsMTApO0I9QkQoSWtiKEEuaiwwKSwxMSl9fWlmKEpEKGssMTg2KSl7RD1CRChPaGIoYS5hLGspLDI5OSk7aWYoSkQoRCwxMSkpe0c9QkQoRCwxMSl9ZWxzZSBpZihKRChELDEwKSl7Rj1CRChELDEwKTtHPUJEKElrYihGLmosMCksMTEpfX1pZighQXx8IUYpe3Rocm93IHZiYihuZXcgejJjKCdUaGUgc291cmNlIG9yIHRoZSB0YXJnZXQgb2YgZWRnZSAnK2IrJyBjb3VsZCBub3QgYmUgZm91bmQuICcrJ1RoaXMgdXN1YWxseSBoYXBwZW5zIHdoZW4gYW4gZWRnZSBjb25uZWN0cyBhIG5vZGUgbGFpZCBvdXQgYnkgRUxLIExheWVyZWQgdG8gYSBub2RlIGluICcrJ2Fub3RoZXIgbGV2ZWwgb2YgaGllcmFyY2h5IGxhaWQgb3V0IGJ5IGVpdGhlciBhbm90aGVyIGluc3RhbmNlIG9mIEVMSyBMYXllcmVkIG9yIGFub3RoZXIgJysnbGF5b3V0IGFsZ29yaXRobSBhbGx0b2dldGhlci4gVGhlIGZvcm1lciBjYW4gYmUgc29sdmVkIGJ5IHNldHRpbmcgdGhlIGhpZXJhcmNoeUhhbmRsaW5nICcrJ29wdGlvbiB0byBJTkNMVURFX0NISUxEUkVOLicpKX1wPW5ldyBVWmI7dE5iKHAsYik7eU5iKHAsKHd0YygpLCRzYyksYik7eU5iKHAsKE55YygpLGp4YyksbnVsbCk7bj1CRCh2TmIoZCxLc2MpLDIxKTtBPT1GJiZuLkZjKChPcmMoKSxOcmMpKTtpZighQil7dj0oS0FjKCksSUFjKTtDPW51bGw7aWYoISFnJiZmY2QoQkQodk5iKEEsVnhjKSw5OCkpKXtDPW5ldyBmN2MoZy5qLGcuayk7QmZkKEMsTWxkKGIpKTtDZmQoQyxjKTtpZihudGQoaixoKSl7dj1IQWM7UDZjKEMsQS5uKX19Qj0kJGIoQSxDLHYsZCl9aWYoIUcpe3Y9KEtBYygpLEhBYyk7SD1udWxsO2lmKCEhZyYmZmNkKEJEKHZOYihGLFZ4YyksOTgpKSl7SD1uZXcgZjdjKGcuYixnLmMpO0JmZChILE1sZChiKSk7Q2ZkKEgsYyl9Rz0kJGIoRixILHYsUV9iKEYpKX1RWmIocCxCKTtSWmIocCxHKTsoQi5lLmMubGVuZ3RoPjF8fEIuZy5jLmxlbmd0aD4xfHxHLmUuYy5sZW5ndGg+MXx8Ry5nLmMubGVuZ3RoPjEpJiZuLkZjKChPcmMoKSxJcmMpKTtmb3IobT1uZXcgRnlkKCghYi5uJiYoYi5uPW5ldyBjVWQoRDIsYiwxLDcpKSxiLm4pKTttLmUhPW0uaS5nYygpOyl7bD1CRChEeWQobSksMTM3KTtpZighQ2NiKEREKGhrZChsLEp4YykpKSYmISFsLmEpe3E9WjFiKGwpO0VrYihwLmIscSk7c3dpdGNoKEJEKHZOYihxLFF3YyksMjcyKS5nKXtjYXNlIDE6Y2FzZSAyOm4uRmMoKE9yYygpLEdyYykpO2JyZWFrO2Nhc2UgMDpuLkZjKChPcmMoKSxFcmMpKTt5TmIocSxRd2MsKHFhZCgpLG5hZCkpO319fWY9QkQodk5iKGQsSXdjKSwzMTQpO3I9QkQodk5iKGQsRXhjKSwzMTUpO2U9Zj09KFJwYygpLE9wYyl8fHI9PShWemMoKSxSemMpO2lmKCEhZyYmKCFnLmEmJihnLmE9bmV3IHhNZCh5MixnLDUpKSxnLmEpLmkhPTAmJmUpe3M9b2ZkKGcpO289bmV3IHM3Yztmb3IodT1Kc2IocywwKTt1LmIhPXUuZC5jOyl7dD1CRChYc2IodSksOCk7RHNiKG8sbmV3IGc3Yyh0KSl9eU5iKHAsX3NjLG8pfXJldHVybiBwfVxuZnVuY3Rpb24geVpkKGEpe2lmKGEuZ2IpcmV0dXJuO2EuZ2I9dHJ1ZTthLmI9TG5kKGEsMCk7S25kKGEuYiwxOCk7UW5kKGEuYiwxOSk7YS5hPUxuZChhLDEpO0tuZChhLmEsMSk7UW5kKGEuYSwyKTtRbmQoYS5hLDMpO1FuZChhLmEsNCk7UW5kKGEuYSw1KTthLm89TG5kKGEsMik7S25kKGEubyw4KTtLbmQoYS5vLDkpO1FuZChhLm8sMTApO1FuZChhLm8sMTEpO1FuZChhLm8sMTIpO1FuZChhLm8sMTMpO1FuZChhLm8sMTQpO1FuZChhLm8sMTUpO1FuZChhLm8sMTYpO1FuZChhLm8sMTcpO1FuZChhLm8sMTgpO1FuZChhLm8sMTkpO1FuZChhLm8sMjApO1FuZChhLm8sMjEpO1FuZChhLm8sMjIpO1FuZChhLm8sMjMpO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO1BuZChhLm8pO2EucD1MbmQoYSwzKTtLbmQoYS5wLDIpO0tuZChhLnAsMyk7S25kKGEucCw0KTtLbmQoYS5wLDUpO1FuZChhLnAsNik7UW5kKGEucCw3KTtQbmQoYS5wKTtQbmQoYS5wKTthLnE9TG5kKGEsNCk7S25kKGEucSw4KTthLnY9TG5kKGEsNSk7UW5kKGEudiw5KTtQbmQoYS52KTtQbmQoYS52KTtQbmQoYS52KTthLnc9TG5kKGEsNik7S25kKGEudywyKTtLbmQoYS53LDMpO0tuZChhLncsNCk7UW5kKGEudyw1KTthLkI9TG5kKGEsNyk7UW5kKGEuQiwxKTtQbmQoYS5CKTtQbmQoYS5CKTtQbmQoYS5CKTthLlE9TG5kKGEsOCk7UW5kKGEuUSwwKTtQbmQoYS5RKTthLlI9TG5kKGEsOSk7S25kKGEuUiwxKTthLlM9TG5kKGEsMTApO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO1BuZChhLlMpO2EuVD1MbmQoYSwxMSk7UW5kKGEuVCwxMCk7UW5kKGEuVCwxMSk7UW5kKGEuVCwxMik7UW5kKGEuVCwxMyk7UW5kKGEuVCwxNCk7UG5kKGEuVCk7UG5kKGEuVCk7YS5VPUxuZChhLDEyKTtLbmQoYS5VLDIpO0tuZChhLlUsMyk7UW5kKGEuVSw0KTtRbmQoYS5VLDUpO1FuZChhLlUsNik7UW5kKGEuVSw3KTtQbmQoYS5VKTthLlY9TG5kKGEsMTMpO1FuZChhLlYsMTApO2EuVz1MbmQoYSwxNCk7S25kKGEuVywxOCk7S25kKGEuVywxOSk7S25kKGEuVywyMCk7UW5kKGEuVywyMSk7UW5kKGEuVywyMik7UW5kKGEuVywyMyk7YS5iYj1MbmQoYSwxNSk7S25kKGEuYmIsMTApO0tuZChhLmJiLDExKTtLbmQoYS5iYiwxMik7S25kKGEuYmIsMTMpO0tuZChhLmJiLDE0KTtLbmQoYS5iYiwxNSk7S25kKGEuYmIsMTYpO1FuZChhLmJiLDE3KTtQbmQoYS5iYik7UG5kKGEuYmIpO2EuZWI9TG5kKGEsMTYpO0tuZChhLmViLDIpO0tuZChhLmViLDMpO0tuZChhLmViLDQpO0tuZChhLmViLDUpO0tuZChhLmViLDYpO0tuZChhLmViLDcpO1FuZChhLmViLDgpO1FuZChhLmViLDkpO2EuYWI9TG5kKGEsMTcpO0tuZChhLmFiLDApO0tuZChhLmFiLDEpO2EuSD1MbmQoYSwxOCk7UW5kKGEuSCwwKTtRbmQoYS5ILDEpO1FuZChhLkgsMik7UW5kKGEuSCwzKTtRbmQoYS5ILDQpO1FuZChhLkgsNSk7UG5kKGEuSCk7YS5kYj1MbmQoYSwxOSk7UW5kKGEuZGIsMik7YS5jPU1uZChhLDIwKTthLmQ9TW5kKGEsMjEpO2EuZT1NbmQoYSwyMik7YS5mPU1uZChhLDIzKTthLmk9TW5kKGEsMjQpO2EuZz1NbmQoYSwyNSk7YS5qPU1uZChhLDI2KTthLms9TW5kKGEsMjcpO2Eubj1NbmQoYSwyOCk7YS5yPU1uZChhLDI5KTthLnM9TW5kKGEsMzApO2EudD1NbmQoYSwzMSk7YS51PU1uZChhLDMyKTthLmZiPU1uZChhLDMzKTthLkE9TW5kKGEsMzQpO2EuQz1NbmQoYSwzNSk7YS5EPU1uZChhLDM2KTthLkY9TW5kKGEsMzcpO2EuRz1NbmQoYSwzOCk7YS5JPU1uZChhLDM5KTthLko9TW5kKGEsNDApO2EuTD1NbmQoYSw0MSk7YS5NPU1uZChhLDQyKTthLk49TW5kKGEsNDMpO2EuTz1NbmQoYSw0NCk7YS5QPU1uZChhLDQ1KTthLlg9TW5kKGEsNDYpO2EuWT1NbmQoYSw0Nyk7YS5aPU1uZChhLDQ4KTthLiQ9TW5kKGEsNDkpO2EuXz1NbmQoYSw1MCk7YS5jYj1NbmQoYSw1MSk7YS5LPU1uZChhLDUyKX1cbmZ1bmN0aW9uIFk5Yygpe1k5Yz1jY2I7dmFyIGEsYjtvOGM9bmV3IExzZChzc2UpO0Y5Yz1uZXcgTHNkKHRzZSk7cThjPShGN2MoKSx6N2MpO3A4Yz1uZXcgTnNkKCRwZSxxOGMpO25ldyBUZmQ7cjhjPW5ldyBOc2QoX2xlLG51bGwpO3M4Yz1uZXcgTHNkKHVzZSk7eDhjPShpOGMoKSxxcWIoaDhjLE9DKEdDKHIxLDEpLEtpZSwyOTEsMCxbZDhjXSkpKTt3OGM9bmV3IE5zZChscWUseDhjKTt5OGM9bmV3IE5zZChacGUsKEJjYigpLGZhbHNlKSk7QThjPShlYWQoKSxjYWQpO3o4Yz1uZXcgTnNkKGNxZSxBOGMpO0Y4Yz0oQWFkKCksemFkKTtFOGM9bmV3IE5zZCh5cGUsRjhjKTtJOGM9bmV3IE5zZChKcmUsZmFsc2UpO0s4Yz0oaGJkKCksZmJkKTtKOGM9bmV3IE5zZCh0cGUsSzhjKTtnOWM9bmV3IHEwYigxMik7ZjljPW5ldyBOc2QoYW1lLGc5Yyk7TzhjPW5ldyBOc2QoQW1lLGZhbHNlKTtQOGM9bmV3IE5zZCh4cWUsZmFsc2UpO2U5Yz1uZXcgTnNkKERtZSxmYWxzZSk7dTljPShkY2QoKSxjY2QpO3Q5Yz1uZXcgTnNkKEJtZSx1OWMpO0M5Yz1uZXcgTHNkKHVxZSk7RDljPW5ldyBMc2Qodm1lKTtFOWM9bmV3IExzZCh5bWUpO0g5Yz1uZXcgTHNkKHptZSk7UjhjPW5ldyBzN2M7UThjPW5ldyBOc2QobXFlLFI4Yyk7djhjPW5ldyBOc2QocHFlLGZhbHNlKTtMOGM9bmV3IE5zZChxcWUsZmFsc2UpO25ldyBMc2QodnNlKTtUOGM9bmV3IEhfYjtTOGM9bmV3IE5zZCh2cWUsVDhjKTtkOWM9bmV3IE5zZChYcGUsZmFsc2UpO25ldyBUZmQ7RzljPW5ldyBOc2Qod3NlLDEpO25ldyBOc2QoeHNlLHRydWUpO21lYigwKTtuZXcgTnNkKHlzZSxtZWIoMTAwKSk7bmV3IE5zZCh6c2UsZmFsc2UpO21lYigwKTtuZXcgTnNkKEFzZSxtZWIoNDAwMCkpO21lYigwKTtuZXcgTnNkKEJzZSxtZWIoNDAwKSk7bmV3IE5zZChDc2UsZmFsc2UpO25ldyBOc2QoRHNlLGZhbHNlKTtuZXcgTnNkKEVzZSx0cnVlKTtuZXcgTnNkKEZzZSxmYWxzZSk7dThjPShEZWQoKSxDZWQpO3Q4Yz1uZXcgTnNkKHJzZSx1OGMpO0k5Yz1uZXcgTnNkKExwZSwxMCk7SjljPW5ldyBOc2QoTXBlLDEwKTtLOWM9bmV3IE5zZChabGUsMjApO0w5Yz1uZXcgTnNkKE5wZSwxMCk7TTljPW5ldyBOc2QoeG1lLDIpO045Yz1uZXcgTnNkKE9wZSwxMCk7UDljPW5ldyBOc2QoUHBlLDApO1E5Yz1uZXcgTnNkKFNwZSw1KTtSOWM9bmV3IE5zZChRcGUsMSk7UzljPW5ldyBOc2QoUnBlLDEpO1Q5Yz1uZXcgTnNkKHdtZSwyMCk7VTljPW5ldyBOc2QoVHBlLDEwKTtYOWM9bmV3IE5zZChVcGUsMTApO085Yz1uZXcgTHNkKFZwZSk7VzljPW5ldyBJX2I7VjljPW5ldyBOc2Qod3FlLFc5Yyk7ajljPW5ldyBMc2QodHFlKTtpOWM9ZmFsc2U7aDljPW5ldyBOc2Qoc3FlLGk5Yyk7VjhjPW5ldyBxMGIoNSk7VThjPW5ldyBOc2QoZHFlLFY4Yyk7WDhjPShIYmQoKSxiPUJEKGdkYihCMSksOSksbmV3IHhxYihiLEJEKF9CYihiLGIubGVuZ3RoKSw5KSwwKSk7VzhjPW5ldyBOc2QoR21lLFg4Yyk7bTljPShUYmQoKSxRYmQpO2w5Yz1uZXcgTnNkKGdxZSxtOWMpO285Yz1uZXcgTHNkKGhxZSk7cDljPW5ldyBMc2QoaXFlKTtxOWM9bmV3IExzZChqcWUpO245Yz1uZXcgTHNkKGtxZSk7WjhjPShhPUJEKGdkYihJMSksOSksbmV3IHhxYihhLEJEKF9CYihhLGEubGVuZ3RoKSw5KSwwKSk7WThjPW5ldyBOc2QoRm1lLFo4Yyk7YzljPXBxYigoSWRkKCksQmRkKSk7YjljPW5ldyBOc2QoRW1lLGM5Yyk7YTljPW5ldyBmN2MoMCwwKTtfOGM9bmV3IE5zZChUbWUsYTljKTskOGM9bmV3IE5zZChicWUsZmFsc2UpO0Q4Yz0ocWFkKCksbmFkKTtDOGM9bmV3IE5zZChucWUsRDhjKTtCOGM9bmV3IE5zZChDbWUsZmFsc2UpO25ldyBMc2QoR3NlKTttZWIoMSk7bmV3IE5zZChIc2UsbnVsbCk7cjljPW5ldyBMc2QocnFlKTt2OWM9bmV3IExzZChvcWUpO0I5Yz0oVWNkKCksU2NkKTtBOWM9bmV3IE5zZChZcGUsQjljKTtzOWM9bmV3IExzZChXcGUpO3k5Yz0ocmNkKCkscHFiKHBjZCkpO3g5Yz1uZXcgTnNkKEhtZSx5OWMpO3c5Yz1uZXcgTnNkKGVxZSxmYWxzZSk7ejljPW5ldyBOc2QoZnFlLHRydWUpO004Yz1uZXcgTnNkKF9wZSxmYWxzZSk7TjhjPW5ldyBOc2QoYXFlLGZhbHNlKTtHOGM9bmV3IE5zZCgkbGUsMSk7SDhjPShNYWQoKSxLYWQpO25ldyBOc2QoSXNlLEg4Yyk7azljPXRydWV9XG5mdW5jdGlvbiB3dGMoKXt3dGM9Y2NiO3ZhciBhLGI7JHNjPW5ldyBMc2QoSW1lKTt4c2M9bmV3IExzZCgnY29vcmRpbmF0ZU9yaWdpbicpO2l0Yz1uZXcgTHNkKCdwcm9jZXNzb3JzJyk7d3NjPW5ldyBNc2QoJ2NvbXBvdW5kTm9kZScsKEJjYigpLGZhbHNlKSk7TnNjPW5ldyBNc2QoJ2luc2lkZUNvbm5lY3Rpb25zJyxmYWxzZSk7X3NjPW5ldyBMc2QoJ29yaWdpbmFsQmVuZHBvaW50cycpO2F0Yz1uZXcgTHNkKCdvcmlnaW5hbER1bW15Tm9kZVBvc2l0aW9uJyk7YnRjPW5ldyBMc2QoJ29yaWdpbmFsTGFiZWxFZGdlJyk7a3RjPW5ldyBMc2QoJ3JlcHJlc2VudGVkTGFiZWxzJyk7Q3NjPW5ldyBMc2QoJ2VuZExhYmVscycpO0RzYz1uZXcgTHNkKCdlbmRMYWJlbC5vcmlnaW4nKTtTc2M9bmV3IE1zZCgnbGFiZWxTaWRlJywocmJkKCkscWJkKSk7WXNjPW5ldyBNc2QoJ21heEVkZ2VUaGlja25lc3MnLDApO2x0Yz1uZXcgTXNkKCdyZXZlcnNlZCcsZmFsc2UpO2p0Yz1uZXcgTHNkKEptZSk7VnNjPW5ldyBNc2QoJ2xvbmdFZGdlU291cmNlJyxudWxsKTtXc2M9bmV3IE1zZCgnbG9uZ0VkZ2VUYXJnZXQnLG51bGwpO1VzYz1uZXcgTXNkKCdsb25nRWRnZUhhc0xhYmVsRHVtbWllcycsZmFsc2UpO1RzYz1uZXcgTXNkKCdsb25nRWRnZUJlZm9yZUxhYmVsRHVtbXknLGZhbHNlKTtCc2M9bmV3IE1zZCgnZWRnZUNvbnN0cmFpbnQnLChHcWMoKSxFcWMpKTtQc2M9bmV3IExzZCgnaW5MYXllckxheW91dFVuaXQnKTtPc2M9bmV3IE1zZCgnaW5MYXllckNvbnN0cmFpbnQnLChlc2MoKSxjc2MpKTtRc2M9bmV3IE1zZCgnaW5MYXllclN1Y2Nlc3NvckNvbnN0cmFpbnQnLG5ldyBSa2IpO1JzYz1uZXcgTXNkKCdpbkxheWVyU3VjY2Vzc29yQ29uc3RyYWludEJldHdlZW5Ob25EdW1taWVzJyxmYWxzZSk7Z3RjPW5ldyBMc2QoJ3BvcnREdW1teScpO3lzYz1uZXcgTXNkKCdjcm9zc2luZ0hpbnQnLG1lYigwKSk7S3NjPW5ldyBNc2QoJ2dyYXBoUHJvcGVydGllcycsKGI9QkQoZ2RiKFBXKSw5KSxuZXcgeHFiKGIsQkQoX0JiKGIsYi5sZW5ndGgpLDkpLDApKSk7SHNjPW5ldyBNc2QoJ2V4dGVybmFsUG9ydFNpZGUnLChVY2QoKSxTY2QpKTtJc2M9bmV3IE1zZCgnZXh0ZXJuYWxQb3J0U2l6ZScsbmV3IGQ3Yyk7RnNjPW5ldyBMc2QoJ2V4dGVybmFsUG9ydFJlcGxhY2VkRHVtbWllcycpO0dzYz1uZXcgTHNkKCdleHRlcm5hbFBvcnRSZXBsYWNlZER1bW15Jyk7RXNjPW5ldyBNc2QoJ2V4dGVybmFsUG9ydENvbm5lY3Rpb25zJywoYT1CRChnZGIoRjEpLDkpLG5ldyB4cWIoYSxCRChfQmIoYSxhLmxlbmd0aCksOSksMCkpKTtodGM9bmV3IE1zZCh0bGUsMCk7c3NjPW5ldyBMc2QoJ2JhcnljZW50ZXJBc3NvY2lhdGVzJyk7dnRjPW5ldyBMc2QoJ1RvcFNpZGVDb21tZW50cycpO3RzYz1uZXcgTHNkKCdCb3R0b21TaWRlQ29tbWVudHMnKTt2c2M9bmV3IExzZCgnQ29tbWVudENvbm5lY3Rpb25Qb3J0Jyk7TXNjPW5ldyBNc2QoJ2lucHV0Q29sbGVjdCcsZmFsc2UpO2V0Yz1uZXcgTXNkKCdvdXRwdXRDb2xsZWN0JyxmYWxzZSk7QXNjPW5ldyBNc2QoJ2N5Y2xpYycsZmFsc2UpO3pzYz1uZXcgTHNkKCdjcm9zc0hpZXJhcmNoeU1hcCcpO3V0Yz1uZXcgTHNkKCd0YXJnZXRPZmZzZXQnKTtuZXcgTXNkKCdzcGxpbmVMYWJlbFNpemUnLG5ldyBkN2MpO290Yz1uZXcgTHNkKCdzcGFjaW5ncycpO2Z0Yz1uZXcgTXNkKCdwYXJ0aXRpb25Db25zdHJhaW50JyxmYWxzZSk7dXNjPW5ldyBMc2QoJ2JyZWFraW5nUG9pbnQuaW5mbycpO3N0Yz1uZXcgTHNkKCdzcGxpbmVzLnN1cnZpdmluZ0VkZ2UnKTtydGM9bmV3IExzZCgnc3BsaW5lcy5yb3V0ZS5zdGFydCcpO3B0Yz1uZXcgTHNkKCdzcGxpbmVzLmVkZ2VDaGFpbicpO2R0Yz1uZXcgTHNkKCdvcmlnaW5hbFBvcnRDb25zdHJhaW50cycpO250Yz1uZXcgTHNkKCdzZWxmTG9vcEhvbGRlcicpO3F0Yz1uZXcgTHNkKCdzcGxpbmVzLm5zUG9ydFknKTtac2M9bmV3IExzZCgnbW9kZWxPcmRlcicpO1hzYz1uZXcgTHNkKCdsb25nRWRnZVRhcmdldE5vZGUnKTtKc2M9bmV3IE1zZChYbmUsZmFsc2UpO210Yz1uZXcgTXNkKFhuZSxmYWxzZSk7THNjPW5ldyBMc2QoJ2xheWVyQ29uc3RyYWludHMuaGlkZGVuTm9kZXMnKTtjdGM9bmV3IExzZCgnbGF5ZXJDb25zdHJhaW50cy5vcHBvc2lkZVBvcnQnKTt0dGM9bmV3IExzZCgndGFyZ2V0Tm9kZS5tb2RlbE9yZGVyJyl9XG5mdW5jdGlvbiBqd2MoKXtqd2M9Y2NiO3B1Yz0oeHFjKCksdnFjKTtvdWM9bmV3IE5zZChZbmUscHVjKTtHdWM9bmV3IE5zZChabmUsKEJjYigpLGZhbHNlKSk7TXVjPShtc2MoKSxrc2MpO0x1Yz1uZXcgTnNkKCRuZSxNdWMpO2N2Yz1uZXcgTnNkKF9uZSxmYWxzZSk7ZHZjPW5ldyBOc2QoYW9lLHRydWUpO0l0Yz1uZXcgTnNkKGJvZSxmYWxzZSk7eHZjPShCQWMoKSx6QWMpO3d2Yz1uZXcgTnNkKGNvZSx4dmMpO21lYigxKTtGdmM9bmV3IE5zZChkb2UsbWViKDcpKTtHdmM9bmV3IE5zZChlb2UsZmFsc2UpO0h1Yz1uZXcgTnNkKGZvZSxmYWxzZSk7bnVjPShtcWMoKSxpcWMpO211Yz1uZXcgTnNkKGdvZSxudWMpO2J2Yz0obHpjKCksanpjKTthdmM9bmV3IE5zZChob2UsYnZjKTtUdWM9KEN0YygpLEJ0Yyk7U3VjPW5ldyBOc2QoaW9lLFR1Yyk7bWViKC0xKTtSdWM9bmV3IE5zZChqb2UsbWViKC0xKSk7bWViKC0xKTtVdWM9bmV3IE5zZChrb2UsbWViKC0xKSk7bWViKC0xKTtWdWM9bmV3IE5zZChsb2UsbWViKDQpKTttZWIoLTEpO1h1Yz1uZXcgTnNkKG1vZSxtZWIoMikpO191Yz0oa0FjKCksaUFjKTskdWM9bmV3IE5zZChub2UsX3VjKTttZWIoMCk7WnVjPW5ldyBOc2Qob29lLG1lYigwKSk7UHVjPW5ldyBOc2QocG9lLG1lYihPaGUpKTtsdWM9KFJwYygpLFBwYyk7a3VjPW5ldyBOc2QocW9lLGx1Yyk7WHRjPW5ldyBOc2Qocm9lLGZhbHNlKTtldWM9bmV3IE5zZChzb2UsMC4xKTtpdWM9bmV3IE5zZCh0b2UsZmFsc2UpO21lYigtMSk7Z3VjPW5ldyBOc2QodW9lLG1lYigtMSkpO21lYigtMSk7aHVjPW5ldyBOc2Qodm9lLG1lYigtMSkpO21lYigwKTtZdGM9bmV3IE5zZCh3b2UsbWViKDQwKSk7Y3VjPShYcmMoKSxXcmMpO2J1Yz1uZXcgTnNkKHhvZSxjdWMpOyR0Yz1VcmM7WnRjPW5ldyBOc2QoeW9lLCR0Yyk7dnZjPShWemMoKSxRemMpO3V2Yz1uZXcgTnNkKHpvZSx2dmMpO2t2Yz1uZXcgTHNkKEFvZSk7ZnZjPShfcWMoKSxacWMpO2V2Yz1uZXcgTnNkKEJvZSxmdmMpO2l2Yz0obHJjKCksaXJjKTtodmM9bmV3IE5zZChDb2UsaXZjKTtuZXcgVGZkO252Yz1uZXcgTnNkKERvZSwwLjMpO3B2Yz1uZXcgTHNkKEVvZSk7cnZjPShJemMoKSxHemMpO3F2Yz1uZXcgTnNkKEZvZSxydmMpO3h1Yz0oVEFjKCksUkFjKTt3dWM9bmV3IE5zZChHb2UseHVjKTt6dWM9KF9BYygpLCRBYyk7eXVjPW5ldyBOc2QoSG9lLHp1Yyk7QnVjPSh0QmMoKSxzQmMpO0F1Yz1uZXcgTnNkKElvZSxCdWMpO0R1Yz1uZXcgTnNkKEpvZSwwLjIpO3V1Yz1uZXcgTnNkKEtvZSwyKTtCdmM9bmV3IE5zZChMb2UsbnVsbCk7RHZjPW5ldyBOc2QoTW9lLDEwKTtDdmM9bmV3IE5zZChOb2UsMTApO0V2Yz1uZXcgTnNkKE9vZSwyMCk7bWViKDApO3l2Yz1uZXcgTnNkKFBvZSxtZWIoMCkpO21lYigwKTt6dmM9bmV3IE5zZChRb2UsbWViKDApKTttZWIoMCk7QXZjPW5ldyBOc2QoUm9lLG1lYigwKSk7SnRjPW5ldyBOc2QoU29lLGZhbHNlKTtOdGM9KHlyYygpLHdyYyk7TXRjPW5ldyBOc2QoVG9lLE50Yyk7THRjPShJcGMoKSxIcGMpO0t0Yz1uZXcgTnNkKFVvZSxMdGMpO0p1Yz1uZXcgTnNkKFZvZSxmYWxzZSk7bWViKDApO0l1Yz1uZXcgTnNkKFdvZSxtZWIoMTYpKTttZWIoMCk7S3VjPW5ldyBOc2QoWG9lLG1lYig1KSk7YndjPShMQmMoKSxKQmMpO2F3Yz1uZXcgTnNkKFlvZSxid2MpO0h2Yz1uZXcgTnNkKFpvZSwxMCk7S3ZjPW5ldyBOc2QoJG9lLDEpO1R2Yz0oYnFjKCksYXFjKTtTdmM9bmV3IE5zZChfb2UsVHZjKTtOdmM9bmV3IExzZChhcGUpO1F2Yz1tZWIoMSk7bWViKDApO1B2Yz1uZXcgTnNkKGJwZSxRdmMpO2d3Yz0oQ0JjKCksekJjKTtmd2M9bmV3IE5zZChjcGUsZ3djKTtjd2M9bmV3IExzZChkcGUpO1l2Yz1uZXcgTnNkKGVwZSx0cnVlKTtXdmM9bmV3IE5zZChmcGUsMik7JHZjPW5ldyBOc2QoZ3BlLHRydWUpO3R1Yz0oU3FjKCksUXFjKTtzdWM9bmV3IE5zZChocGUsdHVjKTtydWM9KEFwYygpLHdwYyk7cXVjPW5ldyBOc2QoaXBlLHJ1Yyk7V3RjPSh0QWMoKSxyQWMpO1Z0Yz1uZXcgTnNkKGpwZSxXdGMpO1V0Yz1uZXcgTnNkKGtwZSxmYWxzZSk7UHRjPShSWGIoKSxRWGIpO090Yz1uZXcgTnNkKGxwZSxQdGMpO1R0Yz0oeHpjKCksdXpjKTtTdGM9bmV3IE5zZChtcGUsVHRjKTtRdGM9bmV3IE5zZChucGUsMCk7UnRjPW5ldyBOc2Qob3BlLDApO091Yz1rcWM7TnVjPU9wYztXdWM9aXpjO1l1Yz1pemM7UXVjPWZ6YztmdWM9KGhiZCgpLGViZCk7anVjPVBwYztkdWM9UHBjO190Yz1QcGM7YXVjPWViZDtsdmM9VHpjO212Yz1RemM7Z3ZjPVF6YztqdmM9UXpjO292Yz1TemM7dHZjPVR6YztzdmM9VHpjO0N1Yz0oQWFkKCkseWFkKTtFdWM9eWFkO0Z1Yz1zQmM7dnVjPXhhZDtJdmM9S0JjO0p2Yz1JQmM7THZjPUtCYztNdmM9SUJjO1V2Yz1LQmM7VnZjPUlCYztPdmM9X3BjO1J2Yz1hcWM7aHdjPUtCYztpd2M9SUJjO2R3Yz1LQmM7ZXdjPUlCYztadmM9SUJjO1h2Yz1JQmM7X3ZjPUlCY31cbmZ1bmN0aW9uIFM4Yigpe1M4Yj1jY2I7WTdiPW5ldyBUOGIoJ0RJUkVDVElPTl9QUkVQUk9DRVNTT1InLDApO1Y3Yj1uZXcgVDhiKCdDT01NRU5UX1BSRVBST0NFU1NPUicsMSk7WjdiPW5ldyBUOGIoJ0VER0VfQU5EX0xBWUVSX0NPTlNUUkFJTlRfRURHRV9SRVZFUlNFUicsMik7bjhiPW5ldyBUOGIoJ0lOVEVSQUNUSVZFX0VYVEVSTkFMX1BPUlRfUE9TSVRJT05FUicsMyk7RzhiPW5ldyBUOGIoJ1BBUlRJVElPTl9QUkVQUk9DRVNTT1InLDQpO3I4Yj1uZXcgVDhiKCdMQUJFTF9EVU1NWV9JTlNFUlRFUicsNSk7TThiPW5ldyBUOGIoJ1NFTEZfTE9PUF9QUkVQUk9DRVNTT1InLDYpO3c4Yj1uZXcgVDhiKCdMQVlFUl9DT05TVFJBSU5UX1BSRVBST0NFU1NPUicsNyk7RThiPW5ldyBUOGIoJ1BBUlRJVElPTl9NSURQUk9DRVNTT1InLDgpO2k4Yj1uZXcgVDhiKCdISUdIX0RFR1JFRV9OT0RFX0xBWUVSX1BST0NFU1NPUicsOSk7QThiPW5ldyBUOGIoJ05PREVfUFJPTU9USU9OJywxMCk7djhiPW5ldyBUOGIoJ0xBWUVSX0NPTlNUUkFJTlRfUE9TVFBST0NFU1NPUicsMTEpO0Y4Yj1uZXcgVDhiKCdQQVJUSVRJT05fUE9TVFBST0NFU1NPUicsMTIpO2U4Yj1uZXcgVDhiKCdISUVSQVJDSElDQUxfUE9SVF9DT05TVFJBSU5UX1BST0NFU1NPUicsMTMpO084Yj1uZXcgVDhiKCdTRU1JX0lOVEVSQUNUSVZFX0NST1NTTUlOX1BST0NFU1NPUicsMTQpO1A3Yj1uZXcgVDhiKCdCUkVBS0lOR19QT0lOVF9JTlNFUlRFUicsMTUpO3o4Yj1uZXcgVDhiKCdMT05HX0VER0VfU1BMSVRURVInLDE2KTtJOGI9bmV3IFQ4YignUE9SVF9TSURFX1BST0NFU1NPUicsMTcpO284Yj1uZXcgVDhiKCdJTlZFUlRFRF9QT1JUX1BST0NFU1NPUicsMTgpO0g4Yj1uZXcgVDhiKCdQT1JUX0xJU1RfU09SVEVSJywxOSk7UThiPW5ldyBUOGIoJ1NPUlRfQllfSU5QVVRfT1JERVJfT0ZfTU9ERUwnLDIwKTtDOGI9bmV3IFQ4YignTk9SVEhfU09VVEhfUE9SVF9QUkVQUk9DRVNTT1InLDIxKTtRN2I9bmV3IFQ4YignQlJFQUtJTkdfUE9JTlRfUFJPQ0VTU09SJywyMik7RDhiPW5ldyBUOGIoQm5lLDIzKTtSOGI9bmV3IFQ4YihDbmUsMjQpO0s4Yj1uZXcgVDhiKCdTRUxGX0xPT1BfUE9SVF9SRVNUT1JFUicsMjUpO1A4Yj1uZXcgVDhiKCdTSU5HTEVfRURHRV9HUkFQSF9XUkFQUEVSJywyNik7cDhiPW5ldyBUOGIoJ0lOX0xBWUVSX0NPTlNUUkFJTlRfUFJPQ0VTU09SJywyNyk7YjhiPW5ldyBUOGIoJ0VORF9OT0RFX1BPUlRfTEFCRUxfTUFOQUdFTUVOVF9QUk9DRVNTT1InLDI4KTtxOGI9bmV3IFQ4YignTEFCRUxfQU5EX05PREVfU0laRV9QUk9DRVNTT1InLDI5KTttOGI9bmV3IFQ4YignSU5ORVJNT1NUX05PREVfTUFSR0lOX0NBTENVTEFUT1InLDMwKTtOOGI9bmV3IFQ4YignU0VMRl9MT09QX1JPVVRFUicsMzEpO1Q3Yj1uZXcgVDhiKCdDT01NRU5UX05PREVfTUFSR0lOX0NBTENVTEFUT1InLDMyKTtfN2I9bmV3IFQ4YignRU5EX0xBQkVMX1BSRVBST0NFU1NPUicsMzMpO3Q4Yj1uZXcgVDhiKCdMQUJFTF9EVU1NWV9TV0lUQ0hFUicsMzQpO1M3Yj1uZXcgVDhiKCdDRU5URVJfTEFCRUxfTUFOQUdFTUVOVF9QUk9DRVNTT1InLDM1KTt1OGI9bmV3IFQ4YignTEFCRUxfU0lERV9TRUxFQ1RPUicsMzYpO2s4Yj1uZXcgVDhiKCdIWVBFUkVER0VfRFVNTVlfTUVSR0VSJywzNyk7ZjhiPW5ldyBUOGIoJ0hJRVJBUkNISUNBTF9QT1JUX0RVTU1ZX1NJWkVfUFJPQ0VTU09SJywzOCk7eDhiPW5ldyBUOGIoJ0xBWUVSX1NJWkVfQU5EX0dSQVBIX0hFSUdIVF9DQUxDVUxBVE9SJywzOSk7aDhiPW5ldyBUOGIoJ0hJRVJBUkNISUNBTF9QT1JUX1BPU0lUSU9OX1BST0NFU1NPUicsNDApO1c3Yj1uZXcgVDhiKCdDT05TVFJBSU5UU19QT1NUUFJPQ0VTU09SJyw0MSk7VTdiPW5ldyBUOGIoJ0NPTU1FTlRfUE9TVFBST0NFU1NPUicsNDIpO2w4Yj1uZXcgVDhiKCdIWVBFUk5PREVfUFJPQ0VTU09SJyw0Myk7ZzhiPW5ldyBUOGIoJ0hJRVJBUkNISUNBTF9QT1JUX09SVEhPR09OQUxfRURHRV9ST1VURVInLDQ0KTt5OGI9bmV3IFQ4YignTE9OR19FREdFX0pPSU5FUicsNDUpO0w4Yj1uZXcgVDhiKCdTRUxGX0xPT1BfUE9TVFBST0NFU1NPUicsNDYpO1I3Yj1uZXcgVDhiKCdCUkVBS0lOR19QT0lOVF9SRU1PVkVSJyw0Nyk7QjhiPW5ldyBUOGIoJ05PUlRIX1NPVVRIX1BPUlRfUE9TVFBST0NFU1NPUicsNDgpO2o4Yj1uZXcgVDhiKCdIT1JJWk9OVEFMX0NPTVBBQ1RPUicsNDkpO3M4Yj1uZXcgVDhiKCdMQUJFTF9EVU1NWV9SRU1PVkVSJyw1MCk7YzhiPW5ldyBUOGIoJ0ZJTkFMX1NQTElORV9CRU5EUE9JTlRTX0NBTENVTEFUT1InLDUxKTthOGI9bmV3IFQ4YignRU5EX0xBQkVMX1NPUlRFUicsNTIpO0o4Yj1uZXcgVDhiKCdSRVZFUlNFRF9FREdFX1JFU1RPUkVSJyw1Myk7JDdiPW5ldyBUOGIoJ0VORF9MQUJFTF9QT1NUUFJPQ0VTU09SJyw1NCk7ZDhiPW5ldyBUOGIoJ0hJRVJBUkNISUNBTF9OT0RFX1JFU0laRVInLDU1KTtYN2I9bmV3IFQ4YignRElSRUNUSU9OX1BPU1RQUk9DRVNTT1InLDU2KX1cbmZ1bmN0aW9uIEtJYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyxBLEIsQyxELEYsRyxILEksSixLLEwsTSxOLE8sUCxRLFIsUyxULFUsVixXLFgsWSxaLCQsYWIsYmIsY2IsZGIsZWIsZmIsZ2IsaGIsaWIsamIsa2IsbGI7Y2I9MDtmb3IoSD1iLEs9MCxOPUgubGVuZ3RoO0s8TjsrK0spe0Y9SFtLXTtmb3IoVj1uZXcgb2xiKEYuaik7Vi5hPFYuYy5jLmxlbmd0aDspe1U9QkQobWxiKFYpLDExKTtYPTA7Zm9yKGg9bmV3IG9sYihVLmcpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxNyk7Ri5jIT1nLmQuaS5jJiYrK1h9WD4wJiYoYS5hW1UucF09Y2IrKyl9fWhiPTA7Zm9yKEk9YyxMPTAsTz1JLmxlbmd0aDtMPE87KytMKXtGPUlbTF07UD0wO2ZvcihWPW5ldyBvbGIoRi5qKTtWLmE8Vi5jLmMubGVuZ3RoOyl7VT1CRChtbGIoViksMTEpO2lmKFUuaj09KFVjZCgpLEFjZCkpe2ZvcihoPW5ldyBvbGIoVS5lKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTcpO2lmKEYuYyE9Zy5jLmkuYyl7KytQO2JyZWFrfX19ZWxzZXticmVha319Uj0wO1k9bmV3IEJpYihGLmosRi5qLmMubGVuZ3RoKTt3aGlsZShZLmI+MCl7VT0oc0NiKFkuYj4wKSxCRChZLmEuWGIoWS5jPS0tWS5iKSwxMSkpO1g9MDtmb3IoaD1uZXcgb2xiKFUuZSk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDE3KTtGLmMhPWcuYy5pLmMmJisrWH1pZihYPjApe2lmKFUuaj09KFVjZCgpLEFjZCkpe2EuYVtVLnBdPWhiOysraGJ9ZWxzZXthLmFbVS5wXT1oYitQK1I7KytSfX19aGIrPVJ9Vz1uZXcgTHFiO289bmV3IHpzYjtmb3IoRz1iLEo9MCxNPUcubGVuZ3RoO0o8TTsrK0ope0Y9R1tKXTtmb3IoZmI9bmV3IG9sYihGLmopO2ZiLmE8ZmIuYy5jLmxlbmd0aDspe2ViPUJEKG1sYihmYiksMTEpO2ZvcihoPW5ldyBvbGIoZWIuZyk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDE3KTtqYj1nLmQ7aWYoRi5jIT1qYi5pLmMpe2RiPUJEKFdkKGlyYihXLmYsZWIpKSw0NjcpO2liPUJEKFdkKGlyYihXLmYsamIpKSw0NjcpO2lmKCFkYiYmIWliKXtuPW5ldyBOSWM7by5hLnpjKG4sbyk7RWtiKG4uYSxnKTtFa2Iobi5kLGViKTtqcmIoVy5mLGViLG4pO0VrYihuLmQsamIpO2pyYihXLmYsamIsbil9ZWxzZSBpZighZGIpe0VrYihpYi5hLGcpO0VrYihpYi5kLGViKTtqcmIoVy5mLGViLGliKX1lbHNlIGlmKCFpYil7RWtiKGRiLmEsZyk7RWtiKGRiLmQsamIpO2pyYihXLmYsamIsZGIpfWVsc2UgaWYoZGI9PWliKXtFa2IoZGIuYSxnKX1lbHNle0VrYihkYi5hLGcpO2ZvcihUPW5ldyBvbGIoaWIuZCk7VC5hPFQuYy5jLmxlbmd0aDspe1M9QkQobWxiKFQpLDExKTtqcmIoVy5mLFMsZGIpfUdrYihkYi5hLGliLmEpO0drYihkYi5kLGliLmQpO28uYS5CYyhpYikhPW51bGx9fX19fXA9QkQoRWUobyxLQyhvWSx7MzoxLDQ6MSw1OjEsMTk0NjoxfSw0Njcsby5hLmdjKCksMCwxKSksMTk0Nik7RD1iWzBdLmM7YmI9Y1swXS5jO2ZvcihrPXAsbD0wLG09ay5sZW5ndGg7bDxtOysrbCl7aj1rW2xdO2ouZT1jYjtqLmY9aGI7Zm9yKFY9bmV3IG9sYihqLmQpO1YuYTxWLmMuYy5sZW5ndGg7KXtVPUJEKG1sYihWKSwxMSk7Wj1hLmFbVS5wXTtpZihVLmkuYz09RCl7WjxqLmUmJihqLmU9Wik7Wj5qLmImJihqLmI9Wil9ZWxzZSBpZihVLmkuYz09YmIpe1o8ai5mJiYoai5mPVopO1o+ai5jJiYoai5jPVopfX19S2xiKHAsMCxwLmxlbmd0aCxudWxsKTtnYj1LQyhXRCxvamUsMjUscC5sZW5ndGgsMTUsMSk7ZD1LQyhXRCxvamUsMjUsaGIrMSwxNSwxKTtmb3Iocj0wO3I8cC5sZW5ndGg7cisrKXtnYltyXT1wW3JdLmY7ZFtnYltyXV09MX1mPTA7Zm9yKHM9MDtzPGQubGVuZ3RoO3MrKyl7ZFtzXT09MT8oZFtzXT1mKTotLWZ9JD0wO2Zvcih0PTA7dDxnYi5sZW5ndGg7dCsrKXtnYlt0XSs9ZFtnYlt0XV07JD0kd25kLk1hdGgubWF4KCQsZ2JbdF0rMSl9aT0xO3doaWxlKGk8JCl7aSo9Mn1sYj0yKmktMTtpLT0xO2tiPUtDKFdELG9qZSwyNSxsYiwxNSwxKTtlPTA7Zm9yKEI9MDtCPGdiLmxlbmd0aDtCKyspe0E9Z2JbQl0raTsrK2tiW0FdO3doaWxlKEE+MCl7QSUyPjAmJihlKz1rYltBKzFdKTtBPShBLTEpLzJ8MDsrK2tiW0FdfX1DPUtDKG5ZLFVoZSwzNjIscC5sZW5ndGgqMiwwLDEpO2Zvcih1PTA7dTxwLmxlbmd0aDt1Kyspe0NbMip1XT1uZXcgUUljKHBbdV0scFt1XS5lLHBbdV0uYiwoVUljKCksVEljKSk7Q1syKnUrMV09bmV3IFFJYyhwW3VdLHBbdV0uYixwW3VdLmUsU0ljKX1LbGIoQywwLEMubGVuZ3RoLG51bGwpO1E9MDtmb3Iodj0wO3Y8Qy5sZW5ndGg7disrKXtzd2l0Y2goQ1t2XS5kLmcpe2Nhc2UgMDorK1E7YnJlYWs7Y2FzZSAxOi0tUTtlKz1RO319YWI9S0MoblksVWhlLDM2MixwLmxlbmd0aCoyLDAsMSk7Zm9yKHc9MDt3PHAubGVuZ3RoO3crKyl7YWJbMip3XT1uZXcgUUljKHBbd10scFt3XS5mLHBbd10uYywoVUljKCksVEljKSk7YWJbMip3KzFdPW5ldyBRSWMocFt3XSxwW3ddLmMscFt3XS5mLFNJYyl9S2xiKGFiLDAsYWIubGVuZ3RoLG51bGwpO1E9MDtmb3IocT0wO3E8YWIubGVuZ3RoO3ErKyl7c3dpdGNoKGFiW3FdLmQuZyl7Y2FzZSAwOisrUTticmVhaztjYXNlIDE6LS1RO2UrPVE7fX1yZXR1cm4gZX1cbmZ1bmN0aW9uIHdmZSgpe3dmZT1jY2I7ZmZlPW5ldyB4ZmUoNyk7aGZlPSgrK3ZmZSxuZXcgaWdlKDgsOTQpKTsrK3ZmZTtuZXcgaWdlKDgsNjQpO2lmZT0oKyt2ZmUsbmV3IGlnZSg4LDM2KSk7b2ZlPSgrK3ZmZSxuZXcgaWdlKDgsNjUpKTtwZmU9KCsrdmZlLG5ldyBpZ2UoOCwxMjIpKTtxZmU9KCsrdmZlLG5ldyBpZ2UoOCw5MCkpO3RmZT0oKyt2ZmUsbmV3IGlnZSg4LDk4KSk7bWZlPSgrK3ZmZSxuZXcgaWdlKDgsNjYpKTtyZmU9KCsrdmZlLG5ldyBpZ2UoOCw2MCkpO3VmZT0oKyt2ZmUsbmV3IGlnZSg4LDYyKSk7ZWZlPW5ldyB4ZmUoMTEpO2NmZT0oKyt2ZmUsbmV3ICRmZSg0KSk7VWZlKGNmZSw0OCw1Nyk7c2ZlPSgrK3ZmZSxuZXcgJGZlKDQpKTtVZmUoc2ZlLDQ4LDU3KTtVZmUoc2ZlLDY1LDkwKTtVZmUoc2ZlLDk1LDk1KTtVZmUoc2ZlLDk3LDEyMik7bmZlPSgrK3ZmZSxuZXcgJGZlKDQpKTtVZmUobmZlLDksOSk7VWZlKG5mZSwxMCwxMCk7VWZlKG5mZSwxMiwxMik7VWZlKG5mZSwxMywxMyk7VWZlKG5mZSwzMiwzMik7amZlPV9mZShjZmUpO2xmZT1fZmUoc2ZlKTtrZmU9X2ZlKG5mZSk7WmVlPW5ldyBMcWI7JGVlPW5ldyBMcWI7X2VlPU9DKEdDKFpJLDEpLG5pZSwyLDYsWydDbicsJ0x1JywnTGwnLCdMdCcsJ0xtJywnTG8nLCdNbicsJ01lJywnTWMnLCdOZCcsJ05sJywnTm8nLCdacycsJ1psJywnWnAnLCdDYycsJ0NmJyxudWxsLCdDbycsJ0NzJywnUGQnLCdQcycsJ1BlJywnUGMnLCdQbycsJ1NtJywnU2MnLCdTaycsJ1NvJywnUGknLCdQZicsJ0wnLCdNJywnTicsJ1onLCdDJywnUCcsJ1MnXSk7WWVlPU9DKEdDKFpJLDEpLG5pZSwyLDYsWydCYXNpYyBMYXRpbicsJ0xhdGluLTEgU3VwcGxlbWVudCcsJ0xhdGluIEV4dGVuZGVkLUEnLCdMYXRpbiBFeHRlbmRlZC1CJywnSVBBIEV4dGVuc2lvbnMnLCdTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMnLCdDb21iaW5pbmcgRGlhY3JpdGljYWwgTWFya3MnLCdHcmVlaycsJ0N5cmlsbGljJywnQXJtZW5pYW4nLCdIZWJyZXcnLCdBcmFiaWMnLCdTeXJpYWMnLCdUaGFhbmEnLCdEZXZhbmFnYXJpJywnQmVuZ2FsaScsJ0d1cm11a2hpJywnR3VqYXJhdGknLCdPcml5YScsJ1RhbWlsJywnVGVsdWd1JywnS2FubmFkYScsJ01hbGF5YWxhbScsJ1NpbmhhbGEnLCdUaGFpJywnTGFvJywnVGliZXRhbicsJ015YW5tYXInLCdHZW9yZ2lhbicsJ0hhbmd1bCBKYW1vJywnRXRoaW9waWMnLCdDaGVyb2tlZScsJ1VuaWZpZWQgQ2FuYWRpYW4gQWJvcmlnaW5hbCBTeWxsYWJpY3MnLCdPZ2hhbScsJ1J1bmljJywnS2htZXInLCdNb25nb2xpYW4nLCdMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsJywnR3JlZWsgRXh0ZW5kZWQnLCdHZW5lcmFsIFB1bmN0dWF0aW9uJywnU3VwZXJzY3JpcHRzIGFuZCBTdWJzY3JpcHRzJywnQ3VycmVuY3kgU3ltYm9scycsJ0NvbWJpbmluZyBNYXJrcyBmb3IgU3ltYm9scycsJ0xldHRlcmxpa2UgU3ltYm9scycsJ051bWJlciBGb3JtcycsJ0Fycm93cycsJ01hdGhlbWF0aWNhbCBPcGVyYXRvcnMnLCdNaXNjZWxsYW5lb3VzIFRlY2huaWNhbCcsJ0NvbnRyb2wgUGljdHVyZXMnLCdPcHRpY2FsIENoYXJhY3RlciBSZWNvZ25pdGlvbicsJ0VuY2xvc2VkIEFscGhhbnVtZXJpY3MnLCdCb3ggRHJhd2luZycsJ0Jsb2NrIEVsZW1lbnRzJywnR2VvbWV0cmljIFNoYXBlcycsJ01pc2NlbGxhbmVvdXMgU3ltYm9scycsJ0RpbmdiYXRzJywnQnJhaWxsZSBQYXR0ZXJucycsJ0NKSyBSYWRpY2FscyBTdXBwbGVtZW50JywnS2FuZ3hpIFJhZGljYWxzJywnSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gQ2hhcmFjdGVycycsJ0NKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbicsJ0hpcmFnYW5hJywnS2F0YWthbmEnLCdCb3BvbW9mbycsJ0hhbmd1bCBDb21wYXRpYmlsaXR5IEphbW8nLCdLYW5idW4nLCdCb3BvbW9mbyBFeHRlbmRlZCcsJ0VuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMnLCdDSksgQ29tcGF0aWJpbGl0eScsJ0NKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEEnLCdDSksgVW5pZmllZCBJZGVvZ3JhcGhzJywnWWkgU3lsbGFibGVzJywnWWkgUmFkaWNhbHMnLCdIYW5ndWwgU3lsbGFibGVzJyx1eGUsJ0NKSyBDb21wYXRpYmlsaXR5IElkZW9ncmFwaHMnLCdBbHBoYWJldGljIFByZXNlbnRhdGlvbiBGb3JtcycsJ0FyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQScsJ0NvbWJpbmluZyBIYWxmIE1hcmtzJywnQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMnLCdTbWFsbCBGb3JtIFZhcmlhbnRzJywnQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CJywnU3BlY2lhbHMnLCdIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3JtcycsJ09sZCBJdGFsaWMnLCdHb3RoaWMnLCdEZXNlcmV0JywnQnl6YW50aW5lIE11c2ljYWwgU3ltYm9scycsJ011c2ljYWwgU3ltYm9scycsJ01hdGhlbWF0aWNhbCBBbHBoYW51bWVyaWMgU3ltYm9scycsJ0NKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEInLCdDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIFN1cHBsZW1lbnQnLCdUYWdzJ10pO2FmZT1PQyhHQyhXRCwxKSxvamUsMjUsMTUsWzY2MzA0LDY2MzUxLDY2MzUyLDY2MzgzLDY2NTYwLDY2NjM5LDExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTk4MDgsMTIwODMxLDEzMTA3MiwxNzM3ODIsMTk0NTYwLDE5NTEwMyw5MTc1MDQsOTE3NjMxXSl9XG5mdW5jdGlvbiBxSmIoKXtxSmI9Y2NiO25KYj1uZXcgdEpiKCdPVVRfVF9MJywwLChOSGIoKSxMSGIpLChFSWIoKSxCSWIpLChnSGIoKSxkSGIpLGRIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKChIYmQoKSxEYmQpLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtHYmQsemJkXSkpXSkpO21KYj1uZXcgdEpiKCdPVVRfVF9DJywxLEtIYixCSWIsZEhiLGVIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKERiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbR2JkLHliZF0pKSxxcWIoRGJkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtHYmQseWJkLEFiZF0pKV0pKTtvSmI9bmV3IHRKYignT1VUX1RfUicsMixNSGIsQkliLGRIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihEYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0diZCxCYmRdKSldKSk7ZUpiPW5ldyB0SmIoJ09VVF9CX0wnLDMsTEhiLERJYixmSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoRGJkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtFYmQsemJkXSkpXSkpO2RKYj1uZXcgdEpiKCdPVVRfQl9DJyw0LEtIYixESWIsZkhiLGVIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKERiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbRWJkLHliZF0pKSxxcWIoRGJkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtFYmQseWJkLEFiZF0pKV0pKTtmSmI9bmV3IHRKYignT1VUX0JfUicsNSxNSGIsREliLGZIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihEYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0ViZCxCYmRdKSldKSk7aUpiPW5ldyB0SmIoJ09VVF9MX1QnLDYsTUhiLERJYixkSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoRGJkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFt6YmQsR2JkLEFiZF0pKV0pKTtoSmI9bmV3IHRKYignT1VUX0xfQycsNyxNSGIsQ0liLGVIYixkSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihEYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW3piZCxGYmRdKSkscXFiKERiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbemJkLEZiZCxBYmRdKSldKSk7Z0piPW5ldyB0SmIoJ09VVF9MX0InLDgsTUhiLEJJYixmSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoRGJkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFt6YmQsRWJkLEFiZF0pKV0pKTtsSmI9bmV3IHRKYignT1VUX1JfVCcsOSxMSGIsREliLGRIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihEYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0JiZCxHYmQsQWJkXSkpXSkpO2tKYj1uZXcgdEpiKCdPVVRfUl9DJywxMCxMSGIsQ0liLGVIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihEYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0JiZCxGYmRdKSkscXFiKERiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbQmJkLEZiZCxBYmRdKSldKSk7akpiPW5ldyB0SmIoJ09VVF9SX0InLDExLExIYixCSWIsZkhiLGZIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKERiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbQmJkLEViZCxBYmRdKSldKSk7YkpiPW5ldyB0SmIoJ0lOX1RfTCcsMTIsTEhiLERJYixkSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtHYmQsemJkXSkpLHFxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0diZCx6YmQsQWJkXSkpXSkpO2FKYj1uZXcgdEpiKCdJTl9UX0MnLDEzLEtIYixESWIsZEhiLGVIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbR2JkLHliZF0pKSxxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtHYmQseWJkLEFiZF0pKV0pKTtjSmI9bmV3IHRKYignSU5fVF9SJywxNCxNSGIsREliLGRIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0diZCxCYmRdKSkscXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbR2JkLEJiZCxBYmRdKSldKSk7JEliPW5ldyB0SmIoJ0lOX0NfTCcsMTUsTEhiLENJYixlSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtGYmQsemJkXSkpLHFxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0ZiZCx6YmQsQWJkXSkpXSkpO1pJYj1uZXcgdEpiKCdJTl9DX0MnLDE2LEtIYixDSWIsZUhiLGVIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbRmJkLHliZF0pKSxxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtGYmQseWJkLEFiZF0pKV0pKTtfSWI9bmV3IHRKYignSU5fQ19SJywxNyxNSGIsQ0liLGVIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0ZiZCxCYmRdKSkscXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbRmJkLEJiZCxBYmRdKSldKSk7WEliPW5ldyB0SmIoJ0lOX0JfTCcsMTgsTEhiLEJJYixmSGIsZEhiLE9DKEdDKExLLDEpLFVoZSwyMSwwLFtxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtFYmQsemJkXSkpLHFxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0ViZCx6YmQsQWJkXSkpXSkpO1dJYj1uZXcgdEpiKCdJTl9CX0MnLDE5LEtIYixCSWIsZkhiLGVIYixPQyhHQyhMSywxKSxVaGUsMjEsMCxbcXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbRWJkLHliZF0pKSxxcWIoQ2JkLE9DKEdDKEIxLDEpLEtpZSw5MywwLFtFYmQseWJkLEFiZF0pKV0pKTtZSWI9bmV3IHRKYignSU5fQl9SJywyMCxNSGIsQkliLGZIYixmSGIsT0MoR0MoTEssMSksVWhlLDIxLDAsW3FxYihDYmQsT0MoR0MoQjEsMSksS2llLDkzLDAsW0ViZCxCYmRdKSkscXFiKENiZCxPQyhHQyhCMSwxKSxLaWUsOTMsMCxbRWJkLEJiZCxBYmRdKSldKSk7cEpiPW5ldyB0SmIob2xlLDIxLG51bGwsbnVsbCxudWxsLG51bGwsT0MoR0MoTEssMSksVWhlLDIxLDAsW10pKX1cbmZ1bmN0aW9uIGpHZCgpe2pHZD1jY2I7UEZkPShORmQoKSxNRmQpLmI7QkQocXVkKFpLZChNRmQuYiksMCksMzQpO0JEKHF1ZChaS2QoTUZkLmIpLDEpLDE4KTtPRmQ9TUZkLmE7QkQocXVkKFpLZChNRmQuYSksMCksMzQpO0JEKHF1ZChaS2QoTUZkLmEpLDEpLDE4KTtCRChxdWQoWktkKE1GZC5hKSwyKSwxOCk7QkQocXVkKFpLZChNRmQuYSksMyksMTgpO0JEKHF1ZChaS2QoTUZkLmEpLDQpLDE4KTtRRmQ9TUZkLm87QkQocXVkKFpLZChNRmQubyksMCksMzQpO0JEKHF1ZChaS2QoTUZkLm8pLDEpLDM0KTtTRmQ9QkQocXVkKFpLZChNRmQubyksMiksMTgpO0JEKHF1ZChaS2QoTUZkLm8pLDMpLDE4KTtCRChxdWQoWktkKE1GZC5vKSw0KSwxOCk7QkQocXVkKFpLZChNRmQubyksNSksMTgpO0JEKHF1ZChaS2QoTUZkLm8pLDYpLDE4KTtCRChxdWQoWktkKE1GZC5vKSw3KSwxOCk7QkQocXVkKFpLZChNRmQubyksOCksMTgpO0JEKHF1ZChaS2QoTUZkLm8pLDkpLDE4KTtCRChxdWQoWktkKE1GZC5vKSwxMCksMTgpO0JEKHF1ZChaS2QoTUZkLm8pLDExKSwxOCk7QkQocXVkKFpLZChNRmQubyksMTIpLDE4KTtCRChxdWQoWktkKE1GZC5vKSwxMyksMTgpO0JEKHF1ZChaS2QoTUZkLm8pLDE0KSwxOCk7QkQocXVkKFpLZChNRmQubyksMTUpLDE4KTtCRChxdWQoV0tkKE1GZC5vKSwwKSw1OSk7QkQocXVkKFdLZChNRmQubyksMSksNTkpO0JEKHF1ZChXS2QoTUZkLm8pLDIpLDU5KTtCRChxdWQoV0tkKE1GZC5vKSwzKSw1OSk7QkQocXVkKFdLZChNRmQubyksNCksNTkpO0JEKHF1ZChXS2QoTUZkLm8pLDUpLDU5KTtCRChxdWQoV0tkKE1GZC5vKSw2KSw1OSk7QkQocXVkKFdLZChNRmQubyksNyksNTkpO0JEKHF1ZChXS2QoTUZkLm8pLDgpLDU5KTtCRChxdWQoV0tkKE1GZC5vKSw5KSw1OSk7UkZkPU1GZC5wO0JEKHF1ZChaS2QoTUZkLnApLDApLDM0KTtCRChxdWQoWktkKE1GZC5wKSwxKSwzNCk7QkQocXVkKFpLZChNRmQucCksMiksMzQpO0JEKHF1ZChaS2QoTUZkLnApLDMpLDM0KTtCRChxdWQoWktkKE1GZC5wKSw0KSwxOCk7QkQocXVkKFpLZChNRmQucCksNSksMTgpO0JEKHF1ZChXS2QoTUZkLnApLDApLDU5KTtCRChxdWQoV0tkKE1GZC5wKSwxKSw1OSk7VEZkPU1GZC5xO0JEKHF1ZChaS2QoTUZkLnEpLDApLDM0KTtVRmQ9TUZkLnY7QkQocXVkKFpLZChNRmQudiksMCksMTgpO0JEKHF1ZChXS2QoTUZkLnYpLDApLDU5KTtCRChxdWQoV0tkKE1GZC52KSwxKSw1OSk7QkQocXVkKFdLZChNRmQudiksMiksNTkpO1ZGZD1NRmQudztCRChxdWQoWktkKE1GZC53KSwwKSwzNCk7QkQocXVkKFpLZChNRmQudyksMSksMzQpO0JEKHF1ZChaS2QoTUZkLncpLDIpLDM0KTtCRChxdWQoWktkKE1GZC53KSwzKSwxOCk7V0ZkPU1GZC5CO0JEKHF1ZChaS2QoTUZkLkIpLDApLDE4KTtCRChxdWQoV0tkKE1GZC5CKSwwKSw1OSk7QkQocXVkKFdLZChNRmQuQiksMSksNTkpO0JEKHF1ZChXS2QoTUZkLkIpLDIpLDU5KTtaRmQ9TUZkLlE7QkQocXVkKFpLZChNRmQuUSksMCksMTgpO0JEKHF1ZChXS2QoTUZkLlEpLDApLDU5KTskRmQ9TUZkLlI7QkQocXVkKFpLZChNRmQuUiksMCksMzQpO19GZD1NRmQuUztCRChxdWQoV0tkKE1GZC5TKSwwKSw1OSk7QkQocXVkKFdLZChNRmQuUyksMSksNTkpO0JEKHF1ZChXS2QoTUZkLlMpLDIpLDU5KTtCRChxdWQoV0tkKE1GZC5TKSwzKSw1OSk7QkQocXVkKFdLZChNRmQuUyksNCksNTkpO0JEKHF1ZChXS2QoTUZkLlMpLDUpLDU5KTtCRChxdWQoV0tkKE1GZC5TKSw2KSw1OSk7QkQocXVkKFdLZChNRmQuUyksNyksNTkpO0JEKHF1ZChXS2QoTUZkLlMpLDgpLDU5KTtCRChxdWQoV0tkKE1GZC5TKSw5KSw1OSk7QkQocXVkKFdLZChNRmQuUyksMTApLDU5KTtCRChxdWQoV0tkKE1GZC5TKSwxMSksNTkpO0JEKHF1ZChXS2QoTUZkLlMpLDEyKSw1OSk7QkQocXVkKFdLZChNRmQuUyksMTMpLDU5KTtCRChxdWQoV0tkKE1GZC5TKSwxNCksNTkpO2FHZD1NRmQuVDtCRChxdWQoWktkKE1GZC5UKSwwKSwxOCk7QkQocXVkKFpLZChNRmQuVCksMiksMTgpO2JHZD1CRChxdWQoWktkKE1GZC5UKSwzKSwxOCk7QkQocXVkKFpLZChNRmQuVCksNCksMTgpO0JEKHF1ZChXS2QoTUZkLlQpLDApLDU5KTtCRChxdWQoV0tkKE1GZC5UKSwxKSw1OSk7QkQocXVkKFpLZChNRmQuVCksMSksMTgpO2NHZD1NRmQuVTtCRChxdWQoWktkKE1GZC5VKSwwKSwzNCk7QkQocXVkKFpLZChNRmQuVSksMSksMzQpO0JEKHF1ZChaS2QoTUZkLlUpLDIpLDE4KTtCRChxdWQoWktkKE1GZC5VKSwzKSwxOCk7QkQocXVkKFpLZChNRmQuVSksNCksMTgpO0JEKHF1ZChaS2QoTUZkLlUpLDUpLDE4KTtCRChxdWQoV0tkKE1GZC5VKSwwKSw1OSk7ZEdkPU1GZC5WO0JEKHF1ZChaS2QoTUZkLlYpLDApLDE4KTtlR2Q9TUZkLlc7QkQocXVkKFpLZChNRmQuVyksMCksMzQpO0JEKHF1ZChaS2QoTUZkLlcpLDEpLDM0KTtCRChxdWQoWktkKE1GZC5XKSwyKSwzNCk7QkQocXVkKFpLZChNRmQuVyksMyksMTgpO0JEKHF1ZChaS2QoTUZkLlcpLDQpLDE4KTtCRChxdWQoWktkKE1GZC5XKSw1KSwxOCk7Z0dkPU1GZC5iYjtCRChxdWQoWktkKE1GZC5iYiksMCksMzQpO0JEKHF1ZChaS2QoTUZkLmJiKSwxKSwzNCk7QkQocXVkKFpLZChNRmQuYmIpLDIpLDM0KTtCRChxdWQoWktkKE1GZC5iYiksMyksMzQpO0JEKHF1ZChaS2QoTUZkLmJiKSw0KSwzNCk7QkQocXVkKFpLZChNRmQuYmIpLDUpLDM0KTtCRChxdWQoWktkKE1GZC5iYiksNiksMzQpO0JEKHF1ZChaS2QoTUZkLmJiKSw3KSwxOCk7QkQocXVkKFdLZChNRmQuYmIpLDApLDU5KTtCRChxdWQoV0tkKE1GZC5iYiksMSksNTkpO2hHZD1NRmQuZWI7QkQocXVkKFpLZChNRmQuZWIpLDApLDM0KTtCRChxdWQoWktkKE1GZC5lYiksMSksMzQpO0JEKHF1ZChaS2QoTUZkLmViKSwyKSwzNCk7QkQocXVkKFpLZChNRmQuZWIpLDMpLDM0KTtCRChxdWQoWktkKE1GZC5lYiksNCksMzQpO0JEKHF1ZChaS2QoTUZkLmViKSw1KSwzNCk7QkQocXVkKFpLZChNRmQuZWIpLDYpLDE4KTtCRChxdWQoWktkKE1GZC5lYiksNyksMTgpO2ZHZD1NRmQuYWI7QkQocXVkKFpLZChNRmQuYWIpLDApLDM0KTtCRChxdWQoWktkKE1GZC5hYiksMSksMzQpO1hGZD1NRmQuSDtCRChxdWQoWktkKE1GZC5IKSwwKSwxOCk7QkQocXVkKFpLZChNRmQuSCksMSksMTgpO0JEKHF1ZChaS2QoTUZkLkgpLDIpLDE4KTtCRChxdWQoWktkKE1GZC5IKSwzKSwxOCk7QkQocXVkKFpLZChNRmQuSCksNCksMTgpO0JEKHF1ZChaS2QoTUZkLkgpLDUpLDE4KTtCRChxdWQoV0tkKE1GZC5IKSwwKSw1OSk7aUdkPU1GZC5kYjtCRChxdWQoWktkKE1GZC5kYiksMCksMTgpO1lGZD1NRmQuTX1cbmZ1bmN0aW9uIGJhZShhKXt2YXIgYjtpZihhLk8pcmV0dXJuO2EuTz10cnVlO3BuZChhLCd0eXBlJyk7Y29kKGEsJ2Vjb3JlLnhtbC50eXBlJyk7ZG9kKGEsRXdlKTtiPUJEKG5VZCgoeUZkKCkseEZkKSxFd2UpLDE5NDUpO3d0ZChfS2QoYS5mYiksYS5iKTtYbmQoYS5iLFE5LCdBbnlUeXBlJyxmYWxzZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLmIpLDApLDM0KSxhLndiLkQsUXZlLG51bGwsMCwtMSxROSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmIpLDEpLDM0KSxhLndiLkQsJ2FueScsbnVsbCwwLC0xLFE5LHRydWUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuYiksMiksMzQpLGEud2IuRCwnYW55QXR0cmlidXRlJyxudWxsLDAsLTEsUTksZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSk7WG5kKGEuYmIsUzksSndlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuYmIpLDApLDM0KSxhLmdiLCdkYXRhJyxudWxsLDAsMSxTOSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuYmIpLDEpLDM0KSxhLmdiLGJ1ZSxudWxsLDEsMSxTOSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1huZChhLmZiLFQ5LEt3ZSxmYWxzZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLmZiKSwwKSwzNCksYi5nYiwncmF3VmFsdWUnLG51bGwsMCwxLFQ5LHRydWUsdHJ1ZSx0cnVlLGZhbHNlLHRydWUsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5mYiksMSksMzQpLGIuYSxCdGUsbnVsbCwwLDEsVDksdHJ1ZSx0cnVlLHRydWUsZmFsc2UsdHJ1ZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLmZiKSwyKSwxOCksYS53Yi5xLG51bGwsJ2luc3RhbmNlVHlwZScsMSwxLFQ5LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1huZChhLnFiLFU5LEx3ZSxmYWxzZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLnFiKSwwKSwzNCksYS53Yi5ELFF2ZSxudWxsLDAsLTEsbnVsbCxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLnFiKSwxKSwxOCksYS53Yi5hYixudWxsLCd4TUxOU1ByZWZpeE1hcCcsMCwtMSxudWxsLHRydWUsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLnFiKSwyKSwxOCksYS53Yi5hYixudWxsLCd4U0lTY2hlbWFMb2NhdGlvbicsMCwtMSxudWxsLHRydWUsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLnFiKSwzKSwzNCksYS5nYiwnY0RBVEEnLG51bGwsMCwtMixudWxsLHRydWUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEucWIpLDQpLDM0KSxhLmdiLCdjb21tZW50JyxudWxsLDAsLTIsbnVsbCx0cnVlLHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLnFiKSw1KSwxOCksYS5iYixudWxsLGp4ZSwwLC0yLG51bGwsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLnFiKSw2KSwzNCksYS5nYixJdGUsbnVsbCwwLC0yLG51bGwsdHJ1ZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSk7Wm5kKGEuYSxTSSwnQW55U2ltcGxlVHlwZScsdHJ1ZSk7Wm5kKGEuYyxaSSwnQW55VVJJJyx0cnVlKTtabmQoYS5kLEdDKFNELDEpLCdCYXNlNjRCaW5hcnknLHRydWUpO1puZChhLmUsc2JiLCdCb29sZWFuJyx0cnVlKTtabmQoYS5mLHdJLCdCb29sZWFuT2JqZWN0Jyx0cnVlKTtabmQoYS5nLFNELCdCeXRlJyx0cnVlKTtabmQoYS5pLHhJLCdCeXRlT2JqZWN0Jyx0cnVlKTtabmQoYS5qLFpJLCdEYXRlJyx0cnVlKTtabmQoYS5rLFpJLCdEYXRlVGltZScsdHJ1ZSk7Wm5kKGEubixiSiwnRGVjaW1hbCcsdHJ1ZSk7Wm5kKGEubyxVRCwnRG91YmxlJyx0cnVlKTtabmQoYS5wLEJJLCdEb3VibGVPYmplY3QnLHRydWUpO1puZChhLnEsWkksJ0R1cmF0aW9uJyx0cnVlKTtabmQoYS5zLHlLLCdFTlRJVElFUycsdHJ1ZSk7Wm5kKGEucix5SywnRU5USVRJRVNCYXNlJyx0cnVlKTtabmQoYS50LFpJLFJ3ZSx0cnVlKTtabmQoYS51LFZELCdGbG9hdCcsdHJ1ZSk7Wm5kKGEudixGSSwnRmxvYXRPYmplY3QnLHRydWUpO1puZChhLncsWkksJ0dEYXknLHRydWUpO1puZChhLkIsWkksJ0dNb250aCcsdHJ1ZSk7Wm5kKGEuQSxaSSwnR01vbnRoRGF5Jyx0cnVlKTtabmQoYS5DLFpJLCdHWWVhcicsdHJ1ZSk7Wm5kKGEuRCxaSSwnR1llYXJNb250aCcsdHJ1ZSk7Wm5kKGEuRixHQyhTRCwxKSwnSGV4QmluYXJ5Jyx0cnVlKTtabmQoYS5HLFpJLCdJRCcsdHJ1ZSk7Wm5kKGEuSCxaSSwnSURSRUYnLHRydWUpO1puZChhLkoseUssJ0lEUkVGUycsdHJ1ZSk7Wm5kKGEuSSx5SywnSURSRUZTQmFzZScsdHJ1ZSk7Wm5kKGEuSyxXRCwnSW50Jyx0cnVlKTtabmQoYS5NLGNKLCdJbnRlZ2VyJyx0cnVlKTtabmQoYS5MLEpJLCdJbnRPYmplY3QnLHRydWUpO1puZChhLlAsWkksJ0xhbmd1YWdlJyx0cnVlKTtabmQoYS5RLFhELCdMb25nJyx0cnVlKTtabmQoYS5SLE1JLCdMb25nT2JqZWN0Jyx0cnVlKTtabmQoYS5TLFpJLCdOYW1lJyx0cnVlKTtabmQoYS5ULFpJLFN3ZSx0cnVlKTtabmQoYS5VLGNKLCdOZWdhdGl2ZUludGVnZXInLHRydWUpO1puZChhLlYsWkksYXhlLHRydWUpO1puZChhLlgseUssJ05NVE9LRU5TJyx0cnVlKTtabmQoYS5XLHlLLCdOTVRPS0VOU0Jhc2UnLHRydWUpO1puZChhLlksY0osJ05vbk5lZ2F0aXZlSW50ZWdlcicsdHJ1ZSk7Wm5kKGEuWixjSiwnTm9uUG9zaXRpdmVJbnRlZ2VyJyx0cnVlKTtabmQoYS4kLFpJLCdOb3JtYWxpemVkU3RyaW5nJyx0cnVlKTtabmQoYS5fLFpJLCdOT1RBVElPTicsdHJ1ZSk7Wm5kKGEuYWIsWkksJ1Bvc2l0aXZlSW50ZWdlcicsdHJ1ZSk7Wm5kKGEuY2IsWkksJ1FOYW1lJyx0cnVlKTtabmQoYS5kYixyYmIsJ1Nob3J0Jyx0cnVlKTtabmQoYS5lYixVSSwnU2hvcnRPYmplY3QnLHRydWUpO1puZChhLmdiLFpJLFZpZSx0cnVlKTtabmQoYS5oYixaSSwnVGltZScsdHJ1ZSk7Wm5kKGEuaWIsWkksJ1Rva2VuJyx0cnVlKTtabmQoYS5qYixyYmIsJ1Vuc2lnbmVkQnl0ZScsdHJ1ZSk7Wm5kKGEua2IsVUksJ1Vuc2lnbmVkQnl0ZU9iamVjdCcsdHJ1ZSk7Wm5kKGEubGIsWEQsJ1Vuc2lnbmVkSW50Jyx0cnVlKTtabmQoYS5tYixNSSwnVW5zaWduZWRJbnRPYmplY3QnLHRydWUpO1puZChhLm5iLGNKLCdVbnNpZ25lZExvbmcnLHRydWUpO1puZChhLm9iLFdELCdVbnNpZ25lZFNob3J0Jyx0cnVlKTtabmQoYS5wYixKSSwnVW5zaWduZWRTaG9ydE9iamVjdCcsdHJ1ZSk7Um5kKGEsRXdlKTtfOWQoYSl9XG5mdW5jdGlvbiBPeWMoYSl7cjRjKGEsbmV3IEUzYyhRM2MoTDNjKFAzYyhNM2MoTzNjKE4zYyhuZXcgUjNjLHNuZSksJ0VMSyBMYXllcmVkJyksJ0xheWVyLWJhc2VkIGFsZ29yaXRobSBwcm92aWRlZCBieSB0aGUgRWNsaXBzZSBMYXlvdXQgS2VybmVsLiBBcnJhbmdlcyBhcyBtYW55IGVkZ2VzIGFzIHBvc3NpYmxlIGludG8gb25lIGRpcmVjdGlvbiBieSBwbGFjaW5nIG5vZGVzIGludG8gc3Vic2VxdWVudCBsYXllcnMuIFRoaXMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgZGlmZmVyZW50IHJvdXRpbmcgc3R5bGVzIChzdHJhaWdodCwgb3J0aG9nb25hbCwgc3BsaW5lcyk7IGlmIG9ydGhvZ29uYWwgcm91dGluZyBpcyBzZWxlY3RlZCwgYXJiaXRyYXJ5IHBvcnQgY29uc3RyYWludHMgYXJlIHJlc3BlY3RlZCwgdGh1cyBlbmFibGluZyB0aGUgbGF5b3V0IG9mIGJsb2NrIGRpYWdyYW1zIHN1Y2ggYXMgYWN0b3Itb3JpZW50ZWQgbW9kZWxzIG9yIGNpcmN1aXQgc2NoZW1hdGljcy4gRnVydGhlcm1vcmUsIGZ1bGwgbGF5b3V0IG9mIGNvbXBvdW5kIGdyYXBocyB3aXRoIGNyb3NzLWhpZXJhcmNoeSBlZGdlcyBpcyBzdXBwb3J0ZWQgd2hlbiB0aGUgcmVzcGVjdGl2ZSBvcHRpb24gaXMgYWN0aXZhdGVkIG9uIHRoZSB0b3AgbGV2ZWwuJyksbmV3IFJ5Yyksc25lKSxxcWIoKENzZCgpLEJzZCksT0MoR0MoTzMsMSksS2llLDIzNywwLFt5c2QsenNkLHhzZCxBc2QsdnNkLHVzZF0pKSkpKTtwNGMoYSxzbmUsTHBlLEtzZChpeWMpKTtwNGMoYSxzbmUsTXBlLEtzZChqeWMpKTtwNGMoYSxzbmUsWmxlLEtzZChreWMpKTtwNGMoYSxzbmUsTnBlLEtzZChseWMpKTtwNGMoYSxzbmUseG1lLEtzZChueWMpKTtwNGMoYSxzbmUsT3BlLEtzZChveWMpKTtwNGMoYSxzbmUsUHBlLEtzZChyeWMpKTtwNGMoYSxzbmUsUXBlLEtzZCh0eWMpKTtwNGMoYSxzbmUsUnBlLEtzZCh1eWMpKTtwNGMoYSxzbmUsU3BlLEtzZChzeWMpKTtwNGMoYSxzbmUsd21lLEtzZCh2eWMpKTtwNGMoYSxzbmUsVHBlLEtzZCh4eWMpKTtwNGMoYSxzbmUsVXBlLEtzZCh6eWMpKTtwNGMoYSxzbmUsVnBlLEtzZChxeWMpKTtwNGMoYSxzbmUsTG9lLEtzZChoeWMpKTtwNGMoYSxzbmUsTm9lLEtzZChteWMpKTtwNGMoYSxzbmUsTW9lLEtzZChweWMpKTtwNGMoYSxzbmUsT29lLEtzZCh3eWMpKTtwNGMoYSxzbmUsdm1lLG1lYigwKSk7cDRjKGEsc25lLFBvZSxLc2QoY3ljKSk7cDRjKGEsc25lLFFvZSxLc2QoZHljKSk7cDRjKGEsc25lLFJvZSxLc2QoZXljKSk7cDRjKGEsc25lLFlvZSxLc2QoS3ljKSk7cDRjKGEsc25lLFpvZSxLc2QoQ3ljKSk7cDRjKGEsc25lLCRvZSxLc2QoRHljKSk7cDRjKGEsc25lLF9vZSxLc2QoR3ljKSk7cDRjKGEsc25lLGFwZSxLc2QoRXljKSk7cDRjKGEsc25lLGJwZSxLc2QoRnljKSk7cDRjKGEsc25lLGNwZSxLc2QoTXljKSk7cDRjKGEsc25lLGRwZSxLc2QoTHljKSk7cDRjKGEsc25lLGVwZSxLc2QoSXljKSk7cDRjKGEsc25lLGZwZSxLc2QoSHljKSk7cDRjKGEsc25lLGdwZSxLc2QoSnljKSk7cDRjKGEsc25lLEVvZSxLc2QoQ3hjKSk7cDRjKGEsc25lLEZvZSxLc2QoRHhjKSk7cDRjKGEsc25lLElvZSxLc2QoWHdjKSk7cDRjKGEsc25lLEpvZSxLc2QoWXdjKSk7cDRjKGEsc25lLGFtZSxMeGMpO3A0YyhhLHNuZSx5cGUsVHdjKTtwNGMoYSxzbmUsV3BlLDApO3A0YyhhLHNuZSx5bWUsbWViKDEpKTtwNGMoYSxzbmUsX2xlLHRtZSk7cDRjKGEsc25lLFhwZSxLc2QoSnhjKSk7cDRjKGEsc25lLEJtZSxLc2QoVnhjKSk7cDRjKGEsc25lLFlwZSxLc2QoJHhjKSk7cDRjKGEsc25lLFpwZSxLc2QoS3djKSk7cDRjKGEsc25lLCRwZSxLc2QobXdjKSk7cDRjKGEsc25lLHRwZSxLc2QoYXhjKSk7cDRjKGEsc25lLHptZSwoQmNiKCksdHJ1ZSkpO3A0YyhhLHNuZSxfcGUsS3NkKGZ4YykpO3A0YyhhLHNuZSxhcWUsS3NkKGd4YykpO3A0YyhhLHNuZSxGbWUsS3NkKEZ4YykpO3A0YyhhLHNuZSxFbWUsS3NkKEl4YykpO3A0YyhhLHNuZSxicWUsS3NkKEd4YykpO3A0YyhhLHNuZSxjcWUsTndjKTtwNGMoYSxzbmUsR21lLEtzZCh4eGMpKTtwNGMoYSxzbmUsZHFlLEtzZCh3eGMpKTtwNGMoYSxzbmUsSG1lLEtzZChZeGMpKTtwNGMoYSxzbmUsZXFlLEtzZChYeGMpKTtwNGMoYSxzbmUsZnFlLEtzZChaeGMpKTtwNGMoYSxzbmUsZ3FlLE94Yyk7cDRjKGEsc25lLGhxZSxLc2QoUXhjKSk7cDRjKGEsc25lLGlxZSxLc2QoUnhjKSk7cDRjKGEsc25lLGpxZSxLc2QoU3hjKSk7cDRjKGEsc25lLGtxZSxLc2QoUHhjKSk7cDRjKGEsc25lLGVvZSxLc2QoQnljKSk7cDRjKGEsc25lLGhvZSxLc2Qoc3hjKSk7cDRjKGEsc25lLG5vZSxLc2QocnhjKSk7cDRjKGEsc25lLGRvZSxLc2QoQXljKSk7cDRjKGEsc25lLGlvZSxLc2QobXhjKSk7cDRjKGEsc25lLGdvZSxLc2QoSndjKSk7cDRjKGEsc25lLHFvZSxLc2QoSXdjKSk7cDRjKGEsc25lLHJvZSxLc2QoQXdjKSk7cDRjKGEsc25lLHdvZSxLc2QoQndjKSk7cDRjKGEsc25lLHhvZSxLc2QoRHdjKSk7cDRjKGEsc25lLHlvZSxLc2QoQ3djKSk7cDRjKGEsc25lLHRvZSxLc2QoSHdjKSk7cDRjKGEsc25lLF9uZSxLc2QodXhjKSk7cDRjKGEsc25lLGFvZSxLc2QodnhjKSk7cDRjKGEsc25lLCRuZSxLc2QoaXhjKSk7cDRjKGEsc25lLHpvZSxLc2QoRXhjKSk7cDRjKGEsc25lLENvZSxLc2QoenhjKSk7cDRjKGEsc25lLFpuZSxLc2QoJHdjKSk7cDRjKGEsc25lLERvZSxLc2QoQnhjKSk7cDRjKGEsc25lLEdvZSxLc2QoVndjKSk7cDRjKGEsc25lLEhvZSxLc2QoV3djKSk7cDRjKGEsc25lLGxxZSxLc2QoendjKSk7cDRjKGEsc25lLEJvZSxLc2QoeXhjKSk7cDRjKGEsc25lLFRvZSxLc2Qoc3djKSk7cDRjKGEsc25lLFVvZSxLc2QocndjKSk7cDRjKGEsc25lLFNvZSxLc2QocXdjKSk7cDRjKGEsc25lLFZvZSxLc2QoY3hjKSk7cDRjKGEsc25lLFdvZSxLc2QoYnhjKSk7cDRjKGEsc25lLFhvZSxLc2QoZHhjKSk7cDRjKGEsc25lLFRtZSxLc2QoSHhjKSk7cDRjKGEsc25lLG1xZSxLc2QoanhjKSk7cDRjKGEsc25lLCRsZSxLc2QoWndjKSk7cDRjKGEsc25lLG5xZSxLc2QoUXdjKSk7cDRjKGEsc25lLENtZSxLc2QoUHdjKSk7cDRjKGEsc25lLHNvZSxLc2QoRXdjKSk7cDRjKGEsc25lLG9xZSxLc2QoV3hjKSk7cDRjKGEsc25lLHBxZSxLc2QocHdjKSk7cDRjKGEsc25lLHFxZSxLc2QoZXhjKSk7cDRjKGEsc25lLHJxZSxLc2QoVHhjKSk7cDRjKGEsc25lLHNxZSxLc2QoTXhjKSk7cDRjKGEsc25lLHRxZSxLc2QoTnhjKSk7cDRjKGEsc25lLGxvZSxLc2Qob3hjKSk7cDRjKGEsc25lLG1vZSxLc2QocHhjKSk7cDRjKGEsc25lLHVxZSxLc2QoYXljKSk7cDRjKGEsc25lLGJvZSxLc2QobndjKSk7cDRjKGEsc25lLG9vZSxLc2QocXhjKSk7cDRjKGEsc25lLGhwZSxLc2QoUndjKSk7cDRjKGEsc25lLGlwZSxLc2QoT3djKSk7cDRjKGEsc25lLHZxZSxLc2QodHhjKSk7cDRjKGEsc25lLHBvZSxLc2Qoa3hjKSk7cDRjKGEsc25lLEFvZSxLc2QoQXhjKSk7cDRjKGEsc25lLHdxZSxLc2QoeXljKSk7cDRjKGEsc25lLFluZSxLc2QoTXdjKSk7cDRjKGEsc25lLGNvZSxLc2QoX3hjKSk7cDRjKGEsc25lLEtvZSxLc2QoVXdjKSk7cDRjKGEsc25lLGpvZSxLc2QobHhjKSk7cDRjKGEsc25lLHVvZSxLc2QoRndjKSk7cDRjKGEsc25lLHhxZSxLc2QoaHhjKSk7cDRjKGEsc25lLGtvZSxLc2QobnhjKSk7cDRjKGEsc25lLHZvZSxLc2QoR3djKSk7cDRjKGEsc25lLGpwZSxLc2QoeXdjKSk7cDRjKGEsc25lLG1wZSxLc2Qod3djKSk7cDRjKGEsc25lLG5wZSxLc2QodXdjKSk7cDRjKGEsc25lLG9wZSxLc2QodndjKSk7cDRjKGEsc25lLGtwZSxLc2QoeHdjKSk7cDRjKGEsc25lLGxwZSxLc2QodHdjKSk7cDRjKGEsc25lLGZvZSxLc2QoX3djKSl9XG5mdW5jdGlvbiBrZWUoYSxiKXt2YXIgYyxkO2lmKCFjZWUpe2NlZT1uZXcgTHFiO2RlZT1uZXcgTHFiO2Q9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyAkZmUoNCkpO1JlZShkLCdcXHRcXG5cXHJcXHIgICcpO1NoYihjZWUscHhlLGQpO1NoYihkZWUscHhlLF9mZShkKSk7ZD0obnVsbCwrK3ZmZSxuZXcgJGZlKDQpKTtSZWUoZCxzeGUpO1NoYihjZWUsbnhlLGQpO1NoYihkZWUsbnhlLF9mZShkKSk7ZD0obnVsbCwrK3ZmZSxuZXcgJGZlKDQpKTtSZWUoZCxzeGUpO1NoYihjZWUsbnhlLGQpO1NoYihkZWUsbnhlLF9mZShkKSk7ZD0obnVsbCwrK3ZmZSxuZXcgJGZlKDQpKTtSZWUoZCx0eGUpO1hmZShkLEJEKFBoYihjZWUsbnhlKSwxMTcpKTtTaGIoY2VlLG94ZSxkKTtTaGIoZGVlLG94ZSxfZmUoZCkpO2Q9KG51bGwsKyt2ZmUsbmV3ICRmZSg0KSk7UmVlKGQsJy0uMDpBWl9fYXpcXHhCN1xceEI3XFx4QzBcXHhENlxceEQ4XFx4RjZcXHhGOFxcdTAxMzFcXHUwMTM0XFx1MDEzRVxcdTAxNDFcXHUwMTQ4XFx1MDE0QVxcdTAxN0VcXHUwMTgwXFx1MDFDM1xcdTAxQ0RcXHUwMUYwXFx1MDFGNFxcdTAxRjVcXHUwMUZBXFx1MDIxN1xcdTAyNTBcXHUwMkE4XFx1MDJCQlxcdTAyQzFcXHUwMkQwXFx1MDJEMVxcdTAzMDBcXHUwMzQ1XFx1MDM2MFxcdTAzNjFcXHUwMzg2XFx1MDM4QVxcdTAzOENcXHUwMzhDXFx1MDM4RVxcdTAzQTFcXHUwM0EzXFx1MDNDRVxcdTAzRDBcXHUwM0Q2XFx1MDNEQVxcdTAzREFcXHUwM0RDXFx1MDNEQ1xcdTAzREVcXHUwM0RFXFx1MDNFMFxcdTAzRTBcXHUwM0UyXFx1MDNGM1xcdTA0MDFcXHUwNDBDXFx1MDQwRVxcdTA0NEZcXHUwNDUxXFx1MDQ1Q1xcdTA0NUVcXHUwNDgxXFx1MDQ4M1xcdTA0ODZcXHUwNDkwXFx1MDRDNFxcdTA0QzdcXHUwNEM4XFx1MDRDQlxcdTA0Q0NcXHUwNEQwXFx1MDRFQlxcdTA0RUVcXHUwNEY1XFx1MDRGOFxcdTA0RjlcXHUwNTMxXFx1MDU1NlxcdTA1NTlcXHUwNTU5XFx1MDU2MVxcdTA1ODZcXHUwNTkxXFx1MDVBMVxcdTA1QTNcXHUwNUI5XFx1MDVCQlxcdTA1QkRcXHUwNUJGXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzRcXHUwNUQwXFx1MDVFQVxcdTA1RjBcXHUwNUYyXFx1MDYyMVxcdTA2M0FcXHUwNjQwXFx1MDY1MlxcdTA2NjBcXHUwNjY5XFx1MDY3MFxcdTA2QjdcXHUwNkJBXFx1MDZCRVxcdTA2QzBcXHUwNkNFXFx1MDZEMFxcdTA2RDNcXHUwNkQ1XFx1MDZFOFxcdTA2RUFcXHUwNkVEXFx1MDZGMFxcdTA2RjlcXHUwOTAxXFx1MDkwM1xcdTA5MDVcXHUwOTM5XFx1MDkzQ1xcdTA5NERcXHUwOTUxXFx1MDk1NFxcdTA5NThcXHUwOTYzXFx1MDk2NlxcdTA5NkZcXHUwOTgxXFx1MDk4M1xcdTA5ODVcXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzXFx1MDlBOFxcdTA5QUFcXHUwOUIwXFx1MDlCMlxcdTA5QjJcXHUwOUI2XFx1MDlCOVxcdTA5QkNcXHUwOUJDXFx1MDlCRVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0JcXHUwOUNEXFx1MDlEN1xcdTA5RDdcXHUwOURDXFx1MDlERFxcdTA5REZcXHUwOUUzXFx1MDlFNlxcdTA5RjFcXHUwQTAyXFx1MEEwMlxcdTBBMDVcXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzXFx1MEEyOFxcdTBBMkFcXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEEzQ1xcdTBBM0NcXHUwQTNFXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0QlxcdTBBNERcXHUwQTU5XFx1MEE1Q1xcdTBBNUVcXHUwQTVFXFx1MEE2NlxcdTBBNzRcXHUwQTgxXFx1MEE4M1xcdTBBODVcXHUwQThCXFx1MEE4RFxcdTBBOERcXHUwQThGXFx1MEE5MVxcdTBBOTNcXHUwQUE4XFx1MEFBQVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjVcXHUwQUI5XFx1MEFCQ1xcdTBBQzVcXHUwQUM3XFx1MEFDOVxcdTBBQ0JcXHUwQUNEXFx1MEFFMFxcdTBBRTBcXHUwQUU2XFx1MEFFRlxcdTBCMDFcXHUwQjAzXFx1MEIwNVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTNcXHUwQjI4XFx1MEIyQVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzZcXHUwQjM5XFx1MEIzQ1xcdTBCNDNcXHUwQjQ3XFx1MEI0OFxcdTBCNEJcXHUwQjREXFx1MEI1NlxcdTBCNTdcXHUwQjVDXFx1MEI1RFxcdTBCNUZcXHUwQjYxXFx1MEI2NlxcdTBCNkZcXHUwQjgyXFx1MEI4M1xcdTBCODVcXHUwQjhBXFx1MEI4RVxcdTBCOTBcXHUwQjkyXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOFxcdTBCQUFcXHUwQkFFXFx1MEJCNVxcdTBCQjdcXHUwQkI5XFx1MEJCRVxcdTBCQzJcXHUwQkM2XFx1MEJDOFxcdTBCQ0FcXHUwQkNEXFx1MEJEN1xcdTBCRDdcXHUwQkU3XFx1MEJFRlxcdTBDMDFcXHUwQzAzXFx1MEMwNVxcdTBDMENcXHUwQzBFXFx1MEMxMFxcdTBDMTJcXHUwQzI4XFx1MEMyQVxcdTBDMzNcXHUwQzM1XFx1MEMzOVxcdTBDM0VcXHUwQzQ0XFx1MEM0NlxcdTBDNDhcXHUwQzRBXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MFxcdTBDNjFcXHUwQzY2XFx1MEM2RlxcdTBDODJcXHUwQzgzXFx1MEM4NVxcdTBDOENcXHUwQzhFXFx1MEM5MFxcdTBDOTJcXHUwQ0E4XFx1MENBQVxcdTBDQjNcXHUwQ0I1XFx1MENCOVxcdTBDQkVcXHUwQ0M0XFx1MENDNlxcdTBDQzhcXHUwQ0NBXFx1MENDRFxcdTBDRDVcXHUwQ0Q2XFx1MENERVxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRTZcXHUwQ0VGXFx1MEQwMlxcdTBEMDNcXHUwRDA1XFx1MEQwQ1xcdTBEMEVcXHUwRDEwXFx1MEQxMlxcdTBEMjhcXHUwRDJBXFx1MEQzOVxcdTBEM0VcXHUwRDQzXFx1MEQ0NlxcdTBENDhcXHUwRDRBXFx1MEQ0RFxcdTBENTdcXHUwRDU3XFx1MEQ2MFxcdTBENjFcXHUwRDY2XFx1MEQ2RlxcdTBFMDFcXHUwRTJFXFx1MEUzMFxcdTBFM0FcXHUwRTQwXFx1MEU0RVxcdTBFNTBcXHUwRTU5XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOEFcXHUwRThEXFx1MEU4RFxcdTBFOTRcXHUwRTk3XFx1MEU5OVxcdTBFOUZcXHUwRUExXFx1MEVBM1xcdTBFQTVcXHUwRUE1XFx1MEVBN1xcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQURcXHUwRUFFXFx1MEVCMFxcdTBFQjlcXHUwRUJCXFx1MEVCRFxcdTBFQzBcXHUwRUM0XFx1MEVDNlxcdTBFQzZcXHUwRUM4XFx1MEVDRFxcdTBFRDBcXHUwRUQ5XFx1MEYxOFxcdTBGMTlcXHUwRjIwXFx1MEYyOVxcdTBGMzVcXHUwRjM1XFx1MEYzN1xcdTBGMzdcXHUwRjM5XFx1MEYzOVxcdTBGM0VcXHUwRjQ3XFx1MEY0OVxcdTBGNjlcXHUwRjcxXFx1MEY4NFxcdTBGODZcXHUwRjhCXFx1MEY5MFxcdTBGOTVcXHUwRjk3XFx1MEY5N1xcdTBGOTlcXHUwRkFEXFx1MEZCMVxcdTBGQjdcXHUwRkI5XFx1MEZCOVxcdTEwQTBcXHUxMEM1XFx1MTBEMFxcdTEwRjZcXHUxMTAwXFx1MTEwMFxcdTExMDJcXHUxMTAzXFx1MTEwNVxcdTExMDdcXHUxMTA5XFx1MTEwOVxcdTExMEJcXHUxMTBDXFx1MTEwRVxcdTExMTJcXHUxMTNDXFx1MTEzQ1xcdTExM0VcXHUxMTNFXFx1MTE0MFxcdTExNDBcXHUxMTRDXFx1MTE0Q1xcdTExNEVcXHUxMTRFXFx1MTE1MFxcdTExNTBcXHUxMTU0XFx1MTE1NVxcdTExNTlcXHUxMTU5XFx1MTE1RlxcdTExNjFcXHUxMTYzXFx1MTE2M1xcdTExNjVcXHUxMTY1XFx1MTE2N1xcdTExNjdcXHUxMTY5XFx1MTE2OVxcdTExNkRcXHUxMTZFXFx1MTE3MlxcdTExNzNcXHUxMTc1XFx1MTE3NVxcdTExOUVcXHUxMTlFXFx1MTFBOFxcdTExQThcXHUxMUFCXFx1MTFBQlxcdTExQUVcXHUxMUFGXFx1MTFCN1xcdTExQjhcXHUxMUJBXFx1MTFCQVxcdTExQkNcXHUxMUMyXFx1MTFFQlxcdTExRUJcXHUxMUYwXFx1MTFGMFxcdTExRjlcXHUxMUY5XFx1MUUwMFxcdTFFOUJcXHUxRUEwXFx1MUVGOVxcdTFGMDBcXHUxRjE1XFx1MUYxOFxcdTFGMURcXHUxRjIwXFx1MUY0NVxcdTFGNDhcXHUxRjREXFx1MUY1MFxcdTFGNTdcXHUxRjU5XFx1MUY1OVxcdTFGNUJcXHUxRjVCXFx1MUY1RFxcdTFGNURcXHUxRjVGXFx1MUY3RFxcdTFGODBcXHUxRkI0XFx1MUZCNlxcdTFGQkNcXHUxRkJFXFx1MUZCRVxcdTFGQzJcXHUxRkM0XFx1MUZDNlxcdTFGQ0NcXHUxRkQwXFx1MUZEM1xcdTFGRDZcXHUxRkRCXFx1MUZFMFxcdTFGRUNcXHUxRkYyXFx1MUZGNFxcdTFGRjZcXHUxRkZDXFx1MjBEMFxcdTIwRENcXHUyMEUxXFx1MjBFMVxcdTIxMjZcXHUyMTI2XFx1MjEyQVxcdTIxMkJcXHUyMTJFXFx1MjEyRVxcdTIxODBcXHUyMTgyXFx1MzAwNVxcdTMwMDVcXHUzMDA3XFx1MzAwN1xcdTMwMjFcXHUzMDJGXFx1MzAzMVxcdTMwMzVcXHUzMDQxXFx1MzA5NFxcdTMwOTlcXHUzMDlBXFx1MzA5RFxcdTMwOUVcXHUzMEExXFx1MzBGQVxcdTMwRkNcXHUzMEZFXFx1MzEwNVxcdTMxMkNcXHU0RTAwXFx1OUZBNVxcdUFDMDBcXHVEN0EzJyk7U2hiKGNlZSxxeGUsZCk7U2hiKGRlZSxxeGUsX2ZlKGQpKTtkPShudWxsLCsrdmZlLG5ldyAkZmUoNCkpO1JlZShkLHR4ZSk7VWZlKGQsOTUsOTUpO1VmZShkLDU4LDU4KTtTaGIoY2VlLHJ4ZSxkKTtTaGIoZGVlLHJ4ZSxfZmUoZCkpfWM9Yj9CRChQaGIoY2VlLGEpLDEzNik6QkQoUGhiKGRlZSxhKSwxMzYpO3JldHVybiBjfVxuZnVuY3Rpb24gXzlkKGEpe0JuZChhLmEsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnYW55U2ltcGxlVHlwZSddKSk7Qm5kKGEuYixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdhbnlUeXBlJyxTdmUsUXZlXSkpO0JuZChCRChxdWQoWktkKGEuYiksMCksMzQpLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtTdmUseHdlLGZ1ZSwnOm1peGVkJ10pKTtCbmQoQkQocXVkKFpLZChhLmIpLDEpLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHh3ZSxEd2UsRndlLGZ1ZSwnOjEnLE93ZSwnbGF4J10pKTtCbmQoQkQocXVkKFpLZChhLmIpLDIpLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHZ3ZSxEd2UsRndlLGZ1ZSwnOjInLE93ZSwnbGF4J10pKTtCbmQoYS5jLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ2FueVVSSScsQ3dlLHl3ZV0pKTtCbmQoYS5kLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ2Jhc2U2NEJpbmFyeScsQ3dlLHl3ZV0pKTtCbmQoYS5lLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsS2hlLEN3ZSx5d2VdKSk7Qm5kKGEuZixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdib29sZWFuOk9iamVjdCcsY3dlLEtoZV0pKTtCbmQoYS5nLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsRXZlXSkpO0JuZChhLmksUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnYnl0ZTpPYmplY3QnLGN3ZSxFdmVdKSk7Qm5kKGEuaixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdkYXRlJyxDd2UseXdlXSkpO0JuZChhLmssUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnZGF0ZVRpbWUnLEN3ZSx5d2VdKSk7Qm5kKGEubixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdkZWNpbWFsJyxDd2UseXdlXSkpO0JuZChhLm8sUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxHdmUsQ3dlLHl3ZV0pKTtCbmQoYS5wLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ2RvdWJsZTpPYmplY3QnLGN3ZSxHdmVdKSk7Qm5kKGEucSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdkdXJhdGlvbicsQ3dlLHl3ZV0pKTtCbmQoYS5zLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ0VOVElUSUVTJyxjd2UsUHdlLFF3ZSwnMSddKSk7Qm5kKGEucixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLFB3ZSx6d2UsUndlXSkpO0JuZChhLnQsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxSd2UsY3dlLFN3ZV0pKTtCbmQoYS51LFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsSHZlLEN3ZSx5d2VdKSk7Qm5kKGEudixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdmbG9hdDpPYmplY3QnLGN3ZSxIdmVdKSk7Qm5kKGEudyxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdnRGF5JyxDd2UseXdlXSkpO0JuZChhLkIsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnZ01vbnRoJyxDd2UseXdlXSkpO0JuZChhLkEsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnZ01vbnRoRGF5JyxDd2UseXdlXSkpO0JuZChhLkMsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnZ1llYXInLEN3ZSx5d2VdKSk7Qm5kKGEuRCxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdnWWVhck1vbnRoJyxDd2UseXdlXSkpO0JuZChhLkYsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnaGV4QmluYXJ5JyxDd2UseXdlXSkpO0JuZChhLkcsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnSUQnLGN3ZSxTd2VdKSk7Qm5kKGEuSCxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdJRFJFRicsY3dlLFN3ZV0pKTtCbmQoYS5KLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ0lEUkVGUycsY3dlLFR3ZSxRd2UsJzEnXSkpO0JuZChhLkksUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxUd2UsendlLCdJRFJFRiddKSk7Qm5kKGEuSyxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLEl2ZV0pKTtCbmQoYS5NLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsVXdlXSkpO0JuZChhLkwsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnaW50Ok9iamVjdCcsY3dlLEl2ZV0pKTtCbmQoYS5QLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ2xhbmd1YWdlJyxjd2UsVndlLFd3ZSxYd2VdKSk7Qm5kKGEuUSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLEp2ZV0pKTtCbmQoYS5SLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ2xvbmc6T2JqZWN0Jyxjd2UsSnZlXSkpO0JuZChhLlMsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnTmFtZScsY3dlLFZ3ZSxXd2UsWXdlXSkpO0JuZChhLlQsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxTd2UsY3dlLCdOYW1lJyxXd2UsWndlXSkpO0JuZChhLlUsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnbmVnYXRpdmVJbnRlZ2VyJyxjd2UsJHdlLF93ZSwnLTEnXSkpO0JuZChhLlYsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxheGUsY3dlLFZ3ZSxXd2UsJ1xcXFxjKyddKSk7Qm5kKGEuWCxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdOTVRPS0VOUycsY3dlLGJ4ZSxRd2UsJzEnXSkpO0JuZChhLlcsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxieGUsendlLGF4ZV0pKTtCbmQoYS5ZLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsY3hlLGN3ZSxVd2UsZHhlLCcwJ10pKTtCbmQoYS5aLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJHdlLGN3ZSxVd2UsX3dlLCcwJ10pKTtCbmQoYS4kLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsZXhlLGN3ZSxNaGUsQ3dlLCdyZXBsYWNlJ10pKTtCbmQoYS5fLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ05PVEFUSU9OJyxDd2UseXdlXSkpO0JuZChhLmFiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3Bvc2l0aXZlSW50ZWdlcicsY3dlLGN4ZSxkeGUsJzEnXSkpO0JuZChhLmJiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3Byb2Nlc3NpbmdJbnN0cnVjdGlvbl8uX3R5cGUnLFN2ZSwnZW1wdHknXSkpO0JuZChCRChxdWQoWktkKGEuYmIpLDApLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHV3ZSxmdWUsJ2RhdGEnXSkpO0JuZChCRChxdWQoWktkKGEuYmIpLDEpLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHV3ZSxmdWUsYnVlXSkpO0JuZChhLmNiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ1FOYW1lJyxDd2UseXdlXSkpO0JuZChhLmRiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsS3ZlXSkpO0JuZChhLmViLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3Nob3J0Ok9iamVjdCcsY3dlLEt2ZV0pKTtCbmQoYS5mYixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCdzaW1wbGVBbnlUeXBlJyxTdmUsdHdlXSkpO0JuZChCRChxdWQoWktkKGEuZmIpLDApLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCc6MycsU3ZlLHR3ZV0pKTtCbmQoQkQocXVkKFpLZChhLmZiKSwxKSwzNCksUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnOjQnLFN2ZSx0d2VdKSk7Qm5kKEJEKHF1ZChaS2QoYS5mYiksMiksMTgpLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJzo1JyxTdmUsdHdlXSkpO0JuZChhLmdiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsTWhlLEN3ZSwncHJlc2VydmUnXSkpO0JuZChhLmhiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3RpbWUnLEN3ZSx5d2VdKSk7Qm5kKGEuaWIsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxWd2UsY3dlLGV4ZSxDd2UseXdlXSkpO0JuZChhLmpiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsZnhlLF93ZSwnMjU1JyxkeGUsJzAnXSkpO0JuZChhLmtiLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3Vuc2lnbmVkQnl0ZTpPYmplY3QnLGN3ZSxmeGVdKSk7Qm5kKGEubGIsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSxneGUsX3dlLCc0Mjk0OTY3Mjk1JyxkeGUsJzAnXSkpO0JuZChhLm1iLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsJ3Vuc2lnbmVkSW50Ok9iamVjdCcsY3dlLGd4ZV0pKTtCbmQoYS5uYixSdmUsT0MoR0MoWkksMSksbmllLDIsNixbZnVlLCd1bnNpZ25lZExvbmcnLGN3ZSxjeGUsX3dlLGh4ZSxkeGUsJzAnXSkpO0JuZChhLm9iLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtmdWUsaXhlLF93ZSwnNjU1MzUnLGR4ZSwnMCddKSk7Qm5kKGEucGIsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwndW5zaWduZWRTaG9ydDpPYmplY3QnLGN3ZSxpeGVdKSk7Qm5kKGEucWIsUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW2Z1ZSwnJyxTdmUsUXZlXSkpO0JuZChCRChxdWQoWktkKGEucWIpLDApLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHh3ZSxmdWUsJzptaXhlZCddKSk7Qm5kKEJEKHF1ZChaS2QoYS5xYiksMSksMTgpLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtTdmUsdXdlLGZ1ZSwneG1sbnM6cHJlZml4J10pKTtCbmQoQkQocXVkKFpLZChhLnFiKSwyKSwxOCksUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW1N2ZSx1d2UsZnVlLCd4c2k6c2NoZW1hTG9jYXRpb24nXSkpO0JuZChCRChxdWQoWktkKGEucWIpLDMpLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHd3ZSxmdWUsJ2NEQVRBJyxBd2UsQndlXSkpO0JuZChCRChxdWQoWktkKGEucWIpLDQpLDM0KSxSdmUsT0MoR0MoWkksMSksbmllLDIsNixbU3ZlLHd3ZSxmdWUsJ2NvbW1lbnQnLEF3ZSxCd2VdKSk7Qm5kKEJEKHF1ZChaS2QoYS5xYiksNSksMTgpLFJ2ZSxPQyhHQyhaSSwxKSxuaWUsMiw2LFtTdmUsd3dlLGZ1ZSxqeGUsQXdlLEJ3ZV0pKTtCbmQoQkQocXVkKFpLZChhLnFiKSw2KSwzNCksUnZlLE9DKEdDKFpJLDEpLG5pZSwyLDYsW1N2ZSx3d2UsZnVlLEl0ZSxBd2UsQndlXSkpfVxuZnVuY3Rpb24gdHZkKGEpe3JldHVybiBkZmIoJ19VSV9FTUZEaWFnbm9zdGljX21hcmtlcicsYSk/J0VNRiBQcm9ibGVtJzpkZmIoJ19VSV9DaXJjdWxhckNvbnRhaW5tZW50X2RpYWdub3N0aWMnLGEpPydBbiBvYmplY3QgbWF5IG5vdCBjaXJjdWxhcmx5IGNvbnRhaW4gaXRzZWxmJzpkZmIoc3VlLGEpPydXcm9uZyBjaGFyYWN0ZXIuJzpkZmIodHVlLGEpPydJbnZhbGlkIHJlZmVyZW5jZSBudW1iZXIuJzpkZmIodXVlLGEpPydBIGNoYXJhY3RlciBpcyByZXF1aXJlZCBhZnRlciBcXFxcLic6ZGZiKHZ1ZSxhKT9cIic/JyBpcyBub3QgZXhwZWN0ZWQuICAnKD86JyBvciAnKD89JyBvciAnKD8hJyBvciAnKD88JyBvciAnKD8jJyBvciAnKD8+Jz9cIjpkZmIod3VlLGEpP1wiJyg/PCcgb3IgJyg/PCEnIGlzIGV4cGVjdGVkLlwiOmRmYih4dWUsYSk/J0EgY29tbWVudCBpcyBub3QgdGVybWluYXRlZC4nOmRmYih5dWUsYSk/XCInKScgaXMgZXhwZWN0ZWQuXCI6ZGZiKHp1ZSxhKT8nVW5leHBlY3RlZCBlbmQgb2YgdGhlIHBhdHRlcm4gaW4gYSBtb2RpZmllciBncm91cC4nOmRmYihBdWUsYSk/XCInOicgaXMgZXhwZWN0ZWQuXCI6ZGZiKEJ1ZSxhKT8nVW5leHBlY3RlZCBlbmQgb2YgdGhlIHBhdHRlcm4gaW4gYSBjb25kaXRpb25hbCBncm91cC4nOmRmYihDdWUsYSk/J0EgYmFjayByZWZlcmVuY2Ugb3IgYW4gYW5jaG9yIG9yIGEgbG9va2FoZWFkIG9yIGEgbG9vay1iZWhpbmQgaXMgZXhwZWN0ZWQgaW4gYSBjb25kaXRpb25hbCBwYXR0ZXJuLic6ZGZiKER1ZSxhKT8nVGhlcmUgYXJlIG1vcmUgdGhhbiB0aHJlZSBjaG9pY2VzIGluIGEgY29uZGl0aW9uYWwgZ3JvdXAuJzpkZmIoRXVlLGEpPydBIGNoYXJhY3RlciBpbiBVKzAwNDAtVSswMDVmIG11c3QgZm9sbG93IFxcXFxjLic6ZGZiKEZ1ZSxhKT9cIkEgJ3snIGlzIHJlcXVpcmVkIGJlZm9yZSBhIGNoYXJhY3RlciBjYXRlZ29yeS5cIjpkZmIoR3VlLGEpP1wiQSBwcm9wZXJ0eSBuYW1lIGlzIG5vdCBjbG9zZWQgYnkgJ30nLlwiOmRmYihIdWUsYSk/J1VuZXhwZWN0ZWQgbWV0YSBjaGFyYWN0ZXIuJzpkZmIoSXVlLGEpPydVbmtub3duIHByb3BlcnR5Lic6ZGZiKEp1ZSxhKT9cIkEgUE9TSVggY2hhcmFjdGVyIGNsYXNzIG11c3QgYmUgY2xvc2VkIGJ5ICc6XScuXCI6ZGZiKEt1ZSxhKT8nVW5leHBlY3RlZCBlbmQgb2YgdGhlIHBhdHRlcm4gaW4gYSBjaGFyYWN0ZXIgY2xhc3MuJzpkZmIoTHVlLGEpPydVbmtub3duIG5hbWUgZm9yIGEgUE9TSVggY2hhcmFjdGVyIGNsYXNzLic6ZGZiKCdwYXJzZXIuY2MuNCcsYSk/XCInLScgaXMgaW52YWxpZCBoZXJlLlwiOmRmYihNdWUsYSk/XCInXScgaXMgZXhwZWN0ZWQuXCI6ZGZiKE51ZSxhKT9cIidbJyBpcyBpbnZhbGlkIGluIGEgY2hhcmFjdGVyIGNsYXNzLiAgV3JpdGUgJ1xcXFxbJy5cIjpkZmIoT3VlLGEpP1wiJ10nIGlzIGludmFsaWQgaW4gYSBjaGFyYWN0ZXIgY2xhc3MuICBXcml0ZSAnXFxcXF0nLlwiOmRmYihQdWUsYSk/XCInLScgaXMgYW4gaW52YWxpZCBjaGFyYWN0ZXIgcmFuZ2UuIFdyaXRlICdcXFxcLScuXCI6ZGZiKFF1ZSxhKT9cIidbJyBpcyBleHBlY3RlZC5cIjpkZmIoUnVlLGEpP1wiJyknIG9yICctWycgb3IgJytbJyBvciAnJlsnIGlzIGV4cGVjdGVkLlwiOmRmYihTdWUsYSk/J1RoZSByYW5nZSBlbmQgY29kZSBwb2ludCBpcyBsZXNzIHRoYW4gdGhlIHN0YXJ0IGNvZGUgcG9pbnQuJzpkZmIoVHVlLGEpPydJbnZhbGlkIFVuaWNvZGUgaGV4IG5vdGF0aW9uLic6ZGZiKFV1ZSxhKT8nT3ZlcmZsb3cgaW4gYSBoZXggbm90YXRpb24uJzpkZmIoVnVlLGEpP1wiJ1xcXFx4eycgbXVzdCBiZSBjbG9zZWQgYnkgJ30nLlwiOmRmYihXdWUsYSk/J0ludmFsaWQgVW5pY29kZSBjb2RlIHBvaW50Lic6ZGZiKFh1ZSxhKT8nQW4gYW5jaG9yIG11c3Qgbm90IGJlIGhlcmUuJzpkZmIoWXVlLGEpPydUaGlzIGV4cHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgY3VycmVudCBvcHRpb24gc2V0dGluZy4nOmRmYihadWUsYSk/J0ludmFsaWQgcXVhbnRpZmllci4gQSBkaWdpdCBpcyBleHBlY3RlZC4nOmRmYigkdWUsYSk/XCJJbnZhbGlkIHF1YW50aWZpZXIuIEludmFsaWQgcXVhbnRpdHkgb3IgYSAnfScgaXMgbWlzc2luZy5cIjpkZmIoX3VlLGEpP1wiSW52YWxpZCBxdWFudGlmaWVyLiBBIGRpZ2l0IG9yICd9JyBpcyBleHBlY3RlZC5cIjpkZmIoYXZlLGEpPydJbnZhbGlkIHF1YW50aWZpZXIuIEEgbWluIHF1YW50aXR5IG11c3QgYmUgPD0gYSBtYXggcXVhbnRpdHkuJzpkZmIoYnZlLGEpPydJbnZhbGlkIHF1YW50aWZpZXIuIEEgcXVhbnRpdHkgdmFsdWUgb3ZlcmZsb3cuJzpkZmIoJ19VSV9QYWNrYWdlUmVnaXN0cnlfZXh0ZW5zaW9ucG9pbnQnLGEpPydFY29yZSBQYWNrYWdlIFJlZ2lzdHJ5IGZvciBHZW5lcmF0ZWQgUGFja2FnZXMnOmRmYignX1VJX0R5bmFtaWNQYWNrYWdlUmVnaXN0cnlfZXh0ZW5zaW9ucG9pbnQnLGEpPydFY29yZSBQYWNrYWdlIFJlZ2lzdHJ5IGZvciBEeW5hbWljIFBhY2thZ2VzJzpkZmIoJ19VSV9GYWN0b3J5UmVnaXN0cnlfZXh0ZW5zaW9ucG9pbnQnLGEpPydFY29yZSBGYWN0b3J5IE92ZXJyaWRlIFJlZ2lzdHJ5JzpkZmIoJ19VSV9VUklFeHRlbnNpb25QYXJzZXJSZWdpc3RyeV9leHRlbnNpb25wb2ludCcsYSk/J1VSSSBFeHRlbnNpb24gUGFyc2VyIFJlZ2lzdHJ5JzpkZmIoJ19VSV9VUklQcm90b2NvbFBhcnNlclJlZ2lzdHJ5X2V4dGVuc2lvbnBvaW50JyxhKT8nVVJJIFByb3RvY29sIFBhcnNlciBSZWdpc3RyeSc6ZGZiKCdfVUlfVVJJQ29udGVudFBhcnNlclJlZ2lzdHJ5X2V4dGVuc2lvbnBvaW50JyxhKT8nVVJJIENvbnRlbnQgUGFyc2VyIFJlZ2lzdHJ5JzpkZmIoJ19VSV9Db250ZW50SGFuZGxlclJlZ2lzdHJ5X2V4dGVuc2lvbnBvaW50JyxhKT8nQ29udGVudCBIYW5kbGVyIFJlZ2lzdHJ5JzpkZmIoJ19VSV9VUklNYXBwaW5nUmVnaXN0cnlfZXh0ZW5zaW9ucG9pbnQnLGEpPydVUkkgQ29udmVydGVyIE1hcHBpbmcgUmVnaXN0cnknOmRmYignX1VJX1BhY2thZ2VSZWdpc3RyeUltcGxlbWVudGF0aW9uX2V4dGVuc2lvbnBvaW50JyxhKT8nRWNvcmUgUGFja2FnZSBSZWdpc3RyeSBJbXBsZW1lbnRhdGlvbic6ZGZiKCdfVUlfVmFsaWRhdGlvbkRlbGVnYXRlUmVnaXN0cnlfZXh0ZW5zaW9ucG9pbnQnLGEpPydWYWxpZGF0aW9uIERlbGVnYXRlIFJlZ2lzdHJ5JzpkZmIoJ19VSV9TZXR0aW5nRGVsZWdhdGVSZWdpc3RyeV9leHRlbnNpb25wb2ludCcsYSk/J0ZlYXR1cmUgU2V0dGluZyBEZWxlZ2F0ZSBGYWN0b3J5IFJlZ2lzdHJ5JzpkZmIoJ19VSV9JbnZvY2F0aW9uRGVsZWdhdGVSZWdpc3RyeV9leHRlbnNpb25wb2ludCcsYSk/J09wZXJhdGlvbiBJbnZvY2F0aW9uIERlbGVnYXRlIEZhY3RvcnkgUmVnaXN0cnknOmRmYignX1VJX0VDbGFzc0ludGVyZmFjZU5vdEFic3RyYWN0X2RpYWdub3N0aWMnLGEpPydBIGNsYXNzIHRoYXQgaXMgYW4gaW50ZXJmYWNlIG11c3QgYWxzbyBiZSBhYnN0cmFjdCc6ZGZiKCdfVUlfRUNsYXNzTm9DaXJjdWxhclN1cGVyVHlwZXNfZGlhZ25vc3RpYycsYSk/J0EgY2xhc3MgbWF5IG5vdCBiZSBhIHN1cGVyIHR5cGUgb2YgaXRzZWxmJzpkZmIoJ19VSV9FQ2xhc3NOb3RXZWxsRm9ybWVkTWFwRW50cnlOb0luc3RhbmNlQ2xhc3NOYW1lX2RpYWdub3N0aWMnLGEpP1wiQSBjbGFzcyB0aGF0IGluaGVyaXRzIGZyb20gYSBtYXAgZW50cnkgY2xhc3MgbXVzdCBoYXZlIGluc3RhbmNlIGNsYXNzIG5hbWUgJ2phdmEudXRpbC5NYXAkRW50cnknXCI6ZGZiKCdfVUlfRVJlZmVyZW5jZU9wcG9zaXRlT2ZPcHBvc2l0ZUluY29uc2lzdGVudF9kaWFnbm9zdGljJyxhKT8nVGhlIG9wcG9zaXRlIG9mIHRoZSBvcHBvc2l0ZSBtYXkgbm90IGJlIGEgcmVmZXJlbmNlIGRpZmZlcmVudCBmcm9tIHRoaXMgb25lJzpkZmIoJ19VSV9FUmVmZXJlbmNlT3Bwb3NpdGVOb3RGZWF0dXJlT2ZUeXBlX2RpYWdub3N0aWMnLGEpP1wiVGhlIG9wcG9zaXRlIG11c3QgYmUgYSBmZWF0dXJlIG9mIHRoZSByZWZlcmVuY2UncyB0eXBlXCI6ZGZiKCdfVUlfRVJlZmVyZW5jZVRyYW5zaWVudE9wcG9zaXRlTm90VHJhbnNpZW50X2RpYWdub3N0aWMnLGEpPydUaGUgb3Bwb3NpdGUgb2YgYSB0cmFuc2llbnQgcmVmZXJlbmNlIG11c3QgYmUgdHJhbnNpZW50IGlmIGl0IGlzIHByb3h5IHJlc29sdmluZyc6ZGZiKCdfVUlfRVJlZmVyZW5jZU9wcG9zaXRlQm90aENvbnRhaW5tZW50X2RpYWdub3N0aWMnLGEpPydUaGUgb3Bwb3NpdGUgb2YgYSBjb250YWlubWVudCByZWZlcmVuY2UgbXVzdCBub3QgYmUgYSBjb250YWlubWVudCByZWZlcmVuY2UnOmRmYignX1VJX0VSZWZlcmVuY2VDb25zaXN0ZW50VW5pcXVlX2RpYWdub3N0aWMnLGEpPydBIGNvbnRhaW5tZW50IG9yIGJpZGlyZWN0aW9uYWwgcmVmZXJlbmNlIG11c3QgYmUgdW5pcXVlIGlmIGl0cyB1cHBlciBib3VuZCBpcyBkaWZmZXJlbnQgZnJvbSAxJzpkZmIoJ19VSV9FVHlwZWRFbGVtZW50Tm9UeXBlX2RpYWdub3N0aWMnLGEpPydUaGUgdHlwZWQgZWxlbWVudCBtdXN0IGhhdmUgYSB0eXBlJzpkZmIoJ19VSV9FQXR0cmlidXRlTm9EYXRhVHlwZV9kaWFnbm9zdGljJyxhKT8nVGhlIGdlbmVyaWMgYXR0cmlidXRlIHR5cGUgbXVzdCBub3QgcmVmZXIgdG8gYSBjbGFzcyc6ZGZiKCdfVUlfRVJlZmVyZW5jZU5vQ2xhc3NfZGlhZ25vc3RpYycsYSk/J1RoZSBnZW5lcmljIHJlZmVyZW5jZSB0eXBlIG11c3Qgbm90IHJlZmVyIHRvIGEgZGF0YSB0eXBlJzpkZmIoJ19VSV9FR2VuZXJpY1R5cGVOb1R5cGVQYXJhbWV0ZXJBbmRDbGFzc2lmaWVyX2RpYWdub3N0aWMnLGEpP1wiQSBnZW5lcmljIHR5cGUgY2FuJ3QgcmVmZXIgdG8gYm90aCBhIHR5cGUgcGFyYW1ldGVyIGFuZCBhIGNsYXNzaWZpZXJcIjpkZmIoJ19VSV9FR2VuZXJpY1R5cGVOb0NsYXNzX2RpYWdub3N0aWMnLGEpPydBIGdlbmVyaWMgc3VwZXIgdHlwZSBtdXN0IHJlZmVyIHRvIGEgY2xhc3MnOmRmYignX1VJX0VHZW5lcmljVHlwZU5vVHlwZVBhcmFtZXRlck9yQ2xhc3NpZmllcl9kaWFnbm9zdGljJyxhKT8nQSBnZW5lcmljIHR5cGUgaW4gdGhpcyBjb250ZXh0IG11c3QgcmVmZXIgdG8gYSBjbGFzc2lmaWVyIG9yIGEgdHlwZSBwYXJhbWV0ZXInOmRmYignX1VJX0VHZW5lcmljVHlwZUJvdW5kc09ubHlGb3JUeXBlQXJndW1lbnRfZGlhZ25vc3RpYycsYSk/J0EgZ2VuZXJpYyB0eXBlIG1heSBoYXZlIGJvdW5kcyBvbmx5IHdoZW4gdXNlZCBhcyBhIHR5cGUgYXJndW1lbnQnOmRmYignX1VJX0VHZW5lcmljVHlwZU5vVXBwZXJBbmRMb3dlckJvdW5kX2RpYWdub3N0aWMnLGEpPydBIGdlbmVyaWMgdHlwZSBtdXN0IG5vdCBoYXZlIGJvdGggYSBsb3dlciBhbmQgYW4gdXBwZXIgYm91bmQnOmRmYignX1VJX0VHZW5lcmljVHlwZU5vVHlwZVBhcmFtZXRlck9yQ2xhc3NpZmllckFuZEJvdW5kX2RpYWdub3N0aWMnLGEpPydBIGdlbmVyaWMgdHlwZSB3aXRoIGJvdW5kcyBtdXN0IG5vdCBhbHNvIHJlZmVyIHRvIGEgdHlwZSBwYXJhbWV0ZXIgb3IgY2xhc3NpZmllcic6ZGZiKCdfVUlfRUdlbmVyaWNUeXBlTm9Bcmd1bWVudHNfZGlhZ25vc3RpYycsYSk/J0EgZ2VuZXJpYyB0eXBlIG1heSBoYXZlIGFyZ3VtZW50cyBvbmx5IGlmIGl0IHJlZmVycyB0byBhIGNsYXNzaWZpZXInOmRmYignX1VJX0VHZW5lcmljVHlwZU91dE9mU2NvcGVUeXBlUGFyYW1ldGVyX2RpYWdub3N0aWMnLGEpPydBIGdlbmVyaWMgdHlwZSBtYXkgb25seSByZWZlciB0byBhIHR5cGUgcGFyYW1ldGVyIHRoYXQgaXMgaW4gc2NvcGUnOmF9XG5mdW5jdGlvbiBBb2QoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2lmKGEucilyZXR1cm47YS5yPXRydWU7cG5kKGEsJ2dyYXBoJyk7Y29kKGEsJ2dyYXBoJyk7ZG9kKGEseXRlKTtHbmQoYS5vLCdUJyk7d3RkKF9LZChhLmEpLGEucCk7d3RkKF9LZChhLmYpLGEuYSk7d3RkKF9LZChhLm4pLGEuZik7d3RkKF9LZChhLmcpLGEubik7d3RkKF9LZChhLmMpLGEubik7d3RkKF9LZChhLmkpLGEuYyk7d3RkKF9LZChhLmopLGEuYyk7d3RkKF9LZChhLmQpLGEuZik7d3RkKF9LZChhLmUpLGEuYSk7WG5kKGEucCxQMyxJbGUsdHJ1ZSx0cnVlLGZhbHNlKTtvPURuZChhLnAsYS5wLCdzZXRQcm9wZXJ0eScpO3A9SG5kKG8pO2o9Tm5kKGEubyk7az0oYz0oZD1uZXcgVVFkLGQpLGMpO3d0ZCgoIWouZCYmKGouZD1uZXcgeE1kKGo1LGosMSkpLGouZCksayk7bD1PbmQocCk7UFFkKGssbCk7Rm5kKG8saixBdGUpO2o9T25kKHApO0ZuZChvLGosQnRlKTtvPURuZChhLnAsbnVsbCwnZ2V0UHJvcGVydHknKTtwPUhuZChvKTtqPU5uZChhLm8pO2s9T25kKHApO3d0ZCgoIWouZCYmKGouZD1uZXcgeE1kKGo1LGosMSkpLGouZCksayk7Rm5kKG8saixBdGUpO2o9T25kKHApO249eElkKG8saixudWxsKTshIW4mJm4uRmkoKTtvPURuZChhLnAsYS53Yi5lLCdoYXNQcm9wZXJ0eScpO2o9Tm5kKGEubyk7az0oZT0oZj1uZXcgVVFkLGYpLGUpO3d0ZCgoIWouZCYmKGouZD1uZXcgeE1kKGo1LGosMSkpLGouZCksayk7Rm5kKG8saixBdGUpO289RG5kKGEucCxhLnAsJ2NvcHlQcm9wZXJ0aWVzJyk7RW5kKG8sYS5wLEN0ZSk7bz1EbmQoYS5wLG51bGwsJ2dldEFsbFByb3BlcnRpZXMnKTtqPU5uZChhLndiLlApO2s9Tm5kKGEubyk7d3RkKCghai5kJiYoai5kPW5ldyB4TWQoajUsaiwxKSksai5kKSxrKTtsPShnPShoPW5ldyBVUWQsaCksZyk7d3RkKCghay5kJiYoay5kPW5ldyB4TWQoajUsaywxKSksay5kKSxsKTtrPU5uZChhLndiLk0pO3d0ZCgoIWouZCYmKGouZD1uZXcgeE1kKGo1LGosMSkpLGouZCksayk7bT14SWQobyxqLG51bGwpOyEhbSYmbS5GaSgpO1huZChhLmEseDIsWHNlLHRydWUsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5hKSwwKSwxOCksYS5rLG51bGwsRHRlLDAsLTEseDIsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtYbmQoYS5mLEMyLFpzZSx0cnVlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEuZiksMCksMTgpLGEuZyxCRChxdWQoWktkKGEuZyksMCksMTgpLCdsYWJlbHMnLDAsLTEsQzIsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmYpLDEpLDM0KSxhLndiLl8sRXRlLG51bGwsMCwxLEMyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7WG5kKGEubixHMiwnRWxrU2hhcGUnLHRydWUsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5uKSwwKSwzNCksYS53Yi50LEZ0ZSwkamUsMSwxLEcyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5uKSwxKSwzNCksYS53Yi50LEd0ZSwkamUsMSwxLEcyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5uKSwyKSwzNCksYS53Yi50LCd4JywkamUsMSwxLEcyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5uKSwzKSwzNCksYS53Yi50LCd5JywkamUsMSwxLEcyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7bz1EbmQoYS5uLG51bGwsJ3NldERpbWVuc2lvbnMnKTtFbmQobyxhLndiLnQsR3RlKTtFbmQobyxhLndiLnQsRnRlKTtvPURuZChhLm4sbnVsbCwnc2V0TG9jYXRpb24nKTtFbmQobyxhLndiLnQsJ3gnKTtFbmQobyxhLndiLnQsJ3knKTtYbmQoYS5nLEQyLGR0ZSxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLmcpLDApLDE4KSxhLmYsQkQocXVkKFpLZChhLmYpLDApLDE4KSxIdGUsMCwxLEQyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZyksMSksMzQpLGEud2IuXyxJdGUsJycsMCwxLEQyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7WG5kKGEuYyx6Miwkc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLmMpLDApLDE4KSxhLmQsQkQocXVkKFpLZChhLmQpLDEpLDE4KSwnb3V0Z29pbmdFZGdlcycsMCwtMSx6MixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuYyksMSksMTgpLGEuZCxCRChxdWQoWktkKGEuZCksMiksMTgpLCdpbmNvbWluZ0VkZ2VzJywwLC0xLHoyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSk7WG5kKGEuaSxFMixldGUsZmFsc2UsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5pKSwwKSwxOCksYS5qLEJEKHF1ZChaS2QoYS5qKSwwKSwxOCksJ3BvcnRzJywwLC0xLEUyLGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5pKSwxKSwxOCksYS5pLEJEKHF1ZChaS2QoYS5pKSwyKSwxOCksSnRlLDAsLTEsRTIsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmkpLDIpLDE4KSxhLmksQkQocXVkKFpLZChhLmkpLDEpLDE4KSxIdGUsMCwxLEUyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuaSksMyksMTgpLGEuZCxCRChxdWQoWktkKGEuZCksMCksMTgpLCdjb250YWluZWRFZGdlcycsMCwtMSxFMixmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuaSksNCksMzQpLGEud2IuZSxLdGUsbnVsbCwwLDEsRTIsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSk7WG5kKGEuaixGMixmdGUsZmFsc2UsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5qKSwwKSwxOCksYS5pLEJEKHF1ZChaS2QoYS5pKSwwKSwxOCksSHRlLDAsMSxGMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtYbmQoYS5kLEIyLF9zZSxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLmQpLDApLDE4KSxhLmksQkQocXVkKFpLZChhLmkpLDMpLDE4KSwnY29udGFpbmluZ05vZGUnLDAsMSxCMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmQpLDEpLDE4KSxhLmMsQkQocXVkKFpLZChhLmMpLDApLDE4KSxMdGUsMCwtMSxCMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuZCksMiksMTgpLGEuYyxCRChxdWQoWktkKGEuYyksMSksMTgpLE10ZSwwLC0xLEIyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5kKSwzKSwxOCksYS5lLEJEKHF1ZChaS2QoYS5lKSw1KSwxOCksTnRlLDAsLTEsQjIsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmQpLDQpLDM0KSxhLndiLmUsJ2h5cGVyZWRnZScsbnVsbCwwLDEsQjIsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5kKSw1KSwzNCksYS53Yi5lLEt0ZSxudWxsLDAsMSxCMix0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLmQpLDYpLDM0KSxhLndiLmUsJ3NlbGZsb29wJyxudWxsLDAsMSxCMix0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLmQpLDcpLDM0KSxhLndiLmUsJ2Nvbm5lY3RlZCcsbnVsbCwwLDEsQjIsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSk7WG5kKGEuYix5MixZc2UsZmFsc2UsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5iKSwwKSwzNCksYS53Yi50LCd4JywkamUsMSwxLHkyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5iKSwxKSwzNCksYS53Yi50LCd5JywkamUsMSwxLHkyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7bz1EbmQoYS5iLG51bGwsJ3NldCcpO0VuZChvLGEud2IudCwneCcpO0VuZChvLGEud2IudCwneScpO1huZChhLmUsQTIsYXRlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuZSksMCksMzQpLGEud2IudCwnc3RhcnRYJyxudWxsLDAsMSxBMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZSksMSksMzQpLGEud2IudCwnc3RhcnRZJyxudWxsLDAsMSxBMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZSksMiksMzQpLGEud2IudCwnZW5kWCcsbnVsbCwwLDEsQTIsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmUpLDMpLDM0KSxhLndiLnQsJ2VuZFknLG51bGwsMCwxLEEyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5lKSw0KSwxOCksYS5iLG51bGwsT3RlLDAsLTEsQTIsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmUpLDUpLDE4KSxhLmQsQkQocXVkKFpLZChhLmQpLDMpLDE4KSxIdGUsMCwxLEEyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuZSksNiksMTgpLGEuYyxudWxsLFB0ZSwwLDEsQTIsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmUpLDcpLDE4KSxhLmMsbnVsbCxRdGUsMCwxLEEyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5lKSw4KSwxOCksYS5lLEJEKHF1ZChaS2QoYS5lKSw5KSwxOCksUnRlLDAsLTEsQTIsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmUpLDkpLDE4KSxhLmUsQkQocXVkKFpLZChhLmUpLDgpLDE4KSxTdGUsMCwtMSxBMixmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZSksMTApLDM0KSxhLndiLl8sRXRlLG51bGwsMCwxLEEyLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7bz1EbmQoYS5lLG51bGwsJ3NldFN0YXJ0TG9jYXRpb24nKTtFbmQobyxhLndiLnQsJ3gnKTtFbmQobyxhLndiLnQsJ3knKTtvPURuZChhLmUsbnVsbCwnc2V0RW5kTG9jYXRpb24nKTtFbmQobyxhLndiLnQsJ3gnKTtFbmQobyxhLndiLnQsJ3knKTtYbmQoYS5rLENLLCdFbGtQcm9wZXJ0eVRvVmFsdWVNYXBFbnRyeScsZmFsc2UsZmFsc2UsZmFsc2UpO2o9Tm5kKGEubyk7az0oaT0oYj1uZXcgVVFkLGIpLGkpO3d0ZCgoIWouZCYmKGouZD1uZXcgeE1kKGo1LGosMSkpLGouZCksayk7V25kKEJEKHF1ZChaS2QoYS5rKSwwKSwzNCksaiwna2V5JyxDSyxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmspLDEpLDM0KSxhLnMsQnRlLG51bGwsMCwxLENLLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Wm5kKGEubyxRMywnSVByb3BlcnR5Jyx0cnVlKTtabmQoYS5zLFNJLCdQcm9wZXJ0eVZhbHVlJyx0cnVlKTtSbmQoYSx5dGUpfVxuZnVuY3Rpb24gbGRlKCl7bGRlPWNjYjtrZGU9S0MoU0Qsd3RlLDI1LFRqZSwxNSwxKTtrZGVbOV09MzU7a2RlWzEwXT0xOTtrZGVbMTNdPTE5O2tkZVszMl09NTE7a2RlWzMzXT00OTtrZGVbMzRdPTMzO3lsYihrZGUsMzUsMzgsNDkpO2tkZVszOF09MTt5bGIoa2RlLDM5LDQ1LDQ5KTt5bGIoa2RlLDQ1LDQ3LC03MSk7a2RlWzQ3XT00OTt5bGIoa2RlLDQ4LDU4LC03MSk7a2RlWzU4XT02MTtrZGVbNTldPTQ5O2tkZVs2MF09MTtrZGVbNjFdPTQ5O2tkZVs2Ml09MzM7eWxiKGtkZSw2Myw2NSw0OSk7eWxiKGtkZSw2NSw5MSwtMyk7eWxiKGtkZSw5MSw5MywzMyk7a2RlWzkzXT0xO2tkZVs5NF09MzM7a2RlWzk1XT0tMztrZGVbOTZdPTMzO3lsYihrZGUsOTcsMTIzLC0zKTt5bGIoa2RlLDEyMywxODMsMzMpO2tkZVsxODNdPS04Nzt5bGIoa2RlLDE4NCwxOTIsMzMpO3lsYihrZGUsMTkyLDIxNSwtMTkpO2tkZVsyMTVdPTMzO3lsYihrZGUsMjE2LDI0NywtMTkpO2tkZVsyNDddPTMzO3lsYihrZGUsMjQ4LDMwNiwtMTkpO3lsYihrZGUsMzA2LDMwOCwzMyk7eWxiKGtkZSwzMDgsMzE5LC0xOSk7eWxiKGtkZSwzMTksMzIxLDMzKTt5bGIoa2RlLDMyMSwzMjksLTE5KTtrZGVbMzI5XT0zMzt5bGIoa2RlLDMzMCwzODMsLTE5KTtrZGVbMzgzXT0zMzt5bGIoa2RlLDM4NCw0NTIsLTE5KTt5bGIoa2RlLDQ1Miw0NjEsMzMpO3lsYihrZGUsNDYxLDQ5NywtMTkpO3lsYihrZGUsNDk3LDUwMCwzMyk7eWxiKGtkZSw1MDAsNTAyLC0xOSk7eWxiKGtkZSw1MDIsNTA2LDMzKTt5bGIoa2RlLDUwNiw1MzYsLTE5KTt5bGIoa2RlLDUzNiw1OTIsMzMpO3lsYihrZGUsNTkyLDY4MSwtMTkpO3lsYihrZGUsNjgxLDY5OSwzMyk7eWxiKGtkZSw2OTksNzA2LC0xOSk7eWxiKGtkZSw3MDYsNzIwLDMzKTt5bGIoa2RlLDcyMCw3MjIsLTg3KTt5bGIoa2RlLDcyMiw3NjgsMzMpO3lsYihrZGUsNzY4LDgzOCwtODcpO3lsYihrZGUsODM4LDg2NCwzMyk7eWxiKGtkZSw4NjQsODY2LC04Nyk7eWxiKGtkZSw4NjYsOTAyLDMzKTtrZGVbOTAyXT0tMTk7a2RlWzkwM109LTg3O3lsYihrZGUsOTA0LDkwNywtMTkpO2tkZVs5MDddPTMzO2tkZVs5MDhdPS0xOTtrZGVbOTA5XT0zMzt5bGIoa2RlLDkxMCw5MzAsLTE5KTtrZGVbOTMwXT0zMzt5bGIoa2RlLDkzMSw5NzUsLTE5KTtrZGVbOTc1XT0zMzt5bGIoa2RlLDk3Niw5ODMsLTE5KTt5bGIoa2RlLDk4Myw5ODYsMzMpO2tkZVs5ODZdPS0xOTtrZGVbOTg3XT0zMztrZGVbOTg4XT0tMTk7a2RlWzk4OV09MzM7a2RlWzk5MF09LTE5O2tkZVs5OTFdPTMzO2tkZVs5OTJdPS0xOTtrZGVbOTkzXT0zMzt5bGIoa2RlLDk5NCwxMDEyLC0xOSk7eWxiKGtkZSwxMDEyLDEwMjUsMzMpO3lsYihrZGUsMTAyNSwxMDM3LC0xOSk7a2RlWzEwMzddPTMzO3lsYihrZGUsMTAzOCwxMTA0LC0xOSk7a2RlWzExMDRdPTMzO3lsYihrZGUsMTEwNSwxMTE3LC0xOSk7a2RlWzExMTddPTMzO3lsYihrZGUsMTExOCwxMTU0LC0xOSk7a2RlWzExNTRdPTMzO3lsYihrZGUsMTE1NSwxMTU5LC04Nyk7eWxiKGtkZSwxMTU5LDExNjgsMzMpO3lsYihrZGUsMTE2OCwxMjIxLC0xOSk7eWxiKGtkZSwxMjIxLDEyMjMsMzMpO3lsYihrZGUsMTIyMywxMjI1LC0xOSk7eWxiKGtkZSwxMjI1LDEyMjcsMzMpO3lsYihrZGUsMTIyNywxMjI5LC0xOSk7eWxiKGtkZSwxMjI5LDEyMzIsMzMpO3lsYihrZGUsMTIzMiwxMjYwLC0xOSk7eWxiKGtkZSwxMjYwLDEyNjIsMzMpO3lsYihrZGUsMTI2MiwxMjcwLC0xOSk7eWxiKGtkZSwxMjcwLDEyNzIsMzMpO3lsYihrZGUsMTI3MiwxMjc0LC0xOSk7eWxiKGtkZSwxMjc0LDEzMjksMzMpO3lsYihrZGUsMTMyOSwxMzY3LC0xOSk7eWxiKGtkZSwxMzY3LDEzNjksMzMpO2tkZVsxMzY5XT0tMTk7eWxiKGtkZSwxMzcwLDEzNzcsMzMpO3lsYihrZGUsMTM3NywxNDE1LC0xOSk7eWxiKGtkZSwxNDE1LDE0MjUsMzMpO3lsYihrZGUsMTQyNSwxNDQyLC04Nyk7a2RlWzE0NDJdPTMzO3lsYihrZGUsMTQ0MywxNDY2LC04Nyk7a2RlWzE0NjZdPTMzO3lsYihrZGUsMTQ2NywxNDcwLC04Nyk7a2RlWzE0NzBdPTMzO2tkZVsxNDcxXT0tODc7a2RlWzE0NzJdPTMzO3lsYihrZGUsMTQ3MywxNDc1LC04Nyk7a2RlWzE0NzVdPTMzO2tkZVsxNDc2XT0tODc7eWxiKGtkZSwxNDc3LDE0ODgsMzMpO3lsYihrZGUsMTQ4OCwxNTE1LC0xOSk7eWxiKGtkZSwxNTE1LDE1MjAsMzMpO3lsYihrZGUsMTUyMCwxNTIzLC0xOSk7eWxiKGtkZSwxNTIzLDE1NjksMzMpO3lsYihrZGUsMTU2OSwxNTk1LC0xOSk7eWxiKGtkZSwxNTk1LDE2MDAsMzMpO2tkZVsxNjAwXT0tODc7eWxiKGtkZSwxNjAxLDE2MTEsLTE5KTt5bGIoa2RlLDE2MTEsMTYxOSwtODcpO3lsYihrZGUsMTYxOSwxNjMyLDMzKTt5bGIoa2RlLDE2MzIsMTY0MiwtODcpO3lsYihrZGUsMTY0MiwxNjQ4LDMzKTtrZGVbMTY0OF09LTg3O3lsYihrZGUsMTY0OSwxNzIwLC0xOSk7eWxiKGtkZSwxNzIwLDE3MjIsMzMpO3lsYihrZGUsMTcyMiwxNzI3LC0xOSk7a2RlWzE3MjddPTMzO3lsYihrZGUsMTcyOCwxNzQzLC0xOSk7a2RlWzE3NDNdPTMzO3lsYihrZGUsMTc0NCwxNzQ4LC0xOSk7a2RlWzE3NDhdPTMzO2tkZVsxNzQ5XT0tMTk7eWxiKGtkZSwxNzUwLDE3NjUsLTg3KTt5bGIoa2RlLDE3NjUsMTc2NywtMTkpO3lsYihrZGUsMTc2NywxNzY5LC04Nyk7a2RlWzE3NjldPTMzO3lsYihrZGUsMTc3MCwxNzc0LC04Nyk7eWxiKGtkZSwxNzc0LDE3NzYsMzMpO3lsYihrZGUsMTc3NiwxNzg2LC04Nyk7eWxiKGtkZSwxNzg2LDIzMDUsMzMpO3lsYihrZGUsMjMwNSwyMzA4LC04Nyk7a2RlWzIzMDhdPTMzO3lsYihrZGUsMjMwOSwyMzYyLC0xOSk7eWxiKGtkZSwyMzYyLDIzNjQsMzMpO2tkZVsyMzY0XT0tODc7a2RlWzIzNjVdPS0xOTt5bGIoa2RlLDIzNjYsMjM4MiwtODcpO3lsYihrZGUsMjM4MiwyMzg1LDMzKTt5bGIoa2RlLDIzODUsMjM4OSwtODcpO3lsYihrZGUsMjM4OSwyMzkyLDMzKTt5bGIoa2RlLDIzOTIsMjQwMiwtMTkpO3lsYihrZGUsMjQwMiwyNDA0LC04Nyk7eWxiKGtkZSwyNDA0LDI0MDYsMzMpO3lsYihrZGUsMjQwNiwyNDE2LC04Nyk7eWxiKGtkZSwyNDE2LDI0MzMsMzMpO3lsYihrZGUsMjQzMywyNDM2LC04Nyk7a2RlWzI0MzZdPTMzO3lsYihrZGUsMjQzNywyNDQ1LC0xOSk7eWxiKGtkZSwyNDQ1LDI0NDcsMzMpO3lsYihrZGUsMjQ0NywyNDQ5LC0xOSk7eWxiKGtkZSwyNDQ5LDI0NTEsMzMpO3lsYihrZGUsMjQ1MSwyNDczLC0xOSk7a2RlWzI0NzNdPTMzO3lsYihrZGUsMjQ3NCwyNDgxLC0xOSk7a2RlWzI0ODFdPTMzO2tkZVsyNDgyXT0tMTk7eWxiKGtkZSwyNDgzLDI0ODYsMzMpO3lsYihrZGUsMjQ4NiwyNDkwLC0xOSk7eWxiKGtkZSwyNDkwLDI0OTIsMzMpO2tkZVsyNDkyXT0tODc7a2RlWzI0OTNdPTMzO3lsYihrZGUsMjQ5NCwyNTAxLC04Nyk7eWxiKGtkZSwyNTAxLDI1MDMsMzMpO3lsYihrZGUsMjUwMywyNTA1LC04Nyk7eWxiKGtkZSwyNTA1LDI1MDcsMzMpO3lsYihrZGUsMjUwNywyNTEwLC04Nyk7eWxiKGtkZSwyNTEwLDI1MTksMzMpO2tkZVsyNTE5XT0tODc7eWxiKGtkZSwyNTIwLDI1MjQsMzMpO3lsYihrZGUsMjUyNCwyNTI2LC0xOSk7a2RlWzI1MjZdPTMzO3lsYihrZGUsMjUyNywyNTMwLC0xOSk7eWxiKGtkZSwyNTMwLDI1MzIsLTg3KTt5bGIoa2RlLDI1MzIsMjUzNCwzMyk7eWxiKGtkZSwyNTM0LDI1NDQsLTg3KTt5bGIoa2RlLDI1NDQsMjU0NiwtMTkpO3lsYihrZGUsMjU0NiwyNTYyLDMzKTtrZGVbMjU2Ml09LTg3O3lsYihrZGUsMjU2MywyNTY1LDMzKTt5bGIoa2RlLDI1NjUsMjU3MSwtMTkpO3lsYihrZGUsMjU3MSwyNTc1LDMzKTt5bGIoa2RlLDI1NzUsMjU3NywtMTkpO3lsYihrZGUsMjU3NywyNTc5LDMzKTt5bGIoa2RlLDI1NzksMjYwMSwtMTkpO2tkZVsyNjAxXT0zMzt5bGIoa2RlLDI2MDIsMjYwOSwtMTkpO2tkZVsyNjA5XT0zMzt5bGIoa2RlLDI2MTAsMjYxMiwtMTkpO2tkZVsyNjEyXT0zMzt5bGIoa2RlLDI2MTMsMjYxNSwtMTkpO2tkZVsyNjE1XT0zMzt5bGIoa2RlLDI2MTYsMjYxOCwtMTkpO3lsYihrZGUsMjYxOCwyNjIwLDMzKTtrZGVbMjYyMF09LTg3O2tkZVsyNjIxXT0zMzt5bGIoa2RlLDI2MjIsMjYyNywtODcpO3lsYihrZGUsMjYyNywyNjMxLDMzKTt5bGIoa2RlLDI2MzEsMjYzMywtODcpO3lsYihrZGUsMjYzMywyNjM1LDMzKTt5bGIoa2RlLDI2MzUsMjYzOCwtODcpO3lsYihrZGUsMjYzOCwyNjQ5LDMzKTt5bGIoa2RlLDI2NDksMjY1MywtMTkpO2tkZVsyNjUzXT0zMztrZGVbMjY1NF09LTE5O3lsYihrZGUsMjY1NSwyNjYyLDMzKTt5bGIoa2RlLDI2NjIsMjY3NCwtODcpO3lsYihrZGUsMjY3NCwyNjc3LC0xOSk7eWxiKGtkZSwyNjc3LDI2ODksMzMpO3lsYihrZGUsMjY4OSwyNjkyLC04Nyk7a2RlWzI2OTJdPTMzO3lsYihrZGUsMjY5MywyNzAwLC0xOSk7a2RlWzI3MDBdPTMzO2tkZVsyNzAxXT0tMTk7a2RlWzI3MDJdPTMzO3lsYihrZGUsMjcwMywyNzA2LC0xOSk7a2RlWzI3MDZdPTMzO3lsYihrZGUsMjcwNywyNzI5LC0xOSk7a2RlWzI3MjldPTMzO3lsYihrZGUsMjczMCwyNzM3LC0xOSk7a2RlWzI3MzddPTMzO3lsYihrZGUsMjczOCwyNzQwLC0xOSk7a2RlWzI3NDBdPTMzO3lsYihrZGUsMjc0MSwyNzQ2LC0xOSk7eWxiKGtkZSwyNzQ2LDI3NDgsMzMpO2tkZVsyNzQ4XT0tODc7a2RlWzI3NDldPS0xOTt5bGIoa2RlLDI3NTAsMjc1OCwtODcpO2tkZVsyNzU4XT0zMzt5bGIoa2RlLDI3NTksMjc2MiwtODcpO2tkZVsyNzYyXT0zMzt5bGIoa2RlLDI3NjMsMjc2NiwtODcpO3lsYihrZGUsMjc2NiwyNzg0LDMzKTtrZGVbMjc4NF09LTE5O3lsYihrZGUsMjc4NSwyNzkwLDMzKTt5bGIoa2RlLDI3OTAsMjgwMCwtODcpO3lsYihrZGUsMjgwMCwyODE3LDMzKTt5bGIoa2RlLDI4MTcsMjgyMCwtODcpO2tkZVsyODIwXT0zMzt5bGIoa2RlLDI4MjEsMjgyOSwtMTkpO3lsYihrZGUsMjgyOSwyODMxLDMzKTt5bGIoa2RlLDI4MzEsMjgzMywtMTkpO3lsYihrZGUsMjgzMywyODM1LDMzKTt5bGIoa2RlLDI4MzUsMjg1NywtMTkpO2tkZVsyODU3XT0zMzt5bGIoa2RlLDI4NTgsMjg2NSwtMTkpO2tkZVsyODY1XT0zMzt5bGIoa2RlLDI4NjYsMjg2OCwtMTkpO3lsYihrZGUsMjg2OCwyODcwLDMzKTt5bGIoa2RlLDI4NzAsMjg3NCwtMTkpO3lsYihrZGUsMjg3NCwyODc2LDMzKTtrZGVbMjg3Nl09LTg3O2tkZVsyODc3XT0tMTk7eWxiKGtkZSwyODc4LDI4ODQsLTg3KTt5bGIoa2RlLDI4ODQsMjg4NywzMyk7eWxiKGtkZSwyODg3LDI4ODksLTg3KTt5bGIoa2RlLDI4ODksMjg5MSwzMyk7eWxiKGtkZSwyODkxLDI4OTQsLTg3KTt5bGIoa2RlLDI4OTQsMjkwMiwzMyk7eWxiKGtkZSwyOTAyLDI5MDQsLTg3KTt5bGIoa2RlLDI5MDQsMjkwOCwzMyk7eWxiKGtkZSwyOTA4LDI5MTAsLTE5KTtrZGVbMjkxMF09MzM7eWxiKGtkZSwyOTExLDI5MTQsLTE5KTt5bGIoa2RlLDI5MTQsMjkxOCwzMyk7eWxiKGtkZSwyOTE4LDI5MjgsLTg3KTt5bGIoa2RlLDI5MjgsMjk0NiwzMyk7eWxiKGtkZSwyOTQ2LDI5NDgsLTg3KTtrZGVbMjk0OF09MzM7eWxiKGtkZSwyOTQ5LDI5NTUsLTE5KTt5bGIoa2RlLDI5NTUsMjk1OCwzMyk7eWxiKGtkZSwyOTU4LDI5NjEsLTE5KTtrZGVbMjk2MV09MzM7eWxiKGtkZSwyOTYyLDI5NjYsLTE5KTt5bGIoa2RlLDI5NjYsMjk2OSwzMyk7eWxiKGtkZSwyOTY5LDI5NzEsLTE5KTtrZGVbMjk3MV09MzM7a2RlWzI5NzJdPS0xOTtrZGVbMjk3M109MzM7eWxiKGtkZSwyOTc0LDI5NzYsLTE5KTt5bGIoa2RlLDI5NzYsMjk3OSwzMyk7eWxiKGtkZSwyOTc5LDI5ODEsLTE5KTt5bGIoa2RlLDI5ODEsMjk4NCwzMyk7eWxiKGtkZSwyOTg0LDI5ODcsLTE5KTt5bGIoa2RlLDI5ODcsMjk5MCwzMyk7eWxiKGtkZSwyOTkwLDI5OTgsLTE5KTtrZGVbMjk5OF09MzM7eWxiKGtkZSwyOTk5LDMwMDIsLTE5KTt5bGIoa2RlLDMwMDIsMzAwNiwzMyk7eWxiKGtkZSwzMDA2LDMwMTEsLTg3KTt5bGIoa2RlLDMwMTEsMzAxNCwzMyk7eWxiKGtkZSwzMDE0LDMwMTcsLTg3KTtrZGVbMzAxN109MzM7eWxiKGtkZSwzMDE4LDMwMjIsLTg3KTt5bGIoa2RlLDMwMjIsMzAzMSwzMyk7a2RlWzMwMzFdPS04Nzt5bGIoa2RlLDMwMzIsMzA0NywzMyk7eWxiKGtkZSwzMDQ3LDMwNTYsLTg3KTt5bGIoa2RlLDMwNTYsMzA3MywzMyk7eWxiKGtkZSwzMDczLDMwNzYsLTg3KTtrZGVbMzA3Nl09MzM7eWxiKGtkZSwzMDc3LDMwODUsLTE5KTtrZGVbMzA4NV09MzM7eWxiKGtkZSwzMDg2LDMwODksLTE5KTtrZGVbMzA4OV09MzM7eWxiKGtkZSwzMDkwLDMxMTMsLTE5KTtrZGVbMzExM109MzM7eWxiKGtkZSwzMTE0LDMxMjQsLTE5KTtrZGVbMzEyNF09MzM7eWxiKGtkZSwzMTI1LDMxMzAsLTE5KTt5bGIoa2RlLDMxMzAsMzEzNCwzMyk7eWxiKGtkZSwzMTM0LDMxNDEsLTg3KTtrZGVbMzE0MV09MzM7eWxiKGtkZSwzMTQyLDMxNDUsLTg3KTtrZGVbMzE0NV09MzM7eWxiKGtkZSwzMTQ2LDMxNTAsLTg3KTt5bGIoa2RlLDMxNTAsMzE1NywzMyk7eWxiKGtkZSwzMTU3LDMxNTksLTg3KTt5bGIoa2RlLDMxNTksMzE2OCwzMyk7eWxiKGtkZSwzMTY4LDMxNzAsLTE5KTt5bGIoa2RlLDMxNzAsMzE3NCwzMyk7eWxiKGtkZSwzMTc0LDMxODQsLTg3KTt5bGIoa2RlLDMxODQsMzIwMiwzMyk7eWxiKGtkZSwzMjAyLDMyMDQsLTg3KTtrZGVbMzIwNF09MzM7eWxiKGtkZSwzMjA1LDMyMTMsLTE5KTtrZGVbMzIxM109MzM7eWxiKGtkZSwzMjE0LDMyMTcsLTE5KTtrZGVbMzIxN109MzM7eWxiKGtkZSwzMjE4LDMyNDEsLTE5KTtrZGVbMzI0MV09MzM7eWxiKGtkZSwzMjQyLDMyNTIsLTE5KTtrZGVbMzI1Ml09MzM7eWxiKGtkZSwzMjUzLDMyNTgsLTE5KTt5bGIoa2RlLDMyNTgsMzI2MiwzMyk7eWxiKGtkZSwzMjYyLDMyNjksLTg3KTtrZGVbMzI2OV09MzM7eWxiKGtkZSwzMjcwLDMyNzMsLTg3KTtrZGVbMzI3M109MzM7eWxiKGtkZSwzMjc0LDMyNzgsLTg3KTt5bGIoa2RlLDMyNzgsMzI4NSwzMyk7eWxiKGtkZSwzMjg1LDMyODcsLTg3KTt5bGIoa2RlLDMyODcsMzI5NCwzMyk7a2RlWzMyOTRdPS0xOTtrZGVbMzI5NV09MzM7eWxiKGtkZSwzMjk2LDMyOTgsLTE5KTt5bGIoa2RlLDMyOTgsMzMwMiwzMyk7eWxiKGtkZSwzMzAyLDMzMTIsLTg3KTt5bGIoa2RlLDMzMTIsMzMzMCwzMyk7eWxiKGtkZSwzMzMwLDMzMzIsLTg3KTtrZGVbMzMzMl09MzM7eWxiKGtkZSwzMzMzLDMzNDEsLTE5KTtrZGVbMzM0MV09MzM7eWxiKGtkZSwzMzQyLDMzNDUsLTE5KTtrZGVbMzM0NV09MzM7eWxiKGtkZSwzMzQ2LDMzNjksLTE5KTtrZGVbMzM2OV09MzM7eWxiKGtkZSwzMzcwLDMzODYsLTE5KTt5bGIoa2RlLDMzODYsMzM5MCwzMyk7eWxiKGtkZSwzMzkwLDMzOTYsLTg3KTt5bGIoa2RlLDMzOTYsMzM5OCwzMyk7eWxiKGtkZSwzMzk4LDM0MDEsLTg3KTtrZGVbMzQwMV09MzM7eWxiKGtkZSwzNDAyLDM0MDYsLTg3KTt5bGIoa2RlLDM0MDYsMzQxNSwzMyk7a2RlWzM0MTVdPS04Nzt5bGIoa2RlLDM0MTYsMzQyNCwzMyk7eWxiKGtkZSwzNDI0LDM0MjYsLTE5KTt5bGIoa2RlLDM0MjYsMzQzMCwzMyk7eWxiKGtkZSwzNDMwLDM0NDAsLTg3KTt5bGIoa2RlLDM0NDAsMzU4NSwzMyk7eWxiKGtkZSwzNTg1LDM2MzEsLTE5KTtrZGVbMzYzMV09MzM7a2RlWzM2MzJdPS0xOTtrZGVbMzYzM109LTg3O3lsYihrZGUsMzYzNCwzNjM2LC0xOSk7eWxiKGtkZSwzNjM2LDM2NDMsLTg3KTt5bGIoa2RlLDM2NDMsMzY0OCwzMyk7eWxiKGtkZSwzNjQ4LDM2NTQsLTE5KTt5bGIoa2RlLDM2NTQsMzY2MywtODcpO2tkZVszNjYzXT0zMzt5bGIoa2RlLDM2NjQsMzY3NCwtODcpO3lsYihrZGUsMzY3NCwzNzEzLDMzKTt5bGIoa2RlLDM3MTMsMzcxNSwtMTkpO2tkZVszNzE1XT0zMztrZGVbMzcxNl09LTE5O3lsYihrZGUsMzcxNywzNzE5LDMzKTt5bGIoa2RlLDM3MTksMzcyMSwtMTkpO2tkZVszNzIxXT0zMztrZGVbMzcyMl09LTE5O3lsYihrZGUsMzcyMywzNzI1LDMzKTtrZGVbMzcyNV09LTE5O3lsYihrZGUsMzcyNiwzNzMyLDMzKTt5bGIoa2RlLDM3MzIsMzczNiwtMTkpO2tkZVszNzM2XT0zMzt5bGIoa2RlLDM3MzcsMzc0NCwtMTkpO2tkZVszNzQ0XT0zMzt5bGIoa2RlLDM3NDUsMzc0OCwtMTkpO2tkZVszNzQ4XT0zMztrZGVbMzc0OV09LTE5O2tkZVszNzUwXT0zMztrZGVbMzc1MV09LTE5O3lsYihrZGUsMzc1MiwzNzU0LDMzKTt5bGIoa2RlLDM3NTQsMzc1NiwtMTkpO2tkZVszNzU2XT0zMzt5bGIoa2RlLDM3NTcsMzc1OSwtMTkpO2tkZVszNzU5XT0zMztrZGVbMzc2MF09LTE5O2tkZVszNzYxXT0tODc7eWxiKGtkZSwzNzYyLDM3NjQsLTE5KTt5bGIoa2RlLDM3NjQsMzc3MCwtODcpO2tkZVszNzcwXT0zMzt5bGIoa2RlLDM3NzEsMzc3MywtODcpO2tkZVszNzczXT0tMTk7eWxiKGtkZSwzNzc0LDM3NzYsMzMpO3lsYihrZGUsMzc3NiwzNzgxLC0xOSk7a2RlWzM3ODFdPTMzO2tkZVszNzgyXT0tODc7a2RlWzM3ODNdPTMzO3lsYihrZGUsMzc4NCwzNzkwLC04Nyk7eWxiKGtkZSwzNzkwLDM3OTIsMzMpO3lsYihrZGUsMzc5MiwzODAyLC04Nyk7eWxiKGtkZSwzODAyLDM4NjQsMzMpO3lsYihrZGUsMzg2NCwzODY2LC04Nyk7eWxiKGtkZSwzODY2LDM4NzIsMzMpO3lsYihrZGUsMzg3MiwzODgyLC04Nyk7eWxiKGtkZSwzODgyLDM4OTMsMzMpO2tkZVszODkzXT0tODc7a2RlWzM4OTRdPTMzO2tkZVszODk1XT0tODc7a2RlWzM4OTZdPTMzO2tkZVszODk3XT0tODc7eWxiKGtkZSwzODk4LDM5MDIsMzMpO3lsYihrZGUsMzkwMiwzOTA0LC04Nyk7eWxiKGtkZSwzOTA0LDM5MTIsLTE5KTtrZGVbMzkxMl09MzM7eWxiKGtkZSwzOTEzLDM5NDYsLTE5KTt5bGIoa2RlLDM5NDYsMzk1MywzMyk7eWxiKGtkZSwzOTUzLDM5NzMsLTg3KTtrZGVbMzk3M109MzM7eWxiKGtkZSwzOTc0LDM5ODAsLTg3KTt5bGIoa2RlLDM5ODAsMzk4NCwzMyk7eWxiKGtkZSwzOTg0LDM5OTAsLTg3KTtrZGVbMzk5MF09MzM7a2RlWzM5OTFdPS04NztrZGVbMzk5Ml09MzM7eWxiKGtkZSwzOTkzLDQwMTQsLTg3KTt5bGIoa2RlLDQwMTQsNDAxNywzMyk7eWxiKGtkZSw0MDE3LDQwMjQsLTg3KTtrZGVbNDAyNF09MzM7a2RlWzQwMjVdPS04Nzt5bGIoa2RlLDQwMjYsNDI1NiwzMyk7eWxiKGtkZSw0MjU2LDQyOTQsLTE5KTt5bGIoa2RlLDQyOTQsNDMwNCwzMyk7eWxiKGtkZSw0MzA0LDQzNDMsLTE5KTt5bGIoa2RlLDQzNDMsNDM1MiwzMyk7a2RlWzQzNTJdPS0xOTtrZGVbNDM1M109MzM7eWxiKGtkZSw0MzU0LDQzNTYsLTE5KTtrZGVbNDM1Nl09MzM7eWxiKGtkZSw0MzU3LDQzNjAsLTE5KTtrZGVbNDM2MF09MzM7a2RlWzQzNjFdPS0xOTtrZGVbNDM2Ml09MzM7eWxiKGtkZSw0MzYzLDQzNjUsLTE5KTtrZGVbNDM2NV09MzM7eWxiKGtkZSw0MzY2LDQzNzEsLTE5KTt5bGIoa2RlLDQzNzEsNDQxMiwzMyk7a2RlWzQ0MTJdPS0xOTtrZGVbNDQxM109MzM7a2RlWzQ0MTRdPS0xOTtrZGVbNDQxNV09MzM7a2RlWzQ0MTZdPS0xOTt5bGIoa2RlLDQ0MTcsNDQyOCwzMyk7a2RlWzQ0MjhdPS0xOTtrZGVbNDQyOV09MzM7a2RlWzQ0MzBdPS0xOTtrZGVbNDQzMV09MzM7a2RlWzQ0MzJdPS0xOTt5bGIoa2RlLDQ0MzMsNDQzNiwzMyk7eWxiKGtkZSw0NDM2LDQ0MzgsLTE5KTt5bGIoa2RlLDQ0MzgsNDQ0MSwzMyk7a2RlWzQ0NDFdPS0xOTt5bGIoa2RlLDQ0NDIsNDQ0NywzMyk7eWxiKGtkZSw0NDQ3LDQ0NTAsLTE5KTtrZGVbNDQ1MF09MzM7a2RlWzQ0NTFdPS0xOTtrZGVbNDQ1Ml09MzM7a2RlWzQ0NTNdPS0xOTtrZGVbNDQ1NF09MzM7a2RlWzQ0NTVdPS0xOTtrZGVbNDQ1Nl09MzM7a2RlWzQ0NTddPS0xOTt5bGIoa2RlLDQ0NTgsNDQ2MSwzMyk7eWxiKGtkZSw0NDYxLDQ0NjMsLTE5KTt5bGIoa2RlLDQ0NjMsNDQ2NiwzMyk7eWxiKGtkZSw0NDY2LDQ0NjgsLTE5KTtrZGVbNDQ2OF09MzM7a2RlWzQ0NjldPS0xOTt5bGIoa2RlLDQ0NzAsNDUxMCwzMyk7a2RlWzQ1MTBdPS0xOTt5bGIoa2RlLDQ1MTEsNDUyMCwzMyk7a2RlWzQ1MjBdPS0xOTt5bGIoa2RlLDQ1MjEsNDUyMywzMyk7a2RlWzQ1MjNdPS0xOTt5bGIoa2RlLDQ1MjQsNDUyNiwzMyk7eWxiKGtkZSw0NTI2LDQ1MjgsLTE5KTt5bGIoa2RlLDQ1MjgsNDUzNSwzMyk7eWxiKGtkZSw0NTM1LDQ1MzcsLTE5KTtrZGVbNDUzN109MzM7a2RlWzQ1MzhdPS0xOTtrZGVbNDUzOV09MzM7eWxiKGtkZSw0NTQwLDQ1NDcsLTE5KTt5bGIoa2RlLDQ1NDcsNDU4NywzMyk7a2RlWzQ1ODddPS0xOTt5bGIoa2RlLDQ1ODgsNDU5MiwzMyk7a2RlWzQ1OTJdPS0xOTt5bGIoa2RlLDQ1OTMsNDYwMSwzMyk7a2RlWzQ2MDFdPS0xOTt5bGIoa2RlLDQ2MDIsNzY4MCwzMyk7eWxiKGtkZSw3NjgwLDc4MzYsLTE5KTt5bGIoa2RlLDc4MzYsNzg0MCwzMyk7eWxiKGtkZSw3ODQwLDc5MzAsLTE5KTt5bGIoa2RlLDc5MzAsNzkzNiwzMyk7eWxiKGtkZSw3OTM2LDc5NTgsLTE5KTt5bGIoa2RlLDc5NTgsNzk2MCwzMyk7eWxiKGtkZSw3OTYwLDc5NjYsLTE5KTt5bGIoa2RlLDc5NjYsNzk2OCwzMyk7eWxiKGtkZSw3OTY4LDgwMDYsLTE5KTt5bGIoa2RlLDgwMDYsODAwOCwzMyk7eWxiKGtkZSw4MDA4LDgwMTQsLTE5KTt5bGIoa2RlLDgwMTQsODAxNiwzMyk7eWxiKGtkZSw4MDE2LDgwMjQsLTE5KTtrZGVbODAyNF09MzM7a2RlWzgwMjVdPS0xOTtrZGVbODAyNl09MzM7a2RlWzgwMjddPS0xOTtrZGVbODAyOF09MzM7a2RlWzgwMjldPS0xOTtrZGVbODAzMF09MzM7eWxiKGtkZSw4MDMxLDgwNjIsLTE5KTt5bGIoa2RlLDgwNjIsODA2NCwzMyk7eWxiKGtkZSw4MDY0LDgxMTcsLTE5KTtrZGVbODExN109MzM7eWxiKGtkZSw4MTE4LDgxMjUsLTE5KTtrZGVbODEyNV09MzM7a2RlWzgxMjZdPS0xOTt5bGIoa2RlLDgxMjcsODEzMCwzMyk7eWxiKGtkZSw4MTMwLDgxMzMsLTE5KTtrZGVbODEzM109MzM7eWxiKGtkZSw4MTM0LDgxNDEsLTE5KTt5bGIoa2RlLDgxNDEsODE0NCwzMyk7eWxiKGtkZSw4MTQ0LDgxNDgsLTE5KTt5bGIoa2RlLDgxNDgsODE1MCwzMyk7eWxiKGtkZSw4MTUwLDgxNTYsLTE5KTt5bGIoa2RlLDgxNTYsODE2MCwzMyk7eWxiKGtkZSw4MTYwLDgxNzMsLTE5KTt5bGIoa2RlLDgxNzMsODE3OCwzMyk7eWxiKGtkZSw4MTc4LDgxODEsLTE5KTtrZGVbODE4MV09MzM7eWxiKGtkZSw4MTgyLDgxODksLTE5KTt5bGIoa2RlLDgxODksODQwMCwzMyk7eWxiKGtkZSw4NDAwLDg0MTMsLTg3KTt5bGIoa2RlLDg0MTMsODQxNywzMyk7a2RlWzg0MTddPS04Nzt5bGIoa2RlLDg0MTgsODQ4NiwzMyk7a2RlWzg0ODZdPS0xOTt5bGIoa2RlLDg0ODcsODQ5MCwzMyk7eWxiKGtkZSw4NDkwLDg0OTIsLTE5KTt5bGIoa2RlLDg0OTIsODQ5NCwzMyk7a2RlWzg0OTRdPS0xOTt5bGIoa2RlLDg0OTUsODU3NiwzMyk7eWxiKGtkZSw4NTc2LDg1NzksLTE5KTt5bGIoa2RlLDg1NzksMTIyOTMsMzMpO2tkZVsxMjI5M109LTg3O2tkZVsxMjI5NF09MzM7a2RlWzEyMjk1XT0tMTk7eWxiKGtkZSwxMjI5NiwxMjMyMSwzMyk7eWxiKGtkZSwxMjMyMSwxMjMzMCwtMTkpO3lsYihrZGUsMTIzMzAsMTIzMzYsLTg3KTtrZGVbMTIzMzZdPTMzO3lsYihrZGUsMTIzMzcsMTIzNDIsLTg3KTt5bGIoa2RlLDEyMzQyLDEyMzUzLDMzKTt5bGIoa2RlLDEyMzUzLDEyNDM3LC0xOSk7eWxiKGtkZSwxMjQzNywxMjQ0MSwzMyk7eWxiKGtkZSwxMjQ0MSwxMjQ0MywtODcpO3lsYihrZGUsMTI0NDMsMTI0NDUsMzMpO3lsYihrZGUsMTI0NDUsMTI0NDcsLTg3KTt5bGIoa2RlLDEyNDQ3LDEyNDQ5LDMzKTt5bGIoa2RlLDEyNDQ5LDEyNTM5LC0xOSk7a2RlWzEyNTM5XT0zMzt5bGIoa2RlLDEyNTQwLDEyNTQzLC04Nyk7eWxiKGtkZSwxMjU0MywxMjU0OSwzMyk7eWxiKGtkZSwxMjU0OSwxMjU4OSwtMTkpO3lsYihrZGUsMTI1ODksMTk5NjgsMzMpO3lsYihrZGUsMTk5NjgsNDA4NzAsLTE5KTt5bGIoa2RlLDQwODcwLDQ0MDMyLDMzKTt5bGIoa2RlLDQ0MDMyLDU1MjA0LC0xOSk7eWxiKGtkZSw1NTIwNCxVamUsMzMpO3lsYihrZGUsNTczNDQsNjU1MzQsMzMpfVxuZnVuY3Rpb24gelpkKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKGEuaGIpcmV0dXJuO2EuaGI9dHJ1ZTtwbmQoYSwnZWNvcmUnKTtjb2QoYSwnZWNvcmUnKTtkb2QoYSxfdmUpO0duZChhLmZiLCdFJyk7R25kKGEuTCwnVCcpO0duZChhLlAsJ0snKTtHbmQoYS5QLCdWJyk7R25kKGEuY2IsJ0UnKTt3dGQoX0tkKGEuYiksYS5iYik7d3RkKF9LZChhLmEpLGEuUSk7d3RkKF9LZChhLm8pLGEucCk7d3RkKF9LZChhLnApLGEuUik7d3RkKF9LZChhLnEpLGEucCk7d3RkKF9LZChhLnYpLGEucSk7d3RkKF9LZChhLncpLGEuUik7d3RkKF9LZChhLkIpLGEuUSk7d3RkKF9LZChhLlIpLGEuUSk7d3RkKF9LZChhLlQpLGEuZWIpO3d0ZChfS2QoYS5VKSxhLlIpO3d0ZChfS2QoYS5WKSxhLmViKTt3dGQoX0tkKGEuVyksYS5iYik7d3RkKF9LZChhLmJiKSxhLmViKTt3dGQoX0tkKGEuZWIpLGEuUik7d3RkKF9LZChhLmRiKSxhLlIpO1huZChhLmIsYjUscXZlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuYiksMCksMzQpLGEuZSwnaUQnLG51bGwsMCwxLGI1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5iKSwxKSwxOCksYS5xLG51bGwsJ2VBdHRyaWJ1dGVUeXBlJywxLDEsYjUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSk7WG5kKGEuYSxhNSxudmUsZmFsc2UsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5hKSwwKSwzNCksYS5fLEN0ZSxudWxsLDAsMSxhNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO19uZChCRChxdWQoWktkKGEuYSksMSksMTgpLGEuYWIsbnVsbCwnZGV0YWlscycsMCwtMSxhNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuYSksMiksMTgpLGEuUSxCRChxdWQoWktkKGEuUSksMCksMTgpLCdlTW9kZWxFbGVtZW50JywwLDEsYTUsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmEpLDMpLDE4KSxhLlMsbnVsbCwnY29udGVudHMnLDAsLTEsYTUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLmEpLDQpLDE4KSxhLlMsbnVsbCwncmVmZXJlbmNlcycsMCwtMSxhNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1huZChhLm8sYzUsJ0VDbGFzcycsZmFsc2UsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5vKSwwKSwzNCksYS5lLCdhYnN0cmFjdCcsbnVsbCwwLDEsYzUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLm8pLDEpLDM0KSxhLmUsJ2ludGVyZmFjZScsbnVsbCwwLDEsYzUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLm8pLDIpLDE4KSxhLm8sbnVsbCwnZVN1cGVyVHlwZXMnLDAsLTEsYzUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UpO19uZChCRChxdWQoWktkKGEubyksMyksMTgpLGEuVCxCRChxdWQoWktkKGEuVCksMCksMTgpLCdlT3BlcmF0aW9ucycsMCwtMSxjNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEubyksNCksMTgpLGEuYixudWxsLCdlQWxsQXR0cmlidXRlcycsMCwtMSxjNSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLm8pLDUpLDE4KSxhLlcsbnVsbCwnZUFsbFJlZmVyZW5jZXMnLDAsLTEsYzUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5vKSw2KSwxOCksYS5XLG51bGwsJ2VSZWZlcmVuY2VzJywwLC0xLGM1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEubyksNyksMTgpLGEuYixudWxsLCdlQXR0cmlidXRlcycsMCwtMSxjNSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLm8pLDgpLDE4KSxhLlcsbnVsbCwnZUFsbENvbnRhaW5tZW50cycsMCwtMSxjNSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLm8pLDkpLDE4KSxhLlQsbnVsbCwnZUFsbE9wZXJhdGlvbnMnLDAsLTEsYzUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5vKSwxMCksMTgpLGEuYmIsbnVsbCwnZUFsbFN0cnVjdHVyYWxGZWF0dXJlcycsMCwtMSxjNSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLm8pLDExKSwxOCksYS5vLG51bGwsJ2VBbGxTdXBlclR5cGVzJywwLC0xLGM1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEubyksMTIpLDE4KSxhLmIsbnVsbCwnZUlEQXR0cmlidXRlJywwLDEsYzUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEubyksMTMpLDE4KSxhLmJiLEJEKHF1ZChaS2QoYS5iYiksNyksMTgpLCdlU3RydWN0dXJhbEZlYXR1cmVzJywwLC0xLGM1LGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5vKSwxNCksMTgpLGEuSCxudWxsLCdlR2VuZXJpY1N1cGVyVHlwZXMnLDAsLTEsYzUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO19uZChCRChxdWQoWktkKGEubyksMTUpLDE4KSxhLkgsbnVsbCwnZUFsbEdlbmVyaWNTdXBlclR5cGVzJywwLC0xLGM1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUpO2g9JG5kKEJEKHF1ZChXS2QoYS5vKSwwKSw1OSksYS5lLCdpc1N1cGVyVHlwZU9mJyk7RW5kKGgsYS5vLCdzb21lQ2xhc3MnKTskbmQoQkQocXVkKFdLZChhLm8pLDEpLDU5KSxhLkksJ2dldEZlYXR1cmVDb3VudCcpO2g9JG5kKEJEKHF1ZChXS2QoYS5vKSwyKSw1OSksYS5iYixkd2UpO0VuZChoLGEuSSwnZmVhdHVyZUlEJyk7aD0kbmQoQkQocXVkKFdLZChhLm8pLDMpLDU5KSxhLkksZXdlKTtFbmQoaCxhLmJiLGZ3ZSk7aD0kbmQoQkQocXVkKFdLZChhLm8pLDQpLDU5KSxhLmJiLGR3ZSk7RW5kKGgsYS5fLCdmZWF0dXJlTmFtZScpOyRuZChCRChxdWQoV0tkKGEubyksNSksNTkpLGEuSSwnZ2V0T3BlcmF0aW9uQ291bnQnKTtoPSRuZChCRChxdWQoV0tkKGEubyksNiksNTkpLGEuVCwnZ2V0RU9wZXJhdGlvbicpO0VuZChoLGEuSSwnb3BlcmF0aW9uSUQnKTtoPSRuZChCRChxdWQoV0tkKGEubyksNyksNTkpLGEuSSxnd2UpO0VuZChoLGEuVCxod2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5vKSw4KSw1OSksYS5ULCdnZXRPdmVycmlkZScpO0VuZChoLGEuVCxod2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5vKSw5KSw1OSksYS5ILCdnZXRGZWF0dXJlVHlwZScpO0VuZChoLGEuYmIsZndlKTtYbmQoYS5wLGQ1LHJ2ZSx0cnVlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEucCksMCksMzQpLGEuXywnaW5zdGFuY2VDbGFzc05hbWUnLG51bGwsMCwxLGQ1LGZhbHNlLHRydWUsdHJ1ZSx0cnVlLHRydWUsZmFsc2UpO2I9Tm5kKGEuTCk7Yz12WmQoKTt3dGQoKCFiLmQmJihiLmQ9bmV3IHhNZChqNSxiLDEpKSxiLmQpLGMpO1duZChCRChxdWQoWktkKGEucCksMSksMzQpLGIsJ2luc3RhbmNlQ2xhc3MnLGQ1LHRydWUsdHJ1ZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLnApLDIpLDM0KSxhLk0saXdlLG51bGwsMCwxLGQ1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLHRydWUpO1ZuZChCRChxdWQoWktkKGEucCksMyksMzQpLGEuXywnaW5zdGFuY2VUeXBlTmFtZScsbnVsbCwwLDEsZDUsZmFsc2UsdHJ1ZSx0cnVlLHRydWUsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5wKSw0KSwxOCksYS5VLEJEKHF1ZChaS2QoYS5VKSwzKSwxOCksJ2VQYWNrYWdlJywwLDEsZDUsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLnApLDUpLDE4KSxhLmRiLG51bGwsandlLDAsLTEsZDUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5wKSwwKSw1OSksYS5lLGt3ZSk7RW5kKGgsYS5NLEpoZSk7JG5kKEJEKHF1ZChXS2QoYS5wKSwxKSw1OSksYS5JLCdnZXRDbGFzc2lmaWVySUQnKTtYbmQoYS5xLGY1LCdFRGF0YVR5cGUnLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEucSksMCksMzQpLGEuZSwnc2VyaWFsaXphYmxlJyxrc2UsMCwxLGY1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7WG5kKGEudixoNSwnRUVudW0nLGZhbHNlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEudiksMCksMTgpLGEudyxCRChxdWQoWktkKGEudyksMyksMTgpLCdlTGl0ZXJhbHMnLDAsLTEsaDUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtoPSRuZChCRChxdWQoV0tkKGEudiksMCksNTkpLGEudyxsd2UpO0VuZChoLGEuXyxmdWUpO2g9JG5kKEJEKHF1ZChXS2QoYS52KSwxKSw1OSksYS53LGx3ZSk7RW5kKGgsYS5JLEJ0ZSk7aD0kbmQoQkQocXVkKFdLZChhLnYpLDIpLDU5KSxhLncsJ2dldEVFbnVtTGl0ZXJhbEJ5TGl0ZXJhbCcpO0VuZChoLGEuXywnbGl0ZXJhbCcpO1huZChhLncsZzUsc3ZlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEudyksMCksMzQpLGEuSSxCdGUsbnVsbCwwLDEsZzUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLncpLDEpLDM0KSxhLkEsJ2luc3RhbmNlJyxudWxsLDAsMSxnNSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS53KSwyKSwzNCksYS5fLCdsaXRlcmFsJyxudWxsLDAsMSxnNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO19uZChCRChxdWQoWktkKGEudyksMyksMTgpLGEudixCRChxdWQoWktkKGEudiksMCksMTgpLCdlRW51bScsMCwxLGc1LHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1huZChhLkIsaTUsJ0VGYWN0b3J5JyxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLkIpLDApLDE4KSxhLlUsQkQocXVkKFpLZChhLlUpLDIpLDE4KSwnZVBhY2thZ2UnLDEsMSxpNSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5CKSwwKSw1OSksYS5TLCdjcmVhdGUnKTtFbmQoaCxhLm8sJ2VDbGFzcycpO2g9JG5kKEJEKHF1ZChXS2QoYS5CKSwxKSw1OSksYS5NLCdjcmVhdGVGcm9tU3RyaW5nJyk7RW5kKGgsYS5xLCdlRGF0YVR5cGUnKTtFbmQoaCxhLl8sJ2xpdGVyYWxWYWx1ZScpO2g9JG5kKEJEKHF1ZChXS2QoYS5CKSwyKSw1OSksYS5fLCdjb252ZXJ0VG9TdHJpbmcnKTtFbmQoaCxhLnEsJ2VEYXRhVHlwZScpO0VuZChoLGEuTSwnaW5zdGFuY2VWYWx1ZScpO1huZChhLlEsazUsYnRlLHRydWUsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5RKSwwKSwxOCksYS5hLEJEKHF1ZChaS2QoYS5hKSwyKSwxOCksJ2VBbm5vdGF0aW9ucycsMCwtMSxrNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5RKSwwKSw1OSksYS5hLCdnZXRFQW5ub3RhdGlvbicpO0VuZChoLGEuXyxDdGUpO1huZChhLlIsbDUsY3RlLHRydWUsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5SKSwwKSwzNCksYS5fLGZ1ZSxudWxsLDAsMSxsNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1huZChhLlMsbTUsJ0VPYmplY3QnLGZhbHNlLGZhbHNlLHRydWUpOyRuZChCRChxdWQoV0tkKGEuUyksMCksNTkpLGEubywnZUNsYXNzJyk7JG5kKEJEKHF1ZChXS2QoYS5TKSwxKSw1OSksYS5lLCdlSXNQcm94eScpOyRuZChCRChxdWQoV0tkKGEuUyksMiksNTkpLGEuWCwnZVJlc291cmNlJyk7JG5kKEJEKHF1ZChXS2QoYS5TKSwzKSw1OSksYS5TLCdlQ29udGFpbmVyJyk7JG5kKEJEKHF1ZChXS2QoYS5TKSw0KSw1OSksYS5iYiwnZUNvbnRhaW5pbmdGZWF0dXJlJyk7JG5kKEJEKHF1ZChXS2QoYS5TKSw1KSw1OSksYS5XLCdlQ29udGFpbm1lbnRGZWF0dXJlJyk7aD0kbmQoQkQocXVkKFdLZChhLlMpLDYpLDU5KSxudWxsLCdlQ29udGVudHMnKTtiPU5uZChhLmZiKTtjPU5uZChhLlMpO3d0ZCgoIWIuZCYmKGIuZD1uZXcgeE1kKGo1LGIsMSkpLGIuZCksYyk7ZT14SWQoaCxiLG51bGwpOyEhZSYmZS5GaSgpO2g9JG5kKEJEKHF1ZChXS2QoYS5TKSw3KSw1OSksbnVsbCwnZUFsbENvbnRlbnRzJyk7Yj1ObmQoYS5jYik7Yz1ObmQoYS5TKTt3dGQoKCFiLmQmJihiLmQ9bmV3IHhNZChqNSxiLDEpKSxiLmQpLGMpO2Y9eElkKGgsYixudWxsKTshIWYmJmYuRmkoKTtoPSRuZChCRChxdWQoV0tkKGEuUyksOCksNTkpLG51bGwsJ2VDcm9zc1JlZmVyZW5jZXMnKTtiPU5uZChhLmZiKTtjPU5uZChhLlMpO3d0ZCgoIWIuZCYmKGIuZD1uZXcgeE1kKGo1LGIsMSkpLGIuZCksYyk7Zz14SWQoaCxiLG51bGwpOyEhZyYmZy5GaSgpO2g9JG5kKEJEKHF1ZChXS2QoYS5TKSw5KSw1OSksYS5NLCdlR2V0Jyk7RW5kKGgsYS5iYixmd2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5TKSwxMCksNTkpLGEuTSwnZUdldCcpO0VuZChoLGEuYmIsZndlKTtFbmQoaCxhLmUsJ3Jlc29sdmUnKTtoPSRuZChCRChxdWQoV0tkKGEuUyksMTEpLDU5KSxudWxsLCdlU2V0Jyk7RW5kKGgsYS5iYixmd2UpO0VuZChoLGEuTSwnbmV3VmFsdWUnKTtoPSRuZChCRChxdWQoV0tkKGEuUyksMTIpLDU5KSxhLmUsJ2VJc1NldCcpO0VuZChoLGEuYmIsZndlKTtoPSRuZChCRChxdWQoV0tkKGEuUyksMTMpLDU5KSxudWxsLCdlVW5zZXQnKTtFbmQoaCxhLmJiLGZ3ZSk7aD0kbmQoQkQocXVkKFdLZChhLlMpLDE0KSw1OSksYS5NLCdlSW52b2tlJyk7RW5kKGgsYS5ULGh3ZSk7Yj1ObmQoYS5mYik7Yz12WmQoKTt3dGQoKCFiLmQmJihiLmQ9bmV3IHhNZChqNSxiLDEpKSxiLmQpLGMpO0ZuZChoLGIsJ2FyZ3VtZW50cycpO0NuZChoLGEuSyk7WG5kKGEuVCxuNSx1dmUsZmFsc2UsZmFsc2UsdHJ1ZSk7X25kKEJEKHF1ZChaS2QoYS5UKSwwKSwxOCksYS5vLEJEKHF1ZChaS2QoYS5vKSwzKSwxOCksbXdlLDAsMSxuNSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLlQpLDEpLDE4KSxhLmRiLG51bGwsandlLDAsLTEsbjUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuVCksMiksMTgpLGEuVixCRChxdWQoWktkKGEuViksMCksMTgpLCdlUGFyYW1ldGVycycsMCwtMSxuNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuVCksMyksMTgpLGEucCxudWxsLCdlRXhjZXB0aW9ucycsMCwtMSxuNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5UKSw0KSwxOCksYS5ILG51bGwsJ2VHZW5lcmljRXhjZXB0aW9ucycsMCwtMSxuNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7JG5kKEJEKHF1ZChXS2QoYS5UKSwwKSw1OSksYS5JLGd3ZSk7aD0kbmQoQkQocXVkKFdLZChhLlQpLDEpLDU5KSxhLmUsJ2lzT3ZlcnJpZGVPZicpO0VuZChoLGEuVCwnc29tZU9wZXJhdGlvbicpO1huZChhLlUsbzUsJ0VQYWNrYWdlJyxmYWxzZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLlUpLDApLDM0KSxhLl8sJ25zVVJJJyxudWxsLDAsMSxvNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuVSksMSksMzQpLGEuXywnbnNQcmVmaXgnLG51bGwsMCwxLG81LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5VKSwyKSwxOCksYS5CLEJEKHF1ZChaS2QoYS5CKSwwKSwxOCksJ2VGYWN0b3J5SW5zdGFuY2UnLDEsMSxvNSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuVSksMyksMTgpLGEucCxCRChxdWQoWktkKGEucCksNCksMTgpLCdlQ2xhc3NpZmllcnMnLDAsLTEsbzUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuVSksNCksMTgpLGEuVSxCRChxdWQoWktkKGEuVSksNSksMTgpLCdlU3VicGFja2FnZXMnLDAsLTEsbzUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuVSksNSksMTgpLGEuVSxCRChxdWQoWktkKGEuVSksNCksMTgpLCdlU3VwZXJQYWNrYWdlJywwLDEsbzUsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtoPSRuZChCRChxdWQoV0tkKGEuVSksMCksNTkpLGEucCwnZ2V0RUNsYXNzaWZpZXInKTtFbmQoaCxhLl8sZnVlKTtYbmQoYS5WLHA1LHZ2ZSxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLlYpLDApLDE4KSxhLlQsQkQocXVkKFpLZChhLlQpLDIpLDE4KSwnZU9wZXJhdGlvbicsMCwxLHA1LHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1huZChhLlcscTUsd3ZlLGZhbHNlLGZhbHNlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuVyksMCksMzQpLGEuZSwnY29udGFpbm1lbnQnLG51bGwsMCwxLHE1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5XKSwxKSwzNCksYS5lLCdjb250YWluZXInLG51bGwsMCwxLHE1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuVyksMiksMzQpLGEuZSwncmVzb2x2ZVByb3hpZXMnLGtzZSwwLDEscTUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLlcpLDMpLDE4KSxhLlcsbnVsbCwnZU9wcG9zaXRlJywwLDEscTUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLlcpLDQpLDE4KSxhLm8sbnVsbCwnZVJlZmVyZW5jZVR5cGUnLDEsMSxxNSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLlcpLDUpLDE4KSxhLmIsbnVsbCwnZUtleXMnLDAsLTEscTUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtYbmQoYS5iYix0NSxwdmUsdHJ1ZSxmYWxzZSx0cnVlKTtWbmQoQkQocXVkKFpLZChhLmJiKSwwKSwzNCksYS5lLCdjaGFuZ2VhYmxlJyxrc2UsMCwxLHQ1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5iYiksMSksMzQpLGEuZSwndm9sYXRpbGUnLG51bGwsMCwxLHQ1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5iYiksMiksMzQpLGEuZSwndHJhbnNpZW50JyxudWxsLDAsMSx0NSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuYmIpLDMpLDM0KSxhLl8sJ2RlZmF1bHRWYWx1ZUxpdGVyYWwnLG51bGwsMCwxLHQ1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5iYiksNCksMzQpLGEuTSxpd2UsbnVsbCwwLDEsdDUsdHJ1ZSx0cnVlLGZhbHNlLGZhbHNlLHRydWUsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5iYiksNSksMzQpLGEuZSwndW5zZXR0YWJsZScsbnVsbCwwLDEsdDUsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmJiKSw2KSwzNCksYS5lLCdkZXJpdmVkJyxudWxsLDAsMSx0NSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO19uZChCRChxdWQoWktkKGEuYmIpLDcpLDE4KSxhLm8sQkQocXVkKFpLZChhLm8pLDEzKSwxOCksbXdlLDAsMSx0NSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTskbmQoQkQocXVkKFdLZChhLmJiKSwwKSw1OSksYS5JLGV3ZSk7aD0kbmQoQkQocXVkKFdLZChhLmJiKSwxKSw1OSksbnVsbCwnZ2V0Q29udGFpbmVyQ2xhc3MnKTtiPU5uZChhLkwpO2M9dlpkKCk7d3RkKCghYi5kJiYoYi5kPW5ldyB4TWQoajUsYiwxKSksYi5kKSxjKTtkPXhJZChoLGIsbnVsbCk7ISFkJiZkLkZpKCk7WG5kKGEuZWIsdjUsb3ZlLHRydWUsZmFsc2UsdHJ1ZSk7Vm5kKEJEKHF1ZChaS2QoYS5lYiksMCksMzQpLGEuZSwnb3JkZXJlZCcsa3NlLDAsMSx2NSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZWIpLDEpLDM0KSxhLmUsJ3VuaXF1ZScsa3NlLDAsMSx2NSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZWIpLDIpLDM0KSxhLkksJ2xvd2VyQm91bmQnLG51bGwsMCwxLHY1LGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5lYiksMyksMzQpLGEuSSwndXBwZXJCb3VuZCcsJzEnLDAsMSx2NSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UpO1ZuZChCRChxdWQoWktkKGEuZWIpLDQpLDM0KSxhLmUsJ21hbnknLG51bGwsMCwxLHY1LHRydWUsdHJ1ZSxmYWxzZSxmYWxzZSx0cnVlLHRydWUpO1ZuZChCRChxdWQoWktkKGEuZWIpLDUpLDM0KSxhLmUsJ3JlcXVpcmVkJyxudWxsLDAsMSx2NSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsdHJ1ZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLmViKSw2KSwxOCksYS5wLG51bGwsJ2VUeXBlJywwLDEsdjUsZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlLHRydWUsdHJ1ZSxmYWxzZSk7X25kKEJEKHF1ZChaS2QoYS5lYiksNyksMTgpLGEuSCxudWxsLCdlR2VuZXJpY1R5cGUnLDAsMSx2NSxmYWxzZSx0cnVlLHRydWUsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtYbmQoYS5hYixDSywnRVN0cmluZ1RvU3RyaW5nTWFwRW50cnknLGZhbHNlLGZhbHNlLGZhbHNlKTtWbmQoQkQocXVkKFpLZChhLmFiKSwwKSwzNCksYS5fLCdrZXknLG51bGwsMCwxLENLLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsdHJ1ZSxmYWxzZSk7Vm5kKEJEKHF1ZChaS2QoYS5hYiksMSksMzQpLGEuXyxCdGUsbnVsbCwwLDEsQ0ssZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlLGZhbHNlKTtYbmQoYS5ILGo1LHR2ZSxmYWxzZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLkgpLDApLDE4KSxhLkgsbnVsbCwnZVVwcGVyQm91bmQnLDAsMSxqNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuSCksMSksMTgpLGEuSCxudWxsLCdlVHlwZUFyZ3VtZW50cycsMCwtMSxqNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuSCksMiksMTgpLGEucCxudWxsLCdlUmF3VHlwZScsMSwxLGo1LHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlKTtfbmQoQkQocXVkKFpLZChhLkgpLDMpLDE4KSxhLkgsbnVsbCwnZUxvd2VyQm91bmQnLDAsMSxqNSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO19uZChCRChxdWQoWktkKGEuSCksNCksMTgpLGEuZGIsbnVsbCwnZVR5cGVQYXJhbWV0ZXInLDAsMSxqNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtfbmQoQkQocXVkKFpLZChhLkgpLDUpLDE4KSxhLnAsbnVsbCwnZUNsYXNzaWZpZXInLDAsMSxqNSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO2g9JG5kKEJEKHF1ZChXS2QoYS5IKSwwKSw1OSksYS5lLGt3ZSk7RW5kKGgsYS5NLEpoZSk7WG5kKGEuZGIsdTUseHZlLGZhbHNlLGZhbHNlLHRydWUpO19uZChCRChxdWQoWktkKGEuZGIpLDApLDE4KSxhLkgsbnVsbCwnZUJvdW5kcycsMCwtMSx1NSxmYWxzZSxmYWxzZSx0cnVlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UpO1puZChhLmMsYkosJ0VCaWdEZWNpbWFsJyx0cnVlKTtabmQoYS5kLGNKLCdFQmlnSW50ZWdlcicsdHJ1ZSk7Wm5kKGEuZSxzYmIsJ0VCb29sZWFuJyx0cnVlKTtabmQoYS5mLHdJLCdFQm9vbGVhbk9iamVjdCcsdHJ1ZSk7Wm5kKGEuaSxTRCwnRUJ5dGUnLHRydWUpO1puZChhLmcsR0MoU0QsMSksJ0VCeXRlQXJyYXknLHRydWUpO1puZChhLmoseEksJ0VCeXRlT2JqZWN0Jyx0cnVlKTtabmQoYS5rLFRELCdFQ2hhcicsdHJ1ZSk7Wm5kKGEubix5SSwnRUNoYXJhY3Rlck9iamVjdCcsdHJ1ZSk7Wm5kKGEuciwkSiwnRURhdGUnLHRydWUpO1puZChhLnMsTzQsJ0VEaWFnbm9zdGljQ2hhaW4nLGZhbHNlKTtabmQoYS50LFVELCdFRG91YmxlJyx0cnVlKTtabmQoYS51LEJJLCdFRG91YmxlT2JqZWN0Jyx0cnVlKTtabmQoYS5mYixUNCwnRUVMaXN0JyxmYWxzZSk7Wm5kKGEuQSxVNCwnRUVudW1lcmF0b3InLGZhbHNlKTtabmQoYS5DLE85LCdFRmVhdHVyZU1hcCcsZmFsc2UpO1puZChhLkQsRTksJ0VGZWF0dXJlTWFwRW50cnknLGZhbHNlKTtabmQoYS5GLFZELCdFRmxvYXQnLHRydWUpO1puZChhLkcsRkksJ0VGbG9hdE9iamVjdCcsdHJ1ZSk7Wm5kKGEuSSxXRCwnRUludCcsdHJ1ZSk7Wm5kKGEuSixKSSwnRUludGVnZXJPYmplY3QnLHRydWUpO1puZChhLkwsQUksJ0VKYXZhQ2xhc3MnLHRydWUpO1puZChhLk0sU0ksJ0VKYXZhT2JqZWN0Jyx0cnVlKTtabmQoYS5OLFhELCdFTG9uZycsdHJ1ZSk7Wm5kKGEuTyxNSSwnRUxvbmdPYmplY3QnLHRydWUpO1puZChhLlAsREssJ0VNYXAnLGZhbHNlKTtabmQoYS5YLHY4LCdFUmVzb3VyY2UnLGZhbHNlKTtabmQoYS5ZLHU4LCdFUmVzb3VyY2VTZXQnLGZhbHNlKTtabmQoYS5aLHJiYiwnRVNob3J0Jyx0cnVlKTtabmQoYS4kLFVJLCdFU2hvcnRPYmplY3QnLHRydWUpO1puZChhLl8sWkksJ0VTdHJpbmcnLHRydWUpO1puZChhLmNiLFg0LCdFVHJlZUl0ZXJhdG9yJyxmYWxzZSk7Wm5kKGEuSyxWNCwnRUludm9jYXRpb25UYXJnZXRFeGNlcHRpb24nLGZhbHNlKTtSbmQoYSxfdmUpfVxudmFyIEpoZT0nb2JqZWN0JyxLaGU9J2Jvb2xlYW4nLExoZT0nbnVtYmVyJyxNaGU9J3N0cmluZycsTmhlPSdmdW5jdGlvbicsT2hlPTIxNDc0ODM2NDcsUGhlPSdqYXZhLmxhbmcnLFFoZT17MzoxfSxSaGU9J2NvbS5nb29nbGUuY29tbW9uLmJhc2UnLFNoZT0nLCAnLFRoZT0nJXMgKCVzKSBtdXN0IG5vdCBiZSBuZWdhdGl2ZScsVWhlPXszOjEsNDoxLDU6MX0sVmhlPSduZWdhdGl2ZSBzaXplOiAnLFdoZT0nT3B0aW9uYWwub2YoJyxYaGU9J251bGwnLFloZT17MTk4OjEsNDc6MX0sWmhlPSdjb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0JywkaGU9ezE5ODoxLDQ3OjEsMTI1OjF9LF9oZT17MjI0OjEsMzoxfSxhaWU9ezQ3OjF9LGJpZT0namF2YS51dGlsJyxjaWU9ezgzOjF9LGRpZT17MjA6MSwyODoxLDE0OjF9LGVpZT0xOTY1LGZpZT17MjA6MSwyODoxLDE0OjEsMjE6MX0sZ2llPXs4MzoxLDE3MToxLDE2MToxfSxoaWU9ezIwOjEsMjg6MSwxNDoxLDIxOjEsODQ6MX0saWllPXsyMDoxLDI4OjEsMTQ6MSwyNzE6MSwyMToxLDg0OjF9LGppZT17NDc6MSwxMjU6MX0sa2llPXszNDU6MSw0MjoxfSxsaWU9J0Fic3RyYWN0TWFwRW50cnknLG1pZT0nZXhwZWN0ZWRWYWx1ZXNQZXJLZXknLG5pZT17MzoxLDY6MSw0OjEsNToxfSxvaWU9MTYzODQscGllPXsxNjQ6MX0scWllPXszODoxfSxyaWU9e2w6NDE5NDMwMyxtOjQxOTQzMDMsaDo1MjQyODd9LHNpZT17MTk2OjF9LHRpZT17MjQ1OjEsMzoxLDM1OjF9LHVpZT0ncmFuZ2UgdW5ib3VuZGVkIG9uIHRoaXMgc2lkZScsdmllPXsyMDoxfSx3aWU9ezIwOjEsMTQ6MX0seGllPXszOjEsMjA6MSwyODoxLDE0OjF9LHlpZT17MTUyOjEsMzoxLDIwOjEsMjg6MSwxNDoxLDE1OjEsNTQ6MX0semllPXszOjEsNDoxLDU6MSwxNjU6MX0sQWllPXszOjEsODM6MX0sQmllPXsyMDoxLDE0OjEsMjE6MX0sQ2llPXszOjEsMjA6MSwyODoxLDE0OjEsMjE6MX0sRGllPXsyMDoxLDE0OjEsMjE6MSw4NDoxfSxFaWU9NDYxODQ1OTA3LEZpZT0tODYyMDQ4OTQzLEdpZT17MzoxLDY6MSw0OjEsNToxLDE2NToxfSxIaWU9J2V4cGVjdGVkU2l6ZScsSWllPTEwNzM3NDE4MjQsSmllPSdpbml0aWFsQXJyYXlTaXplJyxLaWU9ezM6MSw2OjEsNDoxLDk6MSw1OjF9LExpZT17MjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxfSxNaWU9J2FycmF5U2l6ZScsTmllPXsyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNTQ6MX0sT2llPXs0NToxfSxQaWU9ezM2NToxfSxRaWU9MS4wRS00LFJpZT0tMjE0NzQ4MzY0OCxTaWU9J19fbm9pbml0X18nLFRpZT17MzoxLDEwMjoxLDYwOjEsNzg6MX0sVWllPSdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudC5pbXBsJyxWaWU9J1N0cmluZycsV2llPSdjb20uZ29vZ2xlLmd3dC5jb3JlLmNsaWVudCcsWGllPSdhbm9ueW1vdXMnLFlpZT0nZm5TdGFjaycsWmllPSdVbmtub3duJywkaWU9ezE5NToxLDM6MSw0OjF9LF9pZT0xMDAwLGFqZT02NTUzNSxiamU9J0phbnVhcnknLGNqZT0nRmVicnVhcnknLGRqZT0nTWFyY2gnLGVqZT0nQXByaWwnLGZqZT0nTWF5JyxnamU9J0p1bmUnLGhqZT0nSnVseScsaWplPSdBdWd1c3QnLGpqZT0nU2VwdGVtYmVyJyxramU9J09jdG9iZXInLGxqZT0nTm92ZW1iZXInLG1qZT0nRGVjZW1iZXInLG5qZT0xOTAwLG9qZT17NDg6MSwzOjEsNDoxfSxwamU9J0JlZm9yZSBDaHJpc3QnLHFqZT0nQW5ubyBEb21pbmknLHJqZT0nU3VuZGF5JyxzamU9J01vbmRheScsdGplPSdUdWVzZGF5Jyx1amU9J1dlZG5lc2RheScsdmplPSdUaHVyc2RheScsd2plPSdGcmlkYXknLHhqZT0nU2F0dXJkYXknLHlqZT0nY29tLmdvb2dsZS5nd3QuaTE4bi5zaGFyZWQnLHpqZT0nRGF0ZVRpbWVGb3JtYXQnLEFqZT0nY29tLmdvb2dsZS5nd3QuaTE4bi5jbGllbnQnLEJqZT0nRGVmYXVsdERhdGVUaW1lRm9ybWF0SW5mbycsQ2plPXszOjEsNDoxLDM1OjEsMTk5OjF9LERqZT0nY29tLmdvb2dsZS5nd3QuanNvbi5jbGllbnQnLEVqZT00MTk0MzAzLEZqZT0xMDQ4NTc1LEdqZT01MjQyODgsSGplPTQxOTQzMDQsSWplPTE3NTkyMTg2MDQ0NDE2LEpqZT0xMDAwMDAwMDAwLEtqZT0tMTc1OTIxODYwNDQ0MTYsTGplPSdqYXZhLmlvJyxNamU9ezM6MSwxMDI6MSw3MzoxLDYwOjEsNzg6MX0sTmplPXszOjEsMjg5OjEsNzg6MX0sT2plPSdGb3IgaW5wdXQgc3RyaW5nOiBcIicsUGplPUluZmluaXR5LFFqZT0tSW5maW5pdHksUmplPTQwOTYsU2plPXszOjEsNDoxLDM2NDoxfSxUamU9NjU1MzYsVWplPTU1Mjk2LFZqZT17MTA0OjEsMzoxLDQ6MX0sV2plPTEwMDAwMCxYamU9MC4zMDEwMjk5OTU2NjM5ODEyLFlqZT00Mjk0OTY3Mjk1LFpqZT00Mjk0OTY3Mjk2LCRqZT0nMC4wJyxfamU9ezQyOjF9LGFrZT17MzoxLDQ6MSwyMDoxLDI4OjEsNTI6MSwxMjoxLDE0OjEsMTU6MSw1NDoxfSxia2U9ezM6MSwyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNTQ6MX0sY2tlPXsyMDoxLDE0OjEsMTU6MX0sZGtlPXszOjEsNjI6MX0sZWtlPXsxODI6MX0sZmtlPXszOjEsNDoxLDgzOjF9LGdrZT17MzoxLDQ6MSwyMDoxLDI4OjEsMTQ6MSw1MzoxLDIxOjF9LGhrZT0nZGVsZXRlJyxpa2U9MS40OTAxMTYxMTkzODQ3NjU2RS04LGprZT0xLjExMDIyMzAyNDYyNTE1NjVFLTE2LGtrZT0xNTUyNTQ4NSxsa2U9NS45NjA0NjQ0Nzc1MzkwNjI1RS04LG1rZT0xNjc3NzIxNixua2U9MTY3NzcyMTUsb2tlPScsIGxlbmd0aDogJyxwa2U9ezM6MSw0OjEsMjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDU0OjF9LHFrZT17MzoxLDM1OjEsMjI6MSwyOTc6MX0scmtlPSdqYXZhLnV0aWwuZnVuY3Rpb24nLHNrZT0namF2YS51dGlsLmxvZ2dpbmcnLHRrZT17MzoxLDQ6MSw1OjEsODQyOjF9LHVrZT0ndW5kZWZpbmVkJyx2a2U9J2phdmEudXRpbC5zdHJlYW0nLHdrZT17NTI1OjEsNjcwOjF9LHhrZT0nZnJvbUluZGV4OiAnLHlrZT0nID4gdG9JbmRleDogJyx6a2U9JywgdG9JbmRleDogJyxBa2U9J0luZGV4OiAnLEJrZT0nLCBTaXplOiAnLENrZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5jb21tb24nLERrZT17NjI6MX0sRWtlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmNvbW1vbi5jb21wYWN0aW9uJyxGa2U9J1NjYW5saW5lL0V2ZW50SGFuZGxlcicsR2tlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmNvbW1vbi5jb21wYWN0aW9uLm9uZWQnLEhrZT0nQ05vZGUgYmVsb25ncyB0byBhbm90aGVyIENHcm91cC4nLElrZT0nSVNwYWNpbmdzSGFuZGxlci8xJyxKa2U9J1RoZSAnLEtrZT0nIGluc3RhbmNlIGhhcyBiZWVuIGZpbmlzaGVkIGFscmVhZHkuJyxMa2U9J1RoZSBkaXJlY3Rpb24gJyxNa2U9JyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBDR3JhcGggaW5zdGFuY2UuJyxOa2U9J09uZURpbWVuc2lvbmFsQ29tcGFjdG9yJyxPa2U9J09uZURpbWVuc2lvbmFsQ29tcGFjdG9yL2xhbWJkYSQwJFR5cGUnLFBrZT0nUXVhZHJ1cGxldCcsUWtlPSdTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdG9yJyxSa2U9J1NjYW5saW5lQ29uc3RyYWludENhbGN1bGF0b3IvQ29uc3RyYWludHNTY2FubGluZUhhbmRsZXInLFNrZT0nU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRvci9Db25zdHJhaW50c1NjYW5saW5lSGFuZGxlci9sYW1iZGEkMCRUeXBlJyxUa2U9J1NjYW5saW5lQ29uc3RyYWludENhbGN1bGF0b3IvVGltZXN0YW1wJyxVa2U9J1NjYW5saW5lQ29uc3RyYWludENhbGN1bGF0b3IvbGFtYmRhJDAkVHlwZScsVmtlPXsxNjk6MSw0NToxfSxXa2U9J29yZy5lY2xpcHNlLmVsay5hbGcuY29tbW9uLmNvbXBhY3Rpb24ub3B0aW9ucycsWGtlPSdvcmcuZWNsaXBzZS5lbGsuY29yZS5kYXRhJyxZa2U9J29yZy5lY2xpcHNlLmVsay5wb2x5b21pbm8udHJhdmVyc2FsU3RyYXRlZ3knLFprZT0nb3JnLmVjbGlwc2UuZWxrLnBvbHlvbWluby5sb3dMZXZlbFNvcnQnLCRrZT0nb3JnLmVjbGlwc2UuZWxrLnBvbHlvbWluby5oaWdoTGV2ZWxTb3J0Jyxfa2U9J29yZy5lY2xpcHNlLmVsay5wb2x5b21pbm8uZmlsbCcsYWxlPXsxMzA6MX0sYmxlPSdwb2x5b21pbm8nLGNsZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5jb21tb24ubmV0d29ya3NpbXBsZXgnLGRsZT17MTc3OjEsMzoxLDQ6MX0sZWxlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmNvbW1vbi5ub2Rlc3BhY2luZycsZmxlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmNvbW1vbi5ub2Rlc3BhY2luZy5jZWxsc3lzdGVtJyxnbGU9J0NFTlRFUicsaGxlPXsyMTI6MSwzMjY6MX0saWxlPXszOjEsNDoxLDU6MSw1OTU6MX0samxlPSdMRUZUJyxrbGU9J1JJR0hUJyxsbGU9J1ZlcnRpY2FsIGFsaWdubWVudCBjYW5ub3QgYmUgbnVsbCcsbWxlPSdCT1RUT00nLG5sZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5jb21tb24ubm9kZXNwYWNpbmcuaW50ZXJuYWwnLG9sZT0nVU5ERUZJTkVEJyxwbGU9MC4wMSxxbGU9J29yZy5lY2xpcHNlLmVsay5hbGcuY29tbW9uLm5vZGVzcGFjaW5nLmludGVybmFsLmFsZ29yaXRobScscmxlPSdMYWJlbFBsYWNlci9sYW1iZGEkMCRUeXBlJyxzbGU9J0xhYmVsUGxhY2VyL2xhbWJkYSQxJFR5cGUnLHRsZT0ncG9ydFJhdGlvT3JQb3NpdGlvbicsdWxlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmNvbW1vbi5vdmVybGFwcycsdmxlPSdET1dOJyx3bGU9J29yZy5lY2xpcHNlLmVsay5hbGcuY29tbW9uLnBvbHlvbWlubycseGxlPSdOT1JUSCcseWxlPSdFQVNUJyx6bGU9J1NPVVRIJyxBbGU9J1dFU1QnLEJsZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5jb21tb24ucG9seW9taW5vLnN0cnVjdHVyZXMnLENsZT0nRGlyZWN0aW9uJyxEbGU9J0dyaWQgaXMgb25seSBvZiBzaXplICcsRWxlPScuIFJlcXVlc3RlZCBwb2ludCAoJyxGbGU9JykgaXMgb3V0IG9mIGJvdW5kcy4nLEdsZT0nIEdpdmVuIGNlbnRlciBiYXNlZCBjb29yZGluYXRlcyB3ZXJlICgnLEhsZT0nb3JnLmVjbGlwc2UuZWxrLmdyYXBoLnByb3BlcnRpZXMnLElsZT0nSVByb3BlcnR5SG9sZGVyJyxKbGU9ezM6MSw5NDoxLDEzNDoxfSxLbGU9J29yZy5lY2xpcHNlLmVsay5hbGcuY29tbW9uLnNwb3JlJyxMbGU9J29yZy5lY2xpcHNlLmVsay5hbGcuY29tbW9uLnV0aWxzJyxNbGU9ezIwOToxfSxObGU9J29yZy5lY2xpcHNlLmVsay5jb3JlJyxPbGU9J0Nvbm5lY3RlZCBDb21wb25lbnRzIENvbXBhY3Rpb24nLFBsZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5kaXNjbycsUWxlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmRpc2NvLmdyYXBoJyxSbGU9J29yZy5lY2xpcHNlLmVsay5hbGcuZGlzY28ub3B0aW9ucycsU2xlPSdDb21wYWN0aW9uU3RyYXRlZ3knLFRsZT0nb3JnLmVjbGlwc2UuZWxrLmRpc2NvLmNvbXBvbmVudENvbXBhY3Rpb24uc3RyYXRlZ3knLFVsZT0nb3JnLmVjbGlwc2UuZWxrLmRpc2NvLmNvbXBvbmVudENvbXBhY3Rpb24uY29tcG9uZW50TGF5b3V0QWxnb3JpdGhtJyxWbGU9J29yZy5lY2xpcHNlLmVsay5kaXNjby5kZWJ1Zy5kaXNjb0dyYXBoJyxXbGU9J29yZy5lY2xpcHNlLmVsay5kaXNjby5kZWJ1Zy5kaXNjb1BvbHlzJyxYbGU9J2NvbXBvbmVudENvbXBhY3Rpb24nLFlsZT0nb3JnLmVjbGlwc2UuZWxrLmRpc2NvJyxabGU9J29yZy5lY2xpcHNlLmVsay5zcGFjaW5nLmNvbXBvbmVudENvbXBvbmVudCcsJGxlPSdvcmcuZWNsaXBzZS5lbGsuZWRnZS50aGlja25lc3MnLF9sZT0nb3JnLmVjbGlwc2UuZWxrLmFzcGVjdFJhdGlvJyxhbWU9J29yZy5lY2xpcHNlLmVsay5wYWRkaW5nJyxibWU9J29yZy5lY2xpcHNlLmVsay5hbGcuZGlzY28udHJhbnNmb3JtJyxjbWU9MS41NzA3OTYzMjY3OTQ4OTY2LGRtZT0xLjc5NzY5MzEzNDg2MjMxNTdFMzA4LGVtZT17MzoxLDQ6MSw1OjEsMTkyOjF9LGZtZT17MzoxLDY6MSw0OjEsNToxLDEwNjoxLDEyMDoxfSxnbWU9J29yZy5lY2xpcHNlLmVsay5hbGcuZm9yY2UnLGhtZT0nQ29tcG9uZW50c1Byb2Nlc3NvcicsaW1lPSdDb21wb25lbnRzUHJvY2Vzc29yLzEnLGptZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5mb3JjZS5ncmFwaCcsa21lPSdDb21wb25lbnQgTGF5b3V0JyxsbWU9J29yZy5lY2xpcHNlLmVsay5hbGcuZm9yY2UubW9kZWwnLG1tZT0nb3JnLmVjbGlwc2UuZWxrLmZvcmNlLm1vZGVsJyxubWU9J29yZy5lY2xpcHNlLmVsay5mb3JjZS5pdGVyYXRpb25zJyxvbWU9J29yZy5lY2xpcHNlLmVsay5mb3JjZS5yZXB1bHNpdmVQb3dlcicscG1lPSdvcmcuZWNsaXBzZS5lbGsuZm9yY2UudGVtcGVyYXR1cmUnLHFtZT0wLjAwMSxybWU9J29yZy5lY2xpcHNlLmVsay5mb3JjZS5yZXB1bHNpb24nLHNtZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5mb3JjZS5vcHRpb25zJyx0bWU9MS42MDAwMDAwMjM4NDE4NTgsdW1lPSdvcmcuZWNsaXBzZS5lbGsuZm9yY2UnLHZtZT0nb3JnLmVjbGlwc2UuZWxrLnByaW9yaXR5Jyx3bWU9J29yZy5lY2xpcHNlLmVsay5zcGFjaW5nLm5vZGVOb2RlJyx4bWU9J29yZy5lY2xpcHNlLmVsay5zcGFjaW5nLmVkZ2VMYWJlbCcseW1lPSdvcmcuZWNsaXBzZS5lbGsucmFuZG9tU2VlZCcsem1lPSdvcmcuZWNsaXBzZS5lbGsuc2VwYXJhdGVDb25uZWN0ZWRDb21wb25lbnRzJyxBbWU9J29yZy5lY2xpcHNlLmVsay5pbnRlcmFjdGl2ZScsQm1lPSdvcmcuZWNsaXBzZS5lbGsucG9ydENvbnN0cmFpbnRzJyxDbWU9J29yZy5lY2xpcHNlLmVsay5lZGdlTGFiZWxzLmlubGluZScsRG1lPSdvcmcuZWNsaXBzZS5lbGsub21pdE5vZGVNaWNyb0xheW91dCcsRW1lPSdvcmcuZWNsaXBzZS5lbGsubm9kZVNpemUub3B0aW9ucycsRm1lPSdvcmcuZWNsaXBzZS5lbGsubm9kZVNpemUuY29uc3RyYWludHMnLEdtZT0nb3JnLmVjbGlwc2UuZWxrLm5vZGVMYWJlbHMucGxhY2VtZW50JyxIbWU9J29yZy5lY2xpcHNlLmVsay5wb3J0TGFiZWxzLnBsYWNlbWVudCcsSW1lPSdvcmlnaW4nLEptZT0ncmFuZG9tJyxLbWU9J2JvdW5kaW5nQm94LnVwTGVmdCcsTG1lPSdib3VuZGluZ0JveC5sb3dSaWdodCcsTW1lPSdvcmcuZWNsaXBzZS5lbGsuc3RyZXNzLmZpeGVkJyxObWU9J29yZy5lY2xpcHNlLmVsay5zdHJlc3MuZGVzaXJlZEVkZ2VMZW5ndGgnLE9tZT0nb3JnLmVjbGlwc2UuZWxrLnN0cmVzcy5kaW1lbnNpb24nLFBtZT0nb3JnLmVjbGlwc2UuZWxrLnN0cmVzcy5lcHNpbG9uJyxRbWU9J29yZy5lY2xpcHNlLmVsay5zdHJlc3MuaXRlcmF0aW9uTGltaXQnLFJtZT0nb3JnLmVjbGlwc2UuZWxrLnN0cmVzcycsU21lPSdFTEsgU3RyZXNzJyxUbWU9J29yZy5lY2xpcHNlLmVsay5ub2RlU2l6ZS5taW5pbXVtJyxVbWU9J29yZy5lY2xpcHNlLmVsay5hbGcuZm9yY2Uuc3RyZXNzJyxWbWU9J0xheWVyZWQgbGF5b3V0JyxXbWU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZCcsWG1lPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQuY29tcGFjdGlvbi5jb21wb25lbnRzJyxZbWU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5jb21wYWN0aW9uLm9uZWQnLFptZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmNvbXBhY3Rpb24ub25lZC5hbGdzJywkbWU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5jb21wYWN0aW9uLnJlY3RodWxsJyxfbWU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5jb21wb25lbnRzJyxhbmU9J05PTkUnLGJuZT17MzoxLDY6MSw0OjEsOToxLDU6MSwxMjI6MX0sY25lPXszOjEsNjoxLDQ6MSw1OjEsMTQxOjEsMTA2OjEsMTIwOjF9LGRuZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmNvbXBvdW5kJyxlbmU9ezUxOjF9LGZuZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmdyYXBoJyxnbmU9JyAtPiAnLGhuZT0nTm90IHN1cHBvcnRlZCBieSBMR3JhcGgnLGluZT0nUG9ydCBzaWRlIGlzIHVuZGVmaW5lZCcsam5lPXszOjEsNjoxLDQ6MSw1OjEsNDc0OjEsMTQxOjEsMTA2OjEsMTIwOjF9LGtuZT17MzoxLDY6MSw0OjEsNToxLDE0MToxLDE5MzoxLDIwMzoxLDEwNjoxLDEyMDoxfSxsbmU9ezM6MSw2OjEsNDoxLDU6MSwxNDE6MSwxOTQzOjEsMjAzOjEsMTA2OjEsMTIwOjF9LG1uZT0nKFt7XCJcXCcgXFx0XFxyXFxuJyxubmU9JyldfVwiXFwnIFxcdFxcclxcbicsb25lPSdUaGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5zIHBhcnRzIHRoYXQgY2Fubm90IGJlIHBhcnNlZCBhcyBudW1iZXJzLicscG5lPSdvcmcuZWNsaXBzZS5lbGsuY29yZS5tYXRoJyxxbmU9ezM6MSw0OjEsMTQyOjEsMjA3OjEsNDE0OjF9LHJuZT17MzoxLDQ6MSwxMTY6MSwyMDc6MSw0MTQ6MX0sc25lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZCcsdG5lPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQuZ3JhcGgudHJhbnNmb3JtJyx1bmU9J0Vsa0dyYXBoSW1wb3J0ZXInLHZuZT0nRWxrR3JhcGhJbXBvcnRlci9sYW1iZGEkMCRUeXBlJyx3bmU9J0Vsa0dyYXBoSW1wb3J0ZXIvbGFtYmRhJDEkVHlwZScseG5lPSdFbGtHcmFwaEltcG9ydGVyL2xhbWJkYSQyJFR5cGUnLHluZT0nRWxrR3JhcGhJbXBvcnRlci9sYW1iZGEkNCRUeXBlJyx6bmU9J05vZGUgbWFyZ2luIGNhbGN1bGF0aW9uJyxBbmU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5pbnRlcm1lZGlhdGUnLEJuZT0nT05FX1NJREVEX0dSRUVEWV9TV0lUQ0gnLENuZT0nVFdPX1NJREVEX0dSRUVEWV9TV0lUQ0gnLERuZT0nTm8gaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIGZvciB0aGUgbGF5b3V0IHByb2Nlc3NvciAnLEVuZT0nSW50ZXJtZWRpYXRlUHJvY2Vzc29yU3RyYXRlZ3knLEZuZT1cIk5vZGUgJ1wiLEduZT0nRklSU1RfU0VQQVJBVEUnLEhuZT0nTEFTVF9TRVBBUkFURScsSW5lPSdPZGQgcG9ydCBzaWRlIHByb2Nlc3NpbmcnLEpuZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmludGVybWVkaWF0ZS5jb21wYWN0aW9uJyxLbmU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5pbnRlcm1lZGlhdGUuZ3JlZWR5c3dpdGNoJyxMbmU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5wM29yZGVyLmNvdW50aW5nJyxNbmU9ezIyNToxfSxObmU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5pbnRlcm1lZGlhdGUubG9vcHMnLE9uZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmludGVybWVkaWF0ZS5sb29wcy5vcmRlcmluZycsUG5lPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQuaW50ZXJtZWRpYXRlLmxvb3BzLnJvdXRpbmcnLFFuZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLmludGVybWVkaWF0ZS5wcmVzZXJ2ZW9yZGVyJyxSbmU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5pbnRlcm1lZGlhdGUud3JhcHBpbmcnLFNuZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLm9wdGlvbnMnLFRuZT0nSU5URVJBQ1RJVkUnLFVuZT0nREVQVEhfRklSU1QnLFZuZT0nRURHRV9MRU5HVEgnLFduZT0nU0VMRl9MT09QUycsWG5lPSdmaXJzdFRyeVdpdGhJbml0aWFsT3JkZXInLFluZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuZGlyZWN0aW9uQ29uZ3J1ZW5jeScsWm5lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5mZWVkYmFja0VkZ2VzJywkbmU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmludGVyYWN0aXZlUmVmZXJlbmNlUG9pbnQnLF9uZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubWVyZ2VFZGdlcycsYW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5tZXJnZUhpZXJhcmNoeUVkZ2VzJyxib2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmFsbG93Tm9uRmxvd1BvcnRzVG9Td2l0Y2hTaWRlcycsY29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5wb3J0U29ydGluZ1N0cmF0ZWd5Jyxkb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLnRob3JvdWdobmVzcycsZW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC51bm5lY2Vzc2FyeUJlbmRwb2ludHMnLGZvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuZ2VuZXJhdGVQb3NpdGlvbkFuZExheWVySWRzJyxnb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmN5Y2xlQnJlYWtpbmcuc3RyYXRlZ3knLGhvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubGF5ZXJpbmcuc3RyYXRlZ3knLGlvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubGF5ZXJpbmcubGF5ZXJDb25zdHJhaW50Jyxqb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmxheWVyaW5nLmxheWVyQ2hvaWNlQ29uc3RyYWludCcsa29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5sYXllcmluZy5sYXllcklkJyxsb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmxheWVyaW5nLm1pbldpZHRoLnVwcGVyQm91bmRPbldpZHRoJyxtb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmxheWVyaW5nLm1pbldpZHRoLnVwcGVyTGF5ZXJFc3RpbWF0aW9uU2NhbGluZ0ZhY3Rvcicsbm9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5sYXllcmluZy5ub2RlUHJvbW90aW9uLnN0cmF0ZWd5Jyxvb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmxheWVyaW5nLm5vZGVQcm9tb3Rpb24ubWF4SXRlcmF0aW9ucycscG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5sYXllcmluZy5jb2ZmbWFuR3JhaGFtLmxheWVyQm91bmQnLHFvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuY3Jvc3NpbmdNaW5pbWl6YXRpb24uc3RyYXRlZ3knLHJvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuY3Jvc3NpbmdNaW5pbWl6YXRpb24uZm9yY2VOb2RlTW9kZWxPcmRlcicsc29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jcm9zc2luZ01pbmltaXphdGlvbi5oaWVyYXJjaGljYWxTd2VlcGluZXNzJyx0b2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmNyb3NzaW5nTWluaW1pemF0aW9uLnNlbWlJbnRlcmFjdGl2ZScsdW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jcm9zc2luZ01pbmltaXphdGlvbi5wb3NpdGlvbkNob2ljZUNvbnN0cmFpbnQnLHZvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuY3Jvc3NpbmdNaW5pbWl6YXRpb24ucG9zaXRpb25JZCcsd29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jcm9zc2luZ01pbmltaXphdGlvbi5ncmVlZHlTd2l0Y2guYWN0aXZhdGlvblRocmVzaG9sZCcseG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jcm9zc2luZ01pbmltaXphdGlvbi5ncmVlZHlTd2l0Y2gudHlwZScseW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jcm9zc2luZ01pbmltaXphdGlvbi5ncmVlZHlTd2l0Y2hIaWVyYXJjaGljYWwudHlwZScsem9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5ub2RlUGxhY2VtZW50LnN0cmF0ZWd5JyxBb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLm5vZGVQbGFjZW1lbnQuZmF2b3JTdHJhaWdodEVkZ2VzJyxCb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLm5vZGVQbGFjZW1lbnQuYmsuZWRnZVN0cmFpZ2h0ZW5pbmcnLENvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubm9kZVBsYWNlbWVudC5iay5maXhlZEFsaWdubWVudCcsRG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5ub2RlUGxhY2VtZW50LmxpbmVhclNlZ21lbnRzLmRlZmxlY3Rpb25EYW1wZW5pbmcnLEVvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubm9kZVBsYWNlbWVudC5uZXR3b3JrU2ltcGxleC5ub2RlRmxleGliaWxpdHknLEZvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubm9kZVBsYWNlbWVudC5uZXR3b3JrU2ltcGxleC5ub2RlRmxleGliaWxpdHkuZGVmYXVsdCcsR29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5lZGdlUm91dGluZy5zZWxmTG9vcERpc3RyaWJ1dGlvbicsSG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5lZGdlUm91dGluZy5zZWxmTG9vcE9yZGVyaW5nJyxJb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmVkZ2VSb3V0aW5nLnNwbGluZXMubW9kZScsSm9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5lZGdlUm91dGluZy5zcGxpbmVzLnNsb3BweS5sYXllclNwYWNpbmdGYWN0b3InLEtvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuZWRnZVJvdXRpbmcucG9seWxpbmUuc2xvcGVkRWRnZVpvbmVXaWR0aCcsTG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5zcGFjaW5nLmJhc2VWYWx1ZScsTW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5zcGFjaW5nLmVkZ2VOb2RlQmV0d2VlbkxheWVycycsTm9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5zcGFjaW5nLmVkZ2VFZGdlQmV0d2VlbkxheWVycycsT29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5zcGFjaW5nLm5vZGVOb2RlQmV0d2VlbkxheWVycycsUG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5wcmlvcml0eS5kaXJlY3Rpb24nLFFvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQucHJpb3JpdHkuc2hvcnRuZXNzJyxSb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLnByaW9yaXR5LnN0cmFpZ2h0bmVzcycsU29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb21wYWN0aW9uLmNvbm5lY3RlZENvbXBvbmVudHMnLFRvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuY29tcGFjdGlvbi5wb3N0Q29tcGFjdGlvbi5zdHJhdGVneScsVW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb21wYWN0aW9uLnBvc3RDb21wYWN0aW9uLmNvbnN0cmFpbnRzJyxWb2U9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmhpZ2hEZWdyZWVOb2Rlcy50cmVhdG1lbnQnLFdvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuaGlnaERlZ3JlZU5vZGVzLnRocmVzaG9sZCcsWG9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5oaWdoRGVncmVlTm9kZXMudHJlZUhlaWdodCcsWW9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC53cmFwcGluZy5zdHJhdGVneScsWm9lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC53cmFwcGluZy5hZGRpdGlvbmFsRWRnZVNwYWNpbmcnLCRvZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQud3JhcHBpbmcuY29ycmVjdGlvbkZhY3RvcicsX29lPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC53cmFwcGluZy5jdXR0aW5nLnN0cmF0ZWd5JyxhcGU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLndyYXBwaW5nLmN1dHRpbmcuY3V0cycsYnBlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC53cmFwcGluZy5jdXR0aW5nLm1zZC5mcmVlZG9tJyxjcGU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLndyYXBwaW5nLnZhbGlkaWZ5LnN0cmF0ZWd5JyxkcGU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLndyYXBwaW5nLnZhbGlkaWZ5LmZvcmJpZGRlbkluZGljZXMnLGVwZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQud3JhcHBpbmcubXVsdGlFZGdlLmltcHJvdmVDdXRzJyxmcGU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLndyYXBwaW5nLm11bHRpRWRnZS5kaXN0YW5jZVBlbmFsdHknLGdwZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQud3JhcHBpbmcubXVsdGlFZGdlLmltcHJvdmVXcmFwcGVkRWRnZXMnLGhwZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuZWRnZUxhYmVscy5zaWRlU2VsZWN0aW9uJyxpcGU9J29yZy5lY2xpcHNlLmVsay5sYXllcmVkLmVkZ2VMYWJlbHMuY2VudGVyTGFiZWxQbGFjZW1lbnRTdHJhdGVneScsanBlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb25zaWRlck1vZGVsT3JkZXIuc3RyYXRlZ3knLGtwZT0nb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQuY29uc2lkZXJNb2RlbE9yZGVyLm5vTW9kZWxPcmRlcicsbHBlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb25zaWRlck1vZGVsT3JkZXIuY29tcG9uZW50cycsbXBlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb25zaWRlck1vZGVsT3JkZXIubG9uZ0VkZ2VTdHJhdGVneScsbnBlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb25zaWRlck1vZGVsT3JkZXIuY3Jvc3NpbmdDb3VudGVyTm9kZUluZmx1ZW5jZScsb3BlPSdvcmcuZWNsaXBzZS5lbGsubGF5ZXJlZC5jb25zaWRlck1vZGVsT3JkZXIuY3Jvc3NpbmdDb3VudGVyUG9ydEluZmx1ZW5jZScscHBlPSdsYXllcmluZycscXBlPSdsYXllcmluZy5taW5XaWR0aCcscnBlPSdsYXllcmluZy5ub2RlUHJvbW90aW9uJyxzcGU9J2Nyb3NzaW5nTWluaW1pemF0aW9uJyx0cGU9J29yZy5lY2xpcHNlLmVsay5oaWVyYXJjaHlIYW5kbGluZycsdXBlPSdjcm9zc2luZ01pbmltaXphdGlvbi5ncmVlZHlTd2l0Y2gnLHZwZT0nbm9kZVBsYWNlbWVudCcsd3BlPSdub2RlUGxhY2VtZW50LmJrJyx4cGU9J2VkZ2VSb3V0aW5nJyx5cGU9J29yZy5lY2xpcHNlLmVsay5lZGdlUm91dGluZycsenBlPSdzcGFjaW5nJyxBcGU9J3ByaW9yaXR5JyxCcGU9J2NvbXBhY3Rpb24nLENwZT0nY29tcGFjdGlvbi5wb3N0Q29tcGFjdGlvbicsRHBlPSdTcGVjaWZpZXMgd2hldGhlciBhbmQgaG93IHBvc3QtcHJvY2VzcyBjb21wYWN0aW9uIGlzIGFwcGxpZWQuJyxFcGU9J2hpZ2hEZWdyZWVOb2RlcycsRnBlPSd3cmFwcGluZycsR3BlPSd3cmFwcGluZy5jdXR0aW5nJyxIcGU9J3dyYXBwaW5nLnZhbGlkaWZ5JyxJcGU9J3dyYXBwaW5nLm11bHRpRWRnZScsSnBlPSdlZGdlTGFiZWxzJyxLcGU9J2NvbnNpZGVyTW9kZWxPcmRlcicsTHBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5jb21tZW50Q29tbWVudCcsTXBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5jb21tZW50Tm9kZScsTnBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5lZGdlRWRnZScsT3BlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5lZGdlTm9kZScsUHBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5sYWJlbExhYmVsJyxRcGU9J29yZy5lY2xpcHNlLmVsay5zcGFjaW5nLmxhYmVsUG9ydEhvcml6b250YWwnLFJwZT0nb3JnLmVjbGlwc2UuZWxrLnNwYWNpbmcubGFiZWxQb3J0VmVydGljYWwnLFNwZT0nb3JnLmVjbGlwc2UuZWxrLnNwYWNpbmcubGFiZWxOb2RlJyxUcGU9J29yZy5lY2xpcHNlLmVsay5zcGFjaW5nLm5vZGVTZWxmTG9vcCcsVXBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5wb3J0UG9ydCcsVnBlPSdvcmcuZWNsaXBzZS5lbGsuc3BhY2luZy5pbmRpdmlkdWFsJyxXcGU9J29yZy5lY2xpcHNlLmVsay5wb3J0LmJvcmRlck9mZnNldCcsWHBlPSdvcmcuZWNsaXBzZS5lbGsubm9MYXlvdXQnLFlwZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnQuc2lkZScsWnBlPSdvcmcuZWNsaXBzZS5lbGsuZGVidWdNb2RlJywkcGU9J29yZy5lY2xpcHNlLmVsay5hbGlnbm1lbnQnLF9wZT0nb3JnLmVjbGlwc2UuZWxrLmluc2lkZVNlbGZMb29wcy5hY3RpdmF0ZScsYXFlPSdvcmcuZWNsaXBzZS5lbGsuaW5zaWRlU2VsZkxvb3BzLnlvJyxicWU9J29yZy5lY2xpcHNlLmVsay5ub2RlU2l6ZS5maXhlZEdyYXBoU2l6ZScsY3FlPSdvcmcuZWNsaXBzZS5lbGsuZGlyZWN0aW9uJyxkcWU9J29yZy5lY2xpcHNlLmVsay5ub2RlTGFiZWxzLnBhZGRpbmcnLGVxZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnRMYWJlbHMubmV4dFRvUG9ydElmUG9zc2libGUnLGZxZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnRMYWJlbHMudHJlYXRBc0dyb3VwJyxncWU9J29yZy5lY2xpcHNlLmVsay5wb3J0QWxpZ25tZW50LmRlZmF1bHQnLGhxZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnRBbGlnbm1lbnQubm9ydGgnLGlxZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnRBbGlnbm1lbnQuc291dGgnLGpxZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnRBbGlnbm1lbnQud2VzdCcsa3FlPSdvcmcuZWNsaXBzZS5lbGsucG9ydEFsaWdubWVudC5lYXN0JyxscWU9J29yZy5lY2xpcHNlLmVsay5jb250ZW50QWxpZ25tZW50JyxtcWU9J29yZy5lY2xpcHNlLmVsay5qdW5jdGlvblBvaW50cycsbnFlPSdvcmcuZWNsaXBzZS5lbGsuZWRnZUxhYmVscy5wbGFjZW1lbnQnLG9xZT0nb3JnLmVjbGlwc2UuZWxrLnBvcnQuaW5kZXgnLHBxZT0nb3JnLmVjbGlwc2UuZWxrLmNvbW1lbnRCb3gnLHFxZT0nb3JnLmVjbGlwc2UuZWxrLmh5cGVybm9kZScscnFlPSdvcmcuZWNsaXBzZS5lbGsucG9ydC5hbmNob3InLHNxZT0nb3JnLmVjbGlwc2UuZWxrLnBhcnRpdGlvbmluZy5hY3RpdmF0ZScsdHFlPSdvcmcuZWNsaXBzZS5lbGsucGFydGl0aW9uaW5nLnBhcnRpdGlvbicsdXFlPSdvcmcuZWNsaXBzZS5lbGsucG9zaXRpb24nLHZxZT0nb3JnLmVjbGlwc2UuZWxrLm1hcmdpbnMnLHdxZT0nb3JnLmVjbGlwc2UuZWxrLnNwYWNpbmcucG9ydHNTdXJyb3VuZGluZycseHFlPSdvcmcuZWNsaXBzZS5lbGsuaW50ZXJhY3RpdmVMYXlvdXQnLHlxZT0nb3JnLmVjbGlwc2UuZWxrLmNvcmUudXRpbCcsenFlPXszOjEsNDoxLDU6MSw1OTM6MX0sQXFlPSdORVRXT1JLX1NJTVBMRVgnLEJxZT17MTIzOjEsNTE6MX0sQ3FlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQucDFjeWNsZXMnLERxZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLnAybGF5ZXJzJyxFcWU9ezQwMjoxLDIyNToxfSxGcWU9ezgzMjoxLDM6MSw0OjF9LEdxZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLnAzb3JkZXInLEhxZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLnA0bm9kZXMnLElxZT17MzoxLDQ6MSw1OjEsODQwOjF9LEpxZT0xLjBFLTUsS3FlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQucDRub2Rlcy5iaycsTHFlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQucDVlZGdlcycsTXFlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLmxheWVyZWQucDVlZGdlcy5vcnRob2dvbmFsJyxOcWU9J29yZy5lY2xpcHNlLmVsay5hbGcubGF5ZXJlZC5wNWVkZ2VzLm9ydGhvZ29uYWwuZGlyZWN0aW9uJyxPcWU9MS4wRS02LFBxZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5sYXllcmVkLnA1ZWRnZXMuc3BsaW5lcycsUXFlPTAuMDk5OTk5OTk5OTk5OTk5OTgsUnFlPTEuMEUtOCxTcWU9NC43MTIzODg5ODAzODQ2OSxUcWU9My4xNDE1OTI2NTM1ODk3OTMsVXFlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLm1ydHJlZScsVnFlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLm1ydHJlZS5ncmFwaCcsV3FlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLm1ydHJlZS5pbnRlcm1lZGlhdGUnLFhxZT0nU2V0IG5laWdoYm9ycyBpbiBsZXZlbCcsWXFlPSdERVNDRU5EQU5UUycsWnFlPSdvcmcuZWNsaXBzZS5lbGsubXJ0cmVlLndlaWdodGluZycsJHFlPSdvcmcuZWNsaXBzZS5lbGsubXJ0cmVlLnNlYXJjaE9yZGVyJyxfcWU9J29yZy5lY2xpcHNlLmVsay5hbGcubXJ0cmVlLm9wdGlvbnMnLGFyZT0nb3JnLmVjbGlwc2UuZWxrLm1ydHJlZScsYnJlPSdvcmcuZWNsaXBzZS5lbGsudHJlZScsY3JlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJhZGlhbCcsZHJlPTYuMjgzMTg1MzA3MTc5NTg2LGVyZT00LjlFLTMyNCxmcmU9J29yZy5lY2xpcHNlLmVsay5hbGcucmFkaWFsLmludGVybWVkaWF0ZScsZ3JlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJhZGlhbC5pbnRlcm1lZGlhdGUuY29tcGFjdGlvbicsaHJlPXszOjEsNDoxLDU6MSwxMDY6MX0saXJlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJhZGlhbC5pbnRlcm1lZGlhdGUub3B0aW1pemF0aW9uJyxqcmU9J05vIGltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGxheW91dCBvcHRpb24gJyxrcmU9J29yZy5lY2xpcHNlLmVsay5hbGcucmFkaWFsLm9wdGlvbnMnLGxyZT0nb3JnLmVjbGlwc2UuZWxrLnJhZGlhbC5vcmRlcklkJyxtcmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwucmFkaXVzJyxucmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwuY29tcGFjdG9yJyxvcmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwuY29tcGFjdGlvblN0ZXBTaXplJyxwcmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwuc29ydGVyJyxxcmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwud2VkZ2VDcml0ZXJpYScscnJlPSdvcmcuZWNsaXBzZS5lbGsucmFkaWFsLm9wdGltaXphdGlvbkNyaXRlcmlhJyxzcmU9J29yZy5lY2xpcHNlLmVsay5yYWRpYWwnLHRyZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5yYWRpYWwucDFwb3NpdGlvbi53ZWRnZScsdXJlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJhZGlhbC5zb3J0aW5nJyx2cmU9NS40OTc3ODcxNDM3ODIxMzgsd3JlPTMuOTI2OTkwODE2OTg3MjQxNCx4cmU9Mi4zNTYxOTQ0OTAxOTIzNDUseXJlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJlY3RwYWNraW5nJyx6cmU9J29yZy5lY2xpcHNlLmVsay5hbGcucmVjdHBhY2tpbmcuZmlyc3RpdGVyYXRpb24nLEFyZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5yZWN0cGFja2luZy5vcHRpb25zJyxCcmU9J29yZy5lY2xpcHNlLmVsay5yZWN0cGFja2luZy5vcHRpbWl6YXRpb25Hb2FsJyxDcmU9J29yZy5lY2xpcHNlLmVsay5yZWN0cGFja2luZy5sYXN0UGxhY2VTaGlmdCcsRHJlPSdvcmcuZWNsaXBzZS5lbGsucmVjdHBhY2tpbmcuY3VycmVudFBvc2l0aW9uJyxFcmU9J29yZy5lY2xpcHNlLmVsay5yZWN0cGFja2luZy5kZXNpcmVkUG9zaXRpb24nLEZyZT0nb3JnLmVjbGlwc2UuZWxrLnJlY3RwYWNraW5nLm9ubHlGaXJzdEl0ZXJhdGlvbicsR3JlPSdvcmcuZWNsaXBzZS5lbGsucmVjdHBhY2tpbmcucm93Q29tcGFjdGlvbicsSHJlPSdvcmcuZWNsaXBzZS5lbGsucmVjdHBhY2tpbmcuZXhwYW5kVG9Bc3BlY3RSYXRpbycsSXJlPSdvcmcuZWNsaXBzZS5lbGsucmVjdHBhY2tpbmcudGFyZ2V0V2lkdGgnLEpyZT0nb3JnLmVjbGlwc2UuZWxrLmV4cGFuZE5vZGVzJyxLcmU9J29yZy5lY2xpcHNlLmVsay5yZWN0cGFja2luZycsTHJlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnJlY3RwYWNraW5nLnV0aWwnLE1yZT0nTm8gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGZvciAnLE5yZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5zcG9yZScsT3JlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnNwb3JlLm9wdGlvbnMnLFByZT0nb3JnLmVjbGlwc2UuZWxrLnNwb3JlQ29tcGFjdGlvbicsUXJlPSdvcmcuZWNsaXBzZS5lbGsudW5kZXJseWluZ0xheW91dEFsZ29yaXRobScsUnJlPSdvcmcuZWNsaXBzZS5lbGsucHJvY2Vzc2luZ09yZGVyLnRyZWVDb25zdHJ1Y3Rpb24nLFNyZT0nb3JnLmVjbGlwc2UuZWxrLnByb2Nlc3NpbmdPcmRlci5zcGFubmluZ1RyZWVDb3N0RnVuY3Rpb24nLFRyZT0nb3JnLmVjbGlwc2UuZWxrLnByb2Nlc3NpbmdPcmRlci5wcmVmZXJyZWRSb290JyxVcmU9J29yZy5lY2xpcHNlLmVsay5wcm9jZXNzaW5nT3JkZXIucm9vdFNlbGVjdGlvbicsVnJlPSdvcmcuZWNsaXBzZS5lbGsuc3RydWN0dXJlLnN0cnVjdHVyZUV4dHJhY3Rpb25TdHJhdGVneScsV3JlPSdvcmcuZWNsaXBzZS5lbGsuY29tcGFjdGlvbi5jb21wYWN0aW9uU3RyYXRlZ3knLFhyZT0nb3JnLmVjbGlwc2UuZWxrLmNvbXBhY3Rpb24ub3J0aG9nb25hbCcsWXJlPSdvcmcuZWNsaXBzZS5lbGsub3ZlcmxhcFJlbW92YWwubWF4SXRlcmF0aW9ucycsWnJlPSdvcmcuZWNsaXBzZS5lbGsub3ZlcmxhcFJlbW92YWwucnVuU2NhbmxpbmUnLCRyZT0ncHJvY2Vzc2luZ09yZGVyJyxfcmU9J292ZXJsYXBSZW1vdmFsJyxhc2U9J29yZy5lY2xpcHNlLmVsay5zcG9yZU92ZXJsYXAnLGJzZT0nb3JnLmVjbGlwc2UuZWxrLmFsZy5zcG9yZS5wMXN0cnVjdHVyZScsY3NlPSdvcmcuZWNsaXBzZS5lbGsuYWxnLnNwb3JlLnAycHJvY2Vzc2luZ29yZGVyJyxkc2U9J29yZy5lY2xpcHNlLmVsay5hbGcuc3BvcmUucDNleGVjdXRpb24nLGVzZT0nSW52YWxpZCBpbmRleDogJyxmc2U9J29yZy5lY2xpcHNlLmVsay5jb3JlLmFsZycsZ3NlPXszMzE6MX0saHNlPXsyODg6MX0saXNlPSdNYWtlIHN1cmUgaXRzIHR5cGUgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSAnLGpzZT0nIHV0aWxpdHkgY2xhc3MuJyxrc2U9J3RydWUnLGxzZT0nZmFsc2UnLG1zZT1cIkNvdWxkbid0IGNsb25lIHByb3BlcnR5ICdcIixuc2U9MC4wNSxvc2U9J29yZy5lY2xpcHNlLmVsay5jb3JlLm9wdGlvbnMnLHBzZT0xLjI5OTk5OTk1MjMxNjI4NDIscXNlPSdvcmcuZWNsaXBzZS5lbGsuYm94Jyxyc2U9J29yZy5lY2xpcHNlLmVsay5ib3gucGFja2luZ01vZGUnLHNzZT0nb3JnLmVjbGlwc2UuZWxrLmFsZ29yaXRobScsdHNlPSdvcmcuZWNsaXBzZS5lbGsucmVzb2x2ZWRBbGdvcml0aG0nLHVzZT0nb3JnLmVjbGlwc2UuZWxrLmJlbmRQb2ludHMnLHZzZT0nb3JnLmVjbGlwc2UuZWxrLmxhYmVsTWFuYWdlcicsd3NlPSdvcmcuZWNsaXBzZS5lbGsuc2NhbGVGYWN0b3InLHhzZT0nb3JnLmVjbGlwc2UuZWxrLmFuaW1hdGUnLHlzZT0nb3JnLmVjbGlwc2UuZWxrLmFuaW1UaW1lRmFjdG9yJyx6c2U9J29yZy5lY2xpcHNlLmVsay5sYXlvdXRBbmNlc3RvcnMnLEFzZT0nb3JnLmVjbGlwc2UuZWxrLm1heEFuaW1UaW1lJyxCc2U9J29yZy5lY2xpcHNlLmVsay5taW5BbmltVGltZScsQ3NlPSdvcmcuZWNsaXBzZS5lbGsucHJvZ3Jlc3NCYXInLERzZT0nb3JnLmVjbGlwc2UuZWxrLnZhbGlkYXRlR3JhcGgnLEVzZT0nb3JnLmVjbGlwc2UuZWxrLnZhbGlkYXRlT3B0aW9ucycsRnNlPSdvcmcuZWNsaXBzZS5lbGsuem9vbVRvRml0JyxHc2U9J29yZy5lY2xpcHNlLmVsay5mb250Lm5hbWUnLEhzZT0nb3JnLmVjbGlwc2UuZWxrLmZvbnQuc2l6ZScsSXNlPSdvcmcuZWNsaXBzZS5lbGsuZWRnZS50eXBlJyxKc2U9J3BhcnRpdGlvbmluZycsS3NlPSdub2RlTGFiZWxzJyxMc2U9J3BvcnRBbGlnbm1lbnQnLE1zZT0nbm9kZVNpemUnLE5zZT0ncG9ydCcsT3NlPSdwb3J0TGFiZWxzJyxQc2U9J2luc2lkZVNlbGZMb29wcycsUXNlPSdvcmcuZWNsaXBzZS5lbGsuZml4ZWQnLFJzZT0nb3JnLmVjbGlwc2UuZWxrLnJhbmRvbScsU3NlPSdwb3J0IG11c3QgaGF2ZSBhIHBhcmVudCBub2RlIHRvIGNhbGN1bGF0ZSB0aGUgcG9ydCBzaWRlJyxUc2U9J1RoZSBlZGdlIG5lZWRzIHRvIGhhdmUgZXhhY3RseSBvbmUgZWRnZSBzZWN0aW9uLiBGb3VuZDogJyxVc2U9J29yZy5lY2xpcHNlLmVsay5jb3JlLnV0aWwuYWRhcHRlcnMnLFZzZT0nb3JnLmVjbGlwc2UuZW1mLmVjb3JlJyxXc2U9J29yZy5lY2xpcHNlLmVsay5ncmFwaCcsWHNlPSdFTWFwUHJvcGVydHlIb2xkZXInLFlzZT0nRWxrQmVuZFBvaW50Jyxac2U9J0Vsa0dyYXBoRWxlbWVudCcsJHNlPSdFbGtDb25uZWN0YWJsZVNoYXBlJyxfc2U9J0Vsa0VkZ2UnLGF0ZT0nRWxrRWRnZVNlY3Rpb24nLGJ0ZT0nRU1vZGVsRWxlbWVudCcsY3RlPSdFTmFtZWRFbGVtZW50JyxkdGU9J0Vsa0xhYmVsJyxldGU9J0Vsa05vZGUnLGZ0ZT0nRWxrUG9ydCcsZ3RlPXs5MjoxLDkwOjF9LGh0ZT0nb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbCcsaXRlPVwiVGhlIGZlYXR1cmUgJ1wiLGp0ZT1cIicgaXMgbm90IGEgdmFsaWQgY2hhbmdlYWJsZSBmZWF0dXJlXCIsa3RlPSdFeHBlY3RpbmcgbnVsbCcsbHRlPVwiJyBpcyBub3QgYSB2YWxpZCBmZWF0dXJlXCIsbXRlPSdUaGUgZmVhdHVyZSBJRCcsbnRlPScgaXMgbm90IGEgdmFsaWQgZmVhdHVyZSBJRCcsb3RlPTMyNzY4LHB0ZT17MTA1OjEsOTI6MSw5MDoxLDU2OjEsNDk6MSw5NzoxfSxxdGU9J29yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsJyxydGU9J29yZy5lY2xpcHNlLmVsay5ncmFwaC5pbXBsJyxzdGU9J1JlY3Vyc2l2ZSBjb250YWlubWVudCBub3QgYWxsb3dlZCBmb3IgJyx0dGU9XCJUaGUgZGF0YXR5cGUgJ1wiLHV0ZT1cIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllclwiLHZ0ZT1cIlRoZSB2YWx1ZSAnXCIsd3RlPXsxOTA6MSwzOjEsNDoxfSx4dGU9XCJUaGUgY2xhc3MgJ1wiLHl0ZT0naHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbGsvRWxrR3JhcGgnLHp0ZT0xMDI0LEF0ZT0ncHJvcGVydHknLEJ0ZT0ndmFsdWUnLEN0ZT0nc291cmNlJyxEdGU9J3Byb3BlcnRpZXMnLEV0ZT0naWRlbnRpZmllcicsRnRlPSdoZWlnaHQnLEd0ZT0nd2lkdGgnLEh0ZT0ncGFyZW50JyxJdGU9J3RleHQnLEp0ZT0nY2hpbGRyZW4nLEt0ZT0naGllcmFyY2hpY2FsJyxMdGU9J3NvdXJjZXMnLE10ZT0ndGFyZ2V0cycsTnRlPSdzZWN0aW9ucycsT3RlPSdiZW5kUG9pbnRzJyxQdGU9J291dGdvaW5nU2hhcGUnLFF0ZT0naW5jb21pbmdTaGFwZScsUnRlPSdvdXRnb2luZ1NlY3Rpb25zJyxTdGU9J2luY29taW5nU2VjdGlvbnMnLFR0ZT0nb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsJyxVdGU9J1NldmVyZSBpbXBsZW1lbnRhdGlvbiBlcnJvciBpbiB0aGUgSnNvbiB0byBFbGtHcmFwaCBpbXBvcnRlci4nLFZ0ZT0naWQnLFd0ZT0nb3JnLmVjbGlwc2UuZWxrLmdyYXBoLmpzb24nLFh0ZT0nVW5oYW5kbGVkIHBhcmFtZXRlciB0eXBlczogJyxZdGU9J3N0YXJ0UG9pbnQnLFp0ZT1cIkFuIGVkZ2UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzb3VyY2UgYW5kIG9uZSB0YXJnZXQgKGVkZ2UgaWQ6ICdcIiwkdGU9XCInKS5cIixfdGU9J1JlZmVyZW5jZWQgZWRnZSBzZWN0aW9uIGRvZXMgbm90IGV4aXN0OiAnLGF1ZT1cIiAoZWRnZSBpZDogJ1wiLGJ1ZT0ndGFyZ2V0JyxjdWU9J3NvdXJjZVBvaW50JyxkdWU9J3RhcmdldFBvaW50JyxldWU9J2dyb3VwJyxmdWU9J25hbWUnLGd1ZT0nY29ubmVjdGFibGVTaGFwZSBjYW5ub3QgYmUgbnVsbCcsaHVlPSdlZGdlIGNhbm5vdCBiZSBudWxsJyxpdWU9XCJQYXNzZWQgZWRnZSBpcyBub3QgJ3NpbXBsZScuXCIsanVlPSdvcmcuZWNsaXBzZS5lbGsuZ3JhcGgudXRpbCcsa3VlPVwiVGhlICdubyBkdXBsaWNhdGVzJyBjb25zdHJhaW50IGlzIHZpb2xhdGVkXCIsbHVlPSd0YXJnZXRJbmRleD0nLG11ZT0nLCBzaXplPScsbnVlPSdzb3VyY2VJbmRleD0nLG91ZT17MzoxLDQ6MSwyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNTQ6MSw2NzoxLDYzOjEsNTg6MX0scHVlPXszOjEsNDoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsNDc6MSwxNToxLDU0OjEsNjc6MSw2MzoxLDU4OjEsNTg4OjF9LHF1ZT0nbG9nZ2luZycscnVlPSdtZWFzdXJlRXhlY3V0aW9uVGltZScsc3VlPSdwYXJzZXIucGFyc2UuMScsdHVlPSdwYXJzZXIucGFyc2UuMicsdXVlPSdwYXJzZXIubmV4dC4xJyx2dWU9J3BhcnNlci5uZXh0LjInLHd1ZT0ncGFyc2VyLm5leHQuMycseHVlPSdwYXJzZXIubmV4dC40Jyx5dWU9J3BhcnNlci5mYWN0b3IuMScsenVlPSdwYXJzZXIuZmFjdG9yLjInLEF1ZT0ncGFyc2VyLmZhY3Rvci4zJyxCdWU9J3BhcnNlci5mYWN0b3IuNCcsQ3VlPSdwYXJzZXIuZmFjdG9yLjUnLER1ZT0ncGFyc2VyLmZhY3Rvci42JyxFdWU9J3BhcnNlci5hdG9tLjEnLEZ1ZT0ncGFyc2VyLmF0b20uMicsR3VlPSdwYXJzZXIuYXRvbS4zJyxIdWU9J3BhcnNlci5hdG9tLjQnLEl1ZT0ncGFyc2VyLmF0b20uNScsSnVlPSdwYXJzZXIuY2MuMScsS3VlPSdwYXJzZXIuY2MuMicsTHVlPSdwYXJzZXIuY2MuMycsTXVlPSdwYXJzZXIuY2MuNScsTnVlPSdwYXJzZXIuY2MuNicsT3VlPSdwYXJzZXIuY2MuNycsUHVlPSdwYXJzZXIuY2MuOCcsUXVlPSdwYXJzZXIub3BlLjEnLFJ1ZT0ncGFyc2VyLm9wZS4yJyxTdWU9J3BhcnNlci5vcGUuMycsVHVlPSdwYXJzZXIuZGVzY2FwZS4xJyxVdWU9J3BhcnNlci5kZXNjYXBlLjInLFZ1ZT0ncGFyc2VyLmRlc2NhcGUuMycsV3VlPSdwYXJzZXIuZGVzY2FwZS40JyxYdWU9J3BhcnNlci5kZXNjYXBlLjUnLFl1ZT0ncGFyc2VyLnByb2Nlc3MuMScsWnVlPSdwYXJzZXIucXVhbnRpZmllci4xJywkdWU9J3BhcnNlci5xdWFudGlmaWVyLjInLF91ZT0ncGFyc2VyLnF1YW50aWZpZXIuMycsYXZlPSdwYXJzZXIucXVhbnRpZmllci40JyxidmU9J3BhcnNlci5xdWFudGlmaWVyLjUnLGN2ZT0nb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnknLGR2ZT17NDE1OjEsNjcyOjF9LGV2ZT17MzoxLDQ6MSwyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNjc6MSw1ODoxfSxmdmU9ezM2NjoxLDE0MzoxfSxndmU9J2luZGV4PScsaHZlPXszOjEsNDoxLDU6MSwxMjY6MX0saXZlPXszOjEsNDoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MSw1NDoxLDY3OjEsNTg6MX0sanZlPXszOjEsNjoxLDQ6MSw1OjEsMTkyOjF9LGt2ZT17MzoxLDQ6MSw1OjEsMTY1OjEsMzY3OjF9LGx2ZT0nOy8/OkAmPSskLCcsbXZlPSdpbnZhbGlkIGF1dGhvcml0eTogJyxudmU9J0VBbm5vdGF0aW9uJyxvdmU9J0VUeXBlZEVsZW1lbnQnLHB2ZT0nRVN0cnVjdHVyYWxGZWF0dXJlJyxxdmU9J0VBdHRyaWJ1dGUnLHJ2ZT0nRUNsYXNzaWZpZXInLHN2ZT0nRUVudW1MaXRlcmFsJyx0dmU9J0VHZW5lcmljVHlwZScsdXZlPSdFT3BlcmF0aW9uJyx2dmU9J0VQYXJhbWV0ZXInLHd2ZT0nRVJlZmVyZW5jZScseHZlPSdFVHlwZVBhcmFtZXRlcicseXZlPSdvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbCcsenZlPXs3NjoxfSxBdmU9ezM6MSwyMDoxLDE0OjEsMTU6MSw1ODoxLDU4OToxLDc2OjEsNjk6MSw5NToxfSxCdmU9J29yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkZlYXR1cmVNYXAkRW50cnknLEN2ZT04MTkyLER2ZT0yMDQ4LEV2ZT0nYnl0ZScsRnZlPSdjaGFyJyxHdmU9J2RvdWJsZScsSHZlPSdmbG9hdCcsSXZlPSdpbnQnLEp2ZT0nbG9uZycsS3ZlPSdzaG9ydCcsTHZlPSdqYXZhLmxhbmcuT2JqZWN0JyxNdmU9ezM6MSw0OjEsNToxLDI0NzoxfSxOdmU9ezM6MSw0OjEsNToxLDY3MzoxfSxPdmU9ezM6MSw0OjEsMjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDU0OjEsNjc6MSw2MzoxLDU4OjEsNjk6MX0sUHZlPXszOjEsNDoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MSw1NDoxLDY3OjEsNjM6MSw1ODoxLDc2OjEsNjk6MSw5NToxfSxRdmU9J21peGVkJyxSdmU9J2h0dHA6Ly8vb3JnL2VjbGlwc2UvZW1mL2Vjb3JlL3V0aWwvRXh0ZW5kZWRNZXRhRGF0YScsU3ZlPSdraW5kJyxUdmU9ezM6MSw0OjEsNToxLDY3NDoxfSxVdmU9ezM6MSw0OjEsMjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDY3OjEsNTg6MSw3NjoxLDY5OjEsOTU6MX0sVnZlPXsyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNTg6MSw2OToxfSxXdmU9ezQ3OjEsMTI1OjEsMjc5OjF9LFh2ZT17NzI6MSwzMzI6MX0sWXZlPVwiVGhlIHZhbHVlIG9mIHR5cGUgJ1wiLFp2ZT1cIicgbXVzdCBiZSBvZiB0eXBlICdcIiwkdmU9MTMxNixfdmU9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUnLGF3ZT0tMzI3NjgsYndlPSdjb25zdHJhaW50cycsY3dlPSdiYXNlVHlwZScsZHdlPSdnZXRFU3RydWN0dXJhbEZlYXR1cmUnLGV3ZT0nZ2V0RmVhdHVyZUlEJyxmd2U9J2ZlYXR1cmUnLGd3ZT0nZ2V0T3BlcmF0aW9uSUQnLGh3ZT0nb3BlcmF0aW9uJyxpd2U9J2RlZmF1bHRWYWx1ZScsandlPSdlVHlwZVBhcmFtZXRlcnMnLGt3ZT0naXNJbnN0YW5jZScsbHdlPSdnZXRFRW51bUxpdGVyYWwnLG13ZT0nZUNvbnRhaW5pbmdDbGFzcycsbndlPXs1NToxfSxvd2U9ezM6MSw0OjEsNToxLDExOToxfSxwd2U9J29yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZScscXdlPXs5MjoxLDkwOjEsNTkxOjEsMTkzNToxfSxyd2U9J29yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsJyxzd2U9J3Vuc3BlY2lmaWVkJyx0d2U9J3NpbXBsZScsdXdlPSdhdHRyaWJ1dGUnLHZ3ZT0nYXR0cmlidXRlV2lsZGNhcmQnLHd3ZT0nZWxlbWVudCcseHdlPSdlbGVtZW50V2lsZGNhcmQnLHl3ZT0nY29sbGFwc2UnLHp3ZT0naXRlbVR5cGUnLEF3ZT0nbmFtZXNwYWNlJyxCd2U9JyMjdGFyZ2V0TmFtZXNwYWNlJyxDd2U9J3doaXRlU3BhY2UnLER3ZT0nd2lsZGNhcmRzJyxFd2U9J2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDMvWE1MVHlwZScsRndlPScjI2FueScsR3dlPSd1bmluaXRpYWxpemVkJyxId2U9J1RoZSBtdWx0aXBsaWNpdHkgY29uc3RyYWludCBpcyB2aW9sYXRlZCcsSXdlPSdvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUnLEp3ZT0nUHJvY2Vzc2luZ0luc3RydWN0aW9uJyxLd2U9J1NpbXBsZUFueVR5cGUnLEx3ZT0nWE1MVHlwZURvY3VtZW50Um9vdCcsTXdlPSdvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuaW1wbCcsTndlPSdJTkYnLE93ZT0ncHJvY2Vzc2luZycsUHdlPSdFTlRJVElFU18uX2Jhc2UnLFF3ZT0nbWluTGVuZ3RoJyxSd2U9J0VOVElUWScsU3dlPSdOQ05hbWUnLFR3ZT0nSURSRUZTXy5fYmFzZScsVXdlPSdpbnRlZ2VyJyxWd2U9J3Rva2VuJyxXd2U9J3BhdHRlcm4nLFh3ZT0nW2EtekEtWl17MSw4fSgtW2EtekEtWjAtOV17MSw4fSkqJyxZd2U9J1xcXFxpXFxcXGMqJyxad2U9J1tcXFxcaS1bOl1dW1xcXFxjLVs6XV0qJywkd2U9J25vblBvc2l0aXZlSW50ZWdlcicsX3dlPSdtYXhJbmNsdXNpdmUnLGF4ZT0nTk1UT0tFTicsYnhlPSdOTVRPS0VOU18uX2Jhc2UnLGN4ZT0nbm9uTmVnYXRpdmVJbnRlZ2VyJyxkeGU9J21pbkluY2x1c2l2ZScsZXhlPSdub3JtYWxpemVkU3RyaW5nJyxmeGU9J3Vuc2lnbmVkQnl0ZScsZ3hlPSd1bnNpZ25lZEludCcsaHhlPScxODQ0Njc0NDA3MzcwOTU1MTYxNScsaXhlPSd1bnNpZ25lZFNob3J0JyxqeGU9J3Byb2Nlc3NpbmdJbnN0cnVjdGlvbicsa3hlPSdvcmcuZWNsaXBzZS5lbWYuZWNvcmUueG1sLnR5cGUuaW50ZXJuYWwnLGx4ZT0xMTE0MTExLG14ZT0nSW50ZXJuYWwgRXJyb3I6IHNob3J0aGFuZHM6IFxcXFx1JyxueGU9J3htbDppc0RpZ2l0JyxveGU9J3htbDppc1dvcmQnLHB4ZT0neG1sOmlzU3BhY2UnLHF4ZT0neG1sOmlzTmFtZUNoYXInLHJ4ZT0neG1sOmlzSW5pdGlhbE5hbWVDaGFyJyxzeGU9JzA5XFx1MDY2MFxcdTA2NjlcXHUwNkYwXFx1MDZGOVxcdTA5NjZcXHUwOTZGXFx1MDlFNlxcdTA5RUZcXHUwQTY2XFx1MEE2RlxcdTBBRTZcXHUwQUVGXFx1MEI2NlxcdTBCNkZcXHUwQkU3XFx1MEJFRlxcdTBDNjZcXHUwQzZGXFx1MENFNlxcdTBDRUZcXHUwRDY2XFx1MEQ2RlxcdTBFNTBcXHUwRTU5XFx1MEVEMFxcdTBFRDlcXHUwRjIwXFx1MEYyOScsdHhlPSdBWmF6XFx4QzBcXHhENlxceEQ4XFx4RjZcXHhGOFxcdTAxMzFcXHUwMTM0XFx1MDEzRVxcdTAxNDFcXHUwMTQ4XFx1MDE0QVxcdTAxN0VcXHUwMTgwXFx1MDFDM1xcdTAxQ0RcXHUwMUYwXFx1MDFGNFxcdTAxRjVcXHUwMUZBXFx1MDIxN1xcdTAyNTBcXHUwMkE4XFx1MDJCQlxcdTAyQzFcXHUwMzg2XFx1MDM4NlxcdTAzODhcXHUwMzhBXFx1MDM4Q1xcdTAzOENcXHUwMzhFXFx1MDNBMVxcdTAzQTNcXHUwM0NFXFx1MDNEMFxcdTAzRDZcXHUwM0RBXFx1MDNEQVxcdTAzRENcXHUwM0RDXFx1MDNERVxcdTAzREVcXHUwM0UwXFx1MDNFMFxcdTAzRTJcXHUwM0YzXFx1MDQwMVxcdTA0MENcXHUwNDBFXFx1MDQ0RlxcdTA0NTFcXHUwNDVDXFx1MDQ1RVxcdTA0ODFcXHUwNDkwXFx1MDRDNFxcdTA0QzdcXHUwNEM4XFx1MDRDQlxcdTA0Q0NcXHUwNEQwXFx1MDRFQlxcdTA0RUVcXHUwNEY1XFx1MDRGOFxcdTA0RjlcXHUwNTMxXFx1MDU1NlxcdTA1NTlcXHUwNTU5XFx1MDU2MVxcdTA1ODZcXHUwNUQwXFx1MDVFQVxcdTA1RjBcXHUwNUYyXFx1MDYyMVxcdTA2M0FcXHUwNjQxXFx1MDY0QVxcdTA2NzFcXHUwNkI3XFx1MDZCQVxcdTA2QkVcXHUwNkMwXFx1MDZDRVxcdTA2RDBcXHUwNkQzXFx1MDZENVxcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA5MDVcXHUwOTM5XFx1MDkzRFxcdTA5M0RcXHUwOTU4XFx1MDk2MVxcdTA5ODVcXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzXFx1MDlBOFxcdTA5QUFcXHUwOUIwXFx1MDlCMlxcdTA5QjJcXHUwOUI2XFx1MDlCOVxcdTA5RENcXHUwOUREXFx1MDlERlxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTBBMDVcXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzXFx1MEEyOFxcdTBBMkFcXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OVxcdTBBNUNcXHUwQTVFXFx1MEE1RVxcdTBBNzJcXHUwQTc0XFx1MEE4NVxcdTBBOEJcXHUwQThEXFx1MEE4RFxcdTBBOEZcXHUwQTkxXFx1MEE5M1xcdTBBQThcXHUwQUFBXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNVxcdTBBQjlcXHUwQUJEXFx1MEFCRFxcdTBBRTBcXHUwQUUwXFx1MEIwNVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTNcXHUwQjI4XFx1MEIyQVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzZcXHUwQjM5XFx1MEIzRFxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUZcXHUwQjYxXFx1MEI4NVxcdTBCOEFcXHUwQjhFXFx1MEI5MFxcdTBCOTJcXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4XFx1MEJBQVxcdTBCQUVcXHUwQkI1XFx1MEJCN1xcdTBCQjlcXHUwQzA1XFx1MEMwQ1xcdTBDMEVcXHUwQzEwXFx1MEMxMlxcdTBDMjhcXHUwQzJBXFx1MEMzM1xcdTBDMzVcXHUwQzM5XFx1MEM2MFxcdTBDNjFcXHUwQzg1XFx1MEM4Q1xcdTBDOEVcXHUwQzkwXFx1MEM5MlxcdTBDQThcXHUwQ0FBXFx1MENCM1xcdTBDQjVcXHUwQ0I5XFx1MENERVxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBEMDVcXHUwRDBDXFx1MEQwRVxcdTBEMTBcXHUwRDEyXFx1MEQyOFxcdTBEMkFcXHUwRDM5XFx1MEQ2MFxcdTBENjFcXHUwRTAxXFx1MEUyRVxcdTBFMzBcXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwXFx1MEU0NVxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThBXFx1MEU4RFxcdTBFOERcXHUwRTk0XFx1MEU5N1xcdTBFOTlcXHUwRTlGXFx1MEVBMVxcdTBFQTNcXHUwRUE1XFx1MEVBNVxcdTBFQTdcXHUwRUE3XFx1MEVBQVxcdTBFQUJcXHUwRUFEXFx1MEVBRVxcdTBFQjBcXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVCRFxcdTBFQzBcXHUwRUM0XFx1MEY0MFxcdTBGNDdcXHUwRjQ5XFx1MEY2OVxcdTEwQTBcXHUxMEM1XFx1MTBEMFxcdTEwRjZcXHUxMTAwXFx1MTEwMFxcdTExMDJcXHUxMTAzXFx1MTEwNVxcdTExMDdcXHUxMTA5XFx1MTEwOVxcdTExMEJcXHUxMTBDXFx1MTEwRVxcdTExMTJcXHUxMTNDXFx1MTEzQ1xcdTExM0VcXHUxMTNFXFx1MTE0MFxcdTExNDBcXHUxMTRDXFx1MTE0Q1xcdTExNEVcXHUxMTRFXFx1MTE1MFxcdTExNTBcXHUxMTU0XFx1MTE1NVxcdTExNTlcXHUxMTU5XFx1MTE1RlxcdTExNjFcXHUxMTYzXFx1MTE2M1xcdTExNjVcXHUxMTY1XFx1MTE2N1xcdTExNjdcXHUxMTY5XFx1MTE2OVxcdTExNkRcXHUxMTZFXFx1MTE3MlxcdTExNzNcXHUxMTc1XFx1MTE3NVxcdTExOUVcXHUxMTlFXFx1MTFBOFxcdTExQThcXHUxMUFCXFx1MTFBQlxcdTExQUVcXHUxMUFGXFx1MTFCN1xcdTExQjhcXHUxMUJBXFx1MTFCQVxcdTExQkNcXHUxMUMyXFx1MTFFQlxcdTExRUJcXHUxMUYwXFx1MTFGMFxcdTExRjlcXHUxMUY5XFx1MUUwMFxcdTFFOUJcXHUxRUEwXFx1MUVGOVxcdTFGMDBcXHUxRjE1XFx1MUYxOFxcdTFGMURcXHUxRjIwXFx1MUY0NVxcdTFGNDhcXHUxRjREXFx1MUY1MFxcdTFGNTdcXHUxRjU5XFx1MUY1OVxcdTFGNUJcXHUxRjVCXFx1MUY1RFxcdTFGNURcXHUxRjVGXFx1MUY3RFxcdTFGODBcXHUxRkI0XFx1MUZCNlxcdTFGQkNcXHUxRkJFXFx1MUZCRVxcdTFGQzJcXHUxRkM0XFx1MUZDNlxcdTFGQ0NcXHUxRkQwXFx1MUZEM1xcdTFGRDZcXHUxRkRCXFx1MUZFMFxcdTFGRUNcXHUxRkYyXFx1MUZGNFxcdTFGRjZcXHUxRkZDXFx1MjEyNlxcdTIxMjZcXHUyMTJBXFx1MjEyQlxcdTIxMkVcXHUyMTJFXFx1MjE4MFxcdTIxODJcXHUzMDA3XFx1MzAwN1xcdTMwMjFcXHUzMDI5XFx1MzA0MVxcdTMwOTRcXHUzMEExXFx1MzBGQVxcdTMxMDVcXHUzMTJDXFx1NEUwMFxcdTlGQTVcXHVBQzAwXFx1RDdBMycsdXhlPSdQcml2YXRlIFVzZScsdnhlPSdBU1NJR05FRCcsd3hlPSdcXHgwMFxceDdGXFx4ODBcXHhGRlxcdTAxMDBcXHUwMTdGXFx1MDE4MFxcdTAyNEZcXHUwMjUwXFx1MDJBRlxcdTAyQjBcXHUwMkZGXFx1MDMwMFxcdTAzNkZcXHUwMzcwXFx1MDNGRlxcdTA0MDBcXHUwNEZGXFx1MDUzMFxcdTA1OEZcXHUwNTkwXFx1MDVGRlxcdTA2MDBcXHUwNkZGXFx1MDcwMFxcdTA3NEZcXHUwNzgwXFx1MDdCRlxcdTA5MDBcXHUwOTdGXFx1MDk4MFxcdTA5RkZcXHUwQTAwXFx1MEE3RlxcdTBBODBcXHUwQUZGXFx1MEIwMFxcdTBCN0ZcXHUwQjgwXFx1MEJGRlxcdTBDMDBcXHUwQzdGXFx1MEM4MFxcdTBDRkZcXHUwRDAwXFx1MEQ3RlxcdTBEODBcXHUwREZGXFx1MEUwMFxcdTBFN0ZcXHUwRTgwXFx1MEVGRlxcdTBGMDBcXHUwRkZGXFx1MTAwMFxcdTEwOUZcXHUxMEEwXFx1MTBGRlxcdTExMDBcXHUxMUZGXFx1MTIwMFxcdTEzN0ZcXHUxM0EwXFx1MTNGRlxcdTE0MDBcXHUxNjdGXFx1MTY4MFxcdTE2OUZcXHUxNkEwXFx1MTZGRlxcdTE3ODBcXHUxN0ZGXFx1MTgwMFxcdTE4QUZcXHUxRTAwXFx1MUVGRlxcdTFGMDBcXHUxRkZGXFx1MjAwMFxcdTIwNkZcXHUyMDcwXFx1MjA5RlxcdTIwQTBcXHUyMENGXFx1MjBEMFxcdTIwRkZcXHUyMTAwXFx1MjE0RlxcdTIxNTBcXHUyMThGXFx1MjE5MFxcdTIxRkZcXHUyMjAwXFx1MjJGRlxcdTIzMDBcXHUyM0ZGXFx1MjQwMFxcdTI0M0ZcXHUyNDQwXFx1MjQ1RlxcdTI0NjBcXHUyNEZGXFx1MjUwMFxcdTI1N0ZcXHUyNTgwXFx1MjU5RlxcdTI1QTBcXHUyNUZGXFx1MjYwMFxcdTI2RkZcXHUyNzAwXFx1MjdCRlxcdTI4MDBcXHUyOEZGXFx1MkU4MFxcdTJFRkZcXHUyRjAwXFx1MkZERlxcdTJGRjBcXHUyRkZGXFx1MzAwMFxcdTMwM0ZcXHUzMDQwXFx1MzA5RlxcdTMwQTBcXHUzMEZGXFx1MzEwMFxcdTMxMkZcXHUzMTMwXFx1MzE4RlxcdTMxOTBcXHUzMTlGXFx1MzFBMFxcdTMxQkZcXHUzMjAwXFx1MzJGRlxcdTMzMDBcXHUzM0ZGXFx1MzQwMFxcdTREQjVcXHU0RTAwXFx1OUZGRlxcdUEwMDBcXHVBNDhGXFx1QTQ5MFxcdUE0Q0ZcXHVBQzAwXFx1RDdBM1xcdUUwMDBcXHVGOEZGXFx1RjkwMFxcdUZBRkZcXHVGQjAwXFx1RkI0RlxcdUZCNTBcXHVGREZGXFx1RkUyMFxcdUZFMkZcXHVGRTMwXFx1RkU0RlxcdUZFNTBcXHVGRTZGXFx1RkU3MFxcdUZFRkVcXHVGRUZGXFx1RkVGRlxcdUZGMDBcXHVGRkVGJyx4eGU9J1VOQVNTSUdORUQnLHl4ZT17MzoxLDExNzoxfSx6eGU9J29yZy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS51dGlsJyxBeGU9ezM6MSw0OjEsNToxLDM2ODoxfSxCeGU9J29yZy5lY2xpcHNlLnh0ZXh0LnhiYXNlLmxpYicsQ3hlPSdDYW5ub3QgYWRkIGVsZW1lbnRzIHRvIGEgUmFuZ2UnLER4ZT0nQ2Fubm90IHNldCBlbGVtZW50cyBpbiBhIFJhbmdlJyxFeGU9J0Nhbm5vdCByZW1vdmUgZWxlbWVudHMgZnJvbSBhIFJhbmdlJyxGeGU9J2xvY2FsZScsR3hlPSdkZWZhdWx0JyxIeGU9J3VzZXIuYWdlbnQnO3ZhciBfLF9iYixXYmIsdGJiPS0xOyR3bmQuZ29vZz0kd25kLmdvb2d8fHt9OyR3bmQuZ29vZy5nbG9iYWw9JHduZC5nb29nLmdsb2JhbHx8JHduZDthY2IoKTtiY2IoMSxudWxsLHt9LG5iKTtfLkZiPWZ1bmN0aW9uIG9iKGEpe3JldHVybiBtYih0aGlzLGEpfTtfLkdiPWZ1bmN0aW9uIHFiKCl7cmV0dXJuIHRoaXMuZ219O18uSGI9ZnVuY3Rpb24gc2IoKXtyZXR1cm4gRkNiKHRoaXMpfTtfLkliPWZ1bmN0aW9uIHViKCl7dmFyIGE7cmV0dXJuIGhkYihyYih0aGlzKSkrJ0AnKyhhPXRiKHRoaXMpPj4+MCxhLnRvU3RyaW5nKDE2KSl9O18uZXF1YWxzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLkZiKGEpfTtfLmhhc2hDb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuSGIoKX07Xy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkliKCl9O3ZhciB4RCx5RCx6RDtiY2IoMjkwLDEsezI5MDoxLDIwMjY6MX0samRiKTtfLmxlPWZ1bmN0aW9uIGtkYihhKXt2YXIgYjtiPW5ldyBqZGI7Yi5pPTQ7YT4xPyhiLmM9cmRiKHRoaXMsYS0xKSk6KGIuYz10aGlzKTtyZXR1cm4gYn07Xy5tZT1mdW5jdGlvbiBxZGIoKXtmZGIodGhpcyk7cmV0dXJuIHRoaXMuYn07Xy5uZT1mdW5jdGlvbiBzZGIoKXtyZXR1cm4gaGRiKHRoaXMpfTtfLm9lPWZ1bmN0aW9uIHVkYigpe3JldHVybiBmZGIodGhpcyksdGhpcy5rfTtfLnBlPWZ1bmN0aW9uIHdkYigpe3JldHVybiAodGhpcy5pJjQpIT0wfTtfLnFlPWZ1bmN0aW9uIHhkYigpe3JldHVybiAodGhpcy5pJjEpIT0wfTtfLkliPWZ1bmN0aW9uIEFkYigpe3JldHVybiBpZGIodGhpcyl9O18uaT0wO3ZhciBlZGI9MTt2YXIgU0k9bWRiKFBoZSwnT2JqZWN0JywxKTt2YXIgQUk9bWRiKFBoZSwnQ2xhc3MnLDI5MCk7YmNiKDE5OTgsMSxRaGUpO3ZhciAkRD1tZGIoUmhlLCdPcHRpb25hbCcsMTk5OCk7YmNiKDExNzAsMTk5OCxRaGUseGIpO18uRmI9ZnVuY3Rpb24geWIoYSl7cmV0dXJuIGE9PT10aGlzfTtfLkhiPWZ1bmN0aW9uIHpiKCl7cmV0dXJuIDIwNDA3MzIzMzJ9O18uSWI9ZnVuY3Rpb24gQWIoKXtyZXR1cm4gJ09wdGlvbmFsLmFic2VudCgpJ307Xy5KYj1mdW5jdGlvbiBCYihhKXtRYihhKTtyZXR1cm4gd2IoKSx2Yn07dmFyIHZiO3ZhciBZRD1tZGIoUmhlLCdBYnNlbnQnLDExNzApO2JjYig2MjgsMSx7fSxHYik7dmFyIFpEPW1kYihSaGUsJ0pvaW5lcicsNjI4KTt2YXIgX0Q9b2RiKFJoZSwnUHJlZGljYXRlJyk7YmNiKDU4MiwxLHsxNjk6MSw1ODI6MSwzOjEsNDU6MX0sWWIpO18uTWI9ZnVuY3Rpb24gYWMoYSl7cmV0dXJuIFhiKHRoaXMsYSl9O18uTGI9ZnVuY3Rpb24gWmIoYSl7cmV0dXJuIFhiKHRoaXMsYSl9O18uRmI9ZnVuY3Rpb24gJGIoYSl7dmFyIGI7aWYoSkQoYSw1ODIpKXtiPUJEKGEsNTgyKTtyZXR1cm4gQXQodGhpcy5hLGIuYSl9cmV0dXJuIGZhbHNlfTtfLkhiPWZ1bmN0aW9uIF9iKCl7cmV0dXJuIHFtYih0aGlzLmEpKzMwNjY1NDI1Mn07Xy5JYj1mdW5jdGlvbiBiYygpe3JldHVybiBXYih0aGlzLmEpfTt2YXIgYUU9bWRiKFJoZSwnUHJlZGljYXRlcy9BbmRQcmVkaWNhdGUnLDU4Mik7YmNiKDQwOCwxOTk4LHs0MDg6MSwzOjF9LGNjKTtfLkZiPWZ1bmN0aW9uIGRjKGEpe3ZhciBiO2lmKEpEKGEsNDA4KSl7Yj1CRChhLDQwOCk7cmV0dXJuIHBiKHRoaXMuYSxiLmEpfXJldHVybiBmYWxzZX07Xy5IYj1mdW5jdGlvbiBlYygpe3JldHVybiAxNTAyNDc2NTcyK3RiKHRoaXMuYSl9O18uSWI9ZnVuY3Rpb24gZmMoKXtyZXR1cm4gV2hlK3RoaXMuYSsnKSd9O18uSmI9ZnVuY3Rpb24gZ2MoYSl7cmV0dXJuIG5ldyBjYyhSYihhLktiKHRoaXMuYSksJ3RoZSBGdW5jdGlvbiBwYXNzZWQgdG8gT3B0aW9uYWwudHJhbnNmb3JtKCkgbXVzdCBub3QgcmV0dXJuIG51bGwuJykpfTt2YXIgYkU9bWRiKFJoZSwnUHJlc2VudCcsNDA4KTtiY2IoMTk4LDEsWWhlKTtfLk5iPWZ1bmN0aW9uIGtjKGEpe1JyYih0aGlzLGEpfTtfLlFiPWZ1bmN0aW9uIGxjKCl7amMoKX07dmFyIE1IPW1kYihaaGUsJ1VubW9kaWZpYWJsZUl0ZXJhdG9yJywxOTgpO2JjYigxOTc4LDE5OCwkaGUpO18uUWI9ZnVuY3Rpb24gbmMoKXtqYygpfTtfLlJiPWZ1bmN0aW9uIG1jKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5XYj1mdW5jdGlvbiBvYyhhKXt0aHJvdyB2YmIobmV3IGJnYil9O3ZhciBOSD1tZGIoWmhlLCdVbm1vZGlmaWFibGVMaXN0SXRlcmF0b3InLDE5NzgpO2JjYigzODYsMTk3OCwkaGUpO18uT2I9ZnVuY3Rpb24gcmMoKXtyZXR1cm4gdGhpcy5jPHRoaXMuZH07Xy5TYj1mdW5jdGlvbiBzYygpe3JldHVybiB0aGlzLmM+MH07Xy5QYj1mdW5jdGlvbiB0Yygpe2lmKHRoaXMuYz49dGhpcy5kKXt0aHJvdyB2YmIobmV3IHV0Yil9cmV0dXJuIHRoaXMuWGIodGhpcy5jKyspfTtfLlRiPWZ1bmN0aW9uIHVjKCl7cmV0dXJuIHRoaXMuY307Xy5VYj1mdW5jdGlvbiB2Yygpe2lmKHRoaXMuYzw9MCl7dGhyb3cgdmJiKG5ldyB1dGIpfXJldHVybiB0aGlzLlhiKC0tdGhpcy5jKX07Xy5WYj1mdW5jdGlvbiB3Yygpe3JldHVybiB0aGlzLmMtMX07Xy5jPTA7Xy5kPTA7dmFyIGNFPW1kYihaaGUsJ0Fic3RyYWN0SW5kZXhlZExpc3RJdGVyYXRvcicsMzg2KTtiY2IoNjk5LDE5OCxZaGUpO18uT2I9ZnVuY3Rpb24gQWMoKXtyZXR1cm4geGModGhpcyl9O18uUGI9ZnVuY3Rpb24gQmMoKXtyZXR1cm4geWModGhpcyl9O18uZT0xO3ZhciBkRT1tZGIoWmhlLCdBYnN0cmFjdEl0ZXJhdG9yJyw2OTkpO2JjYigxOTg2LDEsezIyNDoxfSk7Xy5aYj1mdW5jdGlvbiBIYygpe3ZhciBhO3JldHVybiBhPXRoaXMuZiwhYT8odGhpcy5mPXRoaXMuYWMoKSk6YX07Xy5GYj1mdW5jdGlvbiBJYyhhKXtyZXR1cm4gaHcodGhpcyxhKX07Xy5IYj1mdW5jdGlvbiBKYygpe3JldHVybiB0Yih0aGlzLlpiKCkpfTtfLmRjPWZ1bmN0aW9uIEtjKCl7cmV0dXJuIHRoaXMuZ2MoKT09MH07Xy5lYz1mdW5jdGlvbiBMYygpe3JldHVybiBFYyh0aGlzKX07Xy5JYj1mdW5jdGlvbiBNYygpe3JldHVybiBmY2IodGhpcy5aYigpKX07dmFyIElFPW1kYihaaGUsJ0Fic3RyYWN0TXVsdGltYXAnLDE5ODYpO2JjYig3MjYsMTk4NixfaGUpO18uJGI9ZnVuY3Rpb24gWGMoKXtOYyh0aGlzKX07Xy5fYj1mdW5jdGlvbiBZYyhhKXtyZXR1cm4gT2ModGhpcyxhKX07Xy5hYz1mdW5jdGlvbiBaYygpe3JldHVybiBuZXcgbmUodGhpcyx0aGlzLmMpfTtfLmljPWZ1bmN0aW9uICRjKGEpe3JldHVybiB0aGlzLmhjKCl9O18uYmM9ZnVuY3Rpb24gX2MoKXtyZXR1cm4gbmV3IHpmKHRoaXMsdGhpcy5jKX07Xy5qYz1mdW5jdGlvbiBhZCgpe3JldHVybiB0aGlzLm1jKHRoaXMuaGMoKSl9O18ua2M9ZnVuY3Rpb24gYmQoKXtyZXR1cm4gbmV3IEhkKHRoaXMpfTtfLmxjPWZ1bmN0aW9uIGNkKCl7cmV0dXJuIFlqKHRoaXMuYy52YygpLk5jKCksbmV3ICRnLDY0LHRoaXMuZCl9O18uY2M9ZnVuY3Rpb24gZGQoYSl7cmV0dXJuIFFjKHRoaXMsYSl9O18uZmM9ZnVuY3Rpb24gZ2QoYSl7cmV0dXJuIFNjKHRoaXMsYSl9O18uZ2M9ZnVuY3Rpb24gaGQoKXtyZXR1cm4gdGhpcy5kfTtfLm1jPWZ1bmN0aW9uIGpkKGEpe3JldHVybiBtbWIoKSxuZXcgbG5iKGEpfTtfLm5jPWZ1bmN0aW9uIGtkKCl7cmV0dXJuIG5ldyBEZCh0aGlzKX07Xy5vYz1mdW5jdGlvbiBsZCgpe3JldHVybiBZaih0aGlzLmMuQ2MoKS5OYygpLG5ldyBGZCw2NCx0aGlzLmQpfTtfLnBjPWZ1bmN0aW9uIG1kKGEsYil7cmV0dXJuIG5ldyBkZyh0aGlzLGEsYixudWxsKX07Xy5kPTA7dmFyIERFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcCcsNzI2KTtiY2IoMTYzMSw3MjYsX2hlKTtfLmhjPWZ1bmN0aW9uIHBkKCl7cmV0dXJuIG5ldyBTa2IodGhpcy5hKX07Xy5qYz1mdW5jdGlvbiBxZCgpe3JldHVybiBtbWIoKSxtbWIoKSxqbWJ9O18uY2M9ZnVuY3Rpb24gc2QoYSl7cmV0dXJuIEJEKFFjKHRoaXMsYSksMTUpfTtfLmZjPWZ1bmN0aW9uIHVkKGEpe3JldHVybiBCRChTYyh0aGlzLGEpLDE1KX07Xy5aYj1mdW5jdGlvbiBvZCgpe3JldHVybiBuZCh0aGlzKX07Xy5GYj1mdW5jdGlvbiByZChhKXtyZXR1cm4gaHcodGhpcyxhKX07Xy5xYz1mdW5jdGlvbiB0ZChhKXtyZXR1cm4gQkQoUWModGhpcyxhKSwxNSl9O18ucmM9ZnVuY3Rpb24gdmQoYSl7cmV0dXJuIEJEKFNjKHRoaXMsYSksMTUpfTtfLm1jPWZ1bmN0aW9uIHdkKGEpe3JldHVybiB2bWIoQkQoYSwxNSkpfTtfLnBjPWZ1bmN0aW9uIHhkKGEsYil7cmV0dXJuIFZjKHRoaXMsYSxCRChiLDE1KSxudWxsKX07dmFyIGVFPW1kYihaaGUsJ0Fic3RyYWN0TGlzdE11bHRpbWFwJywxNjMxKTtiY2IoNzMyLDEsYWllKTtfLk5iPWZ1bmN0aW9uIHpkKGEpe1JyYih0aGlzLGEpfTtfLk9iPWZ1bmN0aW9uIEFkKCl7cmV0dXJuIHRoaXMuYy5PYigpfHx0aGlzLmUuT2IoKX07Xy5QYj1mdW5jdGlvbiBCZCgpe3ZhciBhO2lmKCF0aGlzLmUuT2IoKSl7YT1CRCh0aGlzLmMuUGIoKSw0Mik7dGhpcy5iPWEuY2QoKTt0aGlzLmE9QkQoYS5kZCgpLDE0KTt0aGlzLmU9dGhpcy5hLktjKCl9cmV0dXJuIHRoaXMuc2ModGhpcy5iLHRoaXMuZS5QYigpKX07Xy5RYj1mdW5jdGlvbiBDZCgpe3RoaXMuZS5RYigpO3RoaXMuYS5kYygpJiZ0aGlzLmMuUWIoKTstLXRoaXMuZC5kfTt2YXIgbUU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL0l0cicsNzMyKTtiY2IoMTA5OSw3MzIsYWllLERkKTtfLnNjPWZ1bmN0aW9uIEVkKGEsYil7cmV0dXJuIGJ9O3ZhciBmRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvMScsMTA5OSk7YmNiKDExMDAsMSx7fSxGZCk7Xy5LYj1mdW5jdGlvbiBHZChhKXtyZXR1cm4gQkQoYSwxNCkuTmMoKX07dmFyIGdFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC8xbWV0aG9kcmVmJHNwbGl0ZXJhdG9yJFR5cGUnLDExMDApO2JjYigxMTAxLDczMixhaWUsSGQpO18uc2M9ZnVuY3Rpb24gSWQoYSxiKXtyZXR1cm4gbmV3IFdvKGEsYil9O3ZhciBoRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvMicsMTEwMSk7dmFyIERLPW9kYihiaWUsJ01hcCcpO2JjYigxOTY3LDEsY2llKTtfLndjPWZ1bmN0aW9uIFRkKGEpe3N0Yih0aGlzLGEpfTtfLnljPWZ1bmN0aW9uICRkKGEsYixjKXtyZXR1cm4gdHRiKHRoaXMsYSxiLGMpfTtfLiRiPWZ1bmN0aW9uIE9kKCl7dGhpcy52YygpLiRiKCl9O18udGM9ZnVuY3Rpb24gUGQoYSl7cmV0dXJuIEpkKHRoaXMsYSl9O18uX2I9ZnVuY3Rpb24gUWQoYSl7cmV0dXJuICEhS2QodGhpcyxhLGZhbHNlKX07Xy51Yz1mdW5jdGlvbiBSZChhKXt2YXIgYixjLGQ7Zm9yKGM9dGhpcy52YygpLktjKCk7Yy5PYigpOyl7Yj1CRChjLlBiKCksNDIpO2Q9Yi5kZCgpO2lmKFBEKGEpPT09UEQoZCl8fGEhPW51bGwmJnBiKGEsZCkpe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9O18uRmI9ZnVuY3Rpb24gU2QoYSl7dmFyIGIsYyxkO2lmKGE9PT10aGlzKXtyZXR1cm4gdHJ1ZX1pZighSkQoYSw4Mykpe3JldHVybiBmYWxzZX1kPUJEKGEsODMpO2lmKHRoaXMuZ2MoKSE9ZC5nYygpKXtyZXR1cm4gZmFsc2V9Zm9yKGM9ZC52YygpLktjKCk7Yy5PYigpOyl7Yj1CRChjLlBiKCksNDIpO2lmKCF0aGlzLnRjKGIpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfTtfLnhjPWZ1bmN0aW9uIFVkKGEpe3JldHVybiBXZChLZCh0aGlzLGEsZmFsc2UpKX07Xy5IYj1mdW5jdGlvbiBYZCgpe3JldHVybiBwbWIodGhpcy52YygpKX07Xy5kYz1mdW5jdGlvbiBZZCgpe3JldHVybiB0aGlzLmdjKCk9PTB9O18uZWM9ZnVuY3Rpb24gWmQoKXtyZXR1cm4gbmV3IFBpYih0aGlzKX07Xy56Yz1mdW5jdGlvbiBfZChhLGIpe3Rocm93IHZiYihuZXcgY2diKCdQdXQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIG1hcCcpKX07Xy5BYz1mdW5jdGlvbiBhZShhKXtMZCh0aGlzLGEpfTtfLkJjPWZ1bmN0aW9uIGJlKGEpe3JldHVybiBXZChLZCh0aGlzLGEsdHJ1ZSkpfTtfLmdjPWZ1bmN0aW9uIGNlKCl7cmV0dXJuIHRoaXMudmMoKS5nYygpfTtfLkliPWZ1bmN0aW9uIGRlKCl7cmV0dXJuIE1kKHRoaXMpfTtfLkNjPWZ1bmN0aW9uIGVlKCl7cmV0dXJuIG5ldyAkaWIodGhpcyl9O3ZhciBzSj1tZGIoYmllLCdBYnN0cmFjdE1hcCcsMTk2Nyk7YmNiKDE5ODcsMTk2NyxjaWUpO18uYmM9ZnVuY3Rpb24gZ2UoKXtyZXR1cm4gbmV3IHJmKHRoaXMpfTtfLnZjPWZ1bmN0aW9uIGhlKCl7cmV0dXJuIGZlKHRoaXMpfTtfLmVjPWZ1bmN0aW9uIGllKCl7dmFyIGE7YT10aGlzLmc7cmV0dXJuICFhPyh0aGlzLmc9dGhpcy5iYygpKTphfTtfLkNjPWZ1bmN0aW9uIGplKCl7dmFyIGE7YT10aGlzLmk7cmV0dXJuICFhPyh0aGlzLmk9bmV3IFp2KHRoaXMpKTphfTt2YXIgYkg9bWRiKFpoZSwnTWFwcy9WaWV3Q2FjaGluZ0Fic3RyYWN0TWFwJywxOTg3KTtiY2IoMzg5LDE5ODcsY2llLG5lKTtfLnhjPWZ1bmN0aW9uIHNlKGEpe3JldHVybiBrZSh0aGlzLGEpfTtfLkJjPWZ1bmN0aW9uIHZlKGEpe3JldHVybiBsZSh0aGlzLGEpfTtfLiRiPWZ1bmN0aW9uIG9lKCl7dGhpcy5kPT10aGlzLmUuYz90aGlzLmUuJGIoKTppcihuZXcgbWYodGhpcykpfTtfLl9iPWZ1bmN0aW9uIHBlKGEpe3JldHVybiBHdih0aGlzLmQsYSl9O18uRWM9ZnVuY3Rpb24gcWUoKXtyZXR1cm4gbmV3IGRmKHRoaXMpfTtfLkRjPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRWMoKX07Xy5GYj1mdW5jdGlvbiByZShhKXtyZXR1cm4gdGhpcz09PWF8fHBiKHRoaXMuZCxhKX07Xy5IYj1mdW5jdGlvbiB0ZSgpe3JldHVybiB0Yih0aGlzLmQpfTtfLmVjPWZ1bmN0aW9uIHVlKCl7cmV0dXJuIHRoaXMuZS5lYygpfTtfLmdjPWZ1bmN0aW9uIHdlKCl7cmV0dXJuIHRoaXMuZC5nYygpfTtfLkliPWZ1bmN0aW9uIHhlKCl7cmV0dXJuIGZjYih0aGlzLmQpfTt2YXIgbEU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL0FzTWFwJywzODkpO3ZhciBLST1vZGIoUGhlLCdJdGVyYWJsZScpO2JjYigyOCwxLGRpZSk7Xy5KYz1mdW5jdGlvbiBMZShhKXtyZWIodGhpcyxhKX07Xy5MYz1mdW5jdGlvbiBOZSgpe3JldHVybiB0aGlzLk9jKCl9O18uTmM9ZnVuY3Rpb24gUGUoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDApfTtfLk9jPWZ1bmN0aW9uIFFlKCl7cmV0dXJuIG5ldyBZQWIobnVsbCx0aGlzLk5jKCkpfTtfLkZjPWZ1bmN0aW9uIEdlKGEpe3Rocm93IHZiYihuZXcgY2diKCdBZGQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGNvbGxlY3Rpb24nKSl9O18uR2M9ZnVuY3Rpb24gSGUoYSl7cmV0dXJuIHllKHRoaXMsYSl9O18uJGI9ZnVuY3Rpb24gSWUoKXtBZSh0aGlzKX07Xy5IYz1mdW5jdGlvbiBKZShhKXtyZXR1cm4gemUodGhpcyxhLGZhbHNlKX07Xy5JYz1mdW5jdGlvbiBLZShhKXtyZXR1cm4gQmUodGhpcyxhKX07Xy5kYz1mdW5jdGlvbiBNZSgpe3JldHVybiB0aGlzLmdjKCk9PTB9O18uTWM9ZnVuY3Rpb24gT2UoYSl7cmV0dXJuIHplKHRoaXMsYSx0cnVlKX07Xy5QYz1mdW5jdGlvbiBSZSgpe3JldHVybiBEZSh0aGlzKX07Xy5RYz1mdW5jdGlvbiBTZShhKXtyZXR1cm4gRWUodGhpcyxhKX07Xy5JYj1mdW5jdGlvbiBUZSgpe3JldHVybiBGZSh0aGlzKX07dmFyIGRKPW1kYihiaWUsJ0Fic3RyYWN0Q29sbGVjdGlvbicsMjgpO3ZhciBMSz1vZGIoYmllLCdTZXQnKTtiY2IoZWllLDI4LGZpZSk7Xy5OYz1mdW5jdGlvbiBZZSgpe3JldHVybiBuZXcgS3ViKHRoaXMsMSl9O18uRmI9ZnVuY3Rpb24gV2UoYSl7cmV0dXJuIFVlKHRoaXMsYSl9O18uSGI9ZnVuY3Rpb24gWGUoKXtyZXR1cm4gcG1iKHRoaXMpfTt2YXIgeko9bWRiKGJpZSwnQWJzdHJhY3RTZXQnLGVpZSk7YmNiKDE5NzAsZWllLGZpZSk7dmFyIEJIPW1kYihaaGUsJ1NldHMvSW1wcm92ZWRBYnN0cmFjdFNldCcsMTk3MCk7YmNiKDE5NzEsMTk3MCxmaWUpO18uJGI9ZnVuY3Rpb24gJGUoKXt0aGlzLlJjKCkuJGIoKX07Xy5IYz1mdW5jdGlvbiBfZShhKXtyZXR1cm4gWmUodGhpcyxhKX07Xy5kYz1mdW5jdGlvbiBhZigpe3JldHVybiB0aGlzLlJjKCkuZGMoKX07Xy5NYz1mdW5jdGlvbiBiZihhKXt2YXIgYjtpZih0aGlzLkhjKGEpKXtiPUJEKGEsNDIpO3JldHVybiB0aGlzLlJjKCkuZWMoKS5NYyhiLmNkKCkpfXJldHVybiBmYWxzZX07Xy5nYz1mdW5jdGlvbiBjZigpe3JldHVybiB0aGlzLlJjKCkuZ2MoKX07dmFyIFdHPW1kYihaaGUsJ01hcHMvRW50cnlTZXQnLDE5NzEpO2JjYigxMDk3LDE5NzEsZmllLGRmKTtfLkhjPWZ1bmN0aW9uIGVmKGEpe3JldHVybiBDayh0aGlzLmEuZC52YygpLGEpfTtfLktjPWZ1bmN0aW9uIGZmKCl7cmV0dXJuIG5ldyBtZih0aGlzLmEpfTtfLlJjPWZ1bmN0aW9uIGdmKCl7cmV0dXJuIHRoaXMuYX07Xy5NYz1mdW5jdGlvbiBoZihhKXt2YXIgYjtpZighQ2sodGhpcy5hLmQudmMoKSxhKSl7cmV0dXJuIGZhbHNlfWI9QkQoYSw0Mik7VGModGhpcy5hLmUsYi5jZCgpKTtyZXR1cm4gdHJ1ZX07Xy5OYz1mdW5jdGlvbiBqZigpe3JldHVybiAkaih0aGlzLmEuZC52YygpLk5jKCksbmV3IGtmKHRoaXMuYSkpfTt2YXIgakU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL0FzTWFwL0FzTWFwRW50cmllcycsMTA5Nyk7YmNiKDEwOTgsMSx7fSxrZik7Xy5LYj1mdW5jdGlvbiBsZihhKXtyZXR1cm4gbWUodGhpcy5hLEJEKGEsNDIpKX07dmFyIGlFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9Bc01hcC9Bc01hcEVudHJpZXMvMG1ldGhvZHJlZiR3cmFwRW50cnkkVHlwZScsMTA5OCk7YmNiKDczMCwxLGFpZSxtZik7Xy5OYj1mdW5jdGlvbiBuZihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBwZigpe3ZhciBhO3JldHVybiBhPUJEKHRoaXMuYi5QYigpLDQyKSx0aGlzLmE9QkQoYS5kZCgpLDE0KSxtZSh0aGlzLmMsYSl9O18uT2I9ZnVuY3Rpb24gb2YoKXtyZXR1cm4gdGhpcy5iLk9iKCl9O18uUWI9ZnVuY3Rpb24gcWYoKXtWYighIXRoaXMuYSk7dGhpcy5iLlFiKCk7dGhpcy5jLmUuZC09dGhpcy5hLmdjKCk7dGhpcy5hLiRiKCk7dGhpcy5hPW51bGx9O3ZhciBrRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvQXNNYXAvQXNNYXBJdGVyYXRvcicsNzMwKTtiY2IoNTMyLDE5NzAsZmllLHJmKTtfLiRiPWZ1bmN0aW9uIHNmKCl7dGhpcy5iLiRiKCl9O18uSGM9ZnVuY3Rpb24gdGYoYSl7cmV0dXJuIHRoaXMuYi5fYihhKX07Xy5KYz1mdW5jdGlvbiB1ZihhKXtRYihhKTt0aGlzLmIud2MobmV3IFh2KGEpKX07Xy5kYz1mdW5jdGlvbiB2Zigpe3JldHVybiB0aGlzLmIuZGMoKX07Xy5LYz1mdW5jdGlvbiB3Zigpe3JldHVybiBuZXcgTXYodGhpcy5iLnZjKCkuS2MoKSl9O18uTWM9ZnVuY3Rpb24geGYoYSl7aWYodGhpcy5iLl9iKGEpKXt0aGlzLmIuQmMoYSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfTtfLmdjPWZ1bmN0aW9uIHlmKCl7cmV0dXJuIHRoaXMuYi5nYygpfTt2YXIgJEc9bWRiKFpoZSwnTWFwcy9LZXlTZXQnLDUzMik7YmNiKDMxOCw1MzIsZmllLHpmKTtfLiRiPWZ1bmN0aW9uIEFmKCl7dmFyIGE7aXIoKGE9dGhpcy5iLnZjKCkuS2MoKSxuZXcgSGYodGhpcyxhKSkpfTtfLkljPWZ1bmN0aW9uIEJmKGEpe3JldHVybiB0aGlzLmIuZWMoKS5JYyhhKX07Xy5GYj1mdW5jdGlvbiBDZihhKXtyZXR1cm4gdGhpcz09PWF8fHBiKHRoaXMuYi5lYygpLGEpfTtfLkhiPWZ1bmN0aW9uIERmKCl7cmV0dXJuIHRiKHRoaXMuYi5lYygpKX07Xy5LYz1mdW5jdGlvbiBFZigpe3ZhciBhO3JldHVybiBhPXRoaXMuYi52YygpLktjKCksbmV3IEhmKHRoaXMsYSl9O18uTWM9ZnVuY3Rpb24gRmYoYSl7dmFyIGIsYztjPTA7Yj1CRCh0aGlzLmIuQmMoYSksMTQpO2lmKGIpe2M9Yi5nYygpO2IuJGIoKTt0aGlzLmEuZC09Y31yZXR1cm4gYz4wfTtfLk5jPWZ1bmN0aW9uIEdmKCl7cmV0dXJuIHRoaXMuYi5lYygpLk5jKCl9O3ZhciBvRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvS2V5U2V0JywzMTgpO2JjYig3MzEsMSxhaWUsSGYpO18uTmI9ZnVuY3Rpb24gSWYoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gSmYoKXtyZXR1cm4gdGhpcy5jLk9iKCl9O18uUGI9ZnVuY3Rpb24gS2YoKXt0aGlzLmE9QkQodGhpcy5jLlBiKCksNDIpO3JldHVybiB0aGlzLmEuY2QoKX07Xy5RYj1mdW5jdGlvbiBMZigpe3ZhciBhO1ZiKCEhdGhpcy5hKTthPUJEKHRoaXMuYS5kZCgpLDE0KTt0aGlzLmMuUWIoKTt0aGlzLmIuYS5kLT1hLmdjKCk7YS4kYigpO3RoaXMuYT1udWxsfTt2YXIgbkU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL0tleVNldC8xJyw3MzEpO2JjYig0OTEsMzg5LHs4MzoxLDE2MToxfSxNZik7Xy5iYz1mdW5jdGlvbiBOZigpe3JldHVybiB0aGlzLlNjKCl9O18uZWM9ZnVuY3Rpb24gUGYoKXtyZXR1cm4gdGhpcy5UYygpfTtfLlNjPWZ1bmN0aW9uIE9mKCl7cmV0dXJuIG5ldyBZZih0aGlzLmMsdGhpcy5VYygpKX07Xy5UYz1mdW5jdGlvbiBRZigpe3ZhciBhO3JldHVybiBhPXRoaXMuYiwhYT8odGhpcy5iPXRoaXMuU2MoKSk6YX07Xy5VYz1mdW5jdGlvbiBSZigpe3JldHVybiBCRCh0aGlzLmQsMTYxKX07dmFyIHNFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9Tb3J0ZWRBc01hcCcsNDkxKTtiY2IoNTQyLDQ5MSxnaWUsU2YpO18uYmM9ZnVuY3Rpb24gVGYoKXtyZXR1cm4gbmV3ICRmKHRoaXMuYSxCRChCRCh0aGlzLmQsMTYxKSwxNzEpKX07Xy5TYz1mdW5jdGlvbiBVZigpe3JldHVybiBuZXcgJGYodGhpcy5hLEJEKEJEKHRoaXMuZCwxNjEpLDE3MSkpfTtfLmVjPWZ1bmN0aW9uIFZmKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5iLEJEKCFhPyh0aGlzLmI9bmV3ICRmKHRoaXMuYSxCRChCRCh0aGlzLmQsMTYxKSwxNzEpKSk6YSwyNzEpfTtfLlRjPWZ1bmN0aW9uIFdmKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5iLEJEKCFhPyh0aGlzLmI9bmV3ICRmKHRoaXMuYSxCRChCRCh0aGlzLmQsMTYxKSwxNzEpKSk6YSwyNzEpfTtfLlVjPWZ1bmN0aW9uIFhmKCl7cmV0dXJuIEJEKEJEKHRoaXMuZCwxNjEpLDE3MSl9O3ZhciBwRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvTmF2aWdhYmxlQXNNYXAnLDU0Mik7YmNiKDQ5MCwzMTgsaGllLFlmKTtfLk5jPWZ1bmN0aW9uIFpmKCl7cmV0dXJuIHRoaXMuYi5lYygpLk5jKCl9O3ZhciB0RT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvU29ydGVkS2V5U2V0Jyw0OTApO2JjYigzODgsNDkwLGlpZSwkZik7dmFyIHFFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9OYXZpZ2FibGVLZXlTZXQnLDM4OCk7YmNiKDU0MSwyOCxkaWUsZGcpO18uRmM9ZnVuY3Rpb24gZWcoYSl7dmFyIGIsYzthZyh0aGlzKTtjPXRoaXMuZC5kYygpO2I9dGhpcy5kLkZjKGEpO2lmKGIpeysrdGhpcy5mLmQ7YyYmX2YodGhpcyl9cmV0dXJuIGJ9O18uR2M9ZnVuY3Rpb24gZmcoYSl7dmFyIGIsYyxkO2lmKGEuZGMoKSl7cmV0dXJuIGZhbHNlfWQ9KGFnKHRoaXMpLHRoaXMuZC5nYygpKTtiPXRoaXMuZC5HYyhhKTtpZihiKXtjPXRoaXMuZC5nYygpO3RoaXMuZi5kKz1jLWQ7ZD09MCYmX2YodGhpcyl9cmV0dXJuIGJ9O18uJGI9ZnVuY3Rpb24gZ2coKXt2YXIgYTthPShhZyh0aGlzKSx0aGlzLmQuZ2MoKSk7aWYoYT09MCl7cmV0dXJufXRoaXMuZC4kYigpO3RoaXMuZi5kLT1hO2JnKHRoaXMpfTtfLkhjPWZ1bmN0aW9uIGhnKGEpe2FnKHRoaXMpO3JldHVybiB0aGlzLmQuSGMoYSl9O18uSWM9ZnVuY3Rpb24gaWcoYSl7YWcodGhpcyk7cmV0dXJuIHRoaXMuZC5JYyhhKX07Xy5GYj1mdW5jdGlvbiBqZyhhKXtpZihhPT09dGhpcyl7cmV0dXJuIHRydWV9YWcodGhpcyk7cmV0dXJuIHBiKHRoaXMuZCxhKX07Xy5IYj1mdW5jdGlvbiBrZygpe2FnKHRoaXMpO3JldHVybiB0Yih0aGlzLmQpfTtfLktjPWZ1bmN0aW9uIGxnKCl7YWcodGhpcyk7cmV0dXJuIG5ldyBHZyh0aGlzKX07Xy5NYz1mdW5jdGlvbiBtZyhhKXt2YXIgYjthZyh0aGlzKTtiPXRoaXMuZC5NYyhhKTtpZihiKXstLXRoaXMuZi5kO2JnKHRoaXMpfXJldHVybiBifTtfLmdjPWZ1bmN0aW9uIG5nKCl7cmV0dXJuIGNnKHRoaXMpfTtfLk5jPWZ1bmN0aW9uIG9nKCl7cmV0dXJuIGFnKHRoaXMpLHRoaXMuZC5OYygpfTtfLkliPWZ1bmN0aW9uIHBnKCl7YWcodGhpcyk7cmV0dXJuIGZjYih0aGlzLmQpfTt2YXIgdkU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL1dyYXBwZWRDb2xsZWN0aW9uJyw1NDEpO3ZhciB5Sz1vZGIoYmllLCdMaXN0Jyk7YmNiKDcyOCw1NDEsezIwOjEsMjg6MSwxNDoxLDE1OjF9LHFnKTtfLmFkPWZ1bmN0aW9uIHpnKGEpe2t0Yih0aGlzLGEpfTtfLk5jPWZ1bmN0aW9uIEFnKCl7cmV0dXJuIGFnKHRoaXMpLHRoaXMuZC5OYygpfTtfLlZjPWZ1bmN0aW9uIHJnKGEsYil7dmFyIGM7YWcodGhpcyk7Yz10aGlzLmQuZGMoKTtCRCh0aGlzLmQsMTUpLlZjKGEsYik7Kyt0aGlzLmEuZDtjJiZfZih0aGlzKX07Xy5XYz1mdW5jdGlvbiBzZyhhLGIpe3ZhciBjLGQsZTtpZihiLmRjKCkpe3JldHVybiBmYWxzZX1lPShhZyh0aGlzKSx0aGlzLmQuZ2MoKSk7Yz1CRCh0aGlzLmQsMTUpLldjKGEsYik7aWYoYyl7ZD10aGlzLmQuZ2MoKTt0aGlzLmEuZCs9ZC1lO2U9PTAmJl9mKHRoaXMpfXJldHVybiBjfTtfLlhiPWZ1bmN0aW9uIHRnKGEpe2FnKHRoaXMpO3JldHVybiBCRCh0aGlzLmQsMTUpLlhiKGEpfTtfLlhjPWZ1bmN0aW9uIHVnKGEpe2FnKHRoaXMpO3JldHVybiBCRCh0aGlzLmQsMTUpLlhjKGEpfTtfLlljPWZ1bmN0aW9uIHZnKCl7YWcodGhpcyk7cmV0dXJuIG5ldyBNZyh0aGlzKX07Xy5aYz1mdW5jdGlvbiB3ZyhhKXthZyh0aGlzKTtyZXR1cm4gbmV3IE5nKHRoaXMsYSl9O18uJGM9ZnVuY3Rpb24geGcoYSl7dmFyIGI7YWcodGhpcyk7Yj1CRCh0aGlzLmQsMTUpLiRjKGEpOy0tdGhpcy5hLmQ7YmcodGhpcyk7cmV0dXJuIGJ9O18uX2M9ZnVuY3Rpb24geWcoYSxiKXthZyh0aGlzKTtyZXR1cm4gQkQodGhpcy5kLDE1KS5fYyhhLGIpfTtfLmJkPWZ1bmN0aW9uIEJnKGEsYil7YWcodGhpcyk7cmV0dXJuIFZjKHRoaXMuYSx0aGlzLmUsQkQodGhpcy5kLDE1KS5iZChhLGIpLCF0aGlzLmI/dGhpczp0aGlzLmIpfTt2YXIgeEU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL1dyYXBwZWRMaXN0Jyw3MjgpO2JjYigxMDk2LDcyOCx7MjA6MSwyODoxLDE0OjEsMTU6MSw1NDoxfSxDZyk7dmFyIHJFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9SYW5kb21BY2Nlc3NXcmFwcGVkTGlzdCcsMTA5Nik7YmNiKDYyMCwxLGFpZSxHZyk7Xy5OYj1mdW5jdGlvbiBJZyhhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBKZygpe0ZnKHRoaXMpO3JldHVybiB0aGlzLmIuT2IoKX07Xy5QYj1mdW5jdGlvbiBLZygpe0ZnKHRoaXMpO3JldHVybiB0aGlzLmIuUGIoKX07Xy5RYj1mdW5jdGlvbiBMZygpe0VnKHRoaXMpfTt2YXIgdUU9bWRiKFpoZSwnQWJzdHJhY3RNYXBCYXNlZE11bHRpbWFwL1dyYXBwZWRDb2xsZWN0aW9uL1dyYXBwZWRJdGVyYXRvcicsNjIwKTtiY2IoNzI5LDYyMCxqaWUsTWcsTmcpO18uUWI9ZnVuY3Rpb24gVGcoKXtFZyh0aGlzKX07Xy5SYj1mdW5jdGlvbiBPZyhhKXt2YXIgYjtiPWNnKHRoaXMuYSk9PTA7KEZnKHRoaXMpLEJEKHRoaXMuYiwxMjUpKS5SYihhKTsrK3RoaXMuYS5hLmQ7YiYmX2YodGhpcy5hKX07Xy5TYj1mdW5jdGlvbiBQZygpe3JldHVybiAoRmcodGhpcyksQkQodGhpcy5iLDEyNSkpLlNiKCl9O18uVGI9ZnVuY3Rpb24gUWcoKXtyZXR1cm4gKEZnKHRoaXMpLEJEKHRoaXMuYiwxMjUpKS5UYigpfTtfLlViPWZ1bmN0aW9uIFJnKCl7cmV0dXJuIChGZyh0aGlzKSxCRCh0aGlzLmIsMTI1KSkuVWIoKX07Xy5WYj1mdW5jdGlvbiBTZygpe3JldHVybiAoRmcodGhpcyksQkQodGhpcy5iLDEyNSkpLlZiKCl9O18uV2I9ZnVuY3Rpb24gVWcoYSl7KEZnKHRoaXMpLEJEKHRoaXMuYiwxMjUpKS5XYihhKX07dmFyIHdFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9XcmFwcGVkTGlzdC9XcmFwcGVkTGlzdEl0ZXJhdG9yJyw3MjkpO2JjYig3MjcsNTQxLGhpZSxWZyk7Xy5OYz1mdW5jdGlvbiBXZygpe3JldHVybiBhZyh0aGlzKSx0aGlzLmQuTmMoKX07dmFyIEFFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9XcmFwcGVkU29ydGVkU2V0Jyw3MjcpO2JjYigxMDk1LDcyNyxpaWUsWGcpO3ZhciB5RT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvV3JhcHBlZE5hdmlnYWJsZVNldCcsMTA5NSk7YmNiKDEwOTQsNTQxLGZpZSxZZyk7Xy5OYz1mdW5jdGlvbiBaZygpe3JldHVybiBhZyh0aGlzKSx0aGlzLmQuTmMoKX07dmFyIHpFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9XcmFwcGVkU2V0JywxMDk0KTtiY2IoMTEwMywxLHt9LCRnKTtfLktiPWZ1bmN0aW9uIF9nKGEpe3JldHVybiBmZChCRChhLDQyKSl9O3ZhciBCRT1tZGIoWmhlLCdBYnN0cmFjdE1hcEJhc2VkTXVsdGltYXAvbGFtYmRhJDEkVHlwZScsMTEwMyk7YmNiKDExMDIsMSx7fSxhaCk7Xy5LYj1mdW5jdGlvbiBiaChhKXtyZXR1cm4gbmV3IFdvKHRoaXMuYSxhKX07dmFyIENFPW1kYihaaGUsJ0Fic3RyYWN0TWFwQmFzZWRNdWx0aW1hcC9sYW1iZGEkMiRUeXBlJywxMTAyKTt2YXIgQ0s9b2RiKGJpZSwnTWFwL0VudHJ5Jyk7YmNiKDM0NSwxLGtpZSk7Xy5GYj1mdW5jdGlvbiBkaChhKXt2YXIgYjtpZihKRChhLDQyKSl7Yj1CRChhLDQyKTtyZXR1cm4gSGIodGhpcy5jZCgpLGIuY2QoKSkmJkhiKHRoaXMuZGQoKSxiLmRkKCkpfXJldHVybiBmYWxzZX07Xy5IYj1mdW5jdGlvbiBlaCgpe3ZhciBhLGI7YT10aGlzLmNkKCk7Yj10aGlzLmRkKCk7cmV0dXJuIChhPT1udWxsPzA6dGIoYSkpXihiPT1udWxsPzA6dGIoYikpfTtfLmVkPWZ1bmN0aW9uIGZoKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5JYj1mdW5jdGlvbiBnaCgpe3JldHVybiB0aGlzLmNkKCkrJz0nK3RoaXMuZGQoKX07dmFyIEVFPW1kYihaaGUsbGllLDM0NSk7YmNiKDE5ODgsMjgsZGllKTtfLiRiPWZ1bmN0aW9uIGhoKCl7dGhpcy5mZCgpLiRiKCl9O18uSGM9ZnVuY3Rpb24gaWgoYSl7dmFyIGI7aWYoSkQoYSw0Mikpe2I9QkQoYSw0Mik7cmV0dXJuIENjKHRoaXMuZmQoKSxiLmNkKCksYi5kZCgpKX1yZXR1cm4gZmFsc2V9O18uTWM9ZnVuY3Rpb24gamgoYSl7dmFyIGI7aWYoSkQoYSw0Mikpe2I9QkQoYSw0Mik7cmV0dXJuIEdjKHRoaXMuZmQoKSxiLmNkKCksYi5kZCgpKX1yZXR1cm4gZmFsc2V9O18uZ2M9ZnVuY3Rpb24ga2goKXtyZXR1cm4gdGhpcy5mZCgpLmR9O3ZhciBmSD1tZGIoWmhlLCdNdWx0aW1hcHMvRW50cmllcycsMTk4OCk7YmNiKDczMywxOTg4LGRpZSxsaCk7Xy5LYz1mdW5jdGlvbiBtaCgpe3JldHVybiB0aGlzLmEua2MoKX07Xy5mZD1mdW5jdGlvbiBuaCgpe3JldHVybiB0aGlzLmF9O18uTmM9ZnVuY3Rpb24gb2goKXtyZXR1cm4gdGhpcy5hLmxjKCl9O3ZhciBGRT1tZGIoWmhlLCdBYnN0cmFjdE11bHRpbWFwL0VudHJpZXMnLDczMyk7YmNiKDczNCw3MzMsZmllLHBoKTtfLk5jPWZ1bmN0aW9uIHNoKCl7cmV0dXJuIHRoaXMuYS5sYygpfTtfLkZiPWZ1bmN0aW9uIHFoKGEpe3JldHVybiBBeCh0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIHJoKCl7cmV0dXJuIEJ4KHRoaXMpfTt2YXIgR0U9bWRiKFpoZSwnQWJzdHJhY3RNdWx0aW1hcC9FbnRyeVNldCcsNzM0KTtiY2IoNzM1LDI4LGRpZSx0aCk7Xy4kYj1mdW5jdGlvbiB1aCgpe3RoaXMuYS4kYigpfTtfLkhjPWZ1bmN0aW9uIHZoKGEpe3JldHVybiBEYyh0aGlzLmEsYSl9O18uS2M9ZnVuY3Rpb24gd2goKXtyZXR1cm4gdGhpcy5hLm5jKCl9O18uZ2M9ZnVuY3Rpb24geGgoKXtyZXR1cm4gdGhpcy5hLmR9O18uTmM9ZnVuY3Rpb24geWgoKXtyZXR1cm4gdGhpcy5hLm9jKCl9O3ZhciBIRT1tZGIoWmhlLCdBYnN0cmFjdE11bHRpbWFwL1ZhbHVlcycsNzM1KTtiY2IoMTk4OSwyOCx7ODM1OjEsMjA6MSwyODoxLDE0OjF9KTtfLkpjPWZ1bmN0aW9uIEdoKGEpe1FiKGEpO0FoKHRoaXMpLkpjKG5ldyBYdyhhKSl9O18uTmM9ZnVuY3Rpb24gS2goKXt2YXIgYTtyZXR1cm4gYT1BaCh0aGlzKS5OYygpLFlqKGEsbmV3IGN4LDY0fGEucWQoKSYxMjk2LHRoaXMuYS5kKX07Xy5GYz1mdW5jdGlvbiBDaChhKXt6aCgpO3JldHVybiB0cnVlfTtfLkdjPWZ1bmN0aW9uIERoKGEpe3JldHVybiBRYih0aGlzKSxRYihhKSxKRChhLDU0Myk/WncoQkQoYSw4MzUpKTohYS5kYygpJiZmcih0aGlzLGEuS2MoKSl9O18uSGM9ZnVuY3Rpb24gRWgoYSl7dmFyIGI7cmV0dXJuIGI9QkQoSHYobmQodGhpcy5hKSxhKSwxNCksKCFiPzA6Yi5nYygpKT4wfTtfLkZiPWZ1bmN0aW9uIEZoKGEpe3JldHVybiAkdyh0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIEhoKCl7cmV0dXJuIHRiKEFoKHRoaXMpKX07Xy5kYz1mdW5jdGlvbiBJaCgpe3JldHVybiBBaCh0aGlzKS5kYygpfTtfLk1jPWZ1bmN0aW9uIEpoKGEpe3JldHVybiBCdyh0aGlzLGEsMSk+MH07Xy5JYj1mdW5jdGlvbiBMaCgpe3JldHVybiBmY2IoQWgodGhpcykpfTt2YXIgS0U9bWRiKFpoZSwnQWJzdHJhY3RNdWx0aXNldCcsMTk4OSk7YmNiKDE5OTEsMTk3MCxmaWUpO18uJGI9ZnVuY3Rpb24gTWgoKXtOYyh0aGlzLmEuYSl9O18uSGM9ZnVuY3Rpb24gTmgoYSl7dmFyIGIsYztpZihKRChhLDQ5Mikpe2M9QkQoYSw0MTYpO2lmKEJEKGMuYS5kZCgpLDE0KS5nYygpPD0wKXtyZXR1cm4gZmFsc2V9Yj1Bdyh0aGlzLmEsYy5hLmNkKCkpO3JldHVybiBiPT1CRChjLmEuZGQoKSwxNCkuZ2MoKX1yZXR1cm4gZmFsc2V9O18uTWM9ZnVuY3Rpb24gT2goYSl7dmFyIGIsYyxkLGU7aWYoSkQoYSw0OTIpKXtjPUJEKGEsNDE2KTtiPWMuYS5jZCgpO2Q9QkQoYy5hLmRkKCksMTQpLmdjKCk7aWYoZCE9MCl7ZT10aGlzLmE7cmV0dXJuIGF4KGUsYixkKX19cmV0dXJuIGZhbHNlfTt2YXIgcEg9bWRiKFpoZSwnTXVsdGlzZXRzL0VudHJ5U2V0JywxOTkxKTtiY2IoMTEwOSwxOTkxLGZpZSxQaCk7Xy5LYz1mdW5jdGlvbiBRaCgpe3JldHVybiBuZXcgTHcoZmUobmQodGhpcy5hLmEpKS5LYygpKX07Xy5nYz1mdW5jdGlvbiBSaCgpe3JldHVybiBuZCh0aGlzLmEuYSkuZ2MoKX07dmFyIEpFPW1kYihaaGUsJ0Fic3RyYWN0TXVsdGlzZXQvRW50cnlTZXQnLDExMDkpO2JjYig2MTksNzI2LF9oZSk7Xy5oYz1mdW5jdGlvbiBVaCgpe3JldHVybiB0aGlzLmdkKCl9O18uamM9ZnVuY3Rpb24gVmgoKXtyZXR1cm4gdGhpcy5oZCgpfTtfLmNjPWZ1bmN0aW9uIFloKGEpe3JldHVybiB0aGlzLmpkKGEpfTtfLmZjPWZ1bmN0aW9uICRoKGEpe3JldHVybiB0aGlzLmtkKGEpfTtfLlpiPWZ1bmN0aW9uIFRoKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5mLCFhPyh0aGlzLmY9dGhpcy5hYygpKTphfTtfLmhkPWZ1bmN0aW9uIFdoKCl7cmV0dXJuIG1tYigpLG1tYigpLGxtYn07Xy5GYj1mdW5jdGlvbiBYaChhKXtyZXR1cm4gaHcodGhpcyxhKX07Xy5qZD1mdW5jdGlvbiBaaChhKXtyZXR1cm4gQkQoUWModGhpcyxhKSwyMSl9O18ua2Q9ZnVuY3Rpb24gX2goYSl7cmV0dXJuIEJEKFNjKHRoaXMsYSksMjEpfTtfLm1jPWZ1bmN0aW9uIGFpKGEpe3JldHVybiBtbWIoKSxuZXcgem9iKEJEKGEsMjEpKX07Xy5wYz1mdW5jdGlvbiBiaShhLGIpe3JldHVybiBuZXcgWWcodGhpcyxhLEJEKGIsMjEpKX07dmFyIExFPW1kYihaaGUsJ0Fic3RyYWN0U2V0TXVsdGltYXAnLDYxOSk7YmNiKDE2NTcsNjE5LF9oZSk7Xy5oYz1mdW5jdGlvbiBlaSgpe3JldHVybiBuZXcgSHhiKHRoaXMuYil9O18uZ2Q9ZnVuY3Rpb24gZmkoKXtyZXR1cm4gbmV3IEh4Yih0aGlzLmIpfTtfLmpjPWZ1bmN0aW9uIGdpKCl7cmV0dXJuIEl4KG5ldyBIeGIodGhpcy5iKSl9O18uaGQ9ZnVuY3Rpb24gaGkoKXtyZXR1cm4gSXgobmV3IEh4Yih0aGlzLmIpKX07Xy5jYz1mdW5jdGlvbiBpaShhKXtyZXR1cm4gQkQoQkQoUWModGhpcyxhKSwyMSksODQpfTtfLmpkPWZ1bmN0aW9uIGppKGEpe3JldHVybiBCRChCRChRYyh0aGlzLGEpLDIxKSw4NCl9O18uZmM9ZnVuY3Rpb24ga2koYSl7cmV0dXJuIEJEKEJEKFNjKHRoaXMsYSksMjEpLDg0KX07Xy5rZD1mdW5jdGlvbiBsaShhKXtyZXR1cm4gQkQoQkQoU2ModGhpcyxhKSwyMSksODQpfTtfLm1jPWZ1bmN0aW9uIG1pKGEpe3JldHVybiBKRChhLDI3MSk/SXgoQkQoYSwyNzEpKToobW1iKCksbmV3IFpvYihCRChhLDg0KSkpfTtfLlpiPWZ1bmN0aW9uIGRpKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5mLCFhPyh0aGlzLmY9SkQodGhpcy5jLDE3MSk/bmV3IFNmKHRoaXMsQkQodGhpcy5jLDE3MSkpOkpEKHRoaXMuYywxNjEpP25ldyBNZih0aGlzLEJEKHRoaXMuYywxNjEpKTpuZXcgbmUodGhpcyx0aGlzLmMpKTphfTtfLnBjPWZ1bmN0aW9uIG5pKGEsYil7cmV0dXJuIEpEKGIsMjcxKT9uZXcgWGcodGhpcyxhLEJEKGIsMjcxKSk6bmV3IFZnKHRoaXMsYSxCRChiLDg0KSl9O3ZhciBORT1tZGIoWmhlLCdBYnN0cmFjdFNvcnRlZFNldE11bHRpbWFwJywxNjU3KTtiY2IoMTY1OCwxNjU3LF9oZSk7Xy5aYj1mdW5jdGlvbiBwaSgpe3ZhciBhO3JldHVybiBhPXRoaXMuZixCRChCRCghYT8odGhpcy5mPUpEKHRoaXMuYywxNzEpP25ldyBTZih0aGlzLEJEKHRoaXMuYywxNzEpKTpKRCh0aGlzLmMsMTYxKT9uZXcgTWYodGhpcyxCRCh0aGlzLmMsMTYxKSk6bmV3IG5lKHRoaXMsdGhpcy5jKSk6YSwxNjEpLDE3MSl9O18uZWM9ZnVuY3Rpb24gcmkoKXt2YXIgYTtyZXR1cm4gYT10aGlzLmksQkQoQkQoIWE/KHRoaXMuaT1KRCh0aGlzLmMsMTcxKT9uZXcgJGYodGhpcyxCRCh0aGlzLmMsMTcxKSk6SkQodGhpcy5jLDE2MSk/bmV3IFlmKHRoaXMsQkQodGhpcy5jLDE2MSkpOm5ldyB6Zih0aGlzLHRoaXMuYykpOmEsODQpLDI3MSl9O18uYmM9ZnVuY3Rpb24gcWkoKXtyZXR1cm4gSkQodGhpcy5jLDE3MSk/bmV3ICRmKHRoaXMsQkQodGhpcy5jLDE3MSkpOkpEKHRoaXMuYywxNjEpP25ldyBZZih0aGlzLEJEKHRoaXMuYywxNjEpKTpuZXcgemYodGhpcyx0aGlzLmMpfTt2YXIgTUU9bWRiKFpoZSwnQWJzdHJhY3RTb3J0ZWRLZXlTb3J0ZWRTZXRNdWx0aW1hcCcsMTY1OCk7YmNiKDIwMTAsMSx7MTk0NzoxfSk7Xy5GYj1mdW5jdGlvbiBzaShhKXtyZXR1cm4genkodGhpcyxhKX07Xy5IYj1mdW5jdGlvbiB0aSgpe3ZhciBhO3JldHVybiBwbWIoKGE9dGhpcy5nLCFhPyh0aGlzLmc9bmV3IHZpKHRoaXMpKTphKSl9O18uSWI9ZnVuY3Rpb24gdWkoKXt2YXIgYTtyZXR1cm4gTWQoKGE9dGhpcy5mLCFhPyh0aGlzLmY9bmV3IFJqKHRoaXMpKTphKSl9O3ZhciBRRT1tZGIoWmhlLCdBYnN0cmFjdFRhYmxlJywyMDEwKTtiY2IoNjY1LGVpZSxmaWUsdmkpO18uJGI9ZnVuY3Rpb24gd2koKXtQaSgpfTtfLkhjPWZ1bmN0aW9uIHhpKGEpe3ZhciBiLGM7aWYoSkQoYSw0NjgpKXtiPUJEKGEsNjgyKTtjPUJEKEh2KFZpKHRoaXMuYSksRW0oYi5jLmUsYi5iKSksODMpO3JldHVybiAhIWMmJkNrKGMudmMoKSxuZXcgV28oRW0oYi5jLmMsYi5hKSxNaShiLmMsYi5iLGIuYSkpKX1yZXR1cm4gZmFsc2V9O18uS2M9ZnVuY3Rpb24geWkoKXtyZXR1cm4gTmkodGhpcy5hKX07Xy5NYz1mdW5jdGlvbiB6aShhKXt2YXIgYixjO2lmKEpEKGEsNDY4KSl7Yj1CRChhLDY4Mik7Yz1CRChIdihWaSh0aGlzLmEpLEVtKGIuYy5lLGIuYikpLDgzKTtyZXR1cm4gISFjJiZEayhjLnZjKCksbmV3IFdvKEVtKGIuYy5jLGIuYSksTWkoYi5jLGIuYixiLmEpKSl9cmV0dXJuIGZhbHNlfTtfLmdjPWZ1bmN0aW9uIEFpKCl7cmV0dXJuIFhpKHRoaXMuYSl9O18uTmM9ZnVuY3Rpb24gQmkoKXtyZXR1cm4gT2kodGhpcy5hKX07dmFyIE9FPW1kYihaaGUsJ0Fic3RyYWN0VGFibGUvQ2VsbFNldCcsNjY1KTtiY2IoMTkyOCwyOCxkaWUsQ2kpO18uJGI9ZnVuY3Rpb24gRGkoKXtQaSgpfTtfLkhjPWZ1bmN0aW9uIEVpKGEpe3JldHVybiBRaSh0aGlzLmEsYSl9O18uS2M9ZnVuY3Rpb24gRmkoKXtyZXR1cm4gWmkodGhpcy5hKX07Xy5nYz1mdW5jdGlvbiBHaSgpe3JldHVybiBYaSh0aGlzLmEpfTtfLk5jPWZ1bmN0aW9uIEhpKCl7cmV0dXJuICRpKHRoaXMuYSl9O3ZhciBQRT1tZGIoWmhlLCdBYnN0cmFjdFRhYmxlL1ZhbHVlcycsMTkyOCk7YmNiKDE2MzIsMTYzMSxfaGUpO3ZhciBSRT1tZGIoWmhlLCdBcnJheUxpc3RNdWx0aW1hcEd3dFNlcmlhbGl6YXRpb25EZXBlbmRlbmNpZXMnLDE2MzIpO2JjYig1MTMsMTYzMixfaGUsSmksS2kpO18uaGM9ZnVuY3Rpb24gTGkoKXtyZXR1cm4gbmV3IFNrYih0aGlzLmEpfTtfLmE9MDt2YXIgU0U9bWRiKFpoZSwnQXJyYXlMaXN0TXVsdGltYXAnLDUxMyk7YmNiKDY2NCwyMDEwLHs2NjQ6MSwxOTQ3OjEsMzoxfSxfaSk7dmFyIGNGPW1kYihaaGUsJ0FycmF5VGFibGUnLDY2NCk7YmNiKDE5MjQsMzg2LCRoZSxhaik7Xy5YYj1mdW5jdGlvbiBiaihhKXtyZXR1cm4gbmV3IGhqKHRoaXMuYSxhKX07dmFyIFRFPW1kYihaaGUsJ0FycmF5VGFibGUvMScsMTkyNCk7YmNiKDE5MjUsMSx7fSxjaik7Xy5sZD1mdW5jdGlvbiBkaihhKXtyZXR1cm4gbmV3IGhqKHRoaXMuYSxhKX07dmFyIFVFPW1kYihaaGUsJ0FycmF5VGFibGUvMW1ldGhvZHJlZiRnZXRDZWxsJFR5cGUnLDE5MjUpO2JjYigyMDExLDEsezY4MjoxfSk7Xy5GYj1mdW5jdGlvbiBlaihhKXt2YXIgYjtpZihhPT09dGhpcyl7cmV0dXJuIHRydWV9aWYoSkQoYSw0NjgpKXtiPUJEKGEsNjgyKTtyZXR1cm4gSGIoRW0odGhpcy5jLmUsdGhpcy5iKSxFbShiLmMuZSxiLmIpKSYmSGIoRW0odGhpcy5jLmMsdGhpcy5hKSxFbShiLmMuYyxiLmEpKSYmSGIoTWkodGhpcy5jLHRoaXMuYix0aGlzLmEpLE1pKGIuYyxiLmIsYi5hKSl9cmV0dXJuIGZhbHNlfTtfLkhiPWZ1bmN0aW9uIGZqKCl7cmV0dXJuIEhsYihPQyhHQyhTSSwxKSxVaGUsMSw1LFtFbSh0aGlzLmMuZSx0aGlzLmIpLEVtKHRoaXMuYy5jLHRoaXMuYSksTWkodGhpcy5jLHRoaXMuYix0aGlzLmEpXSkpfTtfLkliPWZ1bmN0aW9uIGdqKCl7cmV0dXJuICcoJytFbSh0aGlzLmMuZSx0aGlzLmIpKycsJytFbSh0aGlzLmMuYyx0aGlzLmEpKycpPScrTWkodGhpcy5jLHRoaXMuYix0aGlzLmEpfTt2YXIgSkg9bWRiKFpoZSwnVGFibGVzL0Fic3RyYWN0Q2VsbCcsMjAxMSk7YmNiKDQ2OCwyMDExLHs0Njg6MSw2ODI6MX0saGopO18uYT0wO18uYj0wO18uZD0wO3ZhciBWRT1tZGIoWmhlLCdBcnJheVRhYmxlLzInLDQ2OCk7YmNiKDE5MjcsMSx7fSxpaik7Xy5sZD1mdW5jdGlvbiBqaihhKXtyZXR1cm4gVGkodGhpcy5hLGEpfTt2YXIgV0U9bWRiKFpoZSwnQXJyYXlUYWJsZS8ybWV0aG9kcmVmJGdldFZhbHVlJFR5cGUnLDE5MjcpO2JjYigxOTI2LDM4NiwkaGUsa2opO18uWGI9ZnVuY3Rpb24gbGooYSl7cmV0dXJuIFRpKHRoaXMuYSxhKX07dmFyIFhFPW1kYihaaGUsJ0FycmF5VGFibGUvMycsMTkyNik7YmNiKDE5NzksMTk2NyxjaWUpO18uJGI9ZnVuY3Rpb24gbmooKXtpcih0aGlzLmtjKCkpfTtfLnZjPWZ1bmN0aW9uIG9qKCl7cmV0dXJuIG5ldyBTdih0aGlzKX07Xy5sYz1mdW5jdGlvbiBwaigpe3JldHVybiBuZXcgTXViKHRoaXMua2MoKSx0aGlzLmdjKCkpfTt2YXIgWUc9bWRiKFpoZSwnTWFwcy9JdGVyYXRvckJhc2VkQWJzdHJhY3RNYXAnLDE5NzkpO2JjYig4MjgsMTk3OSxjaWUpO18uJGI9ZnVuY3Rpb24gdGooKXt0aHJvdyB2YmIobmV3IGJnYil9O18uX2I9ZnVuY3Rpb24gdWooYSl7cmV0dXJuIHNuKHRoaXMuYyxhKX07Xy5rYz1mdW5jdGlvbiB2aigpe3JldHVybiBuZXcgSmoodGhpcyx0aGlzLmMuYi5jLmdjKCkpfTtfLmxjPWZ1bmN0aW9uIHdqKCl7cmV0dXJuIFpqKHRoaXMuYy5iLmMuZ2MoKSwxNixuZXcgRGoodGhpcykpfTtfLnhjPWZ1bmN0aW9uIHhqKGEpe3ZhciBiO2I9QkQodG4odGhpcy5jLGEpLDE5KTtyZXR1cm4gIWI/bnVsbDp0aGlzLm5kKGIuYSl9O18uZGM9ZnVuY3Rpb24geWooKXtyZXR1cm4gdGhpcy5jLmIuYy5kYygpfTtfLmVjPWZ1bmN0aW9uIHpqKCl7cmV0dXJuIFhtKHRoaXMuYyl9O18uemM9ZnVuY3Rpb24gQWooYSxiKXt2YXIgYztjPUJEKHRuKHRoaXMuYyxhKSwxOSk7aWYoIWMpe3Rocm93IHZiYihuZXcgV2RiKHRoaXMubWQoKSsnICcrYSsnIG5vdCBpbiAnK1htKHRoaXMuYykpKX1yZXR1cm4gdGhpcy5vZChjLmEsYil9O18uQmM9ZnVuY3Rpb24gQmooYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLmdjPWZ1bmN0aW9uIENqKCl7cmV0dXJuIHRoaXMuYy5iLmMuZ2MoKX07dmFyIF9FPW1kYihaaGUsJ0FycmF5VGFibGUvQXJyYXlNYXAnLDgyOCk7YmNiKDE5MjMsMSx7fSxEaik7Xy5sZD1mdW5jdGlvbiBFaihhKXtyZXR1cm4gcWoodGhpcy5hLGEpfTt2YXIgWUU9bWRiKFpoZSwnQXJyYXlUYWJsZS9BcnJheU1hcC8wbWV0aG9kcmVmJGdldEVudHJ5JFR5cGUnLDE5MjMpO2JjYigxOTIxLDM0NSxraWUsRmopO18uY2Q9ZnVuY3Rpb24gR2ooKXtyZXR1cm4gcmoodGhpcy5hLHRoaXMuYil9O18uZGQ9ZnVuY3Rpb24gSGooKXtyZXR1cm4gdGhpcy5hLm5kKHRoaXMuYil9O18uZWQ9ZnVuY3Rpb24gSWooYSl7cmV0dXJuIHRoaXMuYS5vZCh0aGlzLmIsYSl9O18uYj0wO3ZhciBaRT1tZGIoWmhlLCdBcnJheVRhYmxlL0FycmF5TWFwLzEnLDE5MjEpO2JjYigxOTIyLDM4NiwkaGUsSmopO18uWGI9ZnVuY3Rpb24gS2ooYSl7cmV0dXJuIHFqKHRoaXMuYSxhKX07dmFyICRFPW1kYihaaGUsJ0FycmF5VGFibGUvQXJyYXlNYXAvMicsMTkyMik7YmNiKDE5MjAsODI4LGNpZSxMaik7Xy5tZD1mdW5jdGlvbiBNaigpe3JldHVybiAnQ29sdW1uJ307Xy5uZD1mdW5jdGlvbiBOaihhKXtyZXR1cm4gTWkodGhpcy5iLHRoaXMuYSxhKX07Xy5vZD1mdW5jdGlvbiBPaihhLGIpe3JldHVybiBXaSh0aGlzLmIsdGhpcy5hLGEsYil9O18uYT0wO3ZhciBiRj1tZGIoWmhlLCdBcnJheVRhYmxlL1JvdycsMTkyMCk7YmNiKDgyOSw4MjgsY2llLFJqKTtfLm5kPWZ1bmN0aW9uIFRqKGEpe3JldHVybiBuZXcgTGoodGhpcy5hLGEpfTtfLnpjPWZ1bmN0aW9uIFVqKGEsYil7cmV0dXJuIEJEKGIsODMpLFBqKCl9O18ub2Q9ZnVuY3Rpb24gVmooYSxiKXtyZXR1cm4gQkQoYiw4MyksUWooKX07Xy5tZD1mdW5jdGlvbiBTaigpe3JldHVybiAnUm93J307dmFyIGFGPW1kYihaaGUsJ0FycmF5VGFibGUvUm93TWFwJyw4MjkpO2JjYigxMTIwLDEscGllLF9qKTtfLnFkPWZ1bmN0aW9uIGFrKCl7cmV0dXJuIHRoaXMuYS5xZCgpJi0yNjJ9O18ucmQ9ZnVuY3Rpb24gYmsoKXtyZXR1cm4gdGhpcy5hLnJkKCl9O18uTmI9ZnVuY3Rpb24gY2soYSl7dGhpcy5hLk5iKG5ldyBnayhhLHRoaXMuYikpfTtfLnNkPWZ1bmN0aW9uIGRrKGEpe3JldHVybiB0aGlzLmEuc2QobmV3IGVrKGEsdGhpcy5iKSl9O3ZhciBsRj1tZGIoWmhlLCdDb2xsZWN0U3BsaXRlcmF0b3JzLzEnLDExMjApO2JjYigxMTIxLDEscWllLGVrKTtfLnRkPWZ1bmN0aW9uIGZrKGEpe3RoaXMuYS50ZCh0aGlzLmIuS2IoYSkpfTt2YXIgZEY9bWRiKFpoZSwnQ29sbGVjdFNwbGl0ZXJhdG9ycy8xL2xhbWJkYSQwJFR5cGUnLDExMjEpO2JjYigxMTIyLDEscWllLGdrKTtfLnRkPWZ1bmN0aW9uIGhrKGEpe3RoaXMuYS50ZCh0aGlzLmIuS2IoYSkpfTt2YXIgZUY9bWRiKFpoZSwnQ29sbGVjdFNwbGl0ZXJhdG9ycy8xL2xhbWJkYSQxJFR5cGUnLDExMjIpO2JjYigxMTIzLDEscGllLGprKTtfLnFkPWZ1bmN0aW9uIGtrKCl7cmV0dXJuIHRoaXMuYX07Xy5yZD1mdW5jdGlvbiBsaygpeyEhdGhpcy5kJiYodGhpcy5iPURlYih0aGlzLmIsdGhpcy5kLnJkKCkpKTtyZXR1cm4gRGViKHRoaXMuYiwwKX07Xy5OYj1mdW5jdGlvbiBtayhhKXtpZih0aGlzLmQpe3RoaXMuZC5OYihhKTt0aGlzLmQ9bnVsbH10aGlzLmMuTmIobmV3IHJrKHRoaXMuZSxhKSk7dGhpcy5iPTB9O18uc2Q9ZnVuY3Rpb24gb2soYSl7d2hpbGUodHJ1ZSl7aWYoISF0aGlzLmQmJnRoaXMuZC5zZChhKSl7S2JiKHRoaXMuYixyaWUpJiYodGhpcy5iPVFiYih0aGlzLmIsMSkpO3JldHVybiB0cnVlfWVsc2V7dGhpcy5kPW51bGx9aWYoIXRoaXMuYy5zZChuZXcgcGsodGhpcyx0aGlzLmUpKSl7cmV0dXJuIGZhbHNlfX19O18uYT0wO18uYj0wO3ZhciBoRj1tZGIoWmhlLCdDb2xsZWN0U3BsaXRlcmF0b3JzLzFGbGF0TWFwU3BsaXRlcmF0b3InLDExMjMpO2JjYigxMTI0LDEscWllLHBrKTtfLnRkPWZ1bmN0aW9uIHFrKGEpe2lrKHRoaXMuYSx0aGlzLmIsYSl9O3ZhciBmRj1tZGIoWmhlLCdDb2xsZWN0U3BsaXRlcmF0b3JzLzFGbGF0TWFwU3BsaXRlcmF0b3IvbGFtYmRhJDAkVHlwZScsMTEyNCk7YmNiKDExMjUsMSxxaWUscmspO18udGQ9ZnVuY3Rpb24gc2soYSl7bmsodGhpcy5iLHRoaXMuYSxhKX07dmFyIGdGPW1kYihaaGUsJ0NvbGxlY3RTcGxpdGVyYXRvcnMvMUZsYXRNYXBTcGxpdGVyYXRvci9sYW1iZGEkMSRUeXBlJywxMTI1KTtiY2IoMTExNywxLHBpZSx0ayk7Xy5xZD1mdW5jdGlvbiB1aygpe3JldHVybiAxNjQ2NHx0aGlzLmJ9O18ucmQ9ZnVuY3Rpb24gdmsoKXtyZXR1cm4gdGhpcy5hLnJkKCl9O18uTmI9ZnVuY3Rpb24gd2soYSl7dGhpcy5hLnhlKG5ldyBBayhhLHRoaXMuYykpfTtfLnNkPWZ1bmN0aW9uIHhrKGEpe3JldHVybiB0aGlzLmEueWUobmV3IHlrKGEsdGhpcy5jKSl9O18uYj0wO3ZhciBrRj1tZGIoWmhlLCdDb2xsZWN0U3BsaXRlcmF0b3JzLzFXaXRoQ2hhcmFjdGVyaXN0aWNzJywxMTE3KTtiY2IoMTExOCwxLHNpZSx5ayk7Xy51ZD1mdW5jdGlvbiB6ayhhKXt0aGlzLmEudGQodGhpcy5iLmxkKGEpKX07dmFyIGlGPW1kYihaaGUsJ0NvbGxlY3RTcGxpdGVyYXRvcnMvMVdpdGhDaGFyYWN0ZXJpc3RpY3MvbGFtYmRhJDAkVHlwZScsMTExOCk7YmNiKDExMTksMSxzaWUsQWspO18udWQ9ZnVuY3Rpb24gQmsoYSl7dGhpcy5hLnRkKHRoaXMuYi5sZChhKSl9O3ZhciBqRj1tZGIoWmhlLCdDb2xsZWN0U3BsaXRlcmF0b3JzLzFXaXRoQ2hhcmFjdGVyaXN0aWNzL2xhbWJkYSQxJFR5cGUnLDExMTkpO2JjYigyNDUsMSx0aWUpO18ud2Q9ZnVuY3Rpb24gSGsoYSl7cmV0dXJuIHRoaXMudmQoQkQoYSwyNDUpKX07Xy52ZD1mdW5jdGlvbiBHayhhKXt2YXIgYjtpZihhPT0oX2soKSwkaykpe3JldHVybiAxfWlmKGE9PShMaygpLEtrKSl7cmV0dXJuIC0xfWI9KGV4KCksRmNiKHRoaXMuYSxhLmEpKTtpZihiIT0wKXtyZXR1cm4gYn1yZXR1cm4gSkQodGhpcyw1MTkpPT1KRChhLDUxOSk/MDpKRCh0aGlzLDUxOSk/MTotMX07Xy56ZD1mdW5jdGlvbiBJaygpe3JldHVybiB0aGlzLmF9O18uRmI9ZnVuY3Rpb24gSmsoYSl7cmV0dXJuIEVrKHRoaXMsYSl9O3ZhciBxRj1tZGIoWmhlLCdDdXQnLDI0NSk7YmNiKDE3NjEsMjQ1LHRpZSxNayk7Xy52ZD1mdW5jdGlvbiBOayhhKXtyZXR1cm4gYT09dGhpcz8wOjF9O18ueGQ9ZnVuY3Rpb24gT2soYSl7dGhyb3cgdmJiKG5ldyB4Y2IpfTtfLnlkPWZ1bmN0aW9uIFBrKGEpe2EuYSs9JytcXHUyMjFFKSd9O18uemQ9ZnVuY3Rpb24gUWsoKXt0aHJvdyB2YmIobmV3IFpkYih1aWUpKX07Xy5IYj1mdW5jdGlvbiBSaygpe3JldHVybiBaZmIoKSxrQ2IodGhpcyl9O18uQWQ9ZnVuY3Rpb24gU2soYSl7cmV0dXJuIGZhbHNlfTtfLkliPWZ1bmN0aW9uIFRrKCl7cmV0dXJuICcrXFx1MjIxRSd9O3ZhciBLazt2YXIgbUY9bWRiKFpoZSwnQ3V0L0Fib3ZlQWxsJywxNzYxKTtiY2IoNTE5LDI0NSx7MjQ1OjEsNTE5OjEsMzoxLDM1OjF9LFVrKTtfLnhkPWZ1bmN0aW9uIFZrKGEpe1BmYigoYS5hKz0nKCcsYSksdGhpcy5hKX07Xy55ZD1mdW5jdGlvbiBXayhhKXtLZmIoUGZiKGEsdGhpcy5hKSw5Myl9O18uSGI9ZnVuY3Rpb24gWGsoKXtyZXR1cm4gfnRiKHRoaXMuYSl9O18uQWQ9ZnVuY3Rpb24gWWsoYSl7cmV0dXJuIGV4KCksRmNiKHRoaXMuYSxhKTwwfTtfLkliPWZ1bmN0aW9uIFprKCl7cmV0dXJuICcvJyt0aGlzLmErJ1xcXFwnfTt2YXIgbkY9bWRiKFpoZSwnQ3V0L0Fib3ZlVmFsdWUnLDUxOSk7YmNiKDE3NjAsMjQ1LHRpZSxhbCk7Xy52ZD1mdW5jdGlvbiBibChhKXtyZXR1cm4gYT09dGhpcz8wOi0xfTtfLnhkPWZ1bmN0aW9uIGNsKGEpe2EuYSs9JygtXFx1MjIxRSd9O18ueWQ9ZnVuY3Rpb24gZGwoYSl7dGhyb3cgdmJiKG5ldyB4Y2IpfTtfLnpkPWZ1bmN0aW9uIGVsKCl7dGhyb3cgdmJiKG5ldyBaZGIodWllKSl9O18uSGI9ZnVuY3Rpb24gZmwoKXtyZXR1cm4gWmZiKCksa0NiKHRoaXMpfTtfLkFkPWZ1bmN0aW9uIGdsKGEpe3JldHVybiB0cnVlfTtfLkliPWZ1bmN0aW9uIGhsKCl7cmV0dXJuICctXFx1MjIxRSd9O3ZhciAkazt2YXIgb0Y9bWRiKFpoZSwnQ3V0L0JlbG93QWxsJywxNzYwKTtiY2IoMTc2MiwyNDUsdGllLGlsKTtfLnhkPWZ1bmN0aW9uIGpsKGEpe1BmYigoYS5hKz0nWycsYSksdGhpcy5hKX07Xy55ZD1mdW5jdGlvbiBrbChhKXtLZmIoUGZiKGEsdGhpcy5hKSw0MSl9O18uSGI9ZnVuY3Rpb24gbGwoKXtyZXR1cm4gdGIodGhpcy5hKX07Xy5BZD1mdW5jdGlvbiBtbChhKXtyZXR1cm4gZXgoKSxGY2IodGhpcy5hLGEpPD0wfTtfLkliPWZ1bmN0aW9uIG5sKCl7cmV0dXJuICdcXFxcJyt0aGlzLmErJy8nfTt2YXIgcEY9bWRiKFpoZSwnQ3V0L0JlbG93VmFsdWUnLDE3NjIpO2JjYig1MzcsMSx2aWUpO18uSmM9ZnVuY3Rpb24gcWwoYSl7cmViKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gcmwoKXtyZXR1cm4gdHIoQkQoUmIodGhpcywndXNlIE9wdGlvbmFsLm9yTnVsbCgpIGluc3RlYWQgb2YgT3B0aW9uYWwub3IobnVsbCknKSwyMCkuS2MoKSl9O3ZhciB1Rj1tZGIoWmhlLCdGbHVlbnRJdGVyYWJsZScsNTM3KTtiY2IoNDMzLDUzNyx2aWUsc2wpO18uS2M9ZnVuY3Rpb24gdGwoKXtyZXR1cm4gbmV3IFNyKHVyKHRoaXMuYS5LYygpLG5ldyBTcSkpfTt2YXIgckY9bWRiKFpoZSwnRmx1ZW50SXRlcmFibGUvMicsNDMzKTtiY2IoMTA0Niw1MzcsdmllLHZsKTtfLktjPWZ1bmN0aW9uIHdsKCl7cmV0dXJuIHVsKHRoaXMpfTt2YXIgdEY9bWRiKFpoZSwnRmx1ZW50SXRlcmFibGUvMycsMTA0Nik7YmNiKDcwOCwzODYsJGhlLHhsKTtfLlhiPWZ1bmN0aW9uIHlsKGEpe3JldHVybiB0aGlzLmFbYV0uS2MoKX07dmFyIHNGPW1kYihaaGUsJ0ZsdWVudEl0ZXJhYmxlLzMvMScsNzA4KTtiY2IoMTk3MiwxLHt9KTtfLkliPWZ1bmN0aW9uIHpsKCl7cmV0dXJuIGZjYih0aGlzLkJkKCkuYil9O3ZhciBCRj1tZGIoWmhlLCdGb3J3YXJkaW5nT2JqZWN0JywxOTcyKTtiY2IoMTk3MywxOTcyLHdpZSk7Xy5CZD1mdW5jdGlvbiBGbCgpe3JldHVybiB0aGlzLkNkKCl9O18uSmM9ZnVuY3Rpb24gR2woYSl7cmViKHRoaXMsYSl9O18uTGM9ZnVuY3Rpb24gSmwoKXtyZXR1cm4gdGhpcy5PYygpfTtfLk5jPWZ1bmN0aW9uIE1sKCl7cmV0dXJuIG5ldyBLdWIodGhpcywwKX07Xy5PYz1mdW5jdGlvbiBObCgpe3JldHVybiBuZXcgWUFiKG51bGwsdGhpcy5OYygpKX07Xy5GYz1mdW5jdGlvbiBBbChhKXtyZXR1cm4gdGhpcy5DZCgpLGVuYigpfTtfLkdjPWZ1bmN0aW9uIEJsKGEpe3JldHVybiB0aGlzLkNkKCksZm5iKCl9O18uJGI9ZnVuY3Rpb24gQ2woKXt0aGlzLkNkKCksZ25iKCl9O18uSGM9ZnVuY3Rpb24gRGwoYSl7cmV0dXJuIHRoaXMuQ2QoKS5IYyhhKX07Xy5JYz1mdW5jdGlvbiBFbChhKXtyZXR1cm4gdGhpcy5DZCgpLkljKGEpfTtfLmRjPWZ1bmN0aW9uIEhsKCl7cmV0dXJuIHRoaXMuQ2QoKS5iLmRjKCl9O18uS2M9ZnVuY3Rpb24gSWwoKXtyZXR1cm4gdGhpcy5DZCgpLktjKCl9O18uTWM9ZnVuY3Rpb24gS2woYSl7cmV0dXJuIHRoaXMuQ2QoKSxqbmIoKX07Xy5nYz1mdW5jdGlvbiBMbCgpe3JldHVybiB0aGlzLkNkKCkuYi5nYygpfTtfLlBjPWZ1bmN0aW9uIE9sKCl7cmV0dXJuIHRoaXMuQ2QoKS5QYygpfTtfLlFjPWZ1bmN0aW9uIFBsKGEpe3JldHVybiB0aGlzLkNkKCkuUWMoYSl9O3ZhciB2Rj1tZGIoWmhlLCdGb3J3YXJkaW5nQ29sbGVjdGlvbicsMTk3Myk7YmNiKDE5ODAsMjgseGllKTtfLktjPWZ1bmN0aW9uIFhsKCl7cmV0dXJuIHRoaXMuRWQoKX07Xy5GYz1mdW5jdGlvbiBTbChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uR2M9ZnVuY3Rpb24gVGwoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLiRiPWZ1bmN0aW9uIFVsKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkhjPWZ1bmN0aW9uIFZsKGEpe3JldHVybiBhIT1udWxsJiZ6ZSh0aGlzLGEsZmFsc2UpfTtfLkRkPWZ1bmN0aW9uIFdsKCl7c3dpdGNoKHRoaXMuZ2MoKSl7Y2FzZSAwOnJldHVybiBpbSgpLGltKCksaG07Y2FzZSAxOnJldHVybiBpbSgpLG5ldyBteShRYih0aGlzLkVkKCkuUGIoKSkpO2RlZmF1bHQ6cmV0dXJuIG5ldyBweCh0aGlzLHRoaXMuUGMoKSk7fX07Xy5NYz1mdW5jdGlvbiBZbChhKXt0aHJvdyB2YmIobmV3IGJnYil9O3ZhciBXRj1tZGIoWmhlLCdJbW11dGFibGVDb2xsZWN0aW9uJywxOTgwKTtiY2IoNzEyLDE5ODAseGllLFpsKTtfLktjPWZ1bmN0aW9uIGNtKCl7cmV0dXJuIHZyKHRoaXMuYS5LYygpKX07Xy5IYz1mdW5jdGlvbiAkbChhKXtyZXR1cm4gYSE9bnVsbCYmdGhpcy5hLkhjKGEpfTtfLkljPWZ1bmN0aW9uIF9sKGEpe3JldHVybiB0aGlzLmEuSWMoYSl9O18uZGM9ZnVuY3Rpb24gYW0oKXtyZXR1cm4gdGhpcy5hLmRjKCl9O18uRWQ9ZnVuY3Rpb24gYm0oKXtyZXR1cm4gdnIodGhpcy5hLktjKCkpfTtfLmdjPWZ1bmN0aW9uIGRtKCl7cmV0dXJuIHRoaXMuYS5nYygpfTtfLlBjPWZ1bmN0aW9uIGVtKCl7cmV0dXJuIHRoaXMuYS5QYygpfTtfLlFjPWZ1bmN0aW9uIGZtKGEpe3JldHVybiB0aGlzLmEuUWMoYSl9O18uSWI9ZnVuY3Rpb24gZ20oKXtyZXR1cm4gZmNiKHRoaXMuYSl9O3ZhciB3Rj1tZGIoWmhlLCdGb3J3YXJkaW5nSW1tdXRhYmxlQ29sbGVjdGlvbicsNzEyKTtiY2IoMTUyLDE5ODAseWllKTtfLktjPWZ1bmN0aW9uIHNtKCl7cmV0dXJuIHRoaXMuRWQoKX07Xy5ZYz1mdW5jdGlvbiB0bSgpe3JldHVybiB0aGlzLkZkKDApfTtfLlpjPWZ1bmN0aW9uIHZtKGEpe3JldHVybiB0aGlzLkZkKGEpfTtfLmFkPWZ1bmN0aW9uIHptKGEpe2t0Yih0aGlzLGEpfTtfLk5jPWZ1bmN0aW9uIEFtKCl7cmV0dXJuIG5ldyBLdWIodGhpcywxNil9O18uYmQ9ZnVuY3Rpb24gQ20oYSxiKXtyZXR1cm4gdGhpcy5HZChhLGIpfTtfLlZjPWZ1bmN0aW9uIGxtKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLldjPWZ1bmN0aW9uIG1tKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkZiPWZ1bmN0aW9uIG9tKGEpe3JldHVybiBKdSh0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIHBtKCl7cmV0dXJuIEt1KHRoaXMpfTtfLlhjPWZ1bmN0aW9uIHFtKGEpe3JldHVybiBhPT1udWxsPy0xOkx1KHRoaXMsYSl9O18uRWQ9ZnVuY3Rpb24gcm0oKXtyZXR1cm4gdGhpcy5GZCgwKX07Xy5GZD1mdW5jdGlvbiB1bShhKXtyZXR1cm4gam0odGhpcyxhKX07Xy4kYz1mdW5jdGlvbiB4bShhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uX2M9ZnVuY3Rpb24geW0oYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O18uR2Q9ZnVuY3Rpb24gQm0oYSxiKXt2YXIgYztyZXR1cm4gRG0oKGM9bmV3ICR1KHRoaXMpLG5ldyBKaWIoYyxhLGIpKSl9O3ZhciBobTt2YXIgX0Y9bWRiKFpoZSwnSW1tdXRhYmxlTGlzdCcsMTUyKTtiY2IoMjAwNiwxNTIseWllKTtfLktjPWZ1bmN0aW9uIE5tKCl7cmV0dXJuIHZyKHRoaXMuSGQoKS5LYygpKX07Xy5iZD1mdW5jdGlvbiBRbShhLGIpe3JldHVybiBEbSh0aGlzLkhkKCkuYmQoYSxiKSl9O18uSGM9ZnVuY3Rpb24gRm0oYSl7cmV0dXJuIGEhPW51bGwmJnRoaXMuSGQoKS5IYyhhKX07Xy5JYz1mdW5jdGlvbiBHbShhKXtyZXR1cm4gdGhpcy5IZCgpLkljKGEpfTtfLkZiPWZ1bmN0aW9uIEhtKGEpe3JldHVybiBwYih0aGlzLkhkKCksYSl9O18uWGI9ZnVuY3Rpb24gSW0oYSl7cmV0dXJuIEVtKHRoaXMsYSl9O18uSGI9ZnVuY3Rpb24gSm0oKXtyZXR1cm4gdGIodGhpcy5IZCgpKX07Xy5YYz1mdW5jdGlvbiBLbShhKXtyZXR1cm4gdGhpcy5IZCgpLlhjKGEpfTtfLmRjPWZ1bmN0aW9uIExtKCl7cmV0dXJuIHRoaXMuSGQoKS5kYygpfTtfLkVkPWZ1bmN0aW9uIE1tKCl7cmV0dXJuIHZyKHRoaXMuSGQoKS5LYygpKX07Xy5nYz1mdW5jdGlvbiBPbSgpe3JldHVybiB0aGlzLkhkKCkuZ2MoKX07Xy5HZD1mdW5jdGlvbiBQbShhLGIpe3JldHVybiBEbSh0aGlzLkhkKCkuYmQoYSxiKSl9O18uUGM9ZnVuY3Rpb24gUm0oKXtyZXR1cm4gdGhpcy5IZCgpLlFjKEtDKFNJLFVoZSwxLHRoaXMuSGQoKS5nYygpLDUsMSkpfTtfLlFjPWZ1bmN0aW9uIFNtKGEpe3JldHVybiB0aGlzLkhkKCkuUWMoYSl9O18uSWI9ZnVuY3Rpb24gVG0oKXtyZXR1cm4gZmNiKHRoaXMuSGQoKSl9O3ZhciB4Rj1tZGIoWmhlLCdGb3J3YXJkaW5nSW1tdXRhYmxlTGlzdCcsMjAwNik7YmNiKDcxNCwxLEFpZSk7Xy52Yz1mdW5jdGlvbiBjbigpe3JldHVybiBXbSh0aGlzKX07Xy53Yz1mdW5jdGlvbiBlbihhKXtzdGIodGhpcyxhKX07Xy5lYz1mdW5jdGlvbiBqbigpe3JldHVybiBYbSh0aGlzKX07Xy55Yz1mdW5jdGlvbiBrbihhLGIsYyl7cmV0dXJuIHR0Yih0aGlzLGEsYixjKX07Xy5DYz1mdW5jdGlvbiBybigpe3JldHVybiB0aGlzLkxkKCl9O18uJGI9ZnVuY3Rpb24gWm0oKXt0aHJvdyB2YmIobmV3IGJnYil9O18uX2I9ZnVuY3Rpb24gJG0oYSl7cmV0dXJuIHRoaXMueGMoYSkhPW51bGx9O18udWM9ZnVuY3Rpb24gX20oYSl7cmV0dXJuIHRoaXMuTGQoKS5IYyhhKX07Xy5KZD1mdW5jdGlvbiBhbigpe3JldHVybiBuZXcganEodGhpcyl9O18uS2Q9ZnVuY3Rpb24gYm4oKXtyZXR1cm4gbmV3IHNxKHRoaXMpfTtfLkZiPWZ1bmN0aW9uIGRuKGEpe3JldHVybiBEdih0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIGduKCl7cmV0dXJuIFdtKHRoaXMpLkhiKCl9O18uZGM9ZnVuY3Rpb24gaG4oKXtyZXR1cm4gdGhpcy5nYygpPT0wfTtfLnpjPWZ1bmN0aW9uIG5uKGEsYil7cmV0dXJuIFltKCl9O18uQmM9ZnVuY3Rpb24gb24oYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkliPWZ1bmN0aW9uIHBuKCl7cmV0dXJuIEp2KHRoaXMpfTtfLkxkPWZ1bmN0aW9uIHFuKCl7aWYodGhpcy5lKXtyZXR1cm4gdGhpcy5lfXJldHVybiB0aGlzLmU9dGhpcy5LZCgpfTtfLmM9bnVsbDtfLmQ9bnVsbDtfLmU9bnVsbDt2YXIgVW07dmFyIGlHPW1kYihaaGUsJ0ltbXV0YWJsZU1hcCcsNzE0KTtiY2IoNzE1LDcxNCxBaWUpO18uX2I9ZnVuY3Rpb24gdm4oYSl7cmV0dXJuIHNuKHRoaXMsYSl9O18udWM9ZnVuY3Rpb24gd24oYSl7cmV0dXJuIGRvYih0aGlzLmIsYSl9O18uSWQ9ZnVuY3Rpb24geG4oKXtyZXR1cm4gVm4obmV3IExuKHRoaXMpKX07Xy5KZD1mdW5jdGlvbiB5bigpe3JldHVybiBWbihnb2IodGhpcy5iKSl9O18uS2Q9ZnVuY3Rpb24gem4oKXtyZXR1cm4gUWwoKSxuZXcgWmwoaG9iKHRoaXMuYikpfTtfLkZiPWZ1bmN0aW9uIEFuKGEpe3JldHVybiBmb2IodGhpcy5iLGEpfTtfLnhjPWZ1bmN0aW9uIEJuKGEpe3JldHVybiB0bih0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIENuKCl7cmV0dXJuIHRiKHRoaXMuYi5jKX07Xy5kYz1mdW5jdGlvbiBEbigpe3JldHVybiB0aGlzLmIuYy5kYygpfTtfLmdjPWZ1bmN0aW9uIEVuKCl7cmV0dXJuIHRoaXMuYi5jLmdjKCl9O18uSWI9ZnVuY3Rpb24gRm4oKXtyZXR1cm4gZmNiKHRoaXMuYi5jKX07dmFyIHpGPW1kYihaaGUsJ0ZvcndhcmRpbmdJbW11dGFibGVNYXAnLDcxNSk7YmNiKDE5NzQsMTk3MyxCaWUpO18uQmQ9ZnVuY3Rpb24gR24oKXtyZXR1cm4gdGhpcy5NZCgpfTtfLkNkPWZ1bmN0aW9uIEhuKCl7cmV0dXJuIHRoaXMuTWQoKX07Xy5OYz1mdW5jdGlvbiBLbigpe3JldHVybiBuZXcgS3ViKHRoaXMsMSl9O18uRmI9ZnVuY3Rpb24gSW4oYSl7cmV0dXJuIGE9PT10aGlzfHx0aGlzLk1kKCkuRmIoYSl9O18uSGI9ZnVuY3Rpb24gSm4oKXtyZXR1cm4gdGhpcy5NZCgpLkhiKCl9O3ZhciBDRj1tZGIoWmhlLCdGb3J3YXJkaW5nU2V0JywxOTc0KTtiY2IoMTA2OSwxOTc0LEJpZSxMbik7Xy5CZD1mdW5jdGlvbiBObigpe3JldHVybiBlb2IodGhpcy5hLmIpfTtfLkNkPWZ1bmN0aW9uIE9uKCl7cmV0dXJuIGVvYih0aGlzLmEuYil9O18uSGM9ZnVuY3Rpb24gTW4oYil7aWYoSkQoYiw0MikmJkJEKGIsNDIpLmNkKCk9PW51bGwpe3JldHVybiBmYWxzZX10cnl7cmV0dXJuIERvYihlb2IodGhpcy5hLmIpLGIpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMjA1KSl7cmV0dXJuIGZhbHNlfWVsc2UgdGhyb3cgdmJiKGEpfX07Xy5NZD1mdW5jdGlvbiBQbigpe3JldHVybiBlb2IodGhpcy5hLmIpfTtfLlFjPWZ1bmN0aW9uIFFuKGEpe3ZhciBiO2I9RW9iKGVvYih0aGlzLmEuYiksYSk7ZW9iKHRoaXMuYS5iKS5iLmdjKCk8Yi5sZW5ndGgmJk5DKGIsZW9iKHRoaXMuYS5iKS5iLmdjKCksbnVsbCk7cmV0dXJuIGJ9O3ZhciB5Rj1tZGIoWmhlLCdGb3J3YXJkaW5nSW1tdXRhYmxlTWFwLzEnLDEwNjkpO2JjYigxOTgxLDE5ODAsQ2llKTtfLktjPWZ1bmN0aW9uIFRuKCl7cmV0dXJuIHRoaXMuRWQoKX07Xy5OYz1mdW5jdGlvbiBVbigpe3JldHVybiBuZXcgS3ViKHRoaXMsMSl9O18uRmI9ZnVuY3Rpb24gUm4oYSl7cmV0dXJuIEF4KHRoaXMsYSl9O18uSGI9ZnVuY3Rpb24gU24oKXtyZXR1cm4gQngodGhpcyl9O3ZhciBqRz1tZGIoWmhlLCdJbW11dGFibGVTZXQnLDE5ODEpO2JjYig3MDMsMTk4MSxDaWUpO18uS2M9ZnVuY3Rpb24gYW8oKXtyZXR1cm4gdnIobmV3IERuYih0aGlzLmEuYi5LYygpKSl9O18uSGM9ZnVuY3Rpb24gWG4oYSl7cmV0dXJuIGEhPW51bGwmJmhuYih0aGlzLmEsYSl9O18uSWM9ZnVuY3Rpb24gWW4oYSl7cmV0dXJuIGluYih0aGlzLmEsYSl9O18uSGI9ZnVuY3Rpb24gWm4oKXtyZXR1cm4gdGIodGhpcy5hLmIpfTtfLmRjPWZ1bmN0aW9uICRuKCl7cmV0dXJuIHRoaXMuYS5iLmRjKCl9O18uRWQ9ZnVuY3Rpb24gX24oKXtyZXR1cm4gdnIobmV3IERuYih0aGlzLmEuYi5LYygpKSl9O18uZ2M9ZnVuY3Rpb24gYm8oKXtyZXR1cm4gdGhpcy5hLmIuZ2MoKX07Xy5QYz1mdW5jdGlvbiBjbygpe3JldHVybiB0aGlzLmEuYi5QYygpfTtfLlFjPWZ1bmN0aW9uIGVvKGEpe3JldHVybiBrbmIodGhpcy5hLGEpfTtfLkliPWZ1bmN0aW9uIGZvKCl7cmV0dXJuIGZjYih0aGlzLmEuYil9O3ZhciBBRj1tZGIoWmhlLCdGb3J3YXJkaW5nSW1tdXRhYmxlU2V0Jyw3MDMpO2JjYigxOTc1LDE5NzQsRGllKTtfLkJkPWZ1bmN0aW9uIGdvKCl7cmV0dXJuIHRoaXMuYn07Xy5DZD1mdW5jdGlvbiBobygpe3JldHVybiB0aGlzLmJ9O18uTWQ9ZnVuY3Rpb24gaW8oKXtyZXR1cm4gdGhpcy5ifTtfLk5jPWZ1bmN0aW9uIGpvKCl7cmV0dXJuIG5ldyBSdWIodGhpcyl9O3ZhciBERj1tZGIoWmhlLCdGb3J3YXJkaW5nU29ydGVkU2V0JywxOTc1KTtiY2IoNTMzLDE5NzksQWllLHdvKTtfLkFjPWZ1bmN0aW9uIEZvKGEpe0xkKHRoaXMsYSl9O18uQ2M9ZnVuY3Rpb24gSW8oKXt2YXIgYTtyZXR1cm4gYT10aGlzLmQsbmV3IHVwKCFhPyh0aGlzLmQ9bmV3IGFwKHRoaXMpKTphKX07Xy4kYj1mdW5jdGlvbiB4bygpe2tvKHRoaXMpfTtfLl9iPWZ1bmN0aW9uIHlvKGEpe3JldHVybiAhIXVvKHRoaXMsYSxUYmIoSWJiKEVpZSxrZWIoVGJiKEliYihhPT1udWxsPzA6dGIoYSksRmllKSksMTUpKSkpfTtfLnVjPWZ1bmN0aW9uIHpvKGEpe3JldHVybiBsbyh0aGlzLGEpfTtfLmtjPWZ1bmN0aW9uIEFvKCl7cmV0dXJuIG5ldyBRbyh0aGlzLHRoaXMpfTtfLndjPWZ1bmN0aW9uIEJvKGEpe25vKHRoaXMsYSl9O18ueGM9ZnVuY3Rpb24gQ28oYSl7cmV0dXJuIG9vKHRoaXMsYSl9O18uZWM9ZnVuY3Rpb24gRG8oKXtyZXR1cm4gbmV3IEJwKHRoaXMpfTtfLnpjPWZ1bmN0aW9uIEVvKGEsYil7cmV0dXJuIHJvKHRoaXMsYSxiKX07Xy5CYz1mdW5jdGlvbiBHbyhhKXt2YXIgYjtiPXVvKHRoaXMsYSxUYmIoSWJiKEVpZSxrZWIoVGJiKEliYihhPT1udWxsPzA6dGIoYSksRmllKSksMTUpKSkpO2lmKCFiKXtyZXR1cm4gbnVsbH1lbHNle21vKHRoaXMsYik7Yi5lPW51bGw7Yi5jPW51bGw7cmV0dXJuIGIuaX19O18uZ2M9ZnVuY3Rpb24gSG8oKXtyZXR1cm4gdGhpcy5pfTtfLnBkPWZ1bmN0aW9uIEpvKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5kLG5ldyB1cCghYT8odGhpcy5kPW5ldyBhcCh0aGlzKSk6YSl9O18uZj0wO18uZz0wO18uaT0wO3ZhciBRRj1tZGIoWmhlLCdIYXNoQmlNYXAnLDUzMyk7YmNiKDUzNCwxLGFpZSk7Xy5OYj1mdW5jdGlvbiBNbyhhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBObygpe3JldHVybiBLbyh0aGlzKX07Xy5QYj1mdW5jdGlvbiBPbygpe3ZhciBhO2lmKCFLbyh0aGlzKSl7dGhyb3cgdmJiKG5ldyB1dGIpfWE9dGhpcy5jO3RoaXMuYz1hLmM7dGhpcy5mPWE7LS10aGlzLmQ7cmV0dXJuIHRoaXMuTmQoYSl9O18uUWI9ZnVuY3Rpb24gUG8oKXtpZih0aGlzLmUuZyE9dGhpcy5iKXt0aHJvdyB2YmIobmV3IEFwYil9VmIoISF0aGlzLmYpO21vKHRoaXMuZSx0aGlzLmYpO3RoaXMuYj10aGlzLmUuZzt0aGlzLmY9bnVsbH07Xy5iPTA7Xy5kPTA7Xy5mPW51bGw7dmFyIE5GPW1kYihaaGUsJ0hhc2hCaU1hcC9JdHInLDUzNCk7YmNiKDEwMTEsNTM0LGFpZSxRbyk7Xy5OZD1mdW5jdGlvbiBSbyhhKXtyZXR1cm4gbmV3IFNvKHRoaXMsYSl9O3ZhciBGRj1tZGIoWmhlLCdIYXNoQmlNYXAvMScsMTAxMSk7YmNiKDEwMTIsMzQ1LGtpZSxTbyk7Xy5jZD1mdW5jdGlvbiBUbygpe3JldHVybiB0aGlzLmEuZ307Xy5kZD1mdW5jdGlvbiBVbygpe3JldHVybiB0aGlzLmEuaX07Xy5lZD1mdW5jdGlvbiBWbyhhKXt2YXIgYixjLGQ7Yz10aGlzLmEuaTtkPVRiYihJYmIoRWllLGtlYihUYmIoSWJiKGE9PW51bGw/MDp0YihhKSxGaWUpKSwxNSkpKTtpZihkPT10aGlzLmEuZiYmKFBEKGEpPT09UEQoYyl8fGEhPW51bGwmJnBiKGEsYykpKXtyZXR1cm4gYX1OYighdm8odGhpcy5iLmEsYSxkKSxhKTttbyh0aGlzLmIuYSx0aGlzLmEpO2I9bmV3ICRvKHRoaXMuYS5nLHRoaXMuYS5hLGEsZCk7cG8odGhpcy5iLmEsYix0aGlzLmEpO3RoaXMuYS5lPW51bGw7dGhpcy5hLmM9bnVsbDt0aGlzLmIuYj10aGlzLmIuYS5nO3RoaXMuYi5mPT10aGlzLmEmJih0aGlzLmIuZj1iKTt0aGlzLmE9YjtyZXR1cm4gY307dmFyIEVGPW1kYihaaGUsJ0hhc2hCaU1hcC8xL01hcEVudHJ5JywxMDEyKTtiY2IoMjM4LDM0NSx7MzQ1OjEsMjM4OjEsMzoxLDQyOjF9LFdvKTtfLmNkPWZ1bmN0aW9uIFhvKCl7cmV0dXJuIHRoaXMuZ307Xy5kZD1mdW5jdGlvbiBZbygpe3JldHVybiB0aGlzLml9O18uZWQ9ZnVuY3Rpb24gWm8oYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTt2YXIgWEY9bWRiKFpoZSwnSW1tdXRhYmxlRW50cnknLDIzOCk7YmNiKDMxNywyMzgsezM0NToxLDMxNzoxLDIzODoxLDM6MSw0MjoxfSwkbyk7Xy5hPTA7Xy5mPTA7dmFyIEdGPW1kYihaaGUsJ0hhc2hCaU1hcC9CaUVudHJ5JywzMTcpO2JjYig2MTAsMTk3OSxBaWUsYXApO18uQWM9ZnVuY3Rpb24ganAoYSl7TGQodGhpcyxhKX07Xy5DYz1mdW5jdGlvbiBtcCgpe3JldHVybiBuZXcgQnAodGhpcy5hKX07Xy4kYj1mdW5jdGlvbiBicCgpe2tvKHRoaXMuYSl9O18uX2I9ZnVuY3Rpb24gY3AoYSl7cmV0dXJuIGxvKHRoaXMuYSxhKX07Xy5rYz1mdW5jdGlvbiBkcCgpe3JldHVybiBuZXcgb3AodGhpcyx0aGlzLmEpfTtfLndjPWZ1bmN0aW9uIGVwKGEpe1FiKGEpO25vKHRoaXMuYSxuZXcgenAoYSkpfTtfLnhjPWZ1bmN0aW9uIGZwKGEpe3JldHVybiBfbyh0aGlzLGEpfTtfLmVjPWZ1bmN0aW9uIGdwKCl7cmV0dXJuIG5ldyB1cCh0aGlzKX07Xy56Yz1mdW5jdGlvbiBpcChhLGIpe3JldHVybiBzbyh0aGlzLmEsYSxiLGZhbHNlKX07Xy5CYz1mdW5jdGlvbiBrcChhKXt2YXIgYjtiPXZvKHRoaXMuYSxhLFRiYihJYmIoRWllLGtlYihUYmIoSWJiKGE9PW51bGw/MDp0YihhKSxGaWUpKSwxNSkpKSk7aWYoIWIpe3JldHVybiBudWxsfWVsc2V7bW8odGhpcy5hLGIpO2IuZT1udWxsO2IuYz1udWxsO3JldHVybiBiLmd9fTtfLmdjPWZ1bmN0aW9uIGxwKCl7cmV0dXJuIHRoaXMuYS5pfTtfLnBkPWZ1bmN0aW9uIG5wKCl7cmV0dXJuIG5ldyBCcCh0aGlzLmEpfTt2YXIgTUY9bWRiKFpoZSwnSGFzaEJpTWFwL0ludmVyc2UnLDYxMCk7YmNiKDEwMDgsNTM0LGFpZSxvcCk7Xy5OZD1mdW5jdGlvbiBwcChhKXtyZXR1cm4gbmV3IHFwKHRoaXMsYSl9O3ZhciBJRj1tZGIoWmhlLCdIYXNoQmlNYXAvSW52ZXJzZS8xJywxMDA4KTtiY2IoMTAwOSwzNDUsa2llLHFwKTtfLmNkPWZ1bmN0aW9uIHJwKCl7cmV0dXJuIHRoaXMuYS5pfTtfLmRkPWZ1bmN0aW9uIHNwKCl7cmV0dXJuIHRoaXMuYS5nfTtfLmVkPWZ1bmN0aW9uIHRwKGEpe3ZhciBiLGMsZDtkPXRoaXMuYS5nO2I9VGJiKEliYihFaWUsa2ViKFRiYihJYmIoYT09bnVsbD8wOnRiKGEpLEZpZSkpLDE1KSkpO2lmKGI9PXRoaXMuYS5hJiYoUEQoYSk9PT1QRChkKXx8YSE9bnVsbCYmcGIoYSxkKSkpe3JldHVybiBhfU5iKCF1byh0aGlzLmIuYS5hLGEsYiksYSk7bW8odGhpcy5iLmEuYSx0aGlzLmEpO2M9bmV3ICRvKGEsYix0aGlzLmEuaSx0aGlzLmEuZik7dGhpcy5hPWM7cG8odGhpcy5iLmEuYSxjLG51bGwpO3RoaXMuYi5iPXRoaXMuYi5hLmEuZztyZXR1cm4gZH07dmFyIEhGPW1kYihaaGUsJ0hhc2hCaU1hcC9JbnZlcnNlLzEvSW52ZXJzZUVudHJ5JywxMDA5KTtiY2IoNjExLDUzMixmaWUsdXApO18uS2M9ZnVuY3Rpb24gdnAoKXtyZXR1cm4gbmV3IHhwKHRoaXMuYS5hKX07Xy5NYz1mdW5jdGlvbiB3cChhKXt2YXIgYjtiPXZvKHRoaXMuYS5hLGEsVGJiKEliYihFaWUsa2ViKFRiYihJYmIoYT09bnVsbD8wOnRiKGEpLEZpZSkpLDE1KSkpKTtpZighYil7cmV0dXJuIGZhbHNlfWVsc2V7bW8odGhpcy5hLmEsYik7cmV0dXJuIHRydWV9fTt2YXIgS0Y9bWRiKFpoZSwnSGFzaEJpTWFwL0ludmVyc2UvSW52ZXJzZUtleVNldCcsNjExKTtiY2IoMTAwNyw1MzQsYWllLHhwKTtfLk5kPWZ1bmN0aW9uIHlwKGEpe3JldHVybiBhLml9O3ZhciBKRj1tZGIoWmhlLCdIYXNoQmlNYXAvSW52ZXJzZS9JbnZlcnNlS2V5U2V0LzEnLDEwMDcpO2JjYigxMDEwLDEse30senApO18uT2Q9ZnVuY3Rpb24gQXAoYSxiKXtocCh0aGlzLmEsYSxiKX07dmFyIExGPW1kYihaaGUsJ0hhc2hCaU1hcC9JbnZlcnNlL2xhbWJkYSQwJFR5cGUnLDEwMTApO2JjYig2MDksNTMyLGZpZSxCcCk7Xy5LYz1mdW5jdGlvbiBDcCgpe3JldHVybiBuZXcgRXAodGhpcy5hKX07Xy5NYz1mdW5jdGlvbiBEcChhKXt2YXIgYjtiPXVvKHRoaXMuYSxhLFRiYihJYmIoRWllLGtlYihUYmIoSWJiKGE9PW51bGw/MDp0YihhKSxGaWUpKSwxNSkpKSk7aWYoIWIpe3JldHVybiBmYWxzZX1lbHNle21vKHRoaXMuYSxiKTtiLmU9bnVsbDtiLmM9bnVsbDtyZXR1cm4gdHJ1ZX19O3ZhciBQRj1tZGIoWmhlLCdIYXNoQmlNYXAvS2V5U2V0Jyw2MDkpO2JjYigxMDA2LDUzNCxhaWUsRXApO18uTmQ9ZnVuY3Rpb24gRnAoYSl7cmV0dXJuIGEuZ307dmFyIE9GPW1kYihaaGUsJ0hhc2hCaU1hcC9LZXlTZXQvMScsMTAwNik7YmNiKDEwOTMsNjE5LF9oZSk7dmFyIFJGPW1kYihaaGUsJ0hhc2hNdWx0aW1hcEd3dFNlcmlhbGl6YXRpb25EZXBlbmRlbmNpZXMnLDEwOTMpO2JjYigyNjUsMTA5MyxfaGUsSHApO18uaGM9ZnVuY3Rpb24gSXAoKXtyZXR1cm4gbmV3IFVxYihDdih0aGlzLmEpKX07Xy5nZD1mdW5jdGlvbiBKcCgpe3JldHVybiBuZXcgVXFiKEN2KHRoaXMuYSkpfTtfLmE9Mjt2YXIgU0Y9bWRiKFpoZSwnSGFzaE11bHRpbWFwJywyNjUpO2JjYigxOTk5LDE1Mix5aWUpO18uSGM9ZnVuY3Rpb24gTXAoYSl7cmV0dXJuIHRoaXMuUGQoKS5IYyhhKX07Xy5kYz1mdW5jdGlvbiBOcCgpe3JldHVybiB0aGlzLlBkKCkuZGMoKX07Xy5nYz1mdW5jdGlvbiBPcCgpe3JldHVybiB0aGlzLlBkKCkuZ2MoKX07dmFyIFRGPW1kYihaaGUsJ0ltbXV0YWJsZUFzTGlzdCcsMTk5OSk7YmNiKDE5MzEsNzE1LEFpZSk7Xy5MZD1mdW5jdGlvbiBRcCgpe3JldHVybiBRbCgpLG5ldyBveSh0aGlzLmEpfTtfLkNjPWZ1bmN0aW9uIFJwKCl7cmV0dXJuIFFsKCksbmV3IG95KHRoaXMuYSl9O18ucGQ9ZnVuY3Rpb24gU3AoKXtyZXR1cm4gUWwoKSxuZXcgb3kodGhpcy5hKX07dmFyIFVGPW1kYihaaGUsJ0ltbXV0YWJsZUJpTWFwJywxOTMxKTtiY2IoMTk3NywxLHt9KTt2YXIgVkY9bWRiKFpoZSwnSW1tdXRhYmxlQ29sbGVjdGlvbi9CdWlsZGVyJywxOTc3KTtiY2IoMTAyMiw3MDMsQ2llLFRwKTt2YXIgWUY9bWRiKFpoZSwnSW1tdXRhYmxlRW51bVNldCcsMTAyMik7YmNiKDk2OSwzODYsJGhlLFZwKTtfLlhiPWZ1bmN0aW9uIFdwKGEpe3JldHVybiB0aGlzLmEuWGIoYSl9O3ZhciBaRj1tZGIoWmhlLCdJbW11dGFibGVMaXN0LzEnLDk2OSk7YmNiKDk2OCwxOTc3LHt9LFhwKTt2YXIgJEY9bWRiKFpoZSwnSW1tdXRhYmxlTGlzdC9CdWlsZGVyJyw5NjgpO2JjYig2MTQsMTk4LFloZSxZcCk7Xy5PYj1mdW5jdGlvbiBacCgpe3JldHVybiB0aGlzLmEuT2IoKX07Xy5QYj1mdW5jdGlvbiAkcCgpe3JldHVybiBCRCh0aGlzLmEuUGIoKSw0MikuY2QoKX07dmFyIGFHPW1kYihaaGUsJ0ltbXV0YWJsZU1hcC8xJyw2MTQpO2JjYigxMDQxLDEse30sX3ApO18uS2I9ZnVuY3Rpb24gYXEoYSl7cmV0dXJuIEJEKGEsNDIpLmNkKCl9O3ZhciBiRz1tZGIoWmhlLCdJbW11dGFibGVNYXAvMm1ldGhvZHJlZiRnZXRLZXkkVHlwZScsMTA0MSk7YmNiKDEwNDAsMSx7fSxjcSk7dmFyIGNHPW1kYihaaGUsJ0ltbXV0YWJsZU1hcC9CdWlsZGVyJywxMDQwKTtiY2IoMjAwMCwxOTgxLENpZSk7Xy5LYz1mdW5jdGlvbiBncSgpe3ZhciBhO3JldHVybiBhPVdtKHRoaXMuYSkuRWQoKSxuZXcgWXAoYSl9O18uRGQ9ZnVuY3Rpb24gZHEoKXtyZXR1cm4gbmV3IEZxKHRoaXMpfTtfLkpjPWZ1bmN0aW9uIGVxKGEpe3ZhciBiLGM7UWIoYSk7Yz10aGlzLmdjKCk7Zm9yKGI9MDtiPGM7YisrKXthLnRkKEJEKFJsKFdtKHRoaXMuYSkpLlhiKGIpLDQyKS5jZCgpKX19O18uRWQ9ZnVuY3Rpb24gZnEoKXt2YXIgYTtyZXR1cm4gKGE9dGhpcy5jLCFhPyh0aGlzLmM9bmV3IEZxKHRoaXMpKTphKS5FZCgpfTtfLk5jPWZ1bmN0aW9uIGhxKCl7cmV0dXJuIFpqKHRoaXMuZ2MoKSwxMjk2LG5ldyBEcSh0aGlzKSl9O3ZhciBtRz1tZGIoWmhlLCdJbmRleGVkSW1tdXRhYmxlU2V0JywyMDAwKTtiY2IoMTE4MCwyMDAwLENpZSxqcSk7Xy5LYz1mdW5jdGlvbiBucSgpe3ZhciBhO3JldHVybiBhPVdtKHRoaXMuYSkuRWQoKSxuZXcgWXAoYSl9O18uSGM9ZnVuY3Rpb24ga3EoYSl7cmV0dXJuIHRoaXMuYS5fYihhKX07Xy5KYz1mdW5jdGlvbiBscShhKXtRYihhKTtzdGIodGhpcy5hLG5ldyBxcShhKSl9O18uRWQ9ZnVuY3Rpb24gbXEoKXt2YXIgYTtyZXR1cm4gYT1XbSh0aGlzLmEpLkVkKCksbmV3IFlwKGEpfTtfLmdjPWZ1bmN0aW9uIG9xKCl7cmV0dXJuIHRoaXMuYS5nYygpfTtfLk5jPWZ1bmN0aW9uIHBxKCl7cmV0dXJuICRqKFdtKHRoaXMuYSkuTmMoKSxuZXcgX3ApfTt2YXIgZUc9bWRiKFpoZSwnSW1tdXRhYmxlTWFwS2V5U2V0JywxMTgwKTtiY2IoMTE4MSwxLHt9LHFxKTtfLk9kPWZ1bmN0aW9uIHJxKGEsYil7UWwoKTt0aGlzLmEudGQoYSl9O3ZhciBkRz1tZGIoWmhlLCdJbW11dGFibGVNYXBLZXlTZXQvbGFtYmRhJDAkVHlwZScsMTE4MSk7YmNiKDExNzgsMTk4MCx4aWUsc3EpO18uS2M9ZnVuY3Rpb24gdnEoKXtyZXR1cm4gbmV3IEFxKHRoaXMpfTtfLkhjPWZ1bmN0aW9uIHRxKGEpe3JldHVybiBhIT1udWxsJiZqcihuZXcgQXEodGhpcyksYSl9O18uRWQ9ZnVuY3Rpb24gdXEoKXtyZXR1cm4gbmV3IEFxKHRoaXMpfTtfLmdjPWZ1bmN0aW9uIHdxKCl7cmV0dXJuIHRoaXMuYS5nYygpfTtfLk5jPWZ1bmN0aW9uIHhxKCl7cmV0dXJuICRqKFdtKHRoaXMuYSkuTmMoKSxuZXcgeXEpfTt2YXIgaEc9bWRiKFpoZSwnSW1tdXRhYmxlTWFwVmFsdWVzJywxMTc4KTtiY2IoMTE3OSwxLHt9LHlxKTtfLktiPWZ1bmN0aW9uIHpxKGEpe3JldHVybiBCRChhLDQyKS5kZCgpfTt2YXIgZkc9bWRiKFpoZSwnSW1tdXRhYmxlTWFwVmFsdWVzLzBtZXRob2RyZWYkZ2V0VmFsdWUkVHlwZScsMTE3OSk7YmNiKDYyNiwxOTgsWWhlLEFxKTtfLk9iPWZ1bmN0aW9uIEJxKCl7cmV0dXJuIHRoaXMuYS5PYigpfTtfLlBiPWZ1bmN0aW9uIENxKCl7cmV0dXJuIEJEKHRoaXMuYS5QYigpLDQyKS5kZCgpfTt2YXIgZ0c9bWRiKFpoZSwnSW1tdXRhYmxlTWFwVmFsdWVzLzEnLDYyNik7YmNiKDExODIsMSx7fSxEcSk7Xy5sZD1mdW5jdGlvbiBFcShhKXtyZXR1cm4gaXEodGhpcy5hLGEpfTt2YXIga0c9bWRiKFpoZSwnSW5kZXhlZEltbXV0YWJsZVNldC8wbWV0aG9kcmVmJGdldCRUeXBlJywxMTgyKTtiY2IoNzUyLDE5OTkseWllLEZxKTtfLlBkPWZ1bmN0aW9uIEdxKCl7cmV0dXJuIHRoaXMuYX07Xy5YYj1mdW5jdGlvbiBIcShhKXtyZXR1cm4gaXEodGhpcy5hLGEpfTtfLmdjPWZ1bmN0aW9uIElxKCl7cmV0dXJuIHRoaXMuYS5hLmdjKCl9O3ZhciBsRz1tZGIoWmhlLCdJbmRleGVkSW1tdXRhYmxlU2V0LzEnLDc1Mik7YmNiKDQ0LDEse30sU3EpO18uS2I9ZnVuY3Rpb24gVHEoYSl7cmV0dXJuIEJEKGEsMjApLktjKCl9O18uRmI9ZnVuY3Rpb24gVXEoYSl7cmV0dXJuIHRoaXM9PT1hfTt2YXIgbkc9bWRiKFpoZSwnSXRlcmFibGVzLzEwJyw0NCk7YmNiKDEwNDIsNTM3LHZpZSxXcSk7Xy5KYz1mdW5jdGlvbiBYcShhKXtRYihhKTt0aGlzLmIuSmMobmV3ICRxKHRoaXMuYSxhKSl9O18uS2M9ZnVuY3Rpb24gWXEoKXtyZXR1cm4gVnEodGhpcyl9O3ZhciBwRz1tZGIoWmhlLCdJdGVyYWJsZXMvNCcsMTA0Mik7YmNiKDEwNDMsMSxxaWUsJHEpO18udGQ9ZnVuY3Rpb24gX3EoYSl7WnEodGhpcy5iLHRoaXMuYSxhKX07dmFyIG9HPW1kYihaaGUsJ0l0ZXJhYmxlcy80L2xhbWJkYSQwJFR5cGUnLDEwNDMpO2JjYigxMDQ0LDUzNyx2aWUsYXIpO18uSmM9ZnVuY3Rpb24gYnIoYSl7UWIoYSk7cmViKHRoaXMuYSxuZXcgZHIoYSx0aGlzLmIpKX07Xy5LYz1mdW5jdGlvbiBjcigpe3JldHVybiB1cihuZXcgRnlkKHRoaXMuYSksdGhpcy5iKX07dmFyIHJHPW1kYihaaGUsJ0l0ZXJhYmxlcy81JywxMDQ0KTtiY2IoMTA0NSwxLHFpZSxkcik7Xy50ZD1mdW5jdGlvbiBlcihhKXt0aGlzLmEudGQoR2ZkKGEpKX07dmFyIHFHPW1kYihaaGUsJ0l0ZXJhYmxlcy81L2xhbWJkYSQwJFR5cGUnLDEwNDUpO2JjYigxMDcxLDE5OCxZaGUsd3IpO18uT2I9ZnVuY3Rpb24geHIoKXtyZXR1cm4gdGhpcy5hLk9iKCl9O18uUGI9ZnVuY3Rpb24geXIoKXtyZXR1cm4gdGhpcy5hLlBiKCl9O3ZhciBzRz1tZGIoWmhlLCdJdGVyYXRvcnMvMScsMTA3MSk7YmNiKDEwNzIsNjk5LFloZSx6cik7Xy5ZYj1mdW5jdGlvbiBBcigpe3ZhciBhO3doaWxlKHRoaXMuYi5PYigpKXthPXRoaXMuYi5QYigpO2lmKHRoaXMuYS5MYihhKSl7cmV0dXJuIGF9fXJldHVybiB0aGlzLmU9MixudWxsfTt2YXIgdEc9bWRiKFpoZSwnSXRlcmF0b3JzLzUnLDEwNzIpO2JjYig0ODcsMSxhaWUpO18uTmI9ZnVuY3Rpb24gQ3IoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gRHIoKXtyZXR1cm4gdGhpcy5iLk9iKCl9O18uUGI9ZnVuY3Rpb24gRXIoKXtyZXR1cm4gdGhpcy5RZCh0aGlzLmIuUGIoKSl9O18uUWI9ZnVuY3Rpb24gRnIoKXt0aGlzLmIuUWIoKX07dmFyIEtIPW1kYihaaGUsJ1RyYW5zZm9ybWVkSXRlcmF0b3InLDQ4Nyk7YmNiKDEwNzMsNDg3LGFpZSxHcik7Xy5RZD1mdW5jdGlvbiBIcihhKXtyZXR1cm4gdGhpcy5hLktiKGEpfTt2YXIgdUc9bWRiKFpoZSwnSXRlcmF0b3JzLzYnLDEwNzMpO2JjYig3MTcsMTk4LFloZSxJcik7Xy5PYj1mdW5jdGlvbiBKcigpe3JldHVybiAhdGhpcy5hfTtfLlBiPWZ1bmN0aW9uIEtyKCl7aWYodGhpcy5hKXt0aHJvdyB2YmIobmV3IHV0Yil9dGhpcy5hPXRydWU7cmV0dXJuIHRoaXMuYn07Xy5hPWZhbHNlO3ZhciB2Rz1tZGIoWmhlLCdJdGVyYXRvcnMvOScsNzE3KTtiY2IoMTA3MCwzODYsJGhlLE5yKTtfLlhiPWZ1bmN0aW9uIE9yKGEpe3JldHVybiB0aGlzLmFbdGhpcy5iK2FdfTtfLmI9MDt2YXIgTHI7dmFyIHdHPW1kYihaaGUsJ0l0ZXJhdG9ycy9BcnJheUl0cicsMTA3MCk7YmNiKDM5LDEsezM5OjEsNDc6MX0sU3IpO18uTmI9ZnVuY3Rpb24gVHIoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gUXIodGhpcyl9O18uUGI9ZnVuY3Rpb24gVnIoKXtyZXR1cm4gUnIodGhpcyl9O18uUWI9ZnVuY3Rpb24gV3IoKXtWYighIXRoaXMuYyk7dGhpcy5jLlFiKCk7dGhpcy5jPW51bGx9O3ZhciB4Rz1tZGIoWmhlLCdJdGVyYXRvcnMvQ29uY2F0ZW5hdGVkSXRlcmF0b3InLDM5KTtiY2IoMjIsMSx7MzoxLDM1OjEsMjI6MX0pO18ud2Q9ZnVuY3Rpb24gX3IoYSl7cmV0dXJuIFhyKHRoaXMsQkQoYSwyMikpfTtfLkZiPWZ1bmN0aW9uIGJzKGEpe3JldHVybiB0aGlzPT09YX07Xy5IYj1mdW5jdGlvbiBjcygpe3JldHVybiBGQ2IodGhpcyl9O18uSWI9ZnVuY3Rpb24gZHMoKXtyZXR1cm4gWnIodGhpcyl9O18uZz0wO3ZhciBDST1tZGIoUGhlLCdFbnVtJywyMik7YmNiKDUzOCwyMix7NTM4OjEsMzoxLDM1OjEsMjI6MSw0NzoxfSxpcyk7Xy5OYj1mdW5jdGlvbiBqcyhhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBrcygpe3JldHVybiBmYWxzZX07Xy5QYj1mdW5jdGlvbiBscygpe3Rocm93IHZiYihuZXcgdXRiKX07Xy5RYj1mdW5jdGlvbiBtcygpe1ZiKGZhbHNlKX07dmFyIGdzO3ZhciB5Rz1uZGIoWmhlLCdJdGVyYXRvcnMvRW1wdHlNb2RpZmlhYmxlSXRlcmF0b3InLDUzOCxDSSxvcyxucyk7dmFyIHBzO2JjYigxODM0LDYxOSxfaGUpO3ZhciBFRz1tZGIoWmhlLCdMaW5rZWRIYXNoTXVsdGltYXBHd3RTZXJpYWxpemF0aW9uRGVwZW5kZW5jaWVzJywxODM0KTtiY2IoMTgzNSwxODM0LF9oZSxzcyk7Xy5oYz1mdW5jdGlvbiB1cygpe3JldHVybiBuZXcgQXNiKEN2KHRoaXMuYikpfTtfLiRiPWZ1bmN0aW9uIHRzKCl7TmModGhpcyk7QXModGhpcy5hLHRoaXMuYSl9O18uZ2Q9ZnVuY3Rpb24gdnMoKXtyZXR1cm4gbmV3IEFzYihDdih0aGlzLmIpKX07Xy5pYz1mdW5jdGlvbiB3cyhhKXtyZXR1cm4gbmV3IFNzKHRoaXMsYSx0aGlzLmIpfTtfLmtjPWZ1bmN0aW9uIHhzKCl7cmV0dXJuIG5ldyBIcyh0aGlzKX07Xy5sYz1mdW5jdGlvbiB5cygpe3ZhciBhO3JldHVybiBuZXcgS3ViKChhPXRoaXMuZyxCRCghYT8odGhpcy5nPW5ldyBwaCh0aGlzKSk6YSwyMSkpLDE3KX07Xy5lYz1mdW5jdGlvbiB6cygpe3ZhciBhO3JldHVybiBhPXRoaXMuaSwhYT8odGhpcy5pPW5ldyB6Zih0aGlzLHRoaXMuYykpOmF9O18ubmM9ZnVuY3Rpb24gQ3MoKXtyZXR1cm4gbmV3IE92KG5ldyBIcyh0aGlzKSl9O18ub2M9ZnVuY3Rpb24gRHMoKXt2YXIgYTtyZXR1cm4gJGoobmV3IEt1YigoYT10aGlzLmcsQkQoIWE/KHRoaXMuZz1uZXcgcGgodGhpcykpOmEsMjEpKSwxNyksbmV3IEVzKX07Xy5iPTI7dmFyIEZHPW1kYihaaGUsJ0xpbmtlZEhhc2hNdWx0aW1hcCcsMTgzNSk7YmNiKDE4MzgsMSx7fSxFcyk7Xy5LYj1mdW5jdGlvbiBGcyhhKXtyZXR1cm4gQkQoYSw0MikuZGQoKX07dmFyIHpHPW1kYihaaGUsJ0xpbmtlZEhhc2hNdWx0aW1hcC8wbWV0aG9kcmVmJGdldFZhbHVlJFR5cGUnLDE4MzgpO2JjYig4MjQsMSxhaWUsSHMpO18uTmI9ZnVuY3Rpb24gSXMoYSl7UnJiKHRoaXMsYSl9O18uUGI9ZnVuY3Rpb24gS3MoKXtyZXR1cm4gR3ModGhpcyl9O18uT2I9ZnVuY3Rpb24gSnMoKXtyZXR1cm4gdGhpcy5hIT10aGlzLmIuYX07Xy5RYj1mdW5jdGlvbiBMcygpe1ZiKCEhdGhpcy5jKTtHYyh0aGlzLmIsdGhpcy5jLmcsdGhpcy5jLmkpO3RoaXMuYz1udWxsfTt2YXIgQUc9bWRiKFpoZSwnTGlua2VkSGFzaE11bHRpbWFwLzEnLDgyNCk7YmNiKDMzMCwyMzgsezM0NToxLDIzODoxLDMzMDoxLDIwMjA6MSwzOjEsNDI6MX0sTXMpO18uUmQ9ZnVuY3Rpb24gTnMoKXtyZXR1cm4gdGhpcy5mfTtfLlNkPWZ1bmN0aW9uIE9zKGEpe3RoaXMuYz1hfTtfLlRkPWZ1bmN0aW9uIFBzKGEpe3RoaXMuZj1hfTtfLmQ9MDt2YXIgQkc9bWRiKFpoZSwnTGlua2VkSGFzaE11bHRpbWFwL1ZhbHVlRW50cnknLDMzMCk7YmNiKDE4MzYsMTk3MCx7MjAyMDoxLDIwOjEsMjg6MSwxNDoxLDIxOjF9LFNzKTtfLkZjPWZ1bmN0aW9uIFRzKGEpe3ZhciBiLGMsZCxlLGY7Zj1UYmIoSWJiKEVpZSxrZWIoVGJiKEliYihhPT1udWxsPzA6dGIoYSksRmllKSksMTUpKSk7Yj1mJnRoaXMuYi5sZW5ndGgtMTtlPXRoaXMuYltiXTtmb3IoYz1lO2M7Yz1jLmEpe2lmKGMuZD09ZiYmSGIoYy5pLGEpKXtyZXR1cm4gZmFsc2V9fWQ9bmV3IE1zKHRoaXMuYyxhLGYsZSk7QnModGhpcy5kLGQpO2QuZj10aGlzO3RoaXMuZD1kO0FzKHRoaXMuZy5hLmIsZCk7QXMoZCx0aGlzLmcuYSk7dGhpcy5iW2JdPWQ7Kyt0aGlzLmY7Kyt0aGlzLmU7UXModGhpcyk7cmV0dXJuIHRydWV9O18uJGI9ZnVuY3Rpb24gVXMoKXt2YXIgYSxiO0FsYih0aGlzLmIsbnVsbCk7dGhpcy5mPTA7Zm9yKGE9dGhpcy5hO2EhPXRoaXM7YT1hLlJkKCkpe2I9QkQoYSwzMzApO0FzKGIuYixiLmUpfXRoaXMuYT10aGlzO3RoaXMuZD10aGlzOysrdGhpcy5lfTtfLkhjPWZ1bmN0aW9uIFZzKGEpe3ZhciBiLGM7Yz1UYmIoSWJiKEVpZSxrZWIoVGJiKEliYihhPT1udWxsPzA6dGIoYSksRmllKSksMTUpKSk7Zm9yKGI9dGhpcy5iW2MmdGhpcy5iLmxlbmd0aC0xXTtiO2I9Yi5hKXtpZihiLmQ9PWMmJkhiKGIuaSxhKSl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX07Xy5KYz1mdW5jdGlvbiBXcyhhKXt2YXIgYjtRYihhKTtmb3IoYj10aGlzLmE7YiE9dGhpcztiPWIuUmQoKSl7YS50ZChCRChiLDMzMCkuaSl9fTtfLlJkPWZ1bmN0aW9uIFhzKCl7cmV0dXJuIHRoaXMuYX07Xy5LYz1mdW5jdGlvbiBZcygpe3JldHVybiBuZXcgY3QodGhpcyl9O18uTWM9ZnVuY3Rpb24gWnMoYSl7cmV0dXJuIFJzKHRoaXMsYSl9O18uU2Q9ZnVuY3Rpb24gJHMoYSl7dGhpcy5kPWF9O18uVGQ9ZnVuY3Rpb24gX3MoYSl7dGhpcy5hPWF9O18uZ2M9ZnVuY3Rpb24gYXQoKXtyZXR1cm4gdGhpcy5mfTtfLmU9MDtfLmY9MDt2YXIgREc9bWRiKFpoZSwnTGlua2VkSGFzaE11bHRpbWFwL1ZhbHVlU2V0JywxODM2KTtiY2IoMTgzNywxLGFpZSxjdCk7Xy5OYj1mdW5jdGlvbiBkdChhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBldCgpe3JldHVybiBidCh0aGlzKSx0aGlzLmIhPXRoaXMuY307Xy5QYj1mdW5jdGlvbiBmdCgpe3ZhciBhLGI7YnQodGhpcyk7aWYodGhpcy5iPT10aGlzLmMpe3Rocm93IHZiYihuZXcgdXRiKX1hPUJEKHRoaXMuYiwzMzApO2I9YS5pO3RoaXMuZD1hO3RoaXMuYj1hLmY7cmV0dXJuIGJ9O18uUWI9ZnVuY3Rpb24gZ3QoKXtidCh0aGlzKTtWYighIXRoaXMuZCk7UnModGhpcy5jLHRoaXMuZC5pKTt0aGlzLmE9dGhpcy5jLmU7dGhpcy5kPW51bGx9O18uYT0wO3ZhciBDRz1tZGIoWmhlLCdMaW5rZWRIYXNoTXVsdGltYXAvVmFsdWVTZXQvMScsMTgzNyk7YmNiKDc2NiwxOTg2LF9oZSxtdCk7Xy5aYj1mdW5jdGlvbiBudCgpe3ZhciBhO3JldHVybiBhPXRoaXMuZiwhYT8odGhpcy5mPW5ldyBqdyh0aGlzKSk6YX07Xy5GYj1mdW5jdGlvbiB0dChhKXtyZXR1cm4gaHcodGhpcyxhKX07Xy5jYz1mdW5jdGlvbiB1dChhKXtyZXR1cm4gbmV3IGJ1KHRoaXMsYSl9O18uZmM9ZnVuY3Rpb24geHQoYSl7cmV0dXJuIGt0KHRoaXMsYSl9O18uJGI9ZnVuY3Rpb24gcHQoKXtpdCh0aGlzKX07Xy5fYj1mdW5jdGlvbiBxdChhKXtyZXR1cm4ganQodGhpcyxhKX07Xy5hYz1mdW5jdGlvbiBydCgpe3JldHVybiBuZXcgancodGhpcyl9O18uYmM9ZnVuY3Rpb24gc3QoKXtyZXR1cm4gbmV3IGV1KHRoaXMpfTtfLnFjPWZ1bmN0aW9uIHZ0KGEpe3JldHVybiBuZXcgYnUodGhpcyxhKX07Xy5kYz1mdW5jdGlvbiB3dCgpe3JldHVybiAhdGhpcy5hfTtfLnJjPWZ1bmN0aW9uIHl0KGEpe3JldHVybiBrdCh0aGlzLGEpfTtfLmdjPWZ1bmN0aW9uIHp0KCl7cmV0dXJuIHRoaXMuZH07Xy5jPTA7Xy5kPTA7dmFyIE1HPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcCcsNzY2KTtiY2IoNTIsMjgsTGllKTtfLmFkPWZ1bmN0aW9uIFB0KGEpe2t0Yih0aGlzLGEpfTtfLk5jPWZ1bmN0aW9uIFF0KCl7cmV0dXJuIG5ldyBLdWIodGhpcywxNil9O18uVmM9ZnVuY3Rpb24gQ3QoYSxiKXt0aHJvdyB2YmIobmV3IGNnYignQWRkIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBsaXN0JykpfTtfLkZjPWZ1bmN0aW9uIER0KGEpe3RoaXMuVmModGhpcy5nYygpLGEpO3JldHVybiB0cnVlfTtfLldjPWZ1bmN0aW9uIEV0KGEsYil7dmFyIGMsZCxlO3VDYihiKTtjPWZhbHNlO2ZvcihlPWIuS2MoKTtlLk9iKCk7KXtkPWUuUGIoKTt0aGlzLlZjKGErKyxkKTtjPXRydWV9cmV0dXJuIGN9O18uJGI9ZnVuY3Rpb24gRnQoKXt0aGlzLlVkKDAsdGhpcy5nYygpKX07Xy5GYj1mdW5jdGlvbiBHdChhKXtyZXR1cm4gQXQodGhpcyxhKX07Xy5IYj1mdW5jdGlvbiBIdCgpe3JldHVybiBxbWIodGhpcyl9O18uWGM9ZnVuY3Rpb24gSXQoYSl7cmV0dXJuIEJ0KHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gSnQoKXtyZXR1cm4gbmV3IHZpYih0aGlzKX07Xy5ZYz1mdW5jdGlvbiBLdCgpe3JldHVybiB0aGlzLlpjKDApfTtfLlpjPWZ1bmN0aW9uIEx0KGEpe3JldHVybiBuZXcgQmliKHRoaXMsYSl9O18uJGM9ZnVuY3Rpb24gTXQoYSl7dGhyb3cgdmJiKG5ldyBjZ2IoJ1JlbW92ZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgbGlzdCcpKX07Xy5VZD1mdW5jdGlvbiBOdChhLGIpe3ZhciBjLGQ7ZD10aGlzLlpjKGEpO2ZvcihjPWE7YzxiOysrYyl7ZC5QYigpO2QuUWIoKX19O18uX2M9ZnVuY3Rpb24gT3QoYSxiKXt0aHJvdyB2YmIobmV3IGNnYignU2V0IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBsaXN0JykpfTtfLmJkPWZ1bmN0aW9uIFJ0KGEsYil7cmV0dXJuIG5ldyBKaWIodGhpcyxhLGIpfTtfLmo9MDt2YXIga0o9bWRiKGJpZSwnQWJzdHJhY3RMaXN0Jyw1Mik7YmNiKDE5NjQsNTIsTGllKTtfLlZjPWZ1bmN0aW9uIFd0KGEsYil7U3QodGhpcyxhLGIpfTtfLldjPWZ1bmN0aW9uIFh0KGEsYil7cmV0dXJuIFR0KHRoaXMsYSxiKX07Xy5YYj1mdW5jdGlvbiBZdChhKXtyZXR1cm4gVXQodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBadCgpe3JldHVybiB0aGlzLlpjKDApfTtfLiRjPWZ1bmN0aW9uICR0KGEpe3JldHVybiBWdCh0aGlzLGEpfTtfLl9jPWZ1bmN0aW9uIF90KGIsYyl7dmFyIGQsZTtkPXRoaXMuWmMoYik7dHJ5e2U9ZC5QYigpO2QuV2IoYyk7cmV0dXJuIGV9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMDkpKXt0aHJvdyB2YmIobmV3IHFjYihcIkNhbid0IHNldCBlbGVtZW50IFwiK2IpKX1lbHNlIHRocm93IHZiYihhKX19O3ZhciB5Sj1tZGIoYmllLCdBYnN0cmFjdFNlcXVlbnRpYWxMaXN0JywxOTY0KTtiY2IoNjM2LDE5NjQsTGllLGJ1KTtfLlpjPWZ1bmN0aW9uIGN1KGEpe3JldHVybiBhdSh0aGlzLGEpfTtfLmdjPWZ1bmN0aW9uIGR1KCl7dmFyIGE7YT1CRChPaGIodGhpcy5hLmIsdGhpcy5iKSwyODMpO3JldHVybiAhYT8wOmEuYX07dmFyIEhHPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcC8xJyw2MzYpO2JjYigxMjk3LDE5NzAsZmllLGV1KTtfLkhjPWZ1bmN0aW9uIGZ1KGEpe3JldHVybiBqdCh0aGlzLmEsYSl9O18uS2M9ZnVuY3Rpb24gZ3UoKXtyZXR1cm4gbmV3IGt1KHRoaXMuYSl9O18uTWM9ZnVuY3Rpb24gaHUoYSl7cmV0dXJuICFrdCh0aGlzLmEsYSkuYS5kYygpfTtfLmdjPWZ1bmN0aW9uIGl1KCl7cmV0dXJuIFZoYih0aGlzLmEuYil9O3ZhciBHRz1tZGIoWmhlLCdMaW5rZWRMaXN0TXVsdGltYXAvMUtleVNldEltcGwnLDEyOTcpO2JjYigxMjk2LDEsYWllLGt1KTtfLk5iPWZ1bmN0aW9uIGx1KGEpe1JyYih0aGlzLGEpfTtfLk9iPWZ1bmN0aW9uIG11KCl7anUodGhpcyk7cmV0dXJuICEhdGhpcy5jfTtfLlBiPWZ1bmN0aW9uIG51KCl7anUodGhpcyk7b3QodGhpcy5jKTt0aGlzLmE9dGhpcy5jO1FxYih0aGlzLmQsdGhpcy5hLmEpO2Rve3RoaXMuYz10aGlzLmMuYn13aGlsZSghIXRoaXMuYyYmIVFxYih0aGlzLmQsdGhpcy5jLmEpKTtyZXR1cm4gdGhpcy5hLmF9O18uUWI9ZnVuY3Rpb24gb3UoKXtqdSh0aGlzKTtWYighIXRoaXMuYSk7aXIobmV3IHd1KHRoaXMuZSx0aGlzLmEuYSkpO3RoaXMuYT1udWxsO3RoaXMuYj10aGlzLmUuY307Xy5iPTA7dmFyIElHPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcC9EaXN0aW5jdEtleUl0ZXJhdG9yJywxMjk2KTtiY2IoMjgzLDEsezI4MzoxfSxwdSk7Xy5hPTA7dmFyIEpHPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcC9LZXlMaXN0JywyODMpO2JjYigxMjk1LDM0NSxraWUscXUpO18uY2Q9ZnVuY3Rpb24gcnUoKXtyZXR1cm4gdGhpcy5hfTtfLmRkPWZ1bmN0aW9uIHN1KCl7cmV0dXJuIHRoaXMuZn07Xy5lZD1mdW5jdGlvbiB0dShhKXt2YXIgYjtiPXRoaXMuZjt0aGlzLmY9YTtyZXR1cm4gYn07dmFyIEtHPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcC9Ob2RlJywxMjk1KTtiY2IoNTYwLDEsamllLHd1LHh1KTtfLk5iPWZ1bmN0aW9uIHp1KGEpe1JyYih0aGlzLGEpfTtfLlJiPWZ1bmN0aW9uIHl1KGEpe3RoaXMuZT1odCh0aGlzLmYsdGhpcy5iLGEsdGhpcy5jKTsrK3RoaXMuZDt0aGlzLmE9bnVsbH07Xy5PYj1mdW5jdGlvbiBBdSgpe3JldHVybiAhIXRoaXMuY307Xy5TYj1mdW5jdGlvbiBCdSgpe3JldHVybiAhIXRoaXMuZX07Xy5QYj1mdW5jdGlvbiBDdSgpe3JldHVybiB1dSh0aGlzKX07Xy5UYj1mdW5jdGlvbiBEdSgpe3JldHVybiB0aGlzLmR9O18uVWI9ZnVuY3Rpb24gRXUoKXtyZXR1cm4gdnUodGhpcyl9O18uVmI9ZnVuY3Rpb24gRnUoKXtyZXR1cm4gdGhpcy5kLTF9O18uUWI9ZnVuY3Rpb24gR3UoKXtWYighIXRoaXMuYSk7aWYodGhpcy5hIT10aGlzLmMpe3RoaXMuZT10aGlzLmEuZTstLXRoaXMuZH1lbHNle3RoaXMuYz10aGlzLmEuY31sdCh0aGlzLmYsdGhpcy5hKTt0aGlzLmE9bnVsbH07Xy5XYj1mdW5jdGlvbiBIdShhKXtVYighIXRoaXMuYSk7dGhpcy5hLmY9YX07Xy5kPTA7dmFyIExHPW1kYihaaGUsJ0xpbmtlZExpc3RNdWx0aW1hcC9WYWx1ZUZvcktleUl0ZXJhdG9yJyw1NjApO2JjYigxMDE4LDUyLExpZSk7Xy5WYz1mdW5jdGlvbiBUdShhLGIpe3RoaXMuYS5WYyhhLGIpfTtfLldjPWZ1bmN0aW9uIFV1KGEsYil7cmV0dXJuIHRoaXMuYS5XYyhhLGIpfTtfLkhjPWZ1bmN0aW9uIFZ1KGEpe3JldHVybiB0aGlzLmEuSGMoYSl9O18uWGI9ZnVuY3Rpb24gV3UoYSl7cmV0dXJuIHRoaXMuYS5YYihhKX07Xy4kYz1mdW5jdGlvbiBYdShhKXtyZXR1cm4gdGhpcy5hLiRjKGEpfTtfLl9jPWZ1bmN0aW9uIFl1KGEsYil7cmV0dXJuIHRoaXMuYS5fYyhhLGIpfTtfLmdjPWZ1bmN0aW9uIFp1KCl7cmV0dXJuIHRoaXMuYS5nYygpfTt2YXIgT0c9bWRiKFpoZSwnTGlzdHMvQWJzdHJhY3RMaXN0V3JhcHBlcicsMTAxOCk7YmNiKDEwMTksMTAxOCxOaWUpO3ZhciBQRz1tZGIoWmhlLCdMaXN0cy9SYW5kb21BY2Nlc3NMaXN0V3JhcHBlcicsMTAxOSk7YmNiKDEwMjEsMTAxOSxOaWUsJHUpO18uWmM9ZnVuY3Rpb24gX3UoYSl7cmV0dXJuIHRoaXMuYS5aYyhhKX07dmFyIE5HPW1kYihaaGUsJ0xpc3RzLzEnLDEwMjEpO2JjYigxMzEsNTIsezEzMToxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MX0sZHYpO18uVmM9ZnVuY3Rpb24gZXYoYSxiKXt0aGlzLmEuVmMoY3YodGhpcyxhKSxiKX07Xy4kYj1mdW5jdGlvbiBmdigpe3RoaXMuYS4kYigpfTtfLlhiPWZ1bmN0aW9uIGd2KGEpe3JldHVybiB0aGlzLmEuWGIoYnYodGhpcyxhKSl9O18uS2M9ZnVuY3Rpb24gaHYoKXtyZXR1cm4gYXYodGhpcywwKX07Xy5aYz1mdW5jdGlvbiBpdihhKXtyZXR1cm4gYXYodGhpcyxhKX07Xy4kYz1mdW5jdGlvbiBqdihhKXtyZXR1cm4gdGhpcy5hLiRjKGJ2KHRoaXMsYSkpfTtfLlVkPWZ1bmN0aW9uIGt2KGEsYil7KFRiKGEsYix0aGlzLmEuZ2MoKSksU3UodGhpcy5hLmJkKGN2KHRoaXMsYiksY3YodGhpcyxhKSkpKS4kYigpfTtfLl9jPWZ1bmN0aW9uIGx2KGEsYil7cmV0dXJuIHRoaXMuYS5fYyhidih0aGlzLGEpLGIpfTtfLmdjPWZ1bmN0aW9uIG12KCl7cmV0dXJuIHRoaXMuYS5nYygpfTtfLmJkPWZ1bmN0aW9uIG52KGEsYil7cmV0dXJuIFRiKGEsYix0aGlzLmEuZ2MoKSksU3UodGhpcy5hLmJkKGN2KHRoaXMsYiksY3YodGhpcyxhKSkpfTt2YXIgU0c9bWRiKFpoZSwnTGlzdHMvUmV2ZXJzZUxpc3QnLDEzMSk7YmNiKDI4MCwxMzEsezEzMToxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MSw1NDoxfSxvdik7dmFyIFFHPW1kYihaaGUsJ0xpc3RzL1JhbmRvbUFjY2Vzc1JldmVyc2VMaXN0JywyODApO2JjYigxMDIwLDEsamllLHF2KTtfLk5iPWZ1bmN0aW9uIHN2KGEpe1JyYih0aGlzLGEpfTtfLlJiPWZ1bmN0aW9uIHJ2KGEpe3RoaXMuYy5SYihhKTt0aGlzLmMuVWIoKTt0aGlzLmE9ZmFsc2V9O18uT2I9ZnVuY3Rpb24gdHYoKXtyZXR1cm4gdGhpcy5jLlNiKCl9O18uU2I9ZnVuY3Rpb24gdXYoKXtyZXR1cm4gdGhpcy5jLk9iKCl9O18uUGI9ZnVuY3Rpb24gdnYoKXtyZXR1cm4gcHYodGhpcyl9O18uVGI9ZnVuY3Rpb24gd3YoKXtyZXR1cm4gY3YodGhpcy5iLHRoaXMuYy5UYigpKX07Xy5VYj1mdW5jdGlvbiB4digpe2lmKCF0aGlzLmMuT2IoKSl7dGhyb3cgdmJiKG5ldyB1dGIpfXRoaXMuYT10cnVlO3JldHVybiB0aGlzLmMuUGIoKX07Xy5WYj1mdW5jdGlvbiB5digpe3JldHVybiBjdih0aGlzLmIsdGhpcy5jLlRiKCkpLTF9O18uUWI9ZnVuY3Rpb24genYoKXtWYih0aGlzLmEpO3RoaXMuYy5RYigpO3RoaXMuYT1mYWxzZX07Xy5XYj1mdW5jdGlvbiBBdihhKXtVYih0aGlzLmEpO3RoaXMuYy5XYihhKX07Xy5hPWZhbHNlO3ZhciBSRz1tZGIoWmhlLCdMaXN0cy9SZXZlcnNlTGlzdC8xJywxMDIwKTtiY2IoNDMyLDQ4NyxhaWUsTXYpO18uUWQ9ZnVuY3Rpb24gTnYoYSl7cmV0dXJuIEx2KGEpfTt2YXIgVEc9bWRiKFpoZSwnTWFwcy8xJyw0MzIpO2JjYig2OTgsNDg3LGFpZSxPdik7Xy5RZD1mdW5jdGlvbiBQdihhKXtyZXR1cm4gQkQoYSw0MikuZGQoKX07dmFyIFVHPW1kYihaaGUsJ01hcHMvMicsNjk4KTtiY2IoOTYyLDQ4NyxhaWUsUXYpO18uUWQ9ZnVuY3Rpb24gUnYoYSl7cmV0dXJuIG5ldyBXbyhhLHd3KHRoaXMuYSxhKSl9O3ZhciBWRz1tZGIoWmhlLCdNYXBzLzMnLDk2Mik7YmNiKDk1OSwxOTcxLGZpZSxTdik7Xy5KYz1mdW5jdGlvbiBUdihhKXttaih0aGlzLmEsYSl9O18uS2M9ZnVuY3Rpb24gVXYoKXtyZXR1cm4gdGhpcy5hLmtjKCl9O18uUmM9ZnVuY3Rpb24gVnYoKXtyZXR1cm4gdGhpcy5hfTtfLk5jPWZ1bmN0aW9uIFd2KCl7cmV0dXJuIHRoaXMuYS5sYygpfTt2YXIgWEc9bWRiKFpoZSwnTWFwcy9JdGVyYXRvckJhc2VkQWJzdHJhY3RNYXAvMScsOTU5KTtiY2IoOTYwLDEse30sWHYpO18uT2Q9ZnVuY3Rpb24gWXYoYSxiKXt0aGlzLmEudGQoYSl9O3ZhciBaRz1tZGIoWmhlLCdNYXBzL0tleVNldC9sYW1iZGEkMCRUeXBlJyw5NjApO2JjYig5NTgsMjgsZGllLFp2KTtfLiRiPWZ1bmN0aW9uICR2KCl7dGhpcy5hLiRiKCl9O18uSGM9ZnVuY3Rpb24gX3YoYSl7cmV0dXJuIHRoaXMuYS51YyhhKX07Xy5KYz1mdW5jdGlvbiBhdyhhKXtRYihhKTt0aGlzLmEud2MobmV3IGZ3KGEpKX07Xy5kYz1mdW5jdGlvbiBidygpe3JldHVybiB0aGlzLmEuZGMoKX07Xy5LYz1mdW5jdGlvbiBjdygpe3JldHVybiBuZXcgT3YodGhpcy5hLnZjKCkuS2MoKSl9O18uTWM9ZnVuY3Rpb24gZHcoYil7dmFyIGMsZDt0cnl7cmV0dXJuIHplKHRoaXMsYix0cnVlKX1jYXRjaChhKXthPXViYihhKTtpZihKRChhLDQxKSl7Zm9yKGQ9dGhpcy5hLnZjKCkuS2MoKTtkLk9iKCk7KXtjPUJEKGQuUGIoKSw0Mik7aWYoSGIoYixjLmRkKCkpKXt0aGlzLmEuQmMoYy5jZCgpKTtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfWVsc2UgdGhyb3cgdmJiKGEpfX07Xy5nYz1mdW5jdGlvbiBldygpe3JldHVybiB0aGlzLmEuZ2MoKX07dmFyIGFIPW1kYihaaGUsJ01hcHMvVmFsdWVzJyw5NTgpO2JjYig5NjEsMSx7fSxmdyk7Xy5PZD1mdW5jdGlvbiBndyhhLGIpe3RoaXMuYS50ZChiKX07dmFyIF9HPW1kYihaaGUsJ01hcHMvVmFsdWVzL2xhbWJkYSQwJFR5cGUnLDk2MSk7YmNiKDczNiwxOTg3LGNpZSxqdyk7Xy54Yz1mdW5jdGlvbiBudyhhKXtyZXR1cm4gdGhpcy5hLl9iKGEpP3RoaXMuYS5jYyhhKTpudWxsfTtfLkJjPWZ1bmN0aW9uIHF3KGEpe3JldHVybiB0aGlzLmEuX2IoYSk/dGhpcy5hLmZjKGEpOm51bGx9O18uJGI9ZnVuY3Rpb24ga3coKXt0aGlzLmEuJGIoKX07Xy5fYj1mdW5jdGlvbiBsdyhhKXtyZXR1cm4gdGhpcy5hLl9iKGEpfTtfLkVjPWZ1bmN0aW9uIG13KCl7cmV0dXJuIG5ldyBzdyh0aGlzKX07Xy5EYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkVjKCl9O18uZGM9ZnVuY3Rpb24gb3coKXtyZXR1cm4gdGhpcy5hLmRjKCl9O18uZWM9ZnVuY3Rpb24gcHcoKXtyZXR1cm4gdGhpcy5hLmVjKCl9O18uZ2M9ZnVuY3Rpb24gcncoKXtyZXR1cm4gdGhpcy5hLmVjKCkuZ2MoKX07dmFyIGVIPW1kYihaaGUsJ011bHRpbWFwcy9Bc01hcCcsNzM2KTtiY2IoMTEwNCwxOTcxLGZpZSxzdyk7Xy5LYz1mdW5jdGlvbiB0dygpe3JldHVybiBCdih0aGlzLmEuYS5lYygpLG5ldyB4dyh0aGlzKSl9O18uUmM9ZnVuY3Rpb24gdXcoKXtyZXR1cm4gdGhpcy5hfTtfLk1jPWZ1bmN0aW9uIHZ3KGEpe3ZhciBiO2lmKCFaZSh0aGlzLGEpKXtyZXR1cm4gZmFsc2V9Yj1CRChhLDQyKTtpdyh0aGlzLmEsYi5jZCgpKTtyZXR1cm4gdHJ1ZX07dmFyIGRIPW1kYihaaGUsJ011bHRpbWFwcy9Bc01hcC9FbnRyeVNldCcsMTEwNCk7YmNiKDExMDgsMSx7fSx4dyk7Xy5LYj1mdW5jdGlvbiB5dyhhKXtyZXR1cm4gd3codGhpcyxhKX07Xy5GYj1mdW5jdGlvbiB6dyhhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciBjSD1tZGIoWmhlLCdNdWx0aW1hcHMvQXNNYXAvRW50cnlTZXQvMScsMTEwOCk7YmNiKDU0MywxOTg5LHs1NDM6MSw4MzU6MSwyMDoxLDI4OjEsMTQ6MX0sQ3cpO18uJGI9ZnVuY3Rpb24gRHcoKXtOYyh0aGlzLmEpfTtfLkhjPWZ1bmN0aW9uIEV3KGEpe3JldHVybiBPYyh0aGlzLmEsYSl9O18uSmM9ZnVuY3Rpb24gRncoYSl7UWIoYSk7cmViKFBjKHRoaXMuYSksbmV3IFJ3KGEpKX07Xy5LYz1mdW5jdGlvbiBHdygpe3JldHVybiBuZXcgTXYoUGModGhpcy5hKS5hLmtjKCkpfTtfLmdjPWZ1bmN0aW9uIEh3KCl7cmV0dXJuIHRoaXMuYS5kfTtfLk5jPWZ1bmN0aW9uIEl3KCl7cmV0dXJuICRqKFBjKHRoaXMuYSkuTmMoKSxuZXcgSncpfTt2YXIga0g9bWRiKFpoZSwnTXVsdGltYXBzL0tleXMnLDU0Myk7YmNiKDExMDYsMSx7fSxKdyk7Xy5LYj1mdW5jdGlvbiBLdyhhKXtyZXR1cm4gQkQoYSw0MikuY2QoKX07dmFyIGdIPW1kYihaaGUsJ011bHRpbWFwcy9LZXlzLzBtZXRob2RyZWYkZ2V0S2V5JFR5cGUnLDExMDYpO2JjYigxMTA1LDQ4NyxhaWUsTHcpO18uUWQ9ZnVuY3Rpb24gTXcoYSl7cmV0dXJuIG5ldyBRdyhCRChhLDQyKSl9O3ZhciBpSD1tZGIoWmhlLCdNdWx0aW1hcHMvS2V5cy8xJywxMTA1KTtiY2IoMTk5MCwxLHs0MTY6MX0pO18uRmI9ZnVuY3Rpb24gTncoYSl7dmFyIGI7aWYoSkQoYSw0OTIpKXtiPUJEKGEsNDE2KTtyZXR1cm4gQkQodGhpcy5hLmRkKCksMTQpLmdjKCk9PUJEKGIuYS5kZCgpLDE0KS5nYygpJiZIYih0aGlzLmEuY2QoKSxiLmEuY2QoKSl9cmV0dXJuIGZhbHNlfTtfLkhiPWZ1bmN0aW9uIE93KCl7dmFyIGE7YT10aGlzLmEuY2QoKTtyZXR1cm4gKGE9PW51bGw/MDp0YihhKSleQkQodGhpcy5hLmRkKCksMTQpLmdjKCl9O18uSWI9ZnVuY3Rpb24gUHcoKXt2YXIgYSxiO2I9eGZiKHRoaXMuYS5jZCgpKTthPUJEKHRoaXMuYS5kZCgpLDE0KS5nYygpO3JldHVybiBhPT0xP2I6YisnIHggJythfTt2YXIgb0g9bWRiKFpoZSwnTXVsdGlzZXRzL0Fic3RyYWN0RW50cnknLDE5OTApO2JjYig0OTIsMTk5MCx7NDkyOjEsNDE2OjF9LFF3KTt2YXIgaEg9bWRiKFpoZSwnTXVsdGltYXBzL0tleXMvMS8xJyw0OTIpO2JjYigxMTA3LDEscWllLFJ3KTtfLnRkPWZ1bmN0aW9uIFN3KGEpe3RoaXMuYS50ZChCRChhLDQyKS5jZCgpKX07dmFyIGpIPW1kYihaaGUsJ011bHRpbWFwcy9LZXlzL2xhbWJkYSQxJFR5cGUnLDExMDcpO2JjYigxMTEwLDEscWllLFZ3KTtfLnRkPWZ1bmN0aW9uIFd3KGEpe1R3KEJEKGEsNDE2KSl9O3ZhciBsSD1tZGIoWmhlLCdNdWx0aXNldC9sYW1iZGEkMCRUeXBlJywxMTEwKTtiY2IoNzM3LDEscWllLFh3KTtfLnRkPWZ1bmN0aW9uIFl3KGEpe1V3KHRoaXMuYSxCRChhLDQxNikpfTt2YXIgbUg9bWRiKFpoZSwnTXVsdGlzZXQvbGFtYmRhJDEkVHlwZScsNzM3KTtiY2IoMTExMSwxLHt9LGJ4KTt2YXIgbkg9bWRiKFpoZSwnTXVsdGlzZXRzLzBtZXRob2RyZWYkYWRkJFR5cGUnLDExMTEpO2JjYig3MzgsMSx7fSxjeCk7Xy5LYj1mdW5jdGlvbiBkeChhKXtyZXR1cm4gX3coQkQoYSw0MTYpKX07dmFyIHFIPW1kYihaaGUsJ011bHRpc2V0cy9sYW1iZGEkMyRUeXBlJyw3MzgpO2JjYigyMDA4LDEsUWhlKTt2YXIgckg9bWRiKFpoZSwnUmFuZ2VHd3RTZXJpYWxpemF0aW9uRGVwZW5kZW5jaWVzJywyMDA4KTtiY2IoNTE0LDIwMDgsezE2OToxLDUxNDoxLDM6MSw0NToxfSxneCk7Xy5MYj1mdW5jdGlvbiBoeChhKXtyZXR1cm4gZngodGhpcyxCRChhLDM1KSl9O18uTWI9ZnVuY3Rpb24gbHgoYSl7cmV0dXJuIGZ4KHRoaXMsQkQoYSwzNSkpfTtfLkZiPWZ1bmN0aW9uIGp4KGEpe3ZhciBiO2lmKEpEKGEsNTE0KSl7Yj1CRChhLDUxNCk7cmV0dXJuIEVrKHRoaXMuYSxiLmEpJiZFayh0aGlzLmIsYi5iKX1yZXR1cm4gZmFsc2V9O18uSGI9ZnVuY3Rpb24ga3goKXtyZXR1cm4gdGhpcy5hLkhiKCkqMzErdGhpcy5iLkhiKCl9O18uSWI9ZnVuY3Rpb24gbXgoKXtyZXR1cm4gbngodGhpcy5hLHRoaXMuYil9O3ZhciBzSD1tZGIoWmhlLCdSYW5nZScsNTE0KTtiY2IoNzc4LDE5OTkseWllLHB4KTtfLlpjPWZ1bmN0aW9uIHR4KGEpe3JldHVybiBqbSh0aGlzLmIsYSl9O18uUGQ9ZnVuY3Rpb24gcXgoKXtyZXR1cm4gdGhpcy5hfTtfLlhiPWZ1bmN0aW9uIHJ4KGEpe3JldHVybiBFbSh0aGlzLmIsYSl9O18uRmQ9ZnVuY3Rpb24gc3goYSl7cmV0dXJuIGptKHRoaXMuYixhKX07dmFyIHRIPW1kYihaaGUsJ1JlZ3VsYXJJbW11dGFibGVBc0xpc3QnLDc3OCk7YmNiKDY0NiwyMDA2LHlpZSx1eCk7Xy5IZD1mdW5jdGlvbiB2eCgpe3JldHVybiB0aGlzLmF9O3ZhciB1SD1tZGIoWmhlLCdSZWd1bGFySW1tdXRhYmxlTGlzdCcsNjQ2KTtiY2IoNjE2LDcxNSxBaWUsd3gpO3ZhciB2SD1tZGIoWmhlLCdSZWd1bGFySW1tdXRhYmxlTWFwJyw2MTYpO2JjYig3MTYsNzAzLENpZSx6eCk7dmFyIHh4O3ZhciB3SD1tZGIoWmhlLCdSZWd1bGFySW1tdXRhYmxlU2V0Jyw3MTYpO2JjYigxOTc2LGVpZSxmaWUpO18uS2M9ZnVuY3Rpb24gTXgoKXtyZXR1cm4gbmV3IFh4KHRoaXMuYSx0aGlzLmIpfTtfLkZjPWZ1bmN0aW9uIEp4KGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5HYz1mdW5jdGlvbiBLeChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uJGI9ZnVuY3Rpb24gTHgoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uTWM9ZnVuY3Rpb24gTngoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTt2YXIgQ0g9bWRiKFpoZSwnU2V0cy9TZXRWaWV3JywxOTc2KTtiY2IoOTYzLDE5NzYsZmllLFB4KTtfLktjPWZ1bmN0aW9uIFR4KCl7cmV0dXJuIG5ldyBYeCh0aGlzLmEsdGhpcy5iKX07Xy5IYz1mdW5jdGlvbiBReChhKXtyZXR1cm4gdHFiKHRoaXMuYSxhKSYmdGhpcy5iLkhjKGEpfTtfLkljPWZ1bmN0aW9uIFJ4KGEpe3JldHVybiBCZSh0aGlzLmEsYSkmJnRoaXMuYi5JYyhhKX07Xy5kYz1mdW5jdGlvbiBTeCgpe3JldHVybiBvbWIodGhpcy5iLHRoaXMuYSl9O18uTGM9ZnVuY3Rpb24gVXgoKXtyZXR1cm4gSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKHRoaXMuYSwxKSksbmV3IF94KHRoaXMuYikpfTtfLmdjPWZ1bmN0aW9uIFZ4KCl7cmV0dXJuIE94KHRoaXMpfTtfLk9jPWZ1bmN0aW9uIFd4KCl7cmV0dXJuIEpBYihuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLmEsMSkpLG5ldyBaeCh0aGlzLmIpKX07dmFyIEFIPW1kYihaaGUsJ1NldHMvMicsOTYzKTtiY2IoNzAwLDY5OSxZaGUsWHgpO18uWWI9ZnVuY3Rpb24gWXgoKXt2YXIgYTt3aGlsZShFcWIodGhpcy5hKSl7YT1GcWIodGhpcy5hKTtpZih0aGlzLmMuSGMoYSkpe3JldHVybiBhfX1yZXR1cm4gdGhpcy5lPTIsbnVsbH07dmFyIHhIPW1kYihaaGUsJ1NldHMvMi8xJyw3MDApO2JjYig5NjQsMSxPaWUsWngpO18uTWI9ZnVuY3Rpb24gJHgoYSl7cmV0dXJuIHRoaXMuYS5IYyhhKX07dmFyIHlIPW1kYihaaGUsJ1NldHMvMi80bWV0aG9kcmVmJGNvbnRhaW5zJFR5cGUnLDk2NCk7YmNiKDk2NSwxLE9pZSxfeCk7Xy5NYj1mdW5jdGlvbiBheShhKXtyZXR1cm4gdGhpcy5hLkhjKGEpfTt2YXIgekg9bWRiKFpoZSwnU2V0cy8yLzVtZXRob2RyZWYkY29udGFpbnMkVHlwZScsOTY1KTtiY2IoNjA3LDE5NzUsezYwNzoxLDM6MSwyMDoxLDE0OjEsMjcxOjEsMjE6MSw4NDoxfSxieSk7Xy5CZD1mdW5jdGlvbiBjeSgpe3JldHVybiB0aGlzLmJ9O18uQ2Q9ZnVuY3Rpb24gZHkoKXtyZXR1cm4gdGhpcy5ifTtfLk1kPWZ1bmN0aW9uIGV5KCl7cmV0dXJuIHRoaXMuYn07Xy5KYz1mdW5jdGlvbiBmeShhKXt0aGlzLmEuSmMoYSl9O18uTGM9ZnVuY3Rpb24gZ3koKXtyZXR1cm4gdGhpcy5hLkxjKCl9O18uT2M9ZnVuY3Rpb24gaHkoKXtyZXR1cm4gdGhpcy5hLk9jKCl9O3ZhciBESD1tZGIoWmhlLCdTZXRzL1VubW9kaWZpYWJsZU5hdmlnYWJsZVNldCcsNjA3KTtiY2IoMTkzMiwxOTMxLEFpZSxpeSk7Xy5MZD1mdW5jdGlvbiBqeSgpe3JldHVybiBRbCgpLG5ldyBveSh0aGlzLmEpfTtfLkNjPWZ1bmN0aW9uIGt5KCl7cmV0dXJuIFFsKCksbmV3IG95KHRoaXMuYSl9O18ucGQ9ZnVuY3Rpb24gbHkoKXtyZXR1cm4gUWwoKSxuZXcgb3kodGhpcy5hKX07dmFyIEVIPW1kYihaaGUsJ1NpbmdsZXRvbkltbXV0YWJsZUJpTWFwJywxOTMyKTtiY2IoNjQ3LDIwMDYseWllLG15KTtfLkhkPWZ1bmN0aW9uIG55KCl7cmV0dXJuIHRoaXMuYX07dmFyIEZIPW1kYihaaGUsJ1NpbmdsZXRvbkltbXV0YWJsZUxpc3QnLDY0Nyk7YmNiKDM1MCwxOTgxLENpZSxveSk7Xy5LYz1mdW5jdGlvbiByeSgpe3JldHVybiBuZXcgSXIodGhpcy5hKX07Xy5IYz1mdW5jdGlvbiBweShhKXtyZXR1cm4gcGIodGhpcy5hLGEpfTtfLkVkPWZ1bmN0aW9uIHF5KCl7cmV0dXJuIG5ldyBJcih0aGlzLmEpfTtfLmdjPWZ1bmN0aW9uIHN5KCl7cmV0dXJuIDF9O3ZhciBHSD1tZGIoWmhlLCdTaW5nbGV0b25JbW11dGFibGVTZXQnLDM1MCk7YmNiKDExMTUsMSx7fSx2eSk7Xy5LYj1mdW5jdGlvbiB3eShhKXtyZXR1cm4gQkQoYSwxNjQpfTt2YXIgSEg9bWRiKFpoZSwnU3RyZWFtcy9sYW1iZGEkMCRUeXBlJywxMTE1KTtiY2IoMTExNiwxLFBpZSx4eSk7Xy5WZD1mdW5jdGlvbiB5eSgpe3V5KHRoaXMuYSl9O3ZhciBJSD1tZGIoWmhlLCdTdHJlYW1zL2xhbWJkYSQxJFR5cGUnLDExMTYpO2JjYigxNjU5LDE2NTgsX2hlLEF5KTtfLlpiPWZ1bmN0aW9uIEJ5KCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5mLEJEKEJEKCFhPyh0aGlzLmY9SkQodGhpcy5jLDE3MSk/bmV3IFNmKHRoaXMsQkQodGhpcy5jLDE3MSkpOkpEKHRoaXMuYywxNjEpP25ldyBNZih0aGlzLEJEKHRoaXMuYywxNjEpKTpuZXcgbmUodGhpcyx0aGlzLmMpKTphLDE2MSksMTcxKX07Xy5oYz1mdW5jdGlvbiBFeSgpe3JldHVybiBuZXcgSHhiKHRoaXMuYil9O18uZ2Q9ZnVuY3Rpb24gRnkoKXtyZXR1cm4gbmV3IEh4Yih0aGlzLmIpfTtfLmVjPWZ1bmN0aW9uIEh5KCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5pLEJEKEJEKCFhPyh0aGlzLmk9SkQodGhpcy5jLDE3MSk/bmV3ICRmKHRoaXMsQkQodGhpcy5jLDE3MSkpOkpEKHRoaXMuYywxNjEpP25ldyBZZih0aGlzLEJEKHRoaXMuYywxNjEpKTpuZXcgemYodGhpcyx0aGlzLmMpKTphLDg0KSwyNzEpfTtfLmFjPWZ1bmN0aW9uIER5KCl7cmV0dXJuIEpEKHRoaXMuYywxNzEpP25ldyBTZih0aGlzLEJEKHRoaXMuYywxNzEpKTpKRCh0aGlzLmMsMTYxKT9uZXcgTWYodGhpcyxCRCh0aGlzLmMsMTYxKSk6bmV3IG5lKHRoaXMsdGhpcy5jKX07Xy5pYz1mdW5jdGlvbiBHeShhKXthPT1udWxsJiZ0aGlzLmEudWUoYSxhKTtyZXR1cm4gbmV3IEh4Yih0aGlzLmIpfTt2YXIgTEg9bWRiKFpoZSwnVHJlZU11bHRpbWFwJywxNjU5KTtiY2IoNzgsMSx7MzoxLDc4OjF9KTtfLldkPWZ1bmN0aW9uICR5KGEpe3JldHVybiBuZXcgRXJyb3IoYSl9O18uWGQ9ZnVuY3Rpb24gYXooKXtyZXR1cm4gdGhpcy5lfTtfLllkPWZ1bmN0aW9uIGJ6KCl7cmV0dXJuIFhBYihOQWIoUGxiKCh0aGlzLms9PW51bGwmJih0aGlzLms9S0MoX0ksbmllLDc4LDAsMCwxKSksdGhpcy5rKSksbmV3IF9mYiksbmV3IGJCYil9O18uWmQ9ZnVuY3Rpb24gY3ooKXtyZXR1cm4gdGhpcy5mfTtfLiRkPWZ1bmN0aW9uIGR6KCl7cmV0dXJuIHRoaXMuZ307Xy5fZD1mdW5jdGlvbiBleigpe1Z5KHRoaXMsX3kodGhpcy5XZChXeSh0aGlzLHRoaXMuZykpKSk7U3oodGhpcyl9O18uSWI9ZnVuY3Rpb24gZnooKXtyZXR1cm4gV3kodGhpcyx0aGlzLiRkKCkpfTtfLmU9U2llO18uaT1mYWxzZTtfLm49dHJ1ZTt2YXIgX0k9bWRiKFBoZSwnVGhyb3dhYmxlJyw3OCk7YmNiKDEwMiw3OCx7MzoxLDEwMjoxLDc4OjF9KTt2YXIgRUk9bWRiKFBoZSwnRXhjZXB0aW9uJywxMDIpO2JjYig2MCwxMDIsVGllLGd6LGh6KTt2YXIgVEk9bWRiKFBoZSwnUnVudGltZUV4Y2VwdGlvbicsNjApO2JjYig1OTgsNjAsVGllKTt2YXIgTEk9bWRiKFBoZSwnSnNFeGNlcHRpb24nLDU5OCk7YmNiKDg2Myw1OTgsVGllKTt2YXIgUkg9bWRiKFVpZSwnSmF2YVNjcmlwdEV4Y2VwdGlvbkJhc2UnLDg2Myk7YmNiKDQ3Nyw4NjMsezQ3NzoxLDM6MSwxMDI6MSw2MDoxLDc4OjF9LGx6KTtfLiRkPWZ1bmN0aW9uIG96KCl7a3oodGhpcyk7cmV0dXJuIHRoaXMuY307Xy5hZT1mdW5jdGlvbiBweigpe3JldHVybiBQRCh0aGlzLmIpPT09UEQoaXopP251bGw6dGhpcy5ifTt2YXIgaXo7dmFyIE9IPW1kYihXaWUsJ0phdmFTY3JpcHRFeGNlcHRpb24nLDQ3Nyk7dmFyIFBIPW1kYihXaWUsJ0phdmFTY3JpcHRPYmplY3QkJywwKTt2YXIgdHo7YmNiKDE5NDgsMSx7fSk7dmFyIFFIPW1kYihXaWUsJ1NjaGVkdWxlcicsMTk0OCk7dmFyIHh6PTAseXo9MCx6ej0tMTtiY2IoODkwLDE5NDgse30sTnopO3ZhciBKejt2YXIgU0g9bWRiKFVpZSwnU2NoZWR1bGVySW1wbCcsODkwKTt2YXIgUXo7YmNiKDE5NjAsMSx7fSk7dmFyIFdIPW1kYihVaWUsJ1N0YWNrVHJhY2VDcmVhdG9yL0NvbGxlY3RvcicsMTk2MCk7YmNiKDg2NCwxOTYwLHt9LFl6KTtfLmJlPWZ1bmN0aW9uIFp6KGEpe3ZhciBiPXt9LGo7dmFyIGM9W107YVtZaWVdPWM7dmFyIGQ9YXJndW1lbnRzLmNhbGxlZS5jYWxsZXI7d2hpbGUoZCl7dmFyIGU9KFJ6KCksZC5uYW1lfHwoZC5uYW1lPVV6KGQudG9TdHJpbmcoKSkpKTtjLnB1c2goZSk7dmFyIGY9JzonK2U7dmFyIGc9YltmXTtpZihnKXt2YXIgaCxpO2ZvcihoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKXtpZihnW2hdPT09ZCl7cmV0dXJufX19KGd8fChiW2ZdPVtdKSkucHVzaChkKTtkPWQuY2FsbGVyfX07Xy5jZT1mdW5jdGlvbiAkeihhKXt2YXIgYixjLGQsZTtkPShSeigpLGEmJmFbWWllXT9hW1lpZV06W10pO2M9ZC5sZW5ndGg7ZT1LQyhWSSxuaWUsMzEwLGMsMCwxKTtmb3IoYj0wO2I8YztiKyspe2VbYl09bmV3IFplYihkW2JdLG51bGwsLTEpfXJldHVybiBlfTt2YXIgVEg9bWRiKFVpZSwnU3RhY2tUcmFjZUNyZWF0b3IvQ29sbGVjdG9yTGVnYWN5Jyw4NjQpO2JjYigxOTYxLDE5NjAse30pO18uYmU9ZnVuY3Rpb24gYUEoYSl7fTtfLmRlPWZ1bmN0aW9uIGJBKGEsYixjLGQpe3JldHVybiBuZXcgWmViKGIsYSsnQCcrZCxjPDA/LTE6Yyl9O18uY2U9ZnVuY3Rpb24gY0EoYSl7dmFyIGIsYyxkLGUsZixnO2U9V3ooYSk7Zj1LQyhWSSxuaWUsMzEwLDAsMCwxKTtiPTA7ZD1lLmxlbmd0aDtpZihkPT0wKXtyZXR1cm4gZn1nPV96KHRoaXMsZVswXSk7ZGZiKGcuZCxYaWUpfHwoZltiKytdPWcpO2ZvcihjPTE7YzxkO2MrKyl7ZltiKytdPV96KHRoaXMsZVtjXSl9cmV0dXJuIGZ9O3ZhciBWSD1tZGIoVWllLCdTdGFja1RyYWNlQ3JlYXRvci9Db2xsZWN0b3JNb2Rlcm4nLDE5NjEpO2JjYig4NjUsMTk2MSx7fSxkQSk7Xy5kZT1mdW5jdGlvbiBlQShhLGIsYyxkKXtyZXR1cm4gbmV3IFplYihiLGEsLTEpfTt2YXIgVUg9bWRiKFVpZSwnU3RhY2tUcmFjZUNyZWF0b3IvQ29sbGVjdG9yTW9kZXJuTm9Tb3VyY2VNYXAnLDg2NSk7YmNiKDEwNTAsMSx7fSk7dmFyIGNJPW1kYih5amUsemplLDEwNTApO2JjYig2MTUsMTA1MCx7NjE1OjF9LEhBKTt2YXIgRkE7dmFyIFhIPW1kYihBamUsemplLDYxNSk7YmNiKDIwMDEsMSx7fSk7dmFyIGRJPW1kYih5amUsQmplLDIwMDEpO2JjYigyMDAyLDIwMDEse30pO3ZhciBZSD1tZGIoQWplLEJqZSwyMDAyKTtiY2IoMTA5MCwxLHt9LE1BKTt2YXIgSkE7dmFyIFpIPW1kYihBamUsJ0xvY2FsZUluZm8nLDEwOTApO2JjYigxOTE4LDEse30sUEEpO18uYT0wO3ZhciBfSD1tZGIoQWplLCdUaW1lWm9uZScsMTkxOCk7YmNiKDEyNTgsMjAwMix7fSxWQSk7dmFyIGFJPW1kYignY29tLmdvb2dsZS5nd3QuaTE4bi5jbGllbnQuaW1wbC5jbGRyJywnRGF0ZVRpbWVGb3JtYXRJbmZvSW1wbCcsMTI1OCk7YmNiKDQzNCwxLHs0MzQ6MX0sV0EpO18uYT1mYWxzZTtfLmI9MDt2YXIgYkk9bWRiKHlqZSwnRGF0ZVRpbWVGb3JtYXQvUGF0dGVyblBhcnQnLDQzNCk7YmNiKDE5OSwxLENqZSxlQixmQixnQik7Xy53ZD1mdW5jdGlvbiBoQihhKXtyZXR1cm4gWEEodGhpcyxCRChhLDE5OSkpfTtfLkZiPWZ1bmN0aW9uIGlCKGEpe3JldHVybiBKRChhLDE5OSkmJkJiYihDYmIodGhpcy5xLmdldFRpbWUoKSksQ2JiKEJEKGEsMTk5KS5xLmdldFRpbWUoKSkpfTtfLkhiPWZ1bmN0aW9uIGpCKCl7dmFyIGE7YT1DYmIodGhpcy5xLmdldFRpbWUoKSk7cmV0dXJuIFRiYihWYmIoYSxQYmIoYSwzMikpKX07Xy5JYj1mdW5jdGlvbiBsQigpe3ZhciBhLGIsYztjPS10aGlzLnEuZ2V0VGltZXpvbmVPZmZzZXQoKTthPShjPj0wPycrJzonJykrKGMvNjB8MCk7Yj1rQigkd25kLk1hdGguYWJzKGMpJTYwKTtyZXR1cm4gKERwYigpLEJwYilbdGhpcy5xLmdldERheSgpXSsnICcrQ3BiW3RoaXMucS5nZXRNb250aCgpXSsnICcra0IodGhpcy5xLmdldERhdGUoKSkrJyAnK2tCKHRoaXMucS5nZXRIb3VycygpKSsnOicra0IodGhpcy5xLmdldE1pbnV0ZXMoKSkrJzonK2tCKHRoaXMucS5nZXRTZWNvbmRzKCkpKycgR01UJythK2IrJyAnK3RoaXMucS5nZXRGdWxsWWVhcigpfTt2YXIgJEo9bWRiKGJpZSwnRGF0ZScsMTk5KTtiY2IoMTkxNSwxOTksQ2plLG5CKTtfLmE9ZmFsc2U7Xy5iPTA7Xy5jPTA7Xy5kPTA7Xy5lPTA7Xy5mPTA7Xy5nPWZhbHNlO18uaT0wO18uaj0wO18uaz0wO18ubj0wO18ubz0wO18ucD0wO3ZhciBlST1tZGIoJ2NvbS5nb29nbGUuZ3d0LmkxOG4uc2hhcmVkLmltcGwnLCdEYXRlUmVjb3JkJywxOTE1KTtiY2IoMTk2NiwxLHt9KTtfLmZlPWZ1bmN0aW9uIG9CKCl7cmV0dXJuIG51bGx9O18uZ2U9ZnVuY3Rpb24gcEIoKXtyZXR1cm4gbnVsbH07Xy5oZT1mdW5jdGlvbiBxQigpe3JldHVybiBudWxsfTtfLmllPWZ1bmN0aW9uIHJCKCl7cmV0dXJuIG51bGx9O18uamU9ZnVuY3Rpb24gc0IoKXtyZXR1cm4gbnVsbH07dmFyIG5JPW1kYihEamUsJ0pTT05WYWx1ZScsMTk2Nik7YmNiKDIxNiwxOTY2LHsyMTY6MX0sd0IseEIpO18uRmI9ZnVuY3Rpb24geUIoYSl7aWYoIUpEKGEsMjE2KSl7cmV0dXJuIGZhbHNlfXJldHVybiBxeih0aGlzLmEsQkQoYSwyMTYpLmEpfTtfLmVlPWZ1bmN0aW9uIHpCKCl7cmV0dXJuIERCfTtfLkhiPWZ1bmN0aW9uIEFCKCl7cmV0dXJuIHJ6KHRoaXMuYSl9O18uZmU9ZnVuY3Rpb24gQkIoKXtyZXR1cm4gdGhpc307Xy5JYj1mdW5jdGlvbiBDQigpe3ZhciBhLGIsYztjPW5ldyBXZmIoJ1snKTtmb3IoYj0wLGE9dGhpcy5hLmxlbmd0aDtiPGE7YisrKXtiPjAmJihjLmErPScsJyxjKTtQZmIoYyx0Qih0aGlzLGIpKX1jLmErPSddJztyZXR1cm4gYy5hfTt2YXIgZkk9bWRiKERqZSwnSlNPTkFycmF5JywyMTYpO2JjYig0ODMsMTk2Nix7NDgzOjF9LEhCKTtfLmVlPWZ1bmN0aW9uIElCKCl7cmV0dXJuIExCfTtfLmdlPWZ1bmN0aW9uIEpCKCl7cmV0dXJuIHRoaXN9O18uSWI9ZnVuY3Rpb24gS0IoKXtyZXR1cm4gQmNiKCksJycrdGhpcy5hfTtfLmE9ZmFsc2U7dmFyIEVCLEZCO3ZhciBnST1tZGIoRGplLCdKU09OQm9vbGVhbicsNDgzKTtiY2IoOTg1LDYwLFRpZSxNQik7dmFyIGhJPW1kYihEamUsJ0pTT05FeGNlcHRpb24nLDk4NSk7YmNiKDEwMjMsMTk2Nix7fSxQQik7Xy5lZT1mdW5jdGlvbiBRQigpe3JldHVybiBTQn07Xy5JYj1mdW5jdGlvbiBSQigpe3JldHVybiBYaGV9O3ZhciBOQjt2YXIgaUk9bWRiKERqZSwnSlNPTk51bGwnLDEwMjMpO2JjYigyNTgsMTk2Nix7MjU4OjF9LFRCKTtfLkZiPWZ1bmN0aW9uIFVCKGEpe2lmKCFKRChhLDI1OCkpe3JldHVybiBmYWxzZX1yZXR1cm4gdGhpcy5hPT1CRChhLDI1OCkuYX07Xy5lZT1mdW5jdGlvbiBWQigpe3JldHVybiBaQn07Xy5IYj1mdW5jdGlvbiBXQigpe3JldHVybiBIZGIodGhpcy5hKX07Xy5oZT1mdW5jdGlvbiBYQigpe3JldHVybiB0aGlzfTtfLkliPWZ1bmN0aW9uIFlCKCl7cmV0dXJuIHRoaXMuYSsnJ307Xy5hPTA7dmFyIGpJPW1kYihEamUsJ0pTT05OdW1iZXInLDI1OCk7YmNiKDE4MywxOTY2LHsxODM6MX0sZUMsZkMpO18uRmI9ZnVuY3Rpb24gZ0MoYSl7aWYoIUpEKGEsMTgzKSl7cmV0dXJuIGZhbHNlfXJldHVybiBxeih0aGlzLmEsQkQoYSwxODMpLmEpfTtfLmVlPWZ1bmN0aW9uIGhDKCl7cmV0dXJuIGxDfTtfLkhiPWZ1bmN0aW9uIGlDKCl7cmV0dXJuIHJ6KHRoaXMuYSl9O18uaWU9ZnVuY3Rpb24gakMoKXtyZXR1cm4gdGhpc307Xy5JYj1mdW5jdGlvbiBrQygpe3ZhciBhLGIsYyxkLGUsZixnO2c9bmV3IFdmYigneycpO2E9dHJ1ZTtmPSRCKHRoaXMsS0MoWkksbmllLDIsMCw2LDEpKTtmb3IoYz1mLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTthPyhhPWZhbHNlKTooZy5hKz1TaGUsZyk7UWZiKGcsdnooYikpO2cuYSs9JzonO1BmYihnLGFDKHRoaXMsYikpfWcuYSs9J30nO3JldHVybiBnLmF9O3ZhciBsST1tZGIoRGplLCdKU09OT2JqZWN0JywxODMpO2JjYig1OTYsZWllLGZpZSxtQyk7Xy5IYz1mdW5jdGlvbiBuQyhhKXtyZXR1cm4gTkQoYSkmJl9CKHRoaXMuYSxHRChhKSl9O18uS2M9ZnVuY3Rpb24gb0MoKXtyZXR1cm4gbmV3IHZpYihuZXcgYW1iKHRoaXMuYikpfTtfLmdjPWZ1bmN0aW9uIHBDKCl7cmV0dXJuIHRoaXMuYi5sZW5ndGh9O3ZhciBrST1tZGIoRGplLCdKU09OT2JqZWN0LzEnLDU5Nik7dmFyIHFDO2JjYigyMDQsMTk2Nix7MjA0OjF9LHlDKTtfLkZiPWZ1bmN0aW9uIHpDKGEpe2lmKCFKRChhLDIwNCkpe3JldHVybiBmYWxzZX1yZXR1cm4gZGZiKHRoaXMuYSxCRChhLDIwNCkuYSl9O18uZWU9ZnVuY3Rpb24gQUMoKXtyZXR1cm4gRUN9O18uSGI9ZnVuY3Rpb24gQkMoKXtyZXR1cm4gTENiKHRoaXMuYSl9O18uamU9ZnVuY3Rpb24gQ0MoKXtyZXR1cm4gdGhpc307Xy5JYj1mdW5jdGlvbiBEQygpe3JldHVybiB2eih0aGlzLmEpfTt2YXIgbUk9bWRiKERqZSwnSlNPTlN0cmluZycsMjA0KTt2YXIgUUM7dmFyIHNELHRELHVELHZEO2JjYigxOTYyLDEsezUyNToxfSk7dmFyIHBJPW1kYihMamUsJ091dHB1dFN0cmVhbScsMTk2Mik7YmNiKDE5NjMsMTk2Mix7NTI1OjF9KTt2YXIgb0k9bWRiKExqZSwnRmlsdGVyT3V0cHV0U3RyZWFtJywxOTYzKTtiY2IoODY2LDE5NjMsezUyNToxfSxqY2IpO3ZhciBxST1tZGIoTGplLCdQcmludFN0cmVhbScsODY2KTtiY2IoNDE4LDEsezQ3NToxfSk7Xy5JYj1mdW5jdGlvbiBuY2IoKXtyZXR1cm4gdGhpcy5hfTt2YXIgckk9bWRiKFBoZSwnQWJzdHJhY3RTdHJpbmdCdWlsZGVyJyw0MTgpO2JjYig1MjksNjAsVGllLG9jYik7dmFyIHNJPW1kYihQaGUsJ0FyaXRobWV0aWNFeGNlcHRpb24nLDUyOSk7YmNiKDczLDYwLE1qZSxwY2IscWNiKTt2YXIgSUk9bWRiKFBoZSwnSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbicsNzMpO2JjYigzMjAsNzMsezM6MSwzMjA6MSwxMDI6MSw3MzoxLDYwOjEsNzg6MX0scmNiLHNjYik7dmFyIHRJPW1kYihQaGUsJ0FycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbicsMzIwKTtiY2IoNTI4LDYwLFRpZSx0Y2IsdWNiKTt2YXIgdUk9bWRiKFBoZSwnQXJyYXlTdG9yZUV4Y2VwdGlvbicsNTI4KTtiY2IoMjg5LDc4LE5qZSx2Y2IpO3ZhciBEST1tZGIoUGhlLCdFcnJvcicsMjg5KTtiY2IoMTk0LDI4OSxOamUseGNiLHljYik7dmFyIHZJPW1kYihQaGUsJ0Fzc2VydGlvbkVycm9yJywxOTQpO3hEPXszOjEsNDc2OjEsMzU6MX07dmFyIHpjYixBY2I7dmFyIHdJPW1kYihQaGUsJ0Jvb2xlYW4nLDQ3Nik7YmNiKDIzNiwxLHszOjEsMjM2OjF9KTt2YXIgR2NiO3ZhciBSST1tZGIoUGhlLCdOdW1iZXInLDIzNik7YmNiKDIxNywyMzYsezM6MSwyMTc6MSwzNToxLDIzNjoxfSxNY2IpO18ud2Q9ZnVuY3Rpb24gTmNiKGEpe3JldHVybiBMY2IodGhpcyxCRChhLDIxNykpfTtfLmtlPWZ1bmN0aW9uIE9jYigpe3JldHVybiB0aGlzLmF9O18uRmI9ZnVuY3Rpb24gUGNiKGEpe3JldHVybiBKRChhLDIxNykmJkJEKGEsMjE3KS5hPT10aGlzLmF9O18uSGI9ZnVuY3Rpb24gUWNiKCl7cmV0dXJuIHRoaXMuYX07Xy5JYj1mdW5jdGlvbiBSY2IoKXtyZXR1cm4gJycrdGhpcy5hfTtfLmE9MDt2YXIgeEk9bWRiKFBoZSwnQnl0ZScsMjE3KTt2YXIgVGNiO2JjYigxNzIsMSx7MzoxLDE3MjoxLDM1OjF9LFhjYik7Xy53ZD1mdW5jdGlvbiBZY2IoYSl7cmV0dXJuIFdjYih0aGlzLEJEKGEsMTcyKSl9O18uRmI9ZnVuY3Rpb24gJGNiKGEpe3JldHVybiBKRChhLDE3MikmJkJEKGEsMTcyKS5hPT10aGlzLmF9O18uSGI9ZnVuY3Rpb24gX2NiKCl7cmV0dXJuIHRoaXMuYX07Xy5JYj1mdW5jdGlvbiBhZGIoKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmEpfTtfLmE9MDt2YXIgVmNiO3ZhciB5ST1tZGIoUGhlLCdDaGFyYWN0ZXInLDE3Mik7dmFyIGNkYjtiY2IoMjA1LDYwLHszOjEsMjA1OjEsMTAyOjEsNjA6MSw3ODoxfSxCZGIsQ2RiKTt2YXIgekk9bWRiKFBoZSwnQ2xhc3NDYXN0RXhjZXB0aW9uJywyMDUpO3lEPXszOjEsMzU6MSwzMzM6MSwyMzY6MX07dmFyIEJJPW1kYihQaGUsJ0RvdWJsZScsMzMzKTtiY2IoMTU1LDIzNix7MzoxLDM1OjEsMTU1OjEsMjM2OjF9LE5kYixPZGIpO18ud2Q9ZnVuY3Rpb24gUGRiKGEpe3JldHVybiBNZGIodGhpcyxCRChhLDE1NSkpfTtfLmtlPWZ1bmN0aW9uIFFkYigpe3JldHVybiB0aGlzLmF9O18uRmI9ZnVuY3Rpb24gUmRiKGEpe3JldHVybiBKRChhLDE1NSkmJkZkYih0aGlzLmEsQkQoYSwxNTUpLmEpfTtfLkhiPWZ1bmN0aW9uIFNkYigpe3JldHVybiBRRCh0aGlzLmEpfTtfLkliPWZ1bmN0aW9uIFVkYigpe3JldHVybiAnJyt0aGlzLmF9O18uYT0wO3ZhciBGST1tZGIoUGhlLCdGbG9hdCcsMTU1KTtiY2IoMzIsNjAsezM6MSwxMDI6MSwzMjoxLDYwOjEsNzg6MX0sVmRiLFdkYixYZGIpO3ZhciBHST1tZGIoUGhlLCdJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24nLDMyKTtiY2IoNzEsNjAsVGllLFlkYixaZGIpO3ZhciBIST1tZGIoUGhlLCdJbGxlZ2FsU3RhdGVFeGNlcHRpb24nLDcxKTtiY2IoMTksMjM2LHszOjEsMzU6MSwxOToxLDIzNjoxfSxfZGIpO18ud2Q9ZnVuY3Rpb24gY2ViKGEpe3JldHVybiAkZGIodGhpcyxCRChhLDE5KSl9O18ua2U9ZnVuY3Rpb24gZGViKCl7cmV0dXJuIHRoaXMuYX07Xy5GYj1mdW5jdGlvbiBlZWIoYSl7cmV0dXJuIEpEKGEsMTkpJiZCRChhLDE5KS5hPT10aGlzLmF9O18uSGI9ZnVuY3Rpb24gZmViKCl7cmV0dXJuIHRoaXMuYX07Xy5JYj1mdW5jdGlvbiBsZWIoKXtyZXR1cm4gJycrdGhpcy5hfTtfLmE9MDt2YXIgSkk9bWRiKFBoZSwnSW50ZWdlcicsMTkpO3ZhciBuZWI7dmFyIHBlYjtiY2IoMTYyLDIzNix7MzoxLDM1OjEsMTYyOjEsMjM2OjF9LHRlYik7Xy53ZD1mdW5jdGlvbiB2ZWIoYSl7cmV0dXJuIHNlYih0aGlzLEJEKGEsMTYyKSl9O18ua2U9ZnVuY3Rpb24gd2ViKCl7cmV0dXJuIFNiYih0aGlzLmEpfTtfLkZiPWZ1bmN0aW9uIHhlYihhKXtyZXR1cm4gSkQoYSwxNjIpJiZCYmIoQkQoYSwxNjIpLmEsdGhpcy5hKX07Xy5IYj1mdW5jdGlvbiB5ZWIoKXtyZXR1cm4gVGJiKHRoaXMuYSl9O18uSWI9ZnVuY3Rpb24gemViKCl7cmV0dXJuICcnK1ViYih0aGlzLmEpfTtfLmE9MDt2YXIgTUk9bWRiKFBoZSwnTG9uZycsMTYyKTt2YXIgQmViO2JjYigyMDM5LDEse30pO2JjYigxODMxLDYwLFRpZSxGZWIpO3ZhciBOST1tZGIoUGhlLCdOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbicsMTgzMSk7YmNiKDE3Myw1OTgsezM6MSwxMDI6MSwxNzM6MSw2MDoxLDc4OjF9LEdlYixIZWIpO18uV2Q9ZnVuY3Rpb24gSWViKGEpe3JldHVybiBuZXcgVHlwZUVycm9yKGEpfTt2YXIgT0k9bWRiKFBoZSwnTnVsbFBvaW50ZXJFeGNlcHRpb24nLDE3Myk7dmFyIEplYixLZWIsTGViLE1lYjtiY2IoMTI3LDMyLHszOjEsMTAyOjEsMzI6MSwxMjc6MSw2MDoxLDc4OjF9LE9lYik7dmFyIFFJPW1kYihQaGUsJ051bWJlckZvcm1hdEV4Y2VwdGlvbicsMTI3KTtiY2IoMTg0LDIzNix7MzoxLDM1OjEsMjM2OjEsMTg0OjF9LFFlYik7Xy53ZD1mdW5jdGlvbiBSZWIoYSl7cmV0dXJuIFBlYih0aGlzLEJEKGEsMTg0KSl9O18ua2U9ZnVuY3Rpb24gU2ViKCl7cmV0dXJuIHRoaXMuYX07Xy5GYj1mdW5jdGlvbiBUZWIoYSl7cmV0dXJuIEpEKGEsMTg0KSYmQkQoYSwxODQpLmE9PXRoaXMuYX07Xy5IYj1mdW5jdGlvbiBVZWIoKXtyZXR1cm4gdGhpcy5hfTtfLkliPWZ1bmN0aW9uIFZlYigpe3JldHVybiAnJyt0aGlzLmF9O18uYT0wO3ZhciBVST1tZGIoUGhlLCdTaG9ydCcsMTg0KTt2YXIgWGViO2JjYigzMTAsMSx7MzoxLDMxMDoxfSxaZWIpO18uRmI9ZnVuY3Rpb24gJGViKGEpe3ZhciBiO2lmKEpEKGEsMzEwKSl7Yj1CRChhLDMxMCk7cmV0dXJuIHRoaXMuYz09Yi5jJiZ0aGlzLmQ9PWIuZCYmdGhpcy5hPT1iLmEmJnRoaXMuYj09Yi5ifXJldHVybiBmYWxzZX07Xy5IYj1mdW5jdGlvbiBfZWIoKXtyZXR1cm4gSGxiKE9DKEdDKFNJLDEpLFVoZSwxLDUsW21lYih0aGlzLmMpLHRoaXMuYSx0aGlzLmQsdGhpcy5iXSkpfTtfLkliPWZ1bmN0aW9uIGFmYigpe3JldHVybiB0aGlzLmErJy4nK3RoaXMuZCsnKCcrKHRoaXMuYiE9bnVsbD90aGlzLmI6J1Vua25vd24gU291cmNlJykrKHRoaXMuYz49MD8nOicrdGhpcy5jOicnKSsnKSd9O18uYz0wO3ZhciBWST1tZGIoUGhlLCdTdGFja1RyYWNlRWxlbWVudCcsMzEwKTt6RD17MzoxLDQ3NToxLDM1OjEsMjoxfTt2YXIgWkk9bWRiKFBoZSxWaWUsMik7YmNiKDEwNyw0MTgsezQ3NToxfSxIZmIsSWZiLEpmYik7dmFyIFdJPW1kYihQaGUsJ1N0cmluZ0J1ZmZlcicsMTA3KTtiY2IoMTAwLDQxOCx7NDc1OjF9LFVmYixWZmIsV2ZiKTt2YXIgWEk9bWRiKFBoZSwnU3RyaW5nQnVpbGRlcicsMTAwKTtiY2IoNjg3LDczLE1qZSxYZmIpO3ZhciBZST1tZGIoUGhlLCdTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uJyw2ODcpO2JjYigyMDQzLDEse30pO3ZhciBZZmI7YmNiKDg0NCwxLHt9LF9mYik7Xy5LYj1mdW5jdGlvbiBhZ2IoYSl7cmV0dXJuIEJEKGEsNzgpLmV9O3ZhciAkST1tZGIoUGhlLCdUaHJvd2FibGUvbGFtYmRhJDAkVHlwZScsODQ0KTtiY2IoNDEsNjAsezM6MSwxMDI6MSw2MDoxLDc4OjEsNDE6MX0sYmdiLGNnYik7dmFyIGFKPW1kYihQaGUsJ1Vuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uJyw0MSk7YmNiKDI0MCwyMzYsezM6MSwzNToxLDIzNjoxLDI0MDoxfSxzZ2IsdGdiKTtfLndkPWZ1bmN0aW9uIHdnYihhKXtyZXR1cm4gbWdiKHRoaXMsQkQoYSwyNDApKX07Xy5rZT1mdW5jdGlvbiB4Z2IoKXtyZXR1cm4gSGNiKHJnYih0aGlzKSl9O18uRmI9ZnVuY3Rpb24geWdiKGEpe3ZhciBiO2lmKHRoaXM9PT1hKXtyZXR1cm4gdHJ1ZX1pZihKRChhLDI0MCkpe2I9QkQoYSwyNDApO3JldHVybiB0aGlzLmU9PWIuZSYmbWdiKHRoaXMsYik9PTB9cmV0dXJuIGZhbHNlfTtfLkhiPWZ1bmN0aW9uIHpnYigpe3ZhciBhO2lmKHRoaXMuYiE9MCl7cmV0dXJuIHRoaXMuYn1pZih0aGlzLmE8NTQpe2E9Q2JiKHRoaXMuZik7dGhpcy5iPVRiYih4YmIoYSwtMSkpO3RoaXMuYj0zMyp0aGlzLmIrVGJiKHhiYihPYmIoYSwzMiksLTEpKTt0aGlzLmI9MTcqdGhpcy5iK1FEKHRoaXMuZSk7cmV0dXJuIHRoaXMuYn10aGlzLmI9MTcqTmdiKHRoaXMuYykrUUQodGhpcy5lKTtyZXR1cm4gdGhpcy5ifTtfLkliPWZ1bmN0aW9uIEFnYigpe3JldHVybiByZ2IodGhpcyl9O18uYT0wO18uYj0wO18uZD0wO18uZT0wO18uZj0wO3ZhciBkZ2IsZWdiLGZnYixnZ2IsaGdiLGlnYixqZ2Isa2diO3ZhciBiSj1tZGIoJ2phdmEubWF0aCcsJ0JpZ0RlY2ltYWwnLDI0MCk7YmNiKDkxLDIzNix7MzoxLDM1OjEsMjM2OjEsOTE6MX0sVGdiLFVnYixWZ2IsV2diLFhnYixZZ2IpO18ud2Q9ZnVuY3Rpb24gJGdiKGEpe3JldHVybiBJZ2IodGhpcyxCRChhLDkxKSl9O18ua2U9ZnVuY3Rpb24gX2diKCl7cmV0dXJuIEhjYihzaGIodGhpcywwKSl9O18uRmI9ZnVuY3Rpb24gYWhiKGEpe3JldHVybiBLZ2IodGhpcyxhKX07Xy5IYj1mdW5jdGlvbiBjaGIoKXtyZXR1cm4gTmdiKHRoaXMpfTtfLkliPWZ1bmN0aW9uIGVoYigpe3JldHVybiBzaGIodGhpcywwKX07Xy5iPS0yO18uYz0wO18uZD0wO18uZT0wO3ZhciBCZ2IsQ2diLERnYixFZ2IsRmdiLEdnYjt2YXIgY0o9bWRiKCdqYXZhLm1hdGgnLCdCaWdJbnRlZ2VyJyw5MSk7dmFyIG5oYixvaGI7dmFyIEJoYixDaGI7YmNiKDQ4OCwxOTY3LGNpZSk7Xy4kYj1mdW5jdGlvbiBYaGIoKXtVaGIodGhpcyl9O18uX2I9ZnVuY3Rpb24gWWhiKGEpe3JldHVybiBNaGIodGhpcyxhKX07Xy51Yz1mdW5jdGlvbiBaaGIoYSl7cmV0dXJuIE5oYih0aGlzLGEsdGhpcy5nKXx8TmhiKHRoaXMsYSx0aGlzLmYpfTtfLnZjPWZ1bmN0aW9uICRoYigpe3JldHVybiBuZXcgZWliKHRoaXMpfTtfLnhjPWZ1bmN0aW9uIF9oYihhKXtyZXR1cm4gT2hiKHRoaXMsYSl9O18uemM9ZnVuY3Rpb24gYWliKGEsYil7cmV0dXJuIFJoYih0aGlzLGEsYil9O18uQmM9ZnVuY3Rpb24gYmliKGEpe3JldHVybiBUaGIodGhpcyxhKX07Xy5nYz1mdW5jdGlvbiBjaWIoKXtyZXR1cm4gVmhiKHRoaXMpfTt2YXIgZ0o9bWRiKGJpZSwnQWJzdHJhY3RIYXNoTWFwJyw0ODgpO2JjYigyNjEsZWllLGZpZSxlaWIpO18uJGI9ZnVuY3Rpb24gZmliKCl7dGhpcy5hLiRiKCl9O18uSGM9ZnVuY3Rpb24gZ2liKGEpe3JldHVybiBkaWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBoaWIoKXtyZXR1cm4gbmV3IG5pYih0aGlzLmEpfTtfLk1jPWZ1bmN0aW9uIGlpYihhKXt2YXIgYjtpZihkaWIodGhpcyxhKSl7Yj1CRChhLDQyKS5jZCgpO3RoaXMuYS5CYyhiKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O18uZ2M9ZnVuY3Rpb24gamliKCl7cmV0dXJuIHRoaXMuYS5nYygpfTt2YXIgZko9bWRiKGJpZSwnQWJzdHJhY3RIYXNoTWFwL0VudHJ5U2V0JywyNjEpO2JjYigyNjIsMSxhaWUsbmliKTtfLk5iPWZ1bmN0aW9uIG9pYihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBxaWIoKXtyZXR1cm4gbGliKHRoaXMpfTtfLk9iPWZ1bmN0aW9uIHBpYigpe3JldHVybiB0aGlzLmJ9O18uUWI9ZnVuY3Rpb24gcmliKCl7bWliKHRoaXMpfTtfLmI9ZmFsc2U7dmFyIGVKPW1kYihiaWUsJ0Fic3RyYWN0SGFzaE1hcC9FbnRyeVNldEl0ZXJhdG9yJywyNjIpO2JjYig0MTcsMSxhaWUsdmliKTtfLk5iPWZ1bmN0aW9uIHdpYihhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiB4aWIoKXtyZXR1cm4gc2liKHRoaXMpfTtfLlBiPWZ1bmN0aW9uIHlpYigpe3JldHVybiB0aWIodGhpcyl9O18uUWI9ZnVuY3Rpb24gemliKCl7dWliKHRoaXMpfTtfLmI9MDtfLmM9LTE7dmFyIGhKPW1kYihiaWUsJ0Fic3RyYWN0TGlzdC9JdGVyYXRvckltcGwnLDQxNyk7YmNiKDk2LDQxNyxqaWUsQmliKTtfLlFiPWZ1bmN0aW9uIEhpYigpe3VpYih0aGlzKX07Xy5SYj1mdW5jdGlvbiBDaWIoYSl7QWliKHRoaXMsYSl9O18uU2I9ZnVuY3Rpb24gRGliKCl7cmV0dXJuIHRoaXMuYj4wfTtfLlRiPWZ1bmN0aW9uIEVpYigpe3JldHVybiB0aGlzLmJ9O18uVWI9ZnVuY3Rpb24gRmliKCl7cmV0dXJuIHNDYih0aGlzLmI+MCksdGhpcy5hLlhiKHRoaXMuYz0tLXRoaXMuYil9O18uVmI9ZnVuY3Rpb24gR2liKCl7cmV0dXJuIHRoaXMuYi0xfTtfLldiPWZ1bmN0aW9uIElpYihhKXt5Q2IodGhpcy5jIT0tMSk7dGhpcy5hLl9jKHRoaXMuYyxhKX07dmFyIGlKPW1kYihiaWUsJ0Fic3RyYWN0TGlzdC9MaXN0SXRlcmF0b3JJbXBsJyw5Nik7YmNiKDIxOSw1MixMaWUsSmliKTtfLlZjPWZ1bmN0aW9uIEtpYihhLGIpe3dDYihhLHRoaXMuYik7dGhpcy5jLlZjKHRoaXMuYSthLGIpOysrdGhpcy5ifTtfLlhiPWZ1bmN0aW9uIExpYihhKXt0Q2IoYSx0aGlzLmIpO3JldHVybiB0aGlzLmMuWGIodGhpcy5hK2EpfTtfLiRjPWZ1bmN0aW9uIE1pYihhKXt2YXIgYjt0Q2IoYSx0aGlzLmIpO2I9dGhpcy5jLiRjKHRoaXMuYSthKTstLXRoaXMuYjtyZXR1cm4gYn07Xy5fYz1mdW5jdGlvbiBOaWIoYSxiKXt0Q2IoYSx0aGlzLmIpO3JldHVybiB0aGlzLmMuX2ModGhpcy5hK2EsYil9O18uZ2M9ZnVuY3Rpb24gT2liKCl7cmV0dXJuIHRoaXMuYn07Xy5hPTA7Xy5iPTA7dmFyIGpKPW1kYihiaWUsJ0Fic3RyYWN0TGlzdC9TdWJMaXN0JywyMTkpO2JjYigzODQsZWllLGZpZSxQaWIpO18uJGI9ZnVuY3Rpb24gUWliKCl7dGhpcy5hLiRiKCl9O18uSGM9ZnVuY3Rpb24gUmliKGEpe3JldHVybiB0aGlzLmEuX2IoYSl9O18uS2M9ZnVuY3Rpb24gU2liKCl7dmFyIGE7cmV0dXJuIGE9dGhpcy5hLnZjKCkuS2MoKSxuZXcgVmliKGEpfTtfLk1jPWZ1bmN0aW9uIFRpYihhKXtpZih0aGlzLmEuX2IoYSkpe3RoaXMuYS5CYyhhKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O18uZ2M9ZnVuY3Rpb24gVWliKCl7cmV0dXJuIHRoaXMuYS5nYygpfTt2YXIgbUo9bWRiKGJpZSwnQWJzdHJhY3RNYXAvMScsMzg0KTtiY2IoNjkxLDEsYWllLFZpYik7Xy5OYj1mdW5jdGlvbiBXaWIoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gWGliKCl7cmV0dXJuIHRoaXMuYS5PYigpfTtfLlBiPWZ1bmN0aW9uIFlpYigpe3ZhciBhO3JldHVybiBhPUJEKHRoaXMuYS5QYigpLDQyKSxhLmNkKCl9O18uUWI9ZnVuY3Rpb24gWmliKCl7dGhpcy5hLlFiKCl9O3ZhciBsSj1tZGIoYmllLCdBYnN0cmFjdE1hcC8xLzEnLDY5MSk7YmNiKDIyNiwyOCxkaWUsJGliKTtfLiRiPWZ1bmN0aW9uIF9pYigpe3RoaXMuYS4kYigpfTtfLkhjPWZ1bmN0aW9uIGFqYihhKXtyZXR1cm4gdGhpcy5hLnVjKGEpfTtfLktjPWZ1bmN0aW9uIGJqYigpe3ZhciBhO3JldHVybiBhPXRoaXMuYS52YygpLktjKCksbmV3IGRqYihhKX07Xy5nYz1mdW5jdGlvbiBjamIoKXtyZXR1cm4gdGhpcy5hLmdjKCl9O3ZhciBvSj1tZGIoYmllLCdBYnN0cmFjdE1hcC8yJywyMjYpO2JjYigyOTQsMSxhaWUsZGpiKTtfLk5iPWZ1bmN0aW9uIGVqYihhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBmamIoKXtyZXR1cm4gdGhpcy5hLk9iKCl9O18uUGI9ZnVuY3Rpb24gZ2piKCl7dmFyIGE7cmV0dXJuIGE9QkQodGhpcy5hLlBiKCksNDIpLGEuZGQoKX07Xy5RYj1mdW5jdGlvbiBoamIoKXt0aGlzLmEuUWIoKX07dmFyIG5KPW1kYihiaWUsJ0Fic3RyYWN0TWFwLzIvMScsMjk0KTtiY2IoNDg0LDEsezQ4NDoxLDQyOjF9KTtfLkZiPWZ1bmN0aW9uIGpqYihhKXt2YXIgYjtpZighSkQoYSw0Mikpe3JldHVybiBmYWxzZX1iPUJEKGEsNDIpO3JldHVybiB3dGIodGhpcy5kLGIuY2QoKSkmJnd0Yih0aGlzLmUsYi5kZCgpKX07Xy5jZD1mdW5jdGlvbiBramIoKXtyZXR1cm4gdGhpcy5kfTtfLmRkPWZ1bmN0aW9uIGxqYigpe3JldHVybiB0aGlzLmV9O18uSGI9ZnVuY3Rpb24gbWpiKCl7cmV0dXJuIHh0Yih0aGlzLmQpXnh0Yih0aGlzLmUpfTtfLmVkPWZ1bmN0aW9uIG5qYihhKXtyZXR1cm4gaWpiKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gb2piKCl7cmV0dXJuIHRoaXMuZCsnPScrdGhpcy5lfTt2YXIgcEo9bWRiKGJpZSwnQWJzdHJhY3RNYXAvQWJzdHJhY3RFbnRyeScsNDg0KTtiY2IoMzgzLDQ4NCx7NDg0OjEsMzgzOjEsNDI6MX0scGpiKTt2YXIgcUo9bWRiKGJpZSwnQWJzdHJhY3RNYXAvU2ltcGxlRW50cnknLDM4Myk7YmNiKDE5ODQsMSxfamUpO18uRmI9ZnVuY3Rpb24gcWpiKGEpe3ZhciBiO2lmKCFKRChhLDQyKSl7cmV0dXJuIGZhbHNlfWI9QkQoYSw0Mik7cmV0dXJuIHd0Yih0aGlzLmNkKCksYi5jZCgpKSYmd3RiKHRoaXMuZGQoKSxiLmRkKCkpfTtfLkhiPWZ1bmN0aW9uIHJqYigpe3JldHVybiB4dGIodGhpcy5jZCgpKV54dGIodGhpcy5kZCgpKX07Xy5JYj1mdW5jdGlvbiBzamIoKXtyZXR1cm4gdGhpcy5jZCgpKyc9Jyt0aGlzLmRkKCl9O3ZhciBySj1tZGIoYmllLGxpZSwxOTg0KTtiY2IoMTk5MiwxOTY3LGdpZSk7Xy50Yz1mdW5jdGlvbiB2amIoYSl7cmV0dXJuIHRqYih0aGlzLGEpfTtfLl9iPWZ1bmN0aW9uIHdqYihhKXtyZXR1cm4gdWpiKHRoaXMsYSl9O18udmM9ZnVuY3Rpb24geGpiKCl7cmV0dXJuIG5ldyBCamIodGhpcyl9O18ueGM9ZnVuY3Rpb24geWpiKGEpe3ZhciBiO2I9YTtyZXR1cm4gV2QoQXdiKHRoaXMsYikpfTtfLmVjPWZ1bmN0aW9uIEFqYigpe3JldHVybiBuZXcgR2piKHRoaXMpfTt2YXIgd0o9bWRiKGJpZSwnQWJzdHJhY3ROYXZpZ2FibGVNYXAnLDE5OTIpO2JjYig3MzksZWllLGZpZSxCamIpO18uSGM9ZnVuY3Rpb24gQ2piKGEpe3JldHVybiBKRChhLDQyKSYmdGpiKHRoaXMuYixCRChhLDQyKSl9O18uS2M9ZnVuY3Rpb24gRGpiKCl7cmV0dXJuIG5ldyBZd2IodGhpcy5iKX07Xy5NYz1mdW5jdGlvbiBFamIoYSl7dmFyIGI7aWYoSkQoYSw0Mikpe2I9QkQoYSw0Mik7cmV0dXJuIEt3Yih0aGlzLmIsYil9cmV0dXJuIGZhbHNlfTtfLmdjPWZ1bmN0aW9uIEZqYigpe3JldHVybiB0aGlzLmIuY307dmFyIHRKPW1kYihiaWUsJ0Fic3RyYWN0TmF2aWdhYmxlTWFwL0VudHJ5U2V0Jyw3MzkpO2JjYig0OTMsZWllLGlpZSxHamIpO18uTmM9ZnVuY3Rpb24gTWpiKCl7cmV0dXJuIG5ldyBSdWIodGhpcyl9O18uJGI9ZnVuY3Rpb24gSGpiKCl7endiKHRoaXMuYSl9O18uSGM9ZnVuY3Rpb24gSWpiKGEpe3JldHVybiB1amIodGhpcy5hLGEpfTtfLktjPWZ1bmN0aW9uIEpqYigpe3ZhciBhO3JldHVybiBhPW5ldyBZd2IoKG5ldyBjeGIodGhpcy5hKSkuYiksbmV3IE5qYihhKX07Xy5NYz1mdW5jdGlvbiBLamIoYSl7aWYodWpiKHRoaXMuYSxhKSl7SndiKHRoaXMuYSxhKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9O18uZ2M9ZnVuY3Rpb24gTGpiKCl7cmV0dXJuIHRoaXMuYS5jfTt2YXIgdko9bWRiKGJpZSwnQWJzdHJhY3ROYXZpZ2FibGVNYXAvTmF2aWdhYmxlS2V5U2V0Jyw0OTMpO2JjYig0OTQsMSxhaWUsTmpiKTtfLk5iPWZ1bmN0aW9uIE9qYihhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBQamIoKXtyZXR1cm4gc2liKHRoaXMuYS5hKX07Xy5QYj1mdW5jdGlvbiBRamIoKXt2YXIgYTtyZXR1cm4gYT1Xd2IodGhpcy5hKSxhLmNkKCl9O18uUWI9ZnVuY3Rpb24gUmpiKCl7WHdiKHRoaXMuYSl9O3ZhciB1Sj1tZGIoYmllLCdBYnN0cmFjdE5hdmlnYWJsZU1hcC9OYXZpZ2FibGVLZXlTZXQvMScsNDk0KTtiY2IoMjAwNCwyOCxkaWUpO18uRmM9ZnVuY3Rpb24gU2piKGEpe3JldHVybiB6Q2IoY3ViKHRoaXMsYSkpLHRydWV9O18uR2M9ZnVuY3Rpb24gVGpiKGEpe3VDYihhKTttQ2IoYSE9dGhpcyxcIkNhbid0IGFkZCBhIHF1ZXVlIHRvIGl0c2VsZlwiKTtyZXR1cm4geWUodGhpcyxhKX07Xy4kYj1mdW5jdGlvbiBVamIoKXt3aGlsZShkdWIodGhpcykhPW51bGwpO307dmFyIHhKPW1kYihiaWUsJ0Fic3RyYWN0UXVldWUnLDIwMDQpO2JjYigzMDIsMjgsezQ6MSwyMDoxLDI4OjEsMTQ6MX0samtiLGtrYik7Xy5GYz1mdW5jdGlvbiBsa2IoYSl7cmV0dXJuIFhqYih0aGlzLGEpLHRydWV9O18uJGI9ZnVuY3Rpb24gbmtiKCl7WWpiKHRoaXMpfTtfLkhjPWZ1bmN0aW9uIG9rYihhKXtyZXR1cm4gWmpiKG5ldyB4a2IodGhpcyksYSl9O18uZGM9ZnVuY3Rpb24gcGtiKCl7cmV0dXJuIGFrYih0aGlzKX07Xy5LYz1mdW5jdGlvbiBxa2IoKXtyZXR1cm4gbmV3IHhrYih0aGlzKX07Xy5NYz1mdW5jdGlvbiBya2IoYSl7cmV0dXJuIGRrYihuZXcgeGtiKHRoaXMpLGEpfTtfLmdjPWZ1bmN0aW9uIHNrYigpe3JldHVybiB0aGlzLmMtdGhpcy5iJnRoaXMuYS5sZW5ndGgtMX07Xy5OYz1mdW5jdGlvbiB0a2IoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDI3Mil9O18uUWM9ZnVuY3Rpb24gdWtiKGEpe3ZhciBiO2I9dGhpcy5jLXRoaXMuYiZ0aGlzLmEubGVuZ3RoLTE7YS5sZW5ndGg8YiYmKGE9ZUNiKG5ldyBBcnJheShiKSxhKSk7JGpiKHRoaXMsYSxiKTthLmxlbmd0aD5iJiZOQyhhLGIsbnVsbCk7cmV0dXJuIGF9O18uYj0wO18uYz0wO3ZhciBCSj1tZGIoYmllLCdBcnJheURlcXVlJywzMDIpO2JjYig0NDYsMSxhaWUseGtiKTtfLk5iPWZ1bmN0aW9uIHlrYihhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiB6a2IoKXtyZXR1cm4gdGhpcy5hIT10aGlzLmJ9O18uUGI9ZnVuY3Rpb24gQWtiKCl7cmV0dXJuIHZrYih0aGlzKX07Xy5RYj1mdW5jdGlvbiBCa2IoKXt3a2IodGhpcyl9O18uYT0wO18uYj0wO18uYz0tMTt2YXIgQUo9bWRiKGJpZSwnQXJyYXlEZXF1ZS9JdGVyYXRvckltcGwnLDQ0Nik7YmNiKDEyLDUyLGFrZSxSa2IsU2tiLFRrYik7Xy5WYz1mdW5jdGlvbiBVa2IoYSxiKXtEa2IodGhpcyxhLGIpfTtfLkZjPWZ1bmN0aW9uIFZrYihhKXtyZXR1cm4gRWtiKHRoaXMsYSl9O18uV2M9ZnVuY3Rpb24gV2tiKGEsYil7cmV0dXJuIEZrYih0aGlzLGEsYil9O18uR2M9ZnVuY3Rpb24gWGtiKGEpe3JldHVybiBHa2IodGhpcyxhKX07Xy4kYj1mdW5jdGlvbiBZa2IoKXt0aGlzLmM9S0MoU0ksVWhlLDEsMCw1LDEpfTtfLkhjPWZ1bmN0aW9uIFprYihhKXtyZXR1cm4gSmtiKHRoaXMsYSwwKSE9LTF9O18uSmM9ZnVuY3Rpb24gJGtiKGEpe0hrYih0aGlzLGEpfTtfLlhiPWZ1bmN0aW9uIF9rYihhKXtyZXR1cm4gSWtiKHRoaXMsYSl9O18uWGM9ZnVuY3Rpb24gYWxiKGEpe3JldHVybiBKa2IodGhpcyxhLDApfTtfLmRjPWZ1bmN0aW9uIGJsYigpe3JldHVybiB0aGlzLmMubGVuZ3RoPT0wfTtfLktjPWZ1bmN0aW9uIGNsYigpe3JldHVybiBuZXcgb2xiKHRoaXMpfTtfLiRjPWZ1bmN0aW9uIGRsYihhKXtyZXR1cm4gS2tiKHRoaXMsYSl9O18uTWM9ZnVuY3Rpb24gZWxiKGEpe3JldHVybiBMa2IodGhpcyxhKX07Xy5VZD1mdW5jdGlvbiBmbGIoYSxiKXtNa2IodGhpcyxhLGIpfTtfLl9jPWZ1bmN0aW9uIGdsYihhLGIpe3JldHVybiBOa2IodGhpcyxhLGIpfTtfLmdjPWZ1bmN0aW9uIGhsYigpe3JldHVybiB0aGlzLmMubGVuZ3RofTtfLmFkPWZ1bmN0aW9uIGlsYihhKXtPa2IodGhpcyxhKX07Xy5QYz1mdW5jdGlvbiBqbGIoKXtyZXR1cm4gUGtiKHRoaXMpfTtfLlFjPWZ1bmN0aW9uIGtsYihhKXtyZXR1cm4gUWtiKHRoaXMsYSl9O3ZhciBESj1tZGIoYmllLCdBcnJheUxpc3QnLDEyKTtiY2IoNywxLGFpZSxvbGIpO18uTmI9ZnVuY3Rpb24gcGxiKGEpe1JyYih0aGlzLGEpfTtfLk9iPWZ1bmN0aW9uIHFsYigpe3JldHVybiBsbGIodGhpcyl9O18uUGI9ZnVuY3Rpb24gcmxiKCl7cmV0dXJuIG1sYih0aGlzKX07Xy5RYj1mdW5jdGlvbiBzbGIoKXtubGIodGhpcyl9O18uYT0wO18uYj0tMTt2YXIgQ0o9bWRiKGJpZSwnQXJyYXlMaXN0LzEnLDcpO2JjYigyMDEzLCR3bmQuRnVuY3Rpb24se30sWWxiKTtfLnRlPWZ1bmN0aW9uIFpsYihhLGIpe3JldHVybiBLZGIoYSxiKX07YmNiKDE1NCw1Mixia2UsYW1iKTtfLkhjPWZ1bmN0aW9uIGJtYihhKXtyZXR1cm4gQnQodGhpcyxhKSE9LTF9O18uSmM9ZnVuY3Rpb24gY21iKGEpe3ZhciBiLGMsZCxlO3VDYihhKTtmb3IoYz10aGlzLmEsZD0wLGU9Yy5sZW5ndGg7ZDxlOysrZCl7Yj1jW2RdO2EudGQoYil9fTtfLlhiPWZ1bmN0aW9uIGRtYihhKXtyZXR1cm4gJGxiKHRoaXMsYSl9O18uX2M9ZnVuY3Rpb24gZW1iKGEsYil7dmFyIGM7Yz0odENiKGEsdGhpcy5hLmxlbmd0aCksdGhpcy5hW2FdKTtOQyh0aGlzLmEsYSxiKTtyZXR1cm4gY307Xy5nYz1mdW5jdGlvbiBmbWIoKXtyZXR1cm4gdGhpcy5hLmxlbmd0aH07Xy5hZD1mdW5jdGlvbiBnbWIoYSl7TWxiKHRoaXMuYSx0aGlzLmEubGVuZ3RoLGEpfTtfLlBjPWZ1bmN0aW9uIGhtYigpe3JldHVybiBfbGIodGhpcyxLQyhTSSxVaGUsMSx0aGlzLmEubGVuZ3RoLDUsMSkpfTtfLlFjPWZ1bmN0aW9uIGltYihhKXtyZXR1cm4gX2xiKHRoaXMsYSl9O3ZhciBFSj1tZGIoYmllLCdBcnJheXMvQXJyYXlMaXN0JywxNTQpO3ZhciBqbWIsa21iLGxtYjtiY2IoOTQwLDUyLGJrZSx4bWIpO18uSGM9ZnVuY3Rpb24geW1iKGEpe3JldHVybiBmYWxzZX07Xy5YYj1mdW5jdGlvbiB6bWIoYSl7cmV0dXJuIHdtYihhKX07Xy5LYz1mdW5jdGlvbiBBbWIoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTtfLlljPWZ1bmN0aW9uIEJtYigpe3JldHVybiBtbWIoKSxFbWIoKSxEbWJ9O18uZ2M9ZnVuY3Rpb24gQ21iKCl7cmV0dXJuIDB9O3ZhciBHSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9FbXB0eUxpc3QnLDk0MCk7YmNiKDk0MSwxLGppZSxGbWIpO18uTmI9ZnVuY3Rpb24gSG1iKGEpe1JyYih0aGlzLGEpfTtfLlJiPWZ1bmN0aW9uIEdtYihhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uT2I9ZnVuY3Rpb24gSW1iKCl7cmV0dXJuIGZhbHNlfTtfLlNiPWZ1bmN0aW9uIEptYigpe3JldHVybiBmYWxzZX07Xy5QYj1mdW5jdGlvbiBLbWIoKXt0aHJvdyB2YmIobmV3IHV0Yil9O18uVGI9ZnVuY3Rpb24gTG1iKCl7cmV0dXJuIDB9O18uVWI9ZnVuY3Rpb24gTW1iKCl7dGhyb3cgdmJiKG5ldyB1dGIpfTtfLlZiPWZ1bmN0aW9uIE5tYigpe3JldHVybiAtMX07Xy5RYj1mdW5jdGlvbiBPbWIoKXt0aHJvdyB2YmIobmV3IFlkYil9O18uV2I9ZnVuY3Rpb24gUG1iKGEpe3Rocm93IHZiYihuZXcgWWRiKX07dmFyIERtYjt2YXIgRko9bWRiKGJpZSwnQ29sbGVjdGlvbnMvRW1wdHlMaXN0SXRlcmF0b3InLDk0MSk7YmNiKDk0MywxOTY3LEFpZSxRbWIpO18uX2I9ZnVuY3Rpb24gUm1iKGEpe3JldHVybiBmYWxzZX07Xy51Yz1mdW5jdGlvbiBTbWIoYSl7cmV0dXJuIGZhbHNlfTtfLnZjPWZ1bmN0aW9uIFRtYigpe3JldHVybiBtbWIoKSxsbWJ9O18ueGM9ZnVuY3Rpb24gVW1iKGEpe3JldHVybiBudWxsfTtfLmVjPWZ1bmN0aW9uIFZtYigpe3JldHVybiBtbWIoKSxsbWJ9O18uZ2M9ZnVuY3Rpb24gV21iKCl7cmV0dXJuIDB9O18uQ2M9ZnVuY3Rpb24gWG1iKCl7cmV0dXJuIG1tYigpLGptYn07dmFyIEhKPW1kYihiaWUsJ0NvbGxlY3Rpb25zL0VtcHR5TWFwJyw5NDMpO2JjYig5NDIsZWllLENpZSxZbWIpO18uSGM9ZnVuY3Rpb24gWm1iKGEpe3JldHVybiBmYWxzZX07Xy5LYz1mdW5jdGlvbiAkbWIoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTtfLmdjPWZ1bmN0aW9uIF9tYigpe3JldHVybiAwfTt2YXIgSUo9bWRiKGJpZSwnQ29sbGVjdGlvbnMvRW1wdHlTZXQnLDk0Mik7YmNiKDU5OSw1Mix7MzoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MX0sYW5iKTtfLkhjPWZ1bmN0aW9uIGJuYihhKXtyZXR1cm4gd3RiKHRoaXMuYSxhKX07Xy5YYj1mdW5jdGlvbiBjbmIoYSl7dENiKGEsMSk7cmV0dXJuIHRoaXMuYX07Xy5nYz1mdW5jdGlvbiBkbmIoKXtyZXR1cm4gMX07dmFyIEpKPW1kYihiaWUsJ0NvbGxlY3Rpb25zL1NpbmdsZXRvbkxpc3QnLDU5OSk7YmNiKDM3MiwxLHdpZSxsbmIpO18uSmM9ZnVuY3Rpb24gcm5iKGEpe3JlYih0aGlzLGEpfTtfLkxjPWZ1bmN0aW9uIHVuYigpe3JldHVybiBuZXcgWUFiKG51bGwsdGhpcy5OYygpKX07Xy5OYz1mdW5jdGlvbiB4bmIoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDApfTtfLk9jPWZ1bmN0aW9uIHluYigpe3JldHVybiBuZXcgWUFiKG51bGwsdGhpcy5OYygpKX07Xy5GYz1mdW5jdGlvbiBtbmIoYSl7cmV0dXJuIGVuYigpfTtfLkdjPWZ1bmN0aW9uIG5uYihhKXtyZXR1cm4gZm5iKCl9O18uJGI9ZnVuY3Rpb24gb25iKCl7Z25iKCl9O18uSGM9ZnVuY3Rpb24gcG5iKGEpe3JldHVybiBobmIodGhpcyxhKX07Xy5JYz1mdW5jdGlvbiBxbmIoYSl7cmV0dXJuIGluYih0aGlzLGEpfTtfLmRjPWZ1bmN0aW9uIHNuYigpe3JldHVybiB0aGlzLmIuZGMoKX07Xy5LYz1mdW5jdGlvbiB0bmIoKXtyZXR1cm4gbmV3IERuYih0aGlzLmIuS2MoKSl9O18uTWM9ZnVuY3Rpb24gdm5iKGEpe3JldHVybiBqbmIoKX07Xy5nYz1mdW5jdGlvbiB3bmIoKXtyZXR1cm4gdGhpcy5iLmdjKCl9O18uUGM9ZnVuY3Rpb24gem5iKCl7cmV0dXJuIHRoaXMuYi5QYygpfTtfLlFjPWZ1bmN0aW9uIEFuYihhKXtyZXR1cm4ga25iKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gQm5iKCl7cmV0dXJuIGZjYih0aGlzLmIpfTt2YXIgTEo9bWRiKGJpZSwnQ29sbGVjdGlvbnMvVW5tb2RpZmlhYmxlQ29sbGVjdGlvbicsMzcyKTtiY2IoMzcxLDEsYWllLERuYik7Xy5OYj1mdW5jdGlvbiBFbmIoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gRm5iKCl7cmV0dXJuIHRoaXMuYi5PYigpfTtfLlBiPWZ1bmN0aW9uIEduYigpe3JldHVybiB0aGlzLmIuUGIoKX07Xy5RYj1mdW5jdGlvbiBIbmIoKXtDbmIoKX07dmFyIEtKPW1kYihiaWUsJ0NvbGxlY3Rpb25zL1VubW9kaWZpYWJsZUNvbGxlY3Rpb25JdGVyYXRvcicsMzcxKTtiY2IoNTMxLDM3Mixja2UsSW5iKTtfLk5jPWZ1bmN0aW9uIFZuYigpe3JldHVybiBuZXcgS3ViKHRoaXMsMTYpfTtfLlZjPWZ1bmN0aW9uIEpuYihhLGIpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5XYz1mdW5jdGlvbiBLbmIoYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O18uRmI9ZnVuY3Rpb24gTG5iKGEpe3JldHVybiBwYih0aGlzLmEsYSl9O18uWGI9ZnVuY3Rpb24gTW5iKGEpe3JldHVybiB0aGlzLmEuWGIoYSl9O18uSGI9ZnVuY3Rpb24gTm5iKCl7cmV0dXJuIHRiKHRoaXMuYSl9O18uWGM9ZnVuY3Rpb24gT25iKGEpe3JldHVybiB0aGlzLmEuWGMoYSl9O18uZGM9ZnVuY3Rpb24gUG5iKCl7cmV0dXJuIHRoaXMuYS5kYygpfTtfLlljPWZ1bmN0aW9uIFFuYigpe3JldHVybiBuZXcgWG5iKHRoaXMuYS5aYygwKSl9O18uWmM9ZnVuY3Rpb24gUm5iKGEpe3JldHVybiBuZXcgWG5iKHRoaXMuYS5aYyhhKSl9O18uJGM9ZnVuY3Rpb24gU25iKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5fYz1mdW5jdGlvbiBUbmIoYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O18uYWQ9ZnVuY3Rpb24gVW5iKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5iZD1mdW5jdGlvbiBXbmIoYSxiKXtyZXR1cm4gbmV3IEluYih0aGlzLmEuYmQoYSxiKSl9O3ZhciBOSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9Vbm1vZGlmaWFibGVMaXN0Jyw1MzEpO2JjYig2OTAsMzcxLGppZSxYbmIpO18uUWI9ZnVuY3Rpb24gYm9iKCl7Q25iKCl9O18uUmI9ZnVuY3Rpb24gWW5iKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5TYj1mdW5jdGlvbiBabmIoKXtyZXR1cm4gdGhpcy5hLlNiKCl9O18uVGI9ZnVuY3Rpb24gJG5iKCl7cmV0dXJuIHRoaXMuYS5UYigpfTtfLlViPWZ1bmN0aW9uIF9uYigpe3JldHVybiB0aGlzLmEuVWIoKX07Xy5WYj1mdW5jdGlvbiBhb2IoKXtyZXR1cm4gdGhpcy5hLlZiKCl9O18uV2I9ZnVuY3Rpb24gY29iKGEpe3Rocm93IHZiYihuZXcgYmdiKX07dmFyIE1KPW1kYihiaWUsJ0NvbGxlY3Rpb25zL1VubW9kaWZpYWJsZUxpc3RJdGVyYXRvcicsNjkwKTtiY2IoNjAwLDEsY2llLGlvYik7Xy53Yz1mdW5jdGlvbiBvb2IoYSl7c3RiKHRoaXMsYSl9O18ueWM9ZnVuY3Rpb24gdG9iKGEsYixjKXtyZXR1cm4gdHRiKHRoaXMsYSxiLGMpfTtfLiRiPWZ1bmN0aW9uIGpvYigpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5fYj1mdW5jdGlvbiBrb2IoYSl7cmV0dXJuIHRoaXMuYy5fYihhKX07Xy51Yz1mdW5jdGlvbiBsb2IoYSl7cmV0dXJuIGRvYih0aGlzLGEpfTtfLnZjPWZ1bmN0aW9uIG1vYigpe3JldHVybiBlb2IodGhpcyl9O18uRmI9ZnVuY3Rpb24gbm9iKGEpe3JldHVybiBmb2IodGhpcyxhKX07Xy54Yz1mdW5jdGlvbiBwb2IoYSl7cmV0dXJuIHRoaXMuYy54YyhhKX07Xy5IYj1mdW5jdGlvbiBxb2IoKXtyZXR1cm4gdGIodGhpcy5jKX07Xy5kYz1mdW5jdGlvbiByb2IoKXtyZXR1cm4gdGhpcy5jLmRjKCl9O18uZWM9ZnVuY3Rpb24gc29iKCl7cmV0dXJuIGdvYih0aGlzKX07Xy56Yz1mdW5jdGlvbiB1b2IoYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O18uQmM9ZnVuY3Rpb24gdm9iKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5nYz1mdW5jdGlvbiB3b2IoKXtyZXR1cm4gdGhpcy5jLmdjKCl9O18uSWI9ZnVuY3Rpb24geG9iKCl7cmV0dXJuIGZjYih0aGlzLmMpfTtfLkNjPWZ1bmN0aW9uIHlvYigpe3JldHVybiBob2IodGhpcyl9O3ZhciBSSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9Vbm1vZGlmaWFibGVNYXAnLDYwMCk7YmNiKDM4MiwzNzIsQmllLHpvYik7Xy5OYz1mdW5jdGlvbiBDb2IoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDEpfTtfLkZiPWZ1bmN0aW9uIEFvYihhKXtyZXR1cm4gcGIodGhpcy5iLGEpfTtfLkhiPWZ1bmN0aW9uIEJvYigpe3JldHVybiB0Yih0aGlzLmIpfTt2YXIgVEo9bWRiKGJpZSwnQ29sbGVjdGlvbnMvVW5tb2RpZmlhYmxlU2V0JywzODIpO2JjYig5NDQsMzgyLEJpZSxHb2IpO18uSGM9ZnVuY3Rpb24gSG9iKGEpe3JldHVybiBEb2IodGhpcyxhKX07Xy5JYz1mdW5jdGlvbiBJb2IoYSl7cmV0dXJuIHRoaXMuYi5JYyhhKX07Xy5LYz1mdW5jdGlvbiBKb2IoKXt2YXIgYTthPXRoaXMuYi5LYygpO3JldHVybiBuZXcgTW9iKGEpfTtfLlBjPWZ1bmN0aW9uIEtvYigpe3ZhciBhO2E9dGhpcy5iLlBjKCk7Rm9iKGEsYS5sZW5ndGgpO3JldHVybiBhfTtfLlFjPWZ1bmN0aW9uIExvYihhKXtyZXR1cm4gRW9iKHRoaXMsYSl9O3ZhciBRSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9Vbm1vZGlmaWFibGVNYXAvVW5tb2RpZmlhYmxlRW50cnlTZXQnLDk0NCk7YmNiKDk0NSwxLGFpZSxNb2IpO18uTmI9ZnVuY3Rpb24gTm9iKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIFBvYigpe3JldHVybiBuZXcgUm9iKEJEKHRoaXMuYS5QYigpLDQyKSl9O18uT2I9ZnVuY3Rpb24gT29iKCl7cmV0dXJuIHRoaXMuYS5PYigpfTtfLlFiPWZ1bmN0aW9uIFFvYigpe3Rocm93IHZiYihuZXcgYmdiKX07dmFyIE9KPW1kYihiaWUsJ0NvbGxlY3Rpb25zL1VubW9kaWZpYWJsZU1hcC9Vbm1vZGlmaWFibGVFbnRyeVNldC8xJyw5NDUpO2JjYig2ODgsMSxfamUsUm9iKTtfLkZiPWZ1bmN0aW9uIFNvYihhKXtyZXR1cm4gdGhpcy5hLkZiKGEpfTtfLmNkPWZ1bmN0aW9uIFRvYigpe3JldHVybiB0aGlzLmEuY2QoKX07Xy5kZD1mdW5jdGlvbiBVb2IoKXtyZXR1cm4gdGhpcy5hLmRkKCl9O18uSGI9ZnVuY3Rpb24gVm9iKCl7cmV0dXJuIHRoaXMuYS5IYigpfTtfLmVkPWZ1bmN0aW9uIFdvYihhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uSWI9ZnVuY3Rpb24gWG9iKCl7cmV0dXJuIGZjYih0aGlzLmEpfTt2YXIgUEo9bWRiKGJpZSwnQ29sbGVjdGlvbnMvVW5tb2RpZmlhYmxlTWFwL1VubW9kaWZpYWJsZUVudHJ5U2V0L1VubW9kaWZpYWJsZUVudHJ5Jyw2ODgpO2JjYig2MDEsNTMxLHsyMDoxLDE0OjEsMTU6MSw1NDoxfSxZb2IpO3ZhciBTSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9Vbm1vZGlmaWFibGVSYW5kb21BY2Nlc3NMaXN0Jyw2MDEpO2JjYig2ODksMzgyLERpZSxab2IpO18uTmM9ZnVuY3Rpb24gYXBiKCl7cmV0dXJuIG5ldyBSdWIodGhpcyl9O18uRmI9ZnVuY3Rpb24gJG9iKGEpe3JldHVybiBwYih0aGlzLmEsYSl9O18uSGI9ZnVuY3Rpb24gX29iKCl7cmV0dXJuIHRiKHRoaXMuYSl9O3ZhciBVSj1tZGIoYmllLCdDb2xsZWN0aW9ucy9Vbm1vZGlmaWFibGVTb3J0ZWRTZXQnLDY4OSk7YmNiKDg0NywxLGRrZSxicGIpO18udWU9ZnVuY3Rpb24gY3BiKGEsYil7dmFyIGM7cmV0dXJuIGM9VWNjKEJEKGEsMTEpLEJEKGIsMTEpKSxjIT0wP2M6V2NjKEJEKGEsMTEpLEJEKGIsMTEpKX07Xy5GYj1mdW5jdGlvbiBkcGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGVwYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgVko9bWRiKGJpZSwnQ29tcGFyYXRvci9sYW1iZGEkMCRUeXBlJyw4NDcpO3ZhciBmcGIsZ3BiLGhwYjtiY2IoNzUxLDEsZGtlLGtwYik7Xy51ZT1mdW5jdGlvbiBscGIoYSxiKXtyZXR1cm4ganBiKEJEKGEsMzUpLEJEKGIsMzUpKX07Xy5GYj1mdW5jdGlvbiBtcGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG5wYigpe3JldHVybiBpcGIoKSxocGJ9O3ZhciBXSj1tZGIoYmllLCdDb21wYXJhdG9ycy9OYXR1cmFsT3JkZXJDb21wYXJhdG9yJyw3NTEpO2JjYigxMTc3LDEsZGtlLHBwYik7Xy51ZT1mdW5jdGlvbiBxcGIoYSxiKXtyZXR1cm4gb3BiKEJEKGEsMzUpLEJEKGIsMzUpKX07Xy5GYj1mdW5jdGlvbiBycGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHNwYigpe3JldHVybiBpcGIoKSxncGJ9O3ZhciBYSj1tZGIoYmllLCdDb21wYXJhdG9ycy9SZXZlcnNlTmF0dXJhbE9yZGVyQ29tcGFyYXRvcicsMTE3Nyk7YmNiKDY0LDEsZGtlLHRwYik7Xy5GYj1mdW5jdGlvbiB2cGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnVlPWZ1bmN0aW9uIHVwYihhLGIpe3JldHVybiB0aGlzLmEudWUoYixhKX07Xy52ZT1mdW5jdGlvbiB3cGIoKXtyZXR1cm4gdGhpcy5hfTt2YXIgWUo9bWRiKGJpZSwnQ29tcGFyYXRvcnMvUmV2ZXJzZWRDb21wYXJhdG9yJyw2NCk7YmNiKDE2Niw2MCxUaWUsQXBiKTt2YXIgWko9bWRiKGJpZSwnQ29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbicsMTY2KTt2YXIgQnBiLENwYjtiY2IoMTkwNCwxLGVrZSxHcGIpO18ud2U9ZnVuY3Rpb24gSHBiKGEpe0VwYih0aGlzLGEpfTtfLkliPWZ1bmN0aW9uIElwYigpe3JldHVybiAnRG91YmxlU3VtbWFyeVN0YXRpc3RpY3NbY291bnQgPSAnK1ViYih0aGlzLmEpKycsIGF2ZyA9ICcrKERiYih0aGlzLmEsMCk/RnBiKHRoaXMpL1NiYih0aGlzLmEpOjApKycsIG1pbiA9ICcrdGhpcy5jKycsIG1heCA9ICcrdGhpcy5iKycsIHN1bSA9ICcrRnBiKHRoaXMpKyddJ307Xy5hPTA7Xy5iPVFqZTtfLmM9UGplO18uZD0wO18uZT0wO18uZj0wO3ZhciBfSj1tZGIoYmllLCdEb3VibGVTdW1tYXJ5U3RhdGlzdGljcycsMTkwNCk7YmNiKDE4MDUsNjAsVGllLEpwYik7dmFyIGFLPW1kYihiaWUsJ0VtcHR5U3RhY2tFeGNlcHRpb24nLDE4MDUpO2JjYig0NTEsMTk2NyxjaWUsUnBiKTtfLnpjPWZ1bmN0aW9uIFhwYihhLGIpe3JldHVybiBPcGIodGhpcyxhLGIpfTtfLiRiPWZ1bmN0aW9uIFNwYigpe0twYih0aGlzKX07Xy5fYj1mdW5jdGlvbiBUcGIoYSl7cmV0dXJuIExwYih0aGlzLGEpfTtfLnVjPWZ1bmN0aW9uIFVwYihhKXt2YXIgYixjO2ZvcihjPW5ldyBHcWIodGhpcy5hKTtjLmE8Yy5jLmEubGVuZ3RoOyl7Yj1GcWIoYyk7aWYod3RiKGEsdGhpcy5iW2IuZ10pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfTtfLnZjPWZ1bmN0aW9uIFZwYigpe3JldHVybiBuZXcgX3BiKHRoaXMpfTtfLnhjPWZ1bmN0aW9uIFdwYihhKXtyZXR1cm4gTXBiKHRoaXMsYSl9O18uQmM9ZnVuY3Rpb24gWXBiKGEpe3JldHVybiBQcGIodGhpcyxhKX07Xy5nYz1mdW5jdGlvbiBacGIoKXtyZXR1cm4gdGhpcy5hLmN9O3ZhciBlSz1tZGIoYmllLCdFbnVtTWFwJyw0NTEpO2JjYigxMzUyLGVpZSxmaWUsX3BiKTtfLiRiPWZ1bmN0aW9uIGFxYigpe0twYih0aGlzLmEpfTtfLkhjPWZ1bmN0aW9uIGJxYihhKXtyZXR1cm4gJHBiKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gY3FiKCl7cmV0dXJuIG5ldyBmcWIodGhpcy5hKX07Xy5NYz1mdW5jdGlvbiBkcWIoYSl7dmFyIGI7aWYoJHBiKHRoaXMsYSkpe2I9QkQoYSw0MikuY2QoKTtQcGIodGhpcy5hLGIpO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX07Xy5nYz1mdW5jdGlvbiBlcWIoKXtyZXR1cm4gdGhpcy5hLmEuY307dmFyIGNLPW1kYihiaWUsJ0VudW1NYXAvRW50cnlTZXQnLDEzNTIpO2JjYigxMzUzLDEsYWllLGZxYik7Xy5OYj1mdW5jdGlvbiBncWIoYSl7UnJiKHRoaXMsYSl9O18uUGI9ZnVuY3Rpb24gaXFiKCl7cmV0dXJuIHRoaXMuYj1GcWIodGhpcy5hKSxuZXcga3FiKHRoaXMuYyx0aGlzLmIpfTtfLk9iPWZ1bmN0aW9uIGhxYigpe3JldHVybiBFcWIodGhpcy5hKX07Xy5RYj1mdW5jdGlvbiBqcWIoKXt5Q2IoISF0aGlzLmIpO1BwYih0aGlzLmMsdGhpcy5iKTt0aGlzLmI9bnVsbH07dmFyIGJLPW1kYihiaWUsJ0VudW1NYXAvRW50cnlTZXRJdGVyYXRvcicsMTM1Myk7YmNiKDEzNTQsMTk4NCxfamUsa3FiKTtfLmNkPWZ1bmN0aW9uIGxxYigpe3JldHVybiB0aGlzLmF9O18uZGQ9ZnVuY3Rpb24gbXFiKCl7cmV0dXJuIHRoaXMuYi5iW3RoaXMuYS5nXX07Xy5lZD1mdW5jdGlvbiBucWIoYSl7cmV0dXJuIFFwYih0aGlzLmIsdGhpcy5hLmcsYSl9O3ZhciBkSz1tZGIoYmllLCdFbnVtTWFwL01hcEVudHJ5JywxMzU0KTtiY2IoMTc0LGVpZSx7MjA6MSwyODoxLDE0OjEsMTc0OjEsMjE6MX0pO3ZhciBoSz1tZGIoYmllLCdFbnVtU2V0JywxNzQpO2JjYigxNTYsMTc0LHsyMDoxLDI4OjEsMTQ6MSwxNzQ6MSwxNTY6MSwyMToxfSx4cWIpO18uRmM9ZnVuY3Rpb24geXFiKGEpe3JldHVybiBycWIodGhpcyxCRChhLDIyKSl9O18uSGM9ZnVuY3Rpb24genFiKGEpe3JldHVybiB0cWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBBcWIoKXtyZXR1cm4gbmV3IEdxYih0aGlzKX07Xy5NYz1mdW5jdGlvbiBCcWIoYSl7cmV0dXJuIHZxYih0aGlzLGEpfTtfLmdjPWZ1bmN0aW9uIENxYigpe3JldHVybiB0aGlzLmN9O18uYz0wO3ZhciBnSz1tZGIoYmllLCdFbnVtU2V0L0VudW1TZXRJbXBsJywxNTYpO2JjYigzNDMsMSxhaWUsR3FiKTtfLk5iPWZ1bmN0aW9uIEhxYihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBKcWIoKXtyZXR1cm4gRnFiKHRoaXMpfTtfLk9iPWZ1bmN0aW9uIElxYigpe3JldHVybiBFcWIodGhpcyl9O18uUWI9ZnVuY3Rpb24gS3FiKCl7eUNiKHRoaXMuYiE9LTEpO05DKHRoaXMuYy5iLHRoaXMuYixudWxsKTstLXRoaXMuYy5jO3RoaXMuYj0tMX07Xy5hPS0xO18uYj0tMTt2YXIgZks9bWRiKGJpZSwnRW51bVNldC9FbnVtU2V0SW1wbC9JdGVyYXRvckltcGwnLDM0Myk7YmNiKDQzLDQ4OCxma2UsTHFiLE1xYixOcWIpO18ucmU9ZnVuY3Rpb24gT3FiKGEsYil7cmV0dXJuIFBEKGEpPT09UEQoYil8fGEhPW51bGwmJnBiKGEsYil9O18uc2U9ZnVuY3Rpb24gUHFiKGEpe3ZhciBiO2I9dGIoYSk7cmV0dXJuIGJ8MH07dmFyIGlLPW1kYihiaWUsJ0hhc2hNYXAnLDQzKTtiY2IoNTMsZWllLGdrZSxUcWIsVXFiLFZxYik7Xy5GYz1mdW5jdGlvbiBYcWIoYSl7cmV0dXJuIFFxYih0aGlzLGEpfTtfLiRiPWZ1bmN0aW9uIFlxYigpe3RoaXMuYS4kYigpfTtfLkhjPWZ1bmN0aW9uIFpxYihhKXtyZXR1cm4gUnFiKHRoaXMsYSl9O18uZGM9ZnVuY3Rpb24gJHFiKCl7cmV0dXJuIHRoaXMuYS5nYygpPT0wfTtfLktjPWZ1bmN0aW9uIF9xYigpe3JldHVybiB0aGlzLmEuZWMoKS5LYygpfTtfLk1jPWZ1bmN0aW9uIGFyYihhKXtyZXR1cm4gU3FiKHRoaXMsYSl9O18uZ2M9ZnVuY3Rpb24gYnJiKCl7cmV0dXJuIHRoaXMuYS5nYygpfTt2YXIgaks9bWRiKGJpZSwnSGFzaFNldCcsNTMpO2JjYigxNzgxLDEsc2llLGRyYik7Xy51ZD1mdW5jdGlvbiBlcmIoYSl7Y3JiKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gZnJiKCl7cmV0dXJuICdJbnRTdW1tYXJ5U3RhdGlzdGljc1tjb3VudCA9ICcrVWJiKHRoaXMuYSkrJywgYXZnID0gJysoRGJiKHRoaXMuYSwwKT9TYmIodGhpcy5kKS9TYmIodGhpcy5hKTowKSsnLCBtaW4gPSAnK3RoaXMuYysnLCBtYXggPSAnK3RoaXMuYisnLCBzdW0gPSAnK1ViYih0aGlzLmQpKyddJ307Xy5hPTA7Xy5iPVJpZTtfLmM9T2hlO18uZD0wO3ZhciBrSz1tZGIoYmllLCdJbnRTdW1tYXJ5U3RhdGlzdGljcycsMTc4MSk7YmNiKDEwNDksMSx2aWUsbHJiKTtfLkpjPWZ1bmN0aW9uIG1yYihhKXtyZWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBucmIoKXtyZXR1cm4gbmV3IG9yYih0aGlzKX07Xy5jPTA7dmFyIG1LPW1kYihiaWUsJ0ludGVybmFsSGFzaENvZGVNYXAnLDEwNDkpO2JjYig3MTEsMSxhaWUsb3JiKTtfLk5iPWZ1bmN0aW9uIHByYihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBycmIoKXtyZXR1cm4gdGhpcy5kPXRoaXMuYVt0aGlzLmMrK10sdGhpcy5kfTtfLk9iPWZ1bmN0aW9uIHFyYigpe3ZhciBhO2lmKHRoaXMuYzx0aGlzLmEubGVuZ3RoKXtyZXR1cm4gdHJ1ZX1hPXRoaXMuYi5uZXh0KCk7aWYoIWEuZG9uZSl7dGhpcy5hPWEudmFsdWVbMV07dGhpcy5jPTA7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfTtfLlFiPWZ1bmN0aW9uIHNyYigpe2tyYih0aGlzLmUsdGhpcy5kLmNkKCkpO3RoaXMuYyE9MCYmLS10aGlzLmN9O18uYz0wO18uZD1udWxsO3ZhciBsSz1tZGIoYmllLCdJbnRlcm5hbEhhc2hDb2RlTWFwLzEnLDcxMSk7dmFyIHZyYjtiY2IoMTA0NywxLHZpZSxGcmIpO18uSmM9ZnVuY3Rpb24gR3JiKGEpe3JlYih0aGlzLGEpfTtfLktjPWZ1bmN0aW9uIEhyYigpe3JldHVybiBuZXcgSXJiKHRoaXMpfTtfLmM9MDtfLmQ9MDt2YXIgcEs9bWRiKGJpZSwnSW50ZXJuYWxTdHJpbmdNYXAnLDEwNDcpO2JjYig3MTAsMSxhaWUsSXJiKTtfLk5iPWZ1bmN0aW9uIEpyYihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBMcmIoKXtyZXR1cm4gdGhpcy5jPXRoaXMuYSx0aGlzLmE9dGhpcy5iLm5leHQoKSxuZXcgTnJiKHRoaXMuZCx0aGlzLmMsdGhpcy5kLmQpfTtfLk9iPWZ1bmN0aW9uIEtyYigpe3JldHVybiAhdGhpcy5hLmRvbmV9O18uUWI9ZnVuY3Rpb24gTXJiKCl7RXJiKHRoaXMuZCx0aGlzLmMudmFsdWVbMF0pfTt2YXIgbks9bWRiKGJpZSwnSW50ZXJuYWxTdHJpbmdNYXAvMScsNzEwKTtiY2IoMTA0OCwxOTg0LF9qZSxOcmIpO18uY2Q9ZnVuY3Rpb24gT3JiKCl7cmV0dXJuIHRoaXMuYi52YWx1ZVswXX07Xy5kZD1mdW5jdGlvbiBQcmIoKXtpZih0aGlzLmEuZCE9dGhpcy5jKXtyZXR1cm4gQ3JiKHRoaXMuYSx0aGlzLmIudmFsdWVbMF0pfXJldHVybiB0aGlzLmIudmFsdWVbMV19O18uZWQ9ZnVuY3Rpb24gUXJiKGEpe3JldHVybiBEcmIodGhpcy5hLHRoaXMuYi52YWx1ZVswXSxhKX07Xy5jPTA7dmFyIG9LPW1kYihiaWUsJ0ludGVybmFsU3RyaW5nTWFwLzInLDEwNDgpO2JjYigyMjgsNDMsZmtlLCRyYixfcmIpO18uJGI9ZnVuY3Rpb24gYXNiKCl7VXJiKHRoaXMpfTtfLl9iPWZ1bmN0aW9uIGJzYihhKXtyZXR1cm4gVnJiKHRoaXMsYSl9O18udWM9ZnVuY3Rpb24gY3NiKGEpe3ZhciBiO2I9dGhpcy5kLmE7d2hpbGUoYiE9dGhpcy5kKXtpZih3dGIoYi5lLGEpKXtyZXR1cm4gdHJ1ZX1iPWIuYX1yZXR1cm4gZmFsc2V9O18udmM9ZnVuY3Rpb24gZHNiKCl7cmV0dXJuIG5ldyBuc2IodGhpcyl9O18ueGM9ZnVuY3Rpb24gZXNiKGEpe3JldHVybiBXcmIodGhpcyxhKX07Xy56Yz1mdW5jdGlvbiBmc2IoYSxiKXtyZXR1cm4gWHJiKHRoaXMsYSxiKX07Xy5CYz1mdW5jdGlvbiBnc2IoYSl7cmV0dXJuIFpyYih0aGlzLGEpfTtfLmdjPWZ1bmN0aW9uIGhzYigpe3JldHVybiBWaGIodGhpcy5lKX07Xy5jPWZhbHNlO3ZhciB0Sz1tZGIoYmllLCdMaW5rZWRIYXNoTWFwJywyMjgpO2JjYigzODcsMzgzLHs0ODQ6MSwzODM6MSwzODc6MSw0MjoxfSxrc2IsbHNiKTt2YXIgcUs9bWRiKGJpZSwnTGlua2VkSGFzaE1hcC9DaGFpbkVudHJ5JywzODcpO2JjYig3MDEsZWllLGZpZSxuc2IpO18uJGI9ZnVuY3Rpb24gb3NiKCl7VXJiKHRoaXMuYSl9O18uSGM9ZnVuY3Rpb24gcHNiKGEpe3JldHVybiBtc2IodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBxc2IoKXtyZXR1cm4gbmV3IHVzYih0aGlzKX07Xy5NYz1mdW5jdGlvbiByc2IoYSl7dmFyIGI7aWYobXNiKHRoaXMsYSkpe2I9QkQoYSw0MikuY2QoKTtacmIodGhpcy5hLGIpO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX07Xy5nYz1mdW5jdGlvbiBzc2IoKXtyZXR1cm4gVmhiKHRoaXMuYS5lKX07dmFyIHNLPW1kYihiaWUsJ0xpbmtlZEhhc2hNYXAvRW50cnlTZXQnLDcwMSk7YmNiKDcwMiwxLGFpZSx1c2IpO18uTmI9ZnVuY3Rpb24gdnNiKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIHhzYigpe3JldHVybiB0c2IodGhpcyl9O18uT2I9ZnVuY3Rpb24gd3NiKCl7cmV0dXJuIHRoaXMuYiE9dGhpcy5jLmEuZH07Xy5RYj1mdW5jdGlvbiB5c2IoKXt5Q2IoISF0aGlzLmEpO3hwYih0aGlzLmMuYS5lLHRoaXMpO2pzYih0aGlzLmEpO1RoYih0aGlzLmMuYS5lLHRoaXMuYS5kKTt5cGIodGhpcy5jLmEuZSx0aGlzKTt0aGlzLmE9bnVsbH07dmFyIHJLPW1kYihiaWUsJ0xpbmtlZEhhc2hNYXAvRW50cnlTZXQvRW50cnlJdGVyYXRvcicsNzAyKTtiY2IoMTc4LDUzLGdrZSx6c2IsQXNiLEJzYik7dmFyIHVLPW1kYihiaWUsJ0xpbmtlZEhhc2hTZXQnLDE3OCk7YmNiKDY4LDE5NjQsezM6MSw0OjEsMjA6MSwyODoxLDUyOjEsMTQ6MSw2ODoxLDE1OjF9LFBzYixRc2IpO18uRmM9ZnVuY3Rpb24gUnNiKGEpe3JldHVybiBEc2IodGhpcyxhKX07Xy4kYj1mdW5jdGlvbiBTc2IoKXtPc2IodGhpcyl9O18uWmM9ZnVuY3Rpb24gVHNiKGEpe3JldHVybiBKc2IodGhpcyxhKX07Xy5nYz1mdW5jdGlvbiBVc2IoKXtyZXR1cm4gdGhpcy5ifTtfLmI9MDt2YXIgeEs9bWRiKGJpZSwnTGlua2VkTGlzdCcsNjgpO2JjYig5NzAsMSxqaWUsJHNiKTtfLk5iPWZ1bmN0aW9uIGF0YihhKXtScmIodGhpcyxhKX07Xy5SYj1mdW5jdGlvbiBfc2IoYSl7VnNiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gYnRiKCl7cmV0dXJuIFdzYih0aGlzKX07Xy5TYj1mdW5jdGlvbiBjdGIoKXtyZXR1cm4gdGhpcy5iLmIhPXRoaXMuZC5hfTtfLlBiPWZ1bmN0aW9uIGR0Yigpe3JldHVybiBYc2IodGhpcyl9O18uVGI9ZnVuY3Rpb24gZXRiKCl7cmV0dXJuIHRoaXMuYX07Xy5VYj1mdW5jdGlvbiBmdGIoKXtyZXR1cm4gWXNiKHRoaXMpfTtfLlZiPWZ1bmN0aW9uIGd0Yigpe3JldHVybiB0aGlzLmEtMX07Xy5RYj1mdW5jdGlvbiBodGIoKXtac2IodGhpcyl9O18uV2I9ZnVuY3Rpb24gaXRiKGEpe3lDYighIXRoaXMuYyk7dGhpcy5jLmM9YX07Xy5hPTA7Xy5jPW51bGw7dmFyIHZLPW1kYihiaWUsJ0xpbmtlZExpc3QvTGlzdEl0ZXJhdG9ySW1wbCcsOTcwKTtiY2IoNjA4LDEse30sanRiKTt2YXIgd0s9bWRiKGJpZSwnTGlua2VkTGlzdC9Ob2RlJyw2MDgpO2JjYigxOTU5LDEse30pO3ZhciBsdGIsbXRiO3ZhciBCSz1tZGIoYmllLCdMb2NhbGUnLDE5NTkpO2JjYig4NjEsMTk1OSx7fSxvdGIpO18uSWI9ZnVuY3Rpb24gcHRiKCl7cmV0dXJuICcnfTt2YXIgeks9bWRiKGJpZSwnTG9jYWxlLzEnLDg2MSk7YmNiKDg2MiwxOTU5LHt9LHF0Yik7Xy5JYj1mdW5jdGlvbiBydGIoKXtyZXR1cm4gJ3Vua25vd24nfTt2YXIgQUs9bWRiKGJpZSwnTG9jYWxlLzQnLDg2Mik7YmNiKDEwOSw2MCx7MzoxLDEwMjoxLDYwOjEsNzg6MSwxMDk6MX0sdXRiLHZ0Yik7dmFyIEVLPW1kYihiaWUsJ05vU3VjaEVsZW1lbnRFeGNlcHRpb24nLDEwOSk7YmNiKDQwNCwxLHs0MDQ6MX0sRnRiKTtfLkZiPWZ1bmN0aW9uIEd0YihhKXt2YXIgYjtpZihhPT09dGhpcyl7cmV0dXJuIHRydWV9aWYoIUpEKGEsNDA0KSl7cmV0dXJuIGZhbHNlfWI9QkQoYSw0MDQpO3JldHVybiB3dGIodGhpcy5hLGIuYSl9O18uSGI9ZnVuY3Rpb24gSHRiKCl7cmV0dXJuIHh0Yih0aGlzLmEpfTtfLkliPWZ1bmN0aW9uIEp0Yigpe3JldHVybiB0aGlzLmEhPW51bGw/V2hlK3hmYih0aGlzLmEpKycpJzonT3B0aW9uYWwuZW1wdHkoKSd9O3ZhciB6dGI7dmFyIEhLPW1kYihiaWUsJ09wdGlvbmFsJyw0MDQpO2JjYig0NjMsMSx7NDYzOjF9LE90YixQdGIpO18uRmI9ZnVuY3Rpb24gUXRiKGEpe3ZhciBiO2lmKGE9PT10aGlzKXtyZXR1cm4gdHJ1ZX1pZighSkQoYSw0NjMpKXtyZXR1cm4gZmFsc2V9Yj1CRChhLDQ2Myk7cmV0dXJuIHRoaXMuYT09Yi5hJiZLZGIodGhpcy5iLGIuYik9PTB9O18uSGI9ZnVuY3Rpb24gUnRiKCl7cmV0dXJuIHRoaXMuYT9RRCh0aGlzLmIpOjB9O18uSWI9ZnVuY3Rpb24gU3RiKCl7cmV0dXJuIHRoaXMuYT8nT3B0aW9uYWxEb3VibGUub2YoJysoJycrdGhpcy5iKSsnKSc6J09wdGlvbmFsRG91YmxlLmVtcHR5KCknfTtfLmE9ZmFsc2U7Xy5iPTA7dmFyIEt0Yjt2YXIgRks9bWRiKGJpZSwnT3B0aW9uYWxEb3VibGUnLDQ2Myk7YmNiKDUxNywxLHs1MTc6MX0sV3RiLFh0Yik7Xy5GYj1mdW5jdGlvbiBZdGIoYSl7dmFyIGI7aWYoYT09PXRoaXMpe3JldHVybiB0cnVlfWlmKCFKRChhLDUxNykpe3JldHVybiBmYWxzZX1iPUJEKGEsNTE3KTtyZXR1cm4gdGhpcy5hPT1iLmEmJmJlYih0aGlzLmIsYi5iKT09MH07Xy5IYj1mdW5jdGlvbiBadGIoKXtyZXR1cm4gdGhpcy5hP3RoaXMuYjowfTtfLkliPWZ1bmN0aW9uICR0Yigpe3JldHVybiB0aGlzLmE/J09wdGlvbmFsSW50Lm9mKCcrKCcnK3RoaXMuYikrJyknOidPcHRpb25hbEludC5lbXB0eSgpJ307Xy5hPWZhbHNlO18uYj0wO3ZhciBUdGI7dmFyIEdLPW1kYihiaWUsJ09wdGlvbmFsSW50Jyw1MTcpO2JjYig1MDMsMjAwNCxkaWUsZ3ViKTtfLkdjPWZ1bmN0aW9uIGh1YihhKXtyZXR1cm4gX3RiKHRoaXMsYSl9O18uJGI9ZnVuY3Rpb24gaXViKCl7dGhpcy5iLmM9S0MoU0ksVWhlLDEsMCw1LDEpfTtfLkhjPWZ1bmN0aW9uIGp1YihhKXtyZXR1cm4gKGE9PW51bGw/LTE6SmtiKHRoaXMuYixhLDApKSE9LTF9O18uS2M9ZnVuY3Rpb24ga3ViKCl7cmV0dXJuIG5ldyBxdWIodGhpcyl9O18uTWM9ZnVuY3Rpb24gbHViKGEpe3JldHVybiBldWIodGhpcyxhKX07Xy5nYz1mdW5jdGlvbiBtdWIoKXtyZXR1cm4gdGhpcy5iLmMubGVuZ3RofTtfLk5jPWZ1bmN0aW9uIG51Yigpe3JldHVybiBuZXcgS3ViKHRoaXMsMjU2KX07Xy5QYz1mdW5jdGlvbiBvdWIoKXtyZXR1cm4gUGtiKHRoaXMuYil9O18uUWM9ZnVuY3Rpb24gcHViKGEpe3JldHVybiBRa2IodGhpcy5iLGEpfTt2YXIgSks9bWRiKGJpZSwnUHJpb3JpdHlRdWV1ZScsNTAzKTtiY2IoMTI3NywxLGFpZSxxdWIpO18uTmI9ZnVuY3Rpb24gcnViKGEpe1JyYih0aGlzLGEpfTtfLk9iPWZ1bmN0aW9uIHR1Yigpe3JldHVybiB0aGlzLmE8dGhpcy5jLmIuYy5sZW5ndGh9O18uUGI9ZnVuY3Rpb24gdXViKCl7c0NiKHRoaXMuYTx0aGlzLmMuYi5jLmxlbmd0aCk7dGhpcy5iPXRoaXMuYSsrO3JldHVybiBJa2IodGhpcy5jLmIsdGhpcy5iKX07Xy5RYj1mdW5jdGlvbiB2dWIoKXt5Q2IodGhpcy5iIT0tMSk7ZnViKHRoaXMuYyx0aGlzLmE9dGhpcy5iKTt0aGlzLmI9LTF9O18uYT0wO18uYj0tMTt2YXIgSUs9bWRiKGJpZSwnUHJpb3JpdHlRdWV1ZS8xJywxMjc3KTtiY2IoMjMwLDEsezIzMDoxfSxHdWIsSHViKTtfLmE9MDtfLmI9MDt2YXIgd3ViLHh1Yix5dWI9MDt2YXIgS0s9bWRiKGJpZSwnUmFuZG9tJywyMzApO2JjYigyNywxLHBpZSxLdWIsTHViLE11Yik7Xy5xZD1mdW5jdGlvbiBOdWIoKXtyZXR1cm4gdGhpcy5hfTtfLnJkPWZ1bmN0aW9uIE91Yigpe0l1Yih0aGlzKTtyZXR1cm4gdGhpcy5jfTtfLk5iPWZ1bmN0aW9uIFB1YihhKXtJdWIodGhpcyk7dGhpcy5kLk5iKGEpfTtfLnNkPWZ1bmN0aW9uIFF1YihhKXtyZXR1cm4gSnViKHRoaXMsYSl9O18uYT0wO18uYz0wO3ZhciAkSz1tZGIoYmllLCdTcGxpdGVyYXRvcnMvSXRlcmF0b3JTcGxpdGVyYXRvcicsMjcpO2JjYig0ODUsMjcscGllLFJ1Yik7dmFyIE1LPW1kYihiaWUsJ1NvcnRlZFNldC8xJyw0ODUpO2JjYig2MDIsMSxla2UsVHViKTtfLndlPWZ1bmN0aW9uIFV1YihhKXt0aGlzLmEudGQoYSl9O3ZhciBOSz1tZGIoYmllLCdTcGxpdGVyYXRvci9PZkRvdWJsZS8wbWV0aG9kcmVmJGFjY2VwdCRUeXBlJyw2MDIpO2JjYig2MDMsMSxla2UsVnViKTtfLndlPWZ1bmN0aW9uIFd1YihhKXt0aGlzLmEudGQoYSl9O3ZhciBPSz1tZGIoYmllLCdTcGxpdGVyYXRvci9PZkRvdWJsZS8xbWV0aG9kcmVmJGFjY2VwdCRUeXBlJyw2MDMpO2JjYig2MDQsMSxzaWUsWHViKTtfLnVkPWZ1bmN0aW9uIFl1YihhKXt0aGlzLmEudGQobWViKGEpKX07dmFyIFBLPW1kYihiaWUsJ1NwbGl0ZXJhdG9yL09mSW50LzJtZXRob2RyZWYkYWNjZXB0JFR5cGUnLDYwNCk7YmNiKDYwNSwxLHNpZSxadWIpO18udWQ9ZnVuY3Rpb24gJHViKGEpe3RoaXMuYS50ZChtZWIoYSkpfTt2YXIgUUs9bWRiKGJpZSwnU3BsaXRlcmF0b3IvT2ZJbnQvM21ldGhvZHJlZiRhY2NlcHQkVHlwZScsNjA1KTtiY2IoNjE3LDEscGllKTtfLk5iPWZ1bmN0aW9uIGV2YihhKXtTdWIodGhpcyxhKX07Xy5xZD1mdW5jdGlvbiBjdmIoKXtyZXR1cm4gdGhpcy5kfTtfLnJkPWZ1bmN0aW9uIGR2Yigpe3JldHVybiB0aGlzLmV9O18uZD0wO18uZT0wO3ZhciBXSz1tZGIoYmllLCdTcGxpdGVyYXRvcnMvQmFzZVNwbGl0ZXJhdG9yJyw2MTcpO2JjYig3MjEsNjE3LHBpZSk7Xy54ZT1mdW5jdGlvbiBndmIoYSl7X3ViKHRoaXMsYSl9O18uTmI9ZnVuY3Rpb24gaHZiKGEpe0pEKGEsMTgyKT9fdWIodGhpcyxCRChhLDE4MikpOl91Yih0aGlzLG5ldyBWdWIoYSkpfTtfLnNkPWZ1bmN0aW9uIGl2YihhKXtyZXR1cm4gSkQoYSwxODIpP3RoaXMueWUoQkQoYSwxODIpKTp0aGlzLnllKG5ldyBUdWIoYSkpfTt2YXIgUks9bWRiKGJpZSwnU3BsaXRlcmF0b3JzL0Fic3RyYWN0RG91YmxlU3BsaXRlcmF0b3InLDcyMSk7YmNiKDcyMCw2MTcscGllKTtfLnhlPWZ1bmN0aW9uIGt2YihhKXtfdWIodGhpcyxhKX07Xy5OYj1mdW5jdGlvbiBsdmIoYSl7SkQoYSwxOTYpP191Yih0aGlzLEJEKGEsMTk2KSk6X3ViKHRoaXMsbmV3IFp1YihhKSl9O18uc2Q9ZnVuY3Rpb24gbXZiKGEpe3JldHVybiBKRChhLDE5Nik/dGhpcy55ZShCRChhLDE5NikpOnRoaXMueWUobmV3IFh1YihhKSl9O3ZhciBTSz1tZGIoYmllLCdTcGxpdGVyYXRvcnMvQWJzdHJhY3RJbnRTcGxpdGVyYXRvcicsNzIwKTtiY2IoNTQwLDYxNyxwaWUpO3ZhciBUSz1tZGIoYmllLCdTcGxpdGVyYXRvcnMvQWJzdHJhY3RTcGxpdGVyYXRvcicsNTQwKTtiY2IoNjkyLDEscGllKTtfLk5iPWZ1bmN0aW9uIHR2YihhKXtTdWIodGhpcyxhKX07Xy5xZD1mdW5jdGlvbiBydmIoKXtyZXR1cm4gdGhpcy5ifTtfLnJkPWZ1bmN0aW9uIHN2Yigpe3JldHVybiB0aGlzLmQtdGhpcy5jfTtfLmI9MDtfLmM9MDtfLmQ9MDt2YXIgVks9bWRiKGJpZSwnU3BsaXRlcmF0b3JzL0Jhc2VBcnJheVNwbGl0ZXJhdG9yJyw2OTIpO2JjYig5NDcsNjkyLHBpZSx2dmIpO18uemU9ZnVuY3Rpb24gd3ZiKGEsYil7dXZiKHRoaXMsQkQoYSwzOCksYil9O18uTmI9ZnVuY3Rpb24geHZiKGEpe292Yih0aGlzLGEpfTtfLnNkPWZ1bmN0aW9uIHl2YihhKXtyZXR1cm4gcHZiKHRoaXMsYSl9O3ZhciBVSz1tZGIoYmllLCdTcGxpdGVyYXRvcnMvQXJyYXlTcGxpdGVyYXRvcicsOTQ3KTtiY2IoNjkzLDY5MixwaWUsQXZiKTtfLnplPWZ1bmN0aW9uIEN2YihhLGIpe3p2Yih0aGlzLEJEKGEsMTgyKSxiKX07Xy54ZT1mdW5jdGlvbiBEdmIoYSl7b3ZiKHRoaXMsYSl9O18uTmI9ZnVuY3Rpb24gRXZiKGEpe0pEKGEsMTgyKT9vdmIodGhpcyxCRChhLDE4MikpOm92Yih0aGlzLG5ldyBWdWIoYSkpfTtfLnllPWZ1bmN0aW9uIEZ2YihhKXtyZXR1cm4gcHZiKHRoaXMsYSl9O18uc2Q9ZnVuY3Rpb24gR3ZiKGEpe3JldHVybiBKRChhLDE4Mik/cHZiKHRoaXMsQkQoYSwxODIpKTpwdmIodGhpcyxuZXcgVHViKGEpKX07dmFyIFhLPW1kYihiaWUsJ1NwbGl0ZXJhdG9ycy9Eb3VibGVBcnJheVNwbGl0ZXJhdG9yJyw2OTMpO2JjYigxOTY4LDEscGllKTtfLk5iPWZ1bmN0aW9uIEx2YihhKXtTdWIodGhpcyxhKX07Xy5xZD1mdW5jdGlvbiBKdmIoKXtyZXR1cm4gMTY0NDh9O18ucmQ9ZnVuY3Rpb24gS3ZiKCl7cmV0dXJuIDB9O3ZhciBIdmI7dmFyIFpLPW1kYihiaWUsJ1NwbGl0ZXJhdG9ycy9FbXB0eVNwbGl0ZXJhdG9yJywxOTY4KTtiY2IoOTQ2LDE5NjgscGllLE92Yik7Xy54ZT1mdW5jdGlvbiBQdmIoYSl7TXZiKGEpfTtfLk5iPWZ1bmN0aW9uIFF2YihhKXtKRChhLDE5Nik/TXZiKEJEKGEsMTk2KSk6TXZiKG5ldyBadWIoYSkpfTtfLnllPWZ1bmN0aW9uIFJ2YihhKXtyZXR1cm4gTnZiKGEpfTtfLnNkPWZ1bmN0aW9uIFN2YihhKXtyZXR1cm4gSkQoYSwxOTYpP052YihCRChhLDE5NikpOk52YihuZXcgWHViKGEpKX07dmFyIFlLPW1kYihiaWUsJ1NwbGl0ZXJhdG9ycy9FbXB0eVNwbGl0ZXJhdG9yL09mSW50Jyw5NDYpO2JjYig1ODAsNTIscGtlLFd2Yik7Xy5WYz1mdW5jdGlvbiBYdmIoYSxiKXtfdmIoYSx0aGlzLmEuYy5sZW5ndGgrMSk7RGtiKHRoaXMuYSxhLGIpfTtfLkZjPWZ1bmN0aW9uIFl2YihhKXtyZXR1cm4gRWtiKHRoaXMuYSxhKX07Xy5XYz1mdW5jdGlvbiBadmIoYSxiKXtfdmIoYSx0aGlzLmEuYy5sZW5ndGgrMSk7cmV0dXJuIEZrYih0aGlzLmEsYSxiKX07Xy5HYz1mdW5jdGlvbiAkdmIoYSl7cmV0dXJuIEdrYih0aGlzLmEsYSl9O18uJGI9ZnVuY3Rpb24gYXdiKCl7dGhpcy5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpfTtfLkhjPWZ1bmN0aW9uIGJ3YihhKXtyZXR1cm4gSmtiKHRoaXMuYSxhLDApIT0tMX07Xy5JYz1mdW5jdGlvbiBjd2IoYSl7cmV0dXJuIEJlKHRoaXMuYSxhKX07Xy5KYz1mdW5jdGlvbiBkd2IoYSl7SGtiKHRoaXMuYSxhKX07Xy5YYj1mdW5jdGlvbiBld2IoYSl7cmV0dXJuIF92YihhLHRoaXMuYS5jLmxlbmd0aCksSWtiKHRoaXMuYSxhKX07Xy5YYz1mdW5jdGlvbiBmd2IoYSl7cmV0dXJuIEprYih0aGlzLmEsYSwwKX07Xy5kYz1mdW5jdGlvbiBnd2IoKXtyZXR1cm4gdGhpcy5hLmMubGVuZ3RoPT0wfTtfLktjPWZ1bmN0aW9uIGh3Yigpe3JldHVybiBuZXcgb2xiKHRoaXMuYSl9O18uJGM9ZnVuY3Rpb24gaXdiKGEpe3JldHVybiBfdmIoYSx0aGlzLmEuYy5sZW5ndGgpLEtrYih0aGlzLmEsYSl9O18uVWQ9ZnVuY3Rpb24gandiKGEsYil7TWtiKHRoaXMuYSxhLGIpfTtfLl9jPWZ1bmN0aW9uIGt3YihhLGIpe3JldHVybiBfdmIoYSx0aGlzLmEuYy5sZW5ndGgpLE5rYih0aGlzLmEsYSxiKX07Xy5nYz1mdW5jdGlvbiBsd2IoKXtyZXR1cm4gdGhpcy5hLmMubGVuZ3RofTtfLmFkPWZ1bmN0aW9uIG13YihhKXtPa2IodGhpcy5hLGEpfTtfLmJkPWZ1bmN0aW9uIG53YihhLGIpe3JldHVybiBuZXcgSmliKHRoaXMuYSxhLGIpfTtfLlBjPWZ1bmN0aW9uIG93Yigpe3JldHVybiBQa2IodGhpcy5hKX07Xy5RYz1mdW5jdGlvbiBwd2IoYSl7cmV0dXJuIFFrYih0aGlzLmEsYSl9O18uSWI9ZnVuY3Rpb24gcXdiKCl7cmV0dXJuIEZlKHRoaXMuYSl9O3ZhciBsTD1tZGIoYmllLCdWZWN0b3InLDU4MCk7YmNiKDgwOSw1ODAscGtlLHR3Yik7dmFyIF9LPW1kYihiaWUsJ1N0YWNrJyw4MDkpO2JjYigyMDYsMSx7MjA2OjF9LHh3Yik7Xy5JYj1mdW5jdGlvbiB5d2IoKXtyZXR1cm4gd3diKHRoaXMpfTt2YXIgYUw9bWRiKGJpZSwnU3RyaW5nSm9pbmVyJywyMDYpO2JjYig1NDQsMTk5Mix7MzoxLDgzOjEsMTcxOjEsMTYxOjF9LFB3YixRd2IpO18uJGI9ZnVuY3Rpb24gUndiKCl7endiKHRoaXMpfTtfLnZjPWZ1bmN0aW9uIFN3Yigpe3JldHVybiBuZXcgY3hiKHRoaXMpfTtfLnpjPWZ1bmN0aW9uIFR3YihhLGIpe3JldHVybiBJd2IodGhpcyxhLGIpfTtfLkJjPWZ1bmN0aW9uIFV3YihhKXtyZXR1cm4gSndiKHRoaXMsYSl9O18uZ2M9ZnVuY3Rpb24gVndiKCl7cmV0dXJuIHRoaXMuY307Xy5jPTA7dmFyIGpMPW1kYihiaWUsJ1RyZWVNYXAnLDU0NCk7YmNiKDM5MCwxLGFpZSxZd2IpO18uTmI9ZnVuY3Rpb24gJHdiKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIGF4Yigpe3JldHVybiBXd2IodGhpcyl9O18uT2I9ZnVuY3Rpb24gX3diKCl7cmV0dXJuIHNpYih0aGlzLmEpfTtfLlFiPWZ1bmN0aW9uIGJ4Yigpe1h3Yih0aGlzKX07dmFyIGJMPW1kYihiaWUsJ1RyZWVNYXAvRW50cnlJdGVyYXRvcicsMzkwKTtiY2IoNDM1LDczOSxmaWUsY3hiKTtfLiRiPWZ1bmN0aW9uIGR4Yigpe3p3Yih0aGlzLmEpfTt2YXIgY0w9bWRiKGJpZSwnVHJlZU1hcC9FbnRyeVNldCcsNDM1KTtiY2IoNDM2LDM4Myx7NDg0OjEsMzgzOjEsNDI6MSw0MzY6MX0sZXhiKTtfLmI9ZmFsc2U7dmFyIGRMPW1kYihiaWUsJ1RyZWVNYXAvTm9kZScsNDM2KTtiY2IoNjIxLDEse30sZnhiKTtfLkliPWZ1bmN0aW9uIGd4Yigpe3JldHVybiAnU3RhdGU6IG12PScrdGhpcy5jKycgdmFsdWU9Jyt0aGlzLmQrJyBkb25lPScrdGhpcy5hKycgZm91bmQ9Jyt0aGlzLmJ9O18uYT1mYWxzZTtfLmI9ZmFsc2U7Xy5jPWZhbHNlO3ZhciBlTD1tZGIoYmllLCdUcmVlTWFwL1N0YXRlJyw2MjEpO2JjYigyOTcsMjIscWtlLG14Yik7Xy5BZT1mdW5jdGlvbiBueGIoKXtyZXR1cm4gZmFsc2V9O18uQmU9ZnVuY3Rpb24gb3hiKCl7cmV0dXJuIGZhbHNlfTt2YXIgaHhiLGl4YixqeGIsa3hiO3ZhciBpTD1uZGIoYmllLCdUcmVlTWFwL1N1Yk1hcFR5cGUnLDI5NyxDSSxxeGIscHhiKTtiY2IoMTExMiwyOTcscWtlLHJ4Yik7Xy5CZT1mdW5jdGlvbiBzeGIoKXtyZXR1cm4gdHJ1ZX07dmFyIGZMPW5kYihiaWUsJ1RyZWVNYXAvU3ViTWFwVHlwZS8xJywxMTEyLGlMLG51bGwsbnVsbCk7YmNiKDExMTMsMjk3LHFrZSx0eGIpO18uQWU9ZnVuY3Rpb24gdXhiKCl7cmV0dXJuIHRydWV9O18uQmU9ZnVuY3Rpb24gdnhiKCl7cmV0dXJuIHRydWV9O3ZhciBnTD1uZGIoYmllLCdUcmVlTWFwL1N1Yk1hcFR5cGUvMicsMTExMyxpTCxudWxsLG51bGwpO2JjYigxMTE0LDI5Nyxxa2Usd3hiKTtfLkFlPWZ1bmN0aW9uIHh4Yigpe3JldHVybiB0cnVlfTt2YXIgaEw9bmRiKGJpZSwnVHJlZU1hcC9TdWJNYXBUeXBlLzMnLDExMTQsaUwsbnVsbCxudWxsKTt2YXIgeXhiO2JjYigyMDgsZWllLHszOjEsMjA6MSwyODoxLDE0OjEsMjcxOjEsMjE6MSw4NDoxLDIwODoxfSxHeGIsSHhiKTtfLk5jPWZ1bmN0aW9uIE94Yigpe3JldHVybiBuZXcgUnViKHRoaXMpfTtfLkZjPWZ1bmN0aW9uIEl4YihhKXtyZXR1cm4gQXhiKHRoaXMsYSl9O18uJGI9ZnVuY3Rpb24gSnhiKCl7endiKHRoaXMuYSl9O18uSGM9ZnVuY3Rpb24gS3hiKGEpe3JldHVybiB1amIodGhpcy5hLGEpfTtfLktjPWZ1bmN0aW9uIEx4Yigpe3ZhciBhO3JldHVybiBhPW5ldyBZd2IoKG5ldyBjeGIoKG5ldyBHamIodGhpcy5hKSkuYSkpLmIpLG5ldyBOamIoYSl9O18uTWM9ZnVuY3Rpb24gTXhiKGEpe3JldHVybiBGeGIodGhpcyxhKX07Xy5nYz1mdW5jdGlvbiBOeGIoKXtyZXR1cm4gdGhpcy5hLmN9O3ZhciBrTD1tZGIoYmllLCdUcmVlU2V0JywyMDgpO2JjYig5NjYsMSx7fSxSeGIpO18uQ2U9ZnVuY3Rpb24gU3hiKGEsYil7cmV0dXJuIFB4Yih0aGlzLmEsYSxiKX07dmFyIG1MPW1kYihya2UsJ0JpbmFyeU9wZXJhdG9yL2xhbWJkYSQwJFR5cGUnLDk2Nik7YmNiKDk2NywxLHt9LFR4Yik7Xy5DZT1mdW5jdGlvbiBVeGIoYSxiKXtyZXR1cm4gUXhiKHRoaXMuYSxhLGIpfTt2YXIgbkw9bWRiKHJrZSwnQmluYXJ5T3BlcmF0b3IvbGFtYmRhJDEkVHlwZScsOTY3KTtiY2IoODQ2LDEse30sVnhiKTtfLktiPWZ1bmN0aW9uIFd4YihhKXtyZXR1cm4gYX07dmFyIG9MPW1kYihya2UsJ0Z1bmN0aW9uL2xhbWJkYSQwJFR5cGUnLDg0Nik7YmNiKDQzMSwxLE9pZSxYeGIpO18uTWI9ZnVuY3Rpb24gWXhiKGEpe3JldHVybiAhdGhpcy5hLk1iKGEpfTt2YXIgcEw9bWRiKHJrZSwnUHJlZGljYXRlL2xhbWJkYSQyJFR5cGUnLDQzMSk7YmNiKDU3MiwxLHs1NzI6MX0pO3ZhciBxTD1tZGIoc2tlLCdIYW5kbGVyJyw1NzIpO2JjYigyMDA3LDEsUWhlKTtfLm5lPWZ1bmN0aW9uIF94Yigpe3JldHVybiAnRFVNTVknfTtfLkliPWZ1bmN0aW9uIGF5Yigpe3JldHVybiB0aGlzLm5lKCl9O3ZhciBaeGI7dmFyIHNMPW1kYihza2UsJ0xldmVsJywyMDA3KTtiY2IoMTYyMSwyMDA3LFFoZSxieWIpO18ubmU9ZnVuY3Rpb24gY3liKCl7cmV0dXJuICdJTkZPJ307dmFyIHJMPW1kYihza2UsJ0xldmVsL0xldmVsSW5mbycsMTYyMSk7YmNiKDE2NDAsMSx7fSxneWIpO3ZhciBkeWI7dmFyIHRMPW1kYihza2UsJ0xvZ01hbmFnZXInLDE2NDApO2JjYigxNzgwLDEsUWhlLGl5Yik7Xy5iPW51bGw7dmFyIHVMPW1kYihza2UsJ0xvZ1JlY29yZCcsMTc4MCk7YmNiKDUxMiwxLHs1MTI6MX0sd3liKTtfLmU9ZmFsc2U7dmFyIGp5Yj1mYWxzZSxreWI9ZmFsc2UsbHliPWZhbHNlLG15Yj1mYWxzZSxueWI9ZmFsc2U7dmFyIHZMPW1kYihza2UsJ0xvZ2dlcicsNTEyKTtiY2IoODE5LDU3Mix7NTcyOjF9LHp5Yik7dmFyIHdMPW1kYihza2UsJ1NpbXBsZUNvbnNvbGVMb2dIYW5kbGVyJyw4MTkpO2JjYigxMzIsMjIsezM6MSwzNToxLDIyOjEsMTMyOjF9LEd5Yik7dmFyIEN5YixEeWIsRXliO3ZhciB4TD1uZGIodmtlLCdDb2xsZWN0b3IvQ2hhcmFjdGVyaXN0aWNzJywxMzIsQ0ksSXliLEh5Yik7dmFyIEp5YjtiY2IoNzQ0LDEse30sTHliKTt2YXIgeUw9bWRiKHZrZSwnQ29sbGVjdG9ySW1wbCcsNzQ0KTtiY2IoMTA2MCwxLHt9LFp5Yik7Xy5DZT1mdW5jdGlvbiAkeWIoYSxiKXtyZXR1cm4gdndiKEJEKGEsMjA2KSxCRChiLDIwNikpfTt2YXIgekw9bWRiKHZrZSwnQ29sbGVjdG9ycy8xMG1ldGhvZHJlZiRtZXJnZSRUeXBlJywxMDYwKTtiY2IoMTA2MSwxLHt9LF95Yik7Xy5LYj1mdW5jdGlvbiBhemIoYSl7cmV0dXJuIHd3YihCRChhLDIwNikpfTt2YXIgQUw9bWRiKHZrZSwnQ29sbGVjdG9ycy8xMW1ldGhvZHJlZiR0b1N0cmluZyRUeXBlJywxMDYxKTtiY2IoMTA2MiwxLHt9LGJ6Yik7Xy5LYj1mdW5jdGlvbiBjemIoYSl7cmV0dXJuIEJjYigpLF9QYihhKT90cnVlOmZhbHNlfTt2YXIgQkw9bWRiKHZrZSwnQ29sbGVjdG9ycy8xMm1ldGhvZHJlZiR0ZXN0JFR5cGUnLDEwNjIpO2JjYigyNTEsMSx7fSxkemIpO18uT2Q9ZnVuY3Rpb24gZXpiKGEsYil7QkQoYSwxNCkuRmMoYil9O3ZhciBDTD1tZGIodmtlLCdDb2xsZWN0b3JzLzIwbWV0aG9kcmVmJGFkZCRUeXBlJywyNTEpO2JjYigyNTMsMSx7fSxmemIpO18uRWU9ZnVuY3Rpb24gZ3piKCl7cmV0dXJuIG5ldyBSa2J9O3ZhciBETD1tZGIodmtlLCdDb2xsZWN0b3JzLzIxbWV0aG9kcmVmJGN0b3IkVHlwZScsMjUzKTtiY2IoMzQ2LDEse30saHpiKTtfLkVlPWZ1bmN0aW9uIGl6Yigpe3JldHVybiBuZXcgVHFifTt2YXIgRUw9bWRiKHZrZSwnQ29sbGVjdG9ycy8yM21ldGhvZHJlZiRjdG9yJFR5cGUnLDM0Nik7YmNiKDM0NywxLHt9LGp6Yik7Xy5PZD1mdW5jdGlvbiBremIoYSxiKXtRcWIoQkQoYSw1MyksYil9O3ZhciBGTD1tZGIodmtlLCdDb2xsZWN0b3JzLzI0bWV0aG9kcmVmJGFkZCRUeXBlJywzNDcpO2JjYigxMDU1LDEse30sbHpiKTtfLkNlPWZ1bmN0aW9uIG16YihhLGIpe3JldHVybiBNeWIoQkQoYSwxNSksQkQoYiwxNCkpfTt2YXIgR0w9bWRiKHZrZSwnQ29sbGVjdG9ycy80bWV0aG9kcmVmJGFkZEFsbCRUeXBlJywxMDU1KTtiY2IoMTA1OSwxLHt9LG56Yik7Xy5PZD1mdW5jdGlvbiBvemIoYSxiKXt1d2IoQkQoYSwyMDYpLEJEKGIsNDc1KSl9O3ZhciBITD1tZGIodmtlLCdDb2xsZWN0b3JzLzltZXRob2RyZWYkYWRkJFR5cGUnLDEwNTkpO2JjYigxMDU4LDEse30scHpiKTtfLkVlPWZ1bmN0aW9uIHF6Yigpe3JldHVybiBuZXcgeHdiKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX07dmFyIElMPW1kYih2a2UsJ0NvbGxlY3RvcnMvbGFtYmRhJDE1JFR5cGUnLDEwNTgpO2JjYigxMDYzLDEse30scnpiKTtfLkVlPWZ1bmN0aW9uIHN6Yigpe3ZhciBhO3JldHVybiBhPW5ldyAkcmIsWHJiKGEsKEJjYigpLGZhbHNlKSxuZXcgUmtiKSxYcmIoYSx0cnVlLG5ldyBSa2IpLGF9O3ZhciBKTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQyMiRUeXBlJywxMDYzKTtiY2IoMTA2NCwxLHt9LHR6Yik7Xy5FZT1mdW5jdGlvbiB1emIoKXtyZXR1cm4gT0MoR0MoU0ksMSksVWhlLDEsNSxbdGhpcy5hXSl9O3ZhciBLTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQyNSRUeXBlJywxMDY0KTtiY2IoMTA2NSwxLHt9LHZ6Yik7Xy5PZD1mdW5jdGlvbiB3emIoYSxiKXtPeWIodGhpcy5hLENEKGEpKX07dmFyIExMPW1kYih2a2UsJ0NvbGxlY3RvcnMvbGFtYmRhJDI2JFR5cGUnLDEwNjUpO2JjYigxMDY2LDEse30seHpiKTtfLkNlPWZ1bmN0aW9uIHl6YihhLGIpe3JldHVybiBQeWIodGhpcy5hLENEKGEpLENEKGIpKX07dmFyIE1MPW1kYih2a2UsJ0NvbGxlY3RvcnMvbGFtYmRhJDI3JFR5cGUnLDEwNjYpO2JjYigxMDY3LDEse30senpiKTtfLktiPWZ1bmN0aW9uIEF6YihhKXtyZXR1cm4gQ0QoYSlbMF19O3ZhciBOTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQyOCRUeXBlJywxMDY3KTtiY2IoNzEzLDEse30sQ3piKTtfLkNlPWZ1bmN0aW9uIER6YihhLGIpe3JldHVybiBCemIoYSxiKX07dmFyIE9MPW1kYih2a2UsJ0NvbGxlY3RvcnMvbGFtYmRhJDQkVHlwZScsNzEzKTtiY2IoMjUyLDEse30sRXpiKTtfLkNlPWZ1bmN0aW9uIEZ6YihhLGIpe3JldHVybiBSeWIoQkQoYSwxNCksQkQoYiwxNCkpfTt2YXIgUEw9bWRiKHZrZSwnQ29sbGVjdG9ycy9sYW1iZGEkNDIkVHlwZScsMjUyKTtiY2IoMzQ4LDEse30sR3piKTtfLkNlPWZ1bmN0aW9uIEh6YihhLGIpe3JldHVybiBTeWIoQkQoYSw1MyksQkQoYiw1MykpfTt2YXIgUUw9bWRiKHZrZSwnQ29sbGVjdG9ycy9sYW1iZGEkNTAkVHlwZScsMzQ4KTtiY2IoMzQ5LDEse30sSXpiKTtfLktiPWZ1bmN0aW9uIEp6YihhKXtyZXR1cm4gQkQoYSw1Myl9O3ZhciBSTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQ1MSRUeXBlJywzNDkpO2JjYigxMDU0LDEse30sS3piKTtfLk9kPWZ1bmN0aW9uIEx6YihhLGIpe1R5Yih0aGlzLmEsQkQoYSw4MyksYil9O3ZhciBTTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQ3JFR5cGUnLDEwNTQpO2JjYigxMDU2LDEse30sTXpiKTtfLkNlPWZ1bmN0aW9uIE56YihhLGIpe3JldHVybiBWeWIoQkQoYSw4MyksQkQoYiw4MyksbmV3IGx6Yil9O3ZhciBUTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQ4JFR5cGUnLDEwNTYpO2JjYigxMDU3LDEse30sT3piKTtfLktiPWZ1bmN0aW9uIFB6YihhKXtyZXR1cm4gVXliKHRoaXMuYSxCRChhLDgzKSl9O3ZhciBVTD1tZGIodmtlLCdDb2xsZWN0b3JzL2xhbWJkYSQ5JFR5cGUnLDEwNTcpO2JjYig1MzksMSx7fSk7Xy5IZT1mdW5jdGlvbiBXemIoKXtRemIodGhpcyl9O18uZD1mYWxzZTt2YXIgek09bWRiKHZrZSwnVGVybWluYXRhYmxlU3RyZWFtJyw1MzkpO2JjYig4MTIsNTM5LHdrZSxiQWIpO18uSGU9ZnVuY3Rpb24gY0FiKCl7UXpiKHRoaXMpfTt2YXIgWkw9bWRiKHZrZSwnRG91YmxlU3RyZWFtSW1wbCcsODEyKTtiY2IoMTc4NCw3MjEscGllLGZBYik7Xy55ZT1mdW5jdGlvbiBoQWIoYSl7cmV0dXJuIGVBYih0aGlzLEJEKGEsMTgyKSl9O18uYT1udWxsO3ZhciBXTD1tZGIodmtlLCdEb3VibGVTdHJlYW1JbXBsLzInLDE3ODQpO2JjYigxNzg1LDEsZWtlLGlBYik7Xy53ZT1mdW5jdGlvbiBqQWIoYSl7Z0FiKHRoaXMuYSxhKX07dmFyIFZMPW1kYih2a2UsJ0RvdWJsZVN0cmVhbUltcGwvMi9sYW1iZGEkMCRUeXBlJywxNzg1KTtiY2IoMTc4MiwxLGVrZSxrQWIpO18ud2U9ZnVuY3Rpb24gbEFiKGEpe2RBYih0aGlzLmEsYSl9O3ZhciBYTD1tZGIodmtlLCdEb3VibGVTdHJlYW1JbXBsL2xhbWJkYSQwJFR5cGUnLDE3ODIpO2JjYigxNzgzLDEsZWtlLG1BYik7Xy53ZT1mdW5jdGlvbiBuQWIoYSl7RXBiKHRoaXMuYSxhKX07dmFyIFlMPW1kYih2a2UsJ0RvdWJsZVN0cmVhbUltcGwvbGFtYmRhJDIkVHlwZScsMTc4Myk7YmNiKDEzNTgsNzIwLHBpZSxyQWIpO18ueWU9ZnVuY3Rpb24gc0FiKGEpe3JldHVybiBxQWIodGhpcyxCRChhLDE5NikpfTtfLmE9MDtfLmI9MDtfLmM9MDt2YXIgJEw9bWRiKHZrZSwnSW50U3RyZWFtLzUnLDEzNTgpO2JjYig3ODcsNTM5LHdrZSx2QWIpO18uSGU9ZnVuY3Rpb24gd0FiKCl7UXpiKHRoaXMpfTtfLkllPWZ1bmN0aW9uIHhBYigpe3JldHVybiBUemIodGhpcyksdGhpcy5hfTt2YXIgYk09bWRiKHZrZSwnSW50U3RyZWFtSW1wbCcsNzg3KTtiY2IoNzg4LDUzOSx3a2UseUFiKTtfLkhlPWZ1bmN0aW9uIHpBYigpe1F6Yih0aGlzKX07Xy5JZT1mdW5jdGlvbiBBQWIoKXtyZXR1cm4gVHpiKHRoaXMpLEl2YigpLEh2Yn07dmFyIF9MPW1kYih2a2UsJ0ludFN0cmVhbUltcGwvRW1wdHknLDc4OCk7YmNiKDE0NjMsMSxzaWUsQkFiKTtfLnVkPWZ1bmN0aW9uIENBYihhKXtjcmIodGhpcy5hLGEpfTt2YXIgYU09bWRiKHZrZSwnSW50U3RyZWFtSW1wbC9sYW1iZGEkNCRUeXBlJywxNDYzKTt2YXIgeE09b2RiKHZrZSwnU3RyZWFtJyk7YmNiKDMwLDUzOSx7NTI1OjEsNjcwOjEsODMzOjF9LFlBYik7Xy5IZT1mdW5jdGlvbiBaQWIoKXtRemIodGhpcyl9O3ZhciBEQWI7dmFyIHdNPW1kYih2a2UsJ1N0cmVhbUltcGwnLDMwKTtiY2IoODQ1LDEse30sYkJiKTtfLmxkPWZ1bmN0aW9uIGNCYihhKXtyZXR1cm4gYUJiKGEpfTt2YXIgY009bWRiKHZrZSwnU3RyZWFtSW1wbC8wbWV0aG9kcmVmJGxhbWJkYSQyJFR5cGUnLDg0NSk7YmNiKDEwODQsNTQwLHBpZSxmQmIpO18uc2Q9ZnVuY3Rpb24gZ0JiKGEpe3doaWxlKGRCYih0aGlzKSl7aWYodGhpcy5hLnNkKGEpKXtyZXR1cm4gdHJ1ZX1lbHNle1F6Yih0aGlzLmIpO3RoaXMuYj1udWxsO3RoaXMuYT1udWxsfX1yZXR1cm4gZmFsc2V9O3ZhciBlTT1tZGIodmtlLCdTdHJlYW1JbXBsLzEnLDEwODQpO2JjYigxMDg1LDEscWllLGhCYik7Xy50ZD1mdW5jdGlvbiBpQmIoYSl7ZUJiKHRoaXMuYSxCRChhLDgzMykpfTt2YXIgZE09bWRiKHZrZSwnU3RyZWFtSW1wbC8xL2xhbWJkYSQwJFR5cGUnLDEwODUpO2JjYigxMDg2LDEsT2llLGpCYik7Xy5NYj1mdW5jdGlvbiBrQmIoYSl7cmV0dXJuIFFxYih0aGlzLmEsYSl9O3ZhciBmTT1tZGIodmtlLCdTdHJlYW1JbXBsLzFtZXRob2RyZWYkYWRkJFR5cGUnLDEwODYpO2JjYigxMDg3LDU0MCxwaWUsbEJiKTtfLnNkPWZ1bmN0aW9uIG1CYihhKXt2YXIgYjtpZighdGhpcy5hKXtiPW5ldyBSa2I7dGhpcy5iLmEuTmIobmV3IG5CYihiKSk7bW1iKCk7T2tiKGIsdGhpcy5jKTt0aGlzLmE9bmV3IEt1YihiLDE2KX1yZXR1cm4gSnViKHRoaXMuYSxhKX07Xy5hPW51bGw7dmFyIGhNPW1kYih2a2UsJ1N0cmVhbUltcGwvNScsMTA4Nyk7YmNiKDEwODgsMSxxaWUsbkJiKTtfLnRkPWZ1bmN0aW9uIG9CYihhKXtFa2IodGhpcy5hLGEpfTt2YXIgZ009bWRiKHZrZSwnU3RyZWFtSW1wbC81LzJtZXRob2RyZWYkYWRkJFR5cGUnLDEwODgpO2JjYig3MjIsNTQwLHBpZSxxQmIpO18uc2Q9ZnVuY3Rpb24gckJiKGEpe3RoaXMuYj1mYWxzZTt3aGlsZSghdGhpcy5iJiZ0aGlzLmMuc2QobmV3IHNCYih0aGlzLGEpKSk7cmV0dXJuIHRoaXMuYn07Xy5iPWZhbHNlO3ZhciBqTT1tZGIodmtlLCdTdHJlYW1JbXBsL0ZpbHRlclNwbGl0ZXJhdG9yJyw3MjIpO2JjYigxMDc5LDEscWllLHNCYik7Xy50ZD1mdW5jdGlvbiB0QmIoYSl7cEJiKHRoaXMuYSx0aGlzLmIsYSl9O3ZhciBpTT1tZGIodmtlLCdTdHJlYW1JbXBsL0ZpbHRlclNwbGl0ZXJhdG9yL2xhbWJkYSQwJFR5cGUnLDEwNzkpO2JjYigxMDc1LDcyMSxwaWUsd0JiKTtfLnllPWZ1bmN0aW9uIHhCYihhKXtyZXR1cm4gdkJiKHRoaXMsQkQoYSwxODIpKX07dmFyIGxNPW1kYih2a2UsJ1N0cmVhbUltcGwvTWFwVG9Eb3VibGVTcGxpdGVyYXRvcicsMTA3NSk7YmNiKDEwNzgsMSxxaWUseUJiKTtfLnRkPWZ1bmN0aW9uIHpCYihhKXt1QmIodGhpcy5hLHRoaXMuYixhKX07dmFyIGtNPW1kYih2a2UsJ1N0cmVhbUltcGwvTWFwVG9Eb3VibGVTcGxpdGVyYXRvci9sYW1iZGEkMCRUeXBlJywxMDc4KTtiY2IoMTA3NCw3MjAscGllLENCYik7Xy55ZT1mdW5jdGlvbiBEQmIoYSl7cmV0dXJuIEJCYih0aGlzLEJEKGEsMTk2KSl9O3ZhciBuTT1tZGIodmtlLCdTdHJlYW1JbXBsL01hcFRvSW50U3BsaXRlcmF0b3InLDEwNzQpO2JjYigxMDc3LDEscWllLEVCYik7Xy50ZD1mdW5jdGlvbiBGQmIoYSl7QUJiKHRoaXMuYSx0aGlzLmIsYSl9O3ZhciBtTT1tZGIodmtlLCdTdHJlYW1JbXBsL01hcFRvSW50U3BsaXRlcmF0b3IvbGFtYmRhJDAkVHlwZScsMTA3Nyk7YmNiKDcxOSw1NDAscGllLElCYik7Xy5zZD1mdW5jdGlvbiBKQmIoYSl7cmV0dXJuIEhCYih0aGlzLGEpfTt2YXIgcE09bWRiKHZrZSwnU3RyZWFtSW1wbC9NYXBUb09ialNwbGl0ZXJhdG9yJyw3MTkpO2JjYigxMDc2LDEscWllLEtCYik7Xy50ZD1mdW5jdGlvbiBMQmIoYSl7R0JiKHRoaXMuYSx0aGlzLmIsYSl9O3ZhciBvTT1tZGIodmtlLCdTdHJlYW1JbXBsL01hcFRvT2JqU3BsaXRlcmF0b3IvbGFtYmRhJDAkVHlwZScsMTA3Nik7YmNiKDYxOCwxLHFpZSxOQmIpO18udGQ9ZnVuY3Rpb24gT0JiKGEpe01CYih0aGlzLGEpfTt2YXIgcU09bWRiKHZrZSwnU3RyZWFtSW1wbC9WYWx1ZUNvbnN1bWVyJyw2MTgpO2JjYigxMDgwLDEscWllLFBCYik7Xy50ZD1mdW5jdGlvbiBRQmIoYSl7RUFiKCl9O3ZhciByTT1tZGIodmtlLCdTdHJlYW1JbXBsL2xhbWJkYSQwJFR5cGUnLDEwODApO2JjYigxMDgxLDEscWllLFJCYik7Xy50ZD1mdW5jdGlvbiBTQmIoYSl7RUFiKCl9O3ZhciBzTT1tZGIodmtlLCdTdHJlYW1JbXBsL2xhbWJkYSQxJFR5cGUnLDEwODEpO2JjYigxMDgyLDEse30sVEJiKTtfLkNlPWZ1bmN0aW9uIFVCYihhLGIpe3JldHVybiAkQWIodGhpcy5hLGEsYil9O3ZhciB1TT1tZGIodmtlLCdTdHJlYW1JbXBsL2xhbWJkYSQ0JFR5cGUnLDEwODIpO2JjYigxMDgzLDEscWllLFZCYik7Xy50ZD1mdW5jdGlvbiBXQmIoYSl7X0FiKHRoaXMuYix0aGlzLmEsYSl9O3ZhciB2TT1tZGIodmtlLCdTdHJlYW1JbXBsL2xhbWJkYSQ1JFR5cGUnLDEwODMpO2JjYigxMDg5LDEscWllLFhCYik7Xy50ZD1mdW5jdGlvbiBZQmIoYSl7WHpiKHRoaXMuYSxCRChhLDM2NSkpfTt2YXIgeU09bWRiKHZrZSwnVGVybWluYXRhYmxlU3RyZWFtL2xhbWJkYSQwJFR5cGUnLDEwODkpO2JjYigyMDQxLDEse30pO2JjYigxOTE0LDEse30saUNiKTt2YXIgQU09bWRiKCdqYXZhZW11bC5pbnRlcm5hbCcsJ0NvbnNvbGVMb2dnZXInLDE5MTQpO2JjYigyMDM4LDEse30pO3ZhciBFQ2I9MDt2YXIgR0NiLEhDYj0wLElDYjtiY2IoMTc2OCwxLHFpZSxPQ2IpO18udGQ9ZnVuY3Rpb24gUENiKGEpe0JEKGEsMzA4KX07dmFyIEJNPW1kYihDa2UsJ0Jvd3llcldhdHNvblRyaWFuZ3VsYXRpb24vbGFtYmRhJDAkVHlwZScsMTc2OCk7YmNiKDE3NjksMSxxaWUsUUNiKTtfLnRkPWZ1bmN0aW9uIFJDYihhKXt5ZSh0aGlzLmEsQkQoYSwzMDgpLmUpfTt2YXIgQ009bWRiKENrZSwnQm93eWVyV2F0c29uVHJpYW5ndWxhdGlvbi9sYW1iZGEkMSRUeXBlJywxNzY5KTtiY2IoMTc3MCwxLHFpZSxTQ2IpO18udGQ9ZnVuY3Rpb24gVENiKGEpe0JEKGEsMTY4KX07dmFyIERNPW1kYihDa2UsJ0Jvd3llcldhdHNvblRyaWFuZ3VsYXRpb24vbGFtYmRhJDIkVHlwZScsMTc3MCk7YmNiKDE3NjUsMSxEa2UsV0NiKTtfLnVlPWZ1bmN0aW9uIFhDYihhLGIpe3JldHVybiBWQ2IodGhpcy5hLEJEKGEsMTY4KSxCRChiLDE2OCkpfTtfLkZiPWZ1bmN0aW9uIFlDYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gWkNiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBFTT1tZGIoQ2tlLCdOYWl2ZU1pblNUL2xhbWJkYSQwJFR5cGUnLDE3NjUpO2JjYig0OTksMSx7fSxfQ2IpO3ZhciBGTT1tZGIoQ2tlLCdOb2RlTWljcm9MYXlvdXQnLDQ5OSk7YmNiKDE2OCwxLHsxNjg6MX0sYURiKTtfLkZiPWZ1bmN0aW9uIGJEYihhKXt2YXIgYjtpZihKRChhLDE2OCkpe2I9QkQoYSwxNjgpO3JldHVybiB3dGIodGhpcy5hLGIuYSkmJnd0Yih0aGlzLmIsYi5iKXx8d3RiKHRoaXMuYSxiLmIpJiZ3dGIodGhpcy5iLGIuYSl9ZWxzZXtyZXR1cm4gZmFsc2V9fTtfLkhiPWZ1bmN0aW9uIGNEYigpe3JldHVybiB4dGIodGhpcy5hKSt4dGIodGhpcy5iKX07dmFyIEdNPW1kYihDa2UsJ1RFZGdlJywxNjgpO2JjYigzMDgsMSx7MzA4OjF9LGVEYik7Xy5GYj1mdW5jdGlvbiBmRGIoYSl7dmFyIGI7aWYoSkQoYSwzMDgpKXtiPUJEKGEsMzA4KTtyZXR1cm4gZERiKHRoaXMsYi5hKSYmZERiKHRoaXMsYi5iKSYmZERiKHRoaXMsYi5jKX1lbHNle3JldHVybiBmYWxzZX19O18uSGI9ZnVuY3Rpb24gZ0RiKCl7cmV0dXJuIHh0Yih0aGlzLmEpK3h0Yih0aGlzLmIpK3h0Yih0aGlzLmMpfTt2YXIgSE09bWRiKENrZSwnVFRyaWFuZ2xlJywzMDgpO2JjYigyMjEsMSx7MjIxOjF9LGhEYik7dmFyIElNPW1kYihDa2UsJ1RyZWUnLDIyMSk7YmNiKDEyNTQsMSx7fSxqRGIpO3ZhciBLTT1tZGIoRWtlLCdTY2FubGluZScsMTI1NCk7dmFyIEpNPW9kYihFa2UsRmtlKTtiY2IoMTY5MiwxLHt9LG1EYik7dmFyIExNPW1kYihHa2UsJ0NHcmFwaCcsMTY5Mik7YmNiKDMwNywxLHszMDc6MX0sb0RiKTtfLmI9MDtfLmM9MDtfLmQ9MDtfLmc9MDtfLmk9MDtfLms9UWplO3ZhciBOTT1tZGIoR2tlLCdDR3JvdXAnLDMwNyk7YmNiKDgxNSwxLHt9LHNEYik7dmFyIE1NPW1kYihHa2UsJ0NHcm91cC9DR3JvdXBCdWlsZGVyJyw4MTUpO2JjYig1NywxLHs1NzoxfSx0RGIpO18uSWI9ZnVuY3Rpb24gdURiKCl7dmFyIGE7aWYodGhpcy5qKXtyZXR1cm4gR0QodGhpcy5qLktiKHRoaXMpKX1yZXR1cm4gZmRiKFBNKSxQTS5vKydAJysoYT1GQ2IodGhpcyk+Pj4wLGEudG9TdHJpbmcoMTYpKX07Xy5mPTA7Xy5pPVFqZTt2YXIgUE09bWRiKEdrZSwnQ05vZGUnLDU3KTtiY2IoODE0LDEse30sekRiKTt2YXIgT009bWRiKEdrZSwnQ05vZGUvQ05vZGVCdWlsZGVyJyw4MTQpO3ZhciBFRGI7YmNiKDE1MjUsMSx7fSxHRGIpO18uT2U9ZnVuY3Rpb24gSERiKGEsYil7cmV0dXJuIDB9O18uUGU9ZnVuY3Rpb24gSURiKGEsYil7cmV0dXJuIDB9O3ZhciBRTT1tZGIoR2tlLElrZSwxNTI1KTtiY2IoMTc5MCwxLHt9LEpEYik7Xy5MZT1mdW5jdGlvbiBLRGIoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2o9UGplO2ZvcihkPW5ldyBvbGIoYS5hLmIpO2QuYTxkLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihkKSw1Nyk7aj0kd25kLk1hdGgubWluKGosYi5hLmouZC5jK2IuYi5hKX1uPW5ldyBQc2I7Zm9yKGc9bmV3IG9sYihhLmEuYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDMwNyk7Zi5rPWo7Zi5nPT0wJiYoR3NiKG4sZixuLmMuYixuLmMpLHRydWUpfXdoaWxlKG4uYiE9MCl7Zj1CRChuLmI9PTA/bnVsbDooc0NiKG4uYiE9MCksTnNiKG4sbi5hLmEpKSwzMDcpO2U9Zi5qLmQuYztmb3IobT1mLmEuYS5lYygpLktjKCk7bS5PYigpOyl7az1CRChtLlBiKCksNTcpO3A9Zi5rK2suYi5hOyFVRGIoYSxmLGEuZCl8fGsuZC5jPHA/KGsuaT1wKTooay5pPWsuZC5jKX1lLT1mLmouaTtmLmIrPWU7YS5kPT0oZWFkKCksYmFkKXx8YS5kPT1fOWM/KGYuYys9ZSk6KGYuYy09ZSk7Zm9yKGw9Zi5hLmEuZWMoKS5LYygpO2wuT2IoKTspe2s9QkQobC5QYigpLDU3KTtmb3IoaT1rLmMuS2MoKTtpLk9iKCk7KXtoPUJEKGkuUGIoKSw1Nyk7ZmFkKGEuZCk/KG89YS5nLk9lKGssaCkpOihvPWEuZy5QZShrLGgpKTtoLmEuaz0kd25kLk1hdGgubWF4KGguYS5rLGsuaStrLmQuYitvLWguYi5hKTtWRGIoYSxoLGEuZCkmJihoLmEuaz0kd25kLk1hdGgubWF4KGguYS5rLGguZC5jLWguYi5hKSk7LS1oLmEuZztoLmEuZz09MCYmRHNiKG4saC5hKX19fWZvcihjPW5ldyBvbGIoYS5hLmIpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSw1Nyk7Yi5kLmM9Yi5pfX07dmFyIFJNPW1kYihHa2UsJ0xvbmdlc3RQYXRoQ29tcGFjdGlvbicsMTc5MCk7YmNiKDE2OTAsMSx7fSxjRWIpO18uZT1mYWxzZTt2YXIgTERiLE1EYixORGI7dmFyIFRNPW1kYihHa2UsTmtlLDE2OTApO2JjYigxNjkxLDEscWllLGRFYik7Xy50ZD1mdW5jdGlvbiBlRWIoYSl7V0RiKHRoaXMuYSxCRChhLDQ2KSl9O3ZhciBTTT1tZGIoR2tlLE9rZSwxNjkxKTtiY2IoMTc5MSwxLHt9LGZFYik7Xy5NZT1mdW5jdGlvbiBnRWIoYSl7dmFyIGIsYyxkLGUsZixnLGg7Zm9yKGM9bmV3IG9sYihhLmEuYik7Yy5hPGMuYy5jLmxlbmd0aDspe2I9QkQobWxiKGMpLDU3KTtiLmMuJGIoKX1mb3IoZT1uZXcgb2xiKGEuYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksNTcpO2ZvcihnPW5ldyBvbGIoYS5hLmIpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSw1Nyk7aWYoZD09Zil7Y29udGludWV9aWYoISFkLmEmJmQuYT09Zi5hKXtjb250aW51ZX1mYWQoYS5kKT8oaD1hLmcuUGUoZCxmKSk6KGg9YS5nLk9lKGQsZikpOyhmLmQuYz5kLmQuY3x8ZC5kLmM9PWYuZC5jJiZkLmQuYjxmLmQuYikmJkJEYihmLmQuZCtmLmQuYStoLGQuZC5kKSYmRERiKGYuZC5kLGQuZC5kK2QuZC5hK2gpJiZkLmMuRmMoZil9fX07dmFyIFVNPW1kYihHa2UsJ1F1YWRyYXRpY0NvbnN0cmFpbnRDYWxjdWxhdGlvbicsMTc5MSk7YmNiKDUyMiwxLHs1MjI6MX0sbEViKTtfLmE9ZmFsc2U7Xy5iPWZhbHNlO18uYz1mYWxzZTtfLmQ9ZmFsc2U7dmFyIFZNPW1kYihHa2UsUGtlLDUyMik7YmNiKDgwMywxLHt9LG9FYik7Xy5NZT1mdW5jdGlvbiBwRWIoYSl7dGhpcy5jPWE7bkViKHRoaXMsbmV3IEdFYil9O3ZhciBfTT1tZGIoR2tlLFFrZSw4MDMpO2JjYigxNzE4LDEsezY3OToxfSx1RWIpO18uS2U9ZnVuY3Rpb24gdkViKGEpe3JFYih0aGlzLEJEKGEsNDY0KSl9O3ZhciBYTT1tZGIoR2tlLFJrZSwxNzE4KTtiY2IoMTcxOSwxLERrZSx4RWIpO18udWU9ZnVuY3Rpb24geUViKGEsYil7cmV0dXJuIHdFYihCRChhLDU3KSxCRChiLDU3KSl9O18uRmI9ZnVuY3Rpb24gekViKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBBRWIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFdNPW1kYihHa2UsU2tlLDE3MTkpO2JjYig0NjQsMSx7NDY0OjF9LEJFYik7Xy5hPWZhbHNlO3ZhciBZTT1tZGIoR2tlLFRrZSw0NjQpO2JjYigxNzIwLDEsRGtlLENFYik7Xy51ZT1mdW5jdGlvbiBERWIoYSxiKXtyZXR1cm4gcUViKEJEKGEsNDY0KSxCRChiLDQ2NCkpfTtfLkZiPWZ1bmN0aW9uIEVFYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gRkViKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBaTT1tZGIoR2tlLFVrZSwxNzIwKTtiY2IoMTcyMSwxLFZrZSxHRWIpO18uTGI9ZnVuY3Rpb24gSEViKGEpe3JldHVybiBCRChhLDU3KSx0cnVlfTtfLkZiPWZ1bmN0aW9uIElFYihhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gSkViKGEpe3JldHVybiBCRChhLDU3KSx0cnVlfTt2YXIgJE09bWRiKEdrZSwnU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRvci9sYW1iZGEkMSRUeXBlJywxNzIxKTtiY2IoNDI4LDIyLHszOjEsMzU6MSwyMjoxLDQyODoxfSxORWIpO3ZhciBLRWIsTEViO3ZhciBhTj1uZGIoV2tlLCdIaWdoTGV2ZWxTb3J0aW5nQ3JpdGVyaW9uJyw0MjgsQ0ksUEViLE9FYik7dmFyIFFFYjtiY2IoNDI3LDIyLHszOjEsMzU6MSwyMjoxLDQyNzoxfSxWRWIpO3ZhciBTRWIsVEViO3ZhciBiTj1uZGIoV2tlLCdMb3dMZXZlbFNvcnRpbmdDcml0ZXJpb24nLDQyNyxDSSxYRWIsV0ViKTt2YXIgWUViO3ZhciBDMD1vZGIoWGtlLCdJTGF5b3V0TWV0YURhdGFQcm92aWRlcicpO2JjYig4NTMsMSxhbGUsZ0ZiKTtfLlFlPWZ1bmN0aW9uIGhGYihhKXt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxZa2UpLGJsZSksJ1BvbHlvbWlubyBUcmF2ZXJzYWwgU3RyYXRlZ3knKSwnVHJhdmVyc2FsIHN0cmF0ZWd5IGZvciB0cnlpbmcgZGlmZmVyZW50IGNhbmRpZGF0ZSBwb3NpdGlvbnMgZm9yIHBvbHlvbWlub2VzLicpLGVGYiksKF81YygpLFY1YykpLGROKSxwcWIoKE41YygpLEw1YykpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFprZSksYmxlKSwnUG9seW9taW5vIFNlY29uZGFyeSBTb3J0aW5nIENyaXRlcmlvbicpLCdQb3NzaWJsZSBzZWNvbmRhcnkgc29ydGluZyBjcml0ZXJpYSBmb3IgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgcG9seW9taW5vZXMuIFRoZXkgYXJlIHVzZWQgd2hlbiBwb2x5b21pbm9lcyBhcmUgZXF1YWwgYWNjb3JkaW5nIHRvIHRoZSBwcmltYXJ5IHNvcnRpbmcgY3JpdGVyaW9uIEhpZ2hMZXZlbFNvcnRpbmdDcml0ZXJpb24uJyksY0ZiKSxWNWMpLGJOKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yywka2UpLGJsZSksJ1BvbHlvbWlubyBQcmltYXJ5IFNvcnRpbmcgQ3JpdGVyaW9uJyksJ1Bvc3NpYmxlIHByaW1hcnkgc29ydGluZyBjcml0ZXJpYSBmb3IgdGhlIHByb2Nlc3Npbmcgb3JkZXIgb2YgcG9seW9taW5vZXMuJyksYUZiKSxWNWMpLGFOKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxfa2UpLGJsZSksJ0ZpbGwgUG9seW9taW5vZXMnKSwnVXNlIHRoZSBQcm9maWxlIEZpbGwgYWxnb3JpdGhtIHRvIGZpbGwgcG9seW9taW5vZXMgdG8gcHJldmVudCBzbWFsbCBwb2x5b21pbm9lcyBmcm9tIGJlaW5nIHBsYWNlZCBpbnNpZGUgb2YgYmlnIHBvbHlvbWlub2VzIHdpdGggbGFyZ2UgaG9sZXMuIE1pZ2h0IGluY3JlYXNlIHBhY2tpbmcgYXJlYS4nKSwoQmNiKCksdHJ1ZSkpLFQ1Yyksd0kpLHBxYihMNWMpKSkpfTt2YXIgJEViLF9FYixhRmIsYkZiLGNGYixkRmIsZUZiO3ZhciBjTj1tZGIoV2tlLCdQb2x5b21pbm9PcHRpb25zJyw4NTMpO2JjYigyNTAsMjIsezM6MSwzNToxLDIyOjEsMjUwOjF9LHNGYik7dmFyIGlGYixqRmIsa0ZiLGxGYixtRmIsbkZiLG9GYixwRmIscUZiO3ZhciBkTj1uZGIoV2tlLCdUcmF2ZXJzYWxTdHJhdGVneScsMjUwLENJLHVGYix0RmIpO3ZhciB2RmI7YmNiKDIxMywxLHsyMTM6MX0seUZiKTtfLkliPWZ1bmN0aW9uIHpGYigpe3JldHVybiAnTkVkZ2VbaWQ9Jyt0aGlzLmIrJyB3PScrdGhpcy5nKycgZD0nK3RoaXMuYSsnXSd9O18uYT0xO18uYj0wO18uYz0wO18uZj1mYWxzZTtfLmc9MDt2YXIgZk49bWRiKGNsZSwnTkVkZ2UnLDIxMyk7YmNiKDE3NiwxLHt9LEZGYik7dmFyIGVOPW1kYihjbGUsJ05FZGdlL05FZGdlQnVpbGRlcicsMTc2KTtiY2IoNjUzLDEse30sS0ZiKTt2YXIgZ049bWRiKGNsZSwnTkdyYXBoJyw2NTMpO2JjYigxMjEsMSx7MTIxOjF9LE1GYik7Xy5jPS0xO18uZD0wO18uZT0wO18uaT0tMTtfLmo9ZmFsc2U7dmFyIGpOPW1kYihjbGUsJ05Ob2RlJywxMjEpO2JjYig3OTUsMSxja2UsUEZiKTtfLkpjPWZ1bmN0aW9uIFhGYihhKXtyZWIodGhpcyxhKX07Xy5MYz1mdW5jdGlvbiBjR2IoKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIodGhpcywxNikpfTtfLmFkPWZ1bmN0aW9uIGhHYihhKXtrdGIodGhpcyxhKX07Xy5OYz1mdW5jdGlvbiBpR2IoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDE2KX07Xy5PYz1mdW5jdGlvbiBqR2IoKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIodGhpcywxNikpfTtfLlZjPWZ1bmN0aW9uIFFGYihhLGIpeysrdGhpcy5iO0RrYih0aGlzLmEsYSxiKX07Xy5GYz1mdW5jdGlvbiBSRmIoYSl7cmV0dXJuIE5GYih0aGlzLGEpfTtfLldjPWZ1bmN0aW9uIFNGYihhLGIpeysrdGhpcy5iO3JldHVybiBGa2IodGhpcy5hLGEsYil9O18uR2M9ZnVuY3Rpb24gVEZiKGEpeysrdGhpcy5iO3JldHVybiBHa2IodGhpcy5hLGEpfTtfLiRiPWZ1bmN0aW9uIFVGYigpeysrdGhpcy5iO3RoaXMuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKX07Xy5IYz1mdW5jdGlvbiBWRmIoYSl7cmV0dXJuIEprYih0aGlzLmEsYSwwKSE9LTF9O18uSWM9ZnVuY3Rpb24gV0ZiKGEpe3JldHVybiBCZSh0aGlzLmEsYSl9O18uWGI9ZnVuY3Rpb24gWUZiKGEpe3JldHVybiBJa2IodGhpcy5hLGEpfTtfLlhjPWZ1bmN0aW9uIFpGYihhKXtyZXR1cm4gSmtiKHRoaXMuYSxhLDApfTtfLmRjPWZ1bmN0aW9uICRGYigpe3JldHVybiB0aGlzLmEuYy5sZW5ndGg9PTB9O18uS2M9ZnVuY3Rpb24gX0ZiKCl7cmV0dXJuIHZyKG5ldyBvbGIodGhpcy5hKSl9O18uWWM9ZnVuY3Rpb24gYUdiKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLlpjPWZ1bmN0aW9uIGJHYihhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uJGM9ZnVuY3Rpb24gZEdiKGEpeysrdGhpcy5iO3JldHVybiBLa2IodGhpcy5hLGEpfTtfLk1jPWZ1bmN0aW9uIGVHYihhKXtyZXR1cm4gT0ZiKHRoaXMsYSl9O18uX2M9ZnVuY3Rpb24gZkdiKGEsYil7Kyt0aGlzLmI7cmV0dXJuIE5rYih0aGlzLmEsYSxiKX07Xy5nYz1mdW5jdGlvbiBnR2IoKXtyZXR1cm4gdGhpcy5hLmMubGVuZ3RofTtfLmJkPWZ1bmN0aW9uIGtHYihhLGIpe3JldHVybiBuZXcgSmliKHRoaXMuYSxhLGIpfTtfLlBjPWZ1bmN0aW9uIGxHYigpe3JldHVybiBQa2IodGhpcy5hKX07Xy5RYz1mdW5jdGlvbiBtR2IoYSl7cmV0dXJuIFFrYih0aGlzLmEsYSl9O18uYj0wO3ZhciBoTj1tZGIoY2xlLCdOTm9kZS9DaGFuZ2VBd2FyZUFycmF5TGlzdCcsNzk1KTtiY2IoMjY5LDEse30scEdiKTt2YXIgaU49bWRiKGNsZSwnTk5vZGUvTk5vZGVCdWlsZGVyJywyNjkpO2JjYigxNjMwLDEse30sS0diKTtfLmE9ZmFsc2U7Xy5mPU9oZTtfLmo9MDt2YXIga049bWRiKGNsZSwnTmV0d29ya1NpbXBsZXgnLDE2MzApO2JjYigxMjk0LDEscWllLFFHYik7Xy50ZD1mdW5jdGlvbiBSR2IoYSl7UEdiKHRoaXMuYSxCRChhLDY4MCksdHJ1ZSxmYWxzZSl9O3ZhciBsTj1tZGIoZWxlLCdOb2RlTGFiZWxBbmRTaXplQ2FsY3VsYXRvci9sYW1iZGEkMCRUeXBlJywxMjk0KTtiY2IoNTU4LDEse30sWUdiKTtfLmI9dHJ1ZTtfLmM9dHJ1ZTtfLmQ9dHJ1ZTtfLmU9dHJ1ZTt2YXIgbU49bWRiKGVsZSwnTm9kZU1hcmdpbkNhbGN1bGF0b3InLDU1OCk7YmNiKDIxMiwxLHsyMTI6MX0pO18uaj1mYWxzZTtfLms9ZmFsc2U7dmFyIG9OPW1kYihmbGUsJ0NlbGwnLDIxMik7YmNiKDEyNCwyMTIsezEyNDoxLDIxMjoxfSxhSGIpO18uUmU9ZnVuY3Rpb24gYkhiKCl7cmV0dXJuIF9HYih0aGlzKX07Xy5TZT1mdW5jdGlvbiBjSGIoKXt2YXIgYTthPXRoaXMubjtyZXR1cm4gdGhpcy5hLmErYS5iK2EuY307dmFyIG5OPW1kYihmbGUsJ0F0b21pY0NlbGwnLDEyNCk7YmNiKDIzMiwyMix7MzoxLDM1OjEsMjI6MSwyMzI6MX0saEhiKTt2YXIgZEhiLGVIYixmSGI7dmFyIHBOPW5kYihmbGUsJ0NvbnRhaW5lckFyZWEnLDIzMixDSSxqSGIsaUhiKTt2YXIga0hiO2JjYigzMjYsMjEyLGhsZSk7dmFyIHFOPW1kYihmbGUsJ0NvbnRhaW5lckNlbGwnLDMyNik7YmNiKDE0NzMsMzI2LGhsZSxGSGIpO18uUmU9ZnVuY3Rpb24gR0hiKCl7dmFyIGE7YT0wO3RoaXMuZT90aGlzLmI/KGE9dGhpcy5iLmIpOiEhdGhpcy5hWzFdWzFdJiYoYT10aGlzLmFbMV1bMV0uUmUoKSk6KGE9RUhiKHRoaXMsQUhiKHRoaXMsdHJ1ZSkpKTtyZXR1cm4gYT4wP2ErdGhpcy5uLmQrdGhpcy5uLmE6MH07Xy5TZT1mdW5jdGlvbiBISGIoKXt2YXIgYSxiLGMsZCxlO2U9MDtpZih0aGlzLmUpe3RoaXMuYj8oZT10aGlzLmIuYSk6ISF0aGlzLmFbMV1bMV0mJihlPXRoaXMuYVsxXVsxXS5TZSgpKX1lbHNlIGlmKHRoaXMuZyl7ZT1FSGIodGhpcyx5SGIodGhpcyxudWxsLHRydWUpKX1lbHNle2ZvcihiPShnSGIoKSxPQyhHQyhwTiwxKSxLaWUsMjMyLDAsW2RIYixlSGIsZkhiXSkpLGM9MCxkPWIubGVuZ3RoO2M8ZDsrK2Mpe2E9YltjXTtlPSR3bmQuTWF0aC5tYXgoZSxFSGIodGhpcyx5SGIodGhpcyxhLHRydWUpKSl9fXJldHVybiBlPjA/ZSt0aGlzLm4uYit0aGlzLm4uYzowfTtfLlRlPWZ1bmN0aW9uIElIYigpe3ZhciBhLGIsYyxkLGU7aWYodGhpcy5nKXthPXlIYih0aGlzLG51bGwsZmFsc2UpO2ZvcihjPShnSGIoKSxPQyhHQyhwTiwxKSxLaWUsMjMyLDAsW2RIYixlSGIsZkhiXSkpLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTt3SGIodGhpcyxiLGEpfX1lbHNle2ZvcihjPShnSGIoKSxPQyhHQyhwTiwxKSxLaWUsMjMyLDAsW2RIYixlSGIsZkhiXSkpLGQ9MCxlPWMubGVuZ3RoO2Q8ZTsrK2Qpe2I9Y1tkXTthPXlIYih0aGlzLGIsZmFsc2UpO3dIYih0aGlzLGIsYSl9fX07Xy5VZT1mdW5jdGlvbiBKSGIoKXt2YXIgYSxiLGMsZDtiPXRoaXMuaTthPXRoaXMubjtkPUFIYih0aGlzLGZhbHNlKTt1SGIodGhpcywoZ0hiKCksZEhiKSxiLmQrYS5kLGQpO3VIYih0aGlzLGZIYixiLmQrYi5hLWEuYS1kWzJdLGQpO2M9Yi5hLWEuZC1hLmE7aWYoZFswXT4wKXtkWzBdKz10aGlzLmQ7Yy09ZFswXX1pZihkWzJdPjApe2RbMl0rPXRoaXMuZDtjLT1kWzJdfXRoaXMuYy5hPSR3bmQuTWF0aC5tYXgoMCxjKTt0aGlzLmMuZD1iLmQrYS5kKyh0aGlzLmMuYS1jKS8yO2RbMV09JHduZC5NYXRoLm1heChkWzFdLGMpO3VIYih0aGlzLGVIYixiLmQrYS5kK2RbMF0tKGRbMV0tYykvMixkKX07Xy5iPW51bGw7Xy5kPTA7Xy5lPWZhbHNlO18uZj1mYWxzZTtfLmc9ZmFsc2U7dmFyIHJIYj0wLHNIYj0wO3ZhciByTj1tZGIoZmxlLCdHcmlkQ29udGFpbmVyQ2VsbCcsMTQ3Myk7YmNiKDQ2MSwyMix7MzoxLDM1OjEsMjI6MSw0NjE6MX0sT0hiKTt2YXIgS0hiLExIYixNSGI7dmFyIHNOPW5kYihmbGUsJ0hvcml6b250YWxMYWJlbEFsaWdubWVudCcsNDYxLENJLFFIYixQSGIpO3ZhciBSSGI7YmNiKDMwNiwyMTIsezIxMjoxLDMwNjoxfSxhSWIsYkliLGNJYik7Xy5SZT1mdW5jdGlvbiBkSWIoKXtyZXR1cm4gWUhiKHRoaXMpfTtfLlNlPWZ1bmN0aW9uIGVJYigpe3JldHVybiBaSGIodGhpcyl9O18uYT0wO18uYz1mYWxzZTt2YXIgdE49bWRiKGZsZSwnTGFiZWxDZWxsJywzMDYpO2JjYigyNDQsMzI2LHsyMTI6MSwzMjY6MSwyNDQ6MX0sbUliKTtfLlJlPWZ1bmN0aW9uIG5JYigpe3JldHVybiBmSWIodGhpcyl9O18uU2U9ZnVuY3Rpb24gb0liKCl7cmV0dXJuIGdJYih0aGlzKX07Xy5UZT1mdW5jdGlvbiBySWIoKXtoSWIodGhpcyl9O18uVWU9ZnVuY3Rpb24gc0liKCl7aUliKHRoaXMpfTtfLmI9MDtfLmM9MDtfLmQ9ZmFsc2U7dmFyIHlOPW1kYihmbGUsJ1N0cmlwQ29udGFpbmVyQ2VsbCcsMjQ0KTtiY2IoMTYyNiwxLE9pZSx0SWIpO18uTWI9ZnVuY3Rpb24gdUliKGEpe3JldHVybiBwSWIoQkQoYSwyMTIpKX07dmFyIHVOPW1kYihmbGUsJ1N0cmlwQ29udGFpbmVyQ2VsbC9sYW1iZGEkMCRUeXBlJywxNjI2KTtiY2IoMTYyNywxLHt9LHZJYik7Xy5GZT1mdW5jdGlvbiB3SWIoYSl7cmV0dXJuIEJEKGEsMjEyKS5TZSgpfTt2YXIgdk49bWRiKGZsZSwnU3RyaXBDb250YWluZXJDZWxsL2xhbWJkYSQxJFR5cGUnLDE2MjcpO2JjYigxNjI4LDEsT2llLHhJYik7Xy5NYj1mdW5jdGlvbiB5SWIoYSl7cmV0dXJuIHFJYihCRChhLDIxMikpfTt2YXIgd049bWRiKGZsZSwnU3RyaXBDb250YWluZXJDZWxsL2xhbWJkYSQyJFR5cGUnLDE2MjgpO2JjYigxNjI5LDEse30sekliKTtfLkZlPWZ1bmN0aW9uIEFJYihhKXtyZXR1cm4gQkQoYSwyMTIpLlJlKCl9O3ZhciB4Tj1tZGIoZmxlLCdTdHJpcENvbnRhaW5lckNlbGwvbGFtYmRhJDMkVHlwZScsMTYyOSk7YmNiKDQ2MiwyMix7MzoxLDM1OjEsMjI6MSw0NjI6MX0sRkliKTt2YXIgQkliLENJYixESWI7dmFyIHpOPW5kYihmbGUsJ1ZlcnRpY2FsTGFiZWxBbGlnbm1lbnQnLDQ2MixDSSxISWIsR0liKTt2YXIgSUliO2JjYig3ODksMSx7fSxMSWIpO18uYz0wO18uZD0wO18uaz0wO18ucz0wO18udD0wO18udj1mYWxzZTtfLnc9MDtfLkQ9ZmFsc2U7dmFyIENOPW1kYihubGUsJ05vZGVDb250ZXh0Jyw3ODkpO2JjYigxNDcxLDEsRGtlLE9JYik7Xy51ZT1mdW5jdGlvbiBQSWIoYSxiKXtyZXR1cm4gTkliKEJEKGEsNjEpLEJEKGIsNjEpKX07Xy5GYj1mdW5jdGlvbiBRSWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFJJYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgQU49bWRiKG5sZSwnTm9kZUNvbnRleHQvMG1ldGhvZHJlZiRjb21wYXJlUG9ydFNpZGVzJFR5cGUnLDE0NzEpO2JjYigxNDcyLDEsRGtlLFNJYik7Xy51ZT1mdW5jdGlvbiBUSWIoYSxiKXtyZXR1cm4gTUliKEJEKGEsMTExKSxCRChiLDExMSkpfTtfLkZiPWZ1bmN0aW9uIFVJYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gVkliKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBCTj1tZGIobmxlLCdOb2RlQ29udGV4dC8xbWV0aG9kcmVmJGNvbXBhcmVQb3J0Q29udGV4dHMkVHlwZScsMTQ3Mik7YmNiKDE1OSwyMix7MzoxLDM1OjEsMjI6MSwxNTk6MX0sdEpiKTt2YXIgV0liLFhJYixZSWIsWkliLCRJYixfSWIsYUpiLGJKYixjSmIsZEpiLGVKYixmSmIsZ0piLGhKYixpSmIsakpiLGtKYixsSmIsbUpiLG5KYixvSmIscEpiO3ZhciBETj1uZGIobmxlLCdOb2RlTGFiZWxMb2NhdGlvbicsMTU5LENJLHdKYix2SmIpO3ZhciB4SmI7YmNiKDExMSwxLHsxMTE6MX0sQUpiKTtfLmE9ZmFsc2U7dmFyIEVOPW1kYihubGUsJ1BvcnRDb250ZXh0JywxMTEpO2JjYigxNDc2LDEscWllLFRKYik7Xy50ZD1mdW5jdGlvbiBVSmIoYSl7V0hiKEJEKGEsMzA2KSl9O3ZhciBGTj1tZGIocWxlLHJsZSwxNDc2KTtiY2IoMTQ3NywxLE9pZSxWSmIpO18uTWI9ZnVuY3Rpb24gV0piKGEpe3JldHVybiAhIUJEKGEsMTExKS5jfTt2YXIgR049bWRiKHFsZSxzbGUsMTQ3Nyk7YmNiKDE0NzgsMSxxaWUsWEpiKTtfLnRkPWZ1bmN0aW9uIFlKYihhKXtXSGIoQkQoYSwxMTEpLmMpfTt2YXIgSE49bWRiKHFsZSwnTGFiZWxQbGFjZXIvbGFtYmRhJDIkVHlwZScsMTQ3OCk7dmFyIFpKYjtiY2IoMTQ3NSwxLHFpZSxmS2IpO18udGQ9ZnVuY3Rpb24gZ0tiKGEpeyRKYigpO3pKYihCRChhLDExMSkpfTt2YXIgSU49bWRiKHFsZSwnTm9kZUxhYmVsQW5kU2l6ZVV0aWxpdGllcy9sYW1iZGEkMCRUeXBlJywxNDc1KTtiY2IoNzkwLDEscWllLG1LYik7Xy50ZD1mdW5jdGlvbiBuS2IoYSl7a0tiKHRoaXMuYix0aGlzLmMsdGhpcy5hLEJEKGEsMTgxKSl9O18uYT1mYWxzZTtfLmM9ZmFsc2U7dmFyIEpOPW1kYihxbGUsJ05vZGVMYWJlbENlbGxDcmVhdG9yL2xhbWJkYSQwJFR5cGUnLDc5MCk7YmNiKDE0NzQsMSxxaWUsdEtiKTtfLnRkPWZ1bmN0aW9uIHVLYihhKXtzS2IodGhpcy5hLEJEKGEsMTgxKSl9O3ZhciBLTj1tZGIocWxlLCdQb3J0Q29udGV4dENyZWF0b3IvbGFtYmRhJDAkVHlwZScsMTQ3NCk7dmFyIEJLYjtiY2IoMTgyOSwxLHt9LFZLYik7dmFyIE1OPW1kYih1bGUsJ0dyZWVkeVJlY3RhbmdsZVN0cmlwT3ZlcmxhcFJlbW92ZXInLDE4MjkpO2JjYigxODMwLDEsRGtlLFhLYik7Xy51ZT1mdW5jdGlvbiBZS2IoYSxiKXtyZXR1cm4gV0tiKEJEKGEsMjIyKSxCRChiLDIyMikpfTtfLkZiPWZ1bmN0aW9uIFpLYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gJEtiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBMTj1tZGIodWxlLCdHcmVlZHlSZWN0YW5nbGVTdHJpcE92ZXJsYXBSZW1vdmVyLzBtZXRob2RyZWYkY29tcGFyZUJ5WUNvb3JkaW5hdGUkVHlwZScsMTgzMCk7YmNiKDE3ODYsMSx7fSxmTGIpO18uYT01O18uZT0wO3ZhciBTTj1tZGIodWxlLCdSZWN0YW5nbGVTdHJpcE92ZXJsYXBSZW1vdmVyJywxNzg2KTtiY2IoMTc4NywxLERrZSxqTGIpO18udWU9ZnVuY3Rpb24ga0xiKGEsYil7cmV0dXJuIGdMYihCRChhLDIyMiksQkQoYiwyMjIpKX07Xy5GYj1mdW5jdGlvbiBsTGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG1MYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgTk49bWRiKHVsZSwnUmVjdGFuZ2xlU3RyaXBPdmVybGFwUmVtb3Zlci8wbWV0aG9kcmVmJGNvbXBhcmVMZWZ0UmVjdGFuZ2xlQm9yZGVycyRUeXBlJywxNzg3KTtiY2IoMTc4OSwxLERrZSxuTGIpO18udWU9ZnVuY3Rpb24gb0xiKGEsYil7cmV0dXJuIGhMYihCRChhLDIyMiksQkQoYiwyMjIpKX07Xy5GYj1mdW5jdGlvbiBwTGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHFMYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgT049bWRiKHVsZSwnUmVjdGFuZ2xlU3RyaXBPdmVybGFwUmVtb3Zlci8xbWV0aG9kcmVmJGNvbXBhcmVSaWdodFJlY3RhbmdsZUJvcmRlcnMkVHlwZScsMTc4OSk7YmNiKDQwNiwyMix7MzoxLDM1OjEsMjI6MSw0MDY6MX0sd0xiKTt2YXIgckxiLHNMYix0TGIsdUxiO3ZhciBQTj1uZGIodWxlLCdSZWN0YW5nbGVTdHJpcE92ZXJsYXBSZW1vdmVyL092ZXJsYXBSZW1vdmFsRGlyZWN0aW9uJyw0MDYsQ0kseUxiLHhMYik7dmFyIHpMYjtiY2IoMjIyLDEsezIyMjoxfSxCTGIpO3ZhciBRTj1tZGIodWxlLCdSZWN0YW5nbGVTdHJpcE92ZXJsYXBSZW1vdmVyL1JlY3RhbmdsZU5vZGUnLDIyMik7YmNiKDE3ODgsMSxxaWUsQ0xiKTtfLnRkPWZ1bmN0aW9uIERMYihhKXthTGIodGhpcy5hLEJEKGEsMjIyKSl9O3ZhciBSTj1tZGIodWxlLCdSZWN0YW5nbGVTdHJpcE92ZXJsYXBSZW1vdmVyL2xhbWJkYSQxJFR5cGUnLDE3ODgpO2JjYigxMzA0LDEsRGtlLEdMYik7Xy51ZT1mdW5jdGlvbiBITGIoYSxiKXtyZXR1cm4gRkxiKEJEKGEsMTY3KSxCRChiLDE2NykpfTtfLkZiPWZ1bmN0aW9uIElMYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gSkxiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBXTj1tZGIod2xlLCdQb2x5b21pbm9Db21wYWN0b3IvQ29ybmVyQ2FzZXNHcmVhdGVyVGhhblJlc3RDb21wYXJhdG9yJywxMzA0KTtiY2IoMTMwNywxLHt9LEtMYik7Xy5LYj1mdW5jdGlvbiBMTGIoYSl7cmV0dXJuIEJEKGEsMzI0KS5hfTt2YXIgVE49bWRiKHdsZSwnUG9seW9taW5vQ29tcGFjdG9yL0Nvcm5lckNhc2VzR3JlYXRlclRoYW5SZXN0Q29tcGFyYXRvci9sYW1iZGEkMCRUeXBlJywxMzA3KTtiY2IoMTMwOCwxLE9pZSxNTGIpO18uTWI9ZnVuY3Rpb24gTkxiKGEpe3JldHVybiBCRChhLDMyMykuYX07dmFyIFVOPW1kYih3bGUsJ1BvbHlvbWlub0NvbXBhY3Rvci9Db3JuZXJDYXNlc0dyZWF0ZXJUaGFuUmVzdENvbXBhcmF0b3IvbGFtYmRhJDEkVHlwZScsMTMwOCk7YmNiKDEzMDksMSxPaWUsT0xiKTtfLk1iPWZ1bmN0aW9uIFBMYihhKXtyZXR1cm4gQkQoYSwzMjMpLmF9O3ZhciBWTj1tZGIod2xlLCdQb2x5b21pbm9Db21wYWN0b3IvQ29ybmVyQ2FzZXNHcmVhdGVyVGhhblJlc3RDb21wYXJhdG9yL2xhbWJkYSQyJFR5cGUnLDEzMDkpO2JjYigxMzAyLDEsRGtlLFJMYik7Xy51ZT1mdW5jdGlvbiBTTGIoYSxiKXtyZXR1cm4gUUxiKEJEKGEsMTY3KSxCRChiLDE2NykpfTtfLkZiPWZ1bmN0aW9uIFRMYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gVUxiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBZTj1tZGIod2xlLCdQb2x5b21pbm9Db21wYWN0b3IvTWluTnVtT2ZFeHRlbnNpb25EaXJlY3Rpb25zQ29tcGFyYXRvcicsMTMwMik7YmNiKDEzMDUsMSx7fSxWTGIpO18uS2I9ZnVuY3Rpb24gV0xiKGEpe3JldHVybiBCRChhLDMyNCkuYX07dmFyIFhOPW1kYih3bGUsJ1BvbHlvbWlub0NvbXBhY3Rvci9NaW5OdW1PZkV4dGVuc2lvbkRpcmVjdGlvbnNDb21wYXJhdG9yL2xhbWJkYSQwJFR5cGUnLDEzMDUpO2JjYig3NjcsMSxEa2UsWUxiKTtfLnVlPWZ1bmN0aW9uIFpMYihhLGIpe3JldHVybiBYTGIoQkQoYSwxNjcpLEJEKGIsMTY3KSl9O18uRmI9ZnVuY3Rpb24gJExiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBfTGIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFpOPW1kYih3bGUsJ1BvbHlvbWlub0NvbXBhY3Rvci9NaW5OdW1PZkV4dGVuc2lvbnNDb21wYXJhdG9yJyw3NjcpO2JjYigxMzAwLDEsRGtlLGJNYik7Xy51ZT1mdW5jdGlvbiBjTWIoYSxiKXtyZXR1cm4gYU1iKEJEKGEsMzIxKSxCRChiLDMyMSkpfTtfLkZiPWZ1bmN0aW9uIGRNYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gZU1iKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBfTj1tZGIod2xlLCdQb2x5b21pbm9Db21wYWN0b3IvTWluUGVyaW1ldGVyQ29tcGFyYXRvcicsMTMwMCk7YmNiKDEzMDEsMSxEa2UsZ01iKTtfLnVlPWZ1bmN0aW9uIGhNYihhLGIpe3JldHVybiBmTWIoQkQoYSwzMjEpLEJEKGIsMzIxKSl9O18uRmI9ZnVuY3Rpb24gaU1iKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBqTWIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyICROPW1kYih3bGUsJ1BvbHlvbWlub0NvbXBhY3Rvci9NaW5QZXJpbWV0ZXJDb21wYXJhdG9yV2l0aFNoYXBlJywxMzAxKTtiY2IoMTMwMywxLERrZSxsTWIpO18udWU9ZnVuY3Rpb24gbU1iKGEsYil7cmV0dXJuIGtNYihCRChhLDE2NyksQkQoYiwxNjcpKX07Xy5GYj1mdW5jdGlvbiBuTWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG9NYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgYk89bWRiKHdsZSwnUG9seW9taW5vQ29tcGFjdG9yL1NpbmdsZUV4dGVuc2lvblNpZGVHcmVhdGVyVGhhblJlc3RDb21wYXJhdG9yJywxMzAzKTtiY2IoMTMwNiwxLHt9LHBNYik7Xy5LYj1mdW5jdGlvbiBxTWIoYSl7cmV0dXJuIEJEKGEsMzI0KS5hfTt2YXIgYU89bWRiKHdsZSwnUG9seW9taW5vQ29tcGFjdG9yL1NpbmdsZUV4dGVuc2lvblNpZGVHcmVhdGVyVGhhblJlc3RDb21wYXJhdG9yL2xhbWJkYSQwJFR5cGUnLDEzMDYpO2JjYig3NzcsMSx7fSx0TWIpO18uQ2U9ZnVuY3Rpb24gdU1iKGEsYil7cmV0dXJuIHNNYih0aGlzLEJEKGEsNDYpLEJEKGIsMTY3KSl9O3ZhciBjTz1tZGIod2xlLCdTdWNjZXNzb3JDb21iaW5hdGlvbicsNzc3KTtiY2IoNjQ0LDEse30sd01iKTtfLkNlPWZ1bmN0aW9uIHhNYihhLGIpe3ZhciBjO3JldHVybiB2TWIoKGM9QkQoYSw0NiksQkQoYiwxNjcpLGMpKX07dmFyIGRPPW1kYih3bGUsJ1N1Y2Nlc3NvckppdHRlcicsNjQ0KTtiY2IoNjQzLDEse30sek1iKTtfLkNlPWZ1bmN0aW9uIEFNYihhLGIpe3ZhciBjO3JldHVybiB5TWIoKGM9QkQoYSw0NiksQkQoYiwxNjcpLGMpKX07dmFyIGVPPW1kYih3bGUsJ1N1Y2Nlc3NvckxpbmVCeUxpbmUnLDY0Myk7YmNiKDU2OCwxLHt9LENNYik7Xy5DZT1mdW5jdGlvbiBETWIoYSxiKXt2YXIgYztyZXR1cm4gQk1iKChjPUJEKGEsNDYpLEJEKGIsMTY3KSxjKSl9O3ZhciBmTz1tZGIod2xlLCdTdWNjZXNzb3JNYW5oYXR0YW4nLDU2OCk7YmNiKDEzNTYsMSx7fSxGTWIpO18uQ2U9ZnVuY3Rpb24gR01iKGEsYil7dmFyIGM7cmV0dXJuIEVNYigoYz1CRChhLDQ2KSxCRChiLDE2NyksYykpfTt2YXIgZ089bWRiKHdsZSwnU3VjY2Vzc29yTWF4Tm9ybVdpbmRpbmdJbk1hdGhQb3NTZW5zZScsMTM1Nik7YmNiKDQwMCwxLHt9LEpNYik7Xy5DZT1mdW5jdGlvbiBLTWIoYSxiKXtyZXR1cm4gSE1iKHRoaXMsYSxiKX07Xy5jPWZhbHNlO18uZD1mYWxzZTtfLmU9ZmFsc2U7Xy5mPWZhbHNlO3ZhciBpTz1tZGIod2xlLCdTdWNjZXNzb3JRdWFkcmFudHNHZW5lcmljJyw0MDApO2JjYigxMzU3LDEse30sTE1iKTtfLktiPWZ1bmN0aW9uIE1NYihhKXtyZXR1cm4gQkQoYSwzMjQpLmF9O3ZhciBoTz1tZGIod2xlLCdTdWNjZXNzb3JRdWFkcmFudHNHZW5lcmljL2xhbWJkYSQwJFR5cGUnLDEzNTcpO2JjYigzMjMsMjIsezM6MSwzNToxLDIyOjEsMzIzOjF9LFNNYik7Xy5hPWZhbHNlO3ZhciBOTWIsT01iLFBNYixRTWI7dmFyIGpPPW5kYihCbGUsQ2xlLDMyMyxDSSxVTWIsVE1iKTt2YXIgVk1iO2JjYigxMjk4LDEse30pO18uSWI9ZnVuY3Rpb24gYk5iKCl7dmFyIGEsYixjLGQsZSxmO2M9JyAnO2E9bWViKDApO2ZvcihlPTA7ZTx0aGlzLm87ZSsrKXtjKz0nJythLmE7YT1tZWIoWE1iKGEuYSkpfWMrPSdcXG4nO2E9bWViKDApO2ZvcihmPTA7Zjx0aGlzLnA7ZisrKXtjKz0nJythLmE7YT1tZWIoWE1iKGEuYSkpO2ZvcihkPTA7ZDx0aGlzLm87ZCsrKXtiPV9NYih0aGlzLGQsZik7eWJiKGIsMCk9PTA/KGMrPSdfJyk6eWJiKGIsMSk9PTA/KGMrPSdYJyk6KGMrPScwJyl9Yys9J1xcbid9cmV0dXJuIHFmYihjLDAsYy5sZW5ndGgtMSl9O18ubz0wO18ucD0wO3ZhciBuTz1tZGIoQmxlLCdUd29CaXRHcmlkJywxMjk4KTtiY2IoMzIxLDEyOTgsezMyMToxfSxwTmIpO18uaj0wO18uaz0wO3ZhciBrTz1tZGIoQmxlLCdQbGFuYXJHcmlkJywzMjEpO2JjYigxNjcsMzIxLHszMjE6MSwxNjc6MX0pO18uZz0wO18uaT0wO3ZhciBsTz1tZGIoQmxlLCdQb2x5b21pbm8nLDE2Nyk7dmFyIFAzPW9kYihIbGUsSWxlKTtiY2IoMTM0LDEsSmxlLHpOYik7Xy5ZZT1mdW5jdGlvbiBETmIoYSxiKXtyZXR1cm4geE5iKHRoaXMsYSxiKX07Xy5WZT1mdW5jdGlvbiBBTmIoKXtyZXR1cm4gdU5iKHRoaXMpfTtfLldlPWZ1bmN0aW9uIEJOYihhKXtyZXR1cm4gdk5iKHRoaXMsYSl9O18uWGU9ZnVuY3Rpb24gQ05iKGEpe3JldHVybiB3TmIodGhpcyxhKX07dmFyIFIzPW1kYihIbGUsJ01hcFByb3BlcnR5SG9sZGVyJywxMzQpO2JjYigxMjk5LDEzNCxKbGUsRU5iKTt2YXIgbU89bWRiKEJsZSwnUG9seW9taW5vZXMnLDEyOTkpO3ZhciBGTmI9ZmFsc2UsR05iLEhOYjtiY2IoMTc2NiwxLHFpZSxQTmIpO18udGQ9ZnVuY3Rpb24gUU5iKGEpe0pOYihCRChhLDIyMSkpfTt2YXIgb089bWRiKEtsZSwnRGVwdGhGaXJzdENvbXBhY3Rpb24vMG1ldGhvZHJlZiRjb21wYWN0VHJlZSRUeXBlJywxNzY2KTtiY2IoODEwLDEscWllLFJOYik7Xy50ZD1mdW5jdGlvbiBTTmIoYSl7TU5iKHRoaXMuYSxCRChhLDIyMSkpfTt2YXIgcE89bWRiKEtsZSwnRGVwdGhGaXJzdENvbXBhY3Rpb24vbGFtYmRhJDEkVHlwZScsODEwKTtiY2IoMTc2NywxLHFpZSxUTmIpO18udGQ9ZnVuY3Rpb24gVU5iKGEpe05OYih0aGlzLmEsdGhpcy5iLHRoaXMuYyxCRChhLDIyMSkpfTt2YXIgcU89bWRiKEtsZSwnRGVwdGhGaXJzdENvbXBhY3Rpb24vbGFtYmRhJDIkVHlwZScsMTc2Nyk7dmFyIFZOYixXTmI7YmNiKDY1LDEsezY1OjF9LGFPYik7dmFyIHJPPW1kYihLbGUsJ05vZGUnLDY1KTtiY2IoMTI1MCwxLHt9LGRPYik7dmFyIHdPPW1kYihLbGUsJ1NjYW5saW5lT3ZlcmxhcENoZWNrJywxMjUwKTtiY2IoMTI1MSwxLHs2Nzk6MX0saE9iKTtfLktlPWZ1bmN0aW9uIGlPYihhKXtmT2IodGhpcyxCRChhLDQ0MCkpfTt2YXIgdE89bWRiKEtsZSwnU2NhbmxpbmVPdmVybGFwQ2hlY2svT3ZlcmxhcHNTY2FubGluZUhhbmRsZXInLDEyNTEpO2JjYigxMjUyLDEsRGtlLGtPYik7Xy51ZT1mdW5jdGlvbiBsT2IoYSxiKXtyZXR1cm4gak9iKEJEKGEsNjUpLEJEKGIsNjUpKX07Xy5GYj1mdW5jdGlvbiBtT2IoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG5PYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgc089bWRiKEtsZSwnU2NhbmxpbmVPdmVybGFwQ2hlY2svT3ZlcmxhcHNTY2FubGluZUhhbmRsZXIvbGFtYmRhJDAkVHlwZScsMTI1Mik7YmNiKDQ0MCwxLHs0NDA6MX0sb09iKTtfLmE9ZmFsc2U7dmFyIHVPPW1kYihLbGUsJ1NjYW5saW5lT3ZlcmxhcENoZWNrL1RpbWVzdGFtcCcsNDQwKTtiY2IoMTI1MywxLERrZSxwT2IpO18udWU9ZnVuY3Rpb24gcU9iKGEsYil7cmV0dXJuIGVPYihCRChhLDQ0MCksQkQoYiw0NDApKX07Xy5GYj1mdW5jdGlvbiByT2IoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHNPYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgdk89bWRiKEtsZSwnU2NhbmxpbmVPdmVybGFwQ2hlY2svbGFtYmRhJDAkVHlwZScsMTI1Myk7YmNiKDU1MCwxLHt9LHRPYik7dmFyIHhPPW1kYihMbGUsJ1NWR0ltYWdlJyw1NTApO2JjYigzMjQsMSx7MzI0OjF9LHVPYik7Xy5JYj1mdW5jdGlvbiB2T2IoKXtyZXR1cm4gJygnK3RoaXMuYStTaGUrdGhpcy5iK1NoZSt0aGlzLmMrJyknfTt2YXIgeU89bWRiKExsZSwnVW5pcXVlVHJpcGxlJywzMjQpO2JjYigyMDksMSxNbGUpO3ZhciBnMD1tZGIoTmxlLCdBYnN0cmFjdExheW91dFByb3ZpZGVyJywyMDkpO2JjYigxMTMyLDIwOSxNbGUseU9iKTtfLlplPWZ1bmN0aW9uIHpPYihhLGIpe3ZhciBjLGQsZSxmO09kZChiLE9sZSwxKTt0aGlzLmE9RWRiKEVEKGhrZChhLChDUGIoKSxCUGIpKSkpO2lmKGlrZChhLHJQYikpe2U9R0QoaGtkKGEsclBiKSk7Yz1oNGMobjRjKCksZSk7aWYoYyl7ZD1CRChoZ2QoYy5mKSwyMDkpO2QuWmUoYSxVZGQoYiwxKSl9fWY9bmV3IEFRYih0aGlzLmEpO3RoaXMuYj15UWIoZixhKTtzd2l0Y2goQkQoaGtkKGEsKG5QYigpLGpQYikpLDQ4MSkuZyl7Y2FzZSAwOkJPYihuZXcgRk9iLHRoaXMuYik7amtkKGEsdVBiLHZOYih0aGlzLmIsdVBiKSk7YnJlYWs7ZGVmYXVsdDpaZmIoKTt9cVFiKGYpO2prZChhLHRQYix0aGlzLmIpO1FkZChiKX07Xy5hPTA7dmFyIHpPPW1kYihQbGUsJ0Rpc0NvTGF5b3V0UHJvdmlkZXInLDExMzIpO2JjYigxMjQ0LDEse30sRk9iKTtfLmM9ZmFsc2U7Xy5lPTA7Xy5mPTA7dmFyIEFPPW1kYihQbGUsJ0Rpc0NvUG9seW9taW5vQ29tcGFjdG9yJywxMjQ0KTtiY2IoNTYxLDEsezU2MToxfSxNT2IpO18uYj10cnVlO3ZhciBCTz1tZGIoUWxlLCdEQ0NvbXBvbmVudCcsNTYxKTtiY2IoMzk0LDIyLHszOjEsMzU6MSwyMjoxLDM5NDoxfSxTT2IpO18uYT1mYWxzZTt2YXIgTk9iLE9PYixQT2IsUU9iO3ZhciBDTz1uZGIoUWxlLCdEQ0RpcmVjdGlvbicsMzk0LENJLFVPYixUT2IpO3ZhciBWT2I7YmNiKDI2NiwxMzQsezM6MSwyNjY6MSw5NDoxLDEzNDoxfSxYT2IpO3ZhciBETz1tZGIoUWxlLCdEQ0VsZW1lbnQnLDI2Nik7YmNiKDM5NSwxLHszOTU6MX0sWk9iKTtfLmM9MDt2YXIgRU89bWRiKFFsZSwnRENFeHRlbnNpb24nLDM5NSk7YmNiKDc1NSwxMzQsSmxlLGFQYik7dmFyIEZPPW1kYihRbGUsJ0RDR3JhcGgnLDc1NSk7YmNiKDQ4MSwyMix7MzoxLDM1OjEsMjI6MSw0ODE6MX0sZFBiKTt2YXIgYlBiO3ZhciBHTz1uZGIoUmxlLFNsZSw0ODEsQ0ksZlBiLGVQYik7dmFyIGdQYjtiY2IoODU0LDEsYWxlLG9QYik7Xy5RZT1mdW5jdGlvbiBwUGIoYSl7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsVGxlKSxYbGUpLCdDb25uZWN0ZWQgQ29tcG9uZW50cyBDb21wYWN0aW9uIFN0cmF0ZWd5JyksJ1N0cmF0ZWd5IGZvciBwYWNraW5nIGRpZmZlcmVudCBjb25uZWN0ZWQgY29tcG9uZW50cyBpbiBvcmRlciB0byBzYXZlIHNwYWNlIGFuZCBlbmhhbmNlIHJlYWRhYmlsaXR5IG9mIGEgZ3JhcGguJyksa1BiKSwoXzVjKCksVjVjKSksR08pLHBxYigoTjVjKCksTDVjKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxVbGUpLFhsZSksJ0Nvbm5lY3RlZCBDb21wb25lbnRzIExheW91dCBBbGdvcml0aG0nKSxcIkEgbGF5b3V0IGFsZ29yaXRobSB0aGF0IGlzIHRvIGJlIGFwcGxpZWQgdG8gZWFjaCBjb25uZWN0ZWQgY29tcG9uZW50IGJlZm9yZSB0aGUgY29tcG9uZW50cyB0aGVtc2VsdmVzIGFyZSBjb21wYWN0ZWQuIElmIHVuc3BlY2lmaWVkLCB0aGUgcG9zaXRpb25zIG9mIHRoZSBjb21wb25lbnRzJyBub2RlcyBhcmUgbm90IGFsdGVyZWQuXCIpLFo1YyksWkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsVmxlKSwnZGVidWcnKSwnRENHcmFwaCcpLCdBY2Nlc3MgdG8gdGhlIERDR3JhcGggaXMgaW50ZW5kZWQgZm9yIHRoZSBkZWJ1ZyB2aWV3LCcpLFk1YyksU0kpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsV2xlKSwnZGVidWcnKSwnTGlzdCBvZiBQb2x5b21pbm9lcycpLCdBY2Nlc3MgdG8gdGhlIHBvbHlvbWlub2VzIGlzIGludGVuZGVkIGZvciB0aGUgZGVidWcgdmlldywnKSxZNWMpLFNJKSxwcWIoTDVjKSkpKTtEUGIoKG5ldyBFUGIsYSkpfTt2YXIgaVBiLGpQYixrUGIsbFBiLG1QYjt2YXIgSE89bWRiKFJsZSwnRGlzQ29NZXRhRGF0YVByb3ZpZGVyJyw4NTQpO2JjYig5OTgsMSxhbGUsRVBiKTtfLlFlPWZ1bmN0aW9uIEZQYihhKXtEUGIoYSl9O3ZhciBxUGIsclBiLHNQYix0UGIsdVBiLHZQYix3UGIseFBiLHlQYix6UGIsQVBiLEJQYjt2YXIgSk89bWRiKFJsZSwnRGlzQ29PcHRpb25zJyw5OTgpO2JjYig5OTksMSx7fSxHUGIpO18uJGU9ZnVuY3Rpb24gSFBiKCl7dmFyIGE7cmV0dXJuIGE9bmV3IHlPYixhfTtfLl9lPWZ1bmN0aW9uIElQYihhKXt9O3ZhciBJTz1tZGIoUmxlLCdEaXNDb09wdGlvbnMvRGlzY29GYWN0b3J5Jyw5OTkpO2JjYig1NjIsMTY3LHszMjE6MSwxNjc6MSw1NjI6MX0sTVBiKTtfLmE9MDtfLmI9MDtfLmM9MDtfLmQ9MDt2YXIgS089bWRiKCdvcmcuZWNsaXBzZS5lbGsuYWxnLmRpc2NvLnN0cnVjdHVyZXMnLCdEQ1BvbHlvbWlubycsNTYyKTt2YXIgTlBiLE9QYixQUGI7YmNiKDEyNjgsMSxPaWUsYVFiKTtfLk1iPWZ1bmN0aW9uIGJRYihhKXtyZXR1cm4gX1BiKGEpfTt2YXIgTE89bWRiKGJtZSwnRWxrR3JhcGhDb21wb25lbnRzUHJvY2Vzc29yL2xhbWJkYSQwJFR5cGUnLDEyNjgpO2JjYigxMjY5LDEse30sY1FiKTtfLktiPWZ1bmN0aW9uIGRRYihhKXtyZXR1cm4gUVBiKCksanRkKEJEKGEsNzkpKX07dmFyIE1PPW1kYihibWUsJ0Vsa0dyYXBoQ29tcG9uZW50c1Byb2Nlc3Nvci9sYW1iZGEkMSRUeXBlJywxMjY5KTtiY2IoMTI3MCwxLE9pZSxlUWIpO18uTWI9ZnVuY3Rpb24gZlFiKGEpe3JldHVybiBXUGIoQkQoYSw3OSkpfTt2YXIgTk89bWRiKGJtZSwnRWxrR3JhcGhDb21wb25lbnRzUHJvY2Vzc29yL2xhbWJkYSQyJFR5cGUnLDEyNzApO2JjYigxMjcxLDEse30sZ1FiKTtfLktiPWZ1bmN0aW9uIGhRYihhKXtyZXR1cm4gUVBiKCksbHRkKEJEKGEsNzkpKX07dmFyIE9PPW1kYihibWUsJ0Vsa0dyYXBoQ29tcG9uZW50c1Byb2Nlc3Nvci9sYW1iZGEkMyRUeXBlJywxMjcxKTtiY2IoMTI3MiwxLE9pZSxpUWIpO18uTWI9ZnVuY3Rpb24galFiKGEpe3JldHVybiBYUGIoQkQoYSw3OSkpfTt2YXIgUE89bWRiKGJtZSwnRWxrR3JhcGhDb21wb25lbnRzUHJvY2Vzc29yL2xhbWJkYSQ0JFR5cGUnLDEyNzIpO2JjYigxMjczLDEsT2llLGtRYik7Xy5NYj1mdW5jdGlvbiBsUWIoYSl7cmV0dXJuIFlQYih0aGlzLmEsQkQoYSw3OSkpfTt2YXIgUU89bWRiKGJtZSwnRWxrR3JhcGhDb21wb25lbnRzUHJvY2Vzc29yL2xhbWJkYSQ1JFR5cGUnLDEyNzMpO2JjYigxMjc0LDEse30sbVFiKTtfLktiPWZ1bmN0aW9uIG5RYihhKXtyZXR1cm4gWlBiKHRoaXMuYSxCRChhLDc5KSl9O3ZhciBSTz1tZGIoYm1lLCdFbGtHcmFwaENvbXBvbmVudHNQcm9jZXNzb3IvbGFtYmRhJDYkVHlwZScsMTI3NCk7YmNiKDEyNDEsMSx7fSxBUWIpO18uYT0wO3ZhciBVTz1tZGIoYm1lLCdFbGtHcmFwaFRyYW5zZm9ybWVyJywxMjQxKTtiY2IoMTI0MiwxLHt9LENRYik7Xy5PZD1mdW5jdGlvbiBEUWIoYSxiKXtCUWIodGhpcyxCRChhLDE2MCksQkQoYiwyNjYpKX07dmFyIFRPPW1kYihibWUsJ0Vsa0dyYXBoVHJhbnNmb3JtZXIvT2Zmc2V0QXBwbGllcicsMTI0Mik7YmNiKDEyNDMsMSxxaWUsRlFiKTtfLnRkPWZ1bmN0aW9uIEdRYihhKXtFUWIodGhpcyxCRChhLDgpKX07dmFyIFNPPW1kYihibWUsJ0Vsa0dyYXBoVHJhbnNmb3JtZXIvT2Zmc2V0QXBwbGllci9PZmZTZXRUb0NoYWluQXBwbGllcicsMTI0Myk7YmNiKDc1MywxLHt9LE1RYik7dmFyIFdPPW1kYihnbWUsaG1lLDc1Myk7YmNiKDEyMzIsMSxEa2UsT1FiKTtfLnVlPWZ1bmN0aW9uIFBRYihhLGIpe3JldHVybiBOUWIoQkQoYSwyMzEpLEJEKGIsMjMxKSl9O18uRmI9ZnVuY3Rpb24gUVFiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBSUWIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFZPPW1kYihnbWUsaW1lLDEyMzIpO2JjYig3NDAsMjA5LE1sZSxaUWIpO18uWmU9ZnVuY3Rpb24gJFFiKGEsYil7V1FiKHRoaXMsYSxiKX07dmFyIFhPPW1kYihnbWUsJ0ZvcmNlTGF5b3V0UHJvdmlkZXInLDc0MCk7YmNiKDM1NywxMzQsezM6MSwzNTc6MSw5NDoxLDEzNDoxfSk7dmFyIGJQPW1kYihqbWUsJ0ZQYXJ0aWNsZScsMzU3KTtiY2IoNTU5LDM1Nyx7MzoxLDU1OToxLDM1NzoxLDk0OjEsMTM0OjF9LGFSYik7Xy5JYj1mdW5jdGlvbiBiUmIoKXt2YXIgYTtpZih0aGlzLmEpe2E9SmtiKHRoaXMuYS5hLHRoaXMsMCk7cmV0dXJuIGE+PTA/J2InK2ErJ1snK2ZSYih0aGlzLmEpKyddJzonYlsnK2ZSYih0aGlzLmEpKyddJ31yZXR1cm4gJ2JfJytGQ2IodGhpcyl9O3ZhciBZTz1tZGIoam1lLCdGQmVuZHBvaW50Jyw1NTkpO2JjYigyODIsMTM0LHszOjEsMjgyOjEsOTQ6MSwxMzQ6MX0sZ1JiKTtfLkliPWZ1bmN0aW9uIGhSYigpe3JldHVybiBmUmIodGhpcyl9O3ZhciBaTz1tZGIoam1lLCdGRWRnZScsMjgyKTtiY2IoMjMxLDEzNCx7MzoxLDIzMToxLDk0OjEsMTM0OjF9LGtSYik7dmFyICRPPW1kYihqbWUsJ0ZHcmFwaCcsMjMxKTtiY2IoNDQ3LDM1Nyx7MzoxLDQ0NzoxLDM1NzoxLDk0OjEsMTM0OjF9LG1SYik7Xy5JYj1mdW5jdGlvbiBuUmIoKXtyZXR1cm4gdGhpcy5iPT1udWxsfHx0aGlzLmIubGVuZ3RoPT0wPydsWycrZlJiKHRoaXMuYSkrJ10nOidsXycrdGhpcy5ifTt2YXIgX089bWRiKGptZSwnRkxhYmVsJyw0NDcpO2JjYigxNDQsMzU3LHszOjEsMTQ0OjEsMzU3OjEsOTQ6MSwxMzQ6MX0scFJiKTtfLkliPWZ1bmN0aW9uIHFSYigpe3JldHVybiBvUmIodGhpcyl9O18uYj0wO3ZhciBhUD1tZGIoam1lLCdGTm9kZScsMTQ0KTtiY2IoMjAwMywxLHt9KTtfLmJmPWZ1bmN0aW9uIHZSYihhKXtyUmIodGhpcyxhKX07Xy5jZj1mdW5jdGlvbiB3UmIoKXtzUmIodGhpcyl9O18uZD0wO3ZhciBjUD1tZGIobG1lLCdBYnN0cmFjdEZvcmNlTW9kZWwnLDIwMDMpO2JjYig2MzEsMjAwMyx7NjMxOjF9LHhSYik7Xy5hZj1mdW5jdGlvbiB6UmIoYSxiKXt2YXIgYyxkLGUsZixnO3VSYih0aGlzLmYsYSxiKTtlPWM3YyhSNmMoYi5kKSxhLmQpO2c9JHduZC5NYXRoLnNxcnQoZS5hKmUuYStlLmIqZS5iKTtkPSR3bmQuTWF0aC5tYXgoMCxnLVU2YyhhLmUpLzItVTZjKGIuZSkvMik7Yz1qUmIodGhpcy5lLGEsYik7Yz4wPyhmPS15UmIoZCx0aGlzLmMpKmMpOihmPUNSYihkLHRoaXMuYikqQkQodk5iKGEsKHdTYigpLG9TYikpLDE5KS5hKTtZNmMoZSxmL2cpO3JldHVybiBlfTtfLmJmPWZ1bmN0aW9uIEFSYihhKXtyUmIodGhpcyxhKTt0aGlzLmE9QkQodk5iKGEsKHdTYigpLGVTYikpLDE5KS5hO3RoaXMuYz1FZGIoRUQodk5iKGEsdVNiKSkpO3RoaXMuYj1FZGIoRUQodk5iKGEscVNiKSkpfTtfLmRmPWZ1bmN0aW9uIEJSYihhKXtyZXR1cm4gYTx0aGlzLmF9O18uYT0wO18uYj0wO18uYz0wO3ZhciBkUD1tZGIobG1lLCdFYWRlc01vZGVsJyw2MzEpO2JjYig2MzIsMjAwMyx7NjMyOjF9LERSYik7Xy5hZj1mdW5jdGlvbiBGUmIoYSxiKXt2YXIgYyxkLGUsZixnO3VSYih0aGlzLmYsYSxiKTtlPWM3YyhSNmMoYi5kKSxhLmQpO2c9JHduZC5NYXRoLnNxcnQoZS5hKmUuYStlLmIqZS5iKTtkPSR3bmQuTWF0aC5tYXgoMCxnLVU2YyhhLmUpLzItVTZjKGIuZSkvMik7Zj1KUmIoZCx0aGlzLmEpKkJEKHZOYihhLCh3U2IoKSxvU2IpKSwxOSkuYTtjPWpSYih0aGlzLmUsYSxiKTtjPjAmJihmLT1FUmIoZCx0aGlzLmEpKmMpO1k2YyhlLGYqdGhpcy5iL2cpO3JldHVybiBlfTtfLmJmPWZ1bmN0aW9uIEdSYihhKXt2YXIgYixjLGQsZSxmLGcsaDtyUmIodGhpcyxhKTt0aGlzLmI9RWRiKEVEKHZOYihhLCh3U2IoKSx2U2IpKSkpO3RoaXMuYz10aGlzLmIvQkQodk5iKGEsZVNiKSwxOSkuYTtkPWEuZS5jLmxlbmd0aDtmPTA7ZT0wO2ZvcihoPW5ldyBvbGIoYS5lKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTQ0KTtmKz1nLmUuYTtlKz1nLmUuYn1iPWYqZTtjPUVkYihFRCh2TmIoYSx1U2IpKSkqcGxlO3RoaXMuYT0kd25kLk1hdGguc3FydChiLygyKmQpKSpjfTtfLmNmPWZ1bmN0aW9uIEhSYigpe3NSYih0aGlzKTt0aGlzLmItPXRoaXMuY307Xy5kZj1mdW5jdGlvbiBJUmIoYSl7cmV0dXJuIHRoaXMuYj4wfTtfLmE9MDtfLmI9MDtfLmM9MDt2YXIgZVA9bWRiKGxtZSwnRnJ1Y2h0ZXJtYW5SZWluZ29sZE1vZGVsJyw2MzIpO2JjYig4NDksMSxhbGUsVFJiKTtfLlFlPWZ1bmN0aW9uIFVSYihhKXt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxtbWUpLCcnKSwnRm9yY2UgTW9kZWwnKSwnRGV0ZXJtaW5lcyB0aGUgbW9kZWwgZm9yIGZvcmNlIGNhbGN1bGF0aW9uLicpLE1SYiksKF81YygpLFY1YykpLGdQKSxwcWIoKE41YygpLEw1YykpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG5tZSksJycpLCdJdGVyYXRpb25zJyksJ1RoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBvbiB0aGUgZm9yY2UgbW9kZWwuJyksbWViKDMwMCkpLFg1YyksSkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG9tZSksJycpLCdSZXB1bHNpdmUgUG93ZXInKSwnRGV0ZXJtaW5lcyBob3cgbWFueSBiZW5kIHBvaW50cyBhcmUgYWRkZWQgdG8gdGhlIGVkZ2U7IHN1Y2ggYmVuZCBwb2ludHMgYXJlIHJlZ2FyZGVkIGFzIHJlcGVsbGluZyBwYXJ0aWNsZXMgaW4gdGhlIGZvcmNlIG1vZGVsJyksbWViKDApKSxYNWMpLEpJKSxwcWIoSTVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxwbWUpLCcnKSwnRlIgVGVtcGVyYXR1cmUnKSwnVGhlIHRlbXBlcmF0dXJlIGlzIHVzZWQgYXMgYSBzY2FsaW5nIGZhY3RvciBmb3IgcGFydGljbGUgZGlzcGxhY2VtZW50cy4nKSxxbWUpLFU1YyksQkkpLHBxYihMNWMpKSkpO280YyhhLHBtZSxtbWUsUlJiKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxybWUpLCcnKSwnRWFkZXMgUmVwdWxzaW9uJyksXCJGYWN0b3IgZm9yIHJlcHVsc2l2ZSBmb3JjZXMgaW4gRWFkZXMnIG1vZGVsLlwiKSw1KSxVNWMpLEJJKSxwcWIoTDVjKSkpKTtvNGMoYSxybWUsbW1lLE9SYik7eFNiKChuZXcgeVNiLGEpKX07dmFyIEtSYixMUmIsTVJiLE5SYixPUmIsUFJiLFFSYixSUmI7dmFyIGZQPW1kYihzbWUsJ0ZvcmNlTWV0YURhdGFQcm92aWRlcicsODQ5KTtiY2IoNDI0LDIyLHszOjEsMzU6MSwyMjoxLDQyNDoxfSxZUmIpO3ZhciBWUmIsV1JiO3ZhciBnUD1uZGIoc21lLCdGb3JjZU1vZGVsU3RyYXRlZ3knLDQyNCxDSSwkUmIsWlJiKTt2YXIgX1JiO2JjYig5ODgsMSxhbGUseVNiKTtfLlFlPWZ1bmN0aW9uIHpTYihhKXt4U2IoYSl9O3ZhciBiU2IsY1NiLGRTYixlU2IsZlNiLGdTYixoU2IsaVNiLGpTYixrU2IsbFNiLG1TYixuU2Isb1NiLHBTYixxU2IsclNiLHNTYix0U2IsdVNiLHZTYjt2YXIgaVA9bWRiKHNtZSwnRm9yY2VPcHRpb25zJyw5ODgpO2JjYig5ODksMSx7fSxBU2IpO18uJGU9ZnVuY3Rpb24gQlNiKCl7dmFyIGE7cmV0dXJuIGE9bmV3IFpRYixhfTtfLl9lPWZ1bmN0aW9uIENTYihhKXt9O3ZhciBoUD1tZGIoc21lLCdGb3JjZU9wdGlvbnMvRm9yY2VGYWN0b3J5Jyw5ODkpO3ZhciBEU2IsRVNiLEZTYixHU2I7YmNiKDg1MCwxLGFsZSxQU2IpO18uUWU9ZnVuY3Rpb24gUVNiKGEpe3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLE1tZSksJycpLCdGaXhlZCBQb3NpdGlvbicpLCdQcmV2ZW50IHRoYXQgdGhlIG5vZGUgaXMgbW92ZWQgYnkgdGhlIGxheW91dCBhbGdvcml0aG0uJyksKEJjYigpLGZhbHNlKSksKF81YygpLFQ1YykpLHdJKSxwcWIoKE41YygpLEs1YykpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLE5tZSksJycpLCdEZXNpcmVkIEVkZ2UgTGVuZ3RoJyksJ0VpdGhlciBzcGVjaWZpZWQgZm9yIHBhcmVudCBub2RlcyBvciBmb3IgaW5kaXZpZHVhbCBlZGdlcywgd2hlcmUgdGhlIGxhdHRlciB0YWtlcyBoaWdoZXIgcHJlY2VkZW5jZS4nKSwxMDApLFU1YyksQkkpLHFxYihMNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtJNWNdKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsT21lKSwnJyksJ0xheW91dCBEaW1lbnNpb24nKSwnRGltZW5zaW9ucyB0aGF0IGFyZSBwZXJtaXR0ZWQgdG8gYmUgYWx0ZXJlZCBkdXJpbmcgbGF5b3V0LicpLEtTYiksVjVjKSxvUCkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsUG1lKSwnJyksJ1N0cmVzcyBFcHNpbG9uJyksJ1Rlcm1pbmF0aW9uIGNyaXRlcmlvbiBmb3IgdGhlIGl0ZXJhdGl2ZSBwcm9jZXNzLicpLHFtZSksVTVjKSxCSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsUW1lKSwnJyksJ0l0ZXJhdGlvbiBMaW1pdCcpLFwiTWF4aW11bSBudW1iZXIgb2YgcGVyZm9ybWVkIGl0ZXJhdGlvbnMuIFRha2VzIGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gJ2Vwc2lsb24nLlwiKSxtZWIoT2hlKSksWDVjKSxKSSkscHFiKEw1YykpKSk7Y1RiKChuZXcgZFRiLGEpKX07dmFyIElTYixKU2IsS1NiLExTYixNU2IsTlNiO3ZhciBqUD1tZGIoc21lLCdTdHJlc3NNZXRhRGF0YVByb3ZpZGVyJyw4NTApO2JjYig5OTIsMSxhbGUsZFRiKTtfLlFlPWZ1bmN0aW9uIGVUYihhKXtjVGIoYSl9O3ZhciBSU2IsU1NiLFRTYixVU2IsVlNiLFdTYixYU2IsWVNiLFpTYiwkU2IsX1NiLGFUYjt2YXIgbFA9bWRiKHNtZSwnU3RyZXNzT3B0aW9ucycsOTkyKTtiY2IoOTkzLDEse30sZlRiKTtfLiRlPWZ1bmN0aW9uIGdUYigpe3ZhciBhO3JldHVybiBhPW5ldyBpVGIsYX07Xy5fZT1mdW5jdGlvbiBoVGIoYSl7fTt2YXIga1A9bWRiKHNtZSwnU3RyZXNzT3B0aW9ucy9TdHJlc3NGYWN0b3J5Jyw5OTMpO2JjYigxMTI4LDIwOSxNbGUsaVRiKTtfLlplPWZ1bmN0aW9uIGpUYihhLGIpe3ZhciBjLGQsZSxmLGc7T2RkKGIsU21lLDEpO0NjYihERChoa2QoYSwoYlRiKCksVlNiKSkpKT9DY2IoREQoaGtkKGEsX1NiKSkpfHwkQ2IoKGM9bmV3IF9DYigoUGdkKCksbmV3IGJoZChhKSkpLGMpKTpXUWIobmV3IFpRYixhLFVkZChiLDEpKTtlPVRRYihhKTtkPUxRYih0aGlzLmEsZSk7Zm9yKGc9ZC5LYygpO2cuT2IoKTspe2Y9QkQoZy5QYigpLDIzMSk7aWYoZi5lLmMubGVuZ3RoPD0xKXtjb250aW51ZX1zVGIodGhpcy5iLGYpO3FUYih0aGlzLmIpO0hrYihmLmQsbmV3IGtUYil9ZT1LUWIoZCk7U1FiKGUpO1FkZChiKX07dmFyIG5QPW1kYihVbWUsJ1N0cmVzc0xheW91dFByb3ZpZGVyJywxMTI4KTtiY2IoMTEyOSwxLHFpZSxrVGIpO18udGQ9ZnVuY3Rpb24gbFRiKGEpe2xSYihCRChhLDQ0NykpfTt2YXIgbVA9bWRiKFVtZSwnU3RyZXNzTGF5b3V0UHJvdmlkZXIvbGFtYmRhJDAkVHlwZScsMTEyOSk7YmNiKDk5MCwxLHt9LHRUYik7Xy5jPTA7Xy5lPTA7Xy5nPTA7dmFyIHFQPW1kYihVbWUsJ1N0cmVzc01ham9yaXphdGlvbicsOTkwKTtiY2IoMzc5LDIyLHszOjEsMzU6MSwyMjoxLDM3OToxfSx6VGIpO3ZhciB2VGIsd1RiLHhUYjt2YXIgb1A9bmRiKFVtZSwnU3RyZXNzTWFqb3JpemF0aW9uL0RpbWVuc2lvbicsMzc5LENJLEJUYixBVGIpO3ZhciBDVGI7YmNiKDk5MSwxLERrZSxFVGIpO18udWU9ZnVuY3Rpb24gRlRiKGEsYil7cmV0dXJuIHVUYih0aGlzLmEsQkQoYSwxNDQpLEJEKGIsMTQ0KSl9O18uRmI9ZnVuY3Rpb24gR1RiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBIVGIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIHBQPW1kYihVbWUsJ1N0cmVzc01ham9yaXphdGlvbi9sYW1iZGEkMCRUeXBlJyw5OTEpO2JjYigxMjI5LDEse30sUFRiKTt2YXIgdFA9bWRiKFdtZSwnRWxrTGF5ZXJlZCcsMTIyOSk7YmNiKDEyMzAsMSxxaWUsU1RiKTtfLnRkPWZ1bmN0aW9uIFRUYihhKXtRVGIoQkQoYSwzNykpfTt2YXIgclA9bWRiKFdtZSwnRWxrTGF5ZXJlZC9sYW1iZGEkMCRUeXBlJywxMjMwKTtiY2IoMTIzMSwxLHFpZSxVVGIpO18udGQ9ZnVuY3Rpb24gVlRiKGEpe1JUYih0aGlzLmEsQkQoYSwzNykpfTt2YXIgc1A9bWRiKFdtZSwnRWxrTGF5ZXJlZC9sYW1iZGEkMSRUeXBlJywxMjMxKTtiY2IoMTI2MywxLHt9LGJVYik7dmFyIFdUYixYVGIsWVRiO3ZhciB4UD1tZGIoV21lLCdHcmFwaENvbmZpZ3VyYXRvcicsMTI2Myk7YmNiKDc1OSwxLHFpZSxkVWIpO18udGQ9ZnVuY3Rpb24gZVViKGEpeyRUYih0aGlzLmEsQkQoYSwxMCkpfTt2YXIgdVA9bWRiKFdtZSwnR3JhcGhDb25maWd1cmF0b3IvbGFtYmRhJDAkVHlwZScsNzU5KTtiY2IoNzYwLDEse30sZlViKTtfLktiPWZ1bmN0aW9uIGdVYihhKXtyZXR1cm4gWlRiKCksbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgdlA9bWRiKFdtZSwnR3JhcGhDb25maWd1cmF0b3IvbGFtYmRhJDEkVHlwZScsNzYwKTtiY2IoNzYxLDEscWllLGhVYik7Xy50ZD1mdW5jdGlvbiBpVWIoYSl7JFRiKHRoaXMuYSxCRChhLDEwKSl9O3ZhciB3UD1tZGIoV21lLCdHcmFwaENvbmZpZ3VyYXRvci9sYW1iZGEkMiRUeXBlJyw3NjEpO2JjYigxMTI3LDIwOSxNbGUsalViKTtfLlplPWZ1bmN0aW9uIGtVYihhLGIpe3ZhciBjO2M9VTFiKG5ldyBhMmIsYSk7UEQoaGtkKGEsKE55YygpLGF4YykpKT09PVBEKChoYmQoKSxlYmQpKT9KVGIodGhpcy5hLGMsYik6S1RiKHRoaXMuYSxjLGIpO3oyYihuZXcgRDJiLGMpfTt2YXIgeVA9bWRiKFdtZSwnTGF5ZXJlZExheW91dFByb3ZpZGVyJywxMTI3KTtiY2IoMzU2LDIyLHszOjEsMzU6MSwyMjoxLDM1NjoxfSxyVWIpO3ZhciBsVWIsbVViLG5VYixvVWIscFViO3ZhciB6UD1uZGIoV21lLCdMYXllcmVkUGhhc2VzJywzNTYsQ0ksdFViLHNVYik7dmFyIHVVYjtiY2IoMTY1MSwxLHt9LENVYik7Xy5pPTA7dmFyIHdVYjt2YXIgQ1A9bWRiKFhtZSwnQ29tcG9uZW50c1RvQ0dyYXBoVHJhbnNmb3JtZXInLDE2NTEpO3ZhciBoVmI7YmNiKDE2NTIsMSx7fSxEVWIpO18uZWY9ZnVuY3Rpb24gRVViKGEsYil7cmV0dXJuICR3bmQuTWF0aC5taW4oYS5hIT1udWxsP0VkYihhLmEpOmEuYy5pLGIuYSE9bnVsbD9FZGIoYi5hKTpiLmMuaSl9O18uZmY9ZnVuY3Rpb24gRlViKGEsYil7cmV0dXJuICR3bmQuTWF0aC5taW4oYS5hIT1udWxsP0VkYihhLmEpOmEuYy5pLGIuYSE9bnVsbD9FZGIoYi5hKTpiLmMuaSl9O3ZhciBBUD1tZGIoWG1lLCdDb21wb25lbnRzVG9DR3JhcGhUcmFuc2Zvcm1lci8xJywxNjUyKTtiY2IoODEsMSx7ODE6MX0pO18uaT0wO18uaz10cnVlO18ubz1RamU7dmFyIElQPW1kYihZbWUsJ0NOb2RlJyw4MSk7YmNiKDQ2MCw4MSx7NDYwOjEsODE6MX0sR1ViLEhVYik7Xy5JYj1mdW5jdGlvbiBJVWIoKXtyZXR1cm4gJyd9O3ZhciBCUD1tZGIoWG1lLCdDb21wb25lbnRzVG9DR3JhcGhUcmFuc2Zvcm1lci9DUmVjdE5vZGUnLDQ2MCk7YmNiKDE2MjMsMSx7fSxWVWIpO3ZhciBKVWIsS1ViO3ZhciBGUD1tZGIoWG1lLCdPbmVEaW1lbnNpb25hbENvbXBvbmVudHNDb21wYWN0aW9uJywxNjIzKTtiY2IoMTYyNCwxLHt9LFlVYik7Xy5LYj1mdW5jdGlvbiBaVWIoYSl7cmV0dXJuIFdVYihCRChhLDQ2KSl9O18uRmI9ZnVuY3Rpb24gJFViKGEpe3JldHVybiB0aGlzPT09YX07dmFyIERQPW1kYihYbWUsJ09uZURpbWVuc2lvbmFsQ29tcG9uZW50c0NvbXBhY3Rpb24vbGFtYmRhJDAkVHlwZScsMTYyNCk7YmNiKDE2MjUsMSx7fSxfVWIpO18uS2I9ZnVuY3Rpb24gYVZiKGEpe3JldHVybiBYVWIoQkQoYSw0NikpfTtfLkZiPWZ1bmN0aW9uIGJWYihhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciBFUD1tZGIoWG1lLCdPbmVEaW1lbnNpb25hbENvbXBvbmVudHNDb21wYWN0aW9uL2xhbWJkYSQxJFR5cGUnLDE2MjUpO2JjYigxNjU0LDEse30sZFZiKTt2YXIgR1A9bWRiKFltZSwnQ0dyYXBoJywxNjU0KTtiY2IoMTg5LDEsezE4OToxfSxnVmIpO18uYj0wO18uYz0wO18uZT0wO18uZz10cnVlO18uaT1RamU7dmFyIEhQPW1kYihZbWUsJ0NHcm91cCcsMTg5KTtiY2IoMTY1MywxLHt9LGpWYik7Xy5lZj1mdW5jdGlvbiBrVmIoYSxiKXtyZXR1cm4gJHduZC5NYXRoLm1heChhLmEhPW51bGw/RWRiKGEuYSk6YS5jLmksYi5hIT1udWxsP0VkYihiLmEpOmIuYy5pKX07Xy5mZj1mdW5jdGlvbiBsVmIoYSxiKXtyZXR1cm4gJHduZC5NYXRoLm1heChhLmEhPW51bGw/RWRiKGEuYSk6YS5jLmksYi5hIT1udWxsP0VkYihiLmEpOmIuYy5pKX07dmFyIEpQPW1kYihZbWUsSWtlLDE2NTMpO2JjYigxNjU1LDEse30sQ1ZiKTtfLmQ9ZmFsc2U7dmFyIG1WYjt2YXIgTFA9bWRiKFltZSxOa2UsMTY1NSk7YmNiKDE2NTYsMSx7fSxEVmIpO18uS2I9ZnVuY3Rpb24gRVZiKGEpe3JldHVybiBuVmIoKSxCY2IoKSxCRChCRChhLDQ2KS5hLDgxKS5kLmUhPTA/dHJ1ZTpmYWxzZX07Xy5GYj1mdW5jdGlvbiBGVmIoYSl7cmV0dXJuIHRoaXM9PT1hfTt2YXIgS1A9bWRiKFltZSxPa2UsMTY1Nik7YmNiKDgyMywxLHt9LElWYik7Xy5hPWZhbHNlO18uYj1mYWxzZTtfLmM9ZmFsc2U7Xy5kPWZhbHNlO3ZhciBNUD1tZGIoWW1lLFBrZSw4MjMpO2JjYigxODI1LDEse30sT1ZiKTt2YXIgUlA9bWRiKFptZSxRa2UsMTgyNSk7dmFyIGJRPW9kYigkbWUsRmtlKTtiY2IoMTgyNiwxLHszNjk6MX0sU1ZiKTtfLktlPWZ1bmN0aW9uIFRWYihhKXtRVmIodGhpcyxCRChhLDQ2NikpfTt2YXIgT1A9bWRiKFptZSxSa2UsMTgyNik7YmNiKDE4MjcsMSxEa2UsVlZiKTtfLnVlPWZ1bmN0aW9uIFdWYihhLGIpe3JldHVybiBVVmIoQkQoYSw4MSksQkQoYiw4MSkpfTtfLkZiPWZ1bmN0aW9uIFhWYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gWVZiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBOUD1tZGIoWm1lLFNrZSwxODI3KTtiY2IoNDY2LDEsezQ2NjoxfSxaVmIpO18uYT1mYWxzZTt2YXIgUFA9bWRiKFptZSxUa2UsNDY2KTtiY2IoMTgyOCwxLERrZSwkVmIpO18udWU9ZnVuY3Rpb24gX1ZiKGEsYil7cmV0dXJuIFBWYihCRChhLDQ2NiksQkQoYiw0NjYpKX07Xy5GYj1mdW5jdGlvbiBhV2IoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGJXYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgUVA9bWRiKFptZSxVa2UsMTgyOCk7YmNiKDE0MCwxLHsxNDA6MX0sY1diLGRXYik7Xy5GYj1mdW5jdGlvbiBlV2IoYSl7dmFyIGI7aWYoYT09bnVsbCl7cmV0dXJuIGZhbHNlfWlmKFRQIT1yYihhKSl7cmV0dXJuIGZhbHNlfWI9QkQoYSwxNDApO3JldHVybiB3dGIodGhpcy5jLGIuYykmJnd0Yih0aGlzLmQsYi5kKX07Xy5IYj1mdW5jdGlvbiBmV2IoKXtyZXR1cm4gSGxiKE9DKEdDKFNJLDEpLFVoZSwxLDUsW3RoaXMuYyx0aGlzLmRdKSl9O18uSWI9ZnVuY3Rpb24gZ1diKCl7cmV0dXJuICcoJyt0aGlzLmMrU2hlK3RoaXMuZCsodGhpcy5hPydjeCc6JycpK3RoaXMuYisnKSd9O18uYT10cnVlO18uYz0wO18uZD0wO3ZhciBUUD1tZGIoJG1lLCdQb2ludCcsMTQwKTtiY2IoNDA1LDIyLHszOjEsMzU6MSwyMjoxLDQwNToxfSxvV2IpO3ZhciBoV2IsaVdiLGpXYixrV2I7dmFyIFNQPW5kYigkbWUsJ1BvaW50L1F1YWRyYW50Jyw0MDUsQ0ksc1diLHJXYik7dmFyIHRXYjtiY2IoMTY0MiwxLHt9LENXYik7Xy5iPW51bGw7Xy5jPW51bGw7Xy5kPW51bGw7Xy5lPW51bGw7Xy5mPW51bGw7dmFyIHZXYix3V2IseFdiLHlXYix6V2I7dmFyIGFRPW1kYigkbWUsJ1JlY3RpbGluZWFyQ29udmV4SHVsbCcsMTY0Mik7YmNiKDU3NCwxLHszNjk6MX0sTldiKTtfLktlPWZ1bmN0aW9uIE9XYihhKXtNV2IodGhpcyxCRChhLDE0MCkpfTtfLmI9MDt2YXIgS1diO3ZhciBWUD1tZGIoJG1lLCdSZWN0aWxpbmVhckNvbnZleEh1bGwvTWF4aW1hbEVsZW1lbnRzRXZlbnRIYW5kbGVyJyw1NzQpO2JjYigxNjQ0LDEsRGtlLFFXYik7Xy51ZT1mdW5jdGlvbiBSV2IoYSxiKXtyZXR1cm4gUFdiKEVEKGEpLEVEKGIpKX07Xy5GYj1mdW5jdGlvbiBTV2IoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFRXYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgVVA9bWRiKCRtZSwnUmVjdGlsaW5lYXJDb252ZXhIdWxsL01heGltYWxFbGVtZW50c0V2ZW50SGFuZGxlci9sYW1iZGEkMCRUeXBlJywxNjQ0KTtiY2IoMTY0MywxLHszNjk6MX0sVldiKTtfLktlPWZ1bmN0aW9uIFdXYihhKXtVV2IodGhpcyxCRChhLDE0MCkpfTtfLmE9MDtfLmI9bnVsbDtfLmM9bnVsbDtfLmQ9bnVsbDtfLmU9bnVsbDt2YXIgV1A9bWRiKCRtZSwnUmVjdGlsaW5lYXJDb252ZXhIdWxsL1JlY3RhbmdsZUV2ZW50SGFuZGxlcicsMTY0Myk7YmNiKDE2NDUsMSxEa2UsWFdiKTtfLnVlPWZ1bmN0aW9uIFlXYihhLGIpe3JldHVybiBFV2IoQkQoYSwxNDApLEJEKGIsMTQwKSl9O18uRmI9ZnVuY3Rpb24gWldiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiAkV2IoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFhQPW1kYigkbWUsJ1JlY3RpbGluZWFyQ29udmV4SHVsbC9sYW1iZGEkMCRUeXBlJywxNjQ1KTtiY2IoMTY0NiwxLERrZSxfV2IpO18udWU9ZnVuY3Rpb24gYVhiKGEsYil7cmV0dXJuIEZXYihCRChhLDE0MCksQkQoYiwxNDApKX07Xy5GYj1mdW5jdGlvbiBiWGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGNYYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgWVA9bWRiKCRtZSwnUmVjdGlsaW5lYXJDb252ZXhIdWxsL2xhbWJkYSQxJFR5cGUnLDE2NDYpO2JjYigxNjQ3LDEsRGtlLGRYYik7Xy51ZT1mdW5jdGlvbiBlWGIoYSxiKXtyZXR1cm4gR1diKEJEKGEsMTQwKSxCRChiLDE0MCkpfTtfLkZiPWZ1bmN0aW9uIGZYYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gZ1hiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBaUD1tZGIoJG1lLCdSZWN0aWxpbmVhckNvbnZleEh1bGwvbGFtYmRhJDIkVHlwZScsMTY0Nyk7YmNiKDE2NDgsMSxEa2UsaFhiKTtfLnVlPWZ1bmN0aW9uIGlYYihhLGIpe3JldHVybiBIV2IoQkQoYSwxNDApLEJEKGIsMTQwKSl9O18uRmI9ZnVuY3Rpb24galhiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBrWGIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyICRQPW1kYigkbWUsJ1JlY3RpbGluZWFyQ29udmV4SHVsbC9sYW1iZGEkMyRUeXBlJywxNjQ4KTtiY2IoMTY0OSwxLERrZSxsWGIpO18udWU9ZnVuY3Rpb24gbVhiKGEsYil7cmV0dXJuIElXYihCRChhLDE0MCksQkQoYiwxNDApKX07Xy5GYj1mdW5jdGlvbiBuWGIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG9YYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgX1A9bWRiKCRtZSwnUmVjdGlsaW5lYXJDb252ZXhIdWxsL2xhbWJkYSQ0JFR5cGUnLDE2NDkpO2JjYigxNjUwLDEse30scVhiKTt2YXIgY1E9bWRiKCRtZSwnU2NhbmxpbmUnLDE2NTApO2JjYigyMDA1LDEse30pO3ZhciBkUT1tZGIoX21lLCdBYnN0cmFjdEdyYXBoUGxhY2VyJywyMDA1KTtiY2IoMzI1LDEsezMyNToxfSxBWGIpO18ubWY9ZnVuY3Rpb24gQlhiKGEpe2lmKHRoaXMubmYoYSkpe1JjKHRoaXMuYixCRCh2TmIoYSwod3RjKCksRXNjKSksMjEpLGEpO3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX07Xy5uZj1mdW5jdGlvbiBDWGIoYSl7dmFyIGIsYyxkLGU7Yj1CRCh2TmIoYSwod3RjKCksRXNjKSksMjEpO2U9QkQoUWMod1hiLGIpLDIxKTtmb3IoZD1lLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksMjEpO2lmKCFCRChRYyh0aGlzLmIsYyksMTUpLmRjKCkpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9O3ZhciB3WGI7dmFyIGdRPW1kYihfbWUsJ0NvbXBvbmVudEdyb3VwJywzMjUpO2JjYig3NjUsMjAwNSx7fSxIWGIpO18ub2Y9ZnVuY3Rpb24gSVhiKGEpe3ZhciBiLGM7Zm9yKGM9bmV3IG9sYih0aGlzLmEpO2MuYTxjLmMuYy5sZW5ndGg7KXtiPUJEKG1sYihjKSwzMjUpO2lmKGIubWYoYSkpe3JldHVybn19RWtiKHRoaXMuYSxuZXcgQVhiKGEpKX07Xy5sZj1mdW5jdGlvbiBKWGIoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbzt0aGlzLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Yi5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2lmKGEuZGMoKSl7Yi5mLmE9MDtiLmYuYj0wO3JldHVybn1nPUJEKGEuWGIoMCksMzcpO3ROYihiLGcpO2ZvcihlPWEuS2MoKTtlLk9iKCk7KXtkPUJEKGUuUGIoKSwzNyk7dGhpcy5vZihkKX1vPW5ldyBkN2M7Zj1FZGIoRUQodk5iKGcsKE55YygpLGt5YykpKSk7Zm9yKGo9bmV3IG9sYih0aGlzLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihqKSwzMjUpO2s9RFhiKGgsZik7dlhiKFVjKGguYiksby5hLG8uYik7by5hKz1rLmE7by5iKz1rLmJ9Yi5mLmE9by5hLWY7Yi5mLmI9by5iLWY7aWYoQ2NiKEREKHZOYihnLHF3YykpKSYmUEQodk5iKGcsU3djKSk9PT1QRCgoQWFkKCksd2FkKSkpe2ZvcihuPWEuS2MoKTtuLk9iKCk7KXtsPUJEKG4uUGIoKSwzNyk7dVhiKGwsbC5jLmEsbC5jLmIpfWM9bmV3IGdZYjtZWGIoYyxhLGYpO2ZvcihtPWEuS2MoKTttLk9iKCk7KXtsPUJEKG0uUGIoKSwzNyk7UDZjKFg2YyhsLmMpLGMuZSl9UDZjKFg2YyhiLmYpLGMuYSl9Zm9yKGk9bmV3IG9sYih0aGlzLmEpO2kuYTxpLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihpKSwzMjUpO3RYYihiLFVjKGguYikpfX07dmFyIGVRPW1kYihfbWUsJ0NvbXBvbmVudEdyb3VwR3JhcGhQbGFjZXInLDc2NSk7YmNiKDEyOTMsNzY1LHt9LExYYik7Xy5vZj1mdW5jdGlvbiBNWGIoYSl7S1hiKHRoaXMsYSl9O18ubGY9ZnVuY3Rpb24gTlhiKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0O3RoaXMuYS5jPUtDKFNJLFVoZSwxLDAsNSwxKTtiLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7aWYoYS5kYygpKXtiLmYuYT0wO2IuZi5iPTA7cmV0dXJufWc9QkQoYS5YYigwKSwzNyk7dE5iKGIsZyk7Zm9yKGU9YS5LYygpO2UuT2IoKTspe2Q9QkQoZS5QYigpLDM3KTtLWGIodGhpcyxkKX10PW5ldyBkN2M7cz1uZXcgZDdjO3A9bmV3IGQ3YztvPW5ldyBkN2M7Zj1FZGIoRUQodk5iKGcsKE55YygpLGt5YykpKSk7Zm9yKGo9bmV3IG9sYih0aGlzLmEpO2ouYTxqLmMuYy5sZW5ndGg7KXtoPUJEKG1sYihqKSwzMjUpO2lmKGZhZChCRCh2TmIoYiwoWTljKCksejhjKSksMTAzKSkpe3AuYT10LmE7Zm9yKHI9bmV3IE12KFBjKEZjKGguYikuYSkuYS5rYygpKTtyLmIuT2IoKTspe3E9QkQoTHYoci5iLlBiKCkpLDIxKTtpZihxLkhjKChVY2QoKSxBY2QpKSl7cC5hPXMuYTticmVha319fWVsc2UgaWYoZ2FkKEJEKHZOYihiLHo4YyksMTAzKSkpe3AuYj10LmI7Zm9yKHI9bmV3IE12KFBjKEZjKGguYikuYSkuYS5rYygpKTtyLmIuT2IoKTspe3E9QkQoTHYoci5iLlBiKCkpLDIxKTtpZihxLkhjKChVY2QoKSxUY2QpKSl7cC5iPXMuYjticmVha319fWs9RFhiKEJEKGgsNTcwKSxmKTt2WGIoVWMoaC5iKSxwLmEscC5iKTtpZihmYWQoQkQodk5iKGIsejhjKSwxMDMpKSl7cy5hPXAuYStrLmE7by5hPSR3bmQuTWF0aC5tYXgoby5hLHMuYSk7Zm9yKHI9bmV3IE12KFBjKEZjKGguYikuYSkuYS5rYygpKTtyLmIuT2IoKTspe3E9QkQoTHYoci5iLlBiKCkpLDIxKTtpZihxLkhjKChVY2QoKSxSY2QpKSl7dC5hPXAuYStrLmE7YnJlYWt9fXMuYj1wLmIray5iO3AuYj1zLmI7by5iPSR3bmQuTWF0aC5tYXgoby5iLHAuYil9ZWxzZSBpZihnYWQoQkQodk5iKGIsejhjKSwxMDMpKSl7cy5iPXAuYitrLmI7by5iPSR3bmQuTWF0aC5tYXgoby5iLHMuYik7Zm9yKHI9bmV3IE12KFBjKEZjKGguYikuYSkuYS5rYygpKTtyLmIuT2IoKTspe3E9QkQoTHYoci5iLlBiKCkpLDIxKTtpZihxLkhjKChVY2QoKSx6Y2QpKSl7dC5iPXAuYitrLmI7YnJlYWt9fXMuYT1wLmEray5hO3AuYT1zLmE7by5hPSR3bmQuTWF0aC5tYXgoby5hLHAuYSl9fWIuZi5hPW8uYS1mO2IuZi5iPW8uYi1mO2lmKENjYihERCh2TmIoZyxxd2MpKSkmJlBEKHZOYihnLFN3YykpPT09UEQoKEFhZCgpLHdhZCkpKXtmb3Iobj1hLktjKCk7bi5PYigpOyl7bD1CRChuLlBiKCksMzcpO3VYYihsLGwuYy5hLGwuYy5iKX1jPW5ldyBnWWI7WVhiKGMsYSxmKTtmb3IobT1hLktjKCk7bS5PYigpOyl7bD1CRChtLlBiKCksMzcpO1A2YyhYNmMobC5jKSxjLmUpfVA2YyhYNmMoYi5mKSxjLmEpfWZvcihpPW5ldyBvbGIodGhpcy5hKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMzI1KTt0WGIoYixVYyhoLmIpKX19O3ZhciBmUT1tZGIoX21lLCdDb21wb25lbnRHcm91cE1vZGVsT3JkZXJHcmFwaFBsYWNlcicsMTI5Myk7YmNiKDQyMywyMix7MzoxLDM1OjEsMjI6MSw0MjM6MX0sU1hiKTt2YXIgT1hiLFBYYixRWGI7dmFyIGhRPW5kYihfbWUsJ0NvbXBvbmVudE9yZGVyaW5nU3RyYXRlZ3knLDQyMyxDSSxVWGIsVFhiKTt2YXIgVlhiO2JjYig2NTAsMSx7fSxnWWIpO3ZhciBwUT1tZGIoX21lLCdDb21wb25lbnRzQ29tcGFjdG9yJyw2NTApO2JjYigxNDY4LDEyLGFrZSxqWWIpO18uRmM9ZnVuY3Rpb24ga1liKGEpe3JldHVybiBoWWIodGhpcyxCRChhLDE0MCkpfTt2YXIgaVE9bWRiKF9tZSwnQ29tcG9uZW50c0NvbXBhY3Rvci9IdWxscG9pbnRzJywxNDY4KTtiY2IoMTQ2NSwxLHs4NDE6MX0sbVliKTtfLmE9ZmFsc2U7dmFyIGpRPW1kYihfbWUsJ0NvbXBvbmVudHNDb21wYWN0b3IvSW50ZXJuYWxDb21wb25lbnQnLDE0NjUpO2JjYigxNDY0LDEsdmllLG5ZYik7Xy5KYz1mdW5jdGlvbiBvWWIoYSl7cmViKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gcFliKCl7cmV0dXJuIG5ldyBvbGIodGhpcy5hKX07dmFyIGtRPW1kYihfbWUsJ0NvbXBvbmVudHNDb21wYWN0b3IvSW50ZXJuYWxDb25uZWN0ZWRDb21wb25lbnRzJywxNDY0KTtiY2IoMTQ2NywxLHs1OTQ6MX0scVliKTtfLmhmPWZ1bmN0aW9uIHNZYigpe3JldHVybiBudWxsfTtfLmpmPWZ1bmN0aW9uIHRZYigpe3JldHVybiB0aGlzLmF9O18uZ2Y9ZnVuY3Rpb24gclliKCl7cmV0dXJuIGNZYih0aGlzLmQpfTtfLmtmPWZ1bmN0aW9uIHVZYigpe3JldHVybiB0aGlzLmJ9O3ZhciBsUT1tZGIoX21lLCdDb21wb25lbnRzQ29tcGFjdG9yL0ludGVybmFsRXh0ZXJuYWxFeHRlbnNpb24nLDE0NjcpO2JjYigxNDY2LDEsezU5NDoxfSx2WWIpO18uamY9ZnVuY3Rpb24geVliKCl7cmV0dXJuIHRoaXMuYX07Xy5nZj1mdW5jdGlvbiB3WWIoKXtyZXR1cm4gY1liKHRoaXMuZCl9O18uaGY9ZnVuY3Rpb24geFliKCl7cmV0dXJuIHRoaXMuY307Xy5rZj1mdW5jdGlvbiB6WWIoKXtyZXR1cm4gdGhpcy5ifTt2YXIgbVE9bWRiKF9tZSwnQ29tcG9uZW50c0NvbXBhY3Rvci9JbnRlcm5hbFVuaW9uRXh0ZXJuYWxFeHRlbnNpb24nLDE0NjYpO2JjYigxNDcwLDEse30sQVliKTt2YXIgblE9bWRiKF9tZSwnQ29tcG9uZW50c0NvbXBhY3Rvci9PdXRlclNlZ21lbnRzJywxNDcwKTtiY2IoMTQ2OSwxLHt9LEJZYik7dmFyIG9RPW1kYihfbWUsJ0NvbXBvbmVudHNDb21wYWN0b3IvU2VnbWVudHMnLDE0NjkpO2JjYigxMjY0LDEse30sRlliKTt2YXIgclE9bWRiKF9tZSxobWUsMTI2NCk7YmNiKDEyNjUsMSxEa2UsSFliKTtfLnVlPWZ1bmN0aW9uIElZYihhLGIpe3JldHVybiBHWWIoQkQoYSwzNyksQkQoYiwzNykpfTtfLkZiPWZ1bmN0aW9uIEpZYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gS1liKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBxUT1tZGIoX21lLCdDb21wb25lbnRzUHJvY2Vzc29yL2xhbWJkYSQwJFR5cGUnLDEyNjUpO2JjYig1NzAsMzI1LHszMjU6MSw1NzA6MX0sUFliKTtfLm1mPWZ1bmN0aW9uIFFZYihhKXtyZXR1cm4gTlliKHRoaXMsYSl9O18ubmY9ZnVuY3Rpb24gUlliKGEpe3JldHVybiBPWWIodGhpcyxhKX07dmFyIExZYjt2YXIgc1E9bWRiKF9tZSwnTW9kZWxPcmRlckNvbXBvbmVudEdyb3VwJyw1NzApO2JjYigxMjkxLDIwMDUse30sU1liKTtfLmxmPWZ1bmN0aW9uIFRZYihhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdztpZihhLmdjKCk9PTEpe3Q9QkQoYS5YYigwKSwzNyk7aWYodCE9Yil7Yi5hLmM9S0MoU0ksVWhlLDEsMCw1LDEpO3NYYihiLHQsMCwwKTt0TmIoYix0KTt1X2IoYi5kLHQuZCk7Yi5mLmE9dC5mLmE7Yi5mLmI9dC5mLmJ9cmV0dXJufWVsc2UgaWYoYS5kYygpKXtiLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Yi5mLmE9MDtiLmYuYj0wO3JldHVybn1pZihQRCh2TmIoYiwoTnljKCksdHdjKSkpPT09UEQoKFJYYigpLFFYYikpKXtmb3IoaT1hLktjKCk7aS5PYigpOyl7Zz1CRChpLlBiKCksMzcpO3I9MDtmb3IocD1uZXcgb2xiKGcuYSk7cC5hPHAuYy5jLmxlbmd0aDspe289QkQobWxiKHApLDEwKTtyKz1CRCh2TmIobyxieWMpLDE5KS5hfWcucD1yfW1tYigpO2EuYWQobmV3IFZZYil9Zj1CRChhLlhiKDApLDM3KTtiLmEuYz1LQyhTSSxVaGUsMSwwLDUsMSk7dE5iKGIsZik7bj0wO3U9MDtmb3Ioaj1hLktjKCk7ai5PYigpOyl7Zz1CRChqLlBiKCksMzcpO3M9Zy5mO249JHduZC5NYXRoLm1heChuLHMuYSk7dSs9cy5hKnMuYn1uPSR3bmQuTWF0aC5tYXgobiwkd25kLk1hdGguc3FydCh1KSpFZGIoRUQodk5iKGIsb3djKSkpKTtlPUVkYihFRCh2TmIoYixreWMpKSk7dj0wO3c9MDttPTA7Yz1lO2ZvcihoPWEuS2MoKTtoLk9iKCk7KXtnPUJEKGguUGIoKSwzNyk7cz1nLmY7aWYoditzLmE+bil7dj0wO3crPW0rZTttPTB9cT1nLmM7dVhiKGcsditxLmEsdytxLmIpO1g2YyhxKTtjPSR3bmQuTWF0aC5tYXgoYyx2K3MuYSk7bT0kd25kLk1hdGgubWF4KG0scy5iKTt2Kz1zLmErZX1iLmYuYT1jO2IuZi5iPXcrbTtpZihDY2IoREQodk5iKGYscXdjKSkpKXtkPW5ldyBnWWI7WVhiKGQsYSxlKTtmb3IobD1hLktjKCk7bC5PYigpOyl7az1CRChsLlBiKCksMzcpO1A2YyhYNmMoay5jKSxkLmUpfVA2YyhYNmMoYi5mKSxkLmEpfXRYYihiLGEpfTt2YXIgdVE9bWRiKF9tZSwnU2ltcGxlUm93R3JhcGhQbGFjZXInLDEyOTEpO2JjYigxMjkyLDEsRGtlLFZZYik7Xy51ZT1mdW5jdGlvbiBXWWIoYSxiKXtyZXR1cm4gVVliKEJEKGEsMzcpLEJEKGIsMzcpKX07Xy5GYj1mdW5jdGlvbiBYWWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFlZYigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgdFE9bWRiKF9tZSwnU2ltcGxlUm93R3JhcGhQbGFjZXIvMScsMTI5Mik7dmFyIFpZYjtiY2IoMTI2MiwxLFZrZSxkWmIpO18uTGI9ZnVuY3Rpb24gZVpiKGEpe3ZhciBiO3JldHVybiBiPUJEKHZOYihCRChhLDI0MykuYiwoTnljKCksanhjKSksNzQpLCEhYiYmYi5iIT0wfTtfLkZiPWZ1bmN0aW9uIGZaYihhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gZ1piKGEpe3ZhciBiO3JldHVybiBiPUJEKHZOYihCRChhLDI0MykuYiwoTnljKCksanhjKSksNzQpLCEhYiYmYi5iIT0wfTt2YXIgdlE9bWRiKGRuZSwnQ29tcG91bmRHcmFwaFBvc3Rwcm9jZXNzb3IvMScsMTI2Mik7YmNiKDEyNjEsMSxlbmUsd1piKTtfLnBmPWZ1bmN0aW9uIHhaYihhLGIpe3FaYih0aGlzLEJEKGEsMzcpLGIpfTt2YXIgeFE9bWRiKGRuZSwnQ29tcG91bmRHcmFwaFByZXByb2Nlc3NvcicsMTI2MSk7YmNiKDQ0MSwxLHs0NDE6MX0seVpiKTtfLmM9ZmFsc2U7dmFyIHdRPW1kYihkbmUsJ0NvbXBvdW5kR3JhcGhQcmVwcm9jZXNzb3IvRXh0ZXJuYWxQb3J0Jyw0NDEpO2JjYigyNDMsMSx7MjQzOjF9LEJaYik7Xy5JYj1mdW5jdGlvbiBDWmIoKXtyZXR1cm4gWnIodGhpcy5jKSsnOicrVFpiKHRoaXMuYil9O3ZhciB6UT1tZGIoZG5lLCdDcm9zc0hpZXJhcmNoeUVkZ2UnLDI0Myk7YmNiKDc2MywxLERrZSxFWmIpO18udWU9ZnVuY3Rpb24gRlpiKGEsYil7cmV0dXJuIERaYih0aGlzLEJEKGEsMjQzKSxCRChiLDI0MykpfTtfLkZiPWZ1bmN0aW9uIEdaYihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gSVpiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciB5UT1tZGIoZG5lLCdDcm9zc0hpZXJhcmNoeUVkZ2VDb21wYXJhdG9yJyw3NjMpO2JjYigyOTksMTM0LHszOjEsMjk5OjEsOTQ6MSwxMzQ6MX0pO18ucD0wO3ZhciBKUT1tZGIoZm5lLCdMR3JhcGhFbGVtZW50JywyOTkpO2JjYigxNywyOTksezM6MSwxNzoxLDI5OToxLDk0OjEsMTM0OjF9LFVaYik7Xy5JYj1mdW5jdGlvbiBWWmIoKXtyZXR1cm4gVFpiKHRoaXMpfTt2YXIgQVE9bWRiKGZuZSwnTEVkZ2UnLDE3KTtiY2IoMzcsMjk5LHszOjEsMjA6MSwzNzoxLDI5OToxLDk0OjEsMTM0OjF9LFhaYik7Xy5KYz1mdW5jdGlvbiBZWmIoYSl7cmViKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gWlpiKCl7cmV0dXJuIG5ldyBvbGIodGhpcy5iKX07Xy5JYj1mdW5jdGlvbiAkWmIoKXtpZih0aGlzLmIuYy5sZW5ndGg9PTApe3JldHVybiAnRy11bmxheWVyZWQnK0ZlKHRoaXMuYSl9ZWxzZSBpZih0aGlzLmEuYy5sZW5ndGg9PTApe3JldHVybiAnRy1sYXllcmVkJytGZSh0aGlzLmIpfXJldHVybiAnR1tsYXllcmxlc3MnK0ZlKHRoaXMuYSkrJywgbGF5ZXJzJytGZSh0aGlzLmIpKyddJ307dmFyIEtRPW1kYihmbmUsJ0xHcmFwaCcsMzcpO3ZhciBfWmI7YmNiKDY1NywxLHt9KTtfLnFmPWZ1bmN0aW9uIGIkYigpe3JldHVybiB0aGlzLmUubn07Xy5XZT1mdW5jdGlvbiBjJGIoYSl7cmV0dXJuIHZOYih0aGlzLmUsYSl9O18ucmY9ZnVuY3Rpb24gZCRiKCl7cmV0dXJuIHRoaXMuZS5vfTtfLnNmPWZ1bmN0aW9uIGUkYigpe3JldHVybiB0aGlzLmUucH07Xy5YZT1mdW5jdGlvbiBmJGIoYSl7cmV0dXJuIHdOYih0aGlzLmUsYSl9O18udGY9ZnVuY3Rpb24gZyRiKGEpe3RoaXMuZS5uLmE9YS5hO3RoaXMuZS5uLmI9YS5ifTtfLnVmPWZ1bmN0aW9uIGgkYihhKXt0aGlzLmUuby5hPWEuYTt0aGlzLmUuby5iPWEuYn07Xy52Zj1mdW5jdGlvbiBpJGIoYSl7dGhpcy5lLnA9YX07dmFyIEJRPW1kYihmbmUsJ0xHcmFwaEFkYXB0ZXJzL0Fic3RyYWN0TFNoYXBlQWRhcHRlcicsNjU3KTtiY2IoNTc3LDEsezgzOToxfSxqJGIpO18ud2Y9ZnVuY3Rpb24gayRiKCl7dmFyIGEsYjtpZighdGhpcy5iKXt0aGlzLmI9UHUodGhpcy5hLmIuYy5sZW5ndGgpO2ZvcihiPW5ldyBvbGIodGhpcy5hLmIpO2IuYTxiLmMuYy5sZW5ndGg7KXthPUJEKG1sYihiKSw3MCk7RWtiKHRoaXMuYixuZXcgdiRiKGEpKX19cmV0dXJuIHRoaXMuYn07Xy5iPW51bGw7dmFyIENRPW1kYihmbmUsJ0xHcmFwaEFkYXB0ZXJzL0xFZGdlQWRhcHRlcicsNTc3KTtiY2IoNjU2LDEse30sbCRiKTtfLnhmPWZ1bmN0aW9uIG0kYigpe3ZhciBhLGIsYyxkLGUsZjtpZighdGhpcy5iKXt0aGlzLmI9bmV3IFJrYjtmb3IoZD1uZXcgb2xiKHRoaXMuYS5iKTtkLmE8ZC5jLmMubGVuZ3RoOyl7Yz1CRChtbGIoZCksMjkpO2ZvcihmPW5ldyBvbGIoYy5hKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMTApO2lmKHRoaXMuYy5NYihlKSl7RWtiKHRoaXMuYixuZXcgeCRiKHRoaXMsZSx0aGlzLmUpKTtpZih0aGlzLmQpe2lmKHdOYihlLCh3dGMoKSx2dGMpKSl7Zm9yKGI9QkQodk5iKGUsdnRjKSwxNSkuS2MoKTtiLk9iKCk7KXthPUJEKGIuUGIoKSwxMCk7RWtiKHRoaXMuYixuZXcgeCRiKHRoaXMsYSxmYWxzZSkpfX1pZih3TmIoZSx0c2MpKXtmb3IoYj1CRCh2TmIoZSx0c2MpLDE1KS5LYygpO2IuT2IoKTspe2E9QkQoYi5QYigpLDEwKTtFa2IodGhpcy5iLG5ldyB4JGIodGhpcyxhLGZhbHNlKSl9fX19fX19cmV0dXJuIHRoaXMuYn07Xy5xZj1mdW5jdGlvbiBuJGIoKXt0aHJvdyB2YmIobmV3IGNnYihobmUpKX07Xy5XZT1mdW5jdGlvbiBvJGIoYSl7cmV0dXJuIHZOYih0aGlzLmEsYSl9O18ucmY9ZnVuY3Rpb24gcCRiKCl7cmV0dXJuIHRoaXMuYS5mfTtfLnNmPWZ1bmN0aW9uIHEkYigpe3JldHVybiB0aGlzLmEucH07Xy5YZT1mdW5jdGlvbiByJGIoYSl7cmV0dXJuIHdOYih0aGlzLmEsYSl9O18udGY9ZnVuY3Rpb24gcyRiKGEpe3Rocm93IHZiYihuZXcgY2diKGhuZSkpfTtfLnVmPWZ1bmN0aW9uIHQkYihhKXt0aGlzLmEuZi5hPWEuYTt0aGlzLmEuZi5iPWEuYn07Xy52Zj1mdW5jdGlvbiB1JGIoYSl7dGhpcy5hLnA9YX07Xy5iPW51bGw7Xy5kPWZhbHNlO18uZT1mYWxzZTt2YXIgRFE9bWRiKGZuZSwnTEdyYXBoQWRhcHRlcnMvTEdyYXBoQWRhcHRlcicsNjU2KTtiY2IoNTc2LDY1Nyx7MTgxOjF9LHYkYik7dmFyIEVRPW1kYihmbmUsJ0xHcmFwaEFkYXB0ZXJzL0xMYWJlbEFkYXB0ZXInLDU3Nik7YmNiKDU3NSw2NTcsezY4MDoxfSx4JGIpO18ueWY9ZnVuY3Rpb24geSRiKCl7cmV0dXJuIHRoaXMuYn07Xy56Zj1mdW5jdGlvbiB6JGIoKXtyZXR1cm4gbW1iKCksbW1iKCksam1ifTtfLndmPWZ1bmN0aW9uIEEkYigpe3ZhciBhLGI7aWYoIXRoaXMuYSl7dGhpcy5hPVB1KEJEKHRoaXMuZSwxMCkuYi5jLmxlbmd0aCk7Zm9yKGI9bmV3IG9sYihCRCh0aGlzLmUsMTApLmIpO2IuYTxiLmMuYy5sZW5ndGg7KXthPUJEKG1sYihiKSw3MCk7RWtiKHRoaXMuYSxuZXcgdiRiKGEpKX19cmV0dXJuIHRoaXMuYX07Xy5BZj1mdW5jdGlvbiBCJGIoKXt2YXIgYTthPUJEKHRoaXMuZSwxMCkuZDtyZXR1cm4gbmV3IEpfYihhLmQsYS5jLGEuYSxhLmIpfTtfLkJmPWZ1bmN0aW9uIEMkYigpe3JldHVybiBtbWIoKSxtbWIoKSxqbWJ9O18uQ2Y9ZnVuY3Rpb24gRCRiKCl7dmFyIGEsYjtpZighdGhpcy5jKXt0aGlzLmM9UHUoQkQodGhpcy5lLDEwKS5qLmMubGVuZ3RoKTtmb3IoYj1uZXcgb2xiKEJEKHRoaXMuZSwxMCkuaik7Yi5hPGIuYy5jLmxlbmd0aDspe2E9QkQobWxiKGIpLDExKTtFa2IodGhpcy5jLG5ldyBJJGIoYSx0aGlzLmQpKX19cmV0dXJuIHRoaXMuY307Xy5EZj1mdW5jdGlvbiBFJGIoKXtyZXR1cm4gQ2NiKEREKHZOYihCRCh0aGlzLmUsMTApLCh3dGMoKSx3c2MpKSkpfTtfLkVmPWZ1bmN0aW9uIEYkYihhKXtCRCh0aGlzLmUsMTApLmQuYj1hLmI7QkQodGhpcy5lLDEwKS5kLmQ9YS5kO0JEKHRoaXMuZSwxMCkuZC5jPWEuYztCRCh0aGlzLmUsMTApLmQuYT1hLmF9O18uRmY9ZnVuY3Rpb24gRyRiKGEpe0JEKHRoaXMuZSwxMCkuZi5iPWEuYjtCRCh0aGlzLmUsMTApLmYuZD1hLmQ7QkQodGhpcy5lLDEwKS5mLmM9YS5jO0JEKHRoaXMuZSwxMCkuZi5hPWEuYX07Xy5HZj1mdW5jdGlvbiBIJGIoKXt3JGIodGhpcywoYSRiKCksX1piKSl9O18uYT1udWxsO18uYj1udWxsO18uYz1udWxsO18uZD1mYWxzZTt2YXIgRlE9bWRiKGZuZSwnTEdyYXBoQWRhcHRlcnMvTE5vZGVBZGFwdGVyJyw1NzUpO2JjYigxNzIyLDY1Nyx7ODM4OjF9LEkkYik7Xy56Zj1mdW5jdGlvbiBKJGIoKXt2YXIgYSxiLGMsZDtpZih0aGlzLmQmJkJEKHRoaXMuZSwxMSkuaS5rPT0oajBiKCksaTBiKSl7cmV0dXJuIG1tYigpLG1tYigpLGptYn1lbHNlIGlmKCF0aGlzLmEpe3RoaXMuYT1uZXcgUmtiO2ZvcihjPW5ldyBvbGIoQkQodGhpcy5lLDExKS5lKTtjLmE8Yy5jLmMubGVuZ3RoOyl7YT1CRChtbGIoYyksMTcpO0VrYih0aGlzLmEsbmV3IGokYihhKSl9aWYodGhpcy5kKXtkPUJEKHZOYihCRCh0aGlzLmUsMTEpLCh3dGMoKSxndGMpKSwxMCk7aWYoZCl7Zm9yKGI9bmV3IFNyKHVyKFJfYihkKS5hLktjKCksbmV3IFNxKSk7UXIoYik7KXthPUJEKFJyKGIpLDE3KTtFa2IodGhpcy5hLG5ldyBqJGIoYSkpfX19fXJldHVybiB0aGlzLmF9O18ud2Y9ZnVuY3Rpb24gSyRiKCl7dmFyIGEsYjtpZighdGhpcy5iKXt0aGlzLmI9UHUoQkQodGhpcy5lLDExKS5mLmMubGVuZ3RoKTtmb3IoYj1uZXcgb2xiKEJEKHRoaXMuZSwxMSkuZik7Yi5hPGIuYy5jLmxlbmd0aDspe2E9QkQobWxiKGIpLDcwKTtFa2IodGhpcy5iLG5ldyB2JGIoYSkpfX1yZXR1cm4gdGhpcy5ifTtfLkJmPWZ1bmN0aW9uIEwkYigpe3ZhciBhLGIsYyxkO2lmKHRoaXMuZCYmQkQodGhpcy5lLDExKS5pLms9PShqMGIoKSxpMGIpKXtyZXR1cm4gbW1iKCksbW1iKCksam1ifWVsc2UgaWYoIXRoaXMuYyl7dGhpcy5jPW5ldyBSa2I7Zm9yKGM9bmV3IG9sYihCRCh0aGlzLmUsMTEpLmcpO2MuYTxjLmMuYy5sZW5ndGg7KXthPUJEKG1sYihjKSwxNyk7RWtiKHRoaXMuYyxuZXcgaiRiKGEpKX1pZih0aGlzLmQpe2Q9QkQodk5iKEJEKHRoaXMuZSwxMSksKHd0YygpLGd0YykpLDEwKTtpZihkKXtmb3IoYj1uZXcgU3IodXIoVV9iKGQpLmEuS2MoKSxuZXcgU3EpKTtRcihiKTspe2E9QkQoUnIoYiksMTcpO0VrYih0aGlzLmMsbmV3IGokYihhKSl9fX19cmV0dXJuIHRoaXMuY307Xy5IZj1mdW5jdGlvbiBNJGIoKXtyZXR1cm4gQkQodGhpcy5lLDExKS5qfTtfLklmPWZ1bmN0aW9uIE4kYigpe3JldHVybiBDY2IoREQodk5iKEJEKHRoaXMuZSwxMSksKHd0YygpLE5zYykpKSl9O18uYT1udWxsO18uYj1udWxsO18uYz1udWxsO18uZD1mYWxzZTt2YXIgR1E9bWRiKGZuZSwnTEdyYXBoQWRhcHRlcnMvTFBvcnRBZGFwdGVyJywxNzIyKTtiY2IoMTcyMywxLERrZSxQJGIpO18udWU9ZnVuY3Rpb24gUSRiKGEsYil7cmV0dXJuIE8kYihCRChhLDExKSxCRChiLDExKSl9O18uRmI9ZnVuY3Rpb24gUiRiKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBTJGIoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIEhRPW1kYihmbmUsJ0xHcmFwaEFkYXB0ZXJzL1BvcnRDb21wYXJhdG9yJywxNzIzKTtiY2IoODA0LDEsT2llLFQkYik7Xy5NYj1mdW5jdGlvbiBVJGIoYSl7cmV0dXJuIEJEKGEsMTApLGEkYigpLHRydWV9O3ZhciBJUT1tZGIoZm5lLCdMR3JhcGhBZGFwdGVycy9sYW1iZGEkMCRUeXBlJyw4MDQpO2JjYigzOTIsMjk5LHszOjEsMjk5OjEsMzkyOjEsOTQ6MSwxMzQ6MX0pO3ZhciBiUj1tZGIoZm5lLCdMU2hhcGUnLDM5Mik7YmNiKDcwLDM5Mix7MzoxLDI5OToxLDcwOjEsMzkyOjEsOTQ6MSwxMzQ6MX0scF9iLHFfYik7Xy5JYj1mdW5jdGlvbiByX2IoKXt2YXIgYTthPW9fYih0aGlzKTtyZXR1cm4gYT09bnVsbD8nbGFiZWwnOidsXycrYX07dmFyIExRPW1kYihmbmUsJ0xMYWJlbCcsNzApO2JjYigyMDcsMSx7MzoxLDQ6MSwyMDc6MSw0MTQ6MX0pO18uRmI9ZnVuY3Rpb24gQ19iKGEpe3ZhciBiO2lmKEpEKGEsMjA3KSl7Yj1CRChhLDIwNyk7cmV0dXJuIHRoaXMuZD09Yi5kJiZ0aGlzLmE9PWIuYSYmdGhpcy5iPT1iLmImJnRoaXMuYz09Yi5jfWVsc2V7cmV0dXJuIGZhbHNlfX07Xy5IYj1mdW5jdGlvbiBEX2IoKXt2YXIgYSxiO2E9SGRiKHRoaXMuYik8PDE2O2F8PUhkYih0aGlzLmEpJmFqZTtiPUhkYih0aGlzLmMpPDwxNjtifD1IZGIodGhpcy5kKSZhamU7cmV0dXJuIGFeYn07Xy5KZj1mdW5jdGlvbiBGX2IoYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbTtnPTA7d2hpbGUoZzxiLmxlbmd0aCYmRV9iKChCQ2IoZyxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGcpKSxtbmUpKXsrK2d9Yz1iLmxlbmd0aDt3aGlsZShjPjAmJkVfYigoQkNiKGMtMSxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGMtMSkpLG5uZSkpey0tY31pZihnPGMpe2w9bWZiKGIuc3Vic3RyKGcsYy1nKSwnLHw7Jyk7dHJ5e2ZvcihpPWwsaj0wLGs9aS5sZW5ndGg7ajxrOysrail7aD1pW2pdO2Y9bWZiKGgsJz0nKTtpZihmLmxlbmd0aCE9Mil7dGhyb3cgdmJiKG5ldyBXZGIoJ0V4cGVjdGluZyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzLicpKX1lPXVmYihmWzBdKTttPUhjYih1ZmIoZlsxXSkpO2RmYihlLCd0b3AnKT8odGhpcy5kPW0pOmRmYihlLCdsZWZ0Jyk/KHRoaXMuYj1tKTpkZmIoZSwnYm90dG9tJyk/KHRoaXMuYT1tKTpkZmIoZSwncmlnaHQnKSYmKHRoaXMuYz1tKX19Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSwxMjcpKXtkPWE7dGhyb3cgdmJiKG5ldyBXZGIob25lK2QpKX1lbHNlIHRocm93IHZiYihhKX19fTtfLkliPWZ1bmN0aW9uIEdfYigpe3JldHVybiAnW3RvcD0nK3RoaXMuZCsnLGxlZnQ9Jyt0aGlzLmIrJyxib3R0b209Jyt0aGlzLmErJyxyaWdodD0nK3RoaXMuYysnXSd9O18uYT0wO18uYj0wO18uYz0wO18uZD0wO3ZhciBuMT1tZGIocG5lLCdTcGFjaW5nJywyMDcpO2JjYigxNDIsMjA3LHFuZSxIX2IsSV9iLEpfYixLX2IpO3ZhciBpMT1tZGIocG5lLCdFbGtNYXJnaW4nLDE0Mik7YmNiKDY1MSwxNDIscW5lLExfYik7dmFyIE1RPW1kYihmbmUsJ0xNYXJnaW4nLDY1MSk7YmNiKDEwLDM5Mix7MzoxLDI5OToxLDEwOjEsMzkyOjEsOTQ6MSwxMzQ6MX0sYjBiKTtfLkliPWZ1bmN0aW9uIGMwYigpe3JldHVybiBhMGIodGhpcyl9O18uaT1mYWxzZTt2YXIgT1E9bWRiKGZuZSwnTE5vZGUnLDEwKTtiY2IoMjY3LDIyLHszOjEsMzU6MSwyMjoxLDI2NzoxfSxrMGIpO3ZhciBkMGIsZTBiLGYwYixnMGIsaDBiLGkwYjt2YXIgTlE9bmRiKGZuZSwnTE5vZGUvTm9kZVR5cGUnLDI2NyxDSSxtMGIsbDBiKTt2YXIgbjBiO2JjYigxMTYsMjA3LHJuZSxwMGIscTBiLHIwYik7dmFyIGoxPW1kYihwbmUsJ0Vsa1BhZGRpbmcnLDExNik7YmNiKDc2NCwxMTYscm5lLHMwYik7dmFyIFBRPW1kYihmbmUsJ0xQYWRkaW5nJyw3NjQpO2JjYigxMSwzOTIsezM6MSwyOTk6MSwxMToxLDM5MjoxLDk0OjEsMTM0OjF9LEgwYik7Xy5JYj1mdW5jdGlvbiBJMGIoKXt2YXIgYSxiLGM7YT1uZXcgVWZiO1FmYigoYS5hKz0ncF8nLGEpLEMwYih0aGlzKSk7ISF0aGlzLmkmJlFmYihQZmIoKGEuYSs9J1snLGEpLHRoaXMuaSksJ10nKTtpZih0aGlzLmUuYy5sZW5ndGg9PTEmJnRoaXMuZy5jLmxlbmd0aD09MCYmQkQoSWtiKHRoaXMuZSwwKSwxNykuYyE9dGhpcyl7Yj1CRChJa2IodGhpcy5lLDApLDE3KS5jO1FmYigoYS5hKz0nIDw8ICcsYSksQzBiKGIpKTtRZmIoUGZiKChhLmErPSdbJyxhKSxiLmkpLCddJyl9aWYodGhpcy5lLmMubGVuZ3RoPT0wJiZ0aGlzLmcuYy5sZW5ndGg9PTEmJkJEKElrYih0aGlzLmcsMCksMTcpLmQhPXRoaXMpe2M9QkQoSWtiKHRoaXMuZywwKSwxNykuZDtRZmIoKGEuYSs9JyA+PiAnLGEpLEMwYihjKSk7UWZiKFBmYigoYS5hKz0nWycsYSksYy5pKSwnXScpfXJldHVybiBhLmF9O18uYz10cnVlO18uZD1mYWxzZTt2YXIgdDBiLHUwYix2MGIsdzBiLHgwYix5MGI7dmFyIGFSPW1kYihmbmUsJ0xQb3J0JywxMSk7YmNiKDM5NywxLHZpZSxKMGIpO18uSmM9ZnVuY3Rpb24gSzBiKGEpe3JlYih0aGlzLGEpfTtfLktjPWZ1bmN0aW9uIEwwYigpe3ZhciBhO2E9bmV3IG9sYih0aGlzLmEuZSk7cmV0dXJuIG5ldyBNMGIoYSl9O3ZhciBSUT1tZGIoZm5lLCdMUG9ydC8xJywzOTcpO2JjYigxMjkwLDEsYWllLE0wYik7Xy5OYj1mdW5jdGlvbiBOMGIoYSl7UnJiKHRoaXMsYSl9O18uUGI9ZnVuY3Rpb24gUDBiKCl7cmV0dXJuIEJEKG1sYih0aGlzLmEpLDE3KS5jfTtfLk9iPWZ1bmN0aW9uIE8wYigpe3JldHVybiBsbGIodGhpcy5hKX07Xy5RYj1mdW5jdGlvbiBRMGIoKXtubGIodGhpcy5hKX07dmFyIFFRPW1kYihmbmUsJ0xQb3J0LzEvMScsMTI5MCk7YmNiKDM1OSwxLHZpZSxSMGIpO18uSmM9ZnVuY3Rpb24gUzBiKGEpe3JlYih0aGlzLGEpfTtfLktjPWZ1bmN0aW9uIFQwYigpe3ZhciBhO3JldHVybiBhPW5ldyBvbGIodGhpcy5hLmcpLG5ldyBVMGIoYSl9O3ZhciBUUT1tZGIoZm5lLCdMUG9ydC8yJywzNTkpO2JjYig3NjIsMSxhaWUsVTBiKTtfLk5iPWZ1bmN0aW9uIFYwYihhKXtScmIodGhpcyxhKX07Xy5QYj1mdW5jdGlvbiBYMGIoKXtyZXR1cm4gQkQobWxiKHRoaXMuYSksMTcpLmR9O18uT2I9ZnVuY3Rpb24gVzBiKCl7cmV0dXJuIGxsYih0aGlzLmEpfTtfLlFiPWZ1bmN0aW9uIFkwYigpe25sYih0aGlzLmEpfTt2YXIgU1E9bWRiKGZuZSwnTFBvcnQvMi8xJyw3NjIpO2JjYigxMjgzLDEsdmllLFowYik7Xy5KYz1mdW5jdGlvbiAkMGIoYSl7cmViKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gXzBiKCl7cmV0dXJuIG5ldyBiMWIodGhpcyl9O3ZhciBWUT1tZGIoZm5lLCdMUG9ydC9Db21iaW5lSXRlcicsMTI4Myk7YmNiKDIwMSwxLGFpZSxiMWIpO18uTmI9ZnVuY3Rpb24gYzFiKGEpe1JyYih0aGlzLGEpfTtfLlFiPWZ1bmN0aW9uIGYxYigpe1NyYigpfTtfLk9iPWZ1bmN0aW9uIGQxYigpe3JldHVybiBhMWIodGhpcyl9O18uUGI9ZnVuY3Rpb24gZTFiKCl7cmV0dXJuIGxsYih0aGlzLmEpP21sYih0aGlzLmEpOm1sYih0aGlzLmIpfTt2YXIgVVE9bWRiKGZuZSwnTFBvcnQvQ29tYmluZUl0ZXIvMScsMjAxKTtiY2IoMTI4NSwxLFZrZSxoMWIpO18uTGI9ZnVuY3Rpb24gaTFiKGEpe3JldHVybiBnMWIoYSl9O18uRmI9ZnVuY3Rpb24gajFiKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBrMWIoYSl7cmV0dXJuIHowYigpLEJEKGEsMTEpLmUuYy5sZW5ndGghPTB9O3ZhciBXUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkMCRUeXBlJywxMjg1KTtiY2IoMTI4NCwxLFZrZSxtMWIpO18uTGI9ZnVuY3Rpb24gbjFiKGEpe3JldHVybiBsMWIoYSl9O18uRmI9ZnVuY3Rpb24gbzFiKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBwMWIoYSl7cmV0dXJuIHowYigpLEJEKGEsMTEpLmcuYy5sZW5ndGghPTB9O3ZhciBYUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkMSRUeXBlJywxMjg0KTtiY2IoMTI4NiwxLFZrZSxxMWIpO18uTGI9ZnVuY3Rpb24gcjFiKGEpe3JldHVybiB6MGIoKSxCRChhLDExKS5qPT0oVWNkKCksQWNkKX07Xy5GYj1mdW5jdGlvbiBzMWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIHQxYihhKXtyZXR1cm4gejBiKCksQkQoYSwxMSkuaj09KFVjZCgpLEFjZCl9O3ZhciBZUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkMiRUeXBlJywxMjg2KTtiY2IoMTI4NywxLFZrZSx1MWIpO18uTGI9ZnVuY3Rpb24gdjFiKGEpe3JldHVybiB6MGIoKSxCRChhLDExKS5qPT0oVWNkKCksemNkKX07Xy5GYj1mdW5jdGlvbiB3MWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIHgxYihhKXtyZXR1cm4gejBiKCksQkQoYSwxMSkuaj09KFVjZCgpLHpjZCl9O3ZhciBaUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkMyRUeXBlJywxMjg3KTtiY2IoMTI4OCwxLFZrZSx5MWIpO18uTGI9ZnVuY3Rpb24gejFiKGEpe3JldHVybiB6MGIoKSxCRChhLDExKS5qPT0oVWNkKCksUmNkKX07Xy5GYj1mdW5jdGlvbiBBMWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIEIxYihhKXtyZXR1cm4gejBiKCksQkQoYSwxMSkuaj09KFVjZCgpLFJjZCl9O3ZhciAkUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkNCRUeXBlJywxMjg4KTtiY2IoMTI4OSwxLFZrZSxDMWIpO18uTGI9ZnVuY3Rpb24gRDFiKGEpe3JldHVybiB6MGIoKSxCRChhLDExKS5qPT0oVWNkKCksVGNkKX07Xy5GYj1mdW5jdGlvbiBFMWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIEYxYihhKXtyZXR1cm4gejBiKCksQkQoYSwxMSkuaj09KFVjZCgpLFRjZCl9O3ZhciBfUT1tZGIoZm5lLCdMUG9ydC9sYW1iZGEkNSRUeXBlJywxMjg5KTtiY2IoMjksMjk5LHszOjEsMjA6MSwyOTk6MSwyOToxLDk0OjEsMTM0OjF9LEgxYik7Xy5KYz1mdW5jdGlvbiBJMWIoYSl7cmViKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gSjFiKCl7cmV0dXJuIG5ldyBvbGIodGhpcy5hKX07Xy5JYj1mdW5jdGlvbiBLMWIoKXtyZXR1cm4gJ0xfJytKa2IodGhpcy5iLmIsdGhpcywwKStGZSh0aGlzLmEpfTt2YXIgY1I9bWRiKGZuZSwnTGF5ZXInLDI5KTtiY2IoMTM0MiwxLHt9LGEyYik7dmFyIG1SPW1kYih0bmUsdW5lLDEzNDIpO2JjYigxMzQ2LDEse30sZTJiKTtfLktiPWZ1bmN0aW9uIGYyYihhKXtyZXR1cm4gYXRkKEJEKGEsODIpKX07dmFyIGRSPW1kYih0bmUsJ0Vsa0dyYXBoSW1wb3J0ZXIvMG1ldGhvZHJlZiRjb25uZWN0YWJsZVNoYXBlVG9Ob2RlJFR5cGUnLDEzNDYpO2JjYigxMzQ5LDEse30sZzJiKTtfLktiPWZ1bmN0aW9uIGgyYihhKXtyZXR1cm4gYXRkKEJEKGEsODIpKX07dmFyIGVSPW1kYih0bmUsJ0Vsa0dyYXBoSW1wb3J0ZXIvMW1ldGhvZHJlZiRjb25uZWN0YWJsZVNoYXBlVG9Ob2RlJFR5cGUnLDEzNDkpO2JjYigxMzQzLDEscWllLGkyYik7Xy50ZD1mdW5jdGlvbiBqMmIoYSl7UTFiKHRoaXMuYSxCRChhLDExOCkpfTt2YXIgZlI9bWRiKHRuZSx2bmUsMTM0Myk7YmNiKDEzNDQsMSxxaWUsazJiKTtfLnRkPWZ1bmN0aW9uIGwyYihhKXtRMWIodGhpcy5hLEJEKGEsMTE4KSl9O3ZhciBnUj1tZGIodG5lLHduZSwxMzQ0KTtiY2IoMTM0NSwxLHt9LG0yYik7Xy5LYj1mdW5jdGlvbiBuMmIoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKE9sZChCRChhLDc5KSksMTYpKX07dmFyIGhSPW1kYih0bmUseG5lLDEzNDUpO2JjYigxMzQ3LDEsT2llLG8yYik7Xy5NYj1mdW5jdGlvbiBwMmIoYSl7cmV0dXJuIGIyYih0aGlzLmEsQkQoYSwzMykpfTt2YXIgaVI9bWRiKHRuZSx5bmUsMTM0Nyk7YmNiKDEzNDgsMSx7fSxxMmIpO18uS2I9ZnVuY3Rpb24gcjJiKGEpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1YihObGQoQkQoYSw3OSkpLDE2KSl9O3ZhciBqUj1tZGIodG5lLCdFbGtHcmFwaEltcG9ydGVyL2xhbWJkYSQ1JFR5cGUnLDEzNDgpO2JjYigxMzUwLDEsT2llLHMyYik7Xy5NYj1mdW5jdGlvbiB0MmIoYSl7cmV0dXJuIGMyYih0aGlzLmEsQkQoYSwzMykpfTt2YXIga1I9bWRiKHRuZSwnRWxrR3JhcGhJbXBvcnRlci9sYW1iZGEkNyRUeXBlJywxMzUwKTtiY2IoMTM1MSwxLE9pZSx1MmIpO18uTWI9ZnVuY3Rpb24gdjJiKGEpe3JldHVybiBkMmIoQkQoYSw3OSkpfTt2YXIgbFI9bWRiKHRuZSwnRWxrR3JhcGhJbXBvcnRlci9sYW1iZGEkOCRUeXBlJywxMzUxKTtiY2IoMTI3OCwxLHt9LEQyYik7dmFyIHcyYjt2YXIgclI9bWRiKHRuZSwnRWxrR3JhcGhMYXlvdXRUcmFuc2ZlcnJlcicsMTI3OCk7YmNiKDEyNzksMSxPaWUsRzJiKTtfLk1iPWZ1bmN0aW9uIEgyYihhKXtyZXR1cm4gRTJiKHRoaXMuYSxCRChhLDE3KSl9O3ZhciBuUj1tZGIodG5lLCdFbGtHcmFwaExheW91dFRyYW5zZmVycmVyL2xhbWJkYSQwJFR5cGUnLDEyNzkpO2JjYigxMjgwLDEscWllLEkyYik7Xy50ZD1mdW5jdGlvbiBKMmIoYSl7eDJiKCk7RWtiKHRoaXMuYSxCRChhLDE3KSl9O3ZhciBvUj1tZGIodG5lLCdFbGtHcmFwaExheW91dFRyYW5zZmVycmVyL2xhbWJkYSQxJFR5cGUnLDEyODApO2JjYigxMjgxLDEsT2llLEsyYik7Xy5NYj1mdW5jdGlvbiBMMmIoYSl7cmV0dXJuIEYyYih0aGlzLmEsQkQoYSwxNykpfTt2YXIgcFI9bWRiKHRuZSwnRWxrR3JhcGhMYXlvdXRUcmFuc2ZlcnJlci9sYW1iZGEkMiRUeXBlJywxMjgxKTtiY2IoMTI4MiwxLHFpZSxNMmIpO18udGQ9ZnVuY3Rpb24gTjJiKGEpe3gyYigpO0VrYih0aGlzLmEsQkQoYSwxNykpfTt2YXIgcVI9bWRiKHRuZSwnRWxrR3JhcGhMYXlvdXRUcmFuc2ZlcnJlci9sYW1iZGEkMyRUeXBlJywxMjgyKTtiY2IoMTQ4NSwxLGVuZSxTMmIpO18ucGY9ZnVuY3Rpb24gVDJiKGEsYil7UTJiKEJEKGEsMzcpLGIpfTt2YXIgdVI9bWRiKEFuZSwnQ29tbWVudE5vZGVNYXJnaW5DYWxjdWxhdG9yJywxNDg1KTtiY2IoMTQ4NiwxLHt9LFUyYik7Xy5LYj1mdW5jdGlvbiBWMmIoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMjkpLmEsMTYpKX07dmFyIHNSPW1kYihBbmUsJ0NvbW1lbnROb2RlTWFyZ2luQ2FsY3VsYXRvci9sYW1iZGEkMCRUeXBlJywxNDg2KTtiY2IoMTQ4NywxLHFpZSxXMmIpO18udGQ9ZnVuY3Rpb24gWDJiKGEpe1IyYihCRChhLDEwKSl9O3ZhciB0Uj1tZGIoQW5lLCdDb21tZW50Tm9kZU1hcmdpbkNhbGN1bGF0b3IvbGFtYmRhJDEkVHlwZScsMTQ4Nyk7YmNiKDE0ODgsMSxlbmUsXzJiKTtfLnBmPWZ1bmN0aW9uIGEzYihhLGIpe1oyYihCRChhLDM3KSxiKX07dmFyIHZSPW1kYihBbmUsJ0NvbW1lbnRQb3N0cHJvY2Vzc29yJywxNDg4KTtiY2IoMTQ4OSwxLGVuZSxlM2IpO18ucGY9ZnVuY3Rpb24gZjNiKGEsYil7YjNiKEJEKGEsMzcpLGIpfTt2YXIgd1I9bWRiKEFuZSwnQ29tbWVudFByZXByb2Nlc3NvcicsMTQ4OSk7YmNiKDE0OTAsMSxlbmUsaDNiKTtfLnBmPWZ1bmN0aW9uIGkzYihhLGIpe2czYihCRChhLDM3KSxiKX07dmFyIHhSPW1kYihBbmUsJ0NvbnN0cmFpbnRzUG9zdHByb2Nlc3NvcicsMTQ5MCk7YmNiKDE0OTEsMSxlbmUscDNiKTtfLnBmPWZ1bmN0aW9uIHEzYihhLGIpe24zYihCRChhLDM3KSxiKX07dmFyIHlSPW1kYihBbmUsJ0VkZ2VBbmRMYXllckNvbnN0cmFpbnRFZGdlUmV2ZXJzZXInLDE0OTEpO2JjYigxNDkyLDEsZW5lLHQzYik7Xy5wZj1mdW5jdGlvbiB2M2IoYSxiKXtyM2IoQkQoYSwzNyksYil9O3ZhciBDUj1tZGIoQW5lLCdFbmRMYWJlbFBvc3Rwcm9jZXNzb3InLDE0OTIpO2JjYigxNDkzLDEse30sdzNiKTtfLktiPWZ1bmN0aW9uIHgzYihhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgelI9bWRiKEFuZSwnRW5kTGFiZWxQb3N0cHJvY2Vzc29yL2xhbWJkYSQwJFR5cGUnLDE0OTMpO2JjYigxNDk0LDEsT2llLHkzYik7Xy5NYj1mdW5jdGlvbiB6M2IoYSl7cmV0dXJuIHUzYihCRChhLDEwKSl9O3ZhciBBUj1tZGIoQW5lLCdFbmRMYWJlbFBvc3Rwcm9jZXNzb3IvbGFtYmRhJDEkVHlwZScsMTQ5NCk7YmNiKDE0OTUsMSxxaWUsQTNiKTtfLnRkPWZ1bmN0aW9uIEIzYihhKXtzM2IoQkQoYSwxMCkpfTt2YXIgQlI9bWRiKEFuZSwnRW5kTGFiZWxQb3N0cHJvY2Vzc29yL2xhbWJkYSQyJFR5cGUnLDE0OTUpO2JjYigxNDk2LDEsZW5lLE0zYik7Xy5wZj1mdW5jdGlvbiBQM2IoYSxiKXtJM2IoQkQoYSwzNyksYil9O3ZhciBKUj1tZGIoQW5lLCdFbmRMYWJlbFByZXByb2Nlc3NvcicsMTQ5Nik7YmNiKDE0OTcsMSx7fSxRM2IpO18uS2I9ZnVuY3Rpb24gUjNiKGEpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBEUj1tZGIoQW5lLCdFbmRMYWJlbFByZXByb2Nlc3Nvci9sYW1iZGEkMCRUeXBlJywxNDk3KTtiY2IoMTQ5OCwxLHFpZSxTM2IpO18udGQ9ZnVuY3Rpb24gVDNiKGEpe0UzYih0aGlzLmEsdGhpcy5iLHRoaXMuYyxCRChhLDEwKSl9O18uYT0wO18uYj0wO18uYz1mYWxzZTt2YXIgRVI9bWRiKEFuZSwnRW5kTGFiZWxQcmVwcm9jZXNzb3IvbGFtYmRhJDEkVHlwZScsMTQ5OCk7YmNiKDE0OTksMSxPaWUsVTNiKTtfLk1iPWZ1bmN0aW9uIFYzYihhKXtyZXR1cm4gUEQodk5iKEJEKGEsNzApLChOeWMoKSxRd2MpKSk9PT1QRCgocWFkKCkscGFkKSl9O3ZhciBGUj1tZGIoQW5lLCdFbmRMYWJlbFByZXByb2Nlc3Nvci9sYW1iZGEkMiRUeXBlJywxNDk5KTtiY2IoMTUwMCwxLHFpZSxXM2IpO18udGQ9ZnVuY3Rpb24gWDNiKGEpe0RzYih0aGlzLmEsQkQoYSw3MCkpfTt2YXIgR1I9bWRiKEFuZSwnRW5kTGFiZWxQcmVwcm9jZXNzb3IvbGFtYmRhJDMkVHlwZScsMTUwMCk7YmNiKDE1MDEsMSxPaWUsWTNiKTtfLk1iPWZ1bmN0aW9uIFozYihhKXtyZXR1cm4gUEQodk5iKEJEKGEsNzApLChOeWMoKSxRd2MpKSk9PT1QRCgocWFkKCksb2FkKSl9O3ZhciBIUj1tZGIoQW5lLCdFbmRMYWJlbFByZXByb2Nlc3Nvci9sYW1iZGEkNCRUeXBlJywxNTAxKTtiY2IoMTUwMiwxLHFpZSwkM2IpO18udGQ9ZnVuY3Rpb24gXzNiKGEpe0RzYih0aGlzLmEsQkQoYSw3MCkpfTt2YXIgSVI9bWRiKEFuZSwnRW5kTGFiZWxQcmVwcm9jZXNzb3IvbGFtYmRhJDUkVHlwZScsMTUwMik7YmNiKDE1NTEsMSxlbmUsaTRiKTtfLnBmPWZ1bmN0aW9uIGo0YihhLGIpe2Y0YihCRChhLDM3KSxiKX07dmFyIGE0Yjt2YXIgUlI9bWRiKEFuZSwnRW5kTGFiZWxTb3J0ZXInLDE1NTEpO2JjYigxNTUyLDEsRGtlLGw0Yik7Xy51ZT1mdW5jdGlvbiBtNGIoYSxiKXtyZXR1cm4gazRiKEJEKGEsNDU2KSxCRChiLDQ1NikpfTtfLkZiPWZ1bmN0aW9uIG40YihhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gbzRiKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBLUj1tZGIoQW5lLCdFbmRMYWJlbFNvcnRlci8xJywxNTUyKTtiY2IoNDU2LDEsezQ1NjoxfSxwNGIpO3ZhciBMUj1tZGIoQW5lLCdFbmRMYWJlbFNvcnRlci9MYWJlbEdyb3VwJyw0NTYpO2JjYigxNTUzLDEse30scTRiKTtfLktiPWZ1bmN0aW9uIHI0YihhKXtyZXR1cm4gYjRiKCksbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgTVI9bWRiKEFuZSwnRW5kTGFiZWxTb3J0ZXIvbGFtYmRhJDAkVHlwZScsMTU1Myk7YmNiKDE1NTQsMSxPaWUsczRiKTtfLk1iPWZ1bmN0aW9uIHQ0YihhKXtyZXR1cm4gYjRiKCksQkQoYSwxMCkuaz09KGowYigpLGgwYil9O3ZhciBOUj1tZGIoQW5lLCdFbmRMYWJlbFNvcnRlci9sYW1iZGEkMSRUeXBlJywxNTU0KTtiY2IoMTU1NSwxLHFpZSx1NGIpO18udGQ9ZnVuY3Rpb24gdjRiKGEpe2c0YihCRChhLDEwKSl9O3ZhciBPUj1tZGIoQW5lLCdFbmRMYWJlbFNvcnRlci9sYW1iZGEkMiRUeXBlJywxNTU1KTtiY2IoMTU1NiwxLE9pZSx3NGIpO18uTWI9ZnVuY3Rpb24geDRiKGEpe3JldHVybiBiNGIoKSxQRCh2TmIoQkQoYSw3MCksKE55YygpLFF3YykpKT09PVBEKChxYWQoKSxvYWQpKX07dmFyIFBSPW1kYihBbmUsJ0VuZExhYmVsU29ydGVyL2xhbWJkYSQzJFR5cGUnLDE1NTYpO2JjYigxNTU3LDEsT2llLHk0Yik7Xy5NYj1mdW5jdGlvbiB6NGIoYSl7cmV0dXJuIGI0YigpLFBEKHZOYihCRChhLDcwKSwoTnljKCksUXdjKSkpPT09UEQoKHFhZCgpLHBhZCkpfTt2YXIgUVI9bWRiKEFuZSwnRW5kTGFiZWxTb3J0ZXIvbGFtYmRhJDQkVHlwZScsMTU1Nyk7YmNiKDE1MDMsMSxlbmUsTDRiKTtfLnBmPWZ1bmN0aW9uIE00YihhLGIpe0o0Yih0aGlzLEJEKGEsMzcpKX07Xy5iPTA7Xy5jPTA7dmFyIFlSPW1kYihBbmUsJ0ZpbmFsU3BsaW5lQmVuZHBvaW50c0NhbGN1bGF0b3InLDE1MDMpO2JjYigxNTA0LDEse30sTjRiKTtfLktiPWZ1bmN0aW9uIE80YihhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgU1I9bWRiKEFuZSwnRmluYWxTcGxpbmVCZW5kcG9pbnRzQ2FsY3VsYXRvci9sYW1iZGEkMCRUeXBlJywxNTA0KTtiY2IoMTUwNSwxLHt9LFA0Yik7Xy5LYj1mdW5jdGlvbiBRNGIoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgTHViKG5ldyBTcih1cihVX2IoQkQoYSwxMCkpLmEuS2MoKSxuZXcgU3EpKSkpfTt2YXIgVFI9bWRiKEFuZSwnRmluYWxTcGxpbmVCZW5kcG9pbnRzQ2FsY3VsYXRvci9sYW1iZGEkMSRUeXBlJywxNTA1KTtiY2IoMTUwNiwxLE9pZSxSNGIpO18uTWI9ZnVuY3Rpb24gUzRiKGEpe3JldHVybiAhT1piKEJEKGEsMTcpKX07dmFyIFVSPW1kYihBbmUsJ0ZpbmFsU3BsaW5lQmVuZHBvaW50c0NhbGN1bGF0b3IvbGFtYmRhJDIkVHlwZScsMTUwNik7YmNiKDE1MDcsMSxPaWUsVDRiKTtfLk1iPWZ1bmN0aW9uIFU0YihhKXtyZXR1cm4gd05iKEJEKGEsMTcpLCh3dGMoKSxydGMpKX07dmFyIFZSPW1kYihBbmUsJ0ZpbmFsU3BsaW5lQmVuZHBvaW50c0NhbGN1bGF0b3IvbGFtYmRhJDMkVHlwZScsMTUwNyk7YmNiKDE1MDgsMSxxaWUsVjRiKTtfLnRkPWZ1bmN0aW9uIFc0YihhKXtDNGIodGhpcy5hLEJEKGEsMTI4KSl9O3ZhciBXUj1tZGIoQW5lLCdGaW5hbFNwbGluZUJlbmRwb2ludHNDYWxjdWxhdG9yL2xhbWJkYSQ0JFR5cGUnLDE1MDgpO2JjYigxNTA5LDEscWllLFg0Yik7Xy50ZD1mdW5jdGlvbiBZNGIoYSl7c21iKEJEKGEsMTcpLmEpfTt2YXIgWFI9bWRiKEFuZSwnRmluYWxTcGxpbmVCZW5kcG9pbnRzQ2FsY3VsYXRvci9sYW1iZGEkNSRUeXBlJywxNTA5KTtiY2IoNzkyLDEsZW5lLHU1Yik7Xy5wZj1mdW5jdGlvbiB2NWIoYSxiKXtsNWIodGhpcyxCRChhLDM3KSxiKX07dmFyICRSPW1kYihBbmUsJ0dyYXBoVHJhbnNmb3JtZXInLDc5Mik7YmNiKDUxMSwyMix7MzoxLDM1OjEsMjI6MSw1MTE6MX0sejViKTt2YXIgdzViLHg1Yjt2YXIgWlI9bmRiKEFuZSwnR3JhcGhUcmFuc2Zvcm1lci9Nb2RlJyw1MTEsQ0ksQjViLEE1Yik7dmFyIEM1YjtiY2IoMTUxMCwxLGVuZSxJNWIpO18ucGY9ZnVuY3Rpb24gSjViKGEsYil7RjViKEJEKGEsMzcpLGIpfTt2YXIgX1I9bWRiKEFuZSwnSGllcmFyY2hpY2FsTm9kZVJlc2l6aW5nUHJvY2Vzc29yJywxNTEwKTtiY2IoMTUxMSwxLGVuZSxRNWIpO18ucGY9ZnVuY3Rpb24gUjViKGEsYil7TTViKEJEKGEsMzcpLGIpfTt2YXIgYlM9bWRiKEFuZSwnSGllcmFyY2hpY2FsUG9ydENvbnN0cmFpbnRQcm9jZXNzb3InLDE1MTEpO2JjYigxNTEyLDEsRGtlLFQ1Yik7Xy51ZT1mdW5jdGlvbiBVNWIoYSxiKXtyZXR1cm4gUzViKEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiBWNWIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFc1Yigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgYVM9bWRiKEFuZSwnSGllcmFyY2hpY2FsUG9ydENvbnN0cmFpbnRQcm9jZXNzb3IvTm9kZUNvbXBhcmF0b3InLDE1MTIpO2JjYigxNTEzLDEsZW5lLFo1Yik7Xy5wZj1mdW5jdGlvbiAkNWIoYSxiKXtYNWIoQkQoYSwzNyksYil9O3ZhciBjUz1tZGIoQW5lLCdIaWVyYXJjaGljYWxQb3J0RHVtbXlTaXplUHJvY2Vzc29yJywxNTEzKTtiY2IoMTUxNCwxLGVuZSxsNmIpO18ucGY9ZnVuY3Rpb24gbTZiKGEsYil7ZTZiKHRoaXMsQkQoYSwzNyksYil9O18uYT0wO3ZhciBmUz1tZGIoQW5lLCdIaWVyYXJjaGljYWxQb3J0T3J0aG9nb25hbEVkZ2VSb3V0ZXInLDE1MTQpO2JjYigxNTE1LDEsRGtlLG82Yik7Xy51ZT1mdW5jdGlvbiBwNmIoYSxiKXtyZXR1cm4gbjZiKEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiBxNmIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHI2Yigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgZFM9bWRiKEFuZSwnSGllcmFyY2hpY2FsUG9ydE9ydGhvZ29uYWxFZGdlUm91dGVyLzEnLDE1MTUpO2JjYigxNTE2LDEsRGtlLHQ2Yik7Xy51ZT1mdW5jdGlvbiB1NmIoYSxiKXtyZXR1cm4gczZiKEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiB2NmIoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHc2Yigpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgZVM9bWRiKEFuZSwnSGllcmFyY2hpY2FsUG9ydE9ydGhvZ29uYWxFZGdlUm91dGVyLzInLDE1MTYpO2JjYigxNTE3LDEsZW5lLHo2Yik7Xy5wZj1mdW5jdGlvbiBBNmIoYSxiKXt5NmIoQkQoYSwzNyksYil9O3ZhciBnUz1tZGIoQW5lLCdIaWVyYXJjaGljYWxQb3J0UG9zaXRpb25Qcm9jZXNzb3InLDE1MTcpO2JjYigxNTE4LDEsZW5lLEo2Yik7Xy5wZj1mdW5jdGlvbiBLNmIoYSxiKXtJNmIodGhpcyxCRChhLDM3KSl9O18uYT0wO18uYz0wO3ZhciBCNmIsQzZiO3ZhciBrUz1tZGIoQW5lLCdIaWdoRGVncmVlTm9kZUxheWVyaW5nUHJvY2Vzc29yJywxNTE4KTtiY2IoNTcxLDEsezU3MToxfSxMNmIpO18uYj0tMTtfLmQ9LTE7dmFyIGhTPW1kYihBbmUsJ0hpZ2hEZWdyZWVOb2RlTGF5ZXJpbmdQcm9jZXNzb3IvSGlnaERlZ3JlZU5vZGVJbmZvcm1hdGlvbicsNTcxKTtiY2IoMTUxOSwxLHt9LE02Yik7Xy5LYj1mdW5jdGlvbiBONmIoYSl7cmV0dXJuIEQ2YigpLFJfYihCRChhLDEwKSl9O18uRmI9ZnVuY3Rpb24gTzZiKGEpe3JldHVybiB0aGlzPT09YX07dmFyIGlTPW1kYihBbmUsJ0hpZ2hEZWdyZWVOb2RlTGF5ZXJpbmdQcm9jZXNzb3IvbGFtYmRhJDAkVHlwZScsMTUxOSk7YmNiKDE1MjAsMSx7fSxQNmIpO18uS2I9ZnVuY3Rpb24gUTZiKGEpe3JldHVybiBENmIoKSxVX2IoQkQoYSwxMCkpfTtfLkZiPWZ1bmN0aW9uIFI2YihhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciBqUz1tZGIoQW5lLCdIaWdoRGVncmVlTm9kZUxheWVyaW5nUHJvY2Vzc29yL2xhbWJkYSQxJFR5cGUnLDE1MjApO2JjYigxNTI2LDEsZW5lLFg2Yik7Xy5wZj1mdW5jdGlvbiBZNmIoYSxiKXtXNmIodGhpcyxCRChhLDM3KSxiKX07dmFyIHBTPW1kYihBbmUsJ0h5cGVyZWRnZUR1bW15TWVyZ2VyJywxNTI2KTtiY2IoNzkzLDEse30sWjZiKTtfLmE9ZmFsc2U7Xy5iPWZhbHNlO18uYz1mYWxzZTt2YXIgbFM9bWRiKEFuZSwnSHlwZXJlZGdlRHVtbXlNZXJnZXIvTWVyZ2VTdGF0ZScsNzkzKTtiY2IoMTUyNywxLHt9LCQ2Yik7Xy5LYj1mdW5jdGlvbiBfNmIoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMjkpLmEsMTYpKX07dmFyIG1TPW1kYihBbmUsJ0h5cGVyZWRnZUR1bW15TWVyZ2VyL2xhbWJkYSQwJFR5cGUnLDE1MjcpO2JjYigxNTI4LDEse30sYTdiKTtfLktiPWZ1bmN0aW9uIGI3YihhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwxMCkuaiwxNikpfTt2YXIgblM9bWRiKEFuZSwnSHlwZXJlZGdlRHVtbXlNZXJnZXIvbGFtYmRhJDEkVHlwZScsMTUyOCk7YmNiKDE1MjksMSxxaWUsYzdiKTtfLnRkPWZ1bmN0aW9uIGQ3YihhKXtCRChhLDExKS5wPS0xfTt2YXIgb1M9bWRiKEFuZSwnSHlwZXJlZGdlRHVtbXlNZXJnZXIvbGFtYmRhJDIkVHlwZScsMTUyOSk7YmNiKDE1MzAsMSxlbmUsZzdiKTtfLnBmPWZ1bmN0aW9uIGg3YihhLGIpe2Y3YihCRChhLDM3KSxiKX07dmFyIHFTPW1kYihBbmUsJ0h5cGVybm9kZXNQcm9jZXNzb3InLDE1MzApO2JjYigxNTMxLDEsZW5lLGo3Yik7Xy5wZj1mdW5jdGlvbiBrN2IoYSxiKXtpN2IoQkQoYSwzNyksYil9O3ZhciByUz1tZGIoQW5lLCdJbkxheWVyQ29uc3RyYWludFByb2Nlc3NvcicsMTUzMSk7YmNiKDE1MzIsMSxlbmUsbTdiKTtfLnBmPWZ1bmN0aW9uIG43YihhLGIpe2w3YihCRChhLDM3KSxiKX07dmFyIHNTPW1kYihBbmUsJ0lubmVybW9zdE5vZGVNYXJnaW5DYWxjdWxhdG9yJywxNTMyKTtiY2IoMTUzMywxLGVuZSxyN2IpO18ucGY9ZnVuY3Rpb24gdzdiKGEsYil7cTdiKHRoaXMsQkQoYSwzNykpfTtfLmE9UWplO18uYj1RamU7Xy5jPVBqZTtfLmQ9UGplO3ZhciB6Uz1tZGIoQW5lLCdJbnRlcmFjdGl2ZUV4dGVybmFsUG9ydFBvc2l0aW9uZXInLDE1MzMpO2JjYigxNTM0LDEse30seDdiKTtfLktiPWZ1bmN0aW9uIHk3YihhKXtyZXR1cm4gQkQoYSwxNykuZC5pfTtfLkZiPWZ1bmN0aW9uIHo3YihhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciB0Uz1tZGIoQW5lLCdJbnRlcmFjdGl2ZUV4dGVybmFsUG9ydFBvc2l0aW9uZXIvbGFtYmRhJDAkVHlwZScsMTUzNCk7YmNiKDE1MzUsMSx7fSxBN2IpO18uS2I9ZnVuY3Rpb24gQjdiKGEpe3JldHVybiBzN2IodGhpcy5hLEVEKGEpKX07Xy5GYj1mdW5jdGlvbiBDN2IoYSl7cmV0dXJuIHRoaXM9PT1hfTt2YXIgdVM9bWRiKEFuZSwnSW50ZXJhY3RpdmVFeHRlcm5hbFBvcnRQb3NpdGlvbmVyL2xhbWJkYSQxJFR5cGUnLDE1MzUpO2JjYigxNTM2LDEse30sRDdiKTtfLktiPWZ1bmN0aW9uIEU3YihhKXtyZXR1cm4gQkQoYSwxNykuYy5pfTtfLkZiPWZ1bmN0aW9uIEY3YihhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciB2Uz1tZGIoQW5lLCdJbnRlcmFjdGl2ZUV4dGVybmFsUG9ydFBvc2l0aW9uZXIvbGFtYmRhJDIkVHlwZScsMTUzNik7YmNiKDE1MzcsMSx7fSxHN2IpO18uS2I9ZnVuY3Rpb24gSDdiKGEpe3JldHVybiB0N2IodGhpcy5hLEVEKGEpKX07Xy5GYj1mdW5jdGlvbiBJN2IoYSl7cmV0dXJuIHRoaXM9PT1hfTt2YXIgd1M9bWRiKEFuZSwnSW50ZXJhY3RpdmVFeHRlcm5hbFBvcnRQb3NpdGlvbmVyL2xhbWJkYSQzJFR5cGUnLDE1MzcpO2JjYigxNTM4LDEse30sSjdiKTtfLktiPWZ1bmN0aW9uIEs3YihhKXtyZXR1cm4gdTdiKHRoaXMuYSxFRChhKSl9O18uRmI9ZnVuY3Rpb24gTDdiKGEpe3JldHVybiB0aGlzPT09YX07dmFyIHhTPW1kYihBbmUsJ0ludGVyYWN0aXZlRXh0ZXJuYWxQb3J0UG9zaXRpb25lci9sYW1iZGEkNCRUeXBlJywxNTM4KTtiY2IoMTUzOSwxLHt9LE03Yik7Xy5LYj1mdW5jdGlvbiBON2IoYSl7cmV0dXJuIHY3Yih0aGlzLmEsRUQoYSkpfTtfLkZiPWZ1bmN0aW9uIE83YihhKXtyZXR1cm4gdGhpcz09PWF9O3ZhciB5Uz1tZGIoQW5lLCdJbnRlcmFjdGl2ZUV4dGVybmFsUG9ydFBvc2l0aW9uZXIvbGFtYmRhJDUkVHlwZScsMTUzOSk7YmNiKDc3LDIyLHszOjEsMzU6MSwyMjoxLDc3OjEsMjM0OjF9LFQ4Yik7Xy5LZj1mdW5jdGlvbiBVOGIoKXtzd2l0Y2godGhpcy5nKXtjYXNlIDE1OnJldHVybiBuZXcgZW9jO2Nhc2UgMjI6cmV0dXJuIG5ldyBBb2M7Y2FzZSA0NzpyZXR1cm4gbmV3IEpvYztjYXNlIDI4OmNhc2UgMzU6cmV0dXJuIG5ldyB1YWM7Y2FzZSAzMjpyZXR1cm4gbmV3IFMyYjtjYXNlIDQyOnJldHVybiBuZXcgXzJiO2Nhc2UgMTpyZXR1cm4gbmV3IGUzYjtjYXNlIDQxOnJldHVybiBuZXcgaDNiO2Nhc2UgNTY6cmV0dXJuIG5ldyB1NWIoKHk1YigpLHg1YikpO2Nhc2UgMDpyZXR1cm4gbmV3IHU1YigoeTViKCksdzViKSk7Y2FzZSAyOnJldHVybiBuZXcgcDNiO2Nhc2UgNTQ6cmV0dXJuIG5ldyB0M2I7Y2FzZSAzMzpyZXR1cm4gbmV3IE0zYjtjYXNlIDUxOnJldHVybiBuZXcgTDRiO2Nhc2UgNTU6cmV0dXJuIG5ldyBJNWI7Y2FzZSAxMzpyZXR1cm4gbmV3IFE1YjtjYXNlIDM4OnJldHVybiBuZXcgWjViO2Nhc2UgNDQ6cmV0dXJuIG5ldyBsNmI7Y2FzZSA0MDpyZXR1cm4gbmV3IHo2YjtjYXNlIDk6cmV0dXJuIG5ldyBKNmI7Y2FzZSA0OTpyZXR1cm4gbmV3IHNnYztjYXNlIDM3OnJldHVybiBuZXcgWDZiO2Nhc2UgNDM6cmV0dXJuIG5ldyBnN2I7Y2FzZSAyNzpyZXR1cm4gbmV3IGo3YjtjYXNlIDMwOnJldHVybiBuZXcgbTdiO2Nhc2UgMzpyZXR1cm4gbmV3IHI3YjtjYXNlIDE4OnJldHVybiBuZXcgYjliO2Nhc2UgMjk6cmV0dXJuIG5ldyBoOWI7Y2FzZSA1OnJldHVybiBuZXcgdTliO2Nhc2UgNTA6cmV0dXJuIG5ldyBEOWI7Y2FzZSAzNDpyZXR1cm4gbmV3ICQ5YjtjYXNlIDM2OnJldHVybiBuZXcgSWFjO2Nhc2UgNTI6cmV0dXJuIG5ldyBpNGI7Y2FzZSAxMTpyZXR1cm4gbmV3IFNhYztjYXNlIDc6cmV0dXJuIG5ldyBhYmM7Y2FzZSAzOTpyZXR1cm4gbmV3IG9iYztjYXNlIDQ1OnJldHVybiBuZXcgcmJjO2Nhc2UgMTY6cmV0dXJuIG5ldyB2YmM7Y2FzZSAxMDpyZXR1cm4gbmV3IEZiYztjYXNlIDQ4OnJldHVybiBuZXcgWGJjO2Nhc2UgMjE6cmV0dXJuIG5ldyBjY2M7Y2FzZSAyMzpyZXR1cm4gbmV3IGZHYygockdjKCkscEdjKSk7Y2FzZSA4OnJldHVybiBuZXcgbGNjO2Nhc2UgMTI6cmV0dXJuIG5ldyB0Y2M7Y2FzZSA0OnJldHVybiBuZXcgeWNjO2Nhc2UgMTk6cmV0dXJuIG5ldyBUY2M7Y2FzZSAxNzpyZXR1cm4gbmV3IHBkYztjYXNlIDUzOnJldHVybiBuZXcgc2RjO2Nhc2UgNjpyZXR1cm4gbmV3IGhlYztjYXNlIDI1OnJldHVybiBuZXcgd2RjO2Nhc2UgNDY6cmV0dXJuIG5ldyBOZGM7Y2FzZSAzMTpyZXR1cm4gbmV3IHNlYztjYXNlIDE0OnJldHVybiBuZXcgRmVjO2Nhc2UgMjY6cmV0dXJuIG5ldyBwcGM7Y2FzZSAyMDpyZXR1cm4gbmV3IFVlYztjYXNlIDI0OnJldHVybiBuZXcgZkdjKChyR2MoKSxxR2MpKTtkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKERuZSsodGhpcy5mIT1udWxsP3RoaXMuZjonJyt0aGlzLmcpKSk7fX07dmFyIFA3YixRN2IsUjdiLFM3YixUN2IsVTdiLFY3YixXN2IsWDdiLFk3YixaN2IsJDdiLF83YixhOGIsYjhiLGM4YixkOGIsZThiLGY4YixnOGIsaDhiLGk4YixqOGIsazhiLGw4YixtOGIsbjhiLG84YixwOGIscThiLHI4YixzOGIsdDhiLHU4Yix2OGIsdzhiLHg4Yix5OGIsejhiLEE4YixCOGIsQzhiLEQ4YixFOGIsRjhiLEc4YixIOGIsSThiLEo4YixLOGIsTDhiLE04YixOOGIsTzhiLFA4YixROGIsUjhiO3ZhciBBUz1uZGIoQW5lLEVuZSw3NyxDSSxXOGIsVjhiKTt2YXIgWDhiO2JjYigxNTQwLDEsZW5lLGI5Yik7Xy5wZj1mdW5jdGlvbiBjOWIoYSxiKXtfOGIoQkQoYSwzNyksYil9O3ZhciBCUz1tZGIoQW5lLCdJbnZlcnRlZFBvcnRQcm9jZXNzb3InLDE1NDApO2JjYigxNTQxLDEsZW5lLGg5Yik7Xy5wZj1mdW5jdGlvbiBpOWIoYSxiKXtnOWIoQkQoYSwzNyksYil9O3ZhciBGUz1tZGIoQW5lLCdMYWJlbEFuZE5vZGVTaXplUHJvY2Vzc29yJywxNTQxKTtiY2IoMTU0MiwxLE9pZSxqOWIpO18uTWI9ZnVuY3Rpb24gazliKGEpe3JldHVybiBCRChhLDEwKS5rPT0oajBiKCksaDBiKX07dmFyIENTPW1kYihBbmUsJ0xhYmVsQW5kTm9kZVNpemVQcm9jZXNzb3IvbGFtYmRhJDAkVHlwZScsMTU0Mik7YmNiKDE1NDMsMSxPaWUsbDliKTtfLk1iPWZ1bmN0aW9uIG05YihhKXtyZXR1cm4gQkQoYSwxMCkuaz09KGowYigpLGUwYil9O3ZhciBEUz1tZGIoQW5lLCdMYWJlbEFuZE5vZGVTaXplUHJvY2Vzc29yL2xhbWJkYSQxJFR5cGUnLDE1NDMpO2JjYigxNTQ0LDEscWllLG45Yik7Xy50ZD1mdW5jdGlvbiBvOWIoYSl7ZTliKHRoaXMuYix0aGlzLmEsdGhpcy5jLEJEKGEsMTApKX07Xy5hPWZhbHNlO18uYz1mYWxzZTt2YXIgRVM9bWRiKEFuZSwnTGFiZWxBbmROb2RlU2l6ZVByb2Nlc3Nvci9sYW1iZGEkMiRUeXBlJywxNTQ0KTtiY2IoMTU0NSwxLGVuZSx1OWIpO18ucGY9ZnVuY3Rpb24gdjliKGEsYil7czliKEJEKGEsMzcpLGIpfTt2YXIgcDliO3ZhciBIUz1tZGIoQW5lLCdMYWJlbER1bW15SW5zZXJ0ZXInLDE1NDUpO2JjYigxNTQ2LDEsVmtlLHc5Yik7Xy5MYj1mdW5jdGlvbiB4OWIoYSl7cmV0dXJuIFBEKHZOYihCRChhLDcwKSwoTnljKCksUXdjKSkpPT09UEQoKHFhZCgpLG5hZCkpfTtfLkZiPWZ1bmN0aW9uIHk5YihhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gejliKGEpe3JldHVybiBQRCh2TmIoQkQoYSw3MCksKE55YygpLFF3YykpKT09PVBEKChxYWQoKSxuYWQpKX07dmFyIEdTPW1kYihBbmUsJ0xhYmVsRHVtbXlJbnNlcnRlci8xJywxNTQ2KTtiY2IoMTU0NywxLGVuZSxEOWIpO18ucGY9ZnVuY3Rpb24gRTliKGEsYil7QzliKEJEKGEsMzcpLGIpfTt2YXIgSlM9bWRiKEFuZSwnTGFiZWxEdW1teVJlbW92ZXInLDE1NDcpO2JjYigxNTQ4LDEsT2llLEY5Yik7Xy5NYj1mdW5jdGlvbiBHOWIoYSl7cmV0dXJuIENjYihERCh2TmIoQkQoYSw3MCksKE55YygpLFB3YykpKSl9O3ZhciBJUz1tZGIoQW5lLCdMYWJlbER1bW15UmVtb3Zlci9sYW1iZGEkMCRUeXBlJywxNTQ4KTtiY2IoMTM1OSwxLGVuZSwkOWIpO18ucGY9ZnVuY3Rpb24gY2FjKGEsYil7VzliKHRoaXMsQkQoYSwzNyksYil9O18uYT1udWxsO3ZhciBIOWI7dmFyIFFTPW1kYihBbmUsJ0xhYmVsRHVtbXlTd2l0Y2hlcicsMTM1OSk7YmNiKDI4NiwxLHsyODY6MX0sZ2FjKTtfLmM9MDtfLmQ9bnVsbDtfLmY9MDt2YXIgS1M9bWRiKEFuZSwnTGFiZWxEdW1teVN3aXRjaGVyL0xhYmVsRHVtbXlJbmZvJywyODYpO2JjYigxMzYwLDEse30saGFjKTtfLktiPWZ1bmN0aW9uIGlhYyhhKXtyZXR1cm4gSTliKCksbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgTFM9bWRiKEFuZSwnTGFiZWxEdW1teVN3aXRjaGVyL2xhbWJkYSQwJFR5cGUnLDEzNjApO2JjYigxMzYxLDEsT2llLGphYyk7Xy5NYj1mdW5jdGlvbiBrYWMoYSl7cmV0dXJuIEk5YigpLEJEKGEsMTApLms9PShqMGIoKSxmMGIpfTt2YXIgTVM9bWRiKEFuZSwnTGFiZWxEdW1teVN3aXRjaGVyL2xhbWJkYSQxJFR5cGUnLDEzNjEpO2JjYigxMzYyLDEse30sbGFjKTtfLktiPWZ1bmN0aW9uIG1hYyhhKXtyZXR1cm4gXzliKHRoaXMuYSxCRChhLDEwKSl9O3ZhciBOUz1tZGIoQW5lLCdMYWJlbER1bW15U3dpdGNoZXIvbGFtYmRhJDIkVHlwZScsMTM2Mik7YmNiKDEzNjMsMSxxaWUsbmFjKTtfLnRkPWZ1bmN0aW9uIG9hYyhhKXthYWModGhpcy5hLEJEKGEsMjg2KSl9O3ZhciBPUz1tZGIoQW5lLCdMYWJlbER1bW15U3dpdGNoZXIvbGFtYmRhJDMkVHlwZScsMTM2Myk7YmNiKDEzNjQsMSxEa2UscGFjKTtfLnVlPWZ1bmN0aW9uIHFhYyhhLGIpe3JldHVybiBiYWMoQkQoYSwyODYpLEJEKGIsMjg2KSl9O18uRmI9ZnVuY3Rpb24gcmFjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBzYWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFBTPW1kYihBbmUsJ0xhYmVsRHVtbXlTd2l0Y2hlci9sYW1iZGEkNCRUeXBlJywxMzY0KTtiY2IoNzkxLDEsZW5lLHVhYyk7Xy5wZj1mdW5jdGlvbiB2YWMoYSxiKXt0YWMoQkQoYSwzNyksYil9O3ZhciBSUz1tZGIoQW5lLCdMYWJlbE1hbmFnZW1lbnRQcm9jZXNzb3InLDc5MSk7YmNiKDE1NDksMSxlbmUsSWFjKTtfLnBmPWZ1bmN0aW9uIEphYyhhLGIpe0NhYyhCRChhLDM3KSxiKX07dmFyIFRTPW1kYihBbmUsJ0xhYmVsU2lkZVNlbGVjdG9yJywxNTQ5KTtiY2IoMTU1MCwxLE9pZSxLYWMpO18uTWI9ZnVuY3Rpb24gTGFjKGEpe3JldHVybiBDY2IoREQodk5iKEJEKGEsNzApLChOeWMoKSxQd2MpKSkpfTt2YXIgU1M9bWRiKEFuZSwnTGFiZWxTaWRlU2VsZWN0b3IvbGFtYmRhJDAkVHlwZScsMTU1MCk7YmNiKDE1NTgsMSxlbmUsU2FjKTtfLnBmPWZ1bmN0aW9uIFRhYyhhLGIpe09hYyhCRChhLDM3KSxiKX07dmFyIFVTPW1kYihBbmUsJ0xheWVyQ29uc3RyYWludFBvc3Rwcm9jZXNzb3InLDE1NTgpO2JjYigxNTU5LDEsZW5lLGFiYyk7Xy5wZj1mdW5jdGlvbiBiYmMoYSxiKXskYWMoQkQoYSwzNyksYil9O3ZhciBVYWM7dmFyIFdTPW1kYihBbmUsJ0xheWVyQ29uc3RyYWludFByZXByb2Nlc3NvcicsMTU1OSk7YmNiKDM2MCwyMix7MzoxLDM1OjEsMjI6MSwzNjA6MX0saWJjKTt2YXIgY2JjLGRiYyxlYmMsZmJjO3ZhciBWUz1uZGIoQW5lLCdMYXllckNvbnN0cmFpbnRQcmVwcm9jZXNzb3IvSGlkZGVuTm9kZUNvbm5lY3Rpb25zJywzNjAsQ0ksa2JjLGpiYyk7dmFyIGxiYztiY2IoMTU2MCwxLGVuZSxvYmMpO18ucGY9ZnVuY3Rpb24gcGJjKGEsYil7bmJjKEJEKGEsMzcpLGIpfTt2YXIgWFM9bWRiKEFuZSwnTGF5ZXJTaXplQW5kR3JhcGhIZWlnaHRDYWxjdWxhdG9yJywxNTYwKTtiY2IoMTU2MSwxLGVuZSxyYmMpO18ucGY9ZnVuY3Rpb24gdGJjKGEsYil7cWJjKEJEKGEsMzcpLGIpfTt2YXIgWVM9bWRiKEFuZSwnTG9uZ0VkZ2VKb2luZXInLDE1NjEpO2JjYigxNTYyLDEsZW5lLHZiYyk7Xy5wZj1mdW5jdGlvbiB4YmMoYSxiKXt1YmMoQkQoYSwzNyksYil9O3ZhciBaUz1tZGIoQW5lLCdMb25nRWRnZVNwbGl0dGVyJywxNTYyKTtiY2IoMTU2MywxLGVuZSxGYmMpO18ucGY9ZnVuY3Rpb24gSWJjKGEsYil7QmJjKHRoaXMsQkQoYSwzNyksYil9O18uZD0wO18uZT0wO18uaT0wO18uaj0wO18uaz0wO18ubj0wO3ZhciBiVD1tZGIoQW5lLCdOb2RlUHJvbW90aW9uJywxNTYzKTtiY2IoMTU2NCwxLHt9LEpiYyk7Xy5LYj1mdW5jdGlvbiBLYmMoYSl7cmV0dXJuIEJEKGEsNDYpLEJjYigpLHRydWV9O18uRmI9ZnVuY3Rpb24gTGJjKGEpe3JldHVybiB0aGlzPT09YX07dmFyICRTPW1kYihBbmUsJ05vZGVQcm9tb3Rpb24vbGFtYmRhJDAkVHlwZScsMTU2NCk7YmNiKDE1NjUsMSx7fSxNYmMpO18uS2I9ZnVuY3Rpb24gTmJjKGEpe3JldHVybiBHYmModGhpcy5hLEJEKGEsNDYpKX07Xy5GYj1mdW5jdGlvbiBPYmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLmE9MDt2YXIgX1M9bWRiKEFuZSwnTm9kZVByb21vdGlvbi9sYW1iZGEkMSRUeXBlJywxNTY1KTtiY2IoMTU2NiwxLHt9LFBiYyk7Xy5LYj1mdW5jdGlvbiBRYmMoYSl7cmV0dXJuIEhiYyh0aGlzLmEsQkQoYSw0NikpfTtfLkZiPWZ1bmN0aW9uIFJiYyhhKXtyZXR1cm4gdGhpcz09PWF9O18uYT0wO3ZhciBhVD1tZGIoQW5lLCdOb2RlUHJvbW90aW9uL2xhbWJkYSQyJFR5cGUnLDE1NjYpO2JjYigxNTY3LDEsZW5lLFhiYyk7Xy5wZj1mdW5jdGlvbiBZYmMoYSxiKXtTYmMoQkQoYSwzNyksYil9O3ZhciBjVD1tZGIoQW5lLCdOb3J0aFNvdXRoUG9ydFBvc3Rwcm9jZXNzb3InLDE1NjcpO2JjYigxNTY4LDEsZW5lLGNjYyk7Xy5wZj1mdW5jdGlvbiBlY2MoYSxiKXthY2MoQkQoYSwzNyksYil9O3ZhciBlVD1tZGIoQW5lLCdOb3J0aFNvdXRoUG9ydFByZXByb2Nlc3NvcicsMTU2OCk7YmNiKDE1NjksMSxEa2UsZmNjKTtfLnVlPWZ1bmN0aW9uIGdjYyhhLGIpe3JldHVybiBkY2MoQkQoYSwxMSksQkQoYiwxMSkpfTtfLkZiPWZ1bmN0aW9uIGhjYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gaWNjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBkVD1tZGIoQW5lLCdOb3J0aFNvdXRoUG9ydFByZXByb2Nlc3Nvci9sYW1iZGEkMCRUeXBlJywxNTY5KTtiY2IoMTU3MCwxLGVuZSxsY2MpO18ucGY9ZnVuY3Rpb24gbmNjKGEsYil7a2NjKEJEKGEsMzcpLGIpfTt2YXIgaFQ9bWRiKEFuZSwnUGFydGl0aW9uTWlkcHJvY2Vzc29yJywxNTcwKTtiY2IoMTU3MSwxLE9pZSxvY2MpO18uTWI9ZnVuY3Rpb24gcGNjKGEpe3JldHVybiB3TmIoQkQoYSwxMCksKE55YygpLE54YykpfTt2YXIgZlQ9bWRiKEFuZSwnUGFydGl0aW9uTWlkcHJvY2Vzc29yL2xhbWJkYSQwJFR5cGUnLDE1NzEpO2JjYigxNTcyLDEscWllLHFjYyk7Xy50ZD1mdW5jdGlvbiByY2MoYSl7bWNjKHRoaXMuYSxCRChhLDEwKSl9O3ZhciBnVD1tZGIoQW5lLCdQYXJ0aXRpb25NaWRwcm9jZXNzb3IvbGFtYmRhJDEkVHlwZScsMTU3Mik7YmNiKDE1NzMsMSxlbmUsdGNjKTtfLnBmPWZ1bmN0aW9uIHVjYyhhLGIpe3NjYyhCRChhLDM3KSxiKX07dmFyIGlUPW1kYihBbmUsJ1BhcnRpdGlvblBvc3Rwcm9jZXNzb3InLDE1NzMpO2JjYigxNTc0LDEsZW5lLHljYyk7Xy5wZj1mdW5jdGlvbiB6Y2MoYSxiKXt3Y2MoQkQoYSwzNyksYil9O3ZhciBuVD1tZGIoQW5lLCdQYXJ0aXRpb25QcmVwcm9jZXNzb3InLDE1NzQpO2JjYigxNTc1LDEsT2llLEFjYyk7Xy5NYj1mdW5jdGlvbiBCY2MoYSl7cmV0dXJuIHdOYihCRChhLDEwKSwoTnljKCksTnhjKSl9O3ZhciBqVD1tZGIoQW5lLCdQYXJ0aXRpb25QcmVwcm9jZXNzb3IvbGFtYmRhJDAkVHlwZScsMTU3NSk7YmNiKDE1NzYsMSx7fSxDY2MpO18uS2I9ZnVuY3Rpb24gRGNjKGEpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEx1YihuZXcgU3IodXIoVV9iKEJEKGEsMTApKS5hLktjKCksbmV3IFNxKSkpKX07dmFyIGtUPW1kYihBbmUsJ1BhcnRpdGlvblByZXByb2Nlc3Nvci9sYW1iZGEkMSRUeXBlJywxNTc2KTtiY2IoMTU3NywxLE9pZSxFY2MpO18uTWI9ZnVuY3Rpb24gRmNjKGEpe3JldHVybiB2Y2MoQkQoYSwxNykpfTt2YXIgbFQ9bWRiKEFuZSwnUGFydGl0aW9uUHJlcHJvY2Vzc29yL2xhbWJkYSQyJFR5cGUnLDE1NzcpO2JjYigxNTc4LDEscWllLEdjYyk7Xy50ZD1mdW5jdGlvbiBIY2MoYSl7eGNjKEJEKGEsMTcpKX07dmFyIG1UPW1kYihBbmUsJ1BhcnRpdGlvblByZXByb2Nlc3Nvci9sYW1iZGEkMyRUeXBlJywxNTc4KTtiY2IoMTU3OSwxLGVuZSxUY2MpO18ucGY9ZnVuY3Rpb24gWGNjKGEsYil7UWNjKEJEKGEsMzcpLGIpfTt2YXIgSWNjLEpjYyxLY2MsTGNjLE1jYyxOY2M7dmFyIHRUPW1kYihBbmUsJ1BvcnRMaXN0U29ydGVyJywxNTc5KTtiY2IoMTU4MCwxLHt9LFpjYyk7Xy5LYj1mdW5jdGlvbiAkY2MoYSl7cmV0dXJuIE9jYygpLEJEKGEsMTEpLmV9O3ZhciBvVD1tZGIoQW5lLCdQb3J0TGlzdFNvcnRlci9sYW1iZGEkMCRUeXBlJywxNTgwKTtiY2IoMTU4MSwxLHt9LF9jYyk7Xy5LYj1mdW5jdGlvbiBhZGMoYSl7cmV0dXJuIE9jYygpLEJEKGEsMTEpLmd9O3ZhciBwVD1tZGIoQW5lLCdQb3J0TGlzdFNvcnRlci9sYW1iZGEkMSRUeXBlJywxNTgxKTtiY2IoMTU4MiwxLERrZSxiZGMpO18udWU9ZnVuY3Rpb24gY2RjKGEsYil7cmV0dXJuIFVjYyhCRChhLDExKSxCRChiLDExKSl9O18uRmI9ZnVuY3Rpb24gZGRjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBlZGMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIHFUPW1kYihBbmUsJ1BvcnRMaXN0U29ydGVyL2xhbWJkYSQyJFR5cGUnLDE1ODIpO2JjYigxNTgzLDEsRGtlLGZkYyk7Xy51ZT1mdW5jdGlvbiBnZGMoYSxiKXtyZXR1cm4gVmNjKEJEKGEsMTEpLEJEKGIsMTEpKX07Xy5GYj1mdW5jdGlvbiBoZGMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGlkYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgclQ9bWRiKEFuZSwnUG9ydExpc3RTb3J0ZXIvbGFtYmRhJDMkVHlwZScsMTU4Myk7YmNiKDE1ODQsMSxEa2UsamRjKTtfLnVlPWZ1bmN0aW9uIGtkYyhhLGIpe3JldHVybiBXY2MoQkQoYSwxMSksQkQoYiwxMSkpfTtfLkZiPWZ1bmN0aW9uIGxkYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gbWRjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBzVD1tZGIoQW5lLCdQb3J0TGlzdFNvcnRlci9sYW1iZGEkNCRUeXBlJywxNTg0KTtiY2IoMTU4NSwxLGVuZSxwZGMpO18ucGY9ZnVuY3Rpb24gcWRjKGEsYil7bmRjKEJEKGEsMzcpLGIpfTt2YXIgdVQ9bWRiKEFuZSwnUG9ydFNpZGVQcm9jZXNzb3InLDE1ODUpO2JjYigxNTg2LDEsZW5lLHNkYyk7Xy5wZj1mdW5jdGlvbiB0ZGMoYSxiKXtyZGMoQkQoYSwzNyksYil9O3ZhciB2VD1tZGIoQW5lLCdSZXZlcnNlZEVkZ2VSZXN0b3JlcicsMTU4Nik7YmNiKDE1OTEsMSxlbmUsd2RjKTtfLnBmPWZ1bmN0aW9uIHhkYyhhLGIpe3VkYyh0aGlzLEJEKGEsMzcpLGIpfTt2YXIgQ1Q9bWRiKEFuZSwnU2VsZkxvb3BQb3J0UmVzdG9yZXInLDE1OTEpO2JjYigxNTkyLDEse30seWRjKTtfLktiPWZ1bmN0aW9uIHpkYyhhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgd1Q9bWRiKEFuZSwnU2VsZkxvb3BQb3J0UmVzdG9yZXIvbGFtYmRhJDAkVHlwZScsMTU5Mik7YmNiKDE1OTMsMSxPaWUsQWRjKTtfLk1iPWZ1bmN0aW9uIEJkYyhhKXtyZXR1cm4gQkQoYSwxMCkuaz09KGowYigpLGgwYil9O3ZhciB4VD1tZGIoQW5lLCdTZWxmTG9vcFBvcnRSZXN0b3Jlci9sYW1iZGEkMSRUeXBlJywxNTkzKTtiY2IoMTU5NCwxLE9pZSxDZGMpO18uTWI9ZnVuY3Rpb24gRGRjKGEpe3JldHVybiB3TmIoQkQoYSwxMCksKHd0YygpLG50YykpfTt2YXIgeVQ9bWRiKEFuZSwnU2VsZkxvb3BQb3J0UmVzdG9yZXIvbGFtYmRhJDIkVHlwZScsMTU5NCk7YmNiKDE1OTUsMSx7fSxFZGMpO18uS2I9ZnVuY3Rpb24gRmRjKGEpe3JldHVybiBCRCh2TmIoQkQoYSwxMCksKHd0YygpLG50YykpLDQwMyl9O3ZhciB6VD1tZGIoQW5lLCdTZWxmTG9vcFBvcnRSZXN0b3Jlci9sYW1iZGEkMyRUeXBlJywxNTk1KTtiY2IoMTU5NiwxLHFpZSxHZGMpO18udGQ9ZnVuY3Rpb24gSGRjKGEpe3ZkYyh0aGlzLmEsQkQoYSw0MDMpKX07dmFyIEFUPW1kYihBbmUsJ1NlbGZMb29wUG9ydFJlc3RvcmVyL2xhbWJkYSQ0JFR5cGUnLDE1OTYpO2JjYig3OTQsMSxxaWUsSWRjKTtfLnRkPWZ1bmN0aW9uIEpkYyhhKXtsamMoQkQoYSwxMDEpKX07dmFyIEJUPW1kYihBbmUsJ1NlbGZMb29wUG9ydFJlc3RvcmVyL2xhbWJkYSQ1JFR5cGUnLDc5NCk7YmNiKDE1OTcsMSxlbmUsTmRjKTtfLnBmPWZ1bmN0aW9uIFBkYyhhLGIpe0tkYyhCRChhLDM3KSxiKX07dmFyIExUPW1kYihBbmUsJ1NlbGZMb29wUG9zdFByb2Nlc3NvcicsMTU5Nyk7YmNiKDE1OTgsMSx7fSxRZGMpO18uS2I9ZnVuY3Rpb24gUmRjKGEpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBEVD1tZGIoQW5lLCdTZWxmTG9vcFBvc3RQcm9jZXNzb3IvbGFtYmRhJDAkVHlwZScsMTU5OCk7YmNiKDE1OTksMSxPaWUsU2RjKTtfLk1iPWZ1bmN0aW9uIFRkYyhhKXtyZXR1cm4gQkQoYSwxMCkuaz09KGowYigpLGgwYil9O3ZhciBFVD1tZGIoQW5lLCdTZWxmTG9vcFBvc3RQcm9jZXNzb3IvbGFtYmRhJDEkVHlwZScsMTU5OSk7YmNiKDE2MDAsMSxPaWUsVWRjKTtfLk1iPWZ1bmN0aW9uIFZkYyhhKXtyZXR1cm4gd05iKEJEKGEsMTApLCh3dGMoKSxudGMpKX07dmFyIEZUPW1kYihBbmUsJ1NlbGZMb29wUG9zdFByb2Nlc3Nvci9sYW1iZGEkMiRUeXBlJywxNjAwKTtiY2IoMTYwMSwxLHFpZSxXZGMpO18udGQ9ZnVuY3Rpb24gWGRjKGEpe0xkYyhCRChhLDEwKSl9O3ZhciBHVD1tZGIoQW5lLCdTZWxmTG9vcFBvc3RQcm9jZXNzb3IvbGFtYmRhJDMkVHlwZScsMTYwMSk7YmNiKDE2MDIsMSx7fSxZZGMpO18uS2I9ZnVuY3Rpb24gWmRjKGEpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDEwMSkuZiwxKSl9O3ZhciBIVD1tZGIoQW5lLCdTZWxmTG9vcFBvc3RQcm9jZXNzb3IvbGFtYmRhJDQkVHlwZScsMTYwMik7YmNiKDE2MDMsMSxxaWUsJGRjKTtfLnRkPWZ1bmN0aW9uIF9kYyhhKXtNZGModGhpcy5hLEJEKGEsNDA5KSl9O3ZhciBJVD1tZGIoQW5lLCdTZWxmTG9vcFBvc3RQcm9jZXNzb3IvbGFtYmRhJDUkVHlwZScsMTYwMyk7YmNiKDE2MDQsMSxPaWUsYWVjKTtfLk1iPWZ1bmN0aW9uIGJlYyhhKXtyZXR1cm4gISFCRChhLDEwMSkuaX07dmFyIEpUPW1kYihBbmUsJ1NlbGZMb29wUG9zdFByb2Nlc3Nvci9sYW1iZGEkNiRUeXBlJywxNjA0KTtiY2IoMTYwNSwxLHFpZSxjZWMpO18udGQ9ZnVuY3Rpb24gZGVjKGEpe09kYyh0aGlzLmEsQkQoYSwxMDEpKX07dmFyIEtUPW1kYihBbmUsJ1NlbGZMb29wUG9zdFByb2Nlc3Nvci9sYW1iZGEkNyRUeXBlJywxNjA1KTtiY2IoMTU4NywxLGVuZSxoZWMpO18ucGY9ZnVuY3Rpb24gaWVjKGEsYil7Z2VjKEJEKGEsMzcpLGIpfTt2YXIgUFQ9bWRiKEFuZSwnU2VsZkxvb3BQcmVQcm9jZXNzb3InLDE1ODcpO2JjYigxNTg4LDEse30samVjKTtfLktiPWZ1bmN0aW9uIGtlYyhhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwxMDEpLmYsMSkpfTt2YXIgTVQ9bWRiKEFuZSwnU2VsZkxvb3BQcmVQcm9jZXNzb3IvbGFtYmRhJDAkVHlwZScsMTU4OCk7YmNiKDE1ODksMSx7fSxsZWMpO18uS2I9ZnVuY3Rpb24gbWVjKGEpe3JldHVybiBCRChhLDQwOSkuYX07dmFyIE5UPW1kYihBbmUsJ1NlbGZMb29wUHJlUHJvY2Vzc29yL2xhbWJkYSQxJFR5cGUnLDE1ODkpO2JjYigxNTkwLDEscWllLG5lYyk7Xy50ZD1mdW5jdGlvbiBvZWMoYSl7ZmVjKEJEKGEsMTcpKX07dmFyIE9UPW1kYihBbmUsJ1NlbGZMb29wUHJlUHJvY2Vzc29yL2xhbWJkYSQyJFR5cGUnLDE1OTApO2JjYigxNjA2LDEsZW5lLHNlYyk7Xy5wZj1mdW5jdGlvbiB0ZWMoYSxiKXtxZWModGhpcyxCRChhLDM3KSxiKX07dmFyIFZUPW1kYihBbmUsJ1NlbGZMb29wUm91dGVyJywxNjA2KTtiY2IoMTYwNywxLHt9LHVlYyk7Xy5LYj1mdW5jdGlvbiB2ZWMoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMjkpLmEsMTYpKX07dmFyIFFUPW1kYihBbmUsJ1NlbGZMb29wUm91dGVyL2xhbWJkYSQwJFR5cGUnLDE2MDcpO2JjYigxNjA4LDEsT2llLHdlYyk7Xy5NYj1mdW5jdGlvbiB4ZWMoYSl7cmV0dXJuIEJEKGEsMTApLms9PShqMGIoKSxoMGIpfTt2YXIgUlQ9bWRiKEFuZSwnU2VsZkxvb3BSb3V0ZXIvbGFtYmRhJDEkVHlwZScsMTYwOCk7YmNiKDE2MDksMSxPaWUseWVjKTtfLk1iPWZ1bmN0aW9uIHplYyhhKXtyZXR1cm4gd05iKEJEKGEsMTApLCh3dGMoKSxudGMpKX07dmFyIFNUPW1kYihBbmUsJ1NlbGZMb29wUm91dGVyL2xhbWJkYSQyJFR5cGUnLDE2MDkpO2JjYigxNjEwLDEse30sQWVjKTtfLktiPWZ1bmN0aW9uIEJlYyhhKXtyZXR1cm4gQkQodk5iKEJEKGEsMTApLCh3dGMoKSxudGMpKSw0MDMpfTt2YXIgVFQ9bWRiKEFuZSwnU2VsZkxvb3BSb3V0ZXIvbGFtYmRhJDMkVHlwZScsMTYxMCk7YmNiKDE2MTEsMSxxaWUsQ2VjKTtfLnRkPWZ1bmN0aW9uIERlYyhhKXtwZWModGhpcy5hLHRoaXMuYixCRChhLDQwMykpfTt2YXIgVVQ9bWRiKEFuZSwnU2VsZkxvb3BSb3V0ZXIvbGFtYmRhJDQkVHlwZScsMTYxMSk7YmNiKDE2MTIsMSxlbmUsRmVjKTtfLnBmPWZ1bmN0aW9uIEllYyhhLGIpe0VlYyhCRChhLDM3KSxiKX07dmFyICRUPW1kYihBbmUsJ1NlbWlJbnRlcmFjdGl2ZUNyb3NzTWluUHJvY2Vzc29yJywxNjEyKTtiY2IoMTYxMywxLE9pZSxKZWMpO18uTWI9ZnVuY3Rpb24gS2VjKGEpe3JldHVybiBCRChhLDEwKS5rPT0oajBiKCksaDBiKX07dmFyIFdUPW1kYihBbmUsJ1NlbWlJbnRlcmFjdGl2ZUNyb3NzTWluUHJvY2Vzc29yL2xhbWJkYSQwJFR5cGUnLDE2MTMpO2JjYigxNjE0LDEsT2llLExlYyk7Xy5NYj1mdW5jdGlvbiBNZWMoYSl7cmV0dXJuIHVOYihCRChhLDEwKSkuX2IoKE55YygpLGF5YykpfTt2YXIgWFQ9bWRiKEFuZSwnU2VtaUludGVyYWN0aXZlQ3Jvc3NNaW5Qcm9jZXNzb3IvbGFtYmRhJDEkVHlwZScsMTYxNCk7YmNiKDE2MTUsMSxEa2UsTmVjKTtfLnVlPWZ1bmN0aW9uIE9lYyhhLGIpe3JldHVybiBHZWMoQkQoYSwxMCksQkQoYiwxMCkpfTtfLkZiPWZ1bmN0aW9uIFBlYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gUWVjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBZVD1tZGIoQW5lLCdTZW1pSW50ZXJhY3RpdmVDcm9zc01pblByb2Nlc3Nvci9sYW1iZGEkMiRUeXBlJywxNjE1KTtiY2IoMTYxNiwxLHt9LFJlYyk7Xy5DZT1mdW5jdGlvbiBTZWMoYSxiKXtyZXR1cm4gSGVjKEJEKGEsMTApLEJEKGIsMTApKX07dmFyIFpUPW1kYihBbmUsJ1NlbWlJbnRlcmFjdGl2ZUNyb3NzTWluUHJvY2Vzc29yL2xhbWJkYSQzJFR5cGUnLDE2MTYpO2JjYigxNjE4LDEsZW5lLFVlYyk7Xy5wZj1mdW5jdGlvbiBZZWMoYSxiKXtUZWMoQkQoYSwzNyksYil9O3ZhciBiVT1tZGIoQW5lLCdTb3J0QnlJbnB1dE1vZGVsUHJvY2Vzc29yJywxNjE4KTtiY2IoMTYxOSwxLE9pZSxaZWMpO18uTWI9ZnVuY3Rpb24gJGVjKGEpe3JldHVybiBCRChhLDExKS5nLmMubGVuZ3RoIT0wfTt2YXIgX1Q9bWRiKEFuZSwnU29ydEJ5SW5wdXRNb2RlbFByb2Nlc3Nvci9sYW1iZGEkMCRUeXBlJywxNjE5KTtiY2IoMTYyMCwxLHFpZSxfZWMpO18udGQ9ZnVuY3Rpb24gYWZjKGEpe1dlYyh0aGlzLmEsQkQoYSwxMSkpfTt2YXIgYVU9bWRiKEFuZSwnU29ydEJ5SW5wdXRNb2RlbFByb2Nlc3Nvci9sYW1iZGEkMSRUeXBlJywxNjIwKTtiY2IoMTY5Myw4MDMse30samZjKTtfLk1lPWZ1bmN0aW9uIGtmYyhhKXt2YXIgYixjLGQsZTt0aGlzLmM9YTtzd2l0Y2godGhpcy5hLmcpe2Nhc2UgMjpiPW5ldyBSa2I7TUFiKEpBYihuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLmMuYS5iLDE2KSksbmV3IGxnYyksbmV3IG5nYyh0aGlzLGIpKTtuRWIodGhpcyxuZXcgdGZjKTtIa2IoYixuZXcgeGZjKTtiLmM9S0MoU0ksVWhlLDEsMCw1LDEpO01BYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIodGhpcy5jLmEuYiwxNikpLG5ldyB6ZmMpLG5ldyBCZmMoYikpO25FYih0aGlzLG5ldyBGZmMpO0hrYihiLG5ldyBKZmMpO2IuYz1LQyhTSSxVaGUsMSwwLDUsMSk7Yz1OdGIoJHpiKE9BYihuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLmMuYS5iLDE2KSksbmV3IExmYyh0aGlzKSkpLG5ldyBOZmMpO01BYihuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLmMuYS5hLDE2KSksbmV3IFJmYyhjLGIpKTtuRWIodGhpcyxuZXcgVmZjKTtIa2IoYixuZXcgWmZjKTtiLmM9S0MoU0ksVWhlLDEsMCw1LDEpO2JyZWFrO2Nhc2UgMzpkPW5ldyBSa2I7bkViKHRoaXMsbmV3IGxmYyk7ZT1OdGIoJHpiKE9BYihuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLmMuYS5iLDE2KSksbmV3IHBmYyh0aGlzKSkpLG5ldyBQZmMpO01BYihKQWIobmV3IFlBYihudWxsLG5ldyBLdWIodGhpcy5jLmEuYiwxNikpLG5ldyBfZmMpLG5ldyBiZ2MoZSxkKSk7bkViKHRoaXMsbmV3IGZnYyk7SGtiKGQsbmV3IGpnYyk7ZC5jPUtDKFNJLFVoZSwxLDAsNSwxKTticmVhaztkZWZhdWx0OnRocm93IHZiYihuZXcgeDJjKTt9fTtfLmI9MDt2YXIgQVU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24nLDE2OTMpO2JjYigxNjk0LDEsVmtlLGxmYyk7Xy5MYj1mdW5jdGlvbiBtZmMoYSl7cmV0dXJuIEpEKEJEKGEsNTcpLmcsMTQ1KX07Xy5GYj1mdW5jdGlvbiBuZmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIG9mYyhhKXtyZXR1cm4gSkQoQkQoYSw1NykuZywxNDUpfTt2YXIgY1U9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDAkVHlwZScsMTY5NCk7YmNiKDE2OTUsMSx7fSxwZmMpO18uRmU9ZnVuY3Rpb24gcWZjKGEpe3JldHVybiBkZmModGhpcy5hLEJEKGEsNTcpKX07dmFyIGRVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQxJFR5cGUnLDE2OTUpO2JjYigxNzAzLDEsUGllLHJmYyk7Xy5WZD1mdW5jdGlvbiBzZmMoKXtjZmModGhpcy5hLHRoaXMuYiwtMSl9O18uYj0wO3ZhciBlVT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkMTAkVHlwZScsMTcwMyk7YmNiKDE3MDUsMSxWa2UsdGZjKTtfLkxiPWZ1bmN0aW9uIHVmYyhhKXtyZXR1cm4gSkQoQkQoYSw1NykuZywxNDUpfTtfLkZiPWZ1bmN0aW9uIHZmYyhhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gd2ZjKGEpe3JldHVybiBKRChCRChhLDU3KS5nLDE0NSl9O3ZhciBmVT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkMTEkVHlwZScsMTcwNSk7YmNiKDE3MDYsMSxxaWUseGZjKTtfLnRkPWZ1bmN0aW9uIHlmYyhhKXtCRChhLDM2NSkuVmQoKX07dmFyIGdVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQxMiRUeXBlJywxNzA2KTtiY2IoMTcwNywxLE9pZSx6ZmMpO18uTWI9ZnVuY3Rpb24gQWZjKGEpe3JldHVybiBKRChCRChhLDU3KS5nLDEwKX07dmFyIGhVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQxMyRUeXBlJywxNzA3KTtiY2IoMTcwOSwxLHFpZSxCZmMpO18udGQ9ZnVuY3Rpb24gQ2ZjKGEpe2VmYyh0aGlzLmEsQkQoYSw1NykpfTt2YXIgaVU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDE0JFR5cGUnLDE3MDkpO2JjYigxNzA4LDEsUGllLERmYyk7Xy5WZD1mdW5jdGlvbiBFZmMoKXtjZmModGhpcy5iLHRoaXMuYSwtMSl9O18uYT0wO3ZhciBqVT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkMTUkVHlwZScsMTcwOCk7YmNiKDE3MTAsMSxWa2UsRmZjKTtfLkxiPWZ1bmN0aW9uIEdmYyhhKXtyZXR1cm4gSkQoQkQoYSw1NykuZywxMCl9O18uRmI9ZnVuY3Rpb24gSGZjKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBJZmMoYSl7cmV0dXJuIEpEKEJEKGEsNTcpLmcsMTApfTt2YXIga1U9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDE2JFR5cGUnLDE3MTApO2JjYigxNzExLDEscWllLEpmYyk7Xy50ZD1mdW5jdGlvbiBLZmMoYSl7QkQoYSwzNjUpLlZkKCl9O3ZhciBsVT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkMTckVHlwZScsMTcxMSk7YmNiKDE3MTIsMSx7fSxMZmMpO18uRmU9ZnVuY3Rpb24gTWZjKGEpe3JldHVybiBmZmModGhpcy5hLEJEKGEsNTcpKX07dmFyIG1VPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQxOCRUeXBlJywxNzEyKTtiY2IoMTcxMywxLHt9LE5mYyk7Xy5EZT1mdW5jdGlvbiBPZmMoKXtyZXR1cm4gMH07dmFyIG5VPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQxOSRUeXBlJywxNzEzKTtiY2IoMTY5NiwxLHt9LFBmYyk7Xy5EZT1mdW5jdGlvbiBRZmMoKXtyZXR1cm4gMH07dmFyIG9VPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQyJFR5cGUnLDE2OTYpO2JjYigxNzE1LDEscWllLFJmYyk7Xy50ZD1mdW5jdGlvbiBTZmMoYSl7Z2ZjKHRoaXMuYSx0aGlzLmIsQkQoYSwzMDcpKX07Xy5hPTA7dmFyIHBVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQyMCRUeXBlJywxNzE1KTtiY2IoMTcxNCwxLFBpZSxUZmMpO18uVmQ9ZnVuY3Rpb24gVWZjKCl7YmZjKHRoaXMuYSx0aGlzLmIsLTEpfTtfLmI9MDt2YXIgcVU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDIxJFR5cGUnLDE3MTQpO2JjYigxNzE2LDEsVmtlLFZmYyk7Xy5MYj1mdW5jdGlvbiBXZmMoYSl7cmV0dXJuIEJEKGEsNTcpLHRydWV9O18uRmI9ZnVuY3Rpb24gWGZjKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBZZmMoYSl7cmV0dXJuIEJEKGEsNTcpLHRydWV9O3ZhciByVT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkMjIkVHlwZScsMTcxNik7YmNiKDE3MTcsMSxxaWUsWmZjKTtfLnRkPWZ1bmN0aW9uICRmYyhhKXtCRChhLDM2NSkuVmQoKX07dmFyIHNVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQyMyRUeXBlJywxNzE3KTtiY2IoMTY5NywxLE9pZSxfZmMpO18uTWI9ZnVuY3Rpb24gYWdjKGEpe3JldHVybiBKRChCRChhLDU3KS5nLDEwKX07dmFyIHRVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQzJFR5cGUnLDE2OTcpO2JjYigxNjk5LDEscWllLGJnYyk7Xy50ZD1mdW5jdGlvbiBjZ2MoYSl7aGZjKHRoaXMuYSx0aGlzLmIsQkQoYSw1NykpfTtfLmE9MDt2YXIgdVU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDQkVHlwZScsMTY5OSk7YmNiKDE2OTgsMSxQaWUsZGdjKTtfLlZkPWZ1bmN0aW9uIGVnYygpe2NmYyh0aGlzLmIsdGhpcy5hLC0xKX07Xy5hPTA7dmFyIHZVPW1kYihKbmUsJ0VkZ2VBd2FyZVNjYW5saW5lQ29uc3RyYWludENhbGN1bGF0aW9uL2xhbWJkYSQ1JFR5cGUnLDE2OTgpO2JjYigxNzAwLDEsVmtlLGZnYyk7Xy5MYj1mdW5jdGlvbiBnZ2MoYSl7cmV0dXJuIEJEKGEsNTcpLHRydWV9O18uRmI9ZnVuY3Rpb24gaGdjKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBpZ2MoYSl7cmV0dXJuIEJEKGEsNTcpLHRydWV9O3ZhciB3VT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkNiRUeXBlJywxNzAwKTtiY2IoMTcwMSwxLHFpZSxqZ2MpO18udGQ9ZnVuY3Rpb24ga2djKGEpe0JEKGEsMzY1KS5WZCgpfTt2YXIgeFU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDckVHlwZScsMTcwMSk7YmNiKDE3MDIsMSxPaWUsbGdjKTtfLk1iPWZ1bmN0aW9uIG1nYyhhKXtyZXR1cm4gSkQoQkQoYSw1NykuZywxNDUpfTt2YXIgeVU9bWRiKEpuZSwnRWRnZUF3YXJlU2NhbmxpbmVDb25zdHJhaW50Q2FsY3VsYXRpb24vbGFtYmRhJDgkVHlwZScsMTcwMik7YmNiKDE3MDQsMSxxaWUsbmdjKTtfLnRkPWZ1bmN0aW9uIG9nYyhhKXtpZmModGhpcy5hLHRoaXMuYixCRChhLDU3KSl9O3ZhciB6VT1tZGIoSm5lLCdFZGdlQXdhcmVTY2FubGluZUNvbnN0cmFpbnRDYWxjdWxhdGlvbi9sYW1iZGEkOSRUeXBlJywxNzA0KTtiY2IoMTUyMSwxLGVuZSxzZ2MpO18ucGY9ZnVuY3Rpb24geGdjKGEsYil7cmdjKHRoaXMsQkQoYSwzNyksYil9O3ZhciBwZ2M7dmFyIEVVPW1kYihKbmUsJ0hvcml6b250YWxHcmFwaENvbXBhY3RvcicsMTUyMSk7YmNiKDE1MjIsMSx7fSx5Z2MpO18uT2U9ZnVuY3Rpb24gemdjKGEsYil7dmFyIGMsZCxlO2lmKHZnYyhhLGIpKXtyZXR1cm4gMH1jPXRnYyhhKTtkPXRnYyhiKTtpZighIWMmJmMuaz09KGowYigpLGUwYil8fCEhZCYmZC5rPT0oajBiKCksZTBiKSl7cmV0dXJuIDB9ZT1CRCh2TmIodGhpcy5hLmEsKHd0YygpLG90YykpLDMwNCk7cmV0dXJuIGZCYyhlLGM/Yy5rOihqMGIoKSxnMGIpLGQ/ZC5rOihqMGIoKSxnMGIpKX07Xy5QZT1mdW5jdGlvbiBBZ2MoYSxiKXt2YXIgYyxkLGU7aWYodmdjKGEsYikpe3JldHVybiAxfWM9dGdjKGEpO2Q9dGdjKGIpO2U9QkQodk5iKHRoaXMuYS5hLCh3dGMoKSxvdGMpKSwzMDQpO3JldHVybiBpQmMoZSxjP2MuazooajBiKCksZzBiKSxkP2QuazooajBiKCksZzBiKSl9O3ZhciBCVT1tZGIoSm5lLCdIb3Jpem9udGFsR3JhcGhDb21wYWN0b3IvMScsMTUyMik7YmNiKDE1MjMsMSx7fSxCZ2MpO18uTmU9ZnVuY3Rpb24gQ2djKGEsYil7cmV0dXJuIHFnYygpLGEuYS5pPT0wfTt2YXIgQ1U9bWRiKEpuZSwnSG9yaXpvbnRhbEdyYXBoQ29tcGFjdG9yL2xhbWJkYSQwJFR5cGUnLDE1MjMpO2JjYigxNTI0LDEse30sRGdjKTtfLk5lPWZ1bmN0aW9uIEVnYyhhLGIpe3JldHVybiB3Z2ModGhpcy5hLGEsYil9O3ZhciBEVT1tZGIoSm5lLCdIb3Jpem9udGFsR3JhcGhDb21wYWN0b3IvbGFtYmRhJDEkVHlwZScsMTUyNCk7YmNiKDE2NjQsMSx7fSxZZ2MpO3ZhciBGZ2MsR2djO3ZhciBjVj1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyJywxNjY0KTtiY2IoMTY3MiwxLE9pZSxlaGMpO18uTWI9ZnVuY3Rpb24gZmhjKGEpe3JldHVybiBhIT1udWxsfTt2YXIgRlU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci8wbWV0aG9kcmVmJG5vbk51bGwkVHlwZScsMTY3Mik7YmNiKDE2NjUsMSx7fSxnaGMpO18uS2I9ZnVuY3Rpb24gaGhjKGEpe3JldHVybiBIZ2MoKSxmY2Iodk5iKEJEKEJEKGEsNTcpLmcsMTApLCh3dGMoKSwkc2MpKSl9O3ZhciBHVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQwJFR5cGUnLDE2NjUpO2JjYigxNjY2LDEse30saWhjKTtfLktiPWZ1bmN0aW9uIGpoYyhhKXtyZXR1cm4gSGdjKCksZ2ljKEJEKEJEKGEsNTcpLmcsMTQ1KSl9O3ZhciBIVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQxJFR5cGUnLDE2NjYpO2JjYigxNjc1LDEsT2llLGtoYyk7Xy5NYj1mdW5jdGlvbiBsaGMoYSl7cmV0dXJuIEhnYygpLEpEKEJEKGEsNTcpLmcsMTApfTt2YXIgSVU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTAkVHlwZScsMTY3NSk7YmNiKDE2NzYsMSxxaWUsbWhjKTtfLnRkPWZ1bmN0aW9uIG5oYyhhKXtaZ2MoQkQoYSw1NykpfTt2YXIgSlU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTEkVHlwZScsMTY3Nik7YmNiKDE2NzcsMSxPaWUsb2hjKTtfLk1iPWZ1bmN0aW9uIHBoYyhhKXtyZXR1cm4gSGdjKCksSkQoQkQoYSw1NykuZywxNDUpfTt2YXIgS1U9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTIkVHlwZScsMTY3Nyk7YmNiKDE2ODEsMSxxaWUscWhjKTtfLnRkPWZ1bmN0aW9uIHJoYyhhKXskZ2MoQkQoYSw1NykpfTt2YXIgTFU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTMkVHlwZScsMTY4MSk7YmNiKDE2NzgsMSxxaWUsc2hjKTtfLnRkPWZ1bmN0aW9uIHRoYyhhKXtfZ2ModGhpcy5hLEJEKGEsOCkpfTtfLmE9MDt2YXIgTVU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTQkVHlwZScsMTY3OCk7YmNiKDE2NzksMSxxaWUsdWhjKTtfLnRkPWZ1bmN0aW9uIHZoYyhhKXthaGModGhpcy5hLEJEKGEsMTEwKSl9O18uYT0wO3ZhciBOVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQxNSRUeXBlJywxNjc5KTtiY2IoMTY4MCwxLHFpZSx3aGMpO18udGQ9ZnVuY3Rpb24geGhjKGEpe2JoYyh0aGlzLmEsQkQoYSw4KSl9O18uYT0wO3ZhciBPVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQxNiRUeXBlJywxNjgwKTtiY2IoMTY4MiwxLHt9LHloYyk7Xy5LYj1mdW5jdGlvbiB6aGMoYSl7cmV0dXJuIEhnYygpLG5ldyBZQWIobnVsbCxuZXcgTHViKG5ldyBTcih1cihVX2IoQkQoYSwxMCkpLmEuS2MoKSxuZXcgU3EpKSkpfTt2YXIgUFU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMTckVHlwZScsMTY4Mik7YmNiKDE2ODMsMSxPaWUsQWhjKTtfLk1iPWZ1bmN0aW9uIEJoYyhhKXtyZXR1cm4gSGdjKCksT1piKEJEKGEsMTcpKX07dmFyIFFVPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDE4JFR5cGUnLDE2ODMpO2JjYigxNjg0LDEscWllLENoYyk7Xy50ZD1mdW5jdGlvbiBEaGMoYSl7UWdjKHRoaXMuYSxCRChhLDE3KSl9O3ZhciBSVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQxOSRUeXBlJywxNjg0KTtiY2IoMTY2OCwxLHFpZSxFaGMpO18udGQ9ZnVuY3Rpb24gRmhjKGEpe1JnYyh0aGlzLmEsQkQoYSwxNDUpKX07dmFyIFNVPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDIkVHlwZScsMTY2OCk7YmNiKDE2ODUsMSx7fSxHaGMpO18uS2I9ZnVuY3Rpb24gSGhjKGEpe3JldHVybiBIZ2MoKSxuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBUVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQyMCRUeXBlJywxNjg1KTtiY2IoMTY4NiwxLHt9LEloYyk7Xy5LYj1mdW5jdGlvbiBKaGMoYSl7cmV0dXJuIEhnYygpLG5ldyBZQWIobnVsbCxuZXcgTHViKG5ldyBTcih1cihVX2IoQkQoYSwxMCkpLmEuS2MoKSxuZXcgU3EpKSkpfTt2YXIgVVU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMjEkVHlwZScsMTY4Nik7YmNiKDE2ODcsMSx7fSxLaGMpO18uS2I9ZnVuY3Rpb24gTGhjKGEpe3JldHVybiBIZ2MoKSxCRCh2TmIoQkQoYSwxNyksKHd0YygpLHJ0YykpLDE1KX07dmFyIFZVPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDIyJFR5cGUnLDE2ODcpO2JjYigxNjg4LDEsT2llLE1oYyk7Xy5NYj1mdW5jdGlvbiBOaGMoYSl7cmV0dXJuIGNoYyhCRChhLDE1KSl9O3ZhciBXVT1tZGIoSm5lLCdMR3JhcGhUb0NHcmFwaFRyYW5zZm9ybWVyL2xhbWJkYSQyMyRUeXBlJywxNjg4KTtiY2IoMTY4OSwxLHFpZSxPaGMpO18udGQ9ZnVuY3Rpb24gUGhjKGEpe0pnYyh0aGlzLmEsQkQoYSwxNSkpfTt2YXIgWFU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMjQkVHlwZScsMTY4OSk7YmNiKDE2NjcsMSxxaWUsUWhjKTtfLnRkPWZ1bmN0aW9uIFJoYyhhKXtTZ2ModGhpcy5hLHRoaXMuYixCRChhLDE0NSkpfTt2YXIgWVU9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkMyRUeXBlJywxNjY3KTtiY2IoMTY2OSwxLHt9LFNoYyk7Xy5LYj1mdW5jdGlvbiBUaGMoYSl7cmV0dXJuIEhnYygpLG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMjkpLmEsMTYpKX07dmFyIFpVPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDQkVHlwZScsMTY2OSk7YmNiKDE2NzAsMSx7fSxVaGMpO18uS2I9ZnVuY3Rpb24gVmhjKGEpe3JldHVybiBIZ2MoKSxuZXcgWUFiKG51bGwsbmV3IEx1YihuZXcgU3IodXIoVV9iKEJEKGEsMTApKS5hLktjKCksbmV3IFNxKSkpKX07dmFyICRVPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDUkVHlwZScsMTY3MCk7YmNiKDE2NzEsMSx7fSxXaGMpO18uS2I9ZnVuY3Rpb24gWGhjKGEpe3JldHVybiBIZ2MoKSxCRCh2TmIoQkQoYSwxNyksKHd0YygpLHJ0YykpLDE1KX07dmFyIF9VPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDYkVHlwZScsMTY3MSk7YmNiKDE2NzMsMSxxaWUsWWhjKTtfLnRkPWZ1bmN0aW9uIFpoYyhhKXtkaGModGhpcy5hLEJEKGEsMTUpKX07dmFyIGFWPW1kYihKbmUsJ0xHcmFwaFRvQ0dyYXBoVHJhbnNmb3JtZXIvbGFtYmRhJDgkVHlwZScsMTY3Myk7YmNiKDE2NzQsMSxxaWUsJGhjKTtfLnRkPWZ1bmN0aW9uIF9oYyhhKXtUZ2ModGhpcy5hLHRoaXMuYixCRChhLDE0NSkpfTt2YXIgYlY9bWRiKEpuZSwnTEdyYXBoVG9DR3JhcGhUcmFuc2Zvcm1lci9sYW1iZGEkOSRUeXBlJywxNjc0KTtiY2IoMTY2MywxLHt9LGRpYyk7Xy5MZT1mdW5jdGlvbiBlaWMoYSl7dmFyIGIsYyxkLGUsZjt0aGlzLmE9YTt0aGlzLmQ9bmV3IEtGYjt0aGlzLmM9S0Moak4sVWhlLDEyMSx0aGlzLmEuYS5hLmMubGVuZ3RoLDAsMSk7dGhpcy5iPTA7Zm9yKGM9bmV3IG9sYih0aGlzLmEuYS5hKTtjLmE8Yy5jLmMubGVuZ3RoOyl7Yj1CRChtbGIoYyksMzA3KTtiLmQ9dGhpcy5iO2Y9bkdiKG9HYihuZXcgcEdiLGIpLHRoaXMuZCk7dGhpcy5jW3RoaXMuYl09ZjsrK3RoaXMuYn1jaWModGhpcyk7YmljKHRoaXMpO2FpYyh0aGlzKTt1R2IoTEdiKHRoaXMuZCksbmV3IFpkZCk7Zm9yKGU9bmV3IG9sYih0aGlzLmEuYS5iKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksNTcpO2QuZC5jPXRoaXMuY1tkLmEuZF0uZStkLmIuYX19O18uYj0wO3ZhciBkVj1tZGIoSm5lLCdOZXR3b3JrU2ltcGxleENvbXBhY3Rpb24nLDE2NjMpO2JjYigxNDUsMSx7MzU6MSwxNDU6MX0saGljKTtfLndkPWZ1bmN0aW9uIGlpYyhhKXtyZXR1cm4gZmljKHRoaXMsQkQoYSwxNDUpKX07Xy5JYj1mdW5jdGlvbiBqaWMoKXtyZXR1cm4gZ2ljKHRoaXMpfTt2YXIgZVY9bWRiKEpuZSwnVmVydGljYWxTZWdtZW50JywxNDUpO2JjYig4MjcsMSx7fSxzaWMpO18uYz0wO18uZT0wO18uaT0wO3ZhciBoVj1tZGIoS25lLCdCZXR3ZWVuTGF5ZXJFZGdlVHdvTm9kZUNyb3NzaW5nc0NvdW50ZXInLDgyNyk7YmNiKDY2MywxLHs2NjM6MX0semljKTtfLkliPWZ1bmN0aW9uIEFpYygpe3JldHVybiAnQWRqYWNlbmN5TGlzdCBbbm9kZT0nK3RoaXMuZCsnLCBhZGphY2VuY2llcz0gJyt0aGlzLmErJ10nfTtfLmI9MDtfLmM9MDtfLmY9MDt2YXIgZ1Y9bWRiKEtuZSwnQmV0d2VlbkxheWVyRWRnZVR3b05vZGVDcm9zc2luZ3NDb3VudGVyL0FkamFjZW5jeUxpc3QnLDY2Myk7YmNiKDI4NywxLHszNToxLDI4NzoxfSxEaWMpO18ud2Q9ZnVuY3Rpb24gRWljKGEpe3JldHVybiBCaWModGhpcyxCRChhLDI4NykpfTtfLkliPWZ1bmN0aW9uIEZpYygpe3JldHVybiAnQWRqYWNlbmN5IFtwb3NpdGlvbj0nK3RoaXMuYysnLCBjYXJkaW5hbGl0eT0nK3RoaXMuYSsnLCBjdXJyZW50Q2FyZGluYWxpdHk9Jyt0aGlzLmIrJ10nfTtfLmE9MDtfLmI9MDtfLmM9MDt2YXIgZlY9bWRiKEtuZSwnQmV0d2VlbkxheWVyRWRnZVR3b05vZGVDcm9zc2luZ3NDb3VudGVyL0FkamFjZW5jeUxpc3QvQWRqYWNlbmN5JywyODcpO2JjYigxOTI5LDEse30sSWljKTtfLmI9MDtfLmU9ZmFsc2U7dmFyIGlWPW1kYihLbmUsJ0Nyb3NzaW5nTWF0cml4RmlsbGVyJywxOTI5KTt2YXIgcVk9b2RiKExuZSwnSUluaXRpYWxpemFibGUnKTtiY2IoMTgwNCwxLE1uZSxPaWMpO18uTmY9ZnVuY3Rpb24gUmljKGEsYixjLGQsZSxmKXt9O18uUGY9ZnVuY3Rpb24gVGljKGEsYixjKXt9O18uTGY9ZnVuY3Rpb24gUGljKCl7cmV0dXJuIHRoaXMuYyE9KHJHYygpLHBHYyl9O18uTWY9ZnVuY3Rpb24gUWljKCl7dGhpcy5lPUtDKFdELG9qZSwyNSx0aGlzLmQsMTUsMSl9O18uT2Y9ZnVuY3Rpb24gU2ljKGEsYil7YlthXVswXS5jLnA9YX07Xy5RZj1mdW5jdGlvbiBVaWMoYSxiLGMsZCl7Kyt0aGlzLmR9O18uUmY9ZnVuY3Rpb24gVmljKCl7cmV0dXJuIHRydWV9O18uU2Y9ZnVuY3Rpb24gV2ljKGEsYixjLGQpe0tpYyh0aGlzLGEsYixjKTtyZXR1cm4gSmljKHRoaXMsYil9O18uVGY9ZnVuY3Rpb24gWGljKGEsYil7dmFyIGM7Yz1MaWMoYixhLmxlbmd0aCk7S2ljKHRoaXMsYSxjLGIpO3JldHVybiBNaWModGhpcyxjKX07Xy5kPTA7dmFyIGpWPW1kYihLbmUsJ0dyZWVkeVN3aXRjaEhldXJpc3RpYycsMTgwNCk7YmNiKDE5MzAsMSx7fSxlamMpO18uYj0wO18uZD0wO3ZhciBrVj1tZGIoS25lLCdOb3J0aFNvdXRoRWRnZU5laWdoYm91cmluZ05vZGVDcm9zc2luZ3NDb3VudGVyJywxOTMwKTtiY2IoMTkxNywxLHt9LGpqYyk7Xy5hPWZhbHNlO3ZhciBsVj1tZGIoS25lLCdTd2l0Y2hEZWNpZGVyJywxOTE3KTtiY2IoMTAxLDEsezEwMToxfSxwamMpO18uYT1udWxsO18uYz1udWxsO18uaT1udWxsO3ZhciBvVj1tZGIoTm5lLCdTZWxmSHlwZXJMb29wJywxMDEpO2JjYigxOTE2LDEse30sdmpjKTtfLmM9MDtfLmU9MDt2YXIgblY9bWRiKE5uZSwnU2VsZkh5cGVyTG9vcExhYmVscycsMTkxNik7YmNiKDQxMSwyMix7MzoxLDM1OjEsMjI6MSw0MTE6MX0sQmpjKTt2YXIgd2pjLHhqYyx5amMsempjO3ZhciBtVj1uZGIoTm5lLCdTZWxmSHlwZXJMb29wTGFiZWxzL0FsaWdubWVudCcsNDExLENJLERqYyxDamMpO3ZhciBFamM7YmNiKDQwOSwxLHs0MDk6MX0sR2pjKTt2YXIgcFY9bWRiKE5uZSwnU2VsZkxvb3BFZGdlJyw0MDkpO2JjYig0MDMsMSx7NDAzOjF9LEtqYyk7Xy5hPWZhbHNlO3ZhciByVj1tZGIoTm5lLCdTZWxmTG9vcEhvbGRlcicsNDAzKTtiY2IoMTcyNCwxLE9pZSxNamMpO18uTWI9ZnVuY3Rpb24gTmpjKGEpe3JldHVybiBPWmIoQkQoYSwxNykpfTt2YXIgcVY9bWRiKE5uZSwnU2VsZkxvb3BIb2xkZXIvbGFtYmRhJDAkVHlwZScsMTcyNCk7YmNiKDExMywxLHsxMTM6MX0sUGpjKTtfLmE9ZmFsc2U7Xy5jPWZhbHNlO3ZhciB0Vj1tZGIoTm5lLCdTZWxmTG9vcFBvcnQnLDExMyk7YmNiKDE3OTIsMSxPaWUsUWpjKTtfLk1iPWZ1bmN0aW9uIFJqYyhhKXtyZXR1cm4gT1piKEJEKGEsMTcpKX07dmFyIHNWPW1kYihObmUsJ1NlbGZMb29wUG9ydC9sYW1iZGEkMCRUeXBlJywxNzkyKTtiY2IoMzYzLDIyLHszOjEsMzU6MSwyMjoxLDM2MzoxfSxZamMpO3ZhciBTamMsVGpjLFVqYyxWamMsV2pjO3ZhciB1Vj1uZGIoTm5lLCdTZWxmTG9vcFR5cGUnLDM2MyxDSSxfamMsJGpjKTt2YXIgYWtjO2JjYigxNzMyLDEse30seGtjKTt2YXIgY2tjLGRrYyxla2MsZmtjO3ZhciBKVj1tZGIoT25lLCdQb3J0UmVzdG9yZXInLDE3MzIpO2JjYigzNjEsMjIsezM6MSwzNToxLDIyOjEsMzYxOjF9LEdrYyk7dmFyIENrYyxEa2MsRWtjO3ZhciB2Vj1uZGIoT25lLCdQb3J0UmVzdG9yZXIvUG9ydFNpZGVBcmVhJywzNjEsQ0ksSWtjLEhrYyk7dmFyIEprYztiY2IoMTczMywxLHt9LExrYyk7Xy5LYj1mdW5jdGlvbiBNa2MoYSl7cmV0dXJuIGdrYygpLEJEKGEsMTUpLk9jKCl9O3ZhciB3Vj1tZGIoT25lLCdQb3J0UmVzdG9yZXIvbGFtYmRhJDAkVHlwZScsMTczMyk7YmNiKDE3MzQsMSxxaWUsTmtjKTtfLnRkPWZ1bmN0aW9uIE9rYyhhKXtna2MoKTtCRChhLDExMykuYz1mYWxzZX07dmFyIHhWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkMSRUeXBlJywxNzM0KTtiY2IoMTc0MywxLE9pZSxQa2MpO18uTWI9ZnVuY3Rpb24gUWtjKGEpe3JldHVybiBna2MoKSxCRChhLDExKS5qPT0oVWNkKCksVGNkKX07dmFyIHlWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkMTAkVHlwZScsMTc0Myk7YmNiKDE3NDQsMSx7fSxSa2MpO18uS2I9ZnVuY3Rpb24gU2tjKGEpe3JldHVybiBna2MoKSxCRChhLDExMykuZH07dmFyIHpWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkMTEkVHlwZScsMTc0NCk7YmNiKDE3NDUsMSxxaWUsVGtjKTtfLnRkPWZ1bmN0aW9uIFVrYyhhKXt5a2ModGhpcy5hLEJEKGEsMTEpKX07dmFyIEFWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkMTIkVHlwZScsMTc0NSk7YmNiKDE3MzUsMSxxaWUsVmtjKTtfLnRkPWZ1bmN0aW9uIFdrYyhhKXt6a2ModGhpcy5hLEJEKGEsMTAxKSl9O3ZhciBCVj1tZGIoT25lLCdQb3J0UmVzdG9yZXIvbGFtYmRhJDIkVHlwZScsMTczNSk7YmNiKDE3MzYsMSxEa2UsWGtjKTtfLnVlPWZ1bmN0aW9uIFlrYyhhLGIpe3JldHVybiBBa2MoQkQoYSwxMTMpLEJEKGIsMTEzKSl9O18uRmI9ZnVuY3Rpb24gWmtjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiAka2MoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIENWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkMyRUeXBlJywxNzM2KTtiY2IoMTczNywxLE9pZSxfa2MpO18uTWI9ZnVuY3Rpb24gYWxjKGEpe3JldHVybiBna2MoKSxCRChhLDExMykuY307dmFyIERWPW1kYihPbmUsJ1BvcnRSZXN0b3Jlci9sYW1iZGEkNCRUeXBlJywxNzM3KTtiY2IoMTczOCwxLE9pZSxibGMpO18uTWI9ZnVuY3Rpb24gY2xjKGEpe3JldHVybiBua2MoQkQoYSwxMSkpfTt2YXIgRVY9bWRiKE9uZSwnUG9ydFJlc3RvcmVyL2xhbWJkYSQ1JFR5cGUnLDE3MzgpO2JjYigxNzM5LDEsT2llLGRsYyk7Xy5NYj1mdW5jdGlvbiBlbGMoYSl7cmV0dXJuIGdrYygpLEJEKGEsMTEpLmo9PShVY2QoKSxBY2QpfTt2YXIgRlY9bWRiKE9uZSwnUG9ydFJlc3RvcmVyL2xhbWJkYSQ2JFR5cGUnLDE3MzkpO2JjYigxNzQwLDEsT2llLGZsYyk7Xy5NYj1mdW5jdGlvbiBnbGMoYSl7cmV0dXJuIGdrYygpLEJEKGEsMTEpLmo9PShVY2QoKSx6Y2QpfTt2YXIgR1Y9bWRiKE9uZSwnUG9ydFJlc3RvcmVyL2xhbWJkYSQ3JFR5cGUnLDE3NDApO2JjYigxNzQxLDEsT2llLGhsYyk7Xy5NYj1mdW5jdGlvbiBpbGMoYSl7cmV0dXJuIG9rYyhCRChhLDExKSl9O3ZhciBIVj1tZGIoT25lLCdQb3J0UmVzdG9yZXIvbGFtYmRhJDgkVHlwZScsMTc0MSk7YmNiKDE3NDIsMSxPaWUsamxjKTtfLk1iPWZ1bmN0aW9uIGtsYyhhKXtyZXR1cm4gZ2tjKCksQkQoYSwxMSkuaj09KFVjZCgpLFJjZCl9O3ZhciBJVj1tZGIoT25lLCdQb3J0UmVzdG9yZXIvbGFtYmRhJDkkVHlwZScsMTc0Mik7YmNiKDI3MCwyMix7MzoxLDM1OjEsMjI6MSwyNzA6MX0sQmxjKTt2YXIgc2xjLHRsYyx1bGMsdmxjLHdsYyx4bGMseWxjLHpsYzt2YXIgS1Y9bmRiKE9uZSwnUG9ydFNpZGVBc3NpZ25lci9UYXJnZXQnLDI3MCxDSSxEbGMsQ2xjKTt2YXIgRWxjO2JjYigxNzI1LDEse30sR2xjKTtfLktiPWZ1bmN0aW9uIEhsYyhhKXtyZXR1cm4gSkFiKG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMTAxKS5qLDE2KSksbmV3IFlsYyl9O3ZhciBMVj1tZGIoT25lLCdQb3J0U2lkZUFzc2lnbmVyL2xhbWJkYSQxJFR5cGUnLDE3MjUpO2JjYigxNzI2LDEse30sSWxjKTtfLktiPWZ1bmN0aW9uIEpsYyhhKXtyZXR1cm4gQkQoYSwxMTMpLmR9O3ZhciBNVj1tZGIoT25lLCdQb3J0U2lkZUFzc2lnbmVyL2xhbWJkYSQyJFR5cGUnLDE3MjYpO2JjYigxNzI3LDEscWllLEtsYyk7Xy50ZD1mdW5jdGlvbiBMbGMoYSl7RzBiKEJEKGEsMTEpLChVY2QoKSxBY2QpKX07dmFyIE5WPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDMkVHlwZScsMTcyNyk7YmNiKDE3MjgsMSx7fSxNbGMpO18uS2I9ZnVuY3Rpb24gTmxjKGEpe3JldHVybiBCRChhLDExMykuZH07dmFyIE9WPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDQkVHlwZScsMTcyOCk7YmNiKDE3MjksMSxxaWUsT2xjKTtfLnRkPWZ1bmN0aW9uIFBsYyhhKXtwbGModGhpcy5hLEJEKGEsMTEpKX07dmFyIFBWPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDUkVHlwZScsMTcyOSk7YmNiKDE3MzAsMSxEa2UsUWxjKTtfLnVlPWZ1bmN0aW9uIFJsYyhhLGIpe3JldHVybiBxbGMoQkQoYSwxMDEpLEJEKGIsMTAxKSl9O18uRmI9ZnVuY3Rpb24gU2xjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBUbGMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFFWPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDYkVHlwZScsMTczMCk7YmNiKDE3MzEsMSxEa2UsVWxjKTtfLnVlPWZ1bmN0aW9uIFZsYyhhLGIpe3JldHVybiBybGMoQkQoYSwxMTMpLEJEKGIsMTEzKSl9O18uRmI9ZnVuY3Rpb24gV2xjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBYbGMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFJWPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDckVHlwZScsMTczMSk7YmNiKDgwNSwxLE9pZSxZbGMpO18uTWI9ZnVuY3Rpb24gWmxjKGEpe3JldHVybiBCRChhLDExMykuY307dmFyIFNWPW1kYihPbmUsJ1BvcnRTaWRlQXNzaWduZXIvbGFtYmRhJDgkVHlwZScsODA1KTtiY2IoMjAwOSwxLHt9KTt2YXIgVFY9bWRiKFBuZSwnQWJzdHJhY3RTZWxmTG9vcFJvdXRlcicsMjAwOSk7YmNiKDE3NTAsMSxEa2UsZ21jKTtfLnVlPWZ1bmN0aW9uIGhtYyhhLGIpe3JldHVybiBlbWMoQkQoYSwxMDEpLEJEKGIsMTAxKSl9O18uRmI9ZnVuY3Rpb24gaW1jKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBqbWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFVWPW1kYihQbmUscmxlLDE3NTApO2JjYigxNzUxLDEsRGtlLGttYyk7Xy51ZT1mdW5jdGlvbiBsbWMoYSxiKXtyZXR1cm4gZm1jKEJEKGEsMTAxKSxCRChiLDEwMSkpfTtfLkZiPWZ1bmN0aW9uIG1tYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gbm1jKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBWVj1tZGIoUG5lLHNsZSwxNzUxKTtiY2IoMTc5MywyMDA5LHt9LHptYyk7Xy5VZj1mdW5jdGlvbiBBbWMoYSxiLGMpe3JldHVybiBjfTt2YXIgWFY9bWRiKFBuZSwnT3J0aG9nb25hbFNlbGZMb29wUm91dGVyJywxNzkzKTtiY2IoMTc5NSwxLHFpZSxCbWMpO18udGQ9ZnVuY3Rpb24gQ21jKGEpe3ltYyh0aGlzLmIsdGhpcy5hLEJEKGEsOCkpfTt2YXIgV1Y9bWRiKFBuZSwnT3J0aG9nb25hbFNlbGZMb29wUm91dGVyL2xhbWJkYSQwJFR5cGUnLDE3OTUpO2JjYigxNzk0LDE3OTMse30sRm1jKTtfLlVmPWZ1bmN0aW9uIEdtYyhhLGIsYyl7dmFyIGQsZTtkPWEuYy5kO1N0KGMsMCxQNmMoUjZjKGQubiksZC5hKSk7ZT1hLmQuZDtEc2IoYyxQNmMoUjZjKGUubiksZS5hKSk7cmV0dXJuIERtYyhjKX07dmFyIFlWPW1kYihQbmUsJ1BvbHlsaW5lU2VsZkxvb3BSb3V0ZXInLDE3OTQpO2JjYigxNzQ2LDEse30sVW1jKTtfLmE9bnVsbDt2YXIgSG1jO3ZhciBhVz1tZGIoUG5lLCdSb3V0aW5nRGlyZWN0b3InLDE3NDYpO2JjYigxNzQ3LDEsRGtlLFdtYyk7Xy51ZT1mdW5jdGlvbiBYbWMoYSxiKXtyZXR1cm4gVm1jKEJEKGEsMTEzKSxCRChiLDExMykpfTtfLkZiPWZ1bmN0aW9uIFltYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gWm1jKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBaVj1tZGIoUG5lLCdSb3V0aW5nRGlyZWN0b3IvbGFtYmRhJDAkVHlwZScsMTc0Nyk7YmNiKDE3NDgsMSx7fSwkbWMpO18uS2I9ZnVuY3Rpb24gX21jKGEpe3JldHVybiBJbWMoKSxCRChhLDEwMSkuan07dmFyICRWPW1kYihQbmUsJ1JvdXRpbmdEaXJlY3Rvci9sYW1iZGEkMSRUeXBlJywxNzQ4KTtiY2IoMTc0OSwxLHFpZSxhbmMpO18udGQ9ZnVuY3Rpb24gYm5jKGEpe0ltYygpO0JEKGEsMTUpLmFkKEhtYyl9O3ZhciBfVj1tZGIoUG5lLCdSb3V0aW5nRGlyZWN0b3IvbGFtYmRhJDIkVHlwZScsMTc0OSk7YmNiKDE3NTIsMSx7fSxtbmMpO3ZhciBkVz1tZGIoUG5lLCdSb3V0aW5nU2xvdEFzc2lnbmVyJywxNzUyKTtiY2IoMTc1MywxLE9pZSxwbmMpO18uTWI9ZnVuY3Rpb24gcW5jKGEpe3JldHVybiBubmModGhpcy5hLEJEKGEsMTAxKSl9O3ZhciBiVz1tZGIoUG5lLCdSb3V0aW5nU2xvdEFzc2lnbmVyL2xhbWJkYSQwJFR5cGUnLDE3NTMpO2JjYigxNzU0LDEsRGtlLHJuYyk7Xy51ZT1mdW5jdGlvbiBzbmMoYSxiKXtyZXR1cm4gb25jKHRoaXMuYSxCRChhLDEwMSksQkQoYiwxMDEpKX07Xy5GYj1mdW5jdGlvbiB0bmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHVuYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgY1c9bWRiKFBuZSwnUm91dGluZ1Nsb3RBc3NpZ25lci9sYW1iZGEkMSRUeXBlJywxNzU0KTtiY2IoMTc5NiwxNzkzLHt9LHduYyk7Xy5VZj1mdW5jdGlvbiB4bmMoYSxiLGMpe3ZhciBkLGUsZixnO2Q9RWRiKEVEKGNfYihhLmIuZy5iLChOeWMoKSxueWMpKSkpO2c9bmV3IHU3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFsoZj1hLmMuZCxQNmMobmV3IGc3YyhmLm4pLGYuYSkpXSkpO3ZuYyhhLGIsYyxnLGQpO0RzYihnLChlPWEuZC5kLFA2YyhuZXcgZzdjKGUubiksZS5hKSkpO3JldHVybiBVUGMobmV3IFlQYyhnKSl9O3ZhciBlVz1tZGIoUG5lLCdTcGxpbmVTZWxmTG9vcFJvdXRlcicsMTc5Nik7YmNiKDU3OCwxLERrZSxCbmMsRG5jKTtfLnVlPWZ1bmN0aW9uIEVuYyhhLGIpe3JldHVybiB5bmModGhpcyxCRChhLDEwKSxCRChiLDEwKSl9O18uRmI9ZnVuY3Rpb24gRm5jKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBHbmMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIGtXPW1kYihRbmUsJ01vZGVsT3JkZXJOb2RlQ29tcGFyYXRvcicsNTc4KTtiY2IoMTc1NSwxLE9pZSxIbmMpO18uTWI9ZnVuY3Rpb24gSW5jKGEpe3JldHVybiBCRChhLDExKS5lLmMubGVuZ3RoIT0wfTt2YXIgZlc9bWRiKFFuZSwnTW9kZWxPcmRlck5vZGVDb21wYXJhdG9yL2xhbWJkYSQwJFR5cGUnLDE3NTUpO2JjYigxNzU2LDEse30sSm5jKTtfLktiPWZ1bmN0aW9uIEtuYyhhKXtyZXR1cm4gQkQoSWtiKEJEKGEsMTEpLmUsMCksMTcpLmN9O3ZhciBnVz1tZGIoUW5lLCdNb2RlbE9yZGVyTm9kZUNvbXBhcmF0b3IvbGFtYmRhJDEkVHlwZScsMTc1Nik7YmNiKDE3NTcsMSxPaWUsTG5jKTtfLk1iPWZ1bmN0aW9uIE1uYyhhKXtyZXR1cm4gQkQoYSwxMSkuZS5jLmxlbmd0aCE9MH07dmFyIGhXPW1kYihRbmUsJ01vZGVsT3JkZXJOb2RlQ29tcGFyYXRvci9sYW1iZGEkMiRUeXBlJywxNzU3KTtiY2IoMTc1OCwxLHt9LE5uYyk7Xy5LYj1mdW5jdGlvbiBPbmMoYSl7cmV0dXJuIEJEKElrYihCRChhLDExKS5lLDApLDE3KS5jfTt2YXIgaVc9bWRiKFFuZSwnTW9kZWxPcmRlck5vZGVDb21wYXJhdG9yL2xhbWJkYSQzJFR5cGUnLDE3NTgpO2JjYigxNzU5LDEsT2llLFBuYyk7Xy5NYj1mdW5jdGlvbiBRbmMoYSl7cmV0dXJuIEJEKGEsMTEpLmUuYy5sZW5ndGghPTB9O3ZhciBqVz1tZGIoUW5lLCdNb2RlbE9yZGVyTm9kZUNvbXBhcmF0b3IvbGFtYmRhJDQkVHlwZScsMTc1OSk7YmNiKDgwNiwxLERrZSxUbmMsVW5jKTtfLnVlPWZ1bmN0aW9uIFZuYyhhLGIpe3JldHVybiBSbmModGhpcyxhLGIpfTtfLkZiPWZ1bmN0aW9uIFduYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gWG5jKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBsVz1tZGIoUW5lLCdNb2RlbE9yZGVyUG9ydENvbXBhcmF0b3InLDgwNik7YmNiKDgwMSwxLHt9LFluYyk7Xy5WZj1mdW5jdGlvbiAkbmMoYSxiKXt2YXIgYyxkLGUsZjtlPVpuYyhiKTtjPW5ldyBSa2I7Zj1iLmYvZTtmb3IoZD0xO2Q8ZTsrK2Qpe0VrYihjLG1lYihUYmIoQ2JiKCR3bmQuTWF0aC5yb3VuZChkKmYpKSkpKX1yZXR1cm4gY307Xy5XZj1mdW5jdGlvbiBfbmMoKXtyZXR1cm4gZmFsc2V9O3ZhciBtVz1tZGIoUm5lLCdBUkRDdXRJbmRleEhldXJpc3RpYycsODAxKTtiY2IoMTQ3OSwxLGVuZSxlb2MpO18ucGY9ZnVuY3Rpb24gZm9jKGEsYil7ZG9jKEJEKGEsMzcpLGIpfTt2YXIgcFc9bWRiKFJuZSwnQnJlYWtpbmdQb2ludEluc2VydGVyJywxNDc5KTtiY2IoMzA1LDEsezMwNToxfSxnb2MpO18uSWI9ZnVuY3Rpb24gam9jKCl7dmFyIGE7YT1uZXcgVWZiO2EuYSs9J0JQSW5mb1snO2EuYSs9J1xcblxcdHN0YXJ0PSc7UGZiKGEsdGhpcy5pKTthLmErPSdcXG5cXHRlbmQ9JztQZmIoYSx0aGlzLmEpO2EuYSs9J1xcblxcdG5vZGVTdGFydEVkZ2U9JztQZmIoYSx0aGlzLmUpO2EuYSs9J1xcblxcdHN0YXJ0RW5kRWRnZT0nO1BmYihhLHRoaXMuaik7YS5hKz0nXFxuXFx0b3JpZ2luYWxFZGdlPSc7UGZiKGEsdGhpcy5mKTthLmErPSdcXG5cXHRzdGFydEluTGF5ZXJEdW1teT0nO1BmYihhLHRoaXMuayk7YS5hKz0nXFxuXFx0c3RhcnRJbkxheWVyRWRnZT0nO1BmYihhLHRoaXMubik7YS5hKz0nXFxuXFx0ZW5kSW5MYXllckR1bW15PSc7UGZiKGEsdGhpcy5iKTthLmErPSdcXG5cXHRlbmRJbkxheWVyRWRnZT0nO1BmYihhLHRoaXMuYyk7cmV0dXJuIGEuYX07dmFyIG5XPW1kYihSbmUsJ0JyZWFraW5nUG9pbnRJbnNlcnRlci9CUEluZm8nLDMwNSk7YmNiKDY1MiwxLHs2NTI6MX0scW9jKTtfLmE9ZmFsc2U7Xy5iPTA7Xy5jPTA7dmFyIG9XPW1kYihSbmUsJ0JyZWFraW5nUG9pbnRJbnNlcnRlci9DdXQnLDY1Mik7YmNiKDE0ODAsMSxlbmUsQW9jKTtfLnBmPWZ1bmN0aW9uIEJvYyhhLGIpe3lvYyhCRChhLDM3KSxiKX07dmFyIHNXPW1kYihSbmUsJ0JyZWFraW5nUG9pbnRQcm9jZXNzb3InLDE0ODApO2JjYigxNDgxLDEsT2llLENvYyk7Xy5NYj1mdW5jdGlvbiBEb2MoYSl7cmV0dXJuIGhvYyhCRChhLDEwKSl9O3ZhciBxVz1tZGIoUm5lLCdCcmVha2luZ1BvaW50UHJvY2Vzc29yLzBtZXRob2RyZWYkaXNFbmQkVHlwZScsMTQ4MSk7YmNiKDE0ODIsMSxPaWUsRW9jKTtfLk1iPWZ1bmN0aW9uIEZvYyhhKXtyZXR1cm4gaW9jKEJEKGEsMTApKX07dmFyIHJXPW1kYihSbmUsJ0JyZWFraW5nUG9pbnRQcm9jZXNzb3IvMW1ldGhvZHJlZiRpc1N0YXJ0JFR5cGUnLDE0ODIpO2JjYigxNDgzLDEsZW5lLEpvYyk7Xy5wZj1mdW5jdGlvbiBLb2MoYSxiKXtIb2ModGhpcyxCRChhLDM3KSxiKX07dmFyIHVXPW1kYihSbmUsJ0JyZWFraW5nUG9pbnRSZW1vdmVyJywxNDgzKTtiY2IoMTQ4NCwxLHFpZSxMb2MpO18udGQ9ZnVuY3Rpb24gTW9jKGEpe0JEKGEsMTI4KS5rPXRydWV9O3ZhciB0Vz1tZGIoUm5lLCdCcmVha2luZ1BvaW50UmVtb3Zlci9sYW1iZGEkMCRUeXBlJywxNDg0KTtiY2IoNzk3LDEse30sWG9jKTtfLmI9MDtfLmU9MDtfLmY9MDtfLmo9MDt2YXIgQVc9bWRiKFJuZSwnR3JhcGhTdGF0cycsNzk3KTtiY2IoNzk4LDEse30sWm9jKTtfLkNlPWZ1bmN0aW9uICRvYyhhLGIpe3JldHVybiAkd25kLk1hdGgubWF4KEVkYihFRChhKSksRWRiKEVEKGIpKSl9O3ZhciB2Vz1tZGIoUm5lLCdHcmFwaFN0YXRzLzBtZXRob2RyZWYkbWF4JFR5cGUnLDc5OCk7YmNiKDc5OSwxLHt9LF9vYyk7Xy5DZT1mdW5jdGlvbiBhcGMoYSxiKXtyZXR1cm4gJHduZC5NYXRoLm1heChFZGIoRUQoYSkpLEVkYihFRChiKSkpfTt2YXIgd1c9bWRiKFJuZSwnR3JhcGhTdGF0cy8ybWV0aG9kcmVmJG1heCRUeXBlJyw3OTkpO2JjYigxNjYwLDEse30sYnBjKTtfLkNlPWZ1bmN0aW9uIGNwYyhhLGIpe3JldHVybiBZb2MoRUQoYSksRUQoYikpfTt2YXIgeFc9bWRiKFJuZSwnR3JhcGhTdGF0cy9sYW1iZGEkMSRUeXBlJywxNjYwKTtiY2IoMTY2MSwxLHt9LGRwYyk7Xy5LYj1mdW5jdGlvbiBlcGMoYSl7cmV0dXJuIFJvYyh0aGlzLmEsQkQoYSwyOSkpfTt2YXIgeVc9bWRiKFJuZSwnR3JhcGhTdGF0cy9sYW1iZGEkMiRUeXBlJywxNjYxKTtiY2IoMTY2MiwxLHt9LGZwYyk7Xy5LYj1mdW5jdGlvbiBncGMoYSl7cmV0dXJuIFFvYyh0aGlzLmEsQkQoYSwyOSkpfTt2YXIgelc9bWRiKFJuZSwnR3JhcGhTdGF0cy9sYW1iZGEkNiRUeXBlJywxNjYyKTtiY2IoODAwLDEse30saHBjKTtfLlZmPWZ1bmN0aW9uIGlwYyhhLGIpe3ZhciBjO2M9QkQodk5iKGEsKE55YygpLEV5YykpLDE1KTtyZXR1cm4gYz9jOihtbWIoKSxtbWIoKSxqbWIpfTtfLldmPWZ1bmN0aW9uIGpwYygpe3JldHVybiBmYWxzZX07dmFyIEJXPW1kYihSbmUsJ0lDdXRJbmRleENhbGN1bGF0b3IvTWFudWFsQ3V0SW5kZXhDYWxjdWxhdG9yJyw4MDApO2JjYig4MDIsMSx7fSxrcGMpO18uVmY9ZnVuY3Rpb24gbHBjKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU7dT0oYi5uPT1udWxsJiZVb2MoYiksYi5uKTtpPShiLmQ9PW51bGwmJlVvYyhiKSxiLmQpO3Q9S0MoVUQsVmplLDI1LHUubGVuZ3RoLDE1LDEpO3RbMF09dVswXTtyPXVbMF07Zm9yKGo9MTtqPHUubGVuZ3RoO2orKyl7dFtqXT10W2otMV0rdVtqXTtyKz11W2pdfWU9Wm5jKGIpLTE7Zz1CRCh2TmIoYSwoTnljKCksRnljKSksMTkpLmE7ZD1RamU7Yz1uZXcgUmtiO2ZvcihtPSR3bmQuTWF0aC5tYXgoMCxlLWcpO208PSR3bmQuTWF0aC5taW4oYi5mLTEsZStnKTttKyspe3A9ci8obSsxKTtxPTA7az0xO2Y9bmV3IFJrYjtzPVFqZTtsPTA7aD0wO289aVswXTtpZihtPT0wKXtzPXI7aD0oYi5nPT1udWxsJiYoYi5nPVBvYyhiLG5ldyBfb2MpKSxFZGIoYi5nKSl9ZWxzZXt3aGlsZShrPGIuZil7aWYodFtrLTFdLXE+PXApe0VrYihmLG1lYihrKSk7cz0kd25kLk1hdGgubWF4KHMsdFtrLTFdLWwpO2grPW87cSs9dFtrLTFdLXE7bD10W2stMV07bz1pW2tdfW89JHduZC5NYXRoLm1heChvLGlba10pOysra31oKz1vfW49JHduZC5NYXRoLm1pbigxL3MsMS9iLmIvaCk7aWYobj5kKXtkPW47Yz1mfX1yZXR1cm4gY307Xy5XZj1mdW5jdGlvbiBtcGMoKXtyZXR1cm4gZmFsc2V9O3ZhciBDVz1tZGIoUm5lLCdNU0RDdXRJbmRleEhldXJpc3RpYycsODAyKTtiY2IoMTYxNywxLGVuZSxwcGMpO18ucGY9ZnVuY3Rpb24gcXBjKGEsYil7b3BjKEJEKGEsMzcpLGIpfTt2YXIgRFc9bWRiKFJuZSwnU2luZ2xlRWRnZUdyYXBoV3JhcHBlcicsMTYxNyk7YmNiKDIyNywyMix7MzoxLDM1OjEsMjI6MSwyMjc6MX0sQnBjKTt2YXIgdXBjLHZwYyx3cGMseHBjLHlwYyx6cGM7dmFyIEVXPW5kYihTbmUsJ0NlbnRlckVkZ2VMYWJlbFBsYWNlbWVudFN0cmF0ZWd5JywyMjcsQ0ksRHBjLENwYyk7dmFyIEVwYztiY2IoNDIyLDIyLHszOjEsMzU6MSwyMjoxLDQyMjoxfSxKcGMpO3ZhciBHcGMsSHBjO3ZhciBGVz1uZGIoU25lLCdDb25zdHJhaW50Q2FsY3VsYXRpb25TdHJhdGVneScsNDIyLENJLExwYyxLcGMpO3ZhciBNcGM7YmNiKDMxNCwyMix7MzoxLDM1OjEsMjI6MSwzMTQ6MSwyNDY6MSwyMzQ6MX0sVHBjKTtfLktmPWZ1bmN0aW9uIFZwYygpe3JldHVybiBTcGModGhpcyl9O18uWGY9ZnVuY3Rpb24gVXBjKCl7cmV0dXJuIFNwYyh0aGlzKX07dmFyIE9wYyxQcGMsUXBjO3ZhciBHVz1uZGIoU25lLCdDcm9zc2luZ01pbmltaXphdGlvblN0cmF0ZWd5JywzMTQsQ0ksWHBjLFdwYyk7dmFyIFlwYztiY2IoMzM3LDIyLHszOjEsMzU6MSwyMjoxLDMzNzoxfSxjcWMpO3ZhciAkcGMsX3BjLGFxYzt2YXIgSFc9bmRiKFNuZSwnQ3V0dGluZ1N0cmF0ZWd5JywzMzcsQ0ksZXFjLGRxYyk7dmFyIGZxYztiY2IoMzM1LDIyLHszOjEsMzU6MSwyMjoxLDMzNToxLDI0NjoxLDIzNDoxfSxvcWMpO18uS2Y9ZnVuY3Rpb24gcXFjKCl7cmV0dXJuIG5xYyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBwcWMoKXtyZXR1cm4gbnFjKHRoaXMpfTt2YXIgaHFjLGlxYyxqcWMsa3FjLGxxYzt2YXIgSVc9bmRiKFNuZSwnQ3ljbGVCcmVha2luZ1N0cmF0ZWd5JywzMzUsQ0ksc3FjLHJxYyk7dmFyIHRxYztiY2IoNDE5LDIyLHszOjEsMzU6MSwyMjoxLDQxOToxfSx5cWMpO3ZhciB2cWMsd3FjO3ZhciBKVz1uZGIoU25lLCdEaXJlY3Rpb25Db25ncnVlbmN5Jyw0MTksQ0ksQXFjLHpxYyk7dmFyIEJxYztiY2IoNDUwLDIyLHszOjEsMzU6MSwyMjoxLDQ1MDoxfSxIcWMpO3ZhciBEcWMsRXFjLEZxYzt2YXIgS1c9bmRiKFNuZSwnRWRnZUNvbnN0cmFpbnQnLDQ1MCxDSSxKcWMsSXFjKTt2YXIgS3FjO2JjYigyNzYsMjIsezM6MSwzNToxLDIyOjEsMjc2OjF9LFVxYyk7dmFyIE1xYyxOcWMsT3FjLFBxYyxRcWMsUnFjO3ZhciBMVz1uZGIoU25lLCdFZGdlTGFiZWxTaWRlU2VsZWN0aW9uJywyNzYsQ0ksV3FjLFZxYyk7dmFyIFhxYztiY2IoNDc5LDIyLHszOjEsMzU6MSwyMjoxLDQ3OToxfSxhcmMpO3ZhciBacWMsJHFjO3ZhciBNVz1uZGIoU25lLCdFZGdlU3RyYWlnaHRlbmluZ1N0cmF0ZWd5Jyw0NzksQ0ksY3JjLGJyYyk7dmFyIGRyYztiY2IoMjc0LDIyLHszOjEsMzU6MSwyMjoxLDI3NDoxfSxtcmMpO3ZhciBmcmMsZ3JjLGhyYyxpcmMsanJjLGtyYzt2YXIgTlc9bmRiKFNuZSwnRml4ZWRBbGlnbm1lbnQnLDI3NCxDSSxvcmMsbnJjKTt2YXIgcHJjO2JjYigyNzUsMjIsezM6MSwzNToxLDIyOjEsMjc1OjF9LHpyYyk7dmFyIHJyYyx0cmMsdXJjLHZyYyx3cmMseHJjO3ZhciBPVz1uZGIoU25lLCdHcmFwaENvbXBhY3Rpb25TdHJhdGVneScsMjc1LENJLEJyYyxBcmMpO3ZhciBDcmM7YmNiKDI1NiwyMix7MzoxLDM1OjEsMjI6MSwyNTY6MX0sUHJjKTt2YXIgRXJjLEZyYyxHcmMsSHJjLElyYyxKcmMsS3JjLExyYyxNcmMsTnJjO3ZhciBQVz1uZGIoU25lLCdHcmFwaFByb3BlcnRpZXMnLDI1NixDSSxScmMsUXJjKTt2YXIgU3JjO2JjYigyOTIsMjIsezM6MSwzNToxLDIyOjEsMjkyOjF9LFlyYyk7dmFyIFVyYyxWcmMsV3JjO3ZhciBRVz1uZGIoU25lLCdHcmVlZHlTd2l0Y2hUeXBlJywyOTIsQ0ksJHJjLFpyYyk7dmFyIF9yYztiY2IoMzAzLDIyLHszOjEsMzU6MSwyMjoxLDMwMzoxfSxmc2MpO3ZhciBic2MsY3NjLGRzYzt2YXIgUlc9bmRiKFNuZSwnSW5MYXllckNvbnN0cmFpbnQnLDMwMyxDSSxoc2MsZ3NjKTt2YXIgaXNjO2JjYig0MjAsMjIsezM6MSwzNToxLDIyOjEsNDIwOjF9LG5zYyk7dmFyIGtzYyxsc2M7dmFyIFNXPW5kYihTbmUsJ0ludGVyYWN0aXZlUmVmZXJlbmNlUG9pbnQnLDQyMCxDSSxwc2Msb3NjKTt2YXIgcXNjO3ZhciBzc2MsdHNjLHVzYyx2c2Msd3NjLHhzYyx5c2MsenNjLEFzYyxCc2MsQ3NjLERzYyxFc2MsRnNjLEdzYyxIc2MsSXNjLEpzYyxLc2MsTHNjLE1zYyxOc2MsT3NjLFBzYyxRc2MsUnNjLFNzYyxUc2MsVXNjLFZzYyxXc2MsWHNjLFlzYyxac2MsJHNjLF9zYyxhdGMsYnRjLGN0YyxkdGMsZXRjLGZ0YyxndGMsaHRjLGl0YyxqdGMsa3RjLGx0YyxtdGMsbnRjLG90YyxwdGMscXRjLHJ0YyxzdGMsdHRjLHV0Yyx2dGM7YmNiKDE2MywyMix7MzoxLDM1OjEsMjI6MSwxNjM6MX0sRHRjKTt2YXIgeHRjLHl0Yyx6dGMsQXRjLEJ0Yzt2YXIgVFc9bmRiKFNuZSwnTGF5ZXJDb25zdHJhaW50JywxNjMsQ0ksRnRjLEV0Yyk7dmFyIEd0YztiY2IoODQ4LDEsYWxlLGt3Yyk7Xy5RZT1mdW5jdGlvbiBsd2MoYSl7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsWW5lKSwnJyksJ0RpcmVjdGlvbiBDb25ncnVlbmN5JyksJ1NwZWNpZmllcyBob3cgZHJhd2luZ3Mgb2YgdGhlIHNhbWUgZ3JhcGggd2l0aCBkaWZmZXJlbnQgbGF5b3V0IGRpcmVjdGlvbnMgY29tcGFyZSB0byBlYWNoIG90aGVyOiBlaXRoZXIgYSBuYXR1cmFsIHJlYWRpbmcgZGlyZWN0aW9uIGlzIHByZXNlcnZlZCBvciB0aGUgZHJhd2luZ3MgYXJlIHJvdGF0ZWQgdmVyc2lvbnMgb2YgZWFjaCBvdGhlci4nKSxwdWMpLChfNWMoKSxWNWMpKSxKVykscHFiKChONWMoKSxMNWMpKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxabmUpLCcnKSwnRmVlZGJhY2sgRWRnZXMnKSwnV2hldGhlciBmZWVkYmFjayBlZGdlcyBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgYnkgcm91dGluZyBhcm91bmQgdGhlIG5vZGVzLicpLChCY2IoKSxmYWxzZSkpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLCRuZSksJycpLCdJbnRlcmFjdGl2ZSBSZWZlcmVuY2UgUG9pbnQnKSwnRGV0ZXJtaW5lcyB3aGljaCBwb2ludCBvZiBhIG5vZGUgaXMgY29uc2lkZXJlZCBieSBpbnRlcmFjdGl2ZSBsYXlvdXQgcGhhc2VzLicpLE11YyksVjVjKSxTVykscHFiKEw1YykpKSk7bzRjKGEsJG5lLGdvZSxPdWMpO280YyhhLCRuZSxxb2UsTnVjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxfbmUpLCcnKSwnTWVyZ2UgRWRnZXMnKSwnRWRnZXMgdGhhdCBoYXZlIG5vIHBvcnRzIGFyZSBtZXJnZWQgc28gdGhleSB0b3VjaCB0aGUgY29ubmVjdGVkIG5vZGVzIGF0IHRoZSBzYW1lIHBvaW50cy4gV2hlbiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgb25lIHBvcnQgaXMgY3JlYXRlZCBmb3IgZWFjaCBlZGdlIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBhIG5vZGUuIFdoZW4gaXQgaXMgZW5hYmxlZCwgYWxsIHN1Y2ggaW5jb21pbmcgZWRnZXMgc2hhcmUgYW4gaW5wdXQgcG9ydCwgYW5kIGFsbCBvdXRnb2luZyBlZGdlcyBzaGFyZSBhbiBvdXRwdXQgcG9ydC4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYW9lKSwnJyksJ01lcmdlIEhpZXJhcmNoeS1Dcm9zc2luZyBFZGdlcycpLCdJZiBoaWVyYXJjaGljYWwgbGF5b3V0IGlzIGFjdGl2ZSwgaGllcmFyY2h5LWNyb3NzaW5nIGVkZ2VzIHVzZSBhcyBmZXcgaGllcmFyY2hpY2FsIHBvcnRzIGFzIHBvc3NpYmxlLiBUaGV5IGFyZSBicm9rZW4gYnkgdGhlIGFsZ29yaXRobSwgd2l0aCBoaWVyYXJjaGljYWwgcG9ydHMgaW5zZXJ0ZWQgYXMgcmVxdWlyZWQuIFVzdWFsbHksIG9uZSBzdWNoIHBvcnQgaXMgY3JlYXRlZCBmb3IgZWFjaCBlZGdlIGF0IGVhY2ggaGllcmFyY2h5IGNyb3NzaW5nIHBvaW50LiBXaXRoIHRoaXMgb3B0aW9uIHNldCB0byB0cnVlLCB3ZSB0cnkgdG8gY3JlYXRlIGFzIGZldyBoaWVyYXJjaGljYWwgcG9ydHMgYXMgcG9zc2libGUgaW4gdGhlIHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIGFsbCBlZGdlcyB0aGF0IGZvcm0gYSBoeXBlcmVkZ2UgY2FuIHNoYXJlIGEgcG9ydC4nKSx0cnVlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEM1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYm9lKSwnJyksJ0FsbG93IE5vbi1GbG93IFBvcnRzIFRvIFN3aXRjaCBTaWRlcycpLFwiU3BlY2lmaWVzIHdoZXRoZXIgbm9uLWZsb3cgcG9ydHMgbWF5IHN3aXRjaCBzaWRlcyBpZiB0aGVpciBub2RlJ3MgcG9ydCBjb25zdHJhaW50cyBhcmUgZWl0aGVyIEZJWEVEX1NJREUgb3IgRklYRURfT1JERVIuIEEgbm9uLWZsb3cgcG9ydCBpcyBhIHBvcnQgb24gYSBzaWRlIHRoYXQgaXMgbm90IHBhcnQgb2YgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIGxheW91dCBmbG93LiBGb3IgaW5zdGFuY2UsIGdpdmVuIGEgbGVmdC10by1yaWdodCBsYXlvdXQgZGlyZWN0aW9uLCBub3J0aCBhbmQgc291dGggcG9ydHMgd291bGQgYmUgY29uc2lkZXJlZCBub24tZmxvdyBwb3J0cy4gRnVydGhlciBub3RlIHRoYXQgdGhlIHVuZGVybHlpbmcgY3JpdGVyaXVtIHdoZXRoZXIgdG8gc3dpdGNoIHNpZGVzIG9yIG5vdCBzb2xlbHkgcmVsaWVzIG9uIHRoZSBtaW5pbWl6YXRpb24gb2YgZWRnZSBjcm9zc2luZ3MuIEhlbmNlLCBlZGdlIGxlbmd0aCBhbmQgb3RoZXIgYWVzdGhldGljcyBjcml0ZXJpYSBhcmUgbm90IGFkZHJlc3NlZC5cIiksZmFsc2UpLFQ1Yyksd0kpLHBxYihNNWMpKSxPQyhHQyhaSSwxKSxuaWUsMiw2LFsnb3JnLmVjbGlwc2UuZWxrLmxheWVyZWQubm9ydGhPclNvdXRoUG9ydCddKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxjb2UpLCcnKSwnUG9ydCBTb3J0aW5nIFN0cmF0ZWd5JyksXCJPbmx5IHJlbGV2YW50IGZvciBub2RlcyB3aXRoIEZJWEVEX1NJREUgcG9ydCBjb25zdHJhaW50cy4gRGV0ZXJtaW5lcyB0aGUgd2F5IGEgbm9kZSdzIHBvcnRzIGFyZSBkaXN0cmlidXRlZCBvbiB0aGUgc2lkZXMgb2YgYSBub2RlIGlmIHRoZWlyIG9yZGVyIGlzIG5vdCBwcmVzY3JpYmVkLiBUaGUgb3B0aW9uIGlzIHNldCBvbiBwYXJlbnQgbm9kZXMuXCIpLHh2YyksVjVjKSxjWCkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZG9lKSwnJyksJ1Rob3JvdWdobmVzcycpLCdIb3cgbXVjaCBlZmZvcnQgc2hvdWxkIGJlIHNwZW50IHRvIHByb2R1Y2UgYSBuaWNlIGxheW91dC4nKSxtZWIoNykpLFg1YyksSkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGVvZSksJycpLCdBZGQgVW5uZWNlc3NhcnkgQmVuZHBvaW50cycpLCdBZGRzIGJlbmQgcG9pbnRzIGV2ZW4gaWYgYW4gZWRnZSBkb2VzIG5vdCBjaGFuZ2UgZGlyZWN0aW9uLiBJZiB0cnVlLCBlYWNoIGxvbmcgZWRnZSBkdW1teSB3aWxsIGNvbnRyaWJ1dGUgYSBiZW5kIHBvaW50IHRvIGl0cyBlZGdlcyBhbmQgaGllcmFyY2h5LWNyb3NzaW5nIGVkZ2VzIHdpbGwgYWx3YXlzIGdldCBhIGJlbmQgcG9pbnQgd2hlcmUgdGhleSBjcm9zcyBoaWVyYXJjaHkgYm91bmRhcmllcy4gQnkgZGVmYXVsdCwgYmVuZCBwb2ludHMgYXJlIG9ubHkgYWRkZWQgd2hlcmUgYW4gZWRnZSBjaGFuZ2VzIGRpcmVjdGlvbi4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZm9lKSwnJyksJ0dlbmVyYXRlIFBvc2l0aW9uIGFuZCBMYXllciBJRHMnKSwnSWYgZW5hYmxlZCBwb3NpdGlvbiBpZCBhbmQgbGF5ZXIgaWQgYXJlIGdlbmVyYXRlZCwgd2hpY2ggYXJlIHVzdWFsbHkgb25seSB1c2VkIGludGVybmFsbHkgd2hlbiBzZXR0aW5nIHRoZSBpbnRlcmFjdGl2ZUxheW91dCBvcHRpb24uIFRoaXMgb3B0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgb24gdGhlIHJvb3Qgbm9kZS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZ29lKSwnY3ljbGVCcmVha2luZycpLCdDeWNsZSBCcmVha2luZyBTdHJhdGVneScpLCdTdHJhdGVneSBmb3IgY3ljbGUgYnJlYWtpbmcuIEN5Y2xlIGJyZWFraW5nIGxvb2tzIGZvciBjeWNsZXMgaW4gdGhlIGdyYXBoIGFuZCBkZXRlcm1pbmVzIHdoaWNoIGVkZ2VzIHRvIHJldmVyc2UgdG8gYnJlYWsgdGhlIGN5Y2xlcy4gUmV2ZXJzZWQgZWRnZXMgd2lsbCBlbmQgdXAgcG9pbnRpbmcgdG8gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBvZiByZWd1bGFyIGVkZ2VzICh0aGF0IGlzLCByZXZlcnNlZCBlZGdlcyB3aWxsIHBvaW50IGxlZnQgaWYgZWRnZXMgdXN1YWxseSBwb2ludCByaWdodCkuJyksbnVjKSxWNWMpLElXKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxob2UpLHBwZSksJ05vZGUgTGF5ZXJpbmcgU3RyYXRlZ3knKSwnU3RyYXRlZ3kgZm9yIG5vZGUgbGF5ZXJpbmcuJyksYnZjKSxWNWMpLFlXKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxpb2UpLHBwZSksJ0xheWVyIENvbnN0cmFpbnQnKSwnRGV0ZXJtaW5lcyBhIGNvbnN0cmFpbnQgb24gdGhlIHBsYWNlbWVudCBvZiB0aGUgbm9kZSByZWdhcmRpbmcgdGhlIGxheWVyaW5nLicpLFR1YyksVjVjKSxUVykscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsam9lKSxwcGUpLCdMYXllciBDaG9pY2UgQ29uc3RyYWludCcpLFwiQWxsb3dzIHRvIHNldCBhIGNvbnN0cmFpbnQgcmVnYXJkaW5nIHRoZSBsYXllciBwbGFjZW1lbnQgb2YgYSBub2RlLiBMZXQgaSBiZSB0aGUgdmFsdWUgb2YgdGVoIGNvbnN0cmFpbnQuIEFzc3VtZWQgdGhlIGRyYXdpbmcgaGFzIG4gbGF5ZXJzIGFuZCBpIDwgbi4gSWYgc2V0IHRvIGksIGl0IGV4cHJlc3NlcyB0aGF0IHRoZSBub2RlIHNob3VsZCBiZSBwbGFjZWQgaW4gaS10aCBsYXllci4gU2hvdWxkIGk+PW4gYmUgdHJ1ZSB0aGVuIHRoZSBub2RlIGlzIHBsYWNlZCBpbiB0aGUgbGFzdCBsYXllciBvZiB0aGUgZHJhd2luZy4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGlzIG5vdCBwYXJ0IG9mIGFueSBvZiBFTEsgTGF5ZXJlZCdzIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgYnV0IGlzIG9ubHkgZXZhbHVhdGVkIGFzIHBhcnQgb2YgdGhlIGBJbnRlcmFjdGl2ZUxheWVyZWRHcmFwaFZpc2l0b3JgLCB3aGljaCBtdXN0IGJlIGFwcGxpZWQgbWFudWFsbHkgb3IgdXNlZCB2aWEgdGhlIGBEaWFncmFtTGF5b3V0RW5naW5lLlwiKSxtZWIoLTEpKSxYNWMpLEpJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxrb2UpLHBwZSksJ0xheWVyIElEJyksJ0xheWVyIGlkZW50aWZpZXIgdGhhdCB3YXMgY2FsY3VsYXRlZCBieSBFTEsgTGF5ZXJlZCBmb3IgYSBub2RlLiBUaGlzIGlzIG9ubHkgZ2VuZXJhdGVkIGlmIGludGVyYWN0aXZlTGF5b3Qgb3IgZ2VuZXJhdGVQb3NpdGlvbkFuZExheWVySWRzIGlzIHNldC4nKSxtZWIoLTEpKSxYNWMpLEpJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxsb2UpLHFwZSksJ1VwcGVyIEJvdW5kIE9uIFdpZHRoIFtNaW5XaWR0aCBMYXllcmVyXScpLFwiRGVmaW5lcyBhIGxvb3NlIHVwcGVyIGJvdW5kIG9uIHRoZSB3aWR0aCBvZiB0aGUgTWluV2lkdGggbGF5ZXJlci4gSWYgc2V0IHRvICctMScgbXVsdGlwbGUgdmFsdWVzIGFyZSB0ZXN0ZWQgYW5kIHRoZSBiZXN0IHJlc3VsdCBpcyBzZWxlY3RlZC5cIiksbWViKDQpKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTtvNGMoYSxsb2UsaG9lLFd1Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsbW9lKSxxcGUpLCdVcHBlciBMYXllciBFc3RpbWF0aW9uIFNjYWxpbmcgRmFjdG9yIFtNaW5XaWR0aCBMYXllcmVyXScpLFwiTXVsdGlwbGllZCB3aXRoIFVwcGVyIEJvdW5kIE9uIFdpZHRoIGZvciBkZWZpbmluZyBhbiB1cHBlciBib3VuZCBvbiB0aGUgd2lkdGggb2YgbGF5ZXJzIHdoaWNoIGhhdmVuJ3QgYmVlbiBkZXRlcm1pbmVkIHlldCwgYnV0IHdob3NlIG1heGltdW0gd2lkdGggaGFkIGJlZW4gKHJvdWdobHkpIGVzdGltYXRlZCBieSB0aGUgTWluV2lkdGggYWxnb3JpdGhtLiBDb21wZW5zYXRlcyBmb3IgdG9vIGhpZ2ggZXN0aW1hdGlvbnMuIElmIHNldCB0byAnLTEnIG11bHRpcGxlIHZhbHVlcyBhcmUgdGVzdGVkIGFuZCB0aGUgYmVzdCByZXN1bHQgaXMgc2VsZWN0ZWQuXCIpLG1lYigyKSksWDVjKSxKSSkscHFiKEw1YykpKSk7bzRjKGEsbW9lLGhvZSxZdWMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG5vZSkscnBlKSwnTm9kZSBQcm9tb3Rpb24gU3RyYXRlZ3knKSwnUmVkdWNlcyBudW1iZXIgb2YgZHVtbXkgbm9kZXMgYWZ0ZXIgbGF5ZXJpbmcgcGhhc2UgKGlmIHBvc3NpYmxlKS4nKSxfdWMpLFY1YyksYVgpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG9vZSkscnBlKSwnTWF4IE5vZGUgUHJvbW90aW9uIEl0ZXJhdGlvbnMnKSwnTGltaXRzIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3Igbm9kZSBwcm9tb3Rpb24uJyksbWViKDApKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTtvNGMoYSxvb2Usbm9lLG51bGwpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHBvZSksJ2xheWVyaW5nLmNvZmZtYW5HcmFoYW0nKSwnTGF5ZXIgQm91bmQnKSwnVGhlIG1heGltdW0gbnVtYmVyIG9mIG5vZGVzIGFsbG93ZWQgcGVyIGxheWVyLicpLG1lYihPaGUpKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTtvNGMoYSxwb2UsaG9lLFF1Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMscW9lKSxzcGUpLCdDcm9zc2luZyBNaW5pbWl6YXRpb24gU3RyYXRlZ3knKSwnU3RyYXRlZ3kgZm9yIGNyb3NzaW5nIG1pbmltaXphdGlvbi4nKSxsdWMpLFY1YyksR1cpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHJvZSksc3BlKSwnRm9yY2UgTm9kZSBNb2RlbCBPcmRlcicpLCdUaGUgbm9kZSBvcmRlciBnaXZlbiBieSB0aGUgbW9kZWwgZG9lcyBub3QgY2hhbmdlIHRvIHByb2R1Y2UgYSBiZXR0ZXIgbGF5b3V0LiBFLmcuIGlmIG5vZGUgQSBpcyBiZWZvcmUgbm9kZSBCIGluIHRoZSBtb2RlbCB0aGlzIGlzIG5vdCBjaGFuZ2VkIGR1cmluZyBjcm9zc2luZyBtaW5pbWl6YXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBub2RlIG1vZGVsIG9yZGVyIGlzIGFscmVhZHkgcmVzcGVjdGVkIGJlZm9yZSBjcm9zc2luZyBtaW5pbWl6YXRpb24uIFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHNldHRpbmcgY29uc2lkZXJNb2RlbE9yZGVyLnN0cmF0ZWd5IHRvIE5PREVTX0FORF9FREdFUy4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsc29lKSxzcGUpLCdIaWVyYXJjaGljYWwgU3dlZXBpbmVzcycpLCdIb3cgbGlrZWx5IGl0IGlzIHRvIHVzZSBjcm9zcy1oaWVyYXJjaHkgKDEpIHZzIGJvdHRvbS11cCAoLTEpLicpLDAuMSksVTVjKSxCSSkscHFiKEw1YykpKSk7bzRjKGEsc29lLHRwZSxmdWMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHRvZSksc3BlKSwnU2VtaS1JbnRlcmFjdGl2ZSBDcm9zc2luZyBNaW5pbWl6YXRpb24nKSxcIlByZXNlcnZlcyB0aGUgb3JkZXIgb2Ygbm9kZXMgd2l0aGluIGEgbGF5ZXIgYnV0IHN0aWxsIG1pbmltaXplcyBjcm9zc2luZ3MgYmV0d2VlbiBlZGdlcyBjb25uZWN0aW5nIGxvbmcgZWRnZSBkdW1taWVzLiBEZXJpdmVzIHRoZSBkZXNpcmVkIG9yZGVyIGZyb20gcG9zaXRpb25zIHNwZWNpZmllZCBieSB0aGUgJ29yZy5lY2xpcHNlLmVsay5wb3NpdGlvbicgbGF5b3V0IG9wdGlvbi4gUmVxdWlyZXMgYSBjcm9zc2luZyBtaW5pbWl6YXRpb24gc3RyYXRlZ3kgdGhhdCBpcyBhYmxlIHRvIHByb2Nlc3MgJ2luLWxheWVyJyBjb25zdHJhaW50cy5cIiksZmFsc2UpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO280YyhhLHRvZSxxb2UsanVjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx1b2UpLHNwZSksJ1Bvc2l0aW9uIENob2ljZSBDb25zdHJhaW50JyksXCJBbGxvd3MgdG8gc2V0IGEgY29uc3RyYWludCByZWdhcmRpbmcgdGhlIHBvc2l0aW9uIHBsYWNlbWVudCBvZiBhIG5vZGUgaW4gYSBsYXllci4gQXNzdW1lZCB0aGUgbGF5ZXIgaW4gd2hpY2ggdGhlIG5vZGUgcGxhY2VkIGluY2x1ZGVzIG4gb3RoZXIgbm9kZXMgYW5kIGkgPCBuLiBJZiBzZXQgdG8gaSwgaXQgZXhwcmVzc2VzIHRoYXQgdGhlIG5vZGUgc2hvdWxkIGJlIHBsYWNlZCBhdCB0aGUgaS10aCBwb3NpdGlvbi4gU2hvdWxkIGk+PW4gYmUgdHJ1ZSB0aGVuIHRoZSBub2RlIGlzIHBsYWNlZCBhdCB0aGUgbGFzdCBwb3NpdGlvbiBpbiB0aGUgbGF5ZXIuIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBub3QgcGFydCBvZiBhbnkgb2YgRUxLIExheWVyZWQncyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGJ1dCBpcyBvbmx5IGV2YWx1YXRlZCBhcyBwYXJ0IG9mIHRoZSBgSW50ZXJhY3RpdmVMYXllcmVkR3JhcGhWaXNpdG9yYCwgd2hpY2ggbXVzdCBiZSBhcHBsaWVkIG1hbnVhbGx5IG9yIHVzZWQgdmlhIHRoZSBgRGlhZ3JhbUxheW91dEVuZ2luZS5cIiksbWViKC0xKSksWDVjKSxKSSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsdm9lKSxzcGUpLCdQb3NpdGlvbiBJRCcpLCdQb3NpdGlvbiB3aXRoaW4gYSBsYXllciB0aGF0IHdhcyBkZXRlcm1pbmVkIGJ5IEVMSyBMYXllcmVkIGZvciBhIG5vZGUuIFRoaXMgaXMgb25seSBnZW5lcmF0ZWQgaWYgaW50ZXJhY3RpdmVMYXlvdCBvciBnZW5lcmF0ZVBvc2l0aW9uQW5kTGF5ZXJJZHMgaXMgc2V0LicpLG1lYigtMSkpLFg1YyksSkkpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHdvZSksdXBlKSwnR3JlZWR5IFN3aXRjaCBBY3RpdmF0aW9uIFRocmVzaG9sZCcpLFwiQnkgZGVmYXVsdCBpdCBpcyBkZWNpZGVkIGF1dG9tYXRpY2FsbHkgaWYgdGhlIGdyZWVkeSBzd2l0Y2ggaXMgYWN0aXZhdGVkIG9yIG5vdC4gVGhlIGRlY2lzaW9uIGlzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHNpemUgb2YgdGhlIGlucHV0IGdyYXBoICh3aXRob3V0IGR1bW15IG5vZGVzKSBpcyBzbWFsbGVyIHRoYW4gdGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uLiBBICcwJyBlbmZvcmNlcyB0aGUgYWN0aXZhdGlvbi5cIiksbWViKDQwKSksWDVjKSxKSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMseG9lKSx1cGUpLCdHcmVlZHkgU3dpdGNoIENyb3NzaW5nIE1pbmltaXphdGlvbicpLFwiR3JlZWR5IFN3aXRjaCBzdHJhdGVneSBmb3IgY3Jvc3NpbmcgbWluaW1pemF0aW9uLiBUaGUgZ3JlZWR5IHN3aXRjaCBoZXVyaXN0aWMgaXMgZXhlY3V0ZWQgYWZ0ZXIgdGhlIHJlZ3VsYXIgY3Jvc3NpbmcgbWluaW1pemF0aW9uIGFzIGEgcG9zdC1wcm9jZXNzb3IuIE5vdGUgdGhhdCBpZiAnaGllcmFyY2h5SGFuZGxpbmcnIGlzIHNldCB0byAnSU5DTFVERV9DSElMRFJFTicsIHRoZSAnZ3JlZWR5U3dpdGNoSGllcmFyY2hpY2FsLnR5cGUnIG9wdGlvbiBtdXN0IGJlIHVzZWQuXCIpLGN1YyksVjVjKSxRVykscHFiKEw1YykpKSk7bzRjKGEseG9lLHFvZSxkdWMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHlvZSksJ2Nyb3NzaW5nTWluaW1pemF0aW9uLmdyZWVkeVN3aXRjaEhpZXJhcmNoaWNhbCcpLCdHcmVlZHkgU3dpdGNoIENyb3NzaW5nIE1pbmltaXphdGlvbiAoaGllcmFyY2hpY2FsKScpLFwiQWN0aXZhdGVzIHRoZSBncmVlZHkgc3dpdGNoIGhldXJpc3RpYyBpbiBjYXNlIGhpZXJhcmNoaWNhbCBsYXlvdXQgaXMgdXNlZC4gVGhlIGRpZmZlcmVuY2VzIHRvIHRoZSBub24taGllcmFyY2hpY2FsIGNhc2UgKHNlZSAnZ3JlZWR5U3dpdGNoLnR5cGUnKSBhcmU6IDEpIGdyZWVkeSBzd2l0Y2ggaXMgaW5hY3RpdmUgYnkgZGVmYXVsdCwgMykgb25seSB0aGUgb3B0aW9uIHZhbHVlIHNldCBvbiB0aGUgbm9kZSBhdCB3aGljaCBoaWVyYXJjaGljYWwgbGF5b3V0IHN0YXJ0cyBpcyByZWxldmFudCwgYW5kIDIpIGlmIGl0J3MgYWN0aXZhdGVkIGJ5IHRoZSB1c2VyLCBpdCBwcm9wZXJseSBhZGRyZXNzZXMgaGllcmFyY2h5LWNyb3NzaW5nIGVkZ2VzLlwiKSwkdGMpLFY1YyksUVcpLHBxYihMNWMpKSkpO280YyhhLHlvZSxxb2UsX3RjKTtvNGMoYSx5b2UsdHBlLGF1Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsem9lKSx2cGUpLCdOb2RlIFBsYWNlbWVudCBTdHJhdGVneScpLCdTdHJhdGVneSBmb3Igbm9kZSBwbGFjZW1lbnQuJyksdnZjKSxWNWMpLF9XKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLEFvZSksdnBlKSwnRmF2b3IgU3RyYWlnaHQgRWRnZXMgT3ZlciBCYWxhbmNpbmcnKSxcIkZhdm9yIHN0cmFpZ2h0IGVkZ2VzIG92ZXIgYSBiYWxhbmNlZCBub2RlIHBsYWNlbWVudC4gVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSB1c2VkICdlZGdlUm91dGluZycuIEZvciBhbiBvcnRob2dvbmFsIHN0eWxlIGl0IGlzIHNldCB0byB0cnVlLCBmb3IgYWxsIG90aGVyIHN0eWxlcyB0byBmYWxzZS5cIiksVDVjKSx3SSkscHFiKEw1YykpKSk7bzRjKGEsQW9lLHpvZSxsdmMpO280YyhhLEFvZSx6b2UsbXZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxCb2UpLHdwZSksJ0JLIEVkZ2UgU3RyYWlnaHRlbmluZycpLFwiU3BlY2lmaWVzIHdoZXRoZXIgdGhlIEJyYW5kZXMgS29lcGYgbm9kZSBwbGFjZXIgdHJpZXMgdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBzdHJhaWdodCBlZGdlcyBhdCB0aGUgZXhwZW5zZSBvZiBkaWFncmFtIHNpemUuIFRoZXJlIGlzIGEgc3VidGxlIGRpZmZlcmVuY2UgdG8gdGhlICdmYXZvclN0cmFpZ2h0RWRnZXMnIG9wdGlvbiwgd2hpY2ggZGVjaWRlcyB3aGV0aGVyIGEgYmFsYW5jZWQgcGxhY2VtZW50IG9mIHRoZSBub2RlcyBpcyBkZXNpcmVkLCBvciBub3QuIEluIGJrIHRlcm1zIHRoaXMgbWVhbnMgY29tYmluaW5nIHRoZSBmb3VyIGFsaWdubWVudHMgaW50byBhIHNpbmdsZSBiYWxhbmNlZCBvbmUsIG9yIG5vdC4gVGhpcyBvcHRpb24gb24gdGhlIG90aGVyIGhhbmQgdHJpZXMgdG8gc3RyYWlnaHRlbiBhZGRpdGlvbmFsIGVkZ2VzIGR1cmluZyB0aGUgY3JlYXRpb24gb2YgZWFjaCBvZiB0aGUgZm91ciBhbGlnbm1lbnRzLlwiKSxmdmMpLFY1YyksTVcpLHBxYihMNWMpKSkpO280YyhhLEJvZSx6b2UsZ3ZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxDb2UpLHdwZSksJ0JLIEZpeGVkIEFsaWdubWVudCcpLCdUZWxscyB0aGUgQksgbm9kZSBwbGFjZXIgdG8gdXNlIGEgY2VydGFpbiBhbGlnbm1lbnQgKG91dCBvZiBpdHMgZm91cikgaW5zdGVhZCBvZiB0aGUgb25lIHByb2R1Y2luZyB0aGUgc21hbGxlc3QgaGVpZ2h0LCBvciB0aGUgY29tYmluYXRpb24gb2YgYWxsIGZvdXIuJyksaXZjKSxWNWMpLE5XKSxwcWIoTDVjKSkpKTtvNGMoYSxDb2Usem9lLGp2Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRG9lKSwnbm9kZVBsYWNlbWVudC5saW5lYXJTZWdtZW50cycpLCdMaW5lYXIgU2VnbWVudHMgRGVmbGVjdGlvbiBEYW1wZW5pbmcnKSwnRGFtcGVucyB0aGUgbW92ZW1lbnQgb2Ygbm9kZXMgdG8ga2VlcCB0aGUgZGlhZ3JhbSBmcm9tIGdldHRpbmcgdG9vIGxhcmdlLicpLDAuMyksVTVjKSxCSSkscHFiKEw1YykpKSk7bzRjKGEsRG9lLHpvZSxvdmMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRW9lKSwnbm9kZVBsYWNlbWVudC5uZXR3b3JrU2ltcGxleCcpLCdOb2RlIEZsZXhpYmlsaXR5JyksXCJBaW1zIGF0IHNob3J0ZXIgYW5kIHN0cmFpZ2h0ZXIgZWRnZXMuIFR3byBjb25maWd1cmF0aW9ucyBhcmUgcG9zc2libGU6IChhKSBhbGxvdyBwb3J0cyB0byBtb3ZlIGZyZWVseSBvbiB0aGUgc2lkZSB0aGV5IGFyZSBhc3NpZ25lZCB0byAodGhlIG9yZGVyIGlzIGFsd2F5cyBkZWZpbmVkIGJlZm9yZWhhbmQpLCAoYikgYWRkaXRpb25hbGx5IGFsbG93IHRvIGVubGFyZ2UgYSBub2RlIHdoZXJldmVyIGl0IGhlbHBzLiBJZiB0aGlzIG9wdGlvbiBpcyBub3QgY29uZmlndXJlZCBmb3IgYSBub2RlLCB0aGUgJ25vZGVGbGV4aWJpbGl0eS5kZWZhdWx0JyB2YWx1ZSBpcyB1c2VkLCB3aGljaCBpcyBzcGVjaWZpZWQgZm9yIHRoZSBub2RlJ3MgcGFyZW50LlwiKSxWNWMpLCRXKSxwcWIoSzVjKSkpKTtvNGMoYSxFb2Usem9lLHR2Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRm9lKSwnbm9kZVBsYWNlbWVudC5uZXR3b3JrU2ltcGxleC5ub2RlRmxleGliaWxpdHknKSwnTm9kZSBGbGV4aWJpbGl0eSBEZWZhdWx0JyksXCJEZWZhdWx0IHZhbHVlIG9mIHRoZSAnbm9kZUZsZXhpYmlsaXR5JyBvcHRpb24gZm9yIHRoZSBjaGlsZHJlbiBvZiBhIGhpZXJhcmNoaWNhbCBub2RlLlwiKSxydmMpLFY1YyksJFcpLHBxYihMNWMpKSkpO280YyhhLEZvZSx6b2Usc3ZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxHb2UpLHhwZSksJ1NlbGYtTG9vcCBEaXN0cmlidXRpb24nKSwnQWx0ZXIgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgbG9vcHMgYXJvdW5kIHRoZSBub2RlLiBJdCBvbmx5IHRha2VzIGVmZmVjdCBmb3IgUG9ydENvbnN0cmFpbnRzLkZSRUUuJykseHVjKSxWNWMpLGVYKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxIb2UpLHhwZSksJ1NlbGYtTG9vcCBPcmRlcmluZycpLCdBbHRlciB0aGUgb3JkZXJpbmcgb2YgdGhlIGxvb3BzIHRoZXkgY2FuIGVpdGhlciBiZSBzdGFja2VkIG9yIHNlcXVlbmNlZC4gSXQgb25seSB0YWtlcyBlZmZlY3QgZm9yIFBvcnRDb25zdHJhaW50cy5GUkVFLicpLHp1YyksVjVjKSxmWCkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsSW9lKSwnZWRnZVJvdXRpbmcuc3BsaW5lcycpLCdTcGxpbmUgUm91dGluZyBNb2RlJyksJ1NwZWNpZmllcyB0aGUgd2F5IGNvbnRyb2wgcG9pbnRzIGFyZSBhc3NlbWJsZWQgZm9yIGVhY2ggaW5kaXZpZHVhbCBlZGdlLiBDT05TRVJWQVRJVkUgZW5zdXJlcyB0aGF0IGVkZ2VzIGFyZSBwcm9wZXJseSByb3V0ZWQgYXJvdW5kIHRoZSBub2RlcyBidXQgZmVlbHMgcmF0aGVyIG9ydGhvZ29uYWwgYXQgdGltZXMuIFNMT1BQWSB1c2VzIGZld2VyIGNvbnRyb2wgcG9pbnRzIHRvIG9idGFpbiBjdXJ2aWVyIGVkZ2Ugcm91dGVzIGJ1dCBtYXkgcmVzdWx0IGluIGVkZ2VzIG92ZXJsYXBwaW5nIG5vZGVzLicpLEJ1YyksVjVjKSxoWCkscHFiKEw1YykpKSk7bzRjKGEsSW9lLHlwZSxDdWMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLEpvZSksJ2VkZ2VSb3V0aW5nLnNwbGluZXMuc2xvcHB5JyksJ1Nsb3BweSBTcGxpbmUgTGF5ZXIgU3BhY2luZyBGYWN0b3InKSwnU3BhY2luZyBmYWN0b3IgZm9yIHJvdXRpbmcgYXJlYSBiZXR3ZWVuIGxheWVycyB3aGVuIHVzaW5nIHNsb3BweSBzcGxpbmUgcm91dGluZy4nKSwwLjIpLFU1YyksQkkpLHBxYihMNWMpKSkpO280YyhhLEpvZSx5cGUsRXVjKTtvNGMoYSxKb2UsSW9lLEZ1Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsS29lKSwnZWRnZVJvdXRpbmcucG9seWxpbmUnKSwnU2xvcGVkIEVkZ2UgWm9uZSBXaWR0aCcpLCdXaWR0aCBvZiB0aGUgc3RyaXAgdG8gdGhlIGxlZnQgYW5kIHRvIHRoZSByaWdodCBvZiBlYWNoIGxheWVyIHdoZXJlIHRoZSBwb2x5bGluZSBlZGdlIHJvdXRlciBpcyBhbGxvd2VkIHRvIHJlZnJhaW4gZnJvbSBlbnN1cmluZyB0aGF0IGVkZ2VzIGFyZSByb3V0ZWQgaG9yaXpvbnRhbGx5LiBUaGlzIHByZXZlbnRzIGF3a3dhcmQgYmVuZCBwb2ludHMgZm9yIG5vZGVzIHRoYXQgZXh0ZW50IGFsbW9zdCB0byB0aGUgZWRnZSBvZiB0aGVpciBsYXllci4nKSwyKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTtvNGMoYSxLb2UseXBlLHZ1Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxMb2UpLHpwZSksJ1NwYWNpbmcgQmFzZSBWYWx1ZScpLFwiQW4gb3B0aW9uYWwgYmFzZSB2YWx1ZSBmb3IgYWxsIG90aGVyIGxheW91dCBvcHRpb25zIG9mIHRoZSAnc3BhY2luZycgZ3JvdXAuIEl0IGNhbiBiZSB1c2VkIHRvIGNvbnZlbmllbnRseSBhbHRlciB0aGUgb3ZlcmFsbCAnc3BhY2lvdXNuZXNzJyBvZiB0aGUgZHJhd2luZy4gV2hlbmV2ZXIgYW4gZXhwbGljaXQgdmFsdWUgaXMgc2V0IGZvciB0aGUgb3RoZXIgbGF5b3V0IG9wdGlvbnMsIHRoaXMgYmFzZSB2YWx1ZSB3aWxsIGhhdmUgbm8gZWZmZWN0LiBUaGUgYmFzZSB2YWx1ZSBpcyBub3QgaW5oZXJpdGVkLCBpLmUuIGl0IG11c3QgYmUgc2V0IGZvciBlYWNoIGhpZXJhcmNoaWNhbCBub2RlLlwiKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxNb2UpLHpwZSksJ0VkZ2UgTm9kZSBCZXR3ZWVuIExheWVycyBTcGFjaW5nJyksXCJUaGUgc3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBub2RlcyBhbmQgZWRnZXMgdGhhdCBhcmUgcm91dGVkIG5leHQgdG8gdGhlIG5vZGUncyBsYXllci4gRm9yIHRoZSBzcGFjaW5nIGJldHdlZW4gbm9kZXMgYW5kIGVkZ2VzIHRoYXQgY3Jvc3MgdGhlIG5vZGUncyBsYXllciAnc3BhY2luZy5lZGdlTm9kZScgaXMgdXNlZC5cIiksMTApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLE5vZSksenBlKSwnRWRnZSBFZGdlIEJldHdlZW4gTGF5ZXIgU3BhY2luZycpLFwiU3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBwYWlycyBvZiBlZGdlcyB0aGF0IGFyZSByb3V0ZWQgYmV0d2VlbiB0aGUgc2FtZSBwYWlyIG9mIGxheWVycy4gTm90ZSB0aGF0ICdzcGFjaW5nLmVkZ2VFZGdlJyBpcyB1c2VkIGZvciB0aGUgc3BhY2luZyBiZXR3ZWVuIHBhaXJzIG9mIGVkZ2VzIGNyb3NzaW5nIHRoZSBzYW1lIGxheWVyLlwiKSwxMCksVTVjKSxCSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsT29lKSx6cGUpLCdOb2RlIE5vZGUgQmV0d2VlbiBMYXllcnMgU3BhY2luZycpLFwiVGhlIHNwYWNpbmcgdG8gYmUgcHJlc2VydmVkIGJldHdlZW4gYW55IHBhaXIgb2Ygbm9kZXMgb2YgdHdvIGFkamFjZW50IGxheWVycy4gTm90ZSB0aGF0ICdzcGFjaW5nLm5vZGVOb2RlJyBpcyB1c2VkIGZvciB0aGUgc3BhY2luZyBiZXR3ZWVuIG5vZGVzIHdpdGhpbiB0aGUgbGF5ZXIgaXRzZWxmLlwiKSwyMCksVTVjKSxCSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsUG9lKSxBcGUpLCdEaXJlY3Rpb24gUHJpb3JpdHknKSwnRGVmaW5lcyBob3cgaW1wb3J0YW50IGl0IGlzIHRvIGhhdmUgYSBjZXJ0YWluIGVkZ2UgcG9pbnQgaW50byB0aGUgZGlyZWN0aW9uIG9mIHRoZSBvdmVyYWxsIGxheW91dC4gVGhpcyBvcHRpb24gaXMgZXZhbHVhdGVkIGR1cmluZyB0aGUgY3ljbGUgYnJlYWtpbmcgcGhhc2UuJyksbWViKDApKSxYNWMpLEpJKSxwcWIoSTVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxRb2UpLEFwZSksJ1Nob3J0bmVzcyBQcmlvcml0eScpLCdEZWZpbmVzIGhvdyBpbXBvcnRhbnQgaXQgaXMgdG8ga2VlcCBhbiBlZGdlIGFzIHNob3J0IGFzIHBvc3NpYmxlLiBUaGlzIG9wdGlvbiBpcyBldmFsdWF0ZWQgZHVyaW5nIHRoZSBsYXllcmluZyBwaGFzZS4nKSxtZWIoMCkpLFg1YyksSkkpLHBxYihJNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFJvZSksQXBlKSwnU3RyYWlnaHRuZXNzIFByaW9yaXR5JyksJ0RlZmluZXMgaG93IGltcG9ydGFudCBpdCBpcyB0byBrZWVwIGFuIGVkZ2Ugc3RyYWlnaHQsIGkuZS4gYWxpZ25lZCB3aXRoIG9uZSBvZiB0aGUgdHdvIGF4ZXMuIFRoaXMgb3B0aW9uIGlzIGV2YWx1YXRlZCBkdXJpbmcgbm9kZSBwbGFjZW1lbnQuJyksbWViKDApKSxYNWMpLEpJKSxwcWIoSTVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxTb2UpLEJwZSksT2xlKSwnVHJpZXMgdG8gZnVydGhlciBjb21wYWN0IGNvbXBvbmVudHMgKGRpc2Nvbm5lY3RlZCBzdWItZ3JhcGhzKS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7bzRjKGEsU29lLHptZSx0cnVlKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxUb2UpLENwZSksJ1Bvc3QgQ29tcGFjdGlvbiBTdHJhdGVneScpLERwZSksTnRjKSxWNWMpLE9XKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxVb2UpLENwZSksJ1Bvc3QgQ29tcGFjdGlvbiBDb25zdHJhaW50IENhbGN1bGF0aW9uJyksRHBlKSxMdGMpLFY1YyksRlcpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFZvZSksRXBlKSwnSGlnaCBEZWdyZWUgTm9kZSBUcmVhdG1lbnQnKSwnTWFrZXMgcm9vbSBhcm91bmQgaGlnaCBkZWdyZWUgbm9kZXMgdG8gcGxhY2UgbGVhZnMgYW5kIHRyZWVzLicpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxXb2UpLEVwZSksJ0hpZ2ggRGVncmVlIE5vZGUgVGhyZXNob2xkJyksJ1doZXRoZXIgYSBub2RlIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGhpZ2ggZGVncmVlLicpLG1lYigxNikpLFg1YyksSkkpLHBxYihMNWMpKSkpO280YyhhLFdvZSxWb2UsdHJ1ZSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsWG9lKSxFcGUpLCdIaWdoIERlZ3JlZSBOb2RlIE1heGltdW0gVHJlZSBIZWlnaHQnKSwnTWF4aW11bSBoZWlnaHQgb2YgYSBzdWJ0cmVlIGNvbm5lY3RlZCB0byBhIGhpZ2ggZGVncmVlIG5vZGUgdG8gYmUgbW92ZWQgdG8gc2VwYXJhdGUgbGF5ZXJzLicpLG1lYig1KSksWDVjKSxKSSkscHFiKEw1YykpKSk7bzRjKGEsWG9lLFZvZSx0cnVlKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxZb2UpLEZwZSksJ0dyYXBoIFdyYXBwaW5nIFN0cmF0ZWd5JyksXCJGb3IgY2VydGFpbiBncmFwaHMgYW5kIGNlcnRhaW4gcHJlc2NyaWJlZCBkcmF3aW5nIGFyZWFzIGl0IG1heSBiZSBkZXNpcmFibGUgdG8gc3BsaXQgdGhlIGxhaWQgb3V0IGdyYXBoIGludG8gY2h1bmtzIHRoYXQgYXJlIHBsYWNlZCBzaWRlIGJ5IHNpZGUuIFRoZSBlZGdlcyB0aGF0IGNvbm5lY3QgZGlmZmVyZW50IGNodW5rcyBhcmUgJ3dyYXBwZWQnIGFyb3VuZCBmcm9tIHRoZSBlbmQgb2Ygb25lIGNodW5rIHRvIHRoZSBzdGFydCBvZiB0aGUgb3RoZXIgY2h1bmsuIFRoZSBwb2ludHMgYmV0d2VlbiB0aGUgY2h1bmtzIGFyZSByZWZlcnJlZCB0byBhcyAnY3V0cycuXCIpLGJ3YyksVjVjKSxqWCkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsWm9lKSxGcGUpLCdBZGRpdGlvbmFsIFdyYXBwZWQgRWRnZXMgU3BhY2luZycpLCdUbyB2aXN1YWxseSBzZXBhcmF0ZSBlZGdlcyB0aGF0IGFyZSB3cmFwcGVkIGZyb20gcmVndWxhcmx5IHJvdXRlZCBlZGdlcyBhbiBhZGRpdGlvbmFsIHNwYWNpbmcgdmFsdWUgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtIG9mIHRoaXMgbGF5b3V0IG9wdGlvbi4gVGhlIHNwYWNpbmcgaXMgYWRkZWQgdG8gdGhlIHJlZ3VsYXIgZWRnZU5vZGUgc3BhY2luZy4nKSwxMCksVTVjKSxCSSkscHFiKEw1YykpKSk7bzRjKGEsWm9lLFlvZSxJdmMpO280YyhhLFpvZSxZb2UsSnZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yywkb2UpLEZwZSksJ0NvcnJlY3Rpb24gRmFjdG9yIGZvciBXcmFwcGluZycpLFwiQXQgdGltZXMgYW5kIGZvciBjZXJ0YWluIHR5cGVzIG9mIGdyYXBocyB0aGUgZXhlY3V0ZWQgd3JhcHBpbmcgbWF5IHByb2R1Y2UgcmVzdWx0cyB0aGF0IGFyZSBjb25zaXN0ZW50bHkgYmlhc2VkIGluIHRoZSBzYW1lIGZhc2hpb246IGVpdGhlciB3cmFwcGluZyB0byBvZnRlbiBvciB0byByYXJlbHkuIFRoaXMgZmFjdG9yIGNhbiBiZSB1c2VkIHRvIGNvcnJlY3QgdGhlIGJpYXMuIEludGVybmFsbHksIGl0IGlzIHNpbXBseSBtdWx0aXBsaWVkIHdpdGggdGhlICdhc3BlY3QgcmF0aW8nIGxheW91dCBvcHRpb24uXCIpLDEpLFU1YyksQkkpLHBxYihMNWMpKSkpO280YyhhLCRvZSxZb2UsTHZjKTtvNGMoYSwkb2UsWW9lLE12Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsX29lKSxHcGUpLCdDdXR0aW5nIFN0cmF0ZWd5JyksJ1RoZSBzdHJhdGVneSBieSB3aGljaCB0aGUgbGF5ZXIgaW5kZXhlcyBhcmUgZGV0ZXJtaW5lZCBhdCB3aGljaCB0aGUgbGF5ZXJpbmcgY3J1bWJsZXMgaW50byBjaHVua3MuJyksVHZjKSxWNWMpLEhXKSxwcWIoTDVjKSkpKTtvNGMoYSxfb2UsWW9lLFV2Yyk7bzRjKGEsX29lLFlvZSxWdmMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYXBlKSxHcGUpLCdNYW51YWxseSBTcGVjaWZpZWQgQ3V0cycpLCdBbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBoZXIgb3duIGN1dHMgZm9yIGEgY2VydGFpbiBncmFwaC4nKSxZNWMpLHlLKSxwcWIoTDVjKSkpKTtvNGMoYSxhcGUsX29lLE92Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYnBlKSwnd3JhcHBpbmcuY3V0dGluZy5tc2QnKSwnTVNEIEZyZWVkb20nKSwnVGhlIE1TRCBjdXR0aW5nIHN0cmF0ZWd5IHN0YXJ0cyB3aXRoIGFuIGluaXRpYWwgZ3Vlc3Mgb24gdGhlIG51bWJlciBvZiBjaHVua3MgdGhlIGdyYXBoIHNob3VsZCBiZSBzcGxpdCBpbnRvLiBUaGUgZnJlZWRvbSBzcGVjaWZpZXMgaG93IG11Y2ggdGhlIHN0cmF0ZWd5IG1heSBkZXZpYXRlIGZyb20gdGhpcyBndWVzcy4gRS5nLiBpZiBhbiBpbml0aWFsIG51bWJlciBvZiAzIGlzIGNvbXB1dGVkLCBhIGZyZWVkb20gb2YgMSBhbGxvd3MgMiwgMywgYW5kIDQgY3V0cy4nKSxRdmMpLFg1YyksSkkpLHBxYihMNWMpKSkpO280YyhhLGJwZSxfb2UsUnZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxjcGUpLEhwZSksJ1ZhbGlkaWZpY2F0aW9uIFN0cmF0ZWd5JyksJ1doZW4gd3JhcHBpbmcgZ3JhcGhzLCBvbmUgY2FuIHNwZWNpZnkgaW5kaWNlcyB0aGF0IGFyZSBub3QgYWxsb3dlZCBhcyBzcGxpdCBwb2ludHMuIFRoZSB2YWxpZGlmaWNhdGlvbiBzdHJhdGVneSBtYWtlcyBzdXJlIGV2ZXJ5IGNvbXB1dGVkIHNwbGl0IHBvaW50IGlzIGFsbG93ZWQuJyksZ3djKSxWNWMpLGlYKSxwcWIoTDVjKSkpKTtvNGMoYSxjcGUsWW9lLGh3Yyk7bzRjKGEsY3BlLFlvZSxpd2MpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZHBlKSxIcGUpLCdWYWxpZCBJbmRpY2VzIGZvciBXcmFwcGluZycpLG51bGwpLFk1YykseUspLHBxYihMNWMpKSkpO280YyhhLGRwZSxZb2UsZHdjKTtvNGMoYSxkcGUsWW9lLGV3Yyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZXBlKSxJcGUpLCdJbXByb3ZlIEN1dHMnKSwnRm9yIGdlbmVyYWwgZ3JhcGhzIGl0IGlzIGltcG9ydGFudCB0aGF0IG5vdCB0b28gbWFueSBlZGdlcyB3cmFwIGJhY2t3YXJkcy4gVGh1cyBhIGNvbXByb21pc2UgYmV0d2VlbiBldmVubHktZGlzdHJpYnV0ZWQgY3V0cyBhbmQgdGhlIHRvdGFsIG51bWJlciBvZiBjdXQgZWRnZXMgaXMgc291Z2h0LicpLHRydWUpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO280YyhhLGVwZSxZb2UsWnZjKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxmcGUpLElwZSksJ0Rpc3RhbmNlIFBlbmFsdHkgV2hlbiBJbXByb3ZpbmcgQ3V0cycpLG51bGwpLDIpLFU1YyksQkkpLHBxYihMNWMpKSkpO280YyhhLGZwZSxZb2UsWHZjKTtvNGMoYSxmcGUsZXBlLHRydWUpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGdwZSksSXBlKSwnSW1wcm92ZSBXcmFwcGVkIEVkZ2VzJyksJ1RoZSBpbml0aWFsIHdyYXBwaW5nIGlzIHBlcmZvcm1lZCBpbiBhIHZlcnkgc2ltcGxlIHdheS4gQXMgYSBjb25zZXF1ZW5jZSwgZWRnZXMgdGhhdCB3cmFwIGZyb20gb25lIGNodW5rIHRvIGFub3RoZXIgbWF5IGJlIHVubmVjZXNzYXJpbHkgbG9uZy4gQWN0aXZhdGluZyB0aGlzIG9wdGlvbiB0cmllcyB0byBzaG9ydGVuIHN1Y2ggZWRnZXMuJyksdHJ1ZSksVDVjKSx3SSkscHFiKEw1YykpKSk7bzRjKGEsZ3BlLFlvZSxfdmMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGhwZSksSnBlKSwnRWRnZSBMYWJlbCBTaWRlIFNlbGVjdGlvbicpLCdNZXRob2QgdG8gZGVjaWRlIG9uIGVkZ2UgbGFiZWwgc2lkZXMuJyksdHVjKSxWNWMpLExXKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxpcGUpLEpwZSksJ0VkZ2UgQ2VudGVyIExhYmVsIFBsYWNlbWVudCBTdHJhdGVneScpLCdEZXRlcm1pbmVzIGluIHdoaWNoIGxheWVyIGNlbnRlciBsYWJlbHMgb2YgbG9uZyBlZGdlcyBzaG91bGQgYmUgcGxhY2VkLicpLHJ1YyksVjVjKSxFVykscXFiKEw1YyxPQyhHQyhlMSwxKSxLaWUsMTc1LDAsW0o1Y10pKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxqcGUpLEtwZSksJ0NvbnNpZGVyIE1vZGVsIE9yZGVyJyksJ1ByZXNlcnZlcyB0aGUgb3JkZXIgb2Ygbm9kZXMgYW5kIGVkZ2VzIGluIHRoZSBtb2RlbCBmaWxlIGlmIHRoaXMgZG9lcyBub3QgbGVhZCB0byBhZGRpdGlvbmFsIGVkZ2UgY3Jvc3NpbmdzLiBEZXBlbmRpbmcgb24gdGhlIHN0cmF0ZWd5IHRoaXMgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSBzaW5jZSB0aGUgbm9kZSBhbmQgZWRnZSBvcmRlciBtaWdodCBiZSBjb25mbGljdGluZy4nKSxXdGMpLFY1YyksYlgpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGtwZSksS3BlKSwnTm8gTW9kZWwgT3JkZXInKSwnU2V0IG9uIGEgbm9kZSB0byBub3Qgc2V0IGEgbW9kZWwgb3JkZXIgZm9yIHRoaXMgbm9kZSBldmVuIHRob3VnaCBpdCBpcyBhIHJlYWwgbm9kZS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsbHBlKSxLcGUpLCdDb25zaWRlciBNb2RlbCBPcmRlciBmb3IgQ29tcG9uZW50cycpLCdJZiBzZXQgdG8gTk9ORSB0aGUgdXN1YWwgb3JkZXJpbmcgc3RyYXRlZ3kgKGJ5IGN1bXVsYXRpdmUgbm9kZSBwcmlvcml0eSBhbmQgc2l6ZSBvZiBub2RlcykgaXMgdXNlZC4gSU5TSURFX1BPUlRfU0lERVMgb3JkZXJzIHRoZSBjb21wb25lbnRzIHdpdGggZXh0ZXJuYWwgcG9ydHMgb25seSBpbnNpZGUgdGhlIGdyb3VwcyB3aXRoIHRoZSBzYW1lIHBvcnQgc2lkZS4gRk9SQ0VfTU9ERUxfT1JERVIgZW5mb3JjZXMgdGhlIG1vZGUgb3JkZXIgb24gY29tcG9uZW50cy4gVGhpcyBvcHRpb24gbWlnaHQgcHJvZHVjZSBiYWQgYWxpZ25tZW50cyBhbmQgc3ViIG9wdGltYWwgZHJhd2luZ3MgaW4gdGVybXMgb2YgdXNlZCBhcmVhIHNpbmNlIHRoZSBvcmRlcmluZyBzaG91bGQgYmUgcmVzcGVjdGVkLicpLFB0YyksVjVjKSxoUSkscHFiKEw1YykpKSk7bzRjKGEsbHBlLHptZSxudWxsKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxtcGUpLEtwZSksJ0xvbmcgRWRnZSBPcmRlcmluZyBTdHJhdGVneScpLCdJbmRpY2F0ZXMgd2hldGhlciBsb25nIGVkZ2VzIGFyZSBzb3J0ZWQgdW5kZXIsIG92ZXIsIG9yIGVxdWFsIHRvIG5vZGVzIHRoYXQgaGF2ZSBubyBjb25uZWN0aW9uIHRvIGEgcHJldmlvdXMgbGF5ZXIgaW4gYSBsZWZ0LXRvLXJpZ2h0IG9yIHJpZ2h0LXRvLWxlZnQgbGF5b3V0LiBVbmRlciBhbmQgb3ZlciBjaGFuZ2VzIHRvIHJpZ2h0IGFuZCBsZWZ0IGluIGEgdmVydGljYWwgbGF5b3V0LicpLFR0YyksVjVjKSxaVykscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsbnBlKSxLcGUpLCdDcm9zc2luZyBDb3VudGVyIE5vZGUgT3JkZXIgSW5mbHVlbmNlJyksJ0luZGljYXRlcyB3aXRoIHdoYXQgcGVyY2VudGFnZSAoMSBmb3IgMTAwJSkgdmlvbGF0aW9ucyBvZiB0aGUgbm9kZSBtb2RlbCBvcmRlciBhcmUgd2VpZ2h0ZWQgYWdhaW5zdCB0aGUgY3Jvc3NpbmdzIGUuZy4gYSB2YWx1ZSBvZiAwLjUgbWVhbnMgdHdvIG1vZGVsIG9yZGVyIHZpb2xhdGlvbnMgYXJlIGFzIGltcG9ydGFudCBhcyBvbiBlZGdlIGNyb3NzaW5nLiBUaGlzIGFsbG93cyBzb21lIGVkZ2UgY3Jvc3NpbmdzIGluIGZhdm9yIG9mIHByZXNlcnZpbmcgdGhlIG1vZGVsIG9yZGVyLiBJdCBpcyBhZHZpc2VkIHRvIHNldCB0aGlzIHZhbHVlIHRvIGEgdmVyeSBzbWFsbCBwb3NpdGl2ZSB2YWx1ZSAoZS5nLiAwLjAwMSkgdG8gaGF2ZSBtaW5pbWFsIGNyb3NzaW5nIGFuZCBhIG9wdGltYWwgbm9kZSBvcmRlci4gRGVmYXVsdHMgdG8gbm8gaW5mbHVlbmNlICgwKS4nKSwwKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTtvNGMoYSxucGUsanBlLG51bGwpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG9wZSksS3BlKSwnQ3Jvc3NpbmcgQ291bnRlciBQb3J0IE9yZGVyIEluZmx1ZW5jZScpLCdJbmRpY2F0ZXMgd2l0aCB3aGF0IHBlcmNlbnRhZ2UgKDEgZm9yIDEwMCUpIHZpb2xhdGlvbnMgb2YgdGhlIHBvcnQgbW9kZWwgb3JkZXIgYXJlIHdlaWdodGVkIGFnYWluc3QgdGhlIGNyb3NzaW5ncyBlLmcuIGEgdmFsdWUgb2YgMC41IG1lYW5zIHR3byBtb2RlbCBvcmRlciB2aW9sYXRpb25zIGFyZSBhcyBpbXBvcnRhbnQgYXMgb24gZWRnZSBjcm9zc2luZy4gVGhpcyBhbGxvd3Mgc29tZSBlZGdlIGNyb3NzaW5ncyBpbiBmYXZvciBvZiBwcmVzZXJ2aW5nIHRoZSBtb2RlbCBvcmRlci4gSXQgaXMgYWR2aXNlZCB0byBzZXQgdGhpcyB2YWx1ZSB0byBhIHZlcnkgc21hbGwgcG9zaXRpdmUgdmFsdWUgKGUuZy4gMC4wMDEpIHRvIGhhdmUgbWluaW1hbCBjcm9zc2luZyBhbmQgYSBvcHRpbWFsIHBvcnQgb3JkZXIuIERlZmF1bHRzIHRvIG5vIGluZmx1ZW5jZSAoMCkuJyksMCksVTVjKSxCSSkscHFiKEw1YykpKSk7bzRjKGEsb3BlLGpwZSxudWxsKTtPeWMoKG5ldyBQeWMsYSkpfTt2YXIgSXRjLEp0YyxLdGMsTHRjLE10YyxOdGMsT3RjLFB0YyxRdGMsUnRjLFN0YyxUdGMsVXRjLFZ0YyxXdGMsWHRjLFl0YyxadGMsJHRjLF90YyxhdWMsYnVjLGN1YyxkdWMsZXVjLGZ1YyxndWMsaHVjLGl1YyxqdWMsa3VjLGx1YyxtdWMsbnVjLG91YyxwdWMscXVjLHJ1YyxzdWMsdHVjLHV1Yyx2dWMsd3VjLHh1Yyx5dWMsenVjLEF1YyxCdWMsQ3VjLER1YyxFdWMsRnVjLEd1YyxIdWMsSXVjLEp1YyxLdWMsTHVjLE11YyxOdWMsT3VjLFB1YyxRdWMsUnVjLFN1YyxUdWMsVXVjLFZ1YyxXdWMsWHVjLFl1YyxadWMsJHVjLF91YyxhdmMsYnZjLGN2YyxkdmMsZXZjLGZ2YyxndmMsaHZjLGl2YyxqdmMsa3ZjLGx2YyxtdmMsbnZjLG92YyxwdmMscXZjLHJ2YyxzdmMsdHZjLHV2Yyx2dmMsd3ZjLHh2Yyx5dmMsenZjLEF2YyxCdmMsQ3ZjLER2YyxFdmMsRnZjLEd2YyxIdmMsSXZjLEp2YyxLdmMsTHZjLE12YyxOdmMsT3ZjLFB2YyxRdmMsUnZjLFN2YyxUdmMsVXZjLFZ2YyxXdmMsWHZjLFl2YyxadmMsJHZjLF92Yyxhd2MsYndjLGN3Yyxkd2MsZXdjLGZ3Yyxnd2MsaHdjLGl3Yzt2YXIgVVc9bWRiKFNuZSwnTGF5ZXJlZE1ldGFEYXRhUHJvdmlkZXInLDg0OCk7YmNiKDk4NiwxLGFsZSxQeWMpO18uUWU9ZnVuY3Rpb24gUXljKGEpe095YyhhKX07dmFyIG13Yyxud2Msb3djLHB3Yyxxd2MscndjLHN3Yyx0d2MsdXdjLHZ3Yyx3d2MseHdjLHl3Yyx6d2MsQXdjLEJ3YyxDd2MsRHdjLEV3YyxGd2MsR3djLEh3YyxJd2MsSndjLEt3YyxMd2MsTXdjLE53YyxPd2MsUHdjLFF3YyxSd2MsU3djLFR3YyxVd2MsVndjLFd3YyxYd2MsWXdjLFp3Yywkd2MsX3djLGF4YyxieGMsY3hjLGR4YyxleGMsZnhjLGd4YyxoeGMsaXhjLGp4YyxreGMsbHhjLG14YyxueGMsb3hjLHB4YyxxeGMscnhjLHN4Yyx0eGMsdXhjLHZ4Yyx3eGMseHhjLHl4Yyx6eGMsQXhjLEJ4YyxDeGMsRHhjLEV4YyxGeGMsR3hjLEh4YyxJeGMsSnhjLEt4YyxMeGMsTXhjLE54YyxPeGMsUHhjLFF4YyxSeGMsU3hjLFR4YyxVeGMsVnhjLFd4YyxYeGMsWXhjLFp4YywkeGMsX3hjLGF5YyxieWMsY3ljLGR5YyxleWMsZnljLGd5YyxoeWMsaXljLGp5YyxreWMsbHljLG15YyxueWMsb3ljLHB5YyxxeWMscnljLHN5Yyx0eWMsdXljLHZ5Yyx3eWMseHljLHl5Yyx6eWMsQXljLEJ5YyxDeWMsRHljLEV5YyxGeWMsR3ljLEh5YyxJeWMsSnljLEt5YyxMeWMsTXljO3ZhciBXVz1tZGIoU25lLCdMYXllcmVkT3B0aW9ucycsOTg2KTtiY2IoOTg3LDEse30sUnljKTtfLiRlPWZ1bmN0aW9uIFN5Yygpe3ZhciBhO3JldHVybiBhPW5ldyBqVWIsYX07Xy5fZT1mdW5jdGlvbiBUeWMoYSl7fTt2YXIgVlc9bWRiKFNuZSwnTGF5ZXJlZE9wdGlvbnMvTGF5ZXJlZEZhY3RvcnknLDk4Nyk7YmNiKDEzNzIsMSx7fSk7Xy5hPTA7dmFyIFV5Yzt2YXIgJDE9bWRiKHlxZSwnRWxrU3BhY2luZ3MvQWJzdHJhY3RTcGFjaW5nc0J1aWxkZXInLDEzNzIpO2JjYig3NzksMTM3Mix7fSxlemMpO3ZhciBiemMsY3pjO3ZhciBYVz1tZGIoU25lLCdMYXllcmVkU3BhY2luZ3MvTGF5ZXJlZFNwYWNpbmdzQnVpbGRlcicsNzc5KTtiY2IoMzEzLDIyLHszOjEsMzU6MSwyMjoxLDMxMzoxLDI0NjoxLDIzNDoxfSxuemMpO18uS2Y9ZnVuY3Rpb24gcHpjKCl7cmV0dXJuIG16Yyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBvemMoKXtyZXR1cm4gbXpjKHRoaXMpfTt2YXIgZnpjLGd6YyxoemMsaXpjLGp6YyxremM7dmFyIFlXPW5kYihTbmUsJ0xheWVyaW5nU3RyYXRlZ3knLDMxMyxDSSxyemMscXpjKTt2YXIgc3pjO2JjYigzNzgsMjIsezM6MSwzNToxLDIyOjEsMzc4OjF9LHp6Yyk7dmFyIHV6Yyx2emMsd3pjO3ZhciBaVz1uZGIoU25lLCdMb25nRWRnZU9yZGVyaW5nU3RyYXRlZ3knLDM3OCxDSSxCemMsQXpjKTt2YXIgQ3pjO2JjYigxOTcsMjIsezM6MSwzNToxLDIyOjEsMTk3OjF9LEt6Yyk7dmFyIEV6YyxGemMsR3pjLEh6Yzt2YXIgJFc9bmRiKFNuZSwnTm9kZUZsZXhpYmlsaXR5JywxOTcsQ0ksTnpjLE16Yyk7dmFyIE96YztiY2IoMzE1LDIyLHszOjEsMzU6MSwyMjoxLDMxNToxLDI0NjoxLDIzNDoxfSxYemMpO18uS2Y9ZnVuY3Rpb24gWnpjKCl7cmV0dXJuIFd6Yyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBZemMoKXtyZXR1cm4gV3pjKHRoaXMpfTt2YXIgUXpjLFJ6YyxTemMsVHpjLFV6Yzt2YXIgX1c9bmRiKFNuZSwnTm9kZVBsYWNlbWVudFN0cmF0ZWd5JywzMTUsQ0ksX3pjLCR6Yyk7dmFyIGFBYztiY2IoMjYwLDIyLHszOjEsMzU6MSwyMjoxLDI2MDoxfSxsQWMpO3ZhciBjQWMsZEFjLGVBYyxmQWMsZ0FjLGhBYyxpQWMsakFjO3ZhciBhWD1uZGIoU25lLCdOb2RlUHJvbW90aW9uU3RyYXRlZ3knLDI2MCxDSSxuQWMsbUFjKTt2YXIgb0FjO2JjYigzMzksMjIsezM6MSwzNToxLDIyOjEsMzM5OjF9LHVBYyk7dmFyIHFBYyxyQWMsc0FjO3ZhciBiWD1uZGIoU25lLCdPcmRlcmluZ1N0cmF0ZWd5JywzMzksQ0ksd0FjLHZBYyk7dmFyIHhBYztiY2IoNDIxLDIyLHszOjEsMzU6MSwyMjoxLDQyMToxfSxDQWMpO3ZhciB6QWMsQUFjO3ZhciBjWD1uZGIoU25lLCdQb3J0U29ydGluZ1N0cmF0ZWd5Jyw0MjEsQ0ksRUFjLERBYyk7dmFyIEZBYztiY2IoNDUyLDIyLHszOjEsMzU6MSwyMjoxLDQ1MjoxfSxMQWMpO3ZhciBIQWMsSUFjLEpBYzt2YXIgZFg9bmRiKFNuZSwnUG9ydFR5cGUnLDQ1MixDSSxOQWMsTUFjKTt2YXIgT0FjO2JjYigzNzUsMjIsezM6MSwzNToxLDIyOjEsMzc1OjF9LFVBYyk7dmFyIFFBYyxSQWMsU0FjO3ZhciBlWD1uZGIoU25lLCdTZWxmTG9vcERpc3RyaWJ1dGlvblN0cmF0ZWd5JywzNzUsQ0ksV0FjLFZBYyk7dmFyIFhBYztiY2IoMzc2LDIyLHszOjEsMzU6MSwyMjoxLDM3NjoxfSxhQmMpO3ZhciBaQWMsJEFjO3ZhciBmWD1uZGIoU25lLCdTZWxmTG9vcE9yZGVyaW5nU3RyYXRlZ3knLDM3NixDSSxjQmMsYkJjKTt2YXIgZEJjO2JjYigzMDQsMSx7MzA0OjF9LG9CYyk7dmFyIGdYPW1kYihTbmUsJ1NwYWNpbmdzJywzMDQpO2JjYigzMzYsMjIsezM6MSwzNToxLDIyOjEsMzM2OjF9LHVCYyk7dmFyIHFCYyxyQmMsc0JjO3ZhciBoWD1uZGIoU25lLCdTcGxpbmVSb3V0aW5nTW9kZScsMzM2LENJLHdCYyx2QmMpO3ZhciB4QmM7YmNiKDMzOCwyMix7MzoxLDM1OjEsMjI6MSwzMzg6MX0sREJjKTt2YXIgekJjLEFCYyxCQmM7dmFyIGlYPW5kYihTbmUsJ1ZhbGlkaWZ5U3RyYXRlZ3knLDMzOCxDSSxGQmMsRUJjKTt2YXIgR0JjO2JjYigzNzcsMjIsezM6MSwzNToxLDIyOjEsMzc3OjF9LE1CYyk7dmFyIElCYyxKQmMsS0JjO3ZhciBqWD1uZGIoU25lLCdXcmFwcGluZ1N0cmF0ZWd5JywzNzcsQ0ksT0JjLE5CYyk7dmFyIFBCYztiY2IoMTM4MywxLEJxZSxWQmMpO18uWWY9ZnVuY3Rpb24gV0JjKGEpe3JldHVybiBCRChhLDM3KSxSQmN9O18ucGY9ZnVuY3Rpb24gWEJjKGEsYil7VUJjKHRoaXMsQkQoYSwzNyksYil9O3ZhciBSQmM7dmFyIGtYPW1kYihDcWUsJ0RlcHRoRmlyc3RDeWNsZUJyZWFrZXInLDEzODMpO2JjYig3ODIsMSxCcWUsYUNjKTtfLllmPWZ1bmN0aW9uIGNDYyhhKXtyZXR1cm4gQkQoYSwzNyksWUJjfTtfLnBmPWZ1bmN0aW9uIGRDYyhhLGIpeyRCYyh0aGlzLEJEKGEsMzcpLGIpfTtfLlpmPWZ1bmN0aW9uIGJDYyhhKXtyZXR1cm4gQkQoSWtiKGEsQnViKHRoaXMuZCxhLmMubGVuZ3RoKSksMTApfTt2YXIgWUJjO3ZhciBsWD1tZGIoQ3FlLCdHcmVlZHlDeWNsZUJyZWFrZXInLDc4Mik7YmNiKDEzODYsNzgyLEJxZSxlQ2MpO18uWmY9ZnVuY3Rpb24gZkNjKGEpe3ZhciBiLGMsZCxlO2U9bnVsbDtiPU9oZTtmb3IoZD1uZXcgb2xiKGEpO2QuYTxkLmMuYy5sZW5ndGg7KXtjPUJEKG1sYihkKSwxMCk7aWYod05iKGMsKHd0YygpLFpzYykpJiZCRCh2TmIoYyxac2MpLDE5KS5hPGIpe2I9QkQodk5iKGMsWnNjKSwxOSkuYTtlPWN9fWlmKCFlKXtyZXR1cm4gQkQoSWtiKGEsQnViKHRoaXMuZCxhLmMubGVuZ3RoKSksMTApfXJldHVybiBlfTt2YXIgbVg9bWRiKENxZSwnR3JlZWR5TW9kZWxPcmRlckN5Y2xlQnJlYWtlcicsMTM4Nik7YmNiKDEzODQsMSxCcWUsa0NjKTtfLllmPWZ1bmN0aW9uIGxDYyhhKXtyZXR1cm4gQkQoYSwzNyksZ0NjfTtfLnBmPWZ1bmN0aW9uIG1DYyhhLGIpe2pDYyh0aGlzLEJEKGEsMzcpLGIpfTt2YXIgZ0NjO3ZhciBuWD1tZGIoQ3FlLCdJbnRlcmFjdGl2ZUN5Y2xlQnJlYWtlcicsMTM4NCk7YmNiKDEzODUsMSxCcWUsckNjKTtfLllmPWZ1bmN0aW9uIHNDYyhhKXtyZXR1cm4gQkQoYSwzNyksbkNjfTtfLnBmPWZ1bmN0aW9uIHRDYyhhLGIpe3FDYyh0aGlzLEJEKGEsMzcpLGIpfTtfLmE9MDtfLmI9MDt2YXIgbkNjO3ZhciBvWD1tZGIoQ3FlLCdNb2RlbE9yZGVyQ3ljbGVCcmVha2VyJywxMzg1KTtiY2IoMTM4OSwxLEJxZSxEQ2MpO18uWWY9ZnVuY3Rpb24gRUNjKGEpe3JldHVybiBCRChhLDM3KSx1Q2N9O18ucGY9ZnVuY3Rpb24gRkNjKGEsYil7QkNjKHRoaXMsQkQoYSwzNyksYil9O3ZhciB1Q2M7dmFyIHJYPW1kYihEcWUsJ0NvZmZtYW5HcmFoYW1MYXllcmVyJywxMzg5KTtiY2IoMTM5MCwxLERrZSxHQ2MpO18udWU9ZnVuY3Rpb24gSENjKGEsYil7cmV0dXJuIHhDYyh0aGlzLmEsQkQoYSwxMCksQkQoYiwxMCkpfTtfLkZiPWZ1bmN0aW9uIElDYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gSkNjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBwWD1tZGIoRHFlLCdDb2ZmbWFuR3JhaGFtTGF5ZXJlci8wbWV0aG9kcmVmJGNvbXBhcmVOb2Rlc0luVG9wbyRUeXBlJywxMzkwKTtiY2IoMTM5MSwxLERrZSxLQ2MpO18udWU9ZnVuY3Rpb24gTENjKGEsYil7cmV0dXJuIEFDYyh0aGlzLmEsQkQoYSwxMCksQkQoYiwxMCkpfTtfLkZiPWZ1bmN0aW9uIE1DYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gTkNjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBxWD1tZGIoRHFlLCdDb2ZmbWFuR3JhaGFtTGF5ZXJlci9sYW1iZGEkMSRUeXBlJywxMzkxKTtiY2IoMTM5MiwxLEJxZSxRQ2MpO18uWWY9ZnVuY3Rpb24gUkNjKGEpe3JldHVybiBCRChhLDM3KSxlM2MoZTNjKGUzYyhuZXcgajNjLChxVWIoKSxsVWIpLChTOGIoKSxuOGIpKSxtVWIsdzhiKSxuVWIsdjhiKX07Xy5wZj1mdW5jdGlvbiBTQ2MoYSxiKXtQQ2ModGhpcyxCRChhLDM3KSxiKX07dmFyIHRYPW1kYihEcWUsJ0ludGVyYWN0aXZlTGF5ZXJlcicsMTM5Mik7YmNiKDU2OSwxLHs1Njk6MX0sVENjKTtfLmE9MDtfLmM9MDt2YXIgc1g9bWRiKERxZSwnSW50ZXJhY3RpdmVMYXllcmVyL0xheWVyU3BhbicsNTY5KTtiY2IoMTM4OCwxLEJxZSxaQ2MpO18uWWY9ZnVuY3Rpb24gJENjKGEpe3JldHVybiBCRChhLDM3KSxVQ2N9O18ucGY9ZnVuY3Rpb24gX0NjKGEsYil7V0NjKHRoaXMsQkQoYSwzNyksYil9O3ZhciBVQ2M7dmFyIHVYPW1kYihEcWUsJ0xvbmdlc3RQYXRoTGF5ZXJlcicsMTM4OCk7YmNiKDEzOTUsMSxCcWUsaURjKTtfLllmPWZ1bmN0aW9uIGpEYyhhKXtyZXR1cm4gQkQoYSwzNyksZTNjKGUzYyhlM2MobmV3IGozYywocVViKCksbFViKSwoUzhiKCksWjdiKSksbVViLHc4YiksblViLHY4Yil9O18ucGY9ZnVuY3Rpb24ga0RjKGEsYil7Z0RjKHRoaXMsQkQoYSwzNyksYil9O18uYT0wO18uYj0wO18uZD0wO3ZhciBhRGMsYkRjO3ZhciB3WD1tZGIoRHFlLCdNaW5XaWR0aExheWVyZXInLDEzOTUpO2JjYigxMzk2LDEsRGtlLG1EYyk7Xy51ZT1mdW5jdGlvbiBuRGMoYSxiKXtyZXR1cm4gbERjKHRoaXMsQkQoYSwxMCksQkQoYiwxMCkpfTtfLkZiPWZ1bmN0aW9uIG9EYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gcERjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciB2WD1tZGIoRHFlLCdNaW5XaWR0aExheWVyZXIvTWluT3V0Z29pbmdFZGdlc0NvbXBhcmF0b3InLDEzOTYpO2JjYigxMzg3LDEsQnFlLHhEYyk7Xy5ZZj1mdW5jdGlvbiB5RGMoYSl7cmV0dXJuIEJEKGEsMzcpLHFEY307Xy5wZj1mdW5jdGlvbiB6RGMoYSxiKXt3RGModGhpcyxCRChhLDM3KSxiKX07dmFyIHFEYzt2YXIgeFg9bWRiKERxZSwnTmV0d29ya1NpbXBsZXhMYXllcmVyJywxMzg3KTtiY2IoMTM5MywxLEJxZSxMRGMpO18uWWY9ZnVuY3Rpb24gTURjKGEpe3JldHVybiBCRChhLDM3KSxlM2MoZTNjKGUzYyhuZXcgajNjLChxVWIoKSxsVWIpLChTOGIoKSxaN2IpKSxtVWIsdzhiKSxuVWIsdjhiKX07Xy5wZj1mdW5jdGlvbiBORGMoYSxiKXtJRGModGhpcyxCRChhLDM3KSxiKX07Xy5kPTA7Xy5mPTA7Xy5nPTA7Xy5pPTA7Xy5zPTA7Xy50PTA7Xy51PTA7dmFyIHpYPW1kYihEcWUsJ1N0cmV0Y2hXaWR0aExheWVyZXInLDEzOTMpO2JjYigxMzk0LDEsRGtlLFBEYyk7Xy51ZT1mdW5jdGlvbiBRRGMoYSxiKXtyZXR1cm4gT0RjKEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiBSRGMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFNEYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgeVg9bWRiKERxZSwnU3RyZXRjaFdpZHRoTGF5ZXJlci8xJywxMzk0KTtiY2IoNDAyLDEsRXFlKTtfLk5mPWZ1bmN0aW9uIGZFYyhhLGIsYyxkLGUsZil7fTtfLl9mPWZ1bmN0aW9uIGRFYyhhLGIsYyl7cmV0dXJuIFlEYyh0aGlzLGEsYixjKX07Xy5NZj1mdW5jdGlvbiBlRWMoKXt0aGlzLmc9S0MoVkQsRnFlLDI1LHRoaXMuZCwxNSwxKTt0aGlzLmY9S0MoVkQsRnFlLDI1LHRoaXMuZCwxNSwxKX07Xy5PZj1mdW5jdGlvbiBnRWMoYSxiKXt0aGlzLmVbYV09S0MoV0Qsb2plLDI1LGJbYV0ubGVuZ3RoLDE1LDEpfTtfLlBmPWZ1bmN0aW9uIGhFYyhhLGIsYyl7dmFyIGQ7ZD1jW2FdW2JdO2QucD1iO3RoaXMuZVthXVtiXT1ifTtfLlFmPWZ1bmN0aW9uIGlFYyhhLGIsYyxkKXtCRChJa2IoZFthXVtiXS5qLGMpLDExKS5wPXRoaXMuZCsrfTtfLmI9MDtfLmM9MDtfLmQ9MDt2YXIgQlg9bWRiKEdxZSwnQWJzdHJhY3RCYXJ5Y2VudGVyUG9ydERpc3RyaWJ1dG9yJyw0MDIpO2JjYigxNjMzLDEsRGtlLGpFYyk7Xy51ZT1mdW5jdGlvbiBrRWMoYSxiKXtyZXR1cm4gX0RjKHRoaXMuYSxCRChhLDExKSxCRChiLDExKSl9O18uRmI9ZnVuY3Rpb24gbEVjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBtRWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIEFYPW1kYihHcWUsJ0Fic3RyYWN0QmFyeWNlbnRlclBvcnREaXN0cmlidXRvci9sYW1iZGEkMCRUeXBlJywxNjMzKTtiY2IoODE3LDEsTW5lLHVFYyk7Xy5OZj1mdW5jdGlvbiB4RWMoYSxiLGMsZCxlLGYpe307Xy5QZj1mdW5jdGlvbiB6RWMoYSxiLGMpe307Xy5RZj1mdW5jdGlvbiBBRWMoYSxiLGMsZCl7fTtfLkxmPWZ1bmN0aW9uIHZFYygpe3JldHVybiBmYWxzZX07Xy5NZj1mdW5jdGlvbiB3RWMoKXt0aGlzLmM9dGhpcy5lLmE7dGhpcy5nPXRoaXMuZi5nfTtfLk9mPWZ1bmN0aW9uIHlFYyhhLGIpe2JbYV1bMF0uYy5wPWF9O18uUmY9ZnVuY3Rpb24gQkVjKCl7cmV0dXJuIGZhbHNlfTtfLmFnPWZ1bmN0aW9uIENFYyhhLGIsYyxkKXtpZihjKXtyRWModGhpcyxhKX1lbHNle29FYyh0aGlzLGEsZCk7cEVjKHRoaXMsYSxiKX1pZihhLmMubGVuZ3RoPjEpe0NjYihERCh2TmIoUV9iKCh0Q2IoMCxhLmMubGVuZ3RoKSxCRChhLmNbMF0sMTApKSksKE55YygpLEF3YykpKSk/WUdjKGEsdGhpcy5kLEJEKHRoaXMsNjYwKSk6KG1tYigpLE9rYihhLHRoaXMuZCkpO1BFYyh0aGlzLmUsYSl9fTtfLlNmPWZ1bmN0aW9uIERFYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosaztpZihiIT1zRWMoYyxhLmxlbmd0aCkpe2Y9YVtiLShjPzE6LTEpXTtVRGModGhpcy5mLGYsYz8oS0FjKCksSUFjKTooS0FjKCksSEFjKSl9ZT1hW2JdWzBdO2s9IWR8fGUuaz09KGowYigpLGUwYik7aj1PdShhW2JdKTt0aGlzLmFnKGosayxmYWxzZSxjKTtnPTA7Zm9yKGk9bmV3IG9sYihqKTtpLmE8aS5jLmMubGVuZ3RoOyl7aD1CRChtbGIoaSksMTApO2FbYl1bZysrXT1ofXJldHVybiBmYWxzZX07Xy5UZj1mdW5jdGlvbiBFRWMoYSxiKXt2YXIgYyxkLGUsZixnO2c9c0VjKGIsYS5sZW5ndGgpO2Y9T3UoYVtnXSk7dGhpcy5hZyhmLGZhbHNlLHRydWUsYik7Yz0wO2ZvcihlPW5ldyBvbGIoZik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEwKTthW2ddW2MrK109ZH1yZXR1cm4gZmFsc2V9O3ZhciBFWD1tZGIoR3FlLCdCYXJ5Y2VudGVySGV1cmlzdGljJyw4MTcpO2JjYig2NTgsMSx7NjU4OjF9LEZFYyk7Xy5JYj1mdW5jdGlvbiBHRWMoKXtyZXR1cm4gJ0JhcnljZW50ZXJTdGF0ZSBbbm9kZT0nK3RoaXMuYysnLCBzdW1tZWRXZWlnaHQ9Jyt0aGlzLmQrJywgZGVncmVlPScrdGhpcy5iKycsIGJhcnljZW50ZXI9Jyt0aGlzLmErJywgdmlzaXRlZD0nK3RoaXMuZSsnXSd9O18uYj0wO18uZD0wO18uZT1mYWxzZTt2YXIgQ1g9bWRiKEdxZSwnQmFyeWNlbnRlckhldXJpc3RpYy9CYXJ5Y2VudGVyU3RhdGUnLDY1OCk7YmNiKDE4MDIsMSxEa2UsSEVjKTtfLnVlPWZ1bmN0aW9uIElFYyhhLGIpe3JldHVybiBxRWModGhpcy5hLEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiBKRWMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIEtFYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgRFg9bWRiKEdxZSwnQmFyeWNlbnRlckhldXJpc3RpYy9sYW1iZGEkMCRUeXBlJywxODAyKTtiY2IoODE2LDEsTW5lLFNFYyk7Xy5NZj1mdW5jdGlvbiBURWMoKXt9O18uTmY9ZnVuY3Rpb24gVUVjKGEsYixjLGQsZSxmKXt9O18uUWY9ZnVuY3Rpb24gWEVjKGEsYixjLGQpe307Xy5PZj1mdW5jdGlvbiBWRWMoYSxiKXt0aGlzLmFbYV09S0MoQ1gsezM6MSw0OjEsNToxLDIwMTg6MX0sNjU4LGJbYV0ubGVuZ3RoLDAsMSk7dGhpcy5iW2FdPUtDKEZYLHszOjEsNDoxLDU6MSwyMDE5OjF9LDIzMyxiW2FdLmxlbmd0aCwwLDEpfTtfLlBmPWZ1bmN0aW9uIFdFYyhhLGIsYyl7T0VjKHRoaXMsY1thXVtiXSx0cnVlKX07Xy5jPWZhbHNlO3ZhciBIWD1tZGIoR3FlLCdGb3JzdGVyQ29uc3RyYWludFJlc29sdmVyJyw4MTYpO2JjYigyMzMsMSx7MjMzOjF9LCRFYyxfRWMpO18uSWI9ZnVuY3Rpb24gYUZjKCl7dmFyIGEsYjtiPW5ldyBVZmI7Yi5hKz0nWyc7Zm9yKGE9MDthPHRoaXMuZC5sZW5ndGg7YSsrKXtRZmIoYixhMGIodGhpcy5kW2FdKSk7UkVjKHRoaXMuZyx0aGlzLmRbMF0pLmEhPW51bGwmJlFmYihRZmIoKGIuYSs9JzwnLGIpLEpkYihSRWModGhpcy5nLHRoaXMuZFswXSkuYSkpLCc+Jyk7YTx0aGlzLmQubGVuZ3RoLTEmJihiLmErPVNoZSxiKX1yZXR1cm4gKGIuYSs9J10nLGIpLmF9O18uYT0wO18uYz0wO18uZj0wO3ZhciBGWD1tZGIoR3FlLCdGb3JzdGVyQ29uc3RyYWludFJlc29sdmVyL0NvbnN0cmFpbnRHcm91cCcsMjMzKTtiY2IoMTc5NywxLHFpZSxiRmMpO18udGQ9ZnVuY3Rpb24gY0ZjKGEpe09FYyh0aGlzLmEsQkQoYSwxMCksZmFsc2UpfTt2YXIgR1g9bWRiKEdxZSwnRm9yc3RlckNvbnN0cmFpbnRSZXNvbHZlci9sYW1iZGEkMCRUeXBlJywxNzk3KTtiY2IoMjE0LDEsezIxNDoxLDIyNToxfSxmRmMpO18uTmY9ZnVuY3Rpb24gaEZjKGEsYixjLGQsZSxmKXt9O18uT2Y9ZnVuY3Rpb24gaUZjKGEsYil7fTtfLk1mPWZ1bmN0aW9uIGdGYygpe3RoaXMucj1LQyhXRCxvamUsMjUsdGhpcy5uLDE1LDEpfTtfLlBmPWZ1bmN0aW9uIGpGYyhhLGIsYyl7dmFyIGQsZTtlPWNbYV1bYl07ZD1lLmU7ISFkJiZFa2IodGhpcy5iLGQpfTtfLlFmPWZ1bmN0aW9uIGtGYyhhLGIsYyxkKXsrK3RoaXMubn07Xy5JYj1mdW5jdGlvbiBsRmMoKXtyZXR1cm4gd2xiKHRoaXMuZSxuZXcgVHFiKX07Xy5nPWZhbHNlO18uaT1mYWxzZTtfLm49MDtfLnM9ZmFsc2U7dmFyIElYPW1kYihHcWUsJ0dyYXBoSW5mb0hvbGRlcicsMjE0KTtiY2IoMTgzMiwxLE1uZSxwRmMpO18uTmY9ZnVuY3Rpb24gc0ZjKGEsYixjLGQsZSxmKXt9O18uT2Y9ZnVuY3Rpb24gdEZjKGEsYil7fTtfLlFmPWZ1bmN0aW9uIHZGYyhhLGIsYyxkKXt9O18uX2Y9ZnVuY3Rpb24gcUZjKGEsYixjKXtjJiZiPjA/KFJIYyh0aGlzLmEsYVtiLTFdLGFbYl0pLHVuZGVmaW5lZCk6IWMmJmI8YS5sZW5ndGgtMT8oUkhjKHRoaXMuYSxhW2JdLGFbYisxXSksdW5kZWZpbmVkKTpUSGModGhpcy5hLGFbYl0sYz8oVWNkKCksVGNkKTooVWNkKCksemNkKSk7cmV0dXJuIG1GYyh0aGlzLGEsYixjKX07Xy5NZj1mdW5jdGlvbiByRmMoKXt0aGlzLmQ9S0MoV0Qsb2plLDI1LHRoaXMuYywxNSwxKTt0aGlzLmE9bmV3IGRJYyh0aGlzLmQpfTtfLlBmPWZ1bmN0aW9uIHVGYyhhLGIsYyl7dmFyIGQ7ZD1jW2FdW2JdO3RoaXMuYys9ZC5qLmMubGVuZ3RofTtfLmM9MDt2YXIgSlg9bWRiKEdxZSwnR3JlZWR5UG9ydERpc3RyaWJ1dG9yJywxODMyKTtiY2IoMTQwMSwxLEJxZSxDRmMpO18uWWY9ZnVuY3Rpb24gREZjKGEpe3JldHVybiB6RmMoQkQoYSwzNykpfTtfLnBmPWZ1bmN0aW9uIEVGYyhhLGIpe0JGYyhCRChhLDM3KSxiKX07dmFyIHhGYzt2YXIgTFg9bWRiKEdxZSwnSW50ZXJhY3RpdmVDcm9zc2luZ01pbmltaXplcicsMTQwMSk7YmNiKDE0MDIsMSxEa2UsR0ZjKTtfLnVlPWZ1bmN0aW9uIEhGYyhhLGIpe3JldHVybiBGRmModGhpcyxCRChhLDEwKSxCRChiLDEwKSl9O18uRmI9ZnVuY3Rpb24gSUZjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBKRmMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIEtYPW1kYihHcWUsJ0ludGVyYWN0aXZlQ3Jvc3NpbmdNaW5pbWl6ZXIvMScsMTQwMik7YmNiKDUwNywxLHs1MDc6MSwxMjM6MSw1MToxfSxmR2MpO18uWWY9ZnVuY3Rpb24gZ0djKGEpe3ZhciBiO3JldHVybiBCRChhLDM3KSxiPWszYyhLRmMpLGUzYyhiLChxVWIoKSxuVWIpLChTOGIoKSxIOGIpKSxifTtfLnBmPWZ1bmN0aW9uIGhHYyhhLGIpe1lGYyh0aGlzLEJEKGEsMzcpLGIpfTtfLmU9MDt2YXIgS0ZjO3ZhciBSWD1tZGIoR3FlLCdMYXllclN3ZWVwQ3Jvc3NpbmdNaW5pbWl6ZXInLDUwNyk7YmNiKDEzOTgsMSxxaWUsaUdjKTtfLnRkPWZ1bmN0aW9uIGpHYyhhKXtNRmModGhpcy5hLEJEKGEsMjE0KSl9O3ZhciBNWD1tZGIoR3FlLCdMYXllclN3ZWVwQ3Jvc3NpbmdNaW5pbWl6ZXIvMG1ldGhvZHJlZiRjb21wYXJlRGlmZmVyZW50UmFuZG9taXplZExheW91dHMkVHlwZScsMTM5OCk7YmNiKDEzOTksMSxxaWUsa0djKTtfLnRkPWZ1bmN0aW9uIGxHYyhhKXtWRmModGhpcy5hLEJEKGEsMjE0KSl9O3ZhciBOWD1tZGIoR3FlLCdMYXllclN3ZWVwQ3Jvc3NpbmdNaW5pbWl6ZXIvMW1ldGhvZHJlZiRtaW5pbWl6ZUNyb3NzaW5nc05vQ291bnRlciRUeXBlJywxMzk5KTtiY2IoMTQwMCwxLHFpZSxtR2MpO18udGQ9ZnVuY3Rpb24gbkdjKGEpe1hGYyh0aGlzLmEsQkQoYSwyMTQpKX07dmFyIE9YPW1kYihHcWUsJ0xheWVyU3dlZXBDcm9zc2luZ01pbmltaXplci8ybWV0aG9kcmVmJG1pbmltaXplQ3Jvc3NpbmdzV2l0aENvdW50ZXIkVHlwZScsMTQwMCk7YmNiKDQ1NCwyMix7MzoxLDM1OjEsMjI6MSw0NTQ6MX0sc0djKTt2YXIgb0djLHBHYyxxR2M7dmFyIFBYPW5kYihHcWUsJ0xheWVyU3dlZXBDcm9zc2luZ01pbmltaXplci9Dcm9zc01pblR5cGUnLDQ1NCxDSSx1R2MsdEdjKTt2YXIgdkdjO2JjYigxMzk3LDEsT2llLHhHYyk7Xy5NYj1mdW5jdGlvbiB5R2MoYSl7cmV0dXJuIExGYygpLEJEKGEsMjkpLmEuYy5sZW5ndGg9PTB9O3ZhciBRWD1tZGIoR3FlLCdMYXllclN3ZWVwQ3Jvc3NpbmdNaW5pbWl6ZXIvbGFtYmRhJDAkVHlwZScsMTM5Nyk7YmNiKDE3OTksMSxNbmUsQkdjKTtfLk1mPWZ1bmN0aW9uIENHYygpe307Xy5OZj1mdW5jdGlvbiBER2MoYSxiLGMsZCxlLGYpe307Xy5RZj1mdW5jdGlvbiBHR2MoYSxiLGMsZCl7fTtfLk9mPWZ1bmN0aW9uIEVHYyhhLGIpe2JbYV1bMF0uYy5wPWE7dGhpcy5iW2FdPUtDKFNYLHszOjEsNDoxLDU6MSwxOTQ0OjF9LDY1OSxiW2FdLmxlbmd0aCwwLDEpfTtfLlBmPWZ1bmN0aW9uIEZHYyhhLGIsYyl7dmFyIGQ7ZD1jW2FdW2JdO2QucD1iO05DKHRoaXMuYlthXSxiLG5ldyBIR2MpfTt2YXIgVlg9bWRiKEdxZSwnTGF5ZXJTd2VlcFR5cGVEZWNpZGVyJywxNzk5KTtiY2IoNjU5LDEsezY1OToxfSxIR2MpO18uSWI9ZnVuY3Rpb24gSUdjKCl7cmV0dXJuICdOb2RlSW5mbyBbY29ubmVjdGVkRWRnZXM9Jyt0aGlzLmErJywgaGllcmFyY2hpY2FsSW5mbHVlbmNlPScrdGhpcy5iKycsIHJhbmRvbUluZmx1ZW5jZT0nK3RoaXMuYysnXSd9O18uYT0wO18uYj0wO18uYz0wO3ZhciBTWD1tZGIoR3FlLCdMYXllclN3ZWVwVHlwZURlY2lkZXIvTm9kZUluZm8nLDY1OSk7YmNiKDE4MDAsMSxWa2UsSkdjKTtfLkxiPWZ1bmN0aW9uIEtHYyhhKXtyZXR1cm4gYTFiKG5ldyBiMWIoQkQoYSwxMSkuYikpfTtfLkZiPWZ1bmN0aW9uIExHYyhhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gTUdjKGEpe3JldHVybiBhMWIobmV3IGIxYihCRChhLDExKS5iKSl9O3ZhciBUWD1tZGIoR3FlLCdMYXllclN3ZWVwVHlwZURlY2lkZXIvbGFtYmRhJDAkVHlwZScsMTgwMCk7YmNiKDE4MDEsMSxWa2UsTkdjKTtfLkxiPWZ1bmN0aW9uIE9HYyhhKXtyZXR1cm4gYTFiKG5ldyBiMWIoQkQoYSwxMSkuYikpfTtfLkZiPWZ1bmN0aW9uIFBHYyhhKXtyZXR1cm4gdGhpcz09PWF9O18uTWI9ZnVuY3Rpb24gUUdjKGEpe3JldHVybiBhMWIobmV3IGIxYihCRChhLDExKS5iKSl9O3ZhciBVWD1tZGIoR3FlLCdMYXllclN3ZWVwVHlwZURlY2lkZXIvbGFtYmRhJDEkVHlwZScsMTgwMSk7YmNiKDE4MzMsNDAyLEVxZSxSR2MpO18uJGY9ZnVuY3Rpb24gU0djKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGw7aj10aGlzLmc7c3dpdGNoKGMuZyl7Y2FzZSAxOntkPTA7ZT0wO2ZvcihpPW5ldyBvbGIoYS5qKTtpLmE8aS5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaSksMTEpO2lmKGcuZS5jLmxlbmd0aCE9MCl7KytkO2cuaj09KFVjZCgpLEFjZCkmJisrZX19Zj1iK2U7bD1iK2Q7Zm9yKGg9V19iKGEsKEtBYygpLEhBYykpLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTEpO2lmKGcuaj09KFVjZCgpLEFjZCkpe2pbZy5wXT1mOy0tZn1lbHNle2pbZy5wXT1sOy0tbH19cmV0dXJuIGR9Y2FzZSAyOntrPTA7Zm9yKGg9V19iKGEsKEtBYygpLElBYykpLktjKCk7aC5PYigpOyl7Zz1CRChoLlBiKCksMTEpOysraztqW2cucF09YitrfXJldHVybiBrfWRlZmF1bHQ6dGhyb3cgdmJiKG5ldyBWZGIpO319O3ZhciBXWD1tZGIoR3FlLCdMYXllclRvdGFsUG9ydERpc3RyaWJ1dG9yJywxODMzKTtiY2IoNjYwLDgxNyx7NjYwOjEsMjI1OjF9LFhHYyk7Xy5hZz1mdW5jdGlvbiBaR2MoYSxiLGMsZCl7aWYoYyl7ckVjKHRoaXMsYSl9ZWxzZXtvRWModGhpcyxhLGQpO3BFYyh0aGlzLGEsYil9aWYoYS5jLmxlbmd0aD4xKXtDY2IoREQodk5iKFFfYigodENiKDAsYS5jLmxlbmd0aCksQkQoYS5jWzBdLDEwKSkpLChOeWMoKSxBd2MpKSkpP1lHYyhhLHRoaXMuZCx0aGlzKToobW1iKCksT2tiKGEsdGhpcy5kKSk7Q2NiKEREKHZOYihRX2IoKHRDYigwLGEuYy5sZW5ndGgpLEJEKGEuY1swXSwxMCkpKSxBd2MpKSl8fFBFYyh0aGlzLmUsYSl9fTt2YXIgWVg9bWRiKEdxZSwnTW9kZWxPcmRlckJhcnljZW50ZXJIZXVyaXN0aWMnLDY2MCk7YmNiKDE4MDMsMSxEa2UsJEdjKTtfLnVlPWZ1bmN0aW9uIF9HYyhhLGIpe3JldHVybiBWR2ModGhpcy5hLEJEKGEsMTApLEJEKGIsMTApKX07Xy5GYj1mdW5jdGlvbiBhSGMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGJIYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgWFg9bWRiKEdxZSwnTW9kZWxPcmRlckJhcnljZW50ZXJIZXVyaXN0aWMvbGFtYmRhJDAkVHlwZScsMTgwMyk7YmNiKDE0MDMsMSxCcWUsZkhjKTtfLllmPWZ1bmN0aW9uIGdIYyhhKXt2YXIgYjtyZXR1cm4gQkQoYSwzNyksYj1rM2MoY0hjKSxlM2MoYiwocVViKCksblViKSwoUzhiKCksSDhiKSksYn07Xy5wZj1mdW5jdGlvbiBoSGMoYSxiKXtlSGMoKEJEKGEsMzcpLGIpKX07dmFyIGNIYzt2YXIgWlg9bWRiKEdxZSwnTm9Dcm9zc2luZ01pbmltaXplcicsMTQwMyk7YmNiKDc5Niw0MDIsRXFlLGlIYyk7Xy4kZj1mdW5jdGlvbiBqSGMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG47bD10aGlzLmc7c3dpdGNoKGMuZyl7Y2FzZSAxOntlPTA7Zj0wO2ZvcihrPW5ldyBvbGIoYS5qKTtrLmE8ay5jLmMubGVuZ3RoOyl7aT1CRChtbGIoayksMTEpO2lmKGkuZS5jLmxlbmd0aCE9MCl7KytlO2kuaj09KFVjZCgpLEFjZCkmJisrZn19ZD0xLyhlKzEpO2c9YitmKmQ7bj1iKzEtZDtmb3Ioaj1XX2IoYSwoS0FjKCksSEFjKSkuS2MoKTtqLk9iKCk7KXtpPUJEKGouUGIoKSwxMSk7aWYoaS5qPT0oVWNkKCksQWNkKSl7bFtpLnBdPWc7Zy09ZH1lbHNle2xbaS5wXT1uO24tPWR9fWJyZWFrfWNhc2UgMjp7aD0wO2ZvcihrPW5ldyBvbGIoYS5qKTtrLmE8ay5jLmMubGVuZ3RoOyl7aT1CRChtbGIoayksMTEpO2kuZy5jLmxlbmd0aD09MHx8KytofWQ9MS8oaCsxKTttPWIrZDtmb3Ioaj1XX2IoYSwoS0FjKCksSUFjKSkuS2MoKTtqLk9iKCk7KXtpPUJEKGouUGIoKSwxMSk7bFtpLnBdPW07bSs9ZH1icmVha31kZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKCdQb3J0IHR5cGUgaXMgdW5kZWZpbmVkJykpO31yZXR1cm4gMX07dmFyICRYPW1kYihHcWUsJ05vZGVSZWxhdGl2ZVBvcnREaXN0cmlidXRvcicsNzk2KTtiY2IoODA3LDEse30sbkhjLG9IYyk7dmFyIF9YPW1kYihHcWUsJ1N3ZWVwQ29weScsODA3KTtiY2IoMTc5OCwxLE1uZSxySGMpO18uT2Y9ZnVuY3Rpb24gdUhjKGEsYil7fTtfLk1mPWZ1bmN0aW9uIHNIYygpe3ZhciBhO2E9S0MoV0Qsb2plLDI1LHRoaXMuZiwxNSwxKTt0aGlzLmQ9bmV3IExJYyhhKTt0aGlzLmE9bmV3IGRJYyhhKX07Xy5OZj1mdW5jdGlvbiB0SGMoYSxiLGMsZCxlLGYpe3ZhciBnO2c9QkQoSWtiKGZbYV1bYl0uaixjKSwxMSk7ZS5jPT1nJiZlLmMuaS5jPT1lLmQuaS5jJiYrK3RoaXMuZVthXX07Xy5QZj1mdW5jdGlvbiB2SGMoYSxiLGMpe3ZhciBkO2Q9Y1thXVtiXTt0aGlzLmNbYV09dGhpcy5jW2FdfGQuaz09KGowYigpLGkwYil9O18uUWY9ZnVuY3Rpb24gd0hjKGEsYixjLGQpe3ZhciBlO2U9QkQoSWtiKGRbYV1bYl0uaixjKSwxMSk7ZS5wPXRoaXMuZisrO2UuZy5jLmxlbmd0aCtlLmUuYy5sZW5ndGg+MSYmKGUuaj09KFVjZCgpLHpjZCk/KHRoaXMuYlthXT10cnVlKTplLmo9PVRjZCYmYT4wJiYodGhpcy5iW2EtMV09dHJ1ZSkpfTtfLmY9MDt2YXIgYVk9bWRiKExuZSwnQWxsQ3Jvc3NpbmdzQ291bnRlcicsMTc5OCk7YmNiKDU4NywxLHt9LEJIYyk7Xy5iPTA7Xy5kPTA7dmFyIGJZPW1kYihMbmUsJ0JpbmFyeUluZGV4ZWRUcmVlJyw1ODcpO2JjYig1MjQsMSx7fSxkSWMpO3ZhciBESGMsRUhjO3ZhciBsWT1tZGIoTG5lLCdDcm9zc2luZ3NDb3VudGVyJyw1MjQpO2JjYigxOTA2LDEsRGtlLGhJYyk7Xy51ZT1mdW5jdGlvbiBpSWMoYSxiKXtyZXR1cm4gWUhjKHRoaXMuYSxCRChhLDExKSxCRChiLDExKSl9O18uRmI9ZnVuY3Rpb24gakljKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBrSWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIGNZPW1kYihMbmUsJ0Nyb3NzaW5nc0NvdW50ZXIvbGFtYmRhJDAkVHlwZScsMTkwNik7YmNiKDE5MDcsMSxEa2UsbEljKTtfLnVlPWZ1bmN0aW9uIG1JYyhhLGIpe3JldHVybiBaSGModGhpcy5hLEJEKGEsMTEpLEJEKGIsMTEpKX07Xy5GYj1mdW5jdGlvbiBuSWMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG9JYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgZFk9bWRiKExuZSwnQ3Jvc3NpbmdzQ291bnRlci9sYW1iZGEkMSRUeXBlJywxOTA3KTtiY2IoMTkwOCwxLERrZSxwSWMpO18udWU9ZnVuY3Rpb24gcUljKGEsYil7cmV0dXJuICRIYyh0aGlzLmEsQkQoYSwxMSksQkQoYiwxMSkpfTtfLkZiPWZ1bmN0aW9uIHJJYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gc0ljKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBlWT1tZGIoTG5lLCdDcm9zc2luZ3NDb3VudGVyL2xhbWJkYSQyJFR5cGUnLDE5MDgpO2JjYigxOTA5LDEsRGtlLHRJYyk7Xy51ZT1mdW5jdGlvbiB1SWMoYSxiKXtyZXR1cm4gX0hjKHRoaXMuYSxCRChhLDExKSxCRChiLDExKSl9O18uRmI9ZnVuY3Rpb24gdkljKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiB3SWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIGZZPW1kYihMbmUsJ0Nyb3NzaW5nc0NvdW50ZXIvbGFtYmRhJDMkVHlwZScsMTkwOSk7YmNiKDE5MTAsMSxxaWUseEljKTtfLnRkPWZ1bmN0aW9uIHlJYyhhKXtlSWModGhpcy5hLEJEKGEsMTEpKX07dmFyIGdZPW1kYihMbmUsJ0Nyb3NzaW5nc0NvdW50ZXIvbGFtYmRhJDQkVHlwZScsMTkxMCk7YmNiKDE5MTEsMSxPaWUsekljKTtfLk1iPWZ1bmN0aW9uIEFJYyhhKXtyZXR1cm4gZkljKHRoaXMuYSxCRChhLDExKSl9O3ZhciBoWT1tZGIoTG5lLCdDcm9zc2luZ3NDb3VudGVyL2xhbWJkYSQ1JFR5cGUnLDE5MTEpO2JjYigxOTEyLDEscWllLENJYyk7Xy50ZD1mdW5jdGlvbiBESWMoYSl7QkljKHRoaXMsYSl9O3ZhciBpWT1tZGIoTG5lLCdDcm9zc2luZ3NDb3VudGVyL2xhbWJkYSQ2JFR5cGUnLDE5MTIpO2JjYigxOTEzLDEscWllLEVJYyk7Xy50ZD1mdW5jdGlvbiBGSWMoYSl7dmFyIGI7RkhjKCk7V2piKHRoaXMuYiwoYj10aGlzLmEsQkQoYSwxMSksYikpfTt2YXIgalk9bWRiKExuZSwnQ3Jvc3NpbmdzQ291bnRlci9sYW1iZGEkNyRUeXBlJywxOTEzKTtiY2IoODI2LDEsVmtlLEdJYyk7Xy5MYj1mdW5jdGlvbiBISWMoYSl7cmV0dXJuIEZIYygpLHdOYihCRChhLDExKSwod3RjKCksZ3RjKSl9O18uRmI9ZnVuY3Rpb24gSUljKGEpe3JldHVybiB0aGlzPT09YX07Xy5NYj1mdW5jdGlvbiBKSWMoYSl7cmV0dXJuIEZIYygpLHdOYihCRChhLDExKSwod3RjKCksZ3RjKSl9O3ZhciBrWT1tZGIoTG5lLCdDcm9zc2luZ3NDb3VudGVyL2xhbWJkYSQ4JFR5cGUnLDgyNik7YmNiKDE5MDUsMSx7fSxMSWMpO3ZhciBwWT1tZGIoTG5lLCdIeXBlcmVkZ2VDcm9zc2luZ3NDb3VudGVyJywxOTA1KTtiY2IoNDY3LDEsezM1OjEsNDY3OjF9LE5JYyk7Xy53ZD1mdW5jdGlvbiBPSWMoYSl7cmV0dXJuIE1JYyh0aGlzLEJEKGEsNDY3KSl9O18uYj0wO18uYz0wO18uZT0wO18uZj0wO3ZhciBvWT1tZGIoTG5lLCdIeXBlcmVkZ2VDcm9zc2luZ3NDb3VudGVyL0h5cGVyZWRnZScsNDY3KTtiY2IoMzYyLDEsezM1OjEsMzYyOjF9LFFJYyk7Xy53ZD1mdW5jdGlvbiBSSWMoYSl7cmV0dXJuIFBJYyh0aGlzLEJEKGEsMzYyKSl9O18uYj0wO18uYz0wO3ZhciBuWT1tZGIoTG5lLCdIeXBlcmVkZ2VDcm9zc2luZ3NDb3VudGVyL0h5cGVyZWRnZUNvcm5lcicsMzYyKTtiY2IoNTIzLDIyLHszOjEsMzU6MSwyMjoxLDUyMzoxfSxWSWMpO3ZhciBTSWMsVEljO3ZhciBtWT1uZGIoTG5lLCdIeXBlcmVkZ2VDcm9zc2luZ3NDb3VudGVyL0h5cGVyZWRnZUNvcm5lci9UeXBlJyw1MjMsQ0ksWEljLFdJYyk7dmFyIFlJYztiY2IoMTQwNSwxLEJxZSxkSmMpO18uWWY9ZnVuY3Rpb24gZUpjKGEpe3JldHVybiBCRCh2TmIoQkQoYSwzNyksKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSk/X0ljOm51bGx9O18ucGY9ZnVuY3Rpb24gZkpjKGEsYil7Y0pjKHRoaXMsQkQoYSwzNyksYil9O3ZhciBfSWM7dmFyIHJZPW1kYihIcWUsJ0ludGVyYWN0aXZlTm9kZVBsYWNlcicsMTQwNSk7YmNiKDE0MDYsMSxCcWUsdEpjKTtfLllmPWZ1bmN0aW9uIHVKYyhhKXtyZXR1cm4gQkQodk5iKEJEKGEsMzcpLCh3dGMoKSxLc2MpKSwyMSkuSGMoKE9yYygpLEhyYykpP2dKYzpudWxsfTtfLnBmPWZ1bmN0aW9uIHZKYyhhLGIpe3JKYyh0aGlzLEJEKGEsMzcpLGIpfTt2YXIgZ0pjLGhKYyxpSmM7dmFyIHRZPW1kYihIcWUsJ0xpbmVhclNlZ21lbnRzTm9kZVBsYWNlcicsMTQwNik7YmNiKDI1NywxLHszNToxLDI1NzoxfSx6SmMpO18ud2Q9ZnVuY3Rpb24gQUpjKGEpe3JldHVybiB3SmModGhpcyxCRChhLDI1NykpfTtfLkZiPWZ1bmN0aW9uIEJKYyhhKXt2YXIgYjtpZihKRChhLDI1Nykpe2I9QkQoYSwyNTcpO3JldHVybiB0aGlzLmI9PWIuYn1yZXR1cm4gZmFsc2V9O18uSGI9ZnVuY3Rpb24gQ0pjKCl7cmV0dXJuIHRoaXMuYn07Xy5JYj1mdW5jdGlvbiBESmMoKXtyZXR1cm4gJ2xzJytGZSh0aGlzLmUpfTtfLmE9MDtfLmI9MDtfLmM9LTE7Xy5kPS0xO18uZz0wO3ZhciBzWT1tZGIoSHFlLCdMaW5lYXJTZWdtZW50c05vZGVQbGFjZXIvTGluZWFyU2VnbWVudCcsMjU3KTtiY2IoMTQwOCwxLEJxZSwkSmMpO18uWWY9ZnVuY3Rpb24gX0pjKGEpe3JldHVybiBCRCh2TmIoQkQoYSwzNyksKHd0YygpLEtzYykpLDIxKS5IYygoT3JjKCksSHJjKSk/RUpjOm51bGx9O18ucGY9ZnVuY3Rpb24gaEtjKGEsYil7V0pjKHRoaXMsQkQoYSwzNyksYil9O18uYj0wO18uZz0wO3ZhciBFSmM7dmFyIGRaPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyJywxNDA4KTtiY2IoMTQyNywxLERrZSxpS2MpO18udWU9ZnVuY3Rpb24gaktjKGEsYil7cmV0dXJuIGJlYihCRChhLDE5KS5hLEJEKGIsMTkpLmEpfTtfLkZiPWZ1bmN0aW9uIGtLYyhhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gbEtjKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciB1WT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci8wbWV0aG9kcmVmJGNvbXBhcmUkVHlwZScsMTQyNyk7YmNiKDE0MjksMSxEa2UsbUtjKTtfLnVlPWZ1bmN0aW9uIG5LYyhhLGIpe3JldHVybiBiZWIoQkQoYSwxOSkuYSxCRChiLDE5KS5hKX07Xy5GYj1mdW5jdGlvbiBvS2MoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHBLYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgdlk9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvMW1ldGhvZHJlZiRjb21wYXJlJFR5cGUnLDE0MjkpO2JjYig2NDksMSx7NjQ5OjF9LHFLYyk7dmFyIHdZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL0VkZ2VSZXAnLDY0OSk7YmNiKDQwMSwxLHs0MDE6MX0scktjKTtfLmI9ZmFsc2U7dmFyIHhZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL05vZGVSZXAnLDQwMSk7YmNiKDUwOCwxMix7MzoxLDQ6MSwyMDoxLDI4OjEsNTI6MSwxMjoxLDE0OjEsMTU6MSw1NDoxLDUwODoxfSx2S2MpO3ZhciBDWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9QYXRoJyw1MDgpO2JjYigxNDA5LDEse30sd0tjKTtfLktiPWZ1bmN0aW9uIHhLYyhhKXtyZXR1cm4gQkQoYSwxNykuZC5pLmt9O3ZhciB5WT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9QYXRoL2xhbWJkYSQwJFR5cGUnLDE0MDkpO2JjYigxNDEwLDEsT2llLHlLYyk7Xy5NYj1mdW5jdGlvbiB6S2MoYSl7cmV0dXJuIEJEKGEsMjY3KT09KGowYigpLGcwYil9O3ZhciB6WT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9QYXRoL2xhbWJkYSQxJFR5cGUnLDE0MTApO2JjYigxNDExLDEse30sQUtjKTtfLktiPWZ1bmN0aW9uIEJLYyhhKXtyZXR1cm4gQkQoYSwxNykuZC5pfTt2YXIgQVk9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvUGF0aC9sYW1iZGEkMiRUeXBlJywxNDExKTtiY2IoMTQxMiwxLE9pZSxDS2MpO18uTWI9ZnVuY3Rpb24gREtjKGEpe3JldHVybiBlTGMoTHpjKEJEKGEsMTApKSl9O3ZhciBCWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9QYXRoL2xhbWJkYSQzJFR5cGUnLDE0MTIpO2JjYigxNDEzLDEsT2llLEVLYyk7Xy5NYj1mdW5jdGlvbiBGS2MoYSl7cmV0dXJuIGRLYyhCRChhLDExKSl9O3ZhciBEWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMCRUeXBlJywxNDEzKTtiY2IoMTQxNCwxLHFpZSxHS2MpO18udGQ9ZnVuY3Rpb24gSEtjKGEpe0xKYyh0aGlzLmEsdGhpcy5iLEJEKGEsMTEpKX07dmFyIEVZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQxJFR5cGUnLDE0MTQpO2JjYigxNDIzLDEscWllLElLYyk7Xy50ZD1mdW5jdGlvbiBKS2MoYSl7TUpjKHRoaXMuYSxCRChhLDE3KSl9O3ZhciBGWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMTAkVHlwZScsMTQyMyk7YmNiKDE0MjQsMSx7fSxLS2MpO18uS2I9ZnVuY3Rpb24gTEtjKGEpe3JldHVybiBGSmMoKSxuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBHWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMTEkVHlwZScsMTQyNCk7YmNiKDE0MjUsMSxxaWUsTUtjKTtfLnRkPWZ1bmN0aW9uIE5LYyhhKXtOSmModGhpcy5hLEJEKGEsMTApKX07dmFyIEhZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQxMiRUeXBlJywxNDI1KTtiY2IoMTQyNiwxLHt9LE9LYyk7Xy5LYj1mdW5jdGlvbiBQS2MoYSl7cmV0dXJuIEZKYygpLG1lYihCRChhLDEyMSkuZSl9O3ZhciBJWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMTMkVHlwZScsMTQyNik7YmNiKDE0MjgsMSx7fSxRS2MpO18uS2I9ZnVuY3Rpb24gUktjKGEpe3JldHVybiBGSmMoKSxtZWIoQkQoYSwxMjEpLmUpfTt2YXIgSlk9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDE1JFR5cGUnLDE0MjgpO2JjYigxNDMwLDEsT2llLFNLYyk7Xy5NYj1mdW5jdGlvbiBUS2MoYSl7cmV0dXJuIEZKYygpLEJEKGEsNDAxKS5jLms9PShqMGIoKSxoMGIpfTt2YXIgS1k9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDE3JFR5cGUnLDE0MzApO2JjYigxNDMxLDEsT2llLFVLYyk7Xy5NYj1mdW5jdGlvbiBWS2MoYSl7cmV0dXJuIEZKYygpLEJEKGEsNDAxKS5jLmouYy5sZW5ndGg+MX07dmFyIExZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQxOCRUeXBlJywxNDMxKTtiY2IoMTQzMiwxLHFpZSxXS2MpO18udGQ9ZnVuY3Rpb24gWEtjKGEpe2VLYyh0aGlzLmMsdGhpcy5iLHRoaXMuZCx0aGlzLmEsQkQoYSw0MDEpKX07Xy5jPTA7Xy5kPTA7dmFyIE1ZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQxOSRUeXBlJywxNDMyKTtiY2IoMTQxNSwxLHt9LFlLYyk7Xy5LYj1mdW5jdGlvbiBaS2MoYSl7cmV0dXJuIEZKYygpLG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMjkpLmEsMTYpKX07dmFyIE5ZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQyJFR5cGUnLDE0MTUpO2JjYigxNDMzLDEscWllLCRLYyk7Xy50ZD1mdW5jdGlvbiBfS2MoYSl7ZktjKHRoaXMuYSxCRChhLDExKSl9O18uYT0wO3ZhciBPWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjAkVHlwZScsMTQzMyk7YmNiKDE0MzQsMSx7fSxhTGMpO18uS2I9ZnVuY3Rpb24gYkxjKGEpe3JldHVybiBGSmMoKSxuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBQWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjEkVHlwZScsMTQzNCk7YmNiKDE0MzUsMSxxaWUsY0xjKTtfLnRkPWZ1bmN0aW9uIGRMYyhhKXtPSmModGhpcy5hLEJEKGEsMTApKX07dmFyIFFZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQyMiRUeXBlJywxNDM1KTtiY2IoMTQzNiwxLE9pZSxmTGMpO18uTWI9ZnVuY3Rpb24gZ0xjKGEpe3JldHVybiBlTGMoYSl9O3ZhciBSWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjMkVHlwZScsMTQzNik7YmNiKDE0MzcsMSx7fSxoTGMpO18uS2I9ZnVuY3Rpb24gaUxjKGEpe3JldHVybiBGSmMoKSxuZXcgWUFiKG51bGwsbmV3IEt1YihCRChhLDI5KS5hLDE2KSl9O3ZhciBTWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjQkVHlwZScsMTQzNyk7YmNiKDE0MzgsMSxPaWUsakxjKTtfLk1iPWZ1bmN0aW9uIGtMYyhhKXtyZXR1cm4gUEpjKHRoaXMuYSxCRChhLDEwKSl9O3ZhciBUWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjUkVHlwZScsMTQzOCk7YmNiKDE0MzksMSxxaWUsbExjKTtfLnRkPWZ1bmN0aW9uIG1MYyhhKXtRSmModGhpcy5hLHRoaXMuYixCRChhLDEwKSl9O3ZhciBVWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjYkVHlwZScsMTQzOSk7YmNiKDE0NDAsMSxPaWUsbkxjKTtfLk1iPWZ1bmN0aW9uIG9MYyhhKXtyZXR1cm4gRkpjKCksIU9aYihCRChhLDE3KSl9O3ZhciBWWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjckVHlwZScsMTQ0MCk7YmNiKDE0NDEsMSxPaWUscExjKTtfLk1iPWZ1bmN0aW9uIHFMYyhhKXtyZXR1cm4gRkpjKCksIU9aYihCRChhLDE3KSl9O3ZhciBXWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMjgkVHlwZScsMTQ0MSk7YmNiKDE0NDIsMSx7fSxyTGMpO18uQ2U9ZnVuY3Rpb24gc0xjKGEsYil7cmV0dXJuIFJKYyh0aGlzLmEsQkQoYSwyOSksQkQoYiwyOSkpfTt2YXIgWFk9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDI5JFR5cGUnLDE0NDIpO2JjYigxNDE2LDEse30sdExjKTtfLktiPWZ1bmN0aW9uIHVMYyhhKXtyZXR1cm4gRkpjKCksbmV3IFlBYihudWxsLG5ldyBMdWIobmV3IFNyKHVyKFVfYihCRChhLDEwKSkuYS5LYygpLG5ldyBTcSkpKSl9O3ZhciBZWT1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkMyRUeXBlJywxNDE2KTtiY2IoMTQxNywxLE9pZSx2TGMpO18uTWI9ZnVuY3Rpb24gd0xjKGEpe3JldHVybiBGSmMoKSxjS2MoQkQoYSwxNykpfTt2YXIgWlk9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDQkVHlwZScsMTQxNyk7YmNiKDE0MTgsMSxxaWUseExjKTtfLnRkPWZ1bmN0aW9uIHlMYyhhKXtYSmModGhpcy5hLEJEKGEsMTcpKX07dmFyICRZPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQ1JFR5cGUnLDE0MTgpO2JjYigxNDE5LDEse30sekxjKTtfLktiPWZ1bmN0aW9uIEFMYyhhKXtyZXR1cm4gRkpjKCksbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwyOSkuYSwxNikpfTt2YXIgX1k9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDYkVHlwZScsMTQxOSk7YmNiKDE0MjAsMSxPaWUsQkxjKTtfLk1iPWZ1bmN0aW9uIENMYyhhKXtyZXR1cm4gRkpjKCksQkQoYSwxMCkuaz09KGowYigpLGgwYil9O3ZhciBhWj1tZGIoSHFlLCdOZXR3b3JrU2ltcGxleFBsYWNlci9sYW1iZGEkNyRUeXBlJywxNDIwKTtiY2IoMTQyMSwxLHt9LERMYyk7Xy5LYj1mdW5jdGlvbiBFTGMoYSl7cmV0dXJuIEZKYygpLG5ldyBZQWIobnVsbCxuZXcgTHViKG5ldyBTcih1cihPX2IoQkQoYSwxMCkpLmEuS2MoKSxuZXcgU3EpKSkpfTt2YXIgYlo9bWRiKEhxZSwnTmV0d29ya1NpbXBsZXhQbGFjZXIvbGFtYmRhJDgkVHlwZScsMTQyMSk7YmNiKDE0MjIsMSxPaWUsRkxjKTtfLk1iPWZ1bmN0aW9uIEdMYyhhKXtyZXR1cm4gRkpjKCksTlpiKEJEKGEsMTcpKX07dmFyIGNaPW1kYihIcWUsJ05ldHdvcmtTaW1wbGV4UGxhY2VyL2xhbWJkYSQ5JFR5cGUnLDE0MjIpO2JjYigxNDA0LDEsQnFlLEtMYyk7Xy5ZZj1mdW5jdGlvbiBMTGMoYSl7cmV0dXJuIEJEKHZOYihCRChhLDM3KSwod3RjKCksS3NjKSksMjEpLkhjKChPcmMoKSxIcmMpKT9ITGM6bnVsbH07Xy5wZj1mdW5jdGlvbiBNTGMoYSxiKXtKTGMoQkQoYSwzNyksYil9O3ZhciBITGM7dmFyIGVaPW1kYihIcWUsJ1NpbXBsZU5vZGVQbGFjZXInLDE0MDQpO2JjYigxODAsMSx7MTgwOjF9LFVMYyk7Xy5JYj1mdW5jdGlvbiBWTGMoKXt2YXIgYTthPScnO3RoaXMuYz09KFlMYygpLFhMYyk/KGErPWtsZSk6dGhpcy5jPT1XTGMmJihhKz1qbGUpO3RoaXMubz09KGVNYygpLGNNYyk/KGErPXZsZSk6dGhpcy5vPT1kTWM/KGErPSdVUCcpOihhKz0nQkFMQU5DRUQnKTtyZXR1cm4gYX07dmFyIGhaPW1kYihLcWUsJ0JLQWxpZ25lZExheW91dCcsMTgwKTtiY2IoNTE2LDIyLHszOjEsMzU6MSwyMjoxLDUxNjoxfSxaTGMpO3ZhciBXTGMsWExjO3ZhciBmWj1uZGIoS3FlLCdCS0FsaWduZWRMYXlvdXQvSERpcmVjdGlvbicsNTE2LENJLF9MYywkTGMpO3ZhciBhTWM7YmNiKDUxNSwyMix7MzoxLDM1OjEsMjI6MSw1MTU6MX0sZk1jKTt2YXIgY01jLGRNYzt2YXIgZ1o9bmRiKEtxZSwnQktBbGlnbmVkTGF5b3V0L1ZEaXJlY3Rpb24nLDUxNSxDSSxoTWMsZ01jKTt2YXIgaU1jO2JjYigxNjM0LDEse30sbU1jKTt2YXIgaVo9bWRiKEtxZSwnQktBbGlnbmVyJywxNjM0KTtiY2IoMTYzNywxLHt9LHJNYyk7dmFyIGxaPW1kYihLcWUsJ0JLQ29tcGFjdG9yJywxNjM3KTtiY2IoNjU0LDEsezY1NDoxfSxzTWMpO18uYT0wO3ZhciBqWj1tZGIoS3FlLCdCS0NvbXBhY3Rvci9DbGFzc0VkZ2UnLDY1NCk7YmNiKDQ1OCwxLHs0NTg6MX0sdU1jKTtfLmE9bnVsbDtfLmI9MDt2YXIga1o9bWRiKEtxZSwnQktDb21wYWN0b3IvQ2xhc3NOb2RlJyw0NTgpO2JjYigxNDA3LDEsQnFlLENNYyk7Xy5ZZj1mdW5jdGlvbiBHTWMoYSl7cmV0dXJuIEJEKHZOYihCRChhLDM3KSwod3RjKCksS3NjKSksMjEpLkhjKChPcmMoKSxIcmMpKT92TWM6bnVsbH07Xy5wZj1mdW5jdGlvbiBITWMoYSxiKXtCTWModGhpcyxCRChhLDM3KSxiKX07Xy5kPWZhbHNlO3ZhciB2TWM7dmFyIG1aPW1kYihLcWUsJ0JLTm9kZVBsYWNlcicsMTQwNyk7YmNiKDE2MzUsMSx7fSxKTWMpO18uZD0wO3ZhciBvWj1tZGIoS3FlLCdOZWlnaGJvcmhvb2RJbmZvcm1hdGlvbicsMTYzNSk7YmNiKDE2MzYsMSxEa2UsT01jKTtfLnVlPWZ1bmN0aW9uIFBNYyhhLGIpe3JldHVybiBOTWModGhpcyxCRChhLDQ2KSxCRChiLDQ2KSl9O18uRmI9ZnVuY3Rpb24gUU1jKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBSTWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIG5aPW1kYihLcWUsJ05laWdoYm9yaG9vZEluZm9ybWF0aW9uL05laWdoYm9yQ29tcGFyYXRvcicsMTYzNik7YmNiKDgwOCwxLHt9KTt2YXIgc1o9bWRiKEtxZSwnVGhyZXNob2xkU3RyYXRlZ3knLDgwOCk7YmNiKDE3NjMsODA4LHt9LFdNYyk7Xy5iZz1mdW5jdGlvbiBYTWMoYSxiLGMpe3JldHVybiB0aGlzLmEubz09KGVNYygpLGRNYyk/UGplOlFqZX07Xy5jZz1mdW5jdGlvbiBZTWMoKXt9O3ZhciBwWj1tZGIoS3FlLCdUaHJlc2hvbGRTdHJhdGVneS9OdWxsVGhyZXNob2xkU3RyYXRlZ3knLDE3NjMpO2JjYig1NzksMSx7NTc5OjF9LFpNYyk7Xy5jPWZhbHNlO18uZD1mYWxzZTt2YXIgcVo9bWRiKEtxZSwnVGhyZXNob2xkU3RyYXRlZ3kvUG9zdHByb2Nlc3NhYmxlJyw1NzkpO2JjYigxNzY0LDgwOCx7fSxiTmMpO18uYmc9ZnVuY3Rpb24gY05jKGEsYixjKXt2YXIgZCxlLGY7ZT1iPT1jO2Q9dGhpcy5hLmFbYy5wXT09YjtpZighKGV8fGQpKXtyZXR1cm4gYX1mPWE7aWYodGhpcy5hLmM9PShZTGMoKSxYTGMpKXtlJiYoZj0kTWModGhpcyxiLHRydWUpKTshaXNOYU4oZikmJiFpc0Zpbml0ZShmKSYmZCYmKGY9JE1jKHRoaXMsYyxmYWxzZSkpfWVsc2V7ZSYmKGY9JE1jKHRoaXMsYix0cnVlKSk7IWlzTmFOKGYpJiYhaXNGaW5pdGUoZikmJmQmJihmPSRNYyh0aGlzLGMsZmFsc2UpKX1yZXR1cm4gZn07Xy5jZz1mdW5jdGlvbiBkTmMoKXt2YXIgYSxiLGMsZCxlO3doaWxlKHRoaXMuZC5iIT0wKXtlPUJEKEtzYih0aGlzLmQpLDU3OSk7ZD1fTWModGhpcyxlKTtpZighZC5hKXtjb250aW51ZX1hPWQuYTtjPUNjYih0aGlzLmEuZlt0aGlzLmEuZ1tlLmIucF0ucF0pO2lmKCFjJiYhT1piKGEpJiZhLmMuaS5jPT1hLmQuaS5jKXtjb250aW51ZX1iPWFOYyh0aGlzLGUpO2J8fHN3Yih0aGlzLmUsZSl9d2hpbGUodGhpcy5lLmEuYy5sZW5ndGghPTApe2FOYyh0aGlzLEJEKHJ3Yih0aGlzLmUpLDU3OSkpfX07dmFyIHJaPW1kYihLcWUsJ1RocmVzaG9sZFN0cmF0ZWd5L1NpbXBsZVRocmVzaG9sZFN0cmF0ZWd5JywxNzY0KTtiY2IoNjM1LDEsezYzNToxLDI0NjoxLDIzNDoxfSxoTmMpO18uS2Y9ZnVuY3Rpb24gak5jKCl7cmV0dXJuIGdOYyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBpTmMoKXtyZXR1cm4gZ05jKHRoaXMpfTt2YXIgZU5jO3ZhciB0Wj1tZGIoTHFlLCdFZGdlUm91dGVyRmFjdG9yeScsNjM1KTtiY2IoMTQ1OCwxLEJxZSx3TmMpO18uWWY9ZnVuY3Rpb24geE5jKGEpe3JldHVybiB1TmMoQkQoYSwzNykpfTtfLnBmPWZ1bmN0aW9uIHlOYyhhLGIpe3ZOYyhCRChhLDM3KSxiKX07dmFyIGxOYyxtTmMsbk5jLG9OYyxwTmMscU5jLHJOYyxzTmM7dmFyIHVaPW1kYihMcWUsJ09ydGhvZ29uYWxFZGdlUm91dGVyJywxNDU4KTtiY2IoMTQ1MSwxLEJxZSxOTmMpO18uWWY9ZnVuY3Rpb24gT05jKGEpe3JldHVybiBJTmMoQkQoYSwzNykpfTtfLnBmPWZ1bmN0aW9uIFBOYyhhLGIpe0tOYyh0aGlzLEJEKGEsMzcpLGIpfTt2YXIgek5jLEFOYyxCTmMsQ05jLEROYyxFTmM7dmFyIHdaPW1kYihMcWUsJ1BvbHlsaW5lRWRnZVJvdXRlcicsMTQ1MSk7YmNiKDE0NTIsMSxWa2UsUk5jKTtfLkxiPWZ1bmN0aW9uIFNOYyhhKXtyZXR1cm4gUU5jKEJEKGEsMTApKX07Xy5GYj1mdW5jdGlvbiBUTmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLk1iPWZ1bmN0aW9uIFVOYyhhKXtyZXR1cm4gUU5jKEJEKGEsMTApKX07dmFyIHZaPW1kYihMcWUsJ1BvbHlsaW5lRWRnZVJvdXRlci8xJywxNDUyKTtiY2IoMTgwOSwxLE9pZSxaTmMpO18uTWI9ZnVuY3Rpb24gJE5jKGEpe3JldHVybiBCRChhLDEyOSkuYz09KEhPYygpLEZPYyl9O3ZhciB4Wj1tZGIoTXFlLCdIeXBlckVkZ2VDeWNsZURldGVjdG9yL2xhbWJkYSQwJFR5cGUnLDE4MDkpO2JjYigxODEwLDEse30sX05jKTtfLkdlPWZ1bmN0aW9uIGFPYyhhKXtyZXR1cm4gQkQoYSwxMjkpLmR9O3ZhciB5Wj1tZGIoTXFlLCdIeXBlckVkZ2VDeWNsZURldGVjdG9yL2xhbWJkYSQxJFR5cGUnLDE4MTApO2JjYigxODExLDEsT2llLGJPYyk7Xy5NYj1mdW5jdGlvbiBjT2MoYSl7cmV0dXJuIEJEKGEsMTI5KS5jPT0oSE9jKCksRk9jKX07dmFyIHpaPW1kYihNcWUsJ0h5cGVyRWRnZUN5Y2xlRGV0ZWN0b3IvbGFtYmRhJDIkVHlwZScsMTgxMSk7YmNiKDE4MTIsMSx7fSxkT2MpO18uR2U9ZnVuY3Rpb24gZU9jKGEpe3JldHVybiBCRChhLDEyOSkuZH07dmFyIEFaPW1kYihNcWUsJ0h5cGVyRWRnZUN5Y2xlRGV0ZWN0b3IvbGFtYmRhJDMkVHlwZScsMTgxMik7YmNiKDE4MTMsMSx7fSxmT2MpO18uR2U9ZnVuY3Rpb24gZ09jKGEpe3JldHVybiBCRChhLDEyOSkuZH07dmFyIEJaPW1kYihNcWUsJ0h5cGVyRWRnZUN5Y2xlRGV0ZWN0b3IvbGFtYmRhJDQkVHlwZScsMTgxMyk7YmNiKDE4MTQsMSx7fSxoT2MpO18uR2U9ZnVuY3Rpb24gaU9jKGEpe3JldHVybiBCRChhLDEyOSkuZH07dmFyIENaPW1kYihNcWUsJ0h5cGVyRWRnZUN5Y2xlRGV0ZWN0b3IvbGFtYmRhJDUkVHlwZScsMTgxNCk7YmNiKDExMiwxLHszNToxLDExMjoxfSx1T2MpO18ud2Q9ZnVuY3Rpb24gdk9jKGEpe3JldHVybiBrT2ModGhpcyxCRChhLDExMikpfTtfLkZiPWZ1bmN0aW9uIHdPYyhhKXt2YXIgYjtpZihKRChhLDExMikpe2I9QkQoYSwxMTIpO3JldHVybiB0aGlzLmc9PWIuZ31yZXR1cm4gZmFsc2V9O18uSGI9ZnVuY3Rpb24geE9jKCl7cmV0dXJuIHRoaXMuZ307Xy5JYj1mdW5jdGlvbiB6T2MoKXt2YXIgYSxiLGMsZDthPW5ldyBXZmIoJ3snKTtkPW5ldyBvbGIodGhpcy5uKTt3aGlsZShkLmE8ZC5jLmMubGVuZ3RoKXtjPUJEKG1sYihkKSwxMSk7Yj1QX2IoYy5pKTtiPT1udWxsJiYoYj0nbicrU19iKGMuaSkpO2EuYSs9JycrYjtkLmE8ZC5jLmMubGVuZ3RoJiYoYS5hKz0nLCcsYSl9YS5hKz0nfSc7cmV0dXJuIGEuYX07Xy5hPTA7Xy5iPTA7Xy5jPU5hTjtfLmQ9MDtfLmc9MDtfLmk9MDtfLm89MDtfLnM9TmFOO3ZhciBOWj1tZGIoTXFlLCdIeXBlckVkZ2VTZWdtZW50JywxMTIpO2JjYigxMjksMSx7MTI5OjF9LERPYyk7Xy5JYj1mdW5jdGlvbiBFT2MoKXtyZXR1cm4gdGhpcy5hKyctPicrdGhpcy5iKycgKCcrWXIodGhpcy5jKSsnKSd9O18uZD0wO3ZhciBFWj1tZGIoTXFlLCdIeXBlckVkZ2VTZWdtZW50RGVwZW5kZW5jeScsMTI5KTtiY2IoNTIwLDIyLHszOjEsMzU6MSwyMjoxLDUyMDoxfSxJT2MpO3ZhciBGT2MsR09jO3ZhciBEWj1uZGIoTXFlLCdIeXBlckVkZ2VTZWdtZW50RGVwZW5kZW5jeS9EZXBlbmRlbmN5VHlwZScsNTIwLENJLEtPYyxKT2MpO3ZhciBMT2M7YmNiKDE4MTUsMSx7fSxaT2MpO3ZhciBNWj1tZGIoTXFlLCdIeXBlckVkZ2VTZWdtZW50U3BsaXR0ZXInLDE4MTUpO2JjYigxODE2LDEse30sYVBjKTtfLmE9MDtfLmI9MDt2YXIgRlo9bWRiKE1xZSwnSHlwZXJFZGdlU2VnbWVudFNwbGl0dGVyL0FyZWFSYXRpbmcnLDE4MTYpO2JjYigzMjksMSx7MzI5OjF9LGJQYyk7Xy5hPTA7Xy5iPTA7Xy5jPTA7dmFyIEdaPW1kYihNcWUsJ0h5cGVyRWRnZVNlZ21lbnRTcGxpdHRlci9GcmVlQXJlYScsMzI5KTtiY2IoMTgxNywxLERrZSxjUGMpO18udWU9ZnVuY3Rpb24gZFBjKGEsYil7cmV0dXJuIF9PYyhCRChhLDExMiksQkQoYiwxMTIpKX07Xy5GYj1mdW5jdGlvbiBlUGMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIGZQYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgSFo9bWRiKE1xZSwnSHlwZXJFZGdlU2VnbWVudFNwbGl0dGVyL2xhbWJkYSQwJFR5cGUnLDE4MTcpO2JjYigxODE4LDEscWllLGdQYyk7Xy50ZD1mdW5jdGlvbiBoUGMoYSl7VE9jKHRoaXMuYSx0aGlzLmQsdGhpcy5jLHRoaXMuYixCRChhLDExMikpfTtfLmI9MDt2YXIgSVo9bWRiKE1xZSwnSHlwZXJFZGdlU2VnbWVudFNwbGl0dGVyL2xhbWJkYSQxJFR5cGUnLDE4MTgpO2JjYigxODE5LDEse30saVBjKTtfLktiPWZ1bmN0aW9uIGpQYyhhKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIoQkQoYSwxMTIpLmUsMTYpKX07dmFyIEpaPW1kYihNcWUsJ0h5cGVyRWRnZVNlZ21lbnRTcGxpdHRlci9sYW1iZGEkMiRUeXBlJywxODE5KTtiY2IoMTgyMCwxLHt9LGtQYyk7Xy5LYj1mdW5jdGlvbiBsUGMoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMTEyKS5qLDE2KSl9O3ZhciBLWj1tZGIoTXFlLCdIeXBlckVkZ2VTZWdtZW50U3BsaXR0ZXIvbGFtYmRhJDMkVHlwZScsMTgyMCk7YmNiKDE4MjEsMSx7fSxtUGMpO18uRmU9ZnVuY3Rpb24gblBjKGEpe3JldHVybiBFZGIoRUQoYSkpfTt2YXIgTFo9bWRiKE1xZSwnSHlwZXJFZGdlU2VnbWVudFNwbGl0dGVyL2xhbWJkYSQ0JFR5cGUnLDE4MjEpO2JjYig2NTUsMSx7fSx0UGMpO18uYT0wO18uYj0wO18uYz0wO3ZhciBRWj1tZGIoTXFlLCdPcnRob2dvbmFsUm91dGluZ0dlbmVyYXRvcicsNjU1KTtiY2IoMTYzOCwxLHt9LHhQYyk7Xy5LYj1mdW5jdGlvbiB5UGMoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMTEyKS5lLDE2KSl9O3ZhciBPWj1tZGIoTXFlLCdPcnRob2dvbmFsUm91dGluZ0dlbmVyYXRvci9sYW1iZGEkMCRUeXBlJywxNjM4KTtiY2IoMTYzOSwxLHt9LHpQYyk7Xy5LYj1mdW5jdGlvbiBBUGMoYSl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKEJEKGEsMTEyKS5qLDE2KSl9O3ZhciBQWj1tZGIoTXFlLCdPcnRob2dvbmFsUm91dGluZ0dlbmVyYXRvci9sYW1iZGEkMSRUeXBlJywxNjM5KTtiY2IoNjYxLDEse30pO3ZhciBSWj1tZGIoTnFlLCdCYXNlUm91dGluZ0RpcmVjdGlvblN0cmF0ZWd5Jyw2NjEpO2JjYigxODA3LDY2MSx7fSxFUGMpO18uZGc9ZnVuY3Rpb24gRlBjKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scDtpZighIWEuciYmIWEucSl7cmV0dXJufWs9YithLm8qYztmb3Ioaj1uZXcgb2xiKGEubik7ai5hPGouYy5jLmxlbmd0aDspe2k9QkQobWxiKGopLDExKTtsPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtpLmkubixpLm4saS5hXSkpLmE7Zm9yKGg9bmV3IG9sYihpLmcpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwxNyk7aWYoIU9aYihnKSl7bz1nLmQ7cD1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbby5pLm4sby5uLG8uYV0pKS5hO2lmKCR3bmQuTWF0aC5hYnMobC1wKT5xbWUpe2Y9aztlPWE7ZD1uZXcgZjdjKGwsZik7RHNiKGcuYSxkKTtCUGModGhpcyxnLGUsZCxmYWxzZSk7bT1hLnI7aWYobSl7bj1FZGIoRUQoVXQobS5lLDApKSk7ZD1uZXcgZjdjKG4sZik7RHNiKGcuYSxkKTtCUGModGhpcyxnLGUsZCxmYWxzZSk7Zj1iK20ubypjO2U9bTtkPW5ldyBmN2MobixmKTtEc2IoZy5hLGQpO0JQYyh0aGlzLGcsZSxkLGZhbHNlKX1kPW5ldyBmN2MocCxmKTtEc2IoZy5hLGQpO0JQYyh0aGlzLGcsZSxkLGZhbHNlKX19fX19O18uZWc9ZnVuY3Rpb24gR1BjKGEpe3JldHVybiBhLmkubi5hK2Eubi5hK2EuYS5hfTtfLmZnPWZ1bmN0aW9uIEhQYygpe3JldHVybiBVY2QoKSxSY2R9O18uZ2c9ZnVuY3Rpb24gSVBjKCl7cmV0dXJuIFVjZCgpLEFjZH07dmFyIFNaPW1kYihOcWUsJ05vcnRoVG9Tb3V0aFJvdXRpbmdTdHJhdGVneScsMTgwNyk7YmNiKDE4MDgsNjYxLHt9LEpQYyk7Xy5kZz1mdW5jdGlvbiBLUGMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwO2lmKCEhYS5yJiYhYS5xKXtyZXR1cm59az1iLWEubypjO2ZvcihqPW5ldyBvbGIoYS5uKTtqLmE8ai5jLmMubGVuZ3RoOyl7aT1CRChtbGIoaiksMTEpO2w9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW2kuaS5uLGkubixpLmFdKSkuYTtmb3IoaD1uZXcgb2xiKGkuZyk7aC5hPGguYy5jLmxlbmd0aDspe2c9QkQobWxiKGgpLDE3KTtpZighT1piKGcpKXtvPWcuZDtwPWw3YyhPQyhHQyhtMSwxKSxuaWUsOCwwLFtvLmkubixvLm4sby5hXSkpLmE7aWYoJHduZC5NYXRoLmFicyhsLXApPnFtZSl7Zj1rO2U9YTtkPW5ldyBmN2MobCxmKTtEc2IoZy5hLGQpO0JQYyh0aGlzLGcsZSxkLGZhbHNlKTttPWEucjtpZihtKXtuPUVkYihFRChVdChtLmUsMCkpKTtkPW5ldyBmN2MobixmKTtEc2IoZy5hLGQpO0JQYyh0aGlzLGcsZSxkLGZhbHNlKTtmPWItbS5vKmM7ZT1tO2Q9bmV3IGY3YyhuLGYpO0RzYihnLmEsZCk7QlBjKHRoaXMsZyxlLGQsZmFsc2UpfWQ9bmV3IGY3YyhwLGYpO0RzYihnLmEsZCk7QlBjKHRoaXMsZyxlLGQsZmFsc2UpfX19fX07Xy5lZz1mdW5jdGlvbiBMUGMoYSl7cmV0dXJuIGEuaS5uLmErYS5uLmErYS5hLmF9O18uZmc9ZnVuY3Rpb24gTVBjKCl7cmV0dXJuIFVjZCgpLEFjZH07Xy5nZz1mdW5jdGlvbiBOUGMoKXtyZXR1cm4gVWNkKCksUmNkfTt2YXIgVFo9bWRiKE5xZSwnU291dGhUb05vcnRoUm91dGluZ1N0cmF0ZWd5JywxODA4KTtiY2IoMTgwNiw2NjEse30sT1BjKTtfLmRnPWZ1bmN0aW9uIFBQYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHA7aWYoISFhLnImJiFhLnEpe3JldHVybn1rPWIrYS5vKmM7Zm9yKGo9bmV3IG9sYihhLm4pO2ouYTxqLmMuYy5sZW5ndGg7KXtpPUJEKG1sYihqKSwxMSk7bD1sN2MoT0MoR0MobTEsMSksbmllLDgsMCxbaS5pLm4saS5uLGkuYV0pKS5iO2ZvcihoPW5ldyBvbGIoaS5nKTtoLmE8aC5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaCksMTcpO2lmKCFPWmIoZykpe289Zy5kO3A9bDdjKE9DKEdDKG0xLDEpLG5pZSw4LDAsW28uaS5uLG8ubixvLmFdKSkuYjtpZigkd25kLk1hdGguYWJzKGwtcCk+cW1lKXtmPWs7ZT1hO2Q9bmV3IGY3YyhmLGwpO0RzYihnLmEsZCk7QlBjKHRoaXMsZyxlLGQsdHJ1ZSk7bT1hLnI7aWYobSl7bj1FZGIoRUQoVXQobS5lLDApKSk7ZD1uZXcgZjdjKGYsbik7RHNiKGcuYSxkKTtCUGModGhpcyxnLGUsZCx0cnVlKTtmPWIrbS5vKmM7ZT1tO2Q9bmV3IGY3YyhmLG4pO0RzYihnLmEsZCk7QlBjKHRoaXMsZyxlLGQsdHJ1ZSl9ZD1uZXcgZjdjKGYscCk7RHNiKGcuYSxkKTtCUGModGhpcyxnLGUsZCx0cnVlKX19fX19O18uZWc9ZnVuY3Rpb24gUVBjKGEpe3JldHVybiBhLmkubi5iK2Eubi5iK2EuYS5ifTtfLmZnPWZ1bmN0aW9uIFJQYygpe3JldHVybiBVY2QoKSx6Y2R9O18uZ2c9ZnVuY3Rpb24gU1BjKCl7cmV0dXJuIFVjZCgpLFRjZH07dmFyIFVaPW1kYihOcWUsJ1dlc3RUb0Vhc3RSb3V0aW5nU3RyYXRlZ3knLDE4MDYpO2JjYig4MTMsMSx7fSxZUGMpO18uSWI9ZnVuY3Rpb24gWlBjKCl7cmV0dXJuIEZlKHRoaXMuYSl9O18uYj0wO18uYz1mYWxzZTtfLmQ9ZmFsc2U7Xy5mPTA7dmFyIFdaPW1kYihQcWUsJ051YlNwbGluZScsODEzKTtiY2IoNDA3LDEsezQwNzoxfSxhUWMsYlFjKTt2YXIgVlo9bWRiKFBxZSwnTnViU3BsaW5lL1BvbGFyQ1AnLDQwNyk7YmNiKDE0NTMsMSxCcWUsdlFjKTtfLllmPWZ1bmN0aW9uIHhRYyhhKXtyZXR1cm4gcVFjKEJEKGEsMzcpKX07Xy5wZj1mdW5jdGlvbiB5UWMoYSxiKXt1UWModGhpcyxCRChhLDM3KSxiKX07dmFyIGNRYyxkUWMsZVFjLGZRYyxnUWM7dmFyIGIkPW1kYihQcWUsJ1NwbGluZUVkZ2VSb3V0ZXInLDE0NTMpO2JjYigyNjgsMSx7MjY4OjF9LEJRYyk7Xy5JYj1mdW5jdGlvbiBDUWMoKXtyZXR1cm4gdGhpcy5hKycgLT4oJyt0aGlzLmMrJykgJyt0aGlzLmJ9O18uYz0wO3ZhciBYWj1tZGIoUHFlLCdTcGxpbmVFZGdlUm91dGVyL0RlcGVuZGVuY3knLDI2OCk7YmNiKDQ1NSwyMix7MzoxLDM1OjEsMjI6MSw0NTU6MX0sR1FjKTt2YXIgRFFjLEVRYzt2YXIgWVo9bmRiKFBxZSwnU3BsaW5lRWRnZVJvdXRlci9TaWRlVG9Qcm9jZXNzJyw0NTUsQ0ksSVFjLEhRYyk7dmFyIEpRYztiY2IoMTQ1NCwxLE9pZSxMUWMpO18uTWI9ZnVuY3Rpb24gTVFjKGEpe3JldHVybiBoUWMoKSwhQkQoYSwxMjgpLm99O3ZhciBaWj1tZGIoUHFlLCdTcGxpbmVFZGdlUm91dGVyL2xhbWJkYSQwJFR5cGUnLDE0NTQpO2JjYigxNDU1LDEse30sTlFjKTtfLkdlPWZ1bmN0aW9uIE9RYyhhKXtyZXR1cm4gaFFjKCksQkQoYSwxMjgpLnYrMX07dmFyICRaPW1kYihQcWUsJ1NwbGluZUVkZ2VSb3V0ZXIvbGFtYmRhJDEkVHlwZScsMTQ1NSk7YmNiKDE0NTYsMSxxaWUsUFFjKTtfLnRkPWZ1bmN0aW9uIFFRYyhhKXtzUWModGhpcy5hLHRoaXMuYixCRChhLDQ2KSl9O3ZhciBfWj1tZGIoUHFlLCdTcGxpbmVFZGdlUm91dGVyL2xhbWJkYSQyJFR5cGUnLDE0NTYpO2JjYigxNDU3LDEscWllLFJRYyk7Xy50ZD1mdW5jdGlvbiBTUWMoYSl7dFFjKHRoaXMuYSx0aGlzLmIsQkQoYSw0NikpfTt2YXIgYSQ9bWRiKFBxZSwnU3BsaW5lRWRnZVJvdXRlci9sYW1iZGEkMyRUeXBlJywxNDU3KTtiY2IoMTI4LDEsezM1OjEsMTI4OjF9LFlRYyxaUWMpO18ud2Q9ZnVuY3Rpb24gJFFjKGEpe3JldHVybiBXUWModGhpcyxCRChhLDEyOCkpfTtfLmI9MDtfLmU9ZmFsc2U7Xy5mPTA7Xy5nPTA7Xy5qPWZhbHNlO18uaz1mYWxzZTtfLm49MDtfLm89ZmFsc2U7Xy5wPWZhbHNlO18ucT1mYWxzZTtfLnM9MDtfLnU9MDtfLnY9MDtfLkY9MDt2YXIgZCQ9bWRiKFBxZSwnU3BsaW5lU2VnbWVudCcsMTI4KTtiY2IoNDU5LDEsezQ1OToxfSxfUWMpO18uYT0wO18uYj1mYWxzZTtfLmM9ZmFsc2U7Xy5kPWZhbHNlO18uZT1mYWxzZTtfLmY9MDt2YXIgYyQ9bWRiKFBxZSwnU3BsaW5lU2VnbWVudC9FZGdlSW5mb3JtYXRpb24nLDQ1OSk7YmNiKDEyMzQsMSx7fSxoUmMpO3ZhciBmJD1tZGIoVXFlLGhtZSwxMjM0KTtiY2IoMTIzNSwxLERrZSxqUmMpO18udWU9ZnVuY3Rpb24ga1JjKGEsYil7cmV0dXJuIGlSYyhCRChhLDEzNSksQkQoYiwxMzUpKX07Xy5GYj1mdW5jdGlvbiBsUmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG1SYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgZSQ9bWRiKFVxZSxpbWUsMTIzNSk7YmNiKDEyMzMsMSx7fSx0UmMpO3ZhciBnJD1tZGIoVXFlLCdNclRyZWUnLDEyMzMpO2JjYigzOTMsMjIsezM6MSwzNToxLDIyOjEsMzkzOjEsMjQ2OjEsMjM0OjF9LEFSYyk7Xy5LZj1mdW5jdGlvbiBDUmMoKXtyZXR1cm4gelJjKHRoaXMpfTtfLlhmPWZ1bmN0aW9uIEJSYygpe3JldHVybiB6UmModGhpcyl9O3ZhciB1UmMsdlJjLHdSYyx4UmM7dmFyIGgkPW5kYihVcWUsJ1RyZWVMYXlvdXRQaGFzZXMnLDM5MyxDSSxFUmMsRFJjKTt2YXIgRlJjO2JjYigxMTMwLDIwOSxNbGUsSFJjKTtfLlplPWZ1bmN0aW9uIElSYyhhLGIpe3ZhciBjLGQsZSxmLGcsaCxpO0NjYihERChoa2QoYSwoSlRjKCksQVRjKSkpKXx8JENiKChjPW5ldyBfQ2IoKFBnZCgpLG5ldyBiaGQoYSkpKSxjKSk7Zz0oaD1uZXcgU1JjLHROYihoLGEpLHlOYihoLChtVGMoKSxkVGMpLGEpLGk9bmV3IExxYixwUmMoYSxoLGkpLG9SYyhhLGgsaSksaCk7Zj1nUmModGhpcy5hLGcpO2ZvcihlPW5ldyBvbGIoZik7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDEzNSk7clJjKHRoaXMuYixkLFVkZChiLDEvZi5jLmxlbmd0aCkpfWc9ZlJjKGYpO25SYyhnKX07dmFyIGkkPW1kYihVcWUsJ1RyZWVMYXlvdXRQcm92aWRlcicsMTEzMCk7YmNiKDE4NDcsMSx2aWUsS1JjKTtfLkpjPWZ1bmN0aW9uIExSYyhhKXtyZWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBNUmMoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTt2YXIgaiQ9bWRiKFVxZSwnVHJlZVV0aWwvMScsMTg0Nyk7YmNiKDE4NDgsMSx2aWUsTlJjKTtfLkpjPWZ1bmN0aW9uIE9SYyhhKXtyZWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBQUmMoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTt2YXIgayQ9bWRiKFVxZSwnVHJlZVV0aWwvMicsMTg0OCk7YmNiKDUwMiwxMzQsezM6MSw1MDI6MSw5NDoxLDEzNDoxfSk7Xy5nPTA7dmFyIG0kPW1kYihWcWUsJ1RHcmFwaEVsZW1lbnQnLDUwMik7YmNiKDE4OCw1MDIsezM6MSwxODg6MSw1MDI6MSw5NDoxLDEzNDoxfSxRUmMpO18uSWI9ZnVuY3Rpb24gUlJjKCl7cmV0dXJuICEhdGhpcy5iJiYhIXRoaXMuYz9XUmModGhpcy5iKSsnLT4nK1dSYyh0aGlzLmMpOidlXycrdGIodGhpcyl9O3ZhciBsJD1tZGIoVnFlLCdURWRnZScsMTg4KTtiY2IoMTM1LDEzNCx7MzoxLDEzNToxLDk0OjEsMTM0OjF9LFNSYyk7Xy5JYj1mdW5jdGlvbiBUUmMoKXt2YXIgYSxiLGMsZCxlO2U9bnVsbDtmb3IoZD1Kc2IodGhpcy5iLDApO2QuYiE9ZC5kLmM7KXtjPUJEKFhzYihkKSw4Nik7ZSs9KGMuYz09bnVsbHx8Yy5jLmxlbmd0aD09MD8nbl8nK2MuZzonbl8nK2MuYykrJ1xcbid9Zm9yKGI9SnNiKHRoaXMuYSwwKTtiLmIhPWIuZC5jOyl7YT1CRChYc2IoYiksMTg4KTtlKz0oISFhLmImJiEhYS5jP1dSYyhhLmIpKyctPicrV1JjKGEuYyk6J2VfJyt0YihhKSkrJ1xcbid9cmV0dXJuIGV9O3ZhciBuJD1tZGIoVnFlLCdUR3JhcGgnLDEzNSk7YmNiKDYzMyw1MDIsezM6MSw1MDI6MSw2MzM6MSw5NDoxLDEzNDoxfSk7dmFyIHIkPW1kYihWcWUsJ1RTaGFwZScsNjMzKTtiY2IoODYsNjMzLHszOjEsNTAyOjEsODY6MSw2MzM6MSw5NDoxLDEzNDoxfSxYUmMpO18uSWI9ZnVuY3Rpb24gWVJjKCl7cmV0dXJuIFdSYyh0aGlzKX07dmFyIHEkPW1kYihWcWUsJ1ROb2RlJyw4Nik7YmNiKDI1NSwxLHZpZSxaUmMpO18uSmM9ZnVuY3Rpb24gJFJjKGEpe3JlYih0aGlzLGEpfTtfLktjPWZ1bmN0aW9uIF9SYygpe3ZhciBhO3JldHVybiBhPUpzYih0aGlzLmEuZCwwKSxuZXcgYVNjKGEpfTt2YXIgcCQ9bWRiKFZxZSwnVE5vZGUvMicsMjU1KTtiY2IoMzU4LDEsYWllLGFTYyk7Xy5OYj1mdW5jdGlvbiBiU2MoYSl7UnJiKHRoaXMsYSl9O18uUGI9ZnVuY3Rpb24gZFNjKCl7cmV0dXJuIEJEKFhzYih0aGlzLmEpLDE4OCkuY307Xy5PYj1mdW5jdGlvbiBjU2MoKXtyZXR1cm4gV3NiKHRoaXMuYSl9O18uUWI9ZnVuY3Rpb24gZVNjKCl7WnNiKHRoaXMuYSl9O3ZhciBvJD1tZGIoVnFlLCdUTm9kZS8yLzEnLDM1OCk7YmNiKDE4NDAsMSxlbmUsaFNjKTtfLnBmPWZ1bmN0aW9uIGpTYyhhLGIpe2dTYyh0aGlzLEJEKGEsMTM1KSxiKX07dmFyIHMkPW1kYihXcWUsJ0ZhblByb2Nlc3NvcicsMTg0MCk7YmNiKDMyNywyMix7MzoxLDM1OjEsMjI6MSwzMjc6MSwyMzQ6MX0sclNjKTtfLktmPWZ1bmN0aW9uIHNTYygpe3N3aXRjaCh0aGlzLmcpe2Nhc2UgMDpyZXR1cm4gbmV3IFFTYztjYXNlIDE6cmV0dXJuIG5ldyBoU2M7Y2FzZSAyOnJldHVybiBuZXcgR1NjO2Nhc2UgMzpyZXR1cm4gbmV3IHpTYztjYXNlIDQ6cmV0dXJuIG5ldyBOU2M7Y2FzZSA1OnJldHVybiBuZXcgVFNjO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIoRG5lKyh0aGlzLmYhPW51bGw/dGhpcy5mOicnK3RoaXMuZykpKTt9fTt2YXIga1NjLGxTYyxtU2MsblNjLG9TYyxwU2M7dmFyIHQkPW5kYihXcWUsRW5lLDMyNyxDSSx1U2MsdFNjKTt2YXIgdlNjO2JjYigxODQzLDEsZW5lLHpTYyk7Xy5wZj1mdW5jdGlvbiBBU2MoYSxiKXt4U2ModGhpcyxCRChhLDEzNSksYil9O18uYT0wO3ZhciB2JD1tZGIoV3FlLCdMZXZlbEhlaWdodFByb2Nlc3NvcicsMTg0Myk7YmNiKDE4NDQsMSx2aWUsQlNjKTtfLkpjPWZ1bmN0aW9uIENTYyhhKXtyZWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBEU2MoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTt2YXIgdSQ9bWRiKFdxZSwnTGV2ZWxIZWlnaHRQcm9jZXNzb3IvMScsMTg0NCk7YmNiKDE4NDEsMSxlbmUsR1NjKTtfLnBmPWZ1bmN0aW9uIEhTYyhhLGIpe0VTYyh0aGlzLEJEKGEsMTM1KSxiKX07Xy5hPTA7dmFyIHgkPW1kYihXcWUsJ05laWdoYm9yc1Byb2Nlc3NvcicsMTg0MSk7YmNiKDE4NDIsMSx2aWUsSVNjKTtfLkpjPWZ1bmN0aW9uIEpTYyhhKXtyZWIodGhpcyxhKX07Xy5LYz1mdW5jdGlvbiBLU2MoKXtyZXR1cm4gbW1iKCksRW1iKCksRG1ifTt2YXIgdyQ9bWRiKFdxZSwnTmVpZ2hib3JzUHJvY2Vzc29yLzEnLDE4NDIpO2JjYigxODQ1LDEsZW5lLE5TYyk7Xy5wZj1mdW5jdGlvbiBPU2MoYSxiKXtMU2ModGhpcyxCRChhLDEzNSksYil9O18uYT0wO3ZhciB5JD1tZGIoV3FlLCdOb2RlUG9zaXRpb25Qcm9jZXNzb3InLDE4NDUpO2JjYigxODM5LDEsZW5lLFFTYyk7Xy5wZj1mdW5jdGlvbiBSU2MoYSxiKXtQU2ModGhpcyxCRChhLDEzNSkpfTt2YXIgeiQ9bWRiKFdxZSwnUm9vdFByb2Nlc3NvcicsMTgzOSk7YmNiKDE4NDYsMSxlbmUsVFNjKTtfLnBmPWZ1bmN0aW9uIFVTYyhhLGIpe1NTYyhCRChhLDEzNSkpfTt2YXIgQSQ9bWRiKFdxZSwnVW50cmVlaWZ5ZXInLDE4NDYpO3ZhciBWU2MsV1NjLFhTYyxZU2MsWlNjLCRTYyxfU2MsYVRjLGJUYyxjVGMsZFRjLGVUYyxmVGMsZ1RjLGhUYyxpVGMsalRjLGtUYyxsVGM7YmNiKDg1MSwxLGFsZSxzVGMpO18uUWU9ZnVuY3Rpb24gdFRjKGEpe3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFpxZSksJycpLCdXZWlnaHRpbmcgb2YgTm9kZXMnKSwnV2hpY2ggd2VpZ2h0aW5nIHRvIHVzZSB3aGVuIGNvbXB1dGluZyBhIG5vZGUgb3JkZXIuJykscVRjKSwoXzVjKCksVjVjKSksRSQpLHBxYigoTjVjKCksTDVjKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsJHFlKSwnJyksJ1NlYXJjaCBPcmRlcicpLCdXaGljaCBzZWFyY2ggb3JkZXIgdG8gdXNlIHdoZW4gY29tcHV0aW5nIGEgc3Bhbm5pbmcgdHJlZS4nKSxvVGMpLFY1YyksRiQpLHBxYihMNWMpKSkpO0tUYygobmV3IExUYyxhKSl9O3ZhciBuVGMsb1RjLHBUYyxxVGM7dmFyIEIkPW1kYihfcWUsJ01yVHJlZU1ldGFEYXRhUHJvdmlkZXInLDg1MSk7YmNiKDk5NCwxLGFsZSxMVGMpO18uUWU9ZnVuY3Rpb24gTVRjKGEpe0tUYyhhKX07dmFyIHVUYyx2VGMsd1RjLHhUYyx5VGMselRjLEFUYyxCVGMsQ1RjLERUYyxFVGMsRlRjLEdUYyxIVGMsSVRjO3ZhciBEJD1tZGIoX3FlLCdNclRyZWVPcHRpb25zJyw5OTQpO2JjYig5OTUsMSx7fSxOVGMpO18uJGU9ZnVuY3Rpb24gT1RjKCl7dmFyIGE7cmV0dXJuIGE9bmV3IEhSYyxhfTtfLl9lPWZ1bmN0aW9uIFBUYyhhKXt9O3ZhciBDJD1tZGIoX3FlLCdNclRyZWVPcHRpb25zL01ydHJlZUZhY3RvcnknLDk5NSk7YmNiKDQ4MCwyMix7MzoxLDM1OjEsMjI6MSw0ODA6MX0sVFRjKTt2YXIgUVRjLFJUYzt2YXIgRSQ9bmRiKF9xZSwnT3JkZXJXZWlnaHRpbmcnLDQ4MCxDSSxWVGMsVVRjKTt2YXIgV1RjO2JjYig0MjUsMjIsezM6MSwzNToxLDIyOjEsNDI1OjF9LF9UYyk7dmFyIFlUYyxaVGM7dmFyIEYkPW5kYihfcWUsJ1RyZWVpZnlpbmdPcmRlcicsNDI1LENJLGJVYyxhVWMpO3ZhciBjVWM7YmNiKDE0NTksMSxCcWUsbFVjKTtfLllmPWZ1bmN0aW9uIG1VYyhhKXtyZXR1cm4gQkQoYSwxMzUpLGVVY307Xy5wZj1mdW5jdGlvbiBuVWMoYSxiKXtrVWModGhpcyxCRChhLDEzNSksYil9O3ZhciBlVWM7dmFyIEckPW1kYignb3JnLmVjbGlwc2UuZWxrLmFsZy5tcnRyZWUucDF0cmVlaWZ5JywnREZTVHJlZWlmeWVyJywxNDU5KTtiY2IoMTQ2MCwxLEJxZSxzVWMpO18uWWY9ZnVuY3Rpb24gdFVjKGEpe3JldHVybiBCRChhLDEzNSksb1VjfTtfLnBmPWZ1bmN0aW9uIHVVYyhhLGIpe3JVYyh0aGlzLEJEKGEsMTM1KSxiKX07dmFyIG9VYzt2YXIgSCQ9bWRiKCdvcmcuZWNsaXBzZS5lbGsuYWxnLm1ydHJlZS5wMm9yZGVyJywnTm9kZU9yZGVyZXInLDE0NjApO2JjYigxNDYxLDEsQnFlLENVYyk7Xy5ZZj1mdW5jdGlvbiBEVWMoYSl7cmV0dXJuIEJEKGEsMTM1KSx2VWN9O18ucGY9ZnVuY3Rpb24gRVVjKGEsYil7QVVjKHRoaXMsQkQoYSwxMzUpLGIpfTtfLmE9MDt2YXIgdlVjO3ZhciBJJD1tZGIoJ29yZy5lY2xpcHNlLmVsay5hbGcubXJ0cmVlLnAzcGxhY2UnLCdOb2RlUGxhY2VyJywxNDYxKTtiY2IoMTQ2MiwxLEJxZSxJVWMpO18uWWY9ZnVuY3Rpb24gSlVjKGEpe3JldHVybiBCRChhLDEzNSksRlVjfTtfLnBmPWZ1bmN0aW9uIEtVYyhhLGIpe0hVYyhCRChhLDEzNSksYil9O3ZhciBGVWM7dmFyIEokPW1kYignb3JnLmVjbGlwc2UuZWxrLmFsZy5tcnRyZWUucDRyb3V0ZScsJ0VkZ2VSb3V0ZXInLDE0NjIpO3ZhciBMVWM7YmNiKDQ5NSwyMix7MzoxLDM1OjEsMjI6MSw0OTU6MSwyNDY6MSwyMzQ6MX0sUlVjKTtfLktmPWZ1bmN0aW9uIFRVYygpe3JldHVybiBRVWModGhpcyl9O18uWGY9ZnVuY3Rpb24gU1VjKCl7cmV0dXJuIFFVYyh0aGlzKX07dmFyIE5VYyxPVWM7dmFyIEskPW5kYihjcmUsJ1JhZGlhbExheW91dFBoYXNlcycsNDk1LENJLFZVYyxVVWMpO3ZhciBXVWM7YmNiKDExMzEsMjA5LE1sZSxaVWMpO18uWmU9ZnVuY3Rpb24gJFVjKGEsYil7dmFyIGMsZCxlLGYsZyxoO2M9WVVjKHRoaXMsYSk7T2RkKGIsJ1JhZGlhbCBsYXlvdXQnLGMuYy5sZW5ndGgpO0NjYihERChoa2QoYSwoWldjKCksUVdjKSkpKXx8JENiKChkPW5ldyBfQ2IoKFBnZCgpLG5ldyBiaGQoYSkpKSxkKSk7aD1hVmMoYSk7amtkKGEsKE1VYygpLExVYyksaCk7aWYoIWgpe3Rocm93IHZiYihuZXcgV2RiKCdUaGUgZ2l2ZW4gZ3JhcGggaXMgbm90IGEgdHJlZSEnKSl9ZT1FZGIoRUQoaGtkKGEsVldjKSkpO2U9PTAmJihlPV9VYyhhKSk7amtkKGEsVldjLGUpO2ZvcihnPW5ldyBvbGIoWVVjKHRoaXMsYSkpO2cuYTxnLmMuYy5sZW5ndGg7KXtmPUJEKG1sYihnKSw1MSk7Zi5wZihhLFVkZChiLDEpKX1RZGQoYil9O3ZhciBMJD1tZGIoY3JlLCdSYWRpYWxMYXlvdXRQcm92aWRlcicsMTEzMSk7YmNiKDU0OSwxLERrZSxqVmMpO18udWU9ZnVuY3Rpb24ga1ZjKGEsYil7cmV0dXJuIGlWYyh0aGlzLmEsdGhpcy5iLEJEKGEsMzMpLEJEKGIsMzMpKX07Xy5GYj1mdW5jdGlvbiBsVmMoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIG1WYygpe3JldHVybiBuZXcgdHBiKHRoaXMpfTtfLmE9MDtfLmI9MDt2YXIgTSQ9bWRiKGNyZSwnUmFkaWFsVXRpbC9sYW1iZGEkMCRUeXBlJyw1NDkpO2JjYigxMzc1LDEsZW5lLG9WYyk7Xy5wZj1mdW5jdGlvbiBwVmMoYSxiKXtuVmMoQkQoYSwzMyksYil9O3ZhciBOJD1tZGIoZnJlLCdDYWxjdWxhdGVHcmFwaFNpemUnLDEzNzUpO2JjYig0NDIsMjIsezM6MSwzNToxLDIyOjEsNDQyOjEsMjM0OjF9LHVWYyk7Xy5LZj1mdW5jdGlvbiB2VmMoKXtzd2l0Y2godGhpcy5nKXtjYXNlIDA6cmV0dXJuIG5ldyBiV2M7Y2FzZSAxOnJldHVybiBuZXcgTlZjO2Nhc2UgMjpyZXR1cm4gbmV3IG9WYztkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKERuZSsodGhpcy5mIT1udWxsP3RoaXMuZjonJyt0aGlzLmcpKSk7fX07dmFyIHFWYyxyVmMsc1ZjO3ZhciBPJD1uZGIoZnJlLEVuZSw0NDIsQ0kseFZjLHdWYyk7dmFyIHlWYztiY2IoNjQ1LDEse30pO18uZT0xO18uZz0wO3ZhciBQJD1tZGIoZ3JlLCdBYnN0cmFjdFJhZGl1c0V4dGVuc2lvbkNvbXBhY3Rpb24nLDY0NSk7YmNiKDE3NzIsNjQ1LHt9LEtWYyk7Xy5oZz1mdW5jdGlvbiBMVmMoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqO3RoaXMuYz1CRChoa2QoYSwoTVVjKCksTFVjKSksMzMpO0VWYyh0aGlzLHRoaXMuYyk7dGhpcy5kPXRYYyhCRChoa2QoYSwoWldjKCksV1djKSksMjkzKSk7aT1CRChoa2QoYSxLV2MpLDE5KTshIWkmJkRWYyh0aGlzLGkuYSk7aD1FRChoa2QoYSwoWTljKCksVDljKSkpO0ZWYyh0aGlzLCh1Q2IoaCksaCkpO2o9Z1ZjKHRoaXMuYyk7ISF0aGlzLmQmJnRoaXMuZC5sZyhqKTtHVmModGhpcyxqKTtnPW5ldyBhbWIoT0MoR0MoRTIsMSksaHJlLDMzLDAsW3RoaXMuY10pKTtmb3IoYz0wO2M8MjtjKyspe2ZvcihiPTA7YjxqLmMubGVuZ3RoO2IrKyl7ZT1uZXcgYW1iKE9DKEdDKEUyLDEpLGhyZSwzMywwLFsodENiKGIsai5jLmxlbmd0aCksQkQoai5jW2JdLDMzKSldKSk7Zj1iPGouYy5sZW5ndGgtMT8odENiKGIrMSxqLmMubGVuZ3RoKSxCRChqLmNbYisxXSwzMykpOih0Q2IoMCxqLmMubGVuZ3RoKSxCRChqLmNbMF0sMzMpKTtkPWI9PTA/QkQoSWtiKGosai5jLmxlbmd0aC0xKSwzMyk6KHRDYihiLTEsai5jLmxlbmd0aCksQkQoai5jW2ItMV0sMzMpKTtJVmModGhpcywodENiKGIsai5jLmxlbmd0aCksQkQoai5jW2JdLDMzKSxnKSxkLGYsZSl9fX07dmFyIFEkPW1kYihncmUsJ0FubnVsdXNXZWRnZUNvbXBhY3Rpb24nLDE3NzIpO2JjYigxMzc0LDEsZW5lLE5WYyk7Xy5wZj1mdW5jdGlvbiBPVmMoYSxiKXtNVmMoQkQoYSwzMyksYil9O3ZhciBSJD1tZGIoZ3JlLCdHZW5lcmFsQ29tcGFjdG9yJywxMzc0KTtiY2IoMTc3MSw2NDUse30sU1ZjKTtfLmhnPWZ1bmN0aW9uIFRWYyhhKXt2YXIgYixjLGQsZTtjPUJEKGhrZChhLChNVWMoKSxMVWMpKSwzMyk7dGhpcy5mPWM7dGhpcy5iPXRYYyhCRChoa2QoYSwoWldjKCksV1djKSksMjkzKSk7ZT1CRChoa2QoYSxLV2MpLDE5KTshIWUmJkRWYyh0aGlzLGUuYSk7ZD1FRChoa2QoYSwoWTljKCksVDljKSkpO0ZWYyh0aGlzLCh1Q2IoZCksZCkpO2I9Z1ZjKGMpOyEhdGhpcy5iJiZ0aGlzLmIubGcoYik7UVZjKHRoaXMsYil9O18uYT0wO3ZhciBTJD1tZGIoZ3JlLCdSYWRpYWxDb21wYWN0aW9uJywxNzcxKTtiY2IoMTc3OSwxLHt9LFZWYyk7Xy5pZz1mdW5jdGlvbiBXVmMoYSl7dmFyIGIsYyxkLGUsZixnO3RoaXMuYT1hO2I9MDtnPWdWYyhhKTtkPTA7Zm9yKGY9bmV3IG9sYihnKTtmLmE8Zi5jLmMubGVuZ3RoOyl7ZT1CRChtbGIoZiksMzMpOysrZDtmb3IoYz1kO2M8Zy5jLmxlbmd0aDtjKyspe1VWYyh0aGlzLGUsKHRDYihjLGcuYy5sZW5ndGgpLEJEKGcuY1tjXSwzMykpKSYmKGIrPTEpfX1yZXR1cm4gYn07dmFyIFQkPW1kYihpcmUsJ0Nyb3NzaW5nTWluaW1pemF0aW9uUG9zaXRpb24nLDE3NzkpO2JjYigxNzc3LDEse30sWFZjKTtfLmlnPWZ1bmN0aW9uIFlWYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbjtkPTA7Zm9yKGM9bmV3IFNyKHVyKF9zZChhKS5hLktjKCksbmV3IFNxKSk7UXIoYyk7KXtiPUJEKFJyKGMpLDc5KTtoPWF0ZChCRChxdWQoKCFiLmMmJihiLmM9bmV3IHk1ZCh6MixiLDUsOCkpLGIuYyksMCksODIpKTtqPWguaStoLmcvMjtrPWguaitoLmYvMjtlPWEuaSthLmcvMjtmPWEuaithLmYvMjtsPW5ldyBkN2M7bC5hPWotZTtsLmI9ay1mO2c9bmV3IGY3YyhsLmEsbC5iKTtsNmMoZyxhLmcsYS5mKTtsLmEtPWcuYTtsLmItPWcuYjtlPWotbC5hO2Y9ay1sLmI7aT1uZXcgZjdjKGwuYSxsLmIpO2w2YyhpLGguZyxoLmYpO2wuYS09aS5hO2wuYi09aS5iO2o9ZStsLmE7az1mK2wuYjttPWotZTtuPWstZjtkKz0kd25kLk1hdGguc3FydChtKm0rbipuKX1yZXR1cm4gZH07dmFyIFUkPW1kYihpcmUsJ0VkZ2VMZW5ndGhPcHRpbWl6YXRpb24nLDE3NzcpO2JjYigxNzc4LDEse30sWlZjKTtfLmlnPWZ1bmN0aW9uICRWYyhhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsO2Q9MDtmb3IoYz1uZXcgU3IodXIoX3NkKGEpLmEuS2MoKSxuZXcgU3EpKTtRcihjKTspe2I9QkQoUnIoYyksNzkpO2g9YXRkKEJEKHF1ZCgoIWIuYyYmKGIuYz1uZXcgeTVkKHoyLGIsNSw4KSksYi5jKSwwKSw4MikpO2k9aC5pK2guZy8yO2o9aC5qK2guZi8yO2U9QkQoaGtkKGgsKFk5YygpLEM5YykpLDgpO2Y9YS5pK2UuYSthLmcvMjtnPWEuaitlLmIrYS5mO2s9aS1mO2w9ai1nO2QrPSR3bmQuTWF0aC5zcXJ0KGsqaytsKmwpfXJldHVybiBkfTt2YXIgViQ9bWRiKGlyZSwnRWRnZUxlbmd0aFBvc2l0aW9uT3B0aW1pemF0aW9uJywxNzc4KTtiY2IoMTM3Myw2NDUsZW5lLGJXYyk7Xy5wZj1mdW5jdGlvbiBjV2MoYSxiKXthV2ModGhpcyxCRChhLDMzKSxiKX07dmFyIFckPW1kYignb3JnLmVjbGlwc2UuZWxrLmFsZy5yYWRpYWwuaW50ZXJtZWRpYXRlLm92ZXJsYXBzJywnUmFkaXVzRXh0ZW5zaW9uT3ZlcmxhcFJlbW92YWwnLDEzNzMpO2JjYig0MjYsMjIsezM6MSwzNToxLDIyOjEsNDI2OjF9LGhXYyk7dmFyIGRXYyxlV2M7dmFyIFgkPW5kYihrcmUsJ0FubnVsdXNXZWRnZUNyaXRlcmlhJyw0MjYsQ0ksaldjLGlXYyk7dmFyIGtXYztiY2IoMzgwLDIyLHszOjEsMzU6MSwyMjoxLDM4MDoxfSxyV2MpO3ZhciBtV2MsbldjLG9XYzt2YXIgWSQ9bmRiKGtyZSxTbGUsMzgwLENJLHRXYyxzV2MpO3ZhciB1V2M7YmNiKDg1MiwxLGFsZSxJV2MpO18uUWU9ZnVuY3Rpb24gSldjKGEpe3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGxyZSksJycpLCdPcmRlciBJRCcpLCdUaGUgaWQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIG9yZGVyIGZvciBub2RlcyBvZiBvbmUgcmFkaXVzLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNvcnQgdGhlbSBpbiB0aGUgbGF5ZXIgYWNjb3JkaW5nbHkuJyksbWViKDApKSwoXzVjKCksWDVjKSksSkkpLHBxYigoTjVjKCksSzVjKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsbXJlKSwnJyksJ1JhZGl1cycpLCdUaGUgcmFkaXVzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgcmFkaXVzIGZvciB0aGUgcmFkaWFsIGxheW91dGVyLicpLDApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG5yZSksJycpLCdDb21wYWN0aW9uJyksJ1dpdGggdGhlIGNvbXBhY3RlciBvcHRpb24gaXQgY2FuIGJlIGRldGVybWluZWQgaG93IGNvbXBhY3Rpb24gb24gdGhlIGdyYXBoIGlzIGRvbmUuIEl0IGNhbiBiZSBjaG9zZW4gYmV0d2VlbiBub25lLCB0aGUgcmFkaWFsIGNvbXBhY3Rpb24gb3IgdGhlIGNvbXBhY3Rpb24gb2Ygd2VkZ2VzIHNlcGFyYXRlbHkuJykseVdjKSxWNWMpLFkkKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxvcmUpLCcnKSwnQ29tcGFjdGlvbiBTdGVwIFNpemUnKSwnRGV0ZXJtaW5lIHRoZSBzaXplIG9mIHN0ZXBzIHdpdGggd2hpY2ggdGhlIGNvbXBhY3Rpb24gaXMgZG9uZS4gU3RlcCBzaXplIDEgY29ycmVsYXRlcyB0byBhIGNvbXBhY3Rpb24gb2YgMSBwaXhlbCBwZXIgSXRlcmF0aW9uLicpLG1lYigxKSksWDVjKSxKSSkscHFiKEw1YykpKSk7bzRjKGEsb3JlLG5yZSxudWxsKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxwcmUpLCcnKSwnU29ydGVyJyksJ1NvcnQgdGhlIG5vZGVzIHBlciByYWRpdXMgYWNjb3JkaW5nIHRvIHRoZSBzb3J0aW5nIGFsZ29yaXRobS4gVGhlIHN0cmF0ZWdpZXMgYXJlIG5vbmUsIGJ5IHRoZSBnaXZlbiBvcmRlciBpZCwgb3Igc29ydGluZyB0aGVtIGJ5IHBvbGFyIGNvb3JkaW5hdGVzLicpLEVXYyksVjVjKSxiXykscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMscXJlKSwnJyksJ0FubnVsdXMgV2VkZ2UgQ3JpdGVyaWEnKSwnRGV0ZXJtaW5lIGhvdyB0aGUgd2VkZ2UgZm9yIHRoZSBub2RlIHBsYWNlbWVudCBpcyBjYWxjdWxhdGVkLiBJdCBjYW4gYmUgY2hvc2VuIGJldHdlZW4gd2VkZ2UgZGV0ZXJtaW5hdGlvbiBieSB0aGUgbnVtYmVyIG9mIGxlYXZlcyBvciBieSB0aGUgbWF4aW11bSBzdW0gb2YgZGlhZ29uYWxzLicpLEdXYyksVjVjKSxYJCkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMscnJlKSwnJyksJ1RyYW5zbGF0aW9uIE9wdGltaXphdGlvbicpLCdGaW5kIHRoZSBvcHRpbWFsIHRyYW5zbGF0aW9uIG9mIHRoZSBub2RlcyBvZiB0aGUgZmlyc3QgcmFkaWkgYWNjb3JkaW5nIHRvIHRoaXMgY3JpdGVyaWEuIEZvciBleGFtcGxlIGVkZ2UgY3Jvc3NpbmdzIGNhbiBiZSBtaW5pbWl6ZWQuJyksQVdjKSxWNWMpLGFfKSxwcWIoTDVjKSkpKTskV2MoKG5ldyBfV2MsYSkpfTt2YXIgd1djLHhXYyx5V2MseldjLEFXYyxCV2MsQ1djLERXYyxFV2MsRldjLEdXYzt2YXIgWiQ9bWRiKGtyZSwnUmFkaWFsTWV0YURhdGFQcm92aWRlcicsODUyKTtiY2IoOTk2LDEsYWxlLF9XYyk7Xy5RZT1mdW5jdGlvbiBhWGMoYSl7JFdjKGEpfTt2YXIgS1djLExXYyxNV2MsTldjLE9XYyxQV2MsUVdjLFJXYyxTV2MsVFdjLFVXYyxWV2MsV1djLFhXYyxZV2M7dmFyIF8kPW1kYihrcmUsJ1JhZGlhbE9wdGlvbnMnLDk5Nik7YmNiKDk5NywxLHt9LGJYYyk7Xy4kZT1mdW5jdGlvbiBjWGMoKXt2YXIgYTtyZXR1cm4gYT1uZXcgWlVjLGF9O18uX2U9ZnVuY3Rpb24gZFhjKGEpe307dmFyICQkPW1kYihrcmUsJ1JhZGlhbE9wdGlvbnMvUmFkaWFsRmFjdG9yeScsOTk3KTtiY2IoMzQwLDIyLHszOjEsMzU6MSwyMjoxLDM0MDoxfSxrWGMpO3ZhciBlWGMsZlhjLGdYYyxoWGM7dmFyIGFfPW5kYihrcmUsJ1JhZGlhbFRyYW5zbGF0aW9uU3RyYXRlZ3knLDM0MCxDSSxtWGMsbFhjKTt2YXIgblhjO2JjYigyOTMsMjIsezM6MSwzNToxLDIyOjEsMjkzOjF9LHVYYyk7dmFyIHBYYyxxWGMsclhjO3ZhciBiXz1uZGIoa3JlLCdTb3J0aW5nU3RyYXRlZ3knLDI5MyxDSSx3WGMsdlhjKTt2YXIgeFhjO2JjYigxNDQ5LDEsQnFlLENYYyk7Xy5ZZj1mdW5jdGlvbiBEWGMoYSl7cmV0dXJuIEJEKGEsMzMpLG51bGx9O18ucGY9ZnVuY3Rpb24gRVhjKGEsYil7QVhjKHRoaXMsQkQoYSwzMyksYil9O18uYz0wO3ZhciBjXz1tZGIoJ29yZy5lY2xpcHNlLmVsay5hbGcucmFkaWFsLnAxcG9zaXRpb24nLCdFYWRlc1JhZGlhbCcsMTQ0OSk7YmNiKDE3NzUsMSx7fSxGWGMpO18uamc9ZnVuY3Rpb24gR1hjKGEpe3JldHVybiBlVmMoYSl9O3ZhciBkXz1tZGIodHJlLCdBbm51bHVzV2VkZ2VCeUxlYWZzJywxNzc1KTtiY2IoMTc3NiwxLHt9LElYYyk7Xy5qZz1mdW5jdGlvbiBKWGMoYSl7cmV0dXJuIEhYYyh0aGlzLGEpfTt2YXIgZV89bWRiKHRyZSwnQW5udWx1c1dlZGdlQnlOb2RlU3BhY2UnLDE3NzYpO2JjYigxNDUwLDEsQnFlLE1YYyk7Xy5ZZj1mdW5jdGlvbiBOWGMoYSl7cmV0dXJuIEJEKGEsMzMpLG51bGx9O18ucGY9ZnVuY3Rpb24gT1hjKGEsYil7S1hjKHRoaXMsQkQoYSwzMyksYil9O3ZhciBmXz1tZGIoJ29yZy5lY2xpcHNlLmVsay5hbGcucmFkaWFsLnAycm91dGluZycsJ1N0cmFpZ2h0TGluZUVkZ2VSb3V0ZXInLDE0NTApO2JjYig4MTEsMSx7fSxRWGMpO18ua2c9ZnVuY3Rpb24gUlhjKGEpe307Xy5sZz1mdW5jdGlvbiBUWGMoYSl7UFhjKHRoaXMsYSl9O3ZhciBoXz1tZGIodXJlLCdJRFNvcnRlcicsODExKTtiY2IoMTc3NCwxLERrZSxVWGMpO18udWU9ZnVuY3Rpb24gVlhjKGEsYil7cmV0dXJuIFNYYyhCRChhLDMzKSxCRChiLDMzKSl9O18uRmI9ZnVuY3Rpb24gV1hjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBYWGMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIGdfPW1kYih1cmUsJ0lEU29ydGVyL2xhbWJkYSQwJFR5cGUnLDE3NzQpO2JjYigxNzczLDEse30sJFhjKTtfLmtnPWZ1bmN0aW9uIF9YYyhhKXtZWGModGhpcyxhKX07Xy5sZz1mdW5jdGlvbiBhWWMoYSl7dmFyIGI7aWYoIWEuZGMoKSl7aWYoIXRoaXMuZSl7Yj1iVmMoQkQoYS5YYigwKSwzMykpO1lYYyh0aGlzLGIpfVBYYyh0aGlzLmUsYSl9fTt2YXIgaV89bWRiKHVyZSwnUG9sYXJDb29yZGluYXRlU29ydGVyJywxNzczKTtiY2IoMTEzNiwyMDksTWxlLGJZYyk7Xy5aZT1mdW5jdGlvbiBlWWMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdSx2LHcsQSxCLEMsRCxGO09kZChiLCdSZWN0YW5nbGUgUGFja2luZycsMSk7Yi5uJiZiLm4mJiEhYSYmVGRkKGIsaTZkKGEpLChwZ2QoKSxtZ2QpKTtjPUVkYihFRChoa2QoYSwobFpjKCksUlljKSkpKTtwPUJEKGhrZChhLGVaYyksMzgxKTtzPUNjYihERChoa2QoYSxaWWMpKSk7dz1DY2IoREQoaGtkKGEsZFpjKSkpO2w9Q2NiKEREKGhrZChhLFZZYykpKTtBPUJEKGhrZChhLGZaYyksMTE2KTt2PUVkYihFRChoa2QoYSxqWmMpKSk7ZT1DY2IoREQoaGtkKGEsaVpjKSkpO209Q2NiKEREKGhrZChhLFdZYykpKTtyPUNjYihERChoa2QoYSxYWWMpKSk7Rj1FZGIoRUQoaGtkKGEsa1pjKSkpO0M9KCFhLmEmJihhLmE9bmV3IGNVZChFMixhLDEwLDExKSksYS5hKTtyJGMoQyk7aWYocil7bz1uZXcgUmtiO2ZvcihpPW5ldyBGeWQoQyk7aS5lIT1pLmkuZ2MoKTspe2c9QkQoRHlkKGkpLDMzKTtpa2QoZyxVWWMpJiYoby5jW28uYy5sZW5ndGhdPWcsdHJ1ZSl9Zm9yKGo9bmV3IG9sYihvKTtqLmE8ai5jLmMubGVuZ3RoOyl7Zz1CRChtbGIoaiksMzMpO0Z0ZChDLGcpfW1tYigpO09rYihvLG5ldyBmWWMpO2ZvcihrPW5ldyBvbGIobyk7ay5hPGsuYy5jLmxlbmd0aDspe2c9QkQobWxiKGspLDMzKTtCPUJEKGhrZChnLFVZYyksMTkpLmE7Qj0kd25kLk1hdGgubWluKEIsQy5pKTt2dGQoQyxCLGcpfXE9MDtmb3IoaD1uZXcgRnlkKEMpO2guZSE9aC5pLmdjKCk7KXtnPUJEKER5ZChoKSwzMyk7amtkKGcsVFljLG1lYihxKSk7KytxfX11PXJmZChhKTt1LmEtPUEuYitBLmM7dS5iLT1BLmQrQS5hO3Q9dS5hO2lmKEY8MHx8Rjx1LmEpe249bmV3IG5ZYyhjLHAscyk7Zj1qWWMobixDLHYsQSk7Yi5uJiZiLm4mJiEhYSYmVGRkKGIsaTZkKGEpLChwZ2QoKSxtZ2QpKX1lbHNle2Y9bmV3IGQkYyhjLEYsMCwoayRjKCksaiRjKSl9dS5hKz1BLmIrQS5jO3UuYis9QS5kK0EuYTtpZighdyl7ciRjKEMpO0Q9bmV3IERaYyhjLGwsbSxlLHYpO3Q9JHduZC5NYXRoLm1heCh1LmEsZi5jKTtmPUNaYyhELEMsdCx1LGIsYSxBKX1jWWMoQyxBKTtBZmQoYSxmLmMrKEEuYitBLmMpLGYuYisoQS5kK0EuYSksZmFsc2UsdHJ1ZSk7Q2NiKEREKGhrZChhLGNaYykpKXx8JENiKChkPW5ldyBfQ2IoKFBnZCgpLG5ldyBiaGQoYSkpKSxkKSk7Yi5uJiZiLm4mJiEhYSYmVGRkKGIsaTZkKGEpLChwZ2QoKSxtZ2QpKTtRZGQoYil9O3ZhciBrXz1tZGIoeXJlLCdSZWN0UGFja2luZ0xheW91dFByb3ZpZGVyJywxMTM2KTtiY2IoMTEzNywxLERrZSxmWWMpO18udWU9ZnVuY3Rpb24gZ1ljKGEsYil7cmV0dXJuIGRZYyhCRChhLDMzKSxCRChiLDMzKSl9O18uRmI9ZnVuY3Rpb24gaFljKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBpWWMoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIGpfPW1kYih5cmUsJ1JlY3RQYWNraW5nTGF5b3V0UHJvdmlkZXIvbGFtYmRhJDAkVHlwZScsMTEzNyk7YmNiKDEyNTYsMSx7fSxuWWMpO18uYT0wO18uYz1mYWxzZTt2YXIgbF89bWRiKHpyZSwnQXJlYUFwcHJveGltYXRpb24nLDEyNTYpO3ZhciBvXz1vZGIoenJlLCdCZXN0Q2FuZGlkYXRlRmlsdGVyJyk7YmNiKDYzOCwxLHs1MjY6MX0sb1ljKTtfLm1nPWZ1bmN0aW9uIHBZYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2k9bmV3IFJrYjtmPVBqZTtmb3IoaD1uZXcgb2xiKGEpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwyMjApO2Y9JHduZC5NYXRoLm1pbihmLChnLmMrKGMuYitjLmMpKSooZy5iKyhjLmQrYy5hKSkpfWZvcihlPW5ldyBvbGIoYSk7ZS5hPGUuYy5jLmxlbmd0aDspe2Q9QkQobWxiKGUpLDIyMCk7KGQuYysoYy5iK2MuYykpKihkLmIrKGMuZCtjLmEpKT09ZiYmKGkuY1tpLmMubGVuZ3RoXT1kLHRydWUpfXJldHVybiBpfTt2YXIgbV89bWRiKHpyZSwnQXJlYUZpbHRlcicsNjM4KTtiY2IoNjM5LDEsezUyNjoxfSxxWWMpO18ubWc9ZnVuY3Rpb24gclljKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk7aD1uZXcgUmtiO2k9UGplO2ZvcihnPW5ldyBvbGIoYSk7Zy5hPGcuYy5jLmxlbmd0aDspe2Y9QkQobWxiKGcpLDIyMCk7aT0kd25kLk1hdGgubWluKGksJHduZC5NYXRoLmFicygoZi5jKyhjLmIrYy5jKSkvKGYuYisoYy5kK2MuYSkpLWIpKX1mb3IoZT1uZXcgb2xiKGEpO2UuYTxlLmMuYy5sZW5ndGg7KXtkPUJEKG1sYihlKSwyMjApOyR3bmQuTWF0aC5hYnMoKGQuYysoYy5iK2MuYykpLyhkLmIrKGMuZCtjLmEpKS1iKT09aSYmKGguY1toLmMubGVuZ3RoXT1kLHRydWUpfXJldHVybiBofTt2YXIgbl89bWRiKHpyZSwnQXNwZWN0UmF0aW9GaWx0ZXInLDYzOSk7YmNiKDYzNywxLHs1MjY6MX0sdVljKTtfLm1nPWZ1bmN0aW9uIHZZYyhhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2k9bmV3IFJrYjtmPVFqZTtmb3IoaD1uZXcgb2xiKGEpO2guYTxoLmMuYy5sZW5ndGg7KXtnPUJEKG1sYihoKSwyMjApO2Y9JHduZC5NYXRoLm1heChmLHEkYyhnLmMrKGMuYitjLmMpLGcuYisoYy5kK2MuYSksZy5hKSl9Zm9yKGU9bmV3IG9sYihhKTtlLmE8ZS5jLmMubGVuZ3RoOyl7ZD1CRChtbGIoZSksMjIwKTtxJGMoZC5jKyhjLmIrYy5jKSxkLmIrKGMuZCtjLmEpLGQuYSk9PWYmJihpLmNbaS5jLmxlbmd0aF09ZCx0cnVlKX1yZXR1cm4gaX07dmFyIHBfPW1kYih6cmUsJ1NjYWxlTWVhc3VyZUZpbHRlcicsNjM3KTtiY2IoMzgxLDIyLHszOjEsMzU6MSwyMjoxLDM4MToxfSxBWWMpO3ZhciB3WWMseFljLHlZYzt2YXIgcV89bmRiKEFyZSwnT3B0aW1pemF0aW9uR29hbCcsMzgxLENJLENZYyxCWWMpO3ZhciBEWWM7YmNiKDg1NiwxLGFsZSxQWWMpO18uUWU9ZnVuY3Rpb24gUVljKGEpe3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLEJyZSksJycpLCdPcHRpbWl6YXRpb24gR29hbCcpLCdPcHRpbWl6YXRpb24gZ29hbCBmb3IgYXBwcm94aW1hdGlvbiBvZiB0aGUgYm91bmRpbmcgYm94IGdpdmVuIGJ5IHRoZSBmaXJzdCBpdGVyYXRpb24uIERldGVybWluZXMgd2hldGhlciBsYXlvdXQgaXMgc29ydGVkIGJ5IHRoZSBtYXhpbXVtIHNjYWxpbmcsIGFzcGVjdCByYXRpbywgb3IgYXJlYS4gRGVwZW5kaW5nIG9uIHRoZSBzdHJhdGVneSB0aGUgYXNwZWN0IHJhdGlvIG1pZ2h0IGJlIG5lYXJseSBpZ25vcmVkLicpLExZYyksKF81YygpLFY1YykpLHFfKSxwcWIoKE41YygpLEs1YykpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLENyZSksJycpLCdTaGlmdCBMYXN0IFBsYWNlZC4nKSwnV2hlbiBwbGFjaW5nIGEgcmVjdGFuZ2xlIGJlaGluZCBvciBiZWxvdyB0aGUgbGFzdCBwbGFjZWQgcmVjdGFuZ2xlIGluIHRoZSBmaXJzdCBpdGVyYXRpb24sIGl0IGlzIHNvbWV0aW1lcyBwb3NzaWJsZSB0byBzaGlmdCB0aGUgcmVjdGFuZ2xlIGZ1cnRoZXIgdG8gdGhlIGxlZnQgb3IgcmlnaHQsIHJlc3VsdGluZyBpbiBsZXNzIHdoaXRlc3BhY2UuIFRydWUgKGRlZmF1bHQpIGVuYWJsZXMgdGhlIHNoaWZ0IGFuZCBmYWxzZSBkaXNhYmxlcyBpdC4gRGlzYWJsaW5nIHRoZSBzaGlmdCBwcm9kdWNlcyBhIGdyZWF0ZXIgYXBwcm94aW1hdGVkIGFyZWEgYnkgdGhlIGZpcnN0IGl0ZXJhdGlvbiBhbmQgYSBsYXlvdXQsIHdoZW4gdXNpbmcgT05MWSB0aGUgZmlyc3QgaXRlcmF0aW9uIChkZWZhdWx0IG5vdCB0aGUgY2FzZSksIHdoZXJlIGl0IGlzIHNvbWV0aW1lcyBpbXBvc3NpYmxlIHRvIGltcGxlbWVudCBhIHNpemUgdHJhbnNmb3JtYXRpb24gb2YgcmVjdGFuZ2xlcyB0aGF0IHdpbGwgZmlsbCB0aGUgYm91bmRpbmcgYm94IGFuZCBlbGltaW5hdGUgZW1wdHkgc3BhY2VzLicpLChCY2IoKSx0cnVlKSksVDVjKSx3SSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRHJlKSwnJyksJ0N1cnJlbnQgcG9zaXRpb24gb2YgYSBub2RlIGluIHRoZSBvcmRlciBvZiBub2RlcycpLCdUaGUgcmVjdGFuZ2xlcyBhcmUgb3JkZXJlZC4gTm9ybWFsbHkgYWNjb3JkaW5nIHRvIHRoZWlyIGRlZmluaXRpb24gdGhlIHRoZSBtb2RlbC4gVGhpcyBvcHRpb24gc3BlY2lmaWVzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGEgbm9kZS4nKSxtZWIoLTEpKSxYNWMpLEpJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxFcmUpLCcnKSwnRGVzaXJlZCBpbmRleCBvZiBub2RlJyksJ1RoZSByZWN0YW5nbGVzIGFyZSBvcmRlcmVkLiBOb3JtYWxseSBhY2NvcmRpbmcgdG8gdGhlaXIgZGVmaW5pdGlvbiB0aGUgdGhlIG1vZGVsLiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gc3BlY2lmeSBhIGRlc2lyZWQgcG9zaXRpb24gdGhhdCBoYXMgcHJlZmVyZW5jZSBvdmVyIHRoZSBvcmlnaW5hbCBwb3NpdGlvbi4nKSxtZWIoLTEpKSxYNWMpLEpJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxGcmUpLCcnKSwnT25seSBBcmVhIEFwcHJveGltYXRpb24nKSwnSWYgZW5hYmxlZCBvbmx5IHRoZSB3aWR0aCBhcHByb3hpbWF0aW9uIHN0ZXAgaXMgZXhlY3V0ZWQgYW5kIHRoZSBub2RlcyBhcmUgcGxhY2VkIGFjY29yZGluZ2x5LiBUaGUgbm9kZXMgYXJlIGxheW91dGVkIGFjY29yZGluZyB0byB0aGUgcGFja2luZ1N0cmF0ZWd5LiBJZiBzZXQgdG8gdHJ1ZSBub3QgZXhwYW5zaW9uIG9mIG5vZGVzIGlzIHRha2luZyBwbGFjZS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsR3JlKSwnJyksJ0NvbXBhY3QgUm93cycpLCdFbmFibGVzIGNvbXBhY3Rpb24uIENvbXBhY3RzIGJsb2NrcyBpZiB0aGV5IGRvIG5vdCB1c2UgdGhlIGZ1bGwgaGVpZ2h0IG9mIHRoZSByb3cuIFRoaXMgb3B0aW9uIGFsbG93cyB0byBoYXZlIGEgc21hbGxlciBkcmF3aW5nLiBJZiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCBhbGwgbm9kZXMgYXJlIHBsYWNlZCBuZXh0IHRvIGVhY2ggb3RoZXIgaW4gcm93cy4nKSx0cnVlKSxUNWMpLHdJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxIcmUpLCcnKSwnRml0IEFzcGVjdCBSYXRpbycpLCdFeHBhbmRzIG5vZGVzIGlmIGV4cGFuZE5vZGVzIGlzIHRydWUgdG8gZml0IHRoZSBhc3BlY3QgcmF0aW8gaW5zdGVhZCBvZiBvbmx5IGluIHRoZWlyIGJvdW5kcy4gVGhlIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCBpZiB0aGUgdXNlZCBwYWNraW5nU3RyYXRlZ3kgaXMgQVNQRUNUX1JBVElPX0RSSVZFTiwgb3RoZXJ3aXNlIHRoaXMgbWF5IHJlc3VsdCBpbiB1bnJlYXNvbmFibGUgbmRvZSBleHBhbnNpb24uJyksZmFsc2UpLFQ1Yyksd0kpLHBxYihLNWMpKSkpO280YyhhLEhyZSxKcmUsbnVsbCk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsSXJlKSwnJyksJ1RhcmdldCBXaWR0aCcpLCdPcHRpb24gdG8gcGxhY2UgdGhlIHJlY3RhbmdsZXMgaW4gdGhlIGdpdmVuIHRhcmdldCB3aWR0aCBpbnN0ZWFkIG9mIGFwcHJveGltYXRpbmcgdGhlIHdpZHRoIHVzaW5nIHRoZSBkZXNpcmVkIGFzcGVjdCByYXRpby4gVGhlIHBhZGRpbmcgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMuIE1lYW5pbmcgYSBkcmF3aW5nIHdpbGwgaGF2ZSB3aWR0aCBvZiB0YXJnZXR3aWR0aCArIGhvcml6b250YWwgcGFkZGluZy4nKSwtMSksVTVjKSxCSSkscHFiKEs1YykpKSk7bVpjKChuZXcgblpjLGEpKX07dmFyIEZZYyxHWWMsSFljLElZYyxKWWMsS1ljLExZYyxNWWMsTlljO3ZhciByXz1tZGIoQXJlLCdSZWN0UGFja2luZ01ldGFEYXRhUHJvdmlkZXInLDg1Nik7YmNiKDEwMDQsMSxhbGUsblpjKTtfLlFlPWZ1bmN0aW9uIG9aYyhhKXttWmMoYSl9O3ZhciBSWWMsU1ljLFRZYyxVWWMsVlljLFdZYyxYWWMsWVljLFpZYywkWWMsX1ljLGFaYyxiWmMsY1pjLGRaYyxlWmMsZlpjLGdaYyxoWmMsaVpjLGpaYyxrWmM7dmFyIHRfPW1kYihBcmUsJ1JlY3RQYWNraW5nT3B0aW9ucycsMTAwNCk7YmNiKDEwMDUsMSx7fSxwWmMpO18uJGU9ZnVuY3Rpb24gcVpjKCl7dmFyIGE7cmV0dXJuIGE9bmV3IGJZYyxhfTtfLl9lPWZ1bmN0aW9uIHJaYyhhKXt9O3ZhciBzXz1tZGIoQXJlLCdSZWN0UGFja2luZ09wdGlvbnMvUmVjdHBhY2tpbmdGYWN0b3J5JywxMDA1KTtiY2IoMTI1NywxLHt9LERaYyk7Xy5hPTA7Xy5iPWZhbHNlO18uYz0wO18uZD0wO18uZT1mYWxzZTtfLmY9ZmFsc2U7Xy5nPTA7dmFyIHVfPW1kYignb3JnLmVjbGlwc2UuZWxrLmFsZy5yZWN0cGFja2luZy5zZWNvbmRpdGVyYXRpb24nLCdSb3dGaWxsaW5nQW5kQ29tcGFjdGlvbicsMTI1Nyk7YmNiKDE4NywxLHsxODc6MX0sUFpjKTtfLmE9MDtfLmM9ZmFsc2U7Xy5kPTA7Xy5lPTA7Xy5mPTA7Xy5nPTA7Xy5pPTA7Xy5rPWZhbHNlO18ubz1QamU7Xy5wPVBqZTtfLnI9MDtfLnM9MDtfLnQ9MDt2YXIgeF89bWRiKExyZSwnQmxvY2snLDE4Nyk7YmNiKDIxMSwxLHsyMTE6MX0sVlpjKTtfLmE9MDtfLmI9MDtfLmQ9MDtfLmU9MDtfLmY9MDt2YXIgdl89bWRiKExyZSwnQmxvY2tSb3cnLDIxMSk7YmNiKDQ0MywxLHs0NDM6MX0sYiRjKTtfLmI9MDtfLmM9MDtfLmQ9MDtfLmU9MDtfLmY9MDt2YXIgd189bWRiKExyZSwnQmxvY2tTdGFjaycsNDQzKTtiY2IoMjIwLDEsezIyMDoxfSxkJGMsZSRjKTtfLmE9MDtfLmI9MDtfLmM9MDtfLmQ9MDtfLmU9MDt2YXIgel89bWRiKExyZSwnRHJhd2luZ0RhdGEnLDIyMCk7YmNiKDM1NSwyMix7MzoxLDM1OjEsMjI6MSwzNTU6MX0sbCRjKTt2YXIgZiRjLGckYyxoJGMsaSRjLGokYzt2YXIgeV89bmRiKExyZSwnRHJhd2luZ0RhdGFEZXNjcmlwdG9yJywzNTUsQ0ksbiRjLG0kYyk7dmFyIG8kYztiY2IoMjAwLDEsezIwMDoxfSx4JGMpO18uYj0wO18uYz0wO18uZT0wO18uZj0wO3ZhciBBXz1tZGIoTHJlLCdSZWN0Um93JywyMDApO2JjYig3NTYsMSx7fSxGJGMpO18uaj0wO3ZhciBHXz1tZGIoTnJlLHVuZSw3NTYpO2JjYigxMjQ1LDEse30sRyRjKTtfLkplPWZ1bmN0aW9uIEgkYyhhKXtyZXR1cm4gUzZjKGEuYSxhLmIpfTt2YXIgQl89bWRiKE5yZSx2bmUsMTI0NSk7YmNiKDEyNDYsMSx7fSxJJGMpO18uSmU9ZnVuY3Rpb24gSiRjKGEpe3JldHVybiBBJGModGhpcy5hLGEpfTt2YXIgQ189bWRiKE5yZSx3bmUsMTI0Nik7YmNiKDEyNDcsMSx7fSxLJGMpO18uSmU9ZnVuY3Rpb24gTCRjKGEpe3JldHVybiBCJGModGhpcy5hLGEpfTt2YXIgRF89bWRiKE5yZSx4bmUsMTI0Nyk7YmNiKDEyNDgsMSx7fSxNJGMpO18uSmU9ZnVuY3Rpb24gTiRjKGEpe3JldHVybiBDJGModGhpcy5hLGEpfTt2YXIgRV89bWRiKE5yZSwnRWxrR3JhcGhJbXBvcnRlci9sYW1iZGEkMyRUeXBlJywxMjQ4KTtiY2IoMTI0OSwxLHt9LE8kYyk7Xy5KZT1mdW5jdGlvbiBQJGMoYSl7cmV0dXJuIEQkYyh0aGlzLmEsYSl9O3ZhciBGXz1tZGIoTnJlLHluZSwxMjQ5KTtiY2IoMTEzMywyMDksTWxlLFEkYyk7Xy5aZT1mdW5jdGlvbiBTJGMoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqLGssbCxtLG47aWYoaWtkKGEsKGQwYygpLGMwYykpKXtuPUdEKGhrZChhLChKMGMoKSxJMGMpKSk7Zj1oNGMobjRjKCksbik7aWYoZil7Zz1CRChoZ2QoZi5mKSwyMDkpO2cuWmUoYSxVZGQoYiwxKSl9fWprZChhLFpfYywoQ19jKCksQV9jKSk7amtkKGEsJF9jLChOX2MoKSxLX2MpKTtqa2QoYSxfX2MsKGExYygpLF8wYykpO2g9QkQoaGtkKGEsKEowYygpLEUwYykpLDE5KS5hO09kZChiLCdPdmVybGFwIHJlbW92YWwnLDEpO0NjYihERChoa2QoYSxEMGMpKSkmJidudWxsNDVzY2FubGluZU92ZXJsYXBzJztpPW5ldyBUcWI7aj1uZXcgVSRjKGkpO2Q9bmV3IEYkYztjPXokYyhkLGEpO2s9dHJ1ZTtlPTA7d2hpbGUoZTxoJiZrKXtpZihDY2IoREQoaGtkKGEsRjBjKSkpKXtpLmEuJGIoKTtjT2IobmV3IGRPYihqKSxjLmkpO2lmKGkuYS5nYygpPT0wKXticmVha31jLmU9aX1IMmModGhpcy5iKTtLMmModGhpcy5iLChZJGMoKSxWJGMpLChSMGMoKSxRMGMpKTtLMmModGhpcy5iLFckYyxjLmcpO0syYyh0aGlzLmIsWCRjLChzX2MoKSxyX2MpKTt0aGlzLmE9RjJjKHRoaXMuYixjKTtmb3IobT1uZXcgb2xiKHRoaXMuYSk7bS5hPG0uYy5jLmxlbmd0aDspe2w9QkQobWxiKG0pLDUxKTtsLnBmKGMsVWRkKGIsMSkpfUUkYyhkLGMpO2s9Q2NiKEREKHZOYihjLChYTmIoKSxXTmIpKSkpOysrZX15JGMoZCxjKTtRZGQoYil9O3ZhciBJXz1tZGIoTnJlLCdPdmVybGFwUmVtb3ZhbExheW91dFByb3ZpZGVyJywxMTMzKTtiY2IoMTEzNCwxLHt9LFUkYyk7dmFyIEhfPW1kYihOcmUsJ092ZXJsYXBSZW1vdmFsTGF5b3V0UHJvdmlkZXIvbGFtYmRhJDAkVHlwZScsMTEzNCk7YmNiKDQzNywyMix7MzoxLDM1OjEsMjI6MSw0Mzc6MX0sWiRjKTt2YXIgViRjLFckYyxYJGM7dmFyIEpfPW5kYihOcmUsJ1NQT3JFUGhhc2VzJyw0MzcsQ0ksXyRjLCQkYyk7dmFyIGFfYztiY2IoMTI1NSwxLHt9LGRfYyk7dmFyIExfPW1kYihOcmUsJ1Nocmlua1RyZWUnLDEyNTUpO2JjYigxMTM1LDIwOSxNbGUsZV9jKTtfLlplPWZ1bmN0aW9uIGZfYyhhLGIpe3ZhciBjLGQsZSxmLGc7aWYoaWtkKGEsKGQwYygpLGMwYykpKXtnPUdEKGhrZChhLGMwYykpO2U9aDRjKG40YygpLGcpO2lmKGUpe2Y9QkQoaGdkKGUuZiksMjA5KTtmLlplKGEsVWRkKGIsMSkpfX1kPW5ldyBGJGM7Yz16JGMoZCxhKTtjX2ModGhpcy5hLGMsVWRkKGIsMSkpO3kkYyhkLGMpfTt2YXIgS189bWRiKE5yZSwnU2hyaW5rVHJlZUxheW91dFByb3ZpZGVyJywxMTM1KTtiY2IoMzAwLDEzNCx7MzoxLDMwMDoxLDk0OjEsMTM0OjF9LGdfYyk7Xy5jPWZhbHNlO3ZhciBNXz1tZGIoJ29yZy5lY2xpcHNlLmVsay5hbGcuc3BvcmUuZ3JhcGgnLCdHcmFwaCcsMzAwKTtiY2IoNDgyLDIyLHszOjEsMzU6MSwyMjoxLDQ4MjoxLDI0NjoxLDIzNDoxfSxrX2MpO18uS2Y9ZnVuY3Rpb24gbV9jKCl7cmV0dXJuIGpfYyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBsX2MoKXtyZXR1cm4gal9jKHRoaXMpfTt2YXIgaF9jO3ZhciBOXz1uZGIoT3JlLFNsZSw0ODIsQ0ksb19jLG5fYyk7dmFyIHBfYztiY2IoNTUxLDIyLHszOjEsMzU6MSwyMjoxLDU1MToxLDI0NjoxLDIzNDoxfSx0X2MpO18uS2Y9ZnVuY3Rpb24gdl9jKCl7cmV0dXJuIG5ldyBJMWN9O18uWGY9ZnVuY3Rpb24gdV9jKCl7cmV0dXJuIG5ldyBJMWN9O3ZhciByX2M7dmFyIE9fPW5kYihPcmUsJ092ZXJsYXBSZW1vdmFsU3RyYXRlZ3knLDU1MSxDSSx4X2Msd19jKTt2YXIgeV9jO2JjYig0MzAsMjIsezM6MSwzNToxLDIyOjEsNDMwOjF9LERfYyk7dmFyIEFfYyxCX2M7dmFyIFBfPW5kYihPcmUsJ1Jvb3RTZWxlY3Rpb24nLDQzMCxDSSxGX2MsRV9jKTt2YXIgR19jO2JjYigzMTYsMjIsezM6MSwzNToxLDIyOjEsMzE2OjF9LE9fYyk7dmFyIElfYyxKX2MsS19jLExfYyxNX2M7dmFyIFFfPW5kYihPcmUsJ1NwYW5uaW5nVHJlZUNvc3RGdW5jdGlvbicsMzE2LENJLFFfYyxQX2MpO3ZhciBSX2M7YmNiKDEwMDIsMSxhbGUsZjBjKTtfLlFlPWZ1bmN0aW9uIGcwYyhhKXtlMGMoYSl9O3ZhciBUX2MsVV9jLFZfYyxXX2MsWF9jLFlfYyxaX2MsJF9jLF9fYyxhMGMsYjBjLGMwYzt2YXIgU189bWRiKE9yZSwnU3BvcmVDb21wYWN0aW9uT3B0aW9ucycsMTAwMik7YmNiKDEwMDMsMSx7fSxoMGMpO18uJGU9ZnVuY3Rpb24gaTBjKCl7dmFyIGE7cmV0dXJuIGE9bmV3IGVfYyxhfTtfLl9lPWZ1bmN0aW9uIGowYyhhKXt9O3ZhciBSXz1tZGIoT3JlLCdTcG9yZUNvbXBhY3Rpb25PcHRpb25zL1Nwb3JlQ29tcGFjdGlvbkZhY3RvcnknLDEwMDMpO2JjYig4NTUsMSxhbGUsQjBjKTtfLlFlPWZ1bmN0aW9uIEMwYyhhKXt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFFyZSksJycpLCdVbmRlcmx5aW5nIExheW91dCBBbGdvcml0aG0nKSwnQSBsYXlvdXQgYWxnb3JpdGhtIHRoYXQgaXMgYXBwbGllZCB0byB0aGUgZ3JhcGggYmVmb3JlIGl0IGlzIGNvbXBhY3RlZC4gSWYgdGhpcyBpcyBudWxsLCBub3RoaW5nIGlzIGFwcGxpZWQgYmVmb3JlIGNvbXBhY3Rpb24uJyksKF81YygpLFo1YykpLFpJKSxwcWIoKE41YygpLEw1YykpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFZyZSksJ3N0cnVjdHVyZScpLCdTdHJ1Y3R1cmUgRXh0cmFjdGlvbiBTdHJhdGVneScpLCdUaGlzIG9wdGlvbiBkZWZpbmVzIHdoYXQga2luZCBvZiB0cmlhbmd1bGF0aW9uIG9yIG90aGVyIHBhcnRpdGlvbmluZyBvZiB0aGUgcGxhbmUgaXMgYXBwbGllZCB0byB0aGUgdmVydGljZXMuJykseTBjKSxWNWMpLFdfKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxScmUpLCRyZSksJ1RyZWUgQ29uc3RydWN0aW9uIFN0cmF0ZWd5JyksJ1doZXRoZXIgYSBtaW5pbXVtIHNwYW5uaW5nIHRyZWUgb3IgYSBtYXhpbXVtIHNwYW5uaW5nIHRyZWUgc2hvdWxkIGJlIGNvbnN0cnVjdGVkLicpLHcwYyksVjVjKSxYXykscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsU3JlKSwkcmUpLCdDb3N0IEZ1bmN0aW9uIGZvciBTcGFubmluZyBUcmVlJyksJ1RoZSBjb3N0IGZ1bmN0aW9uIGlzIHVzZWQgaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBzcGFubmluZyB0cmVlLicpLHUwYyksVjVjKSxRXykscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsVHJlKSwkcmUpLCdSb290IG5vZGUgZm9yIHNwYW5uaW5nIHRyZWUgY29uc3RydWN0aW9uJyksJ1RoZSBpZGVudGlmaWVyIG9mIHRoZSBub2RlIHRoYXQgaXMgcHJlZmVycmVkIGFzIHRoZSByb290IG9mIHRoZSBzcGFubmluZyB0cmVlLiBJZiB0aGlzIGlzIG51bGwsIHRoZSBmaXJzdCBub2RlIGlzIGNob3Nlbi4nKSxudWxsKSxaNWMpLFpJKSxwcWIoTDVjKSkpKTtvNGMoYSxUcmUsVXJlLHEwYyk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsVXJlKSwkcmUpLCdSb290IHNlbGVjdGlvbiBmb3Igc3Bhbm5pbmcgdHJlZScpLCdUaGlzIHNldHMgdGhlIG1ldGhvZCB1c2VkIHRvIHNlbGVjdCBhIHJvb3Qgbm9kZSBmb3IgdGhlIGNvbnN0cnVjdGlvbiBvZiBhIHNwYW5uaW5nIHRyZWUnKSxzMGMpLFY1YyksUF8pLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFdyZSksQnBlKSwnQ29tcGFjdGlvbiBTdHJhdGVneScpLCdUaGlzIG9wdGlvbiBkZWZpbmVzIGhvdyB0aGUgY29tcGFjdGlvbiBpcyBhcHBsaWVkLicpLGwwYyksVjVjKSxOXykscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsWHJlKSxCcGUpLCdPcnRob2dvbmFsIENvbXBhY3Rpb24nKSwnUmVzdHJpY3RzIHRoZSB0cmFuc2xhdGlvbiBvZiBub2RlcyB0byBvcnRob2dvbmFsIGRpcmVjdGlvbnMgaW4gdGhlIGNvbXBhY3Rpb24gcGhhc2UuJyksKEJjYigpLGZhbHNlKSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsWXJlKSxfcmUpLCdVcHBlciBsaW1pdCBmb3IgaXRlcmF0aW9ucyBvZiBvdmVybGFwIHJlbW92YWwnKSxudWxsKSxtZWIoNjQpKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxacmUpLF9yZSksJ1doZXRoZXIgdG8gcnVuIGEgc3VwcGxlbWVudGFyeSBzY2FubGluZSBvdmVybGFwIGNoZWNrLicpLG51bGwpLHRydWUpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO0swYygobmV3IEwwYyxhKSk7ZTBjKChuZXcgZjBjLGEpKX07dmFyIGswYyxsMGMsbTBjLG4wYyxvMGMscDBjLHEwYyxyMGMsczBjLHQwYyx1MGMsdjBjLHcwYyx4MGMseTBjLHowYzt2YXIgVF89bWRiKE9yZSwnU3BvcmVNZXRhRGF0YVByb3ZpZGVyJyw4NTUpO2JjYihfaWUsMSxhbGUsTDBjKTtfLlFlPWZ1bmN0aW9uIE0wYyhhKXtLMGMoYSl9O3ZhciBEMGMsRTBjLEYwYyxHMGMsSDBjLEkwYzt2YXIgVl89bWRiKE9yZSwnU3BvcmVPdmVybGFwUmVtb3ZhbE9wdGlvbnMnLF9pZSk7YmNiKDEwMDEsMSx7fSxOMGMpO18uJGU9ZnVuY3Rpb24gTzBjKCl7dmFyIGE7cmV0dXJuIGE9bmV3IFEkYyxhfTtfLl9lPWZ1bmN0aW9uIFAwYyhhKXt9O3ZhciBVXz1tZGIoT3JlLCdTcG9yZU92ZXJsYXBSZW1vdmFsT3B0aW9ucy9TcG9yZU92ZXJsYXBGYWN0b3J5JywxMDAxKTtiY2IoNTMwLDIyLHszOjEsMzU6MSwyMjoxLDUzMDoxLDI0NjoxLDIzNDoxfSxUMGMpO18uS2Y9ZnVuY3Rpb24gVjBjKCl7cmV0dXJuIFMwYyh0aGlzKX07Xy5YZj1mdW5jdGlvbiBVMGMoKXtyZXR1cm4gUzBjKHRoaXMpfTt2YXIgUTBjO3ZhciBXXz1uZGIoT3JlLCdTdHJ1Y3R1cmVFeHRyYWN0aW9uU3RyYXRlZ3knLDUzMCxDSSxYMGMsVzBjKTt2YXIgWTBjO2JjYig0MjksMjIsezM6MSwzNToxLDIyOjEsNDI5OjEsMjQ2OjEsMjM0OjF9LGMxYyk7Xy5LZj1mdW5jdGlvbiBlMWMoKXtyZXR1cm4gYjFjKHRoaXMpfTtfLlhmPWZ1bmN0aW9uIGQxYygpe3JldHVybiBiMWModGhpcyl9O3ZhciAkMGMsXzBjO3ZhciBYXz1uZGIoT3JlLCdUcmVlQ29uc3RydWN0aW9uU3RyYXRlZ3knLDQyOSxDSSxnMWMsZjFjKTt2YXIgaDFjO2JjYigxNDQzLDEsQnFlLGsxYyk7Xy5ZZj1mdW5jdGlvbiBsMWMoYSl7cmV0dXJuIEJEKGEsMzAwKSxuZXcgajNjfTtfLnBmPWZ1bmN0aW9uIG0xYyhhLGIpe2oxYyhCRChhLDMwMCksYil9O3ZhciBaXz1tZGIoYnNlLCdEZWxhdW5heVRyaWFuZ3VsYXRpb25QaGFzZScsMTQ0Myk7YmNiKDE0NDQsMSxxaWUsbjFjKTtfLnRkPWZ1bmN0aW9uIG8xYyhhKXtFa2IodGhpcy5hLEJEKGEsNjUpLmEpfTt2YXIgWV89bWRiKGJzZSwnRGVsYXVuYXlUcmlhbmd1bGF0aW9uUGhhc2UvbGFtYmRhJDAkVHlwZScsMTQ0NCk7YmNiKDc4MywxLEJxZSxzMWMpO18uWWY9ZnVuY3Rpb24gdDFjKGEpe3JldHVybiBCRChhLDMwMCksbmV3IGozY307Xy5wZj1mdW5jdGlvbiB1MWMoYSxiKXt0aGlzLm5nKEJEKGEsMzAwKSxiKX07Xy5uZz1mdW5jdGlvbiB2MWMoYSxiKXt2YXIgYyxkLGU7T2RkKGIsJ01pbmltdW0gc3Bhbm5pbmcgdHJlZSBjb25zdHJ1Y3Rpb24nLDEpO2EuZD8oZD1hLmQuYSk6KGQ9QkQoSWtiKGEuaSwwKSw2NSkuYSk7Q2NiKEREKHZOYihhLChYTmIoKSxWTmIpKSkpPyhlPVVDYihhLmUsZCwoYz1hLmIsYykpKTooZT1VQ2IoYS5lLGQsYS5iKSk7cTFjKHRoaXMsZSxhKTtRZGQoYil9O3ZhciBiMD1tZGIoY3NlLCdNaW5TVFBoYXNlJyw3ODMpO2JjYigxNDQ2LDc4MyxCcWUsdzFjKTtfLm5nPWZ1bmN0aW9uIHkxYyhhLGIpe3ZhciBjLGQsZSxmO09kZChiLCdNYXhpbXVtIHNwYW5uaW5nIHRyZWUgY29uc3RydWN0aW9uJywxKTtjPW5ldyB6MWMoYSk7YS5kPyhlPWEuZC5jKTooZT1CRChJa2IoYS5pLDApLDY1KS5jKTtDY2IoREQodk5iKGEsKFhOYigpLFZOYikpKSk/KGY9VUNiKGEuZSxlLChkPWMsZCkpKTooZj1VQ2IoYS5lLGUsYykpO3ExYyh0aGlzLGYsYSk7UWRkKGIpfTt2YXIgX189bWRiKGNzZSwnTWF4U1RQaGFzZScsMTQ0Nik7YmNiKDE0NDcsMSx7fSx6MWMpO18uSmU9ZnVuY3Rpb24gQTFjKGEpe3JldHVybiB4MWModGhpcy5hLGEpfTt2YXIgJF89bWRiKGNzZSwnTWF4U1RQaGFzZS9sYW1iZGEkMCRUeXBlJywxNDQ3KTtiY2IoMTQ0NSwxLHFpZSxCMWMpO18udGQ9ZnVuY3Rpb24gQzFjKGEpe3IxYyh0aGlzLmEsQkQoYSw2NSkpfTt2YXIgYTA9bWRiKGNzZSwnTWluU1RQaGFzZS9sYW1iZGEkMCRUeXBlJywxNDQ1KTtiY2IoNzg1LDEsQnFlLEkxYyk7Xy5ZZj1mdW5jdGlvbiBKMWMoYSl7cmV0dXJuIEJEKGEsMzAwKSxuZXcgajNjfTtfLnBmPWZ1bmN0aW9uIEsxYyhhLGIpe0gxYyh0aGlzLEJEKGEsMzAwKSxiKX07Xy5hPWZhbHNlO3ZhciBkMD1tZGIoZHNlLCdHcm93VHJlZVBoYXNlJyw3ODUpO2JjYig3ODYsMSxxaWUsTDFjKTtfLnRkPWZ1bmN0aW9uIE0xYyhhKXtHMWModGhpcy5hLHRoaXMuYix0aGlzLmMsQkQoYSwyMjEpKX07dmFyIGMwPW1kYihkc2UsJ0dyb3dUcmVlUGhhc2UvbGFtYmRhJDAkVHlwZScsNzg2KTtiY2IoMTQ0OCwxLEJxZSxRMWMpO18uWWY9ZnVuY3Rpb24gUjFjKGEpe3JldHVybiBCRChhLDMwMCksbmV3IGozY307Xy5wZj1mdW5jdGlvbiBTMWMoYSxiKXtQMWModGhpcyxCRChhLDMwMCksYil9O3ZhciBmMD1tZGIoZHNlLCdTaHJpbmtUcmVlQ29tcGFjdGlvblBoYXNlJywxNDQ4KTtiY2IoNzg0LDEscWllLFQxYyk7Xy50ZD1mdW5jdGlvbiBVMWMoYSl7TzFjKHRoaXMuYSx0aGlzLmIsdGhpcy5jLEJEKGEsMjIxKSl9O3ZhciBlMD1tZGIoZHNlLCdTaHJpbmtUcmVlQ29tcGFjdGlvblBoYXNlL2xhbWJkYSQwJFR5cGUnLDc4NCk7dmFyIGcyPW9kYih5cWUsJ0lHcmFwaEVsZW1lbnRWaXNpdG9yJyk7YmNiKDg2MCwxLHs1Mjc6MX0sYjJjKTtfLm9nPWZ1bmN0aW9uIGUyYyhhKXt2YXIgYjtiPWEyYyh0aGlzLGEpO3ROYihiLEJEKE9oYih0aGlzLmIsYSksOTQpKTskMWModGhpcyxhLGIpfTt2YXIgVjFjLFcxYyxYMWM7dmFyIG0wPW1kYihObGUsJ0xheW91dENvbmZpZ3VyYXRvcicsODYwKTt2YXIgaDA9b2RiKE5sZSwnTGF5b3V0Q29uZmlndXJhdG9yL0lQcm9wZXJ0eUhvbGRlck9wdGlvbkZpbHRlcicpO2JjYig5MzIsMSx7MTkzMzoxfSxmMmMpO18ucGc9ZnVuY3Rpb24gZzJjKGEsYil7cmV0dXJuIFkxYygpLCFhLlhlKGIpfTt2YXIgaTA9bWRiKE5sZSwnTGF5b3V0Q29uZmlndXJhdG9yL2xhbWJkYSQwJFR5cGUnLDkzMik7YmNiKDkzMywxLHsxOTMzOjF9LGkyYyk7Xy5wZz1mdW5jdGlvbiBqMmMoYSxiKXtyZXR1cm4gaDJjKGEsYil9O3ZhciBqMD1tZGIoTmxlLCdMYXlvdXRDb25maWd1cmF0b3IvbGFtYmRhJDEkVHlwZScsOTMzKTtiY2IoOTMxLDEsezgzMToxfSxrMmMpO18ucWc9ZnVuY3Rpb24gbDJjKGEsYil7cmV0dXJuIFkxYygpLCFhLlhlKGIpfTt2YXIgazA9bWRiKE5sZSwnTGF5b3V0Q29uZmlndXJhdG9yL2xhbWJkYSQyJFR5cGUnLDkzMSk7YmNiKDkzNCwxLE9pZSxtMmMpO18uTWI9ZnVuY3Rpb24gbjJjKGEpe3JldHVybiBkMmModGhpcy5hLHRoaXMuYixCRChhLDE5MzMpKX07dmFyIGwwPW1kYihObGUsJ0xheW91dENvbmZpZ3VyYXRvci9sYW1iZGEkMyRUeXBlJyw5MzQpO2JjYig4NTgsMSx7fSx3MmMpO3ZhciBuMD1tZGIoTmxlLCdSZWN1cnNpdmVHcmFwaExheW91dEVuZ2luZScsODU4KTtiY2IoMjk2LDYwLFRpZSx4MmMseTJjKTt2YXIgbzA9bWRiKE5sZSwnVW5zdXBwb3J0ZWRDb25maWd1cmF0aW9uRXhjZXB0aW9uJywyOTYpO2JjYig0NTMsNjAsVGllLHoyYyk7dmFyIHAwPW1kYihObGUsJ1Vuc3VwcG9ydGVkR3JhcGhFeGNlcHRpb24nLDQ1Myk7YmNiKDc1NCwxLHt9KTt2YXIgSzE9bWRiKHlxZSwnQWJzdHJhY3RSYW5kb21MaXN0QWNjZXNzb3InLDc1NCk7YmNiKDUwMCw3NTQse30sTDJjKTtfLnJnPWZ1bmN0aW9uIE4yYygpe3JldHVybiBudWxsfTtfLmQ9dHJ1ZTtfLmU9dHJ1ZTtfLmY9MDt2YXIgdjA9bWRiKGZzZSwnQWxnb3JpdGhtQXNzZW1ibGVyJyw1MDApO2JjYigxMjM2LDEsT2llLE8yYyk7Xy5NYj1mdW5jdGlvbiBQMmMoYSl7cmV0dXJuICEhQkQoYSwxMjMpfTt2YXIgcTA9bWRiKGZzZSwnQWxnb3JpdGhtQXNzZW1ibGVyL2xhbWJkYSQwJFR5cGUnLDEyMzYpO2JjYigxMjM3LDEse30sUTJjKTtfLktiPWZ1bmN0aW9uIFIyYyhhKXtyZXR1cm4gTTJjKHRoaXMuYSxCRChhLDEyMykpfTt2YXIgcjA9bWRiKGZzZSwnQWxnb3JpdGhtQXNzZW1ibGVyL2xhbWJkYSQxJFR5cGUnLDEyMzcpO2JjYigxMjM4LDEsT2llLFMyYyk7Xy5NYj1mdW5jdGlvbiBUMmMoYSl7cmV0dXJuICEhQkQoYSw4MCl9O3ZhciBzMD1tZGIoZnNlLCdBbGdvcml0aG1Bc3NlbWJsZXIvbGFtYmRhJDIkVHlwZScsMTIzOCk7YmNiKDEyMzksMSxxaWUsVTJjKTtfLnRkPWZ1bmN0aW9uIFYyYyhhKXtkM2ModGhpcy5hLEJEKGEsODApKX07dmFyIHQwPW1kYihmc2UsJ0FsZ29yaXRobUFzc2VtYmxlci9sYW1iZGEkMyRUeXBlJywxMjM5KTtiY2IoMTI0MCwxLHFpZSxXMmMpO18udGQ9ZnVuY3Rpb24gWDJjKGEpe0cyYyh0aGlzLmEsdGhpcy5iLEJEKGEsMjM0KSl9O3ZhciB1MD1tZGIoZnNlLCdBbGdvcml0aG1Bc3NlbWJsZXIvbGFtYmRhJDQkVHlwZScsMTI0MCk7YmNiKDEzNTUsMSxEa2UsWjJjKTtfLnVlPWZ1bmN0aW9uICQyYyhhLGIpe3JldHVybiBZMmMoQkQoYSwyMzQpLEJEKGIsMjM0KSl9O18uRmI9ZnVuY3Rpb24gXzJjKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBhM2MoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIHcwPW1kYihmc2UsJ0VudW1CYXNlZEZhY3RvcnlDb21wYXJhdG9yJywxMzU1KTtiY2IoODAsNzU0LHs4MDoxfSxqM2MpO18ucmc9ZnVuY3Rpb24gbDNjKCl7cmV0dXJuIG5ldyBUcWJ9O18uYT0wO3ZhciB4MD1tZGIoZnNlLCdMYXlvdXRQcm9jZXNzb3JDb25maWd1cmF0aW9uJyw4MCk7YmNiKDEwMTMsMSx7NTI3OjF9LHEzYyk7Xy5vZz1mdW5jdGlvbiB1M2MoYSl7c3RiKG4zYyxuZXcgejNjKGEpKX07dmFyIG0zYyxuM2MsbzNjO3ZhciBCMD1tZGIoWGtlLCdEZXByZWNhdGVkTGF5b3V0T3B0aW9uUmVwbGFjZXInLDEwMTMpO2JjYigxMDE0LDEscWllLHYzYyk7Xy50ZD1mdW5jdGlvbiB3M2MoYSl7cjNjKEJEKGEsMTYwKSl9O3ZhciB5MD1tZGIoWGtlLCdEZXByZWNhdGVkTGF5b3V0T3B0aW9uUmVwbGFjZXIvbGFtYmRhJDAkVHlwZScsMTAxNCk7YmNiKDEwMTUsMSxxaWUseDNjKTtfLnRkPWZ1bmN0aW9uIHkzYyhhKXtzM2MoQkQoYSwxNjApKX07dmFyIHowPW1kYihYa2UsJ0RlcHJlY2F0ZWRMYXlvdXRPcHRpb25SZXBsYWNlci9sYW1iZGEkMSRUeXBlJywxMDE1KTtiY2IoMTAxNiwxLHt9LHozYyk7Xy5PZD1mdW5jdGlvbiBBM2MoYSxiKXt0M2ModGhpcy5hLEJEKGEsMTQ2KSxCRChiLDM4KSl9O3ZhciBBMD1tZGIoWGtlLCdEZXByZWNhdGVkTGF5b3V0T3B0aW9uUmVwbGFjZXIvbGFtYmRhJDIkVHlwZScsMTAxNik7YmNiKDE0OSwxLHs2ODY6MSwxNDk6MX0sRTNjKTtfLkZiPWZ1bmN0aW9uIEYzYyhhKXtyZXR1cm4gQzNjKHRoaXMsYSl9O18uc2c9ZnVuY3Rpb24gRzNjKCl7cmV0dXJuIHRoaXMuYn07Xy50Zz1mdW5jdGlvbiBIM2MoKXtyZXR1cm4gdGhpcy5jfTtfLm5lPWZ1bmN0aW9uIEkzYygpe3JldHVybiB0aGlzLmV9O18uSGI9ZnVuY3Rpb24gSjNjKCl7cmV0dXJuIExDYih0aGlzLmMpfTtfLkliPWZ1bmN0aW9uIEszYygpe3JldHVybiAnTGF5b3V0IEFsZ29yaXRobTogJyt0aGlzLmN9O3ZhciBFMD1tZGIoWGtlLCdMYXlvdXRBbGdvcml0aG1EYXRhJywxNDkpO2JjYigyNjMsMSx7fSxSM2MpO3ZhciBEMD1tZGIoWGtlLCdMYXlvdXRBbGdvcml0aG1EYXRhL0J1aWxkZXInLDI2Myk7YmNiKDEwMTcsMSx7NTI3OjF9LFUzYyk7Xy5vZz1mdW5jdGlvbiBWM2MoYSl7SkQoYSwyMzkpJiYhQ2NiKEREKGEuV2UoKFk5YygpLGQ5YykpKSkmJlMzYyhCRChhLDMzKSl9O3ZhciBGMD1tZGIoWGtlLCdMYXlvdXRBbGdvcml0aG1SZXNvbHZlcicsMTAxNyk7YmNiKDIyOSwxLHs2ODY6MSwyMjk6MX0sVzNjKTtfLkZiPWZ1bmN0aW9uIFgzYyhhKXtpZihKRChhLDIyOSkpe3JldHVybiBkZmIodGhpcy5iLEJEKGEsMjI5KS5iKX1yZXR1cm4gZmFsc2V9O18uc2c9ZnVuY3Rpb24gWTNjKCl7cmV0dXJuIHRoaXMuYX07Xy50Zz1mdW5jdGlvbiBaM2MoKXtyZXR1cm4gdGhpcy5ifTtfLm5lPWZ1bmN0aW9uICQzYygpe3JldHVybiB0aGlzLmR9O18uSGI9ZnVuY3Rpb24gXzNjKCl7cmV0dXJuIExDYih0aGlzLmIpfTtfLkliPWZ1bmN0aW9uIGE0Yygpe3JldHVybiAnTGF5b3V0IFR5cGU6ICcrdGhpcy5ifTt2YXIgSDA9bWRiKFhrZSwnTGF5b3V0Q2F0ZWdvcnlEYXRhJywyMjkpO2JjYigzNDQsMSx7fSxlNGMpO3ZhciBHMD1tZGIoWGtlLCdMYXlvdXRDYXRlZ29yeURhdGEvQnVpbGRlcicsMzQ0KTtiY2IoODY3LDEse30sbTRjKTt2YXIgZjRjO3ZhciBjMT1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UnLDg2Nyk7YmNiKDg2OCwxLHt9LHY0Yyk7dmFyIEowPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9SZWdpc3RyeScsODY4KTtiY2IoNDc4LDEsezQ3ODoxfSx3NGMpO3ZhciBJMD1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UvUmVnaXN0cnkvVHJpcGxlJyw0NzgpO2JjYig4NjksMSxnc2UseDRjKTtfLnVnPWZ1bmN0aW9uIHk0Yygpe3JldHVybiBuZXcgZDdjfTt2YXIgSzA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQwJFR5cGUnLDg2OSk7YmNiKDg3MCwxLGhzZSx6NGMpO18udmc9ZnVuY3Rpb24gQTRjKGEpe3JldHVybiBSNmMoQkQoYSw4KSl9O3ZhciBMMD1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UvbGFtYmRhJDEkVHlwZScsODcwKTtiY2IoODc5LDEsZ3NlLEI0Yyk7Xy51Zz1mdW5jdGlvbiBDNGMoKXtyZXR1cm4gbmV3IFJrYn07dmFyIE0wPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9sYW1iZGEkMTAkVHlwZScsODc5KTtiY2IoODgwLDEsaHNlLEQ0Yyk7Xy52Zz1mdW5jdGlvbiBFNGMoYSl7cmV0dXJuIG5ldyBUa2IoQkQoYSwxMikpfTt2YXIgTjA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxMSRUeXBlJyw4ODApO2JjYig4ODEsMSxnc2UsRjRjKTtfLnVnPWZ1bmN0aW9uIEc0Yygpe3JldHVybiBuZXcgUHNifTt2YXIgTzA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxMiRUeXBlJyw4ODEpO2JjYig4ODIsMSxoc2UsSDRjKTtfLnZnPWZ1bmN0aW9uIEk0YyhhKXtyZXR1cm4gUnUoQkQoYSw2OCkpfTt2YXIgUDA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxMyRUeXBlJyw4ODIpO2JjYig4ODMsMSxnc2UsSjRjKTtfLnVnPWZ1bmN0aW9uIEs0Yygpe3JldHVybiBuZXcgVHFifTt2YXIgUTA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxNCRUeXBlJyw4ODMpO2JjYig4ODQsMSxoc2UsTDRjKTtfLnZnPWZ1bmN0aW9uIE00YyhhKXtyZXR1cm4gRHgoQkQoYSw1MykpfTt2YXIgUjA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxNSRUeXBlJyw4ODQpO2JjYig4ODUsMSxnc2UsTjRjKTtfLnVnPWZ1bmN0aW9uIE80Yygpe3JldHVybiBuZXcgenNifTt2YXIgUzA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxNiRUeXBlJyw4ODUpO2JjYig4ODYsMSxoc2UsUDRjKTtfLnZnPWZ1bmN0aW9uIFE0YyhhKXtyZXR1cm4gR3goQkQoYSw1MykpfTt2YXIgVDA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxNyRUeXBlJyw4ODYpO2JjYig4ODcsMSxnc2UsUjRjKTtfLnVnPWZ1bmN0aW9uIFM0Yygpe3JldHVybiBuZXcgR3hifTt2YXIgVTA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQxOCRUeXBlJyw4ODcpO2JjYig4ODgsMSxoc2UsVDRjKTtfLnZnPWZ1bmN0aW9uIFU0YyhhKXtyZXR1cm4gSHgoQkQoYSwyMDgpKX07dmFyIFYwPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9sYW1iZGEkMTkkVHlwZScsODg4KTtiY2IoODcxLDEsZ3NlLFY0Yyk7Xy51Zz1mdW5jdGlvbiBXNGMoKXtyZXR1cm4gbmV3IHM3Y307dmFyIFcwPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9sYW1iZGEkMiRUeXBlJyw4NzEpO2JjYig4NzIsMSxoc2UsWDRjKTtfLnZnPWZ1bmN0aW9uIFk0YyhhKXtyZXR1cm4gbmV3IHQ3YyhCRChhLDc0KSl9O3ZhciBYMD1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UvbGFtYmRhJDMkVHlwZScsODcyKTtiY2IoODczLDEsZ3NlLFo0Yyk7Xy51Zz1mdW5jdGlvbiAkNGMoKXtyZXR1cm4gbmV3IEhfYn07dmFyIFkwPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9sYW1iZGEkNCRUeXBlJyw4NzMpO2JjYig4NzQsMSxoc2UsXzRjKTtfLnZnPWZ1bmN0aW9uIGE1YyhhKXtyZXR1cm4gbmV3IEtfYihCRChhLDE0MikpfTt2YXIgWjA9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQ1JFR5cGUnLDg3NCk7YmNiKDg3NSwxLGdzZSxiNWMpO18udWc9ZnVuY3Rpb24gYzVjKCl7cmV0dXJuIG5ldyBwMGJ9O3ZhciAkMD1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UvbGFtYmRhJDYkVHlwZScsODc1KTtiY2IoODc2LDEsaHNlLGQ1Yyk7Xy52Zz1mdW5jdGlvbiBlNWMoYSl7cmV0dXJuIG5ldyByMGIoQkQoYSwxMTYpKX07dmFyIF8wPW1kYihYa2UsJ0xheW91dE1ldGFEYXRhU2VydmljZS9sYW1iZGEkNyRUeXBlJyw4NzYpO2JjYig4NzcsMSxnc2UsZjVjKTtfLnVnPWZ1bmN0aW9uIGc1Yygpe3JldHVybiBuZXcgX2ZkfTt2YXIgYTE9bWRiKFhrZSwnTGF5b3V0TWV0YURhdGFTZXJ2aWNlL2xhbWJkYSQ4JFR5cGUnLDg3Nyk7YmNiKDg3OCwxLGhzZSxoNWMpO18udmc9ZnVuY3Rpb24gaTVjKGEpe3JldHVybiBuZXcgYWdkKEJEKGEsMzczKSl9O3ZhciBiMT1tZGIoWGtlLCdMYXlvdXRNZXRhRGF0YVNlcnZpY2UvbGFtYmRhJDkkVHlwZScsODc4KTt2YXIgUTM9b2RiKEhsZSwnSVByb3BlcnR5Jyk7YmNiKDIzLDEsezM1OjEsNjg2OjEsMjM6MSwxNDY6MX0scDVjKTtfLndkPWZ1bmN0aW9uIHE1YyhhKXtyZXR1cm4gazVjKHRoaXMsQkQoYSwxNDYpKX07Xy5GYj1mdW5jdGlvbiByNWMoYSl7cmV0dXJuIEpEKGEsMjMpP2RmYih0aGlzLmYsQkQoYSwyMykuZik6SkQoYSwxNDYpJiZkZmIodGhpcy5mLEJEKGEsMTQ2KS50ZygpKX07Xy53Zz1mdW5jdGlvbiBzNWMoKXt2YXIgYTtpZihKRCh0aGlzLmIsNCkpe2E9ZnZkKHRoaXMuYik7aWYoYT09bnVsbCl7dGhyb3cgdmJiKG5ldyBaZGIobXNlK3RoaXMuZitcIicuIFwiK1wiTWFrZSBzdXJlIGl0J3MgdHlwZSBpcyByZWdpc3RlcmVkIHdpdGggdGhlIFwiKyhmZGIoWTMpLFkzLmspK2pzZSkpfXJldHVybiBhfWVsc2V7cmV0dXJuIHRoaXMuYn19O18uc2c9ZnVuY3Rpb24gdDVjKCl7cmV0dXJuIHRoaXMuZH07Xy50Zz1mdW5jdGlvbiB1NWMoKXtyZXR1cm4gdGhpcy5mfTtfLm5lPWZ1bmN0aW9uIHY1Yygpe3JldHVybiB0aGlzLml9O18uSGI9ZnVuY3Rpb24gdzVjKCl7cmV0dXJuIExDYih0aGlzLmYpfTtfLkliPWZ1bmN0aW9uIHg1Yygpe3JldHVybiAnTGF5b3V0IE9wdGlvbjogJyt0aGlzLmZ9O3ZhciBnMT1tZGIoWGtlLCdMYXlvdXRPcHRpb25EYXRhJywyMyk7YmNiKDI0LDEse30sSDVjKTt2YXIgZDE9bWRiKFhrZSwnTGF5b3V0T3B0aW9uRGF0YS9CdWlsZGVyJywyNCk7YmNiKDE3NSwyMix7MzoxLDM1OjEsMjI6MSwxNzU6MX0sTzVjKTt2YXIgSTVjLEo1YyxLNWMsTDVjLE01Yzt2YXIgZTE9bmRiKFhrZSwnTGF5b3V0T3B0aW9uRGF0YS9UYXJnZXQnLDE3NSxDSSxRNWMsUDVjKTt2YXIgUjVjO2JjYigyNzcsMjIsezM6MSwzNToxLDIyOjEsMjc3OjF9LGE2Yyk7dmFyIFQ1YyxVNWMsVjVjLFc1YyxYNWMsWTVjLFo1YywkNWM7dmFyIGYxPW5kYihYa2UsJ0xheW91dE9wdGlvbkRhdGEvVHlwZScsMjc3LENJLGM2YyxiNmMpO3ZhciBkNmM7dmFyIGY2Yzt2YXIgaDZjO2JjYigxMTAsMSx7MTEwOjF9LEk2YyxKNmMsSzZjKTtfLkZiPWZ1bmN0aW9uIEw2YyhhKXt2YXIgYjtpZihhPT1udWxsfHwhSkQoYSwxMTApKXtyZXR1cm4gZmFsc2V9Yj1CRChhLDExMCk7cmV0dXJuIHd0Yih0aGlzLmMsYi5jKSYmd3RiKHRoaXMuZCxiLmQpJiZ3dGIodGhpcy5iLGIuYikmJnd0Yih0aGlzLmEsYi5hKX07Xy5IYj1mdW5jdGlvbiBNNmMoKXtyZXR1cm4gSGxiKE9DKEdDKFNJLDEpLFVoZSwxLDUsW3RoaXMuYyx0aGlzLmQsdGhpcy5iLHRoaXMuYV0pKX07Xy5JYj1mdW5jdGlvbiBONmMoKXtyZXR1cm4gJ1JlY3RbeD0nK3RoaXMuYysnLHk9Jyt0aGlzLmQrJyx3PScrdGhpcy5iKycsaD0nK3RoaXMuYSsnXSd9O18uYT0wO18uYj0wO18uYz0wO18uZD0wO3ZhciBrMT1tZGIocG5lLCdFbGtSZWN0YW5nbGUnLDExMCk7YmNiKDgsMSx7MzoxLDQ6MSw4OjEsNDE0OjF9LGQ3YyxlN2MsZjdjLGc3Yyk7Xy5GYj1mdW5jdGlvbiBoN2MoYSl7cmV0dXJuIFQ2Yyh0aGlzLGEpfTtfLkhiPWZ1bmN0aW9uIGk3Yygpe3JldHVybiBIZGIodGhpcy5hKStqZWIoSGRiKHRoaXMuYikpfTtfLkpmPWZ1bmN0aW9uIGs3YyhiKXt2YXIgYyxkLGUsZjtlPTA7d2hpbGUoZTxiLmxlbmd0aCYmajdjKChCQ2IoZSxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGUpKSxtbmUpKXsrK2V9Yz1iLmxlbmd0aDt3aGlsZShjPjAmJmo3YygoQkNiKGMtMSxiLmxlbmd0aCksYi5jaGFyQ29kZUF0KGMtMSkpLG5uZSkpey0tY31pZihlPj1jKXt0aHJvdyB2YmIobmV3IFdkYignVGhlIGdpdmVuIHN0cmluZyBkb2VzIG5vdCBjb250YWluIGFueSBudW1iZXJzLicpKX1mPW1mYihiLnN1YnN0cihlLGMtZSksJyx8O3xcXHJ8XFxuJyk7aWYoZi5sZW5ndGghPTIpe3Rocm93IHZiYihuZXcgV2RiKCdFeGFjdGx5IHR3byBudW1iZXJzIGFyZSBleHBlY3RlZCwgJytmLmxlbmd0aCsnIHdlcmUgZm91bmQuJykpfXRyeXt0aGlzLmE9SGNiKHVmYihmWzBdKSk7dGhpcy5iPUhjYih1ZmIoZlsxXSkpfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTI3KSl7ZD1hO3Rocm93IHZiYihuZXcgV2RiKG9uZStkKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fTtfLkliPWZ1bmN0aW9uIG03Yygpe3JldHVybiAnKCcrdGhpcy5hKycsJyt0aGlzLmIrJyknfTtfLmE9MDtfLmI9MDt2YXIgbTE9bWRiKHBuZSwnS1ZlY3RvcicsOCk7YmNiKDc0LDY4LHszOjEsNDoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsNjg6MSwxNToxLDc0OjEsNDE0OjF9LHM3Yyx0N2MsdTdjKTtfLlBjPWZ1bmN0aW9uIHg3Yygpe3JldHVybiByN2ModGhpcyl9O18uSmY9ZnVuY3Rpb24gdjdjKGIpe3ZhciBjLGQsZSxmLGcsaDtlPW1mYihiLCcsfDt8XFxcXCh8XFxcXCl8XFxcXFt8XFxcXF18XFxcXHt8XFxcXH18IHxcXHR8XFxuJyk7T3NiKHRoaXMpO3RyeXtkPTA7Zz0wO2Y9MDtoPTA7d2hpbGUoZDxlLmxlbmd0aCl7aWYoZVtkXSE9bnVsbCYmdWZiKGVbZF0pLmxlbmd0aD4wKXtnJTI9PTA/KGY9SGNiKGVbZF0pKTooaD1IY2IoZVtkXSkpO2c+MCYmZyUyIT0wJiZEc2IodGhpcyxuZXcgZjdjKGYsaCkpOysrZ30rK2R9fWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTI3KSl7Yz1hO3Rocm93IHZiYihuZXcgV2RiKCdUaGUgZ2l2ZW4gc3RyaW5nIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQgZm9yIHZlY3RvcnMuJytjKSl9ZWxzZSB0aHJvdyB2YmIoYSl9fTtfLkliPWZ1bmN0aW9uIHk3Yygpe3ZhciBhLGIsYzthPW5ldyBXZmIoJygnKTtiPUpzYih0aGlzLDApO3doaWxlKGIuYiE9Yi5kLmMpe2M9QkQoWHNiKGIpLDgpO1FmYihhLGMuYSsnLCcrYy5iKTtiLmIhPWIuZC5jJiYoYS5hKz0nOyAnLGEpfXJldHVybiAoYS5hKz0nKScsYSkuYX07dmFyIGwxPW1kYihwbmUsJ0tWZWN0b3JDaGFpbicsNzQpO2JjYigyNDgsMjIsezM6MSwzNToxLDIyOjEsMjQ4OjF9LEc3Yyk7dmFyIHo3YyxBN2MsQjdjLEM3YyxEN2MsRTdjO3ZhciBvMT1uZGIob3NlLCdBbGlnbm1lbnQnLDI0OCxDSSxJN2MsSDdjKTt2YXIgSjdjO2JjYig5NzksMSxhbGUsWjdjKTtfLlFlPWZ1bmN0aW9uICQ3YyhhKXtZN2MoYSl9O3ZhciBMN2MsTTdjLE43YyxPN2MsUDdjLFE3YyxSN2MsUzdjLFQ3YyxVN2MsVjdjLFc3Yzt2YXIgcTE9bWRiKG9zZSwnQm94TGF5b3V0ZXJPcHRpb25zJyw5NzkpO2JjYig5ODAsMSx7fSxfN2MpO18uJGU9ZnVuY3Rpb24gYThjKCl7dmFyIGE7cmV0dXJuIGE9bmV3IGdlZCxhfTtfLl9lPWZ1bmN0aW9uIGI4YyhhKXt9O3ZhciBwMT1tZGIob3NlLCdCb3hMYXlvdXRlck9wdGlvbnMvQm94RmFjdG9yeScsOTgwKTtiY2IoMjkxLDIyLHszOjEsMzU6MSwyMjoxLDI5MToxfSxqOGMpO3ZhciBjOGMsZDhjLGU4YyxmOGMsZzhjLGg4Yzt2YXIgcjE9bmRiKG9zZSwnQ29udGVudEFsaWdubWVudCcsMjkxLENJLGw4YyxrOGMpO3ZhciBtOGM7YmNiKDY4NCwxLGFsZSxaOWMpO18uUWU9ZnVuY3Rpb24gJDljKGEpe3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsc3NlKSwnJyksJ0xheW91dCBBbGdvcml0aG0nKSwnU2VsZWN0IGEgc3BlY2lmaWMgbGF5b3V0IGFsZ29yaXRobS4nKSwoXzVjKCksWjVjKSksWkkpLHBxYigoTjVjKCksTDVjKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx0c2UpLCcnKSwnUmVzb2x2ZWQgTGF5b3V0IEFsZ29yaXRobScpLCdNZXRhIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWxlY3RlZCBhbGdvcml0aG0uJyksWTVjKSxFMCkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsJHBlKSwnJyksJ0FsaWdubWVudCcpLCdBbGlnbm1lbnQgb2YgdGhlIHNlbGVjdGVkIG5vZGUgcmVsYXRpdmUgdG8gb3RoZXIgbm9kZXM7IHRoZSBleGFjdCBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIHVzZWQgYWxnb3JpdGhtLicpLHE4YyksVjVjKSxvMSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxfbGUpLCcnKSwnQXNwZWN0IFJhdGlvJyksJ1RoZSBkZXNpcmVkIGFzcGVjdCByYXRpbyBvZiB0aGUgZHJhd2luZywgdGhhdCBpcyB0aGUgcXVvdGllbnQgb2Ygd2lkdGggYnkgaGVpZ2h0LicpLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsdXNlKSwnJyksJ0JlbmQgUG9pbnRzJyksXCJBIGZpeGVkIGxpc3Qgb2YgYmVuZCBwb2ludHMgZm9yIHRoZSBlZGdlLiBUaGlzIGlzIHVzZWQgYnkgdGhlICdGaXhlZCBMYXlvdXQnIGFsZ29yaXRobSB0byBzcGVjaWZ5IGEgcHJlLWRlZmluZWQgcm91dGluZyBmb3IgYW4gZWRnZS4gVGhlIHZlY3RvciBjaGFpbiBtdXN0IGluY2x1ZGUgdGhlIHNvdXJjZSBwb2ludCwgYW55IGJlbmQgcG9pbnRzLCBhbmQgdGhlIHRhcmdldCBwb2ludCwgc28gaXQgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBwb2ludHMuXCIpLFk1YyksbDEpLHBxYihJNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGxxZSksJycpLCdDb250ZW50IEFsaWdubWVudCcpLCdTcGVjaWZpZXMgaG93IHRoZSBjb250ZW50IG9mIGEgbm9kZSBhcmUgYWxpZ25lZC4gRWFjaCBub2RlIGNhbiBpbmRpdmlkdWFsbHkgY29udHJvbCB0aGUgYWxpZ25tZW50IG9mIGl0cyBjb250ZW50cy4gSS5lLiBpZiBhIG5vZGUgc2hvdWxkIGJlIGFsaWduZWQgdG9wIGxlZnQgaW4gaXRzIHBhcmVudCBub2RlLCB0aGUgcGFyZW50IG5vZGUgc2hvdWxkIHNwZWNpZnkgdGhhdCBvcHRpb24uJykseDhjKSxXNWMpLHIxKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxacGUpLCcnKSwnRGVidWcgTW9kZScpLCdXaGV0aGVyIGFkZGl0aW9uYWwgZGVidWcgaW5mb3JtYXRpb24gc2hhbGwgYmUgZ2VuZXJhdGVkLicpLChCY2IoKSxmYWxzZSkpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGNxZSksJycpLENsZSksJ092ZXJhbGwgZGlyZWN0aW9uIG9mIGVkZ2VzOiBob3Jpem9udGFsIChyaWdodCAvIGxlZnQpIG9yIHZlcnRpY2FsIChkb3duIC8gdXApLicpLEE4YyksVjVjKSx0MSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMseXBlKSwnJyksJ0VkZ2UgUm91dGluZycpLCdXaGF0IGtpbmQgb2YgZWRnZSByb3V0aW5nIHN0eWxlIHNob3VsZCBiZSBhcHBsaWVkIGZvciB0aGUgY29udGVudCBvZiBhIHBhcmVudCBub2RlLiBBbGdvcml0aG1zIG1heSBhbHNvIHNldCB0aGlzIG9wdGlvbiB0byBzaW5nbGUgZWRnZXMgaW4gb3JkZXIgdG8gbWFyayB0aGVtIGFzIHNwbGluZXMuIFRoZSBiZW5kIHBvaW50IGxpc3Qgb2YgZWRnZXMgd2l0aCB0aGlzIG9wdGlvbiBzZXQgdG8gU1BMSU5FUyBtdXN0IGJlIGludGVycHJldGVkIGFzIGNvbnRyb2wgcG9pbnRzIGZvciBhIHBpZWNld2lzZSBjdWJpYyBzcGxpbmUuJyksRjhjKSxWNWMpLHYxKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxKcmUpLCcnKSwnRXhwYW5kIE5vZGVzJyksJ0lmIGFjdGl2ZSwgbm9kZXMgYXJlIGV4cGFuZGVkIHRvIGZpbGwgdGhlIGFyZWEgb2YgdGhlaXIgcGFyZW50LicpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx0cGUpLCcnKSwnSGllcmFyY2h5IEhhbmRsaW5nJyksXCJEZXRlcm1pbmVzIHdoZXRoZXIgc2VwYXJhdGUgbGF5b3V0IHJ1bnMgYXJlIHRyaWdnZXJlZCBmb3IgZGlmZmVyZW50IGNvbXBvdW5kIG5vZGVzIGluIGEgaGllcmFyY2hpY2FsIGdyYXBoLiBTZXR0aW5nIGEgbm9kZSdzIGhpZXJhcmNoeSBoYW5kbGluZyB0byBgSU5DTFVERV9DSElMRFJFTmAgd2lsbCBsYXkgb3V0IHRoYXQgbm9kZSBhbmQgYWxsIG9mIGl0cyBkZXNjZW5kYW50cyBpbiBhIHNpbmdsZSBsYXlvdXQgcnVuLCB1bnRpbCBhIGRlc2NlbmRhbnQgaXMgZW5jb3VudGVyZWQgd2hpY2ggaGFzIGl0cyBoaWVyYXJjaHkgaGFuZGxpbmcgc2V0IHRvIGBTRVBBUkFURV9DSElMRFJFTmAuIEluIGdlbmVyYWwsIGBTRVBBUkFURV9DSElMRFJFTmAgd2lsbCBlbnN1cmUgdGhhdCBhIG5ldyBsYXlvdXQgcnVuIGlzIHRyaWdnZXJlZCBmb3IgYSBub2RlIHdpdGggdGhhdCBzZXR0aW5nLiBJbmNsdWRpbmcgbXVsdGlwbGUgbGV2ZWxzIG9mIGhpZXJhcmNoeSBpbiBhIHNpbmdsZSBsYXlvdXQgcnVuIG1heSBhbGxvdyBjcm9zcy1oaWVyYXJjaGljYWwgZWRnZXMgdG8gYmUgbGFpZCBvdXQgcHJvcGVybHkuIElmIHRoZSByb290IG5vZGUgaXMgc2V0IHRvIGBJTkhFUklUYCAob3Igbm90IHNldCBhdCBhbGwpLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpcyBgU0VQQVJBVEVfQ0hJTERSRU5gLlwiKSxLOGMpLFY1YyksejEpLHFxYihMNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtLNWNdKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYW1lKSwnJyksJ1BhZGRpbmcnKSxcIlRoZSBwYWRkaW5nIHRvIGJlIGxlZnQgdG8gYSBwYXJlbnQgZWxlbWVudCdzIGJvcmRlciB3aGVuIHBsYWNpbmcgY2hpbGQgZWxlbWVudHMuIFRoaXMgY2FuIGFsc28gc2VydmUgYXMgYW4gb3V0cHV0IG9wdGlvbiBvZiBhIGxheW91dCBhbGdvcml0aG0gaWYgbm9kZSBzaXplIGNhbGN1bGF0aW9uIGlzIHNldHVwIGFwcHJvcHJpYXRlbHkuXCIpLGc5YyksWTVjKSxqMSkscXFiKEw1YyxPQyhHQyhlMSwxKSxLaWUsMTc1LDAsW0s1Y10pKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxBbWUpLCcnKSwnSW50ZXJhY3RpdmUnKSwnV2hldGhlciB0aGUgYWxnb3JpdGhtIHNob3VsZCBiZSBydW4gaW4gaW50ZXJhY3RpdmUgbW9kZSBmb3IgdGhlIGNvbnRlbnQgb2YgYSBwYXJlbnQgbm9kZS4gV2hhdCB0aGlzIG1lYW5zIGV4YWN0bHkgZGVwZW5kcyBvbiBob3cgdGhlIHNwZWNpZmljIGFsZ29yaXRobSBpbnRlcnByZXRzIHRoaXMgb3B0aW9uLiBVc3VhbGx5IGluIHRoZSBpbnRlcmFjdGl2ZSBtb2RlIGFsZ29yaXRobXMgdHJ5IHRvIG1vZGlmeSB0aGUgY3VycmVudCBsYXlvdXQgYXMgbGl0dGxlIGFzIHBvc3NpYmxlLicpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx4cWUpLCcnKSwnaW50ZXJhY3RpdmUgTGF5b3V0JyksJ1doZXRoZXIgdGhlIGdyYXBoIHNob3VsZCBiZSBjaGFuZ2VhYmxlIGludGVyYWN0aXZlbHkgYW5kIGJ5IHNldHRpbmcgY29uc3RyYWludHMnKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRG1lKSwnJyksJ09taXQgTm9kZSBNaWNybyBMYXlvdXQnKSxcIk5vZGUgbWljcm8gbGF5b3V0IGNvbXByaXNlcyB0aGUgY29tcHV0YXRpb24gb2Ygbm9kZSBkaW1lbnNpb25zIChpZiByZXF1ZXN0ZWQpLCB0aGUgcGxhY2VtZW50IG9mIHBvcnRzIGFuZCB0aGVpciBsYWJlbHMsIGFuZCB0aGUgcGxhY2VtZW50IG9mIG5vZGUgbGFiZWxzLiBUaGUgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBpbmRlcGVuZGVudCBvZiBhbnkgc3BlY2lmaWMgbGF5b3V0IGFsZ29yaXRobSBhbmQgc2hvdWxkbid0IGhhdmUgYW55IG5lZ2F0aXZlIGltcGFjdCBvbiB0aGUgbGF5b3V0IGFsZ29yaXRobSdzIHBlcmZvcm1hbmNlIGl0c2VsZi4gWWV0LCBpZiBhbnkgdW5mb3Jlc2VlbiBiZWhhdmlvciBvY2N1cnMsIHRoaXMgb3B0aW9uIGFsbG93cyB0byBkZWFjdGl2YXRlIHRoZSBtaWNybyBsYXlvdXQuXCIpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxCbWUpLCcnKSwnUG9ydCBDb25zdHJhaW50cycpLCdEZWZpbmVzIGNvbnN0cmFpbnRzIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9ydHMgb2YgYSBub2RlLicpLHU5YyksVjVjKSxEMSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx1cWUpLCcnKSwnUG9zaXRpb24nKSxcIlRoZSBwb3NpdGlvbiBvZiBhIG5vZGUsIHBvcnQsIG9yIGxhYmVsLiBUaGlzIGlzIHVzZWQgYnkgdGhlICdGaXhlZCBMYXlvdXQnIGFsZ29yaXRobSB0byBzcGVjaWZ5IGEgcHJlLWRlZmluZWQgcG9zaXRpb24uXCIpLFk1YyksbTEpLHFxYihLNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtNNWMsSjVjXSkpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsdm1lKSwnJyksJ1ByaW9yaXR5JyksJ0RlZmluZXMgdGhlIHByaW9yaXR5IG9mIGFuIG9iamVjdDsgaXRzIG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWMgbGF5b3V0IGFsZ29yaXRobSBhbmQgdGhlIGNvbnRleHQgd2hlcmUgaXQgaXMgdXNlZC4nKSxYNWMpLEpJKSxxcWIoSzVjLE9DKEdDKGUxLDEpLEtpZSwxNzUsMCxbSTVjXSkpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMseW1lKSwnJyksJ1JhbmRvbWl6YXRpb24gU2VlZCcpLCdTZWVkIHVzZWQgZm9yIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMgdG8gY29udHJvbCB0aGUgbGF5b3V0IGFsZ29yaXRobS4gSWYgdGhlIHZhbHVlIGlzIDAsIHRoZSBzZWVkIHNoYWxsIGJlIGRldGVybWluZWQgcHNldWRvLXJhbmRvbWx5IChlLmcuIGZyb20gdGhlIHN5c3RlbSB0aW1lKS4nKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHptZSksJycpLCdTZXBhcmF0ZSBDb25uZWN0ZWQgQ29tcG9uZW50cycpLCdXaGV0aGVyIGVhY2ggY29ubmVjdGVkIGNvbXBvbmVudCBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGFyYXRlbHkuJyksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsbXFlKSwnJyksJ0p1bmN0aW9uIFBvaW50cycpLCdUaGlzIG9wdGlvbiBpcyBub3QgdXNlZCBhcyBvcHRpb24sIGJ1dCBhcyBvdXRwdXQgb2YgdGhlIGxheW91dCBhbGdvcml0aG1zLiBJdCBpcyBhdHRhY2hlZCB0byBlZGdlcyBhbmQgZGV0ZXJtaW5lcyB0aGUgcG9pbnRzIHdoZXJlIGp1bmN0aW9uIHN5bWJvbHMgc2hvdWxkIGJlIGRyYXduIGluIG9yZGVyIHRvIHJlcHJlc2VudCBoeXBlcmVkZ2VzIHdpdGggb3J0aG9nb25hbCByb3V0aW5nLiBXaGV0aGVyIHN1Y2ggcG9pbnRzIGFyZSBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSBjaG9zZW4gbGF5b3V0IGFsZ29yaXRobSBhbmQgZWRnZSByb3V0aW5nIHN0eWxlLiBUaGUgcG9pbnRzIGFyZSBwdXQgaW50byB0aGUgdmVjdG9yIGNoYWluIHdpdGggbm8gc3BlY2lmaWMgb3JkZXIuJyksUjhjKSxZNWMpLGwxKSxwcWIoSTVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxwcWUpLCcnKSwnQ29tbWVudCBCb3gnKSwnV2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgcmVnYXJkZWQgYXMgYSBjb21tZW50IGJveCBpbnN0ZWFkIG9mIGEgcmVndWxhciBub2RlLiBJbiB0aGF0IGNhc2UgaXRzIHBsYWNlbWVudCBzaG91bGQgYmUgc2ltaWxhciB0byBob3cgbGFiZWxzIGFyZSBoYW5kbGVkLiBBbnkgZWRnZXMgaW5jaWRlbnQgdG8gYSBjb21tZW50IGJveCBzcGVjaWZ5IHRvIHdoaWNoIGdyYXBoIGVsZW1lbnRzIHRoZSBjb21tZW50IGlzIHJlbGF0ZWQuJyksZmFsc2UpLFQ1Yyksd0kpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHFxZSksJycpLCdIeXBlcm5vZGUnKSwnV2hldGhlciB0aGUgbm9kZSBzaG91bGQgYmUgaGFuZGxlZCBhcyBhIGh5cGVybm9kZS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx2c2UpLCcnKSwnTGFiZWwgTWFuYWdlcicpLFwiTGFiZWwgbWFuYWdlcnMgY2FuIHNob3J0ZW4gbGFiZWxzIHVwb24gYSBsYXlvdXQgYWxnb3JpdGhtJ3MgcmVxdWVzdC5cIiksWTVjKSxoMSkscXFiKEw1YyxPQyhHQyhlMSwxKSxLaWUsMTc1LDAsW0o1Y10pKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx2cWUpLCcnKSwnTWFyZ2lucycpLFwiTWFyZ2lucyBkZWZpbmUgYWRkaXRpb25hbCBzcGFjZSBhcm91bmQgdGhlIGFjdHVhbCBib3VuZHMgb2YgYSBncmFwaCBlbGVtZW50LiBGb3IgaW5zdGFuY2UsIHBvcnRzIG9yIGxhYmVscyBiZWluZyBwbGFjZWQgb24gdGhlIG91dHNpZGUgb2YgYSBub2RlJ3MgYm9yZGVyIG1pZ2h0IGludHJvZHVjZSBzdWNoIGEgbWFyZ2luLiBUaGUgbWFyZ2luIGlzIHVzZWQgdG8gZ3VhcmFudGVlIG5vbi1vdmVybGFwIG9mIG90aGVyIGdyYXBoIGVsZW1lbnRzIHdpdGggdGhvc2UgcG9ydHMgb3IgbGFiZWxzLlwiKSxUOGMpLFk1YyksaTEpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFhwZSksJycpLCdObyBMYXlvdXQnKSxcIk5vIGxheW91dCBpcyBkb25lIGZvciB0aGUgYXNzb2NpYXRlZCBlbGVtZW50LiBUaGlzIGlzIHVzZWQgdG8gbWFyayBwYXJ0cyBvZiBhIGRpYWdyYW0gdG8gYXZvaWQgdGhlaXIgaW5jbHVzaW9uIGluIHRoZSBsYXlvdXQgZ3JhcGgsIG9yIHRvIG1hcmsgcGFydHMgb2YgdGhlIGxheW91dCBncmFwaCB0byBwcmV2ZW50IGxheW91dCBlbmdpbmVzIGZyb20gcHJvY2Vzc2luZyB0aGVtLiBJZiB5b3Ugd2lzaCB0byBleGNsdWRlIHRoZSBjb250ZW50cyBvZiBhIGNvbXBvdW5kIG5vZGUgZnJvbSBhdXRvbWF0aWMgbGF5b3V0LCB3aGlsZSB0aGUgbm9kZSBpdHNlbGYgaXMgc3RpbGwgY29uc2lkZXJlZCBvbiBpdHMgb3duIGxheWVyLCB1c2UgdGhlICdGaXhlZCBMYXlvdXQnIGFsZ29yaXRobSBmb3IgdGhhdCBub2RlLlwiKSxmYWxzZSksVDVjKSx3SSkscXFiKEs1YyxPQyhHQyhlMSwxKSxLaWUsMTc1LDAsW0k1YyxNNWMsSjVjXSkpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHdzZSksJycpLCdTY2FsZSBGYWN0b3InKSxcIlRoZSBzY2FsaW5nIGZhY3RvciB0byBiZSBhcHBsaWVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIG5vZGUgaW4gcmVjdXJzaXZlIGxheW91dC4gSXQgY2F1c2VzIHRoZSBjb3JyZXNwb25kaW5nIG5vZGUncyBzaXplIHRvIGJlIGFkanVzdGVkLCBhbmQgaXRzIHBvcnRzIGFuZCBsYWJlbHMgdG8gYmUgc2l6ZWQgYW5kIHBsYWNlZCBhY2NvcmRpbmdseSBhZnRlciB0aGUgbGF5b3V0IG9mIHRoYXQgbm9kZSBoYXMgYmVlbiBkZXRlcm1pbmVkIChhbmQgYmVmb3JlIHRoZSBub2RlIGl0c2VsZiBhbmQgaXRzIHNpYmxpbmdzIGFyZSBhcnJhbmdlZCkuIFRoZSBzY2FsaW5nIGlzIG5vdCByZXZlcnRlZCBhZnRlcndhcmRzLCBzbyB0aGUgcmVzdWx0aW5nIGxheW91dCBncmFwaCBjb250YWlucyB0aGUgYWRqdXN0ZWQgc2l6ZSBhbmQgcG9zaXRpb24gZGF0YS4gVGhpcyBvcHRpb24gaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgaWYgJ0xheW91dCBIaWVyYXJjaHknIGlzIHNldC5cIiksMSksVTVjKSxCSSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMseHNlKSwnJyksJ0FuaW1hdGUnKSwnV2hldGhlciB0aGUgc2hpZnQgZnJvbSB0aGUgb2xkIGxheW91dCB0byB0aGUgbmV3IGNvbXB1dGVkIGxheW91dCBzaGFsbCBiZSBhbmltYXRlZC4nKSx0cnVlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx5c2UpLCcnKSwnQW5pbWF0aW9uIFRpbWUgRmFjdG9yJyksXCJGYWN0b3IgZm9yIGNvbXB1dGF0aW9uIG9mIGFuaW1hdGlvbiB0aW1lLiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSwgdGhlIGxvbmdlciB0aGUgYW5pbWF0aW9uIHRpbWUuIElmIHRoZSB2YWx1ZSBpcyAwLCB0aGUgcmVzdWx0aW5nIHRpbWUgaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBtaW5pbXVtIGRlZmluZWQgYnkgJ01pbmltYWwgQW5pbWF0aW9uIFRpbWUnLlwiKSxtZWIoMTAwKSksWDVjKSxKSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsenNlKSwnJyksJ0xheW91dCBBbmNlc3RvcnMnKSwnV2hldGhlciB0aGUgaGllcmFyY2h5IGxldmVscyBvbiB0aGUgcGF0aCBmcm9tIHRoZSBzZWxlY3RlZCBlbGVtZW50IHRvIHRoZSByb290IG9mIHRoZSBkaWFncmFtIHNoYWxsIGJlIGluY2x1ZGVkIGluIHRoZSBsYXlvdXQgcHJvY2Vzcy4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsQXNlKSwnJyksJ01heGltYWwgQW5pbWF0aW9uIFRpbWUnKSwnVGhlIG1heGltYWwgdGltZSBmb3IgYW5pbWF0aW9ucywgaW4gbWlsbGlzZWNvbmRzLicpLG1lYig0MDAwKSksWDVjKSxKSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsQnNlKSwnJyksJ01pbmltYWwgQW5pbWF0aW9uIFRpbWUnKSwnVGhlIG1pbmltYWwgdGltZSBmb3IgYW5pbWF0aW9ucywgaW4gbWlsbGlzZWNvbmRzLicpLG1lYig0MDApKSxYNWMpLEpJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxDc2UpLCcnKSwnUHJvZ3Jlc3MgQmFyJyksJ1doZXRoZXIgYSBwcm9ncmVzcyBiYXIgc2hhbGwgYmUgZGlzcGxheWVkIGR1cmluZyBsYXlvdXQgY29tcHV0YXRpb25zLicpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxEc2UpLCcnKSwnVmFsaWRhdGUgR3JhcGgnKSwnV2hldGhlciB0aGUgZ3JhcGggc2hhbGwgYmUgdmFsaWRhdGVkIGJlZm9yZSBhbnkgbGF5b3V0IGFsZ29yaXRobSBpcyBhcHBsaWVkLiBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgZm91bmQsIHRoZSBsYXlvdXQgcHJvY2VzcyBpcyBhYm9ydGVkIGFuZCBhIG1lc3NhZ2UgaXMgc2hvd24gdG8gdGhlIHVzZXIuJyksZmFsc2UpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLEVzZSksJycpLCdWYWxpZGF0ZSBPcHRpb25zJyksJ1doZXRoZXIgbGF5b3V0IG9wdGlvbnMgc2hhbGwgYmUgdmFsaWRhdGVkIGJlZm9yZSBhbnkgbGF5b3V0IGFsZ29yaXRobSBpcyBhcHBsaWVkLiBJZiB0aGlzIG9wdGlvbiBpcyBlbmFibGVkIGFuZCBhdCBsZWFzdCBvbmUgZXJyb3IgaXMgZm91bmQsIHRoZSBsYXlvdXQgcHJvY2VzcyBpcyBhYm9ydGVkIGFuZCBhIG1lc3NhZ2UgaXMgc2hvd24gdG8gdGhlIHVzZXIuJyksdHJ1ZSksVDVjKSx3SSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsRnNlKSwnJyksJ1pvb20gdG8gRml0JyksJ1doZXRoZXIgdGhlIHpvb20gbGV2ZWwgc2hhbGwgYmUgc2V0IHRvIHZpZXcgdGhlIHdob2xlIGRpYWdyYW0gYWZ0ZXIgbGF5b3V0LicpLGZhbHNlKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyxyc2UpLCdib3gnKSwnQm94IExheW91dCBNb2RlJyksJ0NvbmZpZ3VyZXMgdGhlIHBhY2tpbmcgbW9kZSB1c2VkIGJ5IHRoZSB7QGxpbmsgQm94TGF5b3V0UHJvdmlkZXJ9LiBJZiBTSU1QTEUgaXMgbm90IHJlcXVpcmVkIChuZWl0aGVyIHByaW9yaXRpZXMgYXJlIHVzZWQgbm9yIHRoZSBpbnRlcmFjdGl2ZSBtb2RlKSwgR1JPVVBfREVDIGNhbiBpbXByb3ZlIHRoZSBwYWNraW5nIGFuZCBkZWNyZWFzZSB0aGUgYXJlYS4gR1JPVVBfTUlYRUQgYW5kIEdST1VQX0lOQyBtYXksIGluIHZlcnkgc3BlY2lmaWMgc2NlbmFyaW9zLCB3b3JrIGJldHRlci4nKSx1OGMpLFY1YyksTzEpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLExwZSksenBlKSwnQ29tbWVudCBDb21tZW50IFNwYWNpbmcnKSwnU3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBhIGNvbW1lbnQgYm94IGFuZCBvdGhlciBjb21tZW50IGJveGVzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBub2RlLiBUaGUgc3BhY2UgbGVmdCBiZXR3ZWVuIGNvbW1lbnQgYm94ZXMgb2YgZGlmZmVyZW50IG5vZGVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIG5vZGUtbm9kZSBzcGFjaW5nLicpLDEwKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxNcGUpLHpwZSksJ0NvbW1lbnQgTm9kZSBTcGFjaW5nJyksJ1NwYWNpbmcgdG8gYmUgcHJlc2VydmVkIGJldHdlZW4gYSBub2RlIGFuZCBpdHMgY29ubmVjdGVkIGNvbW1lbnQgYm94ZXMuIFRoZSBzcGFjZSBsZWZ0IGJldHdlZW4gYSBub2RlIGFuZCB0aGUgY29tbWVudHMgb2YgYW5vdGhlciBub2RlIGlzIGNvbnRyb2xsZWQgYnkgdGhlIG5vZGUtbm9kZSBzcGFjaW5nLicpLDEwKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxabGUpLHpwZSksJ0NvbXBvbmVudHMgU3BhY2luZycpLFwiU3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBwYWlycyBvZiBjb25uZWN0ZWQgY29tcG9uZW50cy4gVGhpcyBvcHRpb24gaXMgb25seSByZWxldmFudCBpZiAnc2VwYXJhdGVDb25uZWN0ZWRDb21wb25lbnRzJyBpcyBhY3RpdmF0ZWQuXCIpLDIwKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxOcGUpLHpwZSksJ0VkZ2UgU3BhY2luZycpLCdTcGFjaW5nIHRvIGJlIHByZXNlcnZlZCBiZXR3ZWVuIGFueSB0d28gZWRnZXMuIE5vdGUgdGhhdCB3aGlsZSB0aGlzIGNhbiBzb21ld2hhdCBlYXNpbHkgYmUgc2F0aXNmaWVkIGZvciB0aGUgc2VnbWVudHMgb2Ygb3J0aG9nb25hbGx5IGRyYXduIGVkZ2VzLCBpdCBpcyBoYXJkZXIgZm9yIGdlbmVyYWwgcG9seWxpbmVzIG9yIHNwbGluZXMuJyksMTApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHhtZSksenBlKSwnRWRnZSBMYWJlbCBTcGFjaW5nJyksXCJUaGUgbWluaW1hbCBkaXN0YW5jZSB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBhIGxhYmVsIGFuZCB0aGUgZWRnZSBpdCBpcyBhc3NvY2lhdGVkIHdpdGguIE5vdGUgdGhhdCB0aGUgcGxhY2VtZW50IG9mIGEgbGFiZWwgaXMgaW5mbHVlbmNlZCBieSB0aGUgJ2VkZ2VsYWJlbHMucGxhY2VtZW50JyBvcHRpb24uXCIpLDIpLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLE9wZSksenBlKSwnRWRnZSBOb2RlIFNwYWNpbmcnKSwnU3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBub2RlcyBhbmQgZWRnZXMuJyksMTApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFBwZSksenBlKSwnTGFiZWwgU3BhY2luZycpLCdEZXRlcm1pbmVzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdG8gYmUgbGVmdCBiZXR3ZWVuIHR3byBsYWJlbHMgb2YgdGhlIHNhbWUgZ3JhcGggZWxlbWVudC4nKSwwKSxVNWMpLEJJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxTcGUpLHpwZSksJ0xhYmVsIE5vZGUgU3BhY2luZycpLFwiU3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBsYWJlbHMgYW5kIHRoZSBib3JkZXIgb2Ygbm9kZSB0aGV5IGFyZSBhc3NvY2lhdGVkIHdpdGguIE5vdGUgdGhhdCB0aGUgcGxhY2VtZW50IG9mIGEgbGFiZWwgaXMgaW5mbHVlbmNlZCBieSB0aGUgJ25vZGVsYWJlbHMucGxhY2VtZW50JyBvcHRpb24uXCIpLDUpLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFFwZSksenBlKSwnSG9yaXpvbnRhbCBzcGFjaW5nIGJldHdlZW4gTGFiZWwgYW5kIFBvcnQnKSxcIkhvcml6b250YWwgc3BhY2luZyB0byBiZSBwcmVzZXJ2ZWQgYmV0d2VlbiBsYWJlbHMgYW5kIHRoZSBwb3J0cyB0aGV5IGFyZSBhc3NvY2lhdGVkIHdpdGguIE5vdGUgdGhhdCB0aGUgcGxhY2VtZW50IG9mIGEgbGFiZWwgaXMgaW5mbHVlbmNlZCBieSB0aGUgJ3BvcnRsYWJlbHMucGxhY2VtZW50JyBvcHRpb24uXCIpLDEpLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFJwZSksenBlKSwnVmVydGljYWwgc3BhY2luZyBiZXR3ZWVuIExhYmVsIGFuZCBQb3J0JyksXCJWZXJ0aWNhbCBzcGFjaW5nIHRvIGJlIHByZXNlcnZlZCBiZXR3ZWVuIGxhYmVscyBhbmQgdGhlIHBvcnRzIHRoZXkgYXJlIGFzc29jaWF0ZWQgd2l0aC4gTm90ZSB0aGF0IHRoZSBwbGFjZW1lbnQgb2YgYSBsYWJlbCBpcyBpbmZsdWVuY2VkIGJ5IHRoZSAncG9ydGxhYmVscy5wbGFjZW1lbnQnIG9wdGlvbi5cIiksMSksVTVjKSxCSSkscHFiKEw1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsd21lKSx6cGUpLCdOb2RlIFNwYWNpbmcnKSwnVGhlIG1pbmltYWwgZGlzdGFuY2UgdG8gYmUgcHJlc2VydmVkIGJldHdlZW4gZWFjaCB0d28gbm9kZXMuJyksMjApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFRwZSksenBlKSwnTm9kZSBTZWxmIExvb3AgU3BhY2luZycpLCdTcGFjaW5nIHRvIGJlIHByZXNlcnZlZCBiZXR3ZWVuIGEgbm9kZSBhbmQgaXRzIHNlbGYgbG9vcHMuJyksMTApLFU1YyksQkkpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFVwZSksenBlKSwnUG9ydCBTcGFjaW5nJyksJ1NwYWNpbmcgYmV0d2VlbiBwYWlycyBvZiBwb3J0cyBvZiB0aGUgc2FtZSBub2RlLicpLDEwKSxVNWMpLEJJKSxxcWIoTDVjLE9DKEdDKGUxLDEpLEtpZSwxNzUsMCxbSzVjXSkpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsVnBlKSx6cGUpLCdJbmRpdmlkdWFsIFNwYWNpbmcnKSxcIkFsbG93cyB0byBzcGVjaWZ5IGluZGl2aWR1YWwgc3BhY2luZyB2YWx1ZXMgZm9yIGdyYXBoIGVsZW1lbnRzIHRoYXQgc2hhbGwgYmUgZGlmZmVyZW50IGZyb20gdGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgdGhlIGVsZW1lbnQncyBwYXJlbnQuXCIpLFk1YyksaTIpLHFxYihLNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtJNWMsTTVjLEo1Y10pKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1Yyx3cWUpLHpwZSksJ0FkZGl0aW9uYWwgUG9ydCBTcGFjZScpLCdBZGRpdGlvbmFsIHNwYWNlIGFyb3VuZCB0aGUgc2V0cyBvZiBwb3J0cyBvbiBlYWNoIG5vZGUgc2lkZS4gRm9yIGVhY2ggc2lkZSBvZiBhIG5vZGUsIHRoaXMgb3B0aW9uIGNhbiByZXNlcnZlIGFkZGl0aW9uYWwgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9ydHMgb24gZWFjaCBzaWRlLiBGb3IgZXhhbXBsZSwgYSB0b3Agc3BhY2luZyBvZiAyMCBtYWtlcyBzdXJlIHRoYXQgdGhlIGZpcnN0IHBvcnQgb24gdGhlIHdlc3Rlcm4gYW5kIGVhc3Rlcm4gc2lkZSBpcyAyMCB1bml0cyBhd2F5IGZyb20gdGhlIG5vcnRoZXJuIGJvcmRlci4nKSxXOWMpLFk1YyksaTEpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsdHFlKSxKc2UpLCdMYXlvdXQgUGFydGl0aW9uJyksJ1BhcnRpdGlvbiB0byB3aGljaCB0aGUgbm9kZSBiZWxvbmdzLiBUaGlzIHJlcXVpcmVzIExheW91dCBQYXJ0aXRpb25pbmcgdG8gYmUgYWN0aXZlLiBOb2RlcyB3aXRoIGxvd2VyIHBhcnRpdGlvbiBJRHMgd2lsbCBhcHBlYXIgdG8gdGhlIGxlZnQgb2Ygbm9kZXMgd2l0aCBoaWdoZXIgcGFydGl0aW9uIElEcyAoYXNzdW1pbmcgYSBsZWZ0LXRvLXJpZ2h0IGxheW91dCBkaXJlY3Rpb24pLicpLFg1YyksSkkpLHFxYihMNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtLNWNdKSkpKSk7bzRjKGEsdHFlLHNxZSxrOWMpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHNxZSksSnNlKSwnTGF5b3V0IFBhcnRpdGlvbmluZycpLCdXaGV0aGVyIHRvIGFjdGl2YXRlIHBhcnRpdGlvbmVkIGxheW91dC4gVGhpcyB3aWxsIGFsbG93IHRvIGdyb3VwIG5vZGVzIHRocm91Z2ggdGhlIExheW91dCBQYXJ0aXRpb24gb3B0aW9uLiBhIHBhaXIgb2Ygbm9kZXMgd2l0aCBkaWZmZXJlbnQgcGFydGl0aW9uIGluZGljZXMgaXMgdGhlbiBwbGFjZWQgc3VjaCB0aGF0IHRoZSBub2RlIHdpdGggbG93ZXIgaW5kZXggaXMgcGxhY2VkIHRvIHRoZSBsZWZ0IG9mIHRoZSBvdGhlciBub2RlICh3aXRoIGxlZnQtdG8tcmlnaHQgbGF5b3V0IGRpcmVjdGlvbikuIERlcGVuZGluZyBvbiB0aGUgbGF5b3V0IGFsZ29yaXRobSwgdGhpcyBtYXkgb25seSBiZSBndWFyYW50ZWVkIHRvIHdvcmsgaWYgYWxsIG5vZGVzIGhhdmUgYSBsYXlvdXQgcGFydGl0aW9uIGNvbmZpZ3VyZWQsIG9yIGF0IGxlYXN0IGlmIGVkZ2VzIHRoYXQgY3Jvc3MgcGFydGl0aW9ucyBhcmUgbm90IHBhcnQgb2YgYSBwYXJ0aXRpb24tY3Jvc3NpbmcgY3ljbGUuJyksaTljKSxUNWMpLHdJKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxkcWUpLEtzZSksJ05vZGUgTGFiZWwgUGFkZGluZycpLCdEZWZpbmUgcGFkZGluZyBmb3Igbm9kZSBsYWJlbHMgdGhhdCBhcmUgcGxhY2VkIGluc2lkZSBvZiBhIG5vZGUuJyksVjhjKSxZNWMpLGoxKSxwcWIoTDVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxHbWUpLEtzZSksJ05vZGUgTGFiZWwgUGxhY2VtZW50JyksXCJIaW50cyBmb3Igd2hlcmUgbm9kZSBsYWJlbHMgYXJlIHRvIGJlIHBsYWNlZDsgaWYgZW1wdHksIHRoZSBub2RlIGxhYmVsJ3MgcG9zaXRpb24gaXMgbm90IG1vZGlmaWVkLlwiKSxYOGMpLFc1YyksQjEpLHFxYihLNWMsT0MoR0MoZTEsMSksS2llLDE3NSwwLFtKNWNdKSkpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZ3FlKSxMc2UpLCdQb3J0IEFsaWdubWVudCcpLCdEZWZpbmVzIHRoZSBkZWZhdWx0IHBvcnQgZGlzdHJpYnV0aW9uIGZvciBhIG5vZGUuIE1heSBiZSBvdmVycmlkZGVuIGZvciBlYWNoIHNpZGUgaW5kaXZpZHVhbGx5LicpLG05YyksVjVjKSxDMSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxocWUpLExzZSksJ1BvcnQgQWxpZ25tZW50IChOb3J0aCknKSxcIkRlZmluZXMgaG93IHBvcnRzIG9uIHRoZSBub3J0aGVybiBzaWRlIGFyZSBwbGFjZWQsIG92ZXJyaWRpbmcgdGhlIG5vZGUncyBnZW5lcmFsIHBvcnQgYWxpZ25tZW50LlwiKSxWNWMpLEMxKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLGlxZSksTHNlKSwnUG9ydCBBbGlnbm1lbnQgKFNvdXRoKScpLFwiRGVmaW5lcyBob3cgcG9ydHMgb24gdGhlIHNvdXRoZXJuIHNpZGUgYXJlIHBsYWNlZCwgb3ZlcnJpZGluZyB0aGUgbm9kZSdzIGdlbmVyYWwgcG9ydCBhbGlnbm1lbnQuXCIpLFY1YyksQzEpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsanFlKSxMc2UpLCdQb3J0IEFsaWdubWVudCAoV2VzdCknKSxcIkRlZmluZXMgaG93IHBvcnRzIG9uIHRoZSB3ZXN0ZXJuIHNpZGUgYXJlIHBsYWNlZCwgb3ZlcnJpZGluZyB0aGUgbm9kZSdzIGdlbmVyYWwgcG9ydCBhbGlnbm1lbnQuXCIpLFY1YyksQzEpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsa3FlKSxMc2UpLCdQb3J0IEFsaWdubWVudCAoRWFzdCknKSxcIkRlZmluZXMgaG93IHBvcnRzIG9uIHRoZSBlYXN0ZXJuIHNpZGUgYXJlIHBsYWNlZCwgb3ZlcnJpZGluZyB0aGUgbm9kZSdzIGdlbmVyYWwgcG9ydCBhbGlnbm1lbnQuXCIpLFY1YyksQzEpLHBxYihLNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLEZtZSksTXNlKSwnTm9kZSBTaXplIENvbnN0cmFpbnRzJyksXCJXaGF0IHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBjYWxjdWxhdGluZyBhIG5vZGUncyBzaXplLiBFbXB0eSBzaXplIGNvbnN0cmFpbnRzIHNwZWNpZnkgdGhhdCBhIG5vZGUncyBzaXplIGlzIGFscmVhZHkgZml4ZWQgYW5kIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cIiksWjhjKSxXNWMpLEkxKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxFbWUpLE1zZSksJ05vZGUgU2l6ZSBPcHRpb25zJyksJ09wdGlvbnMgbW9kaWZ5aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgc2l6ZSBjb25zdHJhaW50cyBzZXQgb24gYSBub2RlLiBFYWNoIG1lbWJlciBvZiB0aGUgc2V0IHNwZWNpZmllcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gY2FsY3VsYXRpbmcgbm9kZSBzaXplcy4gVGhlIGVtcHR5IHNldCBjb3JyZXNwb25kcyB0byBubyBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMuJyksYzljKSxXNWMpLEoxKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxUbWUpLE1zZSksJ05vZGUgU2l6ZSBNaW5pbXVtJyksJ1RoZSBtaW5pbWFsIHNpemUgdG8gd2hpY2ggYSBub2RlIGNhbiBiZSByZWR1Y2VkLicpLGE5YyksWTVjKSxtMSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYnFlKSxNc2UpLCdGaXhlZCBHcmFwaCBTaXplJyksXCJCeSBkZWZhdWx0LCB0aGUgZml4ZWQgbGF5b3V0IHByb3ZpZGVyIHdpbGwgZW5sYXJnZSBhIGdyYXBoIHVudGlsIGl0IGlzIGxhcmdlIGVub3VnaCB0byBjb250YWluIGl0cyBjaGlsZHJlbi4gSWYgdGhpcyBvcHRpb24gaXMgc2V0LCBpdCB3b24ndCBkbyBzby5cIiksZmFsc2UpLFQ1Yyksd0kpLHBxYihMNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLG5xZSksSnBlKSwnRWRnZSBMYWJlbCBQbGFjZW1lbnQnKSwnR2l2ZXMgYSBoaW50IG9uIHdoZXJlIHRvIHB1dCBlZGdlIGxhYmVscy4nKSxEOGMpLFY1YyksdTEpLHBxYihKNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLENtZSksSnBlKSwnSW5saW5lIEVkZ2UgTGFiZWxzJyksXCJJZiB0cnVlLCBhbiBlZGdlIGxhYmVsIGlzIHBsYWNlZCBkaXJlY3RseSBvbiBpdHMgZWRnZS4gTWF5IG9ubHkgYXBwbHkgdG8gY2VudGVyIGVkZ2UgbGFiZWxzLiBUaGlzIGtpbmQgb2YgbGFiZWwgcGxhY2VtZW50IGlzIG9ubHkgYWR2aXNhYmxlIGlmIHRoZSBsYWJlbCdzIHJlbmRlcmluZyBpcyBzdWNoIHRoYXQgaXQgaXMgbm90IGNyb3NzZWQgYnkgaXRzIGVkZ2UgYW5kIHRodXMgc3RheXMgbGVnaWJsZS5cIiksZmFsc2UpLFQ1Yyksd0kpLHBxYihKNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsR3NlKSwnZm9udCcpLCdGb250IE5hbWUnKSwnRm9udCBuYW1lIHVzZWQgZm9yIGEgbGFiZWwuJyksWjVjKSxaSSkscHFiKEo1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxIc2UpLCdmb250JyksJ0ZvbnQgU2l6ZScpLCdGb250IHNpemUgdXNlZCBmb3IgYSBsYWJlbC4nKSxYNWMpLEpJKSxwcWIoSjVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLHJxZSksTnNlKSwnUG9ydCBBbmNob3IgT2Zmc2V0JyksJ1RoZSBvZmZzZXQgdG8gdGhlIHBvcnQgcG9zaXRpb24gd2hlcmUgY29ubmVjdGlvbnMgc2hhbGwgYmUgYXR0YWNoZWQuJyksWTVjKSxtMSkscHFiKE01YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxvcWUpLE5zZSksJ1BvcnQgSW5kZXgnKSxcIlRoZSBpbmRleCBvZiBhIHBvcnQgaW4gdGhlIGZpeGVkIG9yZGVyIGFyb3VuZCBhIG5vZGUuIFRoZSBvcmRlciBpcyBhc3N1bWVkIGFzIGNsb2Nrd2lzZSwgc3RhcnRpbmcgd2l0aCB0aGUgbGVmdG1vc3QgcG9ydCBvbiB0aGUgdG9wIHNpZGUuIFRoaXMgb3B0aW9uIG11c3QgYmUgc2V0IGlmICdQb3J0IENvbnN0cmFpbnRzJyBpcyBzZXQgdG8gRklYRURfT1JERVIgYW5kIG5vIHNwZWNpZmljIHBvc2l0aW9ucyBhcmUgZ2l2ZW4gZm9yIHRoZSBwb3J0cy4gQWRkaXRpb25hbGx5LCB0aGUgb3B0aW9uICdQb3J0IFNpZGUnIG11c3QgYmUgZGVmaW5lZCBpbiB0aGlzIGNhc2UuXCIpLFg1YyksSkkpLHBxYihNNWMpKSkpO3Q0YyhhLG5ldyBwNWMoRjVjKEU1YyhHNWMoeTVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFlwZSksTnNlKSwnUG9ydCBTaWRlJyksXCJUaGUgc2lkZSBvZiBhIG5vZGUgb24gd2hpY2ggYSBwb3J0IGlzIHNpdHVhdGVkLiBUaGlzIG9wdGlvbiBtdXN0IGJlIHNldCBpZiAnUG9ydCBDb25zdHJhaW50cycgaXMgc2V0IHRvIEZJWEVEX1NJREUgb3IgRklYRURfT1JERVIgYW5kIG5vIHNwZWNpZmljIHBvc2l0aW9ucyBhcmUgZ2l2ZW4gZm9yIHRoZSBwb3J0cy5cIiksQjljKSxWNWMpLEYxKSxwcWIoTTVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHo1YyhENWMoQTVjKEI1YyhuZXcgSDVjLFdwZSksTnNlKSwnUG9ydCBCb3JkZXIgT2Zmc2V0JyksXCJUaGUgb2Zmc2V0IG9mIHBvcnRzIG9uIHRoZSBub2RlIGJvcmRlci4gV2l0aCBhIHBvc2l0aXZlIG9mZnNldCB0aGUgcG9ydCBpcyBtb3ZlZCBvdXRzaWRlIG9mIHRoZSBub2RlLCB3aGlsZSB3aXRoIGEgbmVnYXRpdmUgb2Zmc2V0IHRoZSBwb3J0IGlzIG1vdmVkIHRvd2FyZHMgdGhlIGluc2lkZS4gQW4gb2Zmc2V0IG9mIDAgbWVhbnMgdGhhdCB0aGUgcG9ydCBpcyBwbGFjZWQgZGlyZWN0bHkgb24gdGhlIG5vZGUgYm9yZGVyLCBpLmUuIGlmIHRoZSBwb3J0IHNpZGUgaXMgbm9ydGgsIHRoZSBwb3J0J3Mgc291dGggYm9yZGVyIHRvdWNoZXMgdGhlIG5vZGVzJ3Mgbm9ydGggYm9yZGVyOyBpZiB0aGUgcG9ydCBzaWRlIGlzIGVhc3QsIHRoZSBwb3J0J3Mgd2VzdCBib3JkZXIgdG91Y2hlcyB0aGUgbm9kZXMncyBlYXN0IGJvcmRlcjsgaWYgdGhlIHBvcnQgc2lkZSBpcyBzb3V0aCwgdGhlIHBvcnQncyBub3J0aCBib3JkZXIgdG91Y2hlcyB0aGUgbm9kZSdzIHNvdXRoIGJvcmRlcjsgaWYgdGhlIHBvcnQgc2lkZSBpcyB3ZXN0LCB0aGUgcG9ydCdzIGVhc3QgYm9yZGVyIHRvdWNoZXMgdGhlIG5vZGUncyB3ZXN0IGJvcmRlci5cIiksVTVjKSxCSSkscHFiKE01YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsSG1lKSxPc2UpLCdQb3J0IExhYmVsIFBsYWNlbWVudCcpLFwiRGVjaWRlcyBvbiBhIHBsYWNlbWVudCBtZXRob2QgZm9yIHBvcnQgbGFiZWxzOyBpZiBlbXB0eSwgdGhlIG5vZGUgbGFiZWwncyBwb3NpdGlvbiBpcyBub3QgbW9kaWZpZWQuXCIpLHk5YyksVzVjKSxFMSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsZXFlKSxPc2UpLCdQb3J0IExhYmVscyBOZXh0IHRvIFBvcnQnKSxcIlVzZSAncG9ydExhYmVscy5wbGFjZW1lbnQnOiBORVhUX1RPX1BPUlRfT0ZfUE9TU0lCTEUuXCIpLGZhbHNlKSxUNWMpLHdJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxmcWUpLE9zZSksJ1RyZWF0IFBvcnQgTGFiZWxzIGFzIEdyb3VwJyksJ0lmIHRoaXMgb3B0aW9uIGlzIHRydWUgKGRlZmF1bHQpLCB0aGUgbGFiZWxzIG9mIGEgcG9ydCB3aWxsIGJlIHRyZWF0ZWQgYXMgYSBncm91cCB3aGVuIGl0IGNvbWVzIHRvIGNlbnRlcmluZyB0aGVtIG5leHQgdG8gdGhlaXIgcG9ydC4gSWYgdGhpcyBvcHRpb24gaXMgZmFsc2UsIG9ubHkgdGhlIGZpcnN0IGxhYmVsIHdpbGwgYmUgY2VudGVyZWQgbmV4dCB0byB0aGUgcG9ydCwgd2l0aCB0aGUgb3RoZXJzIGJlaW5nIHBsYWNlZCBiZWxvdy4gVGhpcyBvbmx5IGFwcGxpZXMgdG8gbGFiZWxzIG9mIGVhc3Rlcm4gYW5kIHdlc3Rlcm4gcG9ydHMgYW5kIHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgbGFiZWxzIGFyZSBub3QgcGxhY2VkIG5leHQgdG8gdGhlaXIgcG9ydC4nKSx0cnVlKSxUNWMpLHdJKSxwcWIoSzVjKSkpKTt0NGMoYSxuZXcgcDVjKEY1YyhFNWMoRzVjKHk1Yyh6NWMoRDVjKEE1YyhCNWMobmV3IEg1YyxfcGUpLFBzZSksJ0FjdGl2YXRlIEluc2lkZSBTZWxmIExvb3BzJyksXCJXaGV0aGVyIHRoaXMgbm9kZSBhbGxvd3MgdG8gcm91dGUgc2VsZiBsb29wcyBpbnNpZGUgb2YgaXQgaW5zdGVhZCBvZiBhcm91bmQgaXQuIElmIHNldCB0byB0cnVlLCB0aGlzIHdpbGwgbWFrZSB0aGUgbm9kZSBhIGNvbXBvdW5kIG5vZGUgaWYgaXQgaXNuJ3QgYWxyZWFkeSwgYW5kIHdpbGwgcmVxdWlyZSB0aGUgbGF5b3V0IGFsZ29yaXRobSB0byBzdXBwb3J0IGNvbXBvdW5kIG5vZGVzIHdpdGggaGllcmFyY2hpY2FsIHBvcnRzLlwiKSxmYWxzZSksVDVjKSx3SSkscHFiKEs1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsYXFlKSxQc2UpLCdJbnNpZGUgU2VsZiBMb29wJyksJ1doZXRoZXIgYSBzZWxmIGxvb3Agc2hvdWxkIGJlIHJvdXRlZCBpbnNpZGUgYSBub2RlIGluc3RlYWQgb2YgYXJvdW5kIHRoYXQgbm9kZS4nKSxmYWxzZSksVDVjKSx3SSkscHFiKEk1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsJGxlKSwnZWRnZScpLCdFZGdlIFRoaWNrbmVzcycpLCdUaGUgdGhpY2tuZXNzIG9mIGFuIGVkZ2UuIFRoaXMgaXMgYSBoaW50IG9uIHRoZSBsaW5lIHdpZHRoIHVzZWQgdG8gZHJhdyBhbiBlZGdlLCBwb3NzaWJseSByZXF1aXJpbmcgbW9yZSBzcGFjZSB0byBiZSByZXNlcnZlZCBmb3IgaXQuJyksMSksVTVjKSxCSSkscHFiKEk1YykpKSk7dDRjKGEsbmV3IHA1YyhGNWMoRTVjKEc1Yyh5NWMoejVjKEQ1YyhBNWMoQjVjKG5ldyBINWMsSXNlKSwnZWRnZScpLCdFZGdlIFR5cGUnKSwnVGhlIHR5cGUgb2YgYW4gZWRnZS4gVGhpcyBpcyB1c3VhbGx5IHVzZWQgZm9yIFVNTCBjbGFzcyBkaWFncmFtcywgd2hlcmUgYXNzb2NpYXRpb25zIG11c3QgYmUgaGFuZGxlZCBkaWZmZXJlbnRseSBmcm9tIGdlbmVyYWxpemF0aW9ucy4nKSxIOGMpLFY1YyksdzEpLHBxYihJNWMpKSkpO3M0YyhhLG5ldyBXM2MoYjRjKGQ0YyhjNGMobmV3IGU0YyxzbmUpLCdMYXllcmVkJyksJ1RoZSBsYXllci1iYXNlZCBtZXRob2Qgd2FzIGludHJvZHVjZWQgYnkgU3VnaXlhbWEsIFRhZ2F3YSBhbmQgVG9kYSBpbiAxOTgxLiBJdCBlbXBoYXNpemVzIHRoZSBkaXJlY3Rpb24gb2YgZWRnZXMgYnkgcG9pbnRpbmcgYXMgbWFueSBlZGdlcyBhcyBwb3NzaWJsZSBpbnRvIHRoZSBzYW1lIGRpcmVjdGlvbi4gVGhlIG5vZGVzIGFyZSBhcnJhbmdlZCBpbiBsYXllcnMsIHdoaWNoIGFyZSBzb21ldGltZXMgY2FsbGVkIFwiaGllcmFyY2hpZXNcIiwgYW5kIHRoZW4gcmVvcmRlcmVkIHN1Y2ggdGhhdCB0aGUgbnVtYmVyIG9mIGVkZ2UgY3Jvc3NpbmdzIGlzIG1pbmltaXplZC4gQWZ0ZXJ3YXJkcywgY29uY3JldGUgY29vcmRpbmF0ZXMgYXJlIGNvbXB1dGVkIGZvciB0aGUgbm9kZXMgYW5kIGVkZ2UgYmVuZCBwb2ludHMuJykpKTtzNGMoYSxuZXcgVzNjKGI0YyhkNGMoYzRjKG5ldyBlNGMsJ29yZy5lY2xpcHNlLmVsay5vcnRob2dvbmFsJyksJ09ydGhvZ29uYWwnKSwnT3J0aG9nb25hbCBtZXRob2RzIHRoYXQgZm9sbG93IHRoZSBcInRvcG9sb2d5LXNoYXBlLW1ldHJpY3NcIiBhcHByb2FjaCBieSBCYXRpbmksIE5hcmRlbGxpIGFuZCBUYW1hc3NpYSBcXCc4Ni4gVGhlIGZpcnN0IHBoYXNlIGRldGVybWluZXMgdGhlIHRvcG9sb2d5IG9mIHRoZSBkcmF3aW5nIGJ5IGFwcGx5aW5nIGEgcGxhbmFyaXphdGlvbiB0ZWNobmlxdWUsIHdoaWNoIHJlc3VsdHMgaW4gYSBwbGFuYXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyYXBoLiBUaGUgb3J0aG9nb25hbCBzaGFwZSBpcyBjb21wdXRlZCBpbiB0aGUgc2Vjb25kIHBoYXNlLCB3aGljaCBhaW1zIGF0IG1pbmltaXppbmcgdGhlIG51bWJlciBvZiBlZGdlIGJlbmRzLCBhbmQgaXMgY2FsbGVkIG9ydGhvZ29uYWxpemF0aW9uLiBUaGUgdGhpcmQgcGhhc2UgbGVhZHMgdG8gY29uY3JldGUgY29vcmRpbmF0ZXMgZm9yIG5vZGVzIGFuZCBlZGdlIGJlbmQgcG9pbnRzIGJ5IGFwcGx5aW5nIGEgY29tcGFjdGlvbiBtZXRob2QsIHRodXMgZGVmaW5pbmcgdGhlIG1ldHJpY3MuJykpKTtzNGMoYSxuZXcgVzNjKGI0YyhkNGMoYzRjKG5ldyBlNGMsdW1lKSwnRm9yY2UnKSwnTGF5b3V0IGFsZ29yaXRobXMgdGhhdCBmb2xsb3cgcGh5c2ljYWwgYW5hbG9naWVzIGJ5IHNpbXVsYXRpbmcgYSBzeXN0ZW0gb2YgYXR0cmFjdGl2ZSBhbmQgcmVwdWxzaXZlIGZvcmNlcy4gVGhlIGZpcnN0IHN1Y2Nlc3NmdWwgbWV0aG9kIG9mIHRoaXMga2luZCB3YXMgcHJvcG9zZWQgYnkgRWFkZXMgaW4gMTk4NC4nKSkpO3M0YyhhLG5ldyBXM2MoYjRjKGQ0YyhjNGMobmV3IGU0Yywnb3JnLmVjbGlwc2UuZWxrLmNpcmNsZScpLCdDaXJjbGUnKSwnQ2lyY3VsYXIgbGF5b3V0IGFsZ29yaXRobXMgZW1waGFzaXplIGN5Y2xlcyBvciBiaWNvbm5lY3RlZCBjb21wb25lbnRzIG9mIGEgZ3JhcGggYnkgYXJyYW5naW5nIHRoZW0gaW4gY2lyY2xlcy4gVGhpcyBpcyB1c2VmdWwgaWYgYSBkcmF3aW5nIGlzIGRlc2lyZWQgd2hlcmUgc3VjaCBjb21wb25lbnRzIGFyZSBjbGVhcmx5IGdyb3VwZWQsIG9yIHdoZXJlIGN5Y2xlcyBhcmUgc2hvd24gYXMgcHJvbWluZW50IE9QVElPTlMgb2YgdGhlIGdyYXBoLicpKSk7czRjKGEsbmV3IFczYyhiNGMoZDRjKGM0YyhuZXcgZTRjLGJyZSksJ1RyZWUnKSwnU3BlY2lhbGl6ZWQgbGF5b3V0IG1ldGhvZHMgZm9yIHRyZWVzLCBpLmUuIGFjeWNsaWMgZ3JhcGhzLiBUaGUgcmVndWxhciBzdHJ1Y3R1cmUgb2YgZ3JhcGhzIHRoYXQgaGF2ZSBubyB1bmRpcmVjdGVkIGN5Y2xlcyBjYW4gYmUgZW1waGFzaXplZCB1c2luZyBhbiBhbGdvcml0aG0gb2YgdGhpcyB0eXBlLicpKSk7czRjKGEsbmV3IFczYyhiNGMoZDRjKGM0YyhuZXcgZTRjLCdvcmcuZWNsaXBzZS5lbGsucGxhbmFyJyksJ1BsYW5hcicpLCdBbGdvcml0aG1zIHRoYXQgcmVxdWlyZSBhIHBsYW5hciBvciB1cHdhcmQgcGxhbmFyIGdyYXBoLiBNb3N0IG9mIHRoZXNlIGFsZ29yaXRobXMgYXJlIHRoZW9yZXRpY2FsbHkgaW50ZXJlc3RpbmcsIGJ1dCBub3QgcHJhY3RpY2FsbHkgdXNhYmxlLicpKSk7czRjKGEsbmV3IFczYyhiNGMoZDRjKGM0YyhuZXcgZTRjLHNyZSksJ1JhZGlhbCcpLCdSYWRpYWwgbGF5b3V0IGFsZ29yaXRobXMgdXN1YWxseSBwb3NpdGlvbiB0aGUgbm9kZXMgb2YgdGhlIGdyYXBoIG9uIGNvbmNlbnRyaWMgY2lyY2xlcy4nKSkpOyRhZCgobmV3IF9hZCxhKSk7WTdjKChuZXcgWjdjLGEpKTtqZGQoKG5ldyBrZGQsYSkpfTt2YXIgbzhjLHA4YyxxOGMscjhjLHM4Yyx0OGMsdThjLHY4Yyx3OGMseDhjLHk4Yyx6OGMsQThjLEI4YyxDOGMsRDhjLEU4YyxGOGMsRzhjLEg4YyxJOGMsSjhjLEs4YyxMOGMsTThjLE44YyxPOGMsUDhjLFE4YyxSOGMsUzhjLFQ4YyxVOGMsVjhjLFc4YyxYOGMsWThjLFo4YywkOGMsXzhjLGE5YyxiOWMsYzljLGQ5YyxlOWMsZjljLGc5YyxoOWMsaTljLGo5YyxrOWMsbDljLG05YyxuOWMsbzljLHA5YyxxOWMscjljLHM5Yyx0OWMsdTljLHY5Yyx3OWMseDljLHk5Yyx6OWMsQTljLEI5YyxDOWMsRDljLEU5YyxGOWMsRzljLEg5YyxJOWMsSjljLEs5YyxMOWMsTTljLE45YyxPOWMsUDljLFE5YyxSOWMsUzljLFQ5YyxVOWMsVjljLFc5YyxYOWM7dmFyIHMxPW1kYihvc2UsJ0NvcmVPcHRpb25zJyw2ODQpO2JjYigxMDMsMjIsezM6MSwzNToxLDIyOjEsMTAzOjF9LGlhZCk7dmFyIF85YyxhYWQsYmFkLGNhZCxkYWQ7dmFyIHQxPW5kYihvc2UsQ2xlLDEwMyxDSSxrYWQsamFkKTt2YXIgbGFkO2JjYigyNzIsMjIsezM6MSwzNToxLDIyOjEsMjcyOjF9LHJhZCk7dmFyIG5hZCxvYWQscGFkO3ZhciB1MT1uZGIob3NlLCdFZGdlTGFiZWxQbGFjZW1lbnQnLDI3MixDSSx0YWQsc2FkKTt2YXIgdWFkO2JjYigyMTgsMjIsezM6MSwzNToxLDIyOjEsMjE4OjF9LEJhZCk7dmFyIHdhZCx4YWQseWFkLHphZDt2YXIgdjE9bmRiKG9zZSwnRWRnZVJvdXRpbmcnLDIxOCxDSSxEYWQsQ2FkKTt2YXIgRWFkO2JjYigzMTIsMjIsezM6MSwzNToxLDIyOjEsMzEyOjF9LE5hZCk7dmFyIEdhZCxIYWQsSWFkLEphZCxLYWQsTGFkO3ZhciB3MT1uZGIob3NlLCdFZGdlVHlwZScsMzEyLENJLFBhZCxPYWQpO3ZhciBRYWQ7YmNiKDk3NywxLGFsZSxfYWQpO18uUWU9ZnVuY3Rpb24gYWJkKGEpeyRhZChhKX07dmFyIFNhZCxUYWQsVWFkLFZhZCxXYWQsWGFkLFlhZDt2YXIgeTE9bWRiKG9zZSwnRml4ZWRMYXlvdXRlck9wdGlvbnMnLDk3Nyk7YmNiKDk3OCwxLHt9LGJiZCk7Xy4kZT1mdW5jdGlvbiBjYmQoKXt2YXIgYTtyZXR1cm4gYT1uZXcgWmZkLGF9O18uX2U9ZnVuY3Rpb24gZGJkKGEpe307dmFyIHgxPW1kYihvc2UsJ0ZpeGVkTGF5b3V0ZXJPcHRpb25zL0ZpeGVkRmFjdG9yeScsOTc4KTtiY2IoMzM0LDIyLHszOjEsMzU6MSwyMjoxLDMzNDoxfSxpYmQpO3ZhciBlYmQsZmJkLGdiZDt2YXIgejE9bmRiKG9zZSwnSGllcmFyY2h5SGFuZGxpbmcnLDMzNCxDSSxrYmQsamJkKTt2YXIgbGJkO2JjYigyODUsMjIsezM6MSwzNToxLDIyOjEsMjg1OjF9LHRiZCk7dmFyIG5iZCxvYmQscGJkLHFiZDt2YXIgQTE9bmRiKG9zZSwnTGFiZWxTaWRlJywyODUsQ0ksdmJkLHViZCk7dmFyIHdiZDtiY2IoOTMsMjIsezM6MSwzNToxLDIyOjEsOTM6MX0sSWJkKTt2YXIgeWJkLHpiZCxBYmQsQmJkLENiZCxEYmQsRWJkLEZiZCxHYmQ7dmFyIEIxPW5kYihvc2UsJ05vZGVMYWJlbFBsYWNlbWVudCcsOTMsQ0ksTGJkLEtiZCk7dmFyIE1iZDtiY2IoMjQ5LDIyLHszOjEsMzU6MSwyMjoxLDI0OToxfSxVYmQpO3ZhciBPYmQsUGJkLFFiZCxSYmQsU2JkO3ZhciBDMT1uZGIob3NlLCdQb3J0QWxpZ25tZW50JywyNDksQ0ksV2JkLFZiZCk7dmFyIFhiZDtiY2IoOTgsMjIsezM6MSwzNToxLDIyOjEsOTg6MX0sZ2NkKTt2YXIgWmJkLCRiZCxfYmQsYWNkLGJjZCxjY2Q7dmFyIEQxPW5kYihvc2UsJ1BvcnRDb25zdHJhaW50cycsOTgsQ0ksaWNkLGhjZCk7dmFyIGpjZDtiY2IoMjczLDIyLHszOjEsMzU6MSwyMjoxLDI3MzoxfSxzY2QpO3ZhciBsY2QsbWNkLG5jZCxvY2QscGNkLHFjZDt2YXIgRTE9bmRiKG9zZSwnUG9ydExhYmVsUGxhY2VtZW50JywyNzMsQ0ksd2NkLHZjZCk7dmFyIHhjZDtiY2IoNjEsMjIsezM6MSwzNToxLDIyOjEsNjE6MX0sWWNkKTt2YXIgemNkLEFjZCxCY2QsQ2NkLERjZCxFY2QsRmNkLEdjZCxIY2QsSWNkLEpjZCxLY2QsTGNkLE1jZCxOY2QsT2NkLFBjZCxRY2QsUmNkLFNjZCxUY2Q7dmFyIEYxPW5kYihvc2UsJ1BvcnRTaWRlJyw2MSxDSSxfY2QsJGNkKTt2YXIgYmRkO2JjYig5ODEsMSxhbGUsa2RkKTtfLlFlPWZ1bmN0aW9uIGxkZChhKXtqZGQoYSl9O3ZhciBkZGQsZWRkLGZkZCxnZGQsaGRkO3ZhciBIMT1tZGIob3NlLCdSYW5kb21MYXlvdXRlck9wdGlvbnMnLDk4MSk7YmNiKDk4MiwxLHt9LG1kZCk7Xy4kZT1mdW5jdGlvbiBuZGQoKXt2YXIgYTtyZXR1cm4gYT1uZXcgTWdkLGF9O18uX2U9ZnVuY3Rpb24gb2RkKGEpe307dmFyIEcxPW1kYihvc2UsJ1JhbmRvbUxheW91dGVyT3B0aW9ucy9SYW5kb21GYWN0b3J5Jyw5ODIpO2JjYigzNzQsMjIsezM6MSwzNToxLDIyOjEsMzc0OjF9LHVkZCk7dmFyIHBkZCxxZGQscmRkLHNkZDt2YXIgSTE9bmRiKG9zZSwnU2l6ZUNvbnN0cmFpbnQnLDM3NCxDSSx3ZGQsdmRkKTt2YXIgeGRkO2JjYigyNTksMjIsezM6MSwzNToxLDIyOjEsMjU5OjF9LEpkZCk7dmFyIHpkZCxBZGQsQmRkLENkZCxEZGQsRWRkLEZkZCxHZGQsSGRkO3ZhciBKMT1uZGIob3NlLCdTaXplT3B0aW9ucycsMjU5LENJLExkZCxLZGQpO3ZhciBNZGQ7YmNiKDM3MCwxLHsxOTQ5OjF9LFpkZCk7Xy5iPWZhbHNlO18uYz0wO18uZD0tMTtfLmU9bnVsbDtfLmY9bnVsbDtfLmc9LTE7Xy5qPWZhbHNlO18uaz1mYWxzZTtfLm49ZmFsc2U7Xy5vPTA7Xy5xPTA7Xy5yPTA7dmFyIEwxPW1kYih5cWUsJ0Jhc2ljUHJvZ3Jlc3NNb25pdG9yJywzNzApO2JjYig5NzIsMjA5LE1sZSxnZWQpO18uWmU9ZnVuY3Rpb24ga2VkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrO09kZChiLCdCb3ggbGF5b3V0JywyKTtlPUdkYihFRChoa2QoYSwoWDdjKCksVzdjKSkpKTtmPUJEKGhrZChhLFQ3YyksMTE2KTtjPUNjYihERChoa2QoYSxPN2MpKSk7ZD1DY2IoREQoaGtkKGEsUDdjKSkpO3N3aXRjaChCRChoa2QoYSxNN2MpLDMxMSkuZyl7Y2FzZSAwOmc9KGg9bmV3IFRrYigoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKSxtbWIoKSxPa2IoaCxuZXcgbWVkKGQpKSxoKTtpPXJmZChhKTtqPUVEKGhrZChhLEw3YykpOyhqPT1udWxsfHwodUNiKGopLGopPD0wKSYmKGo9MS4zKTtrPWRlZChnLGUsZixpLmEsaS5iLGMsKHVDYihqKSxqKSk7QWZkKGEsay5hLGsuYixmYWxzZSx0cnVlKTticmVhaztkZWZhdWx0OmVlZChhLGUsZixjKTt9UWRkKGIpfTt2YXIgUzE9bWRiKHlxZSwnQm94TGF5b3V0UHJvdmlkZXInLDk3Mik7YmNiKDk3MywxLERrZSxtZWQpO18udWU9ZnVuY3Rpb24gbmVkKGEsYil7cmV0dXJuIGxlZCh0aGlzLEJEKGEsMzMpLEJEKGIsMzMpKX07Xy5GYj1mdW5jdGlvbiBvZWQoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIHBlZCgpe3JldHVybiBuZXcgdHBiKHRoaXMpfTtfLmE9ZmFsc2U7dmFyIE0xPW1kYih5cWUsJ0JveExheW91dFByb3ZpZGVyLzEnLDk3Myk7YmNiKDE1NywxLHsxNTc6MX0sd2VkLHhlZCk7Xy5JYj1mdW5jdGlvbiB5ZWQoKXtyZXR1cm4gdGhpcy5jP19vZCh0aGlzLmMpOkZlKHRoaXMuYil9O3ZhciBOMT1tZGIoeXFlLCdCb3hMYXlvdXRQcm92aWRlci9Hcm91cCcsMTU3KTtiY2IoMzExLDIyLHszOjEsMzU6MSwyMjoxLDMxMToxfSxFZWQpO3ZhciB6ZWQsQWVkLEJlZCxDZWQ7dmFyIE8xPW5kYih5cWUsJ0JveExheW91dFByb3ZpZGVyL1BhY2tpbmdNb2RlJywzMTEsQ0ksR2VkLEZlZCk7dmFyIEhlZDtiY2IoOTc0LDEsRGtlLEplZCk7Xy51ZT1mdW5jdGlvbiBLZWQoYSxiKXtyZXR1cm4gaGVkKEJEKGEsMTU3KSxCRChiLDE1NykpfTtfLkZiPWZ1bmN0aW9uIExlZChhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gTWVkKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBQMT1tZGIoeXFlLCdCb3hMYXlvdXRQcm92aWRlci9sYW1iZGEkMCRUeXBlJyw5NzQpO2JjYig5NzUsMSxEa2UsTmVkKTtfLnVlPWZ1bmN0aW9uIE9lZChhLGIpe3JldHVybiBpZWQoQkQoYSwxNTcpLEJEKGIsMTU3KSl9O18uRmI9ZnVuY3Rpb24gUGVkKGEpe3JldHVybiB0aGlzPT09YX07Xy52ZT1mdW5jdGlvbiBRZWQoKXtyZXR1cm4gbmV3IHRwYih0aGlzKX07dmFyIFExPW1kYih5cWUsJ0JveExheW91dFByb3ZpZGVyL2xhbWJkYSQxJFR5cGUnLDk3NSk7YmNiKDk3NiwxLERrZSxSZWQpO18udWU9ZnVuY3Rpb24gU2VkKGEsYil7cmV0dXJuIGplZChCRChhLDE1NyksQkQoYiwxNTcpKX07Xy5GYj1mdW5jdGlvbiBUZWQoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLnZlPWZ1bmN0aW9uIFVlZCgpe3JldHVybiBuZXcgdHBiKHRoaXMpfTt2YXIgUjE9bWRiKHlxZSwnQm94TGF5b3V0UHJvdmlkZXIvbGFtYmRhJDIkVHlwZScsOTc2KTtiY2IoMTM2NSwxLHs4MzE6MX0sVmVkKTtfLnFnPWZ1bmN0aW9uIFdlZChhLGIpe3JldHVybiBWeWMoKSwhSkQoYiwxNjApfHxoMmMoKFkxYygpLFgxYyxCRChhLDE2MCkpLGIpfTt2YXIgVDE9bWRiKHlxZSwnRWxrU3BhY2luZ3MvQWJzdHJhY3RTcGFjaW5nc0J1aWxkZXIvbGFtYmRhJDAkVHlwZScsMTM2NSk7YmNiKDEzNjYsMSxxaWUsWGVkKTtfLnRkPWZ1bmN0aW9uIFllZChhKXtZeWModGhpcy5hLEJEKGEsMTQ2KSl9O3ZhciBVMT1tZGIoeXFlLCdFbGtTcGFjaW5ncy9BYnN0cmFjdFNwYWNpbmdzQnVpbGRlci9sYW1iZGEkMSRUeXBlJywxMzY2KTtiY2IoMTM2NywxLHFpZSxaZWQpO18udGQ9ZnVuY3Rpb24gJGVkKGEpe0JEKGEsOTQpO1Z5YygpfTt2YXIgVjE9bWRiKHlxZSwnRWxrU3BhY2luZ3MvQWJzdHJhY3RTcGFjaW5nc0J1aWxkZXIvbGFtYmRhJDIkVHlwZScsMTM2Nyk7YmNiKDEzNzEsMSxxaWUsX2VkKTtfLnRkPWZ1bmN0aW9uIGFmZChhKXtaeWModGhpcy5hLEJEKGEsOTQpKX07dmFyIFcxPW1kYih5cWUsJ0Vsa1NwYWNpbmdzL0Fic3RyYWN0U3BhY2luZ3NCdWlsZGVyL2xhbWJkYSQzJFR5cGUnLDEzNzEpO2JjYigxMzY5LDEsT2llLGJmZCk7Xy5NYj1mdW5jdGlvbiBjZmQoYSl7cmV0dXJuICR5Yyh0aGlzLmEsdGhpcy5iLEJEKGEsMTQ2KSl9O3ZhciBYMT1tZGIoeXFlLCdFbGtTcGFjaW5ncy9BYnN0cmFjdFNwYWNpbmdzQnVpbGRlci9sYW1iZGEkNCRUeXBlJywxMzY5KTtiY2IoMTM2OCwxLE9pZSxkZmQpO18uTWI9ZnVuY3Rpb24gZWZkKGEpe3JldHVybiBhemModGhpcy5hLHRoaXMuYixCRChhLDgzMSkpfTt2YXIgWTE9bWRiKHlxZSwnRWxrU3BhY2luZ3MvQWJzdHJhY3RTcGFjaW5nc0J1aWxkZXIvbGFtYmRhJDUkVHlwZScsMTM2OCk7YmNiKDEzNzAsMSxxaWUsZmZkKTtfLnRkPWZ1bmN0aW9uIGdmZChhKXtfeWModGhpcy5hLHRoaXMuYixCRChhLDE0NikpfTt2YXIgWjE9bWRiKHlxZSwnRWxrU3BhY2luZ3MvQWJzdHJhY3RTcGFjaW5nc0J1aWxkZXIvbGFtYmRhJDYkVHlwZScsMTM3MCk7YmNiKDkzNSwxLHt9LEhmZCk7Xy5LYj1mdW5jdGlvbiBJZmQoYSl7cmV0dXJuIEdmZChhKX07Xy5GYj1mdW5jdGlvbiBKZmQoYSl7cmV0dXJuIHRoaXM9PT1hfTt2YXIgXzE9bWRiKHlxZSwnRWxrVXRpbC9sYW1iZGEkMCRUeXBlJyw5MzUpO2JjYig5MzYsMSxxaWUsS2ZkKTtfLnRkPWZ1bmN0aW9uIExmZChhKXt1ZmQodGhpcy5hLHRoaXMuYixCRChhLDc5KSl9O18uYT0wO18uYj0wO3ZhciBhMj1tZGIoeXFlLCdFbGtVdGlsL2xhbWJkYSQxJFR5cGUnLDkzNik7YmNiKDkzNywxLHFpZSxNZmQpO18udGQ9ZnVuY3Rpb24gTmZkKGEpe3ZmZCh0aGlzLmEsdGhpcy5iLEJEKGEsMjAyKSl9O18uYT0wO18uYj0wO3ZhciBiMj1tZGIoeXFlLCdFbGtVdGlsL2xhbWJkYSQyJFR5cGUnLDkzNyk7YmNiKDkzOCwxLHFpZSxPZmQpO18udGQ9ZnVuY3Rpb24gUGZkKGEpe3dmZCh0aGlzLmEsdGhpcy5iLEJEKGEsMTM3KSl9O18uYT0wO18uYj0wO3ZhciBjMj1tZGIoeXFlLCdFbGtVdGlsL2xhbWJkYSQzJFR5cGUnLDkzOCk7YmNiKDkzOSwxLHFpZSxRZmQpO18udGQ9ZnVuY3Rpb24gUmZkKGEpe3hmZCh0aGlzLmEsQkQoYSw0NjkpKX07dmFyIGQyPW1kYih5cWUsJ0Vsa1V0aWwvbGFtYmRhJDQkVHlwZScsOTM5KTtiY2IoMzQyLDEsezM1OjEsMzQyOjF9LFRmZCk7Xy53ZD1mdW5jdGlvbiBVZmQoYSl7cmV0dXJuIFNmZCh0aGlzLEJEKGEsMjM2KSl9O18uRmI9ZnVuY3Rpb24gVmZkKGEpe3ZhciBiO2lmKEpEKGEsMzQyKSl7Yj1CRChhLDM0Mik7cmV0dXJuIHRoaXMuYT09Yi5hfXJldHVybiBmYWxzZX07Xy5IYj1mdW5jdGlvbiBXZmQoKXtyZXR1cm4gUUQodGhpcy5hKX07Xy5JYj1mdW5jdGlvbiBYZmQoKXtyZXR1cm4gdGhpcy5hKycgKGV4Y2x1c2l2ZSknfTtfLmE9MDt2YXIgZTI9bWRiKHlxZSwnRXhjbHVzaXZlQm91bmRzL0V4Y2x1c2l2ZUxvd2VyQm91bmQnLDM0Mik7YmNiKDExMzgsMjA5LE1sZSxaZmQpO18uWmU9ZnVuY3Rpb24gJGZkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHUsdix3LEEsQjtPZGQoYiwnRml4ZWQgTGF5b3V0JywxKTtmPUJEKGhrZChhLChZOWMoKSxFOGMpKSwyMTgpO2w9MDttPTA7Zm9yKHM9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtzLmUhPXMuaS5nYygpOyl7cT1CRChEeWQocyksMzMpO0I9QkQoaGtkKHEsKFphZCgpLFlhZCkpLDgpO2lmKEIpe2JsZChxLEIuYSxCLmIpO2lmKEJEKGhrZChxLFRhZCksMTc0KS5IYygodGRkKCkscGRkKSkpe249QkQoaGtkKHEsVmFkKSw4KTtuLmE+MCYmbi5iPjAmJkFmZChxLG4uYSxuLmIsdHJ1ZSx0cnVlKX19bD0kd25kLk1hdGgubWF4KGwscS5pK3EuZyk7bT0kd25kLk1hdGgubWF4KG0scS5qK3EuZik7Zm9yKGo9bmV3IEZ5ZCgoIXEubiYmKHEubj1uZXcgY1VkKEQyLHEsMSw3KSkscS5uKSk7ai5lIT1qLmkuZ2MoKTspe2g9QkQoRHlkKGopLDEzNyk7Qj1CRChoa2QoaCxZYWQpLDgpOyEhQiYmYmxkKGgsQi5hLEIuYik7bD0kd25kLk1hdGgubWF4KGwscS5pK2guaStoLmcpO209JHduZC5NYXRoLm1heChtLHEuaitoLmoraC5mKX1mb3Iodj1uZXcgRnlkKCghcS5jJiYocS5jPW5ldyBjVWQoRjIscSw5LDkpKSxxLmMpKTt2LmUhPXYuaS5nYygpOyl7dT1CRChEeWQodiksMTE4KTtCPUJEKGhrZCh1LFlhZCksOCk7ISFCJiZibGQodSxCLmEsQi5iKTt3PXEuaSt1Lmk7QT1xLmordS5qO2w9JHduZC5NYXRoLm1heChsLHcrdS5nKTttPSR3bmQuTWF0aC5tYXgobSxBK3UuZik7Zm9yKGk9bmV3IEZ5ZCgoIXUubiYmKHUubj1uZXcgY1VkKEQyLHUsMSw3KSksdS5uKSk7aS5lIT1pLmkuZ2MoKTspe2g9QkQoRHlkKGkpLDEzNyk7Qj1CRChoa2QoaCxZYWQpLDgpOyEhQiYmYmxkKGgsQi5hLEIuYik7bD0kd25kLk1hdGgubWF4KGwsdytoLmkraC5nKTttPSR3bmQuTWF0aC5tYXgobSxBK2guaitoLmYpfX1mb3IoZT1uZXcgU3IodXIoX3NkKHEpLmEuS2MoKSxuZXcgU3EpKTtRcihlKTspe2M9QkQoUnIoZSksNzkpO2s9WWZkKGMpO2w9JHduZC5NYXRoLm1heChsLGsuYSk7bT0kd25kLk1hdGgubWF4KG0say5iKX1mb3IoZD1uZXcgU3IodXIoJHNkKHEpLmEuS2MoKSxuZXcgU3EpKTtRcihkKTspe2M9QkQoUnIoZCksNzkpO2lmKFhvZChqdGQoYykpIT1hKXtrPVlmZChjKTtsPSR3bmQuTWF0aC5tYXgobCxrLmEpO209JHduZC5NYXRoLm1heChtLGsuYil9fX1pZihmPT0oQWFkKCksd2FkKSl7Zm9yKHI9bmV3IEZ5ZCgoIWEuYSYmKGEuYT1uZXcgY1VkKEUyLGEsMTAsMTEpKSxhLmEpKTtyLmUhPXIuaS5nYygpOyl7cT1CRChEeWQociksMzMpO2ZvcihkPW5ldyBTcih1cihfc2QocSkuYS5LYygpLG5ldyBTcSkpO1FyKGQpOyl7Yz1CRChScihkKSw3OSk7Zz1wZmQoYyk7Zy5iPT0wP2prZChjLFE4YyxudWxsKTpqa2QoYyxROGMsZyl9fX1pZighQ2NiKEREKGhrZChhLChaYWQoKSxVYWQpKSkpKXt0PUJEKGhrZChhLFdhZCksMTE2KTtwPWwrdC5iK3QuYztvPW0rdC5kK3QuYTtBZmQoYSxwLG8sdHJ1ZSx0cnVlKX1RZGQoYil9O3ZhciBmMj1tZGIoeXFlLCdGaXhlZExheW91dFByb3ZpZGVyJywxMTM4KTtiY2IoMzczLDEzNCx7MzoxLDQxNDoxLDM3MzoxLDk0OjEsMTM0OjF9LF9mZCxhZ2QpO18uSmY9ZnVuY3Rpb24gZGdkKGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztpZighYil7cmV0dXJufXRyeXtqPW1mYihiLCc7LDsnKTtmb3IoZz1qLGg9MCxpPWcubGVuZ3RoO2g8aTsrK2gpe2Y9Z1toXTtkPW1mYihmLCdcXFxcOicpO2U9azRjKG40YygpLGRbMF0pO2lmKCFlKXt0aHJvdyB2YmIobmV3IFdkYignSW52YWxpZCBvcHRpb24gaWQ6ICcrZFswXSkpfWs9bzVjKGUsZFsxXSk7aWYoaz09bnVsbCl7dGhyb3cgdmJiKG5ldyBXZGIoJ0ludmFsaWQgb3B0aW9uIHZhbHVlOiAnK2RbMV0pKX1rPT1udWxsPyghdGhpcy5xJiYodGhpcy5xPW5ldyBMcWIpLFRoYih0aGlzLnEsZSkpOighdGhpcy5xJiYodGhpcy5xPW5ldyBMcWIpLFJoYih0aGlzLnEsZSxrKSl9fWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsMTAyKSl7Yz1hO3Rocm93IHZiYihuZXcgWGRiKGMpKX1lbHNlIHRocm93IHZiYihhKX19O18uSWI9ZnVuY3Rpb24gZWdkKCl7dmFyIGE7YT1HRChHQWIoTkFiKCghdGhpcy5xPyhtbWIoKSxtbWIoKSxrbWIpOnRoaXMucSkudmMoKS5PYygpLG5ldyBmZ2QpLEF5YihuZXcgcHpiLG5ldyBuemIsbmV3IFp5YixuZXcgX3liLE9DKEdDKHhMLDEpLEtpZSwxMzIsMCxbXSkpKSk7cmV0dXJuIGF9O3ZhciBpMj1tZGIoeXFlLCdJbmRpdmlkdWFsU3BhY2luZ3MnLDM3Myk7YmNiKDk3MSwxLHt9LGZnZCk7Xy5LYj1mdW5jdGlvbiBnZ2QoYSl7cmV0dXJuIGNnZChCRChhLDQyKSl9O3ZhciBoMj1tZGIoeXFlLCdJbmRpdmlkdWFsU3BhY2luZ3MvbGFtYmRhJDAkVHlwZScsOTcxKTtiY2IoNzA5LDEse30samdkKTtfLmM9MDt2YXIgajI9bWRiKHlxZSwnSW5zdGFuY2VQb29sJyw3MDkpO2JjYigxMjc1LDEse30sa2dkKTt2YXIgbDI9bWRiKHlxZSwnTG9nZ2VkR3JhcGgnLDEyNzUpO2JjYigzOTYsMjIsezM6MSwzNToxLDIyOjEsMzk2OjF9LHFnZCk7dmFyIGxnZCxtZ2QsbmdkLG9nZDt2YXIgazI9bmRiKHlxZSwnTG9nZ2VkR3JhcGgvVHlwZScsMzk2LENJLHNnZCxyZ2QpO3ZhciB0Z2Q7YmNiKDQ2LDEsezIwOjEsNDY6MX0sdmdkKTtfLkpjPWZ1bmN0aW9uIHhnZChhKXtyZWIodGhpcyxhKX07Xy5GYj1mdW5jdGlvbiB3Z2QoYSl7dmFyIGIsYyxkO2lmKEpEKGEsNDYpKXtjPUJEKGEsNDYpO2I9dGhpcy5hPT1udWxsP2MuYT09bnVsbDpwYih0aGlzLmEsYy5hKTtkPXRoaXMuYj09bnVsbD9jLmI9PW51bGw6cGIodGhpcy5iLGMuYik7cmV0dXJuIGImJmR9ZWxzZXtyZXR1cm4gZmFsc2V9fTtfLkhiPWZ1bmN0aW9uIHlnZCgpe3ZhciBhLGIsYyxkLGUsZjtjPXRoaXMuYT09bnVsbD8wOnRiKHRoaXMuYSk7YT1jJmFqZTtiPWMmLTY1NTM2O2Y9dGhpcy5iPT1udWxsPzA6dGIodGhpcy5iKTtkPWYmYWplO2U9ZiYtNjU1MzY7cmV0dXJuIGFeZT4+MTYmYWplfGJeZDw8MTZ9O18uS2M9ZnVuY3Rpb24gemdkKCl7cmV0dXJuIG5ldyBCZ2QodGhpcyl9O18uSWI9ZnVuY3Rpb24gQWdkKCl7cmV0dXJuIHRoaXMuYT09bnVsbCYmdGhpcy5iPT1udWxsPydwYWlyKG51bGwsbnVsbCknOnRoaXMuYT09bnVsbD8ncGFpcihudWxsLCcrZmNiKHRoaXMuYikrJyknOnRoaXMuYj09bnVsbD8ncGFpcignK2ZjYih0aGlzLmEpKycsbnVsbCknOidwYWlyKCcrZmNiKHRoaXMuYSkrJywnK2ZjYih0aGlzLmIpKycpJ307dmFyIG4yPW1kYih5cWUsJ1BhaXInLDQ2KTtiY2IoOTgzLDEsYWllLEJnZCk7Xy5OYj1mdW5jdGlvbiBDZ2QoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gRGdkKCl7cmV0dXJuICF0aGlzLmMmJighdGhpcy5iJiZ0aGlzLmEuYSE9bnVsbHx8dGhpcy5hLmIhPW51bGwpfTtfLlBiPWZ1bmN0aW9uIEVnZCgpe2lmKCF0aGlzLmMmJiF0aGlzLmImJnRoaXMuYS5hIT1udWxsKXt0aGlzLmI9dHJ1ZTtyZXR1cm4gdGhpcy5hLmF9ZWxzZSBpZighdGhpcy5jJiZ0aGlzLmEuYiE9bnVsbCl7dGhpcy5jPXRydWU7cmV0dXJuIHRoaXMuYS5ifXRocm93IHZiYihuZXcgdXRiKX07Xy5RYj1mdW5jdGlvbiBGZ2QoKXt0aGlzLmMmJnRoaXMuYS5iIT1udWxsPyh0aGlzLmEuYj1udWxsKTp0aGlzLmImJnRoaXMuYS5hIT1udWxsJiYodGhpcy5hLmE9bnVsbCk7dGhyb3cgdmJiKG5ldyBZZGIpfTtfLmI9ZmFsc2U7Xy5jPWZhbHNlO3ZhciBtMj1tZGIoeXFlLCdQYWlyLzEnLDk4Myk7YmNiKDQ0OCwxLHs0NDg6MX0sR2dkKTtfLkZiPWZ1bmN0aW9uIEhnZChhKXtyZXR1cm4gd3RiKHRoaXMuYSxCRChhLDQ0OCkuYSkmJnd0Yih0aGlzLmMsQkQoYSw0NDgpLmMpJiZ3dGIodGhpcy5kLEJEKGEsNDQ4KS5kKSYmd3RiKHRoaXMuYixCRChhLDQ0OCkuYil9O18uSGI9ZnVuY3Rpb24gSWdkKCl7cmV0dXJuIEhsYihPQyhHQyhTSSwxKSxVaGUsMSw1LFt0aGlzLmEsdGhpcy5jLHRoaXMuZCx0aGlzLmJdKSl9O18uSWI9ZnVuY3Rpb24gSmdkKCl7cmV0dXJuICcoJyt0aGlzLmErU2hlK3RoaXMuYytTaGUrdGhpcy5kK1NoZSt0aGlzLmIrJyknfTt2YXIgbzI9bWRiKHlxZSwnUXVhZHJ1cGxlJyw0NDgpO2JjYigxMTI2LDIwOSxNbGUsTWdkKTtfLlplPWZ1bmN0aW9uIE5nZChhLGIpe3ZhciBjLGQsZSxmLGc7T2RkKGIsJ1JhbmRvbSBMYXlvdXQnLDEpO2lmKCghYS5hJiYoYS5hPW5ldyBjVWQoRTIsYSwxMCwxMSkpLGEuYSkuaT09MCl7UWRkKGIpO3JldHVybn1mPUJEKGhrZChhLChpZGQoKSxnZGQpKSwxOSk7ISFmJiZmLmEhPTA/KGU9bmV3IEh1YihmLmEpKTooZT1uZXcgR3ViKTtjPUdkYihFRChoa2QoYSxkZGQpKSk7Zz1HZGIoRUQoaGtkKGEsaGRkKSkpO2Q9QkQoaGtkKGEsZWRkKSwxMTYpO0xnZChhLGUsYyxnLGQpO1FkZChiKX07dmFyIHAyPW1kYih5cWUsJ1JhbmRvbUxheW91dFByb3ZpZGVyJywxMTI2KTt2YXIgT2dkO2JjYig1NTMsMSx7fSk7Xy5xZj1mdW5jdGlvbiBTZ2QoKXtyZXR1cm4gbmV3IGY3Yyh0aGlzLmYuaSx0aGlzLmYuail9O18uV2U9ZnVuY3Rpb24gVGdkKGEpe2lmKEpzZChhLChZOWMoKSxzOWMpKSl7cmV0dXJuIGhrZCh0aGlzLmYsUWdkKX1yZXR1cm4gaGtkKHRoaXMuZixhKX07Xy5yZj1mdW5jdGlvbiBVZ2QoKXtyZXR1cm4gbmV3IGY3Yyh0aGlzLmYuZyx0aGlzLmYuZil9O18uc2Y9ZnVuY3Rpb24gVmdkKCl7cmV0dXJuIHRoaXMuZ307Xy5YZT1mdW5jdGlvbiBXZ2QoYSl7cmV0dXJuIGlrZCh0aGlzLmYsYSl9O18udGY9ZnVuY3Rpb24gWGdkKGEpe2RsZCh0aGlzLmYsYS5hKTtlbGQodGhpcy5mLGEuYil9O18udWY9ZnVuY3Rpb24gWWdkKGEpe2NsZCh0aGlzLmYsYS5hKTthbGQodGhpcy5mLGEuYil9O18udmY9ZnVuY3Rpb24gWmdkKGEpe3RoaXMuZz1hfTtfLmc9MDt2YXIgUWdkO3ZhciBxMj1tZGIoVXNlLCdFbGtHcmFwaEFkYXB0ZXJzL0Fic3RyYWN0RWxrR3JhcGhFbGVtZW50QWRhcHRlcicsNTUzKTtiY2IoNTU0LDEsezgzOToxfSwkZ2QpO18ud2Y9ZnVuY3Rpb24gX2dkKCl7dmFyIGEsYjtpZighdGhpcy5iKXt0aGlzLmI9UXUoS2tkKHRoaXMuYSkuaSk7Zm9yKGI9bmV3IEZ5ZChLa2QodGhpcy5hKSk7Yi5lIT1iLmkuZ2MoKTspe2E9QkQoRHlkKGIpLDEzNyk7RWtiKHRoaXMuYixuZXcgZGhkKGEpKX19cmV0dXJuIHRoaXMuYn07Xy5iPW51bGw7dmFyIHIyPW1kYihVc2UsJ0Vsa0dyYXBoQWRhcHRlcnMvRWxrRWRnZUFkYXB0ZXInLDU1NCk7YmNiKDMwMSw1NTMse30sYmhkKTtfLnhmPWZ1bmN0aW9uIGNoZCgpe3JldHVybiBhaGQodGhpcyl9O18uYT1udWxsO3ZhciBzMj1tZGIoVXNlLCdFbGtHcmFwaEFkYXB0ZXJzL0Vsa0dyYXBoQWRhcHRlcicsMzAxKTtiY2IoNjMwLDU1Myx7MTgxOjF9LGRoZCk7dmFyIHQyPW1kYihVc2UsJ0Vsa0dyYXBoQWRhcHRlcnMvRWxrTGFiZWxBZGFwdGVyJyw2MzApO2JjYig2MjksNTUzLHs2ODA6MX0saGhkKTtfLndmPWZ1bmN0aW9uIGtoZCgpe3JldHVybiBlaGQodGhpcyl9O18uQWY9ZnVuY3Rpb24gbGhkKCl7dmFyIGE7cmV0dXJuIGE9QkQoaGtkKHRoaXMuZiwoWTljKCksUzhjKSksMTQyKSwhYSYmKGE9bmV3IEhfYiksYX07Xy5DZj1mdW5jdGlvbiBuaGQoKXtyZXR1cm4gZmhkKHRoaXMpfTtfLkVmPWZ1bmN0aW9uIHBoZChhKXt2YXIgYjtiPW5ldyBLX2IoYSk7amtkKHRoaXMuZiwoWTljKCksUzhjKSxiKX07Xy5GZj1mdW5jdGlvbiBxaGQoYSl7amtkKHRoaXMuZiwoWTljKCksZjljKSxuZXcgcjBiKGEpKX07Xy55Zj1mdW5jdGlvbiBpaGQoKXtyZXR1cm4gdGhpcy5kfTtfLnpmPWZ1bmN0aW9uIGpoZCgpe3ZhciBhLGI7aWYoIXRoaXMuYSl7dGhpcy5hPW5ldyBSa2I7Zm9yKGI9bmV3IFNyKHVyKCRzZChCRCh0aGlzLmYsMzMpKS5hLktjKCksbmV3IFNxKSk7UXIoYik7KXthPUJEKFJyKGIpLDc5KTtFa2IodGhpcy5hLG5ldyAkZ2QoYSkpfX1yZXR1cm4gdGhpcy5hfTtfLkJmPWZ1bmN0aW9uIG1oZCgpe3ZhciBhLGI7aWYoIXRoaXMuYyl7dGhpcy5jPW5ldyBSa2I7Zm9yKGI9bmV3IFNyKHVyKF9zZChCRCh0aGlzLmYsMzMpKS5hLktjKCksbmV3IFNxKSk7UXIoYik7KXthPUJEKFJyKGIpLDc5KTtFa2IodGhpcy5jLG5ldyAkZ2QoYSkpfX1yZXR1cm4gdGhpcy5jfTtfLkRmPWZ1bmN0aW9uIG9oZCgpe3JldHVybiBWb2QoQkQodGhpcy5mLDMzKSkuaSE9MHx8Q2NiKEREKEJEKHRoaXMuZiwzMykuV2UoKFk5YygpLE04YykpKSl9O18uR2Y9ZnVuY3Rpb24gcmhkKCl7Z2hkKHRoaXMsKFBnZCgpLE9nZCkpfTtfLmE9bnVsbDtfLmI9bnVsbDtfLmM9bnVsbDtfLmQ9bnVsbDtfLmU9bnVsbDt2YXIgdTI9bWRiKFVzZSwnRWxrR3JhcGhBZGFwdGVycy9FbGtOb2RlQWRhcHRlcicsNjI5KTtiY2IoMTI2Niw1NTMsezgzODoxfSx0aGQpO18ud2Y9ZnVuY3Rpb24gdmhkKCl7cmV0dXJuIHNoZCh0aGlzKX07Xy56Zj1mdW5jdGlvbiB1aGQoKXt2YXIgYSxiO2lmKCF0aGlzLmEpe3RoaXMuYT1QdShCRCh0aGlzLmYsMTE4KS54ZygpLmkpO2ZvcihiPW5ldyBGeWQoQkQodGhpcy5mLDExOCkueGcoKSk7Yi5lIT1iLmkuZ2MoKTspe2E9QkQoRHlkKGIpLDc5KTtFa2IodGhpcy5hLG5ldyAkZ2QoYSkpfX1yZXR1cm4gdGhpcy5hfTtfLkJmPWZ1bmN0aW9uIHdoZCgpe3ZhciBhLGI7aWYoIXRoaXMuYyl7dGhpcy5jPVB1KEJEKHRoaXMuZiwxMTgpLnlnKCkuaSk7Zm9yKGI9bmV3IEZ5ZChCRCh0aGlzLmYsMTE4KS55ZygpKTtiLmUhPWIuaS5nYygpOyl7YT1CRChEeWQoYiksNzkpO0VrYih0aGlzLmMsbmV3ICRnZChhKSl9fXJldHVybiB0aGlzLmN9O18uSGY9ZnVuY3Rpb24geGhkKCl7cmV0dXJuIEJEKEJEKHRoaXMuZiwxMTgpLldlKChZOWMoKSxBOWMpKSw2MSl9O18uSWY9ZnVuY3Rpb24geWhkKCl7dmFyIGEsYixjLGQsZSxmLGcsaDtkPW1wZChCRCh0aGlzLmYsMTE4KSk7Zm9yKGM9bmV3IEZ5ZChCRCh0aGlzLmYsMTE4KS55ZygpKTtjLmUhPWMuaS5nYygpOyl7YT1CRChEeWQoYyksNzkpO2ZvcihoPW5ldyBGeWQoKCFhLmMmJihhLmM9bmV3IHk1ZCh6MixhLDUsOCkpLGEuYykpO2guZSE9aC5pLmdjKCk7KXtnPUJEKER5ZChoKSw4Mik7aWYobnRkKGF0ZChnKSxkKSl7cmV0dXJuIHRydWV9ZWxzZSBpZihhdGQoZyk9PWQmJkNjYihERChoa2QoYSwoWTljKCksTjhjKSkpKSl7cmV0dXJuIHRydWV9fX1mb3IoYj1uZXcgRnlkKEJEKHRoaXMuZiwxMTgpLnhnKCkpO2IuZSE9Yi5pLmdjKCk7KXthPUJEKER5ZChiKSw3OSk7Zm9yKGY9bmV3IEZ5ZCgoIWEuYiYmKGEuYj1uZXcgeTVkKHoyLGEsNCw3KSksYS5iKSk7Zi5lIT1mLmkuZ2MoKTspe2U9QkQoRHlkKGYpLDgyKTtpZihudGQoYXRkKGUpLGQpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX07Xy5hPW51bGw7Xy5iPW51bGw7Xy5jPW51bGw7dmFyIHYyPW1kYihVc2UsJ0Vsa0dyYXBoQWRhcHRlcnMvRWxrUG9ydEFkYXB0ZXInLDEyNjYpO2JjYigxMjY3LDEsRGtlLEFoZCk7Xy51ZT1mdW5jdGlvbiBCaGQoYSxiKXtyZXR1cm4gemhkKEJEKGEsMTE4KSxCRChiLDExOCkpfTtfLkZiPWZ1bmN0aW9uIENoZChhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gRGhkKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciB3Mj1tZGIoVXNlLCdFbGtHcmFwaEFkYXB0ZXJzL1BvcnRDb21wYXJhdG9yJywxMjY3KTt2YXIgbTU9b2RiKFZzZSwnRU9iamVjdCcpO3ZhciB4Mj1vZGIoV3NlLFhzZSk7dmFyIHkyPW9kYihXc2UsWXNlKTt2YXIgQzI9b2RiKFdzZSxac2UpO3ZhciBHMj1vZGIoV3NlLCdFbGtTaGFwZScpO3ZhciB6Mj1vZGIoV3NlLCRzZSk7dmFyIEIyPW9kYihXc2UsX3NlKTt2YXIgQTI9b2RiKFdzZSxhdGUpO3ZhciBrNT1vZGIoVnNlLGJ0ZSk7dmFyIGk1PW9kYihWc2UsJ0VGYWN0b3J5Jyk7dmFyIEVoZDt2YXIgbDU9b2RiKFZzZSxjdGUpO3ZhciBvNT1vZGIoVnNlLCdFUGFja2FnZScpO3ZhciBHaGQ7dmFyIEloZCxKaGQsS2hkLExoZCxNaGQsTmhkLE9oZCxQaGQsUWhkLFJoZCxTaGQ7dmFyIEQyPW9kYihXc2UsZHRlKTt2YXIgRTI9b2RiKFdzZSxldGUpO3ZhciBGMj1vZGIoV3NlLGZ0ZSk7YmNiKDkwLDEsZ3RlKTtfLkpnPWZ1bmN0aW9uIFZoZCgpe3RoaXMuS2coKTtyZXR1cm4gbnVsbH07Xy5LZz1mdW5jdGlvbiBXaGQoKXtyZXR1cm4gbnVsbH07Xy5MZz1mdW5jdGlvbiBYaGQoKXtyZXR1cm4gdGhpcy5LZygpLGZhbHNlfTtfLk1nPWZ1bmN0aW9uIFloZCgpe3JldHVybiBmYWxzZX07Xy5OZz1mdW5jdGlvbiBaaGQoYSl7VWhkKHRoaXMsYSl9O3ZhciBiND1tZGIoaHRlLCdCYXNpY05vdGlmaWVySW1wbCcsOTApO2JjYig5Nyw5MCxwdGUpO18ubmg9ZnVuY3Rpb24gZmpkKCl7cmV0dXJuIG9pZCh0aGlzKX07Xy5PZz1mdW5jdGlvbiBGaWQoYSxiKXtyZXR1cm4gYX07Xy5QZz1mdW5jdGlvbiBHaWQoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uUWc9ZnVuY3Rpb24gSGlkKGEpe3ZhciBiO3JldHVybiBiPXpVZChCRChYS2QodGhpcy5UZygpLHRoaXMuVmcoKSksMTgpKSx0aGlzLmVoKCkuaWgodGhpcyxiLm4sYi5mLGEpfTtfLlJnPWZ1bmN0aW9uIElpZChhLGIpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5TZz1mdW5jdGlvbiBKaWQoYSxiLGMpe3JldHVybiBfaGQodGhpcyxhLGIsYyl9O18uVGc9ZnVuY3Rpb24gS2lkKCl7dmFyIGE7aWYodGhpcy5QZygpKXthPXRoaXMuUGcoKS5jaygpO2lmKGEpe3JldHVybiBhfX1yZXR1cm4gdGhpcy56aCgpfTtfLlVnPWZ1bmN0aW9uIExpZCgpe3JldHVybiBhaWQodGhpcyl9O18uVmc9ZnVuY3Rpb24gTWlkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLldnPWZ1bmN0aW9uIE9pZCgpe3ZhciBhLGI7Yj10aGlzLnBoKCkuZGsoKTshYiYmdGhpcy5QZygpLmlrKGI9KG5SZCgpLGE9cE5kKFRLZCh0aGlzLlRnKCkpKSxhPT1udWxsP21SZDpuZXcgcVJkKHRoaXMsYSkpKTtyZXR1cm4gYn07Xy5YZz1mdW5jdGlvbiBRaWQoYSxiKXtyZXR1cm4gYX07Xy5ZZz1mdW5jdGlvbiBSaWQoYSl7dmFyIGI7Yj1hLkdqKCk7cmV0dXJuICFiP2JMZCh0aGlzLlRnKCksYSk6YS5haigpfTtfLlpnPWZ1bmN0aW9uIFNpZCgpe3ZhciBhO2E9dGhpcy5QZygpO3JldHVybiAhYT9udWxsOmEuZmsoKX07Xy4kZz1mdW5jdGlvbiBUaWQoKXtyZXR1cm4gIXRoaXMuUGcoKT9udWxsOnRoaXMuUGcoKS5jaygpfTtfLl9nPWZ1bmN0aW9uIFVpZChhLGIsYyl7cmV0dXJuIGZpZCh0aGlzLGEsYixjKX07Xy5haD1mdW5jdGlvbiBWaWQoYSl7cmV0dXJuIGdpZCh0aGlzLGEpfTtfLmJoPWZ1bmN0aW9uIFdpZChhLGIpe3JldHVybiBoaWQodGhpcyxhLGIpfTtfLmRoPWZ1bmN0aW9uIFhpZCgpe3ZhciBhO2E9dGhpcy5QZygpO3JldHVybiAhIWEmJmEuZ2soKX07Xy5laD1mdW5jdGlvbiBZaWQoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uZmg9ZnVuY3Rpb24gWmlkKCl7cmV0dXJuIGppZCh0aGlzKX07Xy5naD1mdW5jdGlvbiAkaWQoYSxiLGMsZCl7cmV0dXJuIGtpZCh0aGlzLGEsYixkKX07Xy5oaD1mdW5jdGlvbiBfaWQoYSxiLGMpe3ZhciBkO3JldHVybiBkPUJEKFhLZCh0aGlzLlRnKCksYiksNjYpLGQuTmooKS5Raih0aGlzLHRoaXMueWgoKSxiLXRoaXMuQWgoKSxhLGMpfTtfLmloPWZ1bmN0aW9uIGFqZChhLGIsYyxkKXtyZXR1cm4gbGlkKHRoaXMsYSxiLGQpfTtfLmpoPWZ1bmN0aW9uIGJqZChhLGIsYyl7dmFyIGQ7cmV0dXJuIGQ9QkQoWEtkKHRoaXMuVGcoKSxiKSw2NiksZC5OaigpLlJqKHRoaXMsdGhpcy55aCgpLGItdGhpcy5BaCgpLGEsYyl9O18ua2g9ZnVuY3Rpb24gY2pkKCl7cmV0dXJuICEhdGhpcy5QZygpJiYhIXRoaXMuUGcoKS5laygpfTtfLmxoPWZ1bmN0aW9uIGRqZChhKXtyZXR1cm4gbWlkKHRoaXMsYSl9O18ubWg9ZnVuY3Rpb24gZWpkKGEpe3JldHVybiBuaWQodGhpcyxhKX07Xy5vaD1mdW5jdGlvbiBnamQoYSl7cmV0dXJuIHJpZCh0aGlzLGEpfTtfLnBoPWZ1bmN0aW9uIGhqZCgpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5xaD1mdW5jdGlvbiBpamQoKXtyZXR1cm4gIXRoaXMuUGcoKT9udWxsOnRoaXMuUGcoKS5laygpfTtfLnJoPWZ1bmN0aW9uIGpqZCgpe3JldHVybiBqaWQodGhpcyl9O18uc2g9ZnVuY3Rpb24ga2pkKGEsYil7eWlkKHRoaXMsYSxiKX07Xy50aD1mdW5jdGlvbiBsamQoYSl7dGhpcy5waCgpLmhrKGEpfTtfLnVoPWZ1bmN0aW9uIG1qZChhKXt0aGlzLnBoKCkua2soYSl9O18udmg9ZnVuY3Rpb24gbmpkKGEpe3RoaXMucGgoKS5qayhhKX07Xy53aD1mdW5jdGlvbiBvamQoYSxiKXt2YXIgYyxkLGUsZjtmPXRoaXMuWmcoKTtpZighIWYmJiEhYSl7Yj1UeGQoZi5WaygpLHRoaXMsYik7Zi5aayh0aGlzKX1kPXRoaXMuZWgoKTtpZihkKXtpZigoTmlkKHRoaXMsdGhpcy5laCgpLHRoaXMuVmcoKSkuQmImVGplKSE9MCl7ZT1kLmZoKCk7ISFlJiYoIWE/ZS5Zayh0aGlzKTohZiYmZS5aayh0aGlzKSl9ZWxzZXtiPShjPXRoaXMuVmcoKSxjPj0wP3RoaXMuUWcoYik6dGhpcy5laCgpLmloKHRoaXMsLTEtYyxudWxsLGIpKTtiPXRoaXMuU2cobnVsbCwtMSxiKX19dGhpcy51aChhKTtyZXR1cm4gYn07Xy54aD1mdW5jdGlvbiBwamQoYSl7dmFyIGIsYyxkLGUsZixnLGgsaTtjPXRoaXMuVGcoKTtmPWJMZChjLGEpO2I9dGhpcy5BaCgpO2lmKGY+PWIpe3JldHVybiBCRChhLDY2KS5OaigpLlVqKHRoaXMsdGhpcy55aCgpLGYtYil9ZWxzZSBpZihmPD0tMSl7Zz1lMWQoKE82ZCgpLE02ZCksYyxhKTtpZihnKXtRNmQoKTtCRChnLDY2KS5PaigpfHwoZz1fMWQocTFkKE02ZCxnKSkpO2U9KGQ9dGhpcy5ZZyhnKSxCRChkPj0wP3RoaXMuX2coZCx0cnVlLHRydWUpOnNpZCh0aGlzLGcsdHJ1ZSksMTUzKSk7aT1nLlpqKCk7aWYoaT4xfHxpPT0tMSl7cmV0dXJuIEJEKEJEKGUsMjE1KS5obChhLGZhbHNlKSw3Nil9fWVsc2V7dGhyb3cgdmJiKG5ldyBXZGIoaXRlK2EubmUoKStsdGUpKX19ZWxzZSBpZihhLiRqKCkpe3JldHVybiBkPXRoaXMuWWcoYSksQkQoZD49MD90aGlzLl9nKGQsZmFsc2UsdHJ1ZSk6c2lkKHRoaXMsYSxmYWxzZSksNzYpfWg9bmV3IG5HZCh0aGlzLGEpO3JldHVybiBofTtfLnloPWZ1bmN0aW9uIHFqZCgpe3JldHVybiBBaWQodGhpcyl9O18uemg9ZnVuY3Rpb24gcmpkKCl7cmV0dXJuIChORmQoKSxNRmQpLlN9O18uQWg9ZnVuY3Rpb24gc2pkKCl7cmV0dXJuIGFMZCh0aGlzLnpoKCkpfTtfLkJoPWZ1bmN0aW9uIHRqZChhKXtDaWQodGhpcyxhKX07Xy5JYj1mdW5jdGlvbiB1amQoKXtyZXR1cm4gRWlkKHRoaXMpfTt2YXIgQjU9bWRiKHF0ZSwnQmFzaWNFT2JqZWN0SW1wbCcsOTcpO3ZhciB6RmQ7YmNiKDExNCw5Nyx7MTA1OjEsOTI6MSw5MDoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDExNDoxfSk7Xy5DaD1mdW5jdGlvbiBEamQoYSl7dmFyIGI7Yj14amQodGhpcyk7cmV0dXJuIGJbYV19O18uRGg9ZnVuY3Rpb24gRWpkKGEsYil7dmFyIGM7Yz14amQodGhpcyk7TkMoYyxhLGIpfTtfLkVoPWZ1bmN0aW9uIEZqZChhKXt2YXIgYjtiPXhqZCh0aGlzKTtOQyhiLGEsbnVsbCl9O18uSmc9ZnVuY3Rpb24gR2pkKCl7cmV0dXJuIEJEKEFqZCh0aGlzLDQpLDEyNil9O18uS2c9ZnVuY3Rpb24gSGpkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkxnPWZ1bmN0aW9uIElqZCgpe3JldHVybiAodGhpcy5EYiY0KSE9MH07Xy5QZz1mdW5jdGlvbiBKamQoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uRmg9ZnVuY3Rpb24gS2pkKGEpe0NqZCh0aGlzLDIsYSl9O18uUmc9ZnVuY3Rpb24gTGpkKGEsYil7dGhpcy5EYj1iPDwxNnx0aGlzLkRiJjI1NTt0aGlzLkZoKGEpfTtfLlRnPWZ1bmN0aW9uIE1qZCgpe3JldHVybiB3amQodGhpcyl9O18uVmc9ZnVuY3Rpb24gTmpkKCl7cmV0dXJuIHRoaXMuRGI+PjE2fTtfLldnPWZ1bmN0aW9uIE9qZCgpe3ZhciBhLGI7cmV0dXJuIG5SZCgpLGI9cE5kKFRLZCgoYT1CRChBamQodGhpcywxNiksMjYpLCFhP3RoaXMuemgoKTphKSkpLGI9PW51bGw/KG51bGwsbVJkKTpuZXcgcVJkKHRoaXMsYil9O18uTWc9ZnVuY3Rpb24gUGpkKCl7cmV0dXJuICh0aGlzLkRiJjEpPT0wfTtfLlpnPWZ1bmN0aW9uIFFqZCgpe3JldHVybiBCRChBamQodGhpcywxMjgpLDE5MzUpfTtfLiRnPWZ1bmN0aW9uIFJqZCgpe3JldHVybiBCRChBamQodGhpcywxNiksMjYpfTtfLmRoPWZ1bmN0aW9uIFNqZCgpe3JldHVybiAodGhpcy5EYiYzMikhPTB9O18uZWg9ZnVuY3Rpb24gVGpkKCl7cmV0dXJuIEJEKEFqZCh0aGlzLDIpLDQ5KX07Xy5raD1mdW5jdGlvbiBVamQoKXtyZXR1cm4gKHRoaXMuRGImNjQpIT0wfTtfLnBoPWZ1bmN0aW9uIFZqZCgpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5xaD1mdW5jdGlvbiBXamQoKXtyZXR1cm4gQkQoQWpkKHRoaXMsNjQpLDI4MSl9O18udGg9ZnVuY3Rpb24gWGpkKGEpe0NqZCh0aGlzLDE2LGEpfTtfLnVoPWZ1bmN0aW9uIFlqZChhKXtDamQodGhpcywxMjgsYSl9O18udmg9ZnVuY3Rpb24gWmpkKGEpe0NqZCh0aGlzLDY0LGEpfTtfLnloPWZ1bmN0aW9uICRqZCgpe3JldHVybiB5amQodGhpcyl9O18uRGI9MDt2YXIgczg9bWRiKHF0ZSwnTWluaW1hbEVPYmplY3RJbXBsJywxMTQpO2JjYigxMTUsMTE0LHsxMDU6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9KTtfLkZoPWZ1bmN0aW9uIF9qZChhKXt0aGlzLkNiPWF9O18uZWg9ZnVuY3Rpb24gYWtkKCl7cmV0dXJuIHRoaXMuQ2J9O3ZhciByOD1tZGIocXRlLCdNaW5pbWFsRU9iamVjdEltcGwvQ29udGFpbmVyJywxMTUpO2JjYigxOTg1LDExNSx7MTA1OjEsNDEzOjEsOTQ6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9KTtfLl9nPWZ1bmN0aW9uIGtrZChhLGIsYyl7cmV0dXJuIGJrZCh0aGlzLGEsYixjKX07Xy5qaD1mdW5jdGlvbiBsa2QoYSxiLGMpe3JldHVybiBja2QodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gbWtkKGEpe3JldHVybiBka2QodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBua2QoYSxiKXtla2QodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIG9rZCgpe3JldHVybiBUaGQoKSxTaGR9O18uQmg9ZnVuY3Rpb24gcGtkKGEpe2ZrZCh0aGlzLGEpfTtfLlZlPWZ1bmN0aW9uIHFrZCgpe3JldHVybiBna2QodGhpcyl9O18uV2U9ZnVuY3Rpb24gcmtkKGEpe3JldHVybiBoa2QodGhpcyxhKX07Xy5YZT1mdW5jdGlvbiBza2QoYSl7cmV0dXJuIGlrZCh0aGlzLGEpfTtfLlllPWZ1bmN0aW9uIHRrZChhLGIpe3JldHVybiBqa2QodGhpcyxhLGIpfTt2YXIgSDI9bWRiKHJ0ZSwnRU1hcFByb3BlcnR5SG9sZGVySW1wbCcsMTk4NSk7YmNiKDU2NywxMTUsezEwNToxLDQ2OToxLDkyOjEsOTA6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxMTQ6MSwxMTU6MX0seGtkKTtfLl9nPWZ1bmN0aW9uIHlrZChhLGIsYyl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gdGhpcy5hO2Nhc2UgMTpyZXR1cm4gdGhpcy5iO31yZXR1cm4gZmlkKHRoaXMsYSxiLGMpfTtfLmxoPWZ1bmN0aW9uIHprZChhKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLmEhPTA7Y2FzZSAxOnJldHVybiB0aGlzLmIhPTA7fXJldHVybiBtaWQodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBBa2QoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnZrZCh0aGlzLEVkYihFRChiKSkpO3JldHVybjtjYXNlIDE6d2tkKHRoaXMsRWRiKEVEKGIpKSk7cmV0dXJuO315aWQodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIEJrZCgpe3JldHVybiBUaGQoKSxJaGR9O18uQmg9ZnVuY3Rpb24gQ2tkKGEpe3N3aXRjaChhKXtjYXNlIDA6dmtkKHRoaXMsMCk7cmV0dXJuO2Nhc2UgMTp3a2QodGhpcywwKTtyZXR1cm47fUNpZCh0aGlzLGEpfTtfLkliPWZ1bmN0aW9uIERrZCgpe3ZhciBhO2lmKCh0aGlzLkRiJjY0KSE9MClyZXR1cm4gRWlkKHRoaXMpO2E9bmV3IEpmYihFaWQodGhpcykpO2EuYSs9JyAoeDogJztCZmIoYSx0aGlzLmEpO2EuYSs9JywgeTogJztCZmIoYSx0aGlzLmIpO2EuYSs9JyknO3JldHVybiBhLmF9O18uYT0wO18uYj0wO3ZhciBJMj1tZGIocnRlLCdFbGtCZW5kUG9pbnRJbXBsJyw1NjcpO2JjYig3MjMsMTk4NSx7MTA1OjEsNDEzOjEsMTYwOjEsOTQ6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9KTtfLl9nPWZ1bmN0aW9uIE5rZChhLGIsYyl7cmV0dXJuIEVrZCh0aGlzLGEsYixjKX07Xy5oaD1mdW5jdGlvbiBPa2QoYSxiLGMpe3JldHVybiBGa2QodGhpcyxhLGIsYyl9O18uamg9ZnVuY3Rpb24gUGtkKGEsYixjKXtyZXR1cm4gR2tkKHRoaXMsYSxiLGMpfTtfLmxoPWZ1bmN0aW9uIFFrZChhKXtyZXR1cm4gSGtkKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gUmtkKGEsYil7SWtkKHRoaXMsYSxiKX07Xy56aD1mdW5jdGlvbiBTa2QoKXtyZXR1cm4gVGhkKCksTWhkfTtfLkJoPWZ1bmN0aW9uIFRrZChhKXtKa2QodGhpcyxhKX07Xy56Zz1mdW5jdGlvbiBVa2QoKXtyZXR1cm4gdGhpcy5rfTtfLkFnPWZ1bmN0aW9uIFZrZCgpe3JldHVybiBLa2QodGhpcyl9O18uSWI9ZnVuY3Rpb24gV2tkKCl7cmV0dXJuIE1rZCh0aGlzKX07Xy5rPW51bGw7dmFyIE0yPW1kYihydGUsJ0Vsa0dyYXBoRWxlbWVudEltcGwnLDcyMyk7YmNiKDcyNCw3MjMsezEwNToxLDQxMzoxLDE2MDoxLDQ3MDoxLDk0OjEsOTI6MSw5MDoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDExNDoxLDExNToxfSk7Xy5fZz1mdW5jdGlvbiBnbGQoYSxiLGMpe3JldHVybiBYa2QodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gaGxkKGEpe3JldHVybiBZa2QodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBpbGQoYSxiKXtaa2QodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIGpsZCgpe3JldHVybiBUaGQoKSxSaGR9O18uQmg9ZnVuY3Rpb24ga2xkKGEpeyRrZCh0aGlzLGEpfTtfLkJnPWZ1bmN0aW9uIGxsZCgpe3JldHVybiB0aGlzLmZ9O18uQ2c9ZnVuY3Rpb24gbWxkKCl7cmV0dXJuIHRoaXMuZ307Xy5EZz1mdW5jdGlvbiBubGQoKXtyZXR1cm4gdGhpcy5pfTtfLkVnPWZ1bmN0aW9uIG9sZCgpe3JldHVybiB0aGlzLmp9O18uRmc9ZnVuY3Rpb24gcGxkKGEsYil7X2tkKHRoaXMsYSxiKX07Xy5HZz1mdW5jdGlvbiBxbGQoYSxiKXtibGQodGhpcyxhLGIpfTtfLkhnPWZ1bmN0aW9uIHJsZChhKXtkbGQodGhpcyxhKX07Xy5JZz1mdW5jdGlvbiBzbGQoYSl7ZWxkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gdGxkKCl7cmV0dXJuIGZsZCh0aGlzKX07Xy5mPTA7Xy5nPTA7Xy5pPTA7Xy5qPTA7dmFyIFQyPW1kYihydGUsJ0Vsa1NoYXBlSW1wbCcsNzI0KTtiY2IoNzI1LDcyNCx7MTA1OjEsNDEzOjEsODI6MSwxNjA6MSw0NzA6MSw5NDoxLDkyOjEsOTA6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxMTQ6MSwxMTU6MX0pO18uX2c9ZnVuY3Rpb24gQmxkKGEsYixjKXtyZXR1cm4gdWxkKHRoaXMsYSxiLGMpfTtfLmhoPWZ1bmN0aW9uIENsZChhLGIsYyl7cmV0dXJuIHZsZCh0aGlzLGEsYixjKX07Xy5qaD1mdW5jdGlvbiBEbGQoYSxiLGMpe3JldHVybiB3bGQodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gRWxkKGEpe3JldHVybiB4bGQodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBGbGQoYSxiKXt5bGQodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIEdsZCgpe3JldHVybiBUaGQoKSxKaGR9O18uQmg9ZnVuY3Rpb24gSGxkKGEpe3psZCh0aGlzLGEpfTtfLnhnPWZ1bmN0aW9uIElsZCgpe3JldHVybiAhdGhpcy5kJiYodGhpcy5kPW5ldyB5NWQoQjIsdGhpcyw4LDUpKSx0aGlzLmR9O18ueWc9ZnVuY3Rpb24gSmxkKCl7cmV0dXJuICF0aGlzLmUmJih0aGlzLmU9bmV3IHk1ZChCMix0aGlzLDcsNCkpLHRoaXMuZX07dmFyIEoyPW1kYihydGUsJ0Vsa0Nvbm5lY3RhYmxlU2hhcGVJbXBsJyw3MjUpO2JjYigzNTIsNzIzLHsxMDU6MSw0MTM6MSw3OToxLDE2MDoxLDM1MjoxLDk0OjEsOTI6MSw5MDoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDExNDoxLDExNToxfSxUbGQpO18uUWc9ZnVuY3Rpb24gVWxkKGEpe3JldHVybiBMbGQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiBWbGQoYSxiLGMpe3N3aXRjaChhKXtjYXNlIDM6cmV0dXJuIE1sZCh0aGlzKTtjYXNlIDQ6cmV0dXJuICF0aGlzLmImJih0aGlzLmI9bmV3IHk1ZCh6Mix0aGlzLDQsNykpLHRoaXMuYjtjYXNlIDU6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHk1ZCh6Mix0aGlzLDUsOCkpLHRoaXMuYztjYXNlIDY6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChBMix0aGlzLDYsNikpLHRoaXMuYTtjYXNlIDc6cmV0dXJuIEJjYigpLCF0aGlzLmImJih0aGlzLmI9bmV3IHk1ZCh6Mix0aGlzLDQsNykpLHRoaXMuYi5pPD0xJiYoIXRoaXMuYyYmKHRoaXMuYz1uZXcgeTVkKHoyLHRoaXMsNSw4KSksdGhpcy5jLmk8PTEpP2ZhbHNlOnRydWU7Y2FzZSA4OnJldHVybiBCY2IoKSxQbGQodGhpcyk/dHJ1ZTpmYWxzZTtjYXNlIDk6cmV0dXJuIEJjYigpLFFsZCh0aGlzKT90cnVlOmZhbHNlO2Nhc2UgMTA6cmV0dXJuIEJjYigpLCF0aGlzLmImJih0aGlzLmI9bmV3IHk1ZCh6Mix0aGlzLDQsNykpLHRoaXMuYi5pIT0wJiYoIXRoaXMuYyYmKHRoaXMuYz1uZXcgeTVkKHoyLHRoaXMsNSw4KSksdGhpcy5jLmkhPTApP3RydWU6ZmFsc2U7fXJldHVybiBFa2QodGhpcyxhLGIsYyl9O18uaGg9ZnVuY3Rpb24gV2xkKGEsYixjKXt2YXIgZDtzd2l0Y2goYil7Y2FzZSAzOiEhdGhpcy5DYiYmKGM9KGQ9dGhpcy5EYj4+MTYsZD49MD9MbGQodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZCxudWxsLGMpKSk7cmV0dXJuIEtsZCh0aGlzLEJEKGEsMzMpLGMpO2Nhc2UgNDpyZXR1cm4gIXRoaXMuYiYmKHRoaXMuYj1uZXcgeTVkKHoyLHRoaXMsNCw3KSksU3hkKHRoaXMuYixhLGMpO2Nhc2UgNTpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgeTVkKHoyLHRoaXMsNSw4KSksU3hkKHRoaXMuYyxhLGMpO2Nhc2UgNjpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEEyLHRoaXMsNiw2KSksU3hkKHRoaXMuYSxhLGMpO31yZXR1cm4gRmtkKHRoaXMsYSxiLGMpfTtfLmpoPWZ1bmN0aW9uIFhsZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgMzpyZXR1cm4gS2xkKHRoaXMsbnVsbCxjKTtjYXNlIDQ6cmV0dXJuICF0aGlzLmImJih0aGlzLmI9bmV3IHk1ZCh6Mix0aGlzLDQsNykpLFR4ZCh0aGlzLmIsYSxjKTtjYXNlIDU6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHk1ZCh6Mix0aGlzLDUsOCkpLFR4ZCh0aGlzLmMsYSxjKTtjYXNlIDY6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChBMix0aGlzLDYsNikpLFR4ZCh0aGlzLmEsYSxjKTt9cmV0dXJuIEdrZCh0aGlzLGEsYixjKX07Xy5saD1mdW5jdGlvbiBZbGQoYSl7c3dpdGNoKGEpe2Nhc2UgMzpyZXR1cm4gISFNbGQodGhpcyk7Y2FzZSA0OnJldHVybiAhIXRoaXMuYiYmdGhpcy5iLmkhPTA7Y2FzZSA1OnJldHVybiAhIXRoaXMuYyYmdGhpcy5jLmkhPTA7Y2FzZSA2OnJldHVybiAhIXRoaXMuYSYmdGhpcy5hLmkhPTA7Y2FzZSA3OnJldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyB5NWQoejIsdGhpcyw0LDcpKSwhKHRoaXMuYi5pPD0xJiYoIXRoaXMuYyYmKHRoaXMuYz1uZXcgeTVkKHoyLHRoaXMsNSw4KSksdGhpcy5jLmk8PTEpKTtjYXNlIDg6cmV0dXJuIFBsZCh0aGlzKTtjYXNlIDk6cmV0dXJuIFFsZCh0aGlzKTtjYXNlIDEwOnJldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyB5NWQoejIsdGhpcyw0LDcpKSx0aGlzLmIuaSE9MCYmKCF0aGlzLmMmJih0aGlzLmM9bmV3IHk1ZCh6Mix0aGlzLDUsOCkpLHRoaXMuYy5pIT0wKTt9cmV0dXJuIEhrZCh0aGlzLGEpfTtfLnNoPWZ1bmN0aW9uIFpsZChhLGIpe3N3aXRjaChhKXtjYXNlIDM6UmxkKHRoaXMsQkQoYiwzMykpO3JldHVybjtjYXNlIDQ6IXRoaXMuYiYmKHRoaXMuYj1uZXcgeTVkKHoyLHRoaXMsNCw3KSk7VXhkKHRoaXMuYik7IXRoaXMuYiYmKHRoaXMuYj1uZXcgeTVkKHoyLHRoaXMsNCw3KSk7eXRkKHRoaXMuYixCRChiLDE0KSk7cmV0dXJuO2Nhc2UgNTohdGhpcy5jJiYodGhpcy5jPW5ldyB5NWQoejIsdGhpcyw1LDgpKTtVeGQodGhpcy5jKTshdGhpcy5jJiYodGhpcy5jPW5ldyB5NWQoejIsdGhpcyw1LDgpKTt5dGQodGhpcy5jLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA2OiF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChBMix0aGlzLDYsNikpO1V4ZCh0aGlzLmEpOyF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChBMix0aGlzLDYsNikpO3l0ZCh0aGlzLmEsQkQoYiwxNCkpO3JldHVybjt9SWtkKHRoaXMsYSxiKX07Xy56aD1mdW5jdGlvbiAkbGQoKXtyZXR1cm4gVGhkKCksS2hkfTtfLkJoPWZ1bmN0aW9uIF9sZChhKXtzd2l0Y2goYSl7Y2FzZSAzOlJsZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDQ6IXRoaXMuYiYmKHRoaXMuYj1uZXcgeTVkKHoyLHRoaXMsNCw3KSk7VXhkKHRoaXMuYik7cmV0dXJuO2Nhc2UgNTohdGhpcy5jJiYodGhpcy5jPW5ldyB5NWQoejIsdGhpcyw1LDgpKTtVeGQodGhpcy5jKTtyZXR1cm47Y2FzZSA2OiF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChBMix0aGlzLDYsNikpO1V4ZCh0aGlzLmEpO3JldHVybjt9SmtkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gYW1kKCl7cmV0dXJuIFNsZCh0aGlzKX07dmFyIEsyPW1kYihydGUsJ0Vsa0VkZ2VJbXBsJywzNTIpO2JjYig0MzksMTk4NSx7MTA1OjEsNDEzOjEsMjAyOjEsNDM5OjEsOTQ6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9LHJtZCk7Xy5RZz1mdW5jdGlvbiBzbWQoYSl7cmV0dXJuIGNtZCh0aGlzLGEpfTtfLl9nPWZ1bmN0aW9uIHRtZChhLGIsYyl7c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gdGhpcy5qO2Nhc2UgMjpyZXR1cm4gdGhpcy5rO2Nhc2UgMzpyZXR1cm4gdGhpcy5iO2Nhc2UgNDpyZXR1cm4gdGhpcy5jO2Nhc2UgNTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKHkyLHRoaXMsNSkpLHRoaXMuYTtjYXNlIDY6cmV0dXJuIGZtZCh0aGlzKTtjYXNlIDc6aWYoYilyZXR1cm4gZW1kKHRoaXMpO3JldHVybiB0aGlzLmk7Y2FzZSA4OmlmKGIpcmV0dXJuIGRtZCh0aGlzKTtyZXR1cm4gdGhpcy5mO2Nhc2UgOTpyZXR1cm4gIXRoaXMuZyYmKHRoaXMuZz1uZXcgeTVkKEEyLHRoaXMsOSwxMCkpLHRoaXMuZztjYXNlIDEwOnJldHVybiAhdGhpcy5lJiYodGhpcy5lPW5ldyB5NWQoQTIsdGhpcywxMCw5KSksdGhpcy5lO2Nhc2UgMTE6cmV0dXJuIHRoaXMuZDt9cmV0dXJuIGJrZCh0aGlzLGEsYixjKX07Xy5oaD1mdW5jdGlvbiB1bWQoYSxiLGMpe3ZhciBkLGUsZjtzd2l0Y2goYil7Y2FzZSA2OiEhdGhpcy5DYiYmKGM9KGU9dGhpcy5EYj4+MTYsZT49MD9jbWQodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZSxudWxsLGMpKSk7cmV0dXJuIGJtZCh0aGlzLEJEKGEsNzkpLGMpO2Nhc2UgOTpyZXR1cm4gIXRoaXMuZyYmKHRoaXMuZz1uZXcgeTVkKEEyLHRoaXMsOSwxMCkpLFN4ZCh0aGlzLmcsYSxjKTtjYXNlIDEwOnJldHVybiAhdGhpcy5lJiYodGhpcy5lPW5ldyB5NWQoQTIsdGhpcywxMCw5KSksU3hkKHRoaXMuZSxhLGMpO31yZXR1cm4gZj1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oVGhkKCksTGhkKTpkKSxiKSw2NiksZi5OaigpLlFqKHRoaXMseWpkKHRoaXMpLGItYUxkKChUaGQoKSxMaGQpKSxhLGMpfTtfLmpoPWZ1bmN0aW9uIHZtZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgNTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKHkyLHRoaXMsNSkpLFR4ZCh0aGlzLmEsYSxjKTtjYXNlIDY6cmV0dXJuIGJtZCh0aGlzLG51bGwsYyk7Y2FzZSA5OnJldHVybiAhdGhpcy5nJiYodGhpcy5nPW5ldyB5NWQoQTIsdGhpcyw5LDEwKSksVHhkKHRoaXMuZyxhLGMpO2Nhc2UgMTA6cmV0dXJuICF0aGlzLmUmJih0aGlzLmU9bmV3IHk1ZChBMix0aGlzLDEwLDkpKSxUeGQodGhpcy5lLGEsYyk7fXJldHVybiBja2QodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gd21kKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIHRoaXMuaiE9MDtjYXNlIDI6cmV0dXJuIHRoaXMuayE9MDtjYXNlIDM6cmV0dXJuIHRoaXMuYiE9MDtjYXNlIDQ6cmV0dXJuIHRoaXMuYyE9MDtjYXNlIDU6cmV0dXJuICEhdGhpcy5hJiZ0aGlzLmEuaSE9MDtjYXNlIDY6cmV0dXJuICEhZm1kKHRoaXMpO2Nhc2UgNzpyZXR1cm4gISF0aGlzLmk7Y2FzZSA4OnJldHVybiAhIXRoaXMuZjtjYXNlIDk6cmV0dXJuICEhdGhpcy5nJiZ0aGlzLmcuaSE9MDtjYXNlIDEwOnJldHVybiAhIXRoaXMuZSYmdGhpcy5lLmkhPTA7Y2FzZSAxMTpyZXR1cm4gdGhpcy5kIT1udWxsO31yZXR1cm4gZGtkKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24geG1kKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpvbWQodGhpcyxFZGIoRUQoYikpKTtyZXR1cm47Y2FzZSAyOnBtZCh0aGlzLEVkYihFRChiKSkpO3JldHVybjtjYXNlIDM6aG1kKHRoaXMsRWRiKEVEKGIpKSk7cmV0dXJuO2Nhc2UgNDppbWQodGhpcyxFZGIoRUQoYikpKTtyZXR1cm47Y2FzZSA1OiF0aGlzLmEmJih0aGlzLmE9bmV3IHhNZCh5Mix0aGlzLDUpKTtVeGQodGhpcy5hKTshdGhpcy5hJiYodGhpcy5hPW5ldyB4TWQoeTIsdGhpcyw1KSk7eXRkKHRoaXMuYSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgNjptbWQodGhpcyxCRChiLDc5KSk7cmV0dXJuO2Nhc2UgNzpsbWQodGhpcyxCRChiLDgyKSk7cmV0dXJuO2Nhc2UgODprbWQodGhpcyxCRChiLDgyKSk7cmV0dXJuO2Nhc2UgOTohdGhpcy5nJiYodGhpcy5nPW5ldyB5NWQoQTIsdGhpcyw5LDEwKSk7VXhkKHRoaXMuZyk7IXRoaXMuZyYmKHRoaXMuZz1uZXcgeTVkKEEyLHRoaXMsOSwxMCkpO3l0ZCh0aGlzLmcsQkQoYiwxNCkpO3JldHVybjtjYXNlIDEwOiF0aGlzLmUmJih0aGlzLmU9bmV3IHk1ZChBMix0aGlzLDEwLDkpKTtVeGQodGhpcy5lKTshdGhpcy5lJiYodGhpcy5lPW5ldyB5NWQoQTIsdGhpcywxMCw5KSk7eXRkKHRoaXMuZSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTE6am1kKHRoaXMsR0QoYikpO3JldHVybjt9ZWtkKHRoaXMsYSxiKX07Xy56aD1mdW5jdGlvbiB5bWQoKXtyZXR1cm4gVGhkKCksTGhkfTtfLkJoPWZ1bmN0aW9uIHptZChhKXtzd2l0Y2goYSl7Y2FzZSAxOm9tZCh0aGlzLDApO3JldHVybjtjYXNlIDI6cG1kKHRoaXMsMCk7cmV0dXJuO2Nhc2UgMzpobWQodGhpcywwKTtyZXR1cm47Y2FzZSA0OmltZCh0aGlzLDApO3JldHVybjtjYXNlIDU6IXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKHkyLHRoaXMsNSkpO1V4ZCh0aGlzLmEpO3JldHVybjtjYXNlIDY6bW1kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgNzpsbWQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSA4OmttZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDk6IXRoaXMuZyYmKHRoaXMuZz1uZXcgeTVkKEEyLHRoaXMsOSwxMCkpO1V4ZCh0aGlzLmcpO3JldHVybjtjYXNlIDEwOiF0aGlzLmUmJih0aGlzLmU9bmV3IHk1ZChBMix0aGlzLDEwLDkpKTtVeGQodGhpcy5lKTtyZXR1cm47Y2FzZSAxMTpqbWQodGhpcyxudWxsKTtyZXR1cm47fWZrZCh0aGlzLGEpfTtfLkliPWZ1bmN0aW9uIEFtZCgpe3JldHVybiBxbWQodGhpcyl9O18uYj0wO18uYz0wO18uZD1udWxsO18uaj0wO18uaz0wO3ZhciBMMj1tZGIocnRlLCdFbGtFZGdlU2VjdGlvbkltcGwnLDQzOSk7YmNiKDE1MCwxMTUsezEwNToxLDkyOjEsOTA6MSwxNDc6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxNTA6MSwxMTQ6MSwxMTU6MX0pO18uX2c9ZnVuY3Rpb24gRW1kKGEsYixjKXt2YXIgZDtpZihhPT0wKXtyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFifXJldHVybiBiaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP3RoaXMuemgoKTpkKSxhKSxiLGMpfTtfLmhoPWZ1bmN0aW9uIEZtZChhLGIsYyl7dmFyIGQsZTtpZihiPT0wKXtyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxTeGQodGhpcy5BYixhLGMpfXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP3RoaXMuemgoKTpkKSxiKSw2NiksZS5OaigpLlFqKHRoaXMseWpkKHRoaXMpLGItYUxkKHRoaXMuemgoKSksYSxjKX07Xy5qaD1mdW5jdGlvbiBHbWQoYSxiLGMpe3ZhciBkLGU7aWYoYj09MCl7cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksVHhkKHRoaXMuQWIsYSxjKX1yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD90aGlzLnpoKCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCh0aGlzLnpoKCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gSG1kKGEpe3ZhciBiO2lmKGE9PTApe3JldHVybiAhIXRoaXMuQWImJnRoaXMuQWIuaSE9MH1yZXR1cm4gY2lkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLm9oPWZ1bmN0aW9uIEltZChhKXtyZXR1cm4gQm1kKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gSm1kKGEsYil7dmFyIGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47fWRpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChjPUJEKEFqZCh0aGlzLDE2KSwyNiksIWM/dGhpcy56aCgpOmMpLGEpLGIpfTtfLnVoPWZ1bmN0aW9uIEttZChhKXtDamQodGhpcywxMjgsYSl9O18uemg9ZnVuY3Rpb24gTG1kKCl7cmV0dXJuIGpHZCgpLFpGZH07Xy5CaD1mdW5jdGlvbiBNbWQoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/dGhpcy56aCgpOmIpLGEpKX07Xy5HaD1mdW5jdGlvbiBObWQoKXt0aGlzLkJifD0xfTtfLkhoPWZ1bmN0aW9uIE9tZChhKXtyZXR1cm4gRG1kKHRoaXMsYSl9O18uQmI9MDt2YXIgZjY9bWRiKHF0ZSwnRU1vZGVsRWxlbWVudEltcGwnLDE1MCk7YmNiKDcwNCwxNTAsezEwNToxLDkyOjEsOTA6MSw0NzE6MSwxNDc6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxNTA6MSwxMTQ6MSwxMTU6MX0sJG1kKTtfLkloPWZ1bmN0aW9uIF9tZChhLGIpe3JldHVybiBWbWQodGhpcyxhLGIpfTtfLkpoPWZ1bmN0aW9uIGFuZChhKXt2YXIgYixjLGQsZSxmO2lmKHRoaXMuYSE9YktkKGEpfHwoYS5CYiYyNTYpIT0wKXt0aHJvdyB2YmIobmV3IFdkYih4dGUrYS56Yit1dGUpKX1mb3IoZD1fS2QoYSk7VktkKGQuYSkuaSE9MDspe2M9QkQobk9kKGQsMCwoYj1CRChxdWQoVktkKGQuYSksMCksODcpLGY9Yi5jLEpEKGYsODgpP0JEKGYsMjYpOihqR2QoKSxfRmQpKSksMjYpO2lmKGRLZChjKSl7ZT1iS2QoYykuTmgoKS5KaChjKTtCRChlLDQ5KS50aChhKTtyZXR1cm4gZX1kPV9LZChjKX1yZXR1cm4gKGEuRCE9bnVsbD9hLkQ6YS5CKT09J2phdmEudXRpbC5NYXAkRW50cnknP25ldyBsSGQoYSk6bmV3IF9HZChhKX07Xy5LaD1mdW5jdGlvbiBibmQoYSxiKXtyZXR1cm4gV21kKHRoaXMsYSxiKX07Xy5fZz1mdW5jdGlvbiBjbmQoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuYTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKChqR2QoKSxXRmQpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD9XRmQ6ZCksYSksYixjKX07Xy5oaD1mdW5jdGlvbiBkbmQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxTeGQodGhpcy5BYixhLGMpO2Nhc2UgMTohIXRoaXMuYSYmKGM9QkQodGhpcy5hLDQ5KS5paCh0aGlzLDQsbzUsYykpO3JldHVybiBUbWQodGhpcyxCRChhLDIzNSksYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxXRmQpOmQpLGIpLDY2KSxlLk5qKCkuUWoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLFdGZCkpLGEsYyl9O18uamg9ZnVuY3Rpb24gZW5kKGEsYixjKXt2YXIgZCxlO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksVHhkKHRoaXMuQWIsYSxjKTtjYXNlIDE6cmV0dXJuIFRtZCh0aGlzLG51bGwsYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxXRmQpOmQpLGIpLDY2KSxlLk5qKCkuUmoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLFdGZCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gZm5kKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gISF0aGlzLmE7fXJldHVybiBjaWQodGhpcyxhLWFMZCgoakdkKCksV0ZkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/V0ZkOmIpLGEpKX07Xy5zaD1mdW5jdGlvbiBnbmQoYSxiKXt2YXIgYztzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpOyF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7eXRkKHRoaXMuQWIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDE6WW1kKHRoaXMsQkQoYiwyMzUpKTtyZXR1cm47fWRpZCh0aGlzLGEtYUxkKChqR2QoKSxXRmQpKSxYS2QoKGM9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYz9XRmQ6YyksYSksYil9O18uemg9ZnVuY3Rpb24gaG5kKCl7cmV0dXJuIGpHZCgpLFdGZH07Xy5CaD1mdW5jdGlvbiBpbmQoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTtyZXR1cm47Y2FzZSAxOlltZCh0aGlzLG51bGwpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQoKGpHZCgpLFdGZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP1dGZDpiKSxhKSl9O3ZhciBQbWQsUW1kLFJtZDt2YXIgZDY9bWRiKHF0ZSwnRUZhY3RvcnlJbXBsJyw3MDQpO2JjYih6dGUsNzA0LHsxMDU6MSwyMDE0OjEsOTI6MSw5MDoxLDQ3MToxLDE0NzoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDE1MDoxLDExNDoxLDExNToxfSxrbmQpO18uSWg9ZnVuY3Rpb24gbG5kKGEsYil7c3dpdGNoKGEueWooKSl7Y2FzZSAxMjpyZXR1cm4gQkQoYiwxNDYpLnRnKCk7Y2FzZSAxMzpyZXR1cm4gZmNiKGIpO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIodHRlK2EubmUoKSt1dGUpKTt9fTtfLkpoPWZ1bmN0aW9uIG1uZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpO3N3aXRjaChhLkc9PS0xJiYoYS5HPShiPWJLZChhKSxiP0hMZChiLk1oKCksYSk6LTEpKSxhLkcpe2Nhc2UgNDpyZXR1cm4gZj1uZXcgSm9kLGY7Y2FzZSA2OnJldHVybiBnPW5ldyBhcGQsZztjYXNlIDc6cmV0dXJuIGg9bmV3IHBwZCxoO2Nhc2UgODpyZXR1cm4gZD1uZXcgVGxkLGQ7Y2FzZSA5OnJldHVybiBjPW5ldyB4a2QsYztjYXNlIDEwOnJldHVybiBlPW5ldyBybWQsZTtjYXNlIDExOnJldHVybiBpPW5ldyBCcGQsaTtkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKHh0ZSthLnpiK3V0ZSkpO319O18uS2g9ZnVuY3Rpb24gbm5kKGEsYil7c3dpdGNoKGEueWooKSl7Y2FzZSAxMzpjYXNlIDEyOnJldHVybiBudWxsO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIodHRlK2EubmUoKSt1dGUpKTt9fTt2YXIgTjI9bWRiKHJ0ZSwnRWxrR3JhcGhGYWN0b3J5SW1wbCcsenRlKTtiY2IoNDM4LDE1MCx7MTA1OjEsOTI6MSw5MDoxLDE0NzoxLDE5MToxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDE1MDoxLDExNDoxLDExNToxfSk7Xy5XZz1mdW5jdGlvbiBybmQoKXt2YXIgYSxiO2I9KGE9QkQoQWpkKHRoaXMsMTYpLDI2KSxwTmQoVEtkKCFhP3RoaXMuemgoKTphKSkpO3JldHVybiBiPT1udWxsPyhuUmQoKSxuUmQoKSxtUmQpOm5ldyBHUmQodGhpcyxiKX07Xy5fZz1mdW5jdGlvbiBzbmQoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMubmUoKTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/dGhpcy56aCgpOmQpLGEpLGIsYyl9O18ubGg9ZnVuY3Rpb24gdG5kKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/dGhpcy56aCgpOmIpLGEpKX07Xy5zaD1mdW5jdGlvbiB1bmQoYSxiKXt2YXIgYztzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpOyF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7eXRkKHRoaXMuQWIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDE6dGhpcy5MaChHRChiKSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP3RoaXMuemgoKTpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiB2bmQoKXtyZXR1cm4gakdkKCksJEZkfTtfLkJoPWZ1bmN0aW9uIHduZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpO3JldHVybjtjYXNlIDE6dGhpcy5MaChudWxsKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/dGhpcy56aCgpOmIpLGEpKX07Xy5uZT1mdW5jdGlvbiB4bmQoKXtyZXR1cm4gdGhpcy56Yn07Xy5MaD1mdW5jdGlvbiB5bmQoYSl7cG5kKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gem5kKCl7cmV0dXJuIHFuZCh0aGlzKX07Xy56Yj1udWxsO3ZhciBqNj1tZGIocXRlLCdFTmFtZWRFbGVtZW50SW1wbCcsNDM4KTtiY2IoMTc5LDQzOCx7MTA1OjEsOTI6MSw5MDoxLDE0NzoxLDE5MToxLDU2OjEsMjM1OjEsMTA4OjEsNDk6MSw5NzoxLDE1MDoxLDE3OToxLDExNDoxLDExNToxLDY3NToxfSxlb2QpO18uUWc9ZnVuY3Rpb24gZ29kKGEpe3JldHVybiBTbmQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiBob2QoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuemI7Y2FzZSAyOnJldHVybiB0aGlzLnliO2Nhc2UgMzpyZXR1cm4gdGhpcy54YjtjYXNlIDQ6cmV0dXJuIHRoaXMuc2I7Y2FzZSA1OnJldHVybiAhdGhpcy5yYiYmKHRoaXMucmI9bmV3IGpVZCh0aGlzLGQ1LHRoaXMpKSx0aGlzLnJiO2Nhc2UgNjpyZXR1cm4gIXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKSx0aGlzLnZiO2Nhc2UgNzppZihiKXJldHVybiB0aGlzLkRiPj4xNj09Nz9CRCh0aGlzLkNiLDIzNSk6bnVsbDtyZXR1cm4gSW5kKHRoaXMpO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKGpHZCgpLGNHZCkpLFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP2NHZDpkKSxhKSxiLGMpfTtfLmhoPWZ1bmN0aW9uIGlvZChhLGIsYyl7dmFyIGQsZSxmO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksU3hkKHRoaXMuQWIsYSxjKTtjYXNlIDQ6ISF0aGlzLnNiJiYoYz1CRCh0aGlzLnNiLDQ5KS5paCh0aGlzLDEsaTUsYykpO3JldHVybiBKbmQodGhpcyxCRChhLDQ3MSksYyk7Y2FzZSA1OnJldHVybiAhdGhpcy5yYiYmKHRoaXMucmI9bmV3IGpVZCh0aGlzLGQ1LHRoaXMpKSxTeGQodGhpcy5yYixhLGMpO2Nhc2UgNjpyZXR1cm4gIXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKSxTeGQodGhpcy52YixhLGMpO2Nhc2UgNzohIXRoaXMuQ2ImJihjPShlPXRoaXMuRGI+PjE2LGU+PTA/U25kKHRoaXMsYyk6dGhpcy5DYi5paCh0aGlzLC0xLWUsbnVsbCxjKSkpO3JldHVybiBfaGQodGhpcyxhLDcsYyk7fXJldHVybiBmPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxjR2QpOmQpLGIpLDY2KSxmLk5qKCkuUWoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLGNHZCkpLGEsYyl9O18uamg9ZnVuY3Rpb24gam9kKGEsYixjKXt2YXIgZCxlO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksVHhkKHRoaXMuQWIsYSxjKTtjYXNlIDQ6cmV0dXJuIEpuZCh0aGlzLG51bGwsYyk7Y2FzZSA1OnJldHVybiAhdGhpcy5yYiYmKHRoaXMucmI9bmV3IGpVZCh0aGlzLGQ1LHRoaXMpKSxUeGQodGhpcy5yYixhLGMpO2Nhc2UgNjpyZXR1cm4gIXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKSxUeGQodGhpcy52YixhLGMpO2Nhc2UgNzpyZXR1cm4gX2hkKHRoaXMsbnVsbCw3LGMpO31yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oakdkKCksY0dkKTpkKSxiKSw2NiksZS5OaigpLlJqKHRoaXMseWpkKHRoaXMpLGItYUxkKChqR2QoKSxjR2QpKSxhLGMpfTtfLmxoPWZ1bmN0aW9uIGtvZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhIXRoaXMuQWImJnRoaXMuQWIuaSE9MDtjYXNlIDE6cmV0dXJuIHRoaXMuemIhPW51bGw7Y2FzZSAyOnJldHVybiB0aGlzLnliIT1udWxsO2Nhc2UgMzpyZXR1cm4gdGhpcy54YiE9bnVsbDtjYXNlIDQ6cmV0dXJuICEhdGhpcy5zYjtjYXNlIDU6cmV0dXJuICEhdGhpcy5yYiYmdGhpcy5yYi5pIT0wO2Nhc2UgNjpyZXR1cm4gISF0aGlzLnZiJiZ0aGlzLnZiLmkhPTA7Y2FzZSA3OnJldHVybiAhIUluZCh0aGlzKTt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxjR2QpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9jR2Q6YiksYSkpfTtfLm9oPWZ1bmN0aW9uIGxvZChhKXt2YXIgYjtiPVVuZCh0aGlzLGEpO3JldHVybiBiP2I6Qm1kKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gbW9kKGEsYil7dmFyIGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOnBuZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOmRvZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAzOmNvZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSA0OmJvZCh0aGlzLEJEKGIsNDcxKSk7cmV0dXJuO2Nhc2UgNTohdGhpcy5yYiYmKHRoaXMucmI9bmV3IGpVZCh0aGlzLGQ1LHRoaXMpKTtVeGQodGhpcy5yYik7IXRoaXMucmImJih0aGlzLnJiPW5ldyBqVWQodGhpcyxkNSx0aGlzKSk7eXRkKHRoaXMucmIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDY6IXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKTtVeGQodGhpcy52Yik7IXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKTt5dGQodGhpcy52YixCRChiLDE0KSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCgoakdkKCksY0dkKSksWEtkKChjPUJEKEFqZCh0aGlzLDE2KSwyNiksIWM/Y0dkOmMpLGEpLGIpfTtfLnZoPWZ1bmN0aW9uIG5vZChhKXt2YXIgYixjO2lmKCEhYSYmISF0aGlzLnJiKXtmb3IoYz1uZXcgRnlkKHRoaXMucmIpO2MuZSE9Yy5pLmdjKCk7KXtiPUR5ZChjKTtKRChiLDM1MSkmJihCRChiLDM1MSkudz1udWxsKX19Q2pkKHRoaXMsNjQsYSl9O18uemg9ZnVuY3Rpb24gb29kKCl7cmV0dXJuIGpHZCgpLGNHZH07Xy5CaD1mdW5jdGlvbiBwb2QoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTtyZXR1cm47Y2FzZSAxOnBuZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDI6ZG9kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMzpjb2QodGhpcyxudWxsKTtyZXR1cm47Y2FzZSA0OmJvZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDU6IXRoaXMucmImJih0aGlzLnJiPW5ldyBqVWQodGhpcyxkNSx0aGlzKSk7VXhkKHRoaXMucmIpO3JldHVybjtjYXNlIDY6IXRoaXMudmImJih0aGlzLnZiPW5ldyBnVWQobzUsdGhpcyw2LDcpKTtVeGQodGhpcy52Yik7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoakdkKCksY0dkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/Y0dkOmIpLGEpKX07Xy5HaD1mdW5jdGlvbiBxb2QoKXtUbmQodGhpcyl9O18uTWg9ZnVuY3Rpb24gcm9kKCl7cmV0dXJuICF0aGlzLnJiJiYodGhpcy5yYj1uZXcgalVkKHRoaXMsZDUsdGhpcykpLHRoaXMucmJ9O18uTmg9ZnVuY3Rpb24gc29kKCl7cmV0dXJuIHRoaXMuc2J9O18uT2g9ZnVuY3Rpb24gdG9kKCl7cmV0dXJuIHRoaXMudWJ9O18uUGg9ZnVuY3Rpb24gdW9kKCl7cmV0dXJuIHRoaXMueGJ9O18uUWg9ZnVuY3Rpb24gdm9kKCl7cmV0dXJuIHRoaXMueWJ9O18uUmg9ZnVuY3Rpb24gd29kKGEpe3RoaXMudWI9YX07Xy5JYj1mdW5jdGlvbiB4b2QoKXt2YXIgYTtpZigodGhpcy5EYiY2NCkhPTApcmV0dXJuIHFuZCh0aGlzKTthPW5ldyBKZmIocW5kKHRoaXMpKTthLmErPScgKG5zVVJJOiAnO0VmYihhLHRoaXMueWIpO2EuYSs9JywgbnNQcmVmaXg6ICc7RWZiKGEsdGhpcy54Yik7YS5hKz0nKSc7cmV0dXJuIGEuYX07Xy54Yj1udWxsO18ueWI9bnVsbDt2YXIgQW5kO3ZhciB0Nj1tZGIocXRlLCdFUGFja2FnZUltcGwnLDE3OSk7YmNiKDU1NSwxNzksezEwNToxLDIwMTY6MSw1NTU6MSw5MjoxLDkwOjEsMTQ3OjEsMTkxOjEsNTY6MSwyMzU6MSwxMDg6MSw0OToxLDk3OjEsMTUwOjEsMTc5OjEsMTE0OjEsMTE1OjEsNjc1OjF9LEJvZCk7Xy5xPWZhbHNlO18ucj1mYWxzZTt2YXIgeW9kPWZhbHNlO3ZhciBPMj1tZGIocnRlLCdFbGtHcmFwaFBhY2thZ2VJbXBsJyw1NTUpO2JjYigzNTQsNzI0LHsxMDU6MSw0MTM6MSwxNjA6MSwxMzc6MSw0NzA6MSwzNTQ6MSw5NDoxLDkyOjEsOTA6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxMTQ6MSwxMTU6MX0sSm9kKTtfLlFnPWZ1bmN0aW9uIEtvZChhKXtyZXR1cm4gRW9kKHRoaXMsYSl9O18uX2c9ZnVuY3Rpb24gTG9kKGEsYixjKXtzd2l0Y2goYSl7Y2FzZSA3OnJldHVybiBGb2QodGhpcyk7Y2FzZSA4OnJldHVybiB0aGlzLmE7fXJldHVybiBYa2QodGhpcyxhLGIsYyl9O18uaGg9ZnVuY3Rpb24gTW9kKGEsYixjKXt2YXIgZDtzd2l0Y2goYil7Y2FzZSA3OiEhdGhpcy5DYiYmKGM9KGQ9dGhpcy5EYj4+MTYsZD49MD9Fb2QodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZCxudWxsLGMpKSk7cmV0dXJuIERvZCh0aGlzLEJEKGEsMTYwKSxjKTt9cmV0dXJuIEZrZCh0aGlzLGEsYixjKX07Xy5qaD1mdW5jdGlvbiBOb2QoYSxiLGMpe2lmKGI9PTcpe3JldHVybiBEb2QodGhpcyxudWxsLGMpfXJldHVybiBHa2QodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gT29kKGEpe3N3aXRjaChhKXtjYXNlIDc6cmV0dXJuICEhRm9kKHRoaXMpO2Nhc2UgODpyZXR1cm4gIWRmYignJyx0aGlzLmEpO31yZXR1cm4gWWtkKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gUG9kKGEsYil7c3dpdGNoKGEpe2Nhc2UgNzpHb2QodGhpcyxCRChiLDE2MCkpO3JldHVybjtjYXNlIDg6SG9kKHRoaXMsR0QoYikpO3JldHVybjt9WmtkKHRoaXMsYSxiKX07Xy56aD1mdW5jdGlvbiBRb2QoKXtyZXR1cm4gVGhkKCksTmhkfTtfLkJoPWZ1bmN0aW9uIFJvZChhKXtzd2l0Y2goYSl7Y2FzZSA3OkdvZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDg6SG9kKHRoaXMsJycpO3JldHVybjt9JGtkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gU29kKCl7cmV0dXJuIElvZCh0aGlzKX07Xy5hPScnO3ZhciBQMj1tZGIocnRlLCdFbGtMYWJlbEltcGwnLDM1NCk7YmNiKDIzOSw3MjUsezEwNToxLDQxMzoxLDgyOjEsMTYwOjEsMzM6MSw0NzA6MSwyMzk6MSw5NDoxLDkyOjEsOTA6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwxMTQ6MSwxMTU6MX0sYXBkKTtfLlFnPWZ1bmN0aW9uIGJwZChhKXtyZXR1cm4gVW9kKHRoaXMsYSl9O18uX2c9ZnVuY3Rpb24gY3BkKGEsYixjKXtzd2l0Y2goYSl7Y2FzZSA5OnJldHVybiAhdGhpcy5jJiYodGhpcy5jPW5ldyBjVWQoRjIsdGhpcyw5LDkpKSx0aGlzLmM7Y2FzZSAxMDpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEUyLHRoaXMsMTAsMTEpKSx0aGlzLmE7Y2FzZSAxMTpyZXR1cm4gWG9kKHRoaXMpO2Nhc2UgMTI6cmV0dXJuICF0aGlzLmImJih0aGlzLmI9bmV3IGNVZChCMix0aGlzLDEyLDMpKSx0aGlzLmI7Y2FzZSAxMzpyZXR1cm4gQmNiKCksIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEUyLHRoaXMsMTAsMTEpKSx0aGlzLmEuaT4wP3RydWU6ZmFsc2U7fXJldHVybiB1bGQodGhpcyxhLGIsYyl9O18uaGg9ZnVuY3Rpb24gZHBkKGEsYixjKXt2YXIgZDtzd2l0Y2goYil7Y2FzZSA5OnJldHVybiAhdGhpcy5jJiYodGhpcy5jPW5ldyBjVWQoRjIsdGhpcyw5LDkpKSxTeGQodGhpcy5jLGEsYyk7Y2FzZSAxMDpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEUyLHRoaXMsMTAsMTEpKSxTeGQodGhpcy5hLGEsYyk7Y2FzZSAxMTohIXRoaXMuQ2ImJihjPShkPXRoaXMuRGI+PjE2LGQ+PTA/VW9kKHRoaXMsYyk6dGhpcy5DYi5paCh0aGlzLC0xLWQsbnVsbCxjKSkpO3JldHVybiBUb2QodGhpcyxCRChhLDMzKSxjKTtjYXNlIDEyOnJldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyBjVWQoQjIsdGhpcywxMiwzKSksU3hkKHRoaXMuYixhLGMpO31yZXR1cm4gdmxkKHRoaXMsYSxiLGMpfTtfLmpoPWZ1bmN0aW9uIGVwZChhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgOTpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgY1VkKEYyLHRoaXMsOSw5KSksVHhkKHRoaXMuYyxhLGMpO2Nhc2UgMTA6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChFMix0aGlzLDEwLDExKSksVHhkKHRoaXMuYSxhLGMpO2Nhc2UgMTE6cmV0dXJuIFRvZCh0aGlzLG51bGwsYyk7Y2FzZSAxMjpyZXR1cm4gIXRoaXMuYiYmKHRoaXMuYj1uZXcgY1VkKEIyLHRoaXMsMTIsMykpLFR4ZCh0aGlzLmIsYSxjKTt9cmV0dXJuIHdsZCh0aGlzLGEsYixjKX07Xy5saD1mdW5jdGlvbiBmcGQoYSl7c3dpdGNoKGEpe2Nhc2UgOTpyZXR1cm4gISF0aGlzLmMmJnRoaXMuYy5pIT0wO2Nhc2UgMTA6cmV0dXJuICEhdGhpcy5hJiZ0aGlzLmEuaSE9MDtjYXNlIDExOnJldHVybiAhIVhvZCh0aGlzKTtjYXNlIDEyOnJldHVybiAhIXRoaXMuYiYmdGhpcy5iLmkhPTA7Y2FzZSAxMzpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEUyLHRoaXMsMTAsMTEpKSx0aGlzLmEuaT4wO31yZXR1cm4geGxkKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gZ3BkKGEsYil7c3dpdGNoKGEpe2Nhc2UgOTohdGhpcy5jJiYodGhpcy5jPW5ldyBjVWQoRjIsdGhpcyw5LDkpKTtVeGQodGhpcy5jKTshdGhpcy5jJiYodGhpcy5jPW5ldyBjVWQoRjIsdGhpcyw5LDkpKTt5dGQodGhpcy5jLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxMDohdGhpcy5hJiYodGhpcy5hPW5ldyBjVWQoRTIsdGhpcywxMCwxMSkpO1V4ZCh0aGlzLmEpOyF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChFMix0aGlzLDEwLDExKSk7eXRkKHRoaXMuYSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTE6JG9kKHRoaXMsQkQoYiwzMykpO3JldHVybjtjYXNlIDEyOiF0aGlzLmImJih0aGlzLmI9bmV3IGNVZChCMix0aGlzLDEyLDMpKTtVeGQodGhpcy5iKTshdGhpcy5iJiYodGhpcy5iPW5ldyBjVWQoQjIsdGhpcywxMiwzKSk7eXRkKHRoaXMuYixCRChiLDE0KSk7cmV0dXJuO315bGQodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIGhwZCgpe3JldHVybiBUaGQoKSxPaGR9O18uQmg9ZnVuY3Rpb24gaXBkKGEpe3N3aXRjaChhKXtjYXNlIDk6IXRoaXMuYyYmKHRoaXMuYz1uZXcgY1VkKEYyLHRoaXMsOSw5KSk7VXhkKHRoaXMuYyk7cmV0dXJuO2Nhc2UgMTA6IXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKEUyLHRoaXMsMTAsMTEpKTtVeGQodGhpcy5hKTtyZXR1cm47Y2FzZSAxMTokb2QodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAxMjohdGhpcy5iJiYodGhpcy5iPW5ldyBjVWQoQjIsdGhpcywxMiwzKSk7VXhkKHRoaXMuYik7cmV0dXJuO316bGQodGhpcyxhKX07Xy5JYj1mdW5jdGlvbiBqcGQoKXtyZXR1cm4gX29kKHRoaXMpfTt2YXIgUTI9bWRiKHJ0ZSwnRWxrTm9kZUltcGwnLDIzOSk7YmNiKDE4Niw3MjUsezEwNToxLDQxMzoxLDgyOjEsMTYwOjEsMTE4OjEsNDcwOjEsMTg2OjEsOTQ6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9LHBwZCk7Xy5RZz1mdW5jdGlvbiBxcGQoYSl7cmV0dXJuIGxwZCh0aGlzLGEpfTtfLl9nPWZ1bmN0aW9uIHJwZChhLGIsYyl7aWYoYT09OSl7cmV0dXJuIG1wZCh0aGlzKX1yZXR1cm4gdWxkKHRoaXMsYSxiLGMpfTtfLmhoPWZ1bmN0aW9uIHNwZChhLGIsYyl7dmFyIGQ7c3dpdGNoKGIpe2Nhc2UgOTohIXRoaXMuQ2ImJihjPShkPXRoaXMuRGI+PjE2LGQ+PTA/bHBkKHRoaXMsYyk6dGhpcy5DYi5paCh0aGlzLC0xLWQsbnVsbCxjKSkpO3JldHVybiBrcGQodGhpcyxCRChhLDMzKSxjKTt9cmV0dXJuIHZsZCh0aGlzLGEsYixjKX07Xy5qaD1mdW5jdGlvbiB0cGQoYSxiLGMpe2lmKGI9PTkpe3JldHVybiBrcGQodGhpcyxudWxsLGMpfXJldHVybiB3bGQodGhpcyxhLGIsYyl9O18ubGg9ZnVuY3Rpb24gdXBkKGEpe2lmKGE9PTkpe3JldHVybiAhIW1wZCh0aGlzKX1yZXR1cm4geGxkKHRoaXMsYSl9O18uc2g9ZnVuY3Rpb24gdnBkKGEsYil7c3dpdGNoKGEpe2Nhc2UgOTpucGQodGhpcyxCRChiLDMzKSk7cmV0dXJuO315bGQodGhpcyxhLGIpfTtfLnpoPWZ1bmN0aW9uIHdwZCgpe3JldHVybiBUaGQoKSxQaGR9O18uQmg9ZnVuY3Rpb24geHBkKGEpe3N3aXRjaChhKXtjYXNlIDk6bnBkKHRoaXMsbnVsbCk7cmV0dXJuO316bGQodGhpcyxhKX07Xy5JYj1mdW5jdGlvbiB5cGQoKXtyZXR1cm4gb3BkKHRoaXMpfTt2YXIgUjI9bWRiKHJ0ZSwnRWxrUG9ydEltcGwnLDE4Nik7dmFyIEo0PW9kYihUdGUsJ0Jhc2ljRU1hcC9FbnRyeScpO2JjYigxMDkyLDExNSx7MTA1OjEsNDI6MSw5MjoxLDkwOjEsMTMzOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMTE0OjEsMTE1OjF9LEJwZCk7Xy5GYj1mdW5jdGlvbiBIcGQoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLmNkPWZ1bmN0aW9uIEpwZCgpe3JldHVybiB0aGlzLmJ9O18uSGI9ZnVuY3Rpb24gTHBkKCl7cmV0dXJuIEZDYih0aGlzKX07Xy5VaD1mdW5jdGlvbiBOcGQoYSl7enBkKHRoaXMsQkQoYSwxNDYpKX07Xy5fZz1mdW5jdGlvbiBDcGQoYSxiLGMpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIHRoaXMuYjtjYXNlIDE6cmV0dXJuIHRoaXMuYzt9cmV0dXJuIGZpZCh0aGlzLGEsYixjKX07Xy5saD1mdW5jdGlvbiBEcGQoYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLmI7Y2FzZSAxOnJldHVybiB0aGlzLmMhPW51bGw7fXJldHVybiBtaWQodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBFcGQoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnpwZCh0aGlzLEJEKGIsMTQ2KSk7cmV0dXJuO2Nhc2UgMTpBcGQodGhpcyxiKTtyZXR1cm47fXlpZCh0aGlzLGEsYil9O18uemg9ZnVuY3Rpb24gRnBkKCl7cmV0dXJuIFRoZCgpLFFoZH07Xy5CaD1mdW5jdGlvbiBHcGQoYSl7c3dpdGNoKGEpe2Nhc2UgMDp6cGQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAxOkFwZCh0aGlzLG51bGwpO3JldHVybjt9Q2lkKHRoaXMsYSl9O18uU2g9ZnVuY3Rpb24gSXBkKCl7dmFyIGE7aWYodGhpcy5hPT0tMSl7YT10aGlzLmI7dGhpcy5hPSFhPzA6dGIoYSl9cmV0dXJuIHRoaXMuYX07Xy5kZD1mdW5jdGlvbiBLcGQoKXtyZXR1cm4gdGhpcy5jfTtfLlRoPWZ1bmN0aW9uIE1wZChhKXt0aGlzLmE9YX07Xy5lZD1mdW5jdGlvbiBPcGQoYSl7dmFyIGI7Yj10aGlzLmM7QXBkKHRoaXMsYSk7cmV0dXJuIGJ9O18uSWI9ZnVuY3Rpb24gUHBkKCl7dmFyIGE7aWYoKHRoaXMuRGImNjQpIT0wKXJldHVybiBFaWQodGhpcyk7YT1uZXcgVWZiO1FmYihRZmIoUWZiKGEsdGhpcy5iP3RoaXMuYi50ZygpOlhoZSksZ25lKSx4ZmIodGhpcy5jKSk7cmV0dXJuIGEuYX07Xy5hPS0xO18uYz1udWxsO3ZhciBTMj1tZGIocnRlLCdFbGtQcm9wZXJ0eVRvVmFsdWVNYXBFbnRyeUltcGwnLDEwOTIpO2JjYig5ODQsMSx7fSxicWQpO3ZhciBVMj1tZGIoV3RlLCdKc29uQWRhcHRlcicsOTg0KTtiY2IoMjEwLDYwLFRpZSxjcWQpO3ZhciBWMj1tZGIoV3RlLCdKc29uSW1wb3J0RXhjZXB0aW9uJywyMTApO2JjYig4NTcsMSx7fSxpcmQpO3ZhciBKMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXInLDg1Nyk7YmNiKDg5MSwxLHt9LGpyZCk7dmFyIFcyPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMCRUeXBlJyw4OTEpO2JjYig4OTIsMSx7fSxrcmQpO3ZhciBYMj1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDEkVHlwZScsODkyKTtiY2IoOTAwLDEse30sbHJkKTt2YXIgWTI9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQxMCRUeXBlJyw5MDApO2JjYig5MDIsMSx7fSxtcmQpO3ZhciBaMj1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDExJFR5cGUnLDkwMik7YmNiKDkwMywxLHt9LG5yZCk7dmFyICQyPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMTIkVHlwZScsOTAzKTtiY2IoOTA5LDEse30sb3JkKTt2YXIgXzI9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQxMyRUeXBlJyw5MDkpO2JjYig5MDgsMSx7fSxwcmQpO3ZhciBhMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDE0JFR5cGUnLDkwOCk7YmNiKDkwNCwxLHt9LHFyZCk7dmFyIGIzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMTUkVHlwZScsOTA0KTtiY2IoOTA1LDEse30scnJkKTt2YXIgYzM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQxNiRUeXBlJyw5MDUpO2JjYig5MDYsMSx7fSxzcmQpO3ZhciBkMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDE3JFR5cGUnLDkwNik7YmNiKDkwNywxLHt9LHRyZCk7dmFyIGUzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMTgkVHlwZScsOTA3KTtiY2IoOTEyLDEse30sdXJkKTt2YXIgZjM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQxOSRUeXBlJyw5MTIpO2JjYig4OTMsMSx7fSx2cmQpO3ZhciBnMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDIkVHlwZScsODkzKTtiY2IoOTEwLDEse30sd3JkKTt2YXIgaDM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQyMCRUeXBlJyw5MTApO2JjYig5MTEsMSx7fSx4cmQpO3ZhciBpMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDIxJFR5cGUnLDkxMSk7YmNiKDkxNSwxLHt9LHlyZCk7dmFyIGozPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMjIkVHlwZScsOTE1KTtiY2IoOTEzLDEse30senJkKTt2YXIgazM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQyMyRUeXBlJyw5MTMpO2JjYig5MTQsMSx7fSxBcmQpO3ZhciBsMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDI0JFR5cGUnLDkxNCk7YmNiKDkxNywxLHt9LEJyZCk7dmFyIG0zPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMjUkVHlwZScsOTE3KTtiY2IoOTE2LDEse30sQ3JkKTt2YXIgbjM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQyNiRUeXBlJyw5MTYpO2JjYig5MTgsMSxxaWUsRHJkKTtfLnRkPWZ1bmN0aW9uIEVyZChhKXtCcWQodGhpcy5iLHRoaXMuYSxHRChhKSl9O3ZhciBvMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDI3JFR5cGUnLDkxOCk7YmNiKDkxOSwxLHFpZSxGcmQpO18udGQ9ZnVuY3Rpb24gR3JkKGEpe0NxZCh0aGlzLmIsdGhpcy5hLEdEKGEpKX07dmFyIHAzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMjgkVHlwZScsOTE5KTtiY2IoOTIwLDEse30sSHJkKTt2YXIgcTM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQyOSRUeXBlJyw5MjApO2JjYig4OTYsMSx7fSxJcmQpO3ZhciByMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDMkVHlwZScsODk2KTtiY2IoOTIxLDEse30sSnJkKTt2YXIgczM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQzMCRUeXBlJyw5MjEpO2JjYig5MjIsMSx7fSxLcmQpO3ZhciB0Mz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDMxJFR5cGUnLDkyMik7YmNiKDkyMywxLHt9LExyZCk7dmFyIHUzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMzIkVHlwZScsOTIzKTtiY2IoOTI0LDEse30sTXJkKTt2YXIgdjM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQzMyRUeXBlJyw5MjQpO2JjYig5MjUsMSx7fSxOcmQpO3ZhciB3Mz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDM0JFR5cGUnLDkyNSk7YmNiKDg1OSwxLHt9LFByZCk7dmFyIHgzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkMzUkVHlwZScsODU5KTtiY2IoOTI5LDEse30sUnJkKTt2YXIgeTM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQzNiRUeXBlJyw5MjkpO2JjYig5MjYsMSxxaWUsU3JkKTtfLnRkPWZ1bmN0aW9uIFRyZChhKXtMcWQodGhpcy5hLEJEKGEsNDY5KSl9O3ZhciB6Mz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDM3JFR5cGUnLDkyNik7YmNiKDkyNywxLHFpZSxVcmQpO18udGQ9ZnVuY3Rpb24gVnJkKGEpe01xZCh0aGlzLmEsdGhpcy5iLEJEKGEsMjAyKSl9O3ZhciBBMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDM4JFR5cGUnLDkyNyk7YmNiKDkyOCwxLHFpZSxXcmQpO18udGQ9ZnVuY3Rpb24gWHJkKGEpe05xZCh0aGlzLmEsdGhpcy5iLEJEKGEsMjAyKSl9O3ZhciBCMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDM5JFR5cGUnLDkyOCk7YmNiKDg5NCwxLHt9LFlyZCk7dmFyIEMzPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkNCRUeXBlJyw4OTQpO2JjYig5MzAsMSxxaWUsWnJkKTtfLnRkPWZ1bmN0aW9uICRyZChhKXtPcWQodGhpcy5hLEJEKGEsOCkpfTt2YXIgRDM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQ0MCRUeXBlJyw5MzApO2JjYig4OTUsMSx7fSxfcmQpO3ZhciBFMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDUkVHlwZScsODk1KTtiY2IoODk5LDEse30sYXNkKTt2YXIgRjM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQ2JFR5cGUnLDg5OSk7YmNiKDg5NywxLHt9LGJzZCk7dmFyIEczPW1kYihXdGUsJ0pzb25JbXBvcnRlci9sYW1iZGEkNyRUeXBlJyw4OTcpO2JjYig4OTgsMSx7fSxjc2QpO3ZhciBIMz1tZGIoV3RlLCdKc29uSW1wb3J0ZXIvbGFtYmRhJDgkVHlwZScsODk4KTtiY2IoOTAxLDEse30sZHNkKTt2YXIgSTM9bWRiKFd0ZSwnSnNvbkltcG9ydGVyL2xhbWJkYSQ5JFR5cGUnLDkwMSk7YmNiKDk0OCwxLHFpZSxtc2QpO18udGQ9ZnVuY3Rpb24gbnNkKGEpe1FwZCh0aGlzLmEsbmV3IHlDKEdEKGEpKSl9O3ZhciBLMz1tZGIoV3RlLCdKc29uTWV0YURhdGFDb252ZXJ0ZXIvbGFtYmRhJDAkVHlwZScsOTQ4KTtiY2IoOTQ5LDEscWllLG9zZCk7Xy50ZD1mdW5jdGlvbiBwc2QoYSl7aXNkKHRoaXMuYSxCRChhLDIzNykpfTt2YXIgTDM9bWRiKFd0ZSwnSnNvbk1ldGFEYXRhQ29udmVydGVyL2xhbWJkYSQxJFR5cGUnLDk0OSk7YmNiKDk1MCwxLHFpZSxxc2QpO18udGQ9ZnVuY3Rpb24gcnNkKGEpe2pzZCh0aGlzLmEsQkQoYSwxNDkpKX07dmFyIE0zPW1kYihXdGUsJ0pzb25NZXRhRGF0YUNvbnZlcnRlci9sYW1iZGEkMiRUeXBlJyw5NTApO2JjYig5NTEsMSxxaWUsc3NkKTtfLnRkPWZ1bmN0aW9uIHRzZChhKXtrc2QodGhpcy5hLEJEKGEsMTc1KSl9O3ZhciBOMz1tZGIoV3RlLCdKc29uTWV0YURhdGFDb252ZXJ0ZXIvbGFtYmRhJDMkVHlwZScsOTUxKTtiY2IoMjM3LDIyLHszOjEsMzU6MSwyMjoxLDIzNzoxfSxEc2QpO3ZhciB1c2QsdnNkLHdzZCx4c2QseXNkLHpzZCxBc2QsQnNkO3ZhciBPMz1uZGIoSGxlLCdHcmFwaEZlYXR1cmUnLDIzNyxDSSxGc2QsRXNkKTt2YXIgR3NkO2JjYigxMywxLHszNToxLDE0NjoxfSxMc2QsTXNkLE5zZCxPc2QpO18ud2Q9ZnVuY3Rpb24gUHNkKGEpe3JldHVybiBJc2QodGhpcyxCRChhLDE0NikpfTtfLkZiPWZ1bmN0aW9uIFFzZChhKXtyZXR1cm4gSnNkKHRoaXMsYSl9O18ud2c9ZnVuY3Rpb24gUnNkKCl7cmV0dXJuIEtzZCh0aGlzKX07Xy50Zz1mdW5jdGlvbiBTc2QoKXtyZXR1cm4gdGhpcy5ifTtfLkhiPWZ1bmN0aW9uIFRzZCgpe3JldHVybiBMQ2IodGhpcy5iKX07Xy5JYj1mdW5jdGlvbiBVc2QoKXtyZXR1cm4gdGhpcy5ifTt2YXIgVDM9bWRiKEhsZSwnUHJvcGVydHknLDEzKTtiY2IoODE4LDEsRGtlLFdzZCk7Xy51ZT1mdW5jdGlvbiBYc2QoYSxiKXtyZXR1cm4gVnNkKHRoaXMsQkQoYSw5NCksQkQoYiw5NCkpfTtfLkZiPWZ1bmN0aW9uIFlzZChhKXtyZXR1cm4gdGhpcz09PWF9O18udmU9ZnVuY3Rpb24gWnNkKCl7cmV0dXJuIG5ldyB0cGIodGhpcyl9O3ZhciBTMz1tZGIoSGxlLCdQcm9wZXJ0eUhvbGRlckNvbXBhcmF0b3InLDgxOCk7YmNiKDY5NSwxLGFpZSxxdGQpO18uTmI9ZnVuY3Rpb24gcnRkKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIHR0ZCgpe3JldHVybiBwdGQodGhpcyl9O18uUWI9ZnVuY3Rpb24gdXRkKCl7U3JiKCl9O18uT2I9ZnVuY3Rpb24gc3RkKCl7cmV0dXJuICEhdGhpcy5hfTt2YXIgVTM9bWRiKGp1ZSwnRWxrR3JhcGhVdGlsL0FuY2VzdG9ySXRlcmF0b3InLDY5NSk7dmFyIFQ0PW9kYihUdGUsJ0VMaXN0Jyk7YmNiKDY3LDUyLHsyMDoxLDI4OjEsNTI6MSwxNDoxLDE1OjEsNjc6MSw1ODoxfSk7Xy5WYz1mdW5jdGlvbiBKdGQoYSxiKXt2dGQodGhpcyxhLGIpfTtfLkZjPWZ1bmN0aW9uIEt0ZChhKXtyZXR1cm4gd3RkKHRoaXMsYSl9O18uV2M9ZnVuY3Rpb24gTHRkKGEsYil7cmV0dXJuIHh0ZCh0aGlzLGEsYil9O18uR2M9ZnVuY3Rpb24gTXRkKGEpe3JldHVybiB5dGQodGhpcyxhKX07Xy5aaD1mdW5jdGlvbiBOdGQoKXtyZXR1cm4gbmV3ICR5ZCh0aGlzKX07Xy4kaD1mdW5jdGlvbiBPdGQoKXtyZXR1cm4gbmV3IGJ6ZCh0aGlzKX07Xy5faD1mdW5jdGlvbiBQdGQoYSl7cmV0dXJuIHp0ZCh0aGlzLGEpfTtfLmFpPWZ1bmN0aW9uIFF0ZCgpe3JldHVybiB0cnVlfTtfLmJpPWZ1bmN0aW9uIFJ0ZChhLGIpe307Xy5jaT1mdW5jdGlvbiBTdGQoKXt9O18uZGk9ZnVuY3Rpb24gVHRkKGEsYil7QXRkKHRoaXMsYSxiKX07Xy5laT1mdW5jdGlvbiBVdGQoYSxiLGMpe307Xy5maT1mdW5jdGlvbiBWdGQoYSxiKXt9O18uZ2k9ZnVuY3Rpb24gV3RkKGEsYixjKXt9O18uRmI9ZnVuY3Rpb24gWHRkKGEpe3JldHVybiBCdGQodGhpcyxhKX07Xy5IYj1mdW5jdGlvbiBZdGQoKXtyZXR1cm4gRXRkKHRoaXMpfTtfLmhpPWZ1bmN0aW9uIFp0ZCgpe3JldHVybiBmYWxzZX07Xy5LYz1mdW5jdGlvbiAkdGQoKXtyZXR1cm4gbmV3IEZ5ZCh0aGlzKX07Xy5ZYz1mdW5jdGlvbiBfdGQoKXtyZXR1cm4gbmV3IE95ZCh0aGlzKX07Xy5aYz1mdW5jdGlvbiBhdWQoYSl7dmFyIGI7Yj10aGlzLmdjKCk7aWYoYTwwfHxhPmIpdGhyb3cgdmJiKG5ldyBDeWQoYSxiKSk7cmV0dXJuIG5ldyBQeWQodGhpcyxhKX07Xy5qaT1mdW5jdGlvbiBidWQoYSxiKXt0aGlzLmlpKGEsdGhpcy5YYyhiKSl9O18uTWM9ZnVuY3Rpb24gY3VkKGEpe3JldHVybiBGdGQodGhpcyxhKX07Xy5saT1mdW5jdGlvbiBkdWQoYSxiKXtyZXR1cm4gYn07Xy5fYz1mdW5jdGlvbiBldWQoYSxiKXtyZXR1cm4gR3RkKHRoaXMsYSxiKX07Xy5JYj1mdW5jdGlvbiBmdWQoKXtyZXR1cm4gSHRkKHRoaXMpfTtfLm5pPWZ1bmN0aW9uIGd1ZCgpe3JldHVybiB0cnVlfTtfLm9pPWZ1bmN0aW9uIGh1ZChhLGIpe3JldHVybiBJdGQodGhpcyxiKX07dmFyIHA0PW1kYihUdGUsJ0Fic3RyYWN0RUxpc3QnLDY3KTtiY2IoNjMsNjcsb3VlLHl1ZCx6dWQsQXVkKTtfLlZoPWZ1bmN0aW9uIEJ1ZChhLGIpe3JldHVybiBpdWQodGhpcyxhLGIpfTtfLldoPWZ1bmN0aW9uIEN1ZChhKXtyZXR1cm4ganVkKHRoaXMsYSl9O18uWGg9ZnVuY3Rpb24gRHVkKGEsYil7a3VkKHRoaXMsYSxiKX07Xy5ZaD1mdW5jdGlvbiBFdWQoYSl7bHVkKHRoaXMsYSl9O18ucGk9ZnVuY3Rpb24gRnVkKGEpe3JldHVybiBudWQodGhpcyxhKX07Xy4kYj1mdW5jdGlvbiBHdWQoKXtvdWQodGhpcyl9O18uSGM9ZnVuY3Rpb24gSHVkKGEpe3JldHVybiBwdWQodGhpcyxhKX07Xy5YYj1mdW5jdGlvbiBJdWQoYSl7cmV0dXJuIHF1ZCh0aGlzLGEpfTtfLnFpPWZ1bmN0aW9uIEp1ZChhKXt2YXIgYixjLGQ7Kyt0aGlzLmo7Yz10aGlzLmc9PW51bGw/MDp0aGlzLmcubGVuZ3RoO2lmKGE+Yyl7ZD10aGlzLmc7Yj1jKyhjLzJ8MCkrNDtiPGEmJihiPWEpO3RoaXMuZz10aGlzLnJpKGIpO2QhPW51bGwmJiRmYihkLDAsdGhpcy5nLDAsdGhpcy5pKX19O18uWGM9ZnVuY3Rpb24gS3VkKGEpe3JldHVybiBydWQodGhpcyxhKX07Xy5kYz1mdW5jdGlvbiBMdWQoKXtyZXR1cm4gdGhpcy5pPT0wfTtfLmlpPWZ1bmN0aW9uIE11ZChhLGIpe3JldHVybiBzdWQodGhpcyxhLGIpfTtfLnJpPWZ1bmN0aW9uIE51ZChhKXtyZXR1cm4gS0MoU0ksVWhlLDEsYSw1LDEpfTtfLmtpPWZ1bmN0aW9uIE91ZChhKXtyZXR1cm4gdGhpcy5nW2FdfTtfLiRjPWZ1bmN0aW9uIFB1ZChhKXtyZXR1cm4gdHVkKHRoaXMsYSl9O18ubWk9ZnVuY3Rpb24gUXVkKGEsYil7cmV0dXJuIHV1ZCh0aGlzLGEsYil9O18uZ2M9ZnVuY3Rpb24gUnVkKCl7cmV0dXJuIHRoaXMuaX07Xy5QYz1mdW5jdGlvbiBTdWQoKXtyZXR1cm4gd3VkKHRoaXMpfTtfLlFjPWZ1bmN0aW9uIFR1ZChhKXtyZXR1cm4geHVkKHRoaXMsYSl9O18uaT0wO3ZhciB5ND1tZGIoVHRlLCdCYXNpY0VMaXN0Jyw2Myk7dmFyIFg0PW9kYihUdGUsJ1RyZWVJdGVyYXRvcicpO2JjYig2OTQsNjMscHVlKTtfLk5iPWZ1bmN0aW9uIFh1ZChhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBZdWQoKXtyZXR1cm4gdGhpcy5nPT1udWxsJiYhdGhpcy5jP1V1ZCh0aGlzKTp0aGlzLmc9PW51bGx8fHRoaXMuaSE9MCYmQkQodGhpcy5nW3RoaXMuaS0xXSw0NykuT2IoKX07Xy5QYj1mdW5jdGlvbiBadWQoKXtyZXR1cm4gVnVkKHRoaXMpfTtfLlFiPWZ1bmN0aW9uICR1ZCgpe2lmKCF0aGlzLmUpe3Rocm93IHZiYihuZXcgWmRiKCdUaGVyZSBpcyBubyB2YWxpZCBvYmplY3QgdG8gcmVtb3ZlLicpKX10aGlzLmUuUWIoKX07Xy5jPWZhbHNlO3ZhciBxND1tZGIoVHRlLCdBYnN0cmFjdFRyZWVJdGVyYXRvcicsNjk0KTtiY2IoNjg1LDY5NCxwdWUsX3VkKTtfLnNpPWZ1bmN0aW9uIGF2ZChhKXt2YXIgYjtiPUJEKGEsNTYpLldnKCkuS2MoKTtKRChiLDI3OSkmJkJEKGIsMjc5KS5OayhuZXcgYnZkKTtyZXR1cm4gYn07dmFyIFczPW1kYihqdWUsJ0Vsa0dyYXBoVXRpbC9Qcm9wZXJ0aWVzU2tpcHBpbmdUcmVlSXRlcmF0b3InLDY4NSk7YmNiKDk1MiwxLHt9LGJ2ZCk7dmFyIFYzPW1kYihqdWUsJ0Vsa0dyYXBoVXRpbC9Qcm9wZXJ0aWVzU2tpcHBpbmdUcmVlSXRlcmF0b3IvMScsOTUyKTt2YXIgY3ZkLGR2ZDt2YXIgWTM9bWRiKGp1ZSwnRWxrUmVmbGVjdCcsbnVsbCk7YmNiKDg4OSwxLGhzZSxqdmQpO18udmc9ZnVuY3Rpb24ga3ZkKGEpe3JldHVybiBldmQoKSxzcWIoQkQoYSwxNzQpKX07dmFyIFgzPW1kYihqdWUsJ0Vsa1JlZmxlY3QvbGFtYmRhJDAkVHlwZScsODg5KTt2YXIgbHZkO3ZhciBXND1vZGIoVHRlLCdSZXNvdXJjZUxvY2F0b3InKTtiY2IoMTA1MSwxLHt9KTt2YXIgTjQ9bWRiKFR0ZSwnRGVsZWdhdGluZ1Jlc291cmNlTG9jYXRvcicsMTA1MSk7YmNiKDEwNTIsMTA1MSx7fSk7dmFyIFozPW1kYignb3JnLmVjbGlwc2UuZW1mLmNvbW1vbicsJ0VNRlBsdWdpbicsMTA1Mik7dmFyICQzPW9kYihjdmUsJ0FkYXB0ZXInKTt2YXIgXzM9b2RiKGN2ZSwnTm90aWZpY2F0aW9uJyk7YmNiKDExNTMsMSxkdmUpO18udGk9ZnVuY3Rpb24gdnZkKCl7cmV0dXJuIHRoaXMuZH07Xy51aT1mdW5jdGlvbiB3dmQoYSl7fTtfLnZpPWZ1bmN0aW9uIHh2ZChhKXt0aGlzLmQ9YX07Xy53aT1mdW5jdGlvbiB5dmQoYSl7dGhpcy5kPT1hJiYodGhpcy5kPW51bGwpfTtfLmQ9bnVsbDt2YXIgYTQ9bWRiKGh0ZSwnQWRhcHRlckltcGwnLDExNTMpO2JjYigxOTk1LDY3LGV2ZSk7Xy5WaD1mdW5jdGlvbiBGdmQoYSxiKXtyZXR1cm4genZkKHRoaXMsYSxiKX07Xy5XaD1mdW5jdGlvbiBHdmQoYSl7dmFyIGIsYyxkOysrdGhpcy5qO2lmKGEuZGMoKSl7cmV0dXJuIGZhbHNlfWVsc2V7Yj10aGlzLlZpKCk7Zm9yKGQ9YS5LYygpO2QuT2IoKTspe2M9ZC5QYigpO3RoaXMuSWkodGhpcy5vaShiLGMpKTsrK2J9cmV0dXJuIHRydWV9fTtfLlhoPWZ1bmN0aW9uIEh2ZChhLGIpe0F2ZCh0aGlzLGEsYil9O18uWWg9ZnVuY3Rpb24gSXZkKGEpe0J2ZCh0aGlzLGEpfTtfLkdpPWZ1bmN0aW9uIEp2ZCgpe3JldHVybiB0aGlzLkppKCl9O18uJGI9ZnVuY3Rpb24gS3ZkKCl7Q3ZkKHRoaXMsdGhpcy5WaSgpLHRoaXMuV2koKSl9O18uSGM9ZnVuY3Rpb24gTHZkKGEpe3JldHVybiB0aGlzLkxpKGEpfTtfLkljPWZ1bmN0aW9uIE12ZChhKXtyZXR1cm4gdGhpcy5NaShhKX07Xy5IaT1mdW5jdGlvbiBOdmQoYSxiKXt0aGlzLlNpKCkuam0oKX07Xy5JaT1mdW5jdGlvbiBPdmQoYSl7dGhpcy5TaSgpLmptKCl9O18uSmk9ZnVuY3Rpb24gUHZkKCl7cmV0dXJuIHRoaXMuU2koKX07Xy5LaT1mdW5jdGlvbiBRdmQoKXt0aGlzLlNpKCkuam0oKX07Xy5MaT1mdW5jdGlvbiBSdmQoYSl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLk1pPWZ1bmN0aW9uIFN2ZChhKXtyZXR1cm4gdGhpcy5TaSgpLmptKCl9O18uTmk9ZnVuY3Rpb24gVHZkKGEpe3JldHVybiB0aGlzLlNpKCkuam0oKX07Xy5PaT1mdW5jdGlvbiBVdmQoYSl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLlBpPWZ1bmN0aW9uIFZ2ZCgpe3JldHVybiB0aGlzLlNpKCkuam0oKX07Xy5RaT1mdW5jdGlvbiBXdmQoYSl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLlJpPWZ1bmN0aW9uIFh2ZCgpe3JldHVybiB0aGlzLlNpKCkuam0oKX07Xy5UaT1mdW5jdGlvbiBZdmQoYSl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLlVpPWZ1bmN0aW9uIFp2ZChhLGIpe3JldHVybiB0aGlzLlNpKCkuam0oKX07Xy5WaT1mdW5jdGlvbiAkdmQoKXtyZXR1cm4gdGhpcy5TaSgpLmptKCl9O18uV2k9ZnVuY3Rpb24gX3ZkKCl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLlhpPWZ1bmN0aW9uIGF3ZChhKXtyZXR1cm4gdGhpcy5TaSgpLmptKCl9O18uWWk9ZnVuY3Rpb24gYndkKCl7cmV0dXJuIHRoaXMuU2koKS5qbSgpfTtfLkZiPWZ1bmN0aW9uIGN3ZChhKXtyZXR1cm4gdGhpcy5OaShhKX07Xy5YYj1mdW5jdGlvbiBkd2QoYSl7cmV0dXJuIHRoaXMubGkoYSx0aGlzLk9pKGEpKX07Xy5IYj1mdW5jdGlvbiBld2QoKXtyZXR1cm4gdGhpcy5QaSgpfTtfLlhjPWZ1bmN0aW9uIGZ3ZChhKXtyZXR1cm4gdGhpcy5RaShhKX07Xy5kYz1mdW5jdGlvbiBnd2QoKXtyZXR1cm4gdGhpcy5SaSgpfTtfLmlpPWZ1bmN0aW9uIGh3ZChhLGIpe3JldHVybiBEdmQodGhpcyxhLGIpfTtfLmtpPWZ1bmN0aW9uIGl3ZChhKXtyZXR1cm4gdGhpcy5PaShhKX07Xy4kYz1mdW5jdGlvbiBqd2QoYSl7cmV0dXJuIEV2ZCh0aGlzLGEpfTtfLk1jPWZ1bmN0aW9uIGt3ZChhKXt2YXIgYjtiPXRoaXMuWGMoYSk7aWYoYj49MCl7dGhpcy4kYyhiKTtyZXR1cm4gdHJ1ZX1lbHNle3JldHVybiBmYWxzZX19O18ubWk9ZnVuY3Rpb24gbHdkKGEsYil7cmV0dXJuIHRoaXMuVWkoYSx0aGlzLm9pKGEsYikpfTtfLmdjPWZ1bmN0aW9uIG13ZCgpe3JldHVybiB0aGlzLlZpKCl9O18uUGM9ZnVuY3Rpb24gbndkKCl7cmV0dXJuIHRoaXMuV2koKX07Xy5RYz1mdW5jdGlvbiBvd2QoYSl7cmV0dXJuIHRoaXMuWGkoYSl9O18uSWI9ZnVuY3Rpb24gcHdkKCl7cmV0dXJuIHRoaXMuWWkoKX07dmFyIE00PW1kYihUdGUsJ0RlbGVnYXRpbmdFTGlzdCcsMTk5NSk7YmNiKDE5OTYsMTk5NSxldmUpO18uVmg9ZnVuY3Rpb24geHdkKGEsYil7cmV0dXJuIHF3ZCh0aGlzLGEsYil9O18uV2g9ZnVuY3Rpb24geXdkKGEpe3JldHVybiB0aGlzLlZoKHRoaXMuVmkoKSxhKX07Xy5YaD1mdW5jdGlvbiB6d2QoYSxiKXtyd2QodGhpcyxhLGIpfTtfLlloPWZ1bmN0aW9uIEF3ZChhKXtzd2QodGhpcyxhKX07Xy5haT1mdW5jdGlvbiBCd2QoKXtyZXR1cm4gIXRoaXMuYmooKX07Xy4kYj1mdW5jdGlvbiBDd2QoKXt2d2QodGhpcyl9O18uWmk9ZnVuY3Rpb24gRHdkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBDeGQodGhpcyxhLGIsYyxkLGUpfTtfLiRpPWZ1bmN0aW9uIEV3ZChhKXtVaGQodGhpcy5BaSgpLGEpfTtfLl9pPWZ1bmN0aW9uIEZ3ZCgpe3JldHVybiBudWxsfTtfLmFqPWZ1bmN0aW9uIEd3ZCgpe3JldHVybiAtMX07Xy5BaT1mdW5jdGlvbiBId2QoKXtyZXR1cm4gbnVsbH07Xy5iaj1mdW5jdGlvbiBJd2QoKXtyZXR1cm4gZmFsc2V9O18uY2o9ZnVuY3Rpb24gSndkKGEsYil7cmV0dXJuIGJ9O18uZGo9ZnVuY3Rpb24gS3dkKGEsYil7cmV0dXJuIGJ9O18uZWo9ZnVuY3Rpb24gTHdkKCl7cmV0dXJuIGZhbHNlfTtfLmZqPWZ1bmN0aW9uIE13ZCgpe3JldHVybiAhdGhpcy5SaSgpfTtfLmlpPWZ1bmN0aW9uIE53ZChhLGIpe3ZhciBjLGQ7aWYodGhpcy5laigpKXtkPXRoaXMuZmooKTtjPUR2ZCh0aGlzLGEsYik7dGhpcy4kaSh0aGlzLlppKDcsbWViKGIpLGMsYSxkKSk7cmV0dXJuIGN9ZWxzZXtyZXR1cm4gRHZkKHRoaXMsYSxiKX19O18uJGM9ZnVuY3Rpb24gT3dkKGEpe3ZhciBiLGMsZCxlO2lmKHRoaXMuZWooKSl7Yz1udWxsO2Q9dGhpcy5maigpO2I9dGhpcy5aaSg0LGU9RXZkKHRoaXMsYSksbnVsbCxhLGQpO2lmKHRoaXMuYmooKSYmISFlKXtjPXRoaXMuZGooZSxjKTtpZighYyl7dGhpcy4kaShiKX1lbHNle2MuRWkoYik7Yy5GaSgpfX1lbHNle2lmKCFjKXt0aGlzLiRpKGIpfWVsc2V7Yy5FaShiKTtjLkZpKCl9fXJldHVybiBlfWVsc2V7ZT1FdmQodGhpcyxhKTtpZih0aGlzLmJqKCkmJiEhZSl7Yz10aGlzLmRqKGUsbnVsbCk7ISFjJiZjLkZpKCl9cmV0dXJuIGV9fTtfLm1pPWZ1bmN0aW9uIFB3ZChhLGIpe3JldHVybiB3d2QodGhpcyxhLGIpfTt2YXIgZDQ9bWRiKGh0ZSwnRGVsZWdhdGluZ05vdGlmeWluZ0xpc3RJbXBsJywxOTk2KTtiY2IoMTQzLDEsZnZlKTtfLkVpPWZ1bmN0aW9uIHB4ZChhKXtyZXR1cm4gUXdkKHRoaXMsYSl9O18uRmk9ZnVuY3Rpb24gcXhkKCl7UndkKHRoaXMpfTtfLnhpPWZ1bmN0aW9uIHJ4ZCgpe3JldHVybiB0aGlzLmR9O18uX2k9ZnVuY3Rpb24gc3hkKCl7cmV0dXJuIG51bGx9O18uZ2o9ZnVuY3Rpb24gdHhkKCl7cmV0dXJuIG51bGx9O18ueWk9ZnVuY3Rpb24gdXhkKGEpe3JldHVybiAtMX07Xy56aT1mdW5jdGlvbiB2eGQoKXtyZXR1cm4gJHdkKHRoaXMpfTtfLkFpPWZ1bmN0aW9uIHd4ZCgpe3JldHVybiBudWxsfTtfLkJpPWZ1bmN0aW9uIHh4ZCgpe3JldHVybiBoeGQodGhpcyl9O18uQ2k9ZnVuY3Rpb24geXhkKCl7cmV0dXJuIHRoaXMubzwwP3RoaXMubzwtMj8tMi10aGlzLm8tMTotMTp0aGlzLm99O18uaGo9ZnVuY3Rpb24genhkKCl7cmV0dXJuIGZhbHNlfTtfLkRpPWZ1bmN0aW9uIEF4ZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsO3N3aXRjaCh0aGlzLmQpe2Nhc2UgMTpjYXNlIDI6e2U9YS54aSgpO3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOntmPWEuQWkoKTtpZihQRChmKT09PVBEKHRoaXMuQWkoKSkmJnRoaXMueWkobnVsbCk9PWEueWkobnVsbCkpe3RoaXMuZz1hLnppKCk7YS54aSgpPT0xJiYodGhpcy5kPTEpO3JldHVybiB0cnVlfX19fWNhc2UgNDp7ZT1hLnhpKCk7c3dpdGNoKGUpe2Nhc2UgNDp7Zj1hLkFpKCk7aWYoUEQoZik9PT1QRCh0aGlzLkFpKCkpJiZ0aGlzLnlpKG51bGwpPT1hLnlpKG51bGwpKXtqPWp4ZCh0aGlzKTtpPXRoaXMubzwwP3RoaXMubzwtMj8tMi10aGlzLm8tMTotMTp0aGlzLm87Zz1hLkNpKCk7dGhpcy5kPTY7bD1uZXcgenVkKDIpO2lmKGk8PWcpe3d0ZChsLHRoaXMubik7d3RkKGwsYS5CaSgpKTt0aGlzLmc9T0MoR0MoV0QsMSksb2plLDI1LDE1LFt0aGlzLm89aSxnKzFdKX1lbHNle3d0ZChsLGEuQmkoKSk7d3RkKGwsdGhpcy5uKTt0aGlzLmc9T0MoR0MoV0QsMSksb2plLDI1LDE1LFt0aGlzLm89ZyxpXSl9dGhpcy5uPWw7anx8KHRoaXMubz0tMi10aGlzLm8tMSk7cmV0dXJuIHRydWV9YnJlYWt9fWJyZWFrfWNhc2UgNjp7ZT1hLnhpKCk7c3dpdGNoKGUpe2Nhc2UgNDp7Zj1hLkFpKCk7aWYoUEQoZik9PT1QRCh0aGlzLkFpKCkpJiZ0aGlzLnlpKG51bGwpPT1hLnlpKG51bGwpKXtqPWp4ZCh0aGlzKTtnPWEuQ2koKTtrPUJEKHRoaXMuZyw0OCk7ZD1LQyhXRCxvamUsMjUsay5sZW5ndGgrMSwxNSwxKTtiPTA7d2hpbGUoYjxrLmxlbmd0aCl7aD1rW2JdO2lmKGg8PWcpe2RbYisrXT1oOysrZ31lbHNle2JyZWFrfX1jPUJEKHRoaXMubiwxNSk7Yy5WYyhiLGEuQmkoKSk7ZFtiXT1nO3doaWxlKCsrYjxkLmxlbmd0aCl7ZFtiXT1rW2ItMV19dGhpcy5nPWQ7anx8KHRoaXMubz0tMi1kWzBdKTtyZXR1cm4gdHJ1ZX1icmVha319YnJlYWt9fXJldHVybiBmYWxzZX07Xy5JYj1mdW5jdGlvbiBCeGQoKXt2YXIgYSxiLGMsZDtkPW5ldyBKZmIoaGRiKHRoaXMuZ20pKydAJysoYj10Yih0aGlzKT4+PjAsYi50b1N0cmluZygxNikpKTtkLmErPScgKGV2ZW50VHlwZTogJztzd2l0Y2godGhpcy5kKXtjYXNlIDE6e2QuYSs9J1NFVCc7YnJlYWt9Y2FzZSAyOntkLmErPSdVTlNFVCc7YnJlYWt9Y2FzZSAzOntkLmErPSdBREQnO2JyZWFrfWNhc2UgNTp7ZC5hKz0nQUREX01BTlknO2JyZWFrfWNhc2UgNDp7ZC5hKz0nUkVNT1ZFJzticmVha31jYXNlIDY6e2QuYSs9J1JFTU9WRV9NQU5ZJzticmVha31jYXNlIDc6e2QuYSs9J01PVkUnO2JyZWFrfWNhc2UgODp7ZC5hKz0nUkVNT1ZJTkdfQURBUFRFUic7YnJlYWt9Y2FzZSA5OntkLmErPSdSRVNPTFZFJzticmVha31kZWZhdWx0OntDZmIoZCx0aGlzLmQpO2JyZWFrfX1peGQodGhpcykmJihkLmErPScsIHRvdWNoOiB0cnVlJyxkKTtkLmErPScsIHBvc2l0aW9uOiAnO0NmYihkLHRoaXMubzwwP3RoaXMubzwtMj8tMi10aGlzLm8tMTotMTp0aGlzLm8pO2QuYSs9Jywgbm90aWZpZXI6ICc7RGZiKGQsdGhpcy5BaSgpKTtkLmErPScsIGZlYXR1cmU6ICc7RGZiKGQsdGhpcy5faSgpKTtkLmErPScsIG9sZFZhbHVlOiAnO0RmYihkLGh4ZCh0aGlzKSk7ZC5hKz0nLCBuZXdWYWx1ZTogJztpZih0aGlzLmQ9PTYmJkpEKHRoaXMuZyw0OCkpe2M9QkQodGhpcy5nLDQ4KTtkLmErPSdbJztmb3IoYT0wO2E8Yy5sZW5ndGg7KXtkLmErPWNbYV07KythPGMubGVuZ3RoJiYoZC5hKz1TaGUsZCl9ZC5hKz0nXSd9ZWxzZXtEZmIoZCwkd2QodGhpcykpfWQuYSs9JywgaXNUb3VjaDogJztGZmIoZCxpeGQodGhpcykpO2QuYSs9Jywgd2FzU2V0OiAnO0ZmYihkLGp4ZCh0aGlzKSk7ZC5hKz0nKSc7cmV0dXJuIGQuYX07Xy5kPTA7Xy5lPTA7Xy5mPTA7Xy5qPTA7Xy5rPTA7Xy5vPTA7Xy5wPTA7dmFyIGY0PW1kYihodGUsJ05vdGlmaWNhdGlvbkltcGwnLDE0Myk7YmNiKDExNjcsMTQzLGZ2ZSxDeGQpO18uX2k9ZnVuY3Rpb24gRHhkKCl7cmV0dXJuIHRoaXMuYS5faSgpfTtfLnlpPWZ1bmN0aW9uIEV4ZChhKXtyZXR1cm4gdGhpcy5hLmFqKCl9O18uQWk9ZnVuY3Rpb24gRnhkKCl7cmV0dXJuIHRoaXMuYS5BaSgpfTt2YXIgYzQ9bWRiKGh0ZSwnRGVsZWdhdGluZ05vdGlmeWluZ0xpc3RJbXBsLzEnLDExNjcpO2JjYigyNDIsNjMsb3VlLEh4ZCxJeGQpO18uRmM9ZnVuY3Rpb24gSnhkKGEpe3JldHVybiBHeGQodGhpcyxCRChhLDM2NikpfTtfLkVpPWZ1bmN0aW9uIEt4ZChhKXtyZXR1cm4gR3hkKHRoaXMsYSl9O18uRmk9ZnVuY3Rpb24gTHhkKCl7dmFyIGEsYixjO2ZvcihhPTA7YTx0aGlzLmk7KythKXtiPUJEKHRoaXMuZ1thXSwzNjYpO2M9Yi5BaSgpO2MhPW51bGwmJmIueGkoKSE9LTEmJkJEKGMsOTIpLk5nKGIpfX07Xy5yaT1mdW5jdGlvbiBNeGQoYSl7cmV0dXJuIEtDKF8zLFVoZSwzNjYsYSwwLDEpfTt2YXIgZTQ9bWRiKGh0ZSwnTm90aWZpY2F0aW9uQ2hhaW5JbXBsJywyNDIpO2JjYigxMzc4LDkwLGd0ZSk7Xy5LZz1mdW5jdGlvbiBOeGQoKXtyZXR1cm4gdGhpcy5lfTtfLk1nPWZ1bmN0aW9uIE94ZCgpe3JldHVybiAodGhpcy5mJjEpIT0wfTtfLmY9MTt2YXIgZzQ9bWRiKGh0ZSwnTm90aWZpZXJJbXBsJywxMzc4KTtiY2IoMTk5Myw2MyxvdWUpO18uVmg9ZnVuY3Rpb24gJHhkKGEsYil7cmV0dXJuIFB4ZCh0aGlzLGEsYil9O18uV2g9ZnVuY3Rpb24gX3hkKGEpe3JldHVybiB0aGlzLlZoKHRoaXMuaSxhKX07Xy5YaD1mdW5jdGlvbiBheWQoYSxiKXtReGQodGhpcyxhLGIpfTtfLlloPWZ1bmN0aW9uIGJ5ZChhKXtSeGQodGhpcyxhKX07Xy5haT1mdW5jdGlvbiBjeWQoKXtyZXR1cm4gIXRoaXMuYmooKX07Xy4kYj1mdW5jdGlvbiBkeWQoKXtVeGQodGhpcyl9O18uWmk9ZnVuY3Rpb24gZXlkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyB2eWQodGhpcyxhLGIsYyxkLGUpfTtfLiRpPWZ1bmN0aW9uIGZ5ZChhKXtVaGQodGhpcy5BaSgpLGEpfTtfLl9pPWZ1bmN0aW9uIGd5ZCgpe3JldHVybiBudWxsfTtfLmFqPWZ1bmN0aW9uIGh5ZCgpe3JldHVybiAtMX07Xy5BaT1mdW5jdGlvbiBpeWQoKXtyZXR1cm4gbnVsbH07Xy5iaj1mdW5jdGlvbiBqeWQoKXtyZXR1cm4gZmFsc2V9O18uaWo9ZnVuY3Rpb24ga3lkKCl7cmV0dXJuIGZhbHNlfTtfLmNqPWZ1bmN0aW9uIGx5ZChhLGIpe3JldHVybiBifTtfLmRqPWZ1bmN0aW9uIG15ZChhLGIpe3JldHVybiBifTtfLmVqPWZ1bmN0aW9uIG55ZCgpe3JldHVybiBmYWxzZX07Xy5maj1mdW5jdGlvbiBveWQoKXtyZXR1cm4gdGhpcy5pIT0wfTtfLmlpPWZ1bmN0aW9uIHB5ZChhLGIpe3JldHVybiBXeGQodGhpcyxhLGIpfTtfLiRjPWZ1bmN0aW9uIHF5ZChhKXtyZXR1cm4gWHhkKHRoaXMsYSl9O18ubWk9ZnVuY3Rpb24gcnlkKGEsYil7cmV0dXJuIFp4ZCh0aGlzLGEsYil9O18uamo9ZnVuY3Rpb24gc3lkKGEsYil7cmV0dXJuIGJ9O18ua2o9ZnVuY3Rpb24gdHlkKGEsYil7cmV0dXJuIGJ9O18ubGo9ZnVuY3Rpb24gdXlkKGEsYixjKXtyZXR1cm4gY307dmFyIGk0PW1kYihodGUsJ05vdGlmeWluZ0xpc3RJbXBsJywxOTkzKTtiY2IoMTE2NiwxNDMsZnZlLHZ5ZCk7Xy5faT1mdW5jdGlvbiB3eWQoKXtyZXR1cm4gdGhpcy5hLl9pKCl9O18ueWk9ZnVuY3Rpb24geHlkKGEpe3JldHVybiB0aGlzLmEuYWooKX07Xy5BaT1mdW5jdGlvbiB5eWQoKXtyZXR1cm4gdGhpcy5hLkFpKCl9O3ZhciBoND1tZGIoaHRlLCdOb3RpZnlpbmdMaXN0SW1wbC8xJywxMTY2KTtiY2IoOTUzLDYzLG91ZSx6eWQpO18uSGM9ZnVuY3Rpb24gQXlkKGEpe2lmKHRoaXMuaT4xMCl7aWYoIXRoaXMuYnx8dGhpcy5jLmohPXRoaXMuYSl7dGhpcy5iPW5ldyBWcWIodGhpcyk7dGhpcy5hPXRoaXMuan1yZXR1cm4gUnFiKHRoaXMuYixhKX1lbHNle3JldHVybiBwdWQodGhpcyxhKX19O18ubmk9ZnVuY3Rpb24gQnlkKCl7cmV0dXJuIHRydWV9O18uYT0wO3ZhciBqND1tZGIoVHRlLCdBYnN0cmFjdEVMaXN0LzEnLDk1Myk7YmNiKDI5NSw3MyxNamUsQ3lkKTt2YXIgazQ9bWRiKFR0ZSwnQWJzdHJhY3RFTGlzdC9CYXNpY0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24nLDI5NSk7YmNiKDQwLDEsYWllLEZ5ZCk7Xy5OYj1mdW5jdGlvbiBJeWQoYSl7UnJiKHRoaXMsYSl9O18ubWo9ZnVuY3Rpb24gR3lkKCl7aWYodGhpcy5pLmohPXRoaXMuZil7dGhyb3cgdmJiKG5ldyBBcGIpfX07Xy5uaj1mdW5jdGlvbiBIeWQoKXtyZXR1cm4gRHlkKHRoaXMpfTtfLk9iPWZ1bmN0aW9uIEp5ZCgpe3JldHVybiB0aGlzLmUhPXRoaXMuaS5nYygpfTtfLlBiPWZ1bmN0aW9uIEt5ZCgpe3JldHVybiB0aGlzLm5qKCl9O18uUWI9ZnVuY3Rpb24gTHlkKCl7RXlkKHRoaXMpfTtfLmU9MDtfLmY9MDtfLmc9LTE7dmFyIGw0PW1kYihUdGUsJ0Fic3RyYWN0RUxpc3QvRUl0ZXJhdG9yJyw0MCk7YmNiKDI3OCw0MCxqaWUsT3lkLFB5ZCk7Xy5RYj1mdW5jdGlvbiBYeWQoKXtFeWQodGhpcyl9O18uUmI9ZnVuY3Rpb24gUXlkKGEpe015ZCh0aGlzLGEpfTtfLm9qPWZ1bmN0aW9uIFJ5ZCgpe3ZhciBiO3RyeXtiPXRoaXMuZC5YYigtLXRoaXMuZSk7dGhpcy5taigpO3RoaXMuZz10aGlzLmU7cmV0dXJuIGJ9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3Mykpe3RoaXMubWooKTt0aHJvdyB2YmIobmV3IHV0Yil9ZWxzZSB0aHJvdyB2YmIoYSl9fTtfLnBqPWZ1bmN0aW9uIFN5ZChhKXtOeWQodGhpcyxhKX07Xy5TYj1mdW5jdGlvbiBUeWQoKXtyZXR1cm4gdGhpcy5lIT0wfTtfLlRiPWZ1bmN0aW9uIFV5ZCgpe3JldHVybiB0aGlzLmV9O18uVWI9ZnVuY3Rpb24gVnlkKCl7cmV0dXJuIHRoaXMub2ooKX07Xy5WYj1mdW5jdGlvbiBXeWQoKXtyZXR1cm4gdGhpcy5lLTF9O18uV2I9ZnVuY3Rpb24gWXlkKGEpe3RoaXMucGooYSl9O3ZhciBtND1tZGIoVHRlLCdBYnN0cmFjdEVMaXN0L0VMaXN0SXRlcmF0b3InLDI3OCk7YmNiKDM0MSw0MCxhaWUsJHlkKTtfLm5qPWZ1bmN0aW9uIF95ZCgpe3JldHVybiBaeWQodGhpcyl9O18uUWI9ZnVuY3Rpb24gYXpkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTt2YXIgbjQ9bWRiKFR0ZSwnQWJzdHJhY3RFTGlzdC9Ob25SZXNvbHZpbmdFSXRlcmF0b3InLDM0MSk7YmNiKDM4NSwyNzgsamllLGJ6ZCxjemQpO18uUmI9ZnVuY3Rpb24gZHpkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5uaj1mdW5jdGlvbiBlemQoKXt2YXIgYjt0cnl7Yj10aGlzLmMua2kodGhpcy5lKTt0aGlzLm1qKCk7dGhpcy5nPXRoaXMuZSsrO3JldHVybiBifWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXt0aGlzLm1qKCk7dGhyb3cgdmJiKG5ldyB1dGIpfWVsc2UgdGhyb3cgdmJiKGEpfX07Xy5vaj1mdW5jdGlvbiBmemQoKXt2YXIgYjt0cnl7Yj10aGlzLmMua2koLS10aGlzLmUpO3RoaXMubWooKTt0aGlzLmc9dGhpcy5lO3JldHVybiBifWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXt0aGlzLm1qKCk7dGhyb3cgdmJiKG5ldyB1dGIpfWVsc2UgdGhyb3cgdmJiKGEpfX07Xy5RYj1mdW5jdGlvbiBnemQoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uV2I9ZnVuY3Rpb24gaHpkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07dmFyIG80PW1kYihUdGUsJ0Fic3RyYWN0RUxpc3QvTm9uUmVzb2x2aW5nRUxpc3RJdGVyYXRvcicsMzg1KTtiY2IoMTk4Miw2NyxpdmUpO18uVmg9ZnVuY3Rpb24gcHpkKGEsYil7dmFyIGMsZCxlLGYsZyxoLGksaixrLGwsbTtlPWIuZ2MoKTtpZihlIT0wKXtqPUJEKEFqZCh0aGlzLmEsNCksMTI2KTtrPWo9PW51bGw/MDpqLmxlbmd0aDttPWsrZTtkPW56ZCh0aGlzLG0pO2w9ay1hO2w+MCYmJGZiKGosYSxkLGErZSxsKTtpPWIuS2MoKTtmb3IoZz0wO2c8ZTsrK2cpe2g9aS5QYigpO2M9YStnO2x6ZChkLGMsSXRkKHRoaXMsaCkpfWIwZCh0aGlzLGQpO2ZvcihmPTA7ZjxlOysrZil7aD1kW2FdO3RoaXMuYmkoYSxoKTsrK2F9cmV0dXJuIHRydWV9ZWxzZXsrK3RoaXMuajtyZXR1cm4gZmFsc2V9fTtfLldoPWZ1bmN0aW9uIHF6ZChhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGo7ZD1hLmdjKCk7aWYoZCE9MCl7aT0oYz1CRChBamQodGhpcy5hLDQpLDEyNiksYz09bnVsbD8wOmMubGVuZ3RoKTtqPWkrZDtiPW56ZCh0aGlzLGopO2g9YS5LYygpO2ZvcihmPWk7ZjxqOysrZil7Zz1oLlBiKCk7bHpkKGIsZixJdGQodGhpcyxnKSl9YjBkKHRoaXMsYik7Zm9yKGU9aTtlPGo7KytlKXtnPWJbZV07dGhpcy5iaShlLGcpfXJldHVybiB0cnVlfWVsc2V7Kyt0aGlzLmo7cmV0dXJuIGZhbHNlfX07Xy5YaD1mdW5jdGlvbiByemQoYSxiKXt2YXIgYyxkLGUsZjtkPUJEKEFqZCh0aGlzLmEsNCksMTI2KTtlPWQ9PW51bGw/MDpkLmxlbmd0aDtjPW56ZCh0aGlzLGUrMSk7Zj1JdGQodGhpcyxiKTthIT1lJiYkZmIoZCxhLGMsYSsxLGUtYSk7TkMoYyxhLGYpO2IwZCh0aGlzLGMpO3RoaXMuYmkoYSxiKX07Xy5ZaD1mdW5jdGlvbiBzemQoYSl7dmFyIGIsYyxkO2Q9KGM9QkQoQWpkKHRoaXMuYSw0KSwxMjYpLGM9PW51bGw/MDpjLmxlbmd0aCk7Yj1uemQodGhpcyxkKzEpO2x6ZChiLGQsSXRkKHRoaXMsYSkpO2IwZCh0aGlzLGIpO3RoaXMuYmkoZCxhKX07Xy5aaD1mdW5jdGlvbiB0emQoKXtyZXR1cm4gbmV3IFV6ZCh0aGlzKX07Xy4kaD1mdW5jdGlvbiB1emQoKXtyZXR1cm4gbmV3IFh6ZCh0aGlzKX07Xy5faD1mdW5jdGlvbiB2emQoYSl7dmFyIGIsYztjPShiPUJEKEFqZCh0aGlzLmEsNCksMTI2KSxiPT1udWxsPzA6Yi5sZW5ndGgpO2lmKGE8MHx8YT5jKXRocm93IHZiYihuZXcgQ3lkKGEsYykpO3JldHVybiBuZXcgWXpkKHRoaXMsYSl9O18uJGI9ZnVuY3Rpb24gd3pkKCl7dmFyIGEsYjsrK3RoaXMuajthPUJEKEFqZCh0aGlzLmEsNCksMTI2KTtiPWE9PW51bGw/MDphLmxlbmd0aDtiMGQodGhpcyxudWxsKTtBdGQodGhpcyxiLGEpfTtfLkhjPWZ1bmN0aW9uIHh6ZChhKXt2YXIgYixjLGQsZSxmO2I9QkQoQWpkKHRoaXMuYSw0KSwxMjYpO2lmKGIhPW51bGwpe2lmKGEhPW51bGwpe2ZvcihkPWIsZT0wLGY9ZC5sZW5ndGg7ZTxmOysrZSl7Yz1kW2VdO2lmKHBiKGEsYykpe3JldHVybiB0cnVlfX19ZWxzZXtmb3IoZD1iLGU9MCxmPWQubGVuZ3RoO2U8ZjsrK2Upe2M9ZFtlXTtpZihQRChjKT09PVBEKGEpKXtyZXR1cm4gdHJ1ZX19fX1yZXR1cm4gZmFsc2V9O18uWGI9ZnVuY3Rpb24geXpkKGEpe3ZhciBiLGM7Yj1CRChBamQodGhpcy5hLDQpLDEyNik7Yz1iPT1udWxsPzA6Yi5sZW5ndGg7aWYoYT49Yyl0aHJvdyB2YmIobmV3IEN5ZChhLGMpKTtyZXR1cm4gYlthXX07Xy5YYz1mdW5jdGlvbiB6emQoYSl7dmFyIGIsYyxkO2I9QkQoQWpkKHRoaXMuYSw0KSwxMjYpO2lmKGIhPW51bGwpe2lmKGEhPW51bGwpe2ZvcihjPTAsZD1iLmxlbmd0aDtjPGQ7KytjKXtpZihwYihhLGJbY10pKXtyZXR1cm4gY319fWVsc2V7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDsrK2Mpe2lmKFBEKGJbY10pPT09UEQoYSkpe3JldHVybiBjfX19fXJldHVybiAtMX07Xy5kYz1mdW5jdGlvbiBBemQoKXtyZXR1cm4gQkQoQWpkKHRoaXMuYSw0KSwxMjYpPT1udWxsfTtfLktjPWZ1bmN0aW9uIEJ6ZCgpe3JldHVybiBuZXcgTHpkKHRoaXMpfTtfLlljPWZ1bmN0aW9uIEN6ZCgpe3JldHVybiBuZXcgUHpkKHRoaXMpfTtfLlpjPWZ1bmN0aW9uIER6ZChhKXt2YXIgYixjO2M9KGI9QkQoQWpkKHRoaXMuYSw0KSwxMjYpLGI9PW51bGw/MDpiLmxlbmd0aCk7aWYoYTwwfHxhPmMpdGhyb3cgdmJiKG5ldyBDeWQoYSxjKSk7cmV0dXJuIG5ldyBRemQodGhpcyxhKX07Xy5paT1mdW5jdGlvbiBFemQoYSxiKXt2YXIgYyxkLGU7Yz1temQodGhpcyk7ZT1jPT1udWxsPzA6Yy5sZW5ndGg7aWYoYT49ZSl0aHJvdyB2YmIobmV3IHFjYihsdWUrYSttdWUrZSkpO2lmKGI+PWUpdGhyb3cgdmJiKG5ldyBxY2IobnVlK2IrbXVlK2UpKTtkPWNbYl07aWYoYSE9Yil7YTxiPyRmYihjLGEsYyxhKzEsYi1hKTokZmIoYyxiKzEsYyxiLGEtYik7TkMoYyxhLGQpO2IwZCh0aGlzLGMpfXJldHVybiBkfTtfLmtpPWZ1bmN0aW9uIEZ6ZChhKXtyZXR1cm4gQkQoQWpkKHRoaXMuYSw0KSwxMjYpW2FdfTtfLiRjPWZ1bmN0aW9uIEd6ZChhKXtyZXR1cm4gb3pkKHRoaXMsYSl9O18ubWk9ZnVuY3Rpb24gSHpkKGEsYil7dmFyIGMsZDtjPW16ZCh0aGlzKTtkPWNbYV07bHpkKGMsYSxJdGQodGhpcyxiKSk7YjBkKHRoaXMsYyk7cmV0dXJuIGR9O18uZ2M9ZnVuY3Rpb24gSXpkKCl7dmFyIGE7cmV0dXJuIGE9QkQoQWpkKHRoaXMuYSw0KSwxMjYpLGE9PW51bGw/MDphLmxlbmd0aH07Xy5QYz1mdW5jdGlvbiBKemQoKXt2YXIgYSxiLGM7YT1CRChBamQodGhpcy5hLDQpLDEyNik7Yz1hPT1udWxsPzA6YS5sZW5ndGg7Yj1LQygkMyxodmUsNDE1LGMsMCwxKTtjPjAmJiRmYihhLDAsYiwwLGMpO3JldHVybiBifTtfLlFjPWZ1bmN0aW9uIEt6ZChhKXt2YXIgYixjLGQ7Yj1CRChBamQodGhpcy5hLDQpLDEyNik7ZD1iPT1udWxsPzA6Yi5sZW5ndGg7aWYoZD4wKXtpZihhLmxlbmd0aDxkKXtjPWl6ZChyYihhKS5jLGQpO2E9Y30kZmIoYiwwLGEsMCxkKX1hLmxlbmd0aD5kJiZOQyhhLGQsbnVsbCk7cmV0dXJuIGF9O3ZhciBqemQ7dmFyIHY0PW1kYihUdGUsJ0FycmF5RGVsZWdhdGluZ0VMaXN0JywxOTgyKTtiY2IoMTAzOCw0MCxhaWUsTHpkKTtfLm1qPWZ1bmN0aW9uIE16ZCgpe2lmKHRoaXMuYi5qIT10aGlzLmZ8fFBEKEJEKEFqZCh0aGlzLmIuYSw0KSwxMjYpKSE9PVBEKHRoaXMuYSkpe3Rocm93IHZiYihuZXcgQXBiKX19O18uUWI9ZnVuY3Rpb24gTnpkKCl7RXlkKHRoaXMpO3RoaXMuYT1CRChBamQodGhpcy5iLmEsNCksMTI2KX07dmFyIHI0PW1kYihUdGUsJ0FycmF5RGVsZWdhdGluZ0VMaXN0L0VJdGVyYXRvcicsMTAzOCk7YmNiKDcwNiwyNzgsamllLFB6ZCxRemQpO18ubWo9ZnVuY3Rpb24gUnpkKCl7aWYodGhpcy5iLmohPXRoaXMuZnx8UEQoQkQoQWpkKHRoaXMuYi5hLDQpLDEyNikpIT09UEQodGhpcy5hKSl7dGhyb3cgdmJiKG5ldyBBcGIpfX07Xy5waj1mdW5jdGlvbiBTemQoYSl7TnlkKHRoaXMsYSk7dGhpcy5hPUJEKEFqZCh0aGlzLmIuYSw0KSwxMjYpfTtfLlFiPWZ1bmN0aW9uIFR6ZCgpe0V5ZCh0aGlzKTt0aGlzLmE9QkQoQWpkKHRoaXMuYi5hLDQpLDEyNil9O3ZhciBzND1tZGIoVHRlLCdBcnJheURlbGVnYXRpbmdFTGlzdC9FTGlzdEl0ZXJhdG9yJyw3MDYpO2JjYigxMDM5LDM0MSxhaWUsVXpkKTtfLm1qPWZ1bmN0aW9uIFZ6ZCgpe2lmKHRoaXMuYi5qIT10aGlzLmZ8fFBEKEJEKEFqZCh0aGlzLmIuYSw0KSwxMjYpKSE9PVBEKHRoaXMuYSkpe3Rocm93IHZiYihuZXcgQXBiKX19O3ZhciB0ND1tZGIoVHRlLCdBcnJheURlbGVnYXRpbmdFTGlzdC9Ob25SZXNvbHZpbmdFSXRlcmF0b3InLDEwMzkpO2JjYig3MDcsMzg1LGppZSxYemQsWXpkKTtfLm1qPWZ1bmN0aW9uIFp6ZCgpe2lmKHRoaXMuYi5qIT10aGlzLmZ8fFBEKEJEKEFqZCh0aGlzLmIuYSw0KSwxMjYpKSE9PVBEKHRoaXMuYSkpe3Rocm93IHZiYihuZXcgQXBiKX19O3ZhciB1ND1tZGIoVHRlLCdBcnJheURlbGVnYXRpbmdFTGlzdC9Ob25SZXNvbHZpbmdFTGlzdEl0ZXJhdG9yJyw3MDcpO2JjYig2MDYsMjk1LE1qZSwkemQpO3ZhciB3ND1tZGIoVHRlLCdCYXNpY0VMaXN0L0Jhc2ljSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbicsNjA2KTtiY2IoNjk2LDYzLG91ZSxfemQpO18uVmM9ZnVuY3Rpb24gYUFkKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkZjPWZ1bmN0aW9uIGJBZChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uV2M9ZnVuY3Rpb24gY0FkKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkdjPWZ1bmN0aW9uIGRBZChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uJGI9ZnVuY3Rpb24gZUFkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLnFpPWZ1bmN0aW9uIGZBZChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uS2M9ZnVuY3Rpb24gZ0FkKCl7cmV0dXJuIHRoaXMuWmgoKX07Xy5ZYz1mdW5jdGlvbiBoQWQoKXtyZXR1cm4gdGhpcy4kaCgpfTtfLlpjPWZ1bmN0aW9uIGlBZChhKXtyZXR1cm4gdGhpcy5faChhKX07Xy5paT1mdW5jdGlvbiBqQWQoYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O18uamk9ZnVuY3Rpb24ga0FkKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLiRjPWZ1bmN0aW9uIGxBZChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uTWM9ZnVuY3Rpb24gbUFkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5fYz1mdW5jdGlvbiBuQWQoYSxiKXt0aHJvdyB2YmIobmV3IGJnYil9O3ZhciB4ND1tZGIoVHRlLCdCYXNpY0VMaXN0L1VubW9kaWZpYWJsZUVMaXN0Jyw2OTYpO2JjYig3MDUsMSx7MzoxLDIwOjEsMTQ6MSwxNToxLDU4OjEsNTg5OjF9KTtfLlZjPWZ1bmN0aW9uIE9BZChhLGIpe29BZCh0aGlzLGEsQkQoYiw0MikpfTtfLkZjPWZ1bmN0aW9uIFBBZChhKXtyZXR1cm4gcEFkKHRoaXMsQkQoYSw0MikpfTtfLkpjPWZ1bmN0aW9uIFhBZChhKXtyZWIodGhpcyxhKX07Xy5YYj1mdW5jdGlvbiBZQWQoYSl7cmV0dXJuIEJEKHF1ZCh0aGlzLmMsYSksMTMzKX07Xy5paT1mdW5jdGlvbiBmQmQoYSxiKXtyZXR1cm4gQkQodGhpcy5jLmlpKGEsYiksNDIpfTtfLmppPWZ1bmN0aW9uIGdCZChhLGIpe0dBZCh0aGlzLGEsQkQoYiw0MikpfTtfLkxjPWZ1bmN0aW9uIGpCZCgpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLDE2KSl9O18uJGM9ZnVuY3Rpb24ga0JkKGEpe3JldHVybiBCRCh0aGlzLmMuJGMoYSksNDIpfTtfLl9jPWZ1bmN0aW9uIG1CZChhLGIpe3JldHVybiBNQWQodGhpcyxhLEJEKGIsNDIpKX07Xy5hZD1mdW5jdGlvbiBvQmQoYSl7a3RiKHRoaXMsYSl9O18uTmM9ZnVuY3Rpb24gcEJkKCl7cmV0dXJuIG5ldyBLdWIodGhpcywxNil9O18uT2M9ZnVuY3Rpb24gcUJkKCl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKHRoaXMsMTYpKX07Xy5XYz1mdW5jdGlvbiBRQWQoYSxiKXtyZXR1cm4gdGhpcy5jLldjKGEsYil9O18uR2M9ZnVuY3Rpb24gUkFkKGEpe3JldHVybiB0aGlzLmMuR2MoYSl9O18uJGI9ZnVuY3Rpb24gU0FkKCl7dGhpcy5jLiRiKCl9O18uSGM9ZnVuY3Rpb24gVEFkKGEpe3JldHVybiB0aGlzLmMuSGMoYSl9O18uSWM9ZnVuY3Rpb24gVUFkKGEpe3JldHVybiBCZSh0aGlzLmMsYSl9O18ucWo9ZnVuY3Rpb24gVkFkKCl7dmFyIGEsYixjO2lmKHRoaXMuZD09bnVsbCl7dGhpcy5kPUtDKHk0LGp2ZSw2MywyKnRoaXMuZisxLDAsMSk7Yz10aGlzLmU7dGhpcy5mPTA7Zm9yKGI9dGhpcy5jLktjKCk7Yi5lIT1iLmkuZ2MoKTspe2E9QkQoYi5uaigpLDEzMyk7dUFkKHRoaXMsYSl9dGhpcy5lPWN9fTtfLkZiPWZ1bmN0aW9uIFdBZChhKXtyZXR1cm4gekFkKHRoaXMsYSl9O18uSGI9ZnVuY3Rpb24gWkFkKCl7cmV0dXJuIEV0ZCh0aGlzLmMpfTtfLlhjPWZ1bmN0aW9uICRBZChhKXtyZXR1cm4gdGhpcy5jLlhjKGEpfTtfLnJqPWZ1bmN0aW9uIF9BZCgpe3RoaXMuYz1uZXcgeUJkKHRoaXMpfTtfLmRjPWZ1bmN0aW9uIGFCZCgpe3JldHVybiB0aGlzLmY9PTB9O18uS2M9ZnVuY3Rpb24gYkJkKCl7cmV0dXJuIHRoaXMuYy5LYygpfTtfLlljPWZ1bmN0aW9uIGNCZCgpe3JldHVybiB0aGlzLmMuWWMoKX07Xy5aYz1mdW5jdGlvbiBkQmQoYSl7cmV0dXJuIHRoaXMuYy5aYyhhKX07Xy5zaj1mdW5jdGlvbiBlQmQoKXtyZXR1cm4gRkFkKHRoaXMpfTtfLnRqPWZ1bmN0aW9uIGhCZChhLGIsYyl7cmV0dXJuIG5ldyB6Q2QoYSxiLGMpfTtfLnVqPWZ1bmN0aW9uIGlCZCgpe3JldHVybiBuZXcgRUJkfTtfLk1jPWZ1bmN0aW9uIGxCZChhKXtyZXR1cm4gSkFkKHRoaXMsYSl9O18uZ2M9ZnVuY3Rpb24gbkJkKCl7cmV0dXJuIHRoaXMuZn07Xy5iZD1mdW5jdGlvbiByQmQoYSxiKXtyZXR1cm4gbmV3IEppYih0aGlzLmMsYSxiKX07Xy5QYz1mdW5jdGlvbiBzQmQoKXtyZXR1cm4gdGhpcy5jLlBjKCl9O18uUWM9ZnVuY3Rpb24gdEJkKGEpe3JldHVybiB0aGlzLmMuUWMoYSl9O18uSWI9ZnVuY3Rpb24gdUJkKCl7cmV0dXJuIEh0ZCh0aGlzLmMpfTtfLmU9MDtfLmY9MDt2YXIgTDQ9bWRiKFR0ZSwnQmFzaWNFTWFwJyw3MDUpO2JjYigxMDMzLDYzLG91ZSx5QmQpO18uYmk9ZnVuY3Rpb24gekJkKGEsYil7dkJkKHRoaXMsQkQoYiwxMzMpKX07Xy5laT1mdW5jdGlvbiBCQmQoYSxiLGMpe3ZhciBkOysrKGQ9dGhpcyxCRChiLDEzMyksZCkuYS5lfTtfLmZpPWZ1bmN0aW9uIENCZChhLGIpe3dCZCh0aGlzLEJEKGIsMTMzKSl9O18uZ2k9ZnVuY3Rpb24gREJkKGEsYixjKXt4QmQodGhpcyxCRChiLDEzMyksQkQoYywxMzMpKX07Xy5kaT1mdW5jdGlvbiBBQmQoYSxiKXt0QWQodGhpcy5hKX07dmFyIHo0PW1kYihUdGUsJ0Jhc2ljRU1hcC8xJywxMDMzKTtiY2IoMTAzNCw2MyxvdWUsRUJkKTtfLnJpPWZ1bmN0aW9uIEZCZChhKXtyZXR1cm4gS0MoSTQsa3ZlLDYxMixhLDAsMSl9O3ZhciBBND1tZGIoVHRlLCdCYXNpY0VNYXAvMicsMTAzNCk7YmNiKDEwMzUsZWllLGZpZSxHQmQpO18uJGI9ZnVuY3Rpb24gSEJkKCl7dGhpcy5hLmMuJGIoKX07Xy5IYz1mdW5jdGlvbiBJQmQoYSl7cmV0dXJuIHFBZCh0aGlzLmEsYSl9O18uS2M9ZnVuY3Rpb24gSkJkKCl7cmV0dXJuIHRoaXMuYS5mPT0wPyhMQ2QoKSxLQ2QuYSk6bmV3IGRDZCh0aGlzLmEpfTtfLk1jPWZ1bmN0aW9uIEtCZChhKXt2YXIgYjtiPXRoaXMuYS5mO0xBZCh0aGlzLmEsYSk7cmV0dXJuIHRoaXMuYS5mIT1ifTtfLmdjPWZ1bmN0aW9uIExCZCgpe3JldHVybiB0aGlzLmEuZn07dmFyIEI0PW1kYihUdGUsJ0Jhc2ljRU1hcC8zJywxMDM1KTtiY2IoMTAzNiwyOCxkaWUsTUJkKTtfLiRiPWZ1bmN0aW9uIE5CZCgpe3RoaXMuYS5jLiRiKCl9O18uSGM9ZnVuY3Rpb24gT0JkKGEpe3JldHVybiByQWQodGhpcy5hLGEpfTtfLktjPWZ1bmN0aW9uIFBCZCgpe3JldHVybiB0aGlzLmEuZj09MD8oTENkKCksS0NkLmEpOm5ldyBmQ2QodGhpcy5hKX07Xy5nYz1mdW5jdGlvbiBRQmQoKXtyZXR1cm4gdGhpcy5hLmZ9O3ZhciBDND1tZGIoVHRlLCdCYXNpY0VNYXAvNCcsMTAzNik7YmNiKDEwMzcsZWllLGZpZSxTQmQpO18uJGI9ZnVuY3Rpb24gVEJkKCl7dGhpcy5hLmMuJGIoKX07Xy5IYz1mdW5jdGlvbiBVQmQoYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqO2lmKHRoaXMuYS5mPjAmJkpEKGEsNDIpKXt0aGlzLmEucWooKTtpPUJEKGEsNDIpO2g9aS5jZCgpO2U9aD09bnVsbD8wOnRiKGgpO2Y9REFkKHRoaXMuYSxlKTtiPXRoaXMuYS5kW2ZdO2lmKGIpe2M9QkQoYi5nLDM2Nyk7aj1iLmk7Zm9yKGc9MDtnPGo7KytnKXtkPWNbZ107aWYoZC5TaCgpPT1lJiZkLkZiKGkpKXtyZXR1cm4gdHJ1ZX19fX1yZXR1cm4gZmFsc2V9O18uS2M9ZnVuY3Rpb24gVkJkKCl7cmV0dXJuIHRoaXMuYS5mPT0wPyhMQ2QoKSxLQ2QuYSk6bmV3IFpCZCh0aGlzLmEpfTtfLk1jPWZ1bmN0aW9uIFdCZChhKXtyZXR1cm4gUkJkKHRoaXMsYSl9O18uZ2M9ZnVuY3Rpb24gWEJkKCl7cmV0dXJuIHRoaXMuYS5mfTt2YXIgRDQ9bWRiKFR0ZSwnQmFzaWNFTWFwLzUnLDEwMzcpO2JjYig2MTMsMSxhaWUsWkJkKTtfLk5iPWZ1bmN0aW9uICRCZChhKXtScmIodGhpcyxhKX07Xy5PYj1mdW5jdGlvbiBfQmQoKXtyZXR1cm4gdGhpcy5iIT0tMX07Xy5QYj1mdW5jdGlvbiBhQ2QoKXt2YXIgYTtpZih0aGlzLmYuZSE9dGhpcy5jKXt0aHJvdyB2YmIobmV3IEFwYil9aWYodGhpcy5iPT0tMSl7dGhyb3cgdmJiKG5ldyB1dGIpfXRoaXMuZD10aGlzLmE7dGhpcy5lPXRoaXMuYjtZQmQodGhpcyk7YT1CRCh0aGlzLmYuZFt0aGlzLmRdLmdbdGhpcy5lXSwxMzMpO3JldHVybiB0aGlzLnZqKGEpfTtfLlFiPWZ1bmN0aW9uIGJDZCgpe2lmKHRoaXMuZi5lIT10aGlzLmMpe3Rocm93IHZiYihuZXcgQXBiKX1pZih0aGlzLmU9PS0xKXt0aHJvdyB2YmIobmV3IFlkYil9dGhpcy5mLmMuTWMocXVkKHRoaXMuZi5kW3RoaXMuZF0sdGhpcy5lKSk7dGhpcy5jPXRoaXMuZi5lO3RoaXMuZT0tMTt0aGlzLmE9PXRoaXMuZCYmdGhpcy5iIT0tMSYmLS10aGlzLmJ9O18udmo9ZnVuY3Rpb24gY0NkKGEpe3JldHVybiBhfTtfLmE9MDtfLmI9LTE7Xy5jPTA7Xy5kPTA7Xy5lPTA7dmFyIEU0PW1kYihUdGUsJ0Jhc2ljRU1hcC9CYXNpY0VNYXBJdGVyYXRvcicsNjEzKTtiY2IoMTAzMSw2MTMsYWllLGRDZCk7Xy52aj1mdW5jdGlvbiBlQ2QoYSl7cmV0dXJuIGEuY2QoKX07dmFyIEY0PW1kYihUdGUsJ0Jhc2ljRU1hcC9CYXNpY0VNYXBLZXlJdGVyYXRvcicsMTAzMSk7YmNiKDEwMzIsNjEzLGFpZSxmQ2QpO18udmo9ZnVuY3Rpb24gZ0NkKGEpe3JldHVybiBhLmRkKCl9O3ZhciBHND1tZGIoVHRlLCdCYXNpY0VNYXAvQmFzaWNFTWFwVmFsdWVJdGVyYXRvcicsMTAzMik7YmNiKDEwMzAsMSxjaWUsaUNkKTtfLndjPWZ1bmN0aW9uIG9DZChhKXtzdGIodGhpcyxhKX07Xy55Yz1mdW5jdGlvbiB0Q2QoYSxiLGMpe3JldHVybiB0dGIodGhpcyxhLGIsYyl9O18uJGI9ZnVuY3Rpb24gakNkKCl7dGhpcy5hLmMuJGIoKX07Xy5fYj1mdW5jdGlvbiBrQ2QoYSl7cmV0dXJuIGhDZCh0aGlzLGEpfTtfLnVjPWZ1bmN0aW9uIGxDZChhKXtyZXR1cm4gckFkKHRoaXMuYSxhKX07Xy52Yz1mdW5jdGlvbiBtQ2QoKXtyZXR1cm4geUFkKHRoaXMuYSl9O18uRmI9ZnVuY3Rpb24gbkNkKGEpe3JldHVybiB6QWQodGhpcy5hLGEpfTtfLnhjPWZ1bmN0aW9uIHBDZChhKXtyZXR1cm4gQUFkKHRoaXMuYSxhKX07Xy5IYj1mdW5jdGlvbiBxQ2QoKXtyZXR1cm4gRXRkKHRoaXMuYS5jKX07Xy5kYz1mdW5jdGlvbiByQ2QoKXtyZXR1cm4gdGhpcy5hLmY9PTB9O18uZWM9ZnVuY3Rpb24gc0NkKCl7cmV0dXJuIEVBZCh0aGlzLmEpfTtfLnpjPWZ1bmN0aW9uIHVDZChhLGIpe3JldHVybiBIQWQodGhpcy5hLGEsYil9O18uQmM9ZnVuY3Rpb24gdkNkKGEpe3JldHVybiBMQWQodGhpcy5hLGEpfTtfLmdjPWZ1bmN0aW9uIHdDZCgpe3JldHVybiB0aGlzLmEuZn07Xy5JYj1mdW5jdGlvbiB4Q2QoKXtyZXR1cm4gSHRkKHRoaXMuYS5jKX07Xy5DYz1mdW5jdGlvbiB5Q2QoKXtyZXR1cm4gTkFkKHRoaXMuYSl9O3ZhciBIND1tZGIoVHRlLCdCYXNpY0VNYXAvRGVsZWdhdGluZ01hcCcsMTAzMCk7YmNiKDYxMiwxLHs0MjoxLDEzMzoxLDYxMjoxfSx6Q2QpO18uRmI9ZnVuY3Rpb24gQUNkKGEpe3ZhciBiO2lmKEpEKGEsNDIpKXtiPUJEKGEsNDIpO3JldHVybiAodGhpcy5iIT1udWxsP3BiKHRoaXMuYixiLmNkKCkpOlBEKHRoaXMuYik9PT1QRChiLmNkKCkpKSYmKHRoaXMuYyE9bnVsbD9wYih0aGlzLmMsYi5kZCgpKTpQRCh0aGlzLmMpPT09UEQoYi5kZCgpKSl9ZWxzZXtyZXR1cm4gZmFsc2V9fTtfLlNoPWZ1bmN0aW9uIEJDZCgpe3JldHVybiB0aGlzLmF9O18uY2Q9ZnVuY3Rpb24gQ0NkKCl7cmV0dXJuIHRoaXMuYn07Xy5kZD1mdW5jdGlvbiBEQ2QoKXtyZXR1cm4gdGhpcy5jfTtfLkhiPWZ1bmN0aW9uIEVDZCgpe3JldHVybiB0aGlzLmFeKHRoaXMuYz09bnVsbD8wOnRiKHRoaXMuYykpfTtfLlRoPWZ1bmN0aW9uIEZDZChhKXt0aGlzLmE9YX07Xy5VaD1mdW5jdGlvbiBHQ2QoYSl7dGhyb3cgdmJiKG5ldyBneil9O18uZWQ9ZnVuY3Rpb24gSENkKGEpe3ZhciBiO2I9dGhpcy5jO3RoaXMuYz1hO3JldHVybiBifTtfLkliPWZ1bmN0aW9uIElDZCgpe3JldHVybiB0aGlzLmIrJy0+Jyt0aGlzLmN9O18uYT0wO3ZhciBJND1tZGIoVHRlLCdCYXNpY0VNYXAvRW50cnlJbXBsJyw2MTIpO2JjYig1MzYsMSx7fSxKQ2QpO3ZhciBLND1tZGIoVHRlLCdCYXNpY0VNYXAvVmlldycsNTM2KTt2YXIgS0NkO2JjYig3NjgsMSx7fSk7Xy5GYj1mdW5jdGlvbiBaQ2QoYSl7cmV0dXJuIEF0KChtbWIoKSxqbWIpLGEpfTtfLkhiPWZ1bmN0aW9uICRDZCgpe3JldHVybiBxbWIoKG1tYigpLGptYikpfTtfLkliPWZ1bmN0aW9uIF9DZCgpe3JldHVybiBGZSgobW1iKCksam1iKSl9O3ZhciBRND1tZGIoVHRlLCdFQ29sbGVjdGlvbnMvQmFzaWNFbXB0eVVubW9kaWZpYWJsZUVMaXN0Jyw3NjgpO2JjYigxMzEyLDEsamllLGFEZCk7Xy5OYj1mdW5jdGlvbiBjRGQoYSl7UnJiKHRoaXMsYSl9O18uUmI9ZnVuY3Rpb24gYkRkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5PYj1mdW5jdGlvbiBkRGQoKXtyZXR1cm4gZmFsc2V9O18uU2I9ZnVuY3Rpb24gZURkKCl7cmV0dXJuIGZhbHNlfTtfLlBiPWZ1bmN0aW9uIGZEZCgpe3Rocm93IHZiYihuZXcgdXRiKX07Xy5UYj1mdW5jdGlvbiBnRGQoKXtyZXR1cm4gMH07Xy5VYj1mdW5jdGlvbiBoRGQoKXt0aHJvdyB2YmIobmV3IHV0Yil9O18uVmI9ZnVuY3Rpb24gaURkKCl7cmV0dXJuIC0xfTtfLlFiPWZ1bmN0aW9uIGpEZCgpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5XYj1mdW5jdGlvbiBrRGQoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTt2YXIgUDQ9bWRiKFR0ZSwnRUNvbGxlY3Rpb25zL0Jhc2ljRW1wdHlVbm1vZGlmaWFibGVFTGlzdC8xJywxMzEyKTtiY2IoMTMxMCw3NjgsezIwOjEsMTQ6MSwxNToxLDU4OjF9LGxEZCk7Xy5WYz1mdW5jdGlvbiBtRGQoYSxiKXtPQ2QoKX07Xy5GYz1mdW5jdGlvbiBuRGQoYSl7cmV0dXJuIFBDZCgpfTtfLldjPWZ1bmN0aW9uIG9EZChhLGIpe3JldHVybiBRQ2QoKX07Xy5HYz1mdW5jdGlvbiBwRGQoYSl7cmV0dXJuIFJDZCgpfTtfLiRiPWZ1bmN0aW9uIHFEZCgpe1NDZCgpfTtfLkhjPWZ1bmN0aW9uIHJEZChhKXtyZXR1cm4gZmFsc2V9O18uSWM9ZnVuY3Rpb24gc0RkKGEpe3JldHVybiBmYWxzZX07Xy5KYz1mdW5jdGlvbiB0RGQoYSl7cmViKHRoaXMsYSl9O18uWGI9ZnVuY3Rpb24gdURkKGEpe3JldHVybiB3bWIoKG1tYigpLGptYixhKSksbnVsbH07Xy5YYz1mdW5jdGlvbiB2RGQoYSl7cmV0dXJuIC0xfTtfLmRjPWZ1bmN0aW9uIHdEZCgpe3JldHVybiB0cnVlfTtfLktjPWZ1bmN0aW9uIHhEZCgpe3JldHVybiB0aGlzLmF9O18uWWM9ZnVuY3Rpb24geURkKCl7cmV0dXJuIHRoaXMuYX07Xy5aYz1mdW5jdGlvbiB6RGQoYSl7cmV0dXJuIHRoaXMuYX07Xy5paT1mdW5jdGlvbiBBRGQoYSxiKXtyZXR1cm4gVENkKCl9O18uamk9ZnVuY3Rpb24gQkRkKGEsYil7VUNkKCl9O18uTGM9ZnVuY3Rpb24gQ0RkKCl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKHRoaXMsMTYpKX07Xy4kYz1mdW5jdGlvbiBERGQoYSl7cmV0dXJuIFZDZCgpfTtfLk1jPWZ1bmN0aW9uIEVEZChhKXtyZXR1cm4gV0NkKCl9O18uX2M9ZnVuY3Rpb24gRkRkKGEsYil7cmV0dXJuIFhDZCgpfTtfLmdjPWZ1bmN0aW9uIEdEZCgpe3JldHVybiAwfTtfLmFkPWZ1bmN0aW9uIEhEZChhKXtrdGIodGhpcyxhKX07Xy5OYz1mdW5jdGlvbiBJRGQoKXtyZXR1cm4gbmV3IEt1Yih0aGlzLDE2KX07Xy5PYz1mdW5jdGlvbiBKRGQoKXtyZXR1cm4gbmV3IFlBYihudWxsLG5ldyBLdWIodGhpcywxNikpfTtfLmJkPWZ1bmN0aW9uIEtEZChhLGIpe3JldHVybiBtbWIoKSxuZXcgSmliKGptYixhLGIpfTtfLlBjPWZ1bmN0aW9uIExEZCgpe3JldHVybiBEZSgobW1iKCksam1iKSl9O18uUWM9ZnVuY3Rpb24gTURkKGEpe3JldHVybiBtbWIoKSxFZShqbWIsYSl9O3ZhciBSND1tZGIoVHRlLCdFQ29sbGVjdGlvbnMvRW1wdHlVbm1vZGlmaWFibGVFTGlzdCcsMTMxMCk7YmNiKDEzMTEsNzY4LHsyMDoxLDE0OjEsMTU6MSw1ODoxLDU4OToxfSxORGQpO18uVmM9ZnVuY3Rpb24gT0RkKGEsYil7T0NkKCl9O18uRmM9ZnVuY3Rpb24gUERkKGEpe3JldHVybiBQQ2QoKX07Xy5XYz1mdW5jdGlvbiBRRGQoYSxiKXtyZXR1cm4gUUNkKCl9O18uR2M9ZnVuY3Rpb24gUkRkKGEpe3JldHVybiBSQ2QoKX07Xy4kYj1mdW5jdGlvbiBTRGQoKXtTQ2QoKX07Xy5IYz1mdW5jdGlvbiBURGQoYSl7cmV0dXJuIGZhbHNlfTtfLkljPWZ1bmN0aW9uIFVEZChhKXtyZXR1cm4gZmFsc2V9O18uSmM9ZnVuY3Rpb24gVkRkKGEpe3JlYih0aGlzLGEpfTtfLlhiPWZ1bmN0aW9uIFdEZChhKXtyZXR1cm4gd21iKChtbWIoKSxqbWIsYSkpLG51bGx9O18uWGM9ZnVuY3Rpb24gWERkKGEpe3JldHVybiAtMX07Xy5kYz1mdW5jdGlvbiBZRGQoKXtyZXR1cm4gdHJ1ZX07Xy5LYz1mdW5jdGlvbiBaRGQoKXtyZXR1cm4gdGhpcy5hfTtfLlljPWZ1bmN0aW9uICREZCgpe3JldHVybiB0aGlzLmF9O18uWmM9ZnVuY3Rpb24gX0RkKGEpe3JldHVybiB0aGlzLmF9O18uaWk9ZnVuY3Rpb24gYkVkKGEsYil7cmV0dXJuIFRDZCgpfTtfLmppPWZ1bmN0aW9uIGNFZChhLGIpe1VDZCgpfTtfLkxjPWZ1bmN0aW9uIGRFZCgpe3JldHVybiBuZXcgWUFiKG51bGwsbmV3IEt1Yih0aGlzLDE2KSl9O18uJGM9ZnVuY3Rpb24gZUVkKGEpe3JldHVybiBWQ2QoKX07Xy5NYz1mdW5jdGlvbiBmRWQoYSl7cmV0dXJuIFdDZCgpfTtfLl9jPWZ1bmN0aW9uIGdFZChhLGIpe3JldHVybiBYQ2QoKX07Xy5nYz1mdW5jdGlvbiBoRWQoKXtyZXR1cm4gMH07Xy5hZD1mdW5jdGlvbiBpRWQoYSl7a3RiKHRoaXMsYSl9O18uTmM9ZnVuY3Rpb24gakVkKCl7cmV0dXJuIG5ldyBLdWIodGhpcywxNil9O18uT2M9ZnVuY3Rpb24ga0VkKCl7cmV0dXJuIG5ldyBZQWIobnVsbCxuZXcgS3ViKHRoaXMsMTYpKX07Xy5iZD1mdW5jdGlvbiBsRWQoYSxiKXtyZXR1cm4gbW1iKCksbmV3IEppYihqbWIsYSxiKX07Xy5QYz1mdW5jdGlvbiBtRWQoKXtyZXR1cm4gRGUoKG1tYigpLGptYikpfTtfLlFjPWZ1bmN0aW9uIG5FZChhKXtyZXR1cm4gbW1iKCksRWUoam1iLGEpfTtfLnNqPWZ1bmN0aW9uIGFFZCgpe3JldHVybiBtbWIoKSxtbWIoKSxrbWJ9O3ZhciBTND1tZGIoVHRlLCdFQ29sbGVjdGlvbnMvRW1wdHlVbm1vZGlmaWFibGVFTWFwJywxMzExKTt2YXIgVTQ9b2RiKFR0ZSwnRW51bWVyYXRvcicpO3ZhciBvRWQ7YmNiKDI4MSwxLHsyODE6MX0sTkVkKTtfLkZiPWZ1bmN0aW9uIFJFZChhKXt2YXIgYjtpZih0aGlzPT09YSlyZXR1cm4gdHJ1ZTtpZighSkQoYSwyODEpKXJldHVybiBmYWxzZTtiPUJEKGEsMjgxKTtyZXR1cm4gdGhpcy5mPT1iLmYmJlRFZCh0aGlzLmksYi5pKSYmU0VkKHRoaXMuYSwodGhpcy5mJjI1NikhPTA/KGIuZiYyNTYpIT0wP2IuYTpudWxsOihiLmYmMjU2KSE9MD9udWxsOmIuYSkmJlNFZCh0aGlzLmQsYi5kKSYmU0VkKHRoaXMuZyxiLmcpJiZTRWQodGhpcy5lLGIuZSkmJktFZCh0aGlzLGIpfTtfLkhiPWZ1bmN0aW9uIFdFZCgpe3JldHVybiB0aGlzLmZ9O18uSWI9ZnVuY3Rpb24gY0ZkKCl7cmV0dXJuIExFZCh0aGlzKX07Xy5mPTA7dmFyIHNFZD0wLHRFZD0wLHVFZD0wLHZFZD0wLHdFZD0wLHhFZD0wLHlFZD0wLHpFZD0wLEFFZD0wLEJFZCxDRWQ9MCxERWQ9MCxFRWQ9MCxGRWQ9MCxHRWQsSEVkO3ZhciBaND1tZGIoVHRlLCdVUkknLDI4MSk7YmNiKDEwOTEsNDMsZmtlLG1GZCk7Xy56Yz1mdW5jdGlvbiBuRmQoYSxiKXtyZXR1cm4gQkQoU2hiKHRoaXMsR0QoYSksQkQoYiwyODEpKSwyODEpfTt2YXIgWTQ9bWRiKFR0ZSwnVVJJL1VSSUNhY2hlJywxMDkxKTtiY2IoNDk3LDYzLG91ZSxvRmQscEZkKTtfLmhpPWZ1bmN0aW9uIHFGZCgpe3JldHVybiB0cnVlfTt2YXIgJDQ9bWRiKFR0ZSwnVW5pcXVlRUxpc3QnLDQ5Nyk7YmNiKDU4MSw2MCxUaWUsckZkKTt2YXIgXzQ9bWRiKFR0ZSwnV3JhcHBlZEV4Y2VwdGlvbicsNTgxKTt2YXIgYTU9b2RiKFZzZSxudmUpO3ZhciB2NT1vZGIoVnNlLG92ZSk7dmFyIHQ1PW9kYihWc2UscHZlKTt2YXIgYjU9b2RiKFZzZSxxdmUpO3ZhciBkNT1vZGIoVnNlLHJ2ZSk7dmFyIGM1PW9kYihWc2UsJ0VDbGFzcycpO3ZhciBmNT1vZGIoVnNlLCdFRGF0YVR5cGUnKTt2YXIgc0ZkO2JjYigxMTgzLDQzLGZrZSx2RmQpO18ueGM9ZnVuY3Rpb24gd0ZkKGEpe3JldHVybiBORChhKT9QaGIodGhpcyxhKTpXZChpcmIodGhpcy5mLGEpKX07dmFyIGU1PW1kYihWc2UsJ0VEYXRhVHlwZS9JbnRlcm5hbC9Db252ZXJzaW9uRGVsZWdhdGUvRmFjdG9yeS9SZWdpc3RyeS9JbXBsJywxMTgzKTt2YXIgaDU9b2RiKFZzZSwnRUVudW0nKTt2YXIgZzU9b2RiKFZzZSxzdmUpO3ZhciBqNT1vZGIoVnNlLHR2ZSk7dmFyIG41PW9kYihWc2UsdXZlKTt2YXIgeEZkO3ZhciBwNT1vZGIoVnNlLHZ2ZSk7dmFyIHE1PW9kYihWc2Usd3ZlKTtiY2IoMTAyOSwxLHt9LEJGZCk7Xy5JYj1mdW5jdGlvbiBDRmQoKXtyZXR1cm4gJ05JTCd9O3ZhciByNT1tZGIoVnNlLCdFU3RydWN0dXJhbEZlYXR1cmUvSW50ZXJuYWwvRHluYW1pY1ZhbHVlSG9sZGVyLzEnLDEwMjkpO3ZhciBERmQ7YmNiKDEwMjgsNDMsZmtlLEdGZCk7Xy54Yz1mdW5jdGlvbiBIRmQoYSl7cmV0dXJuIE5EKGEpP1BoYih0aGlzLGEpOldkKGlyYih0aGlzLmYsYSkpfTt2YXIgczU9bWRiKFZzZSwnRVN0cnVjdHVyYWxGZWF0dXJlL0ludGVybmFsL1NldHRpbmdEZWxlZ2F0ZS9GYWN0b3J5L1JlZ2lzdHJ5L0ltcGwnLDEwMjgpO3ZhciB1NT1vZGIoVnNlLHh2ZSk7dmFyIHc1PW9kYihWc2UsJ0VWYWxpZGF0b3IvUGF0dGVybk1hdGNoZXInKTt2YXIgSUZkO3ZhciBLRmQ7dmFyIE1GZDt2YXIgT0ZkLFBGZCxRRmQsUkZkLFNGZCxURmQsVUZkLFZGZCxXRmQsWEZkLFlGZCxaRmQsJEZkLF9GZCxhR2QsYkdkLGNHZCxkR2QsZUdkLGZHZCxnR2QsaEdkLGlHZDt2YXIgRTk9b2RiKHl2ZSwnRmVhdHVyZU1hcC9FbnRyeScpO2JjYig1MzUsMSx7NzI6MX0sa0dkKTtfLmFrPWZ1bmN0aW9uIGxHZCgpe3JldHVybiB0aGlzLmF9O18uZGQ9ZnVuY3Rpb24gbUdkKCl7cmV0dXJuIHRoaXMuYn07dmFyIHg1PW1kYihxdGUsJ0Jhc2ljRU9iamVjdEltcGwvMScsNTM1KTtiY2IoMTAyNywxLHp2ZSxuR2QpO18uV2o9ZnVuY3Rpb24gb0dkKGEpe3JldHVybiBoaWQodGhpcy5hLHRoaXMuYixhKX07Xy5maj1mdW5jdGlvbiBwR2QoKXtyZXR1cm4gbmlkKHRoaXMuYSx0aGlzLmIpfTtfLldiPWZ1bmN0aW9uIHFHZChhKXt6aWQodGhpcy5hLHRoaXMuYixhKX07Xy5Yaj1mdW5jdGlvbiByR2QoKXtEaWQodGhpcy5hLHRoaXMuYil9O3ZhciB5NT1tZGIocXRlLCdCYXNpY0VPYmplY3RJbXBsLzQnLDEwMjcpO2JjYigxOTgzLDEsezEwODoxfSk7Xy5iaz1mdW5jdGlvbiB1R2QoYSl7dGhpcy5lPWE9PTA/c0dkOktDKFNJLFVoZSwxLGEsNSwxKX07Xy5DaD1mdW5jdGlvbiB2R2QoYSl7cmV0dXJuIHRoaXMuZVthXX07Xy5EaD1mdW5jdGlvbiB3R2QoYSxiKXt0aGlzLmVbYV09Yn07Xy5FaD1mdW5jdGlvbiB4R2QoYSl7dGhpcy5lW2FdPW51bGx9O18uY2s9ZnVuY3Rpb24geUdkKCl7cmV0dXJuIHRoaXMuY307Xy5kaz1mdW5jdGlvbiB6R2QoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uZWs9ZnVuY3Rpb24gQUdkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLmZrPWZ1bmN0aW9uIEJHZCgpe3JldHVybiB0aGlzLmR9O18uZ2s9ZnVuY3Rpb24gQ0dkKCl7cmV0dXJuIHRoaXMuZSE9bnVsbH07Xy5oaz1mdW5jdGlvbiBER2QoYSl7dGhpcy5jPWF9O18uaWs9ZnVuY3Rpb24gRUdkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5qaz1mdW5jdGlvbiBGR2QoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLmtrPWZ1bmN0aW9uIEdHZChhKXt0aGlzLmQ9YX07dmFyIHNHZDt2YXIgejU9bWRiKHF0ZSwnQmFzaWNFT2JqZWN0SW1wbC9FUHJvcGVydGllc0hvbGRlckJhc2VJbXBsJywxOTgzKTtiY2IoMTg1LDE5ODMsezEwODoxfSxIR2QpO18uZGs9ZnVuY3Rpb24gSUdkKCl7cmV0dXJuIHRoaXMuYX07Xy5laz1mdW5jdGlvbiBKR2QoKXtyZXR1cm4gdGhpcy5ifTtfLmlrPWZ1bmN0aW9uIEtHZChhKXt0aGlzLmE9YX07Xy5qaz1mdW5jdGlvbiBMR2QoYSl7dGhpcy5iPWF9O3ZhciBBNT1tZGIocXRlLCdCYXNpY0VPYmplY3RJbXBsL0VQcm9wZXJ0aWVzSG9sZGVySW1wbCcsMTg1KTtiY2IoNTA2LDk3LHB0ZSxNR2QpO18uS2c9ZnVuY3Rpb24gTkdkKCl7cmV0dXJuIHRoaXMuZn07Xy5QZz1mdW5jdGlvbiBPR2QoKXtyZXR1cm4gdGhpcy5rfTtfLlJnPWZ1bmN0aW9uIFBHZChhLGIpe3RoaXMuZz1hO3RoaXMuaT1ifTtfLlRnPWZ1bmN0aW9uIFFHZCgpe3JldHVybiAodGhpcy5qJjIpPT0wP3RoaXMuemgoKTp0aGlzLnBoKCkuY2soKX07Xy5WZz1mdW5jdGlvbiBSR2QoKXtyZXR1cm4gdGhpcy5pfTtfLk1nPWZ1bmN0aW9uIFNHZCgpe3JldHVybiAodGhpcy5qJjEpIT0wfTtfLmVoPWZ1bmN0aW9uIFRHZCgpe3JldHVybiB0aGlzLmd9O18ua2g9ZnVuY3Rpb24gVUdkKCl7cmV0dXJuICh0aGlzLmomNCkhPTB9O18ucGg9ZnVuY3Rpb24gVkdkKCl7cmV0dXJuICF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rfTtfLnRoPWZ1bmN0aW9uIFdHZChhKXt0aGlzLnBoKCkuaGsoYSk7YT8odGhpcy5qfD0yKToodGhpcy5qJj0tMyl9O18udmg9ZnVuY3Rpb24gWEdkKGEpe3RoaXMucGgoKS5qayhhKTthPyh0aGlzLmp8PTQpOih0aGlzLmomPS01KX07Xy56aD1mdW5jdGlvbiBZR2QoKXtyZXR1cm4gKE5GZCgpLE1GZCkuU307Xy5pPTA7Xy5qPTE7dmFyIGw2PW1kYihxdGUsJ0VPYmplY3RJbXBsJyw1MDYpO2JjYig3ODAsNTA2LHsxMDU6MSw5MjoxLDkwOjEsNTY6MSwxMDg6MSw0OToxLDk3OjF9LF9HZCk7Xy5DaD1mdW5jdGlvbiBhSGQoYSl7cmV0dXJuIHRoaXMuZVthXX07Xy5EaD1mdW5jdGlvbiBiSGQoYSxiKXt0aGlzLmVbYV09Yn07Xy5FaD1mdW5jdGlvbiBjSGQoYSl7dGhpcy5lW2FdPW51bGx9O18uVGc9ZnVuY3Rpb24gZEhkKCl7cmV0dXJuIHRoaXMuZH07Xy5ZZz1mdW5jdGlvbiBlSGQoYSl7cmV0dXJuIGJMZCh0aGlzLmQsYSl9O18uJGc9ZnVuY3Rpb24gZkhkKCl7cmV0dXJuIHRoaXMuZH07Xy5kaD1mdW5jdGlvbiBnSGQoKXtyZXR1cm4gdGhpcy5lIT1udWxsfTtfLnBoPWZ1bmN0aW9uIGhIZCgpeyF0aGlzLmsmJih0aGlzLms9bmV3IHZIZCk7cmV0dXJuIHRoaXMua307Xy50aD1mdW5jdGlvbiBpSGQoYSl7dGhpcy5kPWF9O18ueWg9ZnVuY3Rpb24gakhkKCl7dmFyIGE7aWYodGhpcy5lPT1udWxsKXthPWFMZCh0aGlzLmQpO3RoaXMuZT1hPT0wP1pHZDpLQyhTSSxVaGUsMSxhLDUsMSl9cmV0dXJuIHRoaXN9O18uQWg9ZnVuY3Rpb24ga0hkKCl7cmV0dXJuIDB9O3ZhciBaR2Q7dmFyIEU1PW1kYihxdGUsJ0R5bmFtaWNFT2JqZWN0SW1wbCcsNzgwKTtiY2IoMTM3Niw3ODAsezEwNToxLDQyOjEsOTI6MSw5MDoxLDEzMzoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxfSxsSGQpO18uRmI9ZnVuY3Rpb24gbkhkKGEpe3JldHVybiB0aGlzPT09YX07Xy5IYj1mdW5jdGlvbiBySGQoKXtyZXR1cm4gRkNiKHRoaXMpfTtfLnRoPWZ1bmN0aW9uIG1IZChhKXt0aGlzLmQ9YTt0aGlzLmI9WUtkKGEsJ2tleScpO3RoaXMuYz1ZS2QoYSxCdGUpfTtfLlNoPWZ1bmN0aW9uIG9IZCgpe3ZhciBhO2lmKHRoaXMuYT09LTEpe2E9aWlkKHRoaXMsdGhpcy5iKTt0aGlzLmE9YT09bnVsbD8wOnRiKGEpfXJldHVybiB0aGlzLmF9O18uY2Q9ZnVuY3Rpb24gcEhkKCl7cmV0dXJuIGlpZCh0aGlzLHRoaXMuYil9O18uZGQ9ZnVuY3Rpb24gcUhkKCl7cmV0dXJuIGlpZCh0aGlzLHRoaXMuYyl9O18uVGg9ZnVuY3Rpb24gc0hkKGEpe3RoaXMuYT1hfTtfLlVoPWZ1bmN0aW9uIHRIZChhKXt6aWQodGhpcyx0aGlzLmIsYSl9O18uZWQ9ZnVuY3Rpb24gdUhkKGEpe3ZhciBiO2I9aWlkKHRoaXMsdGhpcy5jKTt6aWQodGhpcyx0aGlzLmMsYSk7cmV0dXJuIGJ9O18uYT0wO3ZhciBDNT1tZGIocXRlLCdEeW5hbWljRU9iamVjdEltcGwvQmFzaWNFTWFwRW50cnknLDEzNzYpO2JjYigxMzc3LDEsezEwODoxfSx2SGQpO18uYms9ZnVuY3Rpb24gd0hkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5DaD1mdW5jdGlvbiB4SGQoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkRoPWZ1bmN0aW9uIHlIZChhLGIpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5FaD1mdW5jdGlvbiB6SGQoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLmNrPWZ1bmN0aW9uIEFIZCgpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5kaz1mdW5jdGlvbiBCSGQoKXtyZXR1cm4gdGhpcy5hfTtfLmVrPWZ1bmN0aW9uIENIZCgpe3JldHVybiB0aGlzLmJ9O18uZms9ZnVuY3Rpb24gREhkKCl7cmV0dXJuIHRoaXMuY307Xy5naz1mdW5jdGlvbiBFSGQoKXt0aHJvdyB2YmIobmV3IGJnYil9O18uaGs9ZnVuY3Rpb24gRkhkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5paz1mdW5jdGlvbiBHSGQoYSl7dGhpcy5hPWF9O18uams9ZnVuY3Rpb24gSEhkKGEpe3RoaXMuYj1hfTtfLmtrPWZ1bmN0aW9uIElIZChhKXt0aGlzLmM9YX07dmFyIEQ1PW1kYihxdGUsJ0R5bmFtaWNFT2JqZWN0SW1wbC9EeW5hbWljRVByb3BlcnRpZXNIb2xkZXJJbXBsJywxMzc3KTtiY2IoNTEwLDE1MCx7MTA1OjEsOTI6MSw5MDoxLDU5MDoxLDE0NzoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDUxMDoxLDE1MDoxLDExNDoxLDExNToxfSxSSGQpO18uUWc9ZnVuY3Rpb24gU0hkKGEpe3JldHVybiBLSGQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiBUSGQoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuZDtjYXNlIDI6cmV0dXJuIGM/KCF0aGlzLmImJih0aGlzLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4Nix0aGlzKSksdGhpcy5iKTooIXRoaXMuYiYmKHRoaXMuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LHRoaXMpKSxGQWQodGhpcy5iKSk7Y2FzZSAzOnJldHVybiBNSGQodGhpcyk7Y2FzZSA0OnJldHVybiAhdGhpcy5hJiYodGhpcy5hPW5ldyB4TWQobTUsdGhpcyw0KSksdGhpcy5hO2Nhc2UgNTpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgXzRkKG01LHRoaXMsNSkpLHRoaXMuYzt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKChqR2QoKSxPRmQpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD9PRmQ6ZCksYSksYixjKX07Xy5oaD1mdW5jdGlvbiBVSGQoYSxiLGMpe3ZhciBkLGUsZjtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFN4ZCh0aGlzLkFiLGEsYyk7Y2FzZSAzOiEhdGhpcy5DYiYmKGM9KGU9dGhpcy5EYj4+MTYsZT49MD9LSGQodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZSxudWxsLGMpKSk7cmV0dXJuIEpIZCh0aGlzLEJEKGEsMTQ3KSxjKTt9cmV0dXJuIGY9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLE9GZCk6ZCksYiksNjYpLGYuTmooKS5Raih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksT0ZkKSksYSxjKX07Xy5qaD1mdW5jdGlvbiBWSGQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxUeGQodGhpcy5BYixhLGMpO2Nhc2UgMjpyZXR1cm4gIXRoaXMuYiYmKHRoaXMuYj1uZXcgc0lkKChqR2QoKSxmR2QpLHg2LHRoaXMpKSxiSWQodGhpcy5iLGEsYyk7Y2FzZSAzOnJldHVybiBKSGQodGhpcyxudWxsLGMpO2Nhc2UgNDpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKG01LHRoaXMsNCkpLFR4ZCh0aGlzLmEsYSxjKTt9cmV0dXJuIGU9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLE9GZCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksT0ZkKSksYSxjKX07Xy5saD1mdW5jdGlvbiBXSGQoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLkFiJiZ0aGlzLkFiLmkhPTA7Y2FzZSAxOnJldHVybiB0aGlzLmQhPW51bGw7Y2FzZSAyOnJldHVybiAhIXRoaXMuYiYmdGhpcy5iLmYhPTA7Y2FzZSAzOnJldHVybiAhIU1IZCh0aGlzKTtjYXNlIDQ6cmV0dXJuICEhdGhpcy5hJiZ0aGlzLmEuaSE9MDtjYXNlIDU6cmV0dXJuICEhdGhpcy5jJiZ0aGlzLmMuaSE9MDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxPRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9PRmQ6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIFhIZChhLGIpe3ZhciBjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTt5dGQodGhpcy5BYixCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTpPSGQodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMjohdGhpcy5iJiYodGhpcy5iPW5ldyBzSWQoKGpHZCgpLGZHZCkseDYsdGhpcykpO2NJZCh0aGlzLmIsYik7cmV0dXJuO2Nhc2UgMzpOSGQodGhpcyxCRChiLDE0NykpO3JldHVybjtjYXNlIDQ6IXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKG01LHRoaXMsNCkpO1V4ZCh0aGlzLmEpOyF0aGlzLmEmJih0aGlzLmE9bmV3IHhNZChtNSx0aGlzLDQpKTt5dGQodGhpcy5hLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA1OiF0aGlzLmMmJih0aGlzLmM9bmV3IF80ZChtNSx0aGlzLDUpKTtVeGQodGhpcy5jKTshdGhpcy5jJiYodGhpcy5jPW5ldyBfNGQobTUsdGhpcyw1KSk7eXRkKHRoaXMuYyxCRChiLDE0KSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCgoakdkKCksT0ZkKSksWEtkKChjPUJEKEFqZCh0aGlzLDE2KSwyNiksIWM/T0ZkOmMpLGEpLGIpfTtfLnpoPWZ1bmN0aW9uIFlIZCgpe3JldHVybiBqR2QoKSxPRmR9O18uQmg9ZnVuY3Rpb24gWkhkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTpQSGQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAyOiF0aGlzLmImJih0aGlzLmI9bmV3IHNJZCgoakdkKCksZkdkKSx4Nix0aGlzKSk7dGhpcy5iLmMuJGIoKTtyZXR1cm47Y2FzZSAzOk5IZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDQ6IXRoaXMuYSYmKHRoaXMuYT1uZXcgeE1kKG01LHRoaXMsNCkpO1V4ZCh0aGlzLmEpO3JldHVybjtjYXNlIDU6IXRoaXMuYyYmKHRoaXMuYz1uZXcgXzRkKG01LHRoaXMsNSkpO1V4ZCh0aGlzLmMpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQoKGpHZCgpLE9GZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP09GZDpiKSxhKSl9O18uSWI9ZnVuY3Rpb24gJEhkKCl7cmV0dXJuIFFIZCh0aGlzKX07Xy5kPW51bGw7dmFyIEc1PW1kYihxdGUsJ0VBbm5vdGF0aW9uSW1wbCcsNTEwKTtiY2IoMTUxLDcwNSxBdmUsZElkKTtfLlhoPWZ1bmN0aW9uIGVJZChhLGIpe19IZCh0aGlzLGEsQkQoYiw0MikpfTtfLmxrPWZ1bmN0aW9uIGZJZChhLGIpe3JldHVybiBhSWQodGhpcyxCRChhLDQyKSxiKX07Xy5waT1mdW5jdGlvbiBnSWQoYSl7cmV0dXJuIEJEKEJEKHRoaXMuYyw2OSkucGkoYSksMTMzKX07Xy5aaD1mdW5jdGlvbiBoSWQoKXtyZXR1cm4gQkQodGhpcy5jLDY5KS5aaCgpfTtfLiRoPWZ1bmN0aW9uIGlJZCgpe3JldHVybiBCRCh0aGlzLmMsNjkpLiRoKCl9O18uX2g9ZnVuY3Rpb24gaklkKGEpe3JldHVybiBCRCh0aGlzLmMsNjkpLl9oKGEpfTtfLm1rPWZ1bmN0aW9uIGtJZChhLGIpe3JldHVybiBiSWQodGhpcyxhLGIpfTtfLldqPWZ1bmN0aW9uIGxJZChhKXtyZXR1cm4gQkQodGhpcy5jLDc2KS5XaihhKX07Xy5yaj1mdW5jdGlvbiBtSWQoKXt9O18uZmo9ZnVuY3Rpb24gbklkKCl7cmV0dXJuIEJEKHRoaXMuYyw3NikuZmooKX07Xy50aj1mdW5jdGlvbiBvSWQoYSxiLGMpe3ZhciBkO2Q9QkQoYktkKHRoaXMuYikuTmgoKS5KaCh0aGlzLmIpLDEzMyk7ZC5UaChhKTtkLlVoKGIpO2QuZWQoYyk7cmV0dXJuIGR9O18udWo9ZnVuY3Rpb24gcElkKCl7cmV0dXJuIG5ldyBXNWQodGhpcyl9O18uV2I9ZnVuY3Rpb24gcUlkKGEpe2NJZCh0aGlzLGEpfTtfLlhqPWZ1bmN0aW9uIHJJZCgpe0JEKHRoaXMuYyw3NikuWGooKX07dmFyIHk5PW1kYih5dmUsJ0Vjb3JlRU1hcCcsMTUxKTtiY2IoMTU4LDE1MSxBdmUsc0lkKTtfLnFqPWZ1bmN0aW9uIHRJZCgpe3ZhciBhLGIsYyxkLGUsZjtpZih0aGlzLmQ9PW51bGwpe2Y9S0MoeTQsanZlLDYzLDIqdGhpcy5mKzEsMCwxKTtmb3IoYz10aGlzLmMuS2MoKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChjLm5qKCksMTMzKTtkPWIuU2goKTtlPShkJk9oZSklZi5sZW5ndGg7YT1mW2VdOyFhJiYoYT1mW2VdPW5ldyBXNWQodGhpcykpO2EuRmMoYil9dGhpcy5kPWZ9fTt2YXIgRjU9bWRiKHF0ZSwnRUFubm90YXRpb25JbXBsLzEnLDE1OCk7YmNiKDI4NCw0MzgsezEwNToxLDkyOjEsOTA6MSwxNDc6MSwxOTE6MSw1NjoxLDEwODoxLDQ3MjoxLDQ5OjEsOTc6MSwxNTA6MSwyODQ6MSwxMTQ6MSwxMTU6MX0pO18uX2c9ZnVuY3Rpb24gR0lkKGEsYixjKXt2YXIgZCxlO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuemI7Y2FzZSAyOnJldHVybiBCY2IoKSwodGhpcy5CYiYyNTYpIT0wP3RydWU6ZmFsc2U7Y2FzZSAzOnJldHVybiBCY2IoKSwodGhpcy5CYiY1MTIpIT0wP3RydWU6ZmFsc2U7Y2FzZSA0OnJldHVybiBtZWIodGhpcy5zKTtjYXNlIDU6cmV0dXJuIG1lYih0aGlzLnQpO2Nhc2UgNjpyZXR1cm4gQmNiKCksdGhpcy4kaigpP3RydWU6ZmFsc2U7Y2FzZSA3OnJldHVybiBCY2IoKSxlPXRoaXMucyxlPj0xP3RydWU6ZmFsc2U7Y2FzZSA4OmlmKGIpcmV0dXJuIHdJZCh0aGlzKTtyZXR1cm4gdGhpcy5yO2Nhc2UgOTpyZXR1cm4gdGhpcy5xO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD90aGlzLnpoKCk6ZCksYSksYixjKX07Xy5qaD1mdW5jdGlvbiBISWQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxUeGQodGhpcy5BYixhLGMpO2Nhc2UgOTpyZXR1cm4gdklkKHRoaXMsYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP3RoaXMuemgoKTpkKSxiKSw2NiksZS5OaigpLlJqKHRoaXMseWpkKHRoaXMpLGItYUxkKHRoaXMuemgoKSksYSxjKX07Xy5saD1mdW5jdGlvbiBJSWQoYSl7dmFyIGIsYztzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhIXRoaXMuQWImJnRoaXMuQWIuaSE9MDtjYXNlIDE6cmV0dXJuIHRoaXMuemIhPW51bGw7Y2FzZSAyOnJldHVybiAodGhpcy5CYiYyNTYpPT0wO2Nhc2UgMzpyZXR1cm4gKHRoaXMuQmImNTEyKT09MDtjYXNlIDQ6cmV0dXJuIHRoaXMucyE9MDtjYXNlIDU6cmV0dXJuIHRoaXMudCE9MTtjYXNlIDY6cmV0dXJuIHRoaXMuJGooKTtjYXNlIDc6cmV0dXJuIGM9dGhpcy5zLGM+PTE7Y2FzZSA4OnJldHVybiAhIXRoaXMuciYmIXRoaXMucS5lJiZMUWQodGhpcy5xKS5pPT0wO2Nhc2UgOTpyZXR1cm4gISF0aGlzLnEmJiEoISF0aGlzLnImJiF0aGlzLnEuZSYmTFFkKHRoaXMucSkuaT09MCk7fXJldHVybiBjaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP3RoaXMuemgoKTpiKSxhKSl9O18uc2g9ZnVuY3Rpb24gSklkKGEsYil7dmFyIGMsZDtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpOyF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7eXRkKHRoaXMuQWIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDE6dGhpcy5MaChHRChiKSk7cmV0dXJuO2Nhc2UgMjpCSWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAzOkNJZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDQ6QUlkKHRoaXMsQkQoYiwxOSkuYSk7cmV0dXJuO2Nhc2UgNTp0aGlzLm9rKEJEKGIsMTkpLmEpO3JldHVybjtjYXNlIDg6eUlkKHRoaXMsQkQoYiwxMzgpKTtyZXR1cm47Y2FzZSA5OmQ9eElkKHRoaXMsQkQoYiw4NyksbnVsbCk7ISFkJiZkLkZpKCk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP3RoaXMuemgoKTpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBLSWQoKXtyZXR1cm4gakdkKCksaEdkfTtfLkJoPWZ1bmN0aW9uIExJZChhKXt2YXIgYixjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTp0aGlzLkxoKG51bGwpO3JldHVybjtjYXNlIDI6QklkKHRoaXMsdHJ1ZSk7cmV0dXJuO2Nhc2UgMzpDSWQodGhpcyx0cnVlKTtyZXR1cm47Y2FzZSA0OkFJZCh0aGlzLDApO3JldHVybjtjYXNlIDU6dGhpcy5vaygxKTtyZXR1cm47Y2FzZSA4OnlJZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDk6Yz14SWQodGhpcyxudWxsLG51bGwpOyEhYyYmYy5GaSgpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLkdoPWZ1bmN0aW9uIE1JZCgpe3dJZCh0aGlzKTt0aGlzLkJifD0xfTtfLllqPWZ1bmN0aW9uIE5JZCgpe3JldHVybiB3SWQodGhpcyl9O18uWmo9ZnVuY3Rpb24gT0lkKCl7cmV0dXJuIHRoaXMudH07Xy4kaj1mdW5jdGlvbiBQSWQoKXt2YXIgYTtyZXR1cm4gYT10aGlzLnQsYT4xfHxhPT0tMX07Xy5oaT1mdW5jdGlvbiBRSWQoKXtyZXR1cm4gKHRoaXMuQmImNTEyKSE9MH07Xy5uaz1mdW5jdGlvbiBSSWQoYSxiKXtyZXR1cm4geklkKHRoaXMsYSxiKX07Xy5vaz1mdW5jdGlvbiBTSWQoYSl7RElkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gVElkKCl7cmV0dXJuIEVJZCh0aGlzKX07Xy5zPTA7Xy50PTE7dmFyIHY3PW1kYihxdGUsJ0VUeXBlZEVsZW1lbnRJbXBsJywyODQpO2JjYig0NDksMjg0LHsxMDU6MSw5MjoxLDkwOjEsMTQ3OjEsMTkxOjEsNTY6MSwxNzA6MSw2NjoxLDEwODoxLDQ3MjoxLDQ5OjEsOTc6MSwxNTA6MSw0NDk6MSwyODQ6MSwxMTQ6MSwxMTU6MSw2Nzc6MX0pO18uUWc9ZnVuY3Rpb24gaUpkKGEpe3JldHVybiBVSWQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiBqSmQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDM6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjUxMikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDQ6cmV0dXJuIG1lYih0aGlzLnMpO2Nhc2UgNTpyZXR1cm4gbWViKHRoaXMudCk7Y2FzZSA2OnJldHVybiBCY2IoKSx0aGlzLiRqKCk/dHJ1ZTpmYWxzZTtjYXNlIDc6cmV0dXJuIEJjYigpLGU9dGhpcy5zLGU+PTE/dHJ1ZTpmYWxzZTtjYXNlIDg6aWYoYilyZXR1cm4gd0lkKHRoaXMpO3JldHVybiB0aGlzLnI7Y2FzZSA5OnJldHVybiB0aGlzLnE7Y2FzZSAxMDpyZXR1cm4gQmNiKCksKHRoaXMuQmImenRlKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTE6cmV0dXJuIEJjYigpLCh0aGlzLkJiJkR2ZSkhPTA/dHJ1ZTpmYWxzZTtjYXNlIDEyOnJldHVybiBCY2IoKSwodGhpcy5CYiZSamUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxMzpyZXR1cm4gdGhpcy5qO2Nhc2UgMTQ6cmV0dXJuIFZJZCh0aGlzKTtjYXNlIDE1OnJldHVybiBCY2IoKSwodGhpcy5CYiZDdmUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxNjpyZXR1cm4gQmNiKCksKHRoaXMuQmImb2llKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTc6cmV0dXJuIFdJZCh0aGlzKTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/dGhpcy56aCgpOmQpLGEpLGIsYyl9O18uaGg9ZnVuY3Rpb24ga0pkKGEsYixjKXt2YXIgZCxlLGY7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxTeGQodGhpcy5BYixhLGMpO2Nhc2UgMTc6ISF0aGlzLkNiJiYoYz0oZT10aGlzLkRiPj4xNixlPj0wP1VJZCh0aGlzLGMpOnRoaXMuQ2IuaWgodGhpcywtMS1lLG51bGwsYykpKTtyZXR1cm4gX2hkKHRoaXMsYSwxNyxjKTt9cmV0dXJuIGY9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/dGhpcy56aCgpOmQpLGIpLDY2KSxmLk5qKCkuUWoodGhpcyx5amQodGhpcyksYi1hTGQodGhpcy56aCgpKSxhLGMpfTtfLmpoPWZ1bmN0aW9uIGxKZChhLGIsYyl7dmFyIGQsZTtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFR4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA5OnJldHVybiB2SWQodGhpcyxjKTtjYXNlIDE3OnJldHVybiBfaGQodGhpcyxudWxsLDE3LGMpO31yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD90aGlzLnpoKCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCh0aGlzLnpoKCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gbUpkKGEpe3ZhciBiLGM7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLkFiJiZ0aGlzLkFiLmkhPTA7Y2FzZSAxOnJldHVybiB0aGlzLnpiIT1udWxsO2Nhc2UgMjpyZXR1cm4gKHRoaXMuQmImMjU2KT09MDtjYXNlIDM6cmV0dXJuICh0aGlzLkJiJjUxMik9PTA7Y2FzZSA0OnJldHVybiB0aGlzLnMhPTA7Y2FzZSA1OnJldHVybiB0aGlzLnQhPTE7Y2FzZSA2OnJldHVybiB0aGlzLiRqKCk7Y2FzZSA3OnJldHVybiBjPXRoaXMucyxjPj0xO2Nhc2UgODpyZXR1cm4gISF0aGlzLnImJiF0aGlzLnEuZSYmTFFkKHRoaXMucSkuaT09MDtjYXNlIDk6cmV0dXJuICEhdGhpcy5xJiYhKCEhdGhpcy5yJiYhdGhpcy5xLmUmJkxRZCh0aGlzLnEpLmk9PTApO2Nhc2UgMTA6cmV0dXJuICh0aGlzLkJiJnp0ZSk9PTA7Y2FzZSAxMTpyZXR1cm4gKHRoaXMuQmImRHZlKSE9MDtjYXNlIDEyOnJldHVybiAodGhpcy5CYiZSamUpIT0wO2Nhc2UgMTM6cmV0dXJuIHRoaXMuaiE9bnVsbDtjYXNlIDE0OnJldHVybiBWSWQodGhpcykhPW51bGw7Y2FzZSAxNTpyZXR1cm4gKHRoaXMuQmImQ3ZlKSE9MDtjYXNlIDE2OnJldHVybiAodGhpcy5CYiZvaWUpIT0wO2Nhc2UgMTc6cmV0dXJuICEhV0lkKHRoaXMpO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIG5KZChhLGIpe3ZhciBjLGQ7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOmNKZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOkJJZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDM6Q0lkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgNDpBSWQodGhpcyxCRChiLDE5KS5hKTtyZXR1cm47Y2FzZSA1OnRoaXMub2soQkQoYiwxOSkuYSk7cmV0dXJuO2Nhc2UgODp5SWQodGhpcyxCRChiLDEzOCkpO3JldHVybjtjYXNlIDk6ZD14SWQodGhpcyxCRChiLDg3KSxudWxsKTshIWQmJmQuRmkoKTtyZXR1cm47Y2FzZSAxMDpaSWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAxMTpmSmQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAxMjpkSmQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAxMzokSWQodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMTU6ZUpkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMTY6YUpkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP3RoaXMuemgoKTpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBvSmQoKXtyZXR1cm4gakdkKCksZ0dkfTtfLkJoPWZ1bmN0aW9uIHBKZChhKXt2YXIgYixjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTpKRCh0aGlzLkNiLDg4KSYmWE1kKCRLZChCRCh0aGlzLkNiLDg4KSksNCk7cG5kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMjpCSWQodGhpcyx0cnVlKTtyZXR1cm47Y2FzZSAzOkNJZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDQ6QUlkKHRoaXMsMCk7cmV0dXJuO2Nhc2UgNTp0aGlzLm9rKDEpO3JldHVybjtjYXNlIDg6eUlkKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgOTpjPXhJZCh0aGlzLG51bGwsbnVsbCk7ISFjJiZjLkZpKCk7cmV0dXJuO2Nhc2UgMTA6WklkKHRoaXMsdHJ1ZSk7cmV0dXJuO2Nhc2UgMTE6ZkpkKHRoaXMsZmFsc2UpO3JldHVybjtjYXNlIDEyOmRKZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxMzp0aGlzLmk9bnVsbDtfSWQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAxNTplSmQodGhpcyxmYWxzZSk7cmV0dXJuO2Nhc2UgMTY6YUpkKHRoaXMsZmFsc2UpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLkdoPWZ1bmN0aW9uIHFKZCgpe2EyZChxMWQoKE82ZCgpLE02ZCksdGhpcykpO3dJZCh0aGlzKTt0aGlzLkJifD0xfTtfLkdqPWZ1bmN0aW9uIHJKZCgpe3JldHVybiB0aGlzLmZ9O18uemo9ZnVuY3Rpb24gc0pkKCl7cmV0dXJuIFZJZCh0aGlzKX07Xy5Iaj1mdW5jdGlvbiB0SmQoKXtyZXR1cm4gV0lkKHRoaXMpfTtfLkxqPWZ1bmN0aW9uIHVKZCgpe3JldHVybiBudWxsfTtfLnBrPWZ1bmN0aW9uIHZKZCgpe3JldHVybiB0aGlzLmt9O18uYWo9ZnVuY3Rpb24gd0pkKCl7cmV0dXJuIHRoaXMubn07Xy5Naj1mdW5jdGlvbiB4SmQoKXtyZXR1cm4gWElkKHRoaXMpfTtfLk5qPWZ1bmN0aW9uIHlKZCgpe3ZhciBhLGIsYyxkLGUsZixnLGgsaTtpZighdGhpcy5wKXtjPVdJZCh0aGlzKTsoYy5pPT1udWxsJiZUS2QoYyksYy5pKS5sZW5ndGg7ZD10aGlzLkxqKCk7ISFkJiZhTGQoV0lkKGQpKTtlPXdJZCh0aGlzKTtnPWUuQmooKTthPSFnP251bGw6KGcuaSYxKSE9MD9nPT1zYmI/d0k6Zz09V0Q/Skk6Zz09VkQ/Rkk6Zz09VUQ/Qkk6Zz09WEQ/TUk6Zz09cmJiP1VJOmc9PVNEP3hJOnlJOmc7Yj1WSWQodGhpcyk7aD1lLnpqKCk7bjZkKHRoaXMpOyh0aGlzLkJiJm9pZSkhPTAmJighIShmPXQxZCgoTzZkKCksTTZkKSxjKSkmJmYhPXRoaXN8fCEhKGY9XzFkKHExZChNNmQsdGhpcykpKSk/KHRoaXMucD1uZXcgelZkKHRoaXMsZikpOnRoaXMuJGooKT90aGlzLnJrKCk/IWQ/KHRoaXMuQmImQ3ZlKSE9MD8hYT90aGlzLnNrKCk/KHRoaXMucD1uZXcgS1ZkKDQyLHRoaXMpKToodGhpcy5wPW5ldyBLVmQoMCx0aGlzKSk6YT09Q0s/KHRoaXMucD1uZXcgSVZkKDUwLEo0LHRoaXMpKTp0aGlzLnNrKCk/KHRoaXMucD1uZXcgSVZkKDQzLGEsdGhpcykpOih0aGlzLnA9bmV3IElWZCgxLGEsdGhpcykpOiFhP3RoaXMuc2soKT8odGhpcy5wPW5ldyBLVmQoNDQsdGhpcykpOih0aGlzLnA9bmV3IEtWZCgyLHRoaXMpKTphPT1DSz8odGhpcy5wPW5ldyBJVmQoNDEsSjQsdGhpcykpOnRoaXMuc2soKT8odGhpcy5wPW5ldyBJVmQoNDUsYSx0aGlzKSk6KHRoaXMucD1uZXcgSVZkKDMsYSx0aGlzKSk6KHRoaXMuQmImQ3ZlKSE9MD8hYT90aGlzLnNrKCk/KHRoaXMucD1uZXcgTFZkKDQ2LHRoaXMsZCkpOih0aGlzLnA9bmV3IExWZCg0LHRoaXMsZCkpOnRoaXMuc2soKT8odGhpcy5wPW5ldyBKVmQoNDcsYSx0aGlzLGQpKToodGhpcy5wPW5ldyBKVmQoNSxhLHRoaXMsZCkpOiFhP3RoaXMuc2soKT8odGhpcy5wPW5ldyBMVmQoNDgsdGhpcyxkKSk6KHRoaXMucD1uZXcgTFZkKDYsdGhpcyxkKSk6dGhpcy5zaygpPyh0aGlzLnA9bmV3IEpWZCg0OSxhLHRoaXMsZCkpOih0aGlzLnA9bmV3IEpWZCg3LGEsdGhpcyxkKSk6SkQoZSwxNDgpP2E9PUU5Pyh0aGlzLnA9bmV3IEtWZCg0MCx0aGlzKSk6KHRoaXMuQmImNTEyKSE9MD8odGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IEtWZCg4LHRoaXMpKToodGhpcy5wPW5ldyBJVmQoOSxhLHRoaXMpKTohYT8odGhpcy5wPW5ldyBLVmQoMTAsdGhpcykpOih0aGlzLnA9bmV3IElWZCgxMSxhLHRoaXMpKToodGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IEtWZCgxMix0aGlzKSk6KHRoaXMucD1uZXcgSVZkKDEzLGEsdGhpcykpOiFhPyh0aGlzLnA9bmV3IEtWZCgxNCx0aGlzKSk6KHRoaXMucD1uZXcgSVZkKDE1LGEsdGhpcykpOiFkP3RoaXMuc2soKT8odGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IEtWZCgxNix0aGlzKSk6KHRoaXMucD1uZXcgSVZkKDE3LGEsdGhpcykpOiFhPyh0aGlzLnA9bmV3IEtWZCgxOCx0aGlzKSk6KHRoaXMucD1uZXcgSVZkKDE5LGEsdGhpcykpOih0aGlzLkJiJkN2ZSkhPTA/IWE/KHRoaXMucD1uZXcgS1ZkKDIwLHRoaXMpKToodGhpcy5wPW5ldyBJVmQoMjEsYSx0aGlzKSk6IWE/KHRoaXMucD1uZXcgS1ZkKDIyLHRoaXMpKToodGhpcy5wPW5ldyBJVmQoMjMsYSx0aGlzKSk6KGk9ZC50LGk+MXx8aT09LTE/dGhpcy5zaygpPyh0aGlzLkJiJkN2ZSkhPTA/IWE/KHRoaXMucD1uZXcgTFZkKDI0LHRoaXMsZCkpOih0aGlzLnA9bmV3IEpWZCgyNSxhLHRoaXMsZCkpOiFhPyh0aGlzLnA9bmV3IExWZCgyNix0aGlzLGQpKToodGhpcy5wPW5ldyBKVmQoMjcsYSx0aGlzLGQpKToodGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IExWZCgyOCx0aGlzLGQpKToodGhpcy5wPW5ldyBKVmQoMjksYSx0aGlzLGQpKTohYT8odGhpcy5wPW5ldyBMVmQoMzAsdGhpcyxkKSk6KHRoaXMucD1uZXcgSlZkKDMxLGEsdGhpcyxkKSk6dGhpcy5zaygpPyh0aGlzLkJiJkN2ZSkhPTA/IWE/KHRoaXMucD1uZXcgTFZkKDMyLHRoaXMsZCkpOih0aGlzLnA9bmV3IEpWZCgzMyxhLHRoaXMsZCkpOiFhPyh0aGlzLnA9bmV3IExWZCgzNCx0aGlzLGQpKToodGhpcy5wPW5ldyBKVmQoMzUsYSx0aGlzLGQpKToodGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IExWZCgzNix0aGlzLGQpKToodGhpcy5wPW5ldyBKVmQoMzcsYSx0aGlzLGQpKTohYT8odGhpcy5wPW5ldyBMVmQoMzgsdGhpcyxkKSk6KHRoaXMucD1uZXcgSlZkKDM5LGEsdGhpcyxkKSkpOnRoaXMucWsoKT90aGlzLnNrKCk/KHRoaXMucD1uZXcga1dkKEJEKGUsMjYpLHRoaXMsZCkpOih0aGlzLnA9bmV3IGNXZChCRChlLDI2KSx0aGlzLGQpKTpKRChlLDE0OCk/YT09RTk/KHRoaXMucD1uZXcgS1ZkKDQwLHRoaXMpKToodGhpcy5CYiZDdmUpIT0wPyFhPyh0aGlzLnA9bmV3IGpYZChCRChlLDE0OCksYixoLHRoaXMpKToodGhpcy5wPW5ldyBsWGQoYixoLHRoaXMsKENXZCgpLGc9PVdEP3lXZDpnPT1zYmI/dFdkOmc9PVhEP3pXZDpnPT1WRD94V2Q6Zz09VUQ/d1dkOmc9PXJiYj9CV2Q6Zz09U0Q/dVdkOmc9PVREP3ZXZDpBV2QpKSk6IWE/KHRoaXMucD1uZXcgY1hkKEJEKGUsMTQ4KSxiLGgsdGhpcykpOih0aGlzLnA9bmV3IGVYZChiLGgsdGhpcywoQ1dkKCksZz09V0Q/eVdkOmc9PXNiYj90V2Q6Zz09WEQ/eldkOmc9PVZEP3hXZDpnPT1VRD93V2Q6Zz09cmJiP0JXZDpnPT1TRD91V2Q6Zz09VEQ/dldkOkFXZCkpKTp0aGlzLnJrKCk/IWQ/KHRoaXMuQmImQ3ZlKSE9MD90aGlzLnNrKCk/KHRoaXMucD1uZXcgRlhkKEJEKGUsMjYpLHRoaXMpKToodGhpcy5wPW5ldyBEWGQoQkQoZSwyNiksdGhpcykpOnRoaXMuc2soKT8odGhpcy5wPW5ldyBCWGQoQkQoZSwyNiksdGhpcykpOih0aGlzLnA9bmV3IHpYZChCRChlLDI2KSx0aGlzKSk6KHRoaXMuQmImQ3ZlKSE9MD90aGlzLnNrKCk/KHRoaXMucD1uZXcgTlhkKEJEKGUsMjYpLHRoaXMsZCkpOih0aGlzLnA9bmV3IExYZChCRChlLDI2KSx0aGlzLGQpKTp0aGlzLnNrKCk/KHRoaXMucD1uZXcgSlhkKEJEKGUsMjYpLHRoaXMsZCkpOih0aGlzLnA9bmV3IEhYZChCRChlLDI2KSx0aGlzLGQpKTp0aGlzLnNrKCk/IWQ/KHRoaXMuQmImQ3ZlKSE9MD8odGhpcy5wPW5ldyBSWGQoQkQoZSwyNiksdGhpcykpOih0aGlzLnA9bmV3IFBYZChCRChlLDI2KSx0aGlzKSk6KHRoaXMuQmImQ3ZlKSE9MD8odGhpcy5wPW5ldyBWWGQoQkQoZSwyNiksdGhpcyxkKSk6KHRoaXMucD1uZXcgVFhkKEJEKGUsMjYpLHRoaXMsZCkpOiFkPyh0aGlzLkJiJkN2ZSkhPTA/KHRoaXMucD1uZXcgWFhkKEJEKGUsMjYpLHRoaXMpKToodGhpcy5wPW5ldyBuWGQoQkQoZSwyNiksdGhpcykpOih0aGlzLkJiJkN2ZSkhPTA/KHRoaXMucD1uZXcgX1hkKEJEKGUsMjYpLHRoaXMsZCkpOih0aGlzLnA9bmV3IFpYZChCRChlLDI2KSx0aGlzLGQpKX1yZXR1cm4gdGhpcy5wfTtfLklqPWZ1bmN0aW9uIHpKZCgpe3JldHVybiAodGhpcy5CYiZ6dGUpIT0wfTtfLnFrPWZ1bmN0aW9uIEFKZCgpe3JldHVybiBmYWxzZX07Xy5yaz1mdW5jdGlvbiBCSmQoKXtyZXR1cm4gZmFsc2V9O18uSmo9ZnVuY3Rpb24gQ0pkKCl7cmV0dXJuICh0aGlzLkJiJm9pZSkhPTB9O18uT2o9ZnVuY3Rpb24gREpkKCl7cmV0dXJuIFlJZCh0aGlzKX07Xy5zaz1mdW5jdGlvbiBFSmQoKXtyZXR1cm4gZmFsc2V9O18uS2o9ZnVuY3Rpb24gRkpkKCl7cmV0dXJuICh0aGlzLkJiJkN2ZSkhPTB9O18udGs9ZnVuY3Rpb24gR0pkKGEpe3RoaXMuaz1hfTtfLkxoPWZ1bmN0aW9uIEhKZChhKXtjSmQodGhpcyxhKX07Xy5JYj1mdW5jdGlvbiBJSmQoKXtyZXR1cm4gZ0pkKHRoaXMpfTtfLmU9ZmFsc2U7Xy5uPTA7dmFyIG43PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwnLDQ0OSk7YmNiKDMyMiw0NDksezEwNToxLDkyOjEsOTA6MSwzNDoxLDE0NzoxLDE5MToxLDU2OjEsMTcwOjEsNjY6MSwxMDg6MSw0NzI6MSw0OToxLDk3OjEsMzIyOjEsMTUwOjEsNDQ5OjEsMjg0OjEsMTE0OjEsMTE1OjEsNjc3OjF9LE9KZCk7Xy5fZz1mdW5jdGlvbiBQSmQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDM6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjUxMikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDQ6cmV0dXJuIG1lYih0aGlzLnMpO2Nhc2UgNTpyZXR1cm4gbWViKHRoaXMudCk7Y2FzZSA2OnJldHVybiBCY2IoKSxMSmQodGhpcyk/dHJ1ZTpmYWxzZTtjYXNlIDc6cmV0dXJuIEJjYigpLGU9dGhpcy5zLGU+PTE/dHJ1ZTpmYWxzZTtjYXNlIDg6aWYoYilyZXR1cm4gd0lkKHRoaXMpO3JldHVybiB0aGlzLnI7Y2FzZSA5OnJldHVybiB0aGlzLnE7Y2FzZSAxMDpyZXR1cm4gQmNiKCksKHRoaXMuQmImenRlKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTE6cmV0dXJuIEJjYigpLCh0aGlzLkJiJkR2ZSkhPTA/dHJ1ZTpmYWxzZTtjYXNlIDEyOnJldHVybiBCY2IoKSwodGhpcy5CYiZSamUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxMzpyZXR1cm4gdGhpcy5qO2Nhc2UgMTQ6cmV0dXJuIFZJZCh0aGlzKTtjYXNlIDE1OnJldHVybiBCY2IoKSwodGhpcy5CYiZDdmUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxNjpyZXR1cm4gQmNiKCksKHRoaXMuQmImb2llKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTc6cmV0dXJuIFdJZCh0aGlzKTtjYXNlIDE4OnJldHVybiBCY2IoKSwodGhpcy5CYiZvdGUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxOTppZihiKXJldHVybiBLSmQodGhpcyk7cmV0dXJuIEpKZCh0aGlzKTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKChqR2QoKSxQRmQpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD9QRmQ6ZCksYSksYixjKX07Xy5saD1mdW5jdGlvbiBRSmQoYSl7dmFyIGIsYztzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhIXRoaXMuQWImJnRoaXMuQWIuaSE9MDtjYXNlIDE6cmV0dXJuIHRoaXMuemIhPW51bGw7Y2FzZSAyOnJldHVybiAodGhpcy5CYiYyNTYpPT0wO2Nhc2UgMzpyZXR1cm4gKHRoaXMuQmImNTEyKT09MDtjYXNlIDQ6cmV0dXJuIHRoaXMucyE9MDtjYXNlIDU6cmV0dXJuIHRoaXMudCE9MTtjYXNlIDY6cmV0dXJuIExKZCh0aGlzKTtjYXNlIDc6cmV0dXJuIGM9dGhpcy5zLGM+PTE7Y2FzZSA4OnJldHVybiAhIXRoaXMuciYmIXRoaXMucS5lJiZMUWQodGhpcy5xKS5pPT0wO2Nhc2UgOTpyZXR1cm4gISF0aGlzLnEmJiEoISF0aGlzLnImJiF0aGlzLnEuZSYmTFFkKHRoaXMucSkuaT09MCk7Y2FzZSAxMDpyZXR1cm4gKHRoaXMuQmImenRlKT09MDtjYXNlIDExOnJldHVybiAodGhpcy5CYiZEdmUpIT0wO2Nhc2UgMTI6cmV0dXJuICh0aGlzLkJiJlJqZSkhPTA7Y2FzZSAxMzpyZXR1cm4gdGhpcy5qIT1udWxsO2Nhc2UgMTQ6cmV0dXJuIFZJZCh0aGlzKSE9bnVsbDtjYXNlIDE1OnJldHVybiAodGhpcy5CYiZDdmUpIT0wO2Nhc2UgMTY6cmV0dXJuICh0aGlzLkJiJm9pZSkhPTA7Y2FzZSAxNzpyZXR1cm4gISFXSWQodGhpcyk7Y2FzZSAxODpyZXR1cm4gKHRoaXMuQmImb3RlKSE9MDtjYXNlIDE5OnJldHVybiAhIUpKZCh0aGlzKTt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxQRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9QRmQ6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIFJKZChhLGIpe3ZhciBjLGQ7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOmNKZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOkJJZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDM6Q0lkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgNDpBSWQodGhpcyxCRChiLDE5KS5hKTtyZXR1cm47Y2FzZSA1Ok5KZCh0aGlzLEJEKGIsMTkpLmEpO3JldHVybjtjYXNlIDg6eUlkKHRoaXMsQkQoYiwxMzgpKTtyZXR1cm47Y2FzZSA5OmQ9eElkKHRoaXMsQkQoYiw4NyksbnVsbCk7ISFkJiZkLkZpKCk7cmV0dXJuO2Nhc2UgMTA6WklkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMTE6ZkpkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMTI6ZEpkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMTM6JElkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDE1OmVKZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDE2OmFKZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDE4Ok1KZCh0aGlzLENjYihERChiKSkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLFBGZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP1BGZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBTSmQoKXtyZXR1cm4gakdkKCksUEZkfTtfLkJoPWZ1bmN0aW9uIFRKZChhKXt2YXIgYixjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTpKRCh0aGlzLkNiLDg4KSYmWE1kKCRLZChCRCh0aGlzLkNiLDg4KSksNCk7cG5kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMjpCSWQodGhpcyx0cnVlKTtyZXR1cm47Y2FzZSAzOkNJZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDQ6QUlkKHRoaXMsMCk7cmV0dXJuO2Nhc2UgNTp0aGlzLmI9MDtESWQodGhpcywxKTtyZXR1cm47Y2FzZSA4OnlJZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDk6Yz14SWQodGhpcyxudWxsLG51bGwpOyEhYyYmYy5GaSgpO3JldHVybjtjYXNlIDEwOlpJZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDExOmZKZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxMjpkSmQodGhpcyxmYWxzZSk7cmV0dXJuO2Nhc2UgMTM6dGhpcy5pPW51bGw7X0lkKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMTU6ZUpkKHRoaXMsZmFsc2UpO3JldHVybjtjYXNlIDE2OmFKZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxODpNSmQodGhpcyxmYWxzZSk7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoakdkKCksUEZkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/UEZkOmIpLGEpKX07Xy5HaD1mdW5jdGlvbiBVSmQoKXtLSmQodGhpcyk7YTJkKHExZCgoTzZkKCksTTZkKSx0aGlzKSk7d0lkKHRoaXMpO3RoaXMuQmJ8PTF9O18uJGo9ZnVuY3Rpb24gVkpkKCl7cmV0dXJuIExKZCh0aGlzKX07Xy5uaz1mdW5jdGlvbiBXSmQoYSxiKXt0aGlzLmI9MDt0aGlzLmE9bnVsbDtyZXR1cm4geklkKHRoaXMsYSxiKX07Xy5vaz1mdW5jdGlvbiBYSmQoYSl7TkpkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gWUpkKCl7dmFyIGE7aWYoKHRoaXMuRGImNjQpIT0wKXJldHVybiBnSmQodGhpcyk7YT1uZXcgSmZiKGdKZCh0aGlzKSk7YS5hKz0nIChpRDogJztGZmIoYSwodGhpcy5CYiZvdGUpIT0wKTthLmErPScpJztyZXR1cm4gYS5hfTtfLmI9MDt2YXIgSDU9bWRiKHF0ZSwnRUF0dHJpYnV0ZUltcGwnLDMyMik7YmNiKDM1MSw0MzgsezEwNToxLDkyOjEsOTA6MSwxMzg6MSwxNDc6MSwxOTE6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwzNTE6MSwxNTA6MSwxMTQ6MSwxMTU6MSw2NzY6MX0pO18udWs9ZnVuY3Rpb24gbktkKGEpe3JldHVybiBhLlRnKCk9PXRoaXN9O18uUWc9ZnVuY3Rpb24gb0tkKGEpe3JldHVybiBhS2QodGhpcyxhKX07Xy5SZz1mdW5jdGlvbiBwS2QoYSxiKXt0aGlzLnc9bnVsbDt0aGlzLkRiPWI8PDE2fHRoaXMuRGImMjU1O3RoaXMuQ2I9YX07Xy5fZz1mdW5jdGlvbiBxS2QoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuemI7Y2FzZSAyOnJldHVybiB0aGlzLkQhPW51bGw/dGhpcy5EOnRoaXMuQjtjYXNlIDM6cmV0dXJuIGRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuIHRoaXMuemooKTtjYXNlIDU6cmV0dXJuIHRoaXMuRjtjYXNlIDY6aWYoYilyZXR1cm4gYktkKHRoaXMpO3JldHVybiBaSmQodGhpcyk7Y2FzZSA3OnJldHVybiAhdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSksdGhpcy5BO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD90aGlzLnpoKCk6ZCksYSksYixjKX07Xy5oaD1mdW5jdGlvbiByS2QoYSxiLGMpe3ZhciBkLGUsZjtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFN4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA2OiEhdGhpcy5DYiYmKGM9KGU9dGhpcy5EYj4+MTYsZT49MD9hS2QodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZSxudWxsLGMpKSk7cmV0dXJuIF9oZCh0aGlzLGEsNixjKTt9cmV0dXJuIGY9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/dGhpcy56aCgpOmQpLGIpLDY2KSxmLk5qKCkuUWoodGhpcyx5amQodGhpcyksYi1hTGQodGhpcy56aCgpKSxhLGMpfTtfLmpoPWZ1bmN0aW9uIHNLZChhLGIsYyl7dmFyIGQsZTtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFR4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA2OnJldHVybiBfaGQodGhpcyxudWxsLDYsYyk7Y2FzZSA3OnJldHVybiAhdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSksVHhkKHRoaXMuQSxhLGMpO31yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD90aGlzLnpoKCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCh0aGlzLnpoKCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gdEtkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuIHRoaXMuRCE9bnVsbCYmdGhpcy5EPT10aGlzLkY7Y2FzZSAzOnJldHVybiAhIWRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuIHRoaXMuemooKSE9bnVsbDtjYXNlIDU6cmV0dXJuIHRoaXMuRiE9bnVsbCYmdGhpcy5GIT10aGlzLkQmJnRoaXMuRiE9dGhpcy5CO2Nhc2UgNjpyZXR1cm4gISFaSmQodGhpcyk7Y2FzZSA3OnJldHVybiAhIXRoaXMuQSYmdGhpcy5BLmkhPTA7fXJldHVybiBjaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP3RoaXMuemgoKTpiKSxhKSl9O18uc2g9ZnVuY3Rpb24gdUtkKGEsYil7dmFyIGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOmxLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOmlLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSA1OmtLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSA3OiF0aGlzLkEmJih0aGlzLkE9bmV3IEs0ZCh1NSx0aGlzLDcpKTtVeGQodGhpcy5BKTshdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSk7eXRkKHRoaXMuQSxCRChiLDE0KSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP3RoaXMuemgoKTpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiB2S2QoKXtyZXR1cm4gakdkKCksUkZkfTtfLkJoPWZ1bmN0aW9uIHdLZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpO3JldHVybjtjYXNlIDE6SkQodGhpcy5DYiwxNzkpJiYoQkQodGhpcy5DYiwxNzkpLnRiPW51bGwpO3BuZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDI6JEpkKHRoaXMsbnVsbCk7X0pkKHRoaXMsdGhpcy5EKTtyZXR1cm47Y2FzZSA1OmtLZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDc6IXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpO1V4ZCh0aGlzLkEpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLnlqPWZ1bmN0aW9uIHhLZCgpe3ZhciBhO3JldHVybiB0aGlzLkc9PS0xJiYodGhpcy5HPShhPWJLZCh0aGlzKSxhP0hMZChhLk1oKCksdGhpcyk6LTEpKSx0aGlzLkd9O18uemo9ZnVuY3Rpb24geUtkKCl7cmV0dXJuIG51bGx9O18uQWo9ZnVuY3Rpb24gektkKCl7cmV0dXJuIGJLZCh0aGlzKX07Xy52az1mdW5jdGlvbiBBS2QoKXtyZXR1cm4gdGhpcy52fTtfLkJqPWZ1bmN0aW9uIEJLZCgpe3JldHVybiBkS2QodGhpcyl9O18uQ2o9ZnVuY3Rpb24gQ0tkKCl7cmV0dXJuIHRoaXMuRCE9bnVsbD90aGlzLkQ6dGhpcy5CfTtfLkRqPWZ1bmN0aW9uIERLZCgpe3JldHVybiB0aGlzLkZ9O18ud2o9ZnVuY3Rpb24gRUtkKGEpe3JldHVybiBmS2QodGhpcyxhKX07Xy53az1mdW5jdGlvbiBGS2QoYSl7dGhpcy52PWF9O18ueGs9ZnVuY3Rpb24gR0tkKGEpe2dLZCh0aGlzLGEpfTtfLnlrPWZ1bmN0aW9uIEhLZChhKXt0aGlzLkM9YX07Xy5MaD1mdW5jdGlvbiBJS2QoYSl7bEtkKHRoaXMsYSl9O18uSWI9ZnVuY3Rpb24gSktkKCl7cmV0dXJuIG1LZCh0aGlzKX07Xy5DPW51bGw7Xy5EPW51bGw7Xy5HPS0xO3ZhciBaNT1tZGIocXRlLCdFQ2xhc3NpZmllckltcGwnLDM1MSk7YmNiKDg4LDM1MSx7MTA1OjEsOTI6MSw5MDoxLDI2OjEsMTM4OjEsMTQ3OjEsMTkxOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsODg6MSwzNTE6MSwxNTA6MSw0NzM6MSwxMTQ6MSwxMTU6MSw2NzY6MX0saExkKTtfLnVrPWZ1bmN0aW9uIGlMZChhKXtyZXR1cm4gZExkKHRoaXMsYS5UZygpKX07Xy5fZz1mdW5jdGlvbiBqTGQoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuemI7Y2FzZSAyOnJldHVybiB0aGlzLkQhPW51bGw/dGhpcy5EOnRoaXMuQjtjYXNlIDM6cmV0dXJuIGRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuIG51bGw7Y2FzZSA1OnJldHVybiB0aGlzLkY7Y2FzZSA2OmlmKGIpcmV0dXJuIGJLZCh0aGlzKTtyZXR1cm4gWkpkKHRoaXMpO2Nhc2UgNzpyZXR1cm4gIXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpLHRoaXMuQTtjYXNlIDg6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDk6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjUxMikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDEwOnJldHVybiBfS2QodGhpcyk7Y2FzZSAxMTpyZXR1cm4gIXRoaXMucSYmKHRoaXMucT1uZXcgY1VkKG41LHRoaXMsMTEsMTApKSx0aGlzLnE7Y2FzZSAxMjpyZXR1cm4gT0tkKHRoaXMpO2Nhc2UgMTM6cmV0dXJuIFNLZCh0aGlzKTtjYXNlIDE0OnJldHVybiBTS2QodGhpcyksdGhpcy5yO2Nhc2UgMTU6cmV0dXJuIE9LZCh0aGlzKSx0aGlzLms7Y2FzZSAxNjpyZXR1cm4gUEtkKHRoaXMpO2Nhc2UgMTc6cmV0dXJuIFJLZCh0aGlzKTtjYXNlIDE4OnJldHVybiBUS2QodGhpcyk7Y2FzZSAxOTpyZXR1cm4gVUtkKHRoaXMpO2Nhc2UgMjA6cmV0dXJuIE9LZCh0aGlzKSx0aGlzLm87Y2FzZSAyMTpyZXR1cm4gIXRoaXMucyYmKHRoaXMucz1uZXcgY1VkKHQ1LHRoaXMsMjEsMTcpKSx0aGlzLnM7Y2FzZSAyMjpyZXR1cm4gVktkKHRoaXMpO2Nhc2UgMjM6cmV0dXJuIFFLZCh0aGlzKTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKChqR2QoKSxRRmQpKSxYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD9RRmQ6ZCksYSksYixjKX07Xy5oaD1mdW5jdGlvbiBrTGQoYSxiLGMpe3ZhciBkLGUsZjtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFN4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA2OiEhdGhpcy5DYiYmKGM9KGU9dGhpcy5EYj4+MTYsZT49MD9hS2QodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZSxudWxsLGMpKSk7cmV0dXJuIF9oZCh0aGlzLGEsNixjKTtjYXNlIDExOnJldHVybiAhdGhpcy5xJiYodGhpcy5xPW5ldyBjVWQobjUsdGhpcywxMSwxMCkpLFN4ZCh0aGlzLnEsYSxjKTtjYXNlIDIxOnJldHVybiAhdGhpcy5zJiYodGhpcy5zPW5ldyBjVWQodDUsdGhpcywyMSwxNykpLFN4ZCh0aGlzLnMsYSxjKTt9cmV0dXJuIGY9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLFFGZCk6ZCksYiksNjYpLGYuTmooKS5Raih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksUUZkKSksYSxjKX07Xy5qaD1mdW5jdGlvbiBsTGQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxUeGQodGhpcy5BYixhLGMpO2Nhc2UgNjpyZXR1cm4gX2hkKHRoaXMsbnVsbCw2LGMpO2Nhc2UgNzpyZXR1cm4gIXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpLFR4ZCh0aGlzLkEsYSxjKTtjYXNlIDExOnJldHVybiAhdGhpcy5xJiYodGhpcy5xPW5ldyBjVWQobjUsdGhpcywxMSwxMCkpLFR4ZCh0aGlzLnEsYSxjKTtjYXNlIDIxOnJldHVybiAhdGhpcy5zJiYodGhpcy5zPW5ldyBjVWQodDUsdGhpcywyMSwxNykpLFR4ZCh0aGlzLnMsYSxjKTtjYXNlIDIyOnJldHVybiBUeGQoVktkKHRoaXMpLGEsYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxRRmQpOmQpLGIpLDY2KSxlLk5qKCkuUmoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLFFGZCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gbUxkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuIHRoaXMuRCE9bnVsbCYmdGhpcy5EPT10aGlzLkY7Y2FzZSAzOnJldHVybiAhIWRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuIGZhbHNlO2Nhc2UgNTpyZXR1cm4gdGhpcy5GIT1udWxsJiZ0aGlzLkYhPXRoaXMuRCYmdGhpcy5GIT10aGlzLkI7Y2FzZSA2OnJldHVybiAhIVpKZCh0aGlzKTtjYXNlIDc6cmV0dXJuICEhdGhpcy5BJiZ0aGlzLkEuaSE9MDtjYXNlIDg6cmV0dXJuICh0aGlzLkJiJjI1NikhPTA7Y2FzZSA5OnJldHVybiAodGhpcy5CYiY1MTIpIT0wO2Nhc2UgMTA6cmV0dXJuICEhdGhpcy51JiZWS2QodGhpcy51LmEpLmkhPTAmJiEoISF0aGlzLm4mJkZNZCh0aGlzLm4pKTtjYXNlIDExOnJldHVybiAhIXRoaXMucSYmdGhpcy5xLmkhPTA7Y2FzZSAxMjpyZXR1cm4gT0tkKHRoaXMpLmkhPTA7Y2FzZSAxMzpyZXR1cm4gU0tkKHRoaXMpLmkhPTA7Y2FzZSAxNDpyZXR1cm4gU0tkKHRoaXMpLHRoaXMuci5pIT0wO2Nhc2UgMTU6cmV0dXJuIE9LZCh0aGlzKSx0aGlzLmsuaSE9MDtjYXNlIDE2OnJldHVybiBQS2QodGhpcykuaSE9MDtjYXNlIDE3OnJldHVybiBSS2QodGhpcykuaSE9MDtjYXNlIDE4OnJldHVybiBUS2QodGhpcykuaSE9MDtjYXNlIDE5OnJldHVybiBVS2QodGhpcykuaSE9MDtjYXNlIDIwOnJldHVybiBPS2QodGhpcyksISF0aGlzLm87Y2FzZSAyMTpyZXR1cm4gISF0aGlzLnMmJnRoaXMucy5pIT0wO2Nhc2UgMjI6cmV0dXJuICEhdGhpcy5uJiZGTWQodGhpcy5uKTtjYXNlIDIzOnJldHVybiBRS2QodGhpcykuaSE9MDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxRRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9RRmQ6YiksYSkpfTtfLm9oPWZ1bmN0aW9uIG5MZChhKXt2YXIgYjtiPXRoaXMuaT09bnVsbHx8ISF0aGlzLnEmJnRoaXMucS5pIT0wP251bGw6WUtkKHRoaXMsYSk7cmV0dXJuIGI/YjpCbWQodGhpcyxhKX07Xy5zaD1mdW5jdGlvbiBvTGQoYSxiKXt2YXIgYztzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpOyF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7eXRkKHRoaXMuQWIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDE6bEtkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDI6aUtkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDU6a0tkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDc6IXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpO1V4ZCh0aGlzLkEpOyF0aGlzLkEmJih0aGlzLkE9bmV3IEs0ZCh1NSx0aGlzLDcpKTt5dGQodGhpcy5BLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA4OmVMZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDk6ZkxkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMTA6dndkKF9LZCh0aGlzKSk7eXRkKF9LZCh0aGlzKSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTE6IXRoaXMucSYmKHRoaXMucT1uZXcgY1VkKG41LHRoaXMsMTEsMTApKTtVeGQodGhpcy5xKTshdGhpcy5xJiYodGhpcy5xPW5ldyBjVWQobjUsdGhpcywxMSwxMCkpO3l0ZCh0aGlzLnEsQkQoYiwxNCkpO3JldHVybjtjYXNlIDIxOiF0aGlzLnMmJih0aGlzLnM9bmV3IGNVZCh0NSx0aGlzLDIxLDE3KSk7VXhkKHRoaXMucyk7IXRoaXMucyYmKHRoaXMucz1uZXcgY1VkKHQ1LHRoaXMsMjEsMTcpKTt5dGQodGhpcy5zLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAyMjpVeGQoVktkKHRoaXMpKTt5dGQoVktkKHRoaXMpLEJEKGIsMTQpKTtyZXR1cm47fWRpZCh0aGlzLGEtYUxkKChqR2QoKSxRRmQpKSxYS2QoKGM9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYz9RRmQ6YyksYSksYil9O18uemg9ZnVuY3Rpb24gcExkKCl7cmV0dXJuIGpHZCgpLFFGZH07Xy5CaD1mdW5jdGlvbiBxTGQoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTtyZXR1cm47Y2FzZSAxOkpEKHRoaXMuQ2IsMTc5KSYmKEJEKHRoaXMuQ2IsMTc5KS50Yj1udWxsKTtwbmQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAyOiRKZCh0aGlzLG51bGwpO19KZCh0aGlzLHRoaXMuRCk7cmV0dXJuO2Nhc2UgNTprS2QodGhpcyxudWxsKTtyZXR1cm47Y2FzZSA3OiF0aGlzLkEmJih0aGlzLkE9bmV3IEs0ZCh1NSx0aGlzLDcpKTtVeGQodGhpcy5BKTtyZXR1cm47Y2FzZSA4OmVMZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSA5OmZMZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxMDohIXRoaXMudSYmdndkKHRoaXMudSk7cmV0dXJuO2Nhc2UgMTE6IXRoaXMucSYmKHRoaXMucT1uZXcgY1VkKG41LHRoaXMsMTEsMTApKTtVeGQodGhpcy5xKTtyZXR1cm47Y2FzZSAyMTohdGhpcy5zJiYodGhpcy5zPW5ldyBjVWQodDUsdGhpcywyMSwxNykpO1V4ZCh0aGlzLnMpO3JldHVybjtjYXNlIDIyOiEhdGhpcy5uJiZVeGQodGhpcy5uKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKChqR2QoKSxRRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9RRmQ6YiksYSkpfTtfLkdoPWZ1bmN0aW9uIHJMZCgpe3ZhciBhLGI7T0tkKHRoaXMpO1NLZCh0aGlzKTtQS2QodGhpcyk7UktkKHRoaXMpO1RLZCh0aGlzKTtVS2QodGhpcyk7UUtkKHRoaXMpO291ZChTTWQoJEtkKHRoaXMpKSk7aWYodGhpcy5zKXtmb3IoYT0wLGI9dGhpcy5zLmk7YTxiOysrYSl7Q21kKHF1ZCh0aGlzLnMsYSkpfX1pZih0aGlzLnEpe2ZvcihhPTAsYj10aGlzLnEuaTthPGI7KythKXtDbWQocXVkKHRoaXMucSxhKSl9fW8xZCgoTzZkKCksTTZkKSx0aGlzKS5uZSgpO3RoaXMuQmJ8PTF9O18uSWI9ZnVuY3Rpb24gc0xkKCl7cmV0dXJuIGdMZCh0aGlzKX07Xy5rPW51bGw7Xy5yPW51bGw7dmFyIEtLZCxMS2QsTUtkO3ZhciBZNT1tZGIocXRlLCdFQ2xhc3NJbXBsJyw4OCk7YmNiKDE5OTQsMTk5MyxPdmUpO18uVmg9ZnVuY3Rpb24gdExkKGEsYil7cmV0dXJuIFB4ZCh0aGlzLGEsYil9O18uV2g9ZnVuY3Rpb24gdUxkKGEpe3JldHVybiBQeGQodGhpcyx0aGlzLmksYSl9O18uWGg9ZnVuY3Rpb24gdkxkKGEsYil7UXhkKHRoaXMsYSxiKX07Xy5ZaD1mdW5jdGlvbiB3TGQoYSl7UnhkKHRoaXMsYSl9O18ubGs9ZnVuY3Rpb24geExkKGEsYil7cmV0dXJuIFN4ZCh0aGlzLGEsYil9O18ucGk9ZnVuY3Rpb24geUxkKGEpe3JldHVybiBudWQodGhpcyxhKX07Xy5taz1mdW5jdGlvbiBDTGQoYSxiKXtyZXR1cm4gVHhkKHRoaXMsYSxiKX07Xy5taT1mdW5jdGlvbiBETGQoYSxiKXtyZXR1cm4gWnhkKHRoaXMsYSxiKX07Xy5aaD1mdW5jdGlvbiB6TGQoKXtyZXR1cm4gbmV3ICR5ZCh0aGlzKX07Xy4kaD1mdW5jdGlvbiBBTGQoKXtyZXR1cm4gbmV3IGJ6ZCh0aGlzKX07Xy5faD1mdW5jdGlvbiBCTGQoYSl7cmV0dXJuIHp0ZCh0aGlzLGEpfTt2YXIgUDk9bWRiKHl2ZSwnTm90aWZ5aW5nSW50ZXJuYWxFTGlzdEltcGwnLDE5OTQpO2JjYig2MjIsMTk5NCxQdmUpO18uSGM9ZnVuY3Rpb24gTkxkKGEpe3JldHVybiBFTGQodGhpcyxhKX07Xy5aaT1mdW5jdGlvbiBPTGQoYSxiLGMsZCxlKXtyZXR1cm4gRkxkKHRoaXMsYSxiLGMsZCxlKX07Xy4kaT1mdW5jdGlvbiBQTGQoYSl7R0xkKHRoaXMsYSl9O18uV2o9ZnVuY3Rpb24gUUxkKGEpe3JldHVybiB0aGlzfTtfLmFrPWZ1bmN0aW9uIFJMZCgpe3JldHVybiBYS2QodGhpcy5lLlRnKCksdGhpcy5haigpKX07Xy5faT1mdW5jdGlvbiBTTGQoKXtyZXR1cm4gdGhpcy5haygpfTtfLmFqPWZ1bmN0aW9uIFRMZCgpe3JldHVybiBiTGQodGhpcy5lLlRnKCksdGhpcy5haygpKX07Xy56az1mdW5jdGlvbiBVTGQoKXtyZXR1cm4gQkQodGhpcy5haygpLllqKCksMjYpLkJqKCl9O18uQWs9ZnVuY3Rpb24gVkxkKCl7cmV0dXJuIHpVZChCRCh0aGlzLmFrKCksMTgpKS5ufTtfLkFpPWZ1bmN0aW9uIFdMZCgpe3JldHVybiB0aGlzLmV9O18uQms9ZnVuY3Rpb24gWExkKCl7cmV0dXJuIHRydWV9O18uQ2s9ZnVuY3Rpb24gWUxkKCl7cmV0dXJuIGZhbHNlfTtfLkRrPWZ1bmN0aW9uIFpMZCgpe3JldHVybiBmYWxzZX07Xy5Faz1mdW5jdGlvbiAkTGQoKXtyZXR1cm4gZmFsc2V9O18uWGM9ZnVuY3Rpb24gX0xkKGEpe3JldHVybiBITGQodGhpcyxhKX07Xy5jaj1mdW5jdGlvbiBhTWQoYSxiKXt2YXIgYztyZXR1cm4gYz1CRChhLDQ5KSx0aGlzLkRrKCk/dGhpcy5CaygpP2MuZ2godGhpcy5lLHRoaXMuQWsoKSx0aGlzLnprKCksYik6Yy5naCh0aGlzLmUsYkxkKGMuVGcoKSx6VWQoQkQodGhpcy5haygpLDE4KSkpLG51bGwsYik6Yy5naCh0aGlzLmUsLTEtdGhpcy5haigpLG51bGwsYil9O18uZGo9ZnVuY3Rpb24gYk1kKGEsYil7dmFyIGM7cmV0dXJuIGM9QkQoYSw0OSksdGhpcy5EaygpP3RoaXMuQmsoKT9jLmloKHRoaXMuZSx0aGlzLkFrKCksdGhpcy56aygpLGIpOmMuaWgodGhpcy5lLGJMZChjLlRnKCkselVkKEJEKHRoaXMuYWsoKSwxOCkpKSxudWxsLGIpOmMuaWgodGhpcy5lLC0xLXRoaXMuYWooKSxudWxsLGIpfTtfLnJrPWZ1bmN0aW9uIGNNZCgpe3JldHVybiBmYWxzZX07Xy5Gaz1mdW5jdGlvbiBkTWQoKXtyZXR1cm4gdHJ1ZX07Xy53aj1mdW5jdGlvbiBlTWQoYSl7cmV0dXJuIHFFZCh0aGlzLmQsYSl9O18uZWo9ZnVuY3Rpb24gZk1kKCl7cmV0dXJuIG9pZCh0aGlzLmUpfTtfLmZqPWZ1bmN0aW9uIGdNZCgpe3JldHVybiB0aGlzLmkhPTB9O18ucmk9ZnVuY3Rpb24gaE1kKGEpe3JldHVybiBpemQodGhpcy5kLGEpfTtfLmxpPWZ1bmN0aW9uIGlNZChhLGIpe3JldHVybiB0aGlzLkZrKCkmJnRoaXMuRWsoKT9JTGQodGhpcyxhLEJEKGIsNTYpKTpifTtfLkdrPWZ1bmN0aW9uIGpNZChhKXtyZXR1cm4gYS5raCgpP3hpZCh0aGlzLmUsQkQoYSw0OSkpOmF9O18uV2I9ZnVuY3Rpb24ga01kKGEpe0pMZCh0aGlzLGEpfTtfLlBjPWZ1bmN0aW9uIGxNZCgpe3JldHVybiBLTGQodGhpcyl9O18uUWM9ZnVuY3Rpb24gbU1kKGEpe3ZhciBiO2lmKHRoaXMuRWsoKSl7Zm9yKGI9dGhpcy5pLTE7Yj49MDstLWIpe3F1ZCh0aGlzLGIpfX1yZXR1cm4geHVkKHRoaXMsYSl9O18uWGo9ZnVuY3Rpb24gbk1kKCl7VXhkKHRoaXMpfTtfLm9pPWZ1bmN0aW9uIG9NZChhLGIpe3JldHVybiBMTGQodGhpcyxhLGIpfTt2YXIgdDk9bWRiKHl2ZSwnRWNvcmVFTGlzdCcsNjIyKTtiY2IoNDk2LDYyMixQdmUscE1kKTtfLmFpPWZ1bmN0aW9uIHFNZCgpe3JldHVybiBmYWxzZX07Xy5haj1mdW5jdGlvbiByTWQoKXtyZXR1cm4gdGhpcy5jfTtfLmJqPWZ1bmN0aW9uIHNNZCgpe3JldHVybiBmYWxzZX07Xy5Gaz1mdW5jdGlvbiB0TWQoKXtyZXR1cm4gdHJ1ZX07Xy5oaT1mdW5jdGlvbiB1TWQoKXtyZXR1cm4gdHJ1ZX07Xy5saT1mdW5jdGlvbiB2TWQoYSxiKXtyZXR1cm4gYn07Xy5uaT1mdW5jdGlvbiB3TWQoKXtyZXR1cm4gZmFsc2V9O18uYz0wO3ZhciBkOT1tZGIoeXZlLCdFT2JqZWN0RUxpc3QnLDQ5Nik7YmNiKDg1LDQ5NixQdmUseE1kKTtfLmJqPWZ1bmN0aW9uIHlNZCgpe3JldHVybiB0cnVlfTtfLkRrPWZ1bmN0aW9uIHpNZCgpe3JldHVybiBmYWxzZX07Xy5yaz1mdW5jdGlvbiBBTWQoKXtyZXR1cm4gdHJ1ZX07dmFyIFo4PW1kYih5dmUsJ0VPYmplY3RDb250YWlubWVudEVMaXN0Jyw4NSk7YmNiKDU0NSw4NSxQdmUsQk1kKTtfLmNpPWZ1bmN0aW9uIENNZCgpe3RoaXMuYj10cnVlfTtfLmZqPWZ1bmN0aW9uIERNZCgpe3JldHVybiB0aGlzLmJ9O18uWGo9ZnVuY3Rpb24gRU1kKCl7dmFyIGE7VXhkKHRoaXMpO2lmKG9pZCh0aGlzLmUpKXthPXRoaXMuYjt0aGlzLmI9ZmFsc2U7VWhkKHRoaXMuZSxuZXcgcVNkKHRoaXMuZSwyLHRoaXMuYyxhLGZhbHNlKSl9ZWxzZXt0aGlzLmI9ZmFsc2V9fTtfLmI9ZmFsc2U7dmFyIFk4PW1kYih5dmUsJ0VPYmplY3RDb250YWlubWVudEVMaXN0L1Vuc2V0dGFibGUnLDU0NSk7YmNiKDExNDAsNTQ1LFB2ZSxKTWQpO18uaWk9ZnVuY3Rpb24gTk1kKGEsYil7dmFyIGMsZDtyZXR1cm4gYz1CRChXeGQodGhpcyxhLGIpLDg3KSxvaWQodGhpcy5lKSYmR0xkKHRoaXMsbmV3IEVTZCh0aGlzLmEsNywoakdkKCksU0ZkKSxtZWIoYiksKGQ9Yy5jLEpEKGQsODgpP0JEKGQsMjYpOl9GZCksYSkpLGN9O18uamo9ZnVuY3Rpb24gT01kKGEsYil7cmV0dXJuIEdNZCh0aGlzLEJEKGEsODcpLGIpfTtfLmtqPWZ1bmN0aW9uIFBNZChhLGIpe3JldHVybiBITWQodGhpcyxCRChhLDg3KSxiKX07Xy5saj1mdW5jdGlvbiBRTWQoYSxiLGMpe3JldHVybiBJTWQodGhpcyxCRChhLDg3KSxCRChiLDg3KSxjKX07Xy5aaT1mdW5jdGlvbiBLTWQoYSxiLGMsZCxlKXtzd2l0Y2goYSl7Y2FzZSAzOntyZXR1cm4gRkxkKHRoaXMsYSxiLGMsZCx0aGlzLmk+MSl9Y2FzZSA1OntyZXR1cm4gRkxkKHRoaXMsYSxiLGMsZCx0aGlzLmktQkQoYywxNSkuZ2MoKT4wKX1kZWZhdWx0OntyZXR1cm4gbmV3IHBTZCh0aGlzLmUsYSx0aGlzLmMsYixjLGQsdHJ1ZSl9fX07Xy5paj1mdW5jdGlvbiBMTWQoKXtyZXR1cm4gdHJ1ZX07Xy5maj1mdW5jdGlvbiBNTWQoKXtyZXR1cm4gRk1kKHRoaXMpfTtfLlhqPWZ1bmN0aW9uIFJNZCgpe1V4ZCh0aGlzKX07dmFyIE41PW1kYihxdGUsJ0VDbGFzc0ltcGwvMScsMTE0MCk7YmNiKDExNTQsMTE1MyxkdmUpO18udWk9ZnVuY3Rpb24gVk1kKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2M9YS54aSgpO2lmKGMhPTgpe2Q9VU1kKGEpO2lmKGQ9PTApe3N3aXRjaChjKXtjYXNlIDE6Y2FzZSA5OntoPWEuQmkoKTtpZihoIT1udWxsKXtiPSRLZChCRChoLDQ3MykpOyFiLmMmJihiLmM9bmV3IHhZZCk7RnRkKGIuYyxhLkFpKCkpfWc9YS56aSgpO2lmKGchPW51bGwpe2U9QkQoZyw0NzMpO2lmKChlLkJiJjEpPT0wKXtiPSRLZChlKTshYi5jJiYoYi5jPW5ldyB4WWQpO3d0ZChiLmMsQkQoYS5BaSgpLDI2KSl9fWJyZWFrfWNhc2UgMzp7Zz1hLnppKCk7aWYoZyE9bnVsbCl7ZT1CRChnLDQ3Myk7aWYoKGUuQmImMSk9PTApe2I9JEtkKGUpOyFiLmMmJihiLmM9bmV3IHhZZCk7d3RkKGIuYyxCRChhLkFpKCksMjYpKX19YnJlYWt9Y2FzZSA1OntnPWEuemkoKTtpZihnIT1udWxsKXtmb3IoZj1CRChnLDE0KS5LYygpO2YuT2IoKTspe2U9QkQoZi5QYigpLDQ3Myk7aWYoKGUuQmImMSk9PTApe2I9JEtkKGUpOyFiLmMmJihiLmM9bmV3IHhZZCk7d3RkKGIuYyxCRChhLkFpKCksMjYpKX19fWJyZWFrfWNhc2UgNDp7aD1hLkJpKCk7aWYoaCE9bnVsbCl7ZT1CRChoLDQ3Myk7aWYoKGUuQmImMSk9PTApe2I9JEtkKGUpOyFiLmMmJihiLmM9bmV3IHhZZCk7RnRkKGIuYyxhLkFpKCkpfX1icmVha31jYXNlIDY6e2g9YS5CaSgpO2lmKGghPW51bGwpe2ZvcihmPUJEKGgsMTQpLktjKCk7Zi5PYigpOyl7ZT1CRChmLlBiKCksNDczKTtpZigoZS5CYiYxKT09MCl7Yj0kS2QoZSk7IWIuYyYmKGIuYz1uZXcgeFlkKTtGdGQoYi5jLGEuQWkoKSl9fX1icmVha319fXRoaXMuSGsoZCl9fTtfLkhrPWZ1bmN0aW9uIFdNZChhKXtUTWQodGhpcyxhKX07Xy5iPTYzO3ZhciBwNz1tZGIocXRlLCdFU3VwZXJBZGFwdGVyJywxMTU0KTtiY2IoMTE1NSwxMTU0LGR2ZSxZTWQpO18uSGs9ZnVuY3Rpb24gWk1kKGEpe1hNZCh0aGlzLGEpfTt2YXIgSTU9bWRiKHF0ZSwnRUNsYXNzSW1wbC8xMCcsMTE1NSk7YmNiKDExNDQsNjk2LFB2ZSk7Xy5WaD1mdW5jdGlvbiAkTWQoYSxiKXtyZXR1cm4gaXVkKHRoaXMsYSxiKX07Xy5XaD1mdW5jdGlvbiBfTWQoYSl7cmV0dXJuIGp1ZCh0aGlzLGEpfTtfLlhoPWZ1bmN0aW9uIGFOZChhLGIpe2t1ZCh0aGlzLGEsYil9O18uWWg9ZnVuY3Rpb24gYk5kKGEpe2x1ZCh0aGlzLGEpfTtfLnBpPWZ1bmN0aW9uIGROZChhKXtyZXR1cm4gbnVkKHRoaXMsYSl9O18ubWk9ZnVuY3Rpb24gbE5kKGEsYil7cmV0dXJuIHV1ZCh0aGlzLGEsYil9O18ubGs9ZnVuY3Rpb24gY05kKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLlpoPWZ1bmN0aW9uIGVOZCgpe3JldHVybiBuZXcgJHlkKHRoaXMpfTtfLiRoPWZ1bmN0aW9uIGZOZCgpe3JldHVybiBuZXcgYnpkKHRoaXMpfTtfLl9oPWZ1bmN0aW9uIGdOZChhKXtyZXR1cm4genRkKHRoaXMsYSl9O18ubWs9ZnVuY3Rpb24gaE5kKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLldqPWZ1bmN0aW9uIGlOZChhKXtyZXR1cm4gdGhpc307Xy5maj1mdW5jdGlvbiBqTmQoKXtyZXR1cm4gdGhpcy5pIT0wfTtfLldiPWZ1bmN0aW9uIGtOZChhKXt0aHJvdyB2YmIobmV3IGJnYil9O18uWGo9ZnVuY3Rpb24gbU5kKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTt2YXIgczk9bWRiKHl2ZSwnRWNvcmVFTGlzdC9Vbm1vZGlmaWFibGVFTGlzdCcsMTE0NCk7YmNiKDMxOSwxMTQ0LFB2ZSxuTmQpO18ubmk9ZnVuY3Rpb24gb05kKCl7cmV0dXJuIGZhbHNlfTt2YXIgcjk9bWRiKHl2ZSwnRWNvcmVFTGlzdC9Vbm1vZGlmaWFibGVFTGlzdC9GYXN0Q29tcGFyZScsMzE5KTtiY2IoMTE0NywzMTksUHZlLHJOZCk7Xy5YYz1mdW5jdGlvbiBzTmQoYSl7dmFyIGIsYyxkO2lmKEpEKGEsMTcwKSl7Yj1CRChhLDE3MCk7Yz1iLmFqKCk7aWYoYyE9LTEpe2ZvcihkPXRoaXMuaTtjPGQ7KytjKXtpZihQRCh0aGlzLmdbY10pPT09UEQoYSkpe3JldHVybiBjfX19fXJldHVybiAtMX07dmFyIEo1PW1kYihxdGUsJ0VDbGFzc0ltcGwvMUVBbGxTdHJ1Y3R1cmFsRmVhdHVyZXNMaXN0JywxMTQ3KTtiY2IoMTE0MSw0OTcsb3VlLHdOZCk7Xy5yaT1mdW5jdGlvbiB4TmQoYSl7cmV0dXJuIEtDKGo1LFR2ZSw4NyxhLDAsMSl9O18ubmk9ZnVuY3Rpb24geU5kKCl7cmV0dXJuIGZhbHNlfTt2YXIgSzU9bWRiKHF0ZSwnRUNsYXNzSW1wbC8xRUdlbmVyaWNTdXBlclR5cGVFTGlzdCcsMTE0MSk7YmNiKDYyMyw0OTcsb3VlLHpOZCk7Xy5yaT1mdW5jdGlvbiBBTmQoYSl7cmV0dXJuIEtDKHQ1LE12ZSwxNzAsYSwwLDEpfTtfLm5pPWZ1bmN0aW9uIEJOZCgpe3JldHVybiBmYWxzZX07dmFyIEw1PW1kYihxdGUsJ0VDbGFzc0ltcGwvMUVTdHJ1Y3R1cmFsRmVhdHVyZVVuaXF1ZUVMaXN0Jyw2MjMpO2JjYig3NDEsNDk3LG91ZSxDTmQpO18ucmk9ZnVuY3Rpb24gRE5kKGEpe3JldHVybiBLQyhxNSxNdmUsMTgsYSwwLDEpfTtfLm5pPWZ1bmN0aW9uIEVOZCgpe3JldHVybiBmYWxzZX07dmFyIE01PW1kYihxdGUsJ0VDbGFzc0ltcGwvMVJlZmVyZW5jZUxpc3QnLDc0MSk7YmNiKDExNDIsNDk3LG91ZSxHTmQpO18uYmk9ZnVuY3Rpb24gSE5kKGEsYil7Rk5kKHRoaXMsQkQoYiwzNCkpfTtfLnJpPWZ1bmN0aW9uIElOZChhKXtyZXR1cm4gS0MoYjUsTXZlLDM0LGEsMCwxKX07Xy5uaT1mdW5jdGlvbiBKTmQoKXtyZXR1cm4gZmFsc2V9O3ZhciBPNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzInLDExNDIpO2JjYigxMTQzLDQ5NyxvdWUsS05kKTtfLnJpPWZ1bmN0aW9uIExOZChhKXtyZXR1cm4gS0MoYjUsTXZlLDM0LGEsMCwxKX07Xy5uaT1mdW5jdGlvbiBNTmQoKXtyZXR1cm4gZmFsc2V9O3ZhciBQNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzMnLDExNDMpO2JjYigxMTQ1LDMxOSxQdmUsUE5kKTtfLkZjPWZ1bmN0aW9uIFFOZChhKXtyZXR1cm4gTk5kKHRoaXMsQkQoYSwzNCkpfTtfLlloPWZ1bmN0aW9uIFJOZChhKXtPTmQodGhpcyxCRChhLDM0KSl9O3ZhciBRNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzQnLDExNDUpO2JjYigxMTQ2LDMxOSxQdmUsVU5kKTtfLkZjPWZ1bmN0aW9uIFZOZChhKXtyZXR1cm4gU05kKHRoaXMsQkQoYSwxOCkpfTtfLlloPWZ1bmN0aW9uIFdOZChhKXtUTmQodGhpcyxCRChhLDE4KSl9O3ZhciBSNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzUnLDExNDYpO2JjYigxMTQ4LDQ5NyxvdWUsWE5kKTtfLnJpPWZ1bmN0aW9uIFlOZChhKXtyZXR1cm4gS0MobjUsTnZlLDU5LGEsMCwxKX07Xy5uaT1mdW5jdGlvbiBaTmQoKXtyZXR1cm4gZmFsc2V9O3ZhciBTNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzYnLDExNDgpO2JjYigxMTQ5LDQ5NyxvdWUsJE5kKTtfLnJpPWZ1bmN0aW9uIF9OZChhKXtyZXR1cm4gS0MocTUsTXZlLDE4LGEsMCwxKX07Xy5uaT1mdW5jdGlvbiBhT2QoKXtyZXR1cm4gZmFsc2V9O3ZhciBUNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzcnLDExNDkpO2JjYigxOTk3LDE5OTYsezM6MSw0OjEsMjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDY3OjEsNTg6MSw2OToxfSk7Xy5WaD1mdW5jdGlvbiBiT2QoYSxiKXtyZXR1cm4gcXdkKHRoaXMsYSxiKX07Xy5XaD1mdW5jdGlvbiBjT2QoYSl7cmV0dXJuIHF3ZCh0aGlzLHRoaXMuVmkoKSxhKX07Xy5YaD1mdW5jdGlvbiBkT2QoYSxiKXtyd2QodGhpcyxhLGIpfTtfLlloPWZ1bmN0aW9uIGVPZChhKXtzd2QodGhpcyxhKX07Xy5saz1mdW5jdGlvbiBmT2QoYSxiKXtyZXR1cm4gdHdkKHRoaXMsYSxiKX07Xy5taz1mdW5jdGlvbiBsT2QoYSxiKXtyZXR1cm4gdXdkKHRoaXMsYSxiKX07Xy5taT1mdW5jdGlvbiBtT2QoYSxiKXtyZXR1cm4gd3dkKHRoaXMsYSxiKX07Xy5waT1mdW5jdGlvbiBnT2QoYSl7cmV0dXJuIHRoaXMuT2koYSl9O18uWmg9ZnVuY3Rpb24gaE9kKCl7cmV0dXJuIG5ldyAkeWQodGhpcyl9O18uR2k9ZnVuY3Rpb24gaU9kKCl7cmV0dXJuIHRoaXMuSmkoKX07Xy4kaD1mdW5jdGlvbiBqT2QoKXtyZXR1cm4gbmV3IGJ6ZCh0aGlzKX07Xy5faD1mdW5jdGlvbiBrT2QoYSl7cmV0dXJuIHp0ZCh0aGlzLGEpfTt2YXIgTDg9bWRiKHl2ZSwnRGVsZWdhdGluZ05vdGlmeWluZ0ludGVybmFsRUxpc3RJbXBsJywxOTk3KTtiY2IoNzQyLDE5OTcsVXZlKTtfLmFpPWZ1bmN0aW9uIHJPZCgpe3ZhciBhO2E9WEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSkuWWooKTtyZXR1cm4gSkQoYSwxNDgpJiYhSkQoYSw0NTcpJiYoYS5CaigpLmkmMSk9PTB9O18uSGM9ZnVuY3Rpb24gc09kKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk7aWYodGhpcy5GaygpKXtpPXRoaXMuVmkoKTtpZihpPjQpe2lmKHRoaXMud2ooYSkpe2lmKHRoaXMucmsoKSl7ZD1CRChhLDQ5KTtjPWQuVWcoKTtoPWM9PXRoaXMuYiYmKHRoaXMuRGsoKT9kLk9nKGQuVmcoKSxCRChYS2Qod2pkKHRoaXMuYiksdGhpcy5haigpKS5ZaigpLDI2KS5CaigpKT09elVkKEJEKFhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpLDE4KSkubjotMS1kLlZnKCk9PXRoaXMuYWooKSk7aWYodGhpcy5FaygpJiYhaCYmIWMmJiEhZC5aZygpKXtmb3IoZT0wO2U8aTsrK2Upe2I9b09kKHRoaXMsdGhpcy5PaShlKSk7aWYoUEQoYik9PT1QRChhKSl7cmV0dXJuIHRydWV9fX1yZXR1cm4gaH1lbHNlIGlmKHRoaXMuRGsoKSYmIXRoaXMuQ2soKSl7Zj1CRChhLDU2KS5haCh6VWQoQkQoWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSksMTgpKSk7aWYoUEQoZik9PT1QRCh0aGlzLmIpKXtyZXR1cm4gdHJ1ZX1lbHNlIGlmKGY9PW51bGx8fCFCRChmLDU2KS5raCgpKXtyZXR1cm4gZmFsc2V9fX1lbHNle3JldHVybiBmYWxzZX19Zz10aGlzLkxpKGEpO2lmKHRoaXMuRWsoKSYmIWcpe2ZvcihlPTA7ZTxpOysrZSl7ZD1vT2QodGhpcyx0aGlzLk9pKGUpKTtpZihQRChkKT09PVBEKGEpKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBnfWVsc2V7cmV0dXJuIHRoaXMuTGkoYSl9fTtfLlppPWZ1bmN0aW9uIHRPZChhLGIsYyxkLGUpe3JldHVybiBuZXcgcFNkKHRoaXMuYixhLHRoaXMuYWooKSxiLGMsZCxlKX07Xy4kaT1mdW5jdGlvbiB1T2QoYSl7VWhkKHRoaXMuYixhKX07Xy5Xaj1mdW5jdGlvbiB2T2QoYSl7cmV0dXJuIHRoaXN9O18uX2k9ZnVuY3Rpb24gd09kKCl7cmV0dXJuIFhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpfTtfLmFqPWZ1bmN0aW9uIHhPZCgpe3JldHVybiBiTGQod2pkKHRoaXMuYiksWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSkpfTtfLkFpPWZ1bmN0aW9uIHlPZCgpe3JldHVybiB0aGlzLmJ9O18uQms9ZnVuY3Rpb24gek9kKCl7cmV0dXJuICEhWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSkuWWooKS5CaigpfTtfLmJqPWZ1bmN0aW9uIEFPZCgpe3ZhciBhLGI7Yj1YS2Qod2pkKHRoaXMuYiksdGhpcy5haigpKTtpZihKRChiLDk5KSl7YT1CRChiLDE4KTtyZXR1cm4gKGEuQmImb3RlKSE9MHx8ISF6VWQoQkQoYiwxOCkpfWVsc2V7cmV0dXJuIGZhbHNlfX07Xy5Daz1mdW5jdGlvbiBCT2QoKXt2YXIgYSxiLGMsZDtiPVhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpO2lmKEpEKGIsOTkpKXthPUJEKGIsMTgpO2M9elVkKGEpO3JldHVybiAhIWMmJihkPWMudCxkPjF8fGQ9PS0xKX1lbHNle3JldHVybiBmYWxzZX19O18uRGs9ZnVuY3Rpb24gQ09kKCl7dmFyIGEsYixjO2I9WEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSk7aWYoSkQoYiw5OSkpe2E9QkQoYiwxOCk7Yz16VWQoYSk7cmV0dXJuICEhY31lbHNle3JldHVybiBmYWxzZX19O18uRWs9ZnVuY3Rpb24gRE9kKCl7dmFyIGEsYjtiPVhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpO2lmKEpEKGIsOTkpKXthPUJEKGIsMTgpO3JldHVybiAoYS5CYiZUamUpIT0wfWVsc2V7cmV0dXJuIGZhbHNlfX07Xy5YYz1mdW5jdGlvbiBFT2QoYSl7dmFyIGIsYyxkLGU7ZD10aGlzLlFpKGEpO2lmKGQ+PTApcmV0dXJuIGQ7aWYodGhpcy5GaygpKXtmb3IoYz0wLGU9dGhpcy5WaSgpO2M8ZTsrK2Mpe2I9b09kKHRoaXMsdGhpcy5PaShjKSk7aWYoUEQoYik9PT1QRChhKSl7cmV0dXJuIGN9fX1yZXR1cm4gLTF9O18uY2o9ZnVuY3Rpb24gRk9kKGEsYil7dmFyIGM7cmV0dXJuIGM9QkQoYSw0OSksdGhpcy5EaygpP3RoaXMuQmsoKT9jLmdoKHRoaXMuYix6VWQoQkQoWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSksMTgpKS5uLEJEKFhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpLllqKCksMjYpLkJqKCksYik6Yy5naCh0aGlzLmIsYkxkKGMuVGcoKSx6VWQoQkQoWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSksMTgpKSksbnVsbCxiKTpjLmdoKHRoaXMuYiwtMS10aGlzLmFqKCksbnVsbCxiKX07Xy5kaj1mdW5jdGlvbiBHT2QoYSxiKXt2YXIgYztyZXR1cm4gYz1CRChhLDQ5KSx0aGlzLkRrKCk/dGhpcy5CaygpP2MuaWgodGhpcy5iLHpVZChCRChYS2Qod2pkKHRoaXMuYiksdGhpcy5haigpKSwxOCkpLm4sQkQoWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSkuWWooKSwyNikuQmooKSxiKTpjLmloKHRoaXMuYixiTGQoYy5UZygpLHpVZChCRChYS2Qod2pkKHRoaXMuYiksdGhpcy5haigpKSwxOCkpKSxudWxsLGIpOmMuaWgodGhpcy5iLC0xLXRoaXMuYWooKSxudWxsLGIpfTtfLnJrPWZ1bmN0aW9uIEhPZCgpe3ZhciBhLGI7Yj1YS2Qod2pkKHRoaXMuYiksdGhpcy5haigpKTtpZihKRChiLDk5KSl7YT1CRChiLDE4KTtyZXR1cm4gKGEuQmImb3RlKSE9MH1lbHNle3JldHVybiBmYWxzZX19O18uRms9ZnVuY3Rpb24gSU9kKCl7cmV0dXJuIEpEKFhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpLllqKCksODgpfTtfLndqPWZ1bmN0aW9uIEpPZChhKXtyZXR1cm4gWEtkKHdqZCh0aGlzLmIpLHRoaXMuYWooKSkuWWooKS53aihhKX07Xy5laj1mdW5jdGlvbiBLT2QoKXtyZXR1cm4gb2lkKHRoaXMuYil9O18uZmo9ZnVuY3Rpb24gTE9kKCl7cmV0dXJuICF0aGlzLlJpKCl9O18uaGk9ZnVuY3Rpb24gTU9kKCl7cmV0dXJuIFhLZCh3amQodGhpcy5iKSx0aGlzLmFqKCkpLmhpKCl9O18ubGk9ZnVuY3Rpb24gTk9kKGEsYil7cmV0dXJuIG5PZCh0aGlzLGEsYil9O18uV2I9ZnVuY3Rpb24gT09kKGEpe3Z3ZCh0aGlzKTt5dGQodGhpcyxCRChhLDE1KSl9O18uUGM9ZnVuY3Rpb24gUE9kKCl7dmFyIGE7aWYodGhpcy5FaygpKXtmb3IoYT10aGlzLlZpKCktMTthPj0wOy0tYSl7bk9kKHRoaXMsYSx0aGlzLk9pKGEpKX19cmV0dXJuIHRoaXMuV2koKX07Xy5RYz1mdW5jdGlvbiBRT2QoYSl7dmFyIGI7aWYodGhpcy5FaygpKXtmb3IoYj10aGlzLlZpKCktMTtiPj0wOy0tYil7bk9kKHRoaXMsYix0aGlzLk9pKGIpKX19cmV0dXJuIHRoaXMuWGkoYSl9O18uWGo9ZnVuY3Rpb24gUk9kKCl7dndkKHRoaXMpfTtfLm9pPWZ1bmN0aW9uIFNPZChhLGIpe3JldHVybiBwT2QodGhpcyxhLGIpfTt2YXIgSzg9bWRiKHl2ZSwnRGVsZWdhdGluZ0Vjb3JlRUxpc3QnLDc0Mik7YmNiKDExNTAsNzQyLFV2ZSxZT2QpO18uSGk9ZnVuY3Rpb24gX09kKGEsYil7VE9kKHRoaXMsYSxCRChiLDI2KSl9O18uSWk9ZnVuY3Rpb24gYVBkKGEpe1VPZCh0aGlzLEJEKGEsMjYpKX07Xy5PaT1mdW5jdGlvbiBnUGQoYSl7dmFyIGIsYztyZXR1cm4gYj1CRChxdWQoVktkKHRoaXMuYSksYSksODcpLGM9Yi5jLEpEKGMsODgpP0JEKGMsMjYpOihqR2QoKSxfRmQpfTtfLlRpPWZ1bmN0aW9uIGxQZChhKXt2YXIgYixjO3JldHVybiBiPUJEKFh4ZChWS2QodGhpcy5hKSxhKSw4NyksYz1iLmMsSkQoYyw4OCk/QkQoYywyNik6KGpHZCgpLF9GZCl9O18uVWk9ZnVuY3Rpb24gbVBkKGEsYil7cmV0dXJuIFdPZCh0aGlzLGEsQkQoYiwyNikpfTtfLmFpPWZ1bmN0aW9uIFpPZCgpe3JldHVybiBmYWxzZX07Xy5aaT1mdW5jdGlvbiAkT2QoYSxiLGMsZCxlKXtyZXR1cm4gbnVsbH07Xy5KaT1mdW5jdGlvbiBiUGQoKXtyZXR1cm4gbmV3IEVQZCh0aGlzKX07Xy5LaT1mdW5jdGlvbiBjUGQoKXtVeGQoVktkKHRoaXMuYSkpfTtfLkxpPWZ1bmN0aW9uIGRQZChhKXtyZXR1cm4gVk9kKHRoaXMsYSl9O18uTWk9ZnVuY3Rpb24gZVBkKGEpe3ZhciBiLGM7Zm9yKGM9YS5LYygpO2MuT2IoKTspe2I9Yy5QYigpO2lmKCFWT2QodGhpcyxiKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX07Xy5OaT1mdW5jdGlvbiBmUGQoYSl7dmFyIGIsYyxkO2lmKEpEKGEsMTUpKXtkPUJEKGEsMTUpO2lmKGQuZ2MoKT09VktkKHRoaXMuYSkuaSl7Zm9yKGI9ZC5LYygpLGM9bmV3IEZ5ZCh0aGlzKTtiLk9iKCk7KXtpZihQRChiLlBiKCkpIT09UEQoRHlkKGMpKSl7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfTtfLlBpPWZ1bmN0aW9uIGhQZCgpe3ZhciBhLGIsYyxkLGU7Yz0xO2ZvcihiPW5ldyBGeWQoVktkKHRoaXMuYSkpO2IuZSE9Yi5pLmdjKCk7KXthPUJEKER5ZChiKSw4Nyk7ZD0oZT1hLmMsSkQoZSw4OCk/QkQoZSwyNik6KGpHZCgpLF9GZCkpO2M9MzEqYysoIWQ/MDpGQ2IoZCkpfXJldHVybiBjfTtfLlFpPWZ1bmN0aW9uIGlQZChhKXt2YXIgYixjLGQsZTtkPTA7Zm9yKGM9bmV3IEZ5ZChWS2QodGhpcy5hKSk7Yy5lIT1jLmkuZ2MoKTspe2I9QkQoRHlkKGMpLDg3KTtpZihQRChhKT09PVBEKChlPWIuYyxKRChlLDg4KT9CRChlLDI2KTooakdkKCksX0ZkKSkpKXtyZXR1cm4gZH0rK2R9cmV0dXJuIC0xfTtfLlJpPWZ1bmN0aW9uIGpQZCgpe3JldHVybiBWS2QodGhpcy5hKS5pPT0wfTtfLlNpPWZ1bmN0aW9uIGtQZCgpe3JldHVybiBudWxsfTtfLlZpPWZ1bmN0aW9uIG5QZCgpe3JldHVybiBWS2QodGhpcy5hKS5pfTtfLldpPWZ1bmN0aW9uIG9QZCgpe3ZhciBhLGIsYyxkLGUsZjtmPVZLZCh0aGlzLmEpLmk7ZT1LQyhTSSxVaGUsMSxmLDUsMSk7Yz0wO2ZvcihiPW5ldyBGeWQoVktkKHRoaXMuYSkpO2IuZSE9Yi5pLmdjKCk7KXthPUJEKER5ZChiKSw4Nyk7ZVtjKytdPShkPWEuYyxKRChkLDg4KT9CRChkLDI2KTooakdkKCksX0ZkKSl9cmV0dXJuIGV9O18uWGk9ZnVuY3Rpb24gcFBkKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2g9VktkKHRoaXMuYSkuaTtpZihhLmxlbmd0aDxoKXtlPWl6ZChyYihhKS5jLGgpO2E9ZX1hLmxlbmd0aD5oJiZOQyhhLGgsbnVsbCk7ZD0wO2ZvcihjPW5ldyBGeWQoVktkKHRoaXMuYSkpO2MuZSE9Yy5pLmdjKCk7KXtiPUJEKER5ZChjKSw4Nyk7Zj0oZz1iLmMsSkQoZyw4OCk/QkQoZywyNik6KGpHZCgpLF9GZCkpO05DKGEsZCsrLGYpfXJldHVybiBhfTtfLllpPWZ1bmN0aW9uIHFQZCgpe3ZhciBhLGIsYyxkLGU7ZT1uZXcgSGZiO2UuYSs9J1snO2E9VktkKHRoaXMuYSk7Zm9yKGI9MCxkPVZLZCh0aGlzLmEpLmk7YjxkOyl7RWZiKGUseGZiKChjPUJEKHF1ZChhLGIpLDg3KS5jLEpEKGMsODgpP0JEKGMsMjYpOihqR2QoKSxfRmQpKSkpOysrYjxkJiYoZS5hKz1TaGUsZSl9ZS5hKz0nXSc7cmV0dXJuIGUuYX07Xy4kaT1mdW5jdGlvbiByUGQoYSl7fTtfLmFqPWZ1bmN0aW9uIHNQZCgpe3JldHVybiAxMH07Xy5Caz1mdW5jdGlvbiB0UGQoKXtyZXR1cm4gdHJ1ZX07Xy5iaj1mdW5jdGlvbiB1UGQoKXtyZXR1cm4gZmFsc2V9O18uQ2s9ZnVuY3Rpb24gdlBkKCl7cmV0dXJuIGZhbHNlfTtfLkRrPWZ1bmN0aW9uIHdQZCgpe3JldHVybiBmYWxzZX07Xy5Faz1mdW5jdGlvbiB4UGQoKXtyZXR1cm4gdHJ1ZX07Xy5yaz1mdW5jdGlvbiB5UGQoKXtyZXR1cm4gZmFsc2V9O18uRms9ZnVuY3Rpb24gelBkKCl7cmV0dXJuIHRydWV9O18ud2o9ZnVuY3Rpb24gQVBkKGEpe3JldHVybiBKRChhLDg4KX07Xy5maj1mdW5jdGlvbiBCUGQoKXtyZXR1cm4gY0xkKHRoaXMuYSl9O18uaGk9ZnVuY3Rpb24gQ1BkKCl7cmV0dXJuIHRydWV9O18ubmk9ZnVuY3Rpb24gRFBkKCl7cmV0dXJuIHRydWV9O3ZhciBWNT1tZGIocXRlLCdFQ2xhc3NJbXBsLzgnLDExNTApO2JjYigxMTUxLDE5NjQsTGllLEVQZCk7Xy5aYz1mdW5jdGlvbiBGUGQoYSl7cmV0dXJuIHp0ZCh0aGlzLmEsYSl9O18uZ2M9ZnVuY3Rpb24gR1BkKCl7cmV0dXJuIFZLZCh0aGlzLmEuYSkuaX07dmFyIFU1PW1kYihxdGUsJ0VDbGFzc0ltcGwvOC8xJywxMTUxKTtiY2IoMTE1Miw0OTcsb3VlLEhQZCk7Xy5yaT1mdW5jdGlvbiBJUGQoYSl7cmV0dXJuIEtDKGQ1LFVoZSwxMzgsYSwwLDEpfTtfLm5pPWZ1bmN0aW9uIEpQZCgpe3JldHVybiBmYWxzZX07dmFyIFc1PW1kYihxdGUsJ0VDbGFzc0ltcGwvOScsMTE1Mik7YmNiKDExMzksNTMsZ2tlLEtQZCk7dmFyIFg1PW1kYihxdGUsJ0VDbGFzc0ltcGwvTXlIYXNoU2V0JywxMTM5KTtiY2IoNTY2LDM1MSx7MTA1OjEsOTI6MSw5MDoxLDEzODoxLDE0ODoxLDgzNDoxLDE0NzoxLDE5MToxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDM1MToxLDE1MDoxLDExNDoxLDExNToxLDY3NjoxfSxNUGQpO18uX2c9ZnVuY3Rpb24gTlBkKGEsYixjKXt2YXIgZDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLHRoaXMuQWI7Y2FzZSAxOnJldHVybiB0aGlzLnpiO2Nhc2UgMjpyZXR1cm4gdGhpcy5EIT1udWxsP3RoaXMuRDp0aGlzLkI7Y2FzZSAzOnJldHVybiBkS2QodGhpcyk7Y2FzZSA0OnJldHVybiB0aGlzLnpqKCk7Y2FzZSA1OnJldHVybiB0aGlzLkY7Y2FzZSA2OmlmKGIpcmV0dXJuIGJLZCh0aGlzKTtyZXR1cm4gWkpkKHRoaXMpO2Nhc2UgNzpyZXR1cm4gIXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpLHRoaXMuQTtjYXNlIDg6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTt9cmV0dXJuIGJpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/dGhpcy56aCgpOmQpLGEpLGIsYyl9O18ubGg9ZnVuY3Rpb24gT1BkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuIHRoaXMuRCE9bnVsbCYmdGhpcy5EPT10aGlzLkY7Y2FzZSAzOnJldHVybiAhIWRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuIHRoaXMuemooKSE9bnVsbDtjYXNlIDU6cmV0dXJuIHRoaXMuRiE9bnVsbCYmdGhpcy5GIT10aGlzLkQmJnRoaXMuRiE9dGhpcy5CO2Nhc2UgNjpyZXR1cm4gISFaSmQodGhpcyk7Y2FzZSA3OnJldHVybiAhIXRoaXMuQSYmdGhpcy5BLmkhPTA7Y2FzZSA4OnJldHVybiAodGhpcy5CYiYyNTYpPT0wO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj90aGlzLnpoKCk6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIFBQZChhLGIpe3ZhciBjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTt5dGQodGhpcy5BYixCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTpsS2QodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMjppS2QodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgNTprS2QodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgNzohdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSk7VXhkKHRoaXMuQSk7IXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpO3l0ZCh0aGlzLkEsQkQoYiwxNCkpO3JldHVybjtjYXNlIDg6TFBkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP3RoaXMuemgoKTpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBRUGQoKXtyZXR1cm4gakdkKCksVEZkfTtfLkJoPWZ1bmN0aW9uIFJQZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpO3JldHVybjtjYXNlIDE6SkQodGhpcy5DYiwxNzkpJiYoQkQodGhpcy5DYiwxNzkpLnRiPW51bGwpO3BuZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDI6JEpkKHRoaXMsbnVsbCk7X0pkKHRoaXMsdGhpcy5EKTtyZXR1cm47Y2FzZSA1OmtLZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDc6IXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpO1V4ZCh0aGlzLkEpO3JldHVybjtjYXNlIDg6TFBkKHRoaXMsdHJ1ZSk7cmV0dXJuO31laWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP3RoaXMuemgoKTpiKSxhKSl9O18uR2g9ZnVuY3Rpb24gU1BkKCl7bzFkKChPNmQoKSxNNmQpLHRoaXMpLm5lKCk7dGhpcy5CYnw9MX07Xy5Gaj1mdW5jdGlvbiBUUGQoKXt2YXIgYSxiLGM7aWYoIXRoaXMuYyl7YT1sNmQoYktkKHRoaXMpKTtpZighYS5kYygpKXtmb3IoYz1hLktjKCk7Yy5PYigpOyl7Yj1HRChjLlBiKCkpOyEhRG1kKHRoaXMsYikmJms2ZCh0aGlzKX19fXJldHVybiB0aGlzLmJ9O18uemo9ZnVuY3Rpb24gVVBkKCl7dmFyIGI7aWYoIXRoaXMuZSl7Yj1udWxsO3RyeXtiPWRLZCh0aGlzKX1jYXRjaChhKXthPXViYihhKTtpZighSkQoYSwxMDIpKXRocm93IHZiYihhKX10aGlzLmQ9bnVsbDshIWImJihiLmkmMSkhPTAmJihiPT1zYmI/KHRoaXMuZD0oQmNiKCksemNiKSk6Yj09V0Q/KHRoaXMuZD1tZWIoMCkpOmI9PVZEPyh0aGlzLmQ9bmV3IE5kYigwKSk6Yj09VUQ/KHRoaXMuZD0wKTpiPT1YRD8odGhpcy5kPUFlYigwKSk6Yj09cmJiPyh0aGlzLmQ9V2ViKDApKTpiPT1TRD8odGhpcy5kPVNjYigwKSk6KHRoaXMuZD1iZGIoMCkpKTt0aGlzLmU9dHJ1ZX1yZXR1cm4gdGhpcy5kfTtfLkVqPWZ1bmN0aW9uIFZQZCgpe3JldHVybiAodGhpcy5CYiYyNTYpIT0wfTtfLklrPWZ1bmN0aW9uIFdQZChhKXthJiYodGhpcy5EPSdvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQWJzdHJhY3RFbnVtZXJhdG9yJyl9O18ueGs9ZnVuY3Rpb24gWFBkKGEpe2dLZCh0aGlzLGEpO3RoaXMuSWsoYSl9O18ueWs9ZnVuY3Rpb24gWVBkKGEpe3RoaXMuQz1hO3RoaXMuZT1mYWxzZX07Xy5JYj1mdW5jdGlvbiBaUGQoKXt2YXIgYTtpZigodGhpcy5EYiY2NCkhPTApcmV0dXJuIG1LZCh0aGlzKTthPW5ldyBKZmIobUtkKHRoaXMpKTthLmErPScgKHNlcmlhbGl6YWJsZTogJztGZmIoYSwodGhpcy5CYiYyNTYpIT0wKTthLmErPScpJztyZXR1cm4gYS5hfTtfLmM9ZmFsc2U7Xy5kPW51bGw7Xy5lPWZhbHNlO3ZhciAkNT1tZGIocXRlLCdFRGF0YVR5cGVJbXBsJyw1NjYpO2JjYig0NTcsNTY2LHsxMDU6MSw5MjoxLDkwOjEsMTM4OjEsMTQ4OjEsODM0OjEsNjcxOjEsMTQ3OjEsMTkxOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsMzUxOjEsNDU3OjEsMTUwOjEsMTE0OjEsMTE1OjEsNjc2OjF9LGFRZCk7Xy5fZz1mdW5jdGlvbiBiUWQoYSxiLGMpe3ZhciBkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksdGhpcy5BYjtjYXNlIDE6cmV0dXJuIHRoaXMuemI7Y2FzZSAyOnJldHVybiB0aGlzLkQhPW51bGw/dGhpcy5EOnRoaXMuQjtjYXNlIDM6cmV0dXJuIGRLZCh0aGlzKTtjYXNlIDQ6cmV0dXJuICRQZCh0aGlzKTtjYXNlIDU6cmV0dXJuIHRoaXMuRjtjYXNlIDY6aWYoYilyZXR1cm4gYktkKHRoaXMpO3JldHVybiBaSmQodGhpcyk7Y2FzZSA3OnJldHVybiAhdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSksdGhpcy5BO2Nhc2UgODpyZXR1cm4gQmNiKCksKHRoaXMuQmImMjU2KSE9MD90cnVlOmZhbHNlO2Nhc2UgOTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKGc1LHRoaXMsOSw1KSksdGhpcy5hO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKGpHZCgpLFVGZCkpLFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP1VGZDpkKSxhKSxiLGMpfTtfLmhoPWZ1bmN0aW9uIGNRZChhLGIsYyl7dmFyIGQsZSxmO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksU3hkKHRoaXMuQWIsYSxjKTtjYXNlIDY6ISF0aGlzLkNiJiYoYz0oZT10aGlzLkRiPj4xNixlPj0wP2FLZCh0aGlzLGMpOnRoaXMuQ2IuaWgodGhpcywtMS1lLG51bGwsYykpKTtyZXR1cm4gX2hkKHRoaXMsYSw2LGMpO2Nhc2UgOTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKGc1LHRoaXMsOSw1KSksU3hkKHRoaXMuYSxhLGMpO31yZXR1cm4gZj1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oakdkKCksVUZkKTpkKSxiKSw2NiksZi5OaigpLlFqKHRoaXMseWpkKHRoaXMpLGItYUxkKChqR2QoKSxVRmQpKSxhLGMpfTtfLmpoPWZ1bmN0aW9uIGRRZChhLGIsYyl7dmFyIGQsZTtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFR4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA2OnJldHVybiBfaGQodGhpcyxudWxsLDYsYyk7Y2FzZSA3OnJldHVybiAhdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSksVHhkKHRoaXMuQSxhLGMpO2Nhc2UgOTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgY1VkKGc1LHRoaXMsOSw1KSksVHhkKHRoaXMuYSxhLGMpO31yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oakdkKCksVUZkKTpkKSxiKSw2NiksZS5OaigpLlJqKHRoaXMseWpkKHRoaXMpLGItYUxkKChqR2QoKSxVRmQpKSxhLGMpfTtfLmxoPWZ1bmN0aW9uIGVRZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhIXRoaXMuQWImJnRoaXMuQWIuaSE9MDtjYXNlIDE6cmV0dXJuIHRoaXMuemIhPW51bGw7Y2FzZSAyOnJldHVybiB0aGlzLkQhPW51bGwmJnRoaXMuRD09dGhpcy5GO2Nhc2UgMzpyZXR1cm4gISFkS2QodGhpcyk7Y2FzZSA0OnJldHVybiAhISRQZCh0aGlzKTtjYXNlIDU6cmV0dXJuIHRoaXMuRiE9bnVsbCYmdGhpcy5GIT10aGlzLkQmJnRoaXMuRiE9dGhpcy5CO2Nhc2UgNjpyZXR1cm4gISFaSmQodGhpcyk7Y2FzZSA3OnJldHVybiAhIXRoaXMuQSYmdGhpcy5BLmkhPTA7Y2FzZSA4OnJldHVybiAodGhpcy5CYiYyNTYpPT0wO2Nhc2UgOTpyZXR1cm4gISF0aGlzLmEmJnRoaXMuYS5pIT0wO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQoKGpHZCgpLFVGZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP1VGZDpiKSxhKSl9O18uc2g9ZnVuY3Rpb24gZlFkKGEsYil7dmFyIGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOmxLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOmlLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSA1OmtLZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSA3OiF0aGlzLkEmJih0aGlzLkE9bmV3IEs0ZCh1NSx0aGlzLDcpKTtVeGQodGhpcy5BKTshdGhpcy5BJiYodGhpcy5BPW5ldyBLNGQodTUsdGhpcyw3KSk7eXRkKHRoaXMuQSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgODpMUGQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSA5OiF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChnNSx0aGlzLDksNSkpO1V4ZCh0aGlzLmEpOyF0aGlzLmEmJih0aGlzLmE9bmV3IGNVZChnNSx0aGlzLDksNSkpO3l0ZCh0aGlzLmEsQkQoYiwxNCkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLFVGZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP1VGZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBnUWQoKXtyZXR1cm4gakdkKCksVUZkfTtfLkJoPWZ1bmN0aW9uIGhRZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpO3JldHVybjtjYXNlIDE6SkQodGhpcy5DYiwxNzkpJiYoQkQodGhpcy5DYiwxNzkpLnRiPW51bGwpO3BuZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDI6JEpkKHRoaXMsbnVsbCk7X0pkKHRoaXMsdGhpcy5EKTtyZXR1cm47Y2FzZSA1OmtLZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDc6IXRoaXMuQSYmKHRoaXMuQT1uZXcgSzRkKHU1LHRoaXMsNykpO1V4ZCh0aGlzLkEpO3JldHVybjtjYXNlIDg6TFBkKHRoaXMsdHJ1ZSk7cmV0dXJuO2Nhc2UgOTohdGhpcy5hJiYodGhpcy5hPW5ldyBjVWQoZzUsdGhpcyw5LDUpKTtVeGQodGhpcy5hKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKChqR2QoKSxVRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9VRmQ6YiksYSkpfTtfLkdoPWZ1bmN0aW9uIGlRZCgpe3ZhciBhLGI7aWYodGhpcy5hKXtmb3IoYT0wLGI9dGhpcy5hLmk7YTxiOysrYSl7Q21kKHF1ZCh0aGlzLmEsYSkpfX1vMWQoKE82ZCgpLE02ZCksdGhpcykubmUoKTt0aGlzLkJifD0xfTtfLnpqPWZ1bmN0aW9uIGpRZCgpe3JldHVybiAkUGQodGhpcyl9O18ud2o9ZnVuY3Rpb24ga1FkKGEpe2lmKGEhPW51bGwpe3JldHVybiB0cnVlfXJldHVybiBmYWxzZX07Xy5Jaz1mdW5jdGlvbiBsUWQoYSl7fTt2YXIgXzU9bWRiKHF0ZSwnRUVudW1JbXBsJyw0NTcpO2JjYig1NzMsNDM4LHsxMDU6MSw5MjoxLDkwOjEsMTk0MDoxLDY3ODoxLDE0NzoxLDE5MToxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDU3MzoxLDE1MDoxLDExNDoxLDExNToxfSxyUWQpO18ubmU9ZnVuY3Rpb24gQVFkKCl7cmV0dXJuIHRoaXMuemJ9O18uUWc9ZnVuY3Rpb24gc1FkKGEpe3JldHVybiBtUWQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiB0UWQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuIG1lYih0aGlzLmQpO2Nhc2UgMzpyZXR1cm4gdGhpcy5iP3RoaXMuYjp0aGlzLmE7Y2FzZSA0OnJldHVybiBlPXRoaXMuYyxlPT1udWxsP3RoaXMuemI6ZTtjYXNlIDU6cmV0dXJuIHRoaXMuRGI+PjE2PT01P0JEKHRoaXMuQ2IsNjcxKTpudWxsO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKGpHZCgpLFZGZCkpLFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP1ZGZDpkKSxhKSxiLGMpfTtfLmhoPWZ1bmN0aW9uIHVRZChhLGIsYyl7dmFyIGQsZSxmO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksU3hkKHRoaXMuQWIsYSxjKTtjYXNlIDU6ISF0aGlzLkNiJiYoYz0oZT10aGlzLkRiPj4xNixlPj0wP21RZCh0aGlzLGMpOnRoaXMuQ2IuaWgodGhpcywtMS1lLG51bGwsYykpKTtyZXR1cm4gX2hkKHRoaXMsYSw1LGMpO31yZXR1cm4gZj1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oakdkKCksVkZkKTpkKSxiKSw2NiksZi5OaigpLlFqKHRoaXMseWpkKHRoaXMpLGItYUxkKChqR2QoKSxWRmQpKSxhLGMpfTtfLmpoPWZ1bmN0aW9uIHZRZChhLGIsYyl7dmFyIGQsZTtzd2l0Y2goYil7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLFR4ZCh0aGlzLkFiLGEsYyk7Y2FzZSA1OnJldHVybiBfaGQodGhpcyxudWxsLDUsYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxWRmQpOmQpLGIpLDY2KSxlLk5qKCkuUmoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLFZGZCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gd1FkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuIHRoaXMuZCE9MDtjYXNlIDM6cmV0dXJuICEhdGhpcy5iO2Nhc2UgNDpyZXR1cm4gdGhpcy5jIT1udWxsO2Nhc2UgNTpyZXR1cm4gISEodGhpcy5EYj4+MTY9PTU/QkQodGhpcy5DYiw2NzEpOm51bGwpO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQoKGpHZCgpLFZGZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP1ZGZDpiKSxhKSl9O18uc2g9ZnVuY3Rpb24geFFkKGEsYil7dmFyIGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTshdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO3l0ZCh0aGlzLkFiLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAxOnBuZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAyOnFRZCh0aGlzLEJEKGIsMTkpLmEpO3JldHVybjtjYXNlIDM6b1FkKHRoaXMsQkQoYiwxOTQwKSk7cmV0dXJuO2Nhc2UgNDpwUWQodGhpcyxHRChiKSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCgoakdkKCksVkZkKSksWEtkKChjPUJEKEFqZCh0aGlzLDE2KSwyNiksIWM/VkZkOmMpLGEpLGIpfTtfLnpoPWZ1bmN0aW9uIHlRZCgpe3JldHVybiBqR2QoKSxWRmR9O18uQmg9ZnVuY3Rpb24gelFkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTpwbmQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSAyOnFRZCh0aGlzLDApO3JldHVybjtjYXNlIDM6b1FkKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgNDpwUWQodGhpcyxudWxsKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKChqR2QoKSxWRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9WRmQ6YiksYSkpfTtfLkliPWZ1bmN0aW9uIEJRZCgpe3ZhciBhO3JldHVybiBhPXRoaXMuYyxhPT1udWxsP3RoaXMuemI6YX07Xy5iPW51bGw7Xy5jPW51bGw7Xy5kPTA7dmFyIGE2PW1kYihxdGUsJ0VFbnVtTGl0ZXJhbEltcGwnLDU3Myk7dmFyIGM2PW9kYihxdGUsJ0VGYWN0b3J5SW1wbC9JbnRlcm5hbEVEYXRlVGltZUZvcm1hdCcpO2JjYig0ODksMSx7MjAxNToxfSxFUWQpO3ZhciBiNj1tZGIocXRlLCdFRmFjdG9yeUltcGwvMUNsaWVudEludGVybmFsRURhdGVUaW1lRm9ybWF0Jyw0ODkpO2JjYigyNDEsMTE1LHsxMDU6MSw5MjoxLDkwOjEsODc6MSw1NjoxLDEwODoxLDQ5OjEsOTc6MSwyNDE6MSwxMTQ6MSwxMTU6MX0sVVFkKTtfLlNnPWZ1bmN0aW9uIFZRZChhLGIsYyl7dmFyIGQ7Yz1faGQodGhpcyxhLGIsYyk7aWYoISF0aGlzLmUmJkpEKGEsMTcwKSl7ZD1NUWQodGhpcyx0aGlzLmUpO2QhPXRoaXMuYyYmKGM9UVFkKHRoaXMsZCxjKSl9cmV0dXJuIGN9O18uX2c9ZnVuY3Rpb24gV1FkKGEsYixjKXt2YXIgZDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLmY7Y2FzZSAxOnJldHVybiAhdGhpcy5kJiYodGhpcy5kPW5ldyB4TWQoajUsdGhpcywxKSksdGhpcy5kO2Nhc2UgMjppZihiKXJldHVybiBLUWQodGhpcyk7cmV0dXJuIHRoaXMuYztjYXNlIDM6cmV0dXJuIHRoaXMuYjtjYXNlIDQ6cmV0dXJuIHRoaXMuZTtjYXNlIDU6aWYoYilyZXR1cm4gSlFkKHRoaXMpO3JldHVybiB0aGlzLmE7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoakdkKCksWEZkKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/WEZkOmQpLGEpLGIsYyl9O18uamg9ZnVuY3Rpb24gWFFkKGEsYixjKXt2YXIgZCxlO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuIElRZCh0aGlzLG51bGwsYyk7Y2FzZSAxOnJldHVybiAhdGhpcy5kJiYodGhpcy5kPW5ldyB4TWQoajUsdGhpcywxKSksVHhkKHRoaXMuZCxhLGMpO2Nhc2UgMzpyZXR1cm4gR1FkKHRoaXMsbnVsbCxjKTt9cmV0dXJuIGU9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLFhGZCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksWEZkKSksYSxjKX07Xy5saD1mdW5jdGlvbiBZUWQoYSl7dmFyIGI7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLmY7Y2FzZSAxOnJldHVybiAhIXRoaXMuZCYmdGhpcy5kLmkhPTA7Y2FzZSAyOnJldHVybiAhIXRoaXMuYztjYXNlIDM6cmV0dXJuICEhdGhpcy5iO2Nhc2UgNDpyZXR1cm4gISF0aGlzLmU7Y2FzZSA1OnJldHVybiAhIXRoaXMuYTt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxYRmQpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9YRmQ6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIFpRZChhLGIpe3ZhciBjO3N3aXRjaChhKXtjYXNlIDA6U1FkKHRoaXMsQkQoYiw4NykpO3JldHVybjtjYXNlIDE6IXRoaXMuZCYmKHRoaXMuZD1uZXcgeE1kKGo1LHRoaXMsMSkpO1V4ZCh0aGlzLmQpOyF0aGlzLmQmJih0aGlzLmQ9bmV3IHhNZChqNSx0aGlzLDEpKTt5dGQodGhpcy5kLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSAzOlBRZCh0aGlzLEJEKGIsODcpKTtyZXR1cm47Y2FzZSA0OlJRZCh0aGlzLEJEKGIsODM2KSk7cmV0dXJuO2Nhc2UgNTpOUWQodGhpcyxCRChiLDEzOCkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLFhGZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP1hGZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiAkUWQoKXtyZXR1cm4gakdkKCksWEZkfTtfLkJoPWZ1bmN0aW9uIF9RZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOlNRZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDE6IXRoaXMuZCYmKHRoaXMuZD1uZXcgeE1kKGo1LHRoaXMsMSkpO1V4ZCh0aGlzLmQpO3JldHVybjtjYXNlIDM6UFFkKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgNDpSUWQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSA1Ok5RZCh0aGlzLG51bGwpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQoKGpHZCgpLFhGZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP1hGZDpiKSxhKSl9O18uSWI9ZnVuY3Rpb24gYVJkKCl7dmFyIGE7YT1uZXcgV2ZiKEVpZCh0aGlzKSk7YS5hKz0nIChleHByZXNzaW9uOiAnO1RRZCh0aGlzLGEpO2EuYSs9JyknO3JldHVybiBhLmF9O3ZhciBGUWQ7dmFyIGU2PW1kYihxdGUsJ0VHZW5lcmljVHlwZUltcGwnLDI0MSk7YmNiKDE5NjksMTk2NCxWdmUpO18uWGg9ZnVuY3Rpb24gY1JkKGEsYil7YlJkKHRoaXMsYSxiKX07Xy5saz1mdW5jdGlvbiBkUmQoYSxiKXtiUmQodGhpcyx0aGlzLmdjKCksYSk7cmV0dXJuIGJ9O18ucGk9ZnVuY3Rpb24gZVJkKGEpe3JldHVybiBVdCh0aGlzLkdpKCksYSl9O18uWmg9ZnVuY3Rpb24gZlJkKCl7cmV0dXJuIHRoaXMuJGgoKX07Xy5HaT1mdW5jdGlvbiBnUmQoKXtyZXR1cm4gbmV3IE8wZCh0aGlzKX07Xy4kaD1mdW5jdGlvbiBoUmQoKXtyZXR1cm4gdGhpcy5faCgwKX07Xy5faD1mdW5jdGlvbiBpUmQoYSl7cmV0dXJuIHRoaXMuR2koKS5aYyhhKX07Xy5taz1mdW5jdGlvbiBqUmQoYSxiKXt6ZSh0aGlzLGEsdHJ1ZSk7cmV0dXJuIGJ9O18uaWk9ZnVuY3Rpb24ga1JkKGEsYil7dmFyIGMsZDtkPVZ0KHRoaXMsYik7Yz10aGlzLlpjKGEpO2MuUmIoZCk7cmV0dXJuIGR9O18uamk9ZnVuY3Rpb24gbFJkKGEsYil7dmFyIGM7emUodGhpcyxiLHRydWUpO2M9dGhpcy5aYyhhKTtjLlJiKGIpfTt2YXIgQjg9bWRiKHl2ZSwnQWJzdHJhY3RTZXF1ZW50aWFsSW50ZXJuYWxFTGlzdCcsMTk2OSk7YmNiKDQ4NiwxOTY5LFZ2ZSxxUmQpO18ucGk9ZnVuY3Rpb24gclJkKGEpe3JldHVybiBVdCh0aGlzLkdpKCksYSl9O18uWmg9ZnVuY3Rpb24gc1JkKCl7aWYodGhpcy5iPT1udWxsKXtyZXR1cm4gTFJkKCksTFJkKCksS1JkfXJldHVybiB0aGlzLkprKCl9O18uR2k9ZnVuY3Rpb24gdFJkKCl7cmV0dXJuIG5ldyB3NGQodGhpcy5hLHRoaXMuYil9O18uJGg9ZnVuY3Rpb24gdVJkKCl7aWYodGhpcy5iPT1udWxsKXtyZXR1cm4gTFJkKCksTFJkKCksS1JkfXJldHVybiB0aGlzLkprKCl9O18uX2g9ZnVuY3Rpb24gdlJkKGEpe3ZhciBiLGM7aWYodGhpcy5iPT1udWxsKXtpZihhPDB8fGE+MSl7dGhyb3cgdmJiKG5ldyBxY2IoZ3ZlK2ErJywgc2l6ZT0wJykpfXJldHVybiBMUmQoKSxMUmQoKSxLUmR9Yz10aGlzLkprKCk7Zm9yKGI9MDtiPGE7KytiKXtNUmQoYyl9cmV0dXJuIGN9O18uZGM9ZnVuY3Rpb24gd1JkKCl7dmFyIGEsYixjLGQsZSxmO2lmKHRoaXMuYiE9bnVsbCl7Zm9yKGM9MDtjPHRoaXMuYi5sZW5ndGg7KytjKXthPXRoaXMuYltjXTtpZighdGhpcy5NaygpfHx0aGlzLmEubWgoYSkpe2Y9dGhpcy5hLmJoKGEsZmFsc2UpO1E2ZCgpO2lmKEJEKGEsNjYpLk9qKCkpe2I9QkQoZiwxNTMpO2ZvcihkPTAsZT1iLmdjKCk7ZDxlOysrZCl7aWYob1JkKGIuaWwoZCkpJiZiLmpsKGQpIT1udWxsKXtyZXR1cm4gZmFsc2V9fX1lbHNlIGlmKGEuJGooKSl7aWYoIUJEKGYsMTQpLmRjKCkpe3JldHVybiBmYWxzZX19ZWxzZSBpZihmIT1udWxsKXtyZXR1cm4gZmFsc2V9fX19cmV0dXJuIHRydWV9O18uS2M9ZnVuY3Rpb24geFJkKCl7cmV0dXJuIHBSZCh0aGlzKX07Xy5aYz1mdW5jdGlvbiB5UmQoYSl7dmFyIGIsYztpZih0aGlzLmI9PW51bGwpe2lmKGEhPTApe3Rocm93IHZiYihuZXcgcWNiKGd2ZSthKycsIHNpemU9MCcpKX1yZXR1cm4gTFJkKCksTFJkKCksS1JkfWM9dGhpcy5MaygpP3RoaXMuS2soKTp0aGlzLkprKCk7Zm9yKGI9MDtiPGE7KytiKXtNUmQoYyl9cmV0dXJuIGN9O18uaWk9ZnVuY3Rpb24gelJkKGEsYil7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLmppPWZ1bmN0aW9uIEFSZChhLGIpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5Kaz1mdW5jdGlvbiBCUmQoKXtyZXR1cm4gbmV3IFJSZCh0aGlzLmEsdGhpcy5iKX07Xy5Laz1mdW5jdGlvbiBDUmQoKXtyZXR1cm4gbmV3IGRTZCh0aGlzLmEsdGhpcy5iKX07Xy5Maz1mdW5jdGlvbiBEUmQoKXtyZXR1cm4gdHJ1ZX07Xy5nYz1mdW5jdGlvbiBFUmQoKXt2YXIgYSxiLGMsZCxlLGYsZztlPTA7aWYodGhpcy5iIT1udWxsKXtmb3IoYz0wO2M8dGhpcy5iLmxlbmd0aDsrK2Mpe2E9dGhpcy5iW2NdO2lmKCF0aGlzLk1rKCl8fHRoaXMuYS5taChhKSl7Zz10aGlzLmEuYmgoYSxmYWxzZSk7UTZkKCk7aWYoQkQoYSw2NikuT2ooKSl7Yj1CRChnLDE1Myk7Zm9yKGQ9MCxmPWIuZ2MoKTtkPGY7KytkKXtvUmQoYi5pbChkKSkmJmIuamwoZCkhPW51bGwmJisrZX19ZWxzZSBhLiRqKCk/KGUrPUJEKGcsMTQpLmdjKCkpOmchPW51bGwmJisrZX19fXJldHVybiBlfTtfLk1rPWZ1bmN0aW9uIEZSZCgpe3JldHVybiB0cnVlfTt2YXIgbVJkO3ZhciBSOD1tZGIoeXZlLCdFQ29udGVudHNFTGlzdCcsNDg2KTtiY2IoMTE1Niw0ODYsVnZlLEdSZCk7Xy5Kaz1mdW5jdGlvbiBIUmQoKXtyZXR1cm4gbmV3IGhTZCh0aGlzLmEsdGhpcy5iKX07Xy5Laz1mdW5jdGlvbiBJUmQoKXtyZXR1cm4gbmV3IGZTZCh0aGlzLmEsdGhpcy5iKX07Xy5Naz1mdW5jdGlvbiBKUmQoKXtyZXR1cm4gZmFsc2V9O3ZhciBpNj1tZGIocXRlLCdFTmFtZWRFbGVtZW50SW1wbC8xJywxMTU2KTtiY2IoMjc5LDEsV3ZlLFJSZCk7Xy5OYj1mdW5jdGlvbiBVUmQoYSl7UnJiKHRoaXMsYSl9O18uUmI9ZnVuY3Rpb24gU1JkKGEpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5Oaz1mdW5jdGlvbiBUUmQoYSl7aWYodGhpcy5nIT0wfHwhIXRoaXMuZSl7dGhyb3cgdmJiKG5ldyBaZGIoJ0l0ZXJhdG9yIGFscmVhZHkgaW4gdXNlIG9yIGFscmVhZHkgZmlsdGVyZWQnKSl9dGhpcy5lPWF9O18uT2I9ZnVuY3Rpb24gVlJkKCl7dmFyIGEsYixjLGQsZSxmO3N3aXRjaCh0aGlzLmcpe2Nhc2UgMzpjYXNlIDI6e3JldHVybiB0cnVlfWNhc2UgMTp7cmV0dXJuIGZhbHNlfWNhc2UgLTM6eyF0aGlzLnA/Kyt0aGlzLm46dGhpcy5wLlBiKCl9ZGVmYXVsdDp7aWYoIXRoaXMua3x8KCF0aGlzLnA/IU5SZCh0aGlzKTohT1JkKHRoaXMsdGhpcy5wKSkpe3doaWxlKHRoaXMuZDx0aGlzLmMubGVuZ3RoKXtiPXRoaXMuY1t0aGlzLmQrK107aWYoKCF0aGlzLmV8fGIuR2ooKSE9eDJ8fGIuYWooKSE9MCkmJighdGhpcy5NaygpfHx0aGlzLmIubWgoYikpKXtmPXRoaXMuYi5iaChiLHRoaXMuTGsoKSk7dGhpcy5mPShRNmQoKSxCRChiLDY2KS5PaigpKTtpZih0aGlzLmZ8fGIuJGooKSl7aWYodGhpcy5MaygpKXtkPUJEKGYsMTUpO3RoaXMuaz1kfWVsc2V7ZD1CRChmLDY5KTt0aGlzLms9dGhpcy5qPWR9aWYoSkQodGhpcy5rLDU0KSl7dGhpcy5wPW51bGw7dGhpcy5vPXRoaXMuay5nYygpO3RoaXMubj0wfWVsc2V7dGhpcy5wPSF0aGlzLmo/dGhpcy5rLlljKCk6dGhpcy5qLiRoKCl9aWYoIXRoaXMucD9OUmQodGhpcyk6T1JkKHRoaXMsdGhpcy5wKSl7ZT0hdGhpcy5wPyF0aGlzLmo/dGhpcy5rLlhiKHRoaXMubisrKTp0aGlzLmoucGkodGhpcy5uKyspOnRoaXMucC5QYigpO2lmKHRoaXMuZil7YT1CRChlLDcyKTthLmFrKCk7Yz1hLmRkKCk7dGhpcy5pPWN9ZWxzZXtjPWU7dGhpcy5pPWN9dGhpcy5nPTM7cmV0dXJuIHRydWV9fWVsc2UgaWYoZiE9bnVsbCl7dGhpcy5rPW51bGw7dGhpcy5wPW51bGw7Yz1mO3RoaXMuaT1jO3RoaXMuZz0yO3JldHVybiB0cnVlfX19dGhpcy5rPW51bGw7dGhpcy5wPW51bGw7dGhpcy5mPWZhbHNlO3RoaXMuZz0xO3JldHVybiBmYWxzZX1lbHNle2U9IXRoaXMucD8hdGhpcy5qP3RoaXMuay5YYih0aGlzLm4rKyk6dGhpcy5qLnBpKHRoaXMubisrKTp0aGlzLnAuUGIoKTtpZih0aGlzLmYpe2E9QkQoZSw3Mik7YS5haygpO2M9YS5kZCgpO3RoaXMuaT1jfWVsc2V7Yz1lO3RoaXMuaT1jfXRoaXMuZz0zO3JldHVybiB0cnVlfX19fTtfLlNiPWZ1bmN0aW9uIFdSZCgpe3ZhciBhLGIsYyxkLGUsZjtzd2l0Y2godGhpcy5nKXtjYXNlIC0zOmNhc2UgLTI6e3JldHVybiB0cnVlfWNhc2UgLTE6e3JldHVybiBmYWxzZX1jYXNlIDM6eyF0aGlzLnA/LS10aGlzLm46dGhpcy5wLlViKCl9ZGVmYXVsdDp7aWYoIXRoaXMua3x8KCF0aGlzLnA/IVBSZCh0aGlzKTohUVJkKHRoaXMsdGhpcy5wKSkpe3doaWxlKHRoaXMuZD4wKXtiPXRoaXMuY1stLXRoaXMuZF07aWYoKCF0aGlzLmV8fGIuR2ooKSE9eDJ8fGIuYWooKSE9MCkmJighdGhpcy5NaygpfHx0aGlzLmIubWgoYikpKXtmPXRoaXMuYi5iaChiLHRoaXMuTGsoKSk7dGhpcy5mPShRNmQoKSxCRChiLDY2KS5PaigpKTtpZih0aGlzLmZ8fGIuJGooKSl7aWYodGhpcy5MaygpKXtkPUJEKGYsMTUpO3RoaXMuaz1kfWVsc2V7ZD1CRChmLDY5KTt0aGlzLms9dGhpcy5qPWR9aWYoSkQodGhpcy5rLDU0KSl7dGhpcy5vPXRoaXMuay5nYygpO3RoaXMubj10aGlzLm99ZWxzZXt0aGlzLnA9IXRoaXMuaj90aGlzLmsuWmModGhpcy5rLmdjKCkpOnRoaXMuai5faCh0aGlzLmsuZ2MoKSl9aWYoIXRoaXMucD9QUmQodGhpcyk6UVJkKHRoaXMsdGhpcy5wKSl7ZT0hdGhpcy5wPyF0aGlzLmo/dGhpcy5rLlhiKC0tdGhpcy5uKTp0aGlzLmoucGkoLS10aGlzLm4pOnRoaXMucC5VYigpO2lmKHRoaXMuZil7YT1CRChlLDcyKTthLmFrKCk7Yz1hLmRkKCk7dGhpcy5pPWN9ZWxzZXtjPWU7dGhpcy5pPWN9dGhpcy5nPS0zO3JldHVybiB0cnVlfX1lbHNlIGlmKGYhPW51bGwpe3RoaXMuaz1udWxsO3RoaXMucD1udWxsO2M9Zjt0aGlzLmk9Yzt0aGlzLmc9LTI7cmV0dXJuIHRydWV9fX10aGlzLms9bnVsbDt0aGlzLnA9bnVsbDt0aGlzLmc9LTE7cmV0dXJuIGZhbHNlfWVsc2V7ZT0hdGhpcy5wPyF0aGlzLmo/dGhpcy5rLlhiKC0tdGhpcy5uKTp0aGlzLmoucGkoLS10aGlzLm4pOnRoaXMucC5VYigpO2lmKHRoaXMuZil7YT1CRChlLDcyKTthLmFrKCk7Yz1hLmRkKCk7dGhpcy5pPWN9ZWxzZXtjPWU7dGhpcy5pPWN9dGhpcy5nPS0zO3JldHVybiB0cnVlfX19fTtfLlBiPWZ1bmN0aW9uIFhSZCgpe3JldHVybiBNUmQodGhpcyl9O18uVGI9ZnVuY3Rpb24gWVJkKCl7cmV0dXJuIHRoaXMuYX07Xy5VYj1mdW5jdGlvbiBaUmQoKXt2YXIgYTtpZih0aGlzLmc8LTF8fHRoaXMuU2IoKSl7LS10aGlzLmE7dGhpcy5nPTA7YT10aGlzLmk7dGhpcy5TYigpO3JldHVybiBhfWVsc2V7dGhyb3cgdmJiKG5ldyB1dGIpfX07Xy5WYj1mdW5jdGlvbiAkUmQoKXtyZXR1cm4gdGhpcy5hLTF9O18uUWI9ZnVuY3Rpb24gX1JkKCl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLkxrPWZ1bmN0aW9uIGFTZCgpe3JldHVybiBmYWxzZX07Xy5XYj1mdW5jdGlvbiBiU2QoYSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLk1rPWZ1bmN0aW9uIGNTZCgpe3JldHVybiB0cnVlfTtfLmE9MDtfLmQ9MDtfLmY9ZmFsc2U7Xy5nPTA7Xy5uPTA7Xy5vPTA7dmFyIEtSZDt2YXIgUDg9bWRiKHl2ZSwnRUNvbnRlbnRzRUxpc3QvRmVhdHVyZUl0ZXJhdG9ySW1wbCcsMjc5KTtiY2IoNjk3LDI3OSxXdmUsZFNkKTtfLkxrPWZ1bmN0aW9uIGVTZCgpe3JldHVybiB0cnVlfTt2YXIgUTg9bWRiKHl2ZSwnRUNvbnRlbnRzRUxpc3QvUmVzb2x2aW5nRmVhdHVyZUl0ZXJhdG9ySW1wbCcsNjk3KTtiY2IoMTE1Nyw2OTcsV3ZlLGZTZCk7Xy5Naz1mdW5jdGlvbiBnU2QoKXtyZXR1cm4gZmFsc2V9O3ZhciBnNj1tZGIocXRlLCdFTmFtZWRFbGVtZW50SW1wbC8xLzEnLDExNTcpO2JjYigxMTU4LDI3OSxXdmUsaFNkKTtfLk1rPWZ1bmN0aW9uIGlTZCgpe3JldHVybiBmYWxzZX07dmFyIGg2PW1kYihxdGUsJ0VOYW1lZEVsZW1lbnRJbXBsLzEvMicsMTE1OCk7YmNiKDM2LDE0MyxmdmUsbFNkLG1TZCxuU2Qsb1NkLHBTZCxxU2QsclNkLHNTZCx0U2QsdVNkLHZTZCx3U2QseFNkLHlTZCx6U2QsQVNkLEJTZCxDU2QsRFNkLEVTZCxGU2QsR1NkLEhTZCxJU2QsSlNkKTtfLl9pPWZ1bmN0aW9uIEtTZCgpe3JldHVybiBrU2QodGhpcyl9O18uZ2o9ZnVuY3Rpb24gTFNkKCl7dmFyIGE7YT1rU2QodGhpcyk7aWYoYSl7cmV0dXJuIGEuemooKX1yZXR1cm4gbnVsbH07Xy55aT1mdW5jdGlvbiBNU2QoYSl7dGhpcy5iPT0tMSYmISF0aGlzLmEmJih0aGlzLmI9dGhpcy5jLlhnKHRoaXMuYS5haigpLHRoaXMuYS5HaigpKSk7cmV0dXJuIHRoaXMuYy5PZyh0aGlzLmIsYSl9O18uQWk9ZnVuY3Rpb24gTlNkKCl7cmV0dXJuIHRoaXMuY307Xy5oaj1mdW5jdGlvbiBPU2QoKXt2YXIgYTthPWtTZCh0aGlzKTtpZihhKXtyZXR1cm4gYS5LaigpfXJldHVybiBmYWxzZX07Xy5iPS0xO3ZhciBrNj1tZGIocXRlLCdFTm90aWZpY2F0aW9uSW1wbCcsMzYpO2JjYigzOTksMjg0LHsxMDU6MSw5MjoxLDkwOjEsMTQ3OjEsMTkxOjEsNTY6MSw1OToxLDEwODoxLDQ3MjoxLDQ5OjEsOTc6MSwxNTA6MSwzOTk6MSwyODQ6MSwxMTQ6MSwxMTU6MX0sU1NkKTtfLlFnPWZ1bmN0aW9uIFRTZChhKXtyZXR1cm4gUFNkKHRoaXMsYSl9O18uX2c9ZnVuY3Rpb24gVVNkKGEsYixjKXt2YXIgZCxlLGY7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDM6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjUxMikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDQ6cmV0dXJuIG1lYih0aGlzLnMpO2Nhc2UgNTpyZXR1cm4gbWViKHRoaXMudCk7Y2FzZSA2OnJldHVybiBCY2IoKSxmPXRoaXMudCxmPjF8fGY9PS0xP3RydWU6ZmFsc2U7Y2FzZSA3OnJldHVybiBCY2IoKSxlPXRoaXMucyxlPj0xP3RydWU6ZmFsc2U7Y2FzZSA4OmlmKGIpcmV0dXJuIHdJZCh0aGlzKTtyZXR1cm4gdGhpcy5yO2Nhc2UgOTpyZXR1cm4gdGhpcy5xO2Nhc2UgMTA6cmV0dXJuIHRoaXMuRGI+PjE2PT0xMD9CRCh0aGlzLkNiLDI2KTpudWxsO2Nhc2UgMTE6cmV0dXJuICF0aGlzLmQmJih0aGlzLmQ9bmV3IEs0ZCh1NSx0aGlzLDExKSksdGhpcy5kO2Nhc2UgMTI6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IGNVZChwNSx0aGlzLDEyLDEwKSksdGhpcy5jO2Nhc2UgMTM6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IGZUZCh0aGlzLHRoaXMpKSx0aGlzLmE7Y2FzZSAxNDpyZXR1cm4gUVNkKHRoaXMpO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKGpHZCgpLGFHZCkpLFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkP2FHZDpkKSxhKSxiLGMpfTtfLmhoPWZ1bmN0aW9uIFZTZChhLGIsYyl7dmFyIGQsZSxmO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksU3hkKHRoaXMuQWIsYSxjKTtjYXNlIDEwOiEhdGhpcy5DYiYmKGM9KGU9dGhpcy5EYj4+MTYsZT49MD9QU2QodGhpcyxjKTp0aGlzLkNiLmloKHRoaXMsLTEtZSxudWxsLGMpKSk7cmV0dXJuIF9oZCh0aGlzLGEsMTAsYyk7Y2FzZSAxMjpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgY1VkKHA1LHRoaXMsMTIsMTApKSxTeGQodGhpcy5jLGEsYyk7fXJldHVybiBmPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxhR2QpOmQpLGIpLDY2KSxmLk5qKCkuUWoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLGFHZCkpLGEsYyl9O18uamg9ZnVuY3Rpb24gV1NkKGEsYixjKXt2YXIgZCxlO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksVHhkKHRoaXMuQWIsYSxjKTtjYXNlIDk6cmV0dXJuIHZJZCh0aGlzLGMpO2Nhc2UgMTA6cmV0dXJuIF9oZCh0aGlzLG51bGwsMTAsYyk7Y2FzZSAxMTpyZXR1cm4gIXRoaXMuZCYmKHRoaXMuZD1uZXcgSzRkKHU1LHRoaXMsMTEpKSxUeGQodGhpcy5kLGEsYyk7Y2FzZSAxMjpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgY1VkKHA1LHRoaXMsMTIsMTApKSxUeGQodGhpcy5jLGEsYyk7Y2FzZSAxNDpyZXR1cm4gVHhkKFFTZCh0aGlzKSxhLGMpO31yZXR1cm4gZT1CRChYS2QoKGQ9QkQoQWpkKHRoaXMsMTYpLDI2KSwhZD8oakdkKCksYUdkKTpkKSxiKSw2NiksZS5OaigpLlJqKHRoaXMseWpkKHRoaXMpLGItYUxkKChqR2QoKSxhR2QpKSxhLGMpfTtfLmxoPWZ1bmN0aW9uIFhTZChhKXt2YXIgYixjLGQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLkFiJiZ0aGlzLkFiLmkhPTA7Y2FzZSAxOnJldHVybiB0aGlzLnpiIT1udWxsO2Nhc2UgMjpyZXR1cm4gKHRoaXMuQmImMjU2KT09MDtjYXNlIDM6cmV0dXJuICh0aGlzLkJiJjUxMik9PTA7Y2FzZSA0OnJldHVybiB0aGlzLnMhPTA7Y2FzZSA1OnJldHVybiB0aGlzLnQhPTE7Y2FzZSA2OnJldHVybiBkPXRoaXMudCxkPjF8fGQ9PS0xO2Nhc2UgNzpyZXR1cm4gYz10aGlzLnMsYz49MTtjYXNlIDg6cmV0dXJuICEhdGhpcy5yJiYhdGhpcy5xLmUmJkxRZCh0aGlzLnEpLmk9PTA7Y2FzZSA5OnJldHVybiAhIXRoaXMucSYmISghIXRoaXMuciYmIXRoaXMucS5lJiZMUWQodGhpcy5xKS5pPT0wKTtjYXNlIDEwOnJldHVybiAhISh0aGlzLkRiPj4xNj09MTA/QkQodGhpcy5DYiwyNik6bnVsbCk7Y2FzZSAxMTpyZXR1cm4gISF0aGlzLmQmJnRoaXMuZC5pIT0wO2Nhc2UgMTI6cmV0dXJuICEhdGhpcy5jJiZ0aGlzLmMuaSE9MDtjYXNlIDEzOnJldHVybiAhIXRoaXMuYSYmUVNkKHRoaXMuYS5hKS5pIT0wJiYhKCEhdGhpcy5iJiZRVGQodGhpcy5iKSk7Y2FzZSAxNDpyZXR1cm4gISF0aGlzLmImJlFUZCh0aGlzLmIpO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQoKGpHZCgpLGFHZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP2FHZDpiKSxhKSl9O18uc2g9ZnVuY3Rpb24gWVNkKGEsYil7dmFyIGMsZDtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpOyF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7eXRkKHRoaXMuQWIsQkQoYiwxNCkpO3JldHVybjtjYXNlIDE6cG5kKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDI6QklkKHRoaXMsQ2NiKEREKGIpKSk7cmV0dXJuO2Nhc2UgMzpDSWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSA0OkFJZCh0aGlzLEJEKGIsMTkpLmEpO3JldHVybjtjYXNlIDU6RElkKHRoaXMsQkQoYiwxOSkuYSk7cmV0dXJuO2Nhc2UgODp5SWQodGhpcyxCRChiLDEzOCkpO3JldHVybjtjYXNlIDk6ZD14SWQodGhpcyxCRChiLDg3KSxudWxsKTshIWQmJmQuRmkoKTtyZXR1cm47Y2FzZSAxMTohdGhpcy5kJiYodGhpcy5kPW5ldyBLNGQodTUsdGhpcywxMSkpO1V4ZCh0aGlzLmQpOyF0aGlzLmQmJih0aGlzLmQ9bmV3IEs0ZCh1NSx0aGlzLDExKSk7eXRkKHRoaXMuZCxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTI6IXRoaXMuYyYmKHRoaXMuYz1uZXcgY1VkKHA1LHRoaXMsMTIsMTApKTtVeGQodGhpcy5jKTshdGhpcy5jJiYodGhpcy5jPW5ldyBjVWQocDUsdGhpcywxMiwxMCkpO3l0ZCh0aGlzLmMsQkQoYiwxNCkpO3JldHVybjtjYXNlIDEzOiF0aGlzLmEmJih0aGlzLmE9bmV3IGZUZCh0aGlzLHRoaXMpKTt2d2QodGhpcy5hKTshdGhpcy5hJiYodGhpcy5hPW5ldyBmVGQodGhpcyx0aGlzKSk7eXRkKHRoaXMuYSxCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTQ6VXhkKFFTZCh0aGlzKSk7eXRkKFFTZCh0aGlzKSxCRChiLDE0KSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCgoakdkKCksYUdkKSksWEtkKChjPUJEKEFqZCh0aGlzLDE2KSwyNiksIWM/YUdkOmMpLGEpLGIpfTtfLnpoPWZ1bmN0aW9uIFpTZCgpe3JldHVybiBqR2QoKSxhR2R9O18uQmg9ZnVuY3Rpb24gJFNkKGEpe3ZhciBiLGM7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpO1V4ZCh0aGlzLkFiKTtyZXR1cm47Y2FzZSAxOnBuZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDI6QklkKHRoaXMsdHJ1ZSk7cmV0dXJuO2Nhc2UgMzpDSWQodGhpcyx0cnVlKTtyZXR1cm47Y2FzZSA0OkFJZCh0aGlzLDApO3JldHVybjtjYXNlIDU6RElkKHRoaXMsMSk7cmV0dXJuO2Nhc2UgODp5SWQodGhpcyxudWxsKTtyZXR1cm47Y2FzZSA5OmM9eElkKHRoaXMsbnVsbCxudWxsKTshIWMmJmMuRmkoKTtyZXR1cm47Y2FzZSAxMTohdGhpcy5kJiYodGhpcy5kPW5ldyBLNGQodTUsdGhpcywxMSkpO1V4ZCh0aGlzLmQpO3JldHVybjtjYXNlIDEyOiF0aGlzLmMmJih0aGlzLmM9bmV3IGNVZChwNSx0aGlzLDEyLDEwKSk7VXhkKHRoaXMuYyk7cmV0dXJuO2Nhc2UgMTM6ISF0aGlzLmEmJnZ3ZCh0aGlzLmEpO3JldHVybjtjYXNlIDE0OiEhdGhpcy5iJiZVeGQodGhpcy5iKTtyZXR1cm47fWVpZCh0aGlzLGEtYUxkKChqR2QoKSxhR2QpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9hR2Q6YiksYSkpfTtfLkdoPWZ1bmN0aW9uIF9TZCgpe3ZhciBhLGI7aWYodGhpcy5jKXtmb3IoYT0wLGI9dGhpcy5jLmk7YTxiOysrYSl7Q21kKHF1ZCh0aGlzLmMsYSkpfX13SWQodGhpcyk7dGhpcy5CYnw9MX07dmFyIHA2PW1kYihxdGUsJ0VPcGVyYXRpb25JbXBsJywzOTkpO2JjYig1MDUsNzQyLFV2ZSxmVGQpO18uSGk9ZnVuY3Rpb24gaVRkKGEsYil7YVRkKHRoaXMsYSxCRChiLDEzOCkpfTtfLklpPWZ1bmN0aW9uIGpUZChhKXtiVGQodGhpcyxCRChhLDEzOCkpfTtfLk9pPWZ1bmN0aW9uIHBUZChhKXt2YXIgYixjO3JldHVybiBiPUJEKHF1ZChRU2QodGhpcy5hKSxhKSw4NyksYz1iLmMsYz9jOihqR2QoKSxZRmQpfTtfLlRpPWZ1bmN0aW9uIHVUZChhKXt2YXIgYixjO3JldHVybiBiPUJEKFh4ZChRU2QodGhpcy5hKSxhKSw4NyksYz1iLmMsYz9jOihqR2QoKSxZRmQpfTtfLlVpPWZ1bmN0aW9uIHZUZChhLGIpe3JldHVybiBkVGQodGhpcyxhLEJEKGIsMTM4KSl9O18uYWk9ZnVuY3Rpb24gZ1RkKCl7cmV0dXJuIGZhbHNlfTtfLlppPWZ1bmN0aW9uIGhUZChhLGIsYyxkLGUpe3JldHVybiBudWxsfTtfLkppPWZ1bmN0aW9uIGtUZCgpe3JldHVybiBuZXcgTlRkKHRoaXMpfTtfLktpPWZ1bmN0aW9uIGxUZCgpe1V4ZChRU2QodGhpcy5hKSl9O18uTGk9ZnVuY3Rpb24gbVRkKGEpe3JldHVybiBjVGQodGhpcyxhKX07Xy5NaT1mdW5jdGlvbiBuVGQoYSl7dmFyIGIsYztmb3IoYz1hLktjKCk7Yy5PYigpOyl7Yj1jLlBiKCk7aWYoIWNUZCh0aGlzLGIpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfTtfLk5pPWZ1bmN0aW9uIG9UZChhKXt2YXIgYixjLGQ7aWYoSkQoYSwxNSkpe2Q9QkQoYSwxNSk7aWYoZC5nYygpPT1RU2QodGhpcy5hKS5pKXtmb3IoYj1kLktjKCksYz1uZXcgRnlkKHRoaXMpO2IuT2IoKTspe2lmKFBEKGIuUGIoKSkhPT1QRChEeWQoYykpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9O18uUGk9ZnVuY3Rpb24gcVRkKCl7dmFyIGEsYixjLGQsZTtjPTE7Zm9yKGI9bmV3IEZ5ZChRU2QodGhpcy5hKSk7Yi5lIT1iLmkuZ2MoKTspe2E9QkQoRHlkKGIpLDg3KTtkPShlPWEuYyxlP2U6KGpHZCgpLFlGZCkpO2M9MzEqYysoIWQ/MDp0YihkKSl9cmV0dXJuIGN9O18uUWk9ZnVuY3Rpb24gclRkKGEpe3ZhciBiLGMsZCxlO2Q9MDtmb3IoYz1uZXcgRnlkKFFTZCh0aGlzLmEpKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChEeWQoYyksODcpO2lmKFBEKGEpPT09UEQoKGU9Yi5jLGU/ZTooakdkKCksWUZkKSkpKXtyZXR1cm4gZH0rK2R9cmV0dXJuIC0xfTtfLlJpPWZ1bmN0aW9uIHNUZCgpe3JldHVybiBRU2QodGhpcy5hKS5pPT0wfTtfLlNpPWZ1bmN0aW9uIHRUZCgpe3JldHVybiBudWxsfTtfLlZpPWZ1bmN0aW9uIHdUZCgpe3JldHVybiBRU2QodGhpcy5hKS5pfTtfLldpPWZ1bmN0aW9uIHhUZCgpe3ZhciBhLGIsYyxkLGUsZjtmPVFTZCh0aGlzLmEpLmk7ZT1LQyhTSSxVaGUsMSxmLDUsMSk7Yz0wO2ZvcihiPW5ldyBGeWQoUVNkKHRoaXMuYSkpO2IuZSE9Yi5pLmdjKCk7KXthPUJEKER5ZChiKSw4Nyk7ZVtjKytdPShkPWEuYyxkP2Q6KGpHZCgpLFlGZCkpfXJldHVybiBlfTtfLlhpPWZ1bmN0aW9uIHlUZChhKXt2YXIgYixjLGQsZSxmLGcsaDtoPVFTZCh0aGlzLmEpLmk7aWYoYS5sZW5ndGg8aCl7ZT1pemQocmIoYSkuYyxoKTthPWV9YS5sZW5ndGg+aCYmTkMoYSxoLG51bGwpO2Q9MDtmb3IoYz1uZXcgRnlkKFFTZCh0aGlzLmEpKTtjLmUhPWMuaS5nYygpOyl7Yj1CRChEeWQoYyksODcpO2Y9KGc9Yi5jLGc/ZzooakdkKCksWUZkKSk7TkMoYSxkKyssZil9cmV0dXJuIGF9O18uWWk9ZnVuY3Rpb24gelRkKCl7dmFyIGEsYixjLGQsZTtlPW5ldyBIZmI7ZS5hKz0nWyc7YT1RU2QodGhpcy5hKTtmb3IoYj0wLGQ9UVNkKHRoaXMuYSkuaTtiPGQ7KXtFZmIoZSx4ZmIoKGM9QkQocXVkKGEsYiksODcpLmMsYz9jOihqR2QoKSxZRmQpKSkpOysrYjxkJiYoZS5hKz1TaGUsZSl9ZS5hKz0nXSc7cmV0dXJuIGUuYX07Xy4kaT1mdW5jdGlvbiBBVGQoYSl7fTtfLmFqPWZ1bmN0aW9uIEJUZCgpe3JldHVybiAxM307Xy5Caz1mdW5jdGlvbiBDVGQoKXtyZXR1cm4gdHJ1ZX07Xy5iaj1mdW5jdGlvbiBEVGQoKXtyZXR1cm4gZmFsc2V9O18uQ2s9ZnVuY3Rpb24gRVRkKCl7cmV0dXJuIGZhbHNlfTtfLkRrPWZ1bmN0aW9uIEZUZCgpe3JldHVybiBmYWxzZX07Xy5Faz1mdW5jdGlvbiBHVGQoKXtyZXR1cm4gdHJ1ZX07Xy5yaz1mdW5jdGlvbiBIVGQoKXtyZXR1cm4gZmFsc2V9O18uRms9ZnVuY3Rpb24gSVRkKCl7cmV0dXJuIHRydWV9O18ud2o9ZnVuY3Rpb24gSlRkKGEpe3JldHVybiBKRChhLDEzOCl9O18uZmo9ZnVuY3Rpb24gS1RkKCl7cmV0dXJuIFJTZCh0aGlzLmEpfTtfLmhpPWZ1bmN0aW9uIExUZCgpe3JldHVybiB0cnVlfTtfLm5pPWZ1bmN0aW9uIE1UZCgpe3JldHVybiB0cnVlfTt2YXIgbjY9bWRiKHF0ZSwnRU9wZXJhdGlvbkltcGwvMScsNTA1KTtiY2IoMTM0MCwxOTY0LExpZSxOVGQpO18uWmM9ZnVuY3Rpb24gT1RkKGEpe3JldHVybiB6dGQodGhpcy5hLGEpfTtfLmdjPWZ1bmN0aW9uIFBUZCgpe3JldHVybiBRU2QodGhpcy5hLmEpLml9O3ZhciBtNj1tZGIocXRlLCdFT3BlcmF0aW9uSW1wbC8xLzEnLDEzNDApO2JjYigxMzQxLDU0NSxQdmUsVVRkKTtfLmlpPWZ1bmN0aW9uIFlUZChhLGIpe3ZhciBjLGQ7cmV0dXJuIGM9QkQoV3hkKHRoaXMsYSxiKSw4Nyksb2lkKHRoaXMuZSkmJkdMZCh0aGlzLG5ldyBFU2QodGhpcy5hLDcsKGpHZCgpLGJHZCksbWViKGIpLChkPWMuYyxkP2Q6WUZkKSxhKSksY307Xy5qaj1mdW5jdGlvbiBaVGQoYSxiKXtyZXR1cm4gUlRkKHRoaXMsQkQoYSw4NyksYil9O18ua2o9ZnVuY3Rpb24gJFRkKGEsYil7cmV0dXJuIFNUZCh0aGlzLEJEKGEsODcpLGIpfTtfLmxqPWZ1bmN0aW9uIF9UZChhLGIsYyl7cmV0dXJuIFRUZCh0aGlzLEJEKGEsODcpLEJEKGIsODcpLGMpfTtfLlppPWZ1bmN0aW9uIFZUZChhLGIsYyxkLGUpe3N3aXRjaChhKXtjYXNlIDM6e3JldHVybiBGTGQodGhpcyxhLGIsYyxkLHRoaXMuaT4xKX1jYXNlIDU6e3JldHVybiBGTGQodGhpcyxhLGIsYyxkLHRoaXMuaS1CRChjLDE1KS5nYygpPjApfWRlZmF1bHQ6e3JldHVybiBuZXcgcFNkKHRoaXMuZSxhLHRoaXMuYyxiLGMsZCx0cnVlKX19fTtfLmlqPWZ1bmN0aW9uIFdUZCgpe3JldHVybiB0cnVlfTtfLmZqPWZ1bmN0aW9uIFhUZCgpe3JldHVybiBRVGQodGhpcyl9O18uWGo9ZnVuY3Rpb24gYVVkKCl7VXhkKHRoaXMpfTt2YXIgbzY9bWRiKHF0ZSwnRU9wZXJhdGlvbkltcGwvMicsMTM0MSk7YmNiKDQ5OCwxLHsxOTM4OjEsNDk4OjF9LGJVZCk7dmFyIHE2PW1kYihxdGUsJ0VQYWNrYWdlSW1wbC8xJyw0OTgpO2JjYigxNiw4NSxQdmUsY1VkKTtfLnprPWZ1bmN0aW9uIGRVZCgpe3JldHVybiB0aGlzLmR9O18uQWs9ZnVuY3Rpb24gZVVkKCl7cmV0dXJuIHRoaXMuYn07Xy5Eaz1mdW5jdGlvbiBmVWQoKXtyZXR1cm4gdHJ1ZX07Xy5iPTA7dmFyIGI5PW1kYih5dmUsJ0VPYmplY3RDb250YWlubWVudFdpdGhJbnZlcnNlRUxpc3QnLDE2KTtiY2IoMzUzLDE2LFB2ZSxnVWQpO18uRWs9ZnVuY3Rpb24gaFVkKCl7cmV0dXJuIHRydWV9O18ubGk9ZnVuY3Rpb24gaVVkKGEsYil7cmV0dXJuIElMZCh0aGlzLGEsQkQoYiw1NikpfTt2YXIgJDg9bWRiKHl2ZSwnRU9iamVjdENvbnRhaW5tZW50V2l0aEludmVyc2VFTGlzdC9SZXNvbHZpbmcnLDM1Myk7YmNiKDI5OCwzNTMsUHZlLGpVZCk7Xy5jaT1mdW5jdGlvbiBrVWQoKXt0aGlzLmEudGI9bnVsbH07dmFyIHI2PW1kYihxdGUsJ0VQYWNrYWdlSW1wbC8yJywyOTgpO2JjYigxMjI4LDEse30sbFVkKTt2YXIgczY9bWRiKHF0ZSwnRVBhY2thZ2VJbXBsLzMnLDEyMjgpO2JjYig3MTgsNDMsZmtlLG9VZCk7Xy5fYj1mdW5jdGlvbiBwVWQoYSl7cmV0dXJuIE5EKGEpP1FoYih0aGlzLGEpOiEhaXJiKHRoaXMuZixhKX07dmFyIHU2PW1kYihxdGUsJ0VQYWNrYWdlUmVnaXN0cnlJbXBsJyw3MTgpO2JjYig1MDksMjg0LHsxMDU6MSw5MjoxLDkwOjEsMTQ3OjEsMTkxOjEsNTY6MSwyMDE3OjEsMTA4OjEsNDcyOjEsNDk6MSw5NzoxLDE1MDoxLDUwOToxLDI4NDoxLDExNDoxLDExNToxfSxyVWQpO18uUWc9ZnVuY3Rpb24gc1VkKGEpe3JldHVybiBxVWQodGhpcyxhKX07Xy5fZz1mdW5jdGlvbiB0VWQoYSxiLGMpe3ZhciBkLGUsZjtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiAhdGhpcy5BYiYmKHRoaXMuQWI9bmV3IGNVZChhNSx0aGlzLDAsMykpLHRoaXMuQWI7Y2FzZSAxOnJldHVybiB0aGlzLnpiO2Nhc2UgMjpyZXR1cm4gQmNiKCksKHRoaXMuQmImMjU2KSE9MD90cnVlOmZhbHNlO2Nhc2UgMzpyZXR1cm4gQmNiKCksKHRoaXMuQmImNTEyKSE9MD90cnVlOmZhbHNlO2Nhc2UgNDpyZXR1cm4gbWViKHRoaXMucyk7Y2FzZSA1OnJldHVybiBtZWIodGhpcy50KTtjYXNlIDY6cmV0dXJuIEJjYigpLGY9dGhpcy50LGY+MXx8Zj09LTE/dHJ1ZTpmYWxzZTtjYXNlIDc6cmV0dXJuIEJjYigpLGU9dGhpcy5zLGU+PTE/dHJ1ZTpmYWxzZTtjYXNlIDg6aWYoYilyZXR1cm4gd0lkKHRoaXMpO3JldHVybiB0aGlzLnI7Y2FzZSA5OnJldHVybiB0aGlzLnE7Y2FzZSAxMDpyZXR1cm4gdGhpcy5EYj4+MTY9PTEwP0JEKHRoaXMuQ2IsNTkpOm51bGw7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoakdkKCksZEdkKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/ZEdkOmQpLGEpLGIsYyl9O18uaGg9ZnVuY3Rpb24gdVVkKGEsYixjKXt2YXIgZCxlLGY7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxTeGQodGhpcy5BYixhLGMpO2Nhc2UgMTA6ISF0aGlzLkNiJiYoYz0oZT10aGlzLkRiPj4xNixlPj0wP3FVZCh0aGlzLGMpOnRoaXMuQ2IuaWgodGhpcywtMS1lLG51bGwsYykpKTtyZXR1cm4gX2hkKHRoaXMsYSwxMCxjKTt9cmV0dXJuIGY9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLGRHZCk6ZCksYiksNjYpLGYuTmooKS5Raih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksZEdkKSksYSxjKX07Xy5qaD1mdW5jdGlvbiB2VWQoYSxiLGMpe3ZhciBkLGU7c3dpdGNoKGIpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSxUeGQodGhpcy5BYixhLGMpO2Nhc2UgOTpyZXR1cm4gdklkKHRoaXMsYyk7Y2FzZSAxMDpyZXR1cm4gX2hkKHRoaXMsbnVsbCwxMCxjKTt9cmV0dXJuIGU9QkQoWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/KGpHZCgpLGRHZCk6ZCksYiksNjYpLGUuTmooKS5Saih0aGlzLHlqZCh0aGlzKSxiLWFMZCgoakdkKCksZEdkKSksYSxjKX07Xy5saD1mdW5jdGlvbiB3VWQoYSl7dmFyIGIsYyxkO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuICh0aGlzLkJiJjI1Nik9PTA7Y2FzZSAzOnJldHVybiAodGhpcy5CYiY1MTIpPT0wO2Nhc2UgNDpyZXR1cm4gdGhpcy5zIT0wO2Nhc2UgNTpyZXR1cm4gdGhpcy50IT0xO2Nhc2UgNjpyZXR1cm4gZD10aGlzLnQsZD4xfHxkPT0tMTtjYXNlIDc6cmV0dXJuIGM9dGhpcy5zLGM+PTE7Y2FzZSA4OnJldHVybiAhIXRoaXMuciYmIXRoaXMucS5lJiZMUWQodGhpcy5xKS5pPT0wO2Nhc2UgOTpyZXR1cm4gISF0aGlzLnEmJiEoISF0aGlzLnImJiF0aGlzLnEuZSYmTFFkKHRoaXMucSkuaT09MCk7Y2FzZSAxMDpyZXR1cm4gISEodGhpcy5EYj4+MTY9PTEwP0JEKHRoaXMuQ2IsNTkpOm51bGwpO31yZXR1cm4gY2lkKHRoaXMsYS1hTGQoKGpHZCgpLGRHZCkpLFhLZCgoYj1CRChBamQodGhpcywxNiksMjYpLCFiP2RHZDpiKSxhKSl9O18uemg9ZnVuY3Rpb24geFVkKCl7cmV0dXJuIGpHZCgpLGRHZH07dmFyIHY2PW1kYihxdGUsJ0VQYXJhbWV0ZXJJbXBsJyw1MDkpO2JjYig5OSw0NDksezEwNToxLDkyOjEsOTA6MSwxNDc6MSwxOTE6MSw1NjoxLDE4OjEsMTcwOjEsNjY6MSwxMDg6MSw0NzI6MSw0OToxLDk3OjEsMTUwOjEsOTk6MSw0NDk6MSwyODQ6MSwxMTQ6MSwxMTU6MSw2Nzc6MX0sRlVkKTtfLl9nPWZ1bmN0aW9uIEdVZChhLGIsYyl7dmFyIGQsZSxmLGc7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjI1NikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDM6cmV0dXJuIEJjYigpLCh0aGlzLkJiJjUxMikhPTA/dHJ1ZTpmYWxzZTtjYXNlIDQ6cmV0dXJuIG1lYih0aGlzLnMpO2Nhc2UgNTpyZXR1cm4gbWViKHRoaXMudCk7Y2FzZSA2OnJldHVybiBCY2IoKSxnPXRoaXMudCxnPjF8fGc9PS0xP3RydWU6ZmFsc2U7Y2FzZSA3OnJldHVybiBCY2IoKSxlPXRoaXMucyxlPj0xP3RydWU6ZmFsc2U7Y2FzZSA4OmlmKGIpcmV0dXJuIHdJZCh0aGlzKTtyZXR1cm4gdGhpcy5yO2Nhc2UgOTpyZXR1cm4gdGhpcy5xO2Nhc2UgMTA6cmV0dXJuIEJjYigpLCh0aGlzLkJiJnp0ZSkhPTA/dHJ1ZTpmYWxzZTtjYXNlIDExOnJldHVybiBCY2IoKSwodGhpcy5CYiZEdmUpIT0wP3RydWU6ZmFsc2U7Y2FzZSAxMjpyZXR1cm4gQmNiKCksKHRoaXMuQmImUmplKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTM6cmV0dXJuIHRoaXMuajtjYXNlIDE0OnJldHVybiBWSWQodGhpcyk7Y2FzZSAxNTpyZXR1cm4gQmNiKCksKHRoaXMuQmImQ3ZlKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTY6cmV0dXJuIEJjYigpLCh0aGlzLkJiJm9pZSkhPTA/dHJ1ZTpmYWxzZTtjYXNlIDE3OnJldHVybiBXSWQodGhpcyk7Y2FzZSAxODpyZXR1cm4gQmNiKCksKHRoaXMuQmImb3RlKSE9MD90cnVlOmZhbHNlO2Nhc2UgMTk6cmV0dXJuIEJjYigpLGY9elVkKHRoaXMpLCEhZiYmKGYuQmImb3RlKSE9MD90cnVlOmZhbHNlO2Nhc2UgMjA6cmV0dXJuIEJjYigpLCh0aGlzLkJiJlRqZSkhPTA/dHJ1ZTpmYWxzZTtjYXNlIDIxOmlmKGIpcmV0dXJuIHpVZCh0aGlzKTtyZXR1cm4gdGhpcy5iO2Nhc2UgMjI6aWYoYilyZXR1cm4gQVVkKHRoaXMpO3JldHVybiB5VWQodGhpcyk7Y2FzZSAyMzpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgXzRkKGI1LHRoaXMsMjMpKSx0aGlzLmE7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoakdkKCksZUdkKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/ZUdkOmQpLGEpLGIsYyl9O18ubGg9ZnVuY3Rpb24gSFVkKGEpe3ZhciBiLGMsZCxlO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuICh0aGlzLkJiJjI1Nik9PTA7Y2FzZSAzOnJldHVybiAodGhpcy5CYiY1MTIpPT0wO2Nhc2UgNDpyZXR1cm4gdGhpcy5zIT0wO2Nhc2UgNTpyZXR1cm4gdGhpcy50IT0xO2Nhc2UgNjpyZXR1cm4gZT10aGlzLnQsZT4xfHxlPT0tMTtjYXNlIDc6cmV0dXJuIGM9dGhpcy5zLGM+PTE7Y2FzZSA4OnJldHVybiAhIXRoaXMuciYmIXRoaXMucS5lJiZMUWQodGhpcy5xKS5pPT0wO2Nhc2UgOTpyZXR1cm4gISF0aGlzLnEmJiEoISF0aGlzLnImJiF0aGlzLnEuZSYmTFFkKHRoaXMucSkuaT09MCk7Y2FzZSAxMDpyZXR1cm4gKHRoaXMuQmImenRlKT09MDtjYXNlIDExOnJldHVybiAodGhpcy5CYiZEdmUpIT0wO2Nhc2UgMTI6cmV0dXJuICh0aGlzLkJiJlJqZSkhPTA7Y2FzZSAxMzpyZXR1cm4gdGhpcy5qIT1udWxsO2Nhc2UgMTQ6cmV0dXJuIFZJZCh0aGlzKSE9bnVsbDtjYXNlIDE1OnJldHVybiAodGhpcy5CYiZDdmUpIT0wO2Nhc2UgMTY6cmV0dXJuICh0aGlzLkJiJm9pZSkhPTA7Y2FzZSAxNzpyZXR1cm4gISFXSWQodGhpcyk7Y2FzZSAxODpyZXR1cm4gKHRoaXMuQmImb3RlKSE9MDtjYXNlIDE5OnJldHVybiBkPXpVZCh0aGlzKSwhIWQmJihkLkJiJm90ZSkhPTA7Y2FzZSAyMDpyZXR1cm4gKHRoaXMuQmImVGplKT09MDtjYXNlIDIxOnJldHVybiAhIXRoaXMuYjtjYXNlIDIyOnJldHVybiAhIXlVZCh0aGlzKTtjYXNlIDIzOnJldHVybiAhIXRoaXMuYSYmdGhpcy5hLmkhPTA7fXJldHVybiBjaWQodGhpcyxhLWFMZCgoakdkKCksZUdkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/ZUdkOmIpLGEpKX07Xy5zaD1mdW5jdGlvbiBJVWQoYSxiKXt2YXIgYyxkO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTt5dGQodGhpcy5BYixCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTpjSmQodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMjpCSWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAzOkNJZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDQ6QUlkKHRoaXMsQkQoYiwxOSkuYSk7cmV0dXJuO2Nhc2UgNTpESWQodGhpcyxCRChiLDE5KS5hKTtyZXR1cm47Y2FzZSA4OnlJZCh0aGlzLEJEKGIsMTM4KSk7cmV0dXJuO2Nhc2UgOTpkPXhJZCh0aGlzLEJEKGIsODcpLG51bGwpOyEhZCYmZC5GaSgpO3JldHVybjtjYXNlIDEwOlpJZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDExOmZKZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDEyOmRKZCh0aGlzLENjYihERChiKSkpO3JldHVybjtjYXNlIDEzOiRJZCh0aGlzLEdEKGIpKTtyZXR1cm47Y2FzZSAxNTplSmQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAxNjphSmQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAxODpCVWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAyMDpFVWQodGhpcyxDY2IoREQoYikpKTtyZXR1cm47Y2FzZSAyMTpEVWQodGhpcyxCRChiLDE4KSk7cmV0dXJuO2Nhc2UgMjM6IXRoaXMuYSYmKHRoaXMuYT1uZXcgXzRkKGI1LHRoaXMsMjMpKTtVeGQodGhpcy5hKTshdGhpcy5hJiYodGhpcy5hPW5ldyBfNGQoYjUsdGhpcywyMykpO3l0ZCh0aGlzLmEsQkQoYiwxNCkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLGVHZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP2VHZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBKVWQoKXtyZXR1cm4gakdkKCksZUdkfTtfLkJoPWZ1bmN0aW9uIEtVZChhKXt2YXIgYixjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7cmV0dXJuO2Nhc2UgMTpKRCh0aGlzLkNiLDg4KSYmWE1kKCRLZChCRCh0aGlzLkNiLDg4KSksNCk7cG5kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMjpCSWQodGhpcyx0cnVlKTtyZXR1cm47Y2FzZSAzOkNJZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDQ6QUlkKHRoaXMsMCk7cmV0dXJuO2Nhc2UgNTpESWQodGhpcywxKTtyZXR1cm47Y2FzZSA4OnlJZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDk6Yz14SWQodGhpcyxudWxsLG51bGwpOyEhYyYmYy5GaSgpO3JldHVybjtjYXNlIDEwOlpJZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDExOmZKZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxMjpkSmQodGhpcyxmYWxzZSk7cmV0dXJuO2Nhc2UgMTM6dGhpcy5pPW51bGw7X0lkKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMTU6ZUpkKHRoaXMsZmFsc2UpO3JldHVybjtjYXNlIDE2OmFKZCh0aGlzLGZhbHNlKTtyZXR1cm47Y2FzZSAxODpDVWQodGhpcyxmYWxzZSk7SkQodGhpcy5DYiw4OCkmJlhNZCgkS2QoQkQodGhpcy5DYiw4OCkpLDIpO3JldHVybjtjYXNlIDIwOkVVZCh0aGlzLHRydWUpO3JldHVybjtjYXNlIDIxOkRVZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDIzOiF0aGlzLmEmJih0aGlzLmE9bmV3IF80ZChiNSx0aGlzLDIzKSk7VXhkKHRoaXMuYSk7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoakdkKCksZUdkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/ZUdkOmIpLGEpKX07Xy5HaD1mdW5jdGlvbiBMVWQoKXtBVWQodGhpcyk7YTJkKHExZCgoTzZkKCksTTZkKSx0aGlzKSk7d0lkKHRoaXMpO3RoaXMuQmJ8PTF9O18uTGo9ZnVuY3Rpb24gTVVkKCl7cmV0dXJuIHpVZCh0aGlzKX07Xy5xaz1mdW5jdGlvbiBOVWQoKXt2YXIgYTtyZXR1cm4gYT16VWQodGhpcyksISFhJiYoYS5CYiZvdGUpIT0wfTtfLnJrPWZ1bmN0aW9uIE9VZCgpe3JldHVybiAodGhpcy5CYiZvdGUpIT0wfTtfLnNrPWZ1bmN0aW9uIFBVZCgpe3JldHVybiAodGhpcy5CYiZUamUpIT0wfTtfLm5rPWZ1bmN0aW9uIFFVZChhLGIpe3RoaXMuYz1udWxsO3JldHVybiB6SWQodGhpcyxhLGIpfTtfLkliPWZ1bmN0aW9uIFJVZCgpe3ZhciBhO2lmKCh0aGlzLkRiJjY0KSE9MClyZXR1cm4gZ0pkKHRoaXMpO2E9bmV3IEpmYihnSmQodGhpcykpO2EuYSs9JyAoY29udGFpbm1lbnQ6ICc7RmZiKGEsKHRoaXMuQmImb3RlKSE9MCk7YS5hKz0nLCByZXNvbHZlUHJveGllczogJztGZmIoYSwodGhpcy5CYiZUamUpIT0wKTthLmErPScpJztyZXR1cm4gYS5hfTt2YXIgdzY9bWRiKHF0ZSwnRVJlZmVyZW5jZUltcGwnLDk5KTtiY2IoNTQ4LDExNSx7MTA1OjEsNDI6MSw5MjoxLDkwOjEsMTMzOjEsNTY6MSwxMDg6MSw0OToxLDk3OjEsNTQ4OjEsMTE0OjEsMTE1OjF9LFhVZCk7Xy5GYj1mdW5jdGlvbiBiVmQoYSl7cmV0dXJuIHRoaXM9PT1hfTtfLmNkPWZ1bmN0aW9uIGRWZCgpe3JldHVybiB0aGlzLmJ9O18uZGQ9ZnVuY3Rpb24gZVZkKCl7cmV0dXJuIHRoaXMuY307Xy5IYj1mdW5jdGlvbiBmVmQoKXtyZXR1cm4gRkNiKHRoaXMpfTtfLlVoPWZ1bmN0aW9uIGhWZChhKXtTVWQodGhpcyxHRChhKSl9O18uZWQ9ZnVuY3Rpb24gaVZkKGEpe3JldHVybiBXVWQodGhpcyxHRChhKSl9O18uX2c9ZnVuY3Rpb24gWVVkKGEsYixjKXt2YXIgZDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLmI7Y2FzZSAxOnJldHVybiB0aGlzLmM7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoakdkKCksZkdkKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/ZkdkOmQpLGEpLGIsYyl9O18ubGg9ZnVuY3Rpb24gWlVkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIHRoaXMuYiE9bnVsbDtjYXNlIDE6cmV0dXJuIHRoaXMuYyE9bnVsbDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxmR2QpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9mR2Q6YiksYSkpfTtfLnNoPWZ1bmN0aW9uICRVZChhLGIpe3ZhciBjO3N3aXRjaChhKXtjYXNlIDA6VFVkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDE6VlVkKHRoaXMsR0QoYikpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLGZHZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP2ZHZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBfVWQoKXtyZXR1cm4gakdkKCksZkdkfTtfLkJoPWZ1bmN0aW9uIGFWZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOlVVZCh0aGlzLG51bGwpO3JldHVybjtjYXNlIDE6VlVkKHRoaXMsbnVsbCk7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoakdkKCksZkdkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/ZkdkOmIpLGEpKX07Xy5TaD1mdW5jdGlvbiBjVmQoKXt2YXIgYTtpZih0aGlzLmE9PS0xKXthPXRoaXMuYjt0aGlzLmE9YT09bnVsbD8wOkxDYihhKX1yZXR1cm4gdGhpcy5hfTtfLlRoPWZ1bmN0aW9uIGdWZChhKXt0aGlzLmE9YX07Xy5JYj1mdW5jdGlvbiBqVmQoKXt2YXIgYTtpZigodGhpcy5EYiY2NCkhPTApcmV0dXJuIEVpZCh0aGlzKTthPW5ldyBKZmIoRWlkKHRoaXMpKTthLmErPScgKGtleTogJztFZmIoYSx0aGlzLmIpO2EuYSs9JywgdmFsdWU6ICc7RWZiKGEsdGhpcy5jKTthLmErPScpJztyZXR1cm4gYS5hfTtfLmE9LTE7Xy5iPW51bGw7Xy5jPW51bGw7dmFyIHg2PW1kYihxdGUsJ0VTdHJpbmdUb1N0cmluZ01hcEVudHJ5SW1wbCcsNTQ4KTt2YXIgRDk9b2RiKHl2ZSwnRmVhdHVyZU1hcC9FbnRyeS9JbnRlcm5hbCcpO2JjYig1NjUsMSxYdmUpO18uT2s9ZnVuY3Rpb24gbVZkKGEpe3JldHVybiB0aGlzLlBrKEJEKGEsNDkpKX07Xy5Qaz1mdW5jdGlvbiBuVmQoYSl7cmV0dXJuIHRoaXMuT2soYSl9O18uRmI9ZnVuY3Rpb24gb1ZkKGEpe3ZhciBiLGM7aWYodGhpcz09PWEpe3JldHVybiB0cnVlfWVsc2UgaWYoSkQoYSw3Mikpe2I9QkQoYSw3Mik7aWYoYi5haygpPT10aGlzLmMpe2M9dGhpcy5kZCgpO3JldHVybiBjPT1udWxsP2IuZGQoKT09bnVsbDpwYihjLGIuZGQoKSl9ZWxzZXtyZXR1cm4gZmFsc2V9fWVsc2V7cmV0dXJuIGZhbHNlfX07Xy5haz1mdW5jdGlvbiBwVmQoKXtyZXR1cm4gdGhpcy5jfTtfLkhiPWZ1bmN0aW9uIHFWZCgpe3ZhciBhO2E9dGhpcy5kZCgpO3JldHVybiB0Yih0aGlzLmMpXihhPT1udWxsPzA6dGIoYSkpfTtfLkliPWZ1bmN0aW9uIHJWZCgpe3ZhciBhLGI7YT10aGlzLmM7Yj1iS2QoYS5IaigpKS5QaCgpO2EubmUoKTtyZXR1cm4gKGIhPW51bGwmJmIubGVuZ3RoIT0wP2IrJzonK2EubmUoKTphLm5lKCkpKyc9Jyt0aGlzLmRkKCl9O3ZhciB5Nj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0Jhc2ljRmVhdHVyZU1hcEVudHJ5Jyw1NjUpO2JjYig3NzYsNTY1LFh2ZSx1VmQpO18uUGs9ZnVuY3Rpb24gdlZkKGEpe3JldHVybiBuZXcgdVZkKHRoaXMuYyxhKX07Xy5kZD1mdW5jdGlvbiB3VmQoKXtyZXR1cm4gdGhpcy5hfTtfLlFrPWZ1bmN0aW9uIHhWZChhLGIsYyl7cmV0dXJuIHNWZCh0aGlzLGEsdGhpcy5hLGIsYyl9O18uUms9ZnVuY3Rpb24geVZkKGEsYixjKXtyZXR1cm4gdFZkKHRoaXMsYSx0aGlzLmEsYixjKX07dmFyIHo2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvQ29udGFpbm1lbnRVcGRhdGluZ0ZlYXR1cmVNYXBFbnRyeScsNzc2KTtiY2IoMTMxNCwxLHt9LHpWZCk7Xy5Qaj1mdW5jdGlvbiBBVmQoYSxiLGMsZCxlKXt2YXIgZjtmPUJEKGdpZChhLHRoaXMuYiksMjE1KTtyZXR1cm4gZi5ubCh0aGlzLmEpLldqKGQpfTtfLlFqPWZ1bmN0aW9uIEJWZChhLGIsYyxkLGUpe3ZhciBmO2Y9QkQoZ2lkKGEsdGhpcy5iKSwyMTUpO3JldHVybiBmLmVsKHRoaXMuYSxkLGUpfTtfLlJqPWZ1bmN0aW9uIENWZChhLGIsYyxkLGUpe3ZhciBmO2Y9QkQoZ2lkKGEsdGhpcy5iKSwyMTUpO3JldHVybiBmLmZsKHRoaXMuYSxkLGUpfTtfLlNqPWZ1bmN0aW9uIERWZChhLGIsYyl7dmFyIGQ7ZD1CRChnaWQoYSx0aGlzLmIpLDIxNSk7cmV0dXJuIGQubmwodGhpcy5hKS5maigpfTtfLlRqPWZ1bmN0aW9uIEVWZChhLGIsYyxkKXt2YXIgZTtlPUJEKGdpZChhLHRoaXMuYiksMjE1KTtlLm5sKHRoaXMuYSkuV2IoZCl9O18uVWo9ZnVuY3Rpb24gRlZkKGEsYixjKXtyZXR1cm4gQkQoZ2lkKGEsdGhpcy5iKSwyMTUpLm5sKHRoaXMuYSl9O18uVmo9ZnVuY3Rpb24gR1ZkKGEsYixjKXt2YXIgZDtkPUJEKGdpZChhLHRoaXMuYiksMjE1KTtkLm5sKHRoaXMuYSkuWGooKX07dmFyIEE2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVGZWF0dXJlTWFwRGVsZWdhdG9yJywxMzE0KTtiY2IoODksMSx7fSxJVmQsSlZkLEtWZCxMVmQpO18uUGo9ZnVuY3Rpb24gTVZkKGEsYixjLGQsZSl7dmFyIGY7Zj1iLkNoKGMpO2Y9PW51bGwmJmIuRGgoYyxmPUhWZCh0aGlzLGEpKTtpZighZSl7c3dpdGNoKHRoaXMuZSl7Y2FzZSA1MDpjYXNlIDQxOnJldHVybiBCRChmLDU4OSkuc2ooKTtjYXNlIDQwOnJldHVybiBCRChmLDIxNSkua2woKTt9fXJldHVybiBmfTtfLlFqPWZ1bmN0aW9uIE5WZChhLGIsYyxkLGUpe3ZhciBmLGc7Zz1iLkNoKGMpO2c9PW51bGwmJmIuRGgoYyxnPUhWZCh0aGlzLGEpKTtmPUJEKGcsNjkpLmxrKGQsZSk7cmV0dXJuIGZ9O18uUmo9ZnVuY3Rpb24gT1ZkKGEsYixjLGQsZSl7dmFyIGY7Zj1iLkNoKGMpO2YhPW51bGwmJihlPUJEKGYsNjkpLm1rKGQsZSkpO3JldHVybiBlfTtfLlNqPWZ1bmN0aW9uIFBWZChhLGIsYyl7dmFyIGQ7ZD1iLkNoKGMpO3JldHVybiBkIT1udWxsJiZCRChkLDc2KS5maigpfTtfLlRqPWZ1bmN0aW9uIFFWZChhLGIsYyxkKXt2YXIgZTtlPUJEKGIuQ2goYyksNzYpOyFlJiZiLkRoKGMsZT1IVmQodGhpcyxhKSk7ZS5XYihkKX07Xy5Vaj1mdW5jdGlvbiBSVmQoYSxiLGMpe3ZhciBkLGU7ZT1iLkNoKGMpO2U9PW51bGwmJmIuRGgoYyxlPUhWZCh0aGlzLGEpKTtpZihKRChlLDc2KSl7cmV0dXJuIEJEKGUsNzYpfWVsc2V7ZD1CRChiLkNoKGMpLDE1KTtyZXR1cm4gbmV3IGlZZChkKX19O18uVmo9ZnVuY3Rpb24gU1ZkKGEsYixjKXt2YXIgZDtkPUJEKGIuQ2goYyksNzYpOyFkJiZiLkRoKGMsZD1IVmQodGhpcyxhKSk7ZC5YaigpfTtfLmI9MDtfLmU9MDt2YXIgQjY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZU1hbnknLDg5KTtiY2IoNTA0LDEse30pO18uUWo9ZnVuY3Rpb24gV1ZkKGEsYixjLGQsZSl7dGhyb3cgdmJiKG5ldyBiZ2IpfTtfLlJqPWZ1bmN0aW9uIFhWZChhLGIsYyxkLGUpe3Rocm93IHZiYihuZXcgYmdiKX07Xy5Vaj1mdW5jdGlvbiBZVmQoYSxiLGMpe3JldHVybiBuZXcgWlZkKHRoaXMsYSxiLGMpfTt2YXIgVFZkO3ZhciBpNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlJyw1MDQpO2JjYigxMzMxLDEsenZlLFpWZCk7Xy5Xaj1mdW5jdGlvbiAkVmQoYSl7cmV0dXJuIHRoaXMuYS5Qaih0aGlzLmMsdGhpcy5kLHRoaXMuYixhLHRydWUpfTtfLmZqPWZ1bmN0aW9uIF9WZCgpe3JldHVybiB0aGlzLmEuU2oodGhpcy5jLHRoaXMuZCx0aGlzLmIpfTtfLldiPWZ1bmN0aW9uIGFXZChhKXt0aGlzLmEuVGoodGhpcy5jLHRoaXMuZCx0aGlzLmIsYSl9O18uWGo9ZnVuY3Rpb24gYldkKCl7dGhpcy5hLlZqKHRoaXMuYyx0aGlzLmQsdGhpcy5iKX07Xy5iPTA7dmFyIEM2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGUvMScsMTMzMSk7YmNiKDc2OSw1MDQse30sY1dkKTtfLlBqPWZ1bmN0aW9uIGRXZChhLGIsYyxkLGUpe3JldHVybiBOaWQoYSxhLmVoKCksYS5WZygpKT09dGhpcy5iP3RoaXMuc2soKSYmZD9haWQoYSk6YS5laCgpOm51bGx9O18uUWo9ZnVuY3Rpb24gZVdkKGEsYixjLGQsZSl7dmFyIGYsZzshIWEuZWgoKSYmKGU9KGY9YS5WZygpLGY+PTA/YS5RZyhlKTphLmVoKCkuaWgoYSwtMS1mLG51bGwsZSkpKTtnPWJMZChhLlRnKCksdGhpcy5lKTtyZXR1cm4gYS5TZyhkLGcsZSl9O18uUmo9ZnVuY3Rpb24gZldkKGEsYixjLGQsZSl7dmFyIGY7Zj1iTGQoYS5UZygpLHRoaXMuZSk7cmV0dXJuIGEuU2cobnVsbCxmLGUpfTtfLlNqPWZ1bmN0aW9uIGdXZChhLGIsYyl7dmFyIGQ7ZD1iTGQoYS5UZygpLHRoaXMuZSk7cmV0dXJuICEhYS5laCgpJiZhLlZnKCk9PWR9O18uVGo9ZnVuY3Rpb24gaFdkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7aWYoZCE9bnVsbCYmIWZLZCh0aGlzLmEsZCkpe3Rocm93IHZiYihuZXcgQ2RiKFl2ZSsoSkQoZCw1Nik/Z0xkKEJEKGQsNTYpLlRnKCkpOmlkYihyYihkKSkpK1p2ZSt0aGlzLmErXCInXCIpKX1lPWEuZWgoKTtnPWJMZChhLlRnKCksdGhpcy5lKTtpZihQRChkKSE9PVBEKGUpfHxhLlZnKCkhPWcmJmQhPW51bGwpe2lmKHA2ZChhLEJEKGQsNTYpKSl0aHJvdyB2YmIobmV3IFdkYihzdGUrYS5JYigpKSk7aT1udWxsOyEhZSYmKGk9KGY9YS5WZygpLGY+PTA/YS5RZyhpKTphLmVoKCkuaWgoYSwtMS1mLG51bGwsaSkpKTtoPUJEKGQsNDkpOyEhaCYmKGk9aC5naChhLGJMZChoLlRnKCksdGhpcy5iKSxudWxsLGkpKTtpPWEuU2coaCxnLGkpOyEhaSYmaS5GaSgpfWVsc2V7YS5MZygpJiZhLk1nKCkmJlVoZChhLG5ldyBuU2QoYSwxLGcsZCxkKSl9fTtfLlZqPWZ1bmN0aW9uIGlXZChhLGIsYyl7dmFyIGQsZSxmLGc7ZD1hLmVoKCk7aWYoZCl7Zz0oZT1hLlZnKCksZT49MD9hLlFnKG51bGwpOmEuZWgoKS5paChhLC0xLWUsbnVsbCxudWxsKSk7Zj1iTGQoYS5UZygpLHRoaXMuZSk7Zz1hLlNnKG51bGwsZixnKTshIWcmJmcuRmkoKX1lbHNle2EuTGcoKSYmYS5NZygpJiZVaGQoYSxuZXcgRFNkKGEsMSx0aGlzLmUsbnVsbCxudWxsKSl9fTtfLnNrPWZ1bmN0aW9uIGpXZCgpe3JldHVybiBmYWxzZX07dmFyIEU2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVDb250YWluZXInLDc2OSk7YmNiKDEzMTUsNzY5LHt9LGtXZCk7Xy5zaz1mdW5jdGlvbiBsV2QoKXtyZXR1cm4gdHJ1ZX07dmFyIEQ2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVDb250YWluZXJSZXNvbHZpbmcnLDEzMTUpO2JjYig1NjMsNTA0LHt9KTtfLlBqPWZ1bmN0aW9uIG9XZChhLGIsYyxkLGUpe3ZhciBmO3JldHVybiBmPWIuQ2goYyksZj09bnVsbD90aGlzLmI6UEQoZik9PT1QRChUVmQpP251bGw6Zn07Xy5Taj1mdW5jdGlvbiBwV2QoYSxiLGMpe3ZhciBkO2Q9Yi5DaChjKTtyZXR1cm4gZCE9bnVsbCYmKFBEKGQpPT09UEQoVFZkKXx8IXBiKGQsdGhpcy5iKSl9O18uVGo9ZnVuY3Rpb24gcVdkKGEsYixjLGQpe3ZhciBlLGY7aWYoYS5MZygpJiZhLk1nKCkpe2U9KGY9Yi5DaChjKSxmPT1udWxsP3RoaXMuYjpQRChmKT09PVBEKFRWZCk/bnVsbDpmKTtpZihkPT1udWxsKXtpZih0aGlzLmMhPW51bGwpe2IuRGgoYyxudWxsKTtkPXRoaXMuYn1lbHNlIHRoaXMuYiE9bnVsbD9iLkRoKGMsVFZkKTpiLkRoKGMsbnVsbCl9ZWxzZXt0aGlzLlNrKGQpO2IuRGgoYyxkKX1VaGQoYSx0aGlzLmQuVGsoYSwxLHRoaXMuZSxlLGQpKX1lbHNle2lmKGQ9PW51bGwpe3RoaXMuYyE9bnVsbD9iLkRoKGMsbnVsbCk6dGhpcy5iIT1udWxsP2IuRGgoYyxUVmQpOmIuRGgoYyxudWxsKX1lbHNle3RoaXMuU2soZCk7Yi5EaChjLGQpfX19O18uVmo9ZnVuY3Rpb24gcldkKGEsYixjKXt2YXIgZCxlO2lmKGEuTGcoKSYmYS5NZygpKXtkPShlPWIuQ2goYyksZT09bnVsbD90aGlzLmI6UEQoZSk9PT1QRChUVmQpP251bGw6ZSk7Yi5FaChjKTtVaGQoYSx0aGlzLmQuVGsoYSwxLHRoaXMuZSxkLHRoaXMuYikpfWVsc2V7Yi5FaChjKX19O18uU2s9ZnVuY3Rpb24gc1dkKGEpe3Rocm93IHZiYihuZXcgQmRiKX07dmFyIFQ2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVEYXRhJyw1NjMpO2JjYigkdmUsMSx7fSxEV2QpO18uVGs9ZnVuY3Rpb24gRVdkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBEU2QoYSxiLGMsZCxlKX07Xy5Vaz1mdW5jdGlvbiBGV2QoYSxiLGMsZCxlLGYpe3JldHVybiBuZXcgRlNkKGEsYixjLGQsZSxmKX07dmFyIHRXZCx1V2QsdldkLHdXZCx4V2QseVdkLHpXZCxBV2QsQldkO3ZhciBONj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRGF0YS9Ob3RpZmljYXRpb25DcmVhdG9yJywkdmUpO2JjYigxMzMyLCR2ZSx7fSxHV2QpO18uVGs9ZnVuY3Rpb24gSFdkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBJU2QoYSxiLGMsQ2NiKEREKGQpKSxDY2IoREQoZSkpKX07Xy5Vaz1mdW5jdGlvbiBJV2QoYSxiLGMsZCxlLGYpe3JldHVybiBuZXcgSlNkKGEsYixjLENjYihERChkKSksQ2NiKEREKGUpKSxmKX07dmFyIEY2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVEYXRhL05vdGlmaWNhdGlvbkNyZWF0b3IvMScsMTMzMik7YmNiKDEzMzMsJHZlLHt9LEpXZCk7Xy5Uaz1mdW5jdGlvbiBLV2QoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IHJTZChhLGIsYyxCRChkLDIxNykuYSxCRChlLDIxNykuYSl9O18uVWs9ZnVuY3Rpb24gTFdkKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IHNTZChhLGIsYyxCRChkLDIxNykuYSxCRChlLDIxNykuYSxmKX07dmFyIEc2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVEYXRhL05vdGlmaWNhdGlvbkNyZWF0b3IvMicsMTMzMyk7YmNiKDEzMzQsJHZlLHt9LE1XZCk7Xy5Uaz1mdW5jdGlvbiBOV2QoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IHRTZChhLGIsYyxCRChkLDE3MikuYSxCRChlLDE3MikuYSl9O18uVWs9ZnVuY3Rpb24gT1dkKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IHVTZChhLGIsYyxCRChkLDE3MikuYSxCRChlLDE3MikuYSxmKX07dmFyIEg2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVEYXRhL05vdGlmaWNhdGlvbkNyZWF0b3IvMycsMTMzNCk7YmNiKDEzMzUsJHZlLHt9LFBXZCk7Xy5Uaz1mdW5jdGlvbiBRV2QoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IHZTZChhLGIsYyxFZGIoRUQoZCkpLEVkYihFRChlKSkpfTtfLlVrPWZ1bmN0aW9uIFJXZChhLGIsYyxkLGUsZil7cmV0dXJuIG5ldyB3U2QoYSxiLGMsRWRiKEVEKGQpKSxFZGIoRUQoZSkpLGYpfTt2YXIgSTY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGEvTm90aWZpY2F0aW9uQ3JlYXRvci80JywxMzM1KTtiY2IoMTMzNiwkdmUse30sU1dkKTtfLlRrPWZ1bmN0aW9uIFRXZChhLGIsYyxkLGUpe3JldHVybiBuZXcgeFNkKGEsYixjLEJEKGQsMTU1KS5hLEJEKGUsMTU1KS5hKX07Xy5Vaz1mdW5jdGlvbiBVV2QoYSxiLGMsZCxlLGYpe3JldHVybiBuZXcgeVNkKGEsYixjLEJEKGQsMTU1KS5hLEJEKGUsMTU1KS5hLGYpfTt2YXIgSjY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGEvTm90aWZpY2F0aW9uQ3JlYXRvci81JywxMzM2KTtiY2IoMTMzNywkdmUse30sVldkKTtfLlRrPWZ1bmN0aW9uIFdXZChhLGIsYyxkLGUpe3JldHVybiBuZXcgelNkKGEsYixjLEJEKGQsMTkpLmEsQkQoZSwxOSkuYSl9O18uVWs9ZnVuY3Rpb24gWFdkKGEsYixjLGQsZSxmKXtyZXR1cm4gbmV3IEFTZChhLGIsYyxCRChkLDE5KS5hLEJEKGUsMTkpLmEsZil9O3ZhciBLNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRGF0YS9Ob3RpZmljYXRpb25DcmVhdG9yLzYnLDEzMzcpO2JjYigxMzM4LCR2ZSx7fSxZV2QpO18uVGs9ZnVuY3Rpb24gWldkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBCU2QoYSxiLGMsQkQoZCwxNjIpLmEsQkQoZSwxNjIpLmEpfTtfLlVrPWZ1bmN0aW9uICRXZChhLGIsYyxkLGUsZil7cmV0dXJuIG5ldyBDU2QoYSxiLGMsQkQoZCwxNjIpLmEsQkQoZSwxNjIpLmEsZil9O3ZhciBMNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRGF0YS9Ob3RpZmljYXRpb25DcmVhdG9yLzcnLDEzMzgpO2JjYigxMzM5LCR2ZSx7fSxfV2QpO18uVGs9ZnVuY3Rpb24gYVhkKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBHU2QoYSxiLGMsQkQoZCwxODQpLmEsQkQoZSwxODQpLmEpfTtfLlVrPWZ1bmN0aW9uIGJYZChhLGIsYyxkLGUsZil7cmV0dXJuIG5ldyBIU2QoYSxiLGMsQkQoZCwxODQpLmEsQkQoZSwxODQpLmEsZil9O3ZhciBNNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRGF0YS9Ob3RpZmljYXRpb25DcmVhdG9yLzgnLDEzMzkpO2JjYigxMzE3LDU2Myx7fSxjWGQpO18uU2s9ZnVuY3Rpb24gZFhkKGEpe2lmKCF0aGlzLmEud2ooYSkpe3Rocm93IHZiYihuZXcgQ2RiKFl2ZStyYihhKStadmUrdGhpcy5hK1wiJ1wiKSl9fTt2YXIgTzY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGFEeW5hbWljJywxMzE3KTtiY2IoMTMxOCw1NjMse30sZVhkKTtfLlNrPWZ1bmN0aW9uIGZYZChhKXt9O3ZhciBQNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRGF0YVN0YXRpYycsMTMxOCk7YmNiKDc3MCw1NjMse30pO18uU2o9ZnVuY3Rpb24gZ1hkKGEsYixjKXt2YXIgZDtkPWIuQ2goYyk7cmV0dXJuIGQhPW51bGx9O18uVGo9ZnVuY3Rpb24gaFhkKGEsYixjLGQpe3ZhciBlLGY7aWYoYS5MZygpJiZhLk1nKCkpe2U9dHJ1ZTtmPWIuQ2goYyk7aWYoZj09bnVsbCl7ZT1mYWxzZTtmPXRoaXMuYn1lbHNlIFBEKGYpPT09UEQoVFZkKSYmKGY9bnVsbCk7aWYoZD09bnVsbCl7aWYodGhpcy5jIT1udWxsKXtiLkRoKGMsbnVsbCk7ZD10aGlzLmJ9ZWxzZXtiLkRoKGMsVFZkKX19ZWxzZXt0aGlzLlNrKGQpO2IuRGgoYyxkKX1VaGQoYSx0aGlzLmQuVWsoYSwxLHRoaXMuZSxmLGQsIWUpKX1lbHNle2lmKGQ9PW51bGwpe3RoaXMuYyE9bnVsbD9iLkRoKGMsbnVsbCk6Yi5EaChjLFRWZCl9ZWxzZXt0aGlzLlNrKGQpO2IuRGgoYyxkKX19fTtfLlZqPWZ1bmN0aW9uIGlYZChhLGIsYyl7dmFyIGQsZTtpZihhLkxnKCkmJmEuTWcoKSl7ZD10cnVlO2U9Yi5DaChjKTtpZihlPT1udWxsKXtkPWZhbHNlO2U9dGhpcy5ifWVsc2UgUEQoZSk9PT1QRChUVmQpJiYoZT1udWxsKTtiLkVoKGMpO1VoZChhLHRoaXMuZC5VayhhLDIsdGhpcy5lLGUsdGhpcy5iLGQpKX1lbHNle2IuRWgoYyl9fTt2YXIgUzY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGFVbnNldHRhYmxlJyw3NzApO2JjYigxMzE5LDc3MCx7fSxqWGQpO18uU2s9ZnVuY3Rpb24ga1hkKGEpe2lmKCF0aGlzLmEud2ooYSkpe3Rocm93IHZiYihuZXcgQ2RiKFl2ZStyYihhKStadmUrdGhpcy5hK1wiJ1wiKSl9fTt2YXIgUTY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGFVbnNldHRhYmxlRHluYW1pYycsMTMxOSk7YmNiKDEzMjAsNzcwLHt9LGxYZCk7Xy5Taz1mdW5jdGlvbiBtWGQoYSl7fTt2YXIgUjY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZURhdGFVbnNldHRhYmxlU3RhdGljJywxMzIwKTtiY2IoMzk4LDUwNCx7fSxuWGQpO18uUGo9ZnVuY3Rpb24gcFhkKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksajtqPWIuQ2goYyk7aWYodGhpcy5LaigpJiZQRChqKT09PVBEKFRWZCkpe3JldHVybiBudWxsfWVsc2UgaWYodGhpcy5zaygpJiZkJiZqIT1udWxsKXtoPUJEKGosNDkpO2lmKGgua2goKSl7aT14aWQoYSxoKTtpZihoIT1pKXtpZighZktkKHRoaXMuYSxpKSl7dGhyb3cgdmJiKG5ldyBDZGIoWXZlK3JiKGkpK1p2ZSt0aGlzLmErXCInXCIpKX1iLkRoKGMsaj1pKTtpZih0aGlzLnJrKCkpe2Y9QkQoaSw0OSk7Zz1oLmloKGEsIXRoaXMuYj8tMS1iTGQoYS5UZygpLHRoaXMuZSk6YkxkKGguVGcoKSx0aGlzLmIpLG51bGwsbnVsbCk7IWYuZWgoKSYmKGc9Zi5naChhLCF0aGlzLmI/LTEtYkxkKGEuVGcoKSx0aGlzLmUpOmJMZChmLlRnKCksdGhpcy5iKSxudWxsLGcpKTshIWcmJmcuRmkoKX1hLkxnKCkmJmEuTWcoKSYmVWhkKGEsbmV3IERTZChhLDksdGhpcy5lLGgsaSkpfX1yZXR1cm4gan1lbHNle3JldHVybiBqfX07Xy5Raj1mdW5jdGlvbiBxWGQoYSxiLGMsZCxlKXt2YXIgZixnO2c9Yi5DaChjKTtQRChnKT09PVBEKFRWZCkmJihnPW51bGwpO2IuRGgoYyxkKTtpZih0aGlzLmJqKCkpe2lmKFBEKGcpIT09UEQoZCkmJmchPW51bGwpe2Y9QkQoZyw0OSk7ZT1mLmloKGEsYkxkKGYuVGcoKSx0aGlzLmIpLG51bGwsZSl9fWVsc2UgdGhpcy5yaygpJiZnIT1udWxsJiYoZT1CRChnLDQ5KS5paChhLC0xLWJMZChhLlRnKCksdGhpcy5lKSxudWxsLGUpKTtpZihhLkxnKCkmJmEuTWcoKSl7IWUmJihlPW5ldyBJeGQoNCkpO2UuRWkobmV3IERTZChhLDEsdGhpcy5lLGcsZCkpfXJldHVybiBlfTtfLlJqPWZ1bmN0aW9uIHJYZChhLGIsYyxkLGUpe3ZhciBmO2Y9Yi5DaChjKTtQRChmKT09PVBEKFRWZCkmJihmPW51bGwpO2IuRWgoYyk7aWYoYS5MZygpJiZhLk1nKCkpeyFlJiYoZT1uZXcgSXhkKDQpKTt0aGlzLktqKCk/ZS5FaShuZXcgRFNkKGEsMix0aGlzLmUsZixudWxsKSk6ZS5FaShuZXcgRFNkKGEsMSx0aGlzLmUsZixudWxsKSl9cmV0dXJuIGV9O18uU2o9ZnVuY3Rpb24gc1hkKGEsYixjKXt2YXIgZDtkPWIuQ2goYyk7cmV0dXJuIGQhPW51bGx9O18uVGo9ZnVuY3Rpb24gdFhkKGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7aWYoZCE9bnVsbCYmIWZLZCh0aGlzLmEsZCkpe3Rocm93IHZiYihuZXcgQ2RiKFl2ZSsoSkQoZCw1Nik/Z0xkKEJEKGQsNTYpLlRnKCkpOmlkYihyYihkKSkpK1p2ZSt0aGlzLmErXCInXCIpKX1pPWIuQ2goYyk7aD1pIT1udWxsO3RoaXMuS2ooKSYmUEQoaSk9PT1QRChUVmQpJiYoaT1udWxsKTtnPW51bGw7aWYodGhpcy5iaigpKXtpZihQRChpKSE9PVBEKGQpKXtpZihpIT1udWxsKXtlPUJEKGksNDkpO2c9ZS5paChhLGJMZChlLlRnKCksdGhpcy5iKSxudWxsLGcpfWlmKGQhPW51bGwpe2U9QkQoZCw0OSk7Zz1lLmdoKGEsYkxkKGUuVGcoKSx0aGlzLmIpLG51bGwsZyl9fX1lbHNlIGlmKHRoaXMucmsoKSl7aWYoUEQoaSkhPT1QRChkKSl7aSE9bnVsbCYmKGc9QkQoaSw0OSkuaWgoYSwtMS1iTGQoYS5UZygpLHRoaXMuZSksbnVsbCxnKSk7ZCE9bnVsbCYmKGc9QkQoZCw0OSkuZ2goYSwtMS1iTGQoYS5UZygpLHRoaXMuZSksbnVsbCxnKSl9fWQ9PW51bGwmJnRoaXMuS2ooKT9iLkRoKGMsVFZkKTpiLkRoKGMsZCk7aWYoYS5MZygpJiZhLk1nKCkpe2Y9bmV3IEZTZChhLDEsdGhpcy5lLGksZCx0aGlzLktqKCkmJiFoKTtpZighZyl7VWhkKGEsZil9ZWxzZXtnLkVpKGYpO2cuRmkoKX19ZWxzZSAhIWcmJmcuRmkoKX07Xy5Waj1mdW5jdGlvbiB1WGQoYSxiLGMpe3ZhciBkLGUsZixnLGg7aD1iLkNoKGMpO2c9aCE9bnVsbDt0aGlzLktqKCkmJlBEKGgpPT09UEQoVFZkKSYmKGg9bnVsbCk7Zj1udWxsO2lmKGghPW51bGwpe2lmKHRoaXMuYmooKSl7ZD1CRChoLDQ5KTtmPWQuaWgoYSxiTGQoZC5UZygpLHRoaXMuYiksbnVsbCxmKX1lbHNlIHRoaXMucmsoKSYmKGY9QkQoaCw0OSkuaWgoYSwtMS1iTGQoYS5UZygpLHRoaXMuZSksbnVsbCxmKSl9Yi5FaChjKTtpZihhLkxnKCkmJmEuTWcoKSl7ZT1uZXcgRlNkKGEsdGhpcy5LaigpPzI6MSx0aGlzLmUsaCxudWxsLGcpO2lmKCFmKXtVaGQoYSxlKX1lbHNle2YuRWkoZSk7Zi5GaSgpfX1lbHNlICEhZiYmZi5GaSgpfTtfLmJqPWZ1bmN0aW9uIHZYZCgpe3JldHVybiBmYWxzZX07Xy5yaz1mdW5jdGlvbiB3WGQoKXtyZXR1cm4gZmFsc2V9O18uc2s9ZnVuY3Rpb24geFhkKCl7cmV0dXJuIGZhbHNlfTtfLktqPWZ1bmN0aW9uIHlYZCgpe3JldHVybiBmYWxzZX07dmFyIGg3PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0JywzOTgpO2JjYig1NjQsMzk4LHt9LHpYZCk7Xy5yaz1mdW5jdGlvbiBBWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIF82PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0Q29udGFpbm1lbnQnLDU2NCk7YmNiKDEzMjMsNTY0LHt9LEJYZCk7Xy5zaz1mdW5jdGlvbiBDWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIFU2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0Q29udGFpbm1lbnRSZXNvbHZpbmcnLDEzMjMpO2JjYig3NzIsNTY0LHt9LERYZCk7Xy5Laj1mdW5jdGlvbiBFWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIFc2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0Q29udGFpbm1lbnRVbnNldHRhYmxlJyw3NzIpO2JjYigxMzI1LDc3Mix7fSxGWGQpO18uc2s9ZnVuY3Rpb24gR1hkKCl7cmV0dXJuIHRydWV9O3ZhciBWNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRU9iamVjdENvbnRhaW5tZW50VW5zZXR0YWJsZVJlc29sdmluZycsMTMyNSk7YmNiKDY0MCw1NjQse30sSFhkKTtfLmJqPWZ1bmN0aW9uIElYZCgpe3JldHVybiB0cnVlfTt2YXIgJDY9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZUVPYmplY3RDb250YWlubWVudFdpdGhJbnZlcnNlJyw2NDApO2JjYigxMzI0LDY0MCx7fSxKWGQpO18uc2s9ZnVuY3Rpb24gS1hkKCl7cmV0dXJuIHRydWV9O3ZhciBYNj1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRU9iamVjdENvbnRhaW5tZW50V2l0aEludmVyc2VSZXNvbHZpbmcnLDEzMjQpO2JjYig3NzMsNjQwLHt9LExYZCk7Xy5Laj1mdW5jdGlvbiBNWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIFo2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0Q29udGFpbm1lbnRXaXRoSW52ZXJzZVVuc2V0dGFibGUnLDc3Myk7YmNiKDEzMjYsNzczLHt9LE5YZCk7Xy5zaz1mdW5jdGlvbiBPWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIFk2PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0Q29udGFpbm1lbnRXaXRoSW52ZXJzZVVuc2V0dGFibGVSZXNvbHZpbmcnLDEzMjYpO2JjYig2NDEsMzk4LHt9LFBYZCk7Xy5zaz1mdW5jdGlvbiBRWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIGQ3PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0UmVzb2x2aW5nJyw2NDEpO2JjYigxMzI3LDY0MSx7fSxSWGQpO18uS2o9ZnVuY3Rpb24gU1hkKCl7cmV0dXJuIHRydWV9O3ZhciBhNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRU9iamVjdFJlc29sdmluZ1Vuc2V0dGFibGUnLDEzMjcpO2JjYig3NzQsNjQxLHt9LFRYZCk7Xy5iaj1mdW5jdGlvbiBVWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIGM3PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0UmVzb2x2aW5nV2l0aEludmVyc2UnLDc3NCk7YmNiKDEzMjgsNzc0LHt9LFZYZCk7Xy5Laj1mdW5jdGlvbiBXWGQoKXtyZXR1cm4gdHJ1ZX07dmFyIGI3PW1kYihxdGUsJ0VTdHJ1Y3R1cmFsRmVhdHVyZUltcGwvSW50ZXJuYWxTZXR0aW5nRGVsZWdhdGVTaW5nbGVFT2JqZWN0UmVzb2x2aW5nV2l0aEludmVyc2VVbnNldHRhYmxlJywxMzI4KTtiY2IoMTMyMSwzOTgse30sWFhkKTtfLktqPWZ1bmN0aW9uIFlYZCgpe3JldHVybiB0cnVlfTt2YXIgZTc9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnRlcm5hbFNldHRpbmdEZWxlZ2F0ZVNpbmdsZUVPYmplY3RVbnNldHRhYmxlJywxMzIxKTtiY2IoNzcxLDM5OCx7fSxaWGQpO18uYmo9ZnVuY3Rpb24gJFhkKCl7cmV0dXJuIHRydWV9O3ZhciBnNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRU9iamVjdFdpdGhJbnZlcnNlJyw3NzEpO2JjYigxMzIyLDc3MSx7fSxfWGQpO18uS2o9ZnVuY3Rpb24gYVlkKCl7cmV0dXJuIHRydWV9O3ZhciBmNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL0ludGVybmFsU2V0dGluZ0RlbGVnYXRlU2luZ2xlRU9iamVjdFdpdGhJbnZlcnNlVW5zZXR0YWJsZScsMTMyMik7YmNiKDc3NSw1NjUsWHZlLGRZZCk7Xy5Qaz1mdW5jdGlvbiBlWWQoYSl7cmV0dXJuIG5ldyBkWWQodGhpcy5hLHRoaXMuYyxhKX07Xy5kZD1mdW5jdGlvbiBmWWQoKXtyZXR1cm4gdGhpcy5ifTtfLlFrPWZ1bmN0aW9uIGdZZChhLGIsYyl7cmV0dXJuIGJZZCh0aGlzLGEsdGhpcy5iLGMpfTtfLlJrPWZ1bmN0aW9uIGhZZChhLGIsYyl7cmV0dXJuIGNZZCh0aGlzLGEsdGhpcy5iLGMpfTt2YXIgajc9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9JbnZlcnNlVXBkYXRpbmdGZWF0dXJlTWFwRW50cnknLDc3NSk7YmNiKDEzMjksMSx6dmUsaVlkKTtfLldqPWZ1bmN0aW9uIGpZZChhKXtyZXR1cm4gdGhpcy5hfTtfLmZqPWZ1bmN0aW9uIGtZZCgpe3JldHVybiBKRCh0aGlzLmEsOTUpP0JEKHRoaXMuYSw5NSkuZmooKTohdGhpcy5hLmRjKCl9O18uV2I9ZnVuY3Rpb24gbFlkKGEpe3RoaXMuYS4kYigpO3RoaXMuYS5HYyhCRChhLDE1KSl9O18uWGo9ZnVuY3Rpb24gbVlkKCl7SkQodGhpcy5hLDk1KT9CRCh0aGlzLmEsOTUpLlhqKCk6dGhpcy5hLiRiKCl9O3ZhciBrNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL1NldHRpbmdNYW55JywxMzI5KTtiY2IoMTMzMCw1NjUsWHZlLG5ZZCk7Xy5Paz1mdW5jdGlvbiBvWWQoYSl7cmV0dXJuIG5ldyBzWWQoKFE4ZCgpLFA4ZCksdGhpcy5iLkloKHRoaXMuYSxhKSl9O18uZGQ9ZnVuY3Rpb24gcFlkKCl7cmV0dXJuIG51bGx9O18uUWs9ZnVuY3Rpb24gcVlkKGEsYixjKXtyZXR1cm4gY307Xy5Saz1mdW5jdGlvbiByWWQoYSxiLGMpe3JldHVybiBjfTt2YXIgbDc9bWRiKHF0ZSwnRVN0cnVjdHVyYWxGZWF0dXJlSW1wbC9TaW1wbGVDb250ZW50RmVhdHVyZU1hcEVudHJ5JywxMzMwKTtiY2IoNjQyLDU2NSxYdmUsc1lkKTtfLk9rPWZ1bmN0aW9uIHRZZChhKXtyZXR1cm4gbmV3IHNZZCh0aGlzLmMsYSl9O18uZGQ9ZnVuY3Rpb24gdVlkKCl7cmV0dXJuIHRoaXMuYX07Xy5Raz1mdW5jdGlvbiB2WWQoYSxiLGMpe3JldHVybiBjfTtfLlJrPWZ1bmN0aW9uIHdZZChhLGIsYyl7cmV0dXJuIGN9O3ZhciBtNz1tZGIocXRlLCdFU3RydWN0dXJhbEZlYXR1cmVJbXBsL1NpbXBsZUZlYXR1cmVNYXBFbnRyeScsNjQyKTtiY2IoMzkxLDQ5NyxvdWUseFlkKTtfLnJpPWZ1bmN0aW9uIHlZZChhKXtyZXR1cm4gS0MoYzUsVWhlLDI2LGEsMCwxKX07Xy5uaT1mdW5jdGlvbiB6WWQoKXtyZXR1cm4gZmFsc2V9O3ZhciBvNz1tZGIocXRlLCdFU3VwZXJBZGFwdGVyLzEnLDM5MSk7YmNiKDQ0NCw0MzgsezEwNToxLDkyOjEsOTA6MSwxNDc6MSwxOTE6MSw1NjoxLDEwODoxLDgzNjoxLDQ5OjEsOTc6MSwxNTA6MSw0NDQ6MSwxMTQ6MSwxMTU6MX0sQllkKTtfLl9nPWZ1bmN0aW9uIENZZChhLGIsYyl7dmFyIGQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gIXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKSx0aGlzLkFiO2Nhc2UgMTpyZXR1cm4gdGhpcy56YjtjYXNlIDI6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IEtZZCh0aGlzLGo1LHRoaXMpKSx0aGlzLmE7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoakdkKCksaUdkKSksWEtkKChkPUJEKEFqZCh0aGlzLDE2KSwyNiksIWQ/aUdkOmQpLGEpLGIsYyl9O18uamg9ZnVuY3Rpb24gRFlkKGEsYixjKXt2YXIgZCxlO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSksVHhkKHRoaXMuQWIsYSxjKTtjYXNlIDI6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IEtZZCh0aGlzLGo1LHRoaXMpKSxUeGQodGhpcy5hLGEsYyk7fXJldHVybiBlPUJEKFhLZCgoZD1CRChBamQodGhpcywxNiksMjYpLCFkPyhqR2QoKSxpR2QpOmQpLGIpLDY2KSxlLk5qKCkuUmoodGhpcyx5amQodGhpcyksYi1hTGQoKGpHZCgpLGlHZCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gRVlkKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5BYiYmdGhpcy5BYi5pIT0wO2Nhc2UgMTpyZXR1cm4gdGhpcy56YiE9bnVsbDtjYXNlIDI6cmV0dXJuICEhdGhpcy5hJiZ0aGlzLmEuaSE9MDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChqR2QoKSxpR2QpKSxYS2QoKGI9QkQoQWpkKHRoaXMsMTYpLDI2KSwhYj9pR2Q6YiksYSkpfTtfLnNoPWZ1bmN0aW9uIEZZZChhLGIpe3ZhciBjO3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTtVeGQodGhpcy5BYik7IXRoaXMuQWImJih0aGlzLkFiPW5ldyBjVWQoYTUsdGhpcywwLDMpKTt5dGQodGhpcy5BYixCRChiLDE0KSk7cmV0dXJuO2Nhc2UgMTpwbmQodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMjohdGhpcy5hJiYodGhpcy5hPW5ldyBLWWQodGhpcyxqNSx0aGlzKSk7VXhkKHRoaXMuYSk7IXRoaXMuYSYmKHRoaXMuYT1uZXcgS1lkKHRoaXMsajUsdGhpcykpO3l0ZCh0aGlzLmEsQkQoYiwxNCkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKGpHZCgpLGlHZCkpLFhLZCgoYz1CRChBamQodGhpcywxNiksMjYpLCFjP2lHZDpjKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBHWWQoKXtyZXR1cm4gakdkKCksaUdkfTtfLkJoPWZ1bmN0aW9uIEhZZChhKXt2YXIgYjtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLkFiJiYodGhpcy5BYj1uZXcgY1VkKGE1LHRoaXMsMCwzKSk7VXhkKHRoaXMuQWIpO3JldHVybjtjYXNlIDE6cG5kKHRoaXMsbnVsbCk7cmV0dXJuO2Nhc2UgMjohdGhpcy5hJiYodGhpcy5hPW5ldyBLWWQodGhpcyxqNSx0aGlzKSk7VXhkKHRoaXMuYSk7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoakdkKCksaUdkKSksWEtkKChiPUJEKEFqZCh0aGlzLDE2KSwyNiksIWI/aUdkOmIpLGEpKX07dmFyIHU3PW1kYihxdGUsJ0VUeXBlUGFyYW1ldGVySW1wbCcsNDQ0KTtiY2IoNDQ1LDg1LFB2ZSxLWWQpO18uY2o9ZnVuY3Rpb24gTFlkKGEsYil7cmV0dXJuIElZZCh0aGlzLEJEKGEsODcpLGIpfTtfLmRqPWZ1bmN0aW9uIE1ZZChhLGIpe3JldHVybiBKWWQodGhpcyxCRChhLDg3KSxiKX07dmFyIHE3PW1kYihxdGUsJ0VUeXBlUGFyYW1ldGVySW1wbC8xJyw0NDUpO2JjYig2MzQsNDMsZmtlLE5ZZCk7Xy5lYz1mdW5jdGlvbiBPWWQoKXtyZXR1cm4gbmV3IFJZZCh0aGlzKX07dmFyIHQ3PW1kYihxdGUsJ0VUeXBlUGFyYW1ldGVySW1wbC8yJyw2MzQpO2JjYig1NTYsZWllLGZpZSxSWWQpO18uRmM9ZnVuY3Rpb24gU1lkKGEpe3JldHVybiBQWWQodGhpcyxCRChhLDg3KSl9O18uR2M9ZnVuY3Rpb24gVFlkKGEpe3ZhciBiLGMsZDtkPWZhbHNlO2ZvcihjPWEuS2MoKTtjLk9iKCk7KXtiPUJEKGMuUGIoKSw4Nyk7UmhiKHRoaXMuYSxiLCcnKT09bnVsbCYmKGQ9dHJ1ZSl9cmV0dXJuIGR9O18uJGI9ZnVuY3Rpb24gVVlkKCl7VWhiKHRoaXMuYSl9O18uSGM9ZnVuY3Rpb24gVllkKGEpe3JldHVybiBNaGIodGhpcy5hLGEpfTtfLktjPWZ1bmN0aW9uIFdZZCgpe3ZhciBhO3JldHVybiBhPW5ldyBuaWIoKG5ldyBlaWIodGhpcy5hKSkuYSksbmV3IFpZZChhKX07Xy5NYz1mdW5jdGlvbiBYWWQoYSl7cmV0dXJuIFFZZCh0aGlzLGEpfTtfLmdjPWZ1bmN0aW9uIFlZZCgpe3JldHVybiBWaGIodGhpcy5hKX07dmFyIHM3PW1kYihxdGUsJ0VUeXBlUGFyYW1ldGVySW1wbC8yLzEnLDU1Nik7YmNiKDU1NywxLGFpZSxaWWQpO18uTmI9ZnVuY3Rpb24gJFlkKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIGFaZCgpe3JldHVybiBCRChsaWIodGhpcy5hKS5jZCgpLDg3KX07Xy5PYj1mdW5jdGlvbiBfWWQoKXtyZXR1cm4gdGhpcy5hLmJ9O18uUWI9ZnVuY3Rpb24gYlpkKCl7bWliKHRoaXMuYSl9O3ZhciByNz1tZGIocXRlLCdFVHlwZVBhcmFtZXRlckltcGwvMi8xLzEnLDU1Nyk7YmNiKDEyNzYsNDMsZmtlLGNaZCk7Xy5fYj1mdW5jdGlvbiBkWmQoYSl7cmV0dXJuIE5EKGEpP1FoYih0aGlzLGEpOiEhaXJiKHRoaXMuZixhKX07Xy54Yz1mdW5jdGlvbiBlWmQoYSl7dmFyIGIsYztiPU5EKGEpP1BoYih0aGlzLGEpOldkKGlyYih0aGlzLmYsYSkpO2lmKEpEKGIsODM3KSl7Yz1CRChiLDgzNyk7Yj1jLl9qKCk7UmhiKHRoaXMsQkQoYSwyMzUpLGIpO3JldHVybiBifWVsc2UgcmV0dXJuIGIhPW51bGw/YjphPT1udWxsPyhnNWQoKSxmNWQpOm51bGx9O3ZhciB3Nz1tZGIocXRlLCdFVmFsaWRhdG9yUmVnaXN0cnlJbXBsJywxMjc2KTtiY2IoMTMxMyw3MDQsezEwNToxLDkyOjEsOTA6MSw0NzE6MSwxNDc6MSw1NjoxLDEwODoxLDE5NDE6MSw0OToxLDk3OjEsMTUwOjEsMTE0OjEsMTE1OjF9LG1aZCk7Xy5JaD1mdW5jdGlvbiBuWmQoYSxiKXtzd2l0Y2goYS55aigpKXtjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI0OmNhc2UgMjY6Y2FzZSAzMTpjYXNlIDMyOmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDg6Y2FzZSA0OTpjYXNlIDIwOnJldHVybiBiPT1udWxsP251bGw6ZmNiKGIpO2Nhc2UgMjU6cmV0dXJuIGdaZChiKTtjYXNlIDI3OnJldHVybiBoWmQoYik7Y2FzZSAyODpyZXR1cm4gaVpkKGIpO2Nhc2UgMjk6cmV0dXJuIGI9PW51bGw/bnVsbDpDUWQoUG1kWzBdLEJEKGIsMTk5KSk7Y2FzZSA0MTpyZXR1cm4gYj09bnVsbD8nJzpoZGIoQkQoYiwyOTApKTtjYXNlIDQyOnJldHVybiBmY2IoYik7Y2FzZSA1MDpyZXR1cm4gR0QoYik7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYih0dGUrYS5uZSgpK3V0ZSkpO319O18uSmg9ZnVuY3Rpb24gb1pkKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO3N3aXRjaChhLkc9PS0xJiYoYS5HPShtPWJLZChhKSxtP0hMZChtLk1oKCksYSk6LTEpKSxhLkcpe2Nhc2UgMDpyZXR1cm4gYz1uZXcgT0pkLGM7Y2FzZSAxOnJldHVybiBiPW5ldyBSSGQsYjtjYXNlIDI6cmV0dXJuIGQ9bmV3IGhMZCxkO2Nhc2UgNDpyZXR1cm4gZT1uZXcgTVBkLGU7Y2FzZSA1OnJldHVybiBmPW5ldyBhUWQsZjtjYXNlIDY6cmV0dXJuIGc9bmV3IHJRZCxnO2Nhc2UgNzpyZXR1cm4gaD1uZXcgJG1kLGg7Y2FzZSAxMDpyZXR1cm4gaj1uZXcgTUdkLGo7Y2FzZSAxMTpyZXR1cm4gaz1uZXcgU1NkLGs7Y2FzZSAxMjpyZXR1cm4gbD1uZXcgZW9kLGw7Y2FzZSAxMzpyZXR1cm4gbj1uZXcgclVkLG47Y2FzZSAxNDpyZXR1cm4gbz1uZXcgRlVkLG87Y2FzZSAxNzpyZXR1cm4gcD1uZXcgWFVkLHA7Y2FzZSAxODpyZXR1cm4gaT1uZXcgVVFkLGk7Y2FzZSAxOTpyZXR1cm4gcT1uZXcgQllkLHE7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYih4dGUrYS56Yit1dGUpKTt9fTtfLktoPWZ1bmN0aW9uIHBaZChhLGIpe3N3aXRjaChhLnlqKCkpe2Nhc2UgMjA6cmV0dXJuIGI9PW51bGw/bnVsbDpuZXcgdGdiKGIpO2Nhc2UgMjE6cmV0dXJuIGI9PW51bGw/bnVsbDpuZXcgWWdiKGIpO2Nhc2UgMjM6Y2FzZSAyMjpyZXR1cm4gYj09bnVsbD9udWxsOmZaZChiKTtjYXNlIDI2OmNhc2UgMjQ6cmV0dXJuIGI9PW51bGw/bnVsbDpTY2IoSWNiKGIsLTEyOCwxMjcpPDwyND4+MjQpO2Nhc2UgMjU6cmV0dXJuIFhtZChiKTtjYXNlIDI3OnJldHVybiBqWmQoYik7Y2FzZSAyODpyZXR1cm4ga1pkKGIpO2Nhc2UgMjk6cmV0dXJuIGxaZChiKTtjYXNlIDMyOmNhc2UgMzE6cmV0dXJuIGI9PW51bGw/bnVsbDpIY2IoYik7Y2FzZSAzODpjYXNlIDM3OnJldHVybiBiPT1udWxsP251bGw6bmV3IE9kYihiKTtjYXNlIDQwOmNhc2UgMzk6cmV0dXJuIGI9PW51bGw/bnVsbDptZWIoSWNiKGIsUmllLE9oZSkpO2Nhc2UgNDE6cmV0dXJuIG51bGw7Y2FzZSA0MjpyZXR1cm4gYj09bnVsbD9udWxsOm51bGw7Y2FzZSA0NDpjYXNlIDQzOnJldHVybiBiPT1udWxsP251bGw6QWViKEpjYihiKSk7Y2FzZSA0OTpjYXNlIDQ4OnJldHVybiBiPT1udWxsP251bGw6V2ViKEljYihiLGF3ZSwzMjc2Nyk8PDE2Pj4xNik7Y2FzZSA1MDpyZXR1cm4gYjtkZWZhdWx0OnRocm93IHZiYihuZXcgV2RiKHR0ZSthLm5lKCkrdXRlKSk7fX07dmFyIHg3PW1kYihxdGUsJ0Vjb3JlRmFjdG9yeUltcGwnLDEzMTMpO2JjYig1NDcsMTc5LHsxMDU6MSw5MjoxLDkwOjEsMTQ3OjEsMTkxOjEsNTY6MSwyMzU6MSwxMDg6MSwxOTM5OjEsNDk6MSw5NzoxLDE1MDoxLDE3OToxLDU0NzoxLDExNDoxLDExNToxLDY3NToxfSxBWmQpO18uZ2I9ZmFsc2U7Xy5oYj1mYWxzZTt2YXIgclpkLHNaZD1mYWxzZTt2YXIgbzg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbCcsNTQ3KTtiY2IoMTE4NCwxLHs4Mzc6MX0sRVpkKTtfLl9qPWZ1bmN0aW9uIEZaZCgpe3JldHVybiBJNmQoKSxINmR9O3ZhciBJNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzEnLDExODQpO2JjYigxMTkzLDEsbndlLEdaZCk7Xy53aj1mdW5jdGlvbiBIWmQoYSl7cmV0dXJuIEpEKGEsMTQ3KX07Xy54aj1mdW5jdGlvbiBJWmQoYSl7cmV0dXJuIEtDKGs1LFVoZSwxNDcsYSwwLDEpfTt2YXIgeTc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8xMCcsMTE5Myk7YmNiKDExOTQsMSxud2UsSlpkKTtfLndqPWZ1bmN0aW9uIEtaZChhKXtyZXR1cm4gSkQoYSwxOTEpfTtfLnhqPWZ1bmN0aW9uIExaZChhKXtyZXR1cm4gS0MobDUsVWhlLDE5MSxhLDAsMSl9O3ZhciB6Nz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzExJywxMTk0KTtiY2IoMTE5NSwxLG53ZSxNWmQpO18ud2o9ZnVuY3Rpb24gTlpkKGEpe3JldHVybiBKRChhLDU2KX07Xy54aj1mdW5jdGlvbiBPWmQoYSl7cmV0dXJuIEtDKG01LFVoZSw1NixhLDAsMSl9O3ZhciBBNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzEyJywxMTk1KTtiY2IoMTE5NiwxLG53ZSxQWmQpO18ud2o9ZnVuY3Rpb24gUVpkKGEpe3JldHVybiBKRChhLDM5OSl9O18ueGo9ZnVuY3Rpb24gUlpkKGEpe3JldHVybiBLQyhuNSxOdmUsNTksYSwwLDEpfTt2YXIgQjc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8xMycsMTE5Nik7YmNiKDExOTcsMSxud2UsU1pkKTtfLndqPWZ1bmN0aW9uIFRaZChhKXtyZXR1cm4gSkQoYSwyMzUpfTtfLnhqPWZ1bmN0aW9uIFVaZChhKXtyZXR1cm4gS0MobzUsVWhlLDIzNSxhLDAsMSl9O3ZhciBDNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzE0JywxMTk3KTtiY2IoMTE5OCwxLG53ZSxWWmQpO18ud2o9ZnVuY3Rpb24gV1pkKGEpe3JldHVybiBKRChhLDUwOSl9O18ueGo9ZnVuY3Rpb24gWFpkKGEpe3JldHVybiBLQyhwNSxVaGUsMjAxNyxhLDAsMSl9O3ZhciBENz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzE1JywxMTk4KTtiY2IoMTE5OSwxLG53ZSxZWmQpO18ud2o9ZnVuY3Rpb24gWlpkKGEpe3JldHVybiBKRChhLDk5KX07Xy54aj1mdW5jdGlvbiAkWmQoYSl7cmV0dXJuIEtDKHE1LE12ZSwxOCxhLDAsMSl9O3ZhciBFNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzE2JywxMTk5KTtiY2IoMTIwMCwxLG53ZSxfWmQpO18ud2o9ZnVuY3Rpb24gYSRkKGEpe3JldHVybiBKRChhLDE3MCl9O18ueGo9ZnVuY3Rpb24gYiRkKGEpe3JldHVybiBLQyh0NSxNdmUsMTcwLGEsMCwxKX07dmFyIEY3PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMTcnLDEyMDApO2JjYigxMjAxLDEsbndlLGMkZCk7Xy53aj1mdW5jdGlvbiBkJGQoYSl7cmV0dXJuIEpEKGEsNDcyKX07Xy54aj1mdW5jdGlvbiBlJGQoYSl7cmV0dXJuIEtDKHY1LFVoZSw0NzIsYSwwLDEpfTt2YXIgRzc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8xOCcsMTIwMSk7YmNiKDEyMDIsMSxud2UsZiRkKTtfLndqPWZ1bmN0aW9uIGckZChhKXtyZXR1cm4gSkQoYSw1NDgpfTtfLnhqPWZ1bmN0aW9uIGgkZChhKXtyZXR1cm4gS0MoeDYsa3ZlLDU0OCxhLDAsMSl9O3ZhciBINz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzE5JywxMjAyKTtiY2IoMTE4NSwxLG53ZSxpJGQpO18ud2o9ZnVuY3Rpb24gaiRkKGEpe3JldHVybiBKRChhLDMyMil9O18ueGo9ZnVuY3Rpb24gayRkKGEpe3JldHVybiBLQyhiNSxNdmUsMzQsYSwwLDEpfTt2YXIgVDc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8yJywxMTg1KTtiY2IoMTIwMywxLG53ZSxsJGQpO18ud2o9ZnVuY3Rpb24gbSRkKGEpe3JldHVybiBKRChhLDI0MSl9O18ueGo9ZnVuY3Rpb24gbiRkKGEpe3JldHVybiBLQyhqNSxUdmUsODcsYSwwLDEpfTt2YXIgSjc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8yMCcsMTIwMyk7YmNiKDEyMDQsMSxud2UsbyRkKTtfLndqPWZ1bmN0aW9uIHAkZChhKXtyZXR1cm4gSkQoYSw0NDQpfTtfLnhqPWZ1bmN0aW9uIHEkZChhKXtyZXR1cm4gS0ModTUsVWhlLDgzNixhLDAsMSl9O3ZhciBLNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzIxJywxMjA0KTtiY2IoMTIwNSwxLG53ZSxyJGQpO18ud2o9ZnVuY3Rpb24gcyRkKGEpe3JldHVybiBLRChhKX07Xy54aj1mdW5jdGlvbiB0JGQoYSl7cmV0dXJuIEtDKHdJLG5pZSw0NzYsYSw4LDEpfTt2YXIgTDc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8yMicsMTIwNSk7YmNiKDEyMDYsMSxud2UsdSRkKTtfLndqPWZ1bmN0aW9uIHYkZChhKXtyZXR1cm4gSkQoYSwxOTApfTtfLnhqPWZ1bmN0aW9uIHckZChhKXtyZXR1cm4gS0MoU0QsbmllLDE5MCxhLDAsMil9O3ZhciBNNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzIzJywxMjA2KTtiY2IoMTIwNywxLG53ZSx4JGQpO18ud2o9ZnVuY3Rpb24geSRkKGEpe3JldHVybiBKRChhLDIxNyl9O18ueGo9ZnVuY3Rpb24geiRkKGEpe3JldHVybiBLQyh4SSxuaWUsMjE3LGEsMCwxKX07dmFyIE43PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMjQnLDEyMDcpO2JjYigxMjA4LDEsbndlLEEkZCk7Xy53aj1mdW5jdGlvbiBCJGQoYSl7cmV0dXJuIEpEKGEsMTcyKX07Xy54aj1mdW5jdGlvbiBDJGQoYSl7cmV0dXJuIEtDKHlJLG5pZSwxNzIsYSwwLDEpfTt2YXIgTzc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8yNScsMTIwOCk7YmNiKDEyMDksMSxud2UsRCRkKTtfLndqPWZ1bmN0aW9uIEUkZChhKXtyZXR1cm4gSkQoYSwxOTkpfTtfLnhqPWZ1bmN0aW9uIEYkZChhKXtyZXR1cm4gS0MoJEosbmllLDE5OSxhLDAsMSl9O3ZhciBQNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzI2JywxMjA5KTtiY2IoMTIxMCwxLG53ZSxHJGQpO18ud2o9ZnVuY3Rpb24gSCRkKGEpe3JldHVybiBmYWxzZX07Xy54aj1mdW5jdGlvbiBJJGQoYSl7cmV0dXJuIEtDKE80LFVoZSwyMTEwLGEsMCwxKX07dmFyIFE3PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMjcnLDEyMTApO2JjYigxMjExLDEsbndlLEokZCk7Xy53aj1mdW5jdGlvbiBLJGQoYSl7cmV0dXJuIExEKGEpfTtfLnhqPWZ1bmN0aW9uIEwkZChhKXtyZXR1cm4gS0MoQkksbmllLDMzMyxhLDcsMSl9O3ZhciBSNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzI4JywxMjExKTtiY2IoMTIxMiwxLG53ZSxNJGQpO18ud2o9ZnVuY3Rpb24gTiRkKGEpe3JldHVybiBKRChhLDU4KX07Xy54aj1mdW5jdGlvbiBPJGQoYSl7cmV0dXJuIEtDKFQ0LGVtZSw1OCxhLDAsMSl9O3ZhciBTNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzI5JywxMjEyKTtiY2IoMTE4NiwxLG53ZSxQJGQpO18ud2o9ZnVuY3Rpb24gUSRkKGEpe3JldHVybiBKRChhLDUxMCl9O18ueGo9ZnVuY3Rpb24gUiRkKGEpe3JldHVybiBLQyhhNSx7MzoxLDQ6MSw1OjEsMTkzNDoxfSw1OTAsYSwwLDEpfTt2YXIgYzg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8zJywxMTg2KTtiY2IoMTIxMywxLG53ZSxTJGQpO18ud2o9ZnVuY3Rpb24gVCRkKGEpe3JldHVybiBKRChhLDU3Myl9O18ueGo9ZnVuY3Rpb24gVSRkKGEpe3JldHVybiBLQyhVNCxVaGUsMTk0MCxhLDAsMSl9O3ZhciBVNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzMwJywxMjEzKTtiY2IoMTIxNCwxLG53ZSxWJGQpO18ud2o9ZnVuY3Rpb24gVyRkKGEpe3JldHVybiBKRChhLDE1Myl9O18ueGo9ZnVuY3Rpb24gWCRkKGEpe3JldHVybiBLQyhPOSxlbWUsMTUzLGEsMCwxKX07dmFyIFY3PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMzEnLDEyMTQpO2JjYigxMjE1LDEsbndlLFkkZCk7Xy53aj1mdW5jdGlvbiBaJGQoYSl7cmV0dXJuIEpEKGEsNzIpfTtfLnhqPWZ1bmN0aW9uICQkZChhKXtyZXR1cm4gS0MoRTksb3dlLDcyLGEsMCwxKX07dmFyIFc3PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMzInLDEyMTUpO2JjYigxMjE2LDEsbndlLF8kZCk7Xy53aj1mdW5jdGlvbiBhX2QoYSl7cmV0dXJuIEpEKGEsMTU1KX07Xy54aj1mdW5jdGlvbiBiX2QoYSl7cmV0dXJuIEtDKEZJLG5pZSwxNTUsYSwwLDEpfTt2YXIgWDc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8zMycsMTIxNik7YmNiKDEyMTcsMSxud2UsY19kKTtfLndqPWZ1bmN0aW9uIGRfZChhKXtyZXR1cm4gSkQoYSwxOSl9O18ueGo9ZnVuY3Rpb24gZV9kKGEpe3JldHVybiBLQyhKSSxuaWUsMTksYSwwLDEpfTt2YXIgWTc9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8zNCcsMTIxNyk7YmNiKDEyMTgsMSxud2UsZl9kKTtfLndqPWZ1bmN0aW9uIGdfZChhKXtyZXR1cm4gSkQoYSwyOTApfTtfLnhqPWZ1bmN0aW9uIGhfZChhKXtyZXR1cm4gS0MoQUksVWhlLDI5MCxhLDAsMSl9O3ZhciBaNz1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzM1JywxMjE4KTtiY2IoMTIxOSwxLG53ZSxpX2QpO18ud2o9ZnVuY3Rpb24gal9kKGEpe3JldHVybiBKRChhLDE2Mil9O18ueGo9ZnVuY3Rpb24ga19kKGEpe3JldHVybiBLQyhNSSxuaWUsMTYyLGEsMCwxKX07dmFyICQ3PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMzYnLDEyMTkpO2JjYigxMjIwLDEsbndlLGxfZCk7Xy53aj1mdW5jdGlvbiBtX2QoYSl7cmV0dXJuIEpEKGEsODMpfTtfLnhqPWZ1bmN0aW9uIG5fZChhKXtyZXR1cm4gS0MoREssVWhlLDgzLGEsMCwxKX07dmFyIF83PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvMzcnLDEyMjApO2JjYigxMjIxLDEsbndlLG9fZCk7Xy53aj1mdW5jdGlvbiBwX2QoYSl7cmV0dXJuIEpEKGEsNTkxKX07Xy54aj1mdW5jdGlvbiBxX2QoYSl7cmV0dXJuIEtDKHY4LFVoZSw1OTEsYSwwLDEpfTt2YXIgYTg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC8zOCcsMTIyMSk7YmNiKDEyMjIsMSxud2Uscl9kKTtfLndqPWZ1bmN0aW9uIHNfZChhKXtyZXR1cm4gZmFsc2V9O18ueGo9ZnVuY3Rpb24gdF9kKGEpe3JldHVybiBLQyh1OCxVaGUsMjExMSxhLDAsMSl9O3ZhciBiOD1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzM5JywxMjIyKTtiY2IoMTE4NywxLG53ZSx1X2QpO18ud2o9ZnVuY3Rpb24gdl9kKGEpe3JldHVybiBKRChhLDg4KX07Xy54aj1mdW5jdGlvbiB3X2QoYSl7cmV0dXJuIEtDKGM1LFVoZSwyNixhLDAsMSl9O3ZhciBpOD1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzQnLDExODcpO2JjYigxMjIzLDEsbndlLHhfZCk7Xy53aj1mdW5jdGlvbiB5X2QoYSl7cmV0dXJuIEpEKGEsMTg0KX07Xy54aj1mdW5jdGlvbiB6X2QoYSl7cmV0dXJuIEtDKFVJLG5pZSwxODQsYSwwLDEpfTt2YXIgZDg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC80MCcsMTIyMyk7YmNiKDEyMjQsMSxud2UsQV9kKTtfLndqPWZ1bmN0aW9uIEJfZChhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gQ19kKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBlOD1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzQxJywxMjI0KTtiY2IoMTIyNSwxLG53ZSxEX2QpO18ud2o9ZnVuY3Rpb24gRV9kKGEpe3JldHVybiBKRChhLDU4OCl9O18ueGo9ZnVuY3Rpb24gRl9kKGEpe3JldHVybiBLQyhYNCxVaGUsNTg4LGEsMCwxKX07dmFyIGY4PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvNDInLDEyMjUpO2JjYigxMjI2LDEsbndlLEdfZCk7Xy53aj1mdW5jdGlvbiBIX2QoYSl7cmV0dXJuIGZhbHNlfTtfLnhqPWZ1bmN0aW9uIElfZChhKXtyZXR1cm4gS0MoVjQsbmllLDIxMTIsYSwwLDEpfTt2YXIgZzg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC80MycsMTIyNik7YmNiKDEyMjcsMSxud2UsSl9kKTtfLndqPWZ1bmN0aW9uIEtfZChhKXtyZXR1cm4gSkQoYSw0Mil9O18ueGo9ZnVuY3Rpb24gTF9kKGEpe3JldHVybiBLQyhDSyx6aWUsNDIsYSwwLDEpfTt2YXIgaDg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC80NCcsMTIyNyk7YmNiKDExODgsMSxud2UsTV9kKTtfLndqPWZ1bmN0aW9uIE5fZChhKXtyZXR1cm4gSkQoYSwxMzgpfTtfLnhqPWZ1bmN0aW9uIE9fZChhKXtyZXR1cm4gS0MoZDUsVWhlLDEzOCxhLDAsMSl9O3ZhciBqOD1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzUnLDExODgpO2JjYigxMTg5LDEsbndlLFBfZCk7Xy53aj1mdW5jdGlvbiBRX2QoYSl7cmV0dXJuIEpEKGEsMTQ4KX07Xy54aj1mdW5jdGlvbiBSX2QoYSl7cmV0dXJuIEtDKGY1LFVoZSwxNDgsYSwwLDEpfTt2YXIgazg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC82JywxMTg5KTtiY2IoMTE5MCwxLG53ZSxTX2QpO18ud2o9ZnVuY3Rpb24gVF9kKGEpe3JldHVybiBKRChhLDQ1Nyl9O18ueGo9ZnVuY3Rpb24gVV9kKGEpe3JldHVybiBLQyhoNSxVaGUsNjcxLGEsMCwxKX07dmFyIGw4PW1kYihxdGUsJ0Vjb3JlUGFja2FnZUltcGwvNycsMTE5MCk7YmNiKDExOTEsMSxud2UsVl9kKTtfLndqPWZ1bmN0aW9uIFdfZChhKXtyZXR1cm4gSkQoYSw1NzMpfTtfLnhqPWZ1bmN0aW9uIFhfZChhKXtyZXR1cm4gS0MoZzUsVWhlLDY3OCxhLDAsMSl9O3ZhciBtOD1tZGIocXRlLCdFY29yZVBhY2thZ2VJbXBsLzgnLDExOTEpO2JjYigxMTkyLDEsbndlLFlfZCk7Xy53aj1mdW5jdGlvbiBaX2QoYSl7cmV0dXJuIEpEKGEsNDcxKX07Xy54aj1mdW5jdGlvbiAkX2QoYSl7cmV0dXJuIEtDKGk1LFVoZSw0NzEsYSwwLDEpfTt2YXIgbjg9bWRiKHF0ZSwnRWNvcmVQYWNrYWdlSW1wbC85JywxMTkyKTtiY2IoMTAyNSwxOTgyLGl2ZSxjMGQpO18uYmk9ZnVuY3Rpb24gZDBkKGEsYil7X19kKHRoaXMsQkQoYiw0MTUpKX07Xy5maT1mdW5jdGlvbiBlMGQoYSxiKXthMGQodGhpcyxhLEJEKGIsNDE1KSl9O3ZhciBxOD1tZGIocXRlLCdNaW5pbWFsRU9iamVjdEltcGwvMUFycmF5RGVsZWdhdGluZ0FkYXB0ZXJMaXN0JywxMDI1KTtiY2IoMTAyNiwxNDMsZnZlLGYwZCk7Xy5BaT1mdW5jdGlvbiBnMGQoKXtyZXR1cm4gdGhpcy5hLmF9O3ZhciBwOD1tZGIocXRlLCdNaW5pbWFsRU9iamVjdEltcGwvMUFycmF5RGVsZWdhdGluZ0FkYXB0ZXJMaXN0LzEnLDEwMjYpO2JjYigxMDUzLDEwNTIse30saTBkKTt2YXIgdDg9bWRiKCdvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luJywnRWNvcmVQbHVnaW4nLDEwNTMpO3ZhciB2OD1vZGIocHdlLCdSZXNvdXJjZScpO2JjYig3ODEsMTM3OCxxd2UpO18uWWs9ZnVuY3Rpb24gbTBkKGEpe307Xy5aaz1mdW5jdGlvbiBuMGQoYSl7fTtfLlZrPWZ1bmN0aW9uIG8wZCgpe3JldHVybiAhdGhpcy5hJiYodGhpcy5hPW5ldyB6MGQodGhpcykpLHRoaXMuYX07Xy5Xaz1mdW5jdGlvbiBwMGQoYSl7dmFyIGIsYyxkLGUsZjtkPWEubGVuZ3RoO2lmKGQ+MCl7QkNiKDAsYS5sZW5ndGgpO2lmKGEuY2hhckNvZGVBdCgwKT09NDcpe2Y9bmV3IFNrYig0KTtlPTE7Zm9yKGI9MTtiPGQ7KytiKXtCQ2IoYixhLmxlbmd0aCk7aWYoYS5jaGFyQ29kZUF0KGIpPT00Nyl7RWtiKGYsZT09Yj8nJzphLnN1YnN0cihlLGItZSkpO2U9YisxfX1Fa2IoZixhLnN1YnN0cihlKSk7cmV0dXJuIGowZCh0aGlzLGYpfWVsc2V7QkNiKGQtMSxhLmxlbmd0aCk7aWYoYS5jaGFyQ29kZUF0KGQtMSk9PTYzKXtjPWxmYihhLHdmYig2MyksZC0yKTtjPjAmJihhPWEuc3Vic3RyKDAsYykpfX19cmV0dXJuIGswZCh0aGlzLGEpfTtfLlhrPWZ1bmN0aW9uIHEwZCgpe3JldHVybiB0aGlzLmN9O18uSWI9ZnVuY3Rpb24gcjBkKCl7dmFyIGE7cmV0dXJuIGhkYih0aGlzLmdtKSsnQCcrKGE9dGIodGhpcyk+Pj4wLGEudG9TdHJpbmcoMTYpKStcIiB1cmk9J1wiK3RoaXMuZCtcIidcIn07Xy5iPWZhbHNlO3ZhciB6OD1tZGIocndlLCdSZXNvdXJjZUltcGwnLDc4MSk7YmNiKDEzNzksNzgxLHF3ZSxzMGQpO3ZhciB3OD1tZGIocndlLCdCaW5hcnlSZXNvdXJjZUltcGwnLDEzNzkpO2JjYigxMTY5LDY5NCxwdWUpO18uc2k9ZnVuY3Rpb24gdjBkKGEpe3JldHVybiBKRChhLDU2KT90MGQodGhpcyxCRChhLDU2KSk6SkQoYSw1OTEpP25ldyBGeWQoQkQoYSw1OTEpLlZrKCkpOlBEKGEpPT09UEQodGhpcy5mKT9CRChhLDE0KS5LYygpOihMQ2QoKSxLQ2QuYSl9O18uT2I9ZnVuY3Rpb24gdzBkKCl7cmV0dXJuIHUwZCh0aGlzKX07Xy5hPWZhbHNlO3ZhciB6OT1tZGIoeXZlLCdFY29yZVV0aWwvQ29udGVudFRyZWVJdGVyYXRvcicsMTE2OSk7YmNiKDEzODAsMTE2OSxwdWUseDBkKTtfLnNpPWZ1bmN0aW9uIHkwZChhKXtyZXR1cm4gUEQoYSk9PT1QRCh0aGlzLmYpP0JEKGEsMTUpLktjKCk6bmV3IEM2ZChCRChhLDU2KSl9O3ZhciB4OD1tZGIocndlLCdSZXNvdXJjZUltcGwvNScsMTM4MCk7YmNiKDY0OCwxOTk0LE92ZSx6MGQpO18uSGM9ZnVuY3Rpb24gQTBkKGEpe3JldHVybiB0aGlzLmk8PTQ/cHVkKHRoaXMsYSk6SkQoYSw0OSkmJkJEKGEsNDkpLlpnKCk9PXRoaXMuYX07Xy5iaT1mdW5jdGlvbiBCMGQoYSxiKXthPT10aGlzLmktMSYmKHRoaXMuYS5ifHwodGhpcy5hLmI9dHJ1ZSxudWxsKSl9O18uZGk9ZnVuY3Rpb24gQzBkKGEsYil7YT09MD90aGlzLmEuYnx8KHRoaXMuYS5iPXRydWUsbnVsbCk6QXRkKHRoaXMsYSxiKX07Xy5maT1mdW5jdGlvbiBEMGQoYSxiKXt9O18uZ2k9ZnVuY3Rpb24gRTBkKGEsYixjKXt9O18uYWo9ZnVuY3Rpb24gRjBkKCl7cmV0dXJuIDJ9O18uQWk9ZnVuY3Rpb24gRzBkKCl7cmV0dXJuIHRoaXMuYX07Xy5iaj1mdW5jdGlvbiBIMGQoKXtyZXR1cm4gdHJ1ZX07Xy5jaj1mdW5jdGlvbiBJMGQoYSxiKXt2YXIgYztjPUJEKGEsNDkpO2I9Yy53aCh0aGlzLmEsYik7cmV0dXJuIGJ9O18uZGo9ZnVuY3Rpb24gSjBkKGEsYil7dmFyIGM7Yz1CRChhLDQ5KTtyZXR1cm4gYy53aChudWxsLGIpfTtfLmVqPWZ1bmN0aW9uIEswZCgpe3JldHVybiBmYWxzZX07Xy5oaT1mdW5jdGlvbiBMMGQoKXtyZXR1cm4gdHJ1ZX07Xy5yaT1mdW5jdGlvbiBNMGQoYSl7cmV0dXJuIEtDKG01LFVoZSw1NixhLDAsMSl9O18ubmk9ZnVuY3Rpb24gTjBkKCl7cmV0dXJuIGZhbHNlfTt2YXIgeTg9bWRiKHJ3ZSwnUmVzb3VyY2VJbXBsL0NvbnRlbnRzRUxpc3QnLDY0OCk7YmNiKDk1NywxOTY0LExpZSxPMGQpO18uWmM9ZnVuY3Rpb24gUDBkKGEpe3JldHVybiB0aGlzLmEuX2goYSl9O18uZ2M9ZnVuY3Rpb24gUTBkKCl7cmV0dXJuIHRoaXMuYS5nYygpfTt2YXIgQTg9bWRiKHl2ZSwnQWJzdHJhY3RTZXF1ZW50aWFsSW50ZXJuYWxFTGlzdC8xJyw5NTcpO3ZhciBLNmQsTDZkLE02ZCxONmQ7YmNiKDYyNCwxLHt9LHkxZCk7dmFyIFIwZCxTMGQ7dmFyIEc4PW1kYih5dmUsJ0Jhc2ljRXh0ZW5kZWRNZXRhRGF0YScsNjI0KTtiY2IoMTE2MCwxLHt9LEMxZCk7Xy4kaz1mdW5jdGlvbiBEMWQoKXtyZXR1cm4gbnVsbH07Xy5faz1mdW5jdGlvbiBFMWQoKXt0aGlzLmE9PS0yJiZBMWQodGhpcyxXMGQodGhpcy5kLHRoaXMuYikpO3JldHVybiB0aGlzLmF9O18uYWw9ZnVuY3Rpb24gRjFkKCl7cmV0dXJuIG51bGx9O18uYmw9ZnVuY3Rpb24gRzFkKCl7cmV0dXJuIG1tYigpLG1tYigpLGptYn07Xy5uZT1mdW5jdGlvbiBIMWQoKXt0aGlzLmM9PUd3ZSYmQjFkKHRoaXMsXzBkKHRoaXMuZCx0aGlzLmIpKTtyZXR1cm4gdGhpcy5jfTtfLmNsPWZ1bmN0aW9uIEkxZCgpe3JldHVybiAwfTtfLmE9LTI7Xy5jPUd3ZTt2YXIgQzg9bWRiKHl2ZSwnQmFzaWNFeHRlbmRlZE1ldGFEYXRhL0VDbGFzc0V4dGVuZGVkTWV0YURhdGFJbXBsJywxMTYwKTtiY2IoMTE2MSwxLHt9LE8xZCk7Xy4kaz1mdW5jdGlvbiBQMWQoKXt0aGlzLmE9PShUMGQoKSxSMGQpJiZKMWQodGhpcyxWMGQodGhpcy5mLHRoaXMuYikpO3JldHVybiB0aGlzLmF9O18uX2s9ZnVuY3Rpb24gUTFkKCl7cmV0dXJuIDB9O18uYWw9ZnVuY3Rpb24gUjFkKCl7dGhpcy5jPT0oVDBkKCksUjBkKSYmSzFkKHRoaXMsWjBkKHRoaXMuZix0aGlzLmIpKTtyZXR1cm4gdGhpcy5jfTtfLmJsPWZ1bmN0aW9uIFMxZCgpeyF0aGlzLmQmJkwxZCh0aGlzLCQwZCh0aGlzLmYsdGhpcy5iKSk7cmV0dXJuIHRoaXMuZH07Xy5uZT1mdW5jdGlvbiBUMWQoKXt0aGlzLmU9PUd3ZSYmTTFkKHRoaXMsXzBkKHRoaXMuZix0aGlzLmIpKTtyZXR1cm4gdGhpcy5lfTtfLmNsPWZ1bmN0aW9uIFUxZCgpe3RoaXMuZz09LTImJk4xZCh0aGlzLGMxZCh0aGlzLmYsdGhpcy5iKSk7cmV0dXJuIHRoaXMuZ307Xy5lPUd3ZTtfLmc9LTI7dmFyIEQ4PW1kYih5dmUsJ0Jhc2ljRXh0ZW5kZWRNZXRhRGF0YS9FRGF0YVR5cGVFeHRlbmRlZE1ldGFEYXRhSW1wbCcsMTE2MSk7YmNiKDExNTksMSx7fSxZMWQpO18uYj1mYWxzZTtfLmM9ZmFsc2U7dmFyIEU4PW1kYih5dmUsJ0Jhc2ljRXh0ZW5kZWRNZXRhRGF0YS9FUGFja2FnZUV4dGVuZGVkTWV0YURhdGFJbXBsJywxMTU5KTtiY2IoMTE2MiwxLHt9LGoyZCk7Xy5jPS0yO18uZT1Hd2U7Xy5mPUd3ZTt2YXIgRjg9bWRiKHl2ZSwnQmFzaWNFeHRlbmRlZE1ldGFEYXRhL0VTdHJ1Y3R1cmFsRmVhdHVyZUV4dGVuZGVkTWV0YURhdGFJbXBsJywxMTYyKTtiY2IoNTg1LDYyMixQdmUsazJkKTtfLmFqPWZ1bmN0aW9uIGwyZCgpe3JldHVybiB0aGlzLmN9O18uRms9ZnVuY3Rpb24gbTJkKCl7cmV0dXJuIGZhbHNlfTtfLmxpPWZ1bmN0aW9uIG4yZChhLGIpe3JldHVybiBifTtfLmM9MDt2YXIgVDg9bWRiKHl2ZSwnRURhdGFUeXBlRUxpc3QnLDU4NSk7dmFyIE85PW9kYih5dmUsJ0ZlYXR1cmVNYXAnKTtiY2IoNzUsNTg1LHszOjEsNDoxLDIwOjEsMjg6MSw1MjoxLDE0OjEsMTU6MSw1NDoxLDY3OjEsNjM6MSw1ODoxLDc2OjEsMTUzOjEsMjE1OjEsMTkzNzoxLDY5OjEsOTU6MX0sdTNkKTtfLlZjPWZ1bmN0aW9uIHYzZChhLGIpe28yZCh0aGlzLGEsQkQoYiw3MikpfTtfLkZjPWZ1bmN0aW9uIHczZChhKXtyZXR1cm4gcjJkKHRoaXMsQkQoYSw3MikpfTtfLlloPWZ1bmN0aW9uIEIzZChhKXt3MmQodGhpcyxCRChhLDcyKSl9O18uY2o9ZnVuY3Rpb24gTTNkKGEsYil7cmV0dXJuIE8yZCh0aGlzLEJEKGEsNzIpLGIpfTtfLmRqPWZ1bmN0aW9uIE4zZChhLGIpe3JldHVybiBRMmQodGhpcyxCRChhLDcyKSxiKX07Xy5paT1mdW5jdGlvbiBQM2QoYSxiKXtyZXR1cm4gVzJkKHRoaXMsYSxiKX07Xy5saT1mdW5jdGlvbiBSM2QoYSxiKXtyZXR1cm4gXzJkKHRoaXMsYSxCRChiLDcyKSl9O18uX2M9ZnVuY3Rpb24gVDNkKGEsYil7cmV0dXJuIGMzZCh0aGlzLGEsQkQoYiw3MikpfTtfLmpqPWZ1bmN0aW9uIFgzZChhLGIpe3JldHVybiBpM2QodGhpcyxCRChhLDcyKSxiKX07Xy5raj1mdW5jdGlvbiBZM2QoYSxiKXtyZXR1cm4gazNkKHRoaXMsQkQoYSw3MiksYil9O18ubGo9ZnVuY3Rpb24gWjNkKGEsYixjKXtyZXR1cm4gbDNkKHRoaXMsQkQoYSw3MiksQkQoYiw3MiksYyl9O18ub2k9ZnVuY3Rpb24gXzNkKGEsYil7cmV0dXJuIHQzZCh0aGlzLGEsQkQoYiw3MikpfTtfLmRsPWZ1bmN0aW9uIHgzZChhLGIpe3JldHVybiBxMmQodGhpcyxhLGIpfTtfLldjPWZ1bmN0aW9uIHkzZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosaztqPW5ldyB6dWQoYi5nYygpKTtmb3IoZT1iLktjKCk7ZS5PYigpOyl7ZD1CRChlLlBiKCksNzIpO2Y9ZC5haygpO2lmKFQ2ZCh0aGlzLmUsZikpeyghZi5oaSgpfHwhRTJkKHRoaXMsZixkLmRkKCkpJiYhcHVkKGosZCkpJiZ3dGQoaixkKX1lbHNle2s9UzZkKHRoaXMuZS5UZygpLGYpO2M9QkQodGhpcy5nLDExOSk7Zz10cnVlO2ZvcihoPTA7aDx0aGlzLmk7KytoKXtpPWNbaF07aWYoay5ybChpLmFrKCkpKXtCRChHdGQodGhpcyxoLGQpLDcyKTtnPWZhbHNlO2JyZWFrfX1nJiZ3dGQoaixkKX19cmV0dXJuIHh0ZCh0aGlzLGEsail9O18uR2M9ZnVuY3Rpb24gejNkKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksajtpPW5ldyB6dWQoYS5nYygpKTtmb3IoZD1hLktjKCk7ZC5PYigpOyl7Yz1CRChkLlBiKCksNzIpO2U9Yy5haygpO2lmKFQ2ZCh0aGlzLmUsZSkpeyghZS5oaSgpfHwhRTJkKHRoaXMsZSxjLmRkKCkpJiYhcHVkKGksYykpJiZ3dGQoaSxjKX1lbHNle2o9UzZkKHRoaXMuZS5UZygpLGUpO2I9QkQodGhpcy5nLDExOSk7Zj10cnVlO2ZvcihnPTA7Zzx0aGlzLmk7KytnKXtoPWJbZ107aWYoai5ybChoLmFrKCkpKXtCRChHdGQodGhpcyxnLGMpLDcyKTtmPWZhbHNlO2JyZWFrfX1mJiZ3dGQoaSxjKX19cmV0dXJuIHl0ZCh0aGlzLGkpfTtfLldoPWZ1bmN0aW9uIEEzZChhKXt0aGlzLmo9LTE7cmV0dXJuIFB4ZCh0aGlzLHRoaXMuaSxhKX07Xy5lbD1mdW5jdGlvbiBDM2QoYSxiLGMpe3JldHVybiB4MmQodGhpcyxhLGIsYyl9O18ubWs9ZnVuY3Rpb24gRDNkKGEsYil7cmV0dXJuIEIyZCh0aGlzLGEsYil9O18uZmw9ZnVuY3Rpb24gRTNkKGEsYixjKXtyZXR1cm4gQzJkKHRoaXMsYSxiLGMpfTtfLmdsPWZ1bmN0aW9uIEYzZCgpe3JldHVybiB0aGlzfTtfLmhsPWZ1bmN0aW9uIEczZChhLGIpe3JldHVybiBLMmQodGhpcyxhLGIpfTtfLmlsPWZ1bmN0aW9uIEgzZChhKXtyZXR1cm4gQkQocXVkKHRoaXMsYSksNzIpLmFrKCl9O18uamw9ZnVuY3Rpb24gSTNkKGEpe3JldHVybiBCRChxdWQodGhpcyxhKSw3MikuZGQoKX07Xy5rbD1mdW5jdGlvbiBKM2QoKXtyZXR1cm4gdGhpcy5ifTtfLmJqPWZ1bmN0aW9uIEszZCgpe3JldHVybiB0cnVlfTtfLmlqPWZ1bmN0aW9uIEwzZCgpe3JldHVybiB0cnVlfTtfLmxsPWZ1bmN0aW9uIE8zZChhKXtyZXR1cm4gIVIyZCh0aGlzLGEpfTtfLnJpPWZ1bmN0aW9uIFEzZChhKXtyZXR1cm4gS0MoRDksb3dlLDMzMixhLDAsMSl9O18uR2s9ZnVuY3Rpb24gUzNkKGEpe3JldHVybiBhM2QodGhpcyxhKX07Xy5XYj1mdW5jdGlvbiBVM2QoYSl7ZDNkKHRoaXMsYSl9O18ubWw9ZnVuY3Rpb24gVjNkKGEsYil7ZjNkKHRoaXMsYSxiKX07Xy5ubD1mdW5jdGlvbiBXM2QoYSl7cmV0dXJuIGczZCh0aGlzLGEpfTtfLm9sPWZ1bmN0aW9uICQzZChhKXtzM2QodGhpcyxhKX07dmFyIEo4PW1kYih5dmUsJ0Jhc2ljRmVhdHVyZU1hcCcsNzUpO2JjYigxODUxLDEsamllKTtfLk5iPWZ1bmN0aW9uIGY0ZChhKXtScmIodGhpcyxhKX07Xy5SYj1mdW5jdGlvbiBlNGQoYil7aWYodGhpcy5nPT0tMSl7dGhyb3cgdmJiKG5ldyBZZGIpfWE0ZCh0aGlzKTt0cnl7cDJkKHRoaXMuZSx0aGlzLmIsdGhpcy5hLGIpO3RoaXMuZD10aGlzLmUuajtkNGQodGhpcyl9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3Mykpe3Rocm93IHZiYihuZXcgQXBiKX1lbHNlIHRocm93IHZiYihhKX19O18uT2I9ZnVuY3Rpb24gZzRkKCl7cmV0dXJuIGI0ZCh0aGlzKX07Xy5TYj1mdW5jdGlvbiBoNGQoKXtyZXR1cm4gYzRkKHRoaXMpfTtfLlBiPWZ1bmN0aW9uIGk0ZCgpe3JldHVybiBkNGQodGhpcyl9O18uVGI9ZnVuY3Rpb24gajRkKCl7cmV0dXJuIHRoaXMuYX07Xy5VYj1mdW5jdGlvbiBrNGQoKXt2YXIgYTtpZihjNGQodGhpcykpe2E0ZCh0aGlzKTt0aGlzLmc9LS10aGlzLmE7aWYodGhpcy5MaygpKXthPWIzZCh0aGlzLmUsdGhpcy5iLHRoaXMuYyx0aGlzLmEsdGhpcy5qKTt0aGlzLmo9YX10aGlzLmk9MDtyZXR1cm4gdGhpcy5qfWVsc2V7dGhyb3cgdmJiKG5ldyB1dGIpfX07Xy5WYj1mdW5jdGlvbiBsNGQoKXtyZXR1cm4gdGhpcy5hLTF9O18uUWI9ZnVuY3Rpb24gbTRkKCl7aWYodGhpcy5nPT0tMSl7dGhyb3cgdmJiKG5ldyBZZGIpfWE0ZCh0aGlzKTt0cnl7WjJkKHRoaXMuZSx0aGlzLmIsdGhpcy5nKTt0aGlzLmQ9dGhpcy5lLmo7aWYodGhpcy5nPHRoaXMuYSl7LS10aGlzLmE7LS10aGlzLmN9LS10aGlzLmd9Y2F0Y2goYSl7YT11YmIoYSk7aWYoSkQoYSw3Mykpe3Rocm93IHZiYihuZXcgQXBiKX1lbHNlIHRocm93IHZiYihhKX19O18uTGs9ZnVuY3Rpb24gbjRkKCl7cmV0dXJuIGZhbHNlfTtfLldiPWZ1bmN0aW9uIG80ZChiKXtpZih0aGlzLmc9PS0xKXt0aHJvdyB2YmIobmV3IFlkYil9YTRkKHRoaXMpO3RyeXtlM2QodGhpcy5lLHRoaXMuYix0aGlzLmcsYik7dGhpcy5kPXRoaXMuZS5qfWNhdGNoKGEpe2E9dWJiKGEpO2lmKEpEKGEsNzMpKXt0aHJvdyB2YmIobmV3IEFwYil9ZWxzZSB0aHJvdyB2YmIoYSl9fTtfLmE9MDtfLmM9MDtfLmQ9MDtfLmY9ZmFsc2U7Xy5nPTA7Xy5pPTA7dmFyIEc5PW1kYih5dmUsJ0ZlYXR1cmVNYXBVdGlsL0Jhc2ljRmVhdHVyZUVJdGVyYXRvcicsMTg1MSk7YmNiKDQxMCwxODUxLGppZSxwNGQpO18ucGw9ZnVuY3Rpb24gcTRkKCl7dmFyIGEsYixjO2M9dGhpcy5lLmk7YT1CRCh0aGlzLmUuZywxMTkpO3doaWxlKHRoaXMuYzxjKXtiPWFbdGhpcy5jXTtpZih0aGlzLmsucmwoYi5haygpKSl7dGhpcy5qPXRoaXMuZj9iOmIuZGQoKTt0aGlzLmk9MjtyZXR1cm4gdHJ1ZX0rK3RoaXMuY310aGlzLmk9MTt0aGlzLmc9LTE7cmV0dXJuIGZhbHNlfTtfLnFsPWZ1bmN0aW9uIHI0ZCgpe3ZhciBhLGI7YT1CRCh0aGlzLmUuZywxMTkpO3doaWxlKC0tdGhpcy5jPj0wKXtiPWFbdGhpcy5jXTtpZih0aGlzLmsucmwoYi5haygpKSl7dGhpcy5qPXRoaXMuZj9iOmIuZGQoKTt0aGlzLmk9LTI7cmV0dXJuIHRydWV9fXRoaXMuaT0tMTt0aGlzLmc9LTE7cmV0dXJuIGZhbHNlfTt2YXIgSDg9bWRiKHl2ZSwnQmFzaWNGZWF0dXJlTWFwL0ZlYXR1cmVFSXRlcmF0b3InLDQxMCk7YmNiKDY2Miw0MTAsamllLHM0ZCk7Xy5Maz1mdW5jdGlvbiB0NGQoKXtyZXR1cm4gdHJ1ZX07dmFyIEk4PW1kYih5dmUsJ0Jhc2ljRmVhdHVyZU1hcC9SZXNvbHZpbmdGZWF0dXJlRUl0ZXJhdG9yJyw2NjIpO2JjYig5NTUsNDg2LFZ2ZSx1NGQpO18uR2k9ZnVuY3Rpb24gdjRkKCl7cmV0dXJuIHRoaXN9O3ZhciBNOD1tZGIoeXZlLCdFQ29udGVudHNFTGlzdC8xJyw5NTUpO2JjYig5NTYsNDg2LFZ2ZSx3NGQpO18uTGs9ZnVuY3Rpb24geDRkKCl7cmV0dXJuIGZhbHNlfTt2YXIgTjg9bWRiKHl2ZSwnRUNvbnRlbnRzRUxpc3QvMicsOTU2KTtiY2IoOTU0LDI3OSxXdmUseTRkKTtfLk5rPWZ1bmN0aW9uIHo0ZChhKXt9O18uT2I9ZnVuY3Rpb24gQTRkKCl7cmV0dXJuIGZhbHNlfTtfLlNiPWZ1bmN0aW9uIEI0ZCgpe3JldHVybiBmYWxzZX07dmFyIE84PW1kYih5dmUsJ0VDb250ZW50c0VMaXN0L0ZlYXR1cmVJdGVyYXRvckltcGwvMScsOTU0KTtiY2IoODI1LDU4NSxQdmUsQzRkKTtfLmNpPWZ1bmN0aW9uIEQ0ZCgpe3RoaXMuYT10cnVlfTtfLmZqPWZ1bmN0aW9uIEU0ZCgpe3JldHVybiB0aGlzLmF9O18uWGo9ZnVuY3Rpb24gRjRkKCl7dmFyIGE7VXhkKHRoaXMpO2lmKG9pZCh0aGlzLmUpKXthPXRoaXMuYTt0aGlzLmE9ZmFsc2U7VWhkKHRoaXMuZSxuZXcgcVNkKHRoaXMuZSwyLHRoaXMuYyxhLGZhbHNlKSl9ZWxzZXt0aGlzLmE9ZmFsc2V9fTtfLmE9ZmFsc2U7dmFyIFM4PW1kYih5dmUsJ0VEYXRhVHlwZUVMaXN0L1Vuc2V0dGFibGUnLDgyNSk7YmNiKDE4NDksNTg1LFB2ZSxHNGQpO18uaGk9ZnVuY3Rpb24gSDRkKCl7cmV0dXJuIHRydWV9O3ZhciBWOD1tZGIoeXZlLCdFRGF0YVR5cGVVbmlxdWVFTGlzdCcsMTg0OSk7YmNiKDE4NTAsODI1LFB2ZSxJNGQpO18uaGk9ZnVuY3Rpb24gSjRkKCl7cmV0dXJuIHRydWV9O3ZhciBVOD1tZGIoeXZlLCdFRGF0YVR5cGVVbmlxdWVFTGlzdC9VbnNldHRhYmxlJywxODUwKTtiY2IoMTM5LDg1LFB2ZSxLNGQpO18uRWs9ZnVuY3Rpb24gTDRkKCl7cmV0dXJuIHRydWV9O18ubGk9ZnVuY3Rpb24gTTRkKGEsYil7cmV0dXJuIElMZCh0aGlzLGEsQkQoYiw1NikpfTt2YXIgVzg9bWRiKHl2ZSwnRU9iamVjdENvbnRhaW5tZW50RUxpc3QvUmVzb2x2aW5nJywxMzkpO2JjYigxMTYzLDU0NSxQdmUsTjRkKTtfLkVrPWZ1bmN0aW9uIE80ZCgpe3JldHVybiB0cnVlfTtfLmxpPWZ1bmN0aW9uIFA0ZChhLGIpe3JldHVybiBJTGQodGhpcyxhLEJEKGIsNTYpKX07dmFyIFg4PW1kYih5dmUsJ0VPYmplY3RDb250YWlubWVudEVMaXN0L1Vuc2V0dGFibGUvUmVzb2x2aW5nJywxMTYzKTtiY2IoNzQ4LDE2LFB2ZSxRNGQpO18uY2k9ZnVuY3Rpb24gUjRkKCl7dGhpcy5hPXRydWV9O18uZmo9ZnVuY3Rpb24gUzRkKCl7cmV0dXJuIHRoaXMuYX07Xy5Yaj1mdW5jdGlvbiBUNGQoKXt2YXIgYTtVeGQodGhpcyk7aWYob2lkKHRoaXMuZSkpe2E9dGhpcy5hO3RoaXMuYT1mYWxzZTtVaGQodGhpcy5lLG5ldyBxU2QodGhpcy5lLDIsdGhpcy5jLGEsZmFsc2UpKX1lbHNle3RoaXMuYT1mYWxzZX19O18uYT1mYWxzZTt2YXIgYTk9bWRiKHl2ZSwnRU9iamVjdENvbnRhaW5tZW50V2l0aEludmVyc2VFTGlzdC9VbnNldHRhYmxlJyw3NDgpO2JjYigxMTczLDc0OCxQdmUsVTRkKTtfLkVrPWZ1bmN0aW9uIFY0ZCgpe3JldHVybiB0cnVlfTtfLmxpPWZ1bmN0aW9uIFc0ZChhLGIpe3JldHVybiBJTGQodGhpcyxhLEJEKGIsNTYpKX07dmFyIF84PW1kYih5dmUsJ0VPYmplY3RDb250YWlubWVudFdpdGhJbnZlcnNlRUxpc3QvVW5zZXR0YWJsZS9SZXNvbHZpbmcnLDExNzMpO2JjYig3NDMsNDk2LFB2ZSxYNGQpO18uY2k9ZnVuY3Rpb24gWTRkKCl7dGhpcy5hPXRydWV9O18uZmo9ZnVuY3Rpb24gWjRkKCl7cmV0dXJuIHRoaXMuYX07Xy5Yaj1mdW5jdGlvbiAkNGQoKXt2YXIgYTtVeGQodGhpcyk7aWYob2lkKHRoaXMuZSkpe2E9dGhpcy5hO3RoaXMuYT1mYWxzZTtVaGQodGhpcy5lLG5ldyBxU2QodGhpcy5lLDIsdGhpcy5jLGEsZmFsc2UpKX1lbHNle3RoaXMuYT1mYWxzZX19O18uYT1mYWxzZTt2YXIgYzk9bWRiKHl2ZSwnRU9iamVjdEVMaXN0L1Vuc2V0dGFibGUnLDc0Myk7YmNiKDMyOCw0OTYsUHZlLF80ZCk7Xy5Faz1mdW5jdGlvbiBhNWQoKXtyZXR1cm4gdHJ1ZX07Xy5saT1mdW5jdGlvbiBiNWQoYSxiKXtyZXR1cm4gSUxkKHRoaXMsYSxCRChiLDU2KSl9O3ZhciBmOT1tZGIoeXZlLCdFT2JqZWN0UmVzb2x2aW5nRUxpc3QnLDMyOCk7YmNiKDE2NDEsNzQzLFB2ZSxjNWQpO18uRWs9ZnVuY3Rpb24gZDVkKCl7cmV0dXJuIHRydWV9O18ubGk9ZnVuY3Rpb24gZTVkKGEsYil7cmV0dXJuIElMZCh0aGlzLGEsQkQoYiw1NikpfTt2YXIgZTk9bWRiKHl2ZSwnRU9iamVjdFJlc29sdmluZ0VMaXN0L1Vuc2V0dGFibGUnLDE2NDEpO2JjYigxMzgxLDEse30saDVkKTt2YXIgZjVkO3ZhciBnOT1tZGIoeXZlLCdFT2JqZWN0VmFsaWRhdG9yJywxMzgxKTtiY2IoNTQ2LDQ5NixQdmUsaTVkKTtfLnprPWZ1bmN0aW9uIGo1ZCgpe3JldHVybiB0aGlzLmR9O18uQWs9ZnVuY3Rpb24gazVkKCl7cmV0dXJuIHRoaXMuYn07Xy5iaj1mdW5jdGlvbiBsNWQoKXtyZXR1cm4gdHJ1ZX07Xy5Eaz1mdW5jdGlvbiBtNWQoKXtyZXR1cm4gdHJ1ZX07Xy5iPTA7dmFyIGs5PW1kYih5dmUsJ0VPYmplY3RXaXRoSW52ZXJzZUVMaXN0Jyw1NDYpO2JjYigxMTc2LDU0NixQdmUsbjVkKTtfLkNrPWZ1bmN0aW9uIG81ZCgpe3JldHVybiB0cnVlfTt2YXIgaDk9bWRiKHl2ZSwnRU9iamVjdFdpdGhJbnZlcnNlRUxpc3QvTWFueUludmVyc2UnLDExNzYpO2JjYig2MjUsNTQ2LFB2ZSxwNWQpO18uY2k9ZnVuY3Rpb24gcTVkKCl7dGhpcy5hPXRydWV9O18uZmo9ZnVuY3Rpb24gcjVkKCl7cmV0dXJuIHRoaXMuYX07Xy5Yaj1mdW5jdGlvbiBzNWQoKXt2YXIgYTtVeGQodGhpcyk7aWYob2lkKHRoaXMuZSkpe2E9dGhpcy5hO3RoaXMuYT1mYWxzZTtVaGQodGhpcy5lLG5ldyBxU2QodGhpcy5lLDIsdGhpcy5jLGEsZmFsc2UpKX1lbHNle3RoaXMuYT1mYWxzZX19O18uYT1mYWxzZTt2YXIgajk9bWRiKHl2ZSwnRU9iamVjdFdpdGhJbnZlcnNlRUxpc3QvVW5zZXR0YWJsZScsNjI1KTtiY2IoMTE3NSw2MjUsUHZlLHQ1ZCk7Xy5Daz1mdW5jdGlvbiB1NWQoKXtyZXR1cm4gdHJ1ZX07dmFyIGk5PW1kYih5dmUsJ0VPYmplY3RXaXRoSW52ZXJzZUVMaXN0L1Vuc2V0dGFibGUvTWFueUludmVyc2UnLDExNzUpO2JjYig3NDksNTQ2LFB2ZSx2NWQpO18uRWs9ZnVuY3Rpb24gdzVkKCl7cmV0dXJuIHRydWV9O18ubGk9ZnVuY3Rpb24geDVkKGEsYil7cmV0dXJuIElMZCh0aGlzLGEsQkQoYiw1NikpfTt2YXIgbzk9bWRiKHl2ZSwnRU9iamVjdFdpdGhJbnZlcnNlUmVzb2x2aW5nRUxpc3QnLDc0OSk7YmNiKDMxLDc0OSxQdmUseTVkKTtfLkNrPWZ1bmN0aW9uIHo1ZCgpe3JldHVybiB0cnVlfTt2YXIgbDk9bWRiKHl2ZSwnRU9iamVjdFdpdGhJbnZlcnNlUmVzb2x2aW5nRUxpc3QvTWFueUludmVyc2UnLDMxKTtiY2IoNzUwLDYyNSxQdmUsQTVkKTtfLkVrPWZ1bmN0aW9uIEI1ZCgpe3JldHVybiB0cnVlfTtfLmxpPWZ1bmN0aW9uIEM1ZChhLGIpe3JldHVybiBJTGQodGhpcyxhLEJEKGIsNTYpKX07dmFyIG45PW1kYih5dmUsJ0VPYmplY3RXaXRoSW52ZXJzZVJlc29sdmluZ0VMaXN0L1Vuc2V0dGFibGUnLDc1MCk7YmNiKDExNzQsNzUwLFB2ZSxENWQpO18uQ2s9ZnVuY3Rpb24gRTVkKCl7cmV0dXJuIHRydWV9O3ZhciBtOT1tZGIoeXZlLCdFT2JqZWN0V2l0aEludmVyc2VSZXNvbHZpbmdFTGlzdC9VbnNldHRhYmxlL01hbnlJbnZlcnNlJywxMTc0KTtiY2IoMTE2NCw2MjIsUHZlKTtfLmFpPWZ1bmN0aW9uIEY1ZCgpe3JldHVybiAodGhpcy5iJjE3OTIpPT0wfTtfLmNpPWZ1bmN0aW9uIEc1ZCgpe3RoaXMuYnw9MX07Xy5Caz1mdW5jdGlvbiBINWQoKXtyZXR1cm4gKHRoaXMuYiY0KSE9MH07Xy5iaj1mdW5jdGlvbiBJNWQoKXtyZXR1cm4gKHRoaXMuYiY0MCkhPTB9O18uQ2s9ZnVuY3Rpb24gSjVkKCl7cmV0dXJuICh0aGlzLmImMTYpIT0wfTtfLkRrPWZ1bmN0aW9uIEs1ZCgpe3JldHVybiAodGhpcy5iJjgpIT0wfTtfLkVrPWZ1bmN0aW9uIEw1ZCgpe3JldHVybiAodGhpcy5iJkR2ZSkhPTB9O18ucms9ZnVuY3Rpb24gTTVkKCl7cmV0dXJuICh0aGlzLmImMzIpIT0wfTtfLkZrPWZ1bmN0aW9uIE41ZCgpe3JldHVybiAodGhpcy5iJnp0ZSkhPTB9O18ud2o9ZnVuY3Rpb24gTzVkKGEpe3JldHVybiAhdGhpcy5kP3RoaXMuYWsoKS5ZaigpLndqKGEpOnFFZCh0aGlzLmQsYSl9O18uZmo9ZnVuY3Rpb24gUDVkKCl7cmV0dXJuICh0aGlzLmImMikhPTA/KHRoaXMuYiYxKSE9MDp0aGlzLmkhPTB9O18uaGk9ZnVuY3Rpb24gUTVkKCl7cmV0dXJuICh0aGlzLmImMTI4KSE9MH07Xy5Yaj1mdW5jdGlvbiBTNWQoKXt2YXIgYTtVeGQodGhpcyk7aWYoKHRoaXMuYiYyKSE9MCl7aWYob2lkKHRoaXMuZSkpe2E9KHRoaXMuYiYxKSE9MDt0aGlzLmImPS0yO0dMZCh0aGlzLG5ldyBxU2QodGhpcy5lLDIsYkxkKHRoaXMuZS5UZygpLHRoaXMuYWsoKSksYSxmYWxzZSkpfWVsc2V7dGhpcy5iJj0tMn19fTtfLm5pPWZ1bmN0aW9uIFQ1ZCgpe3JldHVybiAodGhpcy5iJjE1MzYpPT0wfTtfLmI9MDt2YXIgcTk9bWRiKHl2ZSwnRWNvcmVFTGlzdC9HZW5lcmljJywxMTY0KTtiY2IoMTE2NSwxMTY0LFB2ZSxVNWQpO18uYWs9ZnVuY3Rpb24gVjVkKCl7cmV0dXJuIHRoaXMuYX07dmFyIHA5PW1kYih5dmUsJ0Vjb3JlRUxpc3QvRHluYW1pYycsMTE2NSk7YmNiKDc0Nyw2MyxvdWUsVzVkKTtfLnJpPWZ1bmN0aW9uIFg1ZChhKXtyZXR1cm4gaXpkKHRoaXMuYS5hLGEpfTt2YXIgdTk9bWRiKHl2ZSwnRWNvcmVFTWFwLzEnLDc0Nyk7YmNiKDc0Niw4NSxQdmUsWTVkKTtfLmJpPWZ1bmN0aW9uIFo1ZChhLGIpe3VBZCh0aGlzLmIsQkQoYiwxMzMpKX07Xy5kaT1mdW5jdGlvbiAkNWQoYSxiKXt0QWQodGhpcy5iKX07Xy5laT1mdW5jdGlvbiBfNWQoYSxiLGMpe3ZhciBkOysrKGQ9dGhpcy5iLEJEKGIsMTMzKSxkKS5lfTtfLmZpPWZ1bmN0aW9uIGE2ZChhLGIpe3ZBZCh0aGlzLmIsQkQoYiwxMzMpKX07Xy5naT1mdW5jdGlvbiBiNmQoYSxiLGMpe3ZBZCh0aGlzLmIsQkQoYywxMzMpKTtQRChjKT09PVBEKGIpJiZCRChjLDEzMykuVGgoQ0FkKEJEKGIsMTMzKS5jZCgpKSk7dUFkKHRoaXMuYixCRChiLDEzMykpfTt2YXIgdjk9bWRiKHl2ZSwnRWNvcmVFTWFwL0RlbGVnYXRlRU9iamVjdENvbnRhaW5tZW50RUxpc3QnLDc0Nik7YmNiKDExNzEsMTUxLEF2ZSxjNmQpO3ZhciB4OT1tZGIoeXZlLCdFY29yZUVNYXAvVW5zZXR0YWJsZScsMTE3MSk7YmNiKDExNzIsNzQ2LFB2ZSxkNmQpO18uY2k9ZnVuY3Rpb24gZTZkKCl7dGhpcy5hPXRydWV9O18uZmo9ZnVuY3Rpb24gZjZkKCl7cmV0dXJuIHRoaXMuYX07Xy5Yaj1mdW5jdGlvbiBnNmQoKXt2YXIgYTtVeGQodGhpcyk7aWYob2lkKHRoaXMuZSkpe2E9dGhpcy5hO3RoaXMuYT1mYWxzZTtVaGQodGhpcy5lLG5ldyBxU2QodGhpcy5lLDIsdGhpcy5jLGEsZmFsc2UpKX1lbHNle3RoaXMuYT1mYWxzZX19O18uYT1mYWxzZTt2YXIgdzk9bWRiKHl2ZSwnRWNvcmVFTWFwL1Vuc2V0dGFibGUvVW5zZXR0YWJsZURlbGVnYXRlRU9iamVjdENvbnRhaW5tZW50RUxpc3QnLDExNzIpO2JjYigxMTY4LDIyOCxma2UsQTZkKTtfLmE9ZmFsc2U7Xy5iPWZhbHNlO3ZhciBBOT1tZGIoeXZlLCdFY29yZVV0aWwvQ29waWVyJywxMTY4KTtiY2IoNzQ1LDEsYWllLEM2ZCk7Xy5OYj1mdW5jdGlvbiBENmQoYSl7UnJiKHRoaXMsYSl9O18uT2I9ZnVuY3Rpb24gRTZkKCl7cmV0dXJuIEI2ZCh0aGlzKX07Xy5QYj1mdW5jdGlvbiBGNmQoKXt2YXIgYTtCNmQodGhpcyk7YT10aGlzLmI7dGhpcy5iPW51bGw7cmV0dXJuIGF9O18uUWI9ZnVuY3Rpb24gRzZkKCl7dGhpcy5hLlFiKCl9O3ZhciBCOT1tZGIoeXZlLCdFY29yZVV0aWwvUHJvcGVyQ29udGVudEl0ZXJhdG9yJyw3NDUpO2JjYigxMzgyLDEzODEse30sSjZkKTt2YXIgSDZkO3ZhciBDOT1tZGIoeXZlLCdFY29yZVZhbGlkYXRvcicsMTM4Mik7dmFyIFA2ZDt2YXIgTjk9b2RiKHl2ZSwnRmVhdHVyZU1hcFV0aWwvVmFsaWRhdG9yJyk7YmNiKDEyNjAsMSx7MTk0MjoxfSxVNmQpO18ucmw9ZnVuY3Rpb24gVjZkKGEpe3JldHVybiB0cnVlfTt2YXIgRjk9bWRiKHl2ZSwnRmVhdHVyZU1hcFV0aWwvMScsMTI2MCk7YmNiKDc1NywxLHsxOTQyOjF9LFo2ZCk7Xy5ybD1mdW5jdGlvbiAkNmQoYSl7dmFyIGI7aWYodGhpcy5jPT1hKXJldHVybiB0cnVlO2I9REQoT2hiKHRoaXMuYSxhKSk7aWYoYj09bnVsbCl7aWYoWTZkKHRoaXMsYSkpe182ZCh0aGlzLmEsYSwoQmNiKCksQWNiKSk7cmV0dXJuIHRydWV9ZWxzZXtfNmQodGhpcy5hLGEsKEJjYigpLHpjYikpO3JldHVybiBmYWxzZX19ZWxzZXtyZXR1cm4gYj09KEJjYigpLEFjYil9fTtfLmU9ZmFsc2U7dmFyIFc2ZDt2YXIgSTk9bWRiKHl2ZSwnRmVhdHVyZU1hcFV0aWwvQmFzaWNWYWxpZGF0b3InLDc1Nyk7YmNiKDc1OCw0Myxma2UsYTdkKTt2YXIgSDk9bWRiKHl2ZSwnRmVhdHVyZU1hcFV0aWwvQmFzaWNWYWxpZGF0b3IvQ2FjaGUnLDc1OCk7YmNiKDUwMSw1Mix7MjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDU4OjEsNzY6MSw2OToxLDk1OjF9LGY3ZCk7Xy5WYz1mdW5jdGlvbiBnN2QoYSxiKXtwMmQodGhpcy5jLHRoaXMuYixhLGIpfTtfLkZjPWZ1bmN0aW9uIGg3ZChhKXtyZXR1cm4gcTJkKHRoaXMuYyx0aGlzLmIsYSl9O18uV2M9ZnVuY3Rpb24gaTdkKGEsYil7cmV0dXJuIHMyZCh0aGlzLmMsdGhpcy5iLGEsYil9O18uR2M9ZnVuY3Rpb24gajdkKGEpe3JldHVybiBiN2QodGhpcyxhKX07Xy5YaD1mdW5jdGlvbiBrN2QoYSxiKXt1MmQodGhpcy5jLHRoaXMuYixhLGIpfTtfLmxrPWZ1bmN0aW9uIGw3ZChhLGIpe3JldHVybiB4MmQodGhpcy5jLHRoaXMuYixhLGIpfTtfLnBpPWZ1bmN0aW9uIG03ZChhKXtyZXR1cm4gSjJkKHRoaXMuYyx0aGlzLmIsYSxmYWxzZSl9O18uWmg9ZnVuY3Rpb24gbjdkKCl7cmV0dXJuIHkyZCh0aGlzLmMsdGhpcy5iKX07Xy4kaD1mdW5jdGlvbiBvN2QoKXtyZXR1cm4gejJkKHRoaXMuYyx0aGlzLmIpfTtfLl9oPWZ1bmN0aW9uIHA3ZChhKXtyZXR1cm4gQTJkKHRoaXMuYyx0aGlzLmIsYSl9O18ubWs9ZnVuY3Rpb24gcTdkKGEsYil7cmV0dXJuIGM3ZCh0aGlzLGEsYil9O18uJGI9ZnVuY3Rpb24gcjdkKCl7ZDdkKHRoaXMpfTtfLkhjPWZ1bmN0aW9uIHM3ZChhKXtyZXR1cm4gRTJkKHRoaXMuYyx0aGlzLmIsYSl9O18uSWM9ZnVuY3Rpb24gdDdkKGEpe3JldHVybiBHMmQodGhpcy5jLHRoaXMuYixhKX07Xy5YYj1mdW5jdGlvbiB1N2QoYSl7cmV0dXJuIEoyZCh0aGlzLmMsdGhpcy5iLGEsdHJ1ZSl9O18uV2o9ZnVuY3Rpb24gdjdkKGEpe3JldHVybiB0aGlzfTtfLlhjPWZ1bmN0aW9uIHc3ZChhKXtyZXR1cm4gTDJkKHRoaXMuYyx0aGlzLmIsYSl9O18uZGM9ZnVuY3Rpb24geDdkKCl7cmV0dXJuIGU3ZCh0aGlzKX07Xy5maj1mdW5jdGlvbiB5N2QoKXtyZXR1cm4gIVIyZCh0aGlzLmMsdGhpcy5iKX07Xy5LYz1mdW5jdGlvbiB6N2QoKXtyZXR1cm4gUzJkKHRoaXMuYyx0aGlzLmIpfTtfLlljPWZ1bmN0aW9uIEE3ZCgpe3JldHVybiBVMmQodGhpcy5jLHRoaXMuYil9O18uWmM9ZnVuY3Rpb24gQjdkKGEpe3JldHVybiBWMmQodGhpcy5jLHRoaXMuYixhKX07Xy5paT1mdW5jdGlvbiBDN2QoYSxiKXtyZXR1cm4gWDJkKHRoaXMuYyx0aGlzLmIsYSxiKX07Xy5qaT1mdW5jdGlvbiBEN2QoYSxiKXtZMmQodGhpcy5jLHRoaXMuYixhLGIpfTtfLiRjPWZ1bmN0aW9uIEU3ZChhKXtyZXR1cm4gWjJkKHRoaXMuYyx0aGlzLmIsYSl9O18uTWM9ZnVuY3Rpb24gRjdkKGEpe3JldHVybiAkMmQodGhpcy5jLHRoaXMuYixhKX07Xy5fYz1mdW5jdGlvbiBHN2QoYSxiKXtyZXR1cm4gZTNkKHRoaXMuYyx0aGlzLmIsYSxiKX07Xy5XYj1mdW5jdGlvbiBIN2QoYSl7RDJkKHRoaXMuYyx0aGlzLmIpO2I3ZCh0aGlzLEJEKGEsMTUpKX07Xy5nYz1mdW5jdGlvbiBJN2QoKXtyZXR1cm4gbjNkKHRoaXMuYyx0aGlzLmIpfTtfLlBjPWZ1bmN0aW9uIEo3ZCgpe3JldHVybiBvM2QodGhpcy5jLHRoaXMuYil9O18uUWM9ZnVuY3Rpb24gSzdkKGEpe3JldHVybiBxM2QodGhpcy5jLHRoaXMuYixhKX07Xy5JYj1mdW5jdGlvbiBMN2QoKXt2YXIgYSxiO2I9bmV3IEhmYjtiLmErPSdbJztmb3IoYT15MmQodGhpcy5jLHRoaXMuYik7YjRkKGEpOyl7RWZiKGIseGZiKGQ0ZChhKSkpO2I0ZChhKSYmKGIuYSs9U2hlLGIpfWIuYSs9J10nO3JldHVybiBiLmF9O18uWGo9ZnVuY3Rpb24gTTdkKCl7RDJkKHRoaXMuYyx0aGlzLmIpfTt2YXIgSjk9bWRiKHl2ZSwnRmVhdHVyZU1hcFV0aWwvRmVhdHVyZUVMaXN0Jyw1MDEpO2JjYig2MjcsMzYsZnZlLE83ZCk7Xy55aT1mdW5jdGlvbiBQN2QoYSl7cmV0dXJuIE43ZCh0aGlzLGEpfTtfLkRpPWZ1bmN0aW9uIFE3ZChhKXt2YXIgYixjLGQsZSxmLGcsaDtzd2l0Y2godGhpcy5kKXtjYXNlIDE6Y2FzZSAyOntmPWEuQWkoKTtpZihQRChmKT09PVBEKHRoaXMuYykmJk43ZCh0aGlzLG51bGwpPT1hLnlpKG51bGwpKXt0aGlzLmc9YS56aSgpO2EueGkoKT09MSYmKHRoaXMuZD0xKTtyZXR1cm4gdHJ1ZX1icmVha31jYXNlIDM6e2U9YS54aSgpO3N3aXRjaChlKXtjYXNlIDM6e2Y9YS5BaSgpO2lmKFBEKGYpPT09UEQodGhpcy5jKSYmTjdkKHRoaXMsbnVsbCk9PWEueWkobnVsbCkpe3RoaXMuZD01O2I9bmV3IHp1ZCgyKTt3dGQoYix0aGlzLmcpO3d0ZChiLGEuemkoKSk7dGhpcy5nPWI7cmV0dXJuIHRydWV9YnJlYWt9fWJyZWFrfWNhc2UgNTp7ZT1hLnhpKCk7c3dpdGNoKGUpe2Nhc2UgMzp7Zj1hLkFpKCk7aWYoUEQoZik9PT1QRCh0aGlzLmMpJiZON2QodGhpcyxudWxsKT09YS55aShudWxsKSl7Yz1CRCh0aGlzLmcsMTQpO2MuRmMoYS56aSgpKTtyZXR1cm4gdHJ1ZX1icmVha319YnJlYWt9Y2FzZSA0OntlPWEueGkoKTtzd2l0Y2goZSl7Y2FzZSAzOntmPWEuQWkoKTtpZihQRChmKT09PVBEKHRoaXMuYykmJk43ZCh0aGlzLG51bGwpPT1hLnlpKG51bGwpKXt0aGlzLmQ9MTt0aGlzLmc9YS56aSgpO3JldHVybiB0cnVlfWJyZWFrfWNhc2UgNDp7Zj1hLkFpKCk7aWYoUEQoZik9PT1QRCh0aGlzLmMpJiZON2QodGhpcyxudWxsKT09YS55aShudWxsKSl7dGhpcy5kPTY7aD1uZXcgenVkKDIpO3d0ZChoLHRoaXMubik7d3RkKGgsYS5CaSgpKTt0aGlzLm49aDtnPU9DKEdDKFdELDEpLG9qZSwyNSwxNSxbdGhpcy5vLGEuQ2koKV0pO3RoaXMuZz1nO3JldHVybiB0cnVlfWJyZWFrfX1icmVha31jYXNlIDY6e2U9YS54aSgpO3N3aXRjaChlKXtjYXNlIDQ6e2Y9YS5BaSgpO2lmKFBEKGYpPT09UEQodGhpcy5jKSYmTjdkKHRoaXMsbnVsbCk9PWEueWkobnVsbCkpe2M9QkQodGhpcy5uLDE0KTtjLkZjKGEuQmkoKSk7Zz1CRCh0aGlzLmcsNDgpO2Q9S0MoV0Qsb2plLDI1LGcubGVuZ3RoKzEsMTUsMSk7JGZiKGcsMCxkLDAsZy5sZW5ndGgpO2RbZy5sZW5ndGhdPWEuQ2koKTt0aGlzLmc9ZDtyZXR1cm4gdHJ1ZX1icmVha319YnJlYWt9fXJldHVybiBmYWxzZX07dmFyIEs5PW1kYih5dmUsJ0ZlYXR1cmVNYXBVdGlsL0ZlYXR1cmVFTm90aWZpY2F0aW9uSW1wbCcsNjI3KTtiY2IoNTUyLDUwMSx7MjA6MSwyODoxLDUyOjEsMTQ6MSwxNToxLDU4OjEsNzY6MSwxNTM6MSwyMTU6MSwxOTM3OjEsNjk6MSw5NToxfSxSN2QpO18uZGw9ZnVuY3Rpb24gUzdkKGEsYil7cmV0dXJuIHEyZCh0aGlzLmMsYSxiKX07Xy5lbD1mdW5jdGlvbiBUN2QoYSxiLGMpe3JldHVybiB4MmQodGhpcy5jLGEsYixjKX07Xy5mbD1mdW5jdGlvbiBVN2QoYSxiLGMpe3JldHVybiBDMmQodGhpcy5jLGEsYixjKX07Xy5nbD1mdW5jdGlvbiBWN2QoKXtyZXR1cm4gdGhpc307Xy5obD1mdW5jdGlvbiBXN2QoYSxiKXtyZXR1cm4gSzJkKHRoaXMuYyxhLGIpfTtfLmlsPWZ1bmN0aW9uIFg3ZChhKXtyZXR1cm4gQkQoSjJkKHRoaXMuYyx0aGlzLmIsYSxmYWxzZSksNzIpLmFrKCl9O18uamw9ZnVuY3Rpb24gWTdkKGEpe3JldHVybiBCRChKMmQodGhpcy5jLHRoaXMuYixhLGZhbHNlKSw3MikuZGQoKX07Xy5rbD1mdW5jdGlvbiBaN2QoKXtyZXR1cm4gdGhpcy5hfTtfLmxsPWZ1bmN0aW9uICQ3ZChhKXtyZXR1cm4gIVIyZCh0aGlzLmMsYSl9O18ubWw9ZnVuY3Rpb24gXzdkKGEsYil7ZjNkKHRoaXMuYyxhLGIpfTtfLm5sPWZ1bmN0aW9uIGE4ZChhKXtyZXR1cm4gZzNkKHRoaXMuYyxhKX07Xy5vbD1mdW5jdGlvbiBiOGQoYSl7czNkKHRoaXMuYyxhKX07dmFyIEw5PW1kYih5dmUsJ0ZlYXR1cmVNYXBVdGlsL0ZlYXR1cmVGZWF0dXJlTWFwJyw1NTIpO2JjYigxMjU5LDEsenZlLGM4ZCk7Xy5Xaj1mdW5jdGlvbiBkOGQoYSl7cmV0dXJuIEoyZCh0aGlzLmIsdGhpcy5hLC0xLGEpfTtfLmZqPWZ1bmN0aW9uIGU4ZCgpe3JldHVybiAhUjJkKHRoaXMuYix0aGlzLmEpfTtfLldiPWZ1bmN0aW9uIGY4ZChhKXtmM2QodGhpcy5iLHRoaXMuYSxhKX07Xy5Yaj1mdW5jdGlvbiBnOGQoKXtEMmQodGhpcy5iLHRoaXMuYSl9O3ZhciBNOT1tZGIoeXZlLCdGZWF0dXJlTWFwVXRpbC9GZWF0dXJlVmFsdWUnLDEyNTkpO3ZhciBoOGQsaThkLGo4ZCxrOGQsbDhkO3ZhciBROT1vZGIoSXdlLCdBbnlUeXBlJyk7YmNiKDY2Niw2MCxUaWUsbjhkKTt2YXIgUjk9bWRiKEl3ZSwnSW52YWxpZERhdGF0eXBlVmFsdWVFeGNlcHRpb24nLDY2Nik7dmFyIFM5PW9kYihJd2UsSndlKTt2YXIgVDk9b2RiKEl3ZSxLd2UpO3ZhciBVOT1vZGIoSXdlLEx3ZSk7dmFyIG84ZDt2YXIgcThkO3ZhciBzOGQsdDhkLHU4ZCx2OGQsdzhkLHg4ZCx5OGQsejhkLEE4ZCxCOGQsQzhkLEQ4ZCxFOGQsRjhkLEc4ZCxIOGQsSThkLEo4ZCxLOGQsTDhkLE04ZCxOOGQsTzhkLFA4ZDtiY2IoODMwLDUwNix7MTA1OjEsOTI6MSw5MDoxLDU2OjEsNDk6MSw5NzoxLDg0MzoxfSxSOGQpO18uX2c9ZnVuY3Rpb24gUzhkKGEsYixjKXtzd2l0Y2goYSl7Y2FzZSAwOmlmKGMpcmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSx0aGlzLmM7cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSx0aGlzLmMuYjtjYXNlIDE6aWYoYylyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpLEJEKFQyZCh0aGlzLmMsKFE4ZCgpLHQ4ZCkpLDE1Myk7cmV0dXJuICghdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKSwyMTUpKS5rbCgpO2Nhc2UgMjppZihjKXJldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyB1M2QodGhpcywyKSksdGhpcy5iO3JldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyB1M2QodGhpcywyKSksdGhpcy5iLmI7fXJldHVybiBiaWQodGhpcyxhLWFMZCh0aGlzLnpoKCkpLFhLZCgodGhpcy5qJjIpPT0wP3RoaXMuemgoKTooIXRoaXMuayYmKHRoaXMuaz1uZXcgSEdkKSx0aGlzLmspLmNrKCksYSksYixjKX07Xy5qaD1mdW5jdGlvbiBUOGQoYSxiLGMpe3ZhciBkO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxCMmQodGhpcy5jLGEsYyk7Y2FzZSAxOnJldHVybiAoIXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpLEJEKEJEKFQyZCh0aGlzLmMsKFE4ZCgpLHQ4ZCkpLDE1MyksNjkpKS5tayhhLGMpO2Nhc2UgMjpyZXR1cm4gIXRoaXMuYiYmKHRoaXMuYj1uZXcgdTNkKHRoaXMsMikpLEIyZCh0aGlzLmIsYSxjKTt9cmV0dXJuIGQ9QkQoWEtkKCh0aGlzLmomMik9PTA/dGhpcy56aCgpOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxiKSw2NiksZC5OaigpLlJqKHRoaXMsQWlkKHRoaXMpLGItYUxkKHRoaXMuemgoKSksYSxjKX07Xy5saD1mdW5jdGlvbiBVOGQoYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLmMmJnRoaXMuYy5pIT0wO2Nhc2UgMTpyZXR1cm4gISghdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKSkuZGMoKTtjYXNlIDI6cmV0dXJuICEhdGhpcy5iJiZ0aGlzLmIuaSE9MDt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKHRoaXMuemgoKSksWEtkKCh0aGlzLmomMik9PTA/dGhpcy56aCgpOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSl9O18uc2g9ZnVuY3Rpb24gVjhkKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSk7ZDNkKHRoaXMuYyxiKTtyZXR1cm47Y2FzZSAxOighdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKSwyMTUpKS5XYihiKTtyZXR1cm47Y2FzZSAyOiF0aGlzLmImJih0aGlzLmI9bmV3IHUzZCh0aGlzLDIpKTtkM2QodGhpcy5iLGIpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKHRoaXMuaiYyKT09MD90aGlzLnpoKCk6KCF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rKS5jaygpLGEpLGIpfTtfLnpoPWZ1bmN0aW9uIFc4ZCgpe3JldHVybiBROGQoKSxzOGR9O18uQmg9ZnVuY3Rpb24gWDhkKGEpe3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpO1V4ZCh0aGlzLmMpO3JldHVybjtjYXNlIDE6KCF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxCRChUMmQodGhpcy5jLChROGQoKSx0OGQpKSwxNTMpKS4kYigpO3JldHVybjtjYXNlIDI6IXRoaXMuYiYmKHRoaXMuYj1uZXcgdTNkKHRoaXMsMikpO1V4ZCh0aGlzLmIpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQodGhpcy56aCgpKSxYS2QoKHRoaXMuaiYyKT09MD90aGlzLnpoKCk6KCF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rKS5jaygpLGEpKX07Xy5JYj1mdW5jdGlvbiBZOGQoKXt2YXIgYTtpZigodGhpcy5qJjQpIT0wKXJldHVybiBFaWQodGhpcyk7YT1uZXcgSmZiKEVpZCh0aGlzKSk7YS5hKz0nIChtaXhlZDogJztEZmIoYSx0aGlzLmMpO2EuYSs9JywgYW55QXR0cmlidXRlOiAnO0RmYihhLHRoaXMuYik7YS5hKz0nKSc7cmV0dXJuIGEuYX07dmFyIFY5PW1kYihNd2UsJ0FueVR5cGVJbXBsJyw4MzApO2JjYig2NjcsNTA2LHsxMDU6MSw5MjoxLDkwOjEsNTY6MSw0OToxLDk3OjEsMjAyMToxLDY2NzoxfSxfOGQpO18uX2c9ZnVuY3Rpb24gYTlkKGEsYixjKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLmE7Y2FzZSAxOnJldHVybiB0aGlzLmI7fXJldHVybiBiaWQodGhpcyxhLWFMZCgoUThkKCksRjhkKSksWEtkKCh0aGlzLmomMik9PTA/RjhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSxiLGMpfTtfLmxoPWZ1bmN0aW9uIGI5ZChhKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLmEhPW51bGw7Y2FzZSAxOnJldHVybiB0aGlzLmIhPW51bGw7fXJldHVybiBjaWQodGhpcyxhLWFMZCgoUThkKCksRjhkKSksWEtkKCh0aGlzLmomMik9PTA/RjhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSl9O18uc2g9ZnVuY3Rpb24gYzlkKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDpaOGQodGhpcyxHRChiKSk7cmV0dXJuO2Nhc2UgMTokOGQodGhpcyxHRChiKSk7cmV0dXJuO31kaWQodGhpcyxhLWFMZCgoUThkKCksRjhkKSksWEtkKCh0aGlzLmomMik9PTA/RjhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSxiKX07Xy56aD1mdW5jdGlvbiBkOWQoKXtyZXR1cm4gUThkKCksRjhkfTtfLkJoPWZ1bmN0aW9uIGU5ZChhKXtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMuYT1udWxsO3JldHVybjtjYXNlIDE6dGhpcy5iPW51bGw7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoUThkKCksRjhkKSksWEtkKCh0aGlzLmomMik9PTA/RjhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSl9O18uSWI9ZnVuY3Rpb24gZjlkKCl7dmFyIGE7aWYoKHRoaXMuaiY0KSE9MClyZXR1cm4gRWlkKHRoaXMpO2E9bmV3IEpmYihFaWQodGhpcykpO2EuYSs9JyAoZGF0YTogJztFZmIoYSx0aGlzLmEpO2EuYSs9JywgdGFyZ2V0OiAnO0VmYihhLHRoaXMuYik7YS5hKz0nKSc7cmV0dXJuIGEuYX07Xy5hPW51bGw7Xy5iPW51bGw7dmFyIFc5PW1kYihNd2UsJ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkltcGwnLDY2Nyk7YmNiKDY2OCw4MzAsezEwNToxLDkyOjEsOTA6MSw1NjoxLDQ5OjEsOTc6MSw4NDM6MSwyMDIyOjEsNjY4OjF9LGk5ZCk7Xy5fZz1mdW5jdGlvbiBqOWQoYSxiLGMpe3N3aXRjaChhKXtjYXNlIDA6aWYoYylyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpLHRoaXMuYztyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpLHRoaXMuYy5iO2Nhc2UgMTppZihjKXJldHVybiAhdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKTtyZXR1cm4gKCF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxCRChCRChUMmQodGhpcy5jLChROGQoKSx0OGQpKSwxNTMpLDIxNSkpLmtsKCk7Y2FzZSAyOmlmKGMpcmV0dXJuICF0aGlzLmImJih0aGlzLmI9bmV3IHUzZCh0aGlzLDIpKSx0aGlzLmI7cmV0dXJuICF0aGlzLmImJih0aGlzLmI9bmV3IHUzZCh0aGlzLDIpKSx0aGlzLmIuYjtjYXNlIDM6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxHRChLMmQodGhpcy5jLChROGQoKSxJOGQpLHRydWUpKTtjYXNlIDQ6cmV0dXJuIGo2ZCh0aGlzLmEsKCF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxHRChLMmQodGhpcy5jLChROGQoKSxJOGQpLHRydWUpKSkpO2Nhc2UgNTpyZXR1cm4gdGhpcy5hO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKFE4ZCgpLEg4ZCkpLFhLZCgodGhpcy5qJjIpPT0wP0g4ZDooIXRoaXMuayYmKHRoaXMuaz1uZXcgSEdkKSx0aGlzLmspLmNrKCksYSksYixjKX07Xy5saD1mdW5jdGlvbiBrOWQoYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gISF0aGlzLmMmJnRoaXMuYy5pIT0wO2Nhc2UgMTpyZXR1cm4gISghdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKSkuZGMoKTtjYXNlIDI6cmV0dXJuICEhdGhpcy5iJiZ0aGlzLmIuaSE9MDtjYXNlIDM6cmV0dXJuICF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxHRChLMmQodGhpcy5jLChROGQoKSxJOGQpLHRydWUpKSE9bnVsbDtjYXNlIDQ6cmV0dXJuIGo2ZCh0aGlzLmEsKCF0aGlzLmMmJih0aGlzLmM9bmV3IHUzZCh0aGlzLDApKSxHRChLMmQodGhpcy5jLChROGQoKSxJOGQpLHRydWUpKSkpIT1udWxsO2Nhc2UgNTpyZXR1cm4gISF0aGlzLmE7fXJldHVybiBjaWQodGhpcyxhLWFMZCgoUThkKCksSDhkKSksWEtkKCh0aGlzLmomMik9PTA/SDhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSl9O18uc2g9ZnVuY3Rpb24gbDlkKGEsYil7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSk7ZDNkKHRoaXMuYyxiKTtyZXR1cm47Y2FzZSAxOighdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSksQkQoQkQoVDJkKHRoaXMuYywoUThkKCksdDhkKSksMTUzKSwyMTUpKS5XYihiKTtyZXR1cm47Y2FzZSAyOiF0aGlzLmImJih0aGlzLmI9bmV3IHUzZCh0aGlzLDIpKTtkM2QodGhpcy5iLGIpO3JldHVybjtjYXNlIDM6aDlkKHRoaXMsR0QoYikpO3JldHVybjtjYXNlIDQ6aDlkKHRoaXMsaDZkKHRoaXMuYSxiKSk7cmV0dXJuO2Nhc2UgNTpnOWQodGhpcyxCRChiLDE0OCkpO3JldHVybjt9ZGlkKHRoaXMsYS1hTGQoKFE4ZCgpLEg4ZCkpLFhLZCgodGhpcy5qJjIpPT0wP0g4ZDooIXRoaXMuayYmKHRoaXMuaz1uZXcgSEdkKSx0aGlzLmspLmNrKCksYSksYil9O18uemg9ZnVuY3Rpb24gbTlkKCl7cmV0dXJuIFE4ZCgpLEg4ZH07Xy5CaD1mdW5jdGlvbiBuOWQoYSl7c3dpdGNoKGEpe2Nhc2UgMDohdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSk7VXhkKHRoaXMuYyk7cmV0dXJuO2Nhc2UgMTooIXRoaXMuYyYmKHRoaXMuYz1uZXcgdTNkKHRoaXMsMCkpLEJEKFQyZCh0aGlzLmMsKFE4ZCgpLHQ4ZCkpLDE1MykpLiRiKCk7cmV0dXJuO2Nhc2UgMjohdGhpcy5iJiYodGhpcy5iPW5ldyB1M2QodGhpcywyKSk7VXhkKHRoaXMuYik7cmV0dXJuO2Nhc2UgMzohdGhpcy5jJiYodGhpcy5jPW5ldyB1M2QodGhpcywwKSk7ZjNkKHRoaXMuYywoUThkKCksSThkKSxudWxsKTtyZXR1cm47Y2FzZSA0Omg5ZCh0aGlzLGg2ZCh0aGlzLmEsbnVsbCkpO3JldHVybjtjYXNlIDU6dGhpcy5hPW51bGw7cmV0dXJuO31laWQodGhpcyxhLWFMZCgoUThkKCksSDhkKSksWEtkKCh0aGlzLmomMik9PTA/SDhkOighdGhpcy5rJiYodGhpcy5rPW5ldyBIR2QpLHRoaXMuaykuY2soKSxhKSl9O3ZhciBYOT1tZGIoTXdlLCdTaW1wbGVBbnlUeXBlSW1wbCcsNjY4KTtiY2IoNjY5LDUwNix7MTA1OjEsOTI6MSw5MDoxLDU2OjEsNDk6MSw5NzoxLDIwMjM6MSw2Njk6MX0sbzlkKTtfLl9nPWZ1bmN0aW9uIHA5ZChhLGIsYyl7c3dpdGNoKGEpe2Nhc2UgMDppZihjKXJldHVybiAhdGhpcy5hJiYodGhpcy5hPW5ldyB1M2QodGhpcywwKSksdGhpcy5hO3JldHVybiAhdGhpcy5hJiYodGhpcy5hPW5ldyB1M2QodGhpcywwKSksdGhpcy5hLmI7Y2FzZSAxOnJldHVybiBjPyghdGhpcy5iJiYodGhpcy5iPW5ldyBkSWQoKGpHZCgpLGZHZCkseDYsdGhpcywxKSksdGhpcy5iKTooIXRoaXMuYiYmKHRoaXMuYj1uZXcgZElkKChqR2QoKSxmR2QpLHg2LHRoaXMsMSkpLEZBZCh0aGlzLmIpKTtjYXNlIDI6cmV0dXJuIGM/KCF0aGlzLmMmJih0aGlzLmM9bmV3IGRJZCgoakdkKCksZkdkKSx4Nix0aGlzLDIpKSx0aGlzLmMpOighdGhpcy5jJiYodGhpcy5jPW5ldyBkSWQoKGpHZCgpLGZHZCkseDYsdGhpcywyKSksRkFkKHRoaXMuYykpO2Nhc2UgMzpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpLFQyZCh0aGlzLmEsKFE4ZCgpLEw4ZCkpO2Nhc2UgNDpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpLFQyZCh0aGlzLmEsKFE4ZCgpLE04ZCkpO2Nhc2UgNTpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpLFQyZCh0aGlzLmEsKFE4ZCgpLE84ZCkpO2Nhc2UgNjpyZXR1cm4gIXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpLFQyZCh0aGlzLmEsKFE4ZCgpLFA4ZCkpO31yZXR1cm4gYmlkKHRoaXMsYS1hTGQoKFE4ZCgpLEs4ZCkpLFhLZCgodGhpcy5qJjIpPT0wP0s4ZDooIXRoaXMuayYmKHRoaXMuaz1uZXcgSEdkKSx0aGlzLmspLmNrKCksYSksYixjKX07Xy5qaD1mdW5jdGlvbiBxOWQoYSxiLGMpe3ZhciBkO3N3aXRjaChiKXtjYXNlIDA6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSxCMmQodGhpcy5hLGEsYyk7Y2FzZSAxOnJldHVybiAhdGhpcy5iJiYodGhpcy5iPW5ldyBkSWQoKGpHZCgpLGZHZCkseDYsdGhpcywxKSksYklkKHRoaXMuYixhLGMpO2Nhc2UgMjpyZXR1cm4gIXRoaXMuYyYmKHRoaXMuYz1uZXcgZElkKChqR2QoKSxmR2QpLHg2LHRoaXMsMikpLGJJZCh0aGlzLmMsYSxjKTtjYXNlIDU6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSxjN2QoVDJkKHRoaXMuYSwoUThkKCksTzhkKSksYSxjKTt9cmV0dXJuIGQ9QkQoWEtkKCh0aGlzLmomMik9PTA/KFE4ZCgpLEs4ZCk6KCF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rKS5jaygpLGIpLDY2KSxkLk5qKCkuUmoodGhpcyxBaWQodGhpcyksYi1hTGQoKFE4ZCgpLEs4ZCkpLGEsYyl9O18ubGg9ZnVuY3Rpb24gcjlkKGEpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuICEhdGhpcy5hJiZ0aGlzLmEuaSE9MDtjYXNlIDE6cmV0dXJuICEhdGhpcy5iJiZ0aGlzLmIuZiE9MDtjYXNlIDI6cmV0dXJuICEhdGhpcy5jJiZ0aGlzLmMuZiE9MDtjYXNlIDM6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSwhZTdkKFQyZCh0aGlzLmEsKFE4ZCgpLEw4ZCkpKTtjYXNlIDQ6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSwhZTdkKFQyZCh0aGlzLmEsKFE4ZCgpLE04ZCkpKTtjYXNlIDU6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSwhZTdkKFQyZCh0aGlzLmEsKFE4ZCgpLE84ZCkpKTtjYXNlIDY6cmV0dXJuICF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKSwhZTdkKFQyZCh0aGlzLmEsKFE4ZCgpLFA4ZCkpKTt9cmV0dXJuIGNpZCh0aGlzLGEtYUxkKChROGQoKSxLOGQpKSxYS2QoKHRoaXMuaiYyKT09MD9LOGQ6KCF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rKS5jaygpLGEpKX07Xy5zaD1mdW5jdGlvbiBzOWQoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkM2QodGhpcy5hLGIpO3JldHVybjtjYXNlIDE6IXRoaXMuYiYmKHRoaXMuYj1uZXcgZElkKChqR2QoKSxmR2QpLHg2LHRoaXMsMSkpO2NJZCh0aGlzLmIsYik7cmV0dXJuO2Nhc2UgMjohdGhpcy5jJiYodGhpcy5jPW5ldyBkSWQoKGpHZCgpLGZHZCkseDYsdGhpcywyKSk7Y0lkKHRoaXMuYyxiKTtyZXR1cm47Y2FzZSAzOiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksTDhkKSkpOyF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtiN2QoVDJkKHRoaXMuYSxMOGQpLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA0OiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksTThkKSkpOyF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtiN2QoVDJkKHRoaXMuYSxNOGQpLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA1OiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksTzhkKSkpOyF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtiN2QoVDJkKHRoaXMuYSxPOGQpLEJEKGIsMTQpKTtyZXR1cm47Y2FzZSA2OiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksUDhkKSkpOyF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtiN2QoVDJkKHRoaXMuYSxQOGQpLEJEKGIsMTQpKTtyZXR1cm47fWRpZCh0aGlzLGEtYUxkKChROGQoKSxLOGQpKSxYS2QoKHRoaXMuaiYyKT09MD9LOGQ6KCF0aGlzLmsmJih0aGlzLms9bmV3IEhHZCksdGhpcy5rKS5jaygpLGEpLGIpfTtfLnpoPWZ1bmN0aW9uIHQ5ZCgpe3JldHVybiBROGQoKSxLOGR9O18uQmg9ZnVuY3Rpb24gdTlkKGEpe3N3aXRjaChhKXtjYXNlIDA6IXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpO1V4ZCh0aGlzLmEpO3JldHVybjtjYXNlIDE6IXRoaXMuYiYmKHRoaXMuYj1uZXcgZElkKChqR2QoKSxmR2QpLHg2LHRoaXMsMSkpO3RoaXMuYi5jLiRiKCk7cmV0dXJuO2Nhc2UgMjohdGhpcy5jJiYodGhpcy5jPW5ldyBkSWQoKGpHZCgpLGZHZCkseDYsdGhpcywyKSk7dGhpcy5jLmMuJGIoKTtyZXR1cm47Y2FzZSAzOiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksTDhkKSkpO3JldHVybjtjYXNlIDQ6IXRoaXMuYSYmKHRoaXMuYT1uZXcgdTNkKHRoaXMsMCkpO2Q3ZChUMmQodGhpcy5hLChROGQoKSxNOGQpKSk7cmV0dXJuO2Nhc2UgNTohdGhpcy5hJiYodGhpcy5hPW5ldyB1M2QodGhpcywwKSk7ZDdkKFQyZCh0aGlzLmEsKFE4ZCgpLE84ZCkpKTtyZXR1cm47Y2FzZSA2OiF0aGlzLmEmJih0aGlzLmE9bmV3IHUzZCh0aGlzLDApKTtkN2QoVDJkKHRoaXMuYSwoUThkKCksUDhkKSkpO3JldHVybjt9ZWlkKHRoaXMsYS1hTGQoKFE4ZCgpLEs4ZCkpLFhLZCgodGhpcy5qJjIpPT0wP0s4ZDooIXRoaXMuayYmKHRoaXMuaz1uZXcgSEdkKSx0aGlzLmspLmNrKCksYSkpfTtfLkliPWZ1bmN0aW9uIHY5ZCgpe3ZhciBhO2lmKCh0aGlzLmomNCkhPTApcmV0dXJuIEVpZCh0aGlzKTthPW5ldyBKZmIoRWlkKHRoaXMpKTthLmErPScgKG1peGVkOiAnO0RmYihhLHRoaXMuYSk7YS5hKz0nKSc7cmV0dXJuIGEuYX07dmFyIFk5PW1kYihNd2UsJ1hNTFR5cGVEb2N1bWVudFJvb3RJbXBsJyw2NjkpO2JjYigxOTE5LDcwNCx7MTA1OjEsOTI6MSw5MDoxLDQ3MToxLDE0NzoxLDU2OjEsMTA4OjEsNDk6MSw5NzoxLDE1MDoxLDExNDoxLDExNToxLDIwMjQ6MX0sVTlkKTtfLkloPWZ1bmN0aW9uIFY5ZChhLGIpe3N3aXRjaChhLnlqKCkpe2Nhc2UgNzpjYXNlIDg6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxNjpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDI1OmNhc2UgMjY6Y2FzZSAzMjpjYXNlIDMzOmNhc2UgMzQ6Y2FzZSAzNjpjYXNlIDM3OmNhc2UgNDQ6Y2FzZSA0NTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MzpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDU4OmNhc2UgNjA6Y2FzZSA2MTpjYXNlIDQ6cmV0dXJuIGI9PW51bGw/bnVsbDpmY2IoYik7Y2FzZSAxOTpjYXNlIDI4OmNhc2UgMjk6Y2FzZSAzNTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MTpjYXNlIDQ2OmNhc2UgNTI6Y2FzZSA1NDpjYXNlIDU6cmV0dXJuIEdEKGIpO2Nhc2UgNjpyZXR1cm4gQzlkKEJEKGIsMTkwKSk7Y2FzZSAxMjpjYXNlIDQ3OmNhc2UgNDk6Y2FzZSAxMTpyZXR1cm4gVm1kKHRoaXMsYSxiKTtjYXNlIDEzOnJldHVybiBiPT1udWxsP251bGw6cWdiKEJEKGIsMjQwKSk7Y2FzZSAxNTpjYXNlIDE0OnJldHVybiBiPT1udWxsP251bGw6RDlkKEVkYihFRChiKSkpO2Nhc2UgMTc6cmV0dXJuIEU5ZCgoUThkKCksYikpO2Nhc2UgMTg6cmV0dXJuIEU5ZChiKTtjYXNlIDIxOmNhc2UgMjA6cmV0dXJuIGI9PW51bGw/bnVsbDpGOWQoQkQoYiwxNTUpLmEpO2Nhc2UgMjc6cmV0dXJuIEc5ZChCRChiLDE5MCkpO2Nhc2UgMzA6cmV0dXJuIEg5ZCgoUThkKCksQkQoYiwxNSkpKTtjYXNlIDMxOnJldHVybiBIOWQoQkQoYiwxNSkpO2Nhc2UgNDA6cmV0dXJuIEs5ZCgoUThkKCksYikpO2Nhc2UgNDI6cmV0dXJuIEk5ZCgoUThkKCksYikpO2Nhc2UgNDM6cmV0dXJuIEk5ZChiKTtjYXNlIDU5OmNhc2UgNDg6cmV0dXJuIEo5ZCgoUThkKCksYikpO2RlZmF1bHQ6dGhyb3cgdmJiKG5ldyBXZGIodHRlK2EubmUoKSt1dGUpKTt9fTtfLkpoPWZ1bmN0aW9uIFc5ZChhKXt2YXIgYixjLGQsZSxmO3N3aXRjaChhLkc9PS0xJiYoYS5HPShjPWJLZChhKSxjP0hMZChjLk1oKCksYSk6LTEpKSxhLkcpe2Nhc2UgMDpyZXR1cm4gYj1uZXcgUjhkLGI7Y2FzZSAxOnJldHVybiBkPW5ldyBfOGQsZDtjYXNlIDI6cmV0dXJuIGU9bmV3IGk5ZCxlO2Nhc2UgMzpyZXR1cm4gZj1uZXcgbzlkLGY7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYih4dGUrYS56Yit1dGUpKTt9fTtfLktoPWZ1bmN0aW9uIFg5ZChhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyO3N3aXRjaChhLnlqKCkpe2Nhc2UgNTpjYXNlIDUyOmNhc2UgNDpyZXR1cm4gYjtjYXNlIDY6cmV0dXJuIEw5ZChiKTtjYXNlIDg6Y2FzZSA3OnJldHVybiBiPT1udWxsP251bGw6QjlkKGIpO2Nhc2UgOTpyZXR1cm4gYj09bnVsbD9udWxsOlNjYihJY2IoKGQ9UWdlKGIsdHJ1ZSksZC5sZW5ndGg+MCYmKEJDYigwLGQubGVuZ3RoKSxkLmNoYXJDb2RlQXQoMCk9PTQzKT9kLnN1YnN0cigxKTpkKSwtMTI4LDEyNyk8PDI0Pj4yNCk7Y2FzZSAxMDpyZXR1cm4gYj09bnVsbD9udWxsOlNjYihJY2IoKGU9UWdlKGIsdHJ1ZSksZS5sZW5ndGg+MCYmKEJDYigwLGUubGVuZ3RoKSxlLmNoYXJDb2RlQXQoMCk9PTQzKT9lLnN1YnN0cigxKTplKSwtMTI4LDEyNyk8PDI0Pj4yNCk7Y2FzZSAxMTpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLHc4ZCksYikpO2Nhc2UgMTI6cmV0dXJuIEdEKFdtZCh0aGlzLChROGQoKSx4OGQpLGIpKTtjYXNlIDEzOnJldHVybiBiPT1udWxsP251bGw6bmV3IHRnYihRZ2UoYix0cnVlKSk7Y2FzZSAxNTpjYXNlIDE0OnJldHVybiBNOWQoYik7Y2FzZSAxNjpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLHk4ZCksYikpO2Nhc2UgMTc6cmV0dXJuIE45ZCgoUThkKCksYikpO2Nhc2UgMTg6cmV0dXJuIE45ZChiKTtjYXNlIDI4OmNhc2UgMjk6Y2FzZSAzNTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MTpjYXNlIDU0OmNhc2UgMTk6cmV0dXJuIFFnZShiLHRydWUpO2Nhc2UgMjE6Y2FzZSAyMDpyZXR1cm4gTzlkKGIpO2Nhc2UgMjI6cmV0dXJuIEdEKFdtZCh0aGlzLChROGQoKSx6OGQpLGIpKTtjYXNlIDIzOnJldHVybiBHRChXbWQodGhpcywoUThkKCksQThkKSxiKSk7Y2FzZSAyNDpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLEI4ZCksYikpO2Nhc2UgMjU6cmV0dXJuIEdEKFdtZCh0aGlzLChROGQoKSxDOGQpLGIpKTtjYXNlIDI2OnJldHVybiBHRChXbWQodGhpcywoUThkKCksRDhkKSxiKSk7Y2FzZSAyNzpyZXR1cm4gUDlkKGIpO2Nhc2UgMzA6cmV0dXJuIFE5ZCgoUThkKCksYikpO2Nhc2UgMzE6cmV0dXJuIFE5ZChiKTtjYXNlIDMyOnJldHVybiBiPT1udWxsP251bGw6bWViKEljYigoaz1RZ2UoYix0cnVlKSxrLmxlbmd0aD4wJiYoQkNiKDAsay5sZW5ndGgpLGsuY2hhckNvZGVBdCgwKT09NDMpP2suc3Vic3RyKDEpOmspLFJpZSxPaGUpKTtjYXNlIDMzOnJldHVybiBiPT1udWxsP251bGw6bmV3IFlnYigobD1RZ2UoYix0cnVlKSxsLmxlbmd0aD4wJiYoQkNiKDAsbC5sZW5ndGgpLGwuY2hhckNvZGVBdCgwKT09NDMpP2wuc3Vic3RyKDEpOmwpKTtjYXNlIDM0OnJldHVybiBiPT1udWxsP251bGw6bWViKEljYigobT1RZ2UoYix0cnVlKSxtLmxlbmd0aD4wJiYoQkNiKDAsbS5sZW5ndGgpLG0uY2hhckNvZGVBdCgwKT09NDMpP20uc3Vic3RyKDEpOm0pLFJpZSxPaGUpKTtjYXNlIDM2OnJldHVybiBiPT1udWxsP251bGw6QWViKEpjYigobj1RZ2UoYix0cnVlKSxuLmxlbmd0aD4wJiYoQkNiKDAsbi5sZW5ndGgpLG4uY2hhckNvZGVBdCgwKT09NDMpP24uc3Vic3RyKDEpOm4pKSk7Y2FzZSAzNzpyZXR1cm4gYj09bnVsbD9udWxsOkFlYihKY2IoKG89UWdlKGIsdHJ1ZSksby5sZW5ndGg+MCYmKEJDYigwLG8ubGVuZ3RoKSxvLmNoYXJDb2RlQXQoMCk9PTQzKT9vLnN1YnN0cigxKTpvKSkpO2Nhc2UgNDA6cmV0dXJuIFQ5ZCgoUThkKCksYikpO2Nhc2UgNDI6cmV0dXJuIFI5ZCgoUThkKCksYikpO2Nhc2UgNDM6cmV0dXJuIFI5ZChiKTtjYXNlIDQ0OnJldHVybiBiPT1udWxsP251bGw6bmV3IFlnYigocD1RZ2UoYix0cnVlKSxwLmxlbmd0aD4wJiYoQkNiKDAscC5sZW5ndGgpLHAuY2hhckNvZGVBdCgwKT09NDMpP3Auc3Vic3RyKDEpOnApKTtjYXNlIDQ1OnJldHVybiBiPT1udWxsP251bGw6bmV3IFlnYigocT1RZ2UoYix0cnVlKSxxLmxlbmd0aD4wJiYoQkNiKDAscS5sZW5ndGgpLHEuY2hhckNvZGVBdCgwKT09NDMpP3Euc3Vic3RyKDEpOnEpKTtjYXNlIDQ2OnJldHVybiBRZ2UoYixmYWxzZSk7Y2FzZSA0NzpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLEU4ZCksYikpO2Nhc2UgNTk6Y2FzZSA0ODpyZXR1cm4gUzlkKChROGQoKSxiKSk7Y2FzZSA0OTpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLEc4ZCksYikpO2Nhc2UgNTA6cmV0dXJuIGI9PW51bGw/bnVsbDpXZWIoSWNiKChyPVFnZShiLHRydWUpLHIubGVuZ3RoPjAmJihCQ2IoMCxyLmxlbmd0aCksci5jaGFyQ29kZUF0KDApPT00Myk/ci5zdWJzdHIoMSk6ciksYXdlLDMyNzY3KTw8MTY+PjE2KTtjYXNlIDUxOnJldHVybiBiPT1udWxsP251bGw6V2ViKEljYigoZj1RZ2UoYix0cnVlKSxmLmxlbmd0aD4wJiYoQkNiKDAsZi5sZW5ndGgpLGYuY2hhckNvZGVBdCgwKT09NDMpP2Yuc3Vic3RyKDEpOmYpLGF3ZSwzMjc2Nyk8PDE2Pj4xNik7Y2FzZSA1MzpyZXR1cm4gR0QoV21kKHRoaXMsKFE4ZCgpLEo4ZCksYikpO2Nhc2UgNTU6cmV0dXJuIGI9PW51bGw/bnVsbDpXZWIoSWNiKChnPVFnZShiLHRydWUpLGcubGVuZ3RoPjAmJihCQ2IoMCxnLmxlbmd0aCksZy5jaGFyQ29kZUF0KDApPT00Myk/Zy5zdWJzdHIoMSk6ZyksYXdlLDMyNzY3KTw8MTY+PjE2KTtjYXNlIDU2OnJldHVybiBiPT1udWxsP251bGw6V2ViKEljYigoaD1RZ2UoYix0cnVlKSxoLmxlbmd0aD4wJiYoQkNiKDAsaC5sZW5ndGgpLGguY2hhckNvZGVBdCgwKT09NDMpP2guc3Vic3RyKDEpOmgpLGF3ZSwzMjc2Nyk8PDE2Pj4xNik7Y2FzZSA1NzpyZXR1cm4gYj09bnVsbD9udWxsOkFlYihKY2IoKGk9UWdlKGIsdHJ1ZSksaS5sZW5ndGg+MCYmKEJDYigwLGkubGVuZ3RoKSxpLmNoYXJDb2RlQXQoMCk9PTQzKT9pLnN1YnN0cigxKTppKSkpO2Nhc2UgNTg6cmV0dXJuIGI9PW51bGw/bnVsbDpBZWIoSmNiKChqPVFnZShiLHRydWUpLGoubGVuZ3RoPjAmJihCQ2IoMCxqLmxlbmd0aCksai5jaGFyQ29kZUF0KDApPT00Myk/ai5zdWJzdHIoMSk6aikpKTtjYXNlIDYwOnJldHVybiBiPT1udWxsP251bGw6bWViKEljYigoYz1RZ2UoYix0cnVlKSxjLmxlbmd0aD4wJiYoQkNiKDAsYy5sZW5ndGgpLGMuY2hhckNvZGVBdCgwKT09NDMpP2Muc3Vic3RyKDEpOmMpLFJpZSxPaGUpKTtjYXNlIDYxOnJldHVybiBiPT1udWxsP251bGw6bWViKEljYihRZ2UoYix0cnVlKSxSaWUsT2hlKSk7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IFdkYih0dGUrYS5uZSgpK3V0ZSkpO319O3ZhciB3OWQseDlkLHk5ZCx6OWQ7dmFyIFo5PW1kYihNd2UsJ1hNTFR5cGVGYWN0b3J5SW1wbCcsMTkxOSk7YmNiKDU4NiwxNzksezEwNToxLDkyOjEsOTA6MSwxNDc6MSwxOTE6MSw1NjoxLDIzNToxLDEwODoxLDQ5OjEsOTc6MSwxNTA6MSwxNzk6MSwxMTQ6MSwxMTU6MSw2NzU6MSwxOTQ1OjEsNTg2OjF9LGNhZSk7Xy5OPWZhbHNlO18uTz1mYWxzZTt2YXIgWjlkPWZhbHNlO3ZhciBZYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsJyw1ODYpO2JjYigxODUyLDEsezgzNzoxfSxmYWUpO18uX2o9ZnVuY3Rpb24gZ2FlKCl7cmV0dXJuIFVnZSgpLFRnZX07dmFyIGlhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMScsMTg1Mik7YmNiKDE4NjEsMSxud2UsaGFlKTtfLndqPWZ1bmN0aW9uIGlhZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gamFlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciAkOT1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTAnLDE4NjEpO2JjYigxODYyLDEsbndlLGthZSk7Xy53aj1mdW5jdGlvbiBsYWUoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIG1hZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgXzk9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzExJywxODYyKTtiY2IoMTg2MywxLG53ZSxuYWUpO18ud2o9ZnVuY3Rpb24gb2FlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBwYWUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIGFhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTInLDE4NjMpO2JjYigxODY0LDEsbndlLHFhZSk7Xy53aj1mdW5jdGlvbiByYWUoYSl7cmV0dXJuIExEKGEpfTtfLnhqPWZ1bmN0aW9uIHNhZShhKXtyZXR1cm4gS0MoQkksbmllLDMzMyxhLDcsMSl9O3ZhciBiYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzEzJywxODY0KTtiY2IoMTg2NSwxLG53ZSx0YWUpO18ud2o9ZnVuY3Rpb24gdWFlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiB2YWUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIGNhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTQnLDE4NjUpO2JjYigxODY2LDEsbndlLHdhZSk7Xy53aj1mdW5jdGlvbiB4YWUoYSl7cmV0dXJuIEpEKGEsMTUpfTtfLnhqPWZ1bmN0aW9uIHlhZShhKXtyZXR1cm4gS0MoeUssZW1lLDE1LGEsMCwxKX07dmFyIGRhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTUnLDE4NjYpO2JjYigxODY3LDEsbndlLHphZSk7Xy53aj1mdW5jdGlvbiBBYWUoYSl7cmV0dXJuIEpEKGEsMTUpfTtfLnhqPWZ1bmN0aW9uIEJhZShhKXtyZXR1cm4gS0MoeUssZW1lLDE1LGEsMCwxKX07dmFyIGVhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTYnLDE4NjcpO2JjYigxODY4LDEsbndlLENhZSk7Xy53aj1mdW5jdGlvbiBEYWUoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIEVhZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgZmFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8xNycsMTg2OCk7YmNiKDE4NjksMSxud2UsRmFlKTtfLndqPWZ1bmN0aW9uIEdhZShhKXtyZXR1cm4gSkQoYSwxNTUpfTtfLnhqPWZ1bmN0aW9uIEhhZShhKXtyZXR1cm4gS0MoRkksbmllLDE1NSxhLDAsMSl9O3ZhciBnYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzE4JywxODY5KTtiY2IoMTg3MCwxLG53ZSxJYWUpO18ud2o9ZnVuY3Rpb24gSmFlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBLYWUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIGhhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMTknLDE4NzApO2JjYigxODUzLDEsbndlLExhZSk7Xy53aj1mdW5jdGlvbiBNYWUoYSl7cmV0dXJuIEpEKGEsODQzKX07Xy54aj1mdW5jdGlvbiBOYWUoYSl7cmV0dXJuIEtDKFE5LFVoZSw4NDMsYSwwLDEpfTt2YXIgdGFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8yJywxODUzKTtiY2IoMTg3MSwxLG53ZSxPYWUpO18ud2o9ZnVuY3Rpb24gUGFlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBRYWUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIGphYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMjAnLDE4NzEpO2JjYigxODcyLDEsbndlLFJhZSk7Xy53aj1mdW5jdGlvbiBTYWUoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIFRhZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIga2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8yMScsMTg3Mik7YmNiKDE4NzMsMSxud2UsVWFlKTtfLndqPWZ1bmN0aW9uIFZhZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gV2FlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBsYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzIyJywxODczKTtiY2IoMTg3NCwxLG53ZSxYYWUpO18ud2o9ZnVuY3Rpb24gWWFlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBaYWUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIG1hYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMjMnLDE4NzQpO2JjYigxODc1LDEsbndlLCRhZSk7Xy53aj1mdW5jdGlvbiBfYWUoYSl7cmV0dXJuIEpEKGEsMTkwKX07Xy54aj1mdW5jdGlvbiBhYmUoYSl7cmV0dXJuIEtDKFNELG5pZSwxOTAsYSwwLDIpfTt2YXIgbmFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8yNCcsMTg3NSk7YmNiKDE4NzYsMSxud2UsYmJlKTtfLndqPWZ1bmN0aW9uIGNiZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gZGJlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBvYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzI1JywxODc2KTtiY2IoMTg3NywxLG53ZSxlYmUpO18ud2o9ZnVuY3Rpb24gZmJlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBnYmUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIHBhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMjYnLDE4NzcpO2JjYigxODc4LDEsbndlLGhiZSk7Xy53aj1mdW5jdGlvbiBpYmUoYSl7cmV0dXJuIEpEKGEsMTUpfTtfLnhqPWZ1bmN0aW9uIGpiZShhKXtyZXR1cm4gS0MoeUssZW1lLDE1LGEsMCwxKX07dmFyIHFhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMjcnLDE4NzgpO2JjYigxODc5LDEsbndlLGtiZSk7Xy53aj1mdW5jdGlvbiBsYmUoYSl7cmV0dXJuIEpEKGEsMTUpfTtfLnhqPWZ1bmN0aW9uIG1iZShhKXtyZXR1cm4gS0MoeUssZW1lLDE1LGEsMCwxKX07dmFyIHJhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMjgnLDE4NzkpO2JjYigxODgwLDEsbndlLG5iZSk7Xy53aj1mdW5jdGlvbiBvYmUoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIHBiZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgc2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8yOScsMTg4MCk7YmNiKDE4NTQsMSxud2UscWJlKTtfLndqPWZ1bmN0aW9uIHJiZShhKXtyZXR1cm4gSkQoYSw2NjcpfTtfLnhqPWZ1bmN0aW9uIHNiZShhKXtyZXR1cm4gS0MoUzksVWhlLDIwMjEsYSwwLDEpfTt2YXIgRWFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8zJywxODU0KTtiY2IoMTg4MSwxLG53ZSx0YmUpO18ud2o9ZnVuY3Rpb24gdWJlKGEpe3JldHVybiBKRChhLDE5KX07Xy54aj1mdW5jdGlvbiB2YmUoYSl7cmV0dXJuIEtDKEpJLG5pZSwxOSxhLDAsMSl9O3ZhciB1YWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzMwJywxODgxKTtiY2IoMTg4MiwxLG53ZSx3YmUpO18ud2o9ZnVuY3Rpb24geGJlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiB5YmUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIHZhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMzEnLDE4ODIpO2JjYigxODgzLDEsbndlLHpiZSk7Xy53aj1mdW5jdGlvbiBBYmUoYSl7cmV0dXJuIEpEKGEsMTYyKX07Xy54aj1mdW5jdGlvbiBCYmUoYSl7cmV0dXJuIEtDKE1JLG5pZSwxNjIsYSwwLDEpfTt2YXIgd2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8zMicsMTg4Myk7YmNiKDE4ODQsMSxud2UsQ2JlKTtfLndqPWZ1bmN0aW9uIERiZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gRWJlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciB4YWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzMzJywxODg0KTtiY2IoMTg4NSwxLG53ZSxGYmUpO18ud2o9ZnVuY3Rpb24gR2JlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBIYmUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIHlhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMzQnLDE4ODUpO2JjYigxODg2LDEsbndlLEliZSk7Xy53aj1mdW5jdGlvbiBKYmUoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIEtiZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgemFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC8zNScsMTg4Nik7YmNiKDE4ODcsMSxud2UsTGJlKTtfLndqPWZ1bmN0aW9uIE1iZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gTmJlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBBYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzM2JywxODg3KTtiY2IoMTg4OCwxLG53ZSxPYmUpO18ud2o9ZnVuY3Rpb24gUGJlKGEpe3JldHVybiBKRChhLDE1KX07Xy54aj1mdW5jdGlvbiBRYmUoYSl7cmV0dXJuIEtDKHlLLGVtZSwxNSxhLDAsMSl9O3ZhciBCYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzM3JywxODg4KTtiY2IoMTg4OSwxLG53ZSxSYmUpO18ud2o9ZnVuY3Rpb24gU2JlKGEpe3JldHVybiBKRChhLDE1KX07Xy54aj1mdW5jdGlvbiBUYmUoYSl7cmV0dXJuIEtDKHlLLGVtZSwxNSxhLDAsMSl9O3ZhciBDYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzM4JywxODg5KTtiY2IoMTg5MCwxLG53ZSxVYmUpO18ud2o9ZnVuY3Rpb24gVmJlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBXYmUoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIERhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvMzknLDE4OTApO2JjYigxODU1LDEsbndlLFhiZSk7Xy53aj1mdW5jdGlvbiBZYmUoYSl7cmV0dXJuIEpEKGEsNjY4KX07Xy54aj1mdW5jdGlvbiBaYmUoYSl7cmV0dXJuIEtDKFQ5LFVoZSwyMDIyLGEsMCwxKX07dmFyIFBhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNCcsMTg1NSk7YmNiKDE4OTEsMSxud2UsJGJlKTtfLndqPWZ1bmN0aW9uIF9iZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gYWNlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBGYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzQwJywxODkxKTtiY2IoMTg5MiwxLG53ZSxiY2UpO18ud2o9ZnVuY3Rpb24gY2NlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBkY2UoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIEdhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNDEnLDE4OTIpO2JjYigxODkzLDEsbndlLGVjZSk7Xy53aj1mdW5jdGlvbiBmY2UoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIGdjZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgSGFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC80MicsMTg5Myk7YmNiKDE4OTQsMSxud2UsaGNlKTtfLndqPWZ1bmN0aW9uIGljZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gamNlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBJYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzQzJywxODk0KTtiY2IoMTg5NSwxLG53ZSxrY2UpO18ud2o9ZnVuY3Rpb24gbGNlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiBtY2UoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIEphYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNDQnLDE4OTUpO2JjYigxODk2LDEsbndlLG5jZSk7Xy53aj1mdW5jdGlvbiBvY2UoYSl7cmV0dXJuIEpEKGEsMTg0KX07Xy54aj1mdW5jdGlvbiBwY2UoYSl7cmV0dXJuIEtDKFVJLG5pZSwxODQsYSwwLDEpfTt2YXIgS2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC80NScsMTg5Nik7YmNiKDE4OTcsMSxud2UscWNlKTtfLndqPWZ1bmN0aW9uIHJjZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gc2NlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBMYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzQ2JywxODk3KTtiY2IoMTg5OCwxLG53ZSx0Y2UpO18ud2o9ZnVuY3Rpb24gdWNlKGEpe3JldHVybiBORChhKX07Xy54aj1mdW5jdGlvbiB2Y2UoYSl7cmV0dXJuIEtDKFpJLG5pZSwyLGEsNiwxKX07dmFyIE1hYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNDcnLDE4OTgpO2JjYigxODk5LDEsbndlLHdjZSk7Xy53aj1mdW5jdGlvbiB4Y2UoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIHljZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgTmFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC80OCcsMTg5OSk7YmNiKG5qZSwxLG53ZSx6Y2UpO18ud2o9ZnVuY3Rpb24gQWNlKGEpe3JldHVybiBKRChhLDE4NCl9O18ueGo9ZnVuY3Rpb24gQmNlKGEpe3JldHVybiBLQyhVSSxuaWUsMTg0LGEsMCwxKX07dmFyIE9hYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNDknLG5qZSk7YmNiKDE4NTYsMSxud2UsQ2NlKTtfLndqPWZ1bmN0aW9uIERjZShhKXtyZXR1cm4gSkQoYSw2NjkpfTtfLnhqPWZ1bmN0aW9uIEVjZShhKXtyZXR1cm4gS0MoVTksVWhlLDIwMjMsYSwwLDEpfTt2YXIgVGFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC81JywxODU2KTtiY2IoMTkwMSwxLG53ZSxGY2UpO18ud2o9ZnVuY3Rpb24gR2NlKGEpe3JldHVybiBKRChhLDE2Mil9O18ueGo9ZnVuY3Rpb24gSGNlKGEpe3JldHVybiBLQyhNSSxuaWUsMTYyLGEsMCwxKX07dmFyIFFhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvNTAnLDE5MDEpO2JjYigxOTAyLDEsbndlLEljZSk7Xy53aj1mdW5jdGlvbiBKY2UoYSl7cmV0dXJuIE5EKGEpfTtfLnhqPWZ1bmN0aW9uIEtjZShhKXtyZXR1cm4gS0MoWkksbmllLDIsYSw2LDEpfTt2YXIgUmFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC81MScsMTkwMik7YmNiKDE5MDMsMSxud2UsTGNlKTtfLndqPWZ1bmN0aW9uIE1jZShhKXtyZXR1cm4gSkQoYSwxOSl9O18ueGo9ZnVuY3Rpb24gTmNlKGEpe3JldHVybiBLQyhKSSxuaWUsMTksYSwwLDEpfTt2YXIgU2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC81MicsMTkwMyk7YmNiKDE4NTcsMSxud2UsT2NlKTtfLndqPWZ1bmN0aW9uIFBjZShhKXtyZXR1cm4gTkQoYSl9O18ueGo9ZnVuY3Rpb24gUWNlKGEpe3JldHVybiBLQyhaSSxuaWUsMixhLDYsMSl9O3ZhciBVYWI9bWRiKE13ZSwnWE1MVHlwZVBhY2thZ2VJbXBsLzYnLDE4NTcpO2JjYigxODU4LDEsbndlLFJjZSk7Xy53aj1mdW5jdGlvbiBTY2UoYSl7cmV0dXJuIEpEKGEsMTkwKX07Xy54aj1mdW5jdGlvbiBUY2UoYSl7cmV0dXJuIEtDKFNELG5pZSwxOTAsYSwwLDIpfTt2YXIgVmFiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC83JywxODU4KTtiY2IoMTg1OSwxLG53ZSxVY2UpO18ud2o9ZnVuY3Rpb24gVmNlKGEpe3JldHVybiBLRChhKX07Xy54aj1mdW5jdGlvbiBXY2UoYSl7cmV0dXJuIEtDKHdJLG5pZSw0NzYsYSw4LDEpfTt2YXIgV2FiPW1kYihNd2UsJ1hNTFR5cGVQYWNrYWdlSW1wbC84JywxODU5KTtiY2IoMTg2MCwxLG53ZSxYY2UpO18ud2o9ZnVuY3Rpb24gWWNlKGEpe3JldHVybiBKRChhLDIxNyl9O18ueGo9ZnVuY3Rpb24gWmNlKGEpe3JldHVybiBLQyh4SSxuaWUsMjE3LGEsMCwxKX07dmFyIFhhYj1tZGIoTXdlLCdYTUxUeXBlUGFja2FnZUltcGwvOScsMTg2MCk7dmFyICRjZSxfY2U7dmFyIGZkZSxnZGU7dmFyIGtkZTtiY2IoNTAsNjAsVGllLG1kZSk7dmFyIFphYj1tZGIoa3hlLCdSZWdFeC9QYXJzZUV4Y2VwdGlvbicsNTApO2JjYig4MjAsMSx7fSx1ZGUpO18uc2w9ZnVuY3Rpb24gdmRlKGEpe3JldHVybiBhPHRoaXMuaiYmYmZiKHRoaXMuaSxhKT09NjN9O18udGw9ZnVuY3Rpb24gd2RlKCl7dmFyIGEsYixjLGQsZTtpZih0aGlzLmMhPTEwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksdXVlKSkpKTthPXRoaXMuYTtzd2l0Y2goYSl7Y2FzZSAxMDE6YT0yNzticmVhaztjYXNlIDEwMjphPTEyO2JyZWFrO2Nhc2UgMTEwOmE9MTA7YnJlYWs7Y2FzZSAxMTQ6YT0xMzticmVhaztjYXNlIDExNjphPTk7YnJlYWs7Y2FzZSAxMjA6bmRlKHRoaXMpO2lmKHRoaXMuYyE9MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFR1ZSkpKSk7aWYodGhpcy5hPT0xMjMpe2U9MDtjPTA7ZG97bmRlKHRoaXMpO2lmKHRoaXMuYyE9MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFR1ZSkpKSk7aWYoKGU9eWRlKHRoaXMuYSkpPDApYnJlYWs7aWYoYz5jKjE2KXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksVXVlKSkpKTtjPWMqMTYrZX13aGlsZSh0cnVlKTtpZih0aGlzLmEhPTEyNSl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFZ1ZSkpKSk7aWYoYz5seGUpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxXdWUpKSkpO2E9Y31lbHNle2U9MDtpZih0aGlzLmMhPTB8fChlPXlkZSh0aGlzLmEpKTwwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksVHVlKSkpKTtjPWU7bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGU9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2M9YyoxNitlO2E9Y31icmVhaztjYXNlIDExNzpkPTA7bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGQ9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2I9ZDtuZGUodGhpcyk7aWYodGhpcy5jIT0wfHwoZD15ZGUodGhpcy5hKSk8MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFR1ZSkpKSk7Yj1iKjE2K2Q7bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGQ9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2I9YioxNitkO25kZSh0aGlzKTtpZih0aGlzLmMhPTB8fChkPXlkZSh0aGlzLmEpKTwwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksVHVlKSkpKTtiPWIqMTYrZDthPWI7YnJlYWs7Y2FzZSAxMTg6bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGQ9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2I9ZDtuZGUodGhpcyk7aWYodGhpcy5jIT0wfHwoZD15ZGUodGhpcy5hKSk8MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFR1ZSkpKSk7Yj1iKjE2K2Q7bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGQ9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2I9YioxNitkO25kZSh0aGlzKTtpZih0aGlzLmMhPTB8fChkPXlkZSh0aGlzLmEpKTwwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksVHVlKSkpKTtiPWIqMTYrZDtuZGUodGhpcyk7aWYodGhpcy5jIT0wfHwoZD15ZGUodGhpcy5hKSk8MCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFR1ZSkpKSk7Yj1iKjE2K2Q7bmRlKHRoaXMpO2lmKHRoaXMuYyE9MHx8KGQ9eWRlKHRoaXMuYSkpPDApdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxUdWUpKSkpO2I9YioxNitkO2lmKGI+bHhlKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksJ3BhcnNlci5kZXNjYXBwZS40JykpKSk7YT1iO2JyZWFrO2Nhc2UgNjU6Y2FzZSA5MDpjYXNlIDEyMjp0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFh1ZSkpKSk7fXJldHVybiBhfTtfLnVsPWZ1bmN0aW9uIHhkZShhKXt2YXIgYixjO3N3aXRjaChhKXtjYXNlIDEwMDpjPSh0aGlzLmUmMzIpPT0zMj9LZmUoJ05kJyx0cnVlKTood2ZlKCksY2ZlKTticmVhaztjYXNlIDY4OmM9KHRoaXMuZSYzMik9PTMyP0tmZSgnTmQnLGZhbHNlKTood2ZlKCksamZlKTticmVhaztjYXNlIDExOTpjPSh0aGlzLmUmMzIpPT0zMj9LZmUoJ0lzV29yZCcsdHJ1ZSk6KHdmZSgpLHNmZSk7YnJlYWs7Y2FzZSA4NzpjPSh0aGlzLmUmMzIpPT0zMj9LZmUoJ0lzV29yZCcsZmFsc2UpOih3ZmUoKSxsZmUpO2JyZWFrO2Nhc2UgMTE1OmM9KHRoaXMuZSYzMik9PTMyP0tmZSgnSXNTcGFjZScsdHJ1ZSk6KHdmZSgpLG5mZSk7YnJlYWs7Y2FzZSA4MzpjPSh0aGlzLmUmMzIpPT0zMj9LZmUoJ0lzU3BhY2UnLGZhbHNlKTood2ZlKCksa2ZlKTticmVhaztkZWZhdWx0OnRocm93IHZiYihuZXcgaHooKGI9YSxteGUrYi50b1N0cmluZygxNikpKSk7fXJldHVybiBjfTtfLnZsPWZ1bmN0aW9uIHpkZShhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG07dGhpcy5iPTE7bmRlKHRoaXMpO2I9bnVsbDtpZih0aGlzLmM9PTAmJnRoaXMuYT09OTQpe25kZSh0aGlzKTtpZihhKXtrPSh3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgJGZlKDUpKX1lbHNle2I9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyAkZmUoNCkpO1VmZShiLDAsbHhlKTtrPShudWxsLCsrdmZlLG5ldyAkZmUoNCkpfX1lbHNle2s9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyAkZmUoNCkpfWU9dHJ1ZTt3aGlsZSgobT10aGlzLmMpIT0xKXtpZihtPT0wJiZ0aGlzLmE9PTkzJiYhZSlicmVhaztlPWZhbHNlO2M9dGhpcy5hO2Q9ZmFsc2U7aWYobT09MTApe3N3aXRjaChjKXtjYXNlIDEwMDpjYXNlIDY4OmNhc2UgMTE5OmNhc2UgODc6Y2FzZSAxMTU6Y2FzZSA4MzpYZmUoayx0aGlzLnVsKGMpKTtkPXRydWU7YnJlYWs7Y2FzZSAxMDU6Y2FzZSA3MzpjYXNlIDk5OmNhc2UgNjc6Yz10aGlzLkxsKGssYyk7YzwwJiYoZD10cnVlKTticmVhaztjYXNlIDExMjpjYXNlIDgwOmw9dGRlKHRoaXMsYyk7aWYoIWwpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxJdWUpKSkpO1hmZShrLGwpO2Q9dHJ1ZTticmVhaztkZWZhdWx0OmM9dGhpcy50bCgpO319ZWxzZSBpZihtPT0yMCl7Zz1nZmIodGhpcy5pLDU4LHRoaXMuZCk7aWYoZzwwKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksSnVlKSkpKTtoPXRydWU7aWYoYmZiKHRoaXMuaSx0aGlzLmQpPT05NCl7Kyt0aGlzLmQ7aD1mYWxzZX1mPXFmYih0aGlzLmksdGhpcy5kLGcpO2k9TGZlKGYsaCwodGhpcy5lJjUxMik9PTUxMik7aWYoIWkpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxMdWUpKSkpO1hmZShrLGkpO2Q9dHJ1ZTtpZihnKzE+PXRoaXMuanx8YmZiKHRoaXMuaSxnKzEpIT05Myl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEp1ZSkpKSk7dGhpcy5kPWcrMn1uZGUodGhpcyk7aWYoIWQpe2lmKHRoaXMuYyE9MHx8dGhpcy5hIT00NSl7VWZlKGssYyxjKX1lbHNle25kZSh0aGlzKTtpZigobT10aGlzLmMpPT0xKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksS3VlKSkpKTtpZihtPT0wJiZ0aGlzLmE9PTkzKXtVZmUoayxjLGMpO1VmZShrLDQ1LDQ1KX1lbHNle2o9dGhpcy5hO209PTEwJiYoaj10aGlzLnRsKCkpO25kZSh0aGlzKTtVZmUoayxjLGopfX19KHRoaXMuZSZ6dGUpPT16dGUmJnRoaXMuYz09MCYmdGhpcy5hPT00NCYmbmRlKHRoaXMpfWlmKHRoaXMuYz09MSl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEt1ZSkpKSk7aWYoYil7WmZlKGIsayk7az1ifVlmZShrKTtWZmUoayk7dGhpcy5iPTA7bmRlKHRoaXMpO3JldHVybiBrfTtfLndsPWZ1bmN0aW9uIEFkZSgpe3ZhciBhLGIsYyxkO2M9dGhpcy52bChmYWxzZSk7d2hpbGUoKGQ9dGhpcy5jKSE9Nyl7YT10aGlzLmE7aWYoZD09MCYmKGE9PTQ1fHxhPT0zOCl8fGQ9PTQpe25kZSh0aGlzKTtpZih0aGlzLmMhPTkpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxRdWUpKSkpO2I9dGhpcy52bChmYWxzZSk7aWYoZD09NClYZmUoYyxiKTtlbHNlIGlmKGE9PTQ1KVpmZShjLGIpO2Vsc2UgaWYoYT09MzgpV2ZlKGMsYik7ZWxzZSB0aHJvdyB2YmIobmV3IGh6KCdBU1NFUlQnKSl9ZWxzZXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFJ1ZSkpKSl9fW5kZSh0aGlzKTtyZXR1cm4gY307Xy54bD1mdW5jdGlvbiBCZGUoKXt2YXIgYSxiO2E9dGhpcy5hLTQ4O2I9KHdmZSgpLHdmZSgpLCsrdmZlLG5ldyBIZ2UoMTIsbnVsbCxhKSk7IXRoaXMuZyYmKHRoaXMuZz1uZXcgV3ZiKTtUdmIodGhpcy5nLG5ldyBjZ2UoYSkpO25kZSh0aGlzKTtyZXR1cm4gYn07Xy55bD1mdW5jdGlvbiBDZGUoKXtuZGUodGhpcyk7cmV0dXJuIHdmZSgpLG9mZX07Xy56bD1mdW5jdGlvbiBEZGUoKXtuZGUodGhpcyk7cmV0dXJuIHdmZSgpLG1mZX07Xy5BbD1mdW5jdGlvbiBFZGUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18uQmw9ZnVuY3Rpb24gRmRlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLkNsPWZ1bmN0aW9uIEdkZSgpe25kZSh0aGlzKTtyZXR1cm4gSWZlKCl9O18uRGw9ZnVuY3Rpb24gSGRlKCl7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSxxZmV9O18uRWw9ZnVuY3Rpb24gSWRlKCl7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSx0ZmV9O18uRmw9ZnVuY3Rpb24gSmRlKCl7dmFyIGE7aWYodGhpcy5kPj10aGlzLmp8fCgoYT1iZmIodGhpcy5pLHRoaXMuZCsrKSkmNjU1MDQpIT02NCl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEV1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgaWdlKDAsYS02NCl9O18uR2w9ZnVuY3Rpb24gS2RlKCl7bmRlKHRoaXMpO3JldHVybiBKZmUoKX07Xy5IbD1mdW5jdGlvbiBMZGUoKXtuZGUodGhpcyk7cmV0dXJuIHdmZSgpLHVmZX07Xy5JbD1mdW5jdGlvbiBNZGUoKXt2YXIgYTthPSh3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgaWdlKDAsMTA1KSk7bmRlKHRoaXMpO3JldHVybiBhfTtfLkpsPWZ1bmN0aW9uIE5kZSgpe25kZSh0aGlzKTtyZXR1cm4gd2ZlKCkscmZlfTtfLktsPWZ1bmN0aW9uIE9kZSgpe25kZSh0aGlzKTtyZXR1cm4gd2ZlKCkscGZlfTtfLkxsPWZ1bmN0aW9uIFBkZShhLGIpe3JldHVybiB0aGlzLnRsKCl9O18uTWw9ZnVuY3Rpb24gUWRlKCl7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSxoZmV9O18uTmw9ZnVuY3Rpb24gUmRlKCl7dmFyIGEsYixjLGQsZTtpZih0aGlzLmQrMT49dGhpcy5qKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksQnVlKSkpKTtkPS0xO2I9bnVsbDthPWJmYih0aGlzLmksdGhpcy5kKTtpZig0OTw9YSYmYTw9NTcpe2Q9YS00ODshdGhpcy5nJiYodGhpcy5nPW5ldyBXdmIpO1R2Yih0aGlzLmcsbmV3IGNnZShkKSk7Kyt0aGlzLmQ7aWYoYmZiKHRoaXMuaSx0aGlzLmQpIT00MSl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7Kyt0aGlzLmR9ZWxzZXthPT02MyYmLS10aGlzLmQ7bmRlKHRoaXMpO2I9cWRlKHRoaXMpO3N3aXRjaChiLmUpe2Nhc2UgMjA6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6YnJlYWs7Y2FzZSA4OmlmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEN1ZSkpKSk7fX1uZGUodGhpcyk7ZT1yZGUodGhpcyk7Yz1udWxsO2lmKGUuZT09Mil7aWYoZS5lbSgpIT0yKXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksRHVlKSkpKTtjPWUuYW0oMSk7ZT1lLmFtKDApfWlmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgdmdlKGQsYixlLGMpfTtfLk9sPWZ1bmN0aW9uIFNkZSgpe25kZSh0aGlzKTtyZXR1cm4gd2ZlKCksaWZlfTtfLlBsPWZ1bmN0aW9uIFRkZSgpe3ZhciBhO25kZSh0aGlzKTthPUNmZSgyNCxyZGUodGhpcykpO2lmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiBhfTtfLlFsPWZ1bmN0aW9uIFVkZSgpe3ZhciBhO25kZSh0aGlzKTthPUNmZSgyMCxyZGUodGhpcykpO2lmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiBhfTtfLlJsPWZ1bmN0aW9uIFZkZSgpe3ZhciBhO25kZSh0aGlzKTthPUNmZSgyMixyZGUodGhpcykpO2lmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiBhfTtfLlNsPWZ1bmN0aW9uIFdkZSgpe3ZhciBhLGIsYyxkLGU7YT0wO2M9MDtiPS0xO3doaWxlKHRoaXMuZDx0aGlzLmope2I9YmZiKHRoaXMuaSx0aGlzLmQpO2U9VWVlKGIpO2lmKGU9PTApYnJlYWs7YXw9ZTsrK3RoaXMuZH1pZih0aGlzLmQ+PXRoaXMuail0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHp1ZSkpKSk7aWYoYj09NDUpeysrdGhpcy5kO3doaWxlKHRoaXMuZDx0aGlzLmope2I9YmZiKHRoaXMuaSx0aGlzLmQpO2U9VWVlKGIpO2lmKGU9PTApYnJlYWs7Y3w9ZTsrK3RoaXMuZH1pZih0aGlzLmQ+PXRoaXMuail0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHp1ZSkpKSl9aWYoYj09NTgpeysrdGhpcy5kO25kZSh0aGlzKTtkPURmZShyZGUodGhpcyksYSxjKTtpZih0aGlzLmMhPTcpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx5dWUpKSkpO25kZSh0aGlzKX1lbHNlIGlmKGI9PTQxKXsrK3RoaXMuZDtuZGUodGhpcyk7ZD1EZmUocmRlKHRoaXMpLGEsYyl9ZWxzZSB0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLEF1ZSkpKSk7cmV0dXJuIGR9O18uVGw9ZnVuY3Rpb24gWGRlKCl7dmFyIGE7bmRlKHRoaXMpO2E9Q2ZlKDIxLHJkZSh0aGlzKSk7aWYodGhpcy5jIT03KXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCkseXVlKSkpKTtuZGUodGhpcyk7cmV0dXJuIGF9O18uVWw9ZnVuY3Rpb24gWWRlKCl7dmFyIGE7bmRlKHRoaXMpO2E9Q2ZlKDIzLHJkZSh0aGlzKSk7aWYodGhpcy5jIT03KXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCkseXVlKSkpKTtuZGUodGhpcyk7cmV0dXJuIGF9O18uVmw9ZnVuY3Rpb24gWmRlKCl7dmFyIGEsYjtuZGUodGhpcyk7YT10aGlzLmYrKztiPUVmZShyZGUodGhpcyksYSk7aWYodGhpcy5jIT03KXRocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCkseXVlKSkpKTtuZGUodGhpcyk7cmV0dXJuIGJ9O18uV2w9ZnVuY3Rpb24gJGRlKCl7dmFyIGE7bmRlKHRoaXMpO2E9RWZlKHJkZSh0aGlzKSwwKTtpZih0aGlzLmMhPTcpdGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSx5dWUpKSkpO25kZSh0aGlzKTtyZXR1cm4gYX07Xy5YbD1mdW5jdGlvbiBfZGUoYSl7bmRlKHRoaXMpO2lmKHRoaXMuYz09NSl7bmRlKHRoaXMpO3JldHVybiBCZmUoYSwod2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGxnZSg5LGEpKSl9ZWxzZSByZXR1cm4gQmZlKGEsKHdmZSgpLHdmZSgpLCsrdmZlLG5ldyBsZ2UoMyxhKSkpfTtfLllsPWZ1bmN0aW9uIGFlZShhKXt2YXIgYjtuZGUodGhpcyk7Yj0od2ZlKCksd2ZlKCksKyt2ZmUsbmV3IExnZSgyKSk7aWYodGhpcy5jPT01KXtuZGUodGhpcyk7S2dlKGIsKG51bGwsZmZlKSk7S2dlKGIsYSl9ZWxzZXtLZ2UoYixhKTtLZ2UoYiwobnVsbCxmZmUpKX1yZXR1cm4gYn07Xy5abD1mdW5jdGlvbiBiZWUoYSl7bmRlKHRoaXMpO2lmKHRoaXMuYz09NSl7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgbGdlKDksYSl9ZWxzZSByZXR1cm4gd2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGxnZSgzLGEpfTtfLmE9MDtfLmI9MDtfLmM9MDtfLmQ9MDtfLmU9MDtfLmY9MTtfLmc9bnVsbDtfLmo9MDt2YXIgYmJiPW1kYihreGUsJ1JlZ0V4L1JlZ2V4UGFyc2VyJyw4MjApO2JjYigxODI0LDgyMCx7fSxoZWUpO18uc2w9ZnVuY3Rpb24gaWVlKGEpe3JldHVybiBmYWxzZX07Xy50bD1mdW5jdGlvbiBqZWUoKXtyZXR1cm4gZWVlKHRoaXMpfTtfLnVsPWZ1bmN0aW9uIGxlZShhKXtyZXR1cm4gZmVlKGEpfTtfLnZsPWZ1bmN0aW9uIG1lZShhKXtyZXR1cm4gZ2VlKHRoaXMpfTtfLndsPWZ1bmN0aW9uIG5lZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy54bD1mdW5jdGlvbiBvZWUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18ueWw9ZnVuY3Rpb24gcGVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLnpsPWZ1bmN0aW9uIHFlZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5BbD1mdW5jdGlvbiByZWUoKXtuZGUodGhpcyk7cmV0dXJuIGZlZSg2Nyl9O18uQmw9ZnVuY3Rpb24gc2VlKCl7bmRlKHRoaXMpO3JldHVybiBmZWUoNzMpfTtfLkNsPWZ1bmN0aW9uIHRlZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5EbD1mdW5jdGlvbiB1ZWUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18uRWw9ZnVuY3Rpb24gdmVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLkZsPWZ1bmN0aW9uIHdlZSgpe25kZSh0aGlzKTtyZXR1cm4gZmVlKDk5KX07Xy5HbD1mdW5jdGlvbiB4ZWUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18uSGw9ZnVuY3Rpb24geWVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLklsPWZ1bmN0aW9uIHplZSgpe25kZSh0aGlzKTtyZXR1cm4gZmVlKDEwNSl9O18uSmw9ZnVuY3Rpb24gQWVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLktsPWZ1bmN0aW9uIEJlZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5MbD1mdW5jdGlvbiBDZWUoYSxiKXtyZXR1cm4gWGZlKGEsZmVlKGIpKSwtMX07Xy5NbD1mdW5jdGlvbiBEZWUoKXtuZGUodGhpcyk7cmV0dXJuIHdmZSgpLHdmZSgpLCsrdmZlLG5ldyBpZ2UoMCw5NCl9O18uTmw9ZnVuY3Rpb24gRWVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLk9sPWZ1bmN0aW9uIEZlZSgpe25kZSh0aGlzKTtyZXR1cm4gd2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGlnZSgwLDM2KX07Xy5QbD1mdW5jdGlvbiBHZWUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18uUWw9ZnVuY3Rpb24gSGVlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLlJsPWZ1bmN0aW9uIEllZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5TbD1mdW5jdGlvbiBKZWUoKXt0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLFl1ZSkpKSl9O18uVGw9ZnVuY3Rpb24gS2VlKCl7dGhyb3cgdmJiKG5ldyBtZGUodHZkKChoMGQoKSxZdWUpKSkpfTtfLlVsPWZ1bmN0aW9uIExlZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5WbD1mdW5jdGlvbiBNZWUoKXt2YXIgYTtuZGUodGhpcyk7YT1FZmUocmRlKHRoaXMpLDApO2lmKHRoaXMuYyE9Nyl0aHJvdyB2YmIobmV3IG1kZSh0dmQoKGgwZCgpLHl1ZSkpKSk7bmRlKHRoaXMpO3JldHVybiBhfTtfLldsPWZ1bmN0aW9uIE5lZSgpe3Rocm93IHZiYihuZXcgbWRlKHR2ZCgoaDBkKCksWXVlKSkpKX07Xy5YbD1mdW5jdGlvbiBPZWUoYSl7bmRlKHRoaXMpO3JldHVybiBCZmUoYSwod2ZlKCksd2ZlKCksKyt2ZmUsbmV3IGxnZSgzLGEpKSl9O18uWWw9ZnVuY3Rpb24gUGVlKGEpe3ZhciBiO25kZSh0aGlzKTtiPSh3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgTGdlKDIpKTtLZ2UoYixhKTtLZ2UoYiwobnVsbCxmZmUpKTtyZXR1cm4gYn07Xy5abD1mdW5jdGlvbiBRZWUoYSl7bmRlKHRoaXMpO3JldHVybiB3ZmUoKSx3ZmUoKSwrK3ZmZSxuZXcgbGdlKDMsYSl9O3ZhciBjZWU9bnVsbCxkZWU9bnVsbDt2YXIgJGFiPW1kYihreGUsJ1JlZ0V4L1BhcnNlckZvclhNTFNjaGVtYScsMTgyNCk7YmNiKDExNywxLHl4ZSx4ZmUpO18uJGw9ZnVuY3Rpb24geWZlKGEpe3Rocm93IHZiYihuZXcgaHooJ05vdCBzdXBwb3J0ZWQuJykpfTtfLl9sPWZ1bmN0aW9uIEdmZSgpe3JldHVybiAtMX07Xy5hbT1mdW5jdGlvbiBIZmUoYSl7cmV0dXJuIG51bGx9O18uYm09ZnVuY3Rpb24gTWZlKCl7cmV0dXJuIG51bGx9O18uY209ZnVuY3Rpb24gUGZlKGEpe307Xy5kbT1mdW5jdGlvbiBRZmUoYSl7fTtfLmVtPWZ1bmN0aW9uIFJmZSgpe3JldHVybiAwfTtfLkliPWZ1bmN0aW9uIFNmZSgpe3JldHVybiB0aGlzLmZtKDApfTtfLmZtPWZ1bmN0aW9uIFRmZShhKXtyZXR1cm4gdGhpcy5lPT0xMT8nLic6Jyd9O18uZT0wO3ZhciBZZWUsWmVlLCRlZSxfZWUsYWZlLGJmZT1udWxsLGNmZSxkZmU9bnVsbCxlZmUsZmZlLGdmZT1udWxsLGhmZSxpZmUsamZlLGtmZSxsZmUsbWZlLG5mZSxvZmUscGZlLHFmZSxyZmUsc2ZlLHRmZSx1ZmUsdmZlPTA7dmFyIGxiYj1tZGIoa3hlLCdSZWdFeC9Ub2tlbicsMTE3KTtiY2IoMTM2LDExNyx7MzoxLDEzNjoxLDExNzoxfSwkZmUpO18uZm09ZnVuY3Rpb24gYmdlKGEpe3ZhciBiLGMsZDtpZih0aGlzLmU9PTQpe2lmKHRoaXM9PWVmZSljPScuJztlbHNlIGlmKHRoaXM9PWNmZSljPSdcXFxcZCc7ZWxzZSBpZih0aGlzPT1zZmUpYz0nXFxcXHcnO2Vsc2UgaWYodGhpcz09bmZlKWM9J1xcXFxzJztlbHNle2Q9bmV3IEhmYjtkLmErPSdbJztmb3IoYj0wO2I8dGhpcy5iLmxlbmd0aDtiKz0yKXsoYSZ6dGUpIT0wJiZiPjAmJihkLmErPScsJyxkKTtpZih0aGlzLmJbYl09PT10aGlzLmJbYisxXSl7RWZiKGQsYWdlKHRoaXMuYltiXSkpfWVsc2V7RWZiKGQsYWdlKHRoaXMuYltiXSkpO2QuYSs9Jy0nO0VmYihkLGFnZSh0aGlzLmJbYisxXSkpfX1kLmErPSddJztjPWQuYX19ZWxzZXtpZih0aGlzPT1qZmUpYz0nXFxcXEQnO2Vsc2UgaWYodGhpcz09bGZlKWM9J1xcXFxXJztlbHNlIGlmKHRoaXM9PWtmZSljPSdcXFxcUyc7ZWxzZXtkPW5ldyBIZmI7ZC5hKz0nW14nO2ZvcihiPTA7Yjx0aGlzLmIubGVuZ3RoO2IrPTIpeyhhJnp0ZSkhPTAmJmI+MCYmKGQuYSs9JywnLGQpO2lmKHRoaXMuYltiXT09PXRoaXMuYltiKzFdKXtFZmIoZCxhZ2UodGhpcy5iW2JdKSl9ZWxzZXtFZmIoZCxhZ2UodGhpcy5iW2JdKSk7ZC5hKz0nLSc7RWZiKGQsYWdlKHRoaXMuYltiKzFdKSl9fWQuYSs9J10nO2M9ZC5hfX1yZXR1cm4gY307Xy5hPWZhbHNlO18uYz1mYWxzZTt2YXIgX2FiPW1kYihreGUsJ1JlZ0V4L1JhbmdlVG9rZW4nLDEzNik7YmNiKDU4NCwxLHs1ODQ6MX0sY2dlKTtfLmE9MDt2YXIgYWJiPW1kYihreGUsJ1JlZ0V4L1JlZ2V4UGFyc2VyL1JlZmVyZW5jZVBvc2l0aW9uJyw1ODQpO2JjYig1ODMsMSx7MzoxLDU4MzoxfSxlZ2UpO18uRmI9ZnVuY3Rpb24gZmdlKGEpe3ZhciBiO2lmKGE9PW51bGwpcmV0dXJuIGZhbHNlO2lmKCFKRChhLDU4MykpcmV0dXJuIGZhbHNlO2I9QkQoYSw1ODMpO3JldHVybiBkZmIodGhpcy5iLGIuYikmJnRoaXMuYT09Yi5hfTtfLkhiPWZ1bmN0aW9uIGdnZSgpe3JldHVybiBMQ2IodGhpcy5iKycvJytTZWUodGhpcy5hKSl9O18uSWI9ZnVuY3Rpb24gaGdlKCl7cmV0dXJuIHRoaXMuYy5mbSh0aGlzLmEpfTtfLmE9MDt2YXIgY2JiPW1kYihreGUsJ1JlZ0V4L1JlZ3VsYXJFeHByZXNzaW9uJyw1ODMpO2JjYigyMjMsMTE3LHl4ZSxpZ2UpO18uX2w9ZnVuY3Rpb24gamdlKCl7cmV0dXJuIHRoaXMuYX07Xy5mbT1mdW5jdGlvbiBrZ2UoYSl7dmFyIGIsYyxkO3N3aXRjaCh0aGlzLmUpe2Nhc2UgMDpzd2l0Y2godGhpcy5hKXtjYXNlIDEyNDpjYXNlIDQyOmNhc2UgNDM6Y2FzZSA2MzpjYXNlIDQwOmNhc2UgNDE6Y2FzZSA0NjpjYXNlIDkxOmNhc2UgMTIzOmNhc2UgOTI6ZD0nXFxcXCcrSEQodGhpcy5hJmFqZSk7YnJlYWs7Y2FzZSAxMjpkPSdcXFxcZic7YnJlYWs7Y2FzZSAxMDpkPSdcXFxcbic7YnJlYWs7Y2FzZSAxMzpkPSdcXFxccic7YnJlYWs7Y2FzZSA5OmQ9J1xcXFx0JzticmVhaztjYXNlIDI3OmQ9J1xcXFxlJzticmVhaztkZWZhdWx0OmlmKHRoaXMuYT49VGplKXtjPShiPXRoaXMuYT4+PjAsJzAnK2IudG9TdHJpbmcoMTYpKTtkPSdcXFxcdicrcWZiKGMsYy5sZW5ndGgtNixjLmxlbmd0aCl9ZWxzZSBkPScnK0hEKHRoaXMuYSZhamUpO31icmVhaztjYXNlIDg6dGhpcz09aGZlfHx0aGlzPT1pZmU/KGQ9JycrSEQodGhpcy5hJmFqZSkpOihkPSdcXFxcJytIRCh0aGlzLmEmYWplKSk7YnJlYWs7ZGVmYXVsdDpkPW51bGw7fXJldHVybiBkfTtfLmE9MDt2YXIgZGJiPW1kYihreGUsJ1JlZ0V4L1Rva2VuL0NoYXJUb2tlbicsMjIzKTtiY2IoMzA5LDExNyx5eGUsbGdlKTtfLmFtPWZ1bmN0aW9uIG1nZShhKXtyZXR1cm4gdGhpcy5hfTtfLmNtPWZ1bmN0aW9uIG5nZShhKXt0aGlzLmI9YX07Xy5kbT1mdW5jdGlvbiBvZ2UoYSl7dGhpcy5jPWF9O18uZW09ZnVuY3Rpb24gcGdlKCl7cmV0dXJuIDF9O18uZm09ZnVuY3Rpb24gcWdlKGEpe3ZhciBiO2lmKHRoaXMuZT09Myl7aWYodGhpcy5jPDAmJnRoaXMuYjwwKXtiPXRoaXMuYS5mbShhKSsnKid9ZWxzZSBpZih0aGlzLmM9PXRoaXMuYil7Yj10aGlzLmEuZm0oYSkrJ3snK3RoaXMuYysnfSd9ZWxzZSBpZih0aGlzLmM+PTAmJnRoaXMuYj49MCl7Yj10aGlzLmEuZm0oYSkrJ3snK3RoaXMuYysnLCcrdGhpcy5iKyd9J31lbHNlIGlmKHRoaXMuYz49MCYmdGhpcy5iPDApe2I9dGhpcy5hLmZtKGEpKyd7Jyt0aGlzLmMrJyx9J31lbHNlIHRocm93IHZiYihuZXcgaHooJ1Rva2VuI3RvU3RyaW5nKCk6IENMT1NVUkUgJyt0aGlzLmMrU2hlK3RoaXMuYikpfWVsc2V7aWYodGhpcy5jPDAmJnRoaXMuYjwwKXtiPXRoaXMuYS5mbShhKSsnKj8nfWVsc2UgaWYodGhpcy5jPT10aGlzLmIpe2I9dGhpcy5hLmZtKGEpKyd7Jyt0aGlzLmMrJ30/J31lbHNlIGlmKHRoaXMuYz49MCYmdGhpcy5iPj0wKXtiPXRoaXMuYS5mbShhKSsneycrdGhpcy5jKycsJyt0aGlzLmIrJ30/J31lbHNlIGlmKHRoaXMuYz49MCYmdGhpcy5iPDApe2I9dGhpcy5hLmZtKGEpKyd7Jyt0aGlzLmMrJyx9Pyd9ZWxzZSB0aHJvdyB2YmIobmV3IGh6KCdUb2tlbiN0b1N0cmluZygpOiBOT05HUkVFRFlDTE9TVVJFICcrdGhpcy5jK1NoZSt0aGlzLmIpKX1yZXR1cm4gYn07Xy5iPTA7Xy5jPTA7dmFyIGViYj1tZGIoa3hlLCdSZWdFeC9Ub2tlbi9DbG9zdXJlVG9rZW4nLDMwOSk7YmNiKDgyMSwxMTcseXhlLHJnZSk7Xy5hbT1mdW5jdGlvbiBzZ2UoYSl7cmV0dXJuIGE9PTA/dGhpcy5hOnRoaXMuYn07Xy5lbT1mdW5jdGlvbiB0Z2UoKXtyZXR1cm4gMn07Xy5mbT1mdW5jdGlvbiB1Z2UoYSl7dmFyIGI7dGhpcy5iLmU9PTMmJnRoaXMuYi5hbSgwKT09dGhpcy5hPyhiPXRoaXMuYS5mbShhKSsnKycpOnRoaXMuYi5lPT05JiZ0aGlzLmIuYW0oMCk9PXRoaXMuYT8oYj10aGlzLmEuZm0oYSkrJys/Jyk6KGI9dGhpcy5hLmZtKGEpKygnJyt0aGlzLmIuZm0oYSkpKTtyZXR1cm4gYn07dmFyIGZiYj1tZGIoa3hlLCdSZWdFeC9Ub2tlbi9Db25jYXRUb2tlbicsODIxKTtiY2IoMTgyMiwxMTcseXhlLHZnZSk7Xy5hbT1mdW5jdGlvbiB3Z2UoYSl7aWYoYT09MClyZXR1cm4gdGhpcy5kO2lmKGE9PTEpcmV0dXJuIHRoaXMuYjt0aHJvdyB2YmIobmV3IGh6KCdJbnRlcm5hbCBFcnJvcjogJythKSl9O18uZW09ZnVuY3Rpb24geGdlKCl7cmV0dXJuICF0aGlzLmI/MToyfTtfLmZtPWZ1bmN0aW9uIHlnZShhKXt2YXIgYjt0aGlzLmM+MD8oYj0nKD8oJyt0aGlzLmMrJyknKTp0aGlzLmEuZT09OD8oYj0nKD8oJyt0aGlzLmErJyknKTooYj0nKD8nK3RoaXMuYSk7IXRoaXMuYj8oYis9dGhpcy5kKycpJyk6KGIrPXRoaXMuZCsnfCcrdGhpcy5iKycpJyk7cmV0dXJuIGJ9O18uYz0wO3ZhciBnYmI9bWRiKGt4ZSwnUmVnRXgvVG9rZW4vQ29uZGl0aW9uVG9rZW4nLDE4MjIpO2JjYigxODIzLDExNyx5eGUsemdlKTtfLmFtPWZ1bmN0aW9uIEFnZShhKXtyZXR1cm4gdGhpcy5ifTtfLmVtPWZ1bmN0aW9uIEJnZSgpe3JldHVybiAxfTtfLmZtPWZ1bmN0aW9uIENnZShhKXtyZXR1cm4gJyg/JysodGhpcy5hPT0wPycnOlNlZSh0aGlzLmEpKSsodGhpcy5jPT0wPycnOlNlZSh0aGlzLmMpKSsnOicrdGhpcy5iLmZtKGEpKycpJ307Xy5hPTA7Xy5jPTA7dmFyIGhiYj1tZGIoa3hlLCdSZWdFeC9Ub2tlbi9Nb2RpZmllclRva2VuJywxODIzKTtiY2IoODIyLDExNyx5eGUsRGdlKTtfLmFtPWZ1bmN0aW9uIEVnZShhKXtyZXR1cm4gdGhpcy5hfTtfLmVtPWZ1bmN0aW9uIEZnZSgpe3JldHVybiAxfTtfLmZtPWZ1bmN0aW9uIEdnZShhKXt2YXIgYjtiPW51bGw7c3dpdGNoKHRoaXMuZSl7Y2FzZSA2OnRoaXMuYj09MD8oYj0nKD86Jyt0aGlzLmEuZm0oYSkrJyknKTooYj0nKCcrdGhpcy5hLmZtKGEpKycpJyk7YnJlYWs7Y2FzZSAyMDpiPScoPz0nK3RoaXMuYS5mbShhKSsnKSc7YnJlYWs7Y2FzZSAyMTpiPScoPyEnK3RoaXMuYS5mbShhKSsnKSc7YnJlYWs7Y2FzZSAyMjpiPScoPzw9Jyt0aGlzLmEuZm0oYSkrJyknO2JyZWFrO2Nhc2UgMjM6Yj0nKD88IScrdGhpcy5hLmZtKGEpKycpJzticmVhaztjYXNlIDI0OmI9Jyg/PicrdGhpcy5hLmZtKGEpKycpJzt9cmV0dXJuIGJ9O18uYj0wO3ZhciBpYmI9bWRiKGt4ZSwnUmVnRXgvVG9rZW4vUGFyZW5Ub2tlbicsODIyKTtiY2IoNTIxLDExNyx7MzoxLDExNzoxLDUyMToxfSxIZ2UpO18uYm09ZnVuY3Rpb24gSWdlKCl7cmV0dXJuIHRoaXMuYn07Xy5mbT1mdW5jdGlvbiBKZ2UoYSl7cmV0dXJuIHRoaXMuZT09MTI/J1xcXFwnK3RoaXMuYTpXZWUodGhpcy5iKX07Xy5hPTA7dmFyIGpiYj1tZGIoa3hlLCdSZWdFeC9Ub2tlbi9TdHJpbmdUb2tlbicsNTIxKTtiY2IoNDY1LDExNyx5eGUsTGdlKTtfLiRsPWZ1bmN0aW9uIE1nZShhKXtLZ2UodGhpcyxhKX07Xy5hbT1mdW5jdGlvbiBOZ2UoYSl7cmV0dXJuIEJEKFV2Yih0aGlzLmEsYSksMTE3KX07Xy5lbT1mdW5jdGlvbiBPZ2UoKXtyZXR1cm4gIXRoaXMuYT8wOnRoaXMuYS5hLmMubGVuZ3RofTtfLmZtPWZ1bmN0aW9uIFBnZShhKXt2YXIgYixjLGQsZSxmO2lmKHRoaXMuZT09MSl7aWYodGhpcy5hLmEuYy5sZW5ndGg9PTIpe2I9QkQoVXZiKHRoaXMuYSwwKSwxMTcpO2M9QkQoVXZiKHRoaXMuYSwxKSwxMTcpO2MuZT09MyYmYy5hbSgwKT09Yj8oZT1iLmZtKGEpKycrJyk6Yy5lPT05JiZjLmFtKDApPT1iPyhlPWIuZm0oYSkrJys/Jyk6KGU9Yi5mbShhKSsoJycrYy5mbShhKSkpfWVsc2V7Zj1uZXcgSGZiO2ZvcihkPTA7ZDx0aGlzLmEuYS5jLmxlbmd0aDtkKyspe0VmYihmLEJEKFV2Yih0aGlzLmEsZCksMTE3KS5mbShhKSl9ZT1mLmF9cmV0dXJuIGV9aWYodGhpcy5hLmEuYy5sZW5ndGg9PTImJkJEKFV2Yih0aGlzLmEsMSksMTE3KS5lPT03KXtlPUJEKFV2Yih0aGlzLmEsMCksMTE3KS5mbShhKSsnPyd9ZWxzZSBpZih0aGlzLmEuYS5jLmxlbmd0aD09MiYmQkQoVXZiKHRoaXMuYSwwKSwxMTcpLmU9PTcpe2U9QkQoVXZiKHRoaXMuYSwxKSwxMTcpLmZtKGEpKyc/Pyd9ZWxzZXtmPW5ldyBIZmI7RWZiKGYsQkQoVXZiKHRoaXMuYSwwKSwxMTcpLmZtKGEpKTtmb3IoZD0xO2Q8dGhpcy5hLmEuYy5sZW5ndGg7ZCsrKXtmLmErPSd8JztFZmIoZixCRChVdmIodGhpcy5hLGQpLDExNykuZm0oYSkpfWU9Zi5hfXJldHVybiBlfTt2YXIga2JiPW1kYihreGUsJ1JlZ0V4L1Rva2VuL1VuaW9uVG9rZW4nLDQ2NSk7YmNiKDUxOCwxLHs1OTI6MX0sUmdlKTtfLkliPWZ1bmN0aW9uIFNnZSgpe3JldHVybiB0aGlzLmEuYn07dmFyIG1iYj1tZGIoenhlLCdYTUxUeXBlVXRpbC9QYXR0ZXJuTWF0Y2hlckltcGwnLDUxOCk7YmNiKDE2MjIsMTM4MSx7fSxWZ2UpO3ZhciBUZ2U7dmFyIG5iYj1tZGIoenhlLCdYTUxUeXBlVmFsaWRhdG9yJywxNjIyKTtiY2IoMjY0LDEsdmllLFlnZSk7Xy5KYz1mdW5jdGlvbiBaZ2UoYSl7cmViKHRoaXMsYSl9O18uS2M9ZnVuY3Rpb24gJGdlKCl7cmV0dXJuICh0aGlzLmItdGhpcy5hKSp0aGlzLmM8MD9XZ2U6bmV3IHNoZSh0aGlzKX07Xy5hPTA7Xy5iPTA7Xy5jPTA7dmFyIFdnZTt2YXIgcWJiPW1kYihCeGUsJ0V4Y2x1c2l2ZVJhbmdlJywyNjQpO2JjYigxMDY4LDEsamllLGRoZSk7Xy5SYj1mdW5jdGlvbiBlaGUoYSl7QkQoYSwxOSk7X2dlKCl9O18uTmI9ZnVuY3Rpb24gZmhlKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIGloZSgpe3JldHVybiBhaGUoKX07Xy5VYj1mdW5jdGlvbiBraGUoKXtyZXR1cm4gYmhlKCl9O18uV2I9ZnVuY3Rpb24gbmhlKGEpe0JEKGEsMTkpO2NoZSgpfTtfLk9iPWZ1bmN0aW9uIGdoZSgpe3JldHVybiBmYWxzZX07Xy5TYj1mdW5jdGlvbiBoaGUoKXtyZXR1cm4gZmFsc2V9O18uVGI9ZnVuY3Rpb24gamhlKCl7cmV0dXJuIC0xfTtfLlZiPWZ1bmN0aW9uIGxoZSgpe3JldHVybiAtMX07Xy5RYj1mdW5jdGlvbiBtaGUoKXt0aHJvdyB2YmIobmV3IGNnYihFeGUpKX07dmFyIG9iYj1tZGIoQnhlLCdFeGNsdXNpdmVSYW5nZS8xJywxMDY4KTtiY2IoMjU0LDEsamllLHNoZSk7Xy5SYj1mdW5jdGlvbiB0aGUoYSl7QkQoYSwxOSk7b2hlKCl9O18uTmI9ZnVuY3Rpb24gdWhlKGEpe1JyYih0aGlzLGEpfTtfLlBiPWZ1bmN0aW9uIHhoZSgpe3JldHVybiBwaGUodGhpcyl9O18uVWI9ZnVuY3Rpb24gemhlKCl7cmV0dXJuIHFoZSh0aGlzKX07Xy5XYj1mdW5jdGlvbiBDaGUoYSl7QkQoYSwxOSk7cmhlKCl9O18uT2I9ZnVuY3Rpb24gdmhlKCl7cmV0dXJuIHRoaXMuYy5jPDA/dGhpcy5hPj10aGlzLmMuYjp0aGlzLmE8PXRoaXMuYy5ifTtfLlNiPWZ1bmN0aW9uIHdoZSgpe3JldHVybiB0aGlzLmI+MH07Xy5UYj1mdW5jdGlvbiB5aGUoKXtyZXR1cm4gdGhpcy5ifTtfLlZiPWZ1bmN0aW9uIEFoZSgpe3JldHVybiB0aGlzLmItMX07Xy5RYj1mdW5jdGlvbiBCaGUoKXt0aHJvdyB2YmIobmV3IGNnYihFeGUpKX07Xy5hPTA7Xy5iPTA7dmFyIHBiYj1tZGIoQnhlLCdFeGNsdXNpdmVSYW5nZS9SYW5nZUl0ZXJhdG9yJywyNTQpO3ZhciBURD1wZGIoRnZlLCdDJyk7dmFyIFdEPXBkYihJdmUsJ0knKTt2YXIgc2JiPXBkYihLaGUsJ1onKTt2YXIgWEQ9cGRiKEp2ZSwnSicpO3ZhciBTRD1wZGIoRXZlLCdCJyk7dmFyIFVEPXBkYihHdmUsJ0QnKTt2YXIgVkQ9cGRiKEh2ZSwnRicpO3ZhciByYmI9cGRiKEt2ZSwnUycpO3ZhciBoMT1vZGIoJ29yZy5lY2xpcHNlLmVsay5jb3JlLmxhYmVscycsJ0lMYWJlbE1hbmFnZXInKTt2YXIgTzQ9b2RiKFR0ZSwnRGlhZ25vc3RpY0NoYWluJyk7dmFyIHU4PW9kYihwd2UsJ1Jlc291cmNlU2V0Jyk7dmFyIFY0PW1kYihUdGUsJ0ludm9jYXRpb25UYXJnZXRFeGNlcHRpb24nLG51bGwpO3ZhciBJaGU9KEF6KCksRHopO3ZhciBnd3RPbkxvYWQ9Z3d0T25Mb2FkPVpiYjtYYmIoaGNiKTskYmIoJ3Blcm1Qcm9wcycsW1tbRnhlLEd4ZV0sW0h4ZSwnZ2Vja28xXzgnXV0sW1tGeGUsR3hlXSxbSHhlLCdpZTEwJ11dLFtbRnhlLEd4ZV0sW0h4ZSwnaWU4J11dLFtbRnhlLEd4ZV0sW0h4ZSwnaWU5J11dLFtbRnhlLEd4ZV0sW0h4ZSwnc2FmYXJpJ11dXSk7XG4vLyAtLS0tLS0tLS0tLS0tLSAgICBSVU4gR1dUIElOSVRJQUxJWkFUSU9OIENPREUgICAgLS0tLS0tLS0tLS0tLS0gXG5nd3RPbkxvYWQobnVsbCwgJ2VsaycsIG51bGwpO1xuXG59KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gd2luZG93IDoge30pXG59LHt9XSwzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IChjKSAyMDIxIEtpZWwgVW5pdmVyc2l0eSBhbmQgb3RoZXJzLlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlXG4gKiB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjAgd2hpY2ggaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAuXG4gKiBcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbnZhciBFTEsgPSByZXF1aXJlKCcuL2Vsay1hcGkuanMnKS5kZWZhdWx0O1xuXG52YXIgRUxLTm9kZSA9IGZ1bmN0aW9uIChfRUxLKSB7XG4gIF9pbmhlcml0cyhFTEtOb2RlLCBfRUxLKTtcblxuICBmdW5jdGlvbiBFTEtOb2RlKCkge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFTEtOb2RlKTtcblxuICAgIHZhciBvcHRpb25zQ2xvbmUgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAgIHZhciB3b3JrZXJUaHJlYWRzRXhpc3QgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgcmVxdWlyZS5yZXNvbHZlKCd3ZWItd29ya2VyJyk7XG4gICAgICB3b3JrZXJUaHJlYWRzRXhpc3QgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAvLyB1c2VyIHJlcXVlc3RlZCBhIHdvcmtlclxuICAgIGlmIChvcHRpb25zLndvcmtlclVybCkge1xuICAgICAgaWYgKHdvcmtlclRocmVhZHNFeGlzdCkge1xuICAgICAgICB2YXIgV29ya2VyID0gcmVxdWlyZSgnd2ViLXdvcmtlcicpO1xuICAgICAgICBvcHRpb25zQ2xvbmUud29ya2VyRmFjdG9yeSA9IGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFdvcmtlcih1cmwpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdXZWIgd29ya2VyIHJlcXVlc3RlZCBidXQgXFwnd2ViLXdvcmtlclxcJyBwYWNrYWdlIG5vdCBpbnN0YWxsZWQuIFxcbkNvbnNpZGVyIGluc3RhbGxpbmcgdGhlIHBhY2thZ2Ugb3IgcGFzcyB5b3VyIG93biBcXCd3b3JrZXJGYWN0b3J5XFwnIHRvIEVMS1xcJ3MgY29uc3RydWN0b3IuXFxuLi4uIEZhbGxpbmcgYmFjayB0byBub24td2ViIHdvcmtlciB2ZXJzaW9uLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVubGVzcyBubyBvdGhlciB3b3JrZXJGYWN0b3J5IGlzIHJlZ2lzdGVyZWQsIHVzZSB0aGUgZmFrZSB3b3JrZXJcbiAgICBpZiAoIW9wdGlvbnNDbG9uZS53b3JrZXJGYWN0b3J5KSB7XG4gICAgICB2YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL2Vsay13b3JrZXIubWluLmpzJyksXG4gICAgICAgICAgX1dvcmtlciA9IF9yZXF1aXJlLldvcmtlcjtcblxuICAgICAgb3B0aW9uc0Nsb25lLndvcmtlckZhY3RvcnkgPSBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgIHJldHVybiBuZXcgX1dvcmtlcih1cmwpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEVMS05vZGUuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihFTEtOb2RlKSkuY2FsbCh0aGlzLCBvcHRpb25zQ2xvbmUpKTtcbiAgfVxuXG4gIHJldHVybiBFTEtOb2RlO1xufShFTEspO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLmV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbm1vZHVsZS5leHBvcnRzID0gRUxLTm9kZTtcbkVMS05vZGUuZGVmYXVsdCA9IEVMS05vZGU7XG59LHtcIi4vZWxrLWFwaS5qc1wiOjEsXCIuL2Vsay13b3JrZXIubWluLmpzXCI6MixcIndlYi13b3JrZXJcIjo0fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKipcbiAqIENvcHlyaWdodCAyMDIwIEdvb2dsZSBMTENcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gV29ya2VyO1xufSx7fV19LHt9LFszXSkoMylcbn0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/elkjs/lib/elk.bundled.js\n"); + +/***/ }), + +/***/ "../../../node_modules/layout-base/layout-base.js": +/*!********************************************************!*\ + !*** ../../../node_modules/layout-base/layout-base.js ***! + \********************************************************/ +/***/ (function(module) { + +eval("(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __nested_webpack_require_543__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_543__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__nested_webpack_require_543__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__nested_webpack_require_543__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__nested_webpack_require_543__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__nested_webpack_require_543__.d = function(exports, name, getter) {\n/******/ \t\tif(!__nested_webpack_require_543__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__nested_webpack_require_543__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__nested_webpack_require_543__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__nested_webpack_require_543__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__nested_webpack_require_543__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __nested_webpack_require_543__(__nested_webpack_require_543__.s = 26);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __nested_webpack_require_4947__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __nested_webpack_require_4947__(2);\nvar IGeometry = __nested_webpack_require_4947__(8);\nvar IMath = __nested_webpack_require_4947__(9);\n\nfunction LEdge(source, target, vEdge) {\n LGraphObject.call(this, vEdge);\n\n this.isOverlapingSourceAndTarget = false;\n this.vGraphObject = vEdge;\n this.bendpoints = [];\n this.source = source;\n this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n if (this.source === node) {\n return this.target;\n } else if (this.target === node) {\n return this.source;\n } else {\n throw \"Node is not incident with this edge\";\n }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n var otherEnd = this.getOtherEnd(node);\n var root = graph.getGraphManager().getRoot();\n\n while (true) {\n if (otherEnd.getOwner() == graph) {\n return otherEnd;\n }\n\n if (otherEnd.getOwner() == root) {\n break;\n }\n\n otherEnd = otherEnd.getOwner().getParent();\n }\n\n return null;\n};\n\nLEdge.prototype.updateLength = function () {\n var clipPointCoordinates = new Array(4);\n\n this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n if (!this.isOverlapingSourceAndTarget) {\n this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __nested_webpack_require_8167__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __nested_webpack_require_8167__(2);\nvar Integer = __nested_webpack_require_8167__(10);\nvar RectangleD = __nested_webpack_require_8167__(13);\nvar LayoutConstants = __nested_webpack_require_8167__(0);\nvar RandomSeed = __nested_webpack_require_8167__(16);\nvar PointD = __nested_webpack_require_8167__(4);\n\nfunction LNode(gm, loc, size, vNode) {\n //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n if (size == null && vNode == null) {\n vNode = loc;\n }\n\n LGraphObject.call(this, vNode);\n\n //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n if (gm.graphManager != null) gm = gm.graphManager;\n\n this.estimatedSize = Integer.MIN_VALUE;\n this.inclusionTreeDepth = Integer.MAX_VALUE;\n this.vGraphObject = vNode;\n this.edges = [];\n this.graphManager = gm;\n\n if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n // if (this.owner != null) {\n // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n // throw \"assert failed\";\n // }\n // }\n\n return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n this.rect.x = upperLeft.x;\n this.rect.y = upperLeft.y;\n this.rect.width = dimension.width;\n this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n this.rect.x = cx - this.rect.width / 2;\n this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n this.rect.x = x;\n this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n this.rect.x += dx;\n this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n var edgeList = [];\n var edge;\n var self = this;\n\n self.edges.forEach(function (edge) {\n\n if (edge.target == to) {\n if (edge.source != self) throw \"Incorrect edge source!\";\n\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n var edgeList = [];\n var edge;\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n if (edge.target == other || edge.source == other) {\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n var neighbors = new Set();\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (edge.source == self) {\n neighbors.add(edge.target);\n } else {\n if (edge.target != self) {\n throw \"Incorrect incidency!\";\n }\n\n neighbors.add(edge.source);\n }\n });\n\n return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n var withNeighborsList = new Set();\n var childNode;\n var children;\n\n withNeighborsList.add(this);\n\n if (this.child != null) {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n children = childNode.withChildren();\n children.forEach(function (node) {\n withNeighborsList.add(node);\n });\n }\n }\n\n return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n var noOfChildren = 0;\n var childNode;\n\n if (this.child == null) {\n noOfChildren = 1;\n } else {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n\n noOfChildren += childNode.getNoOfChildren();\n }\n }\n\n if (noOfChildren == 0) {\n noOfChildren = 1;\n }\n return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n if (this.child == null) {\n return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n } else {\n this.estimatedSize = this.child.calcEstimatedSize();\n this.rect.width = this.estimatedSize;\n this.rect.height = this.estimatedSize;\n\n return this.estimatedSize;\n }\n};\n\nLNode.prototype.scatter = function () {\n var randomCenterX;\n var randomCenterY;\n\n var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n this.rect.x = randomCenterX;\n this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n if (this.getChild() == null) {\n throw \"assert failed\";\n }\n if (this.getChild().getNodes().length != 0) {\n // wrap the children nodes by re-arranging the boundaries\n var childGraph = this.getChild();\n childGraph.updateBounds(true);\n\n this.rect.x = childGraph.getLeft();\n this.rect.y = childGraph.getTop();\n\n this.setWidth(childGraph.getRight() - childGraph.getLeft());\n this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n // Update compound bounds considering its label properties \n if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = childGraph.getRight() - childGraph.getLeft();\n var height = childGraph.getBottom() - childGraph.getTop();\n\n if (this.labelWidth > width) {\n this.rect.x -= (this.labelWidth - width) / 2;\n this.setWidth(this.labelWidth);\n }\n\n if (this.labelHeight > height) {\n if (this.labelPos == \"center\") {\n this.rect.y -= (this.labelHeight - height) / 2;\n } else if (this.labelPos == \"top\") {\n this.rect.y -= this.labelHeight - height;\n }\n this.setHeight(this.labelHeight);\n }\n }\n }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n throw \"assert failed\";\n }\n return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n var left = this.rect.x;\n\n if (left > LayoutConstants.WORLD_BOUNDARY) {\n left = LayoutConstants.WORLD_BOUNDARY;\n } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n left = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var top = this.rect.y;\n\n if (top > LayoutConstants.WORLD_BOUNDARY) {\n top = LayoutConstants.WORLD_BOUNDARY;\n } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n top = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var leftTop = new PointD(left, top);\n var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n if (this.owner == null) {\n return null;\n }\n\n return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n if (x == null && y == null) {\n this.x = 0;\n this.y = 0;\n } else {\n this.x = x;\n this.y = y;\n }\n}\n\nPointD.prototype.getX = function () {\n return this.x;\n};\n\nPointD.prototype.getY = function () {\n return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n this.x += dim.width;\n this.y += dim.height;\n return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __nested_webpack_require_17549__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __nested_webpack_require_17549__(2);\nvar Integer = __nested_webpack_require_17549__(10);\nvar LayoutConstants = __nested_webpack_require_17549__(0);\nvar LGraphManager = __nested_webpack_require_17549__(6);\nvar LNode = __nested_webpack_require_17549__(3);\nvar LEdge = __nested_webpack_require_17549__(1);\nvar RectangleD = __nested_webpack_require_17549__(13);\nvar Point = __nested_webpack_require_17549__(12);\nvar LinkedList = __nested_webpack_require_17549__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n LGraphObject.call(this, vGraph);\n this.estimatedSize = Integer.MIN_VALUE;\n this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n this.edges = [];\n this.nodes = [];\n this.isConnected = false;\n this.parent = parent;\n\n if (obj2 != null && obj2 instanceof LGraphManager) {\n this.graphManager = obj2;\n } else if (obj2 != null && obj2 instanceof Layout) {\n this.graphManager = obj2.graphManager;\n }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n if (sourceNode == null && targetNode == null) {\n var newNode = obj1;\n if (this.graphManager == null) {\n throw \"Graph has no graph mgr!\";\n }\n if (this.getNodes().indexOf(newNode) > -1) {\n throw \"Node already in graph!\";\n }\n newNode.owner = this;\n this.getNodes().push(newNode);\n\n return newNode;\n } else {\n var newEdge = obj1;\n if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n throw \"Source or target not in graph!\";\n }\n\n if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n throw \"Both owners must be this graph!\";\n }\n\n if (sourceNode.owner != targetNode.owner) {\n return null;\n }\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // set as intra-graph edge\n newEdge.isInterGraph = false;\n\n // add to graph edge list\n this.getEdges().push(newEdge);\n\n // add to incidency lists\n sourceNode.edges.push(newEdge);\n\n if (targetNode != sourceNode) {\n targetNode.edges.push(newEdge);\n }\n\n return newEdge;\n }\n};\n\nLGraph.prototype.remove = function (obj) {\n var node = obj;\n if (obj instanceof LNode) {\n if (node == null) {\n throw \"Node is null!\";\n }\n if (!(node.owner != null && node.owner == this)) {\n throw \"Owner graph is invalid!\";\n }\n if (this.graphManager == null) {\n throw \"Owner graph manager is invalid!\";\n }\n // remove incident edges first (make a copy to do it safely)\n var edgesToBeRemoved = node.edges.slice();\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n\n if (edge.isInterGraph) {\n this.graphManager.remove(edge);\n } else {\n edge.source.owner.remove(edge);\n }\n }\n\n // now the node itself\n var index = this.nodes.indexOf(node);\n if (index == -1) {\n throw \"Node not in owner node list!\";\n }\n\n this.nodes.splice(index, 1);\n } else if (obj instanceof LEdge) {\n var edge = obj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n throw \"Source and/or target owner is invalid!\";\n }\n\n var sourceIndex = edge.source.edges.indexOf(edge);\n var targetIndex = edge.target.edges.indexOf(edge);\n if (!(sourceIndex > -1 && targetIndex > -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n edge.source.edges.splice(sourceIndex, 1);\n\n if (edge.target != edge.source) {\n edge.target.edges.splice(targetIndex, 1);\n }\n\n var index = edge.source.owner.getEdges().indexOf(edge);\n if (index == -1) {\n throw \"Not in owner's edge list!\";\n }\n\n edge.source.owner.getEdges().splice(index, 1);\n }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n var top = Integer.MAX_VALUE;\n var left = Integer.MAX_VALUE;\n var nodeTop;\n var nodeLeft;\n var margin;\n\n var nodes = this.getNodes();\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeTop = lNode.getTop();\n nodeLeft = lNode.getLeft();\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n }\n\n // Do we have any nodes in this graph?\n if (top == Integer.MAX_VALUE) {\n return null;\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = left - margin;\n this.top = top - margin;\n\n // Apply the margins and return the result\n return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n // calculate bounds\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n var margin;\n\n var nodes = this.nodes;\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n\n if (recursive && lNode.child != null) {\n lNode.updateBounds();\n }\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n if (left == Integer.MAX_VALUE) {\n this.left = this.parent.getLeft();\n this.right = this.parent.getRight();\n this.top = this.parent.getTop();\n this.bottom = this.parent.getBottom();\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = boundingRect.x - margin;\n this.right = boundingRect.x + boundingRect.width + margin;\n this.top = boundingRect.y - margin;\n this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n if (this == this.graphManager.getRoot()) {\n return 1;\n } else {\n return this.parent.getInclusionTreeDepth();\n }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n var size = 0;\n var nodes = this.nodes;\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n size += lNode.calcEstimatedSize();\n }\n\n if (size == 0) {\n this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n } else {\n this.estimatedSize = size / Math.sqrt(this.nodes.length);\n }\n\n return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n var self = this;\n if (this.nodes.length == 0) {\n this.isConnected = true;\n return;\n }\n\n var queue = new LinkedList();\n var visited = new Set();\n var currentNode = this.nodes[0];\n var neighborEdges;\n var currentNeighbor;\n var childrenOfNode = currentNode.withChildren();\n childrenOfNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n\n while (queue.length !== 0) {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n neighborEdges = currentNode.getEdges();\n var size = neighborEdges.length;\n for (var i = 0; i < size; i++) {\n var neighborEdge = neighborEdges[i];\n currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n // Add unvisited neighbors to the list to visit\n if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n var childrenOfNeighbor = currentNeighbor.withChildren();\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n }\n }\n }\n\n this.isConnected = false;\n\n if (visited.size >= this.nodes.length) {\n var noOfVisitedInThisGraph = 0;\n\n visited.forEach(function (visitedNode) {\n if (visitedNode.owner == self) {\n noOfVisitedInThisGraph++;\n }\n });\n\n if (noOfVisitedInThisGraph == this.nodes.length) {\n this.isConnected = true;\n }\n }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __nested_webpack_require_27617__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __nested_webpack_require_27617__(1);\n\nfunction LGraphManager(layout) {\n LGraph = __nested_webpack_require_27617__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n this.layout = layout;\n\n this.graphs = [];\n this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n var ngraph = this.layout.newGraph();\n var nnode = this.layout.newNode(null);\n var root = this.add(ngraph, nnode);\n this.setRootGraph(root);\n return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n if (newEdge == null && sourceNode == null && targetNode == null) {\n if (newGraph == null) {\n throw \"Graph is null!\";\n }\n if (parentNode == null) {\n throw \"Parent node is null!\";\n }\n if (this.graphs.indexOf(newGraph) > -1) {\n throw \"Graph already in this graph mgr!\";\n }\n\n this.graphs.push(newGraph);\n\n if (newGraph.parent != null) {\n throw \"Already has a parent!\";\n }\n if (parentNode.child != null) {\n throw \"Already has a child!\";\n }\n\n newGraph.parent = parentNode;\n parentNode.child = newGraph;\n\n return newGraph;\n } else {\n //change the order of the parameters\n targetNode = newEdge;\n sourceNode = parentNode;\n newEdge = newGraph;\n var sourceGraph = sourceNode.getOwner();\n var targetGraph = targetNode.getOwner();\n\n if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n throw \"Source not in this graph mgr!\";\n }\n if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n throw \"Target not in this graph mgr!\";\n }\n\n if (sourceGraph == targetGraph) {\n newEdge.isInterGraph = false;\n return sourceGraph.add(newEdge, sourceNode, targetNode);\n } else {\n newEdge.isInterGraph = true;\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // add edge to inter-graph edge list\n if (this.edges.indexOf(newEdge) > -1) {\n throw \"Edge already in inter-graph edge list!\";\n }\n\n this.edges.push(newEdge);\n\n // add edge to source and target incidency lists\n if (!(newEdge.source != null && newEdge.target != null)) {\n throw \"Edge source and/or target is null!\";\n }\n\n if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n throw \"Edge already in source and/or target incidency list!\";\n }\n\n newEdge.source.edges.push(newEdge);\n newEdge.target.edges.push(newEdge);\n\n return newEdge;\n }\n }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n if (lObj instanceof LGraph) {\n var graph = lObj;\n if (graph.getGraphManager() != this) {\n throw \"Graph not in this graph mgr\";\n }\n if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n throw \"Invalid parent node!\";\n }\n\n // first the edges (make a copy to do it safely)\n var edgesToBeRemoved = [];\n\n edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n graph.remove(edge);\n }\n\n // then the nodes (make a copy to do it safely)\n var nodesToBeRemoved = [];\n\n nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n var node;\n s = nodesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n node = nodesToBeRemoved[i];\n graph.remove(node);\n }\n\n // check if graph is the root\n if (graph == this.rootGraph) {\n this.setRootGraph(null);\n }\n\n // now remove the graph itself\n var index = this.graphs.indexOf(graph);\n this.graphs.splice(index, 1);\n\n // also reset the parent of the graph\n graph.parent = null;\n } else if (lObj instanceof LEdge) {\n edge = lObj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!edge.isInterGraph) {\n throw \"Not an inter-graph edge!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n\n // remove edge from source and target nodes' incidency lists\n\n if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n var index = edge.source.edges.indexOf(edge);\n edge.source.edges.splice(index, 1);\n index = edge.target.edges.indexOf(edge);\n edge.target.edges.splice(index, 1);\n\n // remove edge from owner graph manager's inter-graph edge list\n\n if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n throw \"Edge owner graph or owner graph manager is null!\";\n }\n if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n throw \"Not in owner graph manager's edge list!\";\n }\n\n var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n edge.source.owner.getGraphManager().edges.splice(index, 1);\n }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n if (this.allNodes == null) {\n var nodeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < s; i++) {\n nodeList = nodeList.concat(graphs[i].getNodes());\n }\n this.allNodes = nodeList;\n }\n return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n if (this.allEdges == null) {\n var edgeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < graphs.length; i++) {\n edgeList = edgeList.concat(graphs[i].getEdges());\n }\n\n edgeList = edgeList.concat(this.edges);\n\n this.allEdges = edgeList;\n }\n return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n if (this.allNodesToApplyGravitation != null) {\n throw \"assert failed\";\n }\n\n this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n if (graph.getGraphManager() != this) {\n throw \"Root not in this graph mgr!\";\n }\n\n this.rootGraph = graph;\n // root graph must have a root node associated with it for convenience\n if (graph.parent == null) {\n graph.parent = this.layout.newNode(\"Root node\");\n }\n};\n\nLGraphManager.prototype.getLayout = function () {\n return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n if (!(firstNode != null && secondNode != null)) {\n throw \"assert failed\";\n }\n\n if (firstNode == secondNode) {\n return true;\n }\n // Is second node an ancestor of the first one?\n var ownerGraph = firstNode.getOwner();\n var parentNode;\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == secondNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n // Is first node an ancestor of the second one?\n ownerGraph = secondNode.getOwner();\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == firstNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n\n return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n var edge;\n var sourceNode;\n var targetNode;\n var sourceAncestorGraph;\n var targetAncestorGraph;\n\n var edges = this.getAllEdges();\n var s = edges.length;\n for (var i = 0; i < s; i++) {\n edge = edges[i];\n\n sourceNode = edge.source;\n targetNode = edge.target;\n edge.lca = null;\n edge.sourceInLca = sourceNode;\n edge.targetInLca = targetNode;\n\n if (sourceNode == targetNode) {\n edge.lca = sourceNode.getOwner();\n continue;\n }\n\n sourceAncestorGraph = sourceNode.getOwner();\n\n while (edge.lca == null) {\n edge.targetInLca = targetNode;\n targetAncestorGraph = targetNode.getOwner();\n\n while (edge.lca == null) {\n if (targetAncestorGraph == sourceAncestorGraph) {\n edge.lca = targetAncestorGraph;\n break;\n }\n\n if (targetAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca != null) {\n throw \"assert failed\";\n }\n edge.targetInLca = targetAncestorGraph.getParent();\n targetAncestorGraph = edge.targetInLca.getOwner();\n }\n\n if (sourceAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca == null) {\n edge.sourceInLca = sourceAncestorGraph.getParent();\n sourceAncestorGraph = edge.sourceInLca.getOwner();\n }\n }\n\n if (edge.lca == null) {\n throw \"assert failed\";\n }\n }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n if (firstNode == secondNode) {\n return firstNode.getOwner();\n }\n var firstOwnerGraph = firstNode.getOwner();\n\n do {\n if (firstOwnerGraph == null) {\n break;\n }\n var secondOwnerGraph = secondNode.getOwner();\n\n do {\n if (secondOwnerGraph == null) {\n break;\n }\n\n if (secondOwnerGraph == firstOwnerGraph) {\n return secondOwnerGraph;\n }\n secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n } while (true);\n\n firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n } while (true);\n\n return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n if (graph == null && depth == null) {\n graph = this.rootGraph;\n depth = 1;\n }\n var node;\n\n var nodes = graph.getNodes();\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n node = nodes[i];\n node.inclusionTreeDepth = depth;\n\n if (node.child != null) {\n this.calcInclusionTreeDepths(node.child, depth + 1);\n }\n }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n var edge;\n\n var s = this.edges.length;\n for (var i = 0; i < s; i++) {\n edge = this.edges[i];\n\n if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n return true;\n }\n }\n return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __nested_webpack_require_38707__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __nested_webpack_require_38707__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __nested_webpack_require_40298__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __nested_webpack_require_40298__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n if (!rectA.intersects(rectB)) {\n throw \"assert failed\";\n }\n\n var directions = new Array(2);\n\n this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n // update the overlapping amounts for the following cases:\n if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n /* Case x.1:\n *\n * rectA\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectB\n */\n overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n /* Case x.2:\n *\n * rectB\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectA\n */\n overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n }\n if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n /* Case y.1:\n * ________ rectA\n * |\n * |\n * ______|____ rectB\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n /* Case y.2:\n * ________ rectB\n * |\n * |\n * ______|____ rectA\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n }\n\n // find slope of the line passes two centers\n var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n // if centers are overlapped\n if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n // assume the slope is 1 (45 degree)\n slope = 1.0;\n }\n\n var moveByY = slope * overlapAmount[0];\n var moveByX = overlapAmount[1] / slope;\n if (overlapAmount[0] < moveByX) {\n moveByX = overlapAmount[0];\n } else {\n moveByY = overlapAmount[1];\n }\n // return half the amount so that if each rectangle is moved by these\n // amounts in opposite directions, overlap will be resolved\n overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1, then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1, then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n if (rectA.getCenterX() < rectB.getCenterX()) {\n directions[0] = -1;\n } else {\n directions[0] = 1;\n }\n\n if (rectA.getCenterY() < rectB.getCenterY()) {\n directions[1] = -1;\n } else {\n directions[1] = 1;\n }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n var p1x = rectA.getCenterX();\n var p1y = rectA.getCenterY();\n var p2x = rectB.getCenterX();\n var p2y = rectB.getCenterY();\n\n //if two rectangles intersect, then clipping points are centers\n if (rectA.intersects(rectB)) {\n result[0] = p1x;\n result[1] = p1y;\n result[2] = p2x;\n result[3] = p2y;\n return true;\n }\n //variables for rectA\n var topLeftAx = rectA.getX();\n var topLeftAy = rectA.getY();\n var topRightAx = rectA.getRight();\n var bottomLeftAx = rectA.getX();\n var bottomLeftAy = rectA.getBottom();\n var bottomRightAx = rectA.getRight();\n var halfWidthA = rectA.getWidthHalf();\n var halfHeightA = rectA.getHeightHalf();\n //variables for rectB\n var topLeftBx = rectB.getX();\n var topLeftBy = rectB.getY();\n var topRightBx = rectB.getRight();\n var bottomLeftBx = rectB.getX();\n var bottomLeftBy = rectB.getBottom();\n var bottomRightBx = rectB.getRight();\n var halfWidthB = rectB.getWidthHalf();\n var halfHeightB = rectB.getHeightHalf();\n\n //flag whether clipping points are found\n var clipPointAFound = false;\n var clipPointBFound = false;\n\n // line is vertical\n if (p1x === p2x) {\n if (p1y > p2y) {\n result[0] = p1x;\n result[1] = topLeftAy;\n result[2] = p2x;\n result[3] = bottomLeftBy;\n return false;\n } else if (p1y < p2y) {\n result[0] = p1x;\n result[1] = bottomLeftAy;\n result[2] = p2x;\n result[3] = topLeftBy;\n return false;\n } else {\n //not line, return null;\n }\n }\n // line is horizontal\n else if (p1y === p2y) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = p1y;\n result[2] = topRightBx;\n result[3] = p2y;\n return false;\n } else if (p1x < p2x) {\n result[0] = topRightAx;\n result[1] = p1y;\n result[2] = topLeftBx;\n result[3] = p2y;\n return false;\n } else {\n //not valid line, return null;\n }\n } else {\n //slopes of rectA's and rectB's diagonals\n var slopeA = rectA.height / rectA.width;\n var slopeB = rectB.height / rectB.width;\n\n //slope of line between center of rectA and center of rectB\n var slopePrime = (p2y - p1y) / (p2x - p1x);\n var cardinalDirectionA = void 0;\n var cardinalDirectionB = void 0;\n var tempPointAx = void 0;\n var tempPointAy = void 0;\n var tempPointBx = void 0;\n var tempPointBy = void 0;\n\n //determine whether clipping point is the corner of nodeA\n if (-slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = bottomLeftAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = topRightAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n }\n } else if (slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = bottomRightAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n }\n }\n\n //determine whether clipping point is the corner of nodeB\n if (-slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = bottomLeftBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = topRightBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n }\n } else if (slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = topLeftBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = bottomRightBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n }\n }\n\n //if both clipping points are corners\n if (clipPointAFound && clipPointBFound) {\n return false;\n }\n\n //determine Cardinal Direction of rectangles\n if (p1x > p2x) {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n } else {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n }\n } else {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n } else {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n }\n }\n //calculate clipping Point if it is not found before\n if (!clipPointAFound) {\n switch (cardinalDirectionA) {\n case 1:\n tempPointAy = topLeftAy;\n tempPointAx = p1x + -halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 2:\n tempPointAx = bottomRightAx;\n tempPointAy = p1y + halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 3:\n tempPointAy = bottomLeftAy;\n tempPointAx = p1x + halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 4:\n tempPointAx = bottomLeftAx;\n tempPointAy = p1y + -halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n }\n }\n if (!clipPointBFound) {\n switch (cardinalDirectionB) {\n case 1:\n tempPointBy = topLeftBy;\n tempPointBx = p2x + -halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 2:\n tempPointBx = bottomRightBx;\n tempPointBy = p2y + halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 3:\n tempPointBy = bottomLeftBy;\n tempPointBx = p2x + halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 4:\n tempPointBx = bottomLeftBx;\n tempPointBy = p2y + -halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n }\n }\n }\n return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n if (slope > slopePrime) {\n return line;\n } else {\n return 1 + line % 4;\n }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n if (f2 == null) {\n return this.getIntersection2(s1, s2, f1);\n }\n\n var x1 = s1.x;\n var y1 = s1.y;\n var x2 = s2.x;\n var y2 = s2.y;\n var x3 = f1.x;\n var y3 = f1.y;\n var x4 = f2.x;\n var y4 = f2.y;\n var x = void 0,\n y = void 0; // intersection point\n var a1 = void 0,\n a2 = void 0,\n b1 = void 0,\n b2 = void 0,\n c1 = void 0,\n c2 = void 0; // coefficients of line eqns.\n var denom = void 0;\n\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return null;\n }\n\n x = (b1 * c2 - b2 * c1) / denom;\n y = (a2 * c1 - a1 * c2) / denom;\n\n return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n var C_angle = void 0;\n\n if (Cx !== Nx) {\n C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n if (Nx < Cx) {\n C_angle += Math.PI;\n } else if (Ny < Cy) {\n C_angle += this.TWO_PI;\n }\n } else if (Ny < Cy) {\n C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n } else {\n C_angle = this.HALF_PI; // 90 degrees\n }\n\n return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n var a = p1.x;\n var b = p1.y;\n var c = p2.x;\n var d = p2.y;\n var p = p3.x;\n var q = p3.y;\n var r = p4.x;\n var s = p4.y;\n var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n if (det === 0) {\n return false;\n } else {\n var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n if (value > 0) {\n return 1;\n } else if (value < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\nIMath.floor = function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n if (prev !== null) {\n prev.next = node;\n } else {\n list.head = node;\n }\n\n if (next !== null) {\n next.prev = node;\n } else {\n list.tail = node;\n }\n\n node.prev = prev;\n node.next = next;\n\n list.length++;\n\n return node;\n};\n\nvar _remove = function _remove(node, list) {\n var prev = node.prev,\n next = node.next;\n\n\n if (prev !== null) {\n prev.next = next;\n } else {\n list.head = next;\n }\n\n if (next !== null) {\n next.prev = prev;\n } else {\n list.tail = prev;\n }\n\n node.prev = node.next = null;\n\n list.length--;\n\n return node;\n};\n\nvar LinkedList = function () {\n function LinkedList(vals) {\n var _this = this;\n\n _classCallCheck(this, LinkedList);\n\n this.length = 0;\n this.head = null;\n this.tail = null;\n\n if (vals != null) {\n vals.forEach(function (v) {\n return _this.push(v);\n });\n }\n }\n\n _createClass(LinkedList, [{\n key: \"size\",\n value: function size() {\n return this.length;\n }\n }, {\n key: \"insertBefore\",\n value: function insertBefore(val, otherNode) {\n return add(otherNode.prev, nodeFrom(val), otherNode, this);\n }\n }, {\n key: \"insertAfter\",\n value: function insertAfter(val, otherNode) {\n return add(otherNode, nodeFrom(val), otherNode.next, this);\n }\n }, {\n key: \"insertNodeBefore\",\n value: function insertNodeBefore(newNode, otherNode) {\n return add(otherNode.prev, newNode, otherNode, this);\n }\n }, {\n key: \"insertNodeAfter\",\n value: function insertNodeAfter(newNode, otherNode) {\n return add(otherNode, newNode, otherNode.next, this);\n }\n }, {\n key: \"push\",\n value: function push(val) {\n return add(this.tail, nodeFrom(val), null, this);\n }\n }, {\n key: \"unshift\",\n value: function unshift(val) {\n return add(null, nodeFrom(val), this.head, this);\n }\n }, {\n key: \"remove\",\n value: function remove(node) {\n return _remove(node, this);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n return _remove(this.tail, this).value;\n }\n }, {\n key: \"popNode\",\n value: function popNode() {\n return _remove(this.tail, this);\n }\n }, {\n key: \"shift\",\n value: function shift() {\n return _remove(this.head, this).value;\n }\n }, {\n key: \"shiftNode\",\n value: function shiftNode() {\n return _remove(this.head, this);\n }\n }, {\n key: \"get_object_at\",\n value: function get_object_at(index) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n return current.value;\n }\n }\n }, {\n key: \"set_object_at\",\n value: function set_object_at(index, value) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n current.value = value;\n }\n }\n }]);\n\n return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n this.x = null;\n this.y = null;\n if (x == null && y == null && p == null) {\n this.x = 0;\n this.y = 0;\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n this.x = x;\n this.y = y;\n } else if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.x = p.x;\n this.y = p.y;\n }\n}\n\nPoint.prototype.getX = function () {\n return this.x;\n};\n\nPoint.prototype.getY = function () {\n return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.setLocation(p.x, p.y);\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n //if both parameters are integer just move (x,y) location\n if (parseInt(x) == x && parseInt(y) == y) {\n this.move(x, y);\n } else {\n this.x = Math.floor(x + 0.5);\n this.y = Math.floor(y + 0.5);\n }\n }\n};\n\nPoint.prototype.move = function (x, y) {\n this.x = x;\n this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n this.x += dx;\n this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n if (obj.constructor.name == \"Point\") {\n var pt = obj;\n return this.x == pt.x && this.y == pt.y;\n }\n return this == obj;\n};\n\nPoint.prototype.toString = function () {\n return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n\n if (x != null && y != null && width != null && height != null) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n\nRectangleD.prototype.getX = function () {\n return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n if (this.getRight() < a.x) {\n return false;\n }\n\n if (this.getBottom() < a.y) {\n return false;\n }\n\n if (a.getRight() < this.x) {\n return false;\n }\n\n if (a.getBottom() < this.y) {\n return false;\n }\n\n return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n if (UniqueIDGeneretor.isPrimitive(obj)) {\n return obj;\n }\n if (obj.uniqueID != null) {\n return obj.uniqueID;\n }\n obj.uniqueID = UniqueIDGeneretor.getString();\n UniqueIDGeneretor.lastID++;\n return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n if (id == null) id = UniqueIDGeneretor.lastID;\n return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __nested_webpack_require_64072__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar LayoutConstants = __nested_webpack_require_64072__(0);\nvar LGraphManager = __nested_webpack_require_64072__(6);\nvar LNode = __nested_webpack_require_64072__(3);\nvar LEdge = __nested_webpack_require_64072__(1);\nvar LGraph = __nested_webpack_require_64072__(5);\nvar PointD = __nested_webpack_require_64072__(4);\nvar Transform = __nested_webpack_require_64072__(17);\nvar Emitter = __nested_webpack_require_64072__(27);\n\nfunction Layout(isRemoteUse) {\n Emitter.call(this);\n\n //Layout Quality: 0:draft, 1:default, 2:proof\n this.layoutQuality = LayoutConstants.QUALITY;\n //Whether layout should create bendpoints as needed or not\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n //Whether layout should be incremental or not\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n //Whether we animate from before to after layout node positions\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n //Whether we animate the layout process or not\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n //Number iterations that should be done between two successive animations\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n /**\r\n * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n * they are, both spring and repulsion forces between two leaf nodes can be\r\n * calculated without the expensive clipping point calculations, resulting\r\n * in major speed-up.\r\n */\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n /**\r\n * This is used for creation of bendpoints by using dummy nodes and edges.\r\n * Maps an LEdge to its dummy bendpoint path.\r\n */\n this.edgeToDummyNodes = new Map();\n this.graphManager = new LGraphManager(this);\n this.isLayoutFinished = false;\n this.isSubLayout = false;\n this.isRemoteUse = false;\n\n if (isRemoteUse != null) {\n this.isRemoteUse = isRemoteUse;\n }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n var gm = new LGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n this.isLayoutFinished = false;\n\n if (this.tilingPreLayout) {\n this.tilingPreLayout();\n }\n\n this.initParameters();\n var isLayoutSuccessfull;\n\n if (this.checkLayoutSuccess()) {\n isLayoutSuccessfull = false;\n } else {\n isLayoutSuccessfull = this.layout();\n }\n\n if (LayoutConstants.ANIMATE === 'during') {\n // If this is a 'during' layout animation. Layout is not finished yet. \n // We need to perform these in index.js when layout is really finished.\n return false;\n }\n\n if (isLayoutSuccessfull) {\n if (!this.isSubLayout) {\n this.doPostLayout();\n }\n }\n\n if (this.tilingPostLayout) {\n this.tilingPostLayout();\n }\n\n this.isLayoutFinished = true;\n\n return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n //assert !isSubLayout : \"Should not be called on sub-layout!\";\n // Propagate geometric changes to v-level objects\n if (!this.incremental) {\n this.transform();\n }\n this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n // update bend points\n if (this.createBendsAsNeeded) {\n this.createBendpointsFromDummyNodes();\n\n // reset all edges, since the topology has changed\n this.graphManager.resetAllEdges();\n }\n\n // perform edge, node and root updates if layout is not called\n // remotely\n if (!this.isRemoteUse) {\n // update all edges\n var edge;\n var allEdges = this.graphManager.getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n // this.update(edge);\n }\n\n // recursively update nodes\n var node;\n var nodes = this.graphManager.getRoot().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n // this.update(node);\n }\n\n // update root graph\n this.update(this.graphManager.getRoot());\n }\n};\n\nLayout.prototype.update = function (obj) {\n if (obj == null) {\n this.update2();\n } else if (obj instanceof LNode) {\n var node = obj;\n if (node.getChild() != null) {\n // since node is compound, recursively update child nodes\n var nodes = node.getChild().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n update(nodes[i]);\n }\n }\n\n // if the l-level node is associated with a v-level graph object,\n // then it is assumed that the v-level node implements the\n // interface Updatable.\n if (node.vGraphObject != null) {\n // cast to Updatable without any type check\n var vNode = node.vGraphObject;\n\n // call the update method of the interface\n vNode.update(node);\n }\n } else if (obj instanceof LEdge) {\n var edge = obj;\n // if the l-level edge is associated with a v-level graph object,\n // then it is assumed that the v-level edge implements the\n // interface Updatable.\n\n if (edge.vGraphObject != null) {\n // cast to Updatable without any type check\n var vEdge = edge.vGraphObject;\n\n // call the update method of the interface\n vEdge.update(edge);\n }\n } else if (obj instanceof LGraph) {\n var graph = obj;\n // if the l-level graph is associated with a v-level graph object,\n // then it is assumed that the v-level object implements the\n // interface Updatable.\n\n if (graph.vGraphObject != null) {\n // cast to Updatable without any type check\n var vGraph = graph.vGraphObject;\n\n // call the update method of the interface\n vGraph.update(graph);\n }\n }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n if (!this.isSubLayout) {\n this.layoutQuality = LayoutConstants.QUALITY;\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n }\n\n if (this.animationDuringLayout) {\n this.animationOnLayout = false;\n }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n if (newLeftTop == undefined) {\n this.transform(new PointD(0, 0));\n } else {\n // create a transformation object (from Eclipse to layout). When an\n // inverse transform is applied, we get upper-left coordinate of the\n // drawing or the root graph at given input coordinate (some margins\n // already included in calculation of left-top).\n\n var trans = new Transform();\n var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n if (leftTop != null) {\n trans.setWorldOrgX(newLeftTop.x);\n trans.setWorldOrgY(newLeftTop.y);\n\n trans.setDeviceOrgX(leftTop.x);\n trans.setDeviceOrgY(leftTop.y);\n\n var nodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.transform(trans);\n }\n }\n }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n if (graph == undefined) {\n //assert !this.incremental;\n this.positionNodesRandomly(this.getGraphManager().getRoot());\n this.getGraphManager().getRoot().updateBounds(true);\n } else {\n var lNode;\n var childGraph;\n\n var nodes = graph.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n lNode = nodes[i];\n childGraph = lNode.getChild();\n\n if (childGraph == null) {\n lNode.scatter();\n } else if (childGraph.getNodes().length == 0) {\n lNode.scatter();\n } else {\n this.positionNodesRandomly(childGraph);\n lNode.updateBounds();\n }\n }\n }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n var flatForest = [];\n var isForest = true;\n\n // Quick reference for all nodes in the graph manager associated with\n // this layout. The list should not be changed.\n var allNodes = this.graphManager.getRoot().getNodes();\n\n // First be sure that the graph is flat\n var isFlat = true;\n\n for (var i = 0; i < allNodes.length; i++) {\n if (allNodes[i].getChild() != null) {\n isFlat = false;\n }\n }\n\n // Return empty forest if the graph is not flat.\n if (!isFlat) {\n return flatForest;\n }\n\n // Run BFS for each component of the graph.\n\n var visited = new Set();\n var toBeVisited = [];\n var parents = new Map();\n var unProcessedNodes = [];\n\n unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n // Each iteration of this loop finds a component of the graph and\n // decides whether it is a tree or not. If it is a tree, adds it to the\n // forest and continued with the next component.\n\n while (unProcessedNodes.length > 0 && isForest) {\n toBeVisited.push(unProcessedNodes[0]);\n\n // Start the BFS. Each iteration of this loop visits a node in a\n // BFS manner.\n while (toBeVisited.length > 0 && isForest) {\n //pool operation\n var currentNode = toBeVisited[0];\n toBeVisited.splice(0, 1);\n visited.add(currentNode);\n\n // Traverse all neighbors of this node\n var neighborEdges = currentNode.getEdges();\n\n for (var i = 0; i < neighborEdges.length; i++) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n // If BFS is not growing from this neighbor.\n if (parents.get(currentNode) != currentNeighbor) {\n // We haven't previously visited this neighbor.\n if (!visited.has(currentNeighbor)) {\n toBeVisited.push(currentNeighbor);\n parents.set(currentNeighbor, currentNode);\n }\n // Since we have previously visited this neighbor and\n // this neighbor is not parent of currentNode, given\n // graph contains a component that is not tree, hence\n // it is not a forest.\n else {\n isForest = false;\n break;\n }\n }\n }\n }\n\n // The graph contains a component that is not a tree. Empty\n // previously found trees. The method will end.\n if (!isForest) {\n flatForest = [];\n }\n // Save currently visited nodes as a tree in our forest. Reset\n // visited and parents lists. Continue with the next component of\n // the graph, if any.\n else {\n var temp = [].concat(_toConsumableArray(visited));\n flatForest.push(temp);\n //flatForest = flatForest.concat(temp);\n //unProcessedNodes.removeAll(visited);\n for (var i = 0; i < temp.length; i++) {\n var value = temp[i];\n var index = unProcessedNodes.indexOf(value);\n if (index > -1) {\n unProcessedNodes.splice(index, 1);\n }\n }\n visited = new Set();\n parents = new Map();\n }\n }\n\n return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n var dummyNodes = [];\n var prev = edge.source;\n\n var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n for (var i = 0; i < edge.bendpoints.length; i++) {\n // create new dummy node\n var dummyNode = this.newNode(null);\n dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n graph.add(dummyNode);\n\n // create new dummy edge between prev and dummy node\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, dummyNode);\n\n dummyNodes.add(dummyNode);\n prev = dummyNode;\n }\n\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, edge.target);\n\n this.edgeToDummyNodes.set(edge, dummyNodes);\n\n // remove real edge from graph manager if it is inter-graph\n if (edge.isInterGraph()) {\n this.graphManager.remove(edge);\n }\n // else, remove the edge from the current graph\n else {\n graph.remove(edge);\n }\n\n return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n for (var k = 0; k < edges.length; k++) {\n var lEdge = edges[k];\n\n if (lEdge.bendpoints.length > 0) {\n var path = this.edgeToDummyNodes.get(lEdge);\n\n for (var i = 0; i < path.length; i++) {\n var dummyNode = path[i];\n var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n // update bendpoint's location according to dummy node\n var ebp = lEdge.bendpoints.get(i);\n ebp.x = p.x;\n ebp.y = p.y;\n\n // remove the dummy node, dummy edges incident with this\n // dummy node is also removed (within the remove method)\n dummyNode.getOwner().remove(dummyNode);\n }\n\n // add the real edge to graph\n this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n }\n }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n if (minDiv != undefined && maxMul != undefined) {\n var value = defaultValue;\n\n if (sliderValue <= 50) {\n var minValue = defaultValue / minDiv;\n value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n } else {\n var maxValue = defaultValue * maxMul;\n value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n }\n\n return value;\n } else {\n var a, b;\n\n if (sliderValue <= 50) {\n a = 9.0 * defaultValue / 500.0;\n b = defaultValue / 10.0;\n } else {\n a = 9.0 * defaultValue / 50.0;\n b = -8 * defaultValue;\n }\n\n return a * sliderValue + b;\n }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n var list = [];\n list = list.concat(nodes);\n\n var removedNodes = [];\n var remainingDegrees = new Map();\n var foundCenter = false;\n var centerNode = null;\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n var degree = node.getNeighborsList().size;\n remainingDegrees.set(node, node.getNeighborsList().size);\n\n if (degree == 1) {\n removedNodes.push(node);\n }\n }\n\n var tempList = [];\n tempList = tempList.concat(removedNodes);\n\n while (!foundCenter) {\n var tempList2 = [];\n tempList2 = tempList2.concat(tempList);\n tempList = [];\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n\n var index = list.indexOf(node);\n if (index >= 0) {\n list.splice(index, 1);\n }\n\n var neighbours = node.getNeighborsList();\n\n neighbours.forEach(function (neighbour) {\n if (removedNodes.indexOf(neighbour) < 0) {\n var otherDegree = remainingDegrees.get(neighbour);\n var newDegree = otherDegree - 1;\n\n if (newDegree == 1) {\n tempList.push(neighbour);\n }\n\n remainingDegrees.set(neighbour, newDegree);\n }\n });\n }\n\n removedNodes = removedNodes.concat(tempList);\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n }\n\n return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __nested_webpack_require_81860__) {\n\n\"use strict\";\n\n\nvar PointD = __nested_webpack_require_81860__(4);\n\nfunction Transform(x, y) {\n this.lworldOrgX = 0.0;\n this.lworldOrgY = 0.0;\n this.ldeviceOrgX = 0.0;\n this.ldeviceOrgY = 0.0;\n this.lworldExtX = 1.0;\n this.lworldExtY = 1.0;\n this.ldeviceExtX = 1.0;\n this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n var xDevice = 0.0;\n var worldExtX = this.lworldExtX;\n if (worldExtX != 0.0) {\n xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n }\n\n return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n var yDevice = 0.0;\n var worldExtY = this.lworldExtY;\n if (worldExtY != 0.0) {\n yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n }\n\n return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n var xWorld = 0.0;\n var deviceExtX = this.ldeviceExtX;\n if (deviceExtX != 0.0) {\n xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n }\n\n return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n var yWorld = 0.0;\n var deviceExtY = this.ldeviceExtY;\n if (deviceExtY != 0.0) {\n yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n }\n return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __nested_webpack_require_84747__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Layout = __nested_webpack_require_84747__(15);\nvar FDLayoutConstants = __nested_webpack_require_84747__(7);\nvar LayoutConstants = __nested_webpack_require_84747__(0);\nvar IGeometry = __nested_webpack_require_84747__(8);\nvar IMath = __nested_webpack_require_84747__(9);\n\nfunction FDLayout() {\n Layout.call(this);\n\n this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.totalDisplacement = 0.0;\n this.oldTotalDisplacement = 0.0;\n this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n Layout.prototype.initParameters.call(this, arguments);\n\n this.totalIterations = 0;\n this.notAnimatedIterations = 0;\n\n this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n var edge;\n var lcaDepth;\n var source;\n var target;\n var sizeOfSourceInLca;\n var sizeOfTargetInLca;\n\n var allEdges = this.getGraphManager().getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n\n edge.idealLength = this.idealEdgeLength;\n\n if (edge.isInterGraph) {\n source = edge.getSource();\n target = edge.getTarget();\n\n sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n if (this.useSmartIdealEdgeLengthCalculation) {\n edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n }\n\n lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n }\n }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n var s = this.getAllNodes().length;\n if (this.incremental) {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n }\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n } else {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n } else {\n this.coolingFactor = 1.0;\n }\n this.initialCoolingFactor = this.coolingFactor;\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n }\n\n this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n var lEdges = this.getAllEdges();\n var edge;\n\n for (var i = 0; i < lEdges.length; i++) {\n edge = lEdges[i];\n\n this.calcSpringForce(edge, edge.idealLength);\n }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var i, j;\n var nodeA, nodeB;\n var lNodes = this.getAllNodes();\n var processedNodeSet;\n\n if (this.useFRGridVariant) {\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n this.updateGrid();\n }\n\n processedNodeSet = new Set();\n\n // calculate repulsion forces between each nodes and its surrounding\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n processedNodeSet.add(nodeA);\n }\n } else {\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n\n for (j = i + 1; j < lNodes.length; j++) {\n nodeB = lNodes[j];\n\n // If both nodes are not members of the same graph, skip.\n if (nodeA.getOwner() != nodeB.getOwner()) {\n continue;\n }\n\n this.calcRepulsionForce(nodeA, nodeB);\n }\n }\n }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n var node;\n var lNodes = this.getAllNodesToApplyGravitation();\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n this.calcGravitationalForce(node);\n }\n};\n\nFDLayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n var sourceNode = edge.getSource();\n var targetNode = edge.getTarget();\n\n var length;\n var springForce;\n var springForceX;\n var springForceY;\n\n // Update edge length\n if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n edge.updateLengthSimple();\n } else {\n edge.updateLength();\n\n if (edge.isOverlapingSourceAndTarget) {\n return;\n }\n }\n\n length = edge.getLength();\n\n if (length == 0) return;\n\n // Calculate spring forces\n springForce = this.springConstant * (length - idealLength);\n\n // Project force onto x and y axes\n springForceX = springForce * (edge.lengthX / length);\n springForceY = springForce * (edge.lengthY / length);\n\n // Apply forces on the end nodes\n sourceNode.springForceX += springForceX;\n sourceNode.springForceY += springForceY;\n targetNode.springForceX -= springForceX;\n targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n var rectA = nodeA.getRect();\n var rectB = nodeB.getRect();\n var overlapAmount = new Array(2);\n var clipPoints = new Array(4);\n var distanceX;\n var distanceY;\n var distanceSquared;\n var distance;\n var repulsionForce;\n var repulsionForceX;\n var repulsionForceY;\n\n if (rectA.intersects(rectB)) // two nodes overlap\n {\n // calculate separation amount in x and y directions\n IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n repulsionForceX = 2 * overlapAmount[0];\n repulsionForceY = 2 * overlapAmount[1];\n\n var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n // Apply forces on the two nodes\n nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n } else // no overlap\n {\n // calculate distance\n\n if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n {\n distanceX = rectB.getCenterX() - rectA.getCenterX();\n distanceY = rectB.getCenterY() - rectA.getCenterY();\n } else // use clipping points\n {\n IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n distanceX = clipPoints[2] - clipPoints[0];\n distanceY = clipPoints[3] - clipPoints[1];\n }\n\n // No repulsion range. FR grid variant should take care of this.\n if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n distanceSquared = distanceX * distanceX + distanceY * distanceY;\n distance = Math.sqrt(distanceSquared);\n\n repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n // Project force onto x and y axes\n repulsionForceX = repulsionForce * distanceX / distance;\n repulsionForceY = repulsionForce * distanceY / distance;\n\n // Apply forces on the two nodes \n nodeA.repulsionForceX -= repulsionForceX;\n nodeA.repulsionForceY -= repulsionForceY;\n nodeB.repulsionForceX += repulsionForceX;\n nodeB.repulsionForceY += repulsionForceY;\n }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n var ownerGraph;\n var ownerCenterX;\n var ownerCenterY;\n var distanceX;\n var distanceY;\n var absDistanceX;\n var absDistanceY;\n var estimatedSize;\n ownerGraph = node.getOwner();\n\n ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n distanceX = node.getCenterX() - ownerCenterX;\n distanceY = node.getCenterY() - ownerCenterY;\n absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX;\n node.gravitationForceY = -this.gravityConstant * distanceY;\n }\n } else // inside a compound\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n }\n }\n};\n\nFDLayout.prototype.isConverged = function () {\n var converged;\n var oscilating = false;\n\n if (this.totalIterations > this.maxIterations / 3) {\n oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n }\n\n converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n this.oldTotalDisplacement = this.totalDisplacement;\n\n return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n if (this.animationDuringLayout && !this.isSubLayout) {\n if (this.notAnimatedIterations == this.animationPeriod) {\n this.update();\n this.notAnimatedIterations = 0;\n } else {\n this.notAnimatedIterations++;\n }\n }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n var node;\n var allNodes = this.graphManager.getAllNodes();\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n node.noOfChildren = node.getNoOfChildren();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n var sizeX = 0;\n var sizeY = 0;\n\n sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n var grid = new Array(sizeX);\n\n for (var i = 0; i < sizeX; i++) {\n grid[i] = new Array(sizeY);\n }\n\n for (var i = 0; i < sizeX; i++) {\n for (var j = 0; j < sizeY; j++) {\n grid[i][j] = new Array();\n }\n }\n\n return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n var startX = 0;\n var finishX = 0;\n var startY = 0;\n var finishY = 0;\n\n startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n for (var i = startX; i <= finishX; i++) {\n for (var j = startY; j <= finishY; j++) {\n this.grid[i][j].push(v);\n v.setGridCoordinates(startX, finishX, startY, finishY);\n }\n }\n};\n\nFDLayout.prototype.updateGrid = function () {\n var i;\n var nodeA;\n var lNodes = this.getAllNodes();\n\n this.grid = this.calcGrid(this.graphManager.getRoot());\n\n // put all nodes to proper grid cells\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n var surrounding = new Set();\n nodeA.surrounding = new Array();\n var nodeB;\n var grid = this.grid;\n\n for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n for (var k = 0; k < grid[i][j].length; k++) {\n nodeB = grid[i][j][k];\n\n // If both nodes are not members of the same graph, \n // or both nodes are the same, skip.\n if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n continue;\n }\n\n // check if the repulsion force between\n // nodeA and nodeB has already been calculated\n if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n // if the distance between nodeA and nodeB \n // is less then calculation range\n if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n //then add nodeB to surrounding of nodeA\n surrounding.add(nodeB);\n }\n }\n }\n }\n }\n }\n\n nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n }\n for (i = 0; i < nodeA.surrounding.length; i++) {\n this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __nested_webpack_require_100902__) {\n\n\"use strict\";\n\n\nvar LEdge = __nested_webpack_require_100902__(1);\nvar FDLayoutConstants = __nested_webpack_require_100902__(7);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n LEdge.call(this, source, target, vEdge);\n this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __nested_webpack_require_101387__) {\n\n\"use strict\";\n\n\nvar LNode = __nested_webpack_require_101387__(3);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n // alternative constructor is handled inside LNode\n LNode.call(this, gm, loc, size, vNode);\n //Spring, repulsion and gravitational forces acting on this node\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n //Amount by which this node is to be moved in this iteration\n this.displacementX = 0;\n this.displacementY = 0;\n\n //Start and finish grid coordinates that this node is fallen into\n this.startX = 0;\n this.finishX = 0;\n this.startY = 0;\n this.finishY = 0;\n\n //Geometric neighbors of this node\n this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n this.startX = _startX;\n this.finishX = _finishX;\n this.startY = _startY;\n this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n this.width = 0;\n this.height = 0;\n if (width !== null && height !== null) {\n this.height = height;\n this.width = width;\n }\n}\n\nDimensionD.prototype.getWidth = function () {\n return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __nested_webpack_require_103173__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __nested_webpack_require_103173__(14);\n\nfunction HashMap() {\n this.map = {};\n this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n var theId = UniqueIDGeneretor.createID(key);\n if (!this.contains(theId)) {\n this.map[theId] = value;\n this.keys.push(key);\n }\n};\n\nHashMap.prototype.contains = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __nested_webpack_require_103901__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __nested_webpack_require_103901__(14);\n\nfunction HashSet() {\n this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n var theId = UniqueIDGeneretor.createID(obj);\n if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n var keys = Object.keys(this.set);\n var length = keys.length;\n for (var i = 0; i < length; i++) {\n list.push(this.set[keys[i]]);\n }\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n var s = list.length;\n for (var i = 0; i < s; i++) {\n var v = list[i];\n this.add(v);\n }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __nested_webpack_require_105138__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __nested_webpack_require_105138__(11);\n\nvar Quicksort = function () {\n function Quicksort(A, compareFunction) {\n _classCallCheck(this, Quicksort);\n\n if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n var length = void 0;\n if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n this._quicksort(A, 0, length - 1);\n }\n\n _createClass(Quicksort, [{\n key: '_quicksort',\n value: function _quicksort(A, p, r) {\n if (p < r) {\n var q = this._partition(A, p, r);\n this._quicksort(A, p, q);\n this._quicksort(A, q + 1, r);\n }\n }\n }, {\n key: '_partition',\n value: function _partition(A, p, r) {\n var x = this._get(A, p);\n var i = p;\n var j = r;\n while (true) {\n while (this.compareFunction(x, this._get(A, j))) {\n j--;\n }while (this.compareFunction(this._get(A, i), x)) {\n i++;\n }if (i < j) {\n this._swap(A, i, j);\n i++;\n j--;\n } else return j;\n }\n }\n }, {\n key: '_get',\n value: function _get(object, index) {\n if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n }\n }, {\n key: '_set',\n value: function _set(object, index, value) {\n if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n }\n }, {\n key: '_swap',\n value: function _swap(A, i, j) {\n var temp = this._get(A, i);\n this._set(A, i, this._get(A, j));\n this._set(A, j, temp);\n }\n }, {\n key: '_defaultCompareFunction',\n value: function _defaultCompareFunction(a, b) {\n return b > a;\n }\n }]);\n\n return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n * sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n * Aside from the inputs, you can assign the scores for,\n * - Match: The two characters at the current index are same.\n * - Mismatch: The two characters at the current index are different.\n * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n function NeedlemanWunsch(sequence1, sequence2) {\n var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n _classCallCheck(this, NeedlemanWunsch);\n\n this.sequence1 = sequence1;\n this.sequence2 = sequence2;\n this.match_score = match_score;\n this.mismatch_penalty = mismatch_penalty;\n this.gap_penalty = gap_penalty;\n\n // Just the remove redundancy\n this.iMax = sequence1.length + 1;\n this.jMax = sequence2.length + 1;\n\n // Grid matrix of scores\n this.grid = new Array(this.iMax);\n for (var i = 0; i < this.iMax; i++) {\n this.grid[i] = new Array(this.jMax);\n\n for (var j = 0; j < this.jMax; j++) {\n this.grid[i][j] = 0;\n }\n }\n\n // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n this.tracebackGrid = new Array(this.iMax);\n for (var _i = 0; _i < this.iMax; _i++) {\n this.tracebackGrid[_i] = new Array(this.jMax);\n\n for (var _j = 0; _j < this.jMax; _j++) {\n this.tracebackGrid[_i][_j] = [null, null, null];\n }\n }\n\n // The aligned sequences (return multiple possibilities)\n this.alignments = [];\n\n // Final alignment score\n this.score = -1;\n\n // Calculate scores and tracebacks\n this.computeGrids();\n }\n\n _createClass(NeedlemanWunsch, [{\n key: \"getScore\",\n value: function getScore() {\n return this.score;\n }\n }, {\n key: \"getAlignments\",\n value: function getAlignments() {\n return this.alignments;\n }\n\n // Main dynamic programming procedure\n\n }, {\n key: \"computeGrids\",\n value: function computeGrids() {\n // Fill in the first row\n for (var j = 1; j < this.jMax; j++) {\n this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n this.tracebackGrid[0][j] = [false, false, true];\n }\n\n // Fill in the first column\n for (var i = 1; i < this.iMax; i++) {\n this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n this.tracebackGrid[i][0] = [false, true, false];\n }\n\n // Fill the rest of the grid\n for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n // Find the max score(s) among [`Diag`, `Up`, `Left`]\n var diag = void 0;\n if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n // If there exists multiple max values, capture them for multiple paths\n var maxOf = [diag, up, left];\n var indices = this.arrayAllMaxIndexes(maxOf);\n\n // Update Grids\n this.grid[_i2][_j2] = maxOf[indices[0]];\n this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n }\n }\n\n // Update alignment score\n this.score = this.grid[this.iMax - 1][this.jMax - 1];\n }\n\n // Gets all possible valid sequence combinations\n\n }, {\n key: \"alignmentTraceback\",\n value: function alignmentTraceback() {\n var inProcessAlignments = [];\n\n inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n seq1: \"\",\n seq2: \"\"\n });\n\n while (inProcessAlignments[0]) {\n var current = inProcessAlignments[0];\n var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n if (directions[0]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n if (directions[1]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: '-' + current.seq2\n });\n }\n if (directions[2]) {\n inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n seq1: '-' + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n\n if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n sequence2: current.seq2\n });\n\n inProcessAlignments.shift();\n }\n\n return this.alignments;\n }\n\n // Helper Functions\n\n }, {\n key: \"getAllIndexes\",\n value: function getAllIndexes(arr, val) {\n var indexes = [],\n i = -1;\n while ((i = arr.indexOf(val, i + 1)) !== -1) {\n indexes.push(i);\n }\n return indexes;\n }\n }, {\n key: \"arrayAllMaxIndexes\",\n value: function arrayAllMaxIndexes(array) {\n return this.getAllIndexes(array, Math.max.apply(null, array));\n }\n }]);\n\n return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __nested_webpack_require_115611__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n return;\n};\n\nlayoutBase.FDLayout = __nested_webpack_require_115611__(18);\nlayoutBase.FDLayoutConstants = __nested_webpack_require_115611__(7);\nlayoutBase.FDLayoutEdge = __nested_webpack_require_115611__(19);\nlayoutBase.FDLayoutNode = __nested_webpack_require_115611__(20);\nlayoutBase.DimensionD = __nested_webpack_require_115611__(21);\nlayoutBase.HashMap = __nested_webpack_require_115611__(22);\nlayoutBase.HashSet = __nested_webpack_require_115611__(23);\nlayoutBase.IGeometry = __nested_webpack_require_115611__(8);\nlayoutBase.IMath = __nested_webpack_require_115611__(9);\nlayoutBase.Integer = __nested_webpack_require_115611__(10);\nlayoutBase.Point = __nested_webpack_require_115611__(12);\nlayoutBase.PointD = __nested_webpack_require_115611__(4);\nlayoutBase.RandomSeed = __nested_webpack_require_115611__(16);\nlayoutBase.RectangleD = __nested_webpack_require_115611__(13);\nlayoutBase.Transform = __nested_webpack_require_115611__(17);\nlayoutBase.UniqueIDGeneretor = __nested_webpack_require_115611__(14);\nlayoutBase.Quicksort = __nested_webpack_require_115611__(24);\nlayoutBase.LinkedList = __nested_webpack_require_115611__(11);\nlayoutBase.LGraphObject = __nested_webpack_require_115611__(2);\nlayoutBase.LGraph = __nested_webpack_require_115611__(5);\nlayoutBase.LEdge = __nested_webpack_require_115611__(1);\nlayoutBase.LGraphManager = __nested_webpack_require_115611__(6);\nlayoutBase.LNode = __nested_webpack_require_115611__(3);\nlayoutBase.Layout = __nested_webpack_require_115611__(15);\nlayoutBase.LayoutConstants = __nested_webpack_require_115611__(0);\nlayoutBase.NeedlemanWunsch = __nested_webpack_require_115611__(25);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n this.listeners.push({\n event: event,\n callback: callback\n });\n};\n\np.removeListener = function (event, callback) {\n for (var i = this.listeners.length; i >= 0; i--) {\n var l = this.listeners[i];\n\n if (l.event === event && l.callback === callback) {\n this.listeners.splice(i, 1);\n }\n }\n};\n\np.emit = function (event, data) {\n for (var i = 0; i < this.listeners.length; i++) {\n var l = this.listeners[i];\n\n if (event === l.event) {\n l.callback(data);\n }\n }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xheW91dC1iYXNlL2xheW91dC1iYXNlLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsSUFBSSxJQUF5RDtBQUM3RDtBQUNBLE1BQU0sRUFLMkI7QUFDakMsQ0FBQztBQUNELHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiw4QkFBbUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwRUFBMEUsOEJBQW1CO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCO0FBQ0E7QUFDQSxVQUFVLDhCQUFtQix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBLFVBQVUsOEJBQW1CO0FBQzdCLGVBQWUsOEJBQW1CO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQSxvQ0FBb0MsNEJBQTRCO0FBQ2hFLDBDQUEwQztBQUMxQyxXQUFXLDhCQUFtQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOEJBQW1CLGtDQUFrQztBQUMvRDtBQUNBO0FBQ0EsVUFBVSw4QkFBbUI7QUFDN0I7QUFDQTtBQUNBLGlCQUFpQiw4QkFBbUIsQ0FBQyw4QkFBbUI7QUFDeEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FB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Q0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGtCQUFrQixPQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsVUFBVTtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLGdDQUFtQjs7QUFFcEQ7OztBQUdBO0FBQ0EsWUFBWSxnQ0FBbUI7O0FBRS9CO0FBQ0EsV0FBVyxnQ0FBbUIsS0FBSztBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1CQUFtQjtBQUN2QztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsT0FBTztBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsT0FBTztBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLGdDQUFtQjs7QUFFcEQ7OztBQUdBLHNCQUFzQixnQ0FBbUI7O0FBRXpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsaUNBQWlDLGdDQUFtQjs7QUFFcEQ7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLGdDQUFtQjs7QUFFL0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLEtBQUs7O0FBRS9CO0FBQ0E7QUFDQSwwQkFBMEIsS0FBSzs7QUFFL0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0osb0NBQW9DO0FBQ3BDLElBQUk7QUFDSiw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7OztBQUdBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7OztBQUdBLGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwrREFBK0QseURBQXlELHFFQUFxRSw2REFBNkQsd0JBQXdCOztBQUVqakIsa0RBQWtELDBDQUEwQzs7QUFFNUY7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEOztBQUVBLE9BQU87QUFDUDtBQUNBOztBQUVBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNB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QW1CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IscUJBQXFCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLFdB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QUF3QixpQ0FBbUI7QUFDM0Msd0JBQXdCLGlDQUFtQjtBQUMzQyx1QkFBdUIsaUNBQW1CO0FBQzFDLCtCQUErQixpQ0FBbUI7QUFDbEQsdUJBQXVCLGlDQUFtQjtBQUMxQyx3QkFBd0IsaUNBQW1CO0FBQzNDLDBCQUEwQixpQ0FBbUI7QUFDN0Msb0JBQW9CLGlDQUFtQjtBQUN2QyxtQkFBbUIsaUNBQW1CO0FBQ3RDLDJCQUEyQixpQ0FBbUI7QUFDOUMsbUJBQW1CLGlDQUFtQjtBQUN0QyxvQkFBb0IsaUNBQW1CO0FBQ3ZDLDZCQUE2QixpQ0FBbUI7QUFDaEQsNkJBQTZCLGlDQUFtQjs7QUFFaEQ7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBLHNDQUFzQyxRQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsMkJBQTJCO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsT0FBTztBQUNQO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbGF5b3V0LWJhc2UvbGF5b3V0LWJhc2UuanM/NjkzZCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJsYXlvdXRCYXNlXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImxheW91dEJhc2VcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAyNik7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovIChbXG4vKiAwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIExheW91dENvbnN0YW50cygpIHt9XG5cbi8qKlxyXG4gKiBMYXlvdXQgUXVhbGl0eTogMDpkcmFmdCwgMTpkZWZhdWx0LCAyOnByb29mXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLlFVQUxJVFkgPSAxO1xuXG4vKipcclxuICogRGVmYXVsdCBwYXJhbWV0ZXJzXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRCA9IGZhbHNlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfSU5DUkVNRU5UQUwgPSBmYWxzZTtcbkxheW91dENvbnN0YW50cy5ERUZBVUxUX0FOSU1BVElPTl9PTl9MQVlPVVQgPSB0cnVlO1xuTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX0RVUklOR19MQVlPVVQgPSBmYWxzZTtcbkxheW91dENvbnN0YW50cy5ERUZBVUxUX0FOSU1BVElPTl9QRVJJT0QgPSA1MDtcbkxheW91dENvbnN0YW50cy5ERUZBVUxUX1VOSUZPUk1fTEVBRl9OT0RFX1NJWkVTID0gZmFsc2U7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZWN0aW9uOiBHZW5lcmFsIG90aGVyIGNvbnN0YW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qXHJcbiAqIE1hcmdpbnMgb2YgYSBncmFwaCB0byBiZSBhcHBsaWVkIG9uIGJvdWRpbmcgcmVjdGFuZ2xlIG9mIGl0cyBjb250ZW50cy4gV2VcclxuICogYXNzdW1lIG1hcmdpbnMgb24gYWxsIGZvdXIgc2lkZXMgdG8gYmUgdW5pZm9ybS5cclxuICovXG5MYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFQSF9NQVJHSU4gPSAxNTtcblxuLypcclxuICogV2hldGhlciB0byBjb25zaWRlciBsYWJlbHMgaW4gbm9kZSBkaW1lbnNpb25zIG9yIG5vdFxyXG4gKi9cbkxheW91dENvbnN0YW50cy5OT0RFX0RJTUVOU0lPTlNfSU5DTFVERV9MQUJFTFMgPSBmYWxzZTtcblxuLypcclxuICogRGVmYXVsdCBkaW1lbnNpb24gb2YgYSBub24tY29tcG91bmQgbm9kZS5cclxuICovXG5MYXlvdXRDb25zdGFudHMuU0lNUExFX05PREVfU0laRSA9IDQwO1xuXG4vKlxyXG4gKiBEZWZhdWx0IGRpbWVuc2lvbiBvZiBhIG5vbi1jb21wb3VuZCBub2RlLlxyXG4gKi9cbkxheW91dENvbnN0YW50cy5TSU1QTEVfTk9ERV9IQUxGX1NJWkUgPSBMYXlvdXRDb25zdGFudHMuU0lNUExFX05PREVfU0laRSAvIDI7XG5cbi8qXHJcbiAqIEVtcHR5IGNvbXBvdW5kIG5vZGUgc2l6ZS4gV2hlbiBhIGNvbXBvdW5kIG5vZGUgaXMgZW1wdHksIGl0cyBib3RoXHJcbiAqIGRpbWVuc2lvbnMgc2hvdWxkIGJlIG9mIHRoaXMgdmFsdWUuXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLkVNUFRZX0NPTVBPVU5EX05PREVfU0laRSA9IDQwO1xuXG4vKlxyXG4gKiBNaW5pbXVtIGxlbmd0aCB0aGF0IGFuIGVkZ2Ugc2hvdWxkIHRha2UgZHVyaW5nIGxheW91dFxyXG4gKi9cbkxheW91dENvbnN0YW50cy5NSU5fRURHRV9MRU5HVEggPSAxO1xuXG4vKlxyXG4gKiBXb3JsZCBib3VuZGFyaWVzIHRoYXQgbGF5b3V0IG9wZXJhdGVzIG9uXHJcbiAqL1xuTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZID0gMTAwMDAwMDtcblxuLypcclxuICogV29ybGQgYm91bmRhcmllcyB0aGF0IHJhbmRvbSBwb3NpdGlvbmluZyBjYW4gYmUgcGVyZm9ybWVkIHdpdGhcclxuICovXG5MYXlvdXRDb25zdGFudHMuSU5JVElBTF9XT1JMRF9CT1VOREFSWSA9IExheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSAvIDEwMDA7XG5cbi8qXHJcbiAqIENvb3JkaW5hdGVzIG9mIHRoZSB3b3JsZCBjZW50ZXJcclxuICovXG5MYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1ggPSAxMjAwO1xuTGF5b3V0Q29uc3RhbnRzLldPUkxEX0NFTlRFUl9ZID0gOTAwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dENvbnN0YW50cztcblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMR3JhcGhPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xudmFyIElHZW9tZXRyeSA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG52YXIgSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5mdW5jdGlvbiBMRWRnZShzb3VyY2UsIHRhcmdldCwgdkVkZ2UpIHtcbiAgTEdyYXBoT2JqZWN0LmNhbGwodGhpcywgdkVkZ2UpO1xuXG4gIHRoaXMuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0ID0gZmFsc2U7XG4gIHRoaXMudkdyYXBoT2JqZWN0ID0gdkVkZ2U7XG4gIHRoaXMuYmVuZHBvaW50cyA9IFtdO1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG59XG5cbkxFZGdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEdyYXBoT2JqZWN0LnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3AgaW4gTEdyYXBoT2JqZWN0KSB7XG4gIExFZGdlW3Byb3BdID0gTEdyYXBoT2JqZWN0W3Byb3BdO1xufVxuXG5MRWRnZS5wcm90b3R5cGUuZ2V0U291cmNlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2U7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50YXJnZXQ7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuaXNJbnRlckdyYXBoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pc0ludGVyR3JhcGg7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0TGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZW5ndGg7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuaXNPdmVybGFwaW5nU291cmNlQW5kVGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQ7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0QmVuZHBvaW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuYmVuZHBvaW50cztcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRMY2EgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxjYTtcbn07XG5cbkxFZGdlLnByb3RvdHlwZS5nZXRTb3VyY2VJbkxjYSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuc291cmNlSW5MY2E7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUuZ2V0VGFyZ2V0SW5MY2EgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhcmdldEluTGNhO1xufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgaWYgKHRoaXMuc291cmNlID09PSBub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICB9IGVsc2UgaWYgKHRoaXMudGFyZ2V0ID09PSBub2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IFwiTm9kZSBpcyBub3QgaW5jaWRlbnQgd2l0aCB0aGlzIGVkZ2VcIjtcbiAgfVxufTtcblxuTEVkZ2UucHJvdG90eXBlLmdldE90aGVyRW5kSW5HcmFwaCA9IGZ1bmN0aW9uIChub2RlLCBncmFwaCkge1xuICB2YXIgb3RoZXJFbmQgPSB0aGlzLmdldE90aGVyRW5kKG5vZGUpO1xuICB2YXIgcm9vdCA9IGdyYXBoLmdldEdyYXBoTWFuYWdlcigpLmdldFJvb3QoKTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChvdGhlckVuZC5nZXRPd25lcigpID09IGdyYXBoKSB7XG4gICAgICByZXR1cm4gb3RoZXJFbmQ7XG4gICAgfVxuXG4gICAgaWYgKG90aGVyRW5kLmdldE93bmVyKCkgPT0gcm9vdCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgb3RoZXJFbmQgPSBvdGhlckVuZC5nZXRPd25lcigpLmdldFBhcmVudCgpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5MRWRnZS5wcm90b3R5cGUudXBkYXRlTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2xpcFBvaW50Q29vcmRpbmF0ZXMgPSBuZXcgQXJyYXkoNCk7XG5cbiAgdGhpcy5pc092ZXJsYXBpbmdTb3VyY2VBbmRUYXJnZXQgPSBJR2VvbWV0cnkuZ2V0SW50ZXJzZWN0aW9uKHRoaXMudGFyZ2V0LmdldFJlY3QoKSwgdGhpcy5zb3VyY2UuZ2V0UmVjdCgpLCBjbGlwUG9pbnRDb29yZGluYXRlcyk7XG5cbiAgaWYgKCF0aGlzLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldCkge1xuICAgIHRoaXMubGVuZ3RoWCA9IGNsaXBQb2ludENvb3JkaW5hdGVzWzBdIC0gY2xpcFBvaW50Q29vcmRpbmF0ZXNbMl07XG4gICAgdGhpcy5sZW5ndGhZID0gY2xpcFBvaW50Q29vcmRpbmF0ZXNbMV0gLSBjbGlwUG9pbnRDb29yZGluYXRlc1szXTtcblxuICAgIGlmIChNYXRoLmFicyh0aGlzLmxlbmd0aFgpIDwgMS4wKSB7XG4gICAgICB0aGlzLmxlbmd0aFggPSBJTWF0aC5zaWduKHRoaXMubGVuZ3RoWCk7XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKHRoaXMubGVuZ3RoWSkgPCAxLjApIHtcbiAgICAgIHRoaXMubGVuZ3RoWSA9IElNYXRoLnNpZ24odGhpcy5sZW5ndGhZKTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguc3FydCh0aGlzLmxlbmd0aFggKiB0aGlzLmxlbmd0aFggKyB0aGlzLmxlbmd0aFkgKiB0aGlzLmxlbmd0aFkpO1xuICB9XG59O1xuXG5MRWRnZS5wcm90b3R5cGUudXBkYXRlTGVuZ3RoU2ltcGxlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxlbmd0aFggPSB0aGlzLnRhcmdldC5nZXRDZW50ZXJYKCkgLSB0aGlzLnNvdXJjZS5nZXRDZW50ZXJYKCk7XG4gIHRoaXMubGVuZ3RoWSA9IHRoaXMudGFyZ2V0LmdldENlbnRlclkoKSAtIHRoaXMuc291cmNlLmdldENlbnRlclkoKTtcblxuICBpZiAoTWF0aC5hYnModGhpcy5sZW5ndGhYKSA8IDEuMCkge1xuICAgIHRoaXMubGVuZ3RoWCA9IElNYXRoLnNpZ24odGhpcy5sZW5ndGhYKTtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyh0aGlzLmxlbmd0aFkpIDwgMS4wKSB7XG4gICAgdGhpcy5sZW5ndGhZID0gSU1hdGguc2lnbih0aGlzLmxlbmd0aFkpO1xuICB9XG5cbiAgdGhpcy5sZW5ndGggPSBNYXRoLnNxcnQodGhpcy5sZW5ndGhYICogdGhpcy5sZW5ndGhYICsgdGhpcy5sZW5ndGhZICogdGhpcy5sZW5ndGhZKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTEVkZ2U7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBMR3JhcGhPYmplY3QodkdyYXBoT2JqZWN0KSB7XG4gIHRoaXMudkdyYXBoT2JqZWN0ID0gdkdyYXBoT2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IExHcmFwaE9iamVjdDtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMR3JhcGhPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xudmFyIEludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbnZhciBSZWN0YW5nbGVEID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciBSYW5kb21TZWVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG52YXIgUG9pbnREID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuZnVuY3Rpb24gTE5vZGUoZ20sIGxvYywgc2l6ZSwgdk5vZGUpIHtcbiAgLy9BbHRlcm5hdGl2ZSBjb25zdHJ1Y3RvciAxIDogTE5vZGUoTEdyYXBoTWFuYWdlciBnbSwgUG9pbnQgbG9jLCBEaW1lbnNpb24gc2l6ZSwgT2JqZWN0IHZOb2RlKVxuICBpZiAoc2l6ZSA9PSBudWxsICYmIHZOb2RlID09IG51bGwpIHtcbiAgICB2Tm9kZSA9IGxvYztcbiAgfVxuXG4gIExHcmFwaE9iamVjdC5jYWxsKHRoaXMsIHZOb2RlKTtcblxuICAvL0FsdGVybmF0aXZlIGNvbnN0cnVjdG9yIDIgOiBMTm9kZShMYXlvdXQgbGF5b3V0LCBPYmplY3Qgdk5vZGUpXG4gIGlmIChnbS5ncmFwaE1hbmFnZXIgIT0gbnVsbCkgZ20gPSBnbS5ncmFwaE1hbmFnZXI7XG5cbiAgdGhpcy5lc3RpbWF0ZWRTaXplID0gSW50ZWdlci5NSU5fVkFMVUU7XG4gIHRoaXMuaW5jbHVzaW9uVHJlZURlcHRoID0gSW50ZWdlci5NQVhfVkFMVUU7XG4gIHRoaXMudkdyYXBoT2JqZWN0ID0gdk5vZGU7XG4gIHRoaXMuZWRnZXMgPSBbXTtcbiAgdGhpcy5ncmFwaE1hbmFnZXIgPSBnbTtcblxuICBpZiAoc2l6ZSAhPSBudWxsICYmIGxvYyAhPSBudWxsKSB0aGlzLnJlY3QgPSBuZXcgUmVjdGFuZ2xlRChsb2MueCwgbG9jLnksIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTtlbHNlIHRoaXMucmVjdCA9IG5ldyBSZWN0YW5nbGVEKCk7XG59XG5cbkxOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEdyYXBoT2JqZWN0LnByb3RvdHlwZSk7XG5mb3IgKHZhciBwcm9wIGluIExHcmFwaE9iamVjdCkge1xuICBMTm9kZVtwcm9wXSA9IExHcmFwaE9iamVjdFtwcm9wXTtcbn1cblxuTE5vZGUucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5lZGdlcztcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDaGlsZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY2hpbGQ7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0T3duZXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vICBpZiAodGhpcy5vd25lciAhPSBudWxsKSB7XG4gIC8vICAgIGlmICghKHRoaXMub3duZXIgPT0gbnVsbCB8fCB0aGlzLm93bmVyLmdldE5vZGVzKCkuaW5kZXhPZih0aGlzKSA+IC0xKSkge1xuICAvLyAgICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICAvLyAgICB9XG4gIC8vICB9XG5cbiAgcmV0dXJuIHRoaXMub3duZXI7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3Qud2lkdGg7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuc2V0V2lkdGggPSBmdW5jdGlvbiAod2lkdGgpIHtcbiAgdGhpcy5yZWN0LndpZHRoID0gd2lkdGg7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LmhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRIZWlnaHQgPSBmdW5jdGlvbiAoaGVpZ2h0KSB7XG4gIHRoaXMucmVjdC5oZWlnaHQgPSBoZWlnaHQ7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0Q2VudGVyWCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC54ICsgdGhpcy5yZWN0LndpZHRoIC8gMjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDZW50ZXJZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5yZWN0LnkgKyB0aGlzLnJlY3QuaGVpZ2h0IC8gMjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRDZW50ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUG9pbnREKHRoaXMucmVjdC54ICsgdGhpcy5yZWN0LndpZHRoIC8gMiwgdGhpcy5yZWN0LnkgKyB0aGlzLnJlY3QuaGVpZ2h0IC8gMik7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUG9pbnREKHRoaXMucmVjdC54LCB0aGlzLnJlY3QueSk7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuZ2V0UmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXREaWFnb25hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE1hdGguc3FydCh0aGlzLnJlY3Qud2lkdGggKiB0aGlzLnJlY3Qud2lkdGggKyB0aGlzLnJlY3QuaGVpZ2h0ICogdGhpcy5yZWN0LmhlaWdodCk7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgaGFsZiB0aGUgZGlhZ29uYWwgbGVuZ3RoIG9mIHRoaXMgbm9kZS5cbiAqL1xuTE5vZGUucHJvdG90eXBlLmdldEhhbGZUaGVEaWFnb25hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE1hdGguc3FydCh0aGlzLnJlY3QuaGVpZ2h0ICogdGhpcy5yZWN0LmhlaWdodCArIHRoaXMucmVjdC53aWR0aCAqIHRoaXMucmVjdC53aWR0aCkgLyAyO1xufTtcblxuTE5vZGUucHJvdG90eXBlLnNldFJlY3QgPSBmdW5jdGlvbiAodXBwZXJMZWZ0LCBkaW1lbnNpb24pIHtcbiAgdGhpcy5yZWN0LnggPSB1cHBlckxlZnQueDtcbiAgdGhpcy5yZWN0LnkgPSB1cHBlckxlZnQueTtcbiAgdGhpcy5yZWN0LndpZHRoID0gZGltZW5zaW9uLndpZHRoO1xuICB0aGlzLnJlY3QuaGVpZ2h0ID0gZGltZW5zaW9uLmhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zZXRDZW50ZXIgPSBmdW5jdGlvbiAoY3gsIGN5KSB7XG4gIHRoaXMucmVjdC54ID0gY3ggLSB0aGlzLnJlY3Qud2lkdGggLyAyO1xuICB0aGlzLnJlY3QueSA9IGN5IC0gdGhpcy5yZWN0LmhlaWdodCAvIDI7XG59O1xuXG5MTm9kZS5wcm90b3R5cGUuc2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoeCwgeSkge1xuICB0aGlzLnJlY3QueCA9IHg7XG4gIHRoaXMucmVjdC55ID0geTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5tb3ZlQnkgPSBmdW5jdGlvbiAoZHgsIGR5KSB7XG4gIHRoaXMucmVjdC54ICs9IGR4O1xuICB0aGlzLnJlY3QueSArPSBkeTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRFZGdlTGlzdFRvTm9kZSA9IGZ1bmN0aW9uICh0bykge1xuICB2YXIgZWRnZUxpc3QgPSBbXTtcbiAgdmFyIGVkZ2U7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBzZWxmLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcblxuICAgIGlmIChlZGdlLnRhcmdldCA9PSB0bykge1xuICAgICAgaWYgKGVkZ2Uuc291cmNlICE9IHNlbGYpIHRocm93IFwiSW5jb3JyZWN0IGVkZ2Ugc291cmNlIVwiO1xuXG4gICAgICBlZGdlTGlzdC5wdXNoKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VMaXN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEVkZ2VzQmV0d2VlbiA9IGZ1bmN0aW9uIChvdGhlcikge1xuICB2YXIgZWRnZUxpc3QgPSBbXTtcbiAgdmFyIGVkZ2U7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBzZWxmLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcblxuICAgIGlmICghKGVkZ2Uuc291cmNlID09IHNlbGYgfHwgZWRnZS50YXJnZXQgPT0gc2VsZikpIHRocm93IFwiSW5jb3JyZWN0IGVkZ2Ugc291cmNlIGFuZC9vciB0YXJnZXRcIjtcblxuICAgIGlmIChlZGdlLnRhcmdldCA9PSBvdGhlciB8fCBlZGdlLnNvdXJjZSA9PSBvdGhlcikge1xuICAgICAgZWRnZUxpc3QucHVzaChlZGdlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlZGdlTGlzdDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXROZWlnaGJvcnNMaXN0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbmVpZ2hib3JzID0gbmV3IFNldCgpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgc2VsZi5lZGdlcy5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG5cbiAgICBpZiAoZWRnZS5zb3VyY2UgPT0gc2VsZikge1xuICAgICAgbmVpZ2hib3JzLmFkZChlZGdlLnRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlZGdlLnRhcmdldCAhPSBzZWxmKSB7XG4gICAgICAgIHRocm93IFwiSW5jb3JyZWN0IGluY2lkZW5jeSFcIjtcbiAgICAgIH1cblxuICAgICAgbmVpZ2hib3JzLmFkZChlZGdlLnNvdXJjZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbmVpZ2hib3JzO1xufTtcblxuTE5vZGUucHJvdG90eXBlLndpdGhDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHdpdGhOZWlnaGJvcnNMaXN0ID0gbmV3IFNldCgpO1xuICB2YXIgY2hpbGROb2RlO1xuICB2YXIgY2hpbGRyZW47XG5cbiAgd2l0aE5laWdoYm9yc0xpc3QuYWRkKHRoaXMpO1xuXG4gIGlmICh0aGlzLmNoaWxkICE9IG51bGwpIHtcbiAgICB2YXIgbm9kZXMgPSB0aGlzLmNoaWxkLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGROb2RlID0gbm9kZXNbaV07XG4gICAgICBjaGlsZHJlbiA9IGNoaWxkTm9kZS53aXRoQ2hpbGRyZW4oKTtcbiAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgd2l0aE5laWdoYm9yc0xpc3QuYWRkKG5vZGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHdpdGhOZWlnaGJvcnNMaXN0O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldE5vT2ZDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5vT2ZDaGlsZHJlbiA9IDA7XG4gIHZhciBjaGlsZE5vZGU7XG5cbiAgaWYgKHRoaXMuY2hpbGQgPT0gbnVsbCkge1xuICAgIG5vT2ZDaGlsZHJlbiA9IDE7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5jaGlsZC5nZXROb2RlcygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkTm9kZSA9IG5vZGVzW2ldO1xuXG4gICAgICBub09mQ2hpbGRyZW4gKz0gY2hpbGROb2RlLmdldE5vT2ZDaGlsZHJlbigpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChub09mQ2hpbGRyZW4gPT0gMCkge1xuICAgIG5vT2ZDaGlsZHJlbiA9IDE7XG4gIH1cbiAgcmV0dXJuIG5vT2ZDaGlsZHJlbjtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5lc3RpbWF0ZWRTaXplID09IEludGVnZXIuTUlOX1ZBTFVFKSB7XG4gICAgdGhyb3cgXCJhc3NlcnQgZmFpbGVkXCI7XG4gIH1cbiAgcmV0dXJuIHRoaXMuZXN0aW1hdGVkU2l6ZTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5jYWxjRXN0aW1hdGVkU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2hpbGQgPT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemUgPSAodGhpcy5yZWN0LndpZHRoICsgdGhpcy5yZWN0LmhlaWdodCkgLyAyO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZXN0aW1hdGVkU2l6ZSA9IHRoaXMuY2hpbGQuY2FsY0VzdGltYXRlZFNpemUoKTtcbiAgICB0aGlzLnJlY3Qud2lkdGggPSB0aGlzLmVzdGltYXRlZFNpemU7XG4gICAgdGhpcy5yZWN0LmhlaWdodCA9IHRoaXMuZXN0aW1hdGVkU2l6ZTtcblxuICAgIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemU7XG4gIH1cbn07XG5cbkxOb2RlLnByb3RvdHlwZS5zY2F0dGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgcmFuZG9tQ2VudGVyWDtcbiAgdmFyIHJhbmRvbUNlbnRlclk7XG5cbiAgdmFyIG1pblggPSAtTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHZhciBtYXhYID0gTGF5b3V0Q29uc3RhbnRzLklOSVRJQUxfV09STERfQk9VTkRBUlk7XG4gIHJhbmRvbUNlbnRlclggPSBMYXlvdXRDb25zdGFudHMuV09STERfQ0VOVEVSX1ggKyBSYW5kb21TZWVkLm5leHREb3VibGUoKSAqIChtYXhYIC0gbWluWCkgKyBtaW5YO1xuXG4gIHZhciBtaW5ZID0gLUxheW91dENvbnN0YW50cy5JTklUSUFMX1dPUkxEX0JPVU5EQVJZO1xuICB2YXIgbWF4WSA9IExheW91dENvbnN0YW50cy5JTklUSUFMX1dPUkxEX0JPVU5EQVJZO1xuICByYW5kb21DZW50ZXJZID0gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0NFTlRFUl9ZICsgUmFuZG9tU2VlZC5uZXh0RG91YmxlKCkgKiAobWF4WSAtIG1pblkpICsgbWluWTtcblxuICB0aGlzLnJlY3QueCA9IHJhbmRvbUNlbnRlclg7XG4gIHRoaXMucmVjdC55ID0gcmFuZG9tQ2VudGVyWTtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS51cGRhdGVCb3VuZHMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmdldENoaWxkKCkgPT0gbnVsbCkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG4gIGlmICh0aGlzLmdldENoaWxkKCkuZ2V0Tm9kZXMoKS5sZW5ndGggIT0gMCkge1xuICAgIC8vIHdyYXAgdGhlIGNoaWxkcmVuIG5vZGVzIGJ5IHJlLWFycmFuZ2luZyB0aGUgYm91bmRhcmllc1xuICAgIHZhciBjaGlsZEdyYXBoID0gdGhpcy5nZXRDaGlsZCgpO1xuICAgIGNoaWxkR3JhcGgudXBkYXRlQm91bmRzKHRydWUpO1xuXG4gICAgdGhpcy5yZWN0LnggPSBjaGlsZEdyYXBoLmdldExlZnQoKTtcbiAgICB0aGlzLnJlY3QueSA9IGNoaWxkR3JhcGguZ2V0VG9wKCk7XG5cbiAgICB0aGlzLnNldFdpZHRoKGNoaWxkR3JhcGguZ2V0UmlnaHQoKSAtIGNoaWxkR3JhcGguZ2V0TGVmdCgpKTtcbiAgICB0aGlzLnNldEhlaWdodChjaGlsZEdyYXBoLmdldEJvdHRvbSgpIC0gY2hpbGRHcmFwaC5nZXRUb3AoKSk7XG5cbiAgICAvLyBVcGRhdGUgY29tcG91bmQgYm91bmRzIGNvbnNpZGVyaW5nIGl0cyBsYWJlbCBwcm9wZXJ0aWVzICAgIFxuICAgIGlmIChMYXlvdXRDb25zdGFudHMuTk9ERV9ESU1FTlNJT05TX0lOQ0xVREVfTEFCRUxTKSB7XG5cbiAgICAgIHZhciB3aWR0aCA9IGNoaWxkR3JhcGguZ2V0UmlnaHQoKSAtIGNoaWxkR3JhcGguZ2V0TGVmdCgpO1xuICAgICAgdmFyIGhlaWdodCA9IGNoaWxkR3JhcGguZ2V0Qm90dG9tKCkgLSBjaGlsZEdyYXBoLmdldFRvcCgpO1xuXG4gICAgICBpZiAodGhpcy5sYWJlbFdpZHRoID4gd2lkdGgpIHtcbiAgICAgICAgdGhpcy5yZWN0LnggLT0gKHRoaXMubGFiZWxXaWR0aCAtIHdpZHRoKSAvIDI7XG4gICAgICAgIHRoaXMuc2V0V2lkdGgodGhpcy5sYWJlbFdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubGFiZWxIZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxQb3MgPT0gXCJjZW50ZXJcIikge1xuICAgICAgICAgIHRoaXMucmVjdC55IC09ICh0aGlzLmxhYmVsSGVpZ2h0IC0gaGVpZ2h0KSAvIDI7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sYWJlbFBvcyA9PSBcInRvcFwiKSB7XG4gICAgICAgICAgdGhpcy5yZWN0LnkgLT0gdGhpcy5sYWJlbEhlaWdodCAtIGhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEhlaWdodCh0aGlzLmxhYmVsSGVpZ2h0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRJbmNsdXNpb25UcmVlRGVwdGggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmluY2x1c2lvblRyZWVEZXB0aCA9PSBJbnRlZ2VyLk1BWF9WQUxVRSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG4gIHJldHVybiB0aGlzLmluY2x1c2lvblRyZWVEZXB0aDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAodHJhbnMpIHtcbiAgdmFyIGxlZnQgPSB0aGlzLnJlY3QueDtcblxuICBpZiAobGVmdCA+IExheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWSkge1xuICAgIGxlZnQgPSBMYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlk7XG4gIH0gZWxzZSBpZiAobGVmdCA8IC1MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkpIHtcbiAgICBsZWZ0ID0gLUxheW91dENvbnN0YW50cy5XT1JMRF9CT1VOREFSWTtcbiAgfVxuXG4gIHZhciB0b3AgPSB0aGlzLnJlY3QueTtcblxuICBpZiAodG9wID4gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZKSB7XG4gICAgdG9wID0gTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZO1xuICB9IGVsc2UgaWYgKHRvcCA8IC1MYXlvdXRDb25zdGFudHMuV09STERfQk9VTkRBUlkpIHtcbiAgICB0b3AgPSAtTGF5b3V0Q29uc3RhbnRzLldPUkxEX0JPVU5EQVJZO1xuICB9XG5cbiAgdmFyIGxlZnRUb3AgPSBuZXcgUG9pbnREKGxlZnQsIHRvcCk7XG4gIHZhciB2TGVmdFRvcCA9IHRyYW5zLmludmVyc2VUcmFuc2Zvcm1Qb2ludChsZWZ0VG9wKTtcblxuICB0aGlzLnNldExvY2F0aW9uKHZMZWZ0VG9wLngsIHZMZWZ0VG9wLnkpO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldExlZnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJlY3QueDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC54ICsgdGhpcy5yZWN0LndpZHRoO1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldFRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC55O1xufTtcblxuTE5vZGUucHJvdG90eXBlLmdldEJvdHRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmVjdC55ICsgdGhpcy5yZWN0LmhlaWdodDtcbn07XG5cbkxOb2RlLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLm93bmVyID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB0aGlzLm93bmVyLmdldFBhcmVudCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMTm9kZTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIFBvaW50RCh4LCB5KSB7XG4gIGlmICh4ID09IG51bGwgJiYgeSA9PSBudWxsKSB7XG4gICAgdGhpcy54ID0gMDtcbiAgICB0aGlzLnkgPSAwO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxufVxuXG5Qb2ludEQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLng7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnk7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICB0aGlzLnggPSB4O1xufTtcblxuUG9pbnRELnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgdGhpcy55ID0geTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUuZ2V0RGlmZmVyZW5jZSA9IGZ1bmN0aW9uIChwdCkge1xuICByZXR1cm4gbmV3IERpbWVuc2lvbkQodGhpcy54IC0gcHQueCwgdGhpcy55IC0gcHQueSk7XG59O1xuXG5Qb2ludEQucHJvdG90eXBlLmdldENvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUG9pbnREKHRoaXMueCwgdGhpcy55KTtcbn07XG5cblBvaW50RC5wcm90b3R5cGUudHJhbnNsYXRlID0gZnVuY3Rpb24gKGRpbSkge1xuICB0aGlzLnggKz0gZGltLndpZHRoO1xuICB0aGlzLnkgKz0gZGltLmhlaWdodDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvaW50RDtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMR3JhcGhPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xudmFyIEludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIExHcmFwaE1hbmFnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xudmFyIExOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbnZhciBMRWRnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG52YXIgUmVjdGFuZ2xlRCA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpO1xudmFyIFBvaW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG52YXIgTGlua2VkTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXG5mdW5jdGlvbiBMR3JhcGgocGFyZW50LCBvYmoyLCB2R3JhcGgpIHtcbiAgTEdyYXBoT2JqZWN0LmNhbGwodGhpcywgdkdyYXBoKTtcbiAgdGhpcy5lc3RpbWF0ZWRTaXplID0gSW50ZWdlci5NSU5fVkFMVUU7XG4gIHRoaXMubWFyZ2luID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfR1JBUEhfTUFSR0lOO1xuICB0aGlzLmVkZ2VzID0gW107XG4gIHRoaXMubm9kZXMgPSBbXTtcbiAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcblxuICBpZiAob2JqMiAhPSBudWxsICYmIG9iajIgaW5zdGFuY2VvZiBMR3JhcGhNYW5hZ2VyKSB7XG4gICAgdGhpcy5ncmFwaE1hbmFnZXIgPSBvYmoyO1xuICB9IGVsc2UgaWYgKG9iajIgIT0gbnVsbCAmJiBvYmoyIGluc3RhbmNlb2YgTGF5b3V0KSB7XG4gICAgdGhpcy5ncmFwaE1hbmFnZXIgPSBvYmoyLmdyYXBoTWFuYWdlcjtcbiAgfVxufVxuXG5MR3JhcGgucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShMR3JhcGhPYmplY3QucHJvdG90eXBlKTtcbmZvciAodmFyIHByb3AgaW4gTEdyYXBoT2JqZWN0KSB7XG4gIExHcmFwaFtwcm9wXSA9IExHcmFwaE9iamVjdFtwcm9wXTtcbn1cblxuTEdyYXBoLnByb3RvdHlwZS5nZXROb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubm9kZXM7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5lZGdlcztcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0R3JhcGhNYW5hZ2VyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXI7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldFBhcmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucGFyZW50O1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZWZ0O1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRSaWdodCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMucmlnaHQ7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmdldFRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudG9wO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5nZXRCb3R0b20gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmJvdHRvbTtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuaXNDb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmlzQ29ubmVjdGVkO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAob2JqMSwgc291cmNlTm9kZSwgdGFyZ2V0Tm9kZSkge1xuICBpZiAoc291cmNlTm9kZSA9PSBudWxsICYmIHRhcmdldE5vZGUgPT0gbnVsbCkge1xuICAgIHZhciBuZXdOb2RlID0gb2JqMTtcbiAgICBpZiAodGhpcy5ncmFwaE1hbmFnZXIgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJHcmFwaCBoYXMgbm8gZ3JhcGggbWdyIVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5nZXROb2RlcygpLmluZGV4T2YobmV3Tm9kZSkgPiAtMSkge1xuICAgICAgdGhyb3cgXCJOb2RlIGFscmVhZHkgaW4gZ3JhcGghXCI7XG4gICAgfVxuICAgIG5ld05vZGUub3duZXIgPSB0aGlzO1xuICAgIHRoaXMuZ2V0Tm9kZXMoKS5wdXNoKG5ld05vZGUpO1xuXG4gICAgcmV0dXJuIG5ld05vZGU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5ld0VkZ2UgPSBvYmoxO1xuICAgIGlmICghKHRoaXMuZ2V0Tm9kZXMoKS5pbmRleE9mKHNvdXJjZU5vZGUpID4gLTEgJiYgdGhpcy5nZXROb2RlcygpLmluZGV4T2YodGFyZ2V0Tm9kZSkgPiAtMSkpIHtcbiAgICAgIHRocm93IFwiU291cmNlIG9yIHRhcmdldCBub3QgaW4gZ3JhcGghXCI7XG4gICAgfVxuXG4gICAgaWYgKCEoc291cmNlTm9kZS5vd25lciA9PSB0YXJnZXROb2RlLm93bmVyICYmIHNvdXJjZU5vZGUub3duZXIgPT0gdGhpcykpIHtcbiAgICAgIHRocm93IFwiQm90aCBvd25lcnMgbXVzdCBiZSB0aGlzIGdyYXBoIVwiO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2VOb2RlLm93bmVyICE9IHRhcmdldE5vZGUub3duZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIHNldCBzb3VyY2UgYW5kIHRhcmdldFxuICAgIG5ld0VkZ2Uuc291cmNlID0gc291cmNlTm9kZTtcbiAgICBuZXdFZGdlLnRhcmdldCA9IHRhcmdldE5vZGU7XG5cbiAgICAvLyBzZXQgYXMgaW50cmEtZ3JhcGggZWRnZVxuICAgIG5ld0VkZ2UuaXNJbnRlckdyYXBoID0gZmFsc2U7XG5cbiAgICAvLyBhZGQgdG8gZ3JhcGggZWRnZSBsaXN0XG4gICAgdGhpcy5nZXRFZGdlcygpLnB1c2gobmV3RWRnZSk7XG5cbiAgICAvLyBhZGQgdG8gaW5jaWRlbmN5IGxpc3RzXG4gICAgc291cmNlTm9kZS5lZGdlcy5wdXNoKG5ld0VkZ2UpO1xuXG4gICAgaWYgKHRhcmdldE5vZGUgIT0gc291cmNlTm9kZSkge1xuICAgICAgdGFyZ2V0Tm9kZS5lZGdlcy5wdXNoKG5ld0VkZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdFZGdlO1xuICB9XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIG5vZGUgPSBvYmo7XG4gIGlmIChvYmogaW5zdGFuY2VvZiBMTm9kZSkge1xuICAgIGlmIChub2RlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiTm9kZSBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIShub2RlLm93bmVyICE9IG51bGwgJiYgbm9kZS5vd25lciA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJPd25lciBncmFwaCBpcyBpbnZhbGlkIVwiO1xuICAgIH1cbiAgICBpZiAodGhpcy5ncmFwaE1hbmFnZXIgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJPd25lciBncmFwaCBtYW5hZ2VyIGlzIGludmFsaWQhXCI7XG4gICAgfVxuICAgIC8vIHJlbW92ZSBpbmNpZGVudCBlZGdlcyBmaXJzdCAobWFrZSBhIGNvcHkgdG8gZG8gaXQgc2FmZWx5KVxuICAgIHZhciBlZGdlc1RvQmVSZW1vdmVkID0gbm9kZS5lZGdlcy5zbGljZSgpO1xuICAgIHZhciBlZGdlO1xuICAgIHZhciBzID0gZWRnZXNUb0JlUmVtb3ZlZC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgIGVkZ2UgPSBlZGdlc1RvQmVSZW1vdmVkW2ldO1xuXG4gICAgICBpZiAoZWRnZS5pc0ludGVyR3JhcGgpIHtcbiAgICAgICAgdGhpcy5ncmFwaE1hbmFnZXIucmVtb3ZlKGVkZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRnZS5zb3VyY2Uub3duZXIucmVtb3ZlKGVkZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vdyB0aGUgbm9kZSBpdHNlbGZcbiAgICB2YXIgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICB0aHJvdyBcIk5vZGUgbm90IGluIG93bmVyIG5vZGUgbGlzdCFcIjtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCwgMSk7XG4gIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTEVkZ2UpIHtcbiAgICB2YXIgZWRnZSA9IG9iajtcbiAgICBpZiAoZWRnZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkVkZ2UgaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKCEoZWRnZS5zb3VyY2UgIT0gbnVsbCAmJiBlZGdlLnRhcmdldCAhPSBudWxsKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2UgYW5kL29yIHRhcmdldCBpcyBudWxsIVwiO1xuICAgIH1cbiAgICBpZiAoIShlZGdlLnNvdXJjZS5vd25lciAhPSBudWxsICYmIGVkZ2UudGFyZ2V0Lm93bmVyICE9IG51bGwgJiYgZWRnZS5zb3VyY2Uub3duZXIgPT0gdGhpcyAmJiBlZGdlLnRhcmdldC5vd25lciA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2UgYW5kL29yIHRhcmdldCBvd25lciBpcyBpbnZhbGlkIVwiO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VJbmRleCA9IGVkZ2Uuc291cmNlLmVkZ2VzLmluZGV4T2YoZWRnZSk7XG4gICAgdmFyIHRhcmdldEluZGV4ID0gZWRnZS50YXJnZXQuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBpZiAoIShzb3VyY2VJbmRleCA+IC0xICYmIHRhcmdldEluZGV4ID4gLTEpKSB7XG4gICAgICB0aHJvdyBcIlNvdXJjZSBhbmQvb3IgdGFyZ2V0IGRvZXNuJ3Qga25vdyB0aGlzIGVkZ2UhXCI7XG4gICAgfVxuXG4gICAgZWRnZS5zb3VyY2UuZWRnZXMuc3BsaWNlKHNvdXJjZUluZGV4LCAxKTtcblxuICAgIGlmIChlZGdlLnRhcmdldCAhPSBlZGdlLnNvdXJjZSkge1xuICAgICAgZWRnZS50YXJnZXQuZWRnZXMuc3BsaWNlKHRhcmdldEluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBlZGdlLnNvdXJjZS5vd25lci5nZXRFZGdlcygpLmluZGV4T2YoZWRnZSk7XG4gICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICB0aHJvdyBcIk5vdCBpbiBvd25lcidzIGVkZ2UgbGlzdCFcIjtcbiAgICB9XG5cbiAgICBlZGdlLnNvdXJjZS5vd25lci5nZXRFZGdlcygpLnNwbGljZShpbmRleCwgMSk7XG4gIH1cbn07XG5cbkxHcmFwaC5wcm90b3R5cGUudXBkYXRlTGVmdFRvcCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRvcCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbGVmdCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgbm9kZVRvcDtcbiAgdmFyIG5vZGVMZWZ0O1xuICB2YXIgbWFyZ2luO1xuXG4gIHZhciBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoKTtcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICBub2RlVG9wID0gbE5vZGUuZ2V0VG9wKCk7XG4gICAgbm9kZUxlZnQgPSBsTm9kZS5nZXRMZWZ0KCk7XG5cbiAgICBpZiAodG9wID4gbm9kZVRvcCkge1xuICAgICAgdG9wID0gbm9kZVRvcDtcbiAgICB9XG5cbiAgICBpZiAobGVmdCA+IG5vZGVMZWZ0KSB7XG4gICAgICBsZWZ0ID0gbm9kZUxlZnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gRG8gd2UgaGF2ZSBhbnkgbm9kZXMgaW4gdGhpcyBncmFwaD9cbiAgaWYgKHRvcCA9PSBJbnRlZ2VyLk1BWF9WQUxVRSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0ICE9IHVuZGVmaW5lZCkge1xuICAgIG1hcmdpbiA9IG5vZGVzWzBdLmdldFBhcmVudCgpLnBhZGRpbmdMZWZ0O1xuICB9IGVsc2Uge1xuICAgIG1hcmdpbiA9IHRoaXMubWFyZ2luO1xuICB9XG5cbiAgdGhpcy5sZWZ0ID0gbGVmdCAtIG1hcmdpbjtcbiAgdGhpcy50b3AgPSB0b3AgLSBtYXJnaW47XG5cbiAgLy8gQXBwbHkgdGhlIG1hcmdpbnMgYW5kIHJldHVybiB0aGUgcmVzdWx0XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcy5sZWZ0LCB0aGlzLnRvcCk7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLnVwZGF0ZUJvdW5kcyA9IGZ1bmN0aW9uIChyZWN1cnNpdmUpIHtcbiAgLy8gY2FsY3VsYXRlIGJvdW5kc1xuICB2YXIgbGVmdCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgcmlnaHQgPSAtSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciB0b3AgPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIGJvdHRvbSA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIG5vZGVMZWZ0O1xuICB2YXIgbm9kZVJpZ2h0O1xuICB2YXIgbm9kZVRvcDtcbiAgdmFyIG5vZGVCb3R0b207XG4gIHZhciBtYXJnaW47XG5cbiAgdmFyIG5vZGVzID0gdGhpcy5ub2RlcztcbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgdmFyIGxOb2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiAocmVjdXJzaXZlICYmIGxOb2RlLmNoaWxkICE9IG51bGwpIHtcbiAgICAgIGxOb2RlLnVwZGF0ZUJvdW5kcygpO1xuICAgIH1cbiAgICBub2RlTGVmdCA9IGxOb2RlLmdldExlZnQoKTtcbiAgICBub2RlUmlnaHQgPSBsTm9kZS5nZXRSaWdodCgpO1xuICAgIG5vZGVUb3AgPSBsTm9kZS5nZXRUb3AoKTtcbiAgICBub2RlQm90dG9tID0gbE5vZGUuZ2V0Qm90dG9tKCk7XG5cbiAgICBpZiAobGVmdCA+IG5vZGVMZWZ0KSB7XG4gICAgICBsZWZ0ID0gbm9kZUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0IDwgbm9kZVJpZ2h0KSB7XG4gICAgICByaWdodCA9IG5vZGVSaWdodDtcbiAgICB9XG5cbiAgICBpZiAodG9wID4gbm9kZVRvcCkge1xuICAgICAgdG9wID0gbm9kZVRvcDtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tIDwgbm9kZUJvdHRvbSkge1xuICAgICAgYm90dG9tID0gbm9kZUJvdHRvbTtcbiAgICB9XG4gIH1cblxuICB2YXIgYm91bmRpbmdSZWN0ID0gbmV3IFJlY3RhbmdsZUQobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7XG4gIGlmIChsZWZ0ID09IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gICAgdGhpcy5sZWZ0ID0gdGhpcy5wYXJlbnQuZ2V0TGVmdCgpO1xuICAgIHRoaXMucmlnaHQgPSB0aGlzLnBhcmVudC5nZXRSaWdodCgpO1xuICAgIHRoaXMudG9wID0gdGhpcy5wYXJlbnQuZ2V0VG9wKCk7XG4gICAgdGhpcy5ib3R0b20gPSB0aGlzLnBhcmVudC5nZXRCb3R0b20oKTtcbiAgfVxuXG4gIGlmIChub2Rlc1swXS5nZXRQYXJlbnQoKS5wYWRkaW5nTGVmdCAhPSB1bmRlZmluZWQpIHtcbiAgICBtYXJnaW4gPSBub2Rlc1swXS5nZXRQYXJlbnQoKS5wYWRkaW5nTGVmdDtcbiAgfSBlbHNlIHtcbiAgICBtYXJnaW4gPSB0aGlzLm1hcmdpbjtcbiAgfVxuXG4gIHRoaXMubGVmdCA9IGJvdW5kaW5nUmVjdC54IC0gbWFyZ2luO1xuICB0aGlzLnJpZ2h0ID0gYm91bmRpbmdSZWN0LnggKyBib3VuZGluZ1JlY3Qud2lkdGggKyBtYXJnaW47XG4gIHRoaXMudG9wID0gYm91bmRpbmdSZWN0LnkgLSBtYXJnaW47XG4gIHRoaXMuYm90dG9tID0gYm91bmRpbmdSZWN0LnkgKyBib3VuZGluZ1JlY3QuaGVpZ2h0ICsgbWFyZ2luO1xufTtcblxuTEdyYXBoLmNhbGN1bGF0ZUJvdW5kcyA9IGZ1bmN0aW9uIChub2Rlcykge1xuICB2YXIgbGVmdCA9IEludGVnZXIuTUFYX1ZBTFVFO1xuICB2YXIgcmlnaHQgPSAtSW50ZWdlci5NQVhfVkFMVUU7XG4gIHZhciB0b3AgPSBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIGJvdHRvbSA9IC1JbnRlZ2VyLk1BWF9WQUxVRTtcbiAgdmFyIG5vZGVMZWZ0O1xuICB2YXIgbm9kZVJpZ2h0O1xuICB2YXIgbm9kZVRvcDtcbiAgdmFyIG5vZGVCb3R0b207XG5cbiAgdmFyIHMgPSBub2Rlcy5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgbE5vZGUgPSBub2Rlc1tpXTtcbiAgICBub2RlTGVmdCA9IGxOb2RlLmdldExlZnQoKTtcbiAgICBub2RlUmlnaHQgPSBsTm9kZS5nZXRSaWdodCgpO1xuICAgIG5vZGVUb3AgPSBsTm9kZS5nZXRUb3AoKTtcbiAgICBub2RlQm90dG9tID0gbE5vZGUuZ2V0Qm90dG9tKCk7XG5cbiAgICBpZiAobGVmdCA+IG5vZGVMZWZ0KSB7XG4gICAgICBsZWZ0ID0gbm9kZUxlZnQ7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0IDwgbm9kZVJpZ2h0KSB7XG4gICAgICByaWdodCA9IG5vZGVSaWdodDtcbiAgICB9XG5cbiAgICBpZiAodG9wID4gbm9kZVRvcCkge1xuICAgICAgdG9wID0gbm9kZVRvcDtcbiAgICB9XG5cbiAgICBpZiAoYm90dG9tIDwgbm9kZUJvdHRvbSkge1xuICAgICAgYm90dG9tID0gbm9kZUJvdHRvbTtcbiAgICB9XG4gIH1cblxuICB2YXIgYm91bmRpbmdSZWN0ID0gbmV3IFJlY3RhbmdsZUQobGVmdCwgdG9wLCByaWdodCAtIGxlZnQsIGJvdHRvbSAtIHRvcCk7XG5cbiAgcmV0dXJuIGJvdW5kaW5nUmVjdDtcbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0SW5jbHVzaW9uVHJlZURlcHRoID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcyA9PSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0SW5jbHVzaW9uVHJlZURlcHRoKCk7XG4gIH1cbn07XG5cbkxHcmFwaC5wcm90b3R5cGUuZ2V0RXN0aW1hdGVkU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuZXN0aW1hdGVkU2l6ZSA9PSBJbnRlZ2VyLk1JTl9WQUxVRSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG4gIHJldHVybiB0aGlzLmVzdGltYXRlZFNpemU7XG59O1xuXG5MR3JhcGgucHJvdG90eXBlLmNhbGNFc3RpbWF0ZWRTaXplID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2l6ZSA9IDA7XG4gIHZhciBub2RlcyA9IHRoaXMubm9kZXM7XG4gIHZhciBzID0gbm9kZXMubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgdmFyIGxOb2RlID0gbm9kZXNbaV07XG4gICAgc2l6ZSArPSBsTm9kZS5jYWxjRXN0aW1hdGVkU2l6ZSgpO1xuICB9XG5cbiAgaWYgKHNpemUgPT0gMCkge1xuICAgIHRoaXMuZXN0aW1hdGVkU2l6ZSA9IExheW91dENvbnN0YW50cy5FTVBUWV9DT01QT1VORF9OT0RFX1NJWkU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lc3RpbWF0ZWRTaXplID0gc2l6ZSAvIE1hdGguc3FydCh0aGlzLm5vZGVzLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lc3RpbWF0ZWRTaXplO1xufTtcblxuTEdyYXBoLnByb3RvdHlwZS51cGRhdGVDb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgaWYgKHRoaXMubm9kZXMubGVuZ3RoID09IDApIHtcbiAgICB0aGlzLmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcXVldWUgPSBuZXcgTGlua2VkTGlzdCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5ub2Rlc1swXTtcbiAgdmFyIG5laWdoYm9yRWRnZXM7XG4gIHZhciBjdXJyZW50TmVpZ2hib3I7XG4gIHZhciBjaGlsZHJlbk9mTm9kZSA9IGN1cnJlbnROb2RlLndpdGhDaGlsZHJlbigpO1xuICBjaGlsZHJlbk9mTm9kZS5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcXVldWUucHVzaChub2RlKTtcbiAgICB2aXNpdGVkLmFkZChub2RlKTtcbiAgfSk7XG5cbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCAhPT0gMCkge1xuICAgIGN1cnJlbnROb2RlID0gcXVldWUuc2hpZnQoKTtcblxuICAgIC8vIFRyYXZlcnNlIGFsbCBuZWlnaGJvcnMgb2YgdGhpcyBub2RlXG4gICAgbmVpZ2hib3JFZGdlcyA9IGN1cnJlbnROb2RlLmdldEVkZ2VzKCk7XG4gICAgdmFyIHNpemUgPSBuZWlnaGJvckVkZ2VzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFyIG5laWdoYm9yRWRnZSA9IG5laWdoYm9yRWRnZXNbaV07XG4gICAgICBjdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvckVkZ2UuZ2V0T3RoZXJFbmRJbkdyYXBoKGN1cnJlbnROb2RlLCB0aGlzKTtcblxuICAgICAgLy8gQWRkIHVudmlzaXRlZCBuZWlnaGJvcnMgdG8gdGhlIGxpc3QgdG8gdmlzaXRcbiAgICAgIGlmIChjdXJyZW50TmVpZ2hib3IgIT0gbnVsbCAmJiAhdmlzaXRlZC5oYXMoY3VycmVudE5laWdoYm9yKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW5PZk5laWdoYm9yID0gY3VycmVudE5laWdoYm9yLndpdGhDaGlsZHJlbigpO1xuXG4gICAgICAgIGNoaWxkcmVuT2ZOZWlnaGJvci5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgcXVldWUucHVzaChub2RlKTtcbiAgICAgICAgICB2aXNpdGVkLmFkZChub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy5pc0Nvbm5lY3RlZCA9IGZhbHNlO1xuXG4gIGlmICh2aXNpdGVkLnNpemUgPj0gdGhpcy5ub2Rlcy5sZW5ndGgpIHtcbiAgICB2YXIgbm9PZlZpc2l0ZWRJblRoaXNHcmFwaCA9IDA7XG5cbiAgICB2aXNpdGVkLmZvckVhY2goZnVuY3Rpb24gKHZpc2l0ZWROb2RlKSB7XG4gICAgICBpZiAodmlzaXRlZE5vZGUub3duZXIgPT0gc2VsZikge1xuICAgICAgICBub09mVmlzaXRlZEluVGhpc0dyYXBoKys7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobm9PZlZpc2l0ZWRJblRoaXNHcmFwaCA9PSB0aGlzLm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExHcmFwaDtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBMR3JhcGg7XG52YXIgTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5mdW5jdGlvbiBMR3JhcGhNYW5hZ2VyKGxheW91dCkge1xuICBMR3JhcGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOyAvLyBJdCBtYXkgYmUgYmV0dGVyIHRvIGluaXRpbGl6ZSB0aGlzIG91dCBvZiB0aGlzIGZ1bmN0aW9uIGJ1dCBpdCBnaXZlcyBhbiBlcnJvciAoUmlnaHQtaGFuZCBzaWRlIG9mICdpbnN0YW5jZW9mJyBpcyBub3QgY2FsbGFibGUpIG5vdy5cbiAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG5cbiAgdGhpcy5ncmFwaHMgPSBbXTtcbiAgdGhpcy5lZGdlcyA9IFtdO1xufVxuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5hZGRSb290ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbmdyYXBoID0gdGhpcy5sYXlvdXQubmV3R3JhcGgoKTtcbiAgdmFyIG5ub2RlID0gdGhpcy5sYXlvdXQubmV3Tm9kZShudWxsKTtcbiAgdmFyIHJvb3QgPSB0aGlzLmFkZChuZ3JhcGgsIG5ub2RlKTtcbiAgdGhpcy5zZXRSb290R3JhcGgocm9vdCk7XG4gIHJldHVybiB0aGlzLnJvb3RHcmFwaDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChuZXdHcmFwaCwgcGFyZW50Tm9kZSwgbmV3RWRnZSwgc291cmNlTm9kZSwgdGFyZ2V0Tm9kZSkge1xuICAvL3RoZXJlIGFyZSBqdXN0IDIgcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRoZW4gaXQgYWRkcyBhbiBMR3JhcGggZWxzZSBpdCBhZGRzIGFuIExFZGdlXG4gIGlmIChuZXdFZGdlID09IG51bGwgJiYgc291cmNlTm9kZSA9PSBudWxsICYmIHRhcmdldE5vZGUgPT0gbnVsbCkge1xuICAgIGlmIChuZXdHcmFwaCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkdyYXBoIGlzIG51bGwhXCI7XG4gICAgfVxuICAgIGlmIChwYXJlbnROb2RlID09IG51bGwpIHtcbiAgICAgIHRocm93IFwiUGFyZW50IG5vZGUgaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JhcGhzLmluZGV4T2YobmV3R3JhcGgpID4gLTEpIHtcbiAgICAgIHRocm93IFwiR3JhcGggYWxyZWFkeSBpbiB0aGlzIGdyYXBoIG1nciFcIjtcbiAgICB9XG5cbiAgICB0aGlzLmdyYXBocy5wdXNoKG5ld0dyYXBoKTtcblxuICAgIGlmIChuZXdHcmFwaC5wYXJlbnQgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJBbHJlYWR5IGhhcyBhIHBhcmVudCFcIjtcbiAgICB9XG4gICAgaWYgKHBhcmVudE5vZGUuY2hpbGQgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgXCJBbHJlYWR5IGhhcyBhIGNoaWxkIVwiO1xuICAgIH1cblxuICAgIG5ld0dyYXBoLnBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgcGFyZW50Tm9kZS5jaGlsZCA9IG5ld0dyYXBoO1xuXG4gICAgcmV0dXJuIG5ld0dyYXBoO1xuICB9IGVsc2Uge1xuICAgIC8vY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVyc1xuICAgIHRhcmdldE5vZGUgPSBuZXdFZGdlO1xuICAgIHNvdXJjZU5vZGUgPSBwYXJlbnROb2RlO1xuICAgIG5ld0VkZ2UgPSBuZXdHcmFwaDtcbiAgICB2YXIgc291cmNlR3JhcGggPSBzb3VyY2VOb2RlLmdldE93bmVyKCk7XG4gICAgdmFyIHRhcmdldEdyYXBoID0gdGFyZ2V0Tm9kZS5nZXRPd25lcigpO1xuXG4gICAgaWYgKCEoc291cmNlR3JhcGggIT0gbnVsbCAmJiBzb3VyY2VHcmFwaC5nZXRHcmFwaE1hbmFnZXIoKSA9PSB0aGlzKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2Ugbm90IGluIHRoaXMgZ3JhcGggbWdyIVwiO1xuICAgIH1cbiAgICBpZiAoISh0YXJnZXRHcmFwaCAhPSBudWxsICYmIHRhcmdldEdyYXBoLmdldEdyYXBoTWFuYWdlcigpID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIlRhcmdldCBub3QgaW4gdGhpcyBncmFwaCBtZ3IhXCI7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZUdyYXBoID09IHRhcmdldEdyYXBoKSB7XG4gICAgICBuZXdFZGdlLmlzSW50ZXJHcmFwaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHNvdXJjZUdyYXBoLmFkZChuZXdFZGdlLCBzb3VyY2VOb2RlLCB0YXJnZXROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RWRnZS5pc0ludGVyR3JhcGggPSB0cnVlO1xuXG4gICAgICAvLyBzZXQgc291cmNlIGFuZCB0YXJnZXRcbiAgICAgIG5ld0VkZ2Uuc291cmNlID0gc291cmNlTm9kZTtcbiAgICAgIG5ld0VkZ2UudGFyZ2V0ID0gdGFyZ2V0Tm9kZTtcblxuICAgICAgLy8gYWRkIGVkZ2UgdG8gaW50ZXItZ3JhcGggZWRnZSBsaXN0XG4gICAgICBpZiAodGhpcy5lZGdlcy5pbmRleE9mKG5ld0VkZ2UpID4gLTEpIHtcbiAgICAgICAgdGhyb3cgXCJFZGdlIGFscmVhZHkgaW4gaW50ZXItZ3JhcGggZWRnZSBsaXN0IVwiO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVkZ2VzLnB1c2gobmV3RWRnZSk7XG5cbiAgICAgIC8vIGFkZCBlZGdlIHRvIHNvdXJjZSBhbmQgdGFyZ2V0IGluY2lkZW5jeSBsaXN0c1xuICAgICAgaWYgKCEobmV3RWRnZS5zb3VyY2UgIT0gbnVsbCAmJiBuZXdFZGdlLnRhcmdldCAhPSBudWxsKSkge1xuICAgICAgICB0aHJvdyBcIkVkZ2Ugc291cmNlIGFuZC9vciB0YXJnZXQgaXMgbnVsbCFcIjtcbiAgICAgIH1cblxuICAgICAgaWYgKCEobmV3RWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihuZXdFZGdlKSA9PSAtMSAmJiBuZXdFZGdlLnRhcmdldC5lZGdlcy5pbmRleE9mKG5ld0VkZ2UpID09IC0xKSkge1xuICAgICAgICB0aHJvdyBcIkVkZ2UgYWxyZWFkeSBpbiBzb3VyY2UgYW5kL29yIHRhcmdldCBpbmNpZGVuY3kgbGlzdCFcIjtcbiAgICAgIH1cblxuICAgICAgbmV3RWRnZS5zb3VyY2UuZWRnZXMucHVzaChuZXdFZGdlKTtcbiAgICAgIG5ld0VkZ2UudGFyZ2V0LmVkZ2VzLnB1c2gobmV3RWRnZSk7XG5cbiAgICAgIHJldHVybiBuZXdFZGdlO1xuICAgIH1cbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGxPYmopIHtcbiAgaWYgKGxPYmogaW5zdGFuY2VvZiBMR3JhcGgpIHtcbiAgICB2YXIgZ3JhcGggPSBsT2JqO1xuICAgIGlmIChncmFwaC5nZXRHcmFwaE1hbmFnZXIoKSAhPSB0aGlzKSB7XG4gICAgICB0aHJvdyBcIkdyYXBoIG5vdCBpbiB0aGlzIGdyYXBoIG1nclwiO1xuICAgIH1cbiAgICBpZiAoIShncmFwaCA9PSB0aGlzLnJvb3RHcmFwaCB8fCBncmFwaC5wYXJlbnQgIT0gbnVsbCAmJiBncmFwaC5wYXJlbnQuZ3JhcGhNYW5hZ2VyID09IHRoaXMpKSB7XG4gICAgICB0aHJvdyBcIkludmFsaWQgcGFyZW50IG5vZGUhXCI7XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgdGhlIGVkZ2VzIChtYWtlIGEgY29weSB0byBkbyBpdCBzYWZlbHkpXG4gICAgdmFyIGVkZ2VzVG9CZVJlbW92ZWQgPSBbXTtcblxuICAgIGVkZ2VzVG9CZVJlbW92ZWQgPSBlZGdlc1RvQmVSZW1vdmVkLmNvbmNhdChncmFwaC5nZXRFZGdlcygpKTtcblxuICAgIHZhciBlZGdlO1xuICAgIHZhciBzID0gZWRnZXNUb0JlUmVtb3ZlZC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgIGVkZ2UgPSBlZGdlc1RvQmVSZW1vdmVkW2ldO1xuICAgICAgZ3JhcGgucmVtb3ZlKGVkZ2UpO1xuICAgIH1cblxuICAgIC8vIHRoZW4gdGhlIG5vZGVzIChtYWtlIGEgY29weSB0byBkbyBpdCBzYWZlbHkpXG4gICAgdmFyIG5vZGVzVG9CZVJlbW92ZWQgPSBbXTtcblxuICAgIG5vZGVzVG9CZVJlbW92ZWQgPSBub2Rlc1RvQmVSZW1vdmVkLmNvbmNhdChncmFwaC5nZXROb2RlcygpKTtcblxuICAgIHZhciBub2RlO1xuICAgIHMgPSBub2Rlc1RvQmVSZW1vdmVkLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgbm9kZSA9IG5vZGVzVG9CZVJlbW92ZWRbaV07XG4gICAgICBncmFwaC5yZW1vdmUobm9kZSk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgZ3JhcGggaXMgdGhlIHJvb3RcbiAgICBpZiAoZ3JhcGggPT0gdGhpcy5yb290R3JhcGgpIHtcbiAgICAgIHRoaXMuc2V0Um9vdEdyYXBoKG51bGwpO1xuICAgIH1cblxuICAgIC8vIG5vdyByZW1vdmUgdGhlIGdyYXBoIGl0c2VsZlxuICAgIHZhciBpbmRleCA9IHRoaXMuZ3JhcGhzLmluZGV4T2YoZ3JhcGgpO1xuICAgIHRoaXMuZ3JhcGhzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAvLyBhbHNvIHJlc2V0IHRoZSBwYXJlbnQgb2YgdGhlIGdyYXBoXG4gICAgZ3JhcGgucGFyZW50ID0gbnVsbDtcbiAgfSBlbHNlIGlmIChsT2JqIGluc3RhbmNlb2YgTEVkZ2UpIHtcbiAgICBlZGdlID0gbE9iajtcbiAgICBpZiAoZWRnZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcIkVkZ2UgaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKCFlZGdlLmlzSW50ZXJHcmFwaCkge1xuICAgICAgdGhyb3cgXCJOb3QgYW4gaW50ZXItZ3JhcGggZWRnZSFcIjtcbiAgICB9XG4gICAgaWYgKCEoZWRnZS5zb3VyY2UgIT0gbnVsbCAmJiBlZGdlLnRhcmdldCAhPSBudWxsKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2UgYW5kL29yIHRhcmdldCBpcyBudWxsIVwiO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBlZGdlIGZyb20gc291cmNlIGFuZCB0YXJnZXQgbm9kZXMnIGluY2lkZW5jeSBsaXN0c1xuXG4gICAgaWYgKCEoZWRnZS5zb3VyY2UuZWRnZXMuaW5kZXhPZihlZGdlKSAhPSAtMSAmJiBlZGdlLnRhcmdldC5lZGdlcy5pbmRleE9mKGVkZ2UpICE9IC0xKSkge1xuICAgICAgdGhyb3cgXCJTb3VyY2UgYW5kL29yIHRhcmdldCBkb2Vzbid0IGtub3cgdGhpcyBlZGdlIVwiO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IGVkZ2Uuc291cmNlLmVkZ2VzLmluZGV4T2YoZWRnZSk7XG4gICAgZWRnZS5zb3VyY2UuZWRnZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBpbmRleCA9IGVkZ2UudGFyZ2V0LmVkZ2VzLmluZGV4T2YoZWRnZSk7XG4gICAgZWRnZS50YXJnZXQuZWRnZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIC8vIHJlbW92ZSBlZGdlIGZyb20gb3duZXIgZ3JhcGggbWFuYWdlcidzIGludGVyLWdyYXBoIGVkZ2UgbGlzdFxuXG4gICAgaWYgKCEoZWRnZS5zb3VyY2Uub3duZXIgIT0gbnVsbCAmJiBlZGdlLnNvdXJjZS5vd25lci5nZXRHcmFwaE1hbmFnZXIoKSAhPSBudWxsKSkge1xuICAgICAgdGhyb3cgXCJFZGdlIG93bmVyIGdyYXBoIG9yIG93bmVyIGdyYXBoIG1hbmFnZXIgaXMgbnVsbCFcIjtcbiAgICB9XG4gICAgaWYgKGVkZ2Uuc291cmNlLm93bmVyLmdldEdyYXBoTWFuYWdlcigpLmVkZ2VzLmluZGV4T2YoZWRnZSkgPT0gLTEpIHtcbiAgICAgIHRocm93IFwiTm90IGluIG93bmVyIGdyYXBoIG1hbmFnZXIncyBlZGdlIGxpc3QhXCI7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZWRnZS5zb3VyY2Uub3duZXIuZ2V0R3JhcGhNYW5hZ2VyKCkuZWRnZXMuaW5kZXhPZihlZGdlKTtcbiAgICBlZGdlLnNvdXJjZS5vd25lci5nZXRHcmFwaE1hbmFnZXIoKS5lZGdlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGVCb3VuZHMgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMucm9vdEdyYXBoLnVwZGF0ZUJvdW5kcyh0cnVlKTtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmdldEdyYXBocyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhzO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0QWxsTm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmFsbE5vZGVzID09IG51bGwpIHtcbiAgICB2YXIgbm9kZUxpc3QgPSBbXTtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5nZXRHcmFwaHMoKTtcbiAgICB2YXIgcyA9IGdyYXBocy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgIG5vZGVMaXN0ID0gbm9kZUxpc3QuY29uY2F0KGdyYXBoc1tpXS5nZXROb2RlcygpKTtcbiAgICB9XG4gICAgdGhpcy5hbGxOb2RlcyA9IG5vZGVMaXN0O1xuICB9XG4gIHJldHVybiB0aGlzLmFsbE5vZGVzO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUucmVzZXRBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hbGxOb2RlcyA9IG51bGw7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5yZXNldEFsbEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmFsbEVkZ2VzID0gbnVsbDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnJlc2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBudWxsO1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuZ2V0QWxsRWRnZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmFsbEVkZ2VzID09IG51bGwpIHtcbiAgICB2YXIgZWRnZUxpc3QgPSBbXTtcbiAgICB2YXIgZ3JhcGhzID0gdGhpcy5nZXRHcmFwaHMoKTtcbiAgICB2YXIgcyA9IGdyYXBocy5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncmFwaHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGVkZ2VMaXN0ID0gZWRnZUxpc3QuY29uY2F0KGdyYXBoc1tpXS5nZXRFZGdlcygpKTtcbiAgICB9XG5cbiAgICBlZGdlTGlzdCA9IGVkZ2VMaXN0LmNvbmNhdCh0aGlzLmVkZ2VzKTtcblxuICAgIHRoaXMuYWxsRWRnZXMgPSBlZGdlTGlzdDtcbiAgfVxuICByZXR1cm4gdGhpcy5hbGxFZGdlcztcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmdldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5hbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbjtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnNldEFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uID0gZnVuY3Rpb24gKG5vZGVMaXN0KSB7XG4gIGlmICh0aGlzLmFsbE5vZGVzVG9BcHBseUdyYXZpdGF0aW9uICE9IG51bGwpIHtcbiAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgfVxuXG4gIHRoaXMuYWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBub2RlTGlzdDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmdldFJvb3QgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnJvb3RHcmFwaDtcbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLnNldFJvb3RHcmFwaCA9IGZ1bmN0aW9uIChncmFwaCkge1xuICBpZiAoZ3JhcGguZ2V0R3JhcGhNYW5hZ2VyKCkgIT0gdGhpcykge1xuICAgIHRocm93IFwiUm9vdCBub3QgaW4gdGhpcyBncmFwaCBtZ3IhXCI7XG4gIH1cblxuICB0aGlzLnJvb3RHcmFwaCA9IGdyYXBoO1xuICAvLyByb290IGdyYXBoIG11c3QgaGF2ZSBhIHJvb3Qgbm9kZSBhc3NvY2lhdGVkIHdpdGggaXQgZm9yIGNvbnZlbmllbmNlXG4gIGlmIChncmFwaC5wYXJlbnQgPT0gbnVsbCkge1xuICAgIGdyYXBoLnBhcmVudCA9IHRoaXMubGF5b3V0Lm5ld05vZGUoXCJSb290IG5vZGVcIik7XG4gIH1cbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmdldExheW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGF5b3V0O1xufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuaXNPbmVBbmNlc3Rvck9mT3RoZXIgPSBmdW5jdGlvbiAoZmlyc3ROb2RlLCBzZWNvbmROb2RlKSB7XG4gIGlmICghKGZpcnN0Tm9kZSAhPSBudWxsICYmIHNlY29uZE5vZGUgIT0gbnVsbCkpIHtcbiAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgfVxuXG4gIGlmIChmaXJzdE5vZGUgPT0gc2Vjb25kTm9kZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vIElzIHNlY29uZCBub2RlIGFuIGFuY2VzdG9yIG9mIHRoZSBmaXJzdCBvbmU/XG4gIHZhciBvd25lckdyYXBoID0gZmlyc3ROb2RlLmdldE93bmVyKCk7XG4gIHZhciBwYXJlbnROb2RlO1xuXG4gIGRvIHtcbiAgICBwYXJlbnROb2RlID0gb3duZXJHcmFwaC5nZXRQYXJlbnQoKTtcblxuICAgIGlmIChwYXJlbnROb2RlID09IG51bGwpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnROb2RlID09IHNlY29uZE5vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG93bmVyR3JhcGggPSBwYXJlbnROb2RlLmdldE93bmVyKCk7XG4gICAgaWYgKG93bmVyR3JhcGggPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9IHdoaWxlICh0cnVlKTtcbiAgLy8gSXMgZmlyc3Qgbm9kZSBhbiBhbmNlc3RvciBvZiB0aGUgc2Vjb25kIG9uZT9cbiAgb3duZXJHcmFwaCA9IHNlY29uZE5vZGUuZ2V0T3duZXIoKTtcblxuICBkbyB7XG4gICAgcGFyZW50Tm9kZSA9IG93bmVyR3JhcGguZ2V0UGFyZW50KCk7XG5cbiAgICBpZiAocGFyZW50Tm9kZSA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAocGFyZW50Tm9kZSA9PSBmaXJzdE5vZGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG93bmVyR3JhcGggPSBwYXJlbnROb2RlLmdldE93bmVyKCk7XG4gICAgaWYgKG93bmVyR3JhcGggPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9IHdoaWxlICh0cnVlKTtcblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5jYWxjTG93ZXN0Q29tbW9uQW5jZXN0b3JzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZWRnZTtcbiAgdmFyIHNvdXJjZU5vZGU7XG4gIHZhciB0YXJnZXROb2RlO1xuICB2YXIgc291cmNlQW5jZXN0b3JHcmFwaDtcbiAgdmFyIHRhcmdldEFuY2VzdG9yR3JhcGg7XG5cbiAgdmFyIGVkZ2VzID0gdGhpcy5nZXRBbGxFZGdlcygpO1xuICB2YXIgcyA9IGVkZ2VzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICBlZGdlID0gZWRnZXNbaV07XG5cbiAgICBzb3VyY2VOb2RlID0gZWRnZS5zb3VyY2U7XG4gICAgdGFyZ2V0Tm9kZSA9IGVkZ2UudGFyZ2V0O1xuICAgIGVkZ2UubGNhID0gbnVsbDtcbiAgICBlZGdlLnNvdXJjZUluTGNhID0gc291cmNlTm9kZTtcbiAgICBlZGdlLnRhcmdldEluTGNhID0gdGFyZ2V0Tm9kZTtcblxuICAgIGlmIChzb3VyY2VOb2RlID09IHRhcmdldE5vZGUpIHtcbiAgICAgIGVkZ2UubGNhID0gc291cmNlTm9kZS5nZXRPd25lcigpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgc291cmNlQW5jZXN0b3JHcmFwaCA9IHNvdXJjZU5vZGUuZ2V0T3duZXIoKTtcblxuICAgIHdoaWxlIChlZGdlLmxjYSA9PSBudWxsKSB7XG4gICAgICBlZGdlLnRhcmdldEluTGNhID0gdGFyZ2V0Tm9kZTtcbiAgICAgIHRhcmdldEFuY2VzdG9yR3JhcGggPSB0YXJnZXROb2RlLmdldE93bmVyKCk7XG5cbiAgICAgIHdoaWxlIChlZGdlLmxjYSA9PSBudWxsKSB7XG4gICAgICAgIGlmICh0YXJnZXRBbmNlc3RvckdyYXBoID09IHNvdXJjZUFuY2VzdG9yR3JhcGgpIHtcbiAgICAgICAgICBlZGdlLmxjYSA9IHRhcmdldEFuY2VzdG9yR3JhcGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0QW5jZXN0b3JHcmFwaCA9PSB0aGlzLnJvb3RHcmFwaCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVkZ2UubGNhICE9IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgICAgICAgfVxuICAgICAgICBlZGdlLnRhcmdldEluTGNhID0gdGFyZ2V0QW5jZXN0b3JHcmFwaC5nZXRQYXJlbnQoKTtcbiAgICAgICAgdGFyZ2V0QW5jZXN0b3JHcmFwaCA9IGVkZ2UudGFyZ2V0SW5MY2EuZ2V0T3duZXIoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZUFuY2VzdG9yR3JhcGggPT0gdGhpcy5yb290R3JhcGgpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChlZGdlLmxjYSA9PSBudWxsKSB7XG4gICAgICAgIGVkZ2Uuc291cmNlSW5MY2EgPSBzb3VyY2VBbmNlc3RvckdyYXBoLmdldFBhcmVudCgpO1xuICAgICAgICBzb3VyY2VBbmNlc3RvckdyYXBoID0gZWRnZS5zb3VyY2VJbkxjYS5nZXRPd25lcigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlZGdlLmxjYSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBcImFzc2VydCBmYWlsZWRcIjtcbiAgICB9XG4gIH1cbn07XG5cbkxHcmFwaE1hbmFnZXIucHJvdG90eXBlLmNhbGNMb3dlc3RDb21tb25BbmNlc3RvciA9IGZ1bmN0aW9uIChmaXJzdE5vZGUsIHNlY29uZE5vZGUpIHtcbiAgaWYgKGZpcnN0Tm9kZSA9PSBzZWNvbmROb2RlKSB7XG4gICAgcmV0dXJuIGZpcnN0Tm9kZS5nZXRPd25lcigpO1xuICB9XG4gIHZhciBmaXJzdE93bmVyR3JhcGggPSBmaXJzdE5vZGUuZ2V0T3duZXIoKTtcblxuICBkbyB7XG4gICAgaWYgKGZpcnN0T3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgdmFyIHNlY29uZE93bmVyR3JhcGggPSBzZWNvbmROb2RlLmdldE93bmVyKCk7XG5cbiAgICBkbyB7XG4gICAgICBpZiAoc2Vjb25kT3duZXJHcmFwaCA9PSBudWxsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2Vjb25kT3duZXJHcmFwaCA9PSBmaXJzdE93bmVyR3JhcGgpIHtcbiAgICAgICAgcmV0dXJuIHNlY29uZE93bmVyR3JhcGg7XG4gICAgICB9XG4gICAgICBzZWNvbmRPd25lckdyYXBoID0gc2Vjb25kT3duZXJHcmFwaC5nZXRQYXJlbnQoKS5nZXRPd25lcigpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgZmlyc3RPd25lckdyYXBoID0gZmlyc3RPd25lckdyYXBoLmdldFBhcmVudCgpLmdldE93bmVyKCk7XG4gIH0gd2hpbGUgKHRydWUpO1xuXG4gIHJldHVybiBmaXJzdE93bmVyR3JhcGg7XG59O1xuXG5MR3JhcGhNYW5hZ2VyLnByb3RvdHlwZS5jYWxjSW5jbHVzaW9uVHJlZURlcHRocyA9IGZ1bmN0aW9uIChncmFwaCwgZGVwdGgpIHtcbiAgaWYgKGdyYXBoID09IG51bGwgJiYgZGVwdGggPT0gbnVsbCkge1xuICAgIGdyYXBoID0gdGhpcy5yb290R3JhcGg7XG4gICAgZGVwdGggPSAxO1xuICB9XG4gIHZhciBub2RlO1xuXG4gIHZhciBub2RlcyA9IGdyYXBoLmdldE5vZGVzKCk7XG4gIHZhciBzID0gbm9kZXMubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICBub2RlLmluY2x1c2lvblRyZWVEZXB0aCA9IGRlcHRoO1xuXG4gICAgaWYgKG5vZGUuY2hpbGQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5jYWxjSW5jbHVzaW9uVHJlZURlcHRocyhub2RlLmNoaWxkLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfVxufTtcblxuTEdyYXBoTWFuYWdlci5wcm90b3R5cGUuaW5jbHVkZXNJbnZhbGlkRWRnZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2U7XG5cbiAgdmFyIHMgPSB0aGlzLmVkZ2VzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICBlZGdlID0gdGhpcy5lZGdlc1tpXTtcblxuICAgIGlmICh0aGlzLmlzT25lQW5jZXN0b3JPZk90aGVyKGVkZ2Uuc291cmNlLCBlZGdlLnRhcmdldCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExHcmFwaE1hbmFnZXI7XG5cbi8qKiovIH0pLFxuLyogNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuZnVuY3Rpb24gRkRMYXlvdXRDb25zdGFudHMoKSB7fVxuXG4vL0ZETGF5b3V0Q29uc3RhbnRzIGluaGVyaXRzIHN0YXRpYyBwcm9wcyBpbiBMYXlvdXRDb25zdGFudHNcbmZvciAodmFyIHByb3AgaW4gTGF5b3V0Q29uc3RhbnRzKSB7XG4gIEZETGF5b3V0Q29uc3RhbnRzW3Byb3BdID0gTGF5b3V0Q29uc3RhbnRzW3Byb3BdO1xufVxuXG5GRExheW91dENvbnN0YW50cy5NQVhfSVRFUkFUSU9OUyA9IDI1MDA7XG5cbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggPSA1MDtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfU1BSSU5HX1NUUkVOR1RIID0gMC40NTtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfUkVQVUxTSU9OX1NUUkVOR1RIID0gNDUwMC4wO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1NUUkVOR1RIID0gMC40O1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT01QT1VORF9HUkFWSVRZX1NUUkVOR1RIID0gMS4wO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1JBTkdFX0ZBQ1RPUiA9IDMuODtcbkZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ09NUE9VTkRfR1JBVklUWV9SQU5HRV9GQUNUT1IgPSAxLjU7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX1VTRV9TTUFSVF9JREVBTF9FREdFX0xFTkdUSF9DQUxDVUxBVElPTiA9IHRydWU7XG5GRExheW91dENvbnN0YW50cy5ERUZBVUxUX1VTRV9TTUFSVF9SRVBVTFNJT05fUkFOR0VfQ0FMQ1VMQVRJT04gPSB0cnVlO1xuRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT09MSU5HX0ZBQ1RPUl9JTkNSRU1FTlRBTCA9IDAuMztcbkZETGF5b3V0Q29uc3RhbnRzLkNPT0xJTkdfQURBUFRBVElPTl9GQUNUT1IgPSAwLjMzO1xuRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUID0gMTAwMDtcbkZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fVVBQRVJfTk9ERV9MSU1JVCA9IDUwMDA7XG5GRExheW91dENvbnN0YW50cy5NQVhfTk9ERV9ESVNQTEFDRU1FTlRfSU5DUkVNRU5UQUwgPSAxMDAuMDtcbkZETGF5b3V0Q29uc3RhbnRzLk1BWF9OT0RFX0RJU1BMQUNFTUVOVCA9IEZETGF5b3V0Q29uc3RhbnRzLk1BWF9OT0RFX0RJU1BMQUNFTUVOVF9JTkNSRU1FTlRBTCAqIDM7XG5GRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1QgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIIC8gMTAuMDtcbkZETGF5b3V0Q29uc3RhbnRzLkNPTlZFUkdFTkNFX0NIRUNLX1BFUklPRCA9IDEwMDtcbkZETGF5b3V0Q29uc3RhbnRzLlBFUl9MRVZFTF9JREVBTF9FREdFX0xFTkdUSF9GQUNUT1IgPSAwLjE7XG5GRExheW91dENvbnN0YW50cy5NSU5fRURHRV9MRU5HVEggPSAxO1xuRkRMYXlvdXRDb25zdGFudHMuR1JJRF9DQUxDVUxBVElPTl9DSEVDS19QRVJJT0QgPSAxMDtcblxubW9kdWxlLmV4cG9ydHMgPSBGRExheW91dENvbnN0YW50cztcblxuLyoqKi8gfSksXG4vKiA4ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbi8qKlxuICogVGhpcyBjbGFzcyBtYWludGFpbnMgYSBsaXN0IG9mIHN0YXRpYyBnZW9tZXRyeSByZWxhdGVkIHV0aWxpdHkgbWV0aG9kcy5cbiAqXG4gKlxuICogQ29weXJpZ2h0OiBpLVZpcyBSZXNlYXJjaCBHcm91cCwgQmlsa2VudCBVbml2ZXJzaXR5LCAyMDA3IC0gcHJlc2VudFxuICovXG5cbnZhciBQb2ludCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXG5mdW5jdGlvbiBJR2VvbWV0cnkoKSB7fVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGNhbGN1bGF0ZXMgKmhhbGYqIHRoZSBhbW91bnQgaW4geCBhbmQgeSBkaXJlY3Rpb25zIG9mIHRoZSB0d29cbiAqIGlucHV0IHJlY3RhbmdsZXMgbmVlZGVkIHRvIHNlcGFyYXRlIHRoZW0ga2VlcGluZyB0aGVpciByZXNwZWN0aXZlXG4gKiBwb3NpdGlvbmluZywgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBpbiB0aGUgaW5wdXQgYXJyYXkuIEFuIGlucHV0XG4gKiBzZXBhcmF0aW9uIGJ1ZmZlciBhZGRlZCB0byB0aGUgYW1vdW50IGluIGJvdGggZGlyZWN0aW9ucy4gV2UgYXNzdW1lIHRoYXRcbiAqIHRoZSB0d28gcmVjdGFuZ2xlcyBkbyBpbnRlcnNlY3QuXG4gKi9cbklHZW9tZXRyeS5jYWxjU2VwYXJhdGlvbkFtb3VudCA9IGZ1bmN0aW9uIChyZWN0QSwgcmVjdEIsIG92ZXJsYXBBbW91bnQsIHNlcGFyYXRpb25CdWZmZXIpIHtcbiAgaWYgKCFyZWN0QS5pbnRlcnNlY3RzKHJlY3RCKSkge1xuICAgIHRocm93IFwiYXNzZXJ0IGZhaWxlZFwiO1xuICB9XG5cbiAgdmFyIGRpcmVjdGlvbnMgPSBuZXcgQXJyYXkoMik7XG5cbiAgdGhpcy5kZWNpZGVEaXJlY3Rpb25zRm9yT3ZlcmxhcHBpbmdOb2RlcyhyZWN0QSwgcmVjdEIsIGRpcmVjdGlvbnMpO1xuXG4gIG92ZXJsYXBBbW91bnRbMF0gPSBNYXRoLm1pbihyZWN0QS5nZXRSaWdodCgpLCByZWN0Qi5nZXRSaWdodCgpKSAtIE1hdGgubWF4KHJlY3RBLngsIHJlY3RCLngpO1xuICBvdmVybGFwQW1vdW50WzFdID0gTWF0aC5taW4ocmVjdEEuZ2V0Qm90dG9tKCksIHJlY3RCLmdldEJvdHRvbSgpKSAtIE1hdGgubWF4KHJlY3RBLnksIHJlY3RCLnkpO1xuXG4gIC8vIHVwZGF0ZSB0aGUgb3ZlcmxhcHBpbmcgYW1vdW50cyBmb3IgdGhlIGZvbGxvd2luZyBjYXNlczpcbiAgaWYgKHJlY3RBLmdldFgoKSA8PSByZWN0Qi5nZXRYKCkgJiYgcmVjdEEuZ2V0UmlnaHQoKSA+PSByZWN0Qi5nZXRSaWdodCgpKSB7XG4gICAgLyogQ2FzZSB4LjE6XG4gICAgKlxuICAgICogcmVjdEFcbiAgICAqIFx0fCAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICogXHR8ICAgICAgICBfX19fX19fX18gICAgICB8XG4gICAgKiBcdHwgICAgICAgIHwgICAgICAgfCAgICAgIHxcbiAgICAqIFx0fF9fX19fX19ffF9fX19fX198X19fX19ffFxuICAgICogXHRcdFx0IHwgICAgICAgfFxuICAgICogICAgICAgICAgIHwgICAgICAgfFxuICAgICogICAgICAgIHJlY3RCXG4gICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzBdICs9IE1hdGgubWluKHJlY3RCLmdldFgoKSAtIHJlY3RBLmdldFgoKSwgcmVjdEEuZ2V0UmlnaHQoKSAtIHJlY3RCLmdldFJpZ2h0KCkpO1xuICB9IGVsc2UgaWYgKHJlY3RCLmdldFgoKSA8PSByZWN0QS5nZXRYKCkgJiYgcmVjdEIuZ2V0UmlnaHQoKSA+PSByZWN0QS5nZXRSaWdodCgpKSB7XG4gICAgLyogQ2FzZSB4LjI6XG4gICAgKlxuICAgICogcmVjdEJcbiAgICAqIFx0fCAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICogXHR8ICAgICAgICBfX19fX19fX18gICAgICB8XG4gICAgKiBcdHwgICAgICAgIHwgICAgICAgfCAgICAgIHxcbiAgICAqIFx0fF9fX19fX19ffF9fX19fX198X19fX19ffFxuICAgICogXHRcdFx0IHwgICAgICAgfFxuICAgICogICAgICAgICAgIHwgICAgICAgfFxuICAgICogICAgICAgIHJlY3RBXG4gICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzBdICs9IE1hdGgubWluKHJlY3RBLmdldFgoKSAtIHJlY3RCLmdldFgoKSwgcmVjdEIuZ2V0UmlnaHQoKSAtIHJlY3RBLmdldFJpZ2h0KCkpO1xuICB9XG4gIGlmIChyZWN0QS5nZXRZKCkgPD0gcmVjdEIuZ2V0WSgpICYmIHJlY3RBLmdldEJvdHRvbSgpID49IHJlY3RCLmdldEJvdHRvbSgpKSB7XG4gICAgLyogQ2FzZSB5LjE6XG4gICAgICogICAgICAgICAgX19fX19fX18gcmVjdEFcbiAgICAgKiAgICAgICAgIHxcbiAgICAgKiAgICAgICAgIHxcbiAgICAgKiAgIF9fX19fX3xfX19fICByZWN0QlxuICAgICAqICAgICAgICAgfCAgICB8XG4gICAgICogICAgICAgICB8ICAgIHxcbiAgICAgKiAgIF9fX19fX3xfX19ffFxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgICAgICAgfFxuICAgICAqICAgICAgICAgfF9fX19fX19fXG4gICAgICpcbiAgICAgKi9cbiAgICBvdmVybGFwQW1vdW50WzFdICs9IE1hdGgubWluKHJlY3RCLmdldFkoKSAtIHJlY3RBLmdldFkoKSwgcmVjdEEuZ2V0Qm90dG9tKCkgLSByZWN0Qi5nZXRCb3R0b20oKSk7XG4gIH0gZWxzZSBpZiAocmVjdEIuZ2V0WSgpIDw9IHJlY3RBLmdldFkoKSAmJiByZWN0Qi5nZXRCb3R0b20oKSA+PSByZWN0QS5nZXRCb3R0b20oKSkge1xuICAgIC8qIENhc2UgeS4yOlxuICAgICogICAgICAgICAgX19fX19fX18gcmVjdEJcbiAgICAqICAgICAgICAgfFxuICAgICogICAgICAgICB8XG4gICAgKiAgIF9fX19fX3xfX19fICByZWN0QVxuICAgICogICAgICAgICB8ICAgIHxcbiAgICAqICAgICAgICAgfCAgICB8XG4gICAgKiAgIF9fX19fX3xfX19ffFxuICAgICogICAgICAgICB8XG4gICAgKiAgICAgICAgIHxcbiAgICAqICAgICAgICAgfF9fX19fX19fXG4gICAgKlxuICAgICovXG4gICAgb3ZlcmxhcEFtb3VudFsxXSArPSBNYXRoLm1pbihyZWN0QS5nZXRZKCkgLSByZWN0Qi5nZXRZKCksIHJlY3RCLmdldEJvdHRvbSgpIC0gcmVjdEEuZ2V0Qm90dG9tKCkpO1xuICB9XG5cbiAgLy8gZmluZCBzbG9wZSBvZiB0aGUgbGluZSBwYXNzZXMgdHdvIGNlbnRlcnNcbiAgdmFyIHNsb3BlID0gTWF0aC5hYnMoKHJlY3RCLmdldENlbnRlclkoKSAtIHJlY3RBLmdldENlbnRlclkoKSkgLyAocmVjdEIuZ2V0Q2VudGVyWCgpIC0gcmVjdEEuZ2V0Q2VudGVyWCgpKSk7XG4gIC8vIGlmIGNlbnRlcnMgYXJlIG92ZXJsYXBwZWRcbiAgaWYgKHJlY3RCLmdldENlbnRlclkoKSA9PT0gcmVjdEEuZ2V0Q2VudGVyWSgpICYmIHJlY3RCLmdldENlbnRlclgoKSA9PT0gcmVjdEEuZ2V0Q2VudGVyWCgpKSB7XG4gICAgLy8gYXNzdW1lIHRoZSBzbG9wZSBpcyAxICg0NSBkZWdyZWUpXG4gICAgc2xvcGUgPSAxLjA7XG4gIH1cblxuICB2YXIgbW92ZUJ5WSA9IHNsb3BlICogb3ZlcmxhcEFtb3VudFswXTtcbiAgdmFyIG1vdmVCeVggPSBvdmVybGFwQW1vdW50WzFdIC8gc2xvcGU7XG4gIGlmIChvdmVybGFwQW1vdW50WzBdIDwgbW92ZUJ5WCkge1xuICAgIG1vdmVCeVggPSBvdmVybGFwQW1vdW50WzBdO1xuICB9IGVsc2Uge1xuICAgIG1vdmVCeVkgPSBvdmVybGFwQW1vdW50WzFdO1xuICB9XG4gIC8vIHJldHVybiBoYWxmIHRoZSBhbW91bnQgc28gdGhhdCBpZiBlYWNoIHJlY3RhbmdsZSBpcyBtb3ZlZCBieSB0aGVzZVxuICAvLyBhbW91bnRzIGluIG9wcG9zaXRlIGRpcmVjdGlvbnMsIG92ZXJsYXAgd2lsbCBiZSByZXNvbHZlZFxuICBvdmVybGFwQW1vdW50WzBdID0gLTEgKiBkaXJlY3Rpb25zWzBdICogKG1vdmVCeVggLyAyICsgc2VwYXJhdGlvbkJ1ZmZlcik7XG4gIG92ZXJsYXBBbW91bnRbMV0gPSAtMSAqIGRpcmVjdGlvbnNbMV0gKiAobW92ZUJ5WSAvIDIgKyBzZXBhcmF0aW9uQnVmZmVyKTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgZGVjaWRlcyB0aGUgc2VwYXJhdGlvbiBkaXJlY3Rpb24gb2Ygb3ZlcmxhcHBpbmcgbm9kZXNcbiAqXG4gKiBpZiBkaXJlY3Rpb25zWzBdID0gLTEsIHRoZW4gcmVjdEEgZ29lcyBsZWZ0XG4gKiBpZiBkaXJlY3Rpb25zWzBdID0gMSwgIHRoZW4gcmVjdEEgZ29lcyByaWdodFxuICogaWYgZGlyZWN0aW9uc1sxXSA9IC0xLCB0aGVuIHJlY3RBIGdvZXMgdXBcbiAqIGlmIGRpcmVjdGlvbnNbMV0gPSAxLCAgdGhlbiByZWN0QSBnb2VzIGRvd25cbiAqL1xuSUdlb21ldHJ5LmRlY2lkZURpcmVjdGlvbnNGb3JPdmVybGFwcGluZ05vZGVzID0gZnVuY3Rpb24gKHJlY3RBLCByZWN0QiwgZGlyZWN0aW9ucykge1xuICBpZiAocmVjdEEuZ2V0Q2VudGVyWCgpIDwgcmVjdEIuZ2V0Q2VudGVyWCgpKSB7XG4gICAgZGlyZWN0aW9uc1swXSA9IC0xO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdGlvbnNbMF0gPSAxO1xuICB9XG5cbiAgaWYgKHJlY3RBLmdldENlbnRlclkoKSA8IHJlY3RCLmdldENlbnRlclkoKSkge1xuICAgIGRpcmVjdGlvbnNbMV0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICBkaXJlY3Rpb25zWzFdID0gMTtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIHRoZSBpbnRlcnNlY3Rpb24gKGNsaXBwaW5nKSBwb2ludHMgb2YgdGhlIHR3b1xuICogaW5wdXQgcmVjdGFuZ2xlcyB3aXRoIGxpbmUgc2VnbWVudCBkZWZpbmVkIGJ5IHRoZSBjZW50ZXJzIG9mIHRoZXNlIHR3b1xuICogcmVjdGFuZ2xlcy4gVGhlIGNsaXBwaW5nIHBvaW50cyBhcmUgc2F2ZWQgaW4gdGhlIGlucHV0IGRvdWJsZSBhcnJheSBhbmRcbiAqIHdoZXRoZXIgb3Igbm90IHRoZSB0d28gcmVjdGFuZ2xlcyBvdmVybGFwIGlzIHJldHVybmVkLlxuICovXG5JR2VvbWV0cnkuZ2V0SW50ZXJzZWN0aW9uMiA9IGZ1bmN0aW9uIChyZWN0QSwgcmVjdEIsIHJlc3VsdCkge1xuICAvL3Jlc3VsdFswLTFdIHdpbGwgY29udGFpbiBjbGlwUG9pbnQgb2YgcmVjdEEsIHJlc3VsdFsyLTNdIHdpbGwgY29udGFpbiBjbGlwUG9pbnQgb2YgcmVjdEJcbiAgdmFyIHAxeCA9IHJlY3RBLmdldENlbnRlclgoKTtcbiAgdmFyIHAxeSA9IHJlY3RBLmdldENlbnRlclkoKTtcbiAgdmFyIHAyeCA9IHJlY3RCLmdldENlbnRlclgoKTtcbiAgdmFyIHAyeSA9IHJlY3RCLmdldENlbnRlclkoKTtcblxuICAvL2lmIHR3byByZWN0YW5nbGVzIGludGVyc2VjdCwgdGhlbiBjbGlwcGluZyBwb2ludHMgYXJlIGNlbnRlcnNcbiAgaWYgKHJlY3RBLmludGVyc2VjdHMocmVjdEIpKSB7XG4gICAgcmVzdWx0WzBdID0gcDF4O1xuICAgIHJlc3VsdFsxXSA9IHAxeTtcbiAgICByZXN1bHRbMl0gPSBwMng7XG4gICAgcmVzdWx0WzNdID0gcDJ5O1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIC8vdmFyaWFibGVzIGZvciByZWN0QVxuICB2YXIgdG9wTGVmdEF4ID0gcmVjdEEuZ2V0WCgpO1xuICB2YXIgdG9wTGVmdEF5ID0gcmVjdEEuZ2V0WSgpO1xuICB2YXIgdG9wUmlnaHRBeCA9IHJlY3RBLmdldFJpZ2h0KCk7XG4gIHZhciBib3R0b21MZWZ0QXggPSByZWN0QS5nZXRYKCk7XG4gIHZhciBib3R0b21MZWZ0QXkgPSByZWN0QS5nZXRCb3R0b20oKTtcbiAgdmFyIGJvdHRvbVJpZ2h0QXggPSByZWN0QS5nZXRSaWdodCgpO1xuICB2YXIgaGFsZldpZHRoQSA9IHJlY3RBLmdldFdpZHRoSGFsZigpO1xuICB2YXIgaGFsZkhlaWdodEEgPSByZWN0QS5nZXRIZWlnaHRIYWxmKCk7XG4gIC8vdmFyaWFibGVzIGZvciByZWN0QlxuICB2YXIgdG9wTGVmdEJ4ID0gcmVjdEIuZ2V0WCgpO1xuICB2YXIgdG9wTGVmdEJ5ID0gcmVjdEIuZ2V0WSgpO1xuICB2YXIgdG9wUmlnaHRCeCA9IHJlY3RCLmdldFJpZ2h0KCk7XG4gIHZhciBib3R0b21MZWZ0QnggPSByZWN0Qi5nZXRYKCk7XG4gIHZhciBib3R0b21MZWZ0QnkgPSByZWN0Qi5nZXRCb3R0b20oKTtcbiAgdmFyIGJvdHRvbVJpZ2h0QnggPSByZWN0Qi5nZXRSaWdodCgpO1xuICB2YXIgaGFsZldpZHRoQiA9IHJlY3RCLmdldFdpZHRoSGFsZigpO1xuICB2YXIgaGFsZkhlaWdodEIgPSByZWN0Qi5nZXRIZWlnaHRIYWxmKCk7XG5cbiAgLy9mbGFnIHdoZXRoZXIgY2xpcHBpbmcgcG9pbnRzIGFyZSBmb3VuZFxuICB2YXIgY2xpcFBvaW50QUZvdW5kID0gZmFsc2U7XG4gIHZhciBjbGlwUG9pbnRCRm91bmQgPSBmYWxzZTtcblxuICAvLyBsaW5lIGlzIHZlcnRpY2FsXG4gIGlmIChwMXggPT09IHAyeCkge1xuICAgIGlmIChwMXkgPiBwMnkpIHtcbiAgICAgIHJlc3VsdFswXSA9IHAxeDtcbiAgICAgIHJlc3VsdFsxXSA9IHRvcExlZnRBeTtcbiAgICAgIHJlc3VsdFsyXSA9IHAyeDtcbiAgICAgIHJlc3VsdFszXSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHAxeSA8IHAyeSkge1xuICAgICAgcmVzdWx0WzBdID0gcDF4O1xuICAgICAgcmVzdWx0WzFdID0gYm90dG9tTGVmdEF5O1xuICAgICAgcmVzdWx0WzJdID0gcDJ4O1xuICAgICAgcmVzdWx0WzNdID0gdG9wTGVmdEJ5O1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL25vdCBsaW5lLCByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gbGluZSBpcyBob3Jpem9udGFsXG4gIGVsc2UgaWYgKHAxeSA9PT0gcDJ5KSB7XG4gICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgIHJlc3VsdFswXSA9IHRvcExlZnRBeDtcbiAgICAgICAgcmVzdWx0WzFdID0gcDF5O1xuICAgICAgICByZXN1bHRbMl0gPSB0b3BSaWdodEJ4O1xuICAgICAgICByZXN1bHRbM10gPSBwMnk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAocDF4IDwgcDJ4KSB7XG4gICAgICAgIHJlc3VsdFswXSA9IHRvcFJpZ2h0QXg7XG4gICAgICAgIHJlc3VsdFsxXSA9IHAxeTtcbiAgICAgICAgcmVzdWx0WzJdID0gdG9wTGVmdEJ4O1xuICAgICAgICByZXN1bHRbM10gPSBwMnk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vbm90IHZhbGlkIGxpbmUsIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvL3Nsb3BlcyBvZiByZWN0QSdzIGFuZCByZWN0QidzIGRpYWdvbmFsc1xuICAgICAgdmFyIHNsb3BlQSA9IHJlY3RBLmhlaWdodCAvIHJlY3RBLndpZHRoO1xuICAgICAgdmFyIHNsb3BlQiA9IHJlY3RCLmhlaWdodCAvIHJlY3RCLndpZHRoO1xuXG4gICAgICAvL3Nsb3BlIG9mIGxpbmUgYmV0d2VlbiBjZW50ZXIgb2YgcmVjdEEgYW5kIGNlbnRlciBvZiByZWN0QlxuICAgICAgdmFyIHNsb3BlUHJpbWUgPSAocDJ5IC0gcDF5KSAvIChwMnggLSBwMXgpO1xuICAgICAgdmFyIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHZvaWQgMDtcbiAgICAgIHZhciBjYXJkaW5hbERpcmVjdGlvbkIgPSB2b2lkIDA7XG4gICAgICB2YXIgdGVtcFBvaW50QXggPSB2b2lkIDA7XG4gICAgICB2YXIgdGVtcFBvaW50QXkgPSB2b2lkIDA7XG4gICAgICB2YXIgdGVtcFBvaW50QnggPSB2b2lkIDA7XG4gICAgICB2YXIgdGVtcFBvaW50QnkgPSB2b2lkIDA7XG5cbiAgICAgIC8vZGV0ZXJtaW5lIHdoZXRoZXIgY2xpcHBpbmcgcG9pbnQgaXMgdGhlIGNvcm5lciBvZiBub2RlQVxuICAgICAgaWYgKC1zbG9wZUEgPT09IHNsb3BlUHJpbWUpIHtcbiAgICAgICAgaWYgKHAxeCA+IHAyeCkge1xuICAgICAgICAgIHJlc3VsdFswXSA9IGJvdHRvbUxlZnRBeDtcbiAgICAgICAgICByZXN1bHRbMV0gPSBib3R0b21MZWZ0QXk7XG4gICAgICAgICAgY2xpcFBvaW50QUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRbMF0gPSB0b3BSaWdodEF4O1xuICAgICAgICAgIHJlc3VsdFsxXSA9IHRvcExlZnRBeTtcbiAgICAgICAgICBjbGlwUG9pbnRBRm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNsb3BlQSA9PT0gc2xvcGVQcmltZSkge1xuICAgICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgICAgcmVzdWx0WzBdID0gdG9wTGVmdEF4O1xuICAgICAgICAgIHJlc3VsdFsxXSA9IHRvcExlZnRBeTtcbiAgICAgICAgICBjbGlwUG9pbnRBRm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFswXSA9IGJvdHRvbVJpZ2h0QXg7XG4gICAgICAgICAgcmVzdWx0WzFdID0gYm90dG9tTGVmdEF5O1xuICAgICAgICAgIGNsaXBQb2ludEFGb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy9kZXRlcm1pbmUgd2hldGhlciBjbGlwcGluZyBwb2ludCBpcyB0aGUgY29ybmVyIG9mIG5vZGVCXG4gICAgICBpZiAoLXNsb3BlQiA9PT0gc2xvcGVQcmltZSkge1xuICAgICAgICBpZiAocDJ4ID4gcDF4KSB7XG4gICAgICAgICAgcmVzdWx0WzJdID0gYm90dG9tTGVmdEJ4O1xuICAgICAgICAgIHJlc3VsdFszXSA9IGJvdHRvbUxlZnRCeTtcbiAgICAgICAgICBjbGlwUG9pbnRCRm91bmQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFsyXSA9IHRvcFJpZ2h0Qng7XG4gICAgICAgICAgcmVzdWx0WzNdID0gdG9wTGVmdEJ5O1xuICAgICAgICAgIGNsaXBQb2ludEJGb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc2xvcGVCID09PSBzbG9wZVByaW1lKSB7XG4gICAgICAgIGlmIChwMnggPiBwMXgpIHtcbiAgICAgICAgICByZXN1bHRbMl0gPSB0b3BMZWZ0Qng7XG4gICAgICAgICAgcmVzdWx0WzNdID0gdG9wTGVmdEJ5O1xuICAgICAgICAgIGNsaXBQb2ludEJGb3VuZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WzJdID0gYm90dG9tUmlnaHRCeDtcbiAgICAgICAgICByZXN1bHRbM10gPSBib3R0b21MZWZ0Qnk7XG4gICAgICAgICAgY2xpcFBvaW50QkZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2lmIGJvdGggY2xpcHBpbmcgcG9pbnRzIGFyZSBjb3JuZXJzXG4gICAgICBpZiAoY2xpcFBvaW50QUZvdW5kICYmIGNsaXBQb2ludEJGb3VuZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vZGV0ZXJtaW5lIENhcmRpbmFsIERpcmVjdGlvbiBvZiByZWN0YW5nbGVzXG4gICAgICBpZiAocDF4ID4gcDJ4KSB7XG4gICAgICAgIGlmIChwMXkgPiBwMnkpIHtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkEgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQSwgc2xvcGVQcmltZSwgNCk7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25CID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbihzbG9wZUIsIHNsb3BlUHJpbWUsIDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oLXNsb3BlQSwgc2xvcGVQcmltZSwgMyk7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25CID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVCLCBzbG9wZVByaW1lLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHAxeSA+IHAyeSkge1xuICAgICAgICAgIGNhcmRpbmFsRGlyZWN0aW9uQSA9IHRoaXMuZ2V0Q2FyZGluYWxEaXJlY3Rpb24oLXNsb3BlQSwgc2xvcGVQcmltZSwgMSk7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25CID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbigtc2xvcGVCLCBzbG9wZVByaW1lLCAzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYXJkaW5hbERpcmVjdGlvbkEgPSB0aGlzLmdldENhcmRpbmFsRGlyZWN0aW9uKHNsb3BlQSwgc2xvcGVQcmltZSwgMik7XG4gICAgICAgICAgY2FyZGluYWxEaXJlY3Rpb25CID0gdGhpcy5nZXRDYXJkaW5hbERpcmVjdGlvbihzbG9wZUIsIHNsb3BlUHJpbWUsIDQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL2NhbGN1bGF0ZSBjbGlwcGluZyBQb2ludCBpZiBpdCBpcyBub3QgZm91bmQgYmVmb3JlXG4gICAgICBpZiAoIWNsaXBQb2ludEFGb3VuZCkge1xuICAgICAgICBzd2l0Y2ggKGNhcmRpbmFsRGlyZWN0aW9uQSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHRlbXBQb2ludEF5ID0gdG9wTGVmdEF5O1xuICAgICAgICAgICAgdGVtcFBvaW50QXggPSBwMXggKyAtaGFsZkhlaWdodEEgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzBdID0gdGVtcFBvaW50QXg7XG4gICAgICAgICAgICByZXN1bHRbMV0gPSB0ZW1wUG9pbnRBeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRlbXBQb2ludEF4ID0gYm90dG9tUmlnaHRBeDtcbiAgICAgICAgICAgIHRlbXBQb2ludEF5ID0gcDF5ICsgaGFsZldpZHRoQSAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMF0gPSB0ZW1wUG9pbnRBeDtcbiAgICAgICAgICAgIHJlc3VsdFsxXSA9IHRlbXBQb2ludEF5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGVtcFBvaW50QXkgPSBib3R0b21MZWZ0QXk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeCA9IHAxeCArIGhhbGZIZWlnaHRBIC8gc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFswXSA9IHRlbXBQb2ludEF4O1xuICAgICAgICAgICAgcmVzdWx0WzFdID0gdGVtcFBvaW50QXk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICB0ZW1wUG9pbnRBeCA9IGJvdHRvbUxlZnRBeDtcbiAgICAgICAgICAgIHRlbXBQb2ludEF5ID0gcDF5ICsgLWhhbGZXaWR0aEEgKiBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzBdID0gdGVtcFBvaW50QXg7XG4gICAgICAgICAgICByZXN1bHRbMV0gPSB0ZW1wUG9pbnRBeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWNsaXBQb2ludEJGb3VuZCkge1xuICAgICAgICBzd2l0Y2ggKGNhcmRpbmFsRGlyZWN0aW9uQikge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHRlbXBQb2ludEJ5ID0gdG9wTGVmdEJ5O1xuICAgICAgICAgICAgdGVtcFBvaW50QnggPSBwMnggKyAtaGFsZkhlaWdodEIgLyBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzJdID0gdGVtcFBvaW50Qng7XG4gICAgICAgICAgICByZXN1bHRbM10gPSB0ZW1wUG9pbnRCeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRlbXBQb2ludEJ4ID0gYm90dG9tUmlnaHRCeDtcbiAgICAgICAgICAgIHRlbXBQb2ludEJ5ID0gcDJ5ICsgaGFsZldpZHRoQiAqIHNsb3BlUHJpbWU7XG4gICAgICAgICAgICByZXN1bHRbMl0gPSB0ZW1wUG9pbnRCeDtcbiAgICAgICAgICAgIHJlc3VsdFszXSA9IHRlbXBQb2ludEJ5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGVtcFBvaW50QnkgPSBib3R0b21MZWZ0Qnk7XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeCA9IHAyeCArIGhhbGZIZWlnaHRCIC8gc2xvcGVQcmltZTtcbiAgICAgICAgICAgIHJlc3VsdFsyXSA9IHRlbXBQb2ludEJ4O1xuICAgICAgICAgICAgcmVzdWx0WzNdID0gdGVtcFBvaW50Qnk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICB0ZW1wUG9pbnRCeCA9IGJvdHRvbUxlZnRCeDtcbiAgICAgICAgICAgIHRlbXBQb2ludEJ5ID0gcDJ5ICsgLWhhbGZXaWR0aEIgKiBzbG9wZVByaW1lO1xuICAgICAgICAgICAgcmVzdWx0WzJdID0gdGVtcFBvaW50Qng7XG4gICAgICAgICAgICByZXN1bHRbM10gPSB0ZW1wUG9pbnRCeTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgaW4gd2hpY2ggY2FyZGluYWwgZGlyZWN0aW9uIGRvZXMgaW5wdXQgcG9pbnQgc3RheXNcbiAqIDE6IE5vcnRoXG4gKiAyOiBFYXN0XG4gKiAzOiBTb3V0aFxuICogNDogV2VzdFxuICovXG5JR2VvbWV0cnkuZ2V0Q2FyZGluYWxEaXJlY3Rpb24gPSBmdW5jdGlvbiAoc2xvcGUsIHNsb3BlUHJpbWUsIGxpbmUpIHtcbiAgaWYgKHNsb3BlID4gc2xvcGVQcmltZSkge1xuICAgIHJldHVybiBsaW5lO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAxICsgbGluZSAlIDQ7XG4gIH1cbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgY2FsY3VsYXRlcyB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSB0d28gbGluZXMgZGVmaW5lZCBieVxuICogcG9pbnQgcGFpcnMgKHMxLHMyKSBhbmQgKGYxLGYyKS5cbiAqL1xuSUdlb21ldHJ5LmdldEludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChzMSwgczIsIGYxLCBmMikge1xuICBpZiAoZjIgPT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEludGVyc2VjdGlvbjIoczEsIHMyLCBmMSk7XG4gIH1cblxuICB2YXIgeDEgPSBzMS54O1xuICB2YXIgeTEgPSBzMS55O1xuICB2YXIgeDIgPSBzMi54O1xuICB2YXIgeTIgPSBzMi55O1xuICB2YXIgeDMgPSBmMS54O1xuICB2YXIgeTMgPSBmMS55O1xuICB2YXIgeDQgPSBmMi54O1xuICB2YXIgeTQgPSBmMi55O1xuICB2YXIgeCA9IHZvaWQgMCxcbiAgICAgIHkgPSB2b2lkIDA7IC8vIGludGVyc2VjdGlvbiBwb2ludFxuICB2YXIgYTEgPSB2b2lkIDAsXG4gICAgICBhMiA9IHZvaWQgMCxcbiAgICAgIGIxID0gdm9pZCAwLFxuICAgICAgYjIgPSB2b2lkIDAsXG4gICAgICBjMSA9IHZvaWQgMCxcbiAgICAgIGMyID0gdm9pZCAwOyAvLyBjb2VmZmljaWVudHMgb2YgbGluZSBlcW5zLlxuICB2YXIgZGVub20gPSB2b2lkIDA7XG5cbiAgYTEgPSB5MiAtIHkxO1xuICBiMSA9IHgxIC0geDI7XG4gIGMxID0geDIgKiB5MSAtIHgxICogeTI7IC8vIHsgYTEqeCArIGIxKnkgKyBjMSA9IDAgaXMgbGluZSAxIH1cblxuICBhMiA9IHk0IC0geTM7XG4gIGIyID0geDMgLSB4NDtcbiAgYzIgPSB4NCAqIHkzIC0geDMgKiB5NDsgLy8geyBhMip4ICsgYjIqeSArIGMyID0gMCBpcyBsaW5lIDIgfVxuXG4gIGRlbm9tID0gYTEgKiBiMiAtIGEyICogYjE7XG5cbiAgaWYgKGRlbm9tID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB4ID0gKGIxICogYzIgLSBiMiAqIGMxKSAvIGRlbm9tO1xuICB5ID0gKGEyICogYzEgLSBhMSAqIGMyKSAvIGRlbm9tO1xuXG4gIHJldHVybiBuZXcgUG9pbnQoeCwgeSk7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGZpbmRzIGFuZCByZXR1cm5zIHRoZSBhbmdsZSBvZiB0aGUgdmVjdG9yIGZyb20gdGhlICsgeC1heGlzXG4gKiBpbiBjbG9ja3dpc2UgZGlyZWN0aW9uIChjb21wYXRpYmxlIHcvIEphdmEgY29vcmRpbmF0ZSBzeXN0ZW0hKS5cbiAqL1xuSUdlb21ldHJ5LmFuZ2xlT2ZWZWN0b3IgPSBmdW5jdGlvbiAoQ3gsIEN5LCBOeCwgTnkpIHtcbiAgdmFyIENfYW5nbGUgPSB2b2lkIDA7XG5cbiAgaWYgKEN4ICE9PSBOeCkge1xuICAgIENfYW5nbGUgPSBNYXRoLmF0YW4oKE55IC0gQ3kpIC8gKE54IC0gQ3gpKTtcblxuICAgIGlmIChOeCA8IEN4KSB7XG4gICAgICBDX2FuZ2xlICs9IE1hdGguUEk7XG4gICAgfSBlbHNlIGlmIChOeSA8IEN5KSB7XG4gICAgICBDX2FuZ2xlICs9IHRoaXMuVFdPX1BJO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOeSA8IEN5KSB7XG4gICAgQ19hbmdsZSA9IHRoaXMuT05FX0FORF9IQUxGX1BJOyAvLyAyNzAgZGVncmVlc1xuICB9IGVsc2Uge1xuICAgIENfYW5nbGUgPSB0aGlzLkhBTEZfUEk7IC8vIDkwIGRlZ3JlZXNcbiAgfVxuXG4gIHJldHVybiBDX2FuZ2xlO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBjaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gdHdvIGxpbmUgc2VnbWVudHMgKG9uZSB3aXRoIHBvaW50XG4gKiBwMSBhbmQgcDIsIHRoZSBvdGhlciB3aXRoIHBvaW50IHAzIGFuZCBwNCkgaW50ZXJzZWN0IGF0IGEgcG9pbnQgb3RoZXJcbiAqIHRoYW4gdGhlc2UgcG9pbnRzLlxuICovXG5JR2VvbWV0cnkuZG9JbnRlcnNlY3QgPSBmdW5jdGlvbiAocDEsIHAyLCBwMywgcDQpIHtcbiAgdmFyIGEgPSBwMS54O1xuICB2YXIgYiA9IHAxLnk7XG4gIHZhciBjID0gcDIueDtcbiAgdmFyIGQgPSBwMi55O1xuICB2YXIgcCA9IHAzLng7XG4gIHZhciBxID0gcDMueTtcbiAgdmFyIHIgPSBwNC54O1xuICB2YXIgcyA9IHA0Lnk7XG4gIHZhciBkZXQgPSAoYyAtIGEpICogKHMgLSBxKSAtIChyIC0gcCkgKiAoZCAtIGIpO1xuXG4gIGlmIChkZXQgPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxhbWJkYSA9ICgocyAtIHEpICogKHIgLSBhKSArIChwIC0gcikgKiAocyAtIGIpKSAvIGRldDtcbiAgICB2YXIgZ2FtbWEgPSAoKGIgLSBkKSAqIChyIC0gYSkgKyAoYyAtIGEpICogKHMgLSBiKSkgLyBkZXQ7XG4gICAgcmV0dXJuIDAgPCBsYW1iZGEgJiYgbGFtYmRhIDwgMSAmJiAwIDwgZ2FtbWEgJiYgZ2FtbWEgPCAxO1xuICB9XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogQ2xhc3MgQ29uc3RhbnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyoqXG4gKiBTb21lIHVzZWZ1bCBwcmUtY2FsY3VsYXRlZCBjb25zdGFudHNcbiAqL1xuSUdlb21ldHJ5LkhBTEZfUEkgPSAwLjUgKiBNYXRoLlBJO1xuSUdlb21ldHJ5Lk9ORV9BTkRfSEFMRl9QSSA9IDEuNSAqIE1hdGguUEk7XG5JR2VvbWV0cnkuVFdPX1BJID0gMi4wICogTWF0aC5QSTtcbklHZW9tZXRyeS5USFJFRV9QSSA9IDMuMCAqIE1hdGguUEk7XG5cbm1vZHVsZS5leHBvcnRzID0gSUdlb21ldHJ5O1xuXG4vKioqLyB9KSxcbi8qIDkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gSU1hdGgoKSB7fVxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNpZ24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5JTWF0aC5zaWduID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA+IDApIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIGlmICh2YWx1ZSA8IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbklNYXRoLmZsb29yID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA8IDAgPyBNYXRoLmNlaWwodmFsdWUpIDogTWF0aC5mbG9vcih2YWx1ZSk7XG59O1xuXG5JTWF0aC5jZWlsID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA8IDAgPyBNYXRoLmZsb29yKHZhbHVlKSA6IE1hdGguY2VpbCh2YWx1ZSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IElNYXRoO1xuXG4vKioqLyB9KSxcbi8qIDEwICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIEludGVnZXIoKSB7fVxuXG5JbnRlZ2VyLk1BWF9WQUxVRSA9IDIxNDc0ODM2NDc7XG5JbnRlZ2VyLk1JTl9WQUxVRSA9IC0yMTQ3NDgzNjQ4O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVnZXI7XG5cbi8qKiovIH0pLFxuLyogMTEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIG5vZGVGcm9tID0gZnVuY3Rpb24gbm9kZUZyb20odmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBuZXh0OiBudWxsLCBwcmV2OiBudWxsIH07XG59O1xuXG52YXIgYWRkID0gZnVuY3Rpb24gYWRkKHByZXYsIG5vZGUsIG5leHQsIGxpc3QpIHtcbiAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICBwcmV2Lm5leHQgPSBub2RlO1xuICB9IGVsc2Uge1xuICAgIGxpc3QuaGVhZCA9IG5vZGU7XG4gIH1cblxuICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgIG5leHQucHJldiA9IG5vZGU7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC50YWlsID0gbm9kZTtcbiAgfVxuXG4gIG5vZGUucHJldiA9IHByZXY7XG4gIG5vZGUubmV4dCA9IG5leHQ7XG5cbiAgbGlzdC5sZW5ndGgrKztcblxuICByZXR1cm4gbm9kZTtcbn07XG5cbnZhciBfcmVtb3ZlID0gZnVuY3Rpb24gX3JlbW92ZShub2RlLCBsaXN0KSB7XG4gIHZhciBwcmV2ID0gbm9kZS5wcmV2LFxuICAgICAgbmV4dCA9IG5vZGUubmV4dDtcblxuXG4gIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LmhlYWQgPSBuZXh0O1xuICB9XG5cbiAgaWYgKG5leHQgIT09IG51bGwpIHtcbiAgICBuZXh0LnByZXYgPSBwcmV2O1xuICB9IGVsc2Uge1xuICAgIGxpc3QudGFpbCA9IHByZXY7XG4gIH1cblxuICBub2RlLnByZXYgPSBub2RlLm5leHQgPSBudWxsO1xuXG4gIGxpc3QubGVuZ3RoLS07XG5cbiAgcmV0dXJuIG5vZGU7XG59O1xuXG52YXIgTGlua2VkTGlzdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTGlua2VkTGlzdCh2YWxzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMaW5rZWRMaXN0KTtcblxuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG5cbiAgICBpZiAodmFscyAhPSBudWxsKSB7XG4gICAgICB2YWxzLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnB1c2godik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGlua2VkTGlzdCwgW3tcbiAgICBrZXk6IFwic2l6ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnRCZWZvcmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHZhbCwgb3RoZXJOb2RlKSB7XG4gICAgICByZXR1cm4gYWRkKG90aGVyTm9kZS5wcmV2LCBub2RlRnJvbSh2YWwpLCBvdGhlck5vZGUsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpbnNlcnRBZnRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnNlcnRBZnRlcih2YWwsIG90aGVyTm9kZSkge1xuICAgICAgcmV0dXJuIGFkZChvdGhlck5vZGUsIG5vZGVGcm9tKHZhbCksIG90aGVyTm9kZS5uZXh0LCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5zZXJ0Tm9kZUJlZm9yZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbnNlcnROb2RlQmVmb3JlKG5ld05vZGUsIG90aGVyTm9kZSkge1xuICAgICAgcmV0dXJuIGFkZChvdGhlck5vZGUucHJldiwgbmV3Tm9kZSwgb3RoZXJOb2RlLCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaW5zZXJ0Tm9kZUFmdGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluc2VydE5vZGVBZnRlcihuZXdOb2RlLCBvdGhlck5vZGUpIHtcbiAgICAgIHJldHVybiBhZGQob3RoZXJOb2RlLCBuZXdOb2RlLCBvdGhlck5vZGUubmV4dCwgdGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1c2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHVzaCh2YWwpIHtcbiAgICAgIHJldHVybiBhZGQodGhpcy50YWlsLCBub2RlRnJvbSh2YWwpLCBudWxsLCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5zaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnNoaWZ0KHZhbCkge1xuICAgICAgcmV0dXJuIGFkZChudWxsLCBub2RlRnJvbSh2YWwpLCB0aGlzLmhlYWQsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlKG5vZGUpIHtcbiAgICAgIHJldHVybiBfcmVtb3ZlKG5vZGUsIHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwb3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcG9wKCkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUodGhpcy50YWlsLCB0aGlzKS52YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicG9wTm9kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwb3BOb2RlKCkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUodGhpcy50YWlsLCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hpZnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnQoKSB7XG4gICAgICByZXR1cm4gX3JlbW92ZSh0aGlzLmhlYWQsIHRoaXMpLnZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdE5vZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnROb2RlKCkge1xuICAgICAgcmV0dXJuIF9yZW1vdmUodGhpcy5oZWFkLCB0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0X29iamVjdF9hdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRfb2JqZWN0X2F0KGluZGV4KSB7XG4gICAgICBpZiAoaW5kZXggPD0gdGhpcy5sZW5ndGgoKSkge1xuICAgICAgICB2YXIgaSA9IDE7XG4gICAgICAgIHZhciBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgICAgICB3aGlsZSAoaSA8IGluZGV4KSB7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldF9vYmplY3RfYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0X29iamVjdF9hdChpbmRleCwgdmFsdWUpIHtcbiAgICAgIGlmIChpbmRleCA8PSB0aGlzLmxlbmd0aCgpKSB7XG4gICAgICAgIHZhciBpID0gMTtcbiAgICAgICAgdmFyIGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChpIDwgaW5kZXgpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExpbmtlZExpc3Q7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlua2VkTGlzdDtcblxuLyoqKi8gfSksXG4vKiAxMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG4vKlxyXG4gKlRoaXMgY2xhc3MgaXMgdGhlIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBvaW50LmphdmEgY2xhc3MgaW4gamRrXHJcbiAqL1xuZnVuY3Rpb24gUG9pbnQoeCwgeSwgcCkge1xuICB0aGlzLnggPSBudWxsO1xuICB0aGlzLnkgPSBudWxsO1xuICBpZiAoeCA9PSBudWxsICYmIHkgPT0gbnVsbCAmJiBwID09IG51bGwpIHtcbiAgICB0aGlzLnggPSAwO1xuICAgIHRoaXMueSA9IDA7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gJ251bWJlcicgJiYgdHlwZW9mIHkgPT0gJ251bWJlcicgJiYgcCA9PSBudWxsKSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9IGVsc2UgaWYgKHguY29uc3RydWN0b3IubmFtZSA9PSAnUG9pbnQnICYmIHkgPT0gbnVsbCAmJiBwID09IG51bGwpIHtcbiAgICBwID0geDtcbiAgICB0aGlzLnggPSBwLng7XG4gICAgdGhpcy55ID0gcC55O1xuICB9XG59XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy54O1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0TG9jYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcy54LCB0aGlzLnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnNldExvY2F0aW9uID0gZnVuY3Rpb24gKHgsIHksIHApIHtcbiAgaWYgKHguY29uc3RydWN0b3IubmFtZSA9PSAnUG9pbnQnICYmIHkgPT0gbnVsbCAmJiBwID09IG51bGwpIHtcbiAgICBwID0geDtcbiAgICB0aGlzLnNldExvY2F0aW9uKHAueCwgcC55KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSAnbnVtYmVyJyAmJiB0eXBlb2YgeSA9PSAnbnVtYmVyJyAmJiBwID09IG51bGwpIHtcbiAgICAvL2lmIGJvdGggcGFyYW1ldGVycyBhcmUgaW50ZWdlciBqdXN0IG1vdmUgKHgseSkgbG9jYXRpb25cbiAgICBpZiAocGFyc2VJbnQoeCkgPT0geCAmJiBwYXJzZUludCh5KSA9PSB5KSB7XG4gICAgICB0aGlzLm1vdmUoeCwgeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMueCA9IE1hdGguZmxvb3IoeCArIDAuNSk7XG4gICAgICB0aGlzLnkgPSBNYXRoLmZsb29yKHkgKyAwLjUpO1xuICAgIH1cbiAgfVxufTtcblxuUG9pbnQucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICB0aGlzLnggPSB4O1xuICB0aGlzLnkgPSB5O1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChkeCwgZHkpIHtcbiAgdGhpcy54ICs9IGR4O1xuICB0aGlzLnkgKz0gZHk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKG9iaikge1xuICBpZiAob2JqLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJQb2ludFwiKSB7XG4gICAgdmFyIHB0ID0gb2JqO1xuICAgIHJldHVybiB0aGlzLnggPT0gcHQueCAmJiB0aGlzLnkgPT0gcHQueTtcbiAgfVxuICByZXR1cm4gdGhpcyA9PSBvYmo7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgUG9pbnQoKS5jb25zdHJ1Y3Rvci5uYW1lICsgXCJbeD1cIiArIHRoaXMueCArIFwiLHk9XCIgKyB0aGlzLnkgKyBcIl1cIjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUG9pbnQ7XG5cbi8qKiovIH0pLFxuLyogMTMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gUmVjdGFuZ2xlRCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHRoaXMueCA9IDA7XG4gIHRoaXMueSA9IDA7XG4gIHRoaXMud2lkdGggPSAwO1xuICB0aGlzLmhlaWdodCA9IDA7XG5cbiAgaWYgKHggIT0gbnVsbCAmJiB5ICE9IG51bGwgJiYgd2lkdGggIT0gbnVsbCAmJiBoZWlnaHQgIT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cbn1cblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueDtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICB0aGlzLnggPSB4O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICB0aGlzLnkgPSB5O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLndpZHRoO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuc2V0V2lkdGggPSBmdW5jdGlvbiAod2lkdGgpIHtcbiAgdGhpcy53aWR0aCA9IHdpZHRoO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0SGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5oZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5zZXRIZWlnaHQgPSBmdW5jdGlvbiAoaGVpZ2h0KSB7XG4gIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0UmlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnggKyB0aGlzLndpZHRoO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0Qm90dG9tID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy55ICsgdGhpcy5oZWlnaHQ7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5pbnRlcnNlY3RzID0gZnVuY3Rpb24gKGEpIHtcbiAgaWYgKHRoaXMuZ2V0UmlnaHQoKSA8IGEueCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0aGlzLmdldEJvdHRvbSgpIDwgYS55KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGEuZ2V0UmlnaHQoKSA8IHRoaXMueCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChhLmdldEJvdHRvbSgpIDwgdGhpcy55KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRDZW50ZXJYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy54ICsgdGhpcy53aWR0aCAvIDI7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRNaW5YID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCk7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRNYXhYID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkgKyB0aGlzLndpZHRoO1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0Q2VudGVyWSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMueSArIHRoaXMuaGVpZ2h0IC8gMjtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1pblkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFkoKTtcbn07XG5cblJlY3RhbmdsZUQucHJvdG90eXBlLmdldE1heFkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldFkoKSArIHRoaXMuaGVpZ2h0O1xufTtcblxuUmVjdGFuZ2xlRC5wcm90b3R5cGUuZ2V0V2lkdGhIYWxmID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy53aWR0aCAvIDI7XG59O1xuXG5SZWN0YW5nbGVELnByb3RvdHlwZS5nZXRIZWlnaHRIYWxmID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5oZWlnaHQgLyAyO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWN0YW5nbGVEO1xuXG4vKioqLyB9KSxcbi8qIDE0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZnVuY3Rpb24gVW5pcXVlSURHZW5lcmV0b3IoKSB7fVxuXG5VbmlxdWVJREdlbmVyZXRvci5sYXN0SUQgPSAwO1xuXG5VbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgaWYgKFVuaXF1ZUlER2VuZXJldG9yLmlzUHJpbWl0aXZlKG9iaikpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIGlmIChvYmoudW5pcXVlSUQgIT0gbnVsbCkge1xuICAgIHJldHVybiBvYmoudW5pcXVlSUQ7XG4gIH1cbiAgb2JqLnVuaXF1ZUlEID0gVW5pcXVlSURHZW5lcmV0b3IuZ2V0U3RyaW5nKCk7XG4gIFVuaXF1ZUlER2VuZXJldG9yLmxhc3RJRCsrO1xuICByZXR1cm4gb2JqLnVuaXF1ZUlEO1xufTtcblxuVW5pcXVlSURHZW5lcmV0b3IuZ2V0U3RyaW5nID0gZnVuY3Rpb24gKGlkKSB7XG4gIGlmIChpZCA9PSBudWxsKSBpZCA9IFVuaXF1ZUlER2VuZXJldG9yLmxhc3RJRDtcbiAgcmV0dXJuIFwiT2JqZWN0I1wiICsgaWQgKyBcIlwiO1xufTtcblxuVW5pcXVlSURHZW5lcmV0b3IuaXNQcmltaXRpdmUgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGFyZyA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKGFyZyk7XG4gIHJldHVybiBhcmcgPT0gbnVsbCB8fCB0eXBlICE9IFwib2JqZWN0XCIgJiYgdHlwZSAhPSBcImZ1bmN0aW9uXCI7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVuaXF1ZUlER2VuZXJldG9yO1xuXG4vKioqLyB9KSxcbi8qIDE1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG52YXIgTGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbnZhciBMR3JhcGhNYW5hZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbnZhciBMTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG52YXIgTEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xudmFyIExHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG52YXIgUG9pbnREID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbnZhciBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcbnZhciBFbWl0dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cbmZ1bmN0aW9uIExheW91dChpc1JlbW90ZVVzZSkge1xuICBFbWl0dGVyLmNhbGwodGhpcyk7XG5cbiAgLy9MYXlvdXQgUXVhbGl0eTogMDpkcmFmdCwgMTpkZWZhdWx0LCAyOnByb29mXG4gIHRoaXMubGF5b3V0UXVhbGl0eSA9IExheW91dENvbnN0YW50cy5RVUFMSVRZO1xuICAvL1doZXRoZXIgbGF5b3V0IHNob3VsZCBjcmVhdGUgYmVuZHBvaW50cyBhcyBuZWVkZWQgb3Igbm90XG4gIHRoaXMuY3JlYXRlQmVuZHNBc05lZWRlZCA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX0NSRUFURV9CRU5EU19BU19ORUVERUQ7XG4gIC8vV2hldGhlciBsYXlvdXQgc2hvdWxkIGJlIGluY3JlbWVudGFsIG9yIG5vdFxuICB0aGlzLmluY3JlbWVudGFsID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfSU5DUkVNRU5UQUw7XG4gIC8vV2hldGhlciB3ZSBhbmltYXRlIGZyb20gYmVmb3JlIHRvIGFmdGVyIGxheW91dCBub2RlIHBvc2l0aW9uc1xuICB0aGlzLmFuaW1hdGlvbk9uTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX09OX0xBWU9VVDtcbiAgLy9XaGV0aGVyIHdlIGFuaW1hdGUgdGhlIGxheW91dCBwcm9jZXNzIG9yIG5vdFxuICB0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX0FOSU1BVElPTl9EVVJJTkdfTEFZT1VUO1xuICAvL051bWJlciBpdGVyYXRpb25zIHRoYXQgc2hvdWxkIGJlIGRvbmUgYmV0d2VlbiB0d28gc3VjY2Vzc2l2ZSBhbmltYXRpb25zXG4gIHRoaXMuYW5pbWF0aW9uUGVyaW9kID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX1BFUklPRDtcbiAgLyoqXHJcbiAgICogV2hldGhlciBvciBub3QgbGVhZiBub2RlcyAobm9uLWNvbXBvdW5kIG5vZGVzKSBhcmUgb2YgdW5pZm9ybSBzaXplcy4gV2hlblxyXG4gICAqIHRoZXkgYXJlLCBib3RoIHNwcmluZyBhbmQgcmVwdWxzaW9uIGZvcmNlcyBiZXR3ZWVuIHR3byBsZWFmIG5vZGVzIGNhbiBiZVxyXG4gICAqIGNhbGN1bGF0ZWQgd2l0aG91dCB0aGUgZXhwZW5zaXZlIGNsaXBwaW5nIHBvaW50IGNhbGN1bGF0aW9ucywgcmVzdWx0aW5nXHJcbiAgICogaW4gbWFqb3Igc3BlZWQtdXAuXHJcbiAgICovXG4gIHRoaXMudW5pZm9ybUxlYWZOb2RlU2l6ZXMgPSBMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VTklGT1JNX0xFQUZfTk9ERV9TSVpFUztcbiAgLyoqXHJcbiAgICogVGhpcyBpcyB1c2VkIGZvciBjcmVhdGlvbiBvZiBiZW5kcG9pbnRzIGJ5IHVzaW5nIGR1bW15IG5vZGVzIGFuZCBlZGdlcy5cclxuICAgKiBNYXBzIGFuIExFZGdlIHRvIGl0cyBkdW1teSBiZW5kcG9pbnQgcGF0aC5cclxuICAgKi9cbiAgdGhpcy5lZGdlVG9EdW1teU5vZGVzID0gbmV3IE1hcCgpO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IG5ldyBMR3JhcGhNYW5hZ2VyKHRoaXMpO1xuICB0aGlzLmlzTGF5b3V0RmluaXNoZWQgPSBmYWxzZTtcbiAgdGhpcy5pc1N1YkxheW91dCA9IGZhbHNlO1xuICB0aGlzLmlzUmVtb3RlVXNlID0gZmFsc2U7XG5cbiAgaWYgKGlzUmVtb3RlVXNlICE9IG51bGwpIHtcbiAgICB0aGlzLmlzUmVtb3RlVXNlID0gaXNSZW1vdGVVc2U7XG4gIH1cbn1cblxuTGF5b3V0LlJBTkRPTV9TRUVEID0gMTtcblxuTGF5b3V0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRW1pdHRlci5wcm90b3R5cGUpO1xuXG5MYXlvdXQucHJvdG90eXBlLmdldEdyYXBoTWFuYWdlciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5nZXRBbGxOb2RlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldEFsbE5vZGVzKCk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLmdldEFsbEVkZ2VzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0QWxsRWRnZXMoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUuZ2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxOb2Rlc1RvQXBwbHlHcmF2aXRhdGlvbigpO1xufTtcblxuTGF5b3V0LnByb3RvdHlwZS5uZXdHcmFwaE1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBnbSA9IG5ldyBMR3JhcGhNYW5hZ2VyKHRoaXMpO1xuICB0aGlzLmdyYXBoTWFuYWdlciA9IGdtO1xuICByZXR1cm4gZ207XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLm5ld0dyYXBoID0gZnVuY3Rpb24gKHZHcmFwaCkge1xuICByZXR1cm4gbmV3IExHcmFwaChudWxsLCB0aGlzLmdyYXBoTWFuYWdlciwgdkdyYXBoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUubmV3Tm9kZSA9IGZ1bmN0aW9uICh2Tm9kZSkge1xuICByZXR1cm4gbmV3IExOb2RlKHRoaXMuZ3JhcGhNYW5hZ2VyLCB2Tm9kZSk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLm5ld0VkZ2UgPSBmdW5jdGlvbiAodkVkZ2UpIHtcbiAgcmV0dXJuIG5ldyBMRWRnZShudWxsLCBudWxsLCB2RWRnZSk7XG59O1xuXG5MYXlvdXQucHJvdG90eXBlLmNoZWNrTGF5b3V0U3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSA9PSBudWxsIHx8IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS5nZXROb2RlcygpLmxlbmd0aCA9PSAwIHx8IHRoaXMuZ3JhcGhNYW5hZ2VyLmluY2x1ZGVzSW52YWxpZEVkZ2UoKTtcbn07XG5cbkxheW91dC5wcm90b3R5cGUucnVuTGF5b3V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmlzTGF5b3V0RmluaXNoZWQgPSBmYWxzZTtcblxuICBpZiAodGhpcy50aWxpbmdQcmVMYXlvdXQpIHtcbiAgICB0aGlzLnRpbGluZ1ByZUxheW91dCgpO1xuICB9XG5cbiAgdGhpcy5pbml0UGFyYW1ldGVycygpO1xuICB2YXIgaXNMYXlvdXRTdWNjZXNzZnVsbDtcblxuICBpZiAodGhpcy5jaGVja0xheW91dFN1Y2Nlc3MoKSkge1xuICAgIGlzTGF5b3V0U3VjY2Vzc2Z1bGwgPSBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBpc0xheW91dFN1Y2Nlc3NmdWxsID0gdGhpcy5sYXlvdXQoKTtcbiAgfVxuXG4gIGlmIChMYXlvdXRDb25zdGFudHMuQU5JTUFURSA9PT0gJ2R1cmluZycpIHtcbiAgICAvLyBJZiB0aGlzIGlzIGEgJ2R1cmluZycgbGF5b3V0IGFuaW1hdGlvbi4gTGF5b3V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQuIFxuICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSB0aGVzZSBpbiBpbmRleC5qcyB3aGVuIGxheW91dCBpcyByZWFsbHkgZmluaXNoZWQuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzTGF5b3V0U3VjY2Vzc2Z1bGwpIHtcbiAgICBpZiAoIXRoaXMuaXNTdWJMYXlvdXQpIHtcbiAgICAgIHRoaXMuZG9Qb3N0TGF5b3V0KCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMudGlsaW5nUG9zdExheW91dCkge1xuICAgIHRoaXMudGlsaW5nUG9zdExheW91dCgpO1xuICB9XG5cbiAgdGhpcy5pc0xheW91dEZpbmlzaGVkID0gdHJ1ZTtcblxuICByZXR1cm4gaXNMYXlvdXRTdWNjZXNzZnVsbDtcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCBwZXJmb3JtcyB0aGUgb3BlcmF0aW9ucyByZXF1aXJlZCBhZnRlciBsYXlvdXQuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5kb1Bvc3RMYXlvdXQgPSBmdW5jdGlvbiAoKSB7XG4gIC8vYXNzZXJ0ICFpc1N1YkxheW91dCA6IFwiU2hvdWxkIG5vdCBiZSBjYWxsZWQgb24gc3ViLWxheW91dCFcIjtcbiAgLy8gUHJvcGFnYXRlIGdlb21ldHJpYyBjaGFuZ2VzIHRvIHYtbGV2ZWwgb2JqZWN0c1xuICBpZiAoIXRoaXMuaW5jcmVtZW50YWwpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSgpO1xuICB9XG4gIHRoaXMudXBkYXRlKCk7XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgZ2VvbWV0cnkgb2YgdGhlIHRhcmdldCBncmFwaCBhY2NvcmRpbmcgdG9cclxuICogY2FsY3VsYXRlZCBsYXlvdXQuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS51cGRhdGUyID0gZnVuY3Rpb24gKCkge1xuICAvLyB1cGRhdGUgYmVuZCBwb2ludHNcbiAgaWYgKHRoaXMuY3JlYXRlQmVuZHNBc05lZWRlZCkge1xuICAgIHRoaXMuY3JlYXRlQmVuZHBvaW50c0Zyb21EdW1teU5vZGVzKCk7XG5cbiAgICAvLyByZXNldCBhbGwgZWRnZXMsIHNpbmNlIHRoZSB0b3BvbG9neSBoYXMgY2hhbmdlZFxuICAgIHRoaXMuZ3JhcGhNYW5hZ2VyLnJlc2V0QWxsRWRnZXMoKTtcbiAgfVxuXG4gIC8vIHBlcmZvcm0gZWRnZSwgbm9kZSBhbmQgcm9vdCB1cGRhdGVzIGlmIGxheW91dCBpcyBub3QgY2FsbGVkXG4gIC8vIHJlbW90ZWx5XG4gIGlmICghdGhpcy5pc1JlbW90ZVVzZSkge1xuICAgIC8vIHVwZGF0ZSBhbGwgZWRnZXNcbiAgICB2YXIgZWRnZTtcbiAgICB2YXIgYWxsRWRnZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxFZGdlcygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGVkZ2UgPSBhbGxFZGdlc1tpXTtcbiAgICAgIC8vICAgICAgdGhpcy51cGRhdGUoZWRnZSk7XG4gICAgfVxuXG4gICAgLy8gcmVjdXJzaXZlbHkgdXBkYXRlIG5vZGVzXG4gICAgdmFyIG5vZGU7XG4gICAgdmFyIG5vZGVzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgLy8gICAgICB0aGlzLnVwZGF0ZShub2RlKTtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgcm9vdCBncmFwaFxuICAgIHRoaXMudXBkYXRlKHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSk7XG4gIH1cbn07XG5cbkxheW91dC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKG9iaikge1xuICBpZiAob2JqID09IG51bGwpIHtcbiAgICB0aGlzLnVwZGF0ZTIoKTtcbiAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBMTm9kZSkge1xuICAgIHZhciBub2RlID0gb2JqO1xuICAgIGlmIChub2RlLmdldENoaWxkKCkgIT0gbnVsbCkge1xuICAgICAgLy8gc2luY2Ugbm9kZSBpcyBjb21wb3VuZCwgcmVjdXJzaXZlbHkgdXBkYXRlIGNoaWxkIG5vZGVzXG4gICAgICB2YXIgbm9kZXMgPSBub2RlLmdldENoaWxkKCkuZ2V0Tm9kZXMoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXBkYXRlKG5vZGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgbC1sZXZlbCBub2RlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHYtbGV2ZWwgZ3JhcGggb2JqZWN0LFxuICAgIC8vIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB2LWxldmVsIG5vZGUgaW1wbGVtZW50cyB0aGVcbiAgICAvLyBpbnRlcmZhY2UgVXBkYXRhYmxlLlxuICAgIGlmIChub2RlLnZHcmFwaE9iamVjdCAhPSBudWxsKSB7XG4gICAgICAvLyBjYXN0IHRvIFVwZGF0YWJsZSB3aXRob3V0IGFueSB0eXBlIGNoZWNrXG4gICAgICB2YXIgdk5vZGUgPSBub2RlLnZHcmFwaE9iamVjdDtcblxuICAgICAgLy8gY2FsbCB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgaW50ZXJmYWNlXG4gICAgICB2Tm9kZS51cGRhdGUobm9kZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIExFZGdlKSB7XG4gICAgdmFyIGVkZ2UgPSBvYmo7XG4gICAgLy8gaWYgdGhlIGwtbGV2ZWwgZWRnZSBpcyBhc3NvY2lhdGVkIHdpdGggYSB2LWxldmVsIGdyYXBoIG9iamVjdCxcbiAgICAvLyB0aGVuIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdi1sZXZlbCBlZGdlIGltcGxlbWVudHMgdGhlXG4gICAgLy8gaW50ZXJmYWNlIFVwZGF0YWJsZS5cblxuICAgIGlmIChlZGdlLnZHcmFwaE9iamVjdCAhPSBudWxsKSB7XG4gICAgICAvLyBjYXN0IHRvIFVwZGF0YWJsZSB3aXRob3V0IGFueSB0eXBlIGNoZWNrXG4gICAgICB2YXIgdkVkZ2UgPSBlZGdlLnZHcmFwaE9iamVjdDtcblxuICAgICAgLy8gY2FsbCB0aGUgdXBkYXRlIG1ldGhvZCBvZiB0aGUgaW50ZXJmYWNlXG4gICAgICB2RWRnZS51cGRhdGUoZWRnZSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIExHcmFwaCkge1xuICAgIHZhciBncmFwaCA9IG9iajtcbiAgICAvLyBpZiB0aGUgbC1sZXZlbCBncmFwaCBpcyBhc3NvY2lhdGVkIHdpdGggYSB2LWxldmVsIGdyYXBoIG9iamVjdCxcbiAgICAvLyB0aGVuIGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdi1sZXZlbCBvYmplY3QgaW1wbGVtZW50cyB0aGVcbiAgICAvLyBpbnRlcmZhY2UgVXBkYXRhYmxlLlxuXG4gICAgaWYgKGdyYXBoLnZHcmFwaE9iamVjdCAhPSBudWxsKSB7XG4gICAgICAvLyBjYXN0IHRvIFVwZGF0YWJsZSB3aXRob3V0IGFueSB0eXBlIGNoZWNrXG4gICAgICB2YXIgdkdyYXBoID0gZ3JhcGgudkdyYXBoT2JqZWN0O1xuXG4gICAgICAvLyBjYWxsIHRoZSB1cGRhdGUgbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2VcbiAgICAgIHZHcmFwaC51cGRhdGUoZ3JhcGgpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gc2V0IGFsbCBsYXlvdXQgcGFyYW1ldGVycyB0byBkZWZhdWx0IHZhbHVlc1xyXG4gKiBkZXRlcm1pbmVkIGF0IGNvbXBpbGUgdGltZS5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmluaXRQYXJhbWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuaXNTdWJMYXlvdXQpIHtcbiAgICB0aGlzLmxheW91dFF1YWxpdHkgPSBMYXlvdXRDb25zdGFudHMuUVVBTElUWTtcbiAgICB0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCA9IExheW91dENvbnN0YW50cy5ERUZBVUxUX0FOSU1BVElPTl9EVVJJTkdfTEFZT1VUO1xuICAgIHRoaXMuYW5pbWF0aW9uUGVyaW9kID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX1BFUklPRDtcbiAgICB0aGlzLmFuaW1hdGlvbk9uTGF5b3V0ID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQU5JTUFUSU9OX09OX0xBWU9VVDtcbiAgICB0aGlzLmluY3JlbWVudGFsID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfSU5DUkVNRU5UQUw7XG4gICAgdGhpcy5jcmVhdGVCZW5kc0FzTmVlZGVkID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfQ1JFQVRFX0JFTkRTX0FTX05FRURFRDtcbiAgICB0aGlzLnVuaWZvcm1MZWFmTm9kZVNpemVzID0gTGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVU5JRk9STV9MRUFGX05PREVfU0laRVM7XG4gIH1cblxuICBpZiAodGhpcy5hbmltYXRpb25EdXJpbmdMYXlvdXQpIHtcbiAgICB0aGlzLmFuaW1hdGlvbk9uTGF5b3V0ID0gZmFsc2U7XG4gIH1cbn07XG5cbkxheW91dC5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gKG5ld0xlZnRUb3ApIHtcbiAgaWYgKG5ld0xlZnRUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0obmV3IFBvaW50RCgwLCAwKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gY3JlYXRlIGEgdHJhbnNmb3JtYXRpb24gb2JqZWN0IChmcm9tIEVjbGlwc2UgdG8gbGF5b3V0KS4gV2hlbiBhblxuICAgIC8vIGludmVyc2UgdHJhbnNmb3JtIGlzIGFwcGxpZWQsIHdlIGdldCB1cHBlci1sZWZ0IGNvb3JkaW5hdGUgb2YgdGhlXG4gICAgLy8gZHJhd2luZyBvciB0aGUgcm9vdCBncmFwaCBhdCBnaXZlbiBpbnB1dCBjb29yZGluYXRlIChzb21lIG1hcmdpbnNcbiAgICAvLyBhbHJlYWR5IGluY2x1ZGVkIGluIGNhbGN1bGF0aW9uIG9mIGxlZnQtdG9wKS5cblxuICAgIHZhciB0cmFucyA9IG5ldyBUcmFuc2Zvcm0oKTtcbiAgICB2YXIgbGVmdFRvcCA9IHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKS51cGRhdGVMZWZ0VG9wKCk7XG5cbiAgICBpZiAobGVmdFRvcCAhPSBudWxsKSB7XG4gICAgICB0cmFucy5zZXRXb3JsZE9yZ1gobmV3TGVmdFRvcC54KTtcbiAgICAgIHRyYW5zLnNldFdvcmxkT3JnWShuZXdMZWZ0VG9wLnkpO1xuXG4gICAgICB0cmFucy5zZXREZXZpY2VPcmdYKGxlZnRUb3AueCk7XG4gICAgICB0cmFucy5zZXREZXZpY2VPcmdZKGxlZnRUb3AueSk7XG5cbiAgICAgIHZhciBub2RlcyA9IHRoaXMuZ2V0QWxsTm9kZXMoKTtcbiAgICAgIHZhciBub2RlO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgbm9kZS50cmFuc2Zvcm0odHJhbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuTGF5b3V0LnByb3RvdHlwZS5wb3NpdGlvbk5vZGVzUmFuZG9tbHkgPSBmdW5jdGlvbiAoZ3JhcGgpIHtcblxuICBpZiAoZ3JhcGggPT0gdW5kZWZpbmVkKSB7XG4gICAgLy9hc3NlcnQgIXRoaXMuaW5jcmVtZW50YWw7XG4gICAgdGhpcy5wb3NpdGlvbk5vZGVzUmFuZG9tbHkodGhpcy5nZXRHcmFwaE1hbmFnZXIoKS5nZXRSb290KCkpO1xuICAgIHRoaXMuZ2V0R3JhcGhNYW5hZ2VyKCkuZ2V0Um9vdCgpLnVwZGF0ZUJvdW5kcyh0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbE5vZGU7XG4gICAgdmFyIGNoaWxkR3JhcGg7XG5cbiAgICB2YXIgbm9kZXMgPSBncmFwaC5nZXROb2RlcygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxOb2RlID0gbm9kZXNbaV07XG4gICAgICBjaGlsZEdyYXBoID0gbE5vZGUuZ2V0Q2hpbGQoKTtcblxuICAgICAgaWYgKGNoaWxkR3JhcGggPT0gbnVsbCkge1xuICAgICAgICBsTm9kZS5zY2F0dGVyKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkR3JhcGguZ2V0Tm9kZXMoKS5sZW5ndGggPT0gMCkge1xuICAgICAgICBsTm9kZS5zY2F0dGVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc2l0aW9uTm9kZXNSYW5kb21seShjaGlsZEdyYXBoKTtcbiAgICAgICAgbE5vZGUudXBkYXRlQm91bmRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcclxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdHJlZXMgd2hlcmUgZWFjaCB0cmVlIGlzIHJlcHJlc2VudGVkIGFzIGFcclxuICogbGlzdCBvZiBsLW5vZGVzLiBUaGUgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIHNpemUgMCB3aGVuOlxyXG4gKiAtIFRoZSBncmFwaCBpcyBub3QgZmxhdCBvclxyXG4gKiAtIE9uZSBvZiB0aGUgY29tcG9uZW50KHMpIG9mIHRoZSBncmFwaCBpcyBub3QgYSB0cmVlLlxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuZ2V0RmxhdEZvcmVzdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGZsYXRGb3Jlc3QgPSBbXTtcbiAgdmFyIGlzRm9yZXN0ID0gdHJ1ZTtcblxuICAvLyBRdWljayByZWZlcmVuY2UgZm9yIGFsbCBub2RlcyBpbiB0aGUgZ3JhcGggbWFuYWdlciBhc3NvY2lhdGVkIHdpdGhcbiAgLy8gdGhpcyBsYXlvdXQuIFRoZSBsaXN0IHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAgdmFyIGFsbE5vZGVzID0gdGhpcy5ncmFwaE1hbmFnZXIuZ2V0Um9vdCgpLmdldE5vZGVzKCk7XG5cbiAgLy8gRmlyc3QgYmUgc3VyZSB0aGF0IHRoZSBncmFwaCBpcyBmbGF0XG4gIHZhciBpc0ZsYXQgPSB0cnVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYWxsTm9kZXNbaV0uZ2V0Q2hpbGQoKSAhPSBudWxsKSB7XG4gICAgICBpc0ZsYXQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm4gZW1wdHkgZm9yZXN0IGlmIHRoZSBncmFwaCBpcyBub3QgZmxhdC5cbiAgaWYgKCFpc0ZsYXQpIHtcbiAgICByZXR1cm4gZmxhdEZvcmVzdDtcbiAgfVxuXG4gIC8vIFJ1biBCRlMgZm9yIGVhY2ggY29tcG9uZW50IG9mIHRoZSBncmFwaC5cblxuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHRvQmVWaXNpdGVkID0gW107XG4gIHZhciBwYXJlbnRzID0gbmV3IE1hcCgpO1xuICB2YXIgdW5Qcm9jZXNzZWROb2RlcyA9IFtdO1xuXG4gIHVuUHJvY2Vzc2VkTm9kZXMgPSB1blByb2Nlc3NlZE5vZGVzLmNvbmNhdChhbGxOb2Rlcyk7XG5cbiAgLy8gRWFjaCBpdGVyYXRpb24gb2YgdGhpcyBsb29wIGZpbmRzIGEgY29tcG9uZW50IG9mIHRoZSBncmFwaCBhbmRcbiAgLy8gZGVjaWRlcyB3aGV0aGVyIGl0IGlzIGEgdHJlZSBvciBub3QuIElmIGl0IGlzIGEgdHJlZSwgYWRkcyBpdCB0byB0aGVcbiAgLy8gZm9yZXN0IGFuZCBjb250aW51ZWQgd2l0aCB0aGUgbmV4dCBjb21wb25lbnQuXG5cbiAgd2hpbGUgKHVuUHJvY2Vzc2VkTm9kZXMubGVuZ3RoID4gMCAmJiBpc0ZvcmVzdCkge1xuICAgIHRvQmVWaXNpdGVkLnB1c2godW5Qcm9jZXNzZWROb2Rlc1swXSk7XG5cbiAgICAvLyBTdGFydCB0aGUgQkZTLiBFYWNoIGl0ZXJhdGlvbiBvZiB0aGlzIGxvb3AgdmlzaXRzIGEgbm9kZSBpbiBhXG4gICAgLy8gQkZTIG1hbm5lci5cbiAgICB3aGlsZSAodG9CZVZpc2l0ZWQubGVuZ3RoID4gMCAmJiBpc0ZvcmVzdCkge1xuICAgICAgLy9wb29sIG9wZXJhdGlvblxuICAgICAgdmFyIGN1cnJlbnROb2RlID0gdG9CZVZpc2l0ZWRbMF07XG4gICAgICB0b0JlVmlzaXRlZC5zcGxpY2UoMCwgMSk7XG4gICAgICB2aXNpdGVkLmFkZChjdXJyZW50Tm9kZSk7XG5cbiAgICAgIC8vIFRyYXZlcnNlIGFsbCBuZWlnaGJvcnMgb2YgdGhpcyBub2RlXG4gICAgICB2YXIgbmVpZ2hib3JFZGdlcyA9IGN1cnJlbnROb2RlLmdldEVkZ2VzKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmVpZ2hib3JFZGdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3VycmVudE5laWdoYm9yID0gbmVpZ2hib3JFZGdlc1tpXS5nZXRPdGhlckVuZChjdXJyZW50Tm9kZSk7XG5cbiAgICAgICAgLy8gSWYgQkZTIGlzIG5vdCBncm93aW5nIGZyb20gdGhpcyBuZWlnaGJvci5cbiAgICAgICAgaWYgKHBhcmVudHMuZ2V0KGN1cnJlbnROb2RlKSAhPSBjdXJyZW50TmVpZ2hib3IpIHtcbiAgICAgICAgICAvLyBXZSBoYXZlbid0IHByZXZpb3VzbHkgdmlzaXRlZCB0aGlzIG5laWdoYm9yLlxuICAgICAgICAgIGlmICghdmlzaXRlZC5oYXMoY3VycmVudE5laWdoYm9yKSkge1xuICAgICAgICAgICAgdG9CZVZpc2l0ZWQucHVzaChjdXJyZW50TmVpZ2hib3IpO1xuICAgICAgICAgICAgcGFyZW50cy5zZXQoY3VycmVudE5laWdoYm9yLCBjdXJyZW50Tm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGhhdmUgcHJldmlvdXNseSB2aXNpdGVkIHRoaXMgbmVpZ2hib3IgYW5kXG4gICAgICAgICAgLy8gdGhpcyBuZWlnaGJvciBpcyBub3QgcGFyZW50IG9mIGN1cnJlbnROb2RlLCBnaXZlblxuICAgICAgICAgIC8vIGdyYXBoIGNvbnRhaW5zIGEgY29tcG9uZW50IHRoYXQgaXMgbm90IHRyZWUsIGhlbmNlXG4gICAgICAgICAgLy8gaXQgaXMgbm90IGEgZm9yZXN0LlxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBpc0ZvcmVzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBncmFwaCBjb250YWlucyBhIGNvbXBvbmVudCB0aGF0IGlzIG5vdCBhIHRyZWUuIEVtcHR5XG4gICAgLy8gcHJldmlvdXNseSBmb3VuZCB0cmVlcy4gVGhlIG1ldGhvZCB3aWxsIGVuZC5cbiAgICBpZiAoIWlzRm9yZXN0KSB7XG4gICAgICBmbGF0Rm9yZXN0ID0gW107XG4gICAgfVxuICAgIC8vIFNhdmUgY3VycmVudGx5IHZpc2l0ZWQgbm9kZXMgYXMgYSB0cmVlIGluIG91ciBmb3Jlc3QuIFJlc2V0XG4gICAgLy8gdmlzaXRlZCBhbmQgcGFyZW50cyBsaXN0cy4gQ29udGludWUgd2l0aCB0aGUgbmV4dCBjb21wb25lbnQgb2ZcbiAgICAvLyB0aGUgZ3JhcGgsIGlmIGFueS5cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHRlbXAgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHZpc2l0ZWQpKTtcbiAgICAgICAgZmxhdEZvcmVzdC5wdXNoKHRlbXApO1xuICAgICAgICAvL2ZsYXRGb3Jlc3QgPSBmbGF0Rm9yZXN0LmNvbmNhdCh0ZW1wKTtcbiAgICAgICAgLy91blByb2Nlc3NlZE5vZGVzLnJlbW92ZUFsbCh2aXNpdGVkKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZW1wLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gdGVtcFtpXTtcbiAgICAgICAgICB2YXIgaW5kZXggPSB1blByb2Nlc3NlZE5vZGVzLmluZGV4T2YodmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB1blByb2Nlc3NlZE5vZGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gICAgICAgIHBhcmVudHMgPSBuZXcgTWFwKCk7XG4gICAgICB9XG4gIH1cblxuICByZXR1cm4gZmxhdEZvcmVzdDtcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGR1bW15IG5vZGVzIChhbiBsLWxldmVsIG5vZGUgd2l0aCBtaW5pbWFsIGRpbWVuc2lvbnMpXHJcbiAqIGZvciB0aGUgZ2l2ZW4gZWRnZSAob25lIHBlciBiZW5kcG9pbnQpLiBUaGUgZXhpc3RpbmcgbC1sZXZlbCBzdHJ1Y3R1cmVcclxuICogaXMgdXBkYXRlZCBhY2NvcmRpbmdseS5cclxuICovXG5MYXlvdXQucHJvdG90eXBlLmNyZWF0ZUR1bW15Tm9kZXNGb3JCZW5kcG9pbnRzID0gZnVuY3Rpb24gKGVkZ2UpIHtcbiAgdmFyIGR1bW15Tm9kZXMgPSBbXTtcbiAgdmFyIHByZXYgPSBlZGdlLnNvdXJjZTtcblxuICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoTWFuYWdlci5jYWxjTG93ZXN0Q29tbW9uQW5jZXN0b3IoZWRnZS5zb3VyY2UsIGVkZ2UudGFyZ2V0KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVkZ2UuYmVuZHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIC8vIGNyZWF0ZSBuZXcgZHVtbXkgbm9kZVxuICAgIHZhciBkdW1teU5vZGUgPSB0aGlzLm5ld05vZGUobnVsbCk7XG4gICAgZHVtbXlOb2RlLnNldFJlY3QobmV3IFBvaW50KDAsIDApLCBuZXcgRGltZW5zaW9uKDEsIDEpKTtcblxuICAgIGdyYXBoLmFkZChkdW1teU5vZGUpO1xuXG4gICAgLy8gY3JlYXRlIG5ldyBkdW1teSBlZGdlIGJldHdlZW4gcHJldiBhbmQgZHVtbXkgbm9kZVxuICAgIHZhciBkdW1teUVkZ2UgPSB0aGlzLm5ld0VkZ2UobnVsbCk7XG4gICAgdGhpcy5ncmFwaE1hbmFnZXIuYWRkKGR1bW15RWRnZSwgcHJldiwgZHVtbXlOb2RlKTtcblxuICAgIGR1bW15Tm9kZXMuYWRkKGR1bW15Tm9kZSk7XG4gICAgcHJldiA9IGR1bW15Tm9kZTtcbiAgfVxuXG4gIHZhciBkdW1teUVkZ2UgPSB0aGlzLm5ld0VkZ2UobnVsbCk7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyLmFkZChkdW1teUVkZ2UsIHByZXYsIGVkZ2UudGFyZ2V0KTtcblxuICB0aGlzLmVkZ2VUb0R1bW15Tm9kZXMuc2V0KGVkZ2UsIGR1bW15Tm9kZXMpO1xuXG4gIC8vIHJlbW92ZSByZWFsIGVkZ2UgZnJvbSBncmFwaCBtYW5hZ2VyIGlmIGl0IGlzIGludGVyLWdyYXBoXG4gIGlmIChlZGdlLmlzSW50ZXJHcmFwaCgpKSB7XG4gICAgdGhpcy5ncmFwaE1hbmFnZXIucmVtb3ZlKGVkZ2UpO1xuICB9XG4gIC8vIGVsc2UsIHJlbW92ZSB0aGUgZWRnZSBmcm9tIHRoZSBjdXJyZW50IGdyYXBoXG4gIGVsc2Uge1xuICAgICAgZ3JhcGgucmVtb3ZlKGVkZ2UpO1xuICAgIH1cblxuICByZXR1cm4gZHVtbXlOb2Rlcztcbn07XG5cbi8qKlxyXG4gKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGJlbmRwb2ludHMgZm9yIGVkZ2VzIGZyb20gdGhlIGR1bW15IG5vZGVzXHJcbiAqIGF0IGwtbGV2ZWwuXHJcbiAqL1xuTGF5b3V0LnByb3RvdHlwZS5jcmVhdGVCZW5kcG9pbnRzRnJvbUR1bW15Tm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBlZGdlcyA9IFtdO1xuICBlZGdlcyA9IGVkZ2VzLmNvbmNhdCh0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxFZGdlcygpKTtcbiAgZWRnZXMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHRoaXMuZWRnZVRvRHVtbXlOb2Rlcy5rZXlzKCkpKS5jb25jYXQoZWRnZXMpO1xuXG4gIGZvciAodmFyIGsgPSAwOyBrIDwgZWRnZXMubGVuZ3RoOyBrKyspIHtcbiAgICB2YXIgbEVkZ2UgPSBlZGdlc1trXTtcblxuICAgIGlmIChsRWRnZS5iZW5kcG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBwYXRoID0gdGhpcy5lZGdlVG9EdW1teU5vZGVzLmdldChsRWRnZSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZHVtbXlOb2RlID0gcGF0aFtpXTtcbiAgICAgICAgdmFyIHAgPSBuZXcgUG9pbnREKGR1bW15Tm9kZS5nZXRDZW50ZXJYKCksIGR1bW15Tm9kZS5nZXRDZW50ZXJZKCkpO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBiZW5kcG9pbnQncyBsb2NhdGlvbiBhY2NvcmRpbmcgdG8gZHVtbXkgbm9kZVxuICAgICAgICB2YXIgZWJwID0gbEVkZ2UuYmVuZHBvaW50cy5nZXQoaSk7XG4gICAgICAgIGVicC54ID0gcC54O1xuICAgICAgICBlYnAueSA9IHAueTtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIGR1bW15IG5vZGUsIGR1bW15IGVkZ2VzIGluY2lkZW50IHdpdGggdGhpc1xuICAgICAgICAvLyBkdW1teSBub2RlIGlzIGFsc28gcmVtb3ZlZCAod2l0aGluIHRoZSByZW1vdmUgbWV0aG9kKVxuICAgICAgICBkdW1teU5vZGUuZ2V0T3duZXIoKS5yZW1vdmUoZHVtbXlOb2RlKTtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHRoZSByZWFsIGVkZ2UgdG8gZ3JhcGhcbiAgICAgIHRoaXMuZ3JhcGhNYW5hZ2VyLmFkZChsRWRnZSwgbEVkZ2Uuc291cmNlLCBsRWRnZS50YXJnZXQpO1xuICAgIH1cbiAgfVxufTtcblxuTGF5b3V0LnRyYW5zZm9ybSA9IGZ1bmN0aW9uIChzbGlkZXJWYWx1ZSwgZGVmYXVsdFZhbHVlLCBtaW5EaXYsIG1heE11bCkge1xuICBpZiAobWluRGl2ICE9IHVuZGVmaW5lZCAmJiBtYXhNdWwgIT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKHNsaWRlclZhbHVlIDw9IDUwKSB7XG4gICAgICB2YXIgbWluVmFsdWUgPSBkZWZhdWx0VmFsdWUgLyBtaW5EaXY7XG4gICAgICB2YWx1ZSAtPSAoZGVmYXVsdFZhbHVlIC0gbWluVmFsdWUpIC8gNTAgKiAoNTAgLSBzbGlkZXJWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXhWYWx1ZSA9IGRlZmF1bHRWYWx1ZSAqIG1heE11bDtcbiAgICAgIHZhbHVlICs9IChtYXhWYWx1ZSAtIGRlZmF1bHRWYWx1ZSkgLyA1MCAqIChzbGlkZXJWYWx1ZSAtIDUwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGEsIGI7XG5cbiAgICBpZiAoc2xpZGVyVmFsdWUgPD0gNTApIHtcbiAgICAgIGEgPSA5LjAgKiBkZWZhdWx0VmFsdWUgLyA1MDAuMDtcbiAgICAgIGIgPSBkZWZhdWx0VmFsdWUgLyAxMC4wO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gOS4wICogZGVmYXVsdFZhbHVlIC8gNTAuMDtcbiAgICAgIGIgPSAtOCAqIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYSAqIHNsaWRlclZhbHVlICsgYjtcbiAgfVxufTtcblxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGZpbmRzIGFuZCByZXR1cm5zIHRoZSBjZW50ZXIgb2YgdGhlIGdpdmVuIG5vZGVzLCBhc3N1bWluZ1xyXG4gKiB0aGF0IHRoZSBnaXZlbiBub2RlcyBmb3JtIGEgdHJlZSBpbiB0aGVtc2VsdmVzLlxyXG4gKi9cbkxheW91dC5maW5kQ2VudGVyT2ZUcmVlID0gZnVuY3Rpb24gKG5vZGVzKSB7XG4gIHZhciBsaXN0ID0gW107XG4gIGxpc3QgPSBsaXN0LmNvbmNhdChub2Rlcyk7XG5cbiAgdmFyIHJlbW92ZWROb2RlcyA9IFtdO1xuICB2YXIgcmVtYWluaW5nRGVncmVlcyA9IG5ldyBNYXAoKTtcbiAgdmFyIGZvdW5kQ2VudGVyID0gZmFsc2U7XG4gIHZhciBjZW50ZXJOb2RlID0gbnVsbDtcblxuICBpZiAobGlzdC5sZW5ndGggPT0gMSB8fCBsaXN0Lmxlbmd0aCA9PSAyKSB7XG4gICAgZm91bmRDZW50ZXIgPSB0cnVlO1xuICAgIGNlbnRlck5vZGUgPSBsaXN0WzBdO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBsaXN0W2ldO1xuICAgIHZhciBkZWdyZWUgPSBub2RlLmdldE5laWdoYm9yc0xpc3QoKS5zaXplO1xuICAgIHJlbWFpbmluZ0RlZ3JlZXMuc2V0KG5vZGUsIG5vZGUuZ2V0TmVpZ2hib3JzTGlzdCgpLnNpemUpO1xuXG4gICAgaWYgKGRlZ3JlZSA9PSAxKSB7XG4gICAgICByZW1vdmVkTm9kZXMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgdGVtcExpc3QgPSBbXTtcbiAgdGVtcExpc3QgPSB0ZW1wTGlzdC5jb25jYXQocmVtb3ZlZE5vZGVzKTtcblxuICB3aGlsZSAoIWZvdW5kQ2VudGVyKSB7XG4gICAgdmFyIHRlbXBMaXN0MiA9IFtdO1xuICAgIHRlbXBMaXN0MiA9IHRlbXBMaXN0Mi5jb25jYXQodGVtcExpc3QpO1xuICAgIHRlbXBMaXN0ID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBub2RlID0gbGlzdFtpXTtcblxuICAgICAgdmFyIGluZGV4ID0gbGlzdC5pbmRleE9mKG5vZGUpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgbGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3VycyA9IG5vZGUuZ2V0TmVpZ2hib3JzTGlzdCgpO1xuXG4gICAgICBuZWlnaGJvdXJzLmZvckVhY2goZnVuY3Rpb24gKG5laWdoYm91cikge1xuICAgICAgICBpZiAocmVtb3ZlZE5vZGVzLmluZGV4T2YobmVpZ2hib3VyKSA8IDApIHtcbiAgICAgICAgICB2YXIgb3RoZXJEZWdyZWUgPSByZW1haW5pbmdEZWdyZWVzLmdldChuZWlnaGJvdXIpO1xuICAgICAgICAgIHZhciBuZXdEZWdyZWUgPSBvdGhlckRlZ3JlZSAtIDE7XG5cbiAgICAgICAgICBpZiAobmV3RGVncmVlID09IDEpIHtcbiAgICAgICAgICAgIHRlbXBMaXN0LnB1c2gobmVpZ2hib3VyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZW1haW5pbmdEZWdyZWVzLnNldChuZWlnaGJvdXIsIG5ld0RlZ3JlZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZWROb2RlcyA9IHJlbW92ZWROb2Rlcy5jb25jYXQodGVtcExpc3QpO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09IDEgfHwgbGlzdC5sZW5ndGggPT0gMikge1xuICAgICAgZm91bmRDZW50ZXIgPSB0cnVlO1xuICAgICAgY2VudGVyTm9kZSA9IGxpc3RbMF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNlbnRlck5vZGU7XG59O1xuXG4vKipcclxuICogRHVyaW5nIHRoZSBjb2Fyc2VuaW5nIHByb2Nlc3MsIHRoaXMgbGF5b3V0IG1heSBiZSByZWZlcmVuY2VkIGJ5IHR3byBncmFwaCBtYW5hZ2Vyc1xyXG4gKiB0aGlzIHNldHRlciBmdW5jdGlvbiBncmFudHMgYWNjZXNzIHRvIGNoYW5nZSB0aGUgY3VycmVudGx5IGJlaW5nIHVzZWQgZ3JhcGggbWFuYWdlclxyXG4gKi9cbkxheW91dC5wcm90b3R5cGUuc2V0R3JhcGhNYW5hZ2VyID0gZnVuY3Rpb24gKGdtKSB7XG4gIHRoaXMuZ3JhcGhNYW5hZ2VyID0gZ207XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheW91dDtcblxuLyoqKi8gfSksXG4vKiAxNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBSYW5kb21TZWVkKCkge31cbi8vIGFkYXB0ZWQgZnJvbTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzAzNzI1XG5SYW5kb21TZWVkLnNlZWQgPSAxO1xuUmFuZG9tU2VlZC54ID0gMDtcblxuUmFuZG9tU2VlZC5uZXh0RG91YmxlID0gZnVuY3Rpb24gKCkge1xuICBSYW5kb21TZWVkLnggPSBNYXRoLnNpbihSYW5kb21TZWVkLnNlZWQrKykgKiAxMDAwMDtcbiAgcmV0dXJuIFJhbmRvbVNlZWQueCAtIE1hdGguZmxvb3IoUmFuZG9tU2VlZC54KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmFuZG9tU2VlZDtcblxuLyoqKi8gfSksXG4vKiAxNyAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgUG9pbnREID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblxuZnVuY3Rpb24gVHJhbnNmb3JtKHgsIHkpIHtcbiAgdGhpcy5sd29ybGRPcmdYID0gMC4wO1xuICB0aGlzLmx3b3JsZE9yZ1kgPSAwLjA7XG4gIHRoaXMubGRldmljZU9yZ1ggPSAwLjA7XG4gIHRoaXMubGRldmljZU9yZ1kgPSAwLjA7XG4gIHRoaXMubHdvcmxkRXh0WCA9IDEuMDtcbiAgdGhpcy5sd29ybGRFeHRZID0gMS4wO1xuICB0aGlzLmxkZXZpY2VFeHRYID0gMS4wO1xuICB0aGlzLmxkZXZpY2VFeHRZID0gMS4wO1xufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldFdvcmxkT3JnWCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubHdvcmxkT3JnWDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0V29ybGRPcmdYID0gZnVuY3Rpb24gKHdveCkge1xuICB0aGlzLmx3b3JsZE9yZ1ggPSB3b3g7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldFdvcmxkT3JnWSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubHdvcmxkT3JnWTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0V29ybGRPcmdZID0gZnVuY3Rpb24gKHdveSkge1xuICB0aGlzLmx3b3JsZE9yZ1kgPSB3b3k7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldFdvcmxkRXh0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubHdvcmxkRXh0WDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0V29ybGRFeHRYID0gZnVuY3Rpb24gKHdleCkge1xuICB0aGlzLmx3b3JsZEV4dFggPSB3ZXg7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldFdvcmxkRXh0WSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubHdvcmxkRXh0WTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0V29ybGRFeHRZID0gZnVuY3Rpb24gKHdleSkge1xuICB0aGlzLmx3b3JsZEV4dFkgPSB3ZXk7XG59O1xuXG4vKiBEZXZpY2UgcmVsYXRlZCAqL1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldERldmljZU9yZ1ggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxkZXZpY2VPcmdYO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXREZXZpY2VPcmdYID0gZnVuY3Rpb24gKGRveCkge1xuICB0aGlzLmxkZXZpY2VPcmdYID0gZG94O1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5nZXREZXZpY2VPcmdZID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5sZGV2aWNlT3JnWTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuc2V0RGV2aWNlT3JnWSA9IGZ1bmN0aW9uIChkb3kpIHtcbiAgdGhpcy5sZGV2aWNlT3JnWSA9IGRveTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuZ2V0RGV2aWNlRXh0WCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubGRldmljZUV4dFg7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnNldERldmljZUV4dFggPSBmdW5jdGlvbiAoZGV4KSB7XG4gIHRoaXMubGRldmljZUV4dFggPSBkZXg7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmdldERldmljZUV4dFkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxkZXZpY2VFeHRZO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5zZXREZXZpY2VFeHRZID0gZnVuY3Rpb24gKGRleSkge1xuICB0aGlzLmxkZXZpY2VFeHRZID0gZGV5O1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS50cmFuc2Zvcm1YID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIHhEZXZpY2UgPSAwLjA7XG4gIHZhciB3b3JsZEV4dFggPSB0aGlzLmx3b3JsZEV4dFg7XG4gIGlmICh3b3JsZEV4dFggIT0gMC4wKSB7XG4gICAgeERldmljZSA9IHRoaXMubGRldmljZU9yZ1ggKyAoeCAtIHRoaXMubHdvcmxkT3JnWCkgKiB0aGlzLmxkZXZpY2VFeHRYIC8gd29ybGRFeHRYO1xuICB9XG5cbiAgcmV0dXJuIHhEZXZpY2U7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnRyYW5zZm9ybVkgPSBmdW5jdGlvbiAoeSkge1xuICB2YXIgeURldmljZSA9IDAuMDtcbiAgdmFyIHdvcmxkRXh0WSA9IHRoaXMubHdvcmxkRXh0WTtcbiAgaWYgKHdvcmxkRXh0WSAhPSAwLjApIHtcbiAgICB5RGV2aWNlID0gdGhpcy5sZGV2aWNlT3JnWSArICh5IC0gdGhpcy5sd29ybGRPcmdZKSAqIHRoaXMubGRldmljZUV4dFkgLyB3b3JsZEV4dFk7XG4gIH1cblxuICByZXR1cm4geURldmljZTtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuaW52ZXJzZVRyYW5zZm9ybVggPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgeFdvcmxkID0gMC4wO1xuICB2YXIgZGV2aWNlRXh0WCA9IHRoaXMubGRldmljZUV4dFg7XG4gIGlmIChkZXZpY2VFeHRYICE9IDAuMCkge1xuICAgIHhXb3JsZCA9IHRoaXMubHdvcmxkT3JnWCArICh4IC0gdGhpcy5sZGV2aWNlT3JnWCkgKiB0aGlzLmx3b3JsZEV4dFggLyBkZXZpY2VFeHRYO1xuICB9XG5cbiAgcmV0dXJuIHhXb3JsZDtcbn07XG5cblRyYW5zZm9ybS5wcm90b3R5cGUuaW52ZXJzZVRyYW5zZm9ybVkgPSBmdW5jdGlvbiAoeSkge1xuICB2YXIgeVdvcmxkID0gMC4wO1xuICB2YXIgZGV2aWNlRXh0WSA9IHRoaXMubGRldmljZUV4dFk7XG4gIGlmIChkZXZpY2VFeHRZICE9IDAuMCkge1xuICAgIHlXb3JsZCA9IHRoaXMubHdvcmxkT3JnWSArICh5IC0gdGhpcy5sZGV2aWNlT3JnWSkgKiB0aGlzLmx3b3JsZEV4dFkgLyBkZXZpY2VFeHRZO1xuICB9XG4gIHJldHVybiB5V29ybGQ7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLmludmVyc2VUcmFuc2Zvcm1Qb2ludCA9IGZ1bmN0aW9uIChpblBvaW50KSB7XG4gIHZhciBvdXRQb2ludCA9IG5ldyBQb2ludEQodGhpcy5pbnZlcnNlVHJhbnNmb3JtWChpblBvaW50LngpLCB0aGlzLmludmVyc2VUcmFuc2Zvcm1ZKGluUG9pbnQueSkpO1xuICByZXR1cm4gb3V0UG9pbnQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxuLyoqKi8gfSksXG4vKiAxOCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxudmFyIExheW91dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xudmFyIEZETGF5b3V0Q29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbnZhciBMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIElHZW9tZXRyeSA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG52YXIgSU1hdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXG5mdW5jdGlvbiBGRExheW91dCgpIHtcbiAgTGF5b3V0LmNhbGwodGhpcyk7XG5cbiAgdGhpcy51c2VTbWFydElkZWFsRWRnZUxlbmd0aENhbGN1bGF0aW9uID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9VU0VfU01BUlRfSURFQUxfRURHRV9MRU5HVEhfQ0FMQ1VMQVRJT047XG4gIHRoaXMuaWRlYWxFZGdlTGVuZ3RoID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSDtcbiAgdGhpcy5zcHJpbmdDb25zdGFudCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfU1BSSU5HX1NUUkVOR1RIO1xuICB0aGlzLnJlcHVsc2lvbkNvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9SRVBVTFNJT05fU1RSRU5HVEg7XG4gIHRoaXMuZ3Jhdml0eUNvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9HUkFWSVRZX1NUUkVOR1RIO1xuICB0aGlzLmNvbXBvdW5kR3Jhdml0eUNvbnN0YW50ID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT01QT1VORF9HUkFWSVRZX1NUUkVOR1RIO1xuICB0aGlzLmdyYXZpdHlSYW5nZUZhY3RvciA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfR1JBVklUWV9SQU5HRV9GQUNUT1I7XG4gIHRoaXMuY29tcG91bmRHcmF2aXR5UmFuZ2VGYWN0b3IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPTVBPVU5EX0dSQVZJVFlfUkFOR0VfRkFDVE9SO1xuICB0aGlzLmRpc3BsYWNlbWVudFRocmVzaG9sZFBlck5vZGUgPSAzLjAgKiBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0VER0VfTEVOR1RIIC8gMTAwO1xuICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBGRExheW91dENvbnN0YW50cy5ERUZBVUxUX0NPT0xJTkdfRkFDVE9SX0lOQ1JFTUVOVEFMO1xuICB0aGlzLmluaXRpYWxDb29saW5nRmFjdG9yID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9DT09MSU5HX0ZBQ1RPUl9JTkNSRU1FTlRBTDtcbiAgdGhpcy50b3RhbERpc3BsYWNlbWVudCA9IDAuMDtcbiAgdGhpcy5vbGRUb3RhbERpc3BsYWNlbWVudCA9IDAuMDtcbiAgdGhpcy5tYXhJdGVyYXRpb25zID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX0lURVJBVElPTlM7XG59XG5cbkZETGF5b3V0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTGF5b3V0LnByb3RvdHlwZSk7XG5cbmZvciAodmFyIHByb3AgaW4gTGF5b3V0KSB7XG4gIEZETGF5b3V0W3Byb3BdID0gTGF5b3V0W3Byb3BdO1xufVxuXG5GRExheW91dC5wcm90b3R5cGUuaW5pdFBhcmFtZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIExheW91dC5wcm90b3R5cGUuaW5pdFBhcmFtZXRlcnMuY2FsbCh0aGlzLCBhcmd1bWVudHMpO1xuXG4gIHRoaXMudG90YWxJdGVyYXRpb25zID0gMDtcbiAgdGhpcy5ub3RBbmltYXRlZEl0ZXJhdGlvbnMgPSAwO1xuXG4gIHRoaXMudXNlRlJHcmlkVmFyaWFudCA9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfVVNFX1NNQVJUX1JFUFVMU0lPTl9SQU5HRV9DQUxDVUxBVElPTjtcblxuICB0aGlzLmdyaWQgPSBbXTtcbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjSWRlYWxFZGdlTGVuZ3RocyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVkZ2U7XG4gIHZhciBsY2FEZXB0aDtcbiAgdmFyIHNvdXJjZTtcbiAgdmFyIHRhcmdldDtcbiAgdmFyIHNpemVPZlNvdXJjZUluTGNhO1xuICB2YXIgc2l6ZU9mVGFyZ2V0SW5MY2E7XG5cbiAgdmFyIGFsbEVkZ2VzID0gdGhpcy5nZXRHcmFwaE1hbmFnZXIoKS5nZXRBbGxFZGdlcygpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbEVkZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgZWRnZSA9IGFsbEVkZ2VzW2ldO1xuXG4gICAgZWRnZS5pZGVhbExlbmd0aCA9IHRoaXMuaWRlYWxFZGdlTGVuZ3RoO1xuXG4gICAgaWYgKGVkZ2UuaXNJbnRlckdyYXBoKSB7XG4gICAgICBzb3VyY2UgPSBlZGdlLmdldFNvdXJjZSgpO1xuICAgICAgdGFyZ2V0ID0gZWRnZS5nZXRUYXJnZXQoKTtcblxuICAgICAgc2l6ZU9mU291cmNlSW5MY2EgPSBlZGdlLmdldFNvdXJjZUluTGNhKCkuZ2V0RXN0aW1hdGVkU2l6ZSgpO1xuICAgICAgc2l6ZU9mVGFyZ2V0SW5MY2EgPSBlZGdlLmdldFRhcmdldEluTGNhKCkuZ2V0RXN0aW1hdGVkU2l6ZSgpO1xuXG4gICAgICBpZiAodGhpcy51c2VTbWFydElkZWFsRWRnZUxlbmd0aENhbGN1bGF0aW9uKSB7XG4gICAgICAgIGVkZ2UuaWRlYWxMZW5ndGggKz0gc2l6ZU9mU291cmNlSW5MY2EgKyBzaXplT2ZUYXJnZXRJbkxjYSAtIDIgKiBMYXlvdXRDb25zdGFudHMuU0lNUExFX05PREVfU0laRTtcbiAgICAgIH1cblxuICAgICAgbGNhRGVwdGggPSBlZGdlLmdldExjYSgpLmdldEluY2x1c2lvblRyZWVEZXB0aCgpO1xuXG4gICAgICBlZGdlLmlkZWFsTGVuZ3RoICs9IEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggKiBGRExheW91dENvbnN0YW50cy5QRVJfTEVWRUxfSURFQUxfRURHRV9MRU5HVEhfRkFDVE9SICogKHNvdXJjZS5nZXRJbmNsdXNpb25UcmVlRGVwdGgoKSArIHRhcmdldC5nZXRJbmNsdXNpb25UcmVlRGVwdGgoKSAtIDIgKiBsY2FEZXB0aCk7XG4gICAgfVxuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuaW5pdFNwcmluZ0VtYmVkZGVyID0gZnVuY3Rpb24gKCkge1xuXG4gIHZhciBzID0gdGhpcy5nZXRBbGxOb2RlcygpLmxlbmd0aDtcbiAgaWYgKHRoaXMuaW5jcmVtZW50YWwpIHtcbiAgICBpZiAocyA+IEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkge1xuICAgICAgdGhpcy5jb29saW5nRmFjdG9yID0gTWF0aC5tYXgodGhpcy5jb29saW5nRmFjdG9yICogRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUiwgdGhpcy5jb29saW5nRmFjdG9yIC0gKHMgLSBGRExheW91dENvbnN0YW50cy5BREFQVEFUSU9OX0xPV0VSX05PREVfTElNSVQpIC8gKEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fVVBQRVJfTk9ERV9MSU1JVCAtIEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkgKiB0aGlzLmNvb2xpbmdGYWN0b3IgKiAoMSAtIEZETGF5b3V0Q29uc3RhbnRzLkNPT0xJTkdfQURBUFRBVElPTl9GQUNUT1IpKTtcbiAgICB9XG4gICAgdGhpcy5tYXhOb2RlRGlzcGxhY2VtZW50ID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UX0lOQ1JFTUVOVEFMO1xuICB9IGVsc2Uge1xuICAgIGlmIChzID4gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSB7XG4gICAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSBNYXRoLm1heChGRExheW91dENvbnN0YW50cy5DT09MSU5HX0FEQVBUQVRJT05fRkFDVE9SLCAxLjAgLSAocyAtIEZETGF5b3V0Q29uc3RhbnRzLkFEQVBUQVRJT05fTE9XRVJfTk9ERV9MSU1JVCkgLyAoRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9VUFBFUl9OT0RFX0xJTUlUIC0gRkRMYXlvdXRDb25zdGFudHMuQURBUFRBVElPTl9MT1dFUl9OT0RFX0xJTUlUKSAqICgxIC0gRkRMYXlvdXRDb25zdGFudHMuQ09PTElOR19BREFQVEFUSU9OX0ZBQ1RPUikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvb2xpbmdGYWN0b3IgPSAxLjA7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbENvb2xpbmdGYWN0b3IgPSB0aGlzLmNvb2xpbmdGYWN0b3I7XG4gICAgdGhpcy5tYXhOb2RlRGlzcGxhY2VtZW50ID0gRkRMYXlvdXRDb25zdGFudHMuTUFYX05PREVfRElTUExBQ0VNRU5UO1xuICB9XG5cbiAgdGhpcy5tYXhJdGVyYXRpb25zID0gTWF0aC5tYXgodGhpcy5nZXRBbGxOb2RlcygpLmxlbmd0aCAqIDUsIHRoaXMubWF4SXRlcmF0aW9ucyk7XG5cbiAgdGhpcy50b3RhbERpc3BsYWNlbWVudFRocmVzaG9sZCA9IHRoaXMuZGlzcGxhY2VtZW50VGhyZXNob2xkUGVyTm9kZSAqIHRoaXMuZ2V0QWxsTm9kZXMoKS5sZW5ndGg7XG5cbiAgdGhpcy5yZXB1bHNpb25SYW5nZSA9IHRoaXMuY2FsY1JlcHVsc2lvblJhbmdlKCk7XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY1NwcmluZ0ZvcmNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxFZGdlcyA9IHRoaXMuZ2V0QWxsRWRnZXMoKTtcbiAgdmFyIGVkZ2U7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsRWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICBlZGdlID0gbEVkZ2VzW2ldO1xuXG4gICAgdGhpcy5jYWxjU3ByaW5nRm9yY2UoZWRnZSwgZWRnZS5pZGVhbExlbmd0aCk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjUmVwdWxzaW9uRm9yY2VzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZ3JpZFVwZGF0ZUFsbG93ZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRydWU7XG4gIHZhciBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmYWxzZTtcblxuICB2YXIgaSwgajtcbiAgdmFyIG5vZGVBLCBub2RlQjtcbiAgdmFyIGxOb2RlcyA9IHRoaXMuZ2V0QWxsTm9kZXMoKTtcbiAgdmFyIHByb2Nlc3NlZE5vZGVTZXQ7XG5cbiAgaWYgKHRoaXMudXNlRlJHcmlkVmFyaWFudCkge1xuICAgIGlmICh0aGlzLnRvdGFsSXRlcmF0aW9ucyAlIEZETGF5b3V0Q29uc3RhbnRzLkdSSURfQ0FMQ1VMQVRJT05fQ0hFQ0tfUEVSSU9EID09IDEgJiYgZ3JpZFVwZGF0ZUFsbG93ZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JpZCgpO1xuICAgIH1cblxuICAgIHByb2Nlc3NlZE5vZGVTZXQgPSBuZXcgU2V0KCk7XG5cbiAgICAvLyBjYWxjdWxhdGUgcmVwdWxzaW9uIGZvcmNlcyBiZXR3ZWVuIGVhY2ggbm9kZXMgYW5kIGl0cyBzdXJyb3VuZGluZ1xuICAgIGZvciAoaSA9IDA7IGkgPCBsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vZGVBID0gbE5vZGVzW2ldO1xuICAgICAgdGhpcy5jYWxjdWxhdGVSZXB1bHNpb25Gb3JjZU9mQU5vZGUobm9kZUEsIHByb2Nlc3NlZE5vZGVTZXQsIGdyaWRVcGRhdGVBbGxvd2VkLCBmb3JjZVRvTm9kZVN1cnJvdW5kaW5nVXBkYXRlKTtcbiAgICAgIHByb2Nlc3NlZE5vZGVTZXQuYWRkKG5vZGVBKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZUEgPSBsTm9kZXNbaV07XG5cbiAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbE5vZGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIG5vZGVCID0gbE5vZGVzW2pdO1xuXG4gICAgICAgIC8vIElmIGJvdGggbm9kZXMgYXJlIG5vdCBtZW1iZXJzIG9mIHRoZSBzYW1lIGdyYXBoLCBza2lwLlxuICAgICAgICBpZiAobm9kZUEuZ2V0T3duZXIoKSAhPSBub2RlQi5nZXRPd25lcigpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbGNSZXB1bHNpb25Gb3JjZShub2RlQSwgbm9kZUIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2VzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbm9kZTtcbiAgdmFyIGxOb2RlcyA9IHRoaXMuZ2V0QWxsTm9kZXNUb0FwcGx5R3Jhdml0YXRpb24oKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUgPSBsTm9kZXNbaV07XG4gICAgdGhpcy5jYWxjR3Jhdml0YXRpb25hbEZvcmNlKG5vZGUpO1xuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUubW92ZU5vZGVzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbE5vZGVzID0gdGhpcy5nZXRBbGxOb2RlcygpO1xuICB2YXIgbm9kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxOb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIG5vZGUgPSBsTm9kZXNbaV07XG4gICAgbm9kZS5tb3ZlKCk7XG4gIH1cbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjU3ByaW5nRm9yY2UgPSBmdW5jdGlvbiAoZWRnZSwgaWRlYWxMZW5ndGgpIHtcbiAgdmFyIHNvdXJjZU5vZGUgPSBlZGdlLmdldFNvdXJjZSgpO1xuICB2YXIgdGFyZ2V0Tm9kZSA9IGVkZ2UuZ2V0VGFyZ2V0KCk7XG5cbiAgdmFyIGxlbmd0aDtcbiAgdmFyIHNwcmluZ0ZvcmNlO1xuICB2YXIgc3ByaW5nRm9yY2VYO1xuICB2YXIgc3ByaW5nRm9yY2VZO1xuXG4gIC8vIFVwZGF0ZSBlZGdlIGxlbmd0aFxuICBpZiAodGhpcy51bmlmb3JtTGVhZk5vZGVTaXplcyAmJiBzb3VyY2VOb2RlLmdldENoaWxkKCkgPT0gbnVsbCAmJiB0YXJnZXROb2RlLmdldENoaWxkKCkgPT0gbnVsbCkge1xuICAgIGVkZ2UudXBkYXRlTGVuZ3RoU2ltcGxlKCk7XG4gIH0gZWxzZSB7XG4gICAgZWRnZS51cGRhdGVMZW5ndGgoKTtcblxuICAgIGlmIChlZGdlLmlzT3ZlcmxhcGluZ1NvdXJjZUFuZFRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aCA9IGVkZ2UuZ2V0TGVuZ3RoKCk7XG5cbiAgaWYgKGxlbmd0aCA9PSAwKSByZXR1cm47XG5cbiAgLy8gQ2FsY3VsYXRlIHNwcmluZyBmb3JjZXNcbiAgc3ByaW5nRm9yY2UgPSB0aGlzLnNwcmluZ0NvbnN0YW50ICogKGxlbmd0aCAtIGlkZWFsTGVuZ3RoKTtcblxuICAvLyBQcm9qZWN0IGZvcmNlIG9udG8geCBhbmQgeSBheGVzXG4gIHNwcmluZ0ZvcmNlWCA9IHNwcmluZ0ZvcmNlICogKGVkZ2UubGVuZ3RoWCAvIGxlbmd0aCk7XG4gIHNwcmluZ0ZvcmNlWSA9IHNwcmluZ0ZvcmNlICogKGVkZ2UubGVuZ3RoWSAvIGxlbmd0aCk7XG5cbiAgLy8gQXBwbHkgZm9yY2VzIG9uIHRoZSBlbmQgbm9kZXNcbiAgc291cmNlTm9kZS5zcHJpbmdGb3JjZVggKz0gc3ByaW5nRm9yY2VYO1xuICBzb3VyY2VOb2RlLnNwcmluZ0ZvcmNlWSArPSBzcHJpbmdGb3JjZVk7XG4gIHRhcmdldE5vZGUuc3ByaW5nRm9yY2VYIC09IHNwcmluZ0ZvcmNlWDtcbiAgdGFyZ2V0Tm9kZS5zcHJpbmdGb3JjZVkgLT0gc3ByaW5nRm9yY2VZO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNSZXB1bHNpb25Gb3JjZSA9IGZ1bmN0aW9uIChub2RlQSwgbm9kZUIpIHtcbiAgdmFyIHJlY3RBID0gbm9kZUEuZ2V0UmVjdCgpO1xuICB2YXIgcmVjdEIgPSBub2RlQi5nZXRSZWN0KCk7XG4gIHZhciBvdmVybGFwQW1vdW50ID0gbmV3IEFycmF5KDIpO1xuICB2YXIgY2xpcFBvaW50cyA9IG5ldyBBcnJheSg0KTtcbiAgdmFyIGRpc3RhbmNlWDtcbiAgdmFyIGRpc3RhbmNlWTtcbiAgdmFyIGRpc3RhbmNlU3F1YXJlZDtcbiAgdmFyIGRpc3RhbmNlO1xuICB2YXIgcmVwdWxzaW9uRm9yY2U7XG4gIHZhciByZXB1bHNpb25Gb3JjZVg7XG4gIHZhciByZXB1bHNpb25Gb3JjZVk7XG5cbiAgaWYgKHJlY3RBLmludGVyc2VjdHMocmVjdEIpKSAvLyB0d28gbm9kZXMgb3ZlcmxhcFxuICAgIHtcbiAgICAgIC8vIGNhbGN1bGF0ZSBzZXBhcmF0aW9uIGFtb3VudCBpbiB4IGFuZCB5IGRpcmVjdGlvbnNcbiAgICAgIElHZW9tZXRyeS5jYWxjU2VwYXJhdGlvbkFtb3VudChyZWN0QSwgcmVjdEIsIG92ZXJsYXBBbW91bnQsIEZETGF5b3V0Q29uc3RhbnRzLkRFRkFVTFRfRURHRV9MRU5HVEggLyAyLjApO1xuXG4gICAgICByZXB1bHNpb25Gb3JjZVggPSAyICogb3ZlcmxhcEFtb3VudFswXTtcbiAgICAgIHJlcHVsc2lvbkZvcmNlWSA9IDIgKiBvdmVybGFwQW1vdW50WzFdO1xuXG4gICAgICB2YXIgY2hpbGRyZW5Db25zdGFudCA9IG5vZGVBLm5vT2ZDaGlsZHJlbiAqIG5vZGVCLm5vT2ZDaGlsZHJlbiAvIChub2RlQS5ub09mQ2hpbGRyZW4gKyBub2RlQi5ub09mQ2hpbGRyZW4pO1xuXG4gICAgICAvLyBBcHBseSBmb3JjZXMgb24gdGhlIHR3byBub2Rlc1xuICAgICAgbm9kZUEucmVwdWxzaW9uRm9yY2VYIC09IGNoaWxkcmVuQ29uc3RhbnQgKiByZXB1bHNpb25Gb3JjZVg7XG4gICAgICBub2RlQS5yZXB1bHNpb25Gb3JjZVkgLT0gY2hpbGRyZW5Db25zdGFudCAqIHJlcHVsc2lvbkZvcmNlWTtcbiAgICAgIG5vZGVCLnJlcHVsc2lvbkZvcmNlWCArPSBjaGlsZHJlbkNvbnN0YW50ICogcmVwdWxzaW9uRm9yY2VYO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VZICs9IGNoaWxkcmVuQ29uc3RhbnQgKiByZXB1bHNpb25Gb3JjZVk7XG4gICAgfSBlbHNlIC8vIG5vIG92ZXJsYXBcbiAgICB7XG4gICAgICAvLyBjYWxjdWxhdGUgZGlzdGFuY2VcblxuICAgICAgaWYgKHRoaXMudW5pZm9ybUxlYWZOb2RlU2l6ZXMgJiYgbm9kZUEuZ2V0Q2hpbGQoKSA9PSBudWxsICYmIG5vZGVCLmdldENoaWxkKCkgPT0gbnVsbCkgLy8gc2ltcGx5IGJhc2UgcmVwdWxzaW9uIG9uIGRpc3RhbmNlIG9mIG5vZGUgY2VudGVyc1xuICAgICAgICB7XG4gICAgICAgICAgZGlzdGFuY2VYID0gcmVjdEIuZ2V0Q2VudGVyWCgpIC0gcmVjdEEuZ2V0Q2VudGVyWCgpO1xuICAgICAgICAgIGRpc3RhbmNlWSA9IHJlY3RCLmdldENlbnRlclkoKSAtIHJlY3RBLmdldENlbnRlclkoKTtcbiAgICAgICAgfSBlbHNlIC8vIHVzZSBjbGlwcGluZyBwb2ludHNcbiAgICAgICAge1xuICAgICAgICAgIElHZW9tZXRyeS5nZXRJbnRlcnNlY3Rpb24ocmVjdEEsIHJlY3RCLCBjbGlwUG9pbnRzKTtcblxuICAgICAgICAgIGRpc3RhbmNlWCA9IGNsaXBQb2ludHNbMl0gLSBjbGlwUG9pbnRzWzBdO1xuICAgICAgICAgIGRpc3RhbmNlWSA9IGNsaXBQb2ludHNbM10gLSBjbGlwUG9pbnRzWzFdO1xuICAgICAgICB9XG5cbiAgICAgIC8vIE5vIHJlcHVsc2lvbiByYW5nZS4gRlIgZ3JpZCB2YXJpYW50IHNob3VsZCB0YWtlIGNhcmUgb2YgdGhpcy5cbiAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZVgpIDwgRkRMYXlvdXRDb25zdGFudHMuTUlOX1JFUFVMU0lPTl9ESVNUKSB7XG4gICAgICAgIGRpc3RhbmNlWCA9IElNYXRoLnNpZ24oZGlzdGFuY2VYKSAqIEZETGF5b3V0Q29uc3RhbnRzLk1JTl9SRVBVTFNJT05fRElTVDtcbiAgICAgIH1cblxuICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlWSkgPCBGRExheW91dENvbnN0YW50cy5NSU5fUkVQVUxTSU9OX0RJU1QpIHtcbiAgICAgICAgZGlzdGFuY2VZID0gSU1hdGguc2lnbihkaXN0YW5jZVkpICogRkRMYXlvdXRDb25zdGFudHMuTUlOX1JFUFVMU0lPTl9ESVNUO1xuICAgICAgfVxuXG4gICAgICBkaXN0YW5jZVNxdWFyZWQgPSBkaXN0YW5jZVggKiBkaXN0YW5jZVggKyBkaXN0YW5jZVkgKiBkaXN0YW5jZVk7XG4gICAgICBkaXN0YW5jZSA9IE1hdGguc3FydChkaXN0YW5jZVNxdWFyZWQpO1xuXG4gICAgICByZXB1bHNpb25Gb3JjZSA9IHRoaXMucmVwdWxzaW9uQ29uc3RhbnQgKiBub2RlQS5ub09mQ2hpbGRyZW4gKiBub2RlQi5ub09mQ2hpbGRyZW4gLyBkaXN0YW5jZVNxdWFyZWQ7XG5cbiAgICAgIC8vIFByb2plY3QgZm9yY2Ugb250byB4IGFuZCB5IGF4ZXNcbiAgICAgIHJlcHVsc2lvbkZvcmNlWCA9IHJlcHVsc2lvbkZvcmNlICogZGlzdGFuY2VYIC8gZGlzdGFuY2U7XG4gICAgICByZXB1bHNpb25Gb3JjZVkgPSByZXB1bHNpb25Gb3JjZSAqIGRpc3RhbmNlWSAvIGRpc3RhbmNlO1xuXG4gICAgICAvLyBBcHBseSBmb3JjZXMgb24gdGhlIHR3byBub2RlcyAgICBcbiAgICAgIG5vZGVBLnJlcHVsc2lvbkZvcmNlWCAtPSByZXB1bHNpb25Gb3JjZVg7XG4gICAgICBub2RlQS5yZXB1bHNpb25Gb3JjZVkgLT0gcmVwdWxzaW9uRm9yY2VZO1xuICAgICAgbm9kZUIucmVwdWxzaW9uRm9yY2VYICs9IHJlcHVsc2lvbkZvcmNlWDtcbiAgICAgIG5vZGVCLnJlcHVsc2lvbkZvcmNlWSArPSByZXB1bHNpb25Gb3JjZVk7XG4gICAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNHcmF2aXRhdGlvbmFsRm9yY2UgPSBmdW5jdGlvbiAobm9kZSkge1xuICB2YXIgb3duZXJHcmFwaDtcbiAgdmFyIG93bmVyQ2VudGVyWDtcbiAgdmFyIG93bmVyQ2VudGVyWTtcbiAgdmFyIGRpc3RhbmNlWDtcbiAgdmFyIGRpc3RhbmNlWTtcbiAgdmFyIGFic0Rpc3RhbmNlWDtcbiAgdmFyIGFic0Rpc3RhbmNlWTtcbiAgdmFyIGVzdGltYXRlZFNpemU7XG4gIG93bmVyR3JhcGggPSBub2RlLmdldE93bmVyKCk7XG5cbiAgb3duZXJDZW50ZXJYID0gKG93bmVyR3JhcGguZ2V0UmlnaHQoKSArIG93bmVyR3JhcGguZ2V0TGVmdCgpKSAvIDI7XG4gIG93bmVyQ2VudGVyWSA9IChvd25lckdyYXBoLmdldFRvcCgpICsgb3duZXJHcmFwaC5nZXRCb3R0b20oKSkgLyAyO1xuICBkaXN0YW5jZVggPSBub2RlLmdldENlbnRlclgoKSAtIG93bmVyQ2VudGVyWDtcbiAgZGlzdGFuY2VZID0gbm9kZS5nZXRDZW50ZXJZKCkgLSBvd25lckNlbnRlclk7XG4gIGFic0Rpc3RhbmNlWCA9IE1hdGguYWJzKGRpc3RhbmNlWCkgKyBub2RlLmdldFdpZHRoKCkgLyAyO1xuICBhYnNEaXN0YW5jZVkgPSBNYXRoLmFicyhkaXN0YW5jZVkpICsgbm9kZS5nZXRIZWlnaHQoKSAvIDI7XG5cbiAgaWYgKG5vZGUuZ2V0T3duZXIoKSA9PSB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkpIC8vIGluIHRoZSByb290IGdyYXBoXG4gICAge1xuICAgICAgZXN0aW1hdGVkU2l6ZSA9IG93bmVyR3JhcGguZ2V0RXN0aW1hdGVkU2l6ZSgpICogdGhpcy5ncmF2aXR5UmFuZ2VGYWN0b3I7XG5cbiAgICAgIGlmIChhYnNEaXN0YW5jZVggPiBlc3RpbWF0ZWRTaXplIHx8IGFic0Rpc3RhbmNlWSA+IGVzdGltYXRlZFNpemUpIHtcbiAgICAgICAgbm9kZS5ncmF2aXRhdGlvbkZvcmNlWCA9IC10aGlzLmdyYXZpdHlDb25zdGFudCAqIGRpc3RhbmNlWDtcbiAgICAgICAgbm9kZS5ncmF2aXRhdGlvbkZvcmNlWSA9IC10aGlzLmdyYXZpdHlDb25zdGFudCAqIGRpc3RhbmNlWTtcbiAgICAgIH1cbiAgICB9IGVsc2UgLy8gaW5zaWRlIGEgY29tcG91bmRcbiAgICB7XG4gICAgICBlc3RpbWF0ZWRTaXplID0gb3duZXJHcmFwaC5nZXRFc3RpbWF0ZWRTaXplKCkgKiB0aGlzLmNvbXBvdW5kR3Jhdml0eVJhbmdlRmFjdG9yO1xuXG4gICAgICBpZiAoYWJzRGlzdGFuY2VYID4gZXN0aW1hdGVkU2l6ZSB8fCBhYnNEaXN0YW5jZVkgPiBlc3RpbWF0ZWRTaXplKSB7XG4gICAgICAgIG5vZGUuZ3Jhdml0YXRpb25Gb3JjZVggPSAtdGhpcy5ncmF2aXR5Q29uc3RhbnQgKiBkaXN0YW5jZVggKiB0aGlzLmNvbXBvdW5kR3Jhdml0eUNvbnN0YW50O1xuICAgICAgICBub2RlLmdyYXZpdGF0aW9uRm9yY2VZID0gLXRoaXMuZ3Jhdml0eUNvbnN0YW50ICogZGlzdGFuY2VZICogdGhpcy5jb21wb3VuZEdyYXZpdHlDb25zdGFudDtcbiAgICAgIH1cbiAgICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuaXNDb252ZXJnZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb252ZXJnZWQ7XG4gIHZhciBvc2NpbGF0aW5nID0gZmFsc2U7XG5cbiAgaWYgKHRoaXMudG90YWxJdGVyYXRpb25zID4gdGhpcy5tYXhJdGVyYXRpb25zIC8gMykge1xuICAgIG9zY2lsYXRpbmcgPSBNYXRoLmFicyh0aGlzLnRvdGFsRGlzcGxhY2VtZW50IC0gdGhpcy5vbGRUb3RhbERpc3BsYWNlbWVudCkgPCAyO1xuICB9XG5cbiAgY29udmVyZ2VkID0gdGhpcy50b3RhbERpc3BsYWNlbWVudCA8IHRoaXMudG90YWxEaXNwbGFjZW1lbnRUaHJlc2hvbGQ7XG5cbiAgdGhpcy5vbGRUb3RhbERpc3BsYWNlbWVudCA9IHRoaXMudG90YWxEaXNwbGFjZW1lbnQ7XG5cbiAgcmV0dXJuIGNvbnZlcmdlZCB8fCBvc2NpbGF0aW5nO1xufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmFuaW1hdGlvbkR1cmluZ0xheW91dCAmJiAhdGhpcy5pc1N1YkxheW91dCkge1xuICAgIGlmICh0aGlzLm5vdEFuaW1hdGVkSXRlcmF0aW9ucyA9PSB0aGlzLmFuaW1hdGlvblBlcmlvZCkge1xuICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgIHRoaXMubm90QW5pbWF0ZWRJdGVyYXRpb25zID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RBbmltYXRlZEl0ZXJhdGlvbnMrKztcbiAgICB9XG4gIH1cbn07XG5cbi8vVGhpcyBtZXRob2QgY2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuICh3ZWlnaHQpIGZvciBhbGwgbm9kZXNcbkZETGF5b3V0LnByb3RvdHlwZS5jYWxjTm9PZkNoaWxkcmVuRm9yQWxsTm9kZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBub2RlO1xuICB2YXIgYWxsTm9kZXMgPSB0aGlzLmdyYXBoTWFuYWdlci5nZXRBbGxOb2RlcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICBub2RlID0gYWxsTm9kZXNbaV07XG4gICAgbm9kZS5ub09mQ2hpbGRyZW4gPSBub2RlLmdldE5vT2ZDaGlsZHJlbigpO1xuICB9XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VjdGlvbjogRlItR3JpZCBWYXJpYW50IFJlcHVsc2lvbiBGb3JjZSBDYWxjdWxhdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNHcmlkID0gZnVuY3Rpb24gKGdyYXBoKSB7XG5cbiAgdmFyIHNpemVYID0gMDtcbiAgdmFyIHNpemVZID0gMDtcblxuICBzaXplWCA9IHBhcnNlSW50KE1hdGguY2VpbCgoZ3JhcGguZ2V0UmlnaHQoKSAtIGdyYXBoLmdldExlZnQoKSkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIHNpemVZID0gcGFyc2VJbnQoTWF0aC5jZWlsKChncmFwaC5nZXRCb3R0b20oKSAtIGdyYXBoLmdldFRvcCgpKSAvIHRoaXMucmVwdWxzaW9uUmFuZ2UpKTtcblxuICB2YXIgZ3JpZCA9IG5ldyBBcnJheShzaXplWCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplWDsgaSsrKSB7XG4gICAgZ3JpZFtpXSA9IG5ldyBBcnJheShzaXplWSk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVYOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNpemVZOyBqKyspIHtcbiAgICAgIGdyaWRbaV1bal0gPSBuZXcgQXJyYXkoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ3JpZDtcbn07XG5cbkZETGF5b3V0LnByb3RvdHlwZS5hZGROb2RlVG9HcmlkID0gZnVuY3Rpb24gKHYsIGxlZnQsIHRvcCkge1xuXG4gIHZhciBzdGFydFggPSAwO1xuICB2YXIgZmluaXNoWCA9IDA7XG4gIHZhciBzdGFydFkgPSAwO1xuICB2YXIgZmluaXNoWSA9IDA7XG5cbiAgc3RhcnRYID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkueCAtIGxlZnQpIC8gdGhpcy5yZXB1bHNpb25SYW5nZSkpO1xuICBmaW5pc2hYID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkud2lkdGggKyB2LmdldFJlY3QoKS54IC0gbGVmdCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG4gIHN0YXJ0WSA9IHBhcnNlSW50KE1hdGguZmxvb3IoKHYuZ2V0UmVjdCgpLnkgLSB0b3ApIC8gdGhpcy5yZXB1bHNpb25SYW5nZSkpO1xuICBmaW5pc2hZID0gcGFyc2VJbnQoTWF0aC5mbG9vcigodi5nZXRSZWN0KCkuaGVpZ2h0ICsgdi5nZXRSZWN0KCkueSAtIHRvcCkgLyB0aGlzLnJlcHVsc2lvblJhbmdlKSk7XG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0WDsgaSA8PSBmaW5pc2hYOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gc3RhcnRZOyBqIDw9IGZpbmlzaFk7IGorKykge1xuICAgICAgdGhpcy5ncmlkW2ldW2pdLnB1c2godik7XG4gICAgICB2LnNldEdyaWRDb29yZGluYXRlcyhzdGFydFgsIGZpbmlzaFgsIHN0YXJ0WSwgZmluaXNoWSk7XG4gICAgfVxuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUudXBkYXRlR3JpZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGk7XG4gIHZhciBub2RlQTtcbiAgdmFyIGxOb2RlcyA9IHRoaXMuZ2V0QWxsTm9kZXMoKTtcblxuICB0aGlzLmdyaWQgPSB0aGlzLmNhbGNHcmlkKHRoaXMuZ3JhcGhNYW5hZ2VyLmdldFJvb3QoKSk7XG5cbiAgLy8gcHV0IGFsbCBub2RlcyB0byBwcm9wZXIgZ3JpZCBjZWxsc1xuICBmb3IgKGkgPSAwOyBpIDwgbE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbm9kZUEgPSBsTm9kZXNbaV07XG4gICAgdGhpcy5hZGROb2RlVG9HcmlkKG5vZGVBLCB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0TGVmdCgpLCB0aGlzLmdyYXBoTWFuYWdlci5nZXRSb290KCkuZ2V0VG9wKCkpO1xuICB9XG59O1xuXG5GRExheW91dC5wcm90b3R5cGUuY2FsY3VsYXRlUmVwdWxzaW9uRm9yY2VPZkFOb2RlID0gZnVuY3Rpb24gKG5vZGVBLCBwcm9jZXNzZWROb2RlU2V0LCBncmlkVXBkYXRlQWxsb3dlZCwgZm9yY2VUb05vZGVTdXJyb3VuZGluZ1VwZGF0ZSkge1xuXG4gIGlmICh0aGlzLnRvdGFsSXRlcmF0aW9ucyAlIEZETGF5b3V0Q29uc3RhbnRzLkdSSURfQ0FMQ1VMQVRJT05fQ0hFQ0tfUEVSSU9EID09IDEgJiYgZ3JpZFVwZGF0ZUFsbG93ZWQgfHwgZm9yY2VUb05vZGVTdXJyb3VuZGluZ1VwZGF0ZSkge1xuICAgIHZhciBzdXJyb3VuZGluZyA9IG5ldyBTZXQoKTtcbiAgICBub2RlQS5zdXJyb3VuZGluZyA9IG5ldyBBcnJheSgpO1xuICAgIHZhciBub2RlQjtcbiAgICB2YXIgZ3JpZCA9IHRoaXMuZ3JpZDtcblxuICAgIGZvciAodmFyIGkgPSBub2RlQS5zdGFydFggLSAxOyBpIDwgbm9kZUEuZmluaXNoWCArIDI7IGkrKykge1xuICAgICAgZm9yICh2YXIgaiA9IG5vZGVBLnN0YXJ0WSAtIDE7IGogPCBub2RlQS5maW5pc2hZICsgMjsgaisrKSB7XG4gICAgICAgIGlmICghKGkgPCAwIHx8IGogPCAwIHx8IGkgPj0gZ3JpZC5sZW5ndGggfHwgaiA+PSBncmlkWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGdyaWRbaV1bal0ubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgIG5vZGVCID0gZ3JpZFtpXVtqXVtrXTtcblxuICAgICAgICAgICAgLy8gSWYgYm90aCBub2RlcyBhcmUgbm90IG1lbWJlcnMgb2YgdGhlIHNhbWUgZ3JhcGgsIFxuICAgICAgICAgICAgLy8gb3IgYm90aCBub2RlcyBhcmUgdGhlIHNhbWUsIHNraXAuXG4gICAgICAgICAgICBpZiAobm9kZUEuZ2V0T3duZXIoKSAhPSBub2RlQi5nZXRPd25lcigpIHx8IG5vZGVBID09IG5vZGVCKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgcmVwdWxzaW9uIGZvcmNlIGJldHdlZW5cbiAgICAgICAgICAgIC8vIG5vZGVBIGFuZCBub2RlQiBoYXMgYWxyZWFkeSBiZWVuIGNhbGN1bGF0ZWRcbiAgICAgICAgICAgIGlmICghcHJvY2Vzc2VkTm9kZVNldC5oYXMobm9kZUIpICYmICFzdXJyb3VuZGluZy5oYXMobm9kZUIpKSB7XG4gICAgICAgICAgICAgIHZhciBkaXN0YW5jZVggPSBNYXRoLmFicyhub2RlQS5nZXRDZW50ZXJYKCkgLSBub2RlQi5nZXRDZW50ZXJYKCkpIC0gKG5vZGVBLmdldFdpZHRoKCkgLyAyICsgbm9kZUIuZ2V0V2lkdGgoKSAvIDIpO1xuICAgICAgICAgICAgICB2YXIgZGlzdGFuY2VZID0gTWF0aC5hYnMobm9kZUEuZ2V0Q2VudGVyWSgpIC0gbm9kZUIuZ2V0Q2VudGVyWSgpKSAtIChub2RlQS5nZXRIZWlnaHQoKSAvIDIgKyBub2RlQi5nZXRIZWlnaHQoKSAvIDIpO1xuXG4gICAgICAgICAgICAgIC8vIGlmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIG5vZGVBIGFuZCBub2RlQiBcbiAgICAgICAgICAgICAgLy8gaXMgbGVzcyB0aGVuIGNhbGN1bGF0aW9uIHJhbmdlXG4gICAgICAgICAgICAgIGlmIChkaXN0YW5jZVggPD0gdGhpcy5yZXB1bHNpb25SYW5nZSAmJiBkaXN0YW5jZVkgPD0gdGhpcy5yZXB1bHNpb25SYW5nZSkge1xuICAgICAgICAgICAgICAgIC8vdGhlbiBhZGQgbm9kZUIgdG8gc3Vycm91bmRpbmcgb2Ygbm9kZUFcbiAgICAgICAgICAgICAgICBzdXJyb3VuZGluZy5hZGQobm9kZUIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZUEuc3Vycm91bmRpbmcgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHN1cnJvdW5kaW5nKSk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG5vZGVBLnN1cnJvdW5kaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5jYWxjUmVwdWxzaW9uRm9yY2Uobm9kZUEsIG5vZGVBLnN1cnJvdW5kaW5nW2ldKTtcbiAgfVxufTtcblxuRkRMYXlvdXQucHJvdG90eXBlLmNhbGNSZXB1bHNpb25SYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIDAuMDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRkRMYXlvdXQ7XG5cbi8qKiovIH0pLFxuLyogMTkgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBGRExheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cbmZ1bmN0aW9uIEZETGF5b3V0RWRnZShzb3VyY2UsIHRhcmdldCwgdkVkZ2UpIHtcbiAgTEVkZ2UuY2FsbCh0aGlzLCBzb3VyY2UsIHRhcmdldCwgdkVkZ2UpO1xuICB0aGlzLmlkZWFsTGVuZ3RoID0gRkRMYXlvdXRDb25zdGFudHMuREVGQVVMVF9FREdFX0xFTkdUSDtcbn1cblxuRkRMYXlvdXRFZGdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTEVkZ2UucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMRWRnZSkge1xuICBGRExheW91dEVkZ2VbcHJvcF0gPSBMRWRnZVtwcm9wXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBGRExheW91dEVkZ2U7XG5cbi8qKiovIH0pLFxuLyogMjAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIExOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblxuZnVuY3Rpb24gRkRMYXlvdXROb2RlKGdtLCBsb2MsIHNpemUsIHZOb2RlKSB7XG4gIC8vIGFsdGVybmF0aXZlIGNvbnN0cnVjdG9yIGlzIGhhbmRsZWQgaW5zaWRlIExOb2RlXG4gIExOb2RlLmNhbGwodGhpcywgZ20sIGxvYywgc2l6ZSwgdk5vZGUpO1xuICAvL1NwcmluZywgcmVwdWxzaW9uIGFuZCBncmF2aXRhdGlvbmFsIGZvcmNlcyBhY3Rpbmcgb24gdGhpcyBub2RlXG4gIHRoaXMuc3ByaW5nRm9yY2VYID0gMDtcbiAgdGhpcy5zcHJpbmdGb3JjZVkgPSAwO1xuICB0aGlzLnJlcHVsc2lvbkZvcmNlWCA9IDA7XG4gIHRoaXMucmVwdWxzaW9uRm9yY2VZID0gMDtcbiAgdGhpcy5ncmF2aXRhdGlvbkZvcmNlWCA9IDA7XG4gIHRoaXMuZ3Jhdml0YXRpb25Gb3JjZVkgPSAwO1xuICAvL0Ftb3VudCBieSB3aGljaCB0aGlzIG5vZGUgaXMgdG8gYmUgbW92ZWQgaW4gdGhpcyBpdGVyYXRpb25cbiAgdGhpcy5kaXNwbGFjZW1lbnRYID0gMDtcbiAgdGhpcy5kaXNwbGFjZW1lbnRZID0gMDtcblxuICAvL1N0YXJ0IGFuZCBmaW5pc2ggZ3JpZCBjb29yZGluYXRlcyB0aGF0IHRoaXMgbm9kZSBpcyBmYWxsZW4gaW50b1xuICB0aGlzLnN0YXJ0WCA9IDA7XG4gIHRoaXMuZmluaXNoWCA9IDA7XG4gIHRoaXMuc3RhcnRZID0gMDtcbiAgdGhpcy5maW5pc2hZID0gMDtcblxuICAvL0dlb21ldHJpYyBuZWlnaGJvcnMgb2YgdGhpcyBub2RlXG4gIHRoaXMuc3Vycm91bmRpbmcgPSBbXTtcbn1cblxuRkRMYXlvdXROb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTE5vZGUucHJvdG90eXBlKTtcblxuZm9yICh2YXIgcHJvcCBpbiBMTm9kZSkge1xuICBGRExheW91dE5vZGVbcHJvcF0gPSBMTm9kZVtwcm9wXTtcbn1cblxuRkRMYXlvdXROb2RlLnByb3RvdHlwZS5zZXRHcmlkQ29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAoX3N0YXJ0WCwgX2ZpbmlzaFgsIF9zdGFydFksIF9maW5pc2hZKSB7XG4gIHRoaXMuc3RhcnRYID0gX3N0YXJ0WDtcbiAgdGhpcy5maW5pc2hYID0gX2ZpbmlzaFg7XG4gIHRoaXMuc3RhcnRZID0gX3N0YXJ0WTtcbiAgdGhpcy5maW5pc2hZID0gX2ZpbmlzaFk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZETGF5b3V0Tm9kZTtcblxuLyoqKi8gfSksXG4vKiAyMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5mdW5jdGlvbiBEaW1lbnNpb25EKHdpZHRoLCBoZWlnaHQpIHtcbiAgdGhpcy53aWR0aCA9IDA7XG4gIHRoaXMuaGVpZ2h0ID0gMDtcbiAgaWYgKHdpZHRoICE9PSBudWxsICYmIGhlaWdodCAhPT0gbnVsbCkge1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgfVxufVxuXG5EaW1lbnNpb25ELnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMud2lkdGg7XG59O1xuXG5EaW1lbnNpb25ELnByb3RvdHlwZS5zZXRXaWR0aCA9IGZ1bmN0aW9uICh3aWR0aCkge1xuICB0aGlzLndpZHRoID0gd2lkdGg7XG59O1xuXG5EaW1lbnNpb25ELnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmhlaWdodDtcbn07XG5cbkRpbWVuc2lvbkQucHJvdG90eXBlLnNldEhlaWdodCA9IGZ1bmN0aW9uIChoZWlnaHQpIHtcbiAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERpbWVuc2lvbkQ7XG5cbi8qKiovIH0pLFxuLyogMjIgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIFVuaXF1ZUlER2VuZXJldG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cbmZ1bmN0aW9uIEhhc2hNYXAoKSB7XG4gIHRoaXMubWFwID0ge307XG4gIHRoaXMua2V5cyA9IFtdO1xufVxuXG5IYXNoTWFwLnByb3RvdHlwZS5wdXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB2YXIgdGhlSWQgPSBVbmlxdWVJREdlbmVyZXRvci5jcmVhdGVJRChrZXkpO1xuICBpZiAoIXRoaXMuY29udGFpbnModGhlSWQpKSB7XG4gICAgdGhpcy5tYXBbdGhlSWRdID0gdmFsdWU7XG4gICAgdGhpcy5rZXlzLnB1c2goa2V5KTtcbiAgfVxufTtcblxuSGFzaE1hcC5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHZhciB0aGVJZCA9IFVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEKGtleSk7XG4gIHJldHVybiB0aGlzLm1hcFtrZXldICE9IG51bGw7XG59O1xuXG5IYXNoTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHZhciB0aGVJZCA9IFVuaXF1ZUlER2VuZXJldG9yLmNyZWF0ZUlEKGtleSk7XG4gIHJldHVybiB0aGlzLm1hcFt0aGVJZF07XG59O1xuXG5IYXNoTWFwLnByb3RvdHlwZS5rZXlTZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmtleXM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hNYXA7XG5cbi8qKiovIH0pLFxuLyogMjMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxudmFyIFVuaXF1ZUlER2VuZXJldG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cbmZ1bmN0aW9uIEhhc2hTZXQoKSB7XG4gIHRoaXMuc2V0ID0ge307XG59XG47XG5cbkhhc2hTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIHRoZUlkID0gVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQob2JqKTtcbiAgaWYgKCF0aGlzLmNvbnRhaW5zKHRoZUlkKSkgdGhpcy5zZXRbdGhlSWRdID0gb2JqO1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKG9iaikge1xuICBkZWxldGUgdGhpcy5zZXRbVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQob2JqKV07XG59O1xuXG5IYXNoU2V0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXQgPSB7fTtcbn07XG5cbkhhc2hTZXQucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdGhpcy5zZXRbVW5pcXVlSURHZW5lcmV0b3IuY3JlYXRlSUQob2JqKV0gPT0gb2JqO1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuc2l6ZSgpID09PSAwO1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuc2V0KS5sZW5ndGg7XG59O1xuXG4vL2NvbmNhdHMgdGhpcy5zZXQgdG8gdGhlIGdpdmVuIGxpc3Rcbkhhc2hTZXQucHJvdG90eXBlLmFkZEFsbFRvID0gZnVuY3Rpb24gKGxpc3QpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnNldCk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGxpc3QucHVzaCh0aGlzLnNldFtrZXlzW2ldXSk7XG4gIH1cbn07XG5cbkhhc2hTZXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnNldCkubGVuZ3RoO1xufTtcblxuSGFzaFNldC5wcm90b3R5cGUuYWRkQWxsID0gZnVuY3Rpb24gKGxpc3QpIHtcbiAgdmFyIHMgPSBsaXN0Lmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICB2YXIgdiA9IGxpc3RbaV07XG4gICAgdGhpcy5hZGQodik7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFNldDtcblxuLyoqKi8gfSksXG4vKiAyNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG4vKipcbiAqIEEgY2xhc3NpYyBRdWlja3NvcnQgYWxnb3JpdGhtIHdpdGggSG9hcmUncyBwYXJ0aXRpb25cbiAqIC0gV29ya3MgYWxzbyBvbiBMaW5rZWRMaXN0IG9iamVjdHNcbiAqXG4gKiBDb3B5cmlnaHQ6IGktVmlzIFJlc2VhcmNoIEdyb3VwLCBCaWxrZW50IFVuaXZlcnNpdHksIDIwMDcgLSBwcmVzZW50XG4gKi9cblxudmFyIExpbmtlZExpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblxudmFyIFF1aWNrc29ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBRdWlja3NvcnQoQSwgY29tcGFyZUZ1bmN0aW9uKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBRdWlja3NvcnQpO1xuXG4gICAgICAgIGlmIChjb21wYXJlRnVuY3Rpb24gIT09IG51bGwgfHwgY29tcGFyZUZ1bmN0aW9uICE9PSB1bmRlZmluZWQpIHRoaXMuY29tcGFyZUZ1bmN0aW9uID0gdGhpcy5fZGVmYXVsdENvbXBhcmVGdW5jdGlvbjtcblxuICAgICAgICB2YXIgbGVuZ3RoID0gdm9pZCAwO1xuICAgICAgICBpZiAoQSBpbnN0YW5jZW9mIExpbmtlZExpc3QpIGxlbmd0aCA9IEEuc2l6ZSgpO2Vsc2UgbGVuZ3RoID0gQS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5fcXVpY2tzb3J0KEEsIDAsIGxlbmd0aCAtIDEpO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhRdWlja3NvcnQsIFt7XG4gICAgICAgIGtleTogJ19xdWlja3NvcnQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3F1aWNrc29ydChBLCBwLCByKSB7XG4gICAgICAgICAgICBpZiAocCA8IHIpIHtcbiAgICAgICAgICAgICAgICB2YXIgcSA9IHRoaXMuX3BhcnRpdGlvbihBLCBwLCByKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9xdWlja3NvcnQoQSwgcCwgcSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcXVpY2tzb3J0KEEsIHEgKyAxLCByKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3BhcnRpdGlvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfcGFydGl0aW9uKEEsIHAsIHIpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdGhpcy5fZ2V0KEEsIHApO1xuICAgICAgICAgICAgdmFyIGkgPSBwO1xuICAgICAgICAgICAgdmFyIGogPSByO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAodGhpcy5jb21wYXJlRnVuY3Rpb24oeCwgdGhpcy5fZ2V0KEEsIGopKSkge1xuICAgICAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICAgICAgfXdoaWxlICh0aGlzLmNvbXBhcmVGdW5jdGlvbih0aGlzLl9nZXQoQSwgaSksIHgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9aWYgKGkgPCBqKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N3YXAoQSwgaSwgaik7XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgai0tO1xuICAgICAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2dldCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0KG9iamVjdCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChvYmplY3QgaW5zdGFuY2VvZiBMaW5rZWRMaXN0KSByZXR1cm4gb2JqZWN0LmdldF9vYmplY3RfYXQoaW5kZXgpO2Vsc2UgcmV0dXJuIG9iamVjdFtpbmRleF07XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19zZXQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3NldChvYmplY3QsIGluZGV4LCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIExpbmtlZExpc3QpIG9iamVjdC5zZXRfb2JqZWN0X2F0KGluZGV4LCB2YWx1ZSk7ZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19zd2FwJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9zd2FwKEEsIGksIGopIHtcbiAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5fZ2V0KEEsIGkpO1xuICAgICAgICAgICAgdGhpcy5fc2V0KEEsIGksIHRoaXMuX2dldChBLCBqKSk7XG4gICAgICAgICAgICB0aGlzLl9zZXQoQSwgaiwgdGVtcCk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19kZWZhdWx0Q29tcGFyZUZ1bmN0aW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9kZWZhdWx0Q29tcGFyZUZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiID4gYTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBRdWlja3NvcnQ7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gUXVpY2tzb3J0O1xuXG4vKioqLyB9KSxcbi8qIDI1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbi8qKlxuICogICBOZWVkbGVtYW4tV3Vuc2NoIGFsZ29yaXRobSBpcyBhbiBwcm9jZWR1cmUgdG8gY29tcHV0ZSB0aGUgb3B0aW1hbCBnbG9iYWwgYWxpZ25tZW50IG9mIHR3byBzdHJpbmdcbiAqICAgc2VxdWVuY2VzIGJ5IFMuQi5OZWVkbGVtYW4gYW5kIEMuRC5XdW5zY2ggKDE5NzApLlxuICpcbiAqICAgQXNpZGUgZnJvbSB0aGUgaW5wdXRzLCB5b3UgY2FuIGFzc2lnbiB0aGUgc2NvcmVzIGZvcixcbiAqICAgLSBNYXRjaDogVGhlIHR3byBjaGFyYWN0ZXJzIGF0IHRoZSBjdXJyZW50IGluZGV4IGFyZSBzYW1lLlxuICogICAtIE1pc21hdGNoOiBUaGUgdHdvIGNoYXJhY3RlcnMgYXQgdGhlIGN1cnJlbnQgaW5kZXggYXJlIGRpZmZlcmVudC5cbiAqICAgLSBJbnNlcnRpb24vRGVsZXRpb24oZ2Fwcyk6IFRoZSBiZXN0IGFsaWdubWVudCBpbnZvbHZlcyBvbmUgbGV0dGVyIGFsaWduaW5nIHRvIGEgZ2FwIGluIHRoZSBvdGhlciBzdHJpbmcuXG4gKi9cblxudmFyIE5lZWRsZW1hbld1bnNjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBOZWVkbGVtYW5XdW5zY2goc2VxdWVuY2UxLCBzZXF1ZW5jZTIpIHtcbiAgICAgICAgdmFyIG1hdGNoX3Njb3JlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAxO1xuICAgICAgICB2YXIgbWlzbWF0Y2hfcGVuYWx0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogLTE7XG4gICAgICAgIHZhciBnYXBfcGVuYWx0eSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogLTE7XG5cbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE5lZWRsZW1hbld1bnNjaCk7XG5cbiAgICAgICAgdGhpcy5zZXF1ZW5jZTEgPSBzZXF1ZW5jZTE7XG4gICAgICAgIHRoaXMuc2VxdWVuY2UyID0gc2VxdWVuY2UyO1xuICAgICAgICB0aGlzLm1hdGNoX3Njb3JlID0gbWF0Y2hfc2NvcmU7XG4gICAgICAgIHRoaXMubWlzbWF0Y2hfcGVuYWx0eSA9IG1pc21hdGNoX3BlbmFsdHk7XG4gICAgICAgIHRoaXMuZ2FwX3BlbmFsdHkgPSBnYXBfcGVuYWx0eTtcblxuICAgICAgICAvLyBKdXN0IHRoZSByZW1vdmUgcmVkdW5kYW5jeVxuICAgICAgICB0aGlzLmlNYXggPSBzZXF1ZW5jZTEubGVuZ3RoICsgMTtcbiAgICAgICAgdGhpcy5qTWF4ID0gc2VxdWVuY2UyLmxlbmd0aCArIDE7XG5cbiAgICAgICAgLy8gR3JpZCBtYXRyaXggb2Ygc2NvcmVzXG4gICAgICAgIHRoaXMuZ3JpZCA9IG5ldyBBcnJheSh0aGlzLmlNYXgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaU1heDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRbaV0gPSBuZXcgQXJyYXkodGhpcy5qTWF4KTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLmpNYXg7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFtpXVtqXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUcmFjZWJhY2sgbWF0cml4ICgyRCBhcnJheSwgZWFjaCBjZWxsIGlzIGFuIGFycmF5IG9mIGJvb2xlYW4gdmFsdWVzIGZvciBbYERpYWdgLCBgVXBgLCBgTGVmdGBdIHBvc2l0aW9ucylcbiAgICAgICAgdGhpcy50cmFjZWJhY2tHcmlkID0gbmV3IEFycmF5KHRoaXMuaU1heCk7XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB0aGlzLmlNYXg7IF9pKyspIHtcbiAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtfaV0gPSBuZXcgQXJyYXkodGhpcy5qTWF4KTtcblxuICAgICAgICAgICAgZm9yICh2YXIgX2ogPSAwOyBfaiA8IHRoaXMuak1heDsgX2orKykge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtfaV1bX2pdID0gW251bGwsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGFsaWduZWQgc2VxdWVuY2VzIChyZXR1cm4gbXVsdGlwbGUgcG9zc2liaWxpdGllcylcbiAgICAgICAgdGhpcy5hbGlnbm1lbnRzID0gW107XG5cbiAgICAgICAgLy8gRmluYWwgYWxpZ25tZW50IHNjb3JlXG4gICAgICAgIHRoaXMuc2NvcmUgPSAtMTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgc2NvcmVzIGFuZCB0cmFjZWJhY2tzXG4gICAgICAgIHRoaXMuY29tcHV0ZUdyaWRzKCk7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKE5lZWRsZW1hbld1bnNjaCwgW3tcbiAgICAgICAga2V5OiBcImdldFNjb3JlXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTY29yZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNjb3JlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiZ2V0QWxpZ25tZW50c1wiLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxpZ25tZW50cygpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsaWdubWVudHM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYWluIGR5bmFtaWMgcHJvZ3JhbW1pbmcgcHJvY2VkdXJlXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJjb21wdXRlR3JpZHNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXB1dGVHcmlkcygpIHtcbiAgICAgICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpcnN0IHJvd1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCB0aGlzLmpNYXg7IGorKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFswXVtqXSA9IHRoaXMuZ3JpZFswXVtqIC0gMV0gKyB0aGlzLmdhcF9wZW5hbHR5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFswXVtqXSA9IFtmYWxzZSwgZmFsc2UsIHRydWVdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBGaWxsIGluIHRoZSBmaXJzdCBjb2x1bW5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5pTWF4OyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRbaV1bMF0gPSB0aGlzLmdyaWRbaSAtIDFdWzBdICsgdGhpcy5nYXBfcGVuYWx0eTtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYWNlYmFja0dyaWRbaV1bMF0gPSBbZmFsc2UsIHRydWUsIGZhbHNlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmlsbCB0aGUgcmVzdCBvZiB0aGUgZ3JpZFxuICAgICAgICAgICAgZm9yICh2YXIgX2kyID0gMTsgX2kyIDwgdGhpcy5pTWF4OyBfaTIrKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9qMiA9IDE7IF9qMiA8IHRoaXMuak1heDsgX2oyKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgbWF4IHNjb3JlKHMpIGFtb25nIFtgRGlhZ2AsIGBVcGAsIGBMZWZ0YF1cbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpYWcgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcXVlbmNlMVtfaTIgLSAxXSA9PT0gdGhpcy5zZXF1ZW5jZTJbX2oyIC0gMV0pIGRpYWcgPSB0aGlzLmdyaWRbX2kyIC0gMV1bX2oyIC0gMV0gKyB0aGlzLm1hdGNoX3Njb3JlO2Vsc2UgZGlhZyA9IHRoaXMuZ3JpZFtfaTIgLSAxXVtfajIgLSAxXSArIHRoaXMubWlzbWF0Y2hfcGVuYWx0eTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgdXAgPSB0aGlzLmdyaWRbX2kyIC0gMV1bX2oyXSArIHRoaXMuZ2FwX3BlbmFsdHk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gdGhpcy5ncmlkW19pMl1bX2oyIC0gMV0gKyB0aGlzLmdhcF9wZW5hbHR5O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGV4aXN0cyBtdWx0aXBsZSBtYXggdmFsdWVzLCBjYXB0dXJlIHRoZW0gZm9yIG11bHRpcGxlIHBhdGhzXG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhPZiA9IFtkaWFnLCB1cCwgbGVmdF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRpY2VzID0gdGhpcy5hcnJheUFsbE1heEluZGV4ZXMobWF4T2YpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBHcmlkc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWRbX2kyXVtfajJdID0gbWF4T2ZbaW5kaWNlc1swXV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhY2ViYWNrR3JpZFtfaTJdW19qMl0gPSBbaW5kaWNlcy5pbmNsdWRlcygwKSwgaW5kaWNlcy5pbmNsdWRlcygxKSwgaW5kaWNlcy5pbmNsdWRlcygyKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVcGRhdGUgYWxpZ25tZW50IHNjb3JlXG4gICAgICAgICAgICB0aGlzLnNjb3JlID0gdGhpcy5ncmlkW3RoaXMuaU1heCAtIDFdW3RoaXMuak1heCAtIDFdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0cyBhbGwgcG9zc2libGUgdmFsaWQgc2VxdWVuY2UgY29tYmluYXRpb25zXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogXCJhbGlnbm1lbnRUcmFjZWJhY2tcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFsaWdubWVudFRyYWNlYmFjaygpIHtcbiAgICAgICAgICAgIHZhciBpblByb2Nlc3NBbGlnbm1lbnRzID0gW107XG5cbiAgICAgICAgICAgIGluUHJvY2Vzc0FsaWdubWVudHMucHVzaCh7IHBvczogW3RoaXMuc2VxdWVuY2UxLmxlbmd0aCwgdGhpcy5zZXF1ZW5jZTIubGVuZ3RoXSxcbiAgICAgICAgICAgICAgICBzZXExOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNlcTI6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB3aGlsZSAoaW5Qcm9jZXNzQWxpZ25tZW50c1swXSkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gaW5Qcm9jZXNzQWxpZ25tZW50c1swXTtcbiAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aW9ucyA9IHRoaXMudHJhY2ViYWNrR3JpZFtjdXJyZW50LnBvc1swXV1bY3VycmVudC5wb3NbMV1dO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbY3VycmVudC5wb3NbMF0gLSAxLCBjdXJyZW50LnBvc1sxXSAtIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMTogdGhpcy5zZXF1ZW5jZTFbY3VycmVudC5wb3NbMF0gLSAxXSArIGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTI6IHRoaXMuc2VxdWVuY2UyW2N1cnJlbnQucG9zWzFdIC0gMV0gKyBjdXJyZW50LnNlcTJcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25zWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgIGluUHJvY2Vzc0FsaWdubWVudHMucHVzaCh7IHBvczogW2N1cnJlbnQucG9zWzBdIC0gMSwgY3VycmVudC5wb3NbMV1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxMTogdGhpcy5zZXF1ZW5jZTFbY3VycmVudC5wb3NbMF0gLSAxXSArIGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcTI6ICctJyArIGN1cnJlbnQuc2VxMlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnNbMl0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5Qcm9jZXNzQWxpZ25tZW50cy5wdXNoKHsgcG9zOiBbY3VycmVudC5wb3NbMF0sIGN1cnJlbnQucG9zWzFdIC0gMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXExOiAnLScgKyBjdXJyZW50LnNlcTEsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXEyOiB0aGlzLnNlcXVlbmNlMltjdXJyZW50LnBvc1sxXSAtIDFdICsgY3VycmVudC5zZXEyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnBvc1swXSA9PT0gMCAmJiBjdXJyZW50LnBvc1sxXSA9PT0gMCkgdGhpcy5hbGlnbm1lbnRzLnB1c2goeyBzZXF1ZW5jZTE6IGN1cnJlbnQuc2VxMSxcbiAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2UyOiBjdXJyZW50LnNlcTJcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGluUHJvY2Vzc0FsaWdubWVudHMuc2hpZnQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxpZ25tZW50cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhlbHBlciBGdW5jdGlvbnNcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiBcImdldEFsbEluZGV4ZXNcIixcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFsbEluZGV4ZXMoYXJyLCB2YWwpIHtcbiAgICAgICAgICAgIHZhciBpbmRleGVzID0gW10sXG4gICAgICAgICAgICAgICAgaSA9IC0xO1xuICAgICAgICAgICAgd2hpbGUgKChpID0gYXJyLmluZGV4T2YodmFsLCBpICsgMSkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGluZGV4ZXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6IFwiYXJyYXlBbGxNYXhJbmRleGVzXCIsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhcnJheUFsbE1heEluZGV4ZXMoYXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFsbEluZGV4ZXMoYXJyYXksIE1hdGgubWF4LmFwcGx5KG51bGwsIGFycmF5KSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gTmVlZGxlbWFuV3Vuc2NoO1xufSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5lZWRsZW1hbld1bnNjaDtcblxuLyoqKi8gfSksXG4vKiAyNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgbGF5b3V0QmFzZSA9IGZ1bmN0aW9uIGxheW91dEJhc2UoKSB7XG4gIHJldHVybjtcbn07XG5cbmxheW91dEJhc2UuRkRMYXlvdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcbmxheW91dEJhc2UuRkRMYXlvdXRDb25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xubGF5b3V0QmFzZS5GRExheW91dEVkZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcbmxheW91dEJhc2UuRkRMYXlvdXROb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5sYXlvdXRCYXNlLkRpbWVuc2lvbkQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtcbmxheW91dEJhc2UuSGFzaE1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xubGF5b3V0QmFzZS5IYXNoU2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5sYXlvdXRCYXNlLklHZW9tZXRyeSA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5sYXlvdXRCYXNlLklNYXRoID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcbmxheW91dEJhc2UuSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xubGF5b3V0QmFzZS5Qb2ludCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xubGF5b3V0QmFzZS5Qb2ludEQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xubGF5b3V0QmFzZS5SYW5kb21TZWVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5sYXlvdXRCYXNlLlJlY3RhbmdsZUQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcbmxheW91dEJhc2UuVHJhbnNmb3JtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5sYXlvdXRCYXNlLlVuaXF1ZUlER2VuZXJldG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5sYXlvdXRCYXNlLlF1aWNrc29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xubGF5b3V0QmFzZS5MaW5rZWRMaXN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5sYXlvdXRCYXNlLkxHcmFwaE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5sYXlvdXRCYXNlLkxHcmFwaCA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5sYXlvdXRCYXNlLkxFZGdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbmxheW91dEJhc2UuTEdyYXBoTWFuYWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5sYXlvdXRCYXNlLkxOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbmxheW91dEJhc2UuTGF5b3V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5sYXlvdXRCYXNlLkxheW91dENvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5sYXlvdXRCYXNlLk5lZWRsZW1hbld1bnNjaCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxheW91dEJhc2U7XG5cbi8qKiovIH0pLFxuLyogMjcgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuZnVuY3Rpb24gRW1pdHRlcigpIHtcbiAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcbn1cblxudmFyIHAgPSBFbWl0dGVyLnByb3RvdHlwZTtcblxucC5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgdGhpcy5saXN0ZW5lcnMucHVzaCh7XG4gICAgZXZlbnQ6IGV2ZW50LFxuICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICB9KTtcbn07XG5cbnAucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSB0aGlzLmxpc3RlbmVycy5sZW5ndGg7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGwgPSB0aGlzLmxpc3RlbmVyc1tpXTtcblxuICAgIGlmIChsLmV2ZW50ID09PSBldmVudCAmJiBsLmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgfVxufTtcblxucC5lbWl0ID0gZnVuY3Rpb24gKGV2ZW50LCBkYXRhKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbCA9IHRoaXMubGlzdGVuZXJzW2ldO1xuXG4gICAgaWYgKGV2ZW50ID09PSBsLmV2ZW50KSB7XG4gICAgICBsLmNhbGxiYWNrKGRhdGEpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFbWl0dGVyO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/layout-base/layout-base.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js": +/*!****************************************************************************************!*\ + !*** ../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.sanitizeUrl = exports.BLANK_URL = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar htmlCtrlEntityRegex = /&(newline|tab);/gi;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^.+(:|:)/gim;\nvar relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(ctrlCharactersRegex, \"\");\n return removedNullByte.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return exports.BLANK_URL;\n }\n var sanitizedUrl = decodeHtmlCharacters(url)\n .replace(htmlCtrlEntityRegex, \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return exports.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return exports.BLANK_URL;\n }\n return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvbm9kZV9tb2R1bGVzL0BicmFpbnRyZWUvc2FuaXRpemUtdXJsL2Rpc3QvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsbUJBQW1CLEdBQUcsaUJBQWlCO0FBQ3ZDO0FBQ0Esc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBLG1DQUFtQztBQUNuQztBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL25vZGVfbW9kdWxlcy9AYnJhaW50cmVlL3Nhbml0aXplLXVybC9kaXN0L2luZGV4LmpzPzk4ZmIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNhbml0aXplVXJsID0gZXhwb3J0cy5CTEFOS19VUkwgPSB2b2lkIDA7XG52YXIgaW52YWxpZFByb3RvY29sUmVnZXggPSAvXihbXlxcd10qKShqYXZhc2NyaXB0fGRhdGF8dmJzY3JpcHQpL2ltO1xudmFyIGh0bWxFbnRpdGllc1JlZ2V4ID0gLyYjKFxcdyspKF5cXHd8Oyk/L2c7XG52YXIgaHRtbEN0cmxFbnRpdHlSZWdleCA9IC8mKG5ld2xpbmV8dGFiKTsvZ2k7XG52YXIgY3RybENoYXJhY3RlcnNSZWdleCA9IC9bXFx1MDAwMC1cXHUwMDFGXFx1MDA3Ri1cXHUwMDlGXFx1MjAwMC1cXHUyMDBEXFx1RkVGRl0vZ2ltO1xudmFyIHVybFNjaGVtZVJlZ2V4ID0gL14uKyg6fCZjb2xvbjspL2dpbTtcbnZhciByZWxhdGl2ZUZpcnN0Q2hhcmFjdGVycyA9IFtcIi5cIiwgXCIvXCJdO1xuZXhwb3J0cy5CTEFOS19VUkwgPSBcImFib3V0OmJsYW5rXCI7XG5mdW5jdGlvbiBpc1JlbGF0aXZlVXJsV2l0aG91dFByb3RvY29sKHVybCkge1xuICAgIHJldHVybiByZWxhdGl2ZUZpcnN0Q2hhcmFjdGVycy5pbmRleE9mKHVybFswXSkgPiAtMTtcbn1cbi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjk4MjQ1NTAvMjYwMTU1MlxuZnVuY3Rpb24gZGVjb2RlSHRtbENoYXJhY3RlcnMoc3RyKSB7XG4gICAgdmFyIHJlbW92ZWROdWxsQnl0ZSA9IHN0ci5yZXBsYWNlKGN0cmxDaGFyYWN0ZXJzUmVnZXgsIFwiXCIpO1xuICAgIHJldHVybiByZW1vdmVkTnVsbEJ5dGUucmVwbGFjZShodG1sRW50aXRpZXNSZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBkZWMpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZGVjKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHNhbml0aXplVXJsKHVybCkge1xuICAgIGlmICghdXJsKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLkJMQU5LX1VSTDtcbiAgICB9XG4gICAgdmFyIHNhbml0aXplZFVybCA9IGRlY29kZUh0bWxDaGFyYWN0ZXJzKHVybClcbiAgICAgICAgLnJlcGxhY2UoaHRtbEN0cmxFbnRpdHlSZWdleCwgXCJcIilcbiAgICAgICAgLnJlcGxhY2UoY3RybENoYXJhY3RlcnNSZWdleCwgXCJcIilcbiAgICAgICAgLnRyaW0oKTtcbiAgICBpZiAoIXNhbml0aXplZFVybCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cy5CTEFOS19VUkw7XG4gICAgfVxuICAgIGlmIChpc1JlbGF0aXZlVXJsV2l0aG91dFByb3RvY29sKHNhbml0aXplZFVybCkpIHtcbiAgICAgICAgcmV0dXJuIHNhbml0aXplZFVybDtcbiAgICB9XG4gICAgdmFyIHVybFNjaGVtZVBhcnNlUmVzdWx0cyA9IHNhbml0aXplZFVybC5tYXRjaCh1cmxTY2hlbWVSZWdleCk7XG4gICAgaWYgKCF1cmxTY2hlbWVQYXJzZVJlc3VsdHMpIHtcbiAgICAgICAgcmV0dXJuIHNhbml0aXplZFVybDtcbiAgICB9XG4gICAgdmFyIHVybFNjaGVtZSA9IHVybFNjaGVtZVBhcnNlUmVzdWx0c1swXTtcbiAgICBpZiAoaW52YWxpZFByb3RvY29sUmVnZXgudGVzdCh1cmxTY2hlbWUpKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzLkJMQU5LX1VSTDtcbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXplZFVybDtcbn1cbmV4cG9ydHMuc2FuaXRpemVVcmwgPSBzYW5pdGl6ZVVybDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/ms/index.js": +/*!*****************************************!*\ + !*** ../../../node_modules/ms/index.js ***! + \*****************************************/ +/***/ ((module) => { + +eval("/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsV0FBVyxRQUFRO0FBQ25CLFlBQVksT0FBTztBQUNuQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tcy9pbmRleC5qcz8yYTgzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgdyA9IGQgKiA3O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IHRocm93IGFuIGVycm9yIGlmIHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgbnVtYmVyXG4gKiBAcmV0dXJuIHtTdHJpbmd8TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2UodmFsKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSh2YWwpKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubG9uZyA/IGZtdExvbmcodmFsKSA6IGZtdFNob3J0KHZhbCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPScgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkodmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbWF0Y2ggPSAvXigtPyg/OlxcZCspP1xcLj9cXGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoXG4gICAgc3RyXG4gICk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG4gPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgdmFyIHR5cGUgPSAobWF0Y2hbMl0gfHwgJ21zJykudG9Mb3dlckNhc2UoKTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAneWVhcnMnOlxuICAgIGNhc2UgJ3llYXInOlxuICAgIGNhc2UgJ3lycyc6XG4gICAgY2FzZSAneXInOlxuICAgIGNhc2UgJ3knOlxuICAgICAgcmV0dXJuIG4gKiB5O1xuICAgIGNhc2UgJ3dlZWtzJzpcbiAgICBjYXNlICd3ZWVrJzpcbiAgICBjYXNlICd3JzpcbiAgICAgIHJldHVybiBuICogdztcbiAgICBjYXNlICdkYXlzJzpcbiAgICBjYXNlICdkYXknOlxuICAgIGNhc2UgJ2QnOlxuICAgICAgcmV0dXJuIG4gKiBkO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICBjYXNlICdob3VyJzpcbiAgICBjYXNlICdocnMnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdoJzpcbiAgICAgIHJldHVybiBuICogaDtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICBjYXNlICdtaW51dGUnOlxuICAgIGNhc2UgJ21pbnMnOlxuICAgIGNhc2UgJ21pbic6XG4gICAgY2FzZSAnbSc6XG4gICAgICByZXR1cm4gbiAqIG07XG4gICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICBjYXNlICdzZWNzJzpcbiAgICBjYXNlICdzZWMnOlxuICAgIGNhc2UgJ3MnOlxuICAgICAgcmV0dXJuIG4gKiBzO1xuICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgIGNhc2UgJ21zZWNzJzpcbiAgICBjYXNlICdtc2VjJzpcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gbjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFNob3J0IGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdFNob3J0KG1zKSB7XG4gIHZhciBtc0FicyA9IE1hdGguYWJzKG1zKTtcbiAgaWYgKG1zQWJzID49IGQpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGQpICsgJ2QnO1xuICB9XG4gIGlmIChtc0FicyA+PSBoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBoKSArICdoJztcbiAgfVxuICBpZiAobXNBYnMgPj0gbSkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gbSkgKyAnbSc7XG4gIH1cbiAgaWYgKG1zQWJzID49IHMpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIHMpICsgJ3MnO1xuICB9XG4gIHJldHVybiBtcyArICdtcyc7XG59XG5cbi8qKlxuICogTG9uZyBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRMb25nKG1zKSB7XG4gIHZhciBtc0FicyA9IE1hdGguYWJzKG1zKTtcbiAgaWYgKG1zQWJzID49IGQpIHtcbiAgICByZXR1cm4gcGx1cmFsKG1zLCBtc0FicywgZCwgJ2RheScpO1xuICB9XG4gIGlmIChtc0FicyA+PSBoKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIGgsICdob3VyJyk7XG4gIH1cbiAgaWYgKG1zQWJzID49IG0pIHtcbiAgICByZXR1cm4gcGx1cmFsKG1zLCBtc0FicywgbSwgJ21pbnV0ZScpO1xuICB9XG4gIGlmIChtc0FicyA+PSBzKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIHMsICdzZWNvbmQnKTtcbiAgfVxuICByZXR1cm4gbXMgKyAnIG1zJztcbn1cblxuLyoqXG4gKiBQbHVyYWxpemF0aW9uIGhlbHBlci5cbiAqL1xuXG5mdW5jdGlvbiBwbHVyYWwobXMsIG1zQWJzLCBuLCBuYW1lKSB7XG4gIHZhciBpc1BsdXJhbCA9IG1zQWJzID49IG4gKiAxLjU7XG4gIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gbikgKyAnICcgKyBuYW1lICsgKGlzUGx1cmFsID8gJ3MnIDogJycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/ms/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/pica/dist/pica.js": +/*!***********************************************!*\ + !*** ../../../node_modules/pica/dist/pica.js ***! + \***********************************************/ +/***/ ((module) => { + +eval("/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\n(function(f){if(true){module.exports=f()}else { var g; }})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=undefined;if(!f&&c)return require(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=undefined,i=0;i= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\ninherits(MathLib, Multimath);\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"inherits\":19,\"multimath\":20}],2:[function(_dereq_,module,exports){\n// Resize convolvers, pure JS implementation\n//\n'use strict'; // Precision of fixed FP values\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n} // Convolve image in horizontal directions and transpose output. In theory,\n// transpose allow:\n//\n// - use the same convolver for both passes (this fails due different\n// types of input array and temporary buffer)\n// - making vertical pass by horisonltal lines inprove CPU cache use.\n//\n// But in real life this doesn't work :)\n//\n\n\nfunction convolveHorizontally(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Technically, convolvers are the same. But input array and temporary\n// buffer can be of different type (especially, in old browsers). So,\n// keep code in separate functions to avoid deoptimizations & speed loss.\n\n\nfunction convolveVertically(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHorizontally: convolveHorizontally,\n convolveVertically: convolveVertically\n};\n\n},{}],3:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = 'AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs=';\n\n},{}],4:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar convolveHorizontally = _dereq_('./convolve').convolveHorizontally;\n\nvar convolveVertically = _dereq_('./convolve').convolveVertically;\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY);\n var tmp = new Uint8Array(destW * srcH * 4); // To use single function we need src & tmp of the same type.\n // But src can be CanvasPixelArray, and tmp - Uint8Array. So, keep\n // vertical and horizontal passes separately to avoid deoptimization.\n\n convolveHorizontally(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertically(tmp, dest, srcH, destW, destH, filtersY); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n// Calculate convolution filters for each destination point,\n// and pack data to Int16Array:\n//\n// [ shift, length, data..., shift2, length2, data..., ... ]\n//\n// - shift - offset in src image\n// - length - filter length (in src points)\n// - data - filter values sequence\n//\n'use strict';\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(quality, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO[quality].filter;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO[quality].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n// Filter definitions to build tables for\n// resizing convolvers.\n//\n// Presets for quality 0..3. Filter functions + window size\n//\n'use strict';\n\nmodule.exports = [{\n // Nearest neibor (Box)\n win: 0.5,\n filter: function filter(x) {\n return x >= -0.5 && x < 0.5 ? 1.0 : 0.0;\n }\n}, {\n // Hamming\n win: 1.0,\n filter: function filter(x) {\n if (x <= -1.0 || x >= 1.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n}, {\n // Lanczos, win = 2\n win: 2.0,\n filter: function filter(x) {\n if (x <= -2.0 || x >= 2.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n}, {\n // Lanczos, win = 3\n win: 3.0,\n filter: function filter(x) {\n if (x <= -3.0 || x >= 3.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n}];\n\n},{}],8:[function(_dereq_,module,exports){\n'use strict';\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0; // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + Math.max(src.byteLength, dest.byteLength));\n\n var filtersX_offset = this.__align(tmp_offset + srcH * destW * 4);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); //\n // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH); //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW)); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n// Unsharp mask filter\n//\n// http://stackoverflow.com/a/23322820/1031804\n// USM(O) = O + (2 * (Amount / 100) * (O - GB))\n// GB - gaussian blur.\n//\n// Image is converted from RGB to HSV, unsharp mask is applied to the\n// brightness channel and then image is converted back to RGB.\n//\n'use strict';\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n'use strict';\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n// This is autogenerated file from math.wasm, don't edit.\n//\n'use strict';\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n'use strict';\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// Add intermediate resizing steps when scaling down by a very large factor.\n//\n// For example, when resizing 10000x10000 down to 10x10, it'll resize it to\n// 300x300 first.\n//\n// It's needed because tiler has issues when the entire tile is scaled down\n// to a few pixels (1024px source tile with border size 3 should result in\n// at least 3+3+2 = 8px target tile, so max scale factor is 128 here).\n//\n// Also, adding intermediate steps can speed up processing if we use lower\n// quality algorithms for first stages.\n//\n'use strict'; // min size = 0 results in infinite loop,\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n// Split original image into multiple 1024x1024 chunks to reduce memory usage\n// (images have to be unpacked into typed arrays for resizing) and allow\n// parallel processing of multiple tiles at a time.\n//\n'use strict';\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n'use strict';\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n// Web Worker wrapper for image resize function\n'use strict';\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n var returnBitmap = false;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null; // Temporary force out data to typed array, because Chrome have artefacts\n // https://github.com/nodeca/pica/issues/223\n // returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n if (returnBitmap) {\n var toImageData = new ImageData(new Uint8ClampedArray(data), tileOpts.toWidth, tileOpts.toHeight);\n\n var _canvas = new OffscreenCanvas(tileOpts.toWidth, tileOpts.toHeight);\n\n var _ctx = _canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n\n _ctx.putImageData(toImageData, 0, 0);\n\n createImageBitmap(_canvas).then(function (bitmap) {\n postMessage({\n bitmap: bitmap\n }, [bitmap]);\n });\n } else {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height, radius);\n convolveMono16(out, src, tmp_line, coeff, height, width, radius);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n},{}],20:[function(_dereq_,module,exports){\n'use strict';\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":21,\"./lib/wa_detect\":22,\"object-assign\":23}],21:[function(_dereq_,module,exports){\n// base64 decode str -> Uint8Array, to load WA modules\n//\n'use strict';\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n// Detect WebAssembly support.\n// - Check global WebAssembly object\n// - Try to load simple module (can be disabled via CSP)\n//\n'use strict';\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],23:[function(_dereq_,module,exports){\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],24:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n quality: 3,\n alpha: false,\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d', {\n alpha: Boolean(opts.alpha)\n }); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n quality: opts.quality,\n alpha: opts.alpha,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0;\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n quality: isLastStage ? opts.quality : Math.min(1, opts.quality)\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(opts.quality)\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Prevent stepper from infinite loop\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options);\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":23,\"webworkify\":24}]},{},[])(\"/index.js\")\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BpY2EvZGlzdC9waWNhLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsYUFBYSxHQUFHLElBQXNELEVBQUUsbUJBQW1CLEtBQUssVUFBNk4sQ0FBQyxhQUFhLDBCQUEwQixtQkFBbUIsa0JBQWtCLGdCQUFnQixVQUFVLFVBQVUsTUFBTSxTQUFtQyxDQUFDLGdCQUFnQixPQUFDLE9BQU8sb0JBQW9CLDhDQUE4QyxrQ0FBa0MsWUFBWSxZQUFZLG1DQUFtQyxpQkFBaUIsZUFBZSxzQkFBc0Isb0JBQW9CLFVBQVUsU0FBbUMsS0FBSyxXQUFXLFlBQVksU0FBUyxTQUFTLEtBQUs7QUFDenpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLENBQUMsRUFBRSxtRUFBbUU7QUFDdEU7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCLGlCQUFpQixhQUFhO0FBQzlCLG1CQUFtQjs7QUFFbkIsb0JBQW9CLGVBQWU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7O0FBRXpCLGFBQWEsZ0JBQWdCO0FBQzdCLDBDQUEwQztBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUVBOztBQUVBLENBQUMsRUFBRSw0SUFBNEksRUFBRSxHQUFHO0FBQ3BKLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BpY2EvZGlzdC9waWNhLmpzP2ZmNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG5cbnBpY2Fcbmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYVxuXG4qL1xuXG4oZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT1cIm9iamVjdFwiJiZ0eXBlb2YgbW9kdWxlIT09XCJ1bmRlZmluZWRcIil7bW9kdWxlLmV4cG9ydHM9ZigpfWVsc2UgaWYodHlwZW9mIGRlZmluZT09PVwiZnVuY3Rpb25cIiYmZGVmaW5lLmFtZCl7ZGVmaW5lKFtdLGYpfWVsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCIpe2c9d2luZG93fWVsc2UgaWYodHlwZW9mIGdsb2JhbCE9PVwidW5kZWZpbmVkXCIpe2c9Z2xvYmFsfWVsc2UgaWYodHlwZW9mIHNlbGYhPT1cInVuZGVmaW5lZFwiKXtnPXNlbGZ9ZWxzZXtnPXRoaXN9Zy5waWNhID0gZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSh7MTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBDb2xsZWN0aW9uIG9mIG1hdGggZnVuY3Rpb25zXG4vL1xuLy8gMS4gQ29tYmluZSBjb21wb25lbnRzIHRvZ2V0aGVyXG4vLyAyLiBIYXMgYXN5bmMgaW5pdCB0byBsb2FkIHdhc20gbW9kdWxlc1xuLy9cbid1c2Ugc3RyaWN0JztcblxudmFyIGluaGVyaXRzID0gX2RlcmVxXygnaW5oZXJpdHMnKTtcblxudmFyIE11bHRpbWF0aCA9IF9kZXJlcV8oJ211bHRpbWF0aCcpO1xuXG52YXIgbW1fdW5zaGFycF9tYXNrID0gX2RlcmVxXygnLi9tbV91bnNoYXJwX21hc2snKTtcblxudmFyIG1tX3Jlc2l6ZSA9IF9kZXJlcV8oJy4vbW1fcmVzaXplJyk7XG5cbmZ1bmN0aW9uIE1hdGhMaWIocmVxdWVzdGVkX2ZlYXR1cmVzKSB7XG4gIHZhciBfX3JlcXVlc3RlZF9mZWF0dXJlcyA9IHJlcXVlc3RlZF9mZWF0dXJlcyB8fCBbXTtcblxuICB2YXIgZmVhdHVyZXMgPSB7XG4gICAganM6IF9fcmVxdWVzdGVkX2ZlYXR1cmVzLmluZGV4T2YoJ2pzJykgPj0gMCxcbiAgICB3YXNtOiBfX3JlcXVlc3RlZF9mZWF0dXJlcy5pbmRleE9mKCd3YXNtJykgPj0gMFxuICB9O1xuICBNdWx0aW1hdGguY2FsbCh0aGlzLCBmZWF0dXJlcyk7XG4gIHRoaXMuZmVhdHVyZXMgPSB7XG4gICAganM6IGZlYXR1cmVzLmpzLFxuICAgIHdhc206IGZlYXR1cmVzLndhc20gJiYgdGhpcy5oYXNfd2FzbSgpXG4gIH07XG4gIHRoaXMudXNlKG1tX3Vuc2hhcnBfbWFzayk7XG4gIHRoaXMudXNlKG1tX3Jlc2l6ZSk7XG59XG5cbmluaGVyaXRzKE1hdGhMaWIsIE11bHRpbWF0aCk7XG5cbk1hdGhMaWIucHJvdG90eXBlLnJlc2l6ZUFuZFVuc2hhcnAgPSBmdW5jdGlvbiByZXNpemVBbmRVbnNoYXJwKG9wdGlvbnMsIGNhY2hlKSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLnJlc2l6ZShvcHRpb25zLCBjYWNoZSk7XG5cbiAgaWYgKG9wdGlvbnMudW5zaGFycEFtb3VudCkge1xuICAgIHRoaXMudW5zaGFycF9tYXNrKHJlc3VsdCwgb3B0aW9ucy50b1dpZHRoLCBvcHRpb25zLnRvSGVpZ2h0LCBvcHRpb25zLnVuc2hhcnBBbW91bnQsIG9wdGlvbnMudW5zaGFycFJhZGl1cywgb3B0aW9ucy51bnNoYXJwVGhyZXNob2xkKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGhMaWI7XG5cbn0se1wiLi9tbV9yZXNpemVcIjo0LFwiLi9tbV91bnNoYXJwX21hc2tcIjo5LFwiaW5oZXJpdHNcIjoxOSxcIm11bHRpbWF0aFwiOjIwfV0sMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBSZXNpemUgY29udm9sdmVycywgcHVyZSBKUyBpbXBsZW1lbnRhdGlvblxuLy9cbid1c2Ugc3RyaWN0JzsgLy8gUHJlY2lzaW9uIG9mIGZpeGVkIEZQIHZhbHVlc1xuLy92YXIgRklYRURfRlJBQ19CSVRTID0gMTQ7XG5cbmZ1bmN0aW9uIGNsYW1wVG84KGkpIHtcbiAgcmV0dXJuIGkgPCAwID8gMCA6IGkgPiAyNTUgPyAyNTUgOiBpO1xufSAvLyBDb252b2x2ZSBpbWFnZSBpbiBob3Jpem9udGFsIGRpcmVjdGlvbnMgYW5kIHRyYW5zcG9zZSBvdXRwdXQuIEluIHRoZW9yeSxcbi8vIHRyYW5zcG9zZSBhbGxvdzpcbi8vXG4vLyAtIHVzZSB0aGUgc2FtZSBjb252b2x2ZXIgZm9yIGJvdGggcGFzc2VzICh0aGlzIGZhaWxzIGR1ZSBkaWZmZXJlbnRcbi8vICAgdHlwZXMgb2YgaW5wdXQgYXJyYXkgYW5kIHRlbXBvcmFyeSBidWZmZXIpXG4vLyAtIG1ha2luZyB2ZXJ0aWNhbCBwYXNzIGJ5IGhvcmlzb25sdGFsIGxpbmVzIGlucHJvdmUgQ1BVIGNhY2hlIHVzZS5cbi8vXG4vLyBCdXQgaW4gcmVhbCBsaWZlIHRoaXMgZG9lc24ndCB3b3JrIDopXG4vL1xuXG5cbmZ1bmN0aW9uIGNvbnZvbHZlSG9yaXpvbnRhbGx5KHNyYywgZGVzdCwgc3JjVywgc3JjSCwgZGVzdFcsIGZpbHRlcnMpIHtcbiAgdmFyIHIsIGcsIGIsIGE7XG4gIHZhciBmaWx0ZXJQdHIsIGZpbHRlclNoaWZ0LCBmaWx0ZXJTaXplO1xuICB2YXIgc3JjUHRyLCBzcmNZLCBkZXN0WCwgZmlsdGVyVmFsO1xuICB2YXIgc3JjT2Zmc2V0ID0gMCxcbiAgICAgIGRlc3RPZmZzZXQgPSAwOyAvLyBGb3IgZWFjaCByb3dcblxuICBmb3IgKHNyY1kgPSAwOyBzcmNZIDwgc3JjSDsgc3JjWSsrKSB7XG4gICAgZmlsdGVyUHRyID0gMDsgLy8gQXBwbHkgcHJlY29tcHV0ZWQgZmlsdGVycyB0byBlYWNoIGRlc3RpbmF0aW9uIHJvdyBwb2ludFxuXG4gICAgZm9yIChkZXN0WCA9IDA7IGRlc3RYIDwgZGVzdFc7IGRlc3RYKyspIHtcbiAgICAgIC8vIEdldCB0aGUgZmlsdGVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY3VycmVudCBvdXRwdXQgcGl4ZWwuXG4gICAgICBmaWx0ZXJTaGlmdCA9IGZpbHRlcnNbZmlsdGVyUHRyKytdO1xuICAgICAgZmlsdGVyU2l6ZSA9IGZpbHRlcnNbZmlsdGVyUHRyKytdO1xuICAgICAgc3JjUHRyID0gc3JjT2Zmc2V0ICsgZmlsdGVyU2hpZnQgKiA0IHwgMDtcbiAgICAgIHIgPSBnID0gYiA9IGEgPSAwOyAvLyBBcHBseSB0aGUgZmlsdGVyIHRvIHRoZSByb3cgdG8gZ2V0IHRoZSBkZXN0aW5hdGlvbiBwaXhlbCByLCBnLCBiLCBhXG5cbiAgICAgIGZvciAoOyBmaWx0ZXJTaXplID4gMDsgZmlsdGVyU2l6ZS0tKSB7XG4gICAgICAgIGZpbHRlclZhbCA9IGZpbHRlcnNbZmlsdGVyUHRyKytdOyAvLyBVc2UgcmV2ZXJzZSBvcmRlciB0byB3b3JrYXJvdW5kIGRlb3B0cyBpbiBvbGQgdjggKG5vZGUgdi4xMClcbiAgICAgICAgLy8gQmlnIHRoYW5rcyB0byBAbXJhbGVwaCAoVnlhY2hlc2xhdiBFZ29yb3YpIGZvciB0aGUgdGlwLlxuXG4gICAgICAgIGEgPSBhICsgZmlsdGVyVmFsICogc3JjW3NyY1B0ciArIDNdIHwgMDtcbiAgICAgICAgYiA9IGIgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyICsgMl0gfCAwO1xuICAgICAgICBnID0gZyArIGZpbHRlclZhbCAqIHNyY1tzcmNQdHIgKyAxXSB8IDA7XG4gICAgICAgIHIgPSByICsgZmlsdGVyVmFsICogc3JjW3NyY1B0cl0gfCAwO1xuICAgICAgICBzcmNQdHIgPSBzcmNQdHIgKyA0IHwgMDtcbiAgICAgIH0gLy8gQnJpbmcgdGhpcyB2YWx1ZSBiYWNrIGluIHJhbmdlLiBBbGwgb2YgdGhlIGZpbHRlciBzY2FsaW5nIGZhY3RvcnNcbiAgICAgIC8vIGFyZSBpbiBmaXhlZCBwb2ludCB3aXRoIEZJWEVEX0ZSQUNfQklUUyBiaXRzIG9mIGZyYWN0aW9uYWwgcGFydC5cbiAgICAgIC8vXG4gICAgICAvLyAoISkgQWRkIDEvMiBvZiB2YWx1ZSBiZWZvcmUgY2xhbXBpbmcgdG8gZ2V0IHByb3BlciByb3VuZGluZy4gSW4gb3RoZXJcbiAgICAgIC8vIGNhc2UgYnJpZ2h0bmVzcyBsb3NzIHdpbGwgYmUgbm90aWNlYWJsZSBpZiB5b3UgcmVzaXplIGltYWdlIHdpdGggd2hpdGVcbiAgICAgIC8vIGJvcmRlciBhbmQgcGxhY2UgaXQgb24gd2hpdGUgYmFja2dyb3VuZC5cbiAgICAgIC8vXG5cblxuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgM10gPSBjbGFtcFRvOChhICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMl0gPSBjbGFtcFRvOChiICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMV0gPSBjbGFtcFRvOChnICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0XSA9IGNsYW1wVG84KHIgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0T2Zmc2V0ID0gZGVzdE9mZnNldCArIHNyY0ggKiA0IHwgMDtcbiAgICB9XG5cbiAgICBkZXN0T2Zmc2V0ID0gKHNyY1kgKyAxKSAqIDQgfCAwO1xuICAgIHNyY09mZnNldCA9IChzcmNZICsgMSkgKiBzcmNXICogNCB8IDA7XG4gIH1cbn0gLy8gVGVjaG5pY2FsbHksIGNvbnZvbHZlcnMgYXJlIHRoZSBzYW1lLiBCdXQgaW5wdXQgYXJyYXkgYW5kIHRlbXBvcmFyeVxuLy8gYnVmZmVyIGNhbiBiZSBvZiBkaWZmZXJlbnQgdHlwZSAoZXNwZWNpYWxseSwgaW4gb2xkIGJyb3dzZXJzKS4gU28sXG4vLyBrZWVwIGNvZGUgaW4gc2VwYXJhdGUgZnVuY3Rpb25zIHRvIGF2b2lkIGRlb3B0aW1pemF0aW9ucyAmIHNwZWVkIGxvc3MuXG5cblxuZnVuY3Rpb24gY29udm9sdmVWZXJ0aWNhbGx5KHNyYywgZGVzdCwgc3JjVywgc3JjSCwgZGVzdFcsIGZpbHRlcnMpIHtcbiAgdmFyIHIsIGcsIGIsIGE7XG4gIHZhciBmaWx0ZXJQdHIsIGZpbHRlclNoaWZ0LCBmaWx0ZXJTaXplO1xuICB2YXIgc3JjUHRyLCBzcmNZLCBkZXN0WCwgZmlsdGVyVmFsO1xuICB2YXIgc3JjT2Zmc2V0ID0gMCxcbiAgICAgIGRlc3RPZmZzZXQgPSAwOyAvLyBGb3IgZWFjaCByb3dcblxuICBmb3IgKHNyY1kgPSAwOyBzcmNZIDwgc3JjSDsgc3JjWSsrKSB7XG4gICAgZmlsdGVyUHRyID0gMDsgLy8gQXBwbHkgcHJlY29tcHV0ZWQgZmlsdGVycyB0byBlYWNoIGRlc3RpbmF0aW9uIHJvdyBwb2ludFxuXG4gICAgZm9yIChkZXN0WCA9IDA7IGRlc3RYIDwgZGVzdFc7IGRlc3RYKyspIHtcbiAgICAgIC8vIEdldCB0aGUgZmlsdGVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY3VycmVudCBvdXRwdXQgcGl4ZWwuXG4gICAgICBmaWx0ZXJTaGlmdCA9IGZpbHRlcnNbZmlsdGVyUHRyKytdO1xuICAgICAgZmlsdGVyU2l6ZSA9IGZpbHRlcnNbZmlsdGVyUHRyKytdO1xuICAgICAgc3JjUHRyID0gc3JjT2Zmc2V0ICsgZmlsdGVyU2hpZnQgKiA0IHwgMDtcbiAgICAgIHIgPSBnID0gYiA9IGEgPSAwOyAvLyBBcHBseSB0aGUgZmlsdGVyIHRvIHRoZSByb3cgdG8gZ2V0IHRoZSBkZXN0aW5hdGlvbiBwaXhlbCByLCBnLCBiLCBhXG5cbiAgICAgIGZvciAoOyBmaWx0ZXJTaXplID4gMDsgZmlsdGVyU2l6ZS0tKSB7XG4gICAgICAgIGZpbHRlclZhbCA9IGZpbHRlcnNbZmlsdGVyUHRyKytdOyAvLyBVc2UgcmV2ZXJzZSBvcmRlciB0byB3b3JrYXJvdW5kIGRlb3B0cyBpbiBvbGQgdjggKG5vZGUgdi4xMClcbiAgICAgICAgLy8gQmlnIHRoYW5rcyB0byBAbXJhbGVwaCAoVnlhY2hlc2xhdiBFZ29yb3YpIGZvciB0aGUgdGlwLlxuXG4gICAgICAgIGEgPSBhICsgZmlsdGVyVmFsICogc3JjW3NyY1B0ciArIDNdIHwgMDtcbiAgICAgICAgYiA9IGIgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyICsgMl0gfCAwO1xuICAgICAgICBnID0gZyArIGZpbHRlclZhbCAqIHNyY1tzcmNQdHIgKyAxXSB8IDA7XG4gICAgICAgIHIgPSByICsgZmlsdGVyVmFsICogc3JjW3NyY1B0cl0gfCAwO1xuICAgICAgICBzcmNQdHIgPSBzcmNQdHIgKyA0IHwgMDtcbiAgICAgIH0gLy8gQnJpbmcgdGhpcyB2YWx1ZSBiYWNrIGluIHJhbmdlLiBBbGwgb2YgdGhlIGZpbHRlciBzY2FsaW5nIGZhY3RvcnNcbiAgICAgIC8vIGFyZSBpbiBmaXhlZCBwb2ludCB3aXRoIEZJWEVEX0ZSQUNfQklUUyBiaXRzIG9mIGZyYWN0aW9uYWwgcGFydC5cbiAgICAgIC8vXG4gICAgICAvLyAoISkgQWRkIDEvMiBvZiB2YWx1ZSBiZWZvcmUgY2xhbXBpbmcgdG8gZ2V0IHByb3BlciByb3VuZGluZy4gSW4gb3RoZXJcbiAgICAgIC8vIGNhc2UgYnJpZ2h0bmVzcyBsb3NzIHdpbGwgYmUgbm90aWNlYWJsZSBpZiB5b3UgcmVzaXplIGltYWdlIHdpdGggd2hpdGVcbiAgICAgIC8vIGJvcmRlciBhbmQgcGxhY2UgaXQgb24gd2hpdGUgYmFja2dyb3VuZC5cbiAgICAgIC8vXG5cblxuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgM10gPSBjbGFtcFRvOChhICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMl0gPSBjbGFtcFRvOChiICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0ICsgMV0gPSBjbGFtcFRvOChnICsgKDEgPDwgMTMpID4+IDE0XG4gICAgICAvKkZJWEVEX0ZSQUNfQklUUyovXG4gICAgICApO1xuICAgICAgZGVzdFtkZXN0T2Zmc2V0XSA9IGNsYW1wVG84KHIgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0T2Zmc2V0ID0gZGVzdE9mZnNldCArIHNyY0ggKiA0IHwgMDtcbiAgICB9XG5cbiAgICBkZXN0T2Zmc2V0ID0gKHNyY1kgKyAxKSAqIDQgfCAwO1xuICAgIHNyY09mZnNldCA9IChzcmNZICsgMSkgKiBzcmNXICogNCB8IDA7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvbnZvbHZlSG9yaXpvbnRhbGx5OiBjb252b2x2ZUhvcml6b250YWxseSxcbiAgY29udm9sdmVWZXJ0aWNhbGx5OiBjb252b2x2ZVZlcnRpY2FsbHlcbn07XG5cbn0se31dLDM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLy8gVGhpcyBpcyBhdXRvZ2VuZXJhdGVkIGZpbGUgZnJvbSBtYXRoLndhc20sIGRvbid0IGVkaXQuXG4vL1xuJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9ICdBR0Z6YlFFQUFBQUFEQVprZVd4cGJtc0FBQUFBQUFFWEEyQUFBR0FHZjM5L2YzOS9BR0FIZjM5L2YzOS9md0FDRHdFRFpXNTJCbTFsYlc5eWVRSUFBQU1FQXdBQkFnWUdBWDhBUVFBTEIxY0ZFVjlmZDJGemJWOWpZV3hzWDJOMGIzSnpBQUFJWTI5dWRtOXNkbVVBQVFwamIyNTJiMngyWlVoV0FBSU1YMTlrYzI5ZmFHRnVaR3hsQXdBWVgxOTNZWE50WDJGd2NHeDVYMlJoZEdGZmNtVnNiMk56QUFBSzdBTURBd0FCQzhZREFROS9Ba0FnQTBVTkFDQUVSUTBBQTBBZ0RDRU5RUUFoRTBFQUlRY0RRQ0FIUVFKcUlRWUNmeUFIUVFGMElBVnFJZ2N1QVFJaUZFVUVRRUdBd0FBaENFR0F3QUFoQ1VHQXdBQWhDa0dBd0FBaEN5QUdEQUVMSUJJZ0J5NEJBR29oQ0VFQUlRc2dGQ0VIUVFBaERpQUdJUWxCQUNFUFFRQWhFQU5BSUFVZ0NVRUJkR291QVFBaUVTQUFJQWhCQW5ScUtBSUFJZ3BCR0hac0lCQnFJUkFnQ2tIL0FYRWdFV3dnQzJvaEN5QUtRUkIyUWY4QmNTQVJiQ0FQYWlFUElBcEJDSFpCL3dGeElCRnNJQTVxSVE0Z0NFRUJhaUVJSUFsQkFXb2hDU0FIUVFGcklnY05BQXNnQzBHQVFHc2hDQ0FPUVlCQWF5RUpJQTlCZ0VCcklRb2dFRUdBUUdzaEN5QUdJQlJxQ3lFSElBRWdEVUVDZEdvZ0NVRU9kU0lHUWY4QklBWkIvd0ZJR3lJR1FRQWdCa0VBU2h0QkNIUkJnUDREY1NBS1FRNTFJZ1pCL3dFZ0JrSC9BVWdiSWdaQkFDQUdRUUJLRzBFUWRFR0FnUHdIY1NBTFFRNTFJZ1pCL3dFZ0JrSC9BVWdiSWdaQkFDQUdRUUJLRzBFWWRISnlJQWhCRG5VaUJrSC9BU0FHUWY4QlNCc2lCa0VBSUFaQkFFb2JjallDQUNBRElBMXFJUTBnRTBFQmFpSVRJQVJIRFFBTElBeEJBV29pRENBQ2JDRVNJQU1nREVjTkFBc0xDeDRBUVFBZ0FpQURJQVFnQlNBQUVBRWdBa0VBSUFRZ0JTQUdJQUVRQVFzPSc7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbmFtZTogJ3Jlc2l6ZScsXG4gIGZuOiBfZGVyZXFfKCcuL3Jlc2l6ZScpLFxuICB3YXNtX2ZuOiBfZGVyZXFfKCcuL3Jlc2l6ZV93YXNtJyksXG4gIHdhc21fc3JjOiBfZGVyZXFfKCcuL2NvbnZvbHZlX3dhc21fYmFzZTY0Jylcbn07XG5cbn0se1wiLi9jb252b2x2ZV93YXNtX2Jhc2U2NFwiOjMsXCIuL3Jlc2l6ZVwiOjUsXCIuL3Jlc2l6ZV93YXNtXCI6OH1dLDU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRmlsdGVycyA9IF9kZXJlcV8oJy4vcmVzaXplX2ZpbHRlcl9nZW4nKTtcblxudmFyIGNvbnZvbHZlSG9yaXpvbnRhbGx5ID0gX2RlcmVxXygnLi9jb252b2x2ZScpLmNvbnZvbHZlSG9yaXpvbnRhbGx5O1xuXG52YXIgY29udm9sdmVWZXJ0aWNhbGx5ID0gX2RlcmVxXygnLi9jb252b2x2ZScpLmNvbnZvbHZlVmVydGljYWxseTtcblxuZnVuY3Rpb24gcmVzZXRBbHBoYShkc3QsIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHB0ciA9IDMsXG4gICAgICBsZW4gPSB3aWR0aCAqIGhlaWdodCAqIDQgfCAwO1xuXG4gIHdoaWxlIChwdHIgPCBsZW4pIHtcbiAgICBkc3RbcHRyXSA9IDB4RkY7XG4gICAgcHRyID0gcHRyICsgNCB8IDA7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXNpemUob3B0aW9ucykge1xuICB2YXIgc3JjID0gb3B0aW9ucy5zcmM7XG4gIHZhciBzcmNXID0gb3B0aW9ucy53aWR0aDtcbiAgdmFyIHNyY0ggPSBvcHRpb25zLmhlaWdodDtcbiAgdmFyIGRlc3RXID0gb3B0aW9ucy50b1dpZHRoO1xuICB2YXIgZGVzdEggPSBvcHRpb25zLnRvSGVpZ2h0O1xuICB2YXIgc2NhbGVYID0gb3B0aW9ucy5zY2FsZVggfHwgb3B0aW9ucy50b1dpZHRoIC8gb3B0aW9ucy53aWR0aDtcbiAgdmFyIHNjYWxlWSA9IG9wdGlvbnMuc2NhbGVZIHx8IG9wdGlvbnMudG9IZWlnaHQgLyBvcHRpb25zLmhlaWdodDtcbiAgdmFyIG9mZnNldFggPSBvcHRpb25zLm9mZnNldFggfHwgMDtcbiAgdmFyIG9mZnNldFkgPSBvcHRpb25zLm9mZnNldFkgfHwgMDtcbiAgdmFyIGRlc3QgPSBvcHRpb25zLmRlc3QgfHwgbmV3IFVpbnQ4QXJyYXkoZGVzdFcgKiBkZXN0SCAqIDQpO1xuICB2YXIgcXVhbGl0eSA9IHR5cGVvZiBvcHRpb25zLnF1YWxpdHkgPT09ICd1bmRlZmluZWQnID8gMyA6IG9wdGlvbnMucXVhbGl0eTtcbiAgdmFyIGFscGhhID0gb3B0aW9ucy5hbHBoYSB8fCBmYWxzZTtcbiAgdmFyIGZpbHRlcnNYID0gY3JlYXRlRmlsdGVycyhxdWFsaXR5LCBzcmNXLCBkZXN0Vywgc2NhbGVYLCBvZmZzZXRYKSxcbiAgICAgIGZpbHRlcnNZID0gY3JlYXRlRmlsdGVycyhxdWFsaXR5LCBzcmNILCBkZXN0SCwgc2NhbGVZLCBvZmZzZXRZKTtcbiAgdmFyIHRtcCA9IG5ldyBVaW50OEFycmF5KGRlc3RXICogc3JjSCAqIDQpOyAvLyBUbyB1c2Ugc2luZ2xlIGZ1bmN0aW9uIHdlIG5lZWQgc3JjICYgdG1wIG9mIHRoZSBzYW1lIHR5cGUuXG4gIC8vIEJ1dCBzcmMgY2FuIGJlIENhbnZhc1BpeGVsQXJyYXksIGFuZCB0bXAgLSBVaW50OEFycmF5LiBTbywga2VlcFxuICAvLyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBwYXNzZXMgc2VwYXJhdGVseSB0byBhdm9pZCBkZW9wdGltaXphdGlvbi5cblxuICBjb252b2x2ZUhvcml6b250YWxseShzcmMsIHRtcCwgc3JjVywgc3JjSCwgZGVzdFcsIGZpbHRlcnNYKTtcbiAgY29udm9sdmVWZXJ0aWNhbGx5KHRtcCwgZGVzdCwgc3JjSCwgZGVzdFcsIGRlc3RILCBmaWx0ZXJzWSk7IC8vIFRoYXQncyBmYXN0ZXIgdGhhbiBkb2luZyBjaGVja3MgaW4gY29udm9sdmVyLlxuICAvLyAhISEgTm90ZSwgY2FudmFzIGRhdGEgaXMgbm90IHByZW11bHRpcGxlZC4gV2UgZG9uJ3QgbmVlZCBvdGhlclxuICAvLyBhbHBoYSBjb3JyZWN0aW9ucy5cblxuICBpZiAoIWFscGhhKSByZXNldEFscGhhKGRlc3QsIGRlc3RXLCBkZXN0SCk7XG4gIHJldHVybiBkZXN0O1xufTtcblxufSx7XCIuL2NvbnZvbHZlXCI6MixcIi4vcmVzaXplX2ZpbHRlcl9nZW5cIjo2fV0sNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBDYWxjdWxhdGUgY29udm9sdXRpb24gZmlsdGVycyBmb3IgZWFjaCBkZXN0aW5hdGlvbiBwb2ludCxcbi8vIGFuZCBwYWNrIGRhdGEgdG8gSW50MTZBcnJheTpcbi8vXG4vLyBbIHNoaWZ0LCBsZW5ndGgsIGRhdGEuLi4sIHNoaWZ0MiwgbGVuZ3RoMiwgZGF0YS4uLiwgLi4uIF1cbi8vXG4vLyAtIHNoaWZ0IC0gb2Zmc2V0IGluIHNyYyBpbWFnZVxuLy8gLSBsZW5ndGggLSBmaWx0ZXIgbGVuZ3RoIChpbiBzcmMgcG9pbnRzKVxuLy8gLSBkYXRhIC0gZmlsdGVyIHZhbHVlcyBzZXF1ZW5jZVxuLy9cbid1c2Ugc3RyaWN0JztcblxudmFyIEZJTFRFUl9JTkZPID0gX2RlcmVxXygnLi9yZXNpemVfZmlsdGVyX2luZm8nKTsgLy8gUHJlY2lzaW9uIG9mIGZpeGVkIEZQIHZhbHVlc1xuXG5cbnZhciBGSVhFRF9GUkFDX0JJVFMgPSAxNDtcblxuZnVuY3Rpb24gdG9GaXhlZFBvaW50KG51bSkge1xuICByZXR1cm4gTWF0aC5yb3VuZChudW0gKiAoKDEgPDwgRklYRURfRlJBQ19CSVRTKSAtIDEpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXNpemVGaWx0ZXJHZW4ocXVhbGl0eSwgc3JjU2l6ZSwgZGVzdFNpemUsIHNjYWxlLCBvZmZzZXQpIHtcbiAgdmFyIGZpbHRlckZ1bmN0aW9uID0gRklMVEVSX0lORk9bcXVhbGl0eV0uZmlsdGVyO1xuICB2YXIgc2NhbGVJbnZlcnRlZCA9IDEuMCAvIHNjYWxlO1xuICB2YXIgc2NhbGVDbGFtcGVkID0gTWF0aC5taW4oMS4wLCBzY2FsZSk7IC8vIEZvciB1cHNjYWxlXG4gIC8vIEZpbHRlciB3aW5kb3cgKGF2ZXJhZ2luZyBpbnRlcnZhbCksIHNjYWxlZCB0byBzcmMgaW1hZ2VcblxuICB2YXIgc3JjV2luZG93ID0gRklMVEVSX0lORk9bcXVhbGl0eV0ud2luIC8gc2NhbGVDbGFtcGVkO1xuICB2YXIgZGVzdFBpeGVsLCBzcmNQaXhlbCwgc3JjRmlyc3QsIHNyY0xhc3QsIGZpbHRlckVsZW1lbnRTaXplLCBmbG9hdEZpbHRlciwgZnhwRmlsdGVyLCB0b3RhbCwgcHhsLCBpZHgsIGZsb2F0VmFsLCBmaWx0ZXJUb3RhbCwgZmlsdGVyVmFsO1xuICB2YXIgbGVmdE5vdEVtcHR5LCByaWdodE5vdEVtcHR5LCBmaWx0ZXJTaGlmdCwgZmlsdGVyU2l6ZTtcbiAgdmFyIG1heEZpbHRlckVsZW1lbnRTaXplID0gTWF0aC5mbG9vcigoc3JjV2luZG93ICsgMSkgKiAyKTtcbiAgdmFyIHBhY2tlZEZpbHRlciA9IG5ldyBJbnQxNkFycmF5KChtYXhGaWx0ZXJFbGVtZW50U2l6ZSArIDIpICogZGVzdFNpemUpO1xuICB2YXIgcGFja2VkRmlsdGVyUHRyID0gMDtcbiAgdmFyIHNsb3dDb3B5ID0gIXBhY2tlZEZpbHRlci5zdWJhcnJheSB8fCAhcGFja2VkRmlsdGVyLnNldDsgLy8gRm9yIGVhY2ggZGVzdGluYXRpb24gcGl4ZWwgY2FsY3VsYXRlIHNvdXJjZSByYW5nZSBhbmQgYnVpbHQgZmlsdGVyIHZhbHVlc1xuXG4gIGZvciAoZGVzdFBpeGVsID0gMDsgZGVzdFBpeGVsIDwgZGVzdFNpemU7IGRlc3RQaXhlbCsrKSB7XG4gICAgLy8gU2NhbGluZyBzaG91bGQgYmUgZG9uZSByZWxhdGl2ZSB0byBjZW50cmFsIHBpeGVsIHBvaW50XG4gICAgc3JjUGl4ZWwgPSAoZGVzdFBpeGVsICsgMC41KSAqIHNjYWxlSW52ZXJ0ZWQgKyBvZmZzZXQ7XG4gICAgc3JjRmlyc3QgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHNyY1BpeGVsIC0gc3JjV2luZG93KSk7XG4gICAgc3JjTGFzdCA9IE1hdGgubWluKHNyY1NpemUgLSAxLCBNYXRoLmNlaWwoc3JjUGl4ZWwgKyBzcmNXaW5kb3cpKTtcbiAgICBmaWx0ZXJFbGVtZW50U2l6ZSA9IHNyY0xhc3QgLSBzcmNGaXJzdCArIDE7XG4gICAgZmxvYXRGaWx0ZXIgPSBuZXcgRmxvYXQzMkFycmF5KGZpbHRlckVsZW1lbnRTaXplKTtcbiAgICBmeHBGaWx0ZXIgPSBuZXcgSW50MTZBcnJheShmaWx0ZXJFbGVtZW50U2l6ZSk7XG4gICAgdG90YWwgPSAwLjA7IC8vIEZpbGwgZmlsdGVyIHZhbHVlcyBmb3IgY2FsY3VsYXRlZCByYW5nZVxuXG4gICAgZm9yIChweGwgPSBzcmNGaXJzdCwgaWR4ID0gMDsgcHhsIDw9IHNyY0xhc3Q7IHB4bCsrLCBpZHgrKykge1xuICAgICAgZmxvYXRWYWwgPSBmaWx0ZXJGdW5jdGlvbigocHhsICsgMC41IC0gc3JjUGl4ZWwpICogc2NhbGVDbGFtcGVkKTtcbiAgICAgIHRvdGFsICs9IGZsb2F0VmFsO1xuICAgICAgZmxvYXRGaWx0ZXJbaWR4XSA9IGZsb2F0VmFsO1xuICAgIH0gLy8gTm9ybWFsaXplIGZpbHRlciwgY29udmVydCB0byBmaXhlZCBwb2ludCBhbmQgYWNjdW11bGF0ZSBjb252ZXJzaW9uIGVycm9yXG5cblxuICAgIGZpbHRlclRvdGFsID0gMDtcblxuICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgZmxvYXRGaWx0ZXIubGVuZ3RoOyBpZHgrKykge1xuICAgICAgZmlsdGVyVmFsID0gZmxvYXRGaWx0ZXJbaWR4XSAvIHRvdGFsO1xuICAgICAgZmlsdGVyVG90YWwgKz0gZmlsdGVyVmFsO1xuICAgICAgZnhwRmlsdGVyW2lkeF0gPSB0b0ZpeGVkUG9pbnQoZmlsdGVyVmFsKTtcbiAgICB9IC8vIENvbXBlbnNhdGUgbm9ybWFsaXphdGlvbiBlcnJvciwgdG8gbWluaW1pemUgYnJpZ2h0bmVzcyBkcmlmdFxuXG5cbiAgICBmeHBGaWx0ZXJbZGVzdFNpemUgPj4gMV0gKz0gdG9GaXhlZFBvaW50KDEuMCAtIGZpbHRlclRvdGFsKTsgLy9cbiAgICAvLyBOb3cgcGFjayBmaWx0ZXIgdG8gdXNlYWJsZSBmb3JtXG4gICAgLy9cbiAgICAvLyAxLiBUcmltIGhlYWRpbmcgYW5kIHRhaWxpbmcgemVybyB2YWx1ZXMsIGFuZCBjb21wZW5zYXRlIHNoaXRmL2xlbmd0aFxuICAgIC8vIDIuIFB1dCBhbGwgdG8gc2luZ2xlIGFycmF5IGluIHRoaXMgZm9ybWF0OlxuICAgIC8vXG4gICAgLy8gICAgWyBwb3Mgc2hpZnQsIGRhdGEgbGVuZ3RoLCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzLCAuLi4gXVxuICAgIC8vXG5cbiAgICBsZWZ0Tm90RW1wdHkgPSAwO1xuXG4gICAgd2hpbGUgKGxlZnROb3RFbXB0eSA8IGZ4cEZpbHRlci5sZW5ndGggJiYgZnhwRmlsdGVyW2xlZnROb3RFbXB0eV0gPT09IDApIHtcbiAgICAgIGxlZnROb3RFbXB0eSsrO1xuICAgIH1cblxuICAgIGlmIChsZWZ0Tm90RW1wdHkgPCBmeHBGaWx0ZXIubGVuZ3RoKSB7XG4gICAgICByaWdodE5vdEVtcHR5ID0gZnhwRmlsdGVyLmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChyaWdodE5vdEVtcHR5ID4gMCAmJiBmeHBGaWx0ZXJbcmlnaHROb3RFbXB0eV0gPT09IDApIHtcbiAgICAgICAgcmlnaHROb3RFbXB0eS0tO1xuICAgICAgfVxuXG4gICAgICBmaWx0ZXJTaGlmdCA9IHNyY0ZpcnN0ICsgbGVmdE5vdEVtcHR5O1xuICAgICAgZmlsdGVyU2l6ZSA9IHJpZ2h0Tm90RW1wdHkgLSBsZWZ0Tm90RW1wdHkgKyAxO1xuICAgICAgcGFja2VkRmlsdGVyW3BhY2tlZEZpbHRlclB0cisrXSA9IGZpbHRlclNoaWZ0OyAvLyBzaGlmdFxuXG4gICAgICBwYWNrZWRGaWx0ZXJbcGFja2VkRmlsdGVyUHRyKytdID0gZmlsdGVyU2l6ZTsgLy8gc2l6ZVxuXG4gICAgICBpZiAoIXNsb3dDb3B5KSB7XG4gICAgICAgIHBhY2tlZEZpbHRlci5zZXQoZnhwRmlsdGVyLnN1YmFycmF5KGxlZnROb3RFbXB0eSwgcmlnaHROb3RFbXB0eSArIDEpLCBwYWNrZWRGaWx0ZXJQdHIpO1xuICAgICAgICBwYWNrZWRGaWx0ZXJQdHIgKz0gZmlsdGVyU2l6ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGQgSUUgPCAxMSwgd2l0aG91dCBzdWJhcnJheS9zZXQgbWV0aG9kc1xuICAgICAgICBmb3IgKGlkeCA9IGxlZnROb3RFbXB0eTsgaWR4IDw9IHJpZ2h0Tm90RW1wdHk7IGlkeCsrKSB7XG4gICAgICAgICAgcGFja2VkRmlsdGVyW3BhY2tlZEZpbHRlclB0cisrXSA9IGZ4cEZpbHRlcltpZHhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHplcm8gZGF0YSwgd3JpdGUgaGVhZGVyIG9ubHlcbiAgICAgIHBhY2tlZEZpbHRlcltwYWNrZWRGaWx0ZXJQdHIrK10gPSAwOyAvLyBzaGlmdFxuXG4gICAgICBwYWNrZWRGaWx0ZXJbcGFja2VkRmlsdGVyUHRyKytdID0gMDsgLy8gc2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYWNrZWRGaWx0ZXI7XG59O1xuXG59LHtcIi4vcmVzaXplX2ZpbHRlcl9pbmZvXCI6N31dLDc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLy8gRmlsdGVyIGRlZmluaXRpb25zIHRvIGJ1aWxkIHRhYmxlcyBmb3Jcbi8vIHJlc2l6aW5nIGNvbnZvbHZlcnMuXG4vL1xuLy8gUHJlc2V0cyBmb3IgcXVhbGl0eSAwLi4zLiBGaWx0ZXIgZnVuY3Rpb25zICsgd2luZG93IHNpemVcbi8vXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gW3tcbiAgLy8gTmVhcmVzdCBuZWlib3IgKEJveClcbiAgd2luOiAwLjUsXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKHgpIHtcbiAgICByZXR1cm4geCA+PSAtMC41ICYmIHggPCAwLjUgPyAxLjAgOiAwLjA7XG4gIH1cbn0sIHtcbiAgLy8gSGFtbWluZ1xuICB3aW46IDEuMCxcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoeCkge1xuICAgIGlmICh4IDw9IC0xLjAgfHwgeCA+PSAxLjApIHtcbiAgICAgIHJldHVybiAwLjA7XG4gICAgfVxuXG4gICAgaWYgKHggPiAtMS4xOTIwOTI5MEUtMDcgJiYgeCA8IDEuMTkyMDkyOTBFLTA3KSB7XG4gICAgICByZXR1cm4gMS4wO1xuICAgIH1cblxuICAgIHZhciB4cGkgPSB4ICogTWF0aC5QSTtcbiAgICByZXR1cm4gTWF0aC5zaW4oeHBpKSAvIHhwaSAqICgwLjU0ICsgMC40NiAqIE1hdGguY29zKHhwaSAvIDEuMCkpO1xuICB9XG59LCB7XG4gIC8vIExhbmN6b3MsIHdpbiA9IDJcbiAgd2luOiAyLjAsXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKHgpIHtcbiAgICBpZiAoeCA8PSAtMi4wIHx8IHggPj0gMi4wKSB7XG4gICAgICByZXR1cm4gMC4wO1xuICAgIH1cblxuICAgIGlmICh4ID4gLTEuMTkyMDkyOTBFLTA3ICYmIHggPCAxLjE5MjA5MjkwRS0wNykge1xuICAgICAgcmV0dXJuIDEuMDtcbiAgICB9XG5cbiAgICB2YXIgeHBpID0geCAqIE1hdGguUEk7XG4gICAgcmV0dXJuIE1hdGguc2luKHhwaSkgLyB4cGkgKiBNYXRoLnNpbih4cGkgLyAyLjApIC8gKHhwaSAvIDIuMCk7XG4gIH1cbn0sIHtcbiAgLy8gTGFuY3pvcywgd2luID0gM1xuICB3aW46IDMuMCxcbiAgZmlsdGVyOiBmdW5jdGlvbiBmaWx0ZXIoeCkge1xuICAgIGlmICh4IDw9IC0zLjAgfHwgeCA+PSAzLjApIHtcbiAgICAgIHJldHVybiAwLjA7XG4gICAgfVxuXG4gICAgaWYgKHggPiAtMS4xOTIwOTI5MEUtMDcgJiYgeCA8IDEuMTkyMDkyOTBFLTA3KSB7XG4gICAgICByZXR1cm4gMS4wO1xuICAgIH1cblxuICAgIHZhciB4cGkgPSB4ICogTWF0aC5QSTtcbiAgICByZXR1cm4gTWF0aC5zaW4oeHBpKSAvIHhwaSAqIE1hdGguc2luKHhwaSAvIDMuMCkgLyAoeHBpIC8gMy4wKTtcbiAgfVxufV07XG5cbn0se31dLDg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRmlsdGVycyA9IF9kZXJlcV8oJy4vcmVzaXplX2ZpbHRlcl9nZW4nKTtcblxuZnVuY3Rpb24gcmVzZXRBbHBoYShkc3QsIHdpZHRoLCBoZWlnaHQpIHtcbiAgdmFyIHB0ciA9IDMsXG4gICAgICBsZW4gPSB3aWR0aCAqIGhlaWdodCAqIDQgfCAwO1xuXG4gIHdoaWxlIChwdHIgPCBsZW4pIHtcbiAgICBkc3RbcHRyXSA9IDB4RkY7XG4gICAgcHRyID0gcHRyICsgNCB8IDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNVaW50OEFycmF5KHNyYykge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoc3JjLmJ1ZmZlciwgMCwgc3JjLmJ5dGVMZW5ndGgpO1xufVxuXG52YXIgSVNfTEUgPSB0cnVlOyAvLyBzaG91bGQgbm90IGNyYXNoIGV2ZXJ5dGhpbmcgb24gbW9kdWxlIGxvYWQgaW4gb2xkIGJyb3dzZXJzXG5cbnRyeSB7XG4gIElTX0xFID0gbmV3IFVpbnQzMkFycmF5KG5ldyBVaW50OEFycmF5KFsxLCAwLCAwLCAwXSkuYnVmZmVyKVswXSA9PT0gMTtcbn0gY2F0Y2ggKF9fKSB7fVxuXG5mdW5jdGlvbiBjb3B5SW50MTZhc0xFKHNyYywgdGFyZ2V0LCB0YXJnZXRfb2Zmc2V0KSB7XG4gIGlmIChJU19MRSkge1xuICAgIHRhcmdldC5zZXQoYXNVaW50OEFycmF5KHNyYyksIHRhcmdldF9vZmZzZXQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAodmFyIHB0ciA9IHRhcmdldF9vZmZzZXQsIGkgPSAwOyBpIDwgc3JjLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRhdGEgPSBzcmNbaV07XG4gICAgdGFyZ2V0W3B0cisrXSA9IGRhdGEgJiAweEZGO1xuICAgIHRhcmdldFtwdHIrK10gPSBkYXRhID4+IDggJiAweEZGO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVzaXplX3dhc20ob3B0aW9ucykge1xuICB2YXIgc3JjID0gb3B0aW9ucy5zcmM7XG4gIHZhciBzcmNXID0gb3B0aW9ucy53aWR0aDtcbiAgdmFyIHNyY0ggPSBvcHRpb25zLmhlaWdodDtcbiAgdmFyIGRlc3RXID0gb3B0aW9ucy50b1dpZHRoO1xuICB2YXIgZGVzdEggPSBvcHRpb25zLnRvSGVpZ2h0O1xuICB2YXIgc2NhbGVYID0gb3B0aW9ucy5zY2FsZVggfHwgb3B0aW9ucy50b1dpZHRoIC8gb3B0aW9ucy53aWR0aDtcbiAgdmFyIHNjYWxlWSA9IG9wdGlvbnMuc2NhbGVZIHx8IG9wdGlvbnMudG9IZWlnaHQgLyBvcHRpb25zLmhlaWdodDtcbiAgdmFyIG9mZnNldFggPSBvcHRpb25zLm9mZnNldFggfHwgMC4wO1xuICB2YXIgb2Zmc2V0WSA9IG9wdGlvbnMub2Zmc2V0WSB8fCAwLjA7XG4gIHZhciBkZXN0ID0gb3B0aW9ucy5kZXN0IHx8IG5ldyBVaW50OEFycmF5KGRlc3RXICogZGVzdEggKiA0KTtcbiAgdmFyIHF1YWxpdHkgPSB0eXBlb2Ygb3B0aW9ucy5xdWFsaXR5ID09PSAndW5kZWZpbmVkJyA/IDMgOiBvcHRpb25zLnF1YWxpdHk7XG4gIHZhciBhbHBoYSA9IG9wdGlvbnMuYWxwaGEgfHwgZmFsc2U7XG4gIHZhciBmaWx0ZXJzWCA9IGNyZWF0ZUZpbHRlcnMocXVhbGl0eSwgc3JjVywgZGVzdFcsIHNjYWxlWCwgb2Zmc2V0WCksXG4gICAgICBmaWx0ZXJzWSA9IGNyZWF0ZUZpbHRlcnMocXVhbGl0eSwgc3JjSCwgZGVzdEgsIHNjYWxlWSwgb2Zmc2V0WSk7IC8vIGRlc3RpbmF0aW9uIGlzIDAgdG9vLlxuXG4gIHZhciBzcmNfb2Zmc2V0ID0gMDsgLy8gYnVmZmVyIGJldHdlZW4gY29udm9sdmUgcGFzc2VzXG5cbiAgdmFyIHRtcF9vZmZzZXQgPSB0aGlzLl9fYWxpZ24oc3JjX29mZnNldCArIE1hdGgubWF4KHNyYy5ieXRlTGVuZ3RoLCBkZXN0LmJ5dGVMZW5ndGgpKTtcblxuICB2YXIgZmlsdGVyc1hfb2Zmc2V0ID0gdGhpcy5fX2FsaWduKHRtcF9vZmZzZXQgKyBzcmNIICogZGVzdFcgKiA0KTtcblxuICB2YXIgZmlsdGVyc1lfb2Zmc2V0ID0gdGhpcy5fX2FsaWduKGZpbHRlcnNYX29mZnNldCArIGZpbHRlcnNYLmJ5dGVMZW5ndGgpO1xuXG4gIHZhciBhbGxvY19ieXRlcyA9IGZpbHRlcnNZX29mZnNldCArIGZpbHRlcnNZLmJ5dGVMZW5ndGg7XG5cbiAgdmFyIGluc3RhbmNlID0gdGhpcy5fX2luc3RhbmNlKCdyZXNpemUnLCBhbGxvY19ieXRlcyk7IC8vXG4gIC8vIEZpbGwgbWVtb3J5IGJsb2NrIHdpdGggZGF0YSB0byBwcm9jZXNzXG4gIC8vXG5cblxuICB2YXIgbWVtID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5fX21lbW9yeS5idWZmZXIpO1xuICB2YXIgbWVtMzIgPSBuZXcgVWludDMyQXJyYXkodGhpcy5fX21lbW9yeS5idWZmZXIpOyAvLyAzMi1iaXQgY29weSBpcyBtdWNoIGZhc3RlciBpbiBjaHJvbWVcblxuICB2YXIgc3JjMzIgPSBuZXcgVWludDMyQXJyYXkoc3JjLmJ1ZmZlcik7XG4gIG1lbTMyLnNldChzcmMzMik7IC8vIFdlIHNob3VsZCBndWFyYW50ZWUgTEUgYnl0ZXMgb3JkZXIuIEZpbHRlcnMgYXJlIG5vdCBiaWcsIHNvXG4gIC8vIHNwZWVkIGRpZmZlcmVuY2UgaXMgbm90IHNpZ25pZmljYW50IHZzIGRpcmVjdCAuc2V0KClcblxuICBjb3B5SW50MTZhc0xFKGZpbHRlcnNYLCBtZW0sIGZpbHRlcnNYX29mZnNldCk7XG4gIGNvcHlJbnQxNmFzTEUoZmlsdGVyc1ksIG1lbSwgZmlsdGVyc1lfb2Zmc2V0KTsgLy9cbiAgLy8gTm93IGNhbGwgd2ViYXNzZW1ibHkgbWV0aG9kXG4gIC8vIGVtc2RrIGRvZXMgbWV0aG9kIG5hbWVzIHdpdGggJ18nXG5cbiAgdmFyIGZuID0gaW5zdGFuY2UuZXhwb3J0cy5jb252b2x2ZUhWIHx8IGluc3RhbmNlLmV4cG9ydHMuX2NvbnZvbHZlSFY7XG4gIGZuKGZpbHRlcnNYX29mZnNldCwgZmlsdGVyc1lfb2Zmc2V0LCB0bXBfb2Zmc2V0LCBzcmNXLCBzcmNILCBkZXN0VywgZGVzdEgpOyAvL1xuICAvLyBDb3B5IGRhdGEgYmFjayB0byB0eXBlZCBhcnJheVxuICAvL1xuICAvLyAzMi1iaXQgY29weSBpcyBtdWNoIGZhc3RlciBpbiBjaHJvbWVcblxuICB2YXIgZGVzdDMyID0gbmV3IFVpbnQzMkFycmF5KGRlc3QuYnVmZmVyKTtcbiAgZGVzdDMyLnNldChuZXcgVWludDMyQXJyYXkodGhpcy5fX21lbW9yeS5idWZmZXIsIDAsIGRlc3RIICogZGVzdFcpKTsgLy8gVGhhdCdzIGZhc3RlciB0aGFuIGRvaW5nIGNoZWNrcyBpbiBjb252b2x2ZXIuXG4gIC8vICEhISBOb3RlLCBjYW52YXMgZGF0YSBpcyBub3QgcHJlbXVsdGlwbGVkLiBXZSBkb24ndCBuZWVkIG90aGVyXG4gIC8vIGFscGhhIGNvcnJlY3Rpb25zLlxuXG4gIGlmICghYWxwaGEpIHJlc2V0QWxwaGEoZGVzdCwgZGVzdFcsIGRlc3RIKTtcbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG59LHtcIi4vcmVzaXplX2ZpbHRlcl9nZW5cIjo2fV0sOTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBuYW1lOiAndW5zaGFycF9tYXNrJyxcbiAgZm46IF9kZXJlcV8oJy4vdW5zaGFycF9tYXNrJyksXG4gIHdhc21fZm46IF9kZXJlcV8oJy4vdW5zaGFycF9tYXNrX3dhc20nKSxcbiAgd2FzbV9zcmM6IF9kZXJlcV8oJy4vdW5zaGFycF9tYXNrX3dhc21fYmFzZTY0Jylcbn07XG5cbn0se1wiLi91bnNoYXJwX21hc2tcIjoxMCxcIi4vdW5zaGFycF9tYXNrX3dhc21cIjoxMSxcIi4vdW5zaGFycF9tYXNrX3dhc21fYmFzZTY0XCI6MTJ9XSwxMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBVbnNoYXJwIG1hc2sgZmlsdGVyXG4vL1xuLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjMzMjI4MjAvMTAzMTgwNFxuLy8gVVNNKE8pID0gTyArICgyICogKEFtb3VudCAvIDEwMCkgKiAoTyAtIEdCKSlcbi8vIEdCIC0gZ2F1c3NpYW4gYmx1ci5cbi8vXG4vLyBJbWFnZSBpcyBjb252ZXJ0ZWQgZnJvbSBSR0IgdG8gSFNWLCB1bnNoYXJwIG1hc2sgaXMgYXBwbGllZCB0byB0aGVcbi8vIGJyaWdodG5lc3MgY2hhbm5lbCBhbmQgdGhlbiBpbWFnZSBpcyBjb252ZXJ0ZWQgYmFjayB0byBSR0IuXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZ2x1cl9tb25vMTYgPSBfZGVyZXFfKCdnbHVyL21vbm8xNicpO1xuXG5mdW5jdGlvbiBoc3ZfdjE2KGltZywgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgc2l6ZSA9IHdpZHRoICogaGVpZ2h0O1xuICB2YXIgb3V0ID0gbmV3IFVpbnQxNkFycmF5KHNpemUpO1xuICB2YXIgciwgZywgYiwgbWF4O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgciA9IGltZ1s0ICogaV07XG4gICAgZyA9IGltZ1s0ICogaSArIDFdO1xuICAgIGIgPSBpbWdbNCAqIGkgKyAyXTtcbiAgICBtYXggPSByID49IGcgJiYgciA+PSBiID8gciA6IGcgPj0gYiAmJiBnID49IHIgPyBnIDogYjtcbiAgICBvdXRbaV0gPSBtYXggPDwgODtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdW5zaGFycChpbWcsIHdpZHRoLCBoZWlnaHQsIGFtb3VudCwgcmFkaXVzLCB0aHJlc2hvbGQpIHtcbiAgdmFyIHYxLCB2Miwgdm11bDtcbiAgdmFyIGRpZmYsIGlUaW1lczQ7XG5cbiAgaWYgKGFtb3VudCA9PT0gMCB8fCByYWRpdXMgPCAwLjUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocmFkaXVzID4gMi4wKSB7XG4gICAgcmFkaXVzID0gMi4wO1xuICB9XG5cbiAgdmFyIGJyaWdodG5lc3MgPSBoc3ZfdjE2KGltZywgd2lkdGgsIGhlaWdodCk7XG4gIHZhciBibHVyZWQgPSBuZXcgVWludDE2QXJyYXkoYnJpZ2h0bmVzcyk7IC8vIGNvcHksIGJlY2F1c2UgYmx1ciBtb2RpZnkgc3JjXG5cbiAgZ2x1cl9tb25vMTYoYmx1cmVkLCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpO1xuICB2YXIgYW1vdW50RnAgPSBhbW91bnQgLyAxMDAgKiAweDEwMDAgKyAwLjUgfCAwO1xuICB2YXIgdGhyZXNob2xkRnAgPSB0aHJlc2hvbGQgPDwgODtcbiAgdmFyIHNpemUgPSB3aWR0aCAqIGhlaWdodDtcbiAgLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICB2MSA9IGJyaWdodG5lc3NbaV07XG4gICAgZGlmZiA9IHYxIC0gYmx1cmVkW2ldO1xuXG4gICAgaWYgKE1hdGguYWJzKGRpZmYpID49IHRocmVzaG9sZEZwKSB7XG4gICAgICAvLyBhZGQgdW5zaGFycCBtYXNrIHRvIHRoZSBicmlnaHRuZXNzIGNoYW5uZWxcbiAgICAgIHYyID0gdjEgKyAoYW1vdW50RnAgKiBkaWZmICsgMHg4MDAgPj4gMTIpOyAvLyBCb3RoIHYxIGFuZCB2MiBhcmUgd2l0aGluIFswLjAgLi4gMjU1LjBdICgwMDAwLUZGMDApIHJhbmdlLCBuZXZlciBnb2luZyBpbnRvXG4gICAgICAvLyBbMjU1LjAwMyAuLiAyNTUuOTk2XSAoRkYwMS1GRkZGKS4gVGhpcyBhbGxvd3MgdG8gcm91bmQgdGhpcyB2YWx1ZSBhcyAoeCsuNSl8MFxuICAgICAgLy8gbGF0ZXIgd2l0aG91dCBvdmVyZmxvd2luZy5cblxuICAgICAgdjIgPSB2MiA+IDB4ZmYwMCA/IDB4ZmYwMCA6IHYyO1xuICAgICAgdjIgPSB2MiA8IDB4MDAwMCA/IDB4MDAwMCA6IHYyOyAvLyBBdm9pZCBkaXZpc2lvbiBieSAwLiBWPTAgbWVhbnMgcmdiKDAsMCwwKSwgdW5zaGFycCB3aXRoIHVuc2hhcnBBbW91bnQ+MCBjYW5ub3RcbiAgICAgIC8vIGNoYW5nZSB0aGlzIHZhbHVlIChiZWNhdXNlIGRpZmYgYmV0d2VlbiBjb2xvcnMgZ2V0cyBpbmZsYXRlZCksIHNvIG5vIG5lZWQgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzLlxuXG4gICAgICB2MSA9IHYxICE9PSAwID8gdjEgOiAxOyAvLyBNdWx0aXBseWluZyBWIGluIEhTViBtb2RlbCBieSBhIGNvbnN0YW50IGlzIGVxdWl2YWxlbnQgdG8gbXVsdGlwbHlpbmcgZWFjaCBjb21wb25lbnRcbiAgICAgIC8vIGluIFJHQiBieSB0aGUgc2FtZSBjb25zdGFudCAoc2FtZSBmb3IgSFNMKSwgc2VlIGFsc286XG4gICAgICAvLyBodHRwczovL2JlZXNidXp6LmJpei9jb2RlLzE2LWhzdi1jb2xvci10cmFuc2Zvcm1zXG5cbiAgICAgIHZtdWwgPSAodjIgPDwgMTIpIC8gdjEgfCAwOyAvLyBSZXN1bHQgd2lsbCBiZSBpbiBbMC4uMjU1XSByYW5nZSBiZWNhdXNlOlxuICAgICAgLy8gIC0gYWxsIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgICAvLyAgLSByLGcsYiA8PSAodjEvMjU2KVxuICAgICAgLy8gIC0gcixnLGIsKHYxLzI1NiksKHYyLzI1NikgPD0gMjU1XG4gICAgICAvLyBTbyBoaWdoZXN0IHRoaXMgbnVtYmVyIGNhbiBnZXQgaXMgWCoyNTUvWCswLjU9MjU1LjUgd2hpY2ggaXMgPCAyNTYgYW5kIHJvdW5kcyBkb3duLlxuXG4gICAgICBpVGltZXM0ID0gaSAqIDQ7XG4gICAgICBpbWdbaVRpbWVzNF0gPSBpbWdbaVRpbWVzNF0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIFJcblxuICAgICAgaW1nW2lUaW1lczQgKyAxXSA9IGltZ1tpVGltZXM0ICsgMV0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIEdcblxuICAgICAgaW1nW2lUaW1lczQgKyAyXSA9IGltZ1tpVGltZXM0ICsgMl0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIEJcbiAgICB9XG4gIH1cbn07XG5cbn0se1wiZ2x1ci9tb25vMTZcIjoxOH1dLDExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB1bnNoYXJwKGltZywgd2lkdGgsIGhlaWdodCwgYW1vdW50LCByYWRpdXMsIHRocmVzaG9sZCkge1xuICBpZiAoYW1vdW50ID09PSAwIHx8IHJhZGl1cyA8IDAuNSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChyYWRpdXMgPiAyLjApIHtcbiAgICByYWRpdXMgPSAyLjA7XG4gIH1cblxuICB2YXIgcGl4ZWxzID0gd2lkdGggKiBoZWlnaHQ7XG4gIHZhciBpbWdfYnl0ZXNfY250ID0gcGl4ZWxzICogNDtcbiAgdmFyIGhzdl9ieXRlc19jbnQgPSBwaXhlbHMgKiAyO1xuICB2YXIgYmx1cl9ieXRlc19jbnQgPSBwaXhlbHMgKiAyO1xuICB2YXIgYmx1cl9saW5lX2J5dGVfY250ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCkgKiA0OyAvLyBmbG9hdDMyIGFycmF5XG5cbiAgdmFyIGJsdXJfY29lZmZzX2J5dGVfY250ID0gOCAqIDQ7IC8vIGZsb2F0MzIgYXJyYXlcblxuICB2YXIgaW1nX29mZnNldCA9IDA7XG4gIHZhciBoc3Zfb2Zmc2V0ID0gaW1nX2J5dGVzX2NudDtcbiAgdmFyIGJsdXJfb2Zmc2V0ID0gaHN2X29mZnNldCArIGhzdl9ieXRlc19jbnQ7XG4gIHZhciBibHVyX3RtcF9vZmZzZXQgPSBibHVyX29mZnNldCArIGJsdXJfYnl0ZXNfY250O1xuICB2YXIgYmx1cl9saW5lX29mZnNldCA9IGJsdXJfdG1wX29mZnNldCArIGJsdXJfYnl0ZXNfY250O1xuICB2YXIgYmx1cl9jb2VmZnNfb2Zmc2V0ID0gYmx1cl9saW5lX29mZnNldCArIGJsdXJfbGluZV9ieXRlX2NudDtcblxuICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9faW5zdGFuY2UoJ3Vuc2hhcnBfbWFzaycsIGltZ19ieXRlc19jbnQgKyBoc3ZfYnl0ZXNfY250ICsgYmx1cl9ieXRlc19jbnQgKiAyICsgYmx1cl9saW5lX2J5dGVfY250ICsgYmx1cl9jb2VmZnNfYnl0ZV9jbnQsIHtcbiAgICBleHA6IE1hdGguZXhwXG4gIH0pOyAvLyAzMi1iaXQgY29weSBpcyBtdWNoIGZhc3RlciBpbiBjaHJvbWVcblxuXG4gIHZhciBpbWczMiA9IG5ldyBVaW50MzJBcnJheShpbWcuYnVmZmVyKTtcbiAgdmFyIG1lbTMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX19tZW1vcnkuYnVmZmVyKTtcbiAgbWVtMzIuc2V0KGltZzMyKTsgLy8gSFNMXG5cbiAgdmFyIGZuID0gaW5zdGFuY2UuZXhwb3J0cy5oc3ZfdjE2IHx8IGluc3RhbmNlLmV4cG9ydHMuX2hzdl92MTY7XG4gIGZuKGltZ19vZmZzZXQsIGhzdl9vZmZzZXQsIHdpZHRoLCBoZWlnaHQpOyAvLyBCTFVSXG5cbiAgZm4gPSBpbnN0YW5jZS5leHBvcnRzLmJsdXJNb25vMTYgfHwgaW5zdGFuY2UuZXhwb3J0cy5fYmx1ck1vbm8xNjtcbiAgZm4oaHN2X29mZnNldCwgYmx1cl9vZmZzZXQsIGJsdXJfdG1wX29mZnNldCwgYmx1cl9saW5lX29mZnNldCwgYmx1cl9jb2VmZnNfb2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpOyAvLyBVTlNIQVJQXG5cbiAgZm4gPSBpbnN0YW5jZS5leHBvcnRzLnVuc2hhcnAgfHwgaW5zdGFuY2UuZXhwb3J0cy5fdW5zaGFycDtcbiAgZm4oaW1nX29mZnNldCwgaW1nX29mZnNldCwgaHN2X29mZnNldCwgYmx1cl9vZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGFtb3VudCwgdGhyZXNob2xkKTsgLy8gMzItYml0IGNvcHkgaXMgbXVjaCBmYXN0ZXIgaW4gY2hyb21lXG5cbiAgaW1nMzIuc2V0KG5ldyBVaW50MzJBcnJheSh0aGlzLl9fbWVtb3J5LmJ1ZmZlciwgMCwgcGl4ZWxzKSk7XG59O1xuXG59LHt9XSwxMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBUaGlzIGlzIGF1dG9nZW5lcmF0ZWQgZmlsZSBmcm9tIG1hdGgud2FzbSwgZG9uJ3QgZWRpdC5cbi8vXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cbm1vZHVsZS5leHBvcnRzID0gJ0FHRnpiUUVBQUFBQURBWmtlV3hwYm1zQUFBQUFBQUUwQjJBQUFHQUVmMzkvZndCZ0JuOS9mMzkvZndCZ0NIOS9mMzkvZjM5L0FHQUlmMzkvZjM5L2YzMEFZQUo5ZndCZ0FYd0JmQUlaQWdObGJuWURaWGh3QUFZRFpXNTJCbTFsYlc5eWVRSUFBQU1IQmdBRkFnUUJBd1lHQVg4QVFRQUxCNG9CQ0JGZlgzZGhjMjFmWTJGc2JGOWpkRzl5Y3dBQkZsOWZZblZwYkdSZloyRjFjM05wWVc1ZlkyOWxabk1BQWc1ZlgyZGhkWE56TVRaZmJHbHVaUUFEQ21Kc2RYSk5iMjV2TVRZQUJBZG9jM1pmZGpFMkFBVUhkVzV6YUdGeWNBQUdERjlmWkhOdlgyaGhibVJzWlFNQUdGOWZkMkZ6YlY5aGNIQnNlVjlrWVhSaFgzSmxiRzlqY3dBQkNzVU1CZ01BQVF2V0FRRUhmQ0FCUk51R3VrT0NHdnMvSUFDN295SUNSQUFBQUFBQUFBREFvaEFBSWdXMmpEZ0NGQ0FCSUFLYUVBQWlBeUFEb0NJR3RqZ0NFQ0FCUkFBQUFBQUFBUEEvSUFPaElnUWdCS0lnQXlBQ0lBS2dva1FBQUFBQUFBRHdQNkFnQmFHaklnUzJPQUlBSUFFZ0JTQUVtcUlpQjdZNEFnd2dBU0FESUFKRUFBQUFBQUFBOEQrZ0lBU2lvaUlJdGpnQ0NDQUJJQU1nQWtRQUFBQUFBQUR3djZBZ0JLS2lJZ0syT0FJRUlBRWdCeUFJb0NBRlJBQUFBQUFBQVBBL0lBYWhvQ0lEbzdZNEFod2dBU0FFSUFLZ0lBT2p0amdDR0F1R0JRTUdmd2w4QW4wZ0F5b0NEQ0VWSUFNcUFnZ2hGaUFES2dJVXV5RVJJQU1xQWhDN0lSQUNRQ0FFUVFGcklnaEJBRWdpQ1FSQUlBSWhCeUFBSVFZTUFRc2dBaUFBTHdFQXVDSVBJQU1xQWhpN29pSU1JQkdpSWcwZ0RDQVFvaUFQSUFNcUFnUzdJaE9pSWhRZ0F5b0NBTHNpRWlBUG9xQ2dvQ0lPdGpnQ0FDQUNRUVJxSVFjZ0FFRUNhaUVHSUFoRkRRQWdDRUVCSUFoQkFVZ2JJZ3BCZjNNaEN3Si9JQVFnQ210QkFYRkZCRUFnRGlFTklBZ01BUXNnQWlBTklBNGdFS0lnRkNBU0lBQXZBUUs0SWcraW9LQ2dJZzIyT0FJRUlBSkJDR29oQnlBQVFRUnFJUVlnRGlFTUlBUkJBbXNMSVFJZ0MwRUFJQVJyUmcwQUEwQWdCeUFNSUJHaUlBMGdFS0lnRHlBVG9pQVNJQVl2QVFDNElnNmlvS0NnSWd5Mk9BSUFJQWNnRFNBUm9pQU1JQkNpSUE0Z0U2SWdFaUFHTHdFQ3VDSVBvcUNnb0NJTnRqZ0NCQ0FIUVFocUlRY2dCa0VFYWlFR0lBSkJBa29oQUNBQ1FRSnJJUUlnQUEwQUN3c0NRQ0FKRFFBZ0FTQUZJQWhzUVFGMGFpSUFBbjhnQmtFQ2F5OEJBQ0lDdUNJTklCVzdJaEtpSUEwZ0Zyc2lFNktnSUEwZ0F5b0NITHVpSWd3Z0VLS2dJQXdnRWFLZ0lnOGdCMEVFYXlJSEtnSUF1NkFpRGtRQUFBQUFBQUR3UVdNZ0RrUUFBQUFBQUFBQUFHWnhCRUFnRHFzTUFRdEJBQXM3QVFBZ0NFVU5BQ0FHUVFScklRWkJBQ0FGYTBFQmRDRUJBMEFDZnlBTklCS2lJQUpCLy84RGNiZ2lEU0FUb3FBZ0R5SU9JQkNpb0NBTUlCR2lvQ0lQSUFkQkJHc2lCeW9DQUx1Z0lneEVBQUFBQUFBQThFRmpJQXhFQUFBQUFBQUFBQUJtY1FSQUlBeXJEQUVMUVFBTElRTWdCaThCQUNFQ0lBQWdBV29pQUNBRE93RUFJQVpCQW1zaEJpQUlRUUZLSVFNZ0RpRU1JQWhCQVdzaENDQUREUUFMQ3d2UkFnSUJmd2Q4QWtBZ0IwTUFBQUFBV3cwQUlBUkUyNGE2UTRJYSt6OGdCME1BQUFBL2w3dWpJZ2xFQUFBQUFBQUFBTUNpRUFBaURMYU1PQUlVSUFRZ0Nab1FBQ0lLSUFxZ0lnMjJPQUlRSUFSRUFBQUFBQUFBOEQ4Z0NxRWlDeUFMb2lBS0lBa2dDYUNpUkFBQUFBQUFBUEEvb0NBTW9hTWlDN1k0QWdBZ0JDQU1JQXVhb2lJT3RqZ0NEQ0FFSUFvZ0NVUUFBQUFBQUFEd1A2QWdDNktpSWcrMk9BSUlJQVFnQ2lBSlJBQUFBQUFBQVBDL29DQUxvcUlpQ2JZNEFnUWdCQ0FPSUErZ0lBeEVBQUFBQUFBQThEOGdEYUdnSWdxanRqZ0NIQ0FFSUFzZ0NhQWdDcU8yT0FJWUlBWUVRQU5BSUFBZ0JTQUliRUVCZEdvZ0FpQUlRUUYwYWlBRElBUWdCU0FHRUFNZ0NFRUJhaUlJSUFaSERRQUxDeUFGUlEwQVFRQWhDQU5BSUFJZ0JpQUliRUVCZEdvZ0FTQUlRUUYwYWlBRElBUWdCaUFGRUFNZ0NFRUJhaUlJSUFWSERRQUxDd3R4QVFOL0lBSWdBMndpQlFSQUEwQWdBU0FBS0FJQUlnUkJFSFpCL3dGeElnSWdBaUFFUVFoMlFmOEJjU0lESUFNZ0JFSC9BWEVpQkVrYklBSWdBMHNiSWdZZ0JpQUVJQUlnQkVzYklBTWdCRXNiUVFoME93RUFJQUZCQW1vaEFTQUFRUVJxSVFBZ0JVRUJheUlGRFFBTEN3dVpBZ0lEZndGOElBUWdCV3doQkFKL0lBYXpRd0FBZ0VXVVF3QUF5RUtWdTBRQUFBQUFBQURnUDZBaUM1bEVBQUFBQUFBQTRFRmpCRUFnQzZvTUFRdEJnSUNBZ0hnTElRVWdCQVJBSUFkQkNIUWhDVUVBSVFZRFFDQUpJQUlnQmtFQmRDSUhhaThCQUNJQklBTWdCMm92QVFCcklnY2dCMEVmZFNJSWFpQUljMDBFUUNBQUlBWkJBblFpQ0dvaUNpQUZJQWRzUVlBUWFrRU1kU0FCYWlJSFFZRCtBeUFIUVlEK0EwZ2JJZ2RCQUNBSFFRQktHMEVNZENBQlFRRWdBUnR1SWdFZ0NpMEFBR3hCZ0JCcVFReDJPZ0FBSUFBZ0NFRUJjbW9pQnlBQklBY3RBQUJzUVlBUWFrRU1kam9BQUNBQUlBaEJBbkpxSWdjZ0FTQUhMUUFBYkVHQUVHcEJESFk2QUFBTElBWkJBV29pQmlBRVJ3MEFDd3NMJztcblxufSx7fV0sMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgR0NfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIFBvb2woY3JlYXRlLCBpZGxlKSB7XG4gIHRoaXMuY3JlYXRlID0gY3JlYXRlO1xuICB0aGlzLmF2YWlsYWJsZSA9IFtdO1xuICB0aGlzLmFjcXVpcmVkID0ge307XG4gIHRoaXMubGFzdElkID0gMTtcbiAgdGhpcy50aW1lb3V0SWQgPSAwO1xuICB0aGlzLmlkbGUgPSBpZGxlIHx8IDIwMDA7XG59XG5cblBvb2wucHJvdG90eXBlLmFjcXVpcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHJlc291cmNlO1xuXG4gIGlmICh0aGlzLmF2YWlsYWJsZS5sZW5ndGggIT09IDApIHtcbiAgICByZXNvdXJjZSA9IHRoaXMuYXZhaWxhYmxlLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHJlc291cmNlID0gdGhpcy5jcmVhdGUoKTtcbiAgICByZXNvdXJjZS5pZCA9IHRoaXMubGFzdElkKys7XG5cbiAgICByZXNvdXJjZS5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnJlbGVhc2UocmVzb3VyY2UpO1xuICAgIH07XG4gIH1cblxuICB0aGlzLmFjcXVpcmVkW3Jlc291cmNlLmlkXSA9IHJlc291cmNlO1xuICByZXR1cm4gcmVzb3VyY2U7XG59O1xuXG5Qb29sLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIGRlbGV0ZSB0aGlzLmFjcXVpcmVkW3Jlc291cmNlLmlkXTtcbiAgcmVzb3VyY2UubGFzdFVzZWQgPSBEYXRlLm5vdygpO1xuICB0aGlzLmF2YWlsYWJsZS5wdXNoKHJlc291cmNlKTtcblxuICBpZiAodGhpcy50aW1lb3V0SWQgPT09IDApIHtcbiAgICB0aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzMi5nYygpO1xuICAgIH0sIEdDX0lOVEVSVkFMKTtcbiAgfVxufTtcblxuUG9vbC5wcm90b3R5cGUuZ2MgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gIHZhciBub3cgPSBEYXRlLm5vdygpO1xuICB0aGlzLmF2YWlsYWJsZSA9IHRoaXMuYXZhaWxhYmxlLmZpbHRlcihmdW5jdGlvbiAocmVzb3VyY2UpIHtcbiAgICBpZiAobm93IC0gcmVzb3VyY2UubGFzdFVzZWQgPiBfdGhpczMuaWRsZSkge1xuICAgICAgcmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICBpZiAodGhpcy5hdmFpbGFibGUubGVuZ3RoICE9PSAwKSB7XG4gICAgdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpczMuZ2MoKTtcbiAgICB9LCBHQ19JTlRFUlZBTCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy50aW1lb3V0SWQgPSAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2w7XG5cbn0se31dLDE0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbi8vIEFkZCBpbnRlcm1lZGlhdGUgcmVzaXppbmcgc3RlcHMgd2hlbiBzY2FsaW5nIGRvd24gYnkgYSB2ZXJ5IGxhcmdlIGZhY3Rvci5cbi8vXG4vLyBGb3IgZXhhbXBsZSwgd2hlbiByZXNpemluZyAxMDAwMHgxMDAwMCBkb3duIHRvIDEweDEwLCBpdCdsbCByZXNpemUgaXQgdG9cbi8vIDMwMHgzMDAgZmlyc3QuXG4vL1xuLy8gSXQncyBuZWVkZWQgYmVjYXVzZSB0aWxlciBoYXMgaXNzdWVzIHdoZW4gdGhlIGVudGlyZSB0aWxlIGlzIHNjYWxlZCBkb3duXG4vLyB0byBhIGZldyBwaXhlbHMgKDEwMjRweCBzb3VyY2UgdGlsZSB3aXRoIGJvcmRlciBzaXplIDMgc2hvdWxkIHJlc3VsdCBpblxuLy8gYXQgbGVhc3QgMyszKzIgPSA4cHggdGFyZ2V0IHRpbGUsIHNvIG1heCBzY2FsZSBmYWN0b3IgaXMgMTI4IGhlcmUpLlxuLy9cbi8vIEFsc28sIGFkZGluZyBpbnRlcm1lZGlhdGUgc3RlcHMgY2FuIHNwZWVkIHVwIHByb2Nlc3NpbmcgaWYgd2UgdXNlIGxvd2VyXG4vLyBxdWFsaXR5IGFsZ29yaXRobXMgZm9yIGZpcnN0IHN0YWdlcy5cbi8vXG4ndXNlIHN0cmljdCc7IC8vIG1pbiBzaXplID0gMCByZXN1bHRzIGluIGluZmluaXRlIGxvb3AsXG4vLyBtaW4gc2l6ZSA9IDEgY2FuIGNvbnN1bWUgbGFyZ2UgYW1vdW50IG9mIG1lbW9yeVxuXG52YXIgTUlOX0lOTkVSX1RJTEVfU0laRSA9IDI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlU3RhZ2VzKGZyb21XaWR0aCwgZnJvbUhlaWdodCwgdG9XaWR0aCwgdG9IZWlnaHQsIHNyY1RpbGVTaXplLCBkZXN0VGlsZUJvcmRlcikge1xuICB2YXIgc2NhbGVYID0gdG9XaWR0aCAvIGZyb21XaWR0aDtcbiAgdmFyIHNjYWxlWSA9IHRvSGVpZ2h0IC8gZnJvbUhlaWdodDsgLy8gZGVyaXZlZCBmcm9tIGNyZWF0ZVJlZ2lvbnMgZXF1YXRpb246XG4gIC8vIGlubmVyVGlsZVdpZHRoID0gcGl4ZWxGbG9vcihzcmNUaWxlU2l6ZSAqIHNjYWxlWCkgLSAyICogZGVzdFRpbGVCb3JkZXI7XG5cbiAgdmFyIG1pblNjYWxlID0gKDIgKiBkZXN0VGlsZUJvcmRlciArIE1JTl9JTk5FUl9USUxFX1NJWkUgKyAxKSAvIHNyY1RpbGVTaXplOyAvLyByZWZ1c2UgdG8gc2NhbGUgaW1hZ2UgbXVsdGlwbGUgdGltZXMgYnkgbGVzcyB0aGFuIHR3aWNlIGVhY2ggdGltZSxcbiAgLy8gaXQgY291bGQgb25seSBoYXBwZW4gYmVjYXVzZSBvZiBpbnZhbGlkIG9wdGlvbnNcblxuICBpZiAobWluU2NhbGUgPiAwLjUpIHJldHVybiBbW3RvV2lkdGgsIHRvSGVpZ2h0XV07XG4gIHZhciBzdGFnZUNvdW50ID0gTWF0aC5jZWlsKE1hdGgubG9nKE1hdGgubWluKHNjYWxlWCwgc2NhbGVZKSkgLyBNYXRoLmxvZyhtaW5TY2FsZSkpOyAvLyBubyBhZGRpdGlvbmFsIHJlc2l6ZXMgYXJlIG5lY2Vzc2FyeSxcbiAgLy8gc3RhZ2VDb3VudCBjYW4gYmUgemVybyBvciBiZSBuZWdhdGl2ZSB3aGVuIGVubGFyZ2luZyB0aGUgaW1hZ2VcblxuICBpZiAoc3RhZ2VDb3VudCA8PSAxKSByZXR1cm4gW1t0b1dpZHRoLCB0b0hlaWdodF1dO1xuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFnZUNvdW50OyBpKyspIHtcbiAgICB2YXIgd2lkdGggPSBNYXRoLnJvdW5kKE1hdGgucG93KE1hdGgucG93KGZyb21XaWR0aCwgc3RhZ2VDb3VudCAtIGkgLSAxKSAqIE1hdGgucG93KHRvV2lkdGgsIGkgKyAxKSwgMSAvIHN0YWdlQ291bnQpKTtcbiAgICB2YXIgaGVpZ2h0ID0gTWF0aC5yb3VuZChNYXRoLnBvdyhNYXRoLnBvdyhmcm9tSGVpZ2h0LCBzdGFnZUNvdW50IC0gaSAtIDEpICogTWF0aC5wb3codG9IZWlnaHQsIGkgKyAxKSwgMSAvIHN0YWdlQ291bnQpKTtcbiAgICByZXN1bHQucHVzaChbd2lkdGgsIGhlaWdodF0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbn0se31dLDE1OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbi8vIFNwbGl0IG9yaWdpbmFsIGltYWdlIGludG8gbXVsdGlwbGUgMTAyNHgxMDI0IGNodW5rcyB0byByZWR1Y2UgbWVtb3J5IHVzYWdlXG4vLyAoaW1hZ2VzIGhhdmUgdG8gYmUgdW5wYWNrZWQgaW50byB0eXBlZCBhcnJheXMgZm9yIHJlc2l6aW5nKSBhbmQgYWxsb3dcbi8vIHBhcmFsbGVsIHByb2Nlc3Npbmcgb2YgbXVsdGlwbGUgdGlsZXMgYXQgYSB0aW1lLlxuLy9cbid1c2Ugc3RyaWN0Jztcbi8qXG4gKiBwaXhlbEZsb29yIGFuZCBwaXhlbENlaWwgYXJlIG1vZGlmaWVkIHZlcnNpb25zIG9mIE1hdGguZmxvb3IgYW5kIE1hdGguY2VpbFxuICogZnVuY3Rpb25zIHdoaWNoIHRha2UgaW50byBhY2NvdW50IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgZXJyb3JzLlxuICogVGhvc2UgZXJyb3JzIGNhbiBjYXVzZSB1bmRlc2lyZWQgaW5jcmVtZW50cy9kZWNyZW1lbnRzIG9mIHNpemVzIGFuZCBvZmZzZXRzOlxuICogTWF0aC5jZWlsKDM2IC8gKDM2IC8gNTAwKSkgPSA1MDFcbiAqIHBpeGVsQ2VpbCgzNiAvICgzNiAvIDUwMCkpID0gNTAwXG4gKi9cblxudmFyIFBJWEVMX0VQU0lMT04gPSAxZS01O1xuXG5mdW5jdGlvbiBwaXhlbEZsb29yKHgpIHtcbiAgdmFyIG5lYXJlc3QgPSBNYXRoLnJvdW5kKHgpO1xuXG4gIGlmIChNYXRoLmFicyh4IC0gbmVhcmVzdCkgPCBQSVhFTF9FUFNJTE9OKSB7XG4gICAgcmV0dXJuIG5lYXJlc3Q7XG4gIH1cblxuICByZXR1cm4gTWF0aC5mbG9vcih4KTtcbn1cblxuZnVuY3Rpb24gcGl4ZWxDZWlsKHgpIHtcbiAgdmFyIG5lYXJlc3QgPSBNYXRoLnJvdW5kKHgpO1xuXG4gIGlmIChNYXRoLmFicyh4IC0gbmVhcmVzdCkgPCBQSVhFTF9FUFNJTE9OKSB7XG4gICAgcmV0dXJuIG5lYXJlc3Q7XG4gIH1cblxuICByZXR1cm4gTWF0aC5jZWlsKHgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZVJlZ2lvbnMob3B0aW9ucykge1xuICB2YXIgc2NhbGVYID0gb3B0aW9ucy50b1dpZHRoIC8gb3B0aW9ucy53aWR0aDtcbiAgdmFyIHNjYWxlWSA9IG9wdGlvbnMudG9IZWlnaHQgLyBvcHRpb25zLmhlaWdodDtcbiAgdmFyIGlubmVyVGlsZVdpZHRoID0gcGl4ZWxGbG9vcihvcHRpb25zLnNyY1RpbGVTaXplICogc2NhbGVYKSAtIDIgKiBvcHRpb25zLmRlc3RUaWxlQm9yZGVyO1xuICB2YXIgaW5uZXJUaWxlSGVpZ2h0ID0gcGl4ZWxGbG9vcihvcHRpb25zLnNyY1RpbGVTaXplICogc2NhbGVZKSAtIDIgKiBvcHRpb25zLmRlc3RUaWxlQm9yZGVyOyAvLyBwcmV2ZW50IGluZmluaXRlIGxvb3AsIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuXG4gIGlmIChpbm5lclRpbGVXaWR0aCA8IDEgfHwgaW5uZXJUaWxlSGVpZ2h0IDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW50ZXJuYWwgZXJyb3IgaW4gcGljYTogdGFyZ2V0IHRpbGUgd2lkdGgvaGVpZ2h0IGlzIHRvbyBzbWFsbC4nKTtcbiAgfVxuXG4gIHZhciB4LCB5O1xuICB2YXIgaW5uZXJYLCBpbm5lclksIHRvVGlsZVdpZHRoLCB0b1RpbGVIZWlnaHQ7XG4gIHZhciB0aWxlcyA9IFtdO1xuICB2YXIgdGlsZTsgLy8gd2UgZ28gdG9wLXRvLWRvd24gaW5zdGVhZCBvZiBsZWZ0LXRvLXJpZ2h0IHRvIG1ha2UgaW1hZ2UgZGlzcGxheWVkIGZyb20gdG9wIHRvXG4gIC8vIGRvZXNuIGluIHRoZSBicm93c2VyXG5cbiAgZm9yIChpbm5lclkgPSAwOyBpbm5lclkgPCBvcHRpb25zLnRvSGVpZ2h0OyBpbm5lclkgKz0gaW5uZXJUaWxlSGVpZ2h0KSB7XG4gICAgZm9yIChpbm5lclggPSAwOyBpbm5lclggPCBvcHRpb25zLnRvV2lkdGg7IGlubmVyWCArPSBpbm5lclRpbGVXaWR0aCkge1xuICAgICAgeCA9IGlubmVyWCAtIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXI7XG5cbiAgICAgIGlmICh4IDwgMCkge1xuICAgICAgICB4ID0gMDtcbiAgICAgIH1cblxuICAgICAgdG9UaWxlV2lkdGggPSBpbm5lclggKyBpbm5lclRpbGVXaWR0aCArIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXIgLSB4O1xuXG4gICAgICBpZiAoeCArIHRvVGlsZVdpZHRoID49IG9wdGlvbnMudG9XaWR0aCkge1xuICAgICAgICB0b1RpbGVXaWR0aCA9IG9wdGlvbnMudG9XaWR0aCAtIHg7XG4gICAgICB9XG5cbiAgICAgIHkgPSBpbm5lclkgLSBvcHRpb25zLmRlc3RUaWxlQm9yZGVyO1xuXG4gICAgICBpZiAoeSA8IDApIHtcbiAgICAgICAgeSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRvVGlsZUhlaWdodCA9IGlubmVyWSArIGlubmVyVGlsZUhlaWdodCArIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXIgLSB5O1xuXG4gICAgICBpZiAoeSArIHRvVGlsZUhlaWdodCA+PSBvcHRpb25zLnRvSGVpZ2h0KSB7XG4gICAgICAgIHRvVGlsZUhlaWdodCA9IG9wdGlvbnMudG9IZWlnaHQgLSB5O1xuICAgICAgfVxuXG4gICAgICB0aWxlID0ge1xuICAgICAgICB0b1g6IHgsXG4gICAgICAgIHRvWTogeSxcbiAgICAgICAgdG9XaWR0aDogdG9UaWxlV2lkdGgsXG4gICAgICAgIHRvSGVpZ2h0OiB0b1RpbGVIZWlnaHQsXG4gICAgICAgIHRvSW5uZXJYOiBpbm5lclgsXG4gICAgICAgIHRvSW5uZXJZOiBpbm5lclksXG4gICAgICAgIHRvSW5uZXJXaWR0aDogaW5uZXJUaWxlV2lkdGgsXG4gICAgICAgIHRvSW5uZXJIZWlnaHQ6IGlubmVyVGlsZUhlaWdodCxcbiAgICAgICAgb2Zmc2V0WDogeCAvIHNjYWxlWCAtIHBpeGVsRmxvb3IoeCAvIHNjYWxlWCksXG4gICAgICAgIG9mZnNldFk6IHkgLyBzY2FsZVkgLSBwaXhlbEZsb29yKHkgLyBzY2FsZVkpLFxuICAgICAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICAgICAgc2NhbGVZOiBzY2FsZVksXG4gICAgICAgIHg6IHBpeGVsRmxvb3IoeCAvIHNjYWxlWCksXG4gICAgICAgIHk6IHBpeGVsRmxvb3IoeSAvIHNjYWxlWSksXG4gICAgICAgIHdpZHRoOiBwaXhlbENlaWwodG9UaWxlV2lkdGggLyBzY2FsZVgpLFxuICAgICAgICBoZWlnaHQ6IHBpeGVsQ2VpbCh0b1RpbGVIZWlnaHQgLyBzY2FsZVkpXG4gICAgICB9O1xuICAgICAgdGlsZXMucHVzaCh0aWxlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGlsZXM7XG59O1xuXG59LHt9XSwxNjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG9iakNsYXNzKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG59XG5cbm1vZHVsZS5leHBvcnRzLmlzQ2FudmFzID0gZnVuY3Rpb24gaXNDYW52YXMoZWxlbWVudCkge1xuICB2YXIgY25hbWUgPSBvYmpDbGFzcyhlbGVtZW50KTtcbiAgcmV0dXJuIGNuYW1lID09PSAnW29iamVjdCBIVE1MQ2FudmFzRWxlbWVudF0nXG4gIC8qIGJyb3dzZXIgKi9cbiAgfHwgY25hbWUgPT09ICdbb2JqZWN0IE9mZnNjcmVlbkNhbnZhc10nIHx8IGNuYW1lID09PSAnW29iamVjdCBDYW52YXNdJ1xuICAvKiBub2RlLWNhbnZhcyAqL1xuICA7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5pc0ltYWdlID0gZnVuY3Rpb24gaXNJbWFnZShlbGVtZW50KSB7XG4gIHJldHVybiBvYmpDbGFzcyhlbGVtZW50KSA9PT0gJ1tvYmplY3QgSFRNTEltYWdlRWxlbWVudF0nO1xufTtcblxubW9kdWxlLmV4cG9ydHMuaXNJbWFnZUJpdG1hcCA9IGZ1bmN0aW9uIGlzSW1hZ2VCaXRtYXAoZWxlbWVudCkge1xuICByZXR1cm4gb2JqQ2xhc3MoZWxlbWVudCkgPT09ICdbb2JqZWN0IEltYWdlQml0bWFwXSc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5saW1pdGVyID0gZnVuY3Rpb24gbGltaXRlcihjb25jdXJyZW5jeSkge1xuICB2YXIgYWN0aXZlID0gMCxcbiAgICAgIHF1ZXVlID0gW107XG5cbiAgZnVuY3Rpb24gcm9sbCgpIHtcbiAgICBpZiAoYWN0aXZlIDwgY29uY3VycmVuY3kgJiYgcXVldWUubGVuZ3RoKSB7XG4gICAgICBhY3RpdmUrKztcbiAgICAgIHF1ZXVlLnNoaWZ0KCkoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gbGltaXQoZm4pIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcXVldWUucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZuKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIGFjdGl2ZS0tO1xuICAgICAgICAgIHJvbGwoKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIGFjdGl2ZS0tO1xuICAgICAgICAgIHJvbGwoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJvbGwoKTtcbiAgICB9KTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmNpYl9xdWFsaXR5X25hbWUgPSBmdW5jdGlvbiBjaWJfcXVhbGl0eV9uYW1lKG51bSkge1xuICBzd2l0Y2ggKG51bSkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiAncGl4ZWxhdGVkJztcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiAnbG93JztcblxuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiAnbWVkaXVtJztcbiAgfVxuXG4gIHJldHVybiAnaGlnaCc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5jaWJfc3VwcG9ydCA9IGZ1bmN0aW9uIGNpYl9zdXBwb3J0KGNyZWF0ZUNhbnZhcykge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IGNyZWF0ZUNhbnZhcygxMDAsIDEwMCk7XG4gICAgcmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKGMsIDAsIDAsIDEwMCwgMTAwLCB7XG4gICAgICByZXNpemVXaWR0aDogMTAsXG4gICAgICByZXNpemVIZWlnaHQ6IDEwLFxuICAgICAgcmVzaXplUXVhbGl0eTogJ2hpZ2gnXG4gICAgfSkudGhlbihmdW5jdGlvbiAoYml0bWFwKSB7XG4gICAgICB2YXIgc3RhdHVzID0gYml0bWFwLndpZHRoID09PSAxMDsgLy8gQnJhbmNoIGJlbG93IGlzIGZpbHRlcmVkIG9uIHVwcGVyIGxldmVsLiBXZSBkbyBub3QgY2FsbCByZXNpemVcbiAgICAgIC8vIGRldGVjdGlvbiBmb3IgYmFzaWMgSW1hZ2VCaXRtYXAuXG4gICAgICAvL1xuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ltYWdlQml0bWFwXG4gICAgICAvLyBvbGQgQ3JvbWUgNTEgaGFzIEltYWdlQml0bWFwIHdpdGhvdXQgLmNsb3NlKCkuIFRoZW4gdGhpcyBjb2RlXG4gICAgICAvLyB3aWxsIHRocm93IGFuZCByZXR1cm4gJ2ZhbHNlJyBhcyBleHBlY3RlZC5cbiAgICAgIC8vXG5cbiAgICAgIGJpdG1hcC5jbG9zZSgpO1xuICAgICAgYyA9IG51bGw7XG4gICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH0pO1xuICB9KVtcImNhdGNoXCJdKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMud29ya2VyX29mZnNjcmVlbl9jYW52YXNfc3VwcG9ydCA9IGZ1bmN0aW9uIHdvcmtlcl9vZmZzY3JlZW5fY2FudmFzX3N1cHBvcnQoKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgaWYgKHR5cGVvZiBPZmZzY3JlZW5DYW52YXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBpZiBPZmZzY3JlZW5DYW52YXMgaXMgcHJlc2VudCwgd2UgYXNzdW1lIGJyb3dzZXIgc3VwcG9ydHMgV29ya2VyIGFuZCBidWlsdC1pbiBQcm9taXNlIGFzIHdlbGxcbiAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdvcmtlclBheWxvYWQoc2VsZikge1xuICAgICAgaWYgKHR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKDEwLCAxMCk7IC8vIHRlc3QgdGhhdCAyZCBjb250ZXh0IGNhbiBiZSB1c2VkIGluIHdvcmtlclxuXG4gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY3R4LnJlY3QoMCwgMCwgMSwgMSk7IC8vIHRlc3QgdGhhdCBjaWIgY2FuIGJlIHVzZWQgdG8gcmV0dXJuIGltYWdlIGJpdG1hcCBmcm9tIHdvcmtlclxuXG4gICAgICAgIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChjYW52YXMsIDAsIDAsIDEsIDEpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnBvc3RNZXNzYWdlKHRydWUpO1xuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc2VsZi5wb3N0TWVzc2FnZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgY29kZSA9IGJ0b2EoXCIoXCIuY29uY2F0KHdvcmtlclBheWxvYWQudG9TdHJpbmcoKSwgXCIpKHNlbGYpO1wiKSk7XG4gICAgdmFyIHcgPSBuZXcgV29ya2VyKFwiZGF0YTp0ZXh0L2phdmFzY3JpcHQ7YmFzZTY0LFwiLmNvbmNhdChjb2RlKSk7XG5cbiAgICB3Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgcmV0dXJuIHJlc29sdmUoZXYuZGF0YSk7XG4gICAgfTtcblxuICAgIHcub25lcnJvciA9IHJlamVjdDtcbiAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59OyAvLyBDaGVjayBpZiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEgY2FuIGJlIHVzZWQsXG4vLyBGaXJlRm94IHJhbmRvbWl6ZXMgdGhlIG91dHB1dCBvZiB0aGF0IGZ1bmN0aW9uIGluIGBwcml2YWN5LnJlc2lzdEZpbmdlcnByaW50aW5nYCBtb2RlXG5cblxubW9kdWxlLmV4cG9ydHMuY2FuX3VzZV9jYW52YXMgPSBmdW5jdGlvbiBjYW5fdXNlX2NhbnZhcyhjcmVhdGVDYW52YXMpIHtcbiAgdmFyIHVzYWJsZSA9IGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgdmFyIGNhbnZhcyA9IGNyZWF0ZUNhbnZhcygyLCAxKTtcbiAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgdmFyIGQgPSBjdHguY3JlYXRlSW1hZ2VEYXRhKDIsIDEpO1xuICAgIGQuZGF0YVswXSA9IDEyO1xuICAgIGQuZGF0YVsxXSA9IDIzO1xuICAgIGQuZGF0YVsyXSA9IDM0O1xuICAgIGQuZGF0YVszXSA9IDI1NTtcbiAgICBkLmRhdGFbNF0gPSA0NTtcbiAgICBkLmRhdGFbNV0gPSA1NjtcbiAgICBkLmRhdGFbNl0gPSA2NztcbiAgICBkLmRhdGFbN10gPSAyNTU7XG4gICAgY3R4LnB1dEltYWdlRGF0YShkLCAwLCAwKTtcbiAgICBkID0gbnVsbDtcbiAgICBkID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCAyLCAxKTtcblxuICAgIGlmIChkLmRhdGFbMF0gPT09IDEyICYmIGQuZGF0YVsxXSA9PT0gMjMgJiYgZC5kYXRhWzJdID09PSAzNCAmJiBkLmRhdGFbM10gPT09IDI1NSAmJiBkLmRhdGFbNF0gPT09IDQ1ICYmIGQuZGF0YVs1XSA9PT0gNTYgJiYgZC5kYXRhWzZdID09PSA2NyAmJiBkLmRhdGFbN10gPT09IDI1NSkge1xuICAgICAgdXNhYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge31cblxuICByZXR1cm4gdXNhYmxlO1xufTsgLy8gQ2hlY2sgaWYgY3JlYXRlSW1hZ2VCaXRtYXAoaW1nLCBzeCwgc3ksIHN3LCBzaCkgc2lnbmF0dXJlIHdvcmtzIGNvcnJlY3RseVxuLy8gd2l0aCBKUEVHIGltYWdlcyBvcmllbnRlZCB3aXRoIEV4aWY7XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjIwNjcxXG4vLyBUT0RPOiByZW1vdmUgYWZ0ZXIgaXQncyBmaXhlZCBpbiBjaHJvbWUgZm9yIGF0IGxlYXN0IDIgcmVsZWFzZXNcblxuXG5tb2R1bGUuZXhwb3J0cy5jaWJfY2FuX3VzZV9yZWdpb24gPSBmdW5jdGlvbiBjaWJfY2FuX3VzZV9yZWdpb24oKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGlmICh0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICBpbWFnZS5zcmMgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgJy85ai80UUJpUlhocFpnQUFUVTBBS2dBQUFBZ0FCUUVTQUFNQUFBQUJBQVlBQUFFYUFBVUFBQUFCQUFBQVNnRWJBQVVBQScgKyAnQUFCQUFBQVVnRW9BQU1BQUFBQkFBSUFBQUlUQUFNQUFBQUJBQUVBQUFBQUFBQUFBQUJJQUFBQUFRQUFBRWdBQUFBQi85JyArICdzQVF3QUVBd01FQXdNRUJBTUVCUVFFQlFZS0J3WUdCZ1lOQ1FvSUNnOE5FQkFQRFE4T0VSTVlGQkVTRnhJT0R4VWNGUmMnICsgJ1pHUnNiR3hBVUhSOGRHaDhZR2hzYS85c0FRd0VFQlFVR0JRWU1Cd2NNR2hFUEVSb2FHaG9hR2hvYUdob2FHaG9hR2hvYScgKyAnR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2EvOElBRVFnQUFRQUNBd0VSQUFJUkFRTVJBJyArICdmL0VBQlFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQWYveEFBVUFRRUFBQUFBQUFBQUFBQUFBQUFBQUFBQS85b0FEQU1CQUEnICsgJ0lRQXhBQUFBRi9QLy9FQUJRUUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzJnQUlBUUVBQVFVQ2YvL0VBQlFSQVFBQUFBQScgKyAnQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFNQkFUOEJmLy9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzJnQUlBUUlCJyArICdBVDhCZi8vRUFCUVFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFFQUJqOENmLy9FQUJRUUFRQUFBQUFBQUFBQUEnICsgJ0FBQUFBQUFBQUQvMmdBSUFRRUFBVDhoZi8vYUFBd0RBUUFDQUFNQUFBQVFILy9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQScgKyAnQUFBQUQvMmdBSUFRTUJBVDhRZi8vRUFCUVJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFJQkFUOFFmLy9FQUJRJyArICdRQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvMmdBSUFRRUFBVDhRZi8vWic7XG5cbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZSwgMCwgMCwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCkudGhlbihmdW5jdGlvbiAoYml0bWFwKSB7XG4gICAgICAgIGlmIChiaXRtYXAud2lkdGggPT09IGltYWdlLndpZHRoICYmIGJpdG1hcC5oZWlnaHQgPT09IGltYWdlLmhlaWdodCkge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgfTtcbiAgfSk7XG59O1xuXG59LHt9XSwxNzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBXZWIgV29ya2VyIHdyYXBwZXIgZm9yIGltYWdlIHJlc2l6ZSBmdW5jdGlvblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIE1hdGhMaWIgPSBfZGVyZXFfKCcuL21hdGhsaWInKTtcblxuICB2YXIgbWF0aExpYjtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cblxuICBvbm1lc3NhZ2UgPSBmdW5jdGlvbiBvbm1lc3NhZ2UoZXYpIHtcbiAgICB2YXIgdGlsZU9wdHMgPSBldi5kYXRhLm9wdHM7XG4gICAgdmFyIHJldHVybkJpdG1hcCA9IGZhbHNlO1xuXG4gICAgaWYgKCF0aWxlT3B0cy5zcmMgJiYgdGlsZU9wdHMuc3JjQml0bWFwKSB7XG4gICAgICB2YXIgY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh0aWxlT3B0cy53aWR0aCwgdGlsZU9wdHMuaGVpZ2h0KTtcbiAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAgIGFscGhhOiBCb29sZWFuKHRpbGVPcHRzLmFscGhhKVxuICAgICAgfSk7XG4gICAgICBjdHguZHJhd0ltYWdlKHRpbGVPcHRzLnNyY0JpdG1hcCwgMCwgMCk7XG4gICAgICB0aWxlT3B0cy5zcmMgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHRpbGVPcHRzLndpZHRoLCB0aWxlT3B0cy5oZWlnaHQpLmRhdGE7XG4gICAgICBjYW52YXMud2lkdGggPSBjYW52YXMuaGVpZ2h0ID0gMDtcbiAgICAgIGNhbnZhcyA9IG51bGw7XG4gICAgICB0aWxlT3B0cy5zcmNCaXRtYXAuY2xvc2UoKTtcbiAgICAgIHRpbGVPcHRzLnNyY0JpdG1hcCA9IG51bGw7IC8vIFRlbXBvcmFyeSBmb3JjZSBvdXQgZGF0YSB0byB0eXBlZCBhcnJheSwgYmVjYXVzZSBDaHJvbWUgaGF2ZSBhcnRlZmFjdHNcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYS9pc3N1ZXMvMjIzXG4gICAgICAvLyByZXR1cm5CaXRtYXAgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghbWF0aExpYikgbWF0aExpYiA9IG5ldyBNYXRoTGliKGV2LmRhdGEuZmVhdHVyZXMpOyAvLyBVc2UgbXVsdGltYXRoJ3Mgc3luYyBhdXRvLWluaXQuIEF2b2lkIFByb21pc2UgdXNlIGluIG9sZCBicm93c2VycyxcbiAgICAvLyBiZWNhdXNlIHBvbHlmaWxscyBhcmUgbm90IHByb3BhZ2F0ZWQgdG8gd2Vid29ya2VyLlxuXG4gICAgdmFyIGRhdGEgPSBtYXRoTGliLnJlc2l6ZUFuZFVuc2hhcnAodGlsZU9wdHMpO1xuXG4gICAgaWYgKHJldHVybkJpdG1hcCkge1xuICAgICAgdmFyIHRvSW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoZGF0YSksIHRpbGVPcHRzLnRvV2lkdGgsIHRpbGVPcHRzLnRvSGVpZ2h0KTtcblxuICAgICAgdmFyIF9jYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHRpbGVPcHRzLnRvV2lkdGgsIHRpbGVPcHRzLnRvSGVpZ2h0KTtcblxuICAgICAgdmFyIF9jdHggPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgICBhbHBoYTogQm9vbGVhbih0aWxlT3B0cy5hbHBoYSlcbiAgICAgIH0pO1xuXG4gICAgICBfY3R4LnB1dEltYWdlRGF0YSh0b0ltYWdlRGF0YSwgMCwgMCk7XG5cbiAgICAgIGNyZWF0ZUltYWdlQml0bWFwKF9jYW52YXMpLnRoZW4oZnVuY3Rpb24gKGJpdG1hcCkge1xuICAgICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgICAgYml0bWFwOiBiaXRtYXBcbiAgICAgICAgfSwgW2JpdG1hcF0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc3RNZXNzYWdlKHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSwgW2RhdGEuYnVmZmVyXSk7XG4gICAgfVxuICB9O1xufTtcblxufSx7XCIuL21hdGhsaWJcIjoxfV0sMTg6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLy8gQ2FsY3VsYXRlIEdhdXNzaWFuIGJsdXIgb2YgYW4gaW1hZ2UgdXNpbmcgSUlSIGZpbHRlclxuLy8gVGhlIG1ldGhvZCBpcyB0YWtlbiBmcm9tIEludGVsJ3Mgd2hpdGUgcGFwZXIgYW5kIGNvZGUgZXhhbXBsZSBhdHRhY2hlZCB0byBpdDpcbi8vIGh0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL2FydGljbGVzL2lpci1nYXVzc2lhbi1ibHVyLWZpbHRlclxuLy8gLWltcGxlbWVudGF0aW9uLXVzaW5nLWludGVsLWFkdmFuY2VkLXZlY3Rvci1leHRlbnNpb25zXG5cbnZhciBhMCwgYTEsIGEyLCBhMywgYjEsIGIyLCBsZWZ0X2Nvcm5lciwgcmlnaHRfY29ybmVyO1xuXG5mdW5jdGlvbiBnYXVzc0NvZWYoc2lnbWEpIHtcbiAgaWYgKHNpZ21hIDwgMC41KSB7XG4gICAgc2lnbWEgPSAwLjU7XG4gIH1cblxuICB2YXIgYSA9IE1hdGguZXhwKDAuNzI2ICogMC43MjYpIC8gc2lnbWEsXG4gICAgICBnMSA9IE1hdGguZXhwKC1hKSxcbiAgICAgIGcyID0gTWF0aC5leHAoLTIgKiBhKSxcbiAgICAgIGsgPSAoMSAtIGcxKSAqICgxIC0gZzEpIC8gKDEgKyAyICogYSAqIGcxIC0gZzIpO1xuXG4gIGEwID0gaztcbiAgYTEgPSBrICogKGEgLSAxKSAqIGcxO1xuICBhMiA9IGsgKiAoYSArIDEpICogZzE7XG4gIGEzID0gLWsgKiBnMjtcbiAgYjEgPSAyICogZzE7XG4gIGIyID0gLWcyO1xuICBsZWZ0X2Nvcm5lciA9IChhMCArIGExKSAvICgxIC0gYjEgLSBiMik7XG4gIHJpZ2h0X2Nvcm5lciA9IChhMiArIGEzKSAvICgxIC0gYjEgLSBiMik7XG5cbiAgLy8gQXR0ZW1wdCB0byBmb3JjZSB0eXBlIHRvIEZQMzIuXG4gIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KFsgYTAsIGExLCBhMiwgYTMsIGIxLCBiMiwgbGVmdF9jb3JuZXIsIHJpZ2h0X2Nvcm5lciBdKTtcbn1cblxuZnVuY3Rpb24gY29udm9sdmVNb25vMTYoc3JjLCBvdXQsIGxpbmUsIGNvZWZmLCB3aWR0aCwgaGVpZ2h0KSB7XG4gIC8vIHRha2VzIHNyYyBpbWFnZSBhbmQgd3JpdGVzIHRoZSBibHVycmVkIGFuZCB0cmFuc3Bvc2VkIHJlc3VsdCBpbnRvIG91dFxuXG4gIHZhciBwcmV2X3NyYywgY3Vycl9zcmMsIGN1cnJfb3V0LCBwcmV2X291dCwgcHJldl9wcmV2X291dDtcbiAgdmFyIHNyY19pbmRleCwgb3V0X2luZGV4LCBsaW5lX2luZGV4O1xuICB2YXIgaSwgajtcbiAgdmFyIGNvZWZmX2EwLCBjb2VmZl9hMSwgY29lZmZfYjEsIGNvZWZmX2IyO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xuICAgIHNyY19pbmRleCA9IGkgKiB3aWR0aDtcbiAgICBvdXRfaW5kZXggPSBpO1xuICAgIGxpbmVfaW5kZXggPSAwO1xuXG4gICAgLy8gbGVmdCB0byByaWdodFxuICAgIHByZXZfc3JjID0gc3JjW3NyY19pbmRleF07XG4gICAgcHJldl9wcmV2X291dCA9IHByZXZfc3JjICogY29lZmZbNl07XG4gICAgcHJldl9vdXQgPSBwcmV2X3ByZXZfb3V0O1xuXG4gICAgY29lZmZfYTAgPSBjb2VmZlswXTtcbiAgICBjb2VmZl9hMSA9IGNvZWZmWzFdO1xuICAgIGNvZWZmX2IxID0gY29lZmZbNF07XG4gICAgY29lZmZfYjIgPSBjb2VmZls1XTtcblxuICAgIGZvciAoaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7XG4gICAgICBjdXJyX3NyYyA9IHNyY1tzcmNfaW5kZXhdO1xuXG4gICAgICBjdXJyX291dCA9IGN1cnJfc3JjICogY29lZmZfYTAgK1xuICAgICAgICAgICAgICAgICBwcmV2X3NyYyAqIGNvZWZmX2ExICtcbiAgICAgICAgICAgICAgICAgcHJldl9vdXQgKiBjb2VmZl9iMSArXG4gICAgICAgICAgICAgICAgIHByZXZfcHJldl9vdXQgKiBjb2VmZl9iMjtcblxuICAgICAgcHJldl9wcmV2X291dCA9IHByZXZfb3V0O1xuICAgICAgcHJldl9vdXQgPSBjdXJyX291dDtcbiAgICAgIHByZXZfc3JjID0gY3Vycl9zcmM7XG5cbiAgICAgIGxpbmVbbGluZV9pbmRleF0gPSBwcmV2X291dDtcbiAgICAgIGxpbmVfaW5kZXgrKztcbiAgICAgIHNyY19pbmRleCsrO1xuICAgIH1cblxuICAgIHNyY19pbmRleC0tO1xuICAgIGxpbmVfaW5kZXgtLTtcbiAgICBvdXRfaW5kZXggKz0gaGVpZ2h0ICogKHdpZHRoIC0gMSk7XG5cbiAgICAvLyByaWdodCB0byBsZWZ0XG4gICAgcHJldl9zcmMgPSBzcmNbc3JjX2luZGV4XTtcbiAgICBwcmV2X3ByZXZfb3V0ID0gcHJldl9zcmMgKiBjb2VmZls3XTtcbiAgICBwcmV2X291dCA9IHByZXZfcHJldl9vdXQ7XG4gICAgY3Vycl9zcmMgPSBwcmV2X3NyYztcblxuICAgIGNvZWZmX2EwID0gY29lZmZbMl07XG4gICAgY29lZmZfYTEgPSBjb2VmZlszXTtcblxuICAgIGZvciAoaiA9IHdpZHRoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIGN1cnJfb3V0ID0gY3Vycl9zcmMgKiBjb2VmZl9hMCArXG4gICAgICAgICAgICAgICAgIHByZXZfc3JjICogY29lZmZfYTEgK1xuICAgICAgICAgICAgICAgICBwcmV2X291dCAqIGNvZWZmX2IxICtcbiAgICAgICAgICAgICAgICAgcHJldl9wcmV2X291dCAqIGNvZWZmX2IyO1xuXG4gICAgICBwcmV2X3ByZXZfb3V0ID0gcHJldl9vdXQ7XG4gICAgICBwcmV2X291dCA9IGN1cnJfb3V0O1xuXG4gICAgICBwcmV2X3NyYyA9IGN1cnJfc3JjO1xuICAgICAgY3Vycl9zcmMgPSBzcmNbc3JjX2luZGV4XTtcblxuICAgICAgb3V0W291dF9pbmRleF0gPSBsaW5lW2xpbmVfaW5kZXhdICsgcHJldl9vdXQ7XG5cbiAgICAgIHNyY19pbmRleC0tO1xuICAgICAgbGluZV9pbmRleC0tO1xuICAgICAgb3V0X2luZGV4IC09IGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBibHVyTW9ubzE2KHNyYywgd2lkdGgsIGhlaWdodCwgcmFkaXVzKSB7XG4gIC8vIFF1aWNrIGV4aXQgb24gemVybyByYWRpdXNcbiAgaWYgKCFyYWRpdXMpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIG91dCAgICAgID0gbmV3IFVpbnQxNkFycmF5KHNyYy5sZW5ndGgpLFxuICAgICAgdG1wX2xpbmUgPSBuZXcgRmxvYXQzMkFycmF5KE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpKTtcblxuICB2YXIgY29lZmYgPSBnYXVzc0NvZWYocmFkaXVzKTtcblxuICBjb252b2x2ZU1vbm8xNihzcmMsIG91dCwgdG1wX2xpbmUsIGNvZWZmLCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpO1xuICBjb252b2x2ZU1vbm8xNihvdXQsIHNyYywgdG1wX2xpbmUsIGNvZWZmLCBoZWlnaHQsIHdpZHRoLCByYWRpdXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJsdXJNb25vMTY7XG5cbn0se31dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbmlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgaWYgKHN1cGVyQ3Rvcikge1xuICAgICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgICB9XG4gIH1cbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBhc3NpZ24gICAgICAgICA9IF9kZXJlcV8oJ29iamVjdC1hc3NpZ24nKTtcbnZhciBiYXNlNjRkZWNvZGUgICA9IF9kZXJlcV8oJy4vbGliL2Jhc2U2NGRlY29kZScpO1xudmFyIGhhc1dlYkFzc2VtYmx5ID0gX2RlcmVxXygnLi9saWIvd2FfZGV0ZWN0Jyk7XG5cblxudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAganM6IHRydWUsXG4gIHdhc206IHRydWVcbn07XG5cblxuZnVuY3Rpb24gTXVsdGlNYXRoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE11bHRpTWF0aCkpIHJldHVybiBuZXcgTXVsdGlNYXRoKG9wdGlvbnMpO1xuXG4gIHZhciBvcHRzID0gYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIG9wdGlvbnMgfHwge30pO1xuXG4gIHRoaXMub3B0aW9ucyAgICAgICAgID0gb3B0cztcblxuICB0aGlzLl9fY2FjaGUgICAgICAgICA9IHt9O1xuXG4gIHRoaXMuX19pbml0X3Byb21pc2UgID0gbnVsbDtcbiAgdGhpcy5fX21vZHVsZXMgICAgICAgPSBvcHRzLm1vZHVsZXMgfHwge307XG4gIHRoaXMuX19tZW1vcnkgICAgICAgID0gbnVsbDtcbiAgdGhpcy5fX3dhc20gICAgICAgICAgPSB7fTtcblxuICB0aGlzLl9faXNMRSA9ICgobmV3IFVpbnQzMkFycmF5KChuZXcgVWludDhBcnJheShbIDEsIDAsIDAsIDAgXSkpLmJ1ZmZlcikpWzBdID09PSAxKTtcblxuICBpZiAoIXRoaXMub3B0aW9ucy5qcyAmJiAhdGhpcy5vcHRpb25zLndhc20pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21hdGhsaWI6IGF0IGxlYXN0IFwianNcIiBvciBcIndhc21cIiBzaG91bGQgYmUgZW5hYmxlZCcpO1xuICB9XG59XG5cblxuTXVsdGlNYXRoLnByb3RvdHlwZS5oYXNfd2FzbSA9IGhhc1dlYkFzc2VtYmx5O1xuXG5cbk11bHRpTWF0aC5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKG1vZHVsZSkge1xuICB0aGlzLl9fbW9kdWxlc1ttb2R1bGUubmFtZV0gPSBtb2R1bGU7XG5cbiAgLy8gUGluIHRoZSBiZXN0IHBvc3NpYmxlIGltcGxlbWVudGF0aW9uXG4gIGlmICh0aGlzLm9wdGlvbnMud2FzbSAmJiB0aGlzLmhhc193YXNtKCkgJiYgbW9kdWxlLndhc21fZm4pIHtcbiAgICB0aGlzW21vZHVsZS5uYW1lXSA9IG1vZHVsZS53YXNtX2ZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXNbbW9kdWxlLm5hbWVdID0gbW9kdWxlLmZuO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbk11bHRpTWF0aC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuX19pbml0X3Byb21pc2UpIHJldHVybiB0aGlzLl9faW5pdF9wcm9taXNlO1xuXG4gIGlmICghdGhpcy5vcHRpb25zLmpzICYmIHRoaXMub3B0aW9ucy53YXNtICYmICF0aGlzLmhhc193YXNtKCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdtYXRobGliOiBvbmx5IFwid2FzbVwiIHdhcyBlbmFibGVkLCBidXQgaXRcXCdzIG5vdCBzdXBwb3J0ZWQnKSk7XG4gIH1cblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgdGhpcy5fX2luaXRfcHJvbWlzZSA9IFByb21pc2UuYWxsKE9iamVjdC5rZXlzKHNlbGYuX19tb2R1bGVzKS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgbW9kdWxlID0gc2VsZi5fX21vZHVsZXNbbmFtZV07XG5cbiAgICBpZiAoIXNlbGYub3B0aW9ucy53YXNtIHx8ICFzZWxmLmhhc193YXNtKCkgfHwgIW1vZHVsZS53YXNtX2ZuKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIElmIGFscmVhZHkgY29tcGlsZWQgLSBleGl0XG4gICAgaWYgKHNlbGYuX193YXNtW25hbWVdKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIENvbXBpbGUgd2FzbSBzb3VyY2VcbiAgICByZXR1cm4gV2ViQXNzZW1ibHkuY29tcGlsZShzZWxmLl9fYmFzZTY0ZGVjb2RlKG1vZHVsZS53YXNtX3NyYykpXG4gICAgICAudGhlbihmdW5jdGlvbiAobSkgeyBzZWxmLl9fd2FzbVtuYW1lXSA9IG07IH0pO1xuICB9KSlcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmOyB9KTtcblxuICByZXR1cm4gdGhpcy5fX2luaXRfcHJvbWlzZTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1ldGhvZHMgYmVsb3cgYXJlIGZvciBpbnRlcm5hbCB1c2UgZnJvbSBwbHVnaW5zXG5cblxuLy8gU2ltcGxlIGRlY29kZSBiYXNlNjQgdG8gdHlwZWQgYXJyYXkuIFVzZWZ1bCB0byBsb2FkIGVtYmVkZGVkIHdlYmFzc2VtYmx5XG4vLyBjb2RlLiBZb3UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5LlxuLy9cbk11bHRpTWF0aC5wcm90b3R5cGUuX19iYXNlNjRkZWNvZGUgPSBiYXNlNjRkZWNvZGU7XG5cblxuLy8gSW5jcmVhc2UgY3VycmVudCBtZW1vcnkgdG8gaW5jbHVkZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzLiBEbyBub3RoaW5nIGlmXG4vLyBzaXplIGlzIGFscmVhZHkgb2suIFlvdSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHksXG4vLyBiZWNhdXNlIGl0IHdpbGwgYmUgaW52b2tlZCBmcm9tIGAuX19pbnN0YW5jZSgpYC5cbi8vXG5NdWx0aU1hdGgucHJvdG90eXBlLl9fcmVhbGxvY2F0ZSA9IGZ1bmN0aW9uIG1lbV9ncm93X3RvKGJ5dGVzKSB7XG4gIGlmICghdGhpcy5fX21lbW9yeSkge1xuICAgIHRoaXMuX19tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtcbiAgICAgIGluaXRpYWw6IE1hdGguY2VpbChieXRlcyAvICg2NCAqIDEwMjQpKVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLl9fbWVtb3J5O1xuICB9XG5cbiAgdmFyIG1lbV9zaXplID0gdGhpcy5fX21lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aDtcblxuICBpZiAobWVtX3NpemUgPCBieXRlcykge1xuICAgIHRoaXMuX19tZW1vcnkuZ3JvdyhNYXRoLmNlaWwoKGJ5dGVzIC0gbWVtX3NpemUpIC8gKDY0ICogMTAyNCkpKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9fbWVtb3J5O1xufTtcblxuXG4vLyBSZXR1cm5zIGluc3RhbnRpbmF0ZWQgd2ViYXNzZW1ibHkgaXRlbSBieSBuYW1lLCB3aXRoIHNwZWNpZmllZCBtZW1vcnkgc2l6ZVxuLy8gYW5kIGVudmlyb25tZW50LlxuLy8gLSB1c2UgY2FjaGUgaWYgYXZhaWxhYmxlXG4vLyAtIGRvIHN5bmMgbW9kdWxlIGluaXQsIGlmIGFzeW5jIGluaXQgd2FzIG5vdCBjYWxsZWQgZWFybGllclxuLy8gLSBhbGxvY2F0ZSBtZW1vcnkgaWYgbm90IGVub3VndGhcbi8vIC0gY2FuIGV4cG9ydCBmdW5jdGlvbnMgdG8gd2ViYXNzZW1ibHkgdmlhIFwiZW52X2V4dHJhXCIsXG4vLyAgIGZvciBleGFtcGxlLCB7IGV4cDogTWF0aC5leHAgfVxuLy9cbk11bHRpTWF0aC5wcm90b3R5cGUuX19pbnN0YW5jZSA9IGZ1bmN0aW9uIGluc3RhbmNlKG5hbWUsIG1lbXNpemUsIGVudl9leHRyYSkge1xuICBpZiAobWVtc2l6ZSkgdGhpcy5fX3JlYWxsb2NhdGUobWVtc2l6ZSk7XG5cbiAgLy8gSWYgLmluaXQoKSB3YXMgbm90IGNhbGxlZCwgZG8gc3luYyBjb21waWxlXG4gIGlmICghdGhpcy5fX3dhc21bbmFtZV0pIHtcbiAgICB2YXIgbW9kdWxlID0gdGhpcy5fX21vZHVsZXNbbmFtZV07XG4gICAgdGhpcy5fX3dhc21bbmFtZV0gPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKHRoaXMuX19iYXNlNjRkZWNvZGUobW9kdWxlLndhc21fc3JjKSk7XG4gIH1cblxuICBpZiAoIXRoaXMuX19jYWNoZVtuYW1lXSkge1xuICAgIHZhciBlbnZfYmFzZSA9IHtcbiAgICAgIG1lbW9yeUJhc2U6IDAsXG4gICAgICBtZW1vcnk6IHRoaXMuX19tZW1vcnksXG4gICAgICB0YWJsZUJhc2U6IDAsXG4gICAgICB0YWJsZTogbmV3IFdlYkFzc2VtYmx5LlRhYmxlKHsgaW5pdGlhbDogMCwgZWxlbWVudDogJ2FueWZ1bmMnIH0pXG4gICAgfTtcblxuICAgIHRoaXMuX19jYWNoZVtuYW1lXSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSh0aGlzLl9fd2FzbVtuYW1lXSwge1xuICAgICAgZW52OiBhc3NpZ24oZW52X2Jhc2UsIGVudl9leHRyYSB8fCB7fSlcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9fY2FjaGVbbmFtZV07XG59O1xuXG5cbi8vIEhlbHBlciB0byBjYWxjdWxhdGUgbWVtb3J5IGFsaWdoIGZvciBwb2ludGVycy4gV2ViYXNzZW1ibHkgZG9lcyBub3QgcmVxdWlyZVxuLy8gdGhpcywgYnV0IHlvdSBtYXkgd2lzaCB0byBleHBlcmltZW50LiBEZWZhdWx0IGJhc2UgPSA4O1xuLy9cbk11bHRpTWF0aC5wcm90b3R5cGUuX19hbGlnbiA9IGZ1bmN0aW9uIGFsaWduKG51bWJlciwgYmFzZSkge1xuICBiYXNlID0gYmFzZSB8fCA4O1xuICB2YXIgcmVtaW5kZXIgPSBudW1iZXIgJSBiYXNlO1xuICByZXR1cm4gbnVtYmVyICsgKHJlbWluZGVyID8gYmFzZSAtIHJlbWluZGVyIDogMCk7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTXVsdGlNYXRoO1xuXG59LHtcIi4vbGliL2Jhc2U2NGRlY29kZVwiOjIxLFwiLi9saWIvd2FfZGV0ZWN0XCI6MjIsXCJvYmplY3QtYXNzaWduXCI6MjN9XSwyMTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vLyBiYXNlNjQgZGVjb2RlIHN0ciAtPiBVaW50OEFycmF5LCB0byBsb2FkIFdBIG1vZHVsZXNcbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIEJBU0U2NF9NQVAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlNjRkZWNvZGUoc3RyKSB7XG4gIHZhciBpbnB1dCA9IHN0ci5yZXBsYWNlKC9bXFxyXFxuPV0vZywgJycpLCAvLyByZW1vdmUgQ1IvTEYgJiBwYWRkaW5nIHRvIHNpbXBsaWZ5IHNjYW5cbiAgICAgIG1heCAgID0gaW5wdXQubGVuZ3RoO1xuXG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheSgobWF4ICogMykgPj4gMik7XG5cbiAgLy8gQ29sbGVjdCBieSA2KjQgYml0cyAoMyBieXRlcylcblxuICB2YXIgYml0cyA9IDA7XG4gIHZhciBwdHIgID0gMDtcblxuICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSA0ID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiAxNikgJiAweEZGO1xuICAgICAgb3V0W3B0cisrXSA9IChiaXRzID4+IDgpICYgMHhGRjtcbiAgICAgIG91dFtwdHIrK10gPSBiaXRzICYgMHhGRjtcbiAgICB9XG5cbiAgICBiaXRzID0gKGJpdHMgPDwgNikgfCBCQVNFNjRfTUFQLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdmFyIHRhaWxiaXRzID0gKG1heCAlIDQpICogNjtcblxuICBpZiAodGFpbGJpdHMgPT09IDApIHtcbiAgICBvdXRbcHRyKytdID0gKGJpdHMgPj4gMTYpICYgMHhGRjtcbiAgICBvdXRbcHRyKytdID0gKGJpdHMgPj4gOCkgJiAweEZGO1xuICAgIG91dFtwdHIrK10gPSBiaXRzICYgMHhGRjtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTgpIHtcbiAgICBvdXRbcHRyKytdID0gKGJpdHMgPj4gMTApICYgMHhGRjtcbiAgICBvdXRbcHRyKytdID0gKGJpdHMgPj4gMikgJiAweEZGO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxMikge1xuICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiA0KSAmIDB4RkY7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcblxufSx7fV0sMjI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLy8gRGV0ZWN0IFdlYkFzc2VtYmx5IHN1cHBvcnQuXG4vLyAtIENoZWNrIGdsb2JhbCBXZWJBc3NlbWJseSBvYmplY3Rcbi8vIC0gVHJ5IHRvIGxvYWQgc2ltcGxlIG1vZHVsZSAoY2FuIGJlIGRpc2FibGVkIHZpYSBDU1ApXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciB3YTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc1dlYkFzc2VtYmx5KCkge1xuICAvLyB1c2UgY2FjaGUgaWYgY2FsbGVkIGJlZm9yZTtcbiAgaWYgKHR5cGVvZiB3YSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiB3YTtcblxuICB3YSA9IGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gd2E7XG5cbiAgLy8gSWYgV2ViQXNzZW5ibHkgaXMgZGlzYWJsZWQsIGNvZGUgY2FuIHRocm93IG9uIGNvbXBpbGVcbiAgdHJ5IHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYnJpb24vbWluLXdhc20tZmFpbC9ibG9iL21hc3Rlci9taW4td2FzbS1mYWlsLmluLmpzXG4gICAgLy8gQWRkaXRpb25hbCBjaGVjayB0aGF0IFdBIGludGVybmFscyBhcmUgY29ycmVjdFxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tbWEtc3BhY2luZywgbWF4LWxlbiAqL1xuICAgIHZhciBiaW4gICAgICA9IG5ldyBVaW50OEFycmF5KFsgMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw2LDEsOTYsMSwxMjcsMSwxMjcsMywyLDEsMCw1LDMsMSwwLDEsNyw4LDEsNCwxMTYsMTAxLDExNSwxMTYsMCwwLDEwLDE2LDEsMTQsMCwzMiwwLDY1LDEsNTQsMiwwLDMyLDAsNDAsMiwwLDExIF0pO1xuICAgIHZhciBtb2R1bGUgICA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7fSk7XG5cbiAgICAvLyB0ZXN0IHN0b3JpbmcgdG8gYW5kIGxvYWRpbmcgZnJvbSBhIG5vbi16ZXJvIGxvY2F0aW9uIHZpYSBhIHBhcmFtZXRlci5cbiAgICAvLyBTYWZhcmkgb24gaU9TIDExLjIuNSByZXR1cm5zIDAgdW5leHBlY3RlZGx5IGF0IG5vbi16ZXJvIGxvY2F0aW9uc1xuICAgIGlmIChpbnN0YW5jZS5leHBvcnRzLnRlc3QoNCkgIT09IDApIHdhID0gdHJ1ZTtcblxuICAgIHJldHVybiB3YTtcbiAgfSBjYXRjaCAoX18pIHt9XG5cbiAgcmV0dXJuIHdhO1xufTtcblxufSx7fV0sMjM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxufSx7fV0sMjQ6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xudmFyIGJ1bmRsZUZuID0gYXJndW1lbnRzWzNdO1xudmFyIHNvdXJjZXMgPSBhcmd1bWVudHNbNF07XG52YXIgY2FjaGUgPSBhcmd1bWVudHNbNV07XG5cbnZhciBzdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIG9wdGlvbnMpIHtcbiAgICB2YXIgd2tleTtcbiAgICB2YXIgY2FjaGVLZXlzID0gT2JqZWN0LmtleXMoY2FjaGUpO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYWNoZUtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBrZXkgPSBjYWNoZUtleXNbaV07XG4gICAgICAgIHZhciBleHAgPSBjYWNoZVtrZXldLmV4cG9ydHM7XG4gICAgICAgIC8vIFVzaW5nIGJhYmVsIGFzIGEgdHJhbnNwaWxlciB0byB1c2UgZXNtb2R1bGUsIHRoZSBleHBvcnQgd2lsbCBhbHdheXNcbiAgICAgICAgLy8gYmUgYW4gb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQgZXhwb3J0IGFzIGEgcHJvcGVydHkgb2YgaXQuIFRvIGVuc3VyZVxuICAgICAgICAvLyB0aGUgZXhpc3RpbmcgYXBpIGFuZCBiYWJlbCBlc21vZHVsZSBleHBvcnRzIGFyZSBib3RoIHN1cHBvcnRlZCB3ZVxuICAgICAgICAvLyBjaGVjayBmb3IgYm90aFxuICAgICAgICBpZiAoZXhwID09PSBmbiB8fCBleHAgJiYgZXhwLmRlZmF1bHQgPT09IGZuKSB7XG4gICAgICAgICAgICB3a2V5ID0ga2V5O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXdrZXkpIHtcbiAgICAgICAgd2tleSA9IE1hdGguZmxvb3IoTWF0aC5wb3coMTYsIDgpICogTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMTYpO1xuICAgICAgICB2YXIgd2NhY2hlID0ge307XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2FjaGVLZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGNhY2hlS2V5c1tpXTtcbiAgICAgICAgICAgIHdjYWNoZVtrZXldID0ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZXNbd2tleV0gPSBbXG4gICAgICAgICAgICAnZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7JyArIGZuICsgJyhzZWxmKTsgfScsXG4gICAgICAgICAgICB3Y2FjaGVcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHNrZXkgPSBNYXRoLmZsb29yKE1hdGgucG93KDE2LCA4KSAqIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtcblxuICAgIHZhciBzY2FjaGUgPSB7fTsgc2NhY2hlW3drZXldID0gd2tleTtcbiAgICBzb3VyY2VzW3NrZXldID0gW1xuICAgICAgICAnZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7JyArXG4gICAgICAgICAgICAvLyB0cnkgdG8gY2FsbCBkZWZhdWx0IGlmIGRlZmluZWQgdG8gYWxzbyBzdXBwb3J0IGJhYmVsIGVzbW9kdWxlIGV4cG9ydHNcbiAgICAgICAgICAgICd2YXIgZiA9IHJlcXVpcmUoJyArIHN0cmluZ2lmeSh3a2V5KSArICcpOycgK1xuICAgICAgICAgICAgJyhmLmRlZmF1bHQgPyBmLmRlZmF1bHQgOiBmKShzZWxmKTsnICtcbiAgICAgICAgJ30nLFxuICAgICAgICBzY2FjaGVcbiAgICBdO1xuXG4gICAgdmFyIHdvcmtlclNvdXJjZXMgPSB7fTtcbiAgICByZXNvbHZlU291cmNlcyhza2V5KTtcblxuICAgIGZ1bmN0aW9uIHJlc29sdmVTb3VyY2VzKGtleSkge1xuICAgICAgICB3b3JrZXJTb3VyY2VzW2tleV0gPSB0cnVlO1xuXG4gICAgICAgIGZvciAodmFyIGRlcFBhdGggaW4gc291cmNlc1trZXldWzFdKSB7XG4gICAgICAgICAgICB2YXIgZGVwS2V5ID0gc291cmNlc1trZXldWzFdW2RlcFBhdGhdO1xuICAgICAgICAgICAgaWYgKCF3b3JrZXJTb3VyY2VzW2RlcEtleV0pIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlU291cmNlcyhkZXBLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNyYyA9ICcoJyArIGJ1bmRsZUZuICsgJykoeydcbiAgICAgICAgKyBPYmplY3Qua2V5cyh3b3JrZXJTb3VyY2VzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeShrZXkpICsgJzpbJ1xuICAgICAgICAgICAgICAgICsgc291cmNlc1trZXldWzBdXG4gICAgICAgICAgICAgICAgKyAnLCcgKyBzdHJpbmdpZnkoc291cmNlc1trZXldWzFdKSArICddJ1xuICAgICAgICAgICAgO1xuICAgICAgICB9KS5qb2luKCcsJylcbiAgICAgICAgKyAnfSx7fSxbJyArIHN0cmluZ2lmeShza2V5KSArICddKSdcbiAgICA7XG5cbiAgICB2YXIgVVJMID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMIHx8IHdpbmRvdy5tb3pVUkwgfHwgd2luZG93Lm1zVVJMO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbc3JjXSwgeyB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JyB9KTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJhcmUpIHsgcmV0dXJuIGJsb2I7IH1cbiAgICB2YXIgd29ya2VyVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJVcmwpO1xuICAgIHdvcmtlci5vYmplY3RVUkwgPSB3b3JrZXJVcmw7XG4gICAgcmV0dXJuIHdvcmtlcjtcbn07XG5cbn0se31dLFwiL2luZGV4LmpzXCI6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2kgPSBhcnIgPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl07IGlmIChfaSA9PSBudWxsKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX3MsIF9lOyB0cnkgeyBmb3IgKF9pID0gX2kuY2FsbChhcnIpOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbnZhciBhc3NpZ24gPSBfZGVyZXFfKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciB3ZWJ3b3JraWZ5ID0gX2RlcmVxXygnd2Vid29ya2lmeScpO1xuXG52YXIgTWF0aExpYiA9IF9kZXJlcV8oJy4vbGliL21hdGhsaWInKTtcblxudmFyIFBvb2wgPSBfZGVyZXFfKCcuL2xpYi9wb29sJyk7XG5cbnZhciB1dGlscyA9IF9kZXJlcV8oJy4vbGliL3V0aWxzJyk7XG5cbnZhciB3b3JrZXIgPSBfZGVyZXFfKCcuL2xpYi93b3JrZXInKTtcblxudmFyIGNyZWF0ZVN0YWdlcyA9IF9kZXJlcV8oJy4vbGliL3N0ZXBwZXInKTtcblxudmFyIGNyZWF0ZVJlZ2lvbnMgPSBfZGVyZXFfKCcuL2xpYi90aWxlcicpOyAvLyBEZWR1cGxpY2F0ZSBwb29scyAmIGxpbWl0ZXJzIHdpdGggdGhlIHNhbWUgY29uZmlnc1xuLy8gd2hlbiB1c2VyIGNyZWF0ZXMgbXVsdGlwbGUgcGljYSBpbnN0YW5jZXMuXG5cblxudmFyIHNpbmdsZXRvbmVzID0ge307XG52YXIgTkVFRF9TQUZBUklfRklYID0gZmFsc2U7XG5cbnRyeSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgTkVFRF9TQUZBUklfRklYID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdTYWZhcmknKSA+PSAwO1xuICB9XG59IGNhdGNoIChlKSB7fVxuXG52YXIgY29uY3VycmVuY3kgPSAxO1xuXG5pZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgY29uY3VycmVuY3kgPSBNYXRoLm1pbihuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSB8fCAxLCA0KTtcbn1cblxudmFyIERFRkFVTFRfUElDQV9PUFRTID0ge1xuICB0aWxlOiAxMDI0LFxuICBjb25jdXJyZW5jeTogY29uY3VycmVuY3ksXG4gIGZlYXR1cmVzOiBbJ2pzJywgJ3dhc20nLCAnd3cnXSxcbiAgaWRsZTogMjAwMCxcbiAgY3JlYXRlQ2FudmFzOiBmdW5jdGlvbiBjcmVhdGVDYW52YXMod2lkdGgsIGhlaWdodCkge1xuICAgIHZhciB0bXBDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICB0bXBDYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICB0bXBDYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHJldHVybiB0bXBDYW52YXM7XG4gIH1cbn07XG52YXIgREVGQVVMVF9SRVNJWkVfT1BUUyA9IHtcbiAgcXVhbGl0eTogMyxcbiAgYWxwaGE6IGZhbHNlLFxuICB1bnNoYXJwQW1vdW50OiAwLFxuICB1bnNoYXJwUmFkaXVzOiAwLjAsXG4gIHVuc2hhcnBUaHJlc2hvbGQ6IDBcbn07XG52YXIgQ0FOX05FV19JTUFHRV9EQVRBID0gZmFsc2U7XG52YXIgQ0FOX0NSRUFURV9JTUFHRV9CSVRNQVAgPSBmYWxzZTtcbnZhciBDQU5fVVNFX0NBTlZBU19HRVRfSU1BR0VfREFUQSA9IGZhbHNlO1xudmFyIENBTl9VU0VfT0ZGU0NSRUVOX0NBTlZBUyA9IGZhbHNlO1xudmFyIENBTl9VU0VfQ0lCX1JFR0lPTl9GT1JfSU1BR0UgPSBmYWxzZTtcblxuZnVuY3Rpb24gd29ya2VyRmFicmljKCkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB3ZWJ3b3JraWZ5KHdvcmtlciksXG4gICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgIHRoaXMudmFsdWUudGVybWluYXRlKCk7XG5cbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YXIgdXJsID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMIHx8IHdpbmRvdy5tb3pVUkwgfHwgd2luZG93Lm1zVVJMO1xuXG4gICAgICAgIGlmICh1cmwgJiYgdXJsLnJldm9rZU9iamVjdFVSTCAmJiB0aGlzLnZhbHVlLm9iamVjdFVSTCkge1xuICAgICAgICAgIHVybC5yZXZva2VPYmplY3RVUkwodGhpcy52YWx1ZS5vYmplY3RVUkwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVBJIG1ldGhvZHNcblxuXG5mdW5jdGlvbiBQaWNhKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBpY2EpKSByZXR1cm4gbmV3IFBpY2Eob3B0aW9ucyk7XG4gIHRoaXMub3B0aW9ucyA9IGFzc2lnbih7fSwgREVGQVVMVF9QSUNBX09QVFMsIG9wdGlvbnMgfHwge30pO1xuICB2YXIgbGltaXRlcl9rZXkgPSBcImxrX1wiLmNvbmNhdCh0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kpOyAvLyBTaGFyZSBsaW1pdGVycyB0byBhdm9pZCBtdWx0aXBsZSBwYXJhbGxlbCB3b3JrZXJzIHdoZW4gdXNlciBjcmVhdGVzXG4gIC8vIG11bHRpcGxlIHBpY2EgaW5zdGFuY2VzLlxuXG4gIHRoaXMuX19saW1pdCA9IHNpbmdsZXRvbmVzW2xpbWl0ZXJfa2V5XSB8fCB1dGlscy5saW1pdGVyKHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSk7XG4gIGlmICghc2luZ2xldG9uZXNbbGltaXRlcl9rZXldKSBzaW5nbGV0b25lc1tsaW1pdGVyX2tleV0gPSB0aGlzLl9fbGltaXQ7IC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGZlYXR1cmVzLCBhY2NvcmRpbmcgdG8gb3B0aW9ucyAmIGJyb3dzZXIvbm9kZS5qc1xuXG4gIHRoaXMuZmVhdHVyZXMgPSB7XG4gICAganM6IGZhbHNlLFxuICAgIC8vIHB1cmUgSlMgaW1wbGVtZW50YXRpb24sIGNhbiBiZSBkaXNhYmxlZCBmb3IgdGVzdGluZ1xuICAgIHdhc206IGZhbHNlLFxuICAgIC8vIHdlYmFzc2VtYmx5IGltcGxlbWVudGF0aW9uIGZvciBoZWF2eSBmdW5jdGlvbnNcbiAgICBjaWI6IGZhbHNlLFxuICAgIC8vIHJlc2l6ZSB2aWEgY3JlYXRlSW1hZ2VCaXRtYXAgKG9ubHkgRkYgYXQgdGhpcyBtb21lbnQpXG4gICAgd3c6IGZhbHNlIC8vIHdlYndvcmtlcnNcblxuICB9O1xuICB0aGlzLl9fd29ya2Vyc1Bvb2wgPSBudWxsOyAvLyBTdG9yZSByZXF1ZXN0ZWQgZmVhdHVyZXMgZm9yIHdlYndvcmtlcnNcblxuICB0aGlzLl9fcmVxdWVzdGVkX2ZlYXR1cmVzID0gW107XG4gIHRoaXMuX19tYXRobGliID0gbnVsbDtcbn1cblxuUGljYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICBpZiAodGhpcy5fX2luaXRQcm9taXNlKSByZXR1cm4gdGhpcy5fX2luaXRQcm9taXNlOyAvLyBUZXN0IGlmIHdlIGNhbiBjcmVhdGUgSW1hZ2VEYXRhIHdpdGhvdXQgY2FudmFzIGFuZCBtZW1vcnkgY29weVxuXG4gIGlmICh0eXBlb2YgSW1hZ2VEYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLW5ldyAqL1xuICAgICAgbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoNDAwKSwgMTAsIDEwKTtcbiAgICAgIENBTl9ORVdfSU1BR0VfREFUQSA9IHRydWU7XG4gICAgfSBjYXRjaCAoX18pIHt9XG4gIH0gLy8gSW1hZ2VCaXRtYXAgY2FuIGJlIGVmZmVjdGl2ZSBpbiAyIHBsYWNlczpcbiAgLy9cbiAgLy8gMS4gVGhyZWFkZWQganBlZyB1bnBhY2sgKGJhc2ljKVxuICAvLyAyLiBCdWlsdC1pbiByZXNpemUgKGJsb2NrZWQgZHVlIHByb2JsZW0gaW4gY2hyb21lLCBzZWUgaXNzdWUgIzg5KVxuICAvL1xuICAvLyBGb3IgYmFzaWMgdXNlIHdlIGFsc28gbmVlZCBJbWFnZUJpdG1hcCB3byBzdXBwb3J0IC5jbG9zZSgpIG1ldGhvZCxcbiAgLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3J1L2RvY3MvV2ViL0FQSS9JbWFnZUJpdG1hcFxuXG5cbiAgaWYgKHR5cGVvZiBJbWFnZUJpdG1hcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAoSW1hZ2VCaXRtYXAucHJvdG90eXBlICYmIEltYWdlQml0bWFwLnByb3RvdHlwZS5jbG9zZSkge1xuICAgICAgQ0FOX0NSRUFURV9JTUFHRV9CSVRNQVAgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlYnVnKCdJbWFnZUJpdG1hcCBkb2VzIG5vdCBzdXBwb3J0IC5jbG9zZSgpLCBkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBmZWF0dXJlcyA9IHRoaXMub3B0aW9ucy5mZWF0dXJlcy5zbGljZSgpO1xuXG4gIGlmIChmZWF0dXJlcy5pbmRleE9mKCdhbGwnKSA+PSAwKSB7XG4gICAgZmVhdHVyZXMgPSBbJ2NpYicsICd3YXNtJywgJ2pzJywgJ3d3J107XG4gIH1cblxuICB0aGlzLl9fcmVxdWVzdGVkX2ZlYXR1cmVzID0gZmVhdHVyZXM7XG4gIHRoaXMuX19tYXRobGliID0gbmV3IE1hdGhMaWIoZmVhdHVyZXMpOyAvLyBDaGVjayBXZWJXb3JrZXIgc3VwcG9ydCBpZiByZXF1ZXN0ZWRcblxuICBpZiAoZmVhdHVyZXMuaW5kZXhPZignd3cnKSA+PSAwKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICdXb3JrZXInIGluIHdpbmRvdykge1xuICAgICAgLy8gSUUgPD0gMTEgZG9uJ3QgYWxsb3cgdG8gY3JlYXRlIHdlYndvcmtlcnMgZnJvbSBzdHJpbmcuIFdlIHNob3VsZCBjaGVjayBpdC5cbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODAxODEwL3dlYi13b3JrZXJzLWZyb20tYmxvYi11cmxzLWluLWllLTEwLWFuZC0xMVxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHdrciA9IF9kZXJlcV8oJ3dlYndvcmtpZnknKShmdW5jdGlvbiAoKSB7fSk7XG5cbiAgICAgICAgd2tyLnRlcm1pbmF0ZSgpO1xuICAgICAgICB0aGlzLmZlYXR1cmVzLnd3ID0gdHJ1ZTsgLy8gcG9vbCB1bmlxdWVuZXNzIGRlcGVuZHMgb24gcG9vbCBjb25maWcgKyB3ZWJ3b3JrZXIgY29uZmlnXG5cbiAgICAgICAgdmFyIHdwb29sX2tleSA9IFwid3BfXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHRoaXMub3B0aW9ucykpO1xuXG4gICAgICAgIGlmIChzaW5nbGV0b25lc1t3cG9vbF9rZXldKSB7XG4gICAgICAgICAgdGhpcy5fX3dvcmtlcnNQb29sID0gc2luZ2xldG9uZXNbd3Bvb2xfa2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9fd29ya2Vyc1Bvb2wgPSBuZXcgUG9vbCh3b3JrZXJGYWJyaWMsIHRoaXMub3B0aW9ucy5pZGxlKTtcbiAgICAgICAgICBzaW5nbGV0b25lc1t3cG9vbF9rZXldID0gdGhpcy5fX3dvcmtlcnNQb29sO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChfXykge31cbiAgICB9XG4gIH1cblxuICB2YXIgaW5pdE1hdGggPSB0aGlzLl9fbWF0aGxpYi5pbml0KCkudGhlbihmdW5jdGlvbiAobWF0aGxpYikge1xuICAgIC8vIENvcHkgZGV0ZWN0ZWQgZmVhdHVyZXNcbiAgICBhc3NpZ24oX3RoaXMuZmVhdHVyZXMsIG1hdGhsaWIuZmVhdHVyZXMpO1xuICB9KTtcblxuICB2YXIgY2hlY2tDaWJSZXNpemU7XG5cbiAgaWYgKCFDQU5fQ1JFQVRFX0lNQUdFX0JJVE1BUCkge1xuICAgIGNoZWNrQ2liUmVzaXplID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBjaGVja0NpYlJlc2l6ZSA9IHV0aWxzLmNpYl9zdXBwb3J0KHRoaXMub3B0aW9ucy5jcmVhdGVDYW52YXMpLnRoZW4oZnVuY3Rpb24gKHN0YXR1cykge1xuICAgICAgaWYgKF90aGlzLmZlYXR1cmVzLmNpYiAmJiBmZWF0dXJlcy5pbmRleE9mKCdjaWInKSA8IDApIHtcbiAgICAgICAgX3RoaXMuZGVidWcoJ2NyZWF0ZUltYWdlQml0bWFwKCkgcmVzaXplIHN1cHBvcnRlZCwgYnV0IGRpc2FibGVkIGJ5IGNvbmZpZycpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGZlYXR1cmVzLmluZGV4T2YoJ2NpYicpID49IDApIF90aGlzLmZlYXR1cmVzLmNpYiA9IHN0YXR1cztcbiAgICB9KTtcbiAgfVxuXG4gIENBTl9VU0VfQ0FOVkFTX0dFVF9JTUFHRV9EQVRBID0gdXRpbHMuY2FuX3VzZV9jYW52YXModGhpcy5vcHRpb25zLmNyZWF0ZUNhbnZhcyk7XG4gIHZhciBjaGVja09mZnNjcmVlbkNhbnZhcztcblxuICBpZiAoQ0FOX0NSRUFURV9JTUFHRV9CSVRNQVAgJiYgQ0FOX05FV19JTUFHRV9EQVRBICYmIGZlYXR1cmVzLmluZGV4T2YoJ3d3JykgIT09IC0xKSB7XG4gICAgY2hlY2tPZmZzY3JlZW5DYW52YXMgPSB1dGlscy53b3JrZXJfb2Zmc2NyZWVuX2NhbnZhc19zdXBwb3J0KCk7XG4gIH0gZWxzZSB7XG4gICAgY2hlY2tPZmZzY3JlZW5DYW52YXMgPSBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICB9XG5cbiAgY2hlY2tPZmZzY3JlZW5DYW52YXMgPSBjaGVja09mZnNjcmVlbkNhbnZhcy50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBDQU5fVVNFX09GRlNDUkVFTl9DQU5WQVMgPSByZXN1bHQ7XG4gIH0pOyAvLyB3ZSB1c2UgY3JlYXRlSW1hZ2VCaXRtYXAgdG8gY3JvcCBpbWFnZSBkYXRhIGFuZCBwYXNzIGl0IHRvIHdvcmtlcnMsXG4gIC8vIHNvIG5lZWQgdG8gY2hlY2sgd2hldGhlciBmdW5jdGlvbiB3b3JrcyBjb3JyZWN0bHk7XG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEyMjA2NzFcblxuICB2YXIgY2hlY2tDaWJSZWdpb24gPSB1dGlscy5jaWJfY2FuX3VzZV9yZWdpb24oKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICBDQU5fVVNFX0NJQl9SRUdJT05fRk9SX0lNQUdFID0gcmVzdWx0O1xuICB9KTsgLy8gSW5pdCBtYXRoIGxpYi4gVGhhdCdzIGFzeW5jIGJlY2F1c2UgY2FuIGxvYWQgc29tZVxuXG4gIHRoaXMuX19pbml0UHJvbWlzZSA9IFByb21pc2UuYWxsKFtpbml0TWF0aCwgY2hlY2tDaWJSZXNpemUsIGNoZWNrT2Zmc2NyZWVuQ2FudmFzLCBjaGVja0NpYlJlZ2lvbl0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdGhpcztcbiAgfSk7XG4gIHJldHVybiB0aGlzLl9faW5pdFByb21pc2U7XG59OyAvLyBDYWxsIHJlc2l6ZXIgaW4gd2Vid29ya2VyIG9yIGxvY2FsbHksIGRlcGVuZGluZyBvbiBjb25maWdcblxuXG5QaWNhLnByb3RvdHlwZS5fX2ludm9rZVJlc2l6ZSA9IGZ1bmN0aW9uICh0aWxlT3B0cywgb3B0cykge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAvLyBTaGFyZSBjYWNoZSBiZXR3ZWVuIGNhbGxzOlxuICAvL1xuICAvLyAtIHdhc20gaW5zdGFuY2VcbiAgLy8gLSB3YXNtIG1lbW9yeSBvYmplY3RcbiAgLy9cbiAgb3B0cy5fX21hdGhDYWNoZSA9IG9wdHMuX19tYXRoQ2FjaGUgfHwge307XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIV90aGlzMi5mZWF0dXJlcy53dykge1xuICAgICAgLy8gbm90IHBvc3NpYmxlIHRvIGhhdmUgSW1hZ2VCaXRtYXAgaGVyZSBpZiB1c2VyIGRpc2FibGVkIFdXXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBfdGhpczIuX19tYXRobGliLnJlc2l6ZUFuZFVuc2hhcnAodGlsZU9wdHMsIG9wdHMuX19tYXRoQ2FjaGUpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgdyA9IF90aGlzMi5fX3dvcmtlcnNQb29sLmFjcXVpcmUoKTtcblxuICAgICAgaWYgKG9wdHMuY2FuY2VsVG9rZW4pIG9wdHMuY2FuY2VsVG9rZW5bXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgICB3LnZhbHVlLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB3LnJlbGVhc2UoKTtcbiAgICAgICAgaWYgKGV2LmRhdGEuZXJyKSByZWplY3QoZXYuZGF0YS5lcnIpO2Vsc2UgcmVzb2x2ZShldi5kYXRhKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciB0cmFuc2ZlciA9IFtdO1xuICAgICAgaWYgKHRpbGVPcHRzLnNyYykgdHJhbnNmZXIucHVzaCh0aWxlT3B0cy5zcmMuYnVmZmVyKTtcbiAgICAgIGlmICh0aWxlT3B0cy5zcmNCaXRtYXApIHRyYW5zZmVyLnB1c2godGlsZU9wdHMuc3JjQml0bWFwKTtcbiAgICAgIHcudmFsdWUucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBvcHRzOiB0aWxlT3B0cyxcbiAgICAgICAgZmVhdHVyZXM6IF90aGlzMi5fX3JlcXVlc3RlZF9mZWF0dXJlcyxcbiAgICAgICAgcHJlbG9hZDoge1xuICAgICAgICAgIHdhc21fbm9kdWxlOiBfdGhpczIuX19tYXRobGliLl9fXG4gICAgICAgIH1cbiAgICAgIH0sIHRyYW5zZmVyKTtcbiAgICB9KTtcbiAgfSk7XG59OyAvLyB0aGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gcHJvbWlzZSBpZiBjcmVhdGVJbWFnZUJpdG1hcCBpcyB1c2VkXG5cblxuUGljYS5wcm90b3R5cGUuX19leHRyYWN0VGlsZURhdGEgPSBmdW5jdGlvbiAodGlsZSwgZnJvbSwgb3B0cywgc3RhZ2VFbnYsIGV4dHJhY3RUbykge1xuICBpZiAodGhpcy5mZWF0dXJlcy53dyAmJiBDQU5fVVNFX09GRlNDUkVFTl9DQU5WQVMgJiYgKCAvLyBjcmVhdGVJbWFnZUJpdG1hcCBkb2Vzbid0IHdvcmsgZm9yIGltYWdlcyAoSW1hZ2UsIEltYWdlQml0bWFwKSB3aXRoIEV4aWYgb3JpZW50YXRpb24gaW4gQ2hyb21lLFxuICAvLyBjYW4gdXNlIGNhbnZhcyBiZWNhdXNlIGNhbnZhcyBkb2Vzbid0IGhhdmUgb3JpZW50YXRpb247XG4gIC8vIHNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjIwNjcxXG4gIHV0aWxzLmlzQ2FudmFzKGZyb20pIHx8IENBTl9VU0VfQ0lCX1JFR0lPTl9GT1JfSU1BR0UpKSB7XG4gICAgdGhpcy5kZWJ1ZygnQ3JlYXRlIHRpbGUgZm9yIE9mZnNjcmVlbkNhbnZhcycpO1xuICAgIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChzdGFnZUVudi5zcmNJbWFnZUJpdG1hcCB8fCBmcm9tLCB0aWxlLngsIHRpbGUueSwgdGlsZS53aWR0aCwgdGlsZS5oZWlnaHQpLnRoZW4oZnVuY3Rpb24gKGJpdG1hcCkge1xuICAgICAgZXh0cmFjdFRvLnNyY0JpdG1hcCA9IGJpdG1hcDtcbiAgICAgIHJldHVybiBleHRyYWN0VG87XG4gICAgfSk7XG4gIH0gLy8gRXh0cmFjdCB0aWxlIFJHQkEgYnVmZmVyLCBkZXBlbmRpbmcgb24gaW5wdXQgdHlwZVxuXG5cbiAgaWYgKHV0aWxzLmlzQ2FudmFzKGZyb20pKSB7XG4gICAgaWYgKCFzdGFnZUVudi5zcmNDdHgpIHN0YWdlRW52LnNyY0N0eCA9IGZyb20uZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogQm9vbGVhbihvcHRzLmFscGhhKVxuICAgIH0pOyAvLyBJZiBpbnB1dCBpcyBDYW52YXMgLSBleHRyYWN0IHJlZ2lvbiBkYXRhIGRpcmVjdGx5XG5cbiAgICB0aGlzLmRlYnVnKCdHZXQgdGlsZSBwaXhlbCBkYXRhJyk7XG4gICAgZXh0cmFjdFRvLnNyYyA9IHN0YWdlRW52LnNyY0N0eC5nZXRJbWFnZURhdGEodGlsZS54LCB0aWxlLnksIHRpbGUud2lkdGgsIHRpbGUuaGVpZ2h0KS5kYXRhO1xuICAgIHJldHVybiBleHRyYWN0VG87XG4gIH0gLy8gSWYgaW5wdXQgaXMgSW1hZ2Ugb3IgZGVjb2RlZCB0byBJbWFnZUJpdG1hcCxcbiAgLy8gZHJhdyByZWdpb24gdG8gdGVtcG9yYXJ5IGNhbnZhcyBhbmQgZXh0cmFjdCBkYXRhIGZyb20gaXRcbiAgLy9cbiAgLy8gTm90ZSEgQXR0ZW1wdCB0byByZXVzZSB0aGlzIGNhbnZhcyBjYXVzZXMgc2lnbmlmaWNhbnQgc2xvd2Rvd24gaW4gY2hyb21lXG4gIC8vXG5cblxuICB0aGlzLmRlYnVnKCdEcmF3IHRpbGUgaW1hZ2VCaXRtYXAvaW1hZ2UgdG8gdGVtcG9yYXJ5IGNhbnZhcycpO1xuICB2YXIgdG1wQ2FudmFzID0gdGhpcy5vcHRpb25zLmNyZWF0ZUNhbnZhcyh0aWxlLndpZHRoLCB0aWxlLmhlaWdodCk7XG4gIHZhciB0bXBDdHggPSB0bXBDYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgYWxwaGE6IEJvb2xlYW4ob3B0cy5hbHBoYSlcbiAgfSk7XG4gIHRtcEN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnY29weSc7XG4gIHRtcEN0eC5kcmF3SW1hZ2Uoc3RhZ2VFbnYuc3JjSW1hZ2VCaXRtYXAgfHwgZnJvbSwgdGlsZS54LCB0aWxlLnksIHRpbGUud2lkdGgsIHRpbGUuaGVpZ2h0LCAwLCAwLCB0aWxlLndpZHRoLCB0aWxlLmhlaWdodCk7XG4gIHRoaXMuZGVidWcoJ0dldCB0aWxlIHBpeGVsIGRhdGEnKTtcbiAgZXh0cmFjdFRvLnNyYyA9IHRtcEN0eC5nZXRJbWFnZURhdGEoMCwgMCwgdGlsZS53aWR0aCwgdGlsZS5oZWlnaHQpLmRhdGE7IC8vIFNhZmFyaSAxMiB3b3JrYXJvdW5kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYS9pc3N1ZXMvMTk5XG5cbiAgdG1wQ2FudmFzLndpZHRoID0gdG1wQ2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiBleHRyYWN0VG87XG59O1xuXG5QaWNhLnByb3RvdHlwZS5fX2xhbmRUaWxlRGF0YSA9IGZ1bmN0aW9uICh0aWxlLCByZXN1bHQsIHN0YWdlRW52KSB7XG4gIHZhciB0b0ltYWdlRGF0YTtcbiAgdGhpcy5kZWJ1ZygnQ29udmVydCByYXcgcmdiYSB0aWxlIHJlc3VsdCB0byBJbWFnZURhdGEnKTtcblxuICBpZiAocmVzdWx0LmJpdG1hcCkge1xuICAgIHN0YWdlRW52LnRvQ3R4LmRyYXdJbWFnZShyZXN1bHQuYml0bWFwLCB0aWxlLnRvWCwgdGlsZS50b1kpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKENBTl9ORVdfSU1BR0VfREFUQSkge1xuICAgIC8vIHRoaXMgYnJhbmNoIGlzIGZvciBtb2Rlcm4gYnJvd3NlcnNcbiAgICAvLyBJZiBgbmV3IEltYWdlRGF0YSgpYCAmIFVpbnQ4Q2xhbXBlZEFycmF5IHN1cG9ydGVkXG4gICAgdG9JbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShyZXN1bHQuZGF0YSksIHRpbGUudG9XaWR0aCwgdGlsZS50b0hlaWdodCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gZmFsbGJhY2sgZm9yIGBub2RlLWNhbnZhc2AgYW5kIG9sZCBicm93c2Vyc1xuICAgIC8vIChJRTExIGhhcyBJbWFnZURhdGEgYnV0IGRvZXMgbm90IHN1cHBvcnQgYG5ldyBJbWFnZURhdGEoKWApXG4gICAgdG9JbWFnZURhdGEgPSBzdGFnZUVudi50b0N0eC5jcmVhdGVJbWFnZURhdGEodGlsZS50b1dpZHRoLCB0aWxlLnRvSGVpZ2h0KTtcblxuICAgIGlmICh0b0ltYWdlRGF0YS5kYXRhLnNldCkge1xuICAgICAgdG9JbWFnZURhdGEuZGF0YS5zZXQocmVzdWx0LmRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJRTkgZG9uJ3QgaGF2ZSBgLnNldCgpYFxuICAgICAgZm9yICh2YXIgaSA9IHRvSW1hZ2VEYXRhLmRhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdG9JbWFnZURhdGEuZGF0YVtpXSA9IHJlc3VsdC5kYXRhW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuZGVidWcoJ0RyYXcgdGlsZScpO1xuXG4gIGlmIChORUVEX1NBRkFSSV9GSVgpIHtcbiAgICAvLyBTYWZhcmkgZHJhd3MgdGhpbiB3aGl0ZSBzdHJpcGVzIGJldHdlZW4gdGlsZXMgd2l0aG91dCB0aGlzIGZpeFxuICAgIHN0YWdlRW52LnRvQ3R4LnB1dEltYWdlRGF0YSh0b0ltYWdlRGF0YSwgdGlsZS50b1gsIHRpbGUudG9ZLCB0aWxlLnRvSW5uZXJYIC0gdGlsZS50b1gsIHRpbGUudG9Jbm5lclkgLSB0aWxlLnRvWSwgdGlsZS50b0lubmVyV2lkdGggKyAxZS01LCB0aWxlLnRvSW5uZXJIZWlnaHQgKyAxZS01KTtcbiAgfSBlbHNlIHtcbiAgICBzdGFnZUVudi50b0N0eC5wdXRJbWFnZURhdGEodG9JbWFnZURhdGEsIHRpbGUudG9YLCB0aWxlLnRvWSwgdGlsZS50b0lubmVyWCAtIHRpbGUudG9YLCB0aWxlLnRvSW5uZXJZIC0gdGlsZS50b1ksIHRpbGUudG9Jbm5lcldpZHRoLCB0aWxlLnRvSW5uZXJIZWlnaHQpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5QaWNhLnByb3RvdHlwZS5fX3RpbGVBbmRSZXNpemUgPSBmdW5jdGlvbiAoZnJvbSwgdG8sIG9wdHMpIHtcbiAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgdmFyIHN0YWdlRW52ID0ge1xuICAgIHNyY0N0eDogbnVsbCxcbiAgICBzcmNJbWFnZUJpdG1hcDogbnVsbCxcbiAgICBpc0ltYWdlQml0bWFwUmV1c2VkOiBmYWxzZSxcbiAgICB0b0N0eDogbnVsbFxuICB9O1xuXG4gIHZhciBwcm9jZXNzVGlsZSA9IGZ1bmN0aW9uIHByb2Nlc3NUaWxlKHRpbGUpIHtcbiAgICByZXR1cm4gX3RoaXMzLl9fbGltaXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG9wdHMuY2FuY2VsZWQpIHJldHVybiBvcHRzLmNhbmNlbFRva2VuO1xuICAgICAgdmFyIHRpbGVPcHRzID0ge1xuICAgICAgICB3aWR0aDogdGlsZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB0aWxlLmhlaWdodCxcbiAgICAgICAgdG9XaWR0aDogdGlsZS50b1dpZHRoLFxuICAgICAgICB0b0hlaWdodDogdGlsZS50b0hlaWdodCxcbiAgICAgICAgc2NhbGVYOiB0aWxlLnNjYWxlWCxcbiAgICAgICAgc2NhbGVZOiB0aWxlLnNjYWxlWSxcbiAgICAgICAgb2Zmc2V0WDogdGlsZS5vZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiB0aWxlLm9mZnNldFksXG4gICAgICAgIHF1YWxpdHk6IG9wdHMucXVhbGl0eSxcbiAgICAgICAgYWxwaGE6IG9wdHMuYWxwaGEsXG4gICAgICAgIHVuc2hhcnBBbW91bnQ6IG9wdHMudW5zaGFycEFtb3VudCxcbiAgICAgICAgdW5zaGFycFJhZGl1czogb3B0cy51bnNoYXJwUmFkaXVzLFxuICAgICAgICB1bnNoYXJwVGhyZXNob2xkOiBvcHRzLnVuc2hhcnBUaHJlc2hvbGRcbiAgICAgIH07XG5cbiAgICAgIF90aGlzMy5kZWJ1ZygnSW52b2tlIHJlc2l6ZSBtYXRoJyk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGlsZU9wdHMpLnRoZW4oZnVuY3Rpb24gKHRpbGVPcHRzKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMuX19leHRyYWN0VGlsZURhdGEodGlsZSwgZnJvbSwgb3B0cywgc3RhZ2VFbnYsIHRpbGVPcHRzKTtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHRpbGVPcHRzKSB7XG4gICAgICAgIF90aGlzMy5kZWJ1ZygnSW52b2tlIHJlc2l6ZSBtYXRoJyk7XG5cbiAgICAgICAgcmV0dXJuIF90aGlzMy5fX2ludm9rZVJlc2l6ZSh0aWxlT3B0cywgb3B0cyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKG9wdHMuY2FuY2VsZWQpIHJldHVybiBvcHRzLmNhbmNlbFRva2VuO1xuICAgICAgICBzdGFnZUVudi5zcmNJbWFnZURhdGEgPSBudWxsO1xuICAgICAgICByZXR1cm4gX3RoaXMzLl9fbGFuZFRpbGVEYXRhKHRpbGUsIHJlc3VsdCwgc3RhZ2VFbnYpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07IC8vIE5lZWQgdG8gbm9ybWFsaXplIGRhdGEgc291cmNlIGZpcnN0LiBJdCBjYW4gYmUgY2FudmFzIG9yIGltYWdlLlxuICAvLyBJZiBpbWFnZSAtIHRyeSB0byBkZWNvZGUgaW4gYmFja2dyb3VuZCBpZiBwb3NzaWJsZVxuXG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHN0YWdlRW52LnRvQ3R4ID0gdG8uZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogQm9vbGVhbihvcHRzLmFscGhhKVxuICAgIH0pO1xuICAgIGlmICh1dGlscy5pc0NhbnZhcyhmcm9tKSkgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAodXRpbHMuaXNJbWFnZUJpdG1hcChmcm9tKSkge1xuICAgICAgc3RhZ2VFbnYuc3JjSW1hZ2VCaXRtYXAgPSBmcm9tO1xuICAgICAgc3RhZ2VFbnYuaXNJbWFnZUJpdG1hcFJldXNlZCA9IHRydWU7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNJbWFnZShmcm9tKSkge1xuICAgICAgLy8gdHJ5IGRvIGRlY29kZSBpbWFnZSBpbiBiYWNrZ3JvdW5kIGZvciBmYXN0ZXIgbmV4dCBvcGVyYXRpb25zO1xuICAgICAgLy8gaWYgd2UncmUgdXNpbmcgb2Zmc2NyZWVuIGNhbnZhcywgY2liIGlzIGNhbGxlZCBwZXIgdGlsZSwgc28gbm90IG5lZWRlZCBoZXJlXG4gICAgICBpZiAoIUNBTl9DUkVBVEVfSU1BR0VfQklUTUFQKSByZXR1cm4gbnVsbDtcblxuICAgICAgX3RoaXMzLmRlYnVnKCdEZWNvZGUgaW1hZ2UgdmlhIGNyZWF0ZUltYWdlQml0bWFwJyk7XG5cbiAgICAgIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChmcm9tKS50aGVuKGZ1bmN0aW9uIChpbWFnZUJpdG1hcCkge1xuICAgICAgICBzdGFnZUVudi5zcmNJbWFnZUJpdG1hcCA9IGltYWdlQml0bWFwO1xuICAgICAgfSkgLy8gU3VwcHJlc3MgZXJyb3IgdG8gdXNlIGZhbGxiYWNrLCBpZiBtZXRob2QgZmFpbHNcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYS9pc3N1ZXMvMTkwXG5cbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgICBbXCJjYXRjaFwiXShmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignUGljYTogXCIuZnJvbVwiIHNob3VsZCBiZSBJbWFnZSwgQ2FudmFzIG9yIEltYWdlQml0bWFwJyk7XG4gIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjtcblxuICAgIF90aGlzMy5kZWJ1ZygnQ2FsY3VsYXRlIHRpbGVzJyk7IC8vXG4gICAgLy8gSGVyZSB3ZSBhcmUgd2l0aCBcIm5vcm1hbGl6ZWRcIiBzb3VyY2UsXG4gICAgLy8gZm9sbG93IHRvIHRpbGluZ1xuICAgIC8vXG5cblxuICAgIHZhciByZWdpb25zID0gY3JlYXRlUmVnaW9ucyh7XG4gICAgICB3aWR0aDogb3B0cy53aWR0aCxcbiAgICAgIGhlaWdodDogb3B0cy5oZWlnaHQsXG4gICAgICBzcmNUaWxlU2l6ZTogX3RoaXMzLm9wdGlvbnMudGlsZSxcbiAgICAgIHRvV2lkdGg6IG9wdHMudG9XaWR0aCxcbiAgICAgIHRvSGVpZ2h0OiBvcHRzLnRvSGVpZ2h0LFxuICAgICAgZGVzdFRpbGVCb3JkZXI6IG9wdHMuX19kZXN0VGlsZUJvcmRlclxuICAgIH0pO1xuICAgIHZhciBqb2JzID0gcmVnaW9ucy5tYXAoZnVuY3Rpb24gKHRpbGUpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzVGlsZSh0aWxlKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNsZWFudXAoc3RhZ2VFbnYpIHtcbiAgICAgIGlmIChzdGFnZUVudi5zcmNJbWFnZUJpdG1hcCkge1xuICAgICAgICBpZiAoIXN0YWdlRW52LmlzSW1hZ2VCaXRtYXBSZXVzZWQpIHN0YWdlRW52LnNyY0ltYWdlQml0bWFwLmNsb3NlKCk7XG4gICAgICAgIHN0YWdlRW52LnNyY0ltYWdlQml0bWFwID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfdGhpczMuZGVidWcoJ1Byb2Nlc3MgdGlsZXMnKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMy5kZWJ1ZygnRmluaXNoZWQhJyk7XG5cbiAgICAgIGNsZWFudXAoc3RhZ2VFbnYpO1xuICAgICAgcmV0dXJuIHRvO1xuICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGNsZWFudXAoc3RhZ2VFbnYpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9KTtcbn07XG5cblBpY2EucHJvdG90eXBlLl9fcHJvY2Vzc1N0YWdlcyA9IGZ1bmN0aW9uIChzdGFnZXMsIGZyb20sIHRvLCBvcHRzKSB7XG4gIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjtcblxuICB2YXIgX3N0YWdlcyRzaGlmdCA9IHN0YWdlcy5zaGlmdCgpLFxuICAgICAgX3N0YWdlcyRzaGlmdDIgPSBfc2xpY2VkVG9BcnJheShfc3RhZ2VzJHNoaWZ0LCAyKSxcbiAgICAgIHRvV2lkdGggPSBfc3RhZ2VzJHNoaWZ0MlswXSxcbiAgICAgIHRvSGVpZ2h0ID0gX3N0YWdlcyRzaGlmdDJbMV07XG5cbiAgdmFyIGlzTGFzdFN0YWdlID0gc3RhZ2VzLmxlbmd0aCA9PT0gMDtcbiAgb3B0cyA9IGFzc2lnbih7fSwgb3B0cywge1xuICAgIHRvV2lkdGg6IHRvV2lkdGgsXG4gICAgdG9IZWlnaHQ6IHRvSGVpZ2h0LFxuICAgIC8vIG9ubHkgdXNlIHVzZXItZGVmaW5lZCBxdWFsaXR5IGZvciB0aGUgbGFzdCBzdGFnZSxcbiAgICAvLyB1c2Ugc2ltcGxlciAoSGFtbWluZykgZmlsdGVyIGZvciB0aGUgZmlyc3Qgc3RhZ2VzIHdoZXJlXG4gICAgLy8gc2NhbGUgZmFjdG9yIGlzIGxhcmdlIGVub3VnaCAobW9yZSB0aGFuIDItMylcbiAgICBxdWFsaXR5OiBpc0xhc3RTdGFnZSA/IG9wdHMucXVhbGl0eSA6IE1hdGgubWluKDEsIG9wdHMucXVhbGl0eSlcbiAgfSk7XG4gIHZhciB0bXBDYW52YXM7XG5cbiAgaWYgKCFpc0xhc3RTdGFnZSkge1xuICAgIC8vIGNyZWF0ZSB0ZW1wb3JhcnkgY2FudmFzXG4gICAgdG1wQ2FudmFzID0gdGhpcy5vcHRpb25zLmNyZWF0ZUNhbnZhcyh0b1dpZHRoLCB0b0hlaWdodCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fX3RpbGVBbmRSZXNpemUoZnJvbSwgaXNMYXN0U3RhZ2UgPyB0byA6IHRtcENhbnZhcywgb3B0cykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGlzTGFzdFN0YWdlKSByZXR1cm4gdG87XG4gICAgb3B0cy53aWR0aCA9IHRvV2lkdGg7XG4gICAgb3B0cy5oZWlnaHQgPSB0b0hlaWdodDtcbiAgICByZXR1cm4gX3RoaXM0Ll9fcHJvY2Vzc1N0YWdlcyhzdGFnZXMsIHRtcENhbnZhcywgdG8sIG9wdHMpO1xuICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICBpZiAodG1wQ2FudmFzKSB7XG4gICAgICAvLyBTYWZhcmkgMTIgd29ya2Fyb3VuZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9waWNhL2lzc3Vlcy8xOTlcbiAgICAgIHRtcENhbnZhcy53aWR0aCA9IHRtcENhbnZhcy5oZWlnaHQgPSAwO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH0pO1xufTtcblxuUGljYS5wcm90b3R5cGUuX19yZXNpemVWaWFDcmVhdGVJbWFnZUJpdG1hcCA9IGZ1bmN0aW9uIChmcm9tLCB0bywgb3B0cykge1xuICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICB2YXIgdG9DdHggPSB0by5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICBhbHBoYTogQm9vbGVhbihvcHRzLmFscGhhKVxuICB9KTtcbiAgdGhpcy5kZWJ1ZygnUmVzaXplIHZpYSBjcmVhdGVJbWFnZUJpdG1hcCgpJyk7XG4gIHJldHVybiBjcmVhdGVJbWFnZUJpdG1hcChmcm9tLCB7XG4gICAgcmVzaXplV2lkdGg6IG9wdHMudG9XaWR0aCxcbiAgICByZXNpemVIZWlnaHQ6IG9wdHMudG9IZWlnaHQsXG4gICAgcmVzaXplUXVhbGl0eTogdXRpbHMuY2liX3F1YWxpdHlfbmFtZShvcHRzLnF1YWxpdHkpXG4gIH0pLnRoZW4oZnVuY3Rpb24gKGltYWdlQml0bWFwKSB7XG4gICAgaWYgKG9wdHMuY2FuY2VsZWQpIHJldHVybiBvcHRzLmNhbmNlbFRva2VuOyAvLyBpZiBubyB1bnNoYXJwIC0gZHJhdyBkaXJlY3RseSB0byBvdXRwdXQgY2FudmFzXG5cbiAgICBpZiAoIW9wdHMudW5zaGFycEFtb3VudCkge1xuICAgICAgdG9DdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTtcbiAgICAgIGltYWdlQml0bWFwLmNsb3NlKCk7XG4gICAgICB0b0N0eCA9IG51bGw7XG5cbiAgICAgIF90aGlzNS5kZWJ1ZygnRmluaXNoZWQhJyk7XG5cbiAgICAgIHJldHVybiB0bztcbiAgICB9XG5cbiAgICBfdGhpczUuZGVidWcoJ1Vuc2hhcnAgcmVzdWx0Jyk7XG5cbiAgICB2YXIgdG1wQ2FudmFzID0gX3RoaXM1Lm9wdGlvbnMuY3JlYXRlQ2FudmFzKG9wdHMudG9XaWR0aCwgb3B0cy50b0hlaWdodCk7XG5cbiAgICB2YXIgdG1wQ3R4ID0gdG1wQ2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IEJvb2xlYW4ob3B0cy5hbHBoYSlcbiAgICB9KTtcbiAgICB0bXBDdHguZHJhd0ltYWdlKGltYWdlQml0bWFwLCAwLCAwKTtcbiAgICBpbWFnZUJpdG1hcC5jbG9zZSgpO1xuICAgIHZhciBpRGF0YSA9IHRtcEN0eC5nZXRJbWFnZURhdGEoMCwgMCwgb3B0cy50b1dpZHRoLCBvcHRzLnRvSGVpZ2h0KTtcblxuICAgIF90aGlzNS5fX21hdGhsaWIudW5zaGFycF9tYXNrKGlEYXRhLmRhdGEsIG9wdHMudG9XaWR0aCwgb3B0cy50b0hlaWdodCwgb3B0cy51bnNoYXJwQW1vdW50LCBvcHRzLnVuc2hhcnBSYWRpdXMsIG9wdHMudW5zaGFycFRocmVzaG9sZCk7XG5cbiAgICB0b0N0eC5wdXRJbWFnZURhdGEoaURhdGEsIDAsIDApOyAvLyBTYWZhcmkgMTIgd29ya2Fyb3VuZFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYS9pc3N1ZXMvMTk5XG5cbiAgICB0bXBDYW52YXMud2lkdGggPSB0bXBDYW52YXMuaGVpZ2h0ID0gMDtcbiAgICBpRGF0YSA9IHRtcEN0eCA9IHRtcENhbnZhcyA9IHRvQ3R4ID0gbnVsbDtcblxuICAgIF90aGlzNS5kZWJ1ZygnRmluaXNoZWQhJyk7XG5cbiAgICByZXR1cm4gdG87XG4gIH0pO1xufTtcblxuUGljYS5wcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24gKGZyb20sIHRvLCBvcHRpb25zKSB7XG4gIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gIHRoaXMuZGVidWcoJ1N0YXJ0IHJlc2l6ZS4uLicpO1xuICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgREVGQVVMVF9SRVNJWkVfT1BUUyk7XG5cbiAgaWYgKCFpc05hTihvcHRpb25zKSkge1xuICAgIG9wdHMgPSBhc3NpZ24ob3B0cywge1xuICAgICAgcXVhbGl0eTogb3B0aW9uc1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMpIHtcbiAgICBvcHRzID0gYXNzaWduKG9wdHMsIG9wdGlvbnMpO1xuICB9XG5cbiAgb3B0cy50b1dpZHRoID0gdG8ud2lkdGg7XG4gIG9wdHMudG9IZWlnaHQgPSB0by5oZWlnaHQ7XG4gIG9wdHMud2lkdGggPSBmcm9tLm5hdHVyYWxXaWR0aCB8fCBmcm9tLndpZHRoO1xuICBvcHRzLmhlaWdodCA9IGZyb20ubmF0dXJhbEhlaWdodCB8fCBmcm9tLmhlaWdodDsgLy8gUHJldmVudCBzdGVwcGVyIGZyb20gaW5maW5pdGUgbG9vcFxuXG4gIGlmICh0by53aWR0aCA9PT0gMCB8fCB0by5oZWlnaHQgPT09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBvdXRwdXQgc2l6ZTogXCIuY29uY2F0KHRvLndpZHRoLCBcInhcIikuY29uY2F0KHRvLmhlaWdodCkpKTtcbiAgfVxuXG4gIGlmIChvcHRzLnVuc2hhcnBSYWRpdXMgPiAyKSBvcHRzLnVuc2hhcnBSYWRpdXMgPSAyO1xuICBvcHRzLmNhbmNlbGVkID0gZmFsc2U7XG5cbiAgaWYgKG9wdHMuY2FuY2VsVG9rZW4pIHtcbiAgICAvLyBXcmFwIGNhbmNlbFRva2VuIHRvIGF2b2lkIHN1Y2Nlc3NpdmUgcmVzb2x2ZSAmIHNldCBmbGFnXG4gICAgb3B0cy5jYW5jZWxUb2tlbiA9IG9wdHMuY2FuY2VsVG9rZW4udGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgb3B0cy5jYW5jZWxlZCA9IHRydWU7XG4gICAgICB0aHJvdyBkYXRhO1xuICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIG9wdHMuY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIERFU1RfVElMRV9CT1JERVIgPSAzOyAvLyBNYXggcG9zc2libGUgZmlsdGVyIHdpbmRvdyBzaXplXG5cbiAgb3B0cy5fX2Rlc3RUaWxlQm9yZGVyID0gTWF0aC5jZWlsKE1hdGgubWF4KERFU1RfVElMRV9CT1JERVIsIDIuNSAqIG9wdHMudW5zaGFycFJhZGl1cyB8IDApKTtcbiAgcmV0dXJuIHRoaXMuaW5pdCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjsgLy8gaWYgY3JlYXRlSW1hZ2VCaXRtYXAgc3VwcG9ydHMgcmVzaXplLCBqdXN0IGRvIGl0IGFuZCByZXR1cm5cblxuICAgIGlmIChfdGhpczYuZmVhdHVyZXMuY2liKSB7XG4gICAgICByZXR1cm4gX3RoaXM2Ll9fcmVzaXplVmlhQ3JlYXRlSW1hZ2VCaXRtYXAoZnJvbSwgdG8sIG9wdHMpO1xuICAgIH1cblxuICAgIGlmICghQ0FOX1VTRV9DQU5WQVNfR0VUX0lNQUdFX0RBVEEpIHtcbiAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1BpY2E6IGNhbm5vdCB1c2UgZ2V0SW1hZ2VEYXRhIG9uIGNhbnZhcywgJyArIFwibWFrZSBzdXJlIGZpbmdlcnByaW50aW5nIHByb3RlY3Rpb24gaXNuJ3QgZW5hYmxlZFwiKTtcbiAgICAgIGVyci5jb2RlID0gJ0VSUl9HRVRfSU1BR0VfREFUQSc7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSAvL1xuICAgIC8vIE5vIGVhc3kgd2F5LCBsZXQncyByZXNpemUgbWFudWFsbHkgdmlhIGFycmF5c1xuICAgIC8vXG5cblxuICAgIHZhciBzdGFnZXMgPSBjcmVhdGVTdGFnZXMob3B0cy53aWR0aCwgb3B0cy5oZWlnaHQsIG9wdHMudG9XaWR0aCwgb3B0cy50b0hlaWdodCwgX3RoaXM2Lm9wdGlvbnMudGlsZSwgb3B0cy5fX2Rlc3RUaWxlQm9yZGVyKTtcbiAgICByZXR1cm4gX3RoaXM2Ll9fcHJvY2Vzc1N0YWdlcyhzdGFnZXMsIGZyb20sIHRvLCBvcHRzKTtcbiAgfSk7XG59OyAvLyBSR0JBIGJ1ZmZlciByZXNpemVcbi8vXG5cblxuUGljYS5wcm90b3R5cGUucmVzaXplQnVmZmVyID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIERFRkFVTFRfUkVTSVpFX09QVFMsIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcy5pbml0KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF90aGlzNy5fX21hdGhsaWIucmVzaXplQW5kVW5zaGFycChvcHRzKTtcbiAgfSk7XG59O1xuXG5QaWNhLnByb3RvdHlwZS50b0Jsb2IgPSBmdW5jdGlvbiAoY2FudmFzLCBtaW1lVHlwZSwgcXVhbGl0eSkge1xuICBtaW1lVHlwZSA9IG1pbWVUeXBlIHx8ICdpbWFnZS9wbmcnO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBpZiAoY2FudmFzLnRvQmxvYikge1xuICAgICAgY2FudmFzLnRvQmxvYihmdW5jdGlvbiAoYmxvYikge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShibG9iKTtcbiAgICAgIH0sIG1pbWVUeXBlLCBxdWFsaXR5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2FudmFzLmNvbnZlcnRUb0Jsb2IpIHtcbiAgICAgIHJlc29sdmUoY2FudmFzLmNvbnZlcnRUb0Jsb2Ioe1xuICAgICAgICB0eXBlOiBtaW1lVHlwZSxcbiAgICAgICAgcXVhbGl0eTogcXVhbGl0eVxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmFsbGJhY2sgZm9yIG9sZCBicm93c2Vyc1xuXG5cbiAgICB2YXIgYXNTdHJpbmcgPSBhdG9iKGNhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIHF1YWxpdHkpLnNwbGl0KCcsJylbMV0pO1xuICAgIHZhciBsZW4gPSBhc1N0cmluZy5sZW5ndGg7XG4gICAgdmFyIGFzQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFzQnVmZmVyW2ldID0gYXNTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICB9XG5cbiAgICByZXNvbHZlKG5ldyBCbG9iKFthc0J1ZmZlcl0sIHtcbiAgICAgIHR5cGU6IG1pbWVUeXBlXG4gICAgfSkpO1xuICB9KTtcbn07XG5cblBpY2EucHJvdG90eXBlLmRlYnVnID0gZnVuY3Rpb24gKCkge307XG5cbm1vZHVsZS5leHBvcnRzID0gUGljYTtcblxufSx7XCIuL2xpYi9tYXRobGliXCI6MSxcIi4vbGliL3Bvb2xcIjoxMyxcIi4vbGliL3N0ZXBwZXJcIjoxNCxcIi4vbGliL3RpbGVyXCI6MTUsXCIuL2xpYi91dGlsc1wiOjE2LFwiLi9saWIvd29ya2VyXCI6MTcsXCJvYmplY3QtYXNzaWduXCI6MjMsXCJ3ZWJ3b3JraWZ5XCI6MjR9XX0se30sW10pKFwiL2luZGV4LmpzXCIpXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pica/dist/pica.js\n"); + +/***/ }), + +/***/ "../../../node_modules/ts-dedent/esm/index.js": +/*!****************************************************!*\ + !*** ../../../node_modules/ts-dedent/esm/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dedent\": () => (/* binding */ dedent),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction dedent(templ) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n var strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n strings[strings.length - 1] = strings[strings.length - 1].replace(/\\r?\\n([\\t ]*)$/, '');\n var indentLengths = strings.reduce(function (arr, str) {\n var matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(matches.map(function (match) { var _a, _b; return (_b = (_a = match.match(/[\\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; }));\n }\n return arr;\n }, []);\n if (indentLengths.length) {\n var pattern_1 = new RegExp(\"\\n[\\t ]{\" + Math.min.apply(Math, indentLengths) + \"}\", 'g');\n strings = strings.map(function (str) { return str.replace(pattern_1, '\\n'); });\n }\n strings[0] = strings[0].replace(/^\\r?\\n/, '');\n var string = strings[0];\n values.forEach(function (value, i) {\n var endentations = string.match(/(?:^|\\n)( *)$/);\n var endentation = endentations ? endentations[1] : '';\n var indentedValue = value;\n if (typeof value === 'string' && value.includes('\\n')) {\n indentedValue = String(value)\n .split('\\n')\n .map(function (str, i) {\n return i === 0 ? str : \"\" + endentation + str;\n })\n .join('\\n');\n }\n string += indentedValue + strings[i + 1];\n });\n return string;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dedent);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzLWRlZGVudC9lc20vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxZQUFZLCtIQUErSDtBQUN4TTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNENBQTRDLDRDQUE0QztBQUN4RiwrQ0FBK0Msc0NBQXNDO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGlFQUFlLE1BQU0sRUFBQztBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHMtZGVkZW50L2VzbS9pbmRleC5qcz9kMGI1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBkZWRlbnQodGVtcGwpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFsdWVzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgc3RyaW5ncyA9IEFycmF5LmZyb20odHlwZW9mIHRlbXBsID09PSAnc3RyaW5nJyA/IFt0ZW1wbF0gOiB0ZW1wbCk7XG4gICAgc3RyaW5nc1tzdHJpbmdzLmxlbmd0aCAtIDFdID0gc3RyaW5nc1tzdHJpbmdzLmxlbmd0aCAtIDFdLnJlcGxhY2UoL1xccj9cXG4oW1xcdCBdKikkLywgJycpO1xuICAgIHZhciBpbmRlbnRMZW5ndGhzID0gc3RyaW5ncy5yZWR1Y2UoZnVuY3Rpb24gKGFyciwgc3RyKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gc3RyLm1hdGNoKC9cXG4oW1xcdCBdK3woPyFcXHMpLikvZyk7XG4gICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyLmNvbmNhdChtYXRjaGVzLm1hcChmdW5jdGlvbiAobWF0Y2gpIHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IG1hdGNoLm1hdGNoKC9bXFx0IF0vZykpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtdKTtcbiAgICBpZiAoaW5kZW50TGVuZ3Rocy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhdHRlcm5fMSA9IG5ldyBSZWdFeHAoXCJcXG5bXFx0IF17XCIgKyBNYXRoLm1pbi5hcHBseShNYXRoLCBpbmRlbnRMZW5ndGhzKSArIFwifVwiLCAnZycpO1xuICAgICAgICBzdHJpbmdzID0gc3RyaW5ncy5tYXAoZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnJlcGxhY2UocGF0dGVybl8xLCAnXFxuJyk7IH0pO1xuICAgIH1cbiAgICBzdHJpbmdzWzBdID0gc3RyaW5nc1swXS5yZXBsYWNlKC9eXFxyP1xcbi8sICcnKTtcbiAgICB2YXIgc3RyaW5nID0gc3RyaW5nc1swXTtcbiAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGkpIHtcbiAgICAgICAgdmFyIGVuZGVudGF0aW9ucyA9IHN0cmluZy5tYXRjaCgvKD86XnxcXG4pKCAqKSQvKTtcbiAgICAgICAgdmFyIGVuZGVudGF0aW9uID0gZW5kZW50YXRpb25zID8gZW5kZW50YXRpb25zWzFdIDogJyc7XG4gICAgICAgIHZhciBpbmRlbnRlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgICAgICAgaW5kZW50ZWRWYWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgICAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoc3RyLCBpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPT09IDAgPyBzdHIgOiBcIlwiICsgZW5kZW50YXRpb24gKyBzdHI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgICBzdHJpbmcgKz0gaW5kZW50ZWRWYWx1ZSArIHN0cmluZ3NbaSArIDFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBkZWRlbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/ts-dedent/esm/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/parse.js": +/*!************************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/parse.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.js */ \"../../../node_modules/uuid/dist/esm-browser/validate.js\");\n\n\nfunction parse(uuid) {\n if (!(0,_validate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (parse);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9wYXJzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckM7QUFDQSxPQUFPLHdEQUFRO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsS0FBSyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3BhcnNlLmpzP2RiYjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuXG5mdW5jdGlvbiBwYXJzZSh1dWlkKSB7XG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgVVVJRCcpO1xuICB9XG5cbiAgbGV0IHY7XG4gIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gUGFyc2UgIyMjIyMjIyMtLi4uLi0uLi4uLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDAsIDgpLCAxNikpID4+PiAyNDtcbiAgYXJyWzFdID0gdiA+Pj4gMTYgJiAweGZmO1xuICBhcnJbMl0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzNdID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLSMjIyMtLi4uLi0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFycls0XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSg5LCAxMyksIDE2KSkgPj4+IDg7XG4gIGFycls1XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLSMjIyMtLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbNl0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMTQsIDE4KSwgMTYpKSA+Pj4gODtcbiAgYXJyWzddID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tLi4uLi0jIyMjLS4uLi4uLi4uLi4uLlxuXG4gIGFycls4XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgxOSwgMjMpLCAxNikpID4+PiA4O1xuICBhcnJbOV0gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0uLi4uLS4uLi4tIyMjIyMjIyMjIyMjXG4gIC8vIChVc2UgXCIvXCIgdG8gYXZvaWQgMzItYml0IHRydW5jYXRpb24gd2hlbiBiaXQtc2hpZnRpbmcgaGlnaC1vcmRlciBieXRlcylcblxuICBhcnJbMTBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDI0LCAzNiksIDE2KSkgLyAweDEwMDAwMDAwMDAwICYgMHhmZjtcbiAgYXJyWzExXSA9IHYgLyAweDEwMDAwMDAwMCAmIDB4ZmY7XG4gIGFyclsxMl0gPSB2ID4+PiAyNCAmIDB4ZmY7XG4gIGFyclsxM10gPSB2ID4+PiAxNiAmIDB4ZmY7XG4gIGFyclsxNF0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzE1XSA9IHYgJiAweGZmO1xuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/parse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/regex.js": +/*!************************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/regex.js ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9yZWdleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsY0FBYyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxHQUFHLHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3JlZ2V4LmpzPzI0OWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgL14oPzpbMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMS01XVswLTlhLWZdezN9LVs4OWFiXVswLTlhLWZdezN9LVswLTlhLWZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/regex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/sha1.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/sha1.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sha1);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zaGExLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxREFBcUQ7O0FBRXJEOztBQUVBLG9CQUFvQixnQkFBZ0I7QUFDcEM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLE9BQU87QUFDekI7O0FBRUEsb0JBQW9CLFFBQVE7QUFDNUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsT0FBTztBQUN6Qjs7QUFFQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBOztBQUVBLHFCQUFxQixRQUFRO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlLElBQUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zaGExLmpzPzVkMmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRhcHRlZCBmcm9tIENocmlzIFZlbmVzcycgU0hBMSBjb2RlIGF0XG4vLyBodHRwOi8vd3d3Lm1vdmFibGUtdHlwZS5jby51ay9zY3JpcHRzL3NoYTEuaHRtbFxuZnVuY3Rpb24gZihzLCB4LCB5LCB6KSB7XG4gIHN3aXRjaCAocykge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiB4ICYgeSBeIH54ICYgejtcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB4IF4geSBeIHo7XG5cbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4geCAmIHkgXiB4ICYgeiBeIHkgJiB6O1xuXG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHggXiB5IF4gejtcbiAgfVxufVxuXG5mdW5jdGlvbiBST1RMKHgsIG4pIHtcbiAgcmV0dXJuIHggPDwgbiB8IHggPj4+IDMyIC0gbjtcbn1cblxuZnVuY3Rpb24gc2hhMShieXRlcykge1xuICBjb25zdCBLID0gWzB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMsIDB4Y2E2MmMxZDZdO1xuICBjb25zdCBIID0gWzB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjBdO1xuXG4gIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbXNnID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGJ5dGVzKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgICBieXRlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyArK2kpIHtcbiAgICAgIGJ5dGVzLnB1c2gobXNnLmNoYXJDb2RlQXQoaSkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShieXRlcykpIHtcbiAgICAvLyBDb252ZXJ0IEFycmF5LWxpa2UgdG8gQXJyYXlcbiAgICBieXRlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGJ5dGVzKTtcbiAgfVxuXG4gIGJ5dGVzLnB1c2goMHg4MCk7XG4gIGNvbnN0IGwgPSBieXRlcy5sZW5ndGggLyA0ICsgMjtcbiAgY29uc3QgTiA9IE1hdGguY2VpbChsIC8gMTYpO1xuICBjb25zdCBNID0gbmV3IEFycmF5KE4pO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgKytpKSB7XG4gICAgY29uc3QgYXJyID0gbmV3IFVpbnQzMkFycmF5KDE2KTtcblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTY7ICsraikge1xuICAgICAgYXJyW2pdID0gYnl0ZXNbaSAqIDY0ICsgaiAqIDRdIDw8IDI0IHwgYnl0ZXNbaSAqIDY0ICsgaiAqIDQgKyAxXSA8PCAxNiB8IGJ5dGVzW2kgKiA2NCArIGogKiA0ICsgMl0gPDwgOCB8IGJ5dGVzW2kgKiA2NCArIGogKiA0ICsgM107XG4gICAgfVxuXG4gICAgTVtpXSA9IGFycjtcbiAgfVxuXG4gIE1bTiAtIDFdWzE0XSA9IChieXRlcy5sZW5ndGggLSAxKSAqIDggLyBNYXRoLnBvdygyLCAzMik7XG4gIE1bTiAtIDFdWzE0XSA9IE1hdGguZmxvb3IoTVtOIC0gMV1bMTRdKTtcbiAgTVtOIC0gMV1bMTVdID0gKGJ5dGVzLmxlbmd0aCAtIDEpICogOCAmIDB4ZmZmZmZmZmY7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyArK2kpIHtcbiAgICBjb25zdCBXID0gbmV3IFVpbnQzMkFycmF5KDgwKTtcblxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgMTY7ICsrdCkge1xuICAgICAgV1t0XSA9IE1baV1bdF07XG4gICAgfVxuXG4gICAgZm9yIChsZXQgdCA9IDE2OyB0IDwgODA7ICsrdCkge1xuICAgICAgV1t0XSA9IFJPVEwoV1t0IC0gM10gXiBXW3QgLSA4XSBeIFdbdCAtIDE0XSBeIFdbdCAtIDE2XSwgMSk7XG4gICAgfVxuXG4gICAgbGV0IGEgPSBIWzBdO1xuICAgIGxldCBiID0gSFsxXTtcbiAgICBsZXQgYyA9IEhbMl07XG4gICAgbGV0IGQgPSBIWzNdO1xuICAgIGxldCBlID0gSFs0XTtcblxuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgODA7ICsrdCkge1xuICAgICAgY29uc3QgcyA9IE1hdGguZmxvb3IodCAvIDIwKTtcbiAgICAgIGNvbnN0IFQgPSBST1RMKGEsIDUpICsgZihzLCBiLCBjLCBkKSArIGUgKyBLW3NdICsgV1t0XSA+Pj4gMDtcbiAgICAgIGUgPSBkO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gUk9UTChiLCAzMCkgPj4+IDA7XG4gICAgICBiID0gYTtcbiAgICAgIGEgPSBUO1xuICAgIH1cblxuICAgIEhbMF0gPSBIWzBdICsgYSA+Pj4gMDtcbiAgICBIWzFdID0gSFsxXSArIGIgPj4+IDA7XG4gICAgSFsyXSA9IEhbMl0gKyBjID4+PiAwO1xuICAgIEhbM10gPSBIWzNdICsgZCA+Pj4gMDtcbiAgICBIWzRdID0gSFs0XSArIGUgPj4+IDA7XG4gIH1cblxuICByZXR1cm4gW0hbMF0gPj4gMjQgJiAweGZmLCBIWzBdID4+IDE2ICYgMHhmZiwgSFswXSA+PiA4ICYgMHhmZiwgSFswXSAmIDB4ZmYsIEhbMV0gPj4gMjQgJiAweGZmLCBIWzFdID4+IDE2ICYgMHhmZiwgSFsxXSA+PiA4ICYgMHhmZiwgSFsxXSAmIDB4ZmYsIEhbMl0gPj4gMjQgJiAweGZmLCBIWzJdID4+IDE2ICYgMHhmZiwgSFsyXSA+PiA4ICYgMHhmZiwgSFsyXSAmIDB4ZmYsIEhbM10gPj4gMjQgJiAweGZmLCBIWzNdID4+IDE2ICYgMHhmZiwgSFszXSA+PiA4ICYgMHhmZiwgSFszXSAmIDB4ZmYsIEhbNF0gPj4gMjQgJiAweGZmLCBIWzRdID4+IDE2ICYgMHhmZiwgSFs0XSA+PiA4ICYgMHhmZiwgSFs0XSAmIDB4ZmZdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaGExOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/sha1.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/stringify.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/stringify.js ***! + \****************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"unsafeStringify\": () => (/* binding */ unsafeStringify)\n/* harmony export */ });\n/* harmony import */ var _validate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.js */ \"../../../node_modules/uuid/dist/esm-browser/validate.js\");\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0,_validate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringify);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLHdEQUFRO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlLFNBQVMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanM/NjlhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG4vKipcbiAqIENvbnZlcnQgYXJyYXkgb2YgMTYgYnl0ZSB2YWx1ZXMgdG8gVVVJRCBzdHJpbmcgZm9ybWF0IG9mIHRoZSBmb3JtOlxuICogWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhYXG4gKi9cblxuY29uc3QgYnl0ZVRvSGV4ID0gW107XG5cbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCA9IDApIHtcbiAgLy8gTm90ZTogQmUgY2FyZWZ1bCBlZGl0aW5nIHRoaXMgY29kZSEgIEl0J3MgYmVlbiB0dW5lZCBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gYW5kIHdvcmtzIGluIHdheXMgeW91IG1heSBub3QgZXhwZWN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkL3B1bGwvNDM0XG4gIHJldHVybiAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIsIG9mZnNldCA9IDApIHtcbiAgY29uc3QgdXVpZCA9IHVuc2FmZVN0cmluZ2lmeShhcnIsIG9mZnNldCk7IC8vIENvbnNpc3RlbmN5IGNoZWNrIGZvciB2YWxpZCBVVUlELiAgSWYgdGhpcyB0aHJvd3MsIGl0J3MgbGlrZWx5IGR1ZSB0byBvbmVcbiAgLy8gb2YgdGhlIGZvbGxvd2luZzpcbiAgLy8gLSBPbmUgb3IgbW9yZSBpbnB1dCBhcnJheSB2YWx1ZXMgZG9uJ3QgbWFwIHRvIGEgaGV4IG9jdGV0IChsZWFkaW5nIHRvXG4gIC8vIFwidW5kZWZpbmVkXCIgaW4gdGhlIHV1aWQpXG4gIC8vIC0gSW52YWxpZCBpbnB1dCB2YWx1ZXMgZm9yIHRoZSBSRkMgYHZlcnNpb25gIG9yIGB2YXJpYW50YCBmaWVsZHNcblxuICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmdpZmllZCBVVUlEIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHJldHVybiB1dWlkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/stringify.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/v35.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/v35.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DNS\": () => (/* binding */ DNS),\n/* harmony export */ \"URL\": () => (/* binding */ URL),\n/* harmony export */ \"default\": () => (/* binding */ v35)\n/* harmony export */ });\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stringify.js */ \"../../../node_modules/uuid/dist/esm-browser/stringify.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parse.js */ \"../../../node_modules/uuid/dist/esm-browser/parse.js\");\n\n\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0,_parse_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0,_stringify_js__WEBPACK_IMPORTED_MODULE_1__.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92MzUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBaUQ7QUFDbEI7O0FBRS9CO0FBQ0EsMkNBQTJDOztBQUUzQzs7QUFFQSxrQkFBa0IsZ0JBQWdCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNBO0FBQ1E7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixxREFBSztBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHNCQUFzQixRQUFRO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxXQUFXLDhEQUFlO0FBQzFCLElBQUk7OztBQUdKO0FBQ0EsOEJBQThCO0FBQzlCLElBQUksZUFBZTs7O0FBR25CO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjM1LmpzP2VhYzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5zYWZlU3RyaW5naWZ5IH0gZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UuanMnO1xuXG5mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHN0cikge1xuICBzdHIgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgY29uc3QgYnl0ZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGJ5dGVzLnB1c2goc3RyLmNoYXJDb2RlQXQoaSkpO1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVzO1xufVxuXG5leHBvcnQgY29uc3QgRE5TID0gJzZiYTdiODEwLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnQgY29uc3QgVVJMID0gJzZiYTdiODExLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2MzUobmFtZSwgdmVyc2lvbiwgaGFzaGZ1bmMpIHtcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKHZhbHVlLCBuYW1lc3BhY2UsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgdmFyIF9uYW1lc3BhY2U7XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBzdHJpbmdUb0J5dGVzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5hbWVzcGFjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWVzcGFjZSA9IHBhcnNlKG5hbWVzcGFjZSk7XG4gICAgfVxuXG4gICAgaWYgKCgoX25hbWVzcGFjZSA9IG5hbWVzcGFjZSkgPT09IG51bGwgfHwgX25hbWVzcGFjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25hbWVzcGFjZS5sZW5ndGgpICE9PSAxNikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdOYW1lc3BhY2UgbXVzdCBiZSBhcnJheS1saWtlICgxNiBpdGVyYWJsZSBpbnRlZ2VyIHZhbHVlcywgMC0yNTUpJyk7XG4gICAgfSAvLyBDb21wdXRlIGhhc2ggb2YgbmFtZXNwYWNlIGFuZCB2YWx1ZSwgUGVyIDQuM1xuICAgIC8vIEZ1dHVyZTogVXNlIHNwcmVhZCBzeW50YXggd2hlbiBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3JtcywgZS5nLiBgYnl0ZXMgPVxuICAgIC8vIGhhc2hmdW5jKFsuLi5uYW1lc3BhY2UsIC4uLiB2YWx1ZV0pYFxuXG5cbiAgICBsZXQgYnl0ZXMgPSBuZXcgVWludDhBcnJheSgxNiArIHZhbHVlLmxlbmd0aCk7XG4gICAgYnl0ZXMuc2V0KG5hbWVzcGFjZSk7XG4gICAgYnl0ZXMuc2V0KHZhbHVlLCBuYW1lc3BhY2UubGVuZ3RoKTtcbiAgICBieXRlcyA9IGhhc2hmdW5jKGJ5dGVzKTtcbiAgICBieXRlc1s2XSA9IGJ5dGVzWzZdICYgMHgwZiB8IHZlcnNpb247XG4gICAgYnl0ZXNbOF0gPSBieXRlc1s4XSAmIDB4M2YgfCAweDgwO1xuXG4gICAgaWYgKGJ1Zikge1xuICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgICAgICBidWZbb2Zmc2V0ICsgaV0gPSBieXRlc1tpXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5zYWZlU3RyaW5naWZ5KGJ5dGVzKTtcbiAgfSAvLyBGdW5jdGlvbiNuYW1lIGlzIG5vdCBzZXR0YWJsZSBvbiBzb21lIHBsYXRmb3JtcyAoIzI3MClcblxuXG4gIHRyeSB7XG4gICAgZ2VuZXJhdGVVVUlELm5hbWUgPSBuYW1lOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgfSBjYXRjaCAoZXJyKSB7fSAvLyBGb3IgQ29tbW9uSlMgZGVmYXVsdCBleHBvcnQgc3VwcG9ydFxuXG5cbiAgZ2VuZXJhdGVVVUlELkROUyA9IEROUztcbiAgZ2VuZXJhdGVVVUlELlVSTCA9IFVSTDtcbiAgcmV0dXJuIGdlbmVyYXRlVVVJRDtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/v35.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/v5.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/v5.js ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _v35_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./v35.js */ \"../../../node_modules/uuid/dist/esm-browser/v35.js\");\n/* harmony import */ var _sha1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sha1.js */ \"../../../node_modules/uuid/dist/esm-browser/sha1.js\");\n\n\nconst v5 = (0,_v35_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('v5', 0x50, _sha1_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v5);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMkI7QUFDRTtBQUM3QixXQUFXLG1EQUFHLGFBQWEsZ0RBQUk7QUFDL0IsaUVBQWUsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3Y1LmpzPzcyZGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHYzNSBmcm9tICcuL3YzNS5qcyc7XG5pbXBvcnQgc2hhMSBmcm9tICcuL3NoYTEuanMnO1xuY29uc3QgdjUgPSB2MzUoJ3Y1JywgMHg1MCwgc2hhMSk7XG5leHBvcnQgZGVmYXVsdCB2NTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/v5.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uuid/dist/esm-browser/validate.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/uuid/dist/esm-browser/validate.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _regex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.js */ \"../../../node_modules/uuid/dist/esm-browser/regex.js\");\n\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].test(uuid);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (validate);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92YWxpZGF0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQjs7QUFFL0I7QUFDQSxxQ0FBcUMsc0RBQVU7QUFDL0M7O0FBRUEsaUVBQWUsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3ZhbGlkYXRlLmpzPzllMTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJFR0VYIGZyb20gJy4vcmVnZXguanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZSh1dWlkKSB7XG4gIHJldHVybiB0eXBlb2YgdXVpZCA9PT0gJ3N0cmluZycgJiYgUkVHRVgudGVzdCh1dWlkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGU7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/uuid/dist/esm-browser/validate.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js": +/*!*********************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULT_FONT_SIZE\": () => (/* binding */ DEFAULT_FONT_SIZE),\n/* harmony export */ \"SVG_TO_SHAPE_MAPPER\": () => (/* binding */ SVG_TO_SHAPE_MAPPER)\n/* harmony export */ });\nconst DEFAULT_FONT_SIZE = 20;\nconst SVG_TO_SHAPE_MAPPER = {\n rect: \"rectangle\",\n circle: \"ellipse\",\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnN0YW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ0E7QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnN0YW50cy5qcz8zNTYzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfU0laRSA9IDIwO1xuZXhwb3J0IGNvbnN0IFNWR19UT19TSEFQRV9NQVBQRVIgPSB7XG4gICAgcmVjdDogXCJyZWN0YW5nbGVcIixcbiAgICBjaXJjbGU6IFwiZWxsaXBzZVwiLFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js": +/*!************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"GraphConverter\": () => (/* binding */ GraphConverter)\n/* harmony export */ });\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n\nclass GraphConverter {\n constructor({ converter, }) {\n this.convert = (graph, options) => {\n return this.converter(graph, {\n ...options,\n fontSize: options.fontSize || _constants_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_SIZE,\n });\n };\n this.converter = converter;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci9HcmFwaENvbnZlcnRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvRDtBQUM3QztBQUNQLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyw0REFBaUI7QUFDL0QsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9jb252ZXJ0ZXIvR3JhcGhDb252ZXJ0ZXIuanM/NGI3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0ZPTlRfU0laRSB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmV4cG9ydCBjbGFzcyBHcmFwaENvbnZlcnRlciB7XG4gICAgY29uc3RydWN0b3IoeyBjb252ZXJ0ZXIsIH0pIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0ID0gKGdyYXBoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0ZXIoZ3JhcGgsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBvcHRpb25zLmZvbnRTaXplIHx8IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29udmVydGVyID0gY29udmVydGVyO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/helpers.js": +/*!*****************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/helpers.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"computeExcalidrawArrowType\": () => (/* binding */ computeExcalidrawArrowType),\n/* harmony export */ \"computeExcalidrawVertexLabelStyle\": () => (/* binding */ computeExcalidrawVertexLabelStyle),\n/* harmony export */ \"computeExcalidrawVertexStyle\": () => (/* binding */ computeExcalidrawVertexStyle),\n/* harmony export */ \"getText\": () => (/* binding */ getText)\n/* harmony export */ });\n/* harmony import */ var _interfaces_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interfaces.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/interfaces.js\");\n/* harmony import */ var _excalidraw_markdown_to_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @excalidraw/markdown-to-text */ \"../../../node_modules/@excalidraw/markdown-to-text/dist/index.js\");\n\n\n/**\n * Convert mermaid edge type to Excalidraw arrow type\n */\nconst MERMAID_EDGE_TYPE_MAPPER = {\n arrow_circle: {\n endArrowhead: \"dot\",\n },\n arrow_cross: {\n endArrowhead: \"bar\",\n },\n double_arrow_circle: {\n endArrowhead: \"dot\",\n startArrowhead: \"dot\",\n },\n double_arrow_cross: {\n endArrowhead: \"bar\",\n startArrowhead: \"bar\",\n },\n double_arrow_point: {\n endArrowhead: \"arrow\",\n startArrowhead: \"arrow\",\n },\n};\nconst computeExcalidrawArrowType = (mermaidArrowType) => {\n return MERMAID_EDGE_TYPE_MAPPER[mermaidArrowType];\n};\n// Get text from graph elements, fallback markdown to text\nconst getText = (element) => {\n let text = element.text;\n if (element.labelType === \"markdown\") {\n text = (0,_excalidraw_markdown_to_text__WEBPACK_IMPORTED_MODULE_1__.removeMarkdown)(element.text);\n }\n return removeFontAwesomeIcons(text);\n};\n/**\n * Remove font awesome icons support from text\n */\nconst removeFontAwesomeIcons = (input) => {\n const fontAwesomeRegex = /\\s?(fa|fab):[a-zA-Z0-9-]+/g;\n return input.replace(fontAwesomeRegex, \"\");\n};\n/**\n * Compute style for vertex\n */\nconst computeExcalidrawVertexStyle = (style) => {\n const excalidrawProperty = {};\n Object.keys(style).forEach((property) => {\n switch (property) {\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_STYLE_PROPERTY.FILL: {\n excalidrawProperty.backgroundColor = style[property];\n excalidrawProperty.fillStyle = \"solid\";\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_STYLE_PROPERTY.STROKE: {\n excalidrawProperty.strokeColor = style[property];\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_STYLE_PROPERTY.STROKE_WIDTH: {\n excalidrawProperty.strokeWidth = Number(style[property]?.split(\"px\")[0]);\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_STYLE_PROPERTY.STROKE_DASHARRAY: {\n excalidrawProperty.strokeStyle = \"dashed\";\n break;\n }\n }\n });\n return excalidrawProperty;\n};\n/**\n * Compute style for label\n */\nconst computeExcalidrawVertexLabelStyle = (style) => {\n const excalidrawProperty = {};\n Object.keys(style).forEach((property) => {\n switch (property) {\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_0__.LABEL_STYLE_PROPERTY.COLOR: {\n excalidrawProperty.strokeColor = style[property];\n break;\n }\n }\n });\n return excalidrawProperty;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci9oZWxwZXJzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFtRjtBQUNyQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsZUFBZSw0RUFBYztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlFQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwyRUFBK0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlGQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUZBQXlDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzRUFBMEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvY29udmVydGVyL2hlbHBlcnMuanM/MmVjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT05UQUlORVJfU1RZTEVfUFJPUEVSVFksIExBQkVMX1NUWUxFX1BST1BFUlRZLCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzLmpzXCI7XG5pbXBvcnQgeyByZW1vdmVNYXJrZG93biB9IGZyb20gXCJAZXhjYWxpZHJhdy9tYXJrZG93bi10by10ZXh0XCI7XG4vKipcbiAqIENvbnZlcnQgbWVybWFpZCBlZGdlIHR5cGUgdG8gRXhjYWxpZHJhdyBhcnJvdyB0eXBlXG4gKi9cbmNvbnN0IE1FUk1BSURfRURHRV9UWVBFX01BUFBFUiA9IHtcbiAgICBhcnJvd19jaXJjbGU6IHtcbiAgICAgICAgZW5kQXJyb3doZWFkOiBcImRvdFwiLFxuICAgIH0sXG4gICAgYXJyb3dfY3Jvc3M6IHtcbiAgICAgICAgZW5kQXJyb3doZWFkOiBcImJhclwiLFxuICAgIH0sXG4gICAgZG91YmxlX2Fycm93X2NpcmNsZToge1xuICAgICAgICBlbmRBcnJvd2hlYWQ6IFwiZG90XCIsXG4gICAgICAgIHN0YXJ0QXJyb3doZWFkOiBcImRvdFwiLFxuICAgIH0sXG4gICAgZG91YmxlX2Fycm93X2Nyb3NzOiB7XG4gICAgICAgIGVuZEFycm93aGVhZDogXCJiYXJcIixcbiAgICAgICAgc3RhcnRBcnJvd2hlYWQ6IFwiYmFyXCIsXG4gICAgfSxcbiAgICBkb3VibGVfYXJyb3dfcG9pbnQ6IHtcbiAgICAgICAgZW5kQXJyb3doZWFkOiBcImFycm93XCIsXG4gICAgICAgIHN0YXJ0QXJyb3doZWFkOiBcImFycm93XCIsXG4gICAgfSxcbn07XG5leHBvcnQgY29uc3QgY29tcHV0ZUV4Y2FsaWRyYXdBcnJvd1R5cGUgPSAobWVybWFpZEFycm93VHlwZSkgPT4ge1xuICAgIHJldHVybiBNRVJNQUlEX0VER0VfVFlQRV9NQVBQRVJbbWVybWFpZEFycm93VHlwZV07XG59O1xuLy8gR2V0IHRleHQgZnJvbSBncmFwaCBlbGVtZW50cywgZmFsbGJhY2sgbWFya2Rvd24gdG8gdGV4dFxuZXhwb3J0IGNvbnN0IGdldFRleHQgPSAoZWxlbWVudCkgPT4ge1xuICAgIGxldCB0ZXh0ID0gZWxlbWVudC50ZXh0O1xuICAgIGlmIChlbGVtZW50LmxhYmVsVHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgICAgIHRleHQgPSByZW1vdmVNYXJrZG93bihlbGVtZW50LnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVtb3ZlRm9udEF3ZXNvbWVJY29ucyh0ZXh0KTtcbn07XG4vKipcbiAqIFJlbW92ZSBmb250IGF3ZXNvbWUgaWNvbnMgc3VwcG9ydCBmcm9tIHRleHRcbiAqL1xuY29uc3QgcmVtb3ZlRm9udEF3ZXNvbWVJY29ucyA9IChpbnB1dCkgPT4ge1xuICAgIGNvbnN0IGZvbnRBd2Vzb21lUmVnZXggPSAvXFxzPyhmYXxmYWIpOlthLXpBLVowLTktXSsvZztcbiAgICByZXR1cm4gaW5wdXQucmVwbGFjZShmb250QXdlc29tZVJlZ2V4LCBcIlwiKTtcbn07XG4vKipcbiAqIENvbXB1dGUgc3R5bGUgZm9yIHZlcnRleFxuICovXG5leHBvcnQgY29uc3QgY29tcHV0ZUV4Y2FsaWRyYXdWZXJ0ZXhTdHlsZSA9IChzdHlsZSkgPT4ge1xuICAgIGNvbnN0IGV4Y2FsaWRyYXdQcm9wZXJ0eSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHN0eWxlKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7XG4gICAgICAgICAgICBjYXNlIENPTlRBSU5FUl9TVFlMRV9QUk9QRVJUWS5GSUxMOiB7XG4gICAgICAgICAgICAgICAgZXhjYWxpZHJhd1Byb3BlcnR5LmJhY2tncm91bmRDb2xvciA9IHN0eWxlW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICBleGNhbGlkcmF3UHJvcGVydHkuZmlsbFN0eWxlID0gXCJzb2xpZFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDT05UQUlORVJfU1RZTEVfUFJPUEVSVFkuU1RST0tFOiB7XG4gICAgICAgICAgICAgICAgZXhjYWxpZHJhd1Byb3BlcnR5LnN0cm9rZUNvbG9yID0gc3R5bGVbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBDT05UQUlORVJfU1RZTEVfUFJPUEVSVFkuU1RST0tFX1dJRFRIOiB7XG4gICAgICAgICAgICAgICAgZXhjYWxpZHJhd1Byb3BlcnR5LnN0cm9rZVdpZHRoID0gTnVtYmVyKHN0eWxlW3Byb3BlcnR5XT8uc3BsaXQoXCJweFwiKVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIENPTlRBSU5FUl9TVFlMRV9QUk9QRVJUWS5TVFJPS0VfREFTSEFSUkFZOiB7XG4gICAgICAgICAgICAgICAgZXhjYWxpZHJhd1Byb3BlcnR5LnN0cm9rZVN0eWxlID0gXCJkYXNoZWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBleGNhbGlkcmF3UHJvcGVydHk7XG59O1xuLyoqXG4gKiBDb21wdXRlIHN0eWxlIGZvciBsYWJlbFxuICovXG5leHBvcnQgY29uc3QgY29tcHV0ZUV4Y2FsaWRyYXdWZXJ0ZXhMYWJlbFN0eWxlID0gKHN0eWxlKSA9PiB7XG4gICAgY29uc3QgZXhjYWxpZHJhd1Byb3BlcnR5ID0ge307XG4gICAgT2JqZWN0LmtleXMoc3R5bGUpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHtcbiAgICAgICAgICAgIGNhc2UgTEFCRUxfU1RZTEVfUFJPUEVSVFkuQ09MT1I6IHtcbiAgICAgICAgICAgICAgICBleGNhbGlkcmF3UHJvcGVydHkuc3Ryb2tlQ29sb3IgPSBzdHlsZVtwcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXhjYWxpZHJhd1Byb3BlcnR5O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/helpers.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js": +/*!*************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js ***! + \*************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"FlowchartToExcalidrawSkeletonConverter\": () => (/* binding */ FlowchartToExcalidrawSkeletonConverter)\n/* harmony export */ });\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/helpers.js\");\n/* harmony import */ var _interfaces_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../interfaces.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/interfaces.js\");\n\n\n\nconst computeGroupIds = (graph) => {\n // Parse the diagram into a tree for rendering and grouping\n const tree = {};\n graph.subGraphs.map((subGraph) => {\n subGraph.nodeIds.forEach((nodeId) => {\n tree[subGraph.id] = {\n id: subGraph.id,\n parent: null,\n isLeaf: false,\n };\n tree[nodeId] = {\n id: nodeId,\n parent: subGraph.id,\n isLeaf: graph.vertices[nodeId] !== undefined,\n };\n });\n });\n const mapper = {};\n [...Object.keys(graph.vertices), ...graph.subGraphs.map((c) => c.id)].forEach((id) => {\n if (!tree[id]) {\n return;\n }\n let curr = tree[id];\n const groupIds = [];\n if (!curr.isLeaf) {\n groupIds.push(`subgraph_group_${curr.id}`);\n }\n while (true) {\n if (curr.parent) {\n groupIds.push(`subgraph_group_${curr.parent}`);\n curr = tree[curr.parent];\n }\n else {\n break;\n }\n }\n mapper[id] = groupIds;\n });\n return {\n getGroupIds: (elementId) => {\n return mapper[elementId] || [];\n },\n getParentId: (elementId) => {\n return tree[elementId] ? tree[elementId].parent : null;\n },\n };\n};\nconst FlowchartToExcalidrawSkeletonConverter = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__.GraphConverter({\n converter: (graph, options) => {\n const elements = [];\n const fontSize = options.fontSize;\n const { getGroupIds, getParentId } = computeGroupIds(graph);\n // SubGraphs\n graph.subGraphs.reverse().forEach((subGraph) => {\n const groupIds = getGroupIds(subGraph.id);\n const containerElement = {\n id: subGraph.id,\n type: \"rectangle\",\n groupIds,\n x: subGraph.x,\n y: subGraph.y,\n width: subGraph.width,\n height: subGraph.height,\n label: {\n groupIds,\n text: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.getText)(subGraph),\n fontSize,\n verticalAlign: \"top\",\n },\n };\n elements.push(containerElement);\n });\n // Vertices\n Object.values(graph.vertices).forEach((vertex) => {\n if (!vertex) {\n return;\n }\n const groupIds = getGroupIds(vertex.id);\n // Compute custom style\n const containerStyle = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.computeExcalidrawVertexStyle)(vertex.containerStyle);\n const labelStyle = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.computeExcalidrawVertexLabelStyle)(vertex.labelStyle);\n let containerElement = {\n id: vertex.id,\n type: \"rectangle\",\n groupIds,\n x: vertex.x,\n y: vertex.y,\n width: vertex.width,\n height: vertex.height,\n strokeWidth: 2,\n label: {\n groupIds,\n text: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.getText)(vertex),\n fontSize,\n ...labelStyle,\n },\n link: vertex.link || null,\n ...containerStyle,\n };\n switch (vertex.type) {\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_2__.VERTEX_TYPE.STADIUM: {\n containerElement = { ...containerElement, roundness: { type: 3 } };\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_2__.VERTEX_TYPE.ROUND: {\n containerElement = { ...containerElement, roundness: { type: 3 } };\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_2__.VERTEX_TYPE.DOUBLECIRCLE: {\n const CIRCLE_MARGIN = 5;\n // Create new groupId for double circle\n groupIds.push(`doublecircle_${vertex.id}}`);\n // Create inner circle element\n const innerCircle = {\n type: \"ellipse\",\n groupIds,\n x: vertex.x + CIRCLE_MARGIN,\n y: vertex.y + CIRCLE_MARGIN,\n width: vertex.width - CIRCLE_MARGIN * 2,\n height: vertex.height - CIRCLE_MARGIN * 2,\n strokeWidth: 2,\n roundness: { type: 3 },\n label: {\n groupIds,\n text: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.getText)(vertex),\n fontSize,\n },\n };\n containerElement = { ...containerElement, groupIds, type: \"ellipse\" };\n elements.push(innerCircle);\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_2__.VERTEX_TYPE.CIRCLE: {\n containerElement.type = \"ellipse\";\n break;\n }\n case _interfaces_js__WEBPACK_IMPORTED_MODULE_2__.VERTEX_TYPE.DIAMOND: {\n containerElement.type = \"diamond\";\n break;\n }\n }\n elements.push(containerElement);\n });\n // Edges\n graph.edges.forEach((edge) => {\n let groupIds = [];\n const startParentId = getParentId(edge.start);\n const endParentId = getParentId(edge.end);\n if (startParentId && startParentId === endParentId) {\n groupIds = getGroupIds(startParentId);\n }\n // Get arrow position data\n const { startX, startY, reflectionPoints } = edge;\n // Calculate Excalidraw arrow's points\n const points = reflectionPoints.map((point) => [\n point.x - reflectionPoints[0].x,\n point.y - reflectionPoints[0].y,\n ]);\n // Get supported arrow type\n const arrowType = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.computeExcalidrawArrowType)(edge.type);\n const arrowId = `${edge.start}_${edge.end}`;\n const containerElement = {\n id: arrowId,\n type: \"arrow\",\n groupIds,\n x: startX,\n y: startY,\n // 4 and 2 are the Excalidraw's stroke width of thick and thin respectively\n // TODO: use constant exported from Excalidraw package\n strokeWidth: edge.stroke === \"thick\" ? 4 : 2,\n strokeStyle: edge.stroke === \"dotted\" ? \"dashed\" : undefined,\n points,\n ...(edge.text\n ? { label: { text: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.getText)(edge), fontSize, groupIds } }\n : {}),\n roundness: {\n type: 2,\n },\n ...arrowType,\n };\n // Bind start and end vertex to arrow\n const startVertex = elements.find((e) => e.id === edge.start);\n const endVertex = elements.find((e) => e.id === edge.end);\n if (!startVertex || !endVertex) {\n return;\n }\n containerElement.start = {\n id: startVertex.id || \"\",\n };\n containerElement.end = {\n id: endVertex.id || \"\",\n };\n elements.push(containerElement);\n });\n return {\n elements,\n };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9mbG93Y2hhcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzRDtBQUNnRjtBQUNwRjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsUUFBUTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsWUFBWTtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ08sbURBQW1ELDhEQUFjO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsb0RBQU87QUFDakM7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLHlFQUE0QjtBQUMvRCwrQkFBK0IsOEVBQWlDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsb0RBQU87QUFDakM7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwrREFBbUI7QUFDeEMseUNBQXlDLGtDQUFrQztBQUMzRTtBQUNBO0FBQ0EscUJBQXFCLDZEQUFpQjtBQUN0Qyx5Q0FBeUMsa0NBQWtDO0FBQzNFO0FBQ0E7QUFDQSxxQkFBcUIsb0VBQXdCO0FBQzdDO0FBQ0E7QUFDQSxrREFBa0QsV0FBVztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsU0FBUztBQUM5QztBQUNBO0FBQ0Esa0NBQWtDLG9EQUFPO0FBQ3pDO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw4REFBa0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtEQUFtQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtQ0FBbUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHVFQUEwQjtBQUN4RCwrQkFBK0IsV0FBVyxHQUFHLFNBQVM7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFNBQVMsTUFBTSxvREFBTztBQUM5Qyx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9mbG93Y2hhcnQuanM/OTYzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaENvbnZlcnRlciB9IGZyb20gXCIuLi9HcmFwaENvbnZlcnRlci5qc1wiO1xuaW1wb3J0IHsgZ2V0VGV4dCwgY29tcHV0ZUV4Y2FsaWRyYXdWZXJ0ZXhTdHlsZSwgY29tcHV0ZUV4Y2FsaWRyYXdWZXJ0ZXhMYWJlbFN0eWxlLCBjb21wdXRlRXhjYWxpZHJhd0Fycm93VHlwZSwgfSBmcm9tIFwiLi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgVkVSVEVYX1RZUEUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy5qc1wiO1xuY29uc3QgY29tcHV0ZUdyb3VwSWRzID0gKGdyYXBoKSA9PiB7XG4gICAgLy8gUGFyc2UgdGhlIGRpYWdyYW0gaW50byBhIHRyZWUgZm9yIHJlbmRlcmluZyBhbmQgZ3JvdXBpbmdcbiAgICBjb25zdCB0cmVlID0ge307XG4gICAgZ3JhcGguc3ViR3JhcGhzLm1hcCgoc3ViR3JhcGgpID0+IHtcbiAgICAgICAgc3ViR3JhcGgubm9kZUlkcy5mb3JFYWNoKChub2RlSWQpID0+IHtcbiAgICAgICAgICAgIHRyZWVbc3ViR3JhcGguaWRdID0ge1xuICAgICAgICAgICAgICAgIGlkOiBzdWJHcmFwaC5pZCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgaXNMZWFmOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cmVlW25vZGVJZF0gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IG5vZGVJZCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IHN1YkdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIGlzTGVhZjogZ3JhcGgudmVydGljZXNbbm9kZUlkXSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgbWFwcGVyID0ge307XG4gICAgWy4uLk9iamVjdC5rZXlzKGdyYXBoLnZlcnRpY2VzKSwgLi4uZ3JhcGguc3ViR3JhcGhzLm1hcCgoYykgPT4gYy5pZCldLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIGlmICghdHJlZVtpZF0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY3VyciA9IHRyZWVbaWRdO1xuICAgICAgICBjb25zdCBncm91cElkcyA9IFtdO1xuICAgICAgICBpZiAoIWN1cnIuaXNMZWFmKSB7XG4gICAgICAgICAgICBncm91cElkcy5wdXNoKGBzdWJncmFwaF9ncm91cF8ke2N1cnIuaWR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmIChjdXJyLnBhcmVudCkge1xuICAgICAgICAgICAgICAgIGdyb3VwSWRzLnB1c2goYHN1YmdyYXBoX2dyb3VwXyR7Y3Vyci5wYXJlbnR9YCk7XG4gICAgICAgICAgICAgICAgY3VyciA9IHRyZWVbY3Vyci5wYXJlbnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFwcGVyW2lkXSA9IGdyb3VwSWRzO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldEdyb3VwSWRzOiAoZWxlbWVudElkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWFwcGVyW2VsZW1lbnRJZF0gfHwgW107XG4gICAgICAgIH0sXG4gICAgICAgIGdldFBhcmVudElkOiAoZWxlbWVudElkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJlZVtlbGVtZW50SWRdID8gdHJlZVtlbGVtZW50SWRdLnBhcmVudCA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG5leHBvcnQgY29uc3QgRmxvd2NoYXJ0VG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0ZXIgPSBuZXcgR3JhcGhDb252ZXJ0ZXIoe1xuICAgIGNvbnZlcnRlcjogKGdyYXBoLCBvcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG4gICAgICAgIGNvbnN0IGZvbnRTaXplID0gb3B0aW9ucy5mb250U2l6ZTtcbiAgICAgICAgY29uc3QgeyBnZXRHcm91cElkcywgZ2V0UGFyZW50SWQgfSA9IGNvbXB1dGVHcm91cElkcyhncmFwaCk7XG4gICAgICAgIC8vIFN1YkdyYXBoc1xuICAgICAgICBncmFwaC5zdWJHcmFwaHMucmV2ZXJzZSgpLmZvckVhY2goKHN1YkdyYXBoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBncm91cElkcyA9IGdldEdyb3VwSWRzKHN1YkdyYXBoLmlkKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IHN1YkdyYXBoLmlkLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwicmVjdGFuZ2xlXCIsXG4gICAgICAgICAgICAgICAgZ3JvdXBJZHMsXG4gICAgICAgICAgICAgICAgeDogc3ViR3JhcGgueCxcbiAgICAgICAgICAgICAgICB5OiBzdWJHcmFwaC55LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBzdWJHcmFwaC53aWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHN1YkdyYXBoLmhlaWdodCxcbiAgICAgICAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0VGV4dChzdWJHcmFwaCksXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplLFxuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcInRvcFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFZlcnRpY2VzXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZ3JhcGgudmVydGljZXMpLmZvckVhY2goKHZlcnRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2ZXJ0ZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBncm91cElkcyA9IGdldEdyb3VwSWRzKHZlcnRleC5pZCk7XG4gICAgICAgICAgICAvLyBDb21wdXRlIGN1c3RvbSBzdHlsZVxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyU3R5bGUgPSBjb21wdXRlRXhjYWxpZHJhd1ZlcnRleFN0eWxlKHZlcnRleC5jb250YWluZXJTdHlsZSk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbFN0eWxlID0gY29tcHV0ZUV4Y2FsaWRyYXdWZXJ0ZXhMYWJlbFN0eWxlKHZlcnRleC5sYWJlbFN0eWxlKTtcbiAgICAgICAgICAgIGxldCBjb250YWluZXJFbGVtZW50ID0ge1xuICAgICAgICAgICAgICAgIGlkOiB2ZXJ0ZXguaWQsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJyZWN0YW5nbGVcIixcbiAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICB4OiB2ZXJ0ZXgueCxcbiAgICAgICAgICAgICAgICB5OiB2ZXJ0ZXgueSxcbiAgICAgICAgICAgICAgICB3aWR0aDogdmVydGV4LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdmVydGV4LmhlaWdodCxcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0VGV4dCh2ZXJ0ZXgpLFxuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgLi4ubGFiZWxTdHlsZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxpbms6IHZlcnRleC5saW5rIHx8IG51bGwsXG4gICAgICAgICAgICAgICAgLi4uY29udGFpbmVyU3R5bGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgc3dpdGNoICh2ZXJ0ZXgudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgVkVSVEVYX1RZUEUuU1RBRElVTToge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50ID0geyAuLi5jb250YWluZXJFbGVtZW50LCByb3VuZG5lc3M6IHsgdHlwZTogMyB9IH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFZFUlRFWF9UWVBFLlJPVU5EOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQgPSB7IC4uLmNvbnRhaW5lckVsZW1lbnQsIHJvdW5kbmVzczogeyB0eXBlOiAzIH0gfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgVkVSVEVYX1RZUEUuRE9VQkxFQ0lSQ0xFOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IENJUkNMRV9NQVJHSU4gPSA1O1xuICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgbmV3IGdyb3VwSWQgZm9yIGRvdWJsZSBjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZHMucHVzaChgZG91YmxlY2lyY2xlXyR7dmVydGV4LmlkfX1gKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGlubmVyIGNpcmNsZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyQ2lyY2xlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJlbGxpcHNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IHZlcnRleC54ICsgQ0lSQ0xFX01BUkdJTixcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IHZlcnRleC55ICsgQ0lSQ0xFX01BUkdJTixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB2ZXJ0ZXgud2lkdGggLSBDSVJDTEVfTUFSR0lOICogMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogdmVydGV4LmhlaWdodCAtIENJUkNMRV9NQVJHSU4gKiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3VuZG5lc3M6IHsgdHlwZTogMyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBnZXRUZXh0KHZlcnRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50ID0geyAuLi5jb250YWluZXJFbGVtZW50LCBncm91cElkcywgdHlwZTogXCJlbGxpcHNlXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChpbm5lckNpcmNsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFZFUlRFWF9UWVBFLkNJUkNMRToge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LnR5cGUgPSBcImVsbGlwc2VcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgVkVSVEVYX1RZUEUuRElBTU9ORDoge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LnR5cGUgPSBcImRpYW1vbmRcIjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxlbWVudHMucHVzaChjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEVkZ2VzXG4gICAgICAgIGdyYXBoLmVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgICAgICAgIGxldCBncm91cElkcyA9IFtdO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRQYXJlbnRJZCA9IGdldFBhcmVudElkKGVkZ2Uuc3RhcnQpO1xuICAgICAgICAgICAgY29uc3QgZW5kUGFyZW50SWQgPSBnZXRQYXJlbnRJZChlZGdlLmVuZCk7XG4gICAgICAgICAgICBpZiAoc3RhcnRQYXJlbnRJZCAmJiBzdGFydFBhcmVudElkID09PSBlbmRQYXJlbnRJZCkge1xuICAgICAgICAgICAgICAgIGdyb3VwSWRzID0gZ2V0R3JvdXBJZHMoc3RhcnRQYXJlbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBHZXQgYXJyb3cgcG9zaXRpb24gZGF0YVxuICAgICAgICAgICAgY29uc3QgeyBzdGFydFgsIHN0YXJ0WSwgcmVmbGVjdGlvblBvaW50cyB9ID0gZWRnZTtcbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBFeGNhbGlkcmF3IGFycm93J3MgcG9pbnRzXG4gICAgICAgICAgICBjb25zdCBwb2ludHMgPSByZWZsZWN0aW9uUG9pbnRzLm1hcCgocG9pbnQpID0+IFtcbiAgICAgICAgICAgICAgICBwb2ludC54IC0gcmVmbGVjdGlvblBvaW50c1swXS54LFxuICAgICAgICAgICAgICAgIHBvaW50LnkgLSByZWZsZWN0aW9uUG9pbnRzWzBdLnksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIC8vIEdldCBzdXBwb3J0ZWQgYXJyb3cgdHlwZVxuICAgICAgICAgICAgY29uc3QgYXJyb3dUeXBlID0gY29tcHV0ZUV4Y2FsaWRyYXdBcnJvd1R5cGUoZWRnZS50eXBlKTtcbiAgICAgICAgICAgIGNvbnN0IGFycm93SWQgPSBgJHtlZGdlLnN0YXJ0fV8ke2VkZ2UuZW5kfWA7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJFbGVtZW50ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBhcnJvd0lkLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyb3dcIixcbiAgICAgICAgICAgICAgICBncm91cElkcyxcbiAgICAgICAgICAgICAgICB4OiBzdGFydFgsXG4gICAgICAgICAgICAgICAgeTogc3RhcnRZLFxuICAgICAgICAgICAgICAgIC8vIDQgYW5kIDIgYXJlIHRoZSBFeGNhbGlkcmF3J3Mgc3Ryb2tlIHdpZHRoIG9mIHRoaWNrIGFuZCB0aGluIHJlc3BlY3RpdmVseVxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHVzZSBjb25zdGFudCBleHBvcnRlZCBmcm9tIEV4Y2FsaWRyYXcgcGFja2FnZVxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBlZGdlLnN0cm9rZSA9PT0gXCJ0aGlja1wiID8gNCA6IDIsXG4gICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6IGVkZ2Uuc3Ryb2tlID09PSBcImRvdHRlZFwiID8gXCJkYXNoZWRcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICAgICAgLi4uKGVkZ2UudGV4dFxuICAgICAgICAgICAgICAgICAgICA/IHsgbGFiZWw6IHsgdGV4dDogZ2V0VGV4dChlZGdlKSwgZm9udFNpemUsIGdyb3VwSWRzIH0gfVxuICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICByb3VuZG5lc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogMixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmFycm93VHlwZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBCaW5kIHN0YXJ0IGFuZCBlbmQgdmVydGV4IHRvIGFycm93XG4gICAgICAgICAgICBjb25zdCBzdGFydFZlcnRleCA9IGVsZW1lbnRzLmZpbmQoKGUpID0+IGUuaWQgPT09IGVkZ2Uuc3RhcnQpO1xuICAgICAgICAgICAgY29uc3QgZW5kVmVydGV4ID0gZWxlbWVudHMuZmluZCgoZSkgPT4gZS5pZCA9PT0gZWRnZS5lbmQpO1xuICAgICAgICAgICAgaWYgKCFzdGFydFZlcnRleCB8fCAhZW5kVmVydGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5zdGFydCA9IHtcbiAgICAgICAgICAgICAgICBpZDogc3RhcnRWZXJ0ZXguaWQgfHwgXCJcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmVuZCA9IHtcbiAgICAgICAgICAgICAgICBpZDogZW5kVmVydGV4LmlkIHx8IFwiXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgfTtcbiAgICB9LFxufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js": +/*!**************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js ***! + \**************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"GraphImageConverter\": () => (/* binding */ GraphImageConverter)\n/* harmony export */ });\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n\n\nconst GraphImageConverter = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__.GraphConverter({\n converter: (graph) => {\n const imageId = (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n const { width, height } = graph;\n const imageElement = {\n type: \"image\",\n x: 0,\n y: 0,\n width,\n height,\n status: \"saved\",\n fileId: imageId,\n };\n const files = {\n [imageId]: {\n id: imageId,\n mimeType: graph.mimeType,\n dataURL: graph.dataURL,\n },\n };\n return { files, elements: [imageElement] };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9ncmFwaEltYWdlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzRDtBQUN0QjtBQUN6QixnQ0FBZ0MsOERBQWM7QUFDckQ7QUFDQSx3QkFBd0IsOENBQU07QUFDOUIsZ0JBQWdCLGdCQUFnQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsaUJBQWlCO0FBQ2pCLEtBQUs7QUFDTCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9jb252ZXJ0ZXIvdHlwZXMvZ3JhcGhJbWFnZS5qcz9hMmRmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoQ29udmVydGVyIH0gZnJvbSBcIi4uL0dyYXBoQ29udmVydGVyLmpzXCI7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tIFwibmFub2lkXCI7XG5leHBvcnQgY29uc3QgR3JhcGhJbWFnZUNvbnZlcnRlciA9IG5ldyBHcmFwaENvbnZlcnRlcih7XG4gICAgY29udmVydGVyOiAoZ3JhcGgpID0+IHtcbiAgICAgICAgY29uc3QgaW1hZ2VJZCA9IG5hbm9pZCgpO1xuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdyYXBoO1xuICAgICAgICBjb25zdCBpbWFnZUVsZW1lbnQgPSB7XG4gICAgICAgICAgICB0eXBlOiBcImltYWdlXCIsXG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgc3RhdHVzOiBcInNhdmVkXCIsXG4gICAgICAgICAgICBmaWxlSWQ6IGltYWdlSWQsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpbGVzID0ge1xuICAgICAgICAgICAgW2ltYWdlSWRdOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGltYWdlSWQsXG4gICAgICAgICAgICAgICAgbWltZVR5cGU6IGdyYXBoLm1pbWVUeXBlLFxuICAgICAgICAgICAgICAgIGRhdGFVUkw6IGdyYXBoLmRhdGFVUkwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4geyBmaWxlcywgZWxlbWVudHM6IFtpbWFnZUVsZW1lbnRdIH07XG4gICAgfSxcbn0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js": +/*!************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js ***! + \************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SequenceToExcalidrawSkeletonConvertor\": () => (/* binding */ SequenceToExcalidrawSkeletonConvertor)\n/* harmony export */ });\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n\n\n// Arrow mapper for the supported sequence arrow types\nconst EXCALIDRAW_STROKE_STYLE_FOR_ARROW = {\n SOLID: \"solid\",\n DOTTED: \"dotted\",\n SOLID_CROSS: \"solid\",\n DOTTED_CROSS: \"dotted\",\n SOLID_OPEN: \"solid\",\n DOTTED_OPEN: \"dotted\",\n SOLID_POINT: \"solid\",\n DOTTED_POINT: \"dotted\",\n};\nconst createLine = (line) => {\n const lineElement = {\n type: \"line\",\n x: line.startX,\n y: line.startY,\n points: [\n [0, 0],\n [line.endX - line.startX, line.endY - line.startY],\n ],\n width: line.endX - line.startX,\n height: line.endY - line.startY,\n strokeStyle: line.strokeStyle || \"solid\",\n strokeColor: line.strokeColor || \"#000\",\n strokeWidth: line.strokeWidth || 1,\n };\n if (line.groupId) {\n Object.assign(lineElement, { groupIds: [line.groupId] });\n }\n if (line.id) {\n Object.assign(lineElement, { id: line.id });\n }\n return lineElement;\n};\nconst createText = (element) => {\n const textElement = {\n type: \"text\",\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n text: element.text || \"\",\n fontSize: element.fontSize,\n verticalAlign: \"middle\",\n };\n if (element.groupId) {\n Object.assign(textElement, { groupIds: [element.groupId] });\n }\n if (element.id) {\n Object.assign(textElement, { id: element.id });\n }\n return textElement;\n};\nconst createContainer = (element) => {\n let extraProps = {};\n if (element.type === \"rectangle\" && element.subtype === \"activation\") {\n extraProps = {\n backgroundColor: \"#e9ecef\",\n fillStyle: \"solid\",\n };\n }\n const container = {\n id: element.id,\n type: element.type,\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n label: {\n text: element?.label?.text || \"\",\n fontSize: element?.label?.fontSize,\n verticalAlign: \"middle\",\n strokeColor: element.label?.color || \"#000\",\n },\n strokeStyle: element?.strokeStyle,\n strokeWidth: element?.strokeWidth,\n strokeColor: element?.strokeColor,\n backgroundColor: element?.bgColor,\n fillStyle: \"solid\",\n ...extraProps,\n };\n if (element.groupId) {\n Object.assign(container, { groupIds: [element.groupId] });\n }\n return container;\n};\nconst createArrow = (arrow) => {\n const strokeStyle = EXCALIDRAW_STROKE_STYLE_FOR_ARROW[arrow.strokeStyle];\n const arrowElement = {\n type: \"arrow\",\n x: arrow.startX,\n y: arrow.startY,\n points: arrow.points || [\n [0, 0],\n [arrow.endX - arrow.startX, arrow.endY - arrow.startY],\n ],\n width: arrow.endX - arrow.startX,\n height: arrow.endY - arrow.startY,\n strokeStyle,\n endArrowhead: arrow.strokeStyle === \"SOLID_OPEN\" || arrow.strokeStyle === \"DOTTED_OPEN\"\n ? null\n : \"arrow\",\n label: {\n text: arrow?.label?.text || \"\",\n fontSize: 16,\n },\n roundness: {\n type: 2,\n },\n };\n if (arrow.groupId) {\n Object.assign(arrowElement, { groupIds: [arrow.groupId] });\n }\n return arrowElement;\n};\nconst SequenceToExcalidrawSkeletonConvertor = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__.GraphConverter({\n converter: (chart) => {\n const elements = [];\n const activations = [];\n Object.values(chart.nodes).forEach((node) => {\n if (!node || !node.length) {\n return;\n }\n node.forEach((element) => {\n let excalidrawElement;\n switch (element.type) {\n case \"line\":\n excalidrawElement = createLine(element);\n break;\n case \"rectangle\":\n case \"ellipse\":\n excalidrawElement = createContainer(element);\n break;\n case \"text\":\n excalidrawElement = createText(element);\n break;\n default:\n throw `unknown type ${element.type}`;\n break;\n }\n if (element.type === \"rectangle\" && element?.subtype === \"activation\") {\n activations.push(excalidrawElement);\n }\n else {\n elements.push(excalidrawElement);\n }\n });\n });\n Object.values(chart.lines).forEach((line) => {\n if (!line) {\n return;\n }\n elements.push(createLine(line));\n });\n Object.values(chart.arrows).forEach((arrow) => {\n if (!arrow) {\n return;\n }\n elements.push(createArrow(arrow));\n if (arrow.sequenceNumber) {\n elements.push(createContainer(arrow.sequenceNumber));\n }\n });\n elements.push(...activations);\n // loops\n if (chart.loops) {\n const { lines, texts, nodes } = chart.loops;\n lines.forEach((line) => {\n elements.push(createLine(line));\n });\n texts.forEach((text) => {\n elements.push(createText(text));\n });\n nodes.forEach((node) => {\n elements.push(createContainer(node));\n });\n }\n if (chart.groups) {\n chart.groups.forEach((group) => {\n const { actorKeys, name } = group;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = 0;\n let maxY = 0;\n if (!actorKeys.length) {\n return;\n }\n const actors = elements.filter((ele) => {\n if (ele.id) {\n const hyphenIndex = ele.id.indexOf(\"-\");\n const id = ele.id.substring(0, hyphenIndex);\n return actorKeys.includes(id);\n }\n });\n actors.forEach((actor) => {\n if (actor.x === undefined ||\n actor.y === undefined ||\n actor.width === undefined ||\n actor.height === undefined) {\n throw new Error(`Actor attributes missing ${actor}`);\n }\n minX = Math.min(minX, actor.x);\n minY = Math.min(minY, actor.y);\n maxX = Math.max(maxX, actor.x + actor.width);\n maxY = Math.max(maxY, actor.y + actor.height);\n });\n // Draw the outer rectangle enclosing the group elements\n const PADDING = 10;\n const groupRectX = minX - PADDING;\n const groupRectY = minY - PADDING;\n const groupRectWidth = maxX - minX + PADDING * 2;\n const groupRectHeight = maxY - minY + PADDING * 2;\n const groupRectId = (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n const groupRect = createContainer({\n type: \"rectangle\",\n x: groupRectX,\n y: groupRectY,\n width: groupRectWidth,\n height: groupRectHeight,\n bgColor: group.fill,\n id: groupRectId,\n });\n elements.unshift(groupRect);\n const frameId = (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n const frameChildren = [groupRectId];\n elements.forEach((ele) => {\n if (ele.type === \"frame\") {\n return;\n }\n if (ele.x === undefined ||\n ele.y === undefined ||\n ele.width === undefined ||\n ele.height === undefined) {\n throw new Error(`Element attributes missing ${ele}`);\n }\n if (ele.x >= minX &&\n ele.x + ele.width <= maxX &&\n ele.y >= minY &&\n ele.y + ele.height <= maxY) {\n const elementId = ele.id || (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n if (!ele.id) {\n Object.assign(ele, { id: elementId });\n }\n frameChildren.push(elementId);\n }\n });\n const frame = {\n type: \"frame\",\n id: frameId,\n name,\n children: frameChildren,\n };\n elements.push(frame);\n });\n }\n return { elements };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0Q7QUFDdEI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDBCQUEwQjtBQUMvRDtBQUNBO0FBQ0EscUNBQXFDLGFBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDZCQUE2QjtBQUNsRTtBQUNBO0FBQ0EscUNBQXFDLGdCQUFnQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNkJBQTZCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNDQUFzQywyQkFBMkI7QUFDakU7QUFDQTtBQUNBO0FBQ08sa0RBQWtELDhEQUFjO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxhQUFhO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxNQUFNO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDhDQUFNO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxnQ0FBZ0MsOENBQU07QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLElBQUk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCw4Q0FBTTtBQUMxRDtBQUNBLGlEQUFpRCxlQUFlO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGlCQUFpQjtBQUNqQixLQUFLO0FBQ0wsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvY29udmVydGVyL3R5cGVzL3NlcXVlbmNlLmpzP2JiMWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhDb252ZXJ0ZXIgfSBmcm9tIFwiLi4vR3JhcGhDb252ZXJ0ZXIuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCJuYW5vaWRcIjtcbi8vIEFycm93IG1hcHBlciBmb3IgdGhlIHN1cHBvcnRlZCBzZXF1ZW5jZSBhcnJvdyB0eXBlc1xuY29uc3QgRVhDQUxJRFJBV19TVFJPS0VfU1RZTEVfRk9SX0FSUk9XID0ge1xuICAgIFNPTElEOiBcInNvbGlkXCIsXG4gICAgRE9UVEVEOiBcImRvdHRlZFwiLFxuICAgIFNPTElEX0NST1NTOiBcInNvbGlkXCIsXG4gICAgRE9UVEVEX0NST1NTOiBcImRvdHRlZFwiLFxuICAgIFNPTElEX09QRU46IFwic29saWRcIixcbiAgICBET1RURURfT1BFTjogXCJkb3R0ZWRcIixcbiAgICBTT0xJRF9QT0lOVDogXCJzb2xpZFwiLFxuICAgIERPVFRFRF9QT0lOVDogXCJkb3R0ZWRcIixcbn07XG5jb25zdCBjcmVhdGVMaW5lID0gKGxpbmUpID0+IHtcbiAgICBjb25zdCBsaW5lRWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJsaW5lXCIsXG4gICAgICAgIHg6IGxpbmUuc3RhcnRYLFxuICAgICAgICB5OiBsaW5lLnN0YXJ0WSxcbiAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbbGluZS5lbmRYIC0gbGluZS5zdGFydFgsIGxpbmUuZW5kWSAtIGxpbmUuc3RhcnRZXSxcbiAgICAgICAgXSxcbiAgICAgICAgd2lkdGg6IGxpbmUuZW5kWCAtIGxpbmUuc3RhcnRYLFxuICAgICAgICBoZWlnaHQ6IGxpbmUuZW5kWSAtIGxpbmUuc3RhcnRZLFxuICAgICAgICBzdHJva2VTdHlsZTogbGluZS5zdHJva2VTdHlsZSB8fCBcInNvbGlkXCIsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBsaW5lLnN0cm9rZUNvbG9yIHx8IFwiIzAwMFwiLFxuICAgICAgICBzdHJva2VXaWR0aDogbGluZS5zdHJva2VXaWR0aCB8fCAxLFxuICAgIH07XG4gICAgaWYgKGxpbmUuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGxpbmVFbGVtZW50LCB7IGdyb3VwSWRzOiBbbGluZS5ncm91cElkXSB9KTtcbiAgICB9XG4gICAgaWYgKGxpbmUuaWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihsaW5lRWxlbWVudCwgeyBpZDogbGluZS5pZCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVFbGVtZW50O1xufTtcbmNvbnN0IGNyZWF0ZVRleHQgPSAoZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHRleHRFbGVtZW50ID0ge1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgeDogZWxlbWVudC54LFxuICAgICAgICB5OiBlbGVtZW50LnksXG4gICAgICAgIHdpZHRoOiBlbGVtZW50LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGVsZW1lbnQuaGVpZ2h0LFxuICAgICAgICB0ZXh0OiBlbGVtZW50LnRleHQgfHwgXCJcIixcbiAgICAgICAgZm9udFNpemU6IGVsZW1lbnQuZm9udFNpemUsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246IFwibWlkZGxlXCIsXG4gICAgfTtcbiAgICBpZiAoZWxlbWVudC5ncm91cElkKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGV4dEVsZW1lbnQsIHsgZ3JvdXBJZHM6IFtlbGVtZW50Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5pZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRleHRFbGVtZW50LCB7IGlkOiBlbGVtZW50LmlkIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuY29uc3QgY3JlYXRlQ29udGFpbmVyID0gKGVsZW1lbnQpID0+IHtcbiAgICBsZXQgZXh0cmFQcm9wcyA9IHt9O1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwicmVjdGFuZ2xlXCIgJiYgZWxlbWVudC5zdWJ0eXBlID09PSBcImFjdGl2YXRpb25cIikge1xuICAgICAgICBleHRyYVByb3BzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNlOWVjZWZcIixcbiAgICAgICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXIgPSB7XG4gICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICB0eXBlOiBlbGVtZW50LnR5cGUsXG4gICAgICAgIHg6IGVsZW1lbnQueCxcbiAgICAgICAgeTogZWxlbWVudC55LFxuICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBlbGVtZW50LmhlaWdodCxcbiAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQ/LmxhYmVsPy50ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgICBmb250U2l6ZTogZWxlbWVudD8ubGFiZWw/LmZvbnRTaXplLFxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogXCJtaWRkbGVcIixcbiAgICAgICAgICAgIHN0cm9rZUNvbG9yOiBlbGVtZW50LmxhYmVsPy5jb2xvciB8fCBcIiMwMDBcIixcbiAgICAgICAgfSxcbiAgICAgICAgc3Ryb2tlU3R5bGU6IGVsZW1lbnQ/LnN0cm9rZVN0eWxlLFxuICAgICAgICBzdHJva2VXaWR0aDogZWxlbWVudD8uc3Ryb2tlV2lkdGgsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBlbGVtZW50Py5zdHJva2VDb2xvcixcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlbGVtZW50Py5iZ0NvbG9yLFxuICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgLi4uZXh0cmFQcm9wcyxcbiAgICB9O1xuICAgIGlmIChlbGVtZW50Lmdyb3VwSWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIsIHsgZ3JvdXBJZHM6IFtlbGVtZW50Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xufTtcbmNvbnN0IGNyZWF0ZUFycm93ID0gKGFycm93KSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlU3R5bGUgPSBFWENBTElEUkFXX1NUUk9LRV9TVFlMRV9GT1JfQVJST1dbYXJyb3cuc3Ryb2tlU3R5bGVdO1xuICAgIGNvbnN0IGFycm93RWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJhcnJvd1wiLFxuICAgICAgICB4OiBhcnJvdy5zdGFydFgsXG4gICAgICAgIHk6IGFycm93LnN0YXJ0WSxcbiAgICAgICAgcG9pbnRzOiBhcnJvdy5wb2ludHMgfHwgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgW2Fycm93LmVuZFggLSBhcnJvdy5zdGFydFgsIGFycm93LmVuZFkgLSBhcnJvdy5zdGFydFldLFxuICAgICAgICBdLFxuICAgICAgICB3aWR0aDogYXJyb3cuZW5kWCAtIGFycm93LnN0YXJ0WCxcbiAgICAgICAgaGVpZ2h0OiBhcnJvdy5lbmRZIC0gYXJyb3cuc3RhcnRZLFxuICAgICAgICBzdHJva2VTdHlsZSxcbiAgICAgICAgZW5kQXJyb3doZWFkOiBhcnJvdy5zdHJva2VTdHlsZSA9PT0gXCJTT0xJRF9PUEVOXCIgfHwgYXJyb3cuc3Ryb2tlU3R5bGUgPT09IFwiRE9UVEVEX09QRU5cIlxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IFwiYXJyb3dcIixcbiAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHRleHQ6IGFycm93Py5sYWJlbD8udGV4dCB8fCBcIlwiLFxuICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICB9LFxuICAgICAgICByb3VuZG5lc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAoYXJyb3cuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFycm93RWxlbWVudCwgeyBncm91cElkczogW2Fycm93Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyb3dFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBTZXF1ZW5jZVRvRXhjYWxpZHJhd1NrZWxldG9uQ29udmVydG9yID0gbmV3IEdyYXBoQ29udmVydGVyKHtcbiAgICBjb252ZXJ0ZXI6IChjaGFydCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtdO1xuICAgICAgICBjb25zdCBhY3RpdmF0aW9ucyA9IFtdO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0Lm5vZGVzKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGV4Y2FsaWRyYXdFbGVtZW50O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBleGNhbGlkcmF3RWxlbWVudCA9IGNyZWF0ZUxpbmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSBjcmVhdGVDb250YWluZXIoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2FsaWRyYXdFbGVtZW50ID0gY3JlYXRlVGV4dChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgYHVua25vd24gdHlwZSAke2VsZW1lbnQudHlwZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwicmVjdGFuZ2xlXCIgJiYgZWxlbWVudD8uc3VidHlwZSA9PT0gXCJhY3RpdmF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGlvbnMucHVzaChleGNhbGlkcmF3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGV4Y2FsaWRyYXdFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoY2hhcnQubGluZXMpLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgICAgIGlmICghbGluZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goY3JlYXRlTGluZShsaW5lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0LmFycm93cykuZm9yRWFjaCgoYXJyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICghYXJyb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUFycm93KGFycm93KSk7XG4gICAgICAgICAgICBpZiAoYXJyb3cuc2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUNvbnRhaW5lcihhcnJvdy5zZXF1ZW5jZU51bWJlcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWxlbWVudHMucHVzaCguLi5hY3RpdmF0aW9ucyk7XG4gICAgICAgIC8vIGxvb3BzXG4gICAgICAgIGlmIChjaGFydC5sb29wcykge1xuICAgICAgICAgICAgY29uc3QgeyBsaW5lcywgdGV4dHMsIG5vZGVzIH0gPSBjaGFydC5sb29wcztcbiAgICAgICAgICAgIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUxpbmUobGluZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChjcmVhdGVUZXh0KHRleHQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goY3JlYXRlQ29udGFpbmVyKG5vZGUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFydC5ncm91cHMpIHtcbiAgICAgICAgICAgIGNoYXJ0Lmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWN0b3JLZXlzLCBuYW1lIH0gPSBncm91cDtcbiAgICAgICAgICAgICAgICBsZXQgbWluWCA9IEluZmluaXR5O1xuICAgICAgICAgICAgICAgIGxldCBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgbGV0IG1heFggPSAwO1xuICAgICAgICAgICAgICAgIGxldCBtYXhZID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoIWFjdG9yS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhY3RvcnMgPSBlbGVtZW50cy5maWx0ZXIoKGVsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoeXBoZW5JbmRleCA9IGVsZS5pZC5pbmRleE9mKFwiLVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZWxlLmlkLnN1YnN0cmluZygwLCBoeXBoZW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0b3JLZXlzLmluY2x1ZGVzKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGFjdG9ycy5mb3JFYWNoKChhY3RvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IueCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rvci55ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdG9yLndpZHRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdG9yLmhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjdG9yIGF0dHJpYnV0ZXMgbWlzc2luZyAke2FjdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCBhY3Rvci54KTtcbiAgICAgICAgICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIGFjdG9yLnkpO1xuICAgICAgICAgICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgYWN0b3IueCArIGFjdG9yLndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIGFjdG9yLnkgKyBhY3Rvci5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIERyYXcgdGhlIG91dGVyIHJlY3RhbmdsZSBlbmNsb3NpbmcgdGhlIGdyb3VwIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgY29uc3QgUEFERElORyA9IDEwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdFggPSBtaW5YIC0gUEFERElORztcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3RZID0gbWluWSAtIFBBRERJTkc7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0V2lkdGggPSBtYXhYIC0gbWluWCArIFBBRERJTkcgKiAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdEhlaWdodCA9IG1heFkgLSBtaW5ZICsgUEFERElORyAqIDI7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0SWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3QgPSBjcmVhdGVDb250YWluZXIoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJlY3RhbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICB4OiBncm91cFJlY3RYLFxuICAgICAgICAgICAgICAgICAgICB5OiBncm91cFJlY3RZLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZ3JvdXBSZWN0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZ3JvdXBSZWN0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBiZ0NvbG9yOiBncm91cC5maWxsLFxuICAgICAgICAgICAgICAgICAgICBpZDogZ3JvdXBSZWN0SWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMudW5zaGlmdChncm91cFJlY3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lSWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmcmFtZUNoaWxkcmVuID0gW2dyb3VwUmVjdElkXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZS50eXBlID09PSBcImZyYW1lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLndpZHRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZS5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbGVtZW50IGF0dHJpYnV0ZXMgbWlzc2luZyAke2VsZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPj0gbWluWCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnggKyBlbGUud2lkdGggPD0gbWF4WCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPj0gbWluWSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgKyBlbGUuaGVpZ2h0IDw9IG1heFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsZS5pZCB8fCBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGUsIHsgaWQ6IGVsZW1lbnRJZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ2hpbGRyZW4ucHVzaChlbGVtZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJhbWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZnJhbWVcIixcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGZyYW1lSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBmcmFtZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChmcmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlbGVtZW50cyB9O1xuICAgIH0sXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/graphToExcalidraw.js": +/*!*****************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/graphToExcalidraw.js ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"graphToExcalidraw\": () => (/* binding */ graphToExcalidraw)\n/* harmony export */ });\n/* harmony import */ var _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./converter/types/flowchart.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js\");\n/* harmony import */ var _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./converter/types/graphImage.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js\");\n/* harmony import */ var _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./converter/types/sequence.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\");\n\n\n\nconst graphToExcalidraw = (graph, options = {}) => {\n switch (graph.type) {\n case \"graphImage\": {\n return _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__.GraphImageConverter.convert(graph, options);\n }\n case \"flowchart\": {\n return _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__.FlowchartToExcalidrawSkeletonConverter.convert(graph, options);\n }\n case \"sequence\": {\n return _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__.SequenceToExcalidrawSkeletonConvertor.convert(graph, options);\n }\n default: {\n throw new Error(`graphToExcalidraw: unknown graph type \"${graph.type}, only flowcharts are supported!\"`);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2dyYXBoVG9FeGNhbGlkcmF3LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBd0Y7QUFDbEI7QUFDZ0I7QUFDL0UsOENBQThDO0FBQ3JEO0FBQ0E7QUFDQSxtQkFBbUIsdUZBQTJCO0FBQzlDO0FBQ0E7QUFDQSxtQkFBbUIseUdBQThDO0FBQ2pFO0FBQ0E7QUFDQSxtQkFBbUIsdUdBQTZDO0FBQ2hFO0FBQ0E7QUFDQSxzRUFBc0UsV0FBVztBQUNqRjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2dyYXBoVG9FeGNhbGlkcmF3LmpzP2JjYjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxvd2NoYXJ0VG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0ZXIgfSBmcm9tIFwiLi9jb252ZXJ0ZXIvdHlwZXMvZmxvd2NoYXJ0LmpzXCI7XG5pbXBvcnQgeyBHcmFwaEltYWdlQ29udmVydGVyIH0gZnJvbSBcIi4vY29udmVydGVyL3R5cGVzL2dyYXBoSW1hZ2UuanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlVG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0b3IgfSBmcm9tIFwiLi9jb252ZXJ0ZXIvdHlwZXMvc2VxdWVuY2UuanNcIjtcbmV4cG9ydCBjb25zdCBncmFwaFRvRXhjYWxpZHJhdyA9IChncmFwaCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgc3dpdGNoIChncmFwaC50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJncmFwaEltYWdlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBHcmFwaEltYWdlQ29udmVydGVyLmNvbnZlcnQoZ3JhcGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJmbG93Y2hhcnRcIjoge1xuICAgICAgICAgICAgcmV0dXJuIEZsb3djaGFydFRvRXhjYWxpZHJhd1NrZWxldG9uQ29udmVydGVyLmNvbnZlcnQoZ3JhcGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZXF1ZW5jZVwiOiB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVuY2VUb0V4Y2FsaWRyYXdTa2VsZXRvbkNvbnZlcnRvci5jb252ZXJ0KGdyYXBoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGdyYXBoVG9FeGNhbGlkcmF3OiB1bmtub3duIGdyYXBoIHR5cGUgXCIke2dyYXBoLnR5cGV9LCBvbmx5IGZsb3djaGFydHMgYXJlIHN1cHBvcnRlZCFcImApO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/graphToExcalidraw.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/index.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/index.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidToExcalidraw\": () => (/* binding */ parseMermaidToExcalidraw)\n/* harmony export */ });\n/* harmony import */ var _graphToExcalidraw_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graphToExcalidraw.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/graphToExcalidraw.js\");\n/* harmony import */ var _parseMermaid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parseMermaid.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parseMermaid.js\");\n\n\nconst parseMermaidToExcalidraw = async (definition, options = {}) => {\n const parsedMermaidData = await (0,_parseMermaid_js__WEBPACK_IMPORTED_MODULE_1__.parseMermaid)(definition);\n const excalidrawElements = (0,_graphToExcalidraw_js__WEBPACK_IMPORTED_MODULE_0__.graphToExcalidraw)(parsedMermaidData, options);\n return excalidrawElements;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEyRDtBQUNWO0FBQ2pELGdFQUFnRTtBQUNoRSxvQ0FBb0MsOERBQVk7QUFDaEQsK0JBQStCLHdFQUFpQjtBQUNoRDtBQUNBO0FBQ29DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9pbmRleC5qcz9mN2E4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyYXBoVG9FeGNhbGlkcmF3IH0gZnJvbSBcIi4vZ3JhcGhUb0V4Y2FsaWRyYXcuanNcIjtcbmltcG9ydCB7IHBhcnNlTWVybWFpZCB9IGZyb20gXCIuL3BhcnNlTWVybWFpZC5qc1wiO1xuY29uc3QgcGFyc2VNZXJtYWlkVG9FeGNhbGlkcmF3ID0gYXN5bmMgKGRlZmluaXRpb24sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZE1lcm1haWREYXRhID0gYXdhaXQgcGFyc2VNZXJtYWlkKGRlZmluaXRpb24pO1xuICAgIGNvbnN0IGV4Y2FsaWRyYXdFbGVtZW50cyA9IGdyYXBoVG9FeGNhbGlkcmF3KHBhcnNlZE1lcm1haWREYXRhLCBvcHRpb25zKTtcbiAgICByZXR1cm4gZXhjYWxpZHJhd0VsZW1lbnRzO1xufTtcbmV4cG9ydCB7IHBhcnNlTWVybWFpZFRvRXhjYWxpZHJhdyB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/interfaces.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/interfaces.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CONTAINER_STYLE_PROPERTY\": () => (/* binding */ CONTAINER_STYLE_PROPERTY),\n/* harmony export */ \"LABEL_STYLE_PROPERTY\": () => (/* binding */ LABEL_STYLE_PROPERTY),\n/* harmony export */ \"VERTEX_TYPE\": () => (/* binding */ VERTEX_TYPE)\n/* harmony export */ });\nvar VERTEX_TYPE;\n(function (VERTEX_TYPE) {\n VERTEX_TYPE[\"ROUND\"] = \"round\";\n VERTEX_TYPE[\"STADIUM\"] = \"stadium\";\n VERTEX_TYPE[\"DOUBLECIRCLE\"] = \"doublecircle\";\n VERTEX_TYPE[\"CIRCLE\"] = \"circle\";\n VERTEX_TYPE[\"DIAMOND\"] = \"diamond\";\n})(VERTEX_TYPE || (VERTEX_TYPE = {}));\nvar LABEL_STYLE_PROPERTY;\n(function (LABEL_STYLE_PROPERTY) {\n LABEL_STYLE_PROPERTY[\"COLOR\"] = \"color\";\n})(LABEL_STYLE_PROPERTY || (LABEL_STYLE_PROPERTY = {}));\nvar CONTAINER_STYLE_PROPERTY;\n(function (CONTAINER_STYLE_PROPERTY) {\n CONTAINER_STYLE_PROPERTY[\"FILL\"] = \"fill\";\n CONTAINER_STYLE_PROPERTY[\"STROKE\"] = \"stroke\";\n CONTAINER_STYLE_PROPERTY[\"STROKE_WIDTH\"] = \"stroke-width\";\n CONTAINER_STYLE_PROPERTY[\"STROKE_DASHARRAY\"] = \"stroke-dasharray\";\n})(CONTAINER_STYLE_PROPERTY || (CONTAINER_STYLE_PROPERTY = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2ludGVyZmFjZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtDQUFrQztBQUM1QjtBQUNQO0FBQ0E7QUFDQSxDQUFDLG9EQUFvRDtBQUM5QztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDREQUE0RCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvaW50ZXJmYWNlcy5qcz80NDBmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgVkVSVEVYX1RZUEU7XG4oZnVuY3Rpb24gKFZFUlRFWF9UWVBFKSB7XG4gICAgVkVSVEVYX1RZUEVbXCJST1VORFwiXSA9IFwicm91bmRcIjtcbiAgICBWRVJURVhfVFlQRVtcIlNUQURJVU1cIl0gPSBcInN0YWRpdW1cIjtcbiAgICBWRVJURVhfVFlQRVtcIkRPVUJMRUNJUkNMRVwiXSA9IFwiZG91YmxlY2lyY2xlXCI7XG4gICAgVkVSVEVYX1RZUEVbXCJDSVJDTEVcIl0gPSBcImNpcmNsZVwiO1xuICAgIFZFUlRFWF9UWVBFW1wiRElBTU9ORFwiXSA9IFwiZGlhbW9uZFwiO1xufSkoVkVSVEVYX1RZUEUgfHwgKFZFUlRFWF9UWVBFID0ge30pKTtcbmV4cG9ydCB2YXIgTEFCRUxfU1RZTEVfUFJPUEVSVFk7XG4oZnVuY3Rpb24gKExBQkVMX1NUWUxFX1BST1BFUlRZKSB7XG4gICAgTEFCRUxfU1RZTEVfUFJPUEVSVFlbXCJDT0xPUlwiXSA9IFwiY29sb3JcIjtcbn0pKExBQkVMX1NUWUxFX1BST1BFUlRZIHx8IChMQUJFTF9TVFlMRV9QUk9QRVJUWSA9IHt9KSk7XG5leHBvcnQgdmFyIENPTlRBSU5FUl9TVFlMRV9QUk9QRVJUWTtcbihmdW5jdGlvbiAoQ09OVEFJTkVSX1NUWUxFX1BST1BFUlRZKSB7XG4gICAgQ09OVEFJTkVSX1NUWUxFX1BST1BFUlRZW1wiRklMTFwiXSA9IFwiZmlsbFwiO1xuICAgIENPTlRBSU5FUl9TVFlMRV9QUk9QRVJUWVtcIlNUUk9LRVwiXSA9IFwic3Ryb2tlXCI7XG4gICAgQ09OVEFJTkVSX1NUWUxFX1BST1BFUlRZW1wiU1RST0tFX1dJRFRIXCJdID0gXCJzdHJva2Utd2lkdGhcIjtcbiAgICBDT05UQUlORVJfU1RZTEVfUFJPUEVSVFlbXCJTVFJPS0VfREFTSEFSUkFZXCJdID0gXCJzdHJva2UtZGFzaGFycmF5XCI7XG59KShDT05UQUlORVJfU1RZTEVfUFJPUEVSVFkgfHwgKENPTlRBSU5FUl9TVFlMRV9QUk9QRVJUWSA9IHt9KSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/interfaces.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parseMermaid.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parseMermaid.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaid\": () => (/* binding */ parseMermaid)\n/* harmony export */ });\n/* harmony import */ var mermaid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mermaid */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n/* harmony import */ var _parser_flowchart_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/flowchart.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js\");\n/* harmony import */ var _parser_sequence_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/sequence.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js\");\n\n\n\n\n\n// Fallback to Svg\nconst convertSvgToGraphImage = (svgContainer) => {\n // Extract SVG width and height\n // TODO: make width and height change dynamically based on user's screen dimension\n const svgEl = svgContainer.querySelector(\"svg\");\n if (!svgEl) {\n throw new Error(\"SVG element not found\");\n }\n const rect = svgEl.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n // Set width and height explictly since in firefox it gets set to 0\n // if the width and height are not expilcitly set\n // eg in some cases like er Diagram, gnatt, width and height is set as 100%\n // which sets the dimensions as 0 in firefox and thus the diagram isn't rendered\n svgEl.setAttribute(\"width\", `${width}`);\n svgEl.setAttribute(\"height\", `${height}`);\n // Convert SVG to image\n const mimeType = \"image/svg+xml\";\n const decoded = unescape(encodeURIComponent(svgEl.outerHTML));\n const base64 = btoa(decoded);\n const dataURL = `data:image/svg+xml;base64,${base64}`;\n const graphImage = {\n type: \"graphImage\",\n mimeType,\n dataURL,\n width,\n height,\n };\n return graphImage;\n};\nconst parseMermaid = async (definition) => {\n mermaid__WEBPACK_IMPORTED_MODULE_4__.K.initialize({\n startOnLoad: false,\n flowchart: { curve: \"linear\" },\n themeVariables: {\n fontSize: `${_constants_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_SIZE * 1.25}px`,\n },\n });\n // Parse the diagram\n const diagram = await mermaid__WEBPACK_IMPORTED_MODULE_4__.K.mermaidAPI.getDiagramFromText((0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.encodeEntities)(definition));\n // Render the SVG diagram\n const { svg } = await mermaid__WEBPACK_IMPORTED_MODULE_4__.K.render(\"mermaid-to-excalidraw\", definition);\n // Append Svg to DOM\n const svgContainer = document.createElement(\"div\");\n svgContainer.setAttribute(\"style\", `opacity: 0; position: relative; z-index: -1;`);\n svgContainer.innerHTML = svg;\n svgContainer.id = \"mermaid-diagram\";\n document.body.appendChild(svgContainer);\n let data;\n switch (diagram.type) {\n case \"flowchart-v2\": {\n data = (0,_parser_flowchart_js__WEBPACK_IMPORTED_MODULE_2__.parseMermaidFlowChartDiagram)(diagram, svgContainer);\n break;\n }\n case \"sequence\": {\n data = (0,_parser_sequence_js__WEBPACK_IMPORTED_MODULE_3__.parseMermaidSequenceDiagram)(diagram, svgContainer);\n break;\n }\n // fallback to image if diagram type not-supported\n default: {\n data = convertSvgToGraphImage(svgContainer);\n }\n }\n svgContainer.remove();\n return data;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlTWVybWFpZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBOEI7QUFDcUI7QUFDUDtBQUN5QjtBQUNGO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxNQUFNO0FBQ3pDLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFNBQVMsT0FBTztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLElBQUksaURBQWtCO0FBQ3RCO0FBQ0EscUJBQXFCLGlCQUFpQjtBQUN0QztBQUNBLHlCQUF5Qiw0REFBaUIsUUFBUTtBQUNsRCxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsMEJBQTBCLG9FQUFxQyxDQUFDLHlEQUFjO0FBQzlFO0FBQ0EsWUFBWSxNQUFNLFFBQVEsNkNBQWM7QUFDeEM7QUFDQTtBQUNBLG9EQUFvRCxvQkFBb0IsWUFBWTtBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0ZBQTRCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnRkFBMkI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlTWVybWFpZC5qcz9hNWQ4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJtYWlkIGZyb20gXCJtZXJtYWlkXCI7XG5pbXBvcnQgeyBERUZBVUxUX0ZPTlRfU0laRSB9IGZyb20gXCIuL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgZW5jb2RlRW50aXRpZXMgfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VNZXJtYWlkRmxvd0NoYXJ0RGlhZ3JhbSB9IGZyb20gXCIuL3BhcnNlci9mbG93Y2hhcnQuanNcIjtcbmltcG9ydCB7IHBhcnNlTWVybWFpZFNlcXVlbmNlRGlhZ3JhbSB9IGZyb20gXCIuL3BhcnNlci9zZXF1ZW5jZS5qc1wiO1xuLy8gRmFsbGJhY2sgdG8gU3ZnXG5jb25zdCBjb252ZXJ0U3ZnVG9HcmFwaEltYWdlID0gKHN2Z0NvbnRhaW5lcikgPT4ge1xuICAgIC8vIEV4dHJhY3QgU1ZHIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAvLyBUT0RPOiBtYWtlIHdpZHRoIGFuZCBoZWlnaHQgY2hhbmdlIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHVzZXIncyBzY3JlZW4gZGltZW5zaW9uXG4gICAgY29uc3Qgc3ZnRWwgPSBzdmdDb250YWluZXIucXVlcnlTZWxlY3RvcihcInN2Z1wiKTtcbiAgICBpZiAoIXN2Z0VsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNWRyBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IHN2Z0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHdpZHRoID0gcmVjdC53aWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICAvLyBTZXQgd2lkdGggYW5kIGhlaWdodCBleHBsaWN0bHkgc2luY2UgaW4gZmlyZWZveCBpdCBnZXRzIHNldCB0byAwXG4gICAgLy8gaWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIG5vdCBleHBpbGNpdGx5IHNldFxuICAgIC8vIGVnIGluIHNvbWUgY2FzZXMgbGlrZSBlciBEaWFncmFtLCBnbmF0dCwgd2lkdGggYW5kIGhlaWdodCBpcyBzZXQgYXMgMTAwJVxuICAgIC8vIHdoaWNoIHNldHMgdGhlIGRpbWVuc2lvbnMgYXMgMCBpbiBmaXJlZm94IGFuZCB0aHVzIHRoZSBkaWFncmFtIGlzbid0IHJlbmRlcmVkXG4gICAgc3ZnRWwuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9YCk7XG4gICAgc3ZnRWwuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICAvLyBDb252ZXJ0IFNWRyB0byBpbWFnZVxuICAgIGNvbnN0IG1pbWVUeXBlID0gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgY29uc3QgZGVjb2RlZCA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdmdFbC5vdXRlckhUTUwpKTtcbiAgICBjb25zdCBiYXNlNjQgPSBidG9hKGRlY29kZWQpO1xuICAgIGNvbnN0IGRhdGFVUkwgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke2Jhc2U2NH1gO1xuICAgIGNvbnN0IGdyYXBoSW1hZ2UgPSB7XG4gICAgICAgIHR5cGU6IFwiZ3JhcGhJbWFnZVwiLFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgZGF0YVVSTCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICB9O1xuICAgIHJldHVybiBncmFwaEltYWdlO1xufTtcbmV4cG9ydCBjb25zdCBwYXJzZU1lcm1haWQgPSBhc3luYyAoZGVmaW5pdGlvbikgPT4ge1xuICAgIG1lcm1haWQuaW5pdGlhbGl6ZSh7XG4gICAgICAgIHN0YXJ0T25Mb2FkOiBmYWxzZSxcbiAgICAgICAgZmxvd2NoYXJ0OiB7IGN1cnZlOiBcImxpbmVhclwiIH0sXG4gICAgICAgIHRoZW1lVmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmb250U2l6ZTogYCR7REVGQVVMVF9GT05UX1NJWkUgKiAxLjI1fXB4YCxcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBQYXJzZSB0aGUgZGlhZ3JhbVxuICAgIGNvbnN0IGRpYWdyYW0gPSBhd2FpdCBtZXJtYWlkLm1lcm1haWRBUEkuZ2V0RGlhZ3JhbUZyb21UZXh0KGVuY29kZUVudGl0aWVzKGRlZmluaXRpb24pKTtcbiAgICAvLyBSZW5kZXIgdGhlIFNWRyBkaWFncmFtXG4gICAgY29uc3QgeyBzdmcgfSA9IGF3YWl0IG1lcm1haWQucmVuZGVyKFwibWVybWFpZC10by1leGNhbGlkcmF3XCIsIGRlZmluaXRpb24pO1xuICAgIC8vIEFwcGVuZCBTdmcgdG8gRE9NXG4gICAgY29uc3Qgc3ZnQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBzdmdDb250YWluZXIuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgYG9wYWNpdHk6IDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogLTE7YCk7XG4gICAgc3ZnQ29udGFpbmVyLmlubmVySFRNTCA9IHN2ZztcbiAgICBzdmdDb250YWluZXIuaWQgPSBcIm1lcm1haWQtZGlhZ3JhbVwiO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3ZnQ29udGFpbmVyKTtcbiAgICBsZXQgZGF0YTtcbiAgICBzd2l0Y2ggKGRpYWdyYW0udHlwZSkge1xuICAgICAgICBjYXNlIFwiZmxvd2NoYXJ0LXYyXCI6IHtcbiAgICAgICAgICAgIGRhdGEgPSBwYXJzZU1lcm1haWRGbG93Q2hhcnREaWFncmFtKGRpYWdyYW0sIHN2Z0NvbnRhaW5lcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2VxdWVuY2VcIjoge1xuICAgICAgICAgICAgZGF0YSA9IHBhcnNlTWVybWFpZFNlcXVlbmNlRGlhZ3JhbShkaWFncmFtLCBzdmdDb250YWluZXIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gaW1hZ2UgaWYgZGlhZ3JhbSB0eXBlIG5vdC1zdXBwb3J0ZWRcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZGF0YSA9IGNvbnZlcnRTdmdUb0dyYXBoSW1hZ2Uoc3ZnQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdmdDb250YWluZXIucmVtb3ZlKCk7XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parseMermaid.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js": +/*!****************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js ***! + \****************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidFlowChartDiagram\": () => (/* binding */ parseMermaidFlowChartDiagram)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n\nconst parseSubGraph = (data, containerEl) => {\n // Extract only node id for better reference\n // e.g. full element id = \"flowchart-c1-205\" will map to \"c1\"\n const nodeIds = data.nodes.map((n) => {\n if (n.startsWith(\"flowchart-\")) {\n return n.split(\"-\")[1];\n }\n return n;\n });\n // Get position\n const el = containerEl.querySelector(`[id='${data.id}']`);\n if (!el) {\n throw new Error(\"SubGraph element not found\");\n }\n const position = computeElementPosition(el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Remove irrelevant properties\n data.classes = undefined;\n data.dir = undefined;\n return {\n ...data,\n nodeIds,\n ...position,\n ...dimension,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.title),\n };\n};\nconst parseVertex = (data, containerEl) => {\n // Find Vertex element\n const el = containerEl.querySelector(`[id*=\"flowchart-${data.id}-\"]`);\n if (!el) {\n return undefined;\n }\n // Check if Vertex attached with link\n let link;\n if (el.parentElement?.tagName.toLowerCase() === \"a\") {\n link = el.parentElement.getAttribute(\"xlink:href\");\n }\n // Get position\n const position = computeElementPosition(link ? el.parentElement : el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Extract style\n const labelContainerStyleText = el\n .querySelector(\".label-container\")\n ?.getAttribute(\"style\");\n const labelStyleText = el.querySelector(\".label\")?.getAttribute(\"style\");\n const containerStyle = {};\n labelContainerStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n containerStyle[key] = value;\n });\n const labelStyle = {};\n labelStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n labelStyle[key] = value;\n });\n return {\n id: data.id,\n labelType: data.labelType,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n type: data.type,\n link: link || undefined,\n ...position,\n ...dimension,\n containerStyle,\n labelStyle,\n };\n};\nconst parseEdge = (data, containerEl) => {\n // Find edge element\n const el = containerEl.querySelector(`[id*=\"L-${data.start}-${data.end}\"]`);\n if (!el) {\n throw new Error(\"Edge element not found\");\n }\n // Compute edge position data\n const position = computeElementPosition(el, containerEl);\n const edgePositionData = computeEdgePositions(el, position);\n // Remove irrelevant properties\n data.length = undefined;\n return {\n ...data,\n ...edgePositionData,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n };\n};\n// Compute element position\nconst computeElementPosition = (el, containerEl) => {\n if (!el) {\n throw new Error(\"Element not found\");\n }\n let root = el.parentElement?.parentElement;\n const childElement = el.childNodes[0];\n let childPosition = { x: 0, y: 0 };\n if (childElement) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(childElement);\n const boundingBox = childElement.getBBox();\n childPosition = {\n x: Number(childElement.getAttribute(\"x\")) ||\n transformX + boundingBox.x ||\n 0,\n y: Number(childElement.getAttribute(\"y\")) ||\n transformY + boundingBox.y ||\n 0,\n };\n }\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(el);\n const position = {\n x: transformX + childPosition.x,\n y: transformY + childPosition.y,\n };\n while (root && root.id !== containerEl.id) {\n if (root.classList.value === \"root\" && root.hasAttribute(\"transform\")) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(root);\n position.x += transformX;\n position.y += transformY;\n }\n root = root.parentElement;\n }\n return position;\n};\nconst computeEdgePositions = (pathElement, offset = { x: 0, y: 0 }) => {\n if (pathElement.tagName.toLowerCase() !== \"path\") {\n throw new Error(`Invalid input: Expected an HTMLElement of tag \"path\", got ${pathElement.tagName}`);\n }\n const dAttr = pathElement.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and L (Line To) commands\n const commands = dAttr.split(/(?=[LM])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const endPosition = commands[commands.length - 1]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const reflectionPoints = commands\n .map((command) => {\n const coords = command\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n return { x: coords[0], y: coords[1] };\n })\n .filter((point, index, array) => {\n if (index === array.length - 1) {\n return true;\n }\n const prevPoint = array[index - 1];\n return (index === 0 || (point.x !== prevPoint.x && point.y !== prevPoint.y));\n })\n .map((p) => {\n return {\n x: p.x + offset.x,\n y: p.y + offset.y,\n };\n });\n return {\n startX: startPosition[0] + offset.x,\n startY: startPosition[1] + offset.y,\n endX: endPosition[0] + offset.x,\n endY: endPosition[1] + offset.y,\n reflectionPoints,\n };\n};\nconst parseMermaidFlowChartDiagram = (diagram, containerEl) => {\n // This does some cleanup and initialization making sure\n // diagram is parsed correctly. Useful when multiple diagrams are\n // parsed together one after another, eg in playground\n // https://github.com/mermaid-js/mermaid/blob/e561cbd3be2a93b8bedfa4839484966faad92ccf/packages/mermaid/src/Diagram.ts#L43\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const vertices = mermaidParser.getVertices();\n Object.keys(vertices).forEach((id) => {\n vertices[id] = parseVertex(vertices[id], containerEl);\n });\n const edges = mermaidParser\n .getEdges()\n .map((data) => parseEdge(data, containerEl));\n const subGraphs = mermaidParser\n .getSubGraphs()\n .map((data) => parseSubGraph(data, containerEl));\n return {\n type: \"flowchart\",\n subGraphs,\n vertices,\n edges,\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9mbG93Y2hhcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0U7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlEQUFpRCxRQUFRO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQWlCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFFBQVE7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxXQUFXLEdBQUcsU0FBUztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw0REFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0EsZ0JBQWdCLHlCQUF5QixFQUFFLDJEQUFnQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUJBQXlCLEVBQUUsMkRBQWdCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5QkFBeUIsRUFBRSwyREFBZ0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsWUFBWTtBQUNsRTtBQUNBLHFGQUFxRixvQkFBb0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvcGFyc2VyL2Zsb3djaGFydC5qcz8wYTk5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVudGl0eUNvZGVzVG9UZXh0LCBnZXRUcmFuc2Zvcm1BdHRyIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5jb25zdCBwYXJzZVN1YkdyYXBoID0gKGRhdGEsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgLy8gRXh0cmFjdCBvbmx5IG5vZGUgaWQgZm9yIGJldHRlciByZWZlcmVuY2VcbiAgICAvLyBlLmcuIGZ1bGwgZWxlbWVudCBpZCA9IFwiZmxvd2NoYXJ0LWMxLTIwNVwiIHdpbGwgbWFwIHRvIFwiYzFcIlxuICAgIGNvbnN0IG5vZGVJZHMgPSBkYXRhLm5vZGVzLm1hcCgobikgPT4ge1xuICAgICAgICBpZiAobi5zdGFydHNXaXRoKFwiZmxvd2NoYXJ0LVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG4uc3BsaXQoXCItXCIpWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgIH0pO1xuICAgIC8vIEdldCBwb3NpdGlvblxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkPScke2RhdGEuaWR9J11gKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlN1YkdyYXBoIGVsZW1lbnQgbm90IGZvdW5kXCIpO1xuICAgIH1cbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvbXB1dGVFbGVtZW50UG9zaXRpb24oZWwsIGNvbnRhaW5lckVsKTtcbiAgICAvLyBHZXQgZGltZW5zaW9uXG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSBlbC5nZXRCQm94KCk7XG4gICAgY29uc3QgZGltZW5zaW9uID0ge1xuICAgICAgICB3aWR0aDogYm91bmRpbmdCb3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogYm91bmRpbmdCb3guaGVpZ2h0LFxuICAgIH07XG4gICAgLy8gUmVtb3ZlIGlycmVsZXZhbnQgcHJvcGVydGllc1xuICAgIGRhdGEuY2xhc3NlcyA9IHVuZGVmaW5lZDtcbiAgICBkYXRhLmRpciA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBub2RlSWRzLFxuICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgLi4uZGltZW5zaW9uLFxuICAgICAgICB0ZXh0OiBlbnRpdHlDb2Rlc1RvVGV4dChkYXRhLnRpdGxlKSxcbiAgICB9O1xufTtcbmNvbnN0IHBhcnNlVmVydGV4ID0gKGRhdGEsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgLy8gRmluZCBWZXJ0ZXggZWxlbWVudFxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkKj1cImZsb3djaGFydC0ke2RhdGEuaWR9LVwiXWApO1xuICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgVmVydGV4IGF0dGFjaGVkIHdpdGggbGlua1xuICAgIGxldCBsaW5rO1xuICAgIGlmIChlbC5wYXJlbnRFbGVtZW50Py50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYVwiKSB7XG4gICAgICAgIGxpbmsgPSBlbC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcInhsaW5rOmhyZWZcIik7XG4gICAgfVxuICAgIC8vIEdldCBwb3NpdGlvblxuICAgIGNvbnN0IHBvc2l0aW9uID0gY29tcHV0ZUVsZW1lbnRQb3NpdGlvbihsaW5rID8gZWwucGFyZW50RWxlbWVudCA6IGVsLCBjb250YWluZXJFbCk7XG4gICAgLy8gR2V0IGRpbWVuc2lvblxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gZWwuZ2V0QkJveCgpO1xuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHtcbiAgICAgICAgd2lkdGg6IGJvdW5kaW5nQm94LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGJvdW5kaW5nQm94LmhlaWdodCxcbiAgICB9O1xuICAgIC8vIEV4dHJhY3Qgc3R5bGVcbiAgICBjb25zdCBsYWJlbENvbnRhaW5lclN0eWxlVGV4dCA9IGVsXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLmxhYmVsLWNvbnRhaW5lclwiKVxuICAgICAgICA/LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIGNvbnN0IGxhYmVsU3R5bGVUZXh0ID0gZWwucXVlcnlTZWxlY3RvcihcIi5sYWJlbFwiKT8uZ2V0QXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgY29uc3QgY29udGFpbmVyU3R5bGUgPSB7fTtcbiAgICBsYWJlbENvbnRhaW5lclN0eWxlVGV4dD8uc3BsaXQoXCI7XCIpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBwcm9wZXJ0eS5zcGxpdChcIjpcIilbMF0udHJpbSgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnR5LnNwbGl0KFwiOlwiKVsxXS50cmltKCk7XG4gICAgICAgIGNvbnRhaW5lclN0eWxlW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBsYWJlbFN0eWxlID0ge307XG4gICAgbGFiZWxTdHlsZVRleHQ/LnNwbGl0KFwiO1wiKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gcHJvcGVydHkuc3BsaXQoXCI6XCIpWzBdLnRyaW0oKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wZXJ0eS5zcGxpdChcIjpcIilbMV0udHJpbSgpO1xuICAgICAgICBsYWJlbFN0eWxlW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZGF0YS5pZCxcbiAgICAgICAgbGFiZWxUeXBlOiBkYXRhLmxhYmVsVHlwZSxcbiAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQoZGF0YS50ZXh0KSxcbiAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICBsaW5rOiBsaW5rIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgLi4ucG9zaXRpb24sXG4gICAgICAgIC4uLmRpbWVuc2lvbixcbiAgICAgICAgY29udGFpbmVyU3R5bGUsXG4gICAgICAgIGxhYmVsU3R5bGUsXG4gICAgfTtcbn07XG5jb25zdCBwYXJzZUVkZ2UgPSAoZGF0YSwgY29udGFpbmVyRWwpID0+IHtcbiAgICAvLyBGaW5kIGVkZ2UgZWxlbWVudFxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkKj1cIkwtJHtkYXRhLnN0YXJ0fS0ke2RhdGEuZW5kfVwiXWApO1xuICAgIGlmICghZWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRWRnZSBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgLy8gQ29tcHV0ZSBlZGdlIHBvc2l0aW9uIGRhdGFcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvbXB1dGVFbGVtZW50UG9zaXRpb24oZWwsIGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBlZGdlUG9zaXRpb25EYXRhID0gY29tcHV0ZUVkZ2VQb3NpdGlvbnMoZWwsIHBvc2l0aW9uKTtcbiAgICAvLyBSZW1vdmUgaXJyZWxldmFudCBwcm9wZXJ0aWVzXG4gICAgZGF0YS5sZW5ndGggPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4uZWRnZVBvc2l0aW9uRGF0YSxcbiAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQoZGF0YS50ZXh0KSxcbiAgICB9O1xufTtcbi8vIENvbXB1dGUgZWxlbWVudCBwb3NpdGlvblxuY29uc3QgY29tcHV0ZUVsZW1lbnRQb3NpdGlvbiA9IChlbCwgY29udGFpbmVyRWwpID0+IHtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpO1xuICAgIH1cbiAgICBsZXQgcm9vdCA9IGVsLnBhcmVudEVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY2hpbGRFbGVtZW50ID0gZWwuY2hpbGROb2Rlc1swXTtcbiAgICBsZXQgY2hpbGRQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xuICAgIGlmIChjaGlsZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKGNoaWxkRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gY2hpbGRFbGVtZW50LmdldEJCb3goKTtcbiAgICAgICAgY2hpbGRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIHg6IE51bWJlcihjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwieFwiKSkgfHxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1YICsgYm91bmRpbmdCb3gueCB8fFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB5OiBOdW1iZXIoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZShcInlcIikpIHx8XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtWSArIGJvdW5kaW5nQm94LnkgfHxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IHRyYW5zZm9ybVgsIHRyYW5zZm9ybVkgfSA9IGdldFRyYW5zZm9ybUF0dHIoZWwpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0ge1xuICAgICAgICB4OiB0cmFuc2Zvcm1YICsgY2hpbGRQb3NpdGlvbi54LFxuICAgICAgICB5OiB0cmFuc2Zvcm1ZICsgY2hpbGRQb3NpdGlvbi55LFxuICAgIH07XG4gICAgd2hpbGUgKHJvb3QgJiYgcm9vdC5pZCAhPT0gY29udGFpbmVyRWwuaWQpIHtcbiAgICAgICAgaWYgKHJvb3QuY2xhc3NMaXN0LnZhbHVlID09PSBcInJvb3RcIiAmJiByb290Lmhhc0F0dHJpYnV0ZShcInRyYW5zZm9ybVwiKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKHJvb3QpO1xuICAgICAgICAgICAgcG9zaXRpb24ueCArPSB0cmFuc2Zvcm1YO1xuICAgICAgICAgICAgcG9zaXRpb24ueSArPSB0cmFuc2Zvcm1ZO1xuICAgICAgICB9XG4gICAgICAgIHJvb3QgPSByb290LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbn07XG5jb25zdCBjb21wdXRlRWRnZVBvc2l0aW9ucyA9IChwYXRoRWxlbWVudCwgb2Zmc2V0ID0geyB4OiAwLCB5OiAwIH0pID0+IHtcbiAgICBpZiAocGF0aEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcInBhdGhcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQ6IEV4cGVjdGVkIGFuIEhUTUxFbGVtZW50IG9mIHRhZyBcInBhdGhcIiwgZ290ICR7cGF0aEVsZW1lbnQudGFnTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZEF0dHIgPSBwYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkXCIpO1xuICAgIGlmICghZEF0dHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBhIFwiZFwiIGF0dHJpYnV0ZScpO1xuICAgIH1cbiAgICAvLyBTcGxpdCB0aGUgZCBhdHRyaWJ1dGUgYmFzZWQgb24gTSAoTW92ZSBUbykgYW5kIEwgKExpbmUgVG8pIGNvbW1hbmRzXG4gICAgY29uc3QgY29tbWFuZHMgPSBkQXR0ci5zcGxpdCgvKD89W0xNXSkvKTtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gY29tbWFuZHNbMF1cbiAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGNvb3JkKSA9PiBwYXJzZUZsb2F0KGNvb3JkKSk7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBjb21tYW5kc1tjb21tYW5kcy5sZW5ndGggLSAxXVxuICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoY29vcmQpID0+IHBhcnNlRmxvYXQoY29vcmQpKTtcbiAgICBjb25zdCByZWZsZWN0aW9uUG9pbnRzID0gY29tbWFuZHNcbiAgICAgICAgLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICBjb25zdCBjb29yZHMgPSBjb21tYW5kXG4gICAgICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgICAgICAubWFwKChjb29yZCkgPT4gcGFyc2VGbG9hdChjb29yZCkpO1xuICAgICAgICByZXR1cm4geyB4OiBjb29yZHNbMF0sIHk6IGNvb3Jkc1sxXSB9O1xuICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHBvaW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2UG9pbnQgPSBhcnJheVtpbmRleCAtIDFdO1xuICAgICAgICByZXR1cm4gKGluZGV4ID09PSAwIHx8IChwb2ludC54ICE9PSBwcmV2UG9pbnQueCAmJiBwb2ludC55ICE9PSBwcmV2UG9pbnQueSkpO1xuICAgIH0pXG4gICAgICAgIC5tYXAoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHAueCArIG9mZnNldC54LFxuICAgICAgICAgICAgeTogcC55ICsgb2Zmc2V0LnksXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRYOiBzdGFydFBvc2l0aW9uWzBdICsgb2Zmc2V0LngsXG4gICAgICAgIHN0YXJ0WTogc3RhcnRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICBlbmRYOiBlbmRQb3NpdGlvblswXSArIG9mZnNldC54LFxuICAgICAgICBlbmRZOiBlbmRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICByZWZsZWN0aW9uUG9pbnRzLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlTWVybWFpZEZsb3dDaGFydERpYWdyYW0gPSAoZGlhZ3JhbSwgY29udGFpbmVyRWwpID0+IHtcbiAgICAvLyBUaGlzIGRvZXMgc29tZSBjbGVhbnVwIGFuZCBpbml0aWFsaXphdGlvbiBtYWtpbmcgc3VyZVxuICAgIC8vIGRpYWdyYW0gaXMgcGFyc2VkIGNvcnJlY3RseS4gVXNlZnVsIHdoZW4gbXVsdGlwbGUgZGlhZ3JhbXMgYXJlXG4gICAgLy8gcGFyc2VkIHRvZ2V0aGVyIG9uZSBhZnRlciBhbm90aGVyLCBlZyBpbiBwbGF5Z3JvdW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZC9ibG9iL2U1NjFjYmQzYmUyYTkzYjhiZWRmYTQ4Mzk0ODQ5NjZmYWFkOTJjY2YvcGFja2FnZXMvbWVybWFpZC9zcmMvRGlhZ3JhbS50cyNMNDNcbiAgICBkaWFncmFtLnBhcnNlKCk7XG4gICAgLy8gR2V0IG1lcm1haWQgcGFyc2VkIGRhdGEgZnJvbSBwYXJzZXIgc2hhcmVkIHZhcmlhYmxlIGB5eWBcbiAgICBjb25zdCBtZXJtYWlkUGFyc2VyID0gZGlhZ3JhbS5wYXJzZXIueXk7XG4gICAgY29uc3QgdmVydGljZXMgPSBtZXJtYWlkUGFyc2VyLmdldFZlcnRpY2VzKCk7XG4gICAgT2JqZWN0LmtleXModmVydGljZXMpLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIHZlcnRpY2VzW2lkXSA9IHBhcnNlVmVydGV4KHZlcnRpY2VzW2lkXSwgY29udGFpbmVyRWwpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkZ2VzID0gbWVybWFpZFBhcnNlclxuICAgICAgICAuZ2V0RWRnZXMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZUVkZ2UoZGF0YSwgY29udGFpbmVyRWwpKTtcbiAgICBjb25zdCBzdWJHcmFwaHMgPSBtZXJtYWlkUGFyc2VyXG4gICAgICAgIC5nZXRTdWJHcmFwaHMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZVN1YkdyYXBoKGRhdGEsIGNvbnRhaW5lckVsKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJmbG93Y2hhcnRcIixcbiAgICAgICAgc3ViR3JhcGhzLFxuICAgICAgICB2ZXJ0aWNlcyxcbiAgICAgICAgZWRnZXMsXG4gICAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js": +/*!***************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js ***! + \***************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidSequenceDiagram\": () => (/* binding */ parseMermaidSequenceDiagram)\n/* harmony export */ });\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n\n\n\n// Currently mermaid supported these 6 arrow types, the names are taken from mermaidParser.LINETYPE\nconst SEQUENCE_ARROW_TYPES = {\n 0: \"SOLID\",\n 1: \"DOTTED\",\n 3: \"SOLID_CROSS\",\n 4: \"DOTTED_CROSS\",\n 5: \"SOLID_OPEN\",\n 6: \"DOTTED_OPEN\",\n 24: \"SOLID_POINT\",\n 25: \"DOTTED_POINT\",\n};\nconst MESSAGE_TYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32,\n};\nconst createContainerElement = (node, type, opts = {}) => {\n const container = {};\n container.type = type;\n const { text, subtype, id, groupId } = opts;\n container.id = id;\n if (groupId) {\n container.groupId = groupId;\n }\n if (text) {\n container.label = {\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(text),\n fontSize: 16,\n };\n }\n const boundingBox = node.getBBox();\n container.x = boundingBox.x;\n container.y = boundingBox.y;\n container.width = boundingBox.width;\n container.height = boundingBox.height;\n container.subtype = subtype;\n switch (subtype) {\n case \"highlight\":\n const bgColor = node.getAttribute(\"fill\");\n if (bgColor) {\n container.bgColor = bgColor;\n }\n break;\n case \"note\":\n container.strokeStyle = \"dashed\";\n break;\n }\n return container;\n};\nconst createTextElement = (textNode, text, opts) => {\n const node = {};\n const x = Number(textNode.getAttribute(\"x\"));\n const y = Number(textNode.getAttribute(\"y\"));\n node.type = \"text\";\n node.text = (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(text);\n if (opts?.id) {\n node.id = opts.id;\n }\n if (opts?.groupId) {\n node.groupId = opts.groupId;\n }\n const boundingBox = textNode.getBBox();\n node.width = boundingBox.width;\n node.height = boundingBox.height;\n node.x = x - boundingBox.width / 2;\n node.y = y;\n const fontSize = parseInt(getComputedStyle(textNode).fontSize);\n node.fontSize = fontSize;\n return node;\n};\nconst createLineElement = (lineNode, startX, startY, endX, endY, opts) => {\n const line = {};\n line.startX = startX;\n line.startY = startY;\n line.endX = endX;\n if (opts?.groupId) {\n line.groupId = opts.groupId;\n }\n if (opts?.id) {\n line.id = opts.id;\n }\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n line.endY = endY;\n line.strokeColor = lineNode.getAttribute(\"stroke\");\n line.strokeWidth = Number(lineNode.getAttribute(\"stroke-width\"));\n line.type = \"line\";\n return line;\n};\nconst createArrowElement = (arrowNode, message) => {\n const arrow = {};\n arrow.label = { text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(message.message), fontSize: 16 };\n const tagName = arrowNode.tagName;\n if (tagName === \"line\") {\n arrow.startX = Number(arrowNode.getAttribute(\"x1\"));\n arrow.startY = Number(arrowNode.getAttribute(\"y1\"));\n arrow.endX = Number(arrowNode.getAttribute(\"x2\"));\n arrow.endY = Number(arrowNode.getAttribute(\"y2\"));\n }\n else if (tagName === \"path\") {\n const dAttr = arrowNode.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and C (Curve) commands\n const commands = dAttr.split(/(?=[LC])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const points = [];\n commands.forEach((command) => {\n const currPoints = command\n .substring(1)\n .trim()\n .split(\" \")\n .map((pos) => {\n const [x, y] = pos.split(\",\");\n return [\n parseFloat(x) - startPosition[0],\n parseFloat(y) - startPosition[1],\n ];\n });\n points.push(...currPoints);\n });\n const endPosition = points[points.length - 1];\n arrow.startX = startPosition[0];\n arrow.startY = startPosition[1];\n arrow.endX = endPosition[0];\n arrow.endY = endPosition[1];\n arrow.points = points;\n }\n if (message) {\n // In mermaid the text is positioned above arrow but in Excalidraw\n // its postioned on the arrow hence the elements below it might look cluttered so shifting the arrow by an offset of 10px\n const offset = 10;\n arrow.startY = arrow.startY - offset;\n arrow.endY = arrow.endY - offset;\n }\n const showSequenceNumber = !!arrowNode.nextElementSibling?.classList.contains(\"sequenceNumber\");\n if (showSequenceNumber) {\n const text = arrowNode.nextElementSibling?.textContent;\n if (!text) {\n throw new Error(\"sequence number not present\");\n }\n const height = 30;\n const yOffset = height / 2;\n const xOffset = 10;\n const sequenceNumber = {\n type: \"rectangle\",\n x: arrow.startX - xOffset,\n y: arrow.startY - yOffset,\n label: { text, fontSize: 14 },\n bgColor: \"#e9ecef\",\n height,\n subtype: \"sequence\",\n };\n arrow.sequenceNumber = sequenceNumber;\n }\n arrow.strokeColor = arrowNode.getAttribute(\"stroke\");\n arrow.strokeWidth = Number(arrowNode.getAttribute(\"stroke-width\"));\n arrow.type = \"arrow\";\n arrow.strokeStyle = SEQUENCE_ARROW_TYPES[message.type];\n return arrow;\n};\nconst createActorSymbol = (rootNode, text, opts) => {\n if (!rootNode) {\n throw \"root node not found\";\n }\n const groupId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const children = Array.from(rootNode.children);\n const nodeElements = [];\n children.forEach((child, index) => {\n const id = `${opts?.id}-${index}`;\n let ele;\n switch (child.tagName) {\n case \"line\":\n const startX = Number(child.getAttribute(\"x1\"));\n const startY = Number(child.getAttribute(\"y1\"));\n const endX = Number(child.getAttribute(\"x2\"));\n const endY = Number(child.getAttribute(\"y2\"));\n ele = createLineElement(child, startX, startY, endX, endY, { groupId, id });\n break;\n case \"text\":\n ele = createTextElement(child, text, { groupId, id });\n break;\n case \"circle\":\n ele = createContainerElement(child, \"ellipse\", {\n text: child.textContent || undefined,\n groupId,\n id,\n });\n default:\n ele = createContainerElement(child, _constants_js__WEBPACK_IMPORTED_MODULE_0__.SVG_TO_SHAPE_MAPPER[child.tagName], { text: child.textContent || undefined, groupId, id });\n }\n nodeElements.push(ele);\n });\n return nodeElements;\n};\nconst parseActor = (actors, containerEl) => {\n const actorRootNodes = Array.from(containerEl.querySelectorAll(\".actor\"))\n .filter((node) => node.tagName === \"text\")\n .map((actor) => actor.tagName === \"text\" && actor.parentElement);\n const nodes = [];\n const lines = [];\n const actorsLength = Object.keys(actors).length;\n Object.values(actors).forEach((actor, index) => {\n //@ts-ignore\n // For each actor there are two nodes top and bottom which is connected by a line\n const topRootNode = actorRootNodes[index];\n //@ts-ignore\n const bottomRootNode = actorRootNodes[actorsLength + index];\n if (!topRootNode) {\n throw \"root not found\";\n }\n const text = actor.description;\n if (actor.type === \"participant\") {\n // creating top actor node element\n const topNodeElement = createContainerElement(topRootNode.firstChild, \"rectangle\", { id: `${actor.name}-top`, text, subtype: \"actor\" });\n if (!topNodeElement) {\n throw \"Top Node element not found!\";\n }\n nodes.push([topNodeElement]);\n // creating bottom actor node element\n const bottomNodeElement = createContainerElement(bottomRootNode.firstChild, \"rectangle\", { id: `${actor.name}-bottom`, text, subtype: \"actor\" });\n nodes.push([bottomNodeElement]);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n if (!topNodeElement.height) {\n throw \"Top node element height is null\";\n }\n const startY = topNodeElement.y + topNodeElement.height;\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const endY = bottomNodeElement.y;\n const endX = Number(lineNode.getAttribute(\"x2\"));\n const line = createLineElement(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n else if (actor.type === \"actor\") {\n const topNodeElement = createActorSymbol(topRootNode, text, {\n id: `${actor.name}-top`,\n });\n nodes.push(topNodeElement);\n const bottomNodeElement = createActorSymbol(bottomRootNode, text, {\n id: `${actor.name}-bottom`,\n });\n nodes.push(bottomNodeElement);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n const startY = Number(lineNode.getAttribute(\"y1\"));\n const endX = Number(lineNode.getAttribute(\"x2\"));\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const bottomEllipseNode = bottomNodeElement.find((node) => node.type === \"ellipse\");\n if (bottomEllipseNode) {\n const endY = bottomEllipseNode.y;\n const line = createLineElement(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n }\n });\n return { nodes, lines };\n};\nconst computeArrows = (messages, containerEl) => {\n const arrows = [];\n const arrowNodes = Array.from(containerEl.querySelectorAll('[class*=\"messageLine\"]'));\n const supportedMessageTypes = Object.keys(SEQUENCE_ARROW_TYPES);\n const arrowMessages = messages.filter((message) => supportedMessageTypes.includes(message.type.toString()));\n arrowNodes.forEach((arrowNode, index) => {\n const message = arrowMessages[index];\n const arrow = createArrowElement(arrowNode, message);\n arrows.push(arrow);\n });\n return arrows;\n};\nconst computeNotes = (messages, containerEl) => {\n const noteNodes = Array.from(containerEl.querySelectorAll(\".note\")).map((node) => node.parentElement);\n const noteText = messages.filter((message) => message.type === MESSAGE_TYPE.NOTE);\n const notes = [];\n noteNodes.forEach((node, index) => {\n if (!node) {\n return;\n }\n const rect = node.firstChild;\n const text = noteText[index].message;\n const note = createContainerElement(rect, \"rectangle\", {\n text,\n subtype: \"note\",\n });\n notes.push(note);\n });\n return notes;\n};\nconst parseActivations = (containerEl) => {\n const activationNodes = Array.from(containerEl.querySelectorAll(`[class*=activation]`));\n const activations = [];\n activationNodes.forEach((node) => {\n const rect = createContainerElement(node, \"rectangle\", {\n text: \"\",\n subtype: \"activation\",\n });\n activations.push(rect);\n });\n return activations;\n};\nconst parseLoops = (messages, containerEl) => {\n const lineNodes = Array.from(containerEl.querySelectorAll(\".loopLine\"));\n const lines = [];\n const texts = [];\n const nodes = [];\n lineNodes.forEach((node) => {\n const startX = Number(node.getAttribute(\"x1\"));\n const startY = Number(node.getAttribute(\"y1\"));\n const endX = Number(node.getAttribute(\"x2\"));\n const endY = Number(node.getAttribute(\"y2\"));\n const line = createLineElement(node, startX, startY, endX, endY);\n line.strokeStyle = \"dotted\";\n line.strokeColor = \"#adb5bd\";\n line.strokeWidth = 2;\n lines.push(line);\n });\n const loopTextNodes = Array.from(containerEl.querySelectorAll(\".loopText\"));\n const criticalMessages = messages\n .filter((message) => message.type === MESSAGE_TYPE.CRITICAL_START)\n .map((message) => message.message);\n loopTextNodes.forEach((node) => {\n const text = node.textContent || \"\";\n const textElement = createTextElement(node, text);\n // The text is rendered between [ ] in DOM hence getting the text excluding the [ ]\n const rawText = text.match(/\\[(.*?)\\]/)?.[1] || \"\";\n const isCritical = criticalMessages.includes(rawText);\n // For critical label the coordinates are not accurate in mermaid as there is\n // no padding left hence shifting the text next to critical label by 16px (font size)\n if (isCritical) {\n textElement.x += 16;\n }\n texts.push(textElement);\n });\n const labelBoxes = Array.from(containerEl?.querySelectorAll(\".labelBox\"));\n const labelTextNode = Array.from(containerEl?.querySelectorAll(\".labelText\"));\n labelBoxes.forEach((labelBox, index) => {\n const labelText = labelTextNode[index]?.textContent || \"\";\n const container = createContainerElement(labelBox, \"rectangle\", {\n text: labelText,\n });\n container.strokeColor = \"#adb5bd\";\n container.bgColor = \"#e9ecef\";\n // So width is calculated based on label\n container.width = undefined;\n nodes.push(container);\n });\n return { lines, texts, nodes };\n};\nconst computeHighlights = (containerEl) => {\n const rects = Array.from(containerEl.querySelectorAll(\".rect\"))\n // Only drawing specifically for highlights as the same selector is for grouping as well. For grouping we\n // draw it ourselves\n .filter((node) => node.parentElement?.tagName !== \"g\");\n const nodes = [];\n rects.forEach((rect) => {\n const node = createContainerElement(rect, \"rectangle\", {\n text: \"\",\n subtype: \"highlight\",\n });\n nodes.push(node);\n });\n return nodes;\n};\nconst parseMermaidSequenceDiagram = (diagram, containerEl) => {\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const nodes = [];\n const groups = mermaidParser.getBoxes();\n const bgHightlights = computeHighlights(containerEl);\n const actorData = mermaidParser.getActors();\n const { nodes: actors, lines } = parseActor(actorData, containerEl);\n const messages = mermaidParser.getMessages();\n const arrows = computeArrows(messages, containerEl);\n const notes = computeNotes(messages, containerEl);\n const activations = parseActivations(containerEl);\n const loops = parseLoops(messages, containerEl);\n nodes.push(bgHightlights);\n nodes.push(...actors);\n nodes.push(notes);\n nodes.push(activations);\n return { type: \"sequence\", lines, arrows, nodes, loops, groups };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNEO0FBQ3RCO0FBQ2dCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxZQUFZLDZCQUE2QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNERBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBaUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNLDREQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG9CQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4Q0FBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsU0FBUyxHQUFHLE1BQU07QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkUsYUFBYTtBQUMxRjtBQUNBO0FBQ0EsdURBQXVELGFBQWE7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esb0RBQW9ELDhEQUFtQixtQkFBbUIsbURBQW1EO0FBQzdJO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUdBQWlHLE9BQU8sV0FBVywrQkFBK0I7QUFDbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVHQUF1RyxPQUFPLFdBQVcsa0NBQWtDO0FBQzNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFdBQVc7QUFDbEMsYUFBYTtBQUNiO0FBQ0E7QUFDQSx1QkFBdUIsV0FBVztBQUNsQyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZXIvc2VxdWVuY2UuanM/Mzg0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTVkdfVE9fU0hBUEVfTUFQUEVSIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgZW50aXR5Q29kZXNUb1RleHQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbi8vIEN1cnJlbnRseSBtZXJtYWlkIHN1cHBvcnRlZCB0aGVzZSA2IGFycm93IHR5cGVzLCB0aGUgbmFtZXMgYXJlIHRha2VuIGZyb20gbWVybWFpZFBhcnNlci5MSU5FVFlQRVxuY29uc3QgU0VRVUVOQ0VfQVJST1dfVFlQRVMgPSB7XG4gICAgMDogXCJTT0xJRFwiLFxuICAgIDE6IFwiRE9UVEVEXCIsXG4gICAgMzogXCJTT0xJRF9DUk9TU1wiLFxuICAgIDQ6IFwiRE9UVEVEX0NST1NTXCIsXG4gICAgNTogXCJTT0xJRF9PUEVOXCIsXG4gICAgNjogXCJET1RURURfT1BFTlwiLFxuICAgIDI0OiBcIlNPTElEX1BPSU5UXCIsXG4gICAgMjU6IFwiRE9UVEVEX1BPSU5UXCIsXG59O1xuY29uc3QgTUVTU0FHRV9UWVBFID0ge1xuICAgIFNPTElEOiAwLFxuICAgIERPVFRFRDogMSxcbiAgICBOT1RFOiAyLFxuICAgIFNPTElEX0NST1NTOiAzLFxuICAgIERPVFRFRF9DUk9TUzogNCxcbiAgICBTT0xJRF9PUEVOOiA1LFxuICAgIERPVFRFRF9PUEVOOiA2LFxuICAgIExPT1BfU1RBUlQ6IDEwLFxuICAgIExPT1BfRU5EOiAxMSxcbiAgICBBTFRfU1RBUlQ6IDEyLFxuICAgIEFMVF9FTFNFOiAxMyxcbiAgICBBTFRfRU5EOiAxNCxcbiAgICBPUFRfU1RBUlQ6IDE1LFxuICAgIE9QVF9FTkQ6IDE2LFxuICAgIEFDVElWRV9TVEFSVDogMTcsXG4gICAgQUNUSVZFX0VORDogMTgsXG4gICAgUEFSX1NUQVJUOiAxOSxcbiAgICBQQVJfQU5EOiAyMCxcbiAgICBQQVJfRU5EOiAyMSxcbiAgICBSRUNUX1NUQVJUOiAyMixcbiAgICBSRUNUX0VORDogMjMsXG4gICAgU09MSURfUE9JTlQ6IDI0LFxuICAgIERPVFRFRF9QT0lOVDogMjUsXG4gICAgQVVUT05VTUJFUjogMjYsXG4gICAgQ1JJVElDQUxfU1RBUlQ6IDI3LFxuICAgIENSSVRJQ0FMX09QVElPTjogMjgsXG4gICAgQ1JJVElDQUxfRU5EOiAyOSxcbiAgICBCUkVBS19TVEFSVDogMzAsXG4gICAgQlJFQUtfRU5EOiAzMSxcbiAgICBQQVJfT1ZFUl9TVEFSVDogMzIsXG59O1xuY29uc3QgY3JlYXRlQ29udGFpbmVyRWxlbWVudCA9IChub2RlLCB0eXBlLCBvcHRzID0ge30pID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSB7fTtcbiAgICBjb250YWluZXIudHlwZSA9IHR5cGU7XG4gICAgY29uc3QgeyB0ZXh0LCBzdWJ0eXBlLCBpZCwgZ3JvdXBJZCB9ID0gb3B0cztcbiAgICBjb250YWluZXIuaWQgPSBpZDtcbiAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgICBjb250YWluZXIuZ3JvdXBJZCA9IGdyb3VwSWQ7XG4gICAgfVxuICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGNvbnRhaW5lci5sYWJlbCA9IHtcbiAgICAgICAgICAgIHRleHQ6IGVudGl0eUNvZGVzVG9UZXh0KHRleHQpLFxuICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IG5vZGUuZ2V0QkJveCgpO1xuICAgIGNvbnRhaW5lci54ID0gYm91bmRpbmdCb3gueDtcbiAgICBjb250YWluZXIueSA9IGJvdW5kaW5nQm94Lnk7XG4gICAgY29udGFpbmVyLndpZHRoID0gYm91bmRpbmdCb3gud2lkdGg7XG4gICAgY29udGFpbmVyLmhlaWdodCA9IGJvdW5kaW5nQm94LmhlaWdodDtcbiAgICBjb250YWluZXIuc3VidHlwZSA9IHN1YnR5cGU7XG4gICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJoaWdobGlnaHRcIjpcbiAgICAgICAgICAgIGNvbnN0IGJnQ29sb3IgPSBub2RlLmdldEF0dHJpYnV0ZShcImZpbGxcIik7XG4gICAgICAgICAgICBpZiAoYmdDb2xvcikge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iZ0NvbG9yID0gYmdDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm90ZVwiOlxuICAgICAgICAgICAgY29udGFpbmVyLnN0cm9rZVN0eWxlID0gXCJkYXNoZWRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xufTtcbmNvbnN0IGNyZWF0ZVRleHRFbGVtZW50ID0gKHRleHROb2RlLCB0ZXh0LCBvcHRzKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IHt9O1xuICAgIGNvbnN0IHggPSBOdW1iZXIodGV4dE5vZGUuZ2V0QXR0cmlidXRlKFwieFwiKSk7XG4gICAgY29uc3QgeSA9IE51bWJlcih0ZXh0Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ5XCIpKTtcbiAgICBub2RlLnR5cGUgPSBcInRleHRcIjtcbiAgICBub2RlLnRleHQgPSBlbnRpdHlDb2Rlc1RvVGV4dCh0ZXh0KTtcbiAgICBpZiAob3B0cz8uaWQpIHtcbiAgICAgICAgbm9kZS5pZCA9IG9wdHMuaWQ7XG4gICAgfVxuICAgIGlmIChvcHRzPy5ncm91cElkKSB7XG4gICAgICAgIG5vZGUuZ3JvdXBJZCA9IG9wdHMuZ3JvdXBJZDtcbiAgICB9XG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSB0ZXh0Tm9kZS5nZXRCQm94KCk7XG4gICAgbm9kZS53aWR0aCA9IGJvdW5kaW5nQm94LndpZHRoO1xuICAgIG5vZGUuaGVpZ2h0ID0gYm91bmRpbmdCb3guaGVpZ2h0O1xuICAgIG5vZGUueCA9IHggLSBib3VuZGluZ0JveC53aWR0aCAvIDI7XG4gICAgbm9kZS55ID0geTtcbiAgICBjb25zdCBmb250U2l6ZSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUodGV4dE5vZGUpLmZvbnRTaXplKTtcbiAgICBub2RlLmZvbnRTaXplID0gZm9udFNpemU7XG4gICAgcmV0dXJuIG5vZGU7XG59O1xuY29uc3QgY3JlYXRlTGluZUVsZW1lbnQgPSAobGluZU5vZGUsIHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBvcHRzKSA9PiB7XG4gICAgY29uc3QgbGluZSA9IHt9O1xuICAgIGxpbmUuc3RhcnRYID0gc3RhcnRYO1xuICAgIGxpbmUuc3RhcnRZID0gc3RhcnRZO1xuICAgIGxpbmUuZW5kWCA9IGVuZFg7XG4gICAgaWYgKG9wdHM/Lmdyb3VwSWQpIHtcbiAgICAgICAgbGluZS5ncm91cElkID0gb3B0cy5ncm91cElkO1xuICAgIH1cbiAgICBpZiAob3B0cz8uaWQpIHtcbiAgICAgICAgbGluZS5pZCA9IG9wdHMuaWQ7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBsaW5lcyBkb24ndCBvdmVybGFwIHdpdGggdGhlIG5vZGVzLCBpbiBtZXJtYWlkIGl0IG92ZXJsYXBzIGJ1dCBpc24ndCB2aXNpYmxlIGFzIGl0cyBwdXNoZWQgYmFjayBhbmQgY29udGFpbmVycyBhcmUgbm9uIHRyYW5zcGFyZW50XG4gICAgbGluZS5lbmRZID0gZW5kWTtcbiAgICBsaW5lLnN0cm9rZUNvbG9yID0gbGluZU5vZGUuZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpO1xuICAgIGxpbmUuc3Ryb2tlV2lkdGggPSBOdW1iZXIobGluZU5vZGUuZ2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIpKTtcbiAgICBsaW5lLnR5cGUgPSBcImxpbmVcIjtcbiAgICByZXR1cm4gbGluZTtcbn07XG5jb25zdCBjcmVhdGVBcnJvd0VsZW1lbnQgPSAoYXJyb3dOb2RlLCBtZXNzYWdlKSA9PiB7XG4gICAgY29uc3QgYXJyb3cgPSB7fTtcbiAgICBhcnJvdy5sYWJlbCA9IHsgdGV4dDogZW50aXR5Q29kZXNUb1RleHQobWVzc2FnZS5tZXNzYWdlKSwgZm9udFNpemU6IDE2IH07XG4gICAgY29uc3QgdGFnTmFtZSA9IGFycm93Tm9kZS50YWdOYW1lO1xuICAgIGlmICh0YWdOYW1lID09PSBcImxpbmVcIikge1xuICAgICAgICBhcnJvdy5zdGFydFggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgYXJyb3cuc3RhcnRZID0gTnVtYmVyKGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgIGFycm93LmVuZFggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgYXJyb3cuZW5kWSA9IE51bWJlcihhcnJvd05vZGUuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0YWdOYW1lID09PSBcInBhdGhcIikge1xuICAgICAgICBjb25zdCBkQXR0ciA9IGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkXCIpO1xuICAgICAgICBpZiAoIWRBdHRyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhdGggZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGEgXCJkXCIgYXR0cmlidXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3BsaXQgdGhlIGQgYXR0cmlidXRlIGJhc2VkIG9uIE0gKE1vdmUgVG8pICBhbmQgQyAoQ3VydmUpIGNvbW1hbmRzXG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gZEF0dHIuc3BsaXQoLyg/PVtMQ10pLyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBjb21tYW5kc1swXVxuICAgICAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLm1hcCgoY29vcmQpID0+IHBhcnNlRmxvYXQoY29vcmQpKTtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgICAgIGNvbW1hbmRzLmZvckVhY2goKGNvbW1hbmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJQb2ludHMgPSBjb21tYW5kXG4gICAgICAgICAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAgICAgLm1hcCgocG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3gsIHldID0gcG9zLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHgpIC0gc3RhcnRQb3NpdGlvblswXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh5KSAtIHN0YXJ0UG9zaXRpb25bMV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goLi4uY3VyclBvaW50cyk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgIGFycm93LnN0YXJ0WCA9IHN0YXJ0UG9zaXRpb25bMF07XG4gICAgICAgIGFycm93LnN0YXJ0WSA9IHN0YXJ0UG9zaXRpb25bMV07XG4gICAgICAgIGFycm93LmVuZFggPSBlbmRQb3NpdGlvblswXTtcbiAgICAgICAgYXJyb3cuZW5kWSA9IGVuZFBvc2l0aW9uWzFdO1xuICAgICAgICBhcnJvdy5wb2ludHMgPSBwb2ludHM7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIC8vIEluIG1lcm1haWQgdGhlIHRleHQgaXMgcG9zaXRpb25lZCBhYm92ZSBhcnJvdyBidXQgaW4gRXhjYWxpZHJhd1xuICAgICAgICAvLyBpdHMgcG9zdGlvbmVkIG9uIHRoZSBhcnJvdyBoZW5jZSB0aGUgZWxlbWVudHMgYmVsb3cgaXQgbWlnaHQgbG9vayBjbHV0dGVyZWQgc28gc2hpZnRpbmcgdGhlIGFycm93IGJ5IGFuIG9mZnNldCBvZiAxMHB4XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDEwO1xuICAgICAgICBhcnJvdy5zdGFydFkgPSBhcnJvdy5zdGFydFkgLSBvZmZzZXQ7XG4gICAgICAgIGFycm93LmVuZFkgPSBhcnJvdy5lbmRZIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBjb25zdCBzaG93U2VxdWVuY2VOdW1iZXIgPSAhIWFycm93Tm9kZS5uZXh0RWxlbWVudFNpYmxpbmc/LmNsYXNzTGlzdC5jb250YWlucyhcInNlcXVlbmNlTnVtYmVyXCIpO1xuICAgIGlmIChzaG93U2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGFycm93Tm9kZS5uZXh0RWxlbWVudFNpYmxpbmc/LnRleHRDb250ZW50O1xuICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNlcXVlbmNlIG51bWJlciBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWlnaHQgPSAzMDtcbiAgICAgICAgY29uc3QgeU9mZnNldCA9IGhlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IHhPZmZzZXQgPSAxMDtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VOdW1iZXIgPSB7XG4gICAgICAgICAgICB0eXBlOiBcInJlY3RhbmdsZVwiLFxuICAgICAgICAgICAgeDogYXJyb3cuc3RhcnRYIC0geE9mZnNldCxcbiAgICAgICAgICAgIHk6IGFycm93LnN0YXJ0WSAtIHlPZmZzZXQsXG4gICAgICAgICAgICBsYWJlbDogeyB0ZXh0LCBmb250U2l6ZTogMTQgfSxcbiAgICAgICAgICAgIGJnQ29sb3I6IFwiI2U5ZWNlZlwiLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgc3VidHlwZTogXCJzZXF1ZW5jZVwiLFxuICAgICAgICB9O1xuICAgICAgICBhcnJvdy5zZXF1ZW5jZU51bWJlciA9IHNlcXVlbmNlTnVtYmVyO1xuICAgIH1cbiAgICBhcnJvdy5zdHJva2VDb2xvciA9IGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIik7XG4gICAgYXJyb3cuc3Ryb2tlV2lkdGggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiKSk7XG4gICAgYXJyb3cudHlwZSA9IFwiYXJyb3dcIjtcbiAgICBhcnJvdy5zdHJva2VTdHlsZSA9IFNFUVVFTkNFX0FSUk9XX1RZUEVTW21lc3NhZ2UudHlwZV07XG4gICAgcmV0dXJuIGFycm93O1xufTtcbmNvbnN0IGNyZWF0ZUFjdG9yU3ltYm9sID0gKHJvb3ROb2RlLCB0ZXh0LCBvcHRzKSA9PiB7XG4gICAgaWYgKCFyb290Tm9kZSkge1xuICAgICAgICB0aHJvdyBcInJvb3Qgbm9kZSBub3QgZm91bmRcIjtcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShyb290Tm9kZS5jaGlsZHJlbik7XG4gICAgY29uc3Qgbm9kZUVsZW1lbnRzID0gW107XG4gICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYCR7b3B0cz8uaWR9LSR7aW5kZXh9YDtcbiAgICAgICAgbGV0IGVsZTtcbiAgICAgICAgc3dpdGNoIChjaGlsZC50YWdOYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0WCA9IE51bWJlcihjaGlsZC5nZXRBdHRyaWJ1dGUoXCJ4MVwiKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRZID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcInkxXCIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRZID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcInkyXCIpKTtcbiAgICAgICAgICAgICAgICBlbGUgPSBjcmVhdGVMaW5lRWxlbWVudChjaGlsZCwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIHsgZ3JvdXBJZCwgaWQgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZVRleHRFbGVtZW50KGNoaWxkLCB0ZXh0LCB7IGdyb3VwSWQsIGlkIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNpcmNsZVwiOlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoY2hpbGQsIFwiZWxsaXBzZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNoaWxkLnRleHRDb250ZW50IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoY2hpbGQsIFNWR19UT19TSEFQRV9NQVBQRVJbY2hpbGQudGFnTmFtZV0sIHsgdGV4dDogY2hpbGQudGV4dENvbnRlbnQgfHwgdW5kZWZpbmVkLCBncm91cElkLCBpZCB9KTtcbiAgICAgICAgfVxuICAgICAgICBub2RlRWxlbWVudHMucHVzaChlbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2RlRWxlbWVudHM7XG59O1xuY29uc3QgcGFyc2VBY3RvciA9IChhY3RvcnMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYWN0b3JSb290Tm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYWN0b3JcIikpXG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUudGFnTmFtZSA9PT0gXCJ0ZXh0XCIpXG4gICAgICAgIC5tYXAoKGFjdG9yKSA9PiBhY3Rvci50YWdOYW1lID09PSBcInRleHRcIiAmJiBhY3Rvci5wYXJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgYWN0b3JzTGVuZ3RoID0gT2JqZWN0LmtleXMoYWN0b3JzKS5sZW5ndGg7XG4gICAgT2JqZWN0LnZhbHVlcyhhY3RvcnMpLmZvckVhY2goKGFjdG9yLCBpbmRleCkgPT4ge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgLy8gRm9yIGVhY2ggYWN0b3IgdGhlcmUgYXJlIHR3byBub2RlcyB0b3AgYW5kIGJvdHRvbSB3aGljaCBpcyBjb25uZWN0ZWQgYnkgYSBsaW5lXG4gICAgICAgIGNvbnN0IHRvcFJvb3ROb2RlID0gYWN0b3JSb290Tm9kZXNbaW5kZXhdO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYm90dG9tUm9vdE5vZGUgPSBhY3RvclJvb3ROb2Rlc1thY3RvcnNMZW5ndGggKyBpbmRleF07XG4gICAgICAgIGlmICghdG9wUm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IFwicm9vdCBub3QgZm91bmRcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gYWN0b3IuZGVzY3JpcHRpb247XG4gICAgICAgIGlmIChhY3Rvci50eXBlID09PSBcInBhcnRpY2lwYW50XCIpIHtcbiAgICAgICAgICAgIC8vIGNyZWF0aW5nIHRvcCBhY3RvciBub2RlIGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IHRvcE5vZGVFbGVtZW50ID0gY3JlYXRlQ29udGFpbmVyRWxlbWVudCh0b3BSb290Tm9kZS5maXJzdENoaWxkLCBcInJlY3RhbmdsZVwiLCB7IGlkOiBgJHthY3Rvci5uYW1lfS10b3BgLCB0ZXh0LCBzdWJ0eXBlOiBcImFjdG9yXCIgfSk7XG4gICAgICAgICAgICBpZiAoIXRvcE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJUb3AgTm9kZSBlbGVtZW50IG5vdCBmb3VuZCFcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzLnB1c2goW3RvcE5vZGVFbGVtZW50XSk7XG4gICAgICAgICAgICAvLyBjcmVhdGluZyBib3R0b20gYWN0b3Igbm9kZSBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBib3R0b21Ob2RlRWxlbWVudCA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoYm90dG9tUm9vdE5vZGUuZmlyc3RDaGlsZCwgXCJyZWN0YW5nbGVcIiwgeyBpZDogYCR7YWN0b3IubmFtZX0tYm90dG9tYCwgdGV4dCwgc3VidHlwZTogXCJhY3RvclwiIH0pO1xuICAgICAgICAgICAgbm9kZXMucHVzaChbYm90dG9tTm9kZUVsZW1lbnRdKTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbGluZSBjb25uZWN0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBub2Rlcy4gQXMgcGVyIHRoZSBET00sIHRoZSBsaW5lIGlzIHJlbmRlcmVkIGFzIGZpcnN0IGNoaWxkIG9mIHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBsaW5lTm9kZSA9IHRvcFJvb3ROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobGluZU5vZGU/LnRhZ05hbWUgIT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJMaW5lIG5vdCBmb3VuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGlmICghdG9wTm9kZUVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJUb3Agbm9kZSBlbGVtZW50IGhlaWdodCBpcyBudWxsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydFkgPSB0b3BOb2RlRWxlbWVudC55ICsgdG9wTm9kZUVsZW1lbnQuaGVpZ2h0O1xuICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGxpbmVzIGRvbid0IG92ZXJsYXAgd2l0aCB0aGUgbm9kZXMsIGluIG1lcm1haWQgaXQgb3ZlcmxhcHMgYnV0IGlzbid0IHZpc2libGUgYXMgaXRzIHB1c2hlZCBiYWNrIGFuZCBjb250YWluZXJzIGFyZSBub24gdHJhbnNwYXJlbnRcbiAgICAgICAgICAgIGNvbnN0IGVuZFkgPSBib3R0b21Ob2RlRWxlbWVudC55O1xuICAgICAgICAgICAgY29uc3QgZW5kWCA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ4MlwiKSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY3JlYXRlTGluZUVsZW1lbnQobGluZU5vZGUsIHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0b3IudHlwZSA9PT0gXCJhY3RvclwiKSB7XG4gICAgICAgICAgICBjb25zdCB0b3BOb2RlRWxlbWVudCA9IGNyZWF0ZUFjdG9yU3ltYm9sKHRvcFJvb3ROb2RlLCB0ZXh0LCB7XG4gICAgICAgICAgICAgICAgaWQ6IGAke2FjdG9yLm5hbWV9LXRvcGAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9wTm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tTm9kZUVsZW1lbnQgPSBjcmVhdGVBY3RvclN5bWJvbChib3R0b21Sb290Tm9kZSwgdGV4dCwge1xuICAgICAgICAgICAgICAgIGlkOiBgJHthY3Rvci5uYW1lfS1ib3R0b21gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKGJvdHRvbU5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbGluZSBjb25uZWN0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBub2Rlcy4gQXMgcGVyIHRoZSBET00sIHRoZSBsaW5lIGlzIHJlbmRlcmVkIGFzIGZpcnN0IGNoaWxkIG9mIHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBsaW5lTm9kZSA9IHRvcFJvb3ROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobGluZU5vZGU/LnRhZ05hbWUgIT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJMaW5lIG5vdCBmb3VuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBsaW5lcyBkb24ndCBvdmVybGFwIHdpdGggdGhlIG5vZGVzLCBpbiBtZXJtYWlkIGl0IG92ZXJsYXBzIGJ1dCBpc24ndCB2aXNpYmxlIGFzIGl0cyBwdXNoZWQgYmFjayBhbmQgY29udGFpbmVycyBhcmUgbm9uIHRyYW5zcGFyZW50XG4gICAgICAgICAgICBjb25zdCBib3R0b21FbGxpcHNlTm9kZSA9IGJvdHRvbU5vZGVFbGVtZW50LmZpbmQoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJlbGxpcHNlXCIpO1xuICAgICAgICAgICAgaWYgKGJvdHRvbUVsbGlwc2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kWSA9IGJvdHRvbUVsbGlwc2VOb2RlLnk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNyZWF0ZUxpbmVFbGVtZW50KGxpbmVOb2RlLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IG5vZGVzLCBsaW5lcyB9O1xufTtcbmNvbnN0IGNvbXB1dGVBcnJvd3MgPSAobWVzc2FnZXMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYXJyb3dzID0gW107XG4gICAgY29uc3QgYXJyb3dOb2RlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzKj1cIm1lc3NhZ2VMaW5lXCJdJykpO1xuICAgIGNvbnN0IHN1cHBvcnRlZE1lc3NhZ2VUeXBlcyA9IE9iamVjdC5rZXlzKFNFUVVFTkNFX0FSUk9XX1RZUEVTKTtcbiAgICBjb25zdCBhcnJvd01lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBzdXBwb3J0ZWRNZXNzYWdlVHlwZXMuaW5jbHVkZXMobWVzc2FnZS50eXBlLnRvU3RyaW5nKCkpKTtcbiAgICBhcnJvd05vZGVzLmZvckVhY2goKGFycm93Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFycm93TWVzc2FnZXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGNyZWF0ZUFycm93RWxlbWVudChhcnJvd05vZGUsIG1lc3NhZ2UpO1xuICAgICAgICBhcnJvd3MucHVzaChhcnJvdyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFycm93cztcbn07XG5jb25zdCBjb21wdXRlTm90ZXMgPSAobWVzc2FnZXMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3Qgbm90ZU5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLm5vdGVcIikpLm1hcCgobm9kZSkgPT4gbm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBub3RlVGV4dCA9IG1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50eXBlID09PSBNRVNTQUdFX1RZUEUuTk9URSk7XG4gICAgY29uc3Qgbm90ZXMgPSBbXTtcbiAgICBub3RlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjdCA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgY29uc3QgdGV4dCA9IG5vdGVUZXh0W2luZGV4XS5tZXNzYWdlO1xuICAgICAgICBjb25zdCBub3RlID0gY3JlYXRlQ29udGFpbmVyRWxlbWVudChyZWN0LCBcInJlY3RhbmdsZVwiLCB7XG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgc3VidHlwZTogXCJub3RlXCIsXG4gICAgICAgIH0pO1xuICAgICAgICBub3Rlcy5wdXNoKG5vdGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub3Rlcztcbn07XG5jb25zdCBwYXJzZUFjdGl2YXRpb25zID0gKGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYWN0aXZhdGlvbk5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKGBbY2xhc3MqPWFjdGl2YXRpb25dYCkpO1xuICAgIGNvbnN0IGFjdGl2YXRpb25zID0gW107XG4gICAgYWN0aXZhdGlvbk5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVjdCA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQobm9kZSwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHN1YnR5cGU6IFwiYWN0aXZhdGlvblwiLFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZhdGlvbnMucHVzaChyZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZhdGlvbnM7XG59O1xuY29uc3QgcGFyc2VMb29wcyA9IChtZXNzYWdlcywgY29udGFpbmVyRWwpID0+IHtcbiAgICBjb25zdCBsaW5lTm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubG9vcExpbmVcIikpO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgdGV4dHMgPSBbXTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGxpbmVOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0WCA9IE51bWJlcihub2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgY29uc3Qgc3RhcnRZID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieTFcIikpO1xuICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieDJcIikpO1xuICAgICAgICBjb25zdCBlbmRZID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgICAgICBjb25zdCBsaW5lID0gY3JlYXRlTGluZUVsZW1lbnQobm9kZSwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFkpO1xuICAgICAgICBsaW5lLnN0cm9rZVN0eWxlID0gXCJkb3R0ZWRcIjtcbiAgICAgICAgbGluZS5zdHJva2VDb2xvciA9IFwiI2FkYjViZFwiO1xuICAgICAgICBsaW5lLnN0cm9rZVdpZHRoID0gMjtcbiAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICB9KTtcbiAgICBjb25zdCBsb29wVGV4dE5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmxvb3BUZXh0XCIpKTtcbiAgICBjb25zdCBjcml0aWNhbE1lc3NhZ2VzID0gbWVzc2FnZXNcbiAgICAgICAgLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50eXBlID09PSBNRVNTQUdFX1RZUEUuQ1JJVElDQUxfU1RBUlQpXG4gICAgICAgIC5tYXAoKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWVzc2FnZSk7XG4gICAgbG9vcFRleHROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnRleHRDb250ZW50IHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gY3JlYXRlVGV4dEVsZW1lbnQobm9kZSwgdGV4dCk7XG4gICAgICAgIC8vIFRoZSB0ZXh0IGlzIHJlbmRlcmVkIGJldHdlZW4gWyBdIGluIERPTSBoZW5jZSBnZXR0aW5nIHRoZSB0ZXh0IGV4Y2x1ZGluZyB0aGUgWyBdXG4gICAgICAgIGNvbnN0IHJhd1RleHQgPSB0ZXh0Lm1hdGNoKC9cXFsoLio/KVxcXS8pPy5bMV0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgaXNDcml0aWNhbCA9IGNyaXRpY2FsTWVzc2FnZXMuaW5jbHVkZXMocmF3VGV4dCk7XG4gICAgICAgIC8vIEZvciBjcml0aWNhbCBsYWJlbCB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBhY2N1cmF0ZSBpbiBtZXJtYWlkIGFzIHRoZXJlIGlzXG4gICAgICAgIC8vIG5vIHBhZGRpbmcgbGVmdCBoZW5jZSBzaGlmdGluZyB0aGUgdGV4dCBuZXh0IHRvIGNyaXRpY2FsIGxhYmVsIGJ5IDE2cHggKGZvbnQgc2l6ZSlcbiAgICAgICAgaWYgKGlzQ3JpdGljYWwpIHtcbiAgICAgICAgICAgIHRleHRFbGVtZW50LnggKz0gMTY7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dHMucHVzaCh0ZXh0RWxlbWVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbGFiZWxCb3hlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWw/LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubGFiZWxCb3hcIikpO1xuICAgIGNvbnN0IGxhYmVsVGV4dE5vZGUgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsPy5xdWVyeVNlbGVjdG9yQWxsKFwiLmxhYmVsVGV4dFwiKSk7XG4gICAgbGFiZWxCb3hlcy5mb3JFYWNoKChsYWJlbEJveCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxUZXh0ID0gbGFiZWxUZXh0Tm9kZVtpbmRleF0/LnRleHRDb250ZW50IHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQobGFiZWxCb3gsIFwicmVjdGFuZ2xlXCIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxhYmVsVGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRhaW5lci5zdHJva2VDb2xvciA9IFwiI2FkYjViZFwiO1xuICAgICAgICBjb250YWluZXIuYmdDb2xvciA9IFwiI2U5ZWNlZlwiO1xuICAgICAgICAvLyBTbyB3aWR0aCBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIGxhYmVsXG4gICAgICAgIGNvbnRhaW5lci53aWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbm9kZXMucHVzaChjb250YWluZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IGxpbmVzLCB0ZXh0cywgbm9kZXMgfTtcbn07XG5jb25zdCBjb21wdXRlSGlnaGxpZ2h0cyA9IChjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IHJlY3RzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLnJlY3RcIikpXG4gICAgICAgIC8vIE9ubHkgZHJhd2luZyBzcGVjaWZpY2FsbHkgZm9yIGhpZ2hsaWdodHMgYXMgdGhlIHNhbWUgc2VsZWN0b3IgaXMgZm9yIGdyb3VwaW5nIGFzIHdlbGwuIEZvciBncm91cGluZyB3ZVxuICAgICAgICAvLyBkcmF3IGl0IG91cnNlbHZlc1xuICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUgIT09IFwiZ1wiKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIHJlY3RzLmZvckVhY2goKHJlY3QpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQocmVjdCwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHN1YnR5cGU6IFwiaGlnaGxpZ2h0XCIsXG4gICAgICAgIH0pO1xuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2Rlcztcbn07XG5leHBvcnQgY29uc3QgcGFyc2VNZXJtYWlkU2VxdWVuY2VEaWFncmFtID0gKGRpYWdyYW0sIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgZGlhZ3JhbS5wYXJzZSgpO1xuICAgIC8vIEdldCBtZXJtYWlkIHBhcnNlZCBkYXRhIGZyb20gcGFyc2VyIHNoYXJlZCB2YXJpYWJsZSBgeXlgXG4gICAgY29uc3QgbWVybWFpZFBhcnNlciA9IGRpYWdyYW0ucGFyc2VyLnl5O1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gbWVybWFpZFBhcnNlci5nZXRCb3hlcygpO1xuICAgIGNvbnN0IGJnSGlnaHRsaWdodHMgPSBjb21wdXRlSGlnaGxpZ2h0cyhjb250YWluZXJFbCk7XG4gICAgY29uc3QgYWN0b3JEYXRhID0gbWVybWFpZFBhcnNlci5nZXRBY3RvcnMoKTtcbiAgICBjb25zdCB7IG5vZGVzOiBhY3RvcnMsIGxpbmVzIH0gPSBwYXJzZUFjdG9yKGFjdG9yRGF0YSwgY29udGFpbmVyRWwpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gbWVybWFpZFBhcnNlci5nZXRNZXNzYWdlcygpO1xuICAgIGNvbnN0IGFycm93cyA9IGNvbXB1dGVBcnJvd3MobWVzc2FnZXMsIGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBub3RlcyA9IGNvbXB1dGVOb3RlcyhtZXNzYWdlcywgY29udGFpbmVyRWwpO1xuICAgIGNvbnN0IGFjdGl2YXRpb25zID0gcGFyc2VBY3RpdmF0aW9ucyhjb250YWluZXJFbCk7XG4gICAgY29uc3QgbG9vcHMgPSBwYXJzZUxvb3BzKG1lc3NhZ2VzLCBjb250YWluZXJFbCk7XG4gICAgbm9kZXMucHVzaChiZ0hpZ2h0bGlnaHRzKTtcbiAgICBub2Rlcy5wdXNoKC4uLmFjdG9ycyk7XG4gICAgbm9kZXMucHVzaChub3Rlcyk7XG4gICAgbm9kZXMucHVzaChhY3RpdmF0aW9ucyk7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJzZXF1ZW5jZVwiLCBsaW5lcywgYXJyb3dzLCBub2RlcywgbG9vcHMsIGdyb3VwcyB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeEntities\": () => (/* binding */ decodeEntities),\n/* harmony export */ \"encodeEntities\": () => (/* binding */ encodeEntities),\n/* harmony export */ \"entityCodesToText\": () => (/* binding */ entityCodesToText),\n/* harmony export */ \"getTransformAttr\": () => (/* binding */ getTransformAttr)\n/* harmony export */ });\n// Convert mermaid entity codes to text e.g. \"#9829;\" to \"♥\"\nconst entityCodesToText = (input) => {\n input = decodeEntities(input);\n const modifiedInput = input\n .replace(/#(\\d+);/g, \"&#$1;\")\n .replace(/#([a-z]+);/g, \"&$1;\");\n const element = document.createElement(\"textarea\");\n element.innerHTML = modifiedInput;\n return element.value;\n};\nconst getTransformAttr = (el) => {\n const transformAttr = el.getAttribute(\"transform\");\n const translateMatch = transformAttr?.match(/translate\\(([\\d.-]+),\\s*([\\d.-]+)\\)/);\n let transformX = 0;\n let transformY = 0;\n if (translateMatch) {\n transformX = Number(translateMatch[1]);\n transformY = Number(translateMatch[2]);\n }\n return { transformX, transformY };\n};\n//TODO Once fixed in mermaid this will be removed\nconst encodeEntities = (text) => {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, (s) => {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return `fl°°${innerTxt}¶ß`;\n }\n return `fl°${innerTxt}¶ß`;\n });\n return txt;\n};\nconst decodeEntities = function (text) {\n return text.replace(/fl°°/g, \"#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxvREFBb0Q7QUFDN0M7QUFDUDtBQUNBO0FBQ0EseUJBQXlCLFVBQVU7QUFDbkMsNEJBQTRCLFNBQVM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1A7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQSxLQUFLO0FBQ0wseUNBQXlDO0FBQ3pDO0FBQ0EsS0FBSztBQUNMLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsU0FBUztBQUNsQztBQUNBLG9CQUFvQixTQUFTO0FBQzdCLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUCwwRUFBMEU7QUFDMUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3V0aWxzLmpzP2MxYjMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29udmVydCBtZXJtYWlkIGVudGl0eSBjb2RlcyB0byB0ZXh0IGUuZy4gXCIjOTgyOTtcIiB0byBcIuKZpVwiXG5leHBvcnQgY29uc3QgZW50aXR5Q29kZXNUb1RleHQgPSAoaW5wdXQpID0+IHtcbiAgICBpbnB1dCA9IGRlY29kZUVudGl0aWVzKGlucHV0KTtcbiAgICBjb25zdCBtb2RpZmllZElucHV0ID0gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyMoXFxkKyk7L2csIFwiJiMkMTtcIilcbiAgICAgICAgLnJlcGxhY2UoLyMoW2Etel0rKTsvZywgXCImJDE7XCIpO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSBtb2RpZmllZElucHV0O1xuICAgIHJldHVybiBlbGVtZW50LnZhbHVlO1xufTtcbmV4cG9ydCBjb25zdCBnZXRUcmFuc2Zvcm1BdHRyID0gKGVsKSA9PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtQXR0ciA9IGVsLmdldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiKTtcbiAgICBjb25zdCB0cmFuc2xhdGVNYXRjaCA9IHRyYW5zZm9ybUF0dHI/Lm1hdGNoKC90cmFuc2xhdGVcXCgoW1xcZC4tXSspLFxccyooW1xcZC4tXSspXFwpLyk7XG4gICAgbGV0IHRyYW5zZm9ybVggPSAwO1xuICAgIGxldCB0cmFuc2Zvcm1ZID0gMDtcbiAgICBpZiAodHJhbnNsYXRlTWF0Y2gpIHtcbiAgICAgICAgdHJhbnNmb3JtWCA9IE51bWJlcih0cmFuc2xhdGVNYXRjaFsxXSk7XG4gICAgICAgIHRyYW5zZm9ybVkgPSBOdW1iZXIodHJhbnNsYXRlTWF0Y2hbMl0pO1xuICAgIH1cbiAgICByZXR1cm4geyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH07XG59O1xuLy9UT0RPIE9uY2UgZml4ZWQgaW4gbWVybWFpZCB0aGlzIHdpbGwgYmUgcmVtb3ZlZFxuZXhwb3J0IGNvbnN0IGVuY29kZUVudGl0aWVzID0gKHRleHQpID0+IHtcbiAgICBsZXQgdHh0ID0gdGV4dDtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvc3R5bGUuKjpcXFMqIy4qOy9nLCAocykgPT4ge1xuICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgcy5sZW5ndGggLSAxKTtcbiAgICB9KTtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvY2xhc3NEZWYuKjpcXFMqIy4qOy9nLCAocykgPT4ge1xuICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgcy5sZW5ndGggLSAxKTtcbiAgICB9KTtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvI1xcdys7L2csIChzKSA9PiB7XG4gICAgICAgIGNvbnN0IGlubmVyVHh0ID0gcy5zdWJzdHJpbmcoMSwgcy5sZW5ndGggLSAxKTtcbiAgICAgICAgY29uc3QgaXNJbnQgPSAvXlxcKz9cXGQrJC8udGVzdChpbm5lclR4dCk7XG4gICAgICAgIGlmIChpc0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIGDvrILCsMKwJHtpbm5lclR4dH3CtsOfYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYO+sgsKwJHtpbm5lclR4dH3CtsOfYDtcbiAgICB9KTtcbiAgICByZXR1cm4gdHh0O1xufTtcbmV4cG9ydCBjb25zdCBkZWNvZGVFbnRpdGllcyA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSgv76yCwrDCsC9nLCBcIiNcIikucmVwbGFjZSgv76yCwrAvZywgXCImXCIpLnJlcGxhY2UoL8K2w58vZywgXCI7XCIpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js": +/*!****************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js ***! + \****************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"customAlphabet\": () => (/* binding */ customAlphabet),\n/* harmony export */ \"customRandom\": () => (/* binding */ customRandom),\n/* harmony export */ \"nanoid\": () => (/* binding */ nanoid),\n/* harmony export */ \"random\": () => (/* binding */ random),\n/* harmony export */ \"urlAlphabet\": () => (/* reexport safe */ _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__.urlAlphabet)\n/* harmony export */ });\n/* harmony import */ var _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./url-alphabet/index.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/url-alphabet/index.js\");\n\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvbmFub2lkL2luZGV4LmJyb3dzZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXFEO0FBQzlDO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9uYW5vaWQvaW5kZXguYnJvd3Nlci5qcz9mY2RjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHVybEFscGhhYmV0IH0gZnJvbSAnLi91cmwtYWxwaGFiZXQvaW5kZXguanMnXG5leHBvcnQgbGV0IHJhbmRvbSA9IGJ5dGVzID0+IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKVxuZXhwb3J0IGxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICBsZXQgc3RlcCA9IC1+KCgxLjYgKiBtYXNrICogZGVmYXVsdFNpemUpIC8gYWxwaGFiZXQubGVuZ3RoKVxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgbGV0IGogPSBzdGVwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5leHBvcnQgbGV0IGN1c3RvbUFscGhhYmV0ID0gKGFscGhhYmV0LCBzaXplID0gMjEpID0+XG4gIGN1c3RvbVJhbmRvbShhbHBoYWJldCwgc2l6ZSwgcmFuZG9tKVxuZXhwb3J0IGxldCBuYW5vaWQgPSAoc2l6ZSA9IDIxKSA9PlxuICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KHNpemUpKS5yZWR1Y2UoKGlkLCBieXRlKSA9PiB7XG4gICAgYnl0ZSAmPSA2M1xuICAgIGlmIChieXRlIDwgMzYpIHtcbiAgICAgIGlkICs9IGJ5dGUudG9TdHJpbmcoMzYpXG4gICAgfSBlbHNlIGlmIChieXRlIDwgNjIpIHtcbiAgICAgIGlkICs9IChieXRlIC0gMjYpLnRvU3RyaW5nKDM2KS50b1VwcGVyQ2FzZSgpXG4gICAgfSBlbHNlIGlmIChieXRlID4gNjIpIHtcbiAgICAgIGlkICs9ICctJ1xuICAgIH0gZWxzZSB7XG4gICAgICBpZCArPSAnXydcbiAgICB9XG4gICAgcmV0dXJuIGlkXG4gIH0sICcnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\n"); + +/***/ }), + +/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/url-alphabet/index.js": +/*!*********************************************************************************************************!*\ + !*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/url-alphabet/index.js ***! + \*********************************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"urlAlphabet\": () => (/* binding */ urlAlphabet)\n/* harmony export */ });\nconst urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvbmFub2lkL3VybC1hbHBoYWJldC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9uYW5vaWQvdXJsLWFscGhhYmV0L2luZGV4LmpzPzVhZmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHVybEFscGhhYmV0ID1cbiAgJ3VzZWFuZG9tLTI2VDE5ODM0MFBYNzVweEpBQ0tWRVJZTUlOREJVU0hXT0xGX0dRWmJmZ2hqa2xxdnd5enJpY3QnXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/url-alphabet/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/array.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/array.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"map\": () => (/* binding */ map),\n/* harmony export */ \"slice\": () => (/* binding */ slice)\n/* harmony export */ });\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9hcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVPO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9hcnJheS5qcz9mNjI1Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBhcnJheSA9IEFycmF5LnByb3RvdHlwZTtcblxuZXhwb3J0IHZhciBzbGljZSA9IGFycmF5LnNsaWNlO1xuZXhwb3J0IHZhciBtYXAgPSBhcnJheS5tYXA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/ascending.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-array/src/ascending.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ascending)\n/* harmony export */ });\nfunction ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9hc2NlbmRpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2FzY2VuZGluZy5qcz9iYzc0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIHJldHVybiBhID09IG51bGwgfHwgYiA9PSBudWxsID8gTmFOIDogYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/ascending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/bin.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/bin.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ bin)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-array/src/array.js\");\n/* harmony import */ var _bisect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./bisect.js */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-array/src/constant.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./extent.js */ \"../../../node_modules/d3-array/src/extent.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-array/src/identity.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nice.js */ \"../../../node_modules/d3-array/src/nice.js\");\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ticks.js */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./threshold/sturges.js */ \"../../../node_modules/d3-array/src/threshold/sturges.js\");\n\n\n\n\n\n\n\n\n\nfunction bin() {\n var value = _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n domain = _extent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n threshold = _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === _extent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) [x0, x1] = (0,_nice_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(x0, x1, tn);\n tz = (0,_ticks_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = (0,_ticks_js__WEBPACK_IMPORTED_MODULE_4__.tickIncrement)(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === _extent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n const step = (0,_ticks_js__WEBPACK_IMPORTED_MODULE_4__.tickIncrement)(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[(0,_bisect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(Array.isArray(_) ? _array_js__WEBPACK_IMPORTED_MODULE_7__.slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQWlDO0FBQ0E7QUFDSTtBQUNKO0FBQ0k7QUFDUjtBQUNtQjtBQUNIOztBQUU5QjtBQUNmLGNBQWMsb0RBQVE7QUFDdEIsZUFBZSxrREFBTTtBQUNyQixrQkFBa0IsNkRBQU87O0FBRXpCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGtEQUFNLGFBQWEsb0RBQUk7QUFDNUMsV0FBVyxxREFBSzs7QUFFaEI7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLHdEQUFhOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGtEQUFNO0FBQzFDLHVCQUF1Qix3REFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1Isb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBLCtEQUErRDtBQUMvRDtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sa0JBQWtCLE9BQU87QUFDekI7QUFDQSxlQUFlLHNEQUFNO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EscUVBQXFFLHdEQUFRO0FBQzdFOztBQUVBO0FBQ0Esc0VBQXNFLHdEQUFRO0FBQzlFOztBQUVBO0FBQ0EseUVBQXlFLHdEQUFRLG9CQUFvQixpREFBVTtBQUMvRzs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmluLmpzP2U5NWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzbGljZX0gZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBiaXNlY3QgZnJvbSBcIi4vYmlzZWN0LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBleHRlbnQgZnJvbSBcIi4vZXh0ZW50LmpzXCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHkuanNcIjtcbmltcG9ydCBuaWNlIGZyb20gXCIuL25pY2UuanNcIjtcbmltcG9ydCB0aWNrcywge3RpY2tJbmNyZW1lbnR9IGZyb20gXCIuL3RpY2tzLmpzXCI7XG5pbXBvcnQgc3R1cmdlcyBmcm9tIFwiLi90aHJlc2hvbGQvc3R1cmdlcy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiaW4oKSB7XG4gIHZhciB2YWx1ZSA9IGlkZW50aXR5LFxuICAgICAgZG9tYWluID0gZXh0ZW50LFxuICAgICAgdGhyZXNob2xkID0gc3R1cmdlcztcblxuICBmdW5jdGlvbiBoaXN0b2dyYW0oZGF0YSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkgZGF0YSA9IEFycmF5LmZyb20oZGF0YSk7XG5cbiAgICB2YXIgaSxcbiAgICAgICAgbiA9IGRhdGEubGVuZ3RoLFxuICAgICAgICB4LFxuICAgICAgICBzdGVwLFxuICAgICAgICB2YWx1ZXMgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YWx1ZXNbaV0gPSB2YWx1ZShkYXRhW2ldLCBpLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YXIgeHogPSBkb21haW4odmFsdWVzKSxcbiAgICAgICAgeDAgPSB4elswXSxcbiAgICAgICAgeDEgPSB4elsxXSxcbiAgICAgICAgdHogPSB0aHJlc2hvbGQodmFsdWVzLCB4MCwgeDEpO1xuXG4gICAgLy8gQ29udmVydCBudW1iZXIgb2YgdGhyZXNob2xkcyBpbnRvIHVuaWZvcm0gdGhyZXNob2xkcywgYW5kIG5pY2UgdGhlXG4gICAgLy8gZGVmYXVsdCBkb21haW4gYWNjb3JkaW5nbHkuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR6KSkge1xuICAgICAgY29uc3QgbWF4ID0geDEsIHRuID0gK3R6O1xuICAgICAgaWYgKGRvbWFpbiA9PT0gZXh0ZW50KSBbeDAsIHgxXSA9IG5pY2UoeDAsIHgxLCB0bik7XG4gICAgICB0eiA9IHRpY2tzKHgwLCB4MSwgdG4pO1xuXG4gICAgICAvLyBJZiB0aGUgZG9tYWluIGlzIGFsaWduZWQgd2l0aCB0aGUgZmlyc3QgdGljayAod2hpY2ggaXQgd2lsbCBieVxuICAgICAgLy8gZGVmYXVsdCksIHRoZW4gd2UgY2FuIHVzZSBxdWFudGl6YXRpb24gcmF0aGVyIHRoYW4gYmlzZWN0aW9uIHRvIGJpblxuICAgICAgLy8gdmFsdWVzLCB3aGljaCBpcyBzdWJzdGFudGlhbGx5IGZhc3Rlci5cbiAgICAgIGlmICh0elswXSA8PSB4MCkgc3RlcCA9IHRpY2tJbmNyZW1lbnQoeDAsIHgxLCB0bik7XG5cbiAgICAgIC8vIElmIHRoZSBsYXN0IHRocmVzaG9sZCBpcyBjb2luY2lkZW50IHdpdGggdGhlIGRvbWFpbuKAmXMgdXBwZXIgYm91bmQsIHRoZVxuICAgICAgLy8gbGFzdCBiaW4gd2lsbCBiZSB6ZXJvLXdpZHRoLiBJZiB0aGUgZGVmYXVsdCBkb21haW4gaXMgdXNlZCwgYW5kIHRoaXNcbiAgICAgIC8vIGxhc3QgdGhyZXNob2xkIGlzIGNvaW5jaWRlbnQgd2l0aCB0aGUgbWF4aW11bSBpbnB1dCB2YWx1ZSwgd2UgY2FuXG4gICAgICAvLyBleHRlbmQgdGhlIG5pY2VkIHVwcGVyIGJvdW5kIGJ5IG9uZSB0aWNrIHRvIGVuc3VyZSB1bmlmb3JtIGJpbiB3aWR0aHM7XG4gICAgICAvLyBvdGhlcndpc2UsIHdlIHNpbXBseSByZW1vdmUgdGhlIGxhc3QgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgZG9u4oCZdFxuICAgICAgLy8gY29lcmNlIHZhbHVlcyBvciB0aGUgZG9tYWluIHRvIG51bWJlcnMsIGFuZCB0aHVzIG11c3QgYmUgY2FyZWZ1bCB0b1xuICAgICAgLy8gY29tcGFyZSBvcmRlciAoPj0pIHJhdGhlciB0aGFuIHN0cmljdCBlcXVhbGl0eSAoPT09KSFcbiAgICAgIGlmICh0elt0ei5sZW5ndGggLSAxXSA+PSB4MSkge1xuICAgICAgICBpZiAobWF4ID49IHgxICYmIGRvbWFpbiA9PT0gZXh0ZW50KSB7XG4gICAgICAgICAgY29uc3Qgc3RlcCA9IHRpY2tJbmNyZW1lbnQoeDAsIHgxLCB0bik7XG4gICAgICAgICAgaWYgKGlzRmluaXRlKHN0ZXApKSB7XG4gICAgICAgICAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgICAgICAgeDEgPSAoTWF0aC5mbG9vcih4MSAvIHN0ZXApICsgMSkgKiBzdGVwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICAgICAgICB4MSA9IChNYXRoLmNlaWwoeDEgKiAtc3RlcCkgKyAxKSAvIC1zdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ei5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBhbnkgdGhyZXNob2xkcyBvdXRzaWRlIHRoZSBkb21haW4uXG4gICAgLy8gQmUgY2FyZWZ1bCBub3QgdG8gbXV0YXRlIGFuIGFycmF5IG93bmVkIGJ5IHRoZSB1c2VyIVxuICAgIHZhciBtID0gdHoubGVuZ3RoLCBhID0gMCwgYiA9IG07XG4gICAgd2hpbGUgKHR6W2FdIDw9IHgwKSArK2E7XG4gICAgd2hpbGUgKHR6W2IgLSAxXSA+IHgxKSAtLWI7XG4gICAgaWYgKGEgfHwgYiA8IG0pIHR6ID0gdHouc2xpY2UoYSwgYiksIG0gPSBiIC0gYTtcblxuICAgIHZhciBiaW5zID0gbmV3IEFycmF5KG0gKyAxKSxcbiAgICAgICAgYmluO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBiaW5zLlxuICAgIGZvciAoaSA9IDA7IGkgPD0gbTsgKytpKSB7XG4gICAgICBiaW4gPSBiaW5zW2ldID0gW107XG4gICAgICBiaW4ueDAgPSBpID4gMCA/IHR6W2kgLSAxXSA6IHgwO1xuICAgICAgYmluLngxID0gaSA8IG0gPyB0eltpXSA6IHgxO1xuICAgIH1cblxuICAgIC8vIEFzc2lnbiBkYXRhIHRvIGJpbnMgYnkgdmFsdWUsIGlnbm9yaW5nIGFueSBvdXRzaWRlIHRoZSBkb21haW4uXG4gICAgaWYgKGlzRmluaXRlKHN0ZXApKSB7XG4gICAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICAgIGlmICgoeCA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiB4MCA8PSB4ICYmIHggPD0geDEpIHtcbiAgICAgICAgICAgIGJpbnNbTWF0aC5taW4obSwgTWF0aC5mbG9vcigoeCAtIHgwKSAvIHN0ZXApKV0ucHVzaChkYXRhW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICAgIGlmICgoeCA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiB4MCA8PSB4ICYmIHggPD0geDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGogPSBNYXRoLmZsb29yKCh4MCAtIHgpICogc3RlcCk7XG4gICAgICAgICAgICBiaW5zW01hdGgubWluKG0sIGogKyAodHpbal0gPD0geCkpXS5wdXNoKGRhdGFbaV0pOyAvLyBoYW5kbGUgb2ZmLWJ5LW9uZSBkdWUgdG8gcm91bmRpbmdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAoKHggPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgeDAgPD0geCAmJiB4IDw9IHgxKSB7XG4gICAgICAgICAgYmluc1tiaXNlY3QodHosIHgsIDAsIG0pXS5wdXNoKGRhdGFbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbnM7XG4gIH1cblxuICBoaXN0b2dyYW0udmFsdWUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmFsdWUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBoaXN0b2dyYW0pIDogdmFsdWU7XG4gIH07XG5cbiAgaGlzdG9ncmFtLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KFtfWzBdLCBfWzFdXSksIGhpc3RvZ3JhbSkgOiBkb21haW47XG4gIH07XG5cbiAgaGlzdG9ncmFtLnRocmVzaG9sZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhyZXNob2xkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChBcnJheS5pc0FycmF5KF8pID8gc2xpY2UuY2FsbChfKSA6IF8pLCBoaXN0b2dyYW0pIDogdGhyZXNob2xkO1xuICB9O1xuXG4gIHJldHVybiBoaXN0b2dyYW07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/bin.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/bisect.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/bisect.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"bisectCenter\": () => (/* binding */ bisectCenter),\n/* harmony export */ \"bisectLeft\": () => (/* binding */ bisectLeft),\n/* harmony export */ \"bisectRight\": () => (/* binding */ bisectRight),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _bisector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bisector.js */ \"../../../node_modules/d3-array/src/bisector.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-array/src/number.js\");\n\n\n\n\nconst ascendingBisect = (0,_bisector_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\nconst bisectRight = ascendingBisect.right;\nconst bisectLeft = ascendingBisect.left;\nconst bisectCenter = (0,_bisector_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_number_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]).center;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (bisectRight);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaXNlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF1QztBQUNGO0FBQ0o7O0FBRWpDLHdCQUF3Qix3REFBUSxDQUFDLHFEQUFTO0FBQ25DO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQVEsQ0FBQyxrREFBTTtBQUMzQyxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaXNlY3QuanM/MTk3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuaW1wb3J0IGJpc2VjdG9yIGZyb20gXCIuL2Jpc2VjdG9yLmpzXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlci5qc1wiO1xuXG5jb25zdCBhc2NlbmRpbmdCaXNlY3QgPSBiaXNlY3Rvcihhc2NlbmRpbmcpO1xuZXhwb3J0IGNvbnN0IGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xuZXhwb3J0IGNvbnN0IGJpc2VjdExlZnQgPSBhc2NlbmRpbmdCaXNlY3QubGVmdDtcbmV4cG9ydCBjb25zdCBiaXNlY3RDZW50ZXIgPSBiaXNlY3RvcihudW1iZXIpLmNlbnRlcjtcbmV4cG9ydCBkZWZhdWx0IGJpc2VjdFJpZ2h0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/bisect.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/bisector.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/bisector.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ bisector)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./descending.js */ \"../../../node_modules/d3-array/src/descending.js\");\n\n\n\nfunction bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n compare2 = (d, x) => (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || f === _descending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9iaXNlY3Rvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBdUM7QUFDRTs7QUFFMUI7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFEQUFTO0FBQ3hCLHlCQUF5Qix5REFBUztBQUNsQztBQUNBLElBQUk7QUFDSixxQkFBcUIscURBQVMsVUFBVSxzREFBVTtBQUNsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0b3IuanM/MjUwZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuaW1wb3J0IGRlc2NlbmRpbmcgZnJvbSBcIi4vZGVzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiaXNlY3RvcihmKSB7XG4gIGxldCBjb21wYXJlMSwgY29tcGFyZTIsIGRlbHRhO1xuXG4gIC8vIElmIGFuIGFjY2Vzc29yIGlzIHNwZWNpZmllZCwgcHJvbW90ZSBpdCB0byBhIGNvbXBhcmF0b3IuIEluIHRoaXMgY2FzZSB3ZVxuICAvLyBjYW4gdGVzdCB3aGV0aGVyIHRoZSBzZWFyY2ggdmFsdWUgaXMgKHNlbGYtKSBjb21wYXJhYmxlLiBXZSBjYW7igJl0IGRvIHRoaXNcbiAgLy8gZm9yIGEgY29tcGFyYXRvciAoZXhjZXB0IGZvciBzcGVjaWZpYywga25vd24gY29tcGFyYXRvcnMpIGJlY2F1c2Ugd2UgY2Fu4oCZdFxuICAvLyB0ZWxsIGlmIHRoZSBjb21wYXJhdG9yIGlzIHN5bW1ldHJpYywgYW5kIGFuIGFzeW1tZXRyaWMgY29tcGFyYXRvciBjYW7igJl0IGJlXG4gIC8vIHVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgc2luZ2xlIHZhbHVlIGlzIGNvbXBhcmFibGUuXG4gIGlmIChmLmxlbmd0aCAhPT0gMikge1xuICAgIGNvbXBhcmUxID0gYXNjZW5kaW5nO1xuICAgIGNvbXBhcmUyID0gKGQsIHgpID0+IGFzY2VuZGluZyhmKGQpLCB4KTtcbiAgICBkZWx0YSA9IChkLCB4KSA9PiBmKGQpIC0geDtcbiAgfSBlbHNlIHtcbiAgICBjb21wYXJlMSA9IGYgPT09IGFzY2VuZGluZyB8fCBmID09PSBkZXNjZW5kaW5nID8gZiA6IHplcm87XG4gICAgY29tcGFyZTIgPSBmO1xuICAgIGRlbHRhID0gZjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlZnQoYSwgeCwgbG8gPSAwLCBoaSA9IGEubGVuZ3RoKSB7XG4gICAgaWYgKGxvIDwgaGkpIHtcbiAgICAgIGlmIChjb21wYXJlMSh4LCB4KSAhPT0gMCkgcmV0dXJuIGhpO1xuICAgICAgZG8ge1xuICAgICAgICBjb25zdCBtaWQgPSAobG8gKyBoaSkgPj4+IDE7XG4gICAgICAgIGlmIChjb21wYXJlMihhW21pZF0sIHgpIDwgMCkgbG8gPSBtaWQgKyAxO1xuICAgICAgICBlbHNlIGhpID0gbWlkO1xuICAgICAgfSB3aGlsZSAobG8gPCBoaSk7XG4gICAgfVxuICAgIHJldHVybiBsbztcbiAgfVxuXG4gIGZ1bmN0aW9uIHJpZ2h0KGEsIHgsIGxvID0gMCwgaGkgPSBhLmxlbmd0aCkge1xuICAgIGlmIChsbyA8IGhpKSB7XG4gICAgICBpZiAoY29tcGFyZTEoeCwgeCkgIT09IDApIHJldHVybiBoaTtcbiAgICAgIGRvIHtcbiAgICAgICAgY29uc3QgbWlkID0gKGxvICsgaGkpID4+PiAxO1xuICAgICAgICBpZiAoY29tcGFyZTIoYVttaWRdLCB4KSA8PSAwKSBsbyA9IG1pZCArIDE7XG4gICAgICAgIGVsc2UgaGkgPSBtaWQ7XG4gICAgICB9IHdoaWxlIChsbyA8IGhpKTtcbiAgICB9XG4gICAgcmV0dXJuIGxvO1xuICB9XG5cbiAgZnVuY3Rpb24gY2VudGVyKGEsIHgsIGxvID0gMCwgaGkgPSBhLmxlbmd0aCkge1xuICAgIGNvbnN0IGkgPSBsZWZ0KGEsIHgsIGxvLCBoaSAtIDEpO1xuICAgIHJldHVybiBpID4gbG8gJiYgZGVsdGEoYVtpIC0gMV0sIHgpID4gLWRlbHRhKGFbaV0sIHgpID8gaSAtIDEgOiBpO1xuICB9XG5cbiAgcmV0dXJuIHtsZWZ0LCBjZW50ZXIsIHJpZ2h0fTtcbn1cblxuZnVuY3Rpb24gemVybygpIHtcbiAgcmV0dXJuIDA7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/bisector.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/blur.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/blur.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"blur\": () => (/* binding */ blur),\n/* harmony export */ \"blur2\": () => (/* binding */ blur2),\n/* harmony export */ \"blurImage\": () => (/* binding */ blurImage)\n/* harmony export */ });\nfunction blur(values, r) {\n if (!((r = +r) >= 0)) throw new RangeError(\"invalid r\");\n let length = values.length;\n if (!((length = Math.floor(length)) >= 0)) throw new RangeError(\"invalid length\");\n if (!length || !r) return values;\n const blur = blurf(r);\n const temp = values.slice();\n blur(values, temp, 0, length, 1);\n blur(temp, values, 0, length, 1);\n blur(values, temp, 0, length, 1);\n return values;\n}\n\nconst blur2 = Blur2(blurf);\n\nconst blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n return function(data, rx, ry = rx) {\n if (!((rx = +rx) >= 0)) throw new RangeError(\"invalid rx\");\n if (!((ry = +ry) >= 0)) throw new RangeError(\"invalid ry\");\n let {data: values, width, height} = data;\n if (!((width = Math.floor(width)) >= 0)) throw new RangeError(\"invalid width\");\n if (!((height = Math.floor(height !== undefined ? height : values.length / width)) >= 0)) throw new RangeError(\"invalid height\");\n if (!width || !height || (!rx && !ry)) return data;\n const blurx = rx && blur(rx);\n const blury = ry && blur(ry);\n const temp = values.slice();\n if (blurx && blury) {\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n } else if (blurx) {\n blurh(blurx, values, temp, width, height);\n blurh(blurx, temp, values, width, height);\n blurh(blurx, values, temp, width, height);\n } else if (blury) {\n blurv(blury, values, temp, width, height);\n blurv(blury, temp, values, width, height);\n blurv(blury, values, temp, width, height);\n }\n return data;\n };\n}\n\nfunction blurh(blur, T, S, w, h) {\n for (let y = 0, n = w * h; y < n;) {\n blur(T, S, y, y += w, 1);\n }\n}\n\nfunction blurv(blur, T, S, w, h) {\n for (let x = 0, n = w * h; x < w; ++x) {\n blur(T, S, x, x + n, w);\n }\n}\n\nfunction blurfImage(radius) {\n const blur = blurf(radius);\n return (T, S, start, stop, step) => {\n start <<= 2, stop <<= 2, step <<= 2;\n blur(T, S, start + 0, stop + 0, step);\n blur(T, S, start + 1, stop + 1, step);\n blur(T, S, start + 2, stop + 2, step);\n blur(T, S, start + 3, stop + 3, step);\n };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start <= i < stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n const radius0 = Math.floor(radius);\n if (radius0 === radius) return bluri(radius);\n const t = radius - radius0;\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius0 * S[start];\n const s0 = step * radius0;\n const s1 = s0 + step;\n for (let i = start, j = start + s0; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s0)];\n T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n sum -= S[Math.max(start, i - s0)];\n }\n };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n const w = 2 * radius + 1;\n return (T, S, start, stop, step) => { // stop must be aligned!\n if (!((stop -= step) >= start)) return; // inclusive stop\n let sum = radius * S[start];\n const s = step * radius;\n for (let i = start, j = start + s; i < j; i += step) {\n sum += S[Math.min(stop, i)];\n }\n for (let i = start, j = stop; i <= j; i += step) {\n sum += S[Math.min(stop, i + s)];\n T[i] = sum / w;\n sum -= S[Math.max(start, i - s)];\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ibHVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTzs7QUFFQTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNkJBQTZCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QixNQUFNO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU8sK0JBQStCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4Qyw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLE9BQU87QUFDL0M7QUFDQTtBQUNBLGtDQUFrQyxRQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0Esa0NBQWtDLFFBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmx1ci5qcz81NTZiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBibHVyKHZhbHVlcywgcikge1xuICBpZiAoISgociA9ICtyKSA+PSAwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIHJcIik7XG4gIGxldCBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuICBpZiAoISgobGVuZ3RoID0gTWF0aC5mbG9vcihsZW5ndGgpKSA+PSAwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIGxlbmd0aFwiKTtcbiAgaWYgKCFsZW5ndGggfHwgIXIpIHJldHVybiB2YWx1ZXM7XG4gIGNvbnN0IGJsdXIgPSBibHVyZihyKTtcbiAgY29uc3QgdGVtcCA9IHZhbHVlcy5zbGljZSgpO1xuICBibHVyKHZhbHVlcywgdGVtcCwgMCwgbGVuZ3RoLCAxKTtcbiAgYmx1cih0ZW1wLCB2YWx1ZXMsIDAsIGxlbmd0aCwgMSk7XG4gIGJsdXIodmFsdWVzLCB0ZW1wLCAwLCBsZW5ndGgsIDEpO1xuICByZXR1cm4gdmFsdWVzO1xufVxuXG5leHBvcnQgY29uc3QgYmx1cjIgPSBCbHVyMihibHVyZik7XG5cbmV4cG9ydCBjb25zdCBibHVySW1hZ2UgPSBCbHVyMihibHVyZkltYWdlKTtcblxuZnVuY3Rpb24gQmx1cjIoYmx1cikge1xuICByZXR1cm4gZnVuY3Rpb24oZGF0YSwgcngsIHJ5ID0gcngpIHtcbiAgICBpZiAoISgocnggPSArcngpID49IDApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImludmFsaWQgcnhcIik7XG4gICAgaWYgKCEoKHJ5ID0gK3J5KSA+PSAwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIHJ5XCIpO1xuICAgIGxldCB7ZGF0YTogdmFsdWVzLCB3aWR0aCwgaGVpZ2h0fSA9IGRhdGE7XG4gICAgaWYgKCEoKHdpZHRoID0gTWF0aC5mbG9vcih3aWR0aCkpID49IDApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImludmFsaWQgd2lkdGhcIik7XG4gICAgaWYgKCEoKGhlaWdodCA9IE1hdGguZmxvb3IoaGVpZ2h0ICE9PSB1bmRlZmluZWQgPyBoZWlnaHQgOiB2YWx1ZXMubGVuZ3RoIC8gd2lkdGgpKSA+PSAwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIGhlaWdodFwiKTtcbiAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKCFyeCAmJiAhcnkpKSByZXR1cm4gZGF0YTtcbiAgICBjb25zdCBibHVyeCA9IHJ4ICYmIGJsdXIocngpO1xuICAgIGNvbnN0IGJsdXJ5ID0gcnkgJiYgYmx1cihyeSk7XG4gICAgY29uc3QgdGVtcCA9IHZhbHVlcy5zbGljZSgpO1xuICAgIGlmIChibHVyeCAmJiBibHVyeSkge1xuICAgICAgYmx1cmgoYmx1cngsIHRlbXAsIHZhbHVlcywgd2lkdGgsIGhlaWdodCk7XG4gICAgICBibHVyaChibHVyeCwgdmFsdWVzLCB0ZW1wLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJsdXJoKGJsdXJ4LCB0ZW1wLCB2YWx1ZXMsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgYmx1cnYoYmx1cnksIHZhbHVlcywgdGVtcCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICBibHVydihibHVyeSwgdGVtcCwgdmFsdWVzLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJsdXJ2KGJsdXJ5LCB2YWx1ZXMsIHRlbXAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIH0gZWxzZSBpZiAoYmx1cngpIHtcbiAgICAgIGJsdXJoKGJsdXJ4LCB2YWx1ZXMsIHRlbXAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgYmx1cmgoYmx1cngsIHRlbXAsIHZhbHVlcywgd2lkdGgsIGhlaWdodCk7XG4gICAgICBibHVyaChibHVyeCwgdmFsdWVzLCB0ZW1wLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKGJsdXJ5KSB7XG4gICAgICBibHVydihibHVyeSwgdmFsdWVzLCB0ZW1wLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJsdXJ2KGJsdXJ5LCB0ZW1wLCB2YWx1ZXMsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgYmx1cnYoYmx1cnksIHZhbHVlcywgdGVtcCwgd2lkdGgsIGhlaWdodCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9O1xufVxuXG5mdW5jdGlvbiBibHVyaChibHVyLCBULCBTLCB3LCBoKSB7XG4gIGZvciAobGV0IHkgPSAwLCBuID0gdyAqIGg7IHkgPCBuOykge1xuICAgIGJsdXIoVCwgUywgeSwgeSArPSB3LCAxKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBibHVydihibHVyLCBULCBTLCB3LCBoKSB7XG4gIGZvciAobGV0IHggPSAwLCBuID0gdyAqIGg7IHggPCB3OyArK3gpIHtcbiAgICBibHVyKFQsIFMsIHgsIHggKyBuLCB3KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBibHVyZkltYWdlKHJhZGl1cykge1xuICBjb25zdCBibHVyID0gYmx1cmYocmFkaXVzKTtcbiAgcmV0dXJuIChULCBTLCBzdGFydCwgc3RvcCwgc3RlcCkgPT4ge1xuICAgIHN0YXJ0IDw8PSAyLCBzdG9wIDw8PSAyLCBzdGVwIDw8PSAyO1xuICAgIGJsdXIoVCwgUywgc3RhcnQgKyAwLCBzdG9wICsgMCwgc3RlcCk7XG4gICAgYmx1cihULCBTLCBzdGFydCArIDEsIHN0b3AgKyAxLCBzdGVwKTtcbiAgICBibHVyKFQsIFMsIHN0YXJ0ICsgMiwgc3RvcCArIDIsIHN0ZXApO1xuICAgIGJsdXIoVCwgUywgc3RhcnQgKyAzLCBzdG9wICsgMywgc3RlcCk7XG4gIH07XG59XG5cbi8vIEdpdmVuIGEgdGFyZ2V0IGFycmF5IFQsIGEgc291cmNlIGFycmF5IFMsIHNldHMgZWFjaCB2YWx1ZSBUW2ldIHRvIHRoZSBhdmVyYWdlXG4vLyBvZiB7U1tpIC0gcl0sIOKApiwgU1tpXSwg4oCmLCBTW2kgKyByXX0sIHdoZXJlIHIgPSDijIpyYWRpdXPijIssIHN0YXJ0IDw9IGkgPCBzdG9wLFxuLy8gZm9yIGVhY2ggaSwgaSArIHN0ZXAsIGkgKyAyICogc3RlcCwgZXRjLiwgYW5kIHdoZXJlIFNbal0gaXMgY2xhbXBlZCBiZXR3ZWVuXG4vLyBTW3N0YXJ0XSAoaW5jbHVzaXZlKSBhbmQgU1tzdG9wXSAoZXhjbHVzaXZlKS4gSWYgdGhlIGdpdmVuIHJhZGl1cyBpcyBub3QgYW5cbi8vIGludGVnZXIsIFNbaSAtIHIgLSAxXSBhbmQgU1tpICsgciArIDFdIGFyZSBhZGRlZCB0byB0aGUgc3VtLCBlYWNoIHdlaWdodGVkXG4vLyBhY2NvcmRpbmcgdG8gciAtIOKMinJhZGl1c+KMiy5cbmZ1bmN0aW9uIGJsdXJmKHJhZGl1cykge1xuICBjb25zdCByYWRpdXMwID0gTWF0aC5mbG9vcihyYWRpdXMpO1xuICBpZiAocmFkaXVzMCA9PT0gcmFkaXVzKSByZXR1cm4gYmx1cmkocmFkaXVzKTtcbiAgY29uc3QgdCA9IHJhZGl1cyAtIHJhZGl1czA7XG4gIGNvbnN0IHcgPSAyICogcmFkaXVzICsgMTtcbiAgcmV0dXJuIChULCBTLCBzdGFydCwgc3RvcCwgc3RlcCkgPT4geyAvLyBzdG9wIG11c3QgYmUgYWxpZ25lZCFcbiAgICBpZiAoISgoc3RvcCAtPSBzdGVwKSA+PSBzdGFydCkpIHJldHVybjsgLy8gaW5jbHVzaXZlIHN0b3BcbiAgICBsZXQgc3VtID0gcmFkaXVzMCAqIFNbc3RhcnRdO1xuICAgIGNvbnN0IHMwID0gc3RlcCAqIHJhZGl1czA7XG4gICAgY29uc3QgczEgPSBzMCArIHN0ZXA7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0LCBqID0gc3RhcnQgKyBzMDsgaSA8IGo7IGkgKz0gc3RlcCkge1xuICAgICAgc3VtICs9IFNbTWF0aC5taW4oc3RvcCwgaSldO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gc3RhcnQsIGogPSBzdG9wOyBpIDw9IGo7IGkgKz0gc3RlcCkge1xuICAgICAgc3VtICs9IFNbTWF0aC5taW4oc3RvcCwgaSArIHMwKV07XG4gICAgICBUW2ldID0gKHN1bSArIHQgKiAoU1tNYXRoLm1heChzdGFydCwgaSAtIHMxKV0gKyBTW01hdGgubWluKHN0b3AsIGkgKyBzMSldKSkgLyB3O1xuICAgICAgc3VtIC09IFNbTWF0aC5tYXgoc3RhcnQsIGkgLSBzMCldO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gTGlrZSBibHVyZiwgYnV0IG9wdGltaXplZCBmb3IgaW50ZWdlciByYWRpdXMuXG5mdW5jdGlvbiBibHVyaShyYWRpdXMpIHtcbiAgY29uc3QgdyA9IDIgKiByYWRpdXMgKyAxO1xuICByZXR1cm4gKFQsIFMsIHN0YXJ0LCBzdG9wLCBzdGVwKSA9PiB7IC8vIHN0b3AgbXVzdCBiZSBhbGlnbmVkIVxuICAgIGlmICghKChzdG9wIC09IHN0ZXApID49IHN0YXJ0KSkgcmV0dXJuOyAvLyBpbmNsdXNpdmUgc3RvcFxuICAgIGxldCBzdW0gPSByYWRpdXMgKiBTW3N0YXJ0XTtcbiAgICBjb25zdCBzID0gc3RlcCAqIHJhZGl1cztcbiAgICBmb3IgKGxldCBpID0gc3RhcnQsIGogPSBzdGFydCArIHM7IGkgPCBqOyBpICs9IHN0ZXApIHtcbiAgICAgIHN1bSArPSBTW01hdGgubWluKHN0b3AsIGkpXTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0LCBqID0gc3RvcDsgaSA8PSBqOyBpICs9IHN0ZXApIHtcbiAgICAgIHN1bSArPSBTW01hdGgubWluKHN0b3AsIGkgKyBzKV07XG4gICAgICBUW2ldID0gc3VtIC8gdztcbiAgICAgIHN1bSAtPSBTW01hdGgubWF4KHN0YXJ0LCBpIC0gcyldO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/blur.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ constant)\n/* harmony export */ });\nfunction constant(x) {\n return () => x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvY29uc3RhbnQuanM/MGQzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb25zdGFudCh4KSB7XG4gIHJldHVybiAoKSA9PiB4O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/count.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/count.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ count)\n/* harmony export */ });\nfunction count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jb3VudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jb3VudC5qcz9mNTYyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvdW50KHZhbHVlcywgdmFsdWVvZikge1xuICBsZXQgY291bnQgPSAwO1xuICBpZiAodmFsdWVvZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiAodmFsdWUgPSArdmFsdWUpID49IHZhbHVlKSB7XG4gICAgICAgICsrY291bnQ7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpICE9IG51bGwgJiYgKHZhbHVlID0gK3ZhbHVlKSA+PSB2YWx1ZSkge1xuICAgICAgICArK2NvdW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY291bnQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/count.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/cross.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/cross.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ cross)\n/* harmony export */ });\nfunction length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nfunction cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jcm9zcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jcm9zcy5qcz84NTkyIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGxlbmd0aChhcnJheSkge1xuICByZXR1cm4gYXJyYXkubGVuZ3RoIHwgMDtcbn1cblxuZnVuY3Rpb24gZW1wdHkobGVuZ3RoKSB7XG4gIHJldHVybiAhKGxlbmd0aCA+IDApO1xufVxuXG5mdW5jdGlvbiBhcnJheWlmeSh2YWx1ZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZXMgIT09IFwib2JqZWN0XCIgfHwgXCJsZW5ndGhcIiBpbiB2YWx1ZXMgPyB2YWx1ZXMgOiBBcnJheS5mcm9tKHZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZXIocmVkdWNlKSB7XG4gIHJldHVybiB2YWx1ZXMgPT4gcmVkdWNlKC4uLnZhbHVlcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyb3NzKC4uLnZhbHVlcykge1xuICBjb25zdCByZWR1Y2UgPSB0eXBlb2YgdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXSA9PT0gXCJmdW5jdGlvblwiICYmIHJlZHVjZXIodmFsdWVzLnBvcCgpKTtcbiAgdmFsdWVzID0gdmFsdWVzLm1hcChhcnJheWlmeSk7XG4gIGNvbnN0IGxlbmd0aHMgPSB2YWx1ZXMubWFwKGxlbmd0aCk7XG4gIGNvbnN0IGogPSB2YWx1ZXMubGVuZ3RoIC0gMTtcbiAgY29uc3QgaW5kZXggPSBuZXcgQXJyYXkoaiArIDEpLmZpbGwoMCk7XG4gIGNvbnN0IHByb2R1Y3QgPSBbXTtcbiAgaWYgKGogPCAwIHx8IGxlbmd0aHMuc29tZShlbXB0eSkpIHJldHVybiBwcm9kdWN0O1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHByb2R1Y3QucHVzaChpbmRleC5tYXAoKGosIGkpID0+IHZhbHVlc1tpXVtqXSkpO1xuICAgIGxldCBpID0gajtcbiAgICB3aGlsZSAoKytpbmRleFtpXSA9PT0gbGVuZ3Roc1tpXSkge1xuICAgICAgaWYgKGkgPT09IDApIHJldHVybiByZWR1Y2UgPyBwcm9kdWN0Lm1hcChyZWR1Y2UpIDogcHJvZHVjdDtcbiAgICAgIGluZGV4W2ktLV0gPSAwO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/cross.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/cumsum.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/cumsum.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ cumsum)\n/* harmony export */ });\nfunction cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9jdW1zdW0uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2N1bXN1bS5qcz8wNzA4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1bXN1bSh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgdmFyIHN1bSA9IDAsIGluZGV4ID0gMDtcbiAgcmV0dXJuIEZsb2F0NjRBcnJheS5mcm9tKHZhbHVlcywgdmFsdWVvZiA9PT0gdW5kZWZpbmVkXG4gICAgPyB2ID0+IChzdW0gKz0gK3YgfHwgMClcbiAgICA6IHYgPT4gKHN1bSArPSArdmFsdWVvZih2LCBpbmRleCsrLCB2YWx1ZXMpIHx8IDApKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/cumsum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/descending.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-array/src/descending.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ descending)\n/* harmony export */ });\nfunction descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9kZXNjZW5kaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2Rlc2NlbmRpbmcuanM/YjNiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXNjZW5kaW5nKGEsIGIpIHtcbiAgcmV0dXJuIGEgPT0gbnVsbCB8fCBiID09IG51bGwgPyBOYU5cbiAgICA6IGIgPCBhID8gLTFcbiAgICA6IGIgPiBhID8gMVxuICAgIDogYiA+PSBhID8gMFxuICAgIDogTmFOO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/descending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/deviation.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-array/src/deviation.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ deviation)\n/* harmony export */ });\n/* harmony import */ var _variance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./variance.js */ \"../../../node_modules/d3-array/src/variance.js\");\n\n\nfunction deviation(values, valueof) {\n const v = (0,_variance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9kZXZpYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXRCO0FBQ2YsWUFBWSx3REFBUTtBQUNwQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvZGV2aWF0aW9uLmpzPzQ1NzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHZhcmlhbmNlIGZyb20gXCIuL3ZhcmlhbmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldmlhdGlvbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgY29uc3QgdiA9IHZhcmlhbmNlKHZhbHVlcywgdmFsdWVvZik7XG4gIHJldHVybiB2ID8gTWF0aC5zcXJ0KHYpIDogdjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/deviation.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/difference.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-array/src/difference.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ difference)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\nfunction difference(values, ...others) {\n values = new internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet(values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9kaWZmZXJlbmNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW9DOztBQUVyQjtBQUNmLGVBQWUsZ0RBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9kaWZmZXJlbmNlLmpzPzZjNGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlcm5TZXR9IGZyb20gXCJpbnRlcm5tYXBcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlmZmVyZW5jZSh2YWx1ZXMsIC4uLm90aGVycykge1xuICB2YWx1ZXMgPSBuZXcgSW50ZXJuU2V0KHZhbHVlcyk7XG4gIGZvciAoY29uc3Qgb3RoZXIgb2Ygb3RoZXJzKSB7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBvdGhlcikge1xuICAgICAgdmFsdWVzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YWx1ZXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/difference.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/disjoint.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/disjoint.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ disjoint)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\nfunction disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9kaXNqb2ludC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvQzs7QUFFckI7QUFDZix1REFBdUQsZ0RBQVM7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvZGlzam9pbnQuanM/NzNlYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludGVyblNldH0gZnJvbSBcImludGVybm1hcFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkaXNqb2ludCh2YWx1ZXMsIG90aGVyKSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gb3RoZXJbU3ltYm9sLml0ZXJhdG9yXSgpLCBzZXQgPSBuZXcgSW50ZXJuU2V0KCk7XG4gIGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcbiAgICBpZiAoc2V0Lmhhcyh2KSkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCB2YWx1ZSwgZG9uZTtcbiAgICB3aGlsZSAoKHt2YWx1ZSwgZG9uZX0gPSBpdGVyYXRvci5uZXh0KCkpKSB7XG4gICAgICBpZiAoZG9uZSkgYnJlYWs7XG4gICAgICBpZiAoT2JqZWN0LmlzKHYsIHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2V0LmFkZCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/disjoint.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/every.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/every.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ every)\n/* harmony export */ });\nfunction every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ldmVyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ldmVyeS5qcz8wN2E1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV2ZXJ5KHZhbHVlcywgdGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcInRlc3QgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIGlmICghdGVzdCh2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/every.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/extent.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/extent.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ extent)\n/* harmony export */ });\nfunction extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9leHRlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9leHRlbnQuanM/NGE5NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbnQodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBtaW47XG4gIGxldCBtYXg7XG4gIGlmICh2YWx1ZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgaWYgKG1pbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHZhbHVlID49IHZhbHVlKSBtaW4gPSBtYXggPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobWluID4gdmFsdWUpIG1pbiA9IHZhbHVlO1xuICAgICAgICAgIGlmIChtYXggPCB2YWx1ZSkgbWF4ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbCkge1xuICAgICAgICBpZiAobWluID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodmFsdWUgPj0gdmFsdWUpIG1pbiA9IG1heCA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChtaW4gPiB2YWx1ZSkgbWluID0gdmFsdWU7XG4gICAgICAgICAgaWYgKG1heCA8IHZhbHVlKSBtYXggPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gW21pbiwgbWF4XTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/extent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/filter.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/filter.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ filter)\n/* harmony export */ });\nfunction filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9maWx0ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9maWx0ZXIuanM/YTVmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmaWx0ZXIodmFsdWVzLCB0ZXN0KSB7XG4gIGlmICh0eXBlb2YgdGVzdCAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwidGVzdCBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgY29uc3QgYXJyYXkgPSBbXTtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgaWYgKHRlc3QodmFsdWUsICsraW5kZXgsIHZhbHVlcykpIHtcbiAgICAgIGFycmF5LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/filter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/fsum.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/fsum.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Adder\": () => (/* binding */ Adder),\n/* harmony export */ \"fcumsum\": () => (/* binding */ fcumsum),\n/* harmony export */ \"fsum\": () => (/* binding */ fsum)\n/* harmony export */ });\n// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nclass Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nfunction fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nfunction fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9mc3VtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1QkFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2ZzdW0uanM/Y2EyNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vYmxvYi9hNzRlZWEyMzhmNWJhYmExNTc5N2UyZThiNTcwZDE1M2JjODY5MGE3L01vZHVsZXMvbWF0aG1vZHVsZS5jI0wxNDIzXG5leHBvcnQgY2xhc3MgQWRkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9wYXJ0aWFscyA9IG5ldyBGbG9hdDY0QXJyYXkoMzIpO1xuICAgIHRoaXMuX24gPSAwO1xuICB9XG4gIGFkZCh4KSB7XG4gICAgY29uc3QgcCA9IHRoaXMuX3BhcnRpYWxzO1xuICAgIGxldCBpID0gMDtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuX24gJiYgaiA8IDMyOyBqKyspIHtcbiAgICAgIGNvbnN0IHkgPSBwW2pdLFxuICAgICAgICBoaSA9IHggKyB5LFxuICAgICAgICBsbyA9IE1hdGguYWJzKHgpIDwgTWF0aC5hYnMoeSkgPyB4IC0gKGhpIC0geSkgOiB5IC0gKGhpIC0geCk7XG4gICAgICBpZiAobG8pIHBbaSsrXSA9IGxvO1xuICAgICAgeCA9IGhpO1xuICAgIH1cbiAgICBwW2ldID0geDtcbiAgICB0aGlzLl9uID0gaSArIDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdmFsdWVPZigpIHtcbiAgICBjb25zdCBwID0gdGhpcy5fcGFydGlhbHM7XG4gICAgbGV0IG4gPSB0aGlzLl9uLCB4LCB5LCBsbywgaGkgPSAwO1xuICAgIGlmIChuID4gMCkge1xuICAgICAgaGkgPSBwWy0tbl07XG4gICAgICB3aGlsZSAobiA+IDApIHtcbiAgICAgICAgeCA9IGhpO1xuICAgICAgICB5ID0gcFstLW5dO1xuICAgICAgICBoaSA9IHggKyB5O1xuICAgICAgICBsbyA9IHkgLSAoaGkgLSB4KTtcbiAgICAgICAgaWYgKGxvKSBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChuID4gMCAmJiAoKGxvIDwgMCAmJiBwW24gLSAxXSA8IDApIHx8IChsbyA+IDAgJiYgcFtuIC0gMV0gPiAwKSkpIHtcbiAgICAgICAgeSA9IGxvICogMjtcbiAgICAgICAgeCA9IGhpICsgeTtcbiAgICAgICAgaWYgKHkgPT0geCAtIGhpKSBoaSA9IHg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoaTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnN1bSh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgY29uc3QgYWRkZXIgPSBuZXcgQWRkZXIoKTtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlID0gK3ZhbHVlKSB7XG4gICAgICAgIGFkZGVyLmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlID0gK3ZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpIHtcbiAgICAgICAgYWRkZXIuYWRkKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuICthZGRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZjdW1zdW0odmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGNvbnN0IGFkZGVyID0gbmV3IEFkZGVyKCk7XG4gIGxldCBpbmRleCA9IC0xO1xuICByZXR1cm4gRmxvYXQ2NEFycmF5LmZyb20odmFsdWVzLCB2YWx1ZW9mID09PSB1bmRlZmluZWRcbiAgICAgID8gdiA9PiBhZGRlci5hZGQoK3YgfHwgMClcbiAgICAgIDogdiA9PiBhZGRlci5hZGQoK3ZhbHVlb2YodiwgKytpbmRleCwgdmFsdWVzKSB8fCAwKVxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/fsum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/greatest.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/greatest.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ greatest)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n\n\nfunction greatest(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, maxValue) > 0\n : (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncmVhdGVzdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1Qzs7QUFFeEIsb0NBQW9DLHFEQUFTO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBUztBQUNyQixZQUFZLHlEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2dyZWF0ZXN0LmpzP2M4ZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzY2VuZGluZyBmcm9tIFwiLi9hc2NlbmRpbmcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ3JlYXRlc3QodmFsdWVzLCBjb21wYXJlID0gYXNjZW5kaW5nKSB7XG4gIGxldCBtYXg7XG4gIGxldCBkZWZpbmVkID0gZmFsc2U7XG4gIGlmIChjb21wYXJlLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBtYXhWYWx1ZTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbXBhcmUoZWxlbWVudCk7XG4gICAgICBpZiAoZGVmaW5lZFxuICAgICAgICAgID8gYXNjZW5kaW5nKHZhbHVlLCBtYXhWYWx1ZSkgPiAwXG4gICAgICAgICAgOiBhc2NlbmRpbmcodmFsdWUsIHZhbHVlKSA9PT0gMCkge1xuICAgICAgICBtYXggPSBlbGVtZW50O1xuICAgICAgICBtYXhWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBkZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmIChkZWZpbmVkXG4gICAgICAgICAgPyBjb21wYXJlKHZhbHVlLCBtYXgpID4gMFxuICAgICAgICAgIDogY29tcGFyZSh2YWx1ZSwgdmFsdWUpID09PSAwKSB7XG4gICAgICAgIG1heCA9IHZhbHVlO1xuICAgICAgICBkZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/greatest.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/greatestIndex.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-array/src/greatestIndex.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ greatestIndex)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _maxIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maxIndex.js */ \"../../../node_modules/d3-array/src/maxIndex.js\");\n\n\n\nfunction greatestIndex(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (compare.length === 1) return (0,_maxIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncmVhdGVzdEluZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF1QztBQUNGOztBQUV0Qix5Q0FBeUMscURBQVM7QUFDakUsbUNBQW1DLHdEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncmVhdGVzdEluZGV4LmpzPzUzMTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzY2VuZGluZyBmcm9tIFwiLi9hc2NlbmRpbmcuanNcIjtcbmltcG9ydCBtYXhJbmRleCBmcm9tIFwiLi9tYXhJbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBncmVhdGVzdEluZGV4KHZhbHVlcywgY29tcGFyZSA9IGFzY2VuZGluZykge1xuICBpZiAoY29tcGFyZS5sZW5ndGggPT09IDEpIHJldHVybiBtYXhJbmRleCh2YWx1ZXMsIGNvbXBhcmUpO1xuICBsZXQgbWF4VmFsdWU7XG4gIGxldCBtYXggPSAtMTtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgKytpbmRleDtcbiAgICBpZiAobWF4IDwgMFxuICAgICAgICA/IGNvbXBhcmUodmFsdWUsIHZhbHVlKSA9PT0gMFxuICAgICAgICA6IGNvbXBhcmUodmFsdWUsIG1heFZhbHVlKSA+IDApIHtcbiAgICAgIG1heFZhbHVlID0gdmFsdWU7XG4gICAgICBtYXggPSBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/greatestIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/group.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/group.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ group),\n/* harmony export */ \"flatGroup\": () => (/* binding */ flatGroup),\n/* harmony export */ \"flatRollup\": () => (/* binding */ flatRollup),\n/* harmony export */ \"groups\": () => (/* binding */ groups),\n/* harmony export */ \"index\": () => (/* binding */ index),\n/* harmony export */ \"indexes\": () => (/* binding */ indexes),\n/* harmony export */ \"rollup\": () => (/* binding */ rollup),\n/* harmony export */ \"rollups\": () => (/* binding */ rollups)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-array/src/identity.js\");\n\n\n\nfunction group(values, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], keys);\n}\n\nfunction groups(values, ...keys) {\n return nest(values, Array.from, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nfunction flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nfunction flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nfunction rollup(values, reduce, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], reduce, keys);\n}\n\nfunction rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nfunction index(values, ...keys) {\n return nest(values, _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], unique, keys);\n}\n\nfunction indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new internmap__WEBPACK_IMPORTED_MODULE_1__.InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncm91cC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQW9DO0FBQ0M7O0FBRXRCO0FBQ2Ysc0JBQXNCLG9EQUFRLEVBQUUsb0RBQVE7QUFDeEM7O0FBRU87QUFDUCxrQ0FBa0Msb0RBQVE7QUFDMUM7O0FBRUE7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1Asc0JBQXNCLG9EQUFRO0FBQzlCOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQLHNCQUFzQixvREFBUTtBQUM5Qjs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdEQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2dyb3VwLmpzPzI5NWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnRlcm5NYXB9IGZyb20gXCJpbnRlcm5tYXBcIjtcbmltcG9ydCBpZGVudGl0eSBmcm9tIFwiLi9pZGVudGl0eS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBncm91cCh2YWx1ZXMsIC4uLmtleXMpIHtcbiAgcmV0dXJuIG5lc3QodmFsdWVzLCBpZGVudGl0eSwgaWRlbnRpdHksIGtleXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBzKHZhbHVlcywgLi4ua2V5cykge1xuICByZXR1cm4gbmVzdCh2YWx1ZXMsIEFycmF5LmZyb20sIGlkZW50aXR5LCBrZXlzKTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbihncm91cHMsIGtleXMpIHtcbiAgZm9yIChsZXQgaSA9IDEsIG4gPSBrZXlzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGdyb3VwcyA9IGdyb3Vwcy5mbGF0TWFwKGcgPT4gZy5wb3AoKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gWy4uLmcsIGtleSwgdmFsdWVdKSk7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXRHcm91cCh2YWx1ZXMsIC4uLmtleXMpIHtcbiAgcmV0dXJuIGZsYXR0ZW4oZ3JvdXBzKHZhbHVlcywgLi4ua2V5cyksIGtleXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdFJvbGx1cCh2YWx1ZXMsIHJlZHVjZSwgLi4ua2V5cykge1xuICByZXR1cm4gZmxhdHRlbihyb2xsdXBzKHZhbHVlcywgcmVkdWNlLCAuLi5rZXlzKSwga2V5cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByb2xsdXAodmFsdWVzLCByZWR1Y2UsIC4uLmtleXMpIHtcbiAgcmV0dXJuIG5lc3QodmFsdWVzLCBpZGVudGl0eSwgcmVkdWNlLCBrZXlzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvbGx1cHModmFsdWVzLCByZWR1Y2UsIC4uLmtleXMpIHtcbiAgcmV0dXJuIG5lc3QodmFsdWVzLCBBcnJheS5mcm9tLCByZWR1Y2UsIGtleXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXgodmFsdWVzLCAuLi5rZXlzKSB7XG4gIHJldHVybiBuZXN0KHZhbHVlcywgaWRlbnRpdHksIHVuaXF1ZSwga2V5cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleGVzKHZhbHVlcywgLi4ua2V5cykge1xuICByZXR1cm4gbmVzdCh2YWx1ZXMsIEFycmF5LmZyb20sIHVuaXF1ZSwga2V5cyk7XG59XG5cbmZ1bmN0aW9uIHVuaXF1ZSh2YWx1ZXMpIHtcbiAgaWYgKHZhbHVlcy5sZW5ndGggIT09IDEpIHRocm93IG5ldyBFcnJvcihcImR1cGxpY2F0ZSBrZXlcIik7XG4gIHJldHVybiB2YWx1ZXNbMF07XG59XG5cbmZ1bmN0aW9uIG5lc3QodmFsdWVzLCBtYXAsIHJlZHVjZSwga2V5cykge1xuICByZXR1cm4gKGZ1bmN0aW9uIHJlZ3JvdXAodmFsdWVzLCBpKSB7XG4gICAgaWYgKGkgPj0ga2V5cy5sZW5ndGgpIHJldHVybiByZWR1Y2UodmFsdWVzKTtcbiAgICBjb25zdCBncm91cHMgPSBuZXcgSW50ZXJuTWFwKCk7XG4gICAgY29uc3Qga2V5b2YgPSBrZXlzW2krK107XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleW9mKHZhbHVlLCArK2luZGV4LCB2YWx1ZXMpO1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cHMuZ2V0KGtleSk7XG4gICAgICBpZiAoZ3JvdXApIGdyb3VwLnB1c2godmFsdWUpO1xuICAgICAgZWxzZSBncm91cHMuc2V0KGtleSwgW3ZhbHVlXSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVzXSBvZiBncm91cHMpIHtcbiAgICAgIGdyb3Vwcy5zZXQoa2V5LCByZWdyb3VwKHZhbHVlcywgaSkpO1xuICAgIH1cbiAgICByZXR1cm4gbWFwKGdyb3Vwcyk7XG4gIH0pKHZhbHVlcywgMCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/group.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/groupSort.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-array/src/groupSort.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ groupSort)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _group_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./group.js */ \"../../../node_modules/d3-array/src/group.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-array/src/sort.js\");\n\n\n\n\nfunction groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? (0,_sort_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_group_js__WEBPACK_IMPORTED_MODULE_1__.rollup)(values, reduce, key), (([ak, av], [bk, bv]) => (0,_ascending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(av, bv) || (0,_ascending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ak, bk)))\n : (0,_sort_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_group_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || (0,_ascending_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ak, bk))))\n .map(([key]) => key);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncm91cFNvcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF1QztBQUNFO0FBQ1o7O0FBRWQ7QUFDZjtBQUNBLE1BQU0sb0RBQUksQ0FBQyxpREFBTSxnREFBZ0QseURBQVMsWUFBWSx5REFBUztBQUMvRixNQUFNLG9EQUFJLENBQUMscURBQUssMERBQTBELHlEQUFTO0FBQ25GO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9ncm91cFNvcnQuanM/MjhiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuaW1wb3J0IGdyb3VwLCB7cm9sbHVwfSBmcm9tIFwiLi9ncm91cC5qc1wiO1xuaW1wb3J0IHNvcnQgZnJvbSBcIi4vc29ydC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBncm91cFNvcnQodmFsdWVzLCByZWR1Y2UsIGtleSkge1xuICByZXR1cm4gKHJlZHVjZS5sZW5ndGggIT09IDJcbiAgICA/IHNvcnQocm9sbHVwKHZhbHVlcywgcmVkdWNlLCBrZXkpLCAoKFthaywgYXZdLCBbYmssIGJ2XSkgPT4gYXNjZW5kaW5nKGF2LCBidikgfHwgYXNjZW5kaW5nKGFrLCBiaykpKVxuICAgIDogc29ydChncm91cCh2YWx1ZXMsIGtleSksICgoW2FrLCBhdl0sIFtiaywgYnZdKSA9PiByZWR1Y2UoYXYsIGJ2KSB8fCBhc2NlbmRpbmcoYWssIGJrKSkpKVxuICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/groupSort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/identity.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/identity.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ identity)\n/* harmony export */ });\nfunction identity(x) {\n return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9pZGVudGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvaWRlbnRpdHkuanM/Mzc5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpZGVudGl0eSh4KSB7XG4gIHJldHVybiB4O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Adder\": () => (/* reexport safe */ _fsum_js__WEBPACK_IMPORTED_MODULE_10__.Adder),\n/* harmony export */ \"InternMap\": () => (/* reexport safe */ internmap__WEBPACK_IMPORTED_MODULE_56__.InternMap),\n/* harmony export */ \"InternSet\": () => (/* reexport safe */ internmap__WEBPACK_IMPORTED_MODULE_56__.InternSet),\n/* harmony export */ \"ascending\": () => (/* reexport safe */ _ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"bin\": () => (/* reexport safe */ _bin_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"bisect\": () => (/* reexport safe */ _bisect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"bisectCenter\": () => (/* reexport safe */ _bisect_js__WEBPACK_IMPORTED_MODULE_0__.bisectCenter),\n/* harmony export */ \"bisectLeft\": () => (/* reexport safe */ _bisect_js__WEBPACK_IMPORTED_MODULE_0__.bisectLeft),\n/* harmony export */ \"bisectRight\": () => (/* reexport safe */ _bisect_js__WEBPACK_IMPORTED_MODULE_0__.bisectRight),\n/* harmony export */ \"bisector\": () => (/* reexport safe */ _bisector_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"blur\": () => (/* reexport safe */ _blur_js__WEBPACK_IMPORTED_MODULE_3__.blur),\n/* harmony export */ \"blur2\": () => (/* reexport safe */ _blur_js__WEBPACK_IMPORTED_MODULE_3__.blur2),\n/* harmony export */ \"blurImage\": () => (/* reexport safe */ _blur_js__WEBPACK_IMPORTED_MODULE_3__.blurImage),\n/* harmony export */ \"count\": () => (/* reexport safe */ _count_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"cross\": () => (/* reexport safe */ _cross_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"cumsum\": () => (/* reexport safe */ _cumsum_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"descending\": () => (/* reexport safe */ _descending_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"deviation\": () => (/* reexport safe */ _deviation_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"difference\": () => (/* reexport safe */ _difference_js__WEBPACK_IMPORTED_MODULE_50__[\"default\"]),\n/* harmony export */ \"disjoint\": () => (/* reexport safe */ _disjoint_js__WEBPACK_IMPORTED_MODULE_51__[\"default\"]),\n/* harmony export */ \"every\": () => (/* reexport safe */ _every_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]),\n/* harmony export */ \"extent\": () => (/* reexport safe */ _extent_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"fcumsum\": () => (/* reexport safe */ _fsum_js__WEBPACK_IMPORTED_MODULE_10__.fcumsum),\n/* harmony export */ \"filter\": () => (/* reexport safe */ _filter_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]),\n/* harmony export */ \"flatGroup\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.flatGroup),\n/* harmony export */ \"flatRollup\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.flatRollup),\n/* harmony export */ \"fsum\": () => (/* reexport safe */ _fsum_js__WEBPACK_IMPORTED_MODULE_10__.fsum),\n/* harmony export */ \"greatest\": () => (/* reexport safe */ _greatest_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]),\n/* harmony export */ \"greatestIndex\": () => (/* reexport safe */ _greatestIndex_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]),\n/* harmony export */ \"group\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"groupSort\": () => (/* reexport safe */ _groupSort_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"groups\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.groups),\n/* harmony export */ \"histogram\": () => (/* reexport safe */ _bin_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"index\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.index),\n/* harmony export */ \"indexes\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.indexes),\n/* harmony export */ \"intersection\": () => (/* reexport safe */ _intersection_js__WEBPACK_IMPORTED_MODULE_52__[\"default\"]),\n/* harmony export */ \"least\": () => (/* reexport safe */ _least_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ \"leastIndex\": () => (/* reexport safe */ _leastIndex_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ \"map\": () => (/* reexport safe */ _map_js__WEBPACK_IMPORTED_MODULE_46__[\"default\"]),\n/* harmony export */ \"max\": () => (/* reexport safe */ _max_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"maxIndex\": () => (/* reexport safe */ _maxIndex_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"mean\": () => (/* reexport safe */ _mean_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ \"median\": () => (/* reexport safe */ _median_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]),\n/* harmony export */ \"medianIndex\": () => (/* reexport safe */ _median_js__WEBPACK_IMPORTED_MODULE_20__.medianIndex),\n/* harmony export */ \"merge\": () => (/* reexport safe */ _merge_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ \"min\": () => (/* reexport safe */ _min_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]),\n/* harmony export */ \"minIndex\": () => (/* reexport safe */ _minIndex_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]),\n/* harmony export */ \"mode\": () => (/* reexport safe */ _mode_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]),\n/* harmony export */ \"nice\": () => (/* reexport safe */ _nice_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]),\n/* harmony export */ \"pairs\": () => (/* reexport safe */ _pairs_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ \"permute\": () => (/* reexport safe */ _permute_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"quantile\": () => (/* reexport safe */ _quantile_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"quantileIndex\": () => (/* reexport safe */ _quantile_js__WEBPACK_IMPORTED_MODULE_28__.quantileIndex),\n/* harmony export */ \"quantileSorted\": () => (/* reexport safe */ _quantile_js__WEBPACK_IMPORTED_MODULE_28__.quantileSorted),\n/* harmony export */ \"quickselect\": () => (/* reexport safe */ _quickselect_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ \"range\": () => (/* reexport safe */ _range_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ \"rank\": () => (/* reexport safe */ _rank_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"reduce\": () => (/* reexport safe */ _reduce_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]),\n/* harmony export */ \"reverse\": () => (/* reexport safe */ _reverse_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]),\n/* harmony export */ \"rollup\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.rollup),\n/* harmony export */ \"rollups\": () => (/* reexport safe */ _group_js__WEBPACK_IMPORTED_MODULE_11__.rollups),\n/* harmony export */ \"scan\": () => (/* reexport safe */ _scan_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]),\n/* harmony export */ \"shuffle\": () => (/* reexport safe */ _shuffle_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]),\n/* harmony export */ \"shuffler\": () => (/* reexport safe */ _shuffle_js__WEBPACK_IMPORTED_MODULE_37__.shuffler),\n/* harmony export */ \"some\": () => (/* reexport safe */ _some_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]),\n/* harmony export */ \"sort\": () => (/* reexport safe */ _sort_js__WEBPACK_IMPORTED_MODULE_49__[\"default\"]),\n/* harmony export */ \"subset\": () => (/* reexport safe */ _subset_js__WEBPACK_IMPORTED_MODULE_53__[\"default\"]),\n/* harmony export */ \"sum\": () => (/* reexport safe */ _sum_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]),\n/* harmony export */ \"superset\": () => (/* reexport safe */ _superset_js__WEBPACK_IMPORTED_MODULE_54__[\"default\"]),\n/* harmony export */ \"thresholdFreedmanDiaconis\": () => (/* reexport safe */ _threshold_freedmanDiaconis_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"thresholdScott\": () => (/* reexport safe */ _threshold_scott_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"thresholdSturges\": () => (/* reexport safe */ _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"tickIncrement\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_39__.tickIncrement),\n/* harmony export */ \"tickStep\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_39__.tickStep),\n/* harmony export */ \"ticks\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]),\n/* harmony export */ \"transpose\": () => (/* reexport safe */ _transpose_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]),\n/* harmony export */ \"union\": () => (/* reexport safe */ _union_js__WEBPACK_IMPORTED_MODULE_55__[\"default\"]),\n/* harmony export */ \"variance\": () => (/* reexport safe */ _variance_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]),\n/* harmony export */ \"zip\": () => (/* reexport safe */ _zip_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _bisect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bisect.js */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _bisector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bisector.js */ \"../../../node_modules/d3-array/src/bisector.js\");\n/* harmony import */ var _blur_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blur.js */ \"../../../node_modules/d3-array/src/blur.js\");\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./count.js */ \"../../../node_modules/d3-array/src/count.js\");\n/* harmony import */ var _cross_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cross.js */ \"../../../node_modules/d3-array/src/cross.js\");\n/* harmony import */ var _cumsum_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cumsum.js */ \"../../../node_modules/d3-array/src/cumsum.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./descending.js */ \"../../../node_modules/d3-array/src/descending.js\");\n/* harmony import */ var _deviation_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./deviation.js */ \"../../../node_modules/d3-array/src/deviation.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./extent.js */ \"../../../node_modules/d3-array/src/extent.js\");\n/* harmony import */ var _fsum_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./fsum.js */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _group_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./group.js */ \"../../../node_modules/d3-array/src/group.js\");\n/* harmony import */ var _groupSort_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./groupSort.js */ \"../../../node_modules/d3-array/src/groupSort.js\");\n/* harmony import */ var _bin_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./bin.js */ \"../../../node_modules/d3-array/src/bin.js\");\n/* harmony import */ var _threshold_freedmanDiaconis_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./threshold/freedmanDiaconis.js */ \"../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js\");\n/* harmony import */ var _threshold_scott_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./threshold/scott.js */ \"../../../node_modules/d3-array/src/threshold/scott.js\");\n/* harmony import */ var _threshold_sturges_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./threshold/sturges.js */ \"../../../node_modules/d3-array/src/threshold/sturges.js\");\n/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./max.js */ \"../../../node_modules/d3-array/src/max.js\");\n/* harmony import */ var _maxIndex_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./maxIndex.js */ \"../../../node_modules/d3-array/src/maxIndex.js\");\n/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./mean.js */ \"../../../node_modules/d3-array/src/mean.js\");\n/* harmony import */ var _median_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./median.js */ \"../../../node_modules/d3-array/src/median.js\");\n/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./merge.js */ \"../../../node_modules/d3-array/src/merge.js\");\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./min.js */ \"../../../node_modules/d3-array/src/min.js\");\n/* harmony import */ var _minIndex_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./minIndex.js */ \"../../../node_modules/d3-array/src/minIndex.js\");\n/* harmony import */ var _mode_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./mode.js */ \"../../../node_modules/d3-array/src/mode.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./nice.js */ \"../../../node_modules/d3-array/src/nice.js\");\n/* harmony import */ var _pairs_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./pairs.js */ \"../../../node_modules/d3-array/src/pairs.js\");\n/* harmony import */ var _permute_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./permute.js */ \"../../../node_modules/d3-array/src/permute.js\");\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./quantile.js */ \"../../../node_modules/d3-array/src/quantile.js\");\n/* harmony import */ var _quickselect_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./quickselect.js */ \"../../../node_modules/d3-array/src/quickselect.js\");\n/* harmony import */ var _range_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./range.js */ \"../../../node_modules/d3-array/src/range.js\");\n/* harmony import */ var _rank_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rank.js */ \"../../../node_modules/d3-array/src/rank.js\");\n/* harmony import */ var _least_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./least.js */ \"../../../node_modules/d3-array/src/least.js\");\n/* harmony import */ var _leastIndex_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./leastIndex.js */ \"../../../node_modules/d3-array/src/leastIndex.js\");\n/* harmony import */ var _greatest_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./greatest.js */ \"../../../node_modules/d3-array/src/greatest.js\");\n/* harmony import */ var _greatestIndex_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./greatestIndex.js */ \"../../../node_modules/d3-array/src/greatestIndex.js\");\n/* harmony import */ var _scan_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./scan.js */ \"../../../node_modules/d3-array/src/scan.js\");\n/* harmony import */ var _shuffle_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./shuffle.js */ \"../../../node_modules/d3-array/src/shuffle.js\");\n/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./sum.js */ \"../../../node_modules/d3-array/src/sum.js\");\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./ticks.js */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./transpose.js */ \"../../../node_modules/d3-array/src/transpose.js\");\n/* harmony import */ var _variance_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./variance.js */ \"../../../node_modules/d3-array/src/variance.js\");\n/* harmony import */ var _zip_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./zip.js */ \"../../../node_modules/d3-array/src/zip.js\");\n/* harmony import */ var _every_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./every.js */ \"../../../node_modules/d3-array/src/every.js\");\n/* harmony import */ var _some_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./some.js */ \"../../../node_modules/d3-array/src/some.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./filter.js */ \"../../../node_modules/d3-array/src/filter.js\");\n/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./map.js */ \"../../../node_modules/d3-array/src/map.js\");\n/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./reduce.js */ \"../../../node_modules/d3-array/src/reduce.js\");\n/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./reverse.js */ \"../../../node_modules/d3-array/src/reverse.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-array/src/sort.js\");\n/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./difference.js */ \"../../../node_modules/d3-array/src/difference.js\");\n/* harmony import */ var _disjoint_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./disjoint.js */ \"../../../node_modules/d3-array/src/disjoint.js\");\n/* harmony import */ var _intersection_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./intersection.js */ \"../../../node_modules/d3-array/src/intersection.js\");\n/* harmony import */ var _subset_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./subset.js */ \"../../../node_modules/d3-array/src/subset.js\");\n/* harmony import */ var _superset_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./superset.js */ \"../../../node_modules/d3-array/src/superset.js\");\n/* harmony import */ var _union_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./union.js */ \"../../../node_modules/d3-array/src/union.js\");\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Deprecated; use bin.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // Deprecated; use leastIndex.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXFGO0FBQ2pDO0FBQ0Y7QUFDRDtBQUNMO0FBQ0E7QUFDRTtBQUNRO0FBQ0Y7QUFDTjtBQUNDO0FBQzZEO0FBQ3hEO0FBQ1UsQ0FBQyxlQUFlO0FBQ087QUFDdEI7QUFDSTtBQUMzQjtBQUNVO0FBQ1I7QUFDaUI7QUFDZjtBQUNKO0FBQ1U7QUFDUjtBQUNBO0FBQ0U7QUFDSTtBQUNpQztBQUN6QjtBQUNaO0FBQ0Y7QUFDRTtBQUNVO0FBQ0o7QUFDVTtBQUNsQixDQUFDLGVBQWU7QUFDQTtBQUNsQjtBQUM2QjtBQUNqQjtBQUNGO0FBQ1Y7QUFDSTtBQUNGO0FBQ0k7QUFDTjtBQUNNO0FBQ0U7QUFDTjtBQUNZO0FBQ0o7QUFDUTtBQUNaO0FBQ0k7QUFDTjtBQUNHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvaW5kZXguanM/N2MxZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgYmlzZWN0LCBiaXNlY3RSaWdodCwgYmlzZWN0TGVmdCwgYmlzZWN0Q2VudGVyfSBmcm9tIFwiLi9iaXNlY3QuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBhc2NlbmRpbmd9IGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJpc2VjdG9yfSBmcm9tIFwiLi9iaXNlY3Rvci5qc1wiO1xuZXhwb3J0IHtibHVyLCBibHVyMiwgYmx1ckltYWdlfSBmcm9tIFwiLi9ibHVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY291bnR9IGZyb20gXCIuL2NvdW50LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3Jvc3N9IGZyb20gXCIuL2Nyb3NzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3Vtc3VtfSBmcm9tIFwiLi9jdW1zdW0uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkZXNjZW5kaW5nfSBmcm9tIFwiLi9kZXNjZW5kaW5nLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZGV2aWF0aW9ufSBmcm9tIFwiLi9kZXZpYXRpb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHRlbnR9IGZyb20gXCIuL2V4dGVudC5qc1wiO1xuZXhwb3J0IHtBZGRlciwgZnN1bSwgZmN1bXN1bX0gZnJvbSBcIi4vZnN1bS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdyb3VwLCBmbGF0R3JvdXAsIGZsYXRSb2xsdXAsIGdyb3VwcywgaW5kZXgsIGluZGV4ZXMsIHJvbGx1cCwgcm9sbHVwc30gZnJvbSBcIi4vZ3JvdXAuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBncm91cFNvcnR9IGZyb20gXCIuL2dyb3VwU29ydC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJpbiwgZGVmYXVsdCBhcyBoaXN0b2dyYW19IGZyb20gXCIuL2Jpbi5qc1wiOyAvLyBEZXByZWNhdGVkOyB1c2UgYmluLlxuZXhwb3J0IHtkZWZhdWx0IGFzIHRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXN9IGZyb20gXCIuL3RocmVzaG9sZC9mcmVlZG1hbkRpYWNvbmlzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGhyZXNob2xkU2NvdHR9IGZyb20gXCIuL3RocmVzaG9sZC9zY290dC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRocmVzaG9sZFN0dXJnZXN9IGZyb20gXCIuL3RocmVzaG9sZC9zdHVyZ2VzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWF4fSBmcm9tIFwiLi9tYXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYXhJbmRleH0gZnJvbSBcIi4vbWF4SW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtZWFufSBmcm9tIFwiLi9tZWFuLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWVkaWFuLCBtZWRpYW5JbmRleH0gZnJvbSBcIi4vbWVkaWFuLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWVyZ2V9IGZyb20gXCIuL21lcmdlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbWlufSBmcm9tIFwiLi9taW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtaW5JbmRleH0gZnJvbSBcIi4vbWluSW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtb2RlfSBmcm9tIFwiLi9tb2RlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbmljZX0gZnJvbSBcIi4vbmljZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBhaXJzfSBmcm9tIFwiLi9wYWlycy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBlcm11dGV9IGZyb20gXCIuL3Blcm11dGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBxdWFudGlsZSwgcXVhbnRpbGVJbmRleCwgcXVhbnRpbGVTb3J0ZWR9IGZyb20gXCIuL3F1YW50aWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcXVpY2tzZWxlY3R9IGZyb20gXCIuL3F1aWNrc2VsZWN0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZ2V9IGZyb20gXCIuL3JhbmdlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFua30gZnJvbSBcIi4vcmFuay5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGxlYXN0fSBmcm9tIFwiLi9sZWFzdC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGxlYXN0SW5kZXh9IGZyb20gXCIuL2xlYXN0SW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBncmVhdGVzdH0gZnJvbSBcIi4vZ3JlYXRlc3QuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBncmVhdGVzdEluZGV4fSBmcm9tIFwiLi9ncmVhdGVzdEluZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2Nhbn0gZnJvbSBcIi4vc2Nhbi5qc1wiOyAvLyBEZXByZWNhdGVkOyB1c2UgbGVhc3RJbmRleC5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBzaHVmZmxlLCBzaHVmZmxlcn0gZnJvbSBcIi4vc2h1ZmZsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN1bX0gZnJvbSBcIi4vc3VtLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGlja3MsIHRpY2tJbmNyZW1lbnQsIHRpY2tTdGVwfSBmcm9tIFwiLi90aWNrcy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyYW5zcG9zZX0gZnJvbSBcIi4vdHJhbnNwb3NlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmFyaWFuY2V9IGZyb20gXCIuL3ZhcmlhbmNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgemlwfSBmcm9tIFwiLi96aXAuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBldmVyeX0gZnJvbSBcIi4vZXZlcnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzb21lfSBmcm9tIFwiLi9zb21lLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZmlsdGVyfSBmcm9tIFwiLi9maWx0ZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYXB9IGZyb20gXCIuL21hcC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJlZHVjZX0gZnJvbSBcIi4vcmVkdWNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmV2ZXJzZX0gZnJvbSBcIi4vcmV2ZXJzZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNvcnR9IGZyb20gXCIuL3NvcnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkaWZmZXJlbmNlfSBmcm9tIFwiLi9kaWZmZXJlbmNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZGlzam9pbnR9IGZyb20gXCIuL2Rpc2pvaW50LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJzZWN0aW9ufSBmcm9tIFwiLi9pbnRlcnNlY3Rpb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdWJzZXR9IGZyb20gXCIuL3N1YnNldC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN1cGVyc2V0fSBmcm9tIFwiLi9zdXBlcnNldC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHVuaW9ufSBmcm9tIFwiLi91bmlvbi5qc1wiO1xuZXhwb3J0IHtJbnRlcm5NYXAsIEludGVyblNldH0gZnJvbSBcImludGVybm1hcFwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/intersection.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-array/src/intersection.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ intersection)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\nfunction intersection(values, ...others) {\n values = new internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet ? values : new internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet(values);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9pbnRlcnNlY3Rpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBb0M7O0FBRXJCO0FBQ2YsZUFBZSxnREFBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCLGdEQUFTLGdCQUFnQixnREFBUztBQUM3RCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2ludGVyc2VjdGlvbi5qcz9lYjk5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJuU2V0fSBmcm9tIFwiaW50ZXJubWFwXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGludGVyc2VjdGlvbih2YWx1ZXMsIC4uLm90aGVycykge1xuICB2YWx1ZXMgPSBuZXcgSW50ZXJuU2V0KHZhbHVlcyk7XG4gIG90aGVycyA9IG90aGVycy5tYXAoc2V0KTtcbiAgb3V0OiBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIGZvciAoY29uc3Qgb3RoZXIgb2Ygb3RoZXJzKSB7XG4gICAgICBpZiAoIW90aGVyLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWVzLmRlbGV0ZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlIG91dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlcztcbn1cblxuZnVuY3Rpb24gc2V0KHZhbHVlcykge1xuICByZXR1cm4gdmFsdWVzIGluc3RhbmNlb2YgSW50ZXJuU2V0ID8gdmFsdWVzIDogbmV3IEludGVyblNldCh2YWx1ZXMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/intersection.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/least.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/least.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ least)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n\n\nfunction least(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, minValue) < 0\n : (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9sZWFzdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1Qzs7QUFFeEIsaUNBQWlDLHFEQUFTO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBUztBQUNyQixZQUFZLHlEQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2xlYXN0LmpzP2ViM2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzY2VuZGluZyBmcm9tIFwiLi9hc2NlbmRpbmcuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGVhc3QodmFsdWVzLCBjb21wYXJlID0gYXNjZW5kaW5nKSB7XG4gIGxldCBtaW47XG4gIGxldCBkZWZpbmVkID0gZmFsc2U7XG4gIGlmIChjb21wYXJlLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBtaW5WYWx1ZTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbXBhcmUoZWxlbWVudCk7XG4gICAgICBpZiAoZGVmaW5lZFxuICAgICAgICAgID8gYXNjZW5kaW5nKHZhbHVlLCBtaW5WYWx1ZSkgPCAwXG4gICAgICAgICAgOiBhc2NlbmRpbmcodmFsdWUsIHZhbHVlKSA9PT0gMCkge1xuICAgICAgICBtaW4gPSBlbGVtZW50O1xuICAgICAgICBtaW5WYWx1ZSA9IHZhbHVlO1xuICAgICAgICBkZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmIChkZWZpbmVkXG4gICAgICAgICAgPyBjb21wYXJlKHZhbHVlLCBtaW4pIDwgMFxuICAgICAgICAgIDogY29tcGFyZSh2YWx1ZSwgdmFsdWUpID09PSAwKSB7XG4gICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICBkZWZpbmVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1pbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/least.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/leastIndex.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-array/src/leastIndex.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ leastIndex)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _minIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./minIndex.js */ \"../../../node_modules/d3-array/src/minIndex.js\");\n\n\n\nfunction leastIndex(values, compare = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (compare.length === 1) return (0,_minIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9sZWFzdEluZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF1QztBQUNGOztBQUV0QixzQ0FBc0MscURBQVM7QUFDOUQsbUNBQW1DLHdEQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9sZWFzdEluZGV4LmpzP2U4MmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzY2VuZGluZyBmcm9tIFwiLi9hc2NlbmRpbmcuanNcIjtcbmltcG9ydCBtaW5JbmRleCBmcm9tIFwiLi9taW5JbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsZWFzdEluZGV4KHZhbHVlcywgY29tcGFyZSA9IGFzY2VuZGluZykge1xuICBpZiAoY29tcGFyZS5sZW5ndGggPT09IDEpIHJldHVybiBtaW5JbmRleCh2YWx1ZXMsIGNvbXBhcmUpO1xuICBsZXQgbWluVmFsdWU7XG4gIGxldCBtaW4gPSAtMTtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgKytpbmRleDtcbiAgICBpZiAobWluIDwgMFxuICAgICAgICA/IGNvbXBhcmUodmFsdWUsIHZhbHVlKSA9PT0gMFxuICAgICAgICA6IGNvbXBhcmUodmFsdWUsIG1pblZhbHVlKSA8IDApIHtcbiAgICAgIG1pblZhbHVlID0gdmFsdWU7XG4gICAgICBtaW4gPSBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1pbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/leastIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/map.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/map.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ map)\n/* harmony export */ });\nfunction map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXAuanM/YzAyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXAodmFsdWVzLCBtYXBwZXIpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZXNbU3ltYm9sLml0ZXJhdG9yXSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwidmFsdWVzIGlzIG5vdCBpdGVyYWJsZVwiKTtcbiAgaWYgKHR5cGVvZiBtYXBwZXIgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIm1hcHBlciBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgcmV0dXJuIEFycmF5LmZyb20odmFsdWVzLCAodmFsdWUsIGluZGV4KSA9PiBtYXBwZXIodmFsdWUsIGluZGV4LCB2YWx1ZXMpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/map.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/max.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/max.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ max)\n/* harmony export */ });\nfunction max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21heC5qcz80NzE3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1heCh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgbGV0IG1heDtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbFxuICAgICAgICAgICYmIChtYXggPCB2YWx1ZSB8fCAobWF4ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbFxuICAgICAgICAgICYmIChtYXggPCB2YWx1ZSB8fCAobWF4ID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/max.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/maxIndex.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/maxIndex.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ maxIndex)\n/* harmony export */ });\nfunction maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXhJbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21heEluZGV4LmpzPzU0ZTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWF4SW5kZXgodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBtYXg7XG4gIGxldCBtYXhJbmRleCA9IC0xO1xuICBsZXQgaW5kZXggPSAtMTtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICArK2luZGV4O1xuICAgICAgaWYgKHZhbHVlICE9IG51bGxcbiAgICAgICAgICAmJiAobWF4IDwgdmFsdWUgfHwgKG1heCA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWF4ID0gdmFsdWUsIG1heEluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpICE9IG51bGxcbiAgICAgICAgICAmJiAobWF4IDwgdmFsdWUgfHwgKG1heCA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWF4ID0gdmFsdWUsIG1heEluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtYXhJbmRleDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/maxIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/mean.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/mean.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ mean)\n/* harmony export */ });\nfunction mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tZWFuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvbWVhbi5qcz8yZjNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lYW4odmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGxldCBzdW0gPSAwO1xuICBpZiAodmFsdWVvZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiAodmFsdWUgPSArdmFsdWUpID49IHZhbHVlKSB7XG4gICAgICAgICsrY291bnQsIHN1bSArPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbCAmJiAodmFsdWUgPSArdmFsdWUpID49IHZhbHVlKSB7XG4gICAgICAgICsrY291bnQsIHN1bSArPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNvdW50KSByZXR1cm4gc3VtIC8gY291bnQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/mean.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/median.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/median.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ median),\n/* harmony export */ \"medianIndex\": () => (/* binding */ medianIndex)\n/* harmony export */ });\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quantile.js */ \"../../../node_modules/d3-array/src/quantile.js\");\n\n\nfunction median(values, valueof) {\n return (0,_quantile_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, 0.5, valueof);\n}\n\nfunction medianIndex(values, valueof) {\n return (0,_quantile_js__WEBPACK_IMPORTED_MODULE_0__.quantileIndex)(values, 0.5, valueof);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tZWRpYW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNEOztBQUV2QztBQUNmLFNBQVMsd0RBQVE7QUFDakI7O0FBRU87QUFDUCxTQUFTLDJEQUFhO0FBQ3RCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvbWVkaWFuLmpzP2U4ODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHF1YW50aWxlLCB7cXVhbnRpbGVJbmRleH0gZnJvbSBcIi4vcXVhbnRpbGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVkaWFuKHZhbHVlcywgdmFsdWVvZikge1xuICByZXR1cm4gcXVhbnRpbGUodmFsdWVzLCAwLjUsIHZhbHVlb2YpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFuSW5kZXgodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIHJldHVybiBxdWFudGlsZUluZGV4KHZhbHVlcywgMC41LCB2YWx1ZW9mKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/median.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/merge.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/merge.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ merge)\n/* harmony export */ });\nfunction* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nfunction merge(arrays) {\n return Array.from(flatten(arrays));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tZXJnZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tZXJnZS5qcz9iMTg3Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uKiBmbGF0dGVuKGFycmF5cykge1xuICBmb3IgKGNvbnN0IGFycmF5IG9mIGFycmF5cykge1xuICAgIHlpZWxkKiBhcnJheTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZShhcnJheXMpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZmxhdHRlbihhcnJheXMpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/merge.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/min.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/min.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ min)\n/* harmony export */ });\nfunction min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9taW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21pbi5qcz9hMTg1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgbGV0IG1pbjtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbFxuICAgICAgICAgICYmIChtaW4gPiB2YWx1ZSB8fCAobWluID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbFxuICAgICAgICAgICYmIChtaW4gPiB2YWx1ZSB8fCAobWluID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPj0gdmFsdWUpKSkge1xuICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1pbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/min.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/minIndex.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/minIndex.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ minIndex)\n/* harmony export */ });\nfunction minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9taW5JbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21pbkluZGV4LmpzPzM2OWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWluSW5kZXgodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBtaW47XG4gIGxldCBtaW5JbmRleCA9IC0xO1xuICBsZXQgaW5kZXggPSAtMTtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICArK2luZGV4O1xuICAgICAgaWYgKHZhbHVlICE9IG51bGxcbiAgICAgICAgICAmJiAobWluID4gdmFsdWUgfHwgKG1pbiA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWluID0gdmFsdWUsIG1pbkluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWUsICsraW5kZXgsIHZhbHVlcykpICE9IG51bGxcbiAgICAgICAgICAmJiAobWluID4gdmFsdWUgfHwgKG1pbiA9PT0gdW5kZWZpbmVkICYmIHZhbHVlID49IHZhbHVlKSkpIHtcbiAgICAgICAgbWluID0gdmFsdWUsIG1pbkluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBtaW5JbmRleDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/minIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/mode.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/mode.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ mode)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\nfunction mode(values, valueof) {\n const counts = new internmap__WEBPACK_IMPORTED_MODULE_0__.InternMap();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tb2RlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW9DOztBQUVyQjtBQUNmLHFCQUFxQixnREFBUztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21vZGUuanM/Yjc4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludGVybk1hcH0gZnJvbSBcImludGVybm1hcFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2RlKHZhbHVlcywgdmFsdWVvZikge1xuICBjb25zdCBjb3VudHMgPSBuZXcgSW50ZXJuTWFwKCk7XG4gIGlmICh2YWx1ZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlID49IHZhbHVlKSB7XG4gICAgICAgIGNvdW50cy5zZXQodmFsdWUsIChjb3VudHMuZ2V0KHZhbHVlKSB8fCAwKSArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgaW5kZXggPSAtMTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlLCArK2luZGV4LCB2YWx1ZXMpKSAhPSBudWxsICYmIHZhbHVlID49IHZhbHVlKSB7XG4gICAgICAgIGNvdW50cy5zZXQodmFsdWUsIChjb3VudHMuZ2V0KHZhbHVlKSB8fCAwKSArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBsZXQgbW9kZVZhbHVlO1xuICBsZXQgbW9kZUNvdW50ID0gMDtcbiAgZm9yIChjb25zdCBbdmFsdWUsIGNvdW50XSBvZiBjb3VudHMpIHtcbiAgICBpZiAoY291bnQgPiBtb2RlQ291bnQpIHtcbiAgICAgIG1vZGVDb3VudCA9IGNvdW50O1xuICAgICAgbW9kZVZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlVmFsdWU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/mode.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/nice.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/nice.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ nice)\n/* harmony export */ });\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ticks.js */ \"../../../node_modules/d3-array/src/ticks.js\");\n\n\nfunction nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = (0,_ticks_js__WEBPACK_IMPORTED_MODULE_0__.tickIncrement)(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9uaWNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlDOztBQUUxQjtBQUNmO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQWE7QUFDOUI7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL25pY2UuanM/NmM2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tJbmNyZW1lbnR9IGZyb20gXCIuL3RpY2tzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5pY2Uoc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIGxldCBwcmVzdGVwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgaWYgKHN0ZXAgPT09IHByZXN0ZXAgfHwgc3RlcCA9PT0gMCB8fCAhaXNGaW5pdGUoc3RlcCkpIHtcbiAgICAgIHJldHVybiBbc3RhcnQsIHN0b3BdO1xuICAgIH0gZWxzZSBpZiAoc3RlcCA+IDApIHtcbiAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgIHN0b3AgPSBNYXRoLmNlaWwoc3RvcCAvIHN0ZXApICogc3RlcDtcbiAgICB9IGVsc2UgaWYgKHN0ZXAgPCAwKSB7XG4gICAgICBzdGFydCA9IE1hdGguY2VpbChzdGFydCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIHN0b3AgPSBNYXRoLmZsb29yKHN0b3AgKiBzdGVwKSAvIHN0ZXA7XG4gICAgfVxuICAgIHByZXN0ZXAgPSBzdGVwO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/nice.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/number.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/number.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ number),\n/* harmony export */ \"numbers\": () => (/* binding */ numbers)\n/* harmony export */ });\nfunction number(x) {\n return x === null ? NaN : +x;\n}\n\nfunction* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9udW1iZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZTtBQUNmO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL251bWJlci5qcz9kN2QzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG51bWJlcih4KSB7XG4gIHJldHVybiB4ID09PSBudWxsID8gTmFOIDogK3g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogbnVtYmVycyh2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgKHZhbHVlID0gK3ZhbHVlKSA+PSB2YWx1ZSkge1xuICAgICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkgIT0gbnVsbCAmJiAodmFsdWUgPSArdmFsdWUpID49IHZhbHVlKSB7XG4gICAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/number.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/pairs.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/pairs.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ pairs),\n/* harmony export */ \"pair\": () => (/* binding */ pair)\n/* harmony export */ });\nfunction pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nfunction pair(a, b) {\n return [a, b];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9wYWlycy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvcGFpcnMuanM/OTBlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYWlycyh2YWx1ZXMsIHBhaXJvZiA9IHBhaXIpIHtcbiAgY29uc3QgcGFpcnMgPSBbXTtcbiAgbGV0IHByZXZpb3VzO1xuICBsZXQgZmlyc3QgPSBmYWxzZTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBpZiAoZmlyc3QpIHBhaXJzLnB1c2gocGFpcm9mKHByZXZpb3VzLCB2YWx1ZSkpO1xuICAgIHByZXZpb3VzID0gdmFsdWU7XG4gICAgZmlyc3QgPSB0cnVlO1xuICB9XG4gIHJldHVybiBwYWlycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhaXIoYSwgYikge1xuICByZXR1cm4gW2EsIGJdO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/pairs.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/permute.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-array/src/permute.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ permute)\n/* harmony export */ });\nfunction permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9wZXJtdXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9wZXJtdXRlLmpzP2IwM2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGVybXV0ZShzb3VyY2UsIGtleXMpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oa2V5cywga2V5ID0+IHNvdXJjZVtrZXldKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/permute.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/quantile.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/quantile.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ quantile),\n/* harmony export */ \"quantileIndex\": () => (/* binding */ quantileIndex),\n/* harmony export */ \"quantileSorted\": () => (/* binding */ quantileSorted)\n/* harmony export */ });\n/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./max.js */ \"../../../node_modules/d3-array/src/max.js\");\n/* harmony import */ var _maxIndex_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./maxIndex.js */ \"../../../node_modules/d3-array/src/maxIndex.js\");\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./min.js */ \"../../../node_modules/d3-array/src/min.js\");\n/* harmony import */ var _minIndex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./minIndex.js */ \"../../../node_modules/d3-array/src/minIndex.js\");\n/* harmony import */ var _quickselect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./quickselect.js */ \"../../../node_modules/d3-array/src/quickselect.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-array/src/number.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-array/src/sort.js\");\n/* harmony import */ var _greatest_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./greatest.js */ \"../../../node_modules/d3-array/src/greatest.js\");\n\n\n\n\n\n\n\n\n\nfunction quantile(values, p, valueof) {\n values = Float64Array.from((0,_number_js__WEBPACK_IMPORTED_MODULE_0__.numbers)(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return (0,_min_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values);\n if (p >= 1) return (0,_max_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = (0,_max_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_quickselect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(values, i0).subarray(0, i0 + 1)),\n value1 = (0,_min_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction quantileSorted(values, p, valueof = _number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nfunction quantileIndex(values, p, valueof = _number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(valueof(values[i], i, values)));\n if (p <= 0) return (0,_minIndex_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(numbers);\n if (p >= 1) return (0,_maxIndex_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n (0,_quickselect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(index, i, 0, j, (i, j) => (0,_sort_js__WEBPACK_IMPORTED_MODULE_6__.ascendingDefined)(numbers[i], numbers[j]));\n i = (0,_greatest_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9xdWFudGlsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUEyQjtBQUNVO0FBQ1Y7QUFDVTtBQUNNO0FBQ0M7QUFDRDtBQUNOOztBQUV0QjtBQUNmLDZCQUE2QixtREFBTztBQUNwQztBQUNBLDhCQUE4QixtREFBRztBQUNqQyxxQkFBcUIsbURBQUc7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtREFBRyxDQUFDLDJEQUFXO0FBQzlCLGVBQWUsbURBQUc7QUFDbEI7QUFDQTs7QUFFTyw2Q0FBNkMsa0RBQU07QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sNENBQTRDLGtEQUFNO0FBQ3pEO0FBQ0EsZ0RBQWdELHNEQUFNO0FBQ3RELHFCQUFxQix3REFBUTtBQUM3QixxQkFBcUIsd0RBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLDJEQUFXLDJCQUEyQiwwREFBZ0I7QUFDeEQsTUFBTSx3REFBUTtBQUNkO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9xdWFudGlsZS5qcz9kYTYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtYXggZnJvbSBcIi4vbWF4LmpzXCI7XG5pbXBvcnQgbWF4SW5kZXggZnJvbSBcIi4vbWF4SW5kZXguanNcIjtcbmltcG9ydCBtaW4gZnJvbSBcIi4vbWluLmpzXCI7XG5pbXBvcnQgbWluSW5kZXggZnJvbSBcIi4vbWluSW5kZXguanNcIjtcbmltcG9ydCBxdWlja3NlbGVjdCBmcm9tIFwiLi9xdWlja3NlbGVjdC5qc1wiO1xuaW1wb3J0IG51bWJlciwge251bWJlcnN9IGZyb20gXCIuL251bWJlci5qc1wiO1xuaW1wb3J0IHthc2NlbmRpbmdEZWZpbmVkfSBmcm9tIFwiLi9zb3J0LmpzXCI7XG5pbXBvcnQgZ3JlYXRlc3QgZnJvbSBcIi4vZ3JlYXRlc3QuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhbnRpbGUodmFsdWVzLCBwLCB2YWx1ZW9mKSB7XG4gIHZhbHVlcyA9IEZsb2F0NjRBcnJheS5mcm9tKG51bWJlcnModmFsdWVzLCB2YWx1ZW9mKSk7XG4gIGlmICghKG4gPSB2YWx1ZXMubGVuZ3RoKSB8fCBpc05hTihwID0gK3ApKSByZXR1cm47XG4gIGlmIChwIDw9IDAgfHwgbiA8IDIpIHJldHVybiBtaW4odmFsdWVzKTtcbiAgaWYgKHAgPj0gMSkgcmV0dXJuIG1heCh2YWx1ZXMpO1xuICB2YXIgbixcbiAgICAgIGkgPSAobiAtIDEpICogcCxcbiAgICAgIGkwID0gTWF0aC5mbG9vcihpKSxcbiAgICAgIHZhbHVlMCA9IG1heChxdWlja3NlbGVjdCh2YWx1ZXMsIGkwKS5zdWJhcnJheSgwLCBpMCArIDEpKSxcbiAgICAgIHZhbHVlMSA9IG1pbih2YWx1ZXMuc3ViYXJyYXkoaTAgKyAxKSk7XG4gIHJldHVybiB2YWx1ZTAgKyAodmFsdWUxIC0gdmFsdWUwKSAqIChpIC0gaTApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhbnRpbGVTb3J0ZWQodmFsdWVzLCBwLCB2YWx1ZW9mID0gbnVtYmVyKSB7XG4gIGlmICghKG4gPSB2YWx1ZXMubGVuZ3RoKSB8fCBpc05hTihwID0gK3ApKSByZXR1cm47XG4gIGlmIChwIDw9IDAgfHwgbiA8IDIpIHJldHVybiArdmFsdWVvZih2YWx1ZXNbMF0sIDAsIHZhbHVlcyk7XG4gIGlmIChwID49IDEpIHJldHVybiArdmFsdWVvZih2YWx1ZXNbbiAtIDFdLCBuIC0gMSwgdmFsdWVzKTtcbiAgdmFyIG4sXG4gICAgICBpID0gKG4gLSAxKSAqIHAsXG4gICAgICBpMCA9IE1hdGguZmxvb3IoaSksXG4gICAgICB2YWx1ZTAgPSArdmFsdWVvZih2YWx1ZXNbaTBdLCBpMCwgdmFsdWVzKSxcbiAgICAgIHZhbHVlMSA9ICt2YWx1ZW9mKHZhbHVlc1tpMCArIDFdLCBpMCArIDEsIHZhbHVlcyk7XG4gIHJldHVybiB2YWx1ZTAgKyAodmFsdWUxIC0gdmFsdWUwKSAqIChpIC0gaTApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhbnRpbGVJbmRleCh2YWx1ZXMsIHAsIHZhbHVlb2YgPSBudW1iZXIpIHtcbiAgaWYgKGlzTmFOKHAgPSArcCkpIHJldHVybjtcbiAgbnVtYmVycyA9IEZsb2F0NjRBcnJheS5mcm9tKHZhbHVlcywgKF8sIGkpID0+IG51bWJlcih2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkpO1xuICBpZiAocCA8PSAwKSByZXR1cm4gbWluSW5kZXgobnVtYmVycyk7XG4gIGlmIChwID49IDEpIHJldHVybiBtYXhJbmRleChudW1iZXJzKTtcbiAgdmFyIG51bWJlcnMsXG4gICAgICBpbmRleCA9IFVpbnQzMkFycmF5LmZyb20odmFsdWVzLCAoXywgaSkgPT4gaSksXG4gICAgICBqID0gbnVtYmVycy5sZW5ndGggLSAxLFxuICAgICAgaSA9IE1hdGguZmxvb3IoaiAqIHApO1xuICBxdWlja3NlbGVjdChpbmRleCwgaSwgMCwgaiwgKGksIGopID0+IGFzY2VuZGluZ0RlZmluZWQobnVtYmVyc1tpXSwgbnVtYmVyc1tqXSkpO1xuICBpID0gZ3JlYXRlc3QoaW5kZXguc3ViYXJyYXkoMCwgaSArIDEpLCAoaSkgPT4gbnVtYmVyc1tpXSk7XG4gIHJldHVybiBpID49IDAgPyBpIDogLTE7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/quantile.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/quickselect.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-array/src/quickselect.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ quickselect)\n/* harmony export */ });\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-array/src/sort.js\");\n\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nfunction quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? _sort_js__WEBPACK_IMPORTED_MODULE_0__.ascendingDefined : (0,_sort_js__WEBPACK_IMPORTED_MODULE_0__.compareDefined)(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9xdWlja3NlbGVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEyRDs7QUFFM0Q7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9DQUFvQyxzREFBZ0IsR0FBRyx3REFBYzs7QUFFckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3F1aWNrc2VsZWN0LmpzPzhmODUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2NlbmRpbmdEZWZpbmVkLCBjb21wYXJlRGVmaW5lZH0gZnJvbSBcIi4vc29ydC5qc1wiO1xuXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbW91cm5lci9xdWlja3NlbGVjdFxuLy8gSVNDIGxpY2Vuc2UsIENvcHlyaWdodCAyMDE4IFZsYWRpbWlyIEFnYWZvbmtpbi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1aWNrc2VsZWN0KGFycmF5LCBrLCBsZWZ0ID0gMCwgcmlnaHQgPSBJbmZpbml0eSwgY29tcGFyZSkge1xuICBrID0gTWF0aC5mbG9vcihrKTtcbiAgbGVmdCA9IE1hdGguZmxvb3IoTWF0aC5tYXgoMCwgbGVmdCkpO1xuICByaWdodCA9IE1hdGguZmxvb3IoTWF0aC5taW4oYXJyYXkubGVuZ3RoIC0gMSwgcmlnaHQpKTtcblxuICBpZiAoIShsZWZ0IDw9IGsgJiYgayA8PSByaWdodCkpIHJldHVybiBhcnJheTtcblxuICBjb21wYXJlID0gY29tcGFyZSA9PT0gdW5kZWZpbmVkID8gYXNjZW5kaW5nRGVmaW5lZCA6IGNvbXBhcmVEZWZpbmVkKGNvbXBhcmUpO1xuXG4gIHdoaWxlIChyaWdodCA+IGxlZnQpIHtcbiAgICBpZiAocmlnaHQgLSBsZWZ0ID4gNjAwKSB7XG4gICAgICBjb25zdCBuID0gcmlnaHQgLSBsZWZ0ICsgMTtcbiAgICAgIGNvbnN0IG0gPSBrIC0gbGVmdCArIDE7XG4gICAgICBjb25zdCB6ID0gTWF0aC5sb2cobik7XG4gICAgICBjb25zdCBzID0gMC41ICogTWF0aC5leHAoMiAqIHogLyAzKTtcbiAgICAgIGNvbnN0IHNkID0gMC41ICogTWF0aC5zcXJ0KHogKiBzICogKG4gLSBzKSAvIG4pICogKG0gLSBuIC8gMiA8IDAgPyAtMSA6IDEpO1xuICAgICAgY29uc3QgbmV3TGVmdCA9IE1hdGgubWF4KGxlZnQsIE1hdGguZmxvb3IoayAtIG0gKiBzIC8gbiArIHNkKSk7XG4gICAgICBjb25zdCBuZXdSaWdodCA9IE1hdGgubWluKHJpZ2h0LCBNYXRoLmZsb29yKGsgKyAobiAtIG0pICogcyAvIG4gKyBzZCkpO1xuICAgICAgcXVpY2tzZWxlY3QoYXJyYXksIGssIG5ld0xlZnQsIG5ld1JpZ2h0LCBjb21wYXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ID0gYXJyYXlba107XG4gICAgbGV0IGkgPSBsZWZ0O1xuICAgIGxldCBqID0gcmlnaHQ7XG5cbiAgICBzd2FwKGFycmF5LCBsZWZ0LCBrKTtcbiAgICBpZiAoY29tcGFyZShhcnJheVtyaWdodF0sIHQpID4gMCkgc3dhcChhcnJheSwgbGVmdCwgcmlnaHQpO1xuXG4gICAgd2hpbGUgKGkgPCBqKSB7XG4gICAgICBzd2FwKGFycmF5LCBpLCBqKSwgKytpLCAtLWo7XG4gICAgICB3aGlsZSAoY29tcGFyZShhcnJheVtpXSwgdCkgPCAwKSArK2k7XG4gICAgICB3aGlsZSAoY29tcGFyZShhcnJheVtqXSwgdCkgPiAwKSAtLWo7XG4gICAgfVxuXG4gICAgaWYgKGNvbXBhcmUoYXJyYXlbbGVmdF0sIHQpID09PSAwKSBzd2FwKGFycmF5LCBsZWZ0LCBqKTtcbiAgICBlbHNlICsraiwgc3dhcChhcnJheSwgaiwgcmlnaHQpO1xuXG4gICAgaWYgKGogPD0gaykgbGVmdCA9IGogKyAxO1xuICAgIGlmIChrIDw9IGopIHJpZ2h0ID0gaiAtIDE7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIHN3YXAoYXJyYXksIGksIGopIHtcbiAgY29uc3QgdCA9IGFycmF5W2ldO1xuICBhcnJheVtpXSA9IGFycmF5W2pdO1xuICBhcnJheVtqXSA9IHQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/quickselect.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/range.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/range.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ range)\n/* harmony export */ });\nfunction range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yYW5nZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yYW5nZS5qcz83NWRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJhbmdlKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gIHN0YXJ0ID0gK3N0YXJ0LCBzdG9wID0gK3N0b3AsIHN0ZXAgPSAobiA9IGFyZ3VtZW50cy5sZW5ndGgpIDwgMiA/IChzdG9wID0gc3RhcnQsIHN0YXJ0ID0gMCwgMSkgOiBuIDwgMyA/IDEgOiArc3RlcDtcblxuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IE1hdGgubWF4KDAsIE1hdGguY2VpbCgoc3RvcCAtIHN0YXJ0KSAvIHN0ZXApKSB8IDAsXG4gICAgICByYW5nZSA9IG5ldyBBcnJheShuKTtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIHJhbmdlW2ldID0gc3RhcnQgKyBpICogc3RlcDtcbiAgfVxuXG4gIHJldHVybiByYW5nZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/range.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/rank.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/rank.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rank)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-array/src/sort.js\");\n\n\n\nfunction rank(values, valueof = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n values = Uint32Array.from(V, (_, i) => i);\n // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n values.sort(valueof === _ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? (i, j) => (0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.ascendingDefined)(V[i], V[j]) : (0,_sort_js__WEBPACK_IMPORTED_MODULE_1__.compareDefined)(compareIndex));\n values.forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yYW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF1QztBQUNvQjs7QUFFNUMsZ0NBQWdDLHFEQUFTO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxxREFBUztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixxREFBUyxhQUFhLDBEQUFnQixlQUFlLHdEQUFjO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvcmFuay5qcz9hZTJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5pbXBvcnQge2FzY2VuZGluZ0RlZmluZWQsIGNvbXBhcmVEZWZpbmVkfSBmcm9tIFwiLi9zb3J0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJhbmsodmFsdWVzLCB2YWx1ZW9mID0gYXNjZW5kaW5nKSB7XG4gIGlmICh0eXBlb2YgdmFsdWVzW1N5bWJvbC5pdGVyYXRvcl0gIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcInZhbHVlcyBpcyBub3QgaXRlcmFibGVcIik7XG4gIGxldCBWID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICBjb25zdCBSID0gbmV3IEZsb2F0NjRBcnJheShWLmxlbmd0aCk7XG4gIGlmICh2YWx1ZW9mLmxlbmd0aCAhPT0gMikgViA9IFYubWFwKHZhbHVlb2YpLCB2YWx1ZW9mID0gYXNjZW5kaW5nO1xuICBjb25zdCBjb21wYXJlSW5kZXggPSAoaSwgaikgPT4gdmFsdWVvZihWW2ldLCBWW2pdKTtcbiAgbGV0IGssIHI7XG4gIHZhbHVlcyA9IFVpbnQzMkFycmF5LmZyb20oViwgKF8sIGkpID0+IGkpO1xuICAvLyBSaXNreSBjaGFpbmluZyBkdWUgdG8gU2FmYXJpIDE0IGh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy1hcnJheS9pc3N1ZXMvMTIzXG4gIHZhbHVlcy5zb3J0KHZhbHVlb2YgPT09IGFzY2VuZGluZyA/IChpLCBqKSA9PiBhc2NlbmRpbmdEZWZpbmVkKFZbaV0sIFZbal0pIDogY29tcGFyZURlZmluZWQoY29tcGFyZUluZGV4KSk7XG4gIHZhbHVlcy5mb3JFYWNoKChqLCBpKSA9PiB7XG4gICAgICBjb25zdCBjID0gY29tcGFyZUluZGV4KGosIGsgPT09IHVuZGVmaW5lZCA/IGogOiBrKTtcbiAgICAgIGlmIChjID49IDApIHtcbiAgICAgICAgaWYgKGsgPT09IHVuZGVmaW5lZCB8fCBjID4gMCkgayA9IGosIHIgPSBpO1xuICAgICAgICBSW2pdID0gcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFJbal0gPSBOYU47XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiBSO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/rank.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/reduce.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/reduce.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ reduce)\n/* harmony export */ });\nfunction reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yZWR1Y2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGFBQWE7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtQkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yZWR1Y2UuanM/N2ZhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWR1Y2UodmFsdWVzLCByZWR1Y2VyLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHJlZHVjZXIgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcInJlZHVjZXIgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gIGNvbnN0IGl0ZXJhdG9yID0gdmFsdWVzW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgbGV0IGRvbmUsIG5leHQsIGluZGV4ID0gLTE7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICh7ZG9uZSwgdmFsdWV9ID0gaXRlcmF0b3IubmV4dCgpKTtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgICsraW5kZXg7XG4gIH1cbiAgd2hpbGUgKCh7ZG9uZSwgdmFsdWU6IG5leHR9ID0gaXRlcmF0b3IubmV4dCgpKSwgIWRvbmUpIHtcbiAgICB2YWx1ZSA9IHJlZHVjZXIodmFsdWUsIG5leHQsICsraW5kZXgsIHZhbHVlcyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/reduce.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/reverse.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-array/src/reverse.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ reverse)\n/* harmony export */ });\nfunction reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9yZXZlcnNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3JldmVyc2UuanM/OTNjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXZlcnNlKHZhbHVlcykge1xuICBpZiAodHlwZW9mIHZhbHVlc1tTeW1ib2wuaXRlcmF0b3JdICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJ2YWx1ZXMgaXMgbm90IGl0ZXJhYmxlXCIpO1xuICByZXR1cm4gQXJyYXkuZnJvbSh2YWx1ZXMpLnJldmVyc2UoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/reverse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/scan.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/scan.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ scan)\n/* harmony export */ });\n/* harmony import */ var _leastIndex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./leastIndex.js */ \"../../../node_modules/d3-array/src/leastIndex.js\");\n\n\nfunction scan(values, compare) {\n const index = (0,_leastIndex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, compare);\n return index < 0 ? undefined : index;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zY2FuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlDOztBQUUxQjtBQUNmLGdCQUFnQiwwREFBVTtBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvc2Nhbi5qcz81NzE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsZWFzdEluZGV4IGZyb20gXCIuL2xlYXN0SW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2Nhbih2YWx1ZXMsIGNvbXBhcmUpIHtcbiAgY29uc3QgaW5kZXggPSBsZWFzdEluZGV4KHZhbHVlcywgY29tcGFyZSk7XG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBpbmRleDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/scan.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/shuffle.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-array/src/shuffle.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"shuffler\": () => (/* binding */ shuffler)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (shuffler(Math.random));\n\nfunction shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zaHVmZmxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaUVBQWUscUJBQXFCLEVBQUM7O0FBRTlCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zaHVmZmxlLmpzPzIxYWQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgc2h1ZmZsZXIoTWF0aC5yYW5kb20pO1xuXG5leHBvcnQgZnVuY3Rpb24gc2h1ZmZsZXIocmFuZG9tKSB7XG4gIHJldHVybiBmdW5jdGlvbiBzaHVmZmxlKGFycmF5LCBpMCA9IDAsIGkxID0gYXJyYXkubGVuZ3RoKSB7XG4gICAgbGV0IG0gPSBpMSAtIChpMCA9ICtpMCk7XG4gICAgd2hpbGUgKG0pIHtcbiAgICAgIGNvbnN0IGkgPSByYW5kb20oKSAqIG0tLSB8IDAsIHQgPSBhcnJheVttICsgaTBdO1xuICAgICAgYXJyYXlbbSArIGkwXSA9IGFycmF5W2kgKyBpMF07XG4gICAgICBhcnJheVtpICsgaTBdID0gdDtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/shuffle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/some.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/some.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ some)\n/* harmony export */ });\nfunction some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zb21lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3NvbWUuanM/NDg0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzb21lKHZhbHVlcywgdGVzdCkge1xuICBpZiAodHlwZW9mIHRlc3QgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcInRlc3QgaXMgbm90IGEgZnVuY3Rpb25cIik7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgIGlmICh0ZXN0KHZhbHVlLCArK2luZGV4LCB2YWx1ZXMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/some.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/sort.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-array/src/sort.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ascendingDefined\": () => (/* binding */ ascendingDefined),\n/* harmony export */ \"compareDefined\": () => (/* binding */ compareDefined),\n/* harmony export */ \"default\": () => (/* binding */ sort)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _permute_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./permute.js */ \"../../../node_modules/d3-array/src/permute.js\");\n\n\n\nfunction sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return (0,_permute_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nfunction compareDefined(compare = _ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n if (compare === _ascending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nfunction ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zb3J0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVDO0FBQ0o7O0FBRXBCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxXQUFXLHVEQUFPO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFTyxrQ0FBa0MscURBQVM7QUFDbEQsa0JBQWtCLHFEQUFTO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3NvcnQuanM/MzQ2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuaW1wb3J0IHBlcm11dGUgZnJvbSBcIi4vcGVybXV0ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzb3J0KHZhbHVlcywgLi4uRikge1xuICBpZiAodHlwZW9mIHZhbHVlc1tTeW1ib2wuaXRlcmF0b3JdICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJ2YWx1ZXMgaXMgbm90IGl0ZXJhYmxlXCIpO1xuICB2YWx1ZXMgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG4gIGxldCBbZl0gPSBGO1xuICBpZiAoKGYgJiYgZi5sZW5ndGggIT09IDIpIHx8IEYubGVuZ3RoID4gMSkge1xuICAgIGNvbnN0IGluZGV4ID0gVWludDMyQXJyYXkuZnJvbSh2YWx1ZXMsIChkLCBpKSA9PiBpKTtcbiAgICBpZiAoRi5sZW5ndGggPiAxKSB7XG4gICAgICBGID0gRi5tYXAoZiA9PiB2YWx1ZXMubWFwKGYpKTtcbiAgICAgIGluZGV4LnNvcnQoKGksIGopID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmIG9mIEYpIHtcbiAgICAgICAgICBjb25zdCBjID0gYXNjZW5kaW5nRGVmaW5lZChmW2ldLCBmW2pdKTtcbiAgICAgICAgICBpZiAoYykgcmV0dXJuIGM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmID0gdmFsdWVzLm1hcChmKTtcbiAgICAgIGluZGV4LnNvcnQoKGksIGopID0+IGFzY2VuZGluZ0RlZmluZWQoZltpXSwgZltqXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGVybXV0ZSh2YWx1ZXMsIGluZGV4KTtcbiAgfVxuICByZXR1cm4gdmFsdWVzLnNvcnQoY29tcGFyZURlZmluZWQoZikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZURlZmluZWQoY29tcGFyZSA9IGFzY2VuZGluZykge1xuICBpZiAoY29tcGFyZSA9PT0gYXNjZW5kaW5nKSByZXR1cm4gYXNjZW5kaW5nRGVmaW5lZDtcbiAgaWYgKHR5cGVvZiBjb21wYXJlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjb21wYXJlIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICBjb25zdCB4ID0gY29tcGFyZShhLCBiKTtcbiAgICBpZiAoeCB8fCB4ID09PSAwKSByZXR1cm4geDtcbiAgICByZXR1cm4gKGNvbXBhcmUoYiwgYikgPT09IDApIC0gKGNvbXBhcmUoYSwgYSkgPT09IDApO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNjZW5kaW5nRGVmaW5lZChhLCBiKSB7XG4gIHJldHVybiAoYSA9PSBudWxsIHx8ICEoYSA+PSBhKSkgLSAoYiA9PSBudWxsIHx8ICEoYiA+PSBiKSkgfHwgKGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/sort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/subset.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-array/src/subset.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ subset)\n/* harmony export */ });\n/* harmony import */ var _superset_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./superset.js */ \"../../../node_modules/d3-array/src/superset.js\");\n\n\nfunction subset(values, other) {\n return (0,_superset_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other, values);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zdWJzZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXRCO0FBQ2YsU0FBUyx3REFBUTtBQUNqQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3N1YnNldC5qcz84MzU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdXBlcnNldCBmcm9tIFwiLi9zdXBlcnNldC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdWJzZXQodmFsdWVzLCBvdGhlcikge1xuICByZXR1cm4gc3VwZXJzZXQob3RoZXIsIHZhbHVlcyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/subset.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/sum.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/sum.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ sum)\n/* harmony export */ });\nfunction sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zdW0uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvc3VtLmpzPzVlYTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3VtKHZhbHVlcywgdmFsdWVvZikge1xuICBsZXQgc3VtID0gMDtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlID0gK3ZhbHVlKSB7XG4gICAgICAgIHN1bSArPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWUgPSArdmFsdWVvZih2YWx1ZSwgKytpbmRleCwgdmFsdWVzKSkge1xuICAgICAgICBzdW0gKz0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/sum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/superset.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/superset.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ superset)\n/* harmony export */ });\nfunction superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9zdXBlcnNldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvc3VwZXJzZXQuanM/M2NhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdXBlcnNldCh2YWx1ZXMsIG90aGVyKSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gdmFsdWVzW1N5bWJvbC5pdGVyYXRvcl0oKSwgc2V0ID0gbmV3IFNldCgpO1xuICBmb3IgKGNvbnN0IG8gb2Ygb3RoZXIpIHtcbiAgICBjb25zdCBpbyA9IGludGVybihvKTtcbiAgICBpZiAoc2V0LmhhcyhpbykpIGNvbnRpbnVlO1xuICAgIGxldCB2YWx1ZSwgZG9uZTtcbiAgICB3aGlsZSAoKHt2YWx1ZSwgZG9uZX0gPSBpdGVyYXRvci5uZXh0KCkpKSB7XG4gICAgICBpZiAoZG9uZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgaXZhbHVlID0gaW50ZXJuKHZhbHVlKTtcbiAgICAgIHNldC5hZGQoaXZhbHVlKTtcbiAgICAgIGlmIChPYmplY3QuaXMoaW8sIGl2YWx1ZSkpIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaW50ZXJuKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/superset.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ thresholdFreedmanDiaconis)\n/* harmony export */ });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"../../../node_modules/d3-array/src/count.js\");\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../quantile.js */ \"../../../node_modules/d3-array/src/quantile.js\");\n\n\n\nfunction thresholdFreedmanDiaconis(values, min, max) {\n const c = (0,_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values), d = (0,_quantile_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, 0.75) - (0,_quantile_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, 0.25);\n return c && d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvZnJlZWRtYW5EaWFjb25pcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0M7QUFDTTs7QUFFdkI7QUFDZixZQUFZLHFEQUFLLGNBQWMsd0RBQVEsaUJBQWlCLHdEQUFRO0FBQ2hFO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvZnJlZWRtYW5EaWFjb25pcy5qcz9kMjFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3VudCBmcm9tIFwiLi4vY291bnQuanNcIjtcbmltcG9ydCBxdWFudGlsZSBmcm9tIFwiLi4vcXVhbnRpbGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pcyh2YWx1ZXMsIG1pbiwgbWF4KSB7XG4gIGNvbnN0IGMgPSBjb3VudCh2YWx1ZXMpLCBkID0gcXVhbnRpbGUodmFsdWVzLCAwLjc1KSAtIHF1YW50aWxlKHZhbHVlcywgMC4yNSk7XG4gIHJldHVybiBjICYmIGQgPyBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyAoMiAqIGQgKiBNYXRoLnBvdyhjLCAtMSAvIDMpKSkgOiAxO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/threshold/freedmanDiaconis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/threshold/scott.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-array/src/threshold/scott.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ thresholdScott)\n/* harmony export */ });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"../../../node_modules/d3-array/src/count.js\");\n/* harmony import */ var _deviation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../deviation.js */ \"../../../node_modules/d3-array/src/deviation.js\");\n\n\n\nfunction thresholdScott(values, min, max) {\n const c = (0,_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values), d = (0,_deviation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values);\n return c && d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvc2NvdHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdDO0FBQ1E7O0FBRXpCO0FBQ2YsWUFBWSxxREFBSyxjQUFjLHlEQUFTO0FBQ3hDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvc2NvdHQuanM/OWQ4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY291bnQgZnJvbSBcIi4uL2NvdW50LmpzXCI7XG5pbXBvcnQgZGV2aWF0aW9uIGZyb20gXCIuLi9kZXZpYXRpb24uanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGhyZXNob2xkU2NvdHQodmFsdWVzLCBtaW4sIG1heCkge1xuICBjb25zdCBjID0gY291bnQodmFsdWVzKSwgZCA9IGRldmlhdGlvbih2YWx1ZXMpO1xuICByZXR1cm4gYyAmJiBkID8gTWF0aC5jZWlsKChtYXggLSBtaW4pICogTWF0aC5jYnJ0KGMpIC8gKDMuNDkgKiBkKSkgOiAxO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/threshold/scott.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/threshold/sturges.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-array/src/threshold/sturges.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ thresholdSturges)\n/* harmony export */ });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../count.js */ \"../../../node_modules/d3-array/src/count.js\");\n\n\nfunction thresholdSturges(values) {\n return Math.max(1, Math.ceil(Math.log((0,_count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(values)) / Math.LN2) + 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvc3R1cmdlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFakI7QUFDZix3Q0FBd0MscURBQUs7QUFDN0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aHJlc2hvbGQvc3R1cmdlcy5qcz8yNWE2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3VudCBmcm9tIFwiLi4vY291bnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGhyZXNob2xkU3R1cmdlcyh2YWx1ZXMpIHtcbiAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGguY2VpbChNYXRoLmxvZyhjb3VudCh2YWx1ZXMpKSAvIE1hdGguTE4yKSArIDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/threshold/sturges.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/ticks.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/ticks.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ticks),\n/* harmony export */ \"tickIncrement\": () => (/* binding */ tickIncrement),\n/* harmony export */ \"tickStep\": () => (/* binding */ tickStep)\n/* harmony export */ });\nconst e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nfunction ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nfunction tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nfunction tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsT0FBTztBQUN4Qyx5QkFBeUIsT0FBTztBQUNoQyxJQUFJO0FBQ0osaUNBQWlDLE9BQU87QUFDeEMseUJBQXlCLE9BQU87QUFDaEM7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcz9iZDVkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGUxMCA9IE1hdGguc3FydCg1MCksXG4gICAgZTUgPSBNYXRoLnNxcnQoMTApLFxuICAgIGUyID0gTWF0aC5zcXJ0KDIpO1xuXG5mdW5jdGlvbiB0aWNrU3BlYyhzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgY29uc3Qgc3RlcCA9IChzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMCwgY291bnQpLFxuICAgICAgcG93ZXIgPSBNYXRoLmZsb29yKE1hdGgubG9nMTAoc3RlcCkpLFxuICAgICAgZXJyb3IgPSBzdGVwIC8gTWF0aC5wb3coMTAsIHBvd2VyKSxcbiAgICAgIGZhY3RvciA9IGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMTtcbiAgbGV0IGkxLCBpMiwgaW5jO1xuICBpZiAocG93ZXIgPCAwKSB7XG4gICAgaW5jID0gTWF0aC5wb3coMTAsIC1wb3dlcikgLyBmYWN0b3I7XG4gICAgaTEgPSBNYXRoLnJvdW5kKHN0YXJ0ICogaW5jKTtcbiAgICBpMiA9IE1hdGgucm91bmQoc3RvcCAqIGluYyk7XG4gICAgaWYgKGkxIC8gaW5jIDwgc3RhcnQpICsraTE7XG4gICAgaWYgKGkyIC8gaW5jID4gc3RvcCkgLS1pMjtcbiAgICBpbmMgPSAtaW5jO1xuICB9IGVsc2Uge1xuICAgIGluYyA9IE1hdGgucG93KDEwLCBwb3dlcikgKiBmYWN0b3I7XG4gICAgaTEgPSBNYXRoLnJvdW5kKHN0YXJ0IC8gaW5jKTtcbiAgICBpMiA9IE1hdGgucm91bmQoc3RvcCAvIGluYyk7XG4gICAgaWYgKGkxICogaW5jIDwgc3RhcnQpICsraTE7XG4gICAgaWYgKGkyICogaW5jID4gc3RvcCkgLS1pMjtcbiAgfVxuICBpZiAoaTIgPCBpMSAmJiAwLjUgPD0gY291bnQgJiYgY291bnQgPCAyKSByZXR1cm4gdGlja1NwZWMoc3RhcnQsIHN0b3AsIGNvdW50ICogMik7XG4gIHJldHVybiBbaTEsIGkyLCBpbmNdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aWNrcyhzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgc3RvcCA9ICtzdG9wLCBzdGFydCA9ICtzdGFydCwgY291bnQgPSArY291bnQ7XG4gIGlmICghKGNvdW50ID4gMCkpIHJldHVybiBbXTtcbiAgaWYgKHN0YXJ0ID09PSBzdG9wKSByZXR1cm4gW3N0YXJ0XTtcbiAgY29uc3QgcmV2ZXJzZSA9IHN0b3AgPCBzdGFydCwgW2kxLCBpMiwgaW5jXSA9IHJldmVyc2UgPyB0aWNrU3BlYyhzdG9wLCBzdGFydCwgY291bnQpIDogdGlja1NwZWMoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgaWYgKCEoaTIgPj0gaTEpKSByZXR1cm4gW107XG4gIGNvbnN0IG4gPSBpMiAtIGkxICsgMSwgdGlja3MgPSBuZXcgQXJyYXkobik7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgaWYgKGluYyA8IDApIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgKytpKSB0aWNrc1tpXSA9IChpMiAtIGkpIC8gLWluYztcbiAgICBlbHNlIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgKytpKSB0aWNrc1tpXSA9IChpMiAtIGkpICogaW5jO1xuICB9IGVsc2Uge1xuICAgIGlmIChpbmMgPCAwKSBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkgdGlja3NbaV0gPSAoaTEgKyBpKSAvIC1pbmM7XG4gICAgZWxzZSBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkgdGlja3NbaV0gPSAoaTEgKyBpKSAqIGluYztcbiAgfVxuICByZXR1cm4gdGlja3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICBzdG9wID0gK3N0b3AsIHN0YXJ0ID0gK3N0YXJ0LCBjb3VudCA9ICtjb3VudDtcbiAgcmV0dXJuIHRpY2tTcGVjKHN0YXJ0LCBzdG9wLCBjb3VudClbMl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrU3RlcChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgc3RvcCA9ICtzdG9wLCBzdGFydCA9ICtzdGFydCwgY291bnQgPSArY291bnQ7XG4gIGNvbnN0IHJldmVyc2UgPSBzdG9wIDwgc3RhcnQsIGluYyA9IHJldmVyc2UgPyB0aWNrSW5jcmVtZW50KHN0b3AsIHN0YXJ0LCBjb3VudCkgOiB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gIHJldHVybiAocmV2ZXJzZSA/IC0xIDogMSkgKiAoaW5jIDwgMCA/IDEgLyAtaW5jIDogaW5jKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/ticks.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/transpose.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-array/src/transpose.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ transpose)\n/* harmony export */ });\n/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./min.js */ \"../../../node_modules/d3-array/src/min.js\");\n\n\nfunction transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = (0,_min_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90cmFuc3Bvc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMkI7O0FBRVo7QUFDZjtBQUNBLHVCQUF1QixtREFBRyw0Q0FBNEMsUUFBUTtBQUM5RSwyREFBMkQsUUFBUTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3RyYW5zcG9zZS5qcz8yNmExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaW4gZnJvbSBcIi4vbWluLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zcG9zZShtYXRyaXgpIHtcbiAgaWYgKCEobiA9IG1hdHJpeC5sZW5ndGgpKSByZXR1cm4gW107XG4gIGZvciAodmFyIGkgPSAtMSwgbSA9IG1pbihtYXRyaXgsIGxlbmd0aCksIHRyYW5zcG9zZSA9IG5ldyBBcnJheShtKTsgKytpIDwgbTspIHtcbiAgICBmb3IgKHZhciBqID0gLTEsIG4sIHJvdyA9IHRyYW5zcG9zZVtpXSA9IG5ldyBBcnJheShuKTsgKytqIDwgbjspIHtcbiAgICAgIHJvd1tqXSA9IG1hdHJpeFtqXVtpXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyYW5zcG9zZTtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoKGQpIHtcbiAgcmV0dXJuIGQubGVuZ3RoO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/transpose.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/union.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-array/src/union.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ union)\n/* harmony export */ });\n/* harmony import */ var internmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! internmap */ \"../../../node_modules/internmap/src/index.js\");\n\n\nfunction union(...others) {\n const set = new internmap__WEBPACK_IMPORTED_MODULE_0__.InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy91bmlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvQzs7QUFFckI7QUFDZixrQkFBa0IsZ0RBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy91bmlvbi5qcz80YzIyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJuU2V0fSBmcm9tIFwiaW50ZXJubWFwXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaW9uKC4uLm90aGVycykge1xuICBjb25zdCBzZXQgPSBuZXcgSW50ZXJuU2V0KCk7XG4gIGZvciAoY29uc3Qgb3RoZXIgb2Ygb3RoZXJzKSB7XG4gICAgZm9yIChjb25zdCBvIG9mIG90aGVyKSB7XG4gICAgICBzZXQuYWRkKG8pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2V0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/union.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/variance.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-array/src/variance.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ variance)\n/* harmony export */ });\nfunction variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy92YXJpYW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3ZhcmlhbmNlLmpzPzEwN2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmFyaWFuY2UodmFsdWVzLCB2YWx1ZW9mKSB7XG4gIGxldCBjb3VudCA9IDA7XG4gIGxldCBkZWx0YTtcbiAgbGV0IG1lYW4gPSAwO1xuICBsZXQgc3VtID0gMDtcbiAgaWYgKHZhbHVlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIGZvciAobGV0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgKHZhbHVlID0gK3ZhbHVlKSA+PSB2YWx1ZSkge1xuICAgICAgICBkZWx0YSA9IHZhbHVlIC0gbWVhbjtcbiAgICAgICAgbWVhbiArPSBkZWx0YSAvICsrY291bnQ7XG4gICAgICAgIHN1bSArPSBkZWx0YSAqICh2YWx1ZSAtIG1lYW4pO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZXQgaW5kZXggPSAtMTtcbiAgICBmb3IgKGxldCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlLCArK2luZGV4LCB2YWx1ZXMpKSAhPSBudWxsICYmICh2YWx1ZSA9ICt2YWx1ZSkgPj0gdmFsdWUpIHtcbiAgICAgICAgZGVsdGEgPSB2YWx1ZSAtIG1lYW47XG4gICAgICAgIG1lYW4gKz0gZGVsdGEgLyArK2NvdW50O1xuICAgICAgICBzdW0gKz0gZGVsdGEgKiAodmFsdWUgLSBtZWFuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNvdW50ID4gMSkgcmV0dXJuIHN1bSAvIChjb3VudCAtIDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/variance.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-array/src/zip.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-array/src/zip.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ zip)\n/* harmony export */ });\n/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transpose.js */ \"../../../node_modules/d3-array/src/transpose.js\");\n\n\nfunction zip() {\n return (0,_transpose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy96aXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7O0FBRXhCO0FBQ2YsU0FBUyx5REFBUztBQUNsQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL3ppcC5qcz8zMDljIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cmFuc3Bvc2UgZnJvbSBcIi4vdHJhbnNwb3NlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHppcCgpIHtcbiAgcmV0dXJuIHRyYW5zcG9zZShhcmd1bWVudHMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-array/src/zip.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-axis/src/axis.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-axis/src/axis.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"axisBottom\": () => (/* binding */ axisBottom),\n/* harmony export */ \"axisLeft\": () => (/* binding */ axisLeft),\n/* harmony export */ \"axisRight\": () => (/* binding */ axisRight),\n/* harmony export */ \"axisTop\": () => (/* binding */ axisTop)\n/* harmony export */ });\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-axis/src/identity.js\");\n\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nfunction axisTop(scale) {\n return axis(top, scale);\n}\n\nfunction axisRight(scale) {\n return axis(right, scale);\n}\n\nfunction axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nfunction axisLeft(scale) {\n return axis(left, scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWF4aXMvc3JjL2F4aXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUdBQXlHLG9EQUFRO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQyw0RkFBNEY7O0FBRXZJO0FBQ0E7QUFDQSwyQ0FBMkMsZ0NBQWdDLHlFQUF5RTtBQUNwSjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLHlDQUF5Qzs7QUFFbEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQix5QkFBeUI7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9heGlzLmpzPzc0NDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5cbnZhciB0b3AgPSAxLFxuICAgIHJpZ2h0ID0gMixcbiAgICBib3R0b20gPSAzLFxuICAgIGxlZnQgPSA0LFxuICAgIGVwc2lsb24gPSAxZS02O1xuXG5mdW5jdGlvbiB0cmFuc2xhdGVYKHgpIHtcbiAgcmV0dXJuIFwidHJhbnNsYXRlKFwiICsgeCArIFwiLDApXCI7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZVkoeSkge1xuICByZXR1cm4gXCJ0cmFuc2xhdGUoMCxcIiArIHkgKyBcIilcIjtcbn1cblxuZnVuY3Rpb24gbnVtYmVyKHNjYWxlKSB7XG4gIHJldHVybiBkID0+ICtzY2FsZShkKTtcbn1cblxuZnVuY3Rpb24gY2VudGVyKHNjYWxlLCBvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gTWF0aC5tYXgoMCwgc2NhbGUuYmFuZHdpZHRoKCkgLSBvZmZzZXQgKiAyKSAvIDI7XG4gIGlmIChzY2FsZS5yb3VuZCgpKSBvZmZzZXQgPSBNYXRoLnJvdW5kKG9mZnNldCk7XG4gIHJldHVybiBkID0+ICtzY2FsZShkKSArIG9mZnNldDtcbn1cblxuZnVuY3Rpb24gZW50ZXJpbmcoKSB7XG4gIHJldHVybiAhdGhpcy5fX2F4aXM7XG59XG5cbmZ1bmN0aW9uIGF4aXMob3JpZW50LCBzY2FsZSkge1xuICB2YXIgdGlja0FyZ3VtZW50cyA9IFtdLFxuICAgICAgdGlja1ZhbHVlcyA9IG51bGwsXG4gICAgICB0aWNrRm9ybWF0ID0gbnVsbCxcbiAgICAgIHRpY2tTaXplSW5uZXIgPSA2LFxuICAgICAgdGlja1NpemVPdXRlciA9IDYsXG4gICAgICB0aWNrUGFkZGluZyA9IDMsXG4gICAgICBvZmZzZXQgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiICYmIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID4gMSA/IDAgOiAwLjUsXG4gICAgICBrID0gb3JpZW50ID09PSB0b3AgfHwgb3JpZW50ID09PSBsZWZ0ID8gLTEgOiAxLFxuICAgICAgeCA9IG9yaWVudCA9PT0gbGVmdCB8fCBvcmllbnQgPT09IHJpZ2h0ID8gXCJ4XCIgOiBcInlcIixcbiAgICAgIHRyYW5zZm9ybSA9IG9yaWVudCA9PT0gdG9wIHx8IG9yaWVudCA9PT0gYm90dG9tID8gdHJhbnNsYXRlWCA6IHRyYW5zbGF0ZVk7XG5cbiAgZnVuY3Rpb24gYXhpcyhjb250ZXh0KSB7XG4gICAgdmFyIHZhbHVlcyA9IHRpY2tWYWx1ZXMgPT0gbnVsbCA/IChzY2FsZS50aWNrcyA/IHNjYWxlLnRpY2tzLmFwcGx5KHNjYWxlLCB0aWNrQXJndW1lbnRzKSA6IHNjYWxlLmRvbWFpbigpKSA6IHRpY2tWYWx1ZXMsXG4gICAgICAgIGZvcm1hdCA9IHRpY2tGb3JtYXQgPT0gbnVsbCA/IChzY2FsZS50aWNrRm9ybWF0ID8gc2NhbGUudGlja0Zvcm1hdC5hcHBseShzY2FsZSwgdGlja0FyZ3VtZW50cykgOiBpZGVudGl0eSkgOiB0aWNrRm9ybWF0LFxuICAgICAgICBzcGFjaW5nID0gTWF0aC5tYXgodGlja1NpemVJbm5lciwgMCkgKyB0aWNrUGFkZGluZyxcbiAgICAgICAgcmFuZ2UgPSBzY2FsZS5yYW5nZSgpLFxuICAgICAgICByYW5nZTAgPSArcmFuZ2VbMF0gKyBvZmZzZXQsXG4gICAgICAgIHJhbmdlMSA9ICtyYW5nZVtyYW5nZS5sZW5ndGggLSAxXSArIG9mZnNldCxcbiAgICAgICAgcG9zaXRpb24gPSAoc2NhbGUuYmFuZHdpZHRoID8gY2VudGVyIDogbnVtYmVyKShzY2FsZS5jb3B5KCksIG9mZnNldCksXG4gICAgICAgIHNlbGVjdGlvbiA9IGNvbnRleHQuc2VsZWN0aW9uID8gY29udGV4dC5zZWxlY3Rpb24oKSA6IGNvbnRleHQsXG4gICAgICAgIHBhdGggPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLmRvbWFpblwiKS5kYXRhKFtudWxsXSksXG4gICAgICAgIHRpY2sgPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLnRpY2tcIikuZGF0YSh2YWx1ZXMsIHNjYWxlKS5vcmRlcigpLFxuICAgICAgICB0aWNrRXhpdCA9IHRpY2suZXhpdCgpLFxuICAgICAgICB0aWNrRW50ZXIgPSB0aWNrLmVudGVyKCkuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0aWNrXCIpLFxuICAgICAgICBsaW5lID0gdGljay5zZWxlY3QoXCJsaW5lXCIpLFxuICAgICAgICB0ZXh0ID0gdGljay5zZWxlY3QoXCJ0ZXh0XCIpO1xuXG4gICAgcGF0aCA9IHBhdGgubWVyZ2UocGF0aC5lbnRlcigpLmluc2VydChcInBhdGhcIiwgXCIudGlja1wiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwiZG9tYWluXCIpXG4gICAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiY3VycmVudENvbG9yXCIpKTtcblxuICAgIHRpY2sgPSB0aWNrLm1lcmdlKHRpY2tFbnRlcik7XG5cbiAgICBsaW5lID0gbGluZS5tZXJnZSh0aWNrRW50ZXIuYXBwZW5kKFwibGluZVwiKVxuICAgICAgICAuYXR0cihcInN0cm9rZVwiLCBcImN1cnJlbnRDb2xvclwiKVxuICAgICAgICAuYXR0cih4ICsgXCIyXCIsIGsgKiB0aWNrU2l6ZUlubmVyKSk7XG5cbiAgICB0ZXh0ID0gdGV4dC5tZXJnZSh0aWNrRW50ZXIuYXBwZW5kKFwidGV4dFwiKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCJjdXJyZW50Q29sb3JcIilcbiAgICAgICAgLmF0dHIoeCwgayAqIHNwYWNpbmcpXG4gICAgICAgIC5hdHRyKFwiZHlcIiwgb3JpZW50ID09PSB0b3AgPyBcIjBlbVwiIDogb3JpZW50ID09PSBib3R0b20gPyBcIjAuNzFlbVwiIDogXCIwLjMyZW1cIikpO1xuXG4gICAgaWYgKGNvbnRleHQgIT09IHNlbGVjdGlvbikge1xuICAgICAgcGF0aCA9IHBhdGgudHJhbnNpdGlvbihjb250ZXh0KTtcbiAgICAgIHRpY2sgPSB0aWNrLnRyYW5zaXRpb24oY29udGV4dCk7XG4gICAgICBsaW5lID0gbGluZS50cmFuc2l0aW9uKGNvbnRleHQpO1xuICAgICAgdGV4dCA9IHRleHQudHJhbnNpdGlvbihjb250ZXh0KTtcblxuICAgICAgdGlja0V4aXQgPSB0aWNrRXhpdC50cmFuc2l0aW9uKGNvbnRleHQpXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gaXNGaW5pdGUoZCA9IHBvc2l0aW9uKGQpKSA/IHRyYW5zZm9ybShkICsgb2Zmc2V0KSA6IHRoaXMuZ2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIpOyB9KTtcblxuICAgICAgdGlja0VudGVyXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyB2YXIgcCA9IHRoaXMucGFyZW50Tm9kZS5fX2F4aXM7IHJldHVybiB0cmFuc2Zvcm0oKHAgJiYgaXNGaW5pdGUocCA9IHAoZCkpID8gcCA6IHBvc2l0aW9uKGQpKSArIG9mZnNldCk7IH0pO1xuICAgIH1cblxuICAgIHRpY2tFeGl0LnJlbW92ZSgpO1xuXG4gICAgcGF0aFxuICAgICAgICAuYXR0cihcImRcIiwgb3JpZW50ID09PSBsZWZ0IHx8IG9yaWVudCA9PT0gcmlnaHRcbiAgICAgICAgICAgID8gKHRpY2tTaXplT3V0ZXIgPyBcIk1cIiArIGsgKiB0aWNrU2l6ZU91dGVyICsgXCIsXCIgKyByYW5nZTAgKyBcIkhcIiArIG9mZnNldCArIFwiVlwiICsgcmFuZ2UxICsgXCJIXCIgKyBrICogdGlja1NpemVPdXRlciA6IFwiTVwiICsgb2Zmc2V0ICsgXCIsXCIgKyByYW5nZTAgKyBcIlZcIiArIHJhbmdlMSlcbiAgICAgICAgICAgIDogKHRpY2tTaXplT3V0ZXIgPyBcIk1cIiArIHJhbmdlMCArIFwiLFwiICsgayAqIHRpY2tTaXplT3V0ZXIgKyBcIlZcIiArIG9mZnNldCArIFwiSFwiICsgcmFuZ2UxICsgXCJWXCIgKyBrICogdGlja1NpemVPdXRlciA6IFwiTVwiICsgcmFuZ2UwICsgXCIsXCIgKyBvZmZzZXQgKyBcIkhcIiArIHJhbmdlMSkpO1xuXG4gICAgdGlja1xuICAgICAgICAuYXR0cihcIm9wYWNpdHlcIiwgMSlcbiAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gdHJhbnNmb3JtKHBvc2l0aW9uKGQpICsgb2Zmc2V0KTsgfSk7XG5cbiAgICBsaW5lXG4gICAgICAgIC5hdHRyKHggKyBcIjJcIiwgayAqIHRpY2tTaXplSW5uZXIpO1xuXG4gICAgdGV4dFxuICAgICAgICAuYXR0cih4LCBrICogc3BhY2luZylcbiAgICAgICAgLnRleHQoZm9ybWF0KTtcblxuICAgIHNlbGVjdGlvbi5maWx0ZXIoZW50ZXJpbmcpXG4gICAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIilcbiAgICAgICAgLmF0dHIoXCJmb250LXNpemVcIiwgMTApXG4gICAgICAgIC5hdHRyKFwiZm9udC1mYW1pbHlcIiwgXCJzYW5zLXNlcmlmXCIpXG4gICAgICAgIC5hdHRyKFwidGV4dC1hbmNob3JcIiwgb3JpZW50ID09PSByaWdodCA/IFwic3RhcnRcIiA6IG9yaWVudCA9PT0gbGVmdCA/IFwiZW5kXCIgOiBcIm1pZGRsZVwiKTtcblxuICAgIHNlbGVjdGlvblxuICAgICAgICAuZWFjaChmdW5jdGlvbigpIHsgdGhpcy5fX2F4aXMgPSBwb3NpdGlvbjsgfSk7XG4gIH1cblxuICBheGlzLnNjYWxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNjYWxlID0gXywgYXhpcykgOiBzY2FsZTtcbiAgfTtcblxuICBheGlzLnRpY2tzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRpY2tBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyksIGF4aXM7XG4gIH07XG5cbiAgYXhpcy50aWNrQXJndW1lbnRzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpY2tBcmd1bWVudHMgPSBfID09IG51bGwgPyBbXSA6IEFycmF5LmZyb20oXyksIGF4aXMpIDogdGlja0FyZ3VtZW50cy5zbGljZSgpO1xuICB9O1xuXG4gIGF4aXMudGlja1ZhbHVlcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrVmFsdWVzID0gXyA9PSBudWxsID8gbnVsbCA6IEFycmF5LmZyb20oXyksIGF4aXMpIDogdGlja1ZhbHVlcyAmJiB0aWNrVmFsdWVzLnNsaWNlKCk7XG4gIH07XG5cbiAgYXhpcy50aWNrRm9ybWF0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpY2tGb3JtYXQgPSBfLCBheGlzKSA6IHRpY2tGb3JtYXQ7XG4gIH07XG5cbiAgYXhpcy50aWNrU2l6ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrU2l6ZUlubmVyID0gdGlja1NpemVPdXRlciA9ICtfLCBheGlzKSA6IHRpY2tTaXplSW5uZXI7XG4gIH07XG5cbiAgYXhpcy50aWNrU2l6ZUlubmVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpY2tTaXplSW5uZXIgPSArXywgYXhpcykgOiB0aWNrU2l6ZUlubmVyO1xuICB9O1xuXG4gIGF4aXMudGlja1NpemVPdXRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrU2l6ZU91dGVyID0gK18sIGF4aXMpIDogdGlja1NpemVPdXRlcjtcbiAgfTtcblxuICBheGlzLnRpY2tQYWRkaW5nID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpY2tQYWRkaW5nID0gK18sIGF4aXMpIDogdGlja1BhZGRpbmc7XG4gIH07XG5cbiAgYXhpcy5vZmZzZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAob2Zmc2V0ID0gK18sIGF4aXMpIDogb2Zmc2V0O1xuICB9O1xuXG4gIHJldHVybiBheGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc1RvcChzY2FsZSkge1xuICByZXR1cm4gYXhpcyh0b3AsIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNSaWdodChzY2FsZSkge1xuICByZXR1cm4gYXhpcyhyaWdodCwgc2NhbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc0JvdHRvbShzY2FsZSkge1xuICByZXR1cm4gYXhpcyhib3R0b20sIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNMZWZ0KHNjYWxlKSB7XG4gIHJldHVybiBheGlzKGxlZnQsIHNjYWxlKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-axis/src/axis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-axis/src/identity.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-axis/src/identity.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWF4aXMvc3JjL2lkZW50aXR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9pZGVudGl0eS5qcz80NTc5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-axis/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-axis/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-axis/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"axisBottom\": () => (/* reexport safe */ _axis_js__WEBPACK_IMPORTED_MODULE_0__.axisBottom),\n/* harmony export */ \"axisLeft\": () => (/* reexport safe */ _axis_js__WEBPACK_IMPORTED_MODULE_0__.axisLeft),\n/* harmony export */ \"axisRight\": () => (/* reexport safe */ _axis_js__WEBPACK_IMPORTED_MODULE_0__.axisRight),\n/* harmony export */ \"axisTop\": () => (/* reexport safe */ _axis_js__WEBPACK_IMPORTED_MODULE_0__.axisTop)\n/* harmony export */ });\n/* harmony import */ var _axis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./axis.js */ \"../../../node_modules/d3-axis/src/axis.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWF4aXMvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBS21CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9pbmRleC5qcz9mNWJmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGF4aXNUb3AsXG4gIGF4aXNSaWdodCxcbiAgYXhpc0JvdHRvbSxcbiAgYXhpc0xlZnRcbn0gZnJvbSBcIi4vYXhpcy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-axis/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-brush/src/brush.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-brush/src/brush.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"brushSelection\": () => (/* binding */ brushSelection),\n/* harmony export */ \"brushX\": () => (/* binding */ brushX),\n/* harmony export */ \"brushY\": () => (/* binding */ brushY),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-drag */ \"../../../node_modules/d3-drag/src/nodrag.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/select.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/pointer.js\");\n/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-transition */ \"../../../node_modules/d3-transition/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-brush/src/constant.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./event.js */ \"../../../node_modules/d3-brush/src/event.js\");\n/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./noevent.js */ \"../../../node_modules/d3-brush/src/noevent.js\");\n\n\n\n\n\n\n\n\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nfunction brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nfunction brushX() {\n return brush(X);\n}\n\nfunction brushY() {\n return brush(Y);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = (0,d3_dispatch__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n (0,d3_selection__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = (0,d3_interpolate__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n (0,d3_transition__WEBPACK_IMPORTED_MODULE_0__.interrupt)(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = (0,d3_selection__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = (0,d3_selection__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.that).datum();\n listeners.call(\n type,\n this.that,\n new _event_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n (0,d3_transition__WEBPACK_IMPORTED_MODULE_0__.interrupt)(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = (0,d3_selection__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = (0,d3_selection__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n ;(0,d3_drag__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_3__.nopropagation)(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n (0,d3_drag__WEBPACK_IMPORTED_MODULE_8__.yesdrag)(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9icnVzaC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXFDO0FBQ1c7QUFDTDtBQUNFO0FBQ0w7QUFDSDtBQUNEO0FBQ2dCOztBQUVwRCxpQkFBaUIsYUFBYTtBQUM5QixrQkFBa0IsY0FBYztBQUNoQyxtQkFBbUIsZUFBZTtBQUNsQyxtQkFBbUI7O0FBRW5CLE9BQU8sZUFBZTs7QUFFdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsaUVBQWlFO0FBQzNGLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsaUVBQWlFO0FBQzNGLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IseUNBQXlDO0FBQ2pFLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBLDZCQUFlLHNDQUFX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eUUsd0RBQVE7QUFDakY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvYnJ1c2guanM/MWU5YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7ZHJhZ0Rpc2FibGUsIGRyYWdFbmFibGV9IGZyb20gXCJkMy1kcmFnXCI7XG5pbXBvcnQge2ludGVycG9sYXRlfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7cG9pbnRlciwgc2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge2ludGVycnVwdH0gZnJvbSBcImQzLXRyYW5zaXRpb25cIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IEJydXNoRXZlbnQgZnJvbSBcIi4vZXZlbnQuanNcIjtcbmltcG9ydCBub2V2ZW50LCB7bm9wcm9wYWdhdGlvbn0gZnJvbSBcIi4vbm9ldmVudC5qc1wiO1xuXG52YXIgTU9ERV9EUkFHID0ge25hbWU6IFwiZHJhZ1wifSxcbiAgICBNT0RFX1NQQUNFID0ge25hbWU6IFwic3BhY2VcIn0sXG4gICAgTU9ERV9IQU5ETEUgPSB7bmFtZTogXCJoYW5kbGVcIn0sXG4gICAgTU9ERV9DRU5URVIgPSB7bmFtZTogXCJjZW50ZXJcIn07XG5cbmNvbnN0IHthYnMsIG1heCwgbWlufSA9IE1hdGg7XG5cbmZ1bmN0aW9uIG51bWJlcjEoZSkge1xuICByZXR1cm4gWytlWzBdLCArZVsxXV07XG59XG5cbmZ1bmN0aW9uIG51bWJlcjIoZSkge1xuICByZXR1cm4gW251bWJlcjEoZVswXSksIG51bWJlcjEoZVsxXSldO1xufVxuXG52YXIgWCA9IHtcbiAgbmFtZTogXCJ4XCIsXG4gIGhhbmRsZXM6IFtcIndcIiwgXCJlXCJdLm1hcCh0eXBlKSxcbiAgaW5wdXQ6IGZ1bmN0aW9uKHgsIGUpIHsgcmV0dXJuIHggPT0gbnVsbCA/IG51bGwgOiBbWyt4WzBdLCBlWzBdWzFdXSwgWyt4WzFdLCBlWzFdWzFdXV07IH0sXG4gIG91dHB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5ICYmIFt4eVswXVswXSwgeHlbMV1bMF1dOyB9XG59O1xuXG52YXIgWSA9IHtcbiAgbmFtZTogXCJ5XCIsXG4gIGhhbmRsZXM6IFtcIm5cIiwgXCJzXCJdLm1hcCh0eXBlKSxcbiAgaW5wdXQ6IGZ1bmN0aW9uKHksIGUpIHsgcmV0dXJuIHkgPT0gbnVsbCA/IG51bGwgOiBbW2VbMF1bMF0sICt5WzBdXSwgW2VbMV1bMF0sICt5WzFdXV07IH0sXG4gIG91dHB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5ICYmIFt4eVswXVsxXSwgeHlbMV1bMV1dOyB9XG59O1xuXG52YXIgWFkgPSB7XG4gIG5hbWU6IFwieHlcIixcbiAgaGFuZGxlczogW1wiblwiLCBcIndcIiwgXCJlXCIsIFwic1wiLCBcIm53XCIsIFwibmVcIiwgXCJzd1wiLCBcInNlXCJdLm1hcCh0eXBlKSxcbiAgaW5wdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eSA9PSBudWxsID8gbnVsbCA6IG51bWJlcjIoeHkpOyB9LFxuICBvdXRwdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eTsgfVxufTtcblxudmFyIGN1cnNvcnMgPSB7XG4gIG92ZXJsYXk6IFwiY3Jvc3NoYWlyXCIsXG4gIHNlbGVjdGlvbjogXCJtb3ZlXCIsXG4gIG46IFwibnMtcmVzaXplXCIsXG4gIGU6IFwiZXctcmVzaXplXCIsXG4gIHM6IFwibnMtcmVzaXplXCIsXG4gIHc6IFwiZXctcmVzaXplXCIsXG4gIG53OiBcIm53c2UtcmVzaXplXCIsXG4gIG5lOiBcIm5lc3ctcmVzaXplXCIsXG4gIHNlOiBcIm53c2UtcmVzaXplXCIsXG4gIHN3OiBcIm5lc3ctcmVzaXplXCJcbn07XG5cbnZhciBmbGlwWCA9IHtcbiAgZTogXCJ3XCIsXG4gIHc6IFwiZVwiLFxuICBudzogXCJuZVwiLFxuICBuZTogXCJud1wiLFxuICBzZTogXCJzd1wiLFxuICBzdzogXCJzZVwiXG59O1xuXG52YXIgZmxpcFkgPSB7XG4gIG46IFwic1wiLFxuICBzOiBcIm5cIixcbiAgbnc6IFwic3dcIixcbiAgbmU6IFwic2VcIixcbiAgc2U6IFwibmVcIixcbiAgc3c6IFwibndcIlxufTtcblxudmFyIHNpZ25zWCA9IHtcbiAgb3ZlcmxheTogKzEsXG4gIHNlbGVjdGlvbjogKzEsXG4gIG46IG51bGwsXG4gIGU6ICsxLFxuICBzOiBudWxsLFxuICB3OiAtMSxcbiAgbnc6IC0xLFxuICBuZTogKzEsXG4gIHNlOiArMSxcbiAgc3c6IC0xXG59O1xuXG52YXIgc2lnbnNZID0ge1xuICBvdmVybGF5OiArMSxcbiAgc2VsZWN0aW9uOiArMSxcbiAgbjogLTEsXG4gIGU6IG51bGwsXG4gIHM6ICsxLFxuICB3OiBudWxsLFxuICBudzogLTEsXG4gIG5lOiAtMSxcbiAgc2U6ICsxLFxuICBzdzogKzFcbn07XG5cbmZ1bmN0aW9uIHR5cGUodCkge1xuICByZXR1cm4ge3R5cGU6IHR9O1xufVxuXG4vLyBJZ25vcmUgcmlnaHQtY2xpY2ssIHNpbmNlIHRoYXQgc2hvdWxkIG9wZW4gdGhlIGNvbnRleHQgbWVudS5cbmZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoZXZlbnQpIHtcbiAgcmV0dXJuICFldmVudC5jdHJsS2V5ICYmICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFeHRlbnQoKSB7XG4gIHZhciBzdmcgPSB0aGlzLm93bmVyU1ZHRWxlbWVudCB8fCB0aGlzO1xuICBpZiAoc3ZnLmhhc0F0dHJpYnV0ZShcInZpZXdCb3hcIikpIHtcbiAgICBzdmcgPSBzdmcudmlld0JveC5iYXNlVmFsO1xuICAgIHJldHVybiBbW3N2Zy54LCBzdmcueV0sIFtzdmcueCArIHN2Zy53aWR0aCwgc3ZnLnkgKyBzdmcuaGVpZ2h0XV07XG4gIH1cbiAgcmV0dXJuIFtbMCwgMF0sIFtzdmcud2lkdGguYmFzZVZhbC52YWx1ZSwgc3ZnLmhlaWdodC5iYXNlVmFsLnZhbHVlXV07XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUb3VjaGFibGUoKSB7XG4gIHJldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgfHwgKFwib250b3VjaHN0YXJ0XCIgaW4gdGhpcyk7XG59XG5cbi8vIExpa2UgZDMubG9jYWwsIGJ1dCB3aXRoIHRoZSBuYW1lIOKAnF9fYnJ1c2jigJ0gcmF0aGVyIHRoYW4gYXV0by1nZW5lcmF0ZWQuXG5mdW5jdGlvbiBsb2NhbChub2RlKSB7XG4gIHdoaWxlICghbm9kZS5fX2JydXNoKSBpZiAoIShub2RlID0gbm9kZS5wYXJlbnROb2RlKSkgcmV0dXJuO1xuICByZXR1cm4gbm9kZS5fX2JydXNoO1xufVxuXG5mdW5jdGlvbiBlbXB0eShleHRlbnQpIHtcbiAgcmV0dXJuIGV4dGVudFswXVswXSA9PT0gZXh0ZW50WzFdWzBdXG4gICAgICB8fCBleHRlbnRbMF1bMV0gPT09IGV4dGVudFsxXVsxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJydXNoU2VsZWN0aW9uKG5vZGUpIHtcbiAgdmFyIHN0YXRlID0gbm9kZS5fX2JydXNoO1xuICByZXR1cm4gc3RhdGUgPyBzdGF0ZS5kaW0ub3V0cHV0KHN0YXRlLnNlbGVjdGlvbikgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJ1c2hYKCkge1xuICByZXR1cm4gYnJ1c2goWCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicnVzaFkoKSB7XG4gIHJldHVybiBicnVzaChZKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBicnVzaChYWSk7XG59XG5cbmZ1bmN0aW9uIGJydXNoKGRpbSkge1xuICB2YXIgZXh0ZW50ID0gZGVmYXVsdEV4dGVudCxcbiAgICAgIGZpbHRlciA9IGRlZmF1bHRGaWx0ZXIsXG4gICAgICB0b3VjaGFibGUgPSBkZWZhdWx0VG91Y2hhYmxlLFxuICAgICAga2V5cyA9IHRydWUsXG4gICAgICBsaXN0ZW5lcnMgPSBkaXNwYXRjaChcInN0YXJ0XCIsIFwiYnJ1c2hcIiwgXCJlbmRcIiksXG4gICAgICBoYW5kbGVTaXplID0gNixcbiAgICAgIHRvdWNoZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGJydXNoKGdyb3VwKSB7XG4gICAgdmFyIG92ZXJsYXkgPSBncm91cFxuICAgICAgICAucHJvcGVydHkoXCJfX2JydXNoXCIsIGluaXRpYWxpemUpXG4gICAgICAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgIC5kYXRhKFt0eXBlKFwib3ZlcmxheVwiKV0pO1xuXG4gICAgb3ZlcmxheS5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcIm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLm92ZXJsYXkpXG4gICAgICAubWVyZ2Uob3ZlcmxheSlcbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGV4dGVudCA9IGxvY2FsKHRoaXMpLmV4dGVudDtcbiAgICAgICAgICBzZWxlY3QodGhpcylcbiAgICAgICAgICAgICAgLmF0dHIoXCJ4XCIsIGV4dGVudFswXVswXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ5XCIsIGV4dGVudFswXVsxXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBleHRlbnRbMV1bMF0gLSBleHRlbnRbMF1bMF0pXG4gICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGV4dGVudFsxXVsxXSAtIGV4dGVudFswXVsxXSk7XG4gICAgICAgIH0pO1xuXG4gICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvblwiKVxuICAgICAgLmRhdGEoW3R5cGUoXCJzZWxlY3Rpb25cIildKVxuICAgICAgLmVudGVyKCkuYXBwZW5kKFwicmVjdFwiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwic2VsZWN0aW9uXCIpXG4gICAgICAgIC5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMuc2VsZWN0aW9uKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCIjNzc3XCIpXG4gICAgICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIDAuMylcbiAgICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjZmZmXCIpXG4gICAgICAgIC5hdHRyKFwic2hhcGUtcmVuZGVyaW5nXCIsIFwiY3Jpc3BFZGdlc1wiKTtcblxuICAgIHZhciBoYW5kbGUgPSBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAuZGF0YShkaW0uaGFuZGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlOyB9KTtcblxuICAgIGhhbmRsZS5leGl0KCkucmVtb3ZlKCk7XG5cbiAgICBoYW5kbGUuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gXCJoYW5kbGUgaGFuZGxlLS1cIiArIGQudHlwZTsgfSlcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gY3Vyc29yc1tkLnR5cGVdOyB9KTtcblxuICAgIGdyb3VwXG4gICAgICAgIC5lYWNoKHJlZHJhdylcbiAgICAgICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXG4gICAgICAgIC5vbihcIm1vdXNlZG93bi5icnVzaFwiLCBzdGFydGVkKVxuICAgICAgLmZpbHRlcih0b3VjaGFibGUpXG4gICAgICAgIC5vbihcInRvdWNoc3RhcnQuYnJ1c2hcIiwgc3RhcnRlZClcbiAgICAgICAgLm9uKFwidG91Y2htb3ZlLmJydXNoXCIsIHRvdWNobW92ZWQpXG4gICAgICAgIC5vbihcInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoXCIsIHRvdWNoZW5kZWQpXG4gICAgICAgIC5zdHlsZShcInRvdWNoLWFjdGlvblwiLCBcIm5vbmVcIilcbiAgICAgICAgLnN0eWxlKFwiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yXCIsIFwicmdiYSgwLDAsMCwwKVwiKTtcbiAgfVxuXG4gIGJydXNoLm1vdmUgPSBmdW5jdGlvbihncm91cCwgc2VsZWN0aW9uLCBldmVudCkge1xuICAgIGlmIChncm91cC50d2Vlbikge1xuICAgICAgZ3JvdXBcbiAgICAgICAgICAub24oXCJzdGFydC5icnVzaFwiLCBmdW5jdGlvbihldmVudCkgeyBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydChldmVudCk7IH0pXG4gICAgICAgICAgLm9uKFwiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaFwiLCBmdW5jdGlvbihldmVudCkgeyBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykuZW5kKGV2ZW50KTsgfSlcbiAgICAgICAgICAudHdlZW4oXCJicnVzaFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHRoYXQuX19icnVzaCxcbiAgICAgICAgICAgICAgICBlbWl0ID0gZW1pdHRlcih0aGF0LCBhcmd1bWVudHMpLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbjAgPSBzdGF0ZS5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHNlbGVjdGlvbiwgc3RhdGUuZXh0ZW50KSxcbiAgICAgICAgICAgICAgICBpID0gaW50ZXJwb2xhdGUoc2VsZWN0aW9uMCwgc2VsZWN0aW9uMSk7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIHR3ZWVuKHQpIHtcbiAgICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gdCA9PT0gMSAmJiBzZWxlY3Rpb24xID09PSBudWxsID8gbnVsbCA6IGkodCk7XG4gICAgICAgICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24wICE9PSBudWxsICYmIHNlbGVjdGlvbjEgIT09IG51bGwgPyB0d2VlbiA6IHR3ZWVuKDEpO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cFxuICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgICAgc3RhdGUgPSB0aGF0Ll9fYnJ1c2gsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhhdCwgYXJncykgOiBzZWxlY3Rpb24sIHN0YXRlLmV4dGVudCksXG4gICAgICAgICAgICAgICAgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJncykuYmVmb3Jlc3RhcnQoKTtcblxuICAgICAgICAgICAgaW50ZXJydXB0KHRoYXQpO1xuICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uMSA9PT0gbnVsbCA/IG51bGwgOiBzZWxlY3Rpb24xO1xuICAgICAgICAgICAgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgICAgICAgICBlbWl0LnN0YXJ0KGV2ZW50KS5icnVzaChldmVudCkuZW5kKGV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgYnJ1c2guY2xlYXIgPSBmdW5jdGlvbihncm91cCwgZXZlbnQpIHtcbiAgICBicnVzaC5tb3ZlKGdyb3VwLCBudWxsLCBldmVudCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVkcmF3KCkge1xuICAgIHZhciBncm91cCA9IHNlbGVjdCh0aGlzKSxcbiAgICAgICAgc2VsZWN0aW9uID0gbG9jYWwodGhpcykuc2VsZWN0aW9uO1xuXG4gICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvblwiKVxuICAgICAgICAgIC5zdHlsZShcImRpc3BsYXlcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcInhcIiwgc2VsZWN0aW9uWzBdWzBdKVxuICAgICAgICAgIC5hdHRyKFwieVwiLCBzZWxlY3Rpb25bMF1bMV0pXG4gICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBzZWxlY3Rpb25bMV1bMF0gLSBzZWxlY3Rpb25bMF1bMF0pXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgc2VsZWN0aW9uWzFdWzFdIC0gc2VsZWN0aW9uWzBdWzFdKTtcblxuICAgICAgZ3JvdXAuc2VsZWN0QWxsKFwiLmhhbmRsZVwiKVxuICAgICAgICAgIC5zdHlsZShcImRpc3BsYXlcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcInhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlW2QudHlwZS5sZW5ndGggLSAxXSA9PT0gXCJlXCIgPyBzZWxlY3Rpb25bMV1bMF0gLSBoYW5kbGVTaXplIC8gMiA6IHNlbGVjdGlvblswXVswXSAtIGhhbmRsZVNpemUgLyAyOyB9KVxuICAgICAgICAgIC5hdHRyKFwieVwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGVbMF0gPT09IFwic1wiID8gc2VsZWN0aW9uWzFdWzFdIC0gaGFuZGxlU2l6ZSAvIDIgOiBzZWxlY3Rpb25bMF1bMV0gLSBoYW5kbGVTaXplIC8gMjsgfSlcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZSA9PT0gXCJuXCIgfHwgZC50eXBlID09PSBcInNcIiA/IHNlbGVjdGlvblsxXVswXSAtIHNlbGVjdGlvblswXVswXSArIGhhbmRsZVNpemUgOiBoYW5kbGVTaXplOyB9KVxuICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZSA9PT0gXCJlXCIgfHwgZC50eXBlID09PSBcIndcIiA/IHNlbGVjdGlvblsxXVsxXSAtIHNlbGVjdGlvblswXVsxXSArIGhhbmRsZVNpemUgOiBoYW5kbGVTaXplOyB9KTtcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgIGdyb3VwLnNlbGVjdEFsbChcIi5zZWxlY3Rpb24sLmhhbmRsZVwiKVxuICAgICAgICAgIC5zdHlsZShcImRpc3BsYXlcIiwgXCJub25lXCIpXG4gICAgICAgICAgLmF0dHIoXCJ4XCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVtaXR0ZXIodGhhdCwgYXJncywgY2xlYW4pIHtcbiAgICB2YXIgZW1pdCA9IHRoYXQuX19icnVzaC5lbWl0dGVyO1xuICAgIHJldHVybiBlbWl0ICYmICghY2xlYW4gfHwgIWVtaXQuY2xlYW4pID8gZW1pdCA6IG5ldyBFbWl0dGVyKHRoYXQsIGFyZ3MsIGNsZWFuKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIEVtaXR0ZXIodGhhdCwgYXJncywgY2xlYW4pIHtcbiAgICB0aGlzLnRoYXQgPSB0aGF0O1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy5zdGF0ZSA9IHRoYXQuX19icnVzaDtcbiAgICB0aGlzLmFjdGl2ZSA9IDA7XG4gICAgdGhpcy5jbGVhbiA9IGNsZWFuO1xuICB9XG5cbiAgRW1pdHRlci5wcm90b3R5cGUgPSB7XG4gICAgYmVmb3Jlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCsrdGhpcy5hY3RpdmUgPT09IDEpIHRoaXMuc3RhdGUuZW1pdHRlciA9IHRoaXMsIHRoaXMuc3RhcnRpbmcgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBzdGFydDogZnVuY3Rpb24oZXZlbnQsIG1vZGUpIHtcbiAgICAgIGlmICh0aGlzLnN0YXJ0aW5nKSB0aGlzLnN0YXJ0aW5nID0gZmFsc2UsIHRoaXMuZW1pdChcInN0YXJ0XCIsIGV2ZW50LCBtb2RlKTtcbiAgICAgIGVsc2UgdGhpcy5lbWl0KFwiYnJ1c2hcIiwgZXZlbnQpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBicnVzaDogZnVuY3Rpb24oZXZlbnQsIG1vZGUpIHtcbiAgICAgIHRoaXMuZW1pdChcImJydXNoXCIsIGV2ZW50LCBtb2RlKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgZW5kOiBmdW5jdGlvbihldmVudCwgbW9kZSkge1xuICAgICAgaWYgKC0tdGhpcy5hY3RpdmUgPT09IDApIGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsIHRoaXMuZW1pdChcImVuZFwiLCBldmVudCwgbW9kZSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVtaXQ6IGZ1bmN0aW9uKHR5cGUsIGV2ZW50LCBtb2RlKSB7XG4gICAgICB2YXIgZCA9IHNlbGVjdCh0aGlzLnRoYXQpLmRhdHVtKCk7XG4gICAgICBsaXN0ZW5lcnMuY2FsbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhpcy50aGF0LFxuICAgICAgICBuZXcgQnJ1c2hFdmVudCh0eXBlLCB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHRhcmdldDogYnJ1c2gsXG4gICAgICAgICAgc2VsZWN0aW9uOiBkaW0ub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSxcbiAgICAgICAgICBtb2RlLFxuICAgICAgICAgIGRpc3BhdGNoOiBsaXN0ZW5lcnNcbiAgICAgICAgfSksXG4gICAgICAgIGRcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHN0YXJ0ZWQoZXZlbnQpIHtcbiAgICBpZiAodG91Y2hlbmRpbmcgJiYgIWV2ZW50LnRvdWNoZXMpIHJldHVybjtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG5cbiAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIHR5cGUgPSBldmVudC50YXJnZXQuX19kYXRhX18udHlwZSxcbiAgICAgICAgbW9kZSA9IChrZXlzICYmIGV2ZW50Lm1ldGFLZXkgPyB0eXBlID0gXCJvdmVybGF5XCIgOiB0eXBlKSA9PT0gXCJzZWxlY3Rpb25cIiA/IE1PREVfRFJBRyA6IChrZXlzICYmIGV2ZW50LmFsdEtleSA/IE1PREVfQ0VOVEVSIDogTU9ERV9IQU5ETEUpLFxuICAgICAgICBzaWduWCA9IGRpbSA9PT0gWSA/IG51bGwgOiBzaWduc1hbdHlwZV0sXG4gICAgICAgIHNpZ25ZID0gZGltID09PSBYID8gbnVsbCA6IHNpZ25zWVt0eXBlXSxcbiAgICAgICAgc3RhdGUgPSBsb2NhbCh0aGF0KSxcbiAgICAgICAgZXh0ZW50ID0gc3RhdGUuZXh0ZW50LFxuICAgICAgICBzZWxlY3Rpb24gPSBzdGF0ZS5zZWxlY3Rpb24sXG4gICAgICAgIFcgPSBleHRlbnRbMF1bMF0sIHcwLCB3MSxcbiAgICAgICAgTiA9IGV4dGVudFswXVsxXSwgbjAsIG4xLFxuICAgICAgICBFID0gZXh0ZW50WzFdWzBdLCBlMCwgZTEsXG4gICAgICAgIFMgPSBleHRlbnRbMV1bMV0sIHMwLCBzMSxcbiAgICAgICAgZHggPSAwLFxuICAgICAgICBkeSA9IDAsXG4gICAgICAgIG1vdmluZyxcbiAgICAgICAgc2hpZnRpbmcgPSBzaWduWCAmJiBzaWduWSAmJiBrZXlzICYmIGV2ZW50LnNoaWZ0S2V5LFxuICAgICAgICBsb2NrWCxcbiAgICAgICAgbG9ja1ksXG4gICAgICAgIHBvaW50cyA9IEFycmF5LmZyb20oZXZlbnQudG91Y2hlcyB8fCBbZXZlbnRdLCB0ID0+IHtcbiAgICAgICAgICBjb25zdCBpID0gdC5pZGVudGlmaWVyO1xuICAgICAgICAgIHQgPSBwb2ludGVyKHQsIHRoYXQpO1xuICAgICAgICAgIHQucG9pbnQwID0gdC5zbGljZSgpO1xuICAgICAgICAgIHQuaWRlbnRpZmllciA9IGk7XG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH0pO1xuXG4gICAgaW50ZXJydXB0KHRoYXQpO1xuICAgIHZhciBlbWl0ID0gZW1pdHRlcih0aGF0LCBhcmd1bWVudHMsIHRydWUpLmJlZm9yZXN0YXJ0KCk7XG5cbiAgICBpZiAodHlwZSA9PT0gXCJvdmVybGF5XCIpIHtcbiAgICAgIGlmIChzZWxlY3Rpb24pIG1vdmluZyA9IHRydWU7XG4gICAgICBjb25zdCBwdHMgPSBbcG9pbnRzWzBdLCBwb2ludHNbMV0gfHwgcG9pbnRzWzBdXTtcbiAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IHNlbGVjdGlvbiA9IFtbXG4gICAgICAgICAgdzAgPSBkaW0gPT09IFkgPyBXIDogbWluKHB0c1swXVswXSwgcHRzWzFdWzBdKSxcbiAgICAgICAgICBuMCA9IGRpbSA9PT0gWCA/IE4gOiBtaW4ocHRzWzBdWzFdLCBwdHNbMV1bMV0pXG4gICAgICAgIF0sIFtcbiAgICAgICAgICBlMCA9IGRpbSA9PT0gWSA/IEUgOiBtYXgocHRzWzBdWzBdLCBwdHNbMV1bMF0pLFxuICAgICAgICAgIHMwID0gZGltID09PSBYID8gUyA6IG1heChwdHNbMF1bMV0sIHB0c1sxXVsxXSlcbiAgICAgICAgXV07XG4gICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIG1vdmUoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3MCA9IHNlbGVjdGlvblswXVswXTtcbiAgICAgIG4wID0gc2VsZWN0aW9uWzBdWzFdO1xuICAgICAgZTAgPSBzZWxlY3Rpb25bMV1bMF07XG4gICAgICBzMCA9IHNlbGVjdGlvblsxXVsxXTtcbiAgICB9XG5cbiAgICB3MSA9IHcwO1xuICAgIG4xID0gbjA7XG4gICAgZTEgPSBlMDtcbiAgICBzMSA9IHMwO1xuXG4gICAgdmFyIGdyb3VwID0gc2VsZWN0KHRoYXQpXG4gICAgICAgIC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJub25lXCIpO1xuXG4gICAgdmFyIG92ZXJsYXkgPSBncm91cC5zZWxlY3RBbGwoXCIub3ZlcmxheVwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGVdKTtcblxuICAgIGlmIChldmVudC50b3VjaGVzKSB7XG4gICAgICBlbWl0Lm1vdmVkID0gbW92ZWQ7XG4gICAgICBlbWl0LmVuZGVkID0gZW5kZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB2aWV3ID0gc2VsZWN0KGV2ZW50LnZpZXcpXG4gICAgICAgICAgLm9uKFwibW91c2Vtb3ZlLmJydXNoXCIsIG1vdmVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcIm1vdXNldXAuYnJ1c2hcIiwgZW5kZWQsIHRydWUpO1xuICAgICAgaWYgKGtleXMpIHZpZXdcbiAgICAgICAgICAub24oXCJrZXlkb3duLmJydXNoXCIsIGtleWRvd25lZCwgdHJ1ZSlcbiAgICAgICAgICAub24oXCJrZXl1cC5icnVzaFwiLCBrZXl1cHBlZCwgdHJ1ZSlcblxuICAgICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgfVxuXG4gICAgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgZW1pdC5zdGFydChldmVudCwgbW9kZS5uYW1lKTtcblxuICAgIGZ1bmN0aW9uIG1vdmVkKGV2ZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IHAgb2YgZXZlbnQuY2hhbmdlZFRvdWNoZXMgfHwgW2V2ZW50XSkge1xuICAgICAgICBmb3IgKGNvbnN0IGQgb2YgcG9pbnRzKVxuICAgICAgICAgIGlmIChkLmlkZW50aWZpZXIgPT09IHAuaWRlbnRpZmllcikgZC5jdXIgPSBwb2ludGVyKHAsIHRoYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHNoaWZ0aW5nICYmICFsb2NrWCAmJiAhbG9ja1kgJiYgcG9pbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBwb2ludCA9IHBvaW50c1swXTtcbiAgICAgICAgaWYgKGFicyhwb2ludC5jdXJbMF0gLSBwb2ludFswXSkgPiBhYnMocG9pbnQuY3VyWzFdIC0gcG9pbnRbMV0pKVxuICAgICAgICAgIGxvY2tZID0gdHJ1ZTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvY2tYID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgcG9pbnQgb2YgcG9pbnRzKVxuICAgICAgICBpZiAocG9pbnQuY3VyKSBwb2ludFswXSA9IHBvaW50LmN1clswXSwgcG9pbnRbMV0gPSBwb2ludC5jdXJbMV07XG4gICAgICBtb3ZpbmcgPSB0cnVlO1xuICAgICAgbm9ldmVudChldmVudCk7XG4gICAgICBtb3ZlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlKGV2ZW50KSB7XG4gICAgICBjb25zdCBwb2ludCA9IHBvaW50c1swXSwgcG9pbnQwID0gcG9pbnQucG9pbnQwO1xuICAgICAgdmFyIHQ7XG5cbiAgICAgIGR4ID0gcG9pbnRbMF0gLSBwb2ludDBbMF07XG4gICAgICBkeSA9IHBvaW50WzFdIC0gcG9pbnQwWzFdO1xuXG4gICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgY2FzZSBNT0RFX1NQQUNFOlxuICAgICAgICBjYXNlIE1PREVfRFJBRzoge1xuICAgICAgICAgIGlmIChzaWduWCkgZHggPSBtYXgoVyAtIHcwLCBtaW4oRSAtIGUwLCBkeCkpLCB3MSA9IHcwICsgZHgsIGUxID0gZTAgKyBkeDtcbiAgICAgICAgICBpZiAoc2lnblkpIGR5ID0gbWF4KE4gLSBuMCwgbWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCArIGR5LCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0hBTkRMRToge1xuICAgICAgICAgIGlmIChwb2ludHNbMV0pIHtcbiAgICAgICAgICAgIGlmIChzaWduWCkgdzEgPSBtYXgoVywgbWluKEUsIHBvaW50c1swXVswXSkpLCBlMSA9IG1heChXLCBtaW4oRSwgcG9pbnRzWzFdWzBdKSksIHNpZ25YID0gMTtcbiAgICAgICAgICAgIGlmIChzaWduWSkgbjEgPSBtYXgoTiwgbWluKFMsIHBvaW50c1swXVsxXSkpLCBzMSA9IG1heChOLCBtaW4oUywgcG9pbnRzWzFdWzFdKSksIHNpZ25ZID0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNpZ25YIDwgMCkgZHggPSBtYXgoVyAtIHcwLCBtaW4oRSAtIHcwLCBkeCkpLCB3MSA9IHcwICsgZHgsIGUxID0gZTA7XG4gICAgICAgICAgICBlbHNlIGlmIChzaWduWCA+IDApIGR4ID0gbWF4KFcgLSBlMCwgbWluKEUgLSBlMCwgZHgpKSwgdzEgPSB3MCwgZTEgPSBlMCArIGR4O1xuICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgZHkgPSBtYXgoTiAtIG4wLCBtaW4oUyAtIG4wLCBkeSkpLCBuMSA9IG4wICsgZHksIHMxID0gczA7XG4gICAgICAgICAgICBlbHNlIGlmIChzaWduWSA+IDApIGR5ID0gbWF4KE4gLSBzMCwgbWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCwgczEgPSBzMCArIGR5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIE1PREVfQ0VOVEVSOiB7XG4gICAgICAgICAgaWYgKHNpZ25YKSB3MSA9IG1heChXLCBtaW4oRSwgdzAgLSBkeCAqIHNpZ25YKSksIGUxID0gbWF4KFcsIG1pbihFLCBlMCArIGR4ICogc2lnblgpKTtcbiAgICAgICAgICBpZiAoc2lnblkpIG4xID0gbWF4KE4sIG1pbihTLCBuMCAtIGR5ICogc2lnblkpKSwgczEgPSBtYXgoTiwgbWluKFMsIHMwICsgZHkgKiBzaWduWSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChlMSA8IHcxKSB7XG4gICAgICAgIHNpZ25YICo9IC0xO1xuICAgICAgICB0ID0gdzAsIHcwID0gZTAsIGUwID0gdDtcbiAgICAgICAgdCA9IHcxLCB3MSA9IGUxLCBlMSA9IHQ7XG4gICAgICAgIGlmICh0eXBlIGluIGZsaXBYKSBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlID0gZmxpcFhbdHlwZV1dKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHMxIDwgbjEpIHtcbiAgICAgICAgc2lnblkgKj0gLTE7XG4gICAgICAgIHQgPSBuMCwgbjAgPSBzMCwgczAgPSB0O1xuICAgICAgICB0ID0gbjEsIG4xID0gczEsIHMxID0gdDtcbiAgICAgICAgaWYgKHR5cGUgaW4gZmxpcFkpIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGUgPSBmbGlwWVt0eXBlXV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uKSBzZWxlY3Rpb24gPSBzdGF0ZS5zZWxlY3Rpb247IC8vIE1heSBiZSBzZXQgYnkgYnJ1c2gubW92ZSFcbiAgICAgIGlmIChsb2NrWCkgdzEgPSBzZWxlY3Rpb25bMF1bMF0sIGUxID0gc2VsZWN0aW9uWzFdWzBdO1xuICAgICAgaWYgKGxvY2tZKSBuMSA9IHNlbGVjdGlvblswXVsxXSwgczEgPSBzZWxlY3Rpb25bMV1bMV07XG5cbiAgICAgIGlmIChzZWxlY3Rpb25bMF1bMF0gIT09IHcxXG4gICAgICAgICAgfHwgc2VsZWN0aW9uWzBdWzFdICE9PSBuMVxuICAgICAgICAgIHx8IHNlbGVjdGlvblsxXVswXSAhPT0gZTFcbiAgICAgICAgICB8fCBzZWxlY3Rpb25bMV1bMV0gIT09IHMxKSB7XG4gICAgICAgIHN0YXRlLnNlbGVjdGlvbiA9IFtbdzEsIG4xXSwgW2UxLCBzMV1dO1xuICAgICAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgICAgZW1pdC5icnVzaChldmVudCwgbW9kZS5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBlbmRlZChldmVudCkge1xuICAgICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgICAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgNTAwKTsgLy8gR2hvc3QgY2xpY2tzIGFyZSBkZWxheWVkIVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ0VuYWJsZShldmVudC52aWV3LCBtb3ZpbmcpO1xuICAgICAgICB2aWV3Lm9uKFwia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaFwiLCBudWxsKTtcbiAgICAgIH1cbiAgICAgIGdyb3VwLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKTtcbiAgICAgIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLm92ZXJsYXkpO1xuICAgICAgaWYgKHN0YXRlLnNlbGVjdGlvbikgc2VsZWN0aW9uID0gc3RhdGUuc2VsZWN0aW9uOyAvLyBNYXkgYmUgc2V0IGJ5IGJydXNoLm1vdmUgKG9uIHN0YXJ0KSFcbiAgICAgIGlmIChlbXB0eShzZWxlY3Rpb24pKSBzdGF0ZS5zZWxlY3Rpb24gPSBudWxsLCByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgIGVtaXQuZW5kKGV2ZW50LCBtb2RlLm5hbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleWRvd25lZChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgMTY6IHsgLy8gU0hJRlRcbiAgICAgICAgICBzaGlmdGluZyA9IHNpZ25YICYmIHNpZ25ZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfSEFORExFKSB7XG4gICAgICAgICAgICBpZiAoc2lnblgpIGUwID0gZTEgLSBkeCAqIHNpZ25YLCB3MCA9IHcxICsgZHggKiBzaWduWDtcbiAgICAgICAgICAgIGlmIChzaWduWSkgczAgPSBzMSAtIGR5ICogc2lnblksIG4wID0gbjEgKyBkeSAqIHNpZ25ZO1xuICAgICAgICAgICAgbW9kZSA9IE1PREVfQ0VOVEVSO1xuICAgICAgICAgICAgbW92ZShldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzI6IHsgLy8gU1BBQ0U7IHRha2VzIHByaW9yaXR5IG92ZXIgQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfSEFORExFIHx8IG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxIC0gZHg7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MSAtIGR4O1xuICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgczAgPSBzMSAtIGR5OyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjEgLSBkeTtcbiAgICAgICAgICAgIG1vZGUgPSBNT0RFX1NQQUNFO1xuICAgICAgICAgICAgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMuc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIG1vdmUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiByZXR1cm47XG4gICAgICB9XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrZXl1cHBlZChldmVudCkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgIGNhc2UgMTY6IHsgLy8gU0hJRlRcbiAgICAgICAgICBpZiAoc2hpZnRpbmcpIHtcbiAgICAgICAgICAgIGxvY2tYID0gbG9ja1kgPSBzaGlmdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgbW92ZShldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxOyBlbHNlIGlmIChzaWduWCA+IDApIHcwID0gdzE7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICBtb3ZlKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzMjogeyAvLyBTUEFDRVxuICAgICAgICAgIGlmIChtb2RlID09PSBNT0RFX1NQQUNFKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgIGlmIChzaWduWCkgZTAgPSBlMSAtIGR4ICogc2lnblgsIHcwID0gdzEgKyBkeCAqIHNpZ25YO1xuICAgICAgICAgICAgICBpZiAoc2lnblkpIHMwID0gczEgLSBkeSAqIHNpZ25ZLCBuMCA9IG4xICsgZHkgKiBzaWduWTtcbiAgICAgICAgICAgICAgbW9kZSA9IE1PREVfQ0VOVEVSO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHNpZ25YIDwgMCkgZTAgPSBlMTsgZWxzZSBpZiAoc2lnblggPiAwKSB3MCA9IHcxO1xuICAgICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICAgIG1vZGUgPSBNT0RFX0hBTkRMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGVdKTtcbiAgICAgICAgICAgIG1vdmUoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiByZXR1cm47XG4gICAgICB9XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaG1vdmVkKGV2ZW50KSB7XG4gICAgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLm1vdmVkKGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoZW5kZWQoZXZlbnQpIHtcbiAgICBlbWl0dGVyKHRoaXMsIGFyZ3VtZW50cykuZW5kZWQoZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9fYnJ1c2ggfHwge3NlbGVjdGlvbjogbnVsbH07XG4gICAgc3RhdGUuZXh0ZW50ID0gbnVtYmVyMihleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgc3RhdGUuZGltID0gZGltO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGJydXNoLmV4dGVudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChleHRlbnQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KG51bWJlcjIoXykpLCBicnVzaCkgOiBleHRlbnQ7XG4gIH07XG5cbiAgYnJ1c2guZmlsdGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZpbHRlciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgYnJ1c2gpIDogZmlsdGVyO1xuICB9O1xuXG4gIGJydXNoLnRvdWNoYWJsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0b3VjaGFibGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGJydXNoKSA6IHRvdWNoYWJsZTtcbiAgfTtcblxuICBicnVzaC5oYW5kbGVTaXplID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGhhbmRsZVNpemUgPSArXywgYnJ1c2gpIDogaGFuZGxlU2l6ZTtcbiAgfTtcblxuICBicnVzaC5rZXlNb2RpZmllcnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoa2V5cyA9ICEhXywgYnJ1c2gpIDoga2V5cztcbiAgfTtcblxuICBicnVzaC5vbiA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZSA9IGxpc3RlbmVycy5vbi5hcHBseShsaXN0ZW5lcnMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSBsaXN0ZW5lcnMgPyBicnVzaCA6IHZhbHVlO1xuICB9O1xuXG4gIHJldHVybiBicnVzaDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-brush/src/brush.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-brush/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-brush/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvY29uc3RhbnQuanM/M2IwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB4ID0+ICgpID0+IHg7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-brush/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-brush/src/event.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-brush/src/event.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ BrushEvent)\n/* harmony export */ });\nfunction BrushEvent(type, {\n sourceEvent,\n target,\n selection,\n mode,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n selection: {value: selection, enumerable: true, configurable: true},\n mode: {value: mode, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9ldmVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsV0FBVyxrREFBa0Q7QUFDN0Qsa0JBQWtCLHlEQUF5RDtBQUMzRSxhQUFhLG9EQUFvRDtBQUNqRSxnQkFBZ0IsdURBQXVEO0FBQ3ZFLFdBQVcsa0RBQWtEO0FBQzdELFFBQVE7QUFDUixHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9ldmVudC5qcz80MzBmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJydXNoRXZlbnQodHlwZSwge1xuICBzb3VyY2VFdmVudCxcbiAgdGFyZ2V0LFxuICBzZWxlY3Rpb24sXG4gIG1vZGUsXG4gIGRpc3BhdGNoXG59KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICB0eXBlOiB7dmFsdWU6IHR5cGUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc291cmNlRXZlbnQ6IHt2YWx1ZTogc291cmNlRXZlbnQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgdGFyZ2V0OiB7dmFsdWU6IHRhcmdldCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBzZWxlY3Rpb246IHt2YWx1ZTogc2VsZWN0aW9uLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIG1vZGU6IHt2YWx1ZTogbW9kZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBfOiB7dmFsdWU6IGRpc3BhdGNofVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-brush/src/event.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-brush/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-brush/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"brush\": () => (/* reexport safe */ _brush_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"brushSelection\": () => (/* reexport safe */ _brush_js__WEBPACK_IMPORTED_MODULE_0__.brushSelection),\n/* harmony export */ \"brushX\": () => (/* reexport safe */ _brush_js__WEBPACK_IMPORTED_MODULE_0__.brushX),\n/* harmony export */ \"brushY\": () => (/* reexport safe */ _brush_js__WEBPACK_IMPORTED_MODULE_0__.brushY)\n/* harmony export */ });\n/* harmony import */ var _brush_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./brush.js */ \"../../../node_modules/d3-brush/src/brush.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUtvQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYnJ1c2gvc3JjL2luZGV4LmpzPzEzMzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBicnVzaCxcbiAgYnJ1c2hYLFxuICBicnVzaFksXG4gIGJydXNoU2VsZWN0aW9uXG59IGZyb20gXCIuL2JydXNoLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-brush/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-brush/src/noevent.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-brush/src/noevent.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"nopropagation\": () => (/* binding */ nopropagation)\n/* harmony export */ });\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWJydXNoL3NyYy9ub2V2ZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtYnJ1c2gvc3JjL25vZXZlbnQuanM/OGFiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gbm9wcm9wYWdhdGlvbihldmVudCkge1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-brush/src/noevent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/array.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-chord/src/array.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"slice\": () => (/* binding */ slice)\n/* harmony export */ });\nvar slice = Array.prototype.slice;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9hcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9hcnJheS5qcz9kOTI3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/chord.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-chord/src/chord.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"chordDirected\": () => (/* binding */ chordDirected),\n/* harmony export */ \"chordTranspose\": () => (/* binding */ chordTranspose),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-chord/src/math.js\");\n\n\nfunction range(i, j) {\n return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return chord(false, false);\n}\n\nfunction chordTranspose() {\n return chord(false, true);\n}\n\nfunction chordDirected() {\n return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = new Array(n),\n groupIndex = range(0, n),\n chords = new Array(n * n),\n groups = new Array(n),\n k = 0, dx;\n\n matrix = Float64Array.from({length: n * n}, transpose\n ? (_, i) => matrix[i % n][i / n | 0]\n : (_, i) => matrix[i / n | 0][i % n]);\n\n // Compute the scaling factor from value to angle in [0, 2pi].\n for (let i = 0; i < n; ++i) {\n let x = 0;\n for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n k += groupSums[i] = x;\n }\n k = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(0, _math_js__WEBPACK_IMPORTED_MODULE_0__.tau - padAngle * n) / k;\n dx = k ? padAngle : _math_js__WEBPACK_IMPORTED_MODULE_0__.tau / n;\n\n // Compute the angles for each group and constituent chord.\n {\n let x = 0;\n if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n for (const i of groupIndex) {\n const x0 = x;\n if (directed) {\n const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n for (const j of subgroupIndex) {\n if (j < 0) {\n const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n } else {\n const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n } else {\n const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n for (const j of subgroupIndex) {\n let chord;\n if (i < j) {\n chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n } else {\n chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n if (i === j) chord.source = chord.target;\n }\n if (chord.source && chord.target && chord.source.value < chord.target.value) {\n const source = chord.source;\n chord.source = chord.target;\n chord.target = source;\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n }\n x += dx;\n }\n }\n\n // Remove empty chords.\n chords = Object.values(chords);\n chords.groups = groups;\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9jaG9yZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW1DOztBQUVuQztBQUNBLHFCQUFxQixjQUFjO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDLGNBQWM7QUFDOUM7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0Esc0JBQXNCLE9BQU87QUFDN0I7QUFDQTtBQUNBLFFBQVEsNkNBQUcsSUFBSSx5Q0FBRztBQUNsQix3QkFBd0IseUNBQUc7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RUFBeUUsMkJBQTJCO0FBQ3BHLDhCQUE4QjtBQUM5QixjQUFjO0FBQ2QsdUVBQXVFLDJCQUEyQjtBQUNsRyw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSwyQkFBMkI7QUFDNUYsOEJBQThCO0FBQzlCLGNBQWM7QUFDZCxpRUFBaUUsMkJBQTJCO0FBQzVGLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMsNkNBQUc7QUFDN0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY2hvcmQvc3JjL2Nob3JkLmpzP2YzM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXgsIHRhdX0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiByYW5nZShpLCBqKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IGogLSBpfSwgKF8sIGspID0+IGkgKyBrKTtcbn1cblxuZnVuY3Rpb24gY29tcGFyZVZhbHVlKGNvbXBhcmUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gY29tcGFyZShcbiAgICAgIGEuc291cmNlLnZhbHVlICsgYS50YXJnZXQudmFsdWUsXG4gICAgICBiLnNvdXJjZS52YWx1ZSArIGIudGFyZ2V0LnZhbHVlXG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjaG9yZChmYWxzZSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvcmRUcmFuc3Bvc2UoKSB7XG4gIHJldHVybiBjaG9yZChmYWxzZSwgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaG9yZERpcmVjdGVkKCkge1xuICByZXR1cm4gY2hvcmQodHJ1ZSwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBjaG9yZChkaXJlY3RlZCwgdHJhbnNwb3NlKSB7XG4gIHZhciBwYWRBbmdsZSA9IDAsXG4gICAgICBzb3J0R3JvdXBzID0gbnVsbCxcbiAgICAgIHNvcnRTdWJncm91cHMgPSBudWxsLFxuICAgICAgc29ydENob3JkcyA9IG51bGw7XG5cbiAgZnVuY3Rpb24gY2hvcmQobWF0cml4KSB7XG4gICAgdmFyIG4gPSBtYXRyaXgubGVuZ3RoLFxuICAgICAgICBncm91cFN1bXMgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGdyb3VwSW5kZXggPSByYW5nZSgwLCBuKSxcbiAgICAgICAgY2hvcmRzID0gbmV3IEFycmF5KG4gKiBuKSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG4pLFxuICAgICAgICBrID0gMCwgZHg7XG5cbiAgICBtYXRyaXggPSBGbG9hdDY0QXJyYXkuZnJvbSh7bGVuZ3RoOiBuICogbn0sIHRyYW5zcG9zZVxuICAgICAgICA/IChfLCBpKSA9PiBtYXRyaXhbaSAlIG5dW2kgLyBuIHwgMF1cbiAgICAgICAgOiAoXywgaSkgPT4gbWF0cml4W2kgLyBuIHwgMF1baSAlIG5dKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIHNjYWxpbmcgZmFjdG9yIGZyb20gdmFsdWUgdG8gYW5nbGUgaW4gWzAsIDJwaV0uXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGxldCB4ID0gMDtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgKytqKSB4ICs9IG1hdHJpeFtpICogbiArIGpdICsgZGlyZWN0ZWQgKiBtYXRyaXhbaiAqIG4gKyBpXTtcbiAgICAgIGsgKz0gZ3JvdXBTdW1zW2ldID0geDtcbiAgICB9XG4gICAgayA9IG1heCgwLCB0YXUgLSBwYWRBbmdsZSAqIG4pIC8gaztcbiAgICBkeCA9IGsgPyBwYWRBbmdsZSA6IHRhdSAvIG47XG5cbiAgICAvLyBDb21wdXRlIHRoZSBhbmdsZXMgZm9yIGVhY2ggZ3JvdXAgYW5kIGNvbnN0aXR1ZW50IGNob3JkLlxuICAgIHtcbiAgICAgIGxldCB4ID0gMDtcbiAgICAgIGlmIChzb3J0R3JvdXBzKSBncm91cEluZGV4LnNvcnQoKGEsIGIpID0+IHNvcnRHcm91cHMoZ3JvdXBTdW1zW2FdLCBncm91cFN1bXNbYl0pKTtcbiAgICAgIGZvciAoY29uc3QgaSBvZiBncm91cEluZGV4KSB7XG4gICAgICAgIGNvbnN0IHgwID0geDtcbiAgICAgICAgaWYgKGRpcmVjdGVkKSB7XG4gICAgICAgICAgY29uc3Qgc3ViZ3JvdXBJbmRleCA9IHJhbmdlKH5uICsgMSwgbikuZmlsdGVyKGogPT4gaiA8IDAgPyBtYXRyaXhbfmogKiBuICsgaV0gOiBtYXRyaXhbaSAqIG4gKyBqXSk7XG4gICAgICAgICAgaWYgKHNvcnRTdWJncm91cHMpIHN1Ymdyb3VwSW5kZXguc29ydCgoYSwgYikgPT4gc29ydFN1Ymdyb3VwcyhhIDwgMCA/IC1tYXRyaXhbfmEgKiBuICsgaV0gOiBtYXRyaXhbaSAqIG4gKyBhXSwgYiA8IDAgPyAtbWF0cml4W35iICogbiArIGldIDogbWF0cml4W2kgKiBuICsgYl0pKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGogb2Ygc3ViZ3JvdXBJbmRleCkge1xuICAgICAgICAgICAgaWYgKGogPCAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNob3JkID0gY2hvcmRzW35qICogbiArIGldIHx8IChjaG9yZHNbfmogKiBuICsgaV0gPSB7c291cmNlOiBudWxsLCB0YXJnZXQ6IG51bGx9KTtcbiAgICAgICAgICAgICAgY2hvcmQudGFyZ2V0ID0ge2luZGV4OiBpLCBzdGFydEFuZ2xlOiB4LCBlbmRBbmdsZTogeCArPSBtYXRyaXhbfmogKiBuICsgaV0gKiBrLCB2YWx1ZTogbWF0cml4W35qICogbiArIGldfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNob3JkID0gY2hvcmRzW2kgKiBuICsgal0gfHwgKGNob3Jkc1tpICogbiArIGpdID0ge3NvdXJjZTogbnVsbCwgdGFyZ2V0OiBudWxsfSk7XG4gICAgICAgICAgICAgIGNob3JkLnNvdXJjZSA9IHtpbmRleDogaSwgc3RhcnRBbmdsZTogeCwgZW5kQW5nbGU6IHggKz0gbWF0cml4W2kgKiBuICsgal0gKiBrLCB2YWx1ZTogbWF0cml4W2kgKiBuICsgal19O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbaV0gPSB7aW5kZXg6IGksIHN0YXJ0QW5nbGU6IHgwLCBlbmRBbmdsZTogeCwgdmFsdWU6IGdyb3VwU3Vtc1tpXX07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgc3ViZ3JvdXBJbmRleCA9IHJhbmdlKDAsIG4pLmZpbHRlcihqID0+IG1hdHJpeFtpICogbiArIGpdIHx8IG1hdHJpeFtqICogbiArIGldKTtcbiAgICAgICAgICBpZiAoc29ydFN1Ymdyb3Vwcykgc3ViZ3JvdXBJbmRleC5zb3J0KChhLCBiKSA9PiBzb3J0U3ViZ3JvdXBzKG1hdHJpeFtpICogbiArIGFdLCBtYXRyaXhbaSAqIG4gKyBiXSkpO1xuICAgICAgICAgIGZvciAoY29uc3QgaiBvZiBzdWJncm91cEluZGV4KSB7XG4gICAgICAgICAgICBsZXQgY2hvcmQ7XG4gICAgICAgICAgICBpZiAoaSA8IGopIHtcbiAgICAgICAgICAgICAgY2hvcmQgPSBjaG9yZHNbaSAqIG4gKyBqXSB8fCAoY2hvcmRzW2kgKiBuICsgal0gPSB7c291cmNlOiBudWxsLCB0YXJnZXQ6IG51bGx9KTtcbiAgICAgICAgICAgICAgY2hvcmQuc291cmNlID0ge2luZGV4OiBpLCBzdGFydEFuZ2xlOiB4LCBlbmRBbmdsZTogeCArPSBtYXRyaXhbaSAqIG4gKyBqXSAqIGssIHZhbHVlOiBtYXRyaXhbaSAqIG4gKyBqXX07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaG9yZCA9IGNob3Jkc1tqICogbiArIGldIHx8IChjaG9yZHNbaiAqIG4gKyBpXSA9IHtzb3VyY2U6IG51bGwsIHRhcmdldDogbnVsbH0pO1xuICAgICAgICAgICAgICBjaG9yZC50YXJnZXQgPSB7aW5kZXg6IGksIHN0YXJ0QW5nbGU6IHgsIGVuZEFuZ2xlOiB4ICs9IG1hdHJpeFtpICogbiArIGpdICogaywgdmFsdWU6IG1hdHJpeFtpICogbiArIGpdfTtcbiAgICAgICAgICAgICAgaWYgKGkgPT09IGopIGNob3JkLnNvdXJjZSA9IGNob3JkLnRhcmdldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaG9yZC5zb3VyY2UgJiYgY2hvcmQudGFyZ2V0ICYmIGNob3JkLnNvdXJjZS52YWx1ZSA8IGNob3JkLnRhcmdldC52YWx1ZSkge1xuICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBjaG9yZC5zb3VyY2U7XG4gICAgICAgICAgICAgIGNob3JkLnNvdXJjZSA9IGNob3JkLnRhcmdldDtcbiAgICAgICAgICAgICAgY2hvcmQudGFyZ2V0ID0gc291cmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cHNbaV0gPSB7aW5kZXg6IGksIHN0YXJ0QW5nbGU6IHgwLCBlbmRBbmdsZTogeCwgdmFsdWU6IGdyb3VwU3Vtc1tpXX07XG4gICAgICAgIH1cbiAgICAgICAgeCArPSBkeDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgZW1wdHkgY2hvcmRzLlxuICAgIGNob3JkcyA9IE9iamVjdC52YWx1ZXMoY2hvcmRzKTtcbiAgICBjaG9yZHMuZ3JvdXBzID0gZ3JvdXBzO1xuICAgIHJldHVybiBzb3J0Q2hvcmRzID8gY2hvcmRzLnNvcnQoc29ydENob3JkcykgOiBjaG9yZHM7XG4gIH1cblxuICBjaG9yZC5wYWRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRBbmdsZSA9IG1heCgwLCBfKSwgY2hvcmQpIDogcGFkQW5nbGU7XG4gIH07XG5cbiAgY2hvcmQuc29ydEdyb3VwcyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzb3J0R3JvdXBzID0gXywgY2hvcmQpIDogc29ydEdyb3VwcztcbiAgfTtcblxuICBjaG9yZC5zb3J0U3ViZ3JvdXBzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNvcnRTdWJncm91cHMgPSBfLCBjaG9yZCkgOiBzb3J0U3ViZ3JvdXBzO1xuICB9O1xuXG4gIGNob3JkLnNvcnRDaG9yZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoXyA9PSBudWxsID8gc29ydENob3JkcyA9IG51bGwgOiAoc29ydENob3JkcyA9IGNvbXBhcmVWYWx1ZShfKSkuXyA9IF8sIGNob3JkKSA6IHNvcnRDaG9yZHMgJiYgc29ydENob3Jkcy5fO1xuICB9O1xuXG4gIHJldHVybiBjaG9yZDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/chord.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-chord/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9jb25zdGFudC5qcz80NzljIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-chord/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"chord\": () => (/* reexport safe */ _chord_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"chordDirected\": () => (/* reexport safe */ _chord_js__WEBPACK_IMPORTED_MODULE_0__.chordDirected),\n/* harmony export */ \"chordTranspose\": () => (/* reexport safe */ _chord_js__WEBPACK_IMPORTED_MODULE_0__.chordTranspose),\n/* harmony export */ \"ribbon\": () => (/* reexport safe */ _ribbon_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"ribbonArrow\": () => (/* reexport safe */ _ribbon_js__WEBPACK_IMPORTED_MODULE_1__.ribbonArrow)\n/* harmony export */ });\n/* harmony import */ var _chord_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chord.js */ \"../../../node_modules/d3-chord/src/chord.js\");\n/* harmony import */ var _ribbon_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ribbon.js */ \"../../../node_modules/d3-chord/src/ribbon.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTJFO0FBQ2hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1jaG9yZC9zcmMvaW5kZXguanM/YTIwYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgY2hvcmQsIGNob3JkVHJhbnNwb3NlLCBjaG9yZERpcmVjdGVkfSBmcm9tIFwiLi9jaG9yZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJpYmJvbiwgcmliYm9uQXJyb3d9IGZyb20gXCIuL3JpYmJvbi5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/math.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-chord/src/math.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"abs\": () => (/* binding */ abs),\n/* harmony export */ \"cos\": () => (/* binding */ cos),\n/* harmony export */ \"epsilon\": () => (/* binding */ epsilon),\n/* harmony export */ \"halfPi\": () => (/* binding */ halfPi),\n/* harmony export */ \"max\": () => (/* binding */ max),\n/* harmony export */ \"pi\": () => (/* binding */ pi),\n/* harmony export */ \"sin\": () => (/* binding */ sin),\n/* harmony export */ \"tau\": () => (/* binding */ tau)\n/* harmony export */ });\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = pi * 2;\nvar max = Math.max;\nvar epsilon = 1e-12;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9tYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY2hvcmQvc3JjL21hdGguanM/MjJlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBjb3MgPSBNYXRoLmNvcztcbmV4cG9ydCB2YXIgc2luID0gTWF0aC5zaW47XG5leHBvcnQgdmFyIHBpID0gTWF0aC5QSTtcbmV4cG9ydCB2YXIgaGFsZlBpID0gcGkgLyAyO1xuZXhwb3J0IHZhciB0YXUgPSBwaSAqIDI7XG5leHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBlcHNpbG9uID0gMWUtMTI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/math.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-chord/src/ribbon.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-chord/src/ribbon.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"ribbonArrow\": () => (/* binding */ ribbonArrow)\n/* harmony export */ });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-path */ \"../../../node_modules/d3-path/src/path.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-chord/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-chord/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-chord/src/math.js\");\n\n\n\n\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n return 0;\n}\n\nfunction defaultArrowheadRadius() {\n return 10;\n}\n\nfunction ribbon(headRadius) {\n var source = defaultSource,\n target = defaultTarget,\n sourceRadius = defaultRadius,\n targetRadius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n padAngle = defaultPadAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n s = source.apply(this, arguments),\n t = target.apply(this, arguments),\n ap = padAngle.apply(this, arguments) / 2,\n argv = _array_js__WEBPACK_IMPORTED_MODULE_0__.slice.call(arguments),\n sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi,\n sa1 = endAngle.apply(this, argv) - _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi,\n tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi,\n ta1 = endAngle.apply(this, argv) - _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi;\n\n if (!context) context = buffer = (0,d3_path__WEBPACK_IMPORTED_MODULE_2__.path)();\n\n if (ap > _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) {\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(sa1 - sa0) > ap * 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n else sa0 = sa1 = (sa0 + sa1) / 2;\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(ta1 - ta0) > ap * 2 + _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n else ta0 = ta1 = (ta0 + ta1) / 2;\n }\n\n context.moveTo(sr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(sa0), sr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(sa0));\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) {\n if (headRadius) {\n var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n context.quadraticCurveTo(0, 0, tr2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(ta0), tr2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(ta0));\n context.lineTo(tr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(ta2), tr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(ta2));\n context.lineTo(tr2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(ta1), tr2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(ta1));\n } else {\n context.quadraticCurveTo(0, 0, tr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(ta0), tr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n }\n context.quadraticCurveTo(0, 0, sr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(sa0), sr * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(sa0));\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n if (headRadius) ribbon.headRadius = function(_) {\n return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : headRadius;\n };\n\n ribbon.radius = function(_) {\n return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : sourceRadius;\n };\n\n ribbon.sourceRadius = function(_) {\n return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : sourceRadius;\n };\n\n ribbon.targetRadius = function(_) {\n return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : targetRadius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : endAngle;\n };\n\n ribbon.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), ribbon) : padAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return ribbon();\n}\n\nfunction ribbonArrow() {\n return ribbon(defaultArrowheadRadius);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9yaWJib24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTZCO0FBQ0k7QUFDSTtBQUNvQjs7QUFFekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBVTtBQUN6QjtBQUNBLDZDQUE2Qyw0Q0FBTTtBQUNuRCwyQ0FBMkMsNENBQU07QUFDakQ7QUFDQSw2Q0FBNkMsNENBQU07QUFDbkQsMkNBQTJDLDRDQUFNOztBQUVqRCxxQ0FBcUMsNkNBQUk7O0FBRXpDLGFBQWEsNkNBQU87QUFDcEIsVUFBVSw2Q0FBRyx1QkFBdUIsNkNBQU87QUFDM0M7QUFDQSxVQUFVLDZDQUFHLHVCQUF1Qiw2Q0FBTztBQUMzQztBQUNBOztBQUVBLHdCQUF3Qiw2Q0FBRyxZQUFZLDZDQUFHO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLDZDQUFHLGFBQWEsNkNBQUc7QUFDaEUsNEJBQTRCLDZDQUFHLFlBQVksNkNBQUc7QUFDOUMsNkJBQTZCLDZDQUFHLGFBQWEsNkNBQUc7QUFDaEQsUUFBUTtBQUNSLDRDQUE0Qyw2Q0FBRyxZQUFZLDZDQUFHO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyw2Q0FBRyxZQUFZLDZDQUFHO0FBQzFEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSwwRUFBMEUsd0RBQVE7QUFDbEY7O0FBRUE7QUFDQSwyRkFBMkYsd0RBQVE7QUFDbkc7O0FBRUE7QUFDQSw0RUFBNEUsd0RBQVE7QUFDcEY7O0FBRUE7QUFDQSw0RUFBNEUsd0RBQVE7QUFDcEY7O0FBRUE7QUFDQSwwRUFBMEUsd0RBQVE7QUFDbEY7O0FBRUE7QUFDQSx3RUFBd0Usd0RBQVE7QUFDaEY7O0FBRUE7QUFDQSx3RUFBd0Usd0RBQVE7QUFDaEY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY2hvcmQvc3JjL3JpYmJvbi5qcz9iZTUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcbmltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7YWJzLCBjb3MsIGVwc2lsb24sIGhhbGZQaSwgc2lufSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTb3VyY2UoZCkge1xuICByZXR1cm4gZC5zb3VyY2U7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRUYXJnZXQoZCkge1xuICByZXR1cm4gZC50YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRSYWRpdXMoZCkge1xuICByZXR1cm4gZC5yYWRpdXM7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRTdGFydEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQuc3RhcnRBbmdsZTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEVuZEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQuZW5kQW5nbGU7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRQYWRBbmdsZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBcnJvd2hlYWRSYWRpdXMoKSB7XG4gIHJldHVybiAxMDtcbn1cblxuZnVuY3Rpb24gcmliYm9uKGhlYWRSYWRpdXMpIHtcbiAgdmFyIHNvdXJjZSA9IGRlZmF1bHRTb3VyY2UsXG4gICAgICB0YXJnZXQgPSBkZWZhdWx0VGFyZ2V0LFxuICAgICAgc291cmNlUmFkaXVzID0gZGVmYXVsdFJhZGl1cyxcbiAgICAgIHRhcmdldFJhZGl1cyA9IGRlZmF1bHRSYWRpdXMsXG4gICAgICBzdGFydEFuZ2xlID0gZGVmYXVsdFN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZSA9IGRlZmF1bHRFbmRBbmdsZSxcbiAgICAgIHBhZEFuZ2xlID0gZGVmYXVsdFBhZEFuZ2xlLFxuICAgICAgY29udGV4dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gcmliYm9uKCkge1xuICAgIHZhciBidWZmZXIsXG4gICAgICAgIHMgPSBzb3VyY2UuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgdCA9IHRhcmdldC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICBhcCA9IHBhZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLyAyLFxuICAgICAgICBhcmd2ID0gc2xpY2UuY2FsbChhcmd1bWVudHMpLFxuICAgICAgICBzciA9ICtzb3VyY2VSYWRpdXMuYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSBzLCBhcmd2KSksXG4gICAgICAgIHNhMCA9IHN0YXJ0QW5nbGUuYXBwbHkodGhpcywgYXJndikgLSBoYWxmUGksXG4gICAgICAgIHNhMSA9IGVuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3YpIC0gaGFsZlBpLFxuICAgICAgICB0ciA9ICt0YXJnZXRSYWRpdXMuYXBwbHkodGhpcywgKGFyZ3ZbMF0gPSB0LCBhcmd2KSksXG4gICAgICAgIHRhMCA9IHN0YXJ0QW5nbGUuYXBwbHkodGhpcywgYXJndikgLSBoYWxmUGksXG4gICAgICAgIHRhMSA9IGVuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3YpIC0gaGFsZlBpO1xuXG4gICAgaWYgKCFjb250ZXh0KSBjb250ZXh0ID0gYnVmZmVyID0gcGF0aCgpO1xuXG4gICAgaWYgKGFwID4gZXBzaWxvbikge1xuICAgICAgaWYgKGFicyhzYTEgLSBzYTApID4gYXAgKiAyICsgZXBzaWxvbikgc2ExID4gc2EwID8gKHNhMCArPSBhcCwgc2ExIC09IGFwKSA6IChzYTAgLT0gYXAsIHNhMSArPSBhcCk7XG4gICAgICBlbHNlIHNhMCA9IHNhMSA9IChzYTAgKyBzYTEpIC8gMjtcbiAgICAgIGlmIChhYnModGExIC0gdGEwKSA+IGFwICogMiArIGVwc2lsb24pIHRhMSA+IHRhMCA/ICh0YTAgKz0gYXAsIHRhMSAtPSBhcCkgOiAodGEwIC09IGFwLCB0YTEgKz0gYXApO1xuICAgICAgZWxzZSB0YTAgPSB0YTEgPSAodGEwICsgdGExKSAvIDI7XG4gICAgfVxuXG4gICAgY29udGV4dC5tb3ZlVG8oc3IgKiBjb3Moc2EwKSwgc3IgKiBzaW4oc2EwKSk7XG4gICAgY29udGV4dC5hcmMoMCwgMCwgc3IsIHNhMCwgc2ExKTtcbiAgICBpZiAoc2EwICE9PSB0YTAgfHwgc2ExICE9PSB0YTEpIHtcbiAgICAgIGlmIChoZWFkUmFkaXVzKSB7XG4gICAgICAgIHZhciBociA9ICtoZWFkUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRyMiA9IHRyIC0gaHIsIHRhMiA9ICh0YTAgKyB0YTEpIC8gMjtcbiAgICAgICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKDAsIDAsIHRyMiAqIGNvcyh0YTApLCB0cjIgKiBzaW4odGEwKSk7XG4gICAgICAgIGNvbnRleHQubGluZVRvKHRyICogY29zKHRhMiksIHRyICogc2luKHRhMikpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh0cjIgKiBjb3ModGExKSwgdHIyICogc2luKHRhMSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKDAsIDAsIHRyICogY29zKHRhMCksIHRyICogc2luKHRhMCkpO1xuICAgICAgICBjb250ZXh0LmFyYygwLCAwLCB0ciwgdGEwLCB0YTEpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oMCwgMCwgc3IgKiBjb3Moc2EwKSwgc3IgKiBzaW4oc2EwKSk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcblxuICAgIGlmIChidWZmZXIpIHJldHVybiBjb250ZXh0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgaWYgKGhlYWRSYWRpdXMpIHJpYmJvbi5oZWFkUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGhlYWRSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgcmliYm9uKSA6IGhlYWRSYWRpdXM7XG4gIH07XG5cbiAgcmliYm9uLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzb3VyY2VSYWRpdXMgPSB0YXJnZXRSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgcmliYm9uKSA6IHNvdXJjZVJhZGl1cztcbiAgfTtcblxuICByaWJib24uc291cmNlUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNvdXJjZVJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCByaWJib24pIDogc291cmNlUmFkaXVzO1xuICB9O1xuXG4gIHJpYmJvbi50YXJnZXRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0UmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHJpYmJvbikgOiB0YXJnZXRSYWRpdXM7XG4gIH07XG5cbiAgcmliYm9uLnN0YXJ0QW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3RhcnRBbmdsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCByaWJib24pIDogc3RhcnRBbmdsZTtcbiAgfTtcblxuICByaWJib24uZW5kQW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZW5kQW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgcmliYm9uKSA6IGVuZEFuZ2xlO1xuICB9O1xuXG4gIHJpYmJvbi5wYWRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRBbmdsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCByaWJib24pIDogcGFkQW5nbGU7XG4gIH07XG5cbiAgcmliYm9uLnNvdXJjZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzb3VyY2UgPSBfLCByaWJib24pIDogc291cmNlO1xuICB9O1xuXG4gIHJpYmJvbi50YXJnZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0ID0gXywgcmliYm9uKSA6IHRhcmdldDtcbiAgfTtcblxuICByaWJib24uY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoY29udGV4dCA9IF8gPT0gbnVsbCA/IG51bGwgOiBfKSwgcmliYm9uKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIHJpYmJvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiByaWJib24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJpYmJvbkFycm93KCkge1xuICByZXR1cm4gcmliYm9uKGRlZmF1bHRBcnJvd2hlYWRSYWRpdXMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-chord/src/ribbon.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/color.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-color/src/color.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Color\": () => (/* binding */ Color),\n/* harmony export */ \"Rgb\": () => (/* binding */ Rgb),\n/* harmony export */ \"brighter\": () => (/* binding */ brighter),\n/* harmony export */ \"darker\": () => (/* binding */ darker),\n/* harmony export */ \"default\": () => (/* binding */ color),\n/* harmony export */ \"hsl\": () => (/* binding */ hsl),\n/* harmony export */ \"hslConvert\": () => (/* binding */ hslConvert),\n/* harmony export */ \"rgb\": () => (/* binding */ rgb),\n/* harmony export */ \"rgbConvert\": () => (/* binding */ rgbConvert)\n/* harmony export */ });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./define.js */ \"../../../node_modules/d3-color/src/define.js\");\n\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Rgb, rgb, (0,_define_js__WEBPACK_IMPORTED_MODULE_0__.extend)(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Hsl, hsl, (0,_define_js__WEBPACK_IMPORTED_MODULE_0__.extend)(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jb2xvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQTJDOztBQUVwQzs7QUFFQTtBQUNBOztBQUVQO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixJQUFJO0FBQzdCLHdDQUF3QyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUk7QUFDMUQsd0NBQXdDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSTtBQUMxRCwwQ0FBMEMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSTtBQUNuRSwwQ0FBMEMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSTtBQUNuRSx3Q0FBd0MsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJO0FBQzFELDBDQUEwQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJOztBQUVuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0RBQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzREFBTSxXQUFXLGtEQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxhQUFhLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWTtBQUNyRDs7QUFFQTtBQUNBLGFBQWEsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsb0RBQW9EO0FBQzNHOztBQUVBO0FBQ0E7QUFDQSxZQUFZLDJCQUEyQixFQUFFLGVBQWUsSUFBSSxlQUFlLElBQUksZUFBZSxFQUFFLHFCQUFxQixFQUFFLEdBQUc7QUFDMUg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNEQUFNLFdBQVcsa0RBQU07QUFDdkI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYywyQkFBMkIsRUFBRSxlQUFlLElBQUkscUJBQXFCLEtBQUsscUJBQXFCLEdBQUcscUJBQXFCLEVBQUUsR0FBRztBQUMxSTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanM/MWY3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yKCkge31cblxuZXhwb3J0IHZhciBkYXJrZXIgPSAwLjc7XG5leHBvcnQgdmFyIGJyaWdodGVyID0gMSAvIGRhcmtlcjtcblxudmFyIHJlSSA9IFwiXFxcXHMqKFsrLV0/XFxcXGQrKVxcXFxzKlwiLFxuICAgIHJlTiA9IFwiXFxcXHMqKFsrLV0/KD86XFxcXGQqXFxcXC4pP1xcXFxkKyg/OltlRV1bKy1dP1xcXFxkKyk/KVxcXFxzKlwiLFxuICAgIHJlUCA9IFwiXFxcXHMqKFsrLV0/KD86XFxcXGQqXFxcXC4pP1xcXFxkKyg/OltlRV1bKy1dP1xcXFxkKyk/KSVcXFxccypcIixcbiAgICByZUhleCA9IC9eIyhbMC05YS1mXXszLDh9KSQvLFxuICAgIHJlUmdiSW50ZWdlciA9IG5ldyBSZWdFeHAoYF5yZ2JcXFxcKCR7cmVJfSwke3JlSX0sJHtyZUl9XFxcXCkkYCksXG4gICAgcmVSZ2JQZXJjZW50ID0gbmV3IFJlZ0V4cChgXnJnYlxcXFwoJHtyZVB9LCR7cmVQfSwke3JlUH1cXFxcKSRgKSxcbiAgICByZVJnYmFJbnRlZ2VyID0gbmV3IFJlZ0V4cChgXnJnYmFcXFxcKCR7cmVJfSwke3JlSX0sJHtyZUl9LCR7cmVOfVxcXFwpJGApLFxuICAgIHJlUmdiYVBlcmNlbnQgPSBuZXcgUmVnRXhwKGBecmdiYVxcXFwoJHtyZVB9LCR7cmVQfSwke3JlUH0sJHtyZU59XFxcXCkkYCksXG4gICAgcmVIc2xQZXJjZW50ID0gbmV3IFJlZ0V4cChgXmhzbFxcXFwoJHtyZU59LCR7cmVQfSwke3JlUH1cXFxcKSRgKSxcbiAgICByZUhzbGFQZXJjZW50ID0gbmV3IFJlZ0V4cChgXmhzbGFcXFxcKCR7cmVOfSwke3JlUH0sJHtyZVB9LCR7cmVOfVxcXFwpJGApO1xuXG52YXIgbmFtZWQgPSB7XG4gIGFsaWNlYmx1ZTogMHhmMGY4ZmYsXG4gIGFudGlxdWV3aGl0ZTogMHhmYWViZDcsXG4gIGFxdWE6IDB4MDBmZmZmLFxuICBhcXVhbWFyaW5lOiAweDdmZmZkNCxcbiAgYXp1cmU6IDB4ZjBmZmZmLFxuICBiZWlnZTogMHhmNWY1ZGMsXG4gIGJpc3F1ZTogMHhmZmU0YzQsXG4gIGJsYWNrOiAweDAwMDAwMCxcbiAgYmxhbmNoZWRhbG1vbmQ6IDB4ZmZlYmNkLFxuICBibHVlOiAweDAwMDBmZixcbiAgYmx1ZXZpb2xldDogMHg4YTJiZTIsXG4gIGJyb3duOiAweGE1MmEyYSxcbiAgYnVybHl3b29kOiAweGRlYjg4NyxcbiAgY2FkZXRibHVlOiAweDVmOWVhMCxcbiAgY2hhcnRyZXVzZTogMHg3ZmZmMDAsXG4gIGNob2NvbGF0ZTogMHhkMjY5MWUsXG4gIGNvcmFsOiAweGZmN2Y1MCxcbiAgY29ybmZsb3dlcmJsdWU6IDB4NjQ5NWVkLFxuICBjb3Juc2lsazogMHhmZmY4ZGMsXG4gIGNyaW1zb246IDB4ZGMxNDNjLFxuICBjeWFuOiAweDAwZmZmZixcbiAgZGFya2JsdWU6IDB4MDAwMDhiLFxuICBkYXJrY3lhbjogMHgwMDhiOGIsXG4gIGRhcmtnb2xkZW5yb2Q6IDB4Yjg4NjBiLFxuICBkYXJrZ3JheTogMHhhOWE5YTksXG4gIGRhcmtncmVlbjogMHgwMDY0MDAsXG4gIGRhcmtncmV5OiAweGE5YTlhOSxcbiAgZGFya2toYWtpOiAweGJkYjc2YixcbiAgZGFya21hZ2VudGE6IDB4OGIwMDhiLFxuICBkYXJrb2xpdmVncmVlbjogMHg1NTZiMmYsXG4gIGRhcmtvcmFuZ2U6IDB4ZmY4YzAwLFxuICBkYXJrb3JjaGlkOiAweDk5MzJjYyxcbiAgZGFya3JlZDogMHg4YjAwMDAsXG4gIGRhcmtzYWxtb246IDB4ZTk5NjdhLFxuICBkYXJrc2VhZ3JlZW46IDB4OGZiYzhmLFxuICBkYXJrc2xhdGVibHVlOiAweDQ4M2Q4YixcbiAgZGFya3NsYXRlZ3JheTogMHgyZjRmNGYsXG4gIGRhcmtzbGF0ZWdyZXk6IDB4MmY0ZjRmLFxuICBkYXJrdHVycXVvaXNlOiAweDAwY2VkMSxcbiAgZGFya3Zpb2xldDogMHg5NDAwZDMsXG4gIGRlZXBwaW5rOiAweGZmMTQ5MyxcbiAgZGVlcHNreWJsdWU6IDB4MDBiZmZmLFxuICBkaW1ncmF5OiAweDY5Njk2OSxcbiAgZGltZ3JleTogMHg2OTY5NjksXG4gIGRvZGdlcmJsdWU6IDB4MWU5MGZmLFxuICBmaXJlYnJpY2s6IDB4YjIyMjIyLFxuICBmbG9yYWx3aGl0ZTogMHhmZmZhZjAsXG4gIGZvcmVzdGdyZWVuOiAweDIyOGIyMixcbiAgZnVjaHNpYTogMHhmZjAwZmYsXG4gIGdhaW5zYm9ybzogMHhkY2RjZGMsXG4gIGdob3N0d2hpdGU6IDB4ZjhmOGZmLFxuICBnb2xkOiAweGZmZDcwMCxcbiAgZ29sZGVucm9kOiAweGRhYTUyMCxcbiAgZ3JheTogMHg4MDgwODAsXG4gIGdyZWVuOiAweDAwODAwMCxcbiAgZ3JlZW55ZWxsb3c6IDB4YWRmZjJmLFxuICBncmV5OiAweDgwODA4MCxcbiAgaG9uZXlkZXc6IDB4ZjBmZmYwLFxuICBob3RwaW5rOiAweGZmNjliNCxcbiAgaW5kaWFucmVkOiAweGNkNWM1YyxcbiAgaW5kaWdvOiAweDRiMDA4MixcbiAgaXZvcnk6IDB4ZmZmZmYwLFxuICBraGFraTogMHhmMGU2OGMsXG4gIGxhdmVuZGVyOiAweGU2ZTZmYSxcbiAgbGF2ZW5kZXJibHVzaDogMHhmZmYwZjUsXG4gIGxhd25ncmVlbjogMHg3Y2ZjMDAsXG4gIGxlbW9uY2hpZmZvbjogMHhmZmZhY2QsXG4gIGxpZ2h0Ymx1ZTogMHhhZGQ4ZTYsXG4gIGxpZ2h0Y29yYWw6IDB4ZjA4MDgwLFxuICBsaWdodGN5YW46IDB4ZTBmZmZmLFxuICBsaWdodGdvbGRlbnJvZHllbGxvdzogMHhmYWZhZDIsXG4gIGxpZ2h0Z3JheTogMHhkM2QzZDMsXG4gIGxpZ2h0Z3JlZW46IDB4OTBlZTkwLFxuICBsaWdodGdyZXk6IDB4ZDNkM2QzLFxuICBsaWdodHBpbms6IDB4ZmZiNmMxLFxuICBsaWdodHNhbG1vbjogMHhmZmEwN2EsXG4gIGxpZ2h0c2VhZ3JlZW46IDB4MjBiMmFhLFxuICBsaWdodHNreWJsdWU6IDB4ODdjZWZhLFxuICBsaWdodHNsYXRlZ3JheTogMHg3Nzg4OTksXG4gIGxpZ2h0c2xhdGVncmV5OiAweDc3ODg5OSxcbiAgbGlnaHRzdGVlbGJsdWU6IDB4YjBjNGRlLFxuICBsaWdodHllbGxvdzogMHhmZmZmZTAsXG4gIGxpbWU6IDB4MDBmZjAwLFxuICBsaW1lZ3JlZW46IDB4MzJjZDMyLFxuICBsaW5lbjogMHhmYWYwZTYsXG4gIG1hZ2VudGE6IDB4ZmYwMGZmLFxuICBtYXJvb246IDB4ODAwMDAwLFxuICBtZWRpdW1hcXVhbWFyaW5lOiAweDY2Y2RhYSxcbiAgbWVkaXVtYmx1ZTogMHgwMDAwY2QsXG4gIG1lZGl1bW9yY2hpZDogMHhiYTU1ZDMsXG4gIG1lZGl1bXB1cnBsZTogMHg5MzcwZGIsXG4gIG1lZGl1bXNlYWdyZWVuOiAweDNjYjM3MSxcbiAgbWVkaXVtc2xhdGVibHVlOiAweDdiNjhlZSxcbiAgbWVkaXVtc3ByaW5nZ3JlZW46IDB4MDBmYTlhLFxuICBtZWRpdW10dXJxdW9pc2U6IDB4NDhkMWNjLFxuICBtZWRpdW12aW9sZXRyZWQ6IDB4YzcxNTg1LFxuICBtaWRuaWdodGJsdWU6IDB4MTkxOTcwLFxuICBtaW50Y3JlYW06IDB4ZjVmZmZhLFxuICBtaXN0eXJvc2U6IDB4ZmZlNGUxLFxuICBtb2NjYXNpbjogMHhmZmU0YjUsXG4gIG5hdmFqb3doaXRlOiAweGZmZGVhZCxcbiAgbmF2eTogMHgwMDAwODAsXG4gIG9sZGxhY2U6IDB4ZmRmNWU2LFxuICBvbGl2ZTogMHg4MDgwMDAsXG4gIG9saXZlZHJhYjogMHg2YjhlMjMsXG4gIG9yYW5nZTogMHhmZmE1MDAsXG4gIG9yYW5nZXJlZDogMHhmZjQ1MDAsXG4gIG9yY2hpZDogMHhkYTcwZDYsXG4gIHBhbGVnb2xkZW5yb2Q6IDB4ZWVlOGFhLFxuICBwYWxlZ3JlZW46IDB4OThmYjk4LFxuICBwYWxldHVycXVvaXNlOiAweGFmZWVlZSxcbiAgcGFsZXZpb2xldHJlZDogMHhkYjcwOTMsXG4gIHBhcGF5YXdoaXA6IDB4ZmZlZmQ1LFxuICBwZWFjaHB1ZmY6IDB4ZmZkYWI5LFxuICBwZXJ1OiAweGNkODUzZixcbiAgcGluazogMHhmZmMwY2IsXG4gIHBsdW06IDB4ZGRhMGRkLFxuICBwb3dkZXJibHVlOiAweGIwZTBlNixcbiAgcHVycGxlOiAweDgwMDA4MCxcbiAgcmViZWNjYXB1cnBsZTogMHg2NjMzOTksXG4gIHJlZDogMHhmZjAwMDAsXG4gIHJvc3licm93bjogMHhiYzhmOGYsXG4gIHJveWFsYmx1ZTogMHg0MTY5ZTEsXG4gIHNhZGRsZWJyb3duOiAweDhiNDUxMyxcbiAgc2FsbW9uOiAweGZhODA3MixcbiAgc2FuZHlicm93bjogMHhmNGE0NjAsXG4gIHNlYWdyZWVuOiAweDJlOGI1NyxcbiAgc2Vhc2hlbGw6IDB4ZmZmNWVlLFxuICBzaWVubmE6IDB4YTA1MjJkLFxuICBzaWx2ZXI6IDB4YzBjMGMwLFxuICBza3libHVlOiAweDg3Y2VlYixcbiAgc2xhdGVibHVlOiAweDZhNWFjZCxcbiAgc2xhdGVncmF5OiAweDcwODA5MCxcbiAgc2xhdGVncmV5OiAweDcwODA5MCxcbiAgc25vdzogMHhmZmZhZmEsXG4gIHNwcmluZ2dyZWVuOiAweDAwZmY3ZixcbiAgc3RlZWxibHVlOiAweDQ2ODJiNCxcbiAgdGFuOiAweGQyYjQ4YyxcbiAgdGVhbDogMHgwMDgwODAsXG4gIHRoaXN0bGU6IDB4ZDhiZmQ4LFxuICB0b21hdG86IDB4ZmY2MzQ3LFxuICB0dXJxdW9pc2U6IDB4NDBlMGQwLFxuICB2aW9sZXQ6IDB4ZWU4MmVlLFxuICB3aGVhdDogMHhmNWRlYjMsXG4gIHdoaXRlOiAweGZmZmZmZixcbiAgd2hpdGVzbW9rZTogMHhmNWY1ZjUsXG4gIHllbGxvdzogMHhmZmZmMDAsXG4gIHllbGxvd2dyZWVuOiAweDlhY2QzMlxufTtcblxuZGVmaW5lKENvbG9yLCBjb2xvciwge1xuICBjb3B5KGNoYW5uZWxzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsIHRoaXMsIGNoYW5uZWxzKTtcbiAgfSxcbiAgZGlzcGxheWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKTtcbiAgfSxcbiAgaGV4OiBjb2xvcl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogY29sb3JfZm9ybWF0SGV4LFxuICBmb3JtYXRIZXg4OiBjb2xvcl9mb3JtYXRIZXg4LFxuICBmb3JtYXRIc2w6IGNvbG9yX2Zvcm1hdEhzbCxcbiAgZm9ybWF0UmdiOiBjb2xvcl9mb3JtYXRSZ2IsXG4gIHRvU3RyaW5nOiBjb2xvcl9mb3JtYXRSZ2Jcbn0pO1xuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIZXgoKSB7XG4gIHJldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpO1xufVxuXG5mdW5jdGlvbiBjb2xvcl9mb3JtYXRIZXg4KCkge1xuICByZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXg4KCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdEhzbCgpIHtcbiAgcmV0dXJuIGhzbENvbnZlcnQodGhpcykuZm9ybWF0SHNsKCk7XG59XG5cbmZ1bmN0aW9uIGNvbG9yX2Zvcm1hdFJnYigpIHtcbiAgcmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbG9yKGZvcm1hdCkge1xuICB2YXIgbSwgbDtcbiAgZm9ybWF0ID0gKGZvcm1hdCArIFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKG0gPSByZUhleC5leGVjKGZvcm1hdCkpID8gKGwgPSBtWzFdLmxlbmd0aCwgbSA9IHBhcnNlSW50KG1bMV0sIDE2KSwgbCA9PT0gNiA/IHJnYm4obSkgLy8gI2ZmMDAwMFxuICAgICAgOiBsID09PSAzID8gbmV3IFJnYigobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweGYwKSwgKG0gPj4gNCAmIDB4ZikgfCAobSAmIDB4ZjApLCAoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpLCAxKSAvLyAjZjAwXG4gICAgICA6IGwgPT09IDggPyByZ2JhKG0gPj4gMjQgJiAweGZmLCBtID4+IDE2ICYgMHhmZiwgbSA+PiA4ICYgMHhmZiwgKG0gJiAweGZmKSAvIDB4ZmYpIC8vICNmZjAwMDAwMFxuICAgICAgOiBsID09PSA0ID8gcmdiYSgobSA+PiAxMiAmIDB4ZikgfCAobSA+PiA4ICYgMHhmMCksIChtID4+IDggJiAweGYpIHwgKG0gPj4gNCAmIDB4ZjApLCAobSA+PiA0ICYgMHhmKSB8IChtICYgMHhmMCksICgoKG0gJiAweGYpIDw8IDQpIHwgKG0gJiAweGYpKSAvIDB4ZmYpIC8vICNmMDAwXG4gICAgICA6IG51bGwpIC8vIGludmFsaWQgaGV4XG4gICAgICA6IChtID0gcmVSZ2JJbnRlZ2VyLmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0sIG1bMl0sIG1bM10sIDEpIC8vIHJnYigyNTUsIDAsIDApXG4gICAgICA6IChtID0gcmVSZ2JQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIDEpIC8vIHJnYigxMDAlLCAwJSwgMCUpXG4gICAgICA6IChtID0gcmVSZ2JhSW50ZWdlci5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdLCBtWzJdLCBtWzNdLCBtWzRdKSAvLyByZ2JhKDI1NSwgMCwgMCwgMSlcbiAgICAgIDogKG0gPSByZVJnYmFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyByZ2JhKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIG1bNF0pIC8vIHJnYigxMDAlLCAwJSwgMCUsIDEpXG4gICAgICA6IChtID0gcmVIc2xQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIDEpIC8vIGhzbCgxMjAsIDUwJSwgNTAlKVxuICAgICAgOiAobSA9IHJlSHNsYVBlcmNlbnQuZXhlYyhmb3JtYXQpKSA/IGhzbGEobVsxXSwgbVsyXSAvIDEwMCwgbVszXSAvIDEwMCwgbVs0XSkgLy8gaHNsYSgxMjAsIDUwJSwgNTAlLCAxKVxuICAgICAgOiBuYW1lZC5oYXNPd25Qcm9wZXJ0eShmb3JtYXQpID8gcmdibihuYW1lZFtmb3JtYXRdKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgOiBmb3JtYXQgPT09IFwidHJhbnNwYXJlbnRcIiA/IG5ldyBSZ2IoTmFOLCBOYU4sIE5hTiwgMClcbiAgICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcmdibihuKSB7XG4gIHJldHVybiBuZXcgUmdiKG4gPj4gMTYgJiAweGZmLCBuID4+IDggJiAweGZmLCBuICYgMHhmZiwgMSk7XG59XG5cbmZ1bmN0aW9uIHJnYmEociwgZywgYiwgYSkge1xuICBpZiAoYSA8PSAwKSByID0gZyA9IGIgPSBOYU47XG4gIHJldHVybiBuZXcgUmdiKHIsIGcsIGIsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQ29udmVydChvKSB7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IFJnYjtcbiAgbyA9IG8ucmdiKCk7XG4gIHJldHVybiBuZXcgUmdiKG8uciwgby5nLCBvLmIsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHJnYkNvbnZlcnQocikgOiBuZXcgUmdiKHIsIGcsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJnYihyLCBnLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMuciA9ICtyO1xuICB0aGlzLmcgPSArZztcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoUmdiLCByZ2IsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgUmdiKHRoaXMuciAqIGssIHRoaXMuZyAqIGssIHRoaXMuYiAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIGRhcmtlcihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBSZ2IodGhpcy5yICogaywgdGhpcy5nICogaywgdGhpcy5iICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBjbGFtcCgpIHtcbiAgICByZXR1cm4gbmV3IFJnYihjbGFtcGkodGhpcy5yKSwgY2xhbXBpKHRoaXMuZyksIGNsYW1waSh0aGlzLmIpLCBjbGFtcGEodGhpcy5vcGFjaXR5KSk7XG4gIH0sXG4gIGRpc3BsYXlhYmxlKCkge1xuICAgIHJldHVybiAoLTAuNSA8PSB0aGlzLnIgJiYgdGhpcy5yIDwgMjU1LjUpXG4gICAgICAgICYmICgtMC41IDw9IHRoaXMuZyAmJiB0aGlzLmcgPCAyNTUuNSlcbiAgICAgICAgJiYgKC0wLjUgPD0gdGhpcy5iICYmIHRoaXMuYiA8IDI1NS41KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLm9wYWNpdHkgJiYgdGhpcy5vcGFjaXR5IDw9IDEpO1xuICB9LFxuICBoZXg6IHJnYl9mb3JtYXRIZXgsIC8vIERlcHJlY2F0ZWQhIFVzZSBjb2xvci5mb3JtYXRIZXguXG4gIGZvcm1hdEhleDogcmdiX2Zvcm1hdEhleCxcbiAgZm9ybWF0SGV4ODogcmdiX2Zvcm1hdEhleDgsXG4gIGZvcm1hdFJnYjogcmdiX2Zvcm1hdFJnYixcbiAgdG9TdHJpbmc6IHJnYl9mb3JtYXRSZ2Jcbn0pKTtcblxuZnVuY3Rpb24gcmdiX2Zvcm1hdEhleCgpIHtcbiAgcmV0dXJuIGAjJHtoZXgodGhpcy5yKX0ke2hleCh0aGlzLmcpfSR7aGV4KHRoaXMuYil9YDtcbn1cblxuZnVuY3Rpb24gcmdiX2Zvcm1hdEhleDgoKSB7XG4gIHJldHVybiBgIyR7aGV4KHRoaXMucil9JHtoZXgodGhpcy5nKX0ke2hleCh0aGlzLmIpfSR7aGV4KChpc05hTih0aGlzLm9wYWNpdHkpID8gMSA6IHRoaXMub3BhY2l0eSkgKiAyNTUpfWA7XG59XG5cbmZ1bmN0aW9uIHJnYl9mb3JtYXRSZ2IoKSB7XG4gIGNvbnN0IGEgPSBjbGFtcGEodGhpcy5vcGFjaXR5KTtcbiAgcmV0dXJuIGAke2EgPT09IDEgPyBcInJnYihcIiA6IFwicmdiYShcIn0ke2NsYW1waSh0aGlzLnIpfSwgJHtjbGFtcGkodGhpcy5nKX0sICR7Y2xhbXBpKHRoaXMuYil9JHthID09PSAxID8gXCIpXCIgOiBgLCAke2F9KWB9YDtcbn1cblxuZnVuY3Rpb24gY2xhbXBhKG9wYWNpdHkpIHtcbiAgcmV0dXJuIGlzTmFOKG9wYWNpdHkpID8gMSA6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIG9wYWNpdHkpKTtcbn1cblxuZnVuY3Rpb24gY2xhbXBpKHZhbHVlKSB7XG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodmFsdWUpIHx8IDApKTtcbn1cblxuZnVuY3Rpb24gaGV4KHZhbHVlKSB7XG4gIHZhbHVlID0gY2xhbXBpKHZhbHVlKTtcbiAgcmV0dXJuICh2YWx1ZSA8IDE2ID8gXCIwXCIgOiBcIlwiKSArIHZhbHVlLnRvU3RyaW5nKDE2KTtcbn1cblxuZnVuY3Rpb24gaHNsYShoLCBzLCBsLCBhKSB7XG4gIGlmIChhIDw9IDApIGggPSBzID0gbCA9IE5hTjtcbiAgZWxzZSBpZiAobCA8PSAwIHx8IGwgPj0gMSkgaCA9IHMgPSBOYU47XG4gIGVsc2UgaWYgKHMgPD0gMCkgaCA9IE5hTjtcbiAgcmV0dXJuIG5ldyBIc2woaCwgcywgbCwgYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoc2xDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIc2wpIHJldHVybiBuZXcgSHNsKG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IEhzbDtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIc2wpIHJldHVybiBvO1xuICBvID0gby5yZ2IoKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIG1pbiA9IE1hdGgubWluKHIsIGcsIGIpLFxuICAgICAgbWF4ID0gTWF0aC5tYXgociwgZywgYiksXG4gICAgICBoID0gTmFOLFxuICAgICAgcyA9IG1heCAtIG1pbixcbiAgICAgIGwgPSAobWF4ICsgbWluKSAvIDI7XG4gIGlmIChzKSB7XG4gICAgaWYgKHIgPT09IG1heCkgaCA9IChnIC0gYikgLyBzICsgKGcgPCBiKSAqIDY7XG4gICAgZWxzZSBpZiAoZyA9PT0gbWF4KSBoID0gKGIgLSByKSAvIHMgKyAyO1xuICAgIGVsc2UgaCA9IChyIC0gZykgLyBzICsgNDtcbiAgICBzIC89IGwgPCAwLjUgPyBtYXggKyBtaW4gOiAyIC0gbWF4IC0gbWluO1xuICAgIGggKj0gNjA7XG4gIH0gZWxzZSB7XG4gICAgcyA9IGwgPiAwICYmIGwgPCAxID8gMCA6IGg7XG4gIH1cbiAgcmV0dXJuIG5ldyBIc2woaCwgcywgbCwgby5vcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gaHNsQ29udmVydChoKSA6IG5ldyBIc2woaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5mdW5jdGlvbiBIc2woaCwgcywgbCwgb3BhY2l0eSkge1xuICB0aGlzLmggPSAraDtcbiAgdGhpcy5zID0gK3M7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKEhzbCwgaHNsLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXIoaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiKCkge1xuICAgIHZhciBoID0gdGhpcy5oICUgMzYwICsgKHRoaXMuaCA8IDApICogMzYwLFxuICAgICAgICBzID0gaXNOYU4oaCkgfHwgaXNOYU4odGhpcy5zKSA/IDAgOiB0aGlzLnMsXG4gICAgICAgIGwgPSB0aGlzLmwsXG4gICAgICAgIG0yID0gbCArIChsIDwgMC41ID8gbCA6IDEgLSBsKSAqIHMsXG4gICAgICAgIG0xID0gMiAqIGwgLSBtMjtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIGhzbDJyZ2IoaCA+PSAyNDAgPyBoIC0gMjQwIDogaCArIDEyMCwgbTEsIG0yKSxcbiAgICAgIGhzbDJyZ2IoaCwgbTEsIG0yKSxcbiAgICAgIGhzbDJyZ2IoaCA8IDEyMCA/IGggKyAyNDAgOiBoIC0gMTIwLCBtMSwgbTIpLFxuICAgICAgdGhpcy5vcGFjaXR5XG4gICAgKTtcbiAgfSxcbiAgY2xhbXAoKSB7XG4gICAgcmV0dXJuIG5ldyBIc2woY2xhbXBoKHRoaXMuaCksIGNsYW1wdCh0aGlzLnMpLCBjbGFtcHQodGhpcy5sKSwgY2xhbXBhKHRoaXMub3BhY2l0eSkpO1xuICB9LFxuICBkaXNwbGF5YWJsZSgpIHtcbiAgICByZXR1cm4gKDAgPD0gdGhpcy5zICYmIHRoaXMucyA8PSAxIHx8IGlzTmFOKHRoaXMucykpXG4gICAgICAgICYmICgwIDw9IHRoaXMubCAmJiB0aGlzLmwgPD0gMSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5vcGFjaXR5ICYmIHRoaXMub3BhY2l0eSA8PSAxKTtcbiAgfSxcbiAgZm9ybWF0SHNsKCkge1xuICAgIGNvbnN0IGEgPSBjbGFtcGEodGhpcy5vcGFjaXR5KTtcbiAgICByZXR1cm4gYCR7YSA9PT0gMSA/IFwiaHNsKFwiIDogXCJoc2xhKFwifSR7Y2xhbXBoKHRoaXMuaCl9LCAke2NsYW1wdCh0aGlzLnMpICogMTAwfSUsICR7Y2xhbXB0KHRoaXMubCkgKiAxMDB9JSR7YSA9PT0gMSA/IFwiKVwiIDogYCwgJHthfSlgfWA7XG4gIH1cbn0pKTtcblxuZnVuY3Rpb24gY2xhbXBoKHZhbHVlKSB7XG4gIHZhbHVlID0gKHZhbHVlIHx8IDApICUgMzYwO1xuICByZXR1cm4gdmFsdWUgPCAwID8gdmFsdWUgKyAzNjAgOiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gY2xhbXB0KHZhbHVlKSB7XG4gIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB2YWx1ZSB8fCAwKSk7XG59XG5cbi8qIEZyb20gRnZEIDEzLjM3LCBDU1MgQ29sb3IgTW9kdWxlIExldmVsIDMgKi9cbmZ1bmN0aW9uIGhzbDJyZ2IoaCwgbTEsIG0yKSB7XG4gIHJldHVybiAoaCA8IDYwID8gbTEgKyAobTIgLSBtMSkgKiBoIC8gNjBcbiAgICAgIDogaCA8IDE4MCA/IG0yXG4gICAgICA6IGggPCAyNDAgPyBtMSArIChtMiAtIG0xKSAqICgyNDAgLSBoKSAvIDYwXG4gICAgICA6IG0xKSAqIDI1NTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/color.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/cubehelix.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-color/src/cubehelix.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cubehelix\": () => (/* binding */ Cubehelix),\n/* harmony export */ \"default\": () => (/* binding */ cubehelix)\n/* harmony export */ });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./define.js */ \"../../../node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-color/src/math.js\");\n\n\n\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_0__.Rgb)) o = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__.rgbConvert)(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Cubehelix, cubehelix, (0,_define_js__WEBPACK_IMPORTED_MODULE_2__.extend)(_color_js__WEBPACK_IMPORTED_MODULE_0__.Color, {\n brighter(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_0__.brighter : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_0__.brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? _color_js__WEBPACK_IMPORTED_MODULE_0__.darker : Math.pow(_color_js__WEBPACK_IMPORTED_MODULE_0__.darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new _color_js__WEBPACK_IMPORTED_MODULE_0__.Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBMkM7QUFDeUI7QUFDekI7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiwwQ0FBRyxPQUFPLHFEQUFVO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDZDQUFPO0FBQ3pDO0FBQ0E7O0FBRWU7QUFDZjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzREFBTSx1QkFBdUIsa0RBQU0sQ0FBQyw0Q0FBSztBQUN6QztBQUNBLG9CQUFvQiwrQ0FBUSxZQUFZLCtDQUFRO0FBQ2hEO0FBQ0EsR0FBRztBQUNIO0FBQ0Esb0JBQW9CLDZDQUFNLFlBQVksNkNBQU07QUFDNUM7QUFDQSxHQUFHO0FBQ0g7QUFDQSxpREFBaUQsNkNBQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDBDQUFHO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9jdWJlaGVsaXguanM/OTE0OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmUuanNcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3IuanNcIjtcbmltcG9ydCB7ZGVncmVlcywgcmFkaWFuc30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIGRlZ3JlZXMgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gYnJpZ2h0ZXIgOiBNYXRoLnBvdyhicmlnaHRlciwgayk7XG4gICAgcmV0dXJuIG5ldyBDdWJlaGVsaXgodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIGRhcmtlcihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBDdWJlaGVsaXgodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiByYWRpYW5zLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/cubehelix.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/define.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-color/src/define.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"extend\": () => (/* binding */ extend)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9kZWZpbmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcz8zNzc5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnN0cnVjdG9yLCBmYWN0b3J5LCBwcm90b3R5cGUpIHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gZmFjdG9yeS5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIHByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHBhcmVudCwgZGVmaW5pdGlvbikge1xuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShwYXJlbnQucHJvdG90eXBlKTtcbiAgZm9yICh2YXIga2V5IGluIGRlZmluaXRpb24pIHByb3RvdHlwZVtrZXldID0gZGVmaW5pdGlvbltrZXldO1xuICByZXR1cm4gcHJvdG90eXBlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/define.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-color/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"color\": () => (/* reexport safe */ _color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"cubehelix\": () => (/* reexport safe */ _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"gray\": () => (/* reexport safe */ _lab_js__WEBPACK_IMPORTED_MODULE_1__.gray),\n/* harmony export */ \"hcl\": () => (/* reexport safe */ _lab_js__WEBPACK_IMPORTED_MODULE_1__.hcl),\n/* harmony export */ \"hsl\": () => (/* reexport safe */ _color_js__WEBPACK_IMPORTED_MODULE_0__.hsl),\n/* harmony export */ \"lab\": () => (/* reexport safe */ _lab_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"lch\": () => (/* reexport safe */ _lab_js__WEBPACK_IMPORTED_MODULE_1__.lch),\n/* harmony export */ \"rgb\": () => (/* reexport safe */ _color_js__WEBPACK_IMPORTED_MODULE_0__.rgb)\n/* harmony export */ });\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lab.js */ \"../../../node_modules/d3-color/src/lab.js\");\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubehelix.js */ \"../../../node_modules/d3-color/src/cubehelix.js\");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFzRDtBQUNFO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9pbmRleC5qcz9hMDA5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBjb2xvciwgcmdiLCBoc2x9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbGFiLCBoY2wsIGxjaCwgZ3JheX0gZnJvbSBcIi4vbGFiLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3ViZWhlbGl4fSBmcm9tIFwiLi9jdWJlaGVsaXguanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/lab.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-color/src/lab.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hcl\": () => (/* binding */ Hcl),\n/* harmony export */ \"Lab\": () => (/* binding */ Lab),\n/* harmony export */ \"default\": () => (/* binding */ lab),\n/* harmony export */ \"gray\": () => (/* binding */ gray),\n/* harmony export */ \"hcl\": () => (/* binding */ hcl),\n/* harmony export */ \"lch\": () => (/* binding */ lch)\n/* harmony export */ });\n/* harmony import */ var _define_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./define.js */ \"../../../node_modules/d3-color/src/define.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-color/src/math.js\");\n\n\n\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof _color_js__WEBPACK_IMPORTED_MODULE_0__.Rgb)) o = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__.rgbConvert)(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Lab, lab, (0,_define_js__WEBPACK_IMPORTED_MODULE_1__.extend)(_color_js__WEBPACK_IMPORTED_MODULE_0__.Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new _color_js__WEBPACK_IMPORTED_MODULE_0__.Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * _math_js__WEBPACK_IMPORTED_MODULE_2__.degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * _math_js__WEBPACK_IMPORTED_MODULE_2__.radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\n(0,_define_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Hcl, hcl, (0,_define_js__WEBPACK_IMPORTED_MODULE_1__.extend)(_color_js__WEBPACK_IMPORTED_MODULE_0__.Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9sYWIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTJDO0FBQ087QUFDUDs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwQ0FBRyxPQUFPLHFEQUFVO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVlO0FBQ2Y7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0RBQU0sV0FBVyxrREFBTSxDQUFDLDRDQUFLO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMENBQUc7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsNkNBQU87QUFDeEM7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLDZDQUFPO0FBQ3ZCO0FBQ0E7O0FBRUEsc0RBQU0sV0FBVyxrREFBTSxDQUFDLDRDQUFLO0FBQzdCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvbGFiLmpzP2I0MDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lLmpzXCI7XG5pbXBvcnQge0NvbG9yLCByZ2JDb252ZXJ0LCBSZ2J9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5pbXBvcnQge2RlZ3JlZXMsIHJhZGlhbnN9IGZyb20gXCIuL21hdGguanNcIjtcblxuLy8gaHR0cHM6Ly9vYnNlcnZhYmxlaHEuY29tL0BtYm9zdG9jay9sYWItYW5kLXJnYlxuY29uc3QgSyA9IDE4LFxuICAgIFhuID0gMC45NjQyMixcbiAgICBZbiA9IDEsXG4gICAgWm4gPSAwLjgyNTIxLFxuICAgIHQwID0gNCAvIDI5LFxuICAgIHQxID0gNiAvIDI5LFxuICAgIHQyID0gMyAqIHQxICogdDEsXG4gICAgdDMgPSB0MSAqIHQxICogdDE7XG5cbmZ1bmN0aW9uIGxhYkNvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIExhYikgcmV0dXJuIG5ldyBMYWIoby5sLCBvLmEsIG8uYiwgby5vcGFjaXR5KTtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIY2wpIHJldHVybiBoY2wybGFiKG8pO1xuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciByID0gcmdiMmxyZ2Ioby5yKSxcbiAgICAgIGcgPSByZ2IybHJnYihvLmcpLFxuICAgICAgYiA9IHJnYjJscmdiKG8uYiksXG4gICAgICB5ID0geHl6MmxhYigoMC4yMjI1MDQ1ICogciArIDAuNzE2ODc4NiAqIGcgKyAwLjA2MDYxNjkgKiBiKSAvIFluKSwgeCwgejtcbiAgaWYgKHIgPT09IGcgJiYgZyA9PT0gYikgeCA9IHogPSB5OyBlbHNlIHtcbiAgICB4ID0geHl6MmxhYigoMC40MzYwNzQ3ICogciArIDAuMzg1MDY0OSAqIGcgKyAwLjE0MzA4MDQgKiBiKSAvIFhuKTtcbiAgICB6ID0geHl6MmxhYigoMC4wMTM5MzIyICogciArIDAuMDk3MTA0NSAqIGcgKyAwLjcxNDE3MzMgKiBiKSAvIFpuKTtcbiAgfVxuICByZXR1cm4gbmV3IExhYigxMTYgKiB5IC0gMTYsIDUwMCAqICh4IC0geSksIDIwMCAqICh5IC0geiksIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmF5KGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIG5ldyBMYWIobCwgMCwgMCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYWIobCwgYSwgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGxhYkNvbnZlcnQobCkgOiBuZXcgTGFiKGwsIGEsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExhYihsLCBhLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLmEgPSArYTtcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoTGFiLCBsYWIsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcihrKSB7XG4gICAgcmV0dXJuIG5ldyBMYWIodGhpcy5sICsgSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXIoaykge1xuICAgIHJldHVybiBuZXcgTGFiKHRoaXMubCAtIEsgKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiKCkge1xuICAgIHZhciB5ID0gKHRoaXMubCArIDE2KSAvIDExNixcbiAgICAgICAgeCA9IGlzTmFOKHRoaXMuYSkgPyB5IDogeSArIHRoaXMuYSAvIDUwMCxcbiAgICAgICAgeiA9IGlzTmFOKHRoaXMuYikgPyB5IDogeSAtIHRoaXMuYiAvIDIwMDtcbiAgICB4ID0gWG4gKiBsYWIyeHl6KHgpO1xuICAgIHkgPSBZbiAqIGxhYjJ4eXooeSk7XG4gICAgeiA9IFpuICogbGFiMnh5eih6KTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIGxyZ2IycmdiKCAzLjEzMzg1NjEgKiB4IC0gMS42MTY4NjY3ICogeSAtIDAuNDkwNjE0NiAqIHopLFxuICAgICAgbHJnYjJyZ2IoLTAuOTc4NzY4NCAqIHggKyAxLjkxNjE0MTUgKiB5ICsgMC4wMzM0NTQwICogeiksXG4gICAgICBscmdiMnJnYiggMC4wNzE5NDUzICogeCAtIDAuMjI4OTkxNCAqIHkgKyAxLjQwNTI0MjcgKiB6KSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcblxuZnVuY3Rpb24geHl6MmxhYih0KSB7XG4gIHJldHVybiB0ID4gdDMgPyBNYXRoLnBvdyh0LCAxIC8gMykgOiB0IC8gdDIgKyB0MDtcbn1cblxuZnVuY3Rpb24gbGFiMnh5eih0KSB7XG4gIHJldHVybiB0ID4gdDEgPyB0ICogdCAqIHQgOiB0MiAqICh0IC0gdDApO1xufVxuXG5mdW5jdGlvbiBscmdiMnJnYih4KSB7XG4gIHJldHVybiAyNTUgKiAoeCA8PSAwLjAwMzEzMDggPyAxMi45MiAqIHggOiAxLjA1NSAqIE1hdGgucG93KHgsIDEgLyAyLjQpIC0gMC4wNTUpO1xufVxuXG5mdW5jdGlvbiByZ2IybHJnYih4KSB7XG4gIHJldHVybiAoeCAvPSAyNTUpIDw9IDAuMDQwNDUgPyB4IC8gMTIuOTIgOiBNYXRoLnBvdygoeCArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xufVxuXG5mdW5jdGlvbiBoY2xDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBIY2wpIHJldHVybiBuZXcgSGNsKG8uaCwgby5jLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBMYWIpKSBvID0gbGFiQ29udmVydChvKTtcbiAgaWYgKG8uYSA9PT0gMCAmJiBvLmIgPT09IDApIHJldHVybiBuZXcgSGNsKE5hTiwgMCA8IG8ubCAmJiBvLmwgPCAxMDAgPyAwIDogTmFOLCBvLmwsIG8ub3BhY2l0eSk7XG4gIHZhciBoID0gTWF0aC5hdGFuMihvLmIsIG8uYSkgKiBkZWdyZWVzO1xuICByZXR1cm4gbmV3IEhjbChoIDwgMCA/IGggKyAzNjAgOiBoLCBNYXRoLnNxcnQoby5hICogby5hICsgby5iICogby5iKSwgby5sLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGNoKGwsIGMsIGgsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoY2xDb252ZXJ0KGwpIDogbmV3IEhjbChoLCBjLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoY2woaCwgYywgbCwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IGhjbENvbnZlcnQoaCkgOiBuZXcgSGNsKGgsIGMsIGwsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhjbChoLCBjLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLmMgPSArYztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5mdW5jdGlvbiBoY2wybGFiKG8pIHtcbiAgaWYgKGlzTmFOKG8uaCkpIHJldHVybiBuZXcgTGFiKG8ubCwgMCwgMCwgby5vcGFjaXR5KTtcbiAgdmFyIGggPSBvLmggKiByYWRpYW5zO1xuICByZXR1cm4gbmV3IExhYihvLmwsIE1hdGguY29zKGgpICogby5jLCBNYXRoLnNpbihoKSAqIG8uYywgby5vcGFjaXR5KTtcbn1cblxuZGVmaW5lKEhjbCwgaGNsLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXIoaykge1xuICAgIHJldHVybiBuZXcgSGNsKHRoaXMuaCwgdGhpcy5jLCB0aGlzLmwgKyBLICogKGsgPT0gbnVsbCA/IDEgOiBrKSwgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sIC0gSyAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYigpIHtcbiAgICByZXR1cm4gaGNsMmxhYih0aGlzKS5yZ2IoKTtcbiAgfVxufSkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/lab.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-color/src/math.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-color/src/math.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"degrees\": () => (/* binding */ degrees),\n/* harmony export */ \"radians\": () => (/* binding */ radians)\n/* harmony export */ });\nconst radians = Math.PI / 180;\nconst degrees = 180 / Math.PI;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbG9yL3NyYy9tYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL21hdGguanM/ZjhhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmFkaWFucyA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgY29uc3QgZGVncmVlcyA9IDE4MCAvIE1hdGguUEk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-color/src/math.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/area.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-contour/src/area.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2FyZWEuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb250b3VyL3NyYy9hcmVhLmpzP2M5MDgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmluZykge1xuICB2YXIgaSA9IDAsIG4gPSByaW5nLmxlbmd0aCwgYXJlYSA9IHJpbmdbbiAtIDFdWzFdICogcmluZ1swXVswXSAtIHJpbmdbbiAtIDFdWzBdICogcmluZ1swXVsxXTtcbiAgd2hpbGUgKCsraSA8IG4pIGFyZWEgKz0gcmluZ1tpIC0gMV1bMV0gKiByaW5nW2ldWzBdIC0gcmluZ1tpIC0gMV1bMF0gKiByaW5nW2ldWzFdO1xuICByZXR1cm4gYXJlYTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/area.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/array.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-contour/src/array.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"slice\": () => (/* binding */ slice)\n/* harmony export */ });\nvar array = Array.prototype;\n\nvar slice = array.slice;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2FycmF5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29udG91ci9zcmMvYXJyYXkuanM/NmFlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXJyYXkgPSBBcnJheS5wcm90b3R5cGU7XG5cbmV4cG9ydCB2YXIgc2xpY2UgPSBhcnJheS5zbGljZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/ascending.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-contour/src/ascending.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return a - b;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2FzY2VuZGluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29udG91ci9zcmMvYXNjZW5kaW5nLmpzP2UzNGUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/ascending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/constant.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-contour/src/constant.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2NvbnN0YW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2NvbnN0YW50LmpzPzA1ZTUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeCA9PiAoKSA9PiB4O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/contains.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-contour/src/contains.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2NvbnRhaW5zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2NvbnRhaW5zLmpzPzY3YzUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmluZywgaG9sZSkge1xuICB2YXIgaSA9IC0xLCBuID0gaG9sZS5sZW5ndGgsIGM7XG4gIHdoaWxlICgrK2kgPCBuKSBpZiAoYyA9IHJpbmdDb250YWlucyhyaW5nLCBob2xlW2ldKSkgcmV0dXJuIGM7XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiByaW5nQ29udGFpbnMocmluZywgcG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludFswXSwgeSA9IHBvaW50WzFdLCBjb250YWlucyA9IC0xO1xuICBmb3IgKHZhciBpID0gMCwgbiA9IHJpbmcubGVuZ3RoLCBqID0gbiAtIDE7IGkgPCBuOyBqID0gaSsrKSB7XG4gICAgdmFyIHBpID0gcmluZ1tpXSwgeGkgPSBwaVswXSwgeWkgPSBwaVsxXSwgcGogPSByaW5nW2pdLCB4aiA9IHBqWzBdLCB5aiA9IHBqWzFdO1xuICAgIGlmIChzZWdtZW50Q29udGFpbnMocGksIHBqLCBwb2ludCkpIHJldHVybiAwO1xuICAgIGlmICgoKHlpID4geSkgIT09ICh5aiA+IHkpKSAmJiAoKHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpKSkpIGNvbnRhaW5zID0gLWNvbnRhaW5zO1xuICB9XG4gIHJldHVybiBjb250YWlucztcbn1cblxuZnVuY3Rpb24gc2VnbWVudENvbnRhaW5zKGEsIGIsIGMpIHtcbiAgdmFyIGk7IHJldHVybiBjb2xsaW5lYXIoYSwgYiwgYykgJiYgd2l0aGluKGFbaSA9ICsoYVswXSA9PT0gYlswXSldLCBjW2ldLCBiW2ldKTtcbn1cblxuZnVuY3Rpb24gY29sbGluZWFyKGEsIGIsIGMpIHtcbiAgcmV0dXJuIChiWzBdIC0gYVswXSkgKiAoY1sxXSAtIGFbMV0pID09PSAoY1swXSAtIGFbMF0pICogKGJbMV0gLSBhWzFdKTtcbn1cblxuZnVuY3Rpb24gd2l0aGluKHAsIHEsIHIpIHtcbiAgcmV0dXJuIHAgPD0gcSAmJiBxIDw9IHIgfHwgciA8PSBxICYmIHEgPD0gcDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/contains.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/contours.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-contour/src/contours.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/threshold/sturges.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/extent.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/nice.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-contour/src/array.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-contour/src/ascending.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-contour/src/area.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-contour/src/constant.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./contains.js */ \"../../../node_modules/d3-contour/src/contains.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./noop.js */ \"../../../node_modules/d3-contour/src/noop.js\");\n\n\n\n\n\n\n\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var dx = 1,\n dy = 1,\n threshold = d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n const e = (0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(values, finite);\n tz = (0,d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(...(0,d3_array__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(e[0], e[1], tz), tz);\n while (tz[tz.length - 1] >= e[1]) tz.pop();\n while (tz[1] < e[0]) tz.shift();\n } else {\n tz = tz.slice().sort(_ascending_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n }\n\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n const v = value == null ? NaN : +value;\n if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n var polygons = [],\n holes = [];\n\n isorings(values, v, function(ring) {\n smooth(ring, values, v);\n if ((0,_area_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if ((0,_contains_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = above(values[0], value);\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[x + 1], value);\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = above(values[y * dx + dx], value);\n t2 = above(values[y * dx], value);\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v1 = valid(values[yt * dx + xt]);\n if (x > 0 && x < dx && xt === x) {\n point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n }\n if (y > 0 && y < dy && yt === y) {\n point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? (0,_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_array_js__WEBPACK_IMPORTED_MODULE_8__.slice.call(_)) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : _noop_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"], contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n return x == null ? false : +x >= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n const a = value - v0;\n const b = v1 - v0;\n const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n return isNaN(d) ? x : x + d - 0.5;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2NvbnRvdXJzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQStEO0FBQzlCO0FBQ007QUFDVjtBQUNRO0FBQ0E7QUFDUjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQWdCO0FBQ2xDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixvREFBTTtBQUN0QixXQUFXLG9EQUFLLElBQUksb0RBQUk7QUFDeEI7QUFDQTtBQUNBLE1BQU07QUFDTiwyQkFBMkIscURBQVM7QUFDcEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxNQUFNOztBQUUxRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLG9EQUFJO0FBQ2Q7QUFDQSxLQUFLOztBQUVMO0FBQ0Esb0RBQW9ELE9BQU87QUFDM0QsWUFBWSx3REFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLCtEQUErRDtBQUMvRDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osK0RBQStEO0FBQy9EO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLGlFQUFpRTtBQUNqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRGQUE0Rix3REFBUSxDQUFDLGlEQUFVLE9BQU8sd0RBQVE7QUFDOUg7O0FBRUE7QUFDQSwyREFBMkQsZ0RBQUk7QUFDL0Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29udG91ci9zcmMvY29udG91cnMuanM/NTM3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2V4dGVudCwgbmljZSwgdGhyZXNob2xkU3R1cmdlcywgdGlja3N9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtzbGljZX0gZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5pbXBvcnQgYXJlYSBmcm9tIFwiLi9hcmVhLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi9jb250YWlucy5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4vbm9vcC5qc1wiO1xuXG52YXIgY2FzZXMgPSBbXG4gIFtdLFxuICBbW1sxLjAsIDEuNV0sIFswLjUsIDEuMF1dXSxcbiAgW1tbMS41LCAxLjBdLCBbMS4wLCAxLjVdXV0sXG4gIFtbWzEuNSwgMS4wXSwgWzAuNSwgMS4wXV1dLFxuICBbW1sxLjAsIDAuNV0sIFsxLjUsIDEuMF1dXSxcbiAgW1tbMS4wLCAxLjVdLCBbMC41LCAxLjBdXSwgW1sxLjAsIDAuNV0sIFsxLjUsIDEuMF1dXSxcbiAgW1tbMS4wLCAwLjVdLCBbMS4wLCAxLjVdXV0sXG4gIFtbWzEuMCwgMC41XSwgWzAuNSwgMS4wXV1dLFxuICBbW1swLjUsIDEuMF0sIFsxLjAsIDAuNV1dXSxcbiAgW1tbMS4wLCAxLjVdLCBbMS4wLCAwLjVdXV0sXG4gIFtbWzAuNSwgMS4wXSwgWzEuMCwgMC41XV0sIFtbMS41LCAxLjBdLCBbMS4wLCAxLjVdXV0sXG4gIFtbWzEuNSwgMS4wXSwgWzEuMCwgMC41XV1dLFxuICBbW1swLjUsIDEuMF0sIFsxLjUsIDEuMF1dXSxcbiAgW1tbMS4wLCAxLjVdLCBbMS41LCAxLjBdXV0sXG4gIFtbWzAuNSwgMS4wXSwgWzEuMCwgMS41XV1dLFxuICBbXVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICB0aHJlc2hvbGQgPSB0aHJlc2hvbGRTdHVyZ2VzLFxuICAgICAgc21vb3RoID0gc21vb3RoTGluZWFyO1xuXG4gIGZ1bmN0aW9uIGNvbnRvdXJzKHZhbHVlcykge1xuICAgIHZhciB0eiA9IHRocmVzaG9sZCh2YWx1ZXMpO1xuXG4gICAgLy8gQ29udmVydCBudW1iZXIgb2YgdGhyZXNob2xkcyBpbnRvIHVuaWZvcm0gdGhyZXNob2xkcy5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHopKSB7XG4gICAgICBjb25zdCBlID0gZXh0ZW50KHZhbHVlcywgZmluaXRlKTtcbiAgICAgIHR6ID0gdGlja3MoLi4ubmljZShlWzBdLCBlWzFdLCB0eiksIHR6KTtcbiAgICAgIHdoaWxlICh0elt0ei5sZW5ndGggLSAxXSA+PSBlWzFdKSB0ei5wb3AoKTtcbiAgICAgIHdoaWxlICh0elsxXSA8IGVbMF0pIHR6LnNoaWZ0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR6ID0gdHouc2xpY2UoKS5zb3J0KGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR6Lm1hcCh2YWx1ZSA9PiBjb250b3VyKHZhbHVlcywgdmFsdWUpKTtcbiAgfVxuXG4gIC8vIEFjY3VtdWxhdGUsIHNtb290aCBjb250b3VyIHJpbmdzLCBhc3NpZ24gaG9sZXMgdG8gZXh0ZXJpb3IgcmluZ3MuXG4gIC8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9tYm9zdG9jay9zaGFwZWZpbGUvYmxvYi92MC42LjIvc2hwL3BvbHlnb24uanNcbiAgZnVuY3Rpb24gY29udG91cih2YWx1ZXMsIHZhbHVlKSB7XG4gICAgY29uc3QgdiA9IHZhbHVlID09IG51bGwgPyBOYU4gOiArdmFsdWU7XG4gICAgaWYgKGlzTmFOKHYpKSB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdmFsdWU6ICR7dmFsdWV9YCk7XG5cbiAgICB2YXIgcG9seWdvbnMgPSBbXSxcbiAgICAgICAgaG9sZXMgPSBbXTtcblxuICAgIGlzb3JpbmdzKHZhbHVlcywgdiwgZnVuY3Rpb24ocmluZykge1xuICAgICAgc21vb3RoKHJpbmcsIHZhbHVlcywgdik7XG4gICAgICBpZiAoYXJlYShyaW5nKSA+IDApIHBvbHlnb25zLnB1c2goW3JpbmddKTtcbiAgICAgIGVsc2UgaG9sZXMucHVzaChyaW5nKTtcbiAgICB9KTtcblxuICAgIGhvbGVzLmZvckVhY2goZnVuY3Rpb24oaG9sZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSBwb2x5Z29ucy5sZW5ndGgsIHBvbHlnb247IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKGNvbnRhaW5zKChwb2x5Z29uID0gcG9seWdvbnNbaV0pWzBdLCBob2xlKSAhPT0gLTEpIHtcbiAgICAgICAgICBwb2x5Z29uLnB1c2goaG9sZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJNdWx0aVBvbHlnb25cIixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGNvb3JkaW5hdGVzOiBwb2x5Z29uc1xuICAgIH07XG4gIH1cblxuICAvLyBNYXJjaGluZyBzcXVhcmVzIHdpdGggaXNvbGluZXMgc3RpdGNoZWQgaW50byByaW5ncy5cbiAgLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3RvcG9qc29uL3RvcG9qc29uLWNsaWVudC9ibG9iL3YzLjAuMC9zcmMvc3RpdGNoLmpzXG4gIGZ1bmN0aW9uIGlzb3JpbmdzKHZhbHVlcywgdmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGZyYWdtZW50QnlTdGFydCA9IG5ldyBBcnJheSxcbiAgICAgICAgZnJhZ21lbnRCeUVuZCA9IG5ldyBBcnJheSxcbiAgICAgICAgeCwgeSwgdDAsIHQxLCB0MiwgdDM7XG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBmaXJzdCByb3cgKHkgPSAtMSwgdDIgPSB0MyA9IDApLlxuICAgIHggPSB5ID0gLTE7XG4gICAgdDEgPSBhYm92ZSh2YWx1ZXNbMF0sIHZhbHVlKTtcbiAgICBjYXNlc1t0MSA8PCAxXS5mb3JFYWNoKHN0aXRjaCk7XG4gICAgd2hpbGUgKCsreCA8IGR4IC0gMSkge1xuICAgICAgdDAgPSB0MSwgdDEgPSBhYm92ZSh2YWx1ZXNbeCArIDFdLCB2YWx1ZSk7XG4gICAgICBjYXNlc1t0MCB8IHQxIDw8IDFdLmZvckVhY2goc3RpdGNoKTtcbiAgICB9XG4gICAgY2FzZXNbdDEgPDwgMF0uZm9yRWFjaChzdGl0Y2gpO1xuXG4gICAgLy8gR2VuZXJhbCBjYXNlIGZvciB0aGUgaW50ZXJtZWRpYXRlIHJvd3MuXG4gICAgd2hpbGUgKCsreSA8IGR5IC0gMSkge1xuICAgICAgeCA9IC0xO1xuICAgICAgdDEgPSBhYm92ZSh2YWx1ZXNbeSAqIGR4ICsgZHhdLCB2YWx1ZSk7XG4gICAgICB0MiA9IGFib3ZlKHZhbHVlc1t5ICogZHhdLCB2YWx1ZSk7XG4gICAgICBjYXNlc1t0MSA8PCAxIHwgdDIgPDwgMl0uZm9yRWFjaChzdGl0Y2gpO1xuICAgICAgd2hpbGUgKCsreCA8IGR4IC0gMSkge1xuICAgICAgICB0MCA9IHQxLCB0MSA9IGFib3ZlKHZhbHVlc1t5ICogZHggKyBkeCArIHggKyAxXSwgdmFsdWUpO1xuICAgICAgICB0MyA9IHQyLCB0MiA9IGFib3ZlKHZhbHVlc1t5ICogZHggKyB4ICsgMV0sIHZhbHVlKTtcbiAgICAgICAgY2FzZXNbdDAgfCB0MSA8PCAxIHwgdDIgPDwgMiB8IHQzIDw8IDNdLmZvckVhY2goc3RpdGNoKTtcbiAgICAgIH1cbiAgICAgIGNhc2VzW3QxIHwgdDIgPDwgM10uZm9yRWFjaChzdGl0Y2gpO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGxhc3Qgcm93ICh5ID0gZHkgLSAxLCB0MCA9IHQxID0gMCkuXG4gICAgeCA9IC0xO1xuICAgIHQyID0gdmFsdWVzW3kgKiBkeF0gPj0gdmFsdWU7XG4gICAgY2FzZXNbdDIgPDwgMl0uZm9yRWFjaChzdGl0Y2gpO1xuICAgIHdoaWxlICgrK3ggPCBkeCAtIDEpIHtcbiAgICAgIHQzID0gdDIsIHQyID0gYWJvdmUodmFsdWVzW3kgKiBkeCArIHggKyAxXSwgdmFsdWUpO1xuICAgICAgY2FzZXNbdDIgPDwgMiB8IHQzIDw8IDNdLmZvckVhY2goc3RpdGNoKTtcbiAgICB9XG4gICAgY2FzZXNbdDIgPDwgM10uZm9yRWFjaChzdGl0Y2gpO1xuXG4gICAgZnVuY3Rpb24gc3RpdGNoKGxpbmUpIHtcbiAgICAgIHZhciBzdGFydCA9IFtsaW5lWzBdWzBdICsgeCwgbGluZVswXVsxXSArIHldLFxuICAgICAgICAgIGVuZCA9IFtsaW5lWzFdWzBdICsgeCwgbGluZVsxXVsxXSArIHldLFxuICAgICAgICAgIHN0YXJ0SW5kZXggPSBpbmRleChzdGFydCksXG4gICAgICAgICAgZW5kSW5kZXggPSBpbmRleChlbmQpLFxuICAgICAgICAgIGYsIGc7XG4gICAgICBpZiAoZiA9IGZyYWdtZW50QnlFbmRbc3RhcnRJbmRleF0pIHtcbiAgICAgICAgaWYgKGcgPSBmcmFnbWVudEJ5U3RhcnRbZW5kSW5kZXhdKSB7XG4gICAgICAgICAgZGVsZXRlIGZyYWdtZW50QnlFbmRbZi5lbmRdO1xuICAgICAgICAgIGRlbGV0ZSBmcmFnbWVudEJ5U3RhcnRbZy5zdGFydF07XG4gICAgICAgICAgaWYgKGYgPT09IGcpIHtcbiAgICAgICAgICAgIGYucmluZy5wdXNoKGVuZCk7XG4gICAgICAgICAgICBjYWxsYmFjayhmLnJpbmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmFnbWVudEJ5U3RhcnRbZi5zdGFydF0gPSBmcmFnbWVudEJ5RW5kW2cuZW5kXSA9IHtzdGFydDogZi5zdGFydCwgZW5kOiBnLmVuZCwgcmluZzogZi5yaW5nLmNvbmNhdChnLnJpbmcpfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGZyYWdtZW50QnlFbmRbZi5lbmRdO1xuICAgICAgICAgIGYucmluZy5wdXNoKGVuZCk7XG4gICAgICAgICAgZnJhZ21lbnRCeUVuZFtmLmVuZCA9IGVuZEluZGV4XSA9IGY7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZiA9IGZyYWdtZW50QnlTdGFydFtlbmRJbmRleF0pIHtcbiAgICAgICAgaWYgKGcgPSBmcmFnbWVudEJ5RW5kW3N0YXJ0SW5kZXhdKSB7XG4gICAgICAgICAgZGVsZXRlIGZyYWdtZW50QnlTdGFydFtmLnN0YXJ0XTtcbiAgICAgICAgICBkZWxldGUgZnJhZ21lbnRCeUVuZFtnLmVuZF07XG4gICAgICAgICAgaWYgKGYgPT09IGcpIHtcbiAgICAgICAgICAgIGYucmluZy5wdXNoKGVuZCk7XG4gICAgICAgICAgICBjYWxsYmFjayhmLnJpbmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmFnbWVudEJ5U3RhcnRbZy5zdGFydF0gPSBmcmFnbWVudEJ5RW5kW2YuZW5kXSA9IHtzdGFydDogZy5zdGFydCwgZW5kOiBmLmVuZCwgcmluZzogZy5yaW5nLmNvbmNhdChmLnJpbmcpfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGZyYWdtZW50QnlTdGFydFtmLnN0YXJ0XTtcbiAgICAgICAgICBmLnJpbmcudW5zaGlmdChzdGFydCk7XG4gICAgICAgICAgZnJhZ21lbnRCeVN0YXJ0W2Yuc3RhcnQgPSBzdGFydEluZGV4XSA9IGY7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyYWdtZW50QnlTdGFydFtzdGFydEluZGV4XSA9IGZyYWdtZW50QnlFbmRbZW5kSW5kZXhdID0ge3N0YXJ0OiBzdGFydEluZGV4LCBlbmQ6IGVuZEluZGV4LCByaW5nOiBbc3RhcnQsIGVuZF19O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluZGV4KHBvaW50KSB7XG4gICAgcmV0dXJuIHBvaW50WzBdICogMiArIHBvaW50WzFdICogKGR4ICsgMSkgKiA0O1xuICB9XG5cbiAgZnVuY3Rpb24gc21vb3RoTGluZWFyKHJpbmcsIHZhbHVlcywgdmFsdWUpIHtcbiAgICByaW5nLmZvckVhY2goZnVuY3Rpb24ocG9pbnQpIHtcbiAgICAgIHZhciB4ID0gcG9pbnRbMF0sXG4gICAgICAgICAgeSA9IHBvaW50WzFdLFxuICAgICAgICAgIHh0ID0geCB8IDAsXG4gICAgICAgICAgeXQgPSB5IHwgMCxcbiAgICAgICAgICB2MSA9IHZhbGlkKHZhbHVlc1t5dCAqIGR4ICsgeHRdKTtcbiAgICAgIGlmICh4ID4gMCAmJiB4IDwgZHggJiYgeHQgPT09IHgpIHtcbiAgICAgICAgcG9pbnRbMF0gPSBzbW9vdGgxKHgsIHZhbGlkKHZhbHVlc1t5dCAqIGR4ICsgeHQgLSAxXSksIHYxLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoeSA+IDAgJiYgeSA8IGR5ICYmIHl0ID09PSB5KSB7XG4gICAgICAgIHBvaW50WzFdID0gc21vb3RoMSh5LCB2YWxpZCh2YWx1ZXNbKHl0IC0gMSkgKiBkeCArIHh0XSksIHYxLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb250b3Vycy5jb250b3VyID0gY29udG91cjtcblxuICBjb250b3Vycy5zaXplID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtkeCwgZHldO1xuICAgIHZhciBfMCA9IE1hdGguZmxvb3IoX1swXSksIF8xID0gTWF0aC5mbG9vcihfWzFdKTtcbiAgICBpZiAoIShfMCA+PSAwICYmIF8xID49IDApKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHNpemVcIik7XG4gICAgcmV0dXJuIGR4ID0gXzAsIGR5ID0gXzEsIGNvbnRvdXJzO1xuICB9O1xuXG4gIGNvbnRvdXJzLnRocmVzaG9sZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhyZXNob2xkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBBcnJheS5pc0FycmF5KF8pID8gY29uc3RhbnQoc2xpY2UuY2FsbChfKSkgOiBjb25zdGFudChfKSwgY29udG91cnMpIDogdGhyZXNob2xkO1xuICB9O1xuXG4gIGNvbnRvdXJzLnNtb290aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzbW9vdGggPSBfID8gc21vb3RoTGluZWFyIDogbm9vcCwgY29udG91cnMpIDogc21vb3RoID09PSBzbW9vdGhMaW5lYXI7XG4gIH07XG5cbiAgcmV0dXJuIGNvbnRvdXJzO1xufVxuXG4vLyBXaGVuIGNvbXB1dGluZyB0aGUgZXh0ZW50LCBpZ25vcmUgaW5maW5pdGUgdmFsdWVzIChhcyB3ZWxsIGFzIGludmFsaWQgb25lcykuXG5mdW5jdGlvbiBmaW5pdGUoeCkge1xuICByZXR1cm4gaXNGaW5pdGUoeCkgPyB4IDogTmFOO1xufVxuXG4vLyBJcyB0aGUgKHBvc3NpYmx5IGludmFsaWQpIHggZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSAoa25vd24gdmFsaWQpIHZhbHVlP1xuLy8gVHJlYXQgYW55IGludmFsaWQgdmFsdWUgYXMgYmVsb3cgbmVnYXRpdmUgaW5maW5pdHkuXG5mdW5jdGlvbiBhYm92ZSh4LCB2YWx1ZSkge1xuICByZXR1cm4geCA9PSBudWxsID8gZmFsc2UgOiAreCA+PSB2YWx1ZTtcbn1cblxuLy8gRHVyaW5nIHNtb290aGluZywgdHJlYXQgYW55IGludmFsaWQgdmFsdWUgYXMgbmVnYXRpdmUgaW5maW5pdHkuXG5mdW5jdGlvbiB2YWxpZCh2KSB7XG4gIHJldHVybiB2ID09IG51bGwgfHwgaXNOYU4odiA9ICt2KSA/IC1JbmZpbml0eSA6IHY7XG59XG5cbmZ1bmN0aW9uIHNtb290aDEoeCwgdjAsIHYxLCB2YWx1ZSkge1xuICBjb25zdCBhID0gdmFsdWUgLSB2MDtcbiAgY29uc3QgYiA9IHYxIC0gdjA7XG4gIGNvbnN0IGQgPSBpc0Zpbml0ZShhKSB8fCBpc0Zpbml0ZShiKSA/IGEgLyBiIDogTWF0aC5zaWduKGEpIC8gTWF0aC5zaWduKGIpO1xuICByZXR1cm4gaXNOYU4oZCkgPyB4IDogeCArIGQgLSAwLjU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/contours.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/density.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-contour/src/density.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/blur.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/max.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-contour/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-contour/src/constant.js\");\n/* harmony import */ var _contours_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contours.js */ \"../../../node_modules/d3-contour/src/contours.js\");\n\n\n\n\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(20);\n\n function grid(data) {\n var values = new Float32Array(n * m),\n pow2k = Math.pow(2, -k),\n i = -1;\n\n for (const d of data) {\n var xi = (x(d, ++i, data) + o) * pow2k,\n yi = (y(d, i, data) + o) * pow2k,\n wi = +weight(d, i, data);\n if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) {\n var x0 = Math.floor(xi),\n y0 = Math.floor(yi),\n xt = xi - x0 - 0.5,\n yt = yi - y0 - 0.5;\n values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n }\n }\n\n (0,d3_array__WEBPACK_IMPORTED_MODULE_1__.blur2)({data: values, width: n, height: m}, r * pow2k);\n return values;\n }\n\n function density(data) {\n var values = grid(data),\n tz = threshold(values),\n pow4k = Math.pow(2, 2 * k);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = (0,d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Number.MIN_VALUE, (0,d3_array__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(values) / pow4k, tz);\n }\n\n return (0,_contours_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])()\n .size([n, m])\n .thresholds(tz.map(d => d * pow4k))\n (values)\n .map((c, i) => (c.value = +tz[i], transform(c)));\n }\n\n density.contours = function(data) {\n var values = grid(data),\n contours = (0,_contours_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])().size([n, m]),\n pow4k = Math.pow(2, 2 * k),\n contour = value => {\n value = +value;\n var c = transform(contours.contour(values, value * pow4k));\n c.value = value; // preserve exact threshold value\n return c;\n };\n Object.defineProperty(contour, \"max\", {get: () => (0,d3_array__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(values) / pow4k});\n return contour;\n };\n\n function transform(geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0], _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_array_js__WEBPACK_IMPORTED_MODULE_5__.slice.call(_)) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n };\n\n return density;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2RlbnNpdHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUEyQztBQUNWO0FBQ0k7QUFDQTs7QUFFckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isd0RBQVE7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLCtDQUFLLEVBQUUsa0NBQWtDO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsb0RBQUssbUJBQW1CLG9EQUFHO0FBQ3RDOztBQUVBLFdBQVcsd0RBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLHdEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSwyQ0FBMkMsV0FBVyxvREFBRyxpQkFBaUI7QUFDMUU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUVBQWlFLHdEQUFRO0FBQ3pFOztBQUVBO0FBQ0EsaUVBQWlFLHdEQUFRO0FBQ3pFOztBQUVBO0FBQ0Esc0VBQXNFLHdEQUFRO0FBQzlFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEZBQTRGLHdEQUFRLENBQUMsaURBQVUsT0FBTyx3REFBUTtBQUM5SDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2RlbnNpdHkuanM/Mjc5OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2JsdXIyLCBtYXgsIHRpY2tzfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBDb250b3VycyBmcm9tIFwiLi9jb250b3Vycy5qc1wiO1xuXG5mdW5jdGlvbiBkZWZhdWx0WChkKSB7XG4gIHJldHVybiBkWzBdO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0WShkKSB7XG4gIHJldHVybiBkWzFdO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0V2VpZ2h0KCkge1xuICByZXR1cm4gMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4ID0gZGVmYXVsdFgsXG4gICAgICB5ID0gZGVmYXVsdFksXG4gICAgICB3ZWlnaHQgPSBkZWZhdWx0V2VpZ2h0LFxuICAgICAgZHggPSA5NjAsXG4gICAgICBkeSA9IDUwMCxcbiAgICAgIHIgPSAyMCwgLy8gYmx1ciByYWRpdXNcbiAgICAgIGsgPSAyLCAvLyBsb2cyKGdyaWQgY2VsbCBzaXplKVxuICAgICAgbyA9IHIgKiAzLCAvLyBncmlkIG9mZnNldCwgdG8gcGFkIGZvciBibHVyXG4gICAgICBuID0gKGR4ICsgbyAqIDIpID4+IGssIC8vIGdyaWQgd2lkdGhcbiAgICAgIG0gPSAoZHkgKyBvICogMikgPj4gaywgLy8gZ3JpZCBoZWlnaHRcbiAgICAgIHRocmVzaG9sZCA9IGNvbnN0YW50KDIwKTtcblxuICBmdW5jdGlvbiBncmlkKGRhdGEpIHtcbiAgICB2YXIgdmFsdWVzID0gbmV3IEZsb2F0MzJBcnJheShuICogbSksXG4gICAgICAgIHBvdzJrID0gTWF0aC5wb3coMiwgLWspLFxuICAgICAgICBpID0gLTE7XG5cbiAgICBmb3IgKGNvbnN0IGQgb2YgZGF0YSkge1xuICAgICAgdmFyIHhpID0gKHgoZCwgKytpLCBkYXRhKSArIG8pICogcG93MmssXG4gICAgICAgICAgeWkgPSAoeShkLCBpLCBkYXRhKSArIG8pICogcG93MmssXG4gICAgICAgICAgd2kgPSArd2VpZ2h0KGQsIGksIGRhdGEpO1xuICAgICAgaWYgKHdpICYmIHhpID49IDAgJiYgeGkgPCBuICYmIHlpID49IDAgJiYgeWkgPCBtKSB7XG4gICAgICAgIHZhciB4MCA9IE1hdGguZmxvb3IoeGkpLFxuICAgICAgICAgICAgeTAgPSBNYXRoLmZsb29yKHlpKSxcbiAgICAgICAgICAgIHh0ID0geGkgLSB4MCAtIDAuNSxcbiAgICAgICAgICAgIHl0ID0geWkgLSB5MCAtIDAuNTtcbiAgICAgICAgdmFsdWVzW3gwICsgeTAgKiBuXSArPSAoMSAtIHh0KSAqICgxIC0geXQpICogd2k7XG4gICAgICAgIHZhbHVlc1t4MCArIDEgKyB5MCAqIG5dICs9IHh0ICogKDEgLSB5dCkgKiB3aTtcbiAgICAgICAgdmFsdWVzW3gwICsgMSArICh5MCArIDEpICogbl0gKz0geHQgKiB5dCAqIHdpO1xuICAgICAgICB2YWx1ZXNbeDAgKyAoeTAgKyAxKSAqIG5dICs9ICgxIC0geHQpICogeXQgKiB3aTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBibHVyMih7ZGF0YTogdmFsdWVzLCB3aWR0aDogbiwgaGVpZ2h0OiBtfSwgciAqIHBvdzJrKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVuc2l0eShkYXRhKSB7XG4gICAgdmFyIHZhbHVlcyA9IGdyaWQoZGF0YSksXG4gICAgICAgIHR6ID0gdGhyZXNob2xkKHZhbHVlcyksXG4gICAgICAgIHBvdzRrID0gTWF0aC5wb3coMiwgMiAqIGspO1xuXG4gICAgLy8gQ29udmVydCBudW1iZXIgb2YgdGhyZXNob2xkcyBpbnRvIHVuaWZvcm0gdGhyZXNob2xkcy5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHopKSB7XG4gICAgICB0eiA9IHRpY2tzKE51bWJlci5NSU5fVkFMVUUsIG1heCh2YWx1ZXMpIC8gcG93NGssIHR6KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ29udG91cnMoKVxuICAgICAgICAuc2l6ZShbbiwgbV0pXG4gICAgICAgIC50aHJlc2hvbGRzKHR6Lm1hcChkID0+IGQgKiBwb3c0aykpXG4gICAgICAodmFsdWVzKVxuICAgICAgICAubWFwKChjLCBpKSA9PiAoYy52YWx1ZSA9ICt0eltpXSwgdHJhbnNmb3JtKGMpKSk7XG4gIH1cblxuICBkZW5zaXR5LmNvbnRvdXJzID0gZnVuY3Rpb24oZGF0YSkge1xuICAgIHZhciB2YWx1ZXMgPSBncmlkKGRhdGEpLFxuICAgICAgICBjb250b3VycyA9IENvbnRvdXJzKCkuc2l6ZShbbiwgbV0pLFxuICAgICAgICBwb3c0ayA9IE1hdGgucG93KDIsIDIgKiBrKSxcbiAgICAgICAgY29udG91ciA9IHZhbHVlID0+IHtcbiAgICAgICAgICB2YWx1ZSA9ICt2YWx1ZTtcbiAgICAgICAgICB2YXIgYyA9IHRyYW5zZm9ybShjb250b3Vycy5jb250b3VyKHZhbHVlcywgdmFsdWUgKiBwb3c0aykpO1xuICAgICAgICAgIGMudmFsdWUgPSB2YWx1ZTsgLy8gcHJlc2VydmUgZXhhY3QgdGhyZXNob2xkIHZhbHVlXG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnRvdXIsIFwibWF4XCIsIHtnZXQ6ICgpID0+IG1heCh2YWx1ZXMpIC8gcG93NGt9KTtcbiAgICByZXR1cm4gY29udG91cjtcbiAgfTtcblxuICBmdW5jdGlvbiB0cmFuc2Zvcm0oZ2VvbWV0cnkpIHtcbiAgICBnZW9tZXRyeS5jb29yZGluYXRlcy5mb3JFYWNoKHRyYW5zZm9ybVBvbHlnb24pO1xuICAgIHJldHVybiBnZW9tZXRyeTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVBvbHlnb24oY29vcmRpbmF0ZXMpIHtcbiAgICBjb29yZGluYXRlcy5mb3JFYWNoKHRyYW5zZm9ybVJpbmcpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtUmluZyhjb29yZGluYXRlcykge1xuICAgIGNvb3JkaW5hdGVzLmZvckVhY2godHJhbnNmb3JtUG9pbnQpO1xuICB9XG5cbiAgLy8gVE9ETyBPcHRpbWl6ZS5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtUG9pbnQoY29vcmRpbmF0ZXMpIHtcbiAgICBjb29yZGluYXRlc1swXSA9IGNvb3JkaW5hdGVzWzBdICogTWF0aC5wb3coMiwgaykgLSBvO1xuICAgIGNvb3JkaW5hdGVzWzFdID0gY29vcmRpbmF0ZXNbMV0gKiBNYXRoLnBvdygyLCBrKSAtIG87XG4gIH1cblxuICBmdW5jdGlvbiByZXNpemUoKSB7XG4gICAgbyA9IHIgKiAzO1xuICAgIG4gPSAoZHggKyBvICogMikgPj4gaztcbiAgICBtID0gKGR5ICsgbyAqIDIpID4+IGs7XG4gICAgcmV0dXJuIGRlbnNpdHk7XG4gIH1cblxuICBkZW5zaXR5LnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBkZW5zaXR5KSA6IHg7XG4gIH07XG5cbiAgZGVuc2l0eS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgZGVuc2l0eSkgOiB5O1xuICB9O1xuXG4gIGRlbnNpdHkud2VpZ2h0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHdlaWdodCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBkZW5zaXR5KSA6IHdlaWdodDtcbiAgfTtcblxuICBkZW5zaXR5LnNpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gW2R4LCBkeV07XG4gICAgdmFyIF8wID0gK19bMF0sIF8xID0gK19bMV07XG4gICAgaWYgKCEoXzAgPj0gMCAmJiBfMSA+PSAwKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBzaXplXCIpO1xuICAgIHJldHVybiBkeCA9IF8wLCBkeSA9IF8xLCByZXNpemUoKTtcbiAgfTtcblxuICBkZW5zaXR5LmNlbGxTaXplID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIDEgPDwgaztcbiAgICBpZiAoISgoXyA9ICtfKSA+PSAxKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjZWxsIHNpemVcIik7XG4gICAgcmV0dXJuIGsgPSBNYXRoLmZsb29yKE1hdGgubG9nKF8pIC8gTWF0aC5MTjIpLCByZXNpemUoKTtcbiAgfTtcblxuICBkZW5zaXR5LnRocmVzaG9sZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhyZXNob2xkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBBcnJheS5pc0FycmF5KF8pID8gY29uc3RhbnQoc2xpY2UuY2FsbChfKSkgOiBjb25zdGFudChfKSwgZGVuc2l0eSkgOiB0aHJlc2hvbGQ7XG4gIH07XG5cbiAgZGVuc2l0eS5iYW5kd2lkdGggPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gTWF0aC5zcXJ0KHIgKiAociArIDEpKTtcbiAgICBpZiAoISgoXyA9ICtfKSA+PSAwKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBiYW5kd2lkdGhcIik7XG4gICAgcmV0dXJuIHIgPSAoTWF0aC5zcXJ0KDQgKiBfICogXyArIDEpIC0gMSkgLyAyLCByZXNpemUoKTtcbiAgfTtcblxuICByZXR1cm4gZGVuc2l0eTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/density.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/index.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-contour/src/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"contourDensity\": () => (/* reexport safe */ _density_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"contours\": () => (/* reexport safe */ _contours_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _contours_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contours.js */ \"../../../node_modules/d3-contour/src/contours.js\");\n/* harmony import */ var _density_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./density.js */ \"../../../node_modules/d3-contour/src/density.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0Q7QUFDSyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtY29udG91ci9zcmMvaW5kZXguanM/Njk3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgY29udG91cnN9IGZyb20gXCIuL2NvbnRvdXJzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29udG91ckRlbnNpdHl9IGZyb20gXCIuL2RlbnNpdHkuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-contour/src/noop.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-contour/src/noop.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNvbnRvdXIvc3JjL25vb3AuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLHNDQUFXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb250b3VyL3NyYy9ub29wLmpzP2NjMzYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7fVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-contour/src/noop.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-delaunay/src/delaunay.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-delaunay/src/delaunay.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Delaunay)\n/* harmony export */ });\n/* harmony import */ var delaunator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! delaunator */ \"../../../node_modules/delaunator/index.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-delaunay/src/path.js\");\n/* harmony import */ var _polygon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./polygon.js */ \"../../../node_modules/d3-delaunay/src/polygon.js\");\n/* harmony import */ var _voronoi_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./voronoi.js */ \"../../../node_modules/d3-delaunay/src/voronoi.js\");\n\n\n\n\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nclass Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new delaunator__WEBPACK_IMPORTED_MODULE_0__[\"default\"](points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new delaunator__WEBPACK_IMPORTED_MODULE_0__[\"default\"](points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new _voronoi_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9kZWxhdW5heS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFvQztBQUNQO0FBQ007QUFDQTs7QUFFbkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxtQkFBbUI7QUFDNUIsa0JBQWtCLHNCQUFzQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGtEQUFVO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLHdCQUF3QjtBQUNoRSxpR0FBaUc7QUFDakc7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLE9BQU87QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0RBQVU7QUFDdkMsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNEQUFzRDtBQUN0RDtBQUNBLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxPQUFPO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbURBQU87QUFDdEI7QUFDQTtBQUNBLFdBQVcsNERBQTREOztBQUV2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5REFBeUQ7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0RBQUk7QUFDdkQsV0FBVyw4QkFBOEI7QUFDekMsMENBQTBDLE9BQU87QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0RBQUk7QUFDdkQsV0FBVyxRQUFRO0FBQ25CLHVDQUF1QyxPQUFPO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELGdEQUFJO0FBQ3ZELFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbURBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0RBQUk7QUFDdkQsV0FBVyxtQkFBbUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsOENBQThDLE9BQU87QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbURBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9kZWxhdW5heS5qcz8xN2EwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEZWxhdW5hdG9yIGZyb20gXCJkZWxhdW5hdG9yXCI7XG5pbXBvcnQgUGF0aCBmcm9tIFwiLi9wYXRoLmpzXCI7XG5pbXBvcnQgUG9seWdvbiBmcm9tIFwiLi9wb2x5Z29uLmpzXCI7XG5pbXBvcnQgVm9yb25vaSBmcm9tIFwiLi92b3Jvbm9pLmpzXCI7XG5cbmNvbnN0IHRhdSA9IDIgKiBNYXRoLlBJLCBwb3cgPSBNYXRoLnBvdztcblxuZnVuY3Rpb24gcG9pbnRYKHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmZ1bmN0aW9uIHBvaW50WShwKSB7XG4gIHJldHVybiBwWzFdO1xufVxuXG4vLyBBIHRyaWFuZ3VsYXRpb24gaXMgY29sbGluZWFyIGlmIGFsbCBpdHMgdHJpYW5nbGVzIGhhdmUgYSBub24tbnVsbCBhcmVhXG5mdW5jdGlvbiBjb2xsaW5lYXIoZCkge1xuICBjb25zdCB7dHJpYW5nbGVzLCBjb29yZHN9ID0gZDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmlhbmdsZXMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICBjb25zdCBhID0gMiAqIHRyaWFuZ2xlc1tpXSxcbiAgICAgICAgICBiID0gMiAqIHRyaWFuZ2xlc1tpICsgMV0sXG4gICAgICAgICAgYyA9IDIgKiB0cmlhbmdsZXNbaSArIDJdLFxuICAgICAgICAgIGNyb3NzID0gKGNvb3Jkc1tjXSAtIGNvb3Jkc1thXSkgKiAoY29vcmRzW2IgKyAxXSAtIGNvb3Jkc1thICsgMV0pXG4gICAgICAgICAgICAgICAgLSAoY29vcmRzW2JdIC0gY29vcmRzW2FdKSAqIChjb29yZHNbYyArIDFdIC0gY29vcmRzW2EgKyAxXSk7XG4gICAgaWYgKGNyb3NzID4gMWUtMTApIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaml0dGVyKHgsIHksIHIpIHtcbiAgcmV0dXJuIFt4ICsgTWF0aC5zaW4oeCArIHkpICogciwgeSArIE1hdGguY29zKHggLSB5KSAqIHJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZWxhdW5heSB7XG4gIHN0YXRpYyBmcm9tKHBvaW50cywgZnggPSBwb2ludFgsIGZ5ID0gcG9pbnRZLCB0aGF0KSB7XG4gICAgcmV0dXJuIG5ldyBEZWxhdW5heShcImxlbmd0aFwiIGluIHBvaW50c1xuICAgICAgICA/IGZsYXRBcnJheShwb2ludHMsIGZ4LCBmeSwgdGhhdClcbiAgICAgICAgOiBGbG9hdDY0QXJyYXkuZnJvbShmbGF0SXRlcmFibGUocG9pbnRzLCBmeCwgZnksIHRoYXQpKSk7XG4gIH1cbiAgY29uc3RydWN0b3IocG9pbnRzKSB7XG4gICAgdGhpcy5fZGVsYXVuYXRvciA9IG5ldyBEZWxhdW5hdG9yKHBvaW50cyk7XG4gICAgdGhpcy5pbmVkZ2VzID0gbmV3IEludDMyQXJyYXkocG9pbnRzLmxlbmd0aCAvIDIpO1xuICAgIHRoaXMuX2h1bGxJbmRleCA9IG5ldyBJbnQzMkFycmF5KHBvaW50cy5sZW5ndGggLyAyKTtcbiAgICB0aGlzLnBvaW50cyA9IHRoaXMuX2RlbGF1bmF0b3IuY29vcmRzO1xuICAgIHRoaXMuX2luaXQoKTtcbiAgfVxuICB1cGRhdGUoKSB7XG4gICAgdGhpcy5fZGVsYXVuYXRvci51cGRhdGUoKTtcbiAgICB0aGlzLl9pbml0KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgX2luaXQoKSB7XG4gICAgY29uc3QgZCA9IHRoaXMuX2RlbGF1bmF0b3IsIHBvaW50cyA9IHRoaXMucG9pbnRzO1xuXG4gICAgLy8gY2hlY2sgZm9yIGNvbGxpbmVhclxuICAgIGlmIChkLmh1bGwgJiYgZC5odWxsLmxlbmd0aCA+IDIgJiYgY29sbGluZWFyKGQpKSB7XG4gICAgICB0aGlzLmNvbGxpbmVhciA9IEludDMyQXJyYXkuZnJvbSh7bGVuZ3RoOiBwb2ludHMubGVuZ3RoLzJ9LCAoXyxpKSA9PiBpKVxuICAgICAgICAuc29ydCgoaSwgaikgPT4gcG9pbnRzWzIgKiBpXSAtIHBvaW50c1syICogal0gfHwgcG9pbnRzWzIgKiBpICsgMV0gLSBwb2ludHNbMiAqIGogKyAxXSk7IC8vIGZvciBleGFjdCBuZWlnaGJvcnNcbiAgICAgIGNvbnN0IGUgPSB0aGlzLmNvbGxpbmVhclswXSwgZiA9IHRoaXMuY29sbGluZWFyW3RoaXMuY29sbGluZWFyLmxlbmd0aCAtIDFdLFxuICAgICAgICBib3VuZHMgPSBbIHBvaW50c1syICogZV0sIHBvaW50c1syICogZSArIDFdLCBwb2ludHNbMiAqIGZdLCBwb2ludHNbMiAqIGYgKyAxXSBdLFxuICAgICAgICByID0gMWUtOCAqIE1hdGguaHlwb3QoYm91bmRzWzNdIC0gYm91bmRzWzFdLCBib3VuZHNbMl0gLSBib3VuZHNbMF0pO1xuICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBwb2ludHMubGVuZ3RoIC8gMjsgaSA8IG47ICsraSkge1xuICAgICAgICBjb25zdCBwID0gaml0dGVyKHBvaW50c1syICogaV0sIHBvaW50c1syICogaSArIDFdLCByKTtcbiAgICAgICAgcG9pbnRzWzIgKiBpXSA9IHBbMF07XG4gICAgICAgIHBvaW50c1syICogaSArIDFdID0gcFsxXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2RlbGF1bmF0b3IgPSBuZXcgRGVsYXVuYXRvcihwb2ludHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdGhpcy5jb2xsaW5lYXI7XG4gICAgfVxuXG4gICAgY29uc3QgaGFsZmVkZ2VzID0gdGhpcy5oYWxmZWRnZXMgPSB0aGlzLl9kZWxhdW5hdG9yLmhhbGZlZGdlcztcbiAgICBjb25zdCBodWxsID0gdGhpcy5odWxsID0gdGhpcy5fZGVsYXVuYXRvci5odWxsO1xuICAgIGNvbnN0IHRyaWFuZ2xlcyA9IHRoaXMudHJpYW5nbGVzID0gdGhpcy5fZGVsYXVuYXRvci50cmlhbmdsZXM7XG4gICAgY29uc3QgaW5lZGdlcyA9IHRoaXMuaW5lZGdlcy5maWxsKC0xKTtcbiAgICBjb25zdCBodWxsSW5kZXggPSB0aGlzLl9odWxsSW5kZXguZmlsbCgtMSk7XG5cbiAgICAvLyBDb21wdXRlIGFuIGluZGV4IGZyb20gZWFjaCBwb2ludCB0byBhbiAoYXJiaXRyYXJ5KSBpbmNvbWluZyBoYWxmZWRnZVxuICAgIC8vIFVzZWQgdG8gZ2l2ZSB0aGUgZmlyc3QgbmVpZ2hib3Igb2YgZWFjaCBwb2ludDsgZm9yIHRoaXMgcmVhc29uLFxuICAgIC8vIG9uIHRoZSBodWxsIHdlIGdpdmUgcHJpb3JpdHkgdG8gZXh0ZXJpb3IgaGFsZmVkZ2VzXG4gICAgZm9yIChsZXQgZSA9IDAsIG4gPSBoYWxmZWRnZXMubGVuZ3RoOyBlIDwgbjsgKytlKSB7XG4gICAgICBjb25zdCBwID0gdHJpYW5nbGVzW2UgJSAzID09PSAyID8gZSAtIDIgOiBlICsgMV07XG4gICAgICBpZiAoaGFsZmVkZ2VzW2VdID09PSAtMSB8fCBpbmVkZ2VzW3BdID09PSAtMSkgaW5lZGdlc1twXSA9IGU7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gaHVsbC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGh1bGxJbmRleFtodWxsW2ldXSA9IGk7XG4gICAgfVxuXG4gICAgLy8gZGVnZW5lcmF0ZSBjYXNlOiAxIG9yIDIgKGRpc3RpbmN0KSBwb2ludHNcbiAgICBpZiAoaHVsbC5sZW5ndGggPD0gMiAmJiBodWxsLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudHJpYW5nbGVzID0gbmV3IEludDMyQXJyYXkoMykuZmlsbCgtMSk7XG4gICAgICB0aGlzLmhhbGZlZGdlcyA9IG5ldyBJbnQzMkFycmF5KDMpLmZpbGwoLTEpO1xuICAgICAgdGhpcy50cmlhbmdsZXNbMF0gPSBodWxsWzBdO1xuICAgICAgaW5lZGdlc1todWxsWzBdXSA9IDE7XG4gICAgICBpZiAoaHVsbC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaW5lZGdlc1todWxsWzFdXSA9IDA7XG4gICAgICAgIHRoaXMudHJpYW5nbGVzWzFdID0gaHVsbFsxXTtcbiAgICAgICAgdGhpcy50cmlhbmdsZXNbMl0gPSBodWxsWzFdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB2b3Jvbm9pKGJvdW5kcykge1xuICAgIHJldHVybiBuZXcgVm9yb25vaSh0aGlzLCBib3VuZHMpO1xuICB9XG4gICpuZWlnaGJvcnMoaSkge1xuICAgIGNvbnN0IHtpbmVkZ2VzLCBodWxsLCBfaHVsbEluZGV4LCBoYWxmZWRnZXMsIHRyaWFuZ2xlcywgY29sbGluZWFyfSA9IHRoaXM7XG5cbiAgICAvLyBkZWdlbmVyYXRlIGNhc2Ugd2l0aCBzZXZlcmFsIGNvbGxpbmVhciBwb2ludHNcbiAgICBpZiAoY29sbGluZWFyKSB7XG4gICAgICBjb25zdCBsID0gY29sbGluZWFyLmluZGV4T2YoaSk7XG4gICAgICBpZiAobCA+IDApIHlpZWxkIGNvbGxpbmVhcltsIC0gMV07XG4gICAgICBpZiAobCA8IGNvbGxpbmVhci5sZW5ndGggLSAxKSB5aWVsZCBjb2xsaW5lYXJbbCArIDFdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGUwID0gaW5lZGdlc1tpXTtcbiAgICBpZiAoZTAgPT09IC0xKSByZXR1cm47IC8vIGNvaW5jaWRlbnQgcG9pbnRcbiAgICBsZXQgZSA9IGUwLCBwMCA9IC0xO1xuICAgIGRvIHtcbiAgICAgIHlpZWxkIHAwID0gdHJpYW5nbGVzW2VdO1xuICAgICAgZSA9IGUgJSAzID09PSAyID8gZSAtIDIgOiBlICsgMTtcbiAgICAgIGlmICh0cmlhbmdsZXNbZV0gIT09IGkpIHJldHVybjsgLy8gYmFkIHRyaWFuZ3VsYXRpb25cbiAgICAgIGUgPSBoYWxmZWRnZXNbZV07XG4gICAgICBpZiAoZSA9PT0gLTEpIHtcbiAgICAgICAgY29uc3QgcCA9IGh1bGxbKF9odWxsSW5kZXhbaV0gKyAxKSAlIGh1bGwubGVuZ3RoXTtcbiAgICAgICAgaWYgKHAgIT09IHAwKSB5aWVsZCBwO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSB3aGlsZSAoZSAhPT0gZTApO1xuICB9XG4gIGZpbmQoeCwgeSwgaSA9IDApIHtcbiAgICBpZiAoKHggPSAreCwgeCAhPT0geCkgfHwgKHkgPSAreSwgeSAhPT0geSkpIHJldHVybiAtMTtcbiAgICBjb25zdCBpMCA9IGk7XG4gICAgbGV0IGM7XG4gICAgd2hpbGUgKChjID0gdGhpcy5fc3RlcChpLCB4LCB5KSkgPj0gMCAmJiBjICE9PSBpICYmIGMgIT09IGkwKSBpID0gYztcbiAgICByZXR1cm4gYztcbiAgfVxuICBfc3RlcChpLCB4LCB5KSB7XG4gICAgY29uc3Qge2luZWRnZXMsIGh1bGwsIF9odWxsSW5kZXgsIGhhbGZlZGdlcywgdHJpYW5nbGVzLCBwb2ludHN9ID0gdGhpcztcbiAgICBpZiAoaW5lZGdlc1tpXSA9PT0gLTEgfHwgIXBvaW50cy5sZW5ndGgpIHJldHVybiAoaSArIDEpICUgKHBvaW50cy5sZW5ndGggPj4gMSk7XG4gICAgbGV0IGMgPSBpO1xuICAgIGxldCBkYyA9IHBvdyh4IC0gcG9pbnRzW2kgKiAyXSwgMikgKyBwb3coeSAtIHBvaW50c1tpICogMiArIDFdLCAyKTtcbiAgICBjb25zdCBlMCA9IGluZWRnZXNbaV07XG4gICAgbGV0IGUgPSBlMDtcbiAgICBkbyB7XG4gICAgICBsZXQgdCA9IHRyaWFuZ2xlc1tlXTtcbiAgICAgIGNvbnN0IGR0ID0gcG93KHggLSBwb2ludHNbdCAqIDJdLCAyKSArIHBvdyh5IC0gcG9pbnRzW3QgKiAyICsgMV0sIDIpO1xuICAgICAgaWYgKGR0IDwgZGMpIGRjID0gZHQsIGMgPSB0O1xuICAgICAgZSA9IGUgJSAzID09PSAyID8gZSAtIDIgOiBlICsgMTtcbiAgICAgIGlmICh0cmlhbmdsZXNbZV0gIT09IGkpIGJyZWFrOyAvLyBiYWQgdHJpYW5ndWxhdGlvblxuICAgICAgZSA9IGhhbGZlZGdlc1tlXTtcbiAgICAgIGlmIChlID09PSAtMSkge1xuICAgICAgICBlID0gaHVsbFsoX2h1bGxJbmRleFtpXSArIDEpICUgaHVsbC5sZW5ndGhdO1xuICAgICAgICBpZiAoZSAhPT0gdCkge1xuICAgICAgICAgIGlmIChwb3coeCAtIHBvaW50c1tlICogMl0sIDIpICsgcG93KHkgLSBwb2ludHNbZSAqIDIgKyAxXSwgMikgPCBkYykgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSB3aGlsZSAoZSAhPT0gZTApO1xuICAgIHJldHVybiBjO1xuICB9XG4gIHJlbmRlcihjb250ZXh0KSB7XG4gICAgY29uc3QgYnVmZmVyID0gY29udGV4dCA9PSBudWxsID8gY29udGV4dCA9IG5ldyBQYXRoIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHtwb2ludHMsIGhhbGZlZGdlcywgdHJpYW5nbGVzfSA9IHRoaXM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBoYWxmZWRnZXMubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICBjb25zdCBqID0gaGFsZmVkZ2VzW2ldO1xuICAgICAgaWYgKGogPCBpKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHRpID0gdHJpYW5nbGVzW2ldICogMjtcbiAgICAgIGNvbnN0IHRqID0gdHJpYW5nbGVzW2pdICogMjtcbiAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1t0aV0sIHBvaW50c1t0aSArIDFdKTtcbiAgICAgIGNvbnRleHQubGluZVRvKHBvaW50c1t0al0sIHBvaW50c1t0aiArIDFdKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXJIdWxsKGNvbnRleHQpO1xuICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLnZhbHVlKCk7XG4gIH1cbiAgcmVuZGVyUG9pbnRzKGNvbnRleHQsIHIpIHtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkICYmICghY29udGV4dCB8fCB0eXBlb2YgY29udGV4dC5tb3ZlVG8gIT09IFwiZnVuY3Rpb25cIikpIHIgPSBjb250ZXh0LCBjb250ZXh0ID0gbnVsbDtcbiAgICByID0gciA9PSB1bmRlZmluZWQgPyAyIDogK3I7XG4gICAgY29uc3QgYnVmZmVyID0gY29udGV4dCA9PSBudWxsID8gY29udGV4dCA9IG5ldyBQYXRoIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHtwb2ludHN9ID0gdGhpcztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBuOyBpICs9IDIpIHtcbiAgICAgIGNvbnN0IHggPSBwb2ludHNbaV0sIHkgPSBwb2ludHNbaSArIDFdO1xuICAgICAgY29udGV4dC5tb3ZlVG8oeCArIHIsIHkpO1xuICAgICAgY29udGV4dC5hcmMoeCwgeSwgciwgMCwgdGF1KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXIudmFsdWUoKTtcbiAgfVxuICByZW5kZXJIdWxsKGNvbnRleHQpIHtcbiAgICBjb25zdCBidWZmZXIgPSBjb250ZXh0ID09IG51bGwgPyBjb250ZXh0ID0gbmV3IFBhdGggOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qge2h1bGwsIHBvaW50c30gPSB0aGlzO1xuICAgIGNvbnN0IGggPSBodWxsWzBdICogMiwgbiA9IGh1bGwubGVuZ3RoO1xuICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1toXSwgcG9pbnRzW2ggKyAxXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGggPSAyICogaHVsbFtpXTtcbiAgICAgIGNvbnRleHQubGluZVRvKHBvaW50c1toXSwgcG9pbnRzW2ggKyAxXSk7XG4gICAgfVxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXIudmFsdWUoKTtcbiAgfVxuICBodWxsUG9seWdvbigpIHtcbiAgICBjb25zdCBwb2x5Z29uID0gbmV3IFBvbHlnb247XG4gICAgdGhpcy5yZW5kZXJIdWxsKHBvbHlnb24pO1xuICAgIHJldHVybiBwb2x5Z29uLnZhbHVlKCk7XG4gIH1cbiAgcmVuZGVyVHJpYW5nbGUoaSwgY29udGV4dCkge1xuICAgIGNvbnN0IGJ1ZmZlciA9IGNvbnRleHQgPT0gbnVsbCA/IGNvbnRleHQgPSBuZXcgUGF0aCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCB7cG9pbnRzLCB0cmlhbmdsZXN9ID0gdGhpcztcbiAgICBjb25zdCB0MCA9IHRyaWFuZ2xlc1tpICo9IDNdICogMjtcbiAgICBjb25zdCB0MSA9IHRyaWFuZ2xlc1tpICsgMV0gKiAyO1xuICAgIGNvbnN0IHQyID0gdHJpYW5nbGVzW2kgKyAyXSAqIDI7XG4gICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzW3QwXSwgcG9pbnRzW3QwICsgMV0pO1xuICAgIGNvbnRleHQubGluZVRvKHBvaW50c1t0MV0sIHBvaW50c1t0MSArIDFdKTtcbiAgICBjb250ZXh0LmxpbmVUbyhwb2ludHNbdDJdLCBwb2ludHNbdDIgKyAxXSk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci52YWx1ZSgpO1xuICB9XG4gICp0cmlhbmdsZVBvbHlnb25zKCkge1xuICAgIGNvbnN0IHt0cmlhbmdsZXN9ID0gdGhpcztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRyaWFuZ2xlcy5sZW5ndGggLyAzOyBpIDwgbjsgKytpKSB7XG4gICAgICB5aWVsZCB0aGlzLnRyaWFuZ2xlUG9seWdvbihpKTtcbiAgICB9XG4gIH1cbiAgdHJpYW5nbGVQb2x5Z29uKGkpIHtcbiAgICBjb25zdCBwb2x5Z29uID0gbmV3IFBvbHlnb247XG4gICAgdGhpcy5yZW5kZXJUcmlhbmdsZShpLCBwb2x5Z29uKTtcbiAgICByZXR1cm4gcG9seWdvbi52YWx1ZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZsYXRBcnJheShwb2ludHMsIGZ4LCBmeSwgdGhhdCkge1xuICBjb25zdCBuID0gcG9pbnRzLmxlbmd0aDtcbiAgY29uc3QgYXJyYXkgPSBuZXcgRmxvYXQ2NEFycmF5KG4gKiAyKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgIGFycmF5W2kgKiAyXSA9IGZ4LmNhbGwodGhhdCwgcCwgaSwgcG9pbnRzKTtcbiAgICBhcnJheVtpICogMiArIDFdID0gZnkuY2FsbCh0aGF0LCBwLCBpLCBwb2ludHMpO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuZnVuY3Rpb24qIGZsYXRJdGVyYWJsZShwb2ludHMsIGZ4LCBmeSwgdGhhdCkge1xuICBsZXQgaSA9IDA7XG4gIGZvciAoY29uc3QgcCBvZiBwb2ludHMpIHtcbiAgICB5aWVsZCBmeC5jYWxsKHRoYXQsIHAsIGksIHBvaW50cyk7XG4gICAgeWllbGQgZnkuY2FsbCh0aGF0LCBwLCBpLCBwb2ludHMpO1xuICAgICsraTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-delaunay/src/delaunay.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-delaunay/src/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-delaunay/src/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Delaunay\": () => (/* reexport safe */ _delaunay_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"Voronoi\": () => (/* reexport safe */ _voronoi_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _delaunay_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./delaunay.js */ \"../../../node_modules/d3-delaunay/src/delaunay.js\");\n/* harmony import */ var _voronoi_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./voronoi.js */ \"../../../node_modules/d3-delaunay/src/voronoi.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9pbmRleC5qcz8wZjdlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBEZWxhdW5heX0gZnJvbSBcIi4vZGVsYXVuYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBWb3Jvbm9pfSBmcm9tIFwiLi92b3Jvbm9pLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-delaunay/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-delaunay/src/path.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-delaunay/src/path.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Path)\n/* harmony export */ });\nconst epsilon = 1e-6;\n\nclass Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9wYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlCQUF5QixHQUFHLHlCQUF5QjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGNBQWMsR0FBRyxjQUFjO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxHQUFHLEdBQUcsR0FBRztBQUNsRDtBQUNBO0FBQ0Esa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFNBQVMsTUFBTSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLGNBQWMsR0FBRyxjQUFjO0FBQy9GO0FBQ0E7QUFDQSxrQkFBa0IseUJBQXlCLEdBQUcseUJBQXlCLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9wYXRoLmpzP2IxNzIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXBzaWxvbiA9IDFlLTY7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdGgge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3kwID0gLy8gc3RhcnQgb2YgY3VycmVudCBzdWJwYXRoXG4gICAgdGhpcy5feDEgPSB0aGlzLl95MSA9IG51bGw7IC8vIGVuZCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgICB0aGlzLl8gPSBcIlwiO1xuICB9XG4gIG1vdmVUbyh4LCB5KSB7XG4gICAgdGhpcy5fICs9IGBNJHt0aGlzLl94MCA9IHRoaXMuX3gxID0gK3h9LCR7dGhpcy5feTAgPSB0aGlzLl95MSA9ICt5fWA7XG4gIH1cbiAgY2xvc2VQYXRoKCkge1xuICAgIGlmICh0aGlzLl94MSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5feDEgPSB0aGlzLl94MCwgdGhpcy5feTEgPSB0aGlzLl95MDtcbiAgICAgIHRoaXMuXyArPSBcIlpcIjtcbiAgICB9XG4gIH1cbiAgbGluZVRvKHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gYEwke3RoaXMuX3gxID0gK3h9LCR7dGhpcy5feTEgPSAreX1gO1xuICB9XG4gIGFyYyh4LCB5LCByKSB7XG4gICAgeCA9ICt4LCB5ID0gK3ksIHIgPSArcjtcbiAgICBjb25zdCB4MCA9IHggKyByO1xuICAgIGNvbnN0IHkwID0geTtcbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1c1wiKTtcbiAgICBpZiAodGhpcy5feDEgPT09IG51bGwpIHRoaXMuXyArPSBgTSR7eDB9LCR7eTB9YDtcbiAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLl94MSAtIHgwKSA+IGVwc2lsb24gfHwgTWF0aC5hYnModGhpcy5feTEgLSB5MCkgPiBlcHNpbG9uKSB0aGlzLl8gKz0gXCJMXCIgKyB4MCArIFwiLFwiICsgeTA7XG4gICAgaWYgKCFyKSByZXR1cm47XG4gICAgdGhpcy5fICs9IGBBJHtyfSwke3J9LDAsMSwxLCR7eCAtIHJ9LCR7eX1BJHtyfSwke3J9LDAsMSwxLCR7dGhpcy5feDEgPSB4MH0sJHt0aGlzLl95MSA9IHkwfWA7XG4gIH1cbiAgcmVjdCh4LCB5LCB3LCBoKSB7XG4gICAgdGhpcy5fICs9IGBNJHt0aGlzLl94MCA9IHRoaXMuX3gxID0gK3h9LCR7dGhpcy5feTAgPSB0aGlzLl95MSA9ICt5fWgkeyt3fXYkeytofWgkey13fVpgO1xuICB9XG4gIHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl8gfHwgbnVsbDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-delaunay/src/path.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-delaunay/src/polygon.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-delaunay/src/polygon.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Polygon)\n/* harmony export */ });\nclass Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy9wb2x5Z29uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kZWxhdW5heS9zcmMvcG9seWdvbi5qcz9jZTNjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbHlnb24ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl8gPSBbXTtcbiAgfVxuICBtb3ZlVG8oeCwgeSkge1xuICAgIHRoaXMuXy5wdXNoKFt4LCB5XSk7XG4gIH1cbiAgY2xvc2VQYXRoKCkge1xuICAgIHRoaXMuXy5wdXNoKHRoaXMuX1swXS5zbGljZSgpKTtcbiAgfVxuICBsaW5lVG8oeCwgeSkge1xuICAgIHRoaXMuXy5wdXNoKFt4LCB5XSk7XG4gIH1cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuXy5sZW5ndGggPyB0aGlzLl8gOiBudWxsO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-delaunay/src/polygon.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-delaunay/src/voronoi.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-delaunay/src/voronoi.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Voronoi)\n/* harmony export */ });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-delaunay/src/path.js\");\n/* harmony import */ var _polygon_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./polygon.js */ \"../../../node_modules/d3-delaunay/src/polygon.js\");\n\n\n\nclass Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n let bx, by; // lazily computed barycenter of the hull\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // For a degenerate triangle, the circumcenter is at the infinity, in a\n // direction orthogonal to the halfedge and away from the “center” of\n // the diagram , defined as the hull’s barycenter.\n if (bx === undefined) {\n bx = by = 0;\n for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n bx /= hull.length, by /= hull.length;\n }\n const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new _path_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new _polygon_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] === cj[aj]\n && ci[ai + 1] === cj[aj + 1]\n && ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return this._simplify(V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points));\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n // for more robustness, always consider the segment in the same order\n const flip = c0 < c1;\n if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n while (true) {\n if (c0 === 0 && c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n _simplify(P) {\n if (P && P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k] || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1]) {\n P.splice(j, 2), i -= 2;\n }\n }\n if (!P.length) P = null;\n }\n return P;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRlbGF1bmF5L3NyYy92b3Jvbm9pLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QjtBQUNNOztBQUVwQjtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsV0FBVyx3QkFBd0IsV0FBVztBQUN6RCxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSx1REFBdUQsT0FBTztBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxnREFBSTtBQUN2RCxXQUFXLFdBQVcseUJBQXlCLDBCQUEwQjtBQUN6RTtBQUNBLDBDQUEwQyxPQUFPO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0RBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsZ0RBQUk7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXLFNBQVM7QUFDL0IsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixtREFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxTQUFTO0FBQzlELHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMEJBQTBCLGdDQUFnQztBQUNyRTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxZQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsT0FBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRkFBaUYsT0FBTztBQUN4RjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxVQUFVO0FBQzVDLGdFQUFnRSxPQUFPO0FBQ3ZFLGtDQUFrQyxVQUFVO0FBQzVDLGdFQUFnRSxPQUFPO0FBQ3ZFLGtDQUFrQyxVQUFVO0FBQzVDLGdFQUFnRSxPQUFPO0FBQ3ZFLGtDQUFrQyxVQUFVO0FBQzVDLGdFQUFnRSxPQUFPO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLE1BQU0sbUJBQW1CO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0EsTUFBTSxtQkFBbUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZGVsYXVuYXkvc3JjL3Zvcm9ub2kuanM/NTQ4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGF0aCBmcm9tIFwiLi9wYXRoLmpzXCI7XG5pbXBvcnQgUG9seWdvbiBmcm9tIFwiLi9wb2x5Z29uLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZvcm9ub2kge1xuICBjb25zdHJ1Y3RvcihkZWxhdW5heSwgW3htaW4sIHltaW4sIHhtYXgsIHltYXhdID0gWzAsIDAsIDk2MCwgNTAwXSkge1xuICAgIGlmICghKCh4bWF4ID0gK3htYXgpID49ICh4bWluID0gK3htaW4pKSB8fCAhKCh5bWF4ID0gK3ltYXgpID49ICh5bWluID0gK3ltaW4pKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBib3VuZHNcIik7XG4gICAgdGhpcy5kZWxhdW5heSA9IGRlbGF1bmF5O1xuICAgIHRoaXMuX2NpcmN1bWNlbnRlcnMgPSBuZXcgRmxvYXQ2NEFycmF5KGRlbGF1bmF5LnBvaW50cy5sZW5ndGggKiAyKTtcbiAgICB0aGlzLnZlY3RvcnMgPSBuZXcgRmxvYXQ2NEFycmF5KGRlbGF1bmF5LnBvaW50cy5sZW5ndGggKiAyKTtcbiAgICB0aGlzLnhtYXggPSB4bWF4LCB0aGlzLnhtaW4gPSB4bWluO1xuICAgIHRoaXMueW1heCA9IHltYXgsIHRoaXMueW1pbiA9IHltaW47XG4gICAgdGhpcy5faW5pdCgpO1xuICB9XG4gIHVwZGF0ZSgpIHtcbiAgICB0aGlzLmRlbGF1bmF5LnVwZGF0ZSgpO1xuICAgIHRoaXMuX2luaXQoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBfaW5pdCgpIHtcbiAgICBjb25zdCB7ZGVsYXVuYXk6IHtwb2ludHMsIGh1bGwsIHRyaWFuZ2xlc30sIHZlY3RvcnN9ID0gdGhpcztcbiAgICBsZXQgYngsIGJ5OyAvLyBsYXppbHkgY29tcHV0ZWQgYmFyeWNlbnRlciBvZiB0aGUgaHVsbFxuXG4gICAgLy8gQ29tcHV0ZSBjaXJjdW1jZW50ZXJzLlxuICAgIGNvbnN0IGNpcmN1bWNlbnRlcnMgPSB0aGlzLmNpcmN1bWNlbnRlcnMgPSB0aGlzLl9jaXJjdW1jZW50ZXJzLnN1YmFycmF5KDAsIHRyaWFuZ2xlcy5sZW5ndGggLyAzICogMik7XG4gICAgZm9yIChsZXQgaSA9IDAsIGogPSAwLCBuID0gdHJpYW5nbGVzLmxlbmd0aCwgeCwgeTsgaSA8IG47IGkgKz0gMywgaiArPSAyKSB7XG4gICAgICBjb25zdCB0MSA9IHRyaWFuZ2xlc1tpXSAqIDI7XG4gICAgICBjb25zdCB0MiA9IHRyaWFuZ2xlc1tpICsgMV0gKiAyO1xuICAgICAgY29uc3QgdDMgPSB0cmlhbmdsZXNbaSArIDJdICogMjtcbiAgICAgIGNvbnN0IHgxID0gcG9pbnRzW3QxXTtcbiAgICAgIGNvbnN0IHkxID0gcG9pbnRzW3QxICsgMV07XG4gICAgICBjb25zdCB4MiA9IHBvaW50c1t0Ml07XG4gICAgICBjb25zdCB5MiA9IHBvaW50c1t0MiArIDFdO1xuICAgICAgY29uc3QgeDMgPSBwb2ludHNbdDNdO1xuICAgICAgY29uc3QgeTMgPSBwb2ludHNbdDMgKyAxXTtcblxuICAgICAgY29uc3QgZHggPSB4MiAtIHgxO1xuICAgICAgY29uc3QgZHkgPSB5MiAtIHkxO1xuICAgICAgY29uc3QgZXggPSB4MyAtIHgxO1xuICAgICAgY29uc3QgZXkgPSB5MyAtIHkxO1xuICAgICAgY29uc3QgYWIgPSAoZHggKiBleSAtIGR5ICogZXgpICogMjtcblxuICAgICAgaWYgKE1hdGguYWJzKGFiKSA8IDFlLTkpIHtcbiAgICAgICAgLy8gRm9yIGEgZGVnZW5lcmF0ZSB0cmlhbmdsZSwgdGhlIGNpcmN1bWNlbnRlciBpcyBhdCB0aGUgaW5maW5pdHksIGluIGFcbiAgICAgICAgLy8gZGlyZWN0aW9uIG9ydGhvZ29uYWwgdG8gdGhlIGhhbGZlZGdlIGFuZCBhd2F5IGZyb20gdGhlIOKAnGNlbnRlcuKAnSBvZlxuICAgICAgICAvLyB0aGUgZGlhZ3JhbSA8YngsIGJ5PiwgZGVmaW5lZCBhcyB0aGUgaHVsbOKAmXMgYmFyeWNlbnRlci5cbiAgICAgICAgaWYgKGJ4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBieCA9IGJ5ID0gMDtcbiAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaHVsbCkgYnggKz0gcG9pbnRzW2kgKiAyXSwgYnkgKz0gcG9pbnRzW2kgKiAyICsgMV07XG4gICAgICAgICAgYnggLz0gaHVsbC5sZW5ndGgsIGJ5IC89IGh1bGwubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGEgPSAxZTkgKiBNYXRoLnNpZ24oKGJ4IC0geDEpICogZXkgLSAoYnkgLSB5MSkgKiBleCk7XG4gICAgICAgIHggPSAoeDEgKyB4MykgLyAyIC0gYSAqIGV5O1xuICAgICAgICB5ID0gKHkxICsgeTMpIC8gMiArIGEgKiBleDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGQgPSAxIC8gYWI7XG4gICAgICAgIGNvbnN0IGJsID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICAgIGNvbnN0IGNsID0gZXggKiBleCArIGV5ICogZXk7XG4gICAgICAgIHggPSB4MSArIChleSAqIGJsIC0gZHkgKiBjbCkgKiBkO1xuICAgICAgICB5ID0geTEgKyAoZHggKiBjbCAtIGV4ICogYmwpICogZDtcbiAgICAgIH1cbiAgICAgIGNpcmN1bWNlbnRlcnNbal0gPSB4O1xuICAgICAgY2lyY3VtY2VudGVyc1tqICsgMV0gPSB5O1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgZXh0ZXJpb3IgY2VsbCByYXlzLlxuICAgIGxldCBoID0gaHVsbFtodWxsLmxlbmd0aCAtIDFdO1xuICAgIGxldCBwMCwgcDEgPSBoICogNDtcbiAgICBsZXQgeDAsIHgxID0gcG9pbnRzWzIgKiBoXTtcbiAgICBsZXQgeTAsIHkxID0gcG9pbnRzWzIgKiBoICsgMV07XG4gICAgdmVjdG9ycy5maWxsKDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHVsbC5sZW5ndGg7ICsraSkge1xuICAgICAgaCA9IGh1bGxbaV07XG4gICAgICBwMCA9IHAxLCB4MCA9IHgxLCB5MCA9IHkxO1xuICAgICAgcDEgPSBoICogNCwgeDEgPSBwb2ludHNbMiAqIGhdLCB5MSA9IHBvaW50c1syICogaCArIDFdO1xuICAgICAgdmVjdG9yc1twMCArIDJdID0gdmVjdG9yc1twMV0gPSB5MCAtIHkxO1xuICAgICAgdmVjdG9yc1twMCArIDNdID0gdmVjdG9yc1twMSArIDFdID0geDEgLSB4MDtcbiAgICB9XG4gIH1cbiAgcmVuZGVyKGNvbnRleHQpIHtcbiAgICBjb25zdCBidWZmZXIgPSBjb250ZXh0ID09IG51bGwgPyBjb250ZXh0ID0gbmV3IFBhdGggOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qge2RlbGF1bmF5OiB7aGFsZmVkZ2VzLCBpbmVkZ2VzLCBodWxsfSwgY2lyY3VtY2VudGVycywgdmVjdG9yc30gPSB0aGlzO1xuICAgIGlmIChodWxsLmxlbmd0aCA8PSAxKSByZXR1cm4gbnVsbDtcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGhhbGZlZGdlcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGogPSBoYWxmZWRnZXNbaV07XG4gICAgICBpZiAoaiA8IGkpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgdGkgPSBNYXRoLmZsb29yKGkgLyAzKSAqIDI7XG4gICAgICBjb25zdCB0aiA9IE1hdGguZmxvb3IoaiAvIDMpICogMjtcbiAgICAgIGNvbnN0IHhpID0gY2lyY3VtY2VudGVyc1t0aV07XG4gICAgICBjb25zdCB5aSA9IGNpcmN1bWNlbnRlcnNbdGkgKyAxXTtcbiAgICAgIGNvbnN0IHhqID0gY2lyY3VtY2VudGVyc1t0al07XG4gICAgICBjb25zdCB5aiA9IGNpcmN1bWNlbnRlcnNbdGogKyAxXTtcbiAgICAgIHRoaXMuX3JlbmRlclNlZ21lbnQoeGksIHlpLCB4aiwgeWosIGNvbnRleHQpO1xuICAgIH1cbiAgICBsZXQgaDAsIGgxID0gaHVsbFtodWxsLmxlbmd0aCAtIDFdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaHVsbC5sZW5ndGg7ICsraSkge1xuICAgICAgaDAgPSBoMSwgaDEgPSBodWxsW2ldO1xuICAgICAgY29uc3QgdCA9IE1hdGguZmxvb3IoaW5lZGdlc1toMV0gLyAzKSAqIDI7XG4gICAgICBjb25zdCB4ID0gY2lyY3VtY2VudGVyc1t0XTtcbiAgICAgIGNvbnN0IHkgPSBjaXJjdW1jZW50ZXJzW3QgKyAxXTtcbiAgICAgIGNvbnN0IHYgPSBoMCAqIDQ7XG4gICAgICBjb25zdCBwID0gdGhpcy5fcHJvamVjdCh4LCB5LCB2ZWN0b3JzW3YgKyAyXSwgdmVjdG9yc1t2ICsgM10pO1xuICAgICAgaWYgKHApIHRoaXMuX3JlbmRlclNlZ21lbnQoeCwgeSwgcFswXSwgcFsxXSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLnZhbHVlKCk7XG4gIH1cbiAgcmVuZGVyQm91bmRzKGNvbnRleHQpIHtcbiAgICBjb25zdCBidWZmZXIgPSBjb250ZXh0ID09IG51bGwgPyBjb250ZXh0ID0gbmV3IFBhdGggOiB1bmRlZmluZWQ7XG4gICAgY29udGV4dC5yZWN0KHRoaXMueG1pbiwgdGhpcy55bWluLCB0aGlzLnhtYXggLSB0aGlzLnhtaW4sIHRoaXMueW1heCAtIHRoaXMueW1pbik7XG4gICAgcmV0dXJuIGJ1ZmZlciAmJiBidWZmZXIudmFsdWUoKTtcbiAgfVxuICByZW5kZXJDZWxsKGksIGNvbnRleHQpIHtcbiAgICBjb25zdCBidWZmZXIgPSBjb250ZXh0ID09IG51bGwgPyBjb250ZXh0ID0gbmV3IFBhdGggOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5fY2xpcChpKTtcbiAgICBpZiAocG9pbnRzID09PSBudWxsIHx8ICFwb2ludHMubGVuZ3RoKSByZXR1cm47XG4gICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLCBwb2ludHNbMV0pO1xuICAgIGxldCBuID0gcG9pbnRzLmxlbmd0aDtcbiAgICB3aGlsZSAocG9pbnRzWzBdID09PSBwb2ludHNbbi0yXSAmJiBwb2ludHNbMV0gPT09IHBvaW50c1tuLTFdICYmIG4gPiAxKSBuIC09IDI7XG4gICAgZm9yIChsZXQgaSA9IDI7IGkgPCBuOyBpICs9IDIpIHtcbiAgICAgIGlmIChwb2ludHNbaV0gIT09IHBvaW50c1tpLTJdIHx8IHBvaW50c1tpKzFdICE9PSBwb2ludHNbaS0xXSlcbiAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnRzW2ldLCBwb2ludHNbaSArIDFdKTtcbiAgICB9XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci52YWx1ZSgpO1xuICB9XG4gICpjZWxsUG9seWdvbnMoKSB7XG4gICAgY29uc3Qge2RlbGF1bmF5OiB7cG9pbnRzfX0gPSB0aGlzO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0gcG9pbnRzLmxlbmd0aCAvIDI7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGxQb2x5Z29uKGkpO1xuICAgICAgaWYgKGNlbGwpIGNlbGwuaW5kZXggPSBpLCB5aWVsZCBjZWxsO1xuICAgIH1cbiAgfVxuICBjZWxsUG9seWdvbihpKSB7XG4gICAgY29uc3QgcG9seWdvbiA9IG5ldyBQb2x5Z29uO1xuICAgIHRoaXMucmVuZGVyQ2VsbChpLCBwb2x5Z29uKTtcbiAgICByZXR1cm4gcG9seWdvbi52YWx1ZSgpO1xuICB9XG4gIF9yZW5kZXJTZWdtZW50KHgwLCB5MCwgeDEsIHkxLCBjb250ZXh0KSB7XG4gICAgbGV0IFM7XG4gICAgY29uc3QgYzAgPSB0aGlzLl9yZWdpb25jb2RlKHgwLCB5MCk7XG4gICAgY29uc3QgYzEgPSB0aGlzLl9yZWdpb25jb2RlKHgxLCB5MSk7XG4gICAgaWYgKGMwID09PSAwICYmIGMxID09PSAwKSB7XG4gICAgICBjb250ZXh0Lm1vdmVUbyh4MCwgeTApO1xuICAgICAgY29udGV4dC5saW5lVG8oeDEsIHkxKTtcbiAgICB9IGVsc2UgaWYgKFMgPSB0aGlzLl9jbGlwU2VnbWVudCh4MCwgeTAsIHgxLCB5MSwgYzAsIGMxKSkge1xuICAgICAgY29udGV4dC5tb3ZlVG8oU1swXSwgU1sxXSk7XG4gICAgICBjb250ZXh0LmxpbmVUbyhTWzJdLCBTWzNdKTtcbiAgICB9XG4gIH1cbiAgY29udGFpbnMoaSwgeCwgeSkge1xuICAgIGlmICgoeCA9ICt4LCB4ICE9PSB4KSB8fCAoeSA9ICt5LCB5ICE9PSB5KSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmRlbGF1bmF5Ll9zdGVwKGksIHgsIHkpID09PSBpO1xuICB9XG4gICpuZWlnaGJvcnMoaSkge1xuICAgIGNvbnN0IGNpID0gdGhpcy5fY2xpcChpKTtcbiAgICBpZiAoY2kpIGZvciAoY29uc3QgaiBvZiB0aGlzLmRlbGF1bmF5Lm5laWdoYm9ycyhpKSkge1xuICAgICAgY29uc3QgY2ogPSB0aGlzLl9jbGlwKGopO1xuICAgICAgLy8gZmluZCB0aGUgY29tbW9uIGVkZ2VcbiAgICAgIGlmIChjaikgbG9vcDogZm9yIChsZXQgYWkgPSAwLCBsaSA9IGNpLmxlbmd0aDsgYWkgPCBsaTsgYWkgKz0gMikge1xuICAgICAgICBmb3IgKGxldCBhaiA9IDAsIGxqID0gY2oubGVuZ3RoOyBhaiA8IGxqOyBhaiArPSAyKSB7XG4gICAgICAgICAgaWYgKGNpW2FpXSA9PT0gY2pbYWpdXG4gICAgICAgICAgICAgICYmIGNpW2FpICsgMV0gPT09IGNqW2FqICsgMV1cbiAgICAgICAgICAgICAgJiYgY2lbKGFpICsgMikgJSBsaV0gPT09IGNqWyhhaiArIGxqIC0gMikgJSBsal1cbiAgICAgICAgICAgICAgJiYgY2lbKGFpICsgMykgJSBsaV0gPT09IGNqWyhhaiArIGxqIC0gMSkgJSBsal0pIHtcbiAgICAgICAgICAgIHlpZWxkIGo7XG4gICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBfY2VsbChpKSB7XG4gICAgY29uc3Qge2NpcmN1bWNlbnRlcnMsIGRlbGF1bmF5OiB7aW5lZGdlcywgaGFsZmVkZ2VzLCB0cmlhbmdsZXN9fSA9IHRoaXM7XG4gICAgY29uc3QgZTAgPSBpbmVkZ2VzW2ldO1xuICAgIGlmIChlMCA9PT0gLTEpIHJldHVybiBudWxsOyAvLyBjb2luY2lkZW50IHBvaW50XG4gICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgbGV0IGUgPSBlMDtcbiAgICBkbyB7XG4gICAgICBjb25zdCB0ID0gTWF0aC5mbG9vcihlIC8gMyk7XG4gICAgICBwb2ludHMucHVzaChjaXJjdW1jZW50ZXJzW3QgKiAyXSwgY2lyY3VtY2VudGVyc1t0ICogMiArIDFdKTtcbiAgICAgIGUgPSBlICUgMyA9PT0gMiA/IGUgLSAyIDogZSArIDE7XG4gICAgICBpZiAodHJpYW5nbGVzW2VdICE9PSBpKSBicmVhazsgLy8gYmFkIHRyaWFuZ3VsYXRpb25cbiAgICAgIGUgPSBoYWxmZWRnZXNbZV07XG4gICAgfSB3aGlsZSAoZSAhPT0gZTAgJiYgZSAhPT0gLTEpO1xuICAgIHJldHVybiBwb2ludHM7XG4gIH1cbiAgX2NsaXAoaSkge1xuICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSAoMSB2YWxpZCBwb2ludDogcmV0dXJuIHRoZSBib3gpXG4gICAgaWYgKGkgPT09IDAgJiYgdGhpcy5kZWxhdW5heS5odWxsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnhtYXgsIHRoaXMueW1pbiwgdGhpcy54bWF4LCB0aGlzLnltYXgsIHRoaXMueG1pbiwgdGhpcy55bWF4LCB0aGlzLnhtaW4sIHRoaXMueW1pbl07XG4gICAgfVxuICAgIGNvbnN0IHBvaW50cyA9IHRoaXMuX2NlbGwoaSk7XG4gICAgaWYgKHBvaW50cyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qge3ZlY3RvcnM6IFZ9ID0gdGhpcztcbiAgICBjb25zdCB2ID0gaSAqIDQ7XG4gICAgcmV0dXJuIHRoaXMuX3NpbXBsaWZ5KFZbdl0gfHwgVlt2ICsgMV1cbiAgICAgICAgPyB0aGlzLl9jbGlwSW5maW5pdGUoaSwgcG9pbnRzLCBWW3ZdLCBWW3YgKyAxXSwgVlt2ICsgMl0sIFZbdiArIDNdKVxuICAgICAgICA6IHRoaXMuX2NsaXBGaW5pdGUoaSwgcG9pbnRzKSk7XG4gIH1cbiAgX2NsaXBGaW5pdGUoaSwgcG9pbnRzKSB7XG4gICAgY29uc3QgbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgbGV0IFAgPSBudWxsO1xuICAgIGxldCB4MCwgeTAsIHgxID0gcG9pbnRzW24gLSAyXSwgeTEgPSBwb2ludHNbbiAtIDFdO1xuICAgIGxldCBjMCwgYzEgPSB0aGlzLl9yZWdpb25jb2RlKHgxLCB5MSk7XG4gICAgbGV0IGUwLCBlMSA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqICs9IDIpIHtcbiAgICAgIHgwID0geDEsIHkwID0geTEsIHgxID0gcG9pbnRzW2pdLCB5MSA9IHBvaW50c1tqICsgMV07XG4gICAgICBjMCA9IGMxLCBjMSA9IHRoaXMuX3JlZ2lvbmNvZGUoeDEsIHkxKTtcbiAgICAgIGlmIChjMCA9PT0gMCAmJiBjMSA9PT0gMCkge1xuICAgICAgICBlMCA9IGUxLCBlMSA9IDA7XG4gICAgICAgIGlmIChQKSBQLnB1c2goeDEsIHkxKTtcbiAgICAgICAgZWxzZSBQID0gW3gxLCB5MV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgUywgc3gwLCBzeTAsIHN4MSwgc3kxO1xuICAgICAgICBpZiAoYzAgPT09IDApIHtcbiAgICAgICAgICBpZiAoKFMgPSB0aGlzLl9jbGlwU2VnbWVudCh4MCwgeTAsIHgxLCB5MSwgYzAsIGMxKSkgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgICAgIFtzeDAsIHN5MCwgc3gxLCBzeTFdID0gUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoKFMgPSB0aGlzLl9jbGlwU2VnbWVudCh4MSwgeTEsIHgwLCB5MCwgYzEsIGMwKSkgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgICAgIFtzeDEsIHN5MSwgc3gwLCBzeTBdID0gUztcbiAgICAgICAgICBlMCA9IGUxLCBlMSA9IHRoaXMuX2VkZ2Vjb2RlKHN4MCwgc3kwKTtcbiAgICAgICAgICBpZiAoZTAgJiYgZTEpIHRoaXMuX2VkZ2UoaSwgZTAsIGUxLCBQLCBQLmxlbmd0aCk7XG4gICAgICAgICAgaWYgKFApIFAucHVzaChzeDAsIHN5MCk7XG4gICAgICAgICAgZWxzZSBQID0gW3N4MCwgc3kwXTtcbiAgICAgICAgfVxuICAgICAgICBlMCA9IGUxLCBlMSA9IHRoaXMuX2VkZ2Vjb2RlKHN4MSwgc3kxKTtcbiAgICAgICAgaWYgKGUwICYmIGUxKSB0aGlzLl9lZGdlKGksIGUwLCBlMSwgUCwgUC5sZW5ndGgpO1xuICAgICAgICBpZiAoUCkgUC5wdXNoKHN4MSwgc3kxKTtcbiAgICAgICAgZWxzZSBQID0gW3N4MSwgc3kxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFApIHtcbiAgICAgIGUwID0gZTEsIGUxID0gdGhpcy5fZWRnZWNvZGUoUFswXSwgUFsxXSk7XG4gICAgICBpZiAoZTAgJiYgZTEpIHRoaXMuX2VkZ2UoaSwgZTAsIGUxLCBQLCBQLmxlbmd0aCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRhaW5zKGksICh0aGlzLnhtaW4gKyB0aGlzLnhtYXgpIC8gMiwgKHRoaXMueW1pbiArIHRoaXMueW1heCkgLyAyKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnhtYXgsIHRoaXMueW1pbiwgdGhpcy54bWF4LCB0aGlzLnltYXgsIHRoaXMueG1pbiwgdGhpcy55bWF4LCB0aGlzLnhtaW4sIHRoaXMueW1pbl07XG4gICAgfVxuICAgIHJldHVybiBQO1xuICB9XG4gIF9jbGlwU2VnbWVudCh4MCwgeTAsIHgxLCB5MSwgYzAsIGMxKSB7XG4gICAgLy8gZm9yIG1vcmUgcm9idXN0bmVzcywgYWx3YXlzIGNvbnNpZGVyIHRoZSBzZWdtZW50IGluIHRoZSBzYW1lIG9yZGVyXG4gICAgY29uc3QgZmxpcCA9IGMwIDwgYzE7XG4gICAgaWYgKGZsaXApIFt4MCwgeTAsIHgxLCB5MSwgYzAsIGMxXSA9IFt4MSwgeTEsIHgwLCB5MCwgYzEsIGMwXTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGMwID09PSAwICYmIGMxID09PSAwKSByZXR1cm4gZmxpcCA/IFt4MSwgeTEsIHgwLCB5MF0gOiBbeDAsIHkwLCB4MSwgeTFdO1xuICAgICAgaWYgKGMwICYgYzEpIHJldHVybiBudWxsO1xuICAgICAgbGV0IHgsIHksIGMgPSBjMCB8fCBjMTtcbiAgICAgIGlmIChjICYgMGIxMDAwKSB4ID0geDAgKyAoeDEgLSB4MCkgKiAodGhpcy55bWF4IC0geTApIC8gKHkxIC0geTApLCB5ID0gdGhpcy55bWF4O1xuICAgICAgZWxzZSBpZiAoYyAmIDBiMDEwMCkgeCA9IHgwICsgKHgxIC0geDApICogKHRoaXMueW1pbiAtIHkwKSAvICh5MSAtIHkwKSwgeSA9IHRoaXMueW1pbjtcbiAgICAgIGVsc2UgaWYgKGMgJiAwYjAwMTApIHkgPSB5MCArICh5MSAtIHkwKSAqICh0aGlzLnhtYXggLSB4MCkgLyAoeDEgLSB4MCksIHggPSB0aGlzLnhtYXg7XG4gICAgICBlbHNlIHkgPSB5MCArICh5MSAtIHkwKSAqICh0aGlzLnhtaW4gLSB4MCkgLyAoeDEgLSB4MCksIHggPSB0aGlzLnhtaW47XG4gICAgICBpZiAoYzApIHgwID0geCwgeTAgPSB5LCBjMCA9IHRoaXMuX3JlZ2lvbmNvZGUoeDAsIHkwKTtcbiAgICAgIGVsc2UgeDEgPSB4LCB5MSA9IHksIGMxID0gdGhpcy5fcmVnaW9uY29kZSh4MSwgeTEpO1xuICAgIH1cbiAgfVxuICBfY2xpcEluZmluaXRlKGksIHBvaW50cywgdngwLCB2eTAsIHZ4biwgdnluKSB7XG4gICAgbGV0IFAgPSBBcnJheS5mcm9tKHBvaW50cyksIHA7XG4gICAgaWYgKHAgPSB0aGlzLl9wcm9qZWN0KFBbMF0sIFBbMV0sIHZ4MCwgdnkwKSkgUC51bnNoaWZ0KHBbMF0sIHBbMV0pO1xuICAgIGlmIChwID0gdGhpcy5fcHJvamVjdChQW1AubGVuZ3RoIC0gMl0sIFBbUC5sZW5ndGggLSAxXSwgdnhuLCB2eW4pKSBQLnB1c2gocFswXSwgcFsxXSk7XG4gICAgaWYgKFAgPSB0aGlzLl9jbGlwRmluaXRlKGksIFApKSB7XG4gICAgICBmb3IgKGxldCBqID0gMCwgbiA9IFAubGVuZ3RoLCBjMCwgYzEgPSB0aGlzLl9lZGdlY29kZShQW24gLSAyXSwgUFtuIC0gMV0pOyBqIDwgbjsgaiArPSAyKSB7XG4gICAgICAgIGMwID0gYzEsIGMxID0gdGhpcy5fZWRnZWNvZGUoUFtqXSwgUFtqICsgMV0pO1xuICAgICAgICBpZiAoYzAgJiYgYzEpIGogPSB0aGlzLl9lZGdlKGksIGMwLCBjMSwgUCwgaiksIG4gPSBQLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGFpbnMoaSwgKHRoaXMueG1pbiArIHRoaXMueG1heCkgLyAyLCAodGhpcy55bWluICsgdGhpcy55bWF4KSAvIDIpKSB7XG4gICAgICBQID0gW3RoaXMueG1pbiwgdGhpcy55bWluLCB0aGlzLnhtYXgsIHRoaXMueW1pbiwgdGhpcy54bWF4LCB0aGlzLnltYXgsIHRoaXMueG1pbiwgdGhpcy55bWF4XTtcbiAgICB9XG4gICAgcmV0dXJuIFA7XG4gIH1cbiAgX2VkZ2UoaSwgZTAsIGUxLCBQLCBqKSB7XG4gICAgd2hpbGUgKGUwICE9PSBlMSkge1xuICAgICAgbGV0IHgsIHk7XG4gICAgICBzd2l0Y2ggKGUwKSB7XG4gICAgICAgIGNhc2UgMGIwMTAxOiBlMCA9IDBiMDEwMDsgY29udGludWU7IC8vIHRvcC1sZWZ0XG4gICAgICAgIGNhc2UgMGIwMTAwOiBlMCA9IDBiMDExMCwgeCA9IHRoaXMueG1heCwgeSA9IHRoaXMueW1pbjsgYnJlYWs7IC8vIHRvcFxuICAgICAgICBjYXNlIDBiMDExMDogZTAgPSAwYjAwMTA7IGNvbnRpbnVlOyAvLyB0b3AtcmlnaHRcbiAgICAgICAgY2FzZSAwYjAwMTA6IGUwID0gMGIxMDEwLCB4ID0gdGhpcy54bWF4LCB5ID0gdGhpcy55bWF4OyBicmVhazsgLy8gcmlnaHRcbiAgICAgICAgY2FzZSAwYjEwMTA6IGUwID0gMGIxMDAwOyBjb250aW51ZTsgLy8gYm90dG9tLXJpZ2h0XG4gICAgICAgIGNhc2UgMGIxMDAwOiBlMCA9IDBiMTAwMSwgeCA9IHRoaXMueG1pbiwgeSA9IHRoaXMueW1heDsgYnJlYWs7IC8vIGJvdHRvbVxuICAgICAgICBjYXNlIDBiMTAwMTogZTAgPSAwYjAwMDE7IGNvbnRpbnVlOyAvLyBib3R0b20tbGVmdFxuICAgICAgICBjYXNlIDBiMDAwMTogZTAgPSAwYjAxMDEsIHggPSB0aGlzLnhtaW4sIHkgPSB0aGlzLnltaW47IGJyZWFrOyAvLyBsZWZ0XG4gICAgICB9XG4gICAgICAvLyBOb3RlOiB0aGlzIGltcGxpY2l0bHkgY2hlY2tzIGZvciBvdXQgb2YgYm91bmRzOiBpZiBQW2pdIG9yIFBbaisxXSBhcmVcbiAgICAgIC8vIHVuZGVmaW5lZCwgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB3aWxsIGJlIGV4ZWN1dGVkLlxuICAgICAgaWYgKChQW2pdICE9PSB4IHx8IFBbaiArIDFdICE9PSB5KSAmJiB0aGlzLmNvbnRhaW5zKGksIHgsIHkpKSB7XG4gICAgICAgIFAuc3BsaWNlKGosIDAsIHgsIHkpLCBqICs9IDI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBqO1xuICB9XG4gIF9wcm9qZWN0KHgwLCB5MCwgdngsIHZ5KSB7XG4gICAgbGV0IHQgPSBJbmZpbml0eSwgYywgeCwgeTtcbiAgICBpZiAodnkgPCAwKSB7IC8vIHRvcFxuICAgICAgaWYgKHkwIDw9IHRoaXMueW1pbikgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoKGMgPSAodGhpcy55bWluIC0geTApIC8gdnkpIDwgdCkgeSA9IHRoaXMueW1pbiwgeCA9IHgwICsgKHQgPSBjKSAqIHZ4O1xuICAgIH0gZWxzZSBpZiAodnkgPiAwKSB7IC8vIGJvdHRvbVxuICAgICAgaWYgKHkwID49IHRoaXMueW1heCkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoKGMgPSAodGhpcy55bWF4IC0geTApIC8gdnkpIDwgdCkgeSA9IHRoaXMueW1heCwgeCA9IHgwICsgKHQgPSBjKSAqIHZ4O1xuICAgIH1cbiAgICBpZiAodnggPiAwKSB7IC8vIHJpZ2h0XG4gICAgICBpZiAoeDAgPj0gdGhpcy54bWF4KSByZXR1cm4gbnVsbDtcbiAgICAgIGlmICgoYyA9ICh0aGlzLnhtYXggLSB4MCkgLyB2eCkgPCB0KSB4ID0gdGhpcy54bWF4LCB5ID0geTAgKyAodCA9IGMpICogdnk7XG4gICAgfSBlbHNlIGlmICh2eCA8IDApIHsgLy8gbGVmdFxuICAgICAgaWYgKHgwIDw9IHRoaXMueG1pbikgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoKGMgPSAodGhpcy54bWluIC0geDApIC8gdngpIDwgdCkgeCA9IHRoaXMueG1pbiwgeSA9IHkwICsgKHQgPSBjKSAqIHZ5O1xuICAgIH1cbiAgICByZXR1cm4gW3gsIHldO1xuICB9XG4gIF9lZGdlY29kZSh4LCB5KSB7XG4gICAgcmV0dXJuICh4ID09PSB0aGlzLnhtaW4gPyAwYjAwMDFcbiAgICAgICAgOiB4ID09PSB0aGlzLnhtYXggPyAwYjAwMTAgOiAwYjAwMDApXG4gICAgICAgIHwgKHkgPT09IHRoaXMueW1pbiA/IDBiMDEwMFxuICAgICAgICA6IHkgPT09IHRoaXMueW1heCA/IDBiMTAwMCA6IDBiMDAwMCk7XG4gIH1cbiAgX3JlZ2lvbmNvZGUoeCwgeSkge1xuICAgIHJldHVybiAoeCA8IHRoaXMueG1pbiA/IDBiMDAwMVxuICAgICAgICA6IHggPiB0aGlzLnhtYXggPyAwYjAwMTAgOiAwYjAwMDApXG4gICAgICAgIHwgKHkgPCB0aGlzLnltaW4gPyAwYjAxMDBcbiAgICAgICAgOiB5ID4gdGhpcy55bWF4ID8gMGIxMDAwIDogMGIwMDAwKTtcbiAgfVxuICBfc2ltcGxpZnkoUCkge1xuICAgIGlmIChQICYmIFAubGVuZ3RoID4gNCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBQLmxlbmd0aDsgaSs9IDIpIHtcbiAgICAgICAgY29uc3QgaiA9IChpICsgMikgJSBQLmxlbmd0aCwgayA9IChpICsgNCkgJSBQLmxlbmd0aDtcbiAgICAgICAgaWYgKFBbaV0gPT09IFBbal0gJiYgUFtqXSA9PT0gUFtrXSB8fCBQW2kgKyAxXSA9PT0gUFtqICsgMV0gJiYgUFtqICsgMV0gPT09IFBbayArIDFdKSB7XG4gICAgICAgICAgUC5zcGxpY2UoaiwgMiksIGkgLT0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFQLmxlbmd0aCkgUCA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBQO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-delaunay/src/voronoi.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dispatch/src/dispatch.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-dispatch/src/dispatch.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dispatch);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRpc3BhdGNoL3NyYy9kaXNwYXRjaC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsWUFBWTs7QUFFWjtBQUNBLDhDQUE4QyxLQUFLLE9BQU87QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxtRkFBbUYsT0FBTztBQUMxRjtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZELEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0RBQW9ELE9BQU87QUFDM0Q7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMsT0FBTztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDRCQUE0QjtBQUMvRDtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2Rpc3BhdGNoLmpzP2FiMzQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIG5vb3AgPSB7dmFsdWU6ICgpID0+IHt9fTtcblxuZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aCwgXyA9IHt9LCB0OyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEodCA9IGFyZ3VtZW50c1tpXSArIFwiXCIpIHx8ICh0IGluIF8pIHx8IC9bXFxzLl0vLnRlc3QodCkpIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgdHlwZTogXCIgKyB0KTtcbiAgICBfW3RdID0gW107XG4gIH1cbiAgcmV0dXJuIG5ldyBEaXNwYXRjaChfKTtcbn1cblxuZnVuY3Rpb24gRGlzcGF0Y2goXykge1xuICB0aGlzLl8gPSBfO1xufVxuXG5mdW5jdGlvbiBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZXMsIHR5cGVzKSB7XG4gIHJldHVybiB0eXBlbmFtZXMudHJpbSgpLnNwbGl0KC9efFxccysvKS5tYXAoZnVuY3Rpb24odCkge1xuICAgIHZhciBuYW1lID0gXCJcIiwgaSA9IHQuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKGkgPj0gMCkgbmFtZSA9IHQuc2xpY2UoaSArIDEpLCB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICBpZiAodCAmJiAhdHlwZXMuaGFzT3duUHJvcGVydHkodCkpIHRocm93IG5ldyBFcnJvcihcInVua25vd24gdHlwZTogXCIgKyB0KTtcbiAgICByZXR1cm4ge3R5cGU6IHQsIG5hbWU6IG5hbWV9O1xuICB9KTtcbn1cblxuRGlzcGF0Y2gucHJvdG90eXBlID0gZGlzcGF0Y2gucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRGlzcGF0Y2gsXG4gIG9uOiBmdW5jdGlvbih0eXBlbmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgXyA9IHRoaXMuXyxcbiAgICAgICAgVCA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiwgXyksXG4gICAgICAgIHQsXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IFQubGVuZ3RoO1xuXG4gICAgLy8gSWYgbm8gY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmV0dXJuIHRoZSBjYWxsYmFjayBvZiB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSAmJiAodCA9IGdldChfW3RdLCB0eXBlbmFtZS5uYW1lKSkpIHJldHVybiB0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIGEgdHlwZSB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGNhbGxiYWNrIGZvciB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS5cbiAgICAvLyBPdGhlcndpc2UsIGlmIGEgbnVsbCBjYWxsYmFjayB3YXMgc3BlY2lmaWVkLCByZW1vdmUgY2FsbGJhY2tzIG9mIHRoZSBnaXZlbiBuYW1lLlxuICAgIGlmIChjYWxsYmFjayAhPSBudWxsICYmIHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrOiBcIiArIGNhbGxiYWNrKTtcbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgaWYgKHQgPSAodHlwZW5hbWUgPSBUW2ldKS50eXBlKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIGNhbGxiYWNrKTtcbiAgICAgIGVsc2UgaWYgKGNhbGxiYWNrID09IG51bGwpIGZvciAodCBpbiBfKSBfW3RdID0gc2V0KF9bdF0sIHR5cGVuYW1lLm5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBjb3B5OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY29weSA9IHt9LCBfID0gdGhpcy5fO1xuICAgIGZvciAodmFyIHQgaW4gXykgY29weVt0XSA9IF9bdF0uc2xpY2UoKTtcbiAgICByZXR1cm4gbmV3IERpc3BhdGNoKGNvcHkpO1xuICB9LFxuICBjYWxsOiBmdW5jdGlvbih0eXBlLCB0aGF0KSB7XG4gICAgaWYgKChuID0gYXJndW1lbnRzLmxlbmd0aCAtIDIpID4gMCkgZm9yICh2YXIgYXJncyA9IG5ldyBBcnJheShuKSwgaSA9IDAsIG4sIHQ7IGkgPCBuOyArK2kpIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh0ID0gdGhpcy5fW3R5cGVdLCBpID0gMCwgbiA9IHQubGVuZ3RoOyBpIDwgbjsgKytpKSB0W2ldLnZhbHVlLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9LFxuICBhcHBseTogZnVuY3Rpb24odHlwZSwgdGhhdCwgYXJncykge1xuICAgIGlmICghdGhpcy5fLmhhc093blByb3BlcnR5KHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdHlwZSk7XG4gICAgZm9yICh2YXIgdCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZ2V0KHR5cGUsIG5hbWUpIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aCwgYzsgaSA8IG47ICsraSkge1xuICAgIGlmICgoYyA9IHR5cGVbaV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBjLnZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzZXQodHlwZSwgbmFtZSwgY2FsbGJhY2spIHtcbiAgZm9yICh2YXIgaSA9IDAsIG4gPSB0eXBlLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGlmICh0eXBlW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHR5cGVbaV0gPSBub29wLCB0eXBlID0gdHlwZS5zbGljZSgwLCBpKS5jb25jYXQodHlwZS5zbGljZShpICsgMSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChjYWxsYmFjayAhPSBudWxsKSB0eXBlLnB1c2goe25hbWU6IG5hbWUsIHZhbHVlOiBjYWxsYmFja30pO1xuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZGlzcGF0Y2g7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dispatch/src/dispatch.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dispatch/src/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-dispatch/src/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dispatch\": () => (/* reexport safe */ _dispatch_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dispatch.js */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRpc3BhdGNoL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZGlzcGF0Y2gvc3JjL2luZGV4LmpzPzY1ODUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGRpc3BhdGNofSBmcm9tIFwiLi9kaXNwYXRjaC5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dispatch/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/constant.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-drag/src/constant.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2NvbnN0YW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2NvbnN0YW50LmpzPzI1MTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeCA9PiAoKSA9PiB4O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/drag.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-drag/src/drag.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/select.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/pointer.js\");\n/* harmony import */ var _nodrag_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nodrag.js */ \"../../../node_modules/d3-drag/src/nodrag.js\");\n/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./noevent.js */ \"../../../node_modules/d3-drag/src/noevent.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-drag/src/constant.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./event.js */ \"../../../node_modules/d3-drag/src/event.js\");\n\n\n\n\n\n\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = (0,d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n (0,d3_selection__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(event.view)\n .on(\"mousemove.drag\", mousemoved, _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassivecapture);\n (0,_nodrag_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(event.view);\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__.nopropagation)(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n (0,d3_selection__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(event.view).on(\"mousemove.drag mouseup.drag\", null);\n (0,_nodrag_js__WEBPACK_IMPORTED_MODULE_3__.yesdrag)(event.view, mousemoving);\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__.nopropagation)(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_1__.nopropagation)(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new _event_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new _event_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"](type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2RyYWcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBcUM7QUFDUTtBQUNEO0FBQ3VDO0FBQzlDO0FBQ0Y7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQix3QkFBd0I7QUFDOUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLGtCQUFrQix1REFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxtREFBVTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksd0RBQU07QUFDVix3Q0FBd0MsMERBQWlCO0FBQ3pELHNDQUFzQywwREFBaUI7QUFDdkQsSUFBSSxzREFBTTtBQUNWLElBQUksMERBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksdURBQU87QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLHdEQUFNO0FBQ1YsSUFBSSxtREFBTztBQUNYLElBQUksdURBQU87QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQSxRQUFRLDBEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBLFFBQVEsdURBQU87QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEMscUJBQXFCLFFBQVE7QUFDdkUsZ0JBQWdCLE9BQU87QUFDdkI7QUFDQSxRQUFRLDBEQUFhO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLHdEQUFPO0FBQ25COztBQUVBLG9DQUFvQyxpREFBUztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFLDJEQUEyRDtBQUMzRCx5QkFBeUIsd0RBQU8seUNBQXlDO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxpREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNFQUFzRSx3REFBUTtBQUM5RTs7QUFFQTtBQUNBLHlFQUF5RSx3REFBUTtBQUNqRjs7QUFFQTtBQUNBLHVFQUF1RSx3REFBUTtBQUMvRTs7QUFFQTtBQUNBLHlFQUF5RSx3REFBUTtBQUNqRjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZHJhZy9zcmMvZHJhZy5qcz9kNzA0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHtzZWxlY3QsIHBvaW50ZXJ9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBub2RyYWcsIHt5ZXNkcmFnfSBmcm9tIFwiLi9ub2RyYWcuanNcIjtcbmltcG9ydCBub2V2ZW50LCB7bm9ucGFzc2l2ZSwgbm9ucGFzc2l2ZWNhcHR1cmUsIG5vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnQuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IERyYWdFdmVudCBmcm9tIFwiLi9ldmVudC5qc1wiO1xuXG4vLyBJZ25vcmUgcmlnaHQtY2xpY2ssIHNpbmNlIHRoYXQgc2hvdWxkIG9wZW4gdGhlIGNvbnRleHQgbWVudS5cbmZ1bmN0aW9uIGRlZmF1bHRGaWx0ZXIoZXZlbnQpIHtcbiAgcmV0dXJuICFldmVudC5jdHJsS2V5ICYmICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRDb250YWluZXIoKSB7XG4gIHJldHVybiB0aGlzLnBhcmVudE5vZGU7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRTdWJqZWN0KGV2ZW50LCBkKSB7XG4gIHJldHVybiBkID09IG51bGwgPyB7eDogZXZlbnQueCwgeTogZXZlbnQueX0gOiBkO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VG91Y2hhYmxlKCkge1xuICByZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzIHx8IChcIm9udG91Y2hzdGFydFwiIGluIHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGZpbHRlciA9IGRlZmF1bHRGaWx0ZXIsXG4gICAgICBjb250YWluZXIgPSBkZWZhdWx0Q29udGFpbmVyLFxuICAgICAgc3ViamVjdCA9IGRlZmF1bHRTdWJqZWN0LFxuICAgICAgdG91Y2hhYmxlID0gZGVmYXVsdFRvdWNoYWJsZSxcbiAgICAgIGdlc3R1cmVzID0ge30sXG4gICAgICBsaXN0ZW5lcnMgPSBkaXNwYXRjaChcInN0YXJ0XCIsIFwiZHJhZ1wiLCBcImVuZFwiKSxcbiAgICAgIGFjdGl2ZSA9IDAsXG4gICAgICBtb3VzZWRvd254LFxuICAgICAgbW91c2Vkb3dueSxcbiAgICAgIG1vdXNlbW92aW5nLFxuICAgICAgdG91Y2hlbmRpbmcsXG4gICAgICBjbGlja0Rpc3RhbmNlMiA9IDA7XG5cbiAgZnVuY3Rpb24gZHJhZyhzZWxlY3Rpb24pIHtcbiAgICBzZWxlY3Rpb25cbiAgICAgICAgLm9uKFwibW91c2Vkb3duLmRyYWdcIiwgbW91c2Vkb3duZWQpXG4gICAgICAuZmlsdGVyKHRvdWNoYWJsZSlcbiAgICAgICAgLm9uKFwidG91Y2hzdGFydC5kcmFnXCIsIHRvdWNoc3RhcnRlZClcbiAgICAgICAgLm9uKFwidG91Y2htb3ZlLmRyYWdcIiwgdG91Y2htb3ZlZCwgbm9ucGFzc2l2ZSlcbiAgICAgICAgLm9uKFwidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnXCIsIHRvdWNoZW5kZWQpXG4gICAgICAgIC5zdHlsZShcInRvdWNoLWFjdGlvblwiLCBcIm5vbmVcIilcbiAgICAgICAgLnN0eWxlKFwiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yXCIsIFwicmdiYSgwLDAsMCwwKVwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdXNlZG93bmVkKGV2ZW50LCBkKSB7XG4gICAgaWYgKHRvdWNoZW5kaW5nIHx8ICFmaWx0ZXIuY2FsbCh0aGlzLCBldmVudCwgZCkpIHJldHVybjtcbiAgICB2YXIgZ2VzdHVyZSA9IGJlZm9yZXN0YXJ0KHRoaXMsIGNvbnRhaW5lci5jYWxsKHRoaXMsIGV2ZW50LCBkKSwgZXZlbnQsIGQsIFwibW91c2VcIik7XG4gICAgaWYgKCFnZXN0dXJlKSByZXR1cm47XG4gICAgc2VsZWN0KGV2ZW50LnZpZXcpXG4gICAgICAub24oXCJtb3VzZW1vdmUuZHJhZ1wiLCBtb3VzZW1vdmVkLCBub25wYXNzaXZlY2FwdHVyZSlcbiAgICAgIC5vbihcIm1vdXNldXAuZHJhZ1wiLCBtb3VzZXVwcGVkLCBub25wYXNzaXZlY2FwdHVyZSk7XG4gICAgbm9kcmFnKGV2ZW50LnZpZXcpO1xuICAgIG5vcHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIG1vdXNlbW92aW5nID0gZmFsc2U7XG4gICAgbW91c2Vkb3dueCA9IGV2ZW50LmNsaWVudFg7XG4gICAgbW91c2Vkb3dueSA9IGV2ZW50LmNsaWVudFk7XG4gICAgZ2VzdHVyZShcInN0YXJ0XCIsIGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdXNlbW92ZWQoZXZlbnQpIHtcbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBpZiAoIW1vdXNlbW92aW5nKSB7XG4gICAgICB2YXIgZHggPSBldmVudC5jbGllbnRYIC0gbW91c2Vkb3dueCwgZHkgPSBldmVudC5jbGllbnRZIC0gbW91c2Vkb3dueTtcbiAgICAgIG1vdXNlbW92aW5nID0gZHggKiBkeCArIGR5ICogZHkgPiBjbGlja0Rpc3RhbmNlMjtcbiAgICB9XG4gICAgZ2VzdHVyZXMubW91c2UoXCJkcmFnXCIsIGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1vdXNldXBwZWQoZXZlbnQpIHtcbiAgICBzZWxlY3QoZXZlbnQudmlldykub24oXCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWdcIiwgbnVsbCk7XG4gICAgeWVzZHJhZyhldmVudC52aWV3LCBtb3VzZW1vdmluZyk7XG4gICAgbm9ldmVudChldmVudCk7XG4gICAgZ2VzdHVyZXMubW91c2UoXCJlbmRcIiwgZXZlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2hzdGFydGVkKGV2ZW50LCBkKSB7XG4gICAgaWYgKCFmaWx0ZXIuY2FsbCh0aGlzLCBldmVudCwgZCkpIHJldHVybjtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBjID0gY29udGFpbmVyLmNhbGwodGhpcywgZXZlbnQsIGQpLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsIGksIGdlc3R1cmU7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoZ2VzdHVyZSA9IGJlZm9yZXN0YXJ0KHRoaXMsIGMsIGV2ZW50LCBkLCB0b3VjaGVzW2ldLmlkZW50aWZpZXIsIHRvdWNoZXNbaV0pKSB7XG4gICAgICAgIG5vcHJvcGFnYXRpb24oZXZlbnQpO1xuICAgICAgICBnZXN0dXJlKFwic3RhcnRcIiwgZXZlbnQsIHRvdWNoZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNobW92ZWQoZXZlbnQpIHtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzLFxuICAgICAgICBuID0gdG91Y2hlcy5sZW5ndGgsIGksIGdlc3R1cmU7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoZ2VzdHVyZSA9IGdlc3R1cmVzW3RvdWNoZXNbaV0uaWRlbnRpZmllcl0pIHtcbiAgICAgICAgbm9ldmVudChldmVudCk7XG4gICAgICAgIGdlc3R1cmUoXCJkcmFnXCIsIGV2ZW50LCB0b3VjaGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaGVuZGVkKGV2ZW50KSB7XG4gICAgdmFyIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCBnZXN0dXJlO1xuXG4gICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCA1MDApOyAvLyBHaG9zdCBjbGlja3MgYXJlIGRlbGF5ZWQhXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKGdlc3R1cmUgPSBnZXN0dXJlc1t0b3VjaGVzW2ldLmlkZW50aWZpZXJdKSB7XG4gICAgICAgIG5vcHJvcGFnYXRpb24oZXZlbnQpO1xuICAgICAgICBnZXN0dXJlKFwiZW5kXCIsIGV2ZW50LCB0b3VjaGVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBiZWZvcmVzdGFydCh0aGF0LCBjb250YWluZXIsIGV2ZW50LCBkLCBpZGVudGlmaWVyLCB0b3VjaCkge1xuICAgIHZhciBkaXNwYXRjaCA9IGxpc3RlbmVycy5jb3B5KCksXG4gICAgICAgIHAgPSBwb2ludGVyKHRvdWNoIHx8IGV2ZW50LCBjb250YWluZXIpLCBkeCwgZHksXG4gICAgICAgIHM7XG5cbiAgICBpZiAoKHMgPSBzdWJqZWN0LmNhbGwodGhhdCwgbmV3IERyYWdFdmVudChcImJlZm9yZXN0YXJ0XCIsIHtcbiAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICB0YXJnZXQ6IGRyYWcsXG4gICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgIGFjdGl2ZSxcbiAgICAgICAgeDogcFswXSxcbiAgICAgICAgeTogcFsxXSxcbiAgICAgICAgZHg6IDAsXG4gICAgICAgIGR5OiAwLFxuICAgICAgICBkaXNwYXRjaFxuICAgICAgfSksIGQpKSA9PSBudWxsKSByZXR1cm47XG5cbiAgICBkeCA9IHMueCAtIHBbMF0gfHwgMDtcbiAgICBkeSA9IHMueSAtIHBbMV0gfHwgMDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBnZXN0dXJlKHR5cGUsIGV2ZW50LCB0b3VjaCkge1xuICAgICAgdmFyIHAwID0gcCwgbjtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwic3RhcnRcIjogZ2VzdHVyZXNbaWRlbnRpZmllcl0gPSBnZXN0dXJlLCBuID0gYWN0aXZlKys7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiZW5kXCI6IGRlbGV0ZSBnZXN0dXJlc1tpZGVudGlmaWVyXSwgLS1hY3RpdmU7IC8vIGZhbGxzIHRocm91Z2hcbiAgICAgICAgY2FzZSBcImRyYWdcIjogcCA9IHBvaW50ZXIodG91Y2ggfHwgZXZlbnQsIGNvbnRhaW5lciksIG4gPSBhY3RpdmU7IGJyZWFrO1xuICAgICAgfVxuICAgICAgZGlzcGF0Y2guY2FsbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhhdCxcbiAgICAgICAgbmV3IERyYWdFdmVudCh0eXBlLCB7XG4gICAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHN1YmplY3Q6IHMsXG4gICAgICAgICAgdGFyZ2V0OiBkcmFnLFxuICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgYWN0aXZlOiBuLFxuICAgICAgICAgIHg6IHBbMF0gKyBkeCxcbiAgICAgICAgICB5OiBwWzFdICsgZHksXG4gICAgICAgICAgZHg6IHBbMF0gLSBwMFswXSxcbiAgICAgICAgICBkeTogcFsxXSAtIHAwWzFdLFxuICAgICAgICAgIGRpc3BhdGNoXG4gICAgICAgIH0pLFxuICAgICAgICBkXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICBkcmFnLmZpbHRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmaWx0ZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGRyYWcpIDogZmlsdGVyO1xuICB9O1xuXG4gIGRyYWcuY29udGFpbmVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvbnRhaW5lciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoXyksIGRyYWcpIDogY29udGFpbmVyO1xuICB9O1xuXG4gIGRyYWcuc3ViamVjdCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdWJqZWN0ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgZHJhZykgOiBzdWJqZWN0O1xuICB9O1xuXG4gIGRyYWcudG91Y2hhYmxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRvdWNoYWJsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgZHJhZykgOiB0b3VjaGFibGU7XG4gIH07XG5cbiAgZHJhZy5vbiA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZSA9IGxpc3RlbmVycy5vbi5hcHBseShsaXN0ZW5lcnMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSBsaXN0ZW5lcnMgPyBkcmFnIDogdmFsdWU7XG4gIH07XG5cbiAgZHJhZy5jbGlja0Rpc3RhbmNlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNsaWNrRGlzdGFuY2UyID0gKF8gPSArXykgKiBfLCBkcmFnKSA6IE1hdGguc3FydChjbGlja0Rpc3RhbmNlMik7XG4gIH07XG5cbiAgcmV0dXJuIGRyYWc7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/drag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/event.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-drag/src/event.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DragEvent)\n/* harmony export */ });\nfunction DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2V2ZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsV0FBVyxrREFBa0Q7QUFDN0Qsa0JBQWtCLHlEQUF5RDtBQUMzRSxjQUFjLHFEQUFxRDtBQUNuRSxhQUFhLG9EQUFvRDtBQUNqRSxpQkFBaUIsd0RBQXdEO0FBQ3pFLGFBQWEsb0RBQW9EO0FBQ2pFLFFBQVEsK0NBQStDO0FBQ3ZELFFBQVEsK0NBQStDO0FBQ3ZELFNBQVMsZ0RBQWdEO0FBQ3pELFNBQVMsZ0RBQWdEO0FBQ3pELFFBQVE7QUFDUixHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2V2ZW50LmpzPzE1NmYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHJhZ0V2ZW50KHR5cGUsIHtcbiAgc291cmNlRXZlbnQsXG4gIHN1YmplY3QsXG4gIHRhcmdldCxcbiAgaWRlbnRpZmllcixcbiAgYWN0aXZlLFxuICB4LCB5LCBkeCwgZHksXG4gIGRpc3BhdGNoXG59KSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcbiAgICB0eXBlOiB7dmFsdWU6IHR5cGUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc291cmNlRXZlbnQ6IHt2YWx1ZTogc291cmNlRXZlbnQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgc3ViamVjdDoge3ZhbHVlOiBzdWJqZWN0LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHRhcmdldDoge3ZhbHVlOiB0YXJnZXQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgaWRlbnRpZmllcjoge3ZhbHVlOiBpZGVudGlmaWVyLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIGFjdGl2ZToge3ZhbHVlOiBhY3RpdmUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgeDoge3ZhbHVlOiB4LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHk6IHt2YWx1ZTogeSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBkeDoge3ZhbHVlOiBkeCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBkeToge3ZhbHVlOiBkeSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBfOiB7dmFsdWU6IGRpc3BhdGNofVxuICB9KTtcbn1cblxuRHJhZ0V2ZW50LnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgdmFsdWUgPSB0aGlzLl8ub24uYXBwbHkodGhpcy5fLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdmFsdWUgPT09IHRoaXMuXyA/IHRoaXMgOiB2YWx1ZTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/event.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-drag/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"drag\": () => (/* reexport safe */ _drag_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"dragDisable\": () => (/* reexport safe */ _nodrag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"dragEnable\": () => (/* reexport safe */ _nodrag_js__WEBPACK_IMPORTED_MODULE_1__.yesdrag)\n/* harmony export */ });\n/* harmony import */ var _drag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./drag.js */ \"../../../node_modules/d3-drag/src/drag.js\");\n/* harmony import */ var _nodrag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nodrag.js */ \"../../../node_modules/d3-drag/src/nodrag.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTBDO0FBQ2dDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9pbmRleC5qcz9iNDk5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBkcmFnfSBmcm9tIFwiLi9kcmFnLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZHJhZ0Rpc2FibGUsIHllc2RyYWcgYXMgZHJhZ0VuYWJsZX0gZnJvbSBcIi4vbm9kcmFnLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/nodrag.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-drag/src/nodrag.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"yesdrag\": () => (/* binding */ yesdrag)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/select.js\");\n/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./noevent.js */ \"../../../node_modules/d3-drag/src/noevent.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(view) {\n var root = view.document.documentElement,\n selection = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(view).on(\"dragstart.drag\", _noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", _noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nfunction yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", _noevent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _noevent_js__WEBPACK_IMPORTED_MODULE_1__.nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZHJhZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW9DO0FBQ29COztBQUV4RCw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLGtCQUFrQix3REFBTSw0QkFBNEIsbURBQU8sRUFBRSwwREFBaUI7QUFDOUU7QUFDQSxxQ0FBcUMsbURBQU8sRUFBRSwwREFBaUI7QUFDL0QsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxrQkFBa0Isd0RBQU07QUFDeEI7QUFDQSwrQkFBK0IsbURBQU8sRUFBRSwwREFBaUI7QUFDekQsNEJBQTRCLG1DQUFtQztBQUMvRDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZHJhZy5qcz85ZmFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgbm9ldmVudCwge25vbnBhc3NpdmVjYXB0dXJlfSBmcm9tIFwiLi9ub2V2ZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZpZXcpIHtcbiAgdmFyIHJvb3QgPSB2aWV3LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdCh2aWV3KS5vbihcImRyYWdzdGFydC5kcmFnXCIsIG5vZXZlbnQsIG5vbnBhc3NpdmVjYXB0dXJlKTtcbiAgaWYgKFwib25zZWxlY3RzdGFydFwiIGluIHJvb3QpIHtcbiAgICBzZWxlY3Rpb24ub24oXCJzZWxlY3RzdGFydC5kcmFnXCIsIG5vZXZlbnQsIG5vbnBhc3NpdmVjYXB0dXJlKTtcbiAgfSBlbHNlIHtcbiAgICByb290Ll9fbm9zZWxlY3QgPSByb290LnN0eWxlLk1velVzZXJTZWxlY3Q7XG4gICAgcm9vdC5zdHlsZS5Nb3pVc2VyU2VsZWN0ID0gXCJub25lXCI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHllc2RyYWcodmlldywgbm9jbGljaykge1xuICB2YXIgcm9vdCA9IHZpZXcuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgc2VsZWN0aW9uID0gc2VsZWN0KHZpZXcpLm9uKFwiZHJhZ3N0YXJ0LmRyYWdcIiwgbnVsbCk7XG4gIGlmIChub2NsaWNrKSB7XG4gICAgc2VsZWN0aW9uLm9uKFwiY2xpY2suZHJhZ1wiLCBub2V2ZW50LCBub25wYXNzaXZlY2FwdHVyZSk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZWN0aW9uLm9uKFwiY2xpY2suZHJhZ1wiLCBudWxsKTsgfSwgMCk7XG4gIH1cbiAgaWYgKFwib25zZWxlY3RzdGFydFwiIGluIHJvb3QpIHtcbiAgICBzZWxlY3Rpb24ub24oXCJzZWxlY3RzdGFydC5kcmFnXCIsIG51bGwpO1xuICB9IGVsc2Uge1xuICAgIHJvb3Quc3R5bGUuTW96VXNlclNlbGVjdCA9IHJvb3QuX19ub3NlbGVjdDtcbiAgICBkZWxldGUgcm9vdC5fX25vc2VsZWN0O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/nodrag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-drag/src/noevent.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-drag/src/noevent.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"nonpassive\": () => (/* binding */ nonpassive),\n/* harmony export */ \"nonpassivecapture\": () => (/* binding */ nonpassivecapture),\n/* harmony export */ \"nopropagation\": () => (/* binding */ nopropagation)\n/* harmony export */ });\n// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nconst nonpassive = {passive: false};\nconst nonpassivecapture = {capture: true, passive: false};\n\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRyYWcvc3JjL25vZXZlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDTyxvQkFBb0I7QUFDcEIsMkJBQTJCOztBQUUzQjtBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kcmFnL3NyYy9ub2V2ZW50LmpzPzAzMzIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2UgYXJlIHR5cGljYWxseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggbm9ldmVudCB0byBlbnN1cmUgdGhhdCB3ZSBjYW5cbi8vIHByZXZlbnREZWZhdWx0IG9uIHRoZSBldmVudC5cbmV4cG9ydCBjb25zdCBub25wYXNzaXZlID0ge3Bhc3NpdmU6IGZhbHNlfTtcbmV4cG9ydCBjb25zdCBub25wYXNzaXZlY2FwdHVyZSA9IHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX07XG5cbmV4cG9ydCBmdW5jdGlvbiBub3Byb3BhZ2F0aW9uKGV2ZW50KSB7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-drag/src/noevent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dsv/src/autoType.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-dsv/src/autoType.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ autoType)\n/* harmony export */ });\nfunction autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvYXV0b1R5cGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRTtBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvYXV0b1R5cGUuanM/NzFmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRvVHlwZShvYmplY3QpIHtcbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldLnRyaW0oKSwgbnVtYmVyLCBtO1xuICAgIGlmICghdmFsdWUpIHZhbHVlID0gbnVsbDtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHZhbHVlID0gdHJ1ZTtcbiAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB2YWx1ZSA9IGZhbHNlO1xuICAgIGVsc2UgaWYgKHZhbHVlID09PSBcIk5hTlwiKSB2YWx1ZSA9IE5hTjtcbiAgICBlbHNlIGlmICghaXNOYU4obnVtYmVyID0gK3ZhbHVlKSkgdmFsdWUgPSBudW1iZXI7XG4gICAgZWxzZSBpZiAobSA9IHZhbHVlLm1hdGNoKC9eKFstK11cXGR7Mn0pP1xcZHs0fSgtXFxkezJ9KC1cXGR7Mn0pPyk/KFRcXGR7Mn06XFxkezJ9KDpcXGR7Mn0oXFwuXFxkezN9KT8pPyhafFstK11cXGR7Mn06XFxkezJ9KT8pPyQvKSkge1xuICAgICAgaWYgKGZpeHR6ICYmICEhbVs0XSAmJiAhbVs3XSkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8tL2csIFwiL1wiKS5yZXBsYWNlKC9ULywgXCIgXCIpO1xuICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udGludWU7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtZHN2L2lzc3Vlcy80NVxuY29uc3QgZml4dHogPSBuZXcgRGF0ZShcIjIwMTktMDEtMDFUMDA6MDBcIikuZ2V0SG91cnMoKSB8fCBuZXcgRGF0ZShcIjIwMTktMDctMDFUMDA6MDBcIikuZ2V0SG91cnMoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dsv/src/autoType.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dsv/src/csv.js": +/*!***********************************************!*\ + !*** ../../../node_modules/d3-dsv/src/csv.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"csvFormat\": () => (/* binding */ csvFormat),\n/* harmony export */ \"csvFormatBody\": () => (/* binding */ csvFormatBody),\n/* harmony export */ \"csvFormatRow\": () => (/* binding */ csvFormatRow),\n/* harmony export */ \"csvFormatRows\": () => (/* binding */ csvFormatRows),\n/* harmony export */ \"csvFormatValue\": () => (/* binding */ csvFormatValue),\n/* harmony export */ \"csvParse\": () => (/* binding */ csvParse),\n/* harmony export */ \"csvParseRows\": () => (/* binding */ csvParseRows)\n/* harmony export */ });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"../../../node_modules/d3-dsv/src/dsv.js\");\n\n\nvar csv = (0,_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\",\");\n\nvar csvParse = csv.parse;\nvar csvParseRows = csv.parseRows;\nvar csvFormat = csv.format;\nvar csvFormatBody = csv.formatBody;\nvar csvFormatRows = csv.formatRows;\nvar csvFormatRow = csv.formatRow;\nvar csvFormatValue = csv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvY3N2LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTJCOztBQUUzQixVQUFVLG1EQUFHOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL2Nzdi5qcz8zYjY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2LmpzXCI7XG5cbnZhciBjc3YgPSBkc3YoXCIsXCIpO1xuXG5leHBvcnQgdmFyIGNzdlBhcnNlID0gY3N2LnBhcnNlO1xuZXhwb3J0IHZhciBjc3ZQYXJzZVJvd3MgPSBjc3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRCb2R5ID0gY3N2LmZvcm1hdEJvZHk7XG5leHBvcnQgdmFyIGNzdkZvcm1hdFJvd3MgPSBjc3YuZm9ybWF0Um93cztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0Um93ID0gY3N2LmZvcm1hdFJvdztcbmV4cG9ydCB2YXIgY3N2Rm9ybWF0VmFsdWUgPSBjc3YuZm9ybWF0VmFsdWU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dsv/src/csv.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dsv/src/dsv.js": +/*!***********************************************!*\ + !*** ../../../node_modules/d3-dsv/src/dsv.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvZHN2LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxZQUFZO0FBQ1osWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBLEdBQUcsZ0JBQWdCO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLFlBQVk7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsWUFBWTtBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9kc3YuanM/YWQ3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgRU9MID0ge30sXG4gICAgRU9GID0ge30sXG4gICAgUVVPVEUgPSAzNCxcbiAgICBORVdMSU5FID0gMTAsXG4gICAgUkVUVVJOID0gMTM7XG5cbmZ1bmN0aW9uIG9iamVjdENvbnZlcnRlcihjb2x1bW5zKSB7XG4gIHJldHVybiBuZXcgRnVuY3Rpb24oXCJkXCIsIFwicmV0dXJuIHtcIiArIGNvbHVtbnMubWFwKGZ1bmN0aW9uKG5hbWUsIGkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobmFtZSkgKyBcIjogZFtcIiArIGkgKyBcIl0gfHwgXFxcIlxcXCJcIjtcbiAgfSkuam9pbihcIixcIikgKyBcIn1cIik7XG59XG5cbmZ1bmN0aW9uIGN1c3RvbUNvbnZlcnRlcihjb2x1bW5zLCBmKSB7XG4gIHZhciBvYmplY3QgPSBvYmplY3RDb252ZXJ0ZXIoY29sdW1ucyk7XG4gIHJldHVybiBmdW5jdGlvbihyb3csIGkpIHtcbiAgICByZXR1cm4gZihvYmplY3Qocm93KSwgaSwgY29sdW1ucyk7XG4gIH07XG59XG5cbi8vIENvbXB1dGUgdW5pcXVlIGNvbHVtbnMgaW4gb3JkZXIgb2YgZGlzY292ZXJ5LlxuZnVuY3Rpb24gaW5mZXJDb2x1bW5zKHJvd3MpIHtcbiAgdmFyIGNvbHVtblNldCA9IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICBjb2x1bW5zID0gW107XG5cbiAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdykge1xuICAgIGZvciAodmFyIGNvbHVtbiBpbiByb3cpIHtcbiAgICAgIGlmICghKGNvbHVtbiBpbiBjb2x1bW5TZXQpKSB7XG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW5TZXRbY29sdW1uXSA9IGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY29sdW1ucztcbn1cblxuZnVuY3Rpb24gcGFkKHZhbHVlLCB3aWR0aCkge1xuICB2YXIgcyA9IHZhbHVlICsgXCJcIiwgbGVuZ3RoID0gcy5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPCB3aWR0aCA/IG5ldyBBcnJheSh3aWR0aCAtIGxlbmd0aCArIDEpLmpvaW4oMCkgKyBzIDogcztcbn1cblxuZnVuY3Rpb24gZm9ybWF0WWVhcih5ZWFyKSB7XG4gIHJldHVybiB5ZWFyIDwgMCA/IFwiLVwiICsgcGFkKC15ZWFyLCA2KVxuICAgIDogeWVhciA+IDk5OTkgPyBcIitcIiArIHBhZCh5ZWFyLCA2KVxuICAgIDogcGFkKHllYXIsIDQpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpLFxuICAgICAgbWludXRlcyA9IGRhdGUuZ2V0VVRDTWludXRlcygpLFxuICAgICAgc2Vjb25kcyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpLFxuICAgICAgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgcmV0dXJuIGlzTmFOKGRhdGUpID8gXCJJbnZhbGlkIERhdGVcIlxuICAgICAgOiBmb3JtYXRZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgNCkgKyBcIi1cIiArIHBhZChkYXRlLmdldFVUQ01vbnRoKCkgKyAxLCAyKSArIFwiLVwiICsgcGFkKGRhdGUuZ2V0VVRDRGF0ZSgpLCAyKVxuICAgICAgKyAobWlsbGlzZWNvbmRzID8gXCJUXCIgKyBwYWQoaG91cnMsIDIpICsgXCI6XCIgKyBwYWQobWludXRlcywgMikgKyBcIjpcIiArIHBhZChzZWNvbmRzLCAyKSArIFwiLlwiICsgcGFkKG1pbGxpc2Vjb25kcywgMykgKyBcIlpcIlxuICAgICAgOiBzZWNvbmRzID8gXCJUXCIgKyBwYWQoaG91cnMsIDIpICsgXCI6XCIgKyBwYWQobWludXRlcywgMikgKyBcIjpcIiArIHBhZChzZWNvbmRzLCAyKSArIFwiWlwiXG4gICAgICA6IG1pbnV0ZXMgfHwgaG91cnMgPyBcIlRcIiArIHBhZChob3VycywgMikgKyBcIjpcIiArIHBhZChtaW51dGVzLCAyKSArIFwiWlwiXG4gICAgICA6IFwiXCIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWxpbWl0ZXIpIHtcbiAgdmFyIHJlRm9ybWF0ID0gbmV3IFJlZ0V4cChcIltcXFwiXCIgKyBkZWxpbWl0ZXIgKyBcIlxcblxccl1cIiksXG4gICAgICBERUxJTUlURVIgPSBkZWxpbWl0ZXIuY2hhckNvZGVBdCgwKTtcblxuICBmdW5jdGlvbiBwYXJzZSh0ZXh0LCBmKSB7XG4gICAgdmFyIGNvbnZlcnQsIGNvbHVtbnMsIHJvd3MgPSBwYXJzZVJvd3ModGV4dCwgZnVuY3Rpb24ocm93LCBpKSB7XG4gICAgICBpZiAoY29udmVydCkgcmV0dXJuIGNvbnZlcnQocm93LCBpIC0gMSk7XG4gICAgICBjb2x1bW5zID0gcm93LCBjb252ZXJ0ID0gZiA/IGN1c3RvbUNvbnZlcnRlcihyb3csIGYpIDogb2JqZWN0Q29udmVydGVyKHJvdyk7XG4gICAgfSk7XG4gICAgcm93cy5jb2x1bW5zID0gY29sdW1ucyB8fCBbXTtcbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlUm93cyh0ZXh0LCBmKSB7XG4gICAgdmFyIHJvd3MgPSBbXSwgLy8gb3V0cHV0IHJvd3NcbiAgICAgICAgTiA9IHRleHQubGVuZ3RoLFxuICAgICAgICBJID0gMCwgLy8gY3VycmVudCBjaGFyYWN0ZXIgaW5kZXhcbiAgICAgICAgbiA9IDAsIC8vIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgICAgdCwgLy8gY3VycmVudCB0b2tlblxuICAgICAgICBlb2YgPSBOIDw9IDAsIC8vIGN1cnJlbnQgdG9rZW4gZm9sbG93ZWQgYnkgRU9GP1xuICAgICAgICBlb2wgPSBmYWxzZTsgLy8gY3VycmVudCB0b2tlbiBmb2xsb3dlZCBieSBFT0w/XG5cbiAgICAvLyBTdHJpcCB0aGUgdHJhaWxpbmcgbmV3bGluZS5cbiAgICBpZiAodGV4dC5jaGFyQ29kZUF0KE4gLSAxKSA9PT0gTkVXTElORSkgLS1OO1xuICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoTiAtIDEpID09PSBSRVRVUk4pIC0tTjtcblxuICAgIGZ1bmN0aW9uIHRva2VuKCkge1xuICAgICAgaWYgKGVvZikgcmV0dXJuIEVPRjtcbiAgICAgIGlmIChlb2wpIHJldHVybiBlb2wgPSBmYWxzZSwgRU9MO1xuXG4gICAgICAvLyBVbmVzY2FwZSBxdW90ZXMuXG4gICAgICB2YXIgaSwgaiA9IEksIGM7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KGopID09PSBRVU9URSkge1xuICAgICAgICB3aGlsZSAoSSsrIDwgTiAmJiB0ZXh0LmNoYXJDb2RlQXQoSSkgIT09IFFVT1RFIHx8IHRleHQuY2hhckNvZGVBdCgrK0kpID09PSBRVU9URSk7XG4gICAgICAgIGlmICgoaSA9IEkpID49IE4pIGVvZiA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKChjID0gdGV4dC5jaGFyQ29kZUF0KEkrKykpID09PSBORVdMSU5FKSBlb2wgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmIChjID09PSBSRVRVUk4pIHsgZW9sID0gdHJ1ZTsgaWYgKHRleHQuY2hhckNvZGVBdChJKSA9PT0gTkVXTElORSkgKytJOyB9XG4gICAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGogKyAxLCBpIC0gMSkucmVwbGFjZSgvXCJcIi9nLCBcIlxcXCJcIik7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgbmV4dCBkZWxpbWl0ZXIgb3IgbmV3bGluZS5cbiAgICAgIHdoaWxlIChJIDwgTikge1xuICAgICAgICBpZiAoKGMgPSB0ZXh0LmNoYXJDb2RlQXQoaSA9IEkrKykpID09PSBORVdMSU5FKSBlb2wgPSB0cnVlO1xuICAgICAgICBlbHNlIGlmIChjID09PSBSRVRVUk4pIHsgZW9sID0gdHJ1ZTsgaWYgKHRleHQuY2hhckNvZGVBdChJKSA9PT0gTkVXTElORSkgKytJOyB9XG4gICAgICAgIGVsc2UgaWYgKGMgIT09IERFTElNSVRFUikgY29udGludWU7XG4gICAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGosIGkpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXR1cm4gbGFzdCB0b2tlbiBiZWZvcmUgRU9GLlxuICAgICAgcmV0dXJuIGVvZiA9IHRydWUsIHRleHQuc2xpY2UoaiwgTik7XG4gICAgfVxuXG4gICAgd2hpbGUgKCh0ID0gdG9rZW4oKSkgIT09IEVPRikge1xuICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgd2hpbGUgKHQgIT09IEVPTCAmJiB0ICE9PSBFT0YpIHJvdy5wdXNoKHQpLCB0ID0gdG9rZW4oKTtcbiAgICAgIGlmIChmICYmIChyb3cgPSBmKHJvdywgbisrKSkgPT0gbnVsbCkgY29udGludWU7XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZWZvcm1hdEJvZHkocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiByb3dzLm1hcChmdW5jdGlvbihyb3cpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zLm1hcChmdW5jdGlvbihjb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdFZhbHVlKHJvd1tjb2x1bW5dKTtcbiAgICAgIH0pLmpvaW4oZGVsaW1pdGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdChyb3dzLCBjb2x1bW5zKSB7XG4gICAgaWYgKGNvbHVtbnMgPT0gbnVsbCkgY29sdW1ucyA9IGluZmVyQ29sdW1ucyhyb3dzKTtcbiAgICByZXR1cm4gW2NvbHVtbnMubWFwKGZvcm1hdFZhbHVlKS5qb2luKGRlbGltaXRlcildLmNvbmNhdChwcmVmb3JtYXRCb2R5KHJvd3MsIGNvbHVtbnMpKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0Qm9keShyb3dzLCBjb2x1bW5zKSB7XG4gICAgaWYgKGNvbHVtbnMgPT0gbnVsbCkgY29sdW1ucyA9IGluZmVyQ29sdW1ucyhyb3dzKTtcbiAgICByZXR1cm4gcHJlZm9ybWF0Qm9keShyb3dzLCBjb2x1bW5zKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0Um93cyhyb3dzKSB7XG4gICAgcmV0dXJuIHJvd3MubWFwKGZvcm1hdFJvdykuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFJvdyhyb3cpIHtcbiAgICByZXR1cm4gcm93Lm1hcChmb3JtYXRWYWx1ZSkuam9pbihkZWxpbWl0ZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/IFwiXCJcbiAgICAgICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBmb3JtYXREYXRlKHZhbHVlKVxuICAgICAgICA6IHJlRm9ybWF0LnRlc3QodmFsdWUgKz0gXCJcIikgPyBcIlxcXCJcIiArIHZhbHVlLnJlcGxhY2UoL1wiL2csIFwiXFxcIlxcXCJcIikgKyBcIlxcXCJcIlxuICAgICAgICA6IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgcGFyc2VSb3dzOiBwYXJzZVJvd3MsXG4gICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgZm9ybWF0Qm9keTogZm9ybWF0Qm9keSxcbiAgICBmb3JtYXRSb3dzOiBmb3JtYXRSb3dzLFxuICAgIGZvcm1hdFJvdzogZm9ybWF0Um93LFxuICAgIGZvcm1hdFZhbHVlOiBmb3JtYXRWYWx1ZVxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dsv/src/dsv.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dsv/src/index.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-dsv/src/index.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"autoType\": () => (/* reexport safe */ _autoType_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"csvFormat\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvFormat),\n/* harmony export */ \"csvFormatBody\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvFormatBody),\n/* harmony export */ \"csvFormatRow\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvFormatRow),\n/* harmony export */ \"csvFormatRows\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvFormatRows),\n/* harmony export */ \"csvFormatValue\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvFormatValue),\n/* harmony export */ \"csvParse\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvParse),\n/* harmony export */ \"csvParseRows\": () => (/* reexport safe */ _csv_js__WEBPACK_IMPORTED_MODULE_1__.csvParseRows),\n/* harmony export */ \"dsvFormat\": () => (/* reexport safe */ _dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"tsvFormat\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvFormat),\n/* harmony export */ \"tsvFormatBody\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvFormatBody),\n/* harmony export */ \"tsvFormatRow\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvFormatRow),\n/* harmony export */ \"tsvFormatRows\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvFormatRows),\n/* harmony export */ \"tsvFormatValue\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvFormatValue),\n/* harmony export */ \"tsvParse\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvParse),\n/* harmony export */ \"tsvParseRows\": () => (/* reexport safe */ _tsv_js__WEBPACK_IMPORTED_MODULE_2__.tsvParseRows)\n/* harmony export */ });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"../../../node_modules/d3-dsv/src/dsv.js\");\n/* harmony import */ var _csv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./csv.js */ \"../../../node_modules/d3-dsv/src/csv.js\");\n/* harmony import */ var _tsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tsv.js */ \"../../../node_modules/d3-dsv/src/tsv.js\");\n/* harmony import */ var _autoType_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./autoType.js */ \"../../../node_modules/d3-dsv/src/autoType.js\");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBOEM7QUFDeUU7QUFDQTtBQUNyRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZHN2L3NyYy9pbmRleC5qcz8wZjFhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBkc3ZGb3JtYXR9IGZyb20gXCIuL2Rzdi5qc1wiO1xuZXhwb3J0IHtjc3ZQYXJzZSwgY3N2UGFyc2VSb3dzLCBjc3ZGb3JtYXQsIGNzdkZvcm1hdEJvZHksIGNzdkZvcm1hdFJvd3MsIGNzdkZvcm1hdFJvdywgY3N2Rm9ybWF0VmFsdWV9IGZyb20gXCIuL2Nzdi5qc1wiO1xuZXhwb3J0IHt0c3ZQYXJzZSwgdHN2UGFyc2VSb3dzLCB0c3ZGb3JtYXQsIHRzdkZvcm1hdEJvZHksIHRzdkZvcm1hdFJvd3MsIHRzdkZvcm1hdFJvdywgdHN2Rm9ybWF0VmFsdWV9IGZyb20gXCIuL3Rzdi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGF1dG9UeXBlfSBmcm9tIFwiLi9hdXRvVHlwZS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dsv/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-dsv/src/tsv.js": +/*!***********************************************!*\ + !*** ../../../node_modules/d3-dsv/src/tsv.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"tsvFormat\": () => (/* binding */ tsvFormat),\n/* harmony export */ \"tsvFormatBody\": () => (/* binding */ tsvFormatBody),\n/* harmony export */ \"tsvFormatRow\": () => (/* binding */ tsvFormatRow),\n/* harmony export */ \"tsvFormatRows\": () => (/* binding */ tsvFormatRows),\n/* harmony export */ \"tsvFormatValue\": () => (/* binding */ tsvFormatValue),\n/* harmony export */ \"tsvParse\": () => (/* binding */ tsvParse),\n/* harmony export */ \"tsvParseRows\": () => (/* binding */ tsvParseRows)\n/* harmony export */ });\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dsv.js */ \"../../../node_modules/d3-dsv/src/dsv.js\");\n\n\nvar tsv = (0,_dsv_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"\\t\");\n\nvar tsvParse = tsv.parse;\nvar tsvParseRows = tsv.parseRows;\nvar tsvFormat = tsv.format;\nvar tsvFormatBody = tsv.formatBody;\nvar tsvFormatRows = tsv.formatRows;\nvar tsvFormatRow = tsv.formatRow;\nvar tsvFormatValue = tsv.formatValue;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvdHN2LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTJCOztBQUUzQixVQUFVLG1EQUFHOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1kc3Yvc3JjL3Rzdi5qcz9kNmFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2LmpzXCI7XG5cbnZhciB0c3YgPSBkc3YoXCJcXHRcIik7XG5cbmV4cG9ydCB2YXIgdHN2UGFyc2UgPSB0c3YucGFyc2U7XG5leHBvcnQgdmFyIHRzdlBhcnNlUm93cyA9IHRzdi5wYXJzZVJvd3M7XG5leHBvcnQgdmFyIHRzdkZvcm1hdCA9IHRzdi5mb3JtYXQ7XG5leHBvcnQgdmFyIHRzdkZvcm1hdEJvZHkgPSB0c3YuZm9ybWF0Qm9keTtcbmV4cG9ydCB2YXIgdHN2Rm9ybWF0Um93cyA9IHRzdi5mb3JtYXRSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRSb3cgPSB0c3YuZm9ybWF0Um93O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRWYWx1ZSA9IHRzdi5mb3JtYXRWYWx1ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-dsv/src/tsv.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/back.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-ease/src/back.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"backIn\": () => (/* binding */ backIn),\n/* harmony export */ \"backInOut\": () => (/* binding */ backInOut),\n/* harmony export */ \"backOut\": () => (/* binding */ backOut)\n/* harmony export */ });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2JhY2suanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2JhY2suanM/YTgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgb3ZlcnNob290ID0gMS43MDE1ODtcblxuZXhwb3J0IHZhciBiYWNrSW4gPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tJbih0KSB7XG4gICAgcmV0dXJuICh0ID0gK3QpICogdCAqIChzICogKHQgLSAxKSArIHQpO1xuICB9XG5cbiAgYmFja0luLm92ZXJzaG9vdCA9IGN1c3RvbTtcblxuICByZXR1cm4gYmFja0luO1xufSkob3ZlcnNob290KTtcblxuZXhwb3J0IHZhciBiYWNrT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShzKSB7XG4gIHMgPSArcztcblxuICBmdW5jdGlvbiBiYWNrT3V0KHQpIHtcbiAgICByZXR1cm4gLS10ICogdCAqICgodCArIDEpICogcyArIHQpICsgMTtcbiAgfVxuXG4gIGJhY2tPdXQub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrT3V0O1xufSkob3ZlcnNob290KTtcblxuZXhwb3J0IHZhciBiYWNrSW5PdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCAqPSAyKSA8IDEgPyB0ICogdCAqICgocyArIDEpICogdCAtIHMpIDogKHQgLT0gMikgKiB0ICogKChzICsgMSkgKiB0ICsgcykgKyAyKSAvIDI7XG4gIH1cblxuICBiYWNrSW5PdXQub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW5PdXQ7XG59KShvdmVyc2hvb3QpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/back.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/bounce.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-ease/src/bounce.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"bounceIn\": () => (/* binding */ bounceIn),\n/* harmony export */ \"bounceInOut\": () => (/* binding */ bounceInOut),\n/* harmony export */ \"bounceOut\": () => (/* binding */ bounceOut)\n/* harmony export */ });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2JvdW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvYm91bmNlLmpzPzU3ZTAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGIxID0gNCAvIDExLFxuICAgIGIyID0gNiAvIDExLFxuICAgIGIzID0gOCAvIDExLFxuICAgIGI0ID0gMyAvIDQsXG4gICAgYjUgPSA5IC8gMTEsXG4gICAgYjYgPSAxMCAvIDExLFxuICAgIGI3ID0gMTUgLyAxNixcbiAgICBiOCA9IDIxIC8gMjIsXG4gICAgYjkgPSA2MyAvIDY0LFxuICAgIGIwID0gMSAvIGIxIC8gYjE7XG5cbmV4cG9ydCBmdW5jdGlvbiBib3VuY2VJbih0KSB7XG4gIHJldHVybiAxIC0gYm91bmNlT3V0KDEgLSB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZU91dCh0KSB7XG4gIHJldHVybiAodCA9ICt0KSA8IGIxID8gYjAgKiB0ICogdCA6IHQgPCBiMyA/IGIwICogKHQgLT0gYjIpICogdCArIGI0IDogdCA8IGI2ID8gYjAgKiAodCAtPSBiNSkgKiB0ICsgYjcgOiBiMCAqICh0IC09IGI4KSAqIHQgKyBiOTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZUluT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gMSAtIGJvdW5jZU91dCgxIC0gdCkgOiBib3VuY2VPdXQodCAtIDEpICsgMSkgLyAyO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/bounce.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/circle.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-ease/src/circle.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"circleIn\": () => (/* binding */ circleIn),\n/* harmony export */ \"circleInOut\": () => (/* binding */ circleInOut),\n/* harmony export */ \"circleOut\": () => (/* binding */ circleOut)\n/* harmony export */ });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2NpcmNsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvY2lyY2xlLmpzPzhiOTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNpcmNsZUluKHQpIHtcbiAgcmV0dXJuIDEgLSBNYXRoLnNxcnQoMSAtIHQgKiB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNpcmNsZU91dCh0KSB7XG4gIHJldHVybiBNYXRoLnNxcnQoMSAtIC0tdCAqIHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2lyY2xlSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyAxIC0gTWF0aC5zcXJ0KDEgLSB0ICogdCkgOiBNYXRoLnNxcnQoMSAtICh0IC09IDIpICogdCkgKyAxKSAvIDI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/circle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/cubic.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-ease/src/cubic.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cubicIn\": () => (/* binding */ cubicIn),\n/* harmony export */ \"cubicInOut\": () => (/* binding */ cubicInOut),\n/* harmony export */ \"cubicOut\": () => (/* binding */ cubicOut)\n/* harmony export */ });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2N1YmljLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9jdWJpYy5qcz9kZmNlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjdWJpY0luKHQpIHtcbiAgcmV0dXJuIHQgKiB0ICogdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1YmljT3V0KHQpIHtcbiAgcmV0dXJuIC0tdCAqIHQgKiB0ICsgMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW5PdXQodCkge1xuICByZXR1cm4gKCh0ICo9IDIpIDw9IDEgPyB0ICogdCAqIHQgOiAodCAtPSAyKSAqIHQgKiB0ICsgMikgLyAyO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/cubic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/elastic.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-ease/src/elastic.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"elasticIn\": () => (/* binding */ elasticIn),\n/* harmony export */ \"elasticInOut\": () => (/* binding */ elasticInOut),\n/* harmony export */ \"elasticOut\": () => (/* binding */ elasticOut)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-ease/src/math.js\");\n\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(-t) * Math.sin((s - t) / p)\n : 2 - a * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2VsYXN0aWMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUErQjs7QUFFL0I7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQSxlQUFlLDhDQUFJO0FBQ25COztBQUVBLHNDQUFzQztBQUN0QyxtQ0FBbUM7O0FBRW5DO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0EsbUJBQW1CLDhDQUFJO0FBQ3ZCOztBQUVBLHVDQUF1QztBQUN2QyxvQ0FBb0M7O0FBRXBDO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCLGtCQUFrQiw4Q0FBSTtBQUN0Qjs7QUFFQSx5Q0FBeUM7QUFDekMsc0NBQXNDOztBQUV0QztBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2VsYXN0aWMuanM/NDVmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RwbXR9IGZyb20gXCIuL21hdGguanNcIjtcblxudmFyIHRhdSA9IDIgKiBNYXRoLlBJLFxuICAgIGFtcGxpdHVkZSA9IDEsXG4gICAgcGVyaW9kID0gMC4zO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbiA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW4odCkge1xuICAgIHJldHVybiBhICogdHBtdCgtKC0tdCkpICogTWF0aC5zaW4oKHMgLSB0KSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY0luLmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luLnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luO1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKGEsIHApIHtcbiAgdmFyIHMgPSBNYXRoLmFzaW4oMSAvIChhID0gTWF0aC5tYXgoMSwgYSkpKSAqIChwIC89IHRhdSk7XG5cbiAgZnVuY3Rpb24gZWxhc3RpY091dCh0KSB7XG4gICAgcmV0dXJuIDEgLSBhICogdHBtdCh0ID0gK3QpICogTWF0aC5zaW4oKHQgKyBzKSAvIHApO1xuICB9XG5cbiAgZWxhc3RpY091dC5hbXBsaXR1ZGUgPSBmdW5jdGlvbihhKSB7IHJldHVybiBjdXN0b20oYSwgcCAqIHRhdSk7IH07XG4gIGVsYXN0aWNPdXQucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuXG5leHBvcnQgdmFyIGVsYXN0aWNJbk91dCA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljSW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgPSB0ICogMiAtIDEpIDwgMFxuICAgICAgICA/IGEgKiB0cG10KC10KSAqIE1hdGguc2luKChzIC0gdCkgLyBwKVxuICAgICAgICA6IDIgLSBhICogdHBtdCh0KSAqIE1hdGguc2luKChzICsgdCkgLyBwKSkgLyAyO1xuICB9XG5cbiAgZWxhc3RpY0luT3V0LmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY0luT3V0LnBlcmlvZCA9IGZ1bmN0aW9uKHApIHsgcmV0dXJuIGN1c3RvbShhLCBwKTsgfTtcblxuICByZXR1cm4gZWxhc3RpY0luT3V0O1xufSkoYW1wbGl0dWRlLCBwZXJpb2QpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/elastic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/exp.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-ease/src/exp.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"expIn\": () => (/* binding */ expIn),\n/* harmony export */ \"expInOut\": () => (/* binding */ expInOut),\n/* harmony export */ \"expOut\": () => (/* binding */ expOut)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-ease/src/math.js\");\n\n\nfunction expIn(t) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(1 - +t);\n}\n\nfunction expOut(t) {\n return 1 - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(1 - t) : 2 - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tpmt)(t - 1)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2V4cC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStCOztBQUV4QjtBQUNQLFNBQVMsOENBQUk7QUFDYjs7QUFFTztBQUNQLGFBQWEsOENBQUk7QUFDakI7O0FBRU87QUFDUCwwQkFBMEIsOENBQUksY0FBYyw4Q0FBSTtBQUNoRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvZXhwLmpzPzZlOWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0cG10fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbih0KSB7XG4gIHJldHVybiB0cG10KDEgLSArdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBPdXQodCkge1xuICByZXR1cm4gMSAtIHRwbXQodCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHRwbXQoMSAtIHQpIDogMiAtIHRwbXQodCAtIDEpKSAvIDI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/exp.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-ease/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"easeBack\": () => (/* reexport safe */ _back_js__WEBPACK_IMPORTED_MODULE_8__.backInOut),\n/* harmony export */ \"easeBackIn\": () => (/* reexport safe */ _back_js__WEBPACK_IMPORTED_MODULE_8__.backIn),\n/* harmony export */ \"easeBackInOut\": () => (/* reexport safe */ _back_js__WEBPACK_IMPORTED_MODULE_8__.backInOut),\n/* harmony export */ \"easeBackOut\": () => (/* reexport safe */ _back_js__WEBPACK_IMPORTED_MODULE_8__.backOut),\n/* harmony export */ \"easeBounce\": () => (/* reexport safe */ _bounce_js__WEBPACK_IMPORTED_MODULE_7__.bounceOut),\n/* harmony export */ \"easeBounceIn\": () => (/* reexport safe */ _bounce_js__WEBPACK_IMPORTED_MODULE_7__.bounceIn),\n/* harmony export */ \"easeBounceInOut\": () => (/* reexport safe */ _bounce_js__WEBPACK_IMPORTED_MODULE_7__.bounceInOut),\n/* harmony export */ \"easeBounceOut\": () => (/* reexport safe */ _bounce_js__WEBPACK_IMPORTED_MODULE_7__.bounceOut),\n/* harmony export */ \"easeCircle\": () => (/* reexport safe */ _circle_js__WEBPACK_IMPORTED_MODULE_6__.circleInOut),\n/* harmony export */ \"easeCircleIn\": () => (/* reexport safe */ _circle_js__WEBPACK_IMPORTED_MODULE_6__.circleIn),\n/* harmony export */ \"easeCircleInOut\": () => (/* reexport safe */ _circle_js__WEBPACK_IMPORTED_MODULE_6__.circleInOut),\n/* harmony export */ \"easeCircleOut\": () => (/* reexport safe */ _circle_js__WEBPACK_IMPORTED_MODULE_6__.circleOut),\n/* harmony export */ \"easeCubic\": () => (/* reexport safe */ _cubic_js__WEBPACK_IMPORTED_MODULE_2__.cubicInOut),\n/* harmony export */ \"easeCubicIn\": () => (/* reexport safe */ _cubic_js__WEBPACK_IMPORTED_MODULE_2__.cubicIn),\n/* harmony export */ \"easeCubicInOut\": () => (/* reexport safe */ _cubic_js__WEBPACK_IMPORTED_MODULE_2__.cubicInOut),\n/* harmony export */ \"easeCubicOut\": () => (/* reexport safe */ _cubic_js__WEBPACK_IMPORTED_MODULE_2__.cubicOut),\n/* harmony export */ \"easeElastic\": () => (/* reexport safe */ _elastic_js__WEBPACK_IMPORTED_MODULE_9__.elasticOut),\n/* harmony export */ \"easeElasticIn\": () => (/* reexport safe */ _elastic_js__WEBPACK_IMPORTED_MODULE_9__.elasticIn),\n/* harmony export */ \"easeElasticInOut\": () => (/* reexport safe */ _elastic_js__WEBPACK_IMPORTED_MODULE_9__.elasticInOut),\n/* harmony export */ \"easeElasticOut\": () => (/* reexport safe */ _elastic_js__WEBPACK_IMPORTED_MODULE_9__.elasticOut),\n/* harmony export */ \"easeExp\": () => (/* reexport safe */ _exp_js__WEBPACK_IMPORTED_MODULE_5__.expInOut),\n/* harmony export */ \"easeExpIn\": () => (/* reexport safe */ _exp_js__WEBPACK_IMPORTED_MODULE_5__.expIn),\n/* harmony export */ \"easeExpInOut\": () => (/* reexport safe */ _exp_js__WEBPACK_IMPORTED_MODULE_5__.expInOut),\n/* harmony export */ \"easeExpOut\": () => (/* reexport safe */ _exp_js__WEBPACK_IMPORTED_MODULE_5__.expOut),\n/* harmony export */ \"easeLinear\": () => (/* reexport safe */ _linear_js__WEBPACK_IMPORTED_MODULE_0__.linear),\n/* harmony export */ \"easePoly\": () => (/* reexport safe */ _poly_js__WEBPACK_IMPORTED_MODULE_3__.polyInOut),\n/* harmony export */ \"easePolyIn\": () => (/* reexport safe */ _poly_js__WEBPACK_IMPORTED_MODULE_3__.polyIn),\n/* harmony export */ \"easePolyInOut\": () => (/* reexport safe */ _poly_js__WEBPACK_IMPORTED_MODULE_3__.polyInOut),\n/* harmony export */ \"easePolyOut\": () => (/* reexport safe */ _poly_js__WEBPACK_IMPORTED_MODULE_3__.polyOut),\n/* harmony export */ \"easeQuad\": () => (/* reexport safe */ _quad_js__WEBPACK_IMPORTED_MODULE_1__.quadInOut),\n/* harmony export */ \"easeQuadIn\": () => (/* reexport safe */ _quad_js__WEBPACK_IMPORTED_MODULE_1__.quadIn),\n/* harmony export */ \"easeQuadInOut\": () => (/* reexport safe */ _quad_js__WEBPACK_IMPORTED_MODULE_1__.quadInOut),\n/* harmony export */ \"easeQuadOut\": () => (/* reexport safe */ _quad_js__WEBPACK_IMPORTED_MODULE_1__.quadOut),\n/* harmony export */ \"easeSin\": () => (/* reexport safe */ _sin_js__WEBPACK_IMPORTED_MODULE_4__.sinInOut),\n/* harmony export */ \"easeSinIn\": () => (/* reexport safe */ _sin_js__WEBPACK_IMPORTED_MODULE_4__.sinIn),\n/* harmony export */ \"easeSinInOut\": () => (/* reexport safe */ _sin_js__WEBPACK_IMPORTED_MODULE_4__.sinInOut),\n/* harmony export */ \"easeSinOut\": () => (/* reexport safe */ _sin_js__WEBPACK_IMPORTED_MODULE_4__.sinOut)\n/* harmony export */ });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-ease/src/linear.js\");\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad.js */ \"../../../node_modules/d3-ease/src/quad.js\");\n/* harmony import */ var _cubic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic.js */ \"../../../node_modules/d3-ease/src/cubic.js\");\n/* harmony import */ var _poly_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly.js */ \"../../../node_modules/d3-ease/src/poly.js\");\n/* harmony import */ var _sin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin.js */ \"../../../node_modules/d3-ease/src/sin.js\");\n/* harmony import */ var _exp_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp.js */ \"../../../node_modules/d3-ease/src/exp.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle.js */ \"../../../node_modules/d3-ease/src/circle.js\");\n/* harmony import */ var _bounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce.js */ \"../../../node_modules/d3-ease/src/bounce.js\");\n/* harmony import */ var _back_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back.js */ \"../../../node_modules/d3-ease/src/back.js\");\n/* harmony import */ var _elastic_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic.js */ \"../../../node_modules/d3-ease/src/elastic.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXFCOztBQU9GOztBQU9DOztBQU9EOztBQU9EOztBQU9BOztBQU9HOztBQU9BOztBQU9GOztBQU9HIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9pbmRleC5qcz9hNDllIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGxpbmVhciBhcyBlYXNlTGluZWFyXG59IGZyb20gXCIuL2xpbmVhci5qc1wiO1xuXG5leHBvcnQge1xuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWQsXG4gIHF1YWRJbiBhcyBlYXNlUXVhZEluLFxuICBxdWFkT3V0IGFzIGVhc2VRdWFkT3V0LFxuICBxdWFkSW5PdXQgYXMgZWFzZVF1YWRJbk91dFxufSBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljLFxuICBjdWJpY0luIGFzIGVhc2VDdWJpY0luLFxuICBjdWJpY091dCBhcyBlYXNlQ3ViaWNPdXQsXG4gIGN1YmljSW5PdXQgYXMgZWFzZUN1YmljSW5PdXRcbn0gZnJvbSBcIi4vY3ViaWMuanNcIjtcblxuZXhwb3J0IHtcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5LFxuICBwb2x5SW4gYXMgZWFzZVBvbHlJbixcbiAgcG9seU91dCBhcyBlYXNlUG9seU91dCxcbiAgcG9seUluT3V0IGFzIGVhc2VQb2x5SW5PdXRcbn0gZnJvbSBcIi4vcG9seS5qc1wiO1xuXG5leHBvcnQge1xuICBzaW5Jbk91dCBhcyBlYXNlU2luLFxuICBzaW5JbiBhcyBlYXNlU2luSW4sXG4gIHNpbk91dCBhcyBlYXNlU2luT3V0LFxuICBzaW5Jbk91dCBhcyBlYXNlU2luSW5PdXRcbn0gZnJvbSBcIi4vc2luLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGV4cEluT3V0IGFzIGVhc2VFeHAsXG4gIGV4cEluIGFzIGVhc2VFeHBJbixcbiAgZXhwT3V0IGFzIGVhc2VFeHBPdXQsXG4gIGV4cEluT3V0IGFzIGVhc2VFeHBJbk91dFxufSBmcm9tIFwiLi9leHAuanNcIjtcblxuZXhwb3J0IHtcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZSxcbiAgY2lyY2xlSW4gYXMgZWFzZUNpcmNsZUluLFxuICBjaXJjbGVPdXQgYXMgZWFzZUNpcmNsZU91dCxcbiAgY2lyY2xlSW5PdXQgYXMgZWFzZUNpcmNsZUluT3V0XG59IGZyb20gXCIuL2NpcmNsZS5qc1wiO1xuXG5leHBvcnQge1xuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZSxcbiAgYm91bmNlSW4gYXMgZWFzZUJvdW5jZUluLFxuICBib3VuY2VPdXQgYXMgZWFzZUJvdW5jZU91dCxcbiAgYm91bmNlSW5PdXQgYXMgZWFzZUJvdW5jZUluT3V0XG59IGZyb20gXCIuL2JvdW5jZS5qc1wiO1xuXG5leHBvcnQge1xuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2ssXG4gIGJhY2tJbiBhcyBlYXNlQmFja0luLFxuICBiYWNrT3V0IGFzIGVhc2VCYWNrT3V0LFxuICBiYWNrSW5PdXQgYXMgZWFzZUJhY2tJbk91dFxufSBmcm9tIFwiLi9iYWNrLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGVsYXN0aWNPdXQgYXMgZWFzZUVsYXN0aWMsXG4gIGVsYXN0aWNJbiBhcyBlYXNlRWxhc3RpY0luLFxuICBlbGFzdGljT3V0IGFzIGVhc2VFbGFzdGljT3V0LFxuICBlbGFzdGljSW5PdXQgYXMgZWFzZUVsYXN0aWNJbk91dFxufSBmcm9tIFwiLi9lbGFzdGljLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/linear.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-ease/src/linear.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"linear\": () => (/* binding */ linear)\n/* harmony export */ });\nconst linear = t => +t;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2xpbmVhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2xpbmVhci5qcz82ZTI4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBsaW5lYXIgPSB0ID0+ICt0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/linear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/math.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-ease/src/math.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"tpmt\": () => (/* binding */ tpmt)\n/* harmony export */ });\n// tpmt is two power minus ten times t scaled to [0,1]\nfunction tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL21hdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ087QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9tYXRoLmpzPzMzODQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gdHBtdCBpcyB0d28gcG93ZXIgbWludXMgdGVuIHRpbWVzIHQgc2NhbGVkIHRvIFswLDFdXG5leHBvcnQgZnVuY3Rpb24gdHBtdCh4KSB7XG4gIHJldHVybiAoTWF0aC5wb3coMiwgLTEwICogeCkgLSAwLjAwMDk3NjU2MjUpICogMS4wMDA5Nzc1MTcxMDY1NDk0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/math.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/poly.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-ease/src/poly.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"polyIn\": () => (/* binding */ polyIn),\n/* harmony export */ \"polyInOut\": () => (/* binding */ polyInOut),\n/* harmony export */ \"polyOut\": () => (/* binding */ polyOut)\n/* harmony export */ });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3BvbHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVNO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3BvbHkuanM/ZTlhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZXhwb25lbnQgPSAzO1xuXG5leHBvcnQgdmFyIHBvbHlJbiA9IChmdW5jdGlvbiBjdXN0b20oZSkge1xuICBlID0gK2U7XG5cbiAgZnVuY3Rpb24gcG9seUluKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codCwgZSk7XG4gIH1cblxuICBwb2x5SW4uZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbjtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5T3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5T3V0KHQpIHtcbiAgICByZXR1cm4gMSAtIE1hdGgucG93KDEgLSB0LCBlKTtcbiAgfVxuXG4gIHBvbHlPdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlPdXQ7XG59KShleHBvbmVudCk7XG5cbmV4cG9ydCB2YXIgcG9seUluT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IE1hdGgucG93KHQsIGUpIDogMiAtIE1hdGgucG93KDIgLSB0LCBlKSkgLyAyO1xuICB9XG5cbiAgcG9seUluT3V0LmV4cG9uZW50ID0gY3VzdG9tO1xuXG4gIHJldHVybiBwb2x5SW5PdXQ7XG59KShleHBvbmVudCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/poly.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/quad.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-ease/src/quad.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"quadIn\": () => (/* binding */ quadIn),\n/* harmony export */ \"quadInOut\": () => (/* binding */ quadInOut),\n/* harmony export */ \"quadOut\": () => (/* binding */ quadOut)\n/* harmony export */ });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3F1YWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3F1YWQuanM/YTdjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcXVhZEluKHQpIHtcbiAgcmV0dXJuIHQgKiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcXVhZE91dCh0KSB7XG4gIHJldHVybiB0ICogKDIgLSB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHF1YWRJbk91dCh0KSB7XG4gIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IHQgKiB0IDogLS10ICogKDIgLSB0KSArIDEpIC8gMjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/quad.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-ease/src/sin.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-ease/src/sin.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"sinIn\": () => (/* binding */ sinIn),\n/* harmony export */ \"sinInOut\": () => (/* binding */ sinInOut),\n/* harmony export */ \"sinOut\": () => (/* binding */ sinOut)\n/* harmony export */ });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL3Npbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9zaW4uanM/MTc4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGkgPSBNYXRoLlBJLFxuICAgIGhhbGZQaSA9IHBpIC8gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNpbkluKHQpIHtcbiAgcmV0dXJuICgrdCA9PT0gMSkgPyAxIDogMSAtIE1hdGguY29zKHQgKiBoYWxmUGkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2luT3V0KHQpIHtcbiAgcmV0dXJuIE1hdGguc2luKHQgKiBoYWxmUGkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2luSW5PdXQodCkge1xuICByZXR1cm4gKDEgLSBNYXRoLmNvcyhwaSAqIHQpKSAvIDI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-ease/src/sin.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/blob.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/blob.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9ibG9iLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mZXRjaC9zcmMvYmxvYi5qcz84NDFhIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHJlc3BvbnNlQmxvYihyZXNwb25zZSkge1xuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2Uuc3RhdHVzICsgXCIgXCIgKyByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIGZldGNoKGlucHV0LCBpbml0KS50aGVuKHJlc3BvbnNlQmxvYik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/blob.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/buffer.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/buffer.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9idWZmZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9idWZmZXIuanM/NWNiYyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiByZXNwb25zZUFycmF5QnVmZmVyKHJlc3BvbnNlKSB7XG4gIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXMgKyBcIiBcIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIGZldGNoKGlucHV0LCBpbml0KS50aGVuKHJlc3BvbnNlQXJyYXlCdWZmZXIpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/buffer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/dsv.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/dsv.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"csv\": () => (/* binding */ csv),\n/* harmony export */ \"default\": () => (/* binding */ dsv),\n/* harmony export */ \"tsv\": () => (/* binding */ tsv)\n/* harmony export */ });\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-dsv */ \"../../../node_modules/d3-dsv/src/dsv.js\");\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-dsv */ \"../../../node_modules/d3-dsv/src/csv.js\");\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-dsv */ \"../../../node_modules/d3-dsv/src/tsv.js\");\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./text.js */ \"../../../node_modules/d3-fetch/src/text.js\");\n\n\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return (0,_text_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nfunction dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = (0,d3_dsv__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(delimiter);\n return (0,_text_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nvar csv = dsvParse(d3_dsv__WEBPACK_IMPORTED_MODULE_2__.csvParse);\nvar tsv = dsvParse(d3_dsv__WEBPACK_IMPORTED_MODULE_3__.tsvParse);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9kc3YuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFxRDtBQUN4Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvREFBSTtBQUNmO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRWU7QUFDZjtBQUNBLGVBQWUsa0RBQVM7QUFDeEIsU0FBUyxvREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNIOztBQUVPLG1CQUFtQiw0Q0FBUTtBQUMzQixtQkFBbUIsNENBQVEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9kc3YuanM/ZjA2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NzdlBhcnNlLCBkc3ZGb3JtYXQsIHRzdlBhcnNlfSBmcm9tIFwiZDMtZHN2XCI7XG5pbXBvcnQgdGV4dCBmcm9tIFwiLi90ZXh0LmpzXCI7XG5cbmZ1bmN0aW9uIGRzdlBhcnNlKHBhcnNlKSB7XG4gIHJldHVybiBmdW5jdGlvbihpbnB1dCwgaW5pdCwgcm93KSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgdHlwZW9mIGluaXQgPT09IFwiZnVuY3Rpb25cIikgcm93ID0gaW5pdCwgaW5pdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGV4dChpbnB1dCwgaW5pdCkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgcmV0dXJuIHBhcnNlKHJlc3BvbnNlLCByb3cpO1xuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkc3YoZGVsaW1pdGVyLCBpbnB1dCwgaW5pdCwgcm93KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmIHR5cGVvZiBpbml0ID09PSBcImZ1bmN0aW9uXCIpIHJvdyA9IGluaXQsIGluaXQgPSB1bmRlZmluZWQ7XG4gIHZhciBmb3JtYXQgPSBkc3ZGb3JtYXQoZGVsaW1pdGVyKTtcbiAgcmV0dXJuIHRleHQoaW5wdXQsIGluaXQpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZm9ybWF0LnBhcnNlKHJlc3BvbnNlLCByb3cpO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciBjc3YgPSBkc3ZQYXJzZShjc3ZQYXJzZSk7XG5leHBvcnQgdmFyIHRzdiA9IGRzdlBhcnNlKHRzdlBhcnNlKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/dsv.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/image.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/image.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9pbWFnZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9pbWFnZS5qcz8wYTMzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2U7XG4gICAgZm9yICh2YXIga2V5IGluIGluaXQpIGltYWdlW2tleV0gPSBpbml0W2tleV07XG4gICAgaW1hZ2Uub25lcnJvciA9IHJlamVjdDtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsgcmVzb2x2ZShpbWFnZSk7IH07XG4gICAgaW1hZ2Uuc3JjID0gaW5wdXQ7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/image.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"blob\": () => (/* reexport safe */ _blob_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"buffer\": () => (/* reexport safe */ _buffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"csv\": () => (/* reexport safe */ _dsv_js__WEBPACK_IMPORTED_MODULE_2__.csv),\n/* harmony export */ \"dsv\": () => (/* reexport safe */ _dsv_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"html\": () => (/* reexport safe */ _xml_js__WEBPACK_IMPORTED_MODULE_6__.html),\n/* harmony export */ \"image\": () => (/* reexport safe */ _image_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"json\": () => (/* reexport safe */ _json_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"svg\": () => (/* reexport safe */ _xml_js__WEBPACK_IMPORTED_MODULE_6__.svg),\n/* harmony export */ \"text\": () => (/* reexport safe */ _text_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"tsv\": () => (/* reexport safe */ _dsv_js__WEBPACK_IMPORTED_MODULE_2__.tsv),\n/* harmony export */ \"xml\": () => (/* reexport safe */ _xml_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _blob_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blob.js */ \"../../../node_modules/d3-fetch/src/blob.js\");\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ \"../../../node_modules/d3-fetch/src/buffer.js\");\n/* harmony import */ var _dsv_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dsv.js */ \"../../../node_modules/d3-fetch/src/dsv.js\");\n/* harmony import */ var _image_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./image.js */ \"../../../node_modules/d3-fetch/src/image.js\");\n/* harmony import */ var _json_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./json.js */ \"../../../node_modules/d3-fetch/src/json.js\");\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./text.js */ \"../../../node_modules/d3-fetch/src/text.js\");\n/* harmony import */ var _xml_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./xml.js */ \"../../../node_modules/d3-fetch/src/xml.js\");\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDSTtBQUNJO0FBQ047QUFDRjtBQUNBO0FBQ1MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9pbmRleC5qcz9iZTNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBibG9ifSBmcm9tIFwiLi9ibG9iLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYnVmZmVyfSBmcm9tIFwiLi9idWZmZXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkc3YsIGNzdiwgdHN2fSBmcm9tIFwiLi9kc3YuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbWFnZX0gZnJvbSBcIi4vaW1hZ2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBqc29ufSBmcm9tIFwiLi9qc29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdGV4dH0gZnJvbSBcIi4vdGV4dC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHhtbCwgaHRtbCwgc3ZnfSBmcm9tIFwiLi94bWwuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/json.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/json.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(input, init) {\n return fetch(input, init).then(responseJson);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9qc29uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy9qc29uLmpzP2E5YTMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gcmVzcG9uc2VKc29uKHJlc3BvbnNlKSB7XG4gIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXMgKyBcIiBcIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAyMDQgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAyMDUpIHJldHVybjtcbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIGZldGNoKGlucHV0LCBpbml0KS50aGVuKHJlc3BvbnNlSnNvbik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/json.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/text.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/text.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(input, init) {\n return fetch(input, init).then(responseText);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy90ZXh0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mZXRjaC9zcmMvdGV4dC5qcz80ODJlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHJlc3BvbnNlVGV4dChyZXNwb25zZSkge1xuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2Uuc3RhdHVzICsgXCIgXCIgKyByZXNwb25zZS5zdGF0dXNUZXh0KTtcbiAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIGZldGNoKGlucHV0LCBpbml0KS50aGVuKHJlc3BvbnNlVGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-fetch/src/xml.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-fetch/src/xml.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"html\": () => (/* binding */ html),\n/* harmony export */ \"svg\": () => (/* binding */ svg)\n/* harmony export */ });\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./text.js */ \"../../../node_modules/d3-fetch/src/text.js\");\n\n\nfunction parser(type) {\n return (input, init) => (0,_text_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (parser(\"application/xml\"));\n\nvar html = parser(\"text/html\");\n\nvar svg = parser(\"image/svg+xml\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy94bWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE2Qjs7QUFFN0I7QUFDQSwwQkFBMEIsb0RBQUk7QUFDOUI7QUFDQTs7QUFFQSxpRUFBZSx5QkFBeUIsRUFBQzs7QUFFbEM7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZldGNoL3NyYy94bWwuanM/YzE2MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGV4dCBmcm9tIFwiLi90ZXh0LmpzXCI7XG5cbmZ1bmN0aW9uIHBhcnNlcih0eXBlKSB7XG4gIHJldHVybiAoaW5wdXQsIGluaXQpID0+IHRleHQoaW5wdXQsIGluaXQpXG4gICAgLnRoZW4odGV4dCA9PiAobmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHRleHQsIHR5cGUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VyKFwiYXBwbGljYXRpb24veG1sXCIpO1xuXG5leHBvcnQgdmFyIGh0bWwgPSBwYXJzZXIoXCJ0ZXh0L2h0bWxcIik7XG5cbmV4cG9ydCB2YXIgc3ZnID0gcGFyc2VyKFwiaW1hZ2Uvc3ZnK3htbFwiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-fetch/src/xml.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/center.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-force/src/center.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jZW50ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7O0FBRUEsNEVBQTRFLE9BQU87QUFDbkY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvY2VudGVyLmpzP2ZmZjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICB2YXIgbm9kZXMsIHN0cmVuZ3RoID0gMTtcblxuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHN4ID0gMCxcbiAgICAgICAgc3kgPSAwO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBzeCArPSBub2RlLngsIHN5ICs9IG5vZGUueTtcbiAgICB9XG5cbiAgICBmb3IgKHN4ID0gKHN4IC8gbiAtIHgpICogc3RyZW5ndGgsIHN5ID0gKHN5IC8gbiAtIHkpICogc3RyZW5ndGgsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueCAtPSBzeCwgbm9kZS55IC09IHN5O1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfLCBmb3JjZSkgOiB4O1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9ICtfLCBmb3JjZSkgOiB5O1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gK18sIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/center.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/collide.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-force/src/collide.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-quadtree */ \"../../../node_modules/d3-quadtree/src/quadtree.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jiggle.js */ \"../../../node_modules/d3-force/src/jiggle.js\");\n\n\n\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = (0,d3_quadtree__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += x * x;\n if (y === 0) y = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jb2xsaWRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBcUM7QUFDQTtBQUNKOztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkNBQTZDLHdEQUFROztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixnQkFBZ0I7QUFDcEMsYUFBYSx1REFBUTtBQUNyQixrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHNEQUFNO0FBQ25DLDZCQUE2QixzREFBTTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzRUFBc0Usd0RBQVE7QUFDOUU7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL2NvbGxpZGUuanM/YTU0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3F1YWR0cmVlfSBmcm9tIFwiZDMtcXVhZHRyZWVcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcblxuZnVuY3Rpb24geChkKSB7XG4gIHJldHVybiBkLnggKyBkLnZ4O1xufVxuXG5mdW5jdGlvbiB5KGQpIHtcbiAgcmV0dXJuIGQueSArIGQudnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cykge1xuICB2YXIgbm9kZXMsXG4gICAgICByYWRpaSxcbiAgICAgIHJhbmRvbSxcbiAgICAgIHN0cmVuZ3RoID0gMSxcbiAgICAgIGl0ZXJhdGlvbnMgPSAxO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KHJhZGl1cyA9PSBudWxsID8gMSA6ICtyYWRpdXMpO1xuXG4gIGZ1bmN0aW9uIGZvcmNlKCkge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICB0cmVlLFxuICAgICAgICBub2RlLFxuICAgICAgICB4aSxcbiAgICAgICAgeWksXG4gICAgICAgIHJpLFxuICAgICAgICByaTI7XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IGl0ZXJhdGlvbnM7ICsraykge1xuICAgICAgdHJlZSA9IHF1YWR0cmVlKG5vZGVzLCB4LCB5KS52aXNpdEFmdGVyKHByZXBhcmUpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIHJpID0gcmFkaWlbbm9kZS5pbmRleF0sIHJpMiA9IHJpICogcmk7XG4gICAgICAgIHhpID0gbm9kZS54ICsgbm9kZS52eDtcbiAgICAgICAgeWkgPSBub2RlLnkgKyBub2RlLnZ5O1xuICAgICAgICB0cmVlLnZpc2l0KGFwcGx5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShxdWFkLCB4MCwgeTAsIHgxLCB5MSkge1xuICAgICAgdmFyIGRhdGEgPSBxdWFkLmRhdGEsIHJqID0gcXVhZC5yLCByID0gcmkgKyByajtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLmluZGV4ID4gbm9kZS5pbmRleCkge1xuICAgICAgICAgIHZhciB4ID0geGkgLSBkYXRhLnggLSBkYXRhLnZ4LFxuICAgICAgICAgICAgICB5ID0geWkgLSBkYXRhLnkgLSBkYXRhLnZ5LFxuICAgICAgICAgICAgICBsID0geCAqIHggKyB5ICogeTtcbiAgICAgICAgICBpZiAobCA8IHIgKiByKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgICAgICAgIGwgPSAociAtIChsID0gTWF0aC5zcXJ0KGwpKSkgLyBsICogc3RyZW5ndGg7XG4gICAgICAgICAgICBub2RlLnZ4ICs9ICh4ICo9IGwpICogKHIgPSAocmogKj0gcmopIC8gKHJpMiArIHJqKSk7XG4gICAgICAgICAgICBub2RlLnZ5ICs9ICh5ICo9IGwpICogcjtcbiAgICAgICAgICAgIGRhdGEudnggLT0geCAqIChyID0gMSAtIHIpO1xuICAgICAgICAgICAgZGF0YS52eSAtPSB5ICogcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHgwID4geGkgKyByIHx8IHgxIDwgeGkgLSByIHx8IHkwID4geWkgKyByIHx8IHkxIDwgeWkgLSByO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXBhcmUocXVhZCkge1xuICAgIGlmIChxdWFkLmRhdGEpIHJldHVybiBxdWFkLnIgPSByYWRpaVtxdWFkLmRhdGEuaW5kZXhdO1xuICAgIGZvciAodmFyIGkgPSBxdWFkLnIgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICBpZiAocXVhZFtpXSAmJiBxdWFkW2ldLnIgPiBxdWFkLnIpIHtcbiAgICAgICAgcXVhZC5yID0gcXVhZFtpXS5yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlO1xuICAgIHJhZGlpID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgcmFkaWlbbm9kZS5pbmRleF0gPSArcmFkaXVzKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfbm9kZXMsIF9yYW5kb20pIHtcbiAgICBub2RlcyA9IF9ub2RlcztcbiAgICByYW5kb20gPSBfcmFuZG9tO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5pdGVyYXRpb25zID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGl0ZXJhdGlvbnMgPSArXywgZm9yY2UpIDogaXRlcmF0aW9ucztcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9ICtfLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5yYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogcmFkaXVzO1xuICB9O1xuXG4gIHJldHVybiBmb3JjZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/collide.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-force/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9jb25zdGFudC5qcz8zY2M4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-force/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"forceCenter\": () => (/* reexport safe */ _center_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"forceCollide\": () => (/* reexport safe */ _collide_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"forceLink\": () => (/* reexport safe */ _link_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"forceManyBody\": () => (/* reexport safe */ _manyBody_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"forceRadial\": () => (/* reexport safe */ _radial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"forceSimulation\": () => (/* reexport safe */ _simulation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"forceX\": () => (/* reexport safe */ _x_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"forceY\": () => (/* reexport safe */ _y_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _center_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./center.js */ \"../../../node_modules/d3-force/src/center.js\");\n/* harmony import */ var _collide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collide.js */ \"../../../node_modules/d3-force/src/collide.js\");\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./link.js */ \"../../../node_modules/d3-force/src/link.js\");\n/* harmony import */ var _manyBody_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./manyBody.js */ \"../../../node_modules/d3-force/src/manyBody.js\");\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./radial.js */ \"../../../node_modules/d3-force/src/radial.js\");\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./simulation.js */ \"../../../node_modules/d3-force/src/simulation.js\");\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./x.js */ \"../../../node_modules/d3-force/src/x.js\");\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./y.js */ \"../../../node_modules/d3-force/src/y.js\");\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1EO0FBQ0U7QUFDTjtBQUNRO0FBQ0o7QUFDUTtBQUNsQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvaW5kZXguanM/Nzk4MiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZm9yY2VDZW50ZXJ9IGZyb20gXCIuL2NlbnRlci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlQ29sbGlkZX0gZnJvbSBcIi4vY29sbGlkZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlTGlua30gZnJvbSBcIi4vbGluay5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlTWFueUJvZHl9IGZyb20gXCIuL21hbnlCb2R5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9yY2VSYWRpYWx9IGZyb20gXCIuL3JhZGlhbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlU2ltdWxhdGlvbn0gZnJvbSBcIi4vc2ltdWxhdGlvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlWH0gZnJvbSBcIi4veC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcmNlWX0gZnJvbSBcIi4veS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/jiggle.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-force/src/jiggle.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(random) {\n return (random() - 0.5) * 1e-6;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9qaWdnbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9qaWdnbGUuanM/Y2ViYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihyYW5kb20pIHtcbiAgcmV0dXJuIChyYW5kb20oKSAtIDAuNSkgKiAxZS02O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/jiggle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/lcg.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-force/src/lcg.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9sY2cuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjs7QUFFdEIsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvbGNnLmpzPzBlNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGluZWFyX2NvbmdydWVudGlhbF9nZW5lcmF0b3IjUGFyYW1ldGVyc19pbl9jb21tb25fdXNlXG5jb25zdCBhID0gMTY2NDUyNTtcbmNvbnN0IGMgPSAxMDEzOTA0MjIzO1xuY29uc3QgbSA9IDQyOTQ5NjcyOTY7IC8vIDJeMzJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIGxldCBzID0gMTtcbiAgcmV0dXJuICgpID0+IChzID0gKGEgKiBzICsgYykgJSBtKSAvIG07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/lcg.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/link.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-force/src/link.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jiggle.js */ \"../../../node_modules/d3-force/src/jiggle.js\");\n\n\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n y = target.y + target.vy - source.y - source.vy || (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFxQztBQUNKOztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQyxnQkFBZ0I7QUFDdEQsd0RBQXdELE9BQU87QUFDL0Q7QUFDQSwyREFBMkQsc0RBQU07QUFDakUsMkRBQTJELHNEQUFNO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0MsT0FBTztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUNBQXFDLE9BQU87QUFDNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsT0FBTztBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsT0FBTztBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMvbGluay5qcz8zN2QwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGppZ2dsZSBmcm9tIFwiLi9qaWdnbGUuanNcIjtcblxuZnVuY3Rpb24gaW5kZXgoZCkge1xuICByZXR1cm4gZC5pbmRleDtcbn1cblxuZnVuY3Rpb24gZmluZChub2RlQnlJZCwgbm9kZUlkKSB7XG4gIHZhciBub2RlID0gbm9kZUJ5SWQuZ2V0KG5vZGVJZCk7XG4gIGlmICghbm9kZSkgdGhyb3cgbmV3IEVycm9yKFwibm9kZSBub3QgZm91bmQ6IFwiICsgbm9kZUlkKTtcbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGxpbmtzKSB7XG4gIHZhciBpZCA9IGluZGV4LFxuICAgICAgc3RyZW5ndGggPSBkZWZhdWx0U3RyZW5ndGgsXG4gICAgICBzdHJlbmd0aHMsXG4gICAgICBkaXN0YW5jZSA9IGNvbnN0YW50KDMwKSxcbiAgICAgIGRpc3RhbmNlcyxcbiAgICAgIG5vZGVzLFxuICAgICAgY291bnQsXG4gICAgICBiaWFzLFxuICAgICAgcmFuZG9tLFxuICAgICAgaXRlcmF0aW9ucyA9IDE7XG5cbiAgaWYgKGxpbmtzID09IG51bGwpIGxpbmtzID0gW107XG5cbiAgZnVuY3Rpb24gZGVmYXVsdFN0cmVuZ3RoKGxpbmspIHtcbiAgICByZXR1cm4gMSAvIE1hdGgubWluKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSwgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcmNlKGFscGhhKSB7XG4gICAgZm9yICh2YXIgayA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsaW5rLCBzb3VyY2UsIHRhcmdldCwgeCwgeSwgbCwgYjsgaSA8IG47ICsraSkge1xuICAgICAgICBsaW5rID0gbGlua3NbaV0sIHNvdXJjZSA9IGxpbmsuc291cmNlLCB0YXJnZXQgPSBsaW5rLnRhcmdldDtcbiAgICAgICAgeCA9IHRhcmdldC54ICsgdGFyZ2V0LnZ4IC0gc291cmNlLnggLSBzb3VyY2UudnggfHwgamlnZ2xlKHJhbmRvbSk7XG4gICAgICAgIHkgPSB0YXJnZXQueSArIHRhcmdldC52eSAtIHNvdXJjZS55IC0gc291cmNlLnZ5IHx8IGppZ2dsZShyYW5kb20pO1xuICAgICAgICBsID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuICAgICAgICBsID0gKGwgLSBkaXN0YW5jZXNbaV0pIC8gbCAqIGFscGhhICogc3RyZW5ndGhzW2ldO1xuICAgICAgICB4ICo9IGwsIHkgKj0gbDtcbiAgICAgICAgdGFyZ2V0LnZ4IC09IHggKiAoYiA9IGJpYXNbaV0pO1xuICAgICAgICB0YXJnZXQudnkgLT0geSAqIGI7XG4gICAgICAgIHNvdXJjZS52eCArPSB4ICogKGIgPSAxIC0gYik7XG4gICAgICAgIHNvdXJjZS52eSArPSB5ICogYjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIHZhciBpLFxuICAgICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBtID0gbGlua3MubGVuZ3RoLFxuICAgICAgICBub2RlQnlJZCA9IG5ldyBNYXAobm9kZXMubWFwKChkLCBpKSA9PiBbaWQoZCwgaSwgbm9kZXMpLCBkXSkpLFxuICAgICAgICBsaW5rO1xuXG4gICAgZm9yIChpID0gMCwgY291bnQgPSBuZXcgQXJyYXkobik7IGkgPCBtOyArK2kpIHtcbiAgICAgIGxpbmsgPSBsaW5rc1tpXSwgbGluay5pbmRleCA9IGk7XG4gICAgICBpZiAodHlwZW9mIGxpbmsuc291cmNlICE9PSBcIm9iamVjdFwiKSBsaW5rLnNvdXJjZSA9IGZpbmQobm9kZUJ5SWQsIGxpbmsuc291cmNlKTtcbiAgICAgIGlmICh0eXBlb2YgbGluay50YXJnZXQgIT09IFwib2JqZWN0XCIpIGxpbmsudGFyZ2V0ID0gZmluZChub2RlQnlJZCwgbGluay50YXJnZXQpO1xuICAgICAgY291bnRbbGluay5zb3VyY2UuaW5kZXhdID0gKGNvdW50W2xpbmsuc291cmNlLmluZGV4XSB8fCAwKSArIDE7XG4gICAgICBjb3VudFtsaW5rLnRhcmdldC5pbmRleF0gPSAoY291bnRbbGluay50YXJnZXQuaW5kZXhdIHx8IDApICsgMTtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwLCBiaWFzID0gbmV3IEFycmF5KG0pOyBpIDwgbTsgKytpKSB7XG4gICAgICBsaW5rID0gbGlua3NbaV0sIGJpYXNbaV0gPSBjb3VudFtsaW5rLnNvdXJjZS5pbmRleF0gLyAoY291bnRbbGluay5zb3VyY2UuaW5kZXhdICsgY291bnRbbGluay50YXJnZXQuaW5kZXhdKTtcbiAgICB9XG5cbiAgICBzdHJlbmd0aHMgPSBuZXcgQXJyYXkobSksIGluaXRpYWxpemVTdHJlbmd0aCgpO1xuICAgIGRpc3RhbmNlcyA9IG5ldyBBcnJheShtKSwgaW5pdGlhbGl6ZURpc3RhbmNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplU3RyZW5ndGgoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIG4gPSBsaW5rcy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9ICtzdHJlbmd0aChsaW5rc1tpXSwgaSwgbGlua3MpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVEaXN0YW5jZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IGxpbmtzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgZGlzdGFuY2VzW2ldID0gK2Rpc3RhbmNlKGxpbmtzW2ldLCBpLCBsaW5rcyk7XG4gICAgfVxuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLmxpbmtzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxpbmtzID0gXywgaW5pdGlhbGl6ZSgpLCBmb3JjZSkgOiBsaW5rcztcbiAgfTtcblxuICBmb3JjZS5pZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IF8sIGZvcmNlKSA6IGlkO1xuICB9O1xuXG4gIGZvcmNlLml0ZXJhdGlvbnMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaXRlcmF0aW9ucyA9ICtfLCBmb3JjZSkgOiBpdGVyYXRpb25zO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemVTdHJlbmd0aCgpLCBmb3JjZSkgOiBzdHJlbmd0aDtcbiAgfTtcblxuICBmb3JjZS5kaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkaXN0YW5jZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplRGlzdGFuY2UoKSwgZm9yY2UpIDogZGlzdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/link.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/manyBody.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-force/src/manyBody.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-quadtree */ \"../../../node_modules/d3-quadtree/src/quadtree.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n/* harmony import */ var _jiggle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./jiggle.js */ \"../../../node_modules/d3-force/src/jiggle.js\");\n/* harmony import */ var _simulation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./simulation.js */ \"../../../node_modules/d3-force/src/simulation.js\");\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var nodes,\n node,\n random,\n alpha,\n strength = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = (0,d3_quadtree__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nodes, _simulation_js__WEBPACK_IMPORTED_MODULE_2__.x, _simulation_js__WEBPACK_IMPORTED_MODULE_2__.y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(random), l += x * x;\n if (y === 0) y = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(random), l += x * x;\n if (y === 0) y = (0,_jiggle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9tYW55Qm9keS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFxQztBQUNBO0FBQ0o7QUFDSTs7QUFFckMsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsdURBQVEsUUFBUSw2Q0FBQyxFQUFFLDZDQUFDO0FBQ3hELDJCQUEyQixPQUFPO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU87QUFDdkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLE9BQU87QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBLHlCQUF5QixzREFBTTtBQUMvQix5QkFBeUIsc0RBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMENBQTBDO0FBQzFDO0FBQ0EsdUJBQXVCLHNEQUFNO0FBQzdCLHVCQUF1QixzREFBTTtBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RUFBd0Usd0RBQVE7QUFDaEY7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9yY2Uvc3JjL21hbnlCb2R5LmpzP2ZhODUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtxdWFkdHJlZX0gZnJvbSBcImQzLXF1YWR0cmVlXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBqaWdnbGUgZnJvbSBcIi4vamlnZ2xlLmpzXCI7XG5pbXBvcnQge3gsIHl9IGZyb20gXCIuL3NpbXVsYXRpb24uanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBub2RlcyxcbiAgICAgIG5vZGUsXG4gICAgICByYW5kb20sXG4gICAgICBhbHBoYSxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoLTMwKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIGRpc3RhbmNlTWluMiA9IDEsXG4gICAgICBkaXN0YW5jZU1heDIgPSBJbmZpbml0eSxcbiAgICAgIHRoZXRhMiA9IDAuODE7XG5cbiAgZnVuY3Rpb24gZm9yY2UoXykge1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoLCB0cmVlID0gcXVhZHRyZWUobm9kZXMsIHgsIHkpLnZpc2l0QWZ0ZXIoYWNjdW11bGF0ZSk7XG4gICAgZm9yIChhbHBoYSA9IF8sIGkgPSAwOyBpIDwgbjsgKytpKSBub2RlID0gbm9kZXNbaV0sIHRyZWUudmlzaXQoYXBwbHkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIW5vZGVzKSByZXR1cm47XG4gICAgdmFyIGksIG4gPSBub2Rlcy5sZW5ndGgsIG5vZGU7XG4gICAgc3RyZW5ndGhzID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIG5vZGUgPSBub2Rlc1tpXSwgc3RyZW5ndGhzW25vZGUuaW5kZXhdID0gK3N0cmVuZ3RoKG5vZGUsIGksIG5vZGVzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFjY3VtdWxhdGUocXVhZCkge1xuICAgIHZhciBzdHJlbmd0aCA9IDAsIHEsIGMsIHdlaWdodCA9IDAsIHgsIHksIGk7XG5cbiAgICAvLyBGb3IgaW50ZXJuYWwgbm9kZXMsIGFjY3VtdWxhdGUgZm9yY2VzIGZyb20gY2hpbGQgcXVhZHJhbnRzLlxuICAgIGlmIChxdWFkLmxlbmd0aCkge1xuICAgICAgZm9yICh4ID0geSA9IGkgPSAwOyBpIDwgNDsgKytpKSB7XG4gICAgICAgIGlmICgocSA9IHF1YWRbaV0pICYmIChjID0gTWF0aC5hYnMocS52YWx1ZSkpKSB7XG4gICAgICAgICAgc3RyZW5ndGggKz0gcS52YWx1ZSwgd2VpZ2h0ICs9IGMsIHggKz0gYyAqIHEueCwgeSArPSBjICogcS55O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBxdWFkLnggPSB4IC8gd2VpZ2h0O1xuICAgICAgcXVhZC55ID0geSAvIHdlaWdodDtcbiAgICB9XG5cbiAgICAvLyBGb3IgbGVhZiBub2RlcywgYWNjdW11bGF0ZSBmb3JjZXMgZnJvbSBjb2luY2lkZW50IHF1YWRyYW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHEgPSBxdWFkO1xuICAgICAgcS54ID0gcS5kYXRhLng7XG4gICAgICBxLnkgPSBxLmRhdGEueTtcbiAgICAgIGRvIHN0cmVuZ3RoICs9IHN0cmVuZ3Roc1txLmRhdGEuaW5kZXhdO1xuICAgICAgd2hpbGUgKHEgPSBxLm5leHQpO1xuICAgIH1cblxuICAgIHF1YWQudmFsdWUgPSBzdHJlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5KHF1YWQsIHgxLCBfLCB4Mikge1xuICAgIGlmICghcXVhZC52YWx1ZSkgcmV0dXJuIHRydWU7XG5cbiAgICB2YXIgeCA9IHF1YWQueCAtIG5vZGUueCxcbiAgICAgICAgeSA9IHF1YWQueSAtIG5vZGUueSxcbiAgICAgICAgdyA9IHgyIC0geDEsXG4gICAgICAgIGwgPSB4ICogeCArIHkgKiB5O1xuXG4gICAgLy8gQXBwbHkgdGhlIEJhcm5lcy1IdXQgYXBwcm94aW1hdGlvbiBpZiBwb3NzaWJsZS5cbiAgICAvLyBMaW1pdCBmb3JjZXMgZm9yIHZlcnkgY2xvc2Ugbm9kZXM7IHJhbmRvbWl6ZSBkaXJlY3Rpb24gaWYgY29pbmNpZGVudC5cbiAgICBpZiAodyAqIHcgLyB0aGV0YTIgPCBsKSB7XG4gICAgICBpZiAobCA8IGRpc3RhbmNlTWF4Mikge1xuICAgICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgICBpZiAoeSA9PT0gMCkgeSA9IGppZ2dsZShyYW5kb20pLCBsICs9IHkgKiB5O1xuICAgICAgICBpZiAobCA8IGRpc3RhbmNlTWluMikgbCA9IE1hdGguc3FydChkaXN0YW5jZU1pbjIgKiBsKTtcbiAgICAgICAgbm9kZS52eCArPSB4ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgICAgbm9kZS52eSArPSB5ICogcXVhZC52YWx1ZSAqIGFscGhhIC8gbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSwgcHJvY2VzcyBwb2ludHMgZGlyZWN0bHkuXG4gICAgZWxzZSBpZiAocXVhZC5sZW5ndGggfHwgbCA+PSBkaXN0YW5jZU1heDIpIHJldHVybjtcblxuICAgIC8vIExpbWl0IGZvcmNlcyBmb3IgdmVyeSBjbG9zZSBub2RlczsgcmFuZG9taXplIGRpcmVjdGlvbiBpZiBjb2luY2lkZW50LlxuICAgIGlmIChxdWFkLmRhdGEgIT09IG5vZGUgfHwgcXVhZC5uZXh0KSB7XG4gICAgICBpZiAoeCA9PT0gMCkgeCA9IGppZ2dsZShyYW5kb20pLCBsICs9IHggKiB4O1xuICAgICAgaWYgKHkgPT09IDApIHkgPSBqaWdnbGUocmFuZG9tKSwgbCArPSB5ICogeTtcbiAgICAgIGlmIChsIDwgZGlzdGFuY2VNaW4yKSBsID0gTWF0aC5zcXJ0KGRpc3RhbmNlTWluMiAqIGwpO1xuICAgIH1cblxuICAgIGRvIGlmIChxdWFkLmRhdGEgIT09IG5vZGUpIHtcbiAgICAgIHcgPSBzdHJlbmd0aHNbcXVhZC5kYXRhLmluZGV4XSAqIGFscGhhIC8gbDtcbiAgICAgIG5vZGUudnggKz0geCAqIHc7XG4gICAgICBub2RlLnZ5ICs9IHkgKiB3O1xuICAgIH0gd2hpbGUgKHF1YWQgPSBxdWFkLm5leHQpO1xuICB9XG5cbiAgZm9yY2UuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKF9ub2RlcywgX3JhbmRvbSkge1xuICAgIG5vZGVzID0gX25vZGVzO1xuICAgIHJhbmRvbSA9IF9yYW5kb207XG4gICAgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UuZGlzdGFuY2VNaW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGlzdGFuY2VNaW4yID0gXyAqIF8sIGZvcmNlKSA6IE1hdGguc3FydChkaXN0YW5jZU1pbjIpO1xuICB9O1xuXG4gIGZvcmNlLmRpc3RhbmNlTWF4ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRpc3RhbmNlTWF4MiA9IF8gKiBfLCBmb3JjZSkgOiBNYXRoLnNxcnQoZGlzdGFuY2VNYXgyKTtcbiAgfTtcblxuICBmb3JjZS50aGV0YSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGV0YTIgPSBfICogXywgZm9yY2UpIDogTWF0aC5zcXJ0KHRoZXRhMik7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/manyBody.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/radial.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-force/src/radial.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(radius, x, y) {\n var nodes,\n strength = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9yYWRpYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EsaUJBQWlCLHdEQUFRO0FBQ3pCO0FBQ0E7O0FBRUEsNkNBQTZDLHdEQUFRO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQSxzQ0FBc0MsT0FBTztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBLHNFQUFzRSx3REFBUTtBQUM5RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9yYWRpYWwuanM/YmI1NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFkaXVzLCB4LCB5KSB7XG4gIHZhciBub2RlcyxcbiAgICAgIHN0cmVuZ3RoID0gY29uc3RhbnQoMC4xKSxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHJhZGl1c2VzO1xuXG4gIGlmICh0eXBlb2YgcmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIHJhZGl1cyA9IGNvbnN0YW50KCtyYWRpdXMpO1xuICBpZiAoeCA9PSBudWxsKSB4ID0gMDtcbiAgaWYgKHkgPT0gbnVsbCkgeSA9IDA7XG5cbiAgZnVuY3Rpb24gZm9yY2UoYWxwaGEpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIG5vZGUgPSBub2Rlc1tpXSxcbiAgICAgICAgICBkeCA9IG5vZGUueCAtIHggfHwgMWUtNixcbiAgICAgICAgICBkeSA9IG5vZGUueSAtIHkgfHwgMWUtNixcbiAgICAgICAgICByID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSxcbiAgICAgICAgICBrID0gKHJhZGl1c2VzW2ldIC0gcikgKiBzdHJlbmd0aHNbaV0gKiBhbHBoYSAvIHI7XG4gICAgICBub2RlLnZ4ICs9IGR4ICogaztcbiAgICAgIG5vZGUudnkgKz0gZHkgKiBrO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICByYWRpdXNlcyA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICByYWRpdXNlc1tpXSA9ICtyYWRpdXMobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICAgIHN0cmVuZ3Roc1tpXSA9IGlzTmFOKHJhZGl1c2VzW2ldKSA/IDAgOiArc3RyZW5ndGgobm9kZXNbaV0sIGksIG5vZGVzKTtcbiAgICB9XG4gIH1cblxuICBmb3JjZS5pbml0aWFsaXplID0gZnVuY3Rpb24oXykge1xuICAgIG5vZGVzID0gXywgaW5pdGlhbGl6ZSgpO1xuICB9O1xuXG4gIGZvcmNlLnN0cmVuZ3RoID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0cmVuZ3RoID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGluaXRpYWxpemUoKSwgZm9yY2UpIDogc3RyZW5ndGg7XG4gIH07XG5cbiAgZm9yY2UucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHJhZGl1cztcbiAgfTtcblxuICBmb3JjZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSArXywgZm9yY2UpIDogeDtcbiAgfTtcblxuICBmb3JjZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSArXywgZm9yY2UpIDogeTtcbiAgfTtcblxuICByZXR1cm4gZm9yY2U7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/radial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/simulation.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-force/src/simulation.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"x\": () => (/* binding */ x),\n/* harmony export */ \"y\": () => (/* binding */ y)\n/* harmony export */ });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-timer */ \"../../../node_modules/d3-timer/src/timer.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lcg.js */ \"../../../node_modules/d3-force/src/lcg.js\");\n\n\n\n\nfunction x(d) {\n return d.x;\n}\n\nfunction y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = (0,d3_timer__WEBPACK_IMPORTED_MODULE_0__.timer)(step),\n event = (0,d3_dispatch__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"tick\", \"end\"),\n random = (0,_lcg_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFxQztBQUNOO0FBQ0o7O0FBRXBCO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrQ0FBSztBQUNyQixjQUFjLHVEQUFRO0FBQ3RCLGVBQWUsbURBQUc7O0FBRWxCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQLGtCQUFrQixPQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy9zaW11bGF0aW9uLmpzP2UzZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge3RpbWVyfSBmcm9tIFwiZDMtdGltZXJcIjtcbmltcG9ydCBsY2cgZnJvbSBcIi4vbGNnLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB4KGQpIHtcbiAgcmV0dXJuIGQueDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHkoZCkge1xuICByZXR1cm4gZC55O1xufVxuXG52YXIgaW5pdGlhbFJhZGl1cyA9IDEwLFxuICAgIGluaXRpYWxBbmdsZSA9IE1hdGguUEkgKiAoMyAtIE1hdGguc3FydCg1KSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGVzKSB7XG4gIHZhciBzaW11bGF0aW9uLFxuICAgICAgYWxwaGEgPSAxLFxuICAgICAgYWxwaGFNaW4gPSAwLjAwMSxcbiAgICAgIGFscGhhRGVjYXkgPSAxIC0gTWF0aC5wb3coYWxwaGFNaW4sIDEgLyAzMDApLFxuICAgICAgYWxwaGFUYXJnZXQgPSAwLFxuICAgICAgdmVsb2NpdHlEZWNheSA9IDAuNixcbiAgICAgIGZvcmNlcyA9IG5ldyBNYXAoKSxcbiAgICAgIHN0ZXBwZXIgPSB0aW1lcihzdGVwKSxcbiAgICAgIGV2ZW50ID0gZGlzcGF0Y2goXCJ0aWNrXCIsIFwiZW5kXCIpLFxuICAgICAgcmFuZG9tID0gbGNnKCk7XG5cbiAgaWYgKG5vZGVzID09IG51bGwpIG5vZGVzID0gW107XG5cbiAgZnVuY3Rpb24gc3RlcCgpIHtcbiAgICB0aWNrKCk7XG4gICAgZXZlbnQuY2FsbChcInRpY2tcIiwgc2ltdWxhdGlvbik7XG4gICAgaWYgKGFscGhhIDwgYWxwaGFNaW4pIHtcbiAgICAgIHN0ZXBwZXIuc3RvcCgpO1xuICAgICAgZXZlbnQuY2FsbChcImVuZFwiLCBzaW11bGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGl0ZXJhdGlvbnMpIHtcbiAgICB2YXIgaSwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTtcblxuICAgIGlmIChpdGVyYXRpb25zID09PSB1bmRlZmluZWQpIGl0ZXJhdGlvbnMgPSAxO1xuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBpdGVyYXRpb25zOyArK2spIHtcbiAgICAgIGFscGhhICs9IChhbHBoYVRhcmdldCAtIGFscGhhKSAqIGFscGhhRGVjYXk7XG5cbiAgICAgIGZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGZvcmNlKSB7XG4gICAgICAgIGZvcmNlKGFscGhhKTtcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5vZGUgPSBub2Rlc1tpXTtcbiAgICAgICAgaWYgKG5vZGUuZnggPT0gbnVsbCkgbm9kZS54ICs9IG5vZGUudnggKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnggPSBub2RlLmZ4LCBub2RlLnZ4ID0gMDtcbiAgICAgICAgaWYgKG5vZGUuZnkgPT0gbnVsbCkgbm9kZS55ICs9IG5vZGUudnkgKj0gdmVsb2NpdHlEZWNheTtcbiAgICAgICAgZWxzZSBub2RlLnkgPSBub2RlLmZ5LCBub2RlLnZ5ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2ltdWxhdGlvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVOb2RlcygpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IG5vZGVzLmxlbmd0aCwgbm9kZTsgaSA8IG47ICsraSkge1xuICAgICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLmluZGV4ID0gaTtcbiAgICAgIGlmIChub2RlLmZ4ICE9IG51bGwpIG5vZGUueCA9IG5vZGUuZng7XG4gICAgICBpZiAobm9kZS5meSAhPSBudWxsKSBub2RlLnkgPSBub2RlLmZ5O1xuICAgICAgaWYgKGlzTmFOKG5vZGUueCkgfHwgaXNOYU4obm9kZS55KSkge1xuICAgICAgICB2YXIgcmFkaXVzID0gaW5pdGlhbFJhZGl1cyAqIE1hdGguc3FydCgwLjUgKyBpKSwgYW5nbGUgPSBpICogaW5pdGlhbEFuZ2xlO1xuICAgICAgICBub2RlLnggPSByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSk7XG4gICAgICAgIG5vZGUueSA9IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05hTihub2RlLnZ4KSB8fCBpc05hTihub2RlLnZ5KSkge1xuICAgICAgICBub2RlLnZ4ID0gbm9kZS52eSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZvcmNlKGZvcmNlKSB7XG4gICAgaWYgKGZvcmNlLmluaXRpYWxpemUpIGZvcmNlLmluaXRpYWxpemUobm9kZXMsIHJhbmRvbSk7XG4gICAgcmV0dXJuIGZvcmNlO1xuICB9XG5cbiAgaW5pdGlhbGl6ZU5vZGVzKCk7XG5cbiAgcmV0dXJuIHNpbXVsYXRpb24gPSB7XG4gICAgdGljazogdGljayxcblxuICAgIHJlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHN0ZXBwZXIucmVzdGFydChzdGVwKSwgc2ltdWxhdGlvbjtcbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gc3RlcHBlci5zdG9wKCksIHNpbXVsYXRpb247XG4gICAgfSxcblxuICAgIG5vZGVzOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlcyA9IF8sIGluaXRpYWxpemVOb2RlcygpLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IG5vZGVzO1xuICAgIH0sXG5cbiAgICBhbHBoYTogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGEgPSArXywgc2ltdWxhdGlvbikgOiBhbHBoYTtcbiAgICB9LFxuXG4gICAgYWxwaGFNaW46IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhTWluID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFNaW47XG4gICAgfSxcblxuICAgIGFscGhhRGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhRGVjYXkgPSArXywgc2ltdWxhdGlvbikgOiArYWxwaGFEZWNheTtcbiAgICB9LFxuXG4gICAgYWxwaGFUYXJnZXQ6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhVGFyZ2V0ID0gK18sIHNpbXVsYXRpb24pIDogYWxwaGFUYXJnZXQ7XG4gICAgfSxcblxuICAgIHZlbG9jaXR5RGVjYXk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZlbG9jaXR5RGVjYXkgPSAxIC0gXywgc2ltdWxhdGlvbikgOiAxIC0gdmVsb2NpdHlEZWNheTtcbiAgICB9LFxuXG4gICAgcmFuZG9tU291cmNlOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5kb20gPSBfLCBmb3JjZXMuZm9yRWFjaChpbml0aWFsaXplRm9yY2UpLCBzaW11bGF0aW9uKSA6IHJhbmRvbTtcbiAgICB9LFxuXG4gICAgZm9yY2U6IGZ1bmN0aW9uKG5hbWUsIF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMSA/ICgoXyA9PSBudWxsID8gZm9yY2VzLmRlbGV0ZShuYW1lKSA6IGZvcmNlcy5zZXQobmFtZSwgaW5pdGlhbGl6ZUZvcmNlKF8pKSksIHNpbXVsYXRpb24pIDogZm9yY2VzLmdldChuYW1lKTtcbiAgICB9LFxuXG4gICAgZmluZDogZnVuY3Rpb24oeCwgeSwgcmFkaXVzKSB7XG4gICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBkeCxcbiAgICAgICAgICBkeSxcbiAgICAgICAgICBkMixcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGNsb3Nlc3Q7XG5cbiAgICAgIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gICAgICBlbHNlIHJhZGl1cyAqPSByYWRpdXM7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBkeCA9IHggLSBub2RlLng7XG4gICAgICAgIGR5ID0geSAtIG5vZGUueTtcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeTtcbiAgICAgICAgaWYgKGQyIDwgcmFkaXVzKSBjbG9zZXN0ID0gbm9kZSwgcmFkaXVzID0gZDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9zZXN0O1xuICAgIH0sXG5cbiAgICBvbjogZnVuY3Rpb24obmFtZSwgXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gKGV2ZW50Lm9uKG5hbWUsIF8pLCBzaW11bGF0aW9uKSA6IGV2ZW50Lm9uKG5hbWUpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/simulation.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/x.js": +/*!***********************************************!*\ + !*** ../../../node_modules/d3-force/src/x.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n var strength = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : x;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy94LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQyw2QkFBZSxvQ0FBUztBQUN4QixpQkFBaUIsd0RBQVE7QUFDekI7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyx3REFBUTs7QUFFM0M7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMveC5qcz9kY2UwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHh6O1xuXG4gIGlmICh0eXBlb2YgeCAhPT0gXCJmdW5jdGlvblwiKSB4ID0gY29uc3RhbnQoeCA9PSBudWxsID8gMCA6ICt4KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnggKz0gKHh6W2ldIC0gbm9kZS54KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB4eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih4eltpXSA9ICt4KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHg7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/x.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-force/src/y.js": +/*!***********************************************!*\ + !*** ../../../node_modules/d3-force/src/y.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-force/src/constant.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(y) {\n var strength = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), initialize(), force) : y;\n };\n\n return force;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcmNlL3NyYy95LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQyw2QkFBZSxvQ0FBUztBQUN4QixpQkFBaUIsd0RBQVE7QUFDekI7QUFDQTtBQUNBOztBQUVBLG1DQUFtQyx3REFBUTs7QUFFM0M7QUFDQSw0Q0FBNEMsT0FBTztBQUNuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JjZS9zcmMveS5qcz9kMTU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih5KSB7XG4gIHZhciBzdHJlbmd0aCA9IGNvbnN0YW50KDAuMSksXG4gICAgICBub2RlcyxcbiAgICAgIHN0cmVuZ3RocyxcbiAgICAgIHl6O1xuXG4gIGlmICh0eXBlb2YgeSAhPT0gXCJmdW5jdGlvblwiKSB5ID0gY29uc3RhbnQoeSA9PSBudWxsID8gMCA6ICt5KTtcblxuICBmdW5jdGlvbiBmb3JjZShhbHBoYSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gbm9kZXMubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUudnkgKz0gKHl6W2ldIC0gbm9kZS55KSAqIHN0cmVuZ3Roc1tpXSAqIGFscGhhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIHZhciBpLCBuID0gbm9kZXMubGVuZ3RoO1xuICAgIHN0cmVuZ3RocyA9IG5ldyBBcnJheShuKTtcbiAgICB5eiA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBzdHJlbmd0aHNbaV0gPSBpc05hTih5eltpXSA9ICt5KG5vZGVzW2ldLCBpLCBub2RlcykpID8gMCA6ICtzdHJlbmd0aChub2Rlc1tpXSwgaSwgbm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIGZvcmNlLmluaXRpYWxpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgbm9kZXMgPSBfO1xuICAgIGluaXRpYWxpemUoKTtcbiAgfTtcblxuICBmb3JjZS5zdHJlbmd0aCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdHJlbmd0aCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHN0cmVuZ3RoO1xuICB9O1xuXG4gIGZvcmNlLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBpbml0aWFsaXplKCksIGZvcmNlKSA6IHk7XG4gIH07XG5cbiAgcmV0dXJuIGZvcmNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-force/src/y.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/defaultLocale.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-format/src/defaultLocale.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultLocale),\n/* harmony export */ \"format\": () => (/* binding */ format),\n/* harmony export */ \"formatPrefix\": () => (/* binding */ formatPrefix)\n/* harmony export */ });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"../../../node_modules/d3-format/src/locale.js\");\n\n\nvar locale;\nvar format;\nvar formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = (0,_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXVDOztBQUV2QztBQUNPO0FBQ0E7O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVjO0FBQ2YsV0FBVyxzREFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzPzBhZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdExvY2FsZSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcblxudmFyIGxvY2FsZTtcbmV4cG9ydCB2YXIgZm9ybWF0O1xuZXhwb3J0IHZhciBmb3JtYXRQcmVmaXg7XG5cbmRlZmF1bHRMb2NhbGUoe1xuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/defaultLocale.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/exponent.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-format/src/exponent.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"../../../node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return x = (0,_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__.formatDecimalParts)(Math.abs(x)), x ? x[1] : NaN;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0Q7O0FBRXRELDZCQUFlLG9DQUFTO0FBQ3hCLGFBQWEscUVBQWtCO0FBQy9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2V4cG9uZW50LmpzPzkwNTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9IGZvcm1hdERlY2ltYWxQYXJ0cyhNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/exponent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatDecimal.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatDecimal.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"formatDecimalParts\": () => (/* binding */ formatDecimalParts)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nfunction formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVjaW1hbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZ0dBQWdHO0FBQ2hHOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdERlY2ltYWwuanM/MmRhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBNYXRoLmFicyh4ID0gTWF0aC5yb3VuZCh4KSkgPj0gMWUyMVxuICAgICAgPyB4LnRvTG9jYWxlU3RyaW5nKFwiZW5cIikucmVwbGFjZSgvLC9nLCBcIlwiKVxuICAgICAgOiB4LnRvU3RyaW5nKDEwKTtcbn1cblxuLy8gQ29tcHV0ZXMgdGhlIGRlY2ltYWwgY29lZmZpY2llbnQgYW5kIGV4cG9uZW50IG9mIHRoZSBzcGVjaWZpZWQgbnVtYmVyIHggd2l0aFxuLy8gc2lnbmlmaWNhbnQgZGlnaXRzIHAsIHdoZXJlIHggaXMgcG9zaXRpdmUgYW5kIHAgaXMgaW4gWzEsIDIxXSBvciB1bmRlZmluZWQuXG4vLyBGb3IgZXhhbXBsZSwgZm9ybWF0RGVjaW1hbFBhcnRzKDEuMjMpIHJldHVybnMgW1wiMTIzXCIsIDBdLlxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKSB7XG4gIGlmICgoaSA9ICh4ID0gcCA/IHgudG9FeHBvbmVudGlhbChwIC0gMSkgOiB4LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZihcImVcIikpIDwgMCkgcmV0dXJuIG51bGw7IC8vIE5hTiwgwrFJbmZpbml0eVxuICB2YXIgaSwgY29lZmZpY2llbnQgPSB4LnNsaWNlKDAsIGkpO1xuXG4gIC8vIFRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdG9FeHBvbmVudGlhbCBlaXRoZXIgaGFzIHRoZSBmb3JtIFxcZFxcLlxcZCtlWy0rXVxcZCtcbiAgLy8gKGUuZy4sIDEuMmUrMykgb3IgdGhlIGZvcm0gXFxkZVstK11cXGQrIChlLmcuLCAxZSszKS5cbiAgcmV0dXJuIFtcbiAgICBjb2VmZmljaWVudC5sZW5ndGggPiAxID8gY29lZmZpY2llbnRbMF0gKyBjb2VmZmljaWVudC5zbGljZSgyKSA6IGNvZWZmaWNpZW50LFxuICAgICt4LnNsaWNlKGkgKyAxKVxuICBdO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatDecimal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatGroup.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatGroup.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0R3JvdXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdEdyb3VwLmpzPzM1ODgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatGroup.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatNumerals.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatNumerals.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0TnVtZXJhbHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdE51bWVyYWxzLmpzP2VmYTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obnVtZXJhbHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1swLTldL2csIGZ1bmN0aW9uKGkpIHtcbiAgICAgIHJldHVybiBudW1lcmFsc1sraV07XG4gICAgfSk7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatNumerals.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatPrefixAuto.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatPrefixAuto.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"prefixExponent\": () => (/* binding */ prefixExponent)\n/* harmony export */ });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"../../../node_modules/d3-format/src/formatDecimal.js\");\n\n\nvar prefixExponent;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, p) {\n var d = (0,_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__.formatDecimalParts)(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + (0,_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__.formatDecimalParts)(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0UHJlZml4QXV0by5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0Q7O0FBRS9DOztBQUVQLDZCQUFlLG9DQUFTO0FBQ3hCLFVBQVUscUVBQWtCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMscUVBQWtCLGdDQUFnQztBQUM5RiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzP2U5ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmb3JtYXREZWNpbWFsUGFydHN9IGZyb20gXCIuL2Zvcm1hdERlY2ltYWwuanNcIjtcblxuZXhwb3J0IHZhciBwcmVmaXhFeHBvbmVudDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB2YXIgZCA9IGZvcm1hdERlY2ltYWxQYXJ0cyh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbFBhcnRzKHgsIE1hdGgubWF4KDAsIHAgKyBpIC0gMSkpWzBdOyAvLyBsZXNzIHRoYW4gMXkhXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatPrefixAuto.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatRounded.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatRounded.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"../../../node_modules/d3-format/src/formatDecimal.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, p) {\n var d = (0,_formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__.formatDecimalParts)(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDs7QUFFdEQsNkJBQWUsb0NBQVM7QUFDeEIsVUFBVSxxRUFBa0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcz9lOGY2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ybWF0RGVjaW1hbFBhcnRzfSBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHApIHtcbiAgdmFyIGQgPSBmb3JtYXREZWNpbWFsUGFydHMoeCwgcCk7XG4gIGlmICghZCkgcmV0dXJuIHggKyBcIlwiO1xuICB2YXIgY29lZmZpY2llbnQgPSBkWzBdLFxuICAgICAgZXhwb25lbnQgPSBkWzFdO1xuICByZXR1cm4gZXhwb25lbnQgPCAwID8gXCIwLlwiICsgbmV3IEFycmF5KC1leHBvbmVudCkuam9pbihcIjBcIikgKyBjb2VmZmljaWVudFxuICAgICAgOiBjb2VmZmljaWVudC5sZW5ndGggPiBleHBvbmVudCArIDEgPyBjb2VmZmljaWVudC5zbGljZSgwLCBleHBvbmVudCArIDEpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShleHBvbmVudCArIDEpXG4gICAgICA6IGNvZWZmaWNpZW50ICsgbmV3IEFycmF5KGV4cG9uZW50IC0gY29lZmZpY2llbnQubGVuZ3RoICsgMikuam9pbihcIjBcIik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatRounded.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatSpecifier.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatSpecifier.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"FormatSpecifier\": () => (/* binding */ FormatSpecifier),\n/* harmony export */ \"default\": () => (/* binding */ formatSpecifier)\n/* harmony export */ });\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0U3BlY2lmaWVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLHVEQUF1RDs7QUFFaEQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanM/YjU5OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBbW2ZpbGxdYWxpZ25dW3NpZ25dW3N5bWJvbF1bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW35dW3R5cGVdXG52YXIgcmUgPSAvXig/OiguKT8oWzw+PV5dKSk/KFsrXFwtKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyh+KT8oW2EteiVdKT8kL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgaWYgKCEobWF0Y2ggPSByZS5leGVjKHNwZWNpZmllcikpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGZvcm1hdDogXCIgKyBzcGVjaWZpZXIpO1xuICB2YXIgbWF0Y2g7XG4gIHJldHVybiBuZXcgRm9ybWF0U3BlY2lmaWVyKHtcbiAgICBmaWxsOiBtYXRjaFsxXSxcbiAgICBhbGlnbjogbWF0Y2hbMl0sXG4gICAgc2lnbjogbWF0Y2hbM10sXG4gICAgc3ltYm9sOiBtYXRjaFs0XSxcbiAgICB6ZXJvOiBtYXRjaFs1XSxcbiAgICB3aWR0aDogbWF0Y2hbNl0sXG4gICAgY29tbWE6IG1hdGNoWzddLFxuICAgIHByZWNpc2lvbjogbWF0Y2hbOF0gJiYgbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgdHJpbTogbWF0Y2hbOV0sXG4gICAgdHlwZTogbWF0Y2hbMTBdXG4gIH0pO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5leHBvcnQgZnVuY3Rpb24gRm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICB0aGlzLmZpbGwgPSBzcGVjaWZpZXIuZmlsbCA9PT0gdW5kZWZpbmVkID8gXCIgXCIgOiBzcGVjaWZpZXIuZmlsbCArIFwiXCI7XG4gIHRoaXMuYWxpZ24gPSBzcGVjaWZpZXIuYWxpZ24gPT09IHVuZGVmaW5lZCA/IFwiPlwiIDogc3BlY2lmaWVyLmFsaWduICsgXCJcIjtcbiAgdGhpcy5zaWduID0gc3BlY2lmaWVyLnNpZ24gPT09IHVuZGVmaW5lZCA/IFwiLVwiIDogc3BlY2lmaWVyLnNpZ24gKyBcIlwiO1xuICB0aGlzLnN5bWJvbCA9IHNwZWNpZmllci5zeW1ib2wgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBzcGVjaWZpZXIuc3ltYm9sICsgXCJcIjtcbiAgdGhpcy56ZXJvID0gISFzcGVjaWZpZXIuemVybztcbiAgdGhpcy53aWR0aCA9IHNwZWNpZmllci53aWR0aCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogK3NwZWNpZmllci53aWR0aDtcbiAgdGhpcy5jb21tYSA9ICEhc3BlY2lmaWVyLmNvbW1hO1xuICB0aGlzLnByZWNpc2lvbiA9IHNwZWNpZmllci5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6ICtzcGVjaWZpZXIucHJlY2lzaW9uO1xuICB0aGlzLnRyaW0gPSAhIXNwZWNpZmllci50cmltO1xuICB0aGlzLnR5cGUgPSBzcGVjaWZpZXIudHlwZSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHNwZWNpZmllci50eXBlICsgXCJcIjtcbn1cblxuRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5maWxsXG4gICAgICArIHRoaXMuYWxpZ25cbiAgICAgICsgdGhpcy5zaWduXG4gICAgICArIHRoaXMuc3ltYm9sXG4gICAgICArICh0aGlzLnplcm8gPyBcIjBcIiA6IFwiXCIpXG4gICAgICArICh0aGlzLndpZHRoID09PSB1bmRlZmluZWQgPyBcIlwiIDogTWF0aC5tYXgoMSwgdGhpcy53aWR0aCB8IDApKVxuICAgICAgKyAodGhpcy5jb21tYSA/IFwiLFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMucHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyBcIlwiIDogXCIuXCIgKyBNYXRoLm1heCgwLCB0aGlzLnByZWNpc2lvbiB8IDApKVxuICAgICAgKyAodGhpcy50cmltID8gXCJ+XCIgOiBcIlwiKVxuICAgICAgKyB0aGlzLnR5cGU7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatSpecifier.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatTrim.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatTrim.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHJpbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSw2QkFBZSxvQ0FBUztBQUN4QixrREFBa0QsT0FBTztBQUN6RDtBQUNBLDZCQUE2QjtBQUM3QixzQ0FBc0MsUUFBUTtBQUM5QyxzQ0FBc0Msb0JBQW9CO0FBQzFEO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFRyaW0uanM/YTIzNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUcmltcyBpbnNpZ25pZmljYW50IHplcm9zLCBlLmcuLCByZXBsYWNlcyAxLjIwMDBrIHdpdGggMS4yay5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHMpIHtcbiAgb3V0OiBmb3IgKHZhciBuID0gcy5sZW5ndGgsIGkgPSAxLCBpMCA9IC0xLCBpMTsgaSA8IG47ICsraSkge1xuICAgIHN3aXRjaCAoc1tpXSkge1xuICAgICAgY2FzZSBcIi5cIjogaTAgPSBpMSA9IGk7IGJyZWFrO1xuICAgICAgY2FzZSBcIjBcIjogaWYgKGkwID09PSAwKSBpMCA9IGk7IGkxID0gaTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBpZiAoIStzW2ldKSBicmVhayBvdXQ7IGlmIChpMCA+IDApIGkwID0gMDsgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBpMCA+IDAgPyBzLnNsaWNlKDAsIGkwKSArIHMuc2xpY2UoaTEgKyAxKSA6IHM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatTrim.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/formatTypes.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-format/src/formatTypes.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./formatDecimal.js */ \"../../../node_modules/d3-format/src/formatDecimal.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"../../../node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatRounded.js */ \"../../../node_modules/d3-format/src/formatRounded.js\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": _formatDecimal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => (0,_formatRounded_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(x * 100, p),\n \"r\": _formatRounded_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n \"s\": _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUErQztBQUNNO0FBQ047O0FBRS9DLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsT0FBTyx5REFBYTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2REFBYTtBQUM5QixPQUFPLHlEQUFhO0FBQ3BCLE9BQU8sNERBQWdCO0FBQ3ZCO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0VHlwZXMuanM/OGRkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZm9ybWF0RGVjaW1hbCBmcm9tIFwiLi9mb3JtYXREZWNpbWFsLmpzXCI7XG5pbXBvcnQgZm9ybWF0UHJlZml4QXV0byBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvLmpzXCI7XG5pbXBvcnQgZm9ybWF0Um91bmRlZCBmcm9tIFwiLi9mb3JtYXRSb3VuZGVkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCIlXCI6ICh4LCBwKSA9PiAoeCAqIDEwMCkudG9GaXhlZChwKSxcbiAgXCJiXCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpLFxuICBcImNcIjogKHgpID0+IHggKyBcIlwiLFxuICBcImRcIjogZm9ybWF0RGVjaW1hbCxcbiAgXCJlXCI6ICh4LCBwKSA9PiB4LnRvRXhwb25lbnRpYWwocCksXG4gIFwiZlwiOiAoeCwgcCkgPT4geC50b0ZpeGVkKHApLFxuICBcImdcIjogKHgsIHApID0+IHgudG9QcmVjaXNpb24ocCksXG4gIFwib1wiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZyg4KSxcbiAgXCJwXCI6ICh4LCBwKSA9PiBmb3JtYXRSb3VuZGVkKHggKiAxMDAsIHApLFxuICBcInJcIjogZm9ybWF0Um91bmRlZCxcbiAgXCJzXCI6IGZvcm1hdFByZWZpeEF1dG8sXG4gIFwiWFwiOiAoeCkgPT4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSxcbiAgXCJ4XCI6ICh4KSA9PiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDE2KVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/formatTypes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/identity.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-format/src/identity.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaWRlbnRpdHkuanM/MTI0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/index.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-format/src/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"FormatSpecifier\": () => (/* reexport safe */ _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__.FormatSpecifier),\n/* harmony export */ \"format\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.format),\n/* harmony export */ \"formatDefaultLocale\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"formatLocale\": () => (/* reexport safe */ _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"formatPrefix\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.formatPrefix),\n/* harmony export */ \"formatSpecifier\": () => (/* reexport safe */ _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"precisionFixed\": () => (/* reexport safe */ _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"precisionPrefix\": () => (/* reexport safe */ _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"precisionRound\": () => (/* reexport safe */ _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"../../../node_modules/d3-format/src/defaultLocale.js\");\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"../../../node_modules/d3-format/src/locale.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatSpecifier.js */ \"../../../node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _precisionFixed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./precisionFixed.js */ \"../../../node_modules/d3-format/src/precisionFixed.js\");\n/* harmony import */ var _precisionPrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./precisionPrefix.js */ \"../../../node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony import */ var _precisionRound_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./precisionRound.js */ \"../../../node_modules/d3-format/src/precisionRound.js\");\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdGO0FBQ3BDO0FBQzZCO0FBQ25CO0FBQ0U7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9pbmRleC5qcz84MDZlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBmb3JtYXREZWZhdWx0TG9jYWxlLCBmb3JtYXQsIGZvcm1hdFByZWZpeH0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZvcm1hdExvY2FsZX0gZnJvbSBcIi4vbG9jYWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZm9ybWF0U3BlY2lmaWVyLCBGb3JtYXRTcGVjaWZpZXJ9IGZyb20gXCIuL2Zvcm1hdFNwZWNpZmllci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZWNpc2lvbkZpeGVkfSBmcm9tIFwiLi9wcmVjaXNpb25GaXhlZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZWNpc2lvblByZWZpeH0gZnJvbSBcIi4vcHJlY2lzaW9uUHJlZml4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlY2lzaW9uUm91bmR9IGZyb20gXCIuL3ByZWNpc2lvblJvdW5kLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/locale.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-format/src/locale.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./exponent.js */ \"../../../node_modules/d3-format/src/exponent.js\");\n/* harmony import */ var _formatGroup_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./formatGroup.js */ \"../../../node_modules/d3-format/src/formatGroup.js\");\n/* harmony import */ var _formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./formatNumerals.js */ \"../../../node_modules/d3-format/src/formatNumerals.js\");\n/* harmony import */ var _formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatSpecifier.js */ \"../../../node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var _formatTrim_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./formatTrim.js */ \"../../../node_modules/d3-format/src/formatTrim.js\");\n/* harmony import */ var _formatTypes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./formatTypes.js */ \"../../../node_modules/d3-format/src/formatTypes.js\");\n/* harmony import */ var _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./formatPrefixAuto.js */ \"../../../node_modules/d3-format/src/formatPrefixAuto.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-format/src/identity.js\");\n\n\n\n\n\n\n\n\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : (0,_formatGroup_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : (0,_formatNumerals_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = (0,_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!_formatTypes_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"][type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = _formatTypes_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"][type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = (0,_formatTrim_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + _formatPrefixAuto_js__WEBPACK_IMPORTED_MODULE_6__.prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = (0,_formatSpecifier_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor((0,_exponent_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvbG9jYWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFxQztBQUNNO0FBQ007QUFDRTtBQUNWO0FBQ0U7QUFDVTtBQUNoQjs7QUFFckM7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QixnRkFBZ0Ysb0RBQVEsR0FBRywyREFBVztBQUN0RztBQUNBO0FBQ0E7QUFDQSxpREFBaUQsb0RBQVEsR0FBRyw4REFBYztBQUMxRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsK0RBQWU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLHVEQUFXOztBQUV6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQix1REFBVztBQUNoQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCLDBEQUFVOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxtREFBbUQsZ0VBQWM7O0FBRWpFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFDdkUsc0lBQXNJO0FBQ3RJLHNFQUFzRTtBQUN0RTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUNBQW1DLCtEQUFlO0FBQ2xELGdEQUFnRCx3REFBUTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9sb2NhbGUuanM/ZjE3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcbmltcG9ydCBmb3JtYXRHcm91cCBmcm9tIFwiLi9mb3JtYXRHcm91cC5qc1wiO1xuaW1wb3J0IGZvcm1hdE51bWVyYWxzIGZyb20gXCIuL2Zvcm1hdE51bWVyYWxzLmpzXCI7XG5pbXBvcnQgZm9ybWF0U3BlY2lmaWVyIGZyb20gXCIuL2Zvcm1hdFNwZWNpZmllci5qc1wiO1xuaW1wb3J0IGZvcm1hdFRyaW0gZnJvbSBcIi4vZm9ybWF0VHJpbS5qc1wiO1xuaW1wb3J0IGZvcm1hdFR5cGVzIGZyb20gXCIuL2Zvcm1hdFR5cGVzLmpzXCI7XG5pbXBvcnQge3ByZWZpeEV4cG9uZW50fSBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvLmpzXCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHkuanNcIjtcblxudmFyIG1hcCA9IEFycmF5LnByb3RvdHlwZS5tYXAsXG4gICAgcHJlZml4ZXMgPSBbXCJ5XCIsXCJ6XCIsXCJhXCIsXCJmXCIsXCJwXCIsXCJuXCIsXCLCtVwiLFwibVwiLFwiXCIsXCJrXCIsXCJNXCIsXCJHXCIsXCJUXCIsXCJQXCIsXCJFXCIsXCJaXCIsXCJZXCJdO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihsb2NhbGUpIHtcbiAgdmFyIGdyb3VwID0gbG9jYWxlLmdyb3VwaW5nID09PSB1bmRlZmluZWQgfHwgbG9jYWxlLnRob3VzYW5kcyA9PT0gdW5kZWZpbmVkID8gaWRlbnRpdHkgOiBmb3JtYXRHcm91cChtYXAuY2FsbChsb2NhbGUuZ3JvdXBpbmcsIE51bWJlciksIGxvY2FsZS50aG91c2FuZHMgKyBcIlwiKSxcbiAgICAgIGN1cnJlbmN5UHJlZml4ID0gbG9jYWxlLmN1cnJlbmN5ID09PSB1bmRlZmluZWQgPyBcIlwiIDogbG9jYWxlLmN1cnJlbmN5WzBdICsgXCJcIixcbiAgICAgIGN1cnJlbmN5U3VmZml4ID0gbG9jYWxlLmN1cnJlbmN5ID09PSB1bmRlZmluZWQgPyBcIlwiIDogbG9jYWxlLmN1cnJlbmN5WzFdICsgXCJcIixcbiAgICAgIGRlY2ltYWwgPSBsb2NhbGUuZGVjaW1hbCA9PT0gdW5kZWZpbmVkID8gXCIuXCIgOiBsb2NhbGUuZGVjaW1hbCArIFwiXCIsXG4gICAgICBudW1lcmFscyA9IGxvY2FsZS5udW1lcmFscyA9PT0gdW5kZWZpbmVkID8gaWRlbnRpdHkgOiBmb3JtYXROdW1lcmFscyhtYXAuY2FsbChsb2NhbGUubnVtZXJhbHMsIFN0cmluZykpLFxuICAgICAgcGVyY2VudCA9IGxvY2FsZS5wZXJjZW50ID09PSB1bmRlZmluZWQgPyBcIiVcIiA6IGxvY2FsZS5wZXJjZW50ICsgXCJcIixcbiAgICAgIG1pbnVzID0gbG9jYWxlLm1pbnVzID09PSB1bmRlZmluZWQgPyBcIuKIklwiIDogbG9jYWxlLm1pbnVzICsgXCJcIixcbiAgICAgIG5hbiA9IGxvY2FsZS5uYW4gPT09IHVuZGVmaW5lZCA/IFwiTmFOXCIgOiBsb2NhbGUubmFuICsgXCJcIjtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyKSB7XG4gICAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICB2YXIgZmlsbCA9IHNwZWNpZmllci5maWxsLFxuICAgICAgICBhbGlnbiA9IHNwZWNpZmllci5hbGlnbixcbiAgICAgICAgc2lnbiA9IHNwZWNpZmllci5zaWduLFxuICAgICAgICBzeW1ib2wgPSBzcGVjaWZpZXIuc3ltYm9sLFxuICAgICAgICB6ZXJvID0gc3BlY2lmaWVyLnplcm8sXG4gICAgICAgIHdpZHRoID0gc3BlY2lmaWVyLndpZHRoLFxuICAgICAgICBjb21tYSA9IHNwZWNpZmllci5jb21tYSxcbiAgICAgICAgcHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbixcbiAgICAgICAgdHJpbSA9IHNwZWNpZmllci50cmltLFxuICAgICAgICB0eXBlID0gc3BlY2lmaWVyLnR5cGU7XG5cbiAgICAvLyBUaGUgXCJuXCIgdHlwZSBpcyBhbiBhbGlhcyBmb3IgXCIsZ1wiLlxuICAgIGlmICh0eXBlID09PSBcIm5cIikgY29tbWEgPSB0cnVlLCB0eXBlID0gXCJnXCI7XG5cbiAgICAvLyBUaGUgXCJcIiB0eXBlLCBhbmQgYW55IGludmFsaWQgdHlwZSwgaXMgYW4gYWxpYXMgZm9yIFwiLjEyfmdcIi5cbiAgICBlbHNlIGlmICghZm9ybWF0VHlwZXNbdHlwZV0pIHByZWNpc2lvbiA9PT0gdW5kZWZpbmVkICYmIChwcmVjaXNpb24gPSAxMiksIHRyaW0gPSB0cnVlLCB0eXBlID0gXCJnXCI7XG5cbiAgICAvLyBJZiB6ZXJvIGZpbGwgaXMgc3BlY2lmaWVkLCBwYWRkaW5nIGdvZXMgYWZ0ZXIgc2lnbiBhbmQgYmVmb3JlIGRpZ2l0cy5cbiAgICBpZiAoemVybyB8fCAoZmlsbCA9PT0gXCIwXCIgJiYgYWxpZ24gPT09IFwiPVwiKSkgemVybyA9IHRydWUsIGZpbGwgPSBcIjBcIiwgYWxpZ24gPSBcIj1cIjtcblxuICAgIC8vIENvbXB1dGUgdGhlIHByZWZpeCBhbmQgc3VmZml4LlxuICAgIC8vIEZvciBTSS1wcmVmaXgsIHRoZSBzdWZmaXggaXMgbGF6aWx5IGNvbXB1dGVkLlxuICAgIHZhciBwcmVmaXggPSBzeW1ib2wgPT09IFwiJFwiID8gY3VycmVuY3lQcmVmaXggOiBzeW1ib2wgPT09IFwiI1wiICYmIC9bYm94WF0vLnRlc3QodHlwZSkgPyBcIjBcIiArIHR5cGUudG9Mb3dlckNhc2UoKSA6IFwiXCIsXG4gICAgICAgIHN1ZmZpeCA9IHN5bWJvbCA9PT0gXCIkXCIgPyBjdXJyZW5jeVN1ZmZpeCA6IC9bJXBdLy50ZXN0KHR5cGUpID8gcGVyY2VudCA6IFwiXCI7XG5cbiAgICAvLyBXaGF0IGZvcm1hdCBmdW5jdGlvbiBzaG91bGQgd2UgdXNlP1xuICAgIC8vIElzIHRoaXMgYW4gaW50ZWdlciB0eXBlP1xuICAgIC8vIENhbiB0aGlzIHR5cGUgZ2VuZXJhdGUgZXhwb25lbnRpYWwgbm90YXRpb24/XG4gICAgdmFyIGZvcm1hdFR5cGUgPSBmb3JtYXRUeXBlc1t0eXBlXSxcbiAgICAgICAgbWF5YmVTdWZmaXggPSAvW2RlZmdwcnMlXS8udGVzdCh0eXBlKTtcblxuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBwcmVjaXNpb24gaWYgbm90IHNwZWNpZmllZCxcbiAgICAvLyBvciBjbGFtcCB0aGUgc3BlY2lmaWVkIHByZWNpc2lvbiB0byB0aGUgc3VwcG9ydGVkIHJhbmdlLlxuICAgIC8vIEZvciBzaWduaWZpY2FudCBwcmVjaXNpb24sIGl0IG11c3QgYmUgaW4gWzEsIDIxXS5cbiAgICAvLyBGb3IgZml4ZWQgcHJlY2lzaW9uLCBpdCBtdXN0IGJlIGluIFswLCAyMF0uXG4gICAgcHJlY2lzaW9uID0gcHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyA2XG4gICAgICAgIDogL1tncHJzXS8udGVzdCh0eXBlKSA/IE1hdGgubWF4KDEsIE1hdGgubWluKDIxLCBwcmVjaXNpb24pKVxuICAgICAgICA6IE1hdGgubWF4KDAsIE1hdGgubWluKDIwLCBwcmVjaXNpb24pKTtcblxuICAgIGZ1bmN0aW9uIGZvcm1hdCh2YWx1ZSkge1xuICAgICAgdmFyIHZhbHVlUHJlZml4ID0gcHJlZml4LFxuICAgICAgICAgIHZhbHVlU3VmZml4ID0gc3VmZml4LFxuICAgICAgICAgIGksIG4sIGM7XG5cbiAgICAgIGlmICh0eXBlID09PSBcImNcIikge1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9IGZvcm1hdFR5cGUodmFsdWUpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgIHZhbHVlID0gXCJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gK3ZhbHVlO1xuXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgc2lnbi4gLTAgaXMgbm90IGxlc3MgdGhhbiAwLCBidXQgMSAvIC0wIGlzIVxuICAgICAgICB2YXIgdmFsdWVOZWdhdGl2ZSA9IHZhbHVlIDwgMCB8fCAxIC8gdmFsdWUgPCAwO1xuXG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIGluaXRpYWwgZm9ybWF0dGluZy5cbiAgICAgICAgdmFsdWUgPSBpc05hTih2YWx1ZSkgPyBuYW4gOiBmb3JtYXRUeXBlKE1hdGguYWJzKHZhbHVlKSwgcHJlY2lzaW9uKTtcblxuICAgICAgICAvLyBUcmltIGluc2lnbmlmaWNhbnQgemVyb3MuXG4gICAgICAgIGlmICh0cmltKSB2YWx1ZSA9IGZvcm1hdFRyaW0odmFsdWUpO1xuXG4gICAgICAgIC8vIElmIGEgbmVnYXRpdmUgdmFsdWUgcm91bmRzIHRvIHplcm8gYWZ0ZXIgZm9ybWF0dGluZywgYW5kIG5vIGV4cGxpY2l0IHBvc2l0aXZlIHNpZ24gaXMgcmVxdWVzdGVkLCBoaWRlIHRoZSBzaWduLlxuICAgICAgICBpZiAodmFsdWVOZWdhdGl2ZSAmJiArdmFsdWUgPT09IDAgJiYgc2lnbiAhPT0gXCIrXCIpIHZhbHVlTmVnYXRpdmUgPSBmYWxzZTtcblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBwcmVmaXggYW5kIHN1ZmZpeC5cbiAgICAgICAgdmFsdWVQcmVmaXggPSAodmFsdWVOZWdhdGl2ZSA/IChzaWduID09PSBcIihcIiA/IHNpZ24gOiBtaW51cykgOiBzaWduID09PSBcIi1cIiB8fCBzaWduID09PSBcIihcIiA/IFwiXCIgOiBzaWduKSArIHZhbHVlUHJlZml4O1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9ICh0eXBlID09PSBcInNcIiA/IHByZWZpeGVzWzggKyBwcmVmaXhFeHBvbmVudCAvIDNdIDogXCJcIikgKyB2YWx1ZVN1ZmZpeCArICh2YWx1ZU5lZ2F0aXZlICYmIHNpZ24gPT09IFwiKFwiID8gXCIpXCIgOiBcIlwiKTtcblxuICAgICAgICAvLyBCcmVhayB0aGUgZm9ybWF0dGVkIHZhbHVlIGludG8gdGhlIGludGVnZXIg4oCcdmFsdWXigJ0gcGFydCB0aGF0IGNhbiBiZVxuICAgICAgICAvLyBncm91cGVkLCBhbmQgZnJhY3Rpb25hbCBvciBleHBvbmVudGlhbCDigJxzdWZmaXjigJ0gcGFydCB0aGF0IGlzIG5vdC5cbiAgICAgICAgaWYgKG1heWJlU3VmZml4KSB7XG4gICAgICAgICAgaSA9IC0xLCBuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgICAgICBpZiAoYyA9IHZhbHVlLmNoYXJDb2RlQXQoaSksIDQ4ID4gYyB8fCBjID4gNTcpIHtcbiAgICAgICAgICAgICAgdmFsdWVTdWZmaXggPSAoYyA9PT0gNDYgPyBkZWNpbWFsICsgdmFsdWUuc2xpY2UoaSArIDEpIDogdmFsdWUuc2xpY2UoaSkpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgbm90IFwiMFwiLCBncm91cGluZyBpcyBhcHBsaWVkIGJlZm9yZSBwYWRkaW5nLlxuICAgICAgaWYgKGNvbW1hICYmICF6ZXJvKSB2YWx1ZSA9IGdyb3VwKHZhbHVlLCBJbmZpbml0eSk7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHBhZGRpbmcuXG4gICAgICB2YXIgbGVuZ3RoID0gdmFsdWVQcmVmaXgubGVuZ3RoICsgdmFsdWUubGVuZ3RoICsgdmFsdWVTdWZmaXgubGVuZ3RoLFxuICAgICAgICAgIHBhZGRpbmcgPSBsZW5ndGggPCB3aWR0aCA/IG5ldyBBcnJheSh3aWR0aCAtIGxlbmd0aCArIDEpLmpvaW4oZmlsbCkgOiBcIlwiO1xuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgXCIwXCIsIGdyb3VwaW5nIGlzIGFwcGxpZWQgYWZ0ZXIgcGFkZGluZy5cbiAgICAgIGlmIChjb21tYSAmJiB6ZXJvKSB2YWx1ZSA9IGdyb3VwKHBhZGRpbmcgKyB2YWx1ZSwgcGFkZGluZy5sZW5ndGggPyB3aWR0aCAtIHZhbHVlU3VmZml4Lmxlbmd0aCA6IEluZmluaXR5KSwgcGFkZGluZyA9IFwiXCI7XG5cbiAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBmaW5hbCBvdXRwdXQgYmFzZWQgb24gdGhlIGRlc2lyZWQgYWxpZ25tZW50LlxuICAgICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgICBjYXNlIFwiPFwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeCArIHBhZGRpbmc7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiPVwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgcGFkZGluZyArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiXlwiOiB2YWx1ZSA9IHBhZGRpbmcuc2xpY2UoMCwgbGVuZ3RoID0gcGFkZGluZy5sZW5ndGggPj4gMSkgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXggKyBwYWRkaW5nLnNsaWNlKGxlbmd0aCk7IGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiB2YWx1ZSA9IHBhZGRpbmcgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVtZXJhbHModmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllciArIFwiXCI7XG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQcmVmaXgoc3BlY2lmaWVyLCB2YWx1ZSkge1xuICAgIHZhciBmID0gbmV3Rm9ybWF0KChzcGVjaWZpZXIgPSBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSwgc3BlY2lmaWVyLnR5cGUgPSBcImZcIiwgc3BlY2lmaWVyKSksXG4gICAgICAgIGUgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCh2YWx1ZSkgLyAzKSkpICogMyxcbiAgICAgICAgayA9IE1hdGgucG93KDEwLCAtZSksXG4gICAgICAgIHByZWZpeCA9IHByZWZpeGVzWzggKyBlIC8gM107XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZihrICogdmFsdWUpICsgcHJlZml4O1xuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZvcm1hdDogbmV3Rm9ybWF0LFxuICAgIGZvcm1hdFByZWZpeDogZm9ybWF0UHJlZml4XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/locale.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/precisionFixed.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-format/src/precisionFixed.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"../../../node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(step) {\n return Math.max(0, -(0,_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uRml4ZWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLDZCQUFlLG9DQUFTO0FBQ3hCLHNCQUFzQix3REFBUTtBQUM5QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9wcmVjaXNpb25GaXhlZC5qcz84OWFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwKSB7XG4gIHJldHVybiBNYXRoLm1heCgwLCAtZXhwb25lbnQoTWF0aC5hYnMoc3RlcCkpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/precisionFixed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/precisionPrefix.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-format/src/precisionPrefix.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"../../../node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor((0,_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) / 3))) * 3 - (0,_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Math.abs(step)));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQyw2QkFBZSxvQ0FBUztBQUN4Qix5REFBeUQsd0RBQVEscUJBQXFCLHdEQUFRO0FBQzlGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvblByZWZpeC5qcz82MzNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCB2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5tYXgoLTgsIE1hdGgubWluKDgsIE1hdGguZmxvb3IoZXhwb25lbnQodmFsdWUpIC8gMykpKSAqIDMgLSBleHBvbmVudChNYXRoLmFicyhzdGVwKSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/precisionPrefix.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-format/src/precisionRound.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-format/src/precisionRound.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _exponent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exponent.js */ \"../../../node_modules/d3-format/src/exponent.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, (0,_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(max) - (0,_exponent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(step)) + 1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EscUJBQXFCLHdEQUFRLFFBQVEsd0RBQVE7QUFDN0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanM/ZDkxYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgbWF4KSB7XG4gIHN0ZXAgPSBNYXRoLmFicyhzdGVwKSwgbWF4ID0gTWF0aC5hYnMobWF4KSAtIHN0ZXA7XG4gIHJldHVybiBNYXRoLm1heCgwLCBleHBvbmVudChtYXgpIC0gZXhwb25lbnQoc3RlcCkpICsgMTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-format/src/precisionRound.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/area.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-geo/src/area.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"areaRingSum\": () => (/* binding */ areaRingSum),\n/* harmony export */ \"areaStream\": () => (/* binding */ areaStream),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n\n// hello?\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nvar areaStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n polygonStart: function() {\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_2__.tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n },\n sphere: function() {\n areaSum.add(_math_js__WEBPACK_IMPORTED_MODULE_2__.tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_2__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_2__.radians;\n lambda0 = lambda, cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.cos)(phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__.quarterPi), sinPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.sin)(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_2__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_2__.radians;\n phi = phi / 2 + _math_js__WEBPACK_IMPORTED_MODULE_2__.quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.cos)(phi),\n sinPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.sin)(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.cos)(adLambda),\n v = k * sdLambda * (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.sin)(adLambda);\n areaRingSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__.atan2)(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object) {\n areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, areaStream);\n return areaSum * 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYXJlYS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQStCO0FBQ29DO0FBQ3RDO0FBQ0k7O0FBRTFCLHNCQUFzQiwyQ0FBSzs7QUFFbEM7O0FBRUEsa0JBQWtCLDJDQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTLGdEQUFJO0FBQ2IsYUFBYSxnREFBSTtBQUNqQixXQUFXLGdEQUFJO0FBQ2Y7QUFDQSxzQkFBc0IsMkNBQUs7QUFDM0I7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsK0JBQStCLHlDQUFHO0FBQ2xDLGlEQUFpRCxnREFBSTtBQUNyRCxHQUFHO0FBQ0g7QUFDQSxnQkFBZ0IseUNBQUc7QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkNBQU8sU0FBUyw2Q0FBTztBQUNuQyw4QkFBOEIsNkNBQUcsaUJBQWlCLCtDQUFTLGFBQWEsNkNBQUc7QUFDM0U7O0FBRUE7QUFDQSxZQUFZLDZDQUFPLFNBQVMsNkNBQU87QUFDbkMsa0JBQWtCLCtDQUFTLEVBQUU7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkNBQUc7QUFDbEIsZUFBZSw2Q0FBRztBQUNsQjtBQUNBLGlDQUFpQyw2Q0FBRztBQUNwQyx5QkFBeUIsNkNBQUc7QUFDNUIsa0JBQWtCLCtDQUFLOztBQUV2QjtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEIsZ0JBQWdCLDJDQUFLO0FBQ3JCLEVBQUUsc0RBQU07QUFDUjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2FyZWEuanM/YmE3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YXRhbjIsIGNvcywgcXVhcnRlclBpLCByYWRpYW5zLCBzaW4sIHRhdX0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4vbm9vcC5qc1wiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi9zdHJlYW0uanNcIjtcblxuZXhwb3J0IHZhciBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpO1xuXG4vLyBoZWxsbz9cblxudmFyIGFyZWFTdW0gPSBuZXcgQWRkZXIoKSxcbiAgICBsYW1iZGEwMCxcbiAgICBwaGkwMCxcbiAgICBsYW1iZGEwLFxuICAgIGNvc1BoaTAsXG4gICAgc2luUGhpMDtcblxuZXhwb3J0IHZhciBhcmVhU3RyZWFtID0ge1xuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFSaW5nU3VtID0gbmV3IEFkZGVyKCk7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhUmluZ1N0YXJ0O1xuICAgIGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJlYVJpbmcgPSArYXJlYVJpbmdTdW07XG4gICAgYXJlYVN1bS5hZGQoYXJlYVJpbmcgPCAwID8gdGF1ICsgYXJlYVJpbmcgOiBhcmVhUmluZyk7XG4gICAgdGhpcy5saW5lU3RhcnQgPSB0aGlzLmxpbmVFbmQgPSB0aGlzLnBvaW50ID0gbm9vcDtcbiAgfSxcbiAgc3BoZXJlOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3VtLmFkZCh0YXUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhcmVhUmluZ1N0YXJ0KCkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50Rmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGFyZWFSaW5nRW5kKCkge1xuICBhcmVhUG9pbnQobGFtYmRhMDAsIHBoaTAwKTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QobGFtYmRhLCBwaGkpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludDtcbiAgbGFtYmRhMDAgPSBsYW1iZGEsIHBoaTAwID0gcGhpO1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIGNvc1BoaTAgPSBjb3MocGhpID0gcGhpIC8gMiArIHF1YXJ0ZXJQaSksIHNpblBoaTAgPSBzaW4ocGhpKTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgcGhpID0gcGhpIC8gMiArIHF1YXJ0ZXJQaTsgLy8gaGFsZiB0aGUgYW5ndWxhciBkaXN0YW5jZSBmcm9tIHNvdXRoIHBvbGVcblxuICAvLyBTcGhlcmljYWwgZXhjZXNzIEUgZm9yIGEgc3BoZXJpY2FsIHRyaWFuZ2xlIHdpdGggdmVydGljZXM6IHNvdXRoIHBvbGUsXG4gIC8vIHByZXZpb3VzIHBvaW50LCBjdXJyZW50IHBvaW50LiAgVXNlcyBhIGZvcm11bGEgZGVyaXZlZCBmcm9tIENhZ25vbGnigJlzXG4gIC8vIHRoZW9yZW0uICBTZWUgVG9kaHVudGVyLCBTcGhlcmljYWwgVHJpZy4gKDE4NzEpLCBTZWMuIDEwMywgRXEuICgyKS5cbiAgdmFyIGRMYW1iZGEgPSBsYW1iZGEgLSBsYW1iZGEwLFxuICAgICAgc2RMYW1iZGEgPSBkTGFtYmRhID49IDAgPyAxIDogLTEsXG4gICAgICBhZExhbWJkYSA9IHNkTGFtYmRhICogZExhbWJkYSxcbiAgICAgIGNvc1BoaSA9IGNvcyhwaGkpLFxuICAgICAgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBrID0gc2luUGhpMCAqIHNpblBoaSxcbiAgICAgIHUgPSBjb3NQaGkwICogY29zUGhpICsgayAqIGNvcyhhZExhbWJkYSksXG4gICAgICB2ID0gayAqIHNkTGFtYmRhICogc2luKGFkTGFtYmRhKTtcbiAgYXJlYVJpbmdTdW0uYWRkKGF0YW4yKHYsIHUpKTtcblxuICAvLyBBZHZhbmNlIHRoZSBwcmV2aW91cyBwb2ludHMuXG4gIGxhbWJkYTAgPSBsYW1iZGEsIGNvc1BoaTAgPSBjb3NQaGksIHNpblBoaTAgPSBzaW5QaGk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9iamVjdCkge1xuICBhcmVhU3VtID0gbmV3IEFkZGVyKCk7XG4gIHN0cmVhbShvYmplY3QsIGFyZWFTdHJlYW0pO1xuICByZXR1cm4gYXJlYVN1bSAqIDI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/area.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/bounds.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-geo/src/bounds.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-geo/src/area.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cartesian.js */ \"../../../node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n _area_js__WEBPACK_IMPORTED_MODULE_1__.areaStream.polygonStart();\n },\n polygonEnd: function() {\n _area_js__WEBPACK_IMPORTED_MODULE_1__.areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (_area_js__WEBPACK_IMPORTED_MODULE_1__.areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon) phi1 = 90;\n else if (deltaSum < -_math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesian)([lambda * _math_js__WEBPACK_IMPORTED_MODULE_2__.radians, phi * _math_js__WEBPACK_IMPORTED_MODULE_2__.radians]);\n if (p0) {\n var normal = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianCross)(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianCross)(equatorial, normal);\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianNormalizeInPlace)(inflection);\n inflection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.spherical)(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * _math_js__WEBPACK_IMPORTED_MODULE_2__.degrees * sign,\n phii,\n antimeridian = (0,_math_js__WEBPACK_IMPORTED_MODULE_2__.abs)(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__.degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * _math_js__WEBPACK_IMPORTED_MODULE_2__.degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__.abs)(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n _area_js__WEBPACK_IMPORTED_MODULE_1__.areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n _area_js__WEBPACK_IMPORTED_MODULE_1__.areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n _area_js__WEBPACK_IMPORTED_MODULE_1__.areaStream.lineEnd();\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_2__.abs)(deltaSum) > _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYm91bmRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErQjtBQUNtQjtBQUM2QztBQUN0QztBQUN4Qjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyQ0FBSztBQUN4QixJQUFJLDZEQUF1QjtBQUMzQixHQUFHO0FBQ0g7QUFDQSxJQUFJLDJEQUFxQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFXO0FBQ25CLHdCQUF3Qiw2Q0FBTztBQUMvQix5QkFBeUIsNkNBQU87QUFDaEM7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVUsd0RBQVMsV0FBVyw2Q0FBTyxRQUFRLDZDQUFPO0FBQ3BEO0FBQ0EsaUJBQWlCLDZEQUFjO0FBQy9CO0FBQ0EscUJBQXFCLDZEQUFjO0FBQ25DLElBQUksd0VBQXlCO0FBQzdCLGlCQUFpQix3REFBUztBQUMxQjtBQUNBO0FBQ0Esa0NBQWtDLDZDQUFPO0FBQ3pDO0FBQ0EsdUJBQXVCLDZDQUFHO0FBQzFCO0FBQ0EsNkJBQTZCLDZDQUFPO0FBQ3BDO0FBQ0EsTUFBTTtBQUNOLDhCQUE4Qiw2Q0FBTztBQUNyQztBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZDQUFHO0FBQ3BCLElBQUk7QUFDSjtBQUNBO0FBQ0EsRUFBRSxzREFBZ0I7QUFDbEI7QUFDQTs7QUFFQTtBQUNBLEVBQUUsMERBQW9CO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQSxFQUFFLHdEQUFrQjtBQUNwQixNQUFNLDZDQUFHLGFBQWEsNkNBQU87QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQSxFQUFFLHNEQUFNOztBQUVSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEVBQTRFLFFBQVE7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYm91bmRzLmpzPzFkYWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZGRlcn0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2FyZWFTdHJlYW0sIGFyZWFSaW5nU3VtfSBmcm9tIFwiLi9hcmVhLmpzXCI7XG5pbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UsIHNwaGVyaWNhbH0gZnJvbSBcIi4vY2FydGVzaWFuLmpzXCI7XG5pbXBvcnQge2FicywgZGVncmVlcywgZXBzaWxvbiwgcmFkaWFuc30gZnJvbSBcIi4vbWF0aC5qc1wiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi9zdHJlYW0uanNcIjtcblxudmFyIGxhbWJkYTAsIHBoaTAsIGxhbWJkYTEsIHBoaTEsIC8vIGJvdW5kc1xuICAgIGxhbWJkYTIsIC8vIHByZXZpb3VzIGxhbWJkYS1jb29yZGluYXRlXG4gICAgbGFtYmRhMDAsIHBoaTAwLCAvLyBmaXJzdCBwb2ludFxuICAgIHAwLCAvLyBwcmV2aW91cyAzRCBwb2ludFxuICAgIGRlbHRhU3VtLFxuICAgIHJhbmdlcyxcbiAgICByYW5nZTtcblxudmFyIGJvdW5kc1N0cmVhbSA9IHtcbiAgcG9pbnQ6IGJvdW5kc1BvaW50LFxuICBsaW5lU3RhcnQ6IGJvdW5kc0xpbmVTdGFydCxcbiAgbGluZUVuZDogYm91bmRzTGluZUVuZCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBib3VuZHNTdHJlYW0ucG9pbnQgPSBib3VuZHNSaW5nUG9pbnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVTdGFydCA9IGJvdW5kc1JpbmdTdGFydDtcbiAgICBib3VuZHNTdHJlYW0ubGluZUVuZCA9IGJvdW5kc1JpbmdFbmQ7XG4gICAgZGVsdGFTdW0gPSBuZXcgQWRkZXIoKTtcbiAgICBhcmVhU3RyZWFtLnBvbHlnb25TdGFydCgpO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3RyZWFtLnBvbHlnb25FbmQoKTtcbiAgICBib3VuZHNTdHJlYW0ucG9pbnQgPSBib3VuZHNQb2ludDtcbiAgICBib3VuZHNTdHJlYW0ubGluZVN0YXJ0ID0gYm91bmRzTGluZVN0YXJ0O1xuICAgIGJvdW5kc1N0cmVhbS5saW5lRW5kID0gYm91bmRzTGluZUVuZDtcbiAgICBpZiAoYXJlYVJpbmdTdW0gPCAwKSBsYW1iZGEwID0gLShsYW1iZGExID0gMTgwKSwgcGhpMCA9IC0ocGhpMSA9IDkwKTtcbiAgICBlbHNlIGlmIChkZWx0YVN1bSA+IGVwc2lsb24pIHBoaTEgPSA5MDtcbiAgICBlbHNlIGlmIChkZWx0YVN1bSA8IC1lcHNpbG9uKSBwaGkwID0gLTkwO1xuICAgIHJhbmdlWzBdID0gbGFtYmRhMCwgcmFuZ2VbMV0gPSBsYW1iZGExO1xuICB9LFxuICBzcGhlcmU6IGZ1bmN0aW9uKCkge1xuICAgIGxhbWJkYTAgPSAtKGxhbWJkYTEgPSAxODApLCBwaGkwID0gLShwaGkxID0gOTApO1xuICB9XG59O1xuXG5mdW5jdGlvbiBib3VuZHNQb2ludChsYW1iZGEsIHBoaSkge1xuICByYW5nZXMucHVzaChyYW5nZSA9IFtsYW1iZGEwID0gbGFtYmRhLCBsYW1iZGExID0gbGFtYmRhXSk7XG4gIGlmIChwaGkgPCBwaGkwKSBwaGkwID0gcGhpO1xuICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbn1cblxuZnVuY3Rpb24gbGluZVBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIHZhciBwID0gY2FydGVzaWFuKFtsYW1iZGEgKiByYWRpYW5zLCBwaGkgKiByYWRpYW5zXSk7XG4gIGlmIChwMCkge1xuICAgIHZhciBub3JtYWwgPSBjYXJ0ZXNpYW5Dcm9zcyhwMCwgcCksXG4gICAgICAgIGVxdWF0b3JpYWwgPSBbbm9ybWFsWzFdLCAtbm9ybWFsWzBdLCAwXSxcbiAgICAgICAgaW5mbGVjdGlvbiA9IGNhcnRlc2lhbkNyb3NzKGVxdWF0b3JpYWwsIG5vcm1hbCk7XG4gICAgY2FydGVzaWFuTm9ybWFsaXplSW5QbGFjZShpbmZsZWN0aW9uKTtcbiAgICBpbmZsZWN0aW9uID0gc3BoZXJpY2FsKGluZmxlY3Rpb24pO1xuICAgIHZhciBkZWx0YSA9IGxhbWJkYSAtIGxhbWJkYTIsXG4gICAgICAgIHNpZ24gPSBkZWx0YSA+IDAgPyAxIDogLTEsXG4gICAgICAgIGxhbWJkYWkgPSBpbmZsZWN0aW9uWzBdICogZGVncmVlcyAqIHNpZ24sXG4gICAgICAgIHBoaWksXG4gICAgICAgIGFudGltZXJpZGlhbiA9IGFicyhkZWx0YSkgPiAxODA7XG4gICAgaWYgKGFudGltZXJpZGlhbiBeIChzaWduICogbGFtYmRhMiA8IGxhbWJkYWkgJiYgbGFtYmRhaSA8IHNpZ24gKiBsYW1iZGEpKSB7XG4gICAgICBwaGlpID0gaW5mbGVjdGlvblsxXSAqIGRlZ3JlZXM7XG4gICAgICBpZiAocGhpaSA+IHBoaTEpIHBoaTEgPSBwaGlpO1xuICAgIH0gZWxzZSBpZiAobGFtYmRhaSA9IChsYW1iZGFpICsgMzYwKSAlIDM2MCAtIDE4MCwgYW50aW1lcmlkaWFuIF4gKHNpZ24gKiBsYW1iZGEyIDwgbGFtYmRhaSAmJiBsYW1iZGFpIDwgc2lnbiAqIGxhbWJkYSkpIHtcbiAgICAgIHBoaWkgPSAtaW5mbGVjdGlvblsxXSAqIGRlZ3JlZXM7XG4gICAgICBpZiAocGhpaSA8IHBoaTApIHBoaTAgPSBwaGlpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGhpIDwgcGhpMCkgcGhpMCA9IHBoaTtcbiAgICAgIGlmIChwaGkgPiBwaGkxKSBwaGkxID0gcGhpO1xuICAgIH1cbiAgICBpZiAoYW50aW1lcmlkaWFuKSB7XG4gICAgICBpZiAobGFtYmRhIDwgbGFtYmRhMikge1xuICAgICAgICBpZiAoYW5nbGUobGFtYmRhMCwgbGFtYmRhKSA+IGFuZ2xlKGxhbWJkYTAsIGxhbWJkYTEpKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFuZ2xlKGxhbWJkYSwgbGFtYmRhMSkgPiBhbmdsZShsYW1iZGEwLCBsYW1iZGExKSkgbGFtYmRhMCA9IGxhbWJkYTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGxhbWJkYTEgPj0gbGFtYmRhMCkge1xuICAgICAgICBpZiAobGFtYmRhIDwgbGFtYmRhMCkgbGFtYmRhMCA9IGxhbWJkYTtcbiAgICAgICAgaWYgKGxhbWJkYSA+IGxhbWJkYTEpIGxhbWJkYTEgPSBsYW1iZGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGFtYmRhID4gbGFtYmRhMikge1xuICAgICAgICAgIGlmIChhbmdsZShsYW1iZGEwLCBsYW1iZGEpID4gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkpIGxhbWJkYTEgPSBsYW1iZGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGFuZ2xlKGxhbWJkYSwgbGFtYmRhMSkgPiBhbmdsZShsYW1iZGEwLCBsYW1iZGExKSkgbGFtYmRhMCA9IGxhbWJkYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByYW5nZXMucHVzaChyYW5nZSA9IFtsYW1iZGEwID0gbGFtYmRhLCBsYW1iZGExID0gbGFtYmRhXSk7XG4gIH1cbiAgaWYgKHBoaSA8IHBoaTApIHBoaTAgPSBwaGk7XG4gIGlmIChwaGkgPiBwaGkxKSBwaGkxID0gcGhpO1xuICBwMCA9IHAsIGxhbWJkYTIgPSBsYW1iZGE7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc0xpbmVTdGFydCgpIHtcbiAgYm91bmRzU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xufVxuXG5mdW5jdGlvbiBib3VuZHNMaW5lRW5kKCkge1xuICByYW5nZVswXSA9IGxhbWJkYTAsIHJhbmdlWzFdID0gbGFtYmRhMTtcbiAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUG9pbnQ7XG4gIHAwID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gYm91bmRzUmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGlmIChwMCkge1xuICAgIHZhciBkZWx0YSA9IGxhbWJkYSAtIGxhbWJkYTI7XG4gICAgZGVsdGFTdW0uYWRkKGFicyhkZWx0YSkgPiAxODAgPyBkZWx0YSArIChkZWx0YSA+IDAgPyAzNjAgOiAtMzYwKSA6IGRlbHRhKTtcbiAgfSBlbHNlIHtcbiAgICBsYW1iZGEwMCA9IGxhbWJkYSwgcGhpMDAgPSBwaGk7XG4gIH1cbiAgYXJlYVN0cmVhbS5wb2ludChsYW1iZGEsIHBoaSk7XG4gIGxpbmVQb2ludChsYW1iZGEsIHBoaSk7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdTdGFydCgpIHtcbiAgYXJlYVN0cmVhbS5saW5lU3RhcnQoKTtcbn1cblxuZnVuY3Rpb24gYm91bmRzUmluZ0VuZCgpIHtcbiAgYm91bmRzUmluZ1BvaW50KGxhbWJkYTAwLCBwaGkwMCk7XG4gIGFyZWFTdHJlYW0ubGluZUVuZCgpO1xuICBpZiAoYWJzKGRlbHRhU3VtKSA+IGVwc2lsb24pIGxhbWJkYTAgPSAtKGxhbWJkYTEgPSAxODApO1xuICByYW5nZVswXSA9IGxhbWJkYTAsIHJhbmdlWzFdID0gbGFtYmRhMTtcbiAgcDAgPSBudWxsO1xufVxuXG4vLyBGaW5kcyB0aGUgbGVmdC1yaWdodCBkaXN0YW5jZSBiZXR3ZWVuIHR3byBsb25naXR1ZGVzLlxuLy8gVGhpcyBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgKGxhbWJkYTEgLSBsYW1iZGEwICsgMzYwwrApICUgMzYwwrAsIGV4Y2VwdCB0aGF0IHdlIHdhbnRcbi8vIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIMKxMTgwwrAgdG8gYmUgMzYwwrAuXG5mdW5jdGlvbiBhbmdsZShsYW1iZGEwLCBsYW1iZGExKSB7XG4gIHJldHVybiAobGFtYmRhMSAtPSBsYW1iZGEwKSA8IDAgPyBsYW1iZGExICsgMzYwIDogbGFtYmRhMTtcbn1cblxuZnVuY3Rpb24gcmFuZ2VDb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gLSBiWzBdO1xufVxuXG5mdW5jdGlvbiByYW5nZUNvbnRhaW5zKHJhbmdlLCB4KSB7XG4gIHJldHVybiByYW5nZVswXSA8PSByYW5nZVsxXSA/IHJhbmdlWzBdIDw9IHggJiYgeCA8PSByYW5nZVsxXSA6IHggPCByYW5nZVswXSB8fCByYW5nZVsxXSA8IHg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGZlYXR1cmUpIHtcbiAgdmFyIGksIG4sIGEsIGIsIG1lcmdlZCwgZGVsdGFNYXgsIGRlbHRhO1xuXG4gIHBoaTEgPSBsYW1iZGExID0gLShsYW1iZGEwID0gcGhpMCA9IEluZmluaXR5KTtcbiAgcmFuZ2VzID0gW107XG4gIHN0cmVhbShmZWF0dXJlLCBib3VuZHNTdHJlYW0pO1xuXG4gIC8vIEZpcnN0LCBzb3J0IHJhbmdlcyBieSB0aGVpciBtaW5pbXVtIGxvbmdpdHVkZXMuXG4gIGlmIChuID0gcmFuZ2VzLmxlbmd0aCkge1xuICAgIHJhbmdlcy5zb3J0KHJhbmdlQ29tcGFyZSk7XG5cbiAgICAvLyBUaGVuLCBtZXJnZSBhbnkgcmFuZ2VzIHRoYXQgb3ZlcmxhcC5cbiAgICBmb3IgKGkgPSAxLCBhID0gcmFuZ2VzWzBdLCBtZXJnZWQgPSBbYV07IGkgPCBuOyArK2kpIHtcbiAgICAgIGIgPSByYW5nZXNbaV07XG4gICAgICBpZiAocmFuZ2VDb250YWlucyhhLCBiWzBdKSB8fCByYW5nZUNvbnRhaW5zKGEsIGJbMV0pKSB7XG4gICAgICAgIGlmIChhbmdsZShhWzBdLCBiWzFdKSA+IGFuZ2xlKGFbMF0sIGFbMV0pKSBhWzFdID0gYlsxXTtcbiAgICAgICAgaWYgKGFuZ2xlKGJbMF0sIGFbMV0pID4gYW5nbGUoYVswXSwgYVsxXSkpIGFbMF0gPSBiWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkLnB1c2goYSA9IGIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmFsbHksIGZpbmQgdGhlIGxhcmdlc3QgZ2FwIGJldHdlZW4gdGhlIG1lcmdlZCByYW5nZXMuXG4gICAgLy8gVGhlIGZpbmFsIGJvdW5kaW5nIGJveCB3aWxsIGJlIHRoZSBpbnZlcnNlIG9mIHRoaXMgZ2FwLlxuICAgIGZvciAoZGVsdGFNYXggPSAtSW5maW5pdHksIG4gPSBtZXJnZWQubGVuZ3RoIC0gMSwgaSA9IDAsIGEgPSBtZXJnZWRbbl07IGkgPD0gbjsgYSA9IGIsICsraSkge1xuICAgICAgYiA9IG1lcmdlZFtpXTtcbiAgICAgIGlmICgoZGVsdGEgPSBhbmdsZShhWzFdLCBiWzBdKSkgPiBkZWx0YU1heCkgZGVsdGFNYXggPSBkZWx0YSwgbGFtYmRhMCA9IGJbMF0sIGxhbWJkYTEgPSBhWzFdO1xuICAgIH1cbiAgfVxuXG4gIHJhbmdlcyA9IHJhbmdlID0gbnVsbDtcblxuICByZXR1cm4gbGFtYmRhMCA9PT0gSW5maW5pdHkgfHwgcGhpMCA9PT0gSW5maW5pdHlcbiAgICAgID8gW1tOYU4sIE5hTl0sIFtOYU4sIE5hTl1dXG4gICAgICA6IFtbbGFtYmRhMCwgcGhpMF0sIFtsYW1iZGExLCBwaGkxXV07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/bounds.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/cartesian.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/cartesian.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cartesian\": () => (/* binding */ cartesian),\n/* harmony export */ \"cartesianAddInPlace\": () => (/* binding */ cartesianAddInPlace),\n/* harmony export */ \"cartesianCross\": () => (/* binding */ cartesianCross),\n/* harmony export */ \"cartesianDot\": () => (/* binding */ cartesianDot),\n/* harmony export */ \"cartesianNormalizeInPlace\": () => (/* binding */ cartesianNormalizeInPlace),\n/* harmony export */ \"cartesianScale\": () => (/* binding */ cartesianScale),\n/* harmony export */ \"spherical\": () => (/* binding */ spherical)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\nfunction spherical(cartesian) {\n return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(cartesian[1], cartesian[0]), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(cartesian[2])];\n}\n\nfunction cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi);\n return [cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(lambda), cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(lambda), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi)];\n}\n\nfunction cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nfunction cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nfunction cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nfunction cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nfunction cartesianNormalizeInPlace(d) {\n var l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2FydGVzaWFuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXNEOztBQUUvQztBQUNQLFVBQVUsK0NBQUssOEJBQThCLDhDQUFJO0FBQ2pEOztBQUVPO0FBQ1AsMERBQTBELDZDQUFHO0FBQzdELG1CQUFtQiw2Q0FBRyxtQkFBbUIsNkNBQUcsVUFBVSw2Q0FBRztBQUN6RDs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ087QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFQTtBQUNPO0FBQ1AsVUFBVSw4Q0FBSTtBQUNkO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2FydGVzaWFuLmpzPzMyZDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBzaW4sIHNxcnR9IGZyb20gXCIuL21hdGguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNwaGVyaWNhbChjYXJ0ZXNpYW4pIHtcbiAgcmV0dXJuIFthdGFuMihjYXJ0ZXNpYW5bMV0sIGNhcnRlc2lhblswXSksIGFzaW4oY2FydGVzaWFuWzJdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW4oc3BoZXJpY2FsKSB7XG4gIHZhciBsYW1iZGEgPSBzcGhlcmljYWxbMF0sIHBoaSA9IHNwaGVyaWNhbFsxXSwgY29zUGhpID0gY29zKHBoaSk7XG4gIHJldHVybiBbY29zUGhpICogY29zKGxhbWJkYSksIGNvc1BoaSAqIHNpbihsYW1iZGEpLCBzaW4ocGhpKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW5Eb3QoYSwgYikge1xuICByZXR1cm4gYVswXSAqIGJbMF0gKyBhWzFdICogYlsxXSArIGFbMl0gKiBiWzJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuQ3Jvc3MoYSwgYikge1xuICByZXR1cm4gW2FbMV0gKiBiWzJdIC0gYVsyXSAqIGJbMV0sIGFbMl0gKiBiWzBdIC0gYVswXSAqIGJbMl0sIGFbMF0gKiBiWzFdIC0gYVsxXSAqIGJbMF1dO1xufVxuXG4vLyBUT0RPIHJldHVybiBhXG5leHBvcnQgZnVuY3Rpb24gY2FydGVzaWFuQWRkSW5QbGFjZShhLCBiKSB7XG4gIGFbMF0gKz0gYlswXSwgYVsxXSArPSBiWzFdLCBhWzJdICs9IGJbMl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXJ0ZXNpYW5TY2FsZSh2ZWN0b3IsIGspIHtcbiAgcmV0dXJuIFt2ZWN0b3JbMF0gKiBrLCB2ZWN0b3JbMV0gKiBrLCB2ZWN0b3JbMl0gKiBrXTtcbn1cblxuLy8gVE9ETyByZXR1cm4gZFxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoZCkge1xuICB2YXIgbCA9IHNxcnQoZFswXSAqIGRbMF0gKyBkWzFdICogZFsxXSArIGRbMl0gKiBkWzJdKTtcbiAgZFswXSAvPSBsLCBkWzFdIC89IGwsIGRbMl0gLz0gbDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/cartesian.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/centroid.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/centroid.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi);\n centroidPointCartesian(cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(lambda), cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda), (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi);\n x0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(lambda);\n y0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda);\n z0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi),\n x = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(lambda),\n y = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda),\n z = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi),\n w = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.atan2)((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sqrt)((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi);\n x0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(lambda);\n y0 = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda);\n z0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi),\n x = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(lambda),\n y = cosPhi * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda),\n z = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.hypot)(cx, cy, cz),\n w = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.asin)(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new d3_array__WEBPACK_IMPORTED_MODULE_2__.Adder();\n Y2 = new d3_array__WEBPACK_IMPORTED_MODULE_2__.Adder();\n Z2 = new d3_array__WEBPACK_IMPORTED_MODULE_2__.Adder();\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.hypot)(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) x = X0, y = Y0, z = Z0;\n m = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.hypot)(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon2) return [NaN, NaN];\n }\n\n return [(0,_math_js__WEBPACK_IMPORTED_MODULE_1__.atan2)(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees, (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.asin)(z / m) * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2VudHJvaWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0I7QUFDbUU7QUFDckU7QUFDSTs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQSxVQUFVLGdEQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksNkNBQU8sU0FBUyw2Q0FBTztBQUNuQyxlQUFlLDZDQUFHO0FBQ2xCLGtDQUFrQyw2Q0FBRyxtQkFBbUIsNkNBQUcsVUFBVSw2Q0FBRztBQUN4RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSw2Q0FBTyxTQUFTLDZDQUFPO0FBQ25DLGVBQWUsNkNBQUc7QUFDbEIsZ0JBQWdCLDZDQUFHO0FBQ25CLGdCQUFnQiw2Q0FBRztBQUNuQixPQUFPLDZDQUFHO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSw2Q0FBTyxTQUFTLDZDQUFPO0FBQ25DLGVBQWUsNkNBQUc7QUFDbEIsbUJBQW1CLDZDQUFHO0FBQ3RCLG1CQUFtQiw2Q0FBRztBQUN0QixVQUFVLDZDQUFHO0FBQ2IsVUFBVSwrQ0FBSyxDQUFDLDhDQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSw2Q0FBTyxTQUFTLDZDQUFPO0FBQ25DO0FBQ0EsZUFBZSw2Q0FBRztBQUNsQixnQkFBZ0IsNkNBQUc7QUFDbkIsZ0JBQWdCLDZDQUFHO0FBQ25CLE9BQU8sNkNBQUc7QUFDVjtBQUNBOztBQUVBO0FBQ0EsWUFBWSw2Q0FBTyxTQUFTLDZDQUFPO0FBQ25DLGVBQWUsNkNBQUc7QUFDbEIsbUJBQW1CLDZDQUFHO0FBQ3RCLG1CQUFtQiw2Q0FBRztBQUN0QixVQUFVLDZDQUFHO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsVUFBVSwrQ0FBSztBQUNmLFVBQVUsOENBQUk7QUFDZCx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMkNBQUs7QUFDaEIsV0FBVywyQ0FBSztBQUNoQixXQUFXLDJDQUFLO0FBQ2hCLEVBQUUsc0RBQU07O0FBRVI7QUFDQTtBQUNBO0FBQ0EsVUFBVSwrQ0FBSzs7QUFFZjtBQUNBLFVBQVUsOENBQVE7QUFDbEI7QUFDQTtBQUNBLGFBQWEsNkNBQU87QUFDcEIsUUFBUSwrQ0FBSztBQUNiO0FBQ0EsWUFBWSw4Q0FBUTtBQUNwQjs7QUFFQSxVQUFVLCtDQUFLLFNBQVMsNkNBQU8sRUFBRSw4Q0FBSSxVQUFVLDZDQUFPO0FBQ3REIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NlbnRyb2lkLmpzP2MzOTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZGRlcn0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2FzaW4sIGF0YW4yLCBjb3MsIGRlZ3JlZXMsIGVwc2lsb24sIGVwc2lsb24yLCBoeXBvdCwgcmFkaWFucywgc2luLCBzcXJ0fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi9ub29wLmpzXCI7XG5pbXBvcnQgc3RyZWFtIGZyb20gXCIuL3N0cmVhbS5qc1wiO1xuXG52YXIgVzAsIFcxLFxuICAgIFgwLCBZMCwgWjAsXG4gICAgWDEsIFkxLCBaMSxcbiAgICBYMiwgWTIsIFoyLFxuICAgIGxhbWJkYTAwLCBwaGkwMCwgLy8gZmlyc3QgcG9pbnRcbiAgICB4MCwgeTAsIHowOyAvLyBwcmV2aW91cyBwb2ludFxuXG52YXIgY2VudHJvaWRTdHJlYW0gPSB7XG4gIHNwaGVyZTogbm9vcCxcbiAgcG9pbnQ6IGNlbnRyb2lkUG9pbnQsXG4gIGxpbmVTdGFydDogY2VudHJvaWRMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGNlbnRyb2lkTGluZUVuZCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZFJpbmdTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZExpbmVTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRMaW5lRW5kO1xuICB9XG59O1xuXG4vLyBBcml0aG1ldGljIG1lYW4gb2YgQ2FydGVzaWFuIHZlY3RvcnMuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgdmFyIGNvc1BoaSA9IGNvcyhwaGkpO1xuICBjZW50cm9pZFBvaW50Q2FydGVzaWFuKGNvc1BoaSAqIGNvcyhsYW1iZGEpLCBjb3NQaGkgKiBzaW4obGFtYmRhKSwgc2luKHBoaSkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50Q2FydGVzaWFuKHgsIHksIHopIHtcbiAgKytXMDtcbiAgWDAgKz0gKHggLSBYMCkgLyBXMDtcbiAgWTAgKz0gKHkgLSBZMCkgLyBXMDtcbiAgWjAgKz0gKHogLSBaMCkgLyBXMDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lU3RhcnQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRMaW5lUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHZhciBjb3NQaGkgPSBjb3MocGhpKTtcbiAgeDAgPSBjb3NQaGkgKiBjb3MobGFtYmRhKTtcbiAgeTAgPSBjb3NQaGkgKiBzaW4obGFtYmRhKTtcbiAgejAgPSBzaW4ocGhpKTtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZExpbmVQb2ludDtcbiAgY2VudHJvaWRQb2ludENhcnRlc2lhbih4MCwgeTAsIHowKTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgY29zUGhpID0gY29zKHBoaSksXG4gICAgICB4ID0gY29zUGhpICogY29zKGxhbWJkYSksXG4gICAgICB5ID0gY29zUGhpICogc2luKGxhbWJkYSksXG4gICAgICB6ID0gc2luKHBoaSksXG4gICAgICB3ID0gYXRhbjIoc3FydCgodyA9IHkwICogeiAtIHowICogeSkgKiB3ICsgKHcgPSB6MCAqIHggLSB4MCAqIHopICogdyArICh3ID0geDAgKiB5IC0geTAgKiB4KSAqIHcpLCB4MCAqIHggKyB5MCAqIHkgKyB6MCAqIHopO1xuICBXMSArPSB3O1xuICBYMSArPSB3ICogKHgwICsgKHgwID0geCkpO1xuICBZMSArPSB3ICogKHkwICsgKHkwID0geSkpO1xuICBaMSArPSB3ICogKHowICsgKHowID0geikpO1xuICBjZW50cm9pZFBvaW50Q2FydGVzaWFuKHgwLCB5MCwgejApO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZExpbmVFbmQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbn1cblxuLy8gU2VlIEouIEUuIEJyb2NrLCBUaGUgSW5lcnRpYSBUZW5zb3IgZm9yIGEgU3BoZXJpY2FsIFRyaWFuZ2xlLFxuLy8gSi4gQXBwbGllZCBNZWNoYW5pY3MgNDIsIDIzOSAoMTk3NSkuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdTdGFydCgpIHtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZFJpbmdQb2ludEZpcnN0O1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdFbmQoKSB7XG4gIGNlbnRyb2lkUmluZ1BvaW50KGxhbWJkYTAwLCBwaGkwMCk7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEwMCA9IGxhbWJkYSwgcGhpMDAgPSBwaGk7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZFJpbmdQb2ludDtcbiAgdmFyIGNvc1BoaSA9IGNvcyhwaGkpO1xuICB4MCA9IGNvc1BoaSAqIGNvcyhsYW1iZGEpO1xuICB5MCA9IGNvc1BoaSAqIHNpbihsYW1iZGEpO1xuICB6MCA9IHNpbihwaGkpO1xuICBjZW50cm9pZFBvaW50Q2FydGVzaWFuKHgwLCB5MCwgejApO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdQb2ludChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHZhciBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIHggPSBjb3NQaGkgKiBjb3MobGFtYmRhKSxcbiAgICAgIHkgPSBjb3NQaGkgKiBzaW4obGFtYmRhKSxcbiAgICAgIHogPSBzaW4ocGhpKSxcbiAgICAgIGN4ID0geTAgKiB6IC0gejAgKiB5LFxuICAgICAgY3kgPSB6MCAqIHggLSB4MCAqIHosXG4gICAgICBjeiA9IHgwICogeSAtIHkwICogeCxcbiAgICAgIG0gPSBoeXBvdChjeCwgY3ksIGN6KSxcbiAgICAgIHcgPSBhc2luKG0pLCAvLyBsaW5lIHdlaWdodCA9IGFuZ2xlXG4gICAgICB2ID0gbSAmJiAtdyAvIG07IC8vIGFyZWEgd2VpZ2h0IG11bHRpcGxpZXJcbiAgWDIuYWRkKHYgKiBjeCk7XG4gIFkyLmFkZCh2ICogY3kpO1xuICBaMi5hZGQodiAqIGN6KTtcbiAgVzEgKz0gdztcbiAgWDEgKz0gdyAqICh4MCArICh4MCA9IHgpKTtcbiAgWTEgKz0gdyAqICh5MCArICh5MCA9IHkpKTtcbiAgWjEgKz0gdyAqICh6MCArICh6MCA9IHopKTtcbiAgY2VudHJvaWRQb2ludENhcnRlc2lhbih4MCwgeTAsIHowKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob2JqZWN0KSB7XG4gIFcwID0gVzEgPVxuICBYMCA9IFkwID0gWjAgPVxuICBYMSA9IFkxID0gWjEgPSAwO1xuICBYMiA9IG5ldyBBZGRlcigpO1xuICBZMiA9IG5ldyBBZGRlcigpO1xuICBaMiA9IG5ldyBBZGRlcigpO1xuICBzdHJlYW0ob2JqZWN0LCBjZW50cm9pZFN0cmVhbSk7XG5cbiAgdmFyIHggPSArWDIsXG4gICAgICB5ID0gK1kyLFxuICAgICAgeiA9ICtaMixcbiAgICAgIG0gPSBoeXBvdCh4LCB5LCB6KTtcblxuICAvLyBJZiB0aGUgYXJlYS13ZWlnaHRlZCBjY2VudHJvaWQgaXMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbGVuZ3RoLXdlaWdodGVkIGNjZW50cm9pZC5cbiAgaWYgKG0gPCBlcHNpbG9uMikge1xuICAgIHggPSBYMSwgeSA9IFkxLCB6ID0gWjE7XG4gICAgLy8gSWYgdGhlIGZlYXR1cmUgaGFzIHplcm8gbGVuZ3RoLCBmYWxsIGJhY2sgdG8gYXJpdGhtZXRpYyBtZWFuIG9mIHBvaW50IHZlY3RvcnMuXG4gICAgaWYgKFcxIDwgZXBzaWxvbikgeCA9IFgwLCB5ID0gWTAsIHogPSBaMDtcbiAgICBtID0gaHlwb3QoeCwgeSwgeik7XG4gICAgLy8gSWYgdGhlIGZlYXR1cmUgc3RpbGwgaGFzIGFuIHVuZGVmaW5lZCBjY2VudHJvaWQsIHRoZW4gcmV0dXJuLlxuICAgIGlmIChtIDwgZXBzaWxvbjIpIHJldHVybiBbTmFOLCBOYU5dO1xuICB9XG5cbiAgcmV0dXJuIFthdGFuMih5LCB4KSAqIGRlZ3JlZXMsIGFzaW4oeiAvIG0pICogZGVncmVlc107XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/centroid.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/circle.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-geo/src/circle.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"circleStream\": () => (/* binding */ circleStream),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cartesian.js */ \"../../../node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-geo/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rotation.js */ \"../../../node_modules/d3-geo/src/rotation.js\");\n\n\n\n\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nfunction circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(radius),\n sinRadius = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * _math_js__WEBPACK_IMPORTED_MODULE_0__.tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math_js__WEBPACK_IMPORTED_MODULE_0__.tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_1__.spherical)([cosRadius, -sinRadius * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(t), -sinRadius * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_1__.cartesian)(point), point[0] -= cosRadius;\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_1__.cartesianNormalizeInPlace)(point);\n var radius = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.acos)(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + _math_js__WEBPACK_IMPORTED_MODULE_0__.tau - _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) % _math_js__WEBPACK_IMPORTED_MODULE_0__.tau;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var center = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])([0, 0]),\n radius = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(90),\n precision = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, x[1] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n p = precision.apply(this, arguments) * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians;\n ring = [];\n rotate = (0,_rotation_js__WEBPACK_IMPORTED_MODULE_3__.rotateRadians)(-c[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, -c[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), circle) : precision;\n };\n\n return circle;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2lyY2xlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErRTtBQUMxQztBQUNvQztBQUM3Qjs7QUFFNUM7QUFDTztBQUNQO0FBQ0Esa0JBQWtCLDZDQUFHO0FBQ3JCLGtCQUFrQiw2Q0FBRztBQUNyQjtBQUNBO0FBQ0EsOEJBQThCLHlDQUFHO0FBQ2pDO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSw2REFBNkQseUNBQUc7QUFDaEU7QUFDQSwwQkFBMEIsaUNBQWlDO0FBQzNELFlBQVksd0RBQVMsMEJBQTBCLDZDQUFHLGtCQUFrQiw2Q0FBRztBQUN2RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsd0RBQVM7QUFDbkIsRUFBRSx3RUFBeUI7QUFDM0IsZUFBZSw4Q0FBSTtBQUNuQiwrQ0FBK0MseUNBQUcsR0FBRyw2Q0FBTyxJQUFJLHlDQUFHO0FBQ25FOztBQUVBLDZCQUFlLHNDQUFXO0FBQzFCLGVBQWUsd0RBQVE7QUFDdkIsZUFBZSx3REFBUTtBQUN2QixrQkFBa0Isd0RBQVE7QUFDMUI7QUFDQTtBQUNBLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBLFlBQVksNkNBQU8sVUFBVSw2Q0FBTztBQUNwQzs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDLDZDQUFPO0FBQ25ELCtDQUErQyw2Q0FBTztBQUN0RDtBQUNBLGFBQWEsMkRBQWEsU0FBUyw2Q0FBTyxVQUFVLDZDQUFPO0FBQzNEO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNFQUFzRSx3REFBUTtBQUM5RTs7QUFFQTtBQUNBLHNFQUFzRSx3REFBUTtBQUM5RTs7QUFFQTtBQUNBLHlFQUF5RSx3REFBUTtBQUNqRjs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NpcmNsZS5qcz8yMDcyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y2FydGVzaWFuLCBjYXJ0ZXNpYW5Ob3JtYWxpemVJblBsYWNlLCBzcGhlcmljYWx9IGZyb20gXCIuL2NhcnRlc2lhbi5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQge2Fjb3MsIGNvcywgZGVncmVlcywgZXBzaWxvbiwgcmFkaWFucywgc2luLCB0YXV9IGZyb20gXCIuL21hdGguanNcIjtcbmltcG9ydCB7cm90YXRlUmFkaWFuc30gZnJvbSBcIi4vcm90YXRpb24uanNcIjtcblxuLy8gR2VuZXJhdGVzIGEgY2lyY2xlIGNlbnRlcmVkIGF0IFswwrAsIDDCsF0sIHdpdGggYSBnaXZlbiByYWRpdXMgYW5kIHByZWNpc2lvbi5cbmV4cG9ydCBmdW5jdGlvbiBjaXJjbGVTdHJlYW0oc3RyZWFtLCByYWRpdXMsIGRlbHRhLCBkaXJlY3Rpb24sIHQwLCB0MSkge1xuICBpZiAoIWRlbHRhKSByZXR1cm47XG4gIHZhciBjb3NSYWRpdXMgPSBjb3MocmFkaXVzKSxcbiAgICAgIHNpblJhZGl1cyA9IHNpbihyYWRpdXMpLFxuICAgICAgc3RlcCA9IGRpcmVjdGlvbiAqIGRlbHRhO1xuICBpZiAodDAgPT0gbnVsbCkge1xuICAgIHQwID0gcmFkaXVzICsgZGlyZWN0aW9uICogdGF1O1xuICAgIHQxID0gcmFkaXVzIC0gc3RlcCAvIDI7XG4gIH0gZWxzZSB7XG4gICAgdDAgPSBjaXJjbGVSYWRpdXMoY29zUmFkaXVzLCB0MCk7XG4gICAgdDEgPSBjaXJjbGVSYWRpdXMoY29zUmFkaXVzLCB0MSk7XG4gICAgaWYgKGRpcmVjdGlvbiA+IDAgPyB0MCA8IHQxIDogdDAgPiB0MSkgdDAgKz0gZGlyZWN0aW9uICogdGF1O1xuICB9XG4gIGZvciAodmFyIHBvaW50LCB0ID0gdDA7IGRpcmVjdGlvbiA+IDAgPyB0ID4gdDEgOiB0IDwgdDE7IHQgLT0gc3RlcCkge1xuICAgIHBvaW50ID0gc3BoZXJpY2FsKFtjb3NSYWRpdXMsIC1zaW5SYWRpdXMgKiBjb3ModCksIC1zaW5SYWRpdXMgKiBzaW4odCldKTtcbiAgICBzdHJlYW0ucG9pbnQocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgfVxufVxuXG4vLyBSZXR1cm5zIHRoZSBzaWduZWQgYW5nbGUgb2YgYSBjYXJ0ZXNpYW4gcG9pbnQgcmVsYXRpdmUgdG8gW2Nvc1JhZGl1cywgMCwgMF0uXG5mdW5jdGlvbiBjaXJjbGVSYWRpdXMoY29zUmFkaXVzLCBwb2ludCkge1xuICBwb2ludCA9IGNhcnRlc2lhbihwb2ludCksIHBvaW50WzBdIC09IGNvc1JhZGl1cztcbiAgY2FydGVzaWFuTm9ybWFsaXplSW5QbGFjZShwb2ludCk7XG4gIHZhciByYWRpdXMgPSBhY29zKC1wb2ludFsxXSk7XG4gIHJldHVybiAoKC1wb2ludFsyXSA8IDAgPyAtcmFkaXVzIDogcmFkaXVzKSArIHRhdSAtIGVwc2lsb24pICUgdGF1O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGNlbnRlciA9IGNvbnN0YW50KFswLCAwXSksXG4gICAgICByYWRpdXMgPSBjb25zdGFudCg5MCksXG4gICAgICBwcmVjaXNpb24gPSBjb25zdGFudCg2KSxcbiAgICAgIHJpbmcsXG4gICAgICByb3RhdGUsXG4gICAgICBzdHJlYW0gPSB7cG9pbnQ6IHBvaW50fTtcblxuICBmdW5jdGlvbiBwb2ludCh4LCB5KSB7XG4gICAgcmluZy5wdXNoKHggPSByb3RhdGUoeCwgeSkpO1xuICAgIHhbMF0gKj0gZGVncmVlcywgeFsxXSAqPSBkZWdyZWVzO1xuICB9XG5cbiAgZnVuY3Rpb24gY2lyY2xlKCkge1xuICAgIHZhciBjID0gY2VudGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHIgPSByYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSAqIHJhZGlhbnMsXG4gICAgICAgIHAgPSBwcmVjaXNpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKSAqIHJhZGlhbnM7XG4gICAgcmluZyA9IFtdO1xuICAgIHJvdGF0ZSA9IHJvdGF0ZVJhZGlhbnMoLWNbMF0gKiByYWRpYW5zLCAtY1sxXSAqIHJhZGlhbnMsIDApLmludmVydDtcbiAgICBjaXJjbGVTdHJlYW0oc3RyZWFtLCByLCBwLCAxKTtcbiAgICBjID0ge3R5cGU6IFwiUG9seWdvblwiLCBjb29yZGluYXRlczogW3JpbmddfTtcbiAgICByaW5nID0gcm90YXRlID0gbnVsbDtcbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIGNpcmNsZS5jZW50ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2VudGVyID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChbK19bMF0sICtfWzFdXSksIGNpcmNsZSkgOiBjZW50ZXI7XG4gIH07XG5cbiAgY2lyY2xlLnJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgY2lyY2xlKSA6IHJhZGl1cztcbiAgfTtcblxuICBjaXJjbGUucHJlY2lzaW9uID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHByZWNpc2lvbiA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBjaXJjbGUpIDogcHJlY2lzaW9uO1xuICB9O1xuXG4gIHJldHVybiBjaXJjbGU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/circle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/antimeridian.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/antimeridian.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/clip/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -_math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi]\n));\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_1__.pi,\n delta = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(lambda1 - lambda0);\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(delta - _math_js__WEBPACK_IMPORTED_MODULE_1__.pi) < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi : -_math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= _math_js__WEBPACK_IMPORTED_MODULE_1__.pi) { // line crosses antimeridian\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(lambda0 - sign0) < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) lambda0 -= sign0 * _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon; // handle degeneracies\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(lambda1 - sign1) < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) lambda1 -= sign1 * _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda0 - lambda1);\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(sinLambda0Lambda1) > _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon\n ? (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.atan)(((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi0) * (cosPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi1)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda1)\n - (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi1) * (cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi0)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * _math_js__WEBPACK_IMPORTED_MODULE_1__.halfPi;\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n stream.point(0, phi);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, 0);\n stream.point(_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -phi);\n stream.point(0, -phi);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, -phi);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, 0);\n stream.point(-_math_js__WEBPACK_IMPORTED_MODULE_1__.pi, phi);\n } else if ((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(from[0] - to[0]) > _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon) {\n var lambda = from[0] < to[0] ? _math_js__WEBPACK_IMPORTED_MODULE_1__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_1__.pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9hbnRpbWVyaWRpYW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQThCO0FBQ3NDOztBQUVwRSxpRUFBZSxxREFBSTtBQUNuQixlQUFlLGNBQWM7QUFDN0I7QUFDQTtBQUNBLElBQUksd0NBQUUsR0FBRyw0Q0FBTTtBQUNmLENBQUMsRUFBQzs7QUFFRjtBQUNBLHdDQUF3QyxzQkFBc0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnQ0FBZ0Msd0NBQUUsSUFBSSx3Q0FBRTtBQUN4QyxrQkFBa0IsNkNBQUc7QUFDckIsVUFBVSw2Q0FBRyxTQUFTLHdDQUFFLElBQUksNkNBQU8sSUFBSTtBQUN2Qyw2REFBNkQsNENBQU0sSUFBSSw0Q0FBTTtBQUM3RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFDQUFxQyx3Q0FBRSxJQUFJO0FBQ25ELFlBQVksNkNBQUcsb0JBQW9CLDZDQUFPLHFCQUFxQiw2Q0FBTyxFQUFFO0FBQ3hFLFlBQVksNkNBQUcsb0JBQW9CLDZDQUFPLHFCQUFxQiw2Q0FBTztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNkNBQUc7QUFDN0IsU0FBUyw2Q0FBRyxzQkFBc0IsNkNBQU87QUFDekMsUUFBUSw4Q0FBSSxFQUFFLDZDQUFHLG9CQUFvQiw2Q0FBRyxVQUFVLDZDQUFHO0FBQ3JELFlBQVksNkNBQUcsb0JBQW9CLDZDQUFHLFVBQVUsNkNBQUc7QUFDbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw0Q0FBTTtBQUM1QixrQkFBa0Isd0NBQUU7QUFDcEI7QUFDQSxpQkFBaUIsd0NBQUU7QUFDbkIsaUJBQWlCLHdDQUFFO0FBQ25CLGlCQUFpQix3Q0FBRTtBQUNuQjtBQUNBLGtCQUFrQix3Q0FBRTtBQUNwQixrQkFBa0Isd0NBQUU7QUFDcEIsa0JBQWtCLHdDQUFFO0FBQ3BCLElBQUksU0FBUyw2Q0FBRyxvQkFBb0IsNkNBQU87QUFDM0MsbUNBQW1DLHdDQUFFLElBQUksd0NBQUU7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvYW50aW1lcmlkaWFuLmpzP2NhZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsaXAgZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCB7YWJzLCBhdGFuLCBjb3MsIGVwc2lsb24sIGhhbGZQaSwgcGksIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xpcChcbiAgZnVuY3Rpb24oKSB7IHJldHVybiB0cnVlOyB9LFxuICBjbGlwQW50aW1lcmlkaWFuTGluZSxcbiAgY2xpcEFudGltZXJpZGlhbkludGVycG9sYXRlLFxuICBbLXBpLCAtaGFsZlBpXVxuKTtcblxuLy8gVGFrZXMgYSBsaW5lIGFuZCBjdXRzIGludG8gdmlzaWJsZSBzZWdtZW50cy4gUmV0dXJuIHZhbHVlczogMCAtIHRoZXJlIHdlcmVcbi8vIGludGVyc2VjdGlvbnMgb3IgdGhlIGxpbmUgd2FzIGVtcHR5OyAxIC0gbm8gaW50ZXJzZWN0aW9uczsgMiAtIHRoZXJlIHdlcmVcbi8vIGludGVyc2VjdGlvbnMsIGFuZCB0aGUgZmlyc3QgYW5kIGxhc3Qgc2VnbWVudHMgc2hvdWxkIGJlIHJlam9pbmVkLlxuZnVuY3Rpb24gY2xpcEFudGltZXJpZGlhbkxpbmUoc3RyZWFtKSB7XG4gIHZhciBsYW1iZGEwID0gTmFOLFxuICAgICAgcGhpMCA9IE5hTixcbiAgICAgIHNpZ24wID0gTmFOLFxuICAgICAgY2xlYW47IC8vIG5vIGludGVyc2VjdGlvbnNcblxuICByZXR1cm4ge1xuICAgIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICBjbGVhbiA9IDE7XG4gICAgfSxcbiAgICBwb2ludDogZnVuY3Rpb24obGFtYmRhMSwgcGhpMSkge1xuICAgICAgdmFyIHNpZ24xID0gbGFtYmRhMSA+IDAgPyBwaSA6IC1waSxcbiAgICAgICAgICBkZWx0YSA9IGFicyhsYW1iZGExIC0gbGFtYmRhMCk7XG4gICAgICBpZiAoYWJzKGRlbHRhIC0gcGkpIDwgZXBzaWxvbikgeyAvLyBsaW5lIGNyb3NzZXMgYSBwb2xlXG4gICAgICAgIHN0cmVhbS5wb2ludChsYW1iZGEwLCBwaGkwID0gKHBoaTAgKyBwaGkxKSAvIDIgPiAwID8gaGFsZlBpIDogLWhhbGZQaSk7XG4gICAgICAgIHN0cmVhbS5wb2ludChzaWduMCwgcGhpMCk7XG4gICAgICAgIHN0cmVhbS5saW5lRW5kKCk7XG4gICAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgc3RyZWFtLnBvaW50KHNpZ24xLCBwaGkwKTtcbiAgICAgICAgc3RyZWFtLnBvaW50KGxhbWJkYTEsIHBoaTApO1xuICAgICAgICBjbGVhbiA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHNpZ24wICE9PSBzaWduMSAmJiBkZWx0YSA+PSBwaSkgeyAvLyBsaW5lIGNyb3NzZXMgYW50aW1lcmlkaWFuXG4gICAgICAgIGlmIChhYnMobGFtYmRhMCAtIHNpZ24wKSA8IGVwc2lsb24pIGxhbWJkYTAgLT0gc2lnbjAgKiBlcHNpbG9uOyAvLyBoYW5kbGUgZGVnZW5lcmFjaWVzXG4gICAgICAgIGlmIChhYnMobGFtYmRhMSAtIHNpZ24xKSA8IGVwc2lsb24pIGxhbWJkYTEgLT0gc2lnbjEgKiBlcHNpbG9uO1xuICAgICAgICBwaGkwID0gY2xpcEFudGltZXJpZGlhbkludGVyc2VjdChsYW1iZGEwLCBwaGkwLCBsYW1iZGExLCBwaGkxKTtcbiAgICAgICAgc3RyZWFtLnBvaW50KHNpZ24wLCBwaGkwKTtcbiAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICBzdHJlYW0ucG9pbnQoc2lnbjEsIHBoaTApO1xuICAgICAgICBjbGVhbiA9IDA7XG4gICAgICB9XG4gICAgICBzdHJlYW0ucG9pbnQobGFtYmRhMCA9IGxhbWJkYTEsIHBoaTAgPSBwaGkxKTtcbiAgICAgIHNpZ24wID0gc2lnbjE7XG4gICAgfSxcbiAgICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICAgIHN0cmVhbS5saW5lRW5kKCk7XG4gICAgICBsYW1iZGEwID0gcGhpMCA9IE5hTjtcbiAgICB9LFxuICAgIGNsZWFuOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAyIC0gY2xlYW47IC8vIGlmIGludGVyc2VjdGlvbnMsIHJlam9pbiBmaXJzdCBhbmQgbGFzdCBzZWdtZW50c1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xpcEFudGltZXJpZGlhbkludGVyc2VjdChsYW1iZGEwLCBwaGkwLCBsYW1iZGExLCBwaGkxKSB7XG4gIHZhciBjb3NQaGkwLFxuICAgICAgY29zUGhpMSxcbiAgICAgIHNpbkxhbWJkYTBMYW1iZGExID0gc2luKGxhbWJkYTAgLSBsYW1iZGExKTtcbiAgcmV0dXJuIGFicyhzaW5MYW1iZGEwTGFtYmRhMSkgPiBlcHNpbG9uXG4gICAgICA/IGF0YW4oKHNpbihwaGkwKSAqIChjb3NQaGkxID0gY29zKHBoaTEpKSAqIHNpbihsYW1iZGExKVxuICAgICAgICAgIC0gc2luKHBoaTEpICogKGNvc1BoaTAgPSBjb3MocGhpMCkpICogc2luKGxhbWJkYTApKVxuICAgICAgICAgIC8gKGNvc1BoaTAgKiBjb3NQaGkxICogc2luTGFtYmRhMExhbWJkYTEpKVxuICAgICAgOiAocGhpMCArIHBoaTEpIC8gMjtcbn1cblxuZnVuY3Rpb24gY2xpcEFudGltZXJpZGlhbkludGVycG9sYXRlKGZyb20sIHRvLCBkaXJlY3Rpb24sIHN0cmVhbSkge1xuICB2YXIgcGhpO1xuICBpZiAoZnJvbSA9PSBudWxsKSB7XG4gICAgcGhpID0gZGlyZWN0aW9uICogaGFsZlBpO1xuICAgIHN0cmVhbS5wb2ludCgtcGksIHBoaSk7XG4gICAgc3RyZWFtLnBvaW50KDAsIHBoaSk7XG4gICAgc3RyZWFtLnBvaW50KHBpLCBwaGkpO1xuICAgIHN0cmVhbS5wb2ludChwaSwgMCk7XG4gICAgc3RyZWFtLnBvaW50KHBpLCAtcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQoMCwgLXBoaSk7XG4gICAgc3RyZWFtLnBvaW50KC1waSwgLXBoaSk7XG4gICAgc3RyZWFtLnBvaW50KC1waSwgMCk7XG4gICAgc3RyZWFtLnBvaW50KC1waSwgcGhpKTtcbiAgfSBlbHNlIGlmIChhYnMoZnJvbVswXSAtIHRvWzBdKSA+IGVwc2lsb24pIHtcbiAgICB2YXIgbGFtYmRhID0gZnJvbVswXSA8IHRvWzBdID8gcGkgOiAtcGk7XG4gICAgcGhpID0gZGlyZWN0aW9uICogbGFtYmRhIC8gMjtcbiAgICBzdHJlYW0ucG9pbnQoLWxhbWJkYSwgcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQoMCwgcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQobGFtYmRhLCBwaGkpO1xuICB9IGVsc2Uge1xuICAgIHN0cmVhbS5wb2ludCh0b1swXSwgdG9bMV0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/antimeridian.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/buffer.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/buffer.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9idWZmZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBOEI7O0FBRTlCLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhLGdEQUFJO0FBQ2pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2J1ZmZlci5qcz83OTNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbGluZXMgPSBbXSxcbiAgICAgIGxpbmU7XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHksIG0pIHtcbiAgICAgIGxpbmUucHVzaChbeCwgeSwgbV0pO1xuICAgIH0sXG4gICAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIGxpbmVzLnB1c2gobGluZSA9IFtdKTtcbiAgICB9LFxuICAgIGxpbmVFbmQ6IG5vb3AsXG4gICAgcmVqb2luOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChsaW5lcy5sZW5ndGggPiAxKSBsaW5lcy5wdXNoKGxpbmVzLnBvcCgpLmNvbmNhdChsaW5lcy5zaGlmdCgpKSk7XG4gICAgfSxcbiAgICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxpbmVzO1xuICAgICAgbGluZXMgPSBbXTtcbiAgICAgIGxpbmUgPSBudWxsO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/buffer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/circle.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/circle.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian.js */ \"../../../node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../circle.js */ \"../../../node_modules/d3-geo/src/circle.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../pointEqual.js */ \"../../../node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/clip/index.js\");\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(radius) {\n var cr = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(radius),\n delta = 6 * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n smallRadius = cr > 0,\n notHemisphere = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(cr) > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n (0,_circle_js__WEBPACK_IMPORTED_MODULE_1__.circleStream)(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(lambda) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? _math_js__WEBPACK_IMPORTED_MODULE_0__.pi : -_math_js__WEBPACK_IMPORTED_MODULE_0__.pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || (0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(point0, point2) || (0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !(0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesian)(a),\n pb = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesian)(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianCross)(pa, pb),\n n2n2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianDot)(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianCross)(n1, n2),\n A = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianScale)(n1, c1),\n B = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianScale)(n2, c2);\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianAddInPlace)(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianDot)(A, u),\n uu = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianDot)(u, u),\n t2 = w * w - uu * ((0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianDot)(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(t2),\n q = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianScale)(u, (-w - t) / uu);\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianAddInPlace)(q, A);\n q = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.spherical)(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(delta - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon,\n meridian = polar || delta < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(q[0] - lambda0) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianScale)(u, (-w + t) / uu);\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.cartesianAddInPlace)(q1, A);\n return [q, (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_3__.spherical)(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : _math_js__WEBPACK_IMPORTED_MODULE_0__.pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-_math_js__WEBPACK_IMPORTED_MODULE_0__.pi, radius - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9jaXJjbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXdIO0FBQzlFO0FBQ3NCO0FBQ3RCO0FBQ1o7O0FBRTlCLDZCQUFlLG9DQUFTO0FBQ3hCLFdBQVcsNkNBQUc7QUFDZCxrQkFBa0IsNkNBQU87QUFDekI7QUFDQSxzQkFBc0IsNkNBQUcsT0FBTyw2Q0FBTyxFQUFFOztBQUV6QztBQUNBLElBQUksd0RBQVk7QUFDaEI7O0FBRUE7QUFDQSxXQUFXLDZDQUFHLFdBQVcsNkNBQUc7QUFDNUI7O0FBRUE7QUFDQSxtRUFBbUU7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHdDQUFFLElBQUksd0NBQUU7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDBEQUFVLG9CQUFvQiwwREFBVTtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDBEQUFVO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsd0RBQVM7QUFDdEIsYUFBYSx3REFBUzs7QUFFdEI7QUFDQTtBQUNBO0FBQ0EsYUFBYSw2REFBYztBQUMzQixlQUFlLDJEQUFZO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFjO0FBQzlCLFlBQVksNkRBQWM7QUFDMUIsWUFBWSw2REFBYztBQUMxQixJQUFJLGtFQUFtQjs7QUFFdkI7QUFDQTtBQUNBLFlBQVksMkRBQVk7QUFDeEIsYUFBYSwyREFBWTtBQUN6QiwyQkFBMkIsMkRBQVk7O0FBRXZDOztBQUVBLFlBQVksOENBQUk7QUFDaEIsWUFBWSw2REFBYztBQUMxQixJQUFJLGtFQUFtQjtBQUN2QixRQUFRLHdEQUFTOztBQUVqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0IsNkNBQUcsU0FBUyx3Q0FBRSxJQUFJLDZDQUFPO0FBQ3pDLG9DQUFvQyw2Q0FBTzs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDZDQUFHLG1CQUFtQiw2Q0FBTztBQUNuRTtBQUNBLGtCQUFrQix3Q0FBRTtBQUNwQixlQUFlLDZEQUFjO0FBQzdCLE1BQU0sa0VBQW1CO0FBQ3pCLGlCQUFpQix3REFBUztBQUMxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3Q0FBRTtBQUNyQztBQUNBLGdDQUFnQztBQUNoQyxvQ0FBb0M7QUFDcEMsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQztBQUNBOztBQUVBLFNBQVMscURBQUksZ0VBQWdFLHdDQUFFLFdBQVcsd0NBQUU7QUFDNUYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9jaXJjbGUuanM/MmJlYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQWRkSW5QbGFjZSwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbkRvdCwgY2FydGVzaWFuU2NhbGUsIHNwaGVyaWNhbH0gZnJvbSBcIi4uL2NhcnRlc2lhbi5qc1wiO1xuaW1wb3J0IHtjaXJjbGVTdHJlYW19IGZyb20gXCIuLi9jaXJjbGUuanNcIjtcbmltcG9ydCB7YWJzLCBjb3MsIGVwc2lsb24sIHBpLCByYWRpYW5zLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHBvaW50RXF1YWwgZnJvbSBcIi4uL3BvaW50RXF1YWwuanNcIjtcbmltcG9ydCBjbGlwIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJhZGl1cykge1xuICB2YXIgY3IgPSBjb3MocmFkaXVzKSxcbiAgICAgIGRlbHRhID0gNiAqIHJhZGlhbnMsXG4gICAgICBzbWFsbFJhZGl1cyA9IGNyID4gMCxcbiAgICAgIG5vdEhlbWlzcGhlcmUgPSBhYnMoY3IpID4gZXBzaWxvbjsgLy8gVE9ETyBvcHRpbWlzZSBmb3IgdGhpcyBjb21tb24gY2FzZVxuXG4gIGZ1bmN0aW9uIGludGVycG9sYXRlKGZyb20sIHRvLCBkaXJlY3Rpb24sIHN0cmVhbSkge1xuICAgIGNpcmNsZVN0cmVhbShzdHJlYW0sIHJhZGl1cywgZGVsdGEsIGRpcmVjdGlvbiwgZnJvbSwgdG8pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlzaWJsZShsYW1iZGEsIHBoaSkge1xuICAgIHJldHVybiBjb3MobGFtYmRhKSAqIGNvcyhwaGkpID4gY3I7XG4gIH1cblxuICAvLyBUYWtlcyBhIGxpbmUgYW5kIGN1dHMgaW50byB2aXNpYmxlIHNlZ21lbnRzLiBSZXR1cm4gdmFsdWVzIHVzZWQgZm9yIHBvbHlnb25cbiAgLy8gY2xpcHBpbmc6IDAgLSB0aGVyZSB3ZXJlIGludGVyc2VjdGlvbnMgb3IgdGhlIGxpbmUgd2FzIGVtcHR5OyAxIC0gbm9cbiAgLy8gaW50ZXJzZWN0aW9ucyAyIC0gdGhlcmUgd2VyZSBpbnRlcnNlY3Rpb25zLCBhbmQgdGhlIGZpcnN0IGFuZCBsYXN0IHNlZ21lbnRzXG4gIC8vIHNob3VsZCBiZSByZWpvaW5lZC5cbiAgZnVuY3Rpb24gY2xpcExpbmUoc3RyZWFtKSB7XG4gICAgdmFyIHBvaW50MCwgLy8gcHJldmlvdXMgcG9pbnRcbiAgICAgICAgYzAsIC8vIGNvZGUgZm9yIHByZXZpb3VzIHBvaW50XG4gICAgICAgIHYwLCAvLyB2aXNpYmlsaXR5IG9mIHByZXZpb3VzIHBvaW50XG4gICAgICAgIHYwMCwgLy8gdmlzaWJpbGl0eSBvZiBmaXJzdCBwb2ludFxuICAgICAgICBjbGVhbjsgLy8gbm8gaW50ZXJzZWN0aW9uc1xuICAgIHJldHVybiB7XG4gICAgICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2MDAgPSB2MCA9IGZhbHNlO1xuICAgICAgICBjbGVhbiA9IDE7XG4gICAgICB9LFxuICAgICAgcG9pbnQ6IGZ1bmN0aW9uKGxhbWJkYSwgcGhpKSB7XG4gICAgICAgIHZhciBwb2ludDEgPSBbbGFtYmRhLCBwaGldLFxuICAgICAgICAgICAgcG9pbnQyLFxuICAgICAgICAgICAgdiA9IHZpc2libGUobGFtYmRhLCBwaGkpLFxuICAgICAgICAgICAgYyA9IHNtYWxsUmFkaXVzXG4gICAgICAgICAgICAgID8gdiA/IDAgOiBjb2RlKGxhbWJkYSwgcGhpKVxuICAgICAgICAgICAgICA6IHYgPyBjb2RlKGxhbWJkYSArIChsYW1iZGEgPCAwID8gcGkgOiAtcGkpLCBwaGkpIDogMDtcbiAgICAgICAgaWYgKCFwb2ludDAgJiYgKHYwMCA9IHYwID0gdikpIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgaWYgKHYgIT09IHYwKSB7XG4gICAgICAgICAgcG9pbnQyID0gaW50ZXJzZWN0KHBvaW50MCwgcG9pbnQxKTtcbiAgICAgICAgICBpZiAoIXBvaW50MiB8fCBwb2ludEVxdWFsKHBvaW50MCwgcG9pbnQyKSB8fCBwb2ludEVxdWFsKHBvaW50MSwgcG9pbnQyKSlcbiAgICAgICAgICAgIHBvaW50MVsyXSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgIT09IHYwKSB7XG4gICAgICAgICAgY2xlYW4gPSAwO1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICAvLyBvdXRzaWRlIGdvaW5nIGluXG4gICAgICAgICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgICAgICBwb2ludDIgPSBpbnRlcnNlY3QocG9pbnQxLCBwb2ludDApO1xuICAgICAgICAgICAgc3RyZWFtLnBvaW50KHBvaW50MlswXSwgcG9pbnQyWzFdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW5zaWRlIGdvaW5nIG91dFxuICAgICAgICAgICAgcG9pbnQyID0gaW50ZXJzZWN0KHBvaW50MCwgcG9pbnQxKTtcbiAgICAgICAgICAgIHN0cmVhbS5wb2ludChwb2ludDJbMF0sIHBvaW50MlsxXSwgMik7XG4gICAgICAgICAgICBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBwb2ludDAgPSBwb2ludDI7XG4gICAgICAgIH0gZWxzZSBpZiAobm90SGVtaXNwaGVyZSAmJiBwb2ludDAgJiYgc21hbGxSYWRpdXMgXiB2KSB7XG4gICAgICAgICAgdmFyIHQ7XG4gICAgICAgICAgLy8gSWYgdGhlIGNvZGVzIGZvciB0d28gcG9pbnRzIGFyZSBkaWZmZXJlbnQsIG9yIGFyZSBib3RoIHplcm8sXG4gICAgICAgICAgLy8gYW5kIHRoZXJlIHRoaXMgc2VnbWVudCBpbnRlcnNlY3RzIHdpdGggdGhlIHNtYWxsIGNpcmNsZS5cbiAgICAgICAgICBpZiAoIShjICYgYzApICYmICh0ID0gaW50ZXJzZWN0KHBvaW50MSwgcG9pbnQwLCB0cnVlKSkpIHtcbiAgICAgICAgICAgIGNsZWFuID0gMDtcbiAgICAgICAgICAgIGlmIChzbWFsbFJhZGl1cykge1xuICAgICAgICAgICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgICAgICAgIHN0cmVhbS5wb2ludCh0WzBdWzBdLCB0WzBdWzFdKTtcbiAgICAgICAgICAgICAgc3RyZWFtLnBvaW50KHRbMV1bMF0sIHRbMV1bMV0pO1xuICAgICAgICAgICAgICBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc3RyZWFtLnBvaW50KHRbMV1bMF0sIHRbMV1bMV0pO1xuICAgICAgICAgICAgICBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICAgICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgICAgICAgIHN0cmVhbS5wb2ludCh0WzBdWzBdLCB0WzBdWzFdLCAzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYgJiYgKCFwb2ludDAgfHwgIXBvaW50RXF1YWwocG9pbnQwLCBwb2ludDEpKSkge1xuICAgICAgICAgIHN0cmVhbS5wb2ludChwb2ludDFbMF0sIHBvaW50MVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnQwID0gcG9pbnQxLCB2MCA9IHYsIGMwID0gYztcbiAgICAgIH0sXG4gICAgICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHYwKSBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICBwb2ludDAgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIC8vIFJlam9pbiBmaXJzdCBhbmQgbGFzdCBzZWdtZW50cyBpZiB0aGVyZSB3ZXJlIGludGVyc2VjdGlvbnMgYW5kIHRoZSBmaXJzdFxuICAgICAgLy8gYW5kIGxhc3QgcG9pbnRzIHdlcmUgdmlzaWJsZS5cbiAgICAgIGNsZWFuOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNsZWFuIHwgKCh2MDAgJiYgdjApIDw8IDEpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBJbnRlcnNlY3RzIHRoZSBncmVhdCBjaXJjbGUgYmV0d2VlbiBhIGFuZCBiIHdpdGggdGhlIGNsaXAgY2lyY2xlLlxuICBmdW5jdGlvbiBpbnRlcnNlY3QoYSwgYiwgdHdvKSB7XG4gICAgdmFyIHBhID0gY2FydGVzaWFuKGEpLFxuICAgICAgICBwYiA9IGNhcnRlc2lhbihiKTtcblxuICAgIC8vIFdlIGhhdmUgdHdvIHBsYW5lcywgbjEucCA9IGQxIGFuZCBuMi5wID0gZDIuXG4gICAgLy8gRmluZCBpbnRlcnNlY3Rpb24gbGluZSBwKHQpID0gYzEgbjEgKyBjMiBuMiArIHQgKG4xIOKoryBuMikuXG4gICAgdmFyIG4xID0gWzEsIDAsIDBdLCAvLyBub3JtYWxcbiAgICAgICAgbjIgPSBjYXJ0ZXNpYW5Dcm9zcyhwYSwgcGIpLFxuICAgICAgICBuMm4yID0gY2FydGVzaWFuRG90KG4yLCBuMiksXG4gICAgICAgIG4xbjIgPSBuMlswXSwgLy8gY2FydGVzaWFuRG90KG4xLCBuMiksXG4gICAgICAgIGRldGVybWluYW50ID0gbjJuMiAtIG4xbjIgKiBuMW4yO1xuXG4gICAgLy8gVHdvIHBvbGFyIHBvaW50cy5cbiAgICBpZiAoIWRldGVybWluYW50KSByZXR1cm4gIXR3byAmJiBhO1xuXG4gICAgdmFyIGMxID0gIGNyICogbjJuMiAvIGRldGVybWluYW50LFxuICAgICAgICBjMiA9IC1jciAqIG4xbjIgLyBkZXRlcm1pbmFudCxcbiAgICAgICAgbjF4bjIgPSBjYXJ0ZXNpYW5Dcm9zcyhuMSwgbjIpLFxuICAgICAgICBBID0gY2FydGVzaWFuU2NhbGUobjEsIGMxKSxcbiAgICAgICAgQiA9IGNhcnRlc2lhblNjYWxlKG4yLCBjMik7XG4gICAgY2FydGVzaWFuQWRkSW5QbGFjZShBLCBCKTtcblxuICAgIC8vIFNvbHZlIHxwKHQpfF4yID0gMS5cbiAgICB2YXIgdSA9IG4xeG4yLFxuICAgICAgICB3ID0gY2FydGVzaWFuRG90KEEsIHUpLFxuICAgICAgICB1dSA9IGNhcnRlc2lhbkRvdCh1LCB1KSxcbiAgICAgICAgdDIgPSB3ICogdyAtIHV1ICogKGNhcnRlc2lhbkRvdChBLCBBKSAtIDEpO1xuXG4gICAgaWYgKHQyIDwgMCkgcmV0dXJuO1xuXG4gICAgdmFyIHQgPSBzcXJ0KHQyKSxcbiAgICAgICAgcSA9IGNhcnRlc2lhblNjYWxlKHUsICgtdyAtIHQpIC8gdXUpO1xuICAgIGNhcnRlc2lhbkFkZEluUGxhY2UocSwgQSk7XG4gICAgcSA9IHNwaGVyaWNhbChxKTtcblxuICAgIGlmICghdHdvKSByZXR1cm4gcTtcblxuICAgIC8vIFR3byBpbnRlcnNlY3Rpb24gcG9pbnRzLlxuICAgIHZhciBsYW1iZGEwID0gYVswXSxcbiAgICAgICAgbGFtYmRhMSA9IGJbMF0sXG4gICAgICAgIHBoaTAgPSBhWzFdLFxuICAgICAgICBwaGkxID0gYlsxXSxcbiAgICAgICAgejtcblxuICAgIGlmIChsYW1iZGExIDwgbGFtYmRhMCkgeiA9IGxhbWJkYTAsIGxhbWJkYTAgPSBsYW1iZGExLCBsYW1iZGExID0gejtcblxuICAgIHZhciBkZWx0YSA9IGxhbWJkYTEgLSBsYW1iZGEwLFxuICAgICAgICBwb2xhciA9IGFicyhkZWx0YSAtIHBpKSA8IGVwc2lsb24sXG4gICAgICAgIG1lcmlkaWFuID0gcG9sYXIgfHwgZGVsdGEgPCBlcHNpbG9uO1xuXG4gICAgaWYgKCFwb2xhciAmJiBwaGkxIDwgcGhpMCkgeiA9IHBoaTAsIHBoaTAgPSBwaGkxLCBwaGkxID0gejtcblxuICAgIC8vIENoZWNrIHRoYXQgdGhlIGZpcnN0IHBvaW50IGlzIGJldHdlZW4gYSBhbmQgYi5cbiAgICBpZiAobWVyaWRpYW5cbiAgICAgICAgPyBwb2xhclxuICAgICAgICAgID8gcGhpMCArIHBoaTEgPiAwIF4gcVsxXSA8IChhYnMocVswXSAtIGxhbWJkYTApIDwgZXBzaWxvbiA/IHBoaTAgOiBwaGkxKVxuICAgICAgICAgIDogcGhpMCA8PSBxWzFdICYmIHFbMV0gPD0gcGhpMVxuICAgICAgICA6IGRlbHRhID4gcGkgXiAobGFtYmRhMCA8PSBxWzBdICYmIHFbMF0gPD0gbGFtYmRhMSkpIHtcbiAgICAgIHZhciBxMSA9IGNhcnRlc2lhblNjYWxlKHUsICgtdyArIHQpIC8gdXUpO1xuICAgICAgY2FydGVzaWFuQWRkSW5QbGFjZShxMSwgQSk7XG4gICAgICByZXR1cm4gW3EsIHNwaGVyaWNhbChxMSldO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlcyBhIDQtYml0IHZlY3RvciByZXByZXNlbnRpbmcgdGhlIGxvY2F0aW9uIG9mIGEgcG9pbnQgcmVsYXRpdmUgdG9cbiAgLy8gdGhlIHNtYWxsIGNpcmNsZSdzIGJvdW5kaW5nIGJveC5cbiAgZnVuY3Rpb24gY29kZShsYW1iZGEsIHBoaSkge1xuICAgIHZhciByID0gc21hbGxSYWRpdXMgPyByYWRpdXMgOiBwaSAtIHJhZGl1cyxcbiAgICAgICAgY29kZSA9IDA7XG4gICAgaWYgKGxhbWJkYSA8IC1yKSBjb2RlIHw9IDE7IC8vIGxlZnRcbiAgICBlbHNlIGlmIChsYW1iZGEgPiByKSBjb2RlIHw9IDI7IC8vIHJpZ2h0XG4gICAgaWYgKHBoaSA8IC1yKSBjb2RlIHw9IDQ7IC8vIGJlbG93XG4gICAgZWxzZSBpZiAocGhpID4gcikgY29kZSB8PSA4OyAvLyBhYm92ZVxuICAgIHJldHVybiBjb2RlO1xuICB9XG5cbiAgcmV0dXJuIGNsaXAodmlzaWJsZSwgY2xpcExpbmUsIGludGVycG9sYXRlLCBzbWFsbFJhZGl1cyA/IFswLCAtcmFkaXVzXSA6IFstcGksIHJhZGl1cyAtIHBpXSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/circle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/extent.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/extent.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _rectangle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rectangle.js */ \"../../../node_modules/d3-geo/src/clip/rectangle.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = (0,_rectangle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9leHRlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMkM7O0FBRTNDLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrREFBK0QseURBQWE7QUFDNUUsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9leHRlbnQuanM/ZTEwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xpcFJlY3RhbmdsZSBmcm9tIFwiLi9yZWN0YW5nbGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4MCA9IDAsXG4gICAgICB5MCA9IDAsXG4gICAgICB4MSA9IDk2MCxcbiAgICAgIHkxID0gNTAwLFxuICAgICAgY2FjaGUsXG4gICAgICBjYWNoZVN0cmVhbSxcbiAgICAgIGNsaXA7XG5cbiAgcmV0dXJuIGNsaXAgPSB7XG4gICAgc3RyZWFtOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgIHJldHVybiBjYWNoZSAmJiBjYWNoZVN0cmVhbSA9PT0gc3RyZWFtID8gY2FjaGUgOiBjYWNoZSA9IGNsaXBSZWN0YW5nbGUoeDAsIHkwLCB4MSwgeTEpKGNhY2hlU3RyZWFtID0gc3RyZWFtKTtcbiAgICB9LFxuICAgIGV4dGVudDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeDAgPSArX1swXVswXSwgeTAgPSArX1swXVsxXSwgeDEgPSArX1sxXVswXSwgeTEgPSArX1sxXVsxXSwgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGwsIGNsaXApIDogW1t4MCwgeTBdLCBbeDEsIHkxXV07XG4gICAgfVxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/extent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buffer.js */ \"../../../node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ \"../../../node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../polygonContains.js */ \"../../../node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/merge.js\");\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = (0,_buffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = (0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(segments);\n var startInside = (0,_polygonContains_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n (0,_rejoin_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - _math_js__WEBPACK_IMPORTED_MODULE_4__.halfPi - _math_js__WEBPACK_IMPORTED_MODULE_4__.epsilon : _math_js__WEBPACK_IMPORTED_MODULE_4__.halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - _math_js__WEBPACK_IMPORTED_MODULE_4__.halfPi - _math_js__WEBPACK_IMPORTED_MODULE_4__.epsilon : _math_js__WEBPACK_IMPORTED_MODULE_4__.halfPi - b[1]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBcUM7QUFDQTtBQUNNO0FBQ1M7QUFDckI7O0FBRS9CLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQSxxQkFBcUIsc0RBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvREFBSztBQUN4QiwwQkFBMEIsK0RBQWU7QUFDekM7QUFDQTtBQUNBLFVBQVUsc0RBQVU7QUFDcEIsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLE9BQU87QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsNENBQU0sR0FBRyw2Q0FBTyxHQUFHLDRDQUFNO0FBQzdELG9DQUFvQyw0Q0FBTSxHQUFHLDZDQUFPLEdBQUcsNENBQU07QUFDN0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9pbmRleC5qcz83MzA2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbGlwQnVmZmVyIGZyb20gXCIuL2J1ZmZlci5qc1wiO1xuaW1wb3J0IGNsaXBSZWpvaW4gZnJvbSBcIi4vcmVqb2luLmpzXCI7XG5pbXBvcnQge2Vwc2lsb24sIGhhbGZQaX0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCBwb2x5Z29uQ29udGFpbnMgZnJvbSBcIi4uL3BvbHlnb25Db250YWlucy5qc1wiO1xuaW1wb3J0IHttZXJnZX0gZnJvbSBcImQzLWFycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBvaW50VmlzaWJsZSwgY2xpcExpbmUsIGludGVycG9sYXRlLCBzdGFydCkge1xuICByZXR1cm4gZnVuY3Rpb24oc2luaykge1xuICAgIHZhciBsaW5lID0gY2xpcExpbmUoc2luayksXG4gICAgICAgIHJpbmdCdWZmZXIgPSBjbGlwQnVmZmVyKCksXG4gICAgICAgIHJpbmdTaW5rID0gY2xpcExpbmUocmluZ0J1ZmZlciksXG4gICAgICAgIHBvbHlnb25TdGFydGVkID0gZmFsc2UsXG4gICAgICAgIHBvbHlnb24sXG4gICAgICAgIHNlZ21lbnRzLFxuICAgICAgICByaW5nO1xuXG4gICAgdmFyIGNsaXAgPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjbGlwLnBvaW50ID0gcG9pbnRSaW5nO1xuICAgICAgICBjbGlwLmxpbmVTdGFydCA9IHJpbmdTdGFydDtcbiAgICAgICAgY2xpcC5saW5lRW5kID0gcmluZ0VuZDtcbiAgICAgICAgc2VnbWVudHMgPSBbXTtcbiAgICAgICAgcG9seWdvbiA9IFtdO1xuICAgICAgfSxcbiAgICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjbGlwLnBvaW50ID0gcG9pbnQ7XG4gICAgICAgIGNsaXAubGluZVN0YXJ0ID0gbGluZVN0YXJ0O1xuICAgICAgICBjbGlwLmxpbmVFbmQgPSBsaW5lRW5kO1xuICAgICAgICBzZWdtZW50cyA9IG1lcmdlKHNlZ21lbnRzKTtcbiAgICAgICAgdmFyIHN0YXJ0SW5zaWRlID0gcG9seWdvbkNvbnRhaW5zKHBvbHlnb24sIHN0YXJ0KTtcbiAgICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgIGlmICghcG9seWdvblN0YXJ0ZWQpIHNpbmsucG9seWdvblN0YXJ0KCksIHBvbHlnb25TdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICBjbGlwUmVqb2luKHNlZ21lbnRzLCBjb21wYXJlSW50ZXJzZWN0aW9uLCBzdGFydEluc2lkZSwgaW50ZXJwb2xhdGUsIHNpbmspO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0SW5zaWRlKSB7XG4gICAgICAgICAgaWYgKCFwb2x5Z29uU3RhcnRlZCkgc2luay5wb2x5Z29uU3RhcnQoKSwgcG9seWdvblN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgIHNpbmsubGluZVN0YXJ0KCk7XG4gICAgICAgICAgaW50ZXJwb2xhdGUobnVsbCwgbnVsbCwgMSwgc2luayk7XG4gICAgICAgICAgc2luay5saW5lRW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvbHlnb25TdGFydGVkKSBzaW5rLnBvbHlnb25FbmQoKSwgcG9seWdvblN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgc2VnbWVudHMgPSBwb2x5Z29uID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBzcGhlcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzaW5rLnBvbHlnb25TdGFydCgpO1xuICAgICAgICBzaW5rLmxpbmVTdGFydCgpO1xuICAgICAgICBpbnRlcnBvbGF0ZShudWxsLCBudWxsLCAxLCBzaW5rKTtcbiAgICAgICAgc2luay5saW5lRW5kKCk7XG4gICAgICAgIHNpbmsucG9seWdvbkVuZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwb2ludChsYW1iZGEsIHBoaSkge1xuICAgICAgaWYgKHBvaW50VmlzaWJsZShsYW1iZGEsIHBoaSkpIHNpbmsucG9pbnQobGFtYmRhLCBwaGkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvaW50TGluZShsYW1iZGEsIHBoaSkge1xuICAgICAgbGluZS5wb2ludChsYW1iZGEsIHBoaSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgY2xpcC5wb2ludCA9IHBvaW50TGluZTtcbiAgICAgIGxpbmUubGluZVN0YXJ0KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZUVuZCgpIHtcbiAgICAgIGNsaXAucG9pbnQgPSBwb2ludDtcbiAgICAgIGxpbmUubGluZUVuZCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvaW50UmluZyhsYW1iZGEsIHBoaSkge1xuICAgICAgcmluZy5wdXNoKFtsYW1iZGEsIHBoaV0pO1xuICAgICAgcmluZ1NpbmsucG9pbnQobGFtYmRhLCBwaGkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdTdGFydCgpIHtcbiAgICAgIHJpbmdTaW5rLmxpbmVTdGFydCgpO1xuICAgICAgcmluZyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICBwb2ludFJpbmcocmluZ1swXVswXSwgcmluZ1swXVsxXSk7XG4gICAgICByaW5nU2luay5saW5lRW5kKCk7XG5cbiAgICAgIHZhciBjbGVhbiA9IHJpbmdTaW5rLmNsZWFuKCksXG4gICAgICAgICAgcmluZ1NlZ21lbnRzID0gcmluZ0J1ZmZlci5yZXN1bHQoKSxcbiAgICAgICAgICBpLCBuID0gcmluZ1NlZ21lbnRzLmxlbmd0aCwgbSxcbiAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgIHBvaW50O1xuXG4gICAgICByaW5nLnBvcCgpO1xuICAgICAgcG9seWdvbi5wdXNoKHJpbmcpO1xuICAgICAgcmluZyA9IG51bGw7XG5cbiAgICAgIGlmICghbikgcmV0dXJuO1xuXG4gICAgICAvLyBObyBpbnRlcnNlY3Rpb25zLlxuICAgICAgaWYgKGNsZWFuICYgMSkge1xuICAgICAgICBzZWdtZW50ID0gcmluZ1NlZ21lbnRzWzBdO1xuICAgICAgICBpZiAoKG0gPSBzZWdtZW50Lmxlbmd0aCAtIDEpID4gMCkge1xuICAgICAgICAgIGlmICghcG9seWdvblN0YXJ0ZWQpIHNpbmsucG9seWdvblN0YXJ0KCksIHBvbHlnb25TdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICBzaW5rLmxpbmVTdGFydCgpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtOyArK2kpIHNpbmsucG9pbnQoKHBvaW50ID0gc2VnbWVudFtpXSlbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgICBzaW5rLmxpbmVFbmQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFJlam9pbiBjb25uZWN0ZWQgc2VnbWVudHMuXG4gICAgICAvLyBUT0RPIHJldXNlIHJpbmdCdWZmZXIucmVqb2luKCk/XG4gICAgICBpZiAobiA+IDEgJiYgY2xlYW4gJiAyKSByaW5nU2VnbWVudHMucHVzaChyaW5nU2VnbWVudHMucG9wKCkuY29uY2F0KHJpbmdTZWdtZW50cy5zaGlmdCgpKSk7XG5cbiAgICAgIHNlZ21lbnRzLnB1c2gocmluZ1NlZ21lbnRzLmZpbHRlcih2YWxpZFNlZ21lbnQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xpcDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdmFsaWRTZWdtZW50KHNlZ21lbnQpIHtcbiAgcmV0dXJuIHNlZ21lbnQubGVuZ3RoID4gMTtcbn1cblxuLy8gSW50ZXJzZWN0aW9ucyBhcmUgc29ydGVkIGFsb25nIHRoZSBjbGlwIGVkZ2UuIEZvciBib3RoIGFudGltZXJpZGlhbiBjdXR0aW5nXG4vLyBhbmQgY2lyY2xlIGNsaXBwaW5nLCB0aGUgc2FtZSBjb21wYXJpc29uIGlzIHVzZWQuXG5mdW5jdGlvbiBjb21wYXJlSW50ZXJzZWN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuICgoYSA9IGEueClbMF0gPCAwID8gYVsxXSAtIGhhbGZQaSAtIGVwc2lsb24gOiBoYWxmUGkgLSBhWzFdKVxuICAgICAgIC0gKChiID0gYi54KVswXSA8IDAgPyBiWzFdIC0gaGFsZlBpIC0gZXBzaWxvbiA6IGhhbGZQaSAtIGJbMV0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/line.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/line.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9saW5lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jbGlwL2xpbmUuanM/MjM2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiLCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgYXggPSBhWzBdLFxuICAgICAgYXkgPSBhWzFdLFxuICAgICAgYnggPSBiWzBdLFxuICAgICAgYnkgPSBiWzFdLFxuICAgICAgdDAgPSAwLFxuICAgICAgdDEgPSAxLFxuICAgICAgZHggPSBieCAtIGF4LFxuICAgICAgZHkgPSBieSAtIGF5LFxuICAgICAgcjtcblxuICByID0geDAgLSBheDtcbiAgaWYgKCFkeCAmJiByID4gMCkgcmV0dXJuO1xuICByIC89IGR4O1xuICBpZiAoZHggPCAwKSB7XG4gICAgaWYgKHIgPCB0MCkgcmV0dXJuO1xuICAgIGlmIChyIDwgdDEpIHQxID0gcjtcbiAgfSBlbHNlIGlmIChkeCA+IDApIHtcbiAgICBpZiAociA+IHQxKSByZXR1cm47XG4gICAgaWYgKHIgPiB0MCkgdDAgPSByO1xuICB9XG5cbiAgciA9IHgxIC0gYXg7XG4gIGlmICghZHggJiYgciA8IDApIHJldHVybjtcbiAgciAvPSBkeDtcbiAgaWYgKGR4IDwgMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH0gZWxzZSBpZiAoZHggPiAwKSB7XG4gICAgaWYgKHIgPCB0MCkgcmV0dXJuO1xuICAgIGlmIChyIDwgdDEpIHQxID0gcjtcbiAgfVxuXG4gIHIgPSB5MCAtIGF5O1xuICBpZiAoIWR5ICYmIHIgPiAwKSByZXR1cm47XG4gIHIgLz0gZHk7XG4gIGlmIChkeSA8IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9IGVsc2UgaWYgKGR5ID4gMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH1cblxuICByID0geTEgLSBheTtcbiAgaWYgKCFkeSAmJiByIDwgMCkgcmV0dXJuO1xuICByIC89IGR5O1xuICBpZiAoZHkgPCAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfSBlbHNlIGlmIChkeSA+IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9XG5cbiAgaWYgKHQwID4gMCkgYVswXSA9IGF4ICsgdDAgKiBkeCwgYVsxXSA9IGF5ICsgdDAgKiBkeTtcbiAgaWYgKHQxIDwgMSkgYlswXSA9IGF4ICsgdDEgKiBkeCwgYlsxXSA9IGF5ICsgdDEgKiBkeTtcbiAgcmV0dXJuIHRydWU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/line.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/rectangle.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/rectangle.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ clipRectangle)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _buffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buffer.js */ \"../../../node_modules/d3-geo/src/clip/buffer.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./line.js */ \"../../../node_modules/d3-geo/src/clip/line.js\");\n/* harmony import */ var _rejoin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rejoin.js */ \"../../../node_modules/d3-geo/src/clip/rejoin.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/merge.js\");\n\n\n\n\n\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nfunction clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(p[0] - x0) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon ? direction > 0 ? 0 : 3\n : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(p[0] - x1) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon ? direction > 0 ? 2 : 1\n : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(p[1] - y0) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = (0,_buffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = (0,d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n (0,_rejoin_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if ((0,_line_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9yZWN0YW5nbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXdDO0FBQ0g7QUFDSjtBQUNJO0FBQ047O0FBRS9COztBQUVBO0FBQ0E7O0FBRWU7O0FBRWY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsNkNBQUcsY0FBYyw2Q0FBTztBQUNuQyxVQUFVLDZDQUFHLGNBQWMsNkNBQU87QUFDbEMsVUFBVSw2Q0FBRyxjQUFjLDZDQUFPO0FBQ2xDLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUIsc0RBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMENBQTBDLE9BQU87QUFDakQsbUhBQW1ILE9BQU87QUFDMUg7QUFDQSwwQkFBMEI7QUFDMUIsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0RBQUs7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsc0RBQVU7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG9EQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvcmVjdGFuZ2xlLmpzP2Q5NGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGVwc2lsb259IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQgY2xpcEJ1ZmZlciBmcm9tIFwiLi9idWZmZXIuanNcIjtcbmltcG9ydCBjbGlwTGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5pbXBvcnQgY2xpcFJlam9pbiBmcm9tIFwiLi9yZWpvaW4uanNcIjtcbmltcG9ydCB7bWVyZ2V9IGZyb20gXCJkMy1hcnJheVwiO1xuXG52YXIgY2xpcE1heCA9IDFlOSwgY2xpcE1pbiA9IC1jbGlwTWF4O1xuXG4vLyBUT0RPIFVzZSBkMy1wb2x5Z29u4oCZcyBwb2x5Z29uQ29udGFpbnMgaGVyZSBmb3IgdGhlIHJpbmcgY2hlY2s/XG4vLyBUT0RPIEVsaW1pbmF0ZSBkdXBsaWNhdGUgYnVmZmVyaW5nIGluIGNsaXBCdWZmZXIgYW5kIHBvbHlnb24ucHVzaD9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY2xpcFJlY3RhbmdsZSh4MCwgeTAsIHgxLCB5MSkge1xuXG4gIGZ1bmN0aW9uIHZpc2libGUoeCwgeSkge1xuICAgIHJldHVybiB4MCA8PSB4ICYmIHggPD0geDEgJiYgeTAgPD0geSAmJiB5IDw9IHkxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW50ZXJwb2xhdGUoZnJvbSwgdG8sIGRpcmVjdGlvbiwgc3RyZWFtKSB7XG4gICAgdmFyIGEgPSAwLCBhMSA9IDA7XG4gICAgaWYgKGZyb20gPT0gbnVsbFxuICAgICAgICB8fCAoYSA9IGNvcm5lcihmcm9tLCBkaXJlY3Rpb24pKSAhPT0gKGExID0gY29ybmVyKHRvLCBkaXJlY3Rpb24pKVxuICAgICAgICB8fCBjb21wYXJlUG9pbnQoZnJvbSwgdG8pIDwgMCBeIGRpcmVjdGlvbiA+IDApIHtcbiAgICAgIGRvIHN0cmVhbS5wb2ludChhID09PSAwIHx8IGEgPT09IDMgPyB4MCA6IHgxLCBhID4gMSA/IHkxIDogeTApO1xuICAgICAgd2hpbGUgKChhID0gKGEgKyBkaXJlY3Rpb24gKyA0KSAlIDQpICE9PSBhMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5wb2ludCh0b1swXSwgdG9bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcm5lcihwLCBkaXJlY3Rpb24pIHtcbiAgICByZXR1cm4gYWJzKHBbMF0gLSB4MCkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDAgOiAzXG4gICAgICAgIDogYWJzKHBbMF0gLSB4MSkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDIgOiAxXG4gICAgICAgIDogYWJzKHBbMV0gLSB5MCkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDEgOiAwXG4gICAgICAgIDogZGlyZWN0aW9uID4gMCA/IDMgOiAyOyAvLyBhYnMocFsxXSAtIHkxKSA8IGVwc2lsb25cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBhcmVJbnRlcnNlY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlUG9pbnQoYS54LCBiLngpO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcGFyZVBvaW50KGEsIGIpIHtcbiAgICB2YXIgY2EgPSBjb3JuZXIoYSwgMSksXG4gICAgICAgIGNiID0gY29ybmVyKGIsIDEpO1xuICAgIHJldHVybiBjYSAhPT0gY2IgPyBjYSAtIGNiXG4gICAgICAgIDogY2EgPT09IDAgPyBiWzFdIC0gYVsxXVxuICAgICAgICA6IGNhID09PSAxID8gYVswXSAtIGJbMF1cbiAgICAgICAgOiBjYSA9PT0gMiA/IGFbMV0gLSBiWzFdXG4gICAgICAgIDogYlswXSAtIGFbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgdmFyIGFjdGl2ZVN0cmVhbSA9IHN0cmVhbSxcbiAgICAgICAgYnVmZmVyU3RyZWFtID0gY2xpcEJ1ZmZlcigpLFxuICAgICAgICBzZWdtZW50cyxcbiAgICAgICAgcG9seWdvbixcbiAgICAgICAgcmluZyxcbiAgICAgICAgeF9fLCB5X18sIHZfXywgLy8gZmlyc3QgcG9pbnRcbiAgICAgICAgeF8sIHlfLCB2XywgLy8gcHJldmlvdXMgcG9pbnRcbiAgICAgICAgZmlyc3QsXG4gICAgICAgIGNsZWFuO1xuXG4gICAgdmFyIGNsaXBTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IHBvbHlnb25TdGFydCxcbiAgICAgIHBvbHlnb25FbmQ6IHBvbHlnb25FbmRcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgaWYgKHZpc2libGUoeCwgeSkpIGFjdGl2ZVN0cmVhbS5wb2ludCh4LCB5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2x5Z29uSW5zaWRlKCkge1xuICAgICAgdmFyIHdpbmRpbmcgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHBvbHlnb24ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGZvciAodmFyIHJpbmcgPSBwb2x5Z29uW2ldLCBqID0gMSwgbSA9IHJpbmcubGVuZ3RoLCBwb2ludCA9IHJpbmdbMF0sIGEwLCBhMSwgYjAgPSBwb2ludFswXSwgYjEgPSBwb2ludFsxXTsgaiA8IG07ICsraikge1xuICAgICAgICAgIGEwID0gYjAsIGExID0gYjEsIHBvaW50ID0gcmluZ1tqXSwgYjAgPSBwb2ludFswXSwgYjEgPSBwb2ludFsxXTtcbiAgICAgICAgICBpZiAoYTEgPD0geTEpIHsgaWYgKGIxID4geTEgJiYgKGIwIC0gYTApICogKHkxIC0gYTEpID4gKGIxIC0gYTEpICogKHgwIC0gYTApKSArK3dpbmRpbmc7IH1cbiAgICAgICAgICBlbHNlIHsgaWYgKGIxIDw9IHkxICYmIChiMCAtIGEwKSAqICh5MSAtIGExKSA8IChiMSAtIGExKSAqICh4MCAtIGEwKSkgLS13aW5kaW5nOyB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdpbmRpbmc7XG4gICAgfVxuXG4gICAgLy8gQnVmZmVyIGdlb21ldHJ5IHdpdGhpbiBhIHBvbHlnb24gYW5kIHRoZW4gY2xpcCBpdCBlbiBtYXNzZS5cbiAgICBmdW5jdGlvbiBwb2x5Z29uU3RhcnQoKSB7XG4gICAgICBhY3RpdmVTdHJlYW0gPSBidWZmZXJTdHJlYW0sIHNlZ21lbnRzID0gW10sIHBvbHlnb24gPSBbXSwgY2xlYW4gPSB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvbHlnb25FbmQoKSB7XG4gICAgICB2YXIgc3RhcnRJbnNpZGUgPSBwb2x5Z29uSW5zaWRlKCksXG4gICAgICAgICAgY2xlYW5JbnNpZGUgPSBjbGVhbiAmJiBzdGFydEluc2lkZSxcbiAgICAgICAgICB2aXNpYmxlID0gKHNlZ21lbnRzID0gbWVyZ2Uoc2VnbWVudHMpKS5sZW5ndGg7XG4gICAgICBpZiAoY2xlYW5JbnNpZGUgfHwgdmlzaWJsZSkge1xuICAgICAgICBzdHJlYW0ucG9seWdvblN0YXJ0KCk7XG4gICAgICAgIGlmIChjbGVhbkluc2lkZSkge1xuICAgICAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICBpbnRlcnBvbGF0ZShudWxsLCBudWxsLCAxLCBzdHJlYW0pO1xuICAgICAgICAgIHN0cmVhbS5saW5lRW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgICBjbGlwUmVqb2luKHNlZ21lbnRzLCBjb21wYXJlSW50ZXJzZWN0aW9uLCBzdGFydEluc2lkZSwgaW50ZXJwb2xhdGUsIHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLnBvbHlnb25FbmQoKTtcbiAgICAgIH1cbiAgICAgIGFjdGl2ZVN0cmVhbSA9IHN0cmVhbSwgc2VnbWVudHMgPSBwb2x5Z29uID0gcmluZyA9IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgY2xpcFN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIGlmIChwb2x5Z29uKSBwb2x5Z29uLnB1c2gocmluZyA9IFtdKTtcbiAgICAgIGZpcnN0ID0gdHJ1ZTtcbiAgICAgIHZfID0gZmFsc2U7XG4gICAgICB4XyA9IHlfID0gTmFOO1xuICAgIH1cblxuICAgIC8vIFRPRE8gcmF0aGVyIHRoYW4gc3BlY2lhbC1jYXNlIHBvbHlnb25zLCBzaW1wbHkgaGFuZGxlIHRoZW0gc2VwYXJhdGVseS5cbiAgICAvLyBJZGVhbGx5LCBjb2luY2lkZW50IGludGVyc2VjdGlvbiBwb2ludHMgc2hvdWxkIGJlIGppdHRlcmVkIHRvIGF2b2lkXG4gICAgLy8gY2xpcHBpbmcgaXNzdWVzLlxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICBpZiAoc2VnbWVudHMpIHtcbiAgICAgICAgbGluZVBvaW50KHhfXywgeV9fKTtcbiAgICAgICAgaWYgKHZfXyAmJiB2XykgYnVmZmVyU3RyZWFtLnJlam9pbigpO1xuICAgICAgICBzZWdtZW50cy5wdXNoKGJ1ZmZlclN0cmVhbS5yZXN1bHQoKSk7XG4gICAgICB9XG4gICAgICBjbGlwU3RyZWFtLnBvaW50ID0gcG9pbnQ7XG4gICAgICBpZiAodl8pIGFjdGl2ZVN0cmVhbS5saW5lRW5kKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVBvaW50KHgsIHkpIHtcbiAgICAgIHZhciB2ID0gdmlzaWJsZSh4LCB5KTtcbiAgICAgIGlmIChwb2x5Z29uKSByaW5nLnB1c2goW3gsIHldKTtcbiAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICB4X18gPSB4LCB5X18gPSB5LCB2X18gPSB2O1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICBhY3RpdmVTdHJlYW0ucG9pbnQoeCwgeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICYmIHZfKSBhY3RpdmVTdHJlYW0ucG9pbnQoeCwgeSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhID0gW3hfID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeF8pKSwgeV8gPSBNYXRoLm1heChjbGlwTWluLCBNYXRoLm1pbihjbGlwTWF4LCB5XykpXSxcbiAgICAgICAgICAgICAgYiA9IFt4ID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeCkpLCB5ID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeSkpXTtcbiAgICAgICAgICBpZiAoY2xpcExpbmUoYSwgYiwgeDAsIHkwLCB4MSwgeTEpKSB7XG4gICAgICAgICAgICBpZiAoIXZfKSB7XG4gICAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICAgICAgYWN0aXZlU3RyZWFtLnBvaW50KGFbMF0sIGFbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlU3RyZWFtLnBvaW50KGJbMF0sIGJbMV0pO1xuICAgICAgICAgICAgaWYgKCF2KSBhY3RpdmVTdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5wb2ludCh4LCB5KTtcbiAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB4XyA9IHgsIHlfID0geSwgdl8gPSB2O1xuICAgIH1cblxuICAgIHJldHVybiBjbGlwU3RyZWFtO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/rectangle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/clip/rejoin.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/clip/rejoin.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _pointEqual_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointEqual.js */ \"../../../node_modules/d3-geo/src/pointEqual.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if ((0,_pointEqual_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY2xpcC9yZWpvaW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ1A7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixrQkFBa0I7QUFDbEIsa0JBQWtCO0FBQ2xCLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSwwREFBVTtBQUNsQjtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNkNBQU87QUFDMUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsT0FBTztBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLE9BQU87QUFDaEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0Esc0NBQXNDLFFBQVE7QUFDOUMsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NsaXAvcmVqb2luLmpzP2IzN2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBvaW50RXF1YWwgZnJvbSBcIi4uL3BvaW50RXF1YWwuanNcIjtcbmltcG9ydCB7ZXBzaWxvbn0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZnVuY3Rpb24gSW50ZXJzZWN0aW9uKHBvaW50LCBwb2ludHMsIG90aGVyLCBlbnRyeSkge1xuICB0aGlzLnggPSBwb2ludDtcbiAgdGhpcy56ID0gcG9pbnRzO1xuICB0aGlzLm8gPSBvdGhlcjsgLy8gYW5vdGhlciBpbnRlcnNlY3Rpb25cbiAgdGhpcy5lID0gZW50cnk7IC8vIGlzIGFuIGVudHJ5P1xuICB0aGlzLnYgPSBmYWxzZTsgLy8gdmlzaXRlZFxuICB0aGlzLm4gPSB0aGlzLnAgPSBudWxsOyAvLyBuZXh0ICYgcHJldmlvdXNcbn1cblxuLy8gQSBnZW5lcmFsaXplZCBwb2x5Z29uIGNsaXBwaW5nIGFsZ29yaXRobTogZ2l2ZW4gYSBwb2x5Z29uIHRoYXQgaGFzIGJlZW4gY3V0XG4vLyBpbnRvIGl0cyB2aXNpYmxlIGxpbmUgc2VnbWVudHMsIGFuZCByZWpvaW5zIHRoZSBzZWdtZW50cyBieSBpbnRlcnBvbGF0aW5nXG4vLyBhbG9uZyB0aGUgY2xpcCBlZGdlLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VnbWVudHMsIGNvbXBhcmVJbnRlcnNlY3Rpb24sIHN0YXJ0SW5zaWRlLCBpbnRlcnBvbGF0ZSwgc3RyZWFtKSB7XG4gIHZhciBzdWJqZWN0ID0gW10sXG4gICAgICBjbGlwID0gW10sXG4gICAgICBpLFxuICAgICAgbjtcblxuICBzZWdtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHNlZ21lbnQpIHtcbiAgICBpZiAoKG4gPSBzZWdtZW50Lmxlbmd0aCAtIDEpIDw9IDApIHJldHVybjtcbiAgICB2YXIgbiwgcDAgPSBzZWdtZW50WzBdLCBwMSA9IHNlZ21lbnRbbl0sIHg7XG5cbiAgICBpZiAocG9pbnRFcXVhbChwMCwgcDEpKSB7XG4gICAgICBpZiAoIXAwWzJdICYmICFwMVsyXSkge1xuICAgICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHN0cmVhbS5wb2ludCgocDAgPSBzZWdtZW50W2ldKVswXSwgcDBbMV0pO1xuICAgICAgICBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgZGVnZW5lcmF0ZSBjYXNlcyBieSBtb3ZpbmcgdGhlIHBvaW50XG4gICAgICBwMVswXSArPSAyICogZXBzaWxvbjtcbiAgICB9XG5cbiAgICBzdWJqZWN0LnB1c2goeCA9IG5ldyBJbnRlcnNlY3Rpb24ocDAsIHNlZ21lbnQsIG51bGwsIHRydWUpKTtcbiAgICBjbGlwLnB1c2goeC5vID0gbmV3IEludGVyc2VjdGlvbihwMCwgbnVsbCwgeCwgZmFsc2UpKTtcbiAgICBzdWJqZWN0LnB1c2goeCA9IG5ldyBJbnRlcnNlY3Rpb24ocDEsIHNlZ21lbnQsIG51bGwsIGZhbHNlKSk7XG4gICAgY2xpcC5wdXNoKHgubyA9IG5ldyBJbnRlcnNlY3Rpb24ocDEsIG51bGwsIHgsIHRydWUpKTtcbiAgfSk7XG5cbiAgaWYgKCFzdWJqZWN0Lmxlbmd0aCkgcmV0dXJuO1xuXG4gIGNsaXAuc29ydChjb21wYXJlSW50ZXJzZWN0aW9uKTtcbiAgbGluayhzdWJqZWN0KTtcbiAgbGluayhjbGlwKTtcblxuICBmb3IgKGkgPSAwLCBuID0gY2xpcC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBjbGlwW2ldLmUgPSBzdGFydEluc2lkZSA9ICFzdGFydEluc2lkZTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IHN1YmplY3RbMF0sXG4gICAgICBwb2ludHMsXG4gICAgICBwb2ludDtcblxuICB3aGlsZSAoMSkge1xuICAgIC8vIEZpbmQgZmlyc3QgdW52aXNpdGVkIGludGVyc2VjdGlvbi5cbiAgICB2YXIgY3VycmVudCA9IHN0YXJ0LFxuICAgICAgICBpc1N1YmplY3QgPSB0cnVlO1xuICAgIHdoaWxlIChjdXJyZW50LnYpIGlmICgoY3VycmVudCA9IGN1cnJlbnQubikgPT09IHN0YXJ0KSByZXR1cm47XG4gICAgcG9pbnRzID0gY3VycmVudC56O1xuICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICBkbyB7XG4gICAgICBjdXJyZW50LnYgPSBjdXJyZW50Lm8udiA9IHRydWU7XG4gICAgICBpZiAoY3VycmVudC5lKSB7XG4gICAgICAgIGlmIChpc1N1YmplY3QpIHtcbiAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gcG9pbnRzLmxlbmd0aDsgaSA8IG47ICsraSkgc3RyZWFtLnBvaW50KChwb2ludCA9IHBvaW50c1tpXSlbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbnRlcnBvbGF0ZShjdXJyZW50LngsIGN1cnJlbnQubi54LCAxLCBzdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNTdWJqZWN0KSB7XG4gICAgICAgICAgcG9pbnRzID0gY3VycmVudC5wLno7XG4gICAgICAgICAgZm9yIChpID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSBzdHJlYW0ucG9pbnQoKHBvaW50ID0gcG9pbnRzW2ldKVswXSwgcG9pbnRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGludGVycG9sYXRlKGN1cnJlbnQueCwgY3VycmVudC5wLngsIC0xLCBzdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnA7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5vO1xuICAgICAgcG9pbnRzID0gY3VycmVudC56O1xuICAgICAgaXNTdWJqZWN0ID0gIWlzU3ViamVjdDtcbiAgICB9IHdoaWxlICghY3VycmVudC52KTtcbiAgICBzdHJlYW0ubGluZUVuZCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxpbmsoYXJyYXkpIHtcbiAgaWYgKCEobiA9IGFycmF5Lmxlbmd0aCkpIHJldHVybjtcbiAgdmFyIG4sXG4gICAgICBpID0gMCxcbiAgICAgIGEgPSBhcnJheVswXSxcbiAgICAgIGI7XG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgYS5uID0gYiA9IGFycmF5W2ldO1xuICAgIGIucCA9IGE7XG4gICAgYSA9IGI7XG4gIH1cbiAgYS5uID0gYiA9IGFycmF5WzBdO1xuICBiLnAgPSBhO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/clip/rejoin.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/compose.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-geo/src/compose.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29tcG9zZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7O0FBRXhCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9jb21wb3NlLmpzP2Q1MjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuXG4gIGZ1bmN0aW9uIGNvbXBvc2UoeCwgeSkge1xuICAgIHJldHVybiB4ID0gYSh4LCB5KSwgYih4WzBdLCB4WzFdKTtcbiAgfVxuXG4gIGlmIChhLmludmVydCAmJiBiLmludmVydCkgY29tcG9zZS5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgcmV0dXJuIHggPSBiLmludmVydCh4LCB5KSwgeCAmJiBhLmludmVydCh4WzBdLCB4WzFdKTtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/compose.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/constant.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/constant.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29uc3RhbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2NvbnN0YW50LmpzP2ExYTYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/contains.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/contains.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _polygonContains_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./polygonContains.js */ \"../../../node_modules/d3-geo/src/polygonContains.js\");\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./distance.js */ \"../../../node_modules/d3-geo/src/distance.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return (0,_distance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = (0,_distance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = (0,_distance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!(0,_polygonContains_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, point[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians];\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29udGFpbnMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRTtBQUNkO0FBQ047O0FBRTVDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyx3REFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDLE9BQU87QUFDakQsU0FBUyx3REFBUTtBQUNqQjtBQUNBO0FBQ0EsV0FBVyx3REFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCw4Q0FBUTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsK0RBQWU7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLDZDQUFPLGFBQWEsNkNBQU87QUFDaEQ7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvY29udGFpbnMuanM/MWVjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlZmF1bHQgYXMgcG9seWdvbkNvbnRhaW5zfSBmcm9tIFwiLi9wb2x5Z29uQ29udGFpbnMuanNcIjtcbmltcG9ydCB7ZGVmYXVsdCBhcyBkaXN0YW5jZX0gZnJvbSBcIi4vZGlzdGFuY2UuanNcIjtcbmltcG9ydCB7ZXBzaWxvbjIsIHJhZGlhbnN9IGZyb20gXCIuL21hdGguanNcIjtcblxudmFyIGNvbnRhaW5zT2JqZWN0VHlwZSA9IHtcbiAgRmVhdHVyZTogZnVuY3Rpb24ob2JqZWN0LCBwb2ludCkge1xuICAgIHJldHVybiBjb250YWluc0dlb21ldHJ5KG9iamVjdC5nZW9tZXRyeSwgcG9pbnQpO1xuICB9LFxuICBGZWF0dXJlQ29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBwb2ludCkge1xuICAgIHZhciBmZWF0dXJlcyA9IG9iamVjdC5mZWF0dXJlcywgaSA9IC0xLCBuID0gZmVhdHVyZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoY29udGFpbnNHZW9tZXRyeShmZWF0dXJlc1tpXS5nZW9tZXRyeSwgcG9pbnQpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBjb250YWluc0dlb21ldHJ5VHlwZSA9IHtcbiAgU3BoZXJlOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICByZXR1cm4gY29udGFpbnNQb2ludChvYmplY3QuY29vcmRpbmF0ZXMsIHBvaW50KTtcbiAgfSxcbiAgTXVsdGlQb2ludDogZnVuY3Rpb24ob2JqZWN0LCBwb2ludCkge1xuICAgIHZhciBjb29yZGluYXRlcyA9IG9iamVjdC5jb29yZGluYXRlcywgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoY29udGFpbnNQb2ludChjb29yZGluYXRlc1tpXSwgcG9pbnQpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIExpbmVTdHJpbmc6IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICByZXR1cm4gY29udGFpbnNMaW5lKG9iamVjdC5jb29yZGluYXRlcywgcG9pbnQpO1xuICB9LFxuICBNdWx0aUxpbmVTdHJpbmc6IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGNvbnRhaW5zTGluZShjb29yZGluYXRlc1tpXSwgcG9pbnQpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIFBvbHlnb246IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICByZXR1cm4gY29udGFpbnNQb2x5Z29uKG9iamVjdC5jb29yZGluYXRlcywgcG9pbnQpO1xuICB9LFxuICBNdWx0aVBvbHlnb246IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGNvbnRhaW5zUG9seWdvbihjb29yZGluYXRlc1tpXSwgcG9pbnQpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIEdlb21ldHJ5Q29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBwb2ludCkge1xuICAgIHZhciBnZW9tZXRyaWVzID0gb2JqZWN0Lmdlb21ldHJpZXMsIGkgPSAtMSwgbiA9IGdlb21ldHJpZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoY29udGFpbnNHZW9tZXRyeShnZW9tZXRyaWVzW2ldLCBwb2ludCkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gY29udGFpbnNHZW9tZXRyeShnZW9tZXRyeSwgcG9pbnQpIHtcbiAgcmV0dXJuIGdlb21ldHJ5ICYmIGNvbnRhaW5zR2VvbWV0cnlUeXBlLmhhc093blByb3BlcnR5KGdlb21ldHJ5LnR5cGUpXG4gICAgICA/IGNvbnRhaW5zR2VvbWV0cnlUeXBlW2dlb21ldHJ5LnR5cGVdKGdlb21ldHJ5LCBwb2ludClcbiAgICAgIDogZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zUG9pbnQoY29vcmRpbmF0ZXMsIHBvaW50KSB7XG4gIHJldHVybiBkaXN0YW5jZShjb29yZGluYXRlcywgcG9pbnQpID09PSAwO1xufVxuXG5mdW5jdGlvbiBjb250YWluc0xpbmUoY29vcmRpbmF0ZXMsIHBvaW50KSB7XG4gIHZhciBhbywgYm8sIGFiO1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgIGJvID0gZGlzdGFuY2UoY29vcmRpbmF0ZXNbaV0sIHBvaW50KTtcbiAgICBpZiAoYm8gPT09IDApIHJldHVybiB0cnVlO1xuICAgIGlmIChpID4gMCkge1xuICAgICAgYWIgPSBkaXN0YW5jZShjb29yZGluYXRlc1tpXSwgY29vcmRpbmF0ZXNbaSAtIDFdKTtcbiAgICAgIGlmIChcbiAgICAgICAgYWIgPiAwICYmXG4gICAgICAgIGFvIDw9IGFiICYmXG4gICAgICAgIGJvIDw9IGFiICYmXG4gICAgICAgIChhbyArIGJvIC0gYWIpICogKDEgLSBNYXRoLnBvdygoYW8gLSBibykgLyBhYiwgMikpIDwgZXBzaWxvbjIgKiBhYlxuICAgICAgKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYW8gPSBibztcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zUG9seWdvbihjb29yZGluYXRlcywgcG9pbnQpIHtcbiAgcmV0dXJuICEhcG9seWdvbkNvbnRhaW5zKGNvb3JkaW5hdGVzLm1hcChyaW5nUmFkaWFucyksIHBvaW50UmFkaWFucyhwb2ludCkpO1xufVxuXG5mdW5jdGlvbiByaW5nUmFkaWFucyhyaW5nKSB7XG4gIHJldHVybiByaW5nID0gcmluZy5tYXAocG9pbnRSYWRpYW5zKSwgcmluZy5wb3AoKSwgcmluZztcbn1cblxuZnVuY3Rpb24gcG9pbnRSYWRpYW5zKHBvaW50KSB7XG4gIHJldHVybiBbcG9pbnRbMF0gKiByYWRpYW5zLCBwb2ludFsxXSAqIHJhZGlhbnNdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gIHJldHVybiAob2JqZWN0ICYmIGNvbnRhaW5zT2JqZWN0VHlwZS5oYXNPd25Qcm9wZXJ0eShvYmplY3QudHlwZSlcbiAgICAgID8gY29udGFpbnNPYmplY3RUeXBlW29iamVjdC50eXBlXVxuICAgICAgOiBjb250YWluc0dlb21ldHJ5KShvYmplY3QsIHBvaW50KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/contains.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/distance.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/distance.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./length.js */ \"../../../node_modules/d3-geo/src/length.js\");\n\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return (0,_length_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvZGlzdGFuY2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUM7O0FBRWpDO0FBQ0EsY0FBYzs7QUFFZCw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EsU0FBUyxzREFBTTtBQUNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL2Rpc3RhbmNlLmpzPzkxODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxlbmd0aCBmcm9tIFwiLi9sZW5ndGguanNcIjtcblxudmFyIGNvb3JkaW5hdGVzID0gW251bGwsIG51bGxdLFxuICAgIG9iamVjdCA9IHt0eXBlOiBcIkxpbmVTdHJpbmdcIiwgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICBjb29yZGluYXRlc1swXSA9IGE7XG4gIGNvb3JkaW5hdGVzWzFdID0gYjtcbiAgcmV0dXJuIGxlbmd0aChvYmplY3QpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/distance.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/graticule.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/graticule.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ graticule),\n/* harmony export */ \"graticule10\": () => (/* binding */ graticule10)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/range.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\nfunction graticuleX(y0, y1, dy) {\n var y = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y0, y1 - _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x0, x1 - _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nfunction graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.ceil)(X0 / DX) * DX, X1, DX).map(X)\n .concat((0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.ceil)(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat((0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.ceil)(x0 / dx) * dx, x1, dx).filter(function(x) { return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(x % DX) > _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon; }).map(x))\n .concat((0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.ceil)(y0 / dy) * dy, y1, dy).filter(function(y) { return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(y % DY) > _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon], [180, 90 - _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon]])\n .extentMinor([[-180, -80 - _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon], [180, 80 + _math_js__WEBPACK_IMPORTED_MODULE_1__.epsilon]]);\n}\n\nfunction graticule10() {\n return graticule()();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvZ3JhdGljdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDYzs7QUFFN0M7QUFDQSxVQUFVLG9EQUFLLFVBQVUsNkNBQU87QUFDaEMsdUJBQXVCLDJCQUEyQixnQkFBZ0I7QUFDbEU7O0FBRUE7QUFDQSxVQUFVLG9EQUFLLFVBQVUsNkNBQU87QUFDaEMsdUJBQXVCLDJCQUEyQixnQkFBZ0I7QUFDbEU7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0EsV0FBVyxvREFBSyxDQUFDLDhDQUFJO0FBQ3JCLGdCQUFnQixvREFBSyxDQUFDLDhDQUFJO0FBQzFCLGdCQUFnQixvREFBSyxDQUFDLDhDQUFJLDZDQUE2QyxPQUFPLDZDQUFHLFdBQVcsNkNBQU8sR0FBRztBQUN0RyxnQkFBZ0Isb0RBQUssQ0FBQyw4Q0FBSSw2Q0FBNkMsT0FBTyw2Q0FBRyxXQUFXLDZDQUFPLEdBQUc7QUFDdEc7O0FBRUE7QUFDQSwrQ0FBK0MsUUFBUSxnREFBZ0Q7QUFDdkc7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQyw2Q0FBTyxjQUFjLDZDQUFPO0FBQzdELGlDQUFpQyw2Q0FBTyxjQUFjLDZDQUFPO0FBQzdEOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9ncmF0aWN1bGUuanM/ZTI2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JhbmdlfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YWJzLCBjZWlsLCBlcHNpbG9ufSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdyYXRpY3VsZVgoeTAsIHkxLCBkeSkge1xuICB2YXIgeSA9IHJhbmdlKHkwLCB5MSAtIGVwc2lsb24sIGR5KS5jb25jYXQoeTEpO1xuICByZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4geS5tYXAoZnVuY3Rpb24oeSkgeyByZXR1cm4gW3gsIHldOyB9KTsgfTtcbn1cblxuZnVuY3Rpb24gZ3JhdGljdWxlWSh4MCwgeDEsIGR4KSB7XG4gIHZhciB4ID0gcmFuZ2UoeDAsIHgxIC0gZXBzaWxvbiwgZHgpLmNvbmNhdCh4MSk7XG4gIHJldHVybiBmdW5jdGlvbih5KSB7IHJldHVybiB4Lm1hcChmdW5jdGlvbih4KSB7IHJldHVybiBbeCwgeV07IH0pOyB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBncmF0aWN1bGUoKSB7XG4gIHZhciB4MSwgeDAsIFgxLCBYMCxcbiAgICAgIHkxLCB5MCwgWTEsIFkwLFxuICAgICAgZHggPSAxMCwgZHkgPSBkeCwgRFggPSA5MCwgRFkgPSAzNjAsXG4gICAgICB4LCB5LCBYLCBZLFxuICAgICAgcHJlY2lzaW9uID0gMi41O1xuXG4gIGZ1bmN0aW9uIGdyYXRpY3VsZSgpIHtcbiAgICByZXR1cm4ge3R5cGU6IFwiTXVsdGlMaW5lU3RyaW5nXCIsIGNvb3JkaW5hdGVzOiBsaW5lcygpfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpbmVzKCkge1xuICAgIHJldHVybiByYW5nZShjZWlsKFgwIC8gRFgpICogRFgsIFgxLCBEWCkubWFwKFgpXG4gICAgICAgIC5jb25jYXQocmFuZ2UoY2VpbChZMCAvIERZKSAqIERZLCBZMSwgRFkpLm1hcChZKSlcbiAgICAgICAgLmNvbmNhdChyYW5nZShjZWlsKHgwIC8gZHgpICogZHgsIHgxLCBkeCkuZmlsdGVyKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIGFicyh4ICUgRFgpID4gZXBzaWxvbjsgfSkubWFwKHgpKVxuICAgICAgICAuY29uY2F0KHJhbmdlKGNlaWwoeTAgLyBkeSkgKiBkeSwgeTEsIGR5KS5maWx0ZXIoZnVuY3Rpb24oeSkgeyByZXR1cm4gYWJzKHkgJSBEWSkgPiBlcHNpbG9uOyB9KS5tYXAoeSkpO1xuICB9XG5cbiAgZ3JhdGljdWxlLmxpbmVzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGxpbmVzKCkubWFwKGZ1bmN0aW9uKGNvb3JkaW5hdGVzKSB7IHJldHVybiB7dHlwZTogXCJMaW5lU3RyaW5nXCIsIGNvb3JkaW5hdGVzOiBjb29yZGluYXRlc307IH0pO1xuICB9O1xuXG4gIGdyYXRpY3VsZS5vdXRsaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiUG9seWdvblwiLFxuICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgWChYMCkuY29uY2F0KFxuICAgICAgICBZKFkxKS5zbGljZSgxKSxcbiAgICAgICAgWChYMSkucmV2ZXJzZSgpLnNsaWNlKDEpLFxuICAgICAgICBZKFkwKS5yZXZlcnNlKCkuc2xpY2UoMSkpXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICBncmF0aWN1bGUuZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGdyYXRpY3VsZS5leHRlbnRNaW5vcigpO1xuICAgIHJldHVybiBncmF0aWN1bGUuZXh0ZW50TWFqb3IoXykuZXh0ZW50TWlub3IoXyk7XG4gIH07XG5cbiAgZ3JhdGljdWxlLmV4dGVudE1ham9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtbWDAsIFkwXSwgW1gxLCBZMV1dO1xuICAgIFgwID0gK19bMF1bMF0sIFgxID0gK19bMV1bMF07XG4gICAgWTAgPSArX1swXVsxXSwgWTEgPSArX1sxXVsxXTtcbiAgICBpZiAoWDAgPiBYMSkgXyA9IFgwLCBYMCA9IFgxLCBYMSA9IF87XG4gICAgaWYgKFkwID4gWTEpIF8gPSBZMCwgWTAgPSBZMSwgWTEgPSBfO1xuICAgIHJldHVybiBncmF0aWN1bGUucHJlY2lzaW9uKHByZWNpc2lvbik7XG4gIH07XG5cbiAgZ3JhdGljdWxlLmV4dGVudE1pbm9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICAgIHgwID0gK19bMF1bMF0sIHgxID0gK19bMV1bMF07XG4gICAgeTAgPSArX1swXVsxXSwgeTEgPSArX1sxXVsxXTtcbiAgICBpZiAoeDAgPiB4MSkgXyA9IHgwLCB4MCA9IHgxLCB4MSA9IF87XG4gICAgaWYgKHkwID4geTEpIF8gPSB5MCwgeTAgPSB5MSwgeTEgPSBfO1xuICAgIHJldHVybiBncmF0aWN1bGUucHJlY2lzaW9uKHByZWNpc2lvbik7XG4gIH07XG5cbiAgZ3JhdGljdWxlLnN0ZXAgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZ3JhdGljdWxlLnN0ZXBNaW5vcigpO1xuICAgIHJldHVybiBncmF0aWN1bGUuc3RlcE1ham9yKF8pLnN0ZXBNaW5vcihfKTtcbiAgfTtcblxuICBncmF0aWN1bGUuc3RlcE1ham9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtEWCwgRFldO1xuICAgIERYID0gK19bMF0sIERZID0gK19bMV07XG4gICAgcmV0dXJuIGdyYXRpY3VsZTtcbiAgfTtcblxuICBncmF0aWN1bGUuc3RlcE1pbm9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtkeCwgZHldO1xuICAgIGR4ID0gK19bMF0sIGR5ID0gK19bMV07XG4gICAgcmV0dXJuIGdyYXRpY3VsZTtcbiAgfTtcblxuICBncmF0aWN1bGUucHJlY2lzaW9uID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHByZWNpc2lvbjtcbiAgICBwcmVjaXNpb24gPSArXztcbiAgICB4ID0gZ3JhdGljdWxlWCh5MCwgeTEsIDkwKTtcbiAgICB5ID0gZ3JhdGljdWxlWSh4MCwgeDEsIHByZWNpc2lvbik7XG4gICAgWCA9IGdyYXRpY3VsZVgoWTAsIFkxLCA5MCk7XG4gICAgWSA9IGdyYXRpY3VsZVkoWDAsIFgxLCBwcmVjaXNpb24pO1xuICAgIHJldHVybiBncmF0aWN1bGU7XG4gIH07XG5cbiAgcmV0dXJuIGdyYXRpY3VsZVxuICAgICAgLmV4dGVudE1ham9yKFtbLTE4MCwgLTkwICsgZXBzaWxvbl0sIFsxODAsIDkwIC0gZXBzaWxvbl1dKVxuICAgICAgLmV4dGVudE1pbm9yKFtbLTE4MCwgLTgwIC0gZXBzaWxvbl0sIFsxODAsIDgwICsgZXBzaWxvbl1dKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXRpY3VsZTEwKCkge1xuICByZXR1cm4gZ3JhdGljdWxlKCkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/graticule.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/identity.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/identity.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaWRlbnRpdHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9pZGVudGl0eS5qcz8zNGY4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHggPT4geDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/index.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-geo/src/index.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"geoAlbers\": () => (/* reexport safe */ _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"geoAlbersUsa\": () => (/* reexport safe */ _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"geoArea\": () => (/* reexport safe */ _area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"geoAzimuthalEqualArea\": () => (/* reexport safe */ _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"geoAzimuthalEqualAreaRaw\": () => (/* reexport safe */ _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__.azimuthalEqualAreaRaw),\n/* harmony export */ \"geoAzimuthalEquidistant\": () => (/* reexport safe */ _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"geoAzimuthalEquidistantRaw\": () => (/* reexport safe */ _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__.azimuthalEquidistantRaw),\n/* harmony export */ \"geoBounds\": () => (/* reexport safe */ _bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"geoCentroid\": () => (/* reexport safe */ _centroid_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"geoCircle\": () => (/* reexport safe */ _circle_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"geoClipAntimeridian\": () => (/* reexport safe */ _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"geoClipCircle\": () => (/* reexport safe */ _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"geoClipExtent\": () => (/* reexport safe */ _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"geoClipRectangle\": () => (/* reexport safe */ _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"geoConicConformal\": () => (/* reexport safe */ _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"geoConicConformalRaw\": () => (/* reexport safe */ _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__.conicConformalRaw),\n/* harmony export */ \"geoConicEqualArea\": () => (/* reexport safe */ _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ \"geoConicEqualAreaRaw\": () => (/* reexport safe */ _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__.conicEqualAreaRaw),\n/* harmony export */ \"geoConicEquidistant\": () => (/* reexport safe */ _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]),\n/* harmony export */ \"geoConicEquidistantRaw\": () => (/* reexport safe */ _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__.conicEquidistantRaw),\n/* harmony export */ \"geoContains\": () => (/* reexport safe */ _contains_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"geoDistance\": () => (/* reexport safe */ _distance_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"geoEqualEarth\": () => (/* reexport safe */ _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ \"geoEqualEarthRaw\": () => (/* reexport safe */ _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__.equalEarthRaw),\n/* harmony export */ \"geoEquirectangular\": () => (/* reexport safe */ _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]),\n/* harmony export */ \"geoEquirectangularRaw\": () => (/* reexport safe */ _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__.equirectangularRaw),\n/* harmony export */ \"geoGnomonic\": () => (/* reexport safe */ _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]),\n/* harmony export */ \"geoGnomonicRaw\": () => (/* reexport safe */ _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__.gnomonicRaw),\n/* harmony export */ \"geoGraticule\": () => (/* reexport safe */ _graticule_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"geoGraticule10\": () => (/* reexport safe */ _graticule_js__WEBPACK_IMPORTED_MODULE_10__.graticule10),\n/* harmony export */ \"geoIdentity\": () => (/* reexport safe */ _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]),\n/* harmony export */ \"geoInterpolate\": () => (/* reexport safe */ _interpolate_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"geoLength\": () => (/* reexport safe */ _length_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"geoMercator\": () => (/* reexport safe */ _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ \"geoMercatorRaw\": () => (/* reexport safe */ _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__.mercatorRaw),\n/* harmony export */ \"geoNaturalEarth1\": () => (/* reexport safe */ _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"geoNaturalEarth1Raw\": () => (/* reexport safe */ _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__.naturalEarth1Raw),\n/* harmony export */ \"geoOrthographic\": () => (/* reexport safe */ _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"geoOrthographicRaw\": () => (/* reexport safe */ _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__.orthographicRaw),\n/* harmony export */ \"geoPath\": () => (/* reexport safe */ _path_index_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"geoProjection\": () => (/* reexport safe */ _projection_index_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]),\n/* harmony export */ \"geoProjectionMutator\": () => (/* reexport safe */ _projection_index_js__WEBPACK_IMPORTED_MODULE_25__.projectionMutator),\n/* harmony export */ \"geoRotation\": () => (/* reexport safe */ _rotation_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"geoStereographic\": () => (/* reexport safe */ _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ \"geoStereographicRaw\": () => (/* reexport safe */ _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__.stereographicRaw),\n/* harmony export */ \"geoStream\": () => (/* reexport safe */ _stream_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ \"geoTransform\": () => (/* reexport safe */ _transform_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ \"geoTransverseMercator\": () => (/* reexport safe */ _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ \"geoTransverseMercatorRaw\": () => (/* reexport safe */ _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__.transverseMercatorRaw)\n/* harmony export */ });\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-geo/src/area.js\");\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds.js */ \"../../../node_modules/d3-geo/src/bounds.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./centroid.js */ \"../../../node_modules/d3-geo/src/centroid.js\");\n/* harmony import */ var _circle_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./circle.js */ \"../../../node_modules/d3-geo/src/circle.js\");\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clip/antimeridian.js */ \"../../../node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clip/circle.js */ \"../../../node_modules/d3-geo/src/clip/circle.js\");\n/* harmony import */ var _clip_extent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clip/extent.js */ \"../../../node_modules/d3-geo/src/clip/extent.js\");\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./clip/rectangle.js */ \"../../../node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./contains.js */ \"../../../node_modules/d3-geo/src/contains.js\");\n/* harmony import */ var _distance_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./distance.js */ \"../../../node_modules/d3-geo/src/distance.js\");\n/* harmony import */ var _graticule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./graticule.js */ \"../../../node_modules/d3-geo/src/graticule.js\");\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolate.js */ \"../../../node_modules/d3-geo/src/interpolate.js\");\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./length.js */ \"../../../node_modules/d3-geo/src/length.js\");\n/* harmony import */ var _path_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path/index.js */ \"../../../node_modules/d3-geo/src/path/index.js\");\n/* harmony import */ var _projection_albers_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./projection/albers.js */ \"../../../node_modules/d3-geo/src/projection/albers.js\");\n/* harmony import */ var _projection_albersUsa_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./projection/albersUsa.js */ \"../../../node_modules/d3-geo/src/projection/albersUsa.js\");\n/* harmony import */ var _projection_azimuthalEqualArea_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./projection/azimuthalEqualArea.js */ \"../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js\");\n/* harmony import */ var _projection_azimuthalEquidistant_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./projection/azimuthalEquidistant.js */ \"../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js\");\n/* harmony import */ var _projection_conicConformal_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./projection/conicConformal.js */ \"../../../node_modules/d3-geo/src/projection/conicConformal.js\");\n/* harmony import */ var _projection_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./projection/conicEqualArea.js */ \"../../../node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony import */ var _projection_conicEquidistant_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./projection/conicEquidistant.js */ \"../../../node_modules/d3-geo/src/projection/conicEquidistant.js\");\n/* harmony import */ var _projection_equalEarth_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./projection/equalEarth.js */ \"../../../node_modules/d3-geo/src/projection/equalEarth.js\");\n/* harmony import */ var _projection_equirectangular_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./projection/equirectangular.js */ \"../../../node_modules/d3-geo/src/projection/equirectangular.js\");\n/* harmony import */ var _projection_gnomonic_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./projection/gnomonic.js */ \"../../../node_modules/d3-geo/src/projection/gnomonic.js\");\n/* harmony import */ var _projection_identity_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./projection/identity.js */ \"../../../node_modules/d3-geo/src/projection/identity.js\");\n/* harmony import */ var _projection_index_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./projection/index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _projection_mercator_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./projection/mercator.js */ \"../../../node_modules/d3-geo/src/projection/mercator.js\");\n/* harmony import */ var _projection_naturalEarth1_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./projection/naturalEarth1.js */ \"../../../node_modules/d3-geo/src/projection/naturalEarth1.js\");\n/* harmony import */ var _projection_orthographic_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./projection/orthographic.js */ \"../../../node_modules/d3-geo/src/projection/orthographic.js\");\n/* harmony import */ var _projection_stereographic_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./projection/stereographic.js */ \"../../../node_modules/d3-geo/src/projection/stereographic.js\");\n/* harmony import */ var _projection_transverseMercator_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./projection/transverseMercator.js */ \"../../../node_modules/d3-geo/src/projection/transverseMercator.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rotation.js */ \"../../../node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./transform.js */ \"../../../node_modules/d3-geo/src/transform.js\");\n\n\n\n\n\n\n // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNkM7QUFDSTtBQUNJO0FBQ0o7QUFDcUI7QUFDWjtBQUNBLENBQUM7QUFDSztBQUNYO0FBQ0E7QUFDaUM7QUFDM0I7QUFDVjtBQUNFO0FBQ1M7QUFDTTtBQUNxRTtBQUNRO0FBQ3hCO0FBQ0E7QUFDUTtBQUN4QjtBQUNvQjtBQUM1QjtBQUMvQjtBQUMwQztBQUNYO0FBQ29CO0FBQ0o7QUFDSTtBQUNvQjtBQUNsRjtBQUNKO0FBQ00iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW5kZXguanM/ZGExYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgZ2VvQXJlYX0gZnJvbSBcIi4vYXJlYS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb0JvdW5kc30gZnJvbSBcIi4vYm91bmRzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ2VudHJvaWR9IGZyb20gXCIuL2NlbnRyb2lkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ2lyY2xlfSBmcm9tIFwiLi9jaXJjbGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9DbGlwQW50aW1lcmlkaWFufSBmcm9tIFwiLi9jbGlwL2FudGltZXJpZGlhbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb0NsaXBDaXJjbGV9IGZyb20gXCIuL2NsaXAvY2lyY2xlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ2xpcEV4dGVudH0gZnJvbSBcIi4vY2xpcC9leHRlbnQuanNcIjsgLy8gREVQUkVDQVRFRCEgVXNlIGQzLmdlb0lkZW50aXR5KCkuY2xpcEV4dGVudCjigKYpLlxuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb0NsaXBSZWN0YW5nbGV9IGZyb20gXCIuL2NsaXAvcmVjdGFuZ2xlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ29udGFpbnN9IGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvRGlzdGFuY2V9IGZyb20gXCIuL2Rpc3RhbmNlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvR3JhdGljdWxlLCBncmF0aWN1bGUxMCBhcyBnZW9HcmF0aWN1bGUxMH0gZnJvbSBcIi4vZ3JhdGljdWxlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvSW50ZXJwb2xhdGV9IGZyb20gXCIuL2ludGVycG9sYXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvTGVuZ3RofSBmcm9tIFwiLi9sZW5ndGguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9QYXRofSBmcm9tIFwiLi9wYXRoL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQWxiZXJzfSBmcm9tIFwiLi9wcm9qZWN0aW9uL2FsYmVycy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb0FsYmVyc1VzYX0gZnJvbSBcIi4vcHJvamVjdGlvbi9hbGJlcnNVc2EuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9BemltdXRoYWxFcXVhbEFyZWEsIGF6aW11dGhhbEVxdWFsQXJlYVJhdyBhcyBnZW9BemltdXRoYWxFcXVhbEFyZWFSYXd9IGZyb20gXCIuL3Byb2plY3Rpb24vYXppbXV0aGFsRXF1YWxBcmVhLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQsIGF6aW11dGhhbEVxdWlkaXN0YW50UmF3IGFzIGdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL2F6aW11dGhhbEVxdWlkaXN0YW50LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ29uaWNDb25mb3JtYWwsIGNvbmljQ29uZm9ybWFsUmF3IGFzIGdlb0NvbmljQ29uZm9ybWFsUmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL2NvbmljQ29uZm9ybWFsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ29uaWNFcXVhbEFyZWEsIGNvbmljRXF1YWxBcmVhUmF3IGFzIGdlb0NvbmljRXF1YWxBcmVhUmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL2NvbmljRXF1YWxBcmVhLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvQ29uaWNFcXVpZGlzdGFudCwgY29uaWNFcXVpZGlzdGFudFJhdyBhcyBnZW9Db25pY0VxdWlkaXN0YW50UmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL2NvbmljRXF1aWRpc3RhbnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9FcXVhbEVhcnRoLCBlcXVhbEVhcnRoUmF3IGFzIGdlb0VxdWFsRWFydGhSYXd9IGZyb20gXCIuL3Byb2plY3Rpb24vZXF1YWxFYXJ0aC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb0VxdWlyZWN0YW5ndWxhciwgZXF1aXJlY3Rhbmd1bGFyUmF3IGFzIGdlb0VxdWlyZWN0YW5ndWxhclJhd30gZnJvbSBcIi4vcHJvamVjdGlvbi9lcXVpcmVjdGFuZ3VsYXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9Hbm9tb25pYywgZ25vbW9uaWNSYXcgYXMgZ2VvR25vbW9uaWNSYXd9IGZyb20gXCIuL3Byb2plY3Rpb24vZ25vbW9uaWMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9JZGVudGl0eX0gZnJvbSBcIi4vcHJvamVjdGlvbi9pZGVudGl0eS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGdlb1Byb2plY3Rpb24sIHByb2plY3Rpb25NdXRhdG9yIGFzIGdlb1Byb2plY3Rpb25NdXRhdG9yfSBmcm9tIFwiLi9wcm9qZWN0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvTWVyY2F0b3IsIG1lcmNhdG9yUmF3IGFzIGdlb01lcmNhdG9yUmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL21lcmNhdG9yLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvTmF0dXJhbEVhcnRoMSwgbmF0dXJhbEVhcnRoMVJhdyBhcyBnZW9OYXR1cmFsRWFydGgxUmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL25hdHVyYWxFYXJ0aDEuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9PcnRob2dyYXBoaWMsIG9ydGhvZ3JhcGhpY1JhdyBhcyBnZW9PcnRob2dyYXBoaWNSYXd9IGZyb20gXCIuL3Byb2plY3Rpb24vb3J0aG9ncmFwaGljLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvU3RlcmVvZ3JhcGhpYywgc3RlcmVvZ3JhcGhpY1JhdyBhcyBnZW9TdGVyZW9ncmFwaGljUmF3fSBmcm9tIFwiLi9wcm9qZWN0aW9uL3N0ZXJlb2dyYXBoaWMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9UcmFuc3ZlcnNlTWVyY2F0b3IsIHRyYW5zdmVyc2VNZXJjYXRvclJhdyBhcyBnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXd9IGZyb20gXCIuL3Byb2plY3Rpb24vdHJhbnN2ZXJzZU1lcmNhdG9yLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvUm90YXRpb259IGZyb20gXCIuL3JvdGF0aW9uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZ2VvU3RyZWFtfSBmcm9tIFwiLi9zdHJlYW0uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBnZW9UcmFuc2Zvcm19IGZyb20gXCIuL3RyYW5zZm9ybS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/interpolate.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/interpolate.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var x0 = a[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n y0 = a[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n x1 = b[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n y1 = b[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians,\n cy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y0),\n sy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y0),\n cy1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y1),\n sy1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y1),\n kx0 = cy0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x0),\n ky0 = cy0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x0),\n kx1 = cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x1),\n ky1 = cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x1),\n d = 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.haversin)(y1 - y0) + cy0 * cy1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.haversin)(x1 - x0))),\n k = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(d);\n\n var interpolate = d ? function(t) {\n var B = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(t *= d) / k,\n A = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(y, x) * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees,\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(z, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(x * x + y * y)) * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees\n ];\n } : function() {\n return [x0 * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, y0 * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW50ZXJwb2xhdGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0Y7O0FBRWxGLDZCQUFlLG9DQUFTO0FBQ3hCLGtCQUFrQiw2Q0FBTztBQUN6QixrQkFBa0IsNkNBQU87QUFDekIsa0JBQWtCLDZDQUFPO0FBQ3pCLGtCQUFrQiw2Q0FBTztBQUN6QixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2Ysa0JBQWtCLDZDQUFHO0FBQ3JCLGtCQUFrQiw2Q0FBRztBQUNyQixrQkFBa0IsNkNBQUc7QUFDckIsa0JBQWtCLDZDQUFHO0FBQ3JCLGNBQWMsOENBQUksQ0FBQyw4Q0FBSSxDQUFDLGtEQUFRLHdCQUF3QixrREFBUTtBQUNoRSxVQUFVLDZDQUFHOztBQUViO0FBQ0EsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sK0NBQUssU0FBUyw2Q0FBTztBQUMzQixNQUFNLCtDQUFLLElBQUksOENBQUksbUJBQW1CLDZDQUFPO0FBQzdDO0FBQ0EsSUFBSTtBQUNKLGlCQUFpQiw2Q0FBTyxPQUFPLDZDQUFPO0FBQ3RDOztBQUVBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvaW50ZXJwb2xhdGUuanM/NGRkZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzaW4sIGF0YW4yLCBjb3MsIGRlZ3JlZXMsIGhhdmVyc2luLCByYWRpYW5zLCBzaW4sIHNxcnR9IGZyb20gXCIuL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgeDAgPSBhWzBdICogcmFkaWFucyxcbiAgICAgIHkwID0gYVsxXSAqIHJhZGlhbnMsXG4gICAgICB4MSA9IGJbMF0gKiByYWRpYW5zLFxuICAgICAgeTEgPSBiWzFdICogcmFkaWFucyxcbiAgICAgIGN5MCA9IGNvcyh5MCksXG4gICAgICBzeTAgPSBzaW4oeTApLFxuICAgICAgY3kxID0gY29zKHkxKSxcbiAgICAgIHN5MSA9IHNpbih5MSksXG4gICAgICBreDAgPSBjeTAgKiBjb3MoeDApLFxuICAgICAga3kwID0gY3kwICogc2luKHgwKSxcbiAgICAgIGt4MSA9IGN5MSAqIGNvcyh4MSksXG4gICAgICBreTEgPSBjeTEgKiBzaW4oeDEpLFxuICAgICAgZCA9IDIgKiBhc2luKHNxcnQoaGF2ZXJzaW4oeTEgLSB5MCkgKyBjeTAgKiBjeTEgKiBoYXZlcnNpbih4MSAtIHgwKSkpLFxuICAgICAgayA9IHNpbihkKTtcblxuICB2YXIgaW50ZXJwb2xhdGUgPSBkID8gZnVuY3Rpb24odCkge1xuICAgIHZhciBCID0gc2luKHQgKj0gZCkgLyBrLFxuICAgICAgICBBID0gc2luKGQgLSB0KSAvIGssXG4gICAgICAgIHggPSBBICoga3gwICsgQiAqIGt4MSxcbiAgICAgICAgeSA9IEEgKiBreTAgKyBCICoga3kxLFxuICAgICAgICB6ID0gQSAqIHN5MCArIEIgKiBzeTE7XG4gICAgcmV0dXJuIFtcbiAgICAgIGF0YW4yKHksIHgpICogZGVncmVlcyxcbiAgICAgIGF0YW4yKHosIHNxcnQoeCAqIHggKyB5ICogeSkpICogZGVncmVlc1xuICAgIF07XG4gIH0gOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gW3gwICogZGVncmVlcywgeTAgKiBkZWdyZWVzXTtcbiAgfTtcblxuICBpbnRlcnBvbGF0ZS5kaXN0YW5jZSA9IGQ7XG5cbiAgcmV0dXJuIGludGVycG9sYXRlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/interpolate.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/length.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-geo/src/length.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n\n\n\n\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n point: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineStart: lengthLineStart,\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n lambda0 = lambda, sinPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi), cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi *= _math_js__WEBPACK_IMPORTED_MODULE_1__.radians;\n var sinPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(phi),\n cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(phi),\n delta = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.abs)(lambda - lambda0),\n cosDelta = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(delta),\n sinDelta = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.atan2)((0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sqrt)(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object) {\n lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_2__.Adder();\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, lengthStream);\n return +lengthSum;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbGVuZ3RoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQStCO0FBQytCO0FBQ2pDO0FBQ0k7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxnREFBSTtBQUNkLFNBQVMsZ0RBQUk7QUFDYjtBQUNBLFdBQVcsZ0RBQUk7QUFDZixnQkFBZ0IsZ0RBQUk7QUFDcEIsY0FBYyxnREFBSTtBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhDQUE4QyxnREFBSTtBQUNsRDs7QUFFQTtBQUNBLFlBQVksNkNBQU8sU0FBUyw2Q0FBTztBQUNuQyw4QkFBOEIsNkNBQUcsaUJBQWlCLDZDQUFHO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLDZDQUFPLFNBQVMsNkNBQU87QUFDbkMsZUFBZSw2Q0FBRztBQUNsQixlQUFlLDZDQUFHO0FBQ2xCLGNBQWMsNkNBQUc7QUFDakIsaUJBQWlCLDZDQUFHO0FBQ3BCLGlCQUFpQiw2Q0FBRztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsK0NBQUssQ0FBQyw4Q0FBSTtBQUMxQjtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCLGtCQUFrQiwyQ0FBSztBQUN2QixFQUFFLHNEQUFNO0FBQ1I7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9sZW5ndGguanM/NGM1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YWJzLCBhdGFuMiwgY29zLCByYWRpYW5zLCBzaW4sIHNxcnR9IGZyb20gXCIuL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuL25vb3AuanNcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4vc3RyZWFtLmpzXCI7XG5cbnZhciBsZW5ndGhTdW0sXG4gICAgbGFtYmRhMCxcbiAgICBzaW5QaGkwLFxuICAgIGNvc1BoaTA7XG5cbnZhciBsZW5ndGhTdHJlYW0gPSB7XG4gIHNwaGVyZTogbm9vcCxcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogbGVuZ3RoTGluZVN0YXJ0LFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IG5vb3AsXG4gIHBvbHlnb25FbmQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVTdGFydCgpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgbGVuZ3RoU3RyZWFtLmxpbmVFbmQgPSBsZW5ndGhMaW5lRW5kO1xufVxuXG5mdW5jdGlvbiBsZW5ndGhMaW5lRW5kKCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IG5vb3A7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aFBvaW50Rmlyc3QobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBsYW1iZGEwID0gbGFtYmRhLCBzaW5QaGkwID0gc2luKHBoaSksIGNvc1BoaTAgPSBjb3MocGhpKTtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aFBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgdmFyIHNpblBoaSA9IHNpbihwaGkpLFxuICAgICAgY29zUGhpID0gY29zKHBoaSksXG4gICAgICBkZWx0YSA9IGFicyhsYW1iZGEgLSBsYW1iZGEwKSxcbiAgICAgIGNvc0RlbHRhID0gY29zKGRlbHRhKSxcbiAgICAgIHNpbkRlbHRhID0gc2luKGRlbHRhKSxcbiAgICAgIHggPSBjb3NQaGkgKiBzaW5EZWx0YSxcbiAgICAgIHkgPSBjb3NQaGkwICogc2luUGhpIC0gc2luUGhpMCAqIGNvc1BoaSAqIGNvc0RlbHRhLFxuICAgICAgeiA9IHNpblBoaTAgKiBzaW5QaGkgKyBjb3NQaGkwICogY29zUGhpICogY29zRGVsdGE7XG4gIGxlbmd0aFN1bS5hZGQoYXRhbjIoc3FydCh4ICogeCArIHkgKiB5KSwgeikpO1xuICBsYW1iZGEwID0gbGFtYmRhLCBzaW5QaGkwID0gc2luUGhpLCBjb3NQaGkwID0gY29zUGhpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QpIHtcbiAgbGVuZ3RoU3VtID0gbmV3IEFkZGVyKCk7XG4gIHN0cmVhbShvYmplY3QsIGxlbmd0aFN0cmVhbSk7XG4gIHJldHVybiArbGVuZ3RoU3VtO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/length.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/math.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-geo/src/math.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"abs\": () => (/* binding */ abs),\n/* harmony export */ \"acos\": () => (/* binding */ acos),\n/* harmony export */ \"asin\": () => (/* binding */ asin),\n/* harmony export */ \"atan\": () => (/* binding */ atan),\n/* harmony export */ \"atan2\": () => (/* binding */ atan2),\n/* harmony export */ \"ceil\": () => (/* binding */ ceil),\n/* harmony export */ \"cos\": () => (/* binding */ cos),\n/* harmony export */ \"degrees\": () => (/* binding */ degrees),\n/* harmony export */ \"epsilon\": () => (/* binding */ epsilon),\n/* harmony export */ \"epsilon2\": () => (/* binding */ epsilon2),\n/* harmony export */ \"exp\": () => (/* binding */ exp),\n/* harmony export */ \"floor\": () => (/* binding */ floor),\n/* harmony export */ \"halfPi\": () => (/* binding */ halfPi),\n/* harmony export */ \"haversin\": () => (/* binding */ haversin),\n/* harmony export */ \"hypot\": () => (/* binding */ hypot),\n/* harmony export */ \"log\": () => (/* binding */ log),\n/* harmony export */ \"pi\": () => (/* binding */ pi),\n/* harmony export */ \"pow\": () => (/* binding */ pow),\n/* harmony export */ \"quarterPi\": () => (/* binding */ quarterPi),\n/* harmony export */ \"radians\": () => (/* binding */ radians),\n/* harmony export */ \"sign\": () => (/* binding */ sign),\n/* harmony export */ \"sin\": () => (/* binding */ sin),\n/* harmony export */ \"sqrt\": () => (/* binding */ sqrt),\n/* harmony export */ \"tan\": () => (/* binding */ tan),\n/* harmony export */ \"tau\": () => (/* binding */ tau)\n/* harmony export */ });\nvar epsilon = 1e-6;\nvar epsilon2 = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar quarterPi = pi / 4;\nvar tau = pi * 2;\n\nvar degrees = 180 / pi;\nvar radians = pi / 180;\n\nvar abs = Math.abs;\nvar atan = Math.atan;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar ceil = Math.ceil;\nvar exp = Math.exp;\nvar floor = Math.floor;\nvar hypot = Math.hypot;\nvar log = Math.log;\nvar pow = Math.pow;\nvar sin = Math.sin;\nvar sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nvar sqrt = Math.sqrt;\nvar tan = Math.tan;\n\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nfunction haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbWF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBOztBQUVBO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL21hdGguanM/Y2FkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIGVwc2lsb24gPSAxZS02O1xuZXhwb3J0IHZhciBlcHNpbG9uMiA9IDFlLTEyO1xuZXhwb3J0IHZhciBwaSA9IE1hdGguUEk7XG5leHBvcnQgdmFyIGhhbGZQaSA9IHBpIC8gMjtcbmV4cG9ydCB2YXIgcXVhcnRlclBpID0gcGkgLyA0O1xuZXhwb3J0IHZhciB0YXUgPSBwaSAqIDI7XG5cbmV4cG9ydCB2YXIgZGVncmVlcyA9IDE4MCAvIHBpO1xuZXhwb3J0IHZhciByYWRpYW5zID0gcGkgLyAxODA7XG5cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnM7XG5leHBvcnQgdmFyIGF0YW4gPSBNYXRoLmF0YW47XG5leHBvcnQgdmFyIGF0YW4yID0gTWF0aC5hdGFuMjtcbmV4cG9ydCB2YXIgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgdmFyIGNlaWwgPSBNYXRoLmNlaWw7XG5leHBvcnQgdmFyIGV4cCA9IE1hdGguZXhwO1xuZXhwb3J0IHZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5leHBvcnQgdmFyIGh5cG90ID0gTWF0aC5oeXBvdDtcbmV4cG9ydCB2YXIgbG9nID0gTWF0aC5sb2c7XG5leHBvcnQgdmFyIHBvdyA9IE1hdGgucG93O1xuZXhwb3J0IHZhciBzaW4gPSBNYXRoLnNpbjtcbmV4cG9ydCB2YXIgc2lnbiA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfTtcbmV4cG9ydCB2YXIgc3FydCA9IE1hdGguc3FydDtcbmV4cG9ydCB2YXIgdGFuID0gTWF0aC50YW47XG5cbmV4cG9ydCBmdW5jdGlvbiBhY29zKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gMCA6IHggPCAtMSA/IHBpIDogTWF0aC5hY29zKHgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNpbih4KSB7XG4gIHJldHVybiB4ID4gMSA/IGhhbGZQaSA6IHggPCAtMSA/IC1oYWxmUGkgOiBNYXRoLmFzaW4oeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXZlcnNpbih4KSB7XG4gIHJldHVybiAoeCA9IHNpbih4IC8gMikpICogeDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/math.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/noop.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-geo/src/noop.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ noop)\n/* harmony export */ });\nfunction noop() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbm9vcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbm9vcC5qcz8zMmY5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vb3AoKSB7fVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/noop.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/area.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/area.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder(),\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n areaSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__.abs)(areaRingSum));\n areaRingSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (areaStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9hcmVhLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDQTtBQUNEOztBQUU5QixrQkFBa0IsMkNBQUs7QUFDdkIsc0JBQXNCLDJDQUFLO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxnREFBSTtBQUNiLGFBQWEsZ0RBQUk7QUFDakIsV0FBVyxnREFBSTtBQUNmO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLG1FQUFtRSxnREFBSTtBQUN2RSxnQkFBZ0IsNkNBQUc7QUFDbkIsc0JBQXNCLDJDQUFLO0FBQzNCLEdBQUc7QUFDSDtBQUNBO0FBQ0Esa0JBQWtCLDJDQUFLO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2FyZWEuanM/ZTM1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FkZGVyfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7YWJzfSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxudmFyIGFyZWFTdW0gPSBuZXcgQWRkZXIoKSxcbiAgICBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpLFxuICAgIHgwMCxcbiAgICB5MDAsXG4gICAgeDAsXG4gICAgeTA7XG5cbnZhciBhcmVhU3RyZWFtID0ge1xuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFTdHJlYW0ubGluZVN0YXJ0ID0gYXJlYVJpbmdTdGFydDtcbiAgICBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhUmluZ0VuZDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhU3RyZWFtLnBvaW50ID0gbm9vcDtcbiAgICBhcmVhU3VtLmFkZChhYnMoYXJlYVJpbmdTdW0pKTtcbiAgICBhcmVhUmluZ1N1bSA9IG5ldyBBZGRlcigpO1xuICB9LFxuICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmVhID0gYXJlYVN1bSAvIDI7XG4gICAgYXJlYVN1bSA9IG5ldyBBZGRlcigpO1xuICAgIHJldHVybiBhcmVhO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhcmVhUmluZ1N0YXJ0KCkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50Rmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludEZpcnN0KHgsIHkpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludDtcbiAgeDAwID0geDAgPSB4LCB5MDAgPSB5MCA9IHk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludCh4LCB5KSB7XG4gIGFyZWFSaW5nU3VtLmFkZCh5MCAqIHggLSB4MCAqIHkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVJpbmdFbmQoKSB7XG4gIGFyZWFQb2ludCh4MDAsIHkwMCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFyZWFTdHJlYW07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/area.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/bounds.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/bounds.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n polygonEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (boundsStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9ib3VuZHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLGdEQUFJO0FBQ2pCLFdBQVcsZ0RBQUk7QUFDZixnQkFBZ0IsZ0RBQUk7QUFDcEIsY0FBYyxnREFBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2JvdW5kcy5qcz8wMGJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbnZhciB4MCA9IEluZmluaXR5LFxuICAgIHkwID0geDAsXG4gICAgeDEgPSAteDAsXG4gICAgeTEgPSB4MTtcblxudmFyIGJvdW5kc1N0cmVhbSA9IHtcbiAgcG9pbnQ6IGJvdW5kc1BvaW50LFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogbm9vcCxcbiAgcG9seWdvbkVuZDogbm9vcCxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYm91bmRzID0gW1t4MCwgeTBdLCBbeDEsIHkxXV07XG4gICAgeDEgPSB5MSA9IC0oeTAgPSB4MCA9IEluZmluaXR5KTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG59O1xuXG5mdW5jdGlvbiBib3VuZHNQb2ludCh4LCB5KSB7XG4gIGlmICh4IDwgeDApIHgwID0geDtcbiAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICBpZiAoeSA8IHkwKSB5MCA9IHk7XG4gIGlmICh5ID4geTEpIHkxID0geTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYm91bmRzU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/bounds.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/centroid.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/centroid.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (centroidStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jZW50cm9pZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyw4Q0FBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOENBQUk7O0FBRWQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxjQUFjLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jZW50cm9pZC5qcz8wODk4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuLy8gVE9ETyBFbmZvcmNlIHBvc2l0aXZlIGFyZWEgZm9yIGV4dGVyaW9yLCBuZWdhdGl2ZSBhcmVhIGZvciBpbnRlcmlvcj9cblxudmFyIFgwID0gMCxcbiAgICBZMCA9IDAsXG4gICAgWjAgPSAwLFxuICAgIFgxID0gMCxcbiAgICBZMSA9IDAsXG4gICAgWjEgPSAwLFxuICAgIFgyID0gMCxcbiAgICBZMiA9IDAsXG4gICAgWjIgPSAwLFxuICAgIHgwMCxcbiAgICB5MDAsXG4gICAgeDAsXG4gICAgeTA7XG5cbnZhciBjZW50cm9pZFN0cmVhbSA9IHtcbiAgcG9pbnQ6IGNlbnRyb2lkUG9pbnQsXG4gIGxpbmVTdGFydDogY2VudHJvaWRMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGNlbnRyb2lkTGluZUVuZCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZFJpbmdTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnQ7XG4gICAgY2VudHJvaWRTdHJlYW0ubGluZVN0YXJ0ID0gY2VudHJvaWRMaW5lU3RhcnQ7XG4gICAgY2VudHJvaWRTdHJlYW0ubGluZUVuZCA9IGNlbnRyb2lkTGluZUVuZDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgY2VudHJvaWQgPSBaMiA/IFtYMiAvIFoyLCBZMiAvIFoyXVxuICAgICAgICA6IFoxID8gW1gxIC8gWjEsIFkxIC8gWjFdXG4gICAgICAgIDogWjAgPyBbWDAgLyBaMCwgWTAgLyBaMF1cbiAgICAgICAgOiBbTmFOLCBOYU5dO1xuICAgIFgwID0gWTAgPSBaMCA9XG4gICAgWDEgPSBZMSA9IFoxID1cbiAgICBYMiA9IFkyID0gWjIgPSAwO1xuICAgIHJldHVybiBjZW50cm9pZDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludCh4LCB5KSB7XG4gIFgwICs9IHg7XG4gIFkwICs9IHk7XG4gICsrWjA7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkTGluZVN0YXJ0KCkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRGaXJzdExpbmU7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnRGaXJzdExpbmUoeCwgeSkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRMaW5lO1xuICBjZW50cm9pZFBvaW50KHgwID0geCwgeTAgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludExpbmUoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAsIGR5ID0geSAtIHkwLCB6ID0gc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gIFgxICs9IHogKiAoeDAgKyB4KSAvIDI7XG4gIFkxICs9IHogKiAoeTAgKyB5KSAvIDI7XG4gIFoxICs9IHo7XG4gIGNlbnRyb2lkUG9pbnQoeDAgPSB4LCB5MCA9IHkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZExpbmVFbmQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nU3RhcnQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludEZpcnN0UmluZztcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nRW5kKCkge1xuICBjZW50cm9pZFBvaW50UmluZyh4MDAsIHkwMCk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnRGaXJzdFJpbmcoeCwgeSkge1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnRSaW5nO1xuICBjZW50cm9pZFBvaW50KHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludFJpbmcoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAsXG4gICAgICBkeSA9IHkgLSB5MCxcbiAgICAgIHogPSBzcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcblxuICBYMSArPSB6ICogKHgwICsgeCkgLyAyO1xuICBZMSArPSB6ICogKHkwICsgeSkgLyAyO1xuICBaMSArPSB6O1xuXG4gIHogPSB5MCAqIHggLSB4MCAqIHk7XG4gIFgyICs9IHogKiAoeDAgKyB4KTtcbiAgWTIgKz0geiAqICh5MCArIHkpO1xuICBaMiArPSB6ICogMztcbiAgY2VudHJvaWRQb2ludCh4MCA9IHgsIHkwID0geSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNlbnRyb2lkU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/centroid.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/context.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/context.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PathContext)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n\n\n\nfunction PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__.tau);\n break;\n }\n }\n },\n result: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9jb250ZXh0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjtBQUNEOztBQUVmO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQseUNBQUc7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFVBQVUsZ0RBQUk7QUFDZCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2NvbnRleHQuanM/MjYxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhdGhDb250ZXh0KGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cblBhdGhDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgX3JhZGl1czogNC41LFxuICBwb2ludFJhZGl1czogZnVuY3Rpb24oXykge1xuICAgIHJldHVybiB0aGlzLl9yYWRpdXMgPSBfLCB0aGlzO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgPT09IDApIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fcG9pbnQgPSBOYU47XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oeCArIHRoaXMuX3JhZGl1cywgeSk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQuYXJjKHgsIHksIHRoaXMuX3JhZGl1cywgMCwgdGF1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZXN1bHQ6IG5vb3Bcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/context.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../identity.js */ \"../../../node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-geo/src/path/area.js\");\n/* harmony import */ var _bounds_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds.js */ \"../../../node_modules/d3-geo/src/path/bounds.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./centroid.js */ \"../../../node_modules/d3-geo/src/path/centroid.js\");\n/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./context.js */ \"../../../node_modules/d3-geo/src/path/context.js\");\n/* harmony import */ var _measure_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./measure.js */ \"../../../node_modules/d3-geo/src/path/measure.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./string.js */ \"../../../node_modules/d3-geo/src/path/string.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projectionStream(_area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n return _area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].result();\n };\n\n path.measure = function(object) {\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projectionStream(_measure_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n return _measure_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].result();\n };\n\n path.bounds = function(object) {\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projectionStream(_bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]));\n return _bounds_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].result();\n };\n\n path.centroid = function(object) {\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projectionStream(_centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]));\n return _centroid_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, _identity_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](digits)) : new _context_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"](context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new _string_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"](digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBc0M7QUFDSjtBQUNEO0FBQ0k7QUFDSTtBQUNGO0FBQ0E7QUFDRjs7QUFFckMsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzREFBTTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksc0RBQU0sMEJBQTBCLGdEQUFRO0FBQzVDLFdBQVcsdURBQWU7QUFDMUI7O0FBRUE7QUFDQSxJQUFJLHNEQUFNLDBCQUEwQixtREFBVztBQUMvQyxXQUFXLDBEQUFrQjtBQUM3Qjs7QUFFQTtBQUNBLElBQUksc0RBQU0sMEJBQTBCLGtEQUFVO0FBQzlDLFdBQVcseURBQWlCO0FBQzVCOztBQUVBO0FBQ0EsSUFBSSxzREFBTSwwQkFBMEIsb0RBQVk7QUFDaEQsV0FBVywyREFBbUI7QUFDOUI7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RCxvREFBUTtBQUMvRDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxREFBcUQsa0RBQVUsZ0JBQWdCLG1EQUFXO0FBQzFGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsRUFBRTtBQUMvRDtBQUNBO0FBQ0EsOENBQThDLGtEQUFVO0FBQ3hEO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wYXRoL2luZGV4LmpzP2Q0MzkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuLi9pZGVudGl0eS5qc1wiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi4vc3RyZWFtLmpzXCI7XG5pbXBvcnQgcGF0aEFyZWEgZnJvbSBcIi4vYXJlYS5qc1wiO1xuaW1wb3J0IHBhdGhCb3VuZHMgZnJvbSBcIi4vYm91bmRzLmpzXCI7XG5pbXBvcnQgcGF0aENlbnRyb2lkIGZyb20gXCIuL2NlbnRyb2lkLmpzXCI7XG5pbXBvcnQgUGF0aENvbnRleHQgZnJvbSBcIi4vY29udGV4dC5qc1wiO1xuaW1wb3J0IHBhdGhNZWFzdXJlIGZyb20gXCIuL21lYXN1cmUuanNcIjtcbmltcG9ydCBQYXRoU3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwcm9qZWN0aW9uLCBjb250ZXh0KSB7XG4gIGxldCBkaWdpdHMgPSAzLFxuICAgICAgcG9pbnRSYWRpdXMgPSA0LjUsXG4gICAgICBwcm9qZWN0aW9uU3RyZWFtLFxuICAgICAgY29udGV4dFN0cmVhbTtcblxuICBmdW5jdGlvbiBwYXRoKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmICh0eXBlb2YgcG9pbnRSYWRpdXMgPT09IFwiZnVuY3Rpb25cIikgY29udGV4dFN0cmVhbS5wb2ludFJhZGl1cygrcG9pbnRSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKGNvbnRleHRTdHJlYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHRTdHJlYW0ucmVzdWx0KCk7XG4gIH1cblxuICBwYXRoLmFyZWEgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKHBhdGhBcmVhKSk7XG4gICAgcmV0dXJuIHBhdGhBcmVhLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGgubWVhc3VyZSA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHN0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0ocGF0aE1lYXN1cmUpKTtcbiAgICByZXR1cm4gcGF0aE1lYXN1cmUucmVzdWx0KCk7XG4gIH07XG5cbiAgcGF0aC5ib3VuZHMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBzdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKHBhdGhCb3VuZHMpKTtcbiAgICByZXR1cm4gcGF0aEJvdW5kcy5yZXN1bHQoKTtcbiAgfTtcblxuICBwYXRoLmNlbnRyb2lkID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgc3RyZWFtKG9iamVjdCwgcHJvamVjdGlvblN0cmVhbShwYXRoQ2VudHJvaWQpKTtcbiAgICByZXR1cm4gcGF0aENlbnRyb2lkLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGgucHJvamVjdGlvbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBwcm9qZWN0aW9uO1xuICAgIHByb2plY3Rpb25TdHJlYW0gPSBfID09IG51bGwgPyAocHJvamVjdGlvbiA9IG51bGwsIGlkZW50aXR5KSA6IChwcm9qZWN0aW9uID0gXykuc3RyZWFtO1xuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIHBhdGguY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjb250ZXh0O1xuICAgIGNvbnRleHRTdHJlYW0gPSBfID09IG51bGwgPyAoY29udGV4dCA9IG51bGwsIG5ldyBQYXRoU3RyaW5nKGRpZ2l0cykpIDogbmV3IFBhdGhDb250ZXh0KGNvbnRleHQgPSBfKTtcbiAgICBpZiAodHlwZW9mIHBvaW50UmFkaXVzICE9PSBcImZ1bmN0aW9uXCIpIGNvbnRleHRTdHJlYW0ucG9pbnRSYWRpdXMocG9pbnRSYWRpdXMpO1xuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIHBhdGgucG9pbnRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gcG9pbnRSYWRpdXM7XG4gICAgcG9pbnRSYWRpdXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IChjb250ZXh0U3RyZWFtLnBvaW50UmFkaXVzKCtfKSwgK18pO1xuICAgIHJldHVybiBwYXRoO1xuICB9O1xuXG4gIHBhdGguZGlnaXRzID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRpZ2l0cztcbiAgICBpZiAoXyA9PSBudWxsKSBkaWdpdHMgPSBudWxsO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZCA9IE1hdGguZmxvb3IoXyk7XG4gICAgICBpZiAoIShkID49IDApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgaW52YWxpZCBkaWdpdHM6ICR7X31gKTtcbiAgICAgIGRpZ2l0cyA9IGQ7XG4gICAgfVxuICAgIGlmIChjb250ZXh0ID09PSBudWxsKSBjb250ZXh0U3RyZWFtID0gbmV3IFBhdGhTdHJpbmcoZGlnaXRzKTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfTtcblxuICByZXR1cm4gcGF0aC5wcm9qZWN0aW9uKHByb2plY3Rpb24pLmRpZ2l0cyhkaWdpdHMpLmNvbnRleHQoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/measure.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/measure.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-geo/src/noop.js\");\n\n\n\n\nvar lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = _noop_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_2__.sqrt)(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lengthStream);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9tZWFzdXJlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDQztBQUNGOztBQUU5QixvQkFBb0IsMkNBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsZ0RBQUk7QUFDYjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx5QkFBeUIsZ0RBQUk7QUFDN0IsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLDJDQUFLO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFJO0FBQ3BCO0FBQ0E7O0FBRUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BhdGgvbWVhc3VyZS5qcz9lZTI3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcblxudmFyIGxlbmd0aFN1bSA9IG5ldyBBZGRlcigpLFxuICAgIGxlbmd0aFJpbmcsXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGxlbmd0aFJpbmcpIGxlbmd0aFBvaW50KHgwMCwgeTAwKTtcbiAgICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBub29wO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFJpbmcgPSB0cnVlO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gbnVsbDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuZ3RoID0gK2xlbmd0aFN1bTtcbiAgICBsZW5ndGhTdW0gPSBuZXcgQWRkZXIoKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG59O1xuXG5mdW5jdGlvbiBsZW5ndGhQb2ludEZpcnN0KHgsIHkpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG4gIHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5O1xufVxuXG5mdW5jdGlvbiBsZW5ndGhQb2ludCh4LCB5KSB7XG4gIHgwIC09IHgsIHkwIC09IHk7XG4gIGxlbmd0aFN1bS5hZGQoc3FydCh4MCAqIHgwICsgeTAgKiB5MCkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGVuZ3RoU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/measure.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/path/string.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/path/string.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PathString)\n/* harmony export */ });\n// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nclass PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9zdHJpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtBQUMvQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDRCQUE0QixFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsVUFBVSxPQUFPLEdBQUcsRUFBRSxHQUFHLEdBQUcsVUFBVSxNQUFNO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxPQUFPO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseURBQXlELE9BQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsT0FBTztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9zdHJpbmcuanM/N2U5NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTaW1wbGUgY2FjaGluZyBmb3IgY29uc3RhbnQtcmFkaXVzIHBvaW50cy5cbmxldCBjYWNoZURpZ2l0cywgY2FjaGVBcHBlbmQsIGNhY2hlUmFkaXVzLCBjYWNoZUNpcmNsZTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aFN0cmluZyB7XG4gIGNvbnN0cnVjdG9yKGRpZ2l0cykge1xuICAgIHRoaXMuX2FwcGVuZCA9IGRpZ2l0cyA9PSBudWxsID8gYXBwZW5kIDogYXBwZW5kUm91bmQoZGlnaXRzKTtcbiAgICB0aGlzLl9yYWRpdXMgPSA0LjU7XG4gICAgdGhpcy5fID0gXCJcIjtcbiAgfVxuICBwb2ludFJhZGl1cyhfKSB7XG4gICAgdGhpcy5fcmFkaXVzID0gK187XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgcG9seWdvblN0YXJ0KCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9XG4gIHBvbHlnb25FbmQoKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfVxuICBsaW5lU3RhcnQoKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9XG4gIGxpbmVFbmQoKSB7XG4gICAgaWYgKHRoaXMuX2xpbmUgPT09IDApIHRoaXMuXyArPSBcIlpcIjtcbiAgICB0aGlzLl9wb2ludCA9IE5hTjtcbiAgfVxuICBwb2ludCh4LCB5KSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHRoaXMuX2FwcGVuZGBNJHt4fSwke3l9YDtcbiAgICAgICAgdGhpcy5fcG9pbnQgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9hcHBlbmRgTCR7eH0sJHt5fWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLl9hcHBlbmRgTSR7eH0sJHt5fWA7XG4gICAgICAgIGlmICh0aGlzLl9yYWRpdXMgIT09IGNhY2hlUmFkaXVzIHx8IHRoaXMuX2FwcGVuZCAhPT0gY2FjaGVBcHBlbmQpIHtcbiAgICAgICAgICBjb25zdCByID0gdGhpcy5fcmFkaXVzO1xuICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl87XG4gICAgICAgICAgdGhpcy5fID0gXCJcIjsgLy8gc3Rhc2ggdGhlIG9sZCBzdHJpbmcgc28gd2UgY2FuIGNhY2hlIHRoZSBjaXJjbGUgcGF0aCBmcmFnbWVudFxuICAgICAgICAgIHRoaXMuX2FwcGVuZGBtMCwke3J9YSR7cn0sJHtyfSAwIDEsMSAwLCR7LTIgKiByfWEke3J9LCR7cn0gMCAxLDEgMCwkezIgKiByfXpgO1xuICAgICAgICAgIGNhY2hlUmFkaXVzID0gcjtcbiAgICAgICAgICBjYWNoZUFwcGVuZCA9IHRoaXMuX2FwcGVuZDtcbiAgICAgICAgICBjYWNoZUNpcmNsZSA9IHRoaXMuXztcbiAgICAgICAgICB0aGlzLl8gPSBzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuXyArPSBjYWNoZUNpcmNsZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJlc3VsdCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl87XG4gICAgdGhpcy5fID0gXCJcIjtcbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA/IHJlc3VsdCA6IG51bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwZW5kKHN0cmluZ3MpIHtcbiAgbGV0IGkgPSAxO1xuICB0aGlzLl8gKz0gc3RyaW5nc1swXTtcbiAgZm9yIChjb25zdCBqID0gc3RyaW5ncy5sZW5ndGg7IGkgPCBqOyArK2kpIHtcbiAgICB0aGlzLl8gKz0gYXJndW1lbnRzW2ldICsgc3RyaW5nc1tpXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRSb3VuZChkaWdpdHMpIHtcbiAgY29uc3QgZCA9IE1hdGguZmxvb3IoZGlnaXRzKTtcbiAgaWYgKCEoZCA+PSAwKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGludmFsaWQgZGlnaXRzOiAke2RpZ2l0c31gKTtcbiAgaWYgKGQgPiAxNSkgcmV0dXJuIGFwcGVuZDtcbiAgaWYgKGQgIT09IGNhY2hlRGlnaXRzKSB7XG4gICAgY29uc3QgayA9IDEwICoqIGQ7XG4gICAgY2FjaGVEaWdpdHMgPSBkO1xuICAgIGNhY2hlQXBwZW5kID0gZnVuY3Rpb24gYXBwZW5kKHN0cmluZ3MpIHtcbiAgICAgIGxldCBpID0gMTtcbiAgICAgIHRoaXMuXyArPSBzdHJpbmdzWzBdO1xuICAgICAgZm9yIChjb25zdCBqID0gc3RyaW5ncy5sZW5ndGg7IGkgPCBqOyArK2kpIHtcbiAgICAgICAgdGhpcy5fICs9IE1hdGgucm91bmQoYXJndW1lbnRzW2ldICogaykgLyBrICsgc3RyaW5nc1tpXTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiBjYWNoZUFwcGVuZDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/path/string.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/pointEqual.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-geo/src/pointEqual.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(a[0] - b[0]) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon && (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(a[1] - b[1]) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9pbnRFcXVhbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1Qzs7QUFFdkMsNkJBQWUsb0NBQVM7QUFDeEIsU0FBUyw2Q0FBRyxnQkFBZ0IsNkNBQU8sSUFBSSw2Q0FBRyxnQkFBZ0IsNkNBQU87QUFDakUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9pbnRFcXVhbC5qcz81MmE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWJzLCBlcHNpbG9ufSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGFicyhhWzBdIC0gYlswXSkgPCBlcHNpbG9uICYmIGFicyhhWzFdIC0gYlsxXSkgPCBlcHNpbG9uO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/pointEqual.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/polygonContains.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/polygonContains.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/fsum.js\");\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cartesian.js */ \"../../../node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\n\nfunction longitude(point) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(point[0]) <= _math_js__WEBPACK_IMPORTED_MODULE_0__.pi ? point[0] : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(point[0]) * (((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(point[0]) + _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) % _math_js__WEBPACK_IMPORTED_MODULE_0__.tau - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi),\n normal = [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(lambda), -(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new d3_array__WEBPACK_IMPORTED_MODULE_1__.Adder();\n\n if (sinPhi === 1) phi = _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n else if (sinPhi === -1) phi = -_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi - _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_0__.quarterPi,\n sinPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi0),\n cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + _math_js__WEBPACK_IMPORTED_MODULE_0__.quarterPi,\n sinPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi1),\n cosPhi1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(k * sign * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(absDelta), cosPhi0 * cosPhi1 + k * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(absDelta)));\n angle += antimeridian ? delta + sign * _math_js__WEBPACK_IMPORTED_MODULE_0__.tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesianCross)((0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesian)(point0), (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesian)(point1));\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesianNormalizeInPlace)(arc);\n var intersection = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesianCross)(normal, arc);\n (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesianNormalizeInPlace)(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -_math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon || angle < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon && sum < -_math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon2) ^ (winding & 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9seWdvbkNvbnRhaW5zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDcUQ7QUFDc0I7O0FBRTFHO0FBQ0EsU0FBUyw2Q0FBRyxjQUFjLHdDQUFFLGNBQWMsOENBQUksZUFBZSw2Q0FBRyxhQUFhLHdDQUFFLElBQUkseUNBQUcsR0FBRyx3Q0FBRTtBQUMzRjs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EsZUFBZSw2Q0FBRztBQUNsQixnQkFBZ0IsNkNBQUcsV0FBVyw2Q0FBRztBQUNqQztBQUNBOztBQUVBLGdCQUFnQiwyQ0FBSzs7QUFFckIsMEJBQTBCLDRDQUFNLEdBQUcsNkNBQU87QUFDMUMsaUNBQWlDLDRDQUFNLEdBQUcsNkNBQU87O0FBRWpELHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsK0NBQVM7QUFDeEMsa0JBQWtCLDZDQUFHO0FBQ3JCLGtCQUFrQiw2Q0FBRzs7QUFFckIsb0JBQW9CLE9BQU87QUFDM0I7QUFDQTtBQUNBLGlDQUFpQywrQ0FBUztBQUMxQyxvQkFBb0IsNkNBQUc7QUFDdkIsb0JBQW9CLDZDQUFHO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx3Q0FBRTtBQUN0Qzs7QUFFQSxjQUFjLCtDQUFLLFlBQVksNkNBQUcsb0NBQW9DLDZDQUFHO0FBQ3pFLDZDQUE2Qyx5Q0FBRzs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDZEQUFjLENBQUMsd0RBQVMsVUFBVSx3REFBUztBQUM3RCxRQUFRLHdFQUF5QjtBQUNqQywyQkFBMkIsNkRBQWM7QUFDekMsUUFBUSx3RUFBeUI7QUFDakMsNERBQTRELDhDQUFJO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsNkNBQU8sWUFBWSw2Q0FBTyxXQUFXLDhDQUFRO0FBQ2hFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3BvbHlnb25Db250YWlucy5qcz8zZGIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWRkZXJ9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtjYXJ0ZXNpYW4sIGNhcnRlc2lhbkNyb3NzLCBjYXJ0ZXNpYW5Ob3JtYWxpemVJblBsYWNlfSBmcm9tIFwiLi9jYXJ0ZXNpYW4uanNcIjtcbmltcG9ydCB7YWJzLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBlcHNpbG9uMiwgaGFsZlBpLCBwaSwgcXVhcnRlclBpLCBzaWduLCBzaW4sIHRhdX0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBsb25naXR1ZGUocG9pbnQpIHtcbiAgcmV0dXJuIGFicyhwb2ludFswXSkgPD0gcGkgPyBwb2ludFswXSA6IHNpZ24ocG9pbnRbMF0pICogKChhYnMocG9pbnRbMF0pICsgcGkpICUgdGF1IC0gcGkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwb2x5Z29uLCBwb2ludCkge1xuICB2YXIgbGFtYmRhID0gbG9uZ2l0dWRlKHBvaW50KSxcbiAgICAgIHBoaSA9IHBvaW50WzFdLFxuICAgICAgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBub3JtYWwgPSBbc2luKGxhbWJkYSksIC1jb3MobGFtYmRhKSwgMF0sXG4gICAgICBhbmdsZSA9IDAsXG4gICAgICB3aW5kaW5nID0gMDtcblxuICB2YXIgc3VtID0gbmV3IEFkZGVyKCk7XG5cbiAgaWYgKHNpblBoaSA9PT0gMSkgcGhpID0gaGFsZlBpICsgZXBzaWxvbjtcbiAgZWxzZSBpZiAoc2luUGhpID09PSAtMSkgcGhpID0gLWhhbGZQaSAtIGVwc2lsb247XG5cbiAgZm9yICh2YXIgaSA9IDAsIG4gPSBwb2x5Z29uLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIGlmICghKG0gPSAocmluZyA9IHBvbHlnb25baV0pLmxlbmd0aCkpIGNvbnRpbnVlO1xuICAgIHZhciByaW5nLFxuICAgICAgICBtLFxuICAgICAgICBwb2ludDAgPSByaW5nW20gLSAxXSxcbiAgICAgICAgbGFtYmRhMCA9IGxvbmdpdHVkZShwb2ludDApLFxuICAgICAgICBwaGkwID0gcG9pbnQwWzFdIC8gMiArIHF1YXJ0ZXJQaSxcbiAgICAgICAgc2luUGhpMCA9IHNpbihwaGkwKSxcbiAgICAgICAgY29zUGhpMCA9IGNvcyhwaGkwKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqLCBsYW1iZGEwID0gbGFtYmRhMSwgc2luUGhpMCA9IHNpblBoaTEsIGNvc1BoaTAgPSBjb3NQaGkxLCBwb2ludDAgPSBwb2ludDEpIHtcbiAgICAgIHZhciBwb2ludDEgPSByaW5nW2pdLFxuICAgICAgICAgIGxhbWJkYTEgPSBsb25naXR1ZGUocG9pbnQxKSxcbiAgICAgICAgICBwaGkxID0gcG9pbnQxWzFdIC8gMiArIHF1YXJ0ZXJQaSxcbiAgICAgICAgICBzaW5QaGkxID0gc2luKHBoaTEpLFxuICAgICAgICAgIGNvc1BoaTEgPSBjb3MocGhpMSksXG4gICAgICAgICAgZGVsdGEgPSBsYW1iZGExIC0gbGFtYmRhMCxcbiAgICAgICAgICBzaWduID0gZGVsdGEgPj0gMCA/IDEgOiAtMSxcbiAgICAgICAgICBhYnNEZWx0YSA9IHNpZ24gKiBkZWx0YSxcbiAgICAgICAgICBhbnRpbWVyaWRpYW4gPSBhYnNEZWx0YSA+IHBpLFxuICAgICAgICAgIGsgPSBzaW5QaGkwICogc2luUGhpMTtcblxuICAgICAgc3VtLmFkZChhdGFuMihrICogc2lnbiAqIHNpbihhYnNEZWx0YSksIGNvc1BoaTAgKiBjb3NQaGkxICsgayAqIGNvcyhhYnNEZWx0YSkpKTtcbiAgICAgIGFuZ2xlICs9IGFudGltZXJpZGlhbiA/IGRlbHRhICsgc2lnbiAqIHRhdSA6IGRlbHRhO1xuXG4gICAgICAvLyBBcmUgdGhlIGxvbmdpdHVkZXMgZWl0aGVyIHNpZGUgb2YgdGhlIHBvaW504oCZcyBtZXJpZGlhbiAobGFtYmRhKSxcbiAgICAgIC8vIGFuZCBhcmUgdGhlIGxhdGl0dWRlcyBzbWFsbGVyIHRoYW4gdGhlIHBhcmFsbGVsIChwaGkpP1xuICAgICAgaWYgKGFudGltZXJpZGlhbiBeIGxhbWJkYTAgPj0gbGFtYmRhIF4gbGFtYmRhMSA+PSBsYW1iZGEpIHtcbiAgICAgICAgdmFyIGFyYyA9IGNhcnRlc2lhbkNyb3NzKGNhcnRlc2lhbihwb2ludDApLCBjYXJ0ZXNpYW4ocG9pbnQxKSk7XG4gICAgICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoYXJjKTtcbiAgICAgICAgdmFyIGludGVyc2VjdGlvbiA9IGNhcnRlc2lhbkNyb3NzKG5vcm1hbCwgYXJjKTtcbiAgICAgICAgY2FydGVzaWFuTm9ybWFsaXplSW5QbGFjZShpbnRlcnNlY3Rpb24pO1xuICAgICAgICB2YXIgcGhpQXJjID0gKGFudGltZXJpZGlhbiBeIGRlbHRhID49IDAgPyAtMSA6IDEpICogYXNpbihpbnRlcnNlY3Rpb25bMl0pO1xuICAgICAgICBpZiAocGhpID4gcGhpQXJjIHx8IHBoaSA9PT0gcGhpQXJjICYmIChhcmNbMF0gfHwgYXJjWzFdKSkge1xuICAgICAgICAgIHdpbmRpbmcgKz0gYW50aW1lcmlkaWFuIF4gZGVsdGEgPj0gMCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0LCBkZXRlcm1pbmUgd2hldGhlciB0aGUgU291dGggcG9sZSBpcyBpbnNpZGUgb3Igb3V0c2lkZTpcbiAgLy9cbiAgLy8gSXQgaXMgaW5zaWRlIGlmOlxuICAvLyAqIHRoZSBwb2x5Z29uIHdpbmRzIGFyb3VuZCBpdCBpbiBhIGNsb2Nrd2lzZSBkaXJlY3Rpb24uXG4gIC8vICogdGhlIHBvbHlnb24gZG9lcyBub3QgKGN1bXVsYXRpdmVseSkgd2luZCBhcm91bmQgaXQsIGJ1dCBoYXMgYSBuZWdhdGl2ZVxuICAvLyAgIChjb3VudGVyLWNsb2Nrd2lzZSkgYXJlYS5cbiAgLy9cbiAgLy8gU2Vjb25kLCBjb3VudCB0aGUgKHNpZ25lZCkgbnVtYmVyIG9mIHRpbWVzIGEgc2VnbWVudCBjcm9zc2VzIGEgbGFtYmRhXG4gIC8vIGZyb20gdGhlIHBvaW50IHRvIHRoZSBTb3V0aCBwb2xlLiAgSWYgaXQgaXMgemVybywgdGhlbiB0aGUgcG9pbnQgaXMgdGhlXG4gIC8vIHNhbWUgc2lkZSBhcyB0aGUgU291dGggcG9sZS5cblxuICByZXR1cm4gKGFuZ2xlIDwgLWVwc2lsb24gfHwgYW5nbGUgPCBlcHNpbG9uICYmIHN1bSA8IC1lcHNpbG9uMikgXiAod2luZGluZyAmIDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/polygonContains.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/albers.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/albers.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./conicEqualArea.js */ \"../../../node_modules/d3-geo/src/projection/conicEqualArea.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hbGJlcnMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUQ7O0FBRWpELDZCQUFlLHNDQUFXO0FBQzFCLFNBQVMsOERBQWM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYWxiZXJzLmpzPzQ4NGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmljRXF1YWxBcmVhIGZyb20gXCIuL2NvbmljRXF1YWxBcmVhLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY29uaWNFcXVhbEFyZWEoKVxuICAgICAgLnBhcmFsbGVscyhbMjkuNSwgNDUuNV0pXG4gICAgICAuc2NhbGUoMTA3MClcbiAgICAgIC50cmFuc2xhdGUoWzQ4MCwgMjUwXSlcbiAgICAgIC5yb3RhdGUoWzk2LCAwXSlcbiAgICAgIC5jZW50ZXIoWy0wLjYsIDM4LjddKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/albers.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/albersUsa.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/albersUsa.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _albers_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./albers.js */ \"../../../node_modules/d3-geo/src/projection/albers.js\");\n/* harmony import */ var _conicEqualArea_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./conicEqualArea.js */ \"../../../node_modules/d3-geo/src/projection/conicEqualArea.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fit.js */ \"../../../node_modules/d3-geo/src/projection/fit.js\");\n\n\n\n\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var cache,\n cacheStream,\n lower48 = (0,_albers_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(), lower48Point,\n alaska = (0,_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = (0,_conicEqualArea_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon, y + 0.120 * k + _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon], [x - 0.214 * k - _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon, y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon, y + 0.166 * k + _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon], [x - 0.115 * k - _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon, y + 0.234 * k - _math_js__WEBPACK_IMPORTED_MODULE_2__.epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_3__.fitExtent)(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_3__.fitSize)(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_3__.fitWidth)(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_3__.fitHeight)(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hbGJlcnNVc2EuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBbUM7QUFDRjtBQUNnQjtBQUNnQjs7QUFFakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixZQUFZLHlDQUF5QztBQUNqRix5QkFBeUIsWUFBWSxzQ0FBc0M7QUFDM0UsNEJBQTRCLFlBQVkseUNBQXlDO0FBQ2pGLDBCQUEwQixZQUFZLHVDQUF1QztBQUM3RSwrQkFBK0IsWUFBWSw0Q0FBNEM7QUFDdkYsNkJBQTZCLFlBQVk7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBLGdCQUFnQixzREFBTTtBQUN0QixlQUFlLDhEQUFjO0FBQzdCLGVBQWUsOERBQWM7QUFDN0IsNEJBQTRCLHdCQUF3Qjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0MsNkNBQU8sa0JBQWtCLDZDQUFPLG9CQUFvQiw2Q0FBTyxrQkFBa0IsNkNBQU87QUFDMUg7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQyw2Q0FBTyxrQkFBa0IsNkNBQU8sb0JBQW9CLDZDQUFPLGtCQUFrQiw2Q0FBTztBQUMxSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjs7QUFFQTtBQUNBLFdBQVcsZ0RBQU87QUFDbEI7O0FBRUE7QUFDQSxXQUFXLGlEQUFRO0FBQ25COztBQUVBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYWxiZXJzVXNhLmpzP2FjOTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtlcHNpbG9ufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IGFsYmVycyBmcm9tIFwiLi9hbGJlcnMuanNcIjtcbmltcG9ydCBjb25pY0VxdWFsQXJlYSBmcm9tIFwiLi9jb25pY0VxdWFsQXJlYS5qc1wiO1xuaW1wb3J0IHtmaXRFeHRlbnQsIGZpdFNpemUsIGZpdFdpZHRoLCBmaXRIZWlnaHR9IGZyb20gXCIuL2ZpdC5qc1wiO1xuXG4vLyBUaGUgcHJvamVjdGlvbnMgbXVzdCBoYXZlIG11dHVhbGx5IGV4Y2x1c2l2ZSBjbGlwIHJlZ2lvbnMgb24gdGhlIHNwaGVyZSxcbi8vIGFzIHRoaXMgd2lsbCBhdm9pZCBlbWl0dGluZyBpbnRlcmxlYXZpbmcgbGluZXMgYW5kIHBvbHlnb25zLlxuZnVuY3Rpb24gbXVsdGlwbGV4KHN0cmVhbXMpIHtcbiAgdmFyIG4gPSBzdHJlYW1zLmxlbmd0aDtcbiAgcmV0dXJuIHtcbiAgICBwb2ludDogZnVuY3Rpb24oeCwgeSkgeyB2YXIgaSA9IC0xOyB3aGlsZSAoKytpIDwgbikgc3RyZWFtc1tpXS5wb2ludCh4LCB5KTsgfSxcbiAgICBzcGhlcmU6IGZ1bmN0aW9uKCkgeyB2YXIgaSA9IC0xOyB3aGlsZSAoKytpIDwgbikgc3RyZWFtc1tpXS5zcGhlcmUoKTsgfSxcbiAgICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkgeyB2YXIgaSA9IC0xOyB3aGlsZSAoKytpIDwgbikgc3RyZWFtc1tpXS5saW5lU3RhcnQoKTsgfSxcbiAgICBsaW5lRW5kOiBmdW5jdGlvbigpIHsgdmFyIGkgPSAtMTsgd2hpbGUgKCsraSA8IG4pIHN0cmVhbXNbaV0ubGluZUVuZCgpOyB9LFxuICAgIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7IHZhciBpID0gLTE7IHdoaWxlICgrK2kgPCBuKSBzdHJlYW1zW2ldLnBvbHlnb25TdGFydCgpOyB9LFxuICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyB2YXIgaSA9IC0xOyB3aGlsZSAoKytpIDwgbikgc3RyZWFtc1tpXS5wb2x5Z29uRW5kKCk7IH1cbiAgfTtcbn1cblxuLy8gQSBjb21wb3NpdGUgcHJvamVjdGlvbiBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMsIGNvbmZpZ3VyZWQgYnkgZGVmYXVsdCBmb3Jcbi8vIDk2MMOXNTAwLiBUaGUgcHJvamVjdGlvbiBhbHNvIHdvcmtzIHF1aXRlIHdlbGwgYXQgOTYww5c2MDAgaWYgeW91IGNoYW5nZSB0aGVcbi8vIHNjYWxlIHRvIDEyODUgYW5kIGFkanVzdCB0aGUgdHJhbnNsYXRlIGFjY29yZGluZ2x5LiBUaGUgc2V0IG9mIHN0YW5kYXJkXG4vLyBwYXJhbGxlbHMgZm9yIGVhY2ggcmVnaW9uIGNvbWVzIGZyb20gVVNHUywgd2hpY2ggaXMgcHVibGlzaGVkIGhlcmU6XG4vLyBodHRwOi8vZWdzYy51c2dzLmdvdi9pc2IvcHVicy9NYXBQcm9qZWN0aW9ucy9wcm9qZWN0aW9ucy5odG1sI2FsYmVyc1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBjYWNoZSxcbiAgICAgIGNhY2hlU3RyZWFtLFxuICAgICAgbG93ZXI0OCA9IGFsYmVycygpLCBsb3dlcjQ4UG9pbnQsXG4gICAgICBhbGFza2EgPSBjb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU0LCAwXSkuY2VudGVyKFstMiwgNTguNV0pLnBhcmFsbGVscyhbNTUsIDY1XSksIGFsYXNrYVBvaW50LCAvLyBFUFNHOjMzMzhcbiAgICAgIGhhd2FpaSA9IGNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTcsIDBdKS5jZW50ZXIoWy0zLCAxOS45XSkucGFyYWxsZWxzKFs4LCAxOF0pLCBoYXdhaWlQb2ludCwgLy8gRVNSSToxMDIwMDdcbiAgICAgIHBvaW50LCBwb2ludFN0cmVhbSA9IHtwb2ludDogZnVuY3Rpb24oeCwgeSkgeyBwb2ludCA9IFt4LCB5XTsgfX07XG5cbiAgZnVuY3Rpb24gYWxiZXJzVXNhKGNvb3JkaW5hdGVzKSB7XG4gICAgdmFyIHggPSBjb29yZGluYXRlc1swXSwgeSA9IGNvb3JkaW5hdGVzWzFdO1xuICAgIHJldHVybiBwb2ludCA9IG51bGwsXG4gICAgICAgIChsb3dlcjQ4UG9pbnQucG9pbnQoeCwgeSksIHBvaW50KVxuICAgICAgICB8fCAoYWxhc2thUG9pbnQucG9pbnQoeCwgeSksIHBvaW50KVxuICAgICAgICB8fCAoaGF3YWlpUG9pbnQucG9pbnQoeCwgeSksIHBvaW50KTtcbiAgfVxuXG4gIGFsYmVyc1VzYS5pbnZlcnQgPSBmdW5jdGlvbihjb29yZGluYXRlcykge1xuICAgIHZhciBrID0gbG93ZXI0OC5zY2FsZSgpLFxuICAgICAgICB0ID0gbG93ZXI0OC50cmFuc2xhdGUoKSxcbiAgICAgICAgeCA9IChjb29yZGluYXRlc1swXSAtIHRbMF0pIC8gayxcbiAgICAgICAgeSA9IChjb29yZGluYXRlc1sxXSAtIHRbMV0pIC8gaztcbiAgICByZXR1cm4gKHkgPj0gMC4xMjAgJiYgeSA8IDAuMjM0ICYmIHggPj0gLTAuNDI1ICYmIHggPCAtMC4yMTQgPyBhbGFza2FcbiAgICAgICAgOiB5ID49IDAuMTY2ICYmIHkgPCAwLjIzNCAmJiB4ID49IC0wLjIxNCAmJiB4IDwgLTAuMTE1ID8gaGF3YWlpXG4gICAgICAgIDogbG93ZXI0OCkuaW52ZXJ0KGNvb3JkaW5hdGVzKTtcbiAgfTtcblxuICBhbGJlcnNVc2Euc3RyZWFtID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgcmV0dXJuIGNhY2hlICYmIGNhY2hlU3RyZWFtID09PSBzdHJlYW0gPyBjYWNoZSA6IGNhY2hlID0gbXVsdGlwbGV4KFtsb3dlcjQ4LnN0cmVhbShjYWNoZVN0cmVhbSA9IHN0cmVhbSksIGFsYXNrYS5zdHJlYW0oc3RyZWFtKSwgaGF3YWlpLnN0cmVhbShzdHJlYW0pXSk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLnByZWNpc2lvbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBsb3dlcjQ4LnByZWNpc2lvbigpO1xuICAgIGxvd2VyNDgucHJlY2lzaW9uKF8pLCBhbGFza2EucHJlY2lzaW9uKF8pLCBoYXdhaWkucHJlY2lzaW9uKF8pO1xuICAgIHJldHVybiByZXNldCgpO1xuICB9O1xuXG4gIGFsYmVyc1VzYS5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBsb3dlcjQ4LnNjYWxlKCk7XG4gICAgbG93ZXI0OC5zY2FsZShfKSwgYWxhc2thLnNjYWxlKF8gKiAwLjM1KSwgaGF3YWlpLnNjYWxlKF8pO1xuICAgIHJldHVybiBhbGJlcnNVc2EudHJhbnNsYXRlKGxvd2VyNDgudHJhbnNsYXRlKCkpO1xuICB9O1xuXG4gIGFsYmVyc1VzYS50cmFuc2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gbG93ZXI0OC50cmFuc2xhdGUoKTtcbiAgICB2YXIgayA9IGxvd2VyNDguc2NhbGUoKSwgeCA9ICtfWzBdLCB5ID0gK19bMV07XG5cbiAgICBsb3dlcjQ4UG9pbnQgPSBsb3dlcjQ4XG4gICAgICAgIC50cmFuc2xhdGUoXylcbiAgICAgICAgLmNsaXBFeHRlbnQoW1t4IC0gMC40NTUgKiBrLCB5IC0gMC4yMzggKiBrXSwgW3ggKyAwLjQ1NSAqIGssIHkgKyAwLjIzOCAqIGtdXSlcbiAgICAgICAgLnN0cmVhbShwb2ludFN0cmVhbSk7XG5cbiAgICBhbGFza2FQb2ludCA9IGFsYXNrYVxuICAgICAgICAudHJhbnNsYXRlKFt4IC0gMC4zMDcgKiBrLCB5ICsgMC4yMDEgKiBrXSlcbiAgICAgICAgLmNsaXBFeHRlbnQoW1t4IC0gMC40MjUgKiBrICsgZXBzaWxvbiwgeSArIDAuMTIwICogayArIGVwc2lsb25dLCBbeCAtIDAuMjE0ICogayAtIGVwc2lsb24sIHkgKyAwLjIzNCAqIGsgLSBlcHNpbG9uXV0pXG4gICAgICAgIC5zdHJlYW0ocG9pbnRTdHJlYW0pO1xuXG4gICAgaGF3YWlpUG9pbnQgPSBoYXdhaWlcbiAgICAgICAgLnRyYW5zbGF0ZShbeCAtIDAuMjA1ICogaywgeSArIDAuMjEyICoga10pXG4gICAgICAgIC5jbGlwRXh0ZW50KFtbeCAtIDAuMjE0ICogayArIGVwc2lsb24sIHkgKyAwLjE2NiAqIGsgKyBlcHNpbG9uXSwgW3ggLSAwLjExNSAqIGsgLSBlcHNpbG9uLCB5ICsgMC4yMzQgKiBrIC0gZXBzaWxvbl1dKVxuICAgICAgICAuc3RyZWFtKHBvaW50U3RyZWFtKTtcblxuICAgIHJldHVybiByZXNldCgpO1xuICB9O1xuXG4gIGFsYmVyc1VzYS5maXRFeHRlbnQgPSBmdW5jdGlvbihleHRlbnQsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRFeHRlbnQoYWxiZXJzVXNhLCBleHRlbnQsIG9iamVjdCk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLmZpdFNpemUgPSBmdW5jdGlvbihzaXplLCBvYmplY3QpIHtcbiAgICByZXR1cm4gZml0U2l6ZShhbGJlcnNVc2EsIHNpemUsIG9iamVjdCk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLmZpdFdpZHRoID0gZnVuY3Rpb24od2lkdGgsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRXaWR0aChhbGJlcnNVc2EsIHdpZHRoLCBvYmplY3QpO1xuICB9O1xuXG4gIGFsYmVyc1VzYS5maXRIZWlnaHQgPSBmdW5jdGlvbihoZWlnaHQsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRIZWlnaHQoYWxiZXJzVXNhLCBoZWlnaHQsIG9iamVjdCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGw7XG4gICAgcmV0dXJuIGFsYmVyc1VzYTtcbiAgfVxuXG4gIHJldHVybiBhbGJlcnNVc2Euc2NhbGUoMTA3MCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/albersUsa.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/azimuthal.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/azimuthal.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"azimuthalInvert\": () => (/* binding */ azimuthalInvert),\n/* harmony export */ \"azimuthalRaw\": () => (/* binding */ azimuthalRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\nfunction azimuthalRaw(scale) {\n return function(x, y) {\n var cx = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x),\n cy = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x),\n k * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y)\n ];\n }\n}\n\nfunction azimuthalInvert(angle) {\n return function(x, y) {\n var z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(x * x + y * y),\n c = angle(z),\n sc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(c),\n cc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(c);\n return [\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(x * sc, z * cc),\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(z && y * sc / z)\n ];\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVEOztBQUVoRDtBQUNQO0FBQ0EsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkNBQUc7QUFDbEIsVUFBVSw2Q0FBRztBQUNiO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsWUFBWSw4Q0FBSTtBQUNoQjtBQUNBLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQjtBQUNBLE1BQU0sK0NBQUs7QUFDWCxNQUFNLDhDQUFJO0FBQ1Y7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsLmpzP2Y0N2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxSYXcoc2NhbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgY3ggPSBjb3MoeCksXG4gICAgICAgIGN5ID0gY29zKHkpLFxuICAgICAgICBrID0gc2NhbGUoY3ggKiBjeSk7XG4gICAgICAgIGlmIChrID09PSBJbmZpbml0eSkgcmV0dXJuIFsyLCAwXTtcbiAgICByZXR1cm4gW1xuICAgICAgayAqIGN5ICogc2luKHgpLFxuICAgICAgayAqIHNpbih5KVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF6aW11dGhhbEludmVydChhbmdsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciB6ID0gc3FydCh4ICogeCArIHkgKiB5KSxcbiAgICAgICAgYyA9IGFuZ2xlKHopLFxuICAgICAgICBzYyA9IHNpbihjKSxcbiAgICAgICAgY2MgPSBjb3MoYyk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGF0YW4yKHggKiBzYywgeiAqIGNjKSxcbiAgICAgIGFzaW4oeiAmJiB5ICogc2MgLyB6KVxuICAgIF07XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/azimuthal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"azimuthalEqualAreaRaw\": () => (/* binding */ azimuthalEqualAreaRaw),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./azimuthal.js */ \"../../../node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEqualAreaRaw = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__.azimuthalRaw)(function(cxcy) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sqrt)(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__.azimuthalInvert)(function(z) {\n return 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.asin)(z / 2);\n});\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVhbEFyZWEuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0M7QUFDdUI7QUFDekI7O0FBRTdCLDRCQUE0QiwyREFBWTtBQUMvQyxTQUFTLDhDQUFJO0FBQ2IsQ0FBQzs7QUFFRCwrQkFBK0IsOERBQWU7QUFDOUMsYUFBYSw4Q0FBSTtBQUNqQixDQUFDOztBQUVELDZCQUFlLHNDQUFXO0FBQzFCLFNBQVMscURBQVU7QUFDbkI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsRXF1YWxBcmVhLmpzPzIyNTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWFsQXJlYVJhdyA9IGF6aW11dGhhbFJhdyhmdW5jdGlvbihjeGN5KSB7XG4gIHJldHVybiBzcXJ0KDIgLyAoMSArIGN4Y3kpKTtcbn0pO1xuXG5hemltdXRoYWxFcXVhbEFyZWFSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGZ1bmN0aW9uKHopIHtcbiAgcmV0dXJuIDIgKiBhc2luKHogLyAyKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1YWxBcmVhUmF3KVxuICAgICAgLnNjYWxlKDEyNC43NSlcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/azimuthalEqualArea.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"azimuthalEquidistantRaw\": () => (/* binding */ azimuthalEquidistantRaw),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./azimuthal.js */ \"../../../node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nvar azimuthalEquidistantRaw = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__.azimuthalRaw)(function(c) {\n return (c = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.acos)(c)) && c / (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(c);\n});\n\nazimuthalEquidistantRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_0__.azimuthalInvert)(function(z) {\n return z;\n});\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFxQztBQUN3QjtBQUN6Qjs7QUFFN0IsOEJBQThCLDJEQUFZO0FBQ2pELGNBQWMsOENBQUksWUFBWSw2Q0FBRztBQUNqQyxDQUFDOztBQUVELGlDQUFpQyw4REFBZTtBQUNoRDtBQUNBLENBQUM7O0FBRUQsNkJBQWUsc0NBQVc7QUFDMUIsU0FBUyxxREFBVTtBQUNuQjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcz80MzA4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YWNvcywgc2lufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWlkaXN0YW50UmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGMpIHtcbiAgcmV0dXJuIChjID0gYWNvcyhjKSkgJiYgYyAvIHNpbihjKTtcbn0pO1xuXG5hemltdXRoYWxFcXVpZGlzdGFudFJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gejtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoNzkuNDE4OClcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/azimuthalEquidistant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/conic.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/conic.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"conicProjection\": () => (/* binding */ conicProjection)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\nfunction conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = _math_js__WEBPACK_IMPORTED_MODULE_0__.pi / 3,\n m = (0,_index_js__WEBPACK_IMPORTED_MODULE_1__.projectionMutator)(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, phi1 = _[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians) : [phi0 * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, phi1 * _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees];\n };\n\n return p;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pYy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0Q7QUFDSDs7QUFFdEM7QUFDUDtBQUNBLGFBQWEsd0NBQUU7QUFDZixVQUFVLDREQUFpQjtBQUMzQjs7QUFFQTtBQUNBLDhDQUE4Qyw2Q0FBTyxnQkFBZ0IsNkNBQU8sWUFBWSw2Q0FBTyxTQUFTLDZDQUFPO0FBQy9HOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pYy5qcz81OGIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGVncmVlcywgcGksIHJhZGlhbnN9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge3Byb2plY3Rpb25NdXRhdG9yfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uaWNQcm9qZWN0aW9uKHByb2plY3RBdCkge1xuICB2YXIgcGhpMCA9IDAsXG4gICAgICBwaGkxID0gcGkgLyAzLFxuICAgICAgbSA9IHByb2plY3Rpb25NdXRhdG9yKHByb2plY3RBdCksXG4gICAgICBwID0gbShwaGkwLCBwaGkxKTtcblxuICBwLnBhcmFsbGVscyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IG0ocGhpMCA9IF9bMF0gKiByYWRpYW5zLCBwaGkxID0gX1sxXSAqIHJhZGlhbnMpIDogW3BoaTAgKiBkZWdyZWVzLCBwaGkxICogZGVncmVlc107XG4gIH07XG5cbiAgcmV0dXJuIHA7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/conic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/conicConformal.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/conicConformal.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"conicConformalRaw\": () => (/* binding */ conicConformalRaw),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conic.js */ \"../../../node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mercator.js */ \"../../../node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\n\nfunction tany(y) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tan)((_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + y) / 2);\n}\n\nfunction conicConformalRaw(y0, y1) {\n var cy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y0),\n n = y0 === y1 ? (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y0) : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.log)(cy0 / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y1)) / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.log)(tany(y1) / tany(y0)),\n f = cy0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.pow)(tany(y0), n) / n;\n\n if (!n) return _mercator_js__WEBPACK_IMPORTED_MODULE_1__.mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) y = -_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon; }\n else { if (y > _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi - _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) y = _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi - _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon; }\n var r = f / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.pow)(tany(y), n);\n return [r * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(n * x), f - r * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(n) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(x * x + fy * fy),\n l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(x, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(fy)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(fy);\n if (fy * n < 0)\n l -= _math_js__WEBPACK_IMPORTED_MODULE_0__.pi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(x) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(fy);\n return [l / n, 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.pow)(f / r, 1 / n)) - _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi];\n };\n\n return project;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_conic_js__WEBPACK_IMPORTED_MODULE_2__.conicProjection)(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0NvbmZvcm1hbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFzRztBQUMzRDtBQUNEOztBQUUxQztBQUNBLFNBQVMsNkNBQUcsRUFBRSw0Q0FBTTtBQUNwQjs7QUFFTztBQUNQLFlBQVksNkNBQUc7QUFDZixzQkFBc0IsNkNBQUcsT0FBTyw2Q0FBRyxPQUFPLDZDQUFHLFFBQVEsNkNBQUc7QUFDeEQsZ0JBQWdCLDZDQUFHOztBQUVuQixpQkFBaUIscURBQVc7O0FBRTVCO0FBQ0EsaUJBQWlCLFNBQVMsNENBQU0sR0FBRyw2Q0FBTyxPQUFPLDRDQUFNLEdBQUcsNkNBQU87QUFDakUsV0FBVyxRQUFRLDRDQUFNLEdBQUcsNkNBQU8sTUFBTSw0Q0FBTSxHQUFHLDZDQUFPO0FBQ3pELGdCQUFnQiw2Q0FBRztBQUNuQixnQkFBZ0IsNkNBQUcsaUJBQWlCLDZDQUFHO0FBQ3ZDOztBQUVBO0FBQ0Esd0JBQXdCLDhDQUFJLE1BQU0sOENBQUk7QUFDdEMsVUFBVSwrQ0FBSyxJQUFJLDZDQUFHLFFBQVEsOENBQUk7QUFDbEM7QUFDQSxXQUFXLHdDQUFFLEdBQUcsOENBQUksTUFBTSw4Q0FBSTtBQUM5Qix1QkFBdUIsOENBQUksQ0FBQyw2Q0FBRyxrQkFBa0IsNENBQU07QUFDdkQ7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQixTQUFTLDBEQUFlO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljQ29uZm9ybWFsLmpzPzEzY2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGF0YW4sIGF0YW4yLCBjb3MsIGVwc2lsb24sIGhhbGZQaSwgbG9nLCBwaSwgcG93LCBzaWduLCBzaW4sIHNxcnQsIHRhbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7Y29uaWNQcm9qZWN0aW9ufSBmcm9tIFwiLi9jb25pYy5qc1wiO1xuaW1wb3J0IHttZXJjYXRvclJhd30gZnJvbSBcIi4vbWVyY2F0b3IuanNcIjtcblxuZnVuY3Rpb24gdGFueSh5KSB7XG4gIHJldHVybiB0YW4oKGhhbGZQaSArIHkpIC8gMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY0NvbmZvcm1hbFJhdyh5MCwgeTEpIHtcbiAgdmFyIGN5MCA9IGNvcyh5MCksXG4gICAgICBuID0geTAgPT09IHkxID8gc2luKHkwKSA6IGxvZyhjeTAgLyBjb3MoeTEpKSAvIGxvZyh0YW55KHkxKSAvIHRhbnkoeTApKSxcbiAgICAgIGYgPSBjeTAgKiBwb3codGFueSh5MCksIG4pIC8gbjtcblxuICBpZiAoIW4pIHJldHVybiBtZXJjYXRvclJhdztcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICBpZiAoZiA+IDApIHsgaWYgKHkgPCAtaGFsZlBpICsgZXBzaWxvbikgeSA9IC1oYWxmUGkgKyBlcHNpbG9uOyB9XG4gICAgZWxzZSB7IGlmICh5ID4gaGFsZlBpIC0gZXBzaWxvbikgeSA9IGhhbGZQaSAtIGVwc2lsb247IH1cbiAgICB2YXIgciA9IGYgLyBwb3codGFueSh5KSwgbik7XG4gICAgcmV0dXJuIFtyICogc2luKG4gKiB4KSwgZiAtIHIgKiBjb3MobiAqIHgpXTtcbiAgfVxuXG4gIHByb2plY3QuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBmeSA9IGYgLSB5LCByID0gc2lnbihuKSAqIHNxcnQoeCAqIHggKyBmeSAqIGZ5KSxcbiAgICAgIGwgPSBhdGFuMih4LCBhYnMoZnkpKSAqIHNpZ24oZnkpO1xuICAgIGlmIChmeSAqIG4gPCAwKVxuICAgICAgbCAtPSBwaSAqIHNpZ24oeCkgKiBzaWduKGZ5KTtcbiAgICByZXR1cm4gW2wgLyBuLCAyICogYXRhbihwb3coZiAvIHIsIDEgLyBuKSkgLSBoYWxmUGldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0NvbmZvcm1hbFJhdylcbiAgICAgIC5zY2FsZSgxMDkuNSlcbiAgICAgIC5wYXJhbGxlbHMoWzMwLCAzMF0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/conicConformal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/conicEqualArea.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/conicEqualArea.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"conicEqualAreaRaw\": () => (/* binding */ conicEqualAreaRaw),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conic.js */ \"../../../node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cylindricalEqualArea.js */ \"../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js\");\n\n\n\n\nfunction conicEqualAreaRaw(y0, y1) {\n var sy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y0), n = (sy0 + (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) return (0,_cylindricalEqualArea_js__WEBPACK_IMPORTED_MODULE_1__.cylindricalEqualAreaRaw)(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(c) / n;\n\n function project(x, y) {\n var r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(c - 2 * n * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y)) / n;\n return [r * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x *= n), r0 - r * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(x, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(r0y)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(r0y);\n if (r0y * n < 0)\n l -= _math_js__WEBPACK_IMPORTED_MODULE_0__.pi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(x) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(r0y);\n return [l / n, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_conic_js__WEBPACK_IMPORTED_MODULE_2__.conicProjection)(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWFsQXJlYS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRTtBQUNwQztBQUN1Qjs7QUFFM0Q7QUFDUCxZQUFZLDZDQUFHLGlCQUFpQiw2Q0FBRzs7QUFFbkM7QUFDQSxNQUFNLDZDQUFHLE1BQU0sNkNBQU8sU0FBUyxpRkFBdUI7O0FBRXRELHdDQUF3Qyw4Q0FBSTs7QUFFNUM7QUFDQSxZQUFZLDhDQUFJLGFBQWEsNkNBQUc7QUFDaEMsZ0JBQWdCLDZDQUFHLG1CQUFtQiw2Q0FBRztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0EsWUFBWSwrQ0FBSyxJQUFJLDZDQUFHLFNBQVMsOENBQUk7QUFDckM7QUFDQSxXQUFXLHdDQUFFLEdBQUcsOENBQUksTUFBTSw4Q0FBSTtBQUM5QixtQkFBbUIsOENBQUk7QUFDdkI7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQixTQUFTLDBEQUFlO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2NvbmljRXF1YWxBcmVhLmpzP2RlNDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGFzaW4sIGF0YW4yLCBjb3MsIGVwc2lsb24sIHBpLCBzaWduLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2NvbmljUHJvamVjdGlvbn0gZnJvbSBcIi4vY29uaWMuanNcIjtcbmltcG9ydCB7Y3lsaW5kcmljYWxFcXVhbEFyZWFSYXd9IGZyb20gXCIuL2N5bGluZHJpY2FsRXF1YWxBcmVhLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25pY0VxdWFsQXJlYVJhdyh5MCwgeTEpIHtcbiAgdmFyIHN5MCA9IHNpbih5MCksIG4gPSAoc3kwICsgc2luKHkxKSkgLyAyO1xuXG4gIC8vIEFyZSB0aGUgcGFyYWxsZWxzIHN5bW1ldHJpY2FsIGFyb3VuZCB0aGUgRXF1YXRvcj9cbiAgaWYgKGFicyhuKSA8IGVwc2lsb24pIHJldHVybiBjeWxpbmRyaWNhbEVxdWFsQXJlYVJhdyh5MCk7XG5cbiAgdmFyIGMgPSAxICsgc3kwICogKDIgKiBuIC0gc3kwKSwgcjAgPSBzcXJ0KGMpIC8gbjtcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICB2YXIgciA9IHNxcnQoYyAtIDIgKiBuICogc2luKHkpKSAvIG47XG4gICAgcmV0dXJuIFtyICogc2luKHggKj0gbiksIHIwIC0gciAqIGNvcyh4KV07XG4gIH1cblxuICBwcm9qZWN0LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgcjB5ID0gcjAgLSB5LFxuICAgICAgICBsID0gYXRhbjIoeCwgYWJzKHIweSkpICogc2lnbihyMHkpO1xuICAgIGlmIChyMHkgKiBuIDwgMClcbiAgICAgIGwgLT0gcGkgKiBzaWduKHgpICogc2lnbihyMHkpO1xuICAgIHJldHVybiBbbCAvIG4sIGFzaW4oKGMgLSAoeCAqIHggKyByMHkgKiByMHkpICogbiAqIG4pIC8gKDIgKiBuKSldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0VxdWFsQXJlYVJhdylcbiAgICAgIC5zY2FsZSgxNTUuNDI0KVxuICAgICAgLmNlbnRlcihbMCwgMzMuNjQ0Ml0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/conicEqualArea.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/conicEquidistant.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/conicEquidistant.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"conicEquidistantRaw\": () => (/* binding */ conicEquidistantRaw),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _conic_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./conic.js */ \"../../../node_modules/d3-geo/src/projection/conic.js\");\n/* harmony import */ var _equirectangular_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equirectangular.js */ \"../../../node_modules/d3-geo/src/projection/equirectangular.js\");\n\n\n\n\nfunction conicEquidistantRaw(y0, y1) {\n var cy0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y0),\n n = y0 === y1 ? (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y0) : (cy0 - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(n) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) return _equirectangular_js__WEBPACK_IMPORTED_MODULE_1__.equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(nx), g - gy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(x, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(gy)) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(gy);\n if (gy * n < 0)\n l -= _math_js__WEBPACK_IMPORTED_MODULE_0__.pi * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(x) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(gy);\n return [l / n, g - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sign)(n) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(x * x + gy * gy)];\n };\n\n return project;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_conic_js__WEBPACK_IMPORTED_MODULE_2__.conicProjection)(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWlkaXN0YW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXlFO0FBQzlCO0FBQ2E7O0FBRWpEO0FBQ1AsWUFBWSw2Q0FBRztBQUNmLHNCQUFzQiw2Q0FBRyxjQUFjLDZDQUFHO0FBQzFDOztBQUVBLE1BQU0sNkNBQUcsTUFBTSw2Q0FBTyxTQUFTLG1FQUFrQjs7QUFFakQ7QUFDQTtBQUNBLGlCQUFpQiw2Q0FBRyxlQUFlLDZDQUFHO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQSxZQUFZLCtDQUFLLElBQUksNkNBQUcsUUFBUSw4Q0FBSTtBQUNwQztBQUNBLFdBQVcsd0NBQUUsR0FBRyw4Q0FBSSxNQUFNLDhDQUFJO0FBQzlCLHVCQUF1Qiw4Q0FBSSxNQUFNLDhDQUFJO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUIsU0FBUywwREFBZTtBQUN4QjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jb25pY0VxdWlkaXN0YW50LmpzP2I1ZDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthYnMsIGF0YW4yLCBjb3MsIGVwc2lsb24sIHBpLCBzaWduLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2NvbmljUHJvamVjdGlvbn0gZnJvbSBcIi4vY29uaWMuanNcIjtcbmltcG9ydCB7ZXF1aXJlY3Rhbmd1bGFyUmF3fSBmcm9tIFwiLi9lcXVpcmVjdGFuZ3VsYXIuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmljRXF1aWRpc3RhbnRSYXcoeTAsIHkxKSB7XG4gIHZhciBjeTAgPSBjb3MoeTApLFxuICAgICAgbiA9IHkwID09PSB5MSA/IHNpbih5MCkgOiAoY3kwIC0gY29zKHkxKSkgLyAoeTEgLSB5MCksXG4gICAgICBnID0gY3kwIC8gbiArIHkwO1xuXG4gIGlmIChhYnMobikgPCBlcHNpbG9uKSByZXR1cm4gZXF1aXJlY3Rhbmd1bGFyUmF3O1xuXG4gIGZ1bmN0aW9uIHByb2plY3QoeCwgeSkge1xuICAgIHZhciBneSA9IGcgLSB5LCBueCA9IG4gKiB4O1xuICAgIHJldHVybiBbZ3kgKiBzaW4obngpLCBnIC0gZ3kgKiBjb3MobngpXTtcbiAgfVxuXG4gIHByb2plY3QuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBneSA9IGcgLSB5LFxuICAgICAgICBsID0gYXRhbjIoeCwgYWJzKGd5KSkgKiBzaWduKGd5KTtcbiAgICBpZiAoZ3kgKiBuIDwgMClcbiAgICAgIGwgLT0gcGkgKiBzaWduKHgpICogc2lnbihneSk7XG4gICAgcmV0dXJuIFtsIC8gbiwgZyAtIHNpZ24obikgKiBzcXJ0KHggKiB4ICsgZ3kgKiBneSldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0VxdWlkaXN0YW50UmF3KVxuICAgICAgLnNjYWxlKDEzMS4xNTQpXG4gICAgICAuY2VudGVyKFswLCAxMy45Mzg5XSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/conicEquidistant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cylindricalEqualAreaRaw\": () => (/* binding */ cylindricalEqualAreaRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\nfunction cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(y * cosPhi0)];\n };\n\n return forward;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jeWxpbmRyaWNhbEVxdWFsQXJlYS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEwQzs7QUFFbkM7QUFDUCxnQkFBZ0IsNkNBQUc7O0FBRW5CO0FBQ0EsOEJBQThCLDZDQUFHO0FBQ2pDOztBQUVBO0FBQ0EseUJBQXlCLDhDQUFJO0FBQzdCOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9jeWxpbmRyaWNhbEVxdWFsQXJlYS5qcz8wOWIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXNpbiwgY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjeWxpbmRyaWNhbEVxdWFsQXJlYVJhdyhwaGkwKSB7XG4gIHZhciBjb3NQaGkwID0gY29zKHBoaTApO1xuXG4gIGZ1bmN0aW9uIGZvcndhcmQobGFtYmRhLCBwaGkpIHtcbiAgICByZXR1cm4gW2xhbWJkYSAqIGNvc1BoaTAsIHNpbihwaGkpIC8gY29zUGhpMF07XG4gIH1cblxuICBmb3J3YXJkLmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICByZXR1cm4gW3ggLyBjb3NQaGkwLCBhc2luKHkgKiBjb3NQaGkwKV07XG4gIH07XG5cbiAgcmV0dXJuIGZvcndhcmQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/cylindricalEqualArea.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/equalEarth.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/equalEarth.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"equalEarthRaw\": () => (/* binding */ equalEarthRaw)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(3) / 2,\n iterations = 12;\n\nfunction equalEarthRaw(lambda, phi) {\n var l = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(M * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(delta) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(l),\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(l) / M)\n ];\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(equalEarthRaw)\n .scale(177.158);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVhbEVhcnRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBb0M7QUFDMkI7O0FBRS9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBSTtBQUNaOztBQUVPO0FBQ1AsVUFBVSw4Q0FBSSxLQUFLLDZDQUFHO0FBQ3RCO0FBQ0EsYUFBYSw2Q0FBRztBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQyxnQkFBZ0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsUUFBUSw2Q0FBRyxVQUFVLDhDQUFRO0FBQzdCO0FBQ0E7QUFDQSwrREFBK0QsNkNBQUc7QUFDbEUsSUFBSSw4Q0FBSSxDQUFDLDZDQUFHO0FBQ1o7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQixTQUFTLHFEQUFVO0FBQ25CO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVhbEVhcnRoLmpzP2NmNzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCB7YWJzLCBhc2luLCBjb3MsIGVwc2lsb24yLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbnZhciBBMSA9IDEuMzQwMjY0LFxuICAgIEEyID0gLTAuMDgxMTA2LFxuICAgIEEzID0gMC4wMDA4OTMsXG4gICAgQTQgPSAwLjAwMzc5NixcbiAgICBNID0gc3FydCgzKSAvIDIsXG4gICAgaXRlcmF0aW9ucyA9IDEyO1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxFYXJ0aFJhdyhsYW1iZGEsIHBoaSkge1xuICB2YXIgbCA9IGFzaW4oTSAqIHNpbihwaGkpKSwgbDIgPSBsICogbCwgbDYgPSBsMiAqIGwyICogbDI7XG4gIHJldHVybiBbXG4gICAgbGFtYmRhICogY29zKGwpIC8gKE0gKiAoQTEgKyAzICogQTIgKiBsMiArIGw2ICogKDcgKiBBMyArIDkgKiBBNCAqIGwyKSkpLFxuICAgIGwgKiAoQTEgKyBBMiAqIGwyICsgbDYgKiAoQTMgKyBBNCAqIGwyKSlcbiAgXTtcbn1cblxuZXF1YWxFYXJ0aFJhdy5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIHZhciBsID0geSwgbDIgPSBsICogbCwgbDYgPSBsMiAqIGwyICogbDI7XG4gIGZvciAodmFyIGkgPSAwLCBkZWx0YSwgZnksIGZweTsgaSA8IGl0ZXJhdGlvbnM7ICsraSkge1xuICAgIGZ5ID0gbCAqIChBMSArIEEyICogbDIgKyBsNiAqIChBMyArIEE0ICogbDIpKSAtIHk7XG4gICAgZnB5ID0gQTEgKyAzICogQTIgKiBsMiArIGw2ICogKDcgKiBBMyArIDkgKiBBNCAqIGwyKTtcbiAgICBsIC09IGRlbHRhID0gZnkgLyBmcHksIGwyID0gbCAqIGwsIGw2ID0gbDIgKiBsMiAqIGwyO1xuICAgIGlmIChhYnMoZGVsdGEpIDwgZXBzaWxvbjIpIGJyZWFrO1xuICB9XG4gIHJldHVybiBbXG4gICAgTSAqIHggKiAoQTEgKyAzICogQTIgKiBsMiArIGw2ICogKDcgKiBBMyArIDkgKiBBNCAqIGwyKSkgLyBjb3MobCksXG4gICAgYXNpbihzaW4obCkgLyBNKVxuICBdO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKGVxdWFsRWFydGhSYXcpXG4gICAgICAuc2NhbGUoMTc3LjE1OCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/equalEarth.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/equirectangular.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/equirectangular.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"equirectangularRaw\": () => (/* binding */ equirectangularRaw)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\nfunction equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(equirectangularRaw)\n .scale(152.63);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9lcXVpcmVjdGFuZ3VsYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9DOztBQUU3QjtBQUNQO0FBQ0E7O0FBRUE7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUIsU0FBUyxxREFBVTtBQUNuQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vZXF1aXJlY3Rhbmd1bGFyLmpzP2Q0MWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWlyZWN0YW5ndWxhclJhdyhsYW1iZGEsIHBoaSkge1xuICByZXR1cm4gW2xhbWJkYSwgcGhpXTtcbn1cblxuZXF1aXJlY3Rhbmd1bGFyUmF3LmludmVydCA9IGVxdWlyZWN0YW5ndWxhclJhdztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKGVxdWlyZWN0YW5ndWxhclJhdylcbiAgICAgIC5zY2FsZSgxNTIuNjMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/equirectangular.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/fit.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/fit.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"fitExtent\": () => (/* binding */ fitExtent),\n/* harmony export */ \"fitHeight\": () => (/* binding */ fitHeight),\n/* harmony export */ \"fitSize\": () => (/* binding */ fitSize),\n/* harmony export */ \"fitWidth\": () => (/* binding */ fitWidth)\n/* harmony export */ });\n/* harmony import */ var _stream_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../stream.js */ \"../../../node_modules/d3-geo/src/stream.js\");\n/* harmony import */ var _path_bounds_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../path/bounds.js */ \"../../../node_modules/d3-geo/src/path/bounds.js\");\n\n\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n (0,_stream_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, projection.stream(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n fitBounds(_path_bounds_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nfunction fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nfunction fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nfunction fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nfunction fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9maXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWtEO0FBQ0w7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxzREFBUywyQkFBMkIsdURBQVk7QUFDbEQsWUFBWSw4REFBbUI7QUFDL0I7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vZml0LmpzP2U4OTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIGdlb1N0cmVhbX0gZnJvbSBcIi4uL3N0cmVhbS5qc1wiO1xuaW1wb3J0IGJvdW5kc1N0cmVhbSBmcm9tIFwiLi4vcGF0aC9ib3VuZHMuanNcIjtcblxuZnVuY3Rpb24gZml0KHByb2plY3Rpb24sIGZpdEJvdW5kcywgb2JqZWN0KSB7XG4gIHZhciBjbGlwID0gcHJvamVjdGlvbi5jbGlwRXh0ZW50ICYmIHByb2plY3Rpb24uY2xpcEV4dGVudCgpO1xuICBwcm9qZWN0aW9uLnNjYWxlKDE1MCkudHJhbnNsYXRlKFswLCAwXSk7XG4gIGlmIChjbGlwICE9IG51bGwpIHByb2plY3Rpb24uY2xpcEV4dGVudChudWxsKTtcbiAgZ2VvU3RyZWFtKG9iamVjdCwgcHJvamVjdGlvbi5zdHJlYW0oYm91bmRzU3RyZWFtKSk7XG4gIGZpdEJvdW5kcyhib3VuZHNTdHJlYW0ucmVzdWx0KCkpO1xuICBpZiAoY2xpcCAhPSBudWxsKSBwcm9qZWN0aW9uLmNsaXBFeHRlbnQoY2xpcCk7XG4gIHJldHVybiBwcm9qZWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0RXh0ZW50KHByb2plY3Rpb24sIGV4dGVudCwgb2JqZWN0KSB7XG4gIHJldHVybiBmaXQocHJvamVjdGlvbiwgZnVuY3Rpb24oYikge1xuICAgIHZhciB3ID0gZXh0ZW50WzFdWzBdIC0gZXh0ZW50WzBdWzBdLFxuICAgICAgICBoID0gZXh0ZW50WzFdWzFdIC0gZXh0ZW50WzBdWzFdLFxuICAgICAgICBrID0gTWF0aC5taW4odyAvIChiWzFdWzBdIC0gYlswXVswXSksIGggLyAoYlsxXVsxXSAtIGJbMF1bMV0pKSxcbiAgICAgICAgeCA9ICtleHRlbnRbMF1bMF0gKyAodyAtIGsgKiAoYlsxXVswXSArIGJbMF1bMF0pKSAvIDIsXG4gICAgICAgIHkgPSArZXh0ZW50WzBdWzFdICsgKGggLSBrICogKGJbMV1bMV0gKyBiWzBdWzFdKSkgLyAyO1xuICAgIHByb2plY3Rpb24uc2NhbGUoMTUwICogaykudHJhbnNsYXRlKFt4LCB5XSk7XG4gIH0sIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRTaXplKHByb2plY3Rpb24sIHNpemUsIG9iamVjdCkge1xuICByZXR1cm4gZml0RXh0ZW50KHByb2plY3Rpb24sIFtbMCwgMF0sIHNpemVdLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0V2lkdGgocHJvamVjdGlvbiwgd2lkdGgsIG9iamVjdCkge1xuICByZXR1cm4gZml0KHByb2plY3Rpb24sIGZ1bmN0aW9uKGIpIHtcbiAgICB2YXIgdyA9ICt3aWR0aCxcbiAgICAgICAgayA9IHcgLyAoYlsxXVswXSAtIGJbMF1bMF0pLFxuICAgICAgICB4ID0gKHcgLSBrICogKGJbMV1bMF0gKyBiWzBdWzBdKSkgLyAyLFxuICAgICAgICB5ID0gLWsgKiBiWzBdWzFdO1xuICAgIHByb2plY3Rpb24uc2NhbGUoMTUwICogaykudHJhbnNsYXRlKFt4LCB5XSk7XG4gIH0sIG9iamVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXRIZWlnaHQocHJvamVjdGlvbiwgaGVpZ2h0LCBvYmplY3QpIHtcbiAgcmV0dXJuIGZpdChwcm9qZWN0aW9uLCBmdW5jdGlvbihiKSB7XG4gICAgdmFyIGggPSAraGVpZ2h0LFxuICAgICAgICBrID0gaCAvIChiWzFdWzFdIC0gYlswXVsxXSksXG4gICAgICAgIHggPSAtayAqIGJbMF1bMF0sXG4gICAgICAgIHkgPSAoaCAtIGsgKiAoYlsxXVsxXSArIGJbMF1bMV0pKSAvIDI7XG4gICAgcHJvamVjdGlvbi5zY2FsZSgxNTAgKiBrKS50cmFuc2xhdGUoW3gsIHldKTtcbiAgfSwgb2JqZWN0KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/fit.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/gnomonic.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/gnomonic.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"gnomonicRaw\": () => (/* binding */ gnomonicRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"../../../node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction gnomonicRaw(x, y) {\n var cy = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y), k = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x) * cy;\n return [cy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x) / k, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y) / k];\n}\n\ngnomonicRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__.azimuthalInvert)(_math_js__WEBPACK_IMPORTED_MODULE_0__.atan);\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9nbm9tb25pYy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUEwQztBQUNLO0FBQ1g7O0FBRTdCO0FBQ1AsV0FBVyw2Q0FBRyxTQUFTLDZDQUFHO0FBQzFCLGVBQWUsNkNBQUcsU0FBUyw2Q0FBRztBQUM5Qjs7QUFFQSxxQkFBcUIsOERBQWUsQ0FBQywwQ0FBSTs7QUFFekMsNkJBQWUsc0NBQVc7QUFDMUIsU0FBUyxxREFBVTtBQUNuQjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9nbm9tb25pYy5qcz81YWI5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXRhbiwgY29zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge2F6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ25vbW9uaWNSYXcoeCwgeSkge1xuICB2YXIgY3kgPSBjb3MoeSksIGsgPSBjb3MoeCkgKiBjeTtcbiAgcmV0dXJuIFtjeSAqIHNpbih4KSAvIGssIHNpbih5KSAvIGtdO1xufVxuXG5nbm9tb25pY1Jhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoYXRhbik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihnbm9tb25pY1JhdylcbiAgICAgIC5zY2FsZSgxNDQuMDQ5KVxuICAgICAgLmNsaXBBbmdsZSg2MCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/gnomonic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/identity.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/identity.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clip/rectangle.js */ \"../../../node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../identity.js */ \"../../../node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transform.js */ \"../../../node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./fit.js */ \"../../../node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = (0,_transform_js__WEBPACK_IMPORTED_MODULE_0__.transformer)({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : (0,_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_3__.radians, sa = (0,_math_js__WEBPACK_IMPORTED_MODULE_3__.sin)(alpha), ca = (0,_math_js__WEBPACK_IMPORTED_MODULE_3__.cos)(alpha), reset()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_3__.degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_4__.fitExtent)(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_4__.fitSize)(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_4__.fitWidth)(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_4__.fitHeight)(projection, height, object);\n };\n\n return projection;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9pZGVudGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBaUQ7QUFDWDtBQUNNO0FBQ3FCO0FBQ1g7O0FBRXRELDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUFXO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLGlCQUFpQixvREFBUTtBQUN6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRixvREFBUSxJQUFJLDhEQUFhO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsNkNBQU8sT0FBTyw2Q0FBRyxjQUFjLDZDQUFHLDRCQUE0Qiw2Q0FBTztBQUN0SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjtBQUNBO0FBQ0EsV0FBVyxnREFBTztBQUNsQjtBQUNBO0FBQ0EsV0FBVyxpREFBUTtBQUNuQjtBQUNBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vaWRlbnRpdHkuanM/NzJjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xpcFJlY3RhbmdsZSBmcm9tIFwiLi4vY2xpcC9yZWN0YW5nbGUuanNcIjtcbmltcG9ydCBpZGVudGl0eSBmcm9tIFwiLi4vaWRlbnRpdHkuanNcIjtcbmltcG9ydCB7dHJhbnNmb3JtZXJ9IGZyb20gXCIuLi90cmFuc2Zvcm0uanNcIjtcbmltcG9ydCB7Zml0RXh0ZW50LCBmaXRTaXplLCBmaXRXaWR0aCwgZml0SGVpZ2h0fSBmcm9tIFwiLi9maXQuanNcIjtcbmltcG9ydCB7Y29zLCBkZWdyZWVzLCByYWRpYW5zLCBzaW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgayA9IDEsIHR4ID0gMCwgdHkgPSAwLCBzeCA9IDEsIHN5ID0gMSwgLy8gc2NhbGUsIHRyYW5zbGF0ZSBhbmQgcmVmbGVjdFxuICAgICAgYWxwaGEgPSAwLCBjYSwgc2EsIC8vIGFuZ2xlXG4gICAgICB4MCA9IG51bGwsIHkwLCB4MSwgeTEsIC8vIGNsaXAgZXh0ZW50XG4gICAgICBreCA9IDEsIGt5ID0gMSxcbiAgICAgIHRyYW5zZm9ybSA9IHRyYW5zZm9ybWVyKHtcbiAgICAgICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgICAgICB2YXIgcCA9IHByb2plY3Rpb24oW3gsIHldKVxuICAgICAgICAgIHRoaXMuc3RyZWFtLnBvaW50KHBbMF0sIHBbMV0pO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHBvc3RjbGlwID0gaWRlbnRpdHksXG4gICAgICBjYWNoZSxcbiAgICAgIGNhY2hlU3RyZWFtO1xuXG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGt4ID0gayAqIHN4O1xuICAgIGt5ID0gayAqIHN5O1xuICAgIGNhY2hlID0gY2FjaGVTdHJlYW0gPSBudWxsO1xuICAgIHJldHVybiBwcm9qZWN0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gcHJvamVjdGlvbiAocCkge1xuICAgIHZhciB4ID0gcFswXSAqIGt4LCB5ID0gcFsxXSAqIGt5O1xuICAgIGlmIChhbHBoYSkge1xuICAgICAgdmFyIHQgPSB5ICogY2EgLSB4ICogc2E7XG4gICAgICB4ID0geCAqIGNhICsgeSAqIHNhO1xuICAgICAgeSA9IHQ7XG4gICAgfSAgICBcbiAgICByZXR1cm4gW3ggKyB0eCwgeSArIHR5XTtcbiAgfVxuICBwcm9qZWN0aW9uLmludmVydCA9IGZ1bmN0aW9uKHApIHtcbiAgICB2YXIgeCA9IHBbMF0gLSB0eCwgeSA9IHBbMV0gLSB0eTtcbiAgICBpZiAoYWxwaGEpIHtcbiAgICAgIHZhciB0ID0geSAqIGNhICsgeCAqIHNhO1xuICAgICAgeCA9IHggKiBjYSAtIHkgKiBzYTtcbiAgICAgIHkgPSB0O1xuICAgIH1cbiAgICByZXR1cm4gW3ggLyBreCwgeSAvIGt5XTtcbiAgfTtcbiAgcHJvamVjdGlvbi5zdHJlYW0gPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICByZXR1cm4gY2FjaGUgJiYgY2FjaGVTdHJlYW0gPT09IHN0cmVhbSA/IGNhY2hlIDogY2FjaGUgPSB0cmFuc2Zvcm0ocG9zdGNsaXAoY2FjaGVTdHJlYW0gPSBzdHJlYW0pKTtcbiAgfTtcbiAgcHJvamVjdGlvbi5wb3N0Y2xpcCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwb3N0Y2xpcCA9IF8sIHgwID0geTAgPSB4MSA9IHkxID0gbnVsbCwgcmVzZXQoKSkgOiBwb3N0Y2xpcDtcbiAgfTtcbiAgcHJvamVjdGlvbi5jbGlwRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBvc3RjbGlwID0gXyA9PSBudWxsID8gKHgwID0geTAgPSB4MSA9IHkxID0gbnVsbCwgaWRlbnRpdHkpIDogY2xpcFJlY3RhbmdsZSh4MCA9ICtfWzBdWzBdLCB5MCA9ICtfWzBdWzFdLCB4MSA9ICtfWzFdWzBdLCB5MSA9ICtfWzFdWzFdKSwgcmVzZXQoKSkgOiB4MCA9PSBudWxsID8gbnVsbCA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICB9O1xuICBwcm9qZWN0aW9uLnNjYWxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGsgPSArXywgcmVzZXQoKSkgOiBrO1xuICB9O1xuICBwcm9qZWN0aW9uLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0eCA9ICtfWzBdLCB0eSA9ICtfWzFdLCByZXNldCgpKSA6IFt0eCwgdHldO1xuICB9XG4gIHByb2plY3Rpb24uYW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYWxwaGEgPSBfICUgMzYwICogcmFkaWFucywgc2EgPSBzaW4oYWxwaGEpLCBjYSA9IGNvcyhhbHBoYSksIHJlc2V0KCkpIDogYWxwaGEgKiBkZWdyZWVzO1xuICB9O1xuICBwcm9qZWN0aW9uLnJlZmxlY3RYID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN4ID0gXyA/IC0xIDogMSwgcmVzZXQoKSkgOiBzeCA8IDA7XG4gIH07XG4gIHByb2plY3Rpb24ucmVmbGVjdFkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3kgPSBfID8gLTEgOiAxLCByZXNldCgpKSA6IHN5IDwgMDtcbiAgfTtcbiAgcHJvamVjdGlvbi5maXRFeHRlbnQgPSBmdW5jdGlvbihleHRlbnQsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRFeHRlbnQocHJvamVjdGlvbiwgZXh0ZW50LCBvYmplY3QpO1xuICB9O1xuICBwcm9qZWN0aW9uLmZpdFNpemUgPSBmdW5jdGlvbihzaXplLCBvYmplY3QpIHtcbiAgICByZXR1cm4gZml0U2l6ZShwcm9qZWN0aW9uLCBzaXplLCBvYmplY3QpO1xuICB9O1xuICBwcm9qZWN0aW9uLmZpdFdpZHRoID0gZnVuY3Rpb24od2lkdGgsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRXaWR0aChwcm9qZWN0aW9uLCB3aWR0aCwgb2JqZWN0KTtcbiAgfTtcbiAgcHJvamVjdGlvbi5maXRIZWlnaHQgPSBmdW5jdGlvbihoZWlnaHQsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRIZWlnaHQocHJvamVjdGlvbiwgaGVpZ2h0LCBvYmplY3QpO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0aW9uO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/index.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ projection),\n/* harmony export */ \"projectionMutator\": () => (/* binding */ projectionMutator)\n/* harmony export */ });\n/* harmony import */ var _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clip/antimeridian.js */ \"../../../node_modules/d3-geo/src/clip/antimeridian.js\");\n/* harmony import */ var _clip_circle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../clip/circle.js */ \"../../../node_modules/d3-geo/src/clip/circle.js\");\n/* harmony import */ var _clip_rectangle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../clip/rectangle.js */ \"../../../node_modules/d3-geo/src/clip/rectangle.js\");\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../compose.js */ \"../../../node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../identity.js */ \"../../../node_modules/d3-geo/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../rotation.js */ \"../../../node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transform.js */ \"../../../node_modules/d3-geo/src/transform.js\");\n/* harmony import */ var _fit_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./fit.js */ \"../../../node_modules/d3-geo/src/projection/fit.js\");\n/* harmony import */ var _resample_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./resample.js */ \"../../../node_modules/d3-geo/src/projection/resample.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar transformRadians = (0,_transform_js__WEBPACK_IMPORTED_MODULE_0__.transformer)({\n point: function(x, y) {\n this.stream.point(x * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, y * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return (0,_transform_js__WEBPACK_IMPORTED_MODULE_0__.transformer)({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.cos)(alpha),\n sinAlpha = (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sin)(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nfunction projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nfunction projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], // pre-clip angle\n x0 = null, y0, x1, y1, postclip = _identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, point[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees, point[1] * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? (0,_clip_circle_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(theta = _ * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians) : (theta = null, _clip_antimeridian_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]), reset()) : theta * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, _identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) : (0,_clip_rectangle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, phi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, recenter()) : [lambda * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees, phi * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, deltaPhi = _[1] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, deltaGamma = _.length > 2 ? _[2] % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians : 0, recenter()) : [deltaLambda * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees, deltaPhi * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees, deltaGamma * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * _math_js__WEBPACK_IMPORTED_MODULE_1__.radians, recenter()) : alpha * _math_js__WEBPACK_IMPORTED_MODULE_1__.degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = (0,_resample_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(projectTransform, delta2 = _ * _), reset()) : (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.sqrt)(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_7__.fitExtent)(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_7__.fitSize)(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_7__.fitWidth)(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return (0,_fit_js__WEBPACK_IMPORTED_MODULE_7__.fitHeight)(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = (0,_rotation_js__WEBPACK_IMPORTED_MODULE_8__.rotateRadians)(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = (0,_compose_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(project, transform);\n projectRotateTransform = (0,_compose_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(rotate, projectTransform);\n projectResample = (0,_resample_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBdUQ7QUFDWjtBQUNNO0FBQ2I7QUFDRTtBQUNzQjtBQUNmO0FBQ0Q7QUFDcUI7QUFDNUI7O0FBRXJDLHVCQUF1QiwwREFBVztBQUNsQztBQUNBLDBCQUEwQiw2Q0FBTyxNQUFNLDZDQUFPO0FBQzlDO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFNBQVMsMERBQVc7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLDZDQUFHO0FBQ3BCLGlCQUFpQiw2Q0FBRztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmLHdDQUF3QyxpQkFBaUI7QUFDekQ7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDZEQUFnQjtBQUM5Qyx3Q0FBd0Msb0RBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTZDLDZDQUFPLGFBQWEsNkNBQU87QUFDeEU7O0FBRUE7QUFDQTtBQUNBLGdDQUFnQyw2Q0FBTyxhQUFhLDZDQUFPO0FBQzNEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOENBQThDLDJEQUFVLGFBQWEsNkNBQU8sbUJBQW1CLDZEQUFnQixzQkFBc0IsNkNBQU87QUFDNUk7O0FBRUE7QUFDQSxpRkFBaUYsb0RBQVEsSUFBSSw4REFBYTtBQUMxRzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EscURBQXFELDZDQUFPLHFCQUFxQiw2Q0FBTywwQkFBMEIsNkNBQU8sUUFBUSw2Q0FBTztBQUN4STs7QUFFQTtBQUNBLDBEQUEwRCw2Q0FBTywwQkFBMEIsNkNBQU8sMkNBQTJDLDZDQUFPLG1DQUFtQyw2Q0FBTyxhQUFhLDZDQUFPLGVBQWUsNkNBQU87QUFDeE87O0FBRUE7QUFDQSxpREFBaUQsNkNBQU8sd0JBQXdCLDZDQUFPO0FBQ3ZGOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpREFBaUQsd0RBQVEsK0NBQStDLDhDQUFJO0FBQzVHOztBQUVBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjs7QUFFQTtBQUNBLFdBQVcsZ0RBQU87QUFDbEI7O0FBRUE7QUFDQSxXQUFXLGlEQUFRO0FBQ25COztBQUVBO0FBQ0EsV0FBVyxrREFBUztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJEQUFhO0FBQzFCLHVCQUF1Qix1REFBTztBQUM5Qiw2QkFBNkIsdURBQU87QUFDcEMsc0JBQXNCLHdEQUFRO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vaW5kZXguanM/ODA3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xpcEFudGltZXJpZGlhbiBmcm9tIFwiLi4vY2xpcC9hbnRpbWVyaWRpYW4uanNcIjtcbmltcG9ydCBjbGlwQ2lyY2xlIGZyb20gXCIuLi9jbGlwL2NpcmNsZS5qc1wiO1xuaW1wb3J0IGNsaXBSZWN0YW5nbGUgZnJvbSBcIi4uL2NsaXAvcmVjdGFuZ2xlLmpzXCI7XG5pbXBvcnQgY29tcG9zZSBmcm9tIFwiLi4vY29tcG9zZS5qc1wiO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuLi9pZGVudGl0eS5qc1wiO1xuaW1wb3J0IHtjb3MsIGRlZ3JlZXMsIHJhZGlhbnMsIHNpbiwgc3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7cm90YXRlUmFkaWFuc30gZnJvbSBcIi4uL3JvdGF0aW9uLmpzXCI7XG5pbXBvcnQge3RyYW5zZm9ybWVyfSBmcm9tIFwiLi4vdHJhbnNmb3JtLmpzXCI7XG5pbXBvcnQge2ZpdEV4dGVudCwgZml0U2l6ZSwgZml0V2lkdGgsIGZpdEhlaWdodH0gZnJvbSBcIi4vZml0LmpzXCI7XG5pbXBvcnQgcmVzYW1wbGUgZnJvbSBcIi4vcmVzYW1wbGUuanNcIjtcblxudmFyIHRyYW5zZm9ybVJhZGlhbnMgPSB0cmFuc2Zvcm1lcih7XG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5zdHJlYW0ucG9pbnQoeCAqIHJhZGlhbnMsIHkgKiByYWRpYW5zKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVJvdGF0ZShyb3RhdGUpIHtcbiAgcmV0dXJuIHRyYW5zZm9ybWVyKHtcbiAgICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgICAgdmFyIHIgPSByb3RhdGUoeCwgeSk7XG4gICAgICByZXR1cm4gdGhpcy5zdHJlYW0ucG9pbnQoclswXSwgclsxXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2NhbGVUcmFuc2xhdGUoaywgZHgsIGR5LCBzeCwgc3kpIHtcbiAgZnVuY3Rpb24gdHJhbnNmb3JtKHgsIHkpIHtcbiAgICB4ICo9IHN4OyB5ICo9IHN5O1xuICAgIHJldHVybiBbZHggKyBrICogeCwgZHkgLSBrICogeV07XG4gIH1cbiAgdHJhbnNmb3JtLmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICByZXR1cm4gWyh4IC0gZHgpIC8gayAqIHN4LCAoZHkgLSB5KSAvIGsgKiBzeV07XG4gIH07XG4gIHJldHVybiB0cmFuc2Zvcm07XG59XG5cbmZ1bmN0aW9uIHNjYWxlVHJhbnNsYXRlUm90YXRlKGssIGR4LCBkeSwgc3gsIHN5LCBhbHBoYSkge1xuICBpZiAoIWFscGhhKSByZXR1cm4gc2NhbGVUcmFuc2xhdGUoaywgZHgsIGR5LCBzeCwgc3kpO1xuICB2YXIgY29zQWxwaGEgPSBjb3MoYWxwaGEpLFxuICAgICAgc2luQWxwaGEgPSBzaW4oYWxwaGEpLFxuICAgICAgYSA9IGNvc0FscGhhICogayxcbiAgICAgIGIgPSBzaW5BbHBoYSAqIGssXG4gICAgICBhaSA9IGNvc0FscGhhIC8gayxcbiAgICAgIGJpID0gc2luQWxwaGEgLyBrLFxuICAgICAgY2kgPSAoc2luQWxwaGEgKiBkeSAtIGNvc0FscGhhICogZHgpIC8gayxcbiAgICAgIGZpID0gKHNpbkFscGhhICogZHggKyBjb3NBbHBoYSAqIGR5KSAvIGs7XG4gIGZ1bmN0aW9uIHRyYW5zZm9ybSh4LCB5KSB7XG4gICAgeCAqPSBzeDsgeSAqPSBzeTtcbiAgICByZXR1cm4gW2EgKiB4IC0gYiAqIHkgKyBkeCwgZHkgLSBiICogeCAtIGEgKiB5XTtcbiAgfVxuICB0cmFuc2Zvcm0uaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHJldHVybiBbc3ggKiAoYWkgKiB4IC0gYmkgKiB5ICsgY2kpLCBzeSAqIChmaSAtIGJpICogeCAtIGFpICogeSldO1xuICB9O1xuICByZXR1cm4gdHJhbnNmb3JtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcm9qZWN0aW9uKHByb2plY3QpIHtcbiAgcmV0dXJuIHByb2plY3Rpb25NdXRhdG9yKGZ1bmN0aW9uKCkgeyByZXR1cm4gcHJvamVjdDsgfSkoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3Rpb25NdXRhdG9yKHByb2plY3RBdCkge1xuICB2YXIgcHJvamVjdCxcbiAgICAgIGsgPSAxNTAsIC8vIHNjYWxlXG4gICAgICB4ID0gNDgwLCB5ID0gMjUwLCAvLyB0cmFuc2xhdGVcbiAgICAgIGxhbWJkYSA9IDAsIHBoaSA9IDAsIC8vIGNlbnRlclxuICAgICAgZGVsdGFMYW1iZGEgPSAwLCBkZWx0YVBoaSA9IDAsIGRlbHRhR2FtbWEgPSAwLCByb3RhdGUsIC8vIHByZS1yb3RhdGVcbiAgICAgIGFscGhhID0gMCwgLy8gcG9zdC1yb3RhdGUgYW5nbGVcbiAgICAgIHN4ID0gMSwgLy8gcmVmbGVjdFhcbiAgICAgIHN5ID0gMSwgLy8gcmVmbGVjdFhcbiAgICAgIHRoZXRhID0gbnVsbCwgcHJlY2xpcCA9IGNsaXBBbnRpbWVyaWRpYW4sIC8vIHByZS1jbGlwIGFuZ2xlXG4gICAgICB4MCA9IG51bGwsIHkwLCB4MSwgeTEsIHBvc3RjbGlwID0gaWRlbnRpdHksIC8vIHBvc3QtY2xpcCBleHRlbnRcbiAgICAgIGRlbHRhMiA9IDAuNSwgLy8gcHJlY2lzaW9uXG4gICAgICBwcm9qZWN0UmVzYW1wbGUsXG4gICAgICBwcm9qZWN0VHJhbnNmb3JtLFxuICAgICAgcHJvamVjdFJvdGF0ZVRyYW5zZm9ybSxcbiAgICAgIGNhY2hlLFxuICAgICAgY2FjaGVTdHJlYW07XG5cbiAgZnVuY3Rpb24gcHJvamVjdGlvbihwb2ludCkge1xuICAgIHJldHVybiBwcm9qZWN0Um90YXRlVHJhbnNmb3JtKHBvaW50WzBdICogcmFkaWFucywgcG9pbnRbMV0gKiByYWRpYW5zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmVydChwb2ludCkge1xuICAgIHBvaW50ID0gcHJvamVjdFJvdGF0ZVRyYW5zZm9ybS5pbnZlcnQocG9pbnRbMF0sIHBvaW50WzFdKTtcbiAgICByZXR1cm4gcG9pbnQgJiYgW3BvaW50WzBdICogZGVncmVlcywgcG9pbnRbMV0gKiBkZWdyZWVzXTtcbiAgfVxuXG4gIHByb2plY3Rpb24uc3RyZWFtID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgcmV0dXJuIGNhY2hlICYmIGNhY2hlU3RyZWFtID09PSBzdHJlYW0gPyBjYWNoZSA6IGNhY2hlID0gdHJhbnNmb3JtUmFkaWFucyh0cmFuc2Zvcm1Sb3RhdGUocm90YXRlKShwcmVjbGlwKHByb2plY3RSZXNhbXBsZShwb3N0Y2xpcChjYWNoZVN0cmVhbSA9IHN0cmVhbSkpKSkpO1xuICB9O1xuXG4gIHByb2plY3Rpb24ucHJlY2xpcCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwcmVjbGlwID0gXywgdGhldGEgPSB1bmRlZmluZWQsIHJlc2V0KCkpIDogcHJlY2xpcDtcbiAgfTtcblxuICBwcm9qZWN0aW9uLnBvc3RjbGlwID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBvc3RjbGlwID0gXywgeDAgPSB5MCA9IHgxID0geTEgPSBudWxsLCByZXNldCgpKSA6IHBvc3RjbGlwO1xuICB9O1xuXG4gIHByb2plY3Rpb24uY2xpcEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHByZWNsaXAgPSArXyA/IGNsaXBDaXJjbGUodGhldGEgPSBfICogcmFkaWFucykgOiAodGhldGEgPSBudWxsLCBjbGlwQW50aW1lcmlkaWFuKSwgcmVzZXQoKSkgOiB0aGV0YSAqIGRlZ3JlZXM7XG4gIH07XG5cbiAgcHJvamVjdGlvbi5jbGlwRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBvc3RjbGlwID0gXyA9PSBudWxsID8gKHgwID0geTAgPSB4MSA9IHkxID0gbnVsbCwgaWRlbnRpdHkpIDogY2xpcFJlY3RhbmdsZSh4MCA9ICtfWzBdWzBdLCB5MCA9ICtfWzBdWzFdLCB4MSA9ICtfWzFdWzBdLCB5MSA9ICtfWzFdWzFdKSwgcmVzZXQoKSkgOiB4MCA9PSBudWxsID8gbnVsbCA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICB9O1xuXG4gIHByb2plY3Rpb24uc2NhbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoayA9ICtfLCByZWNlbnRlcigpKSA6IGs7XG4gIH07XG5cbiAgcHJvamVjdGlvbi50cmFuc2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9ICtfWzBdLCB5ID0gK19bMV0sIHJlY2VudGVyKCkpIDogW3gsIHldO1xuICB9O1xuXG4gIHByb2plY3Rpb24uY2VudGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGxhbWJkYSA9IF9bMF0gJSAzNjAgKiByYWRpYW5zLCBwaGkgPSBfWzFdICUgMzYwICogcmFkaWFucywgcmVjZW50ZXIoKSkgOiBbbGFtYmRhICogZGVncmVlcywgcGhpICogZGVncmVlc107XG4gIH07XG5cbiAgcHJvamVjdGlvbi5yb3RhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGVsdGFMYW1iZGEgPSBfWzBdICUgMzYwICogcmFkaWFucywgZGVsdGFQaGkgPSBfWzFdICUgMzYwICogcmFkaWFucywgZGVsdGFHYW1tYSA9IF8ubGVuZ3RoID4gMiA/IF9bMl0gJSAzNjAgKiByYWRpYW5zIDogMCwgcmVjZW50ZXIoKSkgOiBbZGVsdGFMYW1iZGEgKiBkZWdyZWVzLCBkZWx0YVBoaSAqIGRlZ3JlZXMsIGRlbHRhR2FtbWEgKiBkZWdyZWVzXTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLmFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFscGhhID0gXyAlIDM2MCAqIHJhZGlhbnMsIHJlY2VudGVyKCkpIDogYWxwaGEgKiBkZWdyZWVzO1xuICB9O1xuXG4gIHByb2plY3Rpb24ucmVmbGVjdFggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc3ggPSBfID8gLTEgOiAxLCByZWNlbnRlcigpKSA6IHN4IDwgMDtcbiAgfTtcblxuICBwcm9qZWN0aW9uLnJlZmxlY3RZID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN5ID0gXyA/IC0xIDogMSwgcmVjZW50ZXIoKSkgOiBzeSA8IDA7XG4gIH07XG5cbiAgcHJvamVjdGlvbi5wcmVjaXNpb24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocHJvamVjdFJlc2FtcGxlID0gcmVzYW1wbGUocHJvamVjdFRyYW5zZm9ybSwgZGVsdGEyID0gXyAqIF8pLCByZXNldCgpKSA6IHNxcnQoZGVsdGEyKTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLmZpdEV4dGVudCA9IGZ1bmN0aW9uKGV4dGVudCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGZpdEV4dGVudChwcm9qZWN0aW9uLCBleHRlbnQsIG9iamVjdCk7XG4gIH07XG5cbiAgcHJvamVjdGlvbi5maXRTaXplID0gZnVuY3Rpb24oc2l6ZSwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGZpdFNpemUocHJvamVjdGlvbiwgc2l6ZSwgb2JqZWN0KTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLmZpdFdpZHRoID0gZnVuY3Rpb24od2lkdGgsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRXaWR0aChwcm9qZWN0aW9uLCB3aWR0aCwgb2JqZWN0KTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLmZpdEhlaWdodCA9IGZ1bmN0aW9uKGhlaWdodCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGZpdEhlaWdodChwcm9qZWN0aW9uLCBoZWlnaHQsIG9iamVjdCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVjZW50ZXIoKSB7XG4gICAgdmFyIGNlbnRlciA9IHNjYWxlVHJhbnNsYXRlUm90YXRlKGssIDAsIDAsIHN4LCBzeSwgYWxwaGEpLmFwcGx5KG51bGwsIHByb2plY3QobGFtYmRhLCBwaGkpKSxcbiAgICAgICAgdHJhbnNmb3JtID0gc2NhbGVUcmFuc2xhdGVSb3RhdGUoaywgeCAtIGNlbnRlclswXSwgeSAtIGNlbnRlclsxXSwgc3gsIHN5LCBhbHBoYSk7XG4gICAgcm90YXRlID0gcm90YXRlUmFkaWFucyhkZWx0YUxhbWJkYSwgZGVsdGFQaGksIGRlbHRhR2FtbWEpO1xuICAgIHByb2plY3RUcmFuc2Zvcm0gPSBjb21wb3NlKHByb2plY3QsIHRyYW5zZm9ybSk7XG4gICAgcHJvamVjdFJvdGF0ZVRyYW5zZm9ybSA9IGNvbXBvc2Uocm90YXRlLCBwcm9qZWN0VHJhbnNmb3JtKTtcbiAgICBwcm9qZWN0UmVzYW1wbGUgPSByZXNhbXBsZShwcm9qZWN0VHJhbnNmb3JtLCBkZWx0YTIpO1xuICAgIHJldHVybiByZXNldCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGw7XG4gICAgcmV0dXJuIHByb2plY3Rpb247XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcHJvamVjdCA9IHByb2plY3RBdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHByb2plY3Rpb24uaW52ZXJ0ID0gcHJvamVjdC5pbnZlcnQgJiYgaW52ZXJ0O1xuICAgIHJldHVybiByZWNlbnRlcigpO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/mercator.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/mercator.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"mercatorProjection\": () => (/* binding */ mercatorProjection),\n/* harmony export */ \"mercatorRaw\": () => (/* binding */ mercatorRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _rotation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../rotation.js */ \"../../../node_modules/d3-geo/src/rotation.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction mercatorRaw(lambda, phi) {\n return [lambda, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.log)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tan)((_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.exp)(y)) - _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi];\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / _math_js__WEBPACK_IMPORTED_MODULE_0__.tau);\n}\n\nfunction mercatorProjection(project) {\n var m = (0,_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = _math_js__WEBPACK_IMPORTED_MODULE_0__.pi * scale(),\n t = m((0,_rotation_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9tZXJjYXRvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0U7QUFDMUI7QUFDRjs7QUFFN0I7QUFDUCxrQkFBa0IsNkNBQUcsQ0FBQyw2Q0FBRyxFQUFFLDRDQUFNO0FBQ2pDOztBQUVBO0FBQ0EsaUJBQWlCLDhDQUFJLENBQUMsNkNBQUcsT0FBTyw0Q0FBTTtBQUN0Qzs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBLG1CQUFtQix5Q0FBRztBQUN0Qjs7QUFFTztBQUNQLFVBQVUscURBQVU7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksd0NBQUU7QUFDZCxjQUFjLHdEQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL21lcmNhdG9yLmpzPzAyNTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBleHAsIGhhbGZQaSwgbG9nLCBwaSwgdGFuLCB0YXV9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQgcm90YXRpb24gZnJvbSBcIi4uL3JvdGF0aW9uLmpzXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyY2F0b3JSYXcobGFtYmRhLCBwaGkpIHtcbiAgcmV0dXJuIFtsYW1iZGEsIGxvZyh0YW4oKGhhbGZQaSArIHBoaSkgLyAyKSldO1xufVxuXG5tZXJjYXRvclJhdy5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gIHJldHVybiBbeCwgMiAqIGF0YW4oZXhwKHkpKSAtIGhhbGZQaV07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG1lcmNhdG9yUHJvamVjdGlvbihtZXJjYXRvclJhdylcbiAgICAgIC5zY2FsZSg5NjEgLyB0YXUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyY2F0b3JQcm9qZWN0aW9uKHByb2plY3QpIHtcbiAgdmFyIG0gPSBwcm9qZWN0aW9uKHByb2plY3QpLFxuICAgICAgY2VudGVyID0gbS5jZW50ZXIsXG4gICAgICBzY2FsZSA9IG0uc2NhbGUsXG4gICAgICB0cmFuc2xhdGUgPSBtLnRyYW5zbGF0ZSxcbiAgICAgIGNsaXBFeHRlbnQgPSBtLmNsaXBFeHRlbnQsXG4gICAgICB4MCA9IG51bGwsIHkwLCB4MSwgeTE7IC8vIGNsaXAgZXh0ZW50XG5cbiAgbS5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzY2FsZShfKSwgcmVjbGlwKCkpIDogc2NhbGUoKTtcbiAgfTtcblxuICBtLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0cmFuc2xhdGUoXyksIHJlY2xpcCgpKSA6IHRyYW5zbGF0ZSgpO1xuICB9O1xuXG4gIG0uY2VudGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNlbnRlcihfKSwgcmVjbGlwKCkpIDogY2VudGVyKCk7XG4gIH07XG5cbiAgbS5jbGlwRXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChfID09IG51bGwgPyB4MCA9IHkwID0geDEgPSB5MSA9IG51bGwgOiAoeDAgPSArX1swXVswXSwgeTAgPSArX1swXVsxXSwgeDEgPSArX1sxXVswXSwgeTEgPSArX1sxXVsxXSkpLCByZWNsaXAoKSkgOiB4MCA9PSBudWxsID8gbnVsbCA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJlY2xpcCgpIHtcbiAgICB2YXIgayA9IHBpICogc2NhbGUoKSxcbiAgICAgICAgdCA9IG0ocm90YXRpb24obS5yb3RhdGUoKSkuaW52ZXJ0KFswLCAwXSkpO1xuICAgIHJldHVybiBjbGlwRXh0ZW50KHgwID09IG51bGxcbiAgICAgICAgPyBbW3RbMF0gLSBrLCB0WzFdIC0ga10sIFt0WzBdICsgaywgdFsxXSArIGtdXSA6IHByb2plY3QgPT09IG1lcmNhdG9yUmF3XG4gICAgICAgID8gW1tNYXRoLm1heCh0WzBdIC0gaywgeDApLCB5MF0sIFtNYXRoLm1pbih0WzBdICsgaywgeDEpLCB5MV1dXG4gICAgICAgIDogW1t4MCwgTWF0aC5tYXgodFsxXSAtIGssIHkwKV0sIFt4MSwgTWF0aC5taW4odFsxXSArIGssIHkxKV1dKTtcbiAgfVxuXG4gIHJldHVybiByZWNsaXAoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/mercator.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/naturalEarth1.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/naturalEarth1.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"naturalEarth1Raw\": () => (/* binding */ naturalEarth1Raw)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\nfunction naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(delta) > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(naturalEarth1Raw)\n .scale(175.295);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9uYXR1cmFsRWFydGgxLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBb0M7QUFDSTs7QUFFakM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxPQUFPLDZDQUFHLFVBQVUsNkNBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQixTQUFTLHFEQUFVO0FBQ25CO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9uYXR1cmFsRWFydGgxLmpzP2I5YTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2plY3Rpb24gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCB7YWJzLCBlcHNpbG9ufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbmF0dXJhbEVhcnRoMVJhdyhsYW1iZGEsIHBoaSkge1xuICB2YXIgcGhpMiA9IHBoaSAqIHBoaSwgcGhpNCA9IHBoaTIgKiBwaGkyO1xuICByZXR1cm4gW1xuICAgIGxhbWJkYSAqICgwLjg3MDcgLSAwLjEzMTk3OSAqIHBoaTIgKyBwaGk0ICogKC0wLjAxMzc5MSArIHBoaTQgKiAoMC4wMDM5NzEgKiBwaGkyIC0gMC4wMDE1MjkgKiBwaGk0KSkpLFxuICAgIHBoaSAqICgxLjAwNzIyNiArIHBoaTIgKiAoMC4wMTUwODUgKyBwaGk0ICogKC0wLjA0NDQ3NSArIDAuMDI4ODc0ICogcGhpMiAtIDAuMDA1OTE2ICogcGhpNCkpKVxuICBdO1xufVxuXG5uYXR1cmFsRWFydGgxUmF3LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgdmFyIHBoaSA9IHksIGkgPSAyNSwgZGVsdGE7XG4gIGRvIHtcbiAgICB2YXIgcGhpMiA9IHBoaSAqIHBoaSwgcGhpNCA9IHBoaTIgKiBwaGkyO1xuICAgIHBoaSAtPSBkZWx0YSA9IChwaGkgKiAoMS4wMDcyMjYgKyBwaGkyICogKDAuMDE1MDg1ICsgcGhpNCAqICgtMC4wNDQ0NzUgKyAwLjAyODg3NCAqIHBoaTIgLSAwLjAwNTkxNiAqIHBoaTQpKSkgLSB5KSAvXG4gICAgICAgICgxLjAwNzIyNiArIHBoaTIgKiAoMC4wMTUwODUgKiAzICsgcGhpNCAqICgtMC4wNDQ0NzUgKiA3ICsgMC4wMjg4NzQgKiA5ICogcGhpMiAtIDAuMDA1OTE2ICogMTEgKiBwaGk0KSkpO1xuICB9IHdoaWxlIChhYnMoZGVsdGEpID4gZXBzaWxvbiAmJiAtLWkgPiAwKTtcbiAgcmV0dXJuIFtcbiAgICB4IC8gKDAuODcwNyArIChwaGkyID0gcGhpICogcGhpKSAqICgtMC4xMzE5NzkgKyBwaGkyICogKC0wLjAxMzc5MSArIHBoaTIgKiBwaGkyICogcGhpMiAqICgwLjAwMzk3MSAtIDAuMDAxNTI5ICogcGhpMikpKSksXG4gICAgcGhpXG4gIF07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24obmF0dXJhbEVhcnRoMVJhdylcbiAgICAgIC5zY2FsZSgxNzUuMjk1KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/naturalEarth1.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/orthographic.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/orthographic.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"orthographicRaw\": () => (/* binding */ orthographicRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"../../../node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction orthographicRaw(x, y) {\n return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y)];\n}\n\northographicRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__.azimuthalInvert)(_math_js__WEBPACK_IMPORTED_MODULE_0__.asin);\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9vcnRob2dyYXBoaWMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBbUQ7QUFDSjtBQUNYOztBQUU3QjtBQUNQLFVBQVUsNkNBQUcsTUFBTSw2Q0FBRyxLQUFLLDZDQUFHO0FBQzlCOztBQUVBLHlCQUF5Qiw4REFBZSxDQUFDLDBDQUFJOztBQUU3Qyw2QkFBZSxzQ0FBVztBQUMxQixTQUFTLHFEQUFVO0FBQ25CO0FBQ0Esc0JBQXNCLDZDQUFPO0FBQzdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vb3J0aG9ncmFwaGljLmpzP2E3YjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthc2luLCBjb3MsIGVwc2lsb24sIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7YXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcnRob2dyYXBoaWNSYXcoeCwgeSkge1xuICByZXR1cm4gW2Nvcyh5KSAqIHNpbih4KSwgc2luKHkpXTtcbn1cblxub3J0aG9ncmFwaGljUmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChhc2luKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKG9ydGhvZ3JhcGhpY1JhdylcbiAgICAgIC5zY2FsZSgyNDkuNSlcbiAgICAgIC5jbGlwQW5nbGUoOTAgKyBlcHNpbG9uKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/orthographic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/resample.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/resample.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cartesian_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cartesian.js */ \"../../../node_modules/d3-geo/src/cartesian.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transform.js */ \"../../../node_modules/d3-geo/src/transform.js\");\n\n\n\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(30 * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians); // cos(minimum angular distance)\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return (0,_transform_js__WEBPACK_IMPORTED_MODULE_1__.transformer)({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(a * a + b * b + c * c),\n phi2 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(c /= m),\n lambda2 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(c) - 1) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon || (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(lambda0 - lambda1) < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon ? (lambda0 + lambda1) / 2 : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = (0,_cartesian_js__WEBPACK_IMPORTED_MODULE_2__.cartesian)([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9yZXNhbXBsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBDO0FBQytCO0FBQzdCOztBQUU1QztBQUNBLHFCQUFxQiw2Q0FBRyxNQUFNLDZDQUFPLEdBQUc7O0FBRXhDLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQSxTQUFTLDBEQUFXO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCLGlCQUFpQiw4Q0FBSTtBQUNyQixvQkFBb0IsNkNBQUcsQ0FBQyw2Q0FBRyxXQUFXLDZDQUFPLElBQUksNkNBQUcsc0JBQXNCLDZDQUFPLDZCQUE2QiwrQ0FBSztBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkNBQUc7QUFDaEIsNkRBQTZEO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHVCQUF1Qix1Q0FBdUM7QUFDL0YsK0JBQStCLHFCQUFxQjtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYyx3REFBUztBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL3Jlc2FtcGxlLmpzPzQxODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjYXJ0ZXNpYW59IGZyb20gXCIuLi9jYXJ0ZXNpYW4uanNcIjtcbmltcG9ydCB7YWJzLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCByYWRpYW5zLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcn0gZnJvbSBcIi4uL3RyYW5zZm9ybS5qc1wiO1xuXG52YXIgbWF4RGVwdGggPSAxNiwgLy8gbWF4aW11bSBkZXB0aCBvZiBzdWJkaXZpc2lvblxuICAgIGNvc01pbkRpc3RhbmNlID0gY29zKDMwICogcmFkaWFucyk7IC8vIGNvcyhtaW5pbXVtIGFuZ3VsYXIgZGlzdGFuY2UpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHByb2plY3QsIGRlbHRhMikge1xuICByZXR1cm4gK2RlbHRhMiA/IHJlc2FtcGxlKHByb2plY3QsIGRlbHRhMikgOiByZXNhbXBsZU5vbmUocHJvamVjdCk7XG59XG5cbmZ1bmN0aW9uIHJlc2FtcGxlTm9uZShwcm9qZWN0KSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lcih7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIHggPSBwcm9qZWN0KHgsIHkpO1xuICAgICAgdGhpcy5zdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVzYW1wbGUocHJvamVjdCwgZGVsdGEyKSB7XG5cbiAgZnVuY3Rpb24gcmVzYW1wbGVMaW5lVG8oeDAsIHkwLCBsYW1iZGEwLCBhMCwgYjAsIGMwLCB4MSwgeTEsIGxhbWJkYTEsIGExLCBiMSwgYzEsIGRlcHRoLCBzdHJlYW0pIHtcbiAgICB2YXIgZHggPSB4MSAtIHgwLFxuICAgICAgICBkeSA9IHkxIC0geTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgaWYgKGQyID4gNCAqIGRlbHRhMiAmJiBkZXB0aC0tKSB7XG4gICAgICB2YXIgYSA9IGEwICsgYTEsXG4gICAgICAgICAgYiA9IGIwICsgYjEsXG4gICAgICAgICAgYyA9IGMwICsgYzEsXG4gICAgICAgICAgbSA9IHNxcnQoYSAqIGEgKyBiICogYiArIGMgKiBjKSxcbiAgICAgICAgICBwaGkyID0gYXNpbihjIC89IG0pLFxuICAgICAgICAgIGxhbWJkYTIgPSBhYnMoYWJzKGMpIC0gMSkgPCBlcHNpbG9uIHx8IGFicyhsYW1iZGEwIC0gbGFtYmRhMSkgPCBlcHNpbG9uID8gKGxhbWJkYTAgKyBsYW1iZGExKSAvIDIgOiBhdGFuMihiLCBhKSxcbiAgICAgICAgICBwID0gcHJvamVjdChsYW1iZGEyLCBwaGkyKSxcbiAgICAgICAgICB4MiA9IHBbMF0sXG4gICAgICAgICAgeTIgPSBwWzFdLFxuICAgICAgICAgIGR4MiA9IHgyIC0geDAsXG4gICAgICAgICAgZHkyID0geTIgLSB5MCxcbiAgICAgICAgICBkeiA9IGR5ICogZHgyIC0gZHggKiBkeTI7XG4gICAgICBpZiAoZHogKiBkeiAvIGQyID4gZGVsdGEyIC8vIHBlcnBlbmRpY3VsYXIgcHJvamVjdGVkIGRpc3RhbmNlXG4gICAgICAgICAgfHwgYWJzKChkeCAqIGR4MiArIGR5ICogZHkyKSAvIGQyIC0gMC41KSA+IDAuMyAvLyBtaWRwb2ludCBjbG9zZSB0byBhbiBlbmRcbiAgICAgICAgICB8fCBhMCAqIGExICsgYjAgKiBiMSArIGMwICogYzEgPCBjb3NNaW5EaXN0YW5jZSkgeyAvLyBhbmd1bGFyIGRpc3RhbmNlXG4gICAgICAgIHJlc2FtcGxlTGluZVRvKHgwLCB5MCwgbGFtYmRhMCwgYTAsIGIwLCBjMCwgeDIsIHkyLCBsYW1iZGEyLCBhIC89IG0sIGIgLz0gbSwgYywgZGVwdGgsIHN0cmVhbSk7XG4gICAgICAgIHN0cmVhbS5wb2ludCh4MiwgeTIpO1xuICAgICAgICByZXNhbXBsZUxpbmVUbyh4MiwgeTIsIGxhbWJkYTIsIGEsIGIsIGMsIHgxLCB5MSwgbGFtYmRhMSwgYTEsIGIxLCBjMSwgZGVwdGgsIHN0cmVhbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgbGFtYmRhMDAsIHgwMCwgeTAwLCBhMDAsIGIwMCwgYzAwLCAvLyBmaXJzdCBwb2ludFxuICAgICAgICBsYW1iZGEwLCB4MCwgeTAsIGEwLCBiMCwgYzA7IC8vIHByZXZpb3VzIHBvaW50XG5cbiAgICB2YXIgcmVzYW1wbGVTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvblN0YXJ0KCk7IHJlc2FtcGxlU3RyZWFtLmxpbmVTdGFydCA9IHJpbmdTdGFydDsgfSxcbiAgICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvbkVuZCgpOyByZXNhbXBsZVN0cmVhbS5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7IH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgeCA9IHByb2plY3QoeCwgeSk7XG4gICAgICBzdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgeDAgPSBOYU47XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgICAgIHZhciBjID0gY2FydGVzaWFuKFtsYW1iZGEsIHBoaV0pLCBwID0gcHJvamVjdChsYW1iZGEsIHBoaSk7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwID0gcFswXSwgeTAgPSBwWzFdLCBsYW1iZGEwID0gbGFtYmRhLCBhMCA9IGNbMF0sIGIwID0gY1sxXSwgYzAgPSBjWzJdLCBtYXhEZXB0aCwgc3RyZWFtKTtcbiAgICAgIHN0cmVhbS5wb2ludCh4MCwgeTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IHBvaW50O1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByaW5nU3RhcnQoKSB7XG4gICAgICBsaW5lU3RhcnQoKTtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gcmluZ1BvaW50O1xuICAgICAgcmVzYW1wbGVTdHJlYW0ubGluZUVuZCA9IHJpbmdFbmQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gICAgICBsaW5lUG9pbnQobGFtYmRhMDAgPSBsYW1iZGEsIHBoaSksIHgwMCA9IHgwLCB5MDAgPSB5MCwgYTAwID0gYTAsIGIwMCA9IGIwLCBjMDAgPSBjMDtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwMCwgeTAwLCBsYW1iZGEwMCwgYTAwLCBiMDAsIGMwMCwgbWF4RGVwdGgsIHN0cmVhbSk7XG4gICAgICByZXNhbXBsZVN0cmVhbS5saW5lRW5kID0gbGluZUVuZDtcbiAgICAgIGxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzYW1wbGVTdHJlYW07XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/resample.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/stereographic.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/stereographic.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"stereographicRaw\": () => (/* binding */ stereographicRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _azimuthal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./azimuthal.js */ \"../../../node_modules/d3-geo/src/projection/azimuthal.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-geo/src/projection/index.js\");\n\n\n\n\nfunction stereographicRaw(x, y) {\n var cy = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(y), k = 1 + (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(x) * cy;\n return [cy * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(x) / k, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(y) / k];\n}\n\nstereographicRaw.invert = (0,_azimuthal_js__WEBPACK_IMPORTED_MODULE_1__.azimuthalInvert)(function(z) {\n return 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan)(z);\n});\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return (0,_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9zdGVyZW9ncmFwaGljLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTBDO0FBQ0s7QUFDWDs7QUFFN0I7QUFDUCxXQUFXLDZDQUFHLGFBQWEsNkNBQUc7QUFDOUIsZUFBZSw2Q0FBRyxTQUFTLDZDQUFHO0FBQzlCOztBQUVBLDBCQUEwQiw4REFBZTtBQUN6QyxhQUFhLDhDQUFJO0FBQ2pCLENBQUM7O0FBRUQsNkJBQWUsc0NBQVc7QUFDMUIsU0FBUyxxREFBVTtBQUNuQjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9zdGVyZW9ncmFwaGljLmpzPzNmMjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBjb3MsIHNpbn0gZnJvbSBcIi4uL21hdGguanNcIjtcbmltcG9ydCB7YXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWwuanNcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGVyZW9ncmFwaGljUmF3KHgsIHkpIHtcbiAgdmFyIGN5ID0gY29zKHkpLCBrID0gMSArIGNvcyh4KSAqIGN5O1xuICByZXR1cm4gW2N5ICogc2luKHgpIC8gaywgc2luKHkpIC8ga107XG59XG5cbnN0ZXJlb2dyYXBoaWNSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGZ1bmN0aW9uKHopIHtcbiAgcmV0dXJuIDIgKiBhdGFuKHopO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihzdGVyZW9ncmFwaGljUmF3KVxuICAgICAgLnNjYWxlKDI1MClcbiAgICAgIC5jbGlwQW5nbGUoMTQyKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/stereographic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/projection/transverseMercator.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/d3-geo/src/projection/transverseMercator.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"transverseMercatorRaw\": () => (/* binding */ transverseMercatorRaw)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n/* harmony import */ var _mercator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mercator.js */ \"../../../node_modules/d3-geo/src/projection/mercator.js\");\n\n\n\nfunction transverseMercatorRaw(lambda, phi) {\n return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.log)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.tan)((_math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.exp)(x)) - _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi];\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var m = (0,_mercator_js__WEBPACK_IMPORTED_MODULE_1__.mercatorProjection)(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi90cmFuc3ZlcnNlTWVyY2F0b3IuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF1RDtBQUNOOztBQUUxQztBQUNQLFVBQVUsNkNBQUcsQ0FBQyw2Q0FBRyxFQUFFLDRDQUFNO0FBQ3pCOztBQUVBO0FBQ0Esa0JBQWtCLDhDQUFJLENBQUMsNkNBQUcsT0FBTyw0Q0FBTTtBQUN2Qzs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQixVQUFVLGdFQUFrQjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vdHJhbnN2ZXJzZU1lcmNhdG9yLmpzPzQ2OWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthdGFuLCBleHAsIGhhbGZQaSwgbG9nLCB0YW59IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5pbXBvcnQge21lcmNhdG9yUHJvamVjdGlvbn0gZnJvbSBcIi4vbWVyY2F0b3IuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zdmVyc2VNZXJjYXRvclJhdyhsYW1iZGEsIHBoaSkge1xuICByZXR1cm4gW2xvZyh0YW4oKGhhbGZQaSArIHBoaSkgLyAyKSksIC1sYW1iZGFdO1xufVxuXG50cmFuc3ZlcnNlTWVyY2F0b3JSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gWy15LCAyICogYXRhbihleHAoeCkpIC0gaGFsZlBpXTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbSA9IG1lcmNhdG9yUHJvamVjdGlvbih0cmFuc3ZlcnNlTWVyY2F0b3JSYXcpLFxuICAgICAgY2VudGVyID0gbS5jZW50ZXIsXG4gICAgICByb3RhdGUgPSBtLnJvdGF0ZTtcblxuICBtLmNlbnRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGNlbnRlcihbLV9bMV0sIF9bMF1dKSA6IChfID0gY2VudGVyKCksIFtfWzFdLCAtX1swXV0pO1xuICB9O1xuXG4gIG0ucm90YXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gcm90YXRlKFtfWzBdLCBfWzFdLCBfLmxlbmd0aCA+IDIgPyBfWzJdICsgOTAgOiA5MF0pIDogKF8gPSByb3RhdGUoKSwgW19bMF0sIF9bMV0sIF9bMl0gLSA5MF0pO1xuICB9O1xuXG4gIHJldHVybiByb3RhdGUoWzAsIDAsIDkwXSlcbiAgICAgIC5zY2FsZSgxNTkuMTU1KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/projection/transverseMercator.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/rotation.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/rotation.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"rotateRadians\": () => (/* binding */ rotateRadians)\n/* harmony export */ });\n/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compose.js */ \"../../../node_modules/d3-geo/src/compose.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-geo/src/math.js\");\n\n\n\nfunction rotationIdentity(lambda, phi) {\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) lambda -= Math.round(lambda / _math_js__WEBPACK_IMPORTED_MODULE_0__.tau) * _math_js__WEBPACK_IMPORTED_MODULE_0__.tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nfunction rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= _math_js__WEBPACK_IMPORTED_MODULE_0__.tau) ? (deltaPhi || deltaGamma ? (0,_compose_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(lambda) > _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) lambda -= Math.round(lambda / _math_js__WEBPACK_IMPORTED_MODULE_0__.tau) * _math_js__WEBPACK_IMPORTED_MODULE_0__.tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(deltaPhi),\n sinDeltaPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(deltaPhi),\n cosDeltaGamma = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(deltaGamma),\n sinDeltaGamma = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi),\n x = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(lambda) * cosPhi,\n y = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(lambda) * cosPhi,\n z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(phi),\n x = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(lambda) * cosPhi,\n y = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(lambda) * cosPhi,\n z = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(rotate) {\n rotate = rotateRadians(rotate[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, rotate[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, rotate.length > 2 ? rotate[2] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians);\n return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians, coordinates[1] * _math_js__WEBPACK_IMPORTED_MODULE_0__.radians);\n return coordinates[0] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, coordinates[1] *= _math_js__WEBPACK_IMPORTED_MODULE_0__.degrees, coordinates;\n };\n\n return forward;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcm90YXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFtQztBQUM2Qzs7QUFFaEY7QUFDQSxNQUFNLDZDQUFHLFdBQVcsd0NBQUUsZ0NBQWdDLHlDQUFHLElBQUkseUNBQUc7QUFDaEU7QUFDQTs7QUFFQTs7QUFFTztBQUNQLHlCQUF5Qix5Q0FBRyw4QkFBOEIsdURBQU87QUFDakU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSw2Q0FBRyxXQUFXLHdDQUFFLGdDQUFnQyx5Q0FBRyxJQUFJLHlDQUFHO0FBQ2xFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDZDQUFHO0FBQ3ZCLG9CQUFvQiw2Q0FBRztBQUN2QixzQkFBc0IsNkNBQUc7QUFDekIsc0JBQXNCLDZDQUFHOztBQUV6QjtBQUNBLGlCQUFpQiw2Q0FBRztBQUNwQixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZjtBQUNBO0FBQ0EsTUFBTSwrQ0FBSztBQUNYLE1BQU0sOENBQUk7QUFDVjtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLDZDQUFHO0FBQ3BCLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmO0FBQ0E7QUFDQSxNQUFNLCtDQUFLO0FBQ1gsTUFBTSw4Q0FBSTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QixxQ0FBcUMsNkNBQU8sY0FBYyw2Q0FBTyxrQ0FBa0MsNkNBQU87O0FBRTFHO0FBQ0EsMENBQTBDLDZDQUFPLG1CQUFtQiw2Q0FBTztBQUMzRSw2QkFBNkIsNkNBQU8sb0JBQW9CLDZDQUFPO0FBQy9EOztBQUVBO0FBQ0EsaURBQWlELDZDQUFPLG1CQUFtQiw2Q0FBTztBQUNsRiw2QkFBNkIsNkNBQU8sb0JBQW9CLDZDQUFPO0FBQy9EOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcm90YXRpb24uanM/NmU3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tcG9zZSBmcm9tIFwiLi9jb21wb3NlLmpzXCI7XG5pbXBvcnQge2FicywgYXNpbiwgYXRhbjIsIGNvcywgZGVncmVlcywgcGksIHJhZGlhbnMsIHNpbiwgdGF1fSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHJvdGF0aW9uSWRlbnRpdHkobGFtYmRhLCBwaGkpIHtcbiAgaWYgKGFicyhsYW1iZGEpID4gcGkpIGxhbWJkYSAtPSBNYXRoLnJvdW5kKGxhbWJkYSAvIHRhdSkgKiB0YXU7XG4gIHJldHVybiBbbGFtYmRhLCBwaGldO1xufVxuXG5yb3RhdGlvbklkZW50aXR5LmludmVydCA9IHJvdGF0aW9uSWRlbnRpdHk7XG5cbmV4cG9ydCBmdW5jdGlvbiByb3RhdGVSYWRpYW5zKGRlbHRhTGFtYmRhLCBkZWx0YVBoaSwgZGVsdGFHYW1tYSkge1xuICByZXR1cm4gKGRlbHRhTGFtYmRhICU9IHRhdSkgPyAoZGVsdGFQaGkgfHwgZGVsdGFHYW1tYSA/IGNvbXBvc2Uocm90YXRpb25MYW1iZGEoZGVsdGFMYW1iZGEpLCByb3RhdGlvblBoaUdhbW1hKGRlbHRhUGhpLCBkZWx0YUdhbW1hKSlcbiAgICA6IHJvdGF0aW9uTGFtYmRhKGRlbHRhTGFtYmRhKSlcbiAgICA6IChkZWx0YVBoaSB8fCBkZWx0YUdhbW1hID8gcm90YXRpb25QaGlHYW1tYShkZWx0YVBoaSwgZGVsdGFHYW1tYSlcbiAgICA6IHJvdGF0aW9uSWRlbnRpdHkpO1xufVxuXG5mdW5jdGlvbiBmb3J3YXJkUm90YXRpb25MYW1iZGEoZGVsdGFMYW1iZGEpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGxhbWJkYSwgcGhpKSB7XG4gICAgbGFtYmRhICs9IGRlbHRhTGFtYmRhO1xuICAgIGlmIChhYnMobGFtYmRhKSA+IHBpKSBsYW1iZGEgLT0gTWF0aC5yb3VuZChsYW1iZGEgLyB0YXUpICogdGF1O1xuICAgIHJldHVybiBbbGFtYmRhLCBwaGldO1xuICB9O1xufVxuXG5mdW5jdGlvbiByb3RhdGlvbkxhbWJkYShkZWx0YUxhbWJkYSkge1xuICB2YXIgcm90YXRpb24gPSBmb3J3YXJkUm90YXRpb25MYW1iZGEoZGVsdGFMYW1iZGEpO1xuICByb3RhdGlvbi5pbnZlcnQgPSBmb3J3YXJkUm90YXRpb25MYW1iZGEoLWRlbHRhTGFtYmRhKTtcbiAgcmV0dXJuIHJvdGF0aW9uO1xufVxuXG5mdW5jdGlvbiByb3RhdGlvblBoaUdhbW1hKGRlbHRhUGhpLCBkZWx0YUdhbW1hKSB7XG4gIHZhciBjb3NEZWx0YVBoaSA9IGNvcyhkZWx0YVBoaSksXG4gICAgICBzaW5EZWx0YVBoaSA9IHNpbihkZWx0YVBoaSksXG4gICAgICBjb3NEZWx0YUdhbW1hID0gY29zKGRlbHRhR2FtbWEpLFxuICAgICAgc2luRGVsdGFHYW1tYSA9IHNpbihkZWx0YUdhbW1hKTtcblxuICBmdW5jdGlvbiByb3RhdGlvbihsYW1iZGEsIHBoaSkge1xuICAgIHZhciBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgICAgeCA9IGNvcyhsYW1iZGEpICogY29zUGhpLFxuICAgICAgICB5ID0gc2luKGxhbWJkYSkgKiBjb3NQaGksXG4gICAgICAgIHogPSBzaW4ocGhpKSxcbiAgICAgICAgayA9IHogKiBjb3NEZWx0YVBoaSArIHggKiBzaW5EZWx0YVBoaTtcbiAgICByZXR1cm4gW1xuICAgICAgYXRhbjIoeSAqIGNvc0RlbHRhR2FtbWEgLSBrICogc2luRGVsdGFHYW1tYSwgeCAqIGNvc0RlbHRhUGhpIC0geiAqIHNpbkRlbHRhUGhpKSxcbiAgICAgIGFzaW4oayAqIGNvc0RlbHRhR2FtbWEgKyB5ICogc2luRGVsdGFHYW1tYSlcbiAgICBdO1xuICB9XG5cbiAgcm90YXRpb24uaW52ZXJ0ID0gZnVuY3Rpb24obGFtYmRhLCBwaGkpIHtcbiAgICB2YXIgY29zUGhpID0gY29zKHBoaSksXG4gICAgICAgIHggPSBjb3MobGFtYmRhKSAqIGNvc1BoaSxcbiAgICAgICAgeSA9IHNpbihsYW1iZGEpICogY29zUGhpLFxuICAgICAgICB6ID0gc2luKHBoaSksXG4gICAgICAgIGsgPSB6ICogY29zRGVsdGFHYW1tYSAtIHkgKiBzaW5EZWx0YUdhbW1hO1xuICAgIHJldHVybiBbXG4gICAgICBhdGFuMih5ICogY29zRGVsdGFHYW1tYSArIHogKiBzaW5EZWx0YUdhbW1hLCB4ICogY29zRGVsdGFQaGkgKyBrICogc2luRGVsdGFQaGkpLFxuICAgICAgYXNpbihrICogY29zRGVsdGFQaGkgLSB4ICogc2luRGVsdGFQaGkpXG4gICAgXTtcbiAgfTtcblxuICByZXR1cm4gcm90YXRpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHJvdGF0ZSkge1xuICByb3RhdGUgPSByb3RhdGVSYWRpYW5zKHJvdGF0ZVswXSAqIHJhZGlhbnMsIHJvdGF0ZVsxXSAqIHJhZGlhbnMsIHJvdGF0ZS5sZW5ndGggPiAyID8gcm90YXRlWzJdICogcmFkaWFucyA6IDApO1xuXG4gIGZ1bmN0aW9uIGZvcndhcmQoY29vcmRpbmF0ZXMpIHtcbiAgICBjb29yZGluYXRlcyA9IHJvdGF0ZShjb29yZGluYXRlc1swXSAqIHJhZGlhbnMsIGNvb3JkaW5hdGVzWzFdICogcmFkaWFucyk7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzWzBdICo9IGRlZ3JlZXMsIGNvb3JkaW5hdGVzWzFdICo9IGRlZ3JlZXMsIGNvb3JkaW5hdGVzO1xuICB9XG5cbiAgZm9yd2FyZC5pbnZlcnQgPSBmdW5jdGlvbihjb29yZGluYXRlcykge1xuICAgIGNvb3JkaW5hdGVzID0gcm90YXRlLmludmVydChjb29yZGluYXRlc1swXSAqIHJhZGlhbnMsIGNvb3JkaW5hdGVzWzFdICogcmFkaWFucyk7XG4gICAgcmV0dXJuIGNvb3JkaW5hdGVzWzBdICo9IGRlZ3JlZXMsIGNvb3JkaW5hdGVzWzFdICo9IGRlZ3JlZXMsIGNvb3JkaW5hdGVzO1xuICB9O1xuXG4gIHJldHVybiBmb3J3YXJkO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/rotation.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/stream.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-geo/src/stream.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvc3RyZWFtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9zdHJlYW0uanM/ZDAxMSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzdHJlYW1HZW9tZXRyeShnZW9tZXRyeSwgc3RyZWFtKSB7XG4gIGlmIChnZW9tZXRyeSAmJiBzdHJlYW1HZW9tZXRyeVR5cGUuaGFzT3duUHJvcGVydHkoZ2VvbWV0cnkudHlwZSkpIHtcbiAgICBzdHJlYW1HZW9tZXRyeVR5cGVbZ2VvbWV0cnkudHlwZV0oZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn1cblxudmFyIHN0cmVhbU9iamVjdFR5cGUgPSB7XG4gIEZlYXR1cmU6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtR2VvbWV0cnkob2JqZWN0Lmdlb21ldHJ5LCBzdHJlYW0pO1xuICB9LFxuICBGZWF0dXJlQ29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgZmVhdHVyZXMgPSBvYmplY3QuZmVhdHVyZXMsIGkgPSAtMSwgbiA9IGZlYXR1cmVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtR2VvbWV0cnkoZmVhdHVyZXNbaV0uZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn07XG5cbnZhciBzdHJlYW1HZW9tZXRyeVR5cGUgPSB7XG4gIFNwaGVyZTogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW0uc3BoZXJlKCk7XG4gIH0sXG4gIFBvaW50OiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIG9iamVjdCA9IG9iamVjdC5jb29yZGluYXRlcztcbiAgICBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIE11bHRpUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIG9iamVjdCA9IGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIExpbmVTdHJpbmc6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtTGluZShvYmplY3QuY29vcmRpbmF0ZXMsIHN0cmVhbSwgMCk7XG4gIH0sXG4gIE11bHRpTGluZVN0cmluZzogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAwKTtcbiAgfSxcbiAgUG9seWdvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW1Qb2x5Z29uKG9iamVjdC5jb29yZGluYXRlcywgc3RyZWFtKTtcbiAgfSxcbiAgTXVsdGlQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHZhciBjb29yZGluYXRlcyA9IG9iamVjdC5jb29yZGluYXRlcywgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0pO1xuICB9LFxuICBHZW9tZXRyeUNvbGxlY3Rpb246IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGdlb21ldHJpZXMgPSBvYmplY3QuZ2VvbWV0cmllcywgaSA9IC0xLCBuID0gZ2VvbWV0cmllcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIHN0cmVhbUdlb21ldHJ5KGdlb21ldHJpZXNbaV0sIHN0cmVhbSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHN0cmVhbUxpbmUoY29vcmRpbmF0ZXMsIHN0cmVhbSwgY2xvc2VkKSB7XG4gIHZhciBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGggLSBjbG9zZWQsIGNvb3JkaW5hdGU7XG4gIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgd2hpbGUgKCsraSA8IG4pIGNvb3JkaW5hdGUgPSBjb29yZGluYXRlc1tpXSwgc3RyZWFtLnBvaW50KGNvb3JkaW5hdGVbMF0sIGNvb3JkaW5hdGVbMV0sIGNvb3JkaW5hdGVbMl0pO1xuICBzdHJlYW0ubGluZUVuZCgpO1xufVxuXG5mdW5jdGlvbiBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzLCBzdHJlYW0pIHtcbiAgdmFyIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgc3RyZWFtLnBvbHlnb25TdGFydCgpO1xuICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAxKTtcbiAgc3RyZWFtLnBvbHlnb25FbmQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgaWYgKG9iamVjdCAmJiBzdHJlYW1PYmplY3RUeXBlLmhhc093blByb3BlcnR5KG9iamVjdC50eXBlKSkge1xuICAgIHN0cmVhbU9iamVjdFR5cGVbb2JqZWN0LnR5cGVdKG9iamVjdCwgc3RyZWFtKTtcbiAgfSBlbHNlIHtcbiAgICBzdHJlYW1HZW9tZXRyeShvYmplY3QsIHN0cmVhbSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/stream.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-geo/src/transform.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-geo/src/transform.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"transformer\": () => (/* binding */ transformer)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nfunction transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvdHJhbnNmb3JtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLDBCQUEwQjtBQUNwRCx1QkFBdUIsdUJBQXVCO0FBQzlDLDBCQUEwQiwwQkFBMEI7QUFDcEQsd0JBQXdCLHdCQUF3QjtBQUNoRCw2QkFBNkIsNkJBQTZCO0FBQzFELDJCQUEyQjtBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy90cmFuc2Zvcm0uanM/NzJiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtZXRob2RzKSB7XG4gIHJldHVybiB7XG4gICAgc3RyZWFtOiB0cmFuc2Zvcm1lcihtZXRob2RzKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtZXIobWV0aG9kcykge1xuICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgdmFyIHMgPSBuZXcgVHJhbnNmb3JtU3RyZWFtO1xuICAgIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSBzW2tleV0gPSBtZXRob2RzW2tleV07XG4gICAgcy5zdHJlYW0gPSBzdHJlYW07XG4gICAgcmV0dXJuIHM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybVN0cmVhbSgpIHt9XG5cblRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2Zvcm1TdHJlYW0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7IHRoaXMuc3RyZWFtLnBvaW50KHgsIHkpOyB9LFxuICBzcGhlcmU6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5zcGhlcmUoKTsgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ubGluZVN0YXJ0KCk7IH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5saW5lRW5kKCk7IH0sXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpOyB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpOyB9XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-geo/src/transform.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/accessors.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/accessors.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"optional\": () => (/* binding */ optional),\n/* harmony export */ \"required\": () => (/* binding */ required)\n/* harmony export */ });\nfunction optional(f) {\n return f == null ? null : required(f);\n}\n\nfunction required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvYWNjZXNzb3JzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2FjY2Vzc29ycy5qcz8wZWM4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbChmKSB7XG4gIHJldHVybiBmID09IG51bGwgPyBudWxsIDogcmVxdWlyZWQoZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChmKSB7XG4gIGlmICh0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiBmO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/accessors.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/array.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/array.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"shuffle\": () => (/* binding */ shuffle)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nfunction shuffle(array, random) {\n let m = array.length,\n t,\n i;\n\n while (m) {\n i = random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvYXJyYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2FycmF5LmpzPzY1ZDIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgXCJsZW5ndGhcIiBpbiB4XG4gICAgPyB4IC8vIEFycmF5LCBUeXBlZEFycmF5LCBOb2RlTGlzdCwgYXJyYXktbGlrZVxuICAgIDogQXJyYXkuZnJvbSh4KTsgLy8gTWFwLCBTZXQsIGl0ZXJhYmxlLCBzdHJpbmcsIG9yIGFueXRoaW5nIGVsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNodWZmbGUoYXJyYXksIHJhbmRvbSkge1xuICBsZXQgbSA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHQsXG4gICAgICBpO1xuXG4gIHdoaWxlIChtKSB7XG4gICAgaSA9IHJhbmRvbSgpICogbS0tIHwgMDtcbiAgICB0ID0gYXJyYXlbbV07XG4gICAgYXJyYXlbbV0gPSBhcnJheVtpXTtcbiAgICBhcnJheVtpXSA9IHQ7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/cluster.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/cluster.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvY2x1c3Rlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2NsdXN0ZXIuanM/NmNhNCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBkZWZhdWx0U2VwYXJhdGlvbihhLCBiKSB7XG4gIHJldHVybiBhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMjtcbn1cblxuZnVuY3Rpb24gbWVhblgoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGNoaWxkcmVuLnJlZHVjZShtZWFuWFJlZHVjZSwgMCkgLyBjaGlsZHJlbi5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIG1lYW5YUmVkdWNlKHgsIGMpIHtcbiAgcmV0dXJuIHggKyBjLng7XG59XG5cbmZ1bmN0aW9uIG1heFkoY2hpbGRyZW4pIHtcbiAgcmV0dXJuIDEgKyBjaGlsZHJlbi5yZWR1Y2UobWF4WVJlZHVjZSwgMCk7XG59XG5cbmZ1bmN0aW9uIG1heFlSZWR1Y2UoeSwgYykge1xuICByZXR1cm4gTWF0aC5tYXgoeSwgYy55KTtcbn1cblxuZnVuY3Rpb24gbGVhZkxlZnQobm9kZSkge1xuICB2YXIgY2hpbGRyZW47XG4gIHdoaWxlIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIG5vZGUgPSBjaGlsZHJlblswXTtcbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIGxlYWZSaWdodChub2RlKSB7XG4gIHZhciBjaGlsZHJlbjtcbiAgd2hpbGUgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikgbm9kZSA9IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzZXBhcmF0aW9uID0gZGVmYXVsdFNlcGFyYXRpb24sXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBub2RlU2l6ZSA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGNsdXN0ZXIocm9vdCkge1xuICAgIHZhciBwcmV2aW91c05vZGUsXG4gICAgICAgIHggPSAwO1xuXG4gICAgLy8gRmlyc3Qgd2FsaywgY29tcHV0aW5nIHRoZSBpbml0aWFsIHggJiB5IHZhbHVlcy5cbiAgICByb290LmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIG5vZGUueCA9IG1lYW5YKGNoaWxkcmVuKTtcbiAgICAgICAgbm9kZS55ID0gbWF4WShjaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnggPSBwcmV2aW91c05vZGUgPyB4ICs9IHNlcGFyYXRpb24obm9kZSwgcHJldmlvdXNOb2RlKSA6IDA7XG4gICAgICAgIG5vZGUueSA9IDA7XG4gICAgICAgIHByZXZpb3VzTm9kZSA9IG5vZGU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgbGVmdCA9IGxlYWZMZWZ0KHJvb3QpLFxuICAgICAgICByaWdodCA9IGxlYWZSaWdodChyb290KSxcbiAgICAgICAgeDAgPSBsZWZ0LnggLSBzZXBhcmF0aW9uKGxlZnQsIHJpZ2h0KSAvIDIsXG4gICAgICAgIHgxID0gcmlnaHQueCArIHNlcGFyYXRpb24ocmlnaHQsIGxlZnQpIC8gMjtcblxuICAgIC8vIFNlY29uZCB3YWxrLCBub3JtYWxpemluZyB4ICYgeSB0byB0aGUgZGVzaXJlZCBzaXplLlxuICAgIHJldHVybiByb290LmVhY2hBZnRlcihub2RlU2l6ZSA/IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIG5vZGUueCA9IChub2RlLnggLSByb290LngpICogZHg7XG4gICAgICBub2RlLnkgPSAocm9vdC55IC0gbm9kZS55KSAqIGR5O1xuICAgIH0gOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBub2RlLnggPSAobm9kZS54IC0geDApIC8gKHgxIC0geDApICogZHg7XG4gICAgICBub2RlLnkgPSAoMSAtIChyb290LnkgPyBub2RlLnkgLyByb290LnkgOiAxKSkgKiBkeTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsdXN0ZXIuc2VwYXJhdGlvbiA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzZXBhcmF0aW9uID0geCwgY2x1c3RlcikgOiBzZXBhcmF0aW9uO1xuICB9O1xuXG4gIGNsdXN0ZXIuc2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IGZhbHNlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCBjbHVzdGVyKSA6IChub2RlU2l6ZSA/IG51bGwgOiBbZHgsIGR5XSk7XG4gIH07XG5cbiAgY2x1c3Rlci5ub2RlU2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IHRydWUsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIGNsdXN0ZXIpIDogKG5vZGVTaXplID8gW2R4LCBkeV0gOiBudWxsKTtcbiAgfTtcblxuICByZXR1cm4gY2x1c3Rlcjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/cluster.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/constant.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/constant.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"constantZero\": () => (/* binding */ constantZero),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction constantZero() {\n return 0;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvY29uc3RhbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvY29uc3RhbnQuanM/YzIyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29uc3RhbnRaZXJvKCkge1xuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2FuY2VzdG9ycy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9hbmNlc3RvcnMuanM/MmZiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXTtcbiAgd2hpbGUgKG5vZGUgPSBub2RlLnBhcmVudCkge1xuICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/count.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/count.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this.eachAfter(count);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2NvdW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2NvdW50LmpzPzFjMWQiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gY291bnQobm9kZSkge1xuICB2YXIgc3VtID0gMCxcbiAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgIGkgPSBjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGg7XG4gIGlmICghaSkgc3VtID0gMTtcbiAgZWxzZSB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgbm9kZS52YWx1ZSA9IHN1bTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihjb3VudCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/count.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return Array.from(this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2Rlc2NlbmRhbnRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9kZXNjZW5kYW50cy5qcz84NjY4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/each.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/each.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2guanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaC5qcz8yOTdmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGF0KSB7XG4gIGxldCBpbmRleCA9IC0xO1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcykge1xuICAgIGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/each.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hBZnRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hBZnRlci5qcz81MjJhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGF0KSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG4sIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSk7XG4gICAgaWYgKGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChpID0gMCwgbiA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkcmVuW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgd2hpbGUgKG5vZGUgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2suY2FsbCh0aGF0LCBub2RlLCArK2luZGV4LCB0aGlzKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hCZWZvcmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLFFBQVE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoQmVmb3JlLmpzPzIxOTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXSwgY2hpbGRyZW4sIGksIGluZGV4ID0gLTE7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBjYWxsYmFjay5jYWxsKHRoYXQsIG5vZGUsICsraW5kZXgsIHRoaXMpO1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoaSA9IGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/find.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/find.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2ZpbmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9maW5kLmpzPzExYmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIHRoYXQpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzKSB7XG4gICAgaWYgKGNhbGxiYWNrLmNhbGwodGhhdCwgbm9kZSwgKytpbmRleCwgdGhpcykpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/find.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Node\": () => (/* binding */ Node),\n/* harmony export */ \"computeHeight\": () => (/* binding */ computeHeight),\n/* harmony export */ \"default\": () => (/* binding */ hierarchy)\n/* harmony export */ });\n/* harmony import */ var _count_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./count.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/count.js\");\n/* harmony import */ var _each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./each.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/each.js\");\n/* harmony import */ var _eachBefore_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eachBefore.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\");\n/* harmony import */ var _eachAfter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./eachAfter.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./find.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/find.js\");\n/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sum.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/sum.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/sort.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/path.js\");\n/* harmony import */ var _ancestors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ancestors.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/ancestors.js\");\n/* harmony import */ var _descendants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./descendants.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/descendants.js\");\n/* harmony import */ var _leaves_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./leaves.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js\");\n/* harmony import */ var _links_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./links.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/links.js\");\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./iterator.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nfunction computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nfunction Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: _count_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n each: _each_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n eachAfter: _eachAfter_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n eachBefore: _eachBefore_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n find: _find_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n sum: _sum_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n sort: _sort_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n path: _path_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ancestors: _ancestors_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n descendants: _descendants_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n leaves: _leaves_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n links: _links_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n copy: node_copy,\n [Symbol.iterator]: _iterator_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBb0M7QUFDRjtBQUNZO0FBQ0Y7QUFDVjtBQUNGO0FBQ0U7QUFDQTtBQUNVO0FBQ0k7QUFDVjtBQUNGO0FBQ007O0FBRTNCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLFFBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsaURBQVU7QUFDbkIsUUFBUSxnREFBUztBQUNqQixhQUFhLHFEQUFjO0FBQzNCLGNBQWMsc0RBQWU7QUFDN0IsUUFBUSxnREFBUztBQUNqQixPQUFPLCtDQUFRO0FBQ2YsUUFBUSxnREFBUztBQUNqQixRQUFRLGdEQUFTO0FBQ2pCLGFBQWEscURBQWM7QUFDM0IsZUFBZSx1REFBZ0I7QUFDL0IsVUFBVSxtREFBVztBQUNyQixTQUFTLGtEQUFVO0FBQ25CO0FBQ0EscUJBQXFCLHFEQUFhO0FBQ2xDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9pbmRleC5qcz85NzIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub2RlX2NvdW50IGZyb20gXCIuL2NvdW50LmpzXCI7XG5pbXBvcnQgbm9kZV9lYWNoIGZyb20gXCIuL2VhY2guanNcIjtcbmltcG9ydCBub2RlX2VhY2hCZWZvcmUgZnJvbSBcIi4vZWFjaEJlZm9yZS5qc1wiO1xuaW1wb3J0IG5vZGVfZWFjaEFmdGVyIGZyb20gXCIuL2VhY2hBZnRlci5qc1wiO1xuaW1wb3J0IG5vZGVfZmluZCBmcm9tIFwiLi9maW5kLmpzXCI7XG5pbXBvcnQgbm9kZV9zdW0gZnJvbSBcIi4vc3VtLmpzXCI7XG5pbXBvcnQgbm9kZV9zb3J0IGZyb20gXCIuL3NvcnQuanNcIjtcbmltcG9ydCBub2RlX3BhdGggZnJvbSBcIi4vcGF0aC5qc1wiO1xuaW1wb3J0IG5vZGVfYW5jZXN0b3JzIGZyb20gXCIuL2FuY2VzdG9ycy5qc1wiO1xuaW1wb3J0IG5vZGVfZGVzY2VuZGFudHMgZnJvbSBcIi4vZGVzY2VuZGFudHMuanNcIjtcbmltcG9ydCBub2RlX2xlYXZlcyBmcm9tIFwiLi9sZWF2ZXMuanNcIjtcbmltcG9ydCBub2RlX2xpbmtzIGZyb20gXCIuL2xpbmtzLmpzXCI7XG5pbXBvcnQgbm9kZV9pdGVyYXRvciBmcm9tIFwiLi9pdGVyYXRvci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoaWVyYXJjaHkoZGF0YSwgY2hpbGRyZW4pIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICBkYXRhID0gW3VuZGVmaW5lZCwgZGF0YV07XG4gICAgaWYgKGNoaWxkcmVuID09PSB1bmRlZmluZWQpIGNoaWxkcmVuID0gbWFwQ2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRyZW4gPT09IHVuZGVmaW5lZCkge1xuICAgIGNoaWxkcmVuID0gb2JqZWN0Q2hpbGRyZW47XG4gIH1cblxuICB2YXIgcm9vdCA9IG5ldyBOb2RlKGRhdGEpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVzID0gW3Jvb3RdLFxuICAgICAgY2hpbGQsXG4gICAgICBjaGlsZHMsXG4gICAgICBpLFxuICAgICAgbjtcblxuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgaWYgKChjaGlsZHMgPSBjaGlsZHJlbihub2RlLmRhdGEpKSAmJiAobiA9IChjaGlsZHMgPSBBcnJheS5mcm9tKGNoaWxkcykpLmxlbmd0aCkpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBjaGlsZHM7XG4gICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZCA9IGNoaWxkc1tpXSA9IG5ldyBOb2RlKGNoaWxkc1tpXSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgICBjaGlsZC5kZXB0aCA9IG5vZGUuZGVwdGggKyAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb290LmVhY2hCZWZvcmUoY29tcHV0ZUhlaWdodCk7XG59XG5cbmZ1bmN0aW9uIG5vZGVfY29weSgpIHtcbiAgcmV0dXJuIGhpZXJhcmNoeSh0aGlzKS5lYWNoQmVmb3JlKGNvcHlEYXRhKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0Q2hpbGRyZW4oZCkge1xuICByZXR1cm4gZC5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oZCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkKSA/IGRbMV0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBjb3B5RGF0YShub2RlKSB7XG4gIGlmIChub2RlLmRhdGEudmFsdWUgIT09IHVuZGVmaW5lZCkgbm9kZS52YWx1ZSA9IG5vZGUuZGF0YS52YWx1ZTtcbiAgbm9kZS5kYXRhID0gbm9kZS5kYXRhLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlSGVpZ2h0KG5vZGUpIHtcbiAgdmFyIGhlaWdodCA9IDA7XG4gIGRvIG5vZGUuaGVpZ2h0ID0gaGVpZ2h0O1xuICB3aGlsZSAoKG5vZGUgPSBub2RlLnBhcmVudCkgJiYgKG5vZGUuaGVpZ2h0IDwgKytoZWlnaHQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE5vZGUoZGF0YSkge1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmRlcHRoID1cbiAgdGhpcy5oZWlnaHQgPSAwO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG59XG5cbk5vZGUucHJvdG90eXBlID0gaGllcmFyY2h5LnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE5vZGUsXG4gIGNvdW50OiBub2RlX2NvdW50LFxuICBlYWNoOiBub2RlX2VhY2gsXG4gIGVhY2hBZnRlcjogbm9kZV9lYWNoQWZ0ZXIsXG4gIGVhY2hCZWZvcmU6IG5vZGVfZWFjaEJlZm9yZSxcbiAgZmluZDogbm9kZV9maW5kLFxuICBzdW06IG5vZGVfc3VtLFxuICBzb3J0OiBub2RlX3NvcnQsXG4gIHBhdGg6IG5vZGVfcGF0aCxcbiAgYW5jZXN0b3JzOiBub2RlX2FuY2VzdG9ycyxcbiAgZGVzY2VuZGFudHM6IG5vZGVfZGVzY2VuZGFudHMsXG4gIGxlYXZlczogbm9kZV9sZWF2ZXMsXG4gIGxpbmtzOiBub2RlX2xpbmtzLFxuICBjb3B5OiBub2RlX2NvcHksXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBub2RlX2l0ZXJhdG9yXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function* __WEBPACK_DEFAULT_EXPORT__() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2l0ZXJhdG9yLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSx1Q0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsT0FBTztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvaXRlcmF0b3IuanM/YTRlYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIHZhciBub2RlID0gdGhpcywgY3VycmVudCwgbmV4dCA9IFtub2RlXSwgY2hpbGRyZW4sIGksIG47XG4gIGRvIHtcbiAgICBjdXJyZW50ID0gbmV4dC5yZXZlcnNlKCksIG5leHQgPSBbXTtcbiAgICB3aGlsZSAobm9kZSA9IGN1cnJlbnQucG9wKCkpIHtcbiAgICAgIHlpZWxkIG5vZGU7XG4gICAgICBpZiAoY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgICBuZXh0LnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChuZXh0Lmxlbmd0aCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/iterator.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2xlYXZlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9sZWF2ZXMuanM/ZWQ1OCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGxlYXZlcyA9IFtdO1xuICB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbikge1xuICAgICAgbGVhdmVzLnB1c2gobm9kZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxlYXZlcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/leaves.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/links.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/links.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2xpbmtzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLGtCQUFrQixrQ0FBa0M7QUFDcEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanM/Y2NjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvbuKAmXQgaW5jbHVkZSB0aGUgcm9vdOKAmXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/links.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/path.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/path.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3BhdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvcGF0aC5qcz8wZWM0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGVuZCkge1xuICB2YXIgc3RhcnQgPSB0aGlzLFxuICAgICAgYW5jZXN0b3IgPSBsZWFzdENvbW1vbkFuY2VzdG9yKHN0YXJ0LCBlbmQpLFxuICAgICAgbm9kZXMgPSBbc3RhcnRdO1xuICB3aGlsZSAoc3RhcnQgIT09IGFuY2VzdG9yKSB7XG4gICAgc3RhcnQgPSBzdGFydC5wYXJlbnQ7XG4gICAgbm9kZXMucHVzaChzdGFydCk7XG4gIH1cbiAgdmFyIGsgPSBub2Rlcy5sZW5ndGg7XG4gIHdoaWxlIChlbmQgIT09IGFuY2VzdG9yKSB7XG4gICAgbm9kZXMuc3BsaWNlKGssIDAsIGVuZCk7XG4gICAgZW5kID0gZW5kLnBhcmVudDtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5cbmZ1bmN0aW9uIGxlYXN0Q29tbW9uQW5jZXN0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIGE7XG4gIHZhciBhTm9kZXMgPSBhLmFuY2VzdG9ycygpLFxuICAgICAgYk5vZGVzID0gYi5hbmNlc3RvcnMoKSxcbiAgICAgIGMgPSBudWxsO1xuICBhID0gYU5vZGVzLnBvcCgpO1xuICBiID0gYk5vZGVzLnBvcCgpO1xuICB3aGlsZSAoYSA9PT0gYikge1xuICAgIGMgPSBhO1xuICAgIGEgPSBhTm9kZXMucG9wKCk7XG4gICAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgfVxuICByZXR1cm4gYztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/path.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/sort.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/sort.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3NvcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9zb3J0LmpzPzNhZWIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29tcGFyZSkge1xuICByZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbi5zb3J0KGNvbXBhcmUpO1xuICAgIH1cbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/sort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/hierarchy/sum.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/hierarchy/sum.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9zdW0uanM/NWFkOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZnVuY3Rpb24obm9kZSkge1xuICAgIHZhciBzdW0gPSArdmFsdWUobm9kZS5kYXRhKSB8fCAwLFxuICAgICAgICBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4sXG4gICAgICAgIGkgPSBjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGg7XG4gICAgd2hpbGUgKC0taSA+PSAwKSBzdW0gKz0gY2hpbGRyZW5baV0udmFsdWU7XG4gICAgbm9kZS52YWx1ZSA9IHN1bTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/hierarchy/sum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/index.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Node\": () => (/* reexport safe */ _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__.Node),\n/* harmony export */ \"cluster\": () => (/* reexport safe */ _cluster_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"hierarchy\": () => (/* reexport safe */ _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"pack\": () => (/* reexport safe */ _pack_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"packEnclose\": () => (/* reexport safe */ _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"packSiblings\": () => (/* reexport safe */ _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"partition\": () => (/* reexport safe */ _partition_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"stratify\": () => (/* reexport safe */ _stratify_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"tree\": () => (/* reexport safe */ _tree_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"treemap\": () => (/* reexport safe */ _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"treemapBinary\": () => (/* reexport safe */ _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"treemapDice\": () => (/* reexport safe */ _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"treemapResquarify\": () => (/* reexport safe */ _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"treemapSlice\": () => (/* reexport safe */ _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"treemapSliceDice\": () => (/* reexport safe */ _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"treemapSquarify\": () => (/* reexport safe */ _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _cluster_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cluster.js */ \"../../../node_modules/d3-hierarchy/src/cluster.js\");\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hierarchy/index.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/index.js\");\n/* harmony import */ var _pack_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pack/index.js */ \"../../../node_modules/d3-hierarchy/src/pack/index.js\");\n/* harmony import */ var _pack_siblings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pack/siblings.js */ \"../../../node_modules/d3-hierarchy/src/pack/siblings.js\");\n/* harmony import */ var _pack_enclose_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pack/enclose.js */ \"../../../node_modules/d3-hierarchy/src/pack/enclose.js\");\n/* harmony import */ var _partition_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./partition.js */ \"../../../node_modules/d3-hierarchy/src/partition.js\");\n/* harmony import */ var _stratify_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./stratify.js */ \"../../../node_modules/d3-hierarchy/src/stratify.js\");\n/* harmony import */ var _tree_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./tree.js */ \"../../../node_modules/d3-hierarchy/src/tree.js\");\n/* harmony import */ var _treemap_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./treemap/index.js */ \"../../../node_modules/d3-hierarchy/src/treemap/index.js\");\n/* harmony import */ var _treemap_binary_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./treemap/binary.js */ \"../../../node_modules/d3-hierarchy/src/treemap/binary.js\");\n/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./treemap/dice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _treemap_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./treemap/slice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/slice.js\");\n/* harmony import */ var _treemap_sliceDice_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./treemap/sliceDice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js\");\n/* harmony import */ var _treemap_squarify_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./treemap/squarify.js */ \"../../../node_modules/d3-hierarchy/src/treemap/squarify.js\");\n/* harmony import */ var _treemap_resquarify_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./treemap/resquarify.js */ \"../../../node_modules/d3-hierarchy/src/treemap/resquarify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFnRDtBQUNnQjtBQUNoQjtBQUNXO0FBQ0Y7QUFDTDtBQUNGO0FBQ1I7QUFDWTtBQUNPO0FBQ0o7QUFDRTtBQUNRO0FBQ0Y7QUFDSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9pbmRleC5qcz83NDQwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBjbHVzdGVyfSBmcm9tIFwiLi9jbHVzdGVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaGllcmFyY2h5LCBOb2RlfSBmcm9tIFwiLi9oaWVyYXJjaHkvaW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwYWNrfSBmcm9tIFwiLi9wYWNrL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGFja1NpYmxpbmdzfSBmcm9tIFwiLi9wYWNrL3NpYmxpbmdzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcGFja0VuY2xvc2V9IGZyb20gXCIuL3BhY2svZW5jbG9zZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBhcnRpdGlvbn0gZnJvbSBcIi4vcGFydGl0aW9uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RyYXRpZnl9IGZyb20gXCIuL3N0cmF0aWZ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJlZX0gZnJvbSBcIi4vdHJlZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXB9IGZyb20gXCIuL3RyZWVtYXAvaW5kZXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwQmluYXJ5fSBmcm9tIFwiLi90cmVlbWFwL2JpbmFyeS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBEaWNlfSBmcm9tIFwiLi90cmVlbWFwL2RpY2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwU2xpY2V9IGZyb20gXCIuL3RyZWVtYXAvc2xpY2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cmVlbWFwU2xpY2VEaWNlfSBmcm9tIFwiLi90cmVlbWFwL3NsaWNlRGljZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBTcXVhcmlmeX0gZnJvbSBcIi4vdHJlZW1hcC9zcXVhcmlmeS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRyZWVtYXBSZXNxdWFyaWZ5fSBmcm9tIFwiLi90cmVlbWFwL3Jlc3F1YXJpZnkuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/lcg.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/lcg.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvbGNnLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7O0FBRXRCLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9sY2cuanM/ZDMyZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfY29uZ3J1ZW50aWFsX2dlbmVyYXRvciNQYXJhbWV0ZXJzX2luX2NvbW1vbl91c2VcbmNvbnN0IGEgPSAxNjY0NTI1O1xuY29uc3QgYyA9IDEwMTM5MDQyMjM7XG5jb25zdCBtID0gNDI5NDk2NzI5NjsgLy8gMl4zMlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgbGV0IHMgPSAxO1xuICByZXR1cm4gKCkgPT4gKHMgPSAoYSAqIHMgKyBjKSAlIG0pIC8gbTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/lcg.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/pack/enclose.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/pack/enclose.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"packEncloseRandom\": () => (/* binding */ packEncloseRandom)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../array.js */ \"../../../node_modules/d3-hierarchy/src/array.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lcg.js */ \"../../../node_modules/d3-hierarchy/src/lcg.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(circles) {\n return packEncloseRandom(circles, (0,_lcg_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n}\n\nfunction packEncloseRandom(circles, random) {\n var i = 0, n = (circles = (0,_array_js__WEBPACK_IMPORTED_MODULE_1__.shuffle)(Array.from(circles), random)).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(Math.abs(A) > 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9lbmNsb3NlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBb0M7QUFDUjs7QUFFNUIsNkJBQWUsb0NBQVM7QUFDeEIsb0NBQW9DLG1EQUFHO0FBQ3ZDOztBQUVPO0FBQ1AsNEJBQTRCLGtEQUFPOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGNBQWMsY0FBYztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYyxrQkFBa0I7QUFDaEMsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsY0FBYztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYWNrL2VuY2xvc2UuanM/MDVjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NodWZmbGV9IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IGxjZyBmcm9tIFwiLi4vbGNnLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNpcmNsZXMpIHtcbiAgcmV0dXJuIHBhY2tFbmNsb3NlUmFuZG9tKGNpcmNsZXMsIGxjZygpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhY2tFbmNsb3NlUmFuZG9tKGNpcmNsZXMsIHJhbmRvbSkge1xuICB2YXIgaSA9IDAsIG4gPSAoY2lyY2xlcyA9IHNodWZmbGUoQXJyYXkuZnJvbShjaXJjbGVzKSwgcmFuZG9tKSkubGVuZ3RoLCBCID0gW10sIHAsIGU7XG5cbiAgd2hpbGUgKGkgPCBuKSB7XG4gICAgcCA9IGNpcmNsZXNbaV07XG4gICAgaWYgKGUgJiYgZW5jbG9zZXNXZWFrKGUsIHApKSArK2k7XG4gICAgZWxzZSBlID0gZW5jbG9zZUJhc2lzKEIgPSBleHRlbmRCYXNpcyhCLCBwKSksIGkgPSAwO1xuICB9XG5cbiAgcmV0dXJuIGU7XG59XG5cbmZ1bmN0aW9uIGV4dGVuZEJhc2lzKEIsIHApIHtcbiAgdmFyIGksIGo7XG5cbiAgaWYgKGVuY2xvc2VzV2Vha0FsbChwLCBCKSkgcmV0dXJuIFtwXTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIEIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlbGVtZW50LlxuICBmb3IgKGkgPSAwOyBpIDwgQi5sZW5ndGg7ICsraSkge1xuICAgIGlmIChlbmNsb3Nlc05vdChwLCBCW2ldKVxuICAgICAgICAmJiBlbmNsb3Nlc1dlYWtBbGwoZW5jbG9zZUJhc2lzMihCW2ldLCBwKSwgQikpIHtcbiAgICAgIHJldHVybiBbQltpXSwgcF07XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBCIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuXG4gIGZvciAoaSA9IDA7IGkgPCBCLmxlbmd0aCAtIDE7ICsraSkge1xuICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgQi5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKGVuY2xvc2VzTm90KGVuY2xvc2VCYXNpczIoQltpXSwgQltqXSksIHApXG4gICAgICAgICAgJiYgZW5jbG9zZXNOb3QoZW5jbG9zZUJhc2lzMihCW2ldLCBwKSwgQltqXSlcbiAgICAgICAgICAmJiBlbmNsb3Nlc05vdChlbmNsb3NlQmFzaXMyKEJbal0sIHApLCBCW2ldKVxuICAgICAgICAgICYmIGVuY2xvc2VzV2Vha0FsbChlbmNsb3NlQmFzaXMzKEJbaV0sIEJbal0sIHApLCBCKSkge1xuICAgICAgICByZXR1cm4gW0JbaV0sIEJbal0sIHBdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlIGdldCBoZXJlIHRoZW4gc29tZXRoaW5nIGlzIHZlcnkgd3JvbmcuXG4gIHRocm93IG5ldyBFcnJvcjtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZXNOb3QoYSwgYikge1xuICB2YXIgZHIgPSBhLnIgLSBiLnIsIGR4ID0gYi54IC0gYS54LCBkeSA9IGIueSAtIGEueTtcbiAgcmV0dXJuIGRyIDwgMCB8fCBkciAqIGRyIDwgZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIGVuY2xvc2VzV2VhayhhLCBiKSB7XG4gIHZhciBkciA9IGEuciAtIGIuciArIE1hdGgubWF4KGEuciwgYi5yLCAxKSAqIDFlLTksIGR4ID0gYi54IC0gYS54LCBkeSA9IGIueSAtIGEueTtcbiAgcmV0dXJuIGRyID4gMCAmJiBkciAqIGRyID4gZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIGVuY2xvc2VzV2Vha0FsbChhLCBCKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgQi5sZW5ndGg7ICsraSkge1xuICAgIGlmICghZW5jbG9zZXNXZWFrKGEsIEJbaV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBlbmNsb3NlQmFzaXMoQikge1xuICBzd2l0Y2ggKEIubGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZW5jbG9zZUJhc2lzMShCWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBlbmNsb3NlQmFzaXMyKEJbMF0sIEJbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGVuY2xvc2VCYXNpczMoQlswXSwgQlsxXSwgQlsyXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMShhKSB7XG4gIHJldHVybiB7XG4gICAgeDogYS54LFxuICAgIHk6IGEueSxcbiAgICByOiBhLnJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMihhLCBiKSB7XG4gIHZhciB4MSA9IGEueCwgeTEgPSBhLnksIHIxID0gYS5yLFxuICAgICAgeDIgPSBiLngsIHkyID0gYi55LCByMiA9IGIucixcbiAgICAgIHgyMSA9IHgyIC0geDEsIHkyMSA9IHkyIC0geTEsIHIyMSA9IHIyIC0gcjEsXG4gICAgICBsID0gTWF0aC5zcXJ0KHgyMSAqIHgyMSArIHkyMSAqIHkyMSk7XG4gIHJldHVybiB7XG4gICAgeDogKHgxICsgeDIgKyB4MjEgLyBsICogcjIxKSAvIDIsXG4gICAgeTogKHkxICsgeTIgKyB5MjEgLyBsICogcjIxKSAvIDIsXG4gICAgcjogKGwgKyByMSArIHIyKSAvIDJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5jbG9zZUJhc2lzMyhhLCBiLCBjKSB7XG4gIHZhciB4MSA9IGEueCwgeTEgPSBhLnksIHIxID0gYS5yLFxuICAgICAgeDIgPSBiLngsIHkyID0gYi55LCByMiA9IGIucixcbiAgICAgIHgzID0gYy54LCB5MyA9IGMueSwgcjMgPSBjLnIsXG4gICAgICBhMiA9IHgxIC0geDIsXG4gICAgICBhMyA9IHgxIC0geDMsXG4gICAgICBiMiA9IHkxIC0geTIsXG4gICAgICBiMyA9IHkxIC0geTMsXG4gICAgICBjMiA9IHIyIC0gcjEsXG4gICAgICBjMyA9IHIzIC0gcjEsXG4gICAgICBkMSA9IHgxICogeDEgKyB5MSAqIHkxIC0gcjEgKiByMSxcbiAgICAgIGQyID0gZDEgLSB4MiAqIHgyIC0geTIgKiB5MiArIHIyICogcjIsXG4gICAgICBkMyA9IGQxIC0geDMgKiB4MyAtIHkzICogeTMgKyByMyAqIHIzLFxuICAgICAgYWIgPSBhMyAqIGIyIC0gYTIgKiBiMyxcbiAgICAgIHhhID0gKGIyICogZDMgLSBiMyAqIGQyKSAvIChhYiAqIDIpIC0geDEsXG4gICAgICB4YiA9IChiMyAqIGMyIC0gYjIgKiBjMykgLyBhYixcbiAgICAgIHlhID0gKGEzICogZDIgLSBhMiAqIGQzKSAvIChhYiAqIDIpIC0geTEsXG4gICAgICB5YiA9IChhMiAqIGMzIC0gYTMgKiBjMikgLyBhYixcbiAgICAgIEEgPSB4YiAqIHhiICsgeWIgKiB5YiAtIDEsXG4gICAgICBCID0gMiAqIChyMSArIHhhICogeGIgKyB5YSAqIHliKSxcbiAgICAgIEMgPSB4YSAqIHhhICsgeWEgKiB5YSAtIHIxICogcjEsXG4gICAgICByID0gLShNYXRoLmFicyhBKSA+IDFlLTYgPyAoQiArIE1hdGguc3FydChCICogQiAtIDQgKiBBICogQykpIC8gKDIgKiBBKSA6IEMgLyBCKTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4MSArIHhhICsgeGIgKiByLFxuICAgIHk6IHkxICsgeWEgKyB5YiAqIHIsXG4gICAgcjogclxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/pack/enclose.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/pack/index.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/pack/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../accessors.js */ \"../../../node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constant.js */ \"../../../node_modules/d3-hierarchy/src/constant.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lcg.js */ \"../../../node_modules/d3-hierarchy/src/lcg.js\");\n/* harmony import */ var _siblings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./siblings.js */ \"../../../node_modules/d3-hierarchy/src/pack/siblings.js\");\n\n\n\n\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = _constant_js__WEBPACK_IMPORTED_MODULE_0__.constantZero;\n\n function pack(root) {\n const random = (0,_lcg_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildrenRandom(padding, 0.5, random))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildrenRandom(_constant_js__WEBPACK_IMPORTED_MODULE_0__.constantZero, 1, random))\n .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = (0,_accessors_js__WEBPACK_IMPORTED_MODULE_2__.optional)(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = (0,_siblings_js__WEBPACK_IMPORTED_MODULE_3__.packSiblingsRandom)(children, random);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF5QztBQUNhO0FBQzFCO0FBQ3FCOztBQUVqRDtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNEQUFZOztBQUU1QjtBQUNBLG1CQUFtQixtREFBRztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0Esd0NBQXdDLHNEQUFZO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsdURBQVE7QUFDaEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUVBQXVFLHdEQUFRO0FBQy9FOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsT0FBTztBQUNoQyxVQUFVLGdFQUFrQjtBQUM1Qix5QkFBeUIsT0FBTztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYWNrL2luZGV4LmpzPzJiMWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvcHRpb25hbH0gZnJvbSBcIi4uL2FjY2Vzc29ycy5qc1wiO1xuaW1wb3J0IGNvbnN0YW50LCB7Y29uc3RhbnRaZXJvfSBmcm9tIFwiLi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBsY2cgZnJvbSBcIi4uL2xjZy5qc1wiO1xuaW1wb3J0IHtwYWNrU2libGluZ3NSYW5kb219IGZyb20gXCIuL3NpYmxpbmdzLmpzXCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRSYWRpdXMoZCkge1xuICByZXR1cm4gTWF0aC5zcXJ0KGQudmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJhZGl1cyA9IG51bGwsXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nID0gY29uc3RhbnRaZXJvO1xuXG4gIGZ1bmN0aW9uIHBhY2socm9vdCkge1xuICAgIGNvbnN0IHJhbmRvbSA9IGxjZygpO1xuICAgIHJvb3QueCA9IGR4IC8gMiwgcm9vdC55ID0gZHkgLyAyO1xuICAgIGlmIChyYWRpdXMpIHtcbiAgICAgIHJvb3QuZWFjaEJlZm9yZShyYWRpdXNMZWFmKHJhZGl1cykpXG4gICAgICAgICAgLmVhY2hBZnRlcihwYWNrQ2hpbGRyZW5SYW5kb20ocGFkZGluZywgMC41LCByYW5kb20pKVxuICAgICAgICAgIC5lYWNoQmVmb3JlKHRyYW5zbGF0ZUNoaWxkKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdC5lYWNoQmVmb3JlKHJhZGl1c0xlYWYoZGVmYXVsdFJhZGl1cykpXG4gICAgICAgICAgLmVhY2hBZnRlcihwYWNrQ2hpbGRyZW5SYW5kb20oY29uc3RhbnRaZXJvLCAxLCByYW5kb20pKVxuICAgICAgICAgIC5lYWNoQWZ0ZXIocGFja0NoaWxkcmVuUmFuZG9tKHBhZGRpbmcsIHJvb3QuciAvIE1hdGgubWluKGR4LCBkeSksIHJhbmRvbSkpXG4gICAgICAgICAgLmVhY2hCZWZvcmUodHJhbnNsYXRlQ2hpbGQoTWF0aC5taW4oZHgsIGR5KSAvICgyICogcm9vdC5yKSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIHBhY2sucmFkaXVzID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IG9wdGlvbmFsKHgpLCBwYWNrKSA6IHJhZGl1cztcbiAgfTtcblxuICBwYWNrLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHggPSAreFswXSwgZHkgPSAreFsxXSwgcGFjaykgOiBbZHgsIGR5XTtcbiAgfTtcblxuICBwYWNrLnBhZGRpbmcgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZyA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCBwYWNrKSA6IHBhZGRpbmc7XG4gIH07XG5cbiAgcmV0dXJuIHBhY2s7XG59XG5cbmZ1bmN0aW9uIHJhZGl1c0xlYWYocmFkaXVzKSB7XG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLnIgPSBNYXRoLm1heCgwLCArcmFkaXVzKG5vZGUpIHx8IDApO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFja0NoaWxkcmVuUmFuZG9tKHBhZGRpbmcsIGssIHJhbmRvbSkge1xuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHZhciBjaGlsZHJlbixcbiAgICAgICAgICBpLFxuICAgICAgICAgIG4gPSBjaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgciA9IHBhZGRpbmcobm9kZSkgKiBrIHx8IDAsXG4gICAgICAgICAgZTtcblxuICAgICAgaWYgKHIpIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGNoaWxkcmVuW2ldLnIgKz0gcjtcbiAgICAgIGUgPSBwYWNrU2libGluZ3NSYW5kb20oY2hpbGRyZW4sIHJhbmRvbSk7XG4gICAgICBpZiAocikgZm9yIChpID0gMDsgaSA8IG47ICsraSkgY2hpbGRyZW5baV0uciAtPSByO1xuICAgICAgbm9kZS5yID0gZSArIHI7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVDaGlsZChrKSB7XG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIG5vZGUuciAqPSBrO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIG5vZGUueCA9IHBhcmVudC54ICsgayAqIG5vZGUueDtcbiAgICAgIG5vZGUueSA9IHBhcmVudC55ICsgayAqIG5vZGUueTtcbiAgICB9XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/pack/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/pack/siblings.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/pack/siblings.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"packSiblingsRandom\": () => (/* binding */ packSiblingsRandom)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array.js */ \"../../../node_modules/d3-hierarchy/src/array.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lcg.js */ \"../../../node_modules/d3-hierarchy/src/lcg.js\");\n/* harmony import */ var _enclose_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./enclose.js */ \"../../../node_modules/d3-hierarchy/src/pack/enclose.js\");\n\n\n\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nfunction packSiblingsRandom(circles, random) {\n if (!(n = (circles = (0,_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = (0,_enclose_js__WEBPACK_IMPORTED_MODULE_1__.packEncloseRandom)(a, random);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(circles) {\n packSiblingsRandom(circles, (0,_lcg_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n return circles;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9zaWJsaW5ncy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnQztBQUNKO0FBQ21COztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCx1QkFBdUIscURBQUs7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHdDQUF3QyxJQUFJLDhEQUFpQjs7QUFFakY7QUFDQSxjQUFjLE9BQU87O0FBRXJCO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEIsOEJBQThCLG1EQUFHO0FBQ2pDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFjay9zaWJsaW5ncy5qcz80Y2VlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheSBmcm9tIFwiLi4vYXJyYXkuanNcIjtcbmltcG9ydCBsY2cgZnJvbSBcIi4uL2xjZy5qc1wiO1xuaW1wb3J0IHtwYWNrRW5jbG9zZVJhbmRvbX0gZnJvbSBcIi4vZW5jbG9zZS5qc1wiO1xuXG5mdW5jdGlvbiBwbGFjZShiLCBhLCBjKSB7XG4gIHZhciBkeCA9IGIueCAtIGEueCwgeCwgYTIsXG4gICAgICBkeSA9IGIueSAtIGEueSwgeSwgYjIsXG4gICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICBpZiAoZDIpIHtcbiAgICBhMiA9IGEuciArIGMuciwgYTIgKj0gYTI7XG4gICAgYjIgPSBiLnIgKyBjLnIsIGIyICo9IGIyO1xuICAgIGlmIChhMiA+IGIyKSB7XG4gICAgICB4ID0gKGQyICsgYjIgLSBhMikgLyAoMiAqIGQyKTtcbiAgICAgIHkgPSBNYXRoLnNxcnQoTWF0aC5tYXgoMCwgYjIgLyBkMiAtIHggKiB4KSk7XG4gICAgICBjLnggPSBiLnggLSB4ICogZHggLSB5ICogZHk7XG4gICAgICBjLnkgPSBiLnkgLSB4ICogZHkgKyB5ICogZHg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSAoZDIgKyBhMiAtIGIyKSAvICgyICogZDIpO1xuICAgICAgeSA9IE1hdGguc3FydChNYXRoLm1heCgwLCBhMiAvIGQyIC0geCAqIHgpKTtcbiAgICAgIGMueCA9IGEueCArIHggKiBkeCAtIHkgKiBkeTtcbiAgICAgIGMueSA9IGEueSArIHggKiBkeSArIHkgKiBkeDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYy54ID0gYS54ICsgYy5yO1xuICAgIGMueSA9IGEueTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnRlcnNlY3RzKGEsIGIpIHtcbiAgdmFyIGRyID0gYS5yICsgYi5yIC0gMWUtNiwgZHggPSBiLnggLSBhLngsIGR5ID0gYi55IC0gYS55O1xuICByZXR1cm4gZHIgPiAwICYmIGRyICogZHIgPiBkeCAqIGR4ICsgZHkgKiBkeTtcbn1cblxuZnVuY3Rpb24gc2NvcmUobm9kZSkge1xuICB2YXIgYSA9IG5vZGUuXyxcbiAgICAgIGIgPSBub2RlLm5leHQuXyxcbiAgICAgIGFiID0gYS5yICsgYi5yLFxuICAgICAgZHggPSAoYS54ICogYi5yICsgYi54ICogYS5yKSAvIGFiLFxuICAgICAgZHkgPSAoYS55ICogYi5yICsgYi55ICogYS5yKSAvIGFiO1xuICByZXR1cm4gZHggKiBkeCArIGR5ICogZHk7XG59XG5cbmZ1bmN0aW9uIE5vZGUoY2lyY2xlKSB7XG4gIHRoaXMuXyA9IGNpcmNsZTtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5wcmV2aW91cyA9IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWNrU2libGluZ3NSYW5kb20oY2lyY2xlcywgcmFuZG9tKSB7XG4gIGlmICghKG4gPSAoY2lyY2xlcyA9IGFycmF5KGNpcmNsZXMpKS5sZW5ndGgpKSByZXR1cm4gMDtcblxuICB2YXIgYSwgYiwgYywgbiwgYWEsIGNhLCBpLCBqLCBrLCBzaiwgc2s7XG5cbiAgLy8gUGxhY2UgdGhlIGZpcnN0IGNpcmNsZS5cbiAgYSA9IGNpcmNsZXNbMF0sIGEueCA9IDAsIGEueSA9IDA7XG4gIGlmICghKG4gPiAxKSkgcmV0dXJuIGEucjtcblxuICAvLyBQbGFjZSB0aGUgc2Vjb25kIGNpcmNsZS5cbiAgYiA9IGNpcmNsZXNbMV0sIGEueCA9IC1iLnIsIGIueCA9IGEuciwgYi55ID0gMDtcbiAgaWYgKCEobiA+IDIpKSByZXR1cm4gYS5yICsgYi5yO1xuXG4gIC8vIFBsYWNlIHRoZSB0aGlyZCBjaXJjbGUuXG4gIHBsYWNlKGIsIGEsIGMgPSBjaXJjbGVzWzJdKTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBmcm9udC1jaGFpbiB1c2luZyB0aGUgZmlyc3QgdGhyZWUgY2lyY2xlcyBhLCBiIGFuZCBjLlxuICBhID0gbmV3IE5vZGUoYSksIGIgPSBuZXcgTm9kZShiKSwgYyA9IG5ldyBOb2RlKGMpO1xuICBhLm5leHQgPSBjLnByZXZpb3VzID0gYjtcbiAgYi5uZXh0ID0gYS5wcmV2aW91cyA9IGM7XG4gIGMubmV4dCA9IGIucHJldmlvdXMgPSBhO1xuXG4gIC8vIEF0dGVtcHQgdG8gcGxhY2UgZWFjaCByZW1haW5pbmcgY2lyY2xl4oCmXG4gIHBhY2s6IGZvciAoaSA9IDM7IGkgPCBuOyArK2kpIHtcbiAgICBwbGFjZShhLl8sIGIuXywgYyA9IGNpcmNsZXNbaV0pLCBjID0gbmV3IE5vZGUoYyk7XG5cbiAgICAvLyBGaW5kIHRoZSBjbG9zZXN0IGludGVyc2VjdGluZyBjaXJjbGUgb24gdGhlIGZyb250LWNoYWluLCBpZiBhbnkuXG4gICAgLy8g4oCcQ2xvc2VuZXNz4oCdIGlzIGRldGVybWluZWQgYnkgbGluZWFyIGRpc3RhbmNlIGFsb25nIHRoZSBmcm9udC1jaGFpbi5cbiAgICAvLyDigJxBaGVhZOKAnSBvciDigJxiZWhpbmTigJ0gaXMgbGlrZXdpc2UgZGV0ZXJtaW5lZCBieSBsaW5lYXIgZGlzdGFuY2UuXG4gICAgaiA9IGIubmV4dCwgayA9IGEucHJldmlvdXMsIHNqID0gYi5fLnIsIHNrID0gYS5fLnI7XG4gICAgZG8ge1xuICAgICAgaWYgKHNqIDw9IHNrKSB7XG4gICAgICAgIGlmIChpbnRlcnNlY3RzKGouXywgYy5fKSkge1xuICAgICAgICAgIGIgPSBqLCBhLm5leHQgPSBiLCBiLnByZXZpb3VzID0gYSwgLS1pO1xuICAgICAgICAgIGNvbnRpbnVlIHBhY2s7XG4gICAgICAgIH1cbiAgICAgICAgc2ogKz0gai5fLnIsIGogPSBqLm5leHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaW50ZXJzZWN0cyhrLl8sIGMuXykpIHtcbiAgICAgICAgICBhID0gaywgYS5uZXh0ID0gYiwgYi5wcmV2aW91cyA9IGEsIC0taTtcbiAgICAgICAgICBjb250aW51ZSBwYWNrO1xuICAgICAgICB9XG4gICAgICAgIHNrICs9IGsuXy5yLCBrID0gay5wcmV2aW91cztcbiAgICAgIH1cbiAgICB9IHdoaWxlIChqICE9PSBrLm5leHQpO1xuXG4gICAgLy8gU3VjY2VzcyEgSW5zZXJ0IHRoZSBuZXcgY2lyY2xlIGMgYmV0d2VlbiBhIGFuZCBiLlxuICAgIGMucHJldmlvdXMgPSBhLCBjLm5leHQgPSBiLCBhLm5leHQgPSBiLnByZXZpb3VzID0gYiA9IGM7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBuZXcgY2xvc2VzdCBjaXJjbGUgcGFpciB0byB0aGUgY2VudHJvaWQuXG4gICAgYWEgPSBzY29yZShhKTtcbiAgICB3aGlsZSAoKGMgPSBjLm5leHQpICE9PSBiKSB7XG4gICAgICBpZiAoKGNhID0gc2NvcmUoYykpIDwgYWEpIHtcbiAgICAgICAgYSA9IGMsIGFhID0gY2E7XG4gICAgICB9XG4gICAgfVxuICAgIGIgPSBhLm5leHQ7XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBlbmNsb3NpbmcgY2lyY2xlIG9mIHRoZSBmcm9udCBjaGFpbi5cbiAgYSA9IFtiLl9dLCBjID0gYjsgd2hpbGUgKChjID0gYy5uZXh0KSAhPT0gYikgYS5wdXNoKGMuXyk7IGMgPSBwYWNrRW5jbG9zZVJhbmRvbShhLCByYW5kb20pO1xuXG4gIC8vIFRyYW5zbGF0ZSB0aGUgY2lyY2xlcyB0byBwdXQgdGhlIGVuY2xvc2luZyBjaXJjbGUgYXJvdW5kIHRoZSBvcmlnaW4uXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGEgPSBjaXJjbGVzW2ldLCBhLnggLT0gYy54LCBhLnkgLT0gYy55O1xuXG4gIHJldHVybiBjLnI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNpcmNsZXMpIHtcbiAgcGFja1NpYmxpbmdzUmFuZG9tKGNpcmNsZXMsIGxjZygpKTtcbiAgcmV0dXJuIGNpcmNsZXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/pack/siblings.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/partition.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/partition.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _treemap_round_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./treemap/round.js */ \"../../../node_modules/d3-hierarchy/src/treemap/round.js\");\n/* harmony import */ var _treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./treemap/dice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/dice.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(_treemap_round_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n (0,_treemap_dice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvcGFydGl0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEyQztBQUNDOztBQUU1Qyw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix5REFBUztBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNERBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9wYXJ0aXRpb24uanM/Y2EwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm91bmROb2RlIGZyb20gXCIuL3RyZWVtYXAvcm91bmQuanNcIjtcbmltcG9ydCB0cmVlbWFwRGljZSBmcm9tIFwiLi90cmVlbWFwL2RpY2UuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nID0gMCxcbiAgICAgIHJvdW5kID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gcGFydGl0aW9uKHJvb3QpIHtcbiAgICB2YXIgbiA9IHJvb3QuaGVpZ2h0ICsgMTtcbiAgICByb290LngwID1cbiAgICByb290LnkwID0gcGFkZGluZztcbiAgICByb290LngxID0gZHg7XG4gICAgcm9vdC55MSA9IGR5IC8gbjtcbiAgICByb290LmVhY2hCZWZvcmUocG9zaXRpb25Ob2RlKGR5LCBuKSk7XG4gICAgaWYgKHJvdW5kKSByb290LmVhY2hCZWZvcmUocm91bmROb2RlKTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBvc2l0aW9uTm9kZShkeSwgbikge1xuICAgIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICB0cmVlbWFwRGljZShub2RlLCBub2RlLngwLCBkeSAqIChub2RlLmRlcHRoICsgMSkgLyBuLCBub2RlLngxLCBkeSAqIChub2RlLmRlcHRoICsgMikgLyBuKTtcbiAgICAgIH1cbiAgICAgIHZhciB4MCA9IG5vZGUueDAsXG4gICAgICAgICAgeTAgPSBub2RlLnkwLFxuICAgICAgICAgIHgxID0gbm9kZS54MSAtIHBhZGRpbmcsXG4gICAgICAgICAgeTEgPSBub2RlLnkxIC0gcGFkZGluZztcbiAgICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIG5vZGUueDAgPSB4MDtcbiAgICAgIG5vZGUueTAgPSB5MDtcbiAgICAgIG5vZGUueDEgPSB4MTtcbiAgICAgIG5vZGUueTEgPSB5MTtcbiAgICB9O1xuICB9XG5cbiAgcGFydGl0aW9uLnJvdW5kID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJvdW5kID0gISF4LCBwYXJ0aXRpb24pIDogcm91bmQ7XG4gIH07XG5cbiAgcGFydGl0aW9uLnNpemUgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZHggPSAreFswXSwgZHkgPSAreFsxXSwgcGFydGl0aW9uKSA6IFtkeCwgZHldO1xuICB9O1xuXG4gIHBhcnRpdGlvbi5wYWRkaW5nID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmcgPSAreCwgcGFydGl0aW9uKSA6IHBhZGRpbmc7XG4gIH07XG5cbiAgcmV0dXJuIHBhcnRpdGlvbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/partition.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/stratify.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/stratify.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./accessors.js */ \"../../../node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hierarchy/index.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/index.js\");\n\n\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__.Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__.computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = (0,_accessors_js__WEBPACK_IMPORTED_MODULE_1__.optional)(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = (0,_accessors_js__WEBPACK_IMPORTED_MODULE_1__.optional)(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = (0,_accessors_js__WEBPACK_IMPORTED_MODULE_1__.optional)(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvc3RyYXRpZnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ2lCOztBQUV6RCxlQUFlLFVBQVU7QUFDekIsa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0MsT0FBTztBQUN6QywwQ0FBMEMscURBQUk7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxRQUFRO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsb0NBQW9DLE1BQU0sYUFBYSw4REFBYTtBQUN6RztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsdURBQVE7QUFDNUM7O0FBRUE7QUFDQSwwQ0FBMEMsdURBQVE7QUFDbEQ7O0FBRUE7QUFDQSxzQ0FBc0MsdURBQVE7QUFDOUM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQjtBQUNBO0FBQ0Esc0NBQXNDLEtBQUs7QUFDM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9zdHJhdGlmeS5qcz84YWI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b3B0aW9uYWx9IGZyb20gXCIuL2FjY2Vzc29ycy5qc1wiO1xuaW1wb3J0IHtOb2RlLCBjb21wdXRlSGVpZ2h0fSBmcm9tIFwiLi9oaWVyYXJjaHkvaW5kZXguanNcIjtcblxudmFyIHByZXJvb3QgPSB7ZGVwdGg6IC0xfSxcbiAgICBhbWJpZ3VvdXMgPSB7fSxcbiAgICBpbXB1dGVkID0ge307XG5cbmZ1bmN0aW9uIGRlZmF1bHRJZChkKSB7XG4gIHJldHVybiBkLmlkO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0UGFyZW50SWQoZCkge1xuICByZXR1cm4gZC5wYXJlbnRJZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBpZCA9IGRlZmF1bHRJZCxcbiAgICAgIHBhcmVudElkID0gZGVmYXVsdFBhcmVudElkLFxuICAgICAgcGF0aDtcblxuICBmdW5jdGlvbiBzdHJhdGlmeShkYXRhKSB7XG4gICAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShkYXRhKSxcbiAgICAgICAgY3VycmVudElkID0gaWQsXG4gICAgICAgIGN1cnJlbnRQYXJlbnRJZCA9IHBhcmVudElkLFxuICAgICAgICBuLFxuICAgICAgICBkLFxuICAgICAgICBpLFxuICAgICAgICByb290LFxuICAgICAgICBwYXJlbnQsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIG5vZGVJZCxcbiAgICAgICAgbm9kZUtleSxcbiAgICAgICAgbm9kZUJ5S2V5ID0gbmV3IE1hcDtcblxuICAgIGlmIChwYXRoICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IEkgPSBub2Rlcy5tYXAoKGQsIGkpID0+IG5vcm1hbGl6ZShwYXRoKGQsIGksIGRhdGEpKSk7XG4gICAgICBjb25zdCBQID0gSS5tYXAocGFyZW50b2YpO1xuICAgICAgY29uc3QgUyA9IG5ldyBTZXQoSSkuYWRkKFwiXCIpO1xuICAgICAgZm9yIChjb25zdCBpIG9mIFApIHtcbiAgICAgICAgaWYgKCFTLmhhcyhpKSkge1xuICAgICAgICAgIFMuYWRkKGkpO1xuICAgICAgICAgIEkucHVzaChpKTtcbiAgICAgICAgICBQLnB1c2gocGFyZW50b2YoaSkpO1xuICAgICAgICAgIG5vZGVzLnB1c2goaW1wdXRlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN1cnJlbnRJZCA9IChfLCBpKSA9PiBJW2ldO1xuICAgICAgY3VycmVudFBhcmVudElkID0gKF8sIGkpID0+IFBbaV07XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgbiA9IG5vZGVzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgZCA9IG5vZGVzW2ldLCBub2RlID0gbm9kZXNbaV0gPSBuZXcgTm9kZShkKTtcbiAgICAgIGlmICgobm9kZUlkID0gY3VycmVudElkKGQsIGksIGRhdGEpKSAhPSBudWxsICYmIChub2RlSWQgKz0gXCJcIikpIHtcbiAgICAgICAgbm9kZUtleSA9IG5vZGUuaWQgPSBub2RlSWQ7XG4gICAgICAgIG5vZGVCeUtleS5zZXQobm9kZUtleSwgbm9kZUJ5S2V5Lmhhcyhub2RlS2V5KSA/IGFtYmlndW91cyA6IG5vZGUpO1xuICAgICAgfVxuICAgICAgaWYgKChub2RlSWQgPSBjdXJyZW50UGFyZW50SWQoZCwgaSwgZGF0YSkpICE9IG51bGwgJiYgKG5vZGVJZCArPSBcIlwiKSkge1xuICAgICAgICBub2RlLnBhcmVudCA9IG5vZGVJZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBub2RlID0gbm9kZXNbaV07XG4gICAgICBpZiAobm9kZUlkID0gbm9kZS5wYXJlbnQpIHtcbiAgICAgICAgcGFyZW50ID0gbm9kZUJ5S2V5LmdldChub2RlSWQpO1xuICAgICAgICBpZiAoIXBhcmVudCkgdGhyb3cgbmV3IEVycm9yKFwibWlzc2luZzogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50ID09PSBhbWJpZ3VvdXMpIHRocm93IG5ldyBFcnJvcihcImFtYmlndW91czogXCIgKyBub2RlSWQpO1xuICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgZWxzZSBwYXJlbnQuY2hpbGRyZW4gPSBbbm9kZV07XG4gICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJvb3QpIHRocm93IG5ldyBFcnJvcihcIm11bHRpcGxlIHJvb3RzXCIpO1xuICAgICAgICByb290ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJvb3QpIHRocm93IG5ldyBFcnJvcihcIm5vIHJvb3RcIik7XG5cbiAgICAvLyBXaGVuIGltcHV0aW5nIGludGVybmFsIG5vZGVzLCBvbmx5IGludHJvZHVjZSByb290cyBpZiBuZWVkZWQuXG4gICAgLy8gVGhlbiByZXBsYWNlIHRoZSBpbXB1dGVkIG1hcmtlciBkYXRhIHdpdGggbnVsbC5cbiAgICBpZiAocGF0aCAhPSBudWxsKSB7XG4gICAgICB3aGlsZSAocm9vdC5kYXRhID09PSBpbXB1dGVkICYmIHJvb3QuY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJvb3QgPSByb290LmNoaWxkcmVuWzBdLCAtLW47XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gbm9kZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAobm9kZS5kYXRhICE9PSBpbXB1dGVkKSBicmVhaztcbiAgICAgICAgbm9kZS5kYXRhID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByb290LnBhcmVudCA9IHByZXJvb3Q7XG4gICAgcm9vdC5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHsgbm9kZS5kZXB0aCA9IG5vZGUucGFyZW50LmRlcHRoICsgMTsgLS1uOyB9KS5lYWNoQmVmb3JlKGNvbXB1dGVIZWlnaHQpO1xuICAgIHJvb3QucGFyZW50ID0gbnVsbDtcbiAgICBpZiAobiA+IDApIHRocm93IG5ldyBFcnJvcihcImN5Y2xlXCIpO1xuXG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBzdHJhdGlmeS5pZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpZCA9IG9wdGlvbmFsKHgpLCBzdHJhdGlmeSkgOiBpZDtcbiAgfTtcblxuICBzdHJhdGlmeS5wYXJlbnRJZCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYXJlbnRJZCA9IG9wdGlvbmFsKHgpLCBzdHJhdGlmeSkgOiBwYXJlbnRJZDtcbiAgfTtcblxuICBzdHJhdGlmeS5wYXRoID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhdGggPSBvcHRpb25hbCh4KSwgc3RyYXRpZnkpIDogcGF0aDtcbiAgfTtcblxuICByZXR1cm4gc3RyYXRpZnk7XG59XG5cbi8vIFRvIG5vcm1hbGl6ZSBhIHBhdGgsIHdlIGNvZXJjZSB0byBhIHN0cmluZywgc3RyaXAgdGhlIHRyYWlsaW5nIHNsYXNoIGlmIGFueVxuLy8gKGFzIGxvbmcgYXMgdGhlIHRyYWlsaW5nIHNsYXNoIGlzIG5vdCBpbW1lZGlhdGVseSBwcmVjZWRlZCBieSBhbm90aGVyIHNsYXNoKSxcbi8vIGFuZCBhZGQgbGVhZGluZyBzbGFzaCBpZiBtaXNzaW5nLlxuZnVuY3Rpb24gbm9ybWFsaXplKHBhdGgpIHtcbiAgcGF0aCA9IGAke3BhdGh9YDtcbiAgbGV0IGkgPSBwYXRoLmxlbmd0aDtcbiAgaWYgKHNsYXNoKHBhdGgsIGkgLSAxKSAmJiAhc2xhc2gocGF0aCwgaSAtIDIpKSBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gIHJldHVybiBwYXRoWzBdID09PSBcIi9cIiA/IHBhdGggOiBgLyR7cGF0aH1gO1xufVxuXG4vLyBXYWxrIGJhY2t3YXJkcyB0byBmaW5kIHRoZSBmaXJzdCBzbGFzaCB0aGF0IGlzIG5vdCB0aGUgbGVhZGluZyBzbGFzaCwgZS5nLjpcbi8vIFwiL2Zvby9iYXJcIiDih6UgXCIvZm9vXCIsIFwiL2Zvb1wiIOKHpSBcIi9cIiwgXCIvXCIg4oamIFwiXCIuIChUaGUgcm9vdCBpcyBzcGVjaWFsLWNhc2VkXG4vLyBiZWNhdXNlIHRoZSBpZCBvZiB0aGUgcm9vdCBtdXN0IGJlIGEgdHJ1dGh5IHZhbHVlLilcbmZ1bmN0aW9uIHBhcmVudG9mKHBhdGgpIHtcbiAgbGV0IGkgPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGkgPCAyKSByZXR1cm4gXCJcIjtcbiAgd2hpbGUgKC0taSA+IDEpIGlmIChzbGFzaChwYXRoLCBpKSkgYnJlYWs7XG4gIHJldHVybiBwYXRoLnNsaWNlKDAsIGkpO1xufVxuXG4vLyBTbGFzaGVzIGNhbiBiZSBlc2NhcGVkOyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHNsYXNoIGlzIGEgcGF0aCBkZWxpbWl0ZXIsIHdlXG4vLyBjb3VudCB0aGUgbnVtYmVyIG9mIHByZWNlZGluZyBiYWNrc2xhc2hlcyBlc2NhcGluZyB0aGUgZm9yd2FyZCBzbGFzaDogYW4gb2RkXG4vLyBudW1iZXIgaW5kaWNhdGVzIGFuIGVzY2FwZWQgZm9yd2FyZCBzbGFzaC5cbmZ1bmN0aW9uIHNsYXNoKHBhdGgsIGkpIHtcbiAgaWYgKHBhdGhbaV0gPT09IFwiL1wiKSB7XG4gICAgbGV0IGsgPSAwO1xuICAgIHdoaWxlIChpID4gMCAmJiBwYXRoWy0taV0gPT09IFwiXFxcXFwiKSArK2s7XG4gICAgaWYgKChrICYgMSkgPT09IDApIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/stratify.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/tree.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/tree.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hierarchy/index.js */ \"../../../node_modules/d3-hierarchy/src/hierarchy/index.js\");\n\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(_hierarchy_index_js__WEBPACK_IMPORTED_MODULE_0__.Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEwQzs7QUFFMUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakIsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGlCQUFpQjtBQUNqQixjQUFjO0FBQ2Q7O0FBRUEsbUNBQW1DLCtEQUFjOztBQUVqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixRQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcz9kOTdmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tm9kZX0gZnJvbSBcIi4vaGllcmFyY2h5L2luZGV4LmpzXCI7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXBhcmF0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEucGFyZW50ID09PSBiLnBhcmVudCA/IDEgOiAyO1xufVxuXG4vLyBmdW5jdGlvbiByYWRpYWxTZXBhcmF0aW9uKGEsIGIpIHtcbi8vICAgcmV0dXJuIChhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMikgLyBhLmRlcHRoO1xuLy8gfVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGxlZnQgY29udG91ciBvZiBhIHN1YnRyZWUgKG9yXG4vLyBzdWJmb3Jlc3QpLiBJdCByZXR1cm5zIHRoZSBzdWNjZXNzb3Igb2YgdiBvbiB0aGlzIGNvbnRvdXIuIFRoaXMgc3VjY2Vzc29yIGlzXG4vLyBlaXRoZXIgZ2l2ZW4gYnkgdGhlIGxlZnRtb3N0IGNoaWxkIG9mIHYgb3IgYnkgdGhlIHRocmVhZCBvZiB2LiBUaGUgZnVuY3Rpb25cbi8vIHJldHVybnMgbnVsbCBpZiBhbmQgb25seSBpZiB2IGlzIG9uIHRoZSBoaWdoZXN0IGxldmVsIG9mIGl0cyBzdWJ0cmVlLlxuZnVuY3Rpb24gbmV4dExlZnQodikge1xuICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlblswXSA6IHYudDtcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiB3b3JrcyBhbmFsb2dvdXNseSB0byBuZXh0TGVmdC5cbmZ1bmN0aW9uIG5leHRSaWdodCh2KSB7XG4gIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW47XG4gIHJldHVybiBjaGlsZHJlbiA/IGNoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdIDogdi50O1xufVxuXG4vLyBTaGlmdHMgdGhlIGN1cnJlbnQgc3VidHJlZSByb290ZWQgYXQgdysuIFRoaXMgaXMgZG9uZSBieSBpbmNyZWFzaW5nXG4vLyBwcmVsaW0odyspIGFuZCBtb2QodyspIGJ5IHNoaWZ0LlxuZnVuY3Rpb24gbW92ZVN1YnRyZWUod20sIHdwLCBzaGlmdCkge1xuICB2YXIgY2hhbmdlID0gc2hpZnQgLyAod3AuaSAtIHdtLmkpO1xuICB3cC5jIC09IGNoYW5nZTtcbiAgd3AucyArPSBzaGlmdDtcbiAgd20uYyArPSBjaGFuZ2U7XG4gIHdwLnogKz0gc2hpZnQ7XG4gIHdwLm0gKz0gc2hpZnQ7XG59XG5cbi8vIEFsbCBvdGhlciBzaGlmdHMsIGFwcGxpZWQgdG8gdGhlIHNtYWxsZXIgc3VidHJlZXMgYmV0d2VlbiB3LSBhbmQgdyssIGFyZVxuLy8gcGVyZm9ybWVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIHByZXBhcmUgdGhlIHNoaWZ0cywgd2UgaGF2ZSB0byBhZGp1c3Rcbi8vIGNoYW5nZSh3KyksIHNoaWZ0KHcrKSwgYW5kIGNoYW5nZSh3LSkuXG5mdW5jdGlvbiBleGVjdXRlU2hpZnRzKHYpIHtcbiAgdmFyIHNoaWZ0ID0gMCxcbiAgICAgIGNoYW5nZSA9IDAsXG4gICAgICBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICBpID0gY2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgdztcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgdyA9IGNoaWxkcmVuW2ldO1xuICAgIHcueiArPSBzaGlmdDtcbiAgICB3Lm0gKz0gc2hpZnQ7XG4gICAgc2hpZnQgKz0gdy5zICsgKGNoYW5nZSArPSB3LmMpO1xuICB9XG59XG5cbi8vIElmIHZpLeKAmXMgYW5jZXN0b3IgaXMgYSBzaWJsaW5nIG9mIHYsIHJldHVybnMgdmkt4oCZcyBhbmNlc3Rvci4gT3RoZXJ3aXNlLFxuLy8gcmV0dXJucyB0aGUgc3BlY2lmaWVkIChkZWZhdWx0KSBhbmNlc3Rvci5cbmZ1bmN0aW9uIG5leHRBbmNlc3Rvcih2aW0sIHYsIGFuY2VzdG9yKSB7XG4gIHJldHVybiB2aW0uYS5wYXJlbnQgPT09IHYucGFyZW50ID8gdmltLmEgOiBhbmNlc3Rvcjtcbn1cblxuZnVuY3Rpb24gVHJlZU5vZGUobm9kZSwgaSkge1xuICB0aGlzLl8gPSBub2RlO1xuICB0aGlzLnBhcmVudCA9IG51bGw7XG4gIHRoaXMuY2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLkEgPSBudWxsOyAvLyBkZWZhdWx0IGFuY2VzdG9yXG4gIHRoaXMuYSA9IHRoaXM7IC8vIGFuY2VzdG9yXG4gIHRoaXMueiA9IDA7IC8vIHByZWxpbVxuICB0aGlzLm0gPSAwOyAvLyBtb2RcbiAgdGhpcy5jID0gMDsgLy8gY2hhbmdlXG4gIHRoaXMucyA9IDA7IC8vIHNoaWZ0XG4gIHRoaXMudCA9IG51bGw7IC8vIHRocmVhZFxuICB0aGlzLmkgPSBpOyAvLyBudW1iZXJcbn1cblxuVHJlZU5vZGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShOb2RlLnByb3RvdHlwZSk7XG5cbmZ1bmN0aW9uIHRyZWVSb290KHJvb3QpIHtcbiAgdmFyIHRyZWUgPSBuZXcgVHJlZU5vZGUocm9vdCwgMCksXG4gICAgICBub2RlLFxuICAgICAgbm9kZXMgPSBbdHJlZV0sXG4gICAgICBjaGlsZCxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgaSxcbiAgICAgIG47XG5cbiAgd2hpbGUgKG5vZGUgPSBub2Rlcy5wb3AoKSkge1xuICAgIGlmIChjaGlsZHJlbiA9IG5vZGUuXy5jaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IG5ldyBBcnJheShuID0gY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IG4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICBub2Rlcy5wdXNoKGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXSA9IG5ldyBUcmVlTm9kZShjaGlsZHJlbltpXSwgaSkpO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICh0cmVlLnBhcmVudCA9IG5ldyBUcmVlTm9kZShudWxsLCAwKSkuY2hpbGRyZW4gPSBbdHJlZV07XG4gIHJldHVybiB0cmVlO1xufVxuXG4vLyBOb2RlLWxpbmsgdHJlZSBkaWFncmFtIHVzaW5nIHRoZSBSZWluZ29sZC1UaWxmb3JkIFwidGlkeVwiIGFsZ29yaXRobVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBzZXBhcmF0aW9uID0gZGVmYXVsdFNlcGFyYXRpb24sXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBub2RlU2l6ZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gdHJlZShyb290KSB7XG4gICAgdmFyIHQgPSB0cmVlUm9vdChyb290KTtcblxuICAgIC8vIENvbXB1dGUgdGhlIGxheW91dCB1c2luZyBCdWNoaGVpbSBldCBhbC7igJlzIGFsZ29yaXRobS5cbiAgICB0LmVhY2hBZnRlcihmaXJzdFdhbGspLCB0LnBhcmVudC5tID0gLXQuejtcbiAgICB0LmVhY2hCZWZvcmUoc2Vjb25kV2Fsayk7XG5cbiAgICAvLyBJZiBhIGZpeGVkIG5vZGUgc2l6ZSBpcyBzcGVjaWZpZWQsIHNjYWxlIHggYW5kIHkuXG4gICAgaWYgKG5vZGVTaXplKSByb290LmVhY2hCZWZvcmUoc2l6ZU5vZGUpO1xuXG4gICAgLy8gSWYgYSBmaXhlZCB0cmVlIHNpemUgaXMgc3BlY2lmaWVkLCBzY2FsZSB4IGFuZCB5IGJhc2VkIG9uIHRoZSBleHRlbnQuXG4gICAgLy8gQ29tcHV0ZSB0aGUgbGVmdC1tb3N0LCByaWdodC1tb3N0LCBhbmQgZGVwdGgtbW9zdCBub2RlcyBmb3IgZXh0ZW50cy5cbiAgICBlbHNlIHtcbiAgICAgIHZhciBsZWZ0ID0gcm9vdCxcbiAgICAgICAgICByaWdodCA9IHJvb3QsXG4gICAgICAgICAgYm90dG9tID0gcm9vdDtcbiAgICAgIHJvb3QuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnggPCBsZWZ0LngpIGxlZnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS54ID4gcmlnaHQueCkgcmlnaHQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZS5kZXB0aCA+IGJvdHRvbS5kZXB0aCkgYm90dG9tID0gbm9kZTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHMgPSBsZWZ0ID09PSByaWdodCA/IDEgOiBzZXBhcmF0aW9uKGxlZnQsIHJpZ2h0KSAvIDIsXG4gICAgICAgICAgdHggPSBzIC0gbGVmdC54LFxuICAgICAgICAgIGt4ID0gZHggLyAocmlnaHQueCArIHMgKyB0eCksXG4gICAgICAgICAga3kgPSBkeSAvIChib3R0b20uZGVwdGggfHwgMSk7XG4gICAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBub2RlLnggPSAobm9kZS54ICsgdHgpICoga3g7XG4gICAgICAgIG5vZGUueSA9IG5vZGUuZGVwdGggKiBreTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb290O1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYSBwcmVsaW1pbmFyeSB4LWNvb3JkaW5hdGUgZm9yIHYuIEJlZm9yZSB0aGF0LCBGSVJTVCBXQUxLIGlzXG4gIC8vIGFwcGxpZWQgcmVjdXJzaXZlbHkgdG8gdGhlIGNoaWxkcmVuIG9mIHYsIGFzIHdlbGwgYXMgdGhlIGZ1bmN0aW9uXG4gIC8vIEFQUE9SVElPTi4gQWZ0ZXIgc3BhY2luZyBvdXQgdGhlIGNoaWxkcmVuIGJ5IGNhbGxpbmcgRVhFQ1VURSBTSElGVFMsIHRoZVxuICAvLyBub2RlIHYgaXMgcGxhY2VkIHRvIHRoZSBtaWRwb2ludCBvZiBpdHMgb3V0ZXJtb3N0IGNoaWxkcmVuLlxuICBmdW5jdGlvbiBmaXJzdFdhbGsodikge1xuICAgIHZhciBjaGlsZHJlbiA9IHYuY2hpbGRyZW4sXG4gICAgICAgIHNpYmxpbmdzID0gdi5wYXJlbnQuY2hpbGRyZW4sXG4gICAgICAgIHcgPSB2LmkgPyBzaWJsaW5nc1t2LmkgLSAxXSA6IG51bGw7XG4gICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICBleGVjdXRlU2hpZnRzKHYpO1xuICAgICAgdmFyIG1pZHBvaW50ID0gKGNoaWxkcmVuWzBdLnogKyBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXS56KSAvIDI7XG4gICAgICBpZiAodykge1xuICAgICAgICB2LnogPSB3LnogKyBzZXBhcmF0aW9uKHYuXywgdy5fKTtcbiAgICAgICAgdi5tID0gdi56IC0gbWlkcG9pbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2LnogPSBtaWRwb2ludDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHcpIHtcbiAgICAgIHYueiA9IHcueiArIHNlcGFyYXRpb24odi5fLCB3Ll8pO1xuICAgIH1cbiAgICB2LnBhcmVudC5BID0gYXBwb3J0aW9uKHYsIHcsIHYucGFyZW50LkEgfHwgc2libGluZ3NbMF0pO1xuICB9XG5cbiAgLy8gQ29tcHV0ZXMgYWxsIHJlYWwgeC1jb29yZGluYXRlcyBieSBzdW1taW5nIHVwIHRoZSBtb2RpZmllcnMgcmVjdXJzaXZlbHkuXG4gIGZ1bmN0aW9uIHNlY29uZFdhbGsodikge1xuICAgIHYuXy54ID0gdi56ICsgdi5wYXJlbnQubTtcbiAgICB2Lm0gKz0gdi5wYXJlbnQubTtcbiAgfVxuXG4gIC8vIFRoZSBjb3JlIG9mIHRoZSBhbGdvcml0aG0uIEhlcmUsIGEgbmV3IHN1YnRyZWUgaXMgY29tYmluZWQgd2l0aCB0aGVcbiAgLy8gcHJldmlvdXMgc3VidHJlZXMuIFRocmVhZHMgYXJlIHVzZWQgdG8gdHJhdmVyc2UgdGhlIGluc2lkZSBhbmQgb3V0c2lkZVxuICAvLyBjb250b3VycyBvZiB0aGUgbGVmdCBhbmQgcmlnaHQgc3VidHJlZSB1cCB0byB0aGUgaGlnaGVzdCBjb21tb24gbGV2ZWwuIFRoZVxuICAvLyB2ZXJ0aWNlcyB1c2VkIGZvciB0aGUgdHJhdmVyc2FscyBhcmUgdmkrLCB2aS0sIHZvLSwgYW5kIHZvKywgd2hlcmUgdGhlXG4gIC8vIHN1cGVyc2NyaXB0IG8gbWVhbnMgb3V0c2lkZSBhbmQgaSBtZWFucyBpbnNpZGUsIHRoZSBzdWJzY3JpcHQgLSBtZWFucyBsZWZ0XG4gIC8vIHN1YnRyZWUgYW5kICsgbWVhbnMgcmlnaHQgc3VidHJlZS4gRm9yIHN1bW1pbmcgdXAgdGhlIG1vZGlmaWVycyBhbG9uZyB0aGVcbiAgLy8gY29udG91ciwgd2UgdXNlIHJlc3BlY3RpdmUgdmFyaWFibGVzIHNpKywgc2ktLCBzby0sIGFuZCBzbysuIFdoZW5ldmVyIHR3b1xuICAvLyBub2RlcyBvZiB0aGUgaW5zaWRlIGNvbnRvdXJzIGNvbmZsaWN0LCB3ZSBjb21wdXRlIHRoZSBsZWZ0IG9uZSBvZiB0aGVcbiAgLy8gZ3JlYXRlc3QgdW5jb21tb24gYW5jZXN0b3JzIHVzaW5nIHRoZSBmdW5jdGlvbiBBTkNFU1RPUiBhbmQgY2FsbCBNT1ZFXG4gIC8vIFNVQlRSRUUgdG8gc2hpZnQgdGhlIHN1YnRyZWUgYW5kIHByZXBhcmUgdGhlIHNoaWZ0cyBvZiBzbWFsbGVyIHN1YnRyZWVzLlxuICAvLyBGaW5hbGx5LCB3ZSBhZGQgYSBuZXcgdGhyZWFkIChpZiBuZWNlc3NhcnkpLlxuICBmdW5jdGlvbiBhcHBvcnRpb24odiwgdywgYW5jZXN0b3IpIHtcbiAgICBpZiAodykge1xuICAgICAgdmFyIHZpcCA9IHYsXG4gICAgICAgICAgdm9wID0gdixcbiAgICAgICAgICB2aW0gPSB3LFxuICAgICAgICAgIHZvbSA9IHZpcC5wYXJlbnQuY2hpbGRyZW5bMF0sXG4gICAgICAgICAgc2lwID0gdmlwLm0sXG4gICAgICAgICAgc29wID0gdm9wLm0sXG4gICAgICAgICAgc2ltID0gdmltLm0sXG4gICAgICAgICAgc29tID0gdm9tLm0sXG4gICAgICAgICAgc2hpZnQ7XG4gICAgICB3aGlsZSAodmltID0gbmV4dFJpZ2h0KHZpbSksIHZpcCA9IG5leHRMZWZ0KHZpcCksIHZpbSAmJiB2aXApIHtcbiAgICAgICAgdm9tID0gbmV4dExlZnQodm9tKTtcbiAgICAgICAgdm9wID0gbmV4dFJpZ2h0KHZvcCk7XG4gICAgICAgIHZvcC5hID0gdjtcbiAgICAgICAgc2hpZnQgPSB2aW0ueiArIHNpbSAtIHZpcC56IC0gc2lwICsgc2VwYXJhdGlvbih2aW0uXywgdmlwLl8pO1xuICAgICAgICBpZiAoc2hpZnQgPiAwKSB7XG4gICAgICAgICAgbW92ZVN1YnRyZWUobmV4dEFuY2VzdG9yKHZpbSwgdiwgYW5jZXN0b3IpLCB2LCBzaGlmdCk7XG4gICAgICAgICAgc2lwICs9IHNoaWZ0O1xuICAgICAgICAgIHNvcCArPSBzaGlmdDtcbiAgICAgICAgfVxuICAgICAgICBzaW0gKz0gdmltLm07XG4gICAgICAgIHNpcCArPSB2aXAubTtcbiAgICAgICAgc29tICs9IHZvbS5tO1xuICAgICAgICBzb3AgKz0gdm9wLm07XG4gICAgICB9XG4gICAgICBpZiAodmltICYmICFuZXh0UmlnaHQodm9wKSkge1xuICAgICAgICB2b3AudCA9IHZpbTtcbiAgICAgICAgdm9wLm0gKz0gc2ltIC0gc29wO1xuICAgICAgfVxuICAgICAgaWYgKHZpcCAmJiAhbmV4dExlZnQodm9tKSkge1xuICAgICAgICB2b20udCA9IHZpcDtcbiAgICAgICAgdm9tLm0gKz0gc2lwIC0gc29tO1xuICAgICAgICBhbmNlc3RvciA9IHY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbmNlc3RvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNpemVOb2RlKG5vZGUpIHtcbiAgICBub2RlLnggKj0gZHg7XG4gICAgbm9kZS55ID0gbm9kZS5kZXB0aCAqIGR5O1xuICB9XG5cbiAgdHJlZS5zZXBhcmF0aW9uID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNlcGFyYXRpb24gPSB4LCB0cmVlKSA6IHNlcGFyYXRpb247XG4gIH07XG5cbiAgdHJlZS5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gZmFsc2UsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWUpIDogKG5vZGVTaXplID8gbnVsbCA6IFtkeCwgZHldKTtcbiAgfTtcblxuICB0cmVlLm5vZGVTaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG5vZGVTaXplID0gdHJ1ZSwgZHggPSAreFswXSwgZHkgPSAreFsxXSwgdHJlZSkgOiAobm9kZVNpemUgPyBbZHgsIGR5XSA6IG51bGwpO1xuICB9O1xuXG4gIHJldHVybiB0cmVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/tree.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/binary.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/binary.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9iaW5hcnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsT0FBTztBQUNyQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9iaW5hcnkuanM/MGEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIGksIG4gPSBub2Rlcy5sZW5ndGgsXG4gICAgICBzdW0sIHN1bXMgPSBuZXcgQXJyYXkobiArIDEpO1xuXG4gIGZvciAoc3Vtc1swXSA9IHN1bSA9IGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgc3Vtc1tpICsgMV0gPSBzdW0gKz0gbm9kZXNbaV0udmFsdWU7XG4gIH1cblxuICBwYXJ0aXRpb24oMCwgbiwgcGFyZW50LnZhbHVlLCB4MCwgeTAsIHgxLCB5MSk7XG5cbiAgZnVuY3Rpb24gcGFydGl0aW9uKGksIGosIHZhbHVlLCB4MCwgeTAsIHgxLCB5MSkge1xuICAgIGlmIChpID49IGogLSAxKSB7XG4gICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgbm9kZS54MCA9IHgwLCBub2RlLnkwID0geTA7XG4gICAgICBub2RlLngxID0geDEsIG5vZGUueTEgPSB5MTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVPZmZzZXQgPSBzdW1zW2ldLFxuICAgICAgICB2YWx1ZVRhcmdldCA9ICh2YWx1ZSAvIDIpICsgdmFsdWVPZmZzZXQsXG4gICAgICAgIGsgPSBpICsgMSxcbiAgICAgICAgaGkgPSBqIC0gMTtcblxuICAgIHdoaWxlIChrIDwgaGkpIHtcbiAgICAgIHZhciBtaWQgPSBrICsgaGkgPj4+IDE7XG4gICAgICBpZiAoc3Vtc1ttaWRdIDwgdmFsdWVUYXJnZXQpIGsgPSBtaWQgKyAxO1xuICAgICAgZWxzZSBoaSA9IG1pZDtcbiAgICB9XG5cbiAgICBpZiAoKHZhbHVlVGFyZ2V0IC0gc3Vtc1trIC0gMV0pIDwgKHN1bXNba10gLSB2YWx1ZVRhcmdldCkgJiYgaSArIDEgPCBrKSAtLWs7XG5cbiAgICB2YXIgdmFsdWVMZWZ0ID0gc3Vtc1trXSAtIHZhbHVlT2Zmc2V0LFxuICAgICAgICB2YWx1ZVJpZ2h0ID0gdmFsdWUgLSB2YWx1ZUxlZnQ7XG5cbiAgICBpZiAoKHgxIC0geDApID4gKHkxIC0geTApKSB7XG4gICAgICB2YXIgeGsgPSB2YWx1ZSA/ICh4MCAqIHZhbHVlUmlnaHQgKyB4MSAqIHZhbHVlTGVmdCkgLyB2YWx1ZSA6IHgxO1xuICAgICAgcGFydGl0aW9uKGksIGssIHZhbHVlTGVmdCwgeDAsIHkwLCB4aywgeTEpO1xuICAgICAgcGFydGl0aW9uKGssIGosIHZhbHVlUmlnaHQsIHhrLCB5MCwgeDEsIHkxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHlrID0gdmFsdWUgPyAoeTAgKiB2YWx1ZVJpZ2h0ICsgeTEgKiB2YWx1ZUxlZnQpIC8gdmFsdWUgOiB5MTtcbiAgICAgIHBhcnRpdGlvbihpLCBrLCB2YWx1ZUxlZnQsIHgwLCB5MCwgeDEsIHlrKTtcbiAgICAgIHBhcnRpdGlvbihrLCBqLCB2YWx1ZVJpZ2h0LCB4MCwgeWssIHgxLCB5MSk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/binary.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/dice.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/dice.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9kaWNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9kaWNlLmpzP2Y2Y2YiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICBub2RlLFxuICAgICAgaSA9IC0xLFxuICAgICAgbiA9IG5vZGVzLmxlbmd0aCxcbiAgICAgIGsgPSBwYXJlbnQudmFsdWUgJiYgKHgxIC0geDApIC8gcGFyZW50LnZhbHVlO1xuXG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgbm9kZSA9IG5vZGVzW2ldLCBub2RlLnkwID0geTAsIG5vZGUueTEgPSB5MTtcbiAgICBub2RlLngwID0geDAsIG5vZGUueDEgPSB4MCArPSBub2RlLnZhbHVlICogaztcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/dice.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/index.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./round.js */ \"../../../node_modules/d3-hierarchy/src/treemap/round.js\");\n/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./squarify.js */ \"../../../node_modules/d3-hierarchy/src/treemap/squarify.js\");\n/* harmony import */ var _accessors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../accessors.js */ \"../../../node_modules/d3-hierarchy/src/accessors.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant.js */ \"../../../node_modules/d3-hierarchy/src/constant.js\");\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var tile = _squarify_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = _constant_js__WEBPACK_IMPORTED_MODULE_1__.constantZero,\n paddingTop = _constant_js__WEBPACK_IMPORTED_MODULE_1__.constantZero,\n paddingRight = _constant_js__WEBPACK_IMPORTED_MODULE_1__.constantZero,\n paddingBottom = _constant_js__WEBPACK_IMPORTED_MODULE_1__.constantZero,\n paddingLeft = _constant_js__WEBPACK_IMPORTED_MODULE_1__.constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(_round_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = (0,_accessors_js__WEBPACK_IMPORTED_MODULE_3__.required)(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFtQztBQUNFO0FBQ0k7QUFDYTs7QUFFdEQsNkJBQWUsc0NBQVc7QUFDMUIsYUFBYSxvREFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixzREFBWTtBQUNqQyxtQkFBbUIsc0RBQVk7QUFDL0IscUJBQXFCLHNEQUFZO0FBQ2pDLHNCQUFzQixzREFBWTtBQUNsQyxvQkFBb0Isc0RBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGlEQUFTO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0NBQXNDLHVEQUFRO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRFQUE0RSx3REFBUTtBQUNwRjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwRUFBMEUsd0RBQVE7QUFDbEY7O0FBRUE7QUFDQSw0RUFBNEUsd0RBQVE7QUFDcEY7O0FBRUE7QUFDQSw2RUFBNkUsd0RBQVE7QUFDckY7O0FBRUE7QUFDQSwyRUFBMkUsd0RBQVE7QUFDbkY7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL2luZGV4LmpzPzcwYTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJvdW5kTm9kZSBmcm9tIFwiLi9yb3VuZC5qc1wiO1xuaW1wb3J0IHNxdWFyaWZ5IGZyb20gXCIuL3NxdWFyaWZ5LmpzXCI7XG5pbXBvcnQge3JlcXVpcmVkfSBmcm9tIFwiLi4vYWNjZXNzb3JzLmpzXCI7XG5pbXBvcnQgY29uc3RhbnQsIHtjb25zdGFudFplcm99IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHRpbGUgPSBzcXVhcmlmeSxcbiAgICAgIHJvdW5kID0gZmFsc2UsXG4gICAgICBkeCA9IDEsXG4gICAgICBkeSA9IDEsXG4gICAgICBwYWRkaW5nU3RhY2sgPSBbMF0sXG4gICAgICBwYWRkaW5nSW5uZXIgPSBjb25zdGFudFplcm8sXG4gICAgICBwYWRkaW5nVG9wID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ1JpZ2h0ID0gY29uc3RhbnRaZXJvLFxuICAgICAgcGFkZGluZ0JvdHRvbSA9IGNvbnN0YW50WmVybyxcbiAgICAgIHBhZGRpbmdMZWZ0ID0gY29uc3RhbnRaZXJvO1xuXG4gIGZ1bmN0aW9uIHRyZWVtYXAocm9vdCkge1xuICAgIHJvb3QueDAgPVxuICAgIHJvb3QueTAgPSAwO1xuICAgIHJvb3QueDEgPSBkeDtcbiAgICByb290LnkxID0gZHk7XG4gICAgcm9vdC5lYWNoQmVmb3JlKHBvc2l0aW9uTm9kZSk7XG4gICAgcGFkZGluZ1N0YWNrID0gWzBdO1xuICAgIGlmIChyb3VuZCkgcm9vdC5lYWNoQmVmb3JlKHJvdW5kTm9kZSk7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBmdW5jdGlvbiBwb3NpdGlvbk5vZGUobm9kZSkge1xuICAgIHZhciBwID0gcGFkZGluZ1N0YWNrW25vZGUuZGVwdGhdLFxuICAgICAgICB4MCA9IG5vZGUueDAgKyBwLFxuICAgICAgICB5MCA9IG5vZGUueTAgKyBwLFxuICAgICAgICB4MSA9IG5vZGUueDEgLSBwLFxuICAgICAgICB5MSA9IG5vZGUueTEgLSBwO1xuICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICBpZiAoeTEgPCB5MCkgeTAgPSB5MSA9ICh5MCArIHkxKSAvIDI7XG4gICAgbm9kZS54MCA9IHgwO1xuICAgIG5vZGUueTAgPSB5MDtcbiAgICBub2RlLngxID0geDE7XG4gICAgbm9kZS55MSA9IHkxO1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBwID0gcGFkZGluZ1N0YWNrW25vZGUuZGVwdGggKyAxXSA9IHBhZGRpbmdJbm5lcihub2RlKSAvIDI7XG4gICAgICB4MCArPSBwYWRkaW5nTGVmdChub2RlKSAtIHA7XG4gICAgICB5MCArPSBwYWRkaW5nVG9wKG5vZGUpIC0gcDtcbiAgICAgIHgxIC09IHBhZGRpbmdSaWdodChub2RlKSAtIHA7XG4gICAgICB5MSAtPSBwYWRkaW5nQm90dG9tKG5vZGUpIC0gcDtcbiAgICAgIGlmICh4MSA8IHgwKSB4MCA9IHgxID0gKHgwICsgeDEpIC8gMjtcbiAgICAgIGlmICh5MSA8IHkwKSB5MCA9IHkxID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIHRpbGUobm9kZSwgeDAsIHkwLCB4MSwgeTEpO1xuICAgIH1cbiAgfVxuXG4gIHRyZWVtYXAucm91bmQgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIXgsIHRyZWVtYXApIDogcm91bmQ7XG4gIH07XG5cbiAgdHJlZW1hcC5zaXplID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWVtYXApIDogW2R4LCBkeV07XG4gIH07XG5cbiAgdHJlZW1hcC50aWxlID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRpbGUgPSByZXF1aXJlZCh4KSwgdHJlZW1hcCkgOiB0aWxlO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRyZWVtYXAucGFkZGluZ0lubmVyKHgpLnBhZGRpbmdPdXRlcih4KSA6IHRyZWVtYXAucGFkZGluZ0lubmVyKCk7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nSW5uZXIgPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0lubmVyID0gdHlwZW9mIHggPT09IFwiZnVuY3Rpb25cIiA/IHggOiBjb25zdGFudCgreCksIHRyZWVtYXApIDogcGFkZGluZ0lubmVyO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ091dGVyID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gdHJlZW1hcC5wYWRkaW5nVG9wKHgpLnBhZGRpbmdSaWdodCh4KS5wYWRkaW5nQm90dG9tKHgpLnBhZGRpbmdMZWZ0KHgpIDogdHJlZW1hcC5wYWRkaW5nVG9wKCk7XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nVG9wID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdUb3AgPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6IGNvbnN0YW50KCt4KSwgdHJlZW1hcCkgOiBwYWRkaW5nVG9wO1xuICB9O1xuXG4gIHRyZWVtYXAucGFkZGluZ1JpZ2h0ID0gZnVuY3Rpb24oeCkge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdSaWdodCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdSaWdodDtcbiAgfTtcblxuICB0cmVlbWFwLnBhZGRpbmdCb3R0b20gPSBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0JvdHRvbSA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdCb3R0b207XG4gIH07XG5cbiAgdHJlZW1hcC5wYWRkaW5nTGVmdCA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwYWRkaW5nTGVmdCA9IHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4IDogY29uc3RhbnQoK3gpLCB0cmVlbWFwKSA6IHBhZGRpbmdMZWZ0O1xuICB9O1xuXG4gIHJldHVybiB0cmVlbWFwO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/resquarify.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/resquarify.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/slice.js\");\n/* harmony import */ var _squarify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./squarify.js */ \"../../../node_modules/d3-hierarchy/src/treemap/squarify.js\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) (0,_dice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else (0,_slice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = (0,_squarify_js__WEBPACK_IMPORTED_MODULE_2__.squarifyRatio)(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(_squarify_js__WEBPACK_IMPORTED_MODULE_2__.phi));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9yZXNxdWFyaWZ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBb0M7QUFDRTtBQUNXOztBQUVqRCxpRUFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0RBQWtELE9BQU87QUFDekQsc0JBQXNCLG9EQUFXO0FBQ2pDLGFBQWEscURBQVk7QUFDekI7QUFDQTtBQUNBLE1BQU07QUFDTixnQ0FBZ0MsMkRBQWE7QUFDN0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsRUFBRSw2Q0FBRyxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9yZXNxdWFyaWZ5LmpzP2U1NDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRyZWVtYXBEaWNlIGZyb20gXCIuL2RpY2UuanNcIjtcbmltcG9ydCB0cmVlbWFwU2xpY2UgZnJvbSBcIi4vc2xpY2UuanNcIjtcbmltcG9ydCB7cGhpLCBzcXVhcmlmeVJhdGlvfSBmcm9tIFwiLi9zcXVhcmlmeS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHJhdGlvKSB7XG5cbiAgZnVuY3Rpb24gcmVzcXVhcmlmeShwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgaWYgKChyb3dzID0gcGFyZW50Ll9zcXVhcmlmeSkgJiYgKHJvd3MucmF0aW8gPT09IHJhdGlvKSkge1xuICAgICAgdmFyIHJvd3MsXG4gICAgICAgICAgcm93LFxuICAgICAgICAgIG5vZGVzLFxuICAgICAgICAgIGksXG4gICAgICAgICAgaiA9IC0xLFxuICAgICAgICAgIG4sXG4gICAgICAgICAgbSA9IHJvd3MubGVuZ3RoLFxuICAgICAgICAgIHZhbHVlID0gcGFyZW50LnZhbHVlO1xuXG4gICAgICB3aGlsZSAoKytqIDwgbSkge1xuICAgICAgICByb3cgPSByb3dzW2pdLCBub2RlcyA9IHJvdy5jaGlsZHJlbjtcbiAgICAgICAgZm9yIChpID0gcm93LnZhbHVlID0gMCwgbiA9IG5vZGVzLmxlbmd0aDsgaSA8IG47ICsraSkgcm93LnZhbHVlICs9IG5vZGVzW2ldLnZhbHVlO1xuICAgICAgICBpZiAocm93LmRpY2UpIHRyZWVtYXBEaWNlKHJvdywgeDAsIHkwLCB4MSwgdmFsdWUgPyB5MCArPSAoeTEgLSB5MCkgKiByb3cudmFsdWUgLyB2YWx1ZSA6IHkxKTtcbiAgICAgICAgZWxzZSB0cmVlbWFwU2xpY2Uocm93LCB4MCwgeTAsIHZhbHVlID8geDAgKz0gKHgxIC0geDApICogcm93LnZhbHVlIC8gdmFsdWUgOiB4MSwgeTEpO1xuICAgICAgICB2YWx1ZSAtPSByb3cudmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudC5fc3F1YXJpZnkgPSByb3dzID0gc3F1YXJpZnlSYXRpbyhyYXRpbywgcGFyZW50LCB4MCwgeTAsIHgxLCB5MSk7XG4gICAgICByb3dzLnJhdGlvID0gcmF0aW87XG4gICAgfVxuICB9XG5cbiAgcmVzcXVhcmlmeS5yYXRpbyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gY3VzdG9tKCh4ID0gK3gpID4gMSA/IHggOiAxKTtcbiAgfTtcblxuICByZXR1cm4gcmVzcXVhcmlmeTtcbn0pKHBoaSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/resquarify.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/round.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/round.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9yb3VuZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3JvdW5kLmpzP2RmZWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSkge1xuICBub2RlLngwID0gTWF0aC5yb3VuZChub2RlLngwKTtcbiAgbm9kZS55MCA9IE1hdGgucm91bmQobm9kZS55MCk7XG4gIG5vZGUueDEgPSBNYXRoLnJvdW5kKG5vZGUueDEpO1xuICBub2RlLnkxID0gTWF0aC5yb3VuZChub2RlLnkxKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/round.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/slice.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/slice.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zbGljZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc2xpY2UuanM/YjM5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeTEgLSB5MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgxO1xuICAgIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/slice.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/slice.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? _slice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : _dice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(parent, x0, y0, x1, y1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zbGljZURpY2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ0U7O0FBRS9CLDZCQUFlLG9DQUFTO0FBQ3hCLHNCQUFzQixpREFBSyxHQUFHLGdEQUFJO0FBQ2xDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL3RyZWVtYXAvc2xpY2VEaWNlLmpzPzdmNzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRpY2UgZnJvbSBcIi4vZGljZS5qc1wiO1xuaW1wb3J0IHNsaWNlIGZyb20gXCIuL3NsaWNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgKHBhcmVudC5kZXB0aCAmIDEgPyBzbGljZSA6IGRpY2UpKHBhcmVudCwgeDAsIHkwLCB4MSwgeTEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/sliceDice.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-hierarchy/src/treemap/squarify.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-hierarchy/src/treemap/squarify.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"phi\": () => (/* binding */ phi),\n/* harmony export */ \"squarifyRatio\": () => (/* binding */ squarifyRatio)\n/* harmony export */ });\n/* harmony import */ var _dice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/dice.js\");\n/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ \"../../../node_modules/d3-hierarchy/src/treemap/slice.js\");\n\n\n\nvar phi = (1 + Math.sqrt(5)) / 2;\n\nfunction squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) (0,_dice_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else (0,_slice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZW1hcC9zcXVhcmlmeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFvQztBQUNFOztBQUUvQjs7QUFFQTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyx1QkFBdUI7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQiw4REFBOEQ7QUFDbkYsa0JBQWtCLG9EQUFXO0FBQzdCLFNBQVMscURBQVk7QUFDckI7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlOztBQUVmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NxdWFyaWZ5LmpzP2E1ZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRyZWVtYXBEaWNlIGZyb20gXCIuL2RpY2UuanNcIjtcbmltcG9ydCB0cmVlbWFwU2xpY2UgZnJvbSBcIi4vc2xpY2UuanNcIjtcblxuZXhwb3J0IHZhciBwaGkgPSAoMSArIE1hdGguc3FydCg1KSkgLyAyO1xuXG5leHBvcnQgZnVuY3Rpb24gc3F1YXJpZnlSYXRpbyhyYXRpbywgcGFyZW50LCB4MCwgeTAsIHgxLCB5MSkge1xuICB2YXIgcm93cyA9IFtdLFxuICAgICAgbm9kZXMgPSBwYXJlbnQuY2hpbGRyZW4sXG4gICAgICByb3csXG4gICAgICBub2RlVmFsdWUsXG4gICAgICBpMCA9IDAsXG4gICAgICBpMSA9IDAsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgZHgsIGR5LFxuICAgICAgdmFsdWUgPSBwYXJlbnQudmFsdWUsXG4gICAgICBzdW1WYWx1ZSxcbiAgICAgIG1pblZhbHVlLFxuICAgICAgbWF4VmFsdWUsXG4gICAgICBuZXdSYXRpbyxcbiAgICAgIG1pblJhdGlvLFxuICAgICAgYWxwaGEsXG4gICAgICBiZXRhO1xuXG4gIHdoaWxlIChpMCA8IG4pIHtcbiAgICBkeCA9IHgxIC0geDAsIGR5ID0geTEgLSB5MDtcblxuICAgIC8vIEZpbmQgdGhlIG5leHQgbm9uLWVtcHR5IG5vZGUuXG4gICAgZG8gc3VtVmFsdWUgPSBub2Rlc1tpMSsrXS52YWx1ZTsgd2hpbGUgKCFzdW1WYWx1ZSAmJiBpMSA8IG4pO1xuICAgIG1pblZhbHVlID0gbWF4VmFsdWUgPSBzdW1WYWx1ZTtcbiAgICBhbHBoYSA9IE1hdGgubWF4KGR5IC8gZHgsIGR4IC8gZHkpIC8gKHZhbHVlICogcmF0aW8pO1xuICAgIGJldGEgPSBzdW1WYWx1ZSAqIHN1bVZhbHVlICogYWxwaGE7XG4gICAgbWluUmF0aW8gPSBNYXRoLm1heChtYXhWYWx1ZSAvIGJldGEsIGJldGEgLyBtaW5WYWx1ZSk7XG5cbiAgICAvLyBLZWVwIGFkZGluZyBub2RlcyB3aGlsZSB0aGUgYXNwZWN0IHJhdGlvIG1haW50YWlucyBvciBpbXByb3Zlcy5cbiAgICBmb3IgKDsgaTEgPCBuOyArK2kxKSB7XG4gICAgICBzdW1WYWx1ZSArPSBub2RlVmFsdWUgPSBub2Rlc1tpMV0udmFsdWU7XG4gICAgICBpZiAobm9kZVZhbHVlIDwgbWluVmFsdWUpIG1pblZhbHVlID0gbm9kZVZhbHVlO1xuICAgICAgaWYgKG5vZGVWYWx1ZSA+IG1heFZhbHVlKSBtYXhWYWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICAgIGJldGEgPSBzdW1WYWx1ZSAqIHN1bVZhbHVlICogYWxwaGE7XG4gICAgICBuZXdSYXRpbyA9IE1hdGgubWF4KG1heFZhbHVlIC8gYmV0YSwgYmV0YSAvIG1pblZhbHVlKTtcbiAgICAgIGlmIChuZXdSYXRpbyA+IG1pblJhdGlvKSB7IHN1bVZhbHVlIC09IG5vZGVWYWx1ZTsgYnJlYWs7IH1cbiAgICAgIG1pblJhdGlvID0gbmV3UmF0aW87XG4gICAgfVxuXG4gICAgLy8gUG9zaXRpb24gYW5kIHJlY29yZCB0aGUgcm93IG9yaWVudGF0aW9uLlxuICAgIHJvd3MucHVzaChyb3cgPSB7dmFsdWU6IHN1bVZhbHVlLCBkaWNlOiBkeCA8IGR5LCBjaGlsZHJlbjogbm9kZXMuc2xpY2UoaTAsIGkxKX0pO1xuICAgIGlmIChyb3cuZGljZSkgdHJlZW1hcERpY2Uocm93LCB4MCwgeTAsIHgxLCB2YWx1ZSA/IHkwICs9IGR5ICogc3VtVmFsdWUgLyB2YWx1ZSA6IHkxKTtcbiAgICBlbHNlIHRyZWVtYXBTbGljZShyb3csIHgwLCB5MCwgdmFsdWUgPyB4MCArPSBkeCAqIHN1bVZhbHVlIC8gdmFsdWUgOiB4MSwgeTEpO1xuICAgIHZhbHVlIC09IHN1bVZhbHVlLCBpMCA9IGkxO1xuICB9XG5cbiAgcmV0dXJuIHJvd3M7XG59XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20ocmF0aW8pIHtcblxuICBmdW5jdGlvbiBzcXVhcmlmeShwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgc3F1YXJpZnlSYXRpbyhyYXRpbywgcGFyZW50LCB4MCwgeTAsIHgxLCB5MSk7XG4gIH1cblxuICBzcXVhcmlmeS5yYXRpbyA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gY3VzdG9tKCh4ID0gK3gpID4gMSA/IHggOiAxKTtcbiAgfTtcblxuICByZXR1cm4gc3F1YXJpZnk7XG59KShwaGkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-hierarchy/src/treemap/squarify.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/array.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/array.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"genericArray\": () => (/* binding */ genericArray)\n/* harmony export */ });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./value.js */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./numberArray.js */ \"../../../node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return ((0,_numberArray_js__WEBPACK_IMPORTED_MODULE_0__.isNumberArray)(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : genericArray)(a, b);\n}\n\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = (0,_value_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStCO0FBQzZCOztBQUU1RCw2QkFBZSxvQ0FBUztBQUN4QixVQUFVLDhEQUFhLE1BQU0sdURBQVc7QUFDeEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsUUFBUSxZQUFZLHFEQUFLO0FBQ3ZDLFNBQVMsUUFBUTs7QUFFakI7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9hcnJheS5qcz80ZDliIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuaW1wb3J0IG51bWJlckFycmF5LCB7aXNOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gKGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheSA6IGdlbmVyaWNBcnJheSkoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmljQXJyYXkoYSwgYikge1xuICB2YXIgbmIgPSBiID8gYi5sZW5ndGggOiAwLFxuICAgICAgbmEgPSBhID8gTWF0aC5taW4obmIsIGEubGVuZ3RoKSA6IDAsXG4gICAgICB4ID0gbmV3IEFycmF5KG5hKSxcbiAgICAgIGMgPSBuZXcgQXJyYXkobmIpLFxuICAgICAgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgeFtpXSA9IHZhbHVlKGFbaV0sIGJbaV0pO1xuICBmb3IgKDsgaSA8IG5iOyArK2kpIGNbaV0gPSBiW2ldO1xuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG5hOyArK2kpIGNbaV0gPSB4W2ldKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/basis.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/basis.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"basis\": () => (/* binding */ basis),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvYmFzaXMuanM/N2U5NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYmFzaXModDEsIHYwLCB2MSwgdjIsIHYzKSB7XG4gIHZhciB0MiA9IHQxICogdDEsIHQzID0gdDIgKiB0MTtcbiAgcmV0dXJuICgoMSAtIDMgKiB0MSArIDMgKiB0MiAtIHQzKSAqIHYwXG4gICAgICArICg0IC0gNiAqIHQyICsgMyAqIHQzKSAqIHYxXG4gICAgICArICgxICsgMyAqIHQxICsgMyAqIHQyIC0gMyAqIHQzKSAqIHYyXG4gICAgICArIHQzICogdjMpIC8gNjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWVzKSB7XG4gIHZhciBuID0gdmFsdWVzLmxlbmd0aCAtIDE7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSB0IDw9IDAgPyAodCA9IDApIDogdCA+PSAxID8gKHQgPSAxLCBuIC0gMSkgOiBNYXRoLmZsb29yKHQgKiBuKSxcbiAgICAgICAgdjEgPSB2YWx1ZXNbaV0sXG4gICAgICAgIHYyID0gdmFsdWVzW2kgKyAxXSxcbiAgICAgICAgdjAgPSBpID4gMCA/IHZhbHVlc1tpIC0gMV0gOiAyICogdjEgLSB2MixcbiAgICAgICAgdjMgPSBpIDwgbiAtIDEgPyB2YWx1ZXNbaSArIDJdIDogMiAqIHYyIC0gdjE7XG4gICAgcmV0dXJuIGJhc2lzKCh0IC0gaSAvIG4pICogbiwgdjAsIHYxLCB2MiwgdjMpO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/basis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/basisClosed.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/basisClosed.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-interpolate/src/basis.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return (0,_basis_js__WEBPACK_IMPORTED_MODULE_0__.basis)((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFpQzs7QUFFakMsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdEQUFLO0FBQ2hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9iYXNpc0Nsb3NlZC5qcz84NzliIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcykge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdmFyIGkgPSBNYXRoLmZsb29yKCgodCAlPSAxKSA8IDAgPyArK3QgOiB0KSAqIG4pLFxuICAgICAgICB2MCA9IHZhbHVlc1soaSArIG4gLSAxKSAlIG5dLFxuICAgICAgICB2MSA9IHZhbHVlc1tpICUgbl0sXG4gICAgICAgIHYyID0gdmFsdWVzWyhpICsgMSkgJSBuXSxcbiAgICAgICAgdjMgPSB2YWx1ZXNbKGkgKyAyKSAlIG5dO1xuICAgIHJldHVybiBiYXNpcygodCAtIGkgLyBuKSAqIG4sIHYwLCB2MSwgdjIsIHYzKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/basisClosed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/color.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/color.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ nogamma),\n/* harmony export */ \"gamma\": () => (/* binding */ gamma),\n/* harmony export */ \"hue\": () => (/* binding */ hue)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-interpolate/src/constant.js\");\n\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(a) ? b : a);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGtGQUFrRix3REFBUTtBQUMxRjs7QUFFTztBQUNQO0FBQ0EsMENBQTBDLHdEQUFRO0FBQ2xEO0FBQ0E7O0FBRWU7QUFDZjtBQUNBLDRCQUE0Qix3REFBUTtBQUNwQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbG9yLmpzPzA3MGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5cbmZ1bmN0aW9uIGxpbmVhcihhLCBkKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyB0ICogZDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXhwb25lbnRpYWwoYSwgYiwgeSkge1xuICByZXR1cm4gYSA9IE1hdGgucG93KGEsIHkpLCBiID0gTWF0aC5wb3coYiwgeSkgLSBhLCB5ID0gMSAvIHksIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3coYSArIHQgKiBiLCB5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh1ZShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQgPiAxODAgfHwgZCA8IC0xODAgPyBkIC0gMzYwICogTWF0aC5yb3VuZChkIC8gMzYwKSA6IGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnYW1tYSh5KSB7XG4gIHJldHVybiAoeSA9ICt5KSA9PT0gMSA/IG5vZ2FtbWEgOiBmdW5jdGlvbihhLCBiKSB7XG4gICAgcmV0dXJuIGIgLSBhID8gZXhwb25lbnRpYWwoYSwgYiwgeSkgOiBjb25zdGFudChpc05hTihhKSA/IGIgOiBhKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9nYW1tYShhLCBiKSB7XG4gIHZhciBkID0gYiAtIGE7XG4gIHJldHVybiBkID8gbGluZWFyKGEsIGQpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/color.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/constant.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/constant.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY29uc3RhbnQuanM/ZGNjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB4ID0+ICgpID0+IHg7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/cubehelix.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/cubehelix.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cubehelixLong\": () => (/* binding */ cubehelixLong),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/cubehelix.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start)).h, (end = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(end)).h),\n s = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__.hue));\nvar cubehelixLong = cubehelix(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxRDtBQUNmOztBQUV0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsb0RBQWMsbUJBQW1CLG9EQUFjO0FBQzFFLGNBQWMscURBQUs7QUFDbkIsY0FBYyxxREFBSztBQUNuQixvQkFBb0IscURBQUs7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxVQUFVLDBDQUFHLENBQUMsRUFBQztBQUN2Qiw4QkFBOEIsaURBQUsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jdWJlaGVsaXguanM/MDJjNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1YmVoZWxpeCBhcyBjb2xvckN1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGN1YmVoZWxpeChodWUpIHtcbiAgcmV0dXJuIChmdW5jdGlvbiBjdWJlaGVsaXhHYW1tYSh5KSB7XG4gICAgeSA9ICt5O1xuXG4gICAgZnVuY3Rpb24gY3ViZWhlbGl4KHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBoID0gaHVlKChzdGFydCA9IGNvbG9yQ3ViZWhlbGl4KHN0YXJ0KSkuaCwgKGVuZCA9IGNvbG9yQ3ViZWhlbGl4KGVuZCkpLmgpLFxuICAgICAgICAgIHMgPSBjb2xvcihzdGFydC5zLCBlbmQucyksXG4gICAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgICBvcGFjaXR5ID0gY29sb3Ioc3RhcnQub3BhY2l0eSwgZW5kLm9wYWNpdHkpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICAgIHN0YXJ0LnMgPSBzKHQpO1xuICAgICAgICBzdGFydC5sID0gbChNYXRoLnBvdyh0LCB5KSk7XG4gICAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjdWJlaGVsaXguZ2FtbWEgPSBjdWJlaGVsaXhHYW1tYTtcblxuICAgIHJldHVybiBjdWJlaGVsaXg7XG4gIH0pKDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdWJlaGVsaXgoaHVlKTtcbmV4cG9ydCB2YXIgY3ViZWhlbGl4TG9uZyA9IGN1YmVoZWxpeChjb2xvcik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/cubehelix.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/date.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/date.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvZGF0ZS5qcz82ODZiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZTtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGQuc2V0VGltZShhICogKDEgLSB0KSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/date.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/discrete.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/discrete.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kaXNjcmV0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2Rpc2NyZXRlLmpzPzgxM2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocmFuZ2UpIHtcbiAgdmFyIG4gPSByYW5nZS5sZW5ndGg7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIHJhbmdlW01hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKiBuKSkpXTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/discrete.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/hcl.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/hcl.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"hclLong\": () => (/* binding */ hclLong)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/lab.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__.hcl)(start)).h, (end = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__.hcl)(end)).h),\n c = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.c, end.c),\n l = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__.hue));\nvar hclLong = hcl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oY2wuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QztBQUNIOztBQUV0QztBQUNBO0FBQ0EseUJBQXlCLDZDQUFRLG1CQUFtQiw2Q0FBUTtBQUM1RCxZQUFZLHFEQUFLO0FBQ2pCLFlBQVkscURBQUs7QUFDakIsa0JBQWtCLHFEQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxJQUFJLDBDQUFHLENBQUMsRUFBQztBQUNqQixrQkFBa0IsaURBQUsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oY2wuanM/Y2M4NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2hjbCBhcyBjb2xvckhjbH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGhjbChodWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckhjbChzdGFydCkpLmgsIChlbmQgPSBjb2xvckhjbChlbmQpKS5oKSxcbiAgICAgICAgYyA9IGNvbG9yKHN0YXJ0LmMsIGVuZC5jKSxcbiAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICBzdGFydC5jID0gYyh0KTtcbiAgICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaGNsKGh1ZSk7XG5leHBvcnQgdmFyIGhjbExvbmcgPSBoY2woY29sb3IpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/hcl.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/hsl.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/hsl.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"hslLong\": () => (/* binding */ hslLong)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__.hsl)(start)).h, (end = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__.hsl)(end)).h),\n s = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.s, end.s),\n l = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.l, end.l),\n opacity = (0,_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__.hue));\nvar hslLong = hsl(_color_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oc2wuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QztBQUNIOztBQUV0QztBQUNBO0FBQ0EseUJBQXlCLDZDQUFRLG1CQUFtQiw2Q0FBUTtBQUM1RCxZQUFZLHFEQUFLO0FBQ2pCLFlBQVkscURBQUs7QUFDakIsa0JBQWtCLHFEQUFLO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxJQUFJLDBDQUFHLENBQUMsRUFBQztBQUNqQixrQkFBa0IsaURBQUsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9oc2wuanM/MjAzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2hzbCBhcyBjb2xvckhzbH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgY29sb3IsIHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmZ1bmN0aW9uIGhzbChodWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckhzbChzdGFydCkpLmgsIChlbmQgPSBjb2xvckhzbChlbmQpKS5oKSxcbiAgICAgICAgcyA9IGNvbG9yKHN0YXJ0LnMsIGVuZC5zKSxcbiAgICAgICAgbCA9IGNvbG9yKHN0YXJ0LmwsIGVuZC5sKSxcbiAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgICAgc3RhcnQuaCA9IGgodCk7XG4gICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgIHN0YXJ0LmwgPSBsKHQpO1xuICAgICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgICByZXR1cm4gc3RhcnQgKyBcIlwiO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaHNsKGh1ZSk7XG5leHBvcnQgdmFyIGhzbExvbmcgPSBoc2woY29sb3IpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/hsl.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/hue.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/hue.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var i = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__.hue)(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9odWUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRS9CLDZCQUFlLG9DQUFTO0FBQ3hCLFVBQVUsOENBQUc7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvaHVlLmpzPzIwMWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodWV9IGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGkgPSBodWUoK2EsICtiKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgeCA9IGkodCk7XG4gICAgcmV0dXJuIHggLSAzNjAgKiBNYXRoLmZsb29yKHggLyAzNjApO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/hue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/index.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"interpolate\": () => (/* reexport safe */ _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"interpolateArray\": () => (/* reexport safe */ _array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"interpolateBasis\": () => (/* reexport safe */ _basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"interpolateBasisClosed\": () => (/* reexport safe */ _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"interpolateCubehelix\": () => (/* reexport safe */ _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"interpolateCubehelixLong\": () => (/* reexport safe */ _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__.cubehelixLong),\n/* harmony export */ \"interpolateDate\": () => (/* reexport safe */ _date_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"interpolateDiscrete\": () => (/* reexport safe */ _discrete_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"interpolateHcl\": () => (/* reexport safe */ _hcl_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"interpolateHclLong\": () => (/* reexport safe */ _hcl_js__WEBPACK_IMPORTED_MODULE_17__.hclLong),\n/* harmony export */ \"interpolateHsl\": () => (/* reexport safe */ _hsl_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"interpolateHslLong\": () => (/* reexport safe */ _hsl_js__WEBPACK_IMPORTED_MODULE_15__.hslLong),\n/* harmony export */ \"interpolateHue\": () => (/* reexport safe */ _hue_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"interpolateLab\": () => (/* reexport safe */ _lab_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"interpolateNumber\": () => (/* reexport safe */ _number_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"interpolateNumberArray\": () => (/* reexport safe */ _numberArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"interpolateObject\": () => (/* reexport safe */ _object_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"interpolateRgb\": () => (/* reexport safe */ _rgb_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"interpolateRgbBasis\": () => (/* reexport safe */ _rgb_js__WEBPACK_IMPORTED_MODULE_14__.rgbBasis),\n/* harmony export */ \"interpolateRgbBasisClosed\": () => (/* reexport safe */ _rgb_js__WEBPACK_IMPORTED_MODULE_14__.rgbBasisClosed),\n/* harmony export */ \"interpolateRound\": () => (/* reexport safe */ _round_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"interpolateString\": () => (/* reexport safe */ _string_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"interpolateTransformCss\": () => (/* reexport safe */ _transform_index_js__WEBPACK_IMPORTED_MODULE_12__.interpolateTransformCss),\n/* harmony export */ \"interpolateTransformSvg\": () => (/* reexport safe */ _transform_index_js__WEBPACK_IMPORTED_MODULE_12__.interpolateTransformSvg),\n/* harmony export */ \"interpolateZoom\": () => (/* reexport safe */ _zoom_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"piecewise\": () => (/* reexport safe */ _piecewise_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ \"quantize\": () => (/* reexport safe */ _quantize_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"../../../node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./date.js */ \"../../../node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _discrete_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./discrete.js */ \"../../../node_modules/d3-interpolate/src/discrete.js\");\n/* harmony import */ var _hue_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hue.js */ \"../../../node_modules/d3-interpolate/src/hue.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./numberArray.js */ \"../../../node_modules/d3-interpolate/src/numberArray.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./object.js */ \"../../../node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _round_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./round.js */ \"../../../node_modules/d3-interpolate/src/round.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./string.js */ \"../../../node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _transform_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./transform/index.js */ \"../../../node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./zoom.js */ \"../../../node_modules/d3-interpolate/src/zoom.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rgb.js */ \"../../../node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./hsl.js */ \"../../../node_modules/d3-interpolate/src/hsl.js\");\n/* harmony import */ var _lab_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./lab.js */ \"../../../node_modules/d3-interpolate/src/lab.js\");\n/* harmony import */ var _hcl_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./hcl.js */ \"../../../node_modules/d3-interpolate/src/hcl.js\");\n/* harmony import */ var _cubehelix_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./cubehelix.js */ \"../../../node_modules/d3-interpolate/src/cubehelix.js\");\n/* harmony import */ var _piecewise_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./piecewise.js */ \"../../../node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./quantize.js */ \"../../../node_modules/d3-interpolate/src/quantize.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBa0Q7QUFDSztBQUNBO0FBQ1k7QUFDZDtBQUNRO0FBQ1Y7QUFDTTtBQUNVO0FBQ1Y7QUFDRjtBQUNFO0FBQzZCO0FBQ2pDO0FBQzRFO0FBQy9DO0FBQy9CO0FBQytCO0FBQ3dCO0FBQ3REO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9pbmRleC5qcz85NWY1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZX0gZnJvbSBcIi4vdmFsdWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUFycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlQmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCYXNpc0Nsb3NlZH0gZnJvbSBcIi4vYmFzaXNDbG9zZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURhdGV9IGZyb20gXCIuL2RhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZURpc2NyZXRlfSBmcm9tIFwiLi9kaXNjcmV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHVlfSBmcm9tIFwiLi9odWUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU51bWJlcn0gZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVOdW1iZXJBcnJheX0gZnJvbSBcIi4vbnVtYmVyQXJyYXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU9iamVjdH0gZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcIi4vcm91bmQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcIi4vc3RyaW5nLmpzXCI7XG5leHBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzLCBpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2Z30gZnJvbSBcIi4vdHJhbnNmb3JtL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVab29tfSBmcm9tIFwiLi96b29tLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSZ2IsIHJnYkJhc2lzIGFzIGludGVycG9sYXRlUmdiQmFzaXMsIHJnYkJhc2lzQ2xvc2VkIGFzIGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWR9IGZyb20gXCIuL3JnYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSHNsLCBoc2xMb25nIGFzIGludGVycG9sYXRlSHNsTG9uZ30gZnJvbSBcIi4vaHNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVMYWJ9IGZyb20gXCIuL2xhYi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlSGNsLCBoY2xMb25nIGFzIGludGVycG9sYXRlSGNsTG9uZ30gZnJvbSBcIi4vaGNsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXgsIGN1YmVoZWxpeExvbmcgYXMgaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nfSBmcm9tIFwiLi9jdWJlaGVsaXguanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwaWVjZXdpc2V9IGZyb20gXCIuL3BpZWNld2lzZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHF1YW50aXplfSBmcm9tIFwiLi9xdWFudGl6ZS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/lab.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/lab.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lab)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/lab.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n\nfunction lab(start, end) {\n var l = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((start = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start)).l, (end = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(end)).l),\n a = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start.a, end.a),\n b = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start.b, end.b),\n opacity = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9sYWIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXlDO0FBQ1Y7O0FBRWhCO0FBQ2YsVUFBVSxxREFBSyxVQUFVLG9EQUFRLG1CQUFtQixvREFBUTtBQUM1RCxVQUFVLHFEQUFLO0FBQ2YsVUFBVSxxREFBSztBQUNmLGdCQUFnQixxREFBSztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbGFiLmpzPzNmZTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtsYWIgYXMgY29sb3JMYWJ9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yIGZyb20gXCIuL2NvbG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxhYihzdGFydCwgZW5kKSB7XG4gIHZhciBsID0gY29sb3IoKHN0YXJ0ID0gY29sb3JMYWIoc3RhcnQpKS5sLCAoZW5kID0gY29sb3JMYWIoZW5kKSkubCksXG4gICAgICBhID0gY29sb3Ioc3RhcnQuYSwgZW5kLmEpLFxuICAgICAgYiA9IGNvbG9yKHN0YXJ0LmIsIGVuZC5iKSxcbiAgICAgIG9wYWNpdHkgPSBjb2xvcihzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgc3RhcnQubCA9IGwodCk7XG4gICAgc3RhcnQuYSA9IGEodCk7XG4gICAgc3RhcnQuYiA9IGIodCk7XG4gICAgc3RhcnQub3BhY2l0eSA9IG9wYWNpdHkodCk7XG4gICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/lab.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/number.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/number.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbnVtYmVyLmpzPzMzYzMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA9ICthLCBiID0gK2IsIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYSAqICgxIC0gdCkgKyBiICogdDtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/number.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/numberArray.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/numberArray.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"isNumberArray\": () => (/* binding */ isNumberArray)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXJBcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvbnVtYmVyQXJyYXkuanM/N2QzMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIGlmICghYikgYiA9IFtdO1xuICB2YXIgbiA9IGEgPyBNYXRoLm1pbihiLmxlbmd0aCwgYS5sZW5ndGgpIDogMCxcbiAgICAgIGMgPSBiLnNsaWNlKCksXG4gICAgICBpO1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGNbaV0gPSBhW2ldICogKDEgLSB0KSArIGJbaV0gKiB0O1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJBcnJheSh4KSB7XG4gIHJldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoeCkgJiYgISh4IGluc3RhbmNlb2YgRGF0YVZpZXcpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/numberArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/object.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/object.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"../../../node_modules/d3-interpolate/src/value.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = (0,_value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRS9CLDZCQUFlLG9DQUFTO0FBQ3hCLFlBQVk7QUFDWixZQUFZO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxxREFBSztBQUNsQixNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9vYmplY3QuanM/ODkyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmFsdWUgZnJvbSBcIi4vdmFsdWUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgaSA9IHt9LFxuICAgICAgYyA9IHt9LFxuICAgICAgaztcblxuICBpZiAoYSA9PT0gbnVsbCB8fCB0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgYSA9IHt9O1xuICBpZiAoYiA9PT0gbnVsbCB8fCB0eXBlb2YgYiAhPT0gXCJvYmplY3RcIikgYiA9IHt9O1xuXG4gIGZvciAoayBpbiBiKSB7XG4gICAgaWYgKGsgaW4gYSkge1xuICAgICAgaVtrXSA9IHZhbHVlKGFba10sIGJba10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjW2tdID0gYltrXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIGZvciAoayBpbiBpKSBjW2tdID0gaVtrXSh0KTtcbiAgICByZXR1cm4gYztcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/object.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/piecewise.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/piecewise.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ piecewise)\n/* harmony export */ });\n/* harmony import */ var _value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./value.js */ \"../../../node_modules/d3-interpolate/src/value.js\");\n\n\nfunction piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = _value_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9waWVjZXdpc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7O0FBRTdCO0FBQ2YsZ0VBQWdFLGlEQUFLO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcGllY2V3aXNlLmpzPzYwNzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkZWZhdWx0IGFzIHZhbHVlfSBmcm9tIFwiLi92YWx1ZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwaWVjZXdpc2UoaW50ZXJwb2xhdGUsIHZhbHVlcykge1xuICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHZhbHVlcyA9IGludGVycG9sYXRlLCBpbnRlcnBvbGF0ZSA9IHZhbHVlO1xuICB2YXIgaSA9IDAsIG4gPSB2YWx1ZXMubGVuZ3RoIC0gMSwgdiA9IHZhbHVlc1swXSwgSSA9IG5ldyBBcnJheShuIDwgMCA/IDAgOiBuKTtcbiAgd2hpbGUgKGkgPCBuKSBJW2ldID0gaW50ZXJwb2xhdGUodiwgdiA9IHZhbHVlc1srK2ldKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgaSA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAxLCBNYXRoLmZsb29yKHQgKj0gbikpKTtcbiAgICByZXR1cm4gSVtpXSh0IC0gaSk7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/piecewise.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/quantize.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/quantize.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9xdWFudGl6ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSxrQkFBa0IsT0FBTztBQUN6QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvcXVhbnRpemUuanM/MWIwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnRlcnBvbGF0b3IsIG4pIHtcbiAgdmFyIHNhbXBsZXMgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBzYW1wbGVzW2ldID0gaW50ZXJwb2xhdG9yKGkgLyAobiAtIDEpKTtcbiAgcmV0dXJuIHNhbXBsZXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/quantize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/rgb.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/rgb.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"rgbBasis\": () => (/* binding */ rgbBasis),\n/* harmony export */ \"rgbBasisClosed\": () => (/* binding */ rgbBasisClosed)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-interpolate/src/basis.js\");\n/* harmony import */ var _basisClosed_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./basisClosed.js */ \"../../../node_modules/d3-interpolate/src/basisClosed.js\");\n/* harmony import */ var _color_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./color.js */ \"../../../node_modules/d3-interpolate/src/color.js\");\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function rgbGamma(y) {\n var color = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__.gamma)(y);\n\n function rgb(start, end) {\n var r = color((start = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__.rgb)(start)).r, (end = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__.rgb)(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = (0,_color_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1));\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__.rgb)(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(_basis_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nvar rgbBasisClosed = rgbSpline(_basisClosed_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF5QztBQUNWO0FBQ1k7QUFDRDs7QUFFMUMsaUVBQWU7QUFDZixjQUFjLGdEQUFLOztBQUVuQjtBQUNBLDJCQUEyQiw2Q0FBUSxtQkFBbUIsNkNBQVE7QUFDOUQ7QUFDQTtBQUNBLGtCQUFrQixxREFBTztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxJQUFJLEVBQUM7O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTztBQUN2QixjQUFjLDZDQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLHlCQUF5QixpREFBSztBQUM5QiwrQkFBK0IsdURBQVciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanM/YjAwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JnYiBhcyBjb2xvclJnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgYmFzaXMgZnJvbSBcIi4vYmFzaXMuanNcIjtcbmltcG9ydCBiYXNpc0Nsb3NlZCBmcm9tIFwiLi9iYXNpc0Nsb3NlZC5qc1wiO1xuaW1wb3J0IG5vZ2FtbWEsIHtnYW1tYX0gZnJvbSBcIi4vY29sb3IuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHJnYkdhbW1hKHkpIHtcbiAgdmFyIGNvbG9yID0gZ2FtbWEoeSk7XG5cbiAgZnVuY3Rpb24gcmdiKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IGNvbG9yKChzdGFydCA9IGNvbG9yUmdiKHN0YXJ0KSkuciwgKGVuZCA9IGNvbG9yUmdiKGVuZCkpLnIpLFxuICAgICAgICBnID0gY29sb3Ioc3RhcnQuZywgZW5kLmcpLFxuICAgICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgICBvcGFjaXR5ID0gbm9nYW1tYShzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LnIgPSByKHQpO1xuICAgICAgc3RhcnQuZyA9IGcodCk7XG4gICAgICBzdGFydC5iID0gYih0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG5cbiAgcmdiLmdhbW1hID0gcmdiR2FtbWE7XG5cbiAgcmV0dXJuIHJnYjtcbn0pKDEpO1xuXG5mdW5jdGlvbiByZ2JTcGxpbmUoc3BsaW5lKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xvcnMpIHtcbiAgICB2YXIgbiA9IGNvbG9ycy5sZW5ndGgsXG4gICAgICAgIHIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGcgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGksIGNvbG9yO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICB9XG4gICAgciA9IHNwbGluZShyKTtcbiAgICBnID0gc3BsaW5lKGcpO1xuICAgIGIgPSBzcGxpbmUoYik7XG4gICAgY29sb3Iub3BhY2l0eSA9IDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbG9yLnIgPSByKHQpO1xuICAgICAgY29sb3IuZyA9IGcodCk7XG4gICAgICBjb2xvci5iID0gYih0KTtcbiAgICAgIHJldHVybiBjb2xvciArIFwiXCI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHZhciByZ2JCYXNpcyA9IHJnYlNwbGluZShiYXNpcyk7XG5leHBvcnQgdmFyIHJnYkJhc2lzQ2xvc2VkID0gcmdiU3BsaW5lKGJhc2lzQ2xvc2VkKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/rgb.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/round.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/round.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yb3VuZC5qcz85YzRjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiA9ICtiLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSAqICgxIC0gdCkgKyBiICogdCk7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/round.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/string.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/string.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-interpolate/src/number.js\");\n\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9zdHJpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUM7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7O0FBRWQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUI7QUFDQSxNQUFNLE9BQU87QUFDYjtBQUNBLGNBQWMsU0FBUyxzREFBTSxTQUFTO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsT0FBTztBQUNwQztBQUNBLFNBQVM7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3N0cmluZy5qcz8xZGEzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbnZhciByZUEgPSAvWy0rXT8oPzpcXGQrXFwuP1xcZCp8XFwuP1xcZCspKD86W2VFXVstK10/XFxkKyk/L2csXG4gICAgcmVCID0gbmV3IFJlZ0V4cChyZUEuc291cmNlLCBcImdcIik7XG5cbmZ1bmN0aW9uIHplcm8oYikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGI7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG9uZShiKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGIodCkgKyBcIlwiO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBiaSA9IHJlQS5sYXN0SW5kZXggPSByZUIubGFzdEluZGV4ID0gMCwgLy8gc2NhbiBpbmRleCBmb3IgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYW0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYVxuICAgICAgYm0sIC8vIGN1cnJlbnQgbWF0Y2ggaW4gYlxuICAgICAgYnMsIC8vIHN0cmluZyBwcmVjZWRpbmcgY3VycmVudCBudW1iZXIgaW4gYiwgaWYgYW55XG4gICAgICBpID0gLTEsIC8vIGluZGV4IGluIHNcbiAgICAgIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICBxID0gW107IC8vIG51bWJlciBpbnRlcnBvbGF0b3JzXG5cbiAgLy8gQ29lcmNlIGlucHV0cyB0byBzdHJpbmdzLlxuICBhID0gYSArIFwiXCIsIGIgPSBiICsgXCJcIjtcblxuICAvLyBJbnRlcnBvbGF0ZSBwYWlycyBvZiBudW1iZXJzIGluIGEgJiBiLlxuICB3aGlsZSAoKGFtID0gcmVBLmV4ZWMoYSkpXG4gICAgICAmJiAoYm0gPSByZUIuZXhlYyhiKSkpIHtcbiAgICBpZiAoKGJzID0gYm0uaW5kZXgpID4gYmkpIHsgLy8gYSBzdHJpbmcgcHJlY2VkZXMgdGhlIG5leHQgbnVtYmVyIGluIGJcbiAgICAgIGJzID0gYi5zbGljZShiaSwgYnMpO1xuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJzO1xuICAgIH1cbiAgICBpZiAoKGFtID0gYW1bMF0pID09PSAoYm0gPSBibVswXSkpIHsgLy8gbnVtYmVycyBpbiBhICYgYiBtYXRjaFxuICAgICAgaWYgKHNbaV0pIHNbaV0gKz0gYm07IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgICBlbHNlIHNbKytpXSA9IGJtO1xuICAgIH0gZWxzZSB7IC8vIGludGVycG9sYXRlIG5vbi1tYXRjaGluZyBudW1iZXJzXG4gICAgICBzWysraV0gPSBudWxsO1xuICAgICAgcS5wdXNoKHtpOiBpLCB4OiBudW1iZXIoYW0sIGJtKX0pO1xuICAgIH1cbiAgICBiaSA9IHJlQi5sYXN0SW5kZXg7XG4gIH1cblxuICAvLyBBZGQgcmVtYWlucyBvZiBiLlxuICBpZiAoYmkgPCBiLmxlbmd0aCkge1xuICAgIGJzID0gYi5zbGljZShiaSk7XG4gICAgaWYgKHNbaV0pIHNbaV0gKz0gYnM7IC8vIGNvYWxlc2NlIHdpdGggcHJldmlvdXMgc3RyaW5nXG4gICAgZWxzZSBzWysraV0gPSBicztcbiAgfVxuXG4gIC8vIFNwZWNpYWwgb3B0aW1pemF0aW9uIGZvciBvbmx5IGEgc2luZ2xlIG1hdGNoLlxuICAvLyBPdGhlcndpc2UsIGludGVycG9sYXRlIGVhY2ggb2YgdGhlIG51bWJlcnMgYW5kIHJlam9pbiB0aGUgc3RyaW5nLlxuICByZXR1cm4gcy5sZW5ndGggPCAyID8gKHFbMF1cbiAgICAgID8gb25lKHFbMF0ueClcbiAgICAgIDogemVybyhiKSlcbiAgICAgIDogKGIgPSBxLmxlbmd0aCwgZnVuY3Rpb24odCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBvOyBpIDwgYjsgKytpKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICAgICAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/string.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/transform/decompose.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/transform/decompose.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"identity\": () => (/* binding */ identity)\n/* harmony export */ });\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2RlY29tcG9zZS5qcz9lMTU3Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/transform/decompose.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/transform/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/transform/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"interpolateTransformCss\": () => (/* binding */ interpolateTransformCss),\n/* harmony export */ \"interpolateTransformSvg\": () => (/* binding */ interpolateTransformSvg)\n/* harmony export */ });\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../number.js */ \"../../../node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parse.js */ \"../../../node_modules/d3-interpolate/src/transform/parse.js\");\n\n\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(xa, xb)}, {i: i - 2, x: (0,_number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__.parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(_parse_js__WEBPACK_IMPORTED_MODULE_1__.parseSvg, \", \", \")\", \")\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNZOztBQUU5Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxhQUFhLHNEQUFNLFNBQVMsR0FBRyxhQUFhLHNEQUFNLFNBQVM7QUFDekUsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUNBQWlDLGdDQUFnQztBQUNqRSxjQUFjLHNEQUFzRCxzREFBTSxPQUFPO0FBQ2pGLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMscURBQXFELHNEQUFNLE9BQU87QUFDaEYsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGFBQWEsc0RBQU0sU0FBUyxHQUFHLGFBQWEsc0RBQU0sU0FBUztBQUN6RSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxtREFBbUQsK0NBQVE7QUFDM0QsbURBQW1ELCtDQUFRIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdHJhbnNmb3JtL2luZGV4LmpzPzY0NGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG51bWJlciBmcm9tIFwiLi4vbnVtYmVyLmpzXCI7XG5pbXBvcnQge3BhcnNlQ3NzLCBwYXJzZVN2Z30gZnJvbSBcIi4vcGFyc2UuanNcIjtcblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2UsIHB4Q29tbWEsIHB4UGFyZW4sIGRlZ1BhcmVuKSB7XG5cbiAgZnVuY3Rpb24gcG9wKHMpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPyBzLnBvcCgpICsgXCIgXCIgOiBcIlwiO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNsYXRlKHhhLCB5YSwgeGIsIHliLCBzLCBxKSB7XG4gICAgaWYgKHhhICE9PSB4YiB8fCB5YSAhPT0geWIpIHtcbiAgICAgIHZhciBpID0gcy5wdXNoKFwidHJhbnNsYXRlKFwiLCBudWxsLCBweENvbW1hLCBudWxsLCBweFBhcmVuKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgfHwgeWIpIHtcbiAgICAgIHMucHVzaChcInRyYW5zbGF0ZShcIiArIHhiICsgcHhDb21tYSArIHliICsgcHhQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcm90YXRlKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgaWYgKGEgLSBiID4gMTgwKSBiICs9IDM2MDsgZWxzZSBpZiAoYiAtIGEgPiAxODApIGEgKz0gMzYwOyAvLyBzaG9ydGVzdCBwYXRoXG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJyb3RhdGUoXCIgKyBiICsgZGVnUGFyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHNrZXdYKGEsIGIsIHMsIHEpIHtcbiAgICBpZiAoYSAhPT0gYikge1xuICAgICAgcS5wdXNoKHtpOiBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiwgbnVsbCwgZGVnUGFyZW4pIC0gMiwgeDogbnVtYmVyKGEsIGIpfSk7XG4gICAgfSBlbHNlIGlmIChiKSB7XG4gICAgICBzLnB1c2gocG9wKHMpICsgXCJza2V3WChcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2gocG9wKHMpICsgXCJzY2FsZShcIiwgbnVsbCwgXCIsXCIsIG51bGwsIFwiKVwiKTtcbiAgICAgIHEucHVzaCh7aTogaSAtIDQsIHg6IG51bWJlcih4YSwgeGIpfSwge2k6IGkgLSAyLCB4OiBudW1iZXIoeWEsIHliKX0pO1xuICAgIH0gZWxzZSBpZiAoeGIgIT09IDEgfHwgeWIgIT09IDEpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiICsgeGIgKyBcIixcIiArIHliICsgXCIpXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIHMgPSBbXSwgLy8gc3RyaW5nIGNvbnN0YW50cyBhbmQgcGxhY2Vob2xkZXJzXG4gICAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcbiAgICBhID0gcGFyc2UoYSksIGIgPSBwYXJzZShiKTtcbiAgICB0cmFuc2xhdGUoYS50cmFuc2xhdGVYLCBhLnRyYW5zbGF0ZVksIGIudHJhbnNsYXRlWCwgYi50cmFuc2xhdGVZLCBzLCBxKTtcbiAgICByb3RhdGUoYS5yb3RhdGUsIGIucm90YXRlLCBzLCBxKTtcbiAgICBza2V3WChhLnNrZXdYLCBiLnNrZXdYLCBzLCBxKTtcbiAgICBzY2FsZShhLnNjYWxlWCwgYS5zY2FsZVksIGIuc2NhbGVYLCBiLnNjYWxlWSwgcywgcSk7XG4gICAgYSA9IGIgPSBudWxsOyAvLyBnY1xuICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgaSA9IC0xLCBuID0gcS5sZW5ndGgsIG87XG4gICAgICB3aGlsZSAoKytpIDwgbikgc1sobyA9IHFbaV0pLmldID0gby54KHQpO1xuICAgICAgcmV0dXJuIHMuam9pbihcIlwiKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtQ3NzID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VDc3MsIFwicHgsIFwiLCBcInB4KVwiLCBcImRlZylcIik7XG5leHBvcnQgdmFyIGludGVycG9sYXRlVHJhbnNmb3JtU3ZnID0gaW50ZXJwb2xhdGVUcmFuc2Zvcm0ocGFyc2VTdmcsIFwiLCBcIiwgXCIpXCIsIFwiKVwiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/transform/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/transform/parse.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/transform/parse.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseCss\": () => (/* binding */ parseCss),\n/* harmony export */ \"parseSvg\": () => (/* binding */ parseSvg)\n/* harmony export */ });\n/* harmony import */ var _decompose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./decompose.js */ \"../../../node_modules/d3-interpolate/src/transform/decompose.js\");\n\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? _decompose_js__WEBPACK_IMPORTED_MODULE_0__.identity : (0,_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nfunction parseSvg(value) {\n if (value == null) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__.identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return _decompose_js__WEBPACK_IMPORTED_MODULE_0__.identity;\n value = value.matrix;\n return (0,_decompose_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW1EOztBQUVuRDs7QUFFQTtBQUNPO0FBQ1A7QUFDQSx3QkFBd0IsbURBQVEsR0FBRyx5REFBUztBQUM1Qzs7QUFFTztBQUNQLDRCQUE0QixtREFBUTtBQUNwQztBQUNBO0FBQ0EsaUVBQWlFLG1EQUFRO0FBQ3pFO0FBQ0EsU0FBUyx5REFBUztBQUNsQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9wYXJzZS5qcz9lYmJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWNvbXBvc2UsIHtpZGVudGl0eX0gZnJvbSBcIi4vZGVjb21wb3NlLmpzXCI7XG5cbnZhciBzdmdOb2RlO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ3NzKHZhbHVlKSB7XG4gIGNvbnN0IG0gPSBuZXcgKHR5cGVvZiBET01NYXRyaXggPT09IFwiZnVuY3Rpb25cIiA/IERPTU1hdHJpeCA6IFdlYktpdENTU01hdHJpeCkodmFsdWUgKyBcIlwiKTtcbiAgcmV0dXJuIG0uaXNJZGVudGl0eSA/IGlkZW50aXR5IDogZGVjb21wb3NlKG0uYSwgbS5iLCBtLmMsIG0uZCwgbS5lLCBtLmYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdmcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBpZGVudGl0eTtcbiAgaWYgKCFzdmdOb2RlKSBzdmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJnXCIpO1xuICBzdmdOb2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLCB2YWx1ZSk7XG4gIGlmICghKHZhbHVlID0gc3ZnTm9kZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKSkgcmV0dXJuIGlkZW50aXR5O1xuICB2YWx1ZSA9IHZhbHVlLm1hdHJpeDtcbiAgcmV0dXJuIGRlY29tcG9zZSh2YWx1ZS5hLCB2YWx1ZS5iLCB2YWx1ZS5jLCB2YWx1ZS5kLCB2YWx1ZS5lLCB2YWx1ZS5mKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/transform/parse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/value.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/value.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rgb.js */ \"../../../node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-interpolate/src/array.js\");\n/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./date.js */ \"../../../node_modules/d3-interpolate/src/date.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./object.js */ \"../../../node_modules/d3-interpolate/src/object.js\");\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./string.js */ \"../../../node_modules/d3-interpolate/src/string.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-interpolate/src/constant.js\");\n/* harmony import */ var _numberArray_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./numberArray.js */ \"../../../node_modules/d3-interpolate/src/numberArray.js\");\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(b)\n : (t === \"number\" ? _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n : t === \"string\" ? ((c = (0,d3_color__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(b)) ? (b = c, _rgb_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]) : _string_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_2__[\"default\"] ? _rgb_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n : b instanceof Date ? _date_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n : (0,_numberArray_js__WEBPACK_IMPORTED_MODULE_6__.isNumberArray)(b) ? _numberArray_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n : Array.isArray(b) ? _array_js__WEBPACK_IMPORTED_MODULE_7__.genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? _object_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n : _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(a, b);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQStCO0FBQ0o7QUFDYTtBQUNYO0FBQ0k7QUFDQTtBQUNBO0FBQ0k7QUFDdUI7O0FBRTVELDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0Esd0NBQXdDLHdEQUFRO0FBQ2hELDBCQUEwQixrREFBTTtBQUNoQywrQkFBK0Isb0RBQUssZUFBZSwrQ0FBRyxJQUFJLGtEQUFNO0FBQ2hFLHFCQUFxQixnREFBSyxHQUFHLCtDQUFHO0FBQ2hDLDRCQUE0QixnREFBSTtBQUNoQyxRQUFRLDhEQUFhLE1BQU0sdURBQVc7QUFDdEMsMkJBQTJCLG1EQUFZO0FBQ3ZDLDBGQUEwRixrREFBTTtBQUNoRyxRQUFRLGtEQUFNO0FBQ2QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy92YWx1ZS5qcz8xYjQyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHJnYiBmcm9tIFwiLi9yZ2IuanNcIjtcbmltcG9ydCB7Z2VuZXJpY0FycmF5fSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGRhdGUgZnJvbSBcIi4vZGF0ZS5qc1wiO1xuaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXIuanNcIjtcbmltcG9ydCBvYmplY3QgZnJvbSBcIi4vb2JqZWN0LmpzXCI7XG5pbXBvcnQgc3RyaW5nIGZyb20gXCIuL3N0cmluZy5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgbnVtYmVyQXJyYXksIHtpc051bWJlckFycmF5fSBmcm9tIFwiLi9udW1iZXJBcnJheS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB0ID0gdHlwZW9mIGIsIGM7XG4gIHJldHVybiBiID09IG51bGwgfHwgdCA9PT0gXCJib29sZWFuXCIgPyBjb25zdGFudChiKVxuICAgICAgOiAodCA9PT0gXCJudW1iZXJcIiA/IG51bWJlclxuICAgICAgOiB0ID09PSBcInN0cmluZ1wiID8gKChjID0gY29sb3IoYikpID8gKGIgPSBjLCByZ2IpIDogc3RyaW5nKVxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyByZ2JcbiAgICAgIDogYiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlXG4gICAgICA6IGlzTnVtYmVyQXJyYXkoYikgPyBudW1iZXJBcnJheVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gZ2VuZXJpY0FycmF5XG4gICAgICA6IHR5cGVvZiBiLnZhbHVlT2YgIT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYi50b1N0cmluZyAhPT0gXCJmdW5jdGlvblwiIHx8IGlzTmFOKGIpID8gb2JqZWN0XG4gICAgICA6IG51bWJlcikoYSwgYik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/value.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-interpolate/src/zoom.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-interpolate/src/zoom.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy96b29tLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZTs7QUFFZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLG1CQUFtQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvem9vbS5qcz81ZWE0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBlcHNpbG9uMiA9IDFlLTEyO1xuXG5mdW5jdGlvbiBjb3NoKHgpIHtcbiAgcmV0dXJuICgoeCA9IE1hdGguZXhwKHgpKSArIDEgLyB4KSAvIDI7XG59XG5cbmZ1bmN0aW9uIHNpbmgoeCkge1xuICByZXR1cm4gKCh4ID0gTWF0aC5leHAoeCkpIC0gMSAvIHgpIC8gMjtcbn1cblxuZnVuY3Rpb24gdGFuaCh4KSB7XG4gIHJldHVybiAoKHggPSBNYXRoLmV4cCgyICogeCkpIC0gMSkgLyAoeCArIDEpO1xufVxuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gem9vbVJobyhyaG8sIHJobzIsIHJobzQpIHtcblxuICAvLyBwMCA9IFt1eDAsIHV5MCwgdzBdXG4gIC8vIHAxID0gW3V4MSwgdXkxLCB3MV1cbiAgZnVuY3Rpb24gem9vbShwMCwgcDEpIHtcbiAgICB2YXIgdXgwID0gcDBbMF0sIHV5MCA9IHAwWzFdLCB3MCA9IHAwWzJdLFxuICAgICAgICB1eDEgPSBwMVswXSwgdXkxID0gcDFbMV0sIHcxID0gcDFbMl0sXG4gICAgICAgIGR4ID0gdXgxIC0gdXgwLFxuICAgICAgICBkeSA9IHV5MSAtIHV5MCxcbiAgICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgICAgaSxcbiAgICAgICAgUztcblxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdTAg4omFIHUxLlxuICAgIGlmIChkMiA8IGVwc2lsb24yKSB7XG4gICAgICBTID0gTWF0aC5sb2codzEgLyB3MCkgLyByaG87XG4gICAgICBpID0gZnVuY3Rpb24odCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHQgKiBkeCxcbiAgICAgICAgICB1eTAgKyB0ICogZHksXG4gICAgICAgICAgdzAgKiBNYXRoLmV4cChyaG8gKiB0ICogUylcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZW5lcmFsIGNhc2UuXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZDEgPSBNYXRoLnNxcnQoZDIpLFxuICAgICAgICAgIGIwID0gKHcxICogdzEgLSB3MCAqIHcwICsgcmhvNCAqIGQyKSAvICgyICogdzAgKiByaG8yICogZDEpLFxuICAgICAgICAgIGIxID0gKHcxICogdzEgLSB3MCAqIHcwIC0gcmhvNCAqIGQyKSAvICgyICogdzEgKiByaG8yICogZDEpLFxuICAgICAgICAgIHIwID0gTWF0aC5sb2coTWF0aC5zcXJ0KGIwICogYjAgKyAxKSAtIGIwKSxcbiAgICAgICAgICByMSA9IE1hdGgubG9nKE1hdGguc3FydChiMSAqIGIxICsgMSkgLSBiMSk7XG4gICAgICBTID0gKHIxIC0gcjApIC8gcmhvO1xuICAgICAgaSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgdmFyIHMgPSB0ICogUyxcbiAgICAgICAgICAgIGNvc2hyMCA9IGNvc2gocjApLFxuICAgICAgICAgICAgdSA9IHcwIC8gKHJobzIgKiBkMSkgKiAoY29zaHIwICogdGFuaChyaG8gKiBzICsgcjApIC0gc2luaChyMCkpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIHV4MCArIHUgKiBkeCxcbiAgICAgICAgICB1eTAgKyB1ICogZHksXG4gICAgICAgICAgdzAgKiBjb3NocjAgLyBjb3NoKHJobyAqIHMgKyByMClcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpLmR1cmF0aW9uID0gUyAqIDEwMDAgKiByaG8gLyBNYXRoLlNRUlQyO1xuXG4gICAgcmV0dXJuIGk7XG4gIH1cblxuICB6b29tLnJobyA9IGZ1bmN0aW9uKF8pIHtcbiAgICB2YXIgXzEgPSBNYXRoLm1heCgxZS0zLCArXyksIF8yID0gXzEgKiBfMSwgXzQgPSBfMiAqIF8yO1xuICAgIHJldHVybiB6b29tUmhvKF8xLCBfMiwgXzQpO1xuICB9O1xuXG4gIHJldHVybiB6b29tO1xufSkoTWF0aC5TUVJUMiwgMiwgNCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-interpolate/src/zoom.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-path/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-path/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Path\": () => (/* reexport safe */ _path_js__WEBPACK_IMPORTED_MODULE_0__.Path),\n/* harmony export */ \"path\": () => (/* reexport safe */ _path_js__WEBPACK_IMPORTED_MODULE_0__.path),\n/* harmony export */ \"pathRound\": () => (/* reexport safe */ _path_js__WEBPACK_IMPORTED_MODULE_0__.pathRound)\n/* harmony export */ });\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-path/src/path.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL2luZGV4LmpzPzZkOGIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtQYXRoLCBwYXRoLCBwYXRoUm91bmR9IGZyb20gXCIuL3BhdGguanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-path/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-path/src/path.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-path/src/path.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Path\": () => (/* binding */ Path),\n/* harmony export */ \"path\": () => (/* binding */ path),\n/* harmony export */ \"pathRound\": () => (/* binding */ pathRound)\n/* harmony export */ });\nconst pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nclass Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nfunction path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nfunction pathRound(digits = 3) {\n return new Path(+digits);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL3BhdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQyxPQUFPO0FBQzdDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0RBQW9ELE9BQU87QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsT0FBTztBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IseUJBQXlCLEdBQUcseUJBQXlCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYyxHQUFHLGNBQWM7QUFDbkQ7QUFDQTtBQUNBLG9CQUFvQixJQUFJLEdBQUcsSUFBSSxHQUFHLGNBQWMsR0FBRyxjQUFjO0FBQ2pFO0FBQ0E7QUFDQSxvQkFBb0IsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLGNBQWMsR0FBRyxjQUFjO0FBQy9FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRCxFQUFFOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLGNBQWMsR0FBRyxjQUFjO0FBQ3JEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxHQUFHLGNBQWM7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWUsR0FBRyxlQUFlO0FBQ3pEOztBQUVBLHNCQUFzQixFQUFFLEdBQUcsRUFBRSxPQUFPLHlCQUF5QixHQUFHLDBCQUEwQixHQUFHLDBCQUEwQjtBQUN2SDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRCxFQUFFOztBQUVyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixHQUFHLEdBQUcsR0FBRztBQUMvQjs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLEdBQUcsR0FBRyxHQUFHO0FBQy9COztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLEVBQUUsR0FBRyxFQUFFLE9BQU8sR0FBRyxHQUFHLE9BQU8sR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxHQUFHLEdBQUcsY0FBYyxHQUFHLGNBQWM7QUFDakg7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixFQUFFLEdBQUcsRUFBRSxLQUFLLFlBQVksR0FBRyxHQUFHLEdBQUcsZ0NBQWdDLEdBQUcsZ0NBQWdDO0FBQzFIO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5QkFBeUIsR0FBRyx5QkFBeUIsR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUc7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBhdGgvc3JjL3BhdGguanM/MWE4NyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwaSA9IE1hdGguUEksXG4gICAgdGF1ID0gMiAqIHBpLFxuICAgIGVwc2lsb24gPSAxZS02LFxuICAgIHRhdUVwc2lsb24gPSB0YXUgLSBlcHNpbG9uO1xuXG5mdW5jdGlvbiBhcHBlbmQoc3RyaW5ncykge1xuICB0aGlzLl8gKz0gc3RyaW5nc1swXTtcbiAgZm9yIChsZXQgaSA9IDEsIG4gPSBzdHJpbmdzLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIHRoaXMuXyArPSBhcmd1bWVudHNbaV0gKyBzdHJpbmdzW2ldO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGVuZFJvdW5kKGRpZ2l0cykge1xuICBsZXQgZCA9IE1hdGguZmxvb3IoZGlnaXRzKTtcbiAgaWYgKCEoZCA+PSAwKSkgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGRpZ2l0czogJHtkaWdpdHN9YCk7XG4gIGlmIChkID4gMTUpIHJldHVybiBhcHBlbmQ7XG4gIGNvbnN0IGsgPSAxMCAqKiBkO1xuICByZXR1cm4gZnVuY3Rpb24oc3RyaW5ncykge1xuICAgIHRoaXMuXyArPSBzdHJpbmdzWzBdO1xuICAgIGZvciAobGV0IGkgPSAxLCBuID0gc3RyaW5ncy5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHRoaXMuXyArPSBNYXRoLnJvdW5kKGFyZ3VtZW50c1tpXSAqIGspIC8gayArIHN0cmluZ3NbaV07XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgUGF0aCB7XG4gIGNvbnN0cnVjdG9yKGRpZ2l0cykge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgICB0aGlzLl94MSA9IHRoaXMuX3kxID0gbnVsbDsgLy8gZW5kIG9mIGN1cnJlbnQgc3VicGF0aFxuICAgIHRoaXMuXyA9IFwiXCI7XG4gICAgdGhpcy5fYXBwZW5kID0gZGlnaXRzID09IG51bGwgPyBhcHBlbmQgOiBhcHBlbmRSb3VuZChkaWdpdHMpO1xuICB9XG4gIG1vdmVUbyh4LCB5KSB7XG4gICAgdGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gwID0gdGhpcy5feDEgPSAreH0sJHt0aGlzLl95MCA9IHRoaXMuX3kxID0gK3l9YDtcbiAgfVxuICBjbG9zZVBhdGgoKSB7XG4gICAgaWYgKHRoaXMuX3gxICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl94MSA9IHRoaXMuX3gwLCB0aGlzLl95MSA9IHRoaXMuX3kwO1xuICAgICAgdGhpcy5fYXBwZW5kYFpgO1xuICAgIH1cbiAgfVxuICBsaW5lVG8oeCwgeSkge1xuICAgIHRoaXMuX2FwcGVuZGBMJHt0aGlzLl94MSA9ICt4fSwke3RoaXMuX3kxID0gK3l9YDtcbiAgfVxuICBxdWFkcmF0aWNDdXJ2ZVRvKHgxLCB5MSwgeCwgeSkge1xuICAgIHRoaXMuX2FwcGVuZGBRJHsreDF9LCR7K3kxfSwke3RoaXMuX3gxID0gK3h9LCR7dGhpcy5feTEgPSAreX1gO1xuICB9XG4gIGJlemllckN1cnZlVG8oeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHtcbiAgICB0aGlzLl9hcHBlbmRgQyR7K3gxfSwkeyt5MX0sJHsreDJ9LCR7K3kyfSwke3RoaXMuX3gxID0gK3h9LCR7dGhpcy5feTEgPSAreX1gO1xuICB9XG4gIGFyY1RvKHgxLCB5MSwgeDIsIHkyLCByKSB7XG4gICAgeDEgPSAreDEsIHkxID0gK3kxLCB4MiA9ICt4MiwgeTIgPSAreTIsIHIgPSArcjtcblxuICAgIC8vIElzIHRoZSByYWRpdXMgbmVnYXRpdmU/IEVycm9yLlxuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKGBuZWdhdGl2ZSByYWRpdXM6ICR7cn1gKTtcblxuICAgIGxldCB4MCA9IHRoaXMuX3gxLFxuICAgICAgICB5MCA9IHRoaXMuX3kxLFxuICAgICAgICB4MjEgPSB4MiAtIHgxLFxuICAgICAgICB5MjEgPSB5MiAtIHkxLFxuICAgICAgICB4MDEgPSB4MCAtIHgxLFxuICAgICAgICB5MDEgPSB5MCAtIHkxLFxuICAgICAgICBsMDFfMiA9IHgwMSAqIHgwMSArIHkwMSAqIHkwMTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDEseTEpLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fYXBwZW5kYE0ke3RoaXMuX3gxID0geDF9LCR7dGhpcy5feTEgPSB5MX1gO1xuICAgIH1cblxuICAgIC8vIE9yLCBpcyAoeDEseTEpIGNvaW5jaWRlbnQgd2l0aCAoeDAseTApPyBEbyBub3RoaW5nLlxuICAgIGVsc2UgaWYgKCEobDAxXzIgPiBlcHNpbG9uKSk7XG5cbiAgICAvLyBPciwgYXJlICh4MCx5MCksICh4MSx5MSkgYW5kICh4Mix5MikgY29sbGluZWFyP1xuICAgIC8vIEVxdWl2YWxlbnRseSwgaXMgKHgxLHkxKSBjb2luY2lkZW50IHdpdGggKHgyLHkyKT9cbiAgICAvLyBPciwgaXMgdGhlIHJhZGl1cyB6ZXJvPyBMaW5lIHRvICh4MSx5MSkuXG4gICAgZWxzZSBpZiAoIShNYXRoLmFicyh5MDEgKiB4MjEgLSB5MjEgKiB4MDEpID4gZXBzaWxvbikgfHwgIXIpIHtcbiAgICAgIHRoaXMuX2FwcGVuZGBMJHt0aGlzLl94MSA9IHgxfSwke3RoaXMuX3kxID0geTF9YDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGRyYXcgYW4gYXJjIVxuICAgIGVsc2Uge1xuICAgICAgbGV0IHgyMCA9IHgyIC0geDAsXG4gICAgICAgICAgeTIwID0geTIgLSB5MCxcbiAgICAgICAgICBsMjFfMiA9IHgyMSAqIHgyMSArIHkyMSAqIHkyMSxcbiAgICAgICAgICBsMjBfMiA9IHgyMCAqIHgyMCArIHkyMCAqIHkyMCxcbiAgICAgICAgICBsMjEgPSBNYXRoLnNxcnQobDIxXzIpLFxuICAgICAgICAgIGwwMSA9IE1hdGguc3FydChsMDFfMiksXG4gICAgICAgICAgbCA9IHIgKiBNYXRoLnRhbigocGkgLSBNYXRoLmFjb3MoKGwyMV8yICsgbDAxXzIgLSBsMjBfMikgLyAoMiAqIGwyMSAqIGwwMSkpKSAvIDIpLFxuICAgICAgICAgIHQwMSA9IGwgLyBsMDEsXG4gICAgICAgICAgdDIxID0gbCAvIGwyMTtcblxuICAgICAgLy8gSWYgdGhlIHN0YXJ0IHRhbmdlbnQgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCAoeDAseTApLCBsaW5lIHRvLlxuICAgICAgaWYgKE1hdGguYWJzKHQwMSAtIDEpID4gZXBzaWxvbikge1xuICAgICAgICB0aGlzLl9hcHBlbmRgTCR7eDEgKyB0MDEgKiB4MDF9LCR7eTEgKyB0MDEgKiB5MDF9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fYXBwZW5kYEEke3J9LCR7cn0sMCwwLCR7Kyh5MDEgKiB4MjAgPiB4MDEgKiB5MjApfSwke3RoaXMuX3gxID0geDEgKyB0MjEgKiB4MjF9LCR7dGhpcy5feTEgPSB5MSArIHQyMSAqIHkyMX1gO1xuICAgIH1cbiAgfVxuICBhcmMoeCwgeSwgciwgYTAsIGExLCBjY3cpIHtcbiAgICB4ID0gK3gsIHkgPSAreSwgciA9ICtyLCBjY3cgPSAhIWNjdztcblxuICAgIC8vIElzIHRoZSByYWRpdXMgbmVnYXRpdmU/IEVycm9yLlxuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKGBuZWdhdGl2ZSByYWRpdXM6ICR7cn1gKTtcblxuICAgIGxldCBkeCA9IHIgKiBNYXRoLmNvcyhhMCksXG4gICAgICAgIGR5ID0gciAqIE1hdGguc2luKGEwKSxcbiAgICAgICAgeDAgPSB4ICsgZHgsXG4gICAgICAgIHkwID0geSArIGR5LFxuICAgICAgICBjdyA9IDEgXiBjY3csXG4gICAgICAgIGRhID0gY2N3ID8gYTAgLSBhMSA6IGExIC0gYTA7XG5cbiAgICAvLyBJcyB0aGlzIHBhdGggZW1wdHk/IE1vdmUgdG8gKHgwLHkwKS5cbiAgICBpZiAodGhpcy5feDEgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX2FwcGVuZGBNJHt4MH0sJHt5MH1gO1xuICAgIH1cblxuICAgIC8vIE9yLCBpcyAoeDAseTApIG5vdCBjb2luY2lkZW50IHdpdGggdGhlIHByZXZpb3VzIHBvaW50PyBMaW5lIHRvICh4MCx5MCkuXG4gICAgZWxzZSBpZiAoTWF0aC5hYnModGhpcy5feDEgLSB4MCkgPiBlcHNpbG9uIHx8IE1hdGguYWJzKHRoaXMuX3kxIC0geTApID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fYXBwZW5kYEwke3gwfSwke3kwfWA7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhpcyBhcmMgZW1wdHk/IFdl4oCZcmUgZG9uZS5cbiAgICBpZiAoIXIpIHJldHVybjtcblxuICAgIC8vIERvZXMgdGhlIGFuZ2xlIGdvIHRoZSB3cm9uZyB3YXk/IEZsaXAgdGhlIGRpcmVjdGlvbi5cbiAgICBpZiAoZGEgPCAwKSBkYSA9IGRhICUgdGF1ICsgdGF1O1xuXG4gICAgLy8gSXMgdGhpcyBhIGNvbXBsZXRlIGNpcmNsZT8gRHJhdyB0d28gYXJjcyB0byBjb21wbGV0ZSB0aGUgY2lyY2xlLlxuICAgIGlmIChkYSA+IHRhdUVwc2lsb24pIHtcbiAgICAgIHRoaXMuX2FwcGVuZGBBJHtyfSwke3J9LDAsMSwke2N3fSwke3ggLSBkeH0sJHt5IC0gZHl9QSR7cn0sJHtyfSwwLDEsJHtjd30sJHt0aGlzLl94MSA9IHgwfSwke3RoaXMuX3kxID0geTB9YDtcbiAgICB9XG5cbiAgICAvLyBJcyB0aGlzIGFyYyBub24tZW1wdHk/IERyYXcgYW4gYXJjIVxuICAgIGVsc2UgaWYgKGRhID4gZXBzaWxvbikge1xuICAgICAgdGhpcy5fYXBwZW5kYEEke3J9LCR7cn0sMCwkeysoZGEgPj0gcGkpfSwke2N3fSwke3RoaXMuX3gxID0geCArIHIgKiBNYXRoLmNvcyhhMSl9LCR7dGhpcy5feTEgPSB5ICsgciAqIE1hdGguc2luKGExKX1gO1xuICAgIH1cbiAgfVxuICByZWN0KHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLl9hcHBlbmRgTSR7dGhpcy5feDAgPSB0aGlzLl94MSA9ICt4fSwke3RoaXMuX3kwID0gdGhpcy5feTEgPSAreX1oJHt3ID0gK3d9diR7K2h9aCR7LXd9WmA7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuXztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIG5ldyBQYXRoO1xufVxuXG4vLyBBbGxvdyBpbnN0YW5jZW9mIGQzLnBhdGhcbnBhdGgucHJvdG90eXBlID0gUGF0aC5wcm90b3R5cGU7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoUm91bmQoZGlnaXRzID0gMykge1xuICByZXR1cm4gbmV3IFBhdGgoK2RpZ2l0cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-path/src/path.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/area.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/area.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2FyZWEuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1wb2x5Z29uL3NyYy9hcmVhLmpzPzBiMDUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocG9seWdvbikge1xuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IHBvbHlnb24ubGVuZ3RoLFxuICAgICAgYSxcbiAgICAgIGIgPSBwb2x5Z29uW24gLSAxXSxcbiAgICAgIGFyZWEgPSAwO1xuXG4gIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgYSA9IGI7XG4gICAgYiA9IHBvbHlnb25baV07XG4gICAgYXJlYSArPSBhWzFdICogYlswXSAtIGFbMF0gKiBiWzFdO1xuICB9XG5cbiAgcmV0dXJuIGFyZWEgLyAyO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/area.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/centroid.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/centroid.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2NlbnRyb2lkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2NlbnRyb2lkLmpzPzExNzYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocG9seWdvbikge1xuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IHBvbHlnb24ubGVuZ3RoLFxuICAgICAgeCA9IDAsXG4gICAgICB5ID0gMCxcbiAgICAgIGEsXG4gICAgICBiID0gcG9seWdvbltuIC0gMV0sXG4gICAgICBjLFxuICAgICAgayA9IDA7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBhID0gYjtcbiAgICBiID0gcG9seWdvbltpXTtcbiAgICBrICs9IGMgPSBhWzBdICogYlsxXSAtIGJbMF0gKiBhWzFdO1xuICAgIHggKz0gKGFbMF0gKyBiWzBdKSAqIGM7XG4gICAgeSArPSAoYVsxXSArIGJbMV0pICogYztcbiAgfVxuXG4gIHJldHVybiBrICo9IDMsIFt4IC8gaywgeSAvIGtdO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/centroid.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/contains.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/contains.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2NvbnRhaW5zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLE9BQU87QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcG9seWdvbi9zcmMvY29udGFpbnMuanM/NGFjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwb2x5Z29uLCBwb2ludCkge1xuICB2YXIgbiA9IHBvbHlnb24ubGVuZ3RoLFxuICAgICAgcCA9IHBvbHlnb25bbiAtIDFdLFxuICAgICAgeCA9IHBvaW50WzBdLCB5ID0gcG9pbnRbMV0sXG4gICAgICB4MCA9IHBbMF0sIHkwID0gcFsxXSxcbiAgICAgIHgxLCB5MSxcbiAgICAgIGluc2lkZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgcCA9IHBvbHlnb25baV0sIHgxID0gcFswXSwgeTEgPSBwWzFdO1xuICAgIGlmICgoKHkxID4geSkgIT09ICh5MCA+IHkpKSAmJiAoeCA8ICh4MCAtIHgxKSAqICh5IC0geTEpIC8gKHkwIC0geTEpICsgeDEpKSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIHgwID0geDEsIHkwID0geTE7XG4gIH1cblxuICByZXR1cm4gaW5zaWRlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/contains.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/cross.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/cross.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2Nyb3NzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2Nyb3NzLmpzPzZlMWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUmV0dXJucyB0aGUgMkQgY3Jvc3MgcHJvZHVjdCBvZiBBQiBhbmQgQUMgdmVjdG9ycywgaS5lLiwgdGhlIHotY29tcG9uZW50IG9mXG4vLyB0aGUgM0QgY3Jvc3MgcHJvZHVjdCBpbiBhIHF1YWRyYW50IEkgQ2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtICgreCBpc1xuLy8gcmlnaHQsICt5IGlzIHVwKS4gUmV0dXJucyBhIHBvc2l0aXZlIHZhbHVlIGlmIEFCQyBpcyBjb3VudGVyLWNsb2Nrd2lzZSxcbi8vIG5lZ2F0aXZlIGlmIGNsb2Nrd2lzZSwgYW5kIHplcm8gaWYgdGhlIHBvaW50cyBhcmUgY29sbGluZWFyLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYiwgYykge1xuICByZXR1cm4gKGJbMF0gLSBhWzBdKSAqIChjWzFdIC0gYVsxXSkgLSAoYlsxXSAtIGFbMV0pICogKGNbMF0gLSBhWzBdKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/cross.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/hull.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/hull.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cross_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cross.js */ \"../../../node_modules/d3-polygon/src/cross.js\");\n\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n const n = points.length,\n indexes = [0, 1];\n let size = 2, i;\n\n for (i = 2; i < n; ++i) {\n while (size > 1 && (0,_cross_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2h1bGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLE9BQU87QUFDckIsdUJBQXVCLHFEQUFLO0FBQzVCO0FBQ0E7O0FBRUEsaUNBQWlDO0FBQ2pDOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsT0FBTztBQUNyQjtBQUNBLGNBQWMsT0FBTzs7QUFFckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DLFFBQVE7QUFDNUMsc0JBQXNCLHFDQUFxQzs7QUFFM0Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcG9seWdvbi9zcmMvaHVsbC5qcz8yMDUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcm9zcyBmcm9tIFwiLi9jcm9zcy5qc1wiO1xuXG5mdW5jdGlvbiBsZXhpY29ncmFwaGljT3JkZXIoYSwgYikge1xuICByZXR1cm4gYVswXSAtIGJbMF0gfHwgYVsxXSAtIGJbMV07XG59XG5cbi8vIENvbXB1dGVzIHRoZSB1cHBlciBjb252ZXggaHVsbCBwZXIgdGhlIG1vbm90b25lIGNoYWluIGFsZ29yaXRobS5cbi8vIEFzc3VtZXMgcG9pbnRzLmxlbmd0aCA+PSAzLCBpcyBzb3J0ZWQgYnkgeCwgdW5pcXVlIGluIHkuXG4vLyBSZXR1cm5zIGFuIGFycmF5IG9mIGluZGljZXMgaW50byBwb2ludHMgaW4gbGVmdC10by1yaWdodCBvcmRlci5cbmZ1bmN0aW9uIGNvbXB1dGVVcHBlckh1bGxJbmRleGVzKHBvaW50cykge1xuICBjb25zdCBuID0gcG9pbnRzLmxlbmd0aCxcbiAgICAgIGluZGV4ZXMgPSBbMCwgMV07XG4gIGxldCBzaXplID0gMiwgaTtcblxuICBmb3IgKGkgPSAyOyBpIDwgbjsgKytpKSB7XG4gICAgd2hpbGUgKHNpemUgPiAxICYmIGNyb3NzKHBvaW50c1tpbmRleGVzW3NpemUgLSAyXV0sIHBvaW50c1tpbmRleGVzW3NpemUgLSAxXV0sIHBvaW50c1tpXSkgPD0gMCkgLS1zaXplO1xuICAgIGluZGV4ZXNbc2l6ZSsrXSA9IGk7XG4gIH1cblxuICByZXR1cm4gaW5kZXhlcy5zbGljZSgwLCBzaXplKTsgLy8gcmVtb3ZlIHBvcHBlZCBwb2ludHNcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocG9pbnRzKSB7XG4gIGlmICgobiA9IHBvaW50cy5sZW5ndGgpIDwgMykgcmV0dXJuIG51bGw7XG5cbiAgdmFyIGksXG4gICAgICBuLFxuICAgICAgc29ydGVkUG9pbnRzID0gbmV3IEFycmF5KG4pLFxuICAgICAgZmxpcHBlZFBvaW50cyA9IG5ldyBBcnJheShuKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSBzb3J0ZWRQb2ludHNbaV0gPSBbK3BvaW50c1tpXVswXSwgK3BvaW50c1tpXVsxXSwgaV07XG4gIHNvcnRlZFBvaW50cy5zb3J0KGxleGljb2dyYXBoaWNPcmRlcik7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIGZsaXBwZWRQb2ludHNbaV0gPSBbc29ydGVkUG9pbnRzW2ldWzBdLCAtc29ydGVkUG9pbnRzW2ldWzFdXTtcblxuICB2YXIgdXBwZXJJbmRleGVzID0gY29tcHV0ZVVwcGVySHVsbEluZGV4ZXMoc29ydGVkUG9pbnRzKSxcbiAgICAgIGxvd2VySW5kZXhlcyA9IGNvbXB1dGVVcHBlckh1bGxJbmRleGVzKGZsaXBwZWRQb2ludHMpO1xuXG4gIC8vIENvbnN0cnVjdCB0aGUgaHVsbCBwb2x5Z29uLCByZW1vdmluZyBwb3NzaWJsZSBkdXBsaWNhdGUgZW5kcG9pbnRzLlxuICB2YXIgc2tpcExlZnQgPSBsb3dlckluZGV4ZXNbMF0gPT09IHVwcGVySW5kZXhlc1swXSxcbiAgICAgIHNraXBSaWdodCA9IGxvd2VySW5kZXhlc1tsb3dlckluZGV4ZXMubGVuZ3RoIC0gMV0gPT09IHVwcGVySW5kZXhlc1t1cHBlckluZGV4ZXMubGVuZ3RoIC0gMV0sXG4gICAgICBodWxsID0gW107XG5cbiAgLy8gQWRkIHVwcGVyIGh1bGwgaW4gcmlnaHQtdG8tbCBvcmRlci5cbiAgLy8gVGhlbiBhZGQgbG93ZXIgaHVsbCBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLlxuICBmb3IgKGkgPSB1cHBlckluZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIGh1bGwucHVzaChwb2ludHNbc29ydGVkUG9pbnRzW3VwcGVySW5kZXhlc1tpXV1bMl1dKTtcbiAgZm9yIChpID0gK3NraXBMZWZ0OyBpIDwgbG93ZXJJbmRleGVzLmxlbmd0aCAtIHNraXBSaWdodDsgKytpKSBodWxsLnB1c2gocG9pbnRzW3NvcnRlZFBvaW50c1tsb3dlckluZGV4ZXNbaV1dWzJdXSk7XG5cbiAgcmV0dXJuIGh1bGw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/hull.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/index.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/index.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"polygonArea\": () => (/* reexport safe */ _area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"polygonCentroid\": () => (/* reexport safe */ _centroid_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"polygonContains\": () => (/* reexport safe */ _contains_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"polygonHull\": () => (/* reexport safe */ _hull_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"polygonLength\": () => (/* reexport safe */ _length_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-polygon/src/area.js\");\n/* harmony import */ var _centroid_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./centroid.js */ \"../../../node_modules/d3-polygon/src/centroid.js\");\n/* harmony import */ var _hull_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hull.js */ \"../../../node_modules/d3-polygon/src/hull.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contains.js */ \"../../../node_modules/d3-polygon/src/contains.js\");\n/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./length.js */ \"../../../node_modules/d3-polygon/src/length.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBaUQ7QUFDUTtBQUNSO0FBQ1E7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcG9seWdvbi9zcmMvaW5kZXguanM/YzdjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgcG9seWdvbkFyZWF9IGZyb20gXCIuL2FyZWEuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwb2x5Z29uQ2VudHJvaWR9IGZyb20gXCIuL2NlbnRyb2lkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcG9seWdvbkh1bGx9IGZyb20gXCIuL2h1bGwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwb2x5Z29uQ29udGFpbnN9IGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcG9seWdvbkxlbmd0aH0gZnJvbSBcIi4vbGVuZ3RoLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-polygon/src/length.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-polygon/src/length.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.hypot(xa, ya);\n }\n\n return perimeter;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXBvbHlnb24vc3JjL2xlbmd0aC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1wb2x5Z29uL3NyYy9sZW5ndGguanM/MGRhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwb2x5Z29uKSB7XG4gIHZhciBpID0gLTEsXG4gICAgICBuID0gcG9seWdvbi5sZW5ndGgsXG4gICAgICBiID0gcG9seWdvbltuIC0gMV0sXG4gICAgICB4YSxcbiAgICAgIHlhLFxuICAgICAgeGIgPSBiWzBdLFxuICAgICAgeWIgPSBiWzFdLFxuICAgICAgcGVyaW1ldGVyID0gMDtcblxuICB3aGlsZSAoKytpIDwgbikge1xuICAgIHhhID0geGI7XG4gICAgeWEgPSB5YjtcbiAgICBiID0gcG9seWdvbltpXTtcbiAgICB4YiA9IGJbMF07XG4gICAgeWIgPSBiWzFdO1xuICAgIHhhIC09IHhiO1xuICAgIHlhIC09IHliO1xuICAgIHBlcmltZXRlciArPSBNYXRoLmh5cG90KHhhLCB5YSk7XG4gIH1cblxuICByZXR1cm4gcGVyaW1ldGVyO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-polygon/src/length.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/add.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/add.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addAll\": () => (/* binding */ addAll),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nfunction addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9hZGQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BELHFEQUFxRDtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRDtBQUNwRCxxREFBcUQ7QUFDckQsSUFBSTtBQUNKO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvYWRkLmpzP2YxMDciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBjb25zdCB4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkKSxcbiAgICAgIHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpO1xuICByZXR1cm4gYWRkKHRoaXMuY292ZXIoeCwgeSksIHgsIHksIGQpO1xufVxuXG5mdW5jdGlvbiBhZGQodHJlZSwgeCwgeSwgZCkge1xuICBpZiAoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiB0cmVlOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRyZWUuX3Jvb3QsXG4gICAgICBsZWFmID0ge2RhdGE6IGR9LFxuICAgICAgeDAgPSB0cmVlLl94MCxcbiAgICAgIHkwID0gdHJlZS5feTAsXG4gICAgICB4MSA9IHRyZWUuX3gxLFxuICAgICAgeTEgPSB0cmVlLl95MSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICB4cCxcbiAgICAgIHlwLFxuICAgICAgcmlnaHQsXG4gICAgICBib3R0b20sXG4gICAgICBpLFxuICAgICAgajtcblxuICAvLyBJZiB0aGUgdHJlZSBpcyBlbXB0eSwgaW5pdGlhbGl6ZSB0aGUgcm9vdCBhcyBhIGxlYWYuXG4gIGlmICghbm9kZSkgcmV0dXJuIHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIEZpbmQgdGhlIGV4aXN0aW5nIGxlYWYgZm9yIHRoZSBuZXcgcG9pbnQsIG9yIGFkZCBpdC5cbiAgd2hpbGUgKG5vZGUubGVuZ3RoKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKHBhcmVudCA9IG5vZGUsICEobm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHBhcmVudFtpXSA9IGxlYWYsIHRyZWU7XG4gIH1cblxuICAvLyBJcyB0aGUgbmV3IHBvaW50IGlzIGV4YWN0bHkgY29pbmNpZGVudCB3aXRoIHRoZSBleGlzdGluZyBwb2ludD9cbiAgeHAgPSArdHJlZS5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSk7XG4gIHlwID0gK3RyZWUuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICBpZiAoeCA9PT0geHAgJiYgeSA9PT0geXApIHJldHVybiBsZWFmLm5leHQgPSBub2RlLCBwYXJlbnQgPyBwYXJlbnRbaV0gPSBsZWFmIDogdHJlZS5fcm9vdCA9IGxlYWYsIHRyZWU7XG5cbiAgLy8gT3RoZXJ3aXNlLCBzcGxpdCB0aGUgbGVhZiBub2RlIHVudGlsIHRoZSBvbGQgYW5kIG5ldyBwb2ludCBhcmUgc2VwYXJhdGVkLlxuICBkbyB7XG4gICAgcGFyZW50ID0gcGFyZW50ID8gcGFyZW50W2ldID0gbmV3IEFycmF5KDQpIDogdHJlZS5fcm9vdCA9IG5ldyBBcnJheSg0KTtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgfSB3aGlsZSAoKGkgPSBib3R0b20gPDwgMSB8IHJpZ2h0KSA9PT0gKGogPSAoeXAgPj0geW0pIDw8IDEgfCAoeHAgPj0geG0pKSk7XG4gIHJldHVybiBwYXJlbnRbal0gPSBub2RlLCBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQWxsKGRhdGEpIHtcbiAgdmFyIGQsIGksIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeHogPSBuZXcgQXJyYXkobiksXG4gICAgICB5eiA9IG5ldyBBcnJheShuKSxcbiAgICAgIHgwID0gSW5maW5pdHksXG4gICAgICB5MCA9IEluZmluaXR5LFxuICAgICAgeDEgPSAtSW5maW5pdHksXG4gICAgICB5MSA9IC1JbmZpbml0eTtcblxuICAvLyBDb21wdXRlIHRoZSBwb2ludHMgYW5kIHRoZWlyIGV4dGVudC5cbiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgIGlmIChpc05hTih4ID0gK3RoaXMuX3guY2FsbChudWxsLCBkID0gZGF0YVtpXSkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgY29udGludWU7XG4gICAgeHpbaV0gPSB4O1xuICAgIHl6W2ldID0geTtcbiAgICBpZiAoeCA8IHgwKSB4MCA9IHg7XG4gICAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICAgIGlmICh5IDwgeTApIHkwID0geTtcbiAgICBpZiAoeSA+IHkxKSB5MSA9IHk7XG4gIH1cblxuICAvLyBJZiB0aGVyZSB3ZXJlIG5vICh2YWxpZCkgcG9pbnRzLCBhYm9ydC5cbiAgaWYgKHgwID4geDEgfHwgeTAgPiB5MSkgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/add.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/cover.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/cover.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEIsbURBQW1EOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUMsMENBQTBDO0FBQzFDLDBDQUEwQztBQUMxQywwQ0FBMEM7QUFDMUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2NvdmVyLmpzPzZiMzUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICBpZiAoaXNOYU4oeCA9ICt4KSB8fCBpc05hTih5ID0gK3kpKSByZXR1cm4gdGhpczsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEgPSB0aGlzLl94MSxcbiAgICAgIHkxID0gdGhpcy5feTE7XG5cbiAgLy8gSWYgdGhlIHF1YWR0cmVlIGhhcyBubyBleHRlbnQsIGluaXRpYWxpemUgdGhlbS5cbiAgLy8gSW50ZWdlciBleHRlbnQgYXJlIG5lY2Vzc2FyeSBzbyB0aGF0IGlmIHdlIGxhdGVyIGRvdWJsZSB0aGUgZXh0ZW50LFxuICAvLyB0aGUgZXhpc3RpbmcgcXVhZHJhbnQgYm91bmRhcmllcyBkb27igJl0IGNoYW5nZSBkdWUgdG8gZmxvYXRpbmcgcG9pbnQgZXJyb3IhXG4gIGlmIChpc05hTih4MCkpIHtcbiAgICB4MSA9ICh4MCA9IE1hdGguZmxvb3IoeCkpICsgMTtcbiAgICB5MSA9ICh5MCA9IE1hdGguZmxvb3IoeSkpICsgMTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgZG91YmxlIHJlcGVhdGVkbHkgdG8gY292ZXIuXG4gIGVsc2Uge1xuICAgIHZhciB6ID0geDEgLSB4MCB8fCAxLFxuICAgICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBpO1xuXG4gICAgd2hpbGUgKHgwID4geCB8fCB4ID49IHgxIHx8IHkwID4geSB8fCB5ID49IHkxKSB7XG4gICAgICBpID0gKHkgPCB5MCkgPDwgMSB8ICh4IDwgeDApO1xuICAgICAgcGFyZW50ID0gbmV3IEFycmF5KDQpLCBwYXJlbnRbaV0gPSBub2RlLCBub2RlID0gcGFyZW50LCB6ICo9IDI7XG4gICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgY2FzZSAwOiB4MSA9IHgwICsgeiwgeTEgPSB5MCArIHo7IGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHgwID0geDEgLSB6LCB5MSA9IHkwICsgejsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogeDEgPSB4MCArIHosIHkwID0geTEgLSB6OyBicmVhaztcbiAgICAgICAgY2FzZSAzOiB4MCA9IHgxIC0geiwgeTAgPSB5MSAtIHo7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9yb290ICYmIHRoaXMuX3Jvb3QubGVuZ3RoKSB0aGlzLl9yb290ID0gbm9kZTtcbiAgfVxuXG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHJldHVybiB0aGlzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/cover.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/data.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/data.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9kYXRhLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZGF0YS5qcz84ZjZkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZGF0YSA9IFtdO1xuICB0aGlzLnZpc2l0KGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBkbyBkYXRhLnB1c2gobm9kZS5kYXRhKTsgd2hpbGUgKG5vZGUgPSBub2RlLm5leHQpXG4gIH0pO1xuICByZXR1cm4gZGF0YTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/data.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/extent.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/extent.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9leHRlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZXh0ZW50LmpzPzViMjMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmNvdmVyKCtfWzBdWzBdLCArX1swXVsxXSkuY292ZXIoK19bMV1bMF0sICtfWzFdWzFdKVxuICAgICAgOiBpc05hTih0aGlzLl94MCkgPyB1bmRlZmluZWQgOiBbW3RoaXMuX3gwLCB0aGlzLl95MF0sIFt0aGlzLl94MSwgdGhpcy5feTFdXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/extent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/find.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/find.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"../../../node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[3], xm, ym, x2, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[2], x1, ym, xm, y2),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[1], xm, y1, x2, ym),\n new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9maW5kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIsZ0RBQUk7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksZ0RBQUk7QUFDaEIsWUFBWSxnREFBSTtBQUNoQixZQUFZLGdEQUFJO0FBQ2hCLFlBQVksZ0RBQUk7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2ZpbmQuanM/NGY0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVhZCBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykge1xuICB2YXIgZGF0YSxcbiAgICAgIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEsXG4gICAgICB5MSxcbiAgICAgIHgyLFxuICAgICAgeTIsXG4gICAgICB4MyA9IHRoaXMuX3gxLFxuICAgICAgeTMgPSB0aGlzLl95MSxcbiAgICAgIHF1YWRzID0gW10sXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHEsXG4gICAgICBpO1xuXG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHgwLCB5MCwgeDMsIHkzKSk7XG4gIGlmIChyYWRpdXMgPT0gbnVsbCkgcmFkaXVzID0gSW5maW5pdHk7XG4gIGVsc2Uge1xuICAgIHgwID0geCAtIHJhZGl1cywgeTAgPSB5IC0gcmFkaXVzO1xuICAgIHgzID0geCArIHJhZGl1cywgeTMgPSB5ICsgcmFkaXVzO1xuICAgIHJhZGl1cyAqPSByYWRpdXM7XG4gIH1cblxuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG5cbiAgICAvLyBTdG9wIHNlYXJjaGluZyBpZiB0aGlzIHF1YWRyYW50IGNhbuKAmXQgY29udGFpbiBhIGNsb3NlciBub2RlLlxuICAgIGlmICghKG5vZGUgPSBxLm5vZGUpXG4gICAgICAgIHx8ICh4MSA9IHEueDApID4geDNcbiAgICAgICAgfHwgKHkxID0gcS55MCkgPiB5M1xuICAgICAgICB8fCAoeDIgPSBxLngxKSA8IHgwXG4gICAgICAgIHx8ICh5MiA9IHEueTEpIDwgeTApIGNvbnRpbnVlO1xuXG4gICAgLy8gQmlzZWN0IHRoZSBjdXJyZW50IHF1YWRyYW50LlxuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIHhtID0gKHgxICsgeDIpIC8gMixcbiAgICAgICAgICB5bSA9ICh5MSArIHkyKSAvIDI7XG5cbiAgICAgIHF1YWRzLnB1c2goXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbM10sIHhtLCB5bSwgeDIsIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsyXSwgeDEsIHltLCB4bSwgeTIpLFxuICAgICAgICBuZXcgUXVhZChub2RlWzFdLCB4bSwgeTEsIHgyLCB5bSksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMF0sIHgxLCB5MSwgeG0sIHltKVxuICAgICAgKTtcblxuICAgICAgLy8gVmlzaXQgdGhlIGNsb3Nlc3QgcXVhZHJhbnQgZmlyc3QuXG4gICAgICBpZiAoaSA9ICh5ID49IHltKSA8PCAxIHwgKHggPj0geG0pKSB7XG4gICAgICAgIHEgPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV0gPSBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDEgLSBpXSA9IHE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlzaXQgdGhpcyBwb2ludC4gKFZpc2l0aW5nIGNvaW5jaWRlbnQgcG9pbnRzIGlzbuKAmXQgbmVjZXNzYXJ5ISlcbiAgICBlbHNlIHtcbiAgICAgIHZhciBkeCA9IHggLSArdGhpcy5feC5jYWxsKG51bGwsIG5vZGUuZGF0YSksXG4gICAgICAgICAgZHkgPSB5IC0gK3RoaXMuX3kuY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgICBpZiAoZDIgPCByYWRpdXMpIHtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNxcnQocmFkaXVzID0gZDIpO1xuICAgICAgICB4MCA9IHggLSBkLCB5MCA9IHkgLSBkO1xuICAgICAgICB4MyA9IHggKyBkLCB5MyA9IHkgKyBkO1xuICAgICAgICBkYXRhID0gbm9kZS5kYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/find.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"quadtree\": () => (/* reexport safe */ _quadtree_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _quadtree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quadtree.js */ \"../../../node_modules/d3-quadtree/src/quadtree.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL2luZGV4LmpzP2Q2NmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIHF1YWR0cmVlfSBmcm9tIFwiLi9xdWFkdHJlZS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/quad.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/quad.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzPzQxYzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy54MCA9IHgwO1xuICB0aGlzLnkwID0geTA7XG4gIHRoaXMueDEgPSB4MTtcbiAgdGhpcy55MSA9IHkxO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/quad.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/quadtree.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/quadtree.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ quadtree)\n/* harmony export */ });\n/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add.js */ \"../../../node_modules/d3-quadtree/src/add.js\");\n/* harmony import */ var _cover_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cover.js */ \"../../../node_modules/d3-quadtree/src/cover.js\");\n/* harmony import */ var _data_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./data.js */ \"../../../node_modules/d3-quadtree/src/data.js\");\n/* harmony import */ var _extent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./extent.js */ \"../../../node_modules/d3-quadtree/src/extent.js\");\n/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./find.js */ \"../../../node_modules/d3-quadtree/src/find.js\");\n/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./remove.js */ \"../../../node_modules/d3-quadtree/src/remove.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./root.js */ \"../../../node_modules/d3-quadtree/src/root.js\");\n/* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./size.js */ \"../../../node_modules/d3-quadtree/src/size.js\");\n/* harmony import */ var _visit_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./visit.js */ \"../../../node_modules/d3-quadtree/src/visit.js\");\n/* harmony import */ var _visitAfter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./visitAfter.js */ \"../../../node_modules/d3-quadtree/src/visitAfter.js\");\n/* harmony import */ var _x_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./x.js */ \"../../../node_modules/d3-quadtree/src/x.js\");\n/* harmony import */ var _y_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./y.js */ \"../../../node_modules/d3-quadtree/src/y.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? _x_js__WEBPACK_IMPORTED_MODULE_0__.defaultX : x, y == null ? _y_js__WEBPACK_IMPORTED_MODULE_1__.defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = _add_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\ntreeProto.addAll = _add_js__WEBPACK_IMPORTED_MODULE_2__.addAll;\ntreeProto.cover = _cover_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\ntreeProto.data = _data_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\ntreeProto.extent = _extent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\ntreeProto.find = _find_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\ntreeProto.remove = _remove_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\ntreeProto.removeAll = _remove_js__WEBPACK_IMPORTED_MODULE_7__.removeAll;\ntreeProto.root = _root_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\ntreeProto.size = _size_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\ntreeProto.visit = _visit_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\ntreeProto.visitAfter = _visitAfter_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\ntreeProto.x = _x_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\ntreeProto.y = _y_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkdHJlZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXlEO0FBQ3JCO0FBQ0Y7QUFDSTtBQUNKO0FBQ21DO0FBQ25DO0FBQ0E7QUFDRTtBQUNVO0FBQ047QUFDQTs7QUFFekI7QUFDZixzQ0FBc0MsMkNBQVEsa0JBQWtCLDJDQUFRO0FBQ3hFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYyxnQkFBZ0I7QUFDOUIsK0NBQStDO0FBQy9DO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxZQUFZLGdEQUFnRDtBQUM1RDtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0Esc0NBQXNDLHFEQUFxRDtBQUMzRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGdCQUFnQiwrQ0FBUTtBQUN4QixtQkFBbUIsMkNBQVc7QUFDOUIsa0JBQWtCLGlEQUFVO0FBQzVCLGlCQUFpQixnREFBUztBQUMxQixtQkFBbUIsa0RBQVc7QUFDOUIsaUJBQWlCLGdEQUFTO0FBQzFCLG1CQUFtQixrREFBVztBQUM5QixzQkFBc0IsaURBQWM7QUFDcEMsaUJBQWlCLGdEQUFTO0FBQzFCLGlCQUFpQixnREFBUztBQUMxQixrQkFBa0Isa0RBQVU7QUFDNUIsdUJBQXVCLHVEQUFlO0FBQ3RDLGNBQWMsNkNBQU07QUFDcEIsY0FBYyw2Q0FBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3F1YWR0cmVlLmpzPzQxZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRyZWVfYWRkLCB7YWRkQWxsIGFzIHRyZWVfYWRkQWxsfSBmcm9tIFwiLi9hZGQuanNcIjtcbmltcG9ydCB0cmVlX2NvdmVyIGZyb20gXCIuL2NvdmVyLmpzXCI7XG5pbXBvcnQgdHJlZV9kYXRhIGZyb20gXCIuL2RhdGEuanNcIjtcbmltcG9ydCB0cmVlX2V4dGVudCBmcm9tIFwiLi9leHRlbnQuanNcIjtcbmltcG9ydCB0cmVlX2ZpbmQgZnJvbSBcIi4vZmluZC5qc1wiO1xuaW1wb3J0IHRyZWVfcmVtb3ZlLCB7cmVtb3ZlQWxsIGFzIHRyZWVfcmVtb3ZlQWxsfSBmcm9tIFwiLi9yZW1vdmUuanNcIjtcbmltcG9ydCB0cmVlX3Jvb3QgZnJvbSBcIi4vcm9vdC5qc1wiO1xuaW1wb3J0IHRyZWVfc2l6ZSBmcm9tIFwiLi9zaXplLmpzXCI7XG5pbXBvcnQgdHJlZV92aXNpdCBmcm9tIFwiLi92aXNpdC5qc1wiO1xuaW1wb3J0IHRyZWVfdmlzaXRBZnRlciBmcm9tIFwiLi92aXNpdEFmdGVyLmpzXCI7XG5pbXBvcnQgdHJlZV94LCB7ZGVmYXVsdFh9IGZyb20gXCIuL3guanNcIjtcbmltcG9ydCB0cmVlX3ksIHtkZWZhdWx0WX0gZnJvbSBcIi4veS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSB0cmVlX2FkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHRyZWVfcmVtb3ZlQWxsO1xudHJlZVByb3RvLnJvb3QgPSB0cmVlX3Jvb3Q7XG50cmVlUHJvdG8uc2l6ZSA9IHRyZWVfc2l6ZTtcbnRyZWVQcm90by52aXNpdCA9IHRyZWVfdmlzaXQ7XG50cmVlUHJvdG8udmlzaXRBZnRlciA9IHRyZWVfdmlzaXRBZnRlcjtcbnRyZWVQcm90by54ID0gdHJlZV94O1xudHJlZVByb3RvLnkgPSB0cmVlX3k7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/quadtree.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/remove.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/remove.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"removeAll\": () => (/* binding */ removeAll)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nfunction removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9yZW1vdmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QiwyRkFBMkY7O0FBRTNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1AsbUNBQW1DLE9BQU87QUFDMUM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcz80MzA2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGQpIHtcbiAgaWYgKGlzTmFOKHggPSArdGhpcy5feC5jYWxsKG51bGwsIGQpKSB8fCBpc05hTih5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgcGFyZW50LFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICByZXRhaW5lcixcbiAgICAgIHByZXZpb3VzLFxuICAgICAgbmV4dCxcbiAgICAgIHgwID0gdGhpcy5feDAsXG4gICAgICB5MCA9IHRoaXMuX3kwLFxuICAgICAgeDEgPSB0aGlzLl94MSxcbiAgICAgIHkxID0gdGhpcy5feTEsXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHhtLFxuICAgICAgeW0sXG4gICAgICByaWdodCxcbiAgICAgIGJvdHRvbSxcbiAgICAgIGksXG4gICAgICBqO1xuXG4gIC8vIElmIHRoZSB0cmVlIGlzIGVtcHR5LCBpbml0aWFsaXplIHRoZSByb290IGFzIGEgbGVhZi5cbiAgaWYgKCFub2RlKSByZXR1cm4gdGhpcztcblxuICAvLyBGaW5kIHRoZSBsZWFmIG5vZGUgZm9yIHRoZSBwb2ludC5cbiAgLy8gV2hpbGUgZGVzY2VuZGluZywgYWxzbyByZXRhaW4gdGhlIGRlZXBlc3QgcGFyZW50IHdpdGggYSBub24tcmVtb3ZlZCBzaWJsaW5nLlxuICBpZiAobm9kZS5sZW5ndGgpIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gICAgaWYgKCEocGFyZW50ID0gbm9kZSwgbm9kZSA9IG5vZGVbaSA9IGJvdHRvbSA8PCAxIHwgcmlnaHRdKSkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgYnJlYWs7XG4gICAgaWYgKHBhcmVudFsoaSArIDEpICYgM10gfHwgcGFyZW50WyhpICsgMikgJiAzXSB8fCBwYXJlbnRbKGkgKyAzKSAmIDNdKSByZXRhaW5lciA9IHBhcmVudCwgaiA9IGk7XG4gIH1cblxuICAvLyBGaW5kIHRoZSBwb2ludCB0byByZW1vdmUuXG4gIHdoaWxlIChub2RlLmRhdGEgIT09IGQpIGlmICghKHByZXZpb3VzID0gbm9kZSwgbm9kZSA9IG5vZGUubmV4dCkpIHJldHVybiB0aGlzO1xuICBpZiAobmV4dCA9IG5vZGUubmV4dCkgZGVsZXRlIG5vZGUubmV4dDtcblxuICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29pbmNpZGVudCBwb2ludHMsIHJlbW92ZSBqdXN0IHRoZSBwb2ludC5cbiAgaWYgKHByZXZpb3VzKSByZXR1cm4gKG5leHQgPyBwcmV2aW91cy5uZXh0ID0gbmV4dCA6IGRlbGV0ZSBwcmV2aW91cy5uZXh0KSwgdGhpcztcblxuICAvLyBJZiB0aGlzIGlzIHRoZSByb290IHBvaW50LCByZW1vdmUgaXQuXG4gIGlmICghcGFyZW50KSByZXR1cm4gdGhpcy5fcm9vdCA9IG5leHQsIHRoaXM7XG5cbiAgLy8gUmVtb3ZlIHRoaXMgbGVhZi5cbiAgbmV4dCA/IHBhcmVudFtpXSA9IG5leHQgOiBkZWxldGUgcGFyZW50W2ldO1xuXG4gIC8vIElmIHRoZSBwYXJlbnQgbm93IGNvbnRhaW5zIGV4YWN0bHkgb25lIGxlYWYsIGNvbGxhcHNlIHN1cGVyZmx1b3VzIHBhcmVudHMuXG4gIGlmICgobm9kZSA9IHBhcmVudFswXSB8fCBwYXJlbnRbMV0gfHwgcGFyZW50WzJdIHx8IHBhcmVudFszXSlcbiAgICAgICYmIG5vZGUgPT09IChwYXJlbnRbM10gfHwgcGFyZW50WzJdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMF0pXG4gICAgICAmJiAhbm9kZS5sZW5ndGgpIHtcbiAgICBpZiAocmV0YWluZXIpIHJldGFpbmVyW2pdID0gbm9kZTtcbiAgICBlbHNlIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBbGwoZGF0YSkge1xuICBmb3IgKHZhciBpID0gMCwgbiA9IGRhdGEubGVuZ3RoOyBpIDwgbjsgKytpKSB0aGlzLnJlbW92ZShkYXRhW2ldKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/remove.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/root.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/root.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this._root;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9yb290LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvcm9vdC5qcz85ZjQyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fcm9vdDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/root.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/size.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/size.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvc2l6ZS5qcz83MjEzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2l6ZSA9IDA7XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvICsrc2l6ZTsgd2hpbGUgKG5vZGUgPSBub2RlLm5leHQpXG4gIH0pO1xuICByZXR1cm4gc2l6ZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/size.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/visit.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/visit.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"../../../node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE2Qjs7QUFFN0IsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSwyQkFBMkIsZ0RBQUk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXQuanM/ZjNhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUXVhZCBmcm9tIFwiLi9xdWFkLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBxdWFkcyA9IFtdLCBxLCBub2RlID0gdGhpcy5fcm9vdCwgY2hpbGQsIHgwLCB5MCwgeDEsIHkxO1xuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgaWYgKCFjYWxsYmFjayhub2RlID0gcS5ub2RlLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEpICYmIG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsyXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHltLCB4bSwgeTEpKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/visit.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/visitAfter.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/visitAfter.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _quad_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./quad.js */ \"../../../node_modules/d3-quadtree/src/quad.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new _quad_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdEFmdGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLGlDQUFpQyxnREFBSTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxnREFBSTtBQUM5QywwQ0FBMEMsZ0RBQUk7QUFDOUMsMENBQTBDLGdEQUFJO0FBQzlDLDBDQUEwQyxnREFBSTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXRBZnRlci5qcz83MzIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIG5leHQgPSBbXSwgcTtcbiAgaWYgKHRoaXMuX3Jvb3QpIHF1YWRzLnB1c2gobmV3IFF1YWQodGhpcy5fcm9vdCwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpKTtcbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuICAgIHZhciBub2RlID0gcS5ub2RlO1xuICAgIGlmIChub2RlLmxlbmd0aCkge1xuICAgICAgdmFyIGNoaWxkLCB4MCA9IHEueDAsIHkwID0gcS55MCwgeDEgPSBxLngxLCB5MSA9IHEueTEsIHhtID0gKHgwICsgeDEpIC8gMiwgeW0gPSAoeTAgKyB5MSkgLyAyO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVswXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeDAsIHkwLCB4bSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMV0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5MCwgeDEsIHltKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVszXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHltLCB4MSwgeTEpKTtcbiAgICB9XG4gICAgbmV4dC5wdXNoKHEpO1xuICB9XG4gIHdoaWxlIChxID0gbmV4dC5wb3AoKSkge1xuICAgIGNhbGxiYWNrKHEubm9kZSwgcS54MCwgcS55MCwgcS54MSwgcS55MSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/visitAfter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/x.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/x.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"defaultX\": () => (/* binding */ defaultX)\n/* harmony export */ });\nfunction defaultX(d) {\n return d[0];\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy94LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy94LmpzPzYyMTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRYKGQpIHtcbiAgcmV0dXJuIGRbMF07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feCA9IF8sIHRoaXMpIDogdGhpcy5feDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/x.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-quadtree/src/y.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-quadtree/src/y.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"defaultY\": () => (/* binding */ defaultY)\n/* harmony export */ });\nfunction defaultY(d) {\n return d[1];\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy95LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy95LmpzPzFhMDAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRZKGQpIHtcbiAgcmV0dXJuIGRbMV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKF8pIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhpcy5feSA9IF8sIHRoaXMpIDogdGhpcy5feTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-quadtree/src/y.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/bates.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-random/src/bates.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _irwinHall_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./irwinHall.js */ \"../../../node_modules/d3-random/src/irwinHall.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomBates(source) {\n var I = _irwinHall_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source);\n\n function randomBates(n) {\n // use limiting distribution at n === 0\n if ((n = +n) === 0) return source;\n var randomIrwinHall = I(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmF0ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStDO0FBQ1I7O0FBRXZDLGlFQUFlO0FBQ2YsVUFBVSw0REFBZ0I7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDLEVBQUUseURBQWEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1yYW5kb20vc3JjL2JhdGVzLmpzPzAxN2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuaW1wb3J0IGlyd2luSGFsbCBmcm9tIFwiLi9pcndpbkhhbGwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHNvdXJjZVJhbmRvbUJhdGVzKHNvdXJjZSkge1xuICB2YXIgSSA9IGlyd2luSGFsbC5zb3VyY2Uoc291cmNlKTtcblxuICBmdW5jdGlvbiByYW5kb21CYXRlcyhuKSB7XG4gICAgLy8gdXNlIGxpbWl0aW5nIGRpc3RyaWJ1dGlvbiBhdCBuID09PSAwXG4gICAgaWYgKChuID0gK24pID09PSAwKSByZXR1cm4gc291cmNlO1xuICAgIHZhciByYW5kb21JcndpbkhhbGwgPSBJKG4pO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByYW5kb21JcndpbkhhbGwoKSAvIG47XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUJhdGVzLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUJhdGVzO1xuXG4gIHJldHVybiByYW5kb21CYXRlcztcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/bates.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/bernoulli.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-random/src/bernoulli.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomBernoulli(source) {\n function randomBernoulli(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n return function() {\n return Math.floor(source() + p);\n };\n }\n\n randomBernoulli.source = sourceRandomBernoulli;\n\n return randomBernoulli;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmVybm91bGxpLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmVybm91bGxpLmpzPzNkOTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gc291cmNlUmFuZG9tQmVybm91bGxpKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21CZXJub3VsbGkocCkge1xuICAgIGlmICgocCA9ICtwKSA8IDAgfHwgcCA+IDEpIHRocm93IG5ldyBSYW5nZUVycm9yKFwiaW52YWxpZCBwXCIpO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKHNvdXJjZSgpICsgcCk7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUJlcm5vdWxsaS5zb3VyY2UgPSBzb3VyY2VSYW5kb21CZXJub3VsbGk7XG5cbiAgcmV0dXJuIHJhbmRvbUJlcm5vdWxsaTtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/bernoulli.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/beta.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-random/src/beta.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _gamma_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gamma.js */ \"../../../node_modules/d3-random/src/gamma.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomBeta(source) {\n var G = _gamma_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source);\n\n function randomBeta(alpha, beta) {\n var X = G(alpha),\n Y = G(beta);\n return function() {\n var x = X();\n return x === 0 ? 0 : x / (x + Y());\n };\n }\n\n randomBeta.source = sourceRandomBeta;\n\n return randomBeta;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmV0YS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBK0M7QUFDaEI7O0FBRS9CLGlFQUFlO0FBQ2YsVUFBVSx3REFBWTs7QUFFdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmV0YS5qcz8xZjhkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0U291cmNlIGZyb20gXCIuL2RlZmF1bHRTb3VyY2UuanNcIjtcbmltcG9ydCBnYW1tYSBmcm9tIFwiLi9nYW1tYS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gc291cmNlUmFuZG9tQmV0YShzb3VyY2UpIHtcbiAgdmFyIEcgPSBnYW1tYS5zb3VyY2Uoc291cmNlKTtcblxuICBmdW5jdGlvbiByYW5kb21CZXRhKGFscGhhLCBiZXRhKSB7XG4gICAgdmFyIFggPSBHKGFscGhhKSxcbiAgICAgICAgWSA9IEcoYmV0YSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHggPSBYKCk7XG4gICAgICByZXR1cm4geCA9PT0gMCA/IDAgOiB4IC8gKHggKyBZKCkpO1xuICAgIH07XG4gIH1cblxuICByYW5kb21CZXRhLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUJldGE7XG5cbiAgcmV0dXJuIHJhbmRvbUJldGE7XG59KShkZWZhdWx0U291cmNlKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/beta.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/binomial.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-random/src/binomial.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _beta_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./beta.js */ \"../../../node_modules/d3-random/src/beta.js\");\n/* harmony import */ var _geometric_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./geometric.js */ \"../../../node_modules/d3-random/src/geometric.js\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomBinomial(source) {\n var G = _geometric_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source),\n B = _beta_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].source(source);\n\n function randomBinomial(n, p) {\n n = +n;\n if ((p = +p) >= 1) return () => n;\n if (p <= 0) return () => 0;\n return function() {\n var acc = 0, nn = n, pp = p;\n while (nn * pp > 16 && nn * (1 - pp) > 16) {\n var i = Math.floor((nn + 1) * pp),\n y = B(i, nn - i + 1)();\n if (y <= pp) {\n acc += i;\n nn -= i;\n pp = (pp - y) / (1 - y);\n } else {\n nn = i - 1;\n pp /= y;\n }\n }\n var sign = pp < 0.5,\n pFinal = sign ? pp : 1 - pp,\n g = G(pFinal);\n for (var s = g(), k = 0; s <= nn; ++k) s += g();\n return acc + (sign ? k : nn - k);\n };\n }\n\n randomBinomial.source = sourceRandomBinomial;\n\n return randomBinomial;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvYmlub21pYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUErQztBQUNsQjtBQUNVOztBQUV2QyxpRUFBZTtBQUNmLFVBQVUsNERBQWdCO0FBQzFCLFVBQVUsdURBQVc7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLFNBQVM7QUFDeEM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxFQUFFLHlEQUFhLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9iaW5vbWlhbC5qcz9hOTQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0U291cmNlIGZyb20gXCIuL2RlZmF1bHRTb3VyY2UuanNcIjtcbmltcG9ydCBiZXRhIGZyb20gXCIuL2JldGEuanNcIjtcbmltcG9ydCBnZW9tZXRyaWMgZnJvbSBcIi4vZ2VvbWV0cmljLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21CaW5vbWlhbChzb3VyY2UpIHtcbiAgdmFyIEcgPSBnZW9tZXRyaWMuc291cmNlKHNvdXJjZSksXG4gICAgICBCID0gYmV0YS5zb3VyY2Uoc291cmNlKTtcblxuICBmdW5jdGlvbiByYW5kb21CaW5vbWlhbChuLCBwKSB7XG4gICAgbiA9ICtuO1xuICAgIGlmICgocCA9ICtwKSA+PSAxKSByZXR1cm4gKCkgPT4gbjtcbiAgICBpZiAocCA8PSAwKSByZXR1cm4gKCkgPT4gMDtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYWNjID0gMCwgbm4gPSBuLCBwcCA9IHA7XG4gICAgICB3aGlsZSAobm4gKiBwcCA+IDE2ICYmIG5uICogKDEgLSBwcCkgPiAxNikge1xuICAgICAgICB2YXIgaSA9IE1hdGguZmxvb3IoKG5uICsgMSkgKiBwcCksXG4gICAgICAgICAgICB5ID0gQihpLCBubiAtIGkgKyAxKSgpO1xuICAgICAgICBpZiAoeSA8PSBwcCkge1xuICAgICAgICAgIGFjYyArPSBpO1xuICAgICAgICAgIG5uIC09IGk7XG4gICAgICAgICAgcHAgPSAocHAgLSB5KSAvICgxIC0geSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm4gPSBpIC0gMTtcbiAgICAgICAgICBwcCAvPSB5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgc2lnbiA9IHBwIDwgMC41LFxuICAgICAgICAgIHBGaW5hbCA9IHNpZ24gPyBwcCA6IDEgLSBwcCxcbiAgICAgICAgICBnID0gRyhwRmluYWwpO1xuICAgICAgZm9yICh2YXIgcyA9IGcoKSwgayA9IDA7IHMgPD0gbm47ICsraykgcyArPSBnKCk7XG4gICAgICByZXR1cm4gYWNjICsgKHNpZ24gPyBrIDogbm4gLSBrKTtcbiAgICB9O1xuICB9XG5cbiAgcmFuZG9tQmlub21pYWwuc291cmNlID0gc291cmNlUmFuZG9tQmlub21pYWw7XG5cbiAgcmV0dXJuIHJhbmRvbUJpbm9taWFsO1xufSkoZGVmYXVsdFNvdXJjZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/binomial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/cauchy.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-random/src/cauchy.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomCauchy(source) {\n function randomCauchy(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * Math.tan(Math.PI * source());\n };\n }\n\n randomCauchy.source = sourceRandomCauchy;\n\n return randomCauchy;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvY2F1Y2h5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxFQUFFLHlEQUFhLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9jYXVjaHkuanM/YjBhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21DYXVjaHkoc291cmNlKSB7XG4gIGZ1bmN0aW9uIHJhbmRvbUNhdWNoeShhLCBiKSB7XG4gICAgYSA9IGEgPT0gbnVsbCA/IDAgOiArYTtcbiAgICBiID0gYiA9PSBudWxsID8gMSA6ICtiO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBhICsgYiAqIE1hdGgudGFuKE1hdGguUEkgKiBzb3VyY2UoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUNhdWNoeS5zb3VyY2UgPSBzb3VyY2VSYW5kb21DYXVjaHk7XG5cbiAgcmV0dXJuIHJhbmRvbUNhdWNoeTtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/cauchy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/defaultSource.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-random/src/defaultSource.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Math.random);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZGVmYXVsdFNvdXJjZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1yYW5kb20vc3JjL2RlZmF1bHRTb3VyY2UuanM/NjdiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBNYXRoLnJhbmRvbTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/defaultSource.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/exponential.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-random/src/exponential.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log1p(-source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZXhwb25lbnRpYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0M7O0FBRS9DLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZXhwb25lbnRpYWwuanM/Y2IxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21FeHBvbmVudGlhbChzb3VyY2UpIHtcbiAgZnVuY3Rpb24gcmFuZG9tRXhwb25lbnRpYWwobGFtYmRhKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIC1NYXRoLmxvZzFwKC1zb3VyY2UoKSkgLyBsYW1iZGE7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUV4cG9uZW50aWFsLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUV4cG9uZW50aWFsO1xuXG4gIHJldHVybiByYW5kb21FeHBvbmVudGlhbDtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/exponential.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/gamma.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-random/src/gamma.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _normal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./normal.js */ \"../../../node_modules/d3-random/src/normal.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomGamma(source) {\n var randomNormal = _normal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source)();\n\n function randomGamma(k, theta) {\n if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n // degenerate distribution if k === 0\n if (k === 0) return () => 0;\n theta = theta == null ? 1 : +theta;\n // exponential distribution if k === 1\n if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n var d = (k < 1 ? k + 1 : k) - 1 / 3,\n c = 1 / (3 * Math.sqrt(d)),\n multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n return function() {\n do {\n do {\n var x = randomNormal(),\n v = 1 + c * x;\n } while (v <= 0);\n v *= v * v;\n var u = 1 - source();\n } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n return d * v * multiplier() * theta;\n };\n }\n\n randomGamma.source = sourceRandomGamma;\n\n return randomGamma;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZ2FtbWEuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStDO0FBQ2Q7O0FBRWpDLGlFQUFlO0FBQ2YscUJBQXFCLHlEQUFhOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxFQUFFLHlEQUFhLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9nYW1tYS5qcz83YjhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0U291cmNlIGZyb20gXCIuL2RlZmF1bHRTb3VyY2UuanNcIjtcbmltcG9ydCBub3JtYWwgZnJvbSBcIi4vbm9ybWFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21HYW1tYShzb3VyY2UpIHtcbiAgdmFyIHJhbmRvbU5vcm1hbCA9IG5vcm1hbC5zb3VyY2Uoc291cmNlKSgpO1xuXG4gIGZ1bmN0aW9uIHJhbmRvbUdhbW1hKGssIHRoZXRhKSB7XG4gICAgaWYgKChrID0gK2spIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIGtcIik7XG4gICAgLy8gZGVnZW5lcmF0ZSBkaXN0cmlidXRpb24gaWYgayA9PT0gMFxuICAgIGlmIChrID09PSAwKSByZXR1cm4gKCkgPT4gMDtcbiAgICB0aGV0YSA9IHRoZXRhID09IG51bGwgPyAxIDogK3RoZXRhO1xuICAgIC8vIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBpZiBrID09PSAxXG4gICAgaWYgKGsgPT09IDEpIHJldHVybiAoKSA9PiAtTWF0aC5sb2cxcCgtc291cmNlKCkpICogdGhldGE7XG5cbiAgICB2YXIgZCA9IChrIDwgMSA/IGsgKyAxIDogaykgLSAxIC8gMyxcbiAgICAgICAgYyA9IDEgLyAoMyAqIE1hdGguc3FydChkKSksXG4gICAgICAgIG11bHRpcGxpZXIgPSBrIDwgMSA/ICgpID0+IE1hdGgucG93KHNvdXJjZSgpLCAxIC8gaykgOiAoKSA9PiAxO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHZhciB4ID0gcmFuZG9tTm9ybWFsKCksXG4gICAgICAgICAgICAgIHYgPSAxICsgYyAqIHg7XG4gICAgICAgIH0gd2hpbGUgKHYgPD0gMCk7XG4gICAgICAgIHYgKj0gdiAqIHY7XG4gICAgICAgIHZhciB1ID0gMSAtIHNvdXJjZSgpO1xuICAgICAgfSB3aGlsZSAodSA+PSAxIC0gMC4wMzMxICogeCAqIHggKiB4ICogeCAmJiBNYXRoLmxvZyh1KSA+PSAwLjUgKiB4ICogeCArIGQgKiAoMSAtIHYgKyBNYXRoLmxvZyh2KSkpO1xuICAgICAgcmV0dXJuIGQgKiB2ICogbXVsdGlwbGllcigpICogdGhldGE7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUdhbW1hLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUdhbW1hO1xuXG4gIHJldHVybiByYW5kb21HYW1tYTtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/gamma.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/geometric.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-random/src/geometric.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomGeometric(source) {\n function randomGeometric(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n if (p === 0) return () => Infinity;\n if (p === 1) return () => 1;\n p = Math.log1p(-p);\n return function() {\n return 1 + Math.floor(Math.log1p(-source()) / p);\n };\n }\n\n randomGeometric.source = sourceRandomGeometric;\n\n return randomGeometric;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZ2VvbWV0cmljLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvZ2VvbWV0cmljLmpzPzE2NjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gc291cmNlUmFuZG9tR2VvbWV0cmljKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21HZW9tZXRyaWMocCkge1xuICAgIGlmICgocCA9ICtwKSA8IDAgfHwgcCA+IDEpIHRocm93IG5ldyBSYW5nZUVycm9yKFwiaW52YWxpZCBwXCIpO1xuICAgIGlmIChwID09PSAwKSByZXR1cm4gKCkgPT4gSW5maW5pdHk7XG4gICAgaWYgKHAgPT09IDEpIHJldHVybiAoKSA9PiAxO1xuICAgIHAgPSBNYXRoLmxvZzFwKC1wKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gMSArIE1hdGguZmxvb3IoTWF0aC5sb2cxcCgtc291cmNlKCkpIC8gcCk7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUdlb21ldHJpYy5zb3VyY2UgPSBzb3VyY2VSYW5kb21HZW9tZXRyaWM7XG5cbiAgcmV0dXJuIHJhbmRvbUdlb21ldHJpYztcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/geometric.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/index.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-random/src/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"randomBates\": () => (/* reexport safe */ _bates_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"randomBernoulli\": () => (/* reexport safe */ _bernoulli_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"randomBeta\": () => (/* reexport safe */ _beta_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"randomBinomial\": () => (/* reexport safe */ _binomial_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"randomCauchy\": () => (/* reexport safe */ _cauchy_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"randomExponential\": () => (/* reexport safe */ _exponential_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"randomGamma\": () => (/* reexport safe */ _gamma_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"randomGeometric\": () => (/* reexport safe */ _geometric_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"randomInt\": () => (/* reexport safe */ _int_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"randomIrwinHall\": () => (/* reexport safe */ _irwinHall_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"randomLcg\": () => (/* reexport safe */ _lcg_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"randomLogNormal\": () => (/* reexport safe */ _logNormal_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"randomLogistic\": () => (/* reexport safe */ _logistic_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"randomNormal\": () => (/* reexport safe */ _normal_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"randomPareto\": () => (/* reexport safe */ _pareto_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"randomPoisson\": () => (/* reexport safe */ _poisson_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"randomUniform\": () => (/* reexport safe */ _uniform_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"randomWeibull\": () => (/* reexport safe */ _weibull_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _uniform_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uniform.js */ \"../../../node_modules/d3-random/src/uniform.js\");\n/* harmony import */ var _int_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./int.js */ \"../../../node_modules/d3-random/src/int.js\");\n/* harmony import */ var _normal_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./normal.js */ \"../../../node_modules/d3-random/src/normal.js\");\n/* harmony import */ var _logNormal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logNormal.js */ \"../../../node_modules/d3-random/src/logNormal.js\");\n/* harmony import */ var _bates_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bates.js */ \"../../../node_modules/d3-random/src/bates.js\");\n/* harmony import */ var _irwinHall_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./irwinHall.js */ \"../../../node_modules/d3-random/src/irwinHall.js\");\n/* harmony import */ var _exponential_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./exponential.js */ \"../../../node_modules/d3-random/src/exponential.js\");\n/* harmony import */ var _pareto_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pareto.js */ \"../../../node_modules/d3-random/src/pareto.js\");\n/* harmony import */ var _bernoulli_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bernoulli.js */ \"../../../node_modules/d3-random/src/bernoulli.js\");\n/* harmony import */ var _geometric_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./geometric.js */ \"../../../node_modules/d3-random/src/geometric.js\");\n/* harmony import */ var _binomial_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./binomial.js */ \"../../../node_modules/d3-random/src/binomial.js\");\n/* harmony import */ var _gamma_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./gamma.js */ \"../../../node_modules/d3-random/src/gamma.js\");\n/* harmony import */ var _beta_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./beta.js */ \"../../../node_modules/d3-random/src/beta.js\");\n/* harmony import */ var _weibull_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./weibull.js */ \"../../../node_modules/d3-random/src/weibull.js\");\n/* harmony import */ var _cauchy_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./cauchy.js */ \"../../../node_modules/d3-random/src/cauchy.js\");\n/* harmony import */ var _logistic_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./logistic.js */ \"../../../node_modules/d3-random/src/logistic.js\");\n/* harmony import */ var _poisson_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./poisson.js */ \"../../../node_modules/d3-random/src/poisson.js\");\n/* harmony import */ var _lcg_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./lcg.js */ \"../../../node_modules/d3-random/src/lcg.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNEO0FBQ1I7QUFDTTtBQUNNO0FBQ1I7QUFDUTtBQUNJO0FBQ1Y7QUFDTTtBQUNBO0FBQ0Y7QUFDTjtBQUNGO0FBQ007QUFDRjtBQUNJO0FBQ0Y7QUFDUiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9pbmRleC5qcz8zY2Q1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21Vbmlmb3JtfSBmcm9tIFwiLi91bmlmb3JtLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tSW50fSBmcm9tIFwiLi9pbnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21Ob3JtYWx9IGZyb20gXCIuL25vcm1hbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJhbmRvbUxvZ05vcm1hbH0gZnJvbSBcIi4vbG9nTm9ybWFsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tQmF0ZXN9IGZyb20gXCIuL2JhdGVzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tSXJ3aW5IYWxsfSBmcm9tIFwiLi9pcndpbkhhbGwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21FeHBvbmVudGlhbH0gZnJvbSBcIi4vZXhwb25lbnRpYWwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21QYXJldG99IGZyb20gXCIuL3BhcmV0by5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJhbmRvbUJlcm5vdWxsaX0gZnJvbSBcIi4vYmVybm91bGxpLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tR2VvbWV0cmljfSBmcm9tIFwiLi9nZW9tZXRyaWMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21CaW5vbWlhbH0gZnJvbSBcIi4vYmlub21pYWwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21HYW1tYX0gZnJvbSBcIi4vZ2FtbWEuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyByYW5kb21CZXRhfSBmcm9tIFwiLi9iZXRhLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tV2VpYnVsbH0gZnJvbSBcIi4vd2VpYnVsbC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJhbmRvbUNhdWNoeX0gZnJvbSBcIi4vY2F1Y2h5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tTG9naXN0aWN9IGZyb20gXCIuL2xvZ2lzdGljLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcmFuZG9tUG9pc3Nvbn0gZnJvbSBcIi4vcG9pc3Nvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHJhbmRvbUxjZ30gZnJvbSBcIi4vbGNnLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/int.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-random/src/int.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomInt(source) {\n function randomInt(min, max) {\n if (arguments.length < 2) max = min, min = 0;\n min = Math.floor(min);\n max = Math.floor(max) - min;\n return function() {\n return Math.floor(source() * max + min);\n };\n }\n\n randomInt.source = sourceRandomInt;\n\n return randomInt;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvaW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDLEVBQUUseURBQWEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1yYW5kb20vc3JjL2ludC5qcz9kOTJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0U291cmNlIGZyb20gXCIuL2RlZmF1bHRTb3VyY2UuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHNvdXJjZVJhbmRvbUludChzb3VyY2UpIHtcbiAgZnVuY3Rpb24gcmFuZG9tSW50KG1pbiwgbWF4KSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSBtYXggPSBtaW4sIG1pbiA9IDA7XG4gICAgbWluID0gTWF0aC5mbG9vcihtaW4pO1xuICAgIG1heCA9IE1hdGguZmxvb3IobWF4KSAtIG1pbjtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihzb3VyY2UoKSAqIG1heCArIG1pbik7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbUludC5zb3VyY2UgPSBzb3VyY2VSYW5kb21JbnQ7XG5cbiAgcmV0dXJuIHJhbmRvbUludDtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/int.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/irwinHall.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-random/src/irwinHall.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n if ((n = +n) <= 0) return () => 0;\n return function() {\n for (var sum = 0, i = n; i > 1; --i) sum += source();\n return sum + i * source();\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvaXJ3aW5IYWxsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixPQUFPO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvaXJ3aW5IYWxsLmpzPzlkZGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gc291cmNlUmFuZG9tSXJ3aW5IYWxsKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21JcndpbkhhbGwobikge1xuICAgIGlmICgobiA9ICtuKSA8PSAwKSByZXR1cm4gKCkgPT4gMDtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBzdW0gPSAwLCBpID0gbjsgaSA+IDE7IC0taSkgc3VtICs9IHNvdXJjZSgpO1xuICAgICAgcmV0dXJuIHN1bSArIGkgKiBzb3VyY2UoKTtcbiAgICB9O1xuICB9XG5cbiAgcmFuZG9tSXJ3aW5IYWxsLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUlyd2luSGFsbDtcblxuICByZXR1cm4gcmFuZG9tSXJ3aW5IYWxsO1xufSkoZGVmYXVsdFNvdXJjZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/irwinHall.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/lcg.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-random/src/lcg.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lcg)\n/* harmony export */ });\n// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nfunction lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbGNnLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9sY2cuanM/MDI2YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfY29uZ3J1ZW50aWFsX2dlbmVyYXRvciNQYXJhbWV0ZXJzX2luX2NvbW1vbl91c2VcbmNvbnN0IG11bCA9IDB4MTk2NjBEO1xuY29uc3QgaW5jID0gMHgzQzZFRjM1RjtcbmNvbnN0IGVwcyA9IDEgLyAweDEwMDAwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGNnKHNlZWQgPSBNYXRoLnJhbmRvbSgpKSB7XG4gIGxldCBzdGF0ZSA9ICgwIDw9IHNlZWQgJiYgc2VlZCA8IDEgPyBzZWVkIC8gZXBzIDogTWF0aC5hYnMoc2VlZCkpIHwgMDtcbiAgcmV0dXJuICgpID0+IChzdGF0ZSA9IG11bCAqIHN0YXRlICsgaW5jIHwgMCwgZXBzICogKHN0YXRlID4+PiAwKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/lcg.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/logNormal.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-random/src/logNormal.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _normal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./normal.js */ \"../../../node_modules/d3-random/src/normal.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomLogNormal(source) {\n var N = _normal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source);\n\n function randomLogNormal() {\n var randomNormal = N.apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbG9nTm9ybWFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQztBQUNkOztBQUVqQyxpRUFBZTtBQUNmLFVBQVUseURBQWE7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbG9nTm9ybWFsLmpzPzNlOWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuaW1wb3J0IG5vcm1hbCBmcm9tIFwiLi9ub3JtYWwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHNvdXJjZVJhbmRvbUxvZ05vcm1hbChzb3VyY2UpIHtcbiAgdmFyIE4gPSBub3JtYWwuc291cmNlKHNvdXJjZSk7XG5cbiAgZnVuY3Rpb24gcmFuZG9tTG9nTm9ybWFsKCkge1xuICAgIHZhciByYW5kb21Ob3JtYWwgPSBOLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIE1hdGguZXhwKHJhbmRvbU5vcm1hbCgpKTtcbiAgICB9O1xuICB9XG5cbiAgcmFuZG9tTG9nTm9ybWFsLnNvdXJjZSA9IHNvdXJjZVJhbmRvbUxvZ05vcm1hbDtcblxuICByZXR1cm4gcmFuZG9tTG9nTm9ybWFsO1xufSkoZGVmYXVsdFNvdXJjZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/logNormal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/logistic.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-random/src/logistic.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomLogistic(source) {\n function randomLogistic(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n var u = source();\n return a + b * Math.log(u / (1 - u));\n };\n }\n\n randomLogistic.source = sourceRandomLogistic;\n\n return randomLogistic;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbG9naXN0aWMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0M7O0FBRS9DLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbG9naXN0aWMuanM/MmEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21Mb2dpc3RpYyhzb3VyY2UpIHtcbiAgZnVuY3Rpb24gcmFuZG9tTG9naXN0aWMoYSwgYikge1xuICAgIGEgPSBhID09IG51bGwgPyAwIDogK2E7XG4gICAgYiA9IGIgPT0gbnVsbCA/IDEgOiArYjtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdSA9IHNvdXJjZSgpO1xuICAgICAgcmV0dXJuIGEgKyBiICogTWF0aC5sb2codSAvICgxIC0gdSkpO1xuICAgIH07XG4gIH1cblxuICByYW5kb21Mb2dpc3RpYy5zb3VyY2UgPSBzb3VyY2VSYW5kb21Mb2dpc3RpYztcblxuICByZXR1cm4gcmFuZG9tTG9naXN0aWM7XG59KShkZWZhdWx0U291cmNlKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/logistic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/normal.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-random/src/normal.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbm9ybWFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLENBQUMsRUFBRSx5REFBYSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvbm9ybWFsLmpzPzQwMDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gc291cmNlUmFuZG9tTm9ybWFsKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21Ob3JtYWwobXUsIHNpZ21hKSB7XG4gICAgdmFyIHgsIHI7XG4gICAgbXUgPSBtdSA9PSBudWxsID8gMCA6ICttdTtcbiAgICBzaWdtYSA9IHNpZ21hID09IG51bGwgPyAxIDogK3NpZ21hO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB5O1xuXG4gICAgICAvLyBJZiBhdmFpbGFibGUsIHVzZSB0aGUgc2Vjb25kIHByZXZpb3VzbHktZ2VuZXJhdGVkIHVuaWZvcm0gcmFuZG9tLlxuICAgICAgaWYgKHggIT0gbnVsbCkgeSA9IHgsIHggPSBudWxsO1xuXG4gICAgICAvLyBPdGhlcndpc2UsIGdlbmVyYXRlIGEgbmV3IHggYW5kIHkuXG4gICAgICBlbHNlIGRvIHtcbiAgICAgICAgeCA9IHNvdXJjZSgpICogMiAtIDE7XG4gICAgICAgIHkgPSBzb3VyY2UoKSAqIDIgLSAxO1xuICAgICAgICByID0geCAqIHggKyB5ICogeTtcbiAgICAgIH0gd2hpbGUgKCFyIHx8IHIgPiAxKTtcblxuICAgICAgcmV0dXJuIG11ICsgc2lnbWEgKiB5ICogTWF0aC5zcXJ0KC0yICogTWF0aC5sb2cocikgLyByKTtcbiAgICB9O1xuICB9XG5cbiAgcmFuZG9tTm9ybWFsLnNvdXJjZSA9IHNvdXJjZVJhbmRvbU5vcm1hbDtcblxuICByZXR1cm4gcmFuZG9tTm9ybWFsO1xufSkoZGVmYXVsdFNvdXJjZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/normal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/pareto.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-random/src/pareto.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomPareto(source) {\n function randomPareto(alpha) {\n if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n alpha = 1 / -alpha;\n return function() {\n return Math.pow(1 - source(), alpha);\n };\n }\n\n randomPareto.source = sourceRandomPareto;\n\n return randomPareto;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvcGFyZXRvLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStDOztBQUUvQyxpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxFQUFFLHlEQUFhLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9wYXJldG8uanM/MzExMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21QYXJldG8oc291cmNlKSB7XG4gIGZ1bmN0aW9uIHJhbmRvbVBhcmV0byhhbHBoYSkge1xuICAgIGlmICgoYWxwaGEgPSArYWxwaGEpIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJpbnZhbGlkIGFscGhhXCIpO1xuICAgIGFscGhhID0gMSAvIC1hbHBoYTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gTWF0aC5wb3coMSAtIHNvdXJjZSgpLCBhbHBoYSk7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbVBhcmV0by5zb3VyY2UgPSBzb3VyY2VSYW5kb21QYXJldG87XG5cbiAgcmV0dXJuIHJhbmRvbVBhcmV0bztcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/pareto.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/poisson.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-random/src/poisson.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n/* harmony import */ var _binomial_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./binomial.js */ \"../../../node_modules/d3-random/src/binomial.js\");\n/* harmony import */ var _gamma_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gamma.js */ \"../../../node_modules/d3-random/src/gamma.js\");\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomPoisson(source) {\n var G = _gamma_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].source(source),\n B = _binomial_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].source(source);\n\n function randomPoisson(lambda) {\n return function() {\n var acc = 0, l = lambda;\n while (l > 16) {\n var n = Math.floor(0.875 * l),\n t = G(n)();\n if (t > l) return acc + B(n - 1, l / t)();\n acc += n;\n l -= t;\n }\n for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n return acc + k;\n };\n }\n\n randomPoisson.source = sourceRandomPoisson;\n\n return randomPoisson;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvcG9pc3Nvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStDO0FBQ1Y7QUFDTjs7QUFFL0IsaUVBQWU7QUFDZixVQUFVLHdEQUFZO0FBQ3RCLFVBQVUsMkRBQWU7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELFFBQVE7QUFDMUQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsQ0FBQyxFQUFFLHlEQUFhLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtcmFuZG9tL3NyYy9wb2lzc29uLmpzPzg5ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRTb3VyY2UgZnJvbSBcIi4vZGVmYXVsdFNvdXJjZS5qc1wiO1xuaW1wb3J0IGJpbm9taWFsIGZyb20gXCIuL2Jpbm9taWFsLmpzXCI7XG5pbXBvcnQgZ2FtbWEgZnJvbSBcIi4vZ2FtbWEuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHNvdXJjZVJhbmRvbVBvaXNzb24oc291cmNlKSB7XG4gIHZhciBHID0gZ2FtbWEuc291cmNlKHNvdXJjZSksXG4gICAgICBCID0gYmlub21pYWwuc291cmNlKHNvdXJjZSk7XG5cbiAgZnVuY3Rpb24gcmFuZG9tUG9pc3NvbihsYW1iZGEpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYWNjID0gMCwgbCA9IGxhbWJkYTtcbiAgICAgIHdoaWxlIChsID4gMTYpIHtcbiAgICAgICAgdmFyIG4gPSBNYXRoLmZsb29yKDAuODc1ICogbCksXG4gICAgICAgICAgICB0ID0gRyhuKSgpO1xuICAgICAgICBpZiAodCA+IGwpIHJldHVybiBhY2MgKyBCKG4gLSAxLCBsIC8gdCkoKTtcbiAgICAgICAgYWNjICs9IG47XG4gICAgICAgIGwgLT0gdDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIHMgPSAtTWF0aC5sb2cxcCgtc291cmNlKCkpLCBrID0gMDsgcyA8PSBsOyArK2spIHMgLT0gTWF0aC5sb2cxcCgtc291cmNlKCkpO1xuICAgICAgcmV0dXJuIGFjYyArIGs7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbVBvaXNzb24uc291cmNlID0gc291cmNlUmFuZG9tUG9pc3NvbjtcblxuICByZXR1cm4gcmFuZG9tUG9pc3Nvbjtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/poisson.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/uniform.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-random/src/uniform.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvdW5pZm9ybS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQzs7QUFFL0MsaUVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDLEVBQUUseURBQWEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1yYW5kb20vc3JjL3VuaWZvcm0uanM/NDA2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21Vbmlmb3JtKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21Vbmlmb3JtKG1pbiwgbWF4KSB7XG4gICAgbWluID0gbWluID09IG51bGwgPyAwIDogK21pbjtcbiAgICBtYXggPSBtYXggPT0gbnVsbCA/IDEgOiArbWF4O1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSBtYXggPSBtaW4sIG1pbiA9IDA7XG4gICAgZWxzZSBtYXggLT0gbWluO1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzb3VyY2UoKSAqIG1heCArIG1pbjtcbiAgICB9O1xuICB9XG5cbiAgcmFuZG9tVW5pZm9ybS5zb3VyY2UgPSBzb3VyY2VSYW5kb21Vbmlmb3JtO1xuXG4gIHJldHVybiByYW5kb21Vbmlmb3JtO1xufSkoZGVmYXVsdFNvdXJjZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/uniform.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-random/src/weibull.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-random/src/weibull.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defaultSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultSource.js */ \"../../../node_modules/d3-random/src/defaultSource.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function sourceRandomWeibull(source) {\n function randomWeibull(k, a, b) {\n var outerFunc;\n if ((k = +k) === 0) {\n outerFunc = x => -Math.log(x);\n } else {\n k = 1 / k;\n outerFunc = x => Math.pow(x, k);\n }\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * outerFunc(-Math.log1p(-source()));\n };\n }\n\n randomWeibull.source = sourceRandomWeibull;\n\n return randomWeibull;\n})(_defaultSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXJhbmRvbS9zcmMvd2VpYnVsbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQzs7QUFFL0MsaUVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDLEVBQUUseURBQWEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1yYW5kb20vc3JjL3dlaWJ1bGwuanM/MmZkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFNvdXJjZSBmcm9tIFwiLi9kZWZhdWx0U291cmNlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBzb3VyY2VSYW5kb21XZWlidWxsKHNvdXJjZSkge1xuICBmdW5jdGlvbiByYW5kb21XZWlidWxsKGssIGEsIGIpIHtcbiAgICB2YXIgb3V0ZXJGdW5jO1xuICAgIGlmICgoayA9ICtrKSA9PT0gMCkge1xuICAgICAgb3V0ZXJGdW5jID0geCA9PiAtTWF0aC5sb2coeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGsgPSAxIC8gaztcbiAgICAgIG91dGVyRnVuYyA9IHggPT4gTWF0aC5wb3coeCwgayk7XG4gICAgfVxuICAgIGEgPSBhID09IG51bGwgPyAwIDogK2E7XG4gICAgYiA9IGIgPT0gbnVsbCA/IDEgOiArYjtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gYSArIGIgKiBvdXRlckZ1bmMoLU1hdGgubG9nMXAoLXNvdXJjZSgpKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJhbmRvbVdlaWJ1bGwuc291cmNlID0gc291cmNlUmFuZG9tV2VpYnVsbDtcblxuICByZXR1cm4gcmFuZG9tV2VpYnVsbDtcbn0pKGRlZmF1bHRTb3VyY2UpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-random/src/weibull.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Accent.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Accent.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvQWNjZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDOztBQUVsQyxpRUFBZSxzREFBTSxvREFBb0QsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jYXRlZ29yaWNhbC9BY2NlbnQuanM/NzcwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY29sb3JzKFwiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Accent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvRGFyazIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0M7O0FBRWxDLGlFQUFlLHNEQUFNLG9EQUFvRCxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2NhdGVnb3JpY2FsL0RhcmsyLmpzPzU4ODMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbG9ycyhcIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NlwiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Paired.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Paired.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvUGFpcmVkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDOztBQUVsQyxpRUFBZSxzREFBTSw0RUFBNEUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jYXRlZ29yaWNhbC9QYWlyZWQuanM/YjEwMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY29sb3JzKFwiYTZjZWUzMWY3OGI0YjJkZjhhMzNhMDJjZmI5YTk5ZTMxYTFjZmRiZjZmZmY3ZjAwY2FiMmQ2NmEzZDlhZmZmZjk5YjE1OTI4XCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Paired.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvUGFzdGVsMS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sMERBQTBELEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvUGFzdGVsMS5qcz9jMmJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCJmYmI0YWViM2NkZTNjY2ViYzVkZWNiZTRmZWQ5YTZmZmZmY2NlNWQ4YmRmZGRhZWNmMmYyZjJcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvUGFzdGVsMi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sb0RBQW9ELEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvUGFzdGVsMi5qcz8yZWVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCJiM2UyY2RmZGNkYWNjYmQ1ZThmNGNhZTRlNmY1YzlmZmYyYWVmMWUyY2NjY2NjY2NcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0MS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sMERBQTBELEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0MS5qcz8zYjgzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTlcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Set2.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Set2.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0Mi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sb0RBQW9ELEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0Mi5qcz83NDJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCI2NmMyYTVmYzhkNjI4ZGEwY2JlNzhhYzNhNmQ4NTRmZmQ5MmZlNWM0OTRiM2IzYjNcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Set2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Set3.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Set3.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0My5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sNEVBQTRFLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvU2V0My5qcz85NGFlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCI4ZGQzYzdmZmZmYjNiZWJhZGFmYjgwNzI4MGIxZDNmZGI0NjJiM2RlNjlmY2NkZTVkOWQ5ZDliYzgwYmRjY2ViYzVmZmVkNmZcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Set3.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvVGFibGVhdTEwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDOztBQUVsQyxpRUFBZSxzREFBTSxnRUFBZ0UsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jYXRlZ29yaWNhbC9UYWJsZWF1MTAuanM/ZDUwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY29sb3JzKFwiNGU3OWE3ZjI4ZTJjZTE1NzU5NzZiN2IyNTlhMTRmZWRjOTQ5YWY3YWExZmY5ZGE3OWM3NTVmYmFiMGFiXCIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/categorical/category10.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/categorical/category10.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvY2F0ZWdvcnkxMC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQzs7QUFFbEMsaUVBQWUsc0RBQU0sZ0VBQWdFLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY2F0ZWdvcmljYWwvY2F0ZWdvcnkxMC5qcz9mYWIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2ZcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/categorical/category10.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/colors.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/colors.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvY29sb3JzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9jb2xvcnMuanM/MzYxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzcGVjaWZpZXIpIHtcbiAgdmFyIG4gPSBzcGVjaWZpZXIubGVuZ3RoIC8gNiB8IDAsIGNvbG9ycyA9IG5ldyBBcnJheShuKSwgaSA9IDA7XG4gIHdoaWxlIChpIDwgbikgY29sb3JzW2ldID0gXCIjXCIgKyBzcGVjaWZpZXIuc2xpY2UoaSAqIDYsICsraSAqIDYpO1xuICByZXR1cm4gY29sb3JzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/colors.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL0JyQkcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9CckJHLmpzPzgzZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZDhiMzY1ZjVmNWY1NWFiNGFjXCIsXG4gIFwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxXCIsXG4gIFwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxXCIsXG4gIFwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlXCIsXG4gIFwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlXCIsXG4gIFwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlXCIsXG4gIFwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlXCIsXG4gIFwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwXCIsXG4gIFwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1BSR24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9QUkduLmpzP2E1OTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiYWY4ZGMzZjdmN2Y3N2ZiZjdiXCIsXG4gIFwiN2IzMjk0YzJhNWNmYTZkYmEwMDA4ODM3XCIsXG4gIFwiN2IzMjk0YzJhNWNmZjdmN2Y3YTZkYmEwMDA4ODM3XCIsXG4gIFwiNzYyYTgzYWY4ZGMzZTdkNGU4ZDlmMGQzN2ZiZjdiMWI3ODM3XCIsXG4gIFwiNzYyYTgzYWY4ZGMzZTdkNGU4ZjdmN2Y3ZDlmMGQzN2ZiZjdiMWI3ODM3XCIsXG4gIFwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3XCIsXG4gIFwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3XCIsXG4gIFwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiXCIsXG4gIFwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1BpWUcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9QaVlHLmpzPzJiZmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZTlhM2M5ZjdmN2Y3YTFkNzZhXCIsXG4gIFwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2XCIsXG4gIFwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2XCIsXG4gIFwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxXCIsXG4gIFwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxXCIsXG4gIFwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxXCIsXG4gIFwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxXCIsXG4gIFwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5XCIsXG4gIFwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5XCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1B1T3IuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9QdU9yLmpzP2FkMDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiOTk4ZWMzZjdmN2Y3ZjFhMzQwXCIsXG4gIFwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxXCIsXG4gIFwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxXCIsXG4gIFwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2XCIsXG4gIFwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2XCIsXG4gIFwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2XCIsXG4gIFwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2XCIsXG4gIFwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4XCIsXG4gIFwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4XCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkQnUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9SZEJ1LmpzP2M4NGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZWY4YTYyZjdmN2Y3NjdhOWNmXCIsXG4gIFwiY2EwMDIwZjRhNTgyOTJjNWRlMDU3MWIwXCIsXG4gIFwiY2EwMDIwZjRhNTgyZjdmN2Y3OTJjNWRlMDU3MWIwXCIsXG4gIFwiYjIxODJiZWY4YTYyZmRkYmM3ZDFlNWYwNjdhOWNmMjE2NmFjXCIsXG4gIFwiYjIxODJiZWY4YTYyZmRkYmM3ZjdmN2Y3ZDFlNWYwNjdhOWNmMjE2NmFjXCIsXG4gIFwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjXCIsXG4gIFwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjXCIsXG4gIFwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxXCIsXG4gIFwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkR3kuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL2RpdmVyZ2luZy9SZEd5LmpzPzEwMDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZWY4YTYyZmZmZmZmOTk5OTk5XCIsXG4gIFwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwXCIsXG4gIFwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwXCIsXG4gIFwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkXCIsXG4gIFwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkXCIsXG4gIFwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkXCIsXG4gIFwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkXCIsXG4gIFwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhXCIsXG4gIFwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkWWxCdS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ0o7O0FBRXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkWWxCdS5qcz80YTVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImZjOGQ1OWZmZmZiZjkxYmZkYlwiLFxuICBcImQ3MTkxY2ZkYWU2MWFiZDllOTJjN2JiNlwiLFxuICBcImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZDllOTJjN2JiNlwiLFxuICBcImQ3MzAyN2ZjOGQ1OWZlZTA5MGUwZjNmODkxYmZkYjQ1NzViNFwiLFxuICBcImQ3MzAyN2ZjOGQ1OWZlZTA5MGZmZmZiZmUwZjNmODkxYmZkYjQ1NzViNFwiLFxuICBcImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNFwiLFxuICBcImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNFwiLFxuICBcImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NVwiLFxuICBcImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NVwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkWWxHbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ0o7O0FBRXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1JkWWxHbi5qcz8wMWE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImZjOGQ1OWZmZmZiZjkxY2Y2MFwiLFxuICBcImQ3MTkxY2ZkYWU2MWE2ZDk2YTFhOTY0MVwiLFxuICBcImQ3MTkxY2ZkYWU2MWZmZmZiZmE2ZDk2YTFhOTY0MVwiLFxuICBcImQ3MzAyN2ZjOGQ1OWZlZTA4YmQ5ZWY4YjkxY2Y2MDFhOTg1MFwiLFxuICBcImQ3MzAyN2ZjOGQ1OWZlZTA4YmZmZmZiZmQ5ZWY4YjkxY2Y2MDFhOTg1MFwiLFxuICBcImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MFwiLFxuICBcImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MFwiLFxuICBcImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzN1wiLFxuICBcImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzN1wiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvZGl2ZXJnaW5nL1NwZWN0cmFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtEQUFNOztBQUVaLGlFQUFlLG9EQUFJLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9kaXZlcmdpbmcvU3BlY3RyYWwuanM/N2M0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJmYzhkNTlmZmZmYmY5OWQ1OTRcIixcbiAgXCJkNzE5MWNmZGFlNjFhYmRkYTQyYjgzYmFcIixcbiAgXCJkNzE5MWNmZGFlNjFmZmZmYmZhYmRkYTQyYjgzYmFcIixcbiAgXCJkNTNlNGZmYzhkNTlmZWUwOGJlNmY1OTg5OWQ1OTQzMjg4YmRcIixcbiAgXCJkNTNlNGZmYzhkNTlmZWUwOGJmZmZmYmZlNmY1OTg5OWQ1OTQzMjg4YmRcIixcbiAgXCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmRcIixcbiAgXCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmRcIixcbiAgXCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTJcIixcbiAgXCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTJcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/index.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/index.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"interpolateBlues\": () => (/* reexport safe */ _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"interpolateBrBG\": () => (/* reexport safe */ _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"interpolateBuGn\": () => (/* reexport safe */ _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ \"interpolateBuPu\": () => (/* reexport safe */ _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]),\n/* harmony export */ \"interpolateCividis\": () => (/* reexport safe */ _sequential_multi_cividis_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]),\n/* harmony export */ \"interpolateCool\": () => (/* reexport safe */ _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__.cool),\n/* harmony export */ \"interpolateCubehelixDefault\": () => (/* reexport safe */ _sequential_multi_cubehelix_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]),\n/* harmony export */ \"interpolateGnBu\": () => (/* reexport safe */ _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ \"interpolateGreens\": () => (/* reexport safe */ _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ \"interpolateGreys\": () => (/* reexport safe */ _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ \"interpolateInferno\": () => (/* reexport safe */ _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__.inferno),\n/* harmony export */ \"interpolateMagma\": () => (/* reexport safe */ _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__.magma),\n/* harmony export */ \"interpolateOrRd\": () => (/* reexport safe */ _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]),\n/* harmony export */ \"interpolateOranges\": () => (/* reexport safe */ _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]),\n/* harmony export */ \"interpolatePRGn\": () => (/* reexport safe */ _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"interpolatePiYG\": () => (/* reexport safe */ _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"interpolatePlasma\": () => (/* reexport safe */ _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__.plasma),\n/* harmony export */ \"interpolatePuBu\": () => (/* reexport safe */ _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]),\n/* harmony export */ \"interpolatePuBuGn\": () => (/* reexport safe */ _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]),\n/* harmony export */ \"interpolatePuOr\": () => (/* reexport safe */ _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"interpolatePuRd\": () => (/* reexport safe */ _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"]),\n/* harmony export */ \"interpolatePurples\": () => (/* reexport safe */ _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]),\n/* harmony export */ \"interpolateRainbow\": () => (/* reexport safe */ _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]),\n/* harmony export */ \"interpolateRdBu\": () => (/* reexport safe */ _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"interpolateRdGy\": () => (/* reexport safe */ _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"interpolateRdPu\": () => (/* reexport safe */ _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ \"interpolateRdYlBu\": () => (/* reexport safe */ _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"interpolateRdYlGn\": () => (/* reexport safe */ _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"interpolateReds\": () => (/* reexport safe */ _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__[\"default\"]),\n/* harmony export */ \"interpolateSinebow\": () => (/* reexport safe */ _sequential_multi_sinebow_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]),\n/* harmony export */ \"interpolateSpectral\": () => (/* reexport safe */ _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"interpolateTurbo\": () => (/* reexport safe */ _sequential_multi_turbo_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]),\n/* harmony export */ \"interpolateViridis\": () => (/* reexport safe */ _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]),\n/* harmony export */ \"interpolateWarm\": () => (/* reexport safe */ _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__.warm),\n/* harmony export */ \"interpolateYlGn\": () => (/* reexport safe */ _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"interpolateYlGnBu\": () => (/* reexport safe */ _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"interpolateYlOrBr\": () => (/* reexport safe */ _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ \"interpolateYlOrRd\": () => (/* reexport safe */ _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ \"schemeAccent\": () => (/* reexport safe */ _categorical_Accent_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"schemeBlues\": () => (/* reexport safe */ _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__.scheme),\n/* harmony export */ \"schemeBrBG\": () => (/* reexport safe */ _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__.scheme),\n/* harmony export */ \"schemeBuGn\": () => (/* reexport safe */ _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__.scheme),\n/* harmony export */ \"schemeBuPu\": () => (/* reexport safe */ _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__.scheme),\n/* harmony export */ \"schemeCategory10\": () => (/* reexport safe */ _categorical_category10_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"schemeDark2\": () => (/* reexport safe */ _categorical_Dark2_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"schemeGnBu\": () => (/* reexport safe */ _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__.scheme),\n/* harmony export */ \"schemeGreens\": () => (/* reexport safe */ _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__.scheme),\n/* harmony export */ \"schemeGreys\": () => (/* reexport safe */ _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__.scheme),\n/* harmony export */ \"schemeOrRd\": () => (/* reexport safe */ _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__.scheme),\n/* harmony export */ \"schemeOranges\": () => (/* reexport safe */ _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__.scheme),\n/* harmony export */ \"schemePRGn\": () => (/* reexport safe */ _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__.scheme),\n/* harmony export */ \"schemePaired\": () => (/* reexport safe */ _categorical_Paired_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"schemePastel1\": () => (/* reexport safe */ _categorical_Pastel1_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"schemePastel2\": () => (/* reexport safe */ _categorical_Pastel2_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"schemePiYG\": () => (/* reexport safe */ _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__.scheme),\n/* harmony export */ \"schemePuBu\": () => (/* reexport safe */ _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__.scheme),\n/* harmony export */ \"schemePuBuGn\": () => (/* reexport safe */ _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__.scheme),\n/* harmony export */ \"schemePuOr\": () => (/* reexport safe */ _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__.scheme),\n/* harmony export */ \"schemePuRd\": () => (/* reexport safe */ _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__.scheme),\n/* harmony export */ \"schemePurples\": () => (/* reexport safe */ _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__.scheme),\n/* harmony export */ \"schemeRdBu\": () => (/* reexport safe */ _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__.scheme),\n/* harmony export */ \"schemeRdGy\": () => (/* reexport safe */ _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__.scheme),\n/* harmony export */ \"schemeRdPu\": () => (/* reexport safe */ _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__.scheme),\n/* harmony export */ \"schemeRdYlBu\": () => (/* reexport safe */ _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__.scheme),\n/* harmony export */ \"schemeRdYlGn\": () => (/* reexport safe */ _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__.scheme),\n/* harmony export */ \"schemeReds\": () => (/* reexport safe */ _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__.scheme),\n/* harmony export */ \"schemeSet1\": () => (/* reexport safe */ _categorical_Set1_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"schemeSet2\": () => (/* reexport safe */ _categorical_Set2_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"schemeSet3\": () => (/* reexport safe */ _categorical_Set3_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"schemeSpectral\": () => (/* reexport safe */ _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__.scheme),\n/* harmony export */ \"schemeTableau10\": () => (/* reexport safe */ _categorical_Tableau10_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"schemeYlGn\": () => (/* reexport safe */ _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__.scheme),\n/* harmony export */ \"schemeYlGnBu\": () => (/* reexport safe */ _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__.scheme),\n/* harmony export */ \"schemeYlOrBr\": () => (/* reexport safe */ _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__.scheme),\n/* harmony export */ \"schemeYlOrRd\": () => (/* reexport safe */ _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__.scheme)\n/* harmony export */ });\n/* harmony import */ var _categorical_category10_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./categorical/category10.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/category10.js\");\n/* harmony import */ var _categorical_Accent_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./categorical/Accent.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Accent.js\");\n/* harmony import */ var _categorical_Dark2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./categorical/Dark2.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js\");\n/* harmony import */ var _categorical_Paired_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./categorical/Paired.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Paired.js\");\n/* harmony import */ var _categorical_Pastel1_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./categorical/Pastel1.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js\");\n/* harmony import */ var _categorical_Pastel2_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./categorical/Pastel2.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js\");\n/* harmony import */ var _categorical_Set1_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./categorical/Set1.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Set1.js\");\n/* harmony import */ var _categorical_Set2_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./categorical/Set2.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Set2.js\");\n/* harmony import */ var _categorical_Set3_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./categorical/Set3.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Set3.js\");\n/* harmony import */ var _categorical_Tableau10_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./categorical/Tableau10.js */ \"../../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js\");\n/* harmony import */ var _diverging_BrBG_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./diverging/BrBG.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/BrBG.js\");\n/* harmony import */ var _diverging_PRGn_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./diverging/PRGn.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/PRGn.js\");\n/* harmony import */ var _diverging_PiYG_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./diverging/PiYG.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/PiYG.js\");\n/* harmony import */ var _diverging_PuOr_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./diverging/PuOr.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/PuOr.js\");\n/* harmony import */ var _diverging_RdBu_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diverging/RdBu.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/RdBu.js\");\n/* harmony import */ var _diverging_RdGy_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging/RdGy.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/RdGy.js\");\n/* harmony import */ var _diverging_RdYlBu_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./diverging/RdYlBu.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js\");\n/* harmony import */ var _diverging_RdYlGn_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./diverging/RdYlGn.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js\");\n/* harmony import */ var _diverging_Spectral_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./diverging/Spectral.js */ \"../../../node_modules/d3-scale-chromatic/src/diverging/Spectral.js\");\n/* harmony import */ var _sequential_multi_BuGn_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./sequential-multi/BuGn.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js\");\n/* harmony import */ var _sequential_multi_BuPu_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./sequential-multi/BuPu.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js\");\n/* harmony import */ var _sequential_multi_GnBu_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./sequential-multi/GnBu.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js\");\n/* harmony import */ var _sequential_multi_OrRd_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./sequential-multi/OrRd.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js\");\n/* harmony import */ var _sequential_multi_PuBuGn_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./sequential-multi/PuBuGn.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js\");\n/* harmony import */ var _sequential_multi_PuBu_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./sequential-multi/PuBu.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js\");\n/* harmony import */ var _sequential_multi_PuRd_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sequential-multi/PuRd.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js\");\n/* harmony import */ var _sequential_multi_RdPu_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./sequential-multi/RdPu.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js\");\n/* harmony import */ var _sequential_multi_YlGnBu_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sequential-multi/YlGnBu.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js\");\n/* harmony import */ var _sequential_multi_YlGn_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./sequential-multi/YlGn.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js\");\n/* harmony import */ var _sequential_multi_YlOrBr_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./sequential-multi/YlOrBr.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js\");\n/* harmony import */ var _sequential_multi_YlOrRd_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./sequential-multi/YlOrRd.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js\");\n/* harmony import */ var _sequential_single_Blues_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./sequential-single/Blues.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js\");\n/* harmony import */ var _sequential_single_Greens_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./sequential-single/Greens.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js\");\n/* harmony import */ var _sequential_single_Greys_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./sequential-single/Greys.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js\");\n/* harmony import */ var _sequential_single_Purples_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./sequential-single/Purples.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js\");\n/* harmony import */ var _sequential_single_Reds_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./sequential-single/Reds.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js\");\n/* harmony import */ var _sequential_single_Oranges_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./sequential-single/Oranges.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js\");\n/* harmony import */ var _sequential_multi_cividis_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./sequential-multi/cividis.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js\");\n/* harmony import */ var _sequential_multi_cubehelix_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./sequential-multi/cubehelix.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js\");\n/* harmony import */ var _sequential_multi_rainbow_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./sequential-multi/rainbow.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js\");\n/* harmony import */ var _sequential_multi_sinebow_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./sequential-multi/sinebow.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js\");\n/* harmony import */ var _sequential_multi_turbo_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./sequential-multi/turbo.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js\");\n/* harmony import */ var _sequential_multi_viridis_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./sequential-multi/viridis.js */ \"../../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RTtBQUNSO0FBQ0Y7QUFDRTtBQUNFO0FBQ0E7QUFDTjtBQUNBO0FBQ0E7QUFDVTtBQUNlO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNNO0FBQ0E7QUFDTTtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ007QUFDTjtBQUNBO0FBQ0E7QUFDTTtBQUNOO0FBQ007QUFDQTtBQUNGO0FBQ0c7QUFDSDtBQUNNO0FBQ1Q7QUFDUztBQUMxQjtBQUNXO0FBQ3VDO0FBQ2xEO0FBQ0o7QUFDMkYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvaW5kZXguanM/ZTJkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgc2NoZW1lQ2F0ZWdvcnkxMH0gZnJvbSBcIi4vY2F0ZWdvcmljYWwvY2F0ZWdvcnkxMC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNjaGVtZUFjY2VudH0gZnJvbSBcIi4vY2F0ZWdvcmljYWwvQWNjZW50LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2NoZW1lRGFyazJ9IGZyb20gXCIuL2NhdGVnb3JpY2FsL0RhcmsyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2NoZW1lUGFpcmVkfSBmcm9tIFwiLi9jYXRlZ29yaWNhbC9QYWlyZWQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzY2hlbWVQYXN0ZWwxfSBmcm9tIFwiLi9jYXRlZ29yaWNhbC9QYXN0ZWwxLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2NoZW1lUGFzdGVsMn0gZnJvbSBcIi4vY2F0ZWdvcmljYWwvUGFzdGVsMi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNjaGVtZVNldDF9IGZyb20gXCIuL2NhdGVnb3JpY2FsL1NldDEuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzY2hlbWVTZXQyfSBmcm9tIFwiLi9jYXRlZ29yaWNhbC9TZXQyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2NoZW1lU2V0M30gZnJvbSBcIi4vY2F0ZWdvcmljYWwvU2V0My5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNjaGVtZVRhYmxlYXUxMH0gZnJvbSBcIi4vY2F0ZWdvcmljYWwvVGFibGVhdTEwLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCckJHLCBzY2hlbWUgYXMgc2NoZW1lQnJCR30gZnJvbSBcIi4vZGl2ZXJnaW5nL0JyQkcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVBSR24sIHNjaGVtZSBhcyBzY2hlbWVQUkdufSBmcm9tIFwiLi9kaXZlcmdpbmcvUFJHbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUGlZRywgc2NoZW1lIGFzIHNjaGVtZVBpWUd9IGZyb20gXCIuL2RpdmVyZ2luZy9QaVlHLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVQdU9yLCBzY2hlbWUgYXMgc2NoZW1lUHVPcn0gZnJvbSBcIi4vZGl2ZXJnaW5nL1B1T3IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJkQnUsIHNjaGVtZSBhcyBzY2hlbWVSZEJ1fSBmcm9tIFwiLi9kaXZlcmdpbmcvUmRCdS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUmRHeSwgc2NoZW1lIGFzIHNjaGVtZVJkR3l9IGZyb20gXCIuL2RpdmVyZ2luZy9SZEd5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSZFlsQnUsIHNjaGVtZSBhcyBzY2hlbWVSZFlsQnV9IGZyb20gXCIuL2RpdmVyZ2luZy9SZFlsQnUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZVJkWWxHbiwgc2NoZW1lIGFzIHNjaGVtZVJkWWxHbn0gZnJvbSBcIi4vZGl2ZXJnaW5nL1JkWWxHbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlU3BlY3RyYWwsIHNjaGVtZSBhcyBzY2hlbWVTcGVjdHJhbH0gZnJvbSBcIi4vZGl2ZXJnaW5nL1NwZWN0cmFsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCdUduLCBzY2hlbWUgYXMgc2NoZW1lQnVHbn0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9CdUduLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCdVB1LCBzY2hlbWUgYXMgc2NoZW1lQnVQdX0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9CdVB1LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVHbkJ1LCBzY2hlbWUgYXMgc2NoZW1lR25CdX0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9HbkJ1LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVPclJkLCBzY2hlbWUgYXMgc2NoZW1lT3JSZH0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9PclJkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVQdUJ1R24sIHNjaGVtZSBhcyBzY2hlbWVQdUJ1R259IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvUHVCdUduLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVQdUJ1LCBzY2hlbWUgYXMgc2NoZW1lUHVCdX0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9QdUJ1LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVQdVJkLCBzY2hlbWUgYXMgc2NoZW1lUHVSZH0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9QdVJkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSZFB1LCBzY2hlbWUgYXMgc2NoZW1lUmRQdX0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9SZFB1LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVZbEduQnUsIHNjaGVtZSBhcyBzY2hlbWVZbEduQnV9IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvWWxHbkJ1LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVZbEduLCBzY2hlbWUgYXMgc2NoZW1lWWxHbn0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9ZbEduLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVZbE9yQnIsIHNjaGVtZSBhcyBzY2hlbWVZbE9yQnJ9IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvWWxPckJyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVZbE9yUmQsIHNjaGVtZSBhcyBzY2hlbWVZbE9yUmR9IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvWWxPclJkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVCbHVlcywgc2NoZW1lIGFzIHNjaGVtZUJsdWVzfSBmcm9tIFwiLi9zZXF1ZW50aWFsLXNpbmdsZS9CbHVlcy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlR3JlZW5zLCBzY2hlbWUgYXMgc2NoZW1lR3JlZW5zfSBmcm9tIFwiLi9zZXF1ZW50aWFsLXNpbmdsZS9HcmVlbnMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUdyZXlzLCBzY2hlbWUgYXMgc2NoZW1lR3JleXN9IGZyb20gXCIuL3NlcXVlbnRpYWwtc2luZ2xlL0dyZXlzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVQdXJwbGVzLCBzY2hlbWUgYXMgc2NoZW1lUHVycGxlc30gZnJvbSBcIi4vc2VxdWVudGlhbC1zaW5nbGUvUHVycGxlcy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlUmVkcywgc2NoZW1lIGFzIHNjaGVtZVJlZHN9IGZyb20gXCIuL3NlcXVlbnRpYWwtc2luZ2xlL1JlZHMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZU9yYW5nZXMsIHNjaGVtZSBhcyBzY2hlbWVPcmFuZ2VzfSBmcm9tIFwiLi9zZXF1ZW50aWFsLXNpbmdsZS9PcmFuZ2VzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVDaXZpZGlzfSBmcm9tIFwiLi9zZXF1ZW50aWFsLW11bHRpL2NpdmlkaXMuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHR9IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvY3ViZWhlbGl4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVSYWluYm93LCB3YXJtIGFzIGludGVycG9sYXRlV2FybSwgY29vbCBhcyBpbnRlcnBvbGF0ZUNvb2x9IGZyb20gXCIuL3NlcXVlbnRpYWwtbXVsdGkvcmFpbmJvdy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlU2luZWJvd30gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS9zaW5lYm93LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJwb2xhdGVUdXJib30gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS90dXJiby5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGludGVycG9sYXRlVmlyaWRpcywgbWFnbWEgYXMgaW50ZXJwb2xhdGVNYWdtYSwgaW5mZXJubyBhcyBpbnRlcnBvbGF0ZUluZmVybm8sIHBsYXNtYSBhcyBpbnRlcnBvbGF0ZVBsYXNtYX0gZnJvbSBcIi4vc2VxdWVudGlhbC1tdWx0aS92aXJpZGlzLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/ramp.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/ramp.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/rgb.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (scheme => (0,d3_interpolate__WEBPACK_IMPORTED_MODULE_0__.rgbBasis)(scheme[scheme.length - 1]));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvcmFtcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFtRDs7QUFFbkQsaUVBQWUsVUFBVSx3REFBbUIsMkJBQTJCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvcmFtcC5qcz81MjFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW50ZXJwb2xhdGVSZ2JCYXNpc30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHNjaGVtZSA9PiBpbnRlcnBvbGF0ZVJnYkJhc2lzKHNjaGVtZVtzY2hlbWUubGVuZ3RoIC0gMV0pO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/ramp.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9CdUduLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvQnVHbi5qcz85MTdlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImU1ZjVmOTk5ZDhjOTJjYTI1ZlwiLFxuICBcImVkZjhmYmIyZTJlMjY2YzJhNDIzOGI0NVwiLFxuICBcImVkZjhmYmIyZTJlMjY2YzJhNDJjYTI1ZjAwNmQyY1wiLFxuICBcImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDJjYTI1ZjAwNmQyY1wiLFxuICBcImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNFwiLFxuICBcImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNFwiLFxuICBcImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNmQyYzAwNDQxYlwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9CdVB1LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvQnVQdS5qcz8wMDBlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImUwZWNmNDllYmNkYTg4NTZhN1wiLFxuICBcImVkZjhmYmIzY2RlMzhjOTZjNjg4NDE5ZFwiLFxuICBcImVkZjhmYmIzY2RlMzhjOTZjNjg4NTZhNzgxMGY3Y1wiLFxuICBcImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjg4NTZhNzgxMGY3Y1wiLFxuICBcImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YlwiLFxuICBcImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YlwiLFxuICBcImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDgxMGY3YzRkMDA0YlwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9HbkJ1LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvR25CdS5qcz9hYzk1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImUwZjNkYmE4ZGRiNTQzYTJjYVwiLFxuICBcImYwZjllOGJhZTRiYzdiY2NjNDJiOGNiZVwiLFxuICBcImYwZjllOGJhZTRiYzdiY2NjNDQzYTJjYTA4NjhhY1wiLFxuICBcImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDQzYTJjYTA4NjhhY1wiLFxuICBcImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZVwiLFxuICBcImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZVwiLFxuICBcImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NjhhYzA4NDA4MVwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9PclJkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvT3JSZC5qcz80ZmYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImZlZThjOGZkYmI4NGUzNGEzM1wiLFxuICBcImZlZjBkOWZkY2M4YWZjOGQ1OWQ3MzAxZlwiLFxuICBcImZlZjBkOWZkY2M4YWZjOGQ1OWUzNGEzM2IzMDAwMFwiLFxuICBcImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWUzNGEzM2IzMDAwMFwiLFxuICBcImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMFwiLFxuICBcImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMFwiLFxuICBcImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZmIzMDAwMDdmMDAwMFwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9QdUJ1LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvUHVCdS5qcz8wMmM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImVjZTdmMmE2YmRkYjJiOGNiZVwiLFxuICBcImYxZWVmNmJkYzllMTc0YTljZjA1NzBiMFwiLFxuICBcImYxZWVmNmJkYzllMTc0YTljZjJiOGNiZTA0NWE4ZFwiLFxuICBcImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjJiOGNiZTA0NWE4ZFwiLFxuICBcImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YlwiLFxuICBcImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YlwiLFxuICBcImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDA0NWE4ZDAyMzg1OFwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9QdUJ1R24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9QdUJ1R24uanM/ZmQ5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJlY2UyZjBhNmJkZGIxYzkwOTlcIixcbiAgXCJmNmVmZjdiZGM5ZTE2N2E5Y2YwMjgxOGFcIixcbiAgXCJmNmVmZjdiZGM5ZTE2N2E5Y2YxYzkwOTkwMTZjNTlcIixcbiAgXCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YxYzkwOTkwMTZjNTlcIixcbiAgXCJmNmVmZjdkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTBcIixcbiAgXCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTY0NTBcIixcbiAgXCJmZmY3ZmJlY2UyZjBkMGQxZTZhNmJkZGI2N2E5Y2YzNjkwYzAwMjgxOGEwMTZjNTkwMTQ2MzZcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9QdVJkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvUHVSZC5qcz80OGE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImU3ZTFlZmM5OTRjN2RkMWM3N1wiLFxuICBcImYxZWVmNmQ3YjVkOGRmNjViMGNlMTI1NlwiLFxuICBcImYxZWVmNmQ3YjVkOGRmNjViMGRkMWM3Nzk4MDA0M1wiLFxuICBcImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGRkMWM3Nzk4MDA0M1wiLFxuICBcImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZlwiLFxuICBcImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZlwiLFxuICBcImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1Njk4MDA0MzY3MDAxZlwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9SZFB1LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvUmRQdS5qcz8xNTg4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImZkZTBkZGZhOWZiNWM1MWI4YVwiLFxuICBcImZlZWJlMmZiYjRiOWY3NjhhMWFlMDE3ZVwiLFxuICBcImZlZWJlMmZiYjRiOWY3NjhhMWM1MWI4YTdhMDE3N1wiLFxuICBcImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWM1MWI4YTdhMDE3N1wiLFxuICBcImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3N1wiLFxuICBcImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3N1wiLFxuICBcImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NzQ5MDA2YVwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbEduLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvWWxHbi5qcz84NjgxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImY3ZmNiOWFkZGQ4ZTMxYTM1NFwiLFxuICBcImZmZmZjY2MyZTY5OTc4YzY3OTIzODQ0M1wiLFxuICBcImZmZmZjY2MyZTY5OTc4YzY3OTMxYTM1NDAwNjgzN1wiLFxuICBcImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTMxYTM1NDAwNjgzN1wiLFxuICBcImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMlwiLFxuICBcImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMlwiLFxuICBcImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNjgzNzAwNDUyOVwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbEduQnUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbEduQnUuanM/YzA4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJlZGY4YjE3ZmNkYmIyYzdmYjhcIixcbiAgXCJmZmZmY2NhMWRhYjQ0MWI2YzQyMjVlYThcIixcbiAgXCJmZmZmY2NhMWRhYjQ0MWI2YzQyYzdmYjgyNTM0OTRcIixcbiAgXCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQyYzdmYjgyNTM0OTRcIixcbiAgXCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODRcIixcbiAgXCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODRcIixcbiAgXCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgyNTM0OTQwODFkNThcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbE9yQnIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbE9yQnIuanM/NjkzZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJmZmY3YmNmZWM0NGZkOTVmMGVcIixcbiAgXCJmZmZmZDRmZWQ5OGVmZTk5MjljYzRjMDJcIixcbiAgXCJmZmZmZDRmZWQ5OGVmZTk5MjlkOTVmMGU5OTM0MDRcIixcbiAgXCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjlkOTVmMGU5OTM0MDRcIixcbiAgXCJmZmZmZDRmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDRcIixcbiAgXCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI4YzJkMDRcIixcbiAgXCJmZmZmZTVmZmY3YmNmZWUzOTFmZWM0NGZmZTk5MjllYzcwMTRjYzRjMDI5OTM0MDQ2NjI1MDZcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbE9yUmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9ZbE9yUmQuanM/NWRlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJmZmVkYTBmZWIyNGNmMDNiMjBcIixcbiAgXCJmZmZmYjJmZWNjNWNmZDhkM2NlMzFhMWNcIixcbiAgXCJmZmZmYjJmZWNjNWNmZDhkM2NmMDNiMjBiZDAwMjZcIixcbiAgXCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmMDNiMjBiZDAwMjZcIixcbiAgXCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjZcIixcbiAgXCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjZcIixcbiAgXCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiZDAwMjY4MDAwMjZcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9jaXZpZGlzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLW11bHRpL2NpdmlkaXMuanM/NmY3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0KSB7XG4gIHQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB0KSk7XG4gIHJldHVybiBcInJnYihcIlxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQoLTQuNTQgLSB0ICogKDM1LjM0IC0gdCAqICgyMzgxLjczIC0gdCAqICg2NDAyLjcgLSB0ICogKDcwMjQuNzIgLSB0ICogMjcxMC41NykpKSkpKSkgKyBcIiwgXCJcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKDMyLjQ5ICsgdCAqICgxNzAuNzMgKyB0ICogKDUyLjgyIC0gdCAqICgxMzEuNDYgLSB0ICogKDE3Ni41OCAtIHQgKiA2Ny4zNykpKSkpKSkgKyBcIiwgXCJcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKDgxLjI0ICsgdCAqICg0NDIuMzYgLSB0ICogKDI0ODIuNDMgLSB0ICogKDYxNjcuMjQgLSB0ICogKDY2MTQuOTQgLSB0ICogMjQ3NS42NykpKSkpKSlcbiAgICAgICsgXCIpXCI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/cubehelix.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/cubehelix.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,d3_interpolate__WEBPACK_IMPORTED_MODULE_0__.cubehelixLong)((0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(300, 0.5, 0.0), (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(-240, 0.5, 1.0)));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9jdWJlaGVsaXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW1DO0FBQ3FCOztBQUV4RCxpRUFBZSw2REFBd0IsQ0FBQyxvREFBUyxpQkFBaUIsb0RBQVMsaUJBQWlCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9jdWJlaGVsaXguanM/MGJmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2N1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQge2ludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZyhjdWJlaGVsaXgoMzAwLCAwLjUsIDAuMCksIGN1YmVoZWxpeCgtMjQwLCAwLjUsIDEuMCkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cool\": () => (/* binding */ cool),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"warm\": () => (/* binding */ warm)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/cubehelix.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/cubehelix.js\");\n\n\n\nvar warm = (0,d3_interpolate__WEBPACK_IMPORTED_MODULE_0__.cubehelixLong)((0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(-100, 0.75, 0.35), (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(80, 1.50, 0.8));\n\nvar cool = (0,d3_interpolate__WEBPACK_IMPORTED_MODULE_0__.cubehelixLong)((0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(260, 0.75, 0.35), (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(80, 1.50, 0.8));\n\nvar c = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9yYWluYm93LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQW1DO0FBQ3FCOztBQUVqRCxXQUFXLDZEQUF3QixDQUFDLG9EQUFTLG9CQUFvQixvREFBUzs7QUFFMUUsV0FBVyw2REFBd0IsQ0FBQyxvREFBUyxtQkFBbUIsb0RBQVM7O0FBRWhGLFFBQVEsb0RBQVM7O0FBRWpCLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtbXVsdGkvcmFpbmJvdy5qcz8xYWI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3ViZWhlbGl4fSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcblxuZXhwb3J0IHZhciB3YXJtID0gaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nKGN1YmVoZWxpeCgtMTAwLCAwLjc1LCAwLjM1KSwgY3ViZWhlbGl4KDgwLCAxLjUwLCAwLjgpKTtcblxuZXhwb3J0IHZhciBjb29sID0gaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nKGN1YmVoZWxpeCgyNjAsIDAuNzUsIDAuMzUpLCBjdWJlaGVsaXgoODAsIDEuNTAsIDAuOCkpO1xuXG52YXIgYyA9IGN1YmVoZWxpeCgpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0KSB7XG4gIGlmICh0IDwgMCB8fCB0ID4gMSkgdCAtPSBNYXRoLmZsb29yKHQpO1xuICB2YXIgdHMgPSBNYXRoLmFicyh0IC0gMC41KTtcbiAgYy5oID0gMzYwICogdCAtIDEwMDtcbiAgYy5zID0gMS41IC0gMS41ICogdHM7XG4gIGMubCA9IDAuOCAtIDAuOSAqIHRzO1xuICByZXR1cm4gYyArIFwiXCI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/color.js\");\n\n\nvar c = (0,d3_color__WEBPACK_IMPORTED_MODULE_0__.rgb)(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS9zaW5lYm93LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3QixRQUFRLDZDQUFHO0FBQ1g7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLW11bHRpL3NpbmVib3cuanM/NjI4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5cbnZhciBjID0gcmdiKCksXG4gICAgcGlfMV8zID0gTWF0aC5QSSAvIDMsXG4gICAgcGlfMl8zID0gTWF0aC5QSSAqIDIgLyAzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0KSB7XG4gIHZhciB4O1xuICB0ID0gKDAuNSAtIHQpICogTWF0aC5QSTtcbiAgYy5yID0gMjU1ICogKHggPSBNYXRoLnNpbih0KSkgKiB4O1xuICBjLmcgPSAyNTUgKiAoeCA9IE1hdGguc2luKHQgKyBwaV8xXzMpKSAqIHg7XG4gIGMuYiA9IDI1NSAqICh4ID0gTWF0aC5zaW4odCArIHBpXzJfMykpICogeDtcbiAgcmV0dXJuIGMgKyBcIlwiO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS90dXJiby5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS90dXJiby5qcz8xM2FlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHQpIHtcbiAgdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHQpKTtcbiAgcmV0dXJuIFwicmdiKFwiXG4gICAgICArIE1hdGgubWF4KDAsIE1hdGgubWluKDI1NSwgTWF0aC5yb3VuZCgzNC42MSArIHQgKiAoMTE3Mi4zMyAtIHQgKiAoMTA3OTMuNTYgLSB0ICogKDMzMzAwLjEyIC0gdCAqICgzODM5NC40OSAtIHQgKiAxNDgyNS4wNSkpKSkpKSkgKyBcIiwgXCJcbiAgICAgICsgTWF0aC5tYXgoMCwgTWF0aC5taW4oMjU1LCBNYXRoLnJvdW5kKDIzLjMxICsgdCAqICg1NTcuMzMgKyB0ICogKDEyMjUuMzMgLSB0ICogKDM1NzQuOTYgLSB0ICogKDEwNzMuNzcgKyB0ICogNzA3LjU2KSkpKSkpKSArIFwiLCBcIlxuICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQoMjcuMiArIHQgKiAoMzIxMS4xIC0gdCAqICgxNTMyNy45NyAtIHQgKiAoMjc4MTQgLSB0ICogKDIyNTY5LjE4IC0gdCAqIDY4MzguNjYpKSkpKSkpXG4gICAgICArIFwiKVwiO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"inferno\": () => (/* binding */ inferno),\n/* harmony export */ \"magma\": () => (/* binding */ magma),\n/* harmony export */ \"plasma\": () => (/* binding */ plasma)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ramp((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\")));\n\nvar magma = ramp((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nvar inferno = ramp((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nvar plasma = ramp((0,_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1tdWx0aS92aXJpZGlzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsS0FBSyxzREFBTSxxZ0RBQXFnRCxFQUFDOztBQUV6aEQsaUJBQWlCLHNEQUFNOztBQUV2QixtQkFBbUIsc0RBQU07O0FBRXpCLGtCQUFrQixzREFBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLW11bHRpL3ZpcmlkaXMuanM/YmZlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcblxuZnVuY3Rpb24gcmFtcChyYW5nZSkge1xuICB2YXIgbiA9IHJhbmdlLmxlbmd0aDtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gcmFuZ2VbTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDEsIE1hdGguZmxvb3IodCAqIG4pKSldO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCByYW1wKGNvbG9ycyhcIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNVwiKSk7XG5cbmV4cG9ydCB2YXIgbWFnbWEgPSByYW1wKGNvbG9ycyhcIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZlwiKSk7XG5cbmV4cG9ydCB2YXIgaW5mZXJubyA9IHJhbXAoY29sb3JzKFwiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0XCIpKTtcblxuZXhwb3J0IHZhciBwbGFzbWEgPSByYW1wKGNvbG9ycyhcIjBkMDg4NzEwMDc4ODEzMDc4OTE2MDc4YTE5MDY4YzFiMDY4ZDFkMDY4ZTIwMDY4ZjIyMDY5MDI0MDY5MTI2MDU5MTI4MDU5MjJhMDU5MzJjMDU5NDJlMDU5NTJmMDU5NjMxMDU5NzMzMDU5NzM1MDQ5ODM3MDQ5OTM4MDQ5YTNhMDQ5YTNjMDQ5YjNlMDQ5YzNmMDQ5YzQxMDQ5ZDQzMDM5ZTQ0MDM5ZTQ2MDM5ZjQ4MDM5ZjQ5MDNhMDRiMDNhMTRjMDJhMTRlMDJhMjUwMDJhMjUxMDJhMzUzMDJhMzU1MDJhNDU2MDFhNDU4MDFhNDU5MDFhNTViMDFhNTVjMDFhNjVlMDFhNjYwMDFhNjYxMDBhNzYzMDBhNzY0MDBhNzY2MDBhNzY3MDBhODY5MDBhODZhMDBhODZjMDBhODZlMDBhODZmMDBhODcxMDBhODcyMDFhODc0MDFhODc1MDFhODc3MDFhODc4MDFhODdhMDJhODdiMDJhODdkMDNhODdlMDNhODgwMDRhODgxMDRhNzgzMDVhNzg0MDVhNzg2MDZhNjg3MDdhNjg4MDhhNjhhMDlhNThiMGFhNThkMGJhNThlMGNhNDhmMGRhNDkxMGVhMzkyMGZhMzk0MTBhMjk1MTFhMTk2MTNhMTk4MTRhMDk5MTU5ZjlhMTY5ZjljMTc5ZTlkMTg5ZDllMTk5ZGEwMWE5Y2ExMWI5YmEyMWQ5YWEzMWU5YWE1MWY5OWE2MjA5OGE3MjE5N2E4MjI5NmFhMjM5NWFiMjQ5NGFjMjY5NGFkMjc5M2FlMjg5MmIwMjk5MWIxMmE5MGIyMmI4ZmIzMmM4ZWI0MmU4ZGI1MmY4Y2I2MzA4YmI3MzE4YWI4MzI4OWJhMzM4OGJiMzQ4OGJjMzU4N2JkMzc4NmJlMzg4NWJmMzk4NGMwM2E4M2MxM2I4MmMyM2M4MWMzM2Q4MGM0M2U3ZmM1NDA3ZWM2NDE3ZGM3NDI3Y2M4NDM3YmM5NDQ3YWNhNDU3YWNiNDY3OWNjNDc3OGNjNDk3N2NkNGE3NmNlNGI3NWNmNGM3NGQwNGQ3M2QxNGU3MmQyNGY3MWQzNTE3MWQ0NTI3MGQ1NTM2ZmQ1NTQ2ZWQ2NTU2ZGQ3NTY2Y2Q4NTc2YmQ5NTg2YWRhNWE2YWRhNWI2OWRiNWM2OGRjNWQ2N2RkNWU2NmRlNWY2NWRlNjE2NGRmNjI2M2UwNjM2M2UxNjQ2MmUyNjU2MWUyNjY2MGUzNjg1ZmU0Njk1ZWU1NmE1ZGU1NmI1ZGU2NmM1Y2U3NmU1YmU3NmY1YWU4NzA1OWU5NzE1OGU5NzI1N2VhNzQ1N2ViNzU1NmViNzY1NWVjNzc1NGVkNzk1M2VkN2E1MmVlN2I1MWVmN2M1MWVmN2U1MGYwN2Y0ZmYwODA0ZWYxODE0ZGYxODM0Y2YyODQ0YmYzODU0YmYzODc0YWY0ODg0OWY0ODk0OGY1OGI0N2Y1OGM0NmY2OGQ0NWY2OGY0NGY3OTA0NGY3OTE0M2Y3OTM0MmY4OTQ0MWY4OTU0MGY5OTczZmY5OTgzZWY5OWEzZWZhOWIzZGZhOWMzY2ZhOWUzYmZiOWYzYWZiYTEzOWZiYTIzOGZjYTMzOGZjYTUzN2ZjYTYzNmZjYTgzNWZjYTkzNGZkYWIzM2ZkYWMzM2ZkYWUzMmZkYWYzMWZkYjEzMGZkYjIyZmZkYjQyZmZkYjUyZWZlYjcyZGZlYjgyY2ZlYmEyY2ZlYmIyYmZlYmQyYWZlYmUyYWZlYzAyOWZkYzIyOWZkYzMyOGZkYzUyN2ZkYzYyN2ZkYzgyN2ZkY2EyNmZkY2IyNmZjY2QyNWZjY2UyNWZjZDAyNWZjZDIyNWZiZDMyNGZiZDUyNGZiZDcyNGZhZDgyNGZhZGEyNGY5ZGMyNGY5ZGQyNWY4ZGYyNWY4ZTEyNWY3ZTIyNWY3ZTQyNWY2ZTYyNmY2ZTgyNmY1ZTkyNmY1ZWIyN2Y0ZWQyN2YzZWUyN2YzZjAyN2YyZjIyN2YxZjQyNmYxZjUyNWYwZjcyNGYwZjkyMVwiKSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvQmx1ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvQmx1ZXMuanM/MGNlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJkZWViZjc5ZWNhZTEzMTgyYmRcIixcbiAgXCJlZmYzZmZiZGQ3ZTc2YmFlZDYyMTcxYjVcIixcbiAgXCJlZmYzZmZiZGQ3ZTc2YmFlZDYzMTgyYmQwODUxOWNcIixcbiAgXCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDYzMTgyYmQwODUxOWNcIixcbiAgXCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTRcIixcbiAgXCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTRcIixcbiAgXCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODUxOWMwODMwNmJcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvR3JlZW5zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDSjs7QUFFdkI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0RBQU07O0FBRVosaUVBQWUsb0RBQUksUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS1jaHJvbWF0aWMvc3JjL3NlcXVlbnRpYWwtc2luZ2xlL0dyZWVucy5qcz85Y2RjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb2xvcnMgZnJvbSBcIi4uL2NvbG9ycy5qc1wiO1xuaW1wb3J0IHJhbXAgZnJvbSBcIi4uL3JhbXAuanNcIjtcblxuZXhwb3J0IHZhciBzY2hlbWUgPSBuZXcgQXJyYXkoMykuY29uY2F0KFxuICBcImU1ZjVlMGExZDk5YjMxYTM1NFwiLFxuICBcImVkZjhlOWJhZTRiMzc0YzQ3NjIzOGI0NVwiLFxuICBcImVkZjhlOWJhZTRiMzc0YzQ3NjMxYTM1NDAwNmQyY1wiLFxuICBcImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjMxYTM1NDAwNmQyY1wiLFxuICBcImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMlwiLFxuICBcImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMlwiLFxuICBcImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNmQyYzAwNDQxYlwiXG4pLm1hcChjb2xvcnMpO1xuXG5leHBvcnQgZGVmYXVsdCByYW1wKHNjaGVtZSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvR3JleXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFrQztBQUNKOztBQUV2QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrREFBTTs7QUFFWixpRUFBZSxvREFBSSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvR3JleXMuanM/NTkwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JzIGZyb20gXCIuLi9jb2xvcnMuanNcIjtcbmltcG9ydCByYW1wIGZyb20gXCIuLi9yYW1wLmpzXCI7XG5cbmV4cG9ydCB2YXIgc2NoZW1lID0gbmV3IEFycmF5KDMpLmNvbmNhdChcbiAgXCJmMGYwZjBiZGJkYmQ2MzYzNjNcIixcbiAgXCJmN2Y3ZjdjY2NjY2M5Njk2OTY1MjUyNTJcIixcbiAgXCJmN2Y3ZjdjY2NjY2M5Njk2OTY2MzYzNjMyNTI1MjVcIixcbiAgXCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY2MzYzNjMyNTI1MjVcIixcbiAgXCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjVcIixcbiAgXCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjVcIixcbiAgXCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUwMDAwMDBcIlxuKS5tYXAoY29sb3JzKTtcblxuZXhwb3J0IGRlZmF1bHQgcmFtcChzY2hlbWUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js": +/*!*********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvT3Jhbmdlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ0o7O0FBRXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtEQUFNOztBQUVaLGlFQUFlLG9EQUFJLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLXNpbmdsZS9PcmFuZ2VzLmpzP2Y2M2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZmVlNmNlZmRhZTZiZTY1NTBkXCIsXG4gIFwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxXCIsXG4gIFwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzXCIsXG4gIFwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzXCIsXG4gIFwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0XCIsXG4gIFwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0XCIsXG4gIFwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0XCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js": +/*!*********************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvUHVycGxlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ0o7O0FBRXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtEQUFNOztBQUVaLGlFQUFlLG9EQUFJLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLXNpbmdsZS9QdXJwbGVzLmpzPzliNzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZWZlZGY1YmNiZGRjNzU2YmIxXCIsXG4gIFwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzXCIsXG4gIFwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmXCIsXG4gIFwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmXCIsXG4gIFwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2XCIsXG4gIFwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2XCIsXG4gIFwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"scheme\": () => (/* binding */ scheme)\n/* harmony export */ });\n/* harmony import */ var _colors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../colors.js */ \"../../../node_modules/d3-scale-chromatic/src/colors.js\");\n/* harmony import */ var _ramp_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ramp.js */ \"../../../node_modules/d3-scale-chromatic/src/ramp.js\");\n\n\n\nvar scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(_colors_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_ramp_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scheme));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlLWNocm9tYXRpYy9zcmMvc2VxdWVudGlhbC1zaW5nbGUvUmVkcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ0o7O0FBRXZCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtEQUFNOztBQUVaLGlFQUFlLG9EQUFJLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUtY2hyb21hdGljL3NyYy9zZXF1ZW50aWFsLXNpbmdsZS9SZWRzLmpzP2MyODUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9ycyBmcm9tIFwiLi4vY29sb3JzLmpzXCI7XG5pbXBvcnQgcmFtcCBmcm9tIFwiLi4vcmFtcC5qc1wiO1xuXG5leHBvcnQgdmFyIHNjaGVtZSA9IG5ldyBBcnJheSgzKS5jb25jYXQoXG4gIFwiZmVlMGQyZmM5MjcyZGUyZDI2XCIsXG4gIFwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkXCIsXG4gIFwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1XCIsXG4gIFwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1XCIsXG4gIFwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkXCIsXG4gIFwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkXCIsXG4gIFwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkXCJcbikubWFwKGNvbG9ycyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbXAoc2NoZW1lKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/band.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-scale/src/band.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ band),\n/* harmony export */ \"point\": () => (/* binding */ point)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/range.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ordinal.js */ \"../../../node_modules/d3-scale/src/ordinal.js\");\n\n\n\n\nfunction band() {\n var scale = (0,_ordinal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = (0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_2__.initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nfunction point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9iYW5kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTJDO0FBQ1A7QUFDRDs7QUFFcEI7QUFDZixjQUFjLHVEQUFPO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9EQUFRLHNCQUFzQiwwQkFBMEI7QUFDekU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxxREFBZTtBQUN4Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9iYW5kLmpzPzg4MzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyYW5nZSBhcyBzZXF1ZW5jZX0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuaW1wb3J0IG9yZGluYWwgZnJvbSBcIi4vb3JkaW5hbC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYW5kKCkge1xuICB2YXIgc2NhbGUgPSBvcmRpbmFsKCkudW5rbm93bih1bmRlZmluZWQpLFxuICAgICAgZG9tYWluID0gc2NhbGUuZG9tYWluLFxuICAgICAgb3JkaW5hbFJhbmdlID0gc2NhbGUucmFuZ2UsXG4gICAgICByMCA9IDAsXG4gICAgICByMSA9IDEsXG4gICAgICBzdGVwLFxuICAgICAgYmFuZHdpZHRoLFxuICAgICAgcm91bmQgPSBmYWxzZSxcbiAgICAgIHBhZGRpbmdJbm5lciA9IDAsXG4gICAgICBwYWRkaW5nT3V0ZXIgPSAwLFxuICAgICAgYWxpZ24gPSAwLjU7XG5cbiAgZGVsZXRlIHNjYWxlLnVua25vd247XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICB2YXIgbiA9IGRvbWFpbigpLmxlbmd0aCxcbiAgICAgICAgcmV2ZXJzZSA9IHIxIDwgcjAsXG4gICAgICAgIHN0YXJ0ID0gcmV2ZXJzZSA/IHIxIDogcjAsXG4gICAgICAgIHN0b3AgPSByZXZlcnNlID8gcjAgOiByMTtcbiAgICBzdGVwID0gKHN0b3AgLSBzdGFydCkgLyBNYXRoLm1heCgxLCBuIC0gcGFkZGluZ0lubmVyICsgcGFkZGluZ091dGVyICogMik7XG4gICAgaWYgKHJvdW5kKSBzdGVwID0gTWF0aC5mbG9vcihzdGVwKTtcbiAgICBzdGFydCArPSAoc3RvcCAtIHN0YXJ0IC0gc3RlcCAqIChuIC0gcGFkZGluZ0lubmVyKSkgKiBhbGlnbjtcbiAgICBiYW5kd2lkdGggPSBzdGVwICogKDEgLSBwYWRkaW5nSW5uZXIpO1xuICAgIGlmIChyb3VuZCkgc3RhcnQgPSBNYXRoLnJvdW5kKHN0YXJ0KSwgYmFuZHdpZHRoID0gTWF0aC5yb3VuZChiYW5kd2lkdGgpO1xuICAgIHZhciB2YWx1ZXMgPSBzZXF1ZW5jZShuKS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gc3RhcnQgKyBzdGVwICogaTsgfSk7XG4gICAgcmV0dXJuIG9yZGluYWxSYW5nZShyZXZlcnNlID8gdmFsdWVzLnJldmVyc2UoKSA6IHZhbHVlcyk7XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluKF8pLCByZXNjYWxlKCkpIDogZG9tYWluKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoW3IwLCByMV0gPSBfLCByMCA9ICtyMCwgcjEgPSArcjEsIHJlc2NhbGUoKSkgOiBbcjAsIHIxXTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZVJvdW5kID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBbcjAsIHIxXSA9IF8sIHIwID0gK3IwLCByMSA9ICtyMSwgcm91bmQgPSB0cnVlLCByZXNjYWxlKCk7XG4gIH07XG5cbiAgc2NhbGUuYmFuZHdpZHRoID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGJhbmR3aWR0aDtcbiAgfTtcblxuICBzY2FsZS5zdGVwID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHN0ZXA7XG4gIH07XG5cbiAgc2NhbGUucm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIV8sIHJlc2NhbGUoKSkgOiByb3VuZDtcbiAgfTtcblxuICBzY2FsZS5wYWRkaW5nID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdJbm5lciA9IE1hdGgubWluKDEsIHBhZGRpbmdPdXRlciA9ICtfKSwgcmVzY2FsZSgpKSA6IHBhZGRpbmdJbm5lcjtcbiAgfTtcblxuICBzY2FsZS5wYWRkaW5nSW5uZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkZGluZ0lubmVyID0gTWF0aC5taW4oMSwgXyksIHJlc2NhbGUoKSkgOiBwYWRkaW5nSW5uZXI7XG4gIH07XG5cbiAgc2NhbGUucGFkZGluZ091dGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZGRpbmdPdXRlciA9ICtfLCByZXNjYWxlKCkpIDogcGFkZGluZ091dGVyO1xuICB9O1xuXG4gIHNjYWxlLmFsaWduID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGFsaWduID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgXykpLCByZXNjYWxlKCkpIDogYWxpZ247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBiYW5kKGRvbWFpbigpLCBbcjAsIHIxXSlcbiAgICAgICAgLnJvdW5kKHJvdW5kKVxuICAgICAgICAucGFkZGluZ0lubmVyKHBhZGRpbmdJbm5lcilcbiAgICAgICAgLnBhZGRpbmdPdXRlcihwYWRkaW5nT3V0ZXIpXG4gICAgICAgIC5hbGlnbihhbGlnbik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShyZXNjYWxlKCksIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIHBvaW50aXNoKHNjYWxlKSB7XG4gIHZhciBjb3B5ID0gc2NhbGUuY29weTtcblxuICBzY2FsZS5wYWRkaW5nID0gc2NhbGUucGFkZGluZ091dGVyO1xuICBkZWxldGUgc2NhbGUucGFkZGluZ0lubmVyO1xuICBkZWxldGUgc2NhbGUucGFkZGluZ091dGVyO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcG9pbnRpc2goY29weSgpKTtcbiAgfTtcblxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb2ludCgpIHtcbiAgcmV0dXJuIHBvaW50aXNoKGJhbmQuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/band.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ constants)\n/* harmony export */ });\nfunction constants(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnN0YW50LmpzPzI0MzQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29uc3RhbnRzKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/continuous.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-scale/src/continuous.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"copy\": () => (/* binding */ copy),\n/* harmony export */ \"default\": () => (/* binding */ continuous),\n/* harmony export */ \"identity\": () => (/* binding */ identity),\n/* harmony export */ \"transformer\": () => (/* binding */ transformer)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/round.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-scale/src/constant.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nvar unit = [0, 1];\n\nfunction identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = (0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction transformer() {\n var domain = unit,\n range = unit,\n interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"default\"])))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_5__[\"default\"], rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nfunction continuous() {\n return transformer()(identity, identity);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb250aW51b3VzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBZ0M7QUFDb0U7QUFDL0Q7QUFDSjs7QUFFakM7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsUUFBUSx3REFBUTtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksb0RBQU07QUFDbEI7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3RkFBd0Ysc0RBQWlCO0FBQ3pHOztBQUVBO0FBQ0Esc0RBQXNELGtEQUFNO0FBQzVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCxzREFBZ0I7QUFDaEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jb250aW51b3VzLmpzP2YwNmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtiaXNlY3R9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZSBhcyBpbnRlcnBvbGF0ZVZhbHVlLCBpbnRlcnBvbGF0ZU51bWJlciwgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbnZhciB1bml0ID0gWzAsIDFdO1xuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKGEsIGIpIHtcbiAgcmV0dXJuIChiIC09IChhID0gK2EpKVxuICAgICAgPyBmdW5jdGlvbih4KSB7IHJldHVybiAoeCAtIGEpIC8gYjsgfVxuICAgICAgOiBjb25zdGFudChpc05hTihiKSA/IE5hTiA6IDAuNSk7XG59XG5cbmZ1bmN0aW9uIGNsYW1wZXIoYSwgYikge1xuICB2YXIgdDtcbiAgaWYgKGEgPiBiKSB0ID0gYSwgYSA9IGIsIGIgPSB0O1xuICByZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4gTWF0aC5tYXgoYSwgTWF0aC5taW4oYiwgeCkpOyB9O1xufVxuXG4vLyBub3JtYWxpemUoYSwgYikoeCkgdGFrZXMgYSBkb21haW4gdmFsdWUgeCBpbiBbYSxiXSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXIgdCBpbiBbMCwxXS5cbi8vIGludGVycG9sYXRlKGEsIGIpKHQpIHRha2VzIGEgcGFyYW1ldGVyIHQgaW4gWzAsMV0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcmFuZ2UgdmFsdWUgeCBpbiBbYSxiXS5cbmZ1bmN0aW9uIGJpbWFwKGRvbWFpbiwgcmFuZ2UsIGludGVycG9sYXRlKSB7XG4gIHZhciBkMCA9IGRvbWFpblswXSwgZDEgPSBkb21haW5bMV0sIHIwID0gcmFuZ2VbMF0sIHIxID0gcmFuZ2VbMV07XG4gIGlmIChkMSA8IGQwKSBkMCA9IG5vcm1hbGl6ZShkMSwgZDApLCByMCA9IGludGVycG9sYXRlKHIxLCByMCk7XG4gIGVsc2UgZDAgPSBub3JtYWxpemUoZDAsIGQxKSwgcjAgPSBpbnRlcnBvbGF0ZShyMCwgcjEpO1xuICByZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4gcjAoZDAoeCkpOyB9O1xufVxuXG5mdW5jdGlvbiBwb2x5bWFwKGRvbWFpbiwgcmFuZ2UsIGludGVycG9sYXRlKSB7XG4gIHZhciBqID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoKSAtIDEsXG4gICAgICBkID0gbmV3IEFycmF5KGopLFxuICAgICAgciA9IG5ldyBBcnJheShqKSxcbiAgICAgIGkgPSAtMTtcblxuICAvLyBSZXZlcnNlIGRlc2NlbmRpbmcgZG9tYWlucy5cbiAgaWYgKGRvbWFpbltqXSA8IGRvbWFpblswXSkge1xuICAgIGRvbWFpbiA9IGRvbWFpbi5zbGljZSgpLnJldmVyc2UoKTtcbiAgICByYW5nZSA9IHJhbmdlLnNsaWNlKCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgd2hpbGUgKCsraSA8IGopIHtcbiAgICBkW2ldID0gbm9ybWFsaXplKGRvbWFpbltpXSwgZG9tYWluW2kgKyAxXSk7XG4gICAgcltpXSA9IGludGVycG9sYXRlKHJhbmdlW2ldLCByYW5nZVtpICsgMV0pO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICB2YXIgaSA9IGJpc2VjdChkb21haW4sIHgsIDEsIGopIC0gMTtcbiAgICByZXR1cm4gcltpXShkW2ldKHgpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkoc291cmNlLCB0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldFxuICAgICAgLmRvbWFpbihzb3VyY2UuZG9tYWluKCkpXG4gICAgICAucmFuZ2Uoc291cmNlLnJhbmdlKCkpXG4gICAgICAuaW50ZXJwb2xhdGUoc291cmNlLmludGVycG9sYXRlKCkpXG4gICAgICAuY2xhbXAoc291cmNlLmNsYW1wKCkpXG4gICAgICAudW5rbm93bihzb3VyY2UudW5rbm93bigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybWVyKCkge1xuICB2YXIgZG9tYWluID0gdW5pdCxcbiAgICAgIHJhbmdlID0gdW5pdCxcbiAgICAgIGludGVycG9sYXRlID0gaW50ZXJwb2xhdGVWYWx1ZSxcbiAgICAgIHRyYW5zZm9ybSxcbiAgICAgIHVudHJhbnNmb3JtLFxuICAgICAgdW5rbm93bixcbiAgICAgIGNsYW1wID0gaWRlbnRpdHksXG4gICAgICBwaWVjZXdpc2UsXG4gICAgICBvdXRwdXQsXG4gICAgICBpbnB1dDtcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIHZhciBuID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoKTtcbiAgICBpZiAoY2xhbXAgIT09IGlkZW50aXR5KSBjbGFtcCA9IGNsYW1wZXIoZG9tYWluWzBdLCBkb21haW5bbiAtIDFdKTtcbiAgICBwaWVjZXdpc2UgPSBuID4gMiA/IHBvbHltYXAgOiBiaW1hcDtcbiAgICBvdXRwdXQgPSBpbnB1dCA9IG51bGw7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiB4ID09IG51bGwgfHwgaXNOYU4oeCA9ICt4KSA/IHVua25vd24gOiAob3V0cHV0IHx8IChvdXRwdXQgPSBwaWVjZXdpc2UoZG9tYWluLm1hcCh0cmFuc2Zvcm0pLCByYW5nZSwgaW50ZXJwb2xhdGUpKSkodHJhbnNmb3JtKGNsYW1wKHgpKSk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIGNsYW1wKHVudHJhbnNmb3JtKChpbnB1dCB8fCAoaW5wdXQgPSBwaWVjZXdpc2UocmFuZ2UsIGRvbWFpbi5tYXAodHJhbnNmb3JtKSwgaW50ZXJwb2xhdGVOdW1iZXIpKSkoeSkpKTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluID0gQXJyYXkuZnJvbShfLCBudW1iZXIpLCByZXNjYWxlKCkpIDogZG9tYWluLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCByZXNjYWxlKCkpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZVJvdW5kID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiByYW5nZSA9IEFycmF5LmZyb20oXyksIGludGVycG9sYXRlID0gaW50ZXJwb2xhdGVSb3VuZCwgcmVzY2FsZSgpO1xuICB9O1xuXG4gIHNjYWxlLmNsYW1wID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNsYW1wID0gXyA/IHRydWUgOiBpZGVudGl0eSwgcmVzY2FsZSgpKSA6IGNsYW1wICE9PSBpZGVudGl0eTtcbiAgfTtcblxuICBzY2FsZS5pbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbnRlcnBvbGF0ZSA9IF8sIHJlc2NhbGUoKSkgOiBpbnRlcnBvbGF0ZTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbih0LCB1KSB7XG4gICAgdHJhbnNmb3JtID0gdCwgdW50cmFuc2Zvcm0gPSB1O1xuICAgIHJldHVybiByZXNjYWxlKCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRpbnVvdXMoKSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lcigpKGlkZW50aXR5LCBpZGVudGl0eSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/continuous.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/diverging.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/diverging.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ diverging),\n/* harmony export */ \"divergingLog\": () => (/* binding */ divergingLog),\n/* harmony export */ \"divergingPow\": () => (/* binding */ divergingPow),\n/* harmony export */ \"divergingSqrt\": () => (/* binding */ divergingSqrt),\n/* harmony export */ \"divergingSymlog\": () => (/* binding */ divergingSymlog)\n/* harmony export */ });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/piecewise.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/round.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./log.js */ \"../../../node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequential.js */ \"../../../node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symlog.js */ \"../../../node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./pow.js */ \"../../../node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = (0,d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nfunction diverging() {\n var scale = (0,_linear_js__WEBPACK_IMPORTED_MODULE_4__.linearish)(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity));\n\n scale.copy = function() {\n return (0,_sequential_js__WEBPACK_IMPORTED_MODULE_5__.copy)(scale, diverging());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_6__.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingLog() {\n var scale = (0,_log_js__WEBPACK_IMPORTED_MODULE_7__.loggish)(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return (0,_sequential_js__WEBPACK_IMPORTED_MODULE_5__.copy)(scale, divergingLog()).base(scale.base());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_6__.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSymlog() {\n var scale = (0,_symlog_js__WEBPACK_IMPORTED_MODULE_8__.symlogish)(transformer());\n\n scale.copy = function() {\n return (0,_sequential_js__WEBPACK_IMPORTED_MODULE_5__.copy)(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_6__.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingPow() {\n var scale = (0,_pow_js__WEBPACK_IMPORTED_MODULE_9__.powish)(transformer());\n\n scale.copy = function() {\n return (0,_sequential_js__WEBPACK_IMPORTED_MODULE_5__.copy)(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_6__.initInterpolator.apply(scale, arguments);\n}\n\nfunction divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9kaXZlcmdpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdFO0FBQy9CO0FBQ0U7QUFDTDtBQUNMO0FBQ0k7QUFDQztBQUNOOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixvREFBUTtBQUM3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSwwREFBUztBQUMzRTtBQUNBOztBQUVBLHNCQUFzQixzREFBVzs7QUFFakMsMkJBQTJCLHNEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZixjQUFjLHFEQUFTLGVBQWUsb0RBQVE7O0FBRTlDO0FBQ0EsV0FBVyxvREFBSTtBQUNmOztBQUVBLFNBQVMsNERBQXNCO0FBQy9COztBQUVPO0FBQ1AsY0FBYyxnREFBTzs7QUFFckI7QUFDQSxXQUFXLG9EQUFJO0FBQ2Y7O0FBRUEsU0FBUyw0REFBc0I7QUFDL0I7O0FBRU87QUFDUCxjQUFjLHFEQUFTOztBQUV2QjtBQUNBLFdBQVcsb0RBQUk7QUFDZjs7QUFFQSxTQUFTLDREQUFzQjtBQUMvQjs7QUFFTztBQUNQLGNBQWMsK0NBQU07O0FBRXBCO0FBQ0EsV0FBVyxvREFBSTtBQUNmOztBQUVBLFNBQVMsNERBQXNCO0FBQy9COztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2RpdmVyZ2luZy5qcz9iMzk5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW50ZXJwb2xhdGUsIGludGVycG9sYXRlUm91bmQsIHBpZWNld2lzZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2lkZW50aXR5fSBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRJbnRlcnBvbGF0b3J9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCB7bG9nZ2lzaH0gZnJvbSBcIi4vbG9nLmpzXCI7XG5pbXBvcnQge2NvcHl9IGZyb20gXCIuL3NlcXVlbnRpYWwuanNcIjtcbmltcG9ydCB7c3ltbG9naXNofSBmcm9tIFwiLi9zeW1sb2cuanNcIjtcbmltcG9ydCB7cG93aXNofSBmcm9tIFwiLi9wb3cuanNcIjtcblxuZnVuY3Rpb24gdHJhbnNmb3JtZXIoKSB7XG4gIHZhciB4MCA9IDAsXG4gICAgICB4MSA9IDAuNSxcbiAgICAgIHgyID0gMSxcbiAgICAgIHMgPSAxLFxuICAgICAgdDAsXG4gICAgICB0MSxcbiAgICAgIHQyLFxuICAgICAgazEwLFxuICAgICAgazIxLFxuICAgICAgaW50ZXJwb2xhdG9yID0gaWRlbnRpdHksXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBjbGFtcCA9IGZhbHNlLFxuICAgICAgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIGlzTmFOKHggPSAreCkgPyB1bmtub3duIDogKHggPSAwLjUgKyAoKHggPSArdHJhbnNmb3JtKHgpKSAtIHQxKSAqIChzICogeCA8IHMgKiB0MSA/IGsxMCA6IGsyMSksIGludGVycG9sYXRvcihjbGFtcCA/IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHgpKSA6IHgpKTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChbeDAsIHgxLCB4Ml0gPSBfLCB0MCA9IHRyYW5zZm9ybSh4MCA9ICt4MCksIHQxID0gdHJhbnNmb3JtKHgxID0gK3gxKSwgdDIgPSB0cmFuc2Zvcm0oeDIgPSAreDIpLCBrMTAgPSB0MCA9PT0gdDEgPyAwIDogMC41IC8gKHQxIC0gdDApLCBrMjEgPSB0MSA9PT0gdDIgPyAwIDogMC41IC8gKHQyIC0gdDEpLCBzID0gdDEgPCB0MCA/IC0xIDogMSwgc2NhbGUpIDogW3gwLCB4MSwgeDJdO1xuICB9O1xuXG4gIHNjYWxlLmNsYW1wID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNsYW1wID0gISFfLCBzY2FsZSkgOiBjbGFtcDtcbiAgfTtcblxuICBzY2FsZS5pbnRlcnBvbGF0b3IgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaW50ZXJwb2xhdG9yID0gXywgc2NhbGUpIDogaW50ZXJwb2xhdG9yO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHJhbmdlKGludGVycG9sYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKF8pIHtcbiAgICAgIHZhciByMCwgcjEsIHIyO1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoW3IwLCByMSwgcjJdID0gXywgaW50ZXJwb2xhdG9yID0gcGllY2V3aXNlKGludGVycG9sYXRlLCBbcjAsIHIxLCByMl0pLCBzY2FsZSkgOiBbaW50ZXJwb2xhdG9yKDApLCBpbnRlcnBvbGF0b3IoMC41KSwgaW50ZXJwb2xhdG9yKDEpXTtcbiAgICB9O1xuICB9XG5cbiAgc2NhbGUucmFuZ2UgPSByYW5nZShpbnRlcnBvbGF0ZSk7XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IHJhbmdlKGludGVycG9sYXRlUm91bmQpO1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0cmFuc2Zvcm0gPSB0LCB0MCA9IHQoeDApLCB0MSA9IHQoeDEpLCB0MiA9IHQoeDIpLCBrMTAgPSB0MCA9PT0gdDEgPyAwIDogMC41IC8gKHQxIC0gdDApLCBrMjEgPSB0MSA9PT0gdDIgPyAwIDogMC41IC8gKHQyIC0gdDEpLCBzID0gdDEgPCB0MCA/IC0xIDogMTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpdmVyZ2luZygpIHtcbiAgdmFyIHNjYWxlID0gbGluZWFyaXNoKHRyYW5zZm9ybWVyKCkoaWRlbnRpdHkpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGRpdmVyZ2luZygpKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdEludGVycG9sYXRvci5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmVyZ2luZ0xvZygpIHtcbiAgdmFyIHNjYWxlID0gbG9nZ2lzaCh0cmFuc2Zvcm1lcigpKS5kb21haW4oWzAuMSwgMSwgMTBdKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGRpdmVyZ2luZ0xvZygpKS5iYXNlKHNjYWxlLmJhc2UoKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRJbnRlcnBvbGF0b3IuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXZlcmdpbmdTeW1sb2coKSB7XG4gIHZhciBzY2FsZSA9IHN5bWxvZ2lzaCh0cmFuc2Zvcm1lcigpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGRpdmVyZ2luZ1N5bWxvZygpKS5jb25zdGFudChzY2FsZS5jb25zdGFudCgpKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdEludGVycG9sYXRvci5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmVyZ2luZ1BvdygpIHtcbiAgdmFyIHNjYWxlID0gcG93aXNoKHRyYW5zZm9ybWVyKCkpO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY29weShzY2FsZSwgZGl2ZXJnaW5nUG93KCkpLmV4cG9uZW50KHNjYWxlLmV4cG9uZW50KCkpO1xuICB9O1xuXG4gIHJldHVybiBpbml0SW50ZXJwb2xhdG9yLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGl2ZXJnaW5nU3FydCgpIHtcbiAgcmV0dXJuIGRpdmVyZ2luZ1Bvdy5hcHBseShudWxsLCBhcmd1bWVudHMpLmV4cG9uZW50KDAuNSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/diverging.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/identity.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/identity.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ identity)\n/* harmony export */ });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-scale/src/number.js\");\n\n\n\nfunction identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, _number_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) : [0, 1];\n\n return (0,_linear_js__WEBPACK_IMPORTED_MODULE_1__.linearish)(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pZGVudGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0M7QUFDTDs7QUFFbEI7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzREFBc0Qsa0RBQU07QUFDNUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQsa0RBQU07O0FBRXZELFNBQVMscURBQVM7QUFDbEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pZGVudGl0eS5qcz8zYWUyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlkZW50aXR5KGRvbWFpbikge1xuICB2YXIgdW5rbm93bjtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgcmV0dXJuIHggPT0gbnVsbCB8fCBpc05hTih4ID0gK3gpID8gdW5rbm93biA6IHg7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBzY2FsZTtcblxuICBzY2FsZS5kb21haW4gPSBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSBBcnJheS5mcm9tKF8sIG51bWJlciksIHNjYWxlKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBpZGVudGl0eShkb21haW4pLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgZG9tYWluID0gYXJndW1lbnRzLmxlbmd0aCA/IEFycmF5LmZyb20oZG9tYWluLCBudW1iZXIpIDogWzAsIDFdO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-scale/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"scaleBand\": () => (/* reexport safe */ _band_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"scaleDiverging\": () => (/* reexport safe */ _diverging_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"scaleDivergingLog\": () => (/* reexport safe */ _diverging_js__WEBPACK_IMPORTED_MODULE_15__.divergingLog),\n/* harmony export */ \"scaleDivergingPow\": () => (/* reexport safe */ _diverging_js__WEBPACK_IMPORTED_MODULE_15__.divergingPow),\n/* harmony export */ \"scaleDivergingSqrt\": () => (/* reexport safe */ _diverging_js__WEBPACK_IMPORTED_MODULE_15__.divergingSqrt),\n/* harmony export */ \"scaleDivergingSymlog\": () => (/* reexport safe */ _diverging_js__WEBPACK_IMPORTED_MODULE_15__.divergingSymlog),\n/* harmony export */ \"scaleIdentity\": () => (/* reexport safe */ _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"scaleImplicit\": () => (/* reexport safe */ _ordinal_js__WEBPACK_IMPORTED_MODULE_5__.implicit),\n/* harmony export */ \"scaleLinear\": () => (/* reexport safe */ _linear_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"scaleLog\": () => (/* reexport safe */ _log_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"scaleOrdinal\": () => (/* reexport safe */ _ordinal_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"scalePoint\": () => (/* reexport safe */ _band_js__WEBPACK_IMPORTED_MODULE_0__.point),\n/* harmony export */ \"scalePow\": () => (/* reexport safe */ _pow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"scaleQuantile\": () => (/* reexport safe */ _quantile_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"scaleQuantize\": () => (/* reexport safe */ _quantize_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"scaleRadial\": () => (/* reexport safe */ _radial_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"scaleSequential\": () => (/* reexport safe */ _sequential_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"scaleSequentialLog\": () => (/* reexport safe */ _sequential_js__WEBPACK_IMPORTED_MODULE_13__.sequentialLog),\n/* harmony export */ \"scaleSequentialPow\": () => (/* reexport safe */ _sequential_js__WEBPACK_IMPORTED_MODULE_13__.sequentialPow),\n/* harmony export */ \"scaleSequentialQuantile\": () => (/* reexport safe */ _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"scaleSequentialSqrt\": () => (/* reexport safe */ _sequential_js__WEBPACK_IMPORTED_MODULE_13__.sequentialSqrt),\n/* harmony export */ \"scaleSequentialSymlog\": () => (/* reexport safe */ _sequential_js__WEBPACK_IMPORTED_MODULE_13__.sequentialSymlog),\n/* harmony export */ \"scaleSqrt\": () => (/* reexport safe */ _pow_js__WEBPACK_IMPORTED_MODULE_6__.sqrt),\n/* harmony export */ \"scaleSymlog\": () => (/* reexport safe */ _symlog_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"scaleThreshold\": () => (/* reexport safe */ _threshold_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"scaleTime\": () => (/* reexport safe */ _time_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"scaleUtc\": () => (/* reexport safe */ _utcTime_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"tickFormat\": () => (/* reexport safe */ _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _band_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./band.js */ \"../../../node_modules/d3-scale/src/band.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-scale/src/identity.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./log.js */ \"../../../node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symlog.js */ \"../../../node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _ordinal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ordinal.js */ \"../../../node_modules/d3-scale/src/ordinal.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pow.js */ \"../../../node_modules/d3-scale/src/pow.js\");\n/* harmony import */ var _radial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./radial.js */ \"../../../node_modules/d3-scale/src/radial.js\");\n/* harmony import */ var _quantile_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./quantile.js */ \"../../../node_modules/d3-scale/src/quantile.js\");\n/* harmony import */ var _quantize_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./quantize.js */ \"../../../node_modules/d3-scale/src/quantize.js\");\n/* harmony import */ var _threshold_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./threshold.js */ \"../../../node_modules/d3-scale/src/threshold.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./time.js */ \"../../../node_modules/d3-scale/src/time.js\");\n/* harmony import */ var _utcTime_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utcTime.js */ \"../../../node_modules/d3-scale/src/utcTime.js\");\n/* harmony import */ var _sequential_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sequential.js */ \"../../../node_modules/d3-scale/src/sequential.js\");\n/* harmony import */ var _sequentialQuantile_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./sequentialQuantile.js */ \"../../../node_modules/d3-scale/src/sequentialQuantile.js\");\n/* harmony import */ var _diverging_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diverging.js */ \"../../../node_modules/d3-scale/src/diverging.js\");\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tickFormat.js */ \"../../../node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbUI7O0FBSUk7O0FBSUY7O0FBSUg7O0FBSUc7O0FBS0M7O0FBS0o7O0FBSUc7O0FBSUU7O0FBSUE7O0FBSUM7O0FBSUw7O0FBSUc7O0FBUUc7O0FBSVE7O0FBUVQ7O0FBSUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbmRleC5qcz82OGRiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVCYW5kLFxuICBwb2ludCBhcyBzY2FsZVBvaW50XG59IGZyb20gXCIuL2JhbmQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZUlkZW50aXR5XG59IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMaW5lYXJcbn0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVMb2dcbn0gZnJvbSBcIi4vbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVTeW1sb2dcbn0gZnJvbSBcIi4vc3ltbG9nLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVPcmRpbmFsLFxuICBpbXBsaWNpdCBhcyBzY2FsZUltcGxpY2l0XG59IGZyb20gXCIuL29yZGluYWwuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVBvdyxcbiAgc3FydCBhcyBzY2FsZVNxcnRcbn0gZnJvbSBcIi4vcG93LmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVSYWRpYWxcbn0gZnJvbSBcIi4vcmFkaWFsLmpzXCI7XG5cbmV4cG9ydCB7XG4gIGRlZmF1bHQgYXMgc2NhbGVRdWFudGlsZVxufSBmcm9tIFwiLi9xdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlUXVhbnRpemVcbn0gZnJvbSBcIi4vcXVhbnRpemUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRocmVzaG9sZFxufSBmcm9tIFwiLi90aHJlc2hvbGQuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVRpbWVcbn0gZnJvbSBcIi4vdGltZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlVXRjXG59IGZyb20gXCIuL3V0Y1RpbWUuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBzY2FsZVNlcXVlbnRpYWwsXG4gIHNlcXVlbnRpYWxMb2cgYXMgc2NhbGVTZXF1ZW50aWFsTG9nLFxuICBzZXF1ZW50aWFsUG93IGFzIHNjYWxlU2VxdWVudGlhbFBvdyxcbiAgc2VxdWVudGlhbFNxcnQgYXMgc2NhbGVTZXF1ZW50aWFsU3FydCxcbiAgc2VxdWVudGlhbFN5bWxvZyBhcyBzY2FsZVNlcXVlbnRpYWxTeW1sb2dcbn0gZnJvbSBcIi4vc2VxdWVudGlhbC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlU2VxdWVudGlhbFF1YW50aWxlXG59IGZyb20gXCIuL3NlcXVlbnRpYWxRdWFudGlsZS5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHNjYWxlRGl2ZXJnaW5nLFxuICBkaXZlcmdpbmdMb2cgYXMgc2NhbGVEaXZlcmdpbmdMb2csXG4gIGRpdmVyZ2luZ1BvdyBhcyBzY2FsZURpdmVyZ2luZ1BvdyxcbiAgZGl2ZXJnaW5nU3FydCBhcyBzY2FsZURpdmVyZ2luZ1NxcnQsXG4gIGRpdmVyZ2luZ1N5bWxvZyBhcyBzY2FsZURpdmVyZ2luZ1N5bWxvZ1xufSBmcm9tIFwiLi9kaXZlcmdpbmcuanNcIjtcblxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB0aWNrRm9ybWF0XG59IGZyb20gXCIuL3RpY2tGb3JtYXQuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/init.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-scale/src/init.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"initInterpolator\": () => (/* binding */ initInterpolator),\n/* harmony export */ \"initRange\": () => (/* binding */ initRange)\n/* harmony export */ });\nfunction initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nfunction initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9pbml0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2luaXQuanM/MGQ0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaW5pdFJhbmdlKGRvbWFpbiwgcmFuZ2UpIHtcbiAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiBicmVhaztcbiAgICBjYXNlIDE6IHRoaXMucmFuZ2UoZG9tYWluKTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhpcy5yYW5nZShyYW5nZSkuZG9tYWluKGRvbWFpbik7IGJyZWFrO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdEludGVycG9sYXRvcihkb21haW4sIGludGVycG9sYXRvcikge1xuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IGJyZWFrO1xuICAgIGNhc2UgMToge1xuICAgICAgaWYgKHR5cGVvZiBkb21haW4gPT09IFwiZnVuY3Rpb25cIikgdGhpcy5pbnRlcnBvbGF0b3IoZG9tYWluKTtcbiAgICAgIGVsc2UgdGhpcy5yYW5nZShkb21haW4pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRoaXMuZG9tYWluKGRvbWFpbik7XG4gICAgICBpZiAodHlwZW9mIGludGVycG9sYXRvciA9PT0gXCJmdW5jdGlvblwiKSB0aGlzLmludGVycG9sYXRvcihpbnRlcnBvbGF0b3IpO1xuICAgICAgZWxzZSB0aGlzLnJhbmdlKGludGVycG9sYXRvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/init.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/linear.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/linear.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ linear),\n/* harmony export */ \"linearish\": () => (/* binding */ linearish)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _tickFormat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tickFormat.js */ \"../../../node_modules/d3-scale/src/tickFormat.js\");\n\n\n\n\n\nfunction linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return (0,_tickFormat_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__.tickIncrement)(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nfunction linear() {\n var scale = (0,_continuous_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n scale.copy = function() {\n return (0,_continuous_js__WEBPACK_IMPORTED_MODULE_2__.copy)(scale, linear());\n };\n\n _init_js__WEBPACK_IMPORTED_MODULE_3__.initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9saW5lYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQThDO0FBQ0c7QUFDYjtBQUNLOztBQUVsQztBQUNQOztBQUVBO0FBQ0E7QUFDQSxXQUFXLG9EQUFLO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDBEQUFVO0FBQ3JCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRWU7QUFDZixjQUFjLDBEQUFVOztBQUV4QjtBQUNBLFdBQVcsb0RBQUk7QUFDZjs7QUFFQSxFQUFFLHFEQUFlOztBQUVqQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbGluZWFyLmpzPzljZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0aWNrcywgdGlja0luY3JlbWVudH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQgY29udGludW91cywge2NvcHl9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0LmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrRm9ybWF0KGRbMF0sIGRbZC5sZW5ndGggLSAxXSwgY291bnQgPT0gbnVsbCA/IDEwIDogY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHZhciBpMCA9IDA7XG4gICAgdmFyIGkxID0gZC5sZW5ndGggLSAxO1xuICAgIHZhciBzdGFydCA9IGRbaTBdO1xuICAgIHZhciBzdG9wID0gZFtpMV07XG4gICAgdmFyIHByZXN0ZXA7XG4gICAgdmFyIHN0ZXA7XG4gICAgdmFyIG1heEl0ZXIgPSAxMDtcblxuICAgIGlmIChzdG9wIDwgc3RhcnQpIHtcbiAgICAgIHN0ZXAgPSBzdGFydCwgc3RhcnQgPSBzdG9wLCBzdG9wID0gc3RlcDtcbiAgICAgIHN0ZXAgPSBpMCwgaTAgPSBpMSwgaTEgPSBzdGVwO1xuICAgIH1cbiAgICBcbiAgICB3aGlsZSAobWF4SXRlci0tID4gMCkge1xuICAgICAgc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KTtcbiAgICAgIGlmIChzdGVwID09PSBwcmVzdGVwKSB7XG4gICAgICAgIGRbaTBdID0gc3RhcnRcbiAgICAgICAgZFtpMV0gPSBzdG9wXG4gICAgICAgIHJldHVybiBkb21haW4oZCk7XG4gICAgICB9IGVsc2UgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAvIHN0ZXApICogc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgfSBlbHNlIGlmIChzdGVwIDwgMCkge1xuICAgICAgICBzdGFydCA9IE1hdGguY2VpbChzdGFydCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcHJlc3RlcCA9IHN0ZXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKCk7XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjb3B5KHNjYWxlLCBsaW5lYXIoKSk7XG4gIH07XG5cbiAgaW5pdFJhbmdlLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/linear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/log.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-scale/src/log.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ log),\n/* harmony export */ \"loggish\": () => (/* binding */ loggish)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/defaultLocale.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nice.js */ \"../../../node_modules/d3-scale/src/nice.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\n\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nfunction loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(u, v, n);\n } else {\n z = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = (0,d3_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(specifier)).precision == null) specifier.trim = true;\n specifier = (0,d3_format__WEBPACK_IMPORTED_MODULE_2__.format)(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain((0,_nice_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nfunction log() {\n const scale = loggish((0,_continuous_js__WEBPACK_IMPORTED_MODULE_4__.transformer)()).domain([1, 10]);\n scale.copy = () => (0,_continuous_js__WEBPACK_IMPORTED_MODULE_4__.copy)(scale, log()).base(scale.base());\n _init_js__WEBPACK_IMPORTED_MODULE_5__.initRange.apply(scale, arguments);\n return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9sb2cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0I7QUFDbUI7QUFDckI7QUFDcUI7QUFDZDs7QUFFcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEMsb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsWUFBWSxRQUFRO0FBQzVCLDJCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxvREFBSztBQUNyQyxNQUFNO0FBQ04sVUFBVSxvREFBSztBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxxREFBZTtBQUNyRCxrQkFBa0IsaURBQU07QUFDeEI7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0Isb0RBQUk7QUFDdEI7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVlO0FBQ2Ysd0JBQXdCLDJEQUFXO0FBQ25DLHFCQUFxQixvREFBSTtBQUN6QixFQUFFLHFEQUFlO0FBQ2pCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9sb2cuanM/NmQ0YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tzfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7Zm9ybWF0LCBmb3JtYXRTcGVjaWZpZXJ9IGZyb20gXCJkMy1mb3JtYXRcIjtcbmltcG9ydCBuaWNlIGZyb20gXCIuL25pY2UuanNcIjtcbmltcG9ydCB7Y29weSwgdHJhbnNmb3JtZXJ9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUxvZyh4KSB7XG4gIHJldHVybiBNYXRoLmxvZyh4KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtRXhwKHgpIHtcbiAgcmV0dXJuIE1hdGguZXhwKHgpO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Mb2duKHgpIHtcbiAgcmV0dXJuIC1NYXRoLmxvZygteCk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybUV4cG4oeCkge1xuICByZXR1cm4gLU1hdGguZXhwKC14KTtcbn1cblxuZnVuY3Rpb24gcG93MTAoeCkge1xuICByZXR1cm4gaXNGaW5pdGUoeCkgPyArKFwiMWVcIiArIHgpIDogeCA8IDAgPyAwIDogeDtcbn1cblxuZnVuY3Rpb24gcG93cChiYXNlKSB7XG4gIHJldHVybiBiYXNlID09PSAxMCA/IHBvdzEwXG4gICAgICA6IGJhc2UgPT09IE1hdGguRSA/IE1hdGguZXhwXG4gICAgICA6IHggPT4gTWF0aC5wb3coYmFzZSwgeCk7XG59XG5cbmZ1bmN0aW9uIGxvZ3AoYmFzZSkge1xuICByZXR1cm4gYmFzZSA9PT0gTWF0aC5FID8gTWF0aC5sb2dcbiAgICAgIDogYmFzZSA9PT0gMTAgJiYgTWF0aC5sb2cxMFxuICAgICAgfHwgYmFzZSA9PT0gMiAmJiBNYXRoLmxvZzJcbiAgICAgIHx8IChiYXNlID0gTWF0aC5sb2coYmFzZSksIHggPT4gTWF0aC5sb2coeCkgLyBiYXNlKTtcbn1cblxuZnVuY3Rpb24gcmVmbGVjdChmKSB7XG4gIHJldHVybiAoeCwgaykgPT4gLWYoLXgsIGspO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2lzaCh0cmFuc2Zvcm0pIHtcbiAgY29uc3Qgc2NhbGUgPSB0cmFuc2Zvcm0odHJhbnNmb3JtTG9nLCB0cmFuc2Zvcm1FeHApO1xuICBjb25zdCBkb21haW4gPSBzY2FsZS5kb21haW47XG4gIGxldCBiYXNlID0gMTA7XG4gIGxldCBsb2dzO1xuICBsZXQgcG93cztcblxuICBmdW5jdGlvbiByZXNjYWxlKCkge1xuICAgIGxvZ3MgPSBsb2dwKGJhc2UpLCBwb3dzID0gcG93cChiYXNlKTtcbiAgICBpZiAoZG9tYWluKClbMF0gPCAwKSB7XG4gICAgICBsb2dzID0gcmVmbGVjdChsb2dzKSwgcG93cyA9IHJlZmxlY3QocG93cyk7XG4gICAgICB0cmFuc2Zvcm0odHJhbnNmb3JtTG9nbiwgdHJhbnNmb3JtRXhwbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zZm9ybSh0cmFuc2Zvcm1Mb2csIHRyYW5zZm9ybUV4cCk7XG4gICAgfVxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHNjYWxlLmJhc2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoYmFzZSA9ICtfLCByZXNjYWxlKCkpIDogYmFzZTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluKF8pLCByZXNjYWxlKCkpIDogZG9tYWluKCk7XG4gIH07XG5cbiAgc2NhbGUudGlja3MgPSBjb3VudCA9PiB7XG4gICAgY29uc3QgZCA9IGRvbWFpbigpO1xuICAgIGxldCB1ID0gZFswXTtcbiAgICBsZXQgdiA9IGRbZC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCByID0gdiA8IHU7XG5cbiAgICBpZiAocikgKFt1LCB2XSA9IFt2LCB1XSk7XG5cbiAgICBsZXQgaSA9IGxvZ3ModSk7XG4gICAgbGV0IGogPSBsb2dzKHYpO1xuICAgIGxldCBrO1xuICAgIGxldCB0O1xuICAgIGNvbnN0IG4gPSBjb3VudCA9PSBudWxsID8gMTAgOiArY291bnQ7XG4gICAgbGV0IHogPSBbXTtcblxuICAgIGlmICghKGJhc2UgJSAxKSAmJiBqIC0gaSA8IG4pIHtcbiAgICAgIGkgPSBNYXRoLmZsb29yKGkpLCBqID0gTWF0aC5jZWlsKGopO1xuICAgICAgaWYgKHUgPiAwKSBmb3IgKDsgaSA8PSBqOyArK2kpIHtcbiAgICAgICAgZm9yIChrID0gMTsgayA8IGJhc2U7ICsraykge1xuICAgICAgICAgIHQgPSBpIDwgMCA/IGsgLyBwb3dzKC1pKSA6IGsgKiBwb3dzKGkpO1xuICAgICAgICAgIGlmICh0IDwgdSkgY29udGludWU7XG4gICAgICAgICAgaWYgKHQgPiB2KSBicmVhaztcbiAgICAgICAgICB6LnB1c2godCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBmb3IgKDsgaSA8PSBqOyArK2kpIHtcbiAgICAgICAgZm9yIChrID0gYmFzZSAtIDE7IGsgPj0gMTsgLS1rKSB7XG4gICAgICAgICAgdCA9IGkgPiAwID8gayAvIHBvd3MoLWkpIDogayAqIHBvd3MoaSk7XG4gICAgICAgICAgaWYgKHQgPCB1KSBjb250aW51ZTtcbiAgICAgICAgICBpZiAodCA+IHYpIGJyZWFrO1xuICAgICAgICAgIHoucHVzaCh0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHoubGVuZ3RoICogMiA8IG4pIHogPSB0aWNrcyh1LCB2LCBuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeiA9IHRpY2tzKGksIGosIE1hdGgubWluKGogLSBpLCBuKSkubWFwKHBvd3MpO1xuICAgIH1cbiAgICByZXR1cm4gciA/IHoucmV2ZXJzZSgpIDogejtcbiAgfTtcblxuICBzY2FsZS50aWNrRm9ybWF0ID0gKGNvdW50LCBzcGVjaWZpZXIpID0+IHtcbiAgICBpZiAoY291bnQgPT0gbnVsbCkgY291bnQgPSAxMDtcbiAgICBpZiAoc3BlY2lmaWVyID09IG51bGwpIHNwZWNpZmllciA9IGJhc2UgPT09IDEwID8gXCJzXCIgOiBcIixcIjtcbiAgICBpZiAodHlwZW9mIHNwZWNpZmllciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAoIShiYXNlICUgMSkgJiYgKHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpKS5wcmVjaXNpb24gPT0gbnVsbCkgc3BlY2lmaWVyLnRyaW0gPSB0cnVlO1xuICAgICAgc3BlY2lmaWVyID0gZm9ybWF0KHNwZWNpZmllcik7XG4gICAgfVxuICAgIGlmIChjb3VudCA9PT0gSW5maW5pdHkpIHJldHVybiBzcGVjaWZpZXI7XG4gICAgY29uc3QgayA9IE1hdGgubWF4KDEsIGJhc2UgKiBjb3VudCAvIHNjYWxlLnRpY2tzKCkubGVuZ3RoKTsgLy8gVE9ETyBmYXN0IGVzdGltYXRlP1xuICAgIHJldHVybiBkID0+IHtcbiAgICAgIGxldCBpID0gZCAvIHBvd3MoTWF0aC5yb3VuZChsb2dzKGQpKSk7XG4gICAgICBpZiAoaSAqIGJhc2UgPCBiYXNlIC0gMC41KSBpICo9IGJhc2U7XG4gICAgICByZXR1cm4gaSA8PSBrID8gc3BlY2lmaWVyKGQpIDogXCJcIjtcbiAgICB9O1xuICB9O1xuXG4gIHNjYWxlLm5pY2UgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGRvbWFpbihuaWNlKGRvbWFpbigpLCB7XG4gICAgICBmbG9vcjogeCA9PiBwb3dzKE1hdGguZmxvb3IobG9ncyh4KSkpLFxuICAgICAgY2VpbDogeCA9PiBwb3dzKE1hdGguY2VpbChsb2dzKHgpKSlcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2coKSB7XG4gIGNvbnN0IHNjYWxlID0gbG9nZ2lzaCh0cmFuc2Zvcm1lcigpKS5kb21haW4oWzEsIDEwXSk7XG4gIHNjYWxlLmNvcHkgPSAoKSA9PiBjb3B5KHNjYWxlLCBsb2coKSkuYmFzZShzY2FsZS5iYXNlKCkpO1xuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG4gIHJldHVybiBzY2FsZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/log.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/nice.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-scale/src/nice.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ nice)\n/* harmony export */ });\nfunction nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9uaWNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9uaWNlLmpzPzk0NzgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmljZShkb21haW4sIGludGVydmFsKSB7XG4gIGRvbWFpbiA9IGRvbWFpbi5zbGljZSgpO1xuXG4gIHZhciBpMCA9IDAsXG4gICAgICBpMSA9IGRvbWFpbi5sZW5ndGggLSAxLFxuICAgICAgeDAgPSBkb21haW5baTBdLFxuICAgICAgeDEgPSBkb21haW5baTFdLFxuICAgICAgdDtcblxuICBpZiAoeDEgPCB4MCkge1xuICAgIHQgPSBpMCwgaTAgPSBpMSwgaTEgPSB0O1xuICAgIHQgPSB4MCwgeDAgPSB4MSwgeDEgPSB0O1xuICB9XG5cbiAgZG9tYWluW2kwXSA9IGludGVydmFsLmZsb29yKHgwKTtcbiAgZG9tYWluW2kxXSA9IGludGVydmFsLmNlaWwoeDEpO1xuICByZXR1cm4gZG9tYWluO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/nice.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/number.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/number.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ number)\n/* harmony export */ });\nfunction number(x) {\n return +x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9udW1iZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL251bWJlci5qcz80YzIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG51bWJlcih4KSB7XG4gIHJldHVybiAreDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/number.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/ordinal.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/ordinal.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ordinal),\n/* harmony export */ \"implicit\": () => (/* binding */ implicit)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/internmap/src/index.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\nconst implicit = Symbol(\"implicit\");\n\nfunction ordinal() {\n var index = new d3_array__WEBPACK_IMPORTED_MODULE_0__.InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new d3_array__WEBPACK_IMPORTED_MODULE_0__.InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n _init_js__WEBPACK_IMPORTED_MODULE_1__.initRange.apply(scale, arguments);\n\n return scale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9vcmRpbmFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUM7QUFDQzs7QUFFN0I7O0FBRVE7QUFDZixrQkFBa0IsK0NBQVM7QUFDM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZCQUE2QiwrQ0FBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxxREFBZTs7QUFFakI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL29yZGluYWwuanM/MjBjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ludGVybk1hcH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgY29uc3QgaW1wbGljaXQgPSBTeW1ib2woXCJpbXBsaWNpdFwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkaW5hbCgpIHtcbiAgdmFyIGluZGV4ID0gbmV3IEludGVybk1hcCgpLFxuICAgICAgZG9tYWluID0gW10sXG4gICAgICByYW5nZSA9IFtdLFxuICAgICAgdW5rbm93biA9IGltcGxpY2l0O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKGQpIHtcbiAgICBsZXQgaSA9IGluZGV4LmdldChkKTtcbiAgICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodW5rbm93biAhPT0gaW1wbGljaXQpIHJldHVybiB1bmtub3duO1xuICAgICAgaW5kZXguc2V0KGQsIGkgPSBkb21haW4ucHVzaChkKSAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmFuZ2VbaSAlIHJhbmdlLmxlbmd0aF07XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW10sIGluZGV4ID0gbmV3IEludGVybk1hcCgpO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgXykge1xuICAgICAgaWYgKGluZGV4Lmhhcyh2YWx1ZSkpIGNvbnRpbnVlO1xuICAgICAgaW5kZXguc2V0KHZhbHVlLCBkb21haW4ucHVzaCh2YWx1ZSkgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gQXJyYXkuZnJvbShfKSwgc2NhbGUpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gb3JkaW5hbChkb21haW4sIHJhbmdlKS51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcblxuICByZXR1cm4gc2NhbGU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/ordinal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/pow.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-scale/src/pow.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ pow),\n/* harmony export */ \"powish\": () => (/* binding */ powish),\n/* harmony export */ \"sqrt\": () => (/* binding */ sqrt)\n/* harmony export */ });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nfunction powish(transform) {\n var scale = transform(_continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity, _continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(_continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity, _continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return (0,_linear_js__WEBPACK_IMPORTED_MODULE_1__.linearish)(scale);\n}\n\nfunction pow() {\n var scale = powish((0,_continuous_js__WEBPACK_IMPORTED_MODULE_0__.transformer)());\n\n scale.copy = function() {\n return (0,_continuous_js__WEBPACK_IMPORTED_MODULE_0__.copy)(scale, pow()).exponent(scale.exponent());\n };\n\n _init_js__WEBPACK_IMPORTED_MODULE_2__.initRange.apply(scale, arguments);\n\n return scale;\n}\n\nfunction sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9wb3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNDO0FBQ3NCO0FBQ3hCOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCx3QkFBd0Isb0RBQVEsRUFBRSxvREFBUTtBQUMxQzs7QUFFQTtBQUNBLHNDQUFzQyxvREFBUSxFQUFFLG9EQUFRO0FBQ3hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxxREFBUztBQUNsQjs7QUFFZTtBQUNmLHFCQUFxQiwyREFBVzs7QUFFaEM7QUFDQSxXQUFXLG9EQUFJO0FBQ2Y7O0FBRUEsRUFBRSxxREFBZTs7QUFFakI7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9wb3cuanM/OGYzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2xpbmVhcmlzaH0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5pbXBvcnQge2NvcHksIGlkZW50aXR5LCB0cmFuc2Zvcm1lcn0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZnVuY3Rpb24gdHJhbnNmb3JtUG93KGV4cG9uZW50KSB7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHggPCAwID8gLU1hdGgucG93KC14LCBleHBvbmVudCkgOiBNYXRoLnBvdyh4LCBleHBvbmVudCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVNxcnQoeCkge1xuICByZXR1cm4geCA8IDAgPyAtTWF0aC5zcXJ0KC14KSA6IE1hdGguc3FydCh4KTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3F1YXJlKHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLXggKiB4IDogeCAqIHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3dpc2godHJhbnNmb3JtKSB7XG4gIHZhciBzY2FsZSA9IHRyYW5zZm9ybShpZGVudGl0eSwgaWRlbnRpdHkpLFxuICAgICAgZXhwb25lbnQgPSAxO1xuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgcmV0dXJuIGV4cG9uZW50ID09PSAxID8gdHJhbnNmb3JtKGlkZW50aXR5LCBpZGVudGl0eSlcbiAgICAgICAgOiBleHBvbmVudCA9PT0gMC41ID8gdHJhbnNmb3JtKHRyYW5zZm9ybVNxcnQsIHRyYW5zZm9ybVNxdWFyZSlcbiAgICAgICAgOiB0cmFuc2Zvcm0odHJhbnNmb3JtUG93KGV4cG9uZW50KSwgdHJhbnNmb3JtUG93KDEgLyBleHBvbmVudCkpO1xuICB9XG5cbiAgc2NhbGUuZXhwb25lbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZXhwb25lbnQgPSArXywgcmVzY2FsZSgpKSA6IGV4cG9uZW50O1xuICB9O1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwb3coKSB7XG4gIHZhciBzY2FsZSA9IHBvd2lzaCh0cmFuc2Zvcm1lcigpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHBvdygpKS5leHBvbmVudChzY2FsZS5leHBvbmVudCgpKTtcbiAgfTtcblxuICBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3FydCgpIHtcbiAgcmV0dXJuIHBvdy5hcHBseShudWxsLCBhcmd1bWVudHMpLmV4cG9uZW50KDAuNSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/pow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/quantile.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/quantile.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ quantile)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/quantile.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\nfunction quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__.quantileSorted)(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[(0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_3__.initRange.apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGlsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF3RTtBQUNwQzs7QUFFckI7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0Msd0RBQVM7QUFDakQ7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RCxvREFBTTtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnREFBUztBQUN6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHFEQUFlO0FBQ3hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcXVhbnRpbGUuanM/MWQ1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzY2VuZGluZywgYmlzZWN0LCBxdWFudGlsZVNvcnRlZCBhcyB0aHJlc2hvbGR9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcXVhbnRpbGUoKSB7XG4gIHZhciBkb21haW4gPSBbXSxcbiAgICAgIHJhbmdlID0gW10sXG4gICAgICB0aHJlc2hvbGRzID0gW10sXG4gICAgICB1bmtub3duO1xuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgdmFyIGkgPSAwLCBuID0gTWF0aC5tYXgoMSwgcmFuZ2UubGVuZ3RoKTtcbiAgICB0aHJlc2hvbGRzID0gbmV3IEFycmF5KG4gLSAxKTtcbiAgICB3aGlsZSAoKytpIDwgbikgdGhyZXNob2xkc1tpIC0gMV0gPSB0aHJlc2hvbGQoZG9tYWluLCBpIC8gbik7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiB4ID09IG51bGwgfHwgaXNOYU4oeCA9ICt4KSA/IHVua25vd24gOiByYW5nZVtiaXNlY3QodGhyZXNob2xkcywgeCldO1xuICB9XG5cbiAgc2NhbGUuaW52ZXJ0RXh0ZW50ID0gZnVuY3Rpb24oeSkge1xuICAgIHZhciBpID0gcmFuZ2UuaW5kZXhPZih5KTtcbiAgICByZXR1cm4gaSA8IDAgPyBbTmFOLCBOYU5dIDogW1xuICAgICAgaSA+IDAgPyB0aHJlc2hvbGRzW2kgLSAxXSA6IGRvbWFpblswXSxcbiAgICAgIGkgPCB0aHJlc2hvbGRzLmxlbmd0aCA/IHRocmVzaG9sZHNbaV0gOiBkb21haW5bZG9tYWluLmxlbmd0aCAtIDFdXG4gICAgXTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZG9tYWluLnNsaWNlKCk7XG4gICAgZG9tYWluID0gW107XG4gICAgZm9yIChsZXQgZCBvZiBfKSBpZiAoZCAhPSBudWxsICYmICFpc05hTihkID0gK2QpKSBkb21haW4ucHVzaChkKTtcbiAgICBkb21haW4uc29ydChhc2NlbmRpbmcpO1xuICAgIHJldHVybiByZXNjYWxlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocmFuZ2UgPSBBcnJheS5mcm9tKF8pLCByZXNjYWxlKCkpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLnF1YW50aWxlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aHJlc2hvbGRzLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUuY29weSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBxdWFudGlsZSgpXG4gICAgICAgIC5kb21haW4oZG9tYWluKVxuICAgICAgICAucmFuZ2UocmFuZ2UpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/quantile.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/quantize.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/quantize.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ quantize)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[(0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_1__.initRange.apply((0,_linear_js__WEBPACK_IMPORTED_MODULE_2__.linearish)(scale), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9xdWFudGl6ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdDO0FBQ007QUFDRjs7QUFFckI7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsb0RBQU07QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxxREFBZSxDQUFDLHFEQUFTO0FBQ2xDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcXVhbnRpemUuanM/OTYzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jpc2VjdH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2xpbmVhcmlzaH0gZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFudGl6ZSgpIHtcbiAgdmFyIHgwID0gMCxcbiAgICAgIHgxID0gMSxcbiAgICAgIG4gPSAxLFxuICAgICAgZG9tYWluID0gWzAuNV0sXG4gICAgICByYW5nZSA9IFswLCAxXSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiB4ICE9IG51bGwgJiYgeCA8PSB4ID8gcmFuZ2VbYmlzZWN0KGRvbWFpbiwgeCwgMCwgbildIDogdW5rbm93bjtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2NhbGUoKSB7XG4gICAgdmFyIGkgPSAtMTtcbiAgICBkb21haW4gPSBuZXcgQXJyYXkobik7XG4gICAgd2hpbGUgKCsraSA8IG4pIGRvbWFpbltpXSA9ICgoaSArIDEpICogeDEgLSAoaSAtIG4pICogeDApIC8gKG4gKyAxKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoW3gwLCB4MV0gPSBfLCB4MCA9ICt4MCwgeDEgPSAreDEsIHJlc2NhbGUoKSkgOiBbeDAsIHgxXTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChuID0gKHJhbmdlID0gQXJyYXkuZnJvbShfKSkubGVuZ3RoIC0gMSwgcmVzY2FsZSgpKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUuaW52ZXJ0RXh0ZW50ID0gZnVuY3Rpb24oeSkge1xuICAgIHZhciBpID0gcmFuZ2UuaW5kZXhPZih5KTtcbiAgICByZXR1cm4gaSA8IDAgPyBbTmFOLCBOYU5dXG4gICAgICAgIDogaSA8IDEgPyBbeDAsIGRvbWFpblswXV1cbiAgICAgICAgOiBpID49IG4gPyBbZG9tYWluW24gLSAxXSwgeDFdXG4gICAgICAgIDogW2RvbWFpbltpIC0gMV0sIGRvbWFpbltpXV07XG4gIH07XG5cbiAgc2NhbGUudW5rbm93biA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh1bmtub3duID0gXywgc2NhbGUpIDogc2NhbGU7XG4gIH07XG5cbiAgc2NhbGUudGhyZXNob2xkcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkb21haW4uc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHF1YW50aXplKClcbiAgICAgICAgLmRvbWFpbihbeDAsIHgxXSlcbiAgICAgICAgLnJhbmdlKHJhbmdlKVxuICAgICAgICAudW5rbm93bih1bmtub3duKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdFJhbmdlLmFwcGx5KGxpbmVhcmlzaChzY2FsZSksIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/quantize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/radial.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/radial.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ radial)\n/* harmony export */ });\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number.js */ \"../../../node_modules/d3-scale/src/number.js\");\n\n\n\n\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nfunction radial() {\n var squared = (0,_continuous_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, _number_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n _init_js__WEBPACK_IMPORTED_MODULE_2__.initRange.apply(scale, arguments);\n\n return (0,_linear_js__WEBPACK_IMPORTED_MODULE_3__.linearish)(scale);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9yYWRpYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBeUM7QUFDTDtBQUNFO0FBQ0w7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZixnQkFBZ0IsMERBQVU7QUFDMUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvRUFBb0Usa0RBQU07QUFDMUU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLHFEQUFlOztBQUVqQixTQUFTLHFEQUFTO0FBQ2xCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvcmFkaWFsLmpzPzZmYWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRpbnVvdXMgZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyLmpzXCI7XG5cbmZ1bmN0aW9uIHNxdWFyZSh4KSB7XG4gIHJldHVybiBNYXRoLnNpZ24oeCkgKiB4ICogeDtcbn1cblxuZnVuY3Rpb24gdW5zcXVhcmUoeCkge1xuICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5zcXJ0KE1hdGguYWJzKHgpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmFkaWFsKCkge1xuICB2YXIgc3F1YXJlZCA9IGNvbnRpbnVvdXMoKSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgcm91bmQgPSBmYWxzZSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHZhciB5ID0gdW5zcXVhcmUoc3F1YXJlZCh4KSk7XG4gICAgcmV0dXJuIGlzTmFOKHkpID8gdW5rbm93biA6IHJvdW5kID8gTWF0aC5yb3VuZCh5KSA6IHk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHNxdWFyZWQuaW52ZXJ0KHNxdWFyZSh5KSk7XG4gIH07XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuZG9tYWluKF8pLCBzY2FsZSkgOiBzcXVhcmVkLmRvbWFpbigpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQucmFuZ2UoKHJhbmdlID0gQXJyYXkuZnJvbShfLCBudW1iZXIpKS5tYXAoc3F1YXJlKSksIHNjYWxlKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gc2NhbGUucmFuZ2UoXykucm91bmQodHJ1ZSk7XG4gIH07XG5cbiAgc2NhbGUucm91bmQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocm91bmQgPSAhIV8sIHNjYWxlKSA6IHJvdW5kO1xuICB9O1xuXG4gIHNjYWxlLmNsYW1wID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNxdWFyZWQuY2xhbXAoXyksIHNjYWxlKSA6IHNxdWFyZWQuY2xhbXAoKTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gcmFkaWFsKHNxdWFyZWQuZG9tYWluKCksIHJhbmdlKVxuICAgICAgICAucm91bmQocm91bmQpXG4gICAgICAgIC5jbGFtcChzcXVhcmVkLmNsYW1wKCkpXG4gICAgICAgIC51bmtub3duKHVua25vd24pO1xuICB9O1xuXG4gIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcblxuICByZXR1cm4gbGluZWFyaXNoKHNjYWxlKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/radial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/sequential.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-scale/src/sequential.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"copy\": () => (/* binding */ copy),\n/* harmony export */ \"default\": () => (/* binding */ sequential),\n/* harmony export */ \"sequentialLog\": () => (/* binding */ sequentialLog),\n/* harmony export */ \"sequentialPow\": () => (/* binding */ sequentialPow),\n/* harmony export */ \"sequentialSqrt\": () => (/* binding */ sequentialSqrt),\n/* harmony export */ \"sequentialSymlog\": () => (/* binding */ sequentialSymlog)\n/* harmony export */ });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/value.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/round.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _log_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./log.js */ \"../../../node_modules/d3-scale/src/log.js\");\n/* harmony import */ var _symlog_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symlog.js */ \"../../../node_modules/d3-scale/src/symlog.js\");\n/* harmony import */ var _pow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pow.js */ \"../../../node_modules/d3-scale/src/pow.js\");\n\n\n\n\n\n\n\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n scale.rangeRound = range(d3_interpolate__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nfunction sequential() {\n var scale = (0,_linear_js__WEBPACK_IMPORTED_MODULE_3__.linearish)(transformer()(_continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_4__.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialLog() {\n var scale = (0,_log_js__WEBPACK_IMPORTED_MODULE_5__.loggish)(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_4__.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSymlog() {\n var scale = (0,_symlog_js__WEBPACK_IMPORTED_MODULE_6__.symlogish)(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_4__.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialPow() {\n var scale = (0,_pow_js__WEBPACK_IMPORTED_MODULE_7__.powish)(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_4__.initInterpolator.apply(scale, arguments);\n}\n\nfunction sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTZEO0FBQ3BCO0FBQ0U7QUFDTDtBQUNMO0FBQ0s7QUFDTjs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQVE7QUFDN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQixzREFBVzs7QUFFakMsMkJBQTJCLHNEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZixjQUFjLHFEQUFTLGVBQWUsb0RBQVE7O0FBRTlDO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDREQUFzQjtBQUMvQjs7QUFFTztBQUNQLGNBQWMsZ0RBQU87O0FBRXJCO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDREQUFzQjtBQUMvQjs7QUFFTztBQUNQLGNBQWMscURBQVM7O0FBRXZCO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDREQUFzQjtBQUMvQjs7QUFFTztBQUNQLGNBQWMsK0NBQU07O0FBRXBCO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDREQUFzQjtBQUMvQjs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsLmpzP2I0OTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbnRlcnBvbGF0ZSwgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2lkZW50aXR5fSBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRJbnRlcnBvbGF0b3J9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCB7bG9nZ2lzaH0gZnJvbSBcIi4vbG9nLmpzXCI7XG5pbXBvcnQge3N5bWxvZ2lzaH0gZnJvbSBcIi4vc3ltbG9nLmpzXCI7XG5pbXBvcnQge3Bvd2lzaH0gZnJvbSBcIi4vcG93LmpzXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybWVyKCkge1xuICB2YXIgeDAgPSAwLFxuICAgICAgeDEgPSAxLFxuICAgICAgdDAsXG4gICAgICB0MSxcbiAgICAgIGsxMCxcbiAgICAgIHRyYW5zZm9ybSxcbiAgICAgIGludGVycG9sYXRvciA9IGlkZW50aXR5LFxuICAgICAgY2xhbXAgPSBmYWxzZSxcbiAgICAgIHVua25vd247XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiB4ID09IG51bGwgfHwgaXNOYU4oeCA9ICt4KSA/IHVua25vd24gOiBpbnRlcnBvbGF0b3IoazEwID09PSAwID8gMC41IDogKHggPSAodHJhbnNmb3JtKHgpIC0gdDApICogazEwLCBjbGFtcCA/IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIHgpKSA6IHgpKTtcbiAgfVxuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChbeDAsIHgxXSA9IF8sIHQwID0gdHJhbnNmb3JtKHgwID0gK3gwKSwgdDEgPSB0cmFuc2Zvcm0oeDEgPSAreDEpLCBrMTAgPSB0MCA9PT0gdDEgPyAwIDogMSAvICh0MSAtIHQwKSwgc2NhbGUpIDogW3gwLCB4MV07XG4gIH07XG5cbiAgc2NhbGUuY2xhbXAgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY2xhbXAgPSAhIV8sIHNjYWxlKSA6IGNsYW1wO1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRvciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbnRlcnBvbGF0b3IgPSBfLCBzY2FsZSkgOiBpbnRlcnBvbGF0b3I7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmFuZ2UoaW50ZXJwb2xhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oXykge1xuICAgICAgdmFyIHIwLCByMTtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKFtyMCwgcjFdID0gXywgaW50ZXJwb2xhdG9yID0gaW50ZXJwb2xhdGUocjAsIHIxKSwgc2NhbGUpIDogW2ludGVycG9sYXRvcigwKSwgaW50ZXJwb2xhdG9yKDEpXTtcbiAgICB9O1xuICB9XG5cbiAgc2NhbGUucmFuZ2UgPSByYW5nZShpbnRlcnBvbGF0ZSk7XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IHJhbmdlKGludGVycG9sYXRlUm91bmQpO1xuXG4gIHNjYWxlLnVua25vd24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodW5rbm93biA9IF8sIHNjYWxlKSA6IHVua25vd247XG4gIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0cmFuc2Zvcm0gPSB0LCB0MCA9IHQoeDApLCB0MSA9IHQoeDEpLCBrMTAgPSB0MCA9PT0gdDEgPyAwIDogMSAvICh0MSAtIHQwKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KHNvdXJjZSwgdGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXRcbiAgICAgIC5kb21haW4oc291cmNlLmRvbWFpbigpKVxuICAgICAgLmludGVycG9sYXRvcihzb3VyY2UuaW50ZXJwb2xhdG9yKCkpXG4gICAgICAuY2xhbXAoc291cmNlLmNsYW1wKCkpXG4gICAgICAudW5rbm93bihzb3VyY2UudW5rbm93bigpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2VxdWVudGlhbCgpIHtcbiAgdmFyIHNjYWxlID0gbGluZWFyaXNoKHRyYW5zZm9ybWVyKCkoaWRlbnRpdHkpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHNlcXVlbnRpYWwoKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRJbnRlcnBvbGF0b3IuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW50aWFsTG9nKCkge1xuICB2YXIgc2NhbGUgPSBsb2dnaXNoKHRyYW5zZm9ybWVyKCkpLmRvbWFpbihbMSwgMTBdKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHNlcXVlbnRpYWxMb2coKSkuYmFzZShzY2FsZS5iYXNlKCkpO1xuICB9O1xuXG4gIHJldHVybiBpbml0SW50ZXJwb2xhdG9yLmFwcGx5KHNjYWxlLCBhcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVudGlhbFN5bWxvZygpIHtcbiAgdmFyIHNjYWxlID0gc3ltbG9naXNoKHRyYW5zZm9ybWVyKCkpO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY29weShzY2FsZSwgc2VxdWVudGlhbFN5bWxvZygpKS5jb25zdGFudChzY2FsZS5jb25zdGFudCgpKTtcbiAgfTtcblxuICByZXR1cm4gaW5pdEludGVycG9sYXRvci5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlbnRpYWxQb3coKSB7XG4gIHZhciBzY2FsZSA9IHBvd2lzaCh0cmFuc2Zvcm1lcigpKTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIHNlcXVlbnRpYWxQb3coKSkuZXhwb25lbnQoc2NhbGUuZXhwb25lbnQoKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRJbnRlcnBvbGF0b3IuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW50aWFsU3FydCgpIHtcbiAgcmV0dXJuIHNlcXVlbnRpYWxQb3cuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5leHBvbmVudCgwLjUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/sequential.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/sequentialQuantile.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-scale/src/sequentialQuantile.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ sequentialQuantile)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ascending.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/quantile.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction sequentialQuantile() {\n var domain = [],\n interpolator = _continuous_js__WEBPACK_IMPORTED_MODULE_0__.identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator(((0,d3_array__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => (0,d3_array__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_4__.initInterpolator.apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsUXVhbnRpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXFEO0FBQ1o7QUFDRTs7QUFFNUI7QUFDZjtBQUNBLHFCQUFxQixvREFBUTs7QUFFN0I7QUFDQSwwREFBMEQsb0RBQU07QUFDaEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQVM7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLGNBQWMsWUFBWSxvREFBUTtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyw0REFBc0I7QUFDL0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zZXF1ZW50aWFsUXVhbnRpbGUuanM/YjYzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FzY2VuZGluZywgYmlzZWN0LCBxdWFudGlsZX0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2lkZW50aXR5fSBmcm9tIFwiLi9jb250aW51b3VzLmpzXCI7XG5pbXBvcnQge2luaXRJbnRlcnBvbGF0b3J9IGZyb20gXCIuL2luaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2VxdWVudGlhbFF1YW50aWxlKCkge1xuICB2YXIgZG9tYWluID0gW10sXG4gICAgICBpbnRlcnBvbGF0b3IgPSBpZGVudGl0eTtcblxuICBmdW5jdGlvbiBzY2FsZSh4KSB7XG4gICAgaWYgKHggIT0gbnVsbCAmJiAhaXNOYU4oeCA9ICt4KSkgcmV0dXJuIGludGVycG9sYXRvcigoYmlzZWN0KGRvbWFpbiwgeCwgMSkgLSAxKSAvIChkb21haW4ubGVuZ3RoIC0gMSkpO1xuICB9XG5cbiAgc2NhbGUuZG9tYWluID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRvbWFpbi5zbGljZSgpO1xuICAgIGRvbWFpbiA9IFtdO1xuICAgIGZvciAobGV0IGQgb2YgXykgaWYgKGQgIT0gbnVsbCAmJiAhaXNOYU4oZCA9ICtkKSkgZG9tYWluLnB1c2goZCk7XG4gICAgZG9tYWluLnNvcnQoYXNjZW5kaW5nKTtcbiAgICByZXR1cm4gc2NhbGU7XG4gIH07XG5cbiAgc2NhbGUuaW50ZXJwb2xhdG9yID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRvciA9IF8sIHNjYWxlKSA6IGludGVycG9sYXRvcjtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkb21haW4ubWFwKChkLCBpKSA9PiBpbnRlcnBvbGF0b3IoaSAvIChkb21haW4ubGVuZ3RoIC0gMSkpKTtcbiAgfTtcblxuICBzY2FsZS5xdWFudGlsZXMgPSBmdW5jdGlvbihuKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oe2xlbmd0aDogbiArIDF9LCAoXywgaSkgPT4gcXVhbnRpbGUoZG9tYWluLCBpIC8gbikpO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gc2VxdWVudGlhbFF1YW50aWxlKGludGVycG9sYXRvcikuZG9tYWluKGRvbWFpbik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRJbnRlcnBvbGF0b3IuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/sequentialQuantile.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/symlog.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/symlog.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ symlog),\n/* harmony export */ \"symlogish\": () => (/* binding */ symlogish)\n/* harmony export */ });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-scale/src/linear.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nfunction symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return (0,_linear_js__WEBPACK_IMPORTED_MODULE_0__.linearish)(scale);\n}\n\nfunction symlog() {\n var scale = symlogish((0,_continuous_js__WEBPACK_IMPORTED_MODULE_1__.transformer)());\n\n scale.copy = function() {\n return (0,_continuous_js__WEBPACK_IMPORTED_MODULE_1__.copy)(scale, symlog()).constant(scale.constant());\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_2__.initRange.apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9zeW1sb2cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0M7QUFDWTtBQUNkOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxxREFBUztBQUNsQjs7QUFFZTtBQUNmLHdCQUF3QiwyREFBVzs7QUFFbkM7QUFDQSxXQUFXLG9EQUFJO0FBQ2Y7O0FBRUEsU0FBUyxxREFBZTtBQUN4QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3N5bWxvZy5qcz8yNWE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bGluZWFyaXNofSBmcm9tIFwiLi9saW5lYXIuanNcIjtcbmltcG9ydCB7Y29weSwgdHJhbnNmb3JtZXJ9IGZyb20gXCIuL2NvbnRpbnVvdXMuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVN5bWxvZyhjKSB7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIE1hdGguc2lnbih4KSAqIE1hdGgubG9nMXAoTWF0aC5hYnMoeCAvIGMpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3ltZXhwKGMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gTWF0aC5zaWduKHgpICogTWF0aC5leHBtMShNYXRoLmFicyh4KSkgKiBjO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3ltbG9naXNoKHRyYW5zZm9ybSkge1xuICB2YXIgYyA9IDEsIHNjYWxlID0gdHJhbnNmb3JtKHRyYW5zZm9ybVN5bWxvZyhjKSwgdHJhbnNmb3JtU3ltZXhwKGMpKTtcblxuICBzY2FsZS5jb25zdGFudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHRyYW5zZm9ybSh0cmFuc2Zvcm1TeW1sb2coYyA9ICtfKSwgdHJhbnNmb3JtU3ltZXhwKGMpKSA6IGM7XG4gIH07XG5cbiAgcmV0dXJuIGxpbmVhcmlzaChzY2FsZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN5bWxvZygpIHtcbiAgdmFyIHNjYWxlID0gc3ltbG9naXNoKHRyYW5zZm9ybWVyKCkpO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY29weShzY2FsZSwgc3ltbG9nKCkpLmNvbnN0YW50KHNjYWxlLmNvbnN0YW50KCkpO1xuICB9O1xuXG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoc2NhbGUsIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/symlog.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/threshold.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-scale/src/threshold.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ threshold)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisect.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\nfunction threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[(0,d3_array__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return _init_js__WEBPACK_IMPORTED_MODULE_1__.initRange.apply(scale, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aHJlc2hvbGQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdDO0FBQ0k7O0FBRXJCO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsb0RBQU07QUFDN0M7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMscURBQWU7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aHJlc2hvbGQuanM/YTllZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jpc2VjdH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2luaXRSYW5nZX0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aHJlc2hvbGQoKSB7XG4gIHZhciBkb21haW4gPSBbMC41XSxcbiAgICAgIHJhbmdlID0gWzAsIDFdLFxuICAgICAgdW5rbm93bixcbiAgICAgIG4gPSAxO1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHgpIHtcbiAgICByZXR1cm4geCAhPSBudWxsICYmIHggPD0geCA/IHJhbmdlW2Jpc2VjdChkb21haW4sIHgsIDAsIG4pXSA6IHVua25vd247XG4gIH1cblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluID0gQXJyYXkuZnJvbShfKSwgbiA9IE1hdGgubWluKGRvbWFpbi5sZW5ndGgsIHJhbmdlLmxlbmd0aCAtIDEpLCBzY2FsZSkgOiBkb21haW4uc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5yYW5nZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChyYW5nZSA9IEFycmF5LmZyb20oXyksIG4gPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGggLSAxKSwgc2NhbGUpIDogcmFuZ2Uuc2xpY2UoKTtcbiAgfTtcblxuICBzY2FsZS5pbnZlcnRFeHRlbnQgPSBmdW5jdGlvbih5KSB7XG4gICAgdmFyIGkgPSByYW5nZS5pbmRleE9mKHkpO1xuICAgIHJldHVybiBbZG9tYWluW2kgLSAxXSwgZG9tYWluW2ldXTtcbiAgfTtcblxuICBzY2FsZS51bmtub3duID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHVua25vd24gPSBfLCBzY2FsZSkgOiB1bmtub3duO1xuICB9O1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhyZXNob2xkKClcbiAgICAgICAgLmRvbWFpbihkb21haW4pXG4gICAgICAgIC5yYW5nZShyYW5nZSlcbiAgICAgICAgLnVua25vd24odW5rbm93bik7XG4gIH07XG5cbiAgcmV0dXJuIGluaXRSYW5nZS5hcHBseShzY2FsZSwgYXJndW1lbnRzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/threshold.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/tickFormat.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-scale/src/tickFormat.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ tickFormat)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/formatSpecifier.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/precisionPrefix.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/defaultLocale.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/precisionRound.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/precisionFixed.js\");\n\n\n\nfunction tickFormat(start, stop, count, specifier) {\n var step = (0,d3_array__WEBPACK_IMPORTED_MODULE_0__.tickStep)(start, stop, count),\n precision;\n specifier = (0,d3_format__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = (0,d3_format__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(step, value))) specifier.precision = precision;\n return (0,d3_format__WEBPACK_IMPORTED_MODULE_3__.formatPrefix)(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = (0,d3_format__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = (0,d3_format__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return (0,d3_format__WEBPACK_IMPORTED_MODULE_3__.format)(specifier);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aWNrRm9ybWF0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBa0M7QUFDK0U7O0FBRWxHO0FBQ2YsYUFBYSxrREFBUTtBQUNyQjtBQUNBLGNBQWMscURBQWU7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsNERBQTRELHFEQUFlO0FBQzNFLGFBQWEsdURBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELHFEQUFjO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELHFEQUFjO0FBQzFFO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaURBQU07QUFDZiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpY2tGb3JtYXQuanM/NWVmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpY2tTdGVwfSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7Zm9ybWF0LCBmb3JtYXRQcmVmaXgsIGZvcm1hdFNwZWNpZmllciwgcHJlY2lzaW9uRml4ZWQsIHByZWNpc2lvblByZWZpeCwgcHJlY2lzaW9uUm91bmR9IGZyb20gXCJkMy1mb3JtYXRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdGlja0Zvcm1hdChzdGFydCwgc3RvcCwgY291bnQsIHNwZWNpZmllcikge1xuICB2YXIgc3RlcCA9IHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCksXG4gICAgICBwcmVjaXNpb247XG4gIHNwZWNpZmllciA9IGZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIgPT0gbnVsbCA/IFwiLGZcIiA6IHNwZWNpZmllcik7XG4gIHN3aXRjaCAoc3BlY2lmaWVyLnR5cGUpIHtcbiAgICBjYXNlIFwic1wiOiB7XG4gICAgICB2YXIgdmFsdWUgPSBNYXRoLm1heChNYXRoLmFicyhzdGFydCksIE1hdGguYWJzKHN0b3ApKTtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblByZWZpeChzdGVwLCB2YWx1ZSkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICAgICAgcmV0dXJuIGZvcm1hdFByZWZpeChzcGVjaWZpZXIsIHZhbHVlKTtcbiAgICB9XG4gICAgY2FzZSBcIlwiOlxuICAgIGNhc2UgXCJlXCI6XG4gICAgY2FzZSBcImdcIjpcbiAgICBjYXNlIFwicFwiOlxuICAgIGNhc2UgXCJyXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvblJvdW5kKHN0ZXAsIE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb24gLSAoc3BlY2lmaWVyLnR5cGUgPT09IFwiZVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIFwiZlwiOlxuICAgIGNhc2UgXCIlXCI6IHtcbiAgICAgIGlmIChzcGVjaWZpZXIucHJlY2lzaW9uID09IG51bGwgJiYgIWlzTmFOKHByZWNpc2lvbiA9IHByZWNpc2lvbkZpeGVkKHN0ZXApKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCIlXCIpICogMjtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZm9ybWF0KHNwZWNpZmllcik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/tickFormat.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/time.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-scale/src/time.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"calendar\": () => (/* binding */ calendar),\n/* harmony export */ \"default\": () => (/* binding */ time)\n/* harmony export */ });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/ticks.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/year.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/month.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/week.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/day.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/hour.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/minute.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/second.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! d3-time-format */ \"../../../node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony import */ var _continuous_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./continuous.js */ \"../../../node_modules/d3-scale/src/continuous.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n/* harmony import */ var _nice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nice.js */ \"../../../node_modules/d3-scale/src/nice.js\");\n\n\n\n\n\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = (0,_continuous_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain((0,_nice_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return (0,_continuous_js__WEBPACK_IMPORTED_MODULE_0__.copy)(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nfunction time() {\n return _init_js__WEBPACK_IMPORTED_MODULE_2__.initRange.apply(calendar(d3_time__WEBPACK_IMPORTED_MODULE_3__.timeTicks, d3_time__WEBPACK_IMPORTED_MODULE_3__.timeTickInterval, d3_time__WEBPACK_IMPORTED_MODULE_4__.timeYear, d3_time__WEBPACK_IMPORTED_MODULE_5__.timeMonth, d3_time__WEBPACK_IMPORTED_MODULE_6__.timeSunday, d3_time__WEBPACK_IMPORTED_MODULE_7__.timeDay, d3_time__WEBPACK_IMPORTED_MODULE_8__.timeHour, d3_time__WEBPACK_IMPORTED_MODULE_9__.timeMinute, d3_time__WEBPACK_IMPORTED_MODULE_10__.second, d3_time_format__WEBPACK_IMPORTED_MODULE_11__.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy90aW1lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThIO0FBQ3BGO0FBQ087QUFDYjtBQUNQOztBQUU3QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1AsY0FBYywwREFBVTtBQUN4QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixvREFBSTtBQUNqQzs7QUFFQTtBQUNBLFdBQVcsb0RBQUk7QUFDZjs7QUFFQTtBQUNBOztBQUVlO0FBQ2YsU0FBUyxxREFBZSxVQUFVLDhDQUFTLEVBQUUscURBQWdCLEVBQUUsNkNBQVEsRUFBRSw4Q0FBUyxFQUFFLCtDQUFRLEVBQUUsNENBQU8sRUFBRSw2Q0FBUSxFQUFFLCtDQUFVLEVBQUUsNENBQVUsRUFBRSx1REFBVTtBQUNuSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3RpbWUuanM/M2JiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpbWVZZWFyLCB0aW1lTW9udGgsIHRpbWVXZWVrLCB0aW1lRGF5LCB0aW1lSG91ciwgdGltZU1pbnV0ZSwgdGltZVNlY29uZCwgdGltZVRpY2tzLCB0aW1lVGlja0ludGVydmFsfSBmcm9tIFwiZDMtdGltZVwiO1xuaW1wb3J0IHt0aW1lRm9ybWF0fSBmcm9tIFwiZDMtdGltZS1mb3JtYXRcIjtcbmltcG9ydCBjb250aW51b3VzLCB7Y29weX0gZnJvbSBcIi4vY29udGludW91cy5qc1wiO1xuaW1wb3J0IHtpbml0UmFuZ2V9IGZyb20gXCIuL2luaXQuanNcIjtcbmltcG9ydCBuaWNlIGZyb20gXCIuL25pY2UuanNcIjtcblxuZnVuY3Rpb24gZGF0ZSh0KSB7XG4gIHJldHVybiBuZXcgRGF0ZSh0KTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyKHQpIHtcbiAgcmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlID8gK3QgOiArbmV3IERhdGUoK3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsZW5kYXIodGlja3MsIHRpY2tJbnRlcnZhbCwgeWVhciwgbW9udGgsIHdlZWssIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZvcm1hdCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKCksXG4gICAgICBpbnZlcnQgPSBzY2FsZS5pbnZlcnQsXG4gICAgICBkb21haW4gPSBzY2FsZS5kb21haW47XG5cbiAgdmFyIGZvcm1hdE1pbGxpc2Vjb25kID0gZm9ybWF0KFwiLiVMXCIpLFxuICAgICAgZm9ybWF0U2Vjb25kID0gZm9ybWF0KFwiOiVTXCIpLFxuICAgICAgZm9ybWF0TWludXRlID0gZm9ybWF0KFwiJUk6JU1cIiksXG4gICAgICBmb3JtYXRIb3VyID0gZm9ybWF0KFwiJUkgJXBcIiksXG4gICAgICBmb3JtYXREYXkgPSBmb3JtYXQoXCIlYSAlZFwiKSxcbiAgICAgIGZvcm1hdFdlZWsgPSBmb3JtYXQoXCIlYiAlZFwiKSxcbiAgICAgIGZvcm1hdE1vbnRoID0gZm9ybWF0KFwiJUJcIiksXG4gICAgICBmb3JtYXRZZWFyID0gZm9ybWF0KFwiJVlcIik7XG5cbiAgZnVuY3Rpb24gdGlja0Zvcm1hdChkYXRlKSB7XG4gICAgcmV0dXJuIChzZWNvbmQoZGF0ZSkgPCBkYXRlID8gZm9ybWF0TWlsbGlzZWNvbmRcbiAgICAgICAgOiBtaW51dGUoZGF0ZSkgPCBkYXRlID8gZm9ybWF0U2Vjb25kXG4gICAgICAgIDogaG91cihkYXRlKSA8IGRhdGUgPyBmb3JtYXRNaW51dGVcbiAgICAgICAgOiBkYXkoZGF0ZSkgPCBkYXRlID8gZm9ybWF0SG91clxuICAgICAgICA6IG1vbnRoKGRhdGUpIDwgZGF0ZSA/ICh3ZWVrKGRhdGUpIDwgZGF0ZSA/IGZvcm1hdERheSA6IGZvcm1hdFdlZWspXG4gICAgICAgIDogeWVhcihkYXRlKSA8IGRhdGUgPyBmb3JtYXRNb250aFxuICAgICAgICA6IGZvcm1hdFllYXIpKGRhdGUpO1xuICB9XG5cbiAgc2NhbGUuaW52ZXJ0ID0gZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpbnZlcnQoeSkpO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGRvbWFpbihBcnJheS5mcm9tKF8sIG51bWJlcikpIDogZG9tYWluKCkubWFwKGRhdGUpO1xuICB9O1xuXG4gIHNjYWxlLnRpY2tzID0gZnVuY3Rpb24oaW50ZXJ2YWwpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIHJldHVybiB0aWNrcyhkWzBdLCBkW2QubGVuZ3RoIC0gMV0sIGludGVydmFsID09IG51bGwgPyAxMCA6IGludGVydmFsKTtcbiAgfTtcblxuICBzY2FsZS50aWNrRm9ybWF0ID0gZnVuY3Rpb24oY291bnQsIHNwZWNpZmllcikge1xuICAgIHJldHVybiBzcGVjaWZpZXIgPT0gbnVsbCA/IHRpY2tGb3JtYXQgOiBmb3JtYXQoc3BlY2lmaWVyKTtcbiAgfTtcblxuICBzY2FsZS5uaWNlID0gZnVuY3Rpb24oaW50ZXJ2YWwpIHtcbiAgICB2YXIgZCA9IGRvbWFpbigpO1xuICAgIGlmICghaW50ZXJ2YWwgfHwgdHlwZW9mIGludGVydmFsLnJhbmdlICE9PSBcImZ1bmN0aW9uXCIpIGludGVydmFsID0gdGlja0ludGVydmFsKGRbMF0sIGRbZC5sZW5ndGggLSAxXSwgaW50ZXJ2YWwgPT0gbnVsbCA/IDEwIDogaW50ZXJ2YWwpO1xuICAgIHJldHVybiBpbnRlcnZhbCA/IGRvbWFpbihuaWNlKGQsIGludGVydmFsKSkgOiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGNhbGVuZGFyKHRpY2tzLCB0aWNrSW50ZXJ2YWwsIHllYXIsIG1vbnRoLCB3ZWVrLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmb3JtYXQpKTtcbiAgfTtcblxuICByZXR1cm4gc2NhbGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRpbWUoKSB7XG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoY2FsZW5kYXIodGltZVRpY2tzLCB0aW1lVGlja0ludGVydmFsLCB0aW1lWWVhciwgdGltZU1vbnRoLCB0aW1lV2VlaywgdGltZURheSwgdGltZUhvdXIsIHRpbWVNaW51dGUsIHRpbWVTZWNvbmQsIHRpbWVGb3JtYXQpLmRvbWFpbihbbmV3IERhdGUoMjAwMCwgMCwgMSksIG5ldyBEYXRlKDIwMDAsIDAsIDIpXSksIGFyZ3VtZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/time.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-scale/src/utcTime.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-scale/src/utcTime.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ utcTime)\n/* harmony export */ });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/ticks.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/year.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/month.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/week.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/day.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/hour.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/minute.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/second.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! d3-time-format */ \"../../../node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony import */ var _time_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./time.js */ \"../../../node_modules/d3-scale/src/time.js\");\n/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init.js */ \"../../../node_modules/d3-scale/src/init.js\");\n\n\n\n\n\nfunction utcTime() {\n return _init_js__WEBPACK_IMPORTED_MODULE_0__.initRange.apply((0,_time_js__WEBPACK_IMPORTED_MODULE_1__.calendar)(d3_time__WEBPACK_IMPORTED_MODULE_2__.utcTicks, d3_time__WEBPACK_IMPORTED_MODULE_2__.utcTickInterval, d3_time__WEBPACK_IMPORTED_MODULE_3__.utcYear, d3_time__WEBPACK_IMPORTED_MODULE_4__.utcMonth, d3_time__WEBPACK_IMPORTED_MODULE_5__.utcSunday, d3_time__WEBPACK_IMPORTED_MODULE_6__.utcDay, d3_time__WEBPACK_IMPORTED_MODULE_7__.utcHour, d3_time__WEBPACK_IMPORTED_MODULE_8__.utcMinute, d3_time__WEBPACK_IMPORTED_MODULE_9__.second, d3_time_format__WEBPACK_IMPORTED_MODULE_10__.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy91dGNUaW1lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFxSDtBQUM1RTtBQUNOO0FBQ0M7O0FBRXJCO0FBQ2YsU0FBUyxxREFBZSxDQUFDLGtEQUFRLENBQUMsNkNBQVEsRUFBRSxvREFBZSxFQUFFLDRDQUFPLEVBQUUsNkNBQVEsRUFBRSw4Q0FBTyxFQUFFLDJDQUFNLEVBQUUsNENBQU8sRUFBRSw4Q0FBUyxFQUFFLDJDQUFTLEVBQUUsc0RBQVM7QUFDekkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy91dGNUaW1lLmpzPzUzMzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGNZZWFyLCB1dGNNb250aCwgdXRjV2VlaywgdXRjRGF5LCB1dGNIb3VyLCB1dGNNaW51dGUsIHV0Y1NlY29uZCwgdXRjVGlja3MsIHV0Y1RpY2tJbnRlcnZhbH0gZnJvbSBcImQzLXRpbWVcIjtcbmltcG9ydCB7dXRjRm9ybWF0fSBmcm9tIFwiZDMtdGltZS1mb3JtYXRcIjtcbmltcG9ydCB7Y2FsZW5kYXJ9IGZyb20gXCIuL3RpbWUuanNcIjtcbmltcG9ydCB7aW5pdFJhbmdlfSBmcm9tIFwiLi9pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHV0Y1RpbWUoKSB7XG4gIHJldHVybiBpbml0UmFuZ2UuYXBwbHkoY2FsZW5kYXIodXRjVGlja3MsIHV0Y1RpY2tJbnRlcnZhbCwgdXRjWWVhciwgdXRjTW9udGgsIHV0Y1dlZWssIHV0Y0RheSwgdXRjSG91ciwgdXRjTWludXRlLCB1dGNTZWNvbmQsIHV0Y0Zvcm1hdCkuZG9tYWluKFtEYXRlLlVUQygyMDAwLCAwLCAxKSwgRGF0ZS5VVEMoMjAwMCwgMCwgMildKSwgYXJndW1lbnRzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-scale/src/utcTime.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/array.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-selection/src/array.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ array)\n/* harmony export */ });\n// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nfunction array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvYXJyYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ2U7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2FycmF5LmpzP2QyOWEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gR2l2ZW4gc29tZXRoaW5nIGFycmF5IGxpa2UgKG9yIG51bGwpLCByZXR1cm5zIHNvbWV0aGluZyB0aGF0IGlzIHN0cmljdGx5IGFuXG4vLyBhcnJheS4gVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IGFycmF5LWxpa2Ugb2JqZWN0cyBwYXNzZWQgdG8gZDMuc2VsZWN0QWxsXG4vLyBvciBzZWxlY3Rpb24uc2VsZWN0QWxsIGFyZSBjb252ZXJ0ZWQgaW50byBwcm9wZXIgYXJyYXlzIHdoZW4gY3JlYXRpbmcgYVxuLy8gc2VsZWN0aW9uOyB3ZSBkb27igJl0IGV2ZXIgd2FudCB0byBjcmVhdGUgYSBzZWxlY3Rpb24gYmFja2VkIGJ5IGEgbGl2ZVxuLy8gSFRNTENvbGxlY3Rpb24gb3IgTm9kZUxpc3QuIEhvd2V2ZXIsIG5vdGUgdGhhdCBzZWxlY3Rpb24uc2VsZWN0QWxsIHdpbGwgdXNlIGFcbi8vIHN0YXRpYyBOb2RlTGlzdCBhcyBhIGdyb3VwLCBzaW5jZSBpdCBzYWZlbHkgZGVyaXZlZCBmcm9tIHF1ZXJ5U2VsZWN0b3JBbGwuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcnJheSh4KSB7XG4gIHJldHVybiB4ID09IG51bGwgPyBbXSA6IEFycmF5LmlzQXJyYXkoeCkgPyB4IDogQXJyYXkuZnJvbSh4KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/constant.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/constant.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY29uc3RhbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NvbnN0YW50LmpzPzVhMTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/create.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/create.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _creator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./creator.js */ \"../../../node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _select_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select.js */ \"../../../node_modules/d3-selection/src/select.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n return (0,_select_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_creator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(name).call(document.documentElement));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFtQztBQUNGOztBQUVqQyw2QkFBZSxvQ0FBUztBQUN4QixTQUFTLHNEQUFNLENBQUMsdURBQU87QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRlLmpzP2I3YmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4vY3JlYXRvci5qc1wiO1xuaW1wb3J0IHNlbGVjdCBmcm9tIFwiLi9zZWxlY3QuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gc2VsZWN0KGNyZWF0b3IobmFtZSkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/create.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/creator.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/creator.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _namespace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./namespace.js */ \"../../../node_modules/d3-selection/src/namespace.js\");\n/* harmony import */ var _namespaces_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespaces.js */ \"../../../node_modules/d3-selection/src/namespaces.js\");\n\n\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === _namespaces_js__WEBPACK_IMPORTED_MODULE_0__.xhtml && document.documentElement.namespaceURI === _namespaces_js__WEBPACK_IMPORTED_MODULE_0__.xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n var fullname = (0,_namespace_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvY3JlYXRvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBdUM7QUFDRDs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaURBQUssOENBQThDLGlEQUFLO0FBQzNFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEIsaUJBQWlCLHlEQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NyZWF0b3IuanM/NWM2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuL25hbWVzcGFjZS5qc1wiO1xuaW1wb3J0IHt4aHRtbH0gZnJvbSBcIi4vbmFtZXNwYWNlcy5qc1wiO1xuXG5mdW5jdGlvbiBjcmVhdG9ySW5oZXJpdChuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSB0aGlzLm93bmVyRG9jdW1lbnQsXG4gICAgICAgIHVyaSA9IHRoaXMubmFtZXNwYWNlVVJJO1xuICAgIHJldHVybiB1cmkgPT09IHhodG1sICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkkgPT09IHhodG1sXG4gICAgICAgID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKVxuICAgICAgICA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh1cmksIG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdG9yRml4ZWQoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuICByZXR1cm4gKGZ1bGxuYW1lLmxvY2FsXG4gICAgICA/IGNyZWF0b3JGaXhlZFxuICAgICAgOiBjcmVhdG9ySW5oZXJpdCkoZnVsbG5hbWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/creator.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/index.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-selection/src/index.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"create\": () => (/* reexport safe */ _create_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"creator\": () => (/* reexport safe */ _creator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"local\": () => (/* reexport safe */ _local_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"matcher\": () => (/* reexport safe */ _matcher_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"namespace\": () => (/* reexport safe */ _namespace_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"namespaces\": () => (/* reexport safe */ _namespaces_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"pointer\": () => (/* reexport safe */ _pointer_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"pointers\": () => (/* reexport safe */ _pointers_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ \"select\": () => (/* reexport safe */ _select_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"selectAll\": () => (/* reexport safe */ _selectAll_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"selection\": () => (/* reexport safe */ _selection_index_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"selector\": () => (/* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"selectorAll\": () => (/* reexport safe */ _selectorAll_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"style\": () => (/* reexport safe */ _selection_style_js__WEBPACK_IMPORTED_MODULE_13__.styleValue),\n/* harmony export */ \"window\": () => (/* reexport safe */ _window_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _create_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./create.js */ \"../../../node_modules/d3-selection/src/create.js\");\n/* harmony import */ var _creator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./creator.js */ \"../../../node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _local_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./local.js */ \"../../../node_modules/d3-selection/src/local.js\");\n/* harmony import */ var _matcher_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./matcher.js */ \"../../../node_modules/d3-selection/src/matcher.js\");\n/* harmony import */ var _namespace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./namespace.js */ \"../../../node_modules/d3-selection/src/namespace.js\");\n/* harmony import */ var _namespaces_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./namespaces.js */ \"../../../node_modules/d3-selection/src/namespaces.js\");\n/* harmony import */ var _pointer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointer.js */ \"../../../node_modules/d3-selection/src/pointer.js\");\n/* harmony import */ var _pointers_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./pointers.js */ \"../../../node_modules/d3-selection/src/pointers.js\");\n/* harmony import */ var _select_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./select.js */ \"../../../node_modules/d3-selection/src/select.js\");\n/* harmony import */ var _selectAll_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./selectAll.js */ \"../../../node_modules/d3-selection/src/selectAll.js\");\n/* harmony import */ var _selection_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./selection/index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./selector.js */ \"../../../node_modules/d3-selection/src/selector.js\");\n/* harmony import */ var _selectorAll_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./selectorAll.js */ \"../../../node_modules/d3-selection/src/selectorAll.js\");\n/* harmony import */ var _selection_style_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./selection/style.js */ \"../../../node_modules/d3-selection/src/selection/style.js\");\n/* harmony import */ var _window_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./window.js */ \"../../../node_modules/d3-selection/src/window.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThDO0FBQ0U7QUFDSjtBQUNJO0FBQ0k7QUFDRTtBQUNOO0FBQ0U7QUFDSjtBQUNNO0FBQ007QUFDUjtBQUNNO0FBQ0M7QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9pbmRleC5qcz8yMWE5Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBjcmVhdGV9IGZyb20gXCIuL2NyZWF0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNyZWF0b3J9IGZyb20gXCIuL2NyZWF0b3IuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsb2NhbH0gZnJvbSBcIi4vbG9jYWwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYXRjaGVyfSBmcm9tIFwiLi9tYXRjaGVyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgbmFtZXNwYWNlfSBmcm9tIFwiLi9uYW1lc3BhY2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBuYW1lc3BhY2VzfSBmcm9tIFwiLi9uYW1lc3BhY2VzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcG9pbnRlcn0gZnJvbSBcIi4vcG9pbnRlci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHBvaW50ZXJzfSBmcm9tIFwiLi9wb2ludGVycy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdH0gZnJvbSBcIi4vc2VsZWN0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc2VsZWN0QWxsfSBmcm9tIFwiLi9zZWxlY3RBbGwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZWxlY3Rpb259IGZyb20gXCIuL3NlbGVjdGlvbi9pbmRleC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdG9yfSBmcm9tIFwiLi9zZWxlY3Rvci5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNlbGVjdG9yQWxsfSBmcm9tIFwiLi9zZWxlY3RvckFsbC5qc1wiO1xuZXhwb3J0IHtzdHlsZVZhbHVlIGFzIHN0eWxlfSBmcm9tIFwiLi9zZWxlY3Rpb24vc3R5bGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3aW5kb3d9IGZyb20gXCIuL3dpbmRvdy5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/local.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/d3-selection/src/local.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ local)\n/* harmony export */ });\nvar nextId = 0;\n\nfunction local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbG9jYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUVlO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9sb2NhbC5qcz84MDM4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBuZXh0SWQgPSAwO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2NhbCgpIHtcbiAgcmV0dXJuIG5ldyBMb2NhbDtcbn1cblxuZnVuY3Rpb24gTG9jYWwoKSB7XG4gIHRoaXMuXyA9IFwiQFwiICsgKCsrbmV4dElkKS50b1N0cmluZygzNik7XG59XG5cbkxvY2FsLnByb3RvdHlwZSA9IGxvY2FsLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IExvY2FsLFxuICBnZXQ6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICB2YXIgaWQgPSB0aGlzLl87XG4gICAgd2hpbGUgKCEoaWQgaW4gbm9kZSkpIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm47XG4gICAgcmV0dXJuIG5vZGVbaWRdO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKG5vZGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIG5vZGVbdGhpcy5fXSA9IHZhbHVlO1xuICB9LFxuICByZW1vdmU6IGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5fIGluIG5vZGUgJiYgZGVsZXRlIG5vZGVbdGhpcy5fXTtcbiAgfSxcbiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl87XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/local.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/matcher.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/matcher.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"childMatcher\": () => (/* binding */ childMatcher),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nfunction childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbWF0Y2hlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbWF0Y2hlci5qcz8wZTlkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoaWxkTWF0Y2hlcihzZWxlY3Rvcikge1xuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBub2RlLm1hdGNoZXMoc2VsZWN0b3IpO1xuICB9O1xufVxuXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/matcher.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/namespace.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/namespace.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _namespaces_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./namespaces.js */ \"../../../node_modules/d3-selection/src/namespaces.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return _namespaces_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProperty(prefix) ? {space: _namespaces_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"][prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbmFtZXNwYWNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlDOztBQUV6Qyw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EsU0FBUyxxRUFBeUIsWUFBWSxPQUFPLHNEQUFVLHVCQUF1QixRQUFRO0FBQzlGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZS5qcz9kZjRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBuYW1lc3BhY2VzIGZyb20gXCIuL25hbWVzcGFjZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSkge1xuICB2YXIgcHJlZml4ID0gbmFtZSArPSBcIlwiLCBpID0gcHJlZml4LmluZGV4T2YoXCI6XCIpO1xuICBpZiAoaSA+PSAwICYmIChwcmVmaXggPSBuYW1lLnNsaWNlKDAsIGkpKSAhPT0gXCJ4bWxuc1wiKSBuYW1lID0gbmFtZS5zbGljZShpICsgMSk7XG4gIHJldHVybiBuYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByZWZpeCkgPyB7c3BhY2U6IG5hbWVzcGFjZXNbcHJlZml4XSwgbG9jYWw6IG5hbWV9IDogbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/namespace.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/namespaces.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/namespaces.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"xhtml\": () => (/* binding */ xhtml)\n/* harmony export */ });\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvbmFtZXNwYWNlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPOztBQUVQLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2VzLmpzPzY4OWMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciB4aHRtbCA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHN2ZzogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB4aHRtbDogeGh0bWwsXG4gIHhsaW5rOiBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcbiAgeG1sOiBcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zL1wiXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/namespaces.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/pointer.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/pointer.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _sourceEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent.js */ \"../../../node_modules/d3-selection/src/sourceEvent.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(event, node) {\n event = (0,_sourceEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvcG9pbnRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEyQzs7QUFFM0MsNkJBQWUsb0NBQVM7QUFDeEIsVUFBVSwyREFBVztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9wb2ludGVyLmpzP2YyYmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNvdXJjZUV2ZW50IGZyb20gXCIuL3NvdXJjZUV2ZW50LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGV2ZW50LCBub2RlKSB7XG4gIGV2ZW50ID0gc291cmNlRXZlbnQoZXZlbnQpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSBub2RlID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgaWYgKG5vZGUpIHtcbiAgICB2YXIgc3ZnID0gbm9kZS5vd25lclNWR0VsZW1lbnQgfHwgbm9kZTtcbiAgICBpZiAoc3ZnLmNyZWF0ZVNWR1BvaW50KSB7XG4gICAgICB2YXIgcG9pbnQgPSBzdmcuY3JlYXRlU1ZHUG9pbnQoKTtcbiAgICAgIHBvaW50LnggPSBldmVudC5jbGllbnRYLCBwb2ludC55ID0gZXZlbnQuY2xpZW50WTtcbiAgICAgIHBvaW50ID0gcG9pbnQubWF0cml4VHJhbnNmb3JtKG5vZGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKTtcbiAgICAgIHJldHVybiBbcG9pbnQueCwgcG9pbnQueV07XG4gICAgfVxuICAgIGlmIChub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgdmFyIHJlY3QgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmV0dXJuIFtldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0IC0gbm9kZS5jbGllbnRMZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3AgLSBub2RlLmNsaWVudFRvcF07XG4gICAgfVxuICB9XG4gIHJldHVybiBbZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/pointer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/pointers.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/pointers.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _pointer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pointer.js */ \"../../../node_modules/d3-selection/src/pointer.js\");\n/* harmony import */ var _sourceEvent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sourceEvent.js */ \"../../../node_modules/d3-selection/src/sourceEvent.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = (0,_sourceEvent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => (0,_pointer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(event, node));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvcG9pbnRlcnMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW1DO0FBQ1E7O0FBRTNDLDZCQUFlLG9DQUFTO0FBQ3hCLHVCQUF1QjtBQUN2QixhQUFhLDJEQUFXO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyx1REFBTztBQUM1QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9wb2ludGVycy5qcz8wMmRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwb2ludGVyIGZyb20gXCIuL3BvaW50ZXIuanNcIjtcbmltcG9ydCBzb3VyY2VFdmVudCBmcm9tIFwiLi9zb3VyY2VFdmVudC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihldmVudHMsIG5vZGUpIHtcbiAgaWYgKGV2ZW50cy50YXJnZXQpIHsgLy8gaS5lLiwgaW5zdGFuY2VvZiBFdmVudCwgbm90IFRvdWNoTGlzdCBvciBpdGVyYWJsZVxuICAgIGV2ZW50cyA9IHNvdXJjZUV2ZW50KGV2ZW50cyk7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgbm9kZSA9IGV2ZW50cy5jdXJyZW50VGFyZ2V0O1xuICAgIGV2ZW50cyA9IGV2ZW50cy50b3VjaGVzIHx8IFtldmVudHNdO1xuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKGV2ZW50cywgZXZlbnQgPT4gcG9pbnRlcihldmVudCwgbm9kZSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/pointers.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/select.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/select.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _selection_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(selector) {\n return typeof selector === \"string\"\n ? new _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.Selection([[document.querySelector(selector)]], [document.documentElement])\n : new _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.Selection([[selector]], _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.root);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFEOztBQUVyRCw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLFlBQVksMERBQVM7QUFDckIsWUFBWSwwREFBUyxlQUFlLHFEQUFJO0FBQ3hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdC5qcz9iM2NiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9uLCByb290fSBmcm9tIFwiLi9zZWxlY3Rpb24vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcildXSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pXG4gICAgICA6IG5ldyBTZWxlY3Rpb24oW1tzZWxlY3Rvcl1dLCByb290KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/select.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selectAll.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selectAll.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-selection/src/array.js\");\n/* harmony import */ var _selection_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(selector) {\n return typeof selector === \"string\"\n ? new _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.Selection([(0,_array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(selector)], _selection_index_js__WEBPACK_IMPORTED_MODULE_0__.root);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0QWxsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjtBQUNzQjs7QUFFckQsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSxZQUFZLDBEQUFTO0FBQ3JCLFlBQVksMERBQVMsRUFBRSxxREFBSyxhQUFhLHFEQUFJO0FBQzdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdEFsbC5qcz9kYmI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IHtTZWxlY3Rpb24sIHJvb3R9IGZyb20gXCIuL3NlbGVjdGlvbi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiXG4gICAgICA/IG5ldyBTZWxlY3Rpb24oW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pXG4gICAgICA6IG5ldyBTZWxlY3Rpb24oW2FycmF5KHNlbGVjdG9yKV0sIHJvb3QpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selectAll.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/append.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/append.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _creator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator.js */ \"../../../node_modules/d3-selection/src/creator.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n var create = typeof name === \"function\" ? name : (0,_creator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2FwcGVuZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvQzs7QUFFcEMsNkJBQWUsb0NBQVM7QUFDeEIsbURBQW1ELHVEQUFPO0FBQzFEO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2FwcGVuZC5qcz9lZjI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdG9yIGZyb20gXCIuLi9jcmVhdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGNyZWF0ZSA9IHR5cGVvZiBuYW1lID09PSBcImZ1bmN0aW9uXCIgPyBuYW1lIDogY3JlYXRvcihuYW1lKTtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVuZENoaWxkKGNyZWF0ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/append.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/attr.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/attr.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _namespace_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../namespace.js */ \"../../../node_modules/d3-selection/src/namespace.js\");\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n var fullname = (0,_namespace_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2F0dHIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEIsaUJBQWlCLHlEQUFTOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vYXR0ci5qcz9mZTU3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBuYW1lc3BhY2UgZnJvbSBcIi4uL25hbWVzcGFjZS5qc1wiO1xuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyUmVtb3ZlTlMoZnVsbG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50KG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudE5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIHZhbHVlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgZWxzZSB0aGlzLnNldEF0dHJpYnV0ZShuYW1lLCB2KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uTlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIHYpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICByZXR1cm4gZnVsbG5hbWUubG9jYWxcbiAgICAgICAgPyBub2RlLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbClcbiAgICAgICAgOiBub2RlLmdldEF0dHJpYnV0ZShmdWxsbmFtZSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJSZW1vdmVOUyA6IGF0dHJSZW1vdmUpIDogKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJGdW5jdGlvbk5TIDogYXR0ckZ1bmN0aW9uKVxuICAgICAgOiAoZnVsbG5hbWUubG9jYWwgPyBhdHRyQ29uc3RhbnROUyA6IGF0dHJDb25zdGFudCkpKShmdWxsbmFtZSwgdmFsdWUpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/attr.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/call.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/call.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NhbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NhbGwuanM/M2NhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzWzBdO1xuICBhcmd1bWVudHNbMF0gPSB0aGlzO1xuICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdGhpcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/call.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/classed.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/classed.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NsYXNzZWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2xhc3NlZC5qcz8wN2MxIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNsYXNzQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcudHJpbSgpLnNwbGl0KC9efFxccysvKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NMaXN0KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuY2xhc3NMaXN0IHx8IG5ldyBDbGFzc0xpc3Qobm9kZSk7XG59XG5cbmZ1bmN0aW9uIENsYXNzTGlzdChub2RlKSB7XG4gIHRoaXMuX25vZGUgPSBub2RlO1xuICB0aGlzLl9uYW1lcyA9IGNsYXNzQXJyYXkobm9kZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSB8fCBcIlwiKTtcbn1cblxuQ2xhc3NMaXN0LnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpIDwgMCkge1xuICAgICAgdGhpcy5fbmFtZXMucHVzaChuYW1lKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGkgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnNwbGljZShpLCAxKTtcbiAgICAgIHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgdGhpcy5fbmFtZXMuam9pbihcIiBcIikpO1xuICAgIH1cbiAgfSxcbiAgY29udGFpbnM6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjbGFzc2VkQWRkKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LmFkZChuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRSZW1vdmUobm9kZSwgbmFtZXMpIHtcbiAgdmFyIGxpc3QgPSBjbGFzc0xpc3Qobm9kZSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgd2hpbGUgKCsraSA8IG4pIGxpc3QucmVtb3ZlKG5hbWVzW2ldKTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZFRydWUobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRBZGQodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRmFsc2UobmFtZXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGNsYXNzZWRSZW1vdmUodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkRnVuY3Rpb24obmFtZXMsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAodmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKSA/IGNsYXNzZWRBZGQgOiBjbGFzc2VkUmVtb3ZlKSh0aGlzLCBuYW1lcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBuYW1lcyA9IGNsYXNzQXJyYXkobmFtZSArIFwiXCIpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBsaXN0ID0gY2xhc3NMaXN0KHRoaXMubm9kZSgpKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoIWxpc3QuY29udGFpbnMobmFtZXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBjbGFzc2VkRnVuY3Rpb24gOiB2YWx1ZVxuICAgICAgPyBjbGFzc2VkVHJ1ZVxuICAgICAgOiBjbGFzc2VkRmFsc2UpKG5hbWVzLCB2YWx1ZSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/classed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/clone.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/clone.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Nsb25lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9jbG9uZS5qcz9hZGY1Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHNlbGVjdGlvbl9jbG9uZVNoYWxsb3coKSB7XG4gIHZhciBjbG9uZSA9IHRoaXMuY2xvbmVOb2RlKGZhbHNlKSwgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICByZXR1cm4gcGFyZW50ID8gcGFyZW50Lmluc2VydEJlZm9yZShjbG9uZSwgdGhpcy5uZXh0U2libGluZykgOiBjbG9uZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uX2Nsb25lRGVlcCgpIHtcbiAgdmFyIGNsb25lID0gdGhpcy5jbG9uZU5vZGUodHJ1ZSksIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgcmV0dXJuIHBhcmVudCA/IHBhcmVudC5pbnNlcnRCZWZvcmUoY2xvbmUsIHRoaXMubmV4dFNpYmxpbmcpIDogY2xvbmU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRlZXApIHtcbiAgcmV0dXJuIHRoaXMuc2VsZWN0KGRlZXAgPyBzZWxlY3Rpb25fY2xvbmVEZWVwIDogc2VsZWN0aW9uX2Nsb25lU2hhbGxvdyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/clone.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/data.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/data.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _enter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enter.js */ \"../../../node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constant.js */ \"../../../node_modules/d3-selection/src/constant.js\");\n\n\n\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new _enter_js__WEBPACK_IMPORTED_MODULE_0__.EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new _enter_js__WEBPACK_IMPORTED_MODULE_0__.EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new _index_js__WEBPACK_IMPORTED_MODULE_2__.Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxQztBQUNBO0FBQ0M7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnQkFBZ0I7QUFDekI7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLHFCQUFxQixnREFBUztBQUM5QjtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpQkFBaUI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGdCQUFnQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLHFCQUFxQixnREFBUztBQUM5QjtBQUNBOztBQUVBO0FBQ0EsY0FBYyxpQkFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDJDQUEyQyx3REFBUTs7QUFFbkQsdUdBQXVHLE9BQU87QUFDOUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsaUJBQWlCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsZ0RBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanM/MzIzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcbmltcG9ydCB7RW50ZXJOb2RlfSBmcm9tIFwiLi9lbnRlci5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuLi9jb25zdGFudC5qc1wiO1xuXG5mdW5jdGlvbiBiaW5kSW5kZXgocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSkge1xuICB2YXIgaSA9IDAsXG4gICAgICBub2RlLFxuICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICBkYXRhTGVuZ3RoID0gZGF0YS5sZW5ndGg7XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGZpdCBpbnRvIHVwZGF0ZS5cbiAgLy8gUHV0IGFueSBudWxsIG5vZGVzIGludG8gZW50ZXIuXG4gIC8vIFB1dCBhbnkgcmVtYWluaW5nIGRhdGEgaW50byBlbnRlci5cbiAgZm9yICg7IGkgPCBkYXRhTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICBub2RlLl9fZGF0YV9fID0gZGF0YVtpXTtcbiAgICAgIHVwZGF0ZVtpXSA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudGVyW2ldID0gbmV3IEVudGVyTm9kZShwYXJlbnQsIGRhdGFbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1dCBhbnkgbm9uLW51bGwgbm9kZXMgdGhhdCBkb27igJl0IGZpdCBpbnRvIGV4aXQuXG4gIGZvciAoOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBiaW5kS2V5KHBhcmVudCwgZ3JvdXAsIGVudGVyLCB1cGRhdGUsIGV4aXQsIGRhdGEsIGtleSkge1xuICB2YXIgaSxcbiAgICAgIG5vZGUsXG4gICAgICBub2RlQnlLZXlWYWx1ZSA9IG5ldyBNYXAsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGtleVZhbHVlcyA9IG5ldyBBcnJheShncm91cExlbmd0aCksXG4gICAgICBrZXlWYWx1ZTtcblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggbm9kZS5cbiAgLy8gSWYgbXVsdGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBrZXksIHRoZSBkdXBsaWNhdGVzIGFyZSBhZGRlZCB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGtleVZhbHVlc1tpXSA9IGtleVZhbHVlID0ga2V5LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApICsgXCJcIjtcbiAgICAgIGlmIChub2RlQnlLZXlWYWx1ZS5oYXMoa2V5VmFsdWUpKSB7XG4gICAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZUJ5S2V5VmFsdWUuc2V0KGtleVZhbHVlLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggZGF0dW0uXG4gIC8vIElmIHRoZXJlIGEgbm9kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXksIGpvaW4gYW5kIGFkZCBpdCB0byB1cGRhdGUuXG4gIC8vIElmIHRoZXJlIGlzIG5vdCAob3IgdGhlIGtleSBpcyBhIGR1cGxpY2F0ZSksIGFkZCBpdCB0byBlbnRlci5cbiAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGtleVZhbHVlID0ga2V5LmNhbGwocGFyZW50LCBkYXRhW2ldLCBpLCBkYXRhKSArIFwiXCI7XG4gICAgaWYgKG5vZGUgPSBub2RlQnlLZXlWYWx1ZS5nZXQoa2V5VmFsdWUpKSB7XG4gICAgICB1cGRhdGVbaV0gPSBub2RlO1xuICAgICAgbm9kZS5fX2RhdGFfXyA9IGRhdGFbaV07XG4gICAgICBub2RlQnlLZXlWYWx1ZS5kZWxldGUoa2V5VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbnRlcltpXSA9IG5ldyBFbnRlck5vZGUocGFyZW50LCBkYXRhW2ldKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgYW55IHJlbWFpbmluZyBub2RlcyB0aGF0IHdlcmUgbm90IGJvdW5kIHRvIGRhdGEgdG8gZXhpdC5cbiAgZm9yIChpID0gMDsgaSA8IGdyb3VwTGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKG5vZGVCeUtleVZhbHVlLmdldChrZXlWYWx1ZXNbaV0pID09PSBub2RlKSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRhdHVtKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuX19kYXRhX187XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLCBkYXR1bSk7XG5cbiAgdmFyIGJpbmQgPSBrZXkgPyBiaW5kS2V5IDogYmluZEluZGV4LFxuICAgICAgcGFyZW50cyA9IHRoaXMuX3BhcmVudHMsXG4gICAgICBncm91cHMgPSB0aGlzLl9ncm91cHM7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB2YWx1ZSA9IGNvbnN0YW50KHZhbHVlKTtcblxuICBmb3IgKHZhciBtID0gZ3JvdXBzLmxlbmd0aCwgdXBkYXRlID0gbmV3IEFycmF5KG0pLCBlbnRlciA9IG5ldyBBcnJheShtKSwgZXhpdCA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICB2YXIgcGFyZW50ID0gcGFyZW50c1tqXSxcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbal0sXG4gICAgICAgIGdyb3VwTGVuZ3RoID0gZ3JvdXAubGVuZ3RoLFxuICAgICAgICBkYXRhID0gYXJyYXlsaWtlKHZhbHVlLmNhbGwocGFyZW50LCBwYXJlbnQgJiYgcGFyZW50Ll9fZGF0YV9fLCBqLCBwYXJlbnRzKSksXG4gICAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZW50ZXJHcm91cCA9IGVudGVyW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICB1cGRhdGVHcm91cCA9IHVwZGF0ZVtqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgZXhpdEdyb3VwID0gZXhpdFtqXSA9IG5ldyBBcnJheShncm91cExlbmd0aCk7XG5cbiAgICBiaW5kKHBhcmVudCwgZ3JvdXAsIGVudGVyR3JvdXAsIHVwZGF0ZUdyb3VwLCBleGl0R3JvdXAsIGRhdGEsIGtleSk7XG5cbiAgICAvLyBOb3cgY29ubmVjdCB0aGUgZW50ZXIgbm9kZXMgdG8gdGhlaXIgZm9sbG93aW5nIHVwZGF0ZSBub2RlLCBzdWNoIHRoYXRcbiAgICAvLyBhcHBlbmRDaGlsZCBjYW4gaW5zZXJ0IHRoZSBtYXRlcmlhbGl6ZWQgZW50ZXIgbm9kZSBiZWZvcmUgdGhpcyBub2RlLFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmVudCBub2RlLlxuICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAwLCBwcmV2aW91cywgbmV4dDsgaTAgPCBkYXRhTGVuZ3RoOyArK2kwKSB7XG4gICAgICBpZiAocHJldmlvdXMgPSBlbnRlckdyb3VwW2kwXSkge1xuICAgICAgICBpZiAoaTAgPj0gaTEpIGkxID0gaTAgKyAxO1xuICAgICAgICB3aGlsZSAoIShuZXh0ID0gdXBkYXRlR3JvdXBbaTFdKSAmJiArK2kxIDwgZGF0YUxlbmd0aCk7XG4gICAgICAgIHByZXZpb3VzLl9uZXh0ID0gbmV4dCB8fCBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZSA9IG5ldyBTZWxlY3Rpb24odXBkYXRlLCBwYXJlbnRzKTtcbiAgdXBkYXRlLl9lbnRlciA9IGVudGVyO1xuICB1cGRhdGUuX2V4aXQgPSBleGl0O1xuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vLyBHaXZlbiBzb21lIGRhdGEsIHRoaXMgcmV0dXJucyBhbiBhcnJheS1saWtlIHZpZXcgb2YgaXQ6IGFuIG9iamVjdCB0aGF0XG4vLyBleHBvc2VzIGEgbGVuZ3RoIHByb3BlcnR5IGFuZCBhbGxvd3MgbnVtZXJpYyBpbmRleGluZy4gTm90ZSB0aGF0IHVubGlrZVxuLy8gc2VsZWN0QWxsLCB0aGlzIGlzbuKAmXQgd29ycmllZCBhYm91dCDigJxsaXZl4oCdIGNvbGxlY3Rpb25zIGJlY2F1c2UgdGhlIHJlc3VsdGluZ1xuLy8gYXJyYXkgd2lsbCBvbmx5IGJlIHVzZWQgYnJpZWZseSB3aGlsZSBkYXRhIGlzIGJlaW5nIGJvdW5kLiAoSXQgaXMgcG9zc2libGUgdG9cbi8vIGNhdXNlIHRoZSBkYXRhIHRvIGNoYW5nZSB3aGlsZSBpdGVyYXRpbmcgYnkgdXNpbmcgYSBrZXkgZnVuY3Rpb24sIGJ1dCBwbGVhc2Vcbi8vIGRvbuKAmXQ7IHdl4oCZZCByYXRoZXIgYXZvaWQgYSBncmF0dWl0b3VzIGNvcHkuKVxuZnVuY3Rpb24gYXJyYXlsaWtlKGRhdGEpIHtcbiAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4gZGF0YVxuICAgID8gZGF0YSAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oZGF0YSk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/data.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/datum.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/datum.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdHVtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGF0dW0uanM/Yjk5MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLnByb3BlcnR5KFwiX19kYXRhX19cIiwgdmFsdWUpXG4gICAgICA6IHRoaXMubm9kZSgpLl9fZGF0YV9fO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/datum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/dispatch.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/dispatch.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _window_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window.js */ \"../../../node_modules/d3-selection/src/window.js\");\n\n\nfunction dispatchEvent(node, type, params) {\n var window = (0,_window_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2Rpc3BhdGNoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVDOztBQUV2QztBQUNBLGVBQWUsc0RBQVc7QUFDMUI7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGlzcGF0Y2guanM/ZjhlNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KG5vZGUsIHR5cGUsIHBhcmFtcykge1xuICB2YXIgd2luZG93ID0gZGVmYXVsdFZpZXcobm9kZSksXG4gICAgICBldmVudCA9IHdpbmRvdy5DdXN0b21FdmVudDtcblxuICBpZiAodHlwZW9mIGV2ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBldmVudCA9IG5ldyBldmVudCh0eXBlLCBwYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIGV2ZW50ID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7XG4gICAgaWYgKHBhcmFtcykgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIHBhcmFtcy5idWJibGVzLCBwYXJhbXMuY2FuY2VsYWJsZSksIGV2ZW50LmRldGFpbCA9IHBhcmFtcy5kZXRhaWw7XG4gICAgZWxzZSBldmVudC5pbml0RXZlbnQodHlwZSwgZmFsc2UsIGZhbHNlKTtcbiAgfVxuXG4gIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoQ29uc3RhbnQodHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2hFdmVudCh0aGlzLCB0eXBlLCBwYXJhbXMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaEZ1bmN0aW9uKHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGRpc3BhdGNoRnVuY3Rpb25cbiAgICAgIDogZGlzcGF0Y2hDb25zdGFudCkodHlwZSwgcGFyYW1zKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/dispatch.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/each.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/each.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VhY2guanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTOztBQUV4Qiw0REFBNEQsT0FBTztBQUNuRSwrREFBK0QsT0FBTztBQUN0RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZWFjaC5qcz9kNzIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGgsIG5vZGU7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIGNhbGxiYWNrLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/each.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/empty.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/empty.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return !this.node();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VtcHR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9lbXB0eS5qcz8wNTk0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gIXRoaXMubm9kZSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/empty.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/enter.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/enter.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EnterNode\": () => (/* binding */ EnterNode),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _sparse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sparse.js */ \"../../../node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Selection(this._enter || this._groups.map(_sparse_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]), this._parents);\n}\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VudGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBaUM7QUFDSTs7QUFFckMsNkJBQWUsc0NBQVc7QUFDMUIsYUFBYSxnREFBUyxpQ0FBaUMsa0RBQU07QUFDN0Q7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxzREFBc0Q7QUFDdkYsd0NBQXdDLGdEQUFnRDtBQUN4RixzQ0FBc0MsOENBQThDO0FBQ3BGLHlDQUF5QztBQUN6QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW50ZXIuanM/YThhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3BhcnNlIGZyb20gXCIuL3NwYXJzZS5qc1wiO1xuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9lbnRlciB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW50ZXJOb2RlKHBhcmVudCwgZGF0dW0pIHtcbiAgdGhpcy5vd25lckRvY3VtZW50ID0gcGFyZW50Lm93bmVyRG9jdW1lbnQ7XG4gIHRoaXMubmFtZXNwYWNlVVJJID0gcGFyZW50Lm5hbWVzcGFjZVVSSTtcbiAgdGhpcy5fbmV4dCA9IG51bGw7XG4gIHRoaXMuX3BhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5fX2RhdGFfXyA9IGRhdHVtO1xufVxuXG5FbnRlck5vZGUucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRW50ZXJOb2RlLFxuICBhcHBlbmRDaGlsZDogZnVuY3Rpb24oY2hpbGQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIHRoaXMuX25leHQpOyB9LFxuICBpbnNlcnRCZWZvcmU6IGZ1bmN0aW9uKGNoaWxkLCBuZXh0KSB7IHJldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCBuZXh0KTsgfSxcbiAgcXVlcnlTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsgfSxcbiAgcXVlcnlTZWxlY3RvckFsbDogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/enter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/exit.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/exit.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _sparse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sparse.js */ \"../../../node_modules/d3-selection/src/selection/sparse.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Selection(this._exit || this._groups.map(_sparse_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]), this._parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2V4aXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWlDO0FBQ0k7O0FBRXJDLDZCQUFlLHNDQUFXO0FBQzFCLGFBQWEsZ0RBQVMsZ0NBQWdDLGtEQUFNO0FBQzVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9leGl0LmpzP2JiZjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2UuanNcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZXhpdCB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/exit.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/filter.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/filter.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _matcher_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matcher.js */ \"../../../node_modules/d3-selection/src/matcher.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(match) {\n if (typeof match !== \"function\") match = (0,_matcher_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_1__.Selection(subgroups, this._parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2ZpbHRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBcUM7QUFDRDs7QUFFcEMsNkJBQWUsb0NBQVM7QUFDeEIsMkNBQTJDLHVEQUFPOztBQUVsRCxzRkFBc0YsT0FBTztBQUM3Riw2RkFBNkYsT0FBTztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsZ0RBQVM7QUFDdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2ZpbHRlci5qcz8yYjUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/filter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/html.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/html.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2h0bWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaHRtbC5qcz9kYmJjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGh0bWxSZW1vdmUoKSB7XG4gIHRoaXMuaW5uZXJIVE1MID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gaHRtbENvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlubmVySFRNTCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiBodG1sRnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB0aGlzLmlubmVySFRNTCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gaHRtbFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gaHRtbEZ1bmN0aW9uXG4gICAgICAgICAgOiBodG1sQ29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkuaW5uZXJIVE1MO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/html.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Selection\": () => (/* binding */ Selection),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"root\": () => (/* binding */ root)\n/* harmony export */ });\n/* harmony import */ var _select_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./select.js */ \"../../../node_modules/d3-selection/src/selection/select.js\");\n/* harmony import */ var _selectAll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectAll.js */ \"../../../node_modules/d3-selection/src/selection/selectAll.js\");\n/* harmony import */ var _selectChild_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selectChild.js */ \"../../../node_modules/d3-selection/src/selection/selectChild.js\");\n/* harmony import */ var _selectChildren_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selectChildren.js */ \"../../../node_modules/d3-selection/src/selection/selectChildren.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./filter.js */ \"../../../node_modules/d3-selection/src/selection/filter.js\");\n/* harmony import */ var _data_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data.js */ \"../../../node_modules/d3-selection/src/selection/data.js\");\n/* harmony import */ var _enter_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./enter.js */ \"../../../node_modules/d3-selection/src/selection/enter.js\");\n/* harmony import */ var _exit_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./exit.js */ \"../../../node_modules/d3-selection/src/selection/exit.js\");\n/* harmony import */ var _join_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./join.js */ \"../../../node_modules/d3-selection/src/selection/join.js\");\n/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./merge.js */ \"../../../node_modules/d3-selection/src/selection/merge.js\");\n/* harmony import */ var _order_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./order.js */ \"../../../node_modules/d3-selection/src/selection/order.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/d3-selection/src/selection/sort.js\");\n/* harmony import */ var _call_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./call.js */ \"../../../node_modules/d3-selection/src/selection/call.js\");\n/* harmony import */ var _nodes_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./nodes.js */ \"../../../node_modules/d3-selection/src/selection/nodes.js\");\n/* harmony import */ var _node_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./node.js */ \"../../../node_modules/d3-selection/src/selection/node.js\");\n/* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./size.js */ \"../../../node_modules/d3-selection/src/selection/size.js\");\n/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./empty.js */ \"../../../node_modules/d3-selection/src/selection/empty.js\");\n/* harmony import */ var _each_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./each.js */ \"../../../node_modules/d3-selection/src/selection/each.js\");\n/* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./attr.js */ \"../../../node_modules/d3-selection/src/selection/attr.js\");\n/* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./style.js */ \"../../../node_modules/d3-selection/src/selection/style.js\");\n/* harmony import */ var _property_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./property.js */ \"../../../node_modules/d3-selection/src/selection/property.js\");\n/* harmony import */ var _classed_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./classed.js */ \"../../../node_modules/d3-selection/src/selection/classed.js\");\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./text.js */ \"../../../node_modules/d3-selection/src/selection/text.js\");\n/* harmony import */ var _html_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./html.js */ \"../../../node_modules/d3-selection/src/selection/html.js\");\n/* harmony import */ var _raise_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./raise.js */ \"../../../node_modules/d3-selection/src/selection/raise.js\");\n/* harmony import */ var _lower_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./lower.js */ \"../../../node_modules/d3-selection/src/selection/lower.js\");\n/* harmony import */ var _append_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./append.js */ \"../../../node_modules/d3-selection/src/selection/append.js\");\n/* harmony import */ var _insert_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./insert.js */ \"../../../node_modules/d3-selection/src/selection/insert.js\");\n/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./remove.js */ \"../../../node_modules/d3-selection/src/selection/remove.js\");\n/* harmony import */ var _clone_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./clone.js */ \"../../../node_modules/d3-selection/src/selection/clone.js\");\n/* harmony import */ var _datum_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./datum.js */ \"../../../node_modules/d3-selection/src/selection/datum.js\");\n/* harmony import */ var _on_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./on.js */ \"../../../node_modules/d3-selection/src/selection/on.js\");\n/* harmony import */ var _dispatch_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./dispatch.js */ \"../../../node_modules/d3-selection/src/selection/dispatch.js\");\n/* harmony import */ var _iterator_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./iterator.js */ \"../../../node_modules/d3-selection/src/selection/iterator.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: _select_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n selectAll: _selectAll_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n selectChild: _selectChild_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n selectChildren: _selectChildren_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n filter: _filter_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n data: _data_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n enter: _enter_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n exit: _exit_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n join: _join_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n merge: _merge_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n selection: selection_selection,\n order: _order_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n sort: _sort_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n call: _call_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n nodes: _nodes_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n node: _node_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n size: _size_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n empty: _empty_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n each: _each_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n attr: _attr_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n style: _style_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n property: _property_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n classed: _classed_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"],\n text: _text_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"],\n html: _html_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"],\n raise: _raise_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"],\n lower: _lower_js__WEBPACK_IMPORTED_MODULE_25__[\"default\"],\n append: _append_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"],\n insert: _insert_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"],\n remove: _remove_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"],\n clone: _clone_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"],\n datum: _datum_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"],\n on: _on_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"],\n dispatch: _dispatch_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"],\n [Symbol.iterator]: _iterator_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (selection);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMkM7QUFDTTtBQUNJO0FBQ007QUFDaEI7QUFDSjtBQUNFO0FBQ0Y7QUFDQTtBQUNFO0FBQ0E7QUFDRjtBQUNBO0FBQ0U7QUFDRjtBQUNBO0FBQ0U7QUFDRjtBQUNBO0FBQ0U7QUFDTTtBQUNGO0FBQ047QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDRjtBQUNBO0FBQ047QUFDWTtBQUNBOztBQUV4Qzs7QUFFQTtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLGtEQUFnQjtBQUMxQixhQUFhLHFEQUFtQjtBQUNoQyxlQUFlLHVEQUFxQjtBQUNwQyxrQkFBa0IsMERBQXdCO0FBQzFDLFVBQVUsa0RBQWdCO0FBQzFCLFFBQVEsZ0RBQWM7QUFDdEIsU0FBUyxpREFBZTtBQUN4QixRQUFRLGdEQUFjO0FBQ3RCLFFBQVEsZ0RBQWM7QUFDdEIsU0FBUyxpREFBZTtBQUN4QjtBQUNBLFNBQVMsa0RBQWU7QUFDeEIsUUFBUSxpREFBYztBQUN0QixRQUFRLGlEQUFjO0FBQ3RCLFNBQVMsa0RBQWU7QUFDeEIsUUFBUSxpREFBYztBQUN0QixRQUFRLGlEQUFjO0FBQ3RCLFNBQVMsa0RBQWU7QUFDeEIsUUFBUSxpREFBYztBQUN0QixRQUFRLGlEQUFjO0FBQ3RCLFNBQVMsa0RBQWU7QUFDeEIsWUFBWSxxREFBa0I7QUFDOUIsV0FBVyxvREFBaUI7QUFDNUIsUUFBUSxpREFBYztBQUN0QixRQUFRLGlEQUFjO0FBQ3RCLFNBQVMsa0RBQWU7QUFDeEIsU0FBUyxrREFBZTtBQUN4QixVQUFVLG1EQUFnQjtBQUMxQixVQUFVLG1EQUFnQjtBQUMxQixVQUFVLG1EQUFnQjtBQUMxQixTQUFTLGtEQUFlO0FBQ3hCLFNBQVMsa0RBQWU7QUFDeEIsTUFBTSwrQ0FBWTtBQUNsQixZQUFZLHFEQUFrQjtBQUM5QixxQkFBcUIscURBQWtCO0FBQ3ZDOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5kZXguanM/NjMyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2VsZWN0aW9uX3NlbGVjdCBmcm9tIFwiLi9zZWxlY3QuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fc2VsZWN0QWxsIGZyb20gXCIuL3NlbGVjdEFsbC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RDaGlsZCBmcm9tIFwiLi9zZWxlY3RDaGlsZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3RDaGlsZHJlbiBmcm9tIFwiLi9zZWxlY3RDaGlsZHJlbi5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9maWx0ZXIgZnJvbSBcIi4vZmlsdGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdGEgZnJvbSBcIi4vZGF0YS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbnRlciBmcm9tIFwiLi9lbnRlci5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9leGl0IGZyb20gXCIuL2V4aXQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fam9pbiBmcm9tIFwiLi9qb2luLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX21lcmdlIGZyb20gXCIuL21lcmdlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29yZGVyIGZyb20gXCIuL29yZGVyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NvcnQgZnJvbSBcIi4vc29ydC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9jYWxsIGZyb20gXCIuL2NhbGwuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZXMgZnJvbSBcIi4vbm9kZXMuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZSBmcm9tIFwiLi9ub2RlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NpemUgZnJvbSBcIi4vc2l6ZS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbXB0eSBmcm9tIFwiLi9lbXB0eS5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9lYWNoIGZyb20gXCIuL2VhY2guanNcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXR0ciBmcm9tIFwiLi9hdHRyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlIGZyb20gXCIuL3N0eWxlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3Byb3BlcnR5IGZyb20gXCIuL3Byb3BlcnR5LmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NsYXNzZWQgZnJvbSBcIi4vY2xhc3NlZC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl90ZXh0IGZyb20gXCIuL3RleHQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faHRtbCBmcm9tIFwiLi9odG1sLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JhaXNlIGZyb20gXCIuL3JhaXNlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2xvd2VyIGZyb20gXCIuL2xvd2VyLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2FwcGVuZCBmcm9tIFwiLi9hcHBlbmQuanNcIjtcbmltcG9ydCBzZWxlY3Rpb25faW5zZXJ0IGZyb20gXCIuL2luc2VydC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Nsb25lIGZyb20gXCIuL2Nsb25lLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdHVtIGZyb20gXCIuL2RhdHVtLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29uIGZyb20gXCIuL29uLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Rpc3BhdGNoIGZyb20gXCIuL2Rpc3BhdGNoLmpzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2l0ZXJhdG9yIGZyb20gXCIuL2l0ZXJhdG9yLmpzXCI7XG5cbmV4cG9ydCB2YXIgcm9vdCA9IFtudWxsXTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGlvbihncm91cHMsIHBhcmVudHMpIHtcbiAgdGhpcy5fZ3JvdXBzID0gZ3JvdXBzO1xuICB0aGlzLl9wYXJlbnRzID0gcGFyZW50cztcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCByb290KTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uX3NlbGVjdGlvbigpIHtcbiAgcmV0dXJuIHRoaXM7XG59XG5cblNlbGVjdGlvbi5wcm90b3R5cGUgPSBzZWxlY3Rpb24ucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogU2VsZWN0aW9uLFxuICBzZWxlY3Q6IHNlbGVjdGlvbl9zZWxlY3QsXG4gIHNlbGVjdEFsbDogc2VsZWN0aW9uX3NlbGVjdEFsbCxcbiAgc2VsZWN0Q2hpbGQ6IHNlbGVjdGlvbl9zZWxlY3RDaGlsZCxcbiAgc2VsZWN0Q2hpbGRyZW46IHNlbGVjdGlvbl9zZWxlY3RDaGlsZHJlbixcbiAgZmlsdGVyOiBzZWxlY3Rpb25fZmlsdGVyLFxuICBkYXRhOiBzZWxlY3Rpb25fZGF0YSxcbiAgZW50ZXI6IHNlbGVjdGlvbl9lbnRlcixcbiAgZXhpdDogc2VsZWN0aW9uX2V4aXQsXG4gIGpvaW46IHNlbGVjdGlvbl9qb2luLFxuICBtZXJnZTogc2VsZWN0aW9uX21lcmdlLFxuICBzZWxlY3Rpb246IHNlbGVjdGlvbl9zZWxlY3Rpb24sXG4gIG9yZGVyOiBzZWxlY3Rpb25fb3JkZXIsXG4gIHNvcnQ6IHNlbGVjdGlvbl9zb3J0LFxuICBjYWxsOiBzZWxlY3Rpb25fY2FsbCxcbiAgbm9kZXM6IHNlbGVjdGlvbl9ub2RlcyxcbiAgbm9kZTogc2VsZWN0aW9uX25vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9zaXplLFxuICBlbXB0eTogc2VsZWN0aW9uX2VtcHR5LFxuICBlYWNoOiBzZWxlY3Rpb25fZWFjaCxcbiAgYXR0cjogc2VsZWN0aW9uX2F0dHIsXG4gIHN0eWxlOiBzZWxlY3Rpb25fc3R5bGUsXG4gIHByb3BlcnR5OiBzZWxlY3Rpb25fcHJvcGVydHksXG4gIGNsYXNzZWQ6IHNlbGVjdGlvbl9jbGFzc2VkLFxuICB0ZXh0OiBzZWxlY3Rpb25fdGV4dCxcbiAgaHRtbDogc2VsZWN0aW9uX2h0bWwsXG4gIHJhaXNlOiBzZWxlY3Rpb25fcmFpc2UsXG4gIGxvd2VyOiBzZWxlY3Rpb25fbG93ZXIsXG4gIGFwcGVuZDogc2VsZWN0aW9uX2FwcGVuZCxcbiAgaW5zZXJ0OiBzZWxlY3Rpb25faW5zZXJ0LFxuICByZW1vdmU6IHNlbGVjdGlvbl9yZW1vdmUsXG4gIGNsb25lOiBzZWxlY3Rpb25fY2xvbmUsXG4gIGRhdHVtOiBzZWxlY3Rpb25fZGF0dW0sXG4gIG9uOiBzZWxlY3Rpb25fb24sXG4gIGRpc3BhdGNoOiBzZWxlY3Rpb25fZGlzcGF0Y2gsXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBzZWxlY3Rpb25faXRlcmF0b3Jcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdGlvbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/insert.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/insert.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _creator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../creator.js */ \"../../../node_modules/d3-selection/src/creator.js\");\n/* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selector.js */ \"../../../node_modules/d3-selection/src/selector.js\");\n\n\n\nfunction constantNull() {\n return null;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, before) {\n var create = typeof name === \"function\" ? name : (0,_creator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : (0,_selector_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luc2VydC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0M7QUFDRTs7QUFFdEM7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCLG1EQUFtRCx1REFBTztBQUMxRCx1RkFBdUYsd0RBQVE7QUFDL0Y7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5zZXJ0LmpzPzU3OWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3IuanNcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3IuanNcIjtcblxuZnVuY3Rpb24gY29uc3RhbnROdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgYmVmb3JlKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSksXG4gICAgICBzZWxlY3QgPSBiZWZvcmUgPT0gbnVsbCA/IGNvbnN0YW50TnVsbCA6IHR5cGVvZiBiZWZvcmUgPT09IFwiZnVuY3Rpb25cIiA/IGJlZm9yZSA6IHNlbGVjdG9yKGJlZm9yZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IG51bGwpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/insert.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/iterator.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/iterator.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function* __WEBPACK_DEFAULT_EXPORT__() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2l0ZXJhdG9yLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSx1Q0FBWTtBQUMzQiw0REFBNEQsT0FBTztBQUNuRSwrREFBK0QsT0FBTztBQUN0RTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaXRlcmF0b3IuanM/YWQ3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiooKSB7XG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB5aWVsZCBub2RlO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/iterator.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/join.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/join.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2pvaW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9qb2luLmpzPzMxNTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ob25lbnRlciwgb251cGRhdGUsIG9uZXhpdCkge1xuICB2YXIgZW50ZXIgPSB0aGlzLmVudGVyKCksIHVwZGF0ZSA9IHRoaXMsIGV4aXQgPSB0aGlzLmV4aXQoKTtcbiAgaWYgKHR5cGVvZiBvbmVudGVyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBlbnRlciA9IG9uZW50ZXIoZW50ZXIpO1xuICAgIGlmIChlbnRlcikgZW50ZXIgPSBlbnRlci5zZWxlY3Rpb24oKTtcbiAgfSBlbHNlIHtcbiAgICBlbnRlciA9IGVudGVyLmFwcGVuZChvbmVudGVyICsgXCJcIik7XG4gIH1cbiAgaWYgKG9udXBkYXRlICE9IG51bGwpIHtcbiAgICB1cGRhdGUgPSBvbnVwZGF0ZSh1cGRhdGUpO1xuICAgIGlmICh1cGRhdGUpIHVwZGF0ZSA9IHVwZGF0ZS5zZWxlY3Rpb24oKTtcbiAgfVxuICBpZiAob25leGl0ID09IG51bGwpIGV4aXQucmVtb3ZlKCk7IGVsc2Ugb25leGl0KGV4aXQpO1xuICByZXR1cm4gZW50ZXIgJiYgdXBkYXRlID8gZW50ZXIubWVyZ2UodXBkYXRlKS5vcmRlcigpIDogdXBkYXRlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/join.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/lower.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/lower.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this.each(lower);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2xvd2VyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbG93ZXIuanM/Y2IxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBsb3dlcigpIHtcbiAgaWYgKHRoaXMucHJldmlvdXNTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsIHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gobG93ZXIpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/lower.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/merge.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/merge.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Selection(merges, this._parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL21lcmdlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQyw2QkFBZSxvQ0FBUztBQUN4Qjs7QUFFQSwrSkFBK0osT0FBTztBQUN0Syx5SEFBeUgsT0FBTztBQUNoSTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsUUFBUTtBQUNqQjtBQUNBOztBQUVBLGFBQWEsZ0RBQVM7QUFDdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL21lcmdlLmpzPzM4MDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGNvbnRleHQuc2VsZWN0aW9uID8gY29udGV4dC5zZWxlY3Rpb24oKSA6IGNvbnRleHQ7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHNlbGVjdGlvbi5fZ3JvdXBzLCBtMCA9IGdyb3VwczAubGVuZ3RoLCBtMSA9IGdyb3VwczEubGVuZ3RoLCBtID0gTWF0aC5taW4obTAsIG0xKSwgbWVyZ2VzID0gbmV3IEFycmF5KG0wKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cDAgPSBncm91cHMwW2pdLCBncm91cDEgPSBncm91cHMxW2pdLCBuID0gZ3JvdXAwLmxlbmd0aCwgbWVyZ2UgPSBtZXJnZXNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwMFtpXSB8fCBncm91cDFbaV0pIHtcbiAgICAgICAgbWVyZ2VbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBqIDwgbTA7ICsraikge1xuICAgIG1lcmdlc1tqXSA9IGdyb3VwczBbal07XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/merge.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/node.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/node.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL25vZGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLHNDQUFXOztBQUUxQiw0REFBNEQsT0FBTztBQUNuRSx5REFBeUQsT0FBTztBQUNoRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2RlLmpzP2I0OTUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAobm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/node.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/nodes.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/nodes.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return Array.from(this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL25vZGVzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2Rlcy5qcz9jNTczIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/nodes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/on.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/on.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxPQUFPO0FBQ3JEO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLE9BQU87QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0EsOENBQThDLE9BQU87QUFDckQsNkJBQTZCLE9BQU87QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb24uanM/NjE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBjb250ZXh0TGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCwgdGhpcy5fX2RhdGFfXyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVtb3ZlKHR5cGVuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb247XG4gICAgaWYgKCFvbikgcmV0dXJuO1xuICAgIGZvciAodmFyIGogPSAwLCBpID0gLTEsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChvID0gb25bal0sICghdHlwZW5hbWUudHlwZSB8fCBvLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUpICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bKytpXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgrK2kpIG9uLmxlbmd0aCA9IGk7XG4gICAgZWxzZSBkZWxldGUgdGhpcy5fX29uO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbkFkZCh0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbiwgbywgbGlzdGVuZXIgPSBjb250ZXh0TGlzdGVuZXIodmFsdWUpO1xuICAgIGlmIChvbikgZm9yICh2YXIgaiA9IDAsIG0gPSBvbi5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICAgIGlmICgobyA9IG9uW2pdKS50eXBlID09PSB0eXBlbmFtZS50eXBlICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyID0gbGlzdGVuZXIsIG8ub3B0aW9ucyA9IG9wdGlvbnMpO1xuICAgICAgICBvLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHR5cGVuYW1lLnR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICBvID0ge3R5cGU6IHR5cGVuYW1lLnR5cGUsIG5hbWU6IHR5cGVuYW1lLm5hbWUsIHZhbHVlOiB2YWx1ZSwgbGlzdGVuZXI6IGxpc3RlbmVyLCBvcHRpb25zOiBvcHRpb25zfTtcbiAgICBpZiAoIW9uKSB0aGlzLl9fb24gPSBbb107XG4gICAgZWxzZSBvbi5wdXNoKG8pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih0eXBlbmFtZSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHR5cGVuYW1lcyA9IHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lICsgXCJcIiksIGksIG4gPSB0eXBlbmFtZXMubGVuZ3RoLCB0O1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBvbiA9IHRoaXMubm9kZSgpLl9fb247XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aCwgbzsgaiA8IG07ICsraikge1xuICAgICAgZm9yIChpID0gMCwgbyA9IG9uW2pdOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICgodCA9IHR5cGVuYW1lc1tpXSkudHlwZSA9PT0gby50eXBlICYmIHQubmFtZSA9PT0gby5uYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIG8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgb24gPSB2YWx1ZSA/IG9uQWRkIDogb25SZW1vdmU7XG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHRoaXMuZWFjaChvbih0eXBlbmFtZXNbaV0sIHZhbHVlLCBvcHRpb25zKSk7XG4gIHJldHVybiB0aGlzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/on.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/order.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/order.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29yZGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVzs7QUFFMUIsNkRBQTZELFFBQVE7QUFDckUsNkVBQTZFLFNBQVM7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL29yZGVyLmpzPzU1OGEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gLTEsIG0gPSBncm91cHMubGVuZ3RoOyArK2ogPCBtOykge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBpID0gZ3JvdXAubGVuZ3RoIC0gMSwgbmV4dCA9IGdyb3VwW2ldLCBub2RlOyAtLWkgPj0gMDspIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgaWYgKG5leHQgJiYgbm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuZXh0KSBeIDQpIG5leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgbmV4dCk7XG4gICAgICAgIG5leHQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/order.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/property.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/property.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzPzUwNDIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gcHJvcGVydHlSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZGVsZXRlIHRoaXNbbmFtZV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5Q29uc3RhbnQobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIGRlbGV0ZSB0aGlzW25hbWVdO1xuICAgIGVsc2UgdGhpc1tuYW1lXSA9IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IHByb3BlcnR5UmVtb3ZlIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHByb3BlcnR5RnVuY3Rpb25cbiAgICAgICAgICA6IHByb3BlcnR5Q29uc3RhbnQpKG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKClbbmFtZV07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/property.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/raise.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/raise.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this.each(raise);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JhaXNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcmFpc2UuanM/NzQ2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiByYWlzZSgpIHtcbiAgaWYgKHRoaXMubmV4dFNpYmxpbmcpIHRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gocmFpc2UpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/raise.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/remove.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/remove.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this.each(remove);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JlbW92ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vcmVtb3ZlLmpzPzI5NTUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gcmVtb3ZlKCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICBpZiAocGFyZW50KSBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5lYWNoKHJlbW92ZSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/remove.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/select.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/select.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../selector.js */ \"../../../node_modules/d3-selection/src/selector.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(select) {\n if (typeof select !== \"function\") select = (0,_selector_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_1__.Selection(subgroups, this._parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBcUM7QUFDQzs7QUFFdEMsNkJBQWUsb0NBQVM7QUFDeEIsNkNBQTZDLHdEQUFROztBQUVyRCxzRkFBc0YsT0FBTztBQUM3RixnSEFBZ0gsT0FBTztBQUN2SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnREFBUztBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0LmpzPzE0Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2VsZWN0b3IgZnJvbSBcIi4uL3NlbGVjdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/select.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/selectAll.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/selectAll.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../array.js */ \"../../../node_modules/d3-selection/src/array.js\");\n/* harmony import */ var _selectorAll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../selectorAll.js */ \"../../../node_modules/d3-selection/src/selectorAll.js\");\n\n\n\n\nfunction arrayAll(select) {\n return function() {\n return (0,_array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(select.apply(this, arguments));\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = (0,_selectorAll_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_2__.Selection(subgroups, parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdEFsbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXFDO0FBQ0w7QUFDWTs7QUFFNUM7QUFDQTtBQUNBLFdBQVcscURBQUs7QUFDaEI7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLGdCQUFnQiwyREFBVzs7QUFFM0IsMEZBQTBGLE9BQU87QUFDakcsK0RBQStELE9BQU87QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsZ0RBQVM7QUFDdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdEFsbC5qcz9jNDI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuLi9hcnJheS5qc1wiO1xuaW1wb3J0IHNlbGVjdG9yQWxsIGZyb20gXCIuLi9zZWxlY3RvckFsbC5qc1wiO1xuXG5mdW5jdGlvbiBhcnJheUFsbChzZWxlY3QpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBhcnJheShzZWxlY3QuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdCkge1xuICBpZiAodHlwZW9mIHNlbGVjdCA9PT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBhcnJheUFsbChzZWxlY3QpO1xuICBlbHNlIHNlbGVjdCA9IHNlbGVjdG9yQWxsKHNlbGVjdCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgc3ViZ3JvdXBzID0gW10sIHBhcmVudHMgPSBbXSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgc3ViZ3JvdXBzLnB1c2goc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKTtcbiAgICAgICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgcGFyZW50cyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/selectAll.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/selectChild.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/selectChild.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _matcher_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matcher.js */ \"../../../node_modules/d3-selection/src/matcher.js\");\n\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : (0,_matcher_js__WEBPACK_IMPORTED_MODULE_0__.childMatcher)(match)));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdENoaWxkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTJDOztBQUUzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLHdEQUF3RCx5REFBWTtBQUNwRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0Q2hpbGQuanM/OTVkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbmQgPSBBcnJheS5wcm90b3R5cGUuZmluZDtcblxuZnVuY3Rpb24gY2hpbGRGaW5kKG1hdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZmluZC5jYWxsKHRoaXMuY2hpbGRyZW4sIG1hdGNoKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2hpbGRGaXJzdCgpIHtcbiAgcmV0dXJuIHRoaXMuZmlyc3RFbGVtZW50Q2hpbGQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdChtYXRjaCA9PSBudWxsID8gY2hpbGRGaXJzdFxuICAgICAgOiBjaGlsZEZpbmQodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/selectChild.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/selectChildren.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/selectChildren.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _matcher_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../matcher.js */ \"../../../node_modules/d3-selection/src/matcher.js\");\n\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : (0,_matcher_js__WEBPACK_IMPORTED_MODULE_0__.childMatcher)(match)));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdENoaWxkcmVuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTJDOztBQUUzQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLDZEQUE2RCx5REFBWTtBQUN6RSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc2VsZWN0Q2hpbGRyZW4uanM/MWM2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NoaWxkTWF0Y2hlcn0gZnJvbSBcIi4uL21hdGNoZXIuanNcIjtcblxudmFyIGZpbHRlciA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXI7XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW5GaWx0ZXIobWF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBmaWx0ZXIuY2FsbCh0aGlzLmNoaWxkcmVuLCBtYXRjaCk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIHJldHVybiB0aGlzLnNlbGVjdEFsbChtYXRjaCA9PSBudWxsID8gY2hpbGRyZW5cbiAgICAgIDogY2hpbGRyZW5GaWx0ZXIodHlwZW9mIG1hdGNoID09PSBcImZ1bmN0aW9uXCIgPyBtYXRjaCA6IGNoaWxkTWF0Y2hlcihtYXRjaCkpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/selectChildren.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/size.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/size.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLHNDQUFXO0FBQzFCO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanM/NjJkNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgbGV0IHNpemUgPSAwO1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcykgKytzaXplOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiBzaXplO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/size.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/sort.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/sort.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NvcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1RkFBdUYsT0FBTztBQUM5Rix5R0FBeUcsT0FBTztBQUNoSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnREFBUztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NvcnQuanM/YmIxYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlbGVjdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29tcGFyZSkge1xuICBpZiAoIWNvbXBhcmUpIGNvbXBhcmUgPSBhc2NlbmRpbmc7XG5cbiAgZnVuY3Rpb24gY29tcGFyZU5vZGUoYSwgYikge1xuICAgIHJldHVybiBhICYmIGIgPyBjb21wYXJlKGEuX19kYXRhX18sIGIuX19kYXRhX18pIDogIWEgLSAhYjtcbiAgfVxuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHNvcnRncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHNvcnRncm91cCA9IHNvcnRncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHNvcnRncm91cFtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHNvcnRncm91cC5zb3J0KGNvbXBhcmVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHNvcnRncm91cHMsIHRoaXMuX3BhcmVudHMpLm9yZGVyKCk7XG59XG5cbmZ1bmN0aW9uIGFzY2VuZGluZyhhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/sort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/sparse.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/sparse.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(update) {\n return new Array(update.length);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NwYXJzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc3BhcnNlLmpzPzM0NTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odXBkYXRlKSB7XG4gIHJldHVybiBuZXcgQXJyYXkodXBkYXRlLmxlbmd0aCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/sparse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/style.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/style.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"styleValue\": () => (/* binding */ styleValue)\n/* harmony export */ });\n/* harmony import */ var _window_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../window.js */ \"../../../node_modules/d3-selection/src/window.js\");\n\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || (0,_window_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3N0eWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxTQUFTLHNEQUFXO0FBQ3BCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zdHlsZS5qcz9lZWUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0VmlldyBmcm9tIFwiLi4vd2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIHN0eWxlUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ29uc3RhbnQobmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlLCBwcmlvcml0eSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlRnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKHYgPT0gbnVsbCkgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgICBlbHNlIHRoaXMuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgdiwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPiAxXG4gICAgICA/IHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgICAgICAgPyBzdHlsZVJlbW92ZSA6IHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgICA/IHN0eWxlRnVuY3Rpb25cbiAgICAgICAgICAgIDogc3R5bGVDb25zdGFudCkobmFtZSwgdmFsdWUsIHByaW9yaXR5ID09IG51bGwgPyBcIlwiIDogcHJpb3JpdHkpKVxuICAgICAgOiBzdHlsZVZhbHVlKHRoaXMubm9kZSgpLCBuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlVmFsdWUobm9kZSwgbmFtZSkge1xuICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpXG4gICAgICB8fCBkZWZhdWx0Vmlldyhub2RlKS5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/style.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selection/text.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selection/text.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3RleHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vdGV4dC5qcz85YjIzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHRleHRSZW1vdmUoKSB7XG4gIHRoaXMudGV4dENvbnRlbnQgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiB0ZXh0Q29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGV4dEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gdGV4dFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gdGV4dEZ1bmN0aW9uXG4gICAgICAgICAgOiB0ZXh0Q29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkudGV4dENvbnRlbnQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selection/text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selector.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selector.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction none() {}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0b3IuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yLmpzPzcxY2EiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gbm9uZSgpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA9PSBudWxsID8gbm9uZSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selector.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/selectorAll.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/selectorAll.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction empty() {\n return [];\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0b3JBbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3RvckFsbC5qcz9mNjBjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGVtcHR5KCkge1xuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBzZWxlY3RvciA9PSBudWxsID8gZW1wdHkgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/selectorAll.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/sourceEvent.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-selection/src/sourceEvent.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc291cmNlRXZlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NvdXJjZUV2ZW50LmpzP2VjYzYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZXZlbnQpIHtcbiAgbGV0IHNvdXJjZUV2ZW50O1xuICB3aGlsZSAoc291cmNlRXZlbnQgPSBldmVudC5zb3VyY2VFdmVudCkgZXZlbnQgPSBzb3VyY2VFdmVudDtcbiAgcmV0dXJuIGV2ZW50O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/sourceEvent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-selection/src/window.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-selection/src/window.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvd2luZG93LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3dpbmRvdy5qcz8yOTQxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLm93bmVyRG9jdW1lbnQgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSAvLyBub2RlIGlzIGEgTm9kZVxuICAgICAgfHwgKG5vZGUuZG9jdW1lbnQgJiYgbm9kZSkgLy8gbm9kZSBpcyBhIFdpbmRvd1xuICAgICAgfHwgbm9kZS5kZWZhdWx0VmlldzsgLy8gbm9kZSBpcyBhIERvY3VtZW50XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-selection/src/window.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/arc.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-shape/src/arc.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-shape/src/path.js\");\n\n\n\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = (0,_path_js__WEBPACK_IMPORTED_MODULE_2__.withPath)(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi,\n a1 = endAngle.apply(this, arguments) - _math_js__WEBPACK_IMPORTED_MODULE_0__.halfPi,\n da = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > _math_js__WEBPACK_IMPORTED_MODULE_0__.tau - _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n context.moveTo(r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a0), r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n context.moveTo(r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a1), r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) && (padRadius ? +padRadius.apply(this, arguments) : (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(r0 * r0 + r1 * r1)),\n rc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.abs)(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n var p0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(rp / r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(ap)),\n p1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.asin)(rp / r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(ap));\n if ((da0 -= p0 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a01),\n y01 = r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a01),\n x10 = r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a10),\n y10 = r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a10);\n\n // Apply rounded corners?\n if (rc > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n var x11 = r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a11),\n y11 = r1 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a11),\n x00 = r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a00),\n y00 = r0 * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < _math_js__WEBPACK_IMPORTED_MODULE_0__.pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.acos)((ax * bx + ay * by) / ((0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(ax * ax + ay * ay) * (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(bx * bx + by * by))) / 2),\n lc = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(rc, (r0 - lc) / (kc - 1));\n rc1 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y01, t0.x01), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y01, t0.x01), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y11, t1.x11), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) || !(da0 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y01, t0.x01), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y01, t0.x01), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t0.cy + t0.y11, t0.cx + t0.x11), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y11, t1.x11), (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.atan2)(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - _math_js__WEBPACK_IMPORTED_MODULE_0__.pi / 2;\n return [(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a) * r, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcmMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxQztBQUNnRTtBQUNsRTs7QUFFbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw2Q0FBTztBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw4Q0FBSTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qiw4Q0FBSSxDQUFDLDZDQUFHO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0EscUJBQXFCLHdEQUFRO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFROztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDRDQUFNO0FBQ3ZELCtDQUErQyw0Q0FBTTtBQUNyRCxhQUFhLDZDQUFHO0FBQ2hCOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDZDQUFPOztBQUV0QjtBQUNBLGtCQUFrQix5Q0FBRyxHQUFHLDZDQUFPO0FBQy9CLDBCQUEwQiw2Q0FBRyxXQUFXLDZDQUFHO0FBQzNDO0FBQ0EsZUFBZSw2Q0FBTztBQUN0Qiw0QkFBNEIsNkNBQUcsV0FBVyw2Q0FBRztBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZDQUFPLHNEQUFzRCw4Q0FBSTtBQUN0RixlQUFlLDZDQUFHLENBQUMsNkNBQUc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLDZDQUFPO0FBQ3RCLGlCQUFpQiw4Q0FBSSxXQUFXLDZDQUFHO0FBQ25DLGlCQUFpQiw4Q0FBSSxXQUFXLDZDQUFHO0FBQ25DLDhCQUE4Qiw2Q0FBTztBQUNyQztBQUNBLDhCQUE4Qiw2Q0FBTztBQUNyQztBQUNBOztBQUVBLHFCQUFxQiw2Q0FBRztBQUN4QixxQkFBcUIsNkNBQUc7QUFDeEIscUJBQXFCLDZDQUFHO0FBQ3hCLHFCQUFxQiw2Q0FBRzs7QUFFeEI7QUFDQSxlQUFlLDZDQUFPO0FBQ3RCLHVCQUF1Qiw2Q0FBRztBQUMxQix1QkFBdUIsNkNBQUc7QUFDMUIsdUJBQXVCLDZDQUFHO0FBQzFCLHVCQUF1Qiw2Q0FBRztBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0NBQUU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw2Q0FBRyxDQUFDLDhDQUFJLHdCQUF3Qiw4Q0FBSSxzQkFBc0IsOENBQUk7QUFDdkYscUJBQXFCLDhDQUFJO0FBQ3pCLGtCQUFrQiw2Q0FBRztBQUNyQixrQkFBa0IsNkNBQUc7QUFDckIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDZDQUFPOztBQUV6QjtBQUNBLHFCQUFxQiw2Q0FBTztBQUM1QjtBQUNBOztBQUVBOztBQUVBO0FBQ0EscURBQXFELCtDQUFLLGtCQUFrQiwrQ0FBSzs7QUFFakY7QUFDQTtBQUNBLHlDQUF5QywrQ0FBSyxrQkFBa0IsK0NBQUs7QUFDckUsZ0NBQWdDLCtDQUFLLGtDQUFrQywrQ0FBSztBQUM1RSx5Q0FBeUMsK0NBQUssa0JBQWtCLCtDQUFLO0FBQ3JFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLDZDQUFPLGFBQWEsNkNBQU87O0FBRTVDO0FBQ0EscUJBQXFCLDZDQUFPO0FBQzVCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxxREFBcUQsK0NBQUssa0JBQWtCLCtDQUFLOztBQUVqRjtBQUNBO0FBQ0EseUNBQXlDLCtDQUFLLGtCQUFrQiwrQ0FBSztBQUNyRSxnQ0FBZ0MsK0NBQUssa0NBQWtDLCtDQUFLO0FBQzVFLHlDQUF5QywrQ0FBSyxrQkFBa0IsK0NBQUs7QUFDckU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEZBQTBGLHdDQUFFO0FBQzVGLFlBQVksNkNBQUcsU0FBUyw2Q0FBRztBQUMzQjs7QUFFQTtBQUNBLDJFQUEyRSx3REFBUTtBQUNuRjs7QUFFQTtBQUNBLDJFQUEyRSx3REFBUTtBQUNuRjs7QUFFQTtBQUNBLDRFQUE0RSx3REFBUTtBQUNwRjs7QUFFQTtBQUNBLDRGQUE0Rix3REFBUTtBQUNwRzs7QUFFQTtBQUNBLDBFQUEwRSx3REFBUTtBQUNsRjs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBLHdFQUF3RSx3REFBUTtBQUNoRjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2FyYy5qcz9lZWUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IHthYnMsIGFjb3MsIGFzaW4sIGF0YW4yLCBjb3MsIGVwc2lsb24sIGhhbGZQaSwgbWF4LCBtaW4sIHBpLCBzaW4sIHNxcnQsIHRhdX0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuaW1wb3J0IHt3aXRoUGF0aH0gZnJvbSBcIi4vcGF0aC5qc1wiO1xuXG5mdW5jdGlvbiBhcmNJbm5lclJhZGl1cyhkKSB7XG4gIHJldHVybiBkLmlubmVyUmFkaXVzO1xufVxuXG5mdW5jdGlvbiBhcmNPdXRlclJhZGl1cyhkKSB7XG4gIHJldHVybiBkLm91dGVyUmFkaXVzO1xufVxuXG5mdW5jdGlvbiBhcmNTdGFydEFuZ2xlKGQpIHtcbiAgcmV0dXJuIGQuc3RhcnRBbmdsZTtcbn1cblxuZnVuY3Rpb24gYXJjRW5kQW5nbGUoZCkge1xuICByZXR1cm4gZC5lbmRBbmdsZTtcbn1cblxuZnVuY3Rpb24gYXJjUGFkQW5nbGUoZCkge1xuICByZXR1cm4gZCAmJiBkLnBhZEFuZ2xlOyAvLyBOb3RlOiBvcHRpb25hbCFcbn1cblxuZnVuY3Rpb24gaW50ZXJzZWN0KHgwLCB5MCwgeDEsIHkxLCB4MiwgeTIsIHgzLCB5Mykge1xuICB2YXIgeDEwID0geDEgLSB4MCwgeTEwID0geTEgLSB5MCxcbiAgICAgIHgzMiA9IHgzIC0geDIsIHkzMiA9IHkzIC0geTIsXG4gICAgICB0ID0geTMyICogeDEwIC0geDMyICogeTEwO1xuICBpZiAodCAqIHQgPCBlcHNpbG9uKSByZXR1cm47XG4gIHQgPSAoeDMyICogKHkwIC0geTIpIC0geTMyICogKHgwIC0geDIpKSAvIHQ7XG4gIHJldHVybiBbeDAgKyB0ICogeDEwLCB5MCArIHQgKiB5MTBdO1xufVxuXG4vLyBDb21wdXRlIHBlcnBlbmRpY3VsYXIgb2Zmc2V0IGxpbmUgb2YgbGVuZ3RoIHJjLlxuLy8gaHR0cDovL21hdGh3b3JsZC53b2xmcmFtLmNvbS9DaXJjbGUtTGluZUludGVyc2VjdGlvbi5odG1sXG5mdW5jdGlvbiBjb3JuZXJUYW5nZW50cyh4MCwgeTAsIHgxLCB5MSwgcjEsIHJjLCBjdykge1xuICB2YXIgeDAxID0geDAgLSB4MSxcbiAgICAgIHkwMSA9IHkwIC0geTEsXG4gICAgICBsbyA9IChjdyA/IHJjIDogLXJjKSAvIHNxcnQoeDAxICogeDAxICsgeTAxICogeTAxKSxcbiAgICAgIG94ID0gbG8gKiB5MDEsXG4gICAgICBveSA9IC1sbyAqIHgwMSxcbiAgICAgIHgxMSA9IHgwICsgb3gsXG4gICAgICB5MTEgPSB5MCArIG95LFxuICAgICAgeDEwID0geDEgKyBveCxcbiAgICAgIHkxMCA9IHkxICsgb3ksXG4gICAgICB4MDAgPSAoeDExICsgeDEwKSAvIDIsXG4gICAgICB5MDAgPSAoeTExICsgeTEwKSAvIDIsXG4gICAgICBkeCA9IHgxMCAtIHgxMSxcbiAgICAgIGR5ID0geTEwIC0geTExLFxuICAgICAgZDIgPSBkeCAqIGR4ICsgZHkgKiBkeSxcbiAgICAgIHIgPSByMSAtIHJjLFxuICAgICAgRCA9IHgxMSAqIHkxMCAtIHgxMCAqIHkxMSxcbiAgICAgIGQgPSAoZHkgPCAwID8gLTEgOiAxKSAqIHNxcnQobWF4KDAsIHIgKiByICogZDIgLSBEICogRCkpLFxuICAgICAgY3gwID0gKEQgKiBkeSAtIGR4ICogZCkgLyBkMixcbiAgICAgIGN5MCA9ICgtRCAqIGR4IC0gZHkgKiBkKSAvIGQyLFxuICAgICAgY3gxID0gKEQgKiBkeSArIGR4ICogZCkgLyBkMixcbiAgICAgIGN5MSA9ICgtRCAqIGR4ICsgZHkgKiBkKSAvIGQyLFxuICAgICAgZHgwID0gY3gwIC0geDAwLFxuICAgICAgZHkwID0gY3kwIC0geTAwLFxuICAgICAgZHgxID0gY3gxIC0geDAwLFxuICAgICAgZHkxID0gY3kxIC0geTAwO1xuXG4gIC8vIFBpY2sgdGhlIGNsb3NlciBvZiB0aGUgdHdvIGludGVyc2VjdGlvbiBwb2ludHMuXG4gIC8vIFRPRE8gSXMgdGhlcmUgYSBmYXN0ZXIgd2F5IHRvIGRldGVybWluZSB3aGljaCBpbnRlcnNlY3Rpb24gdG8gdXNlP1xuICBpZiAoZHgwICogZHgwICsgZHkwICogZHkwID4gZHgxICogZHgxICsgZHkxICogZHkxKSBjeDAgPSBjeDEsIGN5MCA9IGN5MTtcblxuICByZXR1cm4ge1xuICAgIGN4OiBjeDAsXG4gICAgY3k6IGN5MCxcbiAgICB4MDE6IC1veCxcbiAgICB5MDE6IC1veSxcbiAgICB4MTE6IGN4MCAqIChyMSAvIHIgLSAxKSxcbiAgICB5MTE6IGN5MCAqIChyMSAvIHIgLSAxKVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGlubmVyUmFkaXVzID0gYXJjSW5uZXJSYWRpdXMsXG4gICAgICBvdXRlclJhZGl1cyA9IGFyY091dGVyUmFkaXVzLFxuICAgICAgY29ybmVyUmFkaXVzID0gY29uc3RhbnQoMCksXG4gICAgICBwYWRSYWRpdXMgPSBudWxsLFxuICAgICAgc3RhcnRBbmdsZSA9IGFyY1N0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZSA9IGFyY0VuZEFuZ2xlLFxuICAgICAgcGFkQW5nbGUgPSBhcmNQYWRBbmdsZSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgcGF0aCA9IHdpdGhQYXRoKGFyYyk7XG5cbiAgZnVuY3Rpb24gYXJjKCkge1xuICAgIHZhciBidWZmZXIsXG4gICAgICAgIHIsXG4gICAgICAgIHIwID0gK2lubmVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHIxID0gK291dGVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIGEwID0gc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIC0gaGFsZlBpLFxuICAgICAgICBhMSA9IGVuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLSBoYWxmUGksXG4gICAgICAgIGRhID0gYWJzKGExIC0gYTApLFxuICAgICAgICBjdyA9IGExID4gYTA7XG5cbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgb3V0ZXIgcmFkaXVzIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiB0aGUgaW5uZXIgcmFkaXVzLlxuICAgIGlmIChyMSA8IHIwKSByID0gcjEsIHIxID0gcjAsIHIwID0gcjtcblxuICAgIC8vIElzIGl0IGEgcG9pbnQ/XG4gICAgaWYgKCEocjEgPiBlcHNpbG9uKSkgY29udGV4dC5tb3ZlVG8oMCwgMCk7XG5cbiAgICAvLyBPciBpcyBpdCBhIGNpcmNsZSBvciBhbm51bHVzP1xuICAgIGVsc2UgaWYgKGRhID4gdGF1IC0gZXBzaWxvbikge1xuICAgICAgY29udGV4dC5tb3ZlVG8ocjEgKiBjb3MoYTApLCByMSAqIHNpbihhMCkpO1xuICAgICAgY29udGV4dC5hcmMoMCwgMCwgcjEsIGEwLCBhMSwgIWN3KTtcbiAgICAgIGlmIChyMCA+IGVwc2lsb24pIHtcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocjAgKiBjb3MoYTEpLCByMCAqIHNpbihhMSkpO1xuICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMCwgYTEsIGEwLCBjdyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3IgaXMgaXQgYSBjaXJjdWxhciBvciBhbm51bGFyIHNlY3Rvcj9cbiAgICBlbHNlIHtcbiAgICAgIHZhciBhMDEgPSBhMCxcbiAgICAgICAgICBhMTEgPSBhMSxcbiAgICAgICAgICBhMDAgPSBhMCxcbiAgICAgICAgICBhMTAgPSBhMSxcbiAgICAgICAgICBkYTAgPSBkYSxcbiAgICAgICAgICBkYTEgPSBkYSxcbiAgICAgICAgICBhcCA9IHBhZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgLyAyLFxuICAgICAgICAgIHJwID0gKGFwID4gZXBzaWxvbikgJiYgKHBhZFJhZGl1cyA/ICtwYWRSYWRpdXMuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IHNxcnQocjAgKiByMCArIHIxICogcjEpKSxcbiAgICAgICAgICByYyA9IG1pbihhYnMocjEgLSByMCkgLyAyLCArY29ybmVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpLFxuICAgICAgICAgIHJjMCA9IHJjLFxuICAgICAgICAgIHJjMSA9IHJjLFxuICAgICAgICAgIHQwLFxuICAgICAgICAgIHQxO1xuXG4gICAgICAvLyBBcHBseSBwYWRkaW5nPyBOb3RlIHRoYXQgc2luY2UgcjEg4omlIHIwLCBkYTEg4omlIGRhMC5cbiAgICAgIGlmIChycCA+IGVwc2lsb24pIHtcbiAgICAgICAgdmFyIHAwID0gYXNpbihycCAvIHIwICogc2luKGFwKSksXG4gICAgICAgICAgICBwMSA9IGFzaW4ocnAgLyByMSAqIHNpbihhcCkpO1xuICAgICAgICBpZiAoKGRhMCAtPSBwMCAqIDIpID4gZXBzaWxvbikgcDAgKj0gKGN3ID8gMSA6IC0xKSwgYTAwICs9IHAwLCBhMTAgLT0gcDA7XG4gICAgICAgIGVsc2UgZGEwID0gMCwgYTAwID0gYTEwID0gKGEwICsgYTEpIC8gMjtcbiAgICAgICAgaWYgKChkYTEgLT0gcDEgKiAyKSA+IGVwc2lsb24pIHAxICo9IChjdyA/IDEgOiAtMSksIGEwMSArPSBwMSwgYTExIC09IHAxO1xuICAgICAgICBlbHNlIGRhMSA9IDAsIGEwMSA9IGExMSA9IChhMCArIGExKSAvIDI7XG4gICAgICB9XG5cbiAgICAgIHZhciB4MDEgPSByMSAqIGNvcyhhMDEpLFxuICAgICAgICAgIHkwMSA9IHIxICogc2luKGEwMSksXG4gICAgICAgICAgeDEwID0gcjAgKiBjb3MoYTEwKSxcbiAgICAgICAgICB5MTAgPSByMCAqIHNpbihhMTApO1xuXG4gICAgICAvLyBBcHBseSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBpZiAocmMgPiBlcHNpbG9uKSB7XG4gICAgICAgIHZhciB4MTEgPSByMSAqIGNvcyhhMTEpLFxuICAgICAgICAgICAgeTExID0gcjEgKiBzaW4oYTExKSxcbiAgICAgICAgICAgIHgwMCA9IHIwICogY29zKGEwMCksXG4gICAgICAgICAgICB5MDAgPSByMCAqIHNpbihhMDApLFxuICAgICAgICAgICAgb2M7XG5cbiAgICAgICAgLy8gUmVzdHJpY3QgdGhlIGNvcm5lciByYWRpdXMgYWNjb3JkaW5nIHRvIHRoZSBzZWN0b3IgYW5nbGUuIElmIHRoaXNcbiAgICAgICAgLy8gaW50ZXJzZWN0aW9uIGZhaWxzLCBpdOKAmXMgcHJvYmFibHkgYmVjYXVzZSB0aGUgYXJjIGlzIHRvbyBzbWFsbCwgc29cbiAgICAgICAgLy8gZGlzYWJsZSB0aGUgY29ybmVyIHJhZGl1cyBlbnRpcmVseS5cbiAgICAgICAgaWYgKGRhIDwgcGkpIHtcbiAgICAgICAgICBpZiAob2MgPSBpbnRlcnNlY3QoeDAxLCB5MDEsIHgwMCwgeTAwLCB4MTEsIHkxMSwgeDEwLCB5MTApKSB7XG4gICAgICAgICAgICB2YXIgYXggPSB4MDEgLSBvY1swXSxcbiAgICAgICAgICAgICAgICBheSA9IHkwMSAtIG9jWzFdLFxuICAgICAgICAgICAgICAgIGJ4ID0geDExIC0gb2NbMF0sXG4gICAgICAgICAgICAgICAgYnkgPSB5MTEgLSBvY1sxXSxcbiAgICAgICAgICAgICAgICBrYyA9IDEgLyBzaW4oYWNvcygoYXggKiBieCArIGF5ICogYnkpIC8gKHNxcnQoYXggKiBheCArIGF5ICogYXkpICogc3FydChieCAqIGJ4ICsgYnkgKiBieSkpKSAvIDIpLFxuICAgICAgICAgICAgICAgIGxjID0gc3FydChvY1swXSAqIG9jWzBdICsgb2NbMV0gKiBvY1sxXSk7XG4gICAgICAgICAgICByYzAgPSBtaW4ocmMsIChyMCAtIGxjKSAvIChrYyAtIDEpKTtcbiAgICAgICAgICAgIHJjMSA9IG1pbihyYywgKHIxIC0gbGMpIC8gKGtjICsgMSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByYzAgPSByYzEgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJcyB0aGUgc2VjdG9yIGNvbGxhcHNlZCB0byBhIGxpbmU/XG4gICAgICBpZiAoIShkYTEgPiBlcHNpbG9uKSkgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpO1xuXG4gICAgICAvLyBEb2VzIHRoZSBzZWN0b3LigJlzIG91dGVyIHJpbmcgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzEgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDAwLCB5MDAsIHgwMSwgeTAxLCByMSwgcmMxLCBjdyk7XG4gICAgICAgIHQxID0gY29ybmVyVGFuZ2VudHMoeDExLCB5MTEsIHgxMCwgeTEwLCByMSwgcmMxLCBjdyk7XG5cbiAgICAgICAgY29udGV4dC5tb3ZlVG8odDAuY3ggKyB0MC54MDEsIHQwLmN5ICsgdDAueTAxKTtcblxuICAgICAgICAvLyBIYXZlIHRoZSBjb3JuZXJzIG1lcmdlZD9cbiAgICAgICAgaWYgKHJjMSA8IHJjKSBjb250ZXh0LmFyYyh0MC5jeCwgdDAuY3ksIHJjMSwgYXRhbjIodDAueTAxLCB0MC54MDEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBkcmF3IHRoZSB0d28gY29ybmVycyBhbmQgdGhlIHJpbmcuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMxLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQwLnkxMSwgdDAueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYygwLCAwLCByMSwgYXRhbjIodDAuY3kgKyB0MC55MTEsIHQwLmN4ICsgdDAueDExKSwgYXRhbjIodDEuY3kgKyB0MS55MTEsIHQxLmN4ICsgdDEueDExKSwgIWN3KTtcbiAgICAgICAgICBjb250ZXh0LmFyYyh0MS5jeCwgdDEuY3ksIHJjMSwgYXRhbjIodDEueTExLCB0MS54MTEpLCBhdGFuMih0MS55MDEsIHQxLngwMSksICFjdyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3IgaXMgdGhlIG91dGVyIHJpbmcganVzdCBhIGNpcmN1bGFyIGFyYz9cbiAgICAgIGVsc2UgY29udGV4dC5tb3ZlVG8oeDAxLCB5MDEpLCBjb250ZXh0LmFyYygwLCAwLCByMSwgYTAxLCBhMTEsICFjdyk7XG5cbiAgICAgIC8vIElzIHRoZXJlIG5vIGlubmVyIHJpbmcsIGFuZCBpdOKAmXMgYSBjaXJjdWxhciBzZWN0b3I/XG4gICAgICAvLyBPciBwZXJoYXBzIGl04oCZcyBhbiBhbm51bGFyIHNlY3RvciBjb2xsYXBzZWQgZHVlIHRvIHBhZGRpbmc/XG4gICAgICBpZiAoIShyMCA+IGVwc2lsb24pIHx8ICEoZGEwID4gZXBzaWxvbikpIGNvbnRleHQubGluZVRvKHgxMCwgeTEwKTtcblxuICAgICAgLy8gRG9lcyB0aGUgc2VjdG9y4oCZcyBpbm5lciByaW5nIChvciBwb2ludCkgaGF2ZSByb3VuZGVkIGNvcm5lcnM/XG4gICAgICBlbHNlIGlmIChyYzAgPiBlcHNpbG9uKSB7XG4gICAgICAgIHQwID0gY29ybmVyVGFuZ2VudHMoeDEwLCB5MTAsIHgxMSwgeTExLCByMCwgLXJjMCwgY3cpO1xuICAgICAgICB0MSA9IGNvcm5lclRhbmdlbnRzKHgwMSwgeTAxLCB4MDAsIHkwMCwgcjAsIC1yYzAsIGN3KTtcblxuICAgICAgICBjb250ZXh0LmxpbmVUbyh0MC5jeCArIHQwLngwMSwgdDAuY3kgKyB0MC55MDEpO1xuXG4gICAgICAgIC8vIEhhdmUgdGhlIGNvcm5lcnMgbWVyZ2VkP1xuICAgICAgICBpZiAocmMwIDwgcmMpIGNvbnRleHQuYXJjKHQwLmN4LCB0MC5jeSwgcmMwLCBhdGFuMih0MC55MDEsIHQwLngwMSksIGF0YW4yKHQxLnkwMSwgdDEueDAxKSwgIWN3KTtcblxuICAgICAgICAvLyBPdGhlcndpc2UsIGRyYXcgdGhlIHR3byBjb3JuZXJzIGFuZCB0aGUgcmluZy5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29udGV4dC5hcmModDAuY3gsIHQwLmN5LCByYzAsIGF0YW4yKHQwLnkwMSwgdDAueDAxKSwgYXRhbjIodDAueTExLCB0MC54MTEpLCAhY3cpO1xuICAgICAgICAgIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhdGFuMih0MC5jeSArIHQwLnkxMSwgdDAuY3ggKyB0MC54MTEpLCBhdGFuMih0MS5jeSArIHQxLnkxMSwgdDEuY3ggKyB0MS54MTEpLCBjdyk7XG4gICAgICAgICAgY29udGV4dC5hcmModDEuY3gsIHQxLmN5LCByYzAsIGF0YW4yKHQxLnkxMSwgdDEueDExKSwgYXRhbjIodDEueTAxLCB0MS54MDEpLCAhY3cpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE9yIGlzIHRoZSBpbm5lciByaW5nIGp1c3QgYSBjaXJjdWxhciBhcmM/XG4gICAgICBlbHNlIGNvbnRleHQuYXJjKDAsIDAsIHIwLCBhMTAsIGEwMCwgY3cpO1xuICAgIH1cblxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gY29udGV4dCA9IG51bGwsIGJ1ZmZlciArIFwiXCIgfHwgbnVsbDtcbiAgfVxuXG4gIGFyYy5jZW50cm9pZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByID0gKCtpbm5lclJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK291dGVyUmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMixcbiAgICAgICAgYSA9ICgrc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpICsgK2VuZEFuZ2xlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIC8gMiAtIHBpIC8gMjtcbiAgICByZXR1cm4gW2NvcyhhKSAqIHIsIHNpbihhKSAqIHJdO1xuICB9O1xuXG4gIGFyYy5pbm5lclJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChpbm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogaW5uZXJSYWRpdXM7XG4gIH07XG5cbiAgYXJjLm91dGVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG91dGVyUmFkaXVzID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBvdXRlclJhZGl1cztcbiAgfTtcblxuICBhcmMuY29ybmVyUmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGNvcm5lclJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogY29ybmVyUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5wYWRSYWRpdXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkUmFkaXVzID0gXyA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmMpIDogcGFkUmFkaXVzO1xuICB9O1xuXG4gIGFyYy5zdGFydEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHN0YXJ0QW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHN0YXJ0QW5nbGU7XG4gIH07XG5cbiAgYXJjLmVuZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGVuZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyYykgOiBlbmRBbmdsZTtcbiAgfTtcblxuICBhcmMucGFkQW5nbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocGFkQW5nbGUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJjKSA6IHBhZEFuZ2xlO1xuICB9O1xuXG4gIGFyYy5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKChjb250ZXh0ID0gXyA9PSBudWxsID8gbnVsbCA6IF8pLCBhcmMpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gYXJjO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/arc.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/area.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/area.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curve/linear.js */ \"../../../node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./line.js */ \"../../../node_modules/d3-shape/src/line.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-shape/src/path.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./point.js */ \"../../../node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x0, y0, y1) {\n var x1 = null,\n defined = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(true),\n context = null,\n curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n output = null,\n path = (0,_path_js__WEBPACK_IMPORTED_MODULE_2__.withPath)(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_3__.x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(0) : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_3__.y : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = (0,_array_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return (0,_line_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcmVhLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0I7QUFDTTtBQUNPO0FBQ2Y7QUFDTTtBQUNpQjs7QUFFcEQsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSxnQkFBZ0Isd0RBQVE7QUFDeEI7QUFDQSxjQUFjLHdEQUFXO0FBQ3pCO0FBQ0EsYUFBYSxrREFBUTs7QUFFckIsNERBQTRELHdDQUFNLEdBQUcsd0RBQVE7QUFDN0UsNERBQTRELHdEQUFRLE1BQU0sd0RBQVE7QUFDbEYsNERBQTRELHdDQUFNLEdBQUcsd0RBQVE7O0FBRTdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFLO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsZ0JBQWdCLFFBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsMEJBQTBCLFFBQVE7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxvREFBSTtBQUNmOztBQUVBO0FBQ0Esa0VBQWtFLHdEQUFRO0FBQzFFOztBQUVBO0FBQ0Esa0VBQWtFLHdEQUFRO0FBQzFFOztBQUVBO0FBQ0EscUZBQXFGLHdEQUFRO0FBQzdGOztBQUVBO0FBQ0Esa0VBQWtFLHdEQUFRO0FBQzFFOztBQUVBO0FBQ0Esa0VBQWtFLHdEQUFRO0FBQzFFOztBQUVBO0FBQ0EscUZBQXFGLHdEQUFRO0FBQzdGOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1RUFBdUUsd0RBQVE7QUFDL0U7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvYXJlYS5qcz9jNjhiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheSBmcm9tIFwiLi9hcnJheS5qc1wiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50LmpzXCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyLmpzXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5pbXBvcnQge3dpdGhQYXRofSBmcm9tIFwiLi9wYXRoLmpzXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeDAsIHkwLCB5MSkge1xuICB2YXIgeDEgPSBudWxsLFxuICAgICAgZGVmaW5lZCA9IGNvbnN0YW50KHRydWUpLFxuICAgICAgY29udGV4dCA9IG51bGwsXG4gICAgICBjdXJ2ZSA9IGN1cnZlTGluZWFyLFxuICAgICAgb3V0cHV0ID0gbnVsbCxcbiAgICAgIHBhdGggPSB3aXRoUGF0aChhcmVhKTtcblxuICB4MCA9IHR5cGVvZiB4MCA9PT0gXCJmdW5jdGlvblwiID8geDAgOiAoeDAgPT09IHVuZGVmaW5lZCkgPyBwb2ludFggOiBjb25zdGFudCgreDApO1xuICB5MCA9IHR5cGVvZiB5MCA9PT0gXCJmdW5jdGlvblwiID8geTAgOiAoeTAgPT09IHVuZGVmaW5lZCkgPyBjb25zdGFudCgwKSA6IGNvbnN0YW50KCt5MCk7XG4gIHkxID0gdHlwZW9mIHkxID09PSBcImZ1bmN0aW9uXCIgPyB5MSA6ICh5MSA9PT0gdW5kZWZpbmVkKSA/IHBvaW50WSA6IGNvbnN0YW50KCt5MSk7XG5cbiAgZnVuY3Rpb24gYXJlYShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIGosXG4gICAgICAgIGssXG4gICAgICAgIG4gPSAoZGF0YSA9IGFycmF5KGRhdGEpKS5sZW5ndGgsXG4gICAgICAgIGQsXG4gICAgICAgIGRlZmluZWQwID0gZmFsc2UsXG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgeDB6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgICB5MHogPSBuZXcgQXJyYXkobik7XG5cbiAgICBpZiAoY29udGV4dCA9PSBudWxsKSBvdXRwdXQgPSBjdXJ2ZShidWZmZXIgPSBwYXRoKCkpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8PSBuOyArK2kpIHtcbiAgICAgIGlmICghKGkgPCBuICYmIGRlZmluZWQoZCA9IGRhdGFbaV0sIGksIGRhdGEpKSA9PT0gZGVmaW5lZDApIHtcbiAgICAgICAgaWYgKGRlZmluZWQwID0gIWRlZmluZWQwKSB7XG4gICAgICAgICAgaiA9IGk7XG4gICAgICAgICAgb3V0cHV0LmFyZWFTdGFydCgpO1xuICAgICAgICAgIG91dHB1dC5saW5lU3RhcnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRwdXQubGluZUVuZCgpO1xuICAgICAgICAgIG91dHB1dC5saW5lU3RhcnQoKTtcbiAgICAgICAgICBmb3IgKGsgPSBpIC0gMTsgayA+PSBqOyAtLWspIHtcbiAgICAgICAgICAgIG91dHB1dC5wb2ludCh4MHpba10sIHkweltrXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICAgICAgb3V0cHV0LmFyZWFFbmQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRlZmluZWQwKSB7XG4gICAgICAgIHgweltpXSA9ICt4MChkLCBpLCBkYXRhKSwgeTB6W2ldID0gK3kwKGQsIGksIGRhdGEpO1xuICAgICAgICBvdXRwdXQucG9pbnQoeDEgPyAreDEoZCwgaSwgZGF0YSkgOiB4MHpbaV0sIHkxID8gK3kxKGQsIGksIGRhdGEpIDogeTB6W2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gb3V0cHV0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gYXJlYWxpbmUoKSB7XG4gICAgcmV0dXJuIGxpbmUoKS5kZWZpbmVkKGRlZmluZWQpLmN1cnZlKGN1cnZlKS5jb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgYXJlYS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHgwID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHgxID0gbnVsbCwgYXJlYSkgOiB4MDtcbiAgfTtcblxuICBhcmVhLngwID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHgwID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGFyZWEpIDogeDA7XG4gIH07XG5cbiAgYXJlYS54MSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4MSA9IF8gPT0gbnVsbCA/IG51bGwgOiB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJlYSkgOiB4MTtcbiAgfTtcblxuICBhcmVhLnkgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeTAgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgeTEgPSBudWxsLCBhcmVhKSA6IHkwO1xuICB9O1xuXG4gIGFyZWEueTAgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeTAgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgYXJlYSkgOiB5MDtcbiAgfTtcblxuICBhcmVhLnkxID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkxID0gXyA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBhcmVhKSA6IHkxO1xuICB9O1xuXG4gIGFyZWEubGluZVgwID1cbiAgYXJlYS5saW5lWTAgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYXJlYWxpbmUoKS54KHgwKS55KHkwKTtcbiAgfTtcblxuICBhcmVhLmxpbmVZMSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBhcmVhbGluZSgpLngoeDApLnkoeTEpO1xuICB9O1xuXG4gIGFyZWEubGluZVgxID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGFyZWFsaW5lKCkueCh4MSkueSh5MCk7XG4gIH07XG5cbiAgYXJlYS5kZWZpbmVkID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGRlZmluZWQgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIGFyZWEpIDogZGVmaW5lZDtcbiAgfTtcblxuICBhcmVhLmN1cnZlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGN1cnZlID0gXywgY29udGV4dCAhPSBudWxsICYmIChvdXRwdXQgPSBjdXJ2ZShjb250ZXh0KSksIGFyZWEpIDogY3VydmU7XG4gIH07XG5cbiAgYXJlYS5jb250ZXh0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKF8gPT0gbnVsbCA/IGNvbnRleHQgPSBvdXRwdXQgPSBudWxsIDogb3V0cHV0ID0gY3VydmUoY29udGV4dCA9IF8pLCBhcmVhKSA6IGNvbnRleHQ7XG4gIH07XG5cbiAgcmV0dXJuIGFyZWE7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/area.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/areaRadial.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/areaRadial.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curve/radial.js */ \"../../../node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-shape/src/area.js\");\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineRadial.js */ \"../../../node_modules/d3-shape/src/lineRadial.js\");\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var a = (0,_area_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_1__.curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return (0,_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__.lineRadial)(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return (0,_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__.lineRadial)(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return (0,_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__.lineRadial)(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return (0,_lineRadial_js__WEBPACK_IMPORTED_MODULE_2__.lineRadial)(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c((0,_curve_radial_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_)) : c()._curve;\n };\n\n return a;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcmVhUmFkaWFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBaUU7QUFDcEM7QUFDYzs7QUFFM0MsNkJBQWUsc0NBQVc7QUFDMUIsVUFBVSxvREFBSSxTQUFTLCtEQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxPQUFPLDBEQUFVLFNBQVM7QUFDNUQsZ0NBQWdDLE9BQU8sMERBQVUsU0FBUztBQUMxRCxtQ0FBbUMsT0FBTywwREFBVSxTQUFTO0FBQzdELG1DQUFtQyxPQUFPLDBEQUFVLFNBQVM7O0FBRTdEO0FBQ0EsZ0NBQWdDLDREQUFXO0FBQzNDOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcmVhUmFkaWFsLmpzPzA4OGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGN1cnZlUmFkaWFsLCB7Y3VydmVSYWRpYWxMaW5lYXJ9IGZyb20gXCIuL2N1cnZlL3JhZGlhbC5qc1wiO1xuaW1wb3J0IGFyZWEgZnJvbSBcIi4vYXJlYS5qc1wiO1xuaW1wb3J0IHtsaW5lUmFkaWFsfSBmcm9tIFwiLi9saW5lUmFkaWFsLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgYSA9IGFyZWEoKS5jdXJ2ZShjdXJ2ZVJhZGlhbExpbmVhciksXG4gICAgICBjID0gYS5jdXJ2ZSxcbiAgICAgIHgwID0gYS5saW5lWDAsXG4gICAgICB4MSA9IGEubGluZVgxLFxuICAgICAgeTAgPSBhLmxpbmVZMCxcbiAgICAgIHkxID0gYS5saW5lWTE7XG5cbiAgYS5hbmdsZSA9IGEueCwgZGVsZXRlIGEueDtcbiAgYS5zdGFydEFuZ2xlID0gYS54MCwgZGVsZXRlIGEueDA7XG4gIGEuZW5kQW5nbGUgPSBhLngxLCBkZWxldGUgYS54MTtcbiAgYS5yYWRpdXMgPSBhLnksIGRlbGV0ZSBhLnk7XG4gIGEuaW5uZXJSYWRpdXMgPSBhLnkwLCBkZWxldGUgYS55MDtcbiAgYS5vdXRlclJhZGl1cyA9IGEueTEsIGRlbGV0ZSBhLnkxO1xuICBhLmxpbmVTdGFydEFuZ2xlID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHgwKCkpOyB9LCBkZWxldGUgYS5saW5lWDA7XG4gIGEubGluZUVuZEFuZ2xlID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHgxKCkpOyB9LCBkZWxldGUgYS5saW5lWDE7XG4gIGEubGluZUlubmVyUmFkaXVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHkwKCkpOyB9LCBkZWxldGUgYS5saW5lWTA7XG4gIGEubGluZU91dGVyUmFkaXVzID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lUmFkaWFsKHkxKCkpOyB9LCBkZWxldGUgYS5saW5lWTE7XG5cbiAgYS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGMoY3VydmVSYWRpYWwoXykpIDogYygpLl9jdXJ2ZTtcbiAgfTtcblxuICByZXR1cm4gYTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/areaRadial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/array.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-shape/src/array.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"slice\": () => (/* binding */ slice)\n/* harmony export */ });\nvar slice = Array.prototype.slice;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPOztBQUVQLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9hcnJheS5qcz80MWVhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIFwibGVuZ3RoXCIgaW4geFxuICAgID8geCAvLyBBcnJheSwgVHlwZWRBcnJheSwgTm9kZUxpc3QsIGFycmF5LWxpa2VcbiAgICA6IEFycmF5LmZyb20oeCk7IC8vIE1hcCwgU2V0LCBpdGVyYWJsZSwgc3RyaW5nLCBvciBhbnl0aGluZyBlbHNlXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/constant.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-shape/src/constant.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x) {\n return function constant() {\n return x;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jb25zdGFudC5qcz8xMzIwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/basis.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/basis.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Basis\": () => (/* binding */ Basis),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"point\": () => (/* binding */ point)\n/* harmony export */ });\nfunction point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nfunction Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new Basis(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLCtDQUErQztBQUMvQyx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixzRUFBc0U7QUFDckcsK0JBQStCO0FBQy9CLCtCQUErQixvRkFBb0Y7QUFDbkgsa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzLmpzP2FkYmYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBvaW50KHRoYXQsIHgsIHkpIHtcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKFxuICAgICgyICogdGhhdC5feDAgKyB0aGF0Ll94MSkgLyAzLFxuICAgICgyICogdGhhdC5feTAgKyB0aGF0Ll95MSkgLyAzLFxuICAgICh0aGF0Ll94MCArIDIgKiB0aGF0Ll94MSkgLyAzLFxuICAgICh0aGF0Ll95MCArIDIgKiB0aGF0Ll95MSkgLyAzLFxuICAgICh0aGF0Ll94MCArIDQgKiB0aGF0Ll94MSArIHgpIC8gNixcbiAgICAodGhhdC5feTAgKyA0ICogdGhhdC5feTEgKyB5KSAvIDZcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJhc2lzKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gTmFOO1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAzOiBwb2ludCh0aGlzLCB0aGlzLl94MSwgdGhpcy5feTEpOyAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBjYXNlIDI6IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5fY29udGV4dC5saW5lVG8oKDUgKiB0aGlzLl94MCArIHRoaXMuX3gxKSAvIDYsICg1ICogdGhpcy5feTAgKyB0aGlzLl95MSkgLyA2KTsgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXMoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/basis.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/basisClosed.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/basisClosed.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-shape/src/curve/basis.js\");\n\n\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: (0,_basis_js__WEBPACK_IMPORTED_MODULE_1__.point)(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new BasisClosed(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc0Nsb3NlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEI7QUFDRzs7QUFFakM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxnREFBSTtBQUNqQixXQUFXLGdEQUFJO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsNEJBQTRCO0FBQzNELCtCQUErQiw0QkFBNEI7QUFDM0QsK0JBQStCLDRCQUE0Qiw0RkFBNEY7QUFDdkosZUFBZSxnREFBSyxjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzQ2xvc2VkLmpzPzRiNjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmZ1bmN0aW9uIEJhc2lzQ2xvc2VkKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkJhc2lzQ2xvc2VkLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBub29wLFxuICBhcmVhRW5kOiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9IHRoaXMuX3gzID0gdGhpcy5feDQgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyICsgMiAqIHRoaXMuX3gzKSAvIDMsICh0aGlzLl95MiArIDIgKiB0aGlzLl95MykgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzICsgMiAqIHRoaXMuX3gyKSAvIDMsICh0aGlzLl95MyArIDIgKiB0aGlzLl95MikgLyAzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MiwgdGhpcy5feTIpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3gzLCB0aGlzLl95Myk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDQsIHRoaXMuX3k0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl94MiA9IHgsIHRoaXMuX3kyID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5OyB0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDAgKyA0ICogdGhpcy5feDEgKyB4KSAvIDYsICh0aGlzLl95MCArIDQgKiB0aGlzLl95MSArIHkpIC8gNik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQmFzaXNDbG9zZWQoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/basisClosed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/basisOpen.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/basisOpen.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: (0,_basis_js__WEBPACK_IMPORTED_MODULE_0__.point)(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new BasisOpen(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9iYXNpc09wZW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUM7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0Isb0ZBQW9GLDBFQUEwRTtBQUM3TCwrQkFBK0I7QUFDL0IsZUFBZSxnREFBSyxjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2Jhc2lzT3Blbi5qcz82NzI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmZ1bmN0aW9uIEJhc2lzT3Blbihjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5CYXNpc09wZW4ucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB2YXIgeDAgPSAodGhpcy5feDAgKyA0ICogdGhpcy5feDEgKyB4KSAvIDYsIHkwID0gKHRoaXMuX3kwICsgNCAqIHRoaXMuX3kxICsgeSkgLyA2OyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeDAsIHkwKSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgwLCB5MCk7IGJyZWFrO1xuICAgICAgY2FzZSAzOiB0aGlzLl9wb2ludCA9IDQ7IC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJhc2lzT3Blbihjb250ZXh0KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/basisOpen.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/bump.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/bump.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"bumpRadial\": () => (/* binding */ bumpRadial),\n/* harmony export */ \"bumpX\": () => (/* binding */ bumpX),\n/* harmony export */ \"bumpY\": () => (/* binding */ bumpY)\n/* harmony export */ });\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../pointRadial.js */ \"../../../node_modules/d3-shape/src/pointRadial.js\");\n\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = (0,_pointRadial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this._x0, this._y0);\n const p1 = (0,_pointRadial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = (0,_pointRadial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x, this._y0);\n const p3 = (0,_pointRadial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nfunction bumpX(context) {\n return new Bump(context, true);\n}\n\nfunction bumpY(context) {\n return new Bump(context, false);\n}\n\nfunction bumpRadial(context) {\n return new BumpRadial(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW1wLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLGlCQUFpQiwyREFBVztBQUM1QixpQkFBaUIsMkRBQVc7QUFDNUIsaUJBQWlCLDJEQUFXO0FBQzVCLGlCQUFpQiwyREFBVztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW1wLmpzPzczM2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBvaW50UmFkaWFsIGZyb20gXCIuLi9wb2ludFJhZGlhbC5qc1wiO1xuXG5jbGFzcyBCdW1wIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgeCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX3ggPSB4O1xuICB9XG4gIGFyZWFTdGFydCgpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfVxuICBhcmVhRW5kKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH1cbiAgbGluZVN0YXJ0KCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfVxuICBsaW5lRW5kKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH1cbiAgcG9pbnQoeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLl9wb2ludCA9IDE7XG4gICAgICAgIGlmICh0aGlzLl9saW5lKSB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgZWxzZSB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodGhpcy5feCkgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3gwID0gKHRoaXMuX3gwICsgeCkgLyAyLCB0aGlzLl95MCwgdGhpcy5feDAsIHksIHgsIHkpO1xuICAgICAgICBlbHNlIHRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0aGlzLl94MCwgdGhpcy5feTAgPSAodGhpcy5feTAgKyB5KSAvIDIsIHgsIHRoaXMuX3kwLCB4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3gwID0geCwgdGhpcy5feTAgPSB5O1xuICB9XG59XG5cbmNsYXNzIEJ1bXBSYWRpYWwge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0KSB7XG4gICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cbiAgbGluZVN0YXJ0KCkge1xuICAgIHRoaXMuX3BvaW50ID0gMDtcbiAgfVxuICBsaW5lRW5kKCkge31cbiAgcG9pbnQoeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIGlmICh0aGlzLl9wb2ludCA9PT0gMCkge1xuICAgICAgdGhpcy5fcG9pbnQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwMCA9IHBvaW50UmFkaWFsKHRoaXMuX3gwLCB0aGlzLl95MCk7XG4gICAgICBjb25zdCBwMSA9IHBvaW50UmFkaWFsKHRoaXMuX3gwLCB0aGlzLl95MCA9ICh0aGlzLl95MCArIHkpIC8gMik7XG4gICAgICBjb25zdCBwMiA9IHBvaW50UmFkaWFsKHgsIHRoaXMuX3kwKTtcbiAgICAgIGNvbnN0IHAzID0gcG9pbnRSYWRpYWwoeCwgeSk7XG4gICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyguLi5wMCk7XG4gICAgICB0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oLi4ucDEsIC4uLnAyLCAuLi5wMyk7XG4gICAgfVxuICAgIHRoaXMuX3gwID0geCwgdGhpcy5feTAgPSB5O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgQnVtcChjb250ZXh0LCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXBZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBCdW1wKGNvbnRleHQsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1bXBSYWRpYWwoY29udGV4dCkge1xuICByZXR1cm4gbmV3IEJ1bXBSYWRpYWwoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/bump.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/bundle.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/bundle.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _basis_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./basis.js */ \"../../../node_modules/d3-shape/src/curve/basis.js\");\n\n\nfunction Bundle(context, beta) {\n this._basis = new _basis_js__WEBPACK_IMPORTED_MODULE_0__.Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new _basis_js__WEBPACK_IMPORTED_MODULE_0__.Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9idW5kbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUM7O0FBRWpDO0FBQ0Esb0JBQW9CLDRDQUFLO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZTs7QUFFZjtBQUNBLDRCQUE0Qiw0Q0FBSztBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2J1bmRsZS5qcz8yZDBkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzaXN9IGZyb20gXCIuL2Jhc2lzLmpzXCI7XG5cbmZ1bmN0aW9uIEJ1bmRsZShjb250ZXh0LCBiZXRhKSB7XG4gIHRoaXMuX2Jhc2lzID0gbmV3IEJhc2lzKGNvbnRleHQpO1xuICB0aGlzLl9iZXRhID0gYmV0YTtcbn1cblxuQnVuZGxlLnByb3RvdHlwZSA9IHtcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gW107XG4gICAgdGhpcy5feSA9IFtdO1xuICAgIHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IHRoaXMuX3gsXG4gICAgICAgIHkgPSB0aGlzLl95LFxuICAgICAgICBqID0geC5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGogPiAwKSB7XG4gICAgICB2YXIgeDAgPSB4WzBdLFxuICAgICAgICAgIHkwID0geVswXSxcbiAgICAgICAgICBkeCA9IHhbal0gLSB4MCxcbiAgICAgICAgICBkeSA9IHlbal0gLSB5MCxcbiAgICAgICAgICBpID0gLTEsXG4gICAgICAgICAgdDtcblxuICAgICAgd2hpbGUgKCsraSA8PSBqKSB7XG4gICAgICAgIHQgPSBpIC8gajtcbiAgICAgICAgdGhpcy5fYmFzaXMucG9pbnQoXG4gICAgICAgICAgdGhpcy5fYmV0YSAqIHhbaV0gKyAoMSAtIHRoaXMuX2JldGEpICogKHgwICsgdCAqIGR4KSxcbiAgICAgICAgICB0aGlzLl9iZXRhICogeVtpXSArICgxIC0gdGhpcy5fYmV0YSkgKiAoeTAgKyB0ICogZHkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5feCA9IHRoaXMuX3kgPSBudWxsO1xuICAgIHRoaXMuX2Jhc2lzLmxpbmVFbmQoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB0aGlzLl94LnB1c2goK3gpO1xuICAgIHRoaXMuX3kucHVzaCgreSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20oYmV0YSkge1xuXG4gIGZ1bmN0aW9uIGJ1bmRsZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGJldGEgPT09IDEgPyBuZXcgQmFzaXMoY29udGV4dCkgOiBuZXcgQnVuZGxlKGNvbnRleHQsIGJldGEpO1xuICB9XG5cbiAgYnVuZGxlLmJldGEgPSBmdW5jdGlvbihiZXRhKSB7XG4gICAgcmV0dXJuIGN1c3RvbSgrYmV0YSk7XG4gIH07XG5cbiAgcmV0dXJuIGJ1bmRsZTtcbn0pKDAuODUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/bundle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/cardinal.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/cardinal.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cardinal\": () => (/* binding */ Cardinal),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"point\": () => (/* binding */ point)\n/* harmony export */ });\nfunction point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nfunction Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hELCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHNFQUFzRTtBQUNyRywrQkFBK0IsNEJBQTRCO0FBQzNELCtCQUErQjtBQUMvQixrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZTs7QUFFZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbC5qcz83YTdiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBwb2ludCh0aGF0LCB4LCB5KSB7XG4gIHRoYXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhcbiAgICB0aGF0Ll94MSArIHRoYXQuX2sgKiAodGhhdC5feDIgLSB0aGF0Ll94MCksXG4gICAgdGhhdC5feTEgKyB0aGF0Ll9rICogKHRoYXQuX3kyIC0gdGhhdC5feTApLFxuICAgIHRoYXQuX3gyICsgdGhhdC5fayAqICh0aGF0Ll94MSAtIHgpLFxuICAgIHRoYXQuX3kyICsgdGhhdC5fayAqICh0aGF0Ll95MSAtIHkpLFxuICAgIHRoYXQuX3gyLFxuICAgIHRoYXQuX3kyXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXJkaW5hbChjb250ZXh0LCB0ZW5zaW9uKSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl9rID0gKDEgLSB0ZW5zaW9uKSAvIDY7XG59XG5cbkNhcmRpbmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3gxLCB0aGlzLl95MSk7IGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5feDEgPSB4LCB0aGlzLl95MSA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGRlZmF1bHQ6IHBvaW50KHRoaXMsIHgsIHkpOyBicmVhaztcbiAgICB9XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbSh0ZW5zaW9uKSB7XG5cbiAgZnVuY3Rpb24gY2FyZGluYWwoY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQ2FyZGluYWwoY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/cardinal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/cardinalClosed.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/cardinalClosed.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CardinalClosed\": () => (/* binding */ CardinalClosed),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"../../../node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: (0,_cardinal_js__WEBPACK_IMPORTED_MODULE_1__.point)(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbENsb3NlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQThCO0FBQ007O0FBRTdCO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxnREFBSTtBQUNqQixXQUFXLGdEQUFJO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDRCQUE0QjtBQUMzRCwrQkFBK0Isa0RBQWtEO0FBQ2pGLCtCQUErQiw0QkFBNEI7QUFDM0QsZUFBZSxtREFBSyxjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWU7O0FBRWY7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMsSUFBSSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvY2FyZGluYWxDbG9zZWQuanM/MGRhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9vcCBmcm9tIFwiLi4vbm9vcC5qc1wiO1xuaW1wb3J0IHtwb2ludH0gZnJvbSBcIi4vY2FyZGluYWwuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENhcmRpbmFsQ2xvc2VkKGNvbnRleHQsIHRlbnNpb24pIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2sgPSAoMSAtIHRlbnNpb24pIC8gNjtcbn1cblxuQ2FyZGluYWxDbG9zZWQucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IG5vb3AsXG4gIGFyZWFFbmQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSA9IHRoaXMuX3gyID0gdGhpcy5feDMgPSB0aGlzLl94NCA9IHRoaXMuX3g1ID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID0gdGhpcy5feTIgPSB0aGlzLl95MyA9IHRoaXMuX3k0ID0gdGhpcy5feTUgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDUsIHRoaXMuX3k1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl94MyA9IHgsIHRoaXMuX3kzID0geTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQgPSB4LCB0aGlzLl95NCA9IHkpOyBicmVhaztcbiAgICAgIGNhc2UgMjogdGhpcy5fcG9pbnQgPSAzOyB0aGlzLl94NSA9IHgsIHRoaXMuX3k1ID0geTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3gwID0gdGhpcy5feDEsIHRoaXMuX3gxID0gdGhpcy5feDIsIHRoaXMuX3gyID0geDtcbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxLCB0aGlzLl95MSA9IHRoaXMuX3kyLCB0aGlzLl95MiA9IHk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiBjdXN0b20odGVuc2lvbikge1xuXG4gIGZ1bmN0aW9uIGNhcmRpbmFsKGNvbnRleHQpIHtcbiAgICByZXR1cm4gbmV3IENhcmRpbmFsQ2xvc2VkKGNvbnRleHQsIHRlbnNpb24pO1xuICB9XG5cbiAgY2FyZGluYWwudGVuc2lvbiA9IGZ1bmN0aW9uKHRlbnNpb24pIHtcbiAgICByZXR1cm4gY3VzdG9tKCt0ZW5zaW9uKTtcbiAgfTtcblxuICByZXR1cm4gY2FyZGluYWw7XG59KSgwKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/cardinalClosed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/cardinalOpen.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/cardinalOpen.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CardinalOpen\": () => (/* binding */ CardinalOpen),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cardinal.js */ \"../../../node_modules/d3-shape/src/curve/cardinal.js\");\n\n\nfunction CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: (0,_cardinal_js__WEBPACK_IMPORTED_MODULE_0__.point)(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbE9wZW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9DOztBQUU3QjtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0Isa0dBQWtHO0FBQ2pJLCtCQUErQjtBQUMvQixlQUFlLG1EQUFLLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZTs7QUFFZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXJkaW5hbE9wZW4uanM/Mzc3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BvaW50fSBmcm9tIFwiLi9jYXJkaW5hbC5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gQ2FyZGluYWxPcGVuKGNvbnRleHQsIHRlbnNpb24pIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2sgPSAoMSAtIHRlbnNpb24pIC8gNjtcbn1cblxuQ2FyZGluYWxPcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAzKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MiwgdGhpcy5feTIpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMuX3BvaW50ID0gNDsgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKHRlbnNpb24pIHtcblxuICBmdW5jdGlvbiBjYXJkaW5hbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgdGVuc2lvbik7XG4gIH1cblxuICBjYXJkaW5hbC50ZW5zaW9uID0gZnVuY3Rpb24odGVuc2lvbikge1xuICAgIHJldHVybiBjdXN0b20oK3RlbnNpb24pO1xuICB9O1xuXG4gIHJldHVybiBjYXJkaW5hbDtcbn0pKDApO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/cardinalOpen.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/catmullRom.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/catmullRom.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"point\": () => (/* binding */ point)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n/* harmony import */ var _cardinal_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinal.js */ \"../../../node_modules/d3-shape/src/curve/cardinal.js\");\n\n\n\nfunction point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > _math_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new _cardinal_js__WEBPACK_IMPORTED_MODULE_1__.Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUM7QUFDSTs7QUFFaEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkNBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esd0RBQXdEO0FBQ3hELDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLHNFQUFzRTtBQUNyRywrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLGtDQUFrQztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWU7O0FBRWY7QUFDQSx3REFBd0Qsa0RBQVE7QUFDaEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tLmpzPzk3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtlcHNpbG9ufSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuaW1wb3J0IHtDYXJkaW5hbH0gZnJvbSBcIi4vY2FyZGluYWwuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHBvaW50KHRoYXQsIHgsIHkpIHtcbiAgdmFyIHgxID0gdGhhdC5feDEsXG4gICAgICB5MSA9IHRoYXQuX3kxLFxuICAgICAgeDIgPSB0aGF0Ll94MixcbiAgICAgIHkyID0gdGhhdC5feTI7XG5cbiAgaWYgKHRoYXQuX2wwMV9hID4gZXBzaWxvbikge1xuICAgIHZhciBhID0gMiAqIHRoYXQuX2wwMV8yYSArIDMgKiB0aGF0Ll9sMDFfYSAqIHRoYXQuX2wxMl9hICsgdGhhdC5fbDEyXzJhLFxuICAgICAgICBuID0gMyAqIHRoYXQuX2wwMV9hICogKHRoYXQuX2wwMV9hICsgdGhhdC5fbDEyX2EpO1xuICAgIHgxID0gKHgxICogYSAtIHRoYXQuX3gwICogdGhhdC5fbDEyXzJhICsgdGhhdC5feDIgKiB0aGF0Ll9sMDFfMmEpIC8gbjtcbiAgICB5MSA9ICh5MSAqIGEgLSB0aGF0Ll95MCAqIHRoYXQuX2wxMl8yYSArIHRoYXQuX3kyICogdGhhdC5fbDAxXzJhKSAvIG47XG4gIH1cblxuICBpZiAodGhhdC5fbDIzX2EgPiBlcHNpbG9uKSB7XG4gICAgdmFyIGIgPSAyICogdGhhdC5fbDIzXzJhICsgMyAqIHRoYXQuX2wyM19hICogdGhhdC5fbDEyX2EgKyB0aGF0Ll9sMTJfMmEsXG4gICAgICAgIG0gPSAzICogdGhhdC5fbDIzX2EgKiAodGhhdC5fbDIzX2EgKyB0aGF0Ll9sMTJfYSk7XG4gICAgeDIgPSAoeDIgKiBiICsgdGhhdC5feDEgKiB0aGF0Ll9sMjNfMmEgLSB4ICogdGhhdC5fbDEyXzJhKSAvIG07XG4gICAgeTIgPSAoeTIgKiBiICsgdGhhdC5feTEgKiB0aGF0Ll9sMjNfMmEgLSB5ICogdGhhdC5fbDEyXzJhKSAvIG07XG4gIH1cblxuICB0aGF0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oeDEsIHkxLCB4MiwgeTIsIHRoYXQuX3gyLCB0aGF0Ll95Mik7XG59XG5cbmZ1bmN0aW9uIENhdG11bGxSb20oY29udGV4dCwgYWxwaGEpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2FscGhhID0gYWxwaGE7XG59XG5cbkNhdG11bGxSb20ucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSAwO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gTmFOO1xuICB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3gwID0gdGhpcy5feDEgPSB0aGlzLl94MiA9XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSA9IHRoaXMuX3kyID0gTmFOO1xuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYSA9XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhID0gdGhpcy5fbDIzXzJhID1cbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHRoaXMucG9pbnQodGhpcy5feDIsIHRoaXMuX3kyKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG5cbiAgICBpZiAodGhpcy5fcG9pbnQpIHtcbiAgICAgIHZhciB4MjMgPSB0aGlzLl94MiAtIHgsXG4gICAgICAgICAgeTIzID0gdGhpcy5feTIgLSB5O1xuICAgICAgdGhpcy5fbDIzX2EgPSBNYXRoLnNxcnQodGhpcy5fbDIzXzJhID0gTWF0aC5wb3coeDIzICogeDIzICsgeTIzICogeTIzLCB0aGlzLl9hbHBoYSkpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgLy8gZmFsbHMgdGhyb3VnaFxuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/catmullRom.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/catmullRomClosed.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/catmullRomClosed.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cardinalClosed.js */ \"../../../node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-shape/src/noop.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./catmullRom.js */ \"../../../node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: (0,_catmullRom_js__WEBPACK_IMPORTED_MODULE_1__.point)(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new _cardinalClosed_js__WEBPACK_IMPORTED_MODULE_2__.CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tQ2xvc2VkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUQ7QUFDckI7QUFDUTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLGdEQUFJO0FBQ2pCLFdBQVcsZ0RBQUk7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCLDRCQUE0QjtBQUMzRCwrQkFBK0Isa0RBQWtEO0FBQ2pGLCtCQUErQiw0QkFBNEI7QUFDM0QsZUFBZSxxREFBSyxjQUFjO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZTs7QUFFZjtBQUNBLDhEQUE4RCw4REFBYztBQUM1RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2NhdG11bGxSb21DbG9zZWQuanM/NmZjNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhcmRpbmFsQ2xvc2VkfSBmcm9tIFwiLi9jYXJkaW5hbENsb3NlZC5qc1wiO1xuaW1wb3J0IG5vb3AgZnJvbSBcIi4uL25vb3AuanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbUNsb3NlZChjb250ZXh0LCBhbHBoYSkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5fYWxwaGEgPSBhbHBoYTtcbn1cblxuQ2F0bXVsbFJvbUNsb3NlZC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogbm9vcCxcbiAgYXJlYUVuZDogbm9vcCxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPSB0aGlzLl94MyA9IHRoaXMuX3g0ID0gdGhpcy5feDUgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IHRoaXMuX3kzID0gdGhpcy5feTQgPSB0aGlzLl95NSA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDI6IHtcbiAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsIHRoaXMuX3kzKTtcbiAgICAgICAgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgdGhpcy5wb2ludCh0aGlzLl94MywgdGhpcy5feTMpO1xuICAgICAgICB0aGlzLnBvaW50KHRoaXMuX3g0LCB0aGlzLl95NCk7XG4gICAgICAgIHRoaXMucG9pbnQodGhpcy5feDUsIHRoaXMuX3k1KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5feDMgPSB4LCB0aGlzLl95MyA9IHk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0ID0geCwgdGhpcy5feTQgPSB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5feDUgPSB4LCB0aGlzLl95NSA9IHk7IGJyZWFrO1xuICAgICAgZGVmYXVsdDogcG9pbnQodGhpcywgeCwgeSk7IGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuX2wwMV9hID0gdGhpcy5fbDEyX2EsIHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2E7XG4gICAgdGhpcy5fbDAxXzJhID0gdGhpcy5fbDEyXzJhLCB0aGlzLl9sMTJfMmEgPSB0aGlzLl9sMjNfMmE7XG4gICAgdGhpcy5feDAgPSB0aGlzLl94MSwgdGhpcy5feDEgPSB0aGlzLl94MiwgdGhpcy5feDIgPSB4O1xuICAgIHRoaXMuX3kwID0gdGhpcy5feTEsIHRoaXMuX3kxID0gdGhpcy5feTIsIHRoaXMuX3kyID0geTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIGN1c3RvbShhbHBoYSkge1xuXG4gIGZ1bmN0aW9uIGNhdG11bGxSb20oY29udGV4dCkge1xuICAgIHJldHVybiBhbHBoYSA/IG5ldyBDYXRtdWxsUm9tQ2xvc2VkKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbENsb3NlZChjb250ZXh0LCAwKTtcbiAgfVxuXG4gIGNhdG11bGxSb20uYWxwaGEgPSBmdW5jdGlvbihhbHBoYSkge1xuICAgIHJldHVybiBjdXN0b20oK2FscGhhKTtcbiAgfTtcblxuICByZXR1cm4gY2F0bXVsbFJvbTtcbn0pKDAuNSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/catmullRomClosed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/catmullRomOpen.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/catmullRomOpen.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cardinalOpen.js */ \"../../../node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony import */ var _catmullRom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./catmullRom.js */ \"../../../node_modules/d3-shape/src/curve/catmullRom.js\");\n\n\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: (0,_catmullRom_js__WEBPACK_IMPORTED_MODULE_0__.point)(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new _cardinalOpen_js__WEBPACK_IMPORTED_MODULE_1__.CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tT3Blbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBK0M7QUFDVDs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7QUFDL0IsK0JBQStCO0FBQy9CLCtCQUErQixrR0FBa0c7QUFDakksK0JBQStCO0FBQy9CLGVBQWUscURBQUssY0FBYztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWU7O0FBRWY7QUFDQSw0REFBNEQsMERBQVk7QUFDeEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9jYXRtdWxsUm9tT3Blbi5qcz81OWMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2FyZGluYWxPcGVufSBmcm9tIFwiLi9jYXJkaW5hbE9wZW4uanNcIjtcbmltcG9ydCB7cG9pbnR9IGZyb20gXCIuL2NhdG11bGxSb20uanNcIjtcblxuZnVuY3Rpb24gQ2F0bXVsbFJvbU9wZW4oY29udGV4dCwgYWxwaGEpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMuX2FscGhhID0gYWxwaGE7XG59XG5cbkNhdG11bGxSb21PcGVuLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID0gdGhpcy5feDIgPVxuICAgIHRoaXMuX3kwID0gdGhpcy5feTEgPSB0aGlzLl95MiA9IE5hTjtcbiAgICB0aGlzLl9sMDFfYSA9IHRoaXMuX2wxMl9hID0gdGhpcy5fbDIzX2EgPVxuICAgIHRoaXMuX2wwMV8yYSA9IHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYSA9XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMykpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuXG4gICAgaWYgKHRoaXMuX3BvaW50KSB7XG4gICAgICB2YXIgeDIzID0gdGhpcy5feDIgLSB4LFxuICAgICAgICAgIHkyMyA9IHRoaXMuX3kyIC0geTtcbiAgICAgIHRoaXMuX2wyM19hID0gTWF0aC5zcXJ0KHRoaXMuX2wyM18yYSA9IE1hdGgucG93KHgyMyAqIHgyMyArIHkyMyAqIHkyMywgdGhpcy5fYWxwaGEpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgYnJlYWs7XG4gICAgICBjYXNlIDI6IHRoaXMuX3BvaW50ID0gMzsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLCB0aGlzLl95MikgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94MiwgdGhpcy5feTIpOyBicmVhaztcbiAgICAgIGNhc2UgMzogdGhpcy5fcG9pbnQgPSA0OyAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB4LCB5KTsgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fbDAxX2EgPSB0aGlzLl9sMTJfYSwgdGhpcy5fbDEyX2EgPSB0aGlzLl9sMjNfYTtcbiAgICB0aGlzLl9sMDFfMmEgPSB0aGlzLl9sMTJfMmEsIHRoaXMuX2wxMl8yYSA9IHRoaXMuX2wyM18yYTtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHRoaXMuX3gyLCB0aGlzLl94MiA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB0aGlzLl95MiwgdGhpcy5feTIgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gY3VzdG9tKGFscGhhKSB7XG5cbiAgZnVuY3Rpb24gY2F0bXVsbFJvbShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGFscGhhID8gbmV3IENhdG11bGxSb21PcGVuKGNvbnRleHQsIGFscGhhKSA6IG5ldyBDYXJkaW5hbE9wZW4oY29udGV4dCwgMCk7XG4gIH1cblxuICBjYXRtdWxsUm9tLmFscGhhID0gZnVuY3Rpb24oYWxwaGEpIHtcbiAgICByZXR1cm4gY3VzdG9tKCthbHBoYSk7XG4gIH07XG5cbiAgcmV0dXJuIGNhdG11bGxSb207XG59KSgwLjUpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/catmullRomOpen.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/linear.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/linear.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new Linear(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isc0VBQXNFO0FBQ3JHLCtCQUErQjtBQUMvQiwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXIuanM/MDc1NyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBMaW5lYXIoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTGluZWFyLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB0aGlzLl9wb2ludCA9IDE7IHRoaXMuX2xpbmUgPyB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KSA6IHRoaXMuX2NvbnRleHQubW92ZVRvKHgsIHkpOyBicmVhaztcbiAgICAgIGNhc2UgMTogdGhpcy5fcG9pbnQgPSAyOyAvLyBmYWxscyB0aHJvdWdoXG4gICAgICBkZWZhdWx0OiB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTGluZWFyKGNvbnRleHQpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/linear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/linearClosed.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/linearClosed.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../noop.js */ \"../../../node_modules/d3-shape/src/noop.js\");\n\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n areaEnd: _noop_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new LinearClosed(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9saW5lYXJDbG9zZWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBOEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsZ0RBQUk7QUFDakIsV0FBVyxnREFBSTtBQUNmO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2N1cnZlL2xpbmVhckNsb3NlZC5qcz8xM2QxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub29wIGZyb20gXCIuLi9ub29wLmpzXCI7XG5cbmZ1bmN0aW9uIExpbmVhckNsb3NlZChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5MaW5lYXJDbG9zZWQucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IG5vb3AsXG4gIGFyZWFFbmQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fcG9pbnQpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgaWYgKHRoaXMuX3BvaW50KSB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICBlbHNlIHRoaXMuX3BvaW50ID0gMSwgdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBMaW5lYXJDbG9zZWQoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/linearClosed.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/monotone.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/monotone.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"monotoneX\": () => (/* binding */ monotoneX),\n/* harmony export */ \"monotoneY\": () => (/* binding */ monotoneY)\n/* harmony export */ });\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n return new MonotoneY(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9tb25vdG9uZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQsNkRBQTZEO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0EsK0JBQStCLHNFQUFzRTtBQUNyRywrQkFBK0I7QUFDL0IsK0JBQStCLHdEQUF3RDtBQUN2RiwrREFBK0Q7QUFDL0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQiw2QkFBNkI7QUFDeEQsMEJBQTBCLDRCQUE0QjtBQUN0RCwyQkFBMkIsNkJBQTZCO0FBQ3hELGtEQUFrRDtBQUNsRDs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbW9ub3RvbmUuanM/ZDExNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIHNsb3BlcyBvZiB0aGUgdGFuZ2VudHMgKEhlcm1pdGUtdHlwZSBpbnRlcnBvbGF0aW9uKSBiYXNlZCBvblxuLy8gdGhlIGZvbGxvd2luZyBwYXBlcjogU3RlZmZlbiwgTS4gMTk5MC4gQSBTaW1wbGUgTWV0aG9kIGZvciBNb25vdG9uaWNcbi8vIEludGVycG9sYXRpb24gaW4gT25lIERpbWVuc2lvbi4gQXN0cm9ub215IGFuZCBBc3Ryb3BoeXNpY3MsIFZvbC4gMjM5LCBOTy5cbi8vIE5PVihJSSksIFAuIDQ0MywgMTk5MC5cbmZ1bmN0aW9uIHNsb3BlMyh0aGF0LCB4MiwgeTIpIHtcbiAgdmFyIGgwID0gdGhhdC5feDEgLSB0aGF0Ll94MCxcbiAgICAgIGgxID0geDIgLSB0aGF0Ll94MSxcbiAgICAgIHMwID0gKHRoYXQuX3kxIC0gdGhhdC5feTApIC8gKGgwIHx8IGgxIDwgMCAmJiAtMCksXG4gICAgICBzMSA9ICh5MiAtIHRoYXQuX3kxKSAvIChoMSB8fCBoMCA8IDAgJiYgLTApLFxuICAgICAgcCA9IChzMCAqIGgxICsgczEgKiBoMCkgLyAoaDAgKyBoMSk7XG4gIHJldHVybiAoc2lnbihzMCkgKyBzaWduKHMxKSkgKiBNYXRoLm1pbihNYXRoLmFicyhzMCksIE1hdGguYWJzKHMxKSwgMC41ICogTWF0aC5hYnMocCkpIHx8IDA7XG59XG5cbi8vIENhbGN1bGF0ZSBhIG9uZS1zaWRlZCBzbG9wZS5cbmZ1bmN0aW9uIHNsb3BlMih0aGF0LCB0KSB7XG4gIHZhciBoID0gdGhhdC5feDEgLSB0aGF0Ll94MDtcbiAgcmV0dXJuIGggPyAoMyAqICh0aGF0Ll95MSAtIHRoYXQuX3kwKSAvIGggLSB0KSAvIDIgOiB0O1xufVxuXG4vLyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3ViaWNfSGVybWl0ZV9zcGxpbmUjUmVwcmVzZW50YXRpb25zXG4vLyBcInlvdSBjYW4gZXhwcmVzcyBjdWJpYyBIZXJtaXRlIGludGVycG9sYXRpb24gaW4gdGVybXMgb2YgY3ViaWMgQsOpemllciBjdXJ2ZXNcbi8vIHdpdGggcmVzcGVjdCB0byB0aGUgZm91ciB2YWx1ZXMgcDAsIHAwICsgbTAgLyAzLCBwMSAtIG0xIC8gMywgcDFcIi5cbmZ1bmN0aW9uIHBvaW50KHRoYXQsIHQwLCB0MSkge1xuICB2YXIgeDAgPSB0aGF0Ll94MCxcbiAgICAgIHkwID0gdGhhdC5feTAsXG4gICAgICB4MSA9IHRoYXQuX3gxLFxuICAgICAgeTEgPSB0aGF0Ll95MSxcbiAgICAgIGR4ID0gKHgxIC0geDApIC8gMztcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwICsgZHgsIHkwICsgZHggKiB0MCwgeDEgLSBkeCwgeTEgLSBkeCAqIHQxLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBNb25vdG9uZVgoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTW9ub3RvbmVYLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID1cbiAgICB0aGlzLl90MCA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsIHRoaXMuX3kxKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3QwLCBzbG9wZTIodGhpcywgdGhpcy5fdDApKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHQxID0gTmFOO1xuXG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgaWYgKHggPT09IHRoaXMuX3gxICYmIHkgPT09IHRoaXMuX3kxKSByZXR1cm47IC8vIElnbm9yZSBjb2luY2lkZW50IHBvaW50cy5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHBvaW50KHRoaXMsIHNsb3BlMih0aGlzLCB0MSA9IHNsb3BlMyh0aGlzLCB4LCB5KSksIHQxKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB0aGlzLl90MCwgdDEgPSBzbG9wZTModGhpcywgeCwgeSkpOyBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICAgIHRoaXMuX3QwID0gdDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gTW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IG5ldyBSZWZsZWN0Q29udGV4dChjb250ZXh0KTtcbn1cblxuKE1vbm90b25lWS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE1vbm90b25lWC5wcm90b3R5cGUpKS5wb2ludCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgTW9ub3RvbmVYLnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsIHksIHgpO1xufTtcblxuZnVuY3Rpb24gUmVmbGVjdENvbnRleHQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUmVmbGVjdENvbnRleHQucHJvdG90eXBlID0ge1xuICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5fY29udGV4dC5tb3ZlVG8oeSwgeCk7IH0sXG4gIGNsb3NlUGF0aDogZnVuY3Rpb24oKSB7IHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7IH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkgeyB0aGlzLl9jb250ZXh0LmxpbmVUbyh5LCB4KTsgfSxcbiAgYmV6aWVyQ3VydmVUbzogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHsgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHkxLCB4MSwgeTIsIHgyLCB5LCB4KTsgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vbm90b25lWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTW9ub3RvbmVYKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBNb25vdG9uZVkoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/monotone.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/natural.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/natural.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new Natural(context);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9uYXR1cmFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQVc7QUFDekI7QUFDQSxjQUFjLE9BQU87QUFDckI7QUFDQSxrQkFBa0IsUUFBUTtBQUMxQjtBQUNBLGNBQWMsV0FBVztBQUN6QjtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9uYXR1cmFsLmpzP2I4MWYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gTmF0dXJhbChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5OYXR1cmFsLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94ID0gW107XG4gICAgdGhpcy5feSA9IFtdO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IHRoaXMuX3gsXG4gICAgICAgIHkgPSB0aGlzLl95LFxuICAgICAgICBuID0geC5sZW5ndGg7XG5cbiAgICBpZiAobikge1xuICAgICAgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHhbMF0sIHlbMF0pIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeFswXSwgeVswXSk7XG4gICAgICBpZiAobiA9PT0gMikge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4WzFdLCB5WzFdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBweCA9IGNvbnRyb2xQb2ludHMoeCksXG4gICAgICAgICAgICBweSA9IGNvbnRyb2xQb2ludHMoeSk7XG4gICAgICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAxOyBpMSA8IG47ICsraTAsICsraTEpIHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8ocHhbMF1baTBdLCBweVswXVtpMF0sIHB4WzFdW2kwXSwgcHlbMV1baTBdLCB4W2kxXSwgeVtpMV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpbmUgfHwgKHRoaXMuX2xpbmUgIT09IDAgJiYgbiA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICAgIHRoaXMuX3ggPSB0aGlzLl95ID0gbnVsbDtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB0aGlzLl94LnB1c2goK3gpO1xuICAgIHRoaXMuX3kucHVzaCgreSk7XG4gIH1cbn07XG5cbi8vIFNlZSBodHRwczovL3d3dy5wYXJ0aWNsZWluY2VsbC5jb20vMjAxMi9iZXppZXItc3BsaW5lcy8gZm9yIGRlcml2YXRpb24uXG5mdW5jdGlvbiBjb250cm9sUG9pbnRzKHgpIHtcbiAgdmFyIGksXG4gICAgICBuID0geC5sZW5ndGggLSAxLFxuICAgICAgbSxcbiAgICAgIGEgPSBuZXcgQXJyYXkobiksXG4gICAgICBiID0gbmV3IEFycmF5KG4pLFxuICAgICAgciA9IG5ldyBBcnJheShuKTtcbiAgYVswXSA9IDAsIGJbMF0gPSAyLCByWzBdID0geFswXSArIDIgKiB4WzFdO1xuICBmb3IgKGkgPSAxOyBpIDwgbiAtIDE7ICsraSkgYVtpXSA9IDEsIGJbaV0gPSA0LCByW2ldID0gNCAqIHhbaV0gKyAyICogeFtpICsgMV07XG4gIGFbbiAtIDFdID0gMiwgYltuIC0gMV0gPSA3LCByW24gLSAxXSA9IDggKiB4W24gLSAxXSArIHhbbl07XG4gIGZvciAoaSA9IDE7IGkgPCBuOyArK2kpIG0gPSBhW2ldIC8gYltpIC0gMV0sIGJbaV0gLT0gbSwgcltpXSAtPSBtICogcltpIC0gMV07XG4gIGFbbiAtIDFdID0gcltuIC0gMV0gLyBiW24gLSAxXTtcbiAgZm9yIChpID0gbiAtIDI7IGkgPj0gMDsgLS1pKSBhW2ldID0gKHJbaV0gLSBhW2kgKyAxXSkgLyBiW2ldO1xuICBiW24gLSAxXSA9ICh4W25dICsgYVtuIC0gMV0pIC8gMjtcbiAgZm9yIChpID0gMDsgaSA8IG4gLSAxOyArK2kpIGJbaV0gPSAyICogeFtpICsgMV0gLSBhW2kgKyAxXTtcbiAgcmV0dXJuIFthLCBiXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IE5hdHVyYWwoY29udGV4dCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/natural.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/radial.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/radial.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"curveRadialLinear\": () => (/* binding */ curveRadialLinear),\n/* harmony export */ \"default\": () => (/* binding */ curveRadial)\n/* harmony export */ });\n/* harmony import */ var _linear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear.js */ \"../../../node_modules/d3-shape/src/curve/linear.js\");\n\n\nvar curveRadialLinear = curveRadial(_linear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nfunction curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDOztBQUUvQixvQ0FBb0Msa0RBQVc7O0FBRXREO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7O0FBRWY7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9yYWRpYWwuanM/MjgyYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vbGluZWFyLmpzXCI7XG5cbmV4cG9ydCB2YXIgY3VydmVSYWRpYWxMaW5lYXIgPSBjdXJ2ZVJhZGlhbChjdXJ2ZUxpbmVhcik7XG5cbmZ1bmN0aW9uIFJhZGlhbChjdXJ2ZSkge1xuICB0aGlzLl9jdXJ2ZSA9IGN1cnZlO1xufVxuXG5SYWRpYWwucHJvdG90eXBlID0ge1xuICBhcmVhU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmFyZWFTdGFydCgpO1xuICB9LFxuICBhcmVhRW5kOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9jdXJ2ZS5hcmVhRW5kKCk7XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fY3VydmUubGluZVN0YXJ0KCk7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2N1cnZlLmxpbmVFbmQoKTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKGEsIHIpIHtcbiAgICB0aGlzLl9jdXJ2ZS5wb2ludChyICogTWF0aC5zaW4oYSksIHIgKiAtTWF0aC5jb3MoYSkpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjdXJ2ZVJhZGlhbChjdXJ2ZSkge1xuXG4gIGZ1bmN0aW9uIHJhZGlhbChjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5ldyBSYWRpYWwoY3VydmUoY29udGV4dCkpO1xuICB9XG5cbiAgcmFkaWFsLl9jdXJ2ZSA9IGN1cnZlO1xuXG4gIHJldHVybiByYWRpYWw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/radial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/curve/step.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/curve/step.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"stepAfter\": () => (/* binding */ stepAfter),\n/* harmony export */ \"stepBefore\": () => (/* binding */ stepBefore)\n/* harmony export */ });\nfunction Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(context) {\n return new Step(context, 0.5);\n}\n\nfunction stepBefore(context) {\n return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n return new Step(context, 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9zdGVwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isc0VBQXNFO0FBQ3JHLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9jdXJ2ZS9zdGVwLmpzPzE2NzciXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gU3RlcChjb250ZXh0LCB0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLl90ID0gdDtcbn1cblxuU3RlcC5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5feCA9IHRoaXMuX3kgPSBOYU47XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAoMCA8IHRoaXMuX3QgJiYgdGhpcy5fdCA8IDEgJiYgdGhpcy5fcG9pbnQgPT09IDIpIHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsIHRoaXMuX3kpO1xuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICBpZiAodGhpcy5fbGluZSA+PSAwKSB0aGlzLl90ID0gMSAtIHRoaXMuX3QsIHRoaXMuX2xpbmUgPSAxIC0gdGhpcy5fbGluZTtcbiAgfSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB4ID0gK3gsIHkgPSAreTtcbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKHRoaXMuX3QgPD0gMCkge1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsIHkpO1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciB4MSA9IHRoaXMuX3ggKiAoMSAtIHRoaXMuX3QpICsgeCAqIHRoaXMuX3Q7XG4gICAgICAgICAgdGhpcy5fY29udGV4dC5saW5lVG8oeDEsIHRoaXMuX3kpO1xuICAgICAgICAgIHRoaXMuX2NvbnRleHQubGluZVRvKHgxLCB5KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5feCA9IHgsIHRoaXMuX3kgPSB5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgU3RlcChjb250ZXh0LCAwLjUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RlcEJlZm9yZShjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgU3RlcChjb250ZXh0LCAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0ZXBBZnRlcihjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgU3RlcChjb250ZXh0LCAxKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/curve/step.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/descending.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/descending.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9kZXNjZW5kaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvZGVzY2VuZGluZy5qcz85NmM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGIgPCBhID8gLTEgOiBiID4gYSA/IDEgOiBiID49IGEgPyAwIDogTmFOO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/descending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/identity.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-shape/src/identity.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(d) {\n return d;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pZGVudGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2lkZW50aXR5LmpzPzM1ZmEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICByZXR1cm4gZDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-shape/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"arc\": () => (/* reexport safe */ _arc_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"area\": () => (/* reexport safe */ _area_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"areaRadial\": () => (/* reexport safe */ _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"curveBasis\": () => (/* reexport safe */ _curve_basis_js__WEBPACK_IMPORTED_MODULE_24__[\"default\"]),\n/* harmony export */ \"curveBasisClosed\": () => (/* reexport safe */ _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_22__[\"default\"]),\n/* harmony export */ \"curveBasisOpen\": () => (/* reexport safe */ _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_23__[\"default\"]),\n/* harmony export */ \"curveBumpX\": () => (/* reexport safe */ _curve_bump_js__WEBPACK_IMPORTED_MODULE_25__.bumpX),\n/* harmony export */ \"curveBumpY\": () => (/* reexport safe */ _curve_bump_js__WEBPACK_IMPORTED_MODULE_25__.bumpY),\n/* harmony export */ \"curveBundle\": () => (/* reexport safe */ _curve_bundle_js__WEBPACK_IMPORTED_MODULE_26__[\"default\"]),\n/* harmony export */ \"curveCardinal\": () => (/* reexport safe */ _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_29__[\"default\"]),\n/* harmony export */ \"curveCardinalClosed\": () => (/* reexport safe */ _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_27__[\"default\"]),\n/* harmony export */ \"curveCardinalOpen\": () => (/* reexport safe */ _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_28__[\"default\"]),\n/* harmony export */ \"curveCatmullRom\": () => (/* reexport safe */ _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_32__[\"default\"]),\n/* harmony export */ \"curveCatmullRomClosed\": () => (/* reexport safe */ _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_30__[\"default\"]),\n/* harmony export */ \"curveCatmullRomOpen\": () => (/* reexport safe */ _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_31__[\"default\"]),\n/* harmony export */ \"curveLinear\": () => (/* reexport safe */ _curve_linear_js__WEBPACK_IMPORTED_MODULE_34__[\"default\"]),\n/* harmony export */ \"curveLinearClosed\": () => (/* reexport safe */ _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_33__[\"default\"]),\n/* harmony export */ \"curveMonotoneX\": () => (/* reexport safe */ _curve_monotone_js__WEBPACK_IMPORTED_MODULE_35__.monotoneX),\n/* harmony export */ \"curveMonotoneY\": () => (/* reexport safe */ _curve_monotone_js__WEBPACK_IMPORTED_MODULE_35__.monotoneY),\n/* harmony export */ \"curveNatural\": () => (/* reexport safe */ _curve_natural_js__WEBPACK_IMPORTED_MODULE_36__[\"default\"]),\n/* harmony export */ \"curveStep\": () => (/* reexport safe */ _curve_step_js__WEBPACK_IMPORTED_MODULE_37__[\"default\"]),\n/* harmony export */ \"curveStepAfter\": () => (/* reexport safe */ _curve_step_js__WEBPACK_IMPORTED_MODULE_37__.stepAfter),\n/* harmony export */ \"curveStepBefore\": () => (/* reexport safe */ _curve_step_js__WEBPACK_IMPORTED_MODULE_37__.stepBefore),\n/* harmony export */ \"line\": () => (/* reexport safe */ _line_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"lineRadial\": () => (/* reexport safe */ _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"link\": () => (/* reexport safe */ _link_js__WEBPACK_IMPORTED_MODULE_7__.link),\n/* harmony export */ \"linkHorizontal\": () => (/* reexport safe */ _link_js__WEBPACK_IMPORTED_MODULE_7__.linkHorizontal),\n/* harmony export */ \"linkRadial\": () => (/* reexport safe */ _link_js__WEBPACK_IMPORTED_MODULE_7__.linkRadial),\n/* harmony export */ \"linkVertical\": () => (/* reexport safe */ _link_js__WEBPACK_IMPORTED_MODULE_7__.linkVertical),\n/* harmony export */ \"pie\": () => (/* reexport safe */ _pie_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"pointRadial\": () => (/* reexport safe */ _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ \"radialArea\": () => (/* reexport safe */ _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ \"radialLine\": () => (/* reexport safe */ _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ \"stack\": () => (/* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_38__[\"default\"]),\n/* harmony export */ \"stackOffsetDiverging\": () => (/* reexport safe */ _offset_diverging_js__WEBPACK_IMPORTED_MODULE_40__[\"default\"]),\n/* harmony export */ \"stackOffsetExpand\": () => (/* reexport safe */ _offset_expand_js__WEBPACK_IMPORTED_MODULE_39__[\"default\"]),\n/* harmony export */ \"stackOffsetNone\": () => (/* reexport safe */ _offset_none_js__WEBPACK_IMPORTED_MODULE_41__[\"default\"]),\n/* harmony export */ \"stackOffsetSilhouette\": () => (/* reexport safe */ _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_42__[\"default\"]),\n/* harmony export */ \"stackOffsetWiggle\": () => (/* reexport safe */ _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_43__[\"default\"]),\n/* harmony export */ \"stackOrderAppearance\": () => (/* reexport safe */ _order_appearance_js__WEBPACK_IMPORTED_MODULE_44__[\"default\"]),\n/* harmony export */ \"stackOrderAscending\": () => (/* reexport safe */ _order_ascending_js__WEBPACK_IMPORTED_MODULE_45__[\"default\"]),\n/* harmony export */ \"stackOrderDescending\": () => (/* reexport safe */ _order_descending_js__WEBPACK_IMPORTED_MODULE_46__[\"default\"]),\n/* harmony export */ \"stackOrderInsideOut\": () => (/* reexport safe */ _order_insideOut_js__WEBPACK_IMPORTED_MODULE_47__[\"default\"]),\n/* harmony export */ \"stackOrderNone\": () => (/* reexport safe */ _order_none_js__WEBPACK_IMPORTED_MODULE_48__[\"default\"]),\n/* harmony export */ \"stackOrderReverse\": () => (/* reexport safe */ _order_reverse_js__WEBPACK_IMPORTED_MODULE_49__[\"default\"]),\n/* harmony export */ \"symbol\": () => (/* reexport safe */ _symbol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ \"symbolAsterisk\": () => (/* reexport safe */ _symbol_asterisk_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"]),\n/* harmony export */ \"symbolCircle\": () => (/* reexport safe */ _symbol_circle_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ \"symbolCross\": () => (/* reexport safe */ _symbol_cross_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"]),\n/* harmony export */ \"symbolDiamond\": () => (/* reexport safe */ _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]),\n/* harmony export */ \"symbolDiamond2\": () => (/* reexport safe */ _symbol_diamond2_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]),\n/* harmony export */ \"symbolPlus\": () => (/* reexport safe */ _symbol_plus_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"]),\n/* harmony export */ \"symbolSquare\": () => (/* reexport safe */ _symbol_square_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"]),\n/* harmony export */ \"symbolSquare2\": () => (/* reexport safe */ _symbol_square2_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"]),\n/* harmony export */ \"symbolStar\": () => (/* reexport safe */ _symbol_star_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"]),\n/* harmony export */ \"symbolTimes\": () => (/* reexport safe */ _symbol_times_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ \"symbolTriangle\": () => (/* reexport safe */ _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"]),\n/* harmony export */ \"symbolTriangle2\": () => (/* reexport safe */ _symbol_triangle2_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]),\n/* harmony export */ \"symbolWye\": () => (/* reexport safe */ _symbol_wye_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"]),\n/* harmony export */ \"symbolX\": () => (/* reexport safe */ _symbol_times_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"]),\n/* harmony export */ \"symbols\": () => (/* reexport safe */ _symbol_js__WEBPACK_IMPORTED_MODULE_8__.symbolsFill),\n/* harmony export */ \"symbolsFill\": () => (/* reexport safe */ _symbol_js__WEBPACK_IMPORTED_MODULE_8__.symbolsFill),\n/* harmony export */ \"symbolsStroke\": () => (/* reexport safe */ _symbol_js__WEBPACK_IMPORTED_MODULE_8__.symbolsStroke)\n/* harmony export */ });\n/* harmony import */ var _arc_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./arc.js */ \"../../../node_modules/d3-shape/src/arc.js\");\n/* harmony import */ var _area_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./area.js */ \"../../../node_modules/d3-shape/src/area.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./line.js */ \"../../../node_modules/d3-shape/src/line.js\");\n/* harmony import */ var _pie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pie.js */ \"../../../node_modules/d3-shape/src/pie.js\");\n/* harmony import */ var _areaRadial_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./areaRadial.js */ \"../../../node_modules/d3-shape/src/areaRadial.js\");\n/* harmony import */ var _lineRadial_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lineRadial.js */ \"../../../node_modules/d3-shape/src/lineRadial.js\");\n/* harmony import */ var _pointRadial_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pointRadial.js */ \"../../../node_modules/d3-shape/src/pointRadial.js\");\n/* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./link.js */ \"../../../node_modules/d3-shape/src/link.js\");\n/* harmony import */ var _symbol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol.js */ \"../../../node_modules/d3-shape/src/symbol.js\");\n/* harmony import */ var _symbol_asterisk_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/asterisk.js */ \"../../../node_modules/d3-shape/src/symbol/asterisk.js\");\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/circle.js */ \"../../../node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/cross.js */ \"../../../node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/diamond.js */ \"../../../node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony import */ var _symbol_diamond2_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./symbol/diamond2.js */ \"../../../node_modules/d3-shape/src/symbol/diamond2.js\");\n/* harmony import */ var _symbol_plus_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./symbol/plus.js */ \"../../../node_modules/d3-shape/src/symbol/plus.js\");\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./symbol/square.js */ \"../../../node_modules/d3-shape/src/symbol/square.js\");\n/* harmony import */ var _symbol_square2_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./symbol/square2.js */ \"../../../node_modules/d3-shape/src/symbol/square2.js\");\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./symbol/star.js */ \"../../../node_modules/d3-shape/src/symbol/star.js\");\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./symbol/triangle.js */ \"../../../node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony import */ var _symbol_triangle2_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./symbol/triangle2.js */ \"../../../node_modules/d3-shape/src/symbol/triangle2.js\");\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./symbol/wye.js */ \"../../../node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony import */ var _symbol_times_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./symbol/times.js */ \"../../../node_modules/d3-shape/src/symbol/times.js\");\n/* harmony import */ var _curve_basisClosed_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./curve/basisClosed.js */ \"../../../node_modules/d3-shape/src/curve/basisClosed.js\");\n/* harmony import */ var _curve_basisOpen_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./curve/basisOpen.js */ \"../../../node_modules/d3-shape/src/curve/basisOpen.js\");\n/* harmony import */ var _curve_basis_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./curve/basis.js */ \"../../../node_modules/d3-shape/src/curve/basis.js\");\n/* harmony import */ var _curve_bump_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./curve/bump.js */ \"../../../node_modules/d3-shape/src/curve/bump.js\");\n/* harmony import */ var _curve_bundle_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./curve/bundle.js */ \"../../../node_modules/d3-shape/src/curve/bundle.js\");\n/* harmony import */ var _curve_cardinalClosed_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./curve/cardinalClosed.js */ \"../../../node_modules/d3-shape/src/curve/cardinalClosed.js\");\n/* harmony import */ var _curve_cardinalOpen_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./curve/cardinalOpen.js */ \"../../../node_modules/d3-shape/src/curve/cardinalOpen.js\");\n/* harmony import */ var _curve_cardinal_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./curve/cardinal.js */ \"../../../node_modules/d3-shape/src/curve/cardinal.js\");\n/* harmony import */ var _curve_catmullRomClosed_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./curve/catmullRomClosed.js */ \"../../../node_modules/d3-shape/src/curve/catmullRomClosed.js\");\n/* harmony import */ var _curve_catmullRomOpen_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./curve/catmullRomOpen.js */ \"../../../node_modules/d3-shape/src/curve/catmullRomOpen.js\");\n/* harmony import */ var _curve_catmullRom_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./curve/catmullRom.js */ \"../../../node_modules/d3-shape/src/curve/catmullRom.js\");\n/* harmony import */ var _curve_linearClosed_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./curve/linearClosed.js */ \"../../../node_modules/d3-shape/src/curve/linearClosed.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./curve/linear.js */ \"../../../node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _curve_monotone_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./curve/monotone.js */ \"../../../node_modules/d3-shape/src/curve/monotone.js\");\n/* harmony import */ var _curve_natural_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./curve/natural.js */ \"../../../node_modules/d3-shape/src/curve/natural.js\");\n/* harmony import */ var _curve_step_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./curve/step.js */ \"../../../node_modules/d3-shape/src/curve/step.js\");\n/* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./stack.js */ \"../../../node_modules/d3-shape/src/stack.js\");\n/* harmony import */ var _offset_expand_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./offset/expand.js */ \"../../../node_modules/d3-shape/src/offset/expand.js\");\n/* harmony import */ var _offset_diverging_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./offset/diverging.js */ \"../../../node_modules/d3-shape/src/offset/diverging.js\");\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./offset/none.js */ \"../../../node_modules/d3-shape/src/offset/none.js\");\n/* harmony import */ var _offset_silhouette_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./offset/silhouette.js */ \"../../../node_modules/d3-shape/src/offset/silhouette.js\");\n/* harmony import */ var _offset_wiggle_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./offset/wiggle.js */ \"../../../node_modules/d3-shape/src/offset/wiggle.js\");\n/* harmony import */ var _order_appearance_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./order/appearance.js */ \"../../../node_modules/d3-shape/src/order/appearance.js\");\n/* harmony import */ var _order_ascending_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./order/ascending.js */ \"../../../node_modules/d3-shape/src/order/ascending.js\");\n/* harmony import */ var _order_descending_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./order/descending.js */ \"../../../node_modules/d3-shape/src/order/descending.js\");\n/* harmony import */ var _order_insideOut_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./order/insideOut.js */ \"../../../node_modules/d3-shape/src/order/insideOut.js\");\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./order/none.js */ \"../../../node_modules/d3-shape/src/order/none.js\");\n/* harmony import */ var _order_reverse_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./order/reverse.js */ \"../../../node_modules/d3-shape/src/order/reverse.js\");\n\n\n\n\n // Note: radialArea is deprecated!\n // Note: radialLine is deprecated!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QztBQUNFO0FBQ0E7QUFDRjtBQUNxQyxDQUFDO0FBQ0QsQ0FBQztBQUN0QjtBQUNpQjs7QUFFeUI7QUFDbkM7QUFDSjtBQUNGO0FBQ0k7QUFDRTtBQUNSO0FBQ0k7QUFDRTtBQUNOO0FBQ1E7QUFDRTtBQUNaO0FBQ3dCOztBQUVWO0FBQ0o7QUFDUjtBQUNrQjtBQUNoQjtBQUNnQjtBQUNKO0FBQ1I7QUFDZ0I7QUFDSjtBQUNSO0FBQ0k7QUFDWjtBQUNvQztBQUNsQztBQUNzRDs7QUFFckU7QUFDb0I7QUFDTTtBQUNWO0FBQ1k7QUFDUjtBQUNNO0FBQ0Y7QUFDRTtBQUNGO0FBQ1Y7QUFDTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2luZGV4LmpzP2U2MjgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGFyY30gZnJvbSBcIi4vYXJjLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYXJlYX0gZnJvbSBcIi4vYXJlYS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGxpbmV9IGZyb20gXCIuL2xpbmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwaWV9IGZyb20gXCIuL3BpZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFyZWFSYWRpYWwsIGRlZmF1bHQgYXMgcmFkaWFsQXJlYX0gZnJvbSBcIi4vYXJlYVJhZGlhbC5qc1wiOyAvLyBOb3RlOiByYWRpYWxBcmVhIGlzIGRlcHJlY2F0ZWQhXG5leHBvcnQge2RlZmF1bHQgYXMgbGluZVJhZGlhbCwgZGVmYXVsdCBhcyByYWRpYWxMaW5lfSBmcm9tIFwiLi9saW5lUmFkaWFsLmpzXCI7IC8vIE5vdGU6IHJhZGlhbExpbmUgaXMgZGVwcmVjYXRlZCFcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwb2ludFJhZGlhbH0gZnJvbSBcIi4vcG9pbnRSYWRpYWwuanNcIjtcbmV4cG9ydCB7bGluaywgbGlua0hvcml6b250YWwsIGxpbmtWZXJ0aWNhbCwgbGlua1JhZGlhbH0gZnJvbSBcIi4vbGluay5qc1wiO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sLCBzeW1ib2xzU3Ryb2tlLCBzeW1ib2xzRmlsbCwgc3ltYm9sc0ZpbGwgYXMgc3ltYm9sc30gZnJvbSBcIi4vc3ltYm9sLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sQXN0ZXJpc2t9IGZyb20gXCIuL3N5bWJvbC9hc3Rlcmlzay5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbENpcmNsZX0gZnJvbSBcIi4vc3ltYm9sL2NpcmNsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbENyb3NzfSBmcm9tIFwiLi9zeW1ib2wvY3Jvc3MuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xEaWFtb25kfSBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbERpYW1vbmQyfSBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZDIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xQbHVzfSBmcm9tIFwiLi9zeW1ib2wvcGx1cy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbFNxdWFyZX0gZnJvbSBcIi4vc3ltYm9sL3NxdWFyZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN5bWJvbFNxdWFyZTJ9IGZyb20gXCIuL3N5bWJvbC9zcXVhcmUyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sU3Rhcn0gZnJvbSBcIi4vc3ltYm9sL3N0YXIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzeW1ib2xUcmlhbmdsZX0gZnJvbSBcIi4vc3ltYm9sL3RyaWFuZ2xlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sVHJpYW5nbGUyfSBmcm9tIFwiLi9zeW1ib2wvdHJpYW5nbGUyLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sV3llfSBmcm9tIFwiLi9zeW1ib2wvd3llLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3ltYm9sVGltZXMsIGRlZmF1bHQgYXMgc3ltYm9sWH0gZnJvbSBcIi4vc3ltYm9sL3RpbWVzLmpzXCI7XG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUJhc2lzQ2xvc2VkfSBmcm9tIFwiLi9jdXJ2ZS9iYXNpc0Nsb3NlZC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQmFzaXNPcGVufSBmcm9tIFwiLi9jdXJ2ZS9iYXNpc09wZW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUJhc2lzfSBmcm9tIFwiLi9jdXJ2ZS9iYXNpcy5qc1wiO1xuZXhwb3J0IHtidW1wWCBhcyBjdXJ2ZUJ1bXBYLCBidW1wWSBhcyBjdXJ2ZUJ1bXBZfSBmcm9tIFwiLi9jdXJ2ZS9idW1wLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVCdW5kbGV9IGZyb20gXCIuL2N1cnZlL2J1bmRsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQ2FyZGluYWxDbG9zZWR9IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsQ2xvc2VkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXJkaW5hbE9wZW59IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsT3Blbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGN1cnZlQ2FyZGluYWx9IGZyb20gXCIuL2N1cnZlL2NhcmRpbmFsLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXRtdWxsUm9tQ2xvc2VkfSBmcm9tIFwiLi9jdXJ2ZS9jYXRtdWxsUm9tQ2xvc2VkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVDYXRtdWxsUm9tT3Blbn0gZnJvbSBcIi4vY3VydmUvY2F0bXVsbFJvbU9wZW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUNhdG11bGxSb219IGZyb20gXCIuL2N1cnZlL2NhdG11bGxSb20uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZUxpbmVhckNsb3NlZH0gZnJvbSBcIi4vY3VydmUvbGluZWFyQ2xvc2VkLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY3VydmVMaW5lYXJ9IGZyb20gXCIuL2N1cnZlL2xpbmVhci5qc1wiO1xuZXhwb3J0IHttb25vdG9uZVggYXMgY3VydmVNb25vdG9uZVgsIG1vbm90b25lWSBhcyBjdXJ2ZU1vbm90b25lWX0gZnJvbSBcIi4vY3VydmUvbW9ub3RvbmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZU5hdHVyYWx9IGZyb20gXCIuL2N1cnZlL25hdHVyYWwuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjdXJ2ZVN0ZXAsIHN0ZXBBZnRlciBhcyBjdXJ2ZVN0ZXBBZnRlciwgc3RlcEJlZm9yZSBhcyBjdXJ2ZVN0ZXBCZWZvcmV9IGZyb20gXCIuL2N1cnZlL3N0ZXAuanNcIjtcblxuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrfSBmcm9tIFwiLi9zdGFjay5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT2Zmc2V0RXhwYW5kfSBmcm9tIFwiLi9vZmZzZXQvZXhwYW5kLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPZmZzZXREaXZlcmdpbmd9IGZyb20gXCIuL29mZnNldC9kaXZlcmdpbmcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09mZnNldE5vbmV9IGZyb20gXCIuL29mZnNldC9ub25lLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPZmZzZXRTaWxob3VldHRlfSBmcm9tIFwiLi9vZmZzZXQvc2lsaG91ZXR0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT2Zmc2V0V2lnZ2xlfSBmcm9tIFwiLi9vZmZzZXQvd2lnZ2xlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPcmRlckFwcGVhcmFuY2V9IGZyb20gXCIuL29yZGVyL2FwcGVhcmFuY2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09yZGVyQXNjZW5kaW5nfSBmcm9tIFwiLi9vcmRlci9hc2NlbmRpbmcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzdGFja09yZGVyRGVzY2VuZGluZ30gZnJvbSBcIi4vb3JkZXIvZGVzY2VuZGluZy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT3JkZXJJbnNpZGVPdXR9IGZyb20gXCIuL29yZGVyL2luc2lkZU91dC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHN0YWNrT3JkZXJOb25lfSBmcm9tIFwiLi9vcmRlci9ub25lLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgc3RhY2tPcmRlclJldmVyc2V9IGZyb20gXCIuL29yZGVyL3JldmVyc2UuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/line.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/line.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_linear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curve/linear.js */ \"../../../node_modules/d3-shape/src/curve/linear.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-shape/src/path.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./point.js */ \"../../../node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, y) {\n var defined = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(true),\n context = null,\n curve = _curve_linear_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n output = null,\n path = (0,_path_js__WEBPACK_IMPORTED_MODULE_2__.withPath)(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_3__.x : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? _point_js__WEBPACK_IMPORTED_MODULE_3__.y : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(y);\n\n function line(data) {\n var i,\n n = (data = (0,_array_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErQjtBQUNNO0FBQ087QUFDVDtBQUNpQjs7QUFFcEQsNkJBQWUsb0NBQVM7QUFDeEIsZ0JBQWdCLHdEQUFRO0FBQ3hCO0FBQ0EsY0FBYyx3REFBVztBQUN6QjtBQUNBLGFBQWEsa0RBQVE7O0FBRXJCLHdEQUF3RCx3Q0FBTSxHQUFHLHdEQUFRO0FBQ3pFLHdEQUF3RCx3Q0FBTSxHQUFHLHdEQUFROztBQUV6RTtBQUNBO0FBQ0Esb0JBQW9CLHFEQUFLO0FBQ3pCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBLHVFQUF1RSx3REFBUTtBQUMvRTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lLmpzPzFjMWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBjdXJ2ZUxpbmVhciBmcm9tIFwiLi9jdXJ2ZS9saW5lYXIuanNcIjtcbmltcG9ydCB7d2l0aFBhdGh9IGZyb20gXCIuL3BhdGguanNcIjtcbmltcG9ydCB7eCBhcyBwb2ludFgsIHkgYXMgcG9pbnRZfSBmcm9tIFwiLi9wb2ludC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIHZhciBkZWZpbmVkID0gY29uc3RhbnQodHJ1ZSksXG4gICAgICBjb250ZXh0ID0gbnVsbCxcbiAgICAgIGN1cnZlID0gY3VydmVMaW5lYXIsXG4gICAgICBvdXRwdXQgPSBudWxsLFxuICAgICAgcGF0aCA9IHdpdGhQYXRoKGxpbmUpO1xuXG4gIHggPSB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiID8geCA6ICh4ID09PSB1bmRlZmluZWQpID8gcG9pbnRYIDogY29uc3RhbnQoeCk7XG4gIHkgPSB0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiID8geSA6ICh5ID09PSB1bmRlZmluZWQpID8gcG9pbnRZIDogY29uc3RhbnQoeSk7XG5cbiAgZnVuY3Rpb24gbGluZShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSAoZGF0YSA9IGFycmF5KGRhdGEpKS5sZW5ndGgsXG4gICAgICAgIGQsXG4gICAgICAgIGRlZmluZWQwID0gZmFsc2UsXG4gICAgICAgIGJ1ZmZlcjtcblxuICAgIGlmIChjb250ZXh0ID09IG51bGwpIG91dHB1dCA9IGN1cnZlKGJ1ZmZlciA9IHBhdGgoKSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDw9IG47ICsraSkge1xuICAgICAgaWYgKCEoaSA8IG4gJiYgZGVmaW5lZChkID0gZGF0YVtpXSwgaSwgZGF0YSkpID09PSBkZWZpbmVkMCkge1xuICAgICAgICBpZiAoZGVmaW5lZDAgPSAhZGVmaW5lZDApIG91dHB1dC5saW5lU3RhcnQoKTtcbiAgICAgICAgZWxzZSBvdXRwdXQubGluZUVuZCgpO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmluZWQwKSBvdXRwdXQucG9pbnQoK3goZCwgaSwgZGF0YSksICt5KGQsIGksIGRhdGEpKTtcbiAgICB9XG5cbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gb3V0cHV0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluZS54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB4O1xuICB9O1xuXG4gIGxpbmUueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmUpIDogeTtcbiAgfTtcblxuICBsaW5lLmRlZmluZWQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZGVmaW5lZCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgbGluZSkgOiBkZWZpbmVkO1xuICB9O1xuXG4gIGxpbmUuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY3VydmUgPSBfLCBjb250ZXh0ICE9IG51bGwgJiYgKG91dHB1dCA9IGN1cnZlKGNvbnRleHQpKSwgbGluZSkgOiBjdXJ2ZTtcbiAgfTtcblxuICBsaW5lLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoXyA9PSBudWxsID8gY29udGV4dCA9IG91dHB1dCA9IG51bGwgOiBvdXRwdXQgPSBjdXJ2ZShjb250ZXh0ID0gXyksIGxpbmUpIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/line.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/lineRadial.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/lineRadial.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"lineRadial\": () => (/* binding */ lineRadial)\n/* harmony export */ });\n/* harmony import */ var _curve_radial_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curve/radial.js */ \"../../../node_modules/d3-shape/src/curve/radial.js\");\n/* harmony import */ var _line_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./line.js */ \"../../../node_modules/d3-shape/src/line.js\");\n\n\n\nfunction lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c((0,_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_)) : c()._curve;\n };\n\n return l;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return lineRadial((0,_line_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])().curve(_curve_radial_js__WEBPACK_IMPORTED_MODULE_0__.curveRadialLinear));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lUmFkaWFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBaUU7QUFDcEM7O0FBRXRCO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdDQUFnQyw0REFBVztBQUMzQzs7QUFFQTtBQUNBOztBQUVBLDZCQUFlLHNDQUFXO0FBQzFCLG9CQUFvQixvREFBSSxTQUFTLCtEQUFpQjtBQUNsRCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2xpbmVSYWRpYWwuanM/MTUzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3VydmVSYWRpYWwsIHtjdXJ2ZVJhZGlhbExpbmVhcn0gZnJvbSBcIi4vY3VydmUvcmFkaWFsLmpzXCI7XG5pbXBvcnQgbGluZSBmcm9tIFwiLi9saW5lLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lUmFkaWFsKGwpIHtcbiAgdmFyIGMgPSBsLmN1cnZlO1xuXG4gIGwuYW5nbGUgPSBsLngsIGRlbGV0ZSBsLng7XG4gIGwucmFkaXVzID0gbC55LCBkZWxldGUgbC55O1xuXG4gIGwuY3VydmUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyBjKGN1cnZlUmFkaWFsKF8pKSA6IGMoKS5fY3VydmU7XG4gIH07XG5cbiAgcmV0dXJuIGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbGluZVJhZGlhbChsaW5lKCkuY3VydmUoY3VydmVSYWRpYWxMaW5lYXIpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/lineRadial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/link.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/link.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"link\": () => (/* binding */ link),\n/* harmony export */ \"linkHorizontal\": () => (/* binding */ linkHorizontal),\n/* harmony export */ \"linkRadial\": () => (/* binding */ linkRadial),\n/* harmony export */ \"linkVertical\": () => (/* binding */ linkVertical)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _curve_bump_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./curve/bump.js */ \"../../../node_modules/d3-shape/src/curve/bump.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-shape/src/path.js\");\n/* harmony import */ var _point_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./point.js */ \"../../../node_modules/d3-shape/src/point.js\");\n\n\n\n\n\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = _point_js__WEBPACK_IMPORTED_MODULE_0__.x,\n y = _point_js__WEBPACK_IMPORTED_MODULE_0__.y,\n context = null,\n output = null,\n path = (0,_path_js__WEBPACK_IMPORTED_MODULE_1__.withPath)(link);\n\n function link() {\n let buffer;\n const argv = _array_js__WEBPACK_IMPORTED_MODULE_2__.slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nfunction linkHorizontal() {\n return link(_curve_bump_js__WEBPACK_IMPORTED_MODULE_4__.bumpX);\n}\n\nfunction linkVertical() {\n return link(_curve_bump_js__WEBPACK_IMPORTED_MODULE_4__.bumpY);\n}\n\nfunction linkRadial() {\n const l = link(_curve_bump_js__WEBPACK_IMPORTED_MODULE_4__.bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFpQztBQUNJO0FBQ29CO0FBQ3RCO0FBQ2lCOztBQUVwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLFVBQVUsd0NBQU07QUFDaEIsVUFBVSx3Q0FBTTtBQUNoQjtBQUNBO0FBQ0EsYUFBYSxrREFBUTs7QUFFckI7QUFDQTtBQUNBLGlCQUFpQixpREFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBLGlFQUFpRSx3REFBUTtBQUN6RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQLGNBQWMsaURBQUs7QUFDbkI7O0FBRU87QUFDUCxjQUFjLGlEQUFLO0FBQ25COztBQUVPO0FBQ1AsaUJBQWlCLHNEQUFVO0FBQzNCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbGluay5qcz9iODY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCB7YnVtcFgsIGJ1bXBZLCBidW1wUmFkaWFsfSBmcm9tIFwiLi9jdXJ2ZS9idW1wLmpzXCI7XG5pbXBvcnQge3dpdGhQYXRofSBmcm9tIFwiLi9wYXRoLmpzXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnQuanNcIjtcblxuZnVuY3Rpb24gbGlua1NvdXJjZShkKSB7XG4gIHJldHVybiBkLnNvdXJjZTtcbn1cblxuZnVuY3Rpb24gbGlua1RhcmdldChkKSB7XG4gIHJldHVybiBkLnRhcmdldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmsoY3VydmUpIHtcbiAgbGV0IHNvdXJjZSA9IGxpbmtTb3VyY2UsXG4gICAgICB0YXJnZXQgPSBsaW5rVGFyZ2V0LFxuICAgICAgeCA9IHBvaW50WCxcbiAgICAgIHkgPSBwb2ludFksXG4gICAgICBjb250ZXh0ID0gbnVsbCxcbiAgICAgIG91dHB1dCA9IG51bGwsXG4gICAgICBwYXRoID0gd2l0aFBhdGgobGluayk7XG5cbiAgZnVuY3Rpb24gbGluaygpIHtcbiAgICBsZXQgYnVmZmVyO1xuICAgIGNvbnN0IGFyZ3YgPSBzbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgY29uc3QgcyA9IHNvdXJjZS5hcHBseSh0aGlzLCBhcmd2KTtcbiAgICBjb25zdCB0ID0gdGFyZ2V0LmFwcGx5KHRoaXMsIGFyZ3YpO1xuICAgIGlmIChjb250ZXh0ID09IG51bGwpIG91dHB1dCA9IGN1cnZlKGJ1ZmZlciA9IHBhdGgoKSk7XG4gICAgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgIGFyZ3ZbMF0gPSBzLCBvdXRwdXQucG9pbnQoK3guYXBwbHkodGhpcywgYXJndiksICt5LmFwcGx5KHRoaXMsIGFyZ3YpKTtcbiAgICBhcmd2WzBdID0gdCwgb3V0cHV0LnBvaW50KCt4LmFwcGx5KHRoaXMsIGFyZ3YpLCAreS5hcHBseSh0aGlzLCBhcmd2KSk7XG4gICAgb3V0cHV0LmxpbmVFbmQoKTtcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gb3V0cHV0ID0gbnVsbCwgYnVmZmVyICsgXCJcIiB8fCBudWxsO1xuICB9XG5cbiAgbGluay5zb3VyY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc291cmNlID0gXywgbGluaykgOiBzb3VyY2U7XG4gIH07XG5cbiAgbGluay50YXJnZXQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFyZ2V0ID0gXywgbGluaykgOiB0YXJnZXQ7XG4gIH07XG5cbiAgbGluay54ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHggPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluaykgOiB4O1xuICB9O1xuXG4gIGxpbmsueSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh5ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGxpbmspIDogeTtcbiAgfTtcblxuICBsaW5rLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoXyA9PSBudWxsID8gY29udGV4dCA9IG91dHB1dCA9IG51bGwgOiBvdXRwdXQgPSBjdXJ2ZShjb250ZXh0ID0gXyksIGxpbmspIDogY29udGV4dDtcbiAgfTtcblxuICByZXR1cm4gbGluaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtIb3Jpem9udGFsKCkge1xuICByZXR1cm4gbGluayhidW1wWCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rVmVydGljYWwoKSB7XG4gIHJldHVybiBsaW5rKGJ1bXBZKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtSYWRpYWwoKSB7XG4gIGNvbnN0IGwgPSBsaW5rKGJ1bXBSYWRpYWwpO1xuICBsLmFuZ2xlID0gbC54LCBkZWxldGUgbC54O1xuICBsLnJhZGl1cyA9IGwueSwgZGVsZXRlIGwueTtcbiAgcmV0dXJuIGw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/link.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/math.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/math.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"abs\": () => (/* binding */ abs),\n/* harmony export */ \"acos\": () => (/* binding */ acos),\n/* harmony export */ \"asin\": () => (/* binding */ asin),\n/* harmony export */ \"atan2\": () => (/* binding */ atan2),\n/* harmony export */ \"cos\": () => (/* binding */ cos),\n/* harmony export */ \"epsilon\": () => (/* binding */ epsilon),\n/* harmony export */ \"halfPi\": () => (/* binding */ halfPi),\n/* harmony export */ \"max\": () => (/* binding */ max),\n/* harmony export */ \"min\": () => (/* binding */ min),\n/* harmony export */ \"pi\": () => (/* binding */ pi),\n/* harmony export */ \"sin\": () => (/* binding */ sin),\n/* harmony export */ \"sqrt\": () => (/* binding */ sqrt),\n/* harmony export */ \"tau\": () => (/* binding */ tau)\n/* harmony export */ });\nconst abs = Math.abs;\nconst atan2 = Math.atan2;\nconst cos = Math.cos;\nconst max = Math.max;\nconst min = Math.min;\nconst sin = Math.sin;\nconst sqrt = Math.sqrt;\n\nconst epsilon = 1e-12;\nconst pi = Math.PI;\nconst halfPi = pi / 2;\nconst tau = 2 * pi;\n\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9tYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvbWF0aC5qcz9jMDBkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBhYnMgPSBNYXRoLmFicztcbmV4cG9ydCBjb25zdCBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgY29uc3QgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgY29uc3QgbWluID0gTWF0aC5taW47XG5leHBvcnQgY29uc3Qgc2luID0gTWF0aC5zaW47XG5leHBvcnQgY29uc3Qgc3FydCA9IE1hdGguc3FydDtcblxuZXhwb3J0IGNvbnN0IGVwc2lsb24gPSAxZS0xMjtcbmV4cG9ydCBjb25zdCBwaSA9IE1hdGguUEk7XG5leHBvcnQgY29uc3QgaGFsZlBpID0gcGkgLyAyO1xuZXhwb3J0IGNvbnN0IHRhdSA9IDIgKiBwaTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPj0gMSA/IGhhbGZQaSA6IHggPD0gLTEgPyAtaGFsZlBpIDogTWF0aC5hc2luKHgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/math.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/noop.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/noop.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9ub29wLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxzQ0FBVyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL25vb3AuanM/MjgyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHt9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/noop.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/offset/diverging.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/offset/diverging.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvZGl2ZXJnaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLG9FQUFvRSxPQUFPO0FBQzNFLDZCQUE2QixPQUFPO0FBQ3BDO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC9kaXZlcmdpbmcuanM/NjUzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAwKSkgcmV0dXJuO1xuICBmb3IgKHZhciBpLCBqID0gMCwgZCwgZHksIHlwLCB5biwgbiwgbSA9IHNlcmllc1tvcmRlclswXV0ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5cCA9IHluID0gMCwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgoZHkgPSAoZCA9IHNlcmllc1tvcmRlcltpXV1bal0pWzFdIC0gZFswXSkgPiAwKSB7XG4gICAgICAgIGRbMF0gPSB5cCwgZFsxXSA9IHlwICs9IGR5O1xuICAgICAgfSBlbHNlIGlmIChkeSA8IDApIHtcbiAgICAgICAgZFsxXSA9IHluLCBkWzBdID0geW4gKz0gZHk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkWzBdID0gMCwgZFsxXSA9IGR5O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/offset/diverging.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/offset/expand.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/offset/expand.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvZXhwYW5kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLGlEQUFpRCxPQUFPO0FBQ3hELG9CQUFvQixPQUFPO0FBQzNCLHVCQUF1QixPQUFPO0FBQzlCO0FBQ0EsRUFBRSxvREFBSTtBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L2V4cGFuZC5qcz9mZGJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzLCBvcmRlcikge1xuICBpZiAoISgobiA9IHNlcmllcy5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgaSwgbiwgaiA9IDAsIG0gPSBzZXJpZXNbMF0ubGVuZ3RoLCB5OyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh5ID0gaSA9IDA7IGkgPCBuOyArK2kpIHkgKz0gc2VyaWVzW2ldW2pdWzFdIHx8IDA7XG4gICAgaWYgKHkpIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHNlcmllc1tpXVtqXVsxXSAvPSB5O1xuICB9XG4gIG5vbmUoc2VyaWVzLCBvcmRlcik7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/offset/expand.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/offset/none.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/offset/none.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvbm9uZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSxrRUFBa0UsT0FBTztBQUN6RTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L25vbmUuanM/Nzg2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMsIG9yZGVyKSB7XG4gIGlmICghKChuID0gc2VyaWVzLmxlbmd0aCkgPiAxKSkgcmV0dXJuO1xuICBmb3IgKHZhciBpID0gMSwgaiwgczAsIHMxID0gc2VyaWVzW29yZGVyWzBdXSwgbiwgbSA9IHMxLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgIHMwID0gczEsIHMxID0gc2VyaWVzW29yZGVyW2ldXTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgICBzMVtqXVsxXSArPSBzMVtqXVswXSA9IGlzTmFOKHMwW2pdWzFdKSA/IHMwW2pdWzBdIDogczBbal1bMV07XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/offset/none.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/offset/silhouette.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/offset/silhouette.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvc2lsaG91ZXR0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE2Qjs7QUFFN0IsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSwyREFBMkQsT0FBTztBQUNsRSwyQkFBMkIsT0FBTztBQUNsQztBQUNBO0FBQ0EsRUFBRSxvREFBSTtBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb2Zmc2V0L3NpbGhvdWV0dGUuanM/MmVhNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApKSByZXR1cm47XG4gIGZvciAodmFyIGogPSAwLCBzMCA9IHNlcmllc1tvcmRlclswXV0sIG4sIG0gPSBzMC5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBpID0gMCwgeSA9IDA7IGkgPCBuOyArK2kpIHkgKz0gc2VyaWVzW2ldW2pdWzFdIHx8IDA7XG4gICAgczBbal1bMV0gKz0gczBbal1bMF0gPSAteSAvIDI7XG4gIH1cbiAgbm9uZShzZXJpZXMsIG9yZGVyKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/offset/silhouette.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/offset/wiggle.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/offset/wiggle.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/offset/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series, order);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vZmZzZXQvd2lnZ2xlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLG1DQUFtQyxPQUFPO0FBQzFDLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLE9BQU87QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0RBQUk7QUFDTiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29mZnNldC93aWdnbGUuanM/OTRlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9uZSBmcm9tIFwiLi9ub25lLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcywgb3JkZXIpIHtcbiAgaWYgKCEoKG4gPSBzZXJpZXMubGVuZ3RoKSA+IDApIHx8ICEoKG0gPSAoczAgPSBzZXJpZXNbb3JkZXJbMF1dKS5sZW5ndGgpID4gMCkpIHJldHVybjtcbiAgZm9yICh2YXIgeSA9IDAsIGogPSAxLCBzMCwgbSwgbjsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGkgPSAwLCBzMSA9IDAsIHMyID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHNpID0gc2VyaWVzW29yZGVyW2ldXSxcbiAgICAgICAgICBzaWowID0gc2lbal1bMV0gfHwgMCxcbiAgICAgICAgICBzaWoxID0gc2lbaiAtIDFdWzFdIHx8IDAsXG4gICAgICAgICAgczMgPSAoc2lqMCAtIHNpajEpIC8gMjtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgKytrKSB7XG4gICAgICAgIHZhciBzayA9IHNlcmllc1tvcmRlcltrXV0sXG4gICAgICAgICAgICBza2owID0gc2tbal1bMV0gfHwgMCxcbiAgICAgICAgICAgIHNrajEgPSBza1tqIC0gMV1bMV0gfHwgMDtcbiAgICAgICAgczMgKz0gc2tqMCAtIHNrajE7XG4gICAgICB9XG4gICAgICBzMSArPSBzaWowLCBzMiArPSBzMyAqIHNpajA7XG4gICAgfVxuICAgIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICAgIGlmIChzMSkgeSAtPSBzMiAvIHMxO1xuICB9XG4gIHMwW2ogLSAxXVsxXSArPSBzMFtqIC0gMV1bMF0gPSB5O1xuICBub25lKHNlcmllcywgb3JkZXIpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/offset/wiggle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/appearance.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/appearance.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n var peaks = series.map(peak);\n return (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9hcHBlYXJhbmNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLFNBQVMsb0RBQUksK0JBQStCLDZCQUE2QjtBQUN6RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXBwZWFyYW5jZS5qcz9kMjM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub25lIGZyb20gXCIuL25vbmUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VyaWVzKSB7XG4gIHZhciBwZWFrcyA9IHNlcmllcy5tYXAocGVhayk7XG4gIHJldHVybiBub25lKHNlcmllcykuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBwZWFrc1thXSAtIHBlYWtzW2JdOyB9KTtcbn1cblxuZnVuY3Rpb24gcGVhayhzZXJpZXMpIHtcbiAgdmFyIGkgPSAtMSwgaiA9IDAsIG4gPSBzZXJpZXMubGVuZ3RoLCB2aSwgdmogPSAtSW5maW5pdHk7XG4gIHdoaWxlICgrK2kgPCBuKSBpZiAoKHZpID0gK3Nlcmllc1tpXVsxXSkgPiB2aikgdmogPSB2aSwgaiA9IGk7XG4gIHJldHVybiBqO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/appearance.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/ascending.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/ascending.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"sum\": () => (/* binding */ sum)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n var sums = series.map(sum);\n return (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nfunction sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9hc2NlbmRpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBLFNBQVMsb0RBQUksK0JBQStCLDJCQUEyQjtBQUN2RTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvYXNjZW5kaW5nLmpzPzZjNmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIHN1bXMgPSBzZXJpZXMubWFwKHN1bSk7XG4gIHJldHVybiBub25lKHNlcmllcykuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBzdW1zW2FdIC0gc3Vtc1tiXTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW0oc2VyaWVzKSB7XG4gIHZhciBzID0gMCwgaSA9IC0xLCBuID0gc2VyaWVzLmxlbmd0aCwgdjtcbiAgd2hpbGUgKCsraSA8IG4pIGlmICh2ID0gK3Nlcmllc1tpXVsxXSkgcyArPSB2O1xuICByZXR1cm4gcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/ascending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/descending.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/descending.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-shape/src/order/ascending.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n return (0,_ascending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9kZXNjZW5kaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVDOztBQUV2Qyw2QkFBZSxvQ0FBUztBQUN4QixTQUFTLHlEQUFTO0FBQ2xCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvZGVzY2VuZGluZy5qcz8xZTMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlcmllcykge1xuICByZXR1cm4gYXNjZW5kaW5nKHNlcmllcykucmV2ZXJzZSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/descending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/insideOut.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/insideOut.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _appearance_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appearance.js */ \"../../../node_modules/d3-shape/src/order/appearance.js\");\n/* harmony import */ var _ascending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ascending.js */ \"../../../node_modules/d3-shape/src/order/ascending.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(_ascending_js__WEBPACK_IMPORTED_MODULE_0__.sum),\n order = (0,_appearance_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9pbnNpZGVPdXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXlDO0FBQ047O0FBRW5DLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw4Q0FBRztBQUMzQixjQUFjLDBEQUFVO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvb3JkZXIvaW5zaWRlT3V0LmpzPzFiYmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwcGVhcmFuY2UgZnJvbSBcIi4vYXBwZWFyYW5jZS5qc1wiO1xuaW1wb3J0IHtzdW19IGZyb20gXCIuL2FzY2VuZGluZy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLFxuICAgICAgaSxcbiAgICAgIGosXG4gICAgICBzdW1zID0gc2VyaWVzLm1hcChzdW0pLFxuICAgICAgb3JkZXIgPSBhcHBlYXJhbmNlKHNlcmllcyksXG4gICAgICB0b3AgPSAwLFxuICAgICAgYm90dG9tID0gMCxcbiAgICAgIHRvcHMgPSBbXSxcbiAgICAgIGJvdHRvbXMgPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgaiA9IG9yZGVyW2ldO1xuICAgIGlmICh0b3AgPCBib3R0b20pIHtcbiAgICAgIHRvcCArPSBzdW1zW2pdO1xuICAgICAgdG9wcy5wdXNoKGopO1xuICAgIH0gZWxzZSB7XG4gICAgICBib3R0b20gKz0gc3Vtc1tqXTtcbiAgICAgIGJvdHRvbXMucHVzaChqKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm90dG9tcy5yZXZlcnNlKCkuY29uY2F0KHRvcHMpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/insideOut.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/none.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/none.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9ub25lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL29yZGVyL25vbmUuanM/YzE1NiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgdmFyIG4gPSBzZXJpZXMubGVuZ3RoLCBvID0gbmV3IEFycmF5KG4pO1xuICB3aGlsZSAoLS1uID49IDApIG9bbl0gPSBuO1xuICByZXR1cm4gbztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/none.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/order/reverse.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/order/reverse.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./none.js */ \"../../../node_modules/d3-shape/src/order/none.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(series) {\n return (0,_none_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(series).reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9yZXZlcnNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUU3Qiw2QkFBZSxvQ0FBUztBQUN4QixTQUFTLG9EQUFJO0FBQ2IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9vcmRlci9yZXZlcnNlLmpzPzdlNWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vbmUgZnJvbSBcIi4vbm9uZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZXJpZXMpIHtcbiAgcmV0dXJuIG5vbmUoc2VyaWVzKS5yZXZlcnNlKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/order/reverse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/path.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-shape/src/path.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"withPath\": () => (/* binding */ withPath)\n/* harmony export */ });\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-path */ \"../../../node_modules/d3-path/src/path.js\");\n\n\nfunction withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new d3_path__WEBPACK_IMPORTED_MODULE_0__.Path(digits);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZCOztBQUV0QjtBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsNkRBQTZELEVBQUU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHlDQUFJO0FBQ3ZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvcGF0aC5qcz9jNDMyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGF0aH0gZnJvbSBcImQzLXBhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYXRoKHNoYXBlKSB7XG4gIGxldCBkaWdpdHMgPSAzO1xuXG4gIHNoYXBlLmRpZ2l0cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkaWdpdHM7XG4gICAgaWYgKF8gPT0gbnVsbCkge1xuICAgICAgZGlnaXRzID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZCA9IE1hdGguZmxvb3IoXyk7XG4gICAgICBpZiAoIShkID49IDApKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgaW52YWxpZCBkaWdpdHM6ICR7X31gKTtcbiAgICAgIGRpZ2l0cyA9IGQ7XG4gICAgfVxuICAgIHJldHVybiBzaGFwZTtcbiAgfTtcblxuICByZXR1cm4gKCkgPT4gbmV3IFBhdGgoZGlnaXRzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/path.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/pie.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-shape/src/pie.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _descending_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./descending.js */ \"../../../node_modules/d3-shape/src/descending.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/d3-shape/src/identity.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var value = _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n sortValues = _descending_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n sort = null,\n startAngle = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0),\n endAngle = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_math_js__WEBPACK_IMPORTED_MODULE_3__.tau),\n padAngle = (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(0);\n\n function pie(data) {\n var i,\n n = (data = (0,_array_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(_math_js__WEBPACK_IMPORTED_MODULE_3__.tau, Math.max(-_math_js__WEBPACK_IMPORTED_MODULE_3__.tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+_), pie) : padAngle;\n };\n\n return pie;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9waWUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQStCO0FBQ007QUFDSTtBQUNKO0FBQ1A7O0FBRTlCLDZCQUFlLHNDQUFXO0FBQzFCLGNBQWMsb0RBQVE7QUFDdEIsbUJBQW1CLHNEQUFVO0FBQzdCO0FBQ0EsbUJBQW1CLHdEQUFRO0FBQzNCLGlCQUFpQix3REFBUSxDQUFDLHlDQUFHO0FBQzdCLGlCQUFpQix3REFBUTs7QUFFekI7QUFDQTtBQUNBLG9CQUFvQixxREFBSztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IseUNBQUcsWUFBWSx5Q0FBRztBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsT0FBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdEQUF3RCxzQ0FBc0M7QUFDOUYsdURBQXVELGdDQUFnQzs7QUFFdkY7QUFDQSxtREFBbUQsT0FBTztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFFQUFxRSx3REFBUTtBQUM3RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEVBQTBFLHdEQUFRO0FBQ2xGOztBQUVBO0FBQ0Esd0VBQXdFLHdEQUFRO0FBQ2hGOztBQUVBO0FBQ0Esd0VBQXdFLHdEQUFRO0FBQ2hGOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9waWUuanM/YWEyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXkgZnJvbSBcIi4vYXJyYXkuanNcIjtcbmltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IGRlc2NlbmRpbmcgZnJvbSBcIi4vZGVzY2VuZGluZy5qc1wiO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gXCIuL2lkZW50aXR5LmpzXCI7XG5pbXBvcnQge3RhdX0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHZhbHVlID0gaWRlbnRpdHksXG4gICAgICBzb3J0VmFsdWVzID0gZGVzY2VuZGluZyxcbiAgICAgIHNvcnQgPSBudWxsLFxuICAgICAgc3RhcnRBbmdsZSA9IGNvbnN0YW50KDApLFxuICAgICAgZW5kQW5nbGUgPSBjb25zdGFudCh0YXUpLFxuICAgICAgcGFkQW5nbGUgPSBjb25zdGFudCgwKTtcblxuICBmdW5jdGlvbiBwaWUoZGF0YSkge1xuICAgIHZhciBpLFxuICAgICAgICBuID0gKGRhdGEgPSBhcnJheShkYXRhKSkubGVuZ3RoLFxuICAgICAgICBqLFxuICAgICAgICBrLFxuICAgICAgICBzdW0gPSAwLFxuICAgICAgICBpbmRleCA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYXJjcyA9IG5ldyBBcnJheShuKSxcbiAgICAgICAgYTAgPSArc3RhcnRBbmdsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICBkYSA9IE1hdGgubWluKHRhdSwgTWF0aC5tYXgoLXRhdSwgZW5kQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSAtIGEwKSksXG4gICAgICAgIGExLFxuICAgICAgICBwID0gTWF0aC5taW4oTWF0aC5hYnMoZGEpIC8gbiwgcGFkQW5nbGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSksXG4gICAgICAgIHBhID0gcCAqIChkYSA8IDAgPyAtMSA6IDEpLFxuICAgICAgICB2O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKCh2ID0gYXJjc1tpbmRleFtpXSA9IGldID0gK3ZhbHVlKGRhdGFbaV0sIGksIGRhdGEpKSA+IDApIHtcbiAgICAgICAgc3VtICs9IHY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3B0aW9uYWxseSBzb3J0IHRoZSBhcmNzIGJ5IHByZXZpb3VzbHktY29tcHV0ZWQgdmFsdWVzIG9yIGJ5IGRhdGEuXG4gICAgaWYgKHNvcnRWYWx1ZXMgIT0gbnVsbCkgaW5kZXguc29ydChmdW5jdGlvbihpLCBqKSB7IHJldHVybiBzb3J0VmFsdWVzKGFyY3NbaV0sIGFyY3Nbal0pOyB9KTtcbiAgICBlbHNlIGlmIChzb3J0ICE9IG51bGwpIGluZGV4LnNvcnQoZnVuY3Rpb24oaSwgaikgeyByZXR1cm4gc29ydChkYXRhW2ldLCBkYXRhW2pdKTsgfSk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBhcmNzISBUaGV5IGFyZSBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGRhdGEncyBvcmRlci5cbiAgICBmb3IgKGkgPSAwLCBrID0gc3VtID8gKGRhIC0gbiAqIHBhKSAvIHN1bSA6IDA7IGkgPCBuOyArK2ksIGEwID0gYTEpIHtcbiAgICAgIGogPSBpbmRleFtpXSwgdiA9IGFyY3Nbal0sIGExID0gYTAgKyAodiA+IDAgPyB2ICogayA6IDApICsgcGEsIGFyY3Nbal0gPSB7XG4gICAgICAgIGRhdGE6IGRhdGFbal0sXG4gICAgICAgIGluZGV4OiBpLFxuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgc3RhcnRBbmdsZTogYTAsXG4gICAgICAgIGVuZEFuZ2xlOiBhMSxcbiAgICAgICAgcGFkQW5nbGU6IHBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyY3M7XG4gIH1cblxuICBwaWUudmFsdWUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmFsdWUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgcGllKSA6IHZhbHVlO1xuICB9O1xuXG4gIHBpZS5zb3J0VmFsdWVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHNvcnRWYWx1ZXMgPSBfLCBzb3J0ID0gbnVsbCwgcGllKSA6IHNvcnRWYWx1ZXM7XG4gIH07XG5cbiAgcGllLnNvcnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc29ydCA9IF8sIHNvcnRWYWx1ZXMgPSBudWxsLCBwaWUpIDogc29ydDtcbiAgfTtcblxuICBwaWUuc3RhcnRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzdGFydEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHBpZSkgOiBzdGFydEFuZ2xlO1xuICB9O1xuXG4gIHBpZS5lbmRBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChlbmRBbmdsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBwaWUpIDogZW5kQW5nbGU7XG4gIH07XG5cbiAgcGllLnBhZEFuZ2xlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHBhZEFuZ2xlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHBpZSkgOiBwYWRBbmdsZTtcbiAgfTtcblxuICByZXR1cm4gcGllO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/pie.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/point.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-shape/src/point.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"x\": () => (/* binding */ x),\n/* harmony export */ \"y\": () => (/* binding */ y)\n/* harmony export */ });\nfunction x(p) {\n return p[0];\n}\n\nfunction y(p) {\n return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcz84ZTRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB4KHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KHApIHtcbiAgcmV0dXJuIHBbMV07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/point.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/pointRadial.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/pointRadial.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludFJhZGlhbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3BvaW50UmFkaWFsLmpzPzI1N2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gWyh5ID0gK3kpICogTWF0aC5jb3MoeCAtPSBNYXRoLlBJIC8gMiksIHkgKiBNYXRoLnNpbih4KV07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/pointRadial.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/stack.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-shape/src/stack.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _array_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./array.js */ \"../../../node_modules/d3-shape/src/array.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _offset_none_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset/none.js */ \"../../../node_modules/d3-shape/src/offset/none.js\");\n/* harmony import */ var _order_none_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./order/none.js */ \"../../../node_modules/d3-shape/src/order/none.js\");\n\n\n\n\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var keys = (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([]),\n order = _order_none_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offset = _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = (0,_array_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? _order_none_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? _offset_none_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _, stack) : offset;\n };\n\n return stack;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zdGFjay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErQjtBQUNNO0FBQ0s7QUFDRjs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsc0NBQVc7QUFDMUIsYUFBYSx3REFBUTtBQUNyQixjQUFjLHNEQUFTO0FBQ3ZCLGVBQWUsdURBQVU7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLHFEQUFLLGFBQWEsT0FBTztBQUM5QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9FQUFvRSx3REFBUTtBQUM1RTs7QUFFQTtBQUNBLHFFQUFxRSx3REFBUTtBQUM3RTs7QUFFQTtBQUNBLG1EQUFtRCxzREFBUyxpQ0FBaUMsd0RBQVE7QUFDckc7O0FBRUE7QUFDQSxvREFBb0QsdURBQVU7QUFDOUQ7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N0YWNrLmpzPzk2OTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5IGZyb20gXCIuL2FycmF5LmpzXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBvZmZzZXROb25lIGZyb20gXCIuL29mZnNldC9ub25lLmpzXCI7XG5pbXBvcnQgb3JkZXJOb25lIGZyb20gXCIuL29yZGVyL25vbmUuanNcIjtcblxuZnVuY3Rpb24gc3RhY2tWYWx1ZShkLCBrZXkpIHtcbiAgcmV0dXJuIGRba2V5XTtcbn1cblxuZnVuY3Rpb24gc3RhY2tTZXJpZXMoa2V5KSB7XG4gIGNvbnN0IHNlcmllcyA9IFtdO1xuICBzZXJpZXMua2V5ID0ga2V5O1xuICByZXR1cm4gc2VyaWVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGtleXMgPSBjb25zdGFudChbXSksXG4gICAgICBvcmRlciA9IG9yZGVyTm9uZSxcbiAgICAgIG9mZnNldCA9IG9mZnNldE5vbmUsXG4gICAgICB2YWx1ZSA9IHN0YWNrVmFsdWU7XG5cbiAgZnVuY3Rpb24gc3RhY2soZGF0YSkge1xuICAgIHZhciBzeiA9IEFycmF5LmZyb20oa2V5cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBzdGFja1NlcmllcyksXG4gICAgICAgIGksIG4gPSBzei5sZW5ndGgsIGogPSAtMSxcbiAgICAgICAgb3o7XG5cbiAgICBmb3IgKGNvbnN0IGQgb2YgZGF0YSkge1xuICAgICAgZm9yIChpID0gMCwgKytqOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIChzeltpXVtqXSA9IFswLCArdmFsdWUoZCwgc3pbaV0ua2V5LCBqLCBkYXRhKV0pLmRhdGEgPSBkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoaSA9IDAsIG96ID0gYXJyYXkob3JkZXIoc3opKTsgaSA8IG47ICsraSkge1xuICAgICAgc3pbb3pbaV1dLmluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBvZmZzZXQoc3osIG96KTtcbiAgICByZXR1cm4gc3o7XG4gIH1cblxuICBzdGFjay5rZXlzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGtleXMgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KEFycmF5LmZyb20oXykpLCBzdGFjaykgOiBrZXlzO1xuICB9O1xuXG4gIHN0YWNrLnZhbHVlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHZhbHVlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHN0YWNrKSA6IHZhbHVlO1xuICB9O1xuXG4gIHN0YWNrLm9yZGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9yZGVyID0gXyA9PSBudWxsID8gb3JkZXJOb25lIDogdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChBcnJheS5mcm9tKF8pKSwgc3RhY2spIDogb3JkZXI7XG4gIH07XG5cbiAgc3RhY2sub2Zmc2V0ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKG9mZnNldCA9IF8gPT0gbnVsbCA/IG9mZnNldE5vbmUgOiBfLCBzdGFjaykgOiBvZmZzZXQ7XG4gIH07XG5cbiAgcmV0dXJuIHN0YWNrO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/stack.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Symbol),\n/* harmony export */ \"symbolsFill\": () => (/* binding */ symbolsFill),\n/* harmony export */ \"symbolsStroke\": () => (/* binding */ symbolsStroke)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-shape/src/constant.js\");\n/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./path.js */ \"../../../node_modules/d3-shape/src/path.js\");\n/* harmony import */ var _symbol_asterisk_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./symbol/asterisk.js */ \"../../../node_modules/d3-shape/src/symbol/asterisk.js\");\n/* harmony import */ var _symbol_circle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./symbol/circle.js */ \"../../../node_modules/d3-shape/src/symbol/circle.js\");\n/* harmony import */ var _symbol_cross_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./symbol/cross.js */ \"../../../node_modules/d3-shape/src/symbol/cross.js\");\n/* harmony import */ var _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/diamond.js */ \"../../../node_modules/d3-shape/src/symbol/diamond.js\");\n/* harmony import */ var _symbol_diamond2_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./symbol/diamond2.js */ \"../../../node_modules/d3-shape/src/symbol/diamond2.js\");\n/* harmony import */ var _symbol_plus_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./symbol/plus.js */ \"../../../node_modules/d3-shape/src/symbol/plus.js\");\n/* harmony import */ var _symbol_square_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./symbol/square.js */ \"../../../node_modules/d3-shape/src/symbol/square.js\");\n/* harmony import */ var _symbol_square2_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./symbol/square2.js */ \"../../../node_modules/d3-shape/src/symbol/square2.js\");\n/* harmony import */ var _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./symbol/star.js */ \"../../../node_modules/d3-shape/src/symbol/star.js\");\n/* harmony import */ var _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./symbol/triangle.js */ \"../../../node_modules/d3-shape/src/symbol/triangle.js\");\n/* harmony import */ var _symbol_triangle2_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./symbol/triangle2.js */ \"../../../node_modules/d3-shape/src/symbol/triangle2.js\");\n/* harmony import */ var _symbol_wye_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./symbol/wye.js */ \"../../../node_modules/d3-shape/src/symbol/wye.js\");\n/* harmony import */ var _symbol_times_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./symbol/times.js */ \"../../../node_modules/d3-shape/src/symbol/times.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// These symbols are designed to be filled.\nconst symbolsFill = [\n _symbol_circle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n _symbol_cross_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _symbol_diamond_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n _symbol_square_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n _symbol_star_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n _symbol_triangle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n _symbol_wye_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nconst symbolsStroke = [\n _symbol_circle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n _symbol_plus_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n _symbol_times_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n _symbol_triangle2_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n _symbol_asterisk_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n _symbol_square2_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n _symbol_diamond2_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n];\n\nfunction Symbol(type, size) {\n let context = null,\n path = (0,_path_js__WEBPACK_IMPORTED_MODULE_13__.withPath)(symbol);\n\n type = typeof type === \"function\" ? type : (0,_constant_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(type || _symbol_circle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n size = typeof size === \"function\" ? size : (0,_constant_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXFDO0FBQ0Y7QUFDUztBQUNKO0FBQ0Y7QUFDSTtBQUNFO0FBQ1I7QUFDSTtBQUNFO0FBQ047QUFDUTtBQUNFO0FBQ1o7QUFDSTs7QUFFdEM7QUFDTztBQUNQLEVBQUUseURBQU07QUFDUixFQUFFLHdEQUFLO0FBQ1AsRUFBRSwwREFBTztBQUNULEVBQUUseURBQU07QUFDUixFQUFFLHVEQUFJO0FBQ04sRUFBRSwyREFBUTtBQUNWLEVBQUUsc0RBQUc7QUFDTDs7QUFFQTtBQUNPO0FBQ1AsRUFBRSx5REFBTTtBQUNSLEVBQUUsdURBQUk7QUFDTixFQUFFLHdEQUFLO0FBQ1AsRUFBRSw0REFBUztBQUNYLEVBQUUsNERBQVE7QUFDVixFQUFFLDJEQUFPO0FBQ1QsRUFBRSw0REFBUTtBQUNWOztBQUVlO0FBQ2Y7QUFDQSxhQUFhLG1EQUFROztBQUVyQiw2Q0FBNkMseURBQVEsU0FBUyx5REFBTTtBQUNwRSw2Q0FBNkMseURBQVE7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9FQUFvRSx5REFBUTtBQUM1RTs7QUFFQTtBQUNBLG9FQUFvRSx5REFBUTtBQUM1RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC5qcz85ZmNlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudC5qc1wiO1xuaW1wb3J0IHt3aXRoUGF0aH0gZnJvbSBcIi4vcGF0aC5qc1wiO1xuaW1wb3J0IGFzdGVyaXNrIGZyb20gXCIuL3N5bWJvbC9hc3Rlcmlzay5qc1wiO1xuaW1wb3J0IGNpcmNsZSBmcm9tIFwiLi9zeW1ib2wvY2lyY2xlLmpzXCI7XG5pbXBvcnQgY3Jvc3MgZnJvbSBcIi4vc3ltYm9sL2Nyb3NzLmpzXCI7XG5pbXBvcnQgZGlhbW9uZCBmcm9tIFwiLi9zeW1ib2wvZGlhbW9uZC5qc1wiO1xuaW1wb3J0IGRpYW1vbmQyIGZyb20gXCIuL3N5bWJvbC9kaWFtb25kMi5qc1wiO1xuaW1wb3J0IHBsdXMgZnJvbSBcIi4vc3ltYm9sL3BsdXMuanNcIjtcbmltcG9ydCBzcXVhcmUgZnJvbSBcIi4vc3ltYm9sL3NxdWFyZS5qc1wiO1xuaW1wb3J0IHNxdWFyZTIgZnJvbSBcIi4vc3ltYm9sL3NxdWFyZTIuanNcIjtcbmltcG9ydCBzdGFyIGZyb20gXCIuL3N5bWJvbC9zdGFyLmpzXCI7XG5pbXBvcnQgdHJpYW5nbGUgZnJvbSBcIi4vc3ltYm9sL3RyaWFuZ2xlLmpzXCI7XG5pbXBvcnQgdHJpYW5nbGUyIGZyb20gXCIuL3N5bWJvbC90cmlhbmdsZTIuanNcIjtcbmltcG9ydCB3eWUgZnJvbSBcIi4vc3ltYm9sL3d5ZS5qc1wiO1xuaW1wb3J0IHRpbWVzIGZyb20gXCIuL3N5bWJvbC90aW1lcy5qc1wiO1xuXG4vLyBUaGVzZSBzeW1ib2xzIGFyZSBkZXNpZ25lZCB0byBiZSBmaWxsZWQuXG5leHBvcnQgY29uc3Qgc3ltYm9sc0ZpbGwgPSBbXG4gIGNpcmNsZSxcbiAgY3Jvc3MsXG4gIGRpYW1vbmQsXG4gIHNxdWFyZSxcbiAgc3RhcixcbiAgdHJpYW5nbGUsXG4gIHd5ZVxuXTtcblxuLy8gVGhlc2Ugc3ltYm9scyBhcmUgZGVzaWduZWQgdG8gYmUgc3Ryb2tlZCAod2l0aCBhIHdpZHRoIG9mIDEuNXB4IGFuZCByb3VuZCBjYXBzKS5cbmV4cG9ydCBjb25zdCBzeW1ib2xzU3Ryb2tlID0gW1xuICBjaXJjbGUsXG4gIHBsdXMsXG4gIHRpbWVzLFxuICB0cmlhbmdsZTIsXG4gIGFzdGVyaXNrLFxuICBzcXVhcmUyLFxuICBkaWFtb25kMlxuXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3ltYm9sKHR5cGUsIHNpemUpIHtcbiAgbGV0IGNvbnRleHQgPSBudWxsLFxuICAgICAgcGF0aCA9IHdpdGhQYXRoKHN5bWJvbCk7XG5cbiAgdHlwZSA9IHR5cGVvZiB0eXBlID09PSBcImZ1bmN0aW9uXCIgPyB0eXBlIDogY29uc3RhbnQodHlwZSB8fCBjaXJjbGUpO1xuICBzaXplID0gdHlwZW9mIHNpemUgPT09IFwiZnVuY3Rpb25cIiA/IHNpemUgOiBjb25zdGFudChzaXplID09PSB1bmRlZmluZWQgPyA2NCA6ICtzaXplKTtcblxuICBmdW5jdGlvbiBzeW1ib2woKSB7XG4gICAgbGV0IGJ1ZmZlcjtcbiAgICBpZiAoIWNvbnRleHQpIGNvbnRleHQgPSBidWZmZXIgPSBwYXRoKCk7XG4gICAgdHlwZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLmRyYXcoY29udGV4dCwgK3NpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gICAgaWYgKGJ1ZmZlcikgcmV0dXJuIGNvbnRleHQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBzeW1ib2wudHlwZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0eXBlID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChfKSwgc3ltYm9sKSA6IHR5cGU7XG4gIH07XG5cbiAgc3ltYm9sLnNpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2l6ZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBzeW1ib2wpIDogc2l6ZTtcbiAgfTtcblxuICBzeW1ib2wuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjb250ZXh0ID0gXyA9PSBudWxsID8gbnVsbCA6IF8sIHN5bWJvbCkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBzeW1ib2w7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/asterisk.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/asterisk.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst sqrt3 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(3);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size + (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(size / 28, 0.75)) * 0.59436;\n const t = r / 2;\n const u = t * sqrt3;\n context.moveTo(0, r);\n context.lineTo(0, -r);\n context.moveTo(-u, -t);\n context.lineTo(u, t);\n context.moveTo(-u, t);\n context.lineTo(u, -t);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvYXN0ZXJpc2suanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLGNBQWMsOENBQUk7O0FBRWxCLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJLFFBQVEsNkNBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL2FzdGVyaXNrLmpzP2VjYjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmNvbnN0IHNxcnQzID0gc3FydCgzKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCByID0gc3FydChzaXplICsgbWluKHNpemUgLyAyOCwgMC43NSkpICogMC41OTQzNjtcbiAgICBjb25zdCB0ID0gciAvIDI7XG4gICAgY29uc3QgdSA9IHQgKiBzcXJ0MztcbiAgICBjb250ZXh0Lm1vdmVUbygwLCByKTtcbiAgICBjb250ZXh0LmxpbmVUbygwLCAtcik7XG4gICAgY29udGV4dC5tb3ZlVG8oLXUsIC10KTtcbiAgICBjb250ZXh0LmxpbmVUbyh1LCB0KTtcbiAgICBjb250ZXh0Lm1vdmVUbygtdSwgdCk7XG4gICAgY29udGV4dC5saW5lVG8odSwgLXQpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/asterisk.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/circle.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/circle.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size / _math_js__WEBPACK_IMPORTED_MODULE_0__.pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, _math_js__WEBPACK_IMPORTED_MODULE_0__.tau);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY2lyY2xlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlDOztBQUV6QyxpRUFBZTtBQUNmO0FBQ0EsY0FBYyw4Q0FBSSxRQUFRLHdDQUFFO0FBQzVCO0FBQ0EsNEJBQTRCLHlDQUFHO0FBQy9CO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL2NpcmNsZS5qcz80MjVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGksIHNxcnQsIHRhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCByID0gc3FydChzaXplIC8gcGkpO1xuICAgIGNvbnRleHQubW92ZVRvKHIsIDApO1xuICAgIGNvbnRleHQuYXJjKDAsIDAsIHIsIDAsIHRhdSk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/circle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/cross.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/cross.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY3Jvc3MuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvY3Jvc3MuanM/MGU3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdyhjb250ZXh0LCBzaXplKSB7XG4gICAgY29uc3QgciA9IHNxcnQoc2l6ZSAvIDUpIC8gMjtcbiAgICBjb250ZXh0Lm1vdmVUbygtMyAqIHIsIC1yKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIC0zICogcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKDMgKiByLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oMyAqIHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIDMgKiByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtciwgMyAqIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCByKTtcbiAgICBjb250ZXh0LmxpbmVUbygtMyAqIHIsIHIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/cross.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/diamond.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/diamond.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst tan30 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(1 / 3);\nconst tan30_2 = tan30 * 2;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const y = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFaEMsY0FBYyw4Q0FBSTtBQUNsQjs7QUFFQSxpRUFBZTtBQUNmO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9kaWFtb25kLmpzP2I1MDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG5jb25zdCB0YW4zMCA9IHNxcnQoMSAvIDMpO1xuY29uc3QgdGFuMzBfMiA9IHRhbjMwICogMjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCB5ID0gc3FydChzaXplIC8gdGFuMzBfMik7XG4gICAgY29uc3QgeCA9IHkgKiB0YW4zMDtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCAteSk7XG4gICAgY29udGV4dC5saW5lVG8oeCwgMCk7XG4gICAgY29udGV4dC5saW5lVG8oMCwgeSk7XG4gICAgY29udGV4dC5saW5lVG8oLXgsIDApO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/diamond.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/diamond2.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/diamond2.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size) * 0.62625;\n context.moveTo(0, -r);\n context.lineTo(r, 0);\n context.lineTo(0, r);\n context.lineTo(-r, 0);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvZGlhbW9uZDIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9kaWFtb25kMi5qcz9iYTE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCByID0gc3FydChzaXplKSAqIDAuNjI2MjU7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIDApO1xuICAgIGNvbnRleHQubGluZVRvKDAsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAwKTtcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/diamond2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/plus.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/plus.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(size / 7, 2)) * 0.87559;\n context.moveTo(-r, 0);\n context.lineTo(r, 0);\n context.moveTo(0, r);\n context.lineTo(0, -r);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvcGx1cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckMsaUVBQWU7QUFDZjtBQUNBLGNBQWMsOENBQUksUUFBUSw2Q0FBRztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3BsdXMuanM/NGNkOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21pbiwgc3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCByID0gc3FydChzaXplIC0gbWluKHNpemUgLyA3LCAyKSkgKiAwLjg3NTU5O1xuICAgIGNvbnRleHQubW92ZVRvKC1yLCAwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhyLCAwKTtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCByKTtcbiAgICBjb250ZXh0LmxpbmVUbygwLCAtcik7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/plus.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/square.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/square.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const w = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3F1YXJlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdDOztBQUVoQyxpRUFBZTtBQUNmO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3F1YXJlLmpzPzdlYjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXcoY29udGV4dCwgc2l6ZSkge1xuICAgIGNvbnN0IHcgPSBzcXJ0KHNpemUpO1xuICAgIGNvbnN0IHggPSAtdyAvIDI7XG4gICAgY29udGV4dC5yZWN0KHgsIHgsIHcsIHcpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/square.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/square2.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/square2.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size) * 0.4431;\n context.moveTo(r, r);\n context.lineTo(r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, r);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3F1YXJlMi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnQzs7QUFFaEMsaUVBQWU7QUFDZjtBQUNBLGNBQWMsOENBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3NxdWFyZTIuanM/ZTE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdyhjb250ZXh0LCBzaXplKSB7XG4gICAgY29uc3QgciA9IHNxcnQoc2l6ZSkgKiAwLjQ0MzE7XG4gICAgY29udGV4dC5tb3ZlVG8ociwgcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKC1yLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8oLXIsIHIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/square2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/star.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/star.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst ka = 0.89081309152928522810;\nconst kr = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(_math_js__WEBPACK_IMPORTED_MODULE_0__.pi / 10) / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(7 * _math_js__WEBPACK_IMPORTED_MODULE_0__.pi / 10);\nconst kx = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(_math_js__WEBPACK_IMPORTED_MODULE_0__.tau / 10) * kr;\nconst ky = -(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(_math_js__WEBPACK_IMPORTED_MODULE_0__.tau / 10) * kr;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = _math_js__WEBPACK_IMPORTED_MODULE_0__.tau * i / 5;\n const c = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.cos)(a);\n const s = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sin)(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvc3Rhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFtRDs7QUFFbkQ7QUFDQSxXQUFXLDZDQUFHLENBQUMsd0NBQUUsU0FBUyw2Q0FBRyxLQUFLLHdDQUFFO0FBQ3BDLFdBQVcsNkNBQUcsQ0FBQyx5Q0FBRztBQUNsQixZQUFZLDZDQUFHLENBQUMseUNBQUc7O0FBRW5CLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE9BQU87QUFDM0IsZ0JBQWdCLHlDQUFHO0FBQ25CLGdCQUFnQiw2Q0FBRztBQUNuQixnQkFBZ0IsNkNBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC9zdGFyLmpzPzliZmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaW4sIGNvcywgc3FydCwgcGksIHRhdX0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuY29uc3Qga2EgPSAwLjg5MDgxMzA5MTUyOTI4NTIyODEwO1xuY29uc3Qga3IgPSBzaW4ocGkgLyAxMCkgLyBzaW4oNyAqIHBpIC8gMTApO1xuY29uc3Qga3ggPSBzaW4odGF1IC8gMTApICoga3I7XG5jb25zdCBreSA9IC1jb3ModGF1IC8gMTApICoga3I7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZHJhdyhjb250ZXh0LCBzaXplKSB7XG4gICAgY29uc3QgciA9IHNxcnQoc2l6ZSAqIGthKTtcbiAgICBjb25zdCB4ID0ga3ggKiByO1xuICAgIGNvbnN0IHkgPSBreSAqIHI7XG4gICAgY29udGV4dC5tb3ZlVG8oMCwgLXIpO1xuICAgIGNvbnRleHQubGluZVRvKHgsIHkpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNTsgKytpKSB7XG4gICAgICBjb25zdCBhID0gdGF1ICogaSAvIDU7XG4gICAgICBjb25zdCBjID0gY29zKGEpO1xuICAgICAgY29uc3QgcyA9IHNpbihhKTtcbiAgICAgIGNvbnRleHQubGluZVRvKHMgKiByLCAtYyAqIHIpO1xuICAgICAgY29udGV4dC5saW5lVG8oYyAqIHggLSBzICogeSwgcyAqIHggKyBjICogeSk7XG4gICAgfVxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/star.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/times.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/times.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size - (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(size / 6, 1.7)) * 0.6189;\n context.moveTo(-r, -r);\n context.lineTo(r, r);\n context.moveTo(-r, r);\n context.lineTo(r, -r);\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdGltZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJLFFBQVEsNkNBQUc7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL3N5bWJvbC90aW1lcy5qcz8wMjA3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWluLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXcoY29udGV4dCwgc2l6ZSkge1xuICAgIGNvbnN0IHIgPSBzcXJ0KHNpemUgLSBtaW4oc2l6ZSAvIDYsIDEuNykpICogMC42MTg5O1xuICAgIGNvbnRleHQubW92ZVRvKC1yLCAtcik7XG4gICAgY29udGV4dC5saW5lVG8ociwgcik7XG4gICAgY29udGV4dC5tb3ZlVG8oLXIsIHIpO1xuICAgIGNvbnRleHQubGluZVRvKHIsIC1yKTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/times.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/triangle.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/triangle.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst sqrt3 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(3);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const y = -(0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdHJpYW5nbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDLGNBQWMsOENBQUk7O0FBRWxCLGlFQUFlO0FBQ2Y7QUFDQSxlQUFlLDhDQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdHJpYW5nbGUuanM/N2EyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NxcnR9IGZyb20gXCIuLi9tYXRoLmpzXCI7XG5cbmNvbnN0IHNxcnQzID0gc3FydCgzKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBkcmF3KGNvbnRleHQsIHNpemUpIHtcbiAgICBjb25zdCB5ID0gLXNxcnQoc2l6ZSAvIChzcXJ0MyAqIDMpKTtcbiAgICBjb250ZXh0Lm1vdmVUbygwLCB5ICogMik7XG4gICAgY29udGV4dC5saW5lVG8oLXNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQubGluZVRvKHNxcnQzICogeSwgLXkpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/triangle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/triangle2.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/triangle2.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst sqrt3 = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(3);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const s = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size) * 0.6824;\n const t = s / 2;\n const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n context.moveTo(0, -s);\n context.lineTo(u, t);\n context.lineTo(-u, t);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvdHJpYW5nbGUyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdDOztBQUVoQyxjQUFjLDhDQUFJOztBQUVsQixpRUFBZTtBQUNmO0FBQ0EsY0FBYyw4Q0FBSTtBQUNsQjtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvc3ltYm9sL3RyaWFuZ2xlMi5qcz9iYTViIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGguanNcIjtcblxuY29uc3Qgc3FydDMgPSBzcXJ0KDMpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXcoY29udGV4dCwgc2l6ZSkge1xuICAgIGNvbnN0IHMgPSBzcXJ0KHNpemUpICogMC42ODI0O1xuICAgIGNvbnN0IHQgPSBzICAvIDI7XG4gICAgY29uc3QgdSA9IChzICogc3FydDMpIC8gMjsgLy8gY29zKE1hdGguUEkgLyA2KVxuICAgIGNvbnRleHQubW92ZVRvKDAsIC1zKTtcbiAgICBjb250ZXh0LmxpbmVUbyh1LCB0KTtcbiAgICBjb250ZXh0LmxpbmVUbygtdSwgdCk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/triangle2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-shape/src/symbol/wye.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-shape/src/symbol/wye.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math.js */ \"../../../node_modules/d3-shape/src/math.js\");\n\n\nconst c = -0.5;\nconst s = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(3) / 2;\nconst k = 1 / (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(12);\nconst a = (k / 2 + 1) * 3;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n draw(context, size) {\n const r = (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.sqrt)(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvd3llLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdDOztBQUVoQztBQUNBLFVBQVUsOENBQUk7QUFDZCxjQUFjLDhDQUFJO0FBQ2xCOztBQUVBLGlFQUFlO0FBQ2Y7QUFDQSxjQUFjLDhDQUFJO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9zeW1ib2wvd3llLmpzP2U4ZDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzcXJ0fSBmcm9tIFwiLi4vbWF0aC5qc1wiO1xuXG5jb25zdCBjID0gLTAuNTtcbmNvbnN0IHMgPSBzcXJ0KDMpIC8gMjtcbmNvbnN0IGsgPSAxIC8gc3FydCgxMik7XG5jb25zdCBhID0gKGsgLyAyICsgMSkgKiAzO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGRyYXcoY29udGV4dCwgc2l6ZSkge1xuICAgIGNvbnN0IHIgPSBzcXJ0KHNpemUgLyBhKTtcbiAgICBjb25zdCB4MCA9IHIgLyAyLCB5MCA9IHIgKiBrO1xuICAgIGNvbnN0IHgxID0geDAsIHkxID0gciAqIGsgKyByO1xuICAgIGNvbnN0IHgyID0gLXgxLCB5MiA9IHkxO1xuICAgIGNvbnRleHQubW92ZVRvKHgwLCB5MCk7XG4gICAgY29udGV4dC5saW5lVG8oeDEsIHkxKTtcbiAgICBjb250ZXh0LmxpbmVUbyh4MiwgeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCAtIHMgKiB5MCwgcyAqIHgwICsgYyAqIHkwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgLSBzICogeTEsIHMgKiB4MSArIGMgKiB5MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyIC0gcyAqIHkyLCBzICogeDIgKyBjICogeTIpO1xuICAgIGNvbnRleHQubGluZVRvKGMgKiB4MCArIHMgKiB5MCwgYyAqIHkwIC0gcyAqIHgwKTtcbiAgICBjb250ZXh0LmxpbmVUbyhjICogeDEgKyBzICogeTEsIGMgKiB5MSAtIHMgKiB4MSk7XG4gICAgY29udGV4dC5saW5lVG8oYyAqIHgyICsgcyAqIHkyLCBjICogeTIgLSBzICogeDIpO1xuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-shape/src/symbol/wye.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time-format/src/defaultLocale.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-time-format/src/defaultLocale.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ defaultLocale),\n/* harmony export */ \"timeFormat\": () => (/* binding */ timeFormat),\n/* harmony export */ \"timeParse\": () => (/* binding */ timeParse),\n/* harmony export */ \"utcFormat\": () => (/* binding */ utcFormat),\n/* harmony export */ \"utcParse\": () => (/* binding */ utcParse)\n/* harmony export */ });\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locale.js */ \"../../../node_modules/d3-time-format/src/locale.js\");\n\n\nvar locale;\nvar timeFormat;\nvar timeParse;\nvar utcFormat;\nvar utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n locale = (0,_locale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUF1Qzs7QUFFdkM7QUFDTztBQUNBO0FBQ0E7QUFDQTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVjO0FBQ2YsV0FBVyxzREFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9kZWZhdWx0TG9jYWxlLmpzPzhlZjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZvcm1hdExvY2FsZSBmcm9tIFwiLi9sb2NhbGUuanNcIjtcblxudmFyIGxvY2FsZTtcbmV4cG9ydCB2YXIgdGltZUZvcm1hdDtcbmV4cG9ydCB2YXIgdGltZVBhcnNlO1xuZXhwb3J0IHZhciB1dGNGb3JtYXQ7XG5leHBvcnQgdmFyIHV0Y1BhcnNlO1xuXG5kZWZhdWx0TG9jYWxlKHtcbiAgZGF0ZVRpbWU6IFwiJXgsICVYXCIsXG4gIGRhdGU6IFwiJS1tLyUtZC8lWVwiLFxuICB0aW1lOiBcIiUtSTolTTolUyAlcFwiLFxuICBwZXJpb2RzOiBbXCJBTVwiLCBcIlBNXCJdLFxuICBkYXlzOiBbXCJTdW5kYXlcIiwgXCJNb25kYXlcIiwgXCJUdWVzZGF5XCIsIFwiV2VkbmVzZGF5XCIsIFwiVGh1cnNkYXlcIiwgXCJGcmlkYXlcIiwgXCJTYXR1cmRheVwiXSxcbiAgc2hvcnREYXlzOiBbXCJTdW5cIiwgXCJNb25cIiwgXCJUdWVcIiwgXCJXZWRcIiwgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIl0sXG4gIG1vbnRoczogW1wiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIiwgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIl0sXG4gIHNob3J0TW9udGhzOiBbXCJKYW5cIiwgXCJGZWJcIiwgXCJNYXJcIiwgXCJBcHJcIiwgXCJNYXlcIiwgXCJKdW5cIiwgXCJKdWxcIiwgXCJBdWdcIiwgXCJTZXBcIiwgXCJPY3RcIiwgXCJOb3ZcIiwgXCJEZWNcIl1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZhdWx0TG9jYWxlKGRlZmluaXRpb24pIHtcbiAgbG9jYWxlID0gZm9ybWF0TG9jYWxlKGRlZmluaXRpb24pO1xuICB0aW1lRm9ybWF0ID0gbG9jYWxlLmZvcm1hdDtcbiAgdGltZVBhcnNlID0gbG9jYWxlLnBhcnNlO1xuICB1dGNGb3JtYXQgPSBsb2NhbGUudXRjRm9ybWF0O1xuICB1dGNQYXJzZSA9IGxvY2FsZS51dGNQYXJzZTtcbiAgcmV0dXJuIGxvY2FsZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time-format/src/defaultLocale.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time-format/src/index.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-time-format/src/index.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isoFormat\": () => (/* reexport safe */ _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"isoParse\": () => (/* reexport safe */ _isoParse_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"timeFormat\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.timeFormat),\n/* harmony export */ \"timeFormatDefaultLocale\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"timeFormatLocale\": () => (/* reexport safe */ _locale_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"timeParse\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.timeParse),\n/* harmony export */ \"utcFormat\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.utcFormat),\n/* harmony export */ \"utcParse\": () => (/* reexport safe */ _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.utcParse)\n/* harmony export */ });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"../../../node_modules/d3-time-format/src/defaultLocale.js\");\n/* harmony import */ var _locale_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locale.js */ \"../../../node_modules/d3-time-format/src/locale.js\");\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isoFormat.js */ \"../../../node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _isoParse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isoParse.js */ \"../../../node_modules/d3-time-format/src/isoParse.js\");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBa0g7QUFDMUQ7QUFDSjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaW5kZXguanM/YWIwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgdGltZUZvcm1hdERlZmF1bHRMb2NhbGUsIHRpbWVGb3JtYXQsIHRpbWVQYXJzZSwgdXRjRm9ybWF0LCB1dGNQYXJzZX0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRpbWVGb3JtYXRMb2NhbGV9IGZyb20gXCIuL2xvY2FsZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGlzb0Zvcm1hdH0gZnJvbSBcIi4vaXNvRm9ybWF0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaXNvUGFyc2V9IGZyb20gXCIuL2lzb1BhcnNlLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time-format/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time-format/src/isoFormat.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/d3-time-format/src/isoFormat.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"isoSpecifier\": () => (/* binding */ isoSpecifier)\n/* harmony export */ });\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"../../../node_modules/d3-time-format/src/defaultLocale.js\");\n\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : (0,_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.utcFormat)(isoSpecifier);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (formatIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29Gb3JtYXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZDOztBQUV0Qzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sNERBQVM7O0FBRWYsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvRm9ybWF0LmpzPzQxYTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1dGNGb3JtYXR9IGZyb20gXCIuL2RlZmF1bHRMb2NhbGUuanNcIjtcblxuZXhwb3J0IHZhciBpc29TcGVjaWZpZXIgPSBcIiVZLSVtLSVkVCVIOiVNOiVTLiVMWlwiO1xuXG5mdW5jdGlvbiBmb3JtYXRJc29OYXRpdmUoZGF0ZSkge1xuICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpO1xufVxuXG52YXIgZm9ybWF0SXNvID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmdcbiAgICA/IGZvcm1hdElzb05hdGl2ZVxuICAgIDogdXRjRm9ybWF0KGlzb1NwZWNpZmllcik7XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdElzbztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time-format/src/isoFormat.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time-format/src/isoParse.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-time-format/src/isoParse.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isoFormat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isoFormat.js */ \"../../../node_modules/d3-time-format/src/isoFormat.js\");\n/* harmony import */ var _defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defaultLocale.js */ \"../../../node_modules/d3-time-format/src/defaultLocale.js\");\n\n\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : (0,_defaultLocale_js__WEBPACK_IMPORTED_MODULE_0__.utcParse)(_isoFormat_js__WEBPACK_IMPORTED_MODULE_1__.isoSpecifier);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (parseIso);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEM7QUFDQTs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sMkRBQVEsQ0FBQyx1REFBWTs7QUFFM0IsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvUGFyc2UuanM/ZTIyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzb1NwZWNpZmllcn0gZnJvbSBcIi4vaXNvRm9ybWF0LmpzXCI7XG5pbXBvcnQge3V0Y1BhcnNlfSBmcm9tIFwiLi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5cbmZ1bmN0aW9uIHBhcnNlSXNvTmF0aXZlKHN0cmluZykge1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHN0cmluZyk7XG4gIHJldHVybiBpc05hTihkYXRlKSA/IG51bGwgOiBkYXRlO1xufVxuXG52YXIgcGFyc2VJc28gPSArbmV3IERhdGUoXCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFpcIilcbiAgICA/IHBhcnNlSXNvTmF0aXZlXG4gICAgOiB1dGNQYXJzZShpc29TcGVjaWZpZXIpO1xuXG5leHBvcnQgZGVmYXVsdCBwYXJzZUlzbztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time-format/src/isoParse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time-format/src/locale.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/d3-time-format/src/locale.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ formatLocale)\n/* harmony export */ });\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/week.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/day.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/year.js\");\n\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__.utcMonday.ceil(week) : (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.utcMonday)(week);\n week = d3_time__WEBPACK_IMPORTED_MODULE_1__.utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? d3_time__WEBPACK_IMPORTED_MODULE_0__.timeMonday.ceil(week) : (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.timeMonday)(week);\n week = d3_time__WEBPACK_IMPORTED_MODULE_1__.timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_1__.timeDay.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.timeYear)(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.timeSunday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.timeYear)(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.timeThursday)(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__.timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.timeThursday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.timeYear)(d), d) + ((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.timeYear)(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.timeMonday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.timeYear)(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.timeThursday)(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__.timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + d3_time__WEBPACK_IMPORTED_MODULE_1__.utcDay.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.utcYear)(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.utcSunday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.utcYear)(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.utcThursday)(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__.utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.utcThursday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.utcYear)(d), d) + ((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.utcYear)(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(d3_time__WEBPACK_IMPORTED_MODULE_0__.utcMonday.count((0,d3_time__WEBPACK_IMPORTED_MODULE_2__.utcYear)(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? (0,d3_time__WEBPACK_IMPORTED_MODULE_0__.utcThursday)(d) : d3_time__WEBPACK_IMPORTED_MODULE_0__.utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9sb2NhbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVdpQjs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWOztBQUVlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsbURBQWMsU0FBUyxrREFBUztBQUN4RSxpQkFBaUIsa0RBQWE7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0Esd0NBQXdDLG9EQUFlLFNBQVMsbURBQVU7QUFDMUUsaUJBQWlCLG1EQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDRCQUE0QjtBQUN4QztBQUNBO0FBQ0Esa0NBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsa0RBQWEsQ0FBQyxpREFBUTtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxxREFBZ0IsQ0FBQyxpREFBUTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0EsbUNBQW1DLHFEQUFZLE1BQU0sc0RBQWlCO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQSxhQUFhLHVEQUFrQixDQUFDLGlEQUFRLFdBQVcsaURBQVE7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxxREFBZ0IsQ0FBQyxpREFBUTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQ0FBZ0MscURBQVksTUFBTSxzREFBaUI7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsaURBQVksQ0FBQyxnREFBTztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxvREFBZSxDQUFDLGdEQUFPO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQSxtQ0FBbUMsb0RBQVcsTUFBTSxxREFBZ0I7QUFDcEU7O0FBRUE7QUFDQTtBQUNBLGFBQWEsc0RBQWlCLENBQUMsZ0RBQU8sV0FBVyxnREFBTztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLG9EQUFlLENBQUMsZ0RBQU87QUFDcEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0NBQWdDLG9EQUFXLE1BQU0scURBQWdCO0FBQ2pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvbG9jYWxlLmpzP2NjNTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdGltZURheSxcbiAgdGltZVN1bmRheSxcbiAgdGltZU1vbmRheSxcbiAgdGltZVRodXJzZGF5LFxuICB0aW1lWWVhcixcbiAgdXRjRGF5LFxuICB1dGNTdW5kYXksXG4gIHV0Y01vbmRheSxcbiAgdXRjVGh1cnNkYXksXG4gIHV0Y1llYXJcbn0gZnJvbSBcImQzLXRpbWVcIjtcblxuZnVuY3Rpb24gbG9jYWxEYXRlKGQpIHtcbiAgaWYgKDAgPD0gZC55ICYmIGQueSA8IDEwMCkge1xuICAgIHZhciBkYXRlID0gbmV3IERhdGUoLTEsIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpO1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZC55KTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuICByZXR1cm4gbmV3IERhdGUoZC55LCBkLm0sIGQuZCwgZC5ILCBkLk0sIGQuUywgZC5MKTtcbn1cblxuZnVuY3Rpb24gdXRjRGF0ZShkKSB7XG4gIGlmICgwIDw9IGQueSAmJiBkLnkgPCAxMDApIHtcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKC0xLCBkLm0sIGQuZCwgZC5ILCBkLk0sIGQuUywgZC5MKSk7XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcihkLnkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhkLnksIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpKTtcbn1cblxuZnVuY3Rpb24gbmV3RGF0ZSh5LCBtLCBkKSB7XG4gIHJldHVybiB7eTogeSwgbTogbSwgZDogZCwgSDogMCwgTTogMCwgUzogMCwgTDogMH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdExvY2FsZShsb2NhbGUpIHtcbiAgdmFyIGxvY2FsZV9kYXRlVGltZSA9IGxvY2FsZS5kYXRlVGltZSxcbiAgICAgIGxvY2FsZV9kYXRlID0gbG9jYWxlLmRhdGUsXG4gICAgICBsb2NhbGVfdGltZSA9IGxvY2FsZS50aW1lLFxuICAgICAgbG9jYWxlX3BlcmlvZHMgPSBsb2NhbGUucGVyaW9kcyxcbiAgICAgIGxvY2FsZV93ZWVrZGF5cyA9IGxvY2FsZS5kYXlzLFxuICAgICAgbG9jYWxlX3Nob3J0V2Vla2RheXMgPSBsb2NhbGUuc2hvcnREYXlzLFxuICAgICAgbG9jYWxlX21vbnRocyA9IGxvY2FsZS5tb250aHMsXG4gICAgICBsb2NhbGVfc2hvcnRNb250aHMgPSBsb2NhbGUuc2hvcnRNb250aHM7XG5cbiAgdmFyIHBlcmlvZFJlID0gZm9ybWF0UmUobG9jYWxlX3BlcmlvZHMpLFxuICAgICAgcGVyaW9kTG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9wZXJpb2RzKSxcbiAgICAgIHdlZWtkYXlSZSA9IGZvcm1hdFJlKGxvY2FsZV93ZWVrZGF5cyksXG4gICAgICB3ZWVrZGF5TG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV93ZWVrZGF5cyksXG4gICAgICBzaG9ydFdlZWtkYXlSZSA9IGZvcm1hdFJlKGxvY2FsZV9zaG9ydFdlZWtkYXlzKSxcbiAgICAgIHNob3J0V2Vla2RheUxvb2t1cCA9IGZvcm1hdExvb2t1cChsb2NhbGVfc2hvcnRXZWVrZGF5cyksXG4gICAgICBtb250aFJlID0gZm9ybWF0UmUobG9jYWxlX21vbnRocyksXG4gICAgICBtb250aExvb2t1cCA9IGZvcm1hdExvb2t1cChsb2NhbGVfbW9udGhzKSxcbiAgICAgIHNob3J0TW9udGhSZSA9IGZvcm1hdFJlKGxvY2FsZV9zaG9ydE1vbnRocyksXG4gICAgICBzaG9ydE1vbnRoTG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9zaG9ydE1vbnRocyk7XG5cbiAgdmFyIGZvcm1hdHMgPSB7XG4gICAgXCJhXCI6IGZvcm1hdFNob3J0V2Vla2RheSxcbiAgICBcIkFcIjogZm9ybWF0V2Vla2RheSxcbiAgICBcImJcIjogZm9ybWF0U2hvcnRNb250aCxcbiAgICBcIkJcIjogZm9ybWF0TW9udGgsXG4gICAgXCJjXCI6IG51bGwsXG4gICAgXCJkXCI6IGZvcm1hdERheU9mTW9udGgsXG4gICAgXCJlXCI6IGZvcm1hdERheU9mTW9udGgsXG4gICAgXCJmXCI6IGZvcm1hdE1pY3Jvc2Vjb25kcyxcbiAgICBcImdcIjogZm9ybWF0WWVhcklTTyxcbiAgICBcIkdcIjogZm9ybWF0RnVsbFllYXJJU08sXG4gICAgXCJIXCI6IGZvcm1hdEhvdXIyNCxcbiAgICBcIklcIjogZm9ybWF0SG91cjEyLFxuICAgIFwialwiOiBmb3JtYXREYXlPZlllYXIsXG4gICAgXCJMXCI6IGZvcm1hdE1pbGxpc2Vjb25kcyxcbiAgICBcIm1cIjogZm9ybWF0TW9udGhOdW1iZXIsXG4gICAgXCJNXCI6IGZvcm1hdE1pbnV0ZXMsXG4gICAgXCJwXCI6IGZvcm1hdFBlcmlvZCxcbiAgICBcInFcIjogZm9ybWF0UXVhcnRlcixcbiAgICBcIlFcIjogZm9ybWF0VW5peFRpbWVzdGFtcCxcbiAgICBcInNcIjogZm9ybWF0VW5peFRpbWVzdGFtcFNlY29uZHMsXG4gICAgXCJTXCI6IGZvcm1hdFNlY29uZHMsXG4gICAgXCJ1XCI6IGZvcm1hdFdlZWtkYXlOdW1iZXJNb25kYXksXG4gICAgXCJVXCI6IGZvcm1hdFdlZWtOdW1iZXJTdW5kYXksXG4gICAgXCJWXCI6IGZvcm1hdFdlZWtOdW1iZXJJU08sXG4gICAgXCJ3XCI6IGZvcm1hdFdlZWtkYXlOdW1iZXJTdW5kYXksXG4gICAgXCJXXCI6IGZvcm1hdFdlZWtOdW1iZXJNb25kYXksXG4gICAgXCJ4XCI6IG51bGwsXG4gICAgXCJYXCI6IG51bGwsXG4gICAgXCJ5XCI6IGZvcm1hdFllYXIsXG4gICAgXCJZXCI6IGZvcm1hdEZ1bGxZZWFyLFxuICAgIFwiWlwiOiBmb3JtYXRab25lLFxuICAgIFwiJVwiOiBmb3JtYXRMaXRlcmFsUGVyY2VudFxuICB9O1xuXG4gIHZhciB1dGNGb3JtYXRzID0ge1xuICAgIFwiYVwiOiBmb3JtYXRVVENTaG9ydFdlZWtkYXksXG4gICAgXCJBXCI6IGZvcm1hdFVUQ1dlZWtkYXksXG4gICAgXCJiXCI6IGZvcm1hdFVUQ1Nob3J0TW9udGgsXG4gICAgXCJCXCI6IGZvcm1hdFVUQ01vbnRoLFxuICAgIFwiY1wiOiBudWxsLFxuICAgIFwiZFwiOiBmb3JtYXRVVENEYXlPZk1vbnRoLFxuICAgIFwiZVwiOiBmb3JtYXRVVENEYXlPZk1vbnRoLFxuICAgIFwiZlwiOiBmb3JtYXRVVENNaWNyb3NlY29uZHMsXG4gICAgXCJnXCI6IGZvcm1hdFVUQ1llYXJJU08sXG4gICAgXCJHXCI6IGZvcm1hdFVUQ0Z1bGxZZWFySVNPLFxuICAgIFwiSFwiOiBmb3JtYXRVVENIb3VyMjQsXG4gICAgXCJJXCI6IGZvcm1hdFVUQ0hvdXIxMixcbiAgICBcImpcIjogZm9ybWF0VVRDRGF5T2ZZZWFyLFxuICAgIFwiTFwiOiBmb3JtYXRVVENNaWxsaXNlY29uZHMsXG4gICAgXCJtXCI6IGZvcm1hdFVUQ01vbnRoTnVtYmVyLFxuICAgIFwiTVwiOiBmb3JtYXRVVENNaW51dGVzLFxuICAgIFwicFwiOiBmb3JtYXRVVENQZXJpb2QsXG4gICAgXCJxXCI6IGZvcm1hdFVUQ1F1YXJ0ZXIsXG4gICAgXCJRXCI6IGZvcm1hdFVuaXhUaW1lc3RhbXAsXG4gICAgXCJzXCI6IGZvcm1hdFVuaXhUaW1lc3RhbXBTZWNvbmRzLFxuICAgIFwiU1wiOiBmb3JtYXRVVENTZWNvbmRzLFxuICAgIFwidVwiOiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyTW9uZGF5LFxuICAgIFwiVVwiOiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5LFxuICAgIFwiVlwiOiBmb3JtYXRVVENXZWVrTnVtYmVySVNPLFxuICAgIFwid1wiOiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyU3VuZGF5LFxuICAgIFwiV1wiOiBmb3JtYXRVVENXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBudWxsLFxuICAgIFwiWFwiOiBudWxsLFxuICAgIFwieVwiOiBmb3JtYXRVVENZZWFyLFxuICAgIFwiWVwiOiBmb3JtYXRVVENGdWxsWWVhcixcbiAgICBcIlpcIjogZm9ybWF0VVRDWm9uZSxcbiAgICBcIiVcIjogZm9ybWF0TGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICB2YXIgcGFyc2VzID0ge1xuICAgIFwiYVwiOiBwYXJzZVNob3J0V2Vla2RheSxcbiAgICBcIkFcIjogcGFyc2VXZWVrZGF5LFxuICAgIFwiYlwiOiBwYXJzZVNob3J0TW9udGgsXG4gICAgXCJCXCI6IHBhcnNlTW9udGgsXG4gICAgXCJjXCI6IHBhcnNlTG9jYWxlRGF0ZVRpbWUsXG4gICAgXCJkXCI6IHBhcnNlRGF5T2ZNb250aCxcbiAgICBcImVcIjogcGFyc2VEYXlPZk1vbnRoLFxuICAgIFwiZlwiOiBwYXJzZU1pY3Jvc2Vjb25kcyxcbiAgICBcImdcIjogcGFyc2VZZWFyLFxuICAgIFwiR1wiOiBwYXJzZUZ1bGxZZWFyLFxuICAgIFwiSFwiOiBwYXJzZUhvdXIyNCxcbiAgICBcIklcIjogcGFyc2VIb3VyMjQsXG4gICAgXCJqXCI6IHBhcnNlRGF5T2ZZZWFyLFxuICAgIFwiTFwiOiBwYXJzZU1pbGxpc2Vjb25kcyxcbiAgICBcIm1cIjogcGFyc2VNb250aE51bWJlcixcbiAgICBcIk1cIjogcGFyc2VNaW51dGVzLFxuICAgIFwicFwiOiBwYXJzZVBlcmlvZCxcbiAgICBcInFcIjogcGFyc2VRdWFydGVyLFxuICAgIFwiUVwiOiBwYXJzZVVuaXhUaW1lc3RhbXAsXG4gICAgXCJzXCI6IHBhcnNlVW5peFRpbWVzdGFtcFNlY29uZHMsXG4gICAgXCJTXCI6IHBhcnNlU2Vjb25kcyxcbiAgICBcInVcIjogcGFyc2VXZWVrZGF5TnVtYmVyTW9uZGF5LFxuICAgIFwiVVwiOiBwYXJzZVdlZWtOdW1iZXJTdW5kYXksXG4gICAgXCJWXCI6IHBhcnNlV2Vla051bWJlcklTTyxcbiAgICBcIndcIjogcGFyc2VXZWVrZGF5TnVtYmVyU3VuZGF5LFxuICAgIFwiV1wiOiBwYXJzZVdlZWtOdW1iZXJNb25kYXksXG4gICAgXCJ4XCI6IHBhcnNlTG9jYWxlRGF0ZSxcbiAgICBcIlhcIjogcGFyc2VMb2NhbGVUaW1lLFxuICAgIFwieVwiOiBwYXJzZVllYXIsXG4gICAgXCJZXCI6IHBhcnNlRnVsbFllYXIsXG4gICAgXCJaXCI6IHBhcnNlWm9uZSxcbiAgICBcIiVcIjogcGFyc2VMaXRlcmFsUGVyY2VudFxuICB9O1xuXG4gIC8vIFRoZXNlIHJlY3Vyc2l2ZSBkaXJlY3RpdmUgZGVmaW5pdGlvbnMgbXVzdCBiZSBkZWZlcnJlZC5cbiAgZm9ybWF0cy54ID0gbmV3Rm9ybWF0KGxvY2FsZV9kYXRlLCBmb3JtYXRzKTtcbiAgZm9ybWF0cy5YID0gbmV3Rm9ybWF0KGxvY2FsZV90aW1lLCBmb3JtYXRzKTtcbiAgZm9ybWF0cy5jID0gbmV3Rm9ybWF0KGxvY2FsZV9kYXRlVGltZSwgZm9ybWF0cyk7XG4gIHV0Y0Zvcm1hdHMueCA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZSwgdXRjRm9ybWF0cyk7XG4gIHV0Y0Zvcm1hdHMuWCA9IG5ld0Zvcm1hdChsb2NhbGVfdGltZSwgdXRjRm9ybWF0cyk7XG4gIHV0Y0Zvcm1hdHMuYyA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZVRpbWUsIHV0Y0Zvcm1hdHMpO1xuXG4gIGZ1bmN0aW9uIG5ld0Zvcm1hdChzcGVjaWZpZXIsIGZvcm1hdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZGF0ZSkge1xuICAgICAgdmFyIHN0cmluZyA9IFtdLFxuICAgICAgICAgIGkgPSAtMSxcbiAgICAgICAgICBqID0gMCxcbiAgICAgICAgICBuID0gc3BlY2lmaWVyLmxlbmd0aCxcbiAgICAgICAgICBjLFxuICAgICAgICAgIHBhZCxcbiAgICAgICAgICBmb3JtYXQ7XG5cbiAgICAgIGlmICghKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSkgZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKTtcblxuICAgICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgICAgaWYgKHNwZWNpZmllci5jaGFyQ29kZUF0KGkpID09PSAzNykge1xuICAgICAgICAgIHN0cmluZy5wdXNoKHNwZWNpZmllci5zbGljZShqLCBpKSk7XG4gICAgICAgICAgaWYgKChwYWQgPSBwYWRzW2MgPSBzcGVjaWZpZXIuY2hhckF0KCsraSldKSAhPSBudWxsKSBjID0gc3BlY2lmaWVyLmNoYXJBdCgrK2kpO1xuICAgICAgICAgIGVsc2UgcGFkID0gYyA9PT0gXCJlXCIgPyBcIiBcIiA6IFwiMFwiO1xuICAgICAgICAgIGlmIChmb3JtYXQgPSBmb3JtYXRzW2NdKSBjID0gZm9ybWF0KGRhdGUsIHBhZCk7XG4gICAgICAgICAgc3RyaW5nLnB1c2goYyk7XG4gICAgICAgICAgaiA9IGkgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0cmluZy5wdXNoKHNwZWNpZmllci5zbGljZShqLCBpKSk7XG4gICAgICByZXR1cm4gc3RyaW5nLmpvaW4oXCJcIik7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1BhcnNlKHNwZWNpZmllciwgWikge1xuICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciBkID0gbmV3RGF0ZSgxOTAwLCB1bmRlZmluZWQsIDEpLFxuICAgICAgICAgIGkgPSBwYXJzZVNwZWNpZmllcihkLCBzcGVjaWZpZXIsIHN0cmluZyArPSBcIlwiLCAwKSxcbiAgICAgICAgICB3ZWVrLCBkYXk7XG4gICAgICBpZiAoaSAhPSBzdHJpbmcubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gSWYgYSBVTklYIHRpbWVzdGFtcCBpcyBzcGVjaWZpZWQsIHJldHVybiBpdC5cbiAgICAgIGlmIChcIlFcIiBpbiBkKSByZXR1cm4gbmV3IERhdGUoZC5RKTtcbiAgICAgIGlmIChcInNcIiBpbiBkKSByZXR1cm4gbmV3IERhdGUoZC5zICogMTAwMCArIChcIkxcIiBpbiBkID8gZC5MIDogMCkpO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIHV0Y1BhcnNlLCBuZXZlciB1c2UgdGhlIGxvY2FsIHRpbWV6b25lLlxuICAgICAgaWYgKFogJiYgIShcIlpcIiBpbiBkKSkgZC5aID0gMDtcblxuICAgICAgLy8gVGhlIGFtLXBtIGZsYWcgaXMgMCBmb3IgQU0sIGFuZCAxIGZvciBQTS5cbiAgICAgIGlmIChcInBcIiBpbiBkKSBkLkggPSBkLkggJSAxMiArIGQucCAqIDEyO1xuXG4gICAgICAvLyBJZiB0aGUgbW9udGggd2FzIG5vdCBzcGVjaWZpZWQsIGluaGVyaXQgZnJvbSB0aGUgcXVhcnRlci5cbiAgICAgIGlmIChkLm0gPT09IHVuZGVmaW5lZCkgZC5tID0gXCJxXCIgaW4gZCA/IGQucSA6IDA7XG5cbiAgICAgIC8vIENvbnZlcnQgZGF5LW9mLXdlZWsgYW5kIHdlZWstb2YteWVhciB0byBkYXktb2YteWVhci5cbiAgICAgIGlmIChcIlZcIiBpbiBkKSB7XG4gICAgICAgIGlmIChkLlYgPCAxIHx8IGQuViA+IDUzKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCEoXCJ3XCIgaW4gZCkpIGQudyA9IDE7XG4gICAgICAgIGlmIChcIlpcIiBpbiBkKSB7XG4gICAgICAgICAgd2VlayA9IHV0Y0RhdGUobmV3RGF0ZShkLnksIDAsIDEpKSwgZGF5ID0gd2Vlay5nZXRVVENEYXkoKTtcbiAgICAgICAgICB3ZWVrID0gZGF5ID4gNCB8fCBkYXkgPT09IDAgPyB1dGNNb25kYXkuY2VpbCh3ZWVrKSA6IHV0Y01vbmRheSh3ZWVrKTtcbiAgICAgICAgICB3ZWVrID0gdXRjRGF5Lm9mZnNldCh3ZWVrLCAoZC5WIC0gMSkgKiA3KTtcbiAgICAgICAgICBkLnkgPSB3ZWVrLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgICAgZC5tID0gd2Vlay5nZXRVVENNb250aCgpO1xuICAgICAgICAgIGQuZCA9IHdlZWsuZ2V0VVRDRGF0ZSgpICsgKGQudyArIDYpICUgNztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrID0gbG9jYWxEYXRlKG5ld0RhdGUoZC55LCAwLCAxKSksIGRheSA9IHdlZWsuZ2V0RGF5KCk7XG4gICAgICAgICAgd2VlayA9IGRheSA+IDQgfHwgZGF5ID09PSAwID8gdGltZU1vbmRheS5jZWlsKHdlZWspIDogdGltZU1vbmRheSh3ZWVrKTtcbiAgICAgICAgICB3ZWVrID0gdGltZURheS5vZmZzZXQod2VlaywgKGQuViAtIDEpICogNyk7XG4gICAgICAgICAgZC55ID0gd2Vlay5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgIGQubSA9IHdlZWsuZ2V0TW9udGgoKTtcbiAgICAgICAgICBkLmQgPSB3ZWVrLmdldERhdGUoKSArIChkLncgKyA2KSAlIDc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXCJXXCIgaW4gZCB8fCBcIlVcIiBpbiBkKSB7XG4gICAgICAgIGlmICghKFwid1wiIGluIGQpKSBkLncgPSBcInVcIiBpbiBkID8gZC51ICUgNyA6IFwiV1wiIGluIGQgPyAxIDogMDtcbiAgICAgICAgZGF5ID0gXCJaXCIgaW4gZCA/IHV0Y0RhdGUobmV3RGF0ZShkLnksIDAsIDEpKS5nZXRVVENEYXkoKSA6IGxvY2FsRGF0ZShuZXdEYXRlKGQueSwgMCwgMSkpLmdldERheSgpO1xuICAgICAgICBkLm0gPSAwO1xuICAgICAgICBkLmQgPSBcIldcIiBpbiBkID8gKGQudyArIDYpICUgNyArIGQuVyAqIDcgLSAoZGF5ICsgNSkgJSA3IDogZC53ICsgZC5VICogNyAtIChkYXkgKyA2KSAlIDc7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGEgdGltZSB6b25lIGlzIHNwZWNpZmllZCwgYWxsIGZpZWxkcyBhcmUgaW50ZXJwcmV0ZWQgYXMgVVRDIGFuZCB0aGVuXG4gICAgICAvLyBvZmZzZXQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgdGltZSB6b25lLlxuICAgICAgaWYgKFwiWlwiIGluIGQpIHtcbiAgICAgICAgZC5IICs9IGQuWiAvIDEwMCB8IDA7XG4gICAgICAgIGQuTSArPSBkLlogJSAxMDA7XG4gICAgICAgIHJldHVybiB1dGNEYXRlKGQpO1xuICAgICAgfVxuXG4gICAgICAvLyBPdGhlcndpc2UsIGFsbCBmaWVsZHMgYXJlIGluIGxvY2FsIHRpbWUuXG4gICAgICByZXR1cm4gbG9jYWxEYXRlKGQpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVNwZWNpZmllcihkLCBzcGVjaWZpZXIsIHN0cmluZywgaikge1xuICAgIHZhciBpID0gMCxcbiAgICAgICAgbiA9IHNwZWNpZmllci5sZW5ndGgsXG4gICAgICAgIG0gPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICBjLFxuICAgICAgICBwYXJzZTtcblxuICAgIHdoaWxlIChpIDwgbikge1xuICAgICAgaWYgKGogPj0gbSkgcmV0dXJuIC0xO1xuICAgICAgYyA9IHNwZWNpZmllci5jaGFyQ29kZUF0KGkrKyk7XG4gICAgICBpZiAoYyA9PT0gMzcpIHtcbiAgICAgICAgYyA9IHNwZWNpZmllci5jaGFyQXQoaSsrKTtcbiAgICAgICAgcGFyc2UgPSBwYXJzZXNbYyBpbiBwYWRzID8gc3BlY2lmaWVyLmNoYXJBdChpKyspIDogY107XG4gICAgICAgIGlmICghcGFyc2UgfHwgKChqID0gcGFyc2UoZCwgc3RyaW5nLCBqKSkgPCAwKSkgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIGlmIChjICE9IHN0cmluZy5jaGFyQ29kZUF0KGorKykpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBqO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VQZXJpb2QoZCwgc3RyaW5nLCBpKSB7XG4gICAgdmFyIG4gPSBwZXJpb2RSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC5wID0gcGVyaW9kTG9va3VwLmdldChuWzBdLnRvTG93ZXJDYXNlKCkpLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVNob3J0V2Vla2RheShkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHNob3J0V2Vla2RheVJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgICByZXR1cm4gbiA/IChkLncgPSBzaG9ydFdlZWtkYXlMb29rdXAuZ2V0KG5bMF0udG9Mb3dlckNhc2UoKSksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHdlZWtkYXlSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC53ID0gd2Vla2RheUxvb2t1cC5nZXQoblswXS50b0xvd2VyQ2FzZSgpKSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTaG9ydE1vbnRoKGQsIHN0cmluZywgaSkge1xuICAgIHZhciBuID0gc2hvcnRNb250aFJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgICByZXR1cm4gbiA/IChkLm0gPSBzaG9ydE1vbnRoTG9va3VwLmdldChuWzBdLnRvTG93ZXJDYXNlKCkpLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZU1vbnRoKGQsIHN0cmluZywgaSkge1xuICAgIHZhciBuID0gbW9udGhSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC5tID0gbW9udGhMb29rdXAuZ2V0KG5bMF0udG9Mb3dlckNhc2UoKSksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV9kYXRlVGltZSwgc3RyaW5nLCBpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZShkLCBzdHJpbmcsIGkpIHtcbiAgICByZXR1cm4gcGFyc2VTcGVjaWZpZXIoZCwgbG9jYWxlX2RhdGUsIHN0cmluZywgaSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUxvY2FsZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV90aW1lLCBzdHJpbmcsIGkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3Nob3J0V2Vla2RheXNbZC5nZXREYXkoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3dlZWtkYXlzW2QuZ2V0RGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRNb250aChkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydE1vbnRoc1tkLmdldE1vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0TW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfbW9udGhzW2QuZ2V0TW9udGgoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQZXJpb2QoZCkge1xuICAgIHJldHVybiBsb2NhbGVfcGVyaW9kc1srKGQuZ2V0SG91cnMoKSA+PSAxMildO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0UXVhcnRlcihkKSB7XG4gICAgcmV0dXJuIDEgKyB+fihkLmdldE1vbnRoKCkgLyAzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFVUQ1Nob3J0V2Vla2RheShkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydFdlZWtkYXlzW2QuZ2V0VVRDRGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDV2Vla2RheShkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV93ZWVrZGF5c1tkLmdldFVUQ0RheSgpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFVUQ1Nob3J0TW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfc2hvcnRNb250aHNbZC5nZXRVVENNb250aCgpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFVUQ01vbnRoKGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX21vbnRoc1tkLmdldFVUQ01vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDUGVyaW9kKGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3BlcmlvZHNbKyhkLmdldFVUQ0hvdXJzKCkgPj0gMTIpXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZvcm1hdFVUQ1F1YXJ0ZXIoZCkge1xuICAgIHJldHVybiAxICsgfn4oZC5nZXRVVENNb250aCgpIC8gMyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZvcm1hdDogZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gICAgICB2YXIgZiA9IG5ld0Zvcm1hdChzcGVjaWZpZXIgKz0gXCJcIiwgZm9ybWF0cyk7XG4gICAgICBmLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzcGVjaWZpZXI7IH07XG4gICAgICByZXR1cm4gZjtcbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbihzcGVjaWZpZXIpIHtcbiAgICAgIHZhciBwID0gbmV3UGFyc2Uoc3BlY2lmaWVyICs9IFwiXCIsIGZhbHNlKTtcbiAgICAgIHAudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHNwZWNpZmllcjsgfTtcbiAgICAgIHJldHVybiBwO1xuICAgIH0sXG4gICAgdXRjRm9ybWF0OiBmdW5jdGlvbihzcGVjaWZpZXIpIHtcbiAgICAgIHZhciBmID0gbmV3Rm9ybWF0KHNwZWNpZmllciArPSBcIlwiLCB1dGNGb3JtYXRzKTtcbiAgICAgIGYudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsgcmV0dXJuIHNwZWNpZmllcjsgfTtcbiAgICAgIHJldHVybiBmO1xuICAgIH0sXG4gICAgdXRjUGFyc2U6IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICAgICAgdmFyIHAgPSBuZXdQYXJzZShzcGVjaWZpZXIgKz0gXCJcIiwgdHJ1ZSk7XG4gICAgICBwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzcGVjaWZpZXI7IH07XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG59XG5cbnZhciBwYWRzID0ge1wiLVwiOiBcIlwiLCBcIl9cIjogXCIgXCIsIFwiMFwiOiBcIjBcIn0sXG4gICAgbnVtYmVyUmUgPSAvXlxccypcXGQrLywgLy8gbm90ZTogaWdub3JlcyBuZXh0IGRpcmVjdGl2ZVxuICAgIHBlcmNlbnRSZSA9IC9eJS8sXG4gICAgcmVxdW90ZVJlID0gL1tcXFxcXiQqKz98W1xcXSgpLnt9XS9nO1xuXG5mdW5jdGlvbiBwYWQodmFsdWUsIGZpbGwsIHdpZHRoKSB7XG4gIHZhciBzaWduID0gdmFsdWUgPCAwID8gXCItXCIgOiBcIlwiLFxuICAgICAgc3RyaW5nID0gKHNpZ24gPyAtdmFsdWUgOiB2YWx1ZSkgKyBcIlwiLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgcmV0dXJuIHNpZ24gKyAobGVuZ3RoIDwgd2lkdGggPyBuZXcgQXJyYXkod2lkdGggLSBsZW5ndGggKyAxKS5qb2luKGZpbGwpICsgc3RyaW5nIDogc3RyaW5nKTtcbn1cblxuZnVuY3Rpb24gcmVxdW90ZShzKSB7XG4gIHJldHVybiBzLnJlcGxhY2UocmVxdW90ZVJlLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmUobmFtZXMpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoXCJeKD86XCIgKyBuYW1lcy5tYXAocmVxdW90ZSkuam9pbihcInxcIikgKyBcIilcIiwgXCJpXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRMb29rdXAobmFtZXMpIHtcbiAgcmV0dXJuIG5ldyBNYXAobmFtZXMubWFwKChuYW1lLCBpKSA9PiBbbmFtZS50b0xvd2VyQ2FzZSgpLCBpXSkpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdlZWtkYXlOdW1iZXJTdW5kYXkoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDEpKTtcbiAgcmV0dXJuIG4gPyAoZC53ID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrZGF5TnVtYmVyTW9uZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAxKSk7XG4gIHJldHVybiBuID8gKGQudSA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlV2Vla051bWJlclN1bmRheShkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLlUgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdlZWtOdW1iZXJJU08oZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5WID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrTnVtYmVyTW9uZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQuVyA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnVsbFllYXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDQpKTtcbiAgcmV0dXJuIG4gPyAoZC55ID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VZZWFyKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQueSA9ICtuWzBdICsgKCtuWzBdID4gNjggPyAxOTAwIDogMjAwMCksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vab25lKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IC9eKFopfChbKy1dXFxkXFxkKSg/Ojo/KFxcZFxcZCkpPy8uZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDYpKTtcbiAgcmV0dXJuIG4gPyAoZC5aID0gblsxXSA/IDAgOiAtKG5bMl0gKyAoblszXSB8fCBcIjAwXCIpKSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVF1YXJ0ZXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDEpKTtcbiAgcmV0dXJuIG4gPyAoZC5xID0gblswXSAqIDMgLSAzLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTW9udGhOdW1iZXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5tID0gblswXSAtIDEsIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXlPZk1vbnRoKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQuZCA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF5T2ZZZWFyKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAzKSk7XG4gIHJldHVybiBuID8gKGQubSA9IDAsIGQuZCA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSG91cjI0KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQuSCA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTWludXRlcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLk0gPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNlY29uZHMoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5TID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNaWxsaXNlY29uZHMoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDMpKTtcbiAgcmV0dXJuIG4gPyAoZC5MID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNaWNyb3NlY29uZHMoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDYpKTtcbiAgcmV0dXJuIG4gPyAoZC5MID0gTWF0aC5mbG9vcihuWzBdIC8gMTAwMCksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VMaXRlcmFsUGVyY2VudChkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBwZXJjZW50UmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDEpKTtcbiAgcmV0dXJuIG4gPyBpICsgblswXS5sZW5ndGggOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVbml4VGltZXN0YW1wKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgcmV0dXJuIG4gPyAoZC5RID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVbml4VGltZXN0YW1wU2Vjb25kcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gIHJldHVybiBuID8gKGQucyA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdERheU9mTW9udGgoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0RGF0ZSgpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0SG91cjI0KGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldEhvdXJzKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRIb3VyMTIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0SG91cnMoKSAlIDEyIHx8IDEyLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF5T2ZZZWFyKGQsIHApIHtcbiAgcmV0dXJuIHBhZCgxICsgdGltZURheS5jb3VudCh0aW1lWWVhcihkKSwgZCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaWxsaXNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0TWlsbGlzZWNvbmRzKCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaWNyb3NlY29uZHMoZCwgcCkge1xuICByZXR1cm4gZm9ybWF0TWlsbGlzZWNvbmRzKGQsIHApICsgXCIwMDBcIjtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TW9udGhOdW1iZXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0TW9udGgoKSArIDEsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaW51dGVzKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldE1pbnV0ZXMoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0U2Vjb25kcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla2RheU51bWJlck1vbmRheShkKSB7XG4gIHZhciBkYXkgPSBkLmdldERheSgpO1xuICByZXR1cm4gZGF5ID09PSAwID8gNyA6IGRheTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla051bWJlclN1bmRheShkLCBwKSB7XG4gIHJldHVybiBwYWQodGltZVN1bmRheS5jb3VudCh0aW1lWWVhcihkKSAtIDEsIGQpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZElTTyhkKSB7XG4gIHZhciBkYXkgPSBkLmdldERheSgpO1xuICByZXR1cm4gKGRheSA+PSA0IHx8IGRheSA9PT0gMCkgPyB0aW1lVGh1cnNkYXkoZCkgOiB0aW1lVGh1cnNkYXkuY2VpbChkKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla051bWJlcklTTyhkLCBwKSB7XG4gIGQgPSBkSVNPKGQpO1xuICByZXR1cm4gcGFkKHRpbWVUaHVyc2RheS5jb3VudCh0aW1lWWVhcihkKSwgZCkgKyAodGltZVllYXIoZCkuZ2V0RGF5KCkgPT09IDQpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla2RheU51bWJlclN1bmRheShkKSB7XG4gIHJldHVybiBkLmdldERheSgpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRXZWVrTnVtYmVyTW9uZGF5KGQsIHApIHtcbiAgcmV0dXJuIHBhZCh0aW1lTW9uZGF5LmNvdW50KHRpbWVZZWFyKGQpIC0gMSwgZCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRZZWFyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldEZ1bGxZZWFyKCkgJSAxMDAsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRZZWFySVNPKGQsIHApIHtcbiAgZCA9IGRJU08oZCk7XG4gIHJldHVybiBwYWQoZC5nZXRGdWxsWWVhcigpICUgMTAwLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RnVsbFllYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0RnVsbFllYXIoKSAlIDEwMDAwLCBwLCA0KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RnVsbFllYXJJU08oZCwgcCkge1xuICB2YXIgZGF5ID0gZC5nZXREYXkoKTtcbiAgZCA9IChkYXkgPj0gNCB8fCBkYXkgPT09IDApID8gdGltZVRodXJzZGF5KGQpIDogdGltZVRodXJzZGF5LmNlaWwoZCk7XG4gIHJldHVybiBwYWQoZC5nZXRGdWxsWWVhcigpICUgMTAwMDAsIHAsIDQpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRab25lKGQpIHtcbiAgdmFyIHogPSBkLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIHJldHVybiAoeiA+IDAgPyBcIi1cIiA6ICh6ICo9IC0xLCBcIitcIikpXG4gICAgICArIHBhZCh6IC8gNjAgfCAwLCBcIjBcIiwgMilcbiAgICAgICsgcGFkKHogJSA2MCwgXCIwXCIsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENEYXlPZk1vbnRoKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldFVUQ0RhdGUoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0hvdXIyNChkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENIb3VycygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDSG91cjEyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldFVUQ0hvdXJzKCkgJSAxMiB8fCAxMiwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0RheU9mWWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoMSArIHV0Y0RheS5jb3VudCh1dGNZZWFyKGQpLCBkKSwgcCwgMyk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ01pbGxpc2Vjb25kcyhkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENNaWxsaXNlY29uZHMoKSwgcCwgMyk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ01pY3Jvc2Vjb25kcyhkLCBwKSB7XG4gIHJldHVybiBmb3JtYXRVVENNaWxsaXNlY29uZHMoZCwgcCkgKyBcIjAwMFwiO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENNb250aE51bWJlcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENNb250aCgpICsgMSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ01pbnV0ZXMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDTWludXRlcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDU2Vjb25kcyhkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENTZWNvbmRzKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyTW9uZGF5KGQpIHtcbiAgdmFyIGRvdyA9IGQuZ2V0VVRDRGF5KCk7XG4gIHJldHVybiBkb3cgPT09IDAgPyA3IDogZG93O1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5KGQsIHApIHtcbiAgcmV0dXJuIHBhZCh1dGNTdW5kYXkuY291bnQodXRjWWVhcihkKSAtIDEsIGQpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gVVRDZElTTyhkKSB7XG4gIHZhciBkYXkgPSBkLmdldFVUQ0RheSgpO1xuICByZXR1cm4gKGRheSA+PSA0IHx8IGRheSA9PT0gMCkgPyB1dGNUaHVyc2RheShkKSA6IHV0Y1RodXJzZGF5LmNlaWwoZCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1dlZWtOdW1iZXJJU08oZCwgcCkge1xuICBkID0gVVRDZElTTyhkKTtcbiAgcmV0dXJuIHBhZCh1dGNUaHVyc2RheS5jb3VudCh1dGNZZWFyKGQpLCBkKSArICh1dGNZZWFyKGQpLmdldFVUQ0RheSgpID09PSA0KSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1dlZWtkYXlOdW1iZXJTdW5kYXkoZCkge1xuICByZXR1cm4gZC5nZXRVVENEYXkoKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDV2Vla051bWJlck1vbmRheShkLCBwKSB7XG4gIHJldHVybiBwYWQodXRjTW9uZGF5LmNvdW50KHV0Y1llYXIoZCkgLSAxLCBkKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1llYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDRnVsbFllYXIoKSAlIDEwMCwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1llYXJJU08oZCwgcCkge1xuICBkID0gVVRDZElTTyhkKTtcbiAgcmV0dXJuIHBhZChkLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDAsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENGdWxsWWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENGdWxsWWVhcigpICUgMTAwMDAsIHAsIDQpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENGdWxsWWVhcklTTyhkLCBwKSB7XG4gIHZhciBkYXkgPSBkLmdldFVUQ0RheSgpO1xuICBkID0gKGRheSA+PSA0IHx8IGRheSA9PT0gMCkgPyB1dGNUaHVyc2RheShkKSA6IHV0Y1RodXJzZGF5LmNlaWwoZCk7XG4gIHJldHVybiBwYWQoZC5nZXRVVENGdWxsWWVhcigpICUgMTAwMDAsIHAsIDQpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENab25lKCkge1xuICByZXR1cm4gXCIrMDAwMFwiO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRMaXRlcmFsUGVyY2VudCgpIHtcbiAgcmV0dXJuIFwiJVwiO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVbml4VGltZXN0YW1wKGQpIHtcbiAgcmV0dXJuICtkO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVbml4VGltZXN0YW1wU2Vjb25kcyhkKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKCtkIC8gMTAwMCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time-format/src/locale.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/day.js": +/*!************************************************!*\ + !*** ../../../node_modules/d3-time/src/day.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeDay\": () => (/* binding */ timeDay),\n/* harmony export */ \"timeDays\": () => (/* binding */ timeDays),\n/* harmony export */ \"unixDay\": () => (/* binding */ unixDay),\n/* harmony export */ \"unixDays\": () => (/* binding */ unixDays),\n/* harmony export */ \"utcDay\": () => (/* binding */ utcDay),\n/* harmony export */ \"utcDays\": () => (/* binding */ utcDays)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n\n\n\nconst timeDay = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay,\n date => date.getDate() - 1\n);\n\nconst timeDays = timeDay.range;\n\nconst utcDay = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nconst utcDays = utcDay.range;\n\nconst unixDay = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay;\n}, (date) => {\n return Math.floor(date / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay);\n});\n\nconst unixDays = unixDay.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2RheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUEyQztBQUNlOztBQUVuRCxnQkFBZ0IsMERBQVk7QUFDbkM7QUFDQTtBQUNBLHlGQUF5Rix3REFBYyxJQUFJLHFEQUFXO0FBQ3RIO0FBQ0E7O0FBRU87O0FBRUEsZUFBZSwwREFBWTtBQUNsQztBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRCx5QkFBeUIscURBQVc7QUFDcEMsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFTTs7QUFFQSxnQkFBZ0IsMERBQVk7QUFDbkM7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0QseUJBQXlCLHFEQUFXO0FBQ3BDLENBQUM7QUFDRCwyQkFBMkIscURBQVc7QUFDdEMsQ0FBQzs7QUFFTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzPzA5Y2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0aW1lSW50ZXJ2YWx9IGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5LCBkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZXhwb3J0IGNvbnN0IHRpbWVEYXkgPSB0aW1lSW50ZXJ2YWwoXG4gIGRhdGUgPT4gZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKSxcbiAgKGRhdGUsIHN0ZXApID0+IGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIHN0ZXApLFxuICAoc3RhcnQsIGVuZCkgPT4gKGVuZCAtIHN0YXJ0IC0gKGVuZC5nZXRUaW1lem9uZU9mZnNldCgpIC0gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiBkdXJhdGlvbk1pbnV0ZSkgLyBkdXJhdGlvbkRheSxcbiAgZGF0ZSA9PiBkYXRlLmdldERhdGUoKSAtIDFcbik7XG5cbmV4cG9ydCBjb25zdCB0aW1lRGF5cyA9IHRpbWVEYXkucmFuZ2U7XG5cbmV4cG9ydCBjb25zdCB1dGNEYXkgPSB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIChkYXRlLCBzdGVwKSA9PiB7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXApO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkRheTtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGNvbnN0IHV0Y0RheXMgPSB1dGNEYXkucmFuZ2U7XG5cbmV4cG9ydCBjb25zdCB1bml4RGF5ID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgKyBzdGVwKTtcbn0sIChzdGFydCwgZW5kKSA9PiB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25EYXk7XG59LCAoZGF0ZSkgPT4ge1xuICByZXR1cm4gTWF0aC5mbG9vcihkYXRlIC8gZHVyYXRpb25EYXkpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB1bml4RGF5cyA9IHVuaXhEYXkucmFuZ2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/day.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/duration.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-time/src/duration.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"durationDay\": () => (/* binding */ durationDay),\n/* harmony export */ \"durationHour\": () => (/* binding */ durationHour),\n/* harmony export */ \"durationMinute\": () => (/* binding */ durationMinute),\n/* harmony export */ \"durationMonth\": () => (/* binding */ durationMonth),\n/* harmony export */ \"durationSecond\": () => (/* binding */ durationSecond),\n/* harmony export */ \"durationWeek\": () => (/* binding */ durationWeek),\n/* harmony export */ \"durationYear\": () => (/* binding */ durationYear)\n/* harmony export */ });\nconst durationSecond = 1000;\nconst durationMinute = durationSecond * 60;\nconst durationHour = durationMinute * 60;\nconst durationDay = durationHour * 24;\nconst durationWeek = durationDay * 7;\nconst durationMonth = durationDay * 30;\nconst durationYear = durationDay * 365;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2R1cmF0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZHVyYXRpb24uanM/YTViYSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZHVyYXRpb25TZWNvbmQgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTWludXRlID0gZHVyYXRpb25TZWNvbmQgKiA2MDtcbmV4cG9ydCBjb25zdCBkdXJhdGlvbkhvdXIgPSBkdXJhdGlvbk1pbnV0ZSAqIDYwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uRGF5ID0gZHVyYXRpb25Ib3VyICogMjQ7XG5leHBvcnQgY29uc3QgZHVyYXRpb25XZWVrID0gZHVyYXRpb25EYXkgKiA3O1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uTW9udGggPSBkdXJhdGlvbkRheSAqIDMwO1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uWWVhciA9IGR1cmF0aW9uRGF5ICogMzY1O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/duration.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/hour.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-time/src/hour.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeHour\": () => (/* binding */ timeHour),\n/* harmony export */ \"timeHours\": () => (/* binding */ timeHours),\n/* harmony export */ \"utcHour\": () => (/* binding */ utcHour),\n/* harmony export */ \"utcHours\": () => (/* binding */ utcHours)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n\n\n\nconst timeHour = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond - date.getMinutes() * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nconst timeHours = timeHour.range;\n\nconst utcHour = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nconst utcHours = utcHour.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTJDO0FBQ2dDOztBQUVwRSxpQkFBaUIsMERBQVk7QUFDcEMsbUVBQW1FLHdEQUFjLHVCQUF1Qix3REFBYztBQUN0SCxDQUFDO0FBQ0QsOEJBQThCLHNEQUFZO0FBQzFDLENBQUM7QUFDRCx5QkFBeUIsc0RBQVk7QUFDckMsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFTTs7QUFFQSxnQkFBZ0IsMERBQVk7QUFDbkM7QUFDQSxDQUFDO0FBQ0QsOEJBQThCLHNEQUFZO0FBQzFDLENBQUM7QUFDRCx5QkFBeUIsc0RBQVk7QUFDckMsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaG91ci5qcz84YzI5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltZUludGVydmFsfSBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbkhvdXIsIGR1cmF0aW9uTWludXRlLCBkdXJhdGlvblNlY29uZH0gZnJvbSBcIi4vZHVyYXRpb24uanNcIjtcblxuZXhwb3J0IGNvbnN0IHRpbWVIb3VyID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGUuZ2V0U2Vjb25kcygpICogZHVyYXRpb25TZWNvbmQgLSBkYXRlLmdldE1pbnV0ZXMoKSAqIGR1cmF0aW9uTWludXRlKTtcbn0sIChkYXRlLCBzdGVwKSA9PiB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbkhvdXI7XG59LCAoZGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB0aW1lSG91cnMgPSB0aW1lSG91ci5yYW5nZTtcblxuZXhwb3J0IGNvbnN0IHV0Y0hvdXIgPSB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgZGF0ZS5zZXRVVENNaW51dGVzKDAsIDAsIDApO1xufSwgKGRhdGUsIHN0ZXApID0+IHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0hvdXJzKCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IHV0Y0hvdXJzID0gdXRjSG91ci5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/hour.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-time/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeDay\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.timeDay),\n/* harmony export */ \"timeDays\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.timeDays),\n/* harmony export */ \"timeFriday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeFriday),\n/* harmony export */ \"timeFridays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeFridays),\n/* harmony export */ \"timeHour\": () => (/* reexport safe */ _hour_js__WEBPACK_IMPORTED_MODULE_4__.timeHour),\n/* harmony export */ \"timeHours\": () => (/* reexport safe */ _hour_js__WEBPACK_IMPORTED_MODULE_4__.timeHours),\n/* harmony export */ \"timeInterval\": () => (/* reexport safe */ _interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval),\n/* harmony export */ \"timeMillisecond\": () => (/* reexport safe */ _millisecond_js__WEBPACK_IMPORTED_MODULE_1__.millisecond),\n/* harmony export */ \"timeMilliseconds\": () => (/* reexport safe */ _millisecond_js__WEBPACK_IMPORTED_MODULE_1__.milliseconds),\n/* harmony export */ \"timeMinute\": () => (/* reexport safe */ _minute_js__WEBPACK_IMPORTED_MODULE_3__.timeMinute),\n/* harmony export */ \"timeMinutes\": () => (/* reexport safe */ _minute_js__WEBPACK_IMPORTED_MODULE_3__.timeMinutes),\n/* harmony export */ \"timeMonday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeMonday),\n/* harmony export */ \"timeMondays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeMondays),\n/* harmony export */ \"timeMonth\": () => (/* reexport safe */ _month_js__WEBPACK_IMPORTED_MODULE_7__.timeMonth),\n/* harmony export */ \"timeMonths\": () => (/* reexport safe */ _month_js__WEBPACK_IMPORTED_MODULE_7__.timeMonths),\n/* harmony export */ \"timeSaturday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSaturday),\n/* harmony export */ \"timeSaturdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSaturdays),\n/* harmony export */ \"timeSecond\": () => (/* reexport safe */ _second_js__WEBPACK_IMPORTED_MODULE_2__.second),\n/* harmony export */ \"timeSeconds\": () => (/* reexport safe */ _second_js__WEBPACK_IMPORTED_MODULE_2__.seconds),\n/* harmony export */ \"timeSunday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSunday),\n/* harmony export */ \"timeSundays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSundays),\n/* harmony export */ \"timeThursday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeThursday),\n/* harmony export */ \"timeThursdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeThursdays),\n/* harmony export */ \"timeTickInterval\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_9__.timeTickInterval),\n/* harmony export */ \"timeTicks\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_9__.timeTicks),\n/* harmony export */ \"timeTuesday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeTuesday),\n/* harmony export */ \"timeTuesdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeTuesdays),\n/* harmony export */ \"timeWednesday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeWednesday),\n/* harmony export */ \"timeWednesdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeWednesdays),\n/* harmony export */ \"timeWeek\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSunday),\n/* harmony export */ \"timeWeeks\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.timeSundays),\n/* harmony export */ \"timeYear\": () => (/* reexport safe */ _year_js__WEBPACK_IMPORTED_MODULE_8__.timeYear),\n/* harmony export */ \"timeYears\": () => (/* reexport safe */ _year_js__WEBPACK_IMPORTED_MODULE_8__.timeYears),\n/* harmony export */ \"unixDay\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.unixDay),\n/* harmony export */ \"unixDays\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.unixDays),\n/* harmony export */ \"utcDay\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.utcDay),\n/* harmony export */ \"utcDays\": () => (/* reexport safe */ _day_js__WEBPACK_IMPORTED_MODULE_5__.utcDays),\n/* harmony export */ \"utcFriday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcFriday),\n/* harmony export */ \"utcFridays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcFridays),\n/* harmony export */ \"utcHour\": () => (/* reexport safe */ _hour_js__WEBPACK_IMPORTED_MODULE_4__.utcHour),\n/* harmony export */ \"utcHours\": () => (/* reexport safe */ _hour_js__WEBPACK_IMPORTED_MODULE_4__.utcHours),\n/* harmony export */ \"utcMillisecond\": () => (/* reexport safe */ _millisecond_js__WEBPACK_IMPORTED_MODULE_1__.millisecond),\n/* harmony export */ \"utcMilliseconds\": () => (/* reexport safe */ _millisecond_js__WEBPACK_IMPORTED_MODULE_1__.milliseconds),\n/* harmony export */ \"utcMinute\": () => (/* reexport safe */ _minute_js__WEBPACK_IMPORTED_MODULE_3__.utcMinute),\n/* harmony export */ \"utcMinutes\": () => (/* reexport safe */ _minute_js__WEBPACK_IMPORTED_MODULE_3__.utcMinutes),\n/* harmony export */ \"utcMonday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcMonday),\n/* harmony export */ \"utcMondays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcMondays),\n/* harmony export */ \"utcMonth\": () => (/* reexport safe */ _month_js__WEBPACK_IMPORTED_MODULE_7__.utcMonth),\n/* harmony export */ \"utcMonths\": () => (/* reexport safe */ _month_js__WEBPACK_IMPORTED_MODULE_7__.utcMonths),\n/* harmony export */ \"utcSaturday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSaturday),\n/* harmony export */ \"utcSaturdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSaturdays),\n/* harmony export */ \"utcSecond\": () => (/* reexport safe */ _second_js__WEBPACK_IMPORTED_MODULE_2__.second),\n/* harmony export */ \"utcSeconds\": () => (/* reexport safe */ _second_js__WEBPACK_IMPORTED_MODULE_2__.seconds),\n/* harmony export */ \"utcSunday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSunday),\n/* harmony export */ \"utcSundays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSundays),\n/* harmony export */ \"utcThursday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcThursday),\n/* harmony export */ \"utcThursdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcThursdays),\n/* harmony export */ \"utcTickInterval\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_9__.utcTickInterval),\n/* harmony export */ \"utcTicks\": () => (/* reexport safe */ _ticks_js__WEBPACK_IMPORTED_MODULE_9__.utcTicks),\n/* harmony export */ \"utcTuesday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcTuesday),\n/* harmony export */ \"utcTuesdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcTuesdays),\n/* harmony export */ \"utcWednesday\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcWednesday),\n/* harmony export */ \"utcWednesdays\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcWednesdays),\n/* harmony export */ \"utcWeek\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSunday),\n/* harmony export */ \"utcWeeks\": () => (/* reexport safe */ _week_js__WEBPACK_IMPORTED_MODULE_6__.utcSundays),\n/* harmony export */ \"utcYear\": () => (/* reexport safe */ _year_js__WEBPACK_IMPORTED_MODULE_8__.utcYear),\n/* harmony export */ \"utcYears\": () => (/* reexport safe */ _year_js__WEBPACK_IMPORTED_MODULE_8__.utcYears)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./millisecond.js */ \"../../../node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./second.js */ \"../../../node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./minute.js */ \"../../../node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hour.js */ \"../../../node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./day.js */ \"../../../node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./week.js */ \"../../../node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./month.js */ \"../../../node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./year.js */ \"../../../node_modules/d3-time/src/year.js\");\n/* harmony import */ var _ticks_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ticks.js */ \"../../../node_modules/d3-time/src/ticks.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXVCOztBQU9HOztBQU9MOztBQU9BOztBQU9GOztBQVNEOztBQW1DQzs7QUFPQzs7QUFPRDs7QUFPQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvaW5kZXguanM/MDgyOSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICB0aW1lSW50ZXJ2YWxcbn0gZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxuZXhwb3J0IHtcbiAgbWlsbGlzZWNvbmQgYXMgdXRjTWlsbGlzZWNvbmQsXG4gIG1pbGxpc2Vjb25kcyBhcyB1dGNNaWxsaXNlY29uZHMsXG4gIG1pbGxpc2Vjb25kIGFzIHRpbWVNaWxsaXNlY29uZCxcbiAgbWlsbGlzZWNvbmRzIGFzIHRpbWVNaWxsaXNlY29uZHNcbn0gZnJvbSBcIi4vbWlsbGlzZWNvbmQuanNcIjtcblxuZXhwb3J0IHtcbiAgc2Vjb25kIGFzIHV0Y1NlY29uZCxcbiAgc2Vjb25kcyBhcyB1dGNTZWNvbmRzLFxuICBzZWNvbmQgYXMgdGltZVNlY29uZCxcbiAgc2Vjb25kcyBhcyB0aW1lU2Vjb25kc1xufSBmcm9tIFwiLi9zZWNvbmQuanNcIjtcblxuZXhwb3J0IHtcbiAgdGltZU1pbnV0ZSxcbiAgdGltZU1pbnV0ZXMsXG4gIHV0Y01pbnV0ZSxcbiAgdXRjTWludXRlc1xufSBmcm9tIFwiLi9taW51dGUuanNcIjtcblxuZXhwb3J0IHtcbiAgdGltZUhvdXIsXG4gIHRpbWVIb3VycyxcbiAgdXRjSG91cixcbiAgdXRjSG91cnNcbn0gZnJvbSBcIi4vaG91ci5qc1wiO1xuXG5leHBvcnQge1xuICB0aW1lRGF5LFxuICB0aW1lRGF5cyxcbiAgdXRjRGF5LFxuICB1dGNEYXlzLFxuICB1bml4RGF5LFxuICB1bml4RGF5c1xufSBmcm9tIFwiLi9kYXkuanNcIjtcblxuZXhwb3J0IHtcbiAgdGltZVN1bmRheSBhcyB0aW1lV2VlayxcbiAgdGltZVN1bmRheXMgYXMgdGltZVdlZWtzLFxuICB0aW1lU3VuZGF5LFxuICB0aW1lU3VuZGF5cyxcbiAgdGltZU1vbmRheSxcbiAgdGltZU1vbmRheXMsXG4gIHRpbWVUdWVzZGF5LFxuICB0aW1lVHVlc2RheXMsXG4gIHRpbWVXZWRuZXNkYXksXG4gIHRpbWVXZWRuZXNkYXlzLFxuICB0aW1lVGh1cnNkYXksXG4gIHRpbWVUaHVyc2RheXMsXG4gIHRpbWVGcmlkYXksXG4gIHRpbWVGcmlkYXlzLFxuICB0aW1lU2F0dXJkYXksXG4gIHRpbWVTYXR1cmRheXMsXG4gIHV0Y1N1bmRheSBhcyB1dGNXZWVrLFxuICB1dGNTdW5kYXlzIGFzIHV0Y1dlZWtzLFxuICB1dGNTdW5kYXksXG4gIHV0Y1N1bmRheXMsXG4gIHV0Y01vbmRheSxcbiAgdXRjTW9uZGF5cyxcbiAgdXRjVHVlc2RheSxcbiAgdXRjVHVlc2RheXMsXG4gIHV0Y1dlZG5lc2RheSxcbiAgdXRjV2VkbmVzZGF5cyxcbiAgdXRjVGh1cnNkYXksXG4gIHV0Y1RodXJzZGF5cyxcbiAgdXRjRnJpZGF5LFxuICB1dGNGcmlkYXlzLFxuICB1dGNTYXR1cmRheSxcbiAgdXRjU2F0dXJkYXlzXG59IGZyb20gXCIuL3dlZWsuanNcIjtcblxuZXhwb3J0IHtcbiAgdGltZU1vbnRoLFxuICB0aW1lTW9udGhzLFxuICB1dGNNb250aCxcbiAgdXRjTW9udGhzXG59IGZyb20gXCIuL21vbnRoLmpzXCI7XG5cbmV4cG9ydCB7XG4gIHRpbWVZZWFyLFxuICB0aW1lWWVhcnMsXG4gIHV0Y1llYXIsXG4gIHV0Y1llYXJzXG59IGZyb20gXCIuL3llYXIuanNcIjtcblxuZXhwb3J0IHtcbiAgdXRjVGlja3MsXG4gIHV0Y1RpY2tJbnRlcnZhbCxcbiAgdGltZVRpY2tzLFxuICB0aW1lVGlja0ludGVydmFsXG59IGZyb20gXCIuL3RpY2tzLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/interval.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-time/src/interval.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeInterval\": () => (/* binding */ timeInterval)\n/* harmony export */ });\nconst t0 = new Date, t1 = new Date;\n\nfunction timeInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n let previous;\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (date, step) => {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = (start, end) => {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2ludGVydmFsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7QUFFTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLG9EQUFvRDtBQUNwRCxVQUFVO0FBQ1Ysb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcz8wZDNhIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHQwID0gbmV3IERhdGUsIHQxID0gbmV3IERhdGU7XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lSW50ZXJ2YWwoZmxvb3JpLCBvZmZzZXRpLCBjb3VudCwgZmllbGQpIHtcblxuICBmdW5jdGlvbiBpbnRlcnZhbChkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMCA/IG5ldyBEYXRlIDogbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfVxuXG4gIGludGVydmFsLmZsb29yID0gKGRhdGUpID0+IHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLmNlaWwgPSAoZGF0ZSkgPT4ge1xuICAgIHJldHVybiBmbG9vcmkoZGF0ZSA9IG5ldyBEYXRlKGRhdGUgLSAxKSksIG9mZnNldGkoZGF0ZSwgMSksIGZsb29yaShkYXRlKSwgZGF0ZTtcbiAgfTtcblxuICBpbnRlcnZhbC5yb3VuZCA9IChkYXRlKSA9PiB7XG4gICAgY29uc3QgZDAgPSBpbnRlcnZhbChkYXRlKSwgZDEgPSBpbnRlcnZhbC5jZWlsKGRhdGUpO1xuICAgIHJldHVybiBkYXRlIC0gZDAgPCBkMSAtIGRhdGUgPyBkMCA6IGQxO1xuICB9O1xuXG4gIGludGVydmFsLm9mZnNldCA9IChkYXRlLCBzdGVwKSA9PiB7XG4gICAgcmV0dXJuIG9mZnNldGkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSwgc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJhbmdlID0gKHN0YXJ0LCBzdG9wLCBzdGVwKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSBbXTtcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBsZXQgcHJldmlvdXM7XG4gICAgZG8gcmFuZ2UucHVzaChwcmV2aW91cyA9IG5ldyBEYXRlKCtzdGFydCkpLCBvZmZzZXRpKHN0YXJ0LCBzdGVwKSwgZmxvb3JpKHN0YXJ0KTtcbiAgICB3aGlsZSAocHJldmlvdXMgPCBzdGFydCAmJiBzdGFydCA8IHN0b3ApO1xuICAgIHJldHVybiByYW5nZTtcbiAgfTtcblxuICBpbnRlcnZhbC5maWx0ZXIgPSAodGVzdCkgPT4ge1xuICAgIHJldHVybiB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgICAgIGlmIChkYXRlID49IGRhdGUpIHdoaWxlIChmbG9vcmkoZGF0ZSksICF0ZXN0KGRhdGUpKSBkYXRlLnNldFRpbWUoZGF0ZSAtIDEpO1xuICAgIH0sIChkYXRlLCBzdGVwKSA9PiB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB7XG4gICAgICAgIGlmIChzdGVwIDwgMCkgd2hpbGUgKCsrc3RlcCA8PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgLTEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9IGVsc2Ugd2hpbGUgKC0tc3RlcCA+PSAwKSB7XG4gICAgICAgICAgd2hpbGUgKG9mZnNldGkoZGF0ZSwgKzEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgaWYgKGNvdW50KSB7XG4gICAgaW50ZXJ2YWwuY291bnQgPSAoc3RhcnQsIGVuZCkgPT4ge1xuICAgICAgdDAuc2V0VGltZSgrc3RhcnQpLCB0MS5zZXRUaW1lKCtlbmQpO1xuICAgICAgZmxvb3JpKHQwKSwgZmxvb3JpKHQxKTtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvdW50KHQwLCB0MSkpO1xuICAgIH07XG5cbiAgICBpbnRlcnZhbC5ldmVyeSA9IChzdGVwKSA9PiB7XG4gICAgICBzdGVwID0gTWF0aC5mbG9vcihzdGVwKTtcbiAgICAgIHJldHVybiAhaXNGaW5pdGUoc3RlcCkgfHwgIShzdGVwID4gMCkgPyBudWxsXG4gICAgICAgICAgOiAhKHN0ZXAgPiAxKSA/IGludGVydmFsXG4gICAgICAgICAgOiBpbnRlcnZhbC5maWx0ZXIoZmllbGRcbiAgICAgICAgICAgICAgPyAoZCkgPT4gZmllbGQoZCkgJSBzdGVwID09PSAwXG4gICAgICAgICAgICAgIDogKGQpID0+IGludGVydmFsLmNvdW50KDAsIGQpICUgc3RlcCA9PT0gMCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnZhbDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/interval.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/millisecond.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-time/src/millisecond.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"millisecond\": () => (/* binding */ millisecond),\n/* harmony export */ \"milliseconds\": () => (/* binding */ milliseconds)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n\n\nconst millisecond = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nconst milliseconds = millisecond.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbGxpc2Vjb25kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEyQzs7QUFFcEMsb0JBQW9CLDBEQUFZO0FBQ3ZDO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywwREFBWTtBQUNyQjtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDs7QUFFTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWlsbGlzZWNvbmQuanM/Y2MyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpbWVJbnRlcnZhbH0gZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kID0gdGltZUludGVydmFsKCgpID0+IHtcbiAgLy8gbm9vcFxufSwgKGRhdGUsIHN0ZXApID0+IHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCk7XG59LCAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gZW5kIC0gc3RhcnQ7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxubWlsbGlzZWNvbmQuZXZlcnkgPSAoaykgPT4ge1xuICBrID0gTWF0aC5mbG9vcihrKTtcbiAgaWYgKCFpc0Zpbml0ZShrKSB8fCAhKGsgPiAwKSkgcmV0dXJuIG51bGw7XG4gIGlmICghKGsgPiAxKSkgcmV0dXJuIG1pbGxpc2Vjb25kO1xuICByZXR1cm4gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gICAgZGF0ZS5zZXRUaW1lKE1hdGguZmxvb3IoZGF0ZSAvIGspICogayk7XG4gIH0sIChkYXRlLCBzdGVwKSA9PiB7XG4gICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGspO1xuICB9LCAoc3RhcnQsIGVuZCkgPT4ge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gaztcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmQucmFuZ2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/millisecond.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/minute.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-time/src/minute.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeMinute\": () => (/* binding */ timeMinute),\n/* harmony export */ \"timeMinutes\": () => (/* binding */ timeMinutes),\n/* harmony export */ \"utcMinute\": () => (/* binding */ utcMinute),\n/* harmony export */ \"utcMinutes\": () => (/* binding */ utcMinutes)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n\n\n\nconst timeMinute = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nconst timeMinutes = timeMinute.range;\n\nconst utcMinute = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nconst utcMinutes = utcMinute.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMkM7QUFDa0I7O0FBRXRELG1CQUFtQiwwREFBWTtBQUN0QyxtRUFBbUUsd0RBQWM7QUFDakYsQ0FBQztBQUNELDhCQUE4Qix3REFBYztBQUM1QyxDQUFDO0FBQ0QseUJBQXlCLHdEQUFjO0FBQ3ZDLENBQUM7QUFDRDtBQUNBLENBQUM7O0FBRU07O0FBRUEsa0JBQWtCLDBEQUFZO0FBQ3JDO0FBQ0EsQ0FBQztBQUNELDhCQUE4Qix3REFBYztBQUM1QyxDQUFDO0FBQ0QseUJBQXlCLHdEQUFjO0FBQ3ZDLENBQUM7QUFDRDtBQUNBLENBQUM7O0FBRU0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21pbnV0ZS5qcz8wMTUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltZUludGVydmFsfSBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25TZWNvbmR9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5cbmV4cG9ydCBjb25zdCB0aW1lTWludXRlID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIGRhdGUuZ2V0U2Vjb25kcygpICogZHVyYXRpb25TZWNvbmQpO1xufSwgKGRhdGUsIHN0ZXApID0+IHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uTWludXRlKTtcbn0sIChzdGFydCwgZW5kKSA9PiB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25NaW51dGU7XG59LCAoZGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IHRpbWVNaW51dGVzID0gdGltZU1pbnV0ZS5yYW5nZTtcblxuZXhwb3J0IGNvbnN0IHV0Y01pbnV0ZSA9IHRpbWVJbnRlcnZhbCgoZGF0ZSkgPT4ge1xuICBkYXRlLnNldFVUQ1NlY29uZHMoMCwgMCk7XG59LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvbk1pbnV0ZTtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgdXRjTWludXRlcyA9IHV0Y01pbnV0ZS5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/minute.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/month.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-time/src/month.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeMonth\": () => (/* binding */ timeMonth),\n/* harmony export */ \"timeMonths\": () => (/* binding */ timeMonths),\n/* harmony export */ \"utcMonth\": () => (/* binding */ utcMonth),\n/* harmony export */ \"utcMonths\": () => (/* binding */ utcMonths)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n\n\nconst timeMonth = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nconst timeMonths = timeMonth.range;\n\nconst utcMonth = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nconst utcMonths = utcMonth.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTJDOztBQUVwQyxrQkFBa0IsMERBQVk7QUFDckM7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7O0FBRU07O0FBRUEsaUJBQWlCLDBEQUFZO0FBQ3BDO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDOztBQUVNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9tb250aC5qcz81Mjk3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltZUludGVydmFsfSBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuXG5leHBvcnQgY29uc3QgdGltZU1vbnRoID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0RGF0ZSgxKTtcbiAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbn0sIChkYXRlLCBzdGVwKSA9PiB7XG4gIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgc3RlcCk7XG59LCAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldE1vbnRoKCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IHRpbWVNb250aHMgPSB0aW1lTW9udGgucmFuZ2U7XG5cbmV4cG9ydCBjb25zdCB1dGNNb250aCA9IHRpbWVJbnRlcnZhbCgoZGF0ZSkgPT4ge1xuICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICBkYXRlLnNldFVUQ01vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSArIHN0ZXApO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIGVuZC5nZXRVVENNb250aCgpIC0gc3RhcnQuZ2V0VVRDTW9udGgoKSArIChlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCkpICogMTI7XG59LCAoZGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNb250aCgpO1xufSk7XG5cbmV4cG9ydCBjb25zdCB1dGNNb250aHMgPSB1dGNNb250aC5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/month.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/second.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-time/src/second.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"second\": () => (/* binding */ second),\n/* harmony export */ \"seconds\": () => (/* binding */ seconds)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n\n\n\nconst second = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond);\n}, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nconst seconds = second.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3NlY29uZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTJDO0FBQ0U7O0FBRXRDLGVBQWUsMERBQVk7QUFDbEM7QUFDQSxDQUFDO0FBQ0QsOEJBQThCLHdEQUFjO0FBQzVDLENBQUM7QUFDRCx5QkFBeUIsd0RBQWM7QUFDdkMsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvc2Vjb25kLmpzPzgwOGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0aW1lSW50ZXJ2YWx9IGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG5pbXBvcnQge2R1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG5leHBvcnQgY29uc3Qgc2Vjb25kID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0VGltZShkYXRlIC0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG59LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25TZWNvbmQpO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCkgLyBkdXJhdGlvblNlY29uZDtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldFVUQ1NlY29uZHMoKTtcbn0pO1xuXG5leHBvcnQgY29uc3Qgc2Vjb25kcyA9IHNlY29uZC5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/second.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/ticks.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-time/src/ticks.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeTickInterval\": () => (/* binding */ timeTickInterval),\n/* harmony export */ \"timeTicks\": () => (/* binding */ timeTicks),\n/* harmony export */ \"utcTickInterval\": () => (/* binding */ utcTickInterval),\n/* harmony export */ \"utcTicks\": () => (/* binding */ utcTicks)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/bisector.js\");\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/ticks.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n/* harmony import */ var _millisecond_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./millisecond.js */ \"../../../node_modules/d3-time/src/millisecond.js\");\n/* harmony import */ var _second_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./second.js */ \"../../../node_modules/d3-time/src/second.js\");\n/* harmony import */ var _minute_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./minute.js */ \"../../../node_modules/d3-time/src/minute.js\");\n/* harmony import */ var _hour_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hour.js */ \"../../../node_modules/d3-time/src/hour.js\");\n/* harmony import */ var _day_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./day.js */ \"../../../node_modules/d3-time/src/day.js\");\n/* harmony import */ var _week_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./week.js */ \"../../../node_modules/d3-time/src/week.js\");\n/* harmony import */ var _month_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./month.js */ \"../../../node_modules/d3-time/src/month.js\");\n/* harmony import */ var _year_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./year.js */ \"../../../node_modules/d3-time/src/year.js\");\n\n\n\n\n\n\n\n\n\n\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [_second_js__WEBPACK_IMPORTED_MODULE_0__.second, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond],\n [_second_js__WEBPACK_IMPORTED_MODULE_0__.second, 5, 5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond],\n [_second_js__WEBPACK_IMPORTED_MODULE_0__.second, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond],\n [_second_js__WEBPACK_IMPORTED_MODULE_0__.second, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationSecond],\n [minute, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute],\n [minute, 5, 5 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute],\n [minute, 15, 15 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute],\n [minute, 30, 30 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute],\n [ hour, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour ],\n [ hour, 3, 3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour ],\n [ hour, 6, 6 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour ],\n [ hour, 12, 12 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationHour ],\n [ day, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay ],\n [ day, 2, 2 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationDay ],\n [ week, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationWeek ],\n [ month, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMonth ],\n [ month, 3, 3 * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMonth ],\n [ year, 1, _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = (0,d3_array__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every((0,d3_array__WEBPACK_IMPORTED_MODULE_3__.tickStep)(start / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationYear, stop / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationYear, count));\n if (i === 0) return _millisecond_js__WEBPACK_IMPORTED_MODULE_4__.millisecond.every(Math.max((0,d3_array__WEBPACK_IMPORTED_MODULE_3__.tickStep)(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_5__.utcYear, _month_js__WEBPACK_IMPORTED_MODULE_6__.utcMonth, _week_js__WEBPACK_IMPORTED_MODULE_7__.utcSunday, _day_js__WEBPACK_IMPORTED_MODULE_8__.unixDay, _hour_js__WEBPACK_IMPORTED_MODULE_9__.utcHour, _minute_js__WEBPACK_IMPORTED_MODULE_10__.utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(_year_js__WEBPACK_IMPORTED_MODULE_5__.timeYear, _month_js__WEBPACK_IMPORTED_MODULE_6__.timeMonth, _week_js__WEBPACK_IMPORTED_MODULE_7__.timeSunday, _day_js__WEBPACK_IMPORTED_MODULE_8__.timeDay, _hour_js__WEBPACK_IMPORTED_MODULE_9__.timeHour, _minute_js__WEBPACK_IMPORTED_MODULE_10__.timeMinute);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3RpY2tzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE0QztBQUN1RjtBQUN0RjtBQUNWO0FBQ2U7QUFDTjtBQUNGO0FBQ007QUFDRDtBQUNIOztBQUU1Qzs7QUFFQTtBQUNBLEtBQUssOENBQU0sV0FBVyx3REFBYztBQUNwQyxLQUFLLDhDQUFNLFdBQVcsd0RBQWM7QUFDcEMsS0FBSyw4Q0FBTSxXQUFXLHdEQUFjO0FBQ3BDLEtBQUssOENBQU0sV0FBVyx3REFBYztBQUNwQyxzQkFBc0Isd0RBQWM7QUFDcEMsc0JBQXNCLHdEQUFjO0FBQ3BDLHNCQUFzQix3REFBYztBQUNwQyxzQkFBc0Isd0RBQWM7QUFDcEMsc0JBQXNCLHNEQUFZO0FBQ2xDLHNCQUFzQixzREFBWTtBQUNsQyxzQkFBc0Isc0RBQVk7QUFDbEMsc0JBQXNCLHNEQUFZO0FBQ2xDLHNCQUFzQixxREFBVztBQUNqQyxzQkFBc0IscURBQVc7QUFDakMsc0JBQXNCLHNEQUFZO0FBQ2xDLHNCQUFzQix1REFBYTtBQUNuQyxzQkFBc0IsdURBQWE7QUFDbkMsc0JBQXNCLHNEQUFZO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsb0RBQVE7QUFDdEIsc0RBQXNELGtEQUFRLFNBQVMsc0RBQVksU0FBUyxzREFBWTtBQUN4Ryx3QkFBd0IsOERBQWlCLFVBQVUsa0RBQVE7QUFDM0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkNBQTJDLDZDQUFPLEVBQUUsK0NBQVEsRUFBRSwrQ0FBUyxFQUFFLDRDQUFPLEVBQUUsNkNBQU8sRUFBRSxrREFBUztBQUNwRyw2Q0FBNkMsOENBQVEsRUFBRSxnREFBUyxFQUFFLGdEQUFVLEVBQUUsNENBQU8sRUFBRSw4Q0FBUSxFQUFFLG1EQUFVOztBQUUzQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdGlja3MuanM/ZWI4MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Jpc2VjdG9yLCB0aWNrU3RlcH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2R1cmF0aW9uRGF5LCBkdXJhdGlvbkhvdXIsIGR1cmF0aW9uTWludXRlLCBkdXJhdGlvbk1vbnRoLCBkdXJhdGlvblNlY29uZCwgZHVyYXRpb25XZWVrLCBkdXJhdGlvblllYXJ9IGZyb20gXCIuL2R1cmF0aW9uLmpzXCI7XG5pbXBvcnQge21pbGxpc2Vjb25kfSBmcm9tIFwiLi9taWxsaXNlY29uZC5qc1wiO1xuaW1wb3J0IHtzZWNvbmR9IGZyb20gXCIuL3NlY29uZC5qc1wiO1xuaW1wb3J0IHt0aW1lTWludXRlLCB1dGNNaW51dGV9IGZyb20gXCIuL21pbnV0ZS5qc1wiO1xuaW1wb3J0IHt0aW1lSG91ciwgdXRjSG91cn0gZnJvbSBcIi4vaG91ci5qc1wiO1xuaW1wb3J0IHt0aW1lRGF5LCB1bml4RGF5fSBmcm9tIFwiLi9kYXkuanNcIjtcbmltcG9ydCB7dGltZVN1bmRheSwgdXRjU3VuZGF5fSBmcm9tIFwiLi93ZWVrLmpzXCI7XG5pbXBvcnQge3RpbWVNb250aCwgdXRjTW9udGh9IGZyb20gXCIuL21vbnRoLmpzXCI7XG5pbXBvcnQge3RpbWVZZWFyLCB1dGNZZWFyfSBmcm9tIFwiLi95ZWFyLmpzXCI7XG5cbmZ1bmN0aW9uIHRpY2tlcih5ZWFyLCBtb250aCwgd2VlaywgZGF5LCBob3VyLCBtaW51dGUpIHtcblxuICBjb25zdCB0aWNrSW50ZXJ2YWxzID0gW1xuICAgIFtzZWNvbmQsICAxLCAgICAgIGR1cmF0aW9uU2Vjb25kXSxcbiAgICBbc2Vjb25kLCAgNSwgIDUgKiBkdXJhdGlvblNlY29uZF0sXG4gICAgW3NlY29uZCwgMTUsIDE1ICogZHVyYXRpb25TZWNvbmRdLFxuICAgIFtzZWNvbmQsIDMwLCAzMCAqIGR1cmF0aW9uU2Vjb25kXSxcbiAgICBbbWludXRlLCAgMSwgICAgICBkdXJhdGlvbk1pbnV0ZV0sXG4gICAgW21pbnV0ZSwgIDUsICA1ICogZHVyYXRpb25NaW51dGVdLFxuICAgIFttaW51dGUsIDE1LCAxNSAqIGR1cmF0aW9uTWludXRlXSxcbiAgICBbbWludXRlLCAzMCwgMzAgKiBkdXJhdGlvbk1pbnV0ZV0sXG4gICAgWyAgaG91ciwgIDEsICAgICAgZHVyYXRpb25Ib3VyICBdLFxuICAgIFsgIGhvdXIsICAzLCAgMyAqIGR1cmF0aW9uSG91ciAgXSxcbiAgICBbICBob3VyLCAgNiwgIDYgKiBkdXJhdGlvbkhvdXIgIF0sXG4gICAgWyAgaG91ciwgMTIsIDEyICogZHVyYXRpb25Ib3VyICBdLFxuICAgIFsgICBkYXksICAxLCAgICAgIGR1cmF0aW9uRGF5ICAgXSxcbiAgICBbICAgZGF5LCAgMiwgIDIgKiBkdXJhdGlvbkRheSAgIF0sXG4gICAgWyAgd2VlaywgIDEsICAgICAgZHVyYXRpb25XZWVrICBdLFxuICAgIFsgbW9udGgsICAxLCAgICAgIGR1cmF0aW9uTW9udGggXSxcbiAgICBbIG1vbnRoLCAgMywgIDMgKiBkdXJhdGlvbk1vbnRoIF0sXG4gICAgWyAgeWVhciwgIDEsICAgICAgZHVyYXRpb25ZZWFyICBdXG4gIF07XG5cbiAgZnVuY3Rpb24gdGlja3Moc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gICAgY29uc3QgcmV2ZXJzZSA9IHN0b3AgPCBzdGFydDtcbiAgICBpZiAocmV2ZXJzZSkgW3N0YXJ0LCBzdG9wXSA9IFtzdG9wLCBzdGFydF07XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBjb3VudCAmJiB0eXBlb2YgY291bnQucmFuZ2UgPT09IFwiZnVuY3Rpb25cIiA/IGNvdW50IDogdGlja0ludGVydmFsKHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgY29uc3QgdGlja3MgPSBpbnRlcnZhbCA/IGludGVydmFsLnJhbmdlKHN0YXJ0LCArc3RvcCArIDEpIDogW107IC8vIGluY2x1c2l2ZSBzdG9wXG4gICAgcmV0dXJuIHJldmVyc2UgPyB0aWNrcy5yZXZlcnNlKCkgOiB0aWNrcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2tJbnRlcnZhbChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBNYXRoLmFicyhzdG9wIC0gc3RhcnQpIC8gY291bnQ7XG4gICAgY29uc3QgaSA9IGJpc2VjdG9yKChbLCwgc3RlcF0pID0+IHN0ZXApLnJpZ2h0KHRpY2tJbnRlcnZhbHMsIHRhcmdldCk7XG4gICAgaWYgKGkgPT09IHRpY2tJbnRlcnZhbHMubGVuZ3RoKSByZXR1cm4geWVhci5ldmVyeSh0aWNrU3RlcChzdGFydCAvIGR1cmF0aW9uWWVhciwgc3RvcCAvIGR1cmF0aW9uWWVhciwgY291bnQpKTtcbiAgICBpZiAoaSA9PT0gMCkgcmV0dXJuIG1pbGxpc2Vjb25kLmV2ZXJ5KE1hdGgubWF4KHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCksIDEpKTtcbiAgICBjb25zdCBbdCwgc3RlcF0gPSB0aWNrSW50ZXJ2YWxzW3RhcmdldCAvIHRpY2tJbnRlcnZhbHNbaSAtIDFdWzJdIDwgdGlja0ludGVydmFsc1tpXVsyXSAvIHRhcmdldCA/IGkgLSAxIDogaV07XG4gICAgcmV0dXJuIHQuZXZlcnkoc3RlcCk7XG4gIH1cblxuICByZXR1cm4gW3RpY2tzLCB0aWNrSW50ZXJ2YWxdO1xufVxuXG5jb25zdCBbdXRjVGlja3MsIHV0Y1RpY2tJbnRlcnZhbF0gPSB0aWNrZXIodXRjWWVhciwgdXRjTW9udGgsIHV0Y1N1bmRheSwgdW5peERheSwgdXRjSG91ciwgdXRjTWludXRlKTtcbmNvbnN0IFt0aW1lVGlja3MsIHRpbWVUaWNrSW50ZXJ2YWxdID0gdGlja2VyKHRpbWVZZWFyLCB0aW1lTW9udGgsIHRpbWVTdW5kYXksIHRpbWVEYXksIHRpbWVIb3VyLCB0aW1lTWludXRlKTtcblxuZXhwb3J0IHt1dGNUaWNrcywgdXRjVGlja0ludGVydmFsLCB0aW1lVGlja3MsIHRpbWVUaWNrSW50ZXJ2YWx9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/ticks.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/week.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-time/src/week.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeFriday\": () => (/* binding */ timeFriday),\n/* harmony export */ \"timeFridays\": () => (/* binding */ timeFridays),\n/* harmony export */ \"timeMonday\": () => (/* binding */ timeMonday),\n/* harmony export */ \"timeMondays\": () => (/* binding */ timeMondays),\n/* harmony export */ \"timeSaturday\": () => (/* binding */ timeSaturday),\n/* harmony export */ \"timeSaturdays\": () => (/* binding */ timeSaturdays),\n/* harmony export */ \"timeSunday\": () => (/* binding */ timeSunday),\n/* harmony export */ \"timeSundays\": () => (/* binding */ timeSundays),\n/* harmony export */ \"timeThursday\": () => (/* binding */ timeThursday),\n/* harmony export */ \"timeThursdays\": () => (/* binding */ timeThursdays),\n/* harmony export */ \"timeTuesday\": () => (/* binding */ timeTuesday),\n/* harmony export */ \"timeTuesdays\": () => (/* binding */ timeTuesdays),\n/* harmony export */ \"timeWednesday\": () => (/* binding */ timeWednesday),\n/* harmony export */ \"timeWednesdays\": () => (/* binding */ timeWednesdays),\n/* harmony export */ \"utcFriday\": () => (/* binding */ utcFriday),\n/* harmony export */ \"utcFridays\": () => (/* binding */ utcFridays),\n/* harmony export */ \"utcMonday\": () => (/* binding */ utcMonday),\n/* harmony export */ \"utcMondays\": () => (/* binding */ utcMondays),\n/* harmony export */ \"utcSaturday\": () => (/* binding */ utcSaturday),\n/* harmony export */ \"utcSaturdays\": () => (/* binding */ utcSaturdays),\n/* harmony export */ \"utcSunday\": () => (/* binding */ utcSunday),\n/* harmony export */ \"utcSundays\": () => (/* binding */ utcSundays),\n/* harmony export */ \"utcThursday\": () => (/* binding */ utcThursday),\n/* harmony export */ \"utcThursdays\": () => (/* binding */ utcThursdays),\n/* harmony export */ \"utcTuesday\": () => (/* binding */ utcTuesday),\n/* harmony export */ \"utcTuesdays\": () => (/* binding */ utcTuesdays),\n/* harmony export */ \"utcWednesday\": () => (/* binding */ utcWednesday),\n/* harmony export */ \"utcWednesdays\": () => (/* binding */ utcWednesdays)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-time/src/duration.js\");\n\n\n\nfunction timeWeekday(i) {\n return (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationMinute) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationWeek;\n });\n}\n\nconst timeSunday = timeWeekday(0);\nconst timeMonday = timeWeekday(1);\nconst timeTuesday = timeWeekday(2);\nconst timeWednesday = timeWeekday(3);\nconst timeThursday = timeWeekday(4);\nconst timeFriday = timeWeekday(5);\nconst timeSaturday = timeWeekday(6);\n\nconst timeSundays = timeSunday.range;\nconst timeMondays = timeMonday.range;\nconst timeTuesdays = timeTuesday.range;\nconst timeWednesdays = timeWednesday.range;\nconst timeThursdays = timeThursday.range;\nconst timeFridays = timeFriday.range;\nconst timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / _duration_js__WEBPACK_IMPORTED_MODULE_1__.durationWeek;\n });\n}\n\nconst utcSunday = utcWeekday(0);\nconst utcMonday = utcWeekday(1);\nconst utcTuesday = utcWeekday(2);\nconst utcWednesday = utcWeekday(3);\nconst utcThursday = utcWeekday(4);\nconst utcFriday = utcWeekday(5);\nconst utcSaturday = utcWeekday(6);\n\nconst utcSundays = utcSunday.range;\nconst utcMondays = utcMonday.range;\nconst utcTuesdays = utcTuesday.range;\nconst utcWednesdays = utcWednesday.range;\nconst utcThursdays = utcThursday.range;\nconst utcFridays = utcFriday.range;\nconst utcSaturdays = utcSaturday.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3dlZWsuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTJDO0FBQ2dCOztBQUUzRDtBQUNBLFNBQVMsMERBQVk7QUFDckI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSCxrRkFBa0Ysd0RBQWMsSUFBSSxzREFBWTtBQUNoSCxHQUFHO0FBQ0g7O0FBRU87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRVA7QUFDQSxTQUFTLDBEQUFZO0FBQ3JCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0gsMkJBQTJCLHNEQUFZO0FBQ3ZDLEdBQUc7QUFDSDs7QUFFTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvd2Vlay5qcz9lNDhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGltZUludGVydmFsfSBmcm9tIFwiLi9pbnRlcnZhbC5qc1wiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuXG5mdW5jdGlvbiB0aW1lV2Vla2RheShpKSB7XG4gIHJldHVybiB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAoZGF0ZS5nZXREYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIChkYXRlLCBzdGVwKSA9PiB7XG4gICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgc3RlcCAqIDcpO1xuICB9LCAoc3RhcnQsIGVuZCkgPT4ge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQgLSAoZW5kLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBzdGFydC5nZXRUaW1lem9uZU9mZnNldCgpKSAqIGR1cmF0aW9uTWludXRlKSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCB0aW1lU3VuZGF5ID0gdGltZVdlZWtkYXkoMCk7XG5leHBvcnQgY29uc3QgdGltZU1vbmRheSA9IHRpbWVXZWVrZGF5KDEpO1xuZXhwb3J0IGNvbnN0IHRpbWVUdWVzZGF5ID0gdGltZVdlZWtkYXkoMik7XG5leHBvcnQgY29uc3QgdGltZVdlZG5lc2RheSA9IHRpbWVXZWVrZGF5KDMpO1xuZXhwb3J0IGNvbnN0IHRpbWVUaHVyc2RheSA9IHRpbWVXZWVrZGF5KDQpO1xuZXhwb3J0IGNvbnN0IHRpbWVGcmlkYXkgPSB0aW1lV2Vla2RheSg1KTtcbmV4cG9ydCBjb25zdCB0aW1lU2F0dXJkYXkgPSB0aW1lV2Vla2RheSg2KTtcblxuZXhwb3J0IGNvbnN0IHRpbWVTdW5kYXlzID0gdGltZVN1bmRheS5yYW5nZTtcbmV4cG9ydCBjb25zdCB0aW1lTW9uZGF5cyA9IHRpbWVNb25kYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdGltZVR1ZXNkYXlzID0gdGltZVR1ZXNkYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdGltZVdlZG5lc2RheXMgPSB0aW1lV2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IGNvbnN0IHRpbWVUaHVyc2RheXMgPSB0aW1lVGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdGltZUZyaWRheXMgPSB0aW1lRnJpZGF5LnJhbmdlO1xuZXhwb3J0IGNvbnN0IHRpbWVTYXR1cmRheXMgPSB0aW1lU2F0dXJkYXkucmFuZ2U7XG5cbmZ1bmN0aW9uIHV0Y1dlZWtkYXkoaSkge1xuICByZXR1cm4gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gICAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpIC0gKGRhdGUuZ2V0VVRDRGF5KCkgKyA3IC0gaSkgJSA3KTtcbiAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB9LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uV2VlaztcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCB1dGNTdW5kYXkgPSB1dGNXZWVrZGF5KDApO1xuZXhwb3J0IGNvbnN0IHV0Y01vbmRheSA9IHV0Y1dlZWtkYXkoMSk7XG5leHBvcnQgY29uc3QgdXRjVHVlc2RheSA9IHV0Y1dlZWtkYXkoMik7XG5leHBvcnQgY29uc3QgdXRjV2VkbmVzZGF5ID0gdXRjV2Vla2RheSgzKTtcbmV4cG9ydCBjb25zdCB1dGNUaHVyc2RheSA9IHV0Y1dlZWtkYXkoNCk7XG5leHBvcnQgY29uc3QgdXRjRnJpZGF5ID0gdXRjV2Vla2RheSg1KTtcbmV4cG9ydCBjb25zdCB1dGNTYXR1cmRheSA9IHV0Y1dlZWtkYXkoNik7XG5cbmV4cG9ydCBjb25zdCB1dGNTdW5kYXlzID0gdXRjU3VuZGF5LnJhbmdlO1xuZXhwb3J0IGNvbnN0IHV0Y01vbmRheXMgPSB1dGNNb25kYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdXRjVHVlc2RheXMgPSB1dGNUdWVzZGF5LnJhbmdlO1xuZXhwb3J0IGNvbnN0IHV0Y1dlZG5lc2RheXMgPSB1dGNXZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdXRjVGh1cnNkYXlzID0gdXRjVGh1cnNkYXkucmFuZ2U7XG5leHBvcnQgY29uc3QgdXRjRnJpZGF5cyA9IHV0Y0ZyaWRheS5yYW5nZTtcbmV4cG9ydCBjb25zdCB1dGNTYXR1cmRheXMgPSB1dGNTYXR1cmRheS5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/week.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-time/src/year.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-time/src/year.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"timeYear\": () => (/* binding */ timeYear),\n/* harmony export */ \"timeYears\": () => (/* binding */ timeYears),\n/* harmony export */ \"utcYear\": () => (/* binding */ utcYear),\n/* harmony export */ \"utcYears\": () => (/* binding */ utcYears)\n/* harmony export */ });\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-time/src/interval.js\");\n\n\nconst timeYear = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nconst timeYears = timeYear.range;\n\nconst utcYear = (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : (0,_interval_js__WEBPACK_IMPORTED_MODULE_0__.timeInterval)((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nconst utcYears = utcYear.range;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBMkM7O0FBRXBDLGlCQUFpQiwwREFBWTtBQUNwQztBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsMkRBQTJELDBEQUFZO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDs7QUFFTzs7QUFFQSxnQkFBZ0IsMERBQVk7QUFDbkM7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBLDJEQUEyRCwwREFBWTtBQUN2RTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanM/ZWU5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RpbWVJbnRlcnZhbH0gZnJvbSBcIi4vaW50ZXJ2YWwuanNcIjtcblxuZXhwb3J0IGNvbnN0IHRpbWVZZWFyID0gdGltZUludGVydmFsKChkYXRlKSA9PiB7XG4gIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCAoZGF0ZSwgc3RlcCkgPT4ge1xuICBkYXRlLnNldEZ1bGxZZWFyKGRhdGUuZ2V0RnVsbFllYXIoKSArIHN0ZXApO1xufSwgKHN0YXJ0LCBlbmQpID0+IHtcbiAgcmV0dXJuIGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKTtcbn0sIChkYXRlKSA9PiB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxudGltZVllYXIuZXZlcnkgPSAoaykgPT4ge1xuICByZXR1cm4gIWlzRmluaXRlKGsgPSBNYXRoLmZsb29yKGspKSB8fCAhKGsgPiAwKSA/IG51bGwgOiB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldE1vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIChkYXRlLCBzdGVwKSA9PiB7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBzdGVwICogayk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHRpbWVZZWFycyA9IHRpbWVZZWFyLnJhbmdlO1xuXG5leHBvcnQgY29uc3QgdXRjWWVhciA9IHRpbWVJbnRlcnZhbCgoZGF0ZSkgPT4ge1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgKGRhdGUsIHN0ZXApID0+IHtcbiAgZGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKyBzdGVwKTtcbn0sIChzdGFydCwgZW5kKSA9PiB7XG4gIHJldHVybiBlbmQuZ2V0VVRDRnVsbFllYXIoKSAtIHN0YXJ0LmdldFVUQ0Z1bGxZZWFyKCk7XG59LCAoZGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnV0Y1llYXIuZXZlcnkgPSAoaykgPT4ge1xuICByZXR1cm4gIWlzRmluaXRlKGsgPSBNYXRoLmZsb29yKGspKSB8fCAhKGsgPiAwKSA/IG51bGwgOiB0aW1lSW50ZXJ2YWwoKGRhdGUpID0+IHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRVVENGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIChkYXRlLCBzdGVwKSA9PiB7XG4gICAgZGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgKyBzdGVwICogayk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHV0Y1llYXJzID0gdXRjWWVhci5yYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-time/src/year.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-timer/src/index.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-timer/src/index.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"interval\": () => (/* reexport safe */ _interval_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"now\": () => (/* reexport safe */ _timer_js__WEBPACK_IMPORTED_MODULE_0__.now),\n/* harmony export */ \"timeout\": () => (/* reexport safe */ _timeout_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ \"timer\": () => (/* reexport safe */ _timer_js__WEBPACK_IMPORTED_MODULE_0__.timer),\n/* harmony export */ \"timerFlush\": () => (/* reexport safe */ _timer_js__WEBPACK_IMPORTED_MODULE_0__.timerFlush)\n/* harmony export */ });\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"../../../node_modules/d3-timer/src/timer.js\");\n/* harmony import */ var _timeout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./timeout.js */ \"../../../node_modules/d3-timer/src/timeout.js\");\n/* harmony import */ var _interval_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interval.js */ \"../../../node_modules/d3-timer/src/interval.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlvQjs7QUFJRTs7QUFJQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZXIvc3JjL2luZGV4LmpzPzZiZTIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgbm93LFxuICB0aW1lcixcbiAgdGltZXJGbHVzaFxufSBmcm9tIFwiLi90aW1lci5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIHRpbWVvdXRcbn0gZnJvbSBcIi4vdGltZW91dC5qc1wiO1xuXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIGludGVydmFsXG59IGZyb20gXCIuL2ludGVydmFsLmpzXCI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-timer/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-timer/src/interval.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-timer/src/interval.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"../../../node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__.Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? (0,_timer_js__WEBPACK_IMPORTED_MODULE_0__.now)() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy9pbnRlcnZhbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzQzs7QUFFdEMsNkJBQWUsb0NBQVM7QUFDeEIsY0FBYyw0Q0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsOENBQUc7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy9pbnRlcnZhbC5qcz8yOGE0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGltZXIsIG5vd30gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyLCB0b3RhbCA9IGRlbGF5O1xuICBpZiAoZGVsYXkgPT0gbnVsbCkgcmV0dXJuIHQucmVzdGFydChjYWxsYmFjaywgZGVsYXksIHRpbWUpLCB0O1xuICB0Ll9yZXN0YXJ0ID0gdC5yZXN0YXJ0O1xuICB0LnJlc3RhcnQgPSBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBkZWxheSA9ICtkZWxheSwgdGltZSA9IHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWU7XG4gICAgdC5fcmVzdGFydChmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICAgIGVsYXBzZWQgKz0gdG90YWw7XG4gICAgICB0Ll9yZXN0YXJ0KHRpY2ssIHRvdGFsICs9IGRlbGF5LCB0aW1lKTtcbiAgICAgIGNhbGxiYWNrKGVsYXBzZWQpO1xuICAgIH0sIGRlbGF5LCB0aW1lKTtcbiAgfVxuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-timer/src/interval.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-timer/src/timeout.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-timer/src/timeout.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _timer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./timer.js */ \"../../../node_modules/d3-timer/src/timer.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(callback, delay, time) {\n var t = new _timer_js__WEBPACK_IMPORTED_MODULE_0__.Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlDOztBQUVqQyw2QkFBZSxvQ0FBUztBQUN4QixjQUFjLDRDQUFLO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzPzJjZGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZWxhcHNlZCA9PiB7XG4gICAgdC5zdG9wKCk7XG4gICAgY2FsbGJhY2soZWxhcHNlZCArIGRlbGF5KTtcbiAgfSwgZGVsYXksIHRpbWUpO1xuICByZXR1cm4gdDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-timer/src/timeout.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-timer/src/timer.js": +/*!***************************************************!*\ + !*** ../../../node_modules/d3-timer/src/timer.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Timer\": () => (/* binding */ Timer),\n/* harmony export */ \"now\": () => (/* binding */ now),\n/* harmony export */ \"timer\": () => (/* binding */ timer),\n/* harmony export */ \"timerFlush\": () => (/* binding */ timerFlush)\n/* harmony export */ });\nvar frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzSUFBc0k7O0FBRS9IO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTO0FBQ1QsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lci9zcmMvdGltZXIuanM/NDJiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZnJhbWUgPSAwLCAvLyBpcyBhbiBhbmltYXRpb24gZnJhbWUgcGVuZGluZz9cbiAgICB0aW1lb3V0ID0gMCwgLy8gaXMgYSB0aW1lb3V0IHBlbmRpbmc/XG4gICAgaW50ZXJ2YWwgPSAwLCAvLyBhcmUgYW55IHRpbWVycyBhY3RpdmU/XG4gICAgcG9rZURlbGF5ID0gMTAwMCwgLy8gaG93IGZyZXF1ZW50bHkgd2UgY2hlY2sgZm9yIGNsb2NrIHNrZXdcbiAgICB0YXNrSGVhZCxcbiAgICB0YXNrVGFpbCxcbiAgICBjbG9ja0xhc3QgPSAwLFxuICAgIGNsb2NrTm93ID0gMCxcbiAgICBjbG9ja1NrZXcgPSAwLFxuICAgIGNsb2NrID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSBcIm9iamVjdFwiICYmIHBlcmZvcm1hbmNlLm5vdyA/IHBlcmZvcm1hbmNlIDogRGF0ZSxcbiAgICBzZXRGcmFtZSA9IHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpIDogZnVuY3Rpb24oZikgeyBzZXRUaW1lb3V0KGYsIDE3KTsgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vdygpIHtcbiAgcmV0dXJuIGNsb2NrTm93IHx8IChzZXRGcmFtZShjbGVhck5vdyksIGNsb2NrTm93ID0gY2xvY2subm93KCkgKyBjbG9ja1NrZXcpO1xufVxuXG5mdW5jdGlvbiBjbGVhck5vdygpIHtcbiAgY2xvY2tOb3cgPSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gVGltZXIoKSB7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl90aW1lID1cbiAgdGhpcy5fbmV4dCA9IG51bGw7XG59XG5cblRpbWVyLnByb3RvdHlwZSA9IHRpbWVyLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRpbWVyLFxuICByZXN0YXJ0OiBmdW5jdGlvbihjYWxsYmFjaywgZGVsYXksIHRpbWUpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvblwiKTtcbiAgICB0aW1lID0gKHRpbWUgPT0gbnVsbCA/IG5vdygpIDogK3RpbWUpICsgKGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5KTtcbiAgICBpZiAoIXRoaXMuX25leHQgJiYgdGFza1RhaWwgIT09IHRoaXMpIHtcbiAgICAgIGlmICh0YXNrVGFpbCkgdGFza1RhaWwuX25leHQgPSB0aGlzO1xuICAgICAgZWxzZSB0YXNrSGVhZCA9IHRoaXM7XG4gICAgICB0YXNrVGFpbCA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuX2NhbGwgPSBjYWxsYmFjaztcbiAgICB0aGlzLl90aW1lID0gdGltZTtcbiAgICBzbGVlcCgpO1xuICB9LFxuICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fY2FsbCkge1xuICAgICAgdGhpcy5fY2FsbCA9IG51bGw7XG4gICAgICB0aGlzLl90aW1lID0gSW5maW5pdHk7XG4gICAgICBzbGVlcCgpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVyKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICB2YXIgdCA9IG5ldyBUaW1lcjtcbiAgdC5yZXN0YXJ0KGNhbGxiYWNrLCBkZWxheSwgdGltZSk7XG4gIHJldHVybiB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZXJGbHVzaCgpIHtcbiAgbm93KCk7IC8vIEdldCB0aGUgY3VycmVudCB0aW1lLCBpZiBub3QgYWxyZWFkeSBzZXQuXG4gICsrZnJhbWU7IC8vIFByZXRlbmQgd2XigJl2ZSBzZXQgYW4gYWxhcm0sIGlmIHdlIGhhdmVu4oCZdCBhbHJlYWR5LlxuICB2YXIgdCA9IHRhc2tIZWFkLCBlO1xuICB3aGlsZSAodCkge1xuICAgIGlmICgoZSA9IGNsb2NrTm93IC0gdC5fdGltZSkgPj0gMCkgdC5fY2FsbC5jYWxsKHVuZGVmaW5lZCwgZSk7XG4gICAgdCA9IHQuX25leHQ7XG4gIH1cbiAgLS1mcmFtZTtcbn1cblxuZnVuY3Rpb24gd2FrZSgpIHtcbiAgY2xvY2tOb3cgPSAoY2xvY2tMYXN0ID0gY2xvY2subm93KCkpICsgY2xvY2tTa2V3O1xuICBmcmFtZSA9IHRpbWVvdXQgPSAwO1xuICB0cnkge1xuICAgIHRpbWVyRmx1c2goKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcmFtZSA9IDA7XG4gICAgbmFwKCk7XG4gICAgY2xvY2tOb3cgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBva2UoKSB7XG4gIHZhciBub3cgPSBjbG9jay5ub3coKSwgZGVsYXkgPSBub3cgLSBjbG9ja0xhc3Q7XG4gIGlmIChkZWxheSA+IHBva2VEZWxheSkgY2xvY2tTa2V3IC09IGRlbGF5LCBjbG9ja0xhc3QgPSBub3c7XG59XG5cbmZ1bmN0aW9uIG5hcCgpIHtcbiAgdmFyIHQwLCB0MSA9IHRhc2tIZWFkLCB0MiwgdGltZSA9IEluZmluaXR5O1xuICB3aGlsZSAodDEpIHtcbiAgICBpZiAodDEuX2NhbGwpIHtcbiAgICAgIGlmICh0aW1lID4gdDEuX3RpbWUpIHRpbWUgPSB0MS5fdGltZTtcbiAgICAgIHQwID0gdDEsIHQxID0gdDEuX25leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQyID0gdDEuX25leHQsIHQxLl9uZXh0ID0gbnVsbDtcbiAgICAgIHQxID0gdDAgPyB0MC5fbmV4dCA9IHQyIDogdGFza0hlYWQgPSB0MjtcbiAgICB9XG4gIH1cbiAgdGFza1RhaWwgPSB0MDtcbiAgc2xlZXAodGltZSk7XG59XG5cbmZ1bmN0aW9uIHNsZWVwKHRpbWUpIHtcbiAgaWYgKGZyYW1lKSByZXR1cm47IC8vIFNvb25lc3QgYWxhcm0gYWxyZWFkeSBzZXQsIG9yIHdpbGwgYmUuXG4gIGlmICh0aW1lb3V0KSB0aW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB2YXIgZGVsYXkgPSB0aW1lIC0gY2xvY2tOb3c7IC8vIFN0cmljdGx5IGxlc3MgdGhhbiBpZiB3ZSByZWNvbXB1dGVkIGNsb2NrTm93LlxuICBpZiAoZGVsYXkgPiAyNCkge1xuICAgIGlmICh0aW1lIDwgSW5maW5pdHkpIHRpbWVvdXQgPSBzZXRUaW1lb3V0KHdha2UsIHRpbWUgLSBjbG9jay5ub3coKSAtIGNsb2NrU2tldyk7XG4gICAgaWYgKGludGVydmFsKSBpbnRlcnZhbCA9IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICB9IGVsc2Uge1xuICAgIGlmICghaW50ZXJ2YWwpIGNsb2NrTGFzdCA9IGNsb2NrLm5vdygpLCBpbnRlcnZhbCA9IHNldEludGVydmFsKHBva2UsIHBva2VEZWxheSk7XG4gICAgZnJhbWUgPSAxLCBzZXRGcmFtZSh3YWtlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-timer/src/timer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/active.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/d3-transition/src/active.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition/index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\nvar root = [null];\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__.SCHEDULED && schedule.name === name) {\n return new _transition_index_js__WEBPACK_IMPORTED_MODULE_1__.Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2FjdGl2ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUQ7QUFDRTs7QUFFbkQ7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0Qyw4REFBUztBQUNyRCxtQkFBbUIsNERBQVU7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2FjdGl2ZS5qcz8zNzY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vdHJhbnNpdGlvbi9pbmRleC5qc1wiO1xuaW1wb3J0IHtTQ0hFRFVMRUR9IGZyb20gXCIuL3RyYW5zaXRpb24vc2NoZWR1bGUuanNcIjtcblxudmFyIHJvb3QgPSBbbnVsbF07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgc2NoZWR1bGUsXG4gICAgICBpO1xuXG4gIGlmIChzY2hlZHVsZXMpIHtcbiAgICBuYW1lID0gbmFtZSA9PSBudWxsID8gbnVsbCA6IG5hbWUgKyBcIlwiO1xuICAgIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICAgIGlmICgoc2NoZWR1bGUgPSBzY2hlZHVsZXNbaV0pLnN0YXRlID4gU0NIRURVTEVEICYmIHNjaGVkdWxlLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKFtbbm9kZV1dLCByb290LCBuYW1lLCAraSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/active.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/d3-transition/src/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"active\": () => (/* reexport safe */ _active_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ \"interrupt\": () => (/* reexport safe */ _interrupt_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ \"transition\": () => (/* reexport safe */ _transition_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _selection_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./selection/index.js */ \"../../../node_modules/d3-transition/src/selection/index.js\");\n/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transition/index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _active_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./active.js */ \"../../../node_modules/d3-transition/src/active.js\");\n/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interrupt.js */ \"../../../node_modules/d3-transition/src/interrupt.js\");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBOEI7QUFDOEI7QUFDZDtBQUNNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9pbmRleC5qcz80ZDRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vc2VsZWN0aW9uL2luZGV4LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdHJhbnNpdGlvbn0gZnJvbSBcIi4vdHJhbnNpdGlvbi9pbmRleC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGFjdGl2ZX0gZnJvbSBcIi4vYWN0aXZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW50ZXJydXB0fSBmcm9tIFwiLi9pbnRlcnJ1cHQuanNcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/interrupt.js": +/*!************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/interrupt.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transition/schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__.STARTING && schedule.state < _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__.ENDING;\n schedule.state = _transition_schedule_js__WEBPACK_IMPORTED_MODULE_0__.ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2ludGVycnVwdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFpRTs7QUFFakUsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLG1EQUFtRCxlQUFlO0FBQ2xFLDhCQUE4Qiw2REFBUSxxQkFBcUIsMkRBQU07QUFDakUscUJBQXFCLDBEQUFLO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2ludGVycnVwdC5qcz9lMjQ0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U1RBUlRJTkcsIEVORElORywgRU5ERUR9IGZyb20gXCIuL3RyYW5zaXRpb24vc2NoZWR1bGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgbmFtZSkge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICBzY2hlZHVsZSxcbiAgICAgIGFjdGl2ZSxcbiAgICAgIGVtcHR5ID0gdHJ1ZSxcbiAgICAgIGk7XG5cbiAgaWYgKCFzY2hlZHVsZXMpIHJldHVybjtcblxuICBuYW1lID0gbmFtZSA9PSBudWxsID8gbnVsbCA6IG5hbWUgKyBcIlwiO1xuXG4gIGZvciAoaSBpbiBzY2hlZHVsZXMpIHtcbiAgICBpZiAoKHNjaGVkdWxlID0gc2NoZWR1bGVzW2ldKS5uYW1lICE9PSBuYW1lKSB7IGVtcHR5ID0gZmFsc2U7IGNvbnRpbnVlOyB9XG4gICAgYWN0aXZlID0gc2NoZWR1bGUuc3RhdGUgPiBTVEFSVElORyAmJiBzY2hlZHVsZS5zdGF0ZSA8IEVORElORztcbiAgICBzY2hlZHVsZS5zdGF0ZSA9IEVOREVEO1xuICAgIHNjaGVkdWxlLnRpbWVyLnN0b3AoKTtcbiAgICBzY2hlZHVsZS5vbi5jYWxsKGFjdGl2ZSA/IFwiaW50ZXJydXB0XCIgOiBcImNhbmNlbFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzY2hlZHVsZS5pbmRleCwgc2NoZWR1bGUuZ3JvdXApO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gIH1cblxuICBpZiAoZW1wdHkpIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/interrupt.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/selection/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/selection/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interrupt.js */ \"../../../node_modules/d3-transition/src/selection/interrupt.js\");\n/* harmony import */ var _transition_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transition.js */ \"../../../node_modules/d3-transition/src/selection/transition.js\");\n\n\n\n\nd3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype.interrupt = _interrupt_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nd3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype.transition = _transition_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQXVDO0FBQ1U7QUFDRTs7QUFFbkQsd0VBQTZCLEdBQUcscURBQW1CO0FBQ25ELHlFQUE4QixHQUFHLHNEQUFvQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzP2RlZmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCBzZWxlY3Rpb25faW50ZXJydXB0IGZyb20gXCIuL2ludGVycnVwdC5qc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl90cmFuc2l0aW9uIGZyb20gXCIuL3RyYW5zaXRpb24uanNcIjtcblxuc2VsZWN0aW9uLnByb3RvdHlwZS5pbnRlcnJ1cHQgPSBzZWxlY3Rpb25faW50ZXJydXB0O1xuc2VsZWN0aW9uLnByb3RvdHlwZS50cmFuc2l0aW9uID0gc2VsZWN0aW9uX3RyYW5zaXRpb247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/selection/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/selection/interrupt.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/selection/interrupt.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _interrupt_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../interrupt.js */ \"../../../node_modules/d3-transition/src/interrupt.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n return this.each(function() {\n (0,_interrupt_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, name);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi9pbnRlcnJ1cHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7O0FBRXhDLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0EsSUFBSSx5REFBUztBQUNiLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2ludGVycnVwdC5qcz9mZTcwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnRlcnJ1cHQgZnJvbSBcIi4uL2ludGVycnVwdC5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgaW50ZXJydXB0KHRoaXMsIG5hbWUpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/selection/interrupt.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/selection/transition.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/selection/transition.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transition/index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _transition_schedule_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../transition/schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-ease */ \"../../../node_modules/d3-ease/src/cubic.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-timer */ \"../../../node_modules/d3-timer/src/timer.js\");\n\n\n\n\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: d3_ease__WEBPACK_IMPORTED_MODULE_0__.cubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name) {\n var id,\n timing;\n\n if (name instanceof _transition_index_js__WEBPACK_IMPORTED_MODULE_1__.Transition) {\n id = name._id, name = name._name;\n } else {\n id = (0,_transition_index_js__WEBPACK_IMPORTED_MODULE_1__.newId)(), (timing = defaultTiming).time = (0,d3_timer__WEBPACK_IMPORTED_MODULE_2__.now)(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n (0,_transition_schedule_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new _transition_index_js__WEBPACK_IMPORTED_MODULE_1__.Transition(groups, this._parents, name, id);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi90cmFuc2l0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXlEO0FBQ1I7QUFDVjtBQUNWOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0NBQWM7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsSUFBSTtBQUN4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBOztBQUVBLHNCQUFzQiw0REFBVTtBQUNoQztBQUNBLElBQUk7QUFDSixTQUFTLDJEQUFLLG9DQUFvQyw2Q0FBRztBQUNyRDs7QUFFQSw0REFBNEQsT0FBTztBQUNuRSwrREFBK0QsT0FBTztBQUN0RTtBQUNBLFFBQVEsbUVBQVE7QUFDaEI7QUFDQTtBQUNBOztBQUVBLGFBQWEsNERBQVU7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3NlbGVjdGlvbi90cmFuc2l0aW9uLmpzPzMwMmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2l0aW9uLCBuZXdJZH0gZnJvbSBcIi4uL3RyYW5zaXRpb24vaW5kZXguanNcIjtcbmltcG9ydCBzY2hlZHVsZSBmcm9tIFwiLi4vdHJhbnNpdGlvbi9zY2hlZHVsZS5qc1wiO1xuaW1wb3J0IHtlYXNlQ3ViaWNJbk91dH0gZnJvbSBcImQzLWVhc2VcIjtcbmltcG9ydCB7bm93fSBmcm9tIFwiZDMtdGltZXJcIjtcblxudmFyIGRlZmF1bHRUaW1pbmcgPSB7XG4gIHRpbWU6IG51bGwsIC8vIFNldCBvbiB1c2UuXG4gIGRlbGF5OiAwLFxuICBkdXJhdGlvbjogMjUwLFxuICBlYXNlOiBlYXNlQ3ViaWNJbk91dFxufTtcblxuZnVuY3Rpb24gaW5oZXJpdChub2RlLCBpZCkge1xuICB2YXIgdGltaW5nO1xuICB3aGlsZSAoISh0aW1pbmcgPSBub2RlLl9fdHJhbnNpdGlvbikgfHwgISh0aW1pbmcgPSB0aW1pbmdbaWRdKSkge1xuICAgIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHRyYW5zaXRpb24gJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aW1pbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIGlkLFxuICAgICAgdGltaW5nO1xuXG4gIGlmIChuYW1lIGluc3RhbmNlb2YgVHJhbnNpdGlvbikge1xuICAgIGlkID0gbmFtZS5faWQsIG5hbWUgPSBuYW1lLl9uYW1lO1xuICB9IGVsc2Uge1xuICAgIGlkID0gbmV3SWQoKSwgKHRpbWluZyA9IGRlZmF1bHRUaW1pbmcpLnRpbWUgPSBub3coKSwgbmFtZSA9IG5hbWUgPT0gbnVsbCA/IG51bGwgOiBuYW1lICsgXCJcIjtcbiAgfVxuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIHNjaGVkdWxlKG5vZGUsIG5hbWUsIGlkLCBpLCBncm91cCwgdGltaW5nIHx8IGluaGVyaXQobm9kZSwgaWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/selection/transition.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/attr.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/attr.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/namespace.js\");\n/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tween.js */ \"../../../node_modules/d3-transition/src/transition/tween.js\");\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interpolate.js */ \"../../../node_modules/d3-transition/src/transition/interpolate.js\");\n\n\n\n\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n var fullname = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name), i = fullname === \"transform\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_1__.interpolateTransformSvg : _interpolate_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, (0,_tween_js__WEBPACK_IMPORTED_MODULE_3__.tweenValue)(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0ci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRTtBQUN4QztBQUNEO0FBQ0s7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCLGlCQUFpQix3REFBUyx1Q0FBdUMsbUVBQW9CLEdBQUcsdURBQVc7QUFDbkc7QUFDQSxzRUFBc0UscURBQVU7QUFDaEY7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL2F0dHIuanM/YTYzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtU3ZnIGFzIGludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7bmFtZXNwYWNlfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuLmpzXCI7XG5pbXBvcnQgaW50ZXJwb2xhdGUgZnJvbSBcIi4vaW50ZXJwb2xhdGUuanNcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50TlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZTEpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMSA9IHZhbHVlMSArIFwiXCIsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCA9IHRoaXMuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgc3RyaW5nMDAsXG4gICAgICBzdHJpbmcxMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdHJpbmcwLCB2YWx1ZTEgPSB2YWx1ZSh0aGlzKSwgc3RyaW5nMTtcbiAgICBpZiAodmFsdWUxID09IG51bGwpIHJldHVybiB2b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIHN0cmluZzAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIjtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IChzdHJpbmcxMCA9IHN0cmluZzEsIGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUpIHtcbiAgdmFyIHN0cmluZzAwLFxuICAgICAgc3RyaW5nMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RyaW5nMCwgdmFsdWUxID0gdmFsdWUodGhpcyksIHN0cmluZzE7XG4gICAgaWYgKHZhbHVlMSA9PSBudWxsKSByZXR1cm4gdm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgc3RyaW5nMCA9IHRoaXMuZ2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIjtcbiAgICByZXR1cm4gc3RyaW5nMCA9PT0gc3RyaW5nMSA/IG51bGxcbiAgICAgICAgOiBzdHJpbmcwID09PSBzdHJpbmcwMCAmJiBzdHJpbmcxID09PSBzdHJpbmcxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IChzdHJpbmcxMCA9IHN0cmluZzEsIGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHN0cmluZzAwID0gc3RyaW5nMCwgdmFsdWUxKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKSwgaSA9IGZ1bGxuYW1lID09PSBcInRyYW5zZm9ybVwiID8gaW50ZXJwb2xhdGVUcmFuc2Zvcm0gOiBpbnRlcnBvbGF0ZTtcbiAgcmV0dXJuIHRoaXMuYXR0clR3ZWVuKG5hbWUsIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJGdW5jdGlvbk5TIDogYXR0ckZ1bmN0aW9uKShmdWxsbmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcImF0dHIuXCIgKyBuYW1lLCB2YWx1ZSkpXG4gICAgICA6IHZhbHVlID09IG51bGwgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKShmdWxsbmFtZSlcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKGZ1bGxuYW1lLCBpLCB2YWx1ZSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/attr.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/attrTween.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/attrTween.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/namespace.js\");\n\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0clR3ZWVuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsd0RBQVM7QUFDMUI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyVHdlZW4uanM/MWUzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge25hbWVzcGFjZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBhdHRySW50ZXJwb2xhdGUobmFtZSwgaSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKG5hbWUsIGkuY2FsbCh0aGlzLCB0KSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJJbnRlcnBvbGF0ZU5TKGZ1bGxuYW1lLCBpKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIGkuY2FsbCh0aGlzLCB0KSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJUd2Vlbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICB2YXIgdDAsIGkwO1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGkgIT09IGkwKSB0MCA9IChpMCA9IGkpICYmIGF0dHJJbnRlcnBvbGF0ZU5TKGZ1bGxuYW1lLCBpKTtcbiAgICByZXR1cm4gdDA7XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZnVuY3Rpb24gYXR0clR3ZWVuKG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0MCwgaTA7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBpID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoaSAhPT0gaTApIHQwID0gKGkwID0gaSkgJiYgYXR0ckludGVycG9sYXRlKG5hbWUsIGkpO1xuICAgIHJldHVybiB0MDtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIga2V5ID0gXCJhdHRyLlwiICsgbmFtZTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgKGZ1bGxuYW1lLmxvY2FsID8gYXR0clR3ZWVuTlMgOiBhdHRyVHdlZW4pKGZ1bGxuYW1lLCB2YWx1ZSkpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/attrTween.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/delay.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/delay.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction delayFunction(id, value) {\n return function() {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.init)(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.init)(this, id).delay = value;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(this.node(), id).delay;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7O0FBRXhDO0FBQ0E7QUFDQSxJQUFJLGtEQUFJO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxrREFBSTtBQUNSO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFHO0FBQ1giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanM/NjdmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldCwgaW5pdH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gZGVsYXlGdW5jdGlvbihpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGluaXQodGhpcywgaWQpLmRlbGF5ID0gK3ZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlbGF5Q29uc3RhbnQoaWQsIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9ICt2YWx1ZSwgZnVuY3Rpb24oKSB7XG4gICAgaW5pdCh0aGlzLCBpZCkuZGVsYXkgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gZGVsYXlGdW5jdGlvblxuICAgICAgICAgIDogZGVsYXlDb25zdGFudCkoaWQsIHZhbHVlKSlcbiAgICAgIDogZ2V0KHRoaXMubm9kZSgpLCBpZCkuZGVsYXk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/delay.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/duration.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/duration.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction durationFunction(id, value) {\n return function() {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id).duration = value;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(this.node(), id).duration;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZHVyYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7O0FBRXZDO0FBQ0E7QUFDQSxJQUFJLGlEQUFHO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxpREFBRztBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFHO0FBQ1giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZHVyYXRpb24uanM/ZGY5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldCwgc2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBkdXJhdGlvbkZ1bmN0aW9uKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgc2V0KHRoaXMsIGlkKS5kdXJhdGlvbiA9ICt2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkdXJhdGlvbkNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPSArdmFsdWUsIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZHVyYXRpb24gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKCh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gZHVyYXRpb25GdW5jdGlvblxuICAgICAgICAgIDogZHVyYXRpb25Db25zdGFudCkoaWQsIHZhbHVlKSlcbiAgICAgIDogZ2V0KHRoaXMubm9kZSgpLCBpZCkuZHVyYXRpb247XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/duration.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/ease.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/ease.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id).ease = value;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(this.node(), id).ease;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZWFzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0EsSUFBSSxpREFBRztBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7O0FBRUE7QUFDQTtBQUNBLFFBQVEsaURBQUc7QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lYXNlLmpzPzk4ZjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZWFzZSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmVhc2U7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/ease.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/easeVarying.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/easeVarying.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id).ease = v;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZWFzZVZhcnlpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxpREFBRztBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL2Vhc2VWYXJ5aW5nLmpzP2U3YjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmZ1bmN0aW9uIGVhc2VWYXJ5aW5nKGlkLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh0eXBlb2YgdiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gICAgc2V0KHRoaXMsIGlkKS5lYXNlID0gdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiB0aGlzLmVhY2goZWFzZVZhcnlpbmcodGhpcy5faWQsIHZhbHVlKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/easeVarying.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/end.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/end.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZW5kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDOztBQUVsQyw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEMsZUFBZSxvQkFBb0I7O0FBRW5DO0FBQ0EscUJBQXFCLGlEQUFHO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9lbmQuanM/YTM3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3NldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBvbjAsIG9uMSwgdGhhdCA9IHRoaXMsIGlkID0gdGhhdC5faWQsIHNpemUgPSB0aGF0LnNpemUoKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBjYW5jZWwgPSB7dmFsdWU6IHJlamVjdH0sXG4gICAgICAgIGVuZCA9IHt2YWx1ZTogZnVuY3Rpb24oKSB7IGlmICgtLXNpemUgPT09IDApIHJlc29sdmUoKTsgfX07XG5cbiAgICB0aGF0LmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICAgIG9uID0gc2NoZWR1bGUub247XG5cbiAgICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgYSBkaXNwYXRjaCB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgICAvLyBPdGhlcndpc2UsIGNvcHktb24td3JpdGUuXG4gICAgICBpZiAob24gIT09IG9uMCkge1xuICAgICAgICBvbjEgPSAob24wID0gb24pLmNvcHkoKTtcbiAgICAgICAgb24xLl8uY2FuY2VsLnB1c2goY2FuY2VsKTtcbiAgICAgICAgb24xLl8uaW50ZXJydXB0LnB1c2goY2FuY2VsKTtcbiAgICAgICAgb24xLl8uZW5kLnB1c2goZW5kKTtcbiAgICAgIH1cblxuICAgICAgc2NoZWR1bGUub24gPSBvbjE7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgc2VsZWN0aW9uIHdhcyBlbXB0eSwgcmVzb2x2ZSBlbmQgaW1tZWRpYXRlbHlcbiAgICBpZiAoc2l6ZSA9PT0gMCkgcmVzb2x2ZSgpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/end.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/filter.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/filter.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/matcher.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(match) {\n if (typeof match !== \"function\") match = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_1__.Transition(subgroups, this._parents, this._name, this._id);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZmlsdGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFxQztBQUNDOztBQUV0Qyw2QkFBZSxvQ0FBUztBQUN4QiwyQ0FBMkMsd0RBQU87O0FBRWxELHNGQUFzRixPQUFPO0FBQzdGLDZGQUE2RixPQUFPO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxpREFBVTtBQUN2QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanM/ODc2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21hdGNoZXJ9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMsIHRoaXMuX25hbWUsIHRoaXMuX2lkKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/filter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Transition\": () => (/* binding */ Transition),\n/* harmony export */ \"default\": () => (/* binding */ transition),\n/* harmony export */ \"newId\": () => (/* binding */ newId)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n/* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./attr.js */ \"../../../node_modules/d3-transition/src/transition/attr.js\");\n/* harmony import */ var _attrTween_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./attrTween.js */ \"../../../node_modules/d3-transition/src/transition/attrTween.js\");\n/* harmony import */ var _delay_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./delay.js */ \"../../../node_modules/d3-transition/src/transition/delay.js\");\n/* harmony import */ var _duration_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./duration.js */ \"../../../node_modules/d3-transition/src/transition/duration.js\");\n/* harmony import */ var _ease_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ease.js */ \"../../../node_modules/d3-transition/src/transition/ease.js\");\n/* harmony import */ var _easeVarying_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./easeVarying.js */ \"../../../node_modules/d3-transition/src/transition/easeVarying.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filter.js */ \"../../../node_modules/d3-transition/src/transition/filter.js\");\n/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./merge.js */ \"../../../node_modules/d3-transition/src/transition/merge.js\");\n/* harmony import */ var _on_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./on.js */ \"../../../node_modules/d3-transition/src/transition/on.js\");\n/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./remove.js */ \"../../../node_modules/d3-transition/src/transition/remove.js\");\n/* harmony import */ var _select_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./select.js */ \"../../../node_modules/d3-transition/src/transition/select.js\");\n/* harmony import */ var _selectAll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selectAll.js */ \"../../../node_modules/d3-transition/src/transition/selectAll.js\");\n/* harmony import */ var _selection_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./selection.js */ \"../../../node_modules/d3-transition/src/transition/selection.js\");\n/* harmony import */ var _style_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./style.js */ \"../../../node_modules/d3-transition/src/transition/style.js\");\n/* harmony import */ var _styleTween_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styleTween.js */ \"../../../node_modules/d3-transition/src/transition/styleTween.js\");\n/* harmony import */ var _text_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./text.js */ \"../../../node_modules/d3-transition/src/transition/text.js\");\n/* harmony import */ var _textTween_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./textTween.js */ \"../../../node_modules/d3-transition/src/transition/textTween.js\");\n/* harmony import */ var _transition_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./transition.js */ \"../../../node_modules/d3-transition/src/transition/transition.js\");\n/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./tween.js */ \"../../../node_modules/d3-transition/src/transition/tween.js\");\n/* harmony import */ var _end_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./end.js */ \"../../../node_modules/d3-transition/src/transition/end.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction transition(name) {\n return (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])().transition(name);\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: _select_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n selectAll: _selectAll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: _filter_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n merge: _merge_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n selection: _selection_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n transition: _transition_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: _on_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n attr: _attr_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n attrTween: _attrTween_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n style: _style_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n styleTween: _styleTween_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n text: _text_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n textTween: _textTween_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"],\n remove: _remove_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n tween: _tween_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n delay: _delay_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n duration: _duration_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n ease: _ease_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n easeVarying: _easeVarying_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n end: _end_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ0M7QUFDVTtBQUNSO0FBQ007QUFDUjtBQUNjO0FBQ1Y7QUFDRjtBQUNOO0FBQ1E7QUFDQTtBQUNNO0FBQ0E7QUFDUjtBQUNVO0FBQ1o7QUFDVTtBQUNFO0FBQ1Y7QUFDSjs7QUFFdEM7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVlO0FBQ2YsU0FBUyx3REFBUztBQUNsQjs7QUFFTztBQUNQO0FBQ0E7O0FBRUEsMEJBQTBCLDhEQUFtQjs7QUFFN0M7QUFDQTtBQUNBLFVBQVUsa0RBQWlCO0FBQzNCLGFBQWEscURBQW9CO0FBQ2pDO0FBQ0E7QUFDQSxVQUFVLGtEQUFpQjtBQUMzQixTQUFTLGlEQUFnQjtBQUN6QixhQUFhLHFEQUFvQjtBQUNqQyxjQUFjLHNEQUFxQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUFhO0FBQ25CLFFBQVEsZ0RBQWU7QUFDdkIsYUFBYSxxREFBb0I7QUFDakMsU0FBUyxrREFBZ0I7QUFDekIsY0FBYyx1REFBcUI7QUFDbkMsUUFBUSxpREFBZTtBQUN2QixhQUFhLHNEQUFvQjtBQUNqQyxVQUFVLG1EQUFpQjtBQUMzQixTQUFTLGtEQUFnQjtBQUN6QixTQUFTLGtEQUFnQjtBQUN6QixZQUFZLHFEQUFtQjtBQUMvQixRQUFRLGlEQUFlO0FBQ3ZCLGVBQWUsd0RBQXNCO0FBQ3JDLE9BQU8sZ0RBQWM7QUFDckI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9pbmRleC5qcz82ZDg0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2VsZWN0aW9ufSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9hdHRyIGZyb20gXCIuL2F0dHIuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2F0dHJUd2VlbiBmcm9tIFwiLi9hdHRyVHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2RlbGF5IGZyb20gXCIuL2RlbGF5LmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9kdXJhdGlvbiBmcm9tIFwiLi9kdXJhdGlvbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZWFzZSBmcm9tIFwiLi9lYXNlLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9lYXNlVmFyeWluZyBmcm9tIFwiLi9lYXNlVmFyeWluZy5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlci5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2UuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX29uIGZyb20gXCIuL29uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0LmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZS5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fc3R5bGVUd2VlbiBmcm9tIFwiLi9zdHlsZVR3ZWVuLmpzXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90ZXh0IGZyb20gXCIuL3RleHQuanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RleHRUd2VlbiBmcm9tIFwiLi90ZXh0VHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvbi5qc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHdlZW4gZnJvbSBcIi4vdHdlZW4uanNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX2VuZCBmcm9tIFwiLi9lbmQuanNcIjtcblxudmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFRyYW5zaXRpb24oZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCkge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xuICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgdGhpcy5faWQgPSBpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3Rpb24oKS50cmFuc2l0aW9uKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuXG52YXIgc2VsZWN0aW9uX3Byb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGU7XG5cblRyYW5zaXRpb24ucHJvdG90eXBlID0gdHJhbnNpdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2l0aW9uLFxuICBzZWxlY3Q6IHRyYW5zaXRpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHRyYW5zaXRpb25fc2VsZWN0QWxsLFxuICBzZWxlY3RDaGlsZDogc2VsZWN0aW9uX3Byb3RvdHlwZS5zZWxlY3RDaGlsZCxcbiAgc2VsZWN0Q2hpbGRyZW46IHNlbGVjdGlvbl9wcm90b3R5cGUuc2VsZWN0Q2hpbGRyZW4sXG4gIGZpbHRlcjogdHJhbnNpdGlvbl9maWx0ZXIsXG4gIG1lcmdlOiB0cmFuc2l0aW9uX21lcmdlLFxuICBzZWxlY3Rpb246IHRyYW5zaXRpb25fc2VsZWN0aW9uLFxuICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uX3RyYW5zaXRpb24sXG4gIGNhbGw6IHNlbGVjdGlvbl9wcm90b3R5cGUuY2FsbCxcbiAgbm9kZXM6IHNlbGVjdGlvbl9wcm90b3R5cGUubm9kZXMsXG4gIG5vZGU6IHNlbGVjdGlvbl9wcm90b3R5cGUubm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3Byb3RvdHlwZS5zaXplLFxuICBlbXB0eTogc2VsZWN0aW9uX3Byb3RvdHlwZS5lbXB0eSxcbiAgZWFjaDogc2VsZWN0aW9uX3Byb3RvdHlwZS5lYWNoLFxuICBvbjogdHJhbnNpdGlvbl9vbixcbiAgYXR0cjogdHJhbnNpdGlvbl9hdHRyLFxuICBhdHRyVHdlZW46IHRyYW5zaXRpb25fYXR0clR3ZWVuLFxuICBzdHlsZTogdHJhbnNpdGlvbl9zdHlsZSxcbiAgc3R5bGVUd2VlbjogdHJhbnNpdGlvbl9zdHlsZVR3ZWVuLFxuICB0ZXh0OiB0cmFuc2l0aW9uX3RleHQsXG4gIHRleHRUd2VlbjogdHJhbnNpdGlvbl90ZXh0VHdlZW4sXG4gIHJlbW92ZTogdHJhbnNpdGlvbl9yZW1vdmUsXG4gIHR3ZWVuOiB0cmFuc2l0aW9uX3R3ZWVuLFxuICBkZWxheTogdHJhbnNpdGlvbl9kZWxheSxcbiAgZHVyYXRpb246IHRyYW5zaXRpb25fZHVyYXRpb24sXG4gIGVhc2U6IHRyYW5zaXRpb25fZWFzZSxcbiAgZWFzZVZhcnlpbmc6IHRyYW5zaXRpb25fZWFzZVZhcnlpbmcsXG4gIGVuZDogdHJhbnNpdGlvbl9lbmQsXG4gIFtTeW1ib2wuaXRlcmF0b3JdOiBzZWxlY3Rpb25fcHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/interpolate.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/interpolate.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/color.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/number.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/rgb.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/string.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(a, b) {\n var c;\n return (typeof b === \"number\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n : b instanceof d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? d3_interpolate__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n : (c = (0,d3_color__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(b)) ? (b = c, d3_interpolate__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n : d3_interpolate__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(a, b);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0I7QUFDcUQ7O0FBRXBGLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0Esa0NBQWtDLHNEQUFpQjtBQUNuRCxxQkFBcUIsZ0RBQUssR0FBRyxzREFBYztBQUMzQyxhQUFhLG9EQUFLLGVBQWUsc0RBQWM7QUFDL0MsUUFBUSxzREFBaUI7QUFDekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanM/MzhjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbG9yfSBmcm9tIFwiZDMtY29sb3JcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVOdW1iZXIsIGludGVycG9sYXRlUmdiLCBpbnRlcnBvbGF0ZVN0cmluZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGM7XG4gIHJldHVybiAodHlwZW9mIGIgPT09IFwibnVtYmVyXCIgPyBpbnRlcnBvbGF0ZU51bWJlclxuICAgICAgOiBiIGluc3RhbmNlb2YgY29sb3IgPyBpbnRlcnBvbGF0ZVJnYlxuICAgICAgOiAoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgaW50ZXJwb2xhdGVSZ2IpXG4gICAgICA6IGludGVycG9sYXRlU3RyaW5nKShhLCBiKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/interpolate.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/merge.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/merge.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Transition(merges, this._parents, this._name, this._id);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vbWVyZ2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0M7O0FBRXRDLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBLGdLQUFnSyxPQUFPO0FBQ3ZLLHlIQUF5SCxPQUFPO0FBQ2hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxRQUFRO0FBQ2pCO0FBQ0E7O0FBRUEsYUFBYSxpREFBVTtBQUN2QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9tZXJnZS5qcz85ZTJjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHJhbnNpdGlvbikge1xuICBpZiAodHJhbnNpdGlvbi5faWQgIT09IHRoaXMuX2lkKSB0aHJvdyBuZXcgRXJyb3I7XG5cbiAgZm9yICh2YXIgZ3JvdXBzMCA9IHRoaXMuX2dyb3VwcywgZ3JvdXBzMSA9IHRyYW5zaXRpb24uX2dyb3VwcywgbTAgPSBncm91cHMwLmxlbmd0aCwgbTEgPSBncm91cHMxLmxlbmd0aCwgbSA9IE1hdGgubWluKG0wLCBtMSksIG1lcmdlcyA9IG5ldyBBcnJheShtMCksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAwID0gZ3JvdXBzMFtqXSwgZ3JvdXAxID0gZ3JvdXBzMVtqXSwgbiA9IGdyb3VwMC5sZW5ndGgsIG1lcmdlID0gbWVyZ2VzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cDBbaV0gfHwgZ3JvdXAxW2ldKSB7XG4gICAgICAgIG1lcmdlW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaiA8IG0wOyArK2opIHtcbiAgICBtZXJnZXNbal0gPSBncm91cHMwW2pdO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKG1lcmdlcywgdGhpcy5fcGFyZW50cywgdGhpcy5fbmFtZSwgdGhpcy5faWQpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/merge.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/on.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/on.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? _schedule_js__WEBPACK_IMPORTED_MODULE_0__.init : _schedule_js__WEBPACK_IMPORTED_MODULE_0__.set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxvQ0FBb0MsOENBQUksR0FBRyw2Q0FBRztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCOztBQUVBO0FBQ0EsUUFBUSxpREFBRztBQUNYO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vb24uanM/M2U5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldCwgc2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5mdW5jdGlvbiBzdGFydChuYW1lKSB7XG4gIHJldHVybiAobmFtZSArIFwiXCIpLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykuZXZlcnkoZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4gIXQgfHwgdCA9PT0gXCJzdGFydFwiO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25GdW5jdGlvbihpZCwgbmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG9uMCwgb24xLCBzaXQgPSBzdGFydChuYW1lKSA/IGluaXQgOiBzZXQ7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzaXQodGhpcywgaWQpLFxuICAgICAgICBvbiA9IHNjaGVkdWxlLm9uO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmIChvbiAhPT0gb24wKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKG5hbWUsIGxpc3RlbmVyKTtcblxuICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBsaXN0ZW5lcikge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDJcbiAgICAgID8gZ2V0KHRoaXMubm9kZSgpLCBpZCkub24ub24obmFtZSlcbiAgICAgIDogdGhpcy5lYWNoKG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/on.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/remove.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/remove.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vcmVtb3ZlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3JlbW92ZS5qcz9mMTcyIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHJlbW92ZUZ1bmN0aW9uKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlO1xuICAgIGZvciAodmFyIGkgaW4gdGhpcy5fX3RyYW5zaXRpb24pIGlmICgraSAhPT0gaWQpIHJldHVybjtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5vbihcImVuZC5yZW1vdmVcIiwgcmVtb3ZlRnVuY3Rpb24odGhpcy5faWQpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/remove.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/schedule.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/schedule.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CREATED\": () => (/* binding */ CREATED),\n/* harmony export */ \"ENDED\": () => (/* binding */ ENDED),\n/* harmony export */ \"ENDING\": () => (/* binding */ ENDING),\n/* harmony export */ \"RUNNING\": () => (/* binding */ RUNNING),\n/* harmony export */ \"SCHEDULED\": () => (/* binding */ SCHEDULED),\n/* harmony export */ \"STARTED\": () => (/* binding */ STARTED),\n/* harmony export */ \"STARTING\": () => (/* binding */ STARTING),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"get\": () => (/* binding */ get),\n/* harmony export */ \"init\": () => (/* binding */ init),\n/* harmony export */ \"set\": () => (/* binding */ set)\n/* harmony export */ });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-timer */ \"../../../node_modules/d3-timer/src/timer.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-timer */ \"../../../node_modules/d3-timer/src/timeout.js\");\n\n\n\nvar emptyOn = (0,d3_dispatch__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nfunction init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nfunction set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nfunction get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = (0,d3_timer__WEBPACK_IMPORTED_MODULE_1__.timer)(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return (0,d3_timer__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n (0,d3_timer__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2NoZWR1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUM7QUFDRzs7QUFFeEMsY0FBYyx1REFBUTtBQUN0Qjs7QUFFTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFUCw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRU87QUFDUDtBQUNBLDJEQUEyRDtBQUMzRDtBQUNBOztBQUVPO0FBQ1A7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFLOztBQUVwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxzQ0FBc0Msb0RBQU87O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseURBQXlEO0FBQ3pEO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0EsSUFBSSxvREFBTztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2NoZWR1bGUuanM/NDUzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7dGltZXIsIHRpbWVvdXR9IGZyb20gXCJkMy10aW1lclwiO1xuXG52YXIgZW1wdHlPbiA9IGRpc3BhdGNoKFwic3RhcnRcIiwgXCJlbmRcIiwgXCJjYW5jZWxcIiwgXCJpbnRlcnJ1cHRcIik7XG52YXIgZW1wdHlUd2VlbiA9IFtdO1xuXG5leHBvcnQgdmFyIENSRUFURUQgPSAwO1xuZXhwb3J0IHZhciBTQ0hFRFVMRUQgPSAxO1xuZXhwb3J0IHZhciBTVEFSVElORyA9IDI7XG5leHBvcnQgdmFyIFNUQVJURUQgPSAzO1xuZXhwb3J0IHZhciBSVU5OSU5HID0gNDtcbmV4cG9ydCB2YXIgRU5ESU5HID0gNTtcbmV4cG9ydCB2YXIgRU5ERUQgPSA2O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihub2RlLCBuYW1lLCBpZCwgaW5kZXgsIGdyb3VwLCB0aW1pbmcpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlcykgbm9kZS5fX3RyYW5zaXRpb24gPSB7fTtcbiAgZWxzZSBpZiAoaWQgaW4gc2NoZWR1bGVzKSByZXR1cm47XG4gIGNyZWF0ZShub2RlLCBpZCwge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgaW5kZXg6IGluZGV4LCAvLyBGb3IgY29udGV4dCBkdXJpbmcgY2FsbGJhY2suXG4gICAgZ3JvdXA6IGdyb3VwLCAvLyBGb3IgY29udGV4dCBkdXJpbmcgY2FsbGJhY2suXG4gICAgb246IGVtcHR5T24sXG4gICAgdHdlZW46IGVtcHR5VHdlZW4sXG4gICAgdGltZTogdGltaW5nLnRpbWUsXG4gICAgZGVsYXk6IHRpbWluZy5kZWxheSxcbiAgICBkdXJhdGlvbjogdGltaW5nLmR1cmF0aW9uLFxuICAgIGVhc2U6IHRpbWluZy5lYXNlLFxuICAgIHRpbWVyOiBudWxsLFxuICAgIHN0YXRlOiBDUkVBVEVEXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBnZXQobm9kZSwgaWQpO1xuICBpZiAoc2NoZWR1bGUuc3RhdGUgPiBDUkVBVEVEKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWRcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBnZXQobm9kZSwgaWQpO1xuICBpZiAoc2NoZWR1bGUuc3RhdGUgPiBTVEFSVEVEKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nXCIpO1xuICByZXR1cm4gc2NoZWR1bGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXQobm9kZSwgaWQpIHtcbiAgdmFyIHNjaGVkdWxlID0gbm9kZS5fX3RyYW5zaXRpb247XG4gIGlmICghc2NoZWR1bGUgfHwgIShzY2hlZHVsZSA9IHNjaGVkdWxlW2lkXSkpIHRocm93IG5ldyBFcnJvcihcInRyYW5zaXRpb24gbm90IGZvdW5kXCIpO1xuICByZXR1cm4gc2NoZWR1bGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZShub2RlLCBpZCwgc2VsZikge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb24sXG4gICAgICB0d2VlbjtcblxuICAvLyBJbml0aWFsaXplIHRoZSBzZWxmIHRpbWVyIHdoZW4gdGhlIHRyYW5zaXRpb24gaXMgY3JlYXRlZC5cbiAgLy8gTm90ZSB0aGUgYWN0dWFsIGRlbGF5IGlzIG5vdCBrbm93biB1bnRpbCB0aGUgZmlyc3QgY2FsbGJhY2shXG4gIHNjaGVkdWxlc1tpZF0gPSBzZWxmO1xuICBzZWxmLnRpbWVyID0gdGltZXIoc2NoZWR1bGUsIDAsIHNlbGYudGltZSk7XG5cbiAgZnVuY3Rpb24gc2NoZWR1bGUoZWxhcHNlZCkge1xuICAgIHNlbGYuc3RhdGUgPSBTQ0hFRFVMRUQ7XG4gICAgc2VsZi50aW1lci5yZXN0YXJ0KHN0YXJ0LCBzZWxmLmRlbGF5LCBzZWxmLnRpbWUpO1xuXG4gICAgLy8gSWYgdGhlIGVsYXBzZWQgZGVsYXkgaXMgbGVzcyB0aGFuIG91ciBmaXJzdCBzbGVlcCwgc3RhcnQgaW1tZWRpYXRlbHkuXG4gICAgaWYgKHNlbGYuZGVsYXkgPD0gZWxhcHNlZCkgc3RhcnQoZWxhcHNlZCAtIHNlbGYuZGVsYXkpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQoZWxhcHNlZCkge1xuICAgIHZhciBpLCBqLCBuLCBvO1xuXG4gICAgLy8gSWYgdGhlIHN0YXRlIGlzIG5vdCBTQ0hFRFVMRUQsIHRoZW4gd2UgcHJldmlvdXNseSBlcnJvcmVkIG9uIHN0YXJ0LlxuICAgIGlmIChzZWxmLnN0YXRlICE9PSBTQ0hFRFVMRUQpIHJldHVybiBzdG9wKCk7XG5cbiAgICBmb3IgKGkgaW4gc2NoZWR1bGVzKSB7XG4gICAgICBvID0gc2NoZWR1bGVzW2ldO1xuICAgICAgaWYgKG8ubmFtZSAhPT0gc2VsZi5uYW1lKSBjb250aW51ZTtcblxuICAgICAgLy8gV2hpbGUgdGhpcyBlbGVtZW50IGFscmVhZHkgaGFzIGEgc3RhcnRpbmcgdHJhbnNpdGlvbiBkdXJpbmcgdGhpcyBmcmFtZSxcbiAgICAgIC8vIGRlZmVyIHN0YXJ0aW5nIGFuIGludGVycnVwdGluZyB0cmFuc2l0aW9uIHVudGlsIHRoYXQgdHJhbnNpdGlvbiBoYXMgYVxuICAgICAgLy8gY2hhbmNlIHRvIHRpY2sgKGFuZCBwb3NzaWJseSBlbmQpOyBzZWUgZDMvZDMtdHJhbnNpdGlvbiM1NCFcbiAgICAgIGlmIChvLnN0YXRlID09PSBTVEFSVEVEKSByZXR1cm4gdGltZW91dChzdGFydCk7XG5cbiAgICAgIC8vIEludGVycnVwdCB0aGUgYWN0aXZlIHRyYW5zaXRpb24sIGlmIGFueS5cbiAgICAgIGlmIChvLnN0YXRlID09PSBSVU5OSU5HKSB7XG4gICAgICAgIG8uc3RhdGUgPSBFTkRFRDtcbiAgICAgICAgby50aW1lci5zdG9wKCk7XG4gICAgICAgIG8ub24uY2FsbChcImludGVycnVwdFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBvLmluZGV4LCBvLmdyb3VwKTtcbiAgICAgICAgZGVsZXRlIHNjaGVkdWxlc1tpXTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FuY2VsIGFueSBwcmUtZW1wdGVkIHRyYW5zaXRpb25zLlxuICAgICAgZWxzZSBpZiAoK2kgPCBpZCkge1xuICAgICAgICBvLnN0YXRlID0gRU5ERUQ7XG4gICAgICAgIG8udGltZXIuc3RvcCgpO1xuICAgICAgICBvLm9uLmNhbGwoXCJjYW5jZWxcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgby5pbmRleCwgby5ncm91cCk7XG4gICAgICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVmZXIgdGhlIGZpcnN0IHRpY2sgdG8gZW5kIG9mIHRoZSBjdXJyZW50IGZyYW1lOyBzZWUgZDMvZDMjMTU3Ni5cbiAgICAvLyBOb3RlIHRoZSB0cmFuc2l0aW9uIG1heSBiZSBjYW5jZWxlZCBhZnRlciBzdGFydCBhbmQgYmVmb3JlIHRoZSBmaXJzdCB0aWNrIVxuICAgIC8vIE5vdGUgdGhpcyBtdXN0IGJlIHNjaGVkdWxlZCBiZWZvcmUgdGhlIHN0YXJ0IGV2ZW50OyBzZWUgZDMvZDMtdHJhbnNpdGlvbiMxNiFcbiAgICAvLyBBc3N1bWluZyB0aGlzIGlzIHN1Y2Nlc3NmdWwsIHN1YnNlcXVlbnQgY2FsbGJhY2tzIGdvIHN0cmFpZ2h0IHRvIHRpY2suXG4gICAgdGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIGlmIChzZWxmLnN0YXRlID09PSBTVEFSVEVEKSB7XG4gICAgICAgIHNlbGYuc3RhdGUgPSBSVU5OSU5HO1xuICAgICAgICBzZWxmLnRpbWVyLnJlc3RhcnQodGljaywgc2VsZi5kZWxheSwgc2VsZi50aW1lKTtcbiAgICAgICAgdGljayhlbGFwc2VkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIERpc3BhdGNoIHRoZSBzdGFydCBldmVudC5cbiAgICAvLyBOb3RlIHRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgdHdlZW4gYXJlIGluaXRpYWxpemVkLlxuICAgIHNlbGYuc3RhdGUgPSBTVEFSVElORztcbiAgICBzZWxmLm9uLmNhbGwoXCJzdGFydFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKTtcbiAgICBpZiAoc2VsZi5zdGF0ZSAhPT0gU1RBUlRJTkcpIHJldHVybjsgLy8gaW50ZXJydXB0ZWRcbiAgICBzZWxmLnN0YXRlID0gU1RBUlRFRDtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHR3ZWVuLCBkZWxldGluZyBudWxsIHR3ZWVuLlxuICAgIHR3ZWVuID0gbmV3IEFycmF5KG4gPSBzZWxmLnR3ZWVuLmxlbmd0aCk7XG4gICAgZm9yIChpID0gMCwgaiA9IC0xOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobyA9IHNlbGYudHdlZW5baV0udmFsdWUuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKSkge1xuICAgICAgICB0d2VlblsrK2pdID0gbztcbiAgICAgIH1cbiAgICB9XG4gICAgdHdlZW4ubGVuZ3RoID0gaiArIDE7XG4gIH1cblxuICBmdW5jdGlvbiB0aWNrKGVsYXBzZWQpIHtcbiAgICB2YXIgdCA9IGVsYXBzZWQgPCBzZWxmLmR1cmF0aW9uID8gc2VsZi5lYXNlLmNhbGwobnVsbCwgZWxhcHNlZCAvIHNlbGYuZHVyYXRpb24pIDogKHNlbGYudGltZXIucmVzdGFydChzdG9wKSwgc2VsZi5zdGF0ZSA9IEVORElORywgMSksXG4gICAgICAgIGkgPSAtMSxcbiAgICAgICAgbiA9IHR3ZWVuLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICB0d2VlbltpXS5jYWxsKG5vZGUsIHQpO1xuICAgIH1cblxuICAgIC8vIERpc3BhdGNoIHRoZSBlbmQgZXZlbnQuXG4gICAgaWYgKHNlbGYuc3RhdGUgPT09IEVORElORykge1xuICAgICAgc2VsZi5vbi5jYWxsKFwiZW5kXCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIHNlbGYuaW5kZXgsIHNlbGYuZ3JvdXApO1xuICAgICAgc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgc2VsZi5zdGF0ZSA9IEVOREVEO1xuICAgIHNlbGYudGltZXIuc3RvcCgpO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaWRdO1xuICAgIGZvciAodmFyIGkgaW4gc2NoZWR1bGVzKSByZXR1cm47IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICBkZWxldGUgbm9kZS5fX3RyYW5zaXRpb247XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/schedule.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/select.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/select.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selector.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(subgroup[i], name, id, i, subgroup, (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__.get)(node, id));\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_2__.Transition(subgroups, this._parents, name, id);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBc0M7QUFDQTtBQUNNOztBQUU1Qyw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBOztBQUVBLDZDQUE2Qyx3REFBUTs7QUFFckQsc0ZBQXNGLE9BQU87QUFDN0YsZ0hBQWdILE9BQU87QUFDdkg7QUFDQTtBQUNBO0FBQ0EsUUFBUSx3REFBUSxxQ0FBcUMsaURBQUc7QUFDeEQ7QUFDQTtBQUNBOztBQUVBLGFBQWEsaURBQVU7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0LmpzP2ZkMWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZWxlY3Rvcn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQgPSB0aGlzLl9pZDtcblxuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvcihzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBuZXcgQXJyYXkobiksIG5vZGUsIHN1Ym5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgKHN1Ym5vZGUgPSBzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpKSB7XG4gICAgICAgIGlmIChcIl9fZGF0YV9fXCIgaW4gbm9kZSkgc3Vibm9kZS5fX2RhdGFfXyA9IG5vZGUuX19kYXRhX187XG4gICAgICAgIHN1Ymdyb3VwW2ldID0gc3Vibm9kZTtcbiAgICAgICAgc2NoZWR1bGUoc3ViZ3JvdXBbaV0sIG5hbWUsIGlkLCBpLCBzdWJncm91cCwgZ2V0KG5vZGUsIGlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/select.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/selectAll.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/selectAll.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selectorAll.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__.get)(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_2__.Transition(subgroups, parents, name, id);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0QWxsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBeUM7QUFDSDtBQUNNOztBQUU1Qyw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBOztBQUVBLDZDQUE2Qyx3REFBVzs7QUFFeEQsMEZBQTBGLE9BQU87QUFDakcsK0RBQStELE9BQU87QUFDdEU7QUFDQSx5RkFBeUYsaURBQUcsd0NBQXdDLE9BQU87QUFDM0k7QUFDQSxZQUFZLHdEQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsaURBQVU7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0QWxsLmpzPzdjYTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzZWxlY3RvckFsbH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtUcmFuc2l0aW9ufSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuaW1wb3J0IHNjaGVkdWxlLCB7Z2V0fSBmcm9tIFwiLi9zY2hlZHVsZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgdmFyIG5hbWUgPSB0aGlzLl9uYW1lLFxuICAgICAgaWQgPSB0aGlzLl9pZDtcblxuICBpZiAodHlwZW9mIHNlbGVjdCAhPT0gXCJmdW5jdGlvblwiKSBzZWxlY3QgPSBzZWxlY3RvckFsbChzZWxlY3QpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IFtdLCBwYXJlbnRzID0gW10sIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGZvciAodmFyIGNoaWxkcmVuID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApLCBjaGlsZCwgaW5oZXJpdCA9IGdldChub2RlLCBpZCksIGsgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBrIDwgbDsgKytrKSB7XG4gICAgICAgICAgaWYgKGNoaWxkID0gY2hpbGRyZW5ba10pIHtcbiAgICAgICAgICAgIHNjaGVkdWxlKGNoaWxkLCBuYW1lLCBpZCwgaywgY2hpbGRyZW4sIGluaGVyaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdWJncm91cHMucHVzaChjaGlsZHJlbik7XG4gICAgICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/selectAll.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/selection.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/selection.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selection/index.js\");\n\n\nvar Selection = d3_selection__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype.constructor;\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n return new Selection(this._groups, this._parents);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc2VsZWN0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXVDOztBQUV2QyxnQkFBZ0IsMEVBQStCOztBQUUvQyw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdGlvbi5qcz9jNWRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2VsZWN0aW9ufSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbnZhciBTZWxlY3Rpb24gPSBzZWxlY3Rpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZ3JvdXBzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/selection.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/style.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/style.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/transform/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/selection/style.js\");\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tween.js */ \"../../../node_modules/d3-transition/src/transition/tween.js\");\n/* harmony import */ var _interpolate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interpolate.js */ \"../../../node_modules/d3-transition/src/transition/interpolate.js\");\n\n\n\n\n\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__.styleValue)(this, name),\n string1 = (this.style.removeProperty(name), (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__.styleValue)(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__.styleValue)(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__.styleValue)(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), (0,d3_selection__WEBPACK_IMPORTED_MODULE_0__.styleValue)(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__.set)(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? d3_interpolate__WEBPACK_IMPORTED_MODULE_2__.interpolateTransformCss : _interpolate_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, (0,_tween_js__WEBPACK_IMPORTED_MODULE_4__.tweenValue)(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc3R5bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQStFO0FBQzVDO0FBQ0Q7QUFDSTtBQUNLOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHdEQUFLO0FBQ3ZCLG9EQUFvRCx3REFBSztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix3REFBSztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isd0RBQUs7QUFDdkI7QUFDQTtBQUNBLDZFQUE2RSx3REFBSztBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpREFBRztBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4Qix5Q0FBeUMsbUVBQW9CLEdBQUcsdURBQVc7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MscURBQVU7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9zdHlsZS5qcz8xNTRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgYXMgaW50ZXJwb2xhdGVUcmFuc2Zvcm19IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHtzdHlsZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtzZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5pbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuLmpzXCI7XG5pbXBvcnQgaW50ZXJwb2xhdGUgZnJvbSBcIi4vaW50ZXJwb2xhdGUuanNcIjtcblxuZnVuY3Rpb24gc3R5bGVOdWxsKG5hbWUsIGludGVycG9sYXRlKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSBzdHlsZSh0aGlzLCBuYW1lKSxcbiAgICAgICAgc3RyaW5nMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHN0cmluZzEwID0gc3RyaW5nMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlUmVtb3ZlKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlQ29uc3RhbnQobmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlMSkge1xuICB2YXIgc3RyaW5nMDAsXG4gICAgICBzdHJpbmcxID0gdmFsdWUxICsgXCJcIixcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdHJpbmcwID0gc3R5bGUodGhpcywgbmFtZSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN0eWxlRnVuY3Rpb24obmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlKSB7XG4gIHZhciBzdHJpbmcwMCxcbiAgICAgIHN0cmluZzEwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0cmluZzAgPSBzdHlsZSh0aGlzLCBuYW1lKSxcbiAgICAgICAgdmFsdWUxID0gdmFsdWUodGhpcyksXG4gICAgICAgIHN0cmluZzEgPSB2YWx1ZTEgKyBcIlwiO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgc3RyaW5nMSA9IHZhbHVlMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHN0cmluZzAgPT09IHN0cmluZzEgPyBudWxsXG4gICAgICAgIDogc3RyaW5nMCA9PT0gc3RyaW5nMDAgJiYgc3RyaW5nMSA9PT0gc3RyaW5nMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiAoc3RyaW5nMTAgPSBzdHJpbmcxLCBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZShzdHJpbmcwMCA9IHN0cmluZzAsIHZhbHVlMSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZU1heWJlUmVtb3ZlKGlkLCBuYW1lKSB7XG4gIHZhciBvbjAsIG9uMSwgbGlzdGVuZXIwLCBrZXkgPSBcInN0eWxlLlwiICsgbmFtZSwgZXZlbnQgPSBcImVuZC5cIiArIGtleSwgcmVtb3ZlO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgb24gPSBzY2hlZHVsZS5vbixcbiAgICAgICAgbGlzdGVuZXIgPSBzY2hlZHVsZS52YWx1ZVtrZXldID09IG51bGwgPyByZW1vdmUgfHwgKHJlbW92ZSA9IHN0eWxlUmVtb3ZlKG5hbWUpKSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgYSBkaXNwYXRjaCB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCBkaXNwYXRjaCBhbmQgd2XigJlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAob24gIT09IG9uMCB8fCBsaXN0ZW5lcjAgIT09IGxpc3RlbmVyKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKGV2ZW50LCBsaXN0ZW5lcjAgPSBsaXN0ZW5lcik7XG5cbiAgICBzY2hlZHVsZS5vbiA9IG9uMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciBpID0gKG5hbWUgKz0gXCJcIikgPT09IFwidHJhbnNmb3JtXCIgPyBpbnRlcnBvbGF0ZVRyYW5zZm9ybSA6IGludGVycG9sYXRlO1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/IHRoaXNcbiAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlTnVsbChuYW1lLCBpKSlcbiAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIHN0eWxlUmVtb3ZlKG5hbWUpKVxuICAgIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzXG4gICAgICAuc3R5bGVUd2VlbihuYW1lLCBzdHlsZUZ1bmN0aW9uKG5hbWUsIGksIHR3ZWVuVmFsdWUodGhpcywgXCJzdHlsZS5cIiArIG5hbWUsIHZhbHVlKSkpXG4gICAgICAuZWFjaChzdHlsZU1heWJlUmVtb3ZlKHRoaXMuX2lkLCBuYW1lKSlcbiAgICA6IHRoaXNcbiAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlQ29uc3RhbnQobmFtZSwgaSwgdmFsdWUpLCBwcmlvcml0eSlcbiAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIG51bGwpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/style.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/styleTween.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/styleTween.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc3R5bGVUd2Vlbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxvQ0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc3R5bGVUd2Vlbi5qcz8yM2ZlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHN0eWxlSW50ZXJwb2xhdGUobmFtZSwgaSwgcHJpb3JpdHkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIGkuY2FsbCh0aGlzLCB0KSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICB2YXIgdCwgaTA7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBpID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBpZiAoaSAhPT0gaTApIHQgPSAoaTAgPSBpKSAmJiBzdHlsZUludGVycG9sYXRlKG5hbWUsIGksIHByaW9yaXR5KTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleSA9IFwic3R5bGUuXCIgKyAobmFtZSArPSBcIlwiKTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gdGhpcy50d2VlbihrZXksIHN0eWxlVHdlZW4obmFtZSwgdmFsdWUsIHByaW9yaXR5ID09IG51bGwgPyBcIlwiIDogcHJpb3JpdHkpKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/styleTween.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/text.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/text.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _tween_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tween.js */ \"../../../node_modules/d3-transition/src/transition/tween.js\");\n\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction((0,_tween_js__WEBPACK_IMPORTED_MODULE_0__.tweenValue)(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQSxxQkFBcUIscURBQVU7QUFDL0I7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi90ZXh0LmpzPzQwY2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0d2VlblZhbHVlfSBmcm9tIFwiLi90d2Vlbi5qc1wiO1xuXG5mdW5jdGlvbiB0ZXh0Q29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGV4dEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUxID0gdmFsdWUodGhpcyk7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlMSA9PSBudWxsID8gXCJcIiA6IHZhbHVlMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMudHdlZW4oXCJ0ZXh0XCIsIHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IHRleHRGdW5jdGlvbih0d2VlblZhbHVlKHRoaXMsIFwidGV4dFwiLCB2YWx1ZSkpXG4gICAgICA6IHRleHRDb25zdGFudCh2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIikpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/textTween.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/textTween.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdGV4dFR3ZWVuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUFlLG9DQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi90ZXh0VHdlZW4uanM/N2VhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiB0ZXh0SW50ZXJwb2xhdGUoaSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSBpLmNhbGwodGhpcywgdCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRleHRUd2Vlbih2YWx1ZSkge1xuICB2YXIgdDAsIGkwO1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgaSA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgaWYgKGkgIT09IGkwKSB0MCA9IChpMCA9IGkpICYmIHRleHRJbnRlcnBvbGF0ZShpKTtcbiAgICByZXR1cm4gdDA7XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgdmFyIGtleSA9IFwidGV4dFwiO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHJldHVybiAoa2V5ID0gdGhpcy50d2VlbihrZXkpKSAmJiBrZXkuX3ZhbHVlO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBudWxsKTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3I7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgdGV4dFR3ZWVuKHZhbHVlKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/textTween.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/transition.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/transition.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.js */ \"../../../node_modules/d3-transition/src/transition/index.js\");\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var name = this._name,\n id0 = this._id,\n id1 = (0,_index_js__WEBPACK_IMPORTED_MODULE_0__.newId)();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__.get)(node, id0);\n (0,_schedule_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new _index_js__WEBPACK_IMPORTED_MODULE_0__.Transition(groups, this._parents, name, id1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNkM7QUFDRDs7QUFFNUMsNkJBQWUsc0NBQVc7QUFDMUI7QUFDQTtBQUNBLFlBQVksZ0RBQUs7O0FBRWpCLDREQUE0RCxPQUFPO0FBQ25FLCtEQUErRCxPQUFPO0FBQ3RFO0FBQ0Esc0JBQXNCLGlEQUFHO0FBQ3pCLFFBQVEsd0RBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBLGFBQWEsaURBQVU7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5qcz9lMGIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNpdGlvbiwgbmV3SWR9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5pbXBvcnQgc2NoZWR1bGUsIHtnZXR9IGZyb20gXCIuL3NjaGVkdWxlLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbmFtZSA9IHRoaXMuX25hbWUsXG4gICAgICBpZDAgPSB0aGlzLl9pZCxcbiAgICAgIGlkMSA9IG5ld0lkKCk7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBtID0gZ3JvdXBzLmxlbmd0aCwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgICAgdmFyIGluaGVyaXQgPSBnZXQobm9kZSwgaWQwKTtcbiAgICAgICAgc2NoZWR1bGUobm9kZSwgbmFtZSwgaWQxLCBpLCBncm91cCwge1xuICAgICAgICAgIHRpbWU6IGluaGVyaXQudGltZSArIGluaGVyaXQuZGVsYXkgKyBpbmhlcml0LmR1cmF0aW9uLFxuICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgIGR1cmF0aW9uOiBpbmhlcml0LmR1cmF0aW9uLFxuICAgICAgICAgIGVhc2U6IGluaGVyaXQuZWFzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCBuYW1lLCBpZDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/transition.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-transition/src/transition/tween.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/d3-transition/src/transition/tween.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"tweenValue\": () => (/* binding */ tweenValue)\n/* harmony export */ });\n/* harmony import */ var _schedule_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule.js */ \"../../../node_modules/d3-transition/src/transition/schedule.js\");\n\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nfunction tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.set)(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return (0,_schedule_js__WEBPACK_IMPORTED_MODULE_0__.get)(node, id).value[name];\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHdlZW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaURBQUc7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpREFBRztBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHlCQUF5Qiw0QkFBNEIsT0FBTztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0IsaURBQUc7QUFDbkIseUNBQXlDLE9BQU87QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBLG1CQUFtQixpREFBRztBQUN0QiwyQ0FBMkM7QUFDM0MsR0FBRzs7QUFFSDtBQUNBLFdBQVcsaURBQUc7QUFDZDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3R3ZWVuLmpzPzliN2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGUuanNcIjtcblxuZnVuY3Rpb24gdHdlZW5SZW1vdmUoaWQsIG5hbWUpIHtcbiAgdmFyIHR3ZWVuMCwgdHdlZW4xO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgdHdlZW4gPSBzY2hlZHVsZS50d2VlbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgdHdlZW4gd2l0aCB0aGUgcHJldmlvdXMgbm9kZSxcbiAgICAvLyBqdXN0IGFzc2lnbiB0aGUgdXBkYXRlZCBzaGFyZWQgdHdlZW4gYW5kIHdl4oCZcmUgZG9uZSFcbiAgICAvLyBPdGhlcndpc2UsIGNvcHktb24td3JpdGUuXG4gICAgaWYgKHR3ZWVuICE9PSB0d2VlbjApIHtcbiAgICAgIHR3ZWVuMSA9IHR3ZWVuMCA9IHR3ZWVuO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB0d2VlbjEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICh0d2VlbjFbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHR3ZWVuMSA9IHR3ZWVuMS5zbGljZSgpO1xuICAgICAgICAgIHR3ZWVuMS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzY2hlZHVsZS50d2VlbiA9IHR3ZWVuMTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdHdlZW5GdW5jdGlvbihpZCwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIHR3ZWVuMCwgdHdlZW4xO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCksXG4gICAgICAgIHR3ZWVuID0gc2NoZWR1bGUudHdlZW47XG5cbiAgICAvLyBJZiB0aGlzIG5vZGUgc2hhcmVkIHR3ZWVuIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIHR3ZWVuIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmICh0d2VlbiAhPT0gdHdlZW4wKSB7XG4gICAgICB0d2VlbjEgPSAodHdlZW4wID0gdHdlZW4pLnNsaWNlKCk7XG4gICAgICBmb3IgKHZhciB0ID0ge25hbWU6IG5hbWUsIHZhbHVlOiB2YWx1ZX0sIGkgPSAwLCBuID0gdHdlZW4xLmxlbmd0aDsgaSA8IG47ICsraSkge1xuICAgICAgICBpZiAodHdlZW4xW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICB0d2VlbjFbaV0gPSB0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSA9PT0gbikgdHdlZW4xLnB1c2godCk7XG4gICAgfVxuXG4gICAgc2NoZWR1bGUudHdlZW4gPSB0d2VlbjE7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIG5hbWUgKz0gXCJcIjtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgdHdlZW4gPSBnZXQodGhpcy5ub2RlKCksIGlkKS50d2VlbjtcbiAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR3ZWVuLmxlbmd0aCwgdDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKCh0ID0gdHdlZW5baV0pLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbCA/IHR3ZWVuUmVtb3ZlIDogdHdlZW5GdW5jdGlvbikoaWQsIG5hbWUsIHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0d2VlblZhbHVlKHRyYW5zaXRpb24sIG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZCA9IHRyYW5zaXRpb24uX2lkO1xuXG4gIHRyYW5zaXRpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpO1xuICAgIChzY2hlZHVsZS52YWx1ZSB8fCAoc2NoZWR1bGUudmFsdWUgPSB7fSkpW25hbWVdID0gdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICByZXR1cm4gZ2V0KG5vZGUsIGlkKS52YWx1ZVtuYW1lXTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-transition/src/transition/tween.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/constant.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/constant.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (x => () => x);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2NvbnN0YW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2NvbnN0YW50LmpzPzFjZWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgeCA9PiAoKSA9PiB4O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/event.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/event.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ZoomEvent)\n/* harmony export */ });\nfunction ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2V2ZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsV0FBVyxrREFBa0Q7QUFDN0Qsa0JBQWtCLHlEQUF5RDtBQUMzRSxhQUFhLG9EQUFvRDtBQUNqRSxnQkFBZ0IsdURBQXVEO0FBQ3ZFLFFBQVE7QUFDUixHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2V2ZW50LmpzP2VmYzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gWm9vbUV2ZW50KHR5cGUsIHtcbiAgc291cmNlRXZlbnQsXG4gIHRhcmdldCxcbiAgdHJhbnNmb3JtLFxuICBkaXNwYXRjaFxufSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLCB7XG4gICAgdHlwZToge3ZhbHVlOiB0eXBlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHNvdXJjZUV2ZW50OiB7dmFsdWU6IHNvdXJjZUV2ZW50LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9LFxuICAgIHRhcmdldDoge3ZhbHVlOiB0YXJnZXQsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0sXG4gICAgdHJhbnNmb3JtOiB7dmFsdWU6IHRyYW5zZm9ybSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSxcbiAgICBfOiB7dmFsdWU6IGRpc3BhdGNofVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/event.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/index.js": +/*!**************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/index.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ZoomTransform\": () => (/* reexport safe */ _transform_js__WEBPACK_IMPORTED_MODULE_1__.Transform),\n/* harmony export */ \"zoom\": () => (/* reexport safe */ _zoom_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ \"zoomIdentity\": () => (/* reexport safe */ _transform_js__WEBPACK_IMPORTED_MODULE_1__.identity),\n/* harmony export */ \"zoomTransform\": () => (/* reexport safe */ _transform_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _zoom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./zoom.js */ \"../../../node_modules/d3-zoom/src/zoom.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transform.js */ \"../../../node_modules/d3-zoom/src/transform.js\");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUNvRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZDMtem9vbS9zcmMvaW5kZXguanM/ZDdjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgem9vbX0gZnJvbSBcIi4vem9vbS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHpvb21UcmFuc2Zvcm0sIGlkZW50aXR5IGFzIHpvb21JZGVudGl0eSwgVHJhbnNmb3JtIGFzIFpvb21UcmFuc2Zvcm19IGZyb20gXCIuL3RyYW5zZm9ybS5qc1wiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/noevent.js": +/*!****************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/noevent.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ \"nopropagation\": () => (/* binding */ nopropagation)\n/* harmony export */ });\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL25vZXZlbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0E7O0FBRUEsNkJBQWUsb0NBQVM7QUFDeEI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy16b29tL3NyYy9ub2V2ZW50LmpzPzYxOTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIG5vcHJvcGFnYXRpb24oZXZlbnQpIHtcbiAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/noevent.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/transform.js": +/*!******************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/transform.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Transform\": () => (/* binding */ Transform),\n/* harmony export */ \"default\": () => (/* binding */ transform),\n/* harmony export */ \"identity\": () => (/* binding */ identity)\n/* harmony export */ });\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nvar identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nfunction transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3RyYW5zZm9ybS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVPOztBQUVQOztBQUVlO0FBQ2Y7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy16b29tL3NyYy90cmFuc2Zvcm0uanM/NzQyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gVHJhbnNmb3JtKGssIHgsIHkpIHtcbiAgdGhpcy5rID0gaztcbiAgdGhpcy54ID0geDtcbiAgdGhpcy55ID0geTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRyYW5zZm9ybSxcbiAgc2NhbGU6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gayA9PT0gMSA/IHRoaXMgOiBuZXcgVHJhbnNmb3JtKHRoaXMuayAqIGssIHRoaXMueCwgdGhpcy55KTtcbiAgfSxcbiAgdHJhbnNsYXRlOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgcmV0dXJuIHggPT09IDAgJiB5ID09PSAwID8gdGhpcyA6IG5ldyBUcmFuc2Zvcm0odGhpcy5rLCB0aGlzLnggKyB0aGlzLmsgKiB4LCB0aGlzLnkgKyB0aGlzLmsgKiB5KTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIFtwb2ludFswXSAqIHRoaXMuayArIHRoaXMueCwgcG9pbnRbMV0gKiB0aGlzLmsgKyB0aGlzLnldO1xuICB9LFxuICBhcHBseVg6IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4geCAqIHRoaXMuayArIHRoaXMueDtcbiAgfSxcbiAgYXBwbHlZOiBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHkgKiB0aGlzLmsgKyB0aGlzLnk7XG4gIH0sXG4gIGludmVydDogZnVuY3Rpb24obG9jYXRpb24pIHtcbiAgICByZXR1cm4gWyhsb2NhdGlvblswXSAtIHRoaXMueCkgLyB0aGlzLmssIChsb2NhdGlvblsxXSAtIHRoaXMueSkgLyB0aGlzLmtdO1xuICB9LFxuICBpbnZlcnRYOiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuICh4IC0gdGhpcy54KSAvIHRoaXMuaztcbiAgfSxcbiAgaW52ZXJ0WTogZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiAoeSAtIHRoaXMueSkgLyB0aGlzLms7XG4gIH0sXG4gIHJlc2NhbGVYOiBmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIHguY29weSgpLmRvbWFpbih4LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCwgdGhpcykubWFwKHguaW52ZXJ0LCB4KSk7XG4gIH0sXG4gIHJlc2NhbGVZOiBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIHkuY29weSgpLmRvbWFpbih5LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSwgdGhpcykubWFwKHkuaW52ZXJ0LCB5KSk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyB0aGlzLnggKyBcIixcIiArIHRoaXMueSArIFwiKSBzY2FsZShcIiArIHRoaXMuayArIFwiKVwiO1xuICB9XG59O1xuXG5leHBvcnQgdmFyIGlkZW50aXR5ID0gbmV3IFRyYW5zZm9ybSgxLCAwLCAwKTtcblxudHJhbnNmb3JtLnByb3RvdHlwZSA9IFRyYW5zZm9ybS5wcm90b3R5cGU7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybShub2RlKSB7XG4gIHdoaWxlICghbm9kZS5fX3pvb20pIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm4gaWRlbnRpdHk7XG4gIHJldHVybiBub2RlLl9fem9vbTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/transform.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3-zoom/src/zoom.js": +/*!*************************************************!*\ + !*** ../../../node_modules/d3-zoom/src/zoom.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/dispatch.js\");\n/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-drag */ \"../../../node_modules/d3-drag/src/nodrag.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/zoom.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/select.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/pointer.js\");\n/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-transition */ \"../../../node_modules/d3-transition/src/index.js\");\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/d3-zoom/src/constant.js\");\n/* harmony import */ var _event_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./event.js */ \"../../../node_modules/d3-zoom/src/event.js\");\n/* harmony import */ var _transform_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transform.js */ \"../../../node_modules/d3-zoom/src/transform.js\");\n/* harmony import */ var _noevent_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./noevent.js */ \"../../../node_modules/d3-zoom/src/noevent.js\");\n\n\n\n\n\n\n\n\n\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || _transform_js__WEBPACK_IMPORTED_MODULE_3__.identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = d3_interpolate__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n listeners = (0,d3_dispatch__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(_transform_js__WEBPACK_IMPORTED_MODULE_3__.identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new _transform_js__WEBPACK_IMPORTED_MODULE_3__.Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new _transform_js__WEBPACK_IMPORTED_MODULE_3__.Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new _transform_js__WEBPACK_IMPORTED_MODULE_3__.Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.that).datum();\n listeners.call(\n type,\n this.that,\n new _event_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n (0,d3_transition__WEBPACK_IMPORTED_MODULE_0__.interrupt)(this);\n g.start();\n }\n\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n (0,d3_drag__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(event.view);\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__.nopropagation)(event);\n g.mouse = [p, this.__zoom.invert(p)];\n (0,d3_transition__WEBPACK_IMPORTED_MODULE_0__.interrupt)(this);\n g.start();\n\n function mousemoved(event) {\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n (0,d3_drag__WEBPACK_IMPORTED_MODULE_9__.yesdrag)(event.view, g.moved);\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(event);\n if (duration > 0) (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this).transition().duration(duration).call(schedule, t1, p0, event);\n else (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__.nopropagation)(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n (0,d3_transition__WEBPACK_IMPORTED_MODULE_0__.interrupt)(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n (0,_noevent_js__WEBPACK_IMPORTED_MODULE_4__.nopropagation)(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = (0,d3_selection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = (0,d3_selection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : (0,_constant_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3pvb20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBcUM7QUFDVztBQUNEO0FBQ0Y7QUFDTDtBQUNIO0FBQ0Y7QUFDZ0I7QUFDQzs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsbURBQVE7QUFDaEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBVztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFlO0FBQ25DLGtCQUFrQix1REFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsZUFBZTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZEQUFrQjtBQUN6QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLCtDQUErQyxvREFBUztBQUN4RDs7QUFFQTtBQUNBO0FB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QTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXpvb20vc3JjL3pvb20uanM/MDMwZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Rpc3BhdGNofSBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmltcG9ydCB7ZHJhZ0Rpc2FibGUsIGRyYWdFbmFibGV9IGZyb20gXCJkMy1kcmFnXCI7XG5pbXBvcnQge2ludGVycG9sYXRlWm9vbX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge3NlbGVjdCwgcG9pbnRlcn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtpbnRlcnJ1cHR9IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnQuanNcIjtcbmltcG9ydCBab29tRXZlbnQgZnJvbSBcIi4vZXZlbnQuanNcIjtcbmltcG9ydCB7VHJhbnNmb3JtLCBpZGVudGl0eX0gZnJvbSBcIi4vdHJhbnNmb3JtLmpzXCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnQuanNcIjtcblxuLy8gSWdub3JlIHJpZ2h0LWNsaWNrLCBzaW5jZSB0aGF0IHNob3VsZCBvcGVuIHRoZSBjb250ZXh0IG1lbnUuXG4vLyBleGNlcHQgZm9yIHBpbmNoLXRvLXpvb20sIHdoaWNoIGlzIHNlbnQgYXMgYSB3aGVlbCtjdHJsS2V5IGV2ZW50XG5mdW5jdGlvbiBkZWZhdWx0RmlsdGVyKGV2ZW50KSB7XG4gIHJldHVybiAoIWV2ZW50LmN0cmxLZXkgfHwgZXZlbnQudHlwZSA9PT0gJ3doZWVsJykgJiYgIWV2ZW50LmJ1dHRvbjtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEV4dGVudCgpIHtcbiAgdmFyIGUgPSB0aGlzO1xuICBpZiAoZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpIHtcbiAgICBlID0gZS5vd25lclNWR0VsZW1lbnQgfHwgZTtcbiAgICBpZiAoZS5oYXNBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIpKSB7XG4gICAgICBlID0gZS52aWV3Qm94LmJhc2VWYWw7XG4gICAgICByZXR1cm4gW1tlLngsIGUueV0sIFtlLnggKyBlLndpZHRoLCBlLnkgKyBlLmhlaWdodF1dO1xuICAgIH1cbiAgICByZXR1cm4gW1swLCAwXSwgW2Uud2lkdGguYmFzZVZhbC52YWx1ZSwgZS5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dO1xuICB9XG4gIHJldHVybiBbWzAsIDBdLCBbZS5jbGllbnRXaWR0aCwgZS5jbGllbnRIZWlnaHRdXTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRyYW5zZm9ybSgpIHtcbiAgcmV0dXJuIHRoaXMuX196b29tIHx8IGlkZW50aXR5O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0V2hlZWxEZWx0YShldmVudCkge1xuICByZXR1cm4gLWV2ZW50LmRlbHRhWSAqIChldmVudC5kZWx0YU1vZGUgPT09IDEgPyAwLjA1IDogZXZlbnQuZGVsdGFNb2RlID8gMSA6IDAuMDAyKSAqIChldmVudC5jdHJsS2V5ID8gMTAgOiAxKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFRvdWNoYWJsZSgpIHtcbiAgcmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyB8fCAoXCJvbnRvdWNoc3RhcnRcIiBpbiB0aGlzKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdENvbnN0cmFpbih0cmFuc2Zvcm0sIGV4dGVudCwgdHJhbnNsYXRlRXh0ZW50KSB7XG4gIHZhciBkeDAgPSB0cmFuc2Zvcm0uaW52ZXJ0WChleHRlbnRbMF1bMF0pIC0gdHJhbnNsYXRlRXh0ZW50WzBdWzBdLFxuICAgICAgZHgxID0gdHJhbnNmb3JtLmludmVydFgoZXh0ZW50WzFdWzBdKSAtIHRyYW5zbGF0ZUV4dGVudFsxXVswXSxcbiAgICAgIGR5MCA9IHRyYW5zZm9ybS5pbnZlcnRZKGV4dGVudFswXVsxXSkgLSB0cmFuc2xhdGVFeHRlbnRbMF1bMV0sXG4gICAgICBkeTEgPSB0cmFuc2Zvcm0uaW52ZXJ0WShleHRlbnRbMV1bMV0pIC0gdHJhbnNsYXRlRXh0ZW50WzFdWzFdO1xuICByZXR1cm4gdHJhbnNmb3JtLnRyYW5zbGF0ZShcbiAgICBkeDEgPiBkeDAgPyAoZHgwICsgZHgxKSAvIDIgOiBNYXRoLm1pbigwLCBkeDApIHx8IE1hdGgubWF4KDAsIGR4MSksXG4gICAgZHkxID4gZHkwID8gKGR5MCArIGR5MSkgLyAyIDogTWF0aC5taW4oMCwgZHkwKSB8fCBNYXRoLm1heCgwLCBkeTEpXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIGV4dGVudCA9IGRlZmF1bHRFeHRlbnQsXG4gICAgICBjb25zdHJhaW4gPSBkZWZhdWx0Q29uc3RyYWluLFxuICAgICAgd2hlZWxEZWx0YSA9IGRlZmF1bHRXaGVlbERlbHRhLFxuICAgICAgdG91Y2hhYmxlID0gZGVmYXVsdFRvdWNoYWJsZSxcbiAgICAgIHNjYWxlRXh0ZW50ID0gWzAsIEluZmluaXR5XSxcbiAgICAgIHRyYW5zbGF0ZUV4dGVudCA9IFtbLUluZmluaXR5LCAtSW5maW5pdHldLCBbSW5maW5pdHksIEluZmluaXR5XV0sXG4gICAgICBkdXJhdGlvbiA9IDI1MCxcbiAgICAgIGludGVycG9sYXRlID0gaW50ZXJwb2xhdGVab29tLFxuICAgICAgbGlzdGVuZXJzID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcInpvb21cIiwgXCJlbmRcIiksXG4gICAgICB0b3VjaHN0YXJ0aW5nLFxuICAgICAgdG91Y2hmaXJzdCxcbiAgICAgIHRvdWNoZW5kaW5nLFxuICAgICAgdG91Y2hEZWxheSA9IDUwMCxcbiAgICAgIHdoZWVsRGVsYXkgPSAxNTAsXG4gICAgICBjbGlja0Rpc3RhbmNlMiA9IDAsXG4gICAgICB0YXBEaXN0YW5jZSA9IDEwO1xuXG4gIGZ1bmN0aW9uIHpvb20oc2VsZWN0aW9uKSB7XG4gICAgc2VsZWN0aW9uXG4gICAgICAgIC5wcm9wZXJ0eShcIl9fem9vbVwiLCBkZWZhdWx0VHJhbnNmb3JtKVxuICAgICAgICAub24oXCJ3aGVlbC56b29tXCIsIHdoZWVsZWQsIHtwYXNzaXZlOiBmYWxzZX0pXG4gICAgICAgIC5vbihcIm1vdXNlZG93bi56b29tXCIsIG1vdXNlZG93bmVkKVxuICAgICAgICAub24oXCJkYmxjbGljay56b29tXCIsIGRibGNsaWNrZWQpXG4gICAgICAuZmlsdGVyKHRvdWNoYWJsZSlcbiAgICAgICAgLm9uKFwidG91Y2hzdGFydC56b29tXCIsIHRvdWNoc3RhcnRlZClcbiAgICAgICAgLm9uKFwidG91Y2htb3ZlLnpvb21cIiwgdG91Y2htb3ZlZClcbiAgICAgICAgLm9uKFwidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tXCIsIHRvdWNoZW5kZWQpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIik7XG4gIH1cblxuICB6b29tLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IGNvbGxlY3Rpb24uc2VsZWN0aW9uID8gY29sbGVjdGlvbi5zZWxlY3Rpb24oKSA6IGNvbGxlY3Rpb247XG4gICAgc2VsZWN0aW9uLnByb3BlcnR5KFwiX196b29tXCIsIGRlZmF1bHRUcmFuc2Zvcm0pO1xuICAgIGlmIChjb2xsZWN0aW9uICE9PSBzZWxlY3Rpb24pIHtcbiAgICAgIHNjaGVkdWxlKGNvbGxlY3Rpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0aW9uLmludGVycnVwdCgpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgIGdlc3R1cmUodGhpcywgYXJndW1lbnRzKVxuICAgICAgICAgIC5ldmVudChldmVudClcbiAgICAgICAgICAuc3RhcnQoKVxuICAgICAgICAgIC56b29tKG51bGwsIHR5cGVvZiB0cmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIiA/IHRyYW5zZm9ybS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogdHJhbnNmb3JtKVxuICAgICAgICAgIC5lbmQoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICB6b29tLnNjYWxlQnkgPSBmdW5jdGlvbihzZWxlY3Rpb24sIGssIHAsIGV2ZW50KSB7XG4gICAgem9vbS5zY2FsZVRvKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgazAgPSB0aGlzLl9fem9vbS5rLFxuICAgICAgICAgIGsxID0gdHlwZW9mIGsgPT09IFwiZnVuY3Rpb25cIiA/IGsuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGs7XG4gICAgICByZXR1cm4gazAgKiBrMTtcbiAgICB9LCBwLCBldmVudCk7XG4gIH07XG5cbiAgem9vbS5zY2FsZVRvID0gZnVuY3Rpb24oc2VsZWN0aW9uLCBrLCBwLCBldmVudCkge1xuICAgIHpvb20udHJhbnNmb3JtKHNlbGVjdGlvbiwgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IGV4dGVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLFxuICAgICAgICAgIHQwID0gdGhpcy5fX3pvb20sXG4gICAgICAgICAgcDAgPSBwID09IG51bGwgPyBjZW50cm9pZChlKSA6IHR5cGVvZiBwID09PSBcImZ1bmN0aW9uXCIgPyBwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBwLFxuICAgICAgICAgIHAxID0gdDAuaW52ZXJ0KHAwKSxcbiAgICAgICAgICBrMSA9IHR5cGVvZiBrID09PSBcImZ1bmN0aW9uXCIgPyBrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiBrO1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbih0cmFuc2xhdGUoc2NhbGUodDAsIGsxKSwgcDAsIHAxKSwgZSwgdHJhbnNsYXRlRXh0ZW50KTtcbiAgICB9LCBwLCBldmVudCk7XG4gIH07XG5cbiAgem9vbS50cmFuc2xhdGVCeSA9IGZ1bmN0aW9uKHNlbGVjdGlvbiwgeCwgeSwgZXZlbnQpIHtcbiAgICB6b29tLnRyYW5zZm9ybShzZWxlY3Rpb24sIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGNvbnN0cmFpbih0aGlzLl9fem9vbS50cmFuc2xhdGUoXG4gICAgICAgIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyB4LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgOiB4LFxuICAgICAgICB0eXBlb2YgeSA9PT0gXCJmdW5jdGlvblwiID8geS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogeVxuICAgICAgKSwgZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSwgbnVsbCwgZXZlbnQpO1xuICB9O1xuXG4gIHpvb20udHJhbnNsYXRlVG8gPSBmdW5jdGlvbihzZWxlY3Rpb24sIHgsIHksIHAsIGV2ZW50KSB7XG4gICAgem9vbS50cmFuc2Zvcm0oc2VsZWN0aW9uLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gZXh0ZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgICAgdCA9IHRoaXMuX196b29tLFxuICAgICAgICAgIHAwID0gcCA9PSBudWxsID8gY2VudHJvaWQoZSkgOiB0eXBlb2YgcCA9PT0gXCJmdW5jdGlvblwiID8gcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogcDtcbiAgICAgIHJldHVybiBjb25zdHJhaW4oaWRlbnRpdHkudHJhbnNsYXRlKHAwWzBdLCBwMFsxXSkuc2NhbGUodC5rKS50cmFuc2xhdGUoXG4gICAgICAgIHR5cGVvZiB4ID09PSBcImZ1bmN0aW9uXCIgPyAteC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogLXgsXG4gICAgICAgIHR5cGVvZiB5ID09PSBcImZ1bmN0aW9uXCIgPyAteS5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogLXlcbiAgICAgICksIGUsIHRyYW5zbGF0ZUV4dGVudCk7XG4gICAgfSwgcCwgZXZlbnQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNjYWxlKHRyYW5zZm9ybSwgaykge1xuICAgIGsgPSBNYXRoLm1heChzY2FsZUV4dGVudFswXSwgTWF0aC5taW4oc2NhbGVFeHRlbnRbMV0sIGspKTtcbiAgICByZXR1cm4gayA9PT0gdHJhbnNmb3JtLmsgPyB0cmFuc2Zvcm0gOiBuZXcgVHJhbnNmb3JtKGssIHRyYW5zZm9ybS54LCB0cmFuc2Zvcm0ueSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUodHJhbnNmb3JtLCBwMCwgcDEpIHtcbiAgICB2YXIgeCA9IHAwWzBdIC0gcDFbMF0gKiB0cmFuc2Zvcm0uaywgeSA9IHAwWzFdIC0gcDFbMV0gKiB0cmFuc2Zvcm0uaztcbiAgICByZXR1cm4geCA9PT0gdHJhbnNmb3JtLnggJiYgeSA9PT0gdHJhbnNmb3JtLnkgPyB0cmFuc2Zvcm0gOiBuZXcgVHJhbnNmb3JtKHRyYW5zZm9ybS5rLCB4LCB5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNlbnRyb2lkKGV4dGVudCkge1xuICAgIHJldHVybiBbKCtleHRlbnRbMF1bMF0gKyArZXh0ZW50WzFdWzBdKSAvIDIsICgrZXh0ZW50WzBdWzFdICsgK2V4dGVudFsxXVsxXSkgLyAyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKHRyYW5zaXRpb24sIHRyYW5zZm9ybSwgcG9pbnQsIGV2ZW50KSB7XG4gICAgdHJhbnNpdGlvblxuICAgICAgICAub24oXCJzdGFydC56b29tXCIsIGZ1bmN0aW9uKCkgeyBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cykuZXZlbnQoZXZlbnQpLnN0YXJ0KCk7IH0pXG4gICAgICAgIC5vbihcImludGVycnVwdC56b29tIGVuZC56b29tXCIsIGZ1bmN0aW9uKCkgeyBnZXN0dXJlKHRoaXMsIGFyZ3VtZW50cykuZXZlbnQoZXZlbnQpLmVuZCgpOyB9KVxuICAgICAgICAudHdlZW4oXCJ6b29tXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHZhciB0aGF0ID0gdGhpcyxcbiAgICAgICAgICAgICAgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgICAgZyA9IGdlc3R1cmUodGhhdCwgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICAgICAgICBlID0gZXh0ZW50LmFwcGx5KHRoYXQsIGFyZ3MpLFxuICAgICAgICAgICAgICBwID0gcG9pbnQgPT0gbnVsbCA/IGNlbnRyb2lkKGUpIDogdHlwZW9mIHBvaW50ID09PSBcImZ1bmN0aW9uXCIgPyBwb2ludC5hcHBseSh0aGF0LCBhcmdzKSA6IHBvaW50LFxuICAgICAgICAgICAgICB3ID0gTWF0aC5tYXgoZVsxXVswXSAtIGVbMF1bMF0sIGVbMV1bMV0gLSBlWzBdWzFdKSxcbiAgICAgICAgICAgICAgYSA9IHRoYXQuX196b29tLFxuICAgICAgICAgICAgICBiID0gdHlwZW9mIHRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiID8gdHJhbnNmb3JtLmFwcGx5KHRoYXQsIGFyZ3MpIDogdHJhbnNmb3JtLFxuICAgICAgICAgICAgICBpID0gaW50ZXJwb2xhdGUoYS5pbnZlcnQocCkuY29uY2F0KHcgLyBhLmspLCBiLmludmVydChwKS5jb25jYXQodyAvIGIuaykpO1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgICBpZiAodCA9PT0gMSkgdCA9IGI7IC8vIEF2b2lkIHJvdW5kaW5nIGVycm9yIG9uIGVuZC5cbiAgICAgICAgICAgIGVsc2UgeyB2YXIgbCA9IGkodCksIGsgPSB3IC8gbFsyXTsgdCA9IG5ldyBUcmFuc2Zvcm0oaywgcFswXSAtIGxbMF0gKiBrLCBwWzFdIC0gbFsxXSAqIGspOyB9XG4gICAgICAgICAgICBnLnpvb20obnVsbCwgdCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXN0dXJlKHRoYXQsIGFyZ3MsIGNsZWFuKSB7XG4gICAgcmV0dXJuICghY2xlYW4gJiYgdGhhdC5fX3pvb21pbmcpIHx8IG5ldyBHZXN0dXJlKHRoYXQsIGFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gR2VzdHVyZSh0aGF0LCBhcmdzKSB7XG4gICAgdGhpcy50aGF0ID0gdGhhdDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMuYWN0aXZlID0gMDtcbiAgICB0aGlzLnNvdXJjZUV2ZW50ID0gbnVsbDtcbiAgICB0aGlzLmV4dGVudCA9IGV4dGVudC5hcHBseSh0aGF0LCBhcmdzKTtcbiAgICB0aGlzLnRhcHMgPSAwO1xuICB9XG5cbiAgR2VzdHVyZS5wcm90b3R5cGUgPSB7XG4gICAgZXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQpIHRoaXMuc291cmNlRXZlbnQgPSBldmVudDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCsrdGhpcy5hY3RpdmUgPT09IDEpIHtcbiAgICAgICAgdGhpcy50aGF0Ll9fem9vbWluZyA9IHRoaXM7XG4gICAgICAgIHRoaXMuZW1pdChcInN0YXJ0XCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICB6b29tOiBmdW5jdGlvbihrZXksIHRyYW5zZm9ybSkge1xuICAgICAgaWYgKHRoaXMubW91c2UgJiYga2V5ICE9PSBcIm1vdXNlXCIpIHRoaXMubW91c2VbMV0gPSB0cmFuc2Zvcm0uaW52ZXJ0KHRoaXMubW91c2VbMF0pO1xuICAgICAgaWYgKHRoaXMudG91Y2gwICYmIGtleSAhPT0gXCJ0b3VjaFwiKSB0aGlzLnRvdWNoMFsxXSA9IHRyYW5zZm9ybS5pbnZlcnQodGhpcy50b3VjaDBbMF0pO1xuICAgICAgaWYgKHRoaXMudG91Y2gxICYmIGtleSAhPT0gXCJ0b3VjaFwiKSB0aGlzLnRvdWNoMVsxXSA9IHRyYW5zZm9ybS5pbnZlcnQodGhpcy50b3VjaDFbMF0pO1xuICAgICAgdGhpcy50aGF0Ll9fem9vbSA9IHRyYW5zZm9ybTtcbiAgICAgIHRoaXMuZW1pdChcInpvb21cIik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aGlzLmFjdGl2ZSA9PT0gMCkge1xuICAgICAgICBkZWxldGUgdGhpcy50aGF0Ll9fem9vbWluZztcbiAgICAgICAgdGhpcy5lbWl0KFwiZW5kXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICB2YXIgZCA9IHNlbGVjdCh0aGlzLnRoYXQpLmRhdHVtKCk7XG4gICAgICBsaXN0ZW5lcnMuY2FsbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdGhpcy50aGF0LFxuICAgICAgICBuZXcgWm9vbUV2ZW50KHR5cGUsIHtcbiAgICAgICAgICBzb3VyY2VFdmVudDogdGhpcy5zb3VyY2VFdmVudCxcbiAgICAgICAgICB0YXJnZXQ6IHpvb20sXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB0cmFuc2Zvcm06IHRoaXMudGhhdC5fX3pvb20sXG4gICAgICAgICAgZGlzcGF0Y2g6IGxpc3RlbmVyc1xuICAgICAgICB9KSxcbiAgICAgICAgZFxuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gd2hlZWxlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICB0ID0gdGhpcy5fX3pvb20sXG4gICAgICAgIGsgPSBNYXRoLm1heChzY2FsZUV4dGVudFswXSwgTWF0aC5taW4oc2NhbGVFeHRlbnRbMV0sIHQuayAqIE1hdGgucG93KDIsIHdoZWVsRGVsdGEuYXBwbHkodGhpcywgYXJndW1lbnRzKSkpKSxcbiAgICAgICAgcCA9IHBvaW50ZXIoZXZlbnQpO1xuXG4gICAgLy8gSWYgdGhlIG1vdXNlIGlzIGluIHRoZSBzYW1lIGxvY2F0aW9uIGFzIGJlZm9yZSwgcmV1c2UgaXQuXG4gICAgLy8gSWYgdGhlcmUgd2VyZSByZWNlbnQgd2hlZWwgZXZlbnRzLCByZXNldCB0aGUgd2hlZWwgaWRsZSB0aW1lb3V0LlxuICAgIGlmIChnLndoZWVsKSB7XG4gICAgICBpZiAoZy5tb3VzZVswXVswXSAhPT0gcFswXSB8fCBnLm1vdXNlWzBdWzFdICE9PSBwWzFdKSB7XG4gICAgICAgIGcubW91c2VbMV0gPSB0LmludmVydChnLm1vdXNlWzBdID0gcCk7XG4gICAgICB9XG4gICAgICBjbGVhclRpbWVvdXQoZy53aGVlbCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhpcyB3aGVlbCBldmVudCB3b27igJl0IHRyaWdnZXIgYSB0cmFuc2Zvcm0gY2hhbmdlLCBpZ25vcmUgaXQuXG4gICAgZWxzZSBpZiAodC5rID09PSBrKSByZXR1cm47XG5cbiAgICAvLyBPdGhlcndpc2UsIGNhcHR1cmUgdGhlIG1vdXNlIHBvaW50IGFuZCBsb2NhdGlvbiBhdCB0aGUgc3RhcnQuXG4gICAgZWxzZSB7XG4gICAgICBnLm1vdXNlID0gW3AsIHQuaW52ZXJ0KHApXTtcbiAgICAgIGludGVycnVwdCh0aGlzKTtcbiAgICAgIGcuc3RhcnQoKTtcbiAgICB9XG5cbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBnLndoZWVsID0gc2V0VGltZW91dCh3aGVlbGlkbGVkLCB3aGVlbERlbGF5KTtcbiAgICBnLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKHNjYWxlKHQsIGspLCBnLm1vdXNlWzBdLCBnLm1vdXNlWzFdKSwgZy5leHRlbnQsIHRyYW5zbGF0ZUV4dGVudCkpO1xuXG4gICAgZnVuY3Rpb24gd2hlZWxpZGxlZCgpIHtcbiAgICAgIGcud2hlZWwgPSBudWxsO1xuICAgICAgZy5lbmQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBtb3VzZWRvd25lZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICh0b3VjaGVuZGluZyB8fCAhZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQsXG4gICAgICAgIGcgPSBnZXN0dXJlKHRoaXMsIGFyZ3MsIHRydWUpLmV2ZW50KGV2ZW50KSxcbiAgICAgICAgdiA9IHNlbGVjdChldmVudC52aWV3KS5vbihcIm1vdXNlbW92ZS56b29tXCIsIG1vdXNlbW92ZWQsIHRydWUpLm9uKFwibW91c2V1cC56b29tXCIsIG1vdXNldXBwZWQsIHRydWUpLFxuICAgICAgICBwID0gcG9pbnRlcihldmVudCwgY3VycmVudFRhcmdldCksXG4gICAgICAgIHgwID0gZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTAgPSBldmVudC5jbGllbnRZO1xuXG4gICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgZy5tb3VzZSA9IFtwLCB0aGlzLl9fem9vbS5pbnZlcnQocCldO1xuICAgIGludGVycnVwdCh0aGlzKTtcbiAgICBnLnN0YXJ0KCk7XG5cbiAgICBmdW5jdGlvbiBtb3VzZW1vdmVkKGV2ZW50KSB7XG4gICAgICBub2V2ZW50KGV2ZW50KTtcbiAgICAgIGlmICghZy5tb3ZlZCkge1xuICAgICAgICB2YXIgZHggPSBldmVudC5jbGllbnRYIC0geDAsIGR5ID0gZXZlbnQuY2xpZW50WSAtIHkwO1xuICAgICAgICBnLm1vdmVkID0gZHggKiBkeCArIGR5ICogZHkgPiBjbGlja0Rpc3RhbmNlMjtcbiAgICAgIH1cbiAgICAgIGcuZXZlbnQoZXZlbnQpXG4gICAgICAgLnpvb20oXCJtb3VzZVwiLCBjb25zdHJhaW4odHJhbnNsYXRlKGcudGhhdC5fX3pvb20sIGcubW91c2VbMF0gPSBwb2ludGVyKGV2ZW50LCBjdXJyZW50VGFyZ2V0KSwgZy5tb3VzZVsxXSksIGcuZXh0ZW50LCB0cmFuc2xhdGVFeHRlbnQpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3VzZXVwcGVkKGV2ZW50KSB7XG4gICAgICB2Lm9uKFwibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tXCIsIG51bGwpO1xuICAgICAgZHJhZ0VuYWJsZShldmVudC52aWV3LCBnLm1vdmVkKTtcbiAgICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgICAgZy5ldmVudChldmVudCkuZW5kKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGJsY2xpY2tlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgdDAgPSB0aGlzLl9fem9vbSxcbiAgICAgICAgcDAgPSBwb2ludGVyKGV2ZW50LmNoYW5nZWRUb3VjaGVzID8gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gOiBldmVudCwgdGhpcyksXG4gICAgICAgIHAxID0gdDAuaW52ZXJ0KHAwKSxcbiAgICAgICAgazEgPSB0MC5rICogKGV2ZW50LnNoaWZ0S2V5ID8gMC41IDogMiksXG4gICAgICAgIHQxID0gY29uc3RyYWluKHRyYW5zbGF0ZShzY2FsZSh0MCwgazEpLCBwMCwgcDEpLCBleHRlbnQuYXBwbHkodGhpcywgYXJncyksIHRyYW5zbGF0ZUV4dGVudCk7XG5cbiAgICBub2V2ZW50KGV2ZW50KTtcbiAgICBpZiAoZHVyYXRpb24gPiAwKSBzZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGR1cmF0aW9uKS5jYWxsKHNjaGVkdWxlLCB0MSwgcDAsIGV2ZW50KTtcbiAgICBlbHNlIHNlbGVjdCh0aGlzKS5jYWxsKHpvb20udHJhbnNmb3JtLCB0MSwgcDAsIGV2ZW50KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvdWNoc3RhcnRlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghZmlsdGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpIHJldHVybjtcbiAgICB2YXIgdG91Y2hlcyA9IGV2ZW50LnRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCxcbiAgICAgICAgZyA9IGdlc3R1cmUodGhpcywgYXJncywgZXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09PSBuKS5ldmVudChldmVudCksXG4gICAgICAgIHN0YXJ0ZWQsIGksIHQsIHA7XG5cbiAgICBub3Byb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXSwgcCA9IHBvaW50ZXIodCwgdGhpcyk7XG4gICAgICBwID0gW3AsIHRoaXMuX196b29tLmludmVydChwKSwgdC5pZGVudGlmaWVyXTtcbiAgICAgIGlmICghZy50b3VjaDApIGcudG91Y2gwID0gcCwgc3RhcnRlZCA9IHRydWUsIGcudGFwcyA9IDEgKyAhIXRvdWNoc3RhcnRpbmc7XG4gICAgICBlbHNlIGlmICghZy50b3VjaDEgJiYgZy50b3VjaDBbMl0gIT09IHBbMl0pIGcudG91Y2gxID0gcCwgZy50YXBzID0gMDtcbiAgICB9XG5cbiAgICBpZiAodG91Y2hzdGFydGluZykgdG91Y2hzdGFydGluZyA9IGNsZWFyVGltZW91dCh0b3VjaHN0YXJ0aW5nKTtcblxuICAgIGlmIChzdGFydGVkKSB7XG4gICAgICBpZiAoZy50YXBzIDwgMikgdG91Y2hmaXJzdCA9IHBbMF0sIHRvdWNoc3RhcnRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0b3VjaHN0YXJ0aW5nID0gbnVsbDsgfSwgdG91Y2hEZWxheSk7XG4gICAgICBpbnRlcnJ1cHQodGhpcyk7XG4gICAgICBnLnN0YXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdG91Y2htb3ZlZChldmVudCwgLi4uYXJncykge1xuICAgIGlmICghdGhpcy5fX3pvb21pbmcpIHJldHVybjtcbiAgICB2YXIgZyA9IGdlc3R1cmUodGhpcywgYXJncykuZXZlbnQoZXZlbnQpLFxuICAgICAgICB0b3VjaGVzID0gZXZlbnQuY2hhbmdlZFRvdWNoZXMsXG4gICAgICAgIG4gPSB0b3VjaGVzLmxlbmd0aCwgaSwgdCwgcCwgbDtcblxuICAgIG5vZXZlbnQoZXZlbnQpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIHQgPSB0b3VjaGVzW2ldLCBwID0gcG9pbnRlcih0LCB0aGlzKTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMFswXSA9IHA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBnLnRvdWNoMVswXSA9IHA7XG4gICAgfVxuICAgIHQgPSBnLnRoYXQuX196b29tO1xuICAgIGlmIChnLnRvdWNoMSkge1xuICAgICAgdmFyIHAwID0gZy50b3VjaDBbMF0sIGwwID0gZy50b3VjaDBbMV0sXG4gICAgICAgICAgcDEgPSBnLnRvdWNoMVswXSwgbDEgPSBnLnRvdWNoMVsxXSxcbiAgICAgICAgICBkcCA9IChkcCA9IHAxWzBdIC0gcDBbMF0pICogZHAgKyAoZHAgPSBwMVsxXSAtIHAwWzFdKSAqIGRwLFxuICAgICAgICAgIGRsID0gKGRsID0gbDFbMF0gLSBsMFswXSkgKiBkbCArIChkbCA9IGwxWzFdIC0gbDBbMV0pICogZGw7XG4gICAgICB0ID0gc2NhbGUodCwgTWF0aC5zcXJ0KGRwIC8gZGwpKTtcbiAgICAgIHAgPSBbKHAwWzBdICsgcDFbMF0pIC8gMiwgKHAwWzFdICsgcDFbMV0pIC8gMl07XG4gICAgICBsID0gWyhsMFswXSArIGwxWzBdKSAvIDIsIChsMFsxXSArIGwxWzFdKSAvIDJdO1xuICAgIH1cbiAgICBlbHNlIGlmIChnLnRvdWNoMCkgcCA9IGcudG91Y2gwWzBdLCBsID0gZy50b3VjaDBbMV07XG4gICAgZWxzZSByZXR1cm47XG5cbiAgICBnLnpvb20oXCJ0b3VjaFwiLCBjb25zdHJhaW4odHJhbnNsYXRlKHQsIHAsIGwpLCBnLmV4dGVudCwgdHJhbnNsYXRlRXh0ZW50KSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b3VjaGVuZGVkKGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgaWYgKCF0aGlzLl9fem9vbWluZykgcmV0dXJuO1xuICAgIHZhciBnID0gZ2VzdHVyZSh0aGlzLCBhcmdzKS5ldmVudChldmVudCksXG4gICAgICAgIHRvdWNoZXMgPSBldmVudC5jaGFuZ2VkVG91Y2hlcyxcbiAgICAgICAgbiA9IHRvdWNoZXMubGVuZ3RoLCBpLCB0O1xuXG4gICAgbm9wcm9wYWdhdGlvbihldmVudCk7XG4gICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgIHRvdWNoZW5kaW5nID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdG91Y2hlbmRpbmcgPSBudWxsOyB9LCB0b3VjaERlbGF5KTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB0ID0gdG91Y2hlc1tpXTtcbiAgICAgIGlmIChnLnRvdWNoMCAmJiBnLnRvdWNoMFsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDA7XG4gICAgICBlbHNlIGlmIChnLnRvdWNoMSAmJiBnLnRvdWNoMVsyXSA9PT0gdC5pZGVudGlmaWVyKSBkZWxldGUgZy50b3VjaDE7XG4gICAgfVxuICAgIGlmIChnLnRvdWNoMSAmJiAhZy50b3VjaDApIGcudG91Y2gwID0gZy50b3VjaDEsIGRlbGV0ZSBnLnRvdWNoMTtcbiAgICBpZiAoZy50b3VjaDApIGcudG91Y2gwWzFdID0gdGhpcy5fX3pvb20uaW52ZXJ0KGcudG91Y2gwWzBdKTtcbiAgICBlbHNlIHtcbiAgICAgIGcuZW5kKCk7XG4gICAgICAvLyBJZiB0aGlzIHdhcyBhIGRibHRhcCwgcmVyb3V0ZSB0byB0aGUgKG9wdGlvbmFsKSBkYmxjbGljay56b29tIGhhbmRsZXIuXG4gICAgICBpZiAoZy50YXBzID09PSAyKSB7XG4gICAgICAgIHQgPSBwb2ludGVyKHQsIHRoaXMpO1xuICAgICAgICBpZiAoTWF0aC5oeXBvdCh0b3VjaGZpcnN0WzBdIC0gdFswXSwgdG91Y2hmaXJzdFsxXSAtIHRbMV0pIDwgdGFwRGlzdGFuY2UpIHtcbiAgICAgICAgICB2YXIgcCA9IHNlbGVjdCh0aGlzKS5vbihcImRibGNsaWNrLnpvb21cIik7XG4gICAgICAgICAgaWYgKHApIHAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHpvb20ud2hlZWxEZWx0YSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh3aGVlbERlbHRhID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIHpvb20pIDogd2hlZWxEZWx0YTtcbiAgfTtcblxuICB6b29tLmZpbHRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChmaWx0ZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCEhXyksIHpvb20pIDogZmlsdGVyO1xuICB9O1xuXG4gIHpvb20udG91Y2hhYmxlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRvdWNoYWJsZSA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgem9vbSkgOiB0b3VjaGFibGU7XG4gIH07XG5cbiAgem9vbS5leHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZXh0ZW50ID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudChbWytfWzBdWzBdLCArX1swXVsxXV0sIFsrX1sxXVswXSwgK19bMV1bMV1dXSksIHpvb20pIDogZXh0ZW50O1xuICB9O1xuXG4gIHpvb20uc2NhbGVFeHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2NhbGVFeHRlbnRbMF0gPSArX1swXSwgc2NhbGVFeHRlbnRbMV0gPSArX1sxXSwgem9vbSkgOiBbc2NhbGVFeHRlbnRbMF0sIHNjYWxlRXh0ZW50WzFdXTtcbiAgfTtcblxuICB6b29tLnRyYW5zbGF0ZUV4dGVudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0cmFuc2xhdGVFeHRlbnRbMF1bMF0gPSArX1swXVswXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzBdID0gK19bMV1bMF0sIHRyYW5zbGF0ZUV4dGVudFswXVsxXSA9ICtfWzBdWzFdLCB0cmFuc2xhdGVFeHRlbnRbMV1bMV0gPSArX1sxXVsxXSwgem9vbSkgOiBbW3RyYW5zbGF0ZUV4dGVudFswXVswXSwgdHJhbnNsYXRlRXh0ZW50WzBdWzFdXSwgW3RyYW5zbGF0ZUV4dGVudFsxXVswXSwgdHJhbnNsYXRlRXh0ZW50WzFdWzFdXV07XG4gIH07XG5cbiAgem9vbS5jb25zdHJhaW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoY29uc3RyYWluID0gXywgem9vbSkgOiBjb25zdHJhaW47XG4gIH07XG5cbiAgem9vbS5kdXJhdGlvbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkdXJhdGlvbiA9ICtfLCB6b29tKSA6IGR1cmF0aW9uO1xuICB9O1xuXG4gIHpvb20uaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaW50ZXJwb2xhdGUgPSBfLCB6b29tKSA6IGludGVycG9sYXRlO1xuICB9O1xuXG4gIHpvb20ub24gPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUgPSBsaXN0ZW5lcnMub24uYXBwbHkobGlzdGVuZXJzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbGlzdGVuZXJzID8gem9vbSA6IHZhbHVlO1xuICB9O1xuXG4gIHpvb20uY2xpY2tEaXN0YW5jZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGlja0Rpc3RhbmNlMiA9IChfID0gK18pICogXywgem9vbSkgOiBNYXRoLnNxcnQoY2xpY2tEaXN0YW5jZTIpO1xuICB9O1xuXG4gIHpvb20udGFwRGlzdGFuY2UgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGFwRGlzdGFuY2UgPSArXywgem9vbSkgOiB0YXBEaXN0YW5jZTtcbiAgfTtcblxuICByZXR1cm4gem9vbTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/d3-zoom/src/zoom.js\n"); + +/***/ }), + +/***/ "../../../node_modules/d3/src/index.js": +/*!*********************************************!*\ + !*** ../../../node_modules/d3/src/index.js ***! + \*********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Adder\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.Adder),\n/* harmony export */ \"Delaunay\": () => (/* reexport safe */ d3_delaunay__WEBPACK_IMPORTED_MODULE_6__.Delaunay),\n/* harmony export */ \"FormatSpecifier\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.FormatSpecifier),\n/* harmony export */ \"InternMap\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.InternMap),\n/* harmony export */ \"InternSet\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.InternSet),\n/* harmony export */ \"Node\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.Node),\n/* harmony export */ \"Path\": () => (/* reexport safe */ d3_path__WEBPACK_IMPORTED_MODULE_17__.Path),\n/* harmony export */ \"Voronoi\": () => (/* reexport safe */ d3_delaunay__WEBPACK_IMPORTED_MODULE_6__.Voronoi),\n/* harmony export */ \"ZoomTransform\": () => (/* reexport safe */ d3_zoom__WEBPACK_IMPORTED_MODULE_29__.ZoomTransform),\n/* harmony export */ \"active\": () => (/* reexport safe */ d3_transition__WEBPACK_IMPORTED_MODULE_28__.active),\n/* harmony export */ \"arc\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.arc),\n/* harmony export */ \"area\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.area),\n/* harmony export */ \"areaRadial\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.areaRadial),\n/* harmony export */ \"ascending\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.ascending),\n/* harmony export */ \"autoType\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.autoType),\n/* harmony export */ \"axisBottom\": () => (/* reexport safe */ d3_axis__WEBPACK_IMPORTED_MODULE_1__.axisBottom),\n/* harmony export */ \"axisLeft\": () => (/* reexport safe */ d3_axis__WEBPACK_IMPORTED_MODULE_1__.axisLeft),\n/* harmony export */ \"axisRight\": () => (/* reexport safe */ d3_axis__WEBPACK_IMPORTED_MODULE_1__.axisRight),\n/* harmony export */ \"axisTop\": () => (/* reexport safe */ d3_axis__WEBPACK_IMPORTED_MODULE_1__.axisTop),\n/* harmony export */ \"bin\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bin),\n/* harmony export */ \"bisect\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bisect),\n/* harmony export */ \"bisectCenter\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bisectCenter),\n/* harmony export */ \"bisectLeft\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bisectLeft),\n/* harmony export */ \"bisectRight\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bisectRight),\n/* harmony export */ \"bisector\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.bisector),\n/* harmony export */ \"blob\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.blob),\n/* harmony export */ \"blur\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.blur),\n/* harmony export */ \"blur2\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.blur2),\n/* harmony export */ \"blurImage\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.blurImage),\n/* harmony export */ \"brush\": () => (/* reexport safe */ d3_brush__WEBPACK_IMPORTED_MODULE_2__.brush),\n/* harmony export */ \"brushSelection\": () => (/* reexport safe */ d3_brush__WEBPACK_IMPORTED_MODULE_2__.brushSelection),\n/* harmony export */ \"brushX\": () => (/* reexport safe */ d3_brush__WEBPACK_IMPORTED_MODULE_2__.brushX),\n/* harmony export */ \"brushY\": () => (/* reexport safe */ d3_brush__WEBPACK_IMPORTED_MODULE_2__.brushY),\n/* harmony export */ \"buffer\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.buffer),\n/* harmony export */ \"chord\": () => (/* reexport safe */ d3_chord__WEBPACK_IMPORTED_MODULE_3__.chord),\n/* harmony export */ \"chordDirected\": () => (/* reexport safe */ d3_chord__WEBPACK_IMPORTED_MODULE_3__.chordDirected),\n/* harmony export */ \"chordTranspose\": () => (/* reexport safe */ d3_chord__WEBPACK_IMPORTED_MODULE_3__.chordTranspose),\n/* harmony export */ \"cluster\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.cluster),\n/* harmony export */ \"color\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.color),\n/* harmony export */ \"contourDensity\": () => (/* reexport safe */ d3_contour__WEBPACK_IMPORTED_MODULE_5__.contourDensity),\n/* harmony export */ \"contours\": () => (/* reexport safe */ d3_contour__WEBPACK_IMPORTED_MODULE_5__.contours),\n/* harmony export */ \"count\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.count),\n/* harmony export */ \"create\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.create),\n/* harmony export */ \"creator\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.creator),\n/* harmony export */ \"cross\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.cross),\n/* harmony export */ \"csv\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.csv),\n/* harmony export */ \"csvFormat\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvFormat),\n/* harmony export */ \"csvFormatBody\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvFormatBody),\n/* harmony export */ \"csvFormatRow\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvFormatRow),\n/* harmony export */ \"csvFormatRows\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvFormatRows),\n/* harmony export */ \"csvFormatValue\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvFormatValue),\n/* harmony export */ \"csvParse\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvParse),\n/* harmony export */ \"csvParseRows\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.csvParseRows),\n/* harmony export */ \"cubehelix\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.cubehelix),\n/* harmony export */ \"cumsum\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.cumsum),\n/* harmony export */ \"curveBasis\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBasis),\n/* harmony export */ \"curveBasisClosed\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBasisClosed),\n/* harmony export */ \"curveBasisOpen\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBasisOpen),\n/* harmony export */ \"curveBumpX\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBumpX),\n/* harmony export */ \"curveBumpY\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBumpY),\n/* harmony export */ \"curveBundle\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveBundle),\n/* harmony export */ \"curveCardinal\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCardinal),\n/* harmony export */ \"curveCardinalClosed\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCardinalClosed),\n/* harmony export */ \"curveCardinalOpen\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCardinalOpen),\n/* harmony export */ \"curveCatmullRom\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCatmullRom),\n/* harmony export */ \"curveCatmullRomClosed\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCatmullRomClosed),\n/* harmony export */ \"curveCatmullRomOpen\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveCatmullRomOpen),\n/* harmony export */ \"curveLinear\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveLinear),\n/* harmony export */ \"curveLinearClosed\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveLinearClosed),\n/* harmony export */ \"curveMonotoneX\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveMonotoneX),\n/* harmony export */ \"curveMonotoneY\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveMonotoneY),\n/* harmony export */ \"curveNatural\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveNatural),\n/* harmony export */ \"curveStep\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveStep),\n/* harmony export */ \"curveStepAfter\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveStepAfter),\n/* harmony export */ \"curveStepBefore\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.curveStepBefore),\n/* harmony export */ \"descending\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.descending),\n/* harmony export */ \"deviation\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.deviation),\n/* harmony export */ \"difference\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.difference),\n/* harmony export */ \"disjoint\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.disjoint),\n/* harmony export */ \"dispatch\": () => (/* reexport safe */ d3_dispatch__WEBPACK_IMPORTED_MODULE_7__.dispatch),\n/* harmony export */ \"drag\": () => (/* reexport safe */ d3_drag__WEBPACK_IMPORTED_MODULE_8__.drag),\n/* harmony export */ \"dragDisable\": () => (/* reexport safe */ d3_drag__WEBPACK_IMPORTED_MODULE_8__.dragDisable),\n/* harmony export */ \"dragEnable\": () => (/* reexport safe */ d3_drag__WEBPACK_IMPORTED_MODULE_8__.dragEnable),\n/* harmony export */ \"dsv\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.dsv),\n/* harmony export */ \"dsvFormat\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.dsvFormat),\n/* harmony export */ \"easeBack\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBack),\n/* harmony export */ \"easeBackIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBackIn),\n/* harmony export */ \"easeBackInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBackInOut),\n/* harmony export */ \"easeBackOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBackOut),\n/* harmony export */ \"easeBounce\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBounce),\n/* harmony export */ \"easeBounceIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBounceIn),\n/* harmony export */ \"easeBounceInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBounceInOut),\n/* harmony export */ \"easeBounceOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeBounceOut),\n/* harmony export */ \"easeCircle\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCircle),\n/* harmony export */ \"easeCircleIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCircleIn),\n/* harmony export */ \"easeCircleInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCircleInOut),\n/* harmony export */ \"easeCircleOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCircleOut),\n/* harmony export */ \"easeCubic\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCubic),\n/* harmony export */ \"easeCubicIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCubicIn),\n/* harmony export */ \"easeCubicInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCubicInOut),\n/* harmony export */ \"easeCubicOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeCubicOut),\n/* harmony export */ \"easeElastic\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeElastic),\n/* harmony export */ \"easeElasticIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeElasticIn),\n/* harmony export */ \"easeElasticInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeElasticInOut),\n/* harmony export */ \"easeElasticOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeElasticOut),\n/* harmony export */ \"easeExp\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeExp),\n/* harmony export */ \"easeExpIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeExpIn),\n/* harmony export */ \"easeExpInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeExpInOut),\n/* harmony export */ \"easeExpOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeExpOut),\n/* harmony export */ \"easeLinear\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeLinear),\n/* harmony export */ \"easePoly\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easePoly),\n/* harmony export */ \"easePolyIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easePolyIn),\n/* harmony export */ \"easePolyInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easePolyInOut),\n/* harmony export */ \"easePolyOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easePolyOut),\n/* harmony export */ \"easeQuad\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeQuad),\n/* harmony export */ \"easeQuadIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeQuadIn),\n/* harmony export */ \"easeQuadInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeQuadInOut),\n/* harmony export */ \"easeQuadOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeQuadOut),\n/* harmony export */ \"easeSin\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeSin),\n/* harmony export */ \"easeSinIn\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeSinIn),\n/* harmony export */ \"easeSinInOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeSinInOut),\n/* harmony export */ \"easeSinOut\": () => (/* reexport safe */ d3_ease__WEBPACK_IMPORTED_MODULE_10__.easeSinOut),\n/* harmony export */ \"every\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.every),\n/* harmony export */ \"extent\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.extent),\n/* harmony export */ \"fcumsum\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.fcumsum),\n/* harmony export */ \"filter\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.filter),\n/* harmony export */ \"flatGroup\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.flatGroup),\n/* harmony export */ \"flatRollup\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.flatRollup),\n/* harmony export */ \"forceCenter\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceCenter),\n/* harmony export */ \"forceCollide\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceCollide),\n/* harmony export */ \"forceLink\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceLink),\n/* harmony export */ \"forceManyBody\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceManyBody),\n/* harmony export */ \"forceRadial\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceRadial),\n/* harmony export */ \"forceSimulation\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceSimulation),\n/* harmony export */ \"forceX\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceX),\n/* harmony export */ \"forceY\": () => (/* reexport safe */ d3_force__WEBPACK_IMPORTED_MODULE_12__.forceY),\n/* harmony export */ \"format\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.format),\n/* harmony export */ \"formatDefaultLocale\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.formatDefaultLocale),\n/* harmony export */ \"formatLocale\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.formatLocale),\n/* harmony export */ \"formatPrefix\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.formatPrefix),\n/* harmony export */ \"formatSpecifier\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.formatSpecifier),\n/* harmony export */ \"fsum\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.fsum),\n/* harmony export */ \"geoAlbers\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAlbers),\n/* harmony export */ \"geoAlbersUsa\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAlbersUsa),\n/* harmony export */ \"geoArea\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoArea),\n/* harmony export */ \"geoAzimuthalEqualArea\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAzimuthalEqualArea),\n/* harmony export */ \"geoAzimuthalEqualAreaRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAzimuthalEqualAreaRaw),\n/* harmony export */ \"geoAzimuthalEquidistant\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAzimuthalEquidistant),\n/* harmony export */ \"geoAzimuthalEquidistantRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoAzimuthalEquidistantRaw),\n/* harmony export */ \"geoBounds\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoBounds),\n/* harmony export */ \"geoCentroid\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoCentroid),\n/* harmony export */ \"geoCircle\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoCircle),\n/* harmony export */ \"geoClipAntimeridian\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoClipAntimeridian),\n/* harmony export */ \"geoClipCircle\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoClipCircle),\n/* harmony export */ \"geoClipExtent\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoClipExtent),\n/* harmony export */ \"geoClipRectangle\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoClipRectangle),\n/* harmony export */ \"geoConicConformal\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicConformal),\n/* harmony export */ \"geoConicConformalRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicConformalRaw),\n/* harmony export */ \"geoConicEqualArea\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicEqualArea),\n/* harmony export */ \"geoConicEqualAreaRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicEqualAreaRaw),\n/* harmony export */ \"geoConicEquidistant\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicEquidistant),\n/* harmony export */ \"geoConicEquidistantRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoConicEquidistantRaw),\n/* harmony export */ \"geoContains\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoContains),\n/* harmony export */ \"geoDistance\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoDistance),\n/* harmony export */ \"geoEqualEarth\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoEqualEarth),\n/* harmony export */ \"geoEqualEarthRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoEqualEarthRaw),\n/* harmony export */ \"geoEquirectangular\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoEquirectangular),\n/* harmony export */ \"geoEquirectangularRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoEquirectangularRaw),\n/* harmony export */ \"geoGnomonic\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoGnomonic),\n/* harmony export */ \"geoGnomonicRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoGnomonicRaw),\n/* harmony export */ \"geoGraticule\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoGraticule),\n/* harmony export */ \"geoGraticule10\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoGraticule10),\n/* harmony export */ \"geoIdentity\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoIdentity),\n/* harmony export */ \"geoInterpolate\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoInterpolate),\n/* harmony export */ \"geoLength\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoLength),\n/* harmony export */ \"geoMercator\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoMercator),\n/* harmony export */ \"geoMercatorRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoMercatorRaw),\n/* harmony export */ \"geoNaturalEarth1\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoNaturalEarth1),\n/* harmony export */ \"geoNaturalEarth1Raw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoNaturalEarth1Raw),\n/* harmony export */ \"geoOrthographic\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoOrthographic),\n/* harmony export */ \"geoOrthographicRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoOrthographicRaw),\n/* harmony export */ \"geoPath\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoPath),\n/* harmony export */ \"geoProjection\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoProjection),\n/* harmony export */ \"geoProjectionMutator\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoProjectionMutator),\n/* harmony export */ \"geoRotation\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoRotation),\n/* harmony export */ \"geoStereographic\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoStereographic),\n/* harmony export */ \"geoStereographicRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoStereographicRaw),\n/* harmony export */ \"geoStream\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoStream),\n/* harmony export */ \"geoTransform\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoTransform),\n/* harmony export */ \"geoTransverseMercator\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoTransverseMercator),\n/* harmony export */ \"geoTransverseMercatorRaw\": () => (/* reexport safe */ d3_geo__WEBPACK_IMPORTED_MODULE_14__.geoTransverseMercatorRaw),\n/* harmony export */ \"gray\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.gray),\n/* harmony export */ \"greatest\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.greatest),\n/* harmony export */ \"greatestIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.greatestIndex),\n/* harmony export */ \"group\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.group),\n/* harmony export */ \"groupSort\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.groupSort),\n/* harmony export */ \"groups\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.groups),\n/* harmony export */ \"hcl\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.hcl),\n/* harmony export */ \"hierarchy\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.hierarchy),\n/* harmony export */ \"histogram\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.histogram),\n/* harmony export */ \"hsl\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.hsl),\n/* harmony export */ \"html\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.html),\n/* harmony export */ \"image\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.image),\n/* harmony export */ \"index\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.index),\n/* harmony export */ \"indexes\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.indexes),\n/* harmony export */ \"interpolate\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolate),\n/* harmony export */ \"interpolateArray\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateArray),\n/* harmony export */ \"interpolateBasis\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateBasis),\n/* harmony export */ \"interpolateBasisClosed\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateBasisClosed),\n/* harmony export */ \"interpolateBlues\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateBlues),\n/* harmony export */ \"interpolateBrBG\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateBrBG),\n/* harmony export */ \"interpolateBuGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateBuGn),\n/* harmony export */ \"interpolateBuPu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateBuPu),\n/* harmony export */ \"interpolateCividis\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateCividis),\n/* harmony export */ \"interpolateCool\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateCool),\n/* harmony export */ \"interpolateCubehelix\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateCubehelix),\n/* harmony export */ \"interpolateCubehelixDefault\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateCubehelixDefault),\n/* harmony export */ \"interpolateCubehelixLong\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateCubehelixLong),\n/* harmony export */ \"interpolateDate\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateDate),\n/* harmony export */ \"interpolateDiscrete\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateDiscrete),\n/* harmony export */ \"interpolateGnBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateGnBu),\n/* harmony export */ \"interpolateGreens\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateGreens),\n/* harmony export */ \"interpolateGreys\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateGreys),\n/* harmony export */ \"interpolateHcl\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateHcl),\n/* harmony export */ \"interpolateHclLong\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateHclLong),\n/* harmony export */ \"interpolateHsl\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateHsl),\n/* harmony export */ \"interpolateHslLong\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateHslLong),\n/* harmony export */ \"interpolateHue\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateHue),\n/* harmony export */ \"interpolateInferno\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateInferno),\n/* harmony export */ \"interpolateLab\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateLab),\n/* harmony export */ \"interpolateMagma\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateMagma),\n/* harmony export */ \"interpolateNumber\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateNumber),\n/* harmony export */ \"interpolateNumberArray\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateNumberArray),\n/* harmony export */ \"interpolateObject\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateObject),\n/* harmony export */ \"interpolateOrRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateOrRd),\n/* harmony export */ \"interpolateOranges\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateOranges),\n/* harmony export */ \"interpolatePRGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePRGn),\n/* harmony export */ \"interpolatePiYG\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePiYG),\n/* harmony export */ \"interpolatePlasma\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePlasma),\n/* harmony export */ \"interpolatePuBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePuBu),\n/* harmony export */ \"interpolatePuBuGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePuBuGn),\n/* harmony export */ \"interpolatePuOr\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePuOr),\n/* harmony export */ \"interpolatePuRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePuRd),\n/* harmony export */ \"interpolatePurples\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolatePurples),\n/* harmony export */ \"interpolateRainbow\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRainbow),\n/* harmony export */ \"interpolateRdBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRdBu),\n/* harmony export */ \"interpolateRdGy\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRdGy),\n/* harmony export */ \"interpolateRdPu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRdPu),\n/* harmony export */ \"interpolateRdYlBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRdYlBu),\n/* harmony export */ \"interpolateRdYlGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateRdYlGn),\n/* harmony export */ \"interpolateReds\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateReds),\n/* harmony export */ \"interpolateRgb\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateRgb),\n/* harmony export */ \"interpolateRgbBasis\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateRgbBasis),\n/* harmony export */ \"interpolateRgbBasisClosed\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateRgbBasisClosed),\n/* harmony export */ \"interpolateRound\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateRound),\n/* harmony export */ \"interpolateSinebow\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateSinebow),\n/* harmony export */ \"interpolateSpectral\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateSpectral),\n/* harmony export */ \"interpolateString\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateString),\n/* harmony export */ \"interpolateTransformCss\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateTransformCss),\n/* harmony export */ \"interpolateTransformSvg\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateTransformSvg),\n/* harmony export */ \"interpolateTurbo\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateTurbo),\n/* harmony export */ \"interpolateViridis\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateViridis),\n/* harmony export */ \"interpolateWarm\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateWarm),\n/* harmony export */ \"interpolateYlGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateYlGn),\n/* harmony export */ \"interpolateYlGnBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateYlGnBu),\n/* harmony export */ \"interpolateYlOrBr\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateYlOrBr),\n/* harmony export */ \"interpolateYlOrRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.interpolateYlOrRd),\n/* harmony export */ \"interpolateZoom\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.interpolateZoom),\n/* harmony export */ \"interrupt\": () => (/* reexport safe */ d3_transition__WEBPACK_IMPORTED_MODULE_28__.interrupt),\n/* harmony export */ \"intersection\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.intersection),\n/* harmony export */ \"interval\": () => (/* reexport safe */ d3_timer__WEBPACK_IMPORTED_MODULE_27__.interval),\n/* harmony export */ \"isoFormat\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.isoFormat),\n/* harmony export */ \"isoParse\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.isoParse),\n/* harmony export */ \"json\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.json),\n/* harmony export */ \"lab\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.lab),\n/* harmony export */ \"lch\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.lch),\n/* harmony export */ \"least\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.least),\n/* harmony export */ \"leastIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.leastIndex),\n/* harmony export */ \"line\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.line),\n/* harmony export */ \"lineRadial\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.lineRadial),\n/* harmony export */ \"link\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.link),\n/* harmony export */ \"linkHorizontal\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.linkHorizontal),\n/* harmony export */ \"linkRadial\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.linkRadial),\n/* harmony export */ \"linkVertical\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.linkVertical),\n/* harmony export */ \"local\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.local),\n/* harmony export */ \"map\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.map),\n/* harmony export */ \"matcher\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.matcher),\n/* harmony export */ \"max\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.max),\n/* harmony export */ \"maxIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.maxIndex),\n/* harmony export */ \"mean\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.mean),\n/* harmony export */ \"median\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.median),\n/* harmony export */ \"medianIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.medianIndex),\n/* harmony export */ \"merge\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.merge),\n/* harmony export */ \"min\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.min),\n/* harmony export */ \"minIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.minIndex),\n/* harmony export */ \"mode\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.mode),\n/* harmony export */ \"namespace\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.namespace),\n/* harmony export */ \"namespaces\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.namespaces),\n/* harmony export */ \"nice\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.nice),\n/* harmony export */ \"now\": () => (/* reexport safe */ d3_timer__WEBPACK_IMPORTED_MODULE_27__.now),\n/* harmony export */ \"pack\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.pack),\n/* harmony export */ \"packEnclose\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.packEnclose),\n/* harmony export */ \"packSiblings\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.packSiblings),\n/* harmony export */ \"pairs\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.pairs),\n/* harmony export */ \"partition\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.partition),\n/* harmony export */ \"path\": () => (/* reexport safe */ d3_path__WEBPACK_IMPORTED_MODULE_17__.path),\n/* harmony export */ \"pathRound\": () => (/* reexport safe */ d3_path__WEBPACK_IMPORTED_MODULE_17__.pathRound),\n/* harmony export */ \"permute\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.permute),\n/* harmony export */ \"pie\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.pie),\n/* harmony export */ \"piecewise\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.piecewise),\n/* harmony export */ \"pointRadial\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.pointRadial),\n/* harmony export */ \"pointer\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.pointer),\n/* harmony export */ \"pointers\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.pointers),\n/* harmony export */ \"polygonArea\": () => (/* reexport safe */ d3_polygon__WEBPACK_IMPORTED_MODULE_18__.polygonArea),\n/* harmony export */ \"polygonCentroid\": () => (/* reexport safe */ d3_polygon__WEBPACK_IMPORTED_MODULE_18__.polygonCentroid),\n/* harmony export */ \"polygonContains\": () => (/* reexport safe */ d3_polygon__WEBPACK_IMPORTED_MODULE_18__.polygonContains),\n/* harmony export */ \"polygonHull\": () => (/* reexport safe */ d3_polygon__WEBPACK_IMPORTED_MODULE_18__.polygonHull),\n/* harmony export */ \"polygonLength\": () => (/* reexport safe */ d3_polygon__WEBPACK_IMPORTED_MODULE_18__.polygonLength),\n/* harmony export */ \"precisionFixed\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.precisionFixed),\n/* harmony export */ \"precisionPrefix\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.precisionPrefix),\n/* harmony export */ \"precisionRound\": () => (/* reexport safe */ d3_format__WEBPACK_IMPORTED_MODULE_13__.precisionRound),\n/* harmony export */ \"quadtree\": () => (/* reexport safe */ d3_quadtree__WEBPACK_IMPORTED_MODULE_19__.quadtree),\n/* harmony export */ \"quantile\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.quantile),\n/* harmony export */ \"quantileIndex\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.quantileIndex),\n/* harmony export */ \"quantileSorted\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.quantileSorted),\n/* harmony export */ \"quantize\": () => (/* reexport safe */ d3_interpolate__WEBPACK_IMPORTED_MODULE_16__.quantize),\n/* harmony export */ \"quickselect\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.quickselect),\n/* harmony export */ \"radialArea\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.radialArea),\n/* harmony export */ \"radialLine\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.radialLine),\n/* harmony export */ \"randomBates\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomBates),\n/* harmony export */ \"randomBernoulli\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomBernoulli),\n/* harmony export */ \"randomBeta\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomBeta),\n/* harmony export */ \"randomBinomial\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomBinomial),\n/* harmony export */ \"randomCauchy\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomCauchy),\n/* harmony export */ \"randomExponential\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomExponential),\n/* harmony export */ \"randomGamma\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomGamma),\n/* harmony export */ \"randomGeometric\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomGeometric),\n/* harmony export */ \"randomInt\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomInt),\n/* harmony export */ \"randomIrwinHall\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomIrwinHall),\n/* harmony export */ \"randomLcg\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomLcg),\n/* harmony export */ \"randomLogNormal\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomLogNormal),\n/* harmony export */ \"randomLogistic\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomLogistic),\n/* harmony export */ \"randomNormal\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomNormal),\n/* harmony export */ \"randomPareto\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomPareto),\n/* harmony export */ \"randomPoisson\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomPoisson),\n/* harmony export */ \"randomUniform\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomUniform),\n/* harmony export */ \"randomWeibull\": () => (/* reexport safe */ d3_random__WEBPACK_IMPORTED_MODULE_20__.randomWeibull),\n/* harmony export */ \"range\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.range),\n/* harmony export */ \"rank\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.rank),\n/* harmony export */ \"reduce\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.reduce),\n/* harmony export */ \"reverse\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.reverse),\n/* harmony export */ \"rgb\": () => (/* reexport safe */ d3_color__WEBPACK_IMPORTED_MODULE_4__.rgb),\n/* harmony export */ \"ribbon\": () => (/* reexport safe */ d3_chord__WEBPACK_IMPORTED_MODULE_3__.ribbon),\n/* harmony export */ \"ribbonArrow\": () => (/* reexport safe */ d3_chord__WEBPACK_IMPORTED_MODULE_3__.ribbonArrow),\n/* harmony export */ \"rollup\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.rollup),\n/* harmony export */ \"rollups\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.rollups),\n/* harmony export */ \"scaleBand\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleBand),\n/* harmony export */ \"scaleDiverging\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleDiverging),\n/* harmony export */ \"scaleDivergingLog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleDivergingLog),\n/* harmony export */ \"scaleDivergingPow\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleDivergingPow),\n/* harmony export */ \"scaleDivergingSqrt\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleDivergingSqrt),\n/* harmony export */ \"scaleDivergingSymlog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleDivergingSymlog),\n/* harmony export */ \"scaleIdentity\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleIdentity),\n/* harmony export */ \"scaleImplicit\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleImplicit),\n/* harmony export */ \"scaleLinear\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleLinear),\n/* harmony export */ \"scaleLog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleLog),\n/* harmony export */ \"scaleOrdinal\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleOrdinal),\n/* harmony export */ \"scalePoint\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scalePoint),\n/* harmony export */ \"scalePow\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scalePow),\n/* harmony export */ \"scaleQuantile\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleQuantile),\n/* harmony export */ \"scaleQuantize\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleQuantize),\n/* harmony export */ \"scaleRadial\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleRadial),\n/* harmony export */ \"scaleSequential\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequential),\n/* harmony export */ \"scaleSequentialLog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequentialLog),\n/* harmony export */ \"scaleSequentialPow\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequentialPow),\n/* harmony export */ \"scaleSequentialQuantile\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequentialQuantile),\n/* harmony export */ \"scaleSequentialSqrt\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequentialSqrt),\n/* harmony export */ \"scaleSequentialSymlog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSequentialSymlog),\n/* harmony export */ \"scaleSqrt\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSqrt),\n/* harmony export */ \"scaleSymlog\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleSymlog),\n/* harmony export */ \"scaleThreshold\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleThreshold),\n/* harmony export */ \"scaleTime\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleTime),\n/* harmony export */ \"scaleUtc\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.scaleUtc),\n/* harmony export */ \"scan\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.scan),\n/* harmony export */ \"schemeAccent\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeAccent),\n/* harmony export */ \"schemeBlues\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeBlues),\n/* harmony export */ \"schemeBrBG\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeBrBG),\n/* harmony export */ \"schemeBuGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeBuGn),\n/* harmony export */ \"schemeBuPu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeBuPu),\n/* harmony export */ \"schemeCategory10\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeCategory10),\n/* harmony export */ \"schemeDark2\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeDark2),\n/* harmony export */ \"schemeGnBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeGnBu),\n/* harmony export */ \"schemeGreens\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeGreens),\n/* harmony export */ \"schemeGreys\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeGreys),\n/* harmony export */ \"schemeOrRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeOrRd),\n/* harmony export */ \"schemeOranges\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeOranges),\n/* harmony export */ \"schemePRGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePRGn),\n/* harmony export */ \"schemePaired\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePaired),\n/* harmony export */ \"schemePastel1\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePastel1),\n/* harmony export */ \"schemePastel2\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePastel2),\n/* harmony export */ \"schemePiYG\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePiYG),\n/* harmony export */ \"schemePuBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePuBu),\n/* harmony export */ \"schemePuBuGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePuBuGn),\n/* harmony export */ \"schemePuOr\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePuOr),\n/* harmony export */ \"schemePuRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePuRd),\n/* harmony export */ \"schemePurples\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemePurples),\n/* harmony export */ \"schemeRdBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeRdBu),\n/* harmony export */ \"schemeRdGy\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeRdGy),\n/* harmony export */ \"schemeRdPu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeRdPu),\n/* harmony export */ \"schemeRdYlBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeRdYlBu),\n/* harmony export */ \"schemeRdYlGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeRdYlGn),\n/* harmony export */ \"schemeReds\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeReds),\n/* harmony export */ \"schemeSet1\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeSet1),\n/* harmony export */ \"schemeSet2\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeSet2),\n/* harmony export */ \"schemeSet3\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeSet3),\n/* harmony export */ \"schemeSpectral\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeSpectral),\n/* harmony export */ \"schemeTableau10\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeTableau10),\n/* harmony export */ \"schemeYlGn\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeYlGn),\n/* harmony export */ \"schemeYlGnBu\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeYlGnBu),\n/* harmony export */ \"schemeYlOrBr\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeYlOrBr),\n/* harmony export */ \"schemeYlOrRd\": () => (/* reexport safe */ d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__.schemeYlOrRd),\n/* harmony export */ \"select\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.select),\n/* harmony export */ \"selectAll\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.selectAll),\n/* harmony export */ \"selection\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.selection),\n/* harmony export */ \"selector\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.selector),\n/* harmony export */ \"selectorAll\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.selectorAll),\n/* harmony export */ \"shuffle\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.shuffle),\n/* harmony export */ \"shuffler\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.shuffler),\n/* harmony export */ \"some\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.some),\n/* harmony export */ \"sort\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.sort),\n/* harmony export */ \"stack\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stack),\n/* harmony export */ \"stackOffsetDiverging\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOffsetDiverging),\n/* harmony export */ \"stackOffsetExpand\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOffsetExpand),\n/* harmony export */ \"stackOffsetNone\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOffsetNone),\n/* harmony export */ \"stackOffsetSilhouette\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOffsetSilhouette),\n/* harmony export */ \"stackOffsetWiggle\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOffsetWiggle),\n/* harmony export */ \"stackOrderAppearance\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderAppearance),\n/* harmony export */ \"stackOrderAscending\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderAscending),\n/* harmony export */ \"stackOrderDescending\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderDescending),\n/* harmony export */ \"stackOrderInsideOut\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderInsideOut),\n/* harmony export */ \"stackOrderNone\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderNone),\n/* harmony export */ \"stackOrderReverse\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.stackOrderReverse),\n/* harmony export */ \"stratify\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.stratify),\n/* harmony export */ \"style\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.style),\n/* harmony export */ \"subset\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.subset),\n/* harmony export */ \"sum\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.sum),\n/* harmony export */ \"superset\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.superset),\n/* harmony export */ \"svg\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.svg),\n/* harmony export */ \"symbol\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbol),\n/* harmony export */ \"symbolAsterisk\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolAsterisk),\n/* harmony export */ \"symbolCircle\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolCircle),\n/* harmony export */ \"symbolCross\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolCross),\n/* harmony export */ \"symbolDiamond\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolDiamond),\n/* harmony export */ \"symbolDiamond2\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolDiamond2),\n/* harmony export */ \"symbolPlus\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolPlus),\n/* harmony export */ \"symbolSquare\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolSquare),\n/* harmony export */ \"symbolSquare2\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolSquare2),\n/* harmony export */ \"symbolStar\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolStar),\n/* harmony export */ \"symbolTimes\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolTimes),\n/* harmony export */ \"symbolTriangle\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolTriangle),\n/* harmony export */ \"symbolTriangle2\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolTriangle2),\n/* harmony export */ \"symbolWye\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolWye),\n/* harmony export */ \"symbolX\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolX),\n/* harmony export */ \"symbols\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbols),\n/* harmony export */ \"symbolsFill\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolsFill),\n/* harmony export */ \"symbolsStroke\": () => (/* reexport safe */ d3_shape__WEBPACK_IMPORTED_MODULE_24__.symbolsStroke),\n/* harmony export */ \"text\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.text),\n/* harmony export */ \"thresholdFreedmanDiaconis\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.thresholdFreedmanDiaconis),\n/* harmony export */ \"thresholdScott\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.thresholdScott),\n/* harmony export */ \"thresholdSturges\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.thresholdSturges),\n/* harmony export */ \"tickFormat\": () => (/* reexport safe */ d3_scale__WEBPACK_IMPORTED_MODULE_21__.tickFormat),\n/* harmony export */ \"tickIncrement\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.tickIncrement),\n/* harmony export */ \"tickStep\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.tickStep),\n/* harmony export */ \"ticks\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.ticks),\n/* harmony export */ \"timeDay\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeDay),\n/* harmony export */ \"timeDays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeDays),\n/* harmony export */ \"timeFormat\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.timeFormat),\n/* harmony export */ \"timeFormatDefaultLocale\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.timeFormatDefaultLocale),\n/* harmony export */ \"timeFormatLocale\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.timeFormatLocale),\n/* harmony export */ \"timeFriday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeFriday),\n/* harmony export */ \"timeFridays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeFridays),\n/* harmony export */ \"timeHour\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeHour),\n/* harmony export */ \"timeHours\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeHours),\n/* harmony export */ \"timeInterval\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeInterval),\n/* harmony export */ \"timeMillisecond\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMillisecond),\n/* harmony export */ \"timeMilliseconds\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMilliseconds),\n/* harmony export */ \"timeMinute\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMinute),\n/* harmony export */ \"timeMinutes\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMinutes),\n/* harmony export */ \"timeMonday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMonday),\n/* harmony export */ \"timeMondays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMondays),\n/* harmony export */ \"timeMonth\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMonth),\n/* harmony export */ \"timeMonths\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeMonths),\n/* harmony export */ \"timeParse\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.timeParse),\n/* harmony export */ \"timeSaturday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSaturday),\n/* harmony export */ \"timeSaturdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSaturdays),\n/* harmony export */ \"timeSecond\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSecond),\n/* harmony export */ \"timeSeconds\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSeconds),\n/* harmony export */ \"timeSunday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSunday),\n/* harmony export */ \"timeSundays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeSundays),\n/* harmony export */ \"timeThursday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeThursday),\n/* harmony export */ \"timeThursdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeThursdays),\n/* harmony export */ \"timeTickInterval\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeTickInterval),\n/* harmony export */ \"timeTicks\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeTicks),\n/* harmony export */ \"timeTuesday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeTuesday),\n/* harmony export */ \"timeTuesdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeTuesdays),\n/* harmony export */ \"timeWednesday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeWednesday),\n/* harmony export */ \"timeWednesdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeWednesdays),\n/* harmony export */ \"timeWeek\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeWeek),\n/* harmony export */ \"timeWeeks\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeWeeks),\n/* harmony export */ \"timeYear\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeYear),\n/* harmony export */ \"timeYears\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.timeYears),\n/* harmony export */ \"timeout\": () => (/* reexport safe */ d3_timer__WEBPACK_IMPORTED_MODULE_27__.timeout),\n/* harmony export */ \"timer\": () => (/* reexport safe */ d3_timer__WEBPACK_IMPORTED_MODULE_27__.timer),\n/* harmony export */ \"timerFlush\": () => (/* reexport safe */ d3_timer__WEBPACK_IMPORTED_MODULE_27__.timerFlush),\n/* harmony export */ \"transition\": () => (/* reexport safe */ d3_transition__WEBPACK_IMPORTED_MODULE_28__.transition),\n/* harmony export */ \"transpose\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.transpose),\n/* harmony export */ \"tree\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.tree),\n/* harmony export */ \"treemap\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemap),\n/* harmony export */ \"treemapBinary\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapBinary),\n/* harmony export */ \"treemapDice\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapDice),\n/* harmony export */ \"treemapResquarify\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapResquarify),\n/* harmony export */ \"treemapSlice\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapSlice),\n/* harmony export */ \"treemapSliceDice\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapSliceDice),\n/* harmony export */ \"treemapSquarify\": () => (/* reexport safe */ d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__.treemapSquarify),\n/* harmony export */ \"tsv\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.tsv),\n/* harmony export */ \"tsvFormat\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvFormat),\n/* harmony export */ \"tsvFormatBody\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvFormatBody),\n/* harmony export */ \"tsvFormatRow\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvFormatRow),\n/* harmony export */ \"tsvFormatRows\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvFormatRows),\n/* harmony export */ \"tsvFormatValue\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvFormatValue),\n/* harmony export */ \"tsvParse\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvParse),\n/* harmony export */ \"tsvParseRows\": () => (/* reexport safe */ d3_dsv__WEBPACK_IMPORTED_MODULE_9__.tsvParseRows),\n/* harmony export */ \"union\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.union),\n/* harmony export */ \"unixDay\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.unixDay),\n/* harmony export */ \"unixDays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.unixDays),\n/* harmony export */ \"utcDay\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcDay),\n/* harmony export */ \"utcDays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcDays),\n/* harmony export */ \"utcFormat\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.utcFormat),\n/* harmony export */ \"utcFriday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcFriday),\n/* harmony export */ \"utcFridays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcFridays),\n/* harmony export */ \"utcHour\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcHour),\n/* harmony export */ \"utcHours\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcHours),\n/* harmony export */ \"utcMillisecond\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMillisecond),\n/* harmony export */ \"utcMilliseconds\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMilliseconds),\n/* harmony export */ \"utcMinute\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMinute),\n/* harmony export */ \"utcMinutes\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMinutes),\n/* harmony export */ \"utcMonday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMonday),\n/* harmony export */ \"utcMondays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMondays),\n/* harmony export */ \"utcMonth\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMonth),\n/* harmony export */ \"utcMonths\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcMonths),\n/* harmony export */ \"utcParse\": () => (/* reexport safe */ d3_time_format__WEBPACK_IMPORTED_MODULE_26__.utcParse),\n/* harmony export */ \"utcSaturday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSaturday),\n/* harmony export */ \"utcSaturdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSaturdays),\n/* harmony export */ \"utcSecond\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSecond),\n/* harmony export */ \"utcSeconds\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSeconds),\n/* harmony export */ \"utcSunday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSunday),\n/* harmony export */ \"utcSundays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcSundays),\n/* harmony export */ \"utcThursday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcThursday),\n/* harmony export */ \"utcThursdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcThursdays),\n/* harmony export */ \"utcTickInterval\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcTickInterval),\n/* harmony export */ \"utcTicks\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcTicks),\n/* harmony export */ \"utcTuesday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcTuesday),\n/* harmony export */ \"utcTuesdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcTuesdays),\n/* harmony export */ \"utcWednesday\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcWednesday),\n/* harmony export */ \"utcWednesdays\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcWednesdays),\n/* harmony export */ \"utcWeek\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcWeek),\n/* harmony export */ \"utcWeeks\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcWeeks),\n/* harmony export */ \"utcYear\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcYear),\n/* harmony export */ \"utcYears\": () => (/* reexport safe */ d3_time__WEBPACK_IMPORTED_MODULE_25__.utcYears),\n/* harmony export */ \"variance\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.variance),\n/* harmony export */ \"window\": () => (/* reexport safe */ d3_selection__WEBPACK_IMPORTED_MODULE_23__.window),\n/* harmony export */ \"xml\": () => (/* reexport safe */ d3_fetch__WEBPACK_IMPORTED_MODULE_11__.xml),\n/* harmony export */ \"zip\": () => (/* reexport safe */ d3_array__WEBPACK_IMPORTED_MODULE_0__.zip),\n/* harmony export */ \"zoom\": () => (/* reexport safe */ d3_zoom__WEBPACK_IMPORTED_MODULE_29__.zoom),\n/* harmony export */ \"zoomIdentity\": () => (/* reexport safe */ d3_zoom__WEBPACK_IMPORTED_MODULE_29__.zoomIdentity),\n/* harmony export */ \"zoomTransform\": () => (/* reexport safe */ d3_zoom__WEBPACK_IMPORTED_MODULE_29__.zoomTransform)\n/* harmony export */ });\n/* harmony import */ var d3_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3-array */ \"../../../node_modules/d3-array/src/index.js\");\n/* harmony import */ var d3_axis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-axis */ \"../../../node_modules/d3-axis/src/index.js\");\n/* harmony import */ var d3_brush__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-brush */ \"../../../node_modules/d3-brush/src/index.js\");\n/* harmony import */ var d3_chord__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-chord */ \"../../../node_modules/d3-chord/src/index.js\");\n/* harmony import */ var d3_color__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3-color */ \"../../../node_modules/d3-color/src/index.js\");\n/* harmony import */ var d3_contour__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3-contour */ \"../../../node_modules/d3-contour/src/index.js\");\n/* harmony import */ var d3_delaunay__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! d3-delaunay */ \"../../../node_modules/d3-delaunay/src/index.js\");\n/* harmony import */ var d3_dispatch__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! d3-dispatch */ \"../../../node_modules/d3-dispatch/src/index.js\");\n/* harmony import */ var d3_drag__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! d3-drag */ \"../../../node_modules/d3-drag/src/index.js\");\n/* harmony import */ var d3_dsv__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-dsv */ \"../../../node_modules/d3-dsv/src/index.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! d3-ease */ \"../../../node_modules/d3-ease/src/index.js\");\n/* harmony import */ var d3_fetch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! d3-fetch */ \"../../../node_modules/d3-fetch/src/index.js\");\n/* harmony import */ var d3_force__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! d3-force */ \"../../../node_modules/d3-force/src/index.js\");\n/* harmony import */ var d3_format__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! d3-format */ \"../../../node_modules/d3-format/src/index.js\");\n/* harmony import */ var d3_geo__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! d3-geo */ \"../../../node_modules/d3-geo/src/index.js\");\n/* harmony import */ var d3_hierarchy__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! d3-hierarchy */ \"../../../node_modules/d3-hierarchy/src/index.js\");\n/* harmony import */ var d3_interpolate__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! d3-interpolate */ \"../../../node_modules/d3-interpolate/src/index.js\");\n/* harmony import */ var d3_path__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! d3-path */ \"../../../node_modules/d3-path/src/index.js\");\n/* harmony import */ var d3_polygon__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! d3-polygon */ \"../../../node_modules/d3-polygon/src/index.js\");\n/* harmony import */ var d3_quadtree__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! d3-quadtree */ \"../../../node_modules/d3-quadtree/src/index.js\");\n/* harmony import */ var d3_random__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! d3-random */ \"../../../node_modules/d3-random/src/index.js\");\n/* harmony import */ var d3_scale__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! d3-scale */ \"../../../node_modules/d3-scale/src/index.js\");\n/* harmony import */ var d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! d3-scale-chromatic */ \"../../../node_modules/d3-scale-chromatic/src/index.js\");\n/* harmony import */ var d3_selection__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! d3-selection */ \"../../../node_modules/d3-selection/src/index.js\");\n/* harmony import */ var d3_shape__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! d3-shape */ \"../../../node_modules/d3-shape/src/index.js\");\n/* harmony import */ var d3_time__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! d3-time */ \"../../../node_modules/d3-time/src/index.js\");\n/* harmony import */ var d3_time_format__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! d3-time-format */ \"../../../node_modules/d3-time-format/src/index.js\");\n/* harmony import */ var d3_timer__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! d3-timer */ \"../../../node_modules/d3-timer/src/index.js\");\n/* harmony import */ var d3_transition__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! d3-transition */ \"../../../node_modules/d3-transition/src/index.js\");\n/* harmony import */ var d3_zoom__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! d3-zoom */ \"../../../node_modules/d3-zoom/src/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2QzL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBeUI7QUFDRDtBQUNDO0FBQ0E7QUFDQTtBQUNFO0FBQ0M7QUFDQTtBQUNKO0FBQ0Q7QUFDQztBQUNDO0FBQ0E7QUFDQztBQUNIO0FBQ007QUFDRTtBQUNQO0FBQ0c7QUFDQztBQUNGO0FBQ0Q7QUFDVTtBQUNOO0FBQ0o7QUFDRDtBQUNPO0FBQ047QUFDSztBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kMy9zcmMvaW5kZXguanM/MjQwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiZDMtYXJyYXlcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1heGlzXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtYnJ1c2hcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1jaG9yZFwiO1xuZXhwb3J0ICogZnJvbSBcImQzLWNvbG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtY29udG91clwiO1xuZXhwb3J0ICogZnJvbSBcImQzLWRlbGF1bmF5XCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtZGlzcGF0Y2hcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1kcmFnXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtZHN2XCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtZWFzZVwiO1xuZXhwb3J0ICogZnJvbSBcImQzLWZldGNoXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtZm9yY2VcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1mb3JtYXRcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1nZW9cIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1oaWVyYXJjaHlcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcImQzLXBhdGhcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1wb2x5Z29uXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtcXVhZHRyZWVcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1yYW5kb21cIjtcbmV4cG9ydCAqIGZyb20gXCJkMy1zY2FsZVwiO1xuZXhwb3J0ICogZnJvbSBcImQzLXNjYWxlLWNocm9tYXRpY1wiO1xuZXhwb3J0ICogZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcImQzLXNoYXBlXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtdGltZVwiO1xuZXhwb3J0ICogZnJvbSBcImQzLXRpbWUtZm9ybWF0XCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtdGltZXJcIjtcbmV4cG9ydCAqIGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiZDMtem9vbVwiO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/d3/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/arrows.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/arrows.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"arrows\": () => (/* binding */ arrows),\n/* harmony export */ \"setArrows\": () => (/* binding */ setArrows)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\nvar arrows = {\n normal,\n vee,\n undirected,\n};\n\nfunction setArrows(value) {\n arrows = value;\n}\n\nfunction normal(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 0 L 10 5 L 0 10 L 4 5 z')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent\n .append('marker')\n .attr('id', id)\n .attr('viewBox', '0 0 10 10')\n .attr('refX', 9)\n .attr('refY', 5)\n .attr('markerUnits', 'strokeWidth')\n .attr('markerWidth', 8)\n .attr('markerHeight', 6)\n .attr('orient', 'auto');\n\n var path = marker\n .append('path')\n .attr('d', 'M 0 5 L 10 5')\n .style('stroke-width', 1)\n .style('stroke-dasharray', '1,0');\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(path, edge[type + 'Style']);\n if (edge[type + 'Class']) {\n path.attr('class', edge[type + 'Class']);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9hcnJvd3MuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWtDOztBQUVMOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdEQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsZ0RBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxnREFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2Fycm93cy5qcz9kMTJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgYXJyb3dzLCBzZXRBcnJvd3MgfTtcblxudmFyIGFycm93cyA9IHtcbiAgbm9ybWFsLFxuICB2ZWUsXG4gIHVuZGlyZWN0ZWQsXG59O1xuXG5mdW5jdGlvbiBzZXRBcnJvd3ModmFsdWUpIHtcbiAgYXJyb3dzID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbChwYXJlbnQsIGlkLCBlZGdlLCB0eXBlKSB7XG4gIHZhciBtYXJrZXIgPSBwYXJlbnRcbiAgICAuYXBwZW5kKCdtYXJrZXInKVxuICAgIC5hdHRyKCdpZCcsIGlkKVxuICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgMCAxMCAxMCcpXG4gICAgLmF0dHIoJ3JlZlgnLCA5KVxuICAgIC5hdHRyKCdyZWZZJywgNSlcbiAgICAuYXR0cignbWFya2VyVW5pdHMnLCAnc3Ryb2tlV2lkdGgnKVxuICAgIC5hdHRyKCdtYXJrZXJXaWR0aCcsIDgpXG4gICAgLmF0dHIoJ21hcmtlckhlaWdodCcsIDYpXG4gICAgLmF0dHIoJ29yaWVudCcsICdhdXRvJyk7XG5cbiAgdmFyIHBhdGggPSBtYXJrZXJcbiAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAuYXR0cignZCcsICdNIDAgMCBMIDEwIDUgTCAwIDEwIHonKVxuICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgMSlcbiAgICAuc3R5bGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAnMSwwJyk7XG4gIHV0aWwuYXBwbHlTdHlsZShwYXRoLCBlZGdlW3R5cGUgKyAnU3R5bGUnXSk7XG4gIGlmIChlZGdlW3R5cGUgKyAnQ2xhc3MnXSkge1xuICAgIHBhdGguYXR0cignY2xhc3MnLCBlZGdlW3R5cGUgKyAnQ2xhc3MnXSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmVlKHBhcmVudCwgaWQsIGVkZ2UsIHR5cGUpIHtcbiAgdmFyIG1hcmtlciA9IHBhcmVudFxuICAgIC5hcHBlbmQoJ21hcmtlcicpXG4gICAgLmF0dHIoJ2lkJywgaWQpXG4gICAgLmF0dHIoJ3ZpZXdCb3gnLCAnMCAwIDEwIDEwJylcbiAgICAuYXR0cigncmVmWCcsIDkpXG4gICAgLmF0dHIoJ3JlZlknLCA1KVxuICAgIC5hdHRyKCdtYXJrZXJVbml0cycsICdzdHJva2VXaWR0aCcpXG4gICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAuYXR0cignbWFya2VySGVpZ2h0JywgNilcbiAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKTtcblxuICB2YXIgcGF0aCA9IG1hcmtlclxuICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgIC5hdHRyKCdkJywgJ00gMCAwIEwgMTAgNSBMIDAgMTAgTCA0IDUgeicpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAxKVxuICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsICcxLDAnKTtcbiAgdXRpbC5hcHBseVN0eWxlKHBhdGgsIGVkZ2VbdHlwZSArICdTdHlsZSddKTtcbiAgaWYgKGVkZ2VbdHlwZSArICdDbGFzcyddKSB7XG4gICAgcGF0aC5hdHRyKCdjbGFzcycsIGVkZ2VbdHlwZSArICdDbGFzcyddKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1bmRpcmVjdGVkKHBhcmVudCwgaWQsIGVkZ2UsIHR5cGUpIHtcbiAgdmFyIG1hcmtlciA9IHBhcmVudFxuICAgIC5hcHBlbmQoJ21hcmtlcicpXG4gICAgLmF0dHIoJ2lkJywgaWQpXG4gICAgLmF0dHIoJ3ZpZXdCb3gnLCAnMCAwIDEwIDEwJylcbiAgICAuYXR0cigncmVmWCcsIDkpXG4gICAgLmF0dHIoJ3JlZlknLCA1KVxuICAgIC5hdHRyKCdtYXJrZXJVbml0cycsICdzdHJva2VXaWR0aCcpXG4gICAgLmF0dHIoJ21hcmtlcldpZHRoJywgOClcbiAgICAuYXR0cignbWFya2VySGVpZ2h0JywgNilcbiAgICAuYXR0cignb3JpZW50JywgJ2F1dG8nKTtcblxuICB2YXIgcGF0aCA9IG1hcmtlclxuICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgIC5hdHRyKCdkJywgJ00gMCA1IEwgMTAgNScpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAxKVxuICAgIC5zdHlsZSgnc3Ryb2tlLWRhc2hhcnJheScsICcxLDAnKTtcbiAgdXRpbC5hcHBseVN0eWxlKHBhdGgsIGVkZ2VbdHlwZSArICdTdHlsZSddKTtcbiAgaWYgKGVkZ2VbdHlwZSArICdDbGFzcyddKSB7XG4gICAgcGF0aC5hdHRyKCdjbGFzcycsIGVkZ2VbdHlwZSArICdDbGFzcyddKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/arrows.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createClusters\": () => (/* binding */ createClusters),\n/* harmony export */ \"setCreateClusters\": () => (/* binding */ setCreateClusters)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _label_add_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label/add-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\n\nvar createClusters = function (selection, g) {\n var clusters = g.nodes().filter(function (v) {\n return _util_js__WEBPACK_IMPORTED_MODULE_2__.isSubgraph(g, v);\n });\n var svgClusters = selection.selectAll('g.cluster').data(clusters, function (v) {\n return v;\n });\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(svgClusters.exit(), g).style('opacity', 0).remove();\n\n var enterSelection = svgClusters\n .enter()\n .append('g')\n .attr('class', 'cluster')\n .attr('id', function (v) {\n var node = g.node(v);\n return node.id;\n })\n .style('opacity', 0)\n .each(function (v) {\n var node = g.node(v);\n var thisGroup = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n d3__WEBPACK_IMPORTED_MODULE_0__.select(this).append('rect');\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n (0,_label_add_label_js__WEBPACK_IMPORTED_MODULE_1__.addLabel)(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters = svgClusters.merge(enterSelection);\n\n svgClusters = _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(svgClusters, g).style('opacity', 1);\n\n svgClusters.selectAll('rect').each(function (c) {\n var node = g.node(c);\n var domCluster = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyStyle(domCluster, node.style);\n });\n\n return svgClusters;\n};\n\nfunction setCreateClusters(value) {\n createClusters = value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9jcmVhdGUtY2x1c3RlcnMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBeUI7QUFDdUI7QUFDZDs7QUFFVzs7QUFFN0M7QUFDQTtBQUNBLFdBQVcsZ0RBQWU7QUFDMUIsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHOztBQUVILEVBQUUscURBQW9COztBQUV0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0NBQVM7QUFDL0IsTUFBTSxzQ0FBUztBQUNmO0FBQ0EsTUFBTSw2REFBUTtBQUNkLEtBQUs7O0FBRUw7O0FBRUEsZ0JBQWdCLHFEQUFvQjs7QUFFcEM7QUFDQTtBQUNBLHFCQUFxQixzQ0FBUztBQUM5QixJQUFJLGdEQUFlO0FBQ25CLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9jcmVhdGUtY2x1c3RlcnMuanM/YjhiNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBhZGRMYWJlbCB9IGZyb20gJy4vbGFiZWwvYWRkLWxhYmVsLmpzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgY3JlYXRlQ2x1c3RlcnMsIHNldENyZWF0ZUNsdXN0ZXJzIH07XG5cbnZhciBjcmVhdGVDbHVzdGVycyA9IGZ1bmN0aW9uIChzZWxlY3Rpb24sIGcpIHtcbiAgdmFyIGNsdXN0ZXJzID0gZy5ub2RlcygpLmZpbHRlcihmdW5jdGlvbiAodikge1xuICAgIHJldHVybiB1dGlsLmlzU3ViZ3JhcGgoZywgdik7XG4gIH0pO1xuICB2YXIgc3ZnQ2x1c3RlcnMgPSBzZWxlY3Rpb24uc2VsZWN0QWxsKCdnLmNsdXN0ZXInKS5kYXRhKGNsdXN0ZXJzLCBmdW5jdGlvbiAodikge1xuICAgIHJldHVybiB2O1xuICB9KTtcblxuICB1dGlsLmFwcGx5VHJhbnNpdGlvbihzdmdDbHVzdGVycy5leGl0KCksIGcpLnN0eWxlKCdvcGFjaXR5JywgMCkucmVtb3ZlKCk7XG5cbiAgdmFyIGVudGVyU2VsZWN0aW9uID0gc3ZnQ2x1c3RlcnNcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2cnKVxuICAgIC5hdHRyKCdjbGFzcycsICdjbHVzdGVyJylcbiAgICAuYXR0cignaWQnLCBmdW5jdGlvbiAodikge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICByZXR1cm4gbm9kZS5pZDtcbiAgICB9KVxuICAgIC5zdHlsZSgnb3BhY2l0eScsIDApXG4gICAgLmVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgdmFyIHRoaXNHcm91cCA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAgIGQzLnNlbGVjdCh0aGlzKS5hcHBlbmQoJ3JlY3QnKTtcbiAgICAgIHZhciBsYWJlbEdyb3VwID0gdGhpc0dyb3VwLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2xhYmVsJyk7XG4gICAgICBhZGRMYWJlbChsYWJlbEdyb3VwLCBub2RlLCBub2RlLmNsdXN0ZXJMYWJlbFBvcyk7XG4gICAgfSk7XG5cbiAgc3ZnQ2x1c3RlcnMgPSBzdmdDbHVzdGVycy5tZXJnZShlbnRlclNlbGVjdGlvbik7XG5cbiAgc3ZnQ2x1c3RlcnMgPSB1dGlsLmFwcGx5VHJhbnNpdGlvbihzdmdDbHVzdGVycywgZykuc3R5bGUoJ29wYWNpdHknLCAxKTtcblxuICBzdmdDbHVzdGVycy5zZWxlY3RBbGwoJ3JlY3QnKS5lYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUoYyk7XG4gICAgdmFyIGRvbUNsdXN0ZXIgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgdXRpbC5hcHBseVN0eWxlKGRvbUNsdXN0ZXIsIG5vZGUuc3R5bGUpO1xuICB9KTtcblxuICByZXR1cm4gc3ZnQ2x1c3RlcnM7XG59O1xuXG5mdW5jdGlvbiBzZXRDcmVhdGVDbHVzdGVycyh2YWx1ZSkge1xuICBjcmVhdGVDbHVzdGVycyA9IHZhbHVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createEdgeLabels\": () => (/* binding */ createEdgeLabels),\n/* harmony export */ \"setCreateEdgeLabels\": () => (/* binding */ setCreateEdgeLabels)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _label_add_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label/add-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\n\n\nlet createEdgeLabels = function (selection, g) {\n var svgEdgeLabels = selection\n .selectAll('g.edgeLabel')\n .data(g.edges(), function (e) {\n return _util_js__WEBPACK_IMPORTED_MODULE_2__.edgeToId(e);\n })\n .classed('update', true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append('g').classed('edgeLabel', true).style('opacity', 0);\n\n svgEdgeLabels = selection.selectAll('g.edgeLabel');\n\n svgEdgeLabels.each(function (e) {\n var root = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n root.select('.label').remove();\n var edge = g.edge(e);\n var label = (0,_label_add_label_js__WEBPACK_IMPORTED_MODULE_1__.addLabel)(root, g.edge(e), 0).classed('label', true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) {\n label.attr('id', edge.labelId);\n }\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](edge, 'width')) {\n edge.width = bbox.width;\n }\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](edge, 'height')) {\n edge.height = bbox.height;\n }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgEdgeLabels;\n};\n\nfunction setCreateEdgeLabels(value) {\n createEdgeLabels = value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9jcmVhdGUtZWRnZS1sYWJlbHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXlCO0FBQ007QUFDaUI7QUFDZDs7QUFFZTs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhDQUFhO0FBQzFCLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZUFBZSxzQ0FBUztBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDZEQUFRO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaURBQUs7QUFDZDtBQUNBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osbURBQW1EO0FBQ25EOztBQUVBLEVBQUUscURBQW9COztBQUV0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2NyZWF0ZS1lZGdlLWxhYmVscy5qcz8yNGI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGFkZExhYmVsIH0gZnJvbSAnLi9sYWJlbC9hZGQtbGFiZWwuanMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBjcmVhdGVFZGdlTGFiZWxzLCBzZXRDcmVhdGVFZGdlTGFiZWxzIH07XG5cbmxldCBjcmVhdGVFZGdlTGFiZWxzID0gZnVuY3Rpb24gKHNlbGVjdGlvbiwgZykge1xuICB2YXIgc3ZnRWRnZUxhYmVscyA9IHNlbGVjdGlvblxuICAgIC5zZWxlY3RBbGwoJ2cuZWRnZUxhYmVsJylcbiAgICAuZGF0YShnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gdXRpbC5lZGdlVG9JZChlKTtcbiAgICB9KVxuICAgIC5jbGFzc2VkKCd1cGRhdGUnLCB0cnVlKTtcblxuICBzdmdFZGdlTGFiZWxzLmV4aXQoKS5yZW1vdmUoKTtcbiAgc3ZnRWRnZUxhYmVscy5lbnRlcigpLmFwcGVuZCgnZycpLmNsYXNzZWQoJ2VkZ2VMYWJlbCcsIHRydWUpLnN0eWxlKCdvcGFjaXR5JywgMCk7XG5cbiAgc3ZnRWRnZUxhYmVscyA9IHNlbGVjdGlvbi5zZWxlY3RBbGwoJ2cuZWRnZUxhYmVsJyk7XG5cbiAgc3ZnRWRnZUxhYmVscy5lYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHJvb3QgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgcm9vdC5zZWxlY3QoJy5sYWJlbCcpLnJlbW92ZSgpO1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHZhciBsYWJlbCA9IGFkZExhYmVsKHJvb3QsIGcuZWRnZShlKSwgMCkuY2xhc3NlZCgnbGFiZWwnLCB0cnVlKTtcbiAgICB2YXIgYmJveCA9IGxhYmVsLm5vZGUoKS5nZXRCQm94KCk7XG5cbiAgICBpZiAoZWRnZS5sYWJlbElkKSB7XG4gICAgICBsYWJlbC5hdHRyKCdpZCcsIGVkZ2UubGFiZWxJZCk7XG4gICAgfVxuICAgIGlmICghXy5oYXMoZWRnZSwgJ3dpZHRoJykpIHtcbiAgICAgIGVkZ2Uud2lkdGggPSBiYm94LndpZHRoO1xuICAgIH1cbiAgICBpZiAoIV8uaGFzKGVkZ2UsICdoZWlnaHQnKSkge1xuICAgICAgZWRnZS5oZWlnaHQgPSBiYm94LmhlaWdodDtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBleGl0U2VsZWN0aW9uO1xuXG4gIGlmIChzdmdFZGdlTGFiZWxzLmV4aXQpIHtcbiAgICBleGl0U2VsZWN0aW9uID0gc3ZnRWRnZUxhYmVscy5leGl0KCk7XG4gIH0gZWxzZSB7XG4gICAgZXhpdFNlbGVjdGlvbiA9IHN2Z0VkZ2VMYWJlbHMuc2VsZWN0QWxsKG51bGwpOyAvLyBlbXB0eSBzZWxlY3Rpb25cbiAgfVxuXG4gIHV0aWwuYXBwbHlUcmFuc2l0aW9uKGV4aXRTZWxlY3Rpb24sIGcpLnN0eWxlKCdvcGFjaXR5JywgMCkucmVtb3ZlKCk7XG5cbiAgcmV0dXJuIHN2Z0VkZ2VMYWJlbHM7XG59O1xuXG5mdW5jdGlvbiBzZXRDcmVhdGVFZGdlTGFiZWxzKHZhbHVlKSB7XG4gIGNyZWF0ZUVkZ2VMYWJlbHMgPSB2YWx1ZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createEdgePaths\": () => (/* binding */ createEdgePaths),\n/* harmony export */ \"setCreateEdgePaths\": () => (/* binding */ setCreateEdgePaths)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/uniqueId.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var _intersect_intersect_node_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect/intersect-node.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\n\n\nvar createEdgePaths = function (selection, g, arrows) {\n var previousPaths = selection\n .selectAll('g.edgePath')\n .data(g.edges(), function (e) {\n return _util_js__WEBPACK_IMPORTED_MODULE_2__.edgeToId(e);\n })\n .classed('update', true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(svgPaths, g).style('opacity', 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function (e) {\n var domEdge = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr('id', edge.id);\n }\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyClass(\n domEdge,\n edge['class'],\n (domEdge.classed('update') ? 'update ' : '') + 'edgePath'\n );\n });\n\n svgPaths.selectAll('path.path').each(function (e) {\n var edge = g.edge(e);\n edge.arrowheadId = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('arrowhead');\n\n var domEdge = d3__WEBPACK_IMPORTED_MODULE_0__.select(this)\n .attr('marker-end', function () {\n return 'url(' + makeFragmentRef(location.href, edge.arrowheadId) + ')';\n })\n .style('fill', 'none');\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(domEdge, g).attr('d', function (e) {\n return calcPoints(g, e);\n });\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll('defs *').remove();\n svgPaths.selectAll('defs').each(function (e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3__WEBPACK_IMPORTED_MODULE_0__.select(this), edge.arrowheadId, edge, 'arrowhead');\n });\n\n return svgPaths;\n};\n\nfunction setCreateEdgePaths(value) {\n createEdgePaths = value;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split('#')[0];\n return baseUrl + '#' + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift((0,_intersect_intersect_node_js__WEBPACK_IMPORTED_MODULE_1__.intersectNode)(tail, points[0]));\n points.push((0,_intersect_intersect_node_js__WEBPACK_IMPORTED_MODULE_1__.intersectNode)(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n // @ts-expect-error\n var line = (d3__WEBPACK_IMPORTED_MODULE_0__.line || d3__WEBPACK_IMPORTED_MODULE_0__.svg.line)()\n .x(function (d) {\n return d.x;\n })\n .y(function (d) {\n return d.y;\n });\n\n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement\n .getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append('g').attr('class', 'edgePath').style('opacity', 0);\n svgPathsEnter\n .append('path')\n .attr('class', 'path')\n .attr('d', function (e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](edge.points.length).map(function () {\n return getCoords(sourceElem);\n });\n return createLine(edge, points);\n });\n svgPathsEnter.append('defs');\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(svgPathExit, g).style('opacity', 0).remove();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9jcmVhdGUtZWRnZS1wYXRocy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXlCO0FBQ007QUFDK0I7QUFDNUI7O0FBRWE7O0FBRS9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4Q0FBYTtBQUMxQixLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEVBQUUscURBQW9COztBQUV0QjtBQUNBO0FBQ0Esa0JBQWtCLHNDQUFTO0FBQzNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUksZ0RBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSx1QkFBdUIsaURBQVU7O0FBRWpDLGtCQUFrQixzQ0FDTDtBQUNiO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsSUFBSSxxREFBb0I7QUFDeEI7QUFDQSxLQUFLOztBQUVMLElBQUksZ0RBQWU7QUFDbkIsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsc0NBQVM7QUFDdkIsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJFQUFhO0FBQzlCLGNBQWMsMkVBQWE7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsb0NBQU8sSUFBSSx3Q0FBVztBQUNwQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLOztBQUVMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixpREFBTztBQUMxQjtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUUscURBQW9CO0FBQ3RCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvY3JlYXRlLWVkZ2UtcGF0aHMuanM/ZGIxNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBpbnRlcnNlY3ROb2RlIH0gZnJvbSAnLi9pbnRlcnNlY3QvaW50ZXJzZWN0LW5vZGUuanMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBjcmVhdGVFZGdlUGF0aHMsIHNldENyZWF0ZUVkZ2VQYXRocyB9O1xuXG52YXIgY3JlYXRlRWRnZVBhdGhzID0gZnVuY3Rpb24gKHNlbGVjdGlvbiwgZywgYXJyb3dzKSB7XG4gIHZhciBwcmV2aW91c1BhdGhzID0gc2VsZWN0aW9uXG4gICAgLnNlbGVjdEFsbCgnZy5lZGdlUGF0aCcpXG4gICAgLmRhdGEoZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIHV0aWwuZWRnZVRvSWQoZSk7XG4gICAgfSlcbiAgICAuY2xhc3NlZCgndXBkYXRlJywgdHJ1ZSk7XG5cbiAgdmFyIG5ld1BhdGhzID0gZW50ZXIocHJldmlvdXNQYXRocywgZyk7XG4gIGV4aXQocHJldmlvdXNQYXRocywgZyk7XG5cbiAgdmFyIHN2Z1BhdGhzID0gcHJldmlvdXNQYXRocy5tZXJnZSAhPT0gdW5kZWZpbmVkID8gcHJldmlvdXNQYXRocy5tZXJnZShuZXdQYXRocykgOiBwcmV2aW91c1BhdGhzO1xuICB1dGlsLmFwcGx5VHJhbnNpdGlvbihzdmdQYXRocywgZykuc3R5bGUoJ29wYWNpdHknLCAxKTtcblxuICAvLyBTYXZlIERPTSBlbGVtZW50IGluIHRoZSBwYXRoIGdyb3VwLCBhbmQgc2V0IElEIGFuZCBjbGFzc1xuICBzdmdQYXRocy5lYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGRvbUVkZ2UgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgZWRnZS5lbGVtID0gdGhpcztcblxuICAgIGlmIChlZGdlLmlkKSB7XG4gICAgICBkb21FZGdlLmF0dHIoJ2lkJywgZWRnZS5pZCk7XG4gICAgfVxuXG4gICAgdXRpbC5hcHBseUNsYXNzKFxuICAgICAgZG9tRWRnZSxcbiAgICAgIGVkZ2VbJ2NsYXNzJ10sXG4gICAgICAoZG9tRWRnZS5jbGFzc2VkKCd1cGRhdGUnKSA/ICd1cGRhdGUgJyA6ICcnKSArICdlZGdlUGF0aCdcbiAgICApO1xuICB9KTtcblxuICBzdmdQYXRocy5zZWxlY3RBbGwoJ3BhdGgucGF0aCcpLmVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBlZGdlLmFycm93aGVhZElkID0gXy51bmlxdWVJZCgnYXJyb3doZWFkJyk7XG5cbiAgICB2YXIgZG9tRWRnZSA9IGQzXG4gICAgICAuc2VsZWN0KHRoaXMpXG4gICAgICAuYXR0cignbWFya2VyLWVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICd1cmwoJyArIG1ha2VGcmFnbWVudFJlZihsb2NhdGlvbi5ocmVmLCBlZGdlLmFycm93aGVhZElkKSArICcpJztcbiAgICAgIH0pXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpO1xuXG4gICAgdXRpbC5hcHBseVRyYW5zaXRpb24oZG9tRWRnZSwgZykuYXR0cignZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gY2FsY1BvaW50cyhnLCBlKTtcbiAgICB9KTtcblxuICAgIHV0aWwuYXBwbHlTdHlsZShkb21FZGdlLCBlZGdlLnN0eWxlKTtcbiAgfSk7XG5cbiAgc3ZnUGF0aHMuc2VsZWN0QWxsKCdkZWZzIConKS5yZW1vdmUoKTtcbiAgc3ZnUGF0aHMuc2VsZWN0QWxsKCdkZWZzJykuZWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHZhciBhcnJvd2hlYWQgPSBhcnJvd3NbZWRnZS5hcnJvd2hlYWRdO1xuICAgIGFycm93aGVhZChkMy5zZWxlY3QodGhpcyksIGVkZ2UuYXJyb3doZWFkSWQsIGVkZ2UsICdhcnJvd2hlYWQnKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN2Z1BhdGhzO1xufTtcblxuZnVuY3Rpb24gc2V0Q3JlYXRlRWRnZVBhdGhzKHZhbHVlKSB7XG4gIGNyZWF0ZUVkZ2VQYXRocyA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBtYWtlRnJhZ21lbnRSZWYodXJsLCBmcmFnbWVudElkKSB7XG4gIHZhciBiYXNlVXJsID0gdXJsLnNwbGl0KCcjJylbMF07XG4gIHJldHVybiBiYXNlVXJsICsgJyMnICsgZnJhZ21lbnRJZDtcbn1cblxuZnVuY3Rpb24gY2FsY1BvaW50cyhnLCBlKSB7XG4gIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICB2YXIgdGFpbCA9IGcubm9kZShlLnYpO1xuICB2YXIgaGVhZCA9IGcubm9kZShlLncpO1xuICB2YXIgcG9pbnRzID0gZWRnZS5wb2ludHMuc2xpY2UoMSwgZWRnZS5wb2ludHMubGVuZ3RoIC0gMSk7XG4gIHBvaW50cy51bnNoaWZ0KGludGVyc2VjdE5vZGUodGFpbCwgcG9pbnRzWzBdKSk7XG4gIHBvaW50cy5wdXNoKGludGVyc2VjdE5vZGUoaGVhZCwgcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSkpO1xuXG4gIHJldHVybiBjcmVhdGVMaW5lKGVkZ2UsIHBvaW50cyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpbmUoZWRnZSwgcG9pbnRzKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgdmFyIGxpbmUgPSAoZDMubGluZSB8fCBkMy5zdmcubGluZSkoKVxuICAgIC54KGZ1bmN0aW9uIChkKSB7XG4gICAgICByZXR1cm4gZC54O1xuICAgIH0pXG4gICAgLnkoZnVuY3Rpb24gKGQpIHtcbiAgICAgIHJldHVybiBkLnk7XG4gICAgfSk7XG5cbiAgKGxpbmUuY3VydmUgfHwgbGluZS5pbnRlcnBvbGF0ZSkoZWRnZS5jdXJ2ZSk7XG5cbiAgcmV0dXJuIGxpbmUocG9pbnRzKTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29vcmRzKGVsZW0pIHtcbiAgdmFyIGJib3ggPSBlbGVtLmdldEJCb3goKTtcbiAgdmFyIG1hdHJpeCA9IGVsZW0ub3duZXJTVkdFbGVtZW50XG4gICAgLmdldFNjcmVlbkNUTSgpXG4gICAgLmludmVyc2UoKVxuICAgIC5tdWx0aXBseShlbGVtLmdldFNjcmVlbkNUTSgpKVxuICAgIC50cmFuc2xhdGUoYmJveC53aWR0aCAvIDIsIGJib3guaGVpZ2h0IC8gMik7XG4gIHJldHVybiB7IHg6IG1hdHJpeC5lLCB5OiBtYXRyaXguZiB9O1xufVxuXG5mdW5jdGlvbiBlbnRlcihzdmdQYXRocywgZykge1xuICB2YXIgc3ZnUGF0aHNFbnRlciA9IHN2Z1BhdGhzLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnZWRnZVBhdGgnKS5zdHlsZSgnb3BhY2l0eScsIDApO1xuICBzdmdQYXRoc0VudGVyXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3BhdGgnKVxuICAgIC5hdHRyKCdkJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgICAgdmFyIHNvdXJjZUVsZW0gPSBnLm5vZGUoZS52KS5lbGVtO1xuICAgICAgdmFyIHBvaW50cyA9IF8ucmFuZ2UoZWRnZS5wb2ludHMubGVuZ3RoKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZ2V0Q29vcmRzKHNvdXJjZUVsZW0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3JlYXRlTGluZShlZGdlLCBwb2ludHMpO1xuICAgIH0pO1xuICBzdmdQYXRoc0VudGVyLmFwcGVuZCgnZGVmcycpO1xuICByZXR1cm4gc3ZnUGF0aHNFbnRlcjtcbn1cblxuZnVuY3Rpb24gZXhpdChzdmdQYXRocywgZykge1xuICB2YXIgc3ZnUGF0aEV4aXQgPSBzdmdQYXRocy5leGl0KCk7XG4gIHV0aWwuYXBwbHlUcmFuc2l0aW9uKHN2Z1BhdGhFeGl0LCBnKS5zdHlsZSgnb3BhY2l0eScsIDApLnJlbW92ZSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createNodes\": () => (/* binding */ createNodes),\n/* harmony export */ \"setCreateNodes\": () => (/* binding */ setCreateNodes)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/pick.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _label_add_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label/add-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\n\n\nvar createNodes = function (selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function (v) {\n return !_util_js__WEBPACK_IMPORTED_MODULE_2__.isSubgraph(g, v);\n });\n var svgNodes = selection\n .selectAll('g.node')\n .data(simpleNodes, function (v) {\n return v;\n })\n .classed('update', true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append('g').attr('class', 'node').style('opacity', 0);\n\n svgNodes = selection.selectAll('g.node');\n\n svgNodes.each(function (v) {\n var node = g.node(v);\n var thisGroup = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyClass(\n thisGroup,\n node['class'],\n (thisGroup.classed('update') ? 'update ' : '') + 'node'\n );\n\n thisGroup.select('g.label').remove();\n var labelGroup = thisGroup.append('g').attr('class', 'label');\n var labelDom = (0,_label_add_label_js__WEBPACK_IMPORTED_MODULE_1__.addLabel)(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](labelDom.node().getBBox(), 'width', 'height');\n\n node.elem = this;\n\n if (node.id) {\n thisGroup.attr('id', node.id);\n }\n if (node.labelId) {\n labelGroup.attr('id', node.labelId);\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](node, 'width')) {\n bbox.width = node.width;\n }\n if (lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](node, 'height')) {\n bbox.height = node.height;\n }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\n 'transform',\n 'translate(' +\n (node.paddingLeft - node.paddingRight) / 2 +\n ',' +\n (node.paddingTop - node.paddingBottom) / 2 +\n ')'\n );\n\n var root = d3__WEBPACK_IMPORTED_MODULE_0__.select(this);\n root.select('.label-container').remove();\n var shapeSvg = shape(root, bbox, node).classed('label-container', true);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n _util_js__WEBPACK_IMPORTED_MODULE_2__.applyTransition(exitSelection, g).style('opacity', 0).remove();\n\n return svgNodes;\n};\n\nfunction setCreateNodes(value) {\n createNodes = value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9jcmVhdGUtbm9kZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF5QjtBQUNNO0FBQ2lCO0FBQ2Q7O0FBRUs7O0FBRXZDO0FBQ0E7QUFDQSxZQUFZLGdEQUFlO0FBQzNCLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLHNDQUFTO0FBQzdCLElBQUksZ0RBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQiw2REFBUTtBQUMzQjtBQUNBLGVBQWUsaURBQU07O0FBRXJCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBLFFBQVEsaURBQUs7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGVBQWUsc0NBQVM7QUFDeEI7QUFDQTtBQUNBLElBQUksZ0RBQWU7O0FBRW5CO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSiw4Q0FBOEM7QUFDOUM7O0FBRUEsRUFBRSxxREFBb0I7O0FBRXRCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvY3JlYXRlLW5vZGVzLmpzPzhkM2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgYWRkTGFiZWwgfSBmcm9tICcuL2xhYmVsL2FkZC1sYWJlbC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbC5qcyc7XG5cbmV4cG9ydCB7IGNyZWF0ZU5vZGVzLCBzZXRDcmVhdGVOb2RlcyB9O1xuXG52YXIgY3JlYXRlTm9kZXMgPSBmdW5jdGlvbiAoc2VsZWN0aW9uLCBnLCBzaGFwZXMpIHtcbiAgdmFyIHNpbXBsZU5vZGVzID0gZy5ub2RlcygpLmZpbHRlcihmdW5jdGlvbiAodikge1xuICAgIHJldHVybiAhdXRpbC5pc1N1YmdyYXBoKGcsIHYpO1xuICB9KTtcbiAgdmFyIHN2Z05vZGVzID0gc2VsZWN0aW9uXG4gICAgLnNlbGVjdEFsbCgnZy5ub2RlJylcbiAgICAuZGF0YShzaW1wbGVOb2RlcywgZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiB2O1xuICAgIH0pXG4gICAgLmNsYXNzZWQoJ3VwZGF0ZScsIHRydWUpO1xuXG4gIHN2Z05vZGVzLmV4aXQoKS5yZW1vdmUoKTtcblxuICBzdmdOb2Rlcy5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ25vZGUnKS5zdHlsZSgnb3BhY2l0eScsIDApO1xuXG4gIHN2Z05vZGVzID0gc2VsZWN0aW9uLnNlbGVjdEFsbCgnZy5ub2RlJyk7XG5cbiAgc3ZnTm9kZXMuZWFjaChmdW5jdGlvbiAodikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHZhciB0aGlzR3JvdXAgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgdXRpbC5hcHBseUNsYXNzKFxuICAgICAgdGhpc0dyb3VwLFxuICAgICAgbm9kZVsnY2xhc3MnXSxcbiAgICAgICh0aGlzR3JvdXAuY2xhc3NlZCgndXBkYXRlJykgPyAndXBkYXRlICcgOiAnJykgKyAnbm9kZSdcbiAgICApO1xuXG4gICAgdGhpc0dyb3VwLnNlbGVjdCgnZy5sYWJlbCcpLnJlbW92ZSgpO1xuICAgIHZhciBsYWJlbEdyb3VwID0gdGhpc0dyb3VwLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2xhYmVsJyk7XG4gICAgdmFyIGxhYmVsRG9tID0gYWRkTGFiZWwobGFiZWxHcm91cCwgbm9kZSk7XG4gICAgdmFyIHNoYXBlID0gc2hhcGVzW25vZGUuc2hhcGVdO1xuICAgIHZhciBiYm94ID0gXy5waWNrKGxhYmVsRG9tLm5vZGUoKS5nZXRCQm94KCksICd3aWR0aCcsICdoZWlnaHQnKTtcblxuICAgIG5vZGUuZWxlbSA9IHRoaXM7XG5cbiAgICBpZiAobm9kZS5pZCkge1xuICAgICAgdGhpc0dyb3VwLmF0dHIoJ2lkJywgbm9kZS5pZCk7XG4gICAgfVxuICAgIGlmIChub2RlLmxhYmVsSWQpIHtcbiAgICAgIGxhYmVsR3JvdXAuYXR0cignaWQnLCBub2RlLmxhYmVsSWQpO1xuICAgIH1cblxuICAgIGlmIChfLmhhcyhub2RlLCAnd2lkdGgnKSkge1xuICAgICAgYmJveC53aWR0aCA9IG5vZGUud2lkdGg7XG4gICAgfVxuICAgIGlmIChfLmhhcyhub2RlLCAnaGVpZ2h0JykpIHtcbiAgICAgIGJib3guaGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgfVxuXG4gICAgYmJveC53aWR0aCArPSBub2RlLnBhZGRpbmdMZWZ0ICsgbm9kZS5wYWRkaW5nUmlnaHQ7XG4gICAgYmJveC5oZWlnaHQgKz0gbm9kZS5wYWRkaW5nVG9wICsgbm9kZS5wYWRkaW5nQm90dG9tO1xuICAgIGxhYmVsR3JvdXAuYXR0cihcbiAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgJ3RyYW5zbGF0ZSgnICtcbiAgICAgICAgKG5vZGUucGFkZGluZ0xlZnQgLSBub2RlLnBhZGRpbmdSaWdodCkgLyAyICtcbiAgICAgICAgJywnICtcbiAgICAgICAgKG5vZGUucGFkZGluZ1RvcCAtIG5vZGUucGFkZGluZ0JvdHRvbSkgLyAyICtcbiAgICAgICAgJyknXG4gICAgKTtcblxuICAgIHZhciByb290ID0gZDMuc2VsZWN0KHRoaXMpO1xuICAgIHJvb3Quc2VsZWN0KCcubGFiZWwtY29udGFpbmVyJykucmVtb3ZlKCk7XG4gICAgdmFyIHNoYXBlU3ZnID0gc2hhcGUocm9vdCwgYmJveCwgbm9kZSkuY2xhc3NlZCgnbGFiZWwtY29udGFpbmVyJywgdHJ1ZSk7XG4gICAgdXRpbC5hcHBseVN0eWxlKHNoYXBlU3ZnLCBub2RlLnN0eWxlKTtcblxuICAgIHZhciBzaGFwZUJCb3ggPSBzaGFwZVN2Zy5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIG5vZGUud2lkdGggPSBzaGFwZUJCb3gud2lkdGg7XG4gICAgbm9kZS5oZWlnaHQgPSBzaGFwZUJCb3guaGVpZ2h0O1xuICB9KTtcblxuICB2YXIgZXhpdFNlbGVjdGlvbjtcblxuICBpZiAoc3ZnTm9kZXMuZXhpdCkge1xuICAgIGV4aXRTZWxlY3Rpb24gPSBzdmdOb2Rlcy5leGl0KCk7XG4gIH0gZWxzZSB7XG4gICAgZXhpdFNlbGVjdGlvbiA9IHN2Z05vZGVzLnNlbGVjdEFsbChudWxsKTsgLy8gZW1wdHkgc2VsZWN0aW9uXG4gIH1cblxuICB1dGlsLmFwcGx5VHJhbnNpdGlvbihleGl0U2VsZWN0aW9uLCBnKS5zdHlsZSgnb3BhY2l0eScsIDApLnJlbW92ZSgpO1xuXG4gIHJldHVybiBzdmdOb2Rlcztcbn07XG5cbmZ1bmN0aW9uIHNldENyZWF0ZU5vZGVzKHZhbHVlKSB7XG4gIGNyZWF0ZU5vZGVzID0gdmFsdWU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/index.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/index.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"circle\": () => (/* reexport module object */ _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__),\n/* harmony export */ \"ellipse\": () => (/* reexport module object */ _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__),\n/* harmony export */ \"node\": () => (/* reexport module object */ _intersect_node_js__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ \"polygon\": () => (/* reexport module object */ _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__),\n/* harmony export */ \"rect\": () => (/* reexport module object */ _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__)\n/* harmony export */ });\n/* harmony import */ var _intersect_node_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-node.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js\");\n/* harmony import */ var _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect-circle.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js\");\n/* harmony import */ var _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./intersect-ellipse.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js\");\n/* harmony import */ var _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./intersect-polygon.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\");\n/* harmony import */ var _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./intersect-rect.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\");\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUE0QztBQUNJO0FBQ0U7QUFDQTtBQUNOOztBQUVJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvaW50ZXJzZWN0L2luZGV4LmpzPzk2NDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbm9kZSBmcm9tICcuL2ludGVyc2VjdC1ub2RlLmpzJztcbmltcG9ydCAqIGFzIGNpcmNsZSBmcm9tICcuL2ludGVyc2VjdC1jaXJjbGUuanMnO1xuaW1wb3J0ICogYXMgZWxsaXBzZSBmcm9tICcuL2ludGVyc2VjdC1lbGxpcHNlLmpzJztcbmltcG9ydCAqIGFzIHBvbHlnb24gZnJvbSAnLi9pbnRlcnNlY3QtcG9seWdvbi5qcyc7XG5pbXBvcnQgKiBhcyByZWN0IGZyb20gJy4vaW50ZXJzZWN0LXJlY3QuanMnO1xuXG5leHBvcnQgeyBub2RlLCBjaXJjbGUsIGVsbGlwc2UsIHBvbHlnb24sIHJlY3QgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectCircle\": () => (/* binding */ intersectCircle)\n/* harmony export */ });\n/* harmony import */ var _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-ellipse.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js\");\n\n\n\n\nfunction intersectCircle(node, rx, point) {\n return (0,_intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_0__.intersectEllipse)(node, rx, rx, point);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWNpcmNsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEwRDs7QUFFL0I7O0FBRTNCO0FBQ0EsU0FBUyx1RUFBZ0I7QUFDekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWNpcmNsZS5qcz8zMGQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVyc2VjdEVsbGlwc2UgfSBmcm9tICcuL2ludGVyc2VjdC1lbGxpcHNlLmpzJztcblxuZXhwb3J0IHsgaW50ZXJzZWN0Q2lyY2xlIH07XG5cbmZ1bmN0aW9uIGludGVyc2VjdENpcmNsZShub2RlLCByeCwgcG9pbnQpIHtcbiAgcmV0dXJuIGludGVyc2VjdEVsbGlwc2Uobm9kZSwgcngsIHJ4LCBwb2ludCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectEllipse\": () => (/* binding */ intersectEllipse)\n/* harmony export */ });\n\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs((rx * ry * px) / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs((rx * ry * py) / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return { x: cx + dx, y: cy + dy };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWVsbGlwc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUE0Qjs7QUFFNUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXO0FBQ1giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWVsbGlwc2UuanM/ZDkxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpbnRlcnNlY3RFbGxpcHNlIH07XG5cbmZ1bmN0aW9uIGludGVyc2VjdEVsbGlwc2Uobm9kZSwgcngsIHJ5LCBwb2ludCkge1xuICAvLyBGb3JtdWxhZSBmcm9tOiBodHRwOi8vbWF0aHdvcmxkLndvbGZyYW0uY29tL0VsbGlwc2UtTGluZUludGVyc2VjdGlvbi5odG1sXG5cbiAgdmFyIGN4ID0gbm9kZS54O1xuICB2YXIgY3kgPSBub2RlLnk7XG5cbiAgdmFyIHB4ID0gY3ggLSBwb2ludC54O1xuICB2YXIgcHkgPSBjeSAtIHBvaW50Lnk7XG5cbiAgdmFyIGRldCA9IE1hdGguc3FydChyeCAqIHJ4ICogcHkgKiBweSArIHJ5ICogcnkgKiBweCAqIHB4KTtcblxuICB2YXIgZHggPSBNYXRoLmFicygocnggKiByeSAqIHB4KSAvIGRldCk7XG4gIGlmIChwb2ludC54IDwgY3gpIHtcbiAgICBkeCA9IC1keDtcbiAgfVxuICB2YXIgZHkgPSBNYXRoLmFicygocnggKiByeSAqIHB5KSAvIGRldCk7XG4gIGlmIChwb2ludC55IDwgY3kpIHtcbiAgICBkeSA9IC1keTtcbiAgfVxuXG4gIHJldHVybiB7IHg6IGN4ICsgZHgsIHk6IGN5ICsgZHkgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectLine\": () => (/* binding */ intersectLine)\n/* harmony export */ });\n\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n\n // Compute r3 and r4.\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n\n // Compute r1 and r2\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWxpbmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUF5Qjs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LWxpbmUuanM/ZjIzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpbnRlcnNlY3RMaW5lIH07XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBwb2ludCBhdCB3aGljaCB0d28gbGluZXMsIHAgYW5kIHEsIGludGVyc2VjdCBvciByZXR1cm5zXG4gKiB1bmRlZmluZWQgaWYgdGhleSBkbyBub3QgaW50ZXJzZWN0LlxuICovXG5mdW5jdGlvbiBpbnRlcnNlY3RMaW5lKHAxLCBwMiwgcTEsIHEyKSB7XG4gIC8vIEFsZ29yaXRobSBmcm9tIEouIEF2cm8sIChlZC4pIEdyYXBoaWNzIEdlbXMsIE5vIDIsIE1vcmdhbiBLYXVmbWFubiwgMTk5NCxcbiAgLy8gcDcgYW5kIHA0NzMuXG5cbiAgdmFyIGExLCBhMiwgYjEsIGIyLCBjMSwgYzI7XG4gIHZhciByMSwgcjIsIHIzLCByNDtcbiAgdmFyIGRlbm9tLCBvZmZzZXQsIG51bTtcbiAgdmFyIHgsIHk7XG5cbiAgLy8gQ29tcHV0ZSBhMSwgYjEsIGMxLCB3aGVyZSBsaW5lIGpvaW5pbmcgcG9pbnRzIDEgYW5kIDIgaXMgRih4LHkpID0gYTEgeCArXG4gIC8vIGIxIHkgKyBjMSA9IDAuXG4gIGExID0gcDIueSAtIHAxLnk7XG4gIGIxID0gcDEueCAtIHAyLng7XG4gIGMxID0gcDIueCAqIHAxLnkgLSBwMS54ICogcDIueTtcblxuICAvLyBDb21wdXRlIHIzIGFuZCByNC5cbiAgcjMgPSBhMSAqIHExLnggKyBiMSAqIHExLnkgKyBjMTtcbiAgcjQgPSBhMSAqIHEyLnggKyBiMSAqIHEyLnkgKyBjMTtcblxuICAvLyBDaGVjayBzaWducyBvZiByMyBhbmQgcjQuIElmIGJvdGggcG9pbnQgMyBhbmQgcG9pbnQgNCBsaWUgb25cbiAgLy8gc2FtZSBzaWRlIG9mIGxpbmUgMSwgdGhlIGxpbmUgc2VnbWVudHMgZG8gbm90IGludGVyc2VjdC5cbiAgaWYgKHIzICE9PSAwICYmIHI0ICE9PSAwICYmIHNhbWVTaWduKHIzLCByNCkpIHtcbiAgICByZXR1cm4gLypET05UX0lOVEVSU0VDVCovO1xuICB9XG5cbiAgLy8gQ29tcHV0ZSBhMiwgYjIsIGMyIHdoZXJlIGxpbmUgam9pbmluZyBwb2ludHMgMyBhbmQgNCBpcyBHKHgseSkgPSBhMiB4ICsgYjIgeSArIGMyID0gMFxuICBhMiA9IHEyLnkgLSBxMS55O1xuICBiMiA9IHExLnggLSBxMi54O1xuICBjMiA9IHEyLnggKiBxMS55IC0gcTEueCAqIHEyLnk7XG5cbiAgLy8gQ29tcHV0ZSByMSBhbmQgcjJcbiAgcjEgPSBhMiAqIHAxLnggKyBiMiAqIHAxLnkgKyBjMjtcbiAgcjIgPSBhMiAqIHAyLnggKyBiMiAqIHAyLnkgKyBjMjtcblxuICAvLyBDaGVjayBzaWducyBvZiByMSBhbmQgcjIuIElmIGJvdGggcG9pbnQgMSBhbmQgcG9pbnQgMiBsaWVcbiAgLy8gb24gc2FtZSBzaWRlIG9mIHNlY29uZCBsaW5lIHNlZ21lbnQsIHRoZSBsaW5lIHNlZ21lbnRzIGRvXG4gIC8vIG5vdCBpbnRlcnNlY3QuXG4gIGlmIChyMSAhPT0gMCAmJiByMiAhPT0gMCAmJiBzYW1lU2lnbihyMSwgcjIpKSB7XG4gICAgcmV0dXJuIC8qRE9OVF9JTlRFUlNFQ1QqLztcbiAgfVxuXG4gIC8vIExpbmUgc2VnbWVudHMgaW50ZXJzZWN0OiBjb21wdXRlIGludGVyc2VjdGlvbiBwb2ludC5cbiAgZGVub20gPSBhMSAqIGIyIC0gYTIgKiBiMTtcbiAgaWYgKGRlbm9tID09PSAwKSB7XG4gICAgcmV0dXJuIC8qQ09MTElORUFSKi87XG4gIH1cblxuICBvZmZzZXQgPSBNYXRoLmFicyhkZW5vbSAvIDIpO1xuXG4gIC8vIFRoZSBkZW5vbS8yIGlzIHRvIGdldCByb3VuZGluZyBpbnN0ZWFkIG9mIHRydW5jYXRpbmcuIEl0XG4gIC8vIGlzIGFkZGVkIG9yIHN1YnRyYWN0ZWQgdG8gdGhlIG51bWVyYXRvciwgZGVwZW5kaW5nIHVwb24gdGhlXG4gIC8vIHNpZ24gb2YgdGhlIG51bWVyYXRvci5cbiAgbnVtID0gYjEgKiBjMiAtIGIyICogYzE7XG4gIHggPSBudW0gPCAwID8gKG51bSAtIG9mZnNldCkgLyBkZW5vbSA6IChudW0gKyBvZmZzZXQpIC8gZGVub207XG5cbiAgbnVtID0gYTIgKiBjMSAtIGExICogYzI7XG4gIHkgPSBudW0gPCAwID8gKG51bSAtIG9mZnNldCkgLyBkZW5vbSA6IChudW0gKyBvZmZzZXQpIC8gZGVub207XG5cbiAgcmV0dXJuIHsgeDogeCwgeTogeSB9O1xufVxuXG5mdW5jdGlvbiBzYW1lU2lnbihyMSwgcjIpIHtcbiAgcmV0dXJuIHIxICogcjIgPiAwO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectNode\": () => (/* binding */ intersectNode)\n/* harmony export */ });\n\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LW5vZGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUF5Qjs7QUFFekI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvaW50ZXJzZWN0L2ludGVyc2VjdC1ub2RlLmpzPzEyY2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgaW50ZXJzZWN0Tm9kZSB9O1xuXG5mdW5jdGlvbiBpbnRlcnNlY3ROb2RlKG5vZGUsIHBvaW50KSB7XG4gIHJldHVybiBub2RlLmludGVyc2VjdChwb2ludCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-node.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectPolygon\": () => (/* binding */ intersectPolygon)\n/* harmony export */ });\n/* harmony import */ var _intersect_line_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-line.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-line.js\");\n\n\n\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = (0,_intersect_line_js__WEBPACK_IMPORTED_MODULE_0__.intersectLine)(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LXBvbHlnb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBb0Q7O0FBRXhCOztBQUU1QjtBQUNBLHVCQUF1QixLQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQSxrQkFBa0IsdUJBQXVCO0FBQ3pDO0FBQ0E7QUFDQSxvQkFBb0IsaUVBQWE7QUFDakM7QUFDQTtBQUNBLFFBQVEsK0JBQStCO0FBQ3ZDLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvaW50ZXJzZWN0L2ludGVyc2VjdC1wb2x5Z29uLmpzPzE4ZDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZXJzZWN0TGluZSB9IGZyb20gJy4vaW50ZXJzZWN0LWxpbmUuanMnO1xuXG5leHBvcnQgeyBpbnRlcnNlY3RQb2x5Z29uIH07XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBwb2ludCAoe3gsIHl9KSBhdCB3aGljaCB0aGUgcG9pbnQgYXJndW1lbnQgaW50ZXJzZWN0cyB3aXRoIHRoZVxuICogbm9kZSBhcmd1bWVudCBhc3N1bWluZyB0aGF0IGl0IGhhcyB0aGUgc2hhcGUgc3BlY2lmaWVkIGJ5IHBvbHlnb24uXG4gKi9cbmZ1bmN0aW9uIGludGVyc2VjdFBvbHlnb24obm9kZSwgcG9seVBvaW50cywgcG9pbnQpIHtcbiAgdmFyIHgxID0gbm9kZS54O1xuICB2YXIgeTEgPSBub2RlLnk7XG5cbiAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcblxuICB2YXIgbWluWCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgdmFyIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHBvbHlQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBtaW5YID0gTWF0aC5taW4obWluWCwgZW50cnkueCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIGVudHJ5LnkpO1xuICB9KTtcblxuICB2YXIgbGVmdCA9IHgxIC0gbm9kZS53aWR0aCAvIDIgLSBtaW5YO1xuICB2YXIgdG9wID0geTEgLSBub2RlLmhlaWdodCAvIDIgLSBtaW5ZO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwMSA9IHBvbHlQb2ludHNbaV07XG4gICAgdmFyIHAyID0gcG9seVBvaW50c1tpIDwgcG9seVBvaW50cy5sZW5ndGggLSAxID8gaSArIDEgOiAwXTtcbiAgICB2YXIgaW50ZXJzZWN0ID0gaW50ZXJzZWN0TGluZShcbiAgICAgIG5vZGUsXG4gICAgICBwb2ludCxcbiAgICAgIHsgeDogbGVmdCArIHAxLngsIHk6IHRvcCArIHAxLnkgfSxcbiAgICAgIHsgeDogbGVmdCArIHAyLngsIHk6IHRvcCArIHAyLnkgfVxuICAgICk7XG4gICAgaWYgKGludGVyc2VjdCkge1xuICAgICAgaW50ZXJzZWN0aW9ucy5wdXNoKGludGVyc2VjdCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpbnRlcnNlY3Rpb25zLmxlbmd0aCkge1xuICAgIGNvbnNvbGUubG9nKCdOTyBJTlRFUlNFQ1RJT04gRk9VTkQsIFJFVFVSTiBOT0RFIENFTlRFUicsIG5vZGUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaWYgKGludGVyc2VjdGlvbnMubGVuZ3RoID4gMSkge1xuICAgIC8vIE1vcmUgaW50ZXJzZWN0aW9ucywgZmluZCB0aGUgb25lIG5lYXJlc3QgdG8gZWRnZSBlbmQgcG9pbnRcbiAgICBpbnRlcnNlY3Rpb25zLnNvcnQoZnVuY3Rpb24gKHAsIHEpIHtcbiAgICAgIHZhciBwZHggPSBwLnggLSBwb2ludC54O1xuICAgICAgdmFyIHBkeSA9IHAueSAtIHBvaW50Lnk7XG4gICAgICB2YXIgZGlzdHAgPSBNYXRoLnNxcnQocGR4ICogcGR4ICsgcGR5ICogcGR5KTtcblxuICAgICAgdmFyIHFkeCA9IHEueCAtIHBvaW50Lng7XG4gICAgICB2YXIgcWR5ID0gcS55IC0gcG9pbnQueTtcbiAgICAgIHZhciBkaXN0cSA9IE1hdGguc3FydChxZHggKiBxZHggKyBxZHkgKiBxZHkpO1xuXG4gICAgICByZXR1cm4gZGlzdHAgPCBkaXN0cSA/IC0xIDogZGlzdHAgPT09IGRpc3RxID8gMCA6IDE7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGludGVyc2VjdGlvbnNbMF07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js": +/*!**********************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js ***! + \**********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"intersectRect\": () => (/* binding */ intersectRect)\n/* harmony export */ });\n\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LXJlY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUF5Qjs7QUFFekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2ludGVyc2VjdC9pbnRlcnNlY3QtcmVjdC5qcz9hMTM1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGludGVyc2VjdFJlY3QgfTtcblxuZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChub2RlLCBwb2ludCkge1xuICB2YXIgeCA9IG5vZGUueDtcbiAgdmFyIHkgPSBub2RlLnk7XG5cbiAgLy8gUmVjdGFuZ2xlIGludGVyc2VjdGlvbiBhbGdvcml0aG0gZnJvbTpcbiAgLy8gaHR0cDovL21hdGguc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzEwODExMy9maW5kLWVkZ2UtYmV0d2Vlbi10d28tYm94ZXNcbiAgdmFyIGR4ID0gcG9pbnQueCAtIHg7XG4gIHZhciBkeSA9IHBvaW50LnkgLSB5O1xuICB2YXIgdyA9IG5vZGUud2lkdGggLyAyO1xuICB2YXIgaCA9IG5vZGUuaGVpZ2h0IC8gMjtcblxuICB2YXIgc3gsIHN5O1xuICBpZiAoTWF0aC5hYnMoZHkpICogdyA+IE1hdGguYWJzKGR4KSAqIGgpIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgdG9wIG9yIGJvdHRvbSBvZiByZWN0LlxuICAgIGlmIChkeSA8IDApIHtcbiAgICAgIGggPSAtaDtcbiAgICB9XG4gICAgc3ggPSBkeSA9PT0gMCA/IDAgOiAoaCAqIGR4KSAvIGR5O1xuICAgIHN5ID0gaDtcbiAgfSBlbHNlIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgbGVmdCBvciByaWdodCBvZiByZWN0LlxuICAgIGlmIChkeCA8IDApIHtcbiAgICAgIHcgPSAtdztcbiAgICB9XG4gICAgc3ggPSB3O1xuICAgIHN5ID0gZHggPT09IDAgPyAwIDogKHcgKiBkeSkgLyBkeDtcbiAgfVxuXG4gIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addHtmlLabel\": () => (/* binding */ addHtmlLabel)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\nfunction addHtmlLabel(root, node) {\n var fo = root.append('foreignObject').attr('width', '100000');\n\n var div = fo.append('xhtml:div');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n\n var label = node.label;\n switch (typeof label) {\n case 'function':\n div.insert(label);\n break;\n case 'object':\n // Currently we assume this is a DOM object.\n div.insert(function () {\n return label;\n });\n break;\n default:\n div.html(label);\n }\n\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block');\n // Fix for firefox\n div.style('white-space', 'nowrap');\n\n var client = div.node().getBoundingClientRect();\n fo.attr('width', client.width).attr('height', client.height);\n\n return fo;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtaHRtbC1sYWJlbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFtQzs7QUFFWDs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLGdEQUFlO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtaHRtbC1sYWJlbC5qcz85YTY2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbC5qcyc7XG5cbmV4cG9ydCB7IGFkZEh0bWxMYWJlbCB9O1xuXG5mdW5jdGlvbiBhZGRIdG1sTGFiZWwocm9vdCwgbm9kZSkge1xuICB2YXIgZm8gPSByb290LmFwcGVuZCgnZm9yZWlnbk9iamVjdCcpLmF0dHIoJ3dpZHRoJywgJzEwMDAwMCcpO1xuXG4gIHZhciBkaXYgPSBmby5hcHBlbmQoJ3hodG1sOmRpdicpO1xuICBkaXYuYXR0cigneG1sbnMnLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcpO1xuXG4gIHZhciBsYWJlbCA9IG5vZGUubGFiZWw7XG4gIHN3aXRjaCAodHlwZW9mIGxhYmVsKSB7XG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgZGl2Lmluc2VydChsYWJlbCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc3VtZSB0aGlzIGlzIGEgRE9NIG9iamVjdC5cbiAgICAgIGRpdi5pbnNlcnQoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbGFiZWw7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBkaXYuaHRtbChsYWJlbCk7XG4gIH1cblxuICB1dGlsLmFwcGx5U3R5bGUoZGl2LCBub2RlLmxhYmVsU3R5bGUpO1xuICBkaXYuc3R5bGUoJ2Rpc3BsYXknLCAnaW5saW5lLWJsb2NrJyk7XG4gIC8vIEZpeCBmb3IgZmlyZWZveFxuICBkaXYuc3R5bGUoJ3doaXRlLXNwYWNlJywgJ25vd3JhcCcpO1xuXG4gIHZhciBjbGllbnQgPSBkaXYubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBmby5hdHRyKCd3aWR0aCcsIGNsaWVudC53aWR0aCkuYXR0cignaGVpZ2h0JywgY2xpZW50LmhlaWdodCk7XG5cbiAgcmV0dXJuIGZvO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addLabel\": () => (/* binding */ addLabel)\n/* harmony export */ });\n/* harmony import */ var _add_html_label_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add-html-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\");\n/* harmony import */ var _add_svg_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-svg-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js\");\n/* harmony import */ var _add_text_label_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-text-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js\");\n\n\n\n\n\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append('g');\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === 'svg') {\n (0,_add_svg_label_js__WEBPACK_IMPORTED_MODULE_1__.addSVGLabel)(labelSvg, node);\n } else if (typeof label !== 'string' || node.labelType === 'html') {\n (0,_add_html_label_js__WEBPACK_IMPORTED_MODULE_0__.addHtmlLabel)(labelSvg, node);\n } else {\n (0,_add_text_label_js__WEBPACK_IMPORTED_MODULE_2__.addTextLabel)(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch (location) {\n case 'top':\n y = -node.height / 2;\n break;\n case 'bottom':\n y = node.height / 2 - labelBBox.height;\n break;\n default:\n y = -labelBBox.height / 2;\n }\n labelSvg.attr('transform', 'translate(' + -labelBBox.width / 2 + ',' + y + ')');\n\n return labelSvg;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtbGFiZWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFtRDtBQUNGO0FBQ0U7O0FBRS9COztBQUVwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSSw4REFBVztBQUNmLElBQUk7QUFDSixJQUFJLGdFQUFZO0FBQ2hCLElBQUk7QUFDSixJQUFJLGdFQUFZO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtbGFiZWwuanM/M2IyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRIdG1sTGFiZWwgfSBmcm9tICcuL2FkZC1odG1sLWxhYmVsLmpzJztcbmltcG9ydCB7IGFkZFNWR0xhYmVsIH0gZnJvbSAnLi9hZGQtc3ZnLWxhYmVsLmpzJztcbmltcG9ydCB7IGFkZFRleHRMYWJlbCB9IGZyb20gJy4vYWRkLXRleHQtbGFiZWwuanMnO1xuXG5leHBvcnQgeyBhZGRMYWJlbCB9O1xuXG5mdW5jdGlvbiBhZGRMYWJlbChyb290LCBub2RlLCBsb2NhdGlvbikge1xuICB2YXIgbGFiZWwgPSBub2RlLmxhYmVsO1xuICB2YXIgbGFiZWxTdmcgPSByb290LmFwcGVuZCgnZycpO1xuXG4gIC8vIEFsbG93IHRoZSBsYWJlbCB0byBiZSBhIHN0cmluZywgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBET00gZWxlbWVudCwgb3JcbiAgLy8gYSBET00gZWxlbWVudCBpdHNlbGYuXG4gIGlmIChub2RlLmxhYmVsVHlwZSA9PT0gJ3N2ZycpIHtcbiAgICBhZGRTVkdMYWJlbChsYWJlbFN2Zywgbm9kZSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhYmVsICE9PSAnc3RyaW5nJyB8fCBub2RlLmxhYmVsVHlwZSA9PT0gJ2h0bWwnKSB7XG4gICAgYWRkSHRtbExhYmVsKGxhYmVsU3ZnLCBub2RlKTtcbiAgfSBlbHNlIHtcbiAgICBhZGRUZXh0TGFiZWwobGFiZWxTdmcsIG5vZGUpO1xuICB9XG5cbiAgdmFyIGxhYmVsQkJveCA9IGxhYmVsU3ZnLm5vZGUoKS5nZXRCQm94KCk7XG4gIHZhciB5O1xuICBzd2l0Y2ggKGxvY2F0aW9uKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIHkgPSAtbm9kZS5oZWlnaHQgLyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHkgPSBub2RlLmhlaWdodCAvIDIgLSBsYWJlbEJCb3guaGVpZ2h0O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHkgPSAtbGFiZWxCQm94LmhlaWdodCAvIDI7XG4gIH1cbiAgbGFiZWxTdmcuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnICsgLWxhYmVsQkJveC53aWR0aCAvIDIgKyAnLCcgKyB5ICsgJyknKTtcblxuICByZXR1cm4gbGFiZWxTdmc7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/label/add-label.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addSVGLabel\": () => (/* binding */ addSVGLabel)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtc3ZnLWxhYmVsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW1DOztBQUVaOztBQUV2QjtBQUNBOztBQUVBOztBQUVBLEVBQUUsZ0RBQWU7O0FBRWpCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtc3ZnLWxhYmVsLmpzPzgyMDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi91dGlsLmpzJztcblxuZXhwb3J0IHsgYWRkU1ZHTGFiZWwgfTtcblxuZnVuY3Rpb24gYWRkU1ZHTGFiZWwocm9vdCwgbm9kZSkge1xuICB2YXIgZG9tTm9kZSA9IHJvb3Q7XG5cbiAgZG9tTm9kZS5ub2RlKCkuYXBwZW5kQ2hpbGQobm9kZS5sYWJlbCk7XG5cbiAgdXRpbC5hcHBseVN0eWxlKGRvbU5vZGUsIG5vZGUubGFiZWxTdHlsZSk7XG5cbiAgcmV0dXJuIGRvbU5vZGU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/label/add-svg-label.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addTextLabel\": () => (/* binding */ addTextLabel)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append('text');\n\n var lines = processEscapeSequences(node.label).split('\\n');\n for (var i = 0; i < lines.length; i++) {\n domNode\n .append('tspan')\n .attr('xml:space', 'preserve')\n .attr('dy', '1em')\n .attr('x', '1')\n .text(lines[i]);\n }\n\n _util_js__WEBPACK_IMPORTED_MODULE_0__.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = '';\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch (ch) {\n case 'n':\n newText += '\\n';\n break;\n default:\n newText += ch;\n }\n escaped = false;\n } else if (ch === '\\\\') {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9sYWJlbC9hZGQtdGV4dC1sYWJlbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFtQzs7QUFFWDs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixrQkFBa0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxnREFBZTs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpQkFBaUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2xhYmVsL2FkZC10ZXh0LWxhYmVsLmpzPzA2ZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuLi91dGlsLmpzJztcblxuZXhwb3J0IHsgYWRkVGV4dExhYmVsIH07XG5cbi8qXG4gKiBBdHRhY2hlcyBhIHRleHQgbGFiZWwgdG8gdGhlIHNwZWNpZmllZCByb290LiBIYW5kbGVzIGVzY2FwZSBzZXF1ZW5jZXMuXG4gKi9cbmZ1bmN0aW9uIGFkZFRleHRMYWJlbChyb290LCBub2RlKSB7XG4gIHZhciBkb21Ob2RlID0gcm9vdC5hcHBlbmQoJ3RleHQnKTtcblxuICB2YXIgbGluZXMgPSBwcm9jZXNzRXNjYXBlU2VxdWVuY2VzKG5vZGUubGFiZWwpLnNwbGl0KCdcXG4nKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGRvbU5vZGVcbiAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgIC5hdHRyKCd4bWw6c3BhY2UnLCAncHJlc2VydmUnKVxuICAgICAgLmF0dHIoJ2R5JywgJzFlbScpXG4gICAgICAuYXR0cigneCcsICcxJylcbiAgICAgIC50ZXh0KGxpbmVzW2ldKTtcbiAgfVxuXG4gIHV0aWwuYXBwbHlTdHlsZShkb21Ob2RlLCBub2RlLmxhYmVsU3R5bGUpO1xuXG4gIHJldHVybiBkb21Ob2RlO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzRXNjYXBlU2VxdWVuY2VzKHRleHQpIHtcbiAgdmFyIG5ld1RleHQgPSAnJztcbiAgdmFyIGVzY2FwZWQgPSBmYWxzZTtcbiAgdmFyIGNoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyArK2kpIHtcbiAgICBjaCA9IHRleHRbaV07XG4gICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgIHN3aXRjaCAoY2gpIHtcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgbmV3VGV4dCArPSAnXFxuJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBuZXdUZXh0ICs9IGNoO1xuICAgICAgfVxuICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgZXNjYXBlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1RleHQgKz0gY2g7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXdUZXh0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/label/add-text-label.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"positionClusters\": () => (/* binding */ positionClusters)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function () {\n return !d3__WEBPACK_IMPORTED_MODULE_0__.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n _util_js__WEBPACK_IMPORTED_MODULE_1__.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n\n _util_js__WEBPACK_IMPORTED_MODULE_1__.applyTransition(created.selectAll('rect'), g)\n .attr('width', function (v) {\n return g.node(v).width;\n })\n .attr('height', function (v) {\n return g.node(v).height;\n })\n .attr('x', function (v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr('y', function (v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9wb3NpdGlvbi1jbHVzdGVycy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUI7QUFDUzs7QUFFTjs7QUFFNUI7QUFDQTtBQUNBLFlBQVksc0NBQVM7QUFDckIsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxFQUFFLHFEQUFvQjs7QUFFdEIsRUFBRSxxREFDa0I7QUFDcEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9wb3NpdGlvbi1jbHVzdGVycy5qcz9kZDc1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgcG9zaXRpb25DbHVzdGVycyB9O1xuXG5mdW5jdGlvbiBwb3NpdGlvbkNsdXN0ZXJzKHNlbGVjdGlvbiwgZykge1xuICB2YXIgY3JlYXRlZCA9IHNlbGVjdGlvbi5maWx0ZXIoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoJ3VwZGF0ZScpO1xuICB9KTtcblxuICBmdW5jdGlvbiB0cmFuc2xhdGUodikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIHJldHVybiAndHJhbnNsYXRlKCcgKyBub2RlLnggKyAnLCcgKyBub2RlLnkgKyAnKSc7XG4gIH1cblxuICBjcmVhdGVkLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSk7XG5cbiAgdXRpbC5hcHBseVRyYW5zaXRpb24oc2VsZWN0aW9uLCBnKS5zdHlsZSgnb3BhY2l0eScsIDEpLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSk7XG5cbiAgdXRpbFxuICAgIC5hcHBseVRyYW5zaXRpb24oY3JlYXRlZC5zZWxlY3RBbGwoJ3JlY3QnKSwgZylcbiAgICAuYXR0cignd2lkdGgnLCBmdW5jdGlvbiAodikge1xuICAgICAgcmV0dXJuIGcubm9kZSh2KS53aWR0aDtcbiAgICB9KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBmdW5jdGlvbiAodikge1xuICAgICAgcmV0dXJuIGcubm9kZSh2KS5oZWlnaHQ7XG4gICAgfSlcbiAgICAuYXR0cigneCcsIGZ1bmN0aW9uICh2KSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIHJldHVybiAtbm9kZS53aWR0aCAvIDI7XG4gICAgfSlcbiAgICAuYXR0cigneScsIGZ1bmN0aW9uICh2KSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIHJldHVybiAtbm9kZS5oZWlnaHQgLyAyO1xuICAgIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"positionEdgeLabels\": () => (/* binding */ positionEdgeLabels)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function () {\n return !d3__WEBPACK_IMPORTED_MODULE_0__.select(this).classed('update');\n });\n\n function translate(e) {\n var edge = g.edge(e);\n return lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](edge, 'x') ? 'translate(' + edge.x + ',' + edge.y + ')' : '';\n }\n\n created.attr('transform', translate);\n\n _util_js__WEBPACK_IMPORTED_MODULE_1__.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9wb3NpdGlvbi1lZGdlLWxhYmVscy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlCO0FBQ007QUFDRzs7QUFFSjs7QUFFOUI7QUFDQTtBQUNBLFlBQVksc0NBQVM7QUFDckIsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsV0FBVyxpREFBSztBQUNoQjs7QUFFQTs7QUFFQSxFQUFFLHFEQUFvQjtBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL3Bvc2l0aW9uLWVkZ2UtbGFiZWxzLmpzPzRmZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBwb3NpdGlvbkVkZ2VMYWJlbHMgfTtcblxuZnVuY3Rpb24gcG9zaXRpb25FZGdlTGFiZWxzKHNlbGVjdGlvbiwgZykge1xuICB2YXIgY3JlYXRlZCA9IHNlbGVjdGlvbi5maWx0ZXIoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoJ3VwZGF0ZScpO1xuICB9KTtcblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHJldHVybiBfLmhhcyhlZGdlLCAneCcpID8gJ3RyYW5zbGF0ZSgnICsgZWRnZS54ICsgJywnICsgZWRnZS55ICsgJyknIDogJyc7XG4gIH1cblxuICBjcmVhdGVkLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSk7XG5cbiAgdXRpbC5hcHBseVRyYW5zaXRpb24oc2VsZWN0aW9uLCBnKS5zdHlsZSgnb3BhY2l0eScsIDEpLmF0dHIoJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"positionNodes\": () => (/* binding */ positionNodes)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n\n\n\n\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function () {\n return !d3__WEBPACK_IMPORTED_MODULE_0__.select(this).classed('update');\n });\n\n function translate(v) {\n var node = g.node(v);\n return 'translate(' + node.x + ',' + node.y + ')';\n }\n\n created.attr('transform', translate);\n\n _util_js__WEBPACK_IMPORTED_MODULE_1__.applyTransition(selection, g).style('opacity', 1).attr('transform', translate);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9wb3NpdGlvbi1ub2Rlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUI7QUFDUzs7QUFFVDs7QUFFekI7QUFDQTtBQUNBLFlBQVksc0NBQVM7QUFDckIsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxFQUFFLHFEQUFvQjtBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL3Bvc2l0aW9uLW5vZGVzLmpzPzQxNjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBwb3NpdGlvbk5vZGVzIH07XG5cbmZ1bmN0aW9uIHBvc2l0aW9uTm9kZXMoc2VsZWN0aW9uLCBnKSB7XG4gIHZhciBjcmVhdGVkID0gc2VsZWN0aW9uLmZpbHRlcihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICFkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgndXBkYXRlJyk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHRyYW5zbGF0ZSh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgcmV0dXJuICd0cmFuc2xhdGUoJyArIG5vZGUueCArICcsJyArIG5vZGUueSArICcpJztcbiAgfVxuXG4gIGNyZWF0ZWQuYXR0cigndHJhbnNmb3JtJywgdHJhbnNsYXRlKTtcblxuICB1dGlsLmFwcGx5VHJhbnNpdGlvbihzZWxlY3Rpb24sIGcpLnN0eWxlKCdvcGFjaXR5JywgMSkuYXR0cigndHJhbnNmb3JtJywgdHJhbnNsYXRlKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/render.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/render.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/defaults.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var _dagre_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var _arrows_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./arrows.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/arrows.js\");\n/* harmony import */ var _create_clusters_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./create-clusters.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/create-clusters.js\");\n/* harmony import */ var _create_edge_labels_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./create-edge-labels.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-labels.js\");\n/* harmony import */ var _create_edge_paths_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./create-edge-paths.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/create-edge-paths.js\");\n/* harmony import */ var _create_nodes_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-nodes.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/create-nodes.js\");\n/* harmony import */ var _position_clusters_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./position-clusters.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/position-clusters.js\");\n/* harmony import */ var _position_edge_labels_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./position-edge-labels.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/position-edge-labels.js\");\n/* harmony import */ var _position_nodes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./position-nodes.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/position-nodes.js\");\n/* harmony import */ var _shapes_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./shapes.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/shapes.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var fn = function (svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, 'output');\n var clustersGroup = createOrSelectGroup(outputGroup, 'clusters');\n var edgePathsGroup = createOrSelectGroup(outputGroup, 'edgePaths');\n var edgeLabels = (0,_create_edge_labels_js__WEBPACK_IMPORTED_MODULE_4__.createEdgeLabels)(createOrSelectGroup(outputGroup, 'edgeLabels'), g);\n var nodes = (0,_create_nodes_js__WEBPACK_IMPORTED_MODULE_6__.createNodes)(createOrSelectGroup(outputGroup, 'nodes'), g, _shapes_js__WEBPACK_IMPORTED_MODULE_10__.shapes);\n\n (0,_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__.layout)(g);\n\n (0,_position_nodes_js__WEBPACK_IMPORTED_MODULE_9__.positionNodes)(nodes, g);\n (0,_position_edge_labels_js__WEBPACK_IMPORTED_MODULE_8__.positionEdgeLabels)(edgeLabels, g);\n (0,_create_edge_paths_js__WEBPACK_IMPORTED_MODULE_5__.createEdgePaths)(edgePathsGroup, g, _arrows_js__WEBPACK_IMPORTED_MODULE_2__.arrows);\n\n var clusters = (0,_create_clusters_js__WEBPACK_IMPORTED_MODULE_3__.createClusters)(clustersGroup, g);\n (0,_position_clusters_js__WEBPACK_IMPORTED_MODULE_7__.positionClusters)(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function (value) {\n if (!arguments.length) return _create_nodes_js__WEBPACK_IMPORTED_MODULE_6__.createNodes;\n (0,_create_nodes_js__WEBPACK_IMPORTED_MODULE_6__.setCreateNodes)(value);\n return fn;\n };\n\n fn.createClusters = function (value) {\n if (!arguments.length) return _create_clusters_js__WEBPACK_IMPORTED_MODULE_3__.createClusters;\n (0,_create_clusters_js__WEBPACK_IMPORTED_MODULE_3__.setCreateClusters)(value);\n return fn;\n };\n\n fn.createEdgeLabels = function (value) {\n if (!arguments.length) return _create_edge_labels_js__WEBPACK_IMPORTED_MODULE_4__.createEdgeLabels;\n (0,_create_edge_labels_js__WEBPACK_IMPORTED_MODULE_4__.setCreateEdgeLabels)(value);\n return fn;\n };\n\n fn.createEdgePaths = function (value) {\n if (!arguments.length) return _create_edge_paths_js__WEBPACK_IMPORTED_MODULE_5__.createEdgePaths;\n (0,_create_edge_paths_js__WEBPACK_IMPORTED_MODULE_5__.setCreateEdgePaths)(value);\n return fn;\n };\n\n fn.shapes = function (value) {\n if (!arguments.length) return _shapes_js__WEBPACK_IMPORTED_MODULE_10__.shapes;\n (0,_shapes_js__WEBPACK_IMPORTED_MODULE_10__.setShapes)(value);\n return fn;\n };\n\n fn.arrows = function (value) {\n if (!arguments.length) return _arrows_js__WEBPACK_IMPORTED_MODULE_2__.arrows;\n (0,_arrows_js__WEBPACK_IMPORTED_MODULE_2__.setArrows)(value);\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: 'rect',\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: 'normal',\n curve: d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear,\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function (v) {\n var node = g.node(v);\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'label') && !g.children(v).length) {\n node.label = v;\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'paddingX')) {\n lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX,\n });\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'paddingY')) {\n lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY,\n });\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'padding')) {\n lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding,\n });\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](node, NODE_DEFAULT_ATTRS);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"](['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'], function (k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'width')) {\n node._prevWidth = node.width;\n }\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, 'height')) {\n node._prevHeight = node.height;\n }\n });\n\n g.edges().forEach(function (e) {\n var edge = g.edge(e);\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](edge, 'label')) {\n edge.label = '';\n }\n lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, '_prevWidth')) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node, '_prevHeight')) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select('g.' + name);\n if (selection.empty()) {\n selection = root.append('g').attr('class', name);\n }\n return selection;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9yZW5kZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXlCO0FBQ007QUFDWTtBQUNLO0FBQ3lCO0FBQ087QUFDSDtBQUNiO0FBQ047QUFDSztBQUNYO0FBQ0o7O0FBRTlCOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0VBQWdCO0FBQ3JDLGdCQUFnQiw2REFBVywrQ0FBK0MsK0NBQU07O0FBRWhGLElBQUksdURBQU07O0FBRVYsSUFBSSxpRUFBYTtBQUNqQixJQUFJLDRFQUFrQjtBQUN0QixJQUFJLHNFQUFlLG9CQUFvQiw4Q0FBTTs7QUFFN0MsbUJBQW1CLG1FQUFjO0FBQ2pDLElBQUksdUVBQWdCOztBQUVwQjtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDLHlEQUFXO0FBQzdDLElBQUksZ0VBQWM7QUFDbEI7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQywrREFBYztBQUNoRCxJQUFJLHNFQUFpQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDLG9FQUFnQjtBQUNsRCxJQUFJLDJFQUFtQjtBQUN2QjtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDLGtFQUFlO0FBQ2pELElBQUkseUVBQWtCO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsK0NBQU07QUFDeEMsSUFBSSxzREFBUztBQUNiO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0MsOENBQU07QUFDeEMsSUFBSSxxREFBUztBQUNiO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsMkNBQWM7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUyxrREFBSztBQUNkO0FBQ0E7O0FBRUEsUUFBUSxrREFBSztBQUNiLE1BQU0sa0RBQVU7QUFDaEI7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxRQUFRLGtEQUFLO0FBQ2IsTUFBTSxrREFBVTtBQUNoQjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLFFBQVEsa0RBQUs7QUFDYixNQUFNLGtEQUFVO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBLElBQUksa0RBQVU7O0FBRWQsSUFBSSxrREFBTTtBQUNWO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFFBQVEsa0RBQUs7QUFDYjtBQUNBO0FBQ0EsUUFBUSxrREFBSztBQUNiO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxTQUFTLGtEQUFLO0FBQ2Q7QUFDQTtBQUNBLElBQUksa0RBQVU7QUFDZCxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxFQUFFLGtEQUFNO0FBQ1I7O0FBRUE7QUFDQSxRQUFRLGtEQUFLO0FBQ2I7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQSxRQUFRLGtEQUFLO0FBQ2I7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvcmVuZGVyLmpzP2E2ZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgbGF5b3V0IH0gZnJvbSAnLi4vZGFncmUvaW5kZXguanMnO1xuaW1wb3J0IHsgYXJyb3dzLCBzZXRBcnJvd3MgfSBmcm9tICcuL2Fycm93cy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVDbHVzdGVycywgc2V0Q3JlYXRlQ2x1c3RlcnMgfSBmcm9tICcuL2NyZWF0ZS1jbHVzdGVycy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVFZGdlTGFiZWxzLCBzZXRDcmVhdGVFZGdlTGFiZWxzIH0gZnJvbSAnLi9jcmVhdGUtZWRnZS1sYWJlbHMuanMnO1xuaW1wb3J0IHsgY3JlYXRlRWRnZVBhdGhzLCBzZXRDcmVhdGVFZGdlUGF0aHMgfSBmcm9tICcuL2NyZWF0ZS1lZGdlLXBhdGhzLmpzJztcbmltcG9ydCB7IGNyZWF0ZU5vZGVzLCBzZXRDcmVhdGVOb2RlcyB9IGZyb20gJy4vY3JlYXRlLW5vZGVzLmpzJztcbmltcG9ydCB7IHBvc2l0aW9uQ2x1c3RlcnMgfSBmcm9tICcuL3Bvc2l0aW9uLWNsdXN0ZXJzLmpzJztcbmltcG9ydCB7IHBvc2l0aW9uRWRnZUxhYmVscyB9IGZyb20gJy4vcG9zaXRpb24tZWRnZS1sYWJlbHMuanMnO1xuaW1wb3J0IHsgcG9zaXRpb25Ob2RlcyB9IGZyb20gJy4vcG9zaXRpb24tbm9kZXMuanMnO1xuaW1wb3J0IHsgc2hhcGVzLCBzZXRTaGFwZXMgfSBmcm9tICcuL3NoYXBlcy5qcyc7XG5cbmV4cG9ydCB7IHJlbmRlciB9O1xuXG4vLyBUaGlzIGRlc2lnbiBpcyBiYXNlZCBvbiBodHRwOi8vYm9zdC5vY2tzLm9yZy9taWtlL2NoYXJ0Ly5cbmZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgdmFyIGZuID0gZnVuY3Rpb24gKHN2ZywgZykge1xuICAgIHByZVByb2Nlc3NHcmFwaChnKTtcblxuICAgIHZhciBvdXRwdXRHcm91cCA9IGNyZWF0ZU9yU2VsZWN0R3JvdXAoc3ZnLCAnb3V0cHV0Jyk7XG4gICAgdmFyIGNsdXN0ZXJzR3JvdXAgPSBjcmVhdGVPclNlbGVjdEdyb3VwKG91dHB1dEdyb3VwLCAnY2x1c3RlcnMnKTtcbiAgICB2YXIgZWRnZVBhdGhzR3JvdXAgPSBjcmVhdGVPclNlbGVjdEdyb3VwKG91dHB1dEdyb3VwLCAnZWRnZVBhdGhzJyk7XG4gICAgdmFyIGVkZ2VMYWJlbHMgPSBjcmVhdGVFZGdlTGFiZWxzKGNyZWF0ZU9yU2VsZWN0R3JvdXAob3V0cHV0R3JvdXAsICdlZGdlTGFiZWxzJyksIGcpO1xuICAgIHZhciBub2RlcyA9IGNyZWF0ZU5vZGVzKGNyZWF0ZU9yU2VsZWN0R3JvdXAob3V0cHV0R3JvdXAsICdub2RlcycpLCBnLCBzaGFwZXMpO1xuXG4gICAgbGF5b3V0KGcpO1xuXG4gICAgcG9zaXRpb25Ob2Rlcyhub2RlcywgZyk7XG4gICAgcG9zaXRpb25FZGdlTGFiZWxzKGVkZ2VMYWJlbHMsIGcpO1xuICAgIGNyZWF0ZUVkZ2VQYXRocyhlZGdlUGF0aHNHcm91cCwgZywgYXJyb3dzKTtcblxuICAgIHZhciBjbHVzdGVycyA9IGNyZWF0ZUNsdXN0ZXJzKGNsdXN0ZXJzR3JvdXAsIGcpO1xuICAgIHBvc2l0aW9uQ2x1c3RlcnMoY2x1c3RlcnMsIGcpO1xuXG4gICAgcG9zdFByb2Nlc3NHcmFwaChnKTtcbiAgfTtcblxuICBmbi5jcmVhdGVOb2RlcyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGNyZWF0ZU5vZGVzO1xuICAgIHNldENyZWF0ZU5vZGVzKHZhbHVlKTtcbiAgICByZXR1cm4gZm47XG4gIH07XG5cbiAgZm4uY3JlYXRlQ2x1c3RlcnMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjcmVhdGVDbHVzdGVycztcbiAgICBzZXRDcmVhdGVDbHVzdGVycyh2YWx1ZSk7XG4gICAgcmV0dXJuIGZuO1xuICB9O1xuXG4gIGZuLmNyZWF0ZUVkZ2VMYWJlbHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjcmVhdGVFZGdlTGFiZWxzO1xuICAgIHNldENyZWF0ZUVkZ2VMYWJlbHModmFsdWUpO1xuICAgIHJldHVybiBmbjtcbiAgfTtcblxuICBmbi5jcmVhdGVFZGdlUGF0aHMgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBjcmVhdGVFZGdlUGF0aHM7XG4gICAgc2V0Q3JlYXRlRWRnZVBhdGhzKHZhbHVlKTtcbiAgICByZXR1cm4gZm47XG4gIH07XG5cbiAgZm4uc2hhcGVzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gc2hhcGVzO1xuICAgIHNldFNoYXBlcyh2YWx1ZSk7XG4gICAgcmV0dXJuIGZuO1xuICB9O1xuXG4gIGZuLmFycm93cyA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGFycm93cztcbiAgICBzZXRBcnJvd3ModmFsdWUpO1xuICAgIHJldHVybiBmbjtcbiAgfTtcblxuICByZXR1cm4gZm47XG59XG5cbnZhciBOT0RFX0RFRkFVTFRfQVRUUlMgPSB7XG4gIHBhZGRpbmdMZWZ0OiAxMCxcbiAgcGFkZGluZ1JpZ2h0OiAxMCxcbiAgcGFkZGluZ1RvcDogMTAsXG4gIHBhZGRpbmdCb3R0b206IDEwLFxuICByeDogMCxcbiAgcnk6IDAsXG4gIHNoYXBlOiAncmVjdCcsXG59O1xuXG52YXIgRURHRV9ERUZBVUxUX0FUVFJTID0ge1xuICBhcnJvd2hlYWQ6ICdub3JtYWwnLFxuICBjdXJ2ZTogZDMuY3VydmVMaW5lYXIsXG59O1xuXG5mdW5jdGlvbiBwcmVQcm9jZXNzR3JhcGgoZykge1xuICBnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmICghXy5oYXMobm9kZSwgJ2xhYmVsJykgJiYgIWcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICBub2RlLmxhYmVsID0gdjtcbiAgICB9XG5cbiAgICBpZiAoXy5oYXMobm9kZSwgJ3BhZGRpbmdYJykpIHtcbiAgICAgIF8uZGVmYXVsdHMobm9kZSwge1xuICAgICAgICBwYWRkaW5nTGVmdDogbm9kZS5wYWRkaW5nWCxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiBub2RlLnBhZGRpbmdYLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsICdwYWRkaW5nWScpKSB7XG4gICAgICBfLmRlZmF1bHRzKG5vZGUsIHtcbiAgICAgICAgcGFkZGluZ1RvcDogbm9kZS5wYWRkaW5nWSxcbiAgICAgICAgcGFkZGluZ0JvdHRvbTogbm9kZS5wYWRkaW5nWSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChfLmhhcyhub2RlLCAncGFkZGluZycpKSB7XG4gICAgICBfLmRlZmF1bHRzKG5vZGUsIHtcbiAgICAgICAgcGFkZGluZ0xlZnQ6IG5vZGUucGFkZGluZyxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiBub2RlLnBhZGRpbmcsXG4gICAgICAgIHBhZGRpbmdUb3A6IG5vZGUucGFkZGluZyxcbiAgICAgICAgcGFkZGluZ0JvdHRvbTogbm9kZS5wYWRkaW5nLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgXy5kZWZhdWx0cyhub2RlLCBOT0RFX0RFRkFVTFRfQVRUUlMpO1xuXG4gICAgXy5lYWNoKFsncGFkZGluZ0xlZnQnLCAncGFkZGluZ1JpZ2h0JywgJ3BhZGRpbmdUb3AnLCAncGFkZGluZ0JvdHRvbSddLCBmdW5jdGlvbiAoaykge1xuICAgICAgbm9kZVtrXSA9IE51bWJlcihub2RlW2tdKTtcbiAgICB9KTtcblxuICAgIC8vIFNhdmUgZGltZW5zaW9ucyBmb3IgcmVzdG9yZSBkdXJpbmcgcG9zdC1wcm9jZXNzaW5nXG4gICAgaWYgKF8uaGFzKG5vZGUsICd3aWR0aCcpKSB7XG4gICAgICBub2RlLl9wcmV2V2lkdGggPSBub2RlLndpZHRoO1xuICAgIH1cbiAgICBpZiAoXy5oYXMobm9kZSwgJ2hlaWdodCcpKSB7XG4gICAgICBub2RlLl9wcmV2SGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgfVxuICB9KTtcblxuICBnLmVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmICghXy5oYXMoZWRnZSwgJ2xhYmVsJykpIHtcbiAgICAgIGVkZ2UubGFiZWwgPSAnJztcbiAgICB9XG4gICAgXy5kZWZhdWx0cyhlZGdlLCBFREdFX0RFRkFVTFRfQVRUUlMpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zdFByb2Nlc3NHcmFwaChnKSB7XG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG5cbiAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIGRpbWVuc2lvbnNcbiAgICBpZiAoXy5oYXMobm9kZSwgJ19wcmV2V2lkdGgnKSkge1xuICAgICAgbm9kZS53aWR0aCA9IG5vZGUuX3ByZXZXaWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIG5vZGUud2lkdGg7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsICdfcHJldkhlaWdodCcpKSB7XG4gICAgICBub2RlLmhlaWdodCA9IG5vZGUuX3ByZXZIZWlnaHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBub2RlLmhlaWdodDtcbiAgICB9XG5cbiAgICBkZWxldGUgbm9kZS5fcHJldldpZHRoO1xuICAgIGRlbGV0ZSBub2RlLl9wcmV2SGVpZ2h0O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlT3JTZWxlY3RHcm91cChyb290LCBuYW1lKSB7XG4gIHZhciBzZWxlY3Rpb24gPSByb290LnNlbGVjdCgnZy4nICsgbmFtZSk7XG4gIGlmIChzZWxlY3Rpb24uZW1wdHkoKSkge1xuICAgIHNlbGVjdGlvbiA9IHJvb3QuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCBuYW1lKTtcbiAgfVxuICByZXR1cm4gc2VsZWN0aW9uO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/render.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/shapes.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/shapes.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setShapes\": () => (/* binding */ setShapes),\n/* harmony export */ \"shapes\": () => (/* binding */ shapes)\n/* harmony export */ });\n/* harmony import */ var _intersect_intersect_circle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect/intersect-circle.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-circle.js\");\n/* harmony import */ var _intersect_intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect/intersect-ellipse.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-ellipse.js\");\n/* harmony import */ var _intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./intersect/intersect-polygon.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\");\n/* harmony import */ var _intersect_intersect_rect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./intersect/intersect-rect.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\");\n\n\n\n\n\n\n\nvar shapes = {\n rect,\n ellipse,\n circle,\n diamond,\n};\n\nfunction setShapes(value) {\n shapes = value;\n}\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent\n .insert('rect', ':first-child')\n .attr('rx', node.rx)\n .attr('ry', node.ry)\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('width', bbox.width)\n .attr('height', bbox.height);\n\n node.intersect = function (point) {\n return (0,_intersect_intersect_rect_js__WEBPACK_IMPORTED_MODULE_3__.intersectRect)(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent\n .insert('ellipse', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('rx', rx)\n .attr('ry', ry);\n\n node.intersect = function (point) {\n return (0,_intersect_intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_1__.intersectEllipse)(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent\n .insert('circle', ':first-child')\n .attr('x', -bbox.width / 2)\n .attr('y', -bbox.height / 2)\n .attr('r', r);\n\n node.intersect = function (point) {\n return (0,_intersect_intersect_circle_js__WEBPACK_IMPORTED_MODULE_0__.intersectCircle)(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 },\n ];\n var shapeSvg = parent.insert('polygon', ':first-child').attr(\n 'points',\n points\n .map(function (p) {\n return p.x + ',' + p.y;\n })\n .join(' ')\n );\n\n node.intersect = function (p) {\n return (0,_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_2__.intersectPolygon)(node, points, p);\n };\n\n return shapeSvg;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9zaGFwZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWtFO0FBQ0U7QUFDQTtBQUNOOztBQUVqQzs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDJFQUFhO0FBQ3hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxpRkFBZ0I7QUFDM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsK0VBQWU7QUFDMUI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sYUFBYTtBQUNuQixNQUFNLGFBQWE7QUFDbkIsTUFBTSxZQUFZO0FBQ2xCLE1BQU0sWUFBWTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsaUZBQWdCO0FBQzNCOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9zaGFwZXMuanM/Yzg5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnRlcnNlY3RDaXJjbGUgfSBmcm9tICcuL2ludGVyc2VjdC9pbnRlcnNlY3QtY2lyY2xlLmpzJztcbmltcG9ydCB7IGludGVyc2VjdEVsbGlwc2UgfSBmcm9tICcuL2ludGVyc2VjdC9pbnRlcnNlY3QtZWxsaXBzZS5qcyc7XG5pbXBvcnQgeyBpbnRlcnNlY3RQb2x5Z29uIH0gZnJvbSAnLi9pbnRlcnNlY3QvaW50ZXJzZWN0LXBvbHlnb24uanMnO1xuaW1wb3J0IHsgaW50ZXJzZWN0UmVjdCB9IGZyb20gJy4vaW50ZXJzZWN0L2ludGVyc2VjdC1yZWN0LmpzJztcblxuZXhwb3J0IHsgc2hhcGVzLCBzZXRTaGFwZXMgfTtcblxudmFyIHNoYXBlcyA9IHtcbiAgcmVjdCxcbiAgZWxsaXBzZSxcbiAgY2lyY2xlLFxuICBkaWFtb25kLFxufTtcblxuZnVuY3Rpb24gc2V0U2hhcGVzKHZhbHVlKSB7XG4gIHNoYXBlcyA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiByZWN0KHBhcmVudCwgYmJveCwgbm9kZSkge1xuICB2YXIgc2hhcGVTdmcgPSBwYXJlbnRcbiAgICAuaW5zZXJ0KCdyZWN0JywgJzpmaXJzdC1jaGlsZCcpXG4gICAgLmF0dHIoJ3J4Jywgbm9kZS5yeClcbiAgICAuYXR0cigncnknLCBub2RlLnJ5KVxuICAgIC5hdHRyKCd4JywgLWJib3gud2lkdGggLyAyKVxuICAgIC5hdHRyKCd5JywgLWJib3guaGVpZ2h0IC8gMilcbiAgICAuYXR0cignd2lkdGgnLCBiYm94LndpZHRoKVxuICAgIC5hdHRyKCdoZWlnaHQnLCBiYm94LmhlaWdodCk7XG5cbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbiAocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChub2RlLCBwb2ludCk7XG4gIH07XG5cbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuXG5mdW5jdGlvbiBlbGxpcHNlKHBhcmVudCwgYmJveCwgbm9kZSkge1xuICB2YXIgcnggPSBiYm94LndpZHRoIC8gMjtcbiAgdmFyIHJ5ID0gYmJveC5oZWlnaHQgLyAyO1xuICB2YXIgc2hhcGVTdmcgPSBwYXJlbnRcbiAgICAuaW5zZXJ0KCdlbGxpcHNlJywgJzpmaXJzdC1jaGlsZCcpXG4gICAgLmF0dHIoJ3gnLCAtYmJveC53aWR0aCAvIDIpXG4gICAgLmF0dHIoJ3knLCAtYmJveC5oZWlnaHQgLyAyKVxuICAgIC5hdHRyKCdyeCcsIHJ4KVxuICAgIC5hdHRyKCdyeScsIHJ5KTtcblxuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uIChwb2ludCkge1xuICAgIHJldHVybiBpbnRlcnNlY3RFbGxpcHNlKG5vZGUsIHJ4LCByeSwgcG9pbnQpO1xuICB9O1xuXG4gIHJldHVybiBzaGFwZVN2Zztcbn1cblxuZnVuY3Rpb24gY2lyY2xlKHBhcmVudCwgYmJveCwgbm9kZSkge1xuICB2YXIgciA9IE1hdGgubWF4KGJib3gud2lkdGgsIGJib3guaGVpZ2h0KSAvIDI7XG4gIHZhciBzaGFwZVN2ZyA9IHBhcmVudFxuICAgIC5pbnNlcnQoJ2NpcmNsZScsICc6Zmlyc3QtY2hpbGQnKVxuICAgIC5hdHRyKCd4JywgLWJib3gud2lkdGggLyAyKVxuICAgIC5hdHRyKCd5JywgLWJib3guaGVpZ2h0IC8gMilcbiAgICAuYXR0cigncicsIHIpO1xuXG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvaW50KSB7XG4gICAgcmV0dXJuIGludGVyc2VjdENpcmNsZShub2RlLCByLCBwb2ludCk7XG4gIH07XG5cbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuXG4vLyBDaXJjdW1zY3JpYmUgYW4gZWxsaXBzZSBmb3IgdGhlIGJvdW5kaW5nIGJveCB3aXRoIGEgZGlhbW9uZCBzaGFwZS4gSSBkZXJpdmVkXG4vLyB0aGUgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSBkaWFtb25kIHNoYXBlIGZyb206XG4vLyBodHRwOi8vbWF0aGZvcnVtLm9yZy9rYi9tZXNzYWdlLmpzcGE/bWVzc2FnZUlEPTM3NTAyMzZcbmZ1bmN0aW9uIGRpYW1vbmQocGFyZW50LCBiYm94LCBub2RlKSB7XG4gIHZhciB3ID0gKGJib3gud2lkdGggKiBNYXRoLlNRUlQyKSAvIDI7XG4gIHZhciBoID0gKGJib3guaGVpZ2h0ICogTWF0aC5TUVJUMikgLyAyO1xuICB2YXIgcG9pbnRzID0gW1xuICAgIHsgeDogMCwgeTogLWggfSxcbiAgICB7IHg6IC13LCB5OiAwIH0sXG4gICAgeyB4OiAwLCB5OiBoIH0sXG4gICAgeyB4OiB3LCB5OiAwIH0sXG4gIF07XG4gIHZhciBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoJ3BvbHlnb24nLCAnOmZpcnN0LWNoaWxkJykuYXR0cihcbiAgICAncG9pbnRzJyxcbiAgICBwb2ludHNcbiAgICAgIC5tYXAoZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHAueCArICcsJyArIHAueTtcbiAgICAgIH0pXG4gICAgICAuam9pbignICcpXG4gICk7XG5cbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBpbnRlcnNlY3RQb2x5Z29uKG5vZGUsIHBvaW50cywgcCk7XG4gIH07XG5cbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/shapes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre-js/util.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre-js/util.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"applyClass\": () => (/* binding */ applyClass),\n/* harmony export */ \"applyStyle\": () => (/* binding */ applyStyle),\n/* harmony export */ \"applyTransition\": () => (/* binding */ applyTransition),\n/* harmony export */ \"edgeToId\": () => (/* binding */ edgeToId),\n/* harmony export */ \"isSubgraph\": () => (/* binding */ isSubgraph)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isFunction.js\");\n\n\n// Public utility functions\n\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + ':' + escapeId(e.w) + ':' + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, '\\\\:') : '';\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom.attr('class', classFn).attr('class', otherClasses + ' ' + dom.attr('class'));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](graph)) {\n var transition = graph.transition;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy91dGlsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0I7O0FBRS9CO0FBQ3lFOztBQUV6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTSxpREFBZTtBQUNyQjtBQUNBLFFBQVEsaURBQVk7QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy91dGlsLmpzP2VmZWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG4vLyBQdWJsaWMgdXRpbGl0eSBmdW5jdGlvbnNcbmV4cG9ydCB7IGlzU3ViZ3JhcGgsIGVkZ2VUb0lkLCBhcHBseVN0eWxlLCBhcHBseUNsYXNzLCBhcHBseVRyYW5zaXRpb24gfTtcblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIG5vZGUgaW4gdGhlIGdyYXBoIGlzIGEgc3ViZ3JhcGggbm9kZS4gQVxuICogc3ViZ3JhcGggbm9kZSBpcyBvbmUgdGhhdCBjb250YWlucyBvdGhlciBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gaXNTdWJncmFwaChnLCB2KSB7XG4gIHJldHVybiAhIWcuY2hpbGRyZW4odikubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBlZGdlVG9JZChlKSB7XG4gIHJldHVybiBlc2NhcGVJZChlLnYpICsgJzonICsgZXNjYXBlSWQoZS53KSArICc6JyArIGVzY2FwZUlkKGUubmFtZSk7XG59XG5cbnZhciBJRF9ERUxJTSA9IC86L2c7XG5mdW5jdGlvbiBlc2NhcGVJZChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IFN0cmluZyhzdHIpLnJlcGxhY2UoSURfREVMSU0sICdcXFxcOicpIDogJyc7XG59XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGUoZG9tLCBzdHlsZUZuKSB7XG4gIGlmIChzdHlsZUZuKSB7XG4gICAgZG9tLmF0dHIoJ3N0eWxlJywgc3R5bGVGbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlDbGFzcyhkb20sIGNsYXNzRm4sIG90aGVyQ2xhc3Nlcykge1xuICBpZiAoY2xhc3NGbikge1xuICAgIGRvbS5hdHRyKCdjbGFzcycsIGNsYXNzRm4pLmF0dHIoJ2NsYXNzJywgb3RoZXJDbGFzc2VzICsgJyAnICsgZG9tLmF0dHIoJ2NsYXNzJykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFwcGx5VHJhbnNpdGlvbihzZWxlY3Rpb24sIGcpIHtcbiAgdmFyIGdyYXBoID0gZy5ncmFwaCgpO1xuXG4gIGlmIChfLmlzUGxhaW5PYmplY3QoZ3JhcGgpKSB7XG4gICAgdmFyIHRyYW5zaXRpb24gPSBncmFwaC50cmFuc2l0aW9uO1xuICAgIGlmIChfLmlzRnVuY3Rpb24odHJhbnNpdGlvbikpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uKHNlbGVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlbGVjdGlvbjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre-js/util.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/acyclic.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/acyclic.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run),\n/* harmony export */ \"undo\": () => (/* binding */ undo)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/uniqueId.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _greedy_fas_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./greedy-fas.js */ \"../../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js\");\n\n\n\n\n\nfunction run(g) {\n var fas = g.graph().acyclicer === 'greedy' ? (0,_greedy_fas_js__WEBPACK_IMPORTED_MODULE_0__.greedyFAS)(g, weightFn(g)) : dfsFAS(g);\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](fas, function (e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('rev'));\n });\n\n function weightFn(g) {\n return function (e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.outEdges(v), function (e) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.edges(), function (e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9hY3ljbGljLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErQjtBQUNhOztBQUV2Qjs7QUFFckI7QUFDQSwrQ0FBK0MseURBQVM7QUFDeEQsRUFBRSxpREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGlEQUFVO0FBQ3pDLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxpREFBUztBQUNiLFVBQVUsaURBQUs7QUFDZjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsRUFBRSxpREFBUztBQUNYO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9hY3ljbGljLmpzP2NmNjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZ3JlZWR5RkFTIH0gZnJvbSAnLi9ncmVlZHktZmFzLmpzJztcblxuZXhwb3J0IHsgcnVuLCB1bmRvIH07XG5cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIHZhciBmYXMgPSBnLmdyYXBoKCkuYWN5Y2xpY2VyID09PSAnZ3JlZWR5JyA/IGdyZWVkeUZBUyhnLCB3ZWlnaHRGbihnKSkgOiBkZnNGQVMoZyk7XG4gIF8uZm9yRWFjaChmYXMsIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICBsYWJlbC5mb3J3YXJkTmFtZSA9IGUubmFtZTtcbiAgICBsYWJlbC5yZXZlcnNlZCA9IHRydWU7XG4gICAgZy5zZXRFZGdlKGUudywgZS52LCBsYWJlbCwgXy51bmlxdWVJZCgncmV2JykpO1xuICB9KTtcblxuICBmdW5jdGlvbiB3ZWlnaHRGbihnKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZy5lZGdlKGUpLndlaWdodDtcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRmc0ZBUyhnKSB7XG4gIHZhciBmYXMgPSBbXTtcbiAgdmFyIHN0YWNrID0ge307XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgc3RhY2tbdl0gPSB0cnVlO1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKF8uaGFzKHN0YWNrLCBlLncpKSB7XG4gICAgICAgIGZhcy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGZzKGUudyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZGVsZXRlIHN0YWNrW3ZdO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIGZhcztcbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGxhYmVsID0gZy5lZGdlKGUpO1xuICAgIGlmIChsYWJlbC5yZXZlcnNlZCkge1xuICAgICAgZy5yZW1vdmVFZGdlKGUpO1xuXG4gICAgICB2YXIgZm9yd2FyZE5hbWUgPSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgIGRlbGV0ZSBsYWJlbC5yZXZlcnNlZDtcbiAgICAgIGRlbGV0ZSBsYWJlbC5mb3J3YXJkTmFtZTtcbiAgICAgIGcuc2V0RWRnZShlLncsIGUudiwgbGFiZWwsIGZvcndhcmROYW1lKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/acyclic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addBorderSegments\": () => (/* binding */ addBorderSegments)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](children, dfs);\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](node, 'minRank')) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {\n addBorderNode(g, 'borderLeft', '_bl', v, node, rank);\n addBorderNode(g, 'borderRight', '_br', v, node, rank);\n }\n }\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = _util_js__WEBPACK_IMPORTED_MODULE_0__.addDummyNode(g, 'border', label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9hZGQtYm9yZGVyLXNlZ21lbnRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDRzs7QUFFTDs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saURBQVM7QUFDZjs7QUFFQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBLGdFQUFnRSxnQkFBZ0I7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLGlEQUFTO0FBQ1g7O0FBRUE7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxhQUFhLGtEQUFpQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsV0FBVztBQUN2QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvYWRkLWJvcmRlci1zZWdtZW50cy5qcz8yYjNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgYWRkQm9yZGVyU2VnbWVudHMgfTtcblxuZnVuY3Rpb24gYWRkQm9yZGVyU2VnbWVudHMoZykge1xuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBjaGlsZHJlbiA9IGcuY2hpbGRyZW4odik7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgXy5mb3JFYWNoKGNoaWxkcmVuLCBkZnMpO1xuICAgIH1cblxuICAgIGlmIChfLmhhcyhub2RlLCAnbWluUmFuaycpKSB7XG4gICAgICBub2RlLmJvcmRlckxlZnQgPSBbXTtcbiAgICAgIG5vZGUuYm9yZGVyUmlnaHQgPSBbXTtcbiAgICAgIGZvciAodmFyIHJhbmsgPSBub2RlLm1pblJhbmssIG1heFJhbmsgPSBub2RlLm1heFJhbmsgKyAxOyByYW5rIDwgbWF4UmFuazsgKytyYW5rKSB7XG4gICAgICAgIGFkZEJvcmRlck5vZGUoZywgJ2JvcmRlckxlZnQnLCAnX2JsJywgdiwgbm9kZSwgcmFuayk7XG4gICAgICAgIGFkZEJvcmRlck5vZGUoZywgJ2JvcmRlclJpZ2h0JywgJ19icicsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJvcCwgcHJlZml4LCBzZywgc2dOb2RlLCByYW5rKSB7XG4gIHZhciBsYWJlbCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFuazogcmFuaywgYm9yZGVyVHlwZTogcHJvcCB9O1xuICB2YXIgcHJldiA9IHNnTm9kZVtwcm9wXVtyYW5rIC0gMV07XG4gIHZhciBjdXJyID0gdXRpbC5hZGREdW1teU5vZGUoZywgJ2JvcmRlcicsIGxhYmVsLCBwcmVmaXgpO1xuICBzZ05vZGVbcHJvcF1bcmFua10gPSBjdXJyO1xuICBnLnNldFBhcmVudChjdXJyLCBzZyk7XG4gIGlmIChwcmV2KSB7XG4gICAgZy5zZXRFZGdlKHByZXYsIGN1cnIsIHsgd2VpZ2h0OiAxIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"adjust\": () => (/* binding */ adjust),\n/* harmony export */ \"undo\": () => (/* binding */ undo)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n\n\n\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === 'bt' || rankDir === 'rl') {\n reverseY(g);\n }\n\n if (rankDir === 'lr' || rankDir === 'rl') {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.nodes(), function (v) {\n swapWidthHeightOne(g.node(v));\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.edges(), function (e) {\n swapWidthHeightOne(g.edge(e));\n });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.nodes(), function (v) {\n reverseYOne(g.node(v));\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](edge.points, reverseYOne);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](edge, 'y')) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.nodes(), function (v) {\n swapXYOne(g.node(v));\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](edge.points, swapXYOne);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](edge, 'x')) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9jb29yZGluYXRlLXN5c3RlbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStCOztBQUVQOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRztBQUNILEVBQUUsaURBQVM7QUFDWDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLGlEQUFTO0FBQ1g7QUFDQSxJQUFJLGlEQUFTO0FBQ2IsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRzs7QUFFSCxFQUFFLGlEQUFTO0FBQ1g7QUFDQSxJQUFJLGlEQUFTO0FBQ2IsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2Nvb3JkaW5hdGUtc3lzdGVtLmpzP2Q5NTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgeyBhZGp1c3QsIHVuZG8gfTtcblxuZnVuY3Rpb24gYWRqdXN0KGcpIHtcbiAgdmFyIHJhbmtEaXIgPSBnLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpO1xuICBpZiAocmFua0RpciA9PT0gJ2xyJyB8fCByYW5rRGlyID09PSAncmwnKSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSAnYnQnIHx8IHJhbmtEaXIgPT09ICdybCcpIHtcbiAgICByZXZlcnNlWShnKTtcbiAgfVxuXG4gIGlmIChyYW5rRGlyID09PSAnbHInIHx8IHJhbmtEaXIgPT09ICdybCcpIHtcbiAgICBzd2FwWFkoZyk7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN3YXBXaWR0aEhlaWdodChnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0T25lKGcubm9kZSh2KSk7XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHN3YXBXaWR0aEhlaWdodE9uZShnLmVkZ2UoZSkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3dhcFdpZHRoSGVpZ2h0T25lKGF0dHJzKSB7XG4gIHZhciB3ID0gYXR0cnMud2lkdGg7XG4gIGF0dHJzLndpZHRoID0gYXR0cnMuaGVpZ2h0O1xuICBhdHRycy5oZWlnaHQgPSB3O1xufVxuXG5mdW5jdGlvbiByZXZlcnNlWShnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgcmV2ZXJzZVlPbmUoZy5ub2RlKHYpKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIHJldmVyc2VZT25lKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgJ3knKSkge1xuICAgICAgcmV2ZXJzZVlPbmUoZWRnZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVlPbmUoYXR0cnMpIHtcbiAgYXR0cnMueSA9IC1hdHRycy55O1xufVxuXG5mdW5jdGlvbiBzd2FwWFkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHN3YXBYWU9uZShnLm5vZGUodikpO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIF8uZm9yRWFjaChlZGdlLnBvaW50cywgc3dhcFhZT25lKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgJ3gnKSkge1xuICAgICAgc3dhcFhZT25lKGVkZ2UpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBYWU9uZShhdHRycykge1xuICB2YXIgeCA9IGF0dHJzLng7XG4gIGF0dHJzLnggPSBhdHRycy55O1xuICBhdHRycy55ID0geDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/data/list.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/data/list.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"List\": () => (/* binding */ List)\n/* harmony export */ });\n/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\n\n\nclass List {\n constructor() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n }\n dequeue() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n }\n enqueue(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n }\n toString() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return '[' + strs.join(', ') + ']';\n }\n}\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== '_next' && k !== '_prev') {\n return v;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9kYXRhL2xpc3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2RhdGEvbGlzdC5qcz8yZDJlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBTaW1wbGUgZG91Ymx5IGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uIGRlcml2ZWQgZnJvbSBDb3JtZW4sIGV0IGFsLixcbiAqIFwiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXNcIi5cbiAqL1xuXG5leHBvcnQgeyBMaXN0IH07XG5cbmNsYXNzIExpc3Qge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB2YXIgc2VudGluZWwgPSB7fTtcbiAgICBzZW50aW5lbC5fbmV4dCA9IHNlbnRpbmVsLl9wcmV2ID0gc2VudGluZWw7XG4gICAgdGhpcy5fc2VudGluZWwgPSBzZW50aW5lbDtcbiAgfVxuICBkZXF1ZXVlKCkge1xuICAgIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICAgIHZhciBlbnRyeSA9IHNlbnRpbmVsLl9wcmV2O1xuICAgIGlmIChlbnRyeSAhPT0gc2VudGluZWwpIHtcbiAgICAgIHVubGluayhlbnRyeSk7XG4gICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICB9XG4gIGVucXVldWUoZW50cnkpIHtcbiAgICB2YXIgc2VudGluZWwgPSB0aGlzLl9zZW50aW5lbDtcbiAgICBpZiAoZW50cnkuX3ByZXYgJiYgZW50cnkuX25leHQpIHtcbiAgICAgIHVubGluayhlbnRyeSk7XG4gICAgfVxuICAgIGVudHJ5Ll9uZXh0ID0gc2VudGluZWwuX25leHQ7XG4gICAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgICBzZW50aW5lbC5fbmV4dCA9IGVudHJ5O1xuICAgIGVudHJ5Ll9wcmV2ID0gc2VudGluZWw7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgdmFyIHN0cnMgPSBbXTtcbiAgICB2YXIgc2VudGluZWwgPSB0aGlzLl9zZW50aW5lbDtcbiAgICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICAgIHdoaWxlIChjdXJyICE9PSBzZW50aW5lbCkge1xuICAgICAgc3Rycy5wdXNoKEpTT04uc3RyaW5naWZ5KGN1cnIsIGZpbHRlck91dExpbmtzKSk7XG4gICAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgICB9XG4gICAgcmV0dXJuICdbJyArIHN0cnMuam9pbignLCAnKSArICddJztcbiAgfVxufVxuXG5mdW5jdGlvbiB1bmxpbmsoZW50cnkpIHtcbiAgZW50cnkuX3ByZXYuX25leHQgPSBlbnRyeS5fbmV4dDtcbiAgZW50cnkuX25leHQuX3ByZXYgPSBlbnRyeS5fcHJldjtcbiAgZGVsZXRlIGVudHJ5Ll9uZXh0O1xuICBkZWxldGUgZW50cnkuX3ByZXY7XG59XG5cbmZ1bmN0aW9uIGZpbHRlck91dExpbmtzKGssIHYpIHtcbiAgaWYgKGsgIT09ICdfbmV4dCcgJiYgayAhPT0gJ19wcmV2Jykge1xuICAgIHJldHVybiB2O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/data/list.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"greedyFAS\": () => (/* binding */ greedyFAS)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/constant.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/flatten.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _data_list_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./data/list.js */ \"../../../node_modules/dagre-d3-es/src/dagre/data/list.js\");\n\n\n\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\n\n\nvar DEFAULT_WEIGHT_FN = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](results, function (e) {\n return g.outEdges(e.v, e.w);\n })\n );\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n while ((entry = sources.dequeue())) {\n removeNode(g, buckets, zeroIdx, entry);\n }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](g.inEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](g.outEdges(entry.v), function (edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry['in'] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](g.nodes(), function (v) {\n fasGraph.setNode(v, { v: v, in: 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](g.edges(), function (e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight));\n maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight));\n });\n\n var buckets = lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](maxOut + maxIn + 3).map(function () {\n return new _data_list_js__WEBPACK_IMPORTED_MODULE_1__.List();\n });\n var zeroIdx = maxIn + 1;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](fasGraph.nodes(), function (v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry['in']) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9ncmVlZHktZmFzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQStCO0FBQ2M7QUFDUDs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUI7O0FBRXJCLHdCQUF3QixpREFBVTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpREFBUztBQUNsQixJQUFJLGlEQUFLO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixzQkFBc0I7QUFDM0M7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUgsRUFBRSxpREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIscURBQUs7QUFDMUI7QUFDQTs7QUFFQSxFQUFFLGlEQUFTO0FBQ1gsMEJBQTBCLHFCQUFxQjtBQUMvQyxHQUFHOztBQUVIO0FBQ0E7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQkFBZ0IsaURBQU87QUFDdkIsZUFBZSwrQ0FBSTtBQUNuQixHQUFHO0FBQ0g7O0FBRUEsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRzs7QUFFSCxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2dyZWVkeS1mYXMuanM/NGE2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gJy4uL2dyYXBobGliL2luZGV4LmpzJztcbmltcG9ydCB7IExpc3QgfSBmcm9tICcuL2RhdGEvbGlzdC5qcyc7XG5cbi8qXG4gKiBBIGdyZWVkeSBoZXVyaXN0aWMgZm9yIGZpbmRpbmcgYSBmZWVkYmFjayBhcmMgc2V0IGZvciBhIGdyYXBoLiBBIGZlZWRiYWNrXG4gKiBhcmMgc2V0IGlzIGEgc2V0IG9mIGVkZ2VzIHRoYXQgY2FuIGJlIHJlbW92ZWQgdG8gbWFrZSBhIGdyYXBoIGFjeWNsaWMuXG4gKiBUaGUgYWxnb3JpdGhtIGNvbWVzIGZyb206IFAuIEVhZGVzLCBYLiBMaW4sIGFuZCBXLiBGLiBTbXl0aCwgXCJBIGZhc3QgYW5kXG4gKiBlZmZlY3RpdmUgaGV1cmlzdGljIGZvciB0aGUgZmVlZGJhY2sgYXJjIHNldCBwcm9ibGVtLlwiIFRoaXMgaW1wbGVtZW50YXRpb25cbiAqIGFkanVzdHMgdGhhdCBmcm9tIHRoZSBwYXBlciB0byBhbGxvdyBmb3Igd2VpZ2h0ZWQgZWRnZXMuXG4gKi9cbmV4cG9ydCB7IGdyZWVkeUZBUyB9O1xuXG52YXIgREVGQVVMVF9XRUlHSFRfRk4gPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBncmVlZHlGQVMoZywgd2VpZ2h0Rm4pIHtcbiAgaWYgKGcubm9kZUNvdW50KCkgPD0gMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgc3RhdGUgPSBidWlsZFN0YXRlKGcsIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZOKTtcbiAgdmFyIHJlc3VsdHMgPSBkb0dyZWVkeUZBUyhzdGF0ZS5ncmFwaCwgc3RhdGUuYnVja2V0cywgc3RhdGUuemVyb0lkeCk7XG5cbiAgLy8gRXhwYW5kIG11bHRpLWVkZ2VzXG4gIHJldHVybiBfLmZsYXR0ZW4oXG4gICAgXy5tYXAocmVzdWx0cywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBnLm91dEVkZ2VzKGUudiwgZS53KTtcbiAgICB9KVxuICApO1xufVxuXG5mdW5jdGlvbiBkb0dyZWVkeUZBUyhnLCBidWNrZXRzLCB6ZXJvSWR4KSB7XG4gIHZhciByZXN1bHRzID0gW107XG4gIHZhciBzb3VyY2VzID0gYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdO1xuICB2YXIgc2lua3MgPSBidWNrZXRzWzBdO1xuXG4gIHZhciBlbnRyeTtcbiAgd2hpbGUgKGcubm9kZUNvdW50KCkpIHtcbiAgICB3aGlsZSAoKGVudHJ5ID0gc2lua3MuZGVxdWV1ZSgpKSkge1xuICAgICAgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7XG4gICAgfVxuICAgIHdoaWxlICgoZW50cnkgPSBzb3VyY2VzLmRlcXVldWUoKSkpIHtcbiAgICAgIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnkpO1xuICAgIH1cbiAgICBpZiAoZy5ub2RlQ291bnQoKSkge1xuICAgICAgZm9yICh2YXIgaSA9IGJ1Y2tldHMubGVuZ3RoIC0gMjsgaSA+IDA7IC0taSkge1xuICAgICAgICBlbnRyeSA9IGJ1Y2tldHNbaV0uZGVxdWV1ZSgpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQocmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSwgdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBjb2xsZWN0UHJlZGVjZXNzb3JzID8gW10gOiB1bmRlZmluZWQ7XG5cbiAgXy5mb3JFYWNoKGcuaW5FZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICB2YXIgd2VpZ2h0ID0gZy5lZGdlKGVkZ2UpO1xuICAgIHZhciB1RW50cnkgPSBnLm5vZGUoZWRnZS52KTtcblxuICAgIGlmIChjb2xsZWN0UHJlZGVjZXNzb3JzKSB7XG4gICAgICByZXN1bHRzLnB1c2goeyB2OiBlZGdlLnYsIHc6IGVkZ2UudyB9KTtcbiAgICB9XG5cbiAgICB1RW50cnkub3V0IC09IHdlaWdodDtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgdUVudHJ5KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcub3V0RWRnZXMoZW50cnkudiksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgdmFyIHdlaWdodCA9IGcuZWRnZShlZGdlKTtcbiAgICB2YXIgdyA9IGVkZ2UudztcbiAgICB2YXIgd0VudHJ5ID0gZy5ub2RlKHcpO1xuICAgIHdFbnRyeVsnaW4nXSAtPSB3ZWlnaHQ7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHdFbnRyeSk7XG4gIH0pO1xuXG4gIGcucmVtb3ZlTm9kZShlbnRyeS52KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbikge1xuICB2YXIgZmFzR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgdmFyIG1heEluID0gMDtcbiAgdmFyIG1heE91dCA9IDA7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICBmYXNHcmFwaC5zZXROb2RlKHYsIHsgdjogdiwgaW46IDAsIG91dDogMCB9KTtcbiAgfSk7XG5cbiAgLy8gQWdncmVnYXRlIHdlaWdodHMgb24gbm9kZXMsIGJ1dCBhbHNvIHN1bSB0aGUgd2VpZ2h0cyBhY3Jvc3MgbXVsdGktZWRnZXNcbiAgLy8gaW50byBhIHNpbmdsZSBlZGdlIGZvciB0aGUgZmFzR3JhcGguXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHByZXZXZWlnaHQgPSBmYXNHcmFwaC5lZGdlKGUudiwgZS53KSB8fCAwO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlKTtcbiAgICB2YXIgZWRnZVdlaWdodCA9IHByZXZXZWlnaHQgKyB3ZWlnaHQ7XG4gICAgZmFzR3JhcGguc2V0RWRnZShlLnYsIGUudywgZWRnZVdlaWdodCk7XG4gICAgbWF4T3V0ID0gTWF0aC5tYXgobWF4T3V0LCAoZmFzR3JhcGgubm9kZShlLnYpLm91dCArPSB3ZWlnaHQpKTtcbiAgICBtYXhJbiA9IE1hdGgubWF4KG1heEluLCAoZmFzR3JhcGgubm9kZShlLncpWydpbiddICs9IHdlaWdodCkpO1xuICB9KTtcblxuICB2YXIgYnVja2V0cyA9IF8ucmFuZ2UobWF4T3V0ICsgbWF4SW4gKyAzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgTGlzdCgpO1xuICB9KTtcbiAgdmFyIHplcm9JZHggPSBtYXhJbiArIDE7XG5cbiAgXy5mb3JFYWNoKGZhc0dyYXBoLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGZhc0dyYXBoLm5vZGUodikpO1xuICB9KTtcblxuICByZXR1cm4geyBncmFwaDogZmFzR3JhcGgsIGJ1Y2tldHM6IGJ1Y2tldHMsIHplcm9JZHg6IHplcm9JZHggfTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KSB7XG4gIGlmICghZW50cnkub3V0KSB7XG4gICAgYnVja2V0c1swXS5lbnF1ZXVlKGVudHJ5KTtcbiAgfSBlbHNlIGlmICghZW50cnlbJ2luJ10pIHtcbiAgICBidWNrZXRzW2J1Y2tldHMubGVuZ3RoIC0gMV0uZW5xdWV1ZShlbnRyeSk7XG4gIH0gZWxzZSB7XG4gICAgYnVja2V0c1tlbnRyeS5vdXQgLSBlbnRyeVsnaW4nXSArIHplcm9JZHhdLmVucXVldWUoZW50cnkpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/greedy-fas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/index.js": +/*!************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/index.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"acyclic\": () => (/* reexport module object */ _acyclic_js__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ \"layout\": () => (/* reexport safe */ _layout_js__WEBPACK_IMPORTED_MODULE_1__.layout),\n/* harmony export */ \"normalize\": () => (/* reexport module object */ _normalize_js__WEBPACK_IMPORTED_MODULE_2__),\n/* harmony export */ \"rank\": () => (/* reexport safe */ _rank_index_js__WEBPACK_IMPORTED_MODULE_3__.rank)\n/* harmony export */ });\n/* harmony import */ var _acyclic_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./acyclic.js */ \"../../../node_modules/dagre-d3-es/src/dagre/acyclic.js\");\n/* harmony import */ var _layout_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./layout.js */ \"../../../node_modules/dagre-d3-es/src/dagre/layout.js\");\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./normalize.js */ \"../../../node_modules/dagre-d3-es/src/dagre/normalize.js\");\n/* harmony import */ var _rank_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rank/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/index.js\");\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUF3QztBQUNIO0FBQ087QUFDTDs7QUFFSyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzP2I3MDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYWN5Y2xpYyBmcm9tICcuL2FjeWNsaWMuanMnO1xuaW1wb3J0IHsgbGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQuanMnO1xuaW1wb3J0ICogYXMgbm9ybWFsaXplIGZyb20gJy4vbm9ybWFsaXplLmpzJztcbmltcG9ydCB7IHJhbmsgfSBmcm9tICcuL3JhbmsvaW5kZXguanMnO1xuXG5leHBvcnQgeyBhY3ljbGljLCBub3JtYWxpemUsIHJhbmssIGxheW91dCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/layout.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/layout.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"layout\": () => (/* binding */ layout)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/merge.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/pick.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/defaults.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/last.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/mapValues.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _add_border_segments_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add-border-segments.js */ \"../../../node_modules/dagre-d3-es/src/dagre/add-border-segments.js\");\n/* harmony import */ var _coordinate_system_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./coordinate-system.js */ \"../../../node_modules/dagre-d3-es/src/dagre/coordinate-system.js\");\n/* harmony import */ var _acyclic_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./acyclic.js */ \"../../../node_modules/dagre-d3-es/src/dagre/acyclic.js\");\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./normalize.js */ \"../../../node_modules/dagre-d3-es/src/dagre/normalize.js\");\n/* harmony import */ var _rank_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rank/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/index.js\");\n/* harmony import */ var _nesting_graph_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./nesting-graph.js */ \"../../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js\");\n/* harmony import */ var _order_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./order/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/index.js\");\n/* harmony import */ var _parent_dummy_chains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./parent-dummy-chains.js */ \"../../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js\");\n/* harmony import */ var _position_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./position/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/position/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? _util_js__WEBPACK_IMPORTED_MODULE_10__.time : _util_js__WEBPACK_IMPORTED_MODULE_10__.notime;\n time('layout', function () {\n var layoutGraph = time(' buildLayoutGraph', function () {\n return buildLayoutGraph(g);\n });\n time(' runLayout', function () {\n runLayout(layoutGraph, time);\n });\n time(' updateInputGraph', function () {\n updateInputGraph(g, layoutGraph);\n });\n });\n}\n\nfunction runLayout(g, time) {\n time(' makeSpaceForEdgeLabels', function () {\n makeSpaceForEdgeLabels(g);\n });\n time(' removeSelfEdges', function () {\n removeSelfEdges(g);\n });\n time(' acyclic', function () {\n _acyclic_js__WEBPACK_IMPORTED_MODULE_3__.run(g);\n });\n time(' nestingGraph.run', function () {\n _nesting_graph_js__WEBPACK_IMPORTED_MODULE_6__.run(g);\n });\n time(' rank', function () {\n (0,_rank_index_js__WEBPACK_IMPORTED_MODULE_5__.rank)(_util_js__WEBPACK_IMPORTED_MODULE_10__.asNonCompoundGraph(g));\n });\n time(' injectEdgeLabelProxies', function () {\n injectEdgeLabelProxies(g);\n });\n time(' removeEmptyRanks', function () {\n _util_js__WEBPACK_IMPORTED_MODULE_10__.removeEmptyRanks(g);\n });\n time(' nestingGraph.cleanup', function () {\n _nesting_graph_js__WEBPACK_IMPORTED_MODULE_6__.cleanup(g);\n });\n time(' normalizeRanks', function () {\n _util_js__WEBPACK_IMPORTED_MODULE_10__.normalizeRanks(g);\n });\n time(' assignRankMinMax', function () {\n assignRankMinMax(g);\n });\n time(' removeEdgeLabelProxies', function () {\n removeEdgeLabelProxies(g);\n });\n time(' normalize.run', function () {\n _normalize_js__WEBPACK_IMPORTED_MODULE_4__.run(g);\n });\n time(' parentDummyChains', function () {\n (0,_parent_dummy_chains_js__WEBPACK_IMPORTED_MODULE_8__.parentDummyChains)(g);\n });\n time(' addBorderSegments', function () {\n (0,_add_border_segments_js__WEBPACK_IMPORTED_MODULE_1__.addBorderSegments)(g);\n });\n time(' order', function () {\n (0,_order_index_js__WEBPACK_IMPORTED_MODULE_7__.order)(g);\n });\n time(' insertSelfEdges', function () {\n insertSelfEdges(g);\n });\n time(' adjustCoordinateSystem', function () {\n _coordinate_system_js__WEBPACK_IMPORTED_MODULE_2__.adjust(g);\n });\n time(' position', function () {\n (0,_position_index_js__WEBPACK_IMPORTED_MODULE_9__.position)(g);\n });\n time(' positionSelfEdges', function () {\n positionSelfEdges(g);\n });\n time(' removeBorderNodes', function () {\n removeBorderNodes(g);\n });\n time(' normalize.undo', function () {\n _normalize_js__WEBPACK_IMPORTED_MODULE_4__.undo(g);\n });\n time(' fixupEdgeLabelCoords', function () {\n fixupEdgeLabelCoords(g);\n });\n time(' undoCoordinateSystem', function () {\n _coordinate_system_js__WEBPACK_IMPORTED_MODULE_2__.undo(g);\n });\n time(' translateGraph', function () {\n translateGraph(g);\n });\n time(' assignNodeIntersects', function () {\n assignNodeIntersects(g);\n });\n time(' reversePoints', function () {\n reversePointsForReversedEdges(g);\n });\n time(' acyclic.undo', function () {\n _acyclic_js__WEBPACK_IMPORTED_MODULE_3__.undo(g);\n });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](inputGraph.nodes(), function (v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](inputGraph.edges(), function (e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](layoutLabel, 'x')) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy'];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' };\nvar graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align'];\nvar nodeNumAttrs = ['width', 'height'];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset'];\nvar edgeDefaults = {\n minlen: 1,\n weight: 1,\n width: 0,\n height: 0,\n labeloffset: 10,\n labelpos: 'r',\n};\nvar edgeAttrs = ['labelpos'];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(\n lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"]({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](graph, graphAttrs))\n );\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](inputGraph.nodes(), function (v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, lodash_es__WEBPACK_IMPORTED_MODULE_15__[\"default\"](selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](inputGraph.edges(), function (e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(\n e,\n lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"]({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](edge, edgeAttrs))\n );\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== 'c') {\n if (graph.rankdir === 'TB' || graph.rankdir === 'BT') {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n _util_js__WEBPACK_IMPORTED_MODULE_10__.addDummyNode(g, 'edge-proxy', label, '_ep');\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n // @ts-expect-error\n maxRank = lodash_es__WEBPACK_IMPORTED_MODULE_16__[\"default\"](maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'edge-proxy') {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n getExtremes(g.node(v));\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](edge, 'x')) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](edge.points, function (p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](edge, 'x')) {\n edge.x -= minX;\n }\n if (lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](edge, 'y')) {\n edge.y -= minY;\n }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(_util_js__WEBPACK_IMPORTED_MODULE_10__.intersectRect(nodeV, p1));\n edge.points.push(_util_js__WEBPACK_IMPORTED_MODULE_10__.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](edge, 'x')) {\n if (edge.labelpos === 'l' || edge.labelpos === 'r') {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case 'l':\n edge.x -= edge.width / 2 + edge.labeloffset;\n break;\n case 'r':\n edge.x += edge.width / 2 + edge.labeloffset;\n break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(lodash_es__WEBPACK_IMPORTED_MODULE_17__[\"default\"](node.borderLeft));\n var r = g.node(lodash_es__WEBPACK_IMPORTED_MODULE_17__[\"default\"](node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n if (g.node(v).dummy === 'border') {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.edges(), function (e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = _util_js__WEBPACK_IMPORTED_MODULE_10__.buildLayerMatrix(g);\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](layers, function (layer) {\n var orderShift = 0;\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](layer, function (v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](node.selfEdges, function (selfEdge) {\n _util_js__WEBPACK_IMPORTED_MODULE_10__.addDummyNode(\n g,\n 'selfedge',\n {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + ++orderShift,\n e: selfEdge.e,\n label: selfEdge.label,\n },\n '_se'\n );\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n if (node.dummy === 'selfedge') {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + (2 * dx) / 3, y: y - dy },\n { x: x + (5 * dx) / 6, y: y - dy },\n { x: x + dx, y: y },\n { x: x + (5 * dx) / 6, y: y + dy },\n { x: x + (2 * dx) / 3, y: y + dy },\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_18__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](attrs, function (v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9sYXlvdXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBK0I7QUFDYztBQUNnQjtBQUNGO0FBQ25CO0FBQ0k7QUFDTDtBQUNZO0FBQ1Y7QUFDb0I7QUFDZDtBQUNiOztBQUVoQjs7QUFFbEI7QUFDQSx3Q0FBd0MsMkNBQVMsR0FBRyw2Q0FBVztBQUMvRDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLElBQUksNENBQVc7QUFDZixHQUFHO0FBQ0g7QUFDQSxJQUFJLGtEQUFnQjtBQUNwQixHQUFHO0FBQ0g7QUFDQSxJQUFJLG9EQUFJLENBQUMseURBQXVCO0FBQ2hDLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsSUFBSSx1REFBcUI7QUFDekIsR0FBRztBQUNIO0FBQ0EsSUFBSSxzREFBb0I7QUFDeEIsR0FBRztBQUNIO0FBQ0EsSUFBSSxxREFBbUI7QUFDdkIsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLElBQUksOENBQWE7QUFDakIsR0FBRztBQUNIO0FBQ0EsSUFBSSwwRUFBaUI7QUFDckIsR0FBRztBQUNIO0FBQ0EsSUFBSSwwRUFBaUI7QUFDckIsR0FBRztBQUNIO0FBQ0EsSUFBSSxzREFBSztBQUNULEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsSUFBSSx5REFBdUI7QUFDM0IsR0FBRztBQUNIO0FBQ0EsSUFBSSw0REFBUTtBQUNaLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxJQUFJLCtDQUFjO0FBQ2xCLEdBQUc7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O0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsRUFBRSxrREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGtEQUFNO0FBQzNCLHFCQUFxQixrREFBTTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsRUFBRSxrREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBLEVBQUUsa0RBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHdCQUF3QjtBQUNwRDtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsZUFBZSx1REFBcUI7QUFDcEMsRUFBRSxrREFBUztBQUNYO0FBQ0EsSUFBSSxrREFBUztBQUNiO0FBQ0E7QUFDQSxNQUFNLGtEQUFTO0FBQ2YsUUFBUSxtREFBaUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0EsRUFBRSxrREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxnQ0FBZ0M7QUFDMUMsVUFBVSxnQ0FBZ0M7QUFDMUMsVUFBVSxpQkFBaUI7QUFDM0IsVUFBVSxnQ0FBZ0M7QUFDMUMsVUFBVSxnQ0FBZ0M7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxTQUFTLGtEQUFXLENBQUMsa0RBQU07QUFDM0I7O0FBRUE7QUFDQTtBQUNBLEVBQUUsa0RBQVM7QUFDWDtBQUNBLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvbGF5b3V0LmpzPzcwODgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuLi9ncmFwaGxpYi9pbmRleC5qcyc7XG5pbXBvcnQgeyBhZGRCb3JkZXJTZWdtZW50cyB9IGZyb20gJy4vYWRkLWJvcmRlci1zZWdtZW50cy5qcyc7XG5pbXBvcnQgKiBhcyBjb29yZGluYXRlU3lzdGVtIGZyb20gJy4vY29vcmRpbmF0ZS1zeXN0ZW0uanMnO1xuaW1wb3J0ICogYXMgYWN5Y2xpYyBmcm9tICcuL2FjeWNsaWMuanMnO1xuaW1wb3J0ICogYXMgbm9ybWFsaXplIGZyb20gJy4vbm9ybWFsaXplLmpzJztcbmltcG9ydCB7IHJhbmsgfSBmcm9tICcuL3JhbmsvaW5kZXguanMnO1xuaW1wb3J0ICogYXMgbmVzdGluZ0dyYXBoIGZyb20gJy4vbmVzdGluZy1ncmFwaC5qcyc7XG5pbXBvcnQgeyBvcmRlciB9IGZyb20gJy4vb3JkZXIvaW5kZXguanMnO1xuaW1wb3J0IHsgcGFyZW50RHVtbXlDaGFpbnMgfSBmcm9tICcuL3BhcmVudC1kdW1teS1jaGFpbnMuanMnO1xuaW1wb3J0IHsgcG9zaXRpb24gfSBmcm9tICcuL3Bvc2l0aW9uL2luZGV4LmpzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgbGF5b3V0IH07XG5cbmZ1bmN0aW9uIGxheW91dChnLCBvcHRzKSB7XG4gIHZhciB0aW1lID0gb3B0cyAmJiBvcHRzLmRlYnVnVGltaW5nID8gdXRpbC50aW1lIDogdXRpbC5ub3RpbWU7XG4gIHRpbWUoJ2xheW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGF5b3V0R3JhcGggPSB0aW1lKCcgIGJ1aWxkTGF5b3V0R3JhcGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYnVpbGRMYXlvdXRHcmFwaChnKTtcbiAgICB9KTtcbiAgICB0aW1lKCcgIHJ1bkxheW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJ1bkxheW91dChsYXlvdXRHcmFwaCwgdGltZSk7XG4gICAgfSk7XG4gICAgdGltZSgnICB1cGRhdGVJbnB1dEdyYXBoJywgZnVuY3Rpb24gKCkge1xuICAgICAgdXBkYXRlSW5wdXRHcmFwaChnLCBsYXlvdXRHcmFwaCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5MYXlvdXQoZywgdGltZSkge1xuICB0aW1lKCcgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVscycsIGZ1bmN0aW9uICgpIHtcbiAgICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIHJlbW92ZVNlbGZFZGdlcycsIGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVTZWxmRWRnZXMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgYWN5Y2xpYycsIGZ1bmN0aW9uICgpIHtcbiAgICBhY3ljbGljLnJ1bihnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBuZXN0aW5nR3JhcGgucnVuJywgZnVuY3Rpb24gKCkge1xuICAgIG5lc3RpbmdHcmFwaC5ydW4oZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcmFuaycsIGZ1bmN0aW9uICgpIHtcbiAgICByYW5rKHV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBpbmplY3RFZGdlTGFiZWxQcm94aWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcmVtb3ZlRW1wdHlSYW5rcycsIGZ1bmN0aW9uICgpIHtcbiAgICB1dGlsLnJlbW92ZUVtcHR5UmFua3MoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgbmVzdGluZ0dyYXBoLmNsZWFudXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgbmVzdGluZ0dyYXBoLmNsZWFudXAoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgbm9ybWFsaXplUmFua3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgdXRpbC5ub3JtYWxpemVSYW5rcyhnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBhc3NpZ25SYW5rTWluTWF4JywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2lnblJhbmtNaW5NYXgoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIG5vcm1hbGl6ZS5ydW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgbm9ybWFsaXplLnJ1bihnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBwYXJlbnREdW1teUNoYWlucycsIGZ1bmN0aW9uICgpIHtcbiAgICBwYXJlbnREdW1teUNoYWlucyhnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBhZGRCb3JkZXJTZWdtZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICBhZGRCb3JkZXJTZWdtZW50cyhnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBvcmRlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBvcmRlcihnKTtcbiAgfSk7XG4gIHRpbWUoJyAgICBpbnNlcnRTZWxmRWRnZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaW5zZXJ0U2VsZkVkZ2VzKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIGFkanVzdENvb3JkaW5hdGVTeXN0ZW0nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29vcmRpbmF0ZVN5c3RlbS5hZGp1c3QoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcG9zaXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgcG9zaXRpb24oZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcG9zaXRpb25TZWxmRWRnZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgcG9zaXRpb25TZWxmRWRnZXMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgcmVtb3ZlQm9yZGVyTm9kZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgcmVtb3ZlQm9yZGVyTm9kZXMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgbm9ybWFsaXplLnVuZG8nLCBmdW5jdGlvbiAoKSB7XG4gICAgbm9ybWFsaXplLnVuZG8oZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgZml4dXBFZGdlTGFiZWxDb29yZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgZml4dXBFZGdlTGFiZWxDb29yZHMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29vcmRpbmF0ZVN5c3RlbS51bmRvKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIHRyYW5zbGF0ZUdyYXBoJywgZnVuY3Rpb24gKCkge1xuICAgIHRyYW5zbGF0ZUdyYXBoKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpO1xuICB9KTtcbiAgdGltZSgnICAgIHJldmVyc2VQb2ludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZyk7XG4gIH0pO1xuICB0aW1lKCcgICAgYWN5Y2xpYy51bmRvJywgZnVuY3Rpb24gKCkge1xuICAgIGFjeWNsaWMudW5kbyhnKTtcbiAgfSk7XG59XG5cbi8qXG4gKiBDb3BpZXMgZmluYWwgbGF5b3V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGxheW91dCBncmFwaCBiYWNrIHRvIHRoZSBpbnB1dFxuICogZ3JhcGguIFRoaXMgcHJvY2VzcyBvbmx5IGNvcGllcyB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGxheW91dCBncmFwaFxuICogdG8gdGhlIGlucHV0IGdyYXBoLCBzbyBpdCBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiB1cGRhdGVJbnB1dEdyYXBoKGlucHV0R3JhcGgsIGxheW91dEdyYXBoKSB7XG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLm5vZGUodik7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGgubm9kZSh2KTtcblxuICAgIGlmIChpbnB1dExhYmVsKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcblxuICAgICAgaWYgKGxheW91dEdyYXBoLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgICBpbnB1dExhYmVsLndpZHRoID0gbGF5b3V0TGFiZWwud2lkdGg7XG4gICAgICAgIGlucHV0TGFiZWwuaGVpZ2h0ID0gbGF5b3V0TGFiZWwuaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGguZWRnZShlKTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5lZGdlKGUpO1xuXG4gICAgaW5wdXRMYWJlbC5wb2ludHMgPSBsYXlvdXRMYWJlbC5wb2ludHM7XG4gICAgaWYgKF8uaGFzKGxheW91dExhYmVsLCAneCcpKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcbiAgICB9XG4gIH0pO1xuXG4gIGlucHV0R3JhcGguZ3JhcGgoKS53aWR0aCA9IGxheW91dEdyYXBoLmdyYXBoKCkud2lkdGg7XG4gIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn1cblxudmFyIGdyYXBoTnVtQXR0cnMgPSBbJ25vZGVzZXAnLCAnZWRnZXNlcCcsICdyYW5rc2VwJywgJ21hcmdpbngnLCAnbWFyZ2lueSddO1xudmFyIGdyYXBoRGVmYXVsdHMgPSB7IHJhbmtzZXA6IDUwLCBlZGdlc2VwOiAyMCwgbm9kZXNlcDogNTAsIHJhbmtkaXI6ICd0YicgfTtcbnZhciBncmFwaEF0dHJzID0gWydhY3ljbGljZXInLCAncmFua2VyJywgJ3JhbmtkaXInLCAnYWxpZ24nXTtcbnZhciBub2RlTnVtQXR0cnMgPSBbJ3dpZHRoJywgJ2hlaWdodCddO1xudmFyIG5vZGVEZWZhdWx0cyA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xudmFyIGVkZ2VOdW1BdHRycyA9IFsnbWlubGVuJywgJ3dlaWdodCcsICd3aWR0aCcsICdoZWlnaHQnLCAnbGFiZWxvZmZzZXQnXTtcbnZhciBlZGdlRGVmYXVsdHMgPSB7XG4gIG1pbmxlbjogMSxcbiAgd2VpZ2h0OiAxLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICBsYWJlbG9mZnNldDogMTAsXG4gIGxhYmVscG9zOiAncicsXG59O1xudmFyIGVkZ2VBdHRycyA9IFsnbGFiZWxwb3MnXTtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBuZXcgZ3JhcGggZnJvbSB0aGUgaW5wdXQgZ3JhcGgsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBsYXlvdXQuXG4gKiBUaGlzIHByb2Nlc3MgY29waWVzIG9ubHkgd2hpdGVsaXN0ZWQgYXR0cmlidXRlcyBmcm9tIHRoZSBpbnB1dCBncmFwaCB0byB0aGVcbiAqIGxheW91dCBncmFwaC4gVGh1cyB0aGlzIGZ1bmN0aW9uIHNlcnZlcyBhcyBhIGdvb2QgcGxhY2UgdG8gZGV0ZXJtaW5lIHdoYXRcbiAqIGF0dHJpYnV0ZXMgY2FuIGluZmx1ZW5jZSBsYXlvdXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCkge1xuICB2YXIgZyA9IG5ldyBHcmFwaCh7IG11bHRpZ3JhcGg6IHRydWUsIGNvbXBvdW5kOiB0cnVlIH0pO1xuICB2YXIgZ3JhcGggPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtcblxuICBnLnNldEdyYXBoKFxuICAgIF8ubWVyZ2Uoe30sIGdyYXBoRGVmYXVsdHMsIHNlbGVjdE51bWJlckF0dHJzKGdyYXBoLCBncmFwaE51bUF0dHJzKSwgXy5waWNrKGdyYXBoLCBncmFwaEF0dHJzKSlcbiAgKTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHZhciBub2RlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGgubm9kZSh2KSk7XG4gICAgZy5zZXROb2RlKHYsIF8uZGVmYXVsdHMoc2VsZWN0TnVtYmVyQXR0cnMobm9kZSwgbm9kZU51bUF0dHJzKSwgbm9kZURlZmF1bHRzKSk7XG4gICAgZy5zZXRQYXJlbnQodiwgaW5wdXRHcmFwaC5wYXJlbnQodikpO1xuICB9KTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZWRnZShlKSk7XG4gICAgZy5zZXRFZGdlKFxuICAgICAgZSxcbiAgICAgIF8ubWVyZ2Uoe30sIGVkZ2VEZWZhdWx0cywgc2VsZWN0TnVtYmVyQXR0cnMoZWRnZSwgZWRnZU51bUF0dHJzKSwgXy5waWNrKGVkZ2UsIGVkZ2VBdHRycykpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGc7XG59XG5cbi8qXG4gKiBUaGlzIGlkZWEgY29tZXMgZnJvbSB0aGUgR2Fuc25lciBwYXBlcjogdG8gYWNjb3VudCBmb3IgZWRnZSBsYWJlbHMgaW4gb3VyXG4gKiBsYXlvdXQgd2Ugc3BsaXQgZWFjaCByYW5rIGluIGhhbGYgYnkgZG91YmxpbmcgbWlubGVuIGFuZCBoYWx2aW5nIHJhbmtzZXAuXG4gKiBUaGVuIHdlIGNhbiBwbGFjZSBsYWJlbHMgYXQgdGhlc2UgbWlkLXBvaW50cyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFdlIGFsc28gYWRkIHNvbWUgbWluaW1hbCBwYWRkaW5nIHRvIHRoZSB3aWR0aCB0byBwdXNoIHRoZSBsYWJlbCBmb3IgdGhlIGVkZ2VcbiAqIGF3YXkgZnJvbSB0aGUgZWRnZSBpdHNlbGYgYSBiaXQuXG4gKi9cbmZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZykge1xuICB2YXIgZ3JhcGggPSBnLmdyYXBoKCk7XG4gIGdyYXBoLnJhbmtzZXAgLz0gMjtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBlZGdlLm1pbmxlbiAqPSAyO1xuICAgIGlmIChlZGdlLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkgIT09ICdjJykge1xuICAgICAgaWYgKGdyYXBoLnJhbmtkaXIgPT09ICdUQicgfHwgZ3JhcGgucmFua2RpciA9PT0gJ0JUJykge1xuICAgICAgICBlZGdlLndpZHRoICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLmhlaWdodCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qXG4gKiBDcmVhdGVzIHRlbXBvcmFyeSBkdW1teSBub2RlcyB0aGF0IGNhcHR1cmUgdGhlIHJhbmsgaW4gd2hpY2ggZWFjaCBlZGdlJ3NcbiAqIGxhYmVsIGlzIGdvaW5nIHRvLCBpZiBpdCBoYXMgb25lIG9mIG5vbi16ZXJvIHdpZHRoIGFuZCBoZWlnaHQuIFdlIGRvIHRoaXNcbiAqIHNvIHRoYXQgd2UgY2FuIHNhZmVseSByZW1vdmUgZW1wdHkgcmFua3Mgd2hpbGUgcHJlc2VydmluZyBiYWxhbmNlIGZvciB0aGVcbiAqIGxhYmVsJ3MgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLndpZHRoICYmIGVkZ2UuaGVpZ2h0KSB7XG4gICAgICB2YXIgdiA9IGcubm9kZShlLnYpO1xuICAgICAgdmFyIHcgPSBnLm5vZGUoZS53KTtcbiAgICAgIHZhciBsYWJlbCA9IHsgcmFuazogKHcucmFuayAtIHYucmFuaykgLyAyICsgdi5yYW5rLCBlOiBlIH07XG4gICAgICB1dGlsLmFkZER1bW15Tm9kZShnLCAnZWRnZS1wcm94eScsIGxhYmVsLCAnX2VwJyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduUmFua01pbk1heChnKSB7XG4gIHZhciBtYXhSYW5rID0gMDtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAobm9kZS5ib3JkZXJUb3ApIHtcbiAgICAgIG5vZGUubWluUmFuayA9IGcubm9kZShub2RlLmJvcmRlclRvcCkucmFuaztcbiAgICAgIG5vZGUubWF4UmFuayA9IGcubm9kZShub2RlLmJvcmRlckJvdHRvbSkucmFuaztcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIG1heFJhbmsgPSBfLm1heChtYXhSYW5rLCBub2RlLm1heFJhbmspO1xuICAgIH1cbiAgfSk7XG4gIGcuZ3JhcGgoKS5tYXhSYW5rID0gbWF4UmFuaztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKSB7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKG5vZGUuZHVtbXkgPT09ICdlZGdlLXByb3h5Jykge1xuICAgICAgZy5lZGdlKG5vZGUuZSkubGFiZWxSYW5rID0gbm9kZS5yYW5rO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUdyYXBoKGcpIHtcbiAgdmFyIG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhYID0gMDtcbiAgdmFyIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhZID0gMDtcbiAgdmFyIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCk7XG4gIHZhciBtYXJnaW5YID0gZ3JhcGhMYWJlbC5tYXJnaW54IHx8IDA7XG4gIHZhciBtYXJnaW5ZID0gZ3JhcGhMYWJlbC5tYXJnaW55IHx8IDA7XG5cbiAgZnVuY3Rpb24gZ2V0RXh0cmVtZXMoYXR0cnMpIHtcbiAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgdmFyIHkgPSBhdHRycy55O1xuICAgIHZhciB3ID0gYXR0cnMud2lkdGg7XG4gICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHggLSB3IC8gMik7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHggKyB3IC8gMik7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkgLSBoIC8gMik7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkgKyBoIC8gMik7XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIGdldEV4dHJlbWVzKGcubm9kZSh2KSk7XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCAneCcpKSB7XG4gICAgICBnZXRFeHRyZW1lcyhlZGdlKTtcbiAgICB9XG4gIH0pO1xuXG4gIG1pblggLT0gbWFyZ2luWDtcbiAgbWluWSAtPSBtYXJnaW5ZO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbm9kZS54IC09IG1pblg7XG4gICAgbm9kZS55IC09IG1pblk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBmdW5jdGlvbiAocCkge1xuICAgICAgcC54IC09IG1pblg7XG4gICAgICBwLnkgLT0gbWluWTtcbiAgICB9KTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgJ3gnKSkge1xuICAgICAgZWRnZS54IC09IG1pblg7XG4gICAgfVxuICAgIGlmIChfLmhhcyhlZGdlLCAneScpKSB7XG4gICAgICBlZGdlLnkgLT0gbWluWTtcbiAgICB9XG4gIH0pO1xuXG4gIGdyYXBoTGFiZWwud2lkdGggPSBtYXhYIC0gbWluWCArIG1hcmdpblg7XG4gIGdyYXBoTGFiZWwuaGVpZ2h0ID0gbWF4WSAtIG1pblkgKyBtYXJnaW5ZO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25Ob2RlSW50ZXJzZWN0cyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIG5vZGVWID0gZy5ub2RlKGUudik7XG4gICAgdmFyIG5vZGVXID0gZy5ub2RlKGUudyk7XG4gICAgdmFyIHAxLCBwMjtcbiAgICBpZiAoIWVkZ2UucG9pbnRzKSB7XG4gICAgICBlZGdlLnBvaW50cyA9IFtdO1xuICAgICAgcDEgPSBub2RlVztcbiAgICAgIHAyID0gbm9kZVY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHAxID0gZWRnZS5wb2ludHNbMF07XG4gICAgICBwMiA9IGVkZ2UucG9pbnRzW2VkZ2UucG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBlZGdlLnBvaW50cy51bnNoaWZ0KHV0aWwuaW50ZXJzZWN0UmVjdChub2RlViwgcDEpKTtcbiAgICBlZGdlLnBvaW50cy5wdXNoKHV0aWwuaW50ZXJzZWN0UmVjdChub2RlVywgcDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgJ3gnKSkge1xuICAgICAgaWYgKGVkZ2UubGFiZWxwb3MgPT09ICdsJyB8fCBlZGdlLmxhYmVscG9zID09PSAncicpIHtcbiAgICAgICAgZWRnZS53aWR0aCAtPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlZGdlLmxhYmVscG9zKSB7XG4gICAgICAgIGNhc2UgJ2wnOlxuICAgICAgICAgIGVkZ2UueCAtPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgIGVkZ2UueCArPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLnJldmVyc2VkKSB7XG4gICAgICBlZGdlLnBvaW50cy5yZXZlcnNlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQm9yZGVyTm9kZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIGlmIChnLmNoaWxkcmVuKHYpLmxlbmd0aCkge1xuICAgICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgICB2YXIgdCA9IGcubm9kZShub2RlLmJvcmRlclRvcCk7XG4gICAgICB2YXIgYiA9IGcubm9kZShub2RlLmJvcmRlckJvdHRvbSk7XG4gICAgICB2YXIgbCA9IGcubm9kZShfLmxhc3Qobm9kZS5ib3JkZXJMZWZ0KSk7XG4gICAgICB2YXIgciA9IGcubm9kZShfLmxhc3Qobm9kZS5ib3JkZXJSaWdodCkpO1xuXG4gICAgICBub2RlLndpZHRoID0gTWF0aC5hYnMoci54IC0gbC54KTtcbiAgICAgIG5vZGUuaGVpZ2h0ID0gTWF0aC5hYnMoYi55IC0gdC55KTtcbiAgICAgIG5vZGUueCA9IGwueCArIG5vZGUud2lkdGggLyAyO1xuICAgICAgbm9kZS55ID0gdC55ICsgbm9kZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICBpZiAoZy5ub2RlKHYpLmR1bW15ID09PSAnYm9yZGVyJykge1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNlbGZFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudiA9PT0gZS53KSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZShlLnYpO1xuICAgICAgaWYgKCFub2RlLnNlbGZFZGdlcykge1xuICAgICAgICBub2RlLnNlbGZFZGdlcyA9IFtdO1xuICAgICAgfVxuICAgICAgbm9kZS5zZWxmRWRnZXMucHVzaCh7IGU6IGUsIGxhYmVsOiBnLmVkZ2UoZSkgfSk7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U2VsZkVkZ2VzKGcpIHtcbiAgdmFyIGxheWVycyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgXy5mb3JFYWNoKGxheWVycywgZnVuY3Rpb24gKGxheWVyKSB7XG4gICAgdmFyIG9yZGVyU2hpZnQgPSAwO1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgbm9kZS5vcmRlciA9IGkgKyBvcmRlclNoaWZ0O1xuICAgICAgXy5mb3JFYWNoKG5vZGUuc2VsZkVkZ2VzLCBmdW5jdGlvbiAoc2VsZkVkZ2UpIHtcbiAgICAgICAgdXRpbC5hZGREdW1teU5vZGUoXG4gICAgICAgICAgZyxcbiAgICAgICAgICAnc2VsZmVkZ2UnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiBzZWxmRWRnZS5sYWJlbC53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogc2VsZkVkZ2UubGFiZWwuaGVpZ2h0LFxuICAgICAgICAgICAgcmFuazogbm9kZS5yYW5rLFxuICAgICAgICAgICAgb3JkZXI6IGkgKyArK29yZGVyU2hpZnQsXG4gICAgICAgICAgICBlOiBzZWxmRWRnZS5lLFxuICAgICAgICAgICAgbGFiZWw6IHNlbGZFZGdlLmxhYmVsLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgJ19zZSdcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIG5vZGUuc2VsZkVkZ2VzO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25TZWxmRWRnZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSAnc2VsZmVkZ2UnKSB7XG4gICAgICB2YXIgc2VsZk5vZGUgPSBnLm5vZGUobm9kZS5lLnYpO1xuICAgICAgdmFyIHggPSBzZWxmTm9kZS54ICsgc2VsZk5vZGUud2lkdGggLyAyO1xuICAgICAgdmFyIHkgPSBzZWxmTm9kZS55O1xuICAgICAgdmFyIGR4ID0gbm9kZS54IC0geDtcbiAgICAgIHZhciBkeSA9IHNlbGZOb2RlLmhlaWdodCAvIDI7XG4gICAgICBnLnNldEVkZ2Uobm9kZS5lLCBub2RlLmxhYmVsKTtcbiAgICAgIGcucmVtb3ZlTm9kZSh2KTtcbiAgICAgIG5vZGUubGFiZWwucG9pbnRzID0gW1xuICAgICAgICB7IHg6IHggKyAoMiAqIGR4KSAvIDMsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyAoNSAqIGR4KSAvIDYsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyBkeCwgeTogeSB9LFxuICAgICAgICB7IHg6IHggKyAoNSAqIGR4KSAvIDYsIHk6IHkgKyBkeSB9LFxuICAgICAgICB7IHg6IHggKyAoMiAqIGR4KSAvIDMsIHk6IHkgKyBkeSB9LFxuICAgICAgXTtcbiAgICAgIG5vZGUubGFiZWwueCA9IG5vZGUueDtcbiAgICAgIG5vZGUubGFiZWwueSA9IG5vZGUueTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZWxlY3ROdW1iZXJBdHRycyhvYmosIGF0dHJzKSB7XG4gIHJldHVybiBfLm1hcFZhbHVlcyhfLnBpY2sob2JqLCBhdHRycyksIE51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGNhbm9uaWNhbGl6ZShhdHRycykge1xuICB2YXIgbmV3QXR0cnMgPSB7fTtcbiAgXy5mb3JFYWNoKGF0dHJzLCBmdW5jdGlvbiAodiwgaykge1xuICAgIG5ld0F0dHJzW2sudG9Mb3dlckNhc2UoKV0gPSB2O1xuICB9KTtcbiAgcmV0dXJuIG5ld0F0dHJzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/layout.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cleanup\": () => (/* binding */ cleanup),\n/* harmony export */ \"run\": () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/values.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/reduce.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = _util_js__WEBPACK_IMPORTED_MODULE_0__.addDummyNode(g, 'root', {}, '_root');\n var depths = treeDepths(g);\n var height = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.edges(), function (e) {\n g.edge(e).minlen *= nodeSep;\n });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.children(), function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = _util_js__WEBPACK_IMPORTED_MODULE_0__.addBorderNode(g, '_bt');\n var bottom = _util_js__WEBPACK_IMPORTED_MODULE_0__.addBorderNode(g, '_bb');\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](children, function (child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true,\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](children, function (child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.children(), function (v) {\n dfs(v, 1);\n });\n return depths;\n}\n\nfunction sumWeights(g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n g.edges(),\n function (acc, e) {\n return acc + g.edge(e).weight;\n },\n 0\n );\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.edges(), function (e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9uZXN0aW5nLWdyYXBoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0I7QUFDRzs7QUFFVjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxrREFBaUIsY0FBYztBQUM1QztBQUNBLGVBQWUsaURBQUssQ0FBQyxpREFBUSxlQUFlO0FBQzVDOztBQUVBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0QkFBNEI7QUFDdkQ7QUFDQTtBQUNBOztBQUVBLFlBQVksbURBQWtCO0FBQzlCLGVBQWUsbURBQWtCO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUsaURBQVM7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0EsMkJBQTJCLHVDQUF1QztBQUNsRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlEQUFTO0FBQ2Y7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxTQUFTLGlEQUFRO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9uZXN0aW5nLWdyYXBoLmpzPzIwYmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBydW4sIGNsZWFudXAgfTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCAncm9vdCcsIHt9LCAnX3Jvb3QnKTtcbiAgdmFyIGRlcHRocyA9IHRyZWVEZXB0aHMoZyk7XG4gIHZhciBoZWlnaHQgPSBfLm1heChfLnZhbHVlcyhkZXB0aHMpKSAtIDE7IC8vIE5vdGU6IGRlcHRocyBpcyBhbiBPYmplY3Qgbm90IGFuIGFycmF5XG4gIHZhciBub2RlU2VwID0gMiAqIGhlaWdodCArIDE7XG5cbiAgZy5ncmFwaCgpLm5lc3RpbmdSb290ID0gcm9vdDtcblxuICAvLyBNdWx0aXBseSBtaW5sZW4gYnkgbm9kZVNlcCB0byBhbGlnbiBub2RlcyBvbiBub24tYm9yZGVyIHJhbmtzLlxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIGcuZWRnZShlKS5taW5sZW4gKj0gbm9kZVNlcDtcbiAgfSk7XG5cbiAgLy8gQ2FsY3VsYXRlIGEgd2VpZ2h0IHRoYXQgaXMgc3VmZmljaWVudCB0byBrZWVwIHN1YmdyYXBocyB2ZXJ0aWNhbGx5IGNvbXBhY3RcbiAgdmFyIHdlaWdodCA9IHN1bVdlaWdodHMoZykgKyAxO1xuXG4gIC8vIENyZWF0ZSBib3JkZXIgbm9kZXMgYW5kIGxpbmsgdGhlbSB1cFxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCAnX2J0Jyk7XG4gIHZhciBib3R0b20gPSB1dGlsLmFkZEJvcmRlck5vZGUoZywgJ19iYicpO1xuICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG5cbiAgZy5zZXRQYXJlbnQodG9wLCB2KTtcbiAgbGFiZWwuYm9yZGVyVG9wID0gdG9wO1xuICBnLnNldFBhcmVudChib3R0b20sIHYpO1xuICBsYWJlbC5ib3JkZXJCb3R0b20gPSBib3R0b207XG5cbiAgXy5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWUsXG4gICAgfSk7XG5cbiAgICBnLnNldEVkZ2UoY2hpbGRCb3R0b20sIGJvdHRvbSwge1xuICAgICAgd2VpZ2h0OiB0aGlzV2VpZ2h0LFxuICAgICAgbWlubGVuOiBtaW5sZW4sXG4gICAgICBuZXN0aW5nRWRnZTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaWYgKCFnLnBhcmVudCh2KSkge1xuICAgIGcuc2V0RWRnZShyb290LCB0b3AsIHsgd2VpZ2h0OiAwLCBtaW5sZW46IGhlaWdodCArIGRlcHRoc1t2XSB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmVlRGVwdGhzKGcpIHtcbiAgdmFyIGRlcHRocyA9IHt9O1xuICBmdW5jdGlvbiBkZnModiwgZGVwdGgpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbiAodikge1xuICAgIGRmcyh2LCAxKTtcbiAgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgZy5lZGdlcygpLFxuICAgIGZ1bmN0aW9uIChhY2MsIGUpIHtcbiAgICAgIHJldHVybiBhY2MgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0sXG4gICAgMFxuICApO1xufVxuXG5mdW5jdGlvbiBjbGVhbnVwKGcpIHtcbiAgdmFyIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCk7XG4gIGcucmVtb3ZlTm9kZShncmFwaExhYmVsLm5lc3RpbmdSb290KTtcbiAgZGVsZXRlIGdyYXBoTGFiZWwubmVzdGluZ1Jvb3Q7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2UubmVzdGluZ0VkZ2UpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/nesting-graph.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/normalize.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/normalize.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"run\": () => (/* binding */ run),\n/* harmony export */ \"undo\": () => (/* binding */ undo)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.edges(), function (edge) {\n normalizeEdge(g, edge);\n });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0,\n height: 0,\n edgeLabel: edgeLabel,\n edgeObj: e,\n rank: vRank,\n };\n dummy = _util_js__WEBPACK_IMPORTED_MODULE_0__.addDummyNode(g, 'edge', attrs, '_d');\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n // @ts-expect-error\n attrs.dummy = 'edge-label';\n // @ts-expect-error\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === 'edge-label') {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9ub3JtYWxpemUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUErQjtBQUNHOztBQUViOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGtEQUFpQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDBCQUEwQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQiwwQkFBMEI7QUFDOUM7O0FBRUE7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsc0JBQXNCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL25vcm1hbGl6ZS5qcz8yMzBjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgcnVuLCB1bmRvIH07XG5cbi8qXG4gKiBCcmVha3MgYW55IGxvbmcgZWRnZXMgaW4gdGhlIGdyYXBoIGludG8gc2hvcnQgc2VnbWVudHMgdGhhdCBzcGFuIDEgbGF5ZXJcbiAqIGVhY2guIFRoaXMgb3BlcmF0aW9uIGlzIHVuZG9hYmxlIHdpdGggdGhlIGRlbm9ybWFsaXplIGZ1bmN0aW9uLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIFRoZSBpbnB1dCBncmFwaCBpcyBhIERBRy5cbiAqICAgIDIuIEVhY2ggbm9kZSBpbiB0aGUgZ3JhcGggaGFzIGEgXCJyYW5rXCIgcHJvcGVydHkuXG4gKlxuICogUG9zdC1jb25kaXRpb246XG4gKlxuICogICAgMS4gQWxsIGVkZ2VzIGluIHRoZSBncmFwaCBoYXZlIGEgbGVuZ3RoIG9mIDEuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgd2hlcmUgZWRnZXMgaGF2ZSBiZWVuIHNwbGl0IGludG8gc2VnbWVudHMuXG4gKiAgICAzLiBUaGUgZ3JhcGggaXMgYXVnbWVudGVkIHdpdGggYSBcImR1bW15Q2hhaW5zXCIgYXR0cmlidXRlIHdoaWNoIGNvbnRhaW5zXG4gKiAgICAgICB0aGUgZmlyc3QgZHVtbXkgaW4gZWFjaCBjaGFpbiBvZiBkdW1teSBub2RlcyBwcm9kdWNlZC5cbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zID0gW107XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgbm9ybWFsaXplRWRnZShnLCBlZGdlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVkZ2UoZywgZSkge1xuICB2YXIgdiA9IGUudjtcbiAgdmFyIHZSYW5rID0gZy5ub2RlKHYpLnJhbms7XG4gIHZhciB3ID0gZS53O1xuICB2YXIgd1JhbmsgPSBnLm5vZGUodykucmFuaztcbiAgdmFyIG5hbWUgPSBlLm5hbWU7XG4gIHZhciBlZGdlTGFiZWwgPSBnLmVkZ2UoZSk7XG4gIHZhciBsYWJlbFJhbmsgPSBlZGdlTGFiZWwubGFiZWxSYW5rO1xuXG4gIGlmICh3UmFuayA9PT0gdlJhbmsgKyAxKSByZXR1cm47XG5cbiAgZy5yZW1vdmVFZGdlKGUpO1xuXG4gIHZhciBkdW1teSwgYXR0cnMsIGk7XG4gIGZvciAoaSA9IDAsICsrdlJhbms7IHZSYW5rIDwgd1Jhbms7ICsraSwgKyt2UmFuaykge1xuICAgIGVkZ2VMYWJlbC5wb2ludHMgPSBbXTtcbiAgICBhdHRycyA9IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwLFxuICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsXG4gICAgICBlZGdlT2JqOiBlLFxuICAgICAgcmFuazogdlJhbmssXG4gICAgfTtcbiAgICBkdW1teSA9IHV0aWwuYWRkRHVtbXlOb2RlKGcsICdlZGdlJywgYXR0cnMsICdfZCcpO1xuICAgIGlmICh2UmFuayA9PT0gbGFiZWxSYW5rKSB7XG4gICAgICBhdHRycy53aWR0aCA9IGVkZ2VMYWJlbC53aWR0aDtcbiAgICAgIGF0dHJzLmhlaWdodCA9IGVkZ2VMYWJlbC5oZWlnaHQ7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBhdHRycy5kdW1teSA9ICdlZGdlLWxhYmVsJztcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGF0dHJzLmxhYmVscG9zID0gZWRnZUxhYmVsLmxhYmVscG9zO1xuICAgIH1cbiAgICBnLnNldEVkZ2UodiwgZHVtbXksIHsgd2VpZ2h0OiBlZGdlTGFiZWwud2VpZ2h0IH0sIG5hbWUpO1xuICAgIGlmIChpID09PSAwKSB7XG4gICAgICBnLmdyYXBoKCkuZHVtbXlDaGFpbnMucHVzaChkdW1teSk7XG4gICAgfVxuICAgIHYgPSBkdW1teTtcbiAgfVxuXG4gIGcuc2V0RWRnZSh2LCB3LCB7IHdlaWdodDogZWRnZUxhYmVsLndlaWdodCB9LCBuYW1lKTtcbn1cblxuZnVuY3Rpb24gdW5kbyhnKSB7XG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIG9yaWdMYWJlbCA9IG5vZGUuZWRnZUxhYmVsO1xuICAgIHZhciB3O1xuICAgIGcuc2V0RWRnZShub2RlLmVkZ2VPYmosIG9yaWdMYWJlbCk7XG4gICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHcgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBvcmlnTGFiZWwucG9pbnRzLnB1c2goeyB4OiBub2RlLngsIHk6IG5vZGUueSB9KTtcbiAgICAgIGlmIChub2RlLmR1bW15ID09PSAnZWRnZS1sYWJlbCcpIHtcbiAgICAgICAgb3JpZ0xhYmVsLnggPSBub2RlLng7XG4gICAgICAgIG9yaWdMYWJlbC55ID0gbm9kZS55O1xuICAgICAgICBvcmlnTGFiZWwud2lkdGggPSBub2RlLndpZHRoO1xuICAgICAgICBvcmlnTGFiZWwuaGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB2ID0gdztcbiAgICAgIG5vZGUgPSBnLm5vZGUodik7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/normalize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js": +/*!*************************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js ***! + \*************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addSubgraphConstraints\": () => (/* binding */ addSubgraphConstraints)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n\n\n\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](vs, function (v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRUc7O0FBRWxDO0FBQ0EsZUFBZTtBQUNmOztBQUVBLEVBQUUsaURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL29yZGVyL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cy5qcz83OTFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHsgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyB9O1xuXG5mdW5jdGlvbiBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGcsIGNnLCB2cykge1xuICB2YXIgcHJldiA9IHt9LFxuICAgIHJvb3RQcmV2O1xuXG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24gKHYpIHtcbiAgICB2YXIgY2hpbGQgPSBnLnBhcmVudCh2KSxcbiAgICAgIHBhcmVudCxcbiAgICAgIHByZXZDaGlsZDtcbiAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgIHBhcmVudCA9IGcucGFyZW50KGNoaWxkKTtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgcHJldkNoaWxkID0gcHJldltwYXJlbnRdO1xuICAgICAgICBwcmV2W3BhcmVudF0gPSBjaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHJvb3RQcmV2O1xuICAgICAgICByb290UHJldiA9IGNoaWxkO1xuICAgICAgfVxuICAgICAgaWYgKHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQgIT09IGNoaWxkKSB7XG4gICAgICAgIGNnLnNldEVkZ2UocHJldkNoaWxkLCBjaGlsZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgIH1cbiAgfSk7XG5cbiAgLypcbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB2ID8gZy5jaGlsZHJlbih2KSA6IGcuY2hpbGRyZW4oKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB2YXIgbWluID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgICAgICAgIHN1YmdyYXBocyA9IFtdO1xuICAgICAgXy5lYWNoKGNoaWxkcmVuLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICB2YXIgY2hpbGRNaW4gPSBkZnMoY2hpbGQpO1xuICAgICAgICBpZiAoZy5jaGlsZHJlbihjaGlsZCkubGVuZ3RoKSB7XG4gICAgICAgICAgc3ViZ3JhcGhzLnB1c2goeyB2OiBjaGlsZCwgb3JkZXI6IGNoaWxkTWluIH0pO1xuICAgICAgICB9XG4gICAgICAgIG1pbiA9IE1hdGgubWluKG1pbiwgY2hpbGRNaW4pO1xuICAgICAgfSk7XG4gICAgICBfLnJlZHVjZShfLnNvcnRCeShzdWJncmFwaHMsIFwib3JkZXJcIiksIGZ1bmN0aW9uKHByZXYsIGN1cnIpIHtcbiAgICAgICAgY2cuc2V0RWRnZShwcmV2LnYsIGN1cnIudik7XG4gICAgICAgIHJldHVybiBjdXJyO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gZy5ub2RlKHYpLm9yZGVyO1xuICB9XG4gIGRmcyh1bmRlZmluZWQpO1xuICAqL1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"barycenter\": () => (/* binding */ barycenter)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/reduce.js\");\n\n\n\n\nfunction barycenter(g, movable) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](movable, function (v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n inV,\n function (acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + edge.weight * nodeU.order,\n weight: acc.weight + edge.weight,\n };\n },\n { sum: 0, weight: 0 }\n );\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight,\n };\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9iYXJ5Y2VudGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjs7QUFFVDs7QUFFdEI7QUFDQSxTQUFTLGlEQUFLO0FBQ2Q7QUFDQTtBQUNBLGVBQWU7QUFDZixNQUFNO0FBQ04sbUJBQW1CLGlEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL29yZGVyL2JhcnljZW50ZXIuanM/ZGE1NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IGJhcnljZW50ZXIgfTtcblxuZnVuY3Rpb24gYmFyeWNlbnRlcihnLCBtb3ZhYmxlKSB7XG4gIHJldHVybiBfLm1hcChtb3ZhYmxlLCBmdW5jdGlvbiAodikge1xuICAgIHZhciBpblYgPSBnLmluRWRnZXModik7XG4gICAgaWYgKCFpblYubGVuZ3RoKSB7XG4gICAgICByZXR1cm4geyB2OiB2IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSBfLnJlZHVjZShcbiAgICAgICAgaW5WLFxuICAgICAgICBmdW5jdGlvbiAoYWNjLCBlKSB7XG4gICAgICAgICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSksXG4gICAgICAgICAgICBub2RlVSA9IGcubm9kZShlLnYpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdW06IGFjYy5zdW0gKyBlZGdlLndlaWdodCAqIG5vZGVVLm9yZGVyLFxuICAgICAgICAgICAgd2VpZ2h0OiBhY2Mud2VpZ2h0ICsgZWRnZS53ZWlnaHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgeyBzdW06IDAsIHdlaWdodDogMCB9XG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2OiB2LFxuICAgICAgICBiYXJ5Y2VudGVyOiByZXN1bHQuc3VtIC8gcmVzdWx0LndlaWdodCxcbiAgICAgICAgd2VpZ2h0OiByZXN1bHQud2VpZ2h0LFxuICAgICAgfTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"buildLayerGraph\": () => (/* binding */ buildLayerGraph)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/uniqueId.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n\n\n\n\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({ compound: true })\n .setGraph({ root: root })\n .setDefaultNodeLabel(function (v) {\n return g.node(v);\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g[relationship](v), function (e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](node, 'minRank')) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank],\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"]('_root'))));\n return v;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9idWlsZC1sYXllci1ncmFwaC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0I7QUFDaUI7O0FBRXJCOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFEQUFLLEdBQUcsZ0JBQWdCO0FBQ3pDLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQSxPQUFPOztBQUVQLEVBQUUsaURBQVM7QUFDWDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0saURBQVM7QUFDZjtBQUNBO0FBQ0Esb0JBQW9CLGlEQUFhO0FBQ2pDLCtCQUErQixtQ0FBbUM7QUFDbEUsT0FBTzs7QUFFUCxVQUFVLGlEQUFLO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixpREFBVTtBQUNsQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvb3JkZXIvYnVpbGQtbGF5ZXItZ3JhcGguanM/MjBhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gJy4uLy4uL2dyYXBobGliL2luZGV4LmpzJztcblxuZXhwb3J0IHsgYnVpbGRMYXllckdyYXBoIH07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgZ3JhcGggdGhhdCBjYW4gYmUgdXNlZCB0byBzb3J0IGEgbGF5ZXIgb2Ygbm9kZXMuIFRoZSBncmFwaCB3aWxsXG4gKiBjb250YWluIGFsbCBiYXNlIGFuZCBzdWJncmFwaCBub2RlcyBmcm9tIHRoZSByZXF1ZXN0IGxheWVyIGluIHRoZWlyIG9yaWdpbmFsXG4gKiBoaWVyYXJjaHkgYW5kIGFueSBlZGdlcyB0aGF0IGFyZSBpbmNpZGVudCBvbiB0aGVzZSBub2RlcyBhbmQgYXJlIG9mIHRoZSB0eXBlXG4gKiByZXF1ZXN0ZWQgYnkgdGhlIFwicmVsYXRpb25zaGlwXCIgcGFyYW1ldGVyLlxuICpcbiAqIE5vZGVzIGZyb20gdGhlIHJlcXVlc3RlZCByYW5rIHRoYXQgZG8gbm90IGhhdmUgcGFyZW50cyBhcmUgYXNzaWduZWQgYSByb290XG4gKiBub2RlIGluIHRoZSBvdXRwdXQgZ3JhcGgsIHdoaWNoIGlzIHNldCBpbiB0aGUgcm9vdCBncmFwaCBhdHRyaWJ1dGUuIFRoaXNcbiAqIG1ha2VzIGl0IGVhc3kgdG8gd2FsayB0aGUgaGllcmFyY2h5IG9mIG1vdmFibGUgbm9kZXMgZHVyaW5nIG9yZGVyaW5nLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGEgREFHXG4gKiAgICAyLiBCYXNlIG5vZGVzIGluIHRoZSBpbnB1dCBncmFwaCBoYXZlIGEgcmFuayBhdHRyaWJ1dGVcbiAqICAgIDMuIFN1YmdyYXBoIG5vZGVzIGluIHRoZSBpbnB1dCBncmFwaCBoYXMgbWluUmFuayBhbmQgbWF4UmFuayBhdHRyaWJ1dGVzXG4gKiAgICA0LiBFZGdlcyBoYXZlIGFuIGFzc2lnbmVkIHdlaWdodFxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBPdXRwdXQgZ3JhcGggaGFzIGFsbCBub2RlcyBpbiB0aGUgbW92YWJsZSByYW5rIHdpdGggcHJlc2VydmVkXG4gKiAgICAgICBoaWVyYXJjaHkuXG4gKiAgICAyLiBSb290IG5vZGVzIGluIHRoZSBtb3ZhYmxlIGxheWVyIGFyZSBtYWRlIGNoaWxkcmVuIG9mIHRoZSBub2RlXG4gKiAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJvb3QgYXR0cmlidXRlIG9mIHRoZSBncmFwaC5cbiAqICAgIDMuIE5vbi1tb3ZhYmxlIG5vZGVzIGluY2lkZW50IG9uIG1vdmFibGUgbm9kZXMsIHNlbGVjdGVkIGJ5IHRoZVxuICogICAgICAgcmVsYXRpb25zaGlwIHBhcmFtZXRlciwgYXJlIGluY2x1ZGVkIGluIHRoZSBncmFwaCAod2l0aG91dCBoaWVyYXJjaHkpLlxuICogICAgNC4gRWRnZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlIHJlbGF0aW9uc2hpcFxuICogICAgICAgcGFyYW1ldGVyLCBhcmUgYWRkZWQgdG8gdGhlIG91dHB1dCBncmFwaC5cbiAqICAgIDUuIFRoZSB3ZWlnaHRzIGZvciBjb3BpZWQgZWRnZXMgYXJlIGFnZ3JlZ2F0ZWQgYXMgbmVlZCwgc2luY2UgdGhlIG91dHB1dFxuICogICAgICAgZ3JhcGggaXMgbm90IGEgbXVsdGktZ3JhcGguXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJHcmFwaChnLCByYW5rLCByZWxhdGlvbnNoaXApIHtcbiAgdmFyIHJvb3QgPSBjcmVhdGVSb290Tm9kZShnKSxcbiAgICByZXN1bHQgPSBuZXcgR3JhcGgoeyBjb21wb3VuZDogdHJ1ZSB9KVxuICAgICAgLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGcubm9kZSh2KTtcbiAgICAgIH0pO1xuXG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgKG5vZGUubWluUmFuayA8PSByYW5rICYmIHJhbmsgPD0gbm9kZS5tYXhSYW5rKSkge1xuICAgICAgcmVzdWx0LnNldE5vZGUodik7XG4gICAgICByZXN1bHQuc2V0UGFyZW50KHYsIHBhcmVudCB8fCByb290KTtcblxuICAgICAgLy8gVGhpcyBhc3N1bWVzIHdlIGhhdmUgb25seSBzaG9ydCBlZGdlcyFcbiAgICAgIF8uZm9yRWFjaChnW3JlbGF0aW9uc2hpcF0odiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsICdtaW5SYW5rJykpIHtcbiAgICAgICAgcmVzdWx0LnNldE5vZGUodiwge1xuICAgICAgICAgIGJvcmRlckxlZnQ6IG5vZGUuYm9yZGVyTGVmdFtyYW5rXSxcbiAgICAgICAgICBib3JkZXJSaWdodDogbm9kZS5ib3JkZXJSaWdodFtyYW5rXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb290Tm9kZShnKSB7XG4gIHZhciB2O1xuICB3aGlsZSAoZy5oYXNOb2RlKCh2ID0gXy51bmlxdWVJZCgnX3Jvb3QnKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"crossCount\": () => (/* binding */ crossCount)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/zipObject.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/flatten.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/sortBy.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n\n\n\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i - 1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](\n southLayer,\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](southLayer, function (v, i) {\n return i;\n })\n );\n var southEntries = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](northLayer, function (v) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.outEdges(v), function (e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }),\n 'pos'\n );\n })\n );\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](new Array(treeSize), function () {\n return 0;\n });\n\n // Calculate the weighted crossings\n var cc = 0;\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n // @ts-expect-error\n southEntries.forEach(function (entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n // @ts-expect-error\n while (index > 0) {\n // @ts-expect-error\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n // @ts-expect-error\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n })\n );\n\n return cc;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9jcm9zcy1jb3VudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0I7O0FBRVQ7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixxQkFBcUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaURBQVc7QUFDNUI7QUFDQSxJQUFJLGlEQUFLO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQkFBcUIsaURBQVM7QUFDOUIsSUFBSSxpREFBSztBQUNULGFBQWEsaURBQVE7QUFDckIsUUFBUSxpREFBSztBQUNiLG1CQUFtQjtBQUNuQixTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxpREFBSztBQUNsQjtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEVBQUUsaURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvb3JkZXIvY3Jvc3MtY291bnQuanM/ZjBiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IGNyb3NzQ291bnQgfTtcblxuLypcbiAqIEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGxheWVyaW5nIChhbiBhcnJheSBvZiBsYXllcnMsIGVhY2ggd2l0aCBhbiBhcnJheSBvZlxuICogb3JkZXJlcmQgbm9kZXMpIGFuZCBhIGdyYXBoIGFuZCByZXR1cm5zIGEgd2VpZ2h0ZWQgY3Jvc3NpbmcgY291bnQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggbXVzdCBiZSBzaW1wbGUgKG5vdCBhIG11bHRpZ3JhcGgpLCBkaXJlY3RlZCwgYW5kIGluY2x1ZGVcbiAqICAgICAgIG9ubHkgc2ltcGxlIGVkZ2VzLlxuICogICAgMi4gRWRnZXMgaW4gdGhlIGlucHV0IGdyYXBoIG11c3QgaGF2ZSBhc3NpZ25lZCB3ZWlnaHRzLlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgZ3JhcGggYW5kIGxheWVyaW5nIG1hdHJpeCBhcmUgbGVmdCB1bmNoYW5nZWQuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gaXMgZGVyaXZlZCBmcm9tIEJhcnRoLCBldCBhbC4sIFwiQmlsYXllciBDcm9zcyBDb3VudGluZy5cIlxuICovXG5mdW5jdGlvbiBjcm9zc0NvdW50KGcsIGxheWVyaW5nKSB7XG4gIHZhciBjYyA9IDA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGF5ZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICBjYyArPSB0d29MYXllckNyb3NzQ291bnQoZywgbGF5ZXJpbmdbaSAtIDFdLCBsYXllcmluZ1tpXSk7XG4gIH1cbiAgcmV0dXJuIGNjO1xufVxuXG5mdW5jdGlvbiB0d29MYXllckNyb3NzQ291bnQoZywgbm9ydGhMYXllciwgc291dGhMYXllcikge1xuICAvLyBTb3J0IGFsbCBvZiB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgbm9ydGggYW5kIHNvdXRoIGxheWVycyBieSB0aGVpciBwb3NpdGlvblxuICAvLyBpbiB0aGUgbm9ydGggbGF5ZXIgYW5kIHRoZW4gdGhlIHNvdXRoLiBNYXAgdGhlc2UgZWRnZXMgdG8gdGhlIHBvc2l0aW9uIG9mXG4gIC8vIHRoZWlyIGhlYWQgaW4gdGhlIHNvdXRoIGxheWVyLlxuICB2YXIgc291dGhQb3MgPSBfLnppcE9iamVjdChcbiAgICBzb3V0aExheWVyLFxuICAgIF8ubWFwKHNvdXRoTGF5ZXIsIGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9KVxuICApO1xuICB2YXIgc291dGhFbnRyaWVzID0gXy5mbGF0dGVuKFxuICAgIF8ubWFwKG5vcnRoTGF5ZXIsIGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gXy5zb3J0QnkoXG4gICAgICAgIF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIHsgcG9zOiBzb3V0aFBvc1tlLnddLCB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgfTtcbiAgICAgICAgfSksXG4gICAgICAgICdwb3MnXG4gICAgICApO1xuICAgIH0pXG4gICk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc291dGhFbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgaW5kZXggPSBlbnRyeS5wb3MgKyBmaXJzdEluZGV4O1xuICAgICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgICAgdmFyIHdlaWdodFN1bSA9IDA7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB3aGlsZSAoaW5kZXggPiAwKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgaWYgKGluZGV4ICUgMikge1xuICAgICAgICAgIHdlaWdodFN1bSArPSB0cmVlW2luZGV4ICsgMV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBpbmRleCA9IChpbmRleCAtIDEpID4+IDE7XG4gICAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICAgIH1cbiAgICAgIGNjICs9IGVudHJ5LndlaWdodCAqIHdlaWdodFN1bTtcbiAgICB9KVxuICApO1xuXG4gIHJldHVybiBjYztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"order\": () => (/* binding */ order)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/cloneDeep.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n/* harmony import */ var _add_subgraph_constraints_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./add-subgraph-constraints.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js\");\n/* harmony import */ var _build_layer_graph_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./build-layer-graph.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js\");\n/* harmony import */ var _cross_count_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./cross-count.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/cross-count.js\");\n/* harmony import */ var _init_order_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./init-order.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/init-order.js\");\n/* harmony import */ var _sort_subgraph_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sort-subgraph.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js\");\n\n\n\n\n\n\n\n\n\n\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = _util_js__WEBPACK_IMPORTED_MODULE_1__.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](1, maxRank + 1), 'inEdges'),\n upLayerGraphs = buildLayerGraphs(g, lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](maxRank - 1, -1, -1), 'outEdges');\n\n var layering = (0,_init_order_js__WEBPACK_IMPORTED_MODULE_5__.initOrder)(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = _util_js__WEBPACK_IMPORTED_MODULE_1__.buildLayerMatrix(g);\n var cc = (0,_cross_count_js__WEBPACK_IMPORTED_MODULE_4__.crossCount)(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](ranks, function (rank) {\n return (0,_build_layer_graph_js__WEBPACK_IMPORTED_MODULE_3__.buildLayerGraph)(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph();\n lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](layerGraphs, function (lg) {\n var root = lg.graph().root;\n var sorted = (0,_sort_subgraph_js__WEBPACK_IMPORTED_MODULE_6__.sortSubgraph)(lg, root, cg, biasRight);\n lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](sorted.vs, function (v, i) {\n lg.node(v).order = i;\n });\n (0,_add_subgraph_constraints_js__WEBPACK_IMPORTED_MODULE_2__.addSubgraphConstraints)(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](layering, function (layer) {\n lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](layer, function (v, i) {\n g.node(v).order = i;\n });\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBK0I7QUFDaUI7QUFDYjtBQUNvQztBQUNkO0FBQ1g7QUFDRjtBQUNNOztBQUVqQzs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNkNBQVk7QUFDNUIsMENBQTBDLGlEQUFPO0FBQ2pELHdDQUF3QyxpREFBTzs7QUFFL0MsaUJBQWlCLHlEQUFTO0FBQzFCOztBQUVBO0FBQ0E7O0FBRUEsZ0NBQWdDLGNBQWM7QUFDOUM7O0FBRUEsZUFBZSxzREFBcUI7QUFDcEMsYUFBYSwyREFBVTtBQUN2QjtBQUNBO0FBQ0EsYUFBYSxpREFBVztBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFNBQVMsaURBQUs7QUFDZCxXQUFXLHNFQUFlO0FBQzFCLEdBQUc7QUFDSDs7QUFFQTtBQUNBLGVBQWUscURBQUs7QUFDcEIsRUFBRSxrREFBUztBQUNYO0FBQ0EsaUJBQWlCLCtEQUFZO0FBQzdCLElBQUksa0RBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTCxJQUFJLG9GQUFzQjtBQUMxQixHQUFHO0FBQ0g7O0FBRUE7QUFDQSxFQUFFLGtEQUFTO0FBQ1gsSUFBSSxrREFBUztBQUNiO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL29yZGVyL2luZGV4LmpzP2QxZWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuLi8uLi9ncmFwaGxpYi9pbmRleC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwuanMnO1xuaW1wb3J0IHsgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyB9IGZyb20gJy4vYWRkLXN1YmdyYXBoLWNvbnN0cmFpbnRzLmpzJztcbmltcG9ydCB7IGJ1aWxkTGF5ZXJHcmFwaCB9IGZyb20gJy4vYnVpbGQtbGF5ZXItZ3JhcGguanMnO1xuaW1wb3J0IHsgY3Jvc3NDb3VudCB9IGZyb20gJy4vY3Jvc3MtY291bnQuanMnO1xuaW1wb3J0IHsgaW5pdE9yZGVyIH0gZnJvbSAnLi9pbml0LW9yZGVyLmpzJztcbmltcG9ydCB7IHNvcnRTdWJncmFwaCB9IGZyb20gJy4vc29ydC1zdWJncmFwaC5qcyc7XG5cbmV4cG9ydCB7IG9yZGVyIH07XG5cbi8qXG4gKiBBcHBsaWVzIGhldXJpc3RpY3MgdG8gbWluaW1pemUgZWRnZSBjcm9zc2luZ3MgaW4gdGhlIGdyYXBoIGFuZCBzZXRzIHRoZSBiZXN0XG4gKiBvcmRlciBzb2x1dGlvbiBhcyBhbiBvcmRlciBhdHRyaWJ1dGUgb24gZWFjaCBub2RlLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHMgd2l0aCBhIFwicmFua1wiIGF0dHJpYnV0ZVxuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIHRoZSBcIndlaWdodFwiIGF0dHJpYnV0ZVxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYW4gXCJvcmRlclwiIGF0dHJpYnV0ZSBiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGVcbiAqICAgICAgIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gb3JkZXIoZykge1xuICB2YXIgbWF4UmFuayA9IHV0aWwubWF4UmFuayhnKSxcbiAgICBkb3duTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UoMSwgbWF4UmFuayArIDEpLCAnaW5FZGdlcycpLFxuICAgIHVwTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UobWF4UmFuayAtIDEsIC0xLCAtMSksICdvdXRFZGdlcycpO1xuXG4gIHZhciBsYXllcmluZyA9IGluaXRPcmRlcihnKTtcbiAgYXNzaWduT3JkZXIoZywgbGF5ZXJpbmcpO1xuXG4gIHZhciBiZXN0Q0MgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksXG4gICAgYmVzdDtcblxuICBmb3IgKHZhciBpID0gMCwgbGFzdEJlc3QgPSAwOyBsYXN0QmVzdCA8IDQ7ICsraSwgKytsYXN0QmVzdCkge1xuICAgIHN3ZWVwTGF5ZXJHcmFwaHMoaSAlIDIgPyBkb3duTGF5ZXJHcmFwaHMgOiB1cExheWVyR3JhcGhzLCBpICUgNCA+PSAyKTtcblxuICAgIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICAgIHZhciBjYyA9IGNyb3NzQ291bnQoZywgbGF5ZXJpbmcpO1xuICAgIGlmIChjYyA8IGJlc3RDQykge1xuICAgICAgbGFzdEJlc3QgPSAwO1xuICAgICAgYmVzdCA9IF8uY2xvbmVEZWVwKGxheWVyaW5nKTtcbiAgICAgIGJlc3RDQyA9IGNjO1xuICAgIH1cbiAgfVxuXG4gIGFzc2lnbk9yZGVyKGcsIGJlc3QpO1xufVxuXG5mdW5jdGlvbiBidWlsZExheWVyR3JhcGhzKGcsIHJhbmtzLCByZWxhdGlvbnNoaXApIHtcbiAgcmV0dXJuIF8ubWFwKHJhbmtzLCBmdW5jdGlvbiAocmFuaykge1xuICAgIHJldHVybiBidWlsZExheWVyR3JhcGgoZywgcmFuaywgcmVsYXRpb25zaGlwKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3ZWVwTGF5ZXJHcmFwaHMobGF5ZXJHcmFwaHMsIGJpYXNSaWdodCkge1xuICB2YXIgY2cgPSBuZXcgR3JhcGgoKTtcbiAgXy5mb3JFYWNoKGxheWVyR3JhcGhzLCBmdW5jdGlvbiAobGcpIHtcbiAgICB2YXIgcm9vdCA9IGxnLmdyYXBoKCkucm9vdDtcbiAgICB2YXIgc29ydGVkID0gc29ydFN1YmdyYXBoKGxnLCByb290LCBjZywgYmlhc1JpZ2h0KTtcbiAgICBfLmZvckVhY2goc29ydGVkLnZzLCBmdW5jdGlvbiAodiwgaSkge1xuICAgICAgbGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gICAgYWRkU3ViZ3JhcGhDb25zdHJhaW50cyhsZywgY2csIHNvcnRlZC52cyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25PcmRlcihnLCBsYXllcmluZykge1xuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uIChsYXllcikge1xuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgIGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/init-order.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/init-order.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"initOrder\": () => (/* binding */ initOrder)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/sortBy.js\");\n\n\n\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.nodes(), function (v) {\n return !g.children(v).length;\n });\n var maxRank = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](simpleNodes, function (v) {\n return g.node(v).rank;\n })\n );\n var layers = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](maxRank + 1), function () {\n return [];\n });\n\n function dfs(v) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](g.successors(v), dfs);\n }\n\n var orderedVs = lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](simpleNodes, function (v) {\n return g.node(v).rank;\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](orderedVs, dfs);\n\n return layers;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9pbml0LW9yZGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQStCOztBQUVWOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpREFBUTtBQUM1QjtBQUNBLEdBQUc7QUFDSCxnQkFBZ0IsaURBQUs7QUFDckIsSUFBSSxpREFBSztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxpREFBSyxDQUFDLGlEQUFPO0FBQzVCO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLFFBQVEsaURBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlEQUFTO0FBQ2I7O0FBRUEsa0JBQWtCLGlEQUFRO0FBQzFCO0FBQ0EsR0FBRztBQUNILEVBQUUsaURBQVM7O0FBRVg7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2RhZ3JlL29yZGVyL2luaXQtb3JkZXIuanM/ZDNiYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IGluaXRPcmRlciB9O1xuXG4vKlxuICogQXNzaWducyBhbiBpbml0aWFsIG9yZGVyIHZhbHVlIGZvciBlYWNoIG5vZGUgYnkgcGVyZm9ybWluZyBhIERGUyBzZWFyY2hcbiAqIHN0YXJ0aW5nIGZyb20gbm9kZXMgaW4gdGhlIGZpcnN0IHJhbmsuIE5vZGVzIGFyZSBhc3NpZ25lZCBhbiBvcmRlciBpbiB0aGVpclxuICogcmFuayBhcyB0aGV5IGFyZSBmaXJzdCB2aXNpdGVkLlxuICpcbiAqIFRoaXMgYXBwcm9hY2ggY29tZXMgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yIERyYXdpbmcgRGlyZWN0ZWRcbiAqIEdyYXBocy5cIlxuICpcbiAqIFJldHVybnMgYSBsYXllcmluZyBtYXRyaXggd2l0aCBhbiBhcnJheSBwZXIgbGF5ZXIgYW5kIGVhY2ggbGF5ZXIgc29ydGVkIGJ5XG4gKiB0aGUgb3JkZXIgb2YgaXRzIG5vZGVzLlxuICovXG5mdW5jdGlvbiBpbml0T3JkZXIoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc2ltcGxlTm9kZXMgPSBfLmZpbHRlcihnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuICFnLmNoaWxkcmVuKHYpLmxlbmd0aDtcbiAgfSk7XG4gIHZhciBtYXhSYW5rID0gXy5tYXgoXG4gICAgXy5tYXAoc2ltcGxlTm9kZXMsIGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gZy5ub2RlKHYpLnJhbms7XG4gICAgfSlcbiAgKTtcbiAgdmFyIGxheWVycyA9IF8ubWFwKF8ucmFuZ2UobWF4UmFuayArIDEpLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9KTtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGxheWVyc1tub2RlLnJhbmtdLnB1c2godik7XG4gICAgXy5mb3JFYWNoKGcuc3VjY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIHZhciBvcmRlcmVkVnMgPSBfLnNvcnRCeShzaW1wbGVOb2RlcywgZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4gZy5ub2RlKHYpLnJhbms7XG4gIH0pO1xuICBfLmZvckVhY2gob3JkZXJlZFZzLCBkZnMpO1xuXG4gIHJldHVybiBsYXllcnM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/init-order.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resolveConflicts\": () => (/* binding */ resolveConflicts)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/pick.js\");\n\n\n\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](entries, function (entry, i) {\n var tmp = (mappedEntries[entry.v] = {\n indegree: 0,\n in: [],\n out: [],\n vs: [entry.v],\n i: i,\n });\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](entry.barycenter)) {\n // @ts-expect-error\n tmp.barycenter = entry.barycenter;\n // @ts-expect-error\n tmp.weight = entry.weight;\n }\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](cg.edges(), function (e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](entryV) && !lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](mappedEntries, function (entry) {\n // @ts-expect-error\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function (uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](uEntry.barycenter) ||\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter\n ) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function (wEntry) {\n wEntry['in'].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](entry['in'].reverse(), handleIn(entry));\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](entry.out, handleOut(entry));\n }\n\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](entries, function (entry) {\n return !entry.merged;\n }),\n function (entry) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](entry, ['vs', 'i', 'barycenter', 'weight']);\n }\n );\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9yZXNvbHZlLWNvbmZsaWN0cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0I7O0FBRUg7O0FBRTVCO0FBQ0Esd0NBQXdDLHVCQUF1QjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFNBQVMsaURBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsRUFBRSxpREFBUztBQUNYO0FBQ0E7QUFDQSxTQUFTLGlEQUFhLGFBQWEsaURBQWE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxrQkFBa0IsaURBQVE7QUFDMUI7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsaURBQWE7QUFDckIsUUFBUSxpREFBYTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlEQUFTO0FBQ2IsSUFBSSxpREFBUztBQUNiOztBQUVBLFNBQVMsaURBQUs7QUFDZCxJQUFJLGlEQUFRO0FBQ1o7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLGlEQUFNO0FBQ25CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvb3JkZXIvcmVzb2x2ZS1jb25mbGljdHMuanM/OTY5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IHJlc29sdmVDb25mbGljdHMgfTtcblxuLypcbiAqIEdpdmVuIGEgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9IGFuZCBhXG4gKiBjb25zdHJhaW50IGdyYXBoIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGVcbiAqIGNvbnN0cmFpbnQgZ3JhcGggYW5kIHRoZSBiYXJ5Y2VudGVycyBmb3IgdGhlIGVudHJpZXMuIElmIHRoZSBiYXJ5Y2VudGVycyBmb3JcbiAqIGFuIGVudHJ5IHdvdWxkIHZpb2xhdGUgYSBjb25zdHJhaW50IGluIHRoZSBjb25zdHJhaW50IGdyYXBoIHRoZW4gd2UgY29hbGVzY2VcbiAqIHRoZSBub2RlcyBpbiB0aGUgY29uZmxpY3QgaW50byBhIG5ldyBub2RlIHRoYXQgcmVzcGVjdHMgdGhlIGNvbnRyYWludCBhbmRcbiAqIGFnZ3JlZ2F0ZXMgYmFyeWNlbnRlciBhbmQgd2VpZ2h0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGluIEZvcnN0ZXIsIFwiQSBGYXN0IGFuZFxuICogU2ltcGxlIEh1ZXJpc3RpYyBmb3IgQ29uc3RyYWluZWQgVHdvLUxldmVsIENyb3NzaW5nIFJlZHVjdGlvbixcIiB0aG91Z2h0IGl0XG4gKiBkaWZmZXJzIGluIHNvbWUgc3BlY2lmaWMgZGV0YWlscy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIGVudHJ5IGhhcyB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSwgb3IgaWYgdGhlIG5vZGUgaGFzXG4gKiAgICAgICBubyBiYXJ5Y2VudGVyLCB0aGVuIHt2fS5cbiAqXG4gKiBSZXR1cm5zOlxuICpcbiAqICAgIEEgbmV3IGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7dnMsIGksIGJhcnljZW50ZXIsIHdlaWdodH0uIFRoZSBsaXN0XG4gKiAgICBgdnNgIG1heSBlaXRoZXIgYmUgYSBzaW5nbGV0b24gb3IgaXQgbWF5IGJlIGFuIGFnZ3JlZ2F0aW9uIG9mIG5vZGVzXG4gKiAgICBvcmRlcmVkIHN1Y2ggdGhhdCB0aGV5IGRvIG5vdCB2aW9sYXRlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGNvbnN0cmFpbnRcbiAqICAgIGdyYXBoLiBUaGUgcHJvcGVydHkgYGlgIGlzIHRoZSBsb3dlc3Qgb3JpZ2luYWwgaW5kZXggb2YgYW55IG9mIHRoZVxuICogICAgZWxlbWVudHMgaW4gYHZzYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbmZsaWN0cyhlbnRyaWVzLCBjZykge1xuICB2YXIgbWFwcGVkRW50cmllcyA9IHt9O1xuICBfLmZvckVhY2goZW50cmllcywgZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgdmFyIHRtcCA9IChtYXBwZWRFbnRyaWVzW2VudHJ5LnZdID0ge1xuICAgICAgaW5kZWdyZWU6IDAsXG4gICAgICBpbjogW10sXG4gICAgICBvdXQ6IFtdLFxuICAgICAgdnM6IFtlbnRyeS52XSxcbiAgICAgIGk6IGksXG4gICAgfSk7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5LmJhcnljZW50ZXIpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0bXAuYmFyeWNlbnRlciA9IGVudHJ5LmJhcnljZW50ZXI7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0bXAud2VpZ2h0ID0gZW50cnkud2VpZ2h0O1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGNnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGVudHJ5ViA9IG1hcHBlZEVudHJpZXNbZS52XTtcbiAgICB2YXIgZW50cnlXID0gbWFwcGVkRW50cmllc1tlLnddO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChlbnRyeVYpICYmICFfLmlzVW5kZWZpbmVkKGVudHJ5VykpIHtcbiAgICAgIGVudHJ5Vy5pbmRlZ3JlZSsrO1xuICAgICAgZW50cnlWLm91dC5wdXNoKG1hcHBlZEVudHJpZXNbZS53XSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgc291cmNlU2V0ID0gXy5maWx0ZXIobWFwcGVkRW50cmllcywgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiAhZW50cnkuaW5kZWdyZWU7XG4gIH0pO1xuXG4gIHJldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KTtcbn1cblxuZnVuY3Rpb24gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCkge1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUluKHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodUVudHJ5KSB7XG4gICAgICBpZiAodUVudHJ5Lm1lcmdlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIF8uaXNVbmRlZmluZWQodUVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgIF8uaXNVbmRlZmluZWQodkVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgIHVFbnRyeS5iYXJ5Y2VudGVyID49IHZFbnRyeS5iYXJ5Y2VudGVyXG4gICAgICApIHtcbiAgICAgICAgbWVyZ2VFbnRyaWVzKHZFbnRyeSwgdUVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlT3V0KHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAod0VudHJ5KSB7XG4gICAgICB3RW50cnlbJ2luJ10ucHVzaCh2RW50cnkpO1xuICAgICAgaWYgKC0td0VudHJ5LmluZGVncmVlID09PSAwKSB7XG4gICAgICAgIHNvdXJjZVNldC5wdXNoKHdFbnRyeSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHdoaWxlIChzb3VyY2VTZXQubGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gc291cmNlU2V0LnBvcCgpO1xuICAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgXy5mb3JFYWNoKGVudHJ5WydpbiddLnJldmVyc2UoKSwgaGFuZGxlSW4oZW50cnkpKTtcbiAgICBfLmZvckVhY2goZW50cnkub3V0LCBoYW5kbGVPdXQoZW50cnkpKTtcbiAgfVxuXG4gIHJldHVybiBfLm1hcChcbiAgICBfLmZpbHRlcihlbnRyaWVzLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiAhZW50cnkubWVyZ2VkO1xuICAgIH0pLFxuICAgIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgcmV0dXJuIF8ucGljayhlbnRyeSwgWyd2cycsICdpJywgJ2JhcnljZW50ZXInLCAnd2VpZ2h0J10pO1xuICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VFbnRyaWVzKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBzdW0gPSAwO1xuICB2YXIgd2VpZ2h0ID0gMDtcblxuICBpZiAodGFyZ2V0LndlaWdodCkge1xuICAgIHN1bSArPSB0YXJnZXQuYmFyeWNlbnRlciAqIHRhcmdldC53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHRhcmdldC53ZWlnaHQ7XG4gIH1cblxuICBpZiAoc291cmNlLndlaWdodCkge1xuICAgIHN1bSArPSBzb3VyY2UuYmFyeWNlbnRlciAqIHNvdXJjZS53ZWlnaHQ7XG4gICAgd2VpZ2h0ICs9IHNvdXJjZS53ZWlnaHQ7XG4gIH1cblxuICB0YXJnZXQudnMgPSBzb3VyY2UudnMuY29uY2F0KHRhcmdldC52cyk7XG4gIHRhcmdldC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICB0YXJnZXQud2VpZ2h0ID0gd2VpZ2h0O1xuICB0YXJnZXQuaSA9IE1hdGgubWluKHNvdXJjZS5pLCB0YXJnZXQuaSk7XG4gIHNvdXJjZS5tZXJnZWQgPSB0cnVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"sortSubgraph\": () => (/* binding */ sortSubgraph)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/flatten.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var _barycenter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./barycenter.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/barycenter.js\");\n/* harmony import */ var _resolve_conflicts_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resolve-conflicts.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js\");\n/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sort.js */ \"../../../node_modules/dagre-d3-es/src/dagre/order/sort.js\");\n\n\n\n\n\n\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight : undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](movable, function (w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = (0,_barycenter_js__WEBPACK_IMPORTED_MODULE_0__.barycenter)(g, movable);\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](barycenters, function (entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](subgraphResult, 'barycenter')) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = (0,_resolve_conflicts_js__WEBPACK_IMPORTED_MODULE_1__.resolveConflicts)(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = (0,_sort_js__WEBPACK_IMPORTED_MODULE_2__.sort)(entries, biasRight);\n\n if (bl) {\n result.vs = lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"]([bl, result.vs, br]);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](result, 'barycenter')) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter =\n (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](entries, function (entry) {\n entry.vs = lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](\n entry.vs.map(function (v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n })\n );\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](target.barycenter)) {\n target.barycenter =\n (target.barycenter * target.weight + other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9zb3J0LXN1YmdyYXBoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUErQjtBQUNjO0FBQ2E7QUFDekI7O0FBRVQ7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsaURBQVE7QUFDdEI7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsb0JBQW9CLDBEQUFVO0FBQzlCLEVBQUUsaURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxVQUFVLGlEQUFLO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxnQkFBZ0IsdUVBQWdCO0FBQ2hDOztBQUVBLGVBQWUsOENBQUk7O0FBRW5CO0FBQ0EsZ0JBQWdCLGlEQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaURBQUs7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsRUFBRSxpREFBUztBQUNYLGVBQWUsaURBQVM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBLE9BQU8saURBQWE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9zb3J0LXN1YmdyYXBoLmpzP2MzOGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgYmFyeWNlbnRlciB9IGZyb20gJy4vYmFyeWNlbnRlci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlQ29uZmxpY3RzIH0gZnJvbSAnLi9yZXNvbHZlLWNvbmZsaWN0cy5qcyc7XG5pbXBvcnQgeyBzb3J0IH0gZnJvbSAnLi9zb3J0LmpzJztcblxuZXhwb3J0IHsgc29ydFN1YmdyYXBoIH07XG5cbmZ1bmN0aW9uIHNvcnRTdWJncmFwaChnLCB2LCBjZywgYmlhc1JpZ2h0KSB7XG4gIHZhciBtb3ZhYmxlID0gZy5jaGlsZHJlbih2KTtcbiAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gIHZhciBibCA9IG5vZGUgPyBub2RlLmJvcmRlckxlZnQgOiB1bmRlZmluZWQ7XG4gIHZhciBiciA9IG5vZGUgPyBub2RlLmJvcmRlclJpZ2h0IDogdW5kZWZpbmVkO1xuICB2YXIgc3ViZ3JhcGhzID0ge307XG5cbiAgaWYgKGJsKSB7XG4gICAgbW92YWJsZSA9IF8uZmlsdGVyKG1vdmFibGUsIGZ1bmN0aW9uICh3KSB7XG4gICAgICByZXR1cm4gdyAhPT0gYmwgJiYgdyAhPT0gYnI7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgYmFyeWNlbnRlcnMgPSBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpO1xuICBfLmZvckVhY2goYmFyeWNlbnRlcnMsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChnLmNoaWxkcmVuKGVudHJ5LnYpLmxlbmd0aCkge1xuICAgICAgdmFyIHN1YmdyYXBoUmVzdWx0ID0gc29ydFN1YmdyYXBoKGcsIGVudHJ5LnYsIGNnLCBiaWFzUmlnaHQpO1xuICAgICAgc3ViZ3JhcGhzW2VudHJ5LnZdID0gc3ViZ3JhcGhSZXN1bHQ7XG4gICAgICBpZiAoXy5oYXMoc3ViZ3JhcGhSZXN1bHQsICdiYXJ5Y2VudGVyJykpIHtcbiAgICAgICAgbWVyZ2VCYXJ5Y2VudGVycyhlbnRyeSwgc3ViZ3JhcGhSZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGVudHJpZXMgPSByZXNvbHZlQ29uZmxpY3RzKGJhcnljZW50ZXJzLCBjZyk7XG4gIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpO1xuXG4gIHZhciByZXN1bHQgPSBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCk7XG5cbiAgaWYgKGJsKSB7XG4gICAgcmVzdWx0LnZzID0gXy5mbGF0dGVuKFtibCwgcmVzdWx0LnZzLCBicl0pO1xuICAgIGlmIChnLnByZWRlY2Vzc29ycyhibCkubGVuZ3RoKSB7XG4gICAgICB2YXIgYmxQcmVkID0gZy5ub2RlKGcucHJlZGVjZXNzb3JzKGJsKVswXSksXG4gICAgICAgIGJyUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhicilbMF0pO1xuICAgICAgaWYgKCFfLmhhcyhyZXN1bHQsICdiYXJ5Y2VudGVyJykpIHtcbiAgICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAwO1xuICAgICAgICByZXN1bHQud2VpZ2h0ID0gMDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5iYXJ5Y2VudGVyID1cbiAgICAgICAgKHJlc3VsdC5iYXJ5Y2VudGVyICogcmVzdWx0LndlaWdodCArIGJsUHJlZC5vcmRlciArIGJyUHJlZC5vcmRlcikgLyAocmVzdWx0LndlaWdodCArIDIpO1xuICAgICAgcmVzdWx0LndlaWdodCArPSAyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpIHtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGVudHJ5LnZzID0gXy5mbGF0dGVuKFxuICAgICAgZW50cnkudnMubWFwKGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGlmIChzdWJncmFwaHNbdl0pIHtcbiAgICAgICAgICByZXR1cm4gc3ViZ3JhcGhzW3ZdLnZzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VCYXJ5Y2VudGVycyh0YXJnZXQsIG90aGVyKSB7XG4gIGlmICghXy5pc1VuZGVmaW5lZCh0YXJnZXQuYmFyeWNlbnRlcikpIHtcbiAgICB0YXJnZXQuYmFyeWNlbnRlciA9XG4gICAgICAodGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0ICsgb3RoZXIuYmFyeWNlbnRlciAqIG90aGVyLndlaWdodCkgL1xuICAgICAgKHRhcmdldC53ZWlnaHQgKyBvdGhlci53ZWlnaHQpO1xuICAgIHRhcmdldC53ZWlnaHQgKz0gb3RoZXIud2VpZ2h0O1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC5iYXJ5Y2VudGVyID0gb3RoZXIuYmFyeWNlbnRlcjtcbiAgICB0YXJnZXQud2VpZ2h0ID0gb3RoZXIud2VpZ2h0O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/order/sort.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/order/sort.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"sort\": () => (/* binding */ sort)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/sortBy.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/flatten.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/last.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n\nfunction sort(entries, biasRight) {\n var parts = _util_js__WEBPACK_IMPORTED_MODULE_0__.partition(entries, function (entry) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](entry, 'barycenter');\n });\n var sortable = parts.lhs,\n unsortable = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](parts.rhs, function (entry) {\n return -entry.i;\n }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](vs) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function (entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9vcmRlci9zb3J0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0I7QUFDSTs7QUFFbkI7O0FBRWhCO0FBQ0EsY0FBYywrQ0FBYztBQUM1QixXQUFXLGlEQUFLO0FBQ2hCLEdBQUc7QUFDSDtBQUNBLGlCQUFpQixpREFBUTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsaUJBQWlCLElBQUksaURBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQ0FBc0MsaURBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvb3JkZXIvc29ydC5qcz9lMGY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbC5qcyc7XG5cbmV4cG9ydCB7IHNvcnQgfTtcblxuZnVuY3Rpb24gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIHBhcnRzID0gdXRpbC5wYXJ0aXRpb24oZW50cmllcywgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIF8uaGFzKGVudHJ5LCAnYmFyeWNlbnRlcicpO1xuICB9KTtcbiAgdmFyIHNvcnRhYmxlID0gcGFydHMubGhzLFxuICAgIHVuc29ydGFibGUgPSBfLnNvcnRCeShwYXJ0cy5yaHMsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgcmV0dXJuIC1lbnRyeS5pO1xuICAgIH0pLFxuICAgIHZzID0gW10sXG4gICAgc3VtID0gMCxcbiAgICB3ZWlnaHQgPSAwLFxuICAgIHZzSW5kZXggPSAwO1xuXG4gIHNvcnRhYmxlLnNvcnQoY29tcGFyZVdpdGhCaWFzKCEhYmlhc1JpZ2h0KSk7XG5cbiAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcblxuICBfLmZvckVhY2goc29ydGFibGUsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZzSW5kZXggKz0gZW50cnkudnMubGVuZ3RoO1xuICAgIHZzLnB1c2goZW50cnkudnMpO1xuICAgIHN1bSArPSBlbnRyeS5iYXJ5Y2VudGVyICogZW50cnkud2VpZ2h0O1xuICAgIHdlaWdodCArPSBlbnRyeS53ZWlnaHQ7XG4gICAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcbiAgfSk7XG5cbiAgdmFyIHJlc3VsdCA9IHsgdnM6IF8uZmxhdHRlbih2cykgfTtcbiAgaWYgKHdlaWdodCkge1xuICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICAgIHJlc3VsdC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIGluZGV4KSB7XG4gIHZhciBsYXN0O1xuICB3aGlsZSAodW5zb3J0YWJsZS5sZW5ndGggJiYgKGxhc3QgPSBfLmxhc3QodW5zb3J0YWJsZSkpLmkgPD0gaW5kZXgpIHtcbiAgICB1bnNvcnRhYmxlLnBvcCgpO1xuICAgIHZzLnB1c2gobGFzdC52cyk7XG4gICAgaW5kZXgrKztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVXaXRoQmlhcyhiaWFzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZW50cnlWLCBlbnRyeVcpIHtcbiAgICBpZiAoZW50cnlWLmJhcnljZW50ZXIgPCBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAoZW50cnlWLmJhcnljZW50ZXIgPiBlbnRyeVcuYmFyeWNlbnRlcikge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuICFiaWFzID8gZW50cnlWLmkgLSBlbnRyeVcuaSA6IGVudHJ5Vy5pIC0gZW50cnlWLmk7XG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/order/sort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parentDummyChains\": () => (/* binding */ parentDummyChains)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n\n\n\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.graph().dummyChains, function (v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (\n pathIdx < path.length - 1 &&\n g.node((pathV = path[pathIdx + 1])).minRank <= node.rank\n ) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](g.children(), dfs);\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9wYXJlbnQtZHVtbXktY2hhaW5zLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStCOztBQUVGOztBQUU3QjtBQUNBOztBQUVBLEVBQUUsaURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksaURBQVM7QUFDYixrQkFBa0I7QUFDbEI7QUFDQSxFQUFFLGlEQUFTOztBQUVYO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9wYXJlbnQtZHVtbXktY2hhaW5zLmpzPzI5NGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgeyBwYXJlbnREdW1teUNoYWlucyB9O1xuXG5mdW5jdGlvbiBwYXJlbnREdW1teUNoYWlucyhnKSB7XG4gIHZhciBwb3N0b3JkZXJOdW1zID0gcG9zdG9yZGVyKGcpO1xuXG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIGVkZ2VPYmogPSBub2RlLmVkZ2VPYmo7XG4gICAgdmFyIHBhdGhEYXRhID0gZmluZFBhdGgoZywgcG9zdG9yZGVyTnVtcywgZWRnZU9iai52LCBlZGdlT2JqLncpO1xuICAgIHZhciBwYXRoID0gcGF0aERhdGEucGF0aDtcbiAgICB2YXIgbGNhID0gcGF0aERhdGEubGNhO1xuICAgIHZhciBwYXRoSWR4ID0gMDtcbiAgICB2YXIgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgIHZhciBhc2NlbmRpbmcgPSB0cnVlO1xuXG4gICAgd2hpbGUgKHYgIT09IGVkZ2VPYmoudykge1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcblxuICAgICAgaWYgKGFzY2VuZGluZykge1xuICAgICAgICB3aGlsZSAoKHBhdGhWID0gcGF0aFtwYXRoSWR4XSkgIT09IGxjYSAmJiBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgIGFzY2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgZy5ub2RlKChwYXRoViA9IHBhdGhbcGF0aElkeCArIDFdKSkubWluUmFuayA8PSBub2RlLnJhbmtcbiAgICAgICAgKSB7XG4gICAgICAgICAgcGF0aElkeCsrO1xuICAgICAgICB9XG4gICAgICAgIHBhdGhWID0gcGF0aFtwYXRoSWR4XTtcbiAgICAgIH1cblxuICAgICAgZy5zZXRQYXJlbnQodiwgcGF0aFYpO1xuICAgICAgdiA9IGcuc3VjY2Vzc29ycyh2KVswXTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBGaW5kIGEgcGF0aCBmcm9tIHYgdG8gdyB0aHJvdWdoIHRoZSBsb3dlc3QgY29tbW9uIGFuY2VzdG9yIChMQ0EpLiBSZXR1cm4gdGhlXG4vLyBmdWxsIHBhdGggYW5kIHRoZSBMQ0EuXG5mdW5jdGlvbiBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCB2LCB3KSB7XG4gIHZhciB2UGF0aCA9IFtdO1xuICB2YXIgd1BhdGggPSBbXTtcbiAgdmFyIGxvdyA9IE1hdGgubWluKHBvc3RvcmRlck51bXNbdl0ubG93LCBwb3N0b3JkZXJOdW1zW3ddLmxvdyk7XG4gIHZhciBsaW0gPSBNYXRoLm1heChwb3N0b3JkZXJOdW1zW3ZdLmxpbSwgcG9zdG9yZGVyTnVtc1t3XS5saW0pO1xuICB2YXIgcGFyZW50O1xuICB2YXIgbGNhO1xuXG4gIC8vIFRyYXZlcnNlIHVwIGZyb20gdiB0byBmaW5kIHRoZSBMQ0FcbiAgcGFyZW50ID0gdjtcbiAgZG8ge1xuICAgIHBhcmVudCA9IGcucGFyZW50KHBhcmVudCk7XG4gICAgdlBhdGgucHVzaChwYXJlbnQpO1xuICB9IHdoaWxlIChwYXJlbnQgJiYgKHBvc3RvcmRlck51bXNbcGFyZW50XS5sb3cgPiBsb3cgfHwgbGltID4gcG9zdG9yZGVyTnVtc1twYXJlbnRdLmxpbSkpO1xuICBsY2EgPSBwYXJlbnQ7XG5cbiAgLy8gVHJhdmVyc2UgZnJvbSB3IHRvIExDQVxuICBwYXJlbnQgPSB3O1xuICB3aGlsZSAoKHBhcmVudCA9IGcucGFyZW50KHBhcmVudCkpICE9PSBsY2EpIHtcbiAgICB3UGF0aC5wdXNoKHBhcmVudCk7XG4gIH1cblxuICByZXR1cm4geyBwYXRoOiB2UGF0aC5jb25jYXQod1BhdGgucmV2ZXJzZSgpKSwgbGNhOiBsY2EgfTtcbn1cblxuZnVuY3Rpb24gcG9zdG9yZGVyKGcpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICB2YXIgbGltID0gMDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIHZhciBsb3cgPSBsaW07XG4gICAgXy5mb3JFYWNoKGcuY2hpbGRyZW4odiksIGRmcyk7XG4gICAgcmVzdWx0W3ZdID0geyBsb3c6IGxvdywgbGltOiBsaW0rKyB9O1xuICB9XG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/position/bk.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/position/bk.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addConflict\": () => (/* binding */ addConflict),\n/* harmony export */ \"alignCoordinates\": () => (/* binding */ alignCoordinates),\n/* harmony export */ \"balance\": () => (/* binding */ balance),\n/* harmony export */ \"findSmallestWidthAlignment\": () => (/* binding */ findSmallestWidthAlignment),\n/* harmony export */ \"findType1Conflicts\": () => (/* binding */ findType1Conflicts),\n/* harmony export */ \"findType2Conflicts\": () => (/* binding */ findType2Conflicts),\n/* harmony export */ \"hasConflict\": () => (/* binding */ hasConflict),\n/* harmony export */ \"horizontalCompaction\": () => (/* binding */ horizontalCompaction),\n/* harmony export */ \"positionX\": () => (/* binding */ positionX),\n/* harmony export */ \"verticalAlignment\": () => (/* binding */ verticalAlignment)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/last.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/reduce.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/find.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/sortBy.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/minBy.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/values.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forIn.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/min.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/mapValues.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/merge.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n\n\n\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\n\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](layer);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer, function (v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer.slice(scanPos, i + 1), function (scanNode) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.predecessors(scanNode), function (u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n // @ts-expect-error\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](southPos, southEnd), function (i) {\n v = south[i];\n if (g.node(v).dummy) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.predecessors(v), function (u) {\n var uNode = g.node(u);\n if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](south, function (v, southLookahead) {\n if (g.node(v).dummy === 'border') {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n // @ts-expect-error\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](g.predecessors(v), function (u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layering, function (layer) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer, function (v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layering, function (layer) {\n var prevIdx = -1;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer, function (v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](ws, function (w) {\n return pos[w];\n });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? 'borderLeft' : 'borderRight';\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function (acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](align, function (v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layering, function (layer) {\n var u;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer, function (v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_11__[\"default\"](xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](alignTo),\n alignToMin = lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](alignToVals),\n alignToMax = lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"](alignToVals);\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](['u', 'd'], function (vert) {\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](['l', 'r'], function (horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](xs);\n delta = horiz === 'l' ? alignToMin - lodash_es__WEBPACK_IMPORTED_MODULE_12__[\"default\"](xsVals) : alignToMax - lodash_es__WEBPACK_IMPORTED_MODULE_13__[\"default\"](xsVals);\n\n if (delta) {\n xss[alignment] = lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](xs, function (x) {\n return x + delta;\n });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](xss.ul, function (ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_15__[\"default\"](xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = _util_js__WEBPACK_IMPORTED_MODULE_1__.buildLayerMatrix(g);\n var conflicts = lodash_es__WEBPACK_IMPORTED_MODULE_16__[\"default\"](findType1Conflicts(g, layering), findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](['u', 'd'], function (vert) {\n adjustedLayering = vert === 'u' ? layering : lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](layering).reverse();\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](['l', 'r'], function (horiz) {\n if (horiz === 'r') {\n adjustedLayering = lodash_es__WEBPACK_IMPORTED_MODULE_15__[\"default\"](adjustedLayering, function (inner) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](inner).reverse();\n });\n }\n\n var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r');\n if (horiz === 'r') {\n xs = lodash_es__WEBPACK_IMPORTED_MODULE_14__[\"default\"](xs, function (x) {\n return -x;\n });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function (g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](vLabel, 'labelpos')) {\n switch (vLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = -vLabel.width / 2;\n break;\n case 'r':\n delta = vLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](wLabel, 'labelpos')) {\n switch (wLabel.labelpos.toLowerCase()) {\n case 'l':\n delta = wLabel.width / 2;\n break;\n case 'r':\n delta = -wLabel.width / 2;\n break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9wb3NpdGlvbi9iay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBK0I7QUFDaUI7QUFDYjs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7O0FBYUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpREFBTTs7QUFFdkIsSUFBSSxpREFBUztBQUNiO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLGlEQUFTO0FBQ2pCLFVBQVUsaURBQVM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUEsRUFBRSxpREFBUTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxpREFBUyxDQUFDLGlEQUFPO0FBQ3JCO0FBQ0E7QUFDQSxRQUFRLGlEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksaURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEVBQUUsaURBQVE7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGlEQUFNO0FBQ2pCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNB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RUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZGFncmUvcG9zaXRpb24vYmsuanM/ZDgyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gJy4uLy4uL2dyYXBobGliL2luZGV4LmpzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbC5qcyc7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbmV4cG9ydCB7XG4gIHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzLFxuICBmaW5kVHlwZTJDb25mbGljdHMsXG4gIGFkZENvbmZsaWN0LFxuICBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQsXG4gIGhvcml6b250YWxDb21wYWN0aW9uLFxuICBhbGlnbkNvb3JkaW5hdGVzLFxuICBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZSxcbn07XG5cbi8qXG4gKiBNYXJrcyBhbGwgZWRnZXMgaW4gdGhlIGdyYXBoIHdpdGggYSB0eXBlLTEgY29uZmxpY3Qgd2l0aCB0aGUgXCJ0eXBlMUNvbmZsaWN0XCJcbiAqIHByb3BlcnR5LiBBIHR5cGUtMSBjb25mbGljdCBpcyBvbmUgd2hlcmUgYSBub24taW5uZXIgc2VnbWVudCBjcm9zc2VzIGFuXG4gKiBpbm5lciBzZWdtZW50LiBBbiBpbm5lciBzZWdtZW50IGlzIGFuIGVkZ2Ugd2l0aCBib3RoIGluY2lkZW50IG5vZGVzIG1hcmtlZFxuICogd2l0aCB0aGUgXCJkdW1teVwiIHByb3BlcnR5LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIHNjYW5zIGxheWVyIGJ5IGxheWVyLCBzdGFydGluZyB3aXRoIHRoZSBzZWNvbmQsIGZvciB0eXBlLTFcbiAqIGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBjdXJyZW50IGxheWVyIGFuZCB0aGUgcHJldmlvdXMgbGF5ZXIuIEZvciBlYWNoIGxheWVyXG4gKiBpdCBzY2FucyB0aGUgbm9kZXMgZnJvbSBsZWZ0IHRvIHJpZ2h0IHVudGlsIGl0IHJlYWNoZXMgb25lIHRoYXQgaXMgaW5jaWRlbnRcbiAqIG9uIGFuIGlubmVyIHNlZ21lbnQuIEl0IHRoZW4gc2NhbnMgcHJlZGVjZXNzb3JzIHRvIGRldGVybWluZSBpZiB0aGV5IGhhdmVcbiAqIGVkZ2VzIHRoYXQgY3Jvc3MgdGhhdCBpbm5lciBzZWdtZW50LiBBdCB0aGUgZW5kIGEgZmluYWwgc2NhbiBpcyBkb25lIGZvciBhbGxcbiAqIG5vZGVzIG9uIHRoZSBjdXJyZW50IHJhbmsgdG8gc2VlIGlmIHRoZXkgY3Jvc3MgdGhlIGxhc3QgdmlzaXRlZCBpbm5lclxuICogc2VnbWVudC5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSAoc2FmZWx5KSBhc3N1bWVzIHRoYXQgYSBkdW1teSBub2RlIHdpbGwgb25seSBiZSBpbmNpZGVudCBvbiBhXG4gKiBzaW5nbGUgbm9kZSBpbiB0aGUgbGF5ZXJzIGJlaW5nIHNjYW5uZWQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRUeXBlMUNvbmZsaWN0cyhnLCBsYXllcmluZykge1xuICB2YXIgY29uZmxpY3RzID0ge307XG5cbiAgZnVuY3Rpb24gdmlzaXRMYXllcihwcmV2TGF5ZXIsIGxheWVyKSB7XG4gICAgdmFyIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgIHZhciB3ID0gZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZShnLCB2KSxcbiAgICAgICAgazEgPSB3ID8gZy5ub2RlKHcpLm9yZGVyIDogcHJldkxheWVyTGVuZ3RoO1xuXG4gICAgICBpZiAodyB8fCB2ID09PSBsYXN0Tm9kZSkge1xuICAgICAgICBfLmZvckVhY2gobGF5ZXIuc2xpY2Uoc2NhblBvcywgaSArIDEpLCBmdW5jdGlvbiAoc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbiAodSkge1xuICAgICAgICAgICAgdmFyIHVMYWJlbCA9IGcubm9kZSh1KSxcbiAgICAgICAgICAgICAgdVBvcyA9IHVMYWJlbC5vcmRlcjtcbiAgICAgICAgICAgIGlmICgodVBvcyA8IGswIHx8IGsxIDwgdVBvcykgJiYgISh1TGFiZWwuZHVtbXkgJiYgZy5ub2RlKHNjYW5Ob2RlKS5kdW1teSkpIHtcbiAgICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCBzY2FuTm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHNjYW5Qb3MgPSBpICsgMTtcbiAgICAgICAgazAgPSBrMTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXllcjtcbiAgfVxuXG4gIF8ucmVkdWNlKGxheWVyaW5nLCB2aXNpdExheWVyKTtcbiAgcmV0dXJuIGNvbmZsaWN0cztcbn1cblxuZnVuY3Rpb24gZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGhFbmQsIHByZXZOb3J0aEJvcmRlciwgbmV4dE5vcnRoQm9yZGVyKSB7XG4gICAgdmFyIHY7XG4gICAgXy5mb3JFYWNoKF8ucmFuZ2Uoc291dGhQb3MsIHNvdXRoRW5kKSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgIHYgPSBzb3V0aFtpXTtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkpIHtcbiAgICAgICAgXy5mb3JFYWNoKGcucHJlZGVjZXNzb3JzKHYpLCBmdW5jdGlvbiAodSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiYgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlzaXRMYXllcihub3J0aCwgc291dGgpIHtcbiAgICB2YXIgcHJldk5vcnRoUG9zID0gLTEsXG4gICAgICBuZXh0Tm9ydGhQb3MsXG4gICAgICBzb3V0aFBvcyA9IDA7XG5cbiAgICBfLmZvckVhY2goc291dGgsIGZ1bmN0aW9uICh2LCBzb3V0aExvb2thaGVhZCkge1xuICAgICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gJ2JvcmRlcicpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICBzb3V0aFBvcyA9IHNvdXRoTG9va2FoZWFkO1xuICAgICAgICAgIHByZXZOb3J0aFBvcyA9IG5leHROb3J0aFBvcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2Nhbihzb3V0aCwgc291dGhQb3MsIHNvdXRoLmxlbmd0aCwgbmV4dE5vcnRoUG9zLCBub3J0aC5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNvdXRoO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpIHtcbiAgaWYgKGcubm9kZSh2KS5kdW1teSkge1xuICAgIHJldHVybiBfLmZpbmQoZy5wcmVkZWNlc3NvcnModiksIGZ1bmN0aW9uICh1KSB7XG4gICAgICByZXR1cm4gZy5ub2RlKHUpLmR1bW15O1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG5cbiAgdmFyIGNvbmZsaWN0c1YgPSBjb25mbGljdHNbdl07XG4gIGlmICghY29uZmxpY3RzVikge1xuICAgIGNvbmZsaWN0c1t2XSA9IGNvbmZsaWN0c1YgPSB7fTtcbiAgfVxuICBjb25mbGljdHNWW3ddID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSB7XG4gIGlmICh2ID4gdykge1xuICAgIHZhciB0bXAgPSB2O1xuICAgIHYgPSB3O1xuICAgIHcgPSB0bXA7XG4gIH1cbiAgcmV0dXJuIF8uaGFzKGNvbmZsaWN0c1t2XSwgdyk7XG59XG5cbi8qXG4gKiBUcnkgdG8gYWxpZ24gbm9kZXMgaW50byB2ZXJ0aWNhbCBcImJsb2Nrc1wiIHdoZXJlIHBvc3NpYmxlLiBUaGlzIGFsZ29yaXRobVxuICogYXR0ZW1wdHMgdG8gYWxpZ24gYSBub2RlIHdpdGggb25lIG9mIGl0cyBtZWRpYW4gbmVpZ2hib3JzLiBJZiB0aGUgZWRnZVxuICogY29ubmVjdGluZyBhIG5laWdoYm9yIGlzIGEgdHlwZS0xIGNvbmZsaWN0IHRoZW4gd2UgaWdub3JlIHRoYXQgcG9zc2liaWxpdHkuXG4gKiBJZiBhIHByZXZpb3VzIG5vZGUgaGFzIGFscmVhZHkgZm9ybWVkIGEgYmxvY2sgd2l0aCBhIG5vZGUgYWZ0ZXIgdGhlIG5vZGVcbiAqIHdlJ3JlIHRyeWluZyB0byBmb3JtIGEgYmxvY2sgd2l0aCwgd2UgYWxzbyBpZ25vcmUgdGhhdCBwb3NzaWJpbGl0eSAtIG91clxuICogYmxvY2tzIHdvdWxkIGJlIHNwbGl0IGluIHRoYXQgc2NlbmFyaW8uXG4gKi9cbmZ1bmN0aW9uIHZlcnRpY2FsQWxpZ25tZW50KGcsIGxheWVyaW5nLCBjb25mbGljdHMsIG5laWdoYm9yRm4pIHtcbiAgdmFyIHJvb3QgPSB7fSxcbiAgICBhbGlnbiA9IHt9LFxuICAgIHBvcyA9IHt9O1xuXG4gIC8vIFdlIGNhY2hlIHRoZSBwb3NpdGlvbiBoZXJlIGJhc2VkIG9uIHRoZSBsYXllcmluZyBiZWNhdXNlIHRoZSBncmFwaCBhbmRcbiAgLy8gbGF5ZXJpbmcgbWF5IGJlIG91dCBvZiBzeW5jLiBUaGUgbGF5ZXJpbmcgbWF0cml4IGlzIG1hbmlwdWxhdGVkIHRvXG4gIC8vIGdlbmVyYXRlIGRpZmZlcmVudCBleHRyZW1lIGFsaWdubWVudHMuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24gKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbiAodiwgb3JkZXIpIHtcbiAgICAgIHJvb3Rbdl0gPSB2O1xuICAgICAgYWxpZ25bdl0gPSB2O1xuICAgICAgcG9zW3ZdID0gb3JkZXI7XG4gICAgfSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24gKGxheWVyKSB7XG4gICAgdmFyIHByZXZJZHggPSAtMTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uICh2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbiAodykge1xuICAgICAgICAgIHJldHVybiBwb3Nbd107XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiYgcHJldklkeCA8IHBvc1t3XSAmJiAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gJ2JvcmRlckxlZnQnIDogJ2JvcmRlclJpZ2h0JztcblxuICBmdW5jdGlvbiBpdGVyYXRlKHNldFhzRnVuYywgbmV4dE5vZGVzRnVuYykge1xuICAgIHZhciBzdGFjayA9IGJsb2NrRy5ub2RlcygpO1xuICAgIHZhciBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgICB3aGlsZSAoZWxlbSkge1xuICAgICAgaWYgKHZpc2l0ZWRbZWxlbV0pIHtcbiAgICAgICAgc2V0WHNGdW5jKGVsZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlzaXRlZFtlbGVtXSA9IHRydWU7XG4gICAgICAgIHN0YWNrLnB1c2goZWxlbSk7XG4gICAgICAgIHN0YWNrID0gc3RhY2suY29uY2F0KG5leHROb2Rlc0Z1bmMoZWxlbSkpO1xuICAgICAgfVxuXG4gICAgICBlbGVtID0gc3RhY2sucG9wKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgcGFzcywgYXNzaWduIHNtYWxsZXN0IGNvb3JkaW5hdGVzXG4gIGZ1bmN0aW9uIHBhc3MxKGVsZW0pIHtcbiAgICB4c1tlbGVtXSA9IGJsb2NrRy5pbkVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoYWNjLCB4c1tlLnZdICsgYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMihlbGVtKSB7XG4gICAgdmFyIG1pbiA9IGJsb2NrRy5vdXRFZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgZSkge1xuICAgICAgcmV0dXJuIE1hdGgubWluKGFjYywgeHNbZS53XSAtIGJsb2NrRy5lZGdlKGUpKTtcbiAgICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gICAgdmFyIG5vZGUgPSBnLm5vZGUoZWxlbSk7XG4gICAgaWYgKG1pbiAhPT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZICYmIG5vZGUuYm9yZGVyVHlwZSAhPT0gYm9yZGVyVHlwZSkge1xuICAgICAgeHNbZWxlbV0gPSBNYXRoLm1heCh4c1tlbGVtXSwgbWluKTtcbiAgICB9XG4gIH1cblxuICBpdGVyYXRlKHBhc3MxLCBibG9ja0cucHJlZGVjZXNzb3JzLmJpbmQoYmxvY2tHKSk7XG4gIGl0ZXJhdGUocGFzczIsIGJsb2NrRy5zdWNjZXNzb3JzLmJpbmQoYmxvY2tHKSk7XG5cbiAgLy8gQXNzaWduIHggY29vcmRpbmF0ZXMgdG8gYWxsIG5vZGVzXG4gIF8uZm9yRWFjaChhbGlnbiwgZnVuY3Rpb24gKHYpIHtcbiAgICB4c1t2XSA9IHhzW3Jvb3Rbdl1dO1xuICB9KTtcblxuICByZXR1cm4geHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkge1xuICB2YXIgYmxvY2tHcmFwaCA9IG5ldyBHcmFwaCgpLFxuICAgIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCksXG4gICAgc2VwRm4gPSBzZXAoZ3JhcGhMYWJlbC5ub2Rlc2VwLCBncmFwaExhYmVsLmVkZ2VzZXAsIHJldmVyc2VTZXApO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24gKGxheWVyKSB7XG4gICAgdmFyIHU7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbiAodikge1xuICAgICAgdmFyIHZSb290ID0gcm9vdFt2XTtcbiAgICAgIGJsb2NrR3JhcGguc2V0Tm9kZSh2Um9vdCk7XG4gICAgICBpZiAodSkge1xuICAgICAgICB2YXIgdVJvb3QgPSByb290W3VdLFxuICAgICAgICAgIHByZXZNYXggPSBibG9ja0dyYXBoLmVkZ2UodVJvb3QsIHZSb290KTtcbiAgICAgICAgYmxvY2tHcmFwaC5zZXRFZGdlKHVSb290LCB2Um9vdCwgTWF0aC5tYXgoc2VwRm4oZywgdiwgdSksIHByZXZNYXggfHwgMCkpO1xuICAgICAgfVxuICAgICAgdSA9IHY7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBibG9ja0dyYXBoO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgYWxpZ25tZW50IHRoYXQgaGFzIHRoZSBzbWFsbGVzdCB3aWR0aCBvZiB0aGUgZ2l2ZW4gYWxpZ25tZW50cy5cbiAqL1xuZnVuY3Rpb24gZmluZFNtYWxsZXN0V2lkdGhBbGlnbm1lbnQoZywgeHNzKSB7XG4gIHJldHVybiBfLm1pbkJ5KF8udmFsdWVzKHhzcyksIGZ1bmN0aW9uICh4cykge1xuICAgIHZhciBtYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblxuICAgIF8uZm9ySW4oeHMsIGZ1bmN0aW9uICh4LCB2KSB7XG4gICAgICB2YXIgaGFsZldpZHRoID0gd2lkdGgoZywgdikgLyAyO1xuXG4gICAgICBtYXggPSBNYXRoLm1heCh4ICsgaGFsZldpZHRoLCBtYXgpO1xuICAgICAgbWluID0gTWF0aC5taW4oeCAtIGhhbGZXaWR0aCwgbWluKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXggLSBtaW47XG4gIH0pO1xufVxuXG4vKlxuICogQWxpZ24gdGhlIGNvb3JkaW5hdGVzIG9mIGVhY2ggb2YgdGhlIGxheW91dCBhbGlnbm1lbnRzIHN1Y2ggdGhhdFxuICogbGVmdC1iaWFzZWQgYWxpZ25tZW50cyBoYXZlIHRoZWlyIG1pbmltdW0gY29vcmRpbmF0ZSBhdCB0aGUgc2FtZSBwb2ludCBhc1xuICogdGhlIG1pbmltdW0gY29vcmRpbmF0ZSBvZiB0aGUgc21hbGxlc3Qgd2lkdGggYWxpZ25tZW50IGFuZCByaWdodC1iaWFzZWRcbiAqIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtYXhpbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXMgdGhlIG1heGltdW1cbiAqIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudC5cbiAqL1xuZnVuY3Rpb24gYWxpZ25Db29yZGluYXRlcyh4c3MsIGFsaWduVG8pIHtcbiAgdmFyIGFsaWduVG9WYWxzID0gXy52YWx1ZXMoYWxpZ25UbyksXG4gICAgYWxpZ25Ub01pbiA9IF8ubWluKGFsaWduVG9WYWxzKSxcbiAgICBhbGlnblRvTWF4ID0gXy5tYXgoYWxpZ25Ub1ZhbHMpO1xuXG4gIF8uZm9yRWFjaChbJ3UnLCAnZCddLCBmdW5jdGlvbiAodmVydCkge1xuICAgIF8uZm9yRWFjaChbJ2wnLCAnciddLCBmdW5jdGlvbiAoaG9yaXopIHtcbiAgICAgIHZhciBhbGlnbm1lbnQgPSB2ZXJ0ICsgaG9yaXosXG4gICAgICAgIHhzID0geHNzW2FsaWdubWVudF0sXG4gICAgICAgIGRlbHRhO1xuICAgICAgaWYgKHhzID09PSBhbGlnblRvKSByZXR1cm47XG5cbiAgICAgIHZhciB4c1ZhbHMgPSBfLnZhbHVlcyh4cyk7XG4gICAgICBkZWx0YSA9IGhvcml6ID09PSAnbCcgPyBhbGlnblRvTWluIC0gXy5taW4oeHNWYWxzKSA6IGFsaWduVG9NYXggLSBfLm1heCh4c1ZhbHMpO1xuXG4gICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgeHNzW2FsaWdubWVudF0gPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICByZXR1cm4geCArIGRlbHRhO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJhbGFuY2UoeHNzLCBhbGlnbikge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLCBmdW5jdGlvbiAoaWdub3JlLCB2KSB7XG4gICAgaWYgKGFsaWduKSB7XG4gICAgICByZXR1cm4geHNzW2FsaWduLnRvTG93ZXJDYXNlKCldW3ZdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgeHMgPSBfLnNvcnRCeShfLm1hcCh4c3MsIHYpKTtcbiAgICAgIHJldHVybiAoeHNbMV0gKyB4c1syXSkgLyAyO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uWChnKSB7XG4gIHZhciBsYXllcmluZyA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcbiAgdmFyIGNvbmZsaWN0cyA9IF8ubWVyZ2UoZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSwgZmluZFR5cGUyQ29uZmxpY3RzKGcsIGxheWVyaW5nKSk7XG5cbiAgdmFyIHhzcyA9IHt9O1xuICB2YXIgYWRqdXN0ZWRMYXllcmluZztcbiAgXy5mb3JFYWNoKFsndScsICdkJ10sIGZ1bmN0aW9uICh2ZXJ0KSB7XG4gICAgYWRqdXN0ZWRMYXllcmluZyA9IHZlcnQgPT09ICd1JyA/IGxheWVyaW5nIDogXy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtcbiAgICBfLmZvckVhY2goWydsJywgJ3InXSwgZnVuY3Rpb24gKGhvcml6KSB7XG4gICAgICBpZiAoaG9yaXogPT09ICdyJykge1xuICAgICAgICBhZGp1c3RlZExheWVyaW5nID0gXy5tYXAoYWRqdXN0ZWRMYXllcmluZywgZnVuY3Rpb24gKGlubmVyKSB7XG4gICAgICAgICAgcmV0dXJuIF8udmFsdWVzKGlubmVyKS5yZXZlcnNlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmVpZ2hib3JGbiA9ICh2ZXJ0ID09PSAndScgPyBnLnByZWRlY2Vzc29ycyA6IGcuc3VjY2Vzc29ycykuYmluZChnKTtcbiAgICAgIHZhciBhbGlnbiA9IHZlcnRpY2FsQWxpZ25tZW50KGcsIGFkanVzdGVkTGF5ZXJpbmcsIGNvbmZsaWN0cywgbmVpZ2hib3JGbik7XG4gICAgICB2YXIgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLCBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09ICdyJyk7XG4gICAgICBpZiAoaG9yaXogPT09ICdyJykge1xuICAgICAgICB4cyA9IF8ubWFwVmFsdWVzKHhzLCBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgIHJldHVybiAteDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB4c3NbdmVydCArIGhvcml6XSA9IHhzO1xuICAgIH0pO1xuICB9KTtcblxuICB2YXIgc21hbGxlc3RXaWR0aCA9IGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcyk7XG4gIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBzbWFsbGVzdFdpZHRoKTtcbiAgcmV0dXJuIGJhbGFuY2UoeHNzLCBnLmdyYXBoKCkuYWxpZ24pO1xufVxuXG5mdW5jdGlvbiBzZXAobm9kZVNlcCwgZWRnZVNlcCwgcmV2ZXJzZVNlcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGcsIHYsIHcpIHtcbiAgICB2YXIgdkxhYmVsID0gZy5ub2RlKHYpO1xuICAgIHZhciB3TGFiZWwgPSBnLm5vZGUodyk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGRlbHRhO1xuXG4gICAgc3VtICs9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHZMYWJlbCwgJ2xhYmVscG9zJykpIHtcbiAgICAgIHN3aXRjaCAodkxhYmVsLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnbCc6XG4gICAgICAgICAgZGVsdGEgPSAtdkxhYmVsLndpZHRoIC8gMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncic6XG4gICAgICAgICAgZGVsdGEgPSB2TGFiZWwud2lkdGggLyAyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICBzdW0gKz0gKHdMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG5cbiAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXMod0xhYmVsLCAnbGFiZWxwb3MnKSkge1xuICAgICAgc3dpdGNoICh3TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgIGRlbHRhID0gLXdMYWJlbC53aWR0aCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgcmV0dXJuIHN1bTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lkdGgoZywgdikge1xuICByZXR1cm4gZy5ub2RlKHYpLndpZHRoO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/position/bk.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/position/index.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/position/index.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"position\": () => (/* binding */ position)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forOwn.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n/* harmony import */ var _bk_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bk.js */ \"../../../node_modules/dagre-d3-es/src/dagre/position/bk.js\");\n\n\n\n\n\n\nfunction position(g) {\n g = _util_js__WEBPACK_IMPORTED_MODULE_0__.asNonCompoundGraph(g);\n\n positionY(g);\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"]((0,_bk_js__WEBPACK_IMPORTED_MODULE_1__.positionX)(g), function (x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = _util_js__WEBPACK_IMPORTED_MODULE_0__.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layering, function (layer) {\n var maxHeight = lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](layer, function (v) {\n return g.node(v).height;\n })\n );\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](layer, function (v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9wb3NpdGlvbi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQStCO0FBQ0k7QUFDQzs7QUFFaEI7O0FBRXBCO0FBQ0EsTUFBTSx3REFBdUI7O0FBRTdCO0FBQ0EsRUFBRSxpREFBUSxDQUFDLGlEQUFTO0FBQ3BCO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsaUJBQWlCLHNEQUFxQjtBQUN0QztBQUNBO0FBQ0EsRUFBRSxpREFBUztBQUNYLG9CQUFvQixpREFBSztBQUN6QixNQUFNLGlEQUFLO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJLGlEQUFTO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9wb3NpdGlvbi9pbmRleC5qcz8zNmQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi4vdXRpbC5qcyc7XG5pbXBvcnQgeyBwb3NpdGlvblggfSBmcm9tICcuL2JrLmpzJztcblxuZXhwb3J0IHsgcG9zaXRpb24gfTtcblxuZnVuY3Rpb24gcG9zaXRpb24oZykge1xuICBnID0gdXRpbC5hc05vbkNvbXBvdW5kR3JhcGgoZyk7XG5cbiAgcG9zaXRpb25ZKGcpO1xuICBfLmZvck93bihwb3NpdGlvblgoZyksIGZ1bmN0aW9uICh4LCB2KSB7XG4gICAgZy5ub2RlKHYpLnggPSB4O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25ZKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgcmFua1NlcCA9IGcuZ3JhcGgoKS5yYW5rc2VwO1xuICB2YXIgcHJldlkgPSAwO1xuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uIChsYXllcikge1xuICAgIHZhciBtYXhIZWlnaHQgPSBfLm1heChcbiAgICAgIF8ubWFwKGxheWVyLCBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gZy5ub2RlKHYpLmhlaWdodDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uICh2KSB7XG4gICAgICBnLm5vZGUodikueSA9IHByZXZZICsgbWF4SGVpZ2h0IC8gMjtcbiAgICB9KTtcbiAgICBwcmV2WSArPSBtYXhIZWlnaHQgKyByYW5rU2VwO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/position/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"feasibleTree\": () => (/* binding */ feasibleTree)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/minBy.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/util.js\");\n\n\n\n\n\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.slack)(g, edge) : -(0,_util_js__WEBPACK_IMPORTED_MODULE_1__.slack)(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodeEdges(v), function (e) {\n var edgeV = e.v,\n w = v === edgeV ? e.w : edgeV;\n if (!t.hasNode(w) && !(0,_util_js__WEBPACK_IMPORTED_MODULE_1__.slack)(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.edges(), function (e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.slack)(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](t.nodes(), function (v) {\n g.node(v).rank += delta;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL2ZlYXNpYmxlLXRyZWUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0I7QUFDaUI7QUFDZDs7QUFFVjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMscURBQUssR0FBRyxpQkFBaUI7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFLLGFBQWEsK0NBQUs7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksaURBQVM7QUFDYjtBQUNBO0FBQ0EsNEJBQTRCLCtDQUFLO0FBQ2pDLHVCQUF1QjtBQUN2QiwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxpREFBTztBQUNoQjtBQUNBLGFBQWEsK0NBQUs7QUFDbEI7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL2ZlYXNpYmxlLXRyZWUuanM/NjE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gJy4uLy4uL2dyYXBobGliL2luZGV4LmpzJztcbmltcG9ydCB7IHNsYWNrIH0gZnJvbSAnLi91dGlsLmpzJztcblxuZXhwb3J0IHsgZmVhc2libGVUcmVlIH07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWUoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRpZ2h0VHJlZSh0LCBnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIGVkZ2VWID0gZS52LFxuICAgICAgICB3ID0gdiA9PT0gZWRnZVYgPyBlLncgOiBlZGdlVjtcbiAgICAgIGlmICghdC5oYXNOb2RlKHcpICYmICFzbGFjayhnLCBlKSkge1xuICAgICAgICB0LnNldE5vZGUodywge30pO1xuICAgICAgICB0LnNldEVkZ2Uodiwgdywge30pO1xuICAgICAgICBkZnModyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBfLmZvckVhY2godC5ub2RlcygpLCBkZnMpO1xuICByZXR1cm4gdC5ub2RlQ291bnQoKTtcbn1cblxuLypcbiAqIEZpbmRzIHRoZSBlZGdlIHdpdGggdGhlIHNtYWxsZXN0IHNsYWNrIHRoYXQgaXMgaW5jaWRlbnQgb24gdHJlZSBhbmQgcmV0dXJuc1xuICogaXQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRNaW5TbGFja0VkZ2UodCwgZykge1xuICByZXR1cm4gXy5taW5CeShnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpIHtcbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICBnLm5vZGUodikucmFuayArPSBkZWx0YTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/rank/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/rank/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"rank\": () => (/* binding */ rank)\n/* harmony export */ });\n/* harmony import */ var _feasible_tree_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./feasible-tree.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js\");\n/* harmony import */ var _network_simplex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./network-simplex.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/util.js\");\n\n\n\n\n\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch (g.graph().ranker) {\n case 'network-simplex':\n networkSimplexRanker(g);\n break;\n case 'tight-tree':\n tightTreeRanker(g);\n break;\n case 'longest-path':\n longestPathRanker(g);\n break;\n default:\n networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = _util_js__WEBPACK_IMPORTED_MODULE_2__.longestPath;\n\nfunction tightTreeRanker(g) {\n (0,_util_js__WEBPACK_IMPORTED_MODULE_2__.longestPath)(g);\n (0,_feasible_tree_js__WEBPACK_IMPORTED_MODULE_0__.feasibleTree)(g);\n}\n\nfunction networkSimplexRanker(g) {\n (0,_network_simplex_js__WEBPACK_IMPORTED_MODULE_1__.networkSimplex)(g);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0Q7QUFDSTtBQUNkOztBQUV4Qjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsaURBQVc7O0FBRW5DO0FBQ0EsRUFBRSxxREFBVztBQUNiLEVBQUUsK0RBQVk7QUFDZDs7QUFFQTtBQUNBLEVBQUUsbUVBQWM7QUFDaEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL2luZGV4LmpzP2E3MzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmVhc2libGVUcmVlIH0gZnJvbSAnLi9mZWFzaWJsZS10cmVlLmpzJztcbmltcG9ydCB7IG5ldHdvcmtTaW1wbGV4IH0gZnJvbSAnLi9uZXR3b3JrLXNpbXBsZXguanMnO1xuaW1wb3J0IHsgbG9uZ2VzdFBhdGggfSBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyByYW5rIH07XG5cbi8qXG4gKiBBc3NpZ25zIGEgcmFuayB0byBlYWNoIG5vZGUgaW4gdGhlIGlucHV0IGdyYXBoIHRoYXQgcmVzcGVjdHMgdGhlIFwibWlubGVuXCJcbiAqIGNvbnN0cmFpbnQgc3BlY2lmaWVkIG9uIGVkZ2VzIGJldHdlZW4gbm9kZXMuXG4gKlxuICogVGhpcyBiYXNpYyBzdHJ1Y3R1cmUgaXMgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3JcbiAqIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbXVzdCBiZSBhIGNvbm5lY3RlZCBEQUdcbiAqICAgIDIuIEdyYXBoIG5vZGVzIG11c3QgYmUgb2JqZWN0c1xuICogICAgMy4gR3JhcGggZWRnZXMgbXVzdCBoYXZlIFwid2VpZ2h0XCIgYW5kIFwibWlubGVuXCIgYXR0cmlidXRlc1xuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBub2RlcyB3aWxsIGhhdmUgYSBcInJhbmtcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uIFJhbmtzIGNhbiBzdGFydCBhdCBhbnkgaW5kZXggKGluY2x1ZGluZyBuZWdhdGl2ZSksIHdlJ2xsXG4gKiAgICAgICBmaXggdGhlbSB1cCBsYXRlci5cbiAqL1xuZnVuY3Rpb24gcmFuayhnKSB7XG4gIHN3aXRjaCAoZy5ncmFwaCgpLnJhbmtlcikge1xuICAgIGNhc2UgJ25ldHdvcmstc2ltcGxleCc6XG4gICAgICBuZXR3b3JrU2ltcGxleFJhbmtlcihnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3RpZ2h0LXRyZWUnOlxuICAgICAgdGlnaHRUcmVlUmFua2VyKGcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbG9uZ2VzdC1wYXRoJzpcbiAgICAgIGxvbmdlc3RQYXRoUmFua2VyKGcpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpO1xuICB9XG59XG5cbi8vIEEgZmFzdCBhbmQgc2ltcGxlIHJhbmtlciwgYnV0IHJlc3VsdHMgYXJlIGZhciBmcm9tIG9wdGltYWwuXG52YXIgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcblxuZnVuY3Rpb24gdGlnaHRUcmVlUmFua2VyKGcpIHtcbiAgbG9uZ2VzdFBhdGgoZyk7XG4gIGZlYXNpYmxlVHJlZShnKTtcbn1cblxuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXhSYW5rZXIoZykge1xuICBuZXR3b3JrU2ltcGxleChnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/rank/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"networkSimplex\": () => (/* binding */ networkSimplex)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/find.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/minBy.js\");\n/* harmony import */ var _graphlib_alg_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../graphlib/alg/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/index.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/util.js\");\n/* harmony import */ var _feasible_tree_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./feasible-tree.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/dagre-d3-es/src/dagre/rank/util.js\");\n\n\n\n\n\n\n\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.simplify)(g);\n (0,_util_js__WEBPACK_IMPORTED_MODULE_3__.longestPath)(g);\n var t = (0,_feasible_tree_js__WEBPACK_IMPORTED_MODULE_2__.feasibleTree)(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = _graphlib_alg_index_js__WEBPACK_IMPORTED_MODULE_0__.postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](vs, function (v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](g.nodeEdges(child), function (e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](tree.neighbors(v), function (w) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](tree.edges(), function (e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](g.edges(), function (edge) {\n return (\n flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel)\n );\n });\n\n return lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](candidates, function (edge) {\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_3__.slack)(g, edge);\n });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](t.nodes(), function (v) {\n return !g.node(v).parent;\n });\n var vs = _graphlib_alg_index_js__WEBPACK_IMPORTED_MODULE_0__.preorder(t, root);\n vs = vs.slice(1);\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](vs, function (v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL25ldHdvcmstc2ltcGxleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQStCO0FBQ29CO0FBQ2I7QUFDWTtBQUNIOztBQUVyQjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtEQUFRO0FBQ2QsRUFBRSxxREFBVztBQUNiLFVBQVUsK0RBQVk7QUFDdEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDZEQUFhO0FBQ3hCO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRSxpREFBUztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLGlEQUFTO0FBQ1gsU0FBUyxpREFBSztBQUNkO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpREFBTTtBQUNmO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGlEQUFRO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCxTQUFTLGlEQUFPO0FBQ2hCLFdBQVcsK0NBQUs7QUFDaEIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxpREFBTTtBQUNuQjtBQUNBLEdBQUc7QUFDSCxXQUFXLDREQUFZO0FBQ3ZCO0FBQ0EsRUFBRSxpREFBUztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL25ldHdvcmstc2ltcGxleC5qcz9hYmNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCAqIGFzIGFsZyBmcm9tICcuLi8uLi9ncmFwaGxpYi9hbGcvaW5kZXguanMnO1xuaW1wb3J0IHsgc2ltcGxpZnkgfSBmcm9tICcuLi91dGlsLmpzJztcbmltcG9ydCB7IGZlYXNpYmxlVHJlZSB9IGZyb20gJy4vZmVhc2libGUtdHJlZS5qcyc7XG5pbXBvcnQgeyBsb25nZXN0UGF0aCwgc2xhY2sgfSBmcm9tICcuL3V0aWwuanMnO1xuXG5leHBvcnQgeyBuZXR3b3JrU2ltcGxleCB9O1xuXG4vLyBFeHBvc2Ugc29tZSBpbnRlcm5hbHMgZm9yIHRlc3RpbmcgcHVycG9zZXNcbm5ldHdvcmtTaW1wbGV4LmluaXRMb3dMaW1WYWx1ZXMgPSBpbml0TG93TGltVmFsdWVzO1xubmV0d29ya1NpbXBsZXguaW5pdEN1dFZhbHVlcyA9IGluaXRDdXRWYWx1ZXM7XG5uZXR3b3JrU2ltcGxleC5jYWxjQ3V0VmFsdWUgPSBjYWxjQ3V0VmFsdWU7XG5uZXR3b3JrU2ltcGxleC5sZWF2ZUVkZ2UgPSBsZWF2ZUVkZ2U7XG5uZXR3b3JrU2ltcGxleC5lbnRlckVkZ2UgPSBlbnRlckVkZ2U7XG5uZXR3b3JrU2ltcGxleC5leGNoYW5nZUVkZ2VzID0gZXhjaGFuZ2VFZGdlcztcblxuLypcbiAqIFRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtIGFzc2lnbnMgcmFua3MgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIGl0ZXJhdGl2ZWx5IGltcHJvdmVzIHRoZSByYW5raW5nIHRvIHJlZHVjZSB0aGUgbGVuZ3RoIG9mIGVkZ2VzLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIG11c3QgYmUgYSBEQUcuXG4gKiAgICAyLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBhbiBvYmplY3QgdmFsdWUuXG4gKiAgICAzLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBcIm1pbmxlblwiIGFuZCBcIndlaWdodFwiIGF0dHJpYnV0ZXMuXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCB3aWxsIGhhdmUgYW4gYXNzaWduZWQgXCJyYW5rXCIgYXR0cmlidXRlIHRoYXQgaGFzXG4gKiAgICAgICBiZWVuIG9wdGltaXplZCBieSB0aGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobS4gUmFua3Mgc3RhcnQgYXQgMC5cbiAqXG4gKlxuICogQSByb3VnaCBza2V0Y2ggb2YgdGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEFzc2lnbiBpbml0aWFsIHJhbmtzIHRvIGVhY2ggbm9kZS4gV2UgdXNlIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLFxuICogICAgICAgd2hpY2ggYXNzaWducyByYW5rcyB0byB0aGUgbG93ZXN0IHBvc2l0aW9uIHBvc3NpYmxlLiBJbiBnZW5lcmFsIHRoaXNcbiAqICAgICAgIGxlYWRzIHRvIHZlcnkgd2lkZSBib3R0b20gcmFua3MgYW5kIHVubmVjZXNzYXJpbHkgbG9uZyBlZGdlcy5cbiAqICAgIDIuIENvbnN0cnVjdCBhIGZlYXNpYmxlIHRpZ2h0IHRyZWUuIEEgdGlnaHQgdHJlZSBpcyBvbmUgc3VjaCB0aGF0IGFsbFxuICogICAgICAgZWRnZXMgaW4gdGhlIHRyZWUgaGF2ZSBubyBzbGFjayAoZGlmZmVyZW5jZSBiZXR3ZWVuIGxlbmd0aCBvZiBlZGdlXG4gKiAgICAgICBhbmQgbWlubGVuIGZvciB0aGUgZWRnZSkuIFRoaXMgYnkgaXRzZWxmIGdyZWF0bHkgaW1wcm92ZXMgdGhlIGFzc2lnbmVkXG4gKiAgICAgICByYW5raW5ncyBieSBzaG9ydGluZyBlZGdlcy5cbiAqICAgIDMuIEl0ZXJhdGl2ZWx5IGZpbmQgZWRnZXMgdGhhdCBoYXZlIG5lZ2F0aXZlIGN1dCB2YWx1ZXMuIEdlbmVyYWxseSBhXG4gKiAgICAgICBuZWdhdGl2ZSBjdXQgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGVkZ2UgY291bGQgYmUgcmVtb3ZlZCBhbmQgYSBuZXdcbiAqICAgICAgIHRyZWUgZWRnZSBjb3VsZCBiZSBhZGRlZCB0byBwcm9kdWNlIGEgbW9yZSBjb21wYWN0IGdyYXBoLlxuICpcbiAqIE11Y2ggb2YgdGhlIGFsZ29yaXRobXMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZVxuICogZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgcm91Z2hseSBmb2xsb3dzIHRoZVxuICogc3RydWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXgoZykge1xuICBnID0gc2ltcGxpZnkoZyk7XG4gIGxvbmdlc3RQYXRoKGcpO1xuICB2YXIgdCA9IGZlYXNpYmxlVHJlZShnKTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcblxuICB2YXIgZSwgZjtcbiAgd2hpbGUgKChlID0gbGVhdmVFZGdlKHQpKSkge1xuICAgIGYgPSBlbnRlckVkZ2UodCwgZywgZSk7XG4gICAgZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKTtcbiAgfVxufVxuXG4vKlxuICogSW5pdGlhbGl6ZXMgY3V0IHZhbHVlcyBmb3IgYWxsIGVkZ2VzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpbml0Q3V0VmFsdWVzKHQsIGcpIHtcbiAgdmFyIHZzID0gYWxnLnBvc3RvcmRlcih0LCB0Lm5vZGVzKCkpO1xuICB2cyA9IHZzLnNsaWNlKDAsIHZzLmxlbmd0aCAtIDEpO1xuICBfLmZvckVhY2godnMsIGZ1bmN0aW9uICh2KSB7XG4gICAgYXNzaWduQ3V0VmFsdWUodCwgZywgdik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3NpZ25DdXRWYWx1ZSh0LCBnLCBjaGlsZCkge1xuICB2YXIgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICB2YXIgcGFyZW50ID0gY2hpbGRMYWIucGFyZW50O1xuICB0LmVkZ2UoY2hpbGQsIHBhcmVudCkuY3V0dmFsdWUgPSBjYWxjQ3V0VmFsdWUodCwgZywgY2hpbGQpO1xufVxuXG4vKlxuICogR2l2ZW4gdGhlIHRpZ2h0IHRyZWUsIGl0cyBncmFwaCwgYW5kIGEgY2hpbGQgaW4gdGhlIGdyYXBoIGNhbGN1bGF0ZSBhbmRcbiAqIHJldHVybiB0aGUgY3V0IHZhbHVlIGZvciB0aGUgZWRnZSBiZXR3ZWVuIHRoZSBjaGlsZCBhbmQgaXRzIHBhcmVudC5cbiAqL1xuZnVuY3Rpb24gY2FsY0N1dFZhbHVlKHQsIGcsIGNoaWxkKSB7XG4gIHZhciBjaGlsZExhYiA9IHQubm9kZShjaGlsZCk7XG4gIHZhciBwYXJlbnQgPSBjaGlsZExhYi5wYXJlbnQ7XG4gIC8vIFRydWUgaWYgdGhlIGNoaWxkIGlzIG9uIHRoZSB0YWlsIGVuZCBvZiB0aGUgZWRnZSBpbiB0aGUgZGlyZWN0ZWQgZ3JhcGhcbiAgdmFyIGNoaWxkSXNUYWlsID0gdHJ1ZTtcbiAgLy8gVGhlIGdyYXBoJ3MgdmlldyBvZiB0aGUgdHJlZSBlZGdlIHdlJ3JlIGluc3BlY3RpbmdcbiAgdmFyIGdyYXBoRWRnZSA9IGcuZWRnZShjaGlsZCwgcGFyZW50KTtcbiAgLy8gVGhlIGFjY3VtdWxhdGVkIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGlzIG5vZGUgYW5kIGl0cyBwYXJlbnRcbiAgdmFyIGN1dFZhbHVlID0gMDtcblxuICBpZiAoIWdyYXBoRWRnZSkge1xuICAgIGNoaWxkSXNUYWlsID0gZmFsc2U7XG4gICAgZ3JhcGhFZGdlID0gZy5lZGdlKHBhcmVudCwgY2hpbGQpO1xuICB9XG5cbiAgY3V0VmFsdWUgPSBncmFwaEVkZ2Uud2VpZ2h0O1xuXG4gIF8uZm9yRWFjaChnLm5vZGVFZGdlcyhjaGlsZCksIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGlzT3V0RWRnZSA9IGUudiA9PT0gY2hpbGQsXG4gICAgICBvdGhlciA9IGlzT3V0RWRnZSA/IGUudyA6IGUudjtcblxuICAgIGlmIChvdGhlciAhPT0gcGFyZW50KSB7XG4gICAgICB2YXIgcG9pbnRzVG9IZWFkID0gaXNPdXRFZGdlID09PSBjaGlsZElzVGFpbCxcbiAgICAgICAgb3RoZXJXZWlnaHQgPSBnLmVkZ2UoZSkud2VpZ2h0O1xuXG4gICAgICBjdXRWYWx1ZSArPSBwb2ludHNUb0hlYWQgPyBvdGhlcldlaWdodCA6IC1vdGhlcldlaWdodDtcbiAgICAgIGlmIChpc1RyZWVFZGdlKHQsIGNoaWxkLCBvdGhlcikpIHtcbiAgICAgICAgdmFyIG90aGVyQ3V0VmFsdWUgPSB0LmVkZ2UoY2hpbGQsIG90aGVyKS5jdXR2YWx1ZTtcbiAgICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gLW90aGVyQ3V0VmFsdWUgOiBvdGhlckN1dFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGN1dFZhbHVlO1xufVxuXG5mdW5jdGlvbiBpbml0TG93TGltVmFsdWVzKHRyZWUsIHJvb3QpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgcm9vdCA9IHRyZWUubm9kZXMoKVswXTtcbiAgfVxuICBkZnNBc3NpZ25Mb3dMaW0odHJlZSwge30sIDEsIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdiwgcGFyZW50KSB7XG4gIHZhciBsb3cgPSBuZXh0TGltO1xuICB2YXIgbGFiZWwgPSB0cmVlLm5vZGUodik7XG5cbiAgdmlzaXRlZFt2XSA9IHRydWU7XG4gIF8uZm9yRWFjaCh0cmVlLm5laWdoYm9ycyh2KSwgZnVuY3Rpb24gKHcpIHtcbiAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICBuZXh0TGltID0gZGZzQXNzaWduTG93TGltKHRyZWUsIHZpc2l0ZWQsIG5leHRMaW0sIHcsIHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGFiZWwubG93ID0gbG93O1xuICBsYWJlbC5saW0gPSBuZXh0TGltKys7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBsYWJlbC5wYXJlbnQgPSBwYXJlbnQ7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETyBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyB3aGVuIHdlIGluY3JlbWVudGFsbHkgdXBkYXRlIGxvdyBsaW1cbiAgICBkZWxldGUgbGFiZWwucGFyZW50O1xuICB9XG5cbiAgcmV0dXJuIG5leHRMaW07XG59XG5cbmZ1bmN0aW9uIGxlYXZlRWRnZSh0cmVlKSB7XG4gIHJldHVybiBfLmZpbmQodHJlZS5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiB0cmVlLmVkZ2UoZSkuY3V0dmFsdWUgPCAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZW50ZXJFZGdlKHQsIGcsIGVkZ2UpIHtcbiAgdmFyIHYgPSBlZGdlLnY7XG4gIHZhciB3ID0gZWRnZS53O1xuXG4gIC8vIEZvciB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIHdlIGFzc3VtZSB0aGF0IHYgaXMgdGhlIHRhaWwgYW5kIHcgaXMgdGhlXG4gIC8vIGhlYWQsIHNvIGlmIHdlIGRvbid0IGhhdmUgdGhpcyBlZGdlIGluIHRoZSBncmFwaCB3ZSBzaG91bGQgZmxpcCBpdCB0b1xuICAvLyBtYXRjaCB0aGUgY29ycmVjdCBvcmllbnRhdGlvbi5cbiAgaWYgKCFnLmhhc0VkZ2UodiwgdykpIHtcbiAgICB2ID0gZWRnZS53O1xuICAgIHcgPSBlZGdlLnY7XG4gIH1cblxuICB2YXIgdkxhYmVsID0gdC5ub2RlKHYpO1xuICB2YXIgd0xhYmVsID0gdC5ub2RlKHcpO1xuICB2YXIgdGFpbExhYmVsID0gdkxhYmVsO1xuICB2YXIgZmxpcCA9IGZhbHNlO1xuXG4gIC8vIElmIHRoZSByb290IGlzIGluIHRoZSB0YWlsIG9mIHRoZSBlZGdlIHRoZW4gd2UgbmVlZCB0byBmbGlwIHRoZSBsb2dpYyB0aGF0XG4gIC8vIGNoZWNrcyBmb3IgdGhlIGhlYWQgYW5kIHRhaWwgbm9kZXMgaW4gdGhlIGNhbmRpZGF0ZXMgZnVuY3Rpb24gYmVsb3cuXG4gIGlmICh2TGFiZWwubGltID4gd0xhYmVsLmxpbSkge1xuICAgIHRhaWxMYWJlbCA9IHdMYWJlbDtcbiAgICBmbGlwID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBjYW5kaWRhdGVzID0gXy5maWx0ZXIoZy5lZGdlcygpLCBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHJldHVybiAoXG4gICAgICBmbGlwID09PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudiksIHRhaWxMYWJlbCkgJiZcbiAgICAgIGZsaXAgIT09IGlzRGVzY2VuZGFudCh0LCB0Lm5vZGUoZWRnZS53KSwgdGFpbExhYmVsKVxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiBfLm1pbkJ5KGNhbmRpZGF0ZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgcmV0dXJuIHNsYWNrKGcsIGVkZ2UpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKSB7XG4gIHZhciB2ID0gZS52O1xuICB2YXIgdyA9IGUudztcbiAgdC5yZW1vdmVFZGdlKHYsIHcpO1xuICB0LnNldEVkZ2UoZi52LCBmLncsIHt9KTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcbiAgdXBkYXRlUmFua3ModCwgZyk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVJhbmtzKHQsIGcpIHtcbiAgdmFyIHJvb3QgPSBfLmZpbmQodC5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHJldHVybiAhZy5ub2RlKHYpLnBhcmVudDtcbiAgfSk7XG4gIHZhciB2cyA9IGFsZy5wcmVvcmRlcih0LCByb290KTtcbiAgdnMgPSB2cy5zbGljZSgxKTtcbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbiAodikge1xuICAgIHZhciBwYXJlbnQgPSB0Lm5vZGUodikucGFyZW50LFxuICAgICAgZWRnZSA9IGcuZWRnZSh2LCBwYXJlbnQpLFxuICAgICAgZmxpcHBlZCA9IGZhbHNlO1xuXG4gICAgaWYgKCFlZGdlKSB7XG4gICAgICBlZGdlID0gZy5lZGdlKHBhcmVudCwgdik7XG4gICAgICBmbGlwcGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGUodikucmFuayA9IGcubm9kZShwYXJlbnQpLnJhbmsgKyAoZmxpcHBlZCA/IGVkZ2UubWlubGVuIDogLWVkZ2UubWlubGVuKTtcbiAgfSk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVkZ2UgaXMgaW4gdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIGlzVHJlZUVkZ2UodHJlZSwgdSwgdikge1xuICByZXR1cm4gdHJlZS5oYXNFZGdlKHUsIHYpO1xufVxuXG4vKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbm9kZSBpcyBkZXNjZW5kYW50IG9mIHRoZSByb290IG5vZGUgcGVyIHRoZVxuICogYXNzaWduZWQgbG93IGFuZCBsaW0gYXR0cmlidXRlcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNEZXNjZW5kYW50KHRyZWUsIHZMYWJlbCwgcm9vdExhYmVsKSB7XG4gIHJldHVybiByb290TGFiZWwubG93IDw9IHZMYWJlbC5saW0gJiYgdkxhYmVsLmxpbSA8PSByb290TGFiZWwubGltO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/rank/util.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/rank/util.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"longestPath\": () => (/* binding */ longestPath),\n/* harmony export */ \"slack\": () => (/* binding */ slack)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/min.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n\n\n\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.outEdges(v), function (e) {\n return dfs(e.w) - g.edge(e).minlen;\n })\n );\n\n if (\n rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null\n ) {\n // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL3V0aWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQStCOztBQUVEOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBOztBQUVBLGVBQWUsaURBQUs7QUFDcEIsTUFBTSxpREFBSztBQUNYO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxFQUFFLGlEQUFTO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS9yYW5rL3V0aWwuanM/MDEyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IGxvbmdlc3RQYXRoLCBzbGFjayB9O1xuXG4vKlxuICogSW5pdGlhbGl6ZXMgcmFua3MgZm9yIHRoZSBpbnB1dCBncmFwaCB1c2luZyB0aGUgbG9uZ2VzdCBwYXRoIGFsZ29yaXRobS4gVGhpc1xuICogYWxnb3JpdGhtIHNjYWxlcyB3ZWxsIGFuZCBpcyBmYXN0IGluIHByYWN0aWNlLCBpdCB5aWVsZHMgcmF0aGVyIHBvb3JcbiAqIHNvbHV0aW9ucy4gTm9kZXMgYXJlIHB1c2hlZCB0byB0aGUgbG93ZXN0IGxheWVyIHBvc3NpYmxlLCBsZWF2aW5nIHRoZSBib3R0b21cbiAqIHJhbmtzIHdpZGUgYW5kIGxlYXZpbmcgZWRnZXMgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5LiBIb3dldmVyLCBkdWUgdG8gaXRzXG4gKiBzcGVlZCwgdGhpcyBhbGdvcml0aG0gaXMgZ29vZCBmb3IgZ2V0dGluZyBhbiBpbml0aWFsIHJhbmtpbmcgdGhhdCBjYW4gYmUgZmVkXG4gKiBpbnRvIG90aGVyIGFsZ29yaXRobXMuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gZG9lcyBub3Qgbm9ybWFsaXplIGxheWVycyBiZWNhdXNlIGl0IHdpbGwgYmUgdXNlZCBieSBvdGhlclxuICogYWxnb3JpdGhtcyBpbiBtb3N0IGNhc2VzLiBJZiB1c2luZyB0aGlzIGFsZ29yaXRobSBkaXJlY3RseSwgYmUgc3VyZSB0b1xuICogcnVuIG5vcm1hbGl6ZSBhdCB0aGUgZW5kLlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIGlzIGEgREFHLlxuICogICAgMi4gSW5wdXQgZ3JhcGggbm9kZSBsYWJlbHMgY2FuIGJlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEVhY2ggbm9kZSB3aWxsIGJlIGFzc2lnbiBhbiAodW5ub3JtYWxpemVkKSBcInJhbmtcIiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gbG9uZ2VzdFBhdGgoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgcmV0dXJuIGxhYmVsLnJhbms7XG4gICAgfVxuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgdmFyIHJhbmsgPSBfLm1pbihcbiAgICAgIF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBkZnMoZS53KSAtIGcuZWRnZShlKS5taW5sZW47XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICByYW5rID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDNcbiAgICAgIHJhbmsgPT09IHVuZGVmaW5lZCB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggNFxuICAgICAgcmFuayA9PT0gbnVsbFxuICAgICkge1xuICAgICAgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtudWxsXSlcbiAgICAgIHJhbmsgPSAwO1xuICAgIH1cblxuICAgIHJldHVybiAobGFiZWwucmFuayA9IHJhbmspO1xuICB9XG5cbiAgXy5mb3JFYWNoKGcuc291cmNlcygpLCBkZnMpO1xufVxuXG4vKlxuICogUmV0dXJucyB0aGUgYW1vdW50IG9mIHNsYWNrIGZvciB0aGUgZ2l2ZW4gZWRnZS4gVGhlIHNsYWNrIGlzIGRlZmluZWQgYXMgdGhlXG4gKiBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxlbmd0aCBvZiB0aGUgZWRnZSBhbmQgaXRzIG1pbmltdW0gbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzbGFjayhnLCBlKSB7XG4gIHJldHVybiBnLm5vZGUoZS53KS5yYW5rIC0gZy5ub2RlKGUudikucmFuayAtIGcuZWRnZShlKS5taW5sZW47XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/rank/util.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/dagre/util.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/dagre/util.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"addBorderNode\": () => (/* binding */ addBorderNode),\n/* harmony export */ \"addDummyNode\": () => (/* binding */ addDummyNode),\n/* harmony export */ \"asNonCompoundGraph\": () => (/* binding */ asNonCompoundGraph),\n/* harmony export */ \"buildLayerMatrix\": () => (/* binding */ buildLayerMatrix),\n/* harmony export */ \"intersectRect\": () => (/* binding */ intersectRect),\n/* harmony export */ \"maxRank\": () => (/* binding */ maxRank),\n/* harmony export */ \"normalizeRanks\": () => (/* binding */ normalizeRanks),\n/* harmony export */ \"notime\": () => (/* binding */ notime),\n/* harmony export */ \"partition\": () => (/* binding */ partition),\n/* harmony export */ \"predecessorWeights\": () => (/* binding */ predecessorWeights),\n/* harmony export */ \"removeEmptyRanks\": () => (/* binding */ removeEmptyRanks),\n/* harmony export */ \"simplify\": () => (/* binding */ simplify),\n/* harmony export */ \"successorWeights\": () => (/* binding */ successorWeights),\n/* harmony export */ \"time\": () => (/* binding */ time)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/uniqueId.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/zipObject.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/range.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/min.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/max.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/now.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n\n\n\n\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph().setGraph(g.graph());\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n simplified.setNode(v, g.node(v));\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.edges(), function (e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen),\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new _graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.edges(), function (e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n var sucs = {};\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.outEdges(v), function (e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n var preds = {};\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.inEdges(v), function (e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error('Not possible to find intersection inside of the rectangle');\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = (h * dx) / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = (w * dy) / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](maxRank(g) + 1), function () {\n return [];\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n return g.node(v).rank;\n })\n );\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n var node = g.node(v);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](node, 'rank')) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n return g.node(v).rank;\n })\n );\n\n var layers = [];\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](layers, function (vs, i) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](vs, function (v) {\n g.node(v).rank += delta;\n });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0,\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, 'border', node, prefix);\n}\n\nfunction maxRank(g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](\n lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n var rank = g.node(v).rank;\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](rank)) {\n return rank;\n }\n })\n );\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](collection, function (value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"]();\n try {\n return fn();\n } finally {\n console.log(name + ' time: ' + (lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"]() - start) + 'ms');\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS91dGlsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBK0I7QUFDYzs7QUFpQjNDOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsaURBQVU7QUFDbEIsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHFEQUFLO0FBQzVCLEVBQUUsaURBQVM7QUFDWDtBQUNBLEdBQUc7QUFDSCxFQUFFLGlEQUFTO0FBQ1gscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLHFEQUFLLEdBQUcsOEJBQThCO0FBQzdELEVBQUUsaURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSxpREFBUztBQUNYO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsaURBQUs7QUFDdkI7QUFDQSxJQUFJLGlEQUFTO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0gsU0FBUyxpREFBVztBQUNwQjs7QUFFQTtBQUNBLGtCQUFrQixpREFBSztBQUN2QjtBQUNBLElBQUksaURBQVM7QUFDYjtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxTQUFTLGlEQUFXO0FBQ3BCOztBQUVBO0FBQ0EsMENBQTBDLEtBQUs7QUFDL0MsS0FBSyxvQkFBb0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGlEQUFLLENBQUMsaURBQU87QUFDOUI7QUFDQSxHQUFHO0FBQ0gsRUFBRSxpREFBUztBQUNYO0FBQ0E7QUFDQSxTQUFTLGlEQUFhO0FBQ3RCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxpREFBSztBQUNqQixJQUFJLGlEQUFLO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsZUFBZSxpREFBSztBQUNwQixJQUFJLGlEQUFLO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEVBQUUsaURBQVM7QUFDWCxRQUFRLGlEQUFhO0FBQ3JCO0FBQ0EsTUFBTTtBQUNOLE1BQU0saURBQVM7QUFDZjtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpREFBSztBQUNkLElBQUksaURBQUs7QUFDVDtBQUNBLFdBQVcsaURBQWE7QUFDeEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixFQUFFLGlEQUFTO0FBQ1g7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsa0RBQUs7QUFDbkI7QUFDQTtBQUNBLElBQUk7QUFDSixvQ0FBb0Msa0RBQUs7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9kYWdyZS91dGlsLmpzPzZkYTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuLi9ncmFwaGxpYi9pbmRleC5qcyc7XG5cbmV4cG9ydCB7XG4gIGFkZER1bW15Tm9kZSxcbiAgc2ltcGxpZnksXG4gIGFzTm9uQ29tcG91bmRHcmFwaCxcbiAgc3VjY2Vzc29yV2VpZ2h0cyxcbiAgcHJlZGVjZXNzb3JXZWlnaHRzLFxuICBpbnRlcnNlY3RSZWN0LFxuICBidWlsZExheWVyTWF0cml4LFxuICBub3JtYWxpemVSYW5rcyxcbiAgcmVtb3ZlRW1wdHlSYW5rcyxcbiAgYWRkQm9yZGVyTm9kZSxcbiAgbWF4UmFuayxcbiAgcGFydGl0aW9uLFxuICB0aW1lLFxuICBub3RpbWUsXG59O1xuXG4vKlxuICogQWRkcyBhIGR1bW15IG5vZGUgdG8gdGhlIGdyYXBoIGFuZCByZXR1cm4gdi5cbiAqL1xuZnVuY3Rpb24gYWRkRHVtbXlOb2RlKGcsIHR5cGUsIGF0dHJzLCBuYW1lKSB7XG4gIHZhciB2O1xuICBkbyB7XG4gICAgdiA9IF8udW5pcXVlSWQobmFtZSk7XG4gIH0gd2hpbGUgKGcuaGFzTm9kZSh2KSk7XG5cbiAgYXR0cnMuZHVtbXkgPSB0eXBlO1xuICBnLnNldE5vZGUodiwgYXR0cnMpO1xuICByZXR1cm4gdjtcbn1cblxuLypcbiAqIFJldHVybnMgYSBuZXcgZ3JhcGggd2l0aCBvbmx5IHNpbXBsZSBlZGdlcy4gSGFuZGxlcyBhZ2dyZWdhdGlvbiBvZiBkYXRhXG4gKiBhc3NvY2lhdGVkIHdpdGggbXVsdGktZWRnZXMuXG4gKi9cbmZ1bmN0aW9uIHNpbXBsaWZ5KGcpIHtcbiAgdmFyIHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoKS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHNpbXBsaWZpZWQuc2V0Tm9kZSh2LCBnLm5vZGUodikpO1xuICB9KTtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24gKGUpIHtcbiAgICB2YXIgc2ltcGxlTGFiZWwgPSBzaW1wbGlmaWVkLmVkZ2UoZS52LCBlLncpIHx8IHsgd2VpZ2h0OiAwLCBtaW5sZW46IDEgfTtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUudiwgZS53LCB7XG4gICAgICB3ZWlnaHQ6IHNpbXBsZUxhYmVsLndlaWdodCArIGxhYmVsLndlaWdodCxcbiAgICAgIG1pbmxlbjogTWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLCBsYWJlbC5taW5sZW4pLFxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHNpbXBsaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIGFzTm9uQ29tcG91bmRHcmFwaChnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKHsgbXVsdGlncmFwaDogZy5pc011bHRpZ3JhcGgoKSB9KS5zZXRHcmFwaChnLmdyYXBoKCkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIGlmICghZy5jaGlsZHJlbih2KS5sZW5ndGgpIHtcbiAgICAgIHNpbXBsaWZpZWQuc2V0Tm9kZSh2LCBnLm5vZGUodikpO1xuICAgIH1cbiAgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uIChlKSB7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUsIGcuZWRnZShlKSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gc3VjY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIHN1Y3MgPSB7fTtcbiAgICBfLmZvckVhY2goZy5vdXRFZGdlcyh2KSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHN1Y3NbZS53XSA9IChzdWNzW2Uud10gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiBzdWNzO1xuICB9KTtcbiAgcmV0dXJuIF8uemlwT2JqZWN0KGcubm9kZXMoKSwgd2VpZ2h0TWFwKTtcbn1cblxuZnVuY3Rpb24gcHJlZGVjZXNzb3JXZWlnaHRzKGcpIHtcbiAgdmFyIHdlaWdodE1hcCA9IF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICB2YXIgcHJlZHMgPSB7fTtcbiAgICBfLmZvckVhY2goZy5pbkVkZ2VzKHYpLCBmdW5jdGlvbiAoZSkge1xuICAgICAgcHJlZHNbZS52XSA9IChwcmVkc1tlLnZdIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJlZHM7XG4gIH0pO1xuICByZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLCB3ZWlnaHRNYXApO1xufVxuXG4vKlxuICogRmluZHMgd2hlcmUgYSBsaW5lIHN0YXJ0aW5nIGF0IHBvaW50ICh7eCwgeX0pIHdvdWxkIGludGVyc2VjdCBhIHJlY3RhbmdsZVxuICogKHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSkgaWYgaXQgd2VyZSBwb2ludGluZyBhdCB0aGUgcmVjdGFuZ2xlJ3MgY2VudGVyLlxuICovXG5mdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHJlY3QsIHBvaW50KSB7XG4gIHZhciB4ID0gcmVjdC54O1xuICB2YXIgeSA9IHJlY3QueTtcblxuICAvLyBSZWN0YW5nbGUgaW50ZXJzZWN0aW9uIGFsZ29yaXRobSBmcm9tOlxuICAvLyBodHRwOi8vbWF0aC5zdGFja2V4Y2hhbmdlLmNvbS9xdWVzdGlvbnMvMTA4MTEzL2ZpbmQtZWRnZS1iZXR3ZWVuLXR3by1ib3hlc1xuICB2YXIgZHggPSBwb2ludC54IC0geDtcbiAgdmFyIGR5ID0gcG9pbnQueSAtIHk7XG4gIHZhciB3ID0gcmVjdC53aWR0aCAvIDI7XG4gIHZhciBoID0gcmVjdC5oZWlnaHQgLyAyO1xuXG4gIGlmICghZHggJiYgIWR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUnKTtcbiAgfVxuXG4gIHZhciBzeCwgc3k7XG4gIGlmIChNYXRoLmFicyhkeSkgKiB3ID4gTWF0aC5hYnMoZHgpICogaCkge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyB0b3Agb3IgYm90dG9tIG9mIHJlY3QuXG4gICAgaWYgKGR5IDwgMCkge1xuICAgICAgaCA9IC1oO1xuICAgIH1cbiAgICBzeCA9IChoICogZHgpIC8gZHk7XG4gICAgc3kgPSBoO1xuICB9IGVsc2Uge1xuICAgIC8vIEludGVyc2VjdGlvbiBpcyBsZWZ0IG9yIHJpZ2h0IG9mIHJlY3QuXG4gICAgaWYgKGR4IDwgMCkge1xuICAgICAgdyA9IC13O1xuICAgIH1cbiAgICBzeCA9IHc7XG4gICAgc3kgPSAodyAqIGR5KSAvIGR4O1xuICB9XG5cbiAgcmV0dXJuIHsgeDogeCArIHN4LCB5OiB5ICsgc3kgfTtcbn1cblxuLypcbiAqIEdpdmVuIGEgREFHIHdpdGggZWFjaCBub2RlIGFzc2lnbmVkIFwicmFua1wiIGFuZCBcIm9yZGVyXCIgcHJvcGVydGllcywgdGhpc1xuICogZnVuY3Rpb24gd2lsbCBwcm9kdWNlIGEgbWF0cml4IHdpdGggdGhlIGlkcyBvZiBlYWNoIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJNYXRyaXgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsoZykgKyAxKSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBbXTtcbiAgfSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIHJhbmsgPSBub2RlLnJhbms7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJhbmspKSB7XG4gICAgICBsYXllcmluZ1tyYW5rXVtub2RlLm9yZGVyXSA9IHY7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGxheWVyaW5nO1xufVxuXG4vKlxuICogQWRqdXN0cyB0aGUgcmFua3MgZm9yIGFsbCBub2RlcyBpbiB0aGUgZ3JhcGggc3VjaCB0aGF0IGFsbCBub2RlcyB2IGhhdmVcbiAqIHJhbmsodikgPj0gMCBhbmQgYXQgbGVhc3Qgb25lIG5vZGUgdyBoYXMgcmFuayh3KSA9IDAuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJhbmtzKGcpIHtcbiAgdmFyIG1pbiA9IF8ubWluKFxuICAgIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiBnLm5vZGUodikucmFuaztcbiAgICB9KVxuICApO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChfLmhhcyhub2RlLCAncmFuaycpKSB7XG4gICAgICBub2RlLnJhbmsgLT0gbWluO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUVtcHR5UmFua3MoZykge1xuICAvLyBSYW5rcyBtYXkgbm90IHN0YXJ0IGF0IDAsIHNvIHdlIG5lZWQgdG8gb2Zmc2V0IHRoZW1cbiAgdmFyIG9mZnNldCA9IF8ubWluKFxuICAgIF8ubWFwKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICAgIHJldHVybiBnLm5vZGUodikucmFuaztcbiAgICB9KVxuICApO1xuXG4gIHZhciBsYXllcnMgPSBbXTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24gKHYpIHtcbiAgICB2YXIgcmFuayA9IGcubm9kZSh2KS5yYW5rIC0gb2Zmc2V0O1xuICAgIGlmICghbGF5ZXJzW3JhbmtdKSB7XG4gICAgICBsYXllcnNbcmFua10gPSBbXTtcbiAgICB9XG4gICAgbGF5ZXJzW3JhbmtdLnB1c2godik7XG4gIH0pO1xuXG4gIHZhciBkZWx0YSA9IDA7XG4gIHZhciBub2RlUmFua0ZhY3RvciA9IGcuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvcjtcbiAgXy5mb3JFYWNoKGxheWVycywgZnVuY3Rpb24gKHZzLCBpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodnMpICYmIGkgJSBub2RlUmFua0ZhY3RvciAhPT0gMCkge1xuICAgICAgLS1kZWx0YTtcbiAgICB9IGVsc2UgaWYgKGRlbHRhKSB7XG4gICAgICBfLmZvckVhY2godnMsIGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIGcubm9kZSh2KS5yYW5rICs9IGRlbHRhO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLCBwcmVmaXgsIHJhbmssIG9yZGVyKSB7XG4gIHZhciBub2RlID0ge1xuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMCxcbiAgfTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkge1xuICAgIG5vZGUucmFuayA9IHJhbms7XG4gICAgbm9kZS5vcmRlciA9IG9yZGVyO1xuICB9XG4gIHJldHVybiBhZGREdW1teU5vZGUoZywgJ2JvcmRlcicsIG5vZGUsIHByZWZpeCk7XG59XG5cbmZ1bmN0aW9uIG1heFJhbmsoZykge1xuICByZXR1cm4gXy5tYXgoXG4gICAgXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuaztcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZChyYW5rKSkge1xuICAgICAgICByZXR1cm4gcmFuaztcbiAgICAgIH1cbiAgICB9KVxuICApO1xufVxuXG4vKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBpbnRvIHR3byBncm91cHM6IGBsaHNgIGFuZCBgcmhzYC4gSWYgdGhlIHN1cHBsaWVkXG4gKiBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIGFuIGVudHJ5IGl0IGdvZXMgaW50byBgbGhzYC4gT3RoZXJ3aXNlIGl0IGdvZXNcbiAqIGludG8gYHJocy5cbiAqL1xuZnVuY3Rpb24gcGFydGl0aW9uKGNvbGxlY3Rpb24sIGZuKSB7XG4gIHZhciByZXN1bHQgPSB7IGxoczogW10sIHJoczogW10gfTtcbiAgXy5mb3JFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChmbih2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdC5saHMucHVzaCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5yaHMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLypcbiAqIFJldHVybnMgYSBuZXcgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZm5gIHdpdGggYSB0aW1lci4gVGhlIHdyYXBwZXIgbG9ncyB0aGVcbiAqIHRpbWUgaXQgdGFrZXMgdG8gZXhlY3V0ZSB0aGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRpbWUobmFtZSwgZm4pIHtcbiAgdmFyIHN0YXJ0ID0gXy5ub3coKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjb25zb2xlLmxvZyhuYW1lICsgJyB0aW1lOiAnICsgKF8ubm93KCkgLSBzdGFydCkgKyAnbXMnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBub3RpbWUobmFtZSwgZm4pIHtcbiAgcmV0dXJuIGZuKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/dagre/util.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/components.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/components.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"components\": () => (/* binding */ components)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n\n\n\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.successors(v), dfs);\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.predecessors(v), dfs);\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.nodes(), function (v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvY29tcG9uZW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBK0I7O0FBRVQ7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQSxJQUFJLGlEQUFNO0FBQ1YsSUFBSSxpREFBTTtBQUNWOztBQUVBLEVBQUUsaURBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvYWxnL2NvbXBvbmVudHMuanM/MGM0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB7IGNvbXBvbmVudHMgfTtcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBjbXB0cyA9IFtdO1xuICB2YXIgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgY21wdCA9IFtdO1xuICAgIGRmcyh2KTtcbiAgICBpZiAoY21wdC5sZW5ndGgpIHtcbiAgICAgIGNtcHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY21wdHM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/components.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dfs\": () => (/* binding */ dfs)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n\n\n\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](vs, function (v) {\n if (!g.hasNode(v)) {\n throw new Error('Graph does not have node: ' + v);\n }\n\n doDfs(g, v, order === 'post', visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](visited, v)) {\n visited[v] = true;\n\n if (!postorder) {\n acc.push(v);\n }\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](navigation(v), function (w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) {\n acc.push(v);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZGZzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7O0FBRWhCOztBQUVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8saURBQVM7QUFDaEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRSxpREFBTTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsT0FBTyxpREFBSztBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksaURBQU07QUFDVjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvYWxnL2Rmcy5qcz85MDc5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHsgZGZzIH07XG5cbi8qXG4gKiBBIGhlbHBlciB0aGF0IHByZWZvcm1zIGEgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCByZXR1cm5zIHRoZSBub2RlcyBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHZpc2l0ZWQuIElmIHRoZSBncmFwaCBpc1xuICogdW5kaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgbmVpZ2hib3JzLiBJZiB0aGUgZ3JhcGhcbiAqIGlzIGRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBzdWNjZXNzb3JzLlxuICpcbiAqIE9yZGVyIG11c3QgYmUgb25lIG9mIFwicHJlXCIgb3IgXCJwb3N0XCIuXG4gKi9cbmZ1bmN0aW9uIGRmcyhnLCB2cywgb3JkZXIpIHtcbiAgaWYgKCFfLmlzQXJyYXkodnMpKSB7XG4gICAgdnMgPSBbdnNdO1xuICB9XG5cbiAgdmFyIG5hdmlnYXRpb24gPSAoZy5pc0RpcmVjdGVkKCkgPyBnLnN1Y2Nlc3NvcnMgOiBnLm5laWdoYm9ycykuYmluZChnKTtcblxuICB2YXIgYWNjID0gW107XG4gIHZhciB2aXNpdGVkID0ge307XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24gKHYpIHtcbiAgICBpZiAoIWcuaGFzTm9kZSh2KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICcgKyB2KTtcbiAgICB9XG5cbiAgICBkb0RmcyhnLCB2LCBvcmRlciA9PT0gJ3Bvc3QnLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICB9KTtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gZG9EZnMoZywgdiwgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpIHtcbiAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgaWYgKCFwb3N0b3JkZXIpIHtcbiAgICAgIGFjYy5wdXNoKHYpO1xuICAgIH1cbiAgICBfLmVhY2gobmF2aWdhdGlvbih2KSwgZnVuY3Rpb24gKHcpIHtcbiAgICAgIGRvRGZzKGcsIHcsIHBvc3RvcmRlciwgdmlzaXRlZCwgbmF2aWdhdGlvbiwgYWNjKTtcbiAgICB9KTtcbiAgICBpZiAocG9zdG9yZGVyKSB7XG4gICAgICBhY2MucHVzaCh2KTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dijkstraAll\": () => (/* binding */ dijkstraAll)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/transform.js\");\n/* harmony import */ var _dijkstra_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dijkstra.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js\");\n\n\n\n\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n g.nodes(),\n function (acc, v) {\n acc[v] = (0,_dijkstra_js__WEBPACK_IMPORTED_MODULE_0__.dijkstra)(g, v, weightFunc, edgeFunc);\n },\n {}\n );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZGlqa3N0cmEtYWxsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjtBQUNVOztBQUVsQjs7QUFFdkI7QUFDQSxTQUFTLGlEQUFXO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLHNEQUFRO0FBQ3ZCLEtBQUs7QUFDTDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZGlqa3N0cmEtYWxsLmpzPzliMzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGlqa3N0cmEgfSBmcm9tICcuL2RpamtzdHJhLmpzJztcblxuZXhwb3J0IHsgZGlqa3N0cmFBbGwgfTtcblxuZnVuY3Rpb24gZGlqa3N0cmFBbGwoZywgd2VpZ2h0RnVuYywgZWRnZUZ1bmMpIHtcbiAgcmV0dXJuIF8udHJhbnNmb3JtKFxuICAgIGcubm9kZXMoKSxcbiAgICBmdW5jdGlvbiAoYWNjLCB2KSB7XG4gICAgICBhY2Nbdl0gPSBkaWprc3RyYShnLCB2LCB3ZWlnaHRGdW5jLCBlZGdlRnVuYyk7XG4gICAgfSxcbiAgICB7fVxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dijkstra\": () => (/* binding */ dijkstra)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/constant.js\");\n/* harmony import */ var _data_priority_queue_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/priority-queue.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/data/priority-queue.js\");\n\n\n\n\n\nvar DEFAULT_WEIGHT_FUNC = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(\n g,\n String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n }\n );\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new _data_priority_queue_js__WEBPACK_IMPORTED_MODULE_0__.PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function (edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\n 'dijkstra does not allow negative edge weights. ' +\n 'Bad edge: ' +\n edge +\n ' Weight: ' +\n weight\n );\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function (v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZGlqa3N0cmEuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStCO0FBQzJCOztBQUV0Qzs7QUFFcEIsMEJBQTBCLGlEQUFVOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGtFQUFhO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvYWxnL2RpamtzdHJhLmpzPzRiNjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgUHJpb3JpdHlRdWV1ZSB9IGZyb20gJy4uL2RhdGEvcHJpb3JpdHktcXVldWUuanMnO1xuXG5leHBvcnQgeyBkaWprc3RyYSB9O1xuXG52YXIgREVGQVVMVF9XRUlHSFRfRlVOQyA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGRpamtzdHJhKGcsIHNvdXJjZSwgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICByZXR1cm4gcnVuRGlqa3N0cmEoXG4gICAgZyxcbiAgICBTdHJpbmcoc291cmNlKSxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fFxuICAgICAgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIGcub3V0RWRnZXModik7XG4gICAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHJ1bkRpamtzdHJhKGcsIHNvdXJjZSwgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICB2YXIgcmVzdWx0cyA9IHt9O1xuICB2YXIgcHEgPSBuZXcgUHJpb3JpdHlRdWV1ZSgpO1xuICB2YXIgdiwgdkVudHJ5O1xuXG4gIHZhciB1cGRhdGVOZWlnaGJvcnMgPSBmdW5jdGlvbiAoZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ICE9PSB2ID8gZWRnZS52IDogZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSByZXN1bHRzW3ddO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTtcbiAgICB2YXIgZGlzdGFuY2UgPSB2RW50cnkuZGlzdGFuY2UgKyB3ZWlnaHQ7XG5cbiAgICBpZiAod2VpZ2h0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiAnICtcbiAgICAgICAgICAnQmFkIGVkZ2U6ICcgK1xuICAgICAgICAgIGVkZ2UgK1xuICAgICAgICAgICcgV2VpZ2h0OiAnICtcbiAgICAgICAgICB3ZWlnaHRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3RhbmNlIDwgd0VudHJ5LmRpc3RhbmNlKSB7XG4gICAgICB3RW50cnkuZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIHdFbnRyeS5wcmVkZWNlc3NvciA9IHY7XG4gICAgICBwcS5kZWNyZWFzZSh3LCBkaXN0YW5jZSk7XG4gICAgfVxuICB9O1xuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIGRpc3RhbmNlID0gdiA9PT0gc291cmNlID8gMCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICByZXN1bHRzW3ZdID0geyBkaXN0YW5jZTogZGlzdGFuY2UgfTtcbiAgICBwcS5hZGQodiwgZGlzdGFuY2UpO1xuICB9KTtcblxuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICB2RW50cnkgPSByZXN1bHRzW3ZdO1xuICAgIGlmICh2RW50cnkuZGlzdGFuY2UgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZWRnZUZuKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/find-cycles.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/find-cycles.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"findCycles\": () => (/* binding */ findCycles)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var _tarjan_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tarjan.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/tarjan.js\");\n\n\n\n\n\nfunction findCycles(g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"]((0,_tarjan_js__WEBPACK_IMPORTED_MODULE_0__.tarjan)(g), function (cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZmluZC1jeWNsZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStCO0FBQ007O0FBRWY7O0FBRXRCO0FBQ0EsU0FBUyxpREFBUSxDQUFDLGtEQUFNO0FBQ3hCO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvYWxnL2ZpbmQtY3ljbGVzLmpzPzQxNGIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgdGFyamFuIH0gZnJvbSAnLi90YXJqYW4uanMnO1xuXG5leHBvcnQgeyBmaW5kQ3ljbGVzIH07XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbiAoY21wdCkge1xuICAgIHJldHVybiBjbXB0Lmxlbmd0aCA+IDEgfHwgKGNtcHQubGVuZ3RoID09PSAxICYmIGcuaGFzRWRnZShjbXB0WzBdLCBjbXB0WzBdKSk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/find-cycles.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"floydWarshall\": () => (/* binding */ floydWarshall)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/constant.js\");\n\n\n\n\nvar DEFAULT_WEIGHT_FUNC = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(\n g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn ||\n function (v) {\n return g.outEdges(v);\n }\n );\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function (v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function (w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function (edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function (k) {\n var rowK = results[k];\n nodes.forEach(function (i) {\n var rowI = results[i];\n nodes.forEach(function (j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRU47O0FBRXpCLDBCQUEwQixpREFBVTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2FsZy9mbG95ZC13YXJzaGFsbC5qcz9lNjNlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHsgZmxveWRXYXJzaGFsbCB9O1xuXG52YXIgREVGQVVMVF9XRUlHSFRfRlVOQyA9IF8uY29uc3RhbnQoMSk7XG5cbmZ1bmN0aW9uIGZsb3lkV2Fyc2hhbGwoZywgd2VpZ2h0Rm4sIGVkZ2VGbikge1xuICByZXR1cm4gcnVuRmxveWRXYXJzaGFsbChcbiAgICBnLFxuICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgZWRnZUZuIHx8XG4gICAgICBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gZy5vdXRFZGdlcyh2KTtcbiAgICAgIH1cbiAgKTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgcmVzdWx0c1t2XSA9IHt9O1xuICAgIHJlc3VsdHNbdl1bdl0gPSB7IGRpc3RhbmNlOiAwIH07XG4gICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAodykge1xuICAgICAgaWYgKHYgIT09IHcpIHtcbiAgICAgICAgcmVzdWx0c1t2XVt3XSA9IHsgZGlzdGFuY2U6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVkZ2VGbih2KS5mb3JFYWNoKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudjtcbiAgICAgIHZhciBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgIHZhciByb3dLID0gcmVzdWx0c1trXTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgICB2YXIgcm93SSA9IHJlc3VsdHNbaV07XG4gICAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"components\": () => (/* reexport safe */ _components_js__WEBPACK_IMPORTED_MODULE_0__.components),\n/* harmony export */ \"dijkstra\": () => (/* reexport safe */ _dijkstra_js__WEBPACK_IMPORTED_MODULE_1__.dijkstra),\n/* harmony export */ \"dijkstraAll\": () => (/* reexport safe */ _dijkstra_all_js__WEBPACK_IMPORTED_MODULE_2__.dijkstraAll),\n/* harmony export */ \"findCycles\": () => (/* reexport safe */ _find_cycles_js__WEBPACK_IMPORTED_MODULE_3__.findCycles),\n/* harmony export */ \"floydWarshall\": () => (/* reexport safe */ _floyd_warshall_js__WEBPACK_IMPORTED_MODULE_4__.floydWarshall),\n/* harmony export */ \"isAcyclic\": () => (/* reexport safe */ _is_acyclic_js__WEBPACK_IMPORTED_MODULE_5__.isAcyclic),\n/* harmony export */ \"postorder\": () => (/* reexport safe */ _postorder_js__WEBPACK_IMPORTED_MODULE_6__.postorder),\n/* harmony export */ \"preorder\": () => (/* reexport safe */ _preorder_js__WEBPACK_IMPORTED_MODULE_7__.preorder),\n/* harmony export */ \"prim\": () => (/* reexport safe */ _prim_js__WEBPACK_IMPORTED_MODULE_8__.prim),\n/* harmony export */ \"tarjan\": () => (/* reexport safe */ _tarjan_js__WEBPACK_IMPORTED_MODULE_9__.tarjan),\n/* harmony export */ \"topsort\": () => (/* reexport safe */ _topsort_js__WEBPACK_IMPORTED_MODULE_10__.topsort)\n/* harmony export */ });\n/* harmony import */ var _components_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/components.js\");\n/* harmony import */ var _dijkstra_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dijkstra.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js\");\n/* harmony import */ var _dijkstra_all_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dijkstra-all.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js\");\n/* harmony import */ var _find_cycles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./find-cycles.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/find-cycles.js\");\n/* harmony import */ var _floyd_warshall_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./floyd-warshall.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js\");\n/* harmony import */ var _is_acyclic_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./is-acyclic.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js\");\n/* harmony import */ var _postorder_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./postorder.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js\");\n/* harmony import */ var _preorder_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./preorder.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js\");\n/* harmony import */ var _prim_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./prim.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/prim.js\");\n/* harmony import */ var _tarjan_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tarjan.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/tarjan.js\");\n/* harmony import */ var _topsort_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./topsort.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE2QztBQUNKO0FBQ087QUFDRjtBQUNNO0FBQ1I7QUFDRDtBQUNGO0FBQ1I7QUFDSTtBQUNFOztBQWNyQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2FsZy9pbmRleC5qcz8xMzViIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tICcuL2NvbXBvbmVudHMuanMnO1xuaW1wb3J0IHsgZGlqa3N0cmEgfSBmcm9tICcuL2RpamtzdHJhLmpzJztcbmltcG9ydCB7IGRpamtzdHJhQWxsIH0gZnJvbSAnLi9kaWprc3RyYS1hbGwuanMnO1xuaW1wb3J0IHsgZmluZEN5Y2xlcyB9IGZyb20gJy4vZmluZC1jeWNsZXMuanMnO1xuaW1wb3J0IHsgZmxveWRXYXJzaGFsbCB9IGZyb20gJy4vZmxveWQtd2Fyc2hhbGwuanMnO1xuaW1wb3J0IHsgaXNBY3ljbGljIH0gZnJvbSAnLi9pcy1hY3ljbGljLmpzJztcbmltcG9ydCB7IHBvc3RvcmRlciB9IGZyb20gJy4vcG9zdG9yZGVyLmpzJztcbmltcG9ydCB7IHByZW9yZGVyIH0gZnJvbSAnLi9wcmVvcmRlci5qcyc7XG5pbXBvcnQgeyBwcmltIH0gZnJvbSAnLi9wcmltLmpzJztcbmltcG9ydCB7IHRhcmphbiB9IGZyb20gJy4vdGFyamFuLmpzJztcbmltcG9ydCB7IHRvcHNvcnQgfSBmcm9tICcuL3RvcHNvcnQuanMnO1xuXG5leHBvcnQge1xuICBjb21wb25lbnRzLFxuICBkaWprc3RyYSxcbiAgZGlqa3N0cmFBbGwsXG4gIGZpbmRDeWNsZXMsXG4gIGZsb3lkV2Fyc2hhbGwsXG4gIGlzQWN5Y2xpYyxcbiAgcG9zdG9yZGVyLFxuICBwcmVvcmRlcixcbiAgcHJpbSxcbiAgdGFyamFuLFxuICB0b3Bzb3J0LFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"isAcyclic\": () => (/* binding */ isAcyclic)\n/* harmony export */ });\n/* harmony import */ var _topsort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./topsort.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js\");\n\n\n\n\nfunction isAcyclic(g) {\n try {\n (0,_topsort_js__WEBPACK_IMPORTED_MODULE_0__.topsort)(g);\n } catch (e) {\n if (e instanceof _topsort_js__WEBPACK_IMPORTED_MODULE_0__.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvaXMtYWN5Y2xpYy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1RDs7QUFFbEM7O0FBRXJCO0FBQ0E7QUFDQSxJQUFJLG9EQUFPO0FBQ1gsSUFBSTtBQUNKLHFCQUFxQix1REFBYztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvaXMtYWN5Y2xpYy5qcz9lZTY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvcHNvcnQsIEN5Y2xlRXhjZXB0aW9uIH0gZnJvbSAnLi90b3Bzb3J0LmpzJztcblxuZXhwb3J0IHsgaXNBY3ljbGljIH07XG5cbmZ1bmN0aW9uIGlzQWN5Y2xpYyhnKSB7XG4gIHRyeSB7XG4gICAgdG9wc29ydChnKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlIGluc3RhbmNlb2YgQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"postorder\": () => (/* binding */ postorder)\n/* harmony export */ });\n/* harmony import */ var _dfs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js\");\n\n\n\n\nfunction postorder(g, vs) {\n return (0,_dfs_js__WEBPACK_IMPORTED_MODULE_0__.dfs)(g, vs, 'post');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvcG9zdG9yZGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStCOztBQUVWOztBQUVyQjtBQUNBLFNBQVMsNENBQUc7QUFDWiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2FsZy9wb3N0b3JkZXIuanM/OTFkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZnMgfSBmcm9tICcuL2Rmcy5qcyc7XG5cbmV4cG9ydCB7IHBvc3RvcmRlciB9O1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgJ3Bvc3QnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/postorder.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"preorder\": () => (/* binding */ preorder)\n/* harmony export */ });\n/* harmony import */ var _dfs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dfs.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/alg/dfs.js\");\n\n\n\n\nfunction preorder(g, vs) {\n return (0,_dfs_js__WEBPACK_IMPORTED_MODULE_0__.dfs)(g, vs, 'pre');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvcHJlb3JkZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0I7O0FBRVg7O0FBRXBCO0FBQ0EsU0FBUyw0Q0FBRztBQUNaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvYWxnL3ByZW9yZGVyLmpzP2M4M2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGZzIH0gZnJvbSAnLi9kZnMuanMnO1xuXG5leHBvcnQgeyBwcmVvcmRlciB9O1xuXG5mdW5jdGlvbiBwcmVvcmRlcihnLCB2cykge1xuICByZXR1cm4gZGZzKGcsIHZzLCAncHJlJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/preorder.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/prim.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/prim.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"prim\": () => (/* binding */ prim)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var _data_priority_queue_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/priority-queue.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/data/priority-queue.js\");\n/* harmony import */ var _graph_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../graph.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/graph.js\");\n\n\n\n\n\n\nfunction prim(g, weightFunc) {\n var result = new _graph_js__WEBPACK_IMPORTED_MODULE_1__.Graph();\n var parents = {};\n var pq = new _data_priority_queue_js__WEBPACK_IMPORTED_MODULE_0__.PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.nodes(), function (v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error('Input graph is not connected: ' + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvcHJpbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErQjtBQUMyQjtBQUN0Qjs7QUFFcEI7O0FBRWhCO0FBQ0EsbUJBQW1CLDRDQUFLO0FBQ3hCO0FBQ0EsZUFBZSxrRUFBYTtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLGlEQUFNO0FBQ1I7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvcHJpbS5qcz8yNjlhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFByaW9yaXR5UXVldWUgfSBmcm9tICcuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzJztcbmltcG9ydCB7IEdyYXBoIH0gZnJvbSAnLi4vZ3JhcGguanMnO1xuXG5leHBvcnQgeyBwcmltIH07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCk7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgdmFyIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgcHEuYWRkKHYsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgcmVzdWx0LnNldE5vZGUodik7XG4gIH0pO1xuXG4gIC8vIFN0YXJ0IGZyb20gYW4gYXJiaXRyYXJ5IG5vZGVcbiAgcHEuZGVjcmVhc2UoZy5ub2RlcygpWzBdLCAwKTtcblxuICB2YXIgaW5pdCA9IGZhbHNlO1xuICB3aGlsZSAocHEuc2l6ZSgpID4gMCkge1xuICAgIHYgPSBwcS5yZW1vdmVNaW4oKTtcbiAgICBpZiAoXy5oYXMocGFyZW50cywgdikpIHtcbiAgICAgIHJlc3VsdC5zZXRFZGdlKHYsIHBhcmVudHNbdl0pO1xuICAgIH0gZWxzZSBpZiAoaW5pdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiAnICsgZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluaXQgPSB0cnVlO1xuICAgIH1cblxuICAgIGcubm9kZUVkZ2VzKHYpLmZvckVhY2godXBkYXRlTmVpZ2hib3JzKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/prim.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/tarjan.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/tarjan.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"tarjan\": () => (/* binding */ tarjan)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n\n\n\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = (visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++,\n });\n stack.push(v);\n\n g.successors(v).forEach(function (w) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function (v) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvdGFyamFuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStCOztBQUViOztBQUVsQjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxXQUFXLGlEQUFLO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvdGFyamFuLmpzPzY4MzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgeyB0YXJqYW4gfTtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSAodmlzaXRlZFt2XSA9IHtcbiAgICAgIG9uU3RhY2s6IHRydWUsXG4gICAgICBsb3dsaW5rOiBpbmRleCxcbiAgICAgIGluZGV4OiBpbmRleCsrLFxuICAgIH0pO1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbiAodykge1xuICAgICAgaWYgKCFfLmhhcyh2aXNpdGVkLCB3KSkge1xuICAgICAgICBkZnModyk7XG4gICAgICAgIGVudHJ5Lmxvd2xpbmsgPSBNYXRoLm1pbihlbnRyeS5sb3dsaW5rLCB2aXNpdGVkW3ddLmxvd2xpbmspO1xuICAgICAgfSBlbHNlIGlmICh2aXNpdGVkW3ddLm9uU3RhY2spIHtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10uaW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGVudHJ5Lmxvd2xpbmsgPT09IGVudHJ5LmluZGV4KSB7XG4gICAgICB2YXIgY21wdCA9IFtdO1xuICAgICAgdmFyIHc7XG4gICAgICBkbyB7XG4gICAgICAgIHcgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgdmlzaXRlZFt3XS5vblN0YWNrID0gZmFsc2U7XG4gICAgICAgIGNtcHQucHVzaCh3KTtcbiAgICAgIH0gd2hpbGUgKHYgIT09IHcpO1xuICAgICAgcmVzdWx0cy5wdXNoKGNtcHQpO1xuICAgIH1cbiAgfVxuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgICAgZGZzKHYpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/tarjan.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CycleException\": () => (/* binding */ CycleException),\n/* harmony export */ \"topsort\": () => (/* binding */ topsort)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/size.js\");\n\n\n\n\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](stack, node)) {\n throw new CycleException();\n }\n\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](visited, node)) {\n stack[node] = true;\n visited[node] = true;\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.sinks(), visit);\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvdG9wc29ydC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErQjs7QUFFSTs7QUFFbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTs7QUFFQSxTQUFTLGlEQUFLO0FBQ2Q7QUFDQTtBQUNBLE1BQU0saURBQU07QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLGlEQUFNOztBQUVSLE1BQU0saURBQU07QUFDWjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9hbGcvdG9wc29ydC5qcz82MGU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IHsgdG9wc29ydCwgQ3ljbGVFeGNlcHRpb24gfTtcblxudG9wc29ydC5DeWNsZUV4Y2VwdGlvbiA9IEN5Y2xlRXhjZXB0aW9uO1xuXG5mdW5jdGlvbiB0b3Bzb3J0KGcpIHtcbiAgdmFyIHZpc2l0ZWQgPSB7fTtcbiAgdmFyIHN0YWNrID0ge307XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gdmlzaXQobm9kZSkge1xuICAgIGlmIChfLmhhcyhzdGFjaywgbm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghXy5oYXModmlzaXRlZCwgbm9kZSkpIHtcbiAgICAgIHN0YWNrW25vZGVdID0gdHJ1ZTtcbiAgICAgIHZpc2l0ZWRbbm9kZV0gPSB0cnVlO1xuICAgICAgXy5lYWNoKGcucHJlZGVjZXNzb3JzKG5vZGUpLCB2aXNpdCk7XG4gICAgICBkZWxldGUgc3RhY2tbbm9kZV07XG4gICAgICByZXN1bHRzLnB1c2gobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgXy5lYWNoKGcuc2lua3MoKSwgdmlzaXQpO1xuXG4gIGlmIChfLnNpemUodmlzaXRlZCkgIT09IGcubm9kZUNvdW50KCkpIHtcbiAgICB0aHJvdyBuZXcgQ3ljbGVFeGNlcHRpb24oKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBDeWNsZUV4Y2VwdGlvbigpIHt9XG5DeWNsZUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTsgLy8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBFcnJvciB0byBwYXNzIHRlc3RpbmdcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/alg/topsort.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/data/priority-queue.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/data/priority-queue.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PriorityQueue\": () => (/* binding */ PriorityQueue)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n\n\n\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nclass PriorityQueue {\n constructor() {\n this._arr = [];\n this._keyIndices = {};\n }\n /**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\n size() {\n return this._arr.length;\n }\n /**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\n keys() {\n return this._arr.map(function (x) {\n return x.key;\n });\n }\n /**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\n has(key) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._keyIndices, key);\n }\n /**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\n priority(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n }\n /**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\n min() {\n if (this.size() === 0) {\n throw new Error('Queue underflow');\n }\n return this._arr[0].key;\n }\n /**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\n add(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({ key: key, priority: priority });\n this._decrease(index);\n return true;\n }\n return false;\n }\n /**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\n removeMin() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n }\n /**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\n decrease(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\n 'New priority is greater than current priority. ' +\n 'Key: ' +\n key +\n ' Old: ' +\n this._arr[index].priority +\n ' New: ' +\n priority\n );\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n }\n _heapify(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n }\n _decrease(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n }\n _swap(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQStCOztBQUVOOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaURBQUs7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaURBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOEJBQThCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzPzllNzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgeyBQcmlvcml0eVF1ZXVlIH07XG5cbi8qKlxuICogQSBtaW4tcHJpb3JpdHkgcXVldWUgZGF0YSBzdHJ1Y3R1cmUuIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBDb3JtZW4sXG4gKiBldCBhbC4sIFwiSW50cm9kdWN0aW9uIHRvIEFsZ29yaXRobXNcIi4gVGhlIGJhc2ljIGlkZWEgb2YgYSBtaW4tcHJpb3JpdHlcbiAqIHF1ZXVlIGlzIHRoYXQgeW91IGNhbiBlZmZpY2llbnRseSAoaW4gTygxKSB0aW1lKSBnZXQgdGhlIHNtYWxsZXN0IGtleSBpblxuICogdGhlIHF1ZXVlLiBBZGRpbmcgYW5kIHJlbW92aW5nIGVsZW1lbnRzIHRha2VzIE8obG9nIG4pIHRpbWUuIEEga2V5IGNhblxuICogaGF2ZSBpdHMgcHJpb3JpdHkgZGVjcmVhc2VkIGluIE8obG9nIG4pIHRpbWUuXG4gKi9cbmNsYXNzIFByaW9yaXR5UXVldWUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9hcnIgPSBbXTtcbiAgICB0aGlzLl9rZXlJbmRpY2VzID0ge307XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICAgKi9cbiAgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyLmxlbmd0aDtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcXVldWUuIFRha2VzIGBPKG4pYCB0aW1lLlxuICAgKi9cbiAga2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyLm1hcChmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHgua2V5O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gICAqL1xuICBoYXMoa2V5KSB7XG4gICAgcmV0dXJuIF8uaGFzKHRoaXMuX2tleUluZGljZXMsIGtleSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByaW9yaXR5IGZvciAqKmtleSoqLiBJZiAqKmtleSoqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBxdWV1ZVxuICAgKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBrZXlcbiAgICovXG4gIHByaW9yaXR5KGtleSkge1xuICAgIHZhciBpbmRleCA9IHRoaXMuX2tleUluZGljZXNba2V5XTtcbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBrZXkgZm9yIHRoZSBtaW5pbXVtIGVsZW1lbnQgaW4gdGhpcyBxdWV1ZS4gSWYgdGhlIHF1ZXVlIGlzXG4gICAqIGVtcHR5IHRoaXMgZnVuY3Rpb24gdGhyb3dzIGFuIEVycm9yLiBUYWtlcyBgTygxKWAgdGltZS5cbiAgICovXG4gIG1pbigpIHtcbiAgICBpZiAodGhpcy5zaXplKCkgPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUXVldWUgdW5kZXJmbG93Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xuICB9XG4gIC8qKlxuICAgKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICAgKiB0aGUgcXVldWUgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWA7IG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBgdHJ1ZWAuXG4gICAqIFRha2VzIGBPKG4pYCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgdG8gYWRkXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgaW5pdGlhbCBwcmlvcml0eSBmb3IgdGhlIGtleVxuICAgKi9cbiAgYWRkKGtleSwgcHJpb3JpdHkpIHtcbiAgICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gICAga2V5ID0gU3RyaW5nKGtleSk7XG4gICAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICAgICAgdmFyIGluZGV4ID0gYXJyLmxlbmd0aDtcbiAgICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgICAgYXJyLnB1c2goeyBrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5IH0pO1xuICAgICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKipcbiAgICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICAgKi9cbiAgcmVtb3ZlTWluKCkge1xuICAgIHRoaXMuX3N3YXAoMCwgdGhpcy5fYXJyLmxlbmd0aCAtIDEpO1xuICAgIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gICAgZGVsZXRlIHRoaXMuX2tleUluZGljZXNbbWluLmtleV07XG4gICAgdGhpcy5faGVhcGlmeSgwKTtcbiAgICByZXR1cm4gbWluLmtleTtcbiAgfVxuICAvKipcbiAgICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAgICogZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBwcmlvcml0eSwgdGhpcyBmdW5jdGlvbiB3aWxsIHRocm93IGFuIEVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBwcmlvcml0eSB0aGUgbmV3IHByaW9yaXR5IGZvciB0aGUga2V5XG4gICAqL1xuICBkZWNyZWFzZShrZXksIHByaW9yaXR5KSB7XG4gICAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICAgIGlmIChwcmlvcml0eSA+IHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ05ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gJyArXG4gICAgICAgICAgJ0tleTogJyArXG4gICAgICAgICAga2V5ICtcbiAgICAgICAgICAnIE9sZDogJyArXG4gICAgICAgICAgdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSArXG4gICAgICAgICAgJyBOZXc6ICcgK1xuICAgICAgICAgIHByaW9yaXR5XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICB9XG4gIF9oZWFwaWZ5KGkpIHtcbiAgICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICAgIHZhciBsID0gMiAqIGk7XG4gICAgdmFyIHIgPSBsICsgMTtcbiAgICB2YXIgbGFyZ2VzdCA9IGk7XG4gICAgaWYgKGwgPCBhcnIubGVuZ3RoKSB7XG4gICAgICBsYXJnZXN0ID0gYXJyW2xdLnByaW9yaXR5IDwgYXJyW2xhcmdlc3RdLnByaW9yaXR5ID8gbCA6IGxhcmdlc3Q7XG4gICAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgICAgbGFyZ2VzdCA9IGFycltyXS5wcmlvcml0eSA8IGFycltsYXJnZXN0XS5wcmlvcml0eSA/IHIgOiBsYXJnZXN0O1xuICAgICAgfVxuICAgICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgICAgdGhpcy5fc3dhcChpLCBsYXJnZXN0KTtcbiAgICAgICAgdGhpcy5faGVhcGlmeShsYXJnZXN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgX2RlY3JlYXNlKGluZGV4KSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgcHJpb3JpdHkgPSBhcnJbaW5kZXhdLnByaW9yaXR5O1xuICAgIHZhciBwYXJlbnQ7XG4gICAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgICBwYXJlbnQgPSBpbmRleCA+PiAxO1xuICAgICAgaWYgKGFycltwYXJlbnRdLnByaW9yaXR5IDwgcHJpb3JpdHkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLl9zd2FwKGluZGV4LCBwYXJlbnQpO1xuICAgICAgaW5kZXggPSBwYXJlbnQ7XG4gICAgfVxuICB9XG4gIF9zd2FwKGksIGopIHtcbiAgICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICAgIHZhciBrZXlJbmRpY2VzID0gdGhpcy5fa2V5SW5kaWNlcztcbiAgICB2YXIgb3JpZ0FyckkgPSBhcnJbaV07XG4gICAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICAgIGFycltpXSA9IG9yaWdBcnJKO1xuICAgIGFycltqXSA9IG9yaWdBcnJJO1xuICAgIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gICAga2V5SW5kaWNlc1tvcmlnQXJySS5rZXldID0gajtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/data/priority-queue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/graph.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/graph.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Graph\": () => (/* binding */ Graph)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/has.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/constant.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isFunction.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/keys.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/filter.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isEmpty.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/union.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/values.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/reduce.js\");\n\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\nclass Graph {\n constructor(opts = {}) {\n this._isDirected = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](opts, 'directed') ? opts.directed : true;\n this._isMultigraph = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](opts, 'multigraph') ? opts.multigraph : false;\n this._isCompound = lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](opts, 'compound') ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n }\n /* === Graph functions ========= */\n isDirected() {\n return this._isDirected;\n }\n isMultigraph() {\n return this._isMultigraph;\n }\n isCompound() {\n return this._isCompound;\n }\n setGraph(label) {\n this._label = label;\n return this;\n }\n graph() {\n return this._label;\n }\n /* === Node functions ========== */\n setDefaultNodeLabel(newDefault) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](newDefault)) {\n newDefault = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n }\n nodeCount() {\n return this._nodeCount;\n }\n nodes() {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this._nodes);\n }\n sources() {\n var self = this;\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.nodes(), function (v) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](self._in[v]);\n });\n }\n sinks() {\n var self = this;\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.nodes(), function (v) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_5__[\"default\"](self._out[v]);\n });\n }\n setNodes(vs, value) {\n var args = arguments;\n var self = this;\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](vs, function (v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n }\n setNode(v, value) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n // @ts-expect-error\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n }\n node(v) {\n return this._nodes[v];\n }\n hasNode(v) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._nodes, v);\n }\n removeNode(v) {\n var self = this;\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._nodes, v)) {\n var removeEdge = function (e) {\n self.removeEdge(self._edgeObjs[e]);\n };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.children(v), function (child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n }\n setParent(v, parent) {\n if (!this._isCompound) {\n throw new Error('Cannot set parent in a non-compound graph');\n }\n\n if (lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += '';\n for (var ancestor = parent; !lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](ancestor); ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n }\n _removeFromParentsChildList(v) {\n delete this._children[this._parent[v]][v];\n }\n parent(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n }\n children(v) {\n if (lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n }\n predecessors(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](predsV);\n }\n }\n successors(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](sucsV);\n }\n }\n neighbors(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"](preds, this.successors(v));\n }\n }\n isLeaf(v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n }\n filterNodes(filter) {\n // @ts-expect-error\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound,\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._nodes, function (value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this._edgeObjs, function (e) {\n // @ts-expect-error\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n lodash_es__WEBPACK_IMPORTED_MODULE_6__[\"default\"](copy.nodes(), function (v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n }\n /* === Edge functions ========== */\n setDefaultEdgeLabel(newDefault) {\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](newDefault)) {\n newDefault = lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n }\n edgeCount() {\n return this._edgeCount;\n }\n edges() {\n return lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](this._edgeObjs);\n }\n setPath(vs, value) {\n var self = this;\n var args = arguments;\n lodash_es__WEBPACK_IMPORTED_MODULE_10__[\"default\"](vs, function (v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n }\n /*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\n setEdge() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = '' + v;\n w = '' + w;\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](name)) {\n name = '' + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](name) && !this._isMultigraph) {\n throw new Error('Cannot set a named edge when isMultigraph = false');\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n // @ts-expect-error\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n }\n edge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return this._edgeLabels[e];\n }\n hasEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n return lodash_es__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this._edgeLabels, e);\n }\n removeEdge(v, w, name) {\n var e =\n arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name);\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n }\n inEdges(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](inV);\n if (!u) {\n return edges;\n }\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](edges, function (edge) {\n return edge.v === u;\n });\n }\n }\n outEdges(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = lodash_es__WEBPACK_IMPORTED_MODULE_9__[\"default\"](outV);\n if (!w) {\n return edges;\n }\n return lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](edges, function (edge) {\n return edge.w === w;\n });\n }\n }\n nodeEdges(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) {\n delete map[k];\n }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"](name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = '' + v_;\n var w = '' + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9ncmFwaC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBK0I7O0FBRS9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxXQUFXO0FBQy9FO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLFdBQVc7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLHVCQUF1QjtBQUN2Qix1QkFBdUIsaURBQUs7QUFDNUIseUJBQXlCLGlEQUFLO0FBQzlCLHVCQUF1QixpREFBSzs7QUFFNUI7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixpREFBVTs7QUFFekM7QUFDQSwrQkFBK0IsaURBQVU7O0FBRXpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaURBQVk7QUFDckIsbUJBQW1CLGlEQUFVO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGlEQUFNO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaURBQVE7QUFDbkIsYUFBYSxpREFBUztBQUN0QixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBUTtBQUNuQixhQUFhLGlEQUFTO0FBQ3RCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksaURBQU07QUFDVjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBSztBQUNoQjtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFLO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFNO0FBQ2Q7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQU0saURBQU0sQ0FBQyxpREFBTTtBQUNuQjtBQUNBO0FBQ0EsTUFBTSxpREFBTSxDQUFDLGlEQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsaURBQWE7QUFDckI7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLGtDQUFrQyxDQUFDLGlEQUFhLFlBQVk7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGlEQUFhO0FBQ3JCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpREFBTTtBQUNyQjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQSxJQUFJLGlEQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxJQUFJLGlEQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLGlEQUFNO0FBQ1o7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlEQUFZO0FBQ3JCLG1CQUFtQixpREFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksa0RBQVE7QUFDWjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsY0FBYztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyxpREFBYTtBQUN0QjtBQUNBOztBQUVBO0FBQ0EsUUFBUSxpREFBSztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxpREFBYTtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxpREFBSztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaURBQVE7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpREFBUTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlEQUFRO0FBQ3JCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsaURBQWE7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2dyYXBoLmpzP2FlOGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSAnXFx4MDAnO1xudmFyIEdSQVBIX05PREUgPSAnXFx4MDAnO1xudmFyIEVER0VfS0VZX0RFTElNID0gJ1xceDAxJztcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cbmV4cG9ydCBjbGFzcyBHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHRoaXMuX2lzRGlyZWN0ZWQgPSBfLmhhcyhvcHRzLCAnZGlyZWN0ZWQnKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICAgIHRoaXMuX2lzTXVsdGlncmFwaCA9IF8uaGFzKG9wdHMsICdtdWx0aWdyYXBoJykgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgICB0aGlzLl9pc0NvbXBvdW5kID0gXy5oYXMob3B0cywgJ2NvbXBvdW5kJykgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgICAvLyBMYWJlbCBmb3IgdGhlIGdyYXBoIGl0c2VsZlxuICAgIHRoaXMuX2xhYmVsID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICAgIHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbiA9IF8uY29uc3RhbnQodW5kZWZpbmVkKTtcblxuICAgIC8vIERlZmF1bHRzIHRvIGJlIHNldCB3aGVuIGNyZWF0aW5nIGEgbmV3IGVkZ2VcbiAgICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgICAvLyB2IC0+IGxhYmVsXG4gICAgdGhpcy5fbm9kZXMgPSB7fTtcblxuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICAvLyB2IC0+IHBhcmVudFxuICAgICAgdGhpcy5fcGFyZW50ID0ge307XG5cbiAgICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICAgIHRoaXMuX2NoaWxkcmVuID0ge307XG4gICAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXSA9IHt9O1xuICAgIH1cblxuICAgIC8vIHYgLT4gZWRnZU9ialxuICAgIHRoaXMuX2luID0ge307XG5cbiAgICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gICAgdGhpcy5fcHJlZHMgPSB7fTtcblxuICAgIC8vIHYgLT4gZWRnZU9ialxuICAgIHRoaXMuX291dCA9IHt9O1xuXG4gICAgLy8gdiAtPiB3IC0+IE51bWJlclxuICAgIHRoaXMuX3N1Y3MgPSB7fTtcblxuICAgIC8vIGUgLT4gZWRnZU9ialxuICAgIHRoaXMuX2VkZ2VPYmpzID0ge307XG5cbiAgICAvLyBlIC0+IGxhYmVsXG4gICAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xuICB9XG4gIC8qID09PSBHcmFwaCBmdW5jdGlvbnMgPT09PT09PT09ICovXG4gIGlzRGlyZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG4gIH1cbiAgaXNNdWx0aWdyYXBoKCkge1xuICAgIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG4gIH1cbiAgaXNDb21wb3VuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbiAgfVxuICBzZXRHcmFwaChsYWJlbCkge1xuICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgZ3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhYmVsO1xuICB9XG4gIC8qID09PSBOb2RlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG4gIHNldERlZmF1bHROb2RlTGFiZWwobmV3RGVmYXVsdCkge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgICB9XG4gICAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBub2RlQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVDb3VudDtcbiAgfVxuICBub2RlcygpIHtcbiAgICByZXR1cm4gXy5rZXlzKHRoaXMuX25vZGVzKTtcbiAgfVxuICBzb3VyY2VzKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9pblt2XSk7XG4gICAgfSk7XG4gIH1cbiAgc2lua3MoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX291dFt2XSk7XG4gICAgfSk7XG4gIH1cbiAgc2V0Tm9kZXModnMsIHZhbHVlKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIF8uZWFjaCh2cywgZnVuY3Rpb24gKHYpIHtcbiAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgc2VsZi5zZXROb2RlKHYsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuc2V0Tm9kZSh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBzZXROb2RlKHYsIHZhbHVlKSB7XG4gICAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICB0aGlzLl9wYXJlbnRbdl0gPSBHUkFQSF9OT0RFO1xuICAgICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdW3ZdID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5faW5bdl0gPSB7fTtcbiAgICB0aGlzLl9wcmVkc1t2XSA9IHt9O1xuICAgIHRoaXMuX291dFt2XSA9IHt9O1xuICAgIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgICArK3RoaXMuX25vZGVDb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBub2RlKHYpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXNbdl07XG4gIH1cbiAgaGFzTm9kZSh2KSB7XG4gICAgcmV0dXJuIF8uaGFzKHRoaXMuX25vZGVzLCB2KTtcbiAgfVxuICByZW1vdmVOb2RlKHYpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKF8uaGFzKHRoaXMuX25vZGVzLCB2KSkge1xuICAgICAgdmFyIHJlbW92ZUVkZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBzZWxmLnJlbW92ZUVkZ2Uoc2VsZi5fZWRnZU9ianNbZV0pO1xuICAgICAgfTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9ub2Rlc1t2XTtcbiAgICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgICBkZWxldGUgdGhpcy5fcGFyZW50W3ZdO1xuICAgICAgICBfLmVhY2godGhpcy5jaGlsZHJlbih2KSwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgICAgc2VsZi5zZXRQYXJlbnQoY2hpbGQpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgICAgfVxuICAgICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9pblt2XSksIHJlbW92ZUVkZ2UpO1xuICAgICAgZGVsZXRlIHRoaXMuX2luW3ZdO1xuICAgICAgZGVsZXRlIHRoaXMuX3ByZWRzW3ZdO1xuICAgICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9vdXRbdl0pLCByZW1vdmVFZGdlKTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9vdXRbdl07XG4gICAgICBkZWxldGUgdGhpcy5fc3Vjc1t2XTtcbiAgICAgIC0tdGhpcy5fbm9kZUNvdW50O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBzZXRQYXJlbnQodiwgcGFyZW50KSB7XG4gICAgaWYgKCF0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoJyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocGFyZW50KSkge1xuICAgICAgcGFyZW50ID0gR1JBUEhfTk9ERTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29lcmNlIHBhcmVudCB0byBzdHJpbmdcbiAgICAgIHBhcmVudCArPSAnJztcbiAgICAgIGZvciAodmFyIGFuY2VzdG9yID0gcGFyZW50OyAhXy5pc1VuZGVmaW5lZChhbmNlc3Rvcik7IGFuY2VzdG9yID0gdGhpcy5wYXJlbnQoYW5jZXN0b3IpKSB7XG4gICAgICAgIGlmIChhbmNlc3RvciA9PT0gdikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZyAnICsgcGFyZW50ICsgJyBhcyBwYXJlbnQgb2YgJyArIHYgKyAnIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHYpO1xuICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IHBhcmVudDtcbiAgICB0aGlzLl9jaGlsZHJlbltwYXJlbnRdW3ZdID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBfcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3Qodikge1xuICAgIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xuICB9XG4gIHBhcmVudCh2KSB7XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHZhciBwYXJlbnQgPSB0aGlzLl9wYXJlbnRbdl07XG4gICAgICBpZiAocGFyZW50ICE9PSBHUkFQSF9OT0RFKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNoaWxkcmVuKHYpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh2KSkge1xuICAgICAgdiA9IEdSQVBIX05PREU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIHJldHVybiBfLmtleXMoY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodiA9PT0gR1JBUEhfTk9ERSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuICBwcmVkZWNlc3NvcnModikge1xuICAgIHZhciBwcmVkc1YgPSB0aGlzLl9wcmVkc1t2XTtcbiAgICBpZiAocHJlZHNWKSB7XG4gICAgICByZXR1cm4gXy5rZXlzKHByZWRzVik7XG4gICAgfVxuICB9XG4gIHN1Y2Nlc3NvcnModikge1xuICAgIHZhciBzdWNzViA9IHRoaXMuX3N1Y3Nbdl07XG4gICAgaWYgKHN1Y3NWKSB7XG4gICAgICByZXR1cm4gXy5rZXlzKHN1Y3NWKTtcbiAgICB9XG4gIH1cbiAgbmVpZ2hib3JzKHYpIHtcbiAgICB2YXIgcHJlZHMgPSB0aGlzLnByZWRlY2Vzc29ycyh2KTtcbiAgICBpZiAocHJlZHMpIHtcbiAgICAgIHJldHVybiBfLnVuaW9uKHByZWRzLCB0aGlzLnN1Y2Nlc3NvcnModikpO1xuICAgIH1cbiAgfVxuICBpc0xlYWYodikge1xuICAgIHZhciBuZWlnaGJvcnM7XG4gICAgaWYgKHRoaXMuaXNEaXJlY3RlZCgpKSB7XG4gICAgICBuZWlnaGJvcnMgPSB0aGlzLnN1Y2Nlc3NvcnModik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5laWdoYm9ycyA9IHRoaXMubmVpZ2hib3JzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbiAgfVxuICBmaWx0ZXJOb2RlcyhmaWx0ZXIpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdmFyIGNvcHkgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih7XG4gICAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICAgIG11bHRpZ3JhcGg6IHRoaXMuX2lzTXVsdGlncmFwaCxcbiAgICAgIGNvbXBvdW5kOiB0aGlzLl9pc0NvbXBvdW5kLFxuICAgIH0pO1xuXG4gICAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIF8uZWFjaCh0aGlzLl9ub2RlcywgZnVuY3Rpb24gKHZhbHVlLCB2KSB7XG4gICAgICBpZiAoZmlsdGVyKHYpKSB7XG4gICAgICAgIGNvcHkuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfLmVhY2godGhpcy5fZWRnZU9ianMsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBpZiAoY29weS5oYXNOb2RlKGUudikgJiYgY29weS5oYXNOb2RlKGUudykpIHtcbiAgICAgICAgY29weS5zZXRFZGdlKGUsIHNlbGYuZWRnZShlKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcGFyZW50cyA9IHt9O1xuICAgIGZ1bmN0aW9uIGZpbmRQYXJlbnQodikge1xuICAgICAgdmFyIHBhcmVudCA9IHNlbGYucGFyZW50KHYpO1xuICAgICAgaWYgKHBhcmVudCA9PT0gdW5kZWZpbmVkIHx8IGNvcHkuaGFzTm9kZShwYXJlbnQpKSB7XG4gICAgICAgIHBhcmVudHNbdl0gPSBwYXJlbnQ7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9IGVsc2UgaWYgKHBhcmVudCBpbiBwYXJlbnRzKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnRzW3BhcmVudF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmluZFBhcmVudChwYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgICBfLmVhY2goY29weS5ub2RlcygpLCBmdW5jdGlvbiAodikge1xuICAgICAgICBjb3B5LnNldFBhcmVudCh2LCBmaW5kUGFyZW50KHYpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb3B5O1xuICB9XG4gIC8qID09PSBFZGdlIGZ1bmN0aW9ucyA9PT09PT09PT09ICovXG4gIHNldERlZmF1bHRFZGdlTGFiZWwobmV3RGVmYXVsdCkge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgICB9XG4gICAgdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBlZGdlQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VkZ2VDb3VudDtcbiAgfVxuICBlZGdlcygpIHtcbiAgICByZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpO1xuICB9XG4gIHNldFBhdGgodnMsIHZhbHVlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIF8ucmVkdWNlKHZzLCBmdW5jdGlvbiAodiwgdykge1xuICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgICBzZWxmLnNldEVkZ2UodiwgdywgdmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5zZXRFZGdlKHYsIHcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHc7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLypcbiAgICogc2V0RWRnZSh2LCB3LCBbdmFsdWUsIFtuYW1lXV0pXG4gICAqIHNldEVkZ2UoeyB2LCB3LCBbbmFtZV0gfSwgW3ZhbHVlXSlcbiAgICovXG4gIHNldEVkZ2UoKSB7XG4gICAgdmFyIHYsIHcsIG5hbWUsIHZhbHVlO1xuICAgIHZhciB2YWx1ZVNwZWNpZmllZCA9IGZhbHNlO1xuICAgIHZhciBhcmcwID0gYXJndW1lbnRzWzBdO1xuXG4gICAgaWYgKHR5cGVvZiBhcmcwID09PSAnb2JqZWN0JyAmJiBhcmcwICE9PSBudWxsICYmICd2JyBpbiBhcmcwKSB7XG4gICAgICB2ID0gYXJnMC52O1xuICAgICAgdyA9IGFyZzAudztcbiAgICAgIG5hbWUgPSBhcmcwLm5hbWU7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2ID0gYXJnMDtcbiAgICAgIHcgPSBhcmd1bWVudHNbMV07XG4gICAgICBuYW1lID0gYXJndW1lbnRzWzNdO1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICAgIHZhbHVlID0gYXJndW1lbnRzWzJdO1xuICAgICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdiA9ICcnICsgdjtcbiAgICB3ID0gJycgKyB3O1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgICAgbmFtZSA9ICcnICsgbmFtZTtcbiAgICB9XG5cbiAgICB2YXIgZSA9IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgICBpZiAoXy5oYXModGhpcy5fZWRnZUxhYmVscywgZSkpIHtcbiAgICAgIGlmICh2YWx1ZVNwZWNpZmllZCkge1xuICAgICAgICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkgJiYgIXRoaXMuX2lzTXVsdGlncmFwaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlJyk7XG4gICAgfVxuXG4gICAgLy8gSXQgZGlkbid0IGV4aXN0LCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC5cbiAgICAvLyBGaXJzdCBlbnN1cmUgdGhlIG5vZGVzIGV4aXN0LlxuICAgIHRoaXMuc2V0Tm9kZSh2KTtcbiAgICB0aGlzLnNldE5vZGUodyk7XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlU3BlY2lmaWVkID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odiwgdywgbmFtZSk7XG5cbiAgICB2YXIgZWRnZU9iaiA9IGVkZ2VBcmdzVG9PYmoodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSk7XG4gICAgLy8gRW5zdXJlIHdlIGFkZCB1bmRpcmVjdGVkIGVkZ2VzIGluIGEgY29uc2lzdGVudCB3YXkuXG4gICAgdiA9IGVkZ2VPYmoudjtcbiAgICB3ID0gZWRnZU9iai53O1xuXG4gICAgT2JqZWN0LmZyZWV6ZShlZGdlT2JqKTtcbiAgICB0aGlzLl9lZGdlT2Jqc1tlXSA9IGVkZ2VPYmo7XG4gICAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fcHJlZHNbd10sIHYpO1xuICAgIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICAgIHRoaXMuX2luW3ddW2VdID0gZWRnZU9iajtcbiAgICB0aGlzLl9vdXRbdl1bZV0gPSBlZGdlT2JqO1xuICAgIHRoaXMuX2VkZ2VDb3VudCsrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGVkZ2UodiwgdywgbmFtZSkge1xuICAgIHZhciBlID1cbiAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAgIHJldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdO1xuICB9XG4gIGhhc0VkZ2UodiwgdywgbmFtZSkge1xuICAgIHZhciBlID1cbiAgICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICAgICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgICAgIDogZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAgIHJldHVybiBfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKTtcbiAgfVxuICByZW1vdmVFZGdlKHYsIHcsIG5hbWUpIHtcbiAgICB2YXIgZSA9XG4gICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgICAgID8gZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCwgYXJndW1lbnRzWzBdKVxuICAgICAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgICB2YXIgZWRnZSA9IHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgIGlmIChlZGdlKSB7XG4gICAgICB2ID0gZWRnZS52O1xuICAgICAgdyA9IGVkZ2UudztcbiAgICAgIGRlbGV0ZSB0aGlzLl9lZGdlTGFiZWxzW2VdO1xuICAgICAgZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO1xuICAgICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gICAgICBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KHRoaXMuX3N1Y3Nbdl0sIHcpO1xuICAgICAgZGVsZXRlIHRoaXMuX2luW3ddW2VdO1xuICAgICAgZGVsZXRlIHRoaXMuX291dFt2XVtlXTtcbiAgICAgIHRoaXMuX2VkZ2VDb3VudC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBpbkVkZ2VzKHYsIHUpIHtcbiAgICB2YXIgaW5WID0gdGhpcy5faW5bdl07XG4gICAgaWYgKGluVikge1xuICAgICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMoaW5WKTtcbiAgICAgIGlmICghdSkge1xuICAgICAgICByZXR1cm4gZWRnZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLnYgPT09IHU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgb3V0RWRnZXModiwgdykge1xuICAgIHZhciBvdXRWID0gdGhpcy5fb3V0W3ZdO1xuICAgIGlmIChvdXRWKSB7XG4gICAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhvdXRWKTtcbiAgICAgIGlmICghdykge1xuICAgICAgICByZXR1cm4gZWRnZXM7XG4gICAgICB9XG4gICAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgIHJldHVybiBlZGdlLncgPT09IHc7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbm9kZUVkZ2VzKHYsIHcpIHtcbiAgICB2YXIgaW5FZGdlcyA9IHRoaXMuaW5FZGdlcyh2LCB3KTtcbiAgICBpZiAoaW5FZGdlcykge1xuICAgICAgcmV0dXJuIGluRWRnZXMuY29uY2F0KHRoaXMub3V0RWRnZXModiwgdykpO1xuICAgIH1cbiAgfVxufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cbmZ1bmN0aW9uIGluY3JlbWVudE9ySW5pdEVudHJ5KG1hcCwgaykge1xuICBpZiAobWFwW2tdKSB7XG4gICAgbWFwW2tdKys7XG4gIH0gZWxzZSB7XG4gICAgbWFwW2tdID0gMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWNyZW1lbnRPclJlbW92ZUVudHJ5KG1hcCwgaykge1xuICBpZiAoIS0tbWFwW2tdKSB7XG4gICAgZGVsZXRlIG1hcFtrXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlZGdlQXJnc1RvSWQoaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gJycgKyB2XztcbiAgdmFyIHcgPSAnJyArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiB2ICsgRURHRV9LRVlfREVMSU0gKyB3ICsgRURHRV9LRVlfREVMSU0gKyAoXy5pc1VuZGVmaW5lZChuYW1lKSA/IERFRkFVTFRfRURHRV9OQU1FIDogbmFtZSk7XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9PYmooaXNEaXJlY3RlZCwgdl8sIHdfLCBuYW1lKSB7XG4gIHZhciB2ID0gJycgKyB2XztcbiAgdmFyIHcgPSAnJyArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHZhciBlZGdlT2JqID0geyB2OiB2LCB3OiB3IH07XG4gIGlmIChuYW1lKSB7XG4gICAgZWRnZU9iai5uYW1lID0gbmFtZTtcbiAgfVxuICByZXR1cm4gZWRnZU9iajtcbn1cblxuZnVuY3Rpb24gZWRnZU9ialRvSWQoaXNEaXJlY3RlZCwgZWRnZU9iaikge1xuICByZXR1cm4gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmoudiwgZWRnZU9iai53LCBlZGdlT2JqLm5hbWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/graph.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/index.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Graph\": () => (/* reexport safe */ _graph_js__WEBPACK_IMPORTED_MODULE_0__.Graph),\n/* harmony export */ \"version\": () => (/* binding */ version)\n/* harmony export */ });\n/* harmony import */ var _graph_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/graph.js\");\n// Includes only the \"core\" of graphlib\n\n\n\nconst version = '2.1.9-pre';\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFFbUM7O0FBRW5DOztBQUUwQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2luZGV4LmpzP2ZkYzMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW5jbHVkZXMgb25seSB0aGUgXCJjb3JlXCIgb2YgZ3JhcGhsaWJcblxuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuL2dyYXBoLmpzJztcblxuY29uc3QgdmVyc2lvbiA9ICcyLjEuOS1wcmUnO1xuXG5leHBvcnQgeyBHcmFwaCwgdmVyc2lvbiB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/graphlib/json.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/graphlib/json.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"read\": () => (/* binding */ read),\n/* harmony export */ \"write\": () => (/* binding */ write)\n/* harmony export */ });\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/clone.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/map.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/forEach.js\");\n/* harmony import */ var _graph_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./graph.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/graph.js\");\n\n\n\n\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound(),\n },\n nodes: writeNodes(g),\n edges: writeEdges(g),\n };\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](g.graph())) {\n json.value = lodash_es__WEBPACK_IMPORTED_MODULE_2__[\"default\"](g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.nodes(), function (v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](nodeValue)) {\n node.value = nodeValue;\n }\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return lodash_es__WEBPACK_IMPORTED_MODULE_3__[\"default\"](g.edges(), function (e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](e.name)) {\n edge.name = e.name;\n }\n if (!lodash_es__WEBPACK_IMPORTED_MODULE_1__[\"default\"](edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new _graph_js__WEBPACK_IMPORTED_MODULE_0__.Graph(json.options).setGraph(json.value);\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](json.nodes, function (entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n lodash_es__WEBPACK_IMPORTED_MODULE_4__[\"default\"](json.edges, function (entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0I7QUFDSTs7QUFFWjs7QUFFdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU8saURBQWE7QUFDcEIsaUJBQWlCLGlEQUFPO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsaURBQUs7QUFDZDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLFNBQVMsaURBQWE7QUFDdEI7QUFDQTtBQUNBLFNBQVMsaURBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsU0FBUyxpREFBSztBQUNkO0FBQ0EsaUJBQWlCO0FBQ2pCLFNBQVMsaURBQWE7QUFDdEI7QUFDQTtBQUNBLFNBQVMsaURBQWE7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsY0FBYyw0Q0FBSztBQUNuQixFQUFFLGlEQUFNO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSxpREFBTTtBQUNSLGdCQUFnQiwwQ0FBMEM7QUFDMUQsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzPzM1YzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuL2dyYXBoLmpzJztcblxuZXhwb3J0IHsgd3JpdGUsIHJlYWQgfTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpLFxuICAgIH0sXG4gICAgbm9kZXM6IHdyaXRlTm9kZXMoZyksXG4gICAgZWRnZXM6IHdyaXRlRWRnZXMoZyksXG4gIH07XG4gIGlmICghXy5pc1VuZGVmaW5lZChnLmdyYXBoKCkpKSB7XG4gICAganNvbi52YWx1ZSA9IF8uY2xvbmUoZy5ncmFwaCgpKTtcbiAgfVxuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gd3JpdGVOb2RlcyhnKSB7XG4gIHJldHVybiBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uICh2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcGFyZW50ID0gZy5wYXJlbnQodik7XG4gICAgdmFyIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbiAoZSkge1xuICAgIHZhciBlZGdlVmFsdWUgPSBnLmVkZ2UoZSk7XG4gICAgdmFyIGVkZ2UgPSB7IHY6IGUudiwgdzogZS53IH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGUubmFtZSkpIHtcbiAgICAgIGVkZ2UubmFtZSA9IGUubmFtZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpIHtcbiAgICAgIGVkZ2UudmFsdWUgPSBlZGdlVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBlZGdlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVhZChqc29uKSB7XG4gIHZhciBnID0gbmV3IEdyYXBoKGpzb24ub3B0aW9ucykuc2V0R3JhcGgoanNvbi52YWx1ZSk7XG4gIF8uZWFjaChqc29uLm5vZGVzLCBmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBnLnNldE5vZGUoZW50cnkudiwgZW50cnkudmFsdWUpO1xuICAgIGlmIChlbnRyeS5wYXJlbnQpIHtcbiAgICAgIGcuc2V0UGFyZW50KGVudHJ5LnYsIGVudHJ5LnBhcmVudCk7XG4gICAgfVxuICB9KTtcbiAgXy5lYWNoKGpzb24uZWRnZXMsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/graphlib/json.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dagre-d3-es/src/index.js": +/*!******************************************************!*\ + !*** ../../../node_modules/dagre-d3-es/src/index.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"graphlib\": () => (/* reexport module object */ _graphlib_index_js__WEBPACK_IMPORTED_MODULE_1__),\n/* harmony export */ \"intersect\": () => (/* reexport module object */ _dagre_js_intersect_index_js__WEBPACK_IMPORTED_MODULE_2__),\n/* harmony export */ \"render\": () => (/* reexport safe */ _dagre_js_render_js__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _dagre_js_render_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dagre-js/render.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/render.js\");\n/* harmony import */ var _graphlib_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _dagre_js_intersect_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dagre-js/intersect/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/index.js\");\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBOEM7QUFDRTs7QUFFVzs7QUFFcEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RhZ3JlLWQzLWVzL3NyYy9pbmRleC5qcz9lYjM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciB9IGZyb20gJy4vZGFncmUtanMvcmVuZGVyLmpzJztcbmltcG9ydCAqIGFzIGdyYXBobGliIGZyb20gJy4vZ3JhcGhsaWIvaW5kZXguanMnO1xuXG5pbXBvcnQgKiBhcyBpbnRlcnNlY3QgZnJvbSAnLi9kYWdyZS1qcy9pbnRlcnNlY3QvaW5kZXguanMnO1xuXG5leHBvcnQgeyBncmFwaGxpYiwgaW50ZXJzZWN0LCByZW5kZXIgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dagre-d3-es/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/decode-named-character-reference/index.dom.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/decode-named-character-reference/index.dom.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeNamedCharacterReference\": () => (/* binding */ decodeNamedCharacterReference)\n/* harmony export */ });\n/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nfunction decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlL2luZGV4LmRvbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYTtBQUNiO0FBQ087QUFDUCw2Q0FBNkM7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0NBQWdDLGlDQUFpQztBQUNqRTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlL2luZGV4LmRvbS5qcz9iMmI2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5jb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfGZhbHNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UodmFsdWUpIHtcbiAgY29uc3QgY2hhcmFjdGVyUmVmZXJlbmNlID0gJyYnICsgdmFsdWUgKyAnOydcbiAgZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyYWN0ZXJSZWZlcmVuY2VcbiAgY29uc3QgY2hhciA9IGVsZW1lbnQudGV4dENvbnRlbnRcblxuICAvLyBTb21lIG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvblxuICAvLyAoYCZub3RgLCBmb3IgaW5zdGFuY2UpLCB3aGljaCBsZWFkcyB0byBzaXR1YXRpb25zIHdoZXJlIHBhcnNpbmcgdGhlIGFzc3VtZWRcbiAgLy8gbmFtZWQgcmVmZXJlbmNlIG9mIGAmbm90aXQ7YCB3aWxsIHJlc3VsdCBpbiB0aGUgc3RyaW5nIGDCrGl0O2AuXG4gIC8vIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyIHBhcnNpbmcsIGFuZCB0aGUgY2hhcmFjdGVyXG4gIC8vIHJlZmVyZW5jZSB0byBkZWNvZGUgd2FzIG5vdCBhIHNlbWljb2xvbiAoYCZzZW1pO2ApLCB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlXG4gIC8vIG1hdGNoaW5nIHdhcyBub3QgY29tcGxldGUuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IFR5cGVTY3JpcHQgaXMgd3JvbmcgdGhhdCBgdGV4dENvbnRlbnRgIG9uIGVsZW1lbnRzIGNhblxuICAvLyB5aWVsZCBgbnVsbGAuXG4gIGlmIChjaGFyLmNoYXJDb2RlQXQoY2hhci5sZW5ndGggLSAxKSA9PT0gNTkgLyogYDtgICovICYmIHZhbHVlICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIHdhc1xuICAvLyBub3QgdmFsaWQuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IFR5cGVTY3JpcHQgaXMgd3JvbmcgdGhhdCBgdGV4dENvbnRlbnRgIG9uIGVsZW1lbnRzIGNhblxuICAvLyB5aWVsZCBgbnVsbGAuXG4gIHJldHVybiBjaGFyID09PSBjaGFyYWN0ZXJSZWZlcmVuY2UgPyBmYWxzZSA6IGNoYXJcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/decode-named-character-reference/index.dom.js\n"); + +/***/ }), + +/***/ "../../../node_modules/delaunator/index.js": +/*!*************************************************!*\ + !*** ../../../node_modules/delaunator/index.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Delaunator)\n/* harmony export */ });\n/* harmony import */ var robust_predicates__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! robust-predicates */ \"../../../node_modules/robust-predicates/index.js\");\n\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\n\n\nclass Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if ((0,robust_predicates__WEBPACK_IMPORTED_MODULE_0__.orient2d)(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], (0,robust_predicates__WEBPACK_IMPORTED_MODULE_0__.orient2d)(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], (0,robust_predicates__WEBPACK_IMPORTED_MODULE_0__.orient2d)(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], (0,robust_predicates__WEBPACK_IMPORTED_MODULE_0__.orient2d)(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlbGF1bmF0b3IvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0E7QUFDQTs7QUFFMkM7O0FBRTVCOztBQUVmO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLDZDQUE2QztBQUM3Qyw0Q0FBNEM7QUFDNUMsa0VBQWtFOztBQUVsRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGVBQWUsMEZBQTBGO0FBQ3pHOztBQUVBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsT0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLE9BQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsT0FBTztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksMkRBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixPQUFPO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGdDQUFnQyxzQkFBc0I7QUFDdEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVEQUF1RCxvQkFBb0I7QUFDM0U7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MsMkRBQVE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGtDQUFrQzs7QUFFdEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0MsMkRBQVE7QUFDNUM7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3QywyREFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNkMsY0FBYztBQUMzRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxzREFBc0Q7O0FBRXJFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0IsWUFBWTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWxhdW5hdG9yL2luZGV4LmpzPzkzMWIiXSwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbmNvbnN0IEVER0VfU1RBQ0sgPSBuZXcgVWludDMyQXJyYXkoNTEyKTtcblxuaW1wb3J0IHtvcmllbnQyZH0gZnJvbSAncm9idXN0LXByZWRpY2F0ZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZWxhdW5hdG9yIHtcblxuICAgIHN0YXRpYyBmcm9tKHBvaW50cywgZ2V0WCA9IGRlZmF1bHRHZXRYLCBnZXRZID0gZGVmYXVsdEdldFkpIHtcbiAgICAgICAgY29uc3QgbiA9IHBvaW50cy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGNvb3JkcyA9IG5ldyBGbG9hdDY0QXJyYXkobiAqIDIpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwID0gcG9pbnRzW2ldO1xuICAgICAgICAgICAgY29vcmRzWzIgKiBpXSA9IGdldFgocCk7XG4gICAgICAgICAgICBjb29yZHNbMiAqIGkgKyAxXSA9IGdldFkocCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IERlbGF1bmF0b3IoY29vcmRzKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihjb29yZHMpIHtcbiAgICAgICAgY29uc3QgbiA9IGNvb3Jkcy5sZW5ndGggPj4gMTtcbiAgICAgICAgaWYgKG4gPiAwICYmIHR5cGVvZiBjb29yZHNbMF0gIT09ICdudW1iZXInKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGNvb3JkcyB0byBjb250YWluIG51bWJlcnMuJyk7XG5cbiAgICAgICAgdGhpcy5jb29yZHMgPSBjb29yZHM7XG5cbiAgICAgICAgLy8gYXJyYXlzIHRoYXQgd2lsbCBzdG9yZSB0aGUgdHJpYW5ndWxhdGlvbiBncmFwaFxuICAgICAgICBjb25zdCBtYXhUcmlhbmdsZXMgPSBNYXRoLm1heCgyICogbiAtIDUsIDApO1xuICAgICAgICB0aGlzLl90cmlhbmdsZXMgPSBuZXcgVWludDMyQXJyYXkobWF4VHJpYW5nbGVzICogMyk7XG4gICAgICAgIHRoaXMuX2hhbGZlZGdlcyA9IG5ldyBJbnQzMkFycmF5KG1heFRyaWFuZ2xlcyAqIDMpO1xuXG4gICAgICAgIC8vIHRlbXBvcmFyeSBhcnJheXMgZm9yIHRyYWNraW5nIHRoZSBlZGdlcyBvZiB0aGUgYWR2YW5jaW5nIGNvbnZleCBodWxsXG4gICAgICAgIHRoaXMuX2hhc2hTaXplID0gTWF0aC5jZWlsKE1hdGguc3FydChuKSk7XG4gICAgICAgIHRoaXMuX2h1bGxQcmV2ID0gbmV3IFVpbnQzMkFycmF5KG4pOyAvLyBlZGdlIHRvIHByZXYgZWRnZVxuICAgICAgICB0aGlzLl9odWxsTmV4dCA9IG5ldyBVaW50MzJBcnJheShuKTsgLy8gZWRnZSB0byBuZXh0IGVkZ2VcbiAgICAgICAgdGhpcy5faHVsbFRyaSA9IG5ldyBVaW50MzJBcnJheShuKTsgLy8gZWRnZSB0byBhZGphY2VudCB0cmlhbmdsZVxuICAgICAgICB0aGlzLl9odWxsSGFzaCA9IG5ldyBJbnQzMkFycmF5KHRoaXMuX2hhc2hTaXplKS5maWxsKC0xKTsgLy8gYW5ndWxhciBlZGdlIGhhc2hcblxuICAgICAgICAvLyB0ZW1wb3JhcnkgYXJyYXlzIGZvciBzb3J0aW5nIHBvaW50c1xuICAgICAgICB0aGlzLl9pZHMgPSBuZXcgVWludDMyQXJyYXkobik7XG4gICAgICAgIHRoaXMuX2Rpc3RzID0gbmV3IEZsb2F0NjRBcnJheShuKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qge2Nvb3JkcywgX2h1bGxQcmV2OiBodWxsUHJldiwgX2h1bGxOZXh0OiBodWxsTmV4dCwgX2h1bGxUcmk6IGh1bGxUcmksIF9odWxsSGFzaDogaHVsbEhhc2h9ID0gIHRoaXM7XG4gICAgICAgIGNvbnN0IG4gPSBjb29yZHMubGVuZ3RoID4+IDE7XG5cbiAgICAgICAgLy8gcG9wdWxhdGUgYW4gYXJyYXkgb2YgcG9pbnQgaW5kaWNlczsgY2FsY3VsYXRlIGlucHV0IGRhdGEgYmJveFxuICAgICAgICBsZXQgbWluWCA9IEluZmluaXR5O1xuICAgICAgICBsZXQgbWluWSA9IEluZmluaXR5O1xuICAgICAgICBsZXQgbWF4WCA9IC1JbmZpbml0eTtcbiAgICAgICAgbGV0IG1heFkgPSAtSW5maW5pdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSBjb29yZHNbMiAqIGldO1xuICAgICAgICAgICAgY29uc3QgeSA9IGNvb3Jkc1syICogaSArIDFdO1xuICAgICAgICAgICAgaWYgKHggPCBtaW5YKSBtaW5YID0geDtcbiAgICAgICAgICAgIGlmICh5IDwgbWluWSkgbWluWSA9IHk7XG4gICAgICAgICAgICBpZiAoeCA+IG1heFgpIG1heFggPSB4O1xuICAgICAgICAgICAgaWYgKHkgPiBtYXhZKSBtYXhZID0geTtcbiAgICAgICAgICAgIHRoaXMuX2lkc1tpXSA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3ggPSAobWluWCArIG1heFgpIC8gMjtcbiAgICAgICAgY29uc3QgY3kgPSAobWluWSArIG1heFkpIC8gMjtcblxuICAgICAgICBsZXQgbWluRGlzdCA9IEluZmluaXR5O1xuICAgICAgICBsZXQgaTAsIGkxLCBpMjtcblxuICAgICAgICAvLyBwaWNrIGEgc2VlZCBwb2ludCBjbG9zZSB0byB0aGUgY2VudGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gZGlzdChjeCwgY3ksIGNvb3Jkc1syICogaV0sIGNvb3Jkc1syICogaSArIDFdKTtcbiAgICAgICAgICAgIGlmIChkIDwgbWluRGlzdCkge1xuICAgICAgICAgICAgICAgIGkwID0gaTtcbiAgICAgICAgICAgICAgICBtaW5EaXN0ID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpMHggPSBjb29yZHNbMiAqIGkwXTtcbiAgICAgICAgY29uc3QgaTB5ID0gY29vcmRzWzIgKiBpMCArIDFdO1xuXG4gICAgICAgIG1pbkRpc3QgPSBJbmZpbml0eTtcblxuICAgICAgICAvLyBmaW5kIHRoZSBwb2ludCBjbG9zZXN0IHRvIHRoZSBzZWVkXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gaTApIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZCA9IGRpc3QoaTB4LCBpMHksIGNvb3Jkc1syICogaV0sIGNvb3Jkc1syICogaSArIDFdKTtcbiAgICAgICAgICAgIGlmIChkIDwgbWluRGlzdCAmJiBkID4gMCkge1xuICAgICAgICAgICAgICAgIGkxID0gaTtcbiAgICAgICAgICAgICAgICBtaW5EaXN0ID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgaTF4ID0gY29vcmRzWzIgKiBpMV07XG4gICAgICAgIGxldCBpMXkgPSBjb29yZHNbMiAqIGkxICsgMV07XG5cbiAgICAgICAgbGV0IG1pblJhZGl1cyA9IEluZmluaXR5O1xuXG4gICAgICAgIC8vIGZpbmQgdGhlIHRoaXJkIHBvaW50IHdoaWNoIGZvcm1zIHRoZSBzbWFsbGVzdCBjaXJjdW1jaXJjbGUgd2l0aCB0aGUgZmlyc3QgdHdvXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gaTAgfHwgaSA9PT0gaTEpIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgciA9IGNpcmN1bXJhZGl1cyhpMHgsIGkweSwgaTF4LCBpMXksIGNvb3Jkc1syICogaV0sIGNvb3Jkc1syICogaSArIDFdKTtcbiAgICAgICAgICAgIGlmIChyIDwgbWluUmFkaXVzKSB7XG4gICAgICAgICAgICAgICAgaTIgPSBpO1xuICAgICAgICAgICAgICAgIG1pblJhZGl1cyA9IHI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGkyeCA9IGNvb3Jkc1syICogaTJdO1xuICAgICAgICBsZXQgaTJ5ID0gY29vcmRzWzIgKiBpMiArIDFdO1xuXG4gICAgICAgIGlmIChtaW5SYWRpdXMgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAvLyBvcmRlciBjb2xsaW5lYXIgcG9pbnRzIGJ5IGR4IChvciBkeSBpZiBhbGwgeCBhcmUgaWRlbnRpY2FsKVxuICAgICAgICAgICAgLy8gYW5kIHJldHVybiB0aGUgbGlzdCBhcyBhIGh1bGxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzdHNbaV0gPSAoY29vcmRzWzIgKiBpXSAtIGNvb3Jkc1swXSkgfHwgKGNvb3Jkc1syICogaSArIDFdIC0gY29vcmRzWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1aWNrc29ydCh0aGlzLl9pZHMsIHRoaXMuX2Rpc3RzLCAwLCBuIC0gMSk7XG4gICAgICAgICAgICBjb25zdCBodWxsID0gbmV3IFVpbnQzMkFycmF5KG4pO1xuICAgICAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGQwID0gLUluZmluaXR5OyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLl9pZHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc3RzW2lkXSA+IGQwKSB7XG4gICAgICAgICAgICAgICAgICAgIGh1bGxbaisrXSA9IGlkO1xuICAgICAgICAgICAgICAgICAgICBkMCA9IHRoaXMuX2Rpc3RzW2lkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmh1bGwgPSBodWxsLnN1YmFycmF5KDAsIGopO1xuICAgICAgICAgICAgdGhpcy50cmlhbmdsZXMgPSBuZXcgVWludDMyQXJyYXkoMCk7XG4gICAgICAgICAgICB0aGlzLmhhbGZlZGdlcyA9IG5ldyBVaW50MzJBcnJheSgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN3YXAgdGhlIG9yZGVyIG9mIHRoZSBzZWVkIHBvaW50cyBmb3IgY291bnRlci1jbG9ja3dpc2Ugb3JpZW50YXRpb25cbiAgICAgICAgaWYgKG9yaWVudDJkKGkweCwgaTB5LCBpMXgsIGkxeSwgaTJ4LCBpMnkpIDwgMCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IGkxO1xuICAgICAgICAgICAgY29uc3QgeCA9IGkxeDtcbiAgICAgICAgICAgIGNvbnN0IHkgPSBpMXk7XG4gICAgICAgICAgICBpMSA9IGkyO1xuICAgICAgICAgICAgaTF4ID0gaTJ4O1xuICAgICAgICAgICAgaTF5ID0gaTJ5O1xuICAgICAgICAgICAgaTIgPSBpO1xuICAgICAgICAgICAgaTJ4ID0geDtcbiAgICAgICAgICAgIGkyeSA9IHk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjZW50ZXIgPSBjaXJjdW1jZW50ZXIoaTB4LCBpMHksIGkxeCwgaTF5LCBpMngsIGkyeSk7XG4gICAgICAgIHRoaXMuX2N4ID0gY2VudGVyLng7XG4gICAgICAgIHRoaXMuX2N5ID0gY2VudGVyLnk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3RzW2ldID0gZGlzdChjb29yZHNbMiAqIGldLCBjb29yZHNbMiAqIGkgKyAxXSwgY2VudGVyLngsIGNlbnRlci55KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNvcnQgdGhlIHBvaW50cyBieSBkaXN0YW5jZSBmcm9tIHRoZSBzZWVkIHRyaWFuZ2xlIGNpcmN1bWNlbnRlclxuICAgICAgICBxdWlja3NvcnQodGhpcy5faWRzLCB0aGlzLl9kaXN0cywgMCwgbiAtIDEpO1xuXG4gICAgICAgIC8vIHNldCB1cCB0aGUgc2VlZCB0cmlhbmdsZSBhcyB0aGUgc3RhcnRpbmcgaHVsbFxuICAgICAgICB0aGlzLl9odWxsU3RhcnQgPSBpMDtcbiAgICAgICAgbGV0IGh1bGxTaXplID0gMztcblxuICAgICAgICBodWxsTmV4dFtpMF0gPSBodWxsUHJldltpMl0gPSBpMTtcbiAgICAgICAgaHVsbE5leHRbaTFdID0gaHVsbFByZXZbaTBdID0gaTI7XG4gICAgICAgIGh1bGxOZXh0W2kyXSA9IGh1bGxQcmV2W2kxXSA9IGkwO1xuXG4gICAgICAgIGh1bGxUcmlbaTBdID0gMDtcbiAgICAgICAgaHVsbFRyaVtpMV0gPSAxO1xuICAgICAgICBodWxsVHJpW2kyXSA9IDI7XG5cbiAgICAgICAgaHVsbEhhc2guZmlsbCgtMSk7XG4gICAgICAgIGh1bGxIYXNoW3RoaXMuX2hhc2hLZXkoaTB4LCBpMHkpXSA9IGkwO1xuICAgICAgICBodWxsSGFzaFt0aGlzLl9oYXNoS2V5KGkxeCwgaTF5KV0gPSBpMTtcbiAgICAgICAgaHVsbEhhc2hbdGhpcy5faGFzaEtleShpMngsIGkyeSldID0gaTI7XG5cbiAgICAgICAgdGhpcy50cmlhbmdsZXNMZW4gPSAwO1xuICAgICAgICB0aGlzLl9hZGRUcmlhbmdsZShpMCwgaTEsIGkyLCAtMSwgLTEsIC0xKTtcblxuICAgICAgICBmb3IgKGxldCBrID0gMCwgeHAsIHlwOyBrIDwgdGhpcy5faWRzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5faWRzW2tdO1xuICAgICAgICAgICAgY29uc3QgeCA9IGNvb3Jkc1syICogaV07XG4gICAgICAgICAgICBjb25zdCB5ID0gY29vcmRzWzIgKiBpICsgMV07XG5cbiAgICAgICAgICAgIC8vIHNraXAgbmVhci1kdXBsaWNhdGUgcG9pbnRzXG4gICAgICAgICAgICBpZiAoayA+IDAgJiYgTWF0aC5hYnMoeCAtIHhwKSA8PSBFUFNJTE9OICYmIE1hdGguYWJzKHkgLSB5cCkgPD0gRVBTSUxPTikgY29udGludWU7XG4gICAgICAgICAgICB4cCA9IHg7XG4gICAgICAgICAgICB5cCA9IHk7XG5cbiAgICAgICAgICAgIC8vIHNraXAgc2VlZCB0cmlhbmdsZSBwb2ludHNcbiAgICAgICAgICAgIGlmIChpID09PSBpMCB8fCBpID09PSBpMSB8fCBpID09PSBpMikgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIGZpbmQgYSB2aXNpYmxlIGVkZ2Ugb24gdGhlIGNvbnZleCBodWxsIHVzaW5nIGVkZ2UgaGFzaFxuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwLCBrZXkgPSB0aGlzLl9oYXNoS2V5KHgsIHkpOyBqIDwgdGhpcy5faGFzaFNpemU7IGorKykge1xuICAgICAgICAgICAgICAgIHN0YXJ0ID0gaHVsbEhhc2hbKGtleSArIGopICUgdGhpcy5faGFzaFNpemVdO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydCAhPT0gLTEgJiYgc3RhcnQgIT09IGh1bGxOZXh0W3N0YXJ0XSkgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN0YXJ0ID0gaHVsbFByZXZbc3RhcnRdO1xuICAgICAgICAgICAgbGV0IGUgPSBzdGFydCwgcTtcbiAgICAgICAgICAgIHdoaWxlIChxID0gaHVsbE5leHRbZV0sIG9yaWVudDJkKHgsIHksIGNvb3Jkc1syICogZV0sIGNvb3Jkc1syICogZSArIDFdLCBjb29yZHNbMiAqIHFdLCBjb29yZHNbMiAqIHEgKyAxXSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIGUgPSBxO1xuICAgICAgICAgICAgICAgIGlmIChlID09PSBzdGFydCkge1xuICAgICAgICAgICAgICAgICAgICBlID0gLTE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlID09PSAtMSkgY29udGludWU7IC8vIGxpa2VseSBhIG5lYXItZHVwbGljYXRlIHBvaW50OyBza2lwIGl0XG5cbiAgICAgICAgICAgIC8vIGFkZCB0aGUgZmlyc3QgdHJpYW5nbGUgZnJvbSB0aGUgcG9pbnRcbiAgICAgICAgICAgIGxldCB0ID0gdGhpcy5fYWRkVHJpYW5nbGUoZSwgaSwgaHVsbE5leHRbZV0sIC0xLCAtMSwgaHVsbFRyaVtlXSk7XG5cbiAgICAgICAgICAgIC8vIHJlY3Vyc2l2ZWx5IGZsaXAgdHJpYW5nbGVzIGZyb20gdGhlIHBvaW50IHVudGlsIHRoZXkgc2F0aXNmeSB0aGUgRGVsYXVuYXkgY29uZGl0aW9uXG4gICAgICAgICAgICBodWxsVHJpW2ldID0gdGhpcy5fbGVnYWxpemUodCArIDIpO1xuICAgICAgICAgICAgaHVsbFRyaVtlXSA9IHQ7IC8vIGtlZXAgdHJhY2sgb2YgYm91bmRhcnkgdHJpYW5nbGVzIG9uIHRoZSBodWxsXG4gICAgICAgICAgICBodWxsU2l6ZSsrO1xuXG4gICAgICAgICAgICAvLyB3YWxrIGZvcndhcmQgdGhyb3VnaCB0aGUgaHVsbCwgYWRkaW5nIG1vcmUgdHJpYW5nbGVzIGFuZCBmbGlwcGluZyByZWN1cnNpdmVseVxuICAgICAgICAgICAgbGV0IG4gPSBodWxsTmV4dFtlXTtcbiAgICAgICAgICAgIHdoaWxlIChxID0gaHVsbE5leHRbbl0sIG9yaWVudDJkKHgsIHksIGNvb3Jkc1syICogbl0sIGNvb3Jkc1syICogbiArIDFdLCBjb29yZHNbMiAqIHFdLCBjb29yZHNbMiAqIHEgKyAxXSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgdCA9IHRoaXMuX2FkZFRyaWFuZ2xlKG4sIGksIHEsIGh1bGxUcmlbaV0sIC0xLCBodWxsVHJpW25dKTtcbiAgICAgICAgICAgICAgICBodWxsVHJpW2ldID0gdGhpcy5fbGVnYWxpemUodCArIDIpO1xuICAgICAgICAgICAgICAgIGh1bGxOZXh0W25dID0gbjsgLy8gbWFyayBhcyByZW1vdmVkXG4gICAgICAgICAgICAgICAgaHVsbFNpemUtLTtcbiAgICAgICAgICAgICAgICBuID0gcTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gd2FsayBiYWNrd2FyZCBmcm9tIHRoZSBvdGhlciBzaWRlLCBhZGRpbmcgbW9yZSB0cmlhbmdsZXMgYW5kIGZsaXBwaW5nXG4gICAgICAgICAgICBpZiAoZSA9PT0gc3RhcnQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAocSA9IGh1bGxQcmV2W2VdLCBvcmllbnQyZCh4LCB5LCBjb29yZHNbMiAqIHFdLCBjb29yZHNbMiAqIHEgKyAxXSwgY29vcmRzWzIgKiBlXSwgY29vcmRzWzIgKiBlICsgMV0pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy5fYWRkVHJpYW5nbGUocSwgaSwgZSwgLTEsIGh1bGxUcmlbZV0sIGh1bGxUcmlbcV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0ICsgMik7XG4gICAgICAgICAgICAgICAgICAgIGh1bGxUcmlbcV0gPSB0O1xuICAgICAgICAgICAgICAgICAgICBodWxsTmV4dFtlXSA9IGU7IC8vIG1hcmsgYXMgcmVtb3ZlZFxuICAgICAgICAgICAgICAgICAgICBodWxsU2l6ZS0tO1xuICAgICAgICAgICAgICAgICAgICBlID0gcTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgaHVsbCBpbmRpY2VzXG4gICAgICAgICAgICB0aGlzLl9odWxsU3RhcnQgPSBodWxsUHJldltpXSA9IGU7XG4gICAgICAgICAgICBodWxsTmV4dFtlXSA9IGh1bGxQcmV2W25dID0gaTtcbiAgICAgICAgICAgIGh1bGxOZXh0W2ldID0gbjtcblxuICAgICAgICAgICAgLy8gc2F2ZSB0aGUgdHdvIG5ldyBlZGdlcyBpbiB0aGUgaGFzaCB0YWJsZVxuICAgICAgICAgICAgaHVsbEhhc2hbdGhpcy5faGFzaEtleSh4LCB5KV0gPSBpO1xuICAgICAgICAgICAgaHVsbEhhc2hbdGhpcy5faGFzaEtleShjb29yZHNbMiAqIGVdLCBjb29yZHNbMiAqIGUgKyAxXSldID0gZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaHVsbCA9IG5ldyBVaW50MzJBcnJheShodWxsU2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBlID0gdGhpcy5faHVsbFN0YXJ0OyBpIDwgaHVsbFNpemU7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5odWxsW2ldID0gZTtcbiAgICAgICAgICAgIGUgPSBodWxsTmV4dFtlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRyaW0gdHlwZWQgdHJpYW5nbGUgbWVzaCBhcnJheXNcbiAgICAgICAgdGhpcy50cmlhbmdsZXMgPSB0aGlzLl90cmlhbmdsZXMuc3ViYXJyYXkoMCwgdGhpcy50cmlhbmdsZXNMZW4pO1xuICAgICAgICB0aGlzLmhhbGZlZGdlcyA9IHRoaXMuX2hhbGZlZGdlcy5zdWJhcnJheSgwLCB0aGlzLnRyaWFuZ2xlc0xlbik7XG4gICAgfVxuXG4gICAgX2hhc2hLZXkoeCwgeSkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihwc2V1ZG9BbmdsZSh4IC0gdGhpcy5fY3gsIHkgLSB0aGlzLl9jeSkgKiB0aGlzLl9oYXNoU2l6ZSkgJSB0aGlzLl9oYXNoU2l6ZTtcbiAgICB9XG5cbiAgICBfbGVnYWxpemUoYSkge1xuICAgICAgICBjb25zdCB7X3RyaWFuZ2xlczogdHJpYW5nbGVzLCBfaGFsZmVkZ2VzOiBoYWxmZWRnZXMsIGNvb3Jkc30gPSB0aGlzO1xuXG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IGFyID0gMDtcblxuICAgICAgICAvLyByZWN1cnNpb24gZWxpbWluYXRlZCB3aXRoIGEgZml4ZWQtc2l6ZSBzdGFja1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgY29uc3QgYiA9IGhhbGZlZGdlc1thXTtcblxuICAgICAgICAgICAgLyogaWYgdGhlIHBhaXIgb2YgdHJpYW5nbGVzIGRvZXNuJ3Qgc2F0aXNmeSB0aGUgRGVsYXVuYXkgY29uZGl0aW9uXG4gICAgICAgICAgICAgKiAocDEgaXMgaW5zaWRlIHRoZSBjaXJjdW1jaXJjbGUgb2YgW3AwLCBwbCwgcHJdKSwgZmxpcCB0aGVtLFxuICAgICAgICAgICAgICogdGhlbiBkbyB0aGUgc2FtZSBjaGVjay9mbGlwIHJlY3Vyc2l2ZWx5IGZvciB0aGUgbmV3IHBhaXIgb2YgdHJpYW5nbGVzXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogICAgICAgICAgIHBsICAgICAgICAgICAgICAgICAgICBwbFxuICAgICAgICAgICAgICogICAgICAgICAgL3x8XFwgICAgICAgICAgICAgICAgICAvICBcXFxuICAgICAgICAgICAgICogICAgICAgYWwvIHx8IFxcYmwgICAgICAgICAgICBhbC8gICAgXFxhXG4gICAgICAgICAgICAgKiAgICAgICAgLyAgfHwgIFxcICAgICAgICAgICAgICAvICAgICAgXFxcbiAgICAgICAgICAgICAqICAgICAgIC8gIGF8fGIgIFxcICAgIGZsaXAgICAgL19fX2FyX19fXFxcbiAgICAgICAgICAgICAqICAgICBwMFxcICAgfHwgICAvcDEgICA9PiAgIHAwXFwtLS1ibC0tLS9wMVxuICAgICAgICAgICAgICogICAgICAgIFxcICB8fCAgLyAgICAgICAgICAgICAgXFwgICAgICAvXG4gICAgICAgICAgICAgKiAgICAgICBhclxcIHx8IC9iciAgICAgICAgICAgICBiXFwgICAgL2JyXG4gICAgICAgICAgICAgKiAgICAgICAgICBcXHx8LyAgICAgICAgICAgICAgICAgIFxcICAvXG4gICAgICAgICAgICAgKiAgICAgICAgICAgcHIgICAgICAgICAgICAgICAgICAgIHByXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGEwID0gYSAtIGEgJSAzO1xuICAgICAgICAgICAgYXIgPSBhMCArIChhICsgMikgJSAzO1xuXG4gICAgICAgICAgICBpZiAoYiA9PT0gLTEpIHsgLy8gY29udmV4IGh1bGwgZWRnZVxuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSBicmVhaztcbiAgICAgICAgICAgICAgICBhID0gRURHRV9TVEFDS1stLWldO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBiMCA9IGIgLSBiICUgMztcbiAgICAgICAgICAgIGNvbnN0IGFsID0gYTAgKyAoYSArIDEpICUgMztcbiAgICAgICAgICAgIGNvbnN0IGJsID0gYjAgKyAoYiArIDIpICUgMztcblxuICAgICAgICAgICAgY29uc3QgcDAgPSB0cmlhbmdsZXNbYXJdO1xuICAgICAgICAgICAgY29uc3QgcHIgPSB0cmlhbmdsZXNbYV07XG4gICAgICAgICAgICBjb25zdCBwbCA9IHRyaWFuZ2xlc1thbF07XG4gICAgICAgICAgICBjb25zdCBwMSA9IHRyaWFuZ2xlc1tibF07XG5cbiAgICAgICAgICAgIGNvbnN0IGlsbGVnYWwgPSBpbkNpcmNsZShcbiAgICAgICAgICAgICAgICBjb29yZHNbMiAqIHAwXSwgY29vcmRzWzIgKiBwMCArIDFdLFxuICAgICAgICAgICAgICAgIGNvb3Jkc1syICogcHJdLCBjb29yZHNbMiAqIHByICsgMV0sXG4gICAgICAgICAgICAgICAgY29vcmRzWzIgKiBwbF0sIGNvb3Jkc1syICogcGwgKyAxXSxcbiAgICAgICAgICAgICAgICBjb29yZHNbMiAqIHAxXSwgY29vcmRzWzIgKiBwMSArIDFdKTtcblxuICAgICAgICAgICAgaWYgKGlsbGVnYWwpIHtcbiAgICAgICAgICAgICAgICB0cmlhbmdsZXNbYV0gPSBwMTtcbiAgICAgICAgICAgICAgICB0cmlhbmdsZXNbYl0gPSBwMDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhibCA9IGhhbGZlZGdlc1tibF07XG5cbiAgICAgICAgICAgICAgICAvLyBlZGdlIHN3YXBwZWQgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGh1bGwgKHJhcmUpOyBmaXggdGhlIGhhbGZlZGdlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgIGlmIChoYmwgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlID0gdGhpcy5faHVsbFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faHVsbFRyaVtlXSA9PT0gYmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9odWxsVHJpW2VdID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9odWxsUHJldltlXTtcbiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoZSAhPT0gdGhpcy5faHVsbFN0YXJ0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fbGluayhhLCBoYmwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpbmsoYiwgaGFsZmVkZ2VzW2FyXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGluayhhciwgYmwpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYnIgPSBiMCArIChiICsgMSkgJSAzO1xuXG4gICAgICAgICAgICAgICAgLy8gZG9uJ3Qgd29ycnkgYWJvdXQgaGl0dGluZyB0aGUgY2FwOiBpdCBjYW4gb25seSBoYXBwZW4gb24gZXh0cmVtZWx5IGRlZ2VuZXJhdGUgaW5wdXRcbiAgICAgICAgICAgICAgICBpZiAoaSA8IEVER0VfU1RBQ0subGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIEVER0VfU1RBQ0tbaSsrXSA9IGJyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIGJyZWFrO1xuICAgICAgICAgICAgICAgIGEgPSBFREdFX1NUQUNLWy0taV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXI7XG4gICAgfVxuXG4gICAgX2xpbmsoYSwgYikge1xuICAgICAgICB0aGlzLl9oYWxmZWRnZXNbYV0gPSBiO1xuICAgICAgICBpZiAoYiAhPT0gLTEpIHRoaXMuX2hhbGZlZGdlc1tiXSA9IGE7XG4gICAgfVxuXG4gICAgLy8gYWRkIGEgbmV3IHRyaWFuZ2xlIGdpdmVuIHZlcnRleCBpbmRpY2VzIGFuZCBhZGphY2VudCBoYWxmLWVkZ2UgaWRzXG4gICAgX2FkZFRyaWFuZ2xlKGkwLCBpMSwgaTIsIGEsIGIsIGMpIHtcbiAgICAgICAgY29uc3QgdCA9IHRoaXMudHJpYW5nbGVzTGVuO1xuXG4gICAgICAgIHRoaXMuX3RyaWFuZ2xlc1t0XSA9IGkwO1xuICAgICAgICB0aGlzLl90cmlhbmdsZXNbdCArIDFdID0gaTE7XG4gICAgICAgIHRoaXMuX3RyaWFuZ2xlc1t0ICsgMl0gPSBpMjtcblxuICAgICAgICB0aGlzLl9saW5rKHQsIGEpO1xuICAgICAgICB0aGlzLl9saW5rKHQgKyAxLCBiKTtcbiAgICAgICAgdGhpcy5fbGluayh0ICsgMiwgYyk7XG5cbiAgICAgICAgdGhpcy50cmlhbmdsZXNMZW4gKz0gMztcblxuICAgICAgICByZXR1cm4gdDtcbiAgICB9XG59XG5cbi8vIG1vbm90b25pY2FsbHkgaW5jcmVhc2VzIHdpdGggcmVhbCBhbmdsZSwgYnV0IGRvZXNuJ3QgbmVlZCBleHBlbnNpdmUgdHJpZ29ub21ldHJ5XG5mdW5jdGlvbiBwc2V1ZG9BbmdsZShkeCwgZHkpIHtcbiAgICBjb25zdCBwID0gZHggLyAoTWF0aC5hYnMoZHgpICsgTWF0aC5hYnMoZHkpKTtcbiAgICByZXR1cm4gKGR5ID4gMCA/IDMgLSBwIDogMSArIHApIC8gNDsgLy8gWzAuLjFdXG59XG5cbmZ1bmN0aW9uIGRpc3QoYXgsIGF5LCBieCwgYnkpIHtcbiAgICBjb25zdCBkeCA9IGF4IC0gYng7XG4gICAgY29uc3QgZHkgPSBheSAtIGJ5O1xuICAgIHJldHVybiBkeCAqIGR4ICsgZHkgKiBkeTtcbn1cblxuZnVuY3Rpb24gaW5DaXJjbGUoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgcHgsIHB5KSB7XG4gICAgY29uc3QgZHggPSBheCAtIHB4O1xuICAgIGNvbnN0IGR5ID0gYXkgLSBweTtcbiAgICBjb25zdCBleCA9IGJ4IC0gcHg7XG4gICAgY29uc3QgZXkgPSBieSAtIHB5O1xuICAgIGNvbnN0IGZ4ID0gY3ggLSBweDtcbiAgICBjb25zdCBmeSA9IGN5IC0gcHk7XG5cbiAgICBjb25zdCBhcCA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgIGNvbnN0IGJwID0gZXggKiBleCArIGV5ICogZXk7XG4gICAgY29uc3QgY3AgPSBmeCAqIGZ4ICsgZnkgKiBmeTtcblxuICAgIHJldHVybiBkeCAqIChleSAqIGNwIC0gYnAgKiBmeSkgLVxuICAgICAgICAgICBkeSAqIChleCAqIGNwIC0gYnAgKiBmeCkgK1xuICAgICAgICAgICBhcCAqIChleCAqIGZ5IC0gZXkgKiBmeCkgPCAwO1xufVxuXG5mdW5jdGlvbiBjaXJjdW1yYWRpdXMoYXgsIGF5LCBieCwgYnksIGN4LCBjeSkge1xuICAgIGNvbnN0IGR4ID0gYnggLSBheDtcbiAgICBjb25zdCBkeSA9IGJ5IC0gYXk7XG4gICAgY29uc3QgZXggPSBjeCAtIGF4O1xuICAgIGNvbnN0IGV5ID0gY3kgLSBheTtcblxuICAgIGNvbnN0IGJsID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgY29uc3QgY2wgPSBleCAqIGV4ICsgZXkgKiBleTtcbiAgICBjb25zdCBkID0gMC41IC8gKGR4ICogZXkgLSBkeSAqIGV4KTtcblxuICAgIGNvbnN0IHggPSAoZXkgKiBibCAtIGR5ICogY2wpICogZDtcbiAgICBjb25zdCB5ID0gKGR4ICogY2wgLSBleCAqIGJsKSAqIGQ7XG5cbiAgICByZXR1cm4geCAqIHggKyB5ICogeTtcbn1cblxuZnVuY3Rpb24gY2lyY3VtY2VudGVyKGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHtcbiAgICBjb25zdCBkeCA9IGJ4IC0gYXg7XG4gICAgY29uc3QgZHkgPSBieSAtIGF5O1xuICAgIGNvbnN0IGV4ID0gY3ggLSBheDtcbiAgICBjb25zdCBleSA9IGN5IC0gYXk7XG5cbiAgICBjb25zdCBibCA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgIGNvbnN0IGNsID0gZXggKiBleCArIGV5ICogZXk7XG4gICAgY29uc3QgZCA9IDAuNSAvIChkeCAqIGV5IC0gZHkgKiBleCk7XG5cbiAgICBjb25zdCB4ID0gYXggKyAoZXkgKiBibCAtIGR5ICogY2wpICogZDtcbiAgICBjb25zdCB5ID0gYXkgKyAoZHggKiBjbCAtIGV4ICogYmwpICogZDtcblxuICAgIHJldHVybiB7eCwgeX07XG59XG5cbmZ1bmN0aW9uIHF1aWNrc29ydChpZHMsIGRpc3RzLCBsZWZ0LCByaWdodCkge1xuICAgIGlmIChyaWdodCAtIGxlZnQgPD0gMjApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGxlZnQgKyAxOyBpIDw9IHJpZ2h0OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBpZHNbaV07XG4gICAgICAgICAgICBjb25zdCB0ZW1wRGlzdCA9IGRpc3RzW3RlbXBdO1xuICAgICAgICAgICAgbGV0IGogPSBpIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChqID49IGxlZnQgJiYgZGlzdHNbaWRzW2pdXSA+IHRlbXBEaXN0KSBpZHNbaiArIDFdID0gaWRzW2otLV07XG4gICAgICAgICAgICBpZHNbaiArIDFdID0gdGVtcDtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1lZGlhbiA9IChsZWZ0ICsgcmlnaHQpID4+IDE7XG4gICAgICAgIGxldCBpID0gbGVmdCArIDE7XG4gICAgICAgIGxldCBqID0gcmlnaHQ7XG4gICAgICAgIHN3YXAoaWRzLCBtZWRpYW4sIGkpO1xuICAgICAgICBpZiAoZGlzdHNbaWRzW2xlZnRdXSA+IGRpc3RzW2lkc1tyaWdodF1dKSBzd2FwKGlkcywgbGVmdCwgcmlnaHQpO1xuICAgICAgICBpZiAoZGlzdHNbaWRzW2ldXSA+IGRpc3RzW2lkc1tyaWdodF1dKSBzd2FwKGlkcywgaSwgcmlnaHQpO1xuICAgICAgICBpZiAoZGlzdHNbaWRzW2xlZnRdXSA+IGRpc3RzW2lkc1tpXV0pIHN3YXAoaWRzLCBsZWZ0LCBpKTtcblxuICAgICAgICBjb25zdCB0ZW1wID0gaWRzW2ldO1xuICAgICAgICBjb25zdCB0ZW1wRGlzdCA9IGRpc3RzW3RlbXBdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgZG8gaSsrOyB3aGlsZSAoZGlzdHNbaWRzW2ldXSA8IHRlbXBEaXN0KTtcbiAgICAgICAgICAgIGRvIGotLTsgd2hpbGUgKGRpc3RzW2lkc1tqXV0gPiB0ZW1wRGlzdCk7XG4gICAgICAgICAgICBpZiAoaiA8IGkpIGJyZWFrO1xuICAgICAgICAgICAgc3dhcChpZHMsIGksIGopO1xuICAgICAgICB9XG4gICAgICAgIGlkc1tsZWZ0ICsgMV0gPSBpZHNbal07XG4gICAgICAgIGlkc1tqXSA9IHRlbXA7XG5cbiAgICAgICAgaWYgKHJpZ2h0IC0gaSArIDEgPj0gaiAtIGxlZnQpIHtcbiAgICAgICAgICAgIHF1aWNrc29ydChpZHMsIGRpc3RzLCBpLCByaWdodCk7XG4gICAgICAgICAgICBxdWlja3NvcnQoaWRzLCBkaXN0cywgbGVmdCwgaiAtIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVpY2tzb3J0KGlkcywgZGlzdHMsIGxlZnQsIGogLSAxKTtcbiAgICAgICAgICAgIHF1aWNrc29ydChpZHMsIGRpc3RzLCBpLCByaWdodCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN3YXAoYXJyLCBpLCBqKSB7XG4gICAgY29uc3QgdG1wID0gYXJyW2ldO1xuICAgIGFycltpXSA9IGFycltqXTtcbiAgICBhcnJbal0gPSB0bXA7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRHZXRYKHApIHtcbiAgICByZXR1cm4gcFswXTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRHZXRZKHApIHtcbiAgICByZXR1cm4gcFsxXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/delaunator/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/dequal/dist/index.mjs": +/*!***************************************************!*\ + !*** ../../../node_modules/dequal/dist/index.mjs ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"dequal\": () => (/* binding */ dequal)\n/* harmony export */ });\nvar has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nfunction dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlcXVhbC9kaXN0L2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGVxdWFsL2Rpc3QvaW5kZXgubWpzPzQ4ODEiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGZpbmQoaXRlciwgdGFyLCBrZXkpIHtcblx0Zm9yIChrZXkgb2YgaXRlci5rZXlzKCkpIHtcblx0XHRpZiAoZGVxdWFsKGtleSwgdGFyKSkgcmV0dXJuIGtleTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVxdWFsKGZvbywgYmFyKSB7XG5cdHZhciBjdG9yLCBsZW4sIHRtcDtcblx0aWYgKGZvbyA9PT0gYmFyKSByZXR1cm4gdHJ1ZTtcblxuXHRpZiAoZm9vICYmIGJhciAmJiAoY3Rvcj1mb28uY29uc3RydWN0b3IpID09PSBiYXIuY29uc3RydWN0b3IpIHtcblx0XHRpZiAoY3RvciA9PT0gRGF0ZSkgcmV0dXJuIGZvby5nZXRUaW1lKCkgPT09IGJhci5nZXRUaW1lKCk7XG5cdFx0aWYgKGN0b3IgPT09IFJlZ0V4cCkgcmV0dXJuIGZvby50b1N0cmluZygpID09PSBiYXIudG9TdHJpbmcoKTtcblxuXHRcdGlmIChjdG9yID09PSBBcnJheSkge1xuXHRcdFx0aWYgKChsZW49Zm9vLmxlbmd0aCkgPT09IGJhci5sZW5ndGgpIHtcblx0XHRcdFx0d2hpbGUgKGxlbi0tICYmIGRlcXVhbChmb29bbGVuXSwgYmFyW2xlbl0pKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBsZW4gPT09IC0xO1xuXHRcdH1cblxuXHRcdGlmIChjdG9yID09PSBTZXQpIHtcblx0XHRcdGlmIChmb28uc2l6ZSAhPT0gYmFyLnNpemUpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZW4gb2YgZm9vKSB7XG5cdFx0XHRcdHRtcCA9IGxlbjtcblx0XHRcdFx0aWYgKHRtcCAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRtcCA9IGZpbmQoYmFyLCB0bXApO1xuXHRcdFx0XHRcdGlmICghdG1wKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFiYXIuaGFzKHRtcCkpIHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChjdG9yID09PSBNYXApIHtcblx0XHRcdGlmIChmb28uc2l6ZSAhPT0gYmFyLnNpemUpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZW4gb2YgZm9vKSB7XG5cdFx0XHRcdHRtcCA9IGxlblswXTtcblx0XHRcdFx0aWYgKHRtcCAmJiB0eXBlb2YgdG1wID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRtcCA9IGZpbmQoYmFyLCB0bXApO1xuXHRcdFx0XHRcdGlmICghdG1wKSByZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCFkZXF1YWwobGVuWzFdLCBiYXIuZ2V0KHRtcCkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoY3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcblx0XHRcdGZvbyA9IG5ldyBVaW50OEFycmF5KGZvbyk7XG5cdFx0XHRiYXIgPSBuZXcgVWludDhBcnJheShiYXIpO1xuXHRcdH0gZWxzZSBpZiAoY3RvciA9PT0gRGF0YVZpZXcpIHtcblx0XHRcdGlmICgobGVuPWZvby5ieXRlTGVuZ3RoKSA9PT0gYmFyLmJ5dGVMZW5ndGgpIHtcblx0XHRcdFx0d2hpbGUgKGxlbi0tICYmIGZvby5nZXRJbnQ4KGxlbikgPT09IGJhci5nZXRJbnQ4KGxlbikpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlbiA9PT0gLTE7XG5cdFx0fVxuXG5cdFx0aWYgKEFycmF5QnVmZmVyLmlzVmlldyhmb28pKSB7XG5cdFx0XHRpZiAoKGxlbj1mb28uYnl0ZUxlbmd0aCkgPT09IGJhci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRcdHdoaWxlIChsZW4tLSAmJiBmb29bbGVuXSA9PT0gYmFyW2xlbl0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlbiA9PT0gLTE7XG5cdFx0fVxuXG5cdFx0aWYgKCFjdG9yIHx8IHR5cGVvZiBmb28gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRsZW4gPSAwO1xuXHRcdFx0Zm9yIChjdG9yIGluIGZvbykge1xuXHRcdFx0XHRpZiAoaGFzLmNhbGwoZm9vLCBjdG9yKSAmJiArK2xlbiAmJiAhaGFzLmNhbGwoYmFyLCBjdG9yKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZiAoIShjdG9yIGluIGJhcikgfHwgIWRlcXVhbChmb29bY3Rvcl0sIGJhcltjdG9yXSkpIHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBPYmplY3Qua2V5cyhiYXIpLmxlbmd0aCA9PT0gbGVuO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBmb28gIT09IGZvbyAmJiBiYXIgIT09IGJhcjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dequal/dist/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/diff/lib/index.mjs": +/*!************************************************!*\ + !*** ../../../node_modules/diff/lib/index.mjs ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Diff\": () => (/* binding */ Diff),\n/* harmony export */ \"applyPatch\": () => (/* binding */ applyPatch),\n/* harmony export */ \"applyPatches\": () => (/* binding */ applyPatches),\n/* harmony export */ \"canonicalize\": () => (/* binding */ canonicalize),\n/* harmony export */ \"convertChangesToDMP\": () => (/* binding */ convertChangesToDMP),\n/* harmony export */ \"convertChangesToXML\": () => (/* binding */ convertChangesToXML),\n/* harmony export */ \"createPatch\": () => (/* binding */ createPatch),\n/* harmony export */ \"createTwoFilesPatch\": () => (/* binding */ createTwoFilesPatch),\n/* harmony export */ \"diffArrays\": () => (/* binding */ diffArrays),\n/* harmony export */ \"diffChars\": () => (/* binding */ diffChars),\n/* harmony export */ \"diffCss\": () => (/* binding */ diffCss),\n/* harmony export */ \"diffJson\": () => (/* binding */ diffJson),\n/* harmony export */ \"diffLines\": () => (/* binding */ diffLines),\n/* harmony export */ \"diffSentences\": () => (/* binding */ diffSentences),\n/* harmony export */ \"diffTrimmedLines\": () => (/* binding */ diffTrimmedLines),\n/* harmony export */ \"diffWords\": () => (/* binding */ diffWords),\n/* harmony export */ \"diffWordsWithSpace\": () => (/* binding */ diffWordsWithSpace),\n/* harmony export */ \"merge\": () => (/* binding */ merge),\n/* harmony export */ \"parsePatch\": () => (/* binding */ parsePatch),\n/* harmony export */ \"structuredPatch\": () => (/* binding */ structuredPatch)\n/* harmony export */ });\nfunction Diff() {}\nDiff.prototype = {\n diff: function diff(oldString, newString) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var bestPath = [{\n newPos: -1,\n components: []\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n function execEditLength() {\n for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n var basePath = void 0;\n\n var addPath = bestPath[diagonalPath - 1],\n removePath = bestPath[diagonalPath + 1],\n _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n if (addPath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = addPath && addPath.newPos + 1 < newLen,\n canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the new string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n\n\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = clonePath(removePath);\n self.pushComponent(basePath.components, undefined, true);\n } else {\n basePath = addPath; // No need to clone, we've pulled it from the list\n\n basePath.newPos++;\n self.pushComponent(basePath.components, true, undefined);\n }\n\n _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done\n\n if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {\n return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));\n } else {\n // Otherwise track this path as a potential candidate and continue.\n bestPath[diagonalPath] = basePath;\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n pushComponent: function pushComponent(components, added, removed) {\n var last = components[components.length - 1];\n\n if (last && last.added === added && last.removed === removed) {\n // We need to clone here as the component clone operation is just\n // as shallow array clone\n components[components.length - 1] = {\n count: last.count + 1,\n added: added,\n removed: removed\n };\n } else {\n components.push({\n count: 1,\n added: added,\n removed: removed\n });\n }\n },\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n newPos = basePath.newPos,\n oldPos = newPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.components.push({\n count: commonCount\n });\n }\n\n basePath.newPos = newPos;\n return oldPos;\n },\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n castInput: function castInput(value) {\n return value;\n },\n tokenize: function tokenize(value) {\n return value.split('');\n },\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, components, newString, oldString, useLongestToken) {\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var lastComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {\n components[componentLen - 2].value += lastComponent.value;\n components.pop();\n }\n\n return components;\n}\n\nfunction clonePath(path) {\n return {\n newPos: path.newPos,\n components: path.components.slice(0)\n };\n}\n\nvar characterDiff = new Diff();\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\n\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new Diff();\n\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options = generateOptions(options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nvar lineDiff = new Diff();\n\nlineDiff.tokenize = function (value) {\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options = generateOptions(callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n\nvar sentenceDiff = new Diff();\n\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n\nvar cssDiff = new Diff();\n\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\njsonDiff.useLongestToken = true;\njsonDiff.tokenize = lineDiff.tokenize;\n\njsonDiff.castInput = function (value) {\n var _this$options = this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {\n return typeof v === 'undefined' ? undefinedReplacement : v;\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'));\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (_typeof(obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n\nvar arrayDiff = new Diff();\n\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nfunction parsePatch(uniDiff) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction distanceIterator (start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n\nfunction applyPatch(source, uniDiff) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n return line === patchContent;\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator = distanceIterator(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters[j];\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff = diffLines(oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n var _loop = function _loop(i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n var _curRange;\n\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n var _curRange2;\n\n // Overlapping\n (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n } else {\n var _curRange3;\n\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n _loop(i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\nfunction formatPatch(diff) {\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction calcLineCount(hunk) {\n var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return parsePatch(param)[0];\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return structuredPatch(undefined, undefined, base, param);\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n var _hunk$lines;\n\n // Mine inserted\n (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n var _hunk$lines2;\n\n // Theirs inserted\n (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n var _hunk$lines3;\n\n (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n\n return;\n } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n var _hunk$lines4;\n\n (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n\n return;\n }\n } else if (arrayEqual(myChanges, theirChanges)) {\n var _hunk$lines5;\n\n (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n var _hunk$lines6;\n\n (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RpZmYvbGliL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTs7O0FBR047QUFDQSwrQ0FBK0MsNEJBQTRCO0FBQzNFOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDViw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQSxvRkFBb0Y7O0FBRXBGO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixvQkFBb0I7QUFDdEM7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixvQkFBb0I7QUFDdEM7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QiwyQkFBMkI7QUFDM0IsMkJBQTJCO0FBQzNCLDZCQUE2QjtBQUM3QjtBQUNBOztBQUU2UiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZGlmZi9saWIvaW5kZXgubWpzPzUxNTgiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gRGlmZigpIHt9XG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZjogZnVuY3Rpb24gZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZykge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcbiAgICB2YXIgY2FsbGJhY2sgPSBvcHRpb25zLmNhbGxiYWNrO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7XG4gICAgICAgIH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuXG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG4gICAgb2xkU3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG9sZFN0cmluZykpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShuZXdTdHJpbmcpKTtcbiAgICB2YXIgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICB2YXIgZWRpdExlbmd0aCA9IDE7XG4gICAgdmFyIG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG5cbiAgICBpZiAob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG5cbiAgICB2YXIgYmVzdFBhdGggPSBbe1xuICAgICAgbmV3UG9zOiAtMSxcbiAgICAgIGNvbXBvbmVudHM6IFtdXG4gICAgfV07IC8vIFNlZWQgZWRpdExlbmd0aCA9IDAsIGkuZS4gdGhlIGNvbnRlbnQgc3RhcnRzIHdpdGggdGhlIHNhbWUgdmFsdWVzXG5cbiAgICB2YXIgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7XG5cbiAgICBpZiAoYmVzdFBhdGhbMF0ubmV3UG9zICsgMSA+PSBuZXdMZW4gJiYgb2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3tcbiAgICAgICAgdmFsdWU6IHRoaXMuam9pbihuZXdTdHJpbmcpLFxuICAgICAgICBjb3VudDogbmV3U3RyaW5nLmxlbmd0aFxuICAgICAgfV0pO1xuICAgIH0gLy8gTWFpbiB3b3JrZXIgbWV0aG9kLiBjaGVja3MgYWxsIHBlcm11dGF0aW9ucyBvZiBhIGdpdmVuIGVkaXQgbGVuZ3RoIGZvciBhY2NlcHRhbmNlLlxuXG5cbiAgICBmdW5jdGlvbiBleGVjRWRpdExlbmd0aCgpIHtcbiAgICAgIGZvciAodmFyIGRpYWdvbmFsUGF0aCA9IC0xICogZWRpdExlbmd0aDsgZGlhZ29uYWxQYXRoIDw9IGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCArPSAyKSB7XG4gICAgICAgIHZhciBiYXNlUGF0aCA9IHZvaWQgMDtcblxuICAgICAgICB2YXIgYWRkUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdLFxuICAgICAgICAgICAgcmVtb3ZlUGF0aCA9IGJlc3RQYXRoW2RpYWdvbmFsUGF0aCArIDFdLFxuICAgICAgICAgICAgX29sZFBvcyA9IChyZW1vdmVQYXRoID8gcmVtb3ZlUGF0aC5uZXdQb3MgOiAwKSAtIGRpYWdvbmFsUGF0aDtcblxuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIE5vIG9uZSBlbHNlIGlzIGdvaW5nIHRvIGF0dGVtcHQgdG8gdXNlIHRoaXMgdmFsdWUsIGNsZWFyIGl0XG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2FuQWRkID0gYWRkUGF0aCAmJiBhZGRQYXRoLm5ld1BvcyArIDEgPCBuZXdMZW4sXG4gICAgICAgICAgICBjYW5SZW1vdmUgPSByZW1vdmVQYXRoICYmIDAgPD0gX29sZFBvcyAmJiBfb2xkUG9zIDwgb2xkTGVuO1xuXG4gICAgICAgIGlmICghY2FuQWRkICYmICFjYW5SZW1vdmUpIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIHBhdGggaXMgYSB0ZXJtaW5hbCB0aGVuIHBydW5lXG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuXG5cbiAgICAgICAgaWYgKCFjYW5BZGQgfHwgY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IGNsb25lUGF0aChyZW1vdmVQYXRoKTtcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IGFkZFBhdGg7IC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG5cbiAgICAgICAgICBiYXNlUGF0aC5uZXdQb3MrKztcbiAgICAgICAgICBzZWxmLnB1c2hDb21wb25lbnQoYmFzZVBhdGguY29tcG9uZW50cywgdHJ1ZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9vbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpOyAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBfb2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICByZXR1cm4gZG9uZShidWlsZFZhbHVlcyhzZWxmLCBiYXNlUGF0aC5jb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgc2VsZi51c2VMb25nZXN0VG9rZW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgdHJhY2sgdGhpcyBwYXRoIGFzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSBhbmQgY29udGludWUuXG4gICAgICAgICAgYmVzdFBhdGhbZGlhZ29uYWxQYXRoXSA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGVkaXRMZW5ndGgrKztcbiAgICB9IC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cblxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAoZnVuY3Rpb24gZXhlYygpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKGVkaXRMZW5ndGggPiBtYXhFZGl0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWV4ZWNFZGl0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIGV4ZWMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGVkaXRMZW5ndGggPD0gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICB2YXIgcmV0ID0gZXhlY0VkaXRMZW5ndGgoKTtcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcHVzaENvbXBvbmVudDogZnVuY3Rpb24gcHVzaENvbXBvbmVudChjb21wb25lbnRzLCBhZGRlZCwgcmVtb3ZlZCkge1xuICAgIHZhciBsYXN0ID0gY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGxhc3QgJiYgbGFzdC5hZGRlZCA9PT0gYWRkZWQgJiYgbGFzdC5yZW1vdmVkID09PSByZW1vdmVkKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGNsb25lIGhlcmUgYXMgdGhlIGNvbXBvbmVudCBjbG9uZSBvcGVyYXRpb24gaXMganVzdFxuICAgICAgLy8gYXMgc2hhbGxvdyBhcnJheSBjbG9uZVxuICAgICAgY29tcG9uZW50c1tjb21wb25lbnRzLmxlbmd0aCAtIDFdID0ge1xuICAgICAgICBjb3VudDogbGFzdC5jb3VudCArIDEsXG4gICAgICAgIGFkZGVkOiBhZGRlZCxcbiAgICAgICAgcmVtb3ZlZDogcmVtb3ZlZFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIGFkZGVkOiBhZGRlZCxcbiAgICAgICAgcmVtb3ZlZDogcmVtb3ZlZFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBleHRyYWN0Q29tbW9uOiBmdW5jdGlvbiBleHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKSB7XG4gICAgdmFyIG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsXG4gICAgICAgIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGgsXG4gICAgICAgIG5ld1BvcyA9IGJhc2VQYXRoLm5ld1BvcyxcbiAgICAgICAgb2xkUG9zID0gbmV3UG9zIC0gZGlhZ29uYWxQYXRoLFxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG5cbiAgICB3aGlsZSAobmV3UG9zICsgMSA8IG5ld0xlbiAmJiBvbGRQb3MgKyAxIDwgb2xkTGVuICYmIHRoaXMuZXF1YWxzKG5ld1N0cmluZ1tuZXdQb3MgKyAxXSwgb2xkU3RyaW5nW29sZFBvcyArIDFdKSkge1xuICAgICAgbmV3UG9zKys7XG4gICAgICBvbGRQb3MrKztcbiAgICAgIGNvbW1vbkNvdW50Kys7XG4gICAgfVxuXG4gICAgaWYgKGNvbW1vbkNvdW50KSB7XG4gICAgICBiYXNlUGF0aC5jb21wb25lbnRzLnB1c2goe1xuICAgICAgICBjb3VudDogY29tbW9uQ291bnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGJhc2VQYXRoLm5ld1BvcyA9IG5ld1BvcztcbiAgICByZXR1cm4gb2xkUG9zO1xuICB9LFxuICBlcXVhbHM6IGZ1bmN0aW9uIGVxdWFscyhsZWZ0LCByaWdodCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKGxlZnQsIHJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8IHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5OiBmdW5jdGlvbiByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgY2FzdElucHV0OiBmdW5jdGlvbiBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplOiBmdW5jdGlvbiB0b2tlbml6ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5zcGxpdCgnJyk7XG4gIH0sXG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oY2hhcnMpIHtcbiAgICByZXR1cm4gY2hhcnMuam9pbignJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVmFsdWVzKGRpZmYsIGNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCB1c2VMb25nZXN0VG9rZW4pIHtcbiAgdmFyIGNvbXBvbmVudFBvcyA9IDAsXG4gICAgICBjb21wb25lbnRMZW4gPSBjb21wb25lbnRzLmxlbmd0aCxcbiAgICAgIG5ld1BvcyA9IDAsXG4gICAgICBvbGRQb3MgPSAwO1xuXG4gIGZvciAoOyBjb21wb25lbnRQb3MgPCBjb21wb25lbnRMZW47IGNvbXBvbmVudFBvcysrKSB7XG4gICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zXTtcblxuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICB2YXIgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbiAodmFsdWUsIGkpIHtcbiAgICAgICAgICB2YXIgb2xkVmFsdWUgPSBvbGRTdHJpbmdbb2xkUG9zICsgaV07XG4gICAgICAgICAgcmV0dXJuIG9sZFZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCA/IG9sZFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuXG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50OyAvLyBDb21tb24gY2FzZVxuXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50OyAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgdmFyIHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuXG5cbiAgdmFyIGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuXG4gIGlmIChjb21wb25lbnRMZW4gPiAxICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJyAmJiAobGFzdENvbXBvbmVudC5hZGRlZCB8fCBsYXN0Q29tcG9uZW50LnJlbW92ZWQpICYmIGRpZmYuZXF1YWxzKCcnLCBsYXN0Q29tcG9uZW50LnZhbHVlKSkge1xuICAgIGNvbXBvbmVudHNbY29tcG9uZW50TGVuIC0gMl0udmFsdWUgKz0gbGFzdENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cbmZ1bmN0aW9uIGNsb25lUGF0aChwYXRoKSB7XG4gIHJldHVybiB7XG4gICAgbmV3UG9zOiBwYXRoLm5ld1BvcyxcbiAgICBjb21wb25lbnRzOiBwYXRoLmNvbXBvbmVudHMuc2xpY2UoMClcbiAgfTtcbn1cblxudmFyIGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZnVuY3Rpb24gZGlmZkNoYXJzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjaGFyYWN0ZXJEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU9wdGlvbnMob3B0aW9ucywgZGVmYXVsdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVmYXVsdHMuY2FsbGJhY2sgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIG9wdGlvbnMpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBkZWZhdWx0c1tuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRzO1xufVxuXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5cbnZhciBleHRlbmRlZFdvcmRDaGFycyA9IC9eW0EtWmEtelxceEMwLVxcdTAyQzZcXHUwMkM4LVxcdTAyRDdcXHUwMkRFLVxcdTAyRkZcXHUxRTAwLVxcdTFFRkZdKyQvO1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xudmFyIHdvcmREaWZmID0gbmV3IERpZmYoKTtcblxud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24gKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8IHRoaXMub3B0aW9ucy5pZ25vcmVXaGl0ZXNwYWNlICYmICFyZVdoaXRlc3BhY2UudGVzdChsZWZ0KSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QocmlnaHQpO1xufTtcblxud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgdmFyIHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTsgLy8gSm9pbiB0aGUgYm91bmRhcnkgc3BsaXRzIHRoYXQgd2UgZG8gbm90IGNvbnNpZGVyIHRvIGJlIGJvdW5kYXJpZXMuIFRoaXMgaXMgcHJpbWFyaWx5IHRoZSBleHRlbmRlZCBMYXRpbiBjaGFyYWN0ZXIgc2V0LlxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdICYmIGV4dGVuZGVkV29yZENoYXJzLnRlc3QodG9rZW5zW2ldKSAmJiBleHRlbmRlZFdvcmRDaGFycy50ZXN0KHRva2Vuc1tpICsgMl0pKSB7XG4gICAgICB0b2tlbnNbaV0gKz0gdG9rZW5zW2kgKyAyXTtcbiAgICAgIHRva2Vucy5zcGxpY2UoaSArIDEsIDIpO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59O1xuXG5mdW5jdGlvbiBkaWZmV29yZHMob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhvcHRpb25zLCB7XG4gICAgaWdub3JlV2hpdGVzcGFjZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIHdvcmREaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuZnVuY3Rpb24gZGlmZldvcmRzV2l0aFNwYWNlKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxudmFyIGxpbmVEaWZmID0gbmV3IERpZmYoKTtcblxubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHJldExpbmVzID0gW10sXG4gICAgICBsaW5lc0FuZE5ld2xpbmVzID0gdmFsdWUuc3BsaXQoLyhcXG58XFxyXFxuKS8pOyAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcblxuICBpZiAoIWxpbmVzQW5kTmV3bGluZXNbbGluZXNBbmROZXdsaW5lcy5sZW5ndGggLSAxXSkge1xuICAgIGxpbmVzQW5kTmV3bGluZXMucG9wKCk7XG4gIH0gLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcblxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuXG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmZ1bmN0aW9uIGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGRpZmZUcmltbWVkTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIHZhciBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKGNhbGxiYWNrLCB7XG4gICAgaWdub3JlV2hpdGVzcGFjZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuXG52YXIgc2VudGVuY2VEaWZmID0gbmV3IERpZmYoKTtcblxuc2VudGVuY2VEaWZmLnRva2VuaXplID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFxcUy4rP1suIT9dKSg/PVxccyt8JCkvKTtcbn07XG5cbmZ1bmN0aW9uIGRpZmZTZW50ZW5jZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIHJldHVybiBzZW50ZW5jZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spO1xufVxuXG52YXIgY3NzRGlmZiA9IG5ldyBEaWZmKCk7XG5cbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oW3t9OjssXXxcXHMrKS8pO1xufTtcblxuZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgX3R5cGVvZiA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gX3R5cGVvZihvYmopO1xufVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7XG4gIHJldHVybiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFycikgfHwgX25vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7XG59XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbiAgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpO1xuICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTtcbiAgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xufVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikge1xuICBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgcmV0dXJuIGFycjI7XG59XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5cbnZhciBvYmplY3RQcm90b3R5cGVUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIganNvbkRpZmYgPSBuZXcgRGlmZigpOyAvLyBEaXNjcmltaW5hdGUgYmV0d2VlbiB0d28gbGluZXMgb2YgcHJldHR5LXByaW50ZWQsIHNlcmlhbGl6ZWQgSlNPTiB3aGVyZSBvbmUgb2YgdGhlbSBoYXMgYVxuLy8gZGFuZ2xpbmcgY29tbWEgYW5kIHRoZSBvdGhlciBkb2Vzbid0LiBUdXJucyBvdXQgaW5jbHVkaW5nIHRoZSBkYW5nbGluZyBjb21tYSB5aWVsZHMgdGhlIG5pY2VzdCBvdXRwdXQ6XG5cbmpzb25EaWZmLnVzZUxvbmdlc3RUb2tlbiA9IHRydWU7XG5qc29uRGlmZi50b2tlbml6ZSA9IGxpbmVEaWZmLnRva2VuaXplO1xuXG5qc29uRGlmZi5jYXN0SW5wdXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIF90aGlzJG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICB1bmRlZmluZWRSZXBsYWNlbWVudCA9IF90aGlzJG9wdGlvbnMudW5kZWZpbmVkUmVwbGFjZW1lbnQsXG4gICAgICBfdGhpcyRvcHRpb25zJHN0cmluZ2kgPSBfdGhpcyRvcHRpb25zLnN0cmluZ2lmeVJlcGxhY2VyLFxuICAgICAgc3RyaW5naWZ5UmVwbGFjZXIgPSBfdGhpcyRvcHRpb25zJHN0cmluZ2kgPT09IHZvaWQgMCA/IGZ1bmN0aW9uIChrLCB2KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZFJlcGxhY2VtZW50IDogdjtcbiAgfSA6IF90aGlzJG9wdGlvbnMkc3RyaW5naTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbGl6ZSh2YWx1ZSwgbnVsbCwgbnVsbCwgc3RyaW5naWZ5UmVwbGFjZXIpLCBzdHJpbmdpZnlSZXBsYWNlciwgJyAgJyk7XG59O1xuXG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbiAobGVmdCwgcmlnaHQpIHtcbiAgcmV0dXJuIERpZmYucHJvdG90eXBlLmVxdWFscy5jYWxsKGpzb25EaWZmLCBsZWZ0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpLCByaWdodC5yZXBsYWNlKC8sKFtcXHJcXG5dKS9nLCAnJDEnKSk7XG59O1xuXG5mdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykge1xuICByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7XG59IC8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcHJlc2VuY2Ugb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBiYWlsaW5nIG91dCB3aGVuIGVuY291bnRlcmluZyBhblxuLy8gb2JqZWN0IHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUgXCJzdGFja1wiIG9mIGl0ZW1zIGJlaW5nIHByb2Nlc3NlZC4gQWNjZXB0cyBhbiBvcHRpb25hbCByZXBsYWNlclxuXG5mdW5jdGlvbiBjYW5vbmljYWxpemUob2JqLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjaywgcmVwbGFjZXIsIGtleSkge1xuICBzdGFjayA9IHN0YWNrIHx8IFtdO1xuICByZXBsYWNlbWVudFN0YWNrID0gcmVwbGFjZW1lbnRTdGFjayB8fCBbXTtcblxuICBpZiAocmVwbGFjZXIpIHtcbiAgICBvYmogPSByZXBsYWNlcihrZXksIG9iaik7XG4gIH1cblxuICB2YXIgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoc3RhY2tbaV0gPT09IG9iaikge1xuICAgICAgcmV0dXJuIHJlcGxhY2VtZW50U3RhY2tbaV07XG4gICAgfVxuICB9XG5cbiAgdmFyIGNhbm9uaWNhbGl6ZWRPYmo7XG5cbiAgaWYgKCdbb2JqZWN0IEFycmF5XScgPT09IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nLmNhbGwob2JqKSkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0gbmV3IEFycmF5KG9iai5sZW5ndGgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpbaV0gPSBjYW5vbmljYWxpemUob2JqW2ldLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjaywgcmVwbGFjZXIsIGtleSk7XG4gICAgfVxuXG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmIChfdHlwZW9mKG9iaikgPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0ge307XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wdXNoKGNhbm9uaWNhbGl6ZWRPYmopO1xuXG4gICAgdmFyIHNvcnRlZEtleXMgPSBbXSxcbiAgICAgICAgX2tleTtcblxuICAgIGZvciAoX2tleSBpbiBvYmopIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KF9rZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChfa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3J0ZWRLZXlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBfa2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpbX2tleV0gPSBjYW5vbmljYWxpemUob2JqW19rZXldLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjaywgcmVwbGFjZXIsIF9rZXkpO1xuICAgIH1cblxuICAgIHN0YWNrLnBvcCgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG9iajtcbiAgfVxuXG4gIHJldHVybiBjYW5vbmljYWxpemVkT2JqO1xufVxuXG52YXIgYXJyYXlEaWZmID0gbmV3IERpZmYoKTtcblxuYXJyYXlEaWZmLnRva2VuaXplID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgpO1xufTtcblxuYXJyYXlEaWZmLmpvaW4gPSBhcnJheURpZmYucmVtb3ZlRW1wdHkgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuZnVuY3Rpb24gZGlmZkFycmF5cyhvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIGFycmF5RGlmZi5kaWZmKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGF0Y2godW5pRGlmZikge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhciBkaWZmc3RyID0gdW5pRGlmZi5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSB1bmlEaWZmLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGxpc3QgPSBbXSxcbiAgICAgIGkgPSAwO1xuXG4gIGZ1bmN0aW9uIHBhcnNlSW5kZXgoKSB7XG4gICAgdmFyIGluZGV4ID0ge307XG4gICAgbGlzdC5wdXNoKGluZGV4KTsgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuXG4gICAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgICAgdmFyIGxpbmUgPSBkaWZmc3RyW2ldOyAvLyBGaWxlIGhlYWRlciBmb3VuZCwgZW5kIHBhcnNpbmcgZGlmZiBtZXRhZGF0YVxuXG4gICAgICBpZiAoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IC8vIERpZmYgaW5kZXhcblxuXG4gICAgICB2YXIgaGVhZGVyID0gL14oPzpJbmRleDp8ZGlmZig/OiAtciBcXHcrKSspXFxzKyguKz8pXFxzKiQvLmV4ZWMobGluZSk7XG5cbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9IC8vIFBhcnNlIGZpbGUgaGVhZGVycyBpZiB0aGV5IGFyZSBkZWZpbmVkLiBVbmlmaWVkIGRpZmYgcmVxdWlyZXMgdGhlbSwgYnV0XG4gICAgLy8gdGhlcmUncyBubyB0ZWNobmljYWwgaXNzdWVzIHRvIGhhdmUgYW4gaXNvbGF0ZWQgaHVuayB3aXRob3V0IGZpbGUgaGVhZGVyXG5cblxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTsgLy8gUGFyc2UgaHVua3NcblxuICAgIGluZGV4Lmh1bmtzID0gW107XG5cbiAgICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgICB2YXIgX2xpbmUgPSBkaWZmc3RyW2ldO1xuXG4gICAgICBpZiAoL14oSW5kZXg6fGRpZmZ8XFwtXFwtXFwtfFxcK1xcK1xcKylcXHMvLnRlc3QoX2xpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICgvXkBALy50ZXN0KF9saW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAoX2xpbmUgJiYgb3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgICAgLy8gSWdub3JlIHVuZXhwZWN0ZWQgY29udGVudCB1bmxlc3MgaW4gc3RyaWN0IG1vZGVcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxpbmUgJyArIChpICsgMSkgKyAnICcgKyBKU09OLnN0cmluZ2lmeShfbGluZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG5cblxuICBmdW5jdGlvbiBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpIHtcbiAgICB2YXIgZmlsZUhlYWRlciA9IC9eKC0tLXxcXCtcXCtcXCspXFxzKyguKikkLy5leGVjKGRpZmZzdHJbaV0pO1xuXG4gICAgaWYgKGZpbGVIZWFkZXIpIHtcbiAgICAgIHZhciBrZXlQcmVmaXggPSBmaWxlSGVhZGVyWzFdID09PSAnLS0tJyA/ICdvbGQnIDogJ25ldyc7XG4gICAgICB2YXIgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgdmFyIGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuXG4gICAgICBpZiAoL15cIi4qXCIkLy50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cblxuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0ZpbGVOYW1lJ10gPSBmaWxlTmFtZTtcbiAgICAgIGluZGV4W2tleVByZWZpeCArICdIZWFkZXInXSA9IChkYXRhWzFdIHx8ICcnKS50cmltKCk7XG4gICAgICBpKys7XG4gICAgfVxuICB9IC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG5cblxuICBmdW5jdGlvbiBwYXJzZUh1bmsoKSB7XG4gICAgdmFyIGNodW5rSGVhZGVySW5kZXggPSBpLFxuICAgICAgICBjaHVua0hlYWRlckxpbmUgPSBkaWZmc3RyW2krK10sXG4gICAgICAgIGNodW5rSGVhZGVyID0gY2h1bmtIZWFkZXJMaW5lLnNwbGl0KC9AQCAtKFxcZCspKD86LChcXGQrKSk/IFxcKyhcXGQrKSg/OiwoXFxkKykpPyBAQC8pO1xuICAgIHZhciBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9OyAvLyBVbmlmaWVkIERpZmYgRm9ybWF0IHF1aXJrOiBJZiB0aGUgY2h1bmsgc2l6ZSBpcyAwLFxuICAgIC8vIHRoZSBmaXJzdCBudW1iZXIgaXMgb25lIGxvd2VyIHRoYW4gb25lIHdvdWxkIGV4cGVjdC5cbiAgICAvLyBodHRwczovL3d3dy5hcnRpbWEuY29tL3dlYmxvZ3Mvdmlld3Bvc3QuanNwP3RocmVhZD0xNjQyOTNcblxuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0ICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICB2YXIgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG5cbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDAgJiYgaSArIDIgPCBkaWZmc3RyLmxlbmd0aCAmJiBkaWZmc3RyW2kgKyAxXS5pbmRleE9mKCcrKysgJykgPT09IDAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdmFyIG9wZXJhdGlvbiA9IGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSBkaWZmc3RyLmxlbmd0aCAtIDEgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gLy8gSGFuZGxlIHRoZSBlbXB0eSBibG9jayBjb3VudCBjYXNlXG5cblxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKCFyZW1vdmVDb3VudCAmJiBodW5rLm9sZExpbmVzID09PSAxKSB7XG4gICAgICBodW5rLm9sZExpbmVzID0gMDtcbiAgICB9IC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG5cblxuICAgIGlmIChvcHRpb25zLnN0cmljdCkge1xuICAgICAgaWYgKGFkZENvdW50ICE9PSBodW5rLm5ld0xpbmVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWRkZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cblxuLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmZ1bmN0aW9uIGRpc3RhbmNlSXRlcmF0b3IgKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIHZhciB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuICByZXR1cm4gZnVuY3Rpb24gaXRlcmF0b3IoKSB7XG4gICAgaWYgKHdhbnRGb3J3YXJkICYmICFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICBpZiAoYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgICAgbG9jYWxPZmZzZXQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gZmFsc2U7XG4gICAgICB9IC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmV5b25kIHRleHQgbGVuZ3RoLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBhZnRlciBvZmZzZXQgbG9jYXRpb24gKG9yIGRlc2lyZWQgbG9jYXRpb24gb24gZmlyc3QgaXRlcmF0aW9uKVxuXG5cbiAgICAgIGlmIChzdGFydCArIGxvY2FsT2Zmc2V0IDw9IG1heExpbmUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICBmb3J3YXJkRXhoYXVzdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWJhY2t3YXJkRXhoYXVzdGVkKSB7XG4gICAgICBpZiAoIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSB0cnVlO1xuICAgICAgfSAvLyBDaGVjayBpZiB0cnlpbmcgdG8gZml0IGJlZm9yZSB0ZXh0IGJlZ2lubmluZywgYW5kIGlmIG5vdCwgY2hlY2sgaXQgZml0c1xuICAgICAgLy8gYmVmb3JlIG9mZnNldCBsb2NhdGlvblxuXG5cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9IC8vIFdlIHRyaWVkIHRvIGZpdCBodW5rIGJlZm9yZSB0ZXh0IGJlZ2lubmluZyBhbmQgYmV5b25kIHRleHQgbGVuZ3RoLCB0aGVuXG4gICAgLy8gaHVuayBjYW4ndCBmaXQgb24gdGhlIHRleHQuIFJldHVybiB1bmRlZmluZWRcblxuICB9O1xufVxuXG5mdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZikge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG5cbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9IC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuXG5cbiAgdmFyIGxpbmVzID0gc291cmNlLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHNvdXJjZS5tYXRjaCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vZykgfHwgW10sXG4gICAgICBodW5rcyA9IHVuaURpZmYuaHVua3MsXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgZnVuY3Rpb24gKGxpbmVOdW1iZXIsIGxpbmUsIG9wZXJhdGlvbiwgcGF0Y2hDb250ZW50KSB7XG4gICAgcmV0dXJuIGxpbmUgPT09IHBhdGNoQ29udGVudDtcbiAgfSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgaHVuayBleGFjdGx5IGZpdHMgb24gdGhlIHByb3ZpZGVkIGxvY2F0aW9uXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSBsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmU7XG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcgJyB8fCBvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAvLyBDb250ZXh0IHNhbml0eSBjaGVja1xuICAgICAgICBpZiAoIWNvbXBhcmVMaW5lKHRvUG9zICsgMSwgbGluZXNbdG9Qb3NdLCBvcGVyYXRpb24sIGNvbnRlbnQpKSB7XG4gICAgICAgICAgZXJyb3JDb3VudCsrO1xuXG4gICAgICAgICAgaWYgKGVycm9yQ291bnQgPiBmdXp6RmFjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBTZWFyY2ggYmVzdCBmaXQgb2Zmc2V0cyBmb3IgZWFjaCBodW5rIGJhc2VkIG9uIHRoZSBwcmV2aW91cyBvbmVzXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcbiAgICB2YXIgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcblxuXG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH0gLy8gQXBwbHkgcGF0Y2ggaHVua3NcblxuXG4gIHZhciBkaWZmT2Zmc2V0ID0gMDtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgaHVua3MubGVuZ3RoOyBfaSsrKSB7XG4gICAgdmFyIF9odW5rID0gaHVua3NbX2ldLFxuICAgICAgICBfdG9Qb3MgPSBfaHVuay5vbGRTdGFydCArIF9odW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuXG4gICAgZGlmZk9mZnNldCArPSBfaHVuay5uZXdMaW5lcyAtIF9odW5rLm9sZExpbmVzO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBfaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGxpbmUgPSBfaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSBsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUsXG4gICAgICAgICAgZGVsaW1pdGVyID0gX2h1bmsubGluZWRlbGltaXRlcnNbal07XG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcgJykge1xuICAgICAgICBfdG9Qb3MrKztcbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKF90b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKF90b1BvcywgMSk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZShfdG9Qb3MsIDAsIGNvbnRlbnQpO1xuICAgICAgICBkZWxpbWl0ZXJzLnNwbGljZShfdG9Qb3MsIDAsIGRlbGltaXRlcik7XG4gICAgICAgIF90b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICB2YXIgcHJldmlvdXNPcGVyYXRpb24gPSBfaHVuay5saW5lc1tqIC0gMV0gPyBfaHVuay5saW5lc1tqIC0gMV1bMF0gOiBudWxsO1xuXG4gICAgICAgIGlmIChwcmV2aW91c09wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgcmVtb3ZlRU9GTkwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICBhZGRFT0ZOTCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gSGFuZGxlIEVPRk5MIGluc2VydGlvbi9yZW1vdmFsXG5cblxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuXG4gIGZvciAodmFyIF9rID0gMDsgX2sgPCBsaW5lcy5sZW5ndGggLSAxOyBfaysrKSB7XG4gICAgbGluZXNbX2tdID0gbGluZXNbX2tdICsgZGVsaW1pdGVyc1tfa107XG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbignJyk7XG59IC8vIFdyYXBwZXIgdGhhdCBzdXBwb3J0cyBtdWx0aXBsZSBmaWxlIHBhdGNoZXMgdmlhIGNhbGxiYWNrcy5cblxuZnVuY3Rpb24gYXBwbHlQYXRjaGVzKHVuaURpZmYsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRJbmRleCA9IDA7XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc0luZGV4KCkge1xuICAgIHZhciBpbmRleCA9IHVuaURpZmZbY3VycmVudEluZGV4KytdO1xuXG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbiAoZXJyLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICB9XG5cbiAgICAgIHZhciB1cGRhdGVkQ29udGVudCA9IGFwcGx5UGF0Y2goZGF0YSwgaW5kZXgsIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5wYXRjaGVkKGluZGV4LCB1cGRhdGVkQ29udGVudCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb2Nlc3NJbmRleCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm9jZXNzSW5kZXgoKTtcbn1cblxuZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICB2YXIgZGlmZiA9IGRpZmZMaW5lcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG5cbiAgaWYgKCFkaWZmKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZGlmZi5wdXNoKHtcbiAgICB2YWx1ZTogJycsXG4gICAgbGluZXM6IFtdXG4gIH0pOyAvLyBBcHBlbmQgYW4gZW1wdHkgdmFsdWUgdG8gbWFrZSBjbGVhbnVwIGVhc2llclxuXG4gIGZ1bmN0aW9uIGNvbnRleHRMaW5lcyhsaW5lcykge1xuICAgIHJldHVybiBsaW5lcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICByZXR1cm4gJyAnICsgZW50cnk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaHVua3MgPSBbXTtcbiAgdmFyIG9sZFJhbmdlU3RhcnQgPSAwLFxuICAgICAgbmV3UmFuZ2VTdGFydCA9IDAsXG4gICAgICBjdXJSYW5nZSA9IFtdLFxuICAgICAgb2xkTGluZSA9IDEsXG4gICAgICBuZXdMaW5lID0gMTtcblxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChpKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICBsaW5lcyA9IGN1cnJlbnQubGluZXMgfHwgY3VycmVudC52YWx1ZS5yZXBsYWNlKC9cXG4kLywgJycpLnNwbGl0KCdcXG4nKTtcbiAgICBjdXJyZW50LmxpbmVzID0gbGluZXM7XG5cbiAgICBpZiAoY3VycmVudC5hZGRlZCB8fCBjdXJyZW50LnJlbW92ZWQpIHtcbiAgICAgIHZhciBfY3VyUmFuZ2U7XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgcHJldmlvdXMgY29udGV4dCwgc3RhcnQgd2l0aCB0aGF0XG4gICAgICBpZiAoIW9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgdmFyIHByZXYgPSBkaWZmW2kgLSAxXTtcbiAgICAgICAgb2xkUmFuZ2VTdGFydCA9IG9sZExpbmU7XG4gICAgICAgIG5ld1JhbmdlU3RhcnQgPSBuZXdMaW5lO1xuXG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgY3VyUmFuZ2UgPSBvcHRpb25zLmNvbnRleHQgPiAwID8gY29udGV4dExpbmVzKHByZXYubGluZXMuc2xpY2UoLW9wdGlvbnMuY29udGV4dCkpIDogW107XG4gICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgICAgbmV3UmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gT3V0cHV0IG91ciBjaGFuZ2VzXG5cblxuICAgICAgKF9jdXJSYW5nZSA9IGN1clJhbmdlKS5wdXNoLmFwcGx5KF9jdXJSYW5nZSwgX3RvQ29uc3VtYWJsZUFycmF5KGxpbmVzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIChjdXJyZW50LmFkZGVkID8gJysnIDogJy0nKSArIGVudHJ5O1xuICAgICAgfSkpKTsgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuXG5cbiAgICAgIGlmIChjdXJyZW50LmFkZGVkKSB7XG4gICAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2xkTGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElkZW50aWNhbCBjb250ZXh0IGxpbmVzLiBUcmFjayBsaW5lIGNoYW5nZXNcbiAgICAgIGlmIChvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgIC8vIENsb3NlIG91dCBhbnkgY2hhbmdlcyB0aGF0IGhhdmUgYmVlbiBvdXRwdXQgKG9yIGpvaW4gb3ZlcmxhcHBpbmcpXG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggPD0gb3B0aW9ucy5jb250ZXh0ICogMiAmJiBpIDwgZGlmZi5sZW5ndGggLSAyKSB7XG4gICAgICAgICAgdmFyIF9jdXJSYW5nZTI7XG5cbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIChfY3VyUmFuZ2UyID0gY3VyUmFuZ2UpLnB1c2guYXBwbHkoX2N1clJhbmdlMiwgX3RvQ29uc3VtYWJsZUFycmF5KGNvbnRleHRMaW5lcyhsaW5lcykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX2N1clJhbmdlMztcblxuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIHZhciBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcblxuICAgICAgICAgIChfY3VyUmFuZ2UzID0gY3VyUmFuZ2UpLnB1c2guYXBwbHkoX2N1clJhbmdlMywgX3RvQ29uc3VtYWJsZUFycmF5KGNvbnRleHRMaW5lcyhsaW5lcy5zbGljZSgwLCBjb250ZXh0U2l6ZSkpKSk7XG5cbiAgICAgICAgICB2YXIgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IG9sZExpbmUgLSBvbGRSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUsXG4gICAgICAgICAgICBuZXdTdGFydDogbmV3UmFuZ2VTdGFydCxcbiAgICAgICAgICAgIG5ld0xpbmVzOiBuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplLFxuICAgICAgICAgICAgbGluZXM6IGN1clJhbmdlXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChpID49IGRpZmYubGVuZ3RoIC0gMiAmJiBsaW5lcy5sZW5ndGggPD0gb3B0aW9ucy5jb250ZXh0KSB7XG4gICAgICAgICAgICAvLyBFT0YgaXMgaW5zaWRlIHRoaXMgaHVua1xuICAgICAgICAgICAgdmFyIG9sZEVPRk5ld2xpbmUgPSAvXFxuJC8udGVzdChvbGRTdHIpO1xuICAgICAgICAgICAgdmFyIG5ld0VPRk5ld2xpbmUgPSAvXFxuJC8udGVzdChuZXdTdHIpO1xuICAgICAgICAgICAgdmFyIG5vTmxCZWZvcmVBZGRzID0gbGluZXMubGVuZ3RoID09IDAgJiYgY3VyUmFuZ2UubGVuZ3RoID4gaHVuay5vbGRMaW5lcztcblxuICAgICAgICAgICAgaWYgKCFvbGRFT0ZOZXdsaW5lICYmIG5vTmxCZWZvcmVBZGRzICYmIG9sZFN0ci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgLy8gaG93ZXZlciwgaWYgdGhlIG9sZCBmaWxlIGlzIGVtcHR5LCBkbyBub3Qgb3V0cHV0IHRoZSBuby1ubCBsaW5lXG4gICAgICAgICAgICAgIGN1clJhbmdlLnNwbGljZShodW5rLm9sZExpbmVzLCAwLCAnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghb2xkRU9GTmV3bGluZSAmJiAhbm9ObEJlZm9yZUFkZHMgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIF9sb29wKGkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsXG4gICAgbmV3RmlsZU5hbWU6IG5ld0ZpbGVOYW1lLFxuICAgIG9sZEhlYWRlcjogb2xkSGVhZGVyLFxuICAgIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuZnVuY3Rpb24gZm9ybWF0UGF0Y2goZGlmZikge1xuICB2YXIgcmV0ID0gW107XG5cbiAgaWYgKGRpZmYub2xkRmlsZU5hbWUgPT0gZGlmZi5uZXdGaWxlTmFtZSkge1xuICAgIHJldC5wdXNoKCdJbmRleDogJyArIGRpZmYub2xkRmlsZU5hbWUpO1xuICB9XG5cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBodW5rID0gZGlmZi5odW5rc1tpXTsgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG5cbiAgICBpZiAoaHVuay5vbGRMaW5lcyA9PT0gMCkge1xuICAgICAgaHVuay5vbGRTdGFydCAtPSAxO1xuICAgIH1cblxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXMgKyAnICsnICsgaHVuay5uZXdTdGFydCArICcsJyArIGh1bmsubmV3TGluZXMgKyAnIEBAJyk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cbmZ1bmN0aW9uIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGZvcm1hdFBhdGNoKHN0cnVjdHVyZWRQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykpO1xufVxuZnVuY3Rpb24gY3JlYXRlUGF0Y2goZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gY3JlYXRlVHdvRmlsZXNQYXRjaChmaWxlTmFtZSwgZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cbmZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICB2YXIgX2NhbGNPbGROZXdMaW5lQ291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGh1bmsubGluZXMpLFxuICAgICAgb2xkTGluZXMgPSBfY2FsY09sZE5ld0xpbmVDb3VudC5vbGRMaW5lcyxcbiAgICAgIG5ld0xpbmVzID0gX2NhbGNPbGROZXdMaW5lQ291bnQubmV3TGluZXM7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuICB2YXIgcmV0ID0ge307IC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG5cbiAgaWYgKG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4KSB7XG4gICAgcmV0LmluZGV4ID0gbWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXg7XG4gIH1cblxuICBpZiAobWluZS5uZXdGaWxlTmFtZSB8fCB0aGVpcnMubmV3RmlsZU5hbWUpIHtcbiAgICBpZiAoIWZpbGVOYW1lQ2hhbmdlZChtaW5lKSkge1xuICAgICAgLy8gTm8gaGVhZGVyIG9yIG5vIGNoYW5nZSBpbiBvdXJzLCB1c2UgdGhlaXJzIChhbmQgb3VycyBpZiB0aGVpcnMgZG9lcyBub3QgZXhpc3QpXG4gICAgICByZXQub2xkRmlsZU5hbWUgPSB0aGVpcnMub2xkRmlsZU5hbWUgfHwgbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IHRoZWlycy5uZXdGaWxlTmFtZSB8fCBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHRoZWlycy5vbGRIZWFkZXIgfHwgbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gdGhlaXJzLm5ld0hlYWRlciB8fCBtaW5lLm5ld0hlYWRlcjtcbiAgICB9IGVsc2UgaWYgKCFmaWxlTmFtZUNoYW5nZWQodGhlaXJzKSkge1xuICAgICAgLy8gTm8gaGVhZGVyIG9yIG5vIGNoYW5nZSBpbiB0aGVpcnMsIHVzZSBvdXJzXG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSBtaW5lLm5ld0hlYWRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQm90aCBjaGFuZ2VkLi4uIGZpZ3VyZSBpdCBvdXRcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRGaWxlTmFtZSwgdGhlaXJzLm9sZEZpbGVOYW1lKTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdGaWxlTmFtZSwgdGhlaXJzLm5ld0ZpbGVOYW1lKTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkSGVhZGVyLCB0aGVpcnMub2xkSGVhZGVyKTtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3SGVhZGVyLCB0aGVpcnMubmV3SGVhZGVyKTtcbiAgICB9XG4gIH1cblxuICByZXQuaHVua3MgPSBbXTtcbiAgdmFyIG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIHZhciBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7XG4gICAgICBvbGRTdGFydDogSW5maW5pdHlcbiAgICB9LFxuICAgICAgICB0aGVpcnNDdXJyZW50ID0gdGhlaXJzLmh1bmtzW3RoZWlyc0luZGV4XSB8fCB7XG4gICAgICBvbGRTdGFydDogSW5maW5pdHlcbiAgICB9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIHZhciBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG4gICAgICByZXQuaHVua3MucHVzaChtZXJnZWRIdW5rKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBsb2FkUGF0Y2gocGFyYW0sIGJhc2UpIHtcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoL15AQC9tLnRlc3QocGFyYW0pIHx8IC9eSW5kZXg6L20udGVzdChwYXJhbSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVBhdGNoKHBhcmFtKVswXTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgYmFzZSByZWZlcmVuY2Ugb3IgcGFzcyBpbiBhIHBhdGNoJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7XG4gICAgICBtaW5lOiBtaW5lLFxuICAgICAgdGhlaXJzOiB0aGVpcnNcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGh1bmtCZWZvcmUodGVzdCwgY2hlY2spIHtcbiAgcmV0dXJuIHRlc3Qub2xkU3RhcnQgPCBjaGVjay5vbGRTdGFydCAmJiB0ZXN0Lm9sZFN0YXJ0ICsgdGVzdC5vbGRMaW5lcyA8IGNoZWNrLm9sZFN0YXJ0O1xufVxuXG5mdW5jdGlvbiBjbG9uZUh1bmsoaHVuaywgb2Zmc2V0KSB7XG4gIHJldHVybiB7XG4gICAgb2xkU3RhcnQ6IGh1bmsub2xkU3RhcnQsXG4gICAgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsXG4gICAgbmV3TGluZXM6IGh1bmsubmV3TGluZXMsXG4gICAgbGluZXM6IGh1bmsubGluZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VMaW5lcyhodW5rLCBtaW5lT2Zmc2V0LCBtaW5lTGluZXMsIHRoZWlyT2Zmc2V0LCB0aGVpckxpbmVzKSB7XG4gIC8vIFRoaXMgd2lsbCBnZW5lcmFsbHkgcmVzdWx0IGluIGEgY29uZmxpY3RlZCBodW5rLCBidXQgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSBjb250ZXh0XG4gIC8vIGlzIHRoZSBvbmx5IG92ZXJsYXAgd2hlcmUgd2UgY2FuIHN1Y2Nlc3NmdWxseSBtZXJnZSB0aGUgY29udGVudCBoZXJlLlxuICB2YXIgbWluZSA9IHtcbiAgICBvZmZzZXQ6IG1pbmVPZmZzZXQsXG4gICAgbGluZXM6IG1pbmVMaW5lcyxcbiAgICBpbmRleDogMFxuICB9LFxuICAgICAgdGhlaXIgPSB7XG4gICAgb2Zmc2V0OiB0aGVpck9mZnNldCxcbiAgICBsaW5lczogdGhlaXJMaW5lcyxcbiAgICBpbmRleDogMFxuICB9OyAvLyBIYW5kbGUgYW55IGxlYWRpbmcgY29udGVudFxuXG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTsgLy8gTm93IGluIHRoZSBvdmVybGFwIGNvbnRlbnQuIFNjYW4gdGhyb3VnaCBhbmQgc2VsZWN0IHRoZSBiZXN0IGNoYW5nZXMgZnJvbSBlYWNoLlxuXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICB2YXIgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJykgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICB2YXIgX2h1bmskbGluZXM7XG5cbiAgICAgIC8vIE1pbmUgaW5zZXJ0ZWRcbiAgICAgIChfaHVuayRsaW5lcyA9IGh1bmsubGluZXMpLnB1c2guYXBwbHkoX2h1bmskbGluZXMsIF90b0NvbnN1bWFibGVBcnJheShjb2xsZWN0Q2hhbmdlKG1pbmUpKSk7XG4gICAgfSBlbHNlIGlmICh0aGVpckN1cnJlbnRbMF0gPT09ICcrJyAmJiBtaW5lQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICB2YXIgX2h1bmskbGluZXMyO1xuXG4gICAgICAvLyBUaGVpcnMgaW5zZXJ0ZWRcbiAgICAgIChfaHVuayRsaW5lczIgPSBodW5rLmxpbmVzKS5wdXNoLmFwcGx5KF9odW5rJGxpbmVzMiwgX3RvQ29uc3VtYWJsZUFycmF5KGNvbGxlY3RDaGFuZ2UodGhlaXIpKSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJy0nICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlyIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIHRoZWlyLCBtaW5lLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50ID09PSB0aGVpckN1cnJlbnQpIHtcbiAgICAgIC8vIENvbnRleHQgaWRlbnRpdHlcbiAgICAgIGh1bmsubGluZXMucHVzaChtaW5lQ3VycmVudCk7XG4gICAgICBtaW5lLmluZGV4Kys7XG4gICAgICB0aGVpci5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250ZXh0IG1pc21hdGNoXG4gICAgICBjb25mbGljdChodW5rLCBjb2xsZWN0Q2hhbmdlKG1pbmUpLCBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfVxuICB9IC8vIE5vdyBwdXNoIGFueXRoaW5nIHRoYXQgbWF5IGJlIHJlbWFpbmluZ1xuXG5cbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcbiAgY2FsY0xpbmVDb3VudChodW5rKTtcbn1cblxuZnVuY3Rpb24gbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIHZhciBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENoYW5nZSh0aGVpcik7XG5cbiAgaWYgKGFsbFJlbW92ZXMobXlDaGFuZ2VzKSAmJiBhbGxSZW1vdmVzKHRoZWlyQ2hhbmdlcykpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92ZSBjaGFuZ2VzIHRoYXQgYXJlIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlclxuICAgIGlmIChhcnJheVN0YXJ0c1dpdGgobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpICYmIHNraXBSZW1vdmVTdXBlcnNldCh0aGVpciwgbXlDaGFuZ2VzLCBteUNoYW5nZXMubGVuZ3RoIC0gdGhlaXJDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIHZhciBfaHVuayRsaW5lczM7XG5cbiAgICAgIChfaHVuayRsaW5lczMgPSBodW5rLmxpbmVzKS5wdXNoLmFwcGx5KF9odW5rJGxpbmVzMywgX3RvQ29uc3VtYWJsZUFycmF5KG15Q2hhbmdlcykpO1xuXG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChhcnJheVN0YXJ0c1dpdGgodGhlaXJDaGFuZ2VzLCBteUNoYW5nZXMpICYmIHNraXBSZW1vdmVTdXBlcnNldChtaW5lLCB0aGVpckNoYW5nZXMsIHRoZWlyQ2hhbmdlcy5sZW5ndGggLSBteUNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgdmFyIF9odW5rJGxpbmVzNDtcblxuICAgICAgKF9odW5rJGxpbmVzNCA9IGh1bmsubGluZXMpLnB1c2guYXBwbHkoX2h1bmskbGluZXM0LCBfdG9Db25zdW1hYmxlQXJyYXkodGhlaXJDaGFuZ2VzKSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICB2YXIgX2h1bmskbGluZXM1O1xuXG4gICAgKF9odW5rJGxpbmVzNSA9IGh1bmsubGluZXMpLnB1c2guYXBwbHkoX2h1bmskbGluZXM1LCBfdG9Db25zdW1hYmxlQXJyYXkobXlDaGFuZ2VzKSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25mbGljdChodW5rLCBteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIsIHN3YXApIHtcbiAgdmFyIG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q29udGV4dCh0aGVpciwgbXlDaGFuZ2VzKTtcblxuICBpZiAodGhlaXJDaGFuZ2VzLm1lcmdlZCkge1xuICAgIHZhciBfaHVuayRsaW5lczY7XG5cbiAgICAoX2h1bmskbGluZXM2ID0gaHVuay5saW5lcykucHVzaC5hcHBseShfaHVuayRsaW5lczYsIF90b0NvbnN1bWFibGVBcnJheSh0aGVpckNoYW5nZXMubWVyZ2VkKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmxpY3QoaHVuaywgc3dhcCA/IHRoZWlyQ2hhbmdlcyA6IG15Q2hhbmdlcywgc3dhcCA/IG15Q2hhbmdlcyA6IHRoZWlyQ2hhbmdlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZmxpY3QoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgaHVuay5jb25mbGljdCA9IHRydWU7XG4gIGh1bmsubGluZXMucHVzaCh7XG4gICAgY29uZmxpY3Q6IHRydWUsXG4gICAgbWluZTogbWluZSxcbiAgICB0aGVpcnM6IHRoZWlyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRMZWFkaW5nKGh1bmssIGluc2VydCwgdGhlaXIpIHtcbiAgd2hpbGUgKGluc2VydC5vZmZzZXQgPCB0aGVpci5vZmZzZXQgJiYgaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIHZhciBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gICAgaW5zZXJ0Lm9mZnNldCsrO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIHZhciBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICB2YXIgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG5cbiAgd2hpbGUgKHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgdmFyIGxpbmUgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF07IC8vIEdyb3VwIGFkZGl0aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZnRlciBzdWJ0cmFjdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgb25lIFwiYXRvbWljXCIgbW9kaWZ5IGNoYW5nZS5cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RDb250ZXh0KHN0YXRlLCBtYXRjaENoYW5nZXMpIHtcbiAgdmFyIGNoYW5nZXMgPSBbXSxcbiAgICAgIG1lcmdlZCA9IFtdLFxuICAgICAgbWF0Y2hJbmRleCA9IDAsXG4gICAgICBjb250ZXh0Q2hhbmdlcyA9IGZhbHNlLFxuICAgICAgY29uZmxpY3RlZCA9IGZhbHNlO1xuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCAmJiBzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIHZhciBjaGFuZ2UgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF0sXG4gICAgICAgIG1hdGNoID0gbWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdOyAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG5cbiAgICBpZiAobWF0Y2hbMF0gPT09ICcrJykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29udGV4dENoYW5nZXMgPSBjb250ZXh0Q2hhbmdlcyB8fCBjaGFuZ2VbMF0gIT09ICcgJztcbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrOyAvLyBDb25zdW1lIGFueSBhZGRpdGlvbnMgaW4gdGhlIG90aGVyIGJsb2NrIGFzIGEgY29uZmxpY3QgdG8gYXR0ZW1wdFxuICAgIC8vIHRvIHB1bGwgaW4gdGhlIHJlbWFpbmluZyBjb250ZXh0IGFmdGVyIHRoaXNcblxuICAgIGlmIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgY2hhbmdlID0gc3RhdGUubGluZXNbKytzdGF0ZS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnN1YnN0cigxKSA9PT0gY2hhbmdlLnN1YnN0cigxKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XSB8fCAnJylbMF0gPT09ICcrJyAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkOiBtZXJnZWQsXG4gICAgY2hhbmdlczogY2hhbmdlc1xuICB9O1xufVxuXG5mdW5jdGlvbiBhbGxSZW1vdmVzKGNoYW5nZXMpIHtcbiAgcmV0dXJuIGNoYW5nZXMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIHNraXBSZW1vdmVTdXBlcnNldChzdGF0ZSwgcmVtb3ZlQ2hhbmdlcywgZGVsdGEpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWx0YTsgaSsrKSB7XG4gICAgdmFyIGNoYW5nZUNvbnRlbnQgPSByZW1vdmVDaGFuZ2VzW3JlbW92ZUNoYW5nZXMubGVuZ3RoIC0gZGVsdGEgKyBpXS5zdWJzdHIoMSk7XG5cbiAgICBpZiAoc3RhdGUubGluZXNbc3RhdGUuaW5kZXggKyBpXSAhPT0gJyAnICsgY2hhbmdlQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmluZGV4ICs9IGRlbHRhO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lcykge1xuICB2YXIgb2xkTGluZXMgPSAwO1xuICB2YXIgbmV3TGluZXMgPSAwO1xuICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFyIG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICB2YXIgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJy0nIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgb2xkTGluZXMrKztcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIG9sZExpbmVzOiBvbGRMaW5lcyxcbiAgICBuZXdMaW5lczogbmV3TGluZXNcbiAgfTtcbn1cblxuLy8gU2VlOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWRpZmYtbWF0Y2gtcGF0Y2gvd2lraS9BUElcbmZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9ETVAoY2hhbmdlcykge1xuICB2YXIgcmV0ID0gW10sXG4gICAgICBjaGFuZ2UsXG4gICAgICBvcGVyYXRpb247XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IDE7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgb3BlcmF0aW9uID0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wZXJhdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goW29wZXJhdGlvbiwgY2hhbmdlLnZhbHVlXSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Q2hhbmdlc1RvWE1MKGNoYW5nZXMpIHtcbiAgdmFyIHJldCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjaGFuZ2UgPSBjaGFuZ2VzW2ldO1xuXG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7XG4gIHZhciBuID0gcztcbiAgbiA9IG4ucmVwbGFjZSgvJi9nLCAnJmFtcDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPC9nLCAnJmx0OycpO1xuICBuID0gbi5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcbiAgcmV0dXJuIG47XG59XG5cbmV4cG9ydCB7IERpZmYsIGFwcGx5UGF0Y2gsIGFwcGx5UGF0Y2hlcywgY2Fub25pY2FsaXplLCBjb252ZXJ0Q2hhbmdlc1RvRE1QLCBjb252ZXJ0Q2hhbmdlc1RvWE1MLCBjcmVhdGVQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgZGlmZkFycmF5cywgZGlmZkNoYXJzLCBkaWZmQ3NzLCBkaWZmSnNvbiwgZGlmZkxpbmVzLCBkaWZmU2VudGVuY2VzLCBkaWZmVHJpbW1lZExpbmVzLCBkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZSwgbWVyZ2UsIHBhcnNlUGF0Y2gsIHN0cnVjdHVyZWRQYXRjaCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/diff/lib/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs": +/*!******************************************************************************!*\ + !*** ../../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n/*! image-blob-reduce 3.0.1 https://github.com/nodeca/image-blob-reduce @license MIT */\nvar assign$1 = function assign(to) {\n var from;\n\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n\n for (var key in from) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n }\n }\n\n return to;\n};\n\n\nfunction pick(from, props) {\n var to = {};\n\n props.forEach(function (key) {\n if (Object.prototype.hasOwnProperty.call(from, key)) to[key] = from[key];\n });\n\n return to;\n}\n\n\nfunction pick_pica_resize_options(from) {\n return pick(from, [\n 'alpha',\n 'unsharpAmount',\n 'unsharpRadius',\n 'unsharpThreshold',\n 'cancelToken'\n ]);\n}\n\n\nvar pick_1 = pick;\nvar pick_pica_resize_options_1 = pick_pica_resize_options;\n\nvar utils = {\n\tassign: assign$1,\n\tpick: pick_1,\n\tpick_pica_resize_options: pick_pica_resize_options_1\n};\n\nfunction createCommonjsModule(fn) {\n var module = { exports: {} };\n\treturn fn(module, module.exports), module.exports;\n}\n\nfunction commonjsRequire (target) {\n\tthrow new Error('Could not dynamically require \"' + target + '\". Please configure the dynamicRequireTargets option of @rollup/plugin-commonjs appropriately for this require call to behave properly.');\n}\n\n/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\n\nvar pica = createCommonjsModule(function (module, exports) {\n(function(f){{module.exports=f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof commonjsRequire&&commonjsRequire;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof commonjsRequire&&commonjsRequire,i=0;i= 0,\n wasm: __requested_features.indexOf('wasm') >= 0\n };\n Multimath.call(this, features);\n this.features = {\n js: features.js,\n wasm: features.wasm && this.has_wasm()\n };\n this.use(mm_unsharp_mask);\n this.use(mm_resize);\n}\n\ninherits(MathLib, Multimath);\n\nMathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {\n var result = this.resize(options, cache);\n\n if (options.unsharpAmount) {\n this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n }\n\n return result;\n};\n\nmodule.exports = MathLib;\n\n},{\"./mm_resize\":4,\"./mm_unsharp_mask\":9,\"inherits\":19,\"multimath\":20}],2:[function(_dereq_,module,exports){\n//var FIXED_FRAC_BITS = 14;\n\nfunction clampTo8(i) {\n return i < 0 ? 0 : i > 255 ? 255 : i;\n} // Convolve image in horizontal directions and transpose output. In theory,\n// transpose allow:\n//\n// - use the same convolver for both passes (this fails due different\n// types of input array and temporary buffer)\n// - making vertical pass by horisonltal lines inprove CPU cache use.\n//\n// But in real life this doesn't work :)\n//\n\n\nfunction convolveHorizontally(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n} // Technically, convolvers are the same. But input array and temporary\n// buffer can be of different type (especially, in old browsers). So,\n// keep code in separate functions to avoid deoptimizations & speed loss.\n\n\nfunction convolveVertically(src, dest, srcW, srcH, destW, filters) {\n var r, g, b, a;\n var filterPtr, filterShift, filterSize;\n var srcPtr, srcY, destX, filterVal;\n var srcOffset = 0,\n destOffset = 0; // For each row\n\n for (srcY = 0; srcY < srcH; srcY++) {\n filterPtr = 0; // Apply precomputed filters to each destination row point\n\n for (destX = 0; destX < destW; destX++) {\n // Get the filter that determines the current output pixel.\n filterShift = filters[filterPtr++];\n filterSize = filters[filterPtr++];\n srcPtr = srcOffset + filterShift * 4 | 0;\n r = g = b = a = 0; // Apply the filter to the row to get the destination pixel r, g, b, a\n\n for (; filterSize > 0; filterSize--) {\n filterVal = filters[filterPtr++]; // Use reverse order to workaround deopts in old v8 (node v.10)\n // Big thanks to @mraleph (Vyacheslav Egorov) for the tip.\n\n a = a + filterVal * src[srcPtr + 3] | 0;\n b = b + filterVal * src[srcPtr + 2] | 0;\n g = g + filterVal * src[srcPtr + 1] | 0;\n r = r + filterVal * src[srcPtr] | 0;\n srcPtr = srcPtr + 4 | 0;\n } // Bring this value back in range. All of the filter scaling factors\n // are in fixed point with FIXED_FRAC_BITS bits of fractional part.\n //\n // (!) Add 1/2 of value before clamping to get proper rounding. In other\n // case brightness loss will be noticeable if you resize image with white\n // border and place it on white background.\n //\n\n\n dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n dest[destOffset] = clampTo8(r + (1 << 13) >> 14\n /*FIXED_FRAC_BITS*/\n );\n destOffset = destOffset + srcH * 4 | 0;\n }\n\n destOffset = (srcY + 1) * 4 | 0;\n srcOffset = (srcY + 1) * srcW * 4 | 0;\n }\n}\n\nmodule.exports = {\n convolveHorizontally: convolveHorizontally,\n convolveVertically: convolveVertically\n};\n\n},{}],3:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = 'AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs=';\n\n},{}],4:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'resize',\n fn: _dereq_('./resize'),\n wasm_fn: _dereq_('./resize_wasm'),\n wasm_src: _dereq_('./convolve_wasm_base64')\n};\n\n},{\"./convolve_wasm_base64\":3,\"./resize\":5,\"./resize_wasm\":8}],5:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nvar convolveHorizontally = _dereq_('./convolve').convolveHorizontally;\n\nvar convolveVertically = _dereq_('./convolve').convolveVertically;\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nmodule.exports = function resize(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0;\n var offsetY = options.offsetY || 0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY);\n var tmp = new Uint8Array(destW * srcH * 4); // To use single function we need src & tmp of the same type.\n // But src can be CanvasPixelArray, and tmp - Uint8Array. So, keep\n // vertical and horizontal passes separately to avoid deoptimization.\n\n convolveHorizontally(src, tmp, srcW, srcH, destW, filtersX);\n convolveVertically(tmp, dest, srcH, destW, destH, filtersY); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./convolve\":2,\"./resize_filter_gen\":6}],6:[function(_dereq_,module,exports){\n\nvar FILTER_INFO = _dereq_('./resize_filter_info'); // Precision of fixed FP values\n\n\nvar FIXED_FRAC_BITS = 14;\n\nfunction toFixedPoint(num) {\n return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\n\nmodule.exports = function resizeFilterGen(quality, srcSize, destSize, scale, offset) {\n var filterFunction = FILTER_INFO[quality].filter;\n var scaleInverted = 1.0 / scale;\n var scaleClamped = Math.min(1.0, scale); // For upscale\n // Filter window (averaging interval), scaled to src image\n\n var srcWindow = FILTER_INFO[quality].win / scaleClamped;\n var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n var leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n var packedFilterPtr = 0;\n var slowCopy = !packedFilter.subarray || !packedFilter.set; // For each destination pixel calculate source range and built filter values\n\n for (destPixel = 0; destPixel < destSize; destPixel++) {\n // Scaling should be done relative to central pixel point\n srcPixel = (destPixel + 0.5) * scaleInverted + offset;\n srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n filterElementSize = srcLast - srcFirst + 1;\n floatFilter = new Float32Array(filterElementSize);\n fxpFilter = new Int16Array(filterElementSize);\n total = 0.0; // Fill filter values for calculated range\n\n for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);\n total += floatVal;\n floatFilter[idx] = floatVal;\n } // Normalize filter, convert to fixed point and accumulate conversion error\n\n\n filterTotal = 0;\n\n for (idx = 0; idx < floatFilter.length; idx++) {\n filterVal = floatFilter[idx] / total;\n filterTotal += filterVal;\n fxpFilter[idx] = toFixedPoint(filterVal);\n } // Compensate normalization error, to minimize brightness drift\n\n\n fxpFilter[destSize >> 1] += toFixedPoint(1.0 - filterTotal); //\n // Now pack filter to useable form\n //\n // 1. Trim heading and tailing zero values, and compensate shitf/length\n // 2. Put all to single array in this format:\n //\n // [ pos shift, data length, value1, value2, value3, ... ]\n //\n\n leftNotEmpty = 0;\n\n while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {\n leftNotEmpty++;\n }\n\n if (leftNotEmpty < fxpFilter.length) {\n rightNotEmpty = fxpFilter.length - 1;\n\n while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {\n rightNotEmpty--;\n }\n\n filterShift = srcFirst + leftNotEmpty;\n filterSize = rightNotEmpty - leftNotEmpty + 1;\n packedFilter[packedFilterPtr++] = filterShift; // shift\n\n packedFilter[packedFilterPtr++] = filterSize; // size\n\n if (!slowCopy) {\n packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n packedFilterPtr += filterSize;\n } else {\n // fallback for old IE < 11, without subarray/set methods\n for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {\n packedFilter[packedFilterPtr++] = fxpFilter[idx];\n }\n }\n } else {\n // zero data, write header only\n packedFilter[packedFilterPtr++] = 0; // shift\n\n packedFilter[packedFilterPtr++] = 0; // size\n }\n }\n\n return packedFilter;\n};\n\n},{\"./resize_filter_info\":7}],7:[function(_dereq_,module,exports){\n\nmodule.exports = [{\n // Nearest neibor (Box)\n win: 0.5,\n filter: function filter(x) {\n return x >= -0.5 && x < 0.5 ? 1.0 : 0.0;\n }\n}, {\n // Hamming\n win: 1.0,\n filter: function filter(x) {\n if (x <= -1.0 || x >= 1.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1.0));\n }\n}, {\n // Lanczos, win = 2\n win: 2.0,\n filter: function filter(x) {\n if (x <= -2.0 || x >= 2.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 2.0) / (xpi / 2.0);\n }\n}, {\n // Lanczos, win = 3\n win: 3.0,\n filter: function filter(x) {\n if (x <= -3.0 || x >= 3.0) {\n return 0.0;\n }\n\n if (x > -1.19209290E-07 && x < 1.19209290E-07) {\n return 1.0;\n }\n\n var xpi = x * Math.PI;\n return Math.sin(xpi) / xpi * Math.sin(xpi / 3.0) / (xpi / 3.0);\n }\n}];\n\n},{}],8:[function(_dereq_,module,exports){\n\nvar createFilters = _dereq_('./resize_filter_gen');\n\nfunction resetAlpha(dst, width, height) {\n var ptr = 3,\n len = width * height * 4 | 0;\n\n while (ptr < len) {\n dst[ptr] = 0xFF;\n ptr = ptr + 4 | 0;\n }\n}\n\nfunction asUint8Array(src) {\n return new Uint8Array(src.buffer, 0, src.byteLength);\n}\n\nvar IS_LE = true; // should not crash everything on module load in old browsers\n\ntry {\n IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;\n} catch (__) {}\n\nfunction copyInt16asLE(src, target, target_offset) {\n if (IS_LE) {\n target.set(asUint8Array(src), target_offset);\n return;\n }\n\n for (var ptr = target_offset, i = 0; i < src.length; i++) {\n var data = src[i];\n target[ptr++] = data & 0xFF;\n target[ptr++] = data >> 8 & 0xFF;\n }\n}\n\nmodule.exports = function resize_wasm(options) {\n var src = options.src;\n var srcW = options.width;\n var srcH = options.height;\n var destW = options.toWidth;\n var destH = options.toHeight;\n var scaleX = options.scaleX || options.toWidth / options.width;\n var scaleY = options.scaleY || options.toHeight / options.height;\n var offsetX = options.offsetX || 0.0;\n var offsetY = options.offsetY || 0.0;\n var dest = options.dest || new Uint8Array(destW * destH * 4);\n var quality = typeof options.quality === 'undefined' ? 3 : options.quality;\n var alpha = options.alpha || false;\n var filtersX = createFilters(quality, srcW, destW, scaleX, offsetX),\n filtersY = createFilters(quality, srcH, destH, scaleY, offsetY); // destination is 0 too.\n\n var src_offset = 0; // buffer between convolve passes\n\n var tmp_offset = this.__align(src_offset + Math.max(src.byteLength, dest.byteLength));\n\n var filtersX_offset = this.__align(tmp_offset + srcH * destW * 4);\n\n var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\n var alloc_bytes = filtersY_offset + filtersY.byteLength;\n\n var instance = this.__instance('resize', alloc_bytes); //\n // Fill memory block with data to process\n //\n\n\n var mem = new Uint8Array(this.__memory.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer); // 32-bit copy is much faster in chrome\n\n var src32 = new Uint32Array(src.buffer);\n mem32.set(src32); // We should guarantee LE bytes order. Filters are not big, so\n // speed difference is not significant vs direct .set()\n\n copyInt16asLE(filtersX, mem, filtersX_offset);\n copyInt16asLE(filtersY, mem, filtersY_offset); //\n // Now call webassembly method\n // emsdk does method names with '_'\n\n var fn = instance.exports.convolveHV || instance.exports._convolveHV;\n fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH); //\n // Copy data back to typed array\n //\n // 32-bit copy is much faster in chrome\n\n var dest32 = new Uint32Array(dest.buffer);\n dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW)); // That's faster than doing checks in convolver.\n // !!! Note, canvas data is not premultipled. We don't need other\n // alpha corrections.\n\n if (!alpha) resetAlpha(dest, destW, destH);\n return dest;\n};\n\n},{\"./resize_filter_gen\":6}],9:[function(_dereq_,module,exports){\n\nmodule.exports = {\n name: 'unsharp_mask',\n fn: _dereq_('./unsharp_mask'),\n wasm_fn: _dereq_('./unsharp_mask_wasm'),\n wasm_src: _dereq_('./unsharp_mask_wasm_base64')\n};\n\n},{\"./unsharp_mask\":10,\"./unsharp_mask_wasm\":11,\"./unsharp_mask_wasm_base64\":12}],10:[function(_dereq_,module,exports){\n\nvar glur_mono16 = _dereq_('glur/mono16');\n\nfunction hsv_v16(img, width, height) {\n var size = width * height;\n var out = new Uint16Array(size);\n var r, g, b, max;\n\n for (var i = 0; i < size; i++) {\n r = img[4 * i];\n g = img[4 * i + 1];\n b = img[4 * i + 2];\n max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n out[i] = max << 8;\n }\n\n return out;\n}\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n var v1, v2, vmul;\n var diff, iTimes4;\n\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var brightness = hsv_v16(img, width, height);\n var blured = new Uint16Array(brightness); // copy, because blur modify src\n\n glur_mono16(blured, width, height, radius);\n var amountFp = amount / 100 * 0x1000 + 0.5 | 0;\n var thresholdFp = threshold << 8;\n var size = width * height;\n /* eslint-disable indent */\n\n for (var i = 0; i < size; i++) {\n v1 = brightness[i];\n diff = v1 - blured[i];\n\n if (Math.abs(diff) >= thresholdFp) {\n // add unsharp mask to the brightness channel\n v2 = v1 + (amountFp * diff + 0x800 >> 12); // Both v1 and v2 are within [0.0 .. 255.0] (0000-FF00) range, never going into\n // [255.003 .. 255.996] (FF01-FFFF). This allows to round this value as (x+.5)|0\n // later without overflowing.\n\n v2 = v2 > 0xff00 ? 0xff00 : v2;\n v2 = v2 < 0x0000 ? 0x0000 : v2; // Avoid division by 0. V=0 means rgb(0,0,0), unsharp with unsharpAmount>0 cannot\n // change this value (because diff between colors gets inflated), so no need to verify correctness.\n\n v1 = v1 !== 0 ? v1 : 1; // Multiplying V in HSV model by a constant is equivalent to multiplying each component\n // in RGB by the same constant (same for HSL), see also:\n // https://beesbuzz.biz/code/16-hsv-color-transforms\n\n vmul = (v2 << 12) / v1 | 0; // Result will be in [0..255] range because:\n // - all numbers are positive\n // - r,g,b <= (v1/256)\n // - r,g,b,(v1/256),(v2/256) <= 255\n // So highest this number can get is X*255/X+0.5=255.5 which is < 256 and rounds down.\n\n iTimes4 = i * 4;\n img[iTimes4] = img[iTimes4] * vmul + 0x800 >> 12; // R\n\n img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 0x800 >> 12; // G\n\n img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 0x800 >> 12; // B\n }\n }\n};\n\n},{\"glur/mono16\":18}],11:[function(_dereq_,module,exports){\n\nmodule.exports = function unsharp(img, width, height, amount, radius, threshold) {\n if (amount === 0 || radius < 0.5) {\n return;\n }\n\n if (radius > 2.0) {\n radius = 2.0;\n }\n\n var pixels = width * height;\n var img_bytes_cnt = pixels * 4;\n var hsv_bytes_cnt = pixels * 2;\n var blur_bytes_cnt = pixels * 2;\n var blur_line_byte_cnt = Math.max(width, height) * 4; // float32 array\n\n var blur_coeffs_byte_cnt = 8 * 4; // float32 array\n\n var img_offset = 0;\n var hsv_offset = img_bytes_cnt;\n var blur_offset = hsv_offset + hsv_bytes_cnt;\n var blur_tmp_offset = blur_offset + blur_bytes_cnt;\n var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\n var instance = this.__instance('unsharp_mask', img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {\n exp: Math.exp\n }); // 32-bit copy is much faster in chrome\n\n\n var img32 = new Uint32Array(img.buffer);\n var mem32 = new Uint32Array(this.__memory.buffer);\n mem32.set(img32); // HSL\n\n var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n fn(img_offset, hsv_offset, width, height); // BLUR\n\n fn = instance.exports.blurMono16 || instance.exports._blurMono16;\n fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius); // UNSHARP\n\n fn = instance.exports.unsharp || instance.exports._unsharp;\n fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold); // 32-bit copy is much faster in chrome\n\n img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n};\n\n},{}],12:[function(_dereq_,module,exports){\n/* eslint-disable max-len */\n\nmodule.exports = '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';\n\n},{}],13:[function(_dereq_,module,exports){\n\nvar GC_INTERVAL = 100;\n\nfunction Pool(create, idle) {\n this.create = create;\n this.available = [];\n this.acquired = {};\n this.lastId = 1;\n this.timeoutId = 0;\n this.idle = idle || 2000;\n}\n\nPool.prototype.acquire = function () {\n var _this = this;\n\n var resource;\n\n if (this.available.length !== 0) {\n resource = this.available.pop();\n } else {\n resource = this.create();\n resource.id = this.lastId++;\n\n resource.release = function () {\n return _this.release(resource);\n };\n }\n\n this.acquired[resource.id] = resource;\n return resource;\n};\n\nPool.prototype.release = function (resource) {\n var _this2 = this;\n\n delete this.acquired[resource.id];\n resource.lastUsed = Date.now();\n this.available.push(resource);\n\n if (this.timeoutId === 0) {\n this.timeoutId = setTimeout(function () {\n return _this2.gc();\n }, GC_INTERVAL);\n }\n};\n\nPool.prototype.gc = function () {\n var _this3 = this;\n\n var now = Date.now();\n this.available = this.available.filter(function (resource) {\n if (now - resource.lastUsed > _this3.idle) {\n resource.destroy();\n return false;\n }\n\n return true;\n });\n\n if (this.available.length !== 0) {\n this.timeoutId = setTimeout(function () {\n return _this3.gc();\n }, GC_INTERVAL);\n } else {\n this.timeoutId = 0;\n }\n};\n\nmodule.exports = Pool;\n\n},{}],14:[function(_dereq_,module,exports){\n// min size = 1 can consume large amount of memory\n\nvar MIN_INNER_TILE_SIZE = 2;\n\nmodule.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {\n var scaleX = toWidth / fromWidth;\n var scaleY = toHeight / fromHeight; // derived from createRegions equation:\n // innerTileWidth = pixelFloor(srcTileSize * scaleX) - 2 * destTileBorder;\n\n var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize; // refuse to scale image multiple times by less than twice each time,\n // it could only happen because of invalid options\n\n if (minScale > 0.5) return [[toWidth, toHeight]];\n var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale)); // no additional resizes are necessary,\n // stageCount can be zero or be negative when enlarging the image\n\n if (stageCount <= 1) return [[toWidth, toHeight]];\n var result = [];\n\n for (var i = 0; i < stageCount; i++) {\n var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n result.push([width, height]);\n }\n\n return result;\n};\n\n},{}],15:[function(_dereq_,module,exports){\n/*\n * pixelFloor and pixelCeil are modified versions of Math.floor and Math.ceil\n * functions which take into account floating point arithmetic errors.\n * Those errors can cause undesired increments/decrements of sizes and offsets:\n * Math.ceil(36 / (36 / 500)) = 501\n * pixelCeil(36 / (36 / 500)) = 500\n */\n\nvar PIXEL_EPSILON = 1e-5;\n\nfunction pixelFloor(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.floor(x);\n}\n\nfunction pixelCeil(x) {\n var nearest = Math.round(x);\n\n if (Math.abs(x - nearest) < PIXEL_EPSILON) {\n return nearest;\n }\n\n return Math.ceil(x);\n}\n\nmodule.exports = function createRegions(options) {\n var scaleX = options.toWidth / options.width;\n var scaleY = options.toHeight / options.height;\n var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder; // prevent infinite loop, this should never happen\n\n if (innerTileWidth < 1 || innerTileHeight < 1) {\n throw new Error('Internal error in pica: target tile width/height is too small.');\n }\n\n var x, y;\n var innerX, innerY, toTileWidth, toTileHeight;\n var tiles = [];\n var tile; // we go top-to-down instead of left-to-right to make image displayed from top to\n // doesn in the browser\n\n for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {\n for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n x = innerX - options.destTileBorder;\n\n if (x < 0) {\n x = 0;\n }\n\n toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\n if (x + toTileWidth >= options.toWidth) {\n toTileWidth = options.toWidth - x;\n }\n\n y = innerY - options.destTileBorder;\n\n if (y < 0) {\n y = 0;\n }\n\n toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\n if (y + toTileHeight >= options.toHeight) {\n toTileHeight = options.toHeight - y;\n }\n\n tile = {\n toX: x,\n toY: y,\n toWidth: toTileWidth,\n toHeight: toTileHeight,\n toInnerX: innerX,\n toInnerY: innerY,\n toInnerWidth: innerTileWidth,\n toInnerHeight: innerTileHeight,\n offsetX: x / scaleX - pixelFloor(x / scaleX),\n offsetY: y / scaleY - pixelFloor(y / scaleY),\n scaleX: scaleX,\n scaleY: scaleY,\n x: pixelFloor(x / scaleX),\n y: pixelFloor(y / scaleY),\n width: pixelCeil(toTileWidth / scaleX),\n height: pixelCeil(toTileHeight / scaleY)\n };\n tiles.push(tile);\n }\n }\n\n return tiles;\n};\n\n},{}],16:[function(_dereq_,module,exports){\n\nfunction objClass(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nmodule.exports.isCanvas = function isCanvas(element) {\n var cname = objClass(element);\n return cname === '[object HTMLCanvasElement]'\n /* browser */\n || cname === '[object OffscreenCanvas]' || cname === '[object Canvas]'\n /* node-canvas */\n ;\n};\n\nmodule.exports.isImage = function isImage(element) {\n return objClass(element) === '[object HTMLImageElement]';\n};\n\nmodule.exports.isImageBitmap = function isImageBitmap(element) {\n return objClass(element) === '[object ImageBitmap]';\n};\n\nmodule.exports.limiter = function limiter(concurrency) {\n var active = 0,\n queue = [];\n\n function roll() {\n if (active < concurrency && queue.length) {\n active++;\n queue.shift()();\n }\n }\n\n return function limit(fn) {\n return new Promise(function (resolve, reject) {\n queue.push(function () {\n fn().then(function (result) {\n resolve(result);\n active--;\n roll();\n }, function (err) {\n reject(err);\n active--;\n roll();\n });\n });\n roll();\n });\n };\n};\n\nmodule.exports.cib_quality_name = function cib_quality_name(num) {\n switch (num) {\n case 0:\n return 'pixelated';\n\n case 1:\n return 'low';\n\n case 2:\n return 'medium';\n }\n\n return 'high';\n};\n\nmodule.exports.cib_support = function cib_support(createCanvas) {\n return Promise.resolve().then(function () {\n if (typeof createImageBitmap === 'undefined') {\n return false;\n }\n\n var c = createCanvas(100, 100);\n return createImageBitmap(c, 0, 0, 100, 100, {\n resizeWidth: 10,\n resizeHeight: 10,\n resizeQuality: 'high'\n }).then(function (bitmap) {\n var status = bitmap.width === 10; // Branch below is filtered on upper level. We do not call resize\n // detection for basic ImageBitmap.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap\n // old Crome 51 has ImageBitmap without .close(). Then this code\n // will throw and return 'false' as expected.\n //\n\n bitmap.close();\n c = null;\n return status;\n });\n })[\"catch\"](function () {\n return false;\n });\n};\n\nmodule.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {\n return new Promise(function (resolve, reject) {\n if (typeof OffscreenCanvas === 'undefined') {\n // if OffscreenCanvas is present, we assume browser supports Worker and built-in Promise as well\n resolve(false);\n return;\n }\n\n function workerPayload(self) {\n if (typeof createImageBitmap === 'undefined') {\n self.postMessage(false);\n return;\n }\n\n Promise.resolve().then(function () {\n var canvas = new OffscreenCanvas(10, 10); // test that 2d context can be used in worker\n\n var ctx = canvas.getContext('2d');\n ctx.rect(0, 0, 1, 1); // test that cib can be used to return image bitmap from worker\n\n return createImageBitmap(canvas, 0, 0, 1, 1);\n }).then(function () {\n return self.postMessage(true);\n }, function () {\n return self.postMessage(false);\n });\n }\n\n var code = btoa(\"(\".concat(workerPayload.toString(), \")(self);\"));\n var w = new Worker(\"data:text/javascript;base64,\".concat(code));\n\n w.onmessage = function (ev) {\n return resolve(ev.data);\n };\n\n w.onerror = reject;\n }).then(function (result) {\n return result;\n }, function () {\n return false;\n });\n}; // Check if canvas.getContext('2d').getImageData can be used,\n// FireFox randomizes the output of that function in `privacy.resistFingerprinting` mode\n\n\nmodule.exports.can_use_canvas = function can_use_canvas(createCanvas) {\n var usable = false;\n\n try {\n var canvas = createCanvas(2, 1);\n var ctx = canvas.getContext('2d');\n var d = ctx.createImageData(2, 1);\n d.data[0] = 12;\n d.data[1] = 23;\n d.data[2] = 34;\n d.data[3] = 255;\n d.data[4] = 45;\n d.data[5] = 56;\n d.data[6] = 67;\n d.data[7] = 255;\n ctx.putImageData(d, 0, 0);\n d = null;\n d = ctx.getImageData(0, 0, 2, 1);\n\n if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {\n usable = true;\n }\n } catch (err) {}\n\n return usable;\n}; // Check if createImageBitmap(img, sx, sy, sw, sh) signature works correctly\n// with JPEG images oriented with Exif;\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n// TODO: remove after it's fixed in chrome for at least 2 releases\n\n\nmodule.exports.cib_can_use_region = function cib_can_use_region() {\n return new Promise(function (resolve) {\n if (typeof createImageBitmap === 'undefined') {\n resolve(false);\n return;\n }\n\n var image = new Image();\n image.src = 'data:image/jpeg;base64,' + '/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAA' + 'AABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9' + 'sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRc' + 'ZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoa' + 'GhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRA' + 'f/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAA' + 'IQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAA' + 'AAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIB' + 'AT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAA' + 'AAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAA' + 'AAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQ' + 'QAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z';\n\n image.onload = function () {\n createImageBitmap(image, 0, 0, image.width, image.height).then(function (bitmap) {\n if (bitmap.width === image.width && bitmap.height === image.height) {\n resolve(true);\n } else {\n resolve(false);\n }\n }, function () {\n return resolve(false);\n });\n };\n\n image.onerror = function () {\n return resolve(false);\n };\n });\n};\n\n},{}],17:[function(_dereq_,module,exports){\n\nmodule.exports = function () {\n var MathLib = _dereq_('./mathlib');\n\n var mathLib;\n /* eslint-disable no-undef */\n\n onmessage = function onmessage(ev) {\n var tileOpts = ev.data.opts;\n var returnBitmap = false;\n\n if (!tileOpts.src && tileOpts.srcBitmap) {\n var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);\n var ctx = canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n ctx.drawImage(tileOpts.srcBitmap, 0, 0);\n tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;\n canvas.width = canvas.height = 0;\n canvas = null;\n tileOpts.srcBitmap.close();\n tileOpts.srcBitmap = null;\n returnBitmap = true;\n }\n\n if (!mathLib) mathLib = new MathLib(ev.data.features); // Use multimath's sync auto-init. Avoid Promise use in old browsers,\n // because polyfills are not propagated to webworker.\n\n var data = mathLib.resizeAndUnsharp(tileOpts);\n\n if (returnBitmap) {\n var toImageData = new ImageData(new Uint8ClampedArray(data), tileOpts.toWidth, tileOpts.toHeight);\n\n var _canvas = new OffscreenCanvas(tileOpts.toWidth, tileOpts.toHeight);\n\n var _ctx = _canvas.getContext('2d', {\n alpha: Boolean(tileOpts.alpha)\n });\n\n _ctx.putImageData(toImageData, 0, 0);\n\n createImageBitmap(_canvas).then(function (bitmap) {\n postMessage({\n bitmap: bitmap\n }, [bitmap]);\n });\n } else {\n postMessage({\n data: data\n }, [data.buffer]);\n }\n };\n};\n\n},{\"./mathlib\":1}],18:[function(_dereq_,module,exports){\n// Calculate Gaussian blur of an image using IIR filter\n// The method is taken from Intel's white paper and code example attached to it:\n// https://software.intel.com/en-us/articles/iir-gaussian-blur-filter\n// -implementation-using-intel-advanced-vector-extensions\n\nvar a0, a1, a2, a3, b1, b2, left_corner, right_corner;\n\nfunction gaussCoef(sigma) {\n if (sigma < 0.5) {\n sigma = 0.5;\n }\n\n var a = Math.exp(0.726 * 0.726) / sigma,\n g1 = Math.exp(-a),\n g2 = Math.exp(-2 * a),\n k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\n a0 = k;\n a1 = k * (a - 1) * g1;\n a2 = k * (a + 1) * g1;\n a3 = -k * g2;\n b1 = 2 * g1;\n b2 = -g2;\n left_corner = (a0 + a1) / (1 - b1 - b2);\n right_corner = (a2 + a3) / (1 - b1 - b2);\n\n // Attempt to force type to FP32.\n return new Float32Array([ a0, a1, a2, a3, b1, b2, left_corner, right_corner ]);\n}\n\nfunction convolveMono16(src, out, line, coeff, width, height) {\n // takes src image and writes the blurred and transposed result into out\n\n var prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n var src_index, out_index, line_index;\n var i, j;\n var coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\n for (i = 0; i < height; i++) {\n src_index = i * width;\n out_index = i;\n line_index = 0;\n\n // left to right\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[6];\n prev_out = prev_prev_out;\n\n coeff_a0 = coeff[0];\n coeff_a1 = coeff[1];\n coeff_b1 = coeff[4];\n coeff_b2 = coeff[5];\n\n for (j = 0; j < width; j++) {\n curr_src = src[src_index];\n\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n prev_src = curr_src;\n\n line[line_index] = prev_out;\n line_index++;\n src_index++;\n }\n\n src_index--;\n line_index--;\n out_index += height * (width - 1);\n\n // right to left\n prev_src = src[src_index];\n prev_prev_out = prev_src * coeff[7];\n prev_out = prev_prev_out;\n curr_src = prev_src;\n\n coeff_a0 = coeff[2];\n coeff_a1 = coeff[3];\n\n for (j = width - 1; j >= 0; j--) {\n curr_out = curr_src * coeff_a0 +\n prev_src * coeff_a1 +\n prev_out * coeff_b1 +\n prev_prev_out * coeff_b2;\n\n prev_prev_out = prev_out;\n prev_out = curr_out;\n\n prev_src = curr_src;\n curr_src = src[src_index];\n\n out[out_index] = line[line_index] + prev_out;\n\n src_index--;\n line_index--;\n out_index -= height;\n }\n }\n}\n\n\nfunction blurMono16(src, width, height, radius) {\n // Quick exit on zero radius\n if (!radius) { return; }\n\n var out = new Uint16Array(src.length),\n tmp_line = new Float32Array(Math.max(width, height));\n\n var coeff = gaussCoef(radius);\n\n convolveMono16(src, out, tmp_line, coeff, width, height);\n convolveMono16(out, src, tmp_line, coeff, height, width);\n}\n\nmodule.exports = blurMono16;\n\n},{}],19:[function(_dereq_,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n\n},{}],20:[function(_dereq_,module,exports){\n\n\nvar assign = _dereq_('object-assign');\nvar base64decode = _dereq_('./lib/base64decode');\nvar hasWebAssembly = _dereq_('./lib/wa_detect');\n\n\nvar DEFAULT_OPTIONS = {\n js: true,\n wasm: true\n};\n\n\nfunction MultiMath(options) {\n if (!(this instanceof MultiMath)) return new MultiMath(options);\n\n var opts = assign({}, DEFAULT_OPTIONS, options || {});\n\n this.options = opts;\n\n this.__cache = {};\n\n this.__init_promise = null;\n this.__modules = opts.modules || {};\n this.__memory = null;\n this.__wasm = {};\n\n this.__isLE = ((new Uint32Array((new Uint8Array([ 1, 0, 0, 0 ])).buffer))[0] === 1);\n\n if (!this.options.js && !this.options.wasm) {\n throw new Error('mathlib: at least \"js\" or \"wasm\" should be enabled');\n }\n}\n\n\nMultiMath.prototype.has_wasm = hasWebAssembly;\n\n\nMultiMath.prototype.use = function (module) {\n this.__modules[module.name] = module;\n\n // Pin the best possible implementation\n if (this.options.wasm && this.has_wasm() && module.wasm_fn) {\n this[module.name] = module.wasm_fn;\n } else {\n this[module.name] = module.fn;\n }\n\n return this;\n};\n\n\nMultiMath.prototype.init = function () {\n if (this.__init_promise) return this.__init_promise;\n\n if (!this.options.js && this.options.wasm && !this.has_wasm()) {\n return Promise.reject(new Error('mathlib: only \"wasm\" was enabled, but it\\'s not supported'));\n }\n\n var self = this;\n\n this.__init_promise = Promise.all(Object.keys(self.__modules).map(function (name) {\n var module = self.__modules[name];\n\n if (!self.options.wasm || !self.has_wasm() || !module.wasm_fn) return null;\n\n // If already compiled - exit\n if (self.__wasm[name]) return null;\n\n // Compile wasm source\n return WebAssembly.compile(self.__base64decode(module.wasm_src))\n .then(function (m) { self.__wasm[name] = m; });\n }))\n .then(function () { return self; });\n\n return this.__init_promise;\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Methods below are for internal use from plugins\n\n\n// Simple decode base64 to typed array. Useful to load embedded webassembly\n// code. You probably don't need to call this method directly.\n//\nMultiMath.prototype.__base64decode = base64decode;\n\n\n// Increase current memory to include specified number of bytes. Do nothing if\n// size is already ok. You probably don't need to call this method directly,\n// because it will be invoked from `.__instance()`.\n//\nMultiMath.prototype.__reallocate = function mem_grow_to(bytes) {\n if (!this.__memory) {\n this.__memory = new WebAssembly.Memory({\n initial: Math.ceil(bytes / (64 * 1024))\n });\n return this.__memory;\n }\n\n var mem_size = this.__memory.buffer.byteLength;\n\n if (mem_size < bytes) {\n this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n }\n\n return this.__memory;\n};\n\n\n// Returns instantinated webassembly item by name, with specified memory size\n// and environment.\n// - use cache if available\n// - do sync module init, if async init was not called earlier\n// - allocate memory if not enougth\n// - can export functions to webassembly via \"env_extra\",\n// for example, { exp: Math.exp }\n//\nMultiMath.prototype.__instance = function instance(name, memsize, env_extra) {\n if (memsize) this.__reallocate(memsize);\n\n // If .init() was not called, do sync compile\n if (!this.__wasm[name]) {\n var module = this.__modules[name];\n this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module.wasm_src));\n }\n\n if (!this.__cache[name]) {\n var env_base = {\n memoryBase: 0,\n memory: this.__memory,\n tableBase: 0,\n table: new WebAssembly.Table({ initial: 0, element: 'anyfunc' })\n };\n\n this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {\n env: assign(env_base, env_extra || {})\n });\n }\n\n return this.__cache[name];\n};\n\n\n// Helper to calculate memory aligh for pointers. Webassembly does not require\n// this, but you may wish to experiment. Default base = 8;\n//\nMultiMath.prototype.__align = function align(number, base) {\n base = base || 8;\n var reminder = number % base;\n return number + (reminder ? base - reminder : 0);\n};\n\n\nmodule.exports = MultiMath;\n\n},{\"./lib/base64decode\":21,\"./lib/wa_detect\":22,\"object-assign\":23}],21:[function(_dereq_,module,exports){\n\n\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n\nmodule.exports = function base64decode(str) {\n var input = str.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length;\n\n var out = new Uint8Array((max * 3) >> 2);\n\n // Collect by 6*4 bits (3 bytes)\n\n var bits = 0;\n var ptr = 0;\n\n for (var idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n }\n\n bits = (bits << 6) | BASE64_MAP.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n var tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n out[ptr++] = (bits >> 16) & 0xFF;\n out[ptr++] = (bits >> 8) & 0xFF;\n out[ptr++] = bits & 0xFF;\n } else if (tailbits === 18) {\n out[ptr++] = (bits >> 10) & 0xFF;\n out[ptr++] = (bits >> 2) & 0xFF;\n } else if (tailbits === 12) {\n out[ptr++] = (bits >> 4) & 0xFF;\n }\n\n return out;\n};\n\n},{}],22:[function(_dereq_,module,exports){\n\n\nvar wa;\n\n\nmodule.exports = function hasWebAssembly() {\n // use cache if called before;\n if (typeof wa !== 'undefined') return wa;\n\n wa = false;\n\n if (typeof WebAssembly === 'undefined') return wa;\n\n // If WebAssenbly is disabled, code can throw on compile\n try {\n // https://github.com/brion/min-wasm-fail/blob/master/min-wasm-fail.in.js\n // Additional check that WA internals are correct\n\n /* eslint-disable comma-spacing, max-len */\n var bin = new Uint8Array([ 0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11 ]);\n var module = new WebAssembly.Module(bin);\n var instance = new WebAssembly.Instance(module, {});\n\n // test storing to and loading from a non-zero location via a parameter.\n // Safari on iOS 11.2.5 returns 0 unexpectedly at non-zero locations\n if (instance.exports.test(4) !== 0) wa = true;\n\n return wa;\n } catch (__) {}\n\n return wa;\n};\n\n},{}],23:[function(_dereq_,module,exports){\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n},{}],24:[function(_dereq_,module,exports){\nvar bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn, options) {\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp && exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n 'function(require,module,exports){' + fn + '(self); }',\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n 'function(require,module,exports){' +\n // try to call default if defined to also support babel esmodule exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);' +\n '}',\n scache\n ];\n\n var workerSources = {};\n resolveSources(skey);\n\n function resolveSources(key) {\n workerSources[key] = true;\n\n for (var depPath in sources[key][1]) {\n var depKey = sources[key][1][depPath];\n if (!workerSources[depKey]) {\n resolveSources(depKey);\n }\n }\n }\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(workerSources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n var blob = new Blob([src], { type: 'text/javascript' });\n if (options && options.bare) { return blob; }\n var workerUrl = URL.createObjectURL(blob);\n var worker = new Worker(workerUrl);\n worker.objectURL = workerUrl;\n return worker;\n};\n\n},{}],\"/index.js\":[function(_dereq_,module,exports){\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar assign = _dereq_('object-assign');\n\nvar webworkify = _dereq_('webworkify');\n\nvar MathLib = _dereq_('./lib/mathlib');\n\nvar Pool = _dereq_('./lib/pool');\n\nvar utils = _dereq_('./lib/utils');\n\nvar worker = _dereq_('./lib/worker');\n\nvar createStages = _dereq_('./lib/stepper');\n\nvar createRegions = _dereq_('./lib/tiler'); // Deduplicate pools & limiters with the same configs\n// when user creates multiple pica instances.\n\n\nvar singletones = {};\nvar NEED_SAFARI_FIX = false;\n\ntry {\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n NEED_SAFARI_FIX = navigator.userAgent.indexOf('Safari') >= 0;\n }\n} catch (e) {}\n\nvar concurrency = 1;\n\nif (typeof navigator !== 'undefined') {\n concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\n}\n\nvar DEFAULT_PICA_OPTS = {\n tile: 1024,\n concurrency: concurrency,\n features: ['js', 'wasm', 'ww'],\n idle: 2000,\n createCanvas: function createCanvas(width, height) {\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n return tmpCanvas;\n }\n};\nvar DEFAULT_RESIZE_OPTS = {\n quality: 3,\n alpha: false,\n unsharpAmount: 0,\n unsharpRadius: 0.0,\n unsharpThreshold: 0\n};\nvar CAN_NEW_IMAGE_DATA = false;\nvar CAN_CREATE_IMAGE_BITMAP = false;\nvar CAN_USE_CANVAS_GET_IMAGE_DATA = false;\nvar CAN_USE_OFFSCREEN_CANVAS = false;\nvar CAN_USE_CIB_REGION_FOR_IMAGE = false;\n\nfunction workerFabric() {\n return {\n value: webworkify(worker),\n destroy: function destroy() {\n this.value.terminate();\n\n if (typeof window !== 'undefined') {\n var url = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n if (url && url.revokeObjectURL && this.value.objectURL) {\n url.revokeObjectURL(this.value.objectURL);\n }\n }\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// API methods\n\n\nfunction Pica(options) {\n if (!(this instanceof Pica)) return new Pica(options);\n this.options = assign({}, DEFAULT_PICA_OPTS, options || {});\n var limiter_key = \"lk_\".concat(this.options.concurrency); // Share limiters to avoid multiple parallel workers when user creates\n // multiple pica instances.\n\n this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);\n if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit; // List of supported features, according to options & browser/node.js\n\n this.features = {\n js: false,\n // pure JS implementation, can be disabled for testing\n wasm: false,\n // webassembly implementation for heavy functions\n cib: false,\n // resize via createImageBitmap (only FF at this moment)\n ww: false // webworkers\n\n };\n this.__workersPool = null; // Store requested features for webworkers\n\n this.__requested_features = [];\n this.__mathlib = null;\n}\n\nPica.prototype.init = function () {\n var _this = this;\n\n if (this.__initPromise) return this.__initPromise; // Test if we can create ImageData without canvas and memory copy\n\n if (typeof ImageData !== 'undefined' && typeof Uint8ClampedArray !== 'undefined') {\n try {\n /* eslint-disable no-new */\n new ImageData(new Uint8ClampedArray(400), 10, 10);\n CAN_NEW_IMAGE_DATA = true;\n } catch (__) {}\n } // ImageBitmap can be effective in 2 places:\n //\n // 1. Threaded jpeg unpack (basic)\n // 2. Built-in resize (blocked due problem in chrome, see issue #89)\n //\n // For basic use we also need ImageBitmap wo support .close() method,\n // see https://developer.mozilla.org/ru/docs/Web/API/ImageBitmap\n\n\n if (typeof ImageBitmap !== 'undefined') {\n if (ImageBitmap.prototype && ImageBitmap.prototype.close) {\n CAN_CREATE_IMAGE_BITMAP = true;\n } else {\n this.debug('ImageBitmap does not support .close(), disabled');\n }\n }\n\n var features = this.options.features.slice();\n\n if (features.indexOf('all') >= 0) {\n features = ['cib', 'wasm', 'js', 'ww'];\n }\n\n this.__requested_features = features;\n this.__mathlib = new MathLib(features); // Check WebWorker support if requested\n\n if (features.indexOf('ww') >= 0) {\n if (typeof window !== 'undefined' && 'Worker' in window) {\n // IE <= 11 don't allow to create webworkers from string. We should check it.\n // https://connect.microsoft.com/IE/feedback/details/801810/web-workers-from-blob-urls-in-ie-10-and-11\n try {\n var wkr = _dereq_('webworkify')(function () {});\n\n wkr.terminate();\n this.features.ww = true; // pool uniqueness depends on pool config + webworker config\n\n var wpool_key = \"wp_\".concat(JSON.stringify(this.options));\n\n if (singletones[wpool_key]) {\n this.__workersPool = singletones[wpool_key];\n } else {\n this.__workersPool = new Pool(workerFabric, this.options.idle);\n singletones[wpool_key] = this.__workersPool;\n }\n } catch (__) {}\n }\n }\n\n var initMath = this.__mathlib.init().then(function (mathlib) {\n // Copy detected features\n assign(_this.features, mathlib.features);\n });\n\n var checkCibResize;\n\n if (!CAN_CREATE_IMAGE_BITMAP) {\n checkCibResize = Promise.resolve(false);\n } else {\n checkCibResize = utils.cib_support(this.options.createCanvas).then(function (status) {\n if (_this.features.cib && features.indexOf('cib') < 0) {\n _this.debug('createImageBitmap() resize supported, but disabled by config');\n\n return;\n }\n\n if (features.indexOf('cib') >= 0) _this.features.cib = status;\n });\n }\n\n CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);\n var checkOffscreenCanvas;\n\n if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf('ww') !== -1) {\n checkOffscreenCanvas = utils.worker_offscreen_canvas_support();\n } else {\n checkOffscreenCanvas = Promise.resolve(false);\n }\n\n checkOffscreenCanvas = checkOffscreenCanvas.then(function (result) {\n CAN_USE_OFFSCREEN_CANVAS = result;\n }); // we use createImageBitmap to crop image data and pass it to workers,\n // so need to check whether function works correctly;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n\n var checkCibRegion = utils.cib_can_use_region().then(function (result) {\n CAN_USE_CIB_REGION_FOR_IMAGE = result;\n }); // Init math lib. That's async because can load some\n\n this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function () {\n return _this;\n });\n return this.__initPromise;\n}; // Call resizer in webworker or locally, depending on config\n\n\nPica.prototype.__invokeResize = function (tileOpts, opts) {\n var _this2 = this;\n\n // Share cache between calls:\n //\n // - wasm instance\n // - wasm memory object\n //\n opts.__mathCache = opts.__mathCache || {};\n return Promise.resolve().then(function () {\n if (!_this2.features.ww) {\n // not possible to have ImageBitmap here if user disabled WW\n return {\n data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)\n };\n }\n\n return new Promise(function (resolve, reject) {\n var w = _this2.__workersPool.acquire();\n\n if (opts.cancelToken) opts.cancelToken[\"catch\"](function (err) {\n return reject(err);\n });\n\n w.value.onmessage = function (ev) {\n w.release();\n if (ev.data.err) reject(ev.data.err);else resolve(ev.data);\n };\n\n var transfer = [];\n if (tileOpts.src) transfer.push(tileOpts.src.buffer);\n if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);\n w.value.postMessage({\n opts: tileOpts,\n features: _this2.__requested_features,\n preload: {\n wasm_nodule: _this2.__mathlib.__\n }\n }, transfer);\n });\n });\n}; // this function can return promise if createImageBitmap is used\n\n\nPica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extractTo) {\n if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && ( // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,\n // can use canvas because canvas doesn't have orientation;\n // see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671\n utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {\n this.debug('Create tile for OffscreenCanvas');\n return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function (bitmap) {\n extractTo.srcBitmap = bitmap;\n return extractTo;\n });\n } // Extract tile RGBA buffer, depending on input type\n\n\n if (utils.isCanvas(from)) {\n if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d', {\n alpha: Boolean(opts.alpha)\n }); // If input is Canvas - extract region data directly\n\n this.debug('Get tile pixel data');\n extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;\n return extractTo;\n } // If input is Image or decoded to ImageBitmap,\n // draw region to temporary canvas and extract data from it\n //\n // Note! Attempt to reuse this canvas causes significant slowdown in chrome\n //\n\n\n this.debug('Draw tile imageBitmap/image to temporary canvas');\n var tmpCanvas = this.options.createCanvas(tile.width, tile.height);\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.globalCompositeOperation = 'copy';\n tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n this.debug('Get tile pixel data');\n extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data; // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n return extractTo;\n};\n\nPica.prototype.__landTileData = function (tile, result, stageEnv) {\n var toImageData;\n this.debug('Convert raw rgba tile result to ImageData');\n\n if (result.bitmap) {\n stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);\n return null;\n }\n\n if (CAN_NEW_IMAGE_DATA) {\n // this branch is for modern browsers\n // If `new ImageData()` & Uint8ClampedArray suported\n toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);\n } else {\n // fallback for `node-canvas` and old browsers\n // (IE11 has ImageData but does not support `new ImageData()`)\n toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\n if (toImageData.data.set) {\n toImageData.data.set(result.data);\n } else {\n // IE9 don't have `.set()`\n for (var i = toImageData.data.length - 1; i >= 0; i--) {\n toImageData.data[i] = result.data[i];\n }\n }\n }\n\n this.debug('Draw tile');\n\n if (NEED_SAFARI_FIX) {\n // Safari draws thin white stripes between tiles without this fix\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n } else {\n stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n }\n\n return null;\n};\n\nPica.prototype.__tileAndResize = function (from, to, opts) {\n var _this3 = this;\n\n var stageEnv = {\n srcCtx: null,\n srcImageBitmap: null,\n isImageBitmapReused: false,\n toCtx: null\n };\n\n var processTile = function processTile(tile) {\n return _this3.__limit(function () {\n if (opts.canceled) return opts.cancelToken;\n var tileOpts = {\n width: tile.width,\n height: tile.height,\n toWidth: tile.toWidth,\n toHeight: tile.toHeight,\n scaleX: tile.scaleX,\n scaleY: tile.scaleY,\n offsetX: tile.offsetX,\n offsetY: tile.offsetY,\n quality: opts.quality,\n alpha: opts.alpha,\n unsharpAmount: opts.unsharpAmount,\n unsharpRadius: opts.unsharpRadius,\n unsharpThreshold: opts.unsharpThreshold\n };\n\n _this3.debug('Invoke resize math');\n\n return Promise.resolve(tileOpts).then(function (tileOpts) {\n return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts);\n }).then(function (tileOpts) {\n _this3.debug('Invoke resize math');\n\n return _this3.__invokeResize(tileOpts, opts);\n }).then(function (result) {\n if (opts.canceled) return opts.cancelToken;\n stageEnv.srcImageData = null;\n return _this3.__landTileData(tile, result, stageEnv);\n });\n });\n }; // Need to normalize data source first. It can be canvas or image.\n // If image - try to decode in background if possible\n\n\n return Promise.resolve().then(function () {\n stageEnv.toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n if (utils.isCanvas(from)) return null;\n\n if (utils.isImageBitmap(from)) {\n stageEnv.srcImageBitmap = from;\n stageEnv.isImageBitmapReused = true;\n return null;\n }\n\n if (utils.isImage(from)) {\n // try do decode image in background for faster next operations;\n // if we're using offscreen canvas, cib is called per tile, so not needed here\n if (!CAN_CREATE_IMAGE_BITMAP) return null;\n\n _this3.debug('Decode image via createImageBitmap');\n\n return createImageBitmap(from).then(function (imageBitmap) {\n stageEnv.srcImageBitmap = imageBitmap;\n }) // Suppress error to use fallback, if method fails\n // https://github.com/nodeca/pica/issues/190\n\n /* eslint-disable no-unused-vars */\n [\"catch\"](function (e) {\n return null;\n });\n }\n\n throw new Error('Pica: \".from\" should be Image, Canvas or ImageBitmap');\n }).then(function () {\n if (opts.canceled) return opts.cancelToken;\n\n _this3.debug('Calculate tiles'); //\n // Here we are with \"normalized\" source,\n // follow to tiling\n //\n\n\n var regions = createRegions({\n width: opts.width,\n height: opts.height,\n srcTileSize: _this3.options.tile,\n toWidth: opts.toWidth,\n toHeight: opts.toHeight,\n destTileBorder: opts.__destTileBorder\n });\n var jobs = regions.map(function (tile) {\n return processTile(tile);\n });\n\n function cleanup(stageEnv) {\n if (stageEnv.srcImageBitmap) {\n if (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n stageEnv.srcImageBitmap = null;\n }\n }\n\n _this3.debug('Process tiles');\n\n return Promise.all(jobs).then(function () {\n _this3.debug('Finished!');\n\n cleanup(stageEnv);\n return to;\n }, function (err) {\n cleanup(stageEnv);\n throw err;\n });\n });\n};\n\nPica.prototype.__processStages = function (stages, from, to, opts) {\n var _this4 = this;\n\n if (opts.canceled) return opts.cancelToken;\n\n var _stages$shift = stages.shift(),\n _stages$shift2 = _slicedToArray(_stages$shift, 2),\n toWidth = _stages$shift2[0],\n toHeight = _stages$shift2[1];\n\n var isLastStage = stages.length === 0;\n opts = assign({}, opts, {\n toWidth: toWidth,\n toHeight: toHeight,\n // only use user-defined quality for the last stage,\n // use simpler (Hamming) filter for the first stages where\n // scale factor is large enough (more than 2-3)\n quality: isLastStage ? opts.quality : Math.min(1, opts.quality)\n });\n var tmpCanvas;\n\n if (!isLastStage) {\n // create temporary canvas\n tmpCanvas = this.options.createCanvas(toWidth, toHeight);\n }\n\n return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function () {\n if (isLastStage) return to;\n opts.width = toWidth;\n opts.height = toHeight;\n return _this4.__processStages(stages, tmpCanvas, to, opts);\n }).then(function (res) {\n if (tmpCanvas) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n tmpCanvas.width = tmpCanvas.height = 0;\n }\n\n return res;\n });\n};\n\nPica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {\n var _this5 = this;\n\n var toCtx = to.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n this.debug('Resize via createImageBitmap()');\n return createImageBitmap(from, {\n resizeWidth: opts.toWidth,\n resizeHeight: opts.toHeight,\n resizeQuality: utils.cib_quality_name(opts.quality)\n }).then(function (imageBitmap) {\n if (opts.canceled) return opts.cancelToken; // if no unsharp - draw directly to output canvas\n\n if (!opts.unsharpAmount) {\n toCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n }\n\n _this5.debug('Unsharp result');\n\n var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);\n\n var tmpCtx = tmpCanvas.getContext('2d', {\n alpha: Boolean(opts.alpha)\n });\n tmpCtx.drawImage(imageBitmap, 0, 0);\n imageBitmap.close();\n var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);\n\n _this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);\n\n toCtx.putImageData(iData, 0, 0); // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n\n tmpCanvas.width = tmpCanvas.height = 0;\n iData = tmpCtx = tmpCanvas = toCtx = null;\n\n _this5.debug('Finished!');\n\n return to;\n });\n};\n\nPica.prototype.resize = function (from, to, options) {\n var _this6 = this;\n\n this.debug('Start resize...');\n var opts = assign({}, DEFAULT_RESIZE_OPTS);\n\n if (!isNaN(options)) {\n opts = assign(opts, {\n quality: options\n });\n } else if (options) {\n opts = assign(opts, options);\n }\n\n opts.toWidth = to.width;\n opts.toHeight = to.height;\n opts.width = from.naturalWidth || from.width;\n opts.height = from.naturalHeight || from.height; // Prevent stepper from infinite loop\n\n if (to.width === 0 || to.height === 0) {\n return Promise.reject(new Error(\"Invalid output size: \".concat(to.width, \"x\").concat(to.height)));\n }\n\n if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;\n opts.canceled = false;\n\n if (opts.cancelToken) {\n // Wrap cancelToken to avoid successive resolve & set flag\n opts.cancelToken = opts.cancelToken.then(function (data) {\n opts.canceled = true;\n throw data;\n }, function (err) {\n opts.canceled = true;\n throw err;\n });\n }\n\n var DEST_TILE_BORDER = 3; // Max possible filter window size\n\n opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));\n return this.init().then(function () {\n if (opts.canceled) return opts.cancelToken; // if createImageBitmap supports resize, just do it and return\n\n if (_this6.features.cib) {\n return _this6.__resizeViaCreateImageBitmap(from, to, opts);\n }\n\n if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {\n var err = new Error('Pica: cannot use getImageData on canvas, ' + \"make sure fingerprinting protection isn't enabled\");\n err.code = 'ERR_GET_IMAGE_DATA';\n throw err;\n } //\n // No easy way, let's resize manually via arrays\n //\n\n\n var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);\n return _this6.__processStages(stages, from, to, opts);\n });\n}; // RGBA buffer resize\n//\n\n\nPica.prototype.resizeBuffer = function (options) {\n var _this7 = this;\n\n var opts = assign({}, DEFAULT_RESIZE_OPTS, options);\n return this.init().then(function () {\n return _this7.__mathlib.resizeAndUnsharp(opts);\n });\n};\n\nPica.prototype.toBlob = function (canvas, mimeType, quality) {\n mimeType = mimeType || 'image/png';\n return new Promise(function (resolve) {\n if (canvas.toBlob) {\n canvas.toBlob(function (blob) {\n return resolve(blob);\n }, mimeType, quality);\n return;\n }\n\n if (canvas.convertToBlob) {\n resolve(canvas.convertToBlob({\n type: mimeType,\n quality: quality\n }));\n return;\n } // Fallback for old browsers\n\n\n var asString = atob(canvas.toDataURL(mimeType, quality).split(',')[1]);\n var len = asString.length;\n var asBuffer = new Uint8Array(len);\n\n for (var i = 0; i < len; i++) {\n asBuffer[i] = asString.charCodeAt(i);\n }\n\n resolve(new Blob([asBuffer], {\n type: mimeType\n }));\n });\n};\n\nPica.prototype.debug = function () {};\n\nmodule.exports = Pica;\n\n},{\"./lib/mathlib\":1,\"./lib/pool\":13,\"./lib/stepper\":14,\"./lib/tiler\":15,\"./lib/utils\":16,\"./lib/worker\":17,\"object-assign\":23,\"webworkify\":24}]},{},[])(\"/index.js\")\n});\n});\n\nvar image_traverse = createCommonjsModule(function (module) {\n\n//////////////////////////////////////////////////////////////////////////\n// Helpers\n//\nfunction error(message, code) {\n var err = new Error(message);\n err.code = code;\n return err;\n}\n\n\n// Convert number to 0xHH string\n//\nfunction to_hex(number) {\n var n = number.toString(16).toUpperCase();\n for (var i = 2 - n.length; i > 0; i--) n = '0' + n;\n return '0x' + n;\n}\n\n\nfunction utf8_encode(str) {\n try {\n return unescape(encodeURIComponent(str));\n } catch (_) {\n return str;\n }\n}\n\n\nfunction utf8_decode(str) {\n try {\n return decodeURIComponent(escape(str));\n } catch (_) {\n return str;\n }\n}\n\n\n// Check if input is a Uint8Array\n//\nfunction is_uint8array(bin) {\n return Object.prototype.toString.call(bin) === '[object Uint8Array]';\n}\n\n\n//////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - exif_start: Number - start of TIFF header (after Exif\\0\\0)\n// - exif_end: Number - end of Exif segment\n// - on_entry: Number - callback\n//\nfunction ExifParser(jpeg_bin, exif_start, exif_end) {\n // Uint8Array, exif without signature (which isn't included in offsets)\n this.input = jpeg_bin.subarray(exif_start, exif_end);\n\n // offset correction for `on_entry` callback\n this.start = exif_start;\n\n // Check TIFF header (includes byte alignment and first IFD offset)\n var sig = String.fromCharCode.apply(null, this.input.subarray(0, 4));\n\n if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n throw error('invalid TIFF signature', 'EBADDATA');\n }\n\n // true if motorola (big endian) byte alignment, false if intel\n this.big_endian = sig[0] === 'M';\n}\n\n\nExifParser.prototype.each = function (on_entry) {\n // allow premature exit\n this.aborted = false;\n\n var offset = this.read_uint32(4);\n\n this.ifds_to_read = [ {\n id: 0,\n offset: offset\n } ];\n\n while (this.ifds_to_read.length > 0 && !this.aborted) {\n var i = this.ifds_to_read.shift();\n if (!i.offset) continue;\n this.scan_ifd(i.id, i.offset, on_entry);\n }\n};\n\n\nExifParser.prototype.filter = function (on_entry) {\n var ifds = {};\n\n // make sure IFD0 always exists\n ifds.ifd0 = { id: 0, entries: [] };\n\n this.each(function (entry) {\n if (on_entry(entry) === false && !entry.is_subifd_link) return;\n if (entry.is_subifd_link && entry.count !== 1 && entry.format !== 4) return; // filter out bogus links\n\n if (!ifds['ifd' + entry.ifd]) {\n ifds['ifd' + entry.ifd] = { id: entry.ifd, entries: [] };\n }\n\n ifds['ifd' + entry.ifd].entries.push(entry);\n });\n\n // thumbnails are not supported just yet, so delete all information related to it\n delete ifds.ifd1;\n\n // Calculate output size\n var length = 8;\n Object.keys(ifds).forEach(function (ifd_no) {\n length += 2;\n\n ifds[ifd_no].entries.forEach(function (entry) {\n length += 12 + (entry.data_length > 4 ? Math.ceil(entry.data_length / 2) * 2 : 0);\n });\n\n length += 4;\n });\n\n this.output = new Uint8Array(length);\n this.output[0] = this.output[1] = (this.big_endian ? 'M' : 'I').charCodeAt(0);\n this.write_uint16(2, 0x2A);\n\n var offset = 8;\n var self = this;\n this.write_uint32(4, offset);\n\n Object.keys(ifds).forEach(function (ifd_no) {\n ifds[ifd_no].written_offset = offset;\n\n var ifd_start = offset;\n var ifd_end = ifd_start + 2 + ifds[ifd_no].entries.length * 12 + 4;\n offset = ifd_end;\n\n self.write_uint16(ifd_start, ifds[ifd_no].entries.length);\n\n ifds[ifd_no].entries.sort(function (a, b) {\n // IFD entries must be in order of increasing tag IDs\n return a.tag - b.tag;\n }).forEach(function (entry, idx) {\n var entry_offset = ifd_start + 2 + idx * 12;\n\n self.write_uint16(entry_offset, entry.tag);\n self.write_uint16(entry_offset + 2, entry.format);\n self.write_uint32(entry_offset + 4, entry.count);\n\n if (entry.is_subifd_link) {\n // filled in later\n if (ifds['ifd' + entry.tag]) ifds['ifd' + entry.tag].link_offset = entry_offset + 8;\n } else if (entry.data_length <= 4) {\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + 4),\n entry_offset + 8\n );\n } else {\n self.write_uint32(entry_offset + 8, offset);\n self.output.set(\n self.input.subarray(entry.data_offset - self.start, entry.data_offset - self.start + entry.data_length),\n offset\n );\n offset += Math.ceil(entry.data_length / 2) * 2;\n }\n });\n\n var next_ifd = ifds['ifd' + (ifds[ifd_no].id + 1)];\n if (next_ifd) next_ifd.link_offset = ifd_end - 4;\n });\n\n Object.keys(ifds).forEach(function (ifd_no) {\n if (ifds[ifd_no].written_offset && ifds[ifd_no].link_offset) {\n self.write_uint32(ifds[ifd_no].link_offset, ifds[ifd_no].written_offset);\n }\n });\n\n if (this.output.length !== offset) throw error('internal error: incorrect buffer size allocated');\n\n return this.output;\n};\n\n\nExifParser.prototype.read_uint16 = function (offset) {\n var d = this.input;\n if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x100 + d[offset + 1] :\n d[offset] + d[offset + 1] * 0x100;\n};\n\n\nExifParser.prototype.read_uint32 = function (offset) {\n var d = this.input;\n if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA');\n\n return this.big_endian ?\n d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3] :\n d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000;\n};\n\n\nExifParser.prototype.write_uint16 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 8) & 0xFF;\n d[offset + 1] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n }\n};\n\n\nExifParser.prototype.write_uint32 = function (offset, value) {\n var d = this.output;\n\n if (this.big_endian) {\n d[offset] = (value >>> 24) & 0xFF;\n d[offset + 1] = (value >>> 16) & 0xFF;\n d[offset + 2] = (value >>> 8) & 0xFF;\n d[offset + 3] = value & 0xFF;\n } else {\n d[offset] = value & 0xFF;\n d[offset + 1] = (value >>> 8) & 0xFF;\n d[offset + 2] = (value >>> 16) & 0xFF;\n d[offset + 3] = (value >>> 24) & 0xFF;\n }\n};\n\n\nExifParser.prototype.is_subifd_link = function (ifd, tag) {\n return (ifd === 0 && tag === 0x8769) || // SubIFD\n (ifd === 0 && tag === 0x8825) || // GPS Info\n (ifd === 0x8769 && tag === 0xA005); // Interop IFD\n};\n\n\n// Returns byte length of a single component of a given format\n//\nExifParser.prototype.exif_format_length = function (format) {\n switch (format) {\n case 1: // byte\n case 2: // ascii\n case 6: // sbyte\n case 7: // undefined\n return 1;\n\n case 3: // short\n case 8: // sshort\n return 2;\n\n case 4: // long\n case 9: // slong\n case 11: // float\n return 4;\n\n case 5: // rational\n case 10: // srational\n case 12: // double\n return 8;\n\n default:\n // unknown type\n return 0;\n }\n};\n\n\n// Reads Exif data\n//\nExifParser.prototype.exif_format_read = function (format, offset) {\n var v;\n\n switch (format) {\n case 1: // byte\n case 2: // ascii\n v = this.input[offset];\n return v;\n\n case 6: // sbyte\n v = this.input[offset];\n return v | (v & 0x80) * 0x1fffffe;\n\n case 3: // short\n v = this.read_uint16(offset);\n return v;\n\n case 8: // sshort\n v = this.read_uint16(offset);\n return v | (v & 0x8000) * 0x1fffe;\n\n case 4: // long\n v = this.read_uint32(offset);\n return v;\n\n case 9: // slong\n v = this.read_uint32(offset);\n return v | 0;\n\n case 5: // rational\n case 10: // srational\n case 11: // float\n case 12: // double\n return null; // not implemented\n\n case 7: // undefined\n return null; // blob\n\n default:\n // unknown type\n return null;\n }\n};\n\n\nExifParser.prototype.scan_ifd = function (ifd_no, offset, on_entry) {\n var entry_count = this.read_uint16(offset);\n\n offset += 2;\n\n for (var i = 0; i < entry_count; i++) {\n var tag = this.read_uint16(offset);\n var format = this.read_uint16(offset + 2);\n var count = this.read_uint32(offset + 4);\n\n var comp_length = this.exif_format_length(format);\n var data_length = count * comp_length;\n var data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8);\n var is_subifd_link = false;\n\n if (data_offset + data_length > this.input.length) {\n throw error('unexpected EOF', 'EBADDATA');\n }\n\n var value = [];\n var comp_offset = data_offset;\n\n for (var j = 0; j < count; j++, comp_offset += comp_length) {\n var item = this.exif_format_read(format, comp_offset);\n if (item === null) {\n value = null;\n break;\n }\n value.push(item);\n }\n\n if (Array.isArray(value) && format === 2) {\n try {\n value = utf8_decode(String.fromCharCode.apply(null, value));\n } catch (_) {\n value = null;\n }\n\n if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1);\n }\n\n if (this.is_subifd_link(ifd_no, tag)) {\n if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n this.ifds_to_read.push({\n id: tag,\n offset: value[0]\n });\n is_subifd_link = true;\n }\n }\n\n var entry = {\n is_big_endian: this.big_endian,\n ifd: ifd_no,\n tag: tag,\n format: format,\n count: count,\n entry_offset: offset + this.start,\n data_length: data_length,\n data_offset: data_offset + this.start,\n value: value,\n is_subifd_link: is_subifd_link\n };\n\n if (on_entry(entry) === false) {\n this.aborted = true;\n return;\n }\n\n offset += 12;\n }\n\n if (ifd_no === 0) {\n this.ifds_to_read.push({\n id: 1,\n offset: this.read_uint32(offset)\n });\n }\n};\n\n\n// Check whether input is a JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n//\n// Returns true if it is and false otherwise\n//\nmodule.exports.is_jpeg = function (jpeg_bin) {\n return jpeg_bin.length >= 4 && jpeg_bin[0] === 0xFF && jpeg_bin[1] === 0xD8 && jpeg_bin[2] === 0xFF;\n};\n\n\n// Call an iterator on each segment in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// Iteration stops when `EOI` (0xFFD9) marker is reached or if `on_segment`\n// function returns `false`.\n//\nmodule.exports.jpeg_segments_each = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n if (!module.exports.is_jpeg(jpeg_bin)) {\n throw error('Unknown file format', 'ENOTJPEG');\n }\n\n var offset = 0, length = jpeg_bin.length, inside_scan = false;\n\n for (;;) {\n var segment_code, segment_length;\n\n if (offset + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n var byte1 = jpeg_bin[offset];\n var byte2 = jpeg_bin[offset + 1];\n\n if (byte1 === 0xFF && byte2 === 0xFF) {\n // padding\n segment_code = 0xFF;\n segment_length = 1;\n\n } else if (byte1 === 0xFF && byte2 !== 0) {\n // marker\n segment_code = byte2;\n segment_length = 2;\n\n if ((0xD0 <= segment_code && segment_code <= 0xD9) || segment_code === 0x01) ; else {\n if (offset + 3 >= length) throw error('Unexpected EOF', 'EBADDATA');\n segment_length += jpeg_bin[offset + 2] * 0x100 + jpeg_bin[offset + 3];\n if (segment_length < 2) throw error('Invalid segment length', 'EBADDATA');\n if (offset + segment_length - 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n }\n\n if (inside_scan) {\n if (segment_code >= 0xD0 && segment_code <= 0xD7) ; else {\n inside_scan = false;\n }\n }\n\n if (segment_code === 0xDA /* SOS */) inside_scan = true;\n } else if (inside_scan) {\n // entropy-encoded segment\n for (var pos = offset + 1; ; pos++) {\n // scan until we find FF\n if (pos >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos] === 0xFF) {\n if (pos + 1 >= length) throw error('Unexpected EOF', 'EBADDATA');\n if (jpeg_bin[pos + 1] !== 0) {\n segment_code = 0;\n segment_length = pos - offset;\n break;\n }\n }\n }\n } else {\n throw error('Unexpected byte at segment start: ' + to_hex(byte1) +\n ' (offset ' + to_hex(offset) + ')', 'EBADDATA');\n }\n\n if (on_segment({ code: segment_code, offset: offset, length: segment_length }) === false) break;\n if (segment_code === 0xD9 /* EOI */) break;\n offset += segment_length;\n }\n};\n\n\n// Replace or remove segments in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_segment: Function - callback executed on each JPEG marker segment\n// - segment: Object\n// - code: Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n// - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n// - length: Number - length of the entire marker segment including first two bytes and length\n// - 2 for standalone markers\n// - 4+length for markers with data\n//\n// `on_segment` function should return one of the following:\n// - `false` - segment is removed from the output\n// - Uint8Array - segment is replaced with the new data\n// - [ Uint8Array ] - segment is replaced with the new data\n// - anything else - segment is copied to the output as is\n//\n// Any data after `EOI` (0xFFD9) marker is removed.\n//\nmodule.exports.jpeg_segments_filter = function (jpeg_bin, on_segment) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_segment !== 'function') {\n throw error('Invalid argument (on_segment), Function expected', 'EINVAL');\n }\n\n var ranges = [];\n var out_length = 0;\n\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n var new_segment = on_segment(segment);\n\n if (is_uint8array(new_segment)) {\n ranges.push({ data: new_segment });\n out_length += new_segment.length;\n } else if (Array.isArray(new_segment)) {\n new_segment.filter(is_uint8array).forEach(function (s) {\n ranges.push({ data: s });\n out_length += s.length;\n });\n } else if (new_segment !== false) {\n var new_range = { start: segment.offset, end: segment.offset + segment.length };\n\n if (ranges.length > 0 && ranges[ranges.length - 1].end === new_range.start) {\n ranges[ranges.length - 1].end = new_range.end;\n } else {\n ranges.push(new_range);\n }\n\n out_length += segment.length;\n }\n });\n\n var result = new Uint8Array(out_length);\n var offset = 0;\n\n ranges.forEach(function (range) {\n var data = range.data || jpeg_bin.subarray(range.start, range.end);\n result.set(data, offset);\n offset += data.length;\n });\n\n return result;\n};\n\n\n// Call an iterator on each Exif entry in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// Iteration stops early if iterator returns `false`.\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed.\n//\nmodule.exports.jpeg_exif_tags_each = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n /* eslint-disable consistent-return */\n module.exports.jpeg_segments_each(jpeg_bin, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length).each(on_exif_entry);\n return false;\n }\n });\n};\n\n\n// Remove Exif entries in the given JPEG image\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - on_entry: Function - callback executed on each Exif entry\n// - entry: Object\n// - is_big_endian: Boolean - whether Exif uses big or little endian byte alignment\n// - ifd: Number - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n// 0x8825 for GPS Info, 0xA005 for Interop IFD)\n// - tag: Number - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n// - format: Number - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n// - count: Number - number of components of the given format inside data\n// (usually 1, or string length for ascii format)\n// - entry_offset: Number - start of Exif entry (entry length is always 12, so not included)\n// - data_offset: Number - start of data attached to Exif entry (will overlap with entry if length <= 4)\n// - data_length: Number - length of data attached to Exif entry\n// - value: Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n// - is_subifd_link: Boolean - whether this entry is recognized to be a link to subifd (can't filter these out)\n//\n// This function removes following from Exif:\n// - all entries where iterator returned false (except subifd links which are mandatory)\n// - IFD1 and thumbnail image (the purpose of this function is to reduce file size,\n// so thumbnail is usually the first thing to go)\n// - all other data that isn't in IFD0, SubIFD, GPSIFD, InteropIFD\n// (theoretically possible proprietary extensions, I haven't seen any of these yet)\n//\n// Changing data inside Exif entries is NOT supported yet (modifying `entry` object inside callback may break stuff).\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed, and original JPEG is returned as is.\n//\nmodule.exports.jpeg_exif_tags_filter = function (jpeg_bin, on_exif_entry) {\n if (!is_uint8array(jpeg_bin)) {\n throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL');\n }\n\n if (typeof on_exif_entry !== 'function') {\n throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL');\n }\n\n var stop_search = false;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n if (stop_search) return;\n if (segment.code === 0xDA /* SOS */) stop_search = true;\n\n // look for APP1 segment and compare header with 'Exif\\0\\0'\n if (segment.code === 0xE1 && segment.length >= 10 &&\n jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n\n var new_exif = new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length)\n .filter(on_exif_entry);\n if (!new_exif) return false;\n\n var header = new Uint8Array(10);\n\n header.set(jpeg_bin.slice(segment.offset, segment.offset + 10));\n header[2] = ((new_exif.length + 8) >>> 8) & 0xFF;\n header[3] = (new_exif.length + 8) & 0xFF;\n\n stop_search = true;\n return [ header, new_exif ];\n }\n });\n};\n\n\n// Inserts a custom comment marker segment into JPEG file.\n//\n// Input:\n// - jpeg_bin: Uint8Array - jpeg file\n// - comment: String\n//\n// Comment is inserted after first two bytes (FFD8, SOI).\n//\n// If JFIF (APP0) marker exists immediately after SOI (as mandated by the JFIF\n// spec), we insert comment after it instead.\n//\nmodule.exports.jpeg_add_comment = function (jpeg_bin, comment) {\n var comment_inserted = false, segment_count = 0;\n\n return module.exports.jpeg_segments_filter(jpeg_bin, function (segment) {\n segment_count++;\n if (segment_count === 1 && segment.code === 0xD8 /* SOI */) return;\n if (segment_count === 2 && segment.code === 0xE0 /* APP0 */) return;\n\n if (comment_inserted) return;\n comment = utf8_encode(comment);\n\n // comment segment\n var csegment = new Uint8Array(5 + comment.length);\n var offset = 0;\n\n csegment[offset++] = 0xFF;\n csegment[offset++] = 0xFE;\n csegment[offset++] = ((comment.length + 3) >>> 8) & 0xFF;\n csegment[offset++] = (comment.length + 3) & 0xFF;\n\n comment.split('').forEach(function (c) {\n csegment[offset++] = c.charCodeAt(0) & 0xFF;\n });\n\n csegment[offset++] = 0;\n comment_inserted = true;\n\n return [ csegment, jpeg_bin.subarray(segment.offset, segment.offset + segment.length) ];\n });\n};\n});\n\nfunction jpeg_patch_exif(env) {\n return this._getUint8Array(env.blob).then(function (data) {\n env.is_jpeg = image_traverse.is_jpeg(data);\n\n if (!env.is_jpeg) return Promise.resolve(env);\n\n env.orig_blob = env.blob;\n\n try {\n var exif_is_big_endian, orientation_offset;\n\n /* eslint-disable consistent-return */\n image_traverse.jpeg_exif_tags_each(data, function (entry) {\n if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n env.orientation = entry.value[0] || 1;\n exif_is_big_endian = entry.is_big_endian;\n orientation_offset = entry.data_offset;\n return false;\n }\n });\n\n if (orientation_offset) {\n var orientation_patch = exif_is_big_endian ?\n new Uint8Array([ 0, 1 ]) :\n new Uint8Array([ 1, 0 ]);\n\n env.blob = new Blob([\n data.slice(0, orientation_offset),\n orientation_patch,\n data.slice(orientation_offset + 2)\n ], { type: 'image/jpeg' });\n }\n } catch (_) {}\n\n return env;\n });\n}\n\n\nfunction jpeg_rotate_canvas(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n var orientation = env.orientation - 1;\n if (!orientation) return Promise.resolve(env);\n\n var canvas;\n\n if (orientation & 4) {\n canvas = this.pica.options.createCanvas(env.out_canvas.height, env.out_canvas.width);\n } else {\n canvas = this.pica.options.createCanvas(env.out_canvas.width, env.out_canvas.height);\n }\n\n var ctx = canvas.getContext('2d');\n\n ctx.save();\n\n if (orientation & 1) ctx.transform(-1, 0, 0, 1, canvas.width, 0);\n if (orientation & 2) ctx.transform(-1, 0, 0, -1, canvas.width, canvas.height);\n if (orientation & 4) ctx.transform(0, 1, 1, 0, 0, 0);\n\n ctx.drawImage(env.out_canvas, 0, 0);\n ctx.restore();\n\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n env.out_canvas.width = env.out_canvas.height = 0;\n\n env.out_canvas = canvas;\n\n return Promise.resolve(env);\n}\n\n\nfunction jpeg_attach_orig_segments(env) {\n if (!env.is_jpeg) return Promise.resolve(env);\n\n return Promise.all([\n this._getUint8Array(env.blob),\n this._getUint8Array(env.out_blob)\n ]).then(function (res) {\n var data = res[0];\n var data_out = res[1];\n\n if (!image_traverse.is_jpeg(data)) return Promise.resolve(env);\n\n var segments = [];\n\n image_traverse.jpeg_segments_each(data, function (segment) {\n if (segment.code === 0xDA /* SOS */) return false;\n segments.push(segment);\n });\n\n segments = segments\n .filter(function (segment) {\n // Drop ICC_PROFILE\n //\n if (segment.code === 0xE2) return false;\n\n // Keep all APPn segments excluding APP2 (ICC_PROFILE),\n // remove others because most of them depend on image data (DCT and such).\n //\n // APP0 - JFIF, APP1 - Exif, the rest are photoshop metadata and such\n //\n // See full list at https://www.w3.org/Graphics/JPEG/itu-t81.pdf (table B.1 on page 32)\n //\n if (segment.code >= 0xE0 && segment.code < 0xF0) return true;\n\n // Keep comments\n //\n if (segment.code === 0xFE) return true;\n\n return false;\n })\n .map(function (segment) {\n return data.slice(segment.offset, segment.offset + segment.length);\n });\n\n env.out_blob = new Blob(\n // intentionally omitting expected JFIF segment (offset 2 to 20)\n [ data_out.slice(0, 2) ].concat(segments).concat([ data_out.slice(20) ]),\n { type: 'image/jpeg' }\n );\n\n return env;\n });\n}\n\n\nfunction assign(reducer) {\n reducer.before('_blob_to_image', jpeg_patch_exif);\n reducer.after('_transform', jpeg_rotate_canvas);\n reducer.after('_create_blob', jpeg_attach_orig_segments);\n}\n\n\nvar jpeg_patch_exif_1 = jpeg_patch_exif;\nvar jpeg_rotate_canvas_1 = jpeg_rotate_canvas;\nvar jpeg_attach_orig_segments_1 = jpeg_attach_orig_segments;\nvar assign_1 = assign;\n\nvar jpeg_plugins = {\n\tjpeg_patch_exif: jpeg_patch_exif_1,\n\tjpeg_rotate_canvas: jpeg_rotate_canvas_1,\n\tjpeg_attach_orig_segments: jpeg_attach_orig_segments_1,\n\tassign: assign_1\n};\n\nfunction ImageBlobReduce(options) {\n if (!(this instanceof ImageBlobReduce)) return new ImageBlobReduce(options);\n\n options = options || {};\n\n this.pica = options.pica || pica({});\n this.initialized = false;\n\n this.utils = utils;\n}\n\n\nImageBlobReduce.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\nImageBlobReduce.prototype.init = function () {\n this.use(jpeg_plugins.assign);\n};\n\n\nImageBlobReduce.prototype.toBlob = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(this._create_blob)\n .then(function (_env) {\n // Safari 12 workaround\n // https://github.com/nodeca/pica/issues/199\n _env.out_canvas.width = _env.out_canvas.height = 0;\n\n return _env.out_blob;\n });\n};\n\n\nImageBlobReduce.prototype.toCanvas = function (blob, options) {\n var opts = utils.assign({ max: Infinity }, options);\n var env = {\n blob: blob,\n opts: opts\n };\n\n if (!this.initialized) {\n this.init();\n this.initialized = true;\n }\n\n return Promise.resolve(env)\n .then(this._blob_to_image)\n .then(this._calculate_size)\n .then(this._transform)\n .then(this._cleanup)\n .then(function (_env) { return _env.out_canvas; });\n};\n\n\nImageBlobReduce.prototype.before = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return fn.call(self, env).then(function (_env) {\n return old_fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype.after = function (method_name, fn) {\n if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist');\n if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected');\n\n var old_fn = this[method_name];\n var self = this;\n\n this[method_name] = function (env) {\n return old_fn.call(self, env).then(function (_env) {\n return fn.call(self, _env);\n });\n };\n\n return this;\n};\n\n\nImageBlobReduce.prototype._blob_to_image = function (env) {\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n env.image = document.createElement('img');\n env.image_url = URL.createObjectURL(env.blob);\n env.image.src = env.image_url;\n\n return new Promise(function (resolve, reject) {\n env.image.onerror = function () { reject(new Error('ImageBlobReduce: failed to create Image() from blob')); };\n env.image.onload = function () { resolve(env); };\n });\n};\n\n\nImageBlobReduce.prototype._calculate_size = function (env) {\n //\n // Note, if your need not \"symmetric\" resize logic, you MUST check\n // `env.orientation` (set by plugins) and swap width/height appropriately.\n //\n var scale_factor = env.opts.max / Math.max(env.image.width, env.image.height);\n\n if (scale_factor > 1) scale_factor = 1;\n\n env.transform_width = Math.max(Math.round(env.image.width * scale_factor), 1);\n env.transform_height = Math.max(Math.round(env.image.height * scale_factor), 1);\n\n // Info for user plugins, to check if scaling applied\n env.scale_factor = scale_factor;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._transform = function (env) {\n env.out_canvas = this.pica.options.createCanvas(env.transform_width, env.transform_height);\n\n // Dim env temporary vars to prohibit use and avoid confusion when orientation\n // changed. You should take real size from canvas.\n env.transform_width = null;\n env.transform_height = null;\n\n // By default use alpha for png only\n var pica_opts = { alpha: env.blob.type === 'image/png' };\n\n // Extract pica options if been passed\n this.utils.assign(pica_opts, this.utils.pick_pica_resize_options(env.opts));\n\n return this.pica\n .resize(env.image, env.out_canvas, pica_opts)\n .then(function () { return env; });\n};\n\n\nImageBlobReduce.prototype._cleanup = function (env) {\n env.image.src = '';\n env.image = null;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n if (URL.revokeObjectURL) URL.revokeObjectURL(env.image_url);\n\n env.image_url = null;\n\n return Promise.resolve(env);\n};\n\n\nImageBlobReduce.prototype._create_blob = function (env) {\n return this.pica.toBlob(env.out_canvas, env.blob.type)\n .then(function (blob) {\n env.out_blob = blob;\n return env;\n });\n};\n\n\nImageBlobReduce.prototype._getUint8Array = function (blob) {\n if (blob.arrayBuffer) {\n return blob.arrayBuffer().then(function (buf) {\n return new Uint8Array(buf);\n });\n }\n\n return new Promise(function (resolve, reject) {\n var fr = new FileReader();\n\n fr.readAsArrayBuffer(blob);\n\n fr.onload = function () { resolve(new Uint8Array(fr.result)); };\n fr.onerror = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob'));\n fr.abort();\n };\n fr.onabort = function () {\n reject(new Error('ImageBlobReduce: failed to load data from input blob (aborted)'));\n };\n });\n};\n\n\nImageBlobReduce.pica = pica;\n\nvar imageBlobReduce = ImageBlobReduce;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (imageBlobReduce);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ltYWdlLWJsb2ItcmVkdWNlL2Rpc3QvaW1hZ2UtYmxvYi1yZWR1Y2UuZXNtLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isc0JBQXNCO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGNBQWMscUJBQXFCLGFBQWEsbUJBQW1CLGtCQUFrQixnQkFBZ0IsVUFBVSxVQUFVLDBEQUEwRCx3QkFBd0Isb0JBQW9CLDhDQUE4QyxrQ0FBa0MsWUFBWSxZQUFZLG1DQUFtQyxpQkFBaUIsZUFBZSx1QkFBdUIsb0JBQW9CLGtFQUFrRSxXQUFXLFlBQVksU0FBUyxTQUFTLEtBQUs7O0FBRXJpQjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLENBQUMsRUFBRSxtRUFBbUU7QUFDdEU7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCOztBQUV0QixpQkFBaUIsYUFBYTtBQUM5QixtQkFBbUI7O0FBRW5CLG9CQUFvQixlQUFlO0FBQ25DO0FBQ0E7QUFDQTtBQUNB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QTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRztBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLDJFQUEyRTtBQUMzRTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsZ0RBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEtBQUs7QUFDTDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUEscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZ0RBQWdEOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFDQUFxQztBQUNyQzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQ7O0FBRW5EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQSxnREFBZ0Q7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsR0FBRztBQUNILEdBQUc7QUFDSDs7O0FBR0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsU0FBUztBQUM3QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBOztBQUVBOztBQUVBLENBQUMsRUFBRSw0SUFBNEksRUFBRSxHQUFHO0FBQ3BKLENBQUM7QUFDRCxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLE9BQU87QUFDcEM7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQSxpRkFBaUY7O0FBRWpGO0FBQ0Esa0NBQWtDO0FBQ2xDOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1COztBQUVuQjtBQUNBLG1CQUFtQjs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTs7QUFFQSxrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvQkFBb0IsV0FBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxxRkFBcUY7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLDREQUE0RDtBQUNqRjtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsbUJBQW1CO0FBQ3ZDO0FBQ0EsTUFBTTtBQUNOO0FBQ0Esc0JBQXNCLFNBQVM7QUFDL0I7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOLHdCQUF3Qjs7QUFFeEI7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEscUNBQXFDO0FBQ3JDOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQSw0QkFBNEIsZUFBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0E7QUFDQSw0QkFBNEIsZUFBZTtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHlCQUF5QjtBQUNyRDs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMsR0FBRztBQUNIOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixhQUFhO0FBQ3JDOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7O0FBRUE7O0FBRUEsaUVBQWUsZUFBZSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbWFnZS1ibG9iLXJlZHVjZS9kaXN0L2ltYWdlLWJsb2ItcmVkdWNlLmVzbS5tanM/NzI2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qISBpbWFnZS1ibG9iLXJlZHVjZSAzLjAuMSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2ltYWdlLWJsb2ItcmVkdWNlIEBsaWNlbnNlIE1JVCAqL1xudmFyIGFzc2lnbiQxID0gZnVuY3Rpb24gYXNzaWduKHRvKSB7XG4gIHZhciBmcm9tO1xuXG4gIGZvciAodmFyIHMgPSAxOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKSB7XG4gICAgZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkgdG9ba2V5XSA9IGZyb21ba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG87XG59O1xuXG5cbmZ1bmN0aW9uIHBpY2soZnJvbSwgcHJvcHMpIHtcbiAgdmFyIHRvID0ge307XG5cbiAgcHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB0b1trZXldID0gZnJvbVtrZXldO1xuICB9KTtcblxuICByZXR1cm4gdG87XG59XG5cblxuZnVuY3Rpb24gcGlja19waWNhX3Jlc2l6ZV9vcHRpb25zKGZyb20pIHtcbiAgcmV0dXJuIHBpY2soZnJvbSwgW1xuICAgICdhbHBoYScsXG4gICAgJ3Vuc2hhcnBBbW91bnQnLFxuICAgICd1bnNoYXJwUmFkaXVzJyxcbiAgICAndW5zaGFycFRocmVzaG9sZCcsXG4gICAgJ2NhbmNlbFRva2VuJ1xuICBdKTtcbn1cblxuXG52YXIgcGlja18xID0gcGljaztcbnZhciBwaWNrX3BpY2FfcmVzaXplX29wdGlvbnNfMSA9IHBpY2tfcGljYV9yZXNpemVfb3B0aW9ucztcblxudmFyIHV0aWxzID0ge1xuXHRhc3NpZ246IGFzc2lnbiQxLFxuXHRwaWNrOiBwaWNrXzEsXG5cdHBpY2tfcGljYV9yZXNpemVfb3B0aW9uczogcGlja19waWNhX3Jlc2l6ZV9vcHRpb25zXzFcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZuKSB7XG4gIHZhciBtb2R1bGUgPSB7IGV4cG9ydHM6IHt9IH07XG5cdHJldHVybiBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7XG59XG5cbmZ1bmN0aW9uIGNvbW1vbmpzUmVxdWlyZSAodGFyZ2V0KSB7XG5cdHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGR5bmFtaWNhbGx5IHJlcXVpcmUgXCInICsgdGFyZ2V0ICsgJ1wiLiBQbGVhc2UgY29uZmlndXJlIHRoZSBkeW5hbWljUmVxdWlyZVRhcmdldHMgb3B0aW9uIG9mIEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIGFwcHJvcHJpYXRlbHkgZm9yIHRoaXMgcmVxdWlyZSBjYWxsIHRvIGJlaGF2ZSBwcm9wZXJseS4nKTtcbn1cblxuLyohXG5cbnBpY2Fcbmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYVxuXG4qL1xuXG52YXIgcGljYSA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbihmdW5jdGlvbihmKXt7bW9kdWxlLmV4cG9ydHM9ZigpO319KShmdW5jdGlvbigpe3JldHVybiAoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjb21tb25qc1JlcXVpcmUmJmNvbW1vbmpzUmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KTt9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgY29tbW9uanNSZXF1aXJlJiZjb21tb25qc1JlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpKHsxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxudmFyIGluaGVyaXRzID0gX2RlcmVxXygnaW5oZXJpdHMnKTtcblxudmFyIE11bHRpbWF0aCA9IF9kZXJlcV8oJ211bHRpbWF0aCcpO1xuXG52YXIgbW1fdW5zaGFycF9tYXNrID0gX2RlcmVxXygnLi9tbV91bnNoYXJwX21hc2snKTtcblxudmFyIG1tX3Jlc2l6ZSA9IF9kZXJlcV8oJy4vbW1fcmVzaXplJyk7XG5cbmZ1bmN0aW9uIE1hdGhMaWIocmVxdWVzdGVkX2ZlYXR1cmVzKSB7XG4gIHZhciBfX3JlcXVlc3RlZF9mZWF0dXJlcyA9IHJlcXVlc3RlZF9mZWF0dXJlcyB8fCBbXTtcblxuICB2YXIgZmVhdHVyZXMgPSB7XG4gICAganM6IF9fcmVxdWVzdGVkX2ZlYXR1cmVzLmluZGV4T2YoJ2pzJykgPj0gMCxcbiAgICB3YXNtOiBfX3JlcXVlc3RlZF9mZWF0dXJlcy5pbmRleE9mKCd3YXNtJykgPj0gMFxuICB9O1xuICBNdWx0aW1hdGguY2FsbCh0aGlzLCBmZWF0dXJlcyk7XG4gIHRoaXMuZmVhdHVyZXMgPSB7XG4gICAganM6IGZlYXR1cmVzLmpzLFxuICAgIHdhc206IGZlYXR1cmVzLndhc20gJiYgdGhpcy5oYXNfd2FzbSgpXG4gIH07XG4gIHRoaXMudXNlKG1tX3Vuc2hhcnBfbWFzayk7XG4gIHRoaXMudXNlKG1tX3Jlc2l6ZSk7XG59XG5cbmluaGVyaXRzKE1hdGhMaWIsIE11bHRpbWF0aCk7XG5cbk1hdGhMaWIucHJvdG90eXBlLnJlc2l6ZUFuZFVuc2hhcnAgPSBmdW5jdGlvbiByZXNpemVBbmRVbnNoYXJwKG9wdGlvbnMsIGNhY2hlKSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLnJlc2l6ZShvcHRpb25zLCBjYWNoZSk7XG5cbiAgaWYgKG9wdGlvbnMudW5zaGFycEFtb3VudCkge1xuICAgIHRoaXMudW5zaGFycF9tYXNrKHJlc3VsdCwgb3B0aW9ucy50b1dpZHRoLCBvcHRpb25zLnRvSGVpZ2h0LCBvcHRpb25zLnVuc2hhcnBBbW91bnQsIG9wdGlvbnMudW5zaGFycFJhZGl1cywgb3B0aW9ucy51bnNoYXJwVGhyZXNob2xkKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGhMaWI7XG5cbn0se1wiLi9tbV9yZXNpemVcIjo0LFwiLi9tbV91bnNoYXJwX21hc2tcIjo5LFwiaW5oZXJpdHNcIjoxOSxcIm11bHRpbWF0aFwiOjIwfV0sMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vL3ZhciBGSVhFRF9GUkFDX0JJVFMgPSAxNDtcblxuZnVuY3Rpb24gY2xhbXBUbzgoaSkge1xuICByZXR1cm4gaSA8IDAgPyAwIDogaSA+IDI1NSA/IDI1NSA6IGk7XG59IC8vIENvbnZvbHZlIGltYWdlIGluIGhvcml6b250YWwgZGlyZWN0aW9ucyBhbmQgdHJhbnNwb3NlIG91dHB1dC4gSW4gdGhlb3J5LFxuLy8gdHJhbnNwb3NlIGFsbG93OlxuLy9cbi8vIC0gdXNlIHRoZSBzYW1lIGNvbnZvbHZlciBmb3IgYm90aCBwYXNzZXMgKHRoaXMgZmFpbHMgZHVlIGRpZmZlcmVudFxuLy8gICB0eXBlcyBvZiBpbnB1dCBhcnJheSBhbmQgdGVtcG9yYXJ5IGJ1ZmZlcilcbi8vIC0gbWFraW5nIHZlcnRpY2FsIHBhc3MgYnkgaG9yaXNvbmx0YWwgbGluZXMgaW5wcm92ZSBDUFUgY2FjaGUgdXNlLlxuLy9cbi8vIEJ1dCBpbiByZWFsIGxpZmUgdGhpcyBkb2Vzbid0IHdvcmsgOilcbi8vXG5cblxuZnVuY3Rpb24gY29udm9sdmVIb3Jpem9udGFsbHkoc3JjLCBkZXN0LCBzcmNXLCBzcmNILCBkZXN0VywgZmlsdGVycykge1xuICB2YXIgciwgZywgYiwgYTtcbiAgdmFyIGZpbHRlclB0ciwgZmlsdGVyU2hpZnQsIGZpbHRlclNpemU7XG4gIHZhciBzcmNQdHIsIHNyY1ksIGRlc3RYLCBmaWx0ZXJWYWw7XG4gIHZhciBzcmNPZmZzZXQgPSAwLFxuICAgICAgZGVzdE9mZnNldCA9IDA7IC8vIEZvciBlYWNoIHJvd1xuXG4gIGZvciAoc3JjWSA9IDA7IHNyY1kgPCBzcmNIOyBzcmNZKyspIHtcbiAgICBmaWx0ZXJQdHIgPSAwOyAvLyBBcHBseSBwcmVjb21wdXRlZCBmaWx0ZXJzIHRvIGVhY2ggZGVzdGluYXRpb24gcm93IHBvaW50XG5cbiAgICBmb3IgKGRlc3RYID0gMDsgZGVzdFggPCBkZXN0VzsgZGVzdFgrKykge1xuICAgICAgLy8gR2V0IHRoZSBmaWx0ZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBjdXJyZW50IG91dHB1dCBwaXhlbC5cbiAgICAgIGZpbHRlclNoaWZ0ID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107XG4gICAgICBmaWx0ZXJTaXplID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107XG4gICAgICBzcmNQdHIgPSBzcmNPZmZzZXQgKyBmaWx0ZXJTaGlmdCAqIDQgfCAwO1xuICAgICAgciA9IGcgPSBiID0gYSA9IDA7IC8vIEFwcGx5IHRoZSBmaWx0ZXIgdG8gdGhlIHJvdyB0byBnZXQgdGhlIGRlc3RpbmF0aW9uIHBpeGVsIHIsIGcsIGIsIGFcblxuICAgICAgZm9yICg7IGZpbHRlclNpemUgPiAwOyBmaWx0ZXJTaXplLS0pIHtcbiAgICAgICAgZmlsdGVyVmFsID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107IC8vIFVzZSByZXZlcnNlIG9yZGVyIHRvIHdvcmthcm91bmQgZGVvcHRzIGluIG9sZCB2OCAobm9kZSB2LjEwKVxuICAgICAgICAvLyBCaWcgdGhhbmtzIHRvIEBtcmFsZXBoIChWeWFjaGVzbGF2IEVnb3JvdikgZm9yIHRoZSB0aXAuXG5cbiAgICAgICAgYSA9IGEgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyICsgM10gfCAwO1xuICAgICAgICBiID0gYiArIGZpbHRlclZhbCAqIHNyY1tzcmNQdHIgKyAyXSB8IDA7XG4gICAgICAgIGcgPSBnICsgZmlsdGVyVmFsICogc3JjW3NyY1B0ciArIDFdIHwgMDtcbiAgICAgICAgciA9IHIgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyXSB8IDA7XG4gICAgICAgIHNyY1B0ciA9IHNyY1B0ciArIDQgfCAwO1xuICAgICAgfSAvLyBCcmluZyB0aGlzIHZhbHVlIGJhY2sgaW4gcmFuZ2UuIEFsbCBvZiB0aGUgZmlsdGVyIHNjYWxpbmcgZmFjdG9yc1xuICAgICAgLy8gYXJlIGluIGZpeGVkIHBvaW50IHdpdGggRklYRURfRlJBQ19CSVRTIGJpdHMgb2YgZnJhY3Rpb25hbCBwYXJ0LlxuICAgICAgLy9cbiAgICAgIC8vICghKSBBZGQgMS8yIG9mIHZhbHVlIGJlZm9yZSBjbGFtcGluZyB0byBnZXQgcHJvcGVyIHJvdW5kaW5nLiBJbiBvdGhlclxuICAgICAgLy8gY2FzZSBicmlnaHRuZXNzIGxvc3Mgd2lsbCBiZSBub3RpY2VhYmxlIGlmIHlvdSByZXNpemUgaW1hZ2Ugd2l0aCB3aGl0ZVxuICAgICAgLy8gYm9yZGVyIGFuZCBwbGFjZSBpdCBvbiB3aGl0ZSBiYWNrZ3JvdW5kLlxuICAgICAgLy9cblxuXG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAzXSA9IGNsYW1wVG84KGEgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAyXSA9IGNsYW1wVG84KGIgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAxXSA9IGNsYW1wVG84KGcgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXRdID0gY2xhbXBUbzgociArICgxIDw8IDEzKSA+PiAxNFxuICAgICAgLypGSVhFRF9GUkFDX0JJVFMqL1xuICAgICAgKTtcbiAgICAgIGRlc3RPZmZzZXQgPSBkZXN0T2Zmc2V0ICsgc3JjSCAqIDQgfCAwO1xuICAgIH1cblxuICAgIGRlc3RPZmZzZXQgPSAoc3JjWSArIDEpICogNCB8IDA7XG4gICAgc3JjT2Zmc2V0ID0gKHNyY1kgKyAxKSAqIHNyY1cgKiA0IHwgMDtcbiAgfVxufSAvLyBUZWNobmljYWxseSwgY29udm9sdmVycyBhcmUgdGhlIHNhbWUuIEJ1dCBpbnB1dCBhcnJheSBhbmQgdGVtcG9yYXJ5XG4vLyBidWZmZXIgY2FuIGJlIG9mIGRpZmZlcmVudCB0eXBlIChlc3BlY2lhbGx5LCBpbiBvbGQgYnJvd3NlcnMpLiBTbyxcbi8vIGtlZXAgY29kZSBpbiBzZXBhcmF0ZSBmdW5jdGlvbnMgdG8gYXZvaWQgZGVvcHRpbWl6YXRpb25zICYgc3BlZWQgbG9zcy5cblxuXG5mdW5jdGlvbiBjb252b2x2ZVZlcnRpY2FsbHkoc3JjLCBkZXN0LCBzcmNXLCBzcmNILCBkZXN0VywgZmlsdGVycykge1xuICB2YXIgciwgZywgYiwgYTtcbiAgdmFyIGZpbHRlclB0ciwgZmlsdGVyU2hpZnQsIGZpbHRlclNpemU7XG4gIHZhciBzcmNQdHIsIHNyY1ksIGRlc3RYLCBmaWx0ZXJWYWw7XG4gIHZhciBzcmNPZmZzZXQgPSAwLFxuICAgICAgZGVzdE9mZnNldCA9IDA7IC8vIEZvciBlYWNoIHJvd1xuXG4gIGZvciAoc3JjWSA9IDA7IHNyY1kgPCBzcmNIOyBzcmNZKyspIHtcbiAgICBmaWx0ZXJQdHIgPSAwOyAvLyBBcHBseSBwcmVjb21wdXRlZCBmaWx0ZXJzIHRvIGVhY2ggZGVzdGluYXRpb24gcm93IHBvaW50XG5cbiAgICBmb3IgKGRlc3RYID0gMDsgZGVzdFggPCBkZXN0VzsgZGVzdFgrKykge1xuICAgICAgLy8gR2V0IHRoZSBmaWx0ZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBjdXJyZW50IG91dHB1dCBwaXhlbC5cbiAgICAgIGZpbHRlclNoaWZ0ID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107XG4gICAgICBmaWx0ZXJTaXplID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107XG4gICAgICBzcmNQdHIgPSBzcmNPZmZzZXQgKyBmaWx0ZXJTaGlmdCAqIDQgfCAwO1xuICAgICAgciA9IGcgPSBiID0gYSA9IDA7IC8vIEFwcGx5IHRoZSBmaWx0ZXIgdG8gdGhlIHJvdyB0byBnZXQgdGhlIGRlc3RpbmF0aW9uIHBpeGVsIHIsIGcsIGIsIGFcblxuICAgICAgZm9yICg7IGZpbHRlclNpemUgPiAwOyBmaWx0ZXJTaXplLS0pIHtcbiAgICAgICAgZmlsdGVyVmFsID0gZmlsdGVyc1tmaWx0ZXJQdHIrK107IC8vIFVzZSByZXZlcnNlIG9yZGVyIHRvIHdvcmthcm91bmQgZGVvcHRzIGluIG9sZCB2OCAobm9kZSB2LjEwKVxuICAgICAgICAvLyBCaWcgdGhhbmtzIHRvIEBtcmFsZXBoIChWeWFjaGVzbGF2IEVnb3JvdikgZm9yIHRoZSB0aXAuXG5cbiAgICAgICAgYSA9IGEgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyICsgM10gfCAwO1xuICAgICAgICBiID0gYiArIGZpbHRlclZhbCAqIHNyY1tzcmNQdHIgKyAyXSB8IDA7XG4gICAgICAgIGcgPSBnICsgZmlsdGVyVmFsICogc3JjW3NyY1B0ciArIDFdIHwgMDtcbiAgICAgICAgciA9IHIgKyBmaWx0ZXJWYWwgKiBzcmNbc3JjUHRyXSB8IDA7XG4gICAgICAgIHNyY1B0ciA9IHNyY1B0ciArIDQgfCAwO1xuICAgICAgfSAvLyBCcmluZyB0aGlzIHZhbHVlIGJhY2sgaW4gcmFuZ2UuIEFsbCBvZiB0aGUgZmlsdGVyIHNjYWxpbmcgZmFjdG9yc1xuICAgICAgLy8gYXJlIGluIGZpeGVkIHBvaW50IHdpdGggRklYRURfRlJBQ19CSVRTIGJpdHMgb2YgZnJhY3Rpb25hbCBwYXJ0LlxuICAgICAgLy9cbiAgICAgIC8vICghKSBBZGQgMS8yIG9mIHZhbHVlIGJlZm9yZSBjbGFtcGluZyB0byBnZXQgcHJvcGVyIHJvdW5kaW5nLiBJbiBvdGhlclxuICAgICAgLy8gY2FzZSBicmlnaHRuZXNzIGxvc3Mgd2lsbCBiZSBub3RpY2VhYmxlIGlmIHlvdSByZXNpemUgaW1hZ2Ugd2l0aCB3aGl0ZVxuICAgICAgLy8gYm9yZGVyIGFuZCBwbGFjZSBpdCBvbiB3aGl0ZSBiYWNrZ3JvdW5kLlxuICAgICAgLy9cblxuXG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAzXSA9IGNsYW1wVG84KGEgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAyXSA9IGNsYW1wVG84KGIgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXQgKyAxXSA9IGNsYW1wVG84KGcgKyAoMSA8PCAxMykgPj4gMTRcbiAgICAgIC8qRklYRURfRlJBQ19CSVRTKi9cbiAgICAgICk7XG4gICAgICBkZXN0W2Rlc3RPZmZzZXRdID0gY2xhbXBUbzgociArICgxIDw8IDEzKSA+PiAxNFxuICAgICAgLypGSVhFRF9GUkFDX0JJVFMqL1xuICAgICAgKTtcbiAgICAgIGRlc3RPZmZzZXQgPSBkZXN0T2Zmc2V0ICsgc3JjSCAqIDQgfCAwO1xuICAgIH1cblxuICAgIGRlc3RPZmZzZXQgPSAoc3JjWSArIDEpICogNCB8IDA7XG4gICAgc3JjT2Zmc2V0ID0gKHNyY1kgKyAxKSAqIHNyY1cgKiA0IHwgMDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29udm9sdmVIb3Jpem9udGFsbHk6IGNvbnZvbHZlSG9yaXpvbnRhbGx5LFxuICBjb252b2x2ZVZlcnRpY2FsbHk6IGNvbnZvbHZlVmVydGljYWxseVxufTtcblxufSx7fV0sMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cbm1vZHVsZS5leHBvcnRzID0gJ0FHRnpiUUVBQUFBQURBWmtlV3hwYm1zQUFBQUFBQUVYQTJBQUFHQUdmMzkvZjM5L0FHQUhmMzkvZjM5L2Z3QUNEd0VEWlc1MkJtMWxiVzl5ZVFJQUFBTUVBd0FCQWdZR0FYOEFRUUFMQjFjRkVWOWZkMkZ6YlY5allXeHNYMk4wYjNKekFBQUlZMjl1ZG05c2RtVUFBUXBqYjI1MmIyeDJaVWhXQUFJTVgxOWtjMjlmYUdGdVpHeGxBd0FZWDE5M1lYTnRYMkZ3Y0d4NVgyUmhkR0ZmY21Wc2IyTnpBQUFLN0FNREF3QUJDOFlEQVE5L0FrQWdBMFVOQUNBRVJRMEFBMEFnRENFTlFRQWhFMEVBSVFjRFFDQUhRUUpxSVFZQ2Z5QUhRUUYwSUFWcUlnY3VBUUlpRkVVRVFFR0F3QUFoQ0VHQXdBQWhDVUdBd0FBaENrR0F3QUFoQ3lBR0RBRUxJQklnQnk0QkFHb2hDRUVBSVFzZ0ZDRUhRUUFoRGlBR0lRbEJBQ0VQUVFBaEVBTkFJQVVnQ1VFQmRHb3VBUUFpRVNBQUlBaEJBblJxS0FJQUlncEJHSFpzSUJCcUlSQWdDa0gvQVhFZ0VXd2dDMm9oQ3lBS1FSQjJRZjhCY1NBUmJDQVBhaUVQSUFwQkNIWkIvd0Z4SUJGc0lBNXFJUTRnQ0VFQmFpRUlJQWxCQVdvaENTQUhRUUZySWdjTkFBc2dDMEdBUUdzaENDQU9RWUJBYXlFSklBOUJnRUJySVFvZ0VFR0FRR3NoQ3lBR0lCUnFDeUVISUFFZ0RVRUNkR29nQ1VFT2RTSUdRZjhCSUFaQi93RklHeUlHUVFBZ0JrRUFTaHRCQ0hSQmdQNERjU0FLUVE1MUlnWkIvd0VnQmtIL0FVZ2JJZ1pCQUNBR1FRQktHMEVRZEVHQWdQd0hjU0FMUVE1MUlnWkIvd0VnQmtIL0FVZ2JJZ1pCQUNBR1FRQktHMEVZZEhKeUlBaEJEblVpQmtIL0FTQUdRZjhCU0JzaUJrRUFJQVpCQUVvYmNqWUNBQ0FESUExcUlRMGdFMEVCYWlJVElBUkhEUUFMSUF4QkFXb2lEQ0FDYkNFU0lBTWdERWNOQUFzTEN4NEFRUUFnQWlBRElBUWdCU0FBRUFFZ0FrRUFJQVFnQlNBR0lBRVFBUXM9JztcblxufSx7fV0sNDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBuYW1lOiAncmVzaXplJyxcbiAgZm46IF9kZXJlcV8oJy4vcmVzaXplJyksXG4gIHdhc21fZm46IF9kZXJlcV8oJy4vcmVzaXplX3dhc20nKSxcbiAgd2FzbV9zcmM6IF9kZXJlcV8oJy4vY29udm9sdmVfd2FzbV9iYXNlNjQnKVxufTtcblxufSx7XCIuL2NvbnZvbHZlX3dhc21fYmFzZTY0XCI6MyxcIi4vcmVzaXplXCI6NSxcIi4vcmVzaXplX3dhc21cIjo4fV0sNTpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cbnZhciBjcmVhdGVGaWx0ZXJzID0gX2RlcmVxXygnLi9yZXNpemVfZmlsdGVyX2dlbicpO1xuXG52YXIgY29udm9sdmVIb3Jpem9udGFsbHkgPSBfZGVyZXFfKCcuL2NvbnZvbHZlJykuY29udm9sdmVIb3Jpem9udGFsbHk7XG5cbnZhciBjb252b2x2ZVZlcnRpY2FsbHkgPSBfZGVyZXFfKCcuL2NvbnZvbHZlJykuY29udm9sdmVWZXJ0aWNhbGx5O1xuXG5mdW5jdGlvbiByZXNldEFscGhhKGRzdCwgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgcHRyID0gMyxcbiAgICAgIGxlbiA9IHdpZHRoICogaGVpZ2h0ICogNCB8IDA7XG5cbiAgd2hpbGUgKHB0ciA8IGxlbikge1xuICAgIGRzdFtwdHJdID0gMHhGRjtcbiAgICBwdHIgPSBwdHIgKyA0IHwgMDtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlc2l6ZShvcHRpb25zKSB7XG4gIHZhciBzcmMgPSBvcHRpb25zLnNyYztcbiAgdmFyIHNyY1cgPSBvcHRpb25zLndpZHRoO1xuICB2YXIgc3JjSCA9IG9wdGlvbnMuaGVpZ2h0O1xuICB2YXIgZGVzdFcgPSBvcHRpb25zLnRvV2lkdGg7XG4gIHZhciBkZXN0SCA9IG9wdGlvbnMudG9IZWlnaHQ7XG4gIHZhciBzY2FsZVggPSBvcHRpb25zLnNjYWxlWCB8fCBvcHRpb25zLnRvV2lkdGggLyBvcHRpb25zLndpZHRoO1xuICB2YXIgc2NhbGVZID0gb3B0aW9ucy5zY2FsZVkgfHwgb3B0aW9ucy50b0hlaWdodCAvIG9wdGlvbnMuaGVpZ2h0O1xuICB2YXIgb2Zmc2V0WCA9IG9wdGlvbnMub2Zmc2V0WCB8fCAwO1xuICB2YXIgb2Zmc2V0WSA9IG9wdGlvbnMub2Zmc2V0WSB8fCAwO1xuICB2YXIgZGVzdCA9IG9wdGlvbnMuZGVzdCB8fCBuZXcgVWludDhBcnJheShkZXN0VyAqIGRlc3RIICogNCk7XG4gIHZhciBxdWFsaXR5ID0gdHlwZW9mIG9wdGlvbnMucXVhbGl0eSA9PT0gJ3VuZGVmaW5lZCcgPyAzIDogb3B0aW9ucy5xdWFsaXR5O1xuICB2YXIgYWxwaGEgPSBvcHRpb25zLmFscGhhIHx8IGZhbHNlO1xuICB2YXIgZmlsdGVyc1ggPSBjcmVhdGVGaWx0ZXJzKHF1YWxpdHksIHNyY1csIGRlc3RXLCBzY2FsZVgsIG9mZnNldFgpLFxuICAgICAgZmlsdGVyc1kgPSBjcmVhdGVGaWx0ZXJzKHF1YWxpdHksIHNyY0gsIGRlc3RILCBzY2FsZVksIG9mZnNldFkpO1xuICB2YXIgdG1wID0gbmV3IFVpbnQ4QXJyYXkoZGVzdFcgKiBzcmNIICogNCk7IC8vIFRvIHVzZSBzaW5nbGUgZnVuY3Rpb24gd2UgbmVlZCBzcmMgJiB0bXAgb2YgdGhlIHNhbWUgdHlwZS5cbiAgLy8gQnV0IHNyYyBjYW4gYmUgQ2FudmFzUGl4ZWxBcnJheSwgYW5kIHRtcCAtIFVpbnQ4QXJyYXkuIFNvLCBrZWVwXG4gIC8vIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHBhc3NlcyBzZXBhcmF0ZWx5IHRvIGF2b2lkIGRlb3B0aW1pemF0aW9uLlxuXG4gIGNvbnZvbHZlSG9yaXpvbnRhbGx5KHNyYywgdG1wLCBzcmNXLCBzcmNILCBkZXN0VywgZmlsdGVyc1gpO1xuICBjb252b2x2ZVZlcnRpY2FsbHkodG1wLCBkZXN0LCBzcmNILCBkZXN0VywgZGVzdEgsIGZpbHRlcnNZKTsgLy8gVGhhdCdzIGZhc3RlciB0aGFuIGRvaW5nIGNoZWNrcyBpbiBjb252b2x2ZXIuXG4gIC8vICEhISBOb3RlLCBjYW52YXMgZGF0YSBpcyBub3QgcHJlbXVsdGlwbGVkLiBXZSBkb24ndCBuZWVkIG90aGVyXG4gIC8vIGFscGhhIGNvcnJlY3Rpb25zLlxuXG4gIGlmICghYWxwaGEpIHJlc2V0QWxwaGEoZGVzdCwgZGVzdFcsIGRlc3RIKTtcbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG59LHtcIi4vY29udm9sdmVcIjoyLFwiLi9yZXNpemVfZmlsdGVyX2dlblwiOjZ9XSw2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxudmFyIEZJTFRFUl9JTkZPID0gX2RlcmVxXygnLi9yZXNpemVfZmlsdGVyX2luZm8nKTsgLy8gUHJlY2lzaW9uIG9mIGZpeGVkIEZQIHZhbHVlc1xuXG5cbnZhciBGSVhFRF9GUkFDX0JJVFMgPSAxNDtcblxuZnVuY3Rpb24gdG9GaXhlZFBvaW50KG51bSkge1xuICByZXR1cm4gTWF0aC5yb3VuZChudW0gKiAoKDEgPDwgRklYRURfRlJBQ19CSVRTKSAtIDEpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXNpemVGaWx0ZXJHZW4ocXVhbGl0eSwgc3JjU2l6ZSwgZGVzdFNpemUsIHNjYWxlLCBvZmZzZXQpIHtcbiAgdmFyIGZpbHRlckZ1bmN0aW9uID0gRklMVEVSX0lORk9bcXVhbGl0eV0uZmlsdGVyO1xuICB2YXIgc2NhbGVJbnZlcnRlZCA9IDEuMCAvIHNjYWxlO1xuICB2YXIgc2NhbGVDbGFtcGVkID0gTWF0aC5taW4oMS4wLCBzY2FsZSk7IC8vIEZvciB1cHNjYWxlXG4gIC8vIEZpbHRlciB3aW5kb3cgKGF2ZXJhZ2luZyBpbnRlcnZhbCksIHNjYWxlZCB0byBzcmMgaW1hZ2VcblxuICB2YXIgc3JjV2luZG93ID0gRklMVEVSX0lORk9bcXVhbGl0eV0ud2luIC8gc2NhbGVDbGFtcGVkO1xuICB2YXIgZGVzdFBpeGVsLCBzcmNQaXhlbCwgc3JjRmlyc3QsIHNyY0xhc3QsIGZpbHRlckVsZW1lbnRTaXplLCBmbG9hdEZpbHRlciwgZnhwRmlsdGVyLCB0b3RhbCwgcHhsLCBpZHgsIGZsb2F0VmFsLCBmaWx0ZXJUb3RhbCwgZmlsdGVyVmFsO1xuICB2YXIgbGVmdE5vdEVtcHR5LCByaWdodE5vdEVtcHR5LCBmaWx0ZXJTaGlmdCwgZmlsdGVyU2l6ZTtcbiAgdmFyIG1heEZpbHRlckVsZW1lbnRTaXplID0gTWF0aC5mbG9vcigoc3JjV2luZG93ICsgMSkgKiAyKTtcbiAgdmFyIHBhY2tlZEZpbHRlciA9IG5ldyBJbnQxNkFycmF5KChtYXhGaWx0ZXJFbGVtZW50U2l6ZSArIDIpICogZGVzdFNpemUpO1xuICB2YXIgcGFja2VkRmlsdGVyUHRyID0gMDtcbiAgdmFyIHNsb3dDb3B5ID0gIXBhY2tlZEZpbHRlci5zdWJhcnJheSB8fCAhcGFja2VkRmlsdGVyLnNldDsgLy8gRm9yIGVhY2ggZGVzdGluYXRpb24gcGl4ZWwgY2FsY3VsYXRlIHNvdXJjZSByYW5nZSBhbmQgYnVpbHQgZmlsdGVyIHZhbHVlc1xuXG4gIGZvciAoZGVzdFBpeGVsID0gMDsgZGVzdFBpeGVsIDwgZGVzdFNpemU7IGRlc3RQaXhlbCsrKSB7XG4gICAgLy8gU2NhbGluZyBzaG91bGQgYmUgZG9uZSByZWxhdGl2ZSB0byBjZW50cmFsIHBpeGVsIHBvaW50XG4gICAgc3JjUGl4ZWwgPSAoZGVzdFBpeGVsICsgMC41KSAqIHNjYWxlSW52ZXJ0ZWQgKyBvZmZzZXQ7XG4gICAgc3JjRmlyc3QgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHNyY1BpeGVsIC0gc3JjV2luZG93KSk7XG4gICAgc3JjTGFzdCA9IE1hdGgubWluKHNyY1NpemUgLSAxLCBNYXRoLmNlaWwoc3JjUGl4ZWwgKyBzcmNXaW5kb3cpKTtcbiAgICBmaWx0ZXJFbGVtZW50U2l6ZSA9IHNyY0xhc3QgLSBzcmNGaXJzdCArIDE7XG4gICAgZmxvYXRGaWx0ZXIgPSBuZXcgRmxvYXQzMkFycmF5KGZpbHRlckVsZW1lbnRTaXplKTtcbiAgICBmeHBGaWx0ZXIgPSBuZXcgSW50MTZBcnJheShmaWx0ZXJFbGVtZW50U2l6ZSk7XG4gICAgdG90YWwgPSAwLjA7IC8vIEZpbGwgZmlsdGVyIHZhbHVlcyBmb3IgY2FsY3VsYXRlZCByYW5nZVxuXG4gICAgZm9yIChweGwgPSBzcmNGaXJzdCwgaWR4ID0gMDsgcHhsIDw9IHNyY0xhc3Q7IHB4bCsrLCBpZHgrKykge1xuICAgICAgZmxvYXRWYWwgPSBmaWx0ZXJGdW5jdGlvbigocHhsICsgMC41IC0gc3JjUGl4ZWwpICogc2NhbGVDbGFtcGVkKTtcbiAgICAgIHRvdGFsICs9IGZsb2F0VmFsO1xuICAgICAgZmxvYXRGaWx0ZXJbaWR4XSA9IGZsb2F0VmFsO1xuICAgIH0gLy8gTm9ybWFsaXplIGZpbHRlciwgY29udmVydCB0byBmaXhlZCBwb2ludCBhbmQgYWNjdW11bGF0ZSBjb252ZXJzaW9uIGVycm9yXG5cblxuICAgIGZpbHRlclRvdGFsID0gMDtcblxuICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgZmxvYXRGaWx0ZXIubGVuZ3RoOyBpZHgrKykge1xuICAgICAgZmlsdGVyVmFsID0gZmxvYXRGaWx0ZXJbaWR4XSAvIHRvdGFsO1xuICAgICAgZmlsdGVyVG90YWwgKz0gZmlsdGVyVmFsO1xuICAgICAgZnhwRmlsdGVyW2lkeF0gPSB0b0ZpeGVkUG9pbnQoZmlsdGVyVmFsKTtcbiAgICB9IC8vIENvbXBlbnNhdGUgbm9ybWFsaXphdGlvbiBlcnJvciwgdG8gbWluaW1pemUgYnJpZ2h0bmVzcyBkcmlmdFxuXG5cbiAgICBmeHBGaWx0ZXJbZGVzdFNpemUgPj4gMV0gKz0gdG9GaXhlZFBvaW50KDEuMCAtIGZpbHRlclRvdGFsKTsgLy9cbiAgICAvLyBOb3cgcGFjayBmaWx0ZXIgdG8gdXNlYWJsZSBmb3JtXG4gICAgLy9cbiAgICAvLyAxLiBUcmltIGhlYWRpbmcgYW5kIHRhaWxpbmcgemVybyB2YWx1ZXMsIGFuZCBjb21wZW5zYXRlIHNoaXRmL2xlbmd0aFxuICAgIC8vIDIuIFB1dCBhbGwgdG8gc2luZ2xlIGFycmF5IGluIHRoaXMgZm9ybWF0OlxuICAgIC8vXG4gICAgLy8gICAgWyBwb3Mgc2hpZnQsIGRhdGEgbGVuZ3RoLCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzLCAuLi4gXVxuICAgIC8vXG5cbiAgICBsZWZ0Tm90RW1wdHkgPSAwO1xuXG4gICAgd2hpbGUgKGxlZnROb3RFbXB0eSA8IGZ4cEZpbHRlci5sZW5ndGggJiYgZnhwRmlsdGVyW2xlZnROb3RFbXB0eV0gPT09IDApIHtcbiAgICAgIGxlZnROb3RFbXB0eSsrO1xuICAgIH1cblxuICAgIGlmIChsZWZ0Tm90RW1wdHkgPCBmeHBGaWx0ZXIubGVuZ3RoKSB7XG4gICAgICByaWdodE5vdEVtcHR5ID0gZnhwRmlsdGVyLmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChyaWdodE5vdEVtcHR5ID4gMCAmJiBmeHBGaWx0ZXJbcmlnaHROb3RFbXB0eV0gPT09IDApIHtcbiAgICAgICAgcmlnaHROb3RFbXB0eS0tO1xuICAgICAgfVxuXG4gICAgICBmaWx0ZXJTaGlmdCA9IHNyY0ZpcnN0ICsgbGVmdE5vdEVtcHR5O1xuICAgICAgZmlsdGVyU2l6ZSA9IHJpZ2h0Tm90RW1wdHkgLSBsZWZ0Tm90RW1wdHkgKyAxO1xuICAgICAgcGFja2VkRmlsdGVyW3BhY2tlZEZpbHRlclB0cisrXSA9IGZpbHRlclNoaWZ0OyAvLyBzaGlmdFxuXG4gICAgICBwYWNrZWRGaWx0ZXJbcGFja2VkRmlsdGVyUHRyKytdID0gZmlsdGVyU2l6ZTsgLy8gc2l6ZVxuXG4gICAgICBpZiAoIXNsb3dDb3B5KSB7XG4gICAgICAgIHBhY2tlZEZpbHRlci5zZXQoZnhwRmlsdGVyLnN1YmFycmF5KGxlZnROb3RFbXB0eSwgcmlnaHROb3RFbXB0eSArIDEpLCBwYWNrZWRGaWx0ZXJQdHIpO1xuICAgICAgICBwYWNrZWRGaWx0ZXJQdHIgKz0gZmlsdGVyU2l6ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIGZvciBvbGQgSUUgPCAxMSwgd2l0aG91dCBzdWJhcnJheS9zZXQgbWV0aG9kc1xuICAgICAgICBmb3IgKGlkeCA9IGxlZnROb3RFbXB0eTsgaWR4IDw9IHJpZ2h0Tm90RW1wdHk7IGlkeCsrKSB7XG4gICAgICAgICAgcGFja2VkRmlsdGVyW3BhY2tlZEZpbHRlclB0cisrXSA9IGZ4cEZpbHRlcltpZHhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHplcm8gZGF0YSwgd3JpdGUgaGVhZGVyIG9ubHlcbiAgICAgIHBhY2tlZEZpbHRlcltwYWNrZWRGaWx0ZXJQdHIrK10gPSAwOyAvLyBzaGlmdFxuXG4gICAgICBwYWNrZWRGaWx0ZXJbcGFja2VkRmlsdGVyUHRyKytdID0gMDsgLy8gc2l6ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYWNrZWRGaWx0ZXI7XG59O1xuXG59LHtcIi4vcmVzaXplX2ZpbHRlcl9pbmZvXCI6N31dLDc6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXG5tb2R1bGUuZXhwb3J0cyA9IFt7XG4gIC8vIE5lYXJlc3QgbmVpYm9yIChCb3gpXG4gIHdpbjogMC41LFxuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcih4KSB7XG4gICAgcmV0dXJuIHggPj0gLTAuNSAmJiB4IDwgMC41ID8gMS4wIDogMC4wO1xuICB9XG59LCB7XG4gIC8vIEhhbW1pbmdcbiAgd2luOiAxLjAsXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKHgpIHtcbiAgICBpZiAoeCA8PSAtMS4wIHx8IHggPj0gMS4wKSB7XG4gICAgICByZXR1cm4gMC4wO1xuICAgIH1cblxuICAgIGlmICh4ID4gLTEuMTkyMDkyOTBFLTA3ICYmIHggPCAxLjE5MjA5MjkwRS0wNykge1xuICAgICAgcmV0dXJuIDEuMDtcbiAgICB9XG5cbiAgICB2YXIgeHBpID0geCAqIE1hdGguUEk7XG4gICAgcmV0dXJuIE1hdGguc2luKHhwaSkgLyB4cGkgKiAoMC41NCArIDAuNDYgKiBNYXRoLmNvcyh4cGkgLyAxLjApKTtcbiAgfVxufSwge1xuICAvLyBMYW5jem9zLCB3aW4gPSAyXG4gIHdpbjogMi4wLFxuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcih4KSB7XG4gICAgaWYgKHggPD0gLTIuMCB8fCB4ID49IDIuMCkge1xuICAgICAgcmV0dXJuIDAuMDtcbiAgICB9XG5cbiAgICBpZiAoeCA+IC0xLjE5MjA5MjkwRS0wNyAmJiB4IDwgMS4xOTIwOTI5MEUtMDcpIHtcbiAgICAgIHJldHVybiAxLjA7XG4gICAgfVxuXG4gICAgdmFyIHhwaSA9IHggKiBNYXRoLlBJO1xuICAgIHJldHVybiBNYXRoLnNpbih4cGkpIC8geHBpICogTWF0aC5zaW4oeHBpIC8gMi4wKSAvICh4cGkgLyAyLjApO1xuICB9XG59LCB7XG4gIC8vIExhbmN6b3MsIHdpbiA9IDNcbiAgd2luOiAzLjAsXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKHgpIHtcbiAgICBpZiAoeCA8PSAtMy4wIHx8IHggPj0gMy4wKSB7XG4gICAgICByZXR1cm4gMC4wO1xuICAgIH1cblxuICAgIGlmICh4ID4gLTEuMTkyMDkyOTBFLTA3ICYmIHggPCAxLjE5MjA5MjkwRS0wNykge1xuICAgICAgcmV0dXJuIDEuMDtcbiAgICB9XG5cbiAgICB2YXIgeHBpID0geCAqIE1hdGguUEk7XG4gICAgcmV0dXJuIE1hdGguc2luKHhwaSkgLyB4cGkgKiBNYXRoLnNpbih4cGkgLyAzLjApIC8gKHhwaSAvIDMuMCk7XG4gIH1cbn1dO1xuXG59LHt9XSw4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxudmFyIGNyZWF0ZUZpbHRlcnMgPSBfZGVyZXFfKCcuL3Jlc2l6ZV9maWx0ZXJfZ2VuJyk7XG5cbmZ1bmN0aW9uIHJlc2V0QWxwaGEoZHN0LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBwdHIgPSAzLFxuICAgICAgbGVuID0gd2lkdGggKiBoZWlnaHQgKiA0IHwgMDtcblxuICB3aGlsZSAocHRyIDwgbGVuKSB7XG4gICAgZHN0W3B0cl0gPSAweEZGO1xuICAgIHB0ciA9IHB0ciArIDQgfCAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzVWludDhBcnJheShzcmMpIHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNyYy5idWZmZXIsIDAsIHNyYy5ieXRlTGVuZ3RoKTtcbn1cblxudmFyIElTX0xFID0gdHJ1ZTsgLy8gc2hvdWxkIG5vdCBjcmFzaCBldmVyeXRoaW5nIG9uIG1vZHVsZSBsb2FkIGluIG9sZCBicm93c2Vyc1xuXG50cnkge1xuICBJU19MRSA9IG5ldyBVaW50MzJBcnJheShuZXcgVWludDhBcnJheShbMSwgMCwgMCwgMF0pLmJ1ZmZlcilbMF0gPT09IDE7XG59IGNhdGNoIChfXykge31cblxuZnVuY3Rpb24gY29weUludDE2YXNMRShzcmMsIHRhcmdldCwgdGFyZ2V0X29mZnNldCkge1xuICBpZiAoSVNfTEUpIHtcbiAgICB0YXJnZXQuc2V0KGFzVWludDhBcnJheShzcmMpLCB0YXJnZXRfb2Zmc2V0KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKHZhciBwdHIgPSB0YXJnZXRfb2Zmc2V0LCBpID0gMDsgaSA8IHNyYy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkYXRhID0gc3JjW2ldO1xuICAgIHRhcmdldFtwdHIrK10gPSBkYXRhICYgMHhGRjtcbiAgICB0YXJnZXRbcHRyKytdID0gZGF0YSA+PiA4ICYgMHhGRjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlc2l6ZV93YXNtKG9wdGlvbnMpIHtcbiAgdmFyIHNyYyA9IG9wdGlvbnMuc3JjO1xuICB2YXIgc3JjVyA9IG9wdGlvbnMud2lkdGg7XG4gIHZhciBzcmNIID0gb3B0aW9ucy5oZWlnaHQ7XG4gIHZhciBkZXN0VyA9IG9wdGlvbnMudG9XaWR0aDtcbiAgdmFyIGRlc3RIID0gb3B0aW9ucy50b0hlaWdodDtcbiAgdmFyIHNjYWxlWCA9IG9wdGlvbnMuc2NhbGVYIHx8IG9wdGlvbnMudG9XaWR0aCAvIG9wdGlvbnMud2lkdGg7XG4gIHZhciBzY2FsZVkgPSBvcHRpb25zLnNjYWxlWSB8fCBvcHRpb25zLnRvSGVpZ2h0IC8gb3B0aW9ucy5oZWlnaHQ7XG4gIHZhciBvZmZzZXRYID0gb3B0aW9ucy5vZmZzZXRYIHx8IDAuMDtcbiAgdmFyIG9mZnNldFkgPSBvcHRpb25zLm9mZnNldFkgfHwgMC4wO1xuICB2YXIgZGVzdCA9IG9wdGlvbnMuZGVzdCB8fCBuZXcgVWludDhBcnJheShkZXN0VyAqIGRlc3RIICogNCk7XG4gIHZhciBxdWFsaXR5ID0gdHlwZW9mIG9wdGlvbnMucXVhbGl0eSA9PT0gJ3VuZGVmaW5lZCcgPyAzIDogb3B0aW9ucy5xdWFsaXR5O1xuICB2YXIgYWxwaGEgPSBvcHRpb25zLmFscGhhIHx8IGZhbHNlO1xuICB2YXIgZmlsdGVyc1ggPSBjcmVhdGVGaWx0ZXJzKHF1YWxpdHksIHNyY1csIGRlc3RXLCBzY2FsZVgsIG9mZnNldFgpLFxuICAgICAgZmlsdGVyc1kgPSBjcmVhdGVGaWx0ZXJzKHF1YWxpdHksIHNyY0gsIGRlc3RILCBzY2FsZVksIG9mZnNldFkpOyAvLyBkZXN0aW5hdGlvbiBpcyAwIHRvby5cblxuICB2YXIgc3JjX29mZnNldCA9IDA7IC8vIGJ1ZmZlciBiZXR3ZWVuIGNvbnZvbHZlIHBhc3Nlc1xuXG4gIHZhciB0bXBfb2Zmc2V0ID0gdGhpcy5fX2FsaWduKHNyY19vZmZzZXQgKyBNYXRoLm1heChzcmMuYnl0ZUxlbmd0aCwgZGVzdC5ieXRlTGVuZ3RoKSk7XG5cbiAgdmFyIGZpbHRlcnNYX29mZnNldCA9IHRoaXMuX19hbGlnbih0bXBfb2Zmc2V0ICsgc3JjSCAqIGRlc3RXICogNCk7XG5cbiAgdmFyIGZpbHRlcnNZX29mZnNldCA9IHRoaXMuX19hbGlnbihmaWx0ZXJzWF9vZmZzZXQgKyBmaWx0ZXJzWC5ieXRlTGVuZ3RoKTtcblxuICB2YXIgYWxsb2NfYnl0ZXMgPSBmaWx0ZXJzWV9vZmZzZXQgKyBmaWx0ZXJzWS5ieXRlTGVuZ3RoO1xuXG4gIHZhciBpbnN0YW5jZSA9IHRoaXMuX19pbnN0YW5jZSgncmVzaXplJywgYWxsb2NfYnl0ZXMpOyAvL1xuICAvLyBGaWxsIG1lbW9yeSBibG9jayB3aXRoIGRhdGEgdG8gcHJvY2Vzc1xuICAvL1xuXG5cbiAgdmFyIG1lbSA9IG5ldyBVaW50OEFycmF5KHRoaXMuX19tZW1vcnkuYnVmZmVyKTtcbiAgdmFyIG1lbTMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX19tZW1vcnkuYnVmZmVyKTsgLy8gMzItYml0IGNvcHkgaXMgbXVjaCBmYXN0ZXIgaW4gY2hyb21lXG5cbiAgdmFyIHNyYzMyID0gbmV3IFVpbnQzMkFycmF5KHNyYy5idWZmZXIpO1xuICBtZW0zMi5zZXQoc3JjMzIpOyAvLyBXZSBzaG91bGQgZ3VhcmFudGVlIExFIGJ5dGVzIG9yZGVyLiBGaWx0ZXJzIGFyZSBub3QgYmlnLCBzb1xuICAvLyBzcGVlZCBkaWZmZXJlbmNlIGlzIG5vdCBzaWduaWZpY2FudCB2cyBkaXJlY3QgLnNldCgpXG5cbiAgY29weUludDE2YXNMRShmaWx0ZXJzWCwgbWVtLCBmaWx0ZXJzWF9vZmZzZXQpO1xuICBjb3B5SW50MTZhc0xFKGZpbHRlcnNZLCBtZW0sIGZpbHRlcnNZX29mZnNldCk7IC8vXG4gIC8vIE5vdyBjYWxsIHdlYmFzc2VtYmx5IG1ldGhvZFxuICAvLyBlbXNkayBkb2VzIG1ldGhvZCBuYW1lcyB3aXRoICdfJ1xuXG4gIHZhciBmbiA9IGluc3RhbmNlLmV4cG9ydHMuY29udm9sdmVIViB8fCBpbnN0YW5jZS5leHBvcnRzLl9jb252b2x2ZUhWO1xuICBmbihmaWx0ZXJzWF9vZmZzZXQsIGZpbHRlcnNZX29mZnNldCwgdG1wX29mZnNldCwgc3JjVywgc3JjSCwgZGVzdFcsIGRlc3RIKTsgLy9cbiAgLy8gQ29weSBkYXRhIGJhY2sgdG8gdHlwZWQgYXJyYXlcbiAgLy9cbiAgLy8gMzItYml0IGNvcHkgaXMgbXVjaCBmYXN0ZXIgaW4gY2hyb21lXG5cbiAgdmFyIGRlc3QzMiA9IG5ldyBVaW50MzJBcnJheShkZXN0LmJ1ZmZlcik7XG4gIGRlc3QzMi5zZXQobmV3IFVpbnQzMkFycmF5KHRoaXMuX19tZW1vcnkuYnVmZmVyLCAwLCBkZXN0SCAqIGRlc3RXKSk7IC8vIFRoYXQncyBmYXN0ZXIgdGhhbiBkb2luZyBjaGVja3MgaW4gY29udm9sdmVyLlxuICAvLyAhISEgTm90ZSwgY2FudmFzIGRhdGEgaXMgbm90IHByZW11bHRpcGxlZC4gV2UgZG9uJ3QgbmVlZCBvdGhlclxuICAvLyBhbHBoYSBjb3JyZWN0aW9ucy5cblxuICBpZiAoIWFscGhhKSByZXNldEFscGhhKGRlc3QsIGRlc3RXLCBkZXN0SCk7XG4gIHJldHVybiBkZXN0O1xufTtcblxufSx7XCIuL3Jlc2l6ZV9maWx0ZXJfZ2VuXCI6Nn1dLDk6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbmFtZTogJ3Vuc2hhcnBfbWFzaycsXG4gIGZuOiBfZGVyZXFfKCcuL3Vuc2hhcnBfbWFzaycpLFxuICB3YXNtX2ZuOiBfZGVyZXFfKCcuL3Vuc2hhcnBfbWFza193YXNtJyksXG4gIHdhc21fc3JjOiBfZGVyZXFfKCcuL3Vuc2hhcnBfbWFza193YXNtX2Jhc2U2NCcpXG59O1xuXG59LHtcIi4vdW5zaGFycF9tYXNrXCI6MTAsXCIuL3Vuc2hhcnBfbWFza193YXNtXCI6MTEsXCIuL3Vuc2hhcnBfbWFza193YXNtX2Jhc2U2NFwiOjEyfV0sMTA6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXG52YXIgZ2x1cl9tb25vMTYgPSBfZGVyZXFfKCdnbHVyL21vbm8xNicpO1xuXG5mdW5jdGlvbiBoc3ZfdjE2KGltZywgd2lkdGgsIGhlaWdodCkge1xuICB2YXIgc2l6ZSA9IHdpZHRoICogaGVpZ2h0O1xuICB2YXIgb3V0ID0gbmV3IFVpbnQxNkFycmF5KHNpemUpO1xuICB2YXIgciwgZywgYiwgbWF4O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgciA9IGltZ1s0ICogaV07XG4gICAgZyA9IGltZ1s0ICogaSArIDFdO1xuICAgIGIgPSBpbWdbNCAqIGkgKyAyXTtcbiAgICBtYXggPSByID49IGcgJiYgciA+PSBiID8gciA6IGcgPj0gYiAmJiBnID49IHIgPyBnIDogYjtcbiAgICBvdXRbaV0gPSBtYXggPDwgODtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdW5zaGFycChpbWcsIHdpZHRoLCBoZWlnaHQsIGFtb3VudCwgcmFkaXVzLCB0aHJlc2hvbGQpIHtcbiAgdmFyIHYxLCB2Miwgdm11bDtcbiAgdmFyIGRpZmYsIGlUaW1lczQ7XG5cbiAgaWYgKGFtb3VudCA9PT0gMCB8fCByYWRpdXMgPCAwLjUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocmFkaXVzID4gMi4wKSB7XG4gICAgcmFkaXVzID0gMi4wO1xuICB9XG5cbiAgdmFyIGJyaWdodG5lc3MgPSBoc3ZfdjE2KGltZywgd2lkdGgsIGhlaWdodCk7XG4gIHZhciBibHVyZWQgPSBuZXcgVWludDE2QXJyYXkoYnJpZ2h0bmVzcyk7IC8vIGNvcHksIGJlY2F1c2UgYmx1ciBtb2RpZnkgc3JjXG5cbiAgZ2x1cl9tb25vMTYoYmx1cmVkLCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpO1xuICB2YXIgYW1vdW50RnAgPSBhbW91bnQgLyAxMDAgKiAweDEwMDAgKyAwLjUgfCAwO1xuICB2YXIgdGhyZXNob2xkRnAgPSB0aHJlc2hvbGQgPDwgODtcbiAgdmFyIHNpemUgPSB3aWR0aCAqIGhlaWdodDtcbiAgLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICB2MSA9IGJyaWdodG5lc3NbaV07XG4gICAgZGlmZiA9IHYxIC0gYmx1cmVkW2ldO1xuXG4gICAgaWYgKE1hdGguYWJzKGRpZmYpID49IHRocmVzaG9sZEZwKSB7XG4gICAgICAvLyBhZGQgdW5zaGFycCBtYXNrIHRvIHRoZSBicmlnaHRuZXNzIGNoYW5uZWxcbiAgICAgIHYyID0gdjEgKyAoYW1vdW50RnAgKiBkaWZmICsgMHg4MDAgPj4gMTIpOyAvLyBCb3RoIHYxIGFuZCB2MiBhcmUgd2l0aGluIFswLjAgLi4gMjU1LjBdICgwMDAwLUZGMDApIHJhbmdlLCBuZXZlciBnb2luZyBpbnRvXG4gICAgICAvLyBbMjU1LjAwMyAuLiAyNTUuOTk2XSAoRkYwMS1GRkZGKS4gVGhpcyBhbGxvd3MgdG8gcm91bmQgdGhpcyB2YWx1ZSBhcyAoeCsuNSl8MFxuICAgICAgLy8gbGF0ZXIgd2l0aG91dCBvdmVyZmxvd2luZy5cblxuICAgICAgdjIgPSB2MiA+IDB4ZmYwMCA/IDB4ZmYwMCA6IHYyO1xuICAgICAgdjIgPSB2MiA8IDB4MDAwMCA/IDB4MDAwMCA6IHYyOyAvLyBBdm9pZCBkaXZpc2lvbiBieSAwLiBWPTAgbWVhbnMgcmdiKDAsMCwwKSwgdW5zaGFycCB3aXRoIHVuc2hhcnBBbW91bnQ+MCBjYW5ub3RcbiAgICAgIC8vIGNoYW5nZSB0aGlzIHZhbHVlIChiZWNhdXNlIGRpZmYgYmV0d2VlbiBjb2xvcnMgZ2V0cyBpbmZsYXRlZCksIHNvIG5vIG5lZWQgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzLlxuXG4gICAgICB2MSA9IHYxICE9PSAwID8gdjEgOiAxOyAvLyBNdWx0aXBseWluZyBWIGluIEhTViBtb2RlbCBieSBhIGNvbnN0YW50IGlzIGVxdWl2YWxlbnQgdG8gbXVsdGlwbHlpbmcgZWFjaCBjb21wb25lbnRcbiAgICAgIC8vIGluIFJHQiBieSB0aGUgc2FtZSBjb25zdGFudCAoc2FtZSBmb3IgSFNMKSwgc2VlIGFsc286XG4gICAgICAvLyBodHRwczovL2JlZXNidXp6LmJpei9jb2RlLzE2LWhzdi1jb2xvci10cmFuc2Zvcm1zXG5cbiAgICAgIHZtdWwgPSAodjIgPDwgMTIpIC8gdjEgfCAwOyAvLyBSZXN1bHQgd2lsbCBiZSBpbiBbMC4uMjU1XSByYW5nZSBiZWNhdXNlOlxuICAgICAgLy8gIC0gYWxsIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgICAvLyAgLSByLGcsYiA8PSAodjEvMjU2KVxuICAgICAgLy8gIC0gcixnLGIsKHYxLzI1NiksKHYyLzI1NikgPD0gMjU1XG4gICAgICAvLyBTbyBoaWdoZXN0IHRoaXMgbnVtYmVyIGNhbiBnZXQgaXMgWCoyNTUvWCswLjU9MjU1LjUgd2hpY2ggaXMgPCAyNTYgYW5kIHJvdW5kcyBkb3duLlxuXG4gICAgICBpVGltZXM0ID0gaSAqIDQ7XG4gICAgICBpbWdbaVRpbWVzNF0gPSBpbWdbaVRpbWVzNF0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIFJcblxuICAgICAgaW1nW2lUaW1lczQgKyAxXSA9IGltZ1tpVGltZXM0ICsgMV0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIEdcblxuICAgICAgaW1nW2lUaW1lczQgKyAyXSA9IGltZ1tpVGltZXM0ICsgMl0gKiB2bXVsICsgMHg4MDAgPj4gMTI7IC8vIEJcbiAgICB9XG4gIH1cbn07XG5cbn0se1wiZ2x1ci9tb25vMTZcIjoxOH1dLDExOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB1bnNoYXJwKGltZywgd2lkdGgsIGhlaWdodCwgYW1vdW50LCByYWRpdXMsIHRocmVzaG9sZCkge1xuICBpZiAoYW1vdW50ID09PSAwIHx8IHJhZGl1cyA8IDAuNSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChyYWRpdXMgPiAyLjApIHtcbiAgICByYWRpdXMgPSAyLjA7XG4gIH1cblxuICB2YXIgcGl4ZWxzID0gd2lkdGggKiBoZWlnaHQ7XG4gIHZhciBpbWdfYnl0ZXNfY250ID0gcGl4ZWxzICogNDtcbiAgdmFyIGhzdl9ieXRlc19jbnQgPSBwaXhlbHMgKiAyO1xuICB2YXIgYmx1cl9ieXRlc19jbnQgPSBwaXhlbHMgKiAyO1xuICB2YXIgYmx1cl9saW5lX2J5dGVfY250ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCkgKiA0OyAvLyBmbG9hdDMyIGFycmF5XG5cbiAgdmFyIGJsdXJfY29lZmZzX2J5dGVfY250ID0gOCAqIDQ7IC8vIGZsb2F0MzIgYXJyYXlcblxuICB2YXIgaW1nX29mZnNldCA9IDA7XG4gIHZhciBoc3Zfb2Zmc2V0ID0gaW1nX2J5dGVzX2NudDtcbiAgdmFyIGJsdXJfb2Zmc2V0ID0gaHN2X29mZnNldCArIGhzdl9ieXRlc19jbnQ7XG4gIHZhciBibHVyX3RtcF9vZmZzZXQgPSBibHVyX29mZnNldCArIGJsdXJfYnl0ZXNfY250O1xuICB2YXIgYmx1cl9saW5lX29mZnNldCA9IGJsdXJfdG1wX29mZnNldCArIGJsdXJfYnl0ZXNfY250O1xuICB2YXIgYmx1cl9jb2VmZnNfb2Zmc2V0ID0gYmx1cl9saW5lX29mZnNldCArIGJsdXJfbGluZV9ieXRlX2NudDtcblxuICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9faW5zdGFuY2UoJ3Vuc2hhcnBfbWFzaycsIGltZ19ieXRlc19jbnQgKyBoc3ZfYnl0ZXNfY250ICsgYmx1cl9ieXRlc19jbnQgKiAyICsgYmx1cl9saW5lX2J5dGVfY250ICsgYmx1cl9jb2VmZnNfYnl0ZV9jbnQsIHtcbiAgICBleHA6IE1hdGguZXhwXG4gIH0pOyAvLyAzMi1iaXQgY29weSBpcyBtdWNoIGZhc3RlciBpbiBjaHJvbWVcblxuXG4gIHZhciBpbWczMiA9IG5ldyBVaW50MzJBcnJheShpbWcuYnVmZmVyKTtcbiAgdmFyIG1lbTMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuX19tZW1vcnkuYnVmZmVyKTtcbiAgbWVtMzIuc2V0KGltZzMyKTsgLy8gSFNMXG5cbiAgdmFyIGZuID0gaW5zdGFuY2UuZXhwb3J0cy5oc3ZfdjE2IHx8IGluc3RhbmNlLmV4cG9ydHMuX2hzdl92MTY7XG4gIGZuKGltZ19vZmZzZXQsIGhzdl9vZmZzZXQsIHdpZHRoLCBoZWlnaHQpOyAvLyBCTFVSXG5cbiAgZm4gPSBpbnN0YW5jZS5leHBvcnRzLmJsdXJNb25vMTYgfHwgaW5zdGFuY2UuZXhwb3J0cy5fYmx1ck1vbm8xNjtcbiAgZm4oaHN2X29mZnNldCwgYmx1cl9vZmZzZXQsIGJsdXJfdG1wX29mZnNldCwgYmx1cl9saW5lX29mZnNldCwgYmx1cl9jb2VmZnNfb2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMpOyAvLyBVTlNIQVJQXG5cbiAgZm4gPSBpbnN0YW5jZS5leHBvcnRzLnVuc2hhcnAgfHwgaW5zdGFuY2UuZXhwb3J0cy5fdW5zaGFycDtcbiAgZm4oaW1nX29mZnNldCwgaW1nX29mZnNldCwgaHN2X29mZnNldCwgYmx1cl9vZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGFtb3VudCwgdGhyZXNob2xkKTsgLy8gMzItYml0IGNvcHkgaXMgbXVjaCBmYXN0ZXIgaW4gY2hyb21lXG5cbiAgaW1nMzIuc2V0KG5ldyBVaW50MzJBcnJheSh0aGlzLl9fbWVtb3J5LmJ1ZmZlciwgMCwgcGl4ZWxzKSk7XG59O1xuXG59LHt9XSwxMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cbm1vZHVsZS5leHBvcnRzID0gJ0FHRnpiUUVBQUFBQURBWmtlV3hwYm1zQUFBQUFBQUUwQjJBQUFHQUVmMzkvZndCZ0JuOS9mMzkvZndCZ0NIOS9mMzkvZjM5L0FHQUlmMzkvZjM5L2YzMEFZQUo5ZndCZ0FYd0JmQUlaQWdObGJuWURaWGh3QUFZRFpXNTJCbTFsYlc5eWVRSUFBQU1IQmdBRkFnUUJBd1lHQVg4QVFRQUxCNG9CQ0JGZlgzZGhjMjFmWTJGc2JGOWpkRzl5Y3dBQkZsOWZZblZwYkdSZloyRjFjM05wWVc1ZlkyOWxabk1BQWc1ZlgyZGhkWE56TVRaZmJHbHVaUUFEQ21Kc2RYSk5iMjV2TVRZQUJBZG9jM1pmZGpFMkFBVUhkVzV6YUdGeWNBQUdERjlmWkhOdlgyaGhibVJzWlFNQUdGOWZkMkZ6YlY5aGNIQnNlVjlrWVhSaFgzSmxiRzlqY3dBQkNzVU1CZ01BQVF2V0FRRUhmQ0FCUk51R3VrT0NHdnMvSUFDN295SUNSQUFBQUFBQUFBREFvaEFBSWdXMmpEZ0NGQ0FCSUFLYUVBQWlBeUFEb0NJR3RqZ0NFQ0FCUkFBQUFBQUFBUEEvSUFPaElnUWdCS0lnQXlBQ0lBS2dva1FBQUFBQUFBRHdQNkFnQmFHaklnUzJPQUlBSUFFZ0JTQUVtcUlpQjdZNEFnd2dBU0FESUFKRUFBQUFBQUFBOEQrZ0lBU2lvaUlJdGpnQ0NDQUJJQU1nQWtRQUFBQUFBQUR3djZBZ0JLS2lJZ0syT0FJRUlBRWdCeUFJb0NBRlJBQUFBQUFBQVBBL0lBYWhvQ0lEbzdZNEFod2dBU0FFSUFLZ0lBT2p0amdDR0F1R0JRTUdmd2w4QW4wZ0F5b0NEQ0VWSUFNcUFnZ2hGaUFES2dJVXV5RVJJQU1xQWhDN0lSQUNRQ0FFUVFGcklnaEJBRWdpQ1FSQUlBSWhCeUFBSVFZTUFRc2dBaUFBTHdFQXVDSVBJQU1xQWhpN29pSU1JQkdpSWcwZ0RDQVFvaUFQSUFNcUFnUzdJaE9pSWhRZ0F5b0NBTHNpRWlBUG9xQ2dvQ0lPdGpnQ0FDQUNRUVJxSVFjZ0FFRUNhaUVHSUFoRkRRQWdDRUVCSUFoQkFVZ2JJZ3BCZjNNaEN3Si9JQVFnQ210QkFYRkZCRUFnRGlFTklBZ01BUXNnQWlBTklBNGdFS0lnRkNBU0lBQXZBUUs0SWcraW9LQ2dJZzIyT0FJRUlBSkJDR29oQnlBQVFRUnFJUVlnRGlFTUlBUkJBbXNMSVFJZ0MwRUFJQVJyUmcwQUEwQWdCeUFNSUJHaUlBMGdFS0lnRHlBVG9pQVNJQVl2QVFDNElnNmlvS0NnSWd5Mk9BSUFJQWNnRFNBUm9pQU1JQkNpSUE0Z0U2SWdFaUFHTHdFQ3VDSVBvcUNnb0NJTnRqZ0NCQ0FIUVFocUlRY2dCa0VFYWlFR0lBSkJBa29oQUNBQ1FRSnJJUUlnQUEwQUN3c0NRQ0FKRFFBZ0FTQUZJQWhzUVFGMGFpSUFBbjhnQmtFQ2F5OEJBQ0lDdUNJTklCVzdJaEtpSUEwZ0Zyc2lFNktnSUEwZ0F5b0NITHVpSWd3Z0VLS2dJQXdnRWFLZ0lnOGdCMEVFYXlJSEtnSUF1NkFpRGtRQUFBQUFBQUR3UVdNZ0RrUUFBQUFBQUFBQUFHWnhCRUFnRHFzTUFRdEJBQXM3QVFBZ0NFVU5BQ0FHUVFScklRWkJBQ0FGYTBFQmRDRUJBMEFDZnlBTklCS2lJQUpCLy84RGNiZ2lEU0FUb3FBZ0R5SU9JQkNpb0NBTUlCR2lvQ0lQSUFkQkJHc2lCeW9DQUx1Z0lneEVBQUFBQUFBQThFRmpJQXhFQUFBQUFBQUFBQUJtY1FSQUlBeXJEQUVMUVFBTElRTWdCaThCQUNFQ0lBQWdBV29pQUNBRE93RUFJQVpCQW1zaEJpQUlRUUZLSVFNZ0RpRU1JQWhCQVdzaENDQUREUUFMQ3d2UkFnSUJmd2Q4QWtBZ0IwTUFBQUFBV3cwQUlBUkUyNGE2UTRJYSt6OGdCME1BQUFBL2w3dWpJZ2xFQUFBQUFBQUFBTUNpRUFBaURMYU1PQUlVSUFRZ0Nab1FBQ0lLSUFxZ0lnMjJPQUlRSUFSRUFBQUFBQUFBOEQ4Z0NxRWlDeUFMb2lBS0lBa2dDYUNpUkFBQUFBQUFBUEEvb0NBTW9hTWlDN1k0QWdBZ0JDQU1JQXVhb2lJT3RqZ0NEQ0FFSUFvZ0NVUUFBQUFBQUFEd1A2QWdDNktpSWcrMk9BSUlJQVFnQ2lBSlJBQUFBQUFBQVBDL29DQUxvcUlpQ2JZNEFnUWdCQ0FPSUErZ0lBeEVBQUFBQUFBQThEOGdEYUdnSWdxanRqZ0NIQ0FFSUFzZ0NhQWdDcU8yT0FJWUlBWUVRQU5BSUFBZ0JTQUliRUVCZEdvZ0FpQUlRUUYwYWlBRElBUWdCU0FHRUFNZ0NFRUJhaUlJSUFaSERRQUxDeUFGUlEwQVFRQWhDQU5BSUFJZ0JpQUliRUVCZEdvZ0FTQUlRUUYwYWlBRElBUWdCaUFGRUFNZ0NFRUJhaUlJSUFWSERRQUxDd3R4QVFOL0lBSWdBMndpQlFSQUEwQWdBU0FBS0FJQUlnUkJFSFpCL3dGeElnSWdBaUFFUVFoMlFmOEJjU0lESUFNZ0JFSC9BWEVpQkVrYklBSWdBMHNiSWdZZ0JpQUVJQUlnQkVzYklBTWdCRXNiUVFoME93RUFJQUZCQW1vaEFTQUFRUVJxSVFBZ0JVRUJheUlGRFFBTEN3dVpBZ0lEZndGOElBUWdCV3doQkFKL0lBYXpRd0FBZ0VXVVF3QUF5RUtWdTBRQUFBQUFBQURnUDZBaUM1bEVBQUFBQUFBQTRFRmpCRUFnQzZvTUFRdEJnSUNBZ0hnTElRVWdCQVJBSUFkQkNIUWhDVUVBSVFZRFFDQUpJQUlnQmtFQmRDSUhhaThCQUNJQklBTWdCMm92QVFCcklnY2dCMEVmZFNJSWFpQUljMDBFUUNBQUlBWkJBblFpQ0dvaUNpQUZJQWRzUVlBUWFrRU1kU0FCYWlJSFFZRCtBeUFIUVlEK0EwZ2JJZ2RCQUNBSFFRQktHMEVNZENBQlFRRWdBUnR1SWdFZ0NpMEFBR3hCZ0JCcVFReDJPZ0FBSUFBZ0NFRUJjbW9pQnlBQklBY3RBQUJzUVlBUWFrRU1kam9BQUNBQUlBaEJBbkpxSWdjZ0FTQUhMUUFBYkVHQUVHcEJESFk2QUFBTElBWkJBV29pQmlBRVJ3MEFDd3NMJztcblxufSx7fV0sMTM6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuXG52YXIgR0NfSU5URVJWQUwgPSAxMDA7XG5cbmZ1bmN0aW9uIFBvb2woY3JlYXRlLCBpZGxlKSB7XG4gIHRoaXMuY3JlYXRlID0gY3JlYXRlO1xuICB0aGlzLmF2YWlsYWJsZSA9IFtdO1xuICB0aGlzLmFjcXVpcmVkID0ge307XG4gIHRoaXMubGFzdElkID0gMTtcbiAgdGhpcy50aW1lb3V0SWQgPSAwO1xuICB0aGlzLmlkbGUgPSBpZGxlIHx8IDIwMDA7XG59XG5cblBvb2wucHJvdG90eXBlLmFjcXVpcmUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHJlc291cmNlO1xuXG4gIGlmICh0aGlzLmF2YWlsYWJsZS5sZW5ndGggIT09IDApIHtcbiAgICByZXNvdXJjZSA9IHRoaXMuYXZhaWxhYmxlLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHJlc291cmNlID0gdGhpcy5jcmVhdGUoKTtcbiAgICByZXNvdXJjZS5pZCA9IHRoaXMubGFzdElkKys7XG5cbiAgICByZXNvdXJjZS5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzLnJlbGVhc2UocmVzb3VyY2UpO1xuICAgIH07XG4gIH1cblxuICB0aGlzLmFjcXVpcmVkW3Jlc291cmNlLmlkXSA9IHJlc291cmNlO1xuICByZXR1cm4gcmVzb3VyY2U7XG59O1xuXG5Qb29sLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIGRlbGV0ZSB0aGlzLmFjcXVpcmVkW3Jlc291cmNlLmlkXTtcbiAgcmVzb3VyY2UubGFzdFVzZWQgPSBEYXRlLm5vdygpO1xuICB0aGlzLmF2YWlsYWJsZS5wdXNoKHJlc291cmNlKTtcblxuICBpZiAodGhpcy50aW1lb3V0SWQgPT09IDApIHtcbiAgICB0aGlzLnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF90aGlzMi5nYygpO1xuICAgIH0sIEdDX0lOVEVSVkFMKTtcbiAgfVxufTtcblxuUG9vbC5wcm90b3R5cGUuZ2MgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gIHZhciBub3cgPSBEYXRlLm5vdygpO1xuICB0aGlzLmF2YWlsYWJsZSA9IHRoaXMuYXZhaWxhYmxlLmZpbHRlcihmdW5jdGlvbiAocmVzb3VyY2UpIHtcbiAgICBpZiAobm93IC0gcmVzb3VyY2UubGFzdFVzZWQgPiBfdGhpczMuaWRsZSkge1xuICAgICAgcmVzb3VyY2UuZGVzdHJveSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcblxuICBpZiAodGhpcy5hdmFpbGFibGUubGVuZ3RoICE9PSAwKSB7XG4gICAgdGhpcy50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfdGhpczMuZ2MoKTtcbiAgICB9LCBHQ19JTlRFUlZBTCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy50aW1lb3V0SWQgPSAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2w7XG5cbn0se31dLDE0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbi8vIG1pbiBzaXplID0gMSBjYW4gY29uc3VtZSBsYXJnZSBhbW91bnQgb2YgbWVtb3J5XG5cbnZhciBNSU5fSU5ORVJfVElMRV9TSVpFID0gMjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVTdGFnZXMoZnJvbVdpZHRoLCBmcm9tSGVpZ2h0LCB0b1dpZHRoLCB0b0hlaWdodCwgc3JjVGlsZVNpemUsIGRlc3RUaWxlQm9yZGVyKSB7XG4gIHZhciBzY2FsZVggPSB0b1dpZHRoIC8gZnJvbVdpZHRoO1xuICB2YXIgc2NhbGVZID0gdG9IZWlnaHQgLyBmcm9tSGVpZ2h0OyAvLyBkZXJpdmVkIGZyb20gY3JlYXRlUmVnaW9ucyBlcXVhdGlvbjpcbiAgLy8gaW5uZXJUaWxlV2lkdGggPSBwaXhlbEZsb29yKHNyY1RpbGVTaXplICogc2NhbGVYKSAtIDIgKiBkZXN0VGlsZUJvcmRlcjtcblxuICB2YXIgbWluU2NhbGUgPSAoMiAqIGRlc3RUaWxlQm9yZGVyICsgTUlOX0lOTkVSX1RJTEVfU0laRSArIDEpIC8gc3JjVGlsZVNpemU7IC8vIHJlZnVzZSB0byBzY2FsZSBpbWFnZSBtdWx0aXBsZSB0aW1lcyBieSBsZXNzIHRoYW4gdHdpY2UgZWFjaCB0aW1lLFxuICAvLyBpdCBjb3VsZCBvbmx5IGhhcHBlbiBiZWNhdXNlIG9mIGludmFsaWQgb3B0aW9uc1xuXG4gIGlmIChtaW5TY2FsZSA+IDAuNSkgcmV0dXJuIFtbdG9XaWR0aCwgdG9IZWlnaHRdXTtcbiAgdmFyIHN0YWdlQ291bnQgPSBNYXRoLmNlaWwoTWF0aC5sb2coTWF0aC5taW4oc2NhbGVYLCBzY2FsZVkpKSAvIE1hdGgubG9nKG1pblNjYWxlKSk7IC8vIG5vIGFkZGl0aW9uYWwgcmVzaXplcyBhcmUgbmVjZXNzYXJ5LFxuICAvLyBzdGFnZUNvdW50IGNhbiBiZSB6ZXJvIG9yIGJlIG5lZ2F0aXZlIHdoZW4gZW5sYXJnaW5nIHRoZSBpbWFnZVxuXG4gIGlmIChzdGFnZUNvdW50IDw9IDEpIHJldHVybiBbW3RvV2lkdGgsIHRvSGVpZ2h0XV07XG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWdlQ291bnQ7IGkrKykge1xuICAgIHZhciB3aWR0aCA9IE1hdGgucm91bmQoTWF0aC5wb3coTWF0aC5wb3coZnJvbVdpZHRoLCBzdGFnZUNvdW50IC0gaSAtIDEpICogTWF0aC5wb3codG9XaWR0aCwgaSArIDEpLCAxIC8gc3RhZ2VDb3VudCkpO1xuICAgIHZhciBoZWlnaHQgPSBNYXRoLnJvdW5kKE1hdGgucG93KE1hdGgucG93KGZyb21IZWlnaHQsIHN0YWdlQ291bnQgLSBpIC0gMSkgKiBNYXRoLnBvdyh0b0hlaWdodCwgaSArIDEpLCAxIC8gc3RhZ2VDb3VudCkpO1xuICAgIHJlc3VsdC5wdXNoKFt3aWR0aCwgaGVpZ2h0XSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxufSx7fV0sMTU6W2Z1bmN0aW9uKF9kZXJlcV8sbW9kdWxlLGV4cG9ydHMpe1xuLypcbiAqIHBpeGVsRmxvb3IgYW5kIHBpeGVsQ2VpbCBhcmUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgTWF0aC5mbG9vciBhbmQgTWF0aC5jZWlsXG4gKiBmdW5jdGlvbnMgd2hpY2ggdGFrZSBpbnRvIGFjY291bnQgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyBlcnJvcnMuXG4gKiBUaG9zZSBlcnJvcnMgY2FuIGNhdXNlIHVuZGVzaXJlZCBpbmNyZW1lbnRzL2RlY3JlbWVudHMgb2Ygc2l6ZXMgYW5kIG9mZnNldHM6XG4gKiBNYXRoLmNlaWwoMzYgLyAoMzYgLyA1MDApKSA9IDUwMVxuICogcGl4ZWxDZWlsKDM2IC8gKDM2IC8gNTAwKSkgPSA1MDBcbiAqL1xuXG52YXIgUElYRUxfRVBTSUxPTiA9IDFlLTU7XG5cbmZ1bmN0aW9uIHBpeGVsRmxvb3IoeCkge1xuICB2YXIgbmVhcmVzdCA9IE1hdGgucm91bmQoeCk7XG5cbiAgaWYgKE1hdGguYWJzKHggLSBuZWFyZXN0KSA8IFBJWEVMX0VQU0lMT04pIHtcbiAgICByZXR1cm4gbmVhcmVzdDtcbiAgfVxuXG4gIHJldHVybiBNYXRoLmZsb29yKHgpO1xufVxuXG5mdW5jdGlvbiBwaXhlbENlaWwoeCkge1xuICB2YXIgbmVhcmVzdCA9IE1hdGgucm91bmQoeCk7XG5cbiAgaWYgKE1hdGguYWJzKHggLSBuZWFyZXN0KSA8IFBJWEVMX0VQU0lMT04pIHtcbiAgICByZXR1cm4gbmVhcmVzdDtcbiAgfVxuXG4gIHJldHVybiBNYXRoLmNlaWwoeCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlUmVnaW9ucyhvcHRpb25zKSB7XG4gIHZhciBzY2FsZVggPSBvcHRpb25zLnRvV2lkdGggLyBvcHRpb25zLndpZHRoO1xuICB2YXIgc2NhbGVZID0gb3B0aW9ucy50b0hlaWdodCAvIG9wdGlvbnMuaGVpZ2h0O1xuICB2YXIgaW5uZXJUaWxlV2lkdGggPSBwaXhlbEZsb29yKG9wdGlvbnMuc3JjVGlsZVNpemUgKiBzY2FsZVgpIC0gMiAqIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXI7XG4gIHZhciBpbm5lclRpbGVIZWlnaHQgPSBwaXhlbEZsb29yKG9wdGlvbnMuc3JjVGlsZVNpemUgKiBzY2FsZVkpIC0gMiAqIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXI7IC8vIHByZXZlbnQgaW5maW5pdGUgbG9vcCwgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG5cbiAgaWYgKGlubmVyVGlsZVdpZHRoIDwgMSB8fCBpbm5lclRpbGVIZWlnaHQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBlcnJvciBpbiBwaWNhOiB0YXJnZXQgdGlsZSB3aWR0aC9oZWlnaHQgaXMgdG9vIHNtYWxsLicpO1xuICB9XG5cbiAgdmFyIHgsIHk7XG4gIHZhciBpbm5lclgsIGlubmVyWSwgdG9UaWxlV2lkdGgsIHRvVGlsZUhlaWdodDtcbiAgdmFyIHRpbGVzID0gW107XG4gIHZhciB0aWxlOyAvLyB3ZSBnbyB0b3AtdG8tZG93biBpbnN0ZWFkIG9mIGxlZnQtdG8tcmlnaHQgdG8gbWFrZSBpbWFnZSBkaXNwbGF5ZWQgZnJvbSB0b3AgdG9cbiAgLy8gZG9lc24gaW4gdGhlIGJyb3dzZXJcblxuICBmb3IgKGlubmVyWSA9IDA7IGlubmVyWSA8IG9wdGlvbnMudG9IZWlnaHQ7IGlubmVyWSArPSBpbm5lclRpbGVIZWlnaHQpIHtcbiAgICBmb3IgKGlubmVyWCA9IDA7IGlubmVyWCA8IG9wdGlvbnMudG9XaWR0aDsgaW5uZXJYICs9IGlubmVyVGlsZVdpZHRoKSB7XG4gICAgICB4ID0gaW5uZXJYIC0gb3B0aW9ucy5kZXN0VGlsZUJvcmRlcjtcblxuICAgICAgaWYgKHggPCAwKSB7XG4gICAgICAgIHggPSAwO1xuICAgICAgfVxuXG4gICAgICB0b1RpbGVXaWR0aCA9IGlubmVyWCArIGlubmVyVGlsZVdpZHRoICsgb3B0aW9ucy5kZXN0VGlsZUJvcmRlciAtIHg7XG5cbiAgICAgIGlmICh4ICsgdG9UaWxlV2lkdGggPj0gb3B0aW9ucy50b1dpZHRoKSB7XG4gICAgICAgIHRvVGlsZVdpZHRoID0gb3B0aW9ucy50b1dpZHRoIC0geDtcbiAgICAgIH1cblxuICAgICAgeSA9IGlubmVyWSAtIG9wdGlvbnMuZGVzdFRpbGVCb3JkZXI7XG5cbiAgICAgIGlmICh5IDwgMCkge1xuICAgICAgICB5ID0gMDtcbiAgICAgIH1cblxuICAgICAgdG9UaWxlSGVpZ2h0ID0gaW5uZXJZICsgaW5uZXJUaWxlSGVpZ2h0ICsgb3B0aW9ucy5kZXN0VGlsZUJvcmRlciAtIHk7XG5cbiAgICAgIGlmICh5ICsgdG9UaWxlSGVpZ2h0ID49IG9wdGlvbnMudG9IZWlnaHQpIHtcbiAgICAgICAgdG9UaWxlSGVpZ2h0ID0gb3B0aW9ucy50b0hlaWdodCAtIHk7XG4gICAgICB9XG5cbiAgICAgIHRpbGUgPSB7XG4gICAgICAgIHRvWDogeCxcbiAgICAgICAgdG9ZOiB5LFxuICAgICAgICB0b1dpZHRoOiB0b1RpbGVXaWR0aCxcbiAgICAgICAgdG9IZWlnaHQ6IHRvVGlsZUhlaWdodCxcbiAgICAgICAgdG9Jbm5lclg6IGlubmVyWCxcbiAgICAgICAgdG9Jbm5lclk6IGlubmVyWSxcbiAgICAgICAgdG9Jbm5lcldpZHRoOiBpbm5lclRpbGVXaWR0aCxcbiAgICAgICAgdG9Jbm5lckhlaWdodDogaW5uZXJUaWxlSGVpZ2h0LFxuICAgICAgICBvZmZzZXRYOiB4IC8gc2NhbGVYIC0gcGl4ZWxGbG9vcih4IC8gc2NhbGVYKSxcbiAgICAgICAgb2Zmc2V0WTogeSAvIHNjYWxlWSAtIHBpeGVsRmxvb3IoeSAvIHNjYWxlWSksXG4gICAgICAgIHNjYWxlWDogc2NhbGVYLFxuICAgICAgICBzY2FsZVk6IHNjYWxlWSxcbiAgICAgICAgeDogcGl4ZWxGbG9vcih4IC8gc2NhbGVYKSxcbiAgICAgICAgeTogcGl4ZWxGbG9vcih5IC8gc2NhbGVZKSxcbiAgICAgICAgd2lkdGg6IHBpeGVsQ2VpbCh0b1RpbGVXaWR0aCAvIHNjYWxlWCksXG4gICAgICAgIGhlaWdodDogcGl4ZWxDZWlsKHRvVGlsZUhlaWdodCAvIHNjYWxlWSlcbiAgICAgIH07XG4gICAgICB0aWxlcy5wdXNoKHRpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aWxlcztcbn07XG5cbn0se31dLDE2OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxuZnVuY3Rpb24gb2JqQ2xhc3Mob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuaXNDYW52YXMgPSBmdW5jdGlvbiBpc0NhbnZhcyhlbGVtZW50KSB7XG4gIHZhciBjbmFtZSA9IG9iakNsYXNzKGVsZW1lbnQpO1xuICByZXR1cm4gY25hbWUgPT09ICdbb2JqZWN0IEhUTUxDYW52YXNFbGVtZW50XSdcbiAgLyogYnJvd3NlciAqL1xuICB8fCBjbmFtZSA9PT0gJ1tvYmplY3QgT2Zmc2NyZWVuQ2FudmFzXScgfHwgY25hbWUgPT09ICdbb2JqZWN0IENhbnZhc10nXG4gIC8qIG5vZGUtY2FudmFzICovXG4gIDtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmlzSW1hZ2UgPSBmdW5jdGlvbiBpc0ltYWdlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIG9iakNsYXNzKGVsZW1lbnQpID09PSAnW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XSc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5pc0ltYWdlQml0bWFwID0gZnVuY3Rpb24gaXNJbWFnZUJpdG1hcChlbGVtZW50KSB7XG4gIHJldHVybiBvYmpDbGFzcyhlbGVtZW50KSA9PT0gJ1tvYmplY3QgSW1hZ2VCaXRtYXBdJztcbn07XG5cbm1vZHVsZS5leHBvcnRzLmxpbWl0ZXIgPSBmdW5jdGlvbiBsaW1pdGVyKGNvbmN1cnJlbmN5KSB7XG4gIHZhciBhY3RpdmUgPSAwLFxuICAgICAgcXVldWUgPSBbXTtcblxuICBmdW5jdGlvbiByb2xsKCkge1xuICAgIGlmIChhY3RpdmUgPCBjb25jdXJyZW5jeSAmJiBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGFjdGl2ZSsrO1xuICAgICAgcXVldWUuc2hpZnQoKSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBsaW1pdChmbikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBxdWV1ZS5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm4oKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgYWN0aXZlLS07XG4gICAgICAgICAgcm9sbCgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgYWN0aXZlLS07XG4gICAgICAgICAgcm9sbCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcm9sbCgpO1xuICAgIH0pO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMuY2liX3F1YWxpdHlfbmFtZSA9IGZ1bmN0aW9uIGNpYl9xdWFsaXR5X25hbWUobnVtKSB7XG4gIHN3aXRjaCAobnVtKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICdwaXhlbGF0ZWQnO1xuXG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuICdsb3cnO1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuICdtZWRpdW0nO1xuICB9XG5cbiAgcmV0dXJuICdoaWdoJztcbn07XG5cbm1vZHVsZS5leHBvcnRzLmNpYl9zdXBwb3J0ID0gZnVuY3Rpb24gY2liX3N1cHBvcnQoY3JlYXRlQ2FudmFzKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBjID0gY3JlYXRlQ2FudmFzKDEwMCwgMTAwKTtcbiAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoYywgMCwgMCwgMTAwLCAxMDAsIHtcbiAgICAgIHJlc2l6ZVdpZHRoOiAxMCxcbiAgICAgIHJlc2l6ZUhlaWdodDogMTAsXG4gICAgICByZXNpemVRdWFsaXR5OiAnaGlnaCdcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChiaXRtYXApIHtcbiAgICAgIHZhciBzdGF0dXMgPSBiaXRtYXAud2lkdGggPT09IDEwOyAvLyBCcmFuY2ggYmVsb3cgaXMgZmlsdGVyZWQgb24gdXBwZXIgbGV2ZWwuIFdlIGRvIG5vdCBjYWxsIHJlc2l6ZVxuICAgICAgLy8gZGV0ZWN0aW9uIGZvciBiYXNpYyBJbWFnZUJpdG1hcC5cbiAgICAgIC8vXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSW1hZ2VCaXRtYXBcbiAgICAgIC8vIG9sZCBDcm9tZSA1MSBoYXMgSW1hZ2VCaXRtYXAgd2l0aG91dCAuY2xvc2UoKS4gVGhlbiB0aGlzIGNvZGVcbiAgICAgIC8vIHdpbGwgdGhyb3cgYW5kIHJldHVybiAnZmFsc2UnIGFzIGV4cGVjdGVkLlxuICAgICAgLy9cblxuICAgICAgYml0bWFwLmNsb3NlKCk7XG4gICAgICBjID0gbnVsbDtcbiAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfSk7XG4gIH0pW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy53b3JrZXJfb2Zmc2NyZWVuX2NhbnZhc19zdXBwb3J0ID0gZnVuY3Rpb24gd29ya2VyX29mZnNjcmVlbl9jYW52YXNfc3VwcG9ydCgpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAodHlwZW9mIE9mZnNjcmVlbkNhbnZhcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGlmIE9mZnNjcmVlbkNhbnZhcyBpcyBwcmVzZW50LCB3ZSBhc3N1bWUgYnJvd3NlciBzdXBwb3J0cyBXb3JrZXIgYW5kIGJ1aWx0LWluIFByb21pc2UgYXMgd2VsbFxuICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd29ya2VyUGF5bG9hZChzZWxmKSB7XG4gICAgICBpZiAodHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXMoMTAsIDEwKTsgLy8gdGVzdCB0aGF0IDJkIGNvbnRleHQgY2FuIGJlIHVzZWQgaW4gd29ya2VyXG5cbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBjdHgucmVjdCgwLCAwLCAxLCAxKTsgLy8gdGVzdCB0aGF0IGNpYiBjYW4gYmUgdXNlZCB0byByZXR1cm4gaW1hZ2UgYml0bWFwIGZyb20gd29ya2VyXG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKGNhbnZhcywgMCwgMCwgMSwgMSk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGYucG9zdE1lc3NhZ2UodHJ1ZSk7XG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzZWxmLnBvc3RNZXNzYWdlKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBjb2RlID0gYnRvYShcIihcIi5jb25jYXQod29ya2VyUGF5bG9hZC50b1N0cmluZygpLCBcIikoc2VsZik7XCIpKTtcbiAgICB2YXIgdyA9IG5ldyBXb3JrZXIoXCJkYXRhOnRleHQvamF2YXNjcmlwdDtiYXNlNjQsXCIuY29uY2F0KGNvZGUpKTtcblxuICAgIHcub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZShldi5kYXRhKTtcbiAgICB9O1xuXG4gICAgdy5vbmVycm9yID0gcmVqZWN0O1xuICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcbn07IC8vIENoZWNrIGlmIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YSBjYW4gYmUgdXNlZCxcbi8vIEZpcmVGb3ggcmFuZG9taXplcyB0aGUgb3V0cHV0IG9mIHRoYXQgZnVuY3Rpb24gaW4gYHByaXZhY3kucmVzaXN0RmluZ2VycHJpbnRpbmdgIG1vZGVcblxuXG5tb2R1bGUuZXhwb3J0cy5jYW5fdXNlX2NhbnZhcyA9IGZ1bmN0aW9uIGNhbl91c2VfY2FudmFzKGNyZWF0ZUNhbnZhcykge1xuICB2YXIgdXNhYmxlID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICB2YXIgY2FudmFzID0gY3JlYXRlQ2FudmFzKDIsIDEpO1xuICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB2YXIgZCA9IGN0eC5jcmVhdGVJbWFnZURhdGEoMiwgMSk7XG4gICAgZC5kYXRhWzBdID0gMTI7XG4gICAgZC5kYXRhWzFdID0gMjM7XG4gICAgZC5kYXRhWzJdID0gMzQ7XG4gICAgZC5kYXRhWzNdID0gMjU1O1xuICAgIGQuZGF0YVs0XSA9IDQ1O1xuICAgIGQuZGF0YVs1XSA9IDU2O1xuICAgIGQuZGF0YVs2XSA9IDY3O1xuICAgIGQuZGF0YVs3XSA9IDI1NTtcbiAgICBjdHgucHV0SW1hZ2VEYXRhKGQsIDAsIDApO1xuICAgIGQgPSBudWxsO1xuICAgIGQgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIDIsIDEpO1xuXG4gICAgaWYgKGQuZGF0YVswXSA9PT0gMTIgJiYgZC5kYXRhWzFdID09PSAyMyAmJiBkLmRhdGFbMl0gPT09IDM0ICYmIGQuZGF0YVszXSA9PT0gMjU1ICYmIGQuZGF0YVs0XSA9PT0gNDUgJiYgZC5kYXRhWzVdID09PSA1NiAmJiBkLmRhdGFbNl0gPT09IDY3ICYmIGQuZGF0YVs3XSA9PT0gMjU1KSB7XG4gICAgICB1c2FibGUgPSB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7fVxuXG4gIHJldHVybiB1c2FibGU7XG59OyAvLyBDaGVjayBpZiBjcmVhdGVJbWFnZUJpdG1hcChpbWcsIHN4LCBzeSwgc3csIHNoKSBzaWduYXR1cmUgd29ya3MgY29ycmVjdGx5XG4vLyB3aXRoIEpQRUcgaW1hZ2VzIG9yaWVudGVkIHdpdGggRXhpZjtcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEyMjA2NzFcbi8vIFRPRE86IHJlbW92ZSBhZnRlciBpdCdzIGZpeGVkIGluIGNocm9tZSBmb3IgYXQgbGVhc3QgMiByZWxlYXNlc1xuXG5cbm1vZHVsZS5leHBvcnRzLmNpYl9jYW5fdXNlX3JlZ2lvbiA9IGZ1bmN0aW9uIGNpYl9jYW5fdXNlX3JlZ2lvbigpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgaWYgKHR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLnNyYyA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyAnLzlqLzRRQmlSWGhwWmdBQVRVMEFLZ0FBQUFnQUJRRVNBQU1BQUFBQkFBWUFBQUVhQUFVQUFBQUJBQUFBU2dFYkFBVUFBJyArICdBQUJBQUFBVWdFb0FBTUFBQUFCQUFJQUFBSVRBQU1BQUFBQkFBRUFBQUFBQUFBQUFBQklBQUFBQVFBQUFFZ0FBQUFCLzknICsgJ3NBUXdBRUF3TUVBd01FQkFNRUJRUUVCUVlLQndZR0JnWU5DUW9JQ2c4TkVCQVBEUThPRVJNWUZCRVNGeElPRHhVY0ZSYycgKyAnWkdSc2JHeEFVSFI4ZEdoOFlHaHNhLzlzQVF3RUVCUVVHQlFZTUJ3Y01HaEVQRVJvYUdob2FHaG9hR2hvYUdob2FHaG9hJyArICdHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYUdob2FHaG9hR2hvYS84SUFFUWdBQVFBQ0F3RVJBQUlSQVFNUkEnICsgJ2YvRUFCUUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBZi94QUFVQVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzlvQURBTUJBQScgKyAnSVFBeEFBQUFGL1AvL0VBQlFRQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvMmdBSUFRRUFBUVVDZi8vRUFCUVJBUUFBQUFBJyArICdBQUFBQUFBQUFBQUFBQUFELzJnQUlBUU1CQVQ4QmYvL0VBQlFSQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvMmdBSUFRSUInICsgJ0FUOEJmLy9FQUJRUUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzJnQUlBUUVBQmo4Q2YvL0VBQlFRQVFBQUFBQUFBQUFBQScgKyAnQUFBQUFBQUFBRC8yZ0FJQVFFQUFUOGhmLy9hQUF3REFRQUNBQU1BQUFBUUgvL0VBQlFSQVFBQUFBQUFBQUFBQUFBQUFBJyArICdBQUFBRC8yZ0FJQVFNQkFUOFFmLy9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzJnQUlBUUlCQVQ4UWYvL0VBQlEnICsgJ1FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FJQVFFQUFUOFFmLy9aJztcblxuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNyZWF0ZUltYWdlQml0bWFwKGltYWdlLCAwLCAwLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0KS50aGVuKGZ1bmN0aW9uIChiaXRtYXApIHtcbiAgICAgICAgaWYgKGJpdG1hcC53aWR0aCA9PT0gaW1hZ2Uud2lkdGggJiYgYml0bWFwLmhlaWdodCA9PT0gaW1hZ2UuaGVpZ2h0KSB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcbiAgICB9O1xuICB9KTtcbn07XG5cbn0se31dLDE3OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBNYXRoTGliID0gX2RlcmVxXygnLi9tYXRobGliJyk7XG5cbiAgdmFyIG1hdGhMaWI7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG5cbiAgb25tZXNzYWdlID0gZnVuY3Rpb24gb25tZXNzYWdlKGV2KSB7XG4gICAgdmFyIHRpbGVPcHRzID0gZXYuZGF0YS5vcHRzO1xuICAgIHZhciByZXR1cm5CaXRtYXAgPSBmYWxzZTtcblxuICAgIGlmICghdGlsZU9wdHMuc3JjICYmIHRpbGVPcHRzLnNyY0JpdG1hcCkge1xuICAgICAgdmFyIGNhbnZhcyA9IG5ldyBPZmZzY3JlZW5DYW52YXModGlsZU9wdHMud2lkdGgsIHRpbGVPcHRzLmhlaWdodCk7XG4gICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgICBhbHBoYTogQm9vbGVhbih0aWxlT3B0cy5hbHBoYSlcbiAgICAgIH0pO1xuICAgICAgY3R4LmRyYXdJbWFnZSh0aWxlT3B0cy5zcmNCaXRtYXAsIDAsIDApO1xuICAgICAgdGlsZU9wdHMuc3JjID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB0aWxlT3B0cy53aWR0aCwgdGlsZU9wdHMuaGVpZ2h0KS5kYXRhO1xuICAgICAgY2FudmFzLndpZHRoID0gY2FudmFzLmhlaWdodCA9IDA7XG4gICAgICBjYW52YXMgPSBudWxsO1xuICAgICAgdGlsZU9wdHMuc3JjQml0bWFwLmNsb3NlKCk7XG4gICAgICB0aWxlT3B0cy5zcmNCaXRtYXAgPSBudWxsO1xuICAgICAgcmV0dXJuQml0bWFwID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIW1hdGhMaWIpIG1hdGhMaWIgPSBuZXcgTWF0aExpYihldi5kYXRhLmZlYXR1cmVzKTsgLy8gVXNlIG11bHRpbWF0aCdzIHN5bmMgYXV0by1pbml0LiBBdm9pZCBQcm9taXNlIHVzZSBpbiBvbGQgYnJvd3NlcnMsXG4gICAgLy8gYmVjYXVzZSBwb2x5ZmlsbHMgYXJlIG5vdCBwcm9wYWdhdGVkIHRvIHdlYndvcmtlci5cblxuICAgIHZhciBkYXRhID0gbWF0aExpYi5yZXNpemVBbmRVbnNoYXJwKHRpbGVPcHRzKTtcblxuICAgIGlmIChyZXR1cm5CaXRtYXApIHtcbiAgICAgIHZhciB0b0ltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEpLCB0aWxlT3B0cy50b1dpZHRoLCB0aWxlT3B0cy50b0hlaWdodCk7XG5cbiAgICAgIHZhciBfY2FudmFzID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh0aWxlT3B0cy50b1dpZHRoLCB0aWxlT3B0cy50b0hlaWdodCk7XG5cbiAgICAgIHZhciBfY3R4ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgICAgYWxwaGE6IEJvb2xlYW4odGlsZU9wdHMuYWxwaGEpXG4gICAgICB9KTtcblxuICAgICAgX2N0eC5wdXRJbWFnZURhdGEodG9JbWFnZURhdGEsIDAsIDApO1xuXG4gICAgICBjcmVhdGVJbWFnZUJpdG1hcChfY2FudmFzKS50aGVuKGZ1bmN0aW9uIChiaXRtYXApIHtcbiAgICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGJpdG1hcDogYml0bWFwXG4gICAgICAgIH0sIFtiaXRtYXBdKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0sIFtkYXRhLmJ1ZmZlcl0pO1xuICAgIH1cbiAgfTtcbn07XG5cbn0se1wiLi9tYXRobGliXCI6MX1dLDE4OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbi8vIENhbGN1bGF0ZSBHYXVzc2lhbiBibHVyIG9mIGFuIGltYWdlIHVzaW5nIElJUiBmaWx0ZXJcbi8vIFRoZSBtZXRob2QgaXMgdGFrZW4gZnJvbSBJbnRlbCdzIHdoaXRlIHBhcGVyIGFuZCBjb2RlIGV4YW1wbGUgYXR0YWNoZWQgdG8gaXQ6XG4vLyBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9paXItZ2F1c3NpYW4tYmx1ci1maWx0ZXJcbi8vIC1pbXBsZW1lbnRhdGlvbi11c2luZy1pbnRlbC1hZHZhbmNlZC12ZWN0b3ItZXh0ZW5zaW9uc1xuXG52YXIgYTAsIGExLCBhMiwgYTMsIGIxLCBiMiwgbGVmdF9jb3JuZXIsIHJpZ2h0X2Nvcm5lcjtcblxuZnVuY3Rpb24gZ2F1c3NDb2VmKHNpZ21hKSB7XG4gIGlmIChzaWdtYSA8IDAuNSkge1xuICAgIHNpZ21hID0gMC41O1xuICB9XG5cbiAgdmFyIGEgPSBNYXRoLmV4cCgwLjcyNiAqIDAuNzI2KSAvIHNpZ21hLFxuICAgICAgZzEgPSBNYXRoLmV4cCgtYSksXG4gICAgICBnMiA9IE1hdGguZXhwKC0yICogYSksXG4gICAgICBrID0gKDEgLSBnMSkgKiAoMSAtIGcxKSAvICgxICsgMiAqIGEgKiBnMSAtIGcyKTtcblxuICBhMCA9IGs7XG4gIGExID0gayAqIChhIC0gMSkgKiBnMTtcbiAgYTIgPSBrICogKGEgKyAxKSAqIGcxO1xuICBhMyA9IC1rICogZzI7XG4gIGIxID0gMiAqIGcxO1xuICBiMiA9IC1nMjtcbiAgbGVmdF9jb3JuZXIgPSAoYTAgKyBhMSkgLyAoMSAtIGIxIC0gYjIpO1xuICByaWdodF9jb3JuZXIgPSAoYTIgKyBhMykgLyAoMSAtIGIxIC0gYjIpO1xuXG4gIC8vIEF0dGVtcHQgdG8gZm9yY2UgdHlwZSB0byBGUDMyLlxuICByZXR1cm4gbmV3IEZsb2F0MzJBcnJheShbIGEwLCBhMSwgYTIsIGEzLCBiMSwgYjIsIGxlZnRfY29ybmVyLCByaWdodF9jb3JuZXIgXSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZvbHZlTW9ubzE2KHNyYywgb3V0LCBsaW5lLCBjb2VmZiwgd2lkdGgsIGhlaWdodCkge1xuICAvLyB0YWtlcyBzcmMgaW1hZ2UgYW5kIHdyaXRlcyB0aGUgYmx1cnJlZCBhbmQgdHJhbnNwb3NlZCByZXN1bHQgaW50byBvdXRcblxuICB2YXIgcHJldl9zcmMsIGN1cnJfc3JjLCBjdXJyX291dCwgcHJldl9vdXQsIHByZXZfcHJldl9vdXQ7XG4gIHZhciBzcmNfaW5kZXgsIG91dF9pbmRleCwgbGluZV9pbmRleDtcbiAgdmFyIGksIGo7XG4gIHZhciBjb2VmZl9hMCwgY29lZmZfYTEsIGNvZWZmX2IxLCBjb2VmZl9iMjtcblxuICBmb3IgKGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICBzcmNfaW5kZXggPSBpICogd2lkdGg7XG4gICAgb3V0X2luZGV4ID0gaTtcbiAgICBsaW5lX2luZGV4ID0gMDtcblxuICAgIC8vIGxlZnQgdG8gcmlnaHRcbiAgICBwcmV2X3NyYyA9IHNyY1tzcmNfaW5kZXhdO1xuICAgIHByZXZfcHJldl9vdXQgPSBwcmV2X3NyYyAqIGNvZWZmWzZdO1xuICAgIHByZXZfb3V0ID0gcHJldl9wcmV2X291dDtcblxuICAgIGNvZWZmX2EwID0gY29lZmZbMF07XG4gICAgY29lZmZfYTEgPSBjb2VmZlsxXTtcbiAgICBjb2VmZl9iMSA9IGNvZWZmWzRdO1xuICAgIGNvZWZmX2IyID0gY29lZmZbNV07XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgd2lkdGg7IGorKykge1xuICAgICAgY3Vycl9zcmMgPSBzcmNbc3JjX2luZGV4XTtcblxuICAgICAgY3Vycl9vdXQgPSBjdXJyX3NyYyAqIGNvZWZmX2EwICtcbiAgICAgICAgICAgICAgICAgcHJldl9zcmMgKiBjb2VmZl9hMSArXG4gICAgICAgICAgICAgICAgIHByZXZfb3V0ICogY29lZmZfYjEgK1xuICAgICAgICAgICAgICAgICBwcmV2X3ByZXZfb3V0ICogY29lZmZfYjI7XG5cbiAgICAgIHByZXZfcHJldl9vdXQgPSBwcmV2X291dDtcbiAgICAgIHByZXZfb3V0ID0gY3Vycl9vdXQ7XG4gICAgICBwcmV2X3NyYyA9IGN1cnJfc3JjO1xuXG4gICAgICBsaW5lW2xpbmVfaW5kZXhdID0gcHJldl9vdXQ7XG4gICAgICBsaW5lX2luZGV4Kys7XG4gICAgICBzcmNfaW5kZXgrKztcbiAgICB9XG5cbiAgICBzcmNfaW5kZXgtLTtcbiAgICBsaW5lX2luZGV4LS07XG4gICAgb3V0X2luZGV4ICs9IGhlaWdodCAqICh3aWR0aCAtIDEpO1xuXG4gICAgLy8gcmlnaHQgdG8gbGVmdFxuICAgIHByZXZfc3JjID0gc3JjW3NyY19pbmRleF07XG4gICAgcHJldl9wcmV2X291dCA9IHByZXZfc3JjICogY29lZmZbN107XG4gICAgcHJldl9vdXQgPSBwcmV2X3ByZXZfb3V0O1xuICAgIGN1cnJfc3JjID0gcHJldl9zcmM7XG5cbiAgICBjb2VmZl9hMCA9IGNvZWZmWzJdO1xuICAgIGNvZWZmX2ExID0gY29lZmZbM107XG5cbiAgICBmb3IgKGogPSB3aWR0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICBjdXJyX291dCA9IGN1cnJfc3JjICogY29lZmZfYTAgK1xuICAgICAgICAgICAgICAgICBwcmV2X3NyYyAqIGNvZWZmX2ExICtcbiAgICAgICAgICAgICAgICAgcHJldl9vdXQgKiBjb2VmZl9iMSArXG4gICAgICAgICAgICAgICAgIHByZXZfcHJldl9vdXQgKiBjb2VmZl9iMjtcblxuICAgICAgcHJldl9wcmV2X291dCA9IHByZXZfb3V0O1xuICAgICAgcHJldl9vdXQgPSBjdXJyX291dDtcblxuICAgICAgcHJldl9zcmMgPSBjdXJyX3NyYztcbiAgICAgIGN1cnJfc3JjID0gc3JjW3NyY19pbmRleF07XG5cbiAgICAgIG91dFtvdXRfaW5kZXhdID0gbGluZVtsaW5lX2luZGV4XSArIHByZXZfb3V0O1xuXG4gICAgICBzcmNfaW5kZXgtLTtcbiAgICAgIGxpbmVfaW5kZXgtLTtcbiAgICAgIG91dF9pbmRleCAtPSBoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cblxuZnVuY3Rpb24gYmx1ck1vbm8xNihzcmMsIHdpZHRoLCBoZWlnaHQsIHJhZGl1cykge1xuICAvLyBRdWljayBleGl0IG9uIHplcm8gcmFkaXVzXG4gIGlmICghcmFkaXVzKSB7IHJldHVybjsgfVxuXG4gIHZhciBvdXQgICAgICA9IG5ldyBVaW50MTZBcnJheShzcmMubGVuZ3RoKSxcbiAgICAgIHRtcF9saW5lID0gbmV3IEZsb2F0MzJBcnJheShNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KSk7XG5cbiAgdmFyIGNvZWZmID0gZ2F1c3NDb2VmKHJhZGl1cyk7XG5cbiAgY29udm9sdmVNb25vMTYoc3JjLCBvdXQsIHRtcF9saW5lLCBjb2VmZiwgd2lkdGgsIGhlaWdodCk7XG4gIGNvbnZvbHZlTW9ubzE2KG91dCwgc3JjLCB0bXBfbGluZSwgY29lZmYsIGhlaWdodCwgd2lkdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJsdXJNb25vMTY7XG5cbn0se31dLDE5OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbmlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gICAgfVxuICB9O1xufVxuXG59LHt9XSwyMDpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cblxudmFyIGFzc2lnbiAgICAgICAgID0gX2RlcmVxXygnb2JqZWN0LWFzc2lnbicpO1xudmFyIGJhc2U2NGRlY29kZSAgID0gX2RlcmVxXygnLi9saWIvYmFzZTY0ZGVjb2RlJyk7XG52YXIgaGFzV2ViQXNzZW1ibHkgPSBfZGVyZXFfKCcuL2xpYi93YV9kZXRlY3QnKTtcblxuXG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBqczogdHJ1ZSxcbiAgd2FzbTogdHJ1ZVxufTtcblxuXG5mdW5jdGlvbiBNdWx0aU1hdGgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTXVsdGlNYXRoKSkgcmV0dXJuIG5ldyBNdWx0aU1hdGgob3B0aW9ucyk7XG5cbiAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgb3B0aW9ucyB8fCB7fSk7XG5cbiAgdGhpcy5vcHRpb25zICAgICAgICAgPSBvcHRzO1xuXG4gIHRoaXMuX19jYWNoZSAgICAgICAgID0ge307XG5cbiAgdGhpcy5fX2luaXRfcHJvbWlzZSAgPSBudWxsO1xuICB0aGlzLl9fbW9kdWxlcyAgICAgICA9IG9wdHMubW9kdWxlcyB8fCB7fTtcbiAgdGhpcy5fX21lbW9yeSAgICAgICAgPSBudWxsO1xuICB0aGlzLl9fd2FzbSAgICAgICAgICA9IHt9O1xuXG4gIHRoaXMuX19pc0xFID0gKChuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KFsgMSwgMCwgMCwgMCBdKSkuYnVmZmVyKSlbMF0gPT09IDEpO1xuXG4gIGlmICghdGhpcy5vcHRpb25zLmpzICYmICF0aGlzLm9wdGlvbnMud2FzbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWF0aGxpYjogYXQgbGVhc3QgXCJqc1wiIG9yIFwid2FzbVwiIHNob3VsZCBiZSBlbmFibGVkJyk7XG4gIH1cbn1cblxuXG5NdWx0aU1hdGgucHJvdG90eXBlLmhhc193YXNtID0gaGFzV2ViQXNzZW1ibHk7XG5cblxuTXVsdGlNYXRoLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiAobW9kdWxlKSB7XG4gIHRoaXMuX19tb2R1bGVzW21vZHVsZS5uYW1lXSA9IG1vZHVsZTtcblxuICAvLyBQaW4gdGhlIGJlc3QgcG9zc2libGUgaW1wbGVtZW50YXRpb25cbiAgaWYgKHRoaXMub3B0aW9ucy53YXNtICYmIHRoaXMuaGFzX3dhc20oKSAmJiBtb2R1bGUud2FzbV9mbikge1xuICAgIHRoaXNbbW9kdWxlLm5hbWVdID0gbW9kdWxlLndhc21fZm47XG4gIH0gZWxzZSB7XG4gICAgdGhpc1ttb2R1bGUubmFtZV0gPSBtb2R1bGUuZm47XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblxuTXVsdGlNYXRoLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fX2luaXRfcHJvbWlzZSkgcmV0dXJuIHRoaXMuX19pbml0X3Byb21pc2U7XG5cbiAgaWYgKCF0aGlzLm9wdGlvbnMuanMgJiYgdGhpcy5vcHRpb25zLndhc20gJiYgIXRoaXMuaGFzX3dhc20oKSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ21hdGhsaWI6IG9ubHkgXCJ3YXNtXCIgd2FzIGVuYWJsZWQsIGJ1dCBpdFxcJ3Mgbm90IHN1cHBvcnRlZCcpKTtcbiAgfVxuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICB0aGlzLl9faW5pdF9wcm9taXNlID0gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoc2VsZi5fX21vZHVsZXMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBtb2R1bGUgPSBzZWxmLl9fbW9kdWxlc1tuYW1lXTtcblxuICAgIGlmICghc2VsZi5vcHRpb25zLndhc20gfHwgIXNlbGYuaGFzX3dhc20oKSB8fCAhbW9kdWxlLndhc21fZm4pIHJldHVybiBudWxsO1xuXG4gICAgLy8gSWYgYWxyZWFkeSBjb21waWxlZCAtIGV4aXRcbiAgICBpZiAoc2VsZi5fX3dhc21bbmFtZV0pIHJldHVybiBudWxsO1xuXG4gICAgLy8gQ29tcGlsZSB3YXNtIHNvdXJjZVxuICAgIHJldHVybiBXZWJBc3NlbWJseS5jb21waWxlKHNlbGYuX19iYXNlNjRkZWNvZGUobW9kdWxlLndhc21fc3JjKSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChtKSB7IHNlbGYuX193YXNtW25hbWVdID0gbTsgfSk7XG4gIH0pKVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNlbGY7IH0pO1xuXG4gIHJldHVybiB0aGlzLl9faW5pdF9wcm9taXNlO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTWV0aG9kcyBiZWxvdyBhcmUgZm9yIGludGVybmFsIHVzZSBmcm9tIHBsdWdpbnNcblxuXG4vLyBTaW1wbGUgZGVjb2RlIGJhc2U2NCB0byB0eXBlZCBhcnJheS4gVXNlZnVsIHRvIGxvYWQgZW1iZWRkZWQgd2ViYXNzZW1ibHlcbi8vIGNvZGUuIFlvdSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHkuXG4vL1xuTXVsdGlNYXRoLnByb3RvdHlwZS5fX2Jhc2U2NGRlY29kZSA9IGJhc2U2NGRlY29kZTtcblxuXG4vLyBJbmNyZWFzZSBjdXJyZW50IG1lbW9yeSB0byBpbmNsdWRlIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMuIERvIG5vdGhpbmcgaWZcbi8vIHNpemUgaXMgYWxyZWFkeSBvay4gWW91IHByb2JhYmx5IGRvbid0IG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbi8vIGJlY2F1c2UgaXQgd2lsbCBiZSBpbnZva2VkIGZyb20gYC5fX2luc3RhbmNlKClgLlxuLy9cbk11bHRpTWF0aC5wcm90b3R5cGUuX19yZWFsbG9jYXRlID0gZnVuY3Rpb24gbWVtX2dyb3dfdG8oYnl0ZXMpIHtcbiAgaWYgKCF0aGlzLl9fbWVtb3J5KSB7XG4gICAgdGhpcy5fX21lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe1xuICAgICAgaW5pdGlhbDogTWF0aC5jZWlsKGJ5dGVzIC8gKDY0ICogMTAyNCkpXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX19tZW1vcnk7XG4gIH1cblxuICB2YXIgbWVtX3NpemUgPSB0aGlzLl9fbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoO1xuXG4gIGlmIChtZW1fc2l6ZSA8IGJ5dGVzKSB7XG4gICAgdGhpcy5fX21lbW9yeS5ncm93KE1hdGguY2VpbCgoYnl0ZXMgLSBtZW1fc2l6ZSkgLyAoNjQgKiAxMDI0KSkpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX19tZW1vcnk7XG59O1xuXG5cbi8vIFJldHVybnMgaW5zdGFudGluYXRlZCB3ZWJhc3NlbWJseSBpdGVtIGJ5IG5hbWUsIHdpdGggc3BlY2lmaWVkIG1lbW9yeSBzaXplXG4vLyBhbmQgZW52aXJvbm1lbnQuXG4vLyAtIHVzZSBjYWNoZSBpZiBhdmFpbGFibGVcbi8vIC0gZG8gc3luYyBtb2R1bGUgaW5pdCwgaWYgYXN5bmMgaW5pdCB3YXMgbm90IGNhbGxlZCBlYXJsaWVyXG4vLyAtIGFsbG9jYXRlIG1lbW9yeSBpZiBub3QgZW5vdWd0aFxuLy8gLSBjYW4gZXhwb3J0IGZ1bmN0aW9ucyB0byB3ZWJhc3NlbWJseSB2aWEgXCJlbnZfZXh0cmFcIixcbi8vICAgZm9yIGV4YW1wbGUsIHsgZXhwOiBNYXRoLmV4cCB9XG4vL1xuTXVsdGlNYXRoLnByb3RvdHlwZS5fX2luc3RhbmNlID0gZnVuY3Rpb24gaW5zdGFuY2UobmFtZSwgbWVtc2l6ZSwgZW52X2V4dHJhKSB7XG4gIGlmIChtZW1zaXplKSB0aGlzLl9fcmVhbGxvY2F0ZShtZW1zaXplKTtcblxuICAvLyBJZiAuaW5pdCgpIHdhcyBub3QgY2FsbGVkLCBkbyBzeW5jIGNvbXBpbGVcbiAgaWYgKCF0aGlzLl9fd2FzbVtuYW1lXSkge1xuICAgIHZhciBtb2R1bGUgPSB0aGlzLl9fbW9kdWxlc1tuYW1lXTtcbiAgICB0aGlzLl9fd2FzbVtuYW1lXSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGhpcy5fX2Jhc2U2NGRlY29kZShtb2R1bGUud2FzbV9zcmMpKTtcbiAgfVxuXG4gIGlmICghdGhpcy5fX2NhY2hlW25hbWVdKSB7XG4gICAgdmFyIGVudl9iYXNlID0ge1xuICAgICAgbWVtb3J5QmFzZTogMCxcbiAgICAgIG1lbW9yeTogdGhpcy5fX21lbW9yeSxcbiAgICAgIHRhYmxlQmFzZTogMCxcbiAgICAgIHRhYmxlOiBuZXcgV2ViQXNzZW1ibHkuVGFibGUoeyBpbml0aWFsOiAwLCBlbGVtZW50OiAnYW55ZnVuYycgfSlcbiAgICB9O1xuXG4gICAgdGhpcy5fX2NhY2hlW25hbWVdID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHRoaXMuX193YXNtW25hbWVdLCB7XG4gICAgICBlbnY6IGFzc2lnbihlbnZfYmFzZSwgZW52X2V4dHJhIHx8IHt9KVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX19jYWNoZVtuYW1lXTtcbn07XG5cblxuLy8gSGVscGVyIHRvIGNhbGN1bGF0ZSBtZW1vcnkgYWxpZ2ggZm9yIHBvaW50ZXJzLiBXZWJhc3NlbWJseSBkb2VzIG5vdCByZXF1aXJlXG4vLyB0aGlzLCBidXQgeW91IG1heSB3aXNoIHRvIGV4cGVyaW1lbnQuIERlZmF1bHQgYmFzZSA9IDg7XG4vL1xuTXVsdGlNYXRoLnByb3RvdHlwZS5fX2FsaWduID0gZnVuY3Rpb24gYWxpZ24obnVtYmVyLCBiYXNlKSB7XG4gIGJhc2UgPSBiYXNlIHx8IDg7XG4gIHZhciByZW1pbmRlciA9IG51bWJlciAlIGJhc2U7XG4gIHJldHVybiBudW1iZXIgKyAocmVtaW5kZXIgPyBiYXNlIC0gcmVtaW5kZXIgOiAwKTtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBNdWx0aU1hdGg7XG5cbn0se1wiLi9saWIvYmFzZTY0ZGVjb2RlXCI6MjEsXCIuL2xpYi93YV9kZXRlY3RcIjoyMixcIm9iamVjdC1hc3NpZ25cIjoyM31dLDIxOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxuXG52YXIgQkFTRTY0X01BUCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJhc2U2NGRlY29kZShzdHIpIHtcbiAgdmFyIGlucHV0ID0gc3RyLnJlcGxhY2UoL1tcXHJcXG49XS9nLCAnJyksIC8vIHJlbW92ZSBDUi9MRiAmIHBhZGRpbmcgdG8gc2ltcGxpZnkgc2NhblxuICAgICAgbWF4ICAgPSBpbnB1dC5sZW5ndGg7XG5cbiAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KChtYXggKiAzKSA+PiAyKTtcblxuICAvLyBDb2xsZWN0IGJ5IDYqNCBiaXRzICgzIGJ5dGVzKVxuXG4gIHZhciBiaXRzID0gMDtcbiAgdmFyIHB0ciAgPSAwO1xuXG4gIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoKGlkeCAlIDQgPT09IDApICYmIGlkeCkge1xuICAgICAgb3V0W3B0cisrXSA9IChiaXRzID4+IDE2KSAmIDB4RkY7XG4gICAgICBvdXRbcHRyKytdID0gKGJpdHMgPj4gOCkgJiAweEZGO1xuICAgICAgb3V0W3B0cisrXSA9IGJpdHMgJiAweEZGO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA2KSB8IEJBU0U2NF9NQVAuaW5kZXhPZihpbnB1dC5jaGFyQXQoaWR4KSk7XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB2YXIgdGFpbGJpdHMgPSAobWF4ICUgNCkgKiA2O1xuXG4gIGlmICh0YWlsYml0cyA9PT0gMCkge1xuICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiAxNikgJiAweEZGO1xuICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiA4KSAmIDB4RkY7XG4gICAgb3V0W3B0cisrXSA9IGJpdHMgJiAweEZGO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxOCkge1xuICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiAxMCkgJiAweEZGO1xuICAgIG91dFtwdHIrK10gPSAoYml0cyA+PiAyKSAmIDB4RkY7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDEyKSB7XG4gICAgb3V0W3B0cisrXSA9IChiaXRzID4+IDQpICYgMHhGRjtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuXG59LHt9XSwyMjpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG5cblxudmFyIHdhO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzV2ViQXNzZW1ibHkoKSB7XG4gIC8vIHVzZSBjYWNoZSBpZiBjYWxsZWQgYmVmb3JlO1xuICBpZiAodHlwZW9mIHdhICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHdhO1xuXG4gIHdhID0gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBXZWJBc3NlbWJseSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB3YTtcblxuICAvLyBJZiBXZWJBc3NlbmJseSBpcyBkaXNhYmxlZCwgY29kZSBjYW4gdGhyb3cgb24gY29tcGlsZVxuICB0cnkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9icmlvbi9taW4td2FzbS1mYWlsL2Jsb2IvbWFzdGVyL21pbi13YXNtLWZhaWwuaW4uanNcbiAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIHRoYXQgV0EgaW50ZXJuYWxzIGFyZSBjb3JyZWN0XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1zcGFjaW5nLCBtYXgtbGVuICovXG4gICAgdmFyIGJpbiAgICAgID0gbmV3IFVpbnQ4QXJyYXkoWyAwLDk3LDExNSwxMDksMSwwLDAsMCwxLDYsMSw5NiwxLDEyNywxLDEyNywzLDIsMSwwLDUsMywxLDAsMSw3LDgsMSw0LDExNiwxMDEsMTE1LDExNiwwLDAsMTAsMTYsMSwxNCwwLDMyLDAsNjUsMSw1NCwyLDAsMzIsMCw0MCwyLDAsMTEgXSk7XG4gICAgdmFyIG1vZHVsZSAgID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pO1xuICAgIHZhciBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHt9KTtcblxuICAgIC8vIHRlc3Qgc3RvcmluZyB0byBhbmQgbG9hZGluZyBmcm9tIGEgbm9uLXplcm8gbG9jYXRpb24gdmlhIGEgcGFyYW1ldGVyLlxuICAgIC8vIFNhZmFyaSBvbiBpT1MgMTEuMi41IHJldHVybnMgMCB1bmV4cGVjdGVkbHkgYXQgbm9uLXplcm8gbG9jYXRpb25zXG4gICAgaWYgKGluc3RhbmNlLmV4cG9ydHMudGVzdCg0KSAhPT0gMCkgd2EgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHdhO1xuICB9IGNhdGNoIChfXykge31cblxuICByZXR1cm4gd2E7XG59O1xuXG59LHt9XSwyMzpbZnVuY3Rpb24oX2RlcmVxXyxtb2R1bGUsZXhwb3J0cyl7XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0bztcbn07XG5cbn0se31dLDI0OltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcbnZhciBidW5kbGVGbiA9IGFyZ3VtZW50c1szXTtcbnZhciBzb3VyY2VzID0gYXJndW1lbnRzWzRdO1xudmFyIGNhY2hlID0gYXJndW1lbnRzWzVdO1xuXG52YXIgc3RyaW5naWZ5ID0gSlNPTi5zdHJpbmdpZnk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBvcHRpb25zKSB7XG4gICAgdmFyIHdrZXk7XG4gICAgdmFyIGNhY2hlS2V5cyA9IE9iamVjdC5rZXlzKGNhY2hlKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2FjaGVLZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0gY2FjaGVLZXlzW2ldO1xuICAgICAgICB2YXIgZXhwID0gY2FjaGVba2V5XS5leHBvcnRzO1xuICAgICAgICAvLyBVc2luZyBiYWJlbCBhcyBhIHRyYW5zcGlsZXIgdG8gdXNlIGVzbW9kdWxlLCB0aGUgZXhwb3J0IHdpbGwgYWx3YXlzXG4gICAgICAgIC8vIGJlIGFuIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IGV4cG9ydCBhcyBhIHByb3BlcnR5IG9mIGl0LiBUbyBlbnN1cmVcbiAgICAgICAgLy8gdGhlIGV4aXN0aW5nIGFwaSBhbmQgYmFiZWwgZXNtb2R1bGUgZXhwb3J0cyBhcmUgYm90aCBzdXBwb3J0ZWQgd2VcbiAgICAgICAgLy8gY2hlY2sgZm9yIGJvdGhcbiAgICAgICAgaWYgKGV4cCA9PT0gZm4gfHwgZXhwICYmIGV4cC5kZWZhdWx0ID09PSBmbikge1xuICAgICAgICAgICAgd2tleSA9IGtleTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF3a2V5KSB7XG4gICAgICAgIHdrZXkgPSBNYXRoLmZsb29yKE1hdGgucG93KDE2LCA4KSAqIE1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgdmFyIHdjYWNoZSA9IHt9O1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNhY2hlS2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBjYWNoZUtleXNbaV07XG4gICAgICAgICAgICB3Y2FjaGVba2V5XSA9IGtleTtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2VzW3drZXldID0gW1xuICAgICAgICAgICAgJ2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeycgKyBmbiArICcoc2VsZik7IH0nLFxuICAgICAgICAgICAgd2NhY2hlXG4gICAgICAgIF07XG4gICAgfVxuICAgIHZhciBza2V5ID0gTWF0aC5mbG9vcihNYXRoLnBvdygxNiwgOCkgKiBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7XG5cbiAgICB2YXIgc2NhY2hlID0ge307IHNjYWNoZVt3a2V5XSA9IHdrZXk7XG4gICAgc291cmNlc1tza2V5XSA9IFtcbiAgICAgICAgJ2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpeycgK1xuICAgICAgICAgICAgLy8gdHJ5IHRvIGNhbGwgZGVmYXVsdCBpZiBkZWZpbmVkIHRvIGFsc28gc3VwcG9ydCBiYWJlbCBlc21vZHVsZSBleHBvcnRzXG4gICAgICAgICAgICAndmFyIGYgPSByZXF1aXJlKCcgKyBzdHJpbmdpZnkod2tleSkgKyAnKTsnICtcbiAgICAgICAgICAgICcoZi5kZWZhdWx0ID8gZi5kZWZhdWx0IDogZikoc2VsZik7JyArXG4gICAgICAgICd9JyxcbiAgICAgICAgc2NhY2hlXG4gICAgXTtcblxuICAgIHZhciB3b3JrZXJTb3VyY2VzID0ge307XG4gICAgcmVzb2x2ZVNvdXJjZXMoc2tleSk7XG5cbiAgICBmdW5jdGlvbiByZXNvbHZlU291cmNlcyhrZXkpIHtcbiAgICAgICAgd29ya2VyU291cmNlc1trZXldID0gdHJ1ZTtcblxuICAgICAgICBmb3IgKHZhciBkZXBQYXRoIGluIHNvdXJjZXNba2V5XVsxXSkge1xuICAgICAgICAgICAgdmFyIGRlcEtleSA9IHNvdXJjZXNba2V5XVsxXVtkZXBQYXRoXTtcbiAgICAgICAgICAgIGlmICghd29ya2VyU291cmNlc1tkZXBLZXldKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZVNvdXJjZXMoZGVwS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzcmMgPSAnKCcgKyBidW5kbGVGbiArICcpKHsnXG4gICAgICAgICsgT2JqZWN0LmtleXMod29ya2VyU291cmNlcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZnkoa2V5KSArICc6WydcbiAgICAgICAgICAgICAgICArIHNvdXJjZXNba2V5XVswXVxuICAgICAgICAgICAgICAgICsgJywnICsgc3RyaW5naWZ5KHNvdXJjZXNba2V5XVsxXSkgKyAnXSdcbiAgICAgICAgICAgIDtcbiAgICAgICAgfSkuam9pbignLCcpXG4gICAgICAgICsgJ30se30sWycgKyBzdHJpbmdpZnkoc2tleSkgKyAnXSknXG4gICAgO1xuXG4gICAgdmFyIFVSTCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTCB8fCB3aW5kb3cubW96VVJMIHx8IHdpbmRvdy5tc1VSTDtcblxuICAgIHZhciBibG9iID0gbmV3IEJsb2IoW3NyY10sIHsgdHlwZTogJ3RleHQvamF2YXNjcmlwdCcgfSk7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5iYXJlKSB7IHJldHVybiBibG9iOyB9XG4gICAgdmFyIHdvcmtlclVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyVXJsKTtcbiAgICB3b3JrZXIub2JqZWN0VVJMID0gd29ya2VyVXJsO1xuICAgIHJldHVybiB3b3JrZXI7XG59O1xuXG59LHt9XSxcIi9pbmRleC5qc1wiOltmdW5jdGlvbihfZGVyZXFfLG1vZHVsZSxleHBvcnRzKXtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9pID0gYXJyID09IG51bGwgPyBudWxsIDogdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBhcnJbU3ltYm9sLml0ZXJhdG9yXSB8fCBhcnJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9zLCBfZTsgdHJ5IHsgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG52YXIgYXNzaWduID0gX2RlcmVxXygnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgd2Vid29ya2lmeSA9IF9kZXJlcV8oJ3dlYndvcmtpZnknKTtcblxudmFyIE1hdGhMaWIgPSBfZGVyZXFfKCcuL2xpYi9tYXRobGliJyk7XG5cbnZhciBQb29sID0gX2RlcmVxXygnLi9saWIvcG9vbCcpO1xuXG52YXIgdXRpbHMgPSBfZGVyZXFfKCcuL2xpYi91dGlscycpO1xuXG52YXIgd29ya2VyID0gX2RlcmVxXygnLi9saWIvd29ya2VyJyk7XG5cbnZhciBjcmVhdGVTdGFnZXMgPSBfZGVyZXFfKCcuL2xpYi9zdGVwcGVyJyk7XG5cbnZhciBjcmVhdGVSZWdpb25zID0gX2RlcmVxXygnLi9saWIvdGlsZXInKTsgLy8gRGVkdXBsaWNhdGUgcG9vbHMgJiBsaW1pdGVycyB3aXRoIHRoZSBzYW1lIGNvbmZpZ3Ncbi8vIHdoZW4gdXNlciBjcmVhdGVzIG11bHRpcGxlIHBpY2EgaW5zdGFuY2VzLlxuXG5cbnZhciBzaW5nbGV0b25lcyA9IHt9O1xudmFyIE5FRURfU0FGQVJJX0ZJWCA9IGZhbHNlO1xuXG50cnkge1xuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgIE5FRURfU0FGQVJJX0ZJWCA9IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpJykgPj0gMDtcbiAgfVxufSBjYXRjaCAoZSkge31cblxudmFyIGNvbmN1cnJlbmN5ID0gMTtcblxuaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbmN1cnJlbmN5ID0gTWF0aC5taW4obmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3kgfHwgMSwgNCk7XG59XG5cbnZhciBERUZBVUxUX1BJQ0FfT1BUUyA9IHtcbiAgdGlsZTogMTAyNCxcbiAgY29uY3VycmVuY3k6IGNvbmN1cnJlbmN5LFxuICBmZWF0dXJlczogWydqcycsICd3YXNtJywgJ3d3J10sXG4gIGlkbGU6IDIwMDAsXG4gIGNyZWF0ZUNhbnZhczogZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB2YXIgdG1wQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgdG1wQ2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgdG1wQ2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICByZXR1cm4gdG1wQ2FudmFzO1xuICB9XG59O1xudmFyIERFRkFVTFRfUkVTSVpFX09QVFMgPSB7XG4gIHF1YWxpdHk6IDMsXG4gIGFscGhhOiBmYWxzZSxcbiAgdW5zaGFycEFtb3VudDogMCxcbiAgdW5zaGFycFJhZGl1czogMC4wLFxuICB1bnNoYXJwVGhyZXNob2xkOiAwXG59O1xudmFyIENBTl9ORVdfSU1BR0VfREFUQSA9IGZhbHNlO1xudmFyIENBTl9DUkVBVEVfSU1BR0VfQklUTUFQID0gZmFsc2U7XG52YXIgQ0FOX1VTRV9DQU5WQVNfR0VUX0lNQUdFX0RBVEEgPSBmYWxzZTtcbnZhciBDQU5fVVNFX09GRlNDUkVFTl9DQU5WQVMgPSBmYWxzZTtcbnZhciBDQU5fVVNFX0NJQl9SRUdJT05fRk9SX0lNQUdFID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHdvcmtlckZhYnJpYygpIHtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogd2Vid29ya2lmeSh3b3JrZXIpLFxuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICB0aGlzLnZhbHVlLnRlcm1pbmF0ZSgpO1xuXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFyIHVybCA9IHdpbmRvdy5VUkwgfHwgd2luZG93LndlYmtpdFVSTCB8fCB3aW5kb3cubW96VVJMIHx8IHdpbmRvdy5tc1VSTDtcblxuICAgICAgICBpZiAodXJsICYmIHVybC5yZXZva2VPYmplY3RVUkwgJiYgdGhpcy52YWx1ZS5vYmplY3RVUkwpIHtcbiAgICAgICAgICB1cmwucmV2b2tlT2JqZWN0VVJMKHRoaXMudmFsdWUub2JqZWN0VVJMKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFQSSBtZXRob2RzXG5cblxuZnVuY3Rpb24gUGljYShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQaWNhKSkgcmV0dXJuIG5ldyBQaWNhKG9wdGlvbnMpO1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oe30sIERFRkFVTFRfUElDQV9PUFRTLCBvcHRpb25zIHx8IHt9KTtcbiAgdmFyIGxpbWl0ZXJfa2V5ID0gXCJsa19cIi5jb25jYXQodGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5KTsgLy8gU2hhcmUgbGltaXRlcnMgdG8gYXZvaWQgbXVsdGlwbGUgcGFyYWxsZWwgd29ya2VycyB3aGVuIHVzZXIgY3JlYXRlc1xuICAvLyBtdWx0aXBsZSBwaWNhIGluc3RhbmNlcy5cblxuICB0aGlzLl9fbGltaXQgPSBzaW5nbGV0b25lc1tsaW1pdGVyX2tleV0gfHwgdXRpbHMubGltaXRlcih0aGlzLm9wdGlvbnMuY29uY3VycmVuY3kpO1xuICBpZiAoIXNpbmdsZXRvbmVzW2xpbWl0ZXJfa2V5XSkgc2luZ2xldG9uZXNbbGltaXRlcl9rZXldID0gdGhpcy5fX2xpbWl0OyAvLyBMaXN0IG9mIHN1cHBvcnRlZCBmZWF0dXJlcywgYWNjb3JkaW5nIHRvIG9wdGlvbnMgJiBicm93c2VyL25vZGUuanNcblxuICB0aGlzLmZlYXR1cmVzID0ge1xuICAgIGpzOiBmYWxzZSxcbiAgICAvLyBwdXJlIEpTIGltcGxlbWVudGF0aW9uLCBjYW4gYmUgZGlzYWJsZWQgZm9yIHRlc3RpbmdcbiAgICB3YXNtOiBmYWxzZSxcbiAgICAvLyB3ZWJhc3NlbWJseSBpbXBsZW1lbnRhdGlvbiBmb3IgaGVhdnkgZnVuY3Rpb25zXG4gICAgY2liOiBmYWxzZSxcbiAgICAvLyByZXNpemUgdmlhIGNyZWF0ZUltYWdlQml0bWFwIChvbmx5IEZGIGF0IHRoaXMgbW9tZW50KVxuICAgIHd3OiBmYWxzZSAvLyB3ZWJ3b3JrZXJzXG5cbiAgfTtcbiAgdGhpcy5fX3dvcmtlcnNQb29sID0gbnVsbDsgLy8gU3RvcmUgcmVxdWVzdGVkIGZlYXR1cmVzIGZvciB3ZWJ3b3JrZXJzXG5cbiAgdGhpcy5fX3JlcXVlc3RlZF9mZWF0dXJlcyA9IFtdO1xuICB0aGlzLl9fbWF0aGxpYiA9IG51bGw7XG59XG5cblBpY2EucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuX19pbml0UHJvbWlzZSkgcmV0dXJuIHRoaXMuX19pbml0UHJvbWlzZTsgLy8gVGVzdCBpZiB3ZSBjYW4gY3JlYXRlIEltYWdlRGF0YSB3aXRob3V0IGNhbnZhcyBhbmQgbWVtb3J5IGNvcHlcblxuICBpZiAodHlwZW9mIEltYWdlRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgKi9cbiAgICAgIG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQwMCksIDEwLCAxMCk7XG4gICAgICBDQU5fTkVXX0lNQUdFX0RBVEEgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKF9fKSB7fVxuICB9IC8vIEltYWdlQml0bWFwIGNhbiBiZSBlZmZlY3RpdmUgaW4gMiBwbGFjZXM6XG4gIC8vXG4gIC8vIDEuIFRocmVhZGVkIGpwZWcgdW5wYWNrIChiYXNpYylcbiAgLy8gMi4gQnVpbHQtaW4gcmVzaXplIChibG9ja2VkIGR1ZSBwcm9ibGVtIGluIGNocm9tZSwgc2VlIGlzc3VlICM4OSlcbiAgLy9cbiAgLy8gRm9yIGJhc2ljIHVzZSB3ZSBhbHNvIG5lZWQgSW1hZ2VCaXRtYXAgd28gc3VwcG9ydCAuY2xvc2UoKSBtZXRob2QsXG4gIC8vIHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9ydS9kb2NzL1dlYi9BUEkvSW1hZ2VCaXRtYXBcblxuXG4gIGlmICh0eXBlb2YgSW1hZ2VCaXRtYXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKEltYWdlQml0bWFwLnByb3RvdHlwZSAmJiBJbWFnZUJpdG1hcC5wcm90b3R5cGUuY2xvc2UpIHtcbiAgICAgIENBTl9DUkVBVEVfSU1BR0VfQklUTUFQID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWJ1ZygnSW1hZ2VCaXRtYXAgZG9lcyBub3Qgc3VwcG9ydCAuY2xvc2UoKSwgZGlzYWJsZWQnKTtcbiAgICB9XG4gIH1cblxuICB2YXIgZmVhdHVyZXMgPSB0aGlzLm9wdGlvbnMuZmVhdHVyZXMuc2xpY2UoKTtcblxuICBpZiAoZmVhdHVyZXMuaW5kZXhPZignYWxsJykgPj0gMCkge1xuICAgIGZlYXR1cmVzID0gWydjaWInLCAnd2FzbScsICdqcycsICd3dyddO1xuICB9XG5cbiAgdGhpcy5fX3JlcXVlc3RlZF9mZWF0dXJlcyA9IGZlYXR1cmVzO1xuICB0aGlzLl9fbWF0aGxpYiA9IG5ldyBNYXRoTGliKGZlYXR1cmVzKTsgLy8gQ2hlY2sgV2ViV29ya2VyIHN1cHBvcnQgaWYgcmVxdWVzdGVkXG5cbiAgaWYgKGZlYXR1cmVzLmluZGV4T2YoJ3d3JykgPj0gMCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAnV29ya2VyJyBpbiB3aW5kb3cpIHtcbiAgICAgIC8vIElFIDw9IDExIGRvbid0IGFsbG93IHRvIGNyZWF0ZSB3ZWJ3b3JrZXJzIGZyb20gc3RyaW5nLiBXZSBzaG91bGQgY2hlY2sgaXQuXG4gICAgICAvLyBodHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzgwMTgxMC93ZWItd29ya2Vycy1mcm9tLWJsb2ItdXJscy1pbi1pZS0xMC1hbmQtMTFcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciB3a3IgPSBfZGVyZXFfKCd3ZWJ3b3JraWZ5JykoZnVuY3Rpb24gKCkge30pO1xuXG4gICAgICAgIHdrci50ZXJtaW5hdGUoKTtcbiAgICAgICAgdGhpcy5mZWF0dXJlcy53dyA9IHRydWU7IC8vIHBvb2wgdW5pcXVlbmVzcyBkZXBlbmRzIG9uIHBvb2wgY29uZmlnICsgd2Vid29ya2VyIGNvbmZpZ1xuXG4gICAgICAgIHZhciB3cG9vbF9rZXkgPSBcIndwX1wiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh0aGlzLm9wdGlvbnMpKTtcblxuICAgICAgICBpZiAoc2luZ2xldG9uZXNbd3Bvb2xfa2V5XSkge1xuICAgICAgICAgIHRoaXMuX193b3JrZXJzUG9vbCA9IHNpbmdsZXRvbmVzW3dwb29sX2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fX3dvcmtlcnNQb29sID0gbmV3IFBvb2wod29ya2VyRmFicmljLCB0aGlzLm9wdGlvbnMuaWRsZSk7XG4gICAgICAgICAgc2luZ2xldG9uZXNbd3Bvb2xfa2V5XSA9IHRoaXMuX193b3JrZXJzUG9vbDtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoX18pIHt9XG4gICAgfVxuICB9XG5cbiAgdmFyIGluaXRNYXRoID0gdGhpcy5fX21hdGhsaWIuaW5pdCgpLnRoZW4oZnVuY3Rpb24gKG1hdGhsaWIpIHtcbiAgICAvLyBDb3B5IGRldGVjdGVkIGZlYXR1cmVzXG4gICAgYXNzaWduKF90aGlzLmZlYXR1cmVzLCBtYXRobGliLmZlYXR1cmVzKTtcbiAgfSk7XG5cbiAgdmFyIGNoZWNrQ2liUmVzaXplO1xuXG4gIGlmICghQ0FOX0NSRUFURV9JTUFHRV9CSVRNQVApIHtcbiAgICBjaGVja0NpYlJlc2l6ZSA9IFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgY2hlY2tDaWJSZXNpemUgPSB1dGlscy5jaWJfc3VwcG9ydCh0aGlzLm9wdGlvbnMuY3JlYXRlQ2FudmFzKS50aGVuKGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICAgIGlmIChfdGhpcy5mZWF0dXJlcy5jaWIgJiYgZmVhdHVyZXMuaW5kZXhPZignY2liJykgPCAwKSB7XG4gICAgICAgIF90aGlzLmRlYnVnKCdjcmVhdGVJbWFnZUJpdG1hcCgpIHJlc2l6ZSBzdXBwb3J0ZWQsIGJ1dCBkaXNhYmxlZCBieSBjb25maWcnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChmZWF0dXJlcy5pbmRleE9mKCdjaWInKSA+PSAwKSBfdGhpcy5mZWF0dXJlcy5jaWIgPSBzdGF0dXM7XG4gICAgfSk7XG4gIH1cblxuICBDQU5fVVNFX0NBTlZBU19HRVRfSU1BR0VfREFUQSA9IHV0aWxzLmNhbl91c2VfY2FudmFzKHRoaXMub3B0aW9ucy5jcmVhdGVDYW52YXMpO1xuICB2YXIgY2hlY2tPZmZzY3JlZW5DYW52YXM7XG5cbiAgaWYgKENBTl9DUkVBVEVfSU1BR0VfQklUTUFQICYmIENBTl9ORVdfSU1BR0VfREFUQSAmJiBmZWF0dXJlcy5pbmRleE9mKCd3dycpICE9PSAtMSkge1xuICAgIGNoZWNrT2Zmc2NyZWVuQ2FudmFzID0gdXRpbHMud29ya2VyX29mZnNjcmVlbl9jYW52YXNfc3VwcG9ydCgpO1xuICB9IGVsc2Uge1xuICAgIGNoZWNrT2Zmc2NyZWVuQ2FudmFzID0gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIGNoZWNrT2Zmc2NyZWVuQ2FudmFzID0gY2hlY2tPZmZzY3JlZW5DYW52YXMudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgQ0FOX1VTRV9PRkZTQ1JFRU5fQ0FOVkFTID0gcmVzdWx0O1xuICB9KTsgLy8gd2UgdXNlIGNyZWF0ZUltYWdlQml0bWFwIHRvIGNyb3AgaW1hZ2UgZGF0YSBhbmQgcGFzcyBpdCB0byB3b3JrZXJzLFxuICAvLyBzbyBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgZnVuY3Rpb24gd29ya3MgY29ycmVjdGx5O1xuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMjIwNjcxXG5cbiAgdmFyIGNoZWNrQ2liUmVnaW9uID0gdXRpbHMuY2liX2Nhbl91c2VfcmVnaW9uKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgQ0FOX1VTRV9DSUJfUkVHSU9OX0ZPUl9JTUFHRSA9IHJlc3VsdDtcbiAgfSk7IC8vIEluaXQgbWF0aCBsaWIuIFRoYXQncyBhc3luYyBiZWNhdXNlIGNhbiBsb2FkIHNvbWVcblxuICB0aGlzLl9faW5pdFByb21pc2UgPSBQcm9taXNlLmFsbChbaW5pdE1hdGgsIGNoZWNrQ2liUmVzaXplLCBjaGVja09mZnNjcmVlbkNhbnZhcywgY2hlY2tDaWJSZWdpb25dKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH0pO1xuICByZXR1cm4gdGhpcy5fX2luaXRQcm9taXNlO1xufTsgLy8gQ2FsbCByZXNpemVyIGluIHdlYndvcmtlciBvciBsb2NhbGx5LCBkZXBlbmRpbmcgb24gY29uZmlnXG5cblxuUGljYS5wcm90b3R5cGUuX19pbnZva2VSZXNpemUgPSBmdW5jdGlvbiAodGlsZU9wdHMsIG9wdHMpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgLy8gU2hhcmUgY2FjaGUgYmV0d2VlbiBjYWxsczpcbiAgLy9cbiAgLy8gLSB3YXNtIGluc3RhbmNlXG4gIC8vIC0gd2FzbSBtZW1vcnkgb2JqZWN0XG4gIC8vXG4gIG9wdHMuX19tYXRoQ2FjaGUgPSBvcHRzLl9fbWF0aENhY2hlIHx8IHt9O1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFfdGhpczIuZmVhdHVyZXMud3cpIHtcbiAgICAgIC8vIG5vdCBwb3NzaWJsZSB0byBoYXZlIEltYWdlQml0bWFwIGhlcmUgaWYgdXNlciBkaXNhYmxlZCBXV1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogX3RoaXMyLl9fbWF0aGxpYi5yZXNpemVBbmRVbnNoYXJwKHRpbGVPcHRzLCBvcHRzLl9fbWF0aENhY2hlKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHcgPSBfdGhpczIuX193b3JrZXJzUG9vbC5hY3F1aXJlKCk7XG5cbiAgICAgIGlmIChvcHRzLmNhbmNlbFRva2VuKSBvcHRzLmNhbmNlbFRva2VuW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9KTtcblxuICAgICAgdy52YWx1ZS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdy5yZWxlYXNlKCk7XG4gICAgICAgIGlmIChldi5kYXRhLmVycikgcmVqZWN0KGV2LmRhdGEuZXJyKTtlbHNlIHJlc29sdmUoZXYuZGF0YSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgdHJhbnNmZXIgPSBbXTtcbiAgICAgIGlmICh0aWxlT3B0cy5zcmMpIHRyYW5zZmVyLnB1c2godGlsZU9wdHMuc3JjLmJ1ZmZlcik7XG4gICAgICBpZiAodGlsZU9wdHMuc3JjQml0bWFwKSB0cmFuc2Zlci5wdXNoKHRpbGVPcHRzLnNyY0JpdG1hcCk7XG4gICAgICB3LnZhbHVlLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgb3B0czogdGlsZU9wdHMsXG4gICAgICAgIGZlYXR1cmVzOiBfdGhpczIuX19yZXF1ZXN0ZWRfZmVhdHVyZXMsXG4gICAgICAgIHByZWxvYWQ6IHtcbiAgICAgICAgICB3YXNtX25vZHVsZTogX3RoaXMyLl9fbWF0aGxpYi5fX1xuICAgICAgICB9XG4gICAgICB9LCB0cmFuc2Zlcik7XG4gICAgfSk7XG4gIH0pO1xufTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gcmV0dXJuIHByb21pc2UgaWYgY3JlYXRlSW1hZ2VCaXRtYXAgaXMgdXNlZFxuXG5cblBpY2EucHJvdG90eXBlLl9fZXh0cmFjdFRpbGVEYXRhID0gZnVuY3Rpb24gKHRpbGUsIGZyb20sIG9wdHMsIHN0YWdlRW52LCBleHRyYWN0VG8pIHtcbiAgaWYgKHRoaXMuZmVhdHVyZXMud3cgJiYgQ0FOX1VTRV9PRkZTQ1JFRU5fQ0FOVkFTICYmICggLy8gY3JlYXRlSW1hZ2VCaXRtYXAgZG9lc24ndCB3b3JrIGZvciBpbWFnZXMgKEltYWdlLCBJbWFnZUJpdG1hcCkgd2l0aCBFeGlmIG9yaWVudGF0aW9uIGluIENocm9tZSxcbiAgLy8gY2FuIHVzZSBjYW52YXMgYmVjYXVzZSBjYW52YXMgZG9lc24ndCBoYXZlIG9yaWVudGF0aW9uO1xuICAvLyBzZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIyMDY3MVxuICB1dGlscy5pc0NhbnZhcyhmcm9tKSB8fCBDQU5fVVNFX0NJQl9SRUdJT05fRk9SX0lNQUdFKSkge1xuICAgIHRoaXMuZGVidWcoJ0NyZWF0ZSB0aWxlIGZvciBPZmZzY3JlZW5DYW52YXMnKTtcbiAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoc3RhZ2VFbnYuc3JjSW1hZ2VCaXRtYXAgfHwgZnJvbSwgdGlsZS54LCB0aWxlLnksIHRpbGUud2lkdGgsIHRpbGUuaGVpZ2h0KS50aGVuKGZ1bmN0aW9uIChiaXRtYXApIHtcbiAgICAgIGV4dHJhY3RUby5zcmNCaXRtYXAgPSBiaXRtYXA7XG4gICAgICByZXR1cm4gZXh0cmFjdFRvO1xuICAgIH0pO1xuICB9IC8vIEV4dHJhY3QgdGlsZSBSR0JBIGJ1ZmZlciwgZGVwZW5kaW5nIG9uIGlucHV0IHR5cGVcblxuXG4gIGlmICh1dGlscy5pc0NhbnZhcyhmcm9tKSkge1xuICAgIGlmICghc3RhZ2VFbnYuc3JjQ3R4KSBzdGFnZUVudi5zcmNDdHggPSBmcm9tLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IEJvb2xlYW4ob3B0cy5hbHBoYSlcbiAgICB9KTsgLy8gSWYgaW5wdXQgaXMgQ2FudmFzIC0gZXh0cmFjdCByZWdpb24gZGF0YSBkaXJlY3RseVxuXG4gICAgdGhpcy5kZWJ1ZygnR2V0IHRpbGUgcGl4ZWwgZGF0YScpO1xuICAgIGV4dHJhY3RUby5zcmMgPSBzdGFnZUVudi5zcmNDdHguZ2V0SW1hZ2VEYXRhKHRpbGUueCwgdGlsZS55LCB0aWxlLndpZHRoLCB0aWxlLmhlaWdodCkuZGF0YTtcbiAgICByZXR1cm4gZXh0cmFjdFRvO1xuICB9IC8vIElmIGlucHV0IGlzIEltYWdlIG9yIGRlY29kZWQgdG8gSW1hZ2VCaXRtYXAsXG4gIC8vIGRyYXcgcmVnaW9uIHRvIHRlbXBvcmFyeSBjYW52YXMgYW5kIGV4dHJhY3QgZGF0YSBmcm9tIGl0XG4gIC8vXG4gIC8vIE5vdGUhIEF0dGVtcHQgdG8gcmV1c2UgdGhpcyBjYW52YXMgY2F1c2VzIHNpZ25pZmljYW50IHNsb3dkb3duIGluIGNocm9tZVxuICAvL1xuXG5cbiAgdGhpcy5kZWJ1ZygnRHJhdyB0aWxlIGltYWdlQml0bWFwL2ltYWdlIHRvIHRlbXBvcmFyeSBjYW52YXMnKTtcbiAgdmFyIHRtcENhbnZhcyA9IHRoaXMub3B0aW9ucy5jcmVhdGVDYW52YXModGlsZS53aWR0aCwgdGlsZS5oZWlnaHQpO1xuICB2YXIgdG1wQ3R4ID0gdG1wQ2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgIGFscGhhOiBCb29sZWFuKG9wdHMuYWxwaGEpXG4gIH0pO1xuICB0bXBDdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2NvcHknO1xuICB0bXBDdHguZHJhd0ltYWdlKHN0YWdlRW52LnNyY0ltYWdlQml0bWFwIHx8IGZyb20sIHRpbGUueCwgdGlsZS55LCB0aWxlLndpZHRoLCB0aWxlLmhlaWdodCwgMCwgMCwgdGlsZS53aWR0aCwgdGlsZS5oZWlnaHQpO1xuICB0aGlzLmRlYnVnKCdHZXQgdGlsZSBwaXhlbCBkYXRhJyk7XG4gIGV4dHJhY3RUby5zcmMgPSB0bXBDdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHRpbGUud2lkdGgsIHRpbGUuaGVpZ2h0KS5kYXRhOyAvLyBTYWZhcmkgMTIgd29ya2Fyb3VuZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL3BpY2EvaXNzdWVzLzE5OVxuXG4gIHRtcENhbnZhcy53aWR0aCA9IHRtcENhbnZhcy5oZWlnaHQgPSAwO1xuICByZXR1cm4gZXh0cmFjdFRvO1xufTtcblxuUGljYS5wcm90b3R5cGUuX19sYW5kVGlsZURhdGEgPSBmdW5jdGlvbiAodGlsZSwgcmVzdWx0LCBzdGFnZUVudikge1xuICB2YXIgdG9JbWFnZURhdGE7XG4gIHRoaXMuZGVidWcoJ0NvbnZlcnQgcmF3IHJnYmEgdGlsZSByZXN1bHQgdG8gSW1hZ2VEYXRhJyk7XG5cbiAgaWYgKHJlc3VsdC5iaXRtYXApIHtcbiAgICBzdGFnZUVudi50b0N0eC5kcmF3SW1hZ2UocmVzdWx0LmJpdG1hcCwgdGlsZS50b1gsIHRpbGUudG9ZKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChDQU5fTkVXX0lNQUdFX0RBVEEpIHtcbiAgICAvLyB0aGlzIGJyYW5jaCBpcyBmb3IgbW9kZXJuIGJyb3dzZXJzXG4gICAgLy8gSWYgYG5ldyBJbWFnZURhdGEoKWAgJiBVaW50OENsYW1wZWRBcnJheSBzdXBvcnRlZFxuICAgIHRvSW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkocmVzdWx0LmRhdGEpLCB0aWxlLnRvV2lkdGgsIHRpbGUudG9IZWlnaHQpO1xuICB9IGVsc2Uge1xuICAgIC8vIGZhbGxiYWNrIGZvciBgbm9kZS1jYW52YXNgIGFuZCBvbGQgYnJvd3NlcnNcbiAgICAvLyAoSUUxMSBoYXMgSW1hZ2VEYXRhIGJ1dCBkb2VzIG5vdCBzdXBwb3J0IGBuZXcgSW1hZ2VEYXRhKClgKVxuICAgIHRvSW1hZ2VEYXRhID0gc3RhZ2VFbnYudG9DdHguY3JlYXRlSW1hZ2VEYXRhKHRpbGUudG9XaWR0aCwgdGlsZS50b0hlaWdodCk7XG5cbiAgICBpZiAodG9JbWFnZURhdGEuZGF0YS5zZXQpIHtcbiAgICAgIHRvSW1hZ2VEYXRhLmRhdGEuc2V0KHJlc3VsdC5kYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSUU5IGRvbid0IGhhdmUgYC5zZXQoKWBcbiAgICAgIGZvciAodmFyIGkgPSB0b0ltYWdlRGF0YS5kYXRhLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRvSW1hZ2VEYXRhLmRhdGFbaV0gPSByZXN1bHQuZGF0YVtpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmRlYnVnKCdEcmF3IHRpbGUnKTtcblxuICBpZiAoTkVFRF9TQUZBUklfRklYKSB7XG4gICAgLy8gU2FmYXJpIGRyYXdzIHRoaW4gd2hpdGUgc3RyaXBlcyBiZXR3ZWVuIHRpbGVzIHdpdGhvdXQgdGhpcyBmaXhcbiAgICBzdGFnZUVudi50b0N0eC5wdXRJbWFnZURhdGEodG9JbWFnZURhdGEsIHRpbGUudG9YLCB0aWxlLnRvWSwgdGlsZS50b0lubmVyWCAtIHRpbGUudG9YLCB0aWxlLnRvSW5uZXJZIC0gdGlsZS50b1ksIHRpbGUudG9Jbm5lcldpZHRoICsgMWUtNSwgdGlsZS50b0lubmVySGVpZ2h0ICsgMWUtNSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhZ2VFbnYudG9DdHgucHV0SW1hZ2VEYXRhKHRvSW1hZ2VEYXRhLCB0aWxlLnRvWCwgdGlsZS50b1ksIHRpbGUudG9Jbm5lclggLSB0aWxlLnRvWCwgdGlsZS50b0lubmVyWSAtIHRpbGUudG9ZLCB0aWxlLnRvSW5uZXJXaWR0aCwgdGlsZS50b0lubmVySGVpZ2h0KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuUGljYS5wcm90b3R5cGUuX190aWxlQW5kUmVzaXplID0gZnVuY3Rpb24gKGZyb20sIHRvLCBvcHRzKSB7XG4gIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gIHZhciBzdGFnZUVudiA9IHtcbiAgICBzcmNDdHg6IG51bGwsXG4gICAgc3JjSW1hZ2VCaXRtYXA6IG51bGwsXG4gICAgaXNJbWFnZUJpdG1hcFJldXNlZDogZmFsc2UsXG4gICAgdG9DdHg6IG51bGxcbiAgfTtcblxuICB2YXIgcHJvY2Vzc1RpbGUgPSBmdW5jdGlvbiBwcm9jZXNzVGlsZSh0aWxlKSB7XG4gICAgcmV0dXJuIF90aGlzMy5fX2xpbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjtcbiAgICAgIHZhciB0aWxlT3B0cyA9IHtcbiAgICAgICAgd2lkdGg6IHRpbGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogdGlsZS5oZWlnaHQsXG4gICAgICAgIHRvV2lkdGg6IHRpbGUudG9XaWR0aCxcbiAgICAgICAgdG9IZWlnaHQ6IHRpbGUudG9IZWlnaHQsXG4gICAgICAgIHNjYWxlWDogdGlsZS5zY2FsZVgsXG4gICAgICAgIHNjYWxlWTogdGlsZS5zY2FsZVksXG4gICAgICAgIG9mZnNldFg6IHRpbGUub2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogdGlsZS5vZmZzZXRZLFxuICAgICAgICBxdWFsaXR5OiBvcHRzLnF1YWxpdHksXG4gICAgICAgIGFscGhhOiBvcHRzLmFscGhhLFxuICAgICAgICB1bnNoYXJwQW1vdW50OiBvcHRzLnVuc2hhcnBBbW91bnQsXG4gICAgICAgIHVuc2hhcnBSYWRpdXM6IG9wdHMudW5zaGFycFJhZGl1cyxcbiAgICAgICAgdW5zaGFycFRocmVzaG9sZDogb3B0cy51bnNoYXJwVGhyZXNob2xkXG4gICAgICB9O1xuXG4gICAgICBfdGhpczMuZGVidWcoJ0ludm9rZSByZXNpemUgbWF0aCcpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRpbGVPcHRzKS50aGVuKGZ1bmN0aW9uICh0aWxlT3B0cykge1xuICAgICAgICByZXR1cm4gX3RoaXMzLl9fZXh0cmFjdFRpbGVEYXRhKHRpbGUsIGZyb20sIG9wdHMsIHN0YWdlRW52LCB0aWxlT3B0cyk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uICh0aWxlT3B0cykge1xuICAgICAgICBfdGhpczMuZGVidWcoJ0ludm9rZSByZXNpemUgbWF0aCcpO1xuXG4gICAgICAgIHJldHVybiBfdGhpczMuX19pbnZva2VSZXNpemUodGlsZU9wdHMsIG9wdHMpO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjtcbiAgICAgICAgc3RhZ2VFbnYuc3JjSW1hZ2VEYXRhID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5fX2xhbmRUaWxlRGF0YSh0aWxlLCByZXN1bHQsIHN0YWdlRW52KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9OyAvLyBOZWVkIHRvIG5vcm1hbGl6ZSBkYXRhIHNvdXJjZSBmaXJzdC4gSXQgY2FuIGJlIGNhbnZhcyBvciBpbWFnZS5cbiAgLy8gSWYgaW1hZ2UgLSB0cnkgdG8gZGVjb2RlIGluIGJhY2tncm91bmQgaWYgcG9zc2libGVcblxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBzdGFnZUVudi50b0N0eCA9IHRvLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IEJvb2xlYW4ob3B0cy5hbHBoYSlcbiAgICB9KTtcbiAgICBpZiAodXRpbHMuaXNDYW52YXMoZnJvbSkpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHV0aWxzLmlzSW1hZ2VCaXRtYXAoZnJvbSkpIHtcbiAgICAgIHN0YWdlRW52LnNyY0ltYWdlQml0bWFwID0gZnJvbTtcbiAgICAgIHN0YWdlRW52LmlzSW1hZ2VCaXRtYXBSZXVzZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzSW1hZ2UoZnJvbSkpIHtcbiAgICAgIC8vIHRyeSBkbyBkZWNvZGUgaW1hZ2UgaW4gYmFja2dyb3VuZCBmb3IgZmFzdGVyIG5leHQgb3BlcmF0aW9ucztcbiAgICAgIC8vIGlmIHdlJ3JlIHVzaW5nIG9mZnNjcmVlbiBjYW52YXMsIGNpYiBpcyBjYWxsZWQgcGVyIHRpbGUsIHNvIG5vdCBuZWVkZWQgaGVyZVxuICAgICAgaWYgKCFDQU5fQ1JFQVRFX0lNQUdFX0JJVE1BUCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIF90aGlzMy5kZWJ1ZygnRGVjb2RlIGltYWdlIHZpYSBjcmVhdGVJbWFnZUJpdG1hcCcpO1xuXG4gICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoZnJvbSkudGhlbihmdW5jdGlvbiAoaW1hZ2VCaXRtYXApIHtcbiAgICAgICAgc3RhZ2VFbnYuc3JjSW1hZ2VCaXRtYXAgPSBpbWFnZUJpdG1hcDtcbiAgICAgIH0pIC8vIFN1cHByZXNzIGVycm9yIHRvIHVzZSBmYWxsYmFjaywgaWYgbWV0aG9kIGZhaWxzXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL3BpY2EvaXNzdWVzLzE5MFxuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgW1wiY2F0Y2hcIl0oZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpY2E6IFwiLmZyb21cIiBzaG91bGQgYmUgSW1hZ2UsIENhbnZhcyBvciBJbWFnZUJpdG1hcCcpO1xuICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAob3B0cy5jYW5jZWxlZCkgcmV0dXJuIG9wdHMuY2FuY2VsVG9rZW47XG5cbiAgICBfdGhpczMuZGVidWcoJ0NhbGN1bGF0ZSB0aWxlcycpOyAvL1xuICAgIC8vIEhlcmUgd2UgYXJlIHdpdGggXCJub3JtYWxpemVkXCIgc291cmNlLFxuICAgIC8vIGZvbGxvdyB0byB0aWxpbmdcbiAgICAvL1xuXG5cbiAgICB2YXIgcmVnaW9ucyA9IGNyZWF0ZVJlZ2lvbnMoe1xuICAgICAgd2lkdGg6IG9wdHMud2lkdGgsXG4gICAgICBoZWlnaHQ6IG9wdHMuaGVpZ2h0LFxuICAgICAgc3JjVGlsZVNpemU6IF90aGlzMy5vcHRpb25zLnRpbGUsXG4gICAgICB0b1dpZHRoOiBvcHRzLnRvV2lkdGgsXG4gICAgICB0b0hlaWdodDogb3B0cy50b0hlaWdodCxcbiAgICAgIGRlc3RUaWxlQm9yZGVyOiBvcHRzLl9fZGVzdFRpbGVCb3JkZXJcbiAgICB9KTtcbiAgICB2YXIgam9icyA9IHJlZ2lvbnMubWFwKGZ1bmN0aW9uICh0aWxlKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc1RpbGUodGlsZSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwKHN0YWdlRW52KSB7XG4gICAgICBpZiAoc3RhZ2VFbnYuc3JjSW1hZ2VCaXRtYXApIHtcbiAgICAgICAgaWYgKCFzdGFnZUVudi5pc0ltYWdlQml0bWFwUmV1c2VkKSBzdGFnZUVudi5zcmNJbWFnZUJpdG1hcC5jbG9zZSgpO1xuICAgICAgICBzdGFnZUVudi5zcmNJbWFnZUJpdG1hcCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMzLmRlYnVnKCdQcm9jZXNzIHRpbGVzJyk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoam9icykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczMuZGVidWcoJ0ZpbmlzaGVkIScpO1xuXG4gICAgICBjbGVhbnVwKHN0YWdlRW52KTtcbiAgICAgIHJldHVybiB0bztcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBjbGVhbnVwKHN0YWdlRW52KTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5QaWNhLnByb3RvdHlwZS5fX3Byb2Nlc3NTdGFnZXMgPSBmdW5jdGlvbiAoc3RhZ2VzLCBmcm9tLCB0bywgb3B0cykge1xuICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICBpZiAob3B0cy5jYW5jZWxlZCkgcmV0dXJuIG9wdHMuY2FuY2VsVG9rZW47XG5cbiAgdmFyIF9zdGFnZXMkc2hpZnQgPSBzdGFnZXMuc2hpZnQoKSxcbiAgICAgIF9zdGFnZXMkc2hpZnQyID0gX3NsaWNlZFRvQXJyYXkoX3N0YWdlcyRzaGlmdCwgMiksXG4gICAgICB0b1dpZHRoID0gX3N0YWdlcyRzaGlmdDJbMF0sXG4gICAgICB0b0hlaWdodCA9IF9zdGFnZXMkc2hpZnQyWzFdO1xuXG4gIHZhciBpc0xhc3RTdGFnZSA9IHN0YWdlcy5sZW5ndGggPT09IDA7XG4gIG9wdHMgPSBhc3NpZ24oe30sIG9wdHMsIHtcbiAgICB0b1dpZHRoOiB0b1dpZHRoLFxuICAgIHRvSGVpZ2h0OiB0b0hlaWdodCxcbiAgICAvLyBvbmx5IHVzZSB1c2VyLWRlZmluZWQgcXVhbGl0eSBmb3IgdGhlIGxhc3Qgc3RhZ2UsXG4gICAgLy8gdXNlIHNpbXBsZXIgKEhhbW1pbmcpIGZpbHRlciBmb3IgdGhlIGZpcnN0IHN0YWdlcyB3aGVyZVxuICAgIC8vIHNjYWxlIGZhY3RvciBpcyBsYXJnZSBlbm91Z2ggKG1vcmUgdGhhbiAyLTMpXG4gICAgcXVhbGl0eTogaXNMYXN0U3RhZ2UgPyBvcHRzLnF1YWxpdHkgOiBNYXRoLm1pbigxLCBvcHRzLnF1YWxpdHkpXG4gIH0pO1xuICB2YXIgdG1wQ2FudmFzO1xuXG4gIGlmICghaXNMYXN0U3RhZ2UpIHtcbiAgICAvLyBjcmVhdGUgdGVtcG9yYXJ5IGNhbnZhc1xuICAgIHRtcENhbnZhcyA9IHRoaXMub3B0aW9ucy5jcmVhdGVDYW52YXModG9XaWR0aCwgdG9IZWlnaHQpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX190aWxlQW5kUmVzaXplKGZyb20sIGlzTGFzdFN0YWdlID8gdG8gOiB0bXBDYW52YXMsIG9wdHMpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIGlmIChpc0xhc3RTdGFnZSkgcmV0dXJuIHRvO1xuICAgIG9wdHMud2lkdGggPSB0b1dpZHRoO1xuICAgIG9wdHMuaGVpZ2h0ID0gdG9IZWlnaHQ7XG4gICAgcmV0dXJuIF90aGlzNC5fX3Byb2Nlc3NTdGFnZXMoc3RhZ2VzLCB0bXBDYW52YXMsIHRvLCBvcHRzKTtcbiAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgaWYgKHRtcENhbnZhcykge1xuICAgICAgLy8gU2FmYXJpIDEyIHdvcmthcm91bmRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGljYS9pc3N1ZXMvMTk5XG4gICAgICB0bXBDYW52YXMud2lkdGggPSB0bXBDYW52YXMuaGVpZ2h0ID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9KTtcbn07XG5cblBpY2EucHJvdG90eXBlLl9fcmVzaXplVmlhQ3JlYXRlSW1hZ2VCaXRtYXAgPSBmdW5jdGlvbiAoZnJvbSwgdG8sIG9wdHMpIHtcbiAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgdmFyIHRvQ3R4ID0gdG8uZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgYWxwaGE6IEJvb2xlYW4ob3B0cy5hbHBoYSlcbiAgfSk7XG4gIHRoaXMuZGVidWcoJ1Jlc2l6ZSB2aWEgY3JlYXRlSW1hZ2VCaXRtYXAoKScpO1xuICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoZnJvbSwge1xuICAgIHJlc2l6ZVdpZHRoOiBvcHRzLnRvV2lkdGgsXG4gICAgcmVzaXplSGVpZ2h0OiBvcHRzLnRvSGVpZ2h0LFxuICAgIHJlc2l6ZVF1YWxpdHk6IHV0aWxzLmNpYl9xdWFsaXR5X25hbWUob3B0cy5xdWFsaXR5KVxuICB9KS50aGVuKGZ1bmN0aW9uIChpbWFnZUJpdG1hcCkge1xuICAgIGlmIChvcHRzLmNhbmNlbGVkKSByZXR1cm4gb3B0cy5jYW5jZWxUb2tlbjsgLy8gaWYgbm8gdW5zaGFycCAtIGRyYXcgZGlyZWN0bHkgdG8gb3V0cHV0IGNhbnZhc1xuXG4gICAgaWYgKCFvcHRzLnVuc2hhcnBBbW91bnQpIHtcbiAgICAgIHRvQ3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7XG4gICAgICBpbWFnZUJpdG1hcC5jbG9zZSgpO1xuICAgICAgdG9DdHggPSBudWxsO1xuXG4gICAgICBfdGhpczUuZGVidWcoJ0ZpbmlzaGVkIScpO1xuXG4gICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgX3RoaXM1LmRlYnVnKCdVbnNoYXJwIHJlc3VsdCcpO1xuXG4gICAgdmFyIHRtcENhbnZhcyA9IF90aGlzNS5vcHRpb25zLmNyZWF0ZUNhbnZhcyhvcHRzLnRvV2lkdGgsIG9wdHMudG9IZWlnaHQpO1xuXG4gICAgdmFyIHRtcEN0eCA9IHRtcENhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIGFscGhhOiBCb29sZWFuKG9wdHMuYWxwaGEpXG4gICAgfSk7XG4gICAgdG1wQ3R4LmRyYXdJbWFnZShpbWFnZUJpdG1hcCwgMCwgMCk7XG4gICAgaW1hZ2VCaXRtYXAuY2xvc2UoKTtcbiAgICB2YXIgaURhdGEgPSB0bXBDdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIG9wdHMudG9XaWR0aCwgb3B0cy50b0hlaWdodCk7XG5cbiAgICBfdGhpczUuX19tYXRobGliLnVuc2hhcnBfbWFzayhpRGF0YS5kYXRhLCBvcHRzLnRvV2lkdGgsIG9wdHMudG9IZWlnaHQsIG9wdHMudW5zaGFycEFtb3VudCwgb3B0cy51bnNoYXJwUmFkaXVzLCBvcHRzLnVuc2hhcnBUaHJlc2hvbGQpO1xuXG4gICAgdG9DdHgucHV0SW1hZ2VEYXRhKGlEYXRhLCAwLCAwKTsgLy8gU2FmYXJpIDEyIHdvcmthcm91bmRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL3BpY2EvaXNzdWVzLzE5OVxuXG4gICAgdG1wQ2FudmFzLndpZHRoID0gdG1wQ2FudmFzLmhlaWdodCA9IDA7XG4gICAgaURhdGEgPSB0bXBDdHggPSB0bXBDYW52YXMgPSB0b0N0eCA9IG51bGw7XG5cbiAgICBfdGhpczUuZGVidWcoJ0ZpbmlzaGVkIScpO1xuXG4gICAgcmV0dXJuIHRvO1xuICB9KTtcbn07XG5cblBpY2EucHJvdG90eXBlLnJlc2l6ZSA9IGZ1bmN0aW9uIChmcm9tLCB0bywgb3B0aW9ucykge1xuICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICB0aGlzLmRlYnVnKCdTdGFydCByZXNpemUuLi4nKTtcbiAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIERFRkFVTFRfUkVTSVpFX09QVFMpO1xuXG4gIGlmICghaXNOYU4ob3B0aW9ucykpIHtcbiAgICBvcHRzID0gYXNzaWduKG9wdHMsIHtcbiAgICAgIHF1YWxpdHk6IG9wdGlvbnNcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgb3B0cyA9IGFzc2lnbihvcHRzLCBvcHRpb25zKTtcbiAgfVxuXG4gIG9wdHMudG9XaWR0aCA9IHRvLndpZHRoO1xuICBvcHRzLnRvSGVpZ2h0ID0gdG8uaGVpZ2h0O1xuICBvcHRzLndpZHRoID0gZnJvbS5uYXR1cmFsV2lkdGggfHwgZnJvbS53aWR0aDtcbiAgb3B0cy5oZWlnaHQgPSBmcm9tLm5hdHVyYWxIZWlnaHQgfHwgZnJvbS5oZWlnaHQ7IC8vIFByZXZlbnQgc3RlcHBlciBmcm9tIGluZmluaXRlIGxvb3BcblxuICBpZiAodG8ud2lkdGggPT09IDAgfHwgdG8uaGVpZ2h0ID09PSAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkludmFsaWQgb3V0cHV0IHNpemU6IFwiLmNvbmNhdCh0by53aWR0aCwgXCJ4XCIpLmNvbmNhdCh0by5oZWlnaHQpKSk7XG4gIH1cblxuICBpZiAob3B0cy51bnNoYXJwUmFkaXVzID4gMikgb3B0cy51bnNoYXJwUmFkaXVzID0gMjtcbiAgb3B0cy5jYW5jZWxlZCA9IGZhbHNlO1xuXG4gIGlmIChvcHRzLmNhbmNlbFRva2VuKSB7XG4gICAgLy8gV3JhcCBjYW5jZWxUb2tlbiB0byBhdm9pZCBzdWNjZXNzaXZlIHJlc29sdmUgJiBzZXQgZmxhZ1xuICAgIG9wdHMuY2FuY2VsVG9rZW4gPSBvcHRzLmNhbmNlbFRva2VuLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIG9wdHMuY2FuY2VsZWQgPSB0cnVlO1xuICAgICAgdGhyb3cgZGF0YTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBvcHRzLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBERVNUX1RJTEVfQk9SREVSID0gMzsgLy8gTWF4IHBvc3NpYmxlIGZpbHRlciB3aW5kb3cgc2l6ZVxuXG4gIG9wdHMuX19kZXN0VGlsZUJvcmRlciA9IE1hdGguY2VpbChNYXRoLm1heChERVNUX1RJTEVfQk9SREVSLCAyLjUgKiBvcHRzLnVuc2hhcnBSYWRpdXMgfCAwKSk7XG4gIHJldHVybiB0aGlzLmluaXQoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAob3B0cy5jYW5jZWxlZCkgcmV0dXJuIG9wdHMuY2FuY2VsVG9rZW47IC8vIGlmIGNyZWF0ZUltYWdlQml0bWFwIHN1cHBvcnRzIHJlc2l6ZSwganVzdCBkbyBpdCBhbmQgcmV0dXJuXG5cbiAgICBpZiAoX3RoaXM2LmZlYXR1cmVzLmNpYikge1xuICAgICAgcmV0dXJuIF90aGlzNi5fX3Jlc2l6ZVZpYUNyZWF0ZUltYWdlQml0bWFwKGZyb20sIHRvLCBvcHRzKTtcbiAgICB9XG5cbiAgICBpZiAoIUNBTl9VU0VfQ0FOVkFTX0dFVF9JTUFHRV9EQVRBKSB7XG4gICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdQaWNhOiBjYW5ub3QgdXNlIGdldEltYWdlRGF0YSBvbiBjYW52YXMsICcgKyBcIm1ha2Ugc3VyZSBmaW5nZXJwcmludGluZyBwcm90ZWN0aW9uIGlzbid0IGVuYWJsZWRcIik7XG4gICAgICBlcnIuY29kZSA9ICdFUlJfR0VUX0lNQUdFX0RBVEEnO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gLy9cbiAgICAvLyBObyBlYXN5IHdheSwgbGV0J3MgcmVzaXplIG1hbnVhbGx5IHZpYSBhcnJheXNcbiAgICAvL1xuXG5cbiAgICB2YXIgc3RhZ2VzID0gY3JlYXRlU3RhZ2VzKG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0LCBvcHRzLnRvV2lkdGgsIG9wdHMudG9IZWlnaHQsIF90aGlzNi5vcHRpb25zLnRpbGUsIG9wdHMuX19kZXN0VGlsZUJvcmRlcik7XG4gICAgcmV0dXJuIF90aGlzNi5fX3Byb2Nlc3NTdGFnZXMoc3RhZ2VzLCBmcm9tLCB0bywgb3B0cyk7XG4gIH0pO1xufTsgLy8gUkdCQSBidWZmZXIgcmVzaXplXG4vL1xuXG5cblBpY2EucHJvdG90eXBlLnJlc2l6ZUJ1ZmZlciA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gIHZhciBvcHRzID0gYXNzaWduKHt9LCBERUZBVUxUX1JFU0laRV9PUFRTLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRoaXMuaW5pdCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdGhpczcuX19tYXRobGliLnJlc2l6ZUFuZFVuc2hhcnAob3B0cyk7XG4gIH0pO1xufTtcblxuUGljYS5wcm90b3R5cGUudG9CbG9iID0gZnVuY3Rpb24gKGNhbnZhcywgbWltZVR5cGUsIHF1YWxpdHkpIHtcbiAgbWltZVR5cGUgPSBtaW1lVHlwZSB8fCAnaW1hZ2UvcG5nJztcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgaWYgKGNhbnZhcy50b0Jsb2IpIHtcbiAgICAgIGNhbnZhcy50b0Jsb2IoZnVuY3Rpb24gKGJsb2IpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoYmxvYik7XG4gICAgICB9LCBtaW1lVHlwZSwgcXVhbGl0eSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNhbnZhcy5jb252ZXJ0VG9CbG9iKSB7XG4gICAgICByZXNvbHZlKGNhbnZhcy5jb252ZXJ0VG9CbG9iKHtcbiAgICAgICAgdHlwZTogbWltZVR5cGUsXG4gICAgICAgIHF1YWxpdHk6IHF1YWxpdHlcbiAgICAgIH0pKTtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEZhbGxiYWNrIGZvciBvbGQgYnJvd3NlcnNcblxuXG4gICAgdmFyIGFzU3RyaW5nID0gYXRvYihjYW52YXMudG9EYXRhVVJMKG1pbWVUeXBlLCBxdWFsaXR5KS5zcGxpdCgnLCcpWzFdKTtcbiAgICB2YXIgbGVuID0gYXNTdHJpbmcubGVuZ3RoO1xuICAgIHZhciBhc0J1ZmZlciA9IG5ldyBVaW50OEFycmF5KGxlbik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhc0J1ZmZlcltpXSA9IGFzU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZShuZXcgQmxvYihbYXNCdWZmZXJdLCB7XG4gICAgICB0eXBlOiBtaW1lVHlwZVxuICAgIH0pKTtcbiAgfSk7XG59O1xuXG5QaWNhLnByb3RvdHlwZS5kZWJ1ZyA9IGZ1bmN0aW9uICgpIHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBpY2E7XG5cbn0se1wiLi9saWIvbWF0aGxpYlwiOjEsXCIuL2xpYi9wb29sXCI6MTMsXCIuL2xpYi9zdGVwcGVyXCI6MTQsXCIuL2xpYi90aWxlclwiOjE1LFwiLi9saWIvdXRpbHNcIjoxNixcIi4vbGliL3dvcmtlclwiOjE3LFwib2JqZWN0LWFzc2lnblwiOjIzLFwid2Vid29ya2lmeVwiOjI0fV19LHt9LFtdKShcIi9pbmRleC5qc1wiKVxufSk7XG59KTtcblxudmFyIGltYWdlX3RyYXZlcnNlID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGVscGVyc1xuLy9cbmZ1bmN0aW9uIGVycm9yKG1lc3NhZ2UsIGNvZGUpIHtcbiAgdmFyIGVyciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgZXJyLmNvZGUgPSBjb2RlO1xuICByZXR1cm4gZXJyO1xufVxuXG5cbi8vIENvbnZlcnQgbnVtYmVyIHRvIDB4SEggc3RyaW5nXG4vL1xuZnVuY3Rpb24gdG9faGV4KG51bWJlcikge1xuICB2YXIgbiA9IG51bWJlci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcbiAgZm9yICh2YXIgaSA9IDIgLSBuLmxlbmd0aDsgaSA+IDA7IGktLSkgbiA9ICcwJyArIG47XG4gIHJldHVybiAnMHgnICsgbjtcbn1cblxuXG5mdW5jdGlvbiB1dGY4X2VuY29kZShzdHIpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHV0ZjhfZGVjb2RlKHN0cikge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHN0cikpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbi8vIENoZWNrIGlmIGlucHV0IGlzIGEgVWludDhBcnJheVxuLy9cbmZ1bmN0aW9uIGlzX3VpbnQ4YXJyYXkoYmluKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYmluKSA9PT0gJ1tvYmplY3QgVWludDhBcnJheV0nO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFeGlmIHBhcnNlclxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46ICAgVWludDhBcnJheSAtIGpwZWcgZmlsZVxuLy8gIC0gZXhpZl9zdGFydDogTnVtYmVyICAgICAtIHN0YXJ0IG9mIFRJRkYgaGVhZGVyIChhZnRlciBFeGlmXFwwXFwwKVxuLy8gIC0gZXhpZl9lbmQ6ICAgTnVtYmVyICAgICAtIGVuZCBvZiBFeGlmIHNlZ21lbnRcbi8vICAtIG9uX2VudHJ5OiAgIE51bWJlciAgICAgLSBjYWxsYmFja1xuLy9cbmZ1bmN0aW9uIEV4aWZQYXJzZXIoanBlZ19iaW4sIGV4aWZfc3RhcnQsIGV4aWZfZW5kKSB7XG4gIC8vIFVpbnQ4QXJyYXksIGV4aWYgd2l0aG91dCBzaWduYXR1cmUgKHdoaWNoIGlzbid0IGluY2x1ZGVkIGluIG9mZnNldHMpXG4gIHRoaXMuaW5wdXQgICAgICA9IGpwZWdfYmluLnN1YmFycmF5KGV4aWZfc3RhcnQsIGV4aWZfZW5kKTtcblxuICAvLyBvZmZzZXQgY29ycmVjdGlvbiBmb3IgYG9uX2VudHJ5YCBjYWxsYmFja1xuICB0aGlzLnN0YXJ0ICAgICAgPSBleGlmX3N0YXJ0O1xuXG4gIC8vIENoZWNrIFRJRkYgaGVhZGVyIChpbmNsdWRlcyBieXRlIGFsaWdubWVudCBhbmQgZmlyc3QgSUZEIG9mZnNldClcbiAgdmFyIHNpZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgdGhpcy5pbnB1dC5zdWJhcnJheSgwLCA0KSk7XG5cbiAgaWYgKHNpZyAhPT0gJ0lJXFx4MkFcXDAnICYmIHNpZyAhPT0gJ01NXFwwXFx4MkEnKSB7XG4gICAgdGhyb3cgZXJyb3IoJ2ludmFsaWQgVElGRiBzaWduYXR1cmUnLCAnRUJBRERBVEEnKTtcbiAgfVxuXG4gIC8vIHRydWUgaWYgbW90b3JvbGEgKGJpZyBlbmRpYW4pIGJ5dGUgYWxpZ25tZW50LCBmYWxzZSBpZiBpbnRlbFxuICB0aGlzLmJpZ19lbmRpYW4gPSBzaWdbMF0gPT09ICdNJztcbn1cblxuXG5FeGlmUGFyc2VyLnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKG9uX2VudHJ5KSB7XG4gIC8vIGFsbG93IHByZW1hdHVyZSBleGl0XG4gIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuXG4gIHZhciBvZmZzZXQgPSB0aGlzLnJlYWRfdWludDMyKDQpO1xuXG4gIHRoaXMuaWZkc190b19yZWFkID0gWyB7XG4gICAgaWQ6ICAgICAwLFxuICAgIG9mZnNldDogb2Zmc2V0XG4gIH0gXTtcblxuICB3aGlsZSAodGhpcy5pZmRzX3RvX3JlYWQubGVuZ3RoID4gMCAmJiAhdGhpcy5hYm9ydGVkKSB7XG4gICAgdmFyIGkgPSB0aGlzLmlmZHNfdG9fcmVhZC5zaGlmdCgpO1xuICAgIGlmICghaS5vZmZzZXQpIGNvbnRpbnVlO1xuICAgIHRoaXMuc2Nhbl9pZmQoaS5pZCwgaS5vZmZzZXQsIG9uX2VudHJ5KTtcbiAgfVxufTtcblxuXG5FeGlmUGFyc2VyLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiAob25fZW50cnkpIHtcbiAgdmFyIGlmZHMgPSB7fTtcblxuICAvLyBtYWtlIHN1cmUgSUZEMCBhbHdheXMgZXhpc3RzXG4gIGlmZHMuaWZkMCA9IHsgaWQ6IDAsIGVudHJpZXM6IFtdIH07XG5cbiAgdGhpcy5lYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIGlmIChvbl9lbnRyeShlbnRyeSkgPT09IGZhbHNlICYmICFlbnRyeS5pc19zdWJpZmRfbGluaykgcmV0dXJuO1xuICAgIGlmIChlbnRyeS5pc19zdWJpZmRfbGluayAmJiBlbnRyeS5jb3VudCAhPT0gMSAmJiBlbnRyeS5mb3JtYXQgIT09IDQpIHJldHVybjsgLy8gZmlsdGVyIG91dCBib2d1cyBsaW5rc1xuXG4gICAgaWYgKCFpZmRzWydpZmQnICsgZW50cnkuaWZkXSkge1xuICAgICAgaWZkc1snaWZkJyArIGVudHJ5LmlmZF0gPSB7IGlkOiBlbnRyeS5pZmQsIGVudHJpZXM6IFtdIH07XG4gICAgfVxuXG4gICAgaWZkc1snaWZkJyArIGVudHJ5LmlmZF0uZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfSk7XG5cbiAgLy8gdGh1bWJuYWlscyBhcmUgbm90IHN1cHBvcnRlZCBqdXN0IHlldCwgc28gZGVsZXRlIGFsbCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGl0XG4gIGRlbGV0ZSBpZmRzLmlmZDE7XG5cbiAgLy8gQ2FsY3VsYXRlIG91dHB1dCBzaXplXG4gIHZhciBsZW5ndGggPSA4O1xuICBPYmplY3Qua2V5cyhpZmRzKS5mb3JFYWNoKGZ1bmN0aW9uIChpZmRfbm8pIHtcbiAgICBsZW5ndGggKz0gMjtcblxuICAgIGlmZHNbaWZkX25vXS5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICBsZW5ndGggKz0gMTIgKyAoZW50cnkuZGF0YV9sZW5ndGggPiA0ID8gTWF0aC5jZWlsKGVudHJ5LmRhdGFfbGVuZ3RoIC8gMikgKiAyIDogMCk7XG4gICAgfSk7XG5cbiAgICBsZW5ndGggKz0gNDtcbiAgfSk7XG5cbiAgdGhpcy5vdXRwdXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpO1xuICB0aGlzLm91dHB1dFswXSA9IHRoaXMub3V0cHV0WzFdID0gKHRoaXMuYmlnX2VuZGlhbiA/ICdNJyA6ICdJJykuY2hhckNvZGVBdCgwKTtcbiAgdGhpcy53cml0ZV91aW50MTYoMiwgMHgyQSk7XG5cbiAgdmFyIG9mZnNldCA9IDg7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy53cml0ZV91aW50MzIoNCwgb2Zmc2V0KTtcblxuICBPYmplY3Qua2V5cyhpZmRzKS5mb3JFYWNoKGZ1bmN0aW9uIChpZmRfbm8pIHtcbiAgICBpZmRzW2lmZF9ub10ud3JpdHRlbl9vZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICB2YXIgaWZkX3N0YXJ0ID0gb2Zmc2V0O1xuICAgIHZhciBpZmRfZW5kICAgPSBpZmRfc3RhcnQgKyAyICsgaWZkc1tpZmRfbm9dLmVudHJpZXMubGVuZ3RoICogMTIgKyA0O1xuICAgIG9mZnNldCA9IGlmZF9lbmQ7XG5cbiAgICBzZWxmLndyaXRlX3VpbnQxNihpZmRfc3RhcnQsIGlmZHNbaWZkX25vXS5lbnRyaWVzLmxlbmd0aCk7XG5cbiAgICBpZmRzW2lmZF9ub10uZW50cmllcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAvLyBJRkQgZW50cmllcyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgdGFnIElEc1xuICAgICAgcmV0dXJuIGEudGFnIC0gYi50YWc7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIGlkeCkge1xuICAgICAgdmFyIGVudHJ5X29mZnNldCA9IGlmZF9zdGFydCArIDIgKyBpZHggKiAxMjtcblxuICAgICAgc2VsZi53cml0ZV91aW50MTYoZW50cnlfb2Zmc2V0LCBlbnRyeS50YWcpO1xuICAgICAgc2VsZi53cml0ZV91aW50MTYoZW50cnlfb2Zmc2V0ICsgMiwgZW50cnkuZm9ybWF0KTtcbiAgICAgIHNlbGYud3JpdGVfdWludDMyKGVudHJ5X29mZnNldCArIDQsIGVudHJ5LmNvdW50KTtcblxuICAgICAgaWYgKGVudHJ5LmlzX3N1YmlmZF9saW5rKSB7XG4gICAgICAgIC8vIGZpbGxlZCBpbiBsYXRlclxuICAgICAgICBpZiAoaWZkc1snaWZkJyArIGVudHJ5LnRhZ10pIGlmZHNbJ2lmZCcgKyBlbnRyeS50YWddLmxpbmtfb2Zmc2V0ID0gZW50cnlfb2Zmc2V0ICsgODtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuZGF0YV9sZW5ndGggPD0gNCkge1xuICAgICAgICBzZWxmLm91dHB1dC5zZXQoXG4gICAgICAgICAgc2VsZi5pbnB1dC5zdWJhcnJheShlbnRyeS5kYXRhX29mZnNldCAtIHNlbGYuc3RhcnQsIGVudHJ5LmRhdGFfb2Zmc2V0IC0gc2VsZi5zdGFydCArIDQpLFxuICAgICAgICAgIGVudHJ5X29mZnNldCArIDhcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYud3JpdGVfdWludDMyKGVudHJ5X29mZnNldCArIDgsIG9mZnNldCk7XG4gICAgICAgIHNlbGYub3V0cHV0LnNldChcbiAgICAgICAgICBzZWxmLmlucHV0LnN1YmFycmF5KGVudHJ5LmRhdGFfb2Zmc2V0IC0gc2VsZi5zdGFydCwgZW50cnkuZGF0YV9vZmZzZXQgLSBzZWxmLnN0YXJ0ICsgZW50cnkuZGF0YV9sZW5ndGgpLFxuICAgICAgICAgIG9mZnNldFxuICAgICAgICApO1xuICAgICAgICBvZmZzZXQgKz0gTWF0aC5jZWlsKGVudHJ5LmRhdGFfbGVuZ3RoIC8gMikgKiAyO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIG5leHRfaWZkID0gaWZkc1snaWZkJyArIChpZmRzW2lmZF9ub10uaWQgKyAxKV07XG4gICAgaWYgKG5leHRfaWZkKSBuZXh0X2lmZC5saW5rX29mZnNldCA9IGlmZF9lbmQgLSA0O1xuICB9KTtcblxuICBPYmplY3Qua2V5cyhpZmRzKS5mb3JFYWNoKGZ1bmN0aW9uIChpZmRfbm8pIHtcbiAgICBpZiAoaWZkc1tpZmRfbm9dLndyaXR0ZW5fb2Zmc2V0ICYmIGlmZHNbaWZkX25vXS5saW5rX29mZnNldCkge1xuICAgICAgc2VsZi53cml0ZV91aW50MzIoaWZkc1tpZmRfbm9dLmxpbmtfb2Zmc2V0LCBpZmRzW2lmZF9ub10ud3JpdHRlbl9vZmZzZXQpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRoaXMub3V0cHV0Lmxlbmd0aCAhPT0gb2Zmc2V0KSB0aHJvdyBlcnJvcignaW50ZXJuYWwgZXJyb3I6IGluY29ycmVjdCBidWZmZXIgc2l6ZSBhbGxvY2F0ZWQnKTtcblxuICByZXR1cm4gdGhpcy5vdXRwdXQ7XG59O1xuXG5cbkV4aWZQYXJzZXIucHJvdG90eXBlLnJlYWRfdWludDE2ID0gZnVuY3Rpb24gKG9mZnNldCkge1xuICB2YXIgZCA9IHRoaXMuaW5wdXQ7XG4gIGlmIChvZmZzZXQgKyAyID4gZC5sZW5ndGgpIHRocm93IGVycm9yKCd1bmV4cGVjdGVkIEVPRicsICdFQkFEREFUQScpO1xuXG4gIHJldHVybiB0aGlzLmJpZ19lbmRpYW4gP1xuICAgIGRbb2Zmc2V0XSAqIDB4MTAwICsgZFtvZmZzZXQgKyAxXSA6XG4gICAgZFtvZmZzZXRdICsgZFtvZmZzZXQgKyAxXSAqIDB4MTAwO1xufTtcblxuXG5FeGlmUGFyc2VyLnByb3RvdHlwZS5yZWFkX3VpbnQzMiA9IGZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgdmFyIGQgPSB0aGlzLmlucHV0O1xuICBpZiAob2Zmc2V0ICsgNCA+IGQubGVuZ3RoKSB0aHJvdyBlcnJvcigndW5leHBlY3RlZCBFT0YnLCAnRUJBRERBVEEnKTtcblxuICByZXR1cm4gdGhpcy5iaWdfZW5kaWFuID9cbiAgICBkW29mZnNldF0gKiAweDEwMDAwMDAgKyBkW29mZnNldCArIDFdICogMHgxMDAwMCArIGRbb2Zmc2V0ICsgMl0gKiAweDEwMCArIGRbb2Zmc2V0ICsgM10gOlxuICAgIGRbb2Zmc2V0XSArIGRbb2Zmc2V0ICsgMV0gKiAweDEwMCArIGRbb2Zmc2V0ICsgMl0gKiAweDEwMDAwICsgZFtvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMDtcbn07XG5cblxuRXhpZlBhcnNlci5wcm90b3R5cGUud3JpdGVfdWludDE2ID0gZnVuY3Rpb24gKG9mZnNldCwgdmFsdWUpIHtcbiAgdmFyIGQgPSB0aGlzLm91dHB1dDtcblxuICBpZiAodGhpcy5iaWdfZW5kaWFuKSB7XG4gICAgZFtvZmZzZXRdICAgICA9ICh2YWx1ZSA+Pj4gOCkgJiAweEZGO1xuICAgIGRbb2Zmc2V0ICsgMV0gPSB2YWx1ZSAmIDB4RkY7XG4gIH0gZWxzZSB7XG4gICAgZFtvZmZzZXRdICAgICA9IHZhbHVlICYgMHhGRjtcbiAgICBkW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KSAmIDB4RkY7XG4gIH1cbn07XG5cblxuRXhpZlBhcnNlci5wcm90b3R5cGUud3JpdGVfdWludDMyID0gZnVuY3Rpb24gKG9mZnNldCwgdmFsdWUpIHtcbiAgdmFyIGQgPSB0aGlzLm91dHB1dDtcblxuICBpZiAodGhpcy5iaWdfZW5kaWFuKSB7XG4gICAgZFtvZmZzZXRdICAgICA9ICh2YWx1ZSA+Pj4gMjQpICYgMHhGRjtcbiAgICBkW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNikgJiAweEZGO1xuICAgIGRbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpICYgMHhGRjtcbiAgICBkW29mZnNldCArIDNdID0gdmFsdWUgJiAweEZGO1xuICB9IGVsc2Uge1xuICAgIGRbb2Zmc2V0XSAgICAgPSB2YWx1ZSAmIDB4RkY7XG4gICAgZFtvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweEZGO1xuICAgIGRbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KSAmIDB4RkY7XG4gICAgZFtvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpICYgMHhGRjtcbiAgfVxufTtcblxuXG5FeGlmUGFyc2VyLnByb3RvdHlwZS5pc19zdWJpZmRfbGluayA9IGZ1bmN0aW9uIChpZmQsIHRhZykge1xuICByZXR1cm4gKGlmZCA9PT0gMCAmJiB0YWcgPT09IDB4ODc2OSkgfHwgLy8gU3ViSUZEXG4gICAgICAgICAoaWZkID09PSAwICYmIHRhZyA9PT0gMHg4ODI1KSB8fCAvLyBHUFMgSW5mb1xuICAgICAgICAgKGlmZCA9PT0gMHg4NzY5ICYmIHRhZyA9PT0gMHhBMDA1KTsgLy8gSW50ZXJvcCBJRkRcbn07XG5cblxuLy8gUmV0dXJucyBieXRlIGxlbmd0aCBvZiBhIHNpbmdsZSBjb21wb25lbnQgb2YgYSBnaXZlbiBmb3JtYXRcbi8vXG5FeGlmUGFyc2VyLnByb3RvdHlwZS5leGlmX2Zvcm1hdF9sZW5ndGggPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAxOiAvLyBieXRlXG4gICAgY2FzZSAyOiAvLyBhc2NpaVxuICAgIGNhc2UgNjogLy8gc2J5dGVcbiAgICBjYXNlIDc6IC8vIHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIDE7XG5cbiAgICBjYXNlIDM6IC8vIHNob3J0XG4gICAgY2FzZSA4OiAvLyBzc2hvcnRcbiAgICAgIHJldHVybiAyO1xuXG4gICAgY2FzZSA0OiAgLy8gbG9uZ1xuICAgIGNhc2UgOTogIC8vIHNsb25nXG4gICAgY2FzZSAxMTogLy8gZmxvYXRcbiAgICAgIHJldHVybiA0O1xuXG4gICAgY2FzZSA1OiAgLy8gcmF0aW9uYWxcbiAgICBjYXNlIDEwOiAvLyBzcmF0aW9uYWxcbiAgICBjYXNlIDEyOiAvLyBkb3VibGVcbiAgICAgIHJldHVybiA4O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIHVua25vd24gdHlwZVxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cblxuLy8gUmVhZHMgRXhpZiBkYXRhXG4vL1xuRXhpZlBhcnNlci5wcm90b3R5cGUuZXhpZl9mb3JtYXRfcmVhZCA9IGZ1bmN0aW9uIChmb3JtYXQsIG9mZnNldCkge1xuICB2YXIgdjtcblxuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgMTogLy8gYnl0ZVxuICAgIGNhc2UgMjogLy8gYXNjaWlcbiAgICAgIHYgPSB0aGlzLmlucHV0W29mZnNldF07XG4gICAgICByZXR1cm4gdjtcblxuICAgIGNhc2UgNjogLy8gc2J5dGVcbiAgICAgIHYgPSB0aGlzLmlucHV0W29mZnNldF07XG4gICAgICByZXR1cm4gdiB8ICh2ICYgMHg4MCkgKiAweDFmZmZmZmU7XG5cbiAgICBjYXNlIDM6IC8vIHNob3J0XG4gICAgICB2ID0gdGhpcy5yZWFkX3VpbnQxNihvZmZzZXQpO1xuICAgICAgcmV0dXJuIHY7XG5cbiAgICBjYXNlIDg6IC8vIHNzaG9ydFxuICAgICAgdiA9IHRoaXMucmVhZF91aW50MTYob2Zmc2V0KTtcbiAgICAgIHJldHVybiB2IHwgKHYgJiAweDgwMDApICogMHgxZmZmZTtcblxuICAgIGNhc2UgNDogLy8gbG9uZ1xuICAgICAgdiA9IHRoaXMucmVhZF91aW50MzIob2Zmc2V0KTtcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSA5OiAvLyBzbG9uZ1xuICAgICAgdiA9IHRoaXMucmVhZF91aW50MzIob2Zmc2V0KTtcbiAgICAgIHJldHVybiB2IHwgMDtcblxuICAgIGNhc2UgNTogIC8vIHJhdGlvbmFsXG4gICAgY2FzZSAxMDogLy8gc3JhdGlvbmFsXG4gICAgY2FzZSAxMTogLy8gZmxvYXRcbiAgICBjYXNlIDEyOiAvLyBkb3VibGVcbiAgICAgIHJldHVybiBudWxsOyAvLyBub3QgaW1wbGVtZW50ZWRcblxuICAgIGNhc2UgNzogLy8gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gbnVsbDsgLy8gYmxvYlxuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIHVua25vd24gdHlwZVxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cblxuRXhpZlBhcnNlci5wcm90b3R5cGUuc2Nhbl9pZmQgPSBmdW5jdGlvbiAoaWZkX25vLCBvZmZzZXQsIG9uX2VudHJ5KSB7XG4gIHZhciBlbnRyeV9jb3VudCA9IHRoaXMucmVhZF91aW50MTYob2Zmc2V0KTtcblxuICBvZmZzZXQgKz0gMjtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJ5X2NvdW50OyBpKyspIHtcbiAgICB2YXIgdGFnICAgID0gdGhpcy5yZWFkX3VpbnQxNihvZmZzZXQpO1xuICAgIHZhciBmb3JtYXQgPSB0aGlzLnJlYWRfdWludDE2KG9mZnNldCArIDIpO1xuICAgIHZhciBjb3VudCAgPSB0aGlzLnJlYWRfdWludDMyKG9mZnNldCArIDQpO1xuXG4gICAgdmFyIGNvbXBfbGVuZ3RoICAgID0gdGhpcy5leGlmX2Zvcm1hdF9sZW5ndGgoZm9ybWF0KTtcbiAgICB2YXIgZGF0YV9sZW5ndGggICAgPSBjb3VudCAqIGNvbXBfbGVuZ3RoO1xuICAgIHZhciBkYXRhX29mZnNldCAgICA9IGRhdGFfbGVuZ3RoIDw9IDQgPyBvZmZzZXQgKyA4IDogdGhpcy5yZWFkX3VpbnQzMihvZmZzZXQgKyA4KTtcbiAgICB2YXIgaXNfc3ViaWZkX2xpbmsgPSBmYWxzZTtcblxuICAgIGlmIChkYXRhX29mZnNldCArIGRhdGFfbGVuZ3RoID4gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRocm93IGVycm9yKCd1bmV4cGVjdGVkIEVPRicsICdFQkFEREFUQScpO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgIHZhciBjb21wX29mZnNldCA9IGRhdGFfb2Zmc2V0O1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb3VudDsgaisrLCBjb21wX29mZnNldCArPSBjb21wX2xlbmd0aCkge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLmV4aWZfZm9ybWF0X3JlYWQoZm9ybWF0LCBjb21wX29mZnNldCk7XG4gICAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdmFsdWUucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgZm9ybWF0ID09PSAyKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWx1ZSA9IHV0ZjhfZGVjb2RlKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgdmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV0gPT09ICdcXDAnKSB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc19zdWJpZmRfbGluayhpZmRfbm8sIHRhZykpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlWzBdKSAmJiB2YWx1ZVswXSA+IDApIHtcbiAgICAgICAgdGhpcy5pZmRzX3RvX3JlYWQucHVzaCh7XG4gICAgICAgICAgaWQ6ICAgICB0YWcsXG4gICAgICAgICAgb2Zmc2V0OiB2YWx1ZVswXVxuICAgICAgICB9KTtcbiAgICAgICAgaXNfc3ViaWZkX2xpbmsgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBlbnRyeSA9IHtcbiAgICAgIGlzX2JpZ19lbmRpYW46ICB0aGlzLmJpZ19lbmRpYW4sXG4gICAgICBpZmQ6ICAgICAgICAgICAgaWZkX25vLFxuICAgICAgdGFnOiAgICAgICAgICAgIHRhZyxcbiAgICAgIGZvcm1hdDogICAgICAgICBmb3JtYXQsXG4gICAgICBjb3VudDogICAgICAgICAgY291bnQsXG4gICAgICBlbnRyeV9vZmZzZXQ6ICAgb2Zmc2V0ICsgdGhpcy5zdGFydCxcbiAgICAgIGRhdGFfbGVuZ3RoOiAgICBkYXRhX2xlbmd0aCxcbiAgICAgIGRhdGFfb2Zmc2V0OiAgICBkYXRhX29mZnNldCArIHRoaXMuc3RhcnQsXG4gICAgICB2YWx1ZTogICAgICAgICAgdmFsdWUsXG4gICAgICBpc19zdWJpZmRfbGluazogaXNfc3ViaWZkX2xpbmtcbiAgICB9O1xuXG4gICAgaWYgKG9uX2VudHJ5KGVudHJ5KSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb2Zmc2V0ICs9IDEyO1xuICB9XG5cbiAgaWYgKGlmZF9ubyA9PT0gMCkge1xuICAgIHRoaXMuaWZkc190b19yZWFkLnB1c2goe1xuICAgICAgaWQ6ICAgICAxLFxuICAgICAgb2Zmc2V0OiB0aGlzLnJlYWRfdWludDMyKG9mZnNldClcbiAgICB9KTtcbiAgfVxufTtcblxuXG4vLyBDaGVjayB3aGV0aGVyIGlucHV0IGlzIGEgSlBFRyBpbWFnZVxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46IFVpbnQ4QXJyYXkgLSBqcGVnIGZpbGVcbi8vXG4vLyBSZXR1cm5zIHRydWUgaWYgaXQgaXMgYW5kIGZhbHNlIG90aGVyd2lzZVxuLy9cbm1vZHVsZS5leHBvcnRzLmlzX2pwZWcgPSBmdW5jdGlvbiAoanBlZ19iaW4pIHtcbiAgcmV0dXJuIGpwZWdfYmluLmxlbmd0aCA+PSA0ICYmIGpwZWdfYmluWzBdID09PSAweEZGICYmIGpwZWdfYmluWzFdID09PSAweEQ4ICYmIGpwZWdfYmluWzJdID09PSAweEZGO1xufTtcblxuXG4vLyBDYWxsIGFuIGl0ZXJhdG9yIG9uIGVhY2ggc2VnbWVudCBpbiB0aGUgZ2l2ZW4gSlBFRyBpbWFnZVxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46ICAgVWludDhBcnJheSAtIGpwZWcgZmlsZVxuLy8gIC0gb25fc2VnbWVudDogRnVuY3Rpb24gLSBjYWxsYmFjayBleGVjdXRlZCBvbiBlYWNoIEpQRUcgbWFya2VyIHNlZ21lbnRcbi8vICAgIC0gc2VnbWVudDogIE9iamVjdFxuLy8gICAgICAtIGNvZGU6ICAgTnVtYmVyIC0gbWFya2VyIHR5cGUgKDJuZCBieXRlLCBlLmcuIDB4RTAgZm9yIEFQUDApXG4vLyAgICAgIC0gb2Zmc2V0OiBOdW1iZXIgLSBvZmZzZXQgb2YgdGhlIGZpcnN0IGJ5dGUgKDB4RkYpIHJlbGF0aXZlIHRvIGBqcGVnX2JpbmAgc3RhcnRcbi8vICAgICAgLSBsZW5ndGg6IE51bWJlciAtIGxlbmd0aCBvZiB0aGUgZW50aXJlIG1hcmtlciBzZWdtZW50IGluY2x1ZGluZyBmaXJzdCB0d28gYnl0ZXMgYW5kIGxlbmd0aFxuLy8gICAgICAgIC0gMiBmb3Igc3RhbmRhbG9uZSBtYXJrZXJzXG4vLyAgICAgICAgLSA0K2xlbmd0aCBmb3IgbWFya2VycyB3aXRoIGRhdGFcbi8vXG4vLyBJdGVyYXRpb24gc3RvcHMgd2hlbiBgRU9JYCAoMHhGRkQ5KSBtYXJrZXIgaXMgcmVhY2hlZCBvciBpZiBgb25fc2VnbWVudGBcbi8vIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYC5cbi8vXG5tb2R1bGUuZXhwb3J0cy5qcGVnX3NlZ21lbnRzX2VhY2ggPSBmdW5jdGlvbiAoanBlZ19iaW4sIG9uX3NlZ21lbnQpIHtcbiAgaWYgKCFpc191aW50OGFycmF5KGpwZWdfYmluKSkge1xuICAgIHRocm93IGVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IChqcGVnX2JpbiksIFVpbnQ4QXJyYXkgZXhwZWN0ZWQnLCAnRUlOVkFMJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIG9uX3NlZ21lbnQgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBlcnJvcignSW52YWxpZCBhcmd1bWVudCAob25fc2VnbWVudCksIEZ1bmN0aW9uIGV4cGVjdGVkJywgJ0VJTlZBTCcpO1xuICB9XG5cbiAgaWYgKCFtb2R1bGUuZXhwb3J0cy5pc19qcGVnKGpwZWdfYmluKSkge1xuICAgIHRocm93IGVycm9yKCdVbmtub3duIGZpbGUgZm9ybWF0JywgJ0VOT1RKUEVHJyk7XG4gIH1cblxuICB2YXIgb2Zmc2V0ID0gMCwgbGVuZ3RoID0ganBlZ19iaW4ubGVuZ3RoLCBpbnNpZGVfc2NhbiA9IGZhbHNlO1xuXG4gIGZvciAoOzspIHtcbiAgICB2YXIgc2VnbWVudF9jb2RlLCBzZWdtZW50X2xlbmd0aDtcblxuICAgIGlmIChvZmZzZXQgKyAxID49IGxlbmd0aCkgdGhyb3cgZXJyb3IoJ1VuZXhwZWN0ZWQgRU9GJywgJ0VCQUREQVRBJyk7XG4gICAgdmFyIGJ5dGUxID0ganBlZ19iaW5bb2Zmc2V0XTtcbiAgICB2YXIgYnl0ZTIgPSBqcGVnX2JpbltvZmZzZXQgKyAxXTtcblxuICAgIGlmIChieXRlMSA9PT0gMHhGRiAmJiBieXRlMiA9PT0gMHhGRikge1xuICAgICAgLy8gcGFkZGluZ1xuICAgICAgc2VnbWVudF9jb2RlID0gMHhGRjtcbiAgICAgIHNlZ21lbnRfbGVuZ3RoID0gMTtcblxuICAgIH0gZWxzZSBpZiAoYnl0ZTEgPT09IDB4RkYgJiYgYnl0ZTIgIT09IDApIHtcbiAgICAgIC8vIG1hcmtlclxuICAgICAgc2VnbWVudF9jb2RlID0gYnl0ZTI7XG4gICAgICBzZWdtZW50X2xlbmd0aCA9IDI7XG5cbiAgICAgIGlmICgoMHhEMCA8PSBzZWdtZW50X2NvZGUgJiYgc2VnbWVudF9jb2RlIDw9IDB4RDkpIHx8IHNlZ21lbnRfY29kZSA9PT0gMHgwMSkgOyBlbHNlIHtcbiAgICAgICAgaWYgKG9mZnNldCArIDMgPj0gbGVuZ3RoKSB0aHJvdyBlcnJvcignVW5leHBlY3RlZCBFT0YnLCAnRUJBRERBVEEnKTtcbiAgICAgICAgc2VnbWVudF9sZW5ndGggKz0ganBlZ19iaW5bb2Zmc2V0ICsgMl0gKiAweDEwMCArIGpwZWdfYmluW29mZnNldCArIDNdO1xuICAgICAgICBpZiAoc2VnbWVudF9sZW5ndGggPCAyKSB0aHJvdyBlcnJvcignSW52YWxpZCBzZWdtZW50IGxlbmd0aCcsICdFQkFEREFUQScpO1xuICAgICAgICBpZiAob2Zmc2V0ICsgc2VnbWVudF9sZW5ndGggLSAxID49IGxlbmd0aCkgdGhyb3cgZXJyb3IoJ1VuZXhwZWN0ZWQgRU9GJywgJ0VCQUREQVRBJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnNpZGVfc2Nhbikge1xuICAgICAgICBpZiAoc2VnbWVudF9jb2RlID49IDB4RDAgJiYgc2VnbWVudF9jb2RlIDw9IDB4RDcpIDsgZWxzZSB7XG4gICAgICAgICAgaW5zaWRlX3NjYW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudF9jb2RlID09PSAweERBIC8qIFNPUyAqLykgaW5zaWRlX3NjYW4gPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaW5zaWRlX3NjYW4pIHtcbiAgICAgIC8vIGVudHJvcHktZW5jb2RlZCBzZWdtZW50XG4gICAgICBmb3IgKHZhciBwb3MgPSBvZmZzZXQgKyAxOyA7IHBvcysrKSB7XG4gICAgICAgIC8vIHNjYW4gdW50aWwgd2UgZmluZCBGRlxuICAgICAgICBpZiAocG9zID49IGxlbmd0aCkgdGhyb3cgZXJyb3IoJ1VuZXhwZWN0ZWQgRU9GJywgJ0VCQUREQVRBJyk7XG4gICAgICAgIGlmIChqcGVnX2Jpbltwb3NdID09PSAweEZGKSB7XG4gICAgICAgICAgaWYgKHBvcyArIDEgPj0gbGVuZ3RoKSB0aHJvdyBlcnJvcignVW5leHBlY3RlZCBFT0YnLCAnRUJBRERBVEEnKTtcbiAgICAgICAgICBpZiAoanBlZ19iaW5bcG9zICsgMV0gIT09IDApIHtcbiAgICAgICAgICAgIHNlZ21lbnRfY29kZSA9IDA7XG4gICAgICAgICAgICBzZWdtZW50X2xlbmd0aCA9IHBvcyAtIG9mZnNldDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcignVW5leHBlY3RlZCBieXRlIGF0IHNlZ21lbnQgc3RhcnQ6ICcgKyB0b19oZXgoYnl0ZTEpICtcbiAgICAgICAgJyAob2Zmc2V0ICcgKyB0b19oZXgob2Zmc2V0KSArICcpJywgJ0VCQUREQVRBJyk7XG4gICAgfVxuXG4gICAgaWYgKG9uX3NlZ21lbnQoeyBjb2RlOiBzZWdtZW50X2NvZGUsIG9mZnNldDogb2Zmc2V0LCBsZW5ndGg6IHNlZ21lbnRfbGVuZ3RoIH0pID09PSBmYWxzZSkgYnJlYWs7XG4gICAgaWYgKHNlZ21lbnRfY29kZSA9PT0gMHhEOSAvKiBFT0kgKi8pIGJyZWFrO1xuICAgIG9mZnNldCArPSBzZWdtZW50X2xlbmd0aDtcbiAgfVxufTtcblxuXG4vLyBSZXBsYWNlIG9yIHJlbW92ZSBzZWdtZW50cyBpbiB0aGUgZ2l2ZW4gSlBFRyBpbWFnZVxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46ICAgVWludDhBcnJheSAtIGpwZWcgZmlsZVxuLy8gIC0gb25fc2VnbWVudDogRnVuY3Rpb24gLSBjYWxsYmFjayBleGVjdXRlZCBvbiBlYWNoIEpQRUcgbWFya2VyIHNlZ21lbnRcbi8vICAgIC0gc2VnbWVudDogIE9iamVjdFxuLy8gICAgICAtIGNvZGU6ICAgTnVtYmVyIC0gbWFya2VyIHR5cGUgKDJuZCBieXRlLCBlLmcuIDB4RTAgZm9yIEFQUDApXG4vLyAgICAgIC0gb2Zmc2V0OiBOdW1iZXIgLSBvZmZzZXQgb2YgdGhlIGZpcnN0IGJ5dGUgKDB4RkYpIHJlbGF0aXZlIHRvIGBqcGVnX2JpbmAgc3RhcnRcbi8vICAgICAgLSBsZW5ndGg6IE51bWJlciAtIGxlbmd0aCBvZiB0aGUgZW50aXJlIG1hcmtlciBzZWdtZW50IGluY2x1ZGluZyBmaXJzdCB0d28gYnl0ZXMgYW5kIGxlbmd0aFxuLy8gICAgICAgIC0gMiBmb3Igc3RhbmRhbG9uZSBtYXJrZXJzXG4vLyAgICAgICAgLSA0K2xlbmd0aCBmb3IgbWFya2VycyB3aXRoIGRhdGFcbi8vXG4vLyBgb25fc2VnbWVudGAgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbi8vICAtIGBmYWxzZWAgICAgICAgIC0gc2VnbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIG91dHB1dFxuLy8gIC0gVWludDhBcnJheSAgICAgLSBzZWdtZW50IGlzIHJlcGxhY2VkIHdpdGggdGhlIG5ldyBkYXRhXG4vLyAgLSBbIFVpbnQ4QXJyYXkgXSAtIHNlZ21lbnQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgbmV3IGRhdGFcbi8vICAtIGFueXRoaW5nIGVsc2UgIC0gc2VnbWVudCBpcyBjb3BpZWQgdG8gdGhlIG91dHB1dCBhcyBpc1xuLy9cbi8vIEFueSBkYXRhIGFmdGVyIGBFT0lgICgweEZGRDkpIG1hcmtlciBpcyByZW1vdmVkLlxuLy9cbm1vZHVsZS5leHBvcnRzLmpwZWdfc2VnbWVudHNfZmlsdGVyID0gZnVuY3Rpb24gKGpwZWdfYmluLCBvbl9zZWdtZW50KSB7XG4gIGlmICghaXNfdWludDhhcnJheShqcGVnX2JpbikpIHtcbiAgICB0aHJvdyBlcnJvcignSW52YWxpZCBhcmd1bWVudCAoanBlZ19iaW4pLCBVaW50OEFycmF5IGV4cGVjdGVkJywgJ0VJTlZBTCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvbl9zZWdtZW50ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgZXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgKG9uX3NlZ21lbnQpLCBGdW5jdGlvbiBleHBlY3RlZCcsICdFSU5WQUwnKTtcbiAgfVxuXG4gIHZhciByYW5nZXMgPSBbXTtcbiAgdmFyIG91dF9sZW5ndGggPSAwO1xuXG4gIG1vZHVsZS5leHBvcnRzLmpwZWdfc2VnbWVudHNfZWFjaChqcGVnX2JpbiwgZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgICB2YXIgbmV3X3NlZ21lbnQgPSBvbl9zZWdtZW50KHNlZ21lbnQpO1xuXG4gICAgaWYgKGlzX3VpbnQ4YXJyYXkobmV3X3NlZ21lbnQpKSB7XG4gICAgICByYW5nZXMucHVzaCh7IGRhdGE6IG5ld19zZWdtZW50IH0pO1xuICAgICAgb3V0X2xlbmd0aCArPSBuZXdfc2VnbWVudC5sZW5ndGg7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5ld19zZWdtZW50KSkge1xuICAgICAgbmV3X3NlZ21lbnQuZmlsdGVyKGlzX3VpbnQ4YXJyYXkpLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmFuZ2VzLnB1c2goeyBkYXRhOiBzIH0pO1xuICAgICAgICBvdXRfbGVuZ3RoICs9IHMubGVuZ3RoO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChuZXdfc2VnbWVudCAhPT0gZmFsc2UpIHtcbiAgICAgIHZhciBuZXdfcmFuZ2UgPSB7IHN0YXJ0OiBzZWdtZW50Lm9mZnNldCwgZW5kOiBzZWdtZW50Lm9mZnNldCArIHNlZ21lbnQubGVuZ3RoIH07XG5cbiAgICAgIGlmIChyYW5nZXMubGVuZ3RoID4gMCAmJiByYW5nZXNbcmFuZ2VzLmxlbmd0aCAtIDFdLmVuZCA9PT0gbmV3X3JhbmdlLnN0YXJ0KSB7XG4gICAgICAgIHJhbmdlc1tyYW5nZXMubGVuZ3RoIC0gMV0uZW5kID0gbmV3X3JhbmdlLmVuZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlcy5wdXNoKG5ld19yYW5nZSk7XG4gICAgICB9XG5cbiAgICAgIG91dF9sZW5ndGggKz0gc2VnbWVudC5sZW5ndGg7XG4gICAgfVxuICB9KTtcblxuICB2YXIgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkob3V0X2xlbmd0aCk7XG4gIHZhciBvZmZzZXQgPSAwO1xuXG4gIHJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgIHZhciBkYXRhID0gcmFuZ2UuZGF0YSB8fCBqcGVnX2Jpbi5zdWJhcnJheShyYW5nZS5zdGFydCwgcmFuZ2UuZW5kKTtcbiAgICByZXN1bHQuc2V0KGRhdGEsIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IGRhdGEubGVuZ3RoO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vLyBDYWxsIGFuIGl0ZXJhdG9yIG9uIGVhY2ggRXhpZiBlbnRyeSBpbiB0aGUgZ2l2ZW4gSlBFRyBpbWFnZVxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46IFVpbnQ4QXJyYXkgLSBqcGVnIGZpbGVcbi8vICAtIG9uX2VudHJ5OiBGdW5jdGlvbiAtIGNhbGxiYWNrIGV4ZWN1dGVkIG9uIGVhY2ggRXhpZiBlbnRyeVxuLy8gICAgLSBlbnRyeTogIE9iamVjdFxuLy8gICAgICAtIGlzX2JpZ19lbmRpYW46ICBCb29sZWFuIC0gd2hldGhlciBFeGlmIHVzZXMgYmlnIG9yIGxpdHRsZSBlbmRpYW4gYnl0ZSBhbGlnbm1lbnRcbi8vICAgICAgLSBpZmQ6ICAgICAgICAgICAgTnVtYmVyICAtIElGRCBpZGVudGlmaWVyICgwIGZvciBJRkQwLCAxIGZvciBJRkQxLCAweDg3NjkgZm9yIFN1YklGRCxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI1IGZvciBHUFMgSW5mbywgMHhBMDA1IGZvciBJbnRlcm9wIElGRClcbi8vICAgICAgLSB0YWc6ICAgICAgICAgICAgTnVtYmVyICAtIGV4aWYgZW50cnkgdGFnICgweDAxMTAgLSBjYW1lcmEgbmFtZSwgMHgwMTEyIC0gb3JpZW50YXRpb24sIGV0Yy4gLSBzZWUgRXhpZiBzcGVjKVxuLy8gICAgICAtIGZvcm1hdDogICAgICAgICBOdW1iZXIgIC0gZXhpZiBlbnRyeSBmb3JtYXQgKDEgLSBieXRlLCAyIC0gYXNjaWksIDMgLSBzaG9ydCwgZXRjLiAtIHNlZSBFeGlmIHNwZWMpXG4vLyAgICAgIC0gY291bnQ6ICAgICAgICAgIE51bWJlciAgLSBudW1iZXIgb2YgY29tcG9uZW50cyBvZiB0aGUgZ2l2ZW4gZm9ybWF0IGluc2lkZSBkYXRhXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c3VhbGx5IDEsIG9yIHN0cmluZyBsZW5ndGggZm9yIGFzY2lpIGZvcm1hdClcbi8vICAgICAgLSBlbnRyeV9vZmZzZXQ6ICAgTnVtYmVyICAtIHN0YXJ0IG9mIEV4aWYgZW50cnkgKGVudHJ5IGxlbmd0aCBpcyBhbHdheXMgMTIsIHNvIG5vdCBpbmNsdWRlZClcbi8vICAgICAgLSBkYXRhX29mZnNldDogICAgTnVtYmVyICAtIHN0YXJ0IG9mIGRhdGEgYXR0YWNoZWQgdG8gRXhpZiBlbnRyeSAod2lsbCBvdmVybGFwIHdpdGggZW50cnkgaWYgbGVuZ3RoIDw9IDQpXG4vLyAgICAgIC0gZGF0YV9sZW5ndGg6ICAgIE51bWJlciAgLSBsZW5ndGggb2YgZGF0YSBhdHRhY2hlZCB0byBFeGlmIGVudHJ5XG4vLyAgICAgIC0gdmFsdWU6ICAgICAgICAgIEFycmF5fFN0cmluZ3xOdWxsIC0gb3VyIGJlc3QgYXR0ZW1wdCBhdCBwYXJzaW5nIGRhdGEgKG5vdCBhbGwgZm9ybWF0cyBzdXBwb3J0ZWQgcmlnaHQgbm93KVxuLy8gICAgICAtIGlzX3N1YmlmZF9saW5rOiBCb29sZWFuIC0gd2hldGhlciB0aGlzIGVudHJ5IGlzIHJlY29nbml6ZWQgdG8gYmUgYSBsaW5rIHRvIHN1YmlmZCAoY2FuJ3QgZmlsdGVyIHRoZXNlIG91dClcbi8vXG4vLyBJdGVyYXRpb24gc3RvcHMgZWFybHkgaWYgaXRlcmF0b3IgcmV0dXJucyBgZmFsc2VgLlxuLy9cbi8vIElmIEV4aWYgd2Fzbid0IGZvdW5kIGFueXdoZXJlIChiZWZvcmUgc3RhcnQgb2YgdGhlIGltYWdlIGRhdGEsIFNPUyksXG4vLyBpdGVyYXRvciBpcyBuZXZlciBleGVjdXRlZC5cbi8vXG5tb2R1bGUuZXhwb3J0cy5qcGVnX2V4aWZfdGFnc19lYWNoID0gZnVuY3Rpb24gKGpwZWdfYmluLCBvbl9leGlmX2VudHJ5KSB7XG4gIGlmICghaXNfdWludDhhcnJheShqcGVnX2JpbikpIHtcbiAgICB0aHJvdyBlcnJvcignSW52YWxpZCBhcmd1bWVudCAoanBlZ19iaW4pLCBVaW50OEFycmF5IGV4cGVjdGVkJywgJ0VJTlZBTCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvbl9leGlmX2VudHJ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgZXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgKG9uX2V4aWZfZW50cnkpLCBGdW5jdGlvbiBleHBlY3RlZCcsICdFSU5WQUwnKTtcbiAgfVxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNvbnNpc3RlbnQtcmV0dXJuICovXG4gIG1vZHVsZS5leHBvcnRzLmpwZWdfc2VnbWVudHNfZWFjaChqcGVnX2JpbiwgZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgICBpZiAoc2VnbWVudC5jb2RlID09PSAweERBIC8qIFNPUyAqLykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gbG9vayBmb3IgQVBQMSBzZWdtZW50IGFuZCBjb21wYXJlIGhlYWRlciB3aXRoICdFeGlmXFwwXFwwJ1xuICAgIGlmIChzZWdtZW50LmNvZGUgPT09IDB4RTEgJiYgc2VnbWVudC5sZW5ndGggPj0gMTAgJiZcbiAgICAgICAganBlZ19iaW5bc2VnbWVudC5vZmZzZXQgKyA0XSA9PT0gMHg0NSAmJiBqcGVnX2JpbltzZWdtZW50Lm9mZnNldCArIDVdID09PSAweDc4ICYmXG4gICAgICAgIGpwZWdfYmluW3NlZ21lbnQub2Zmc2V0ICsgNl0gPT09IDB4NjkgJiYganBlZ19iaW5bc2VnbWVudC5vZmZzZXQgKyA3XSA9PT0gMHg2NiAmJlxuICAgICAgICBqcGVnX2JpbltzZWdtZW50Lm9mZnNldCArIDhdID09PSAweDAwICYmIGpwZWdfYmluW3NlZ21lbnQub2Zmc2V0ICsgOV0gPT09IDB4MDApIHtcblxuICAgICAgbmV3IEV4aWZQYXJzZXIoanBlZ19iaW4sIHNlZ21lbnQub2Zmc2V0ICsgMTAsIHNlZ21lbnQub2Zmc2V0ICsgc2VnbWVudC5sZW5ndGgpLmVhY2gob25fZXhpZl9lbnRyeSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn07XG5cblxuLy8gUmVtb3ZlIEV4aWYgZW50cmllcyBpbiB0aGUgZ2l2ZW4gSlBFRyBpbWFnZVxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46IFVpbnQ4QXJyYXkgLSBqcGVnIGZpbGVcbi8vICAtIG9uX2VudHJ5OiBGdW5jdGlvbiAtIGNhbGxiYWNrIGV4ZWN1dGVkIG9uIGVhY2ggRXhpZiBlbnRyeVxuLy8gICAgLSBlbnRyeTogIE9iamVjdFxuLy8gICAgICAtIGlzX2JpZ19lbmRpYW46ICBCb29sZWFuIC0gd2hldGhlciBFeGlmIHVzZXMgYmlnIG9yIGxpdHRsZSBlbmRpYW4gYnl0ZSBhbGlnbm1lbnRcbi8vICAgICAgLSBpZmQ6ICAgICAgICAgICAgTnVtYmVyICAtIElGRCBpZGVudGlmaWVyICgwIGZvciBJRkQwLCAxIGZvciBJRkQxLCAweDg3NjkgZm9yIFN1YklGRCxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNSBmb3IgR1BTIEluZm8sIDB4QTAwNSBmb3IgSW50ZXJvcCBJRkQpXG4vLyAgICAgIC0gdGFnOiAgICAgICAgICAgIE51bWJlciAgLSBleGlmIGVudHJ5IHRhZyAoMHgwMTEwIC0gY2FtZXJhIG5hbWUsIDB4MDExMiAtIG9yaWVudGF0aW9uLCBldGMuIC0gc2VlIEV4aWYgc3BlYylcbi8vICAgICAgLSBmb3JtYXQ6ICAgICAgICAgTnVtYmVyICAtIGV4aWYgZW50cnkgZm9ybWF0ICgxIC0gYnl0ZSwgMiAtIGFzY2lpLCAzIC0gc2hvcnQsIGV0Yy4gLSBzZWUgRXhpZiBzcGVjKVxuLy8gICAgICAtIGNvdW50OiAgICAgICAgICBOdW1iZXIgIC0gbnVtYmVyIG9mIGNvbXBvbmVudHMgb2YgdGhlIGdpdmVuIGZvcm1hdCBpbnNpZGUgZGF0YVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzdWFsbHkgMSwgb3Igc3RyaW5nIGxlbmd0aCBmb3IgYXNjaWkgZm9ybWF0KVxuLy8gICAgICAtIGVudHJ5X29mZnNldDogICBOdW1iZXIgIC0gc3RhcnQgb2YgRXhpZiBlbnRyeSAoZW50cnkgbGVuZ3RoIGlzIGFsd2F5cyAxMiwgc28gbm90IGluY2x1ZGVkKVxuLy8gICAgICAtIGRhdGFfb2Zmc2V0OiAgICBOdW1iZXIgIC0gc3RhcnQgb2YgZGF0YSBhdHRhY2hlZCB0byBFeGlmIGVudHJ5ICh3aWxsIG92ZXJsYXAgd2l0aCBlbnRyeSBpZiBsZW5ndGggPD0gNClcbi8vICAgICAgLSBkYXRhX2xlbmd0aDogICAgTnVtYmVyICAtIGxlbmd0aCBvZiBkYXRhIGF0dGFjaGVkIHRvIEV4aWYgZW50cnlcbi8vICAgICAgLSB2YWx1ZTogICAgICAgICAgQXJyYXl8U3RyaW5nfE51bGwgLSBvdXIgYmVzdCBhdHRlbXB0IGF0IHBhcnNpbmcgZGF0YSAobm90IGFsbCBmb3JtYXRzIHN1cHBvcnRlZCByaWdodCBub3cpXG4vLyAgICAgIC0gaXNfc3ViaWZkX2xpbms6IEJvb2xlYW4gLSB3aGV0aGVyIHRoaXMgZW50cnkgaXMgcmVjb2duaXplZCB0byBiZSBhIGxpbmsgdG8gc3ViaWZkIChjYW4ndCBmaWx0ZXIgdGhlc2Ugb3V0KVxuLy9cbi8vIFRoaXMgZnVuY3Rpb24gcmVtb3ZlcyBmb2xsb3dpbmcgZnJvbSBFeGlmOlxuLy8gIC0gYWxsIGVudHJpZXMgd2hlcmUgaXRlcmF0b3IgcmV0dXJuZWQgZmFsc2UgKGV4Y2VwdCBzdWJpZmQgbGlua3Mgd2hpY2ggYXJlIG1hbmRhdG9yeSlcbi8vICAtIElGRDEgYW5kIHRodW1ibmFpbCBpbWFnZSAodGhlIHB1cnBvc2Ugb2YgdGhpcyBmdW5jdGlvbiBpcyB0byByZWR1Y2UgZmlsZSBzaXplLFxuLy8gICAgc28gdGh1bWJuYWlsIGlzIHVzdWFsbHkgdGhlIGZpcnN0IHRoaW5nIHRvIGdvKVxuLy8gIC0gYWxsIG90aGVyIGRhdGEgdGhhdCBpc24ndCBpbiBJRkQwLCBTdWJJRkQsIEdQU0lGRCwgSW50ZXJvcElGRFxuLy8gICAgKHRoZW9yZXRpY2FsbHkgcG9zc2libGUgcHJvcHJpZXRhcnkgZXh0ZW5zaW9ucywgSSBoYXZlbid0IHNlZW4gYW55IG9mIHRoZXNlIHlldClcbi8vXG4vLyBDaGFuZ2luZyBkYXRhIGluc2lkZSBFeGlmIGVudHJpZXMgaXMgTk9UIHN1cHBvcnRlZCB5ZXQgKG1vZGlmeWluZyBgZW50cnlgIG9iamVjdCBpbnNpZGUgY2FsbGJhY2sgbWF5IGJyZWFrIHN0dWZmKS5cbi8vXG4vLyBJZiBFeGlmIHdhc24ndCBmb3VuZCBhbnl3aGVyZSAoYmVmb3JlIHN0YXJ0IG9mIHRoZSBpbWFnZSBkYXRhLCBTT1MpLFxuLy8gaXRlcmF0b3IgaXMgbmV2ZXIgZXhlY3V0ZWQsIGFuZCBvcmlnaW5hbCBKUEVHIGlzIHJldHVybmVkIGFzIGlzLlxuLy9cbm1vZHVsZS5leHBvcnRzLmpwZWdfZXhpZl90YWdzX2ZpbHRlciA9IGZ1bmN0aW9uIChqcGVnX2Jpbiwgb25fZXhpZl9lbnRyeSkge1xuICBpZiAoIWlzX3VpbnQ4YXJyYXkoanBlZ19iaW4pKSB7XG4gICAgdGhyb3cgZXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgKGpwZWdfYmluKSwgVWludDhBcnJheSBleHBlY3RlZCcsICdFSU5WQUwnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb25fZXhpZl9lbnRyeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IGVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IChvbl9leGlmX2VudHJ5KSwgRnVuY3Rpb24gZXhwZWN0ZWQnLCAnRUlOVkFMJyk7XG4gIH1cblxuICB2YXIgc3RvcF9zZWFyY2ggPSBmYWxzZTtcblxuICByZXR1cm4gbW9kdWxlLmV4cG9ydHMuanBlZ19zZWdtZW50c19maWx0ZXIoanBlZ19iaW4sIGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgaWYgKHN0b3Bfc2VhcmNoKSByZXR1cm47XG4gICAgaWYgKHNlZ21lbnQuY29kZSA9PT0gMHhEQSAvKiBTT1MgKi8pIHN0b3Bfc2VhcmNoID0gdHJ1ZTtcblxuICAgIC8vIGxvb2sgZm9yIEFQUDEgc2VnbWVudCBhbmQgY29tcGFyZSBoZWFkZXIgd2l0aCAnRXhpZlxcMFxcMCdcbiAgICBpZiAoc2VnbWVudC5jb2RlID09PSAweEUxICYmIHNlZ21lbnQubGVuZ3RoID49IDEwICYmXG4gICAgICAgIGpwZWdfYmluW3NlZ21lbnQub2Zmc2V0ICsgNF0gPT09IDB4NDUgJiYganBlZ19iaW5bc2VnbWVudC5vZmZzZXQgKyA1XSA9PT0gMHg3OCAmJlxuICAgICAgICBqcGVnX2JpbltzZWdtZW50Lm9mZnNldCArIDZdID09PSAweDY5ICYmIGpwZWdfYmluW3NlZ21lbnQub2Zmc2V0ICsgN10gPT09IDB4NjYgJiZcbiAgICAgICAganBlZ19iaW5bc2VnbWVudC5vZmZzZXQgKyA4XSA9PT0gMHgwMCAmJiBqcGVnX2JpbltzZWdtZW50Lm9mZnNldCArIDldID09PSAweDAwKSB7XG5cbiAgICAgIHZhciBuZXdfZXhpZiA9IG5ldyBFeGlmUGFyc2VyKGpwZWdfYmluLCBzZWdtZW50Lm9mZnNldCArIDEwLCBzZWdtZW50Lm9mZnNldCArIHNlZ21lbnQubGVuZ3RoKVxuICAgICAgICAuZmlsdGVyKG9uX2V4aWZfZW50cnkpO1xuICAgICAgaWYgKCFuZXdfZXhpZikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoMTApO1xuXG4gICAgICBoZWFkZXIuc2V0KGpwZWdfYmluLnNsaWNlKHNlZ21lbnQub2Zmc2V0LCBzZWdtZW50Lm9mZnNldCArIDEwKSk7XG4gICAgICBoZWFkZXJbMl0gPSAoKG5ld19leGlmLmxlbmd0aCArIDgpID4+PiA4KSAmIDB4RkY7XG4gICAgICBoZWFkZXJbM10gPSAobmV3X2V4aWYubGVuZ3RoICsgOCkgJiAweEZGO1xuXG4gICAgICBzdG9wX3NlYXJjaCA9IHRydWU7XG4gICAgICByZXR1cm4gWyBoZWFkZXIsIG5ld19leGlmIF07XG4gICAgfVxuICB9KTtcbn07XG5cblxuLy8gSW5zZXJ0cyBhIGN1c3RvbSBjb21tZW50IG1hcmtlciBzZWdtZW50IGludG8gSlBFRyBmaWxlLlxuLy9cbi8vIElucHV0OlxuLy8gIC0ganBlZ19iaW46IFVpbnQ4QXJyYXkgLSBqcGVnIGZpbGVcbi8vICAtIGNvbW1lbnQ6ICBTdHJpbmdcbi8vXG4vLyBDb21tZW50IGlzIGluc2VydGVkIGFmdGVyIGZpcnN0IHR3byBieXRlcyAoRkZEOCwgU09JKS5cbi8vXG4vLyBJZiBKRklGIChBUFAwKSBtYXJrZXIgZXhpc3RzIGltbWVkaWF0ZWx5IGFmdGVyIFNPSSAoYXMgbWFuZGF0ZWQgYnkgdGhlIEpGSUZcbi8vIHNwZWMpLCB3ZSBpbnNlcnQgY29tbWVudCBhZnRlciBpdCBpbnN0ZWFkLlxuLy9cbm1vZHVsZS5leHBvcnRzLmpwZWdfYWRkX2NvbW1lbnQgPSBmdW5jdGlvbiAoanBlZ19iaW4sIGNvbW1lbnQpIHtcbiAgdmFyIGNvbW1lbnRfaW5zZXJ0ZWQgPSBmYWxzZSwgc2VnbWVudF9jb3VudCA9IDA7XG5cbiAgcmV0dXJuIG1vZHVsZS5leHBvcnRzLmpwZWdfc2VnbWVudHNfZmlsdGVyKGpwZWdfYmluLCBmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgIHNlZ21lbnRfY291bnQrKztcbiAgICBpZiAoc2VnbWVudF9jb3VudCA9PT0gMSAmJiBzZWdtZW50LmNvZGUgPT09IDB4RDggLyogU09JICAqLykgcmV0dXJuO1xuICAgIGlmIChzZWdtZW50X2NvdW50ID09PSAyICYmIHNlZ21lbnQuY29kZSA9PT0gMHhFMCAvKiBBUFAwICovKSByZXR1cm47XG5cbiAgICBpZiAoY29tbWVudF9pbnNlcnRlZCkgcmV0dXJuO1xuICAgIGNvbW1lbnQgPSB1dGY4X2VuY29kZShjb21tZW50KTtcblxuICAgIC8vIGNvbW1lbnQgc2VnbWVudFxuICAgIHZhciBjc2VnbWVudCA9IG5ldyBVaW50OEFycmF5KDUgKyBjb21tZW50Lmxlbmd0aCk7XG4gICAgdmFyIG9mZnNldCA9IDA7XG5cbiAgICBjc2VnbWVudFtvZmZzZXQrK10gPSAweEZGO1xuICAgIGNzZWdtZW50W29mZnNldCsrXSA9IDB4RkU7XG4gICAgY3NlZ21lbnRbb2Zmc2V0KytdID0gKChjb21tZW50Lmxlbmd0aCArIDMpID4+PiA4KSAmIDB4RkY7XG4gICAgY3NlZ21lbnRbb2Zmc2V0KytdID0gKGNvbW1lbnQubGVuZ3RoICsgMykgJiAweEZGO1xuXG4gICAgY29tbWVudC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoYykge1xuICAgICAgY3NlZ21lbnRbb2Zmc2V0KytdID0gYy5jaGFyQ29kZUF0KDApICYgMHhGRjtcbiAgICB9KTtcblxuICAgIGNzZWdtZW50W29mZnNldCsrXSA9IDA7XG4gICAgY29tbWVudF9pbnNlcnRlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gWyBjc2VnbWVudCwganBlZ19iaW4uc3ViYXJyYXkoc2VnbWVudC5vZmZzZXQsIHNlZ21lbnQub2Zmc2V0ICsgc2VnbWVudC5sZW5ndGgpIF07XG4gIH0pO1xufTtcbn0pO1xuXG5mdW5jdGlvbiBqcGVnX3BhdGNoX2V4aWYoZW52KSB7XG4gIHJldHVybiB0aGlzLl9nZXRVaW50OEFycmF5KGVudi5ibG9iKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZW52LmlzX2pwZWcgPSBpbWFnZV90cmF2ZXJzZS5pc19qcGVnKGRhdGEpO1xuXG4gICAgaWYgKCFlbnYuaXNfanBlZykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnYpO1xuXG4gICAgZW52Lm9yaWdfYmxvYiA9IGVudi5ibG9iO1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciBleGlmX2lzX2JpZ19lbmRpYW4sIG9yaWVudGF0aW9uX29mZnNldDtcblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgY29uc2lzdGVudC1yZXR1cm4gKi9cbiAgICAgIGltYWdlX3RyYXZlcnNlLmpwZWdfZXhpZl90YWdzX2VhY2goZGF0YSwgZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIGlmIChlbnRyeS5pZmQgPT09IDAgJiYgZW50cnkudGFnID09PSAweDExMiAmJiBBcnJheS5pc0FycmF5KGVudHJ5LnZhbHVlKSkge1xuICAgICAgICAgIGVudi5vcmllbnRhdGlvbiAgICA9IGVudHJ5LnZhbHVlWzBdIHx8IDE7XG4gICAgICAgICAgZXhpZl9pc19iaWdfZW5kaWFuID0gZW50cnkuaXNfYmlnX2VuZGlhbjtcbiAgICAgICAgICBvcmllbnRhdGlvbl9vZmZzZXQgPSBlbnRyeS5kYXRhX29mZnNldDtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3JpZW50YXRpb25fb2Zmc2V0KSB7XG4gICAgICAgIHZhciBvcmllbnRhdGlvbl9wYXRjaCA9IGV4aWZfaXNfYmlnX2VuZGlhbiA/XG4gICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoWyAwLCAxIF0pIDpcbiAgICAgICAgICBuZXcgVWludDhBcnJheShbIDEsIDAgXSk7XG5cbiAgICAgICAgZW52LmJsb2IgPSBuZXcgQmxvYihbXG4gICAgICAgICAgZGF0YS5zbGljZSgwLCBvcmllbnRhdGlvbl9vZmZzZXQpLFxuICAgICAgICAgIG9yaWVudGF0aW9uX3BhdGNoLFxuICAgICAgICAgIGRhdGEuc2xpY2Uob3JpZW50YXRpb25fb2Zmc2V0ICsgMilcbiAgICAgICAgXSwgeyB0eXBlOiAnaW1hZ2UvanBlZycgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoXykge31cblxuICAgIHJldHVybiBlbnY7XG4gIH0pO1xufVxuXG5cbmZ1bmN0aW9uIGpwZWdfcm90YXRlX2NhbnZhcyhlbnYpIHtcbiAgaWYgKCFlbnYuaXNfanBlZykgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnYpO1xuXG4gIHZhciBvcmllbnRhdGlvbiA9IGVudi5vcmllbnRhdGlvbiAtIDE7XG4gIGlmICghb3JpZW50YXRpb24pIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW52KTtcblxuICB2YXIgY2FudmFzO1xuXG4gIGlmIChvcmllbnRhdGlvbiAmIDQpIHtcbiAgICBjYW52YXMgPSB0aGlzLnBpY2Eub3B0aW9ucy5jcmVhdGVDYW52YXMoZW52Lm91dF9jYW52YXMuaGVpZ2h0LCBlbnYub3V0X2NhbnZhcy53aWR0aCk7XG4gIH0gZWxzZSB7XG4gICAgY2FudmFzID0gdGhpcy5waWNhLm9wdGlvbnMuY3JlYXRlQ2FudmFzKGVudi5vdXRfY2FudmFzLndpZHRoLCBlbnYub3V0X2NhbnZhcy5oZWlnaHQpO1xuICB9XG5cbiAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gIGN0eC5zYXZlKCk7XG5cbiAgaWYgKG9yaWVudGF0aW9uICYgMSkgY3R4LnRyYW5zZm9ybSgtMSwgMCwgMCwgMSwgY2FudmFzLndpZHRoLCAwKTtcbiAgaWYgKG9yaWVudGF0aW9uICYgMikgY3R4LnRyYW5zZm9ybSgtMSwgMCwgMCwgLTEsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG4gIGlmIChvcmllbnRhdGlvbiAmIDQpIGN0eC50cmFuc2Zvcm0oMCwgMSwgMSwgMCwgMCwgMCk7XG5cbiAgY3R4LmRyYXdJbWFnZShlbnYub3V0X2NhbnZhcywgMCwgMCk7XG4gIGN0eC5yZXN0b3JlKCk7XG5cbiAgLy8gU2FmYXJpIDEyIHdvcmthcm91bmRcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9waWNhL2lzc3Vlcy8xOTlcbiAgZW52Lm91dF9jYW52YXMud2lkdGggPSBlbnYub3V0X2NhbnZhcy5oZWlnaHQgPSAwO1xuXG4gIGVudi5vdXRfY2FudmFzID0gY2FudmFzO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW52KTtcbn1cblxuXG5mdW5jdGlvbiBqcGVnX2F0dGFjaF9vcmlnX3NlZ21lbnRzKGVudikge1xuICBpZiAoIWVudi5pc19qcGVnKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudik7XG5cbiAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICB0aGlzLl9nZXRVaW50OEFycmF5KGVudi5ibG9iKSxcbiAgICB0aGlzLl9nZXRVaW50OEFycmF5KGVudi5vdXRfYmxvYilcbiAgXSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgdmFyIGRhdGEgPSByZXNbMF07XG4gICAgdmFyIGRhdGFfb3V0ID0gcmVzWzFdO1xuXG4gICAgaWYgKCFpbWFnZV90cmF2ZXJzZS5pc19qcGVnKGRhdGEpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudik7XG5cbiAgICB2YXIgc2VnbWVudHMgPSBbXTtcblxuICAgIGltYWdlX3RyYXZlcnNlLmpwZWdfc2VnbWVudHNfZWFjaChkYXRhLCBmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgaWYgKHNlZ21lbnQuY29kZSA9PT0gMHhEQSAvKiBTT1MgKi8pIHJldHVybiBmYWxzZTtcbiAgICAgIHNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gICAgfSk7XG5cbiAgICBzZWdtZW50cyA9IHNlZ21lbnRzXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gICAgICAgIC8vIERyb3AgSUNDX1BST0ZJTEVcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHNlZ21lbnQuY29kZSA9PT0gMHhFMikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIC8vIEtlZXAgYWxsIEFQUG4gc2VnbWVudHMgZXhjbHVkaW5nIEFQUDIgKElDQ19QUk9GSUxFKSxcbiAgICAgICAgLy8gcmVtb3ZlIG90aGVycyBiZWNhdXNlIG1vc3Qgb2YgdGhlbSBkZXBlbmQgb24gaW1hZ2UgZGF0YSAoRENUIGFuZCBzdWNoKS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQVBQMCAtIEpGSUYsIEFQUDEgLSBFeGlmLCB0aGUgcmVzdCBhcmUgcGhvdG9zaG9wIG1ldGFkYXRhIGFuZCBzdWNoXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFNlZSBmdWxsIGxpc3QgYXQgaHR0cHM6Ly93d3cudzMub3JnL0dyYXBoaWNzL0pQRUcvaXR1LXQ4MS5wZGYgKHRhYmxlIEIuMSBvbiBwYWdlIDMyKVxuICAgICAgICAvL1xuICAgICAgICBpZiAoc2VnbWVudC5jb2RlID49IDB4RTAgJiYgc2VnbWVudC5jb2RlIDwgMHhGMCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgLy8gS2VlcCBjb21tZW50c1xuICAgICAgICAvL1xuICAgICAgICBpZiAoc2VnbWVudC5jb2RlID09PSAweEZFKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLm1hcChmdW5jdGlvbiAoc2VnbWVudCkge1xuICAgICAgICByZXR1cm4gZGF0YS5zbGljZShzZWdtZW50Lm9mZnNldCwgc2VnbWVudC5vZmZzZXQgKyBzZWdtZW50Lmxlbmd0aCk7XG4gICAgICB9KTtcblxuICAgIGVudi5vdXRfYmxvYiA9IG5ldyBCbG9iKFxuICAgICAgLy8gaW50ZW50aW9uYWxseSBvbWl0dGluZyBleHBlY3RlZCBKRklGIHNlZ21lbnQgKG9mZnNldCAyIHRvIDIwKVxuICAgICAgWyBkYXRhX291dC5zbGljZSgwLCAyKSBdLmNvbmNhdChzZWdtZW50cykuY29uY2F0KFsgZGF0YV9vdXQuc2xpY2UoMjApIF0pLFxuICAgICAgeyB0eXBlOiAnaW1hZ2UvanBlZycgfVxuICAgICk7XG5cbiAgICByZXR1cm4gZW52O1xuICB9KTtcbn1cblxuXG5mdW5jdGlvbiBhc3NpZ24ocmVkdWNlcikge1xuICByZWR1Y2VyLmJlZm9yZSgnX2Jsb2JfdG9faW1hZ2UnLCBqcGVnX3BhdGNoX2V4aWYpO1xuICByZWR1Y2VyLmFmdGVyKCdfdHJhbnNmb3JtJywgICAgICBqcGVnX3JvdGF0ZV9jYW52YXMpO1xuICByZWR1Y2VyLmFmdGVyKCdfY3JlYXRlX2Jsb2InLCAgICBqcGVnX2F0dGFjaF9vcmlnX3NlZ21lbnRzKTtcbn1cblxuXG52YXIganBlZ19wYXRjaF9leGlmXzEgPSBqcGVnX3BhdGNoX2V4aWY7XG52YXIganBlZ19yb3RhdGVfY2FudmFzXzEgPSBqcGVnX3JvdGF0ZV9jYW52YXM7XG52YXIganBlZ19hdHRhY2hfb3JpZ19zZWdtZW50c18xID0ganBlZ19hdHRhY2hfb3JpZ19zZWdtZW50cztcbnZhciBhc3NpZ25fMSA9IGFzc2lnbjtcblxudmFyIGpwZWdfcGx1Z2lucyA9IHtcblx0anBlZ19wYXRjaF9leGlmOiBqcGVnX3BhdGNoX2V4aWZfMSxcblx0anBlZ19yb3RhdGVfY2FudmFzOiBqcGVnX3JvdGF0ZV9jYW52YXNfMSxcblx0anBlZ19hdHRhY2hfb3JpZ19zZWdtZW50czoganBlZ19hdHRhY2hfb3JpZ19zZWdtZW50c18xLFxuXHRhc3NpZ246IGFzc2lnbl8xXG59O1xuXG5mdW5jdGlvbiBJbWFnZUJsb2JSZWR1Y2Uob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSW1hZ2VCbG9iUmVkdWNlKSkgcmV0dXJuIG5ldyBJbWFnZUJsb2JSZWR1Y2Uob3B0aW9ucyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgdGhpcy5waWNhID0gb3B0aW9ucy5waWNhIHx8IHBpY2Eoe30pO1xuICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgdGhpcy51dGlscyA9IHV0aWxzO1xufVxuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gKHBsdWdpbiAvKiwgcGFyYW1zLCAuLi4gKi8pIHtcbiAgdmFyIGFyZ3MgPSBbIHRoaXMgXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gIHBsdWdpbi5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblxuSW1hZ2VCbG9iUmVkdWNlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnVzZShqcGVnX3BsdWdpbnMuYXNzaWduKTtcbn07XG5cblxuSW1hZ2VCbG9iUmVkdWNlLnByb3RvdHlwZS50b0Jsb2IgPSBmdW5jdGlvbiAoYmxvYiwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHV0aWxzLmFzc2lnbih7IG1heDogSW5maW5pdHkgfSwgb3B0aW9ucyk7XG4gIHZhciBlbnYgPSB7XG4gICAgYmxvYjogYmxvYixcbiAgICBvcHRzOiBvcHRzXG4gIH07XG5cbiAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudilcbiAgICAudGhlbih0aGlzLl9ibG9iX3RvX2ltYWdlKVxuICAgIC50aGVuKHRoaXMuX2NhbGN1bGF0ZV9zaXplKVxuICAgIC50aGVuKHRoaXMuX3RyYW5zZm9ybSlcbiAgICAudGhlbih0aGlzLl9jbGVhbnVwKVxuICAgIC50aGVuKHRoaXMuX2NyZWF0ZV9ibG9iKVxuICAgIC50aGVuKGZ1bmN0aW9uIChfZW52KSB7XG4gICAgICAvLyBTYWZhcmkgMTIgd29ya2Fyb3VuZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9waWNhL2lzc3Vlcy8xOTlcbiAgICAgIF9lbnYub3V0X2NhbnZhcy53aWR0aCA9IF9lbnYub3V0X2NhbnZhcy5oZWlnaHQgPSAwO1xuXG4gICAgICByZXR1cm4gX2Vudi5vdXRfYmxvYjtcbiAgICB9KTtcbn07XG5cblxuSW1hZ2VCbG9iUmVkdWNlLnByb3RvdHlwZS50b0NhbnZhcyA9IGZ1bmN0aW9uIChibG9iLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gdXRpbHMuYXNzaWduKHsgbWF4OiBJbmZpbml0eSB9LCBvcHRpb25zKTtcbiAgdmFyIGVudiA9IHtcbiAgICBibG9iOiBibG9iLFxuICAgIG9wdHM6IG9wdHNcbiAgfTtcblxuICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW52KVxuICAgIC50aGVuKHRoaXMuX2Jsb2JfdG9faW1hZ2UpXG4gICAgLnRoZW4odGhpcy5fY2FsY3VsYXRlX3NpemUpXG4gICAgLnRoZW4odGhpcy5fdHJhbnNmb3JtKVxuICAgIC50aGVuKHRoaXMuX2NsZWFudXApXG4gICAgLnRoZW4oZnVuY3Rpb24gKF9lbnYpIHsgcmV0dXJuIF9lbnYub3V0X2NhbnZhczsgfSk7XG59O1xuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUuYmVmb3JlID0gZnVuY3Rpb24gKG1ldGhvZF9uYW1lLCBmbikge1xuICBpZiAoIXRoaXNbbWV0aG9kX25hbWVdKSB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBcIicgKyBtZXRob2RfbmFtZSArICdcIiBkb2VzIG5vdCBleGlzdCcpO1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCJmblwiLCBmdW5jdGlvbiBleHBlY3RlZCcpO1xuXG4gIHZhciBvbGRfZm4gPSB0aGlzW21ldGhvZF9uYW1lXTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHRoaXNbbWV0aG9kX25hbWVdID0gZnVuY3Rpb24gKGVudikge1xuICAgIHJldHVybiBmbi5jYWxsKHNlbGYsIGVudikudGhlbihmdW5jdGlvbiAoX2Vudikge1xuICAgICAgcmV0dXJuIG9sZF9mbi5jYWxsKHNlbGYsIF9lbnYpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuXG5JbWFnZUJsb2JSZWR1Y2UucHJvdG90eXBlLmFmdGVyID0gZnVuY3Rpb24gKG1ldGhvZF9uYW1lLCBmbikge1xuICBpZiAoIXRoaXNbbWV0aG9kX25hbWVdKSB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBcIicgKyBtZXRob2RfbmFtZSArICdcIiBkb2VzIG5vdCBleGlzdCcpO1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCJmblwiLCBmdW5jdGlvbiBleHBlY3RlZCcpO1xuXG4gIHZhciBvbGRfZm4gPSB0aGlzW21ldGhvZF9uYW1lXTtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHRoaXNbbWV0aG9kX25hbWVdID0gZnVuY3Rpb24gKGVudikge1xuICAgIHJldHVybiBvbGRfZm4uY2FsbChzZWxmLCBlbnYpLnRoZW4oZnVuY3Rpb24gKF9lbnYpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHNlbGYsIF9lbnYpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuXG5JbWFnZUJsb2JSZWR1Y2UucHJvdG90eXBlLl9ibG9iX3RvX2ltYWdlID0gZnVuY3Rpb24gKGVudikge1xuICB2YXIgVVJMID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMIHx8IHdpbmRvdy5tb3pVUkwgfHwgd2luZG93Lm1zVVJMO1xuXG4gIGVudi5pbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICBlbnYuaW1hZ2VfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChlbnYuYmxvYik7XG4gIGVudi5pbWFnZS5zcmMgPSBlbnYuaW1hZ2VfdXJsO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZW52LmltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHJlamVjdChuZXcgRXJyb3IoJ0ltYWdlQmxvYlJlZHVjZTogZmFpbGVkIHRvIGNyZWF0ZSBJbWFnZSgpIGZyb20gYmxvYicpKTsgfTtcbiAgICBlbnYuaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24gKCkgeyByZXNvbHZlKGVudik7IH07XG4gIH0pO1xufTtcblxuXG5JbWFnZUJsb2JSZWR1Y2UucHJvdG90eXBlLl9jYWxjdWxhdGVfc2l6ZSA9IGZ1bmN0aW9uIChlbnYpIHtcbiAgLy9cbiAgLy8gTm90ZSwgaWYgeW91ciBuZWVkIG5vdCBcInN5bW1ldHJpY1wiIHJlc2l6ZSBsb2dpYywgeW91IE1VU1QgY2hlY2tcbiAgLy8gYGVudi5vcmllbnRhdGlvbmAgKHNldCBieSBwbHVnaW5zKSBhbmQgc3dhcCB3aWR0aC9oZWlnaHQgYXBwcm9wcmlhdGVseS5cbiAgLy9cbiAgdmFyIHNjYWxlX2ZhY3RvciA9IGVudi5vcHRzLm1heCAvIE1hdGgubWF4KGVudi5pbWFnZS53aWR0aCwgZW52LmltYWdlLmhlaWdodCk7XG5cbiAgaWYgKHNjYWxlX2ZhY3RvciA+IDEpIHNjYWxlX2ZhY3RvciA9IDE7XG5cbiAgZW52LnRyYW5zZm9ybV93aWR0aCA9IE1hdGgubWF4KE1hdGgucm91bmQoZW52LmltYWdlLndpZHRoICogc2NhbGVfZmFjdG9yKSwgMSk7XG4gIGVudi50cmFuc2Zvcm1faGVpZ2h0ID0gTWF0aC5tYXgoTWF0aC5yb3VuZChlbnYuaW1hZ2UuaGVpZ2h0ICogc2NhbGVfZmFjdG9yKSwgMSk7XG5cbiAgLy8gSW5mbyBmb3IgdXNlciBwbHVnaW5zLCB0byBjaGVjayBpZiBzY2FsaW5nIGFwcGxpZWRcbiAgZW52LnNjYWxlX2ZhY3RvciA9IHNjYWxlX2ZhY3RvcjtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudik7XG59O1xuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChlbnYpIHtcbiAgZW52Lm91dF9jYW52YXMgPSB0aGlzLnBpY2Eub3B0aW9ucy5jcmVhdGVDYW52YXMoZW52LnRyYW5zZm9ybV93aWR0aCwgZW52LnRyYW5zZm9ybV9oZWlnaHQpO1xuXG4gIC8vIERpbSBlbnYgdGVtcG9yYXJ5IHZhcnMgdG8gcHJvaGliaXQgdXNlIGFuZCBhdm9pZCBjb25mdXNpb24gd2hlbiBvcmllbnRhdGlvblxuICAvLyBjaGFuZ2VkLiBZb3Ugc2hvdWxkIHRha2UgcmVhbCBzaXplIGZyb20gY2FudmFzLlxuICBlbnYudHJhbnNmb3JtX3dpZHRoID0gbnVsbDtcbiAgZW52LnRyYW5zZm9ybV9oZWlnaHQgPSBudWxsO1xuXG4gIC8vIEJ5IGRlZmF1bHQgdXNlIGFscGhhIGZvciBwbmcgb25seVxuICB2YXIgcGljYV9vcHRzID0geyBhbHBoYTogZW52LmJsb2IudHlwZSA9PT0gJ2ltYWdlL3BuZycgfTtcblxuICAvLyBFeHRyYWN0IHBpY2Egb3B0aW9ucyBpZiBiZWVuIHBhc3NlZFxuICB0aGlzLnV0aWxzLmFzc2lnbihwaWNhX29wdHMsIHRoaXMudXRpbHMucGlja19waWNhX3Jlc2l6ZV9vcHRpb25zKGVudi5vcHRzKSk7XG5cbiAgcmV0dXJuIHRoaXMucGljYVxuICAgIC5yZXNpemUoZW52LmltYWdlLCBlbnYub3V0X2NhbnZhcywgcGljYV9vcHRzKVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudjsgfSk7XG59O1xuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUuX2NsZWFudXAgPSBmdW5jdGlvbiAoZW52KSB7XG4gIGVudi5pbWFnZS5zcmMgPSAnJztcbiAgZW52LmltYWdlID0gbnVsbDtcblxuICB2YXIgVVJMID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMIHx8IHdpbmRvdy5tb3pVUkwgfHwgd2luZG93Lm1zVVJMO1xuICBpZiAoVVJMLnJldm9rZU9iamVjdFVSTCkgVVJMLnJldm9rZU9iamVjdFVSTChlbnYuaW1hZ2VfdXJsKTtcblxuICBlbnYuaW1hZ2VfdXJsID0gbnVsbDtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudik7XG59O1xuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUuX2NyZWF0ZV9ibG9iID0gZnVuY3Rpb24gKGVudikge1xuICByZXR1cm4gdGhpcy5waWNhLnRvQmxvYihlbnYub3V0X2NhbnZhcywgZW52LmJsb2IudHlwZSlcbiAgICAudGhlbihmdW5jdGlvbiAoYmxvYikge1xuICAgICAgZW52Lm91dF9ibG9iID0gYmxvYjtcbiAgICAgIHJldHVybiBlbnY7XG4gICAgfSk7XG59O1xuXG5cbkltYWdlQmxvYlJlZHVjZS5wcm90b3R5cGUuX2dldFVpbnQ4QXJyYXkgPSBmdW5jdGlvbiAoYmxvYikge1xuICBpZiAoYmxvYi5hcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBibG9iLmFycmF5QnVmZmVyKCkudGhlbihmdW5jdGlvbiAoYnVmKSB7XG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIGZyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIGZyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpO1xuXG4gICAgZnIub25sb2FkID0gZnVuY3Rpb24gKCkgeyByZXNvbHZlKG5ldyBVaW50OEFycmF5KGZyLnJlc3VsdCkpOyB9O1xuICAgIGZyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZWplY3QobmV3IEVycm9yKCdJbWFnZUJsb2JSZWR1Y2U6IGZhaWxlZCB0byBsb2FkIGRhdGEgZnJvbSBpbnB1dCBibG9iJykpO1xuICAgICAgZnIuYWJvcnQoKTtcbiAgICB9O1xuICAgIGZyLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZWplY3QobmV3IEVycm9yKCdJbWFnZUJsb2JSZWR1Y2U6IGZhaWxlZCB0byBsb2FkIGRhdGEgZnJvbSBpbnB1dCBibG9iIChhYm9ydGVkKScpKTtcbiAgICB9O1xuICB9KTtcbn07XG5cblxuSW1hZ2VCbG9iUmVkdWNlLnBpY2EgPSBwaWNhO1xuXG52YXIgaW1hZ2VCbG9iUmVkdWNlID0gSW1hZ2VCbG9iUmVkdWNlO1xuXG5leHBvcnQgZGVmYXVsdCBpbWFnZUJsb2JSZWR1Y2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/internmap/src/index.js": +/*!****************************************************!*\ + !*** ../../../node_modules/internmap/src/index.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"InternMap\": () => (/* binding */ InternMap),\n/* harmony export */ \"InternSet\": () => (/* binding */ InternSet)\n/* harmony export */ });\nclass InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nclass InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGVybm1hcC9zcmMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQSxtQ0FBbUMsVUFBVSxpQkFBaUIsU0FBUyxZQUFZO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxtQ0FBbUMsVUFBVSxpQkFBaUIsU0FBUyxZQUFZO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsY0FBYztBQUNuQztBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLGNBQWM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGVybm1hcC9zcmMvaW5kZXguanM/YTEwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW50ZXJuTWFwIGV4dGVuZHMgTWFwIHtcbiAgY29uc3RydWN0b3IoZW50cmllcywga2V5ID0ga2V5b2YpIHtcbiAgICBzdXBlcigpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtfaW50ZXJuOiB7dmFsdWU6IG5ldyBNYXAoKX0sIF9rZXk6IHt2YWx1ZToga2V5fX0pO1xuICAgIGlmIChlbnRyaWVzICE9IG51bGwpIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHRoaXMuc2V0KGtleSwgdmFsdWUpO1xuICB9XG4gIGdldChrZXkpIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0KGludGVybl9nZXQodGhpcywga2V5KSk7XG4gIH1cbiAgaGFzKGtleSkge1xuICAgIHJldHVybiBzdXBlci5oYXMoaW50ZXJuX2dldCh0aGlzLCBrZXkpKTtcbiAgfVxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIHJldHVybiBzdXBlci5zZXQoaW50ZXJuX3NldCh0aGlzLCBrZXkpLCB2YWx1ZSk7XG4gIH1cbiAgZGVsZXRlKGtleSkge1xuICAgIHJldHVybiBzdXBlci5kZWxldGUoaW50ZXJuX2RlbGV0ZSh0aGlzLCBrZXkpKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW50ZXJuU2V0IGV4dGVuZHMgU2V0IHtcbiAgY29uc3RydWN0b3IodmFsdWVzLCBrZXkgPSBrZXlvZikge1xuICAgIHN1cGVyKCk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge19pbnRlcm46IHt2YWx1ZTogbmV3IE1hcCgpfSwgX2tleToge3ZhbHVlOiBrZXl9fSk7XG4gICAgaWYgKHZhbHVlcyAhPSBudWxsKSBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykgdGhpcy5hZGQodmFsdWUpO1xuICB9XG4gIGhhcyh2YWx1ZSkge1xuICAgIHJldHVybiBzdXBlci5oYXMoaW50ZXJuX2dldCh0aGlzLCB2YWx1ZSkpO1xuICB9XG4gIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiBzdXBlci5hZGQoaW50ZXJuX3NldCh0aGlzLCB2YWx1ZSkpO1xuICB9XG4gIGRlbGV0ZSh2YWx1ZSkge1xuICAgIHJldHVybiBzdXBlci5kZWxldGUoaW50ZXJuX2RlbGV0ZSh0aGlzLCB2YWx1ZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGludGVybl9nZXQoe19pbnRlcm4sIF9rZXl9LCB2YWx1ZSkge1xuICBjb25zdCBrZXkgPSBfa2V5KHZhbHVlKTtcbiAgcmV0dXJuIF9pbnRlcm4uaGFzKGtleSkgPyBfaW50ZXJuLmdldChrZXkpIDogdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGludGVybl9zZXQoe19pbnRlcm4sIF9rZXl9LCB2YWx1ZSkge1xuICBjb25zdCBrZXkgPSBfa2V5KHZhbHVlKTtcbiAgaWYgKF9pbnRlcm4uaGFzKGtleSkpIHJldHVybiBfaW50ZXJuLmdldChrZXkpO1xuICBfaW50ZXJuLnNldChrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBpbnRlcm5fZGVsZXRlKHtfaW50ZXJuLCBfa2V5fSwgdmFsdWUpIHtcbiAgY29uc3Qga2V5ID0gX2tleSh2YWx1ZSk7XG4gIGlmIChfaW50ZXJuLmhhcyhrZXkpKSB7XG4gICAgdmFsdWUgPSBfaW50ZXJuLmdldChrZXkpO1xuICAgIF9pbnRlcm4uZGVsZXRlKGtleSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBrZXlvZih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/internmap/src/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/channels/index.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/khroma/dist/channels/index.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./type.js */ \"../../../node_modules/khroma/dist/channels/type.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/khroma/dist/constants.js\");\n/* IMPORT */\n\n\n\n/* MAIN */\nclass Channels {\n /* CONSTRUCTOR */\n constructor(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new _type_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n }\n /* API */\n set(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = _constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.ALL;\n return this;\n }\n /* HELPERS */\n _ensureHSL() {\n const data = this.data;\n const { h, s, l } = data;\n if (h === undefined)\n data.h = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 'h');\n if (s === undefined)\n data.s = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 's');\n if (l === undefined)\n data.l = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 'l');\n }\n _ensureRGB() {\n const data = this.data;\n const { r, g, b } = data;\n if (r === undefined)\n data.r = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'r');\n if (g === undefined)\n data.g = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'g');\n if (b === undefined)\n data.b = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'b');\n }\n /* GETTERS */\n get r() {\n const data = this.data;\n const r = data.r;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL) && r !== undefined)\n return r;\n this._ensureHSL();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'r');\n }\n get g() {\n const data = this.data;\n const g = data.g;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL) && g !== undefined)\n return g;\n this._ensureHSL();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'g');\n }\n get b() {\n const data = this.data;\n const b = data.b;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL) && b !== undefined)\n return b;\n this._ensureHSL();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.hsl2rgb(data, 'b');\n }\n get h() {\n const data = this.data;\n const h = data.h;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB) && h !== undefined)\n return h;\n this._ensureRGB();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 'h');\n }\n get s() {\n const data = this.data;\n const s = data.s;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB) && s !== undefined)\n return s;\n this._ensureRGB();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 's');\n }\n get l() {\n const data = this.data;\n const l = data.l;\n if (!this.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB) && l !== undefined)\n return l;\n this._ensureRGB();\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.rgb2hsl(data, 'l');\n }\n get a() {\n return this.data.a;\n }\n /* SETTERS */\n set r(r) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n }\n set g(g) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n }\n set b(b) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n }\n set h(h) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n }\n set s(s) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n }\n set l(l) {\n this.type.set(_constants_js__WEBPACK_IMPORTED_MODULE_1__.TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n }\n set a(a) {\n this.changed = true;\n this.data.a = a;\n }\n}\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Channels);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NoYW5uZWxzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNrQztBQUNMO0FBQ1U7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLHdCQUF3QixnREFBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLHlCQUF5QixtREFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUI7QUFDQSxxQkFBcUIsdUVBQWlCO0FBQ3RDO0FBQ0EscUJBQXFCLHVFQUFpQjtBQUN0QztBQUNBLHFCQUFxQix1RUFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUI7QUFDQSxxQkFBcUIsdUVBQWlCO0FBQ3RDO0FBQ0EscUJBQXFCLHVFQUFpQjtBQUN0QztBQUNBLHFCQUFxQix1RUFBaUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtREFBUTtBQUNsQztBQUNBO0FBQ0EsZUFBZSx1RUFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsbURBQVE7QUFDbEM7QUFDQTtBQUNBLGVBQWUsdUVBQWlCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1EQUFRO0FBQ2xDO0FBQ0E7QUFDQSxlQUFlLHVFQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtREFBUTtBQUNsQztBQUNBO0FBQ0EsZUFBZSx1RUFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsbURBQVE7QUFDbEM7QUFDQTtBQUNBLGVBQWUsdUVBQWlCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG1EQUFRO0FBQ2xDO0FBQ0E7QUFDQSxlQUFlLHVFQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbURBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9jaGFubmVscy9pbmRleC5qcz8xNTg2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IF8gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IFR5cGUgZnJvbSAnLi90eXBlLmpzJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuLi9jb25zdGFudHMuanMnO1xuLyogTUFJTiAqL1xuY2xhc3MgQ2hhbm5lbHMge1xuICAgIC8qIENPTlNUUlVDVE9SICovXG4gICAgY29uc3RydWN0b3IoZGF0YSwgY29sb3IpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTsgLy9UU0NcbiAgICAgICAgdGhpcy50eXBlID0gbmV3IFR5cGUoKTtcbiAgICB9XG4gICAgLyogQVBJICovXG4gICAgc2V0KGRhdGEsIGNvbG9yKSB7XG4gICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjtcbiAgICAgICAgdGhpcy5jaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7IC8vVFNDXG4gICAgICAgIHRoaXMudHlwZS50eXBlID0gVFlQRS5BTEw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvKiBIRUxQRVJTICovXG4gICAgX2Vuc3VyZUhTTCgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgY29uc3QgeyBoLCBzLCBsIH0gPSBkYXRhO1xuICAgICAgICBpZiAoaCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZGF0YS5oID0gXy5jaGFubmVsLnJnYjJoc2woZGF0YSwgJ2gnKTtcbiAgICAgICAgaWYgKHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGRhdGEucyA9IF8uY2hhbm5lbC5yZ2IyaHNsKGRhdGEsICdzJyk7XG4gICAgICAgIGlmIChsID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBkYXRhLmwgPSBfLmNoYW5uZWwucmdiMmhzbChkYXRhLCAnbCcpO1xuICAgIH1cbiAgICBfZW5zdXJlUkdCKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgICBjb25zdCB7IHIsIGcsIGIgfSA9IGRhdGE7XG4gICAgICAgIGlmIChyID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICBkYXRhLnIgPSBfLmNoYW5uZWwuaHNsMnJnYihkYXRhLCAncicpO1xuICAgICAgICBpZiAoZyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgZGF0YS5nID0gXy5jaGFubmVsLmhzbDJyZ2IoZGF0YSwgJ2cnKTtcbiAgICAgICAgaWYgKGIgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIGRhdGEuYiA9IF8uY2hhbm5lbC5oc2wycmdiKGRhdGEsICdiJyk7XG4gICAgfVxuICAgIC8qIEdFVFRFUlMgKi9cbiAgICBnZXQgcigpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgY29uc3QgciA9IGRhdGEucjtcbiAgICAgICAgaWYgKCF0aGlzLnR5cGUuaXMoVFlQRS5IU0wpICYmIHIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB0aGlzLl9lbnN1cmVIU0woKTtcbiAgICAgICAgcmV0dXJuIF8uY2hhbm5lbC5oc2wycmdiKGRhdGEsICdyJyk7XG4gICAgfVxuICAgIGdldCBnKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgICBjb25zdCBnID0gZGF0YS5nO1xuICAgICAgICBpZiAoIXRoaXMudHlwZS5pcyhUWVBFLkhTTCkgJiYgZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIGc7XG4gICAgICAgIHRoaXMuX2Vuc3VyZUhTTCgpO1xuICAgICAgICByZXR1cm4gXy5jaGFubmVsLmhzbDJyZ2IoZGF0YSwgJ2cnKTtcbiAgICB9XG4gICAgZ2V0IGIoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICAgIGNvbnN0IGIgPSBkYXRhLmI7XG4gICAgICAgIGlmICghdGhpcy50eXBlLmlzKFRZUEUuSFNMKSAmJiBiICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gYjtcbiAgICAgICAgdGhpcy5fZW5zdXJlSFNMKCk7XG4gICAgICAgIHJldHVybiBfLmNoYW5uZWwuaHNsMnJnYihkYXRhLCAnYicpO1xuICAgIH1cbiAgICBnZXQgaCgpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgICAgY29uc3QgaCA9IGRhdGEuaDtcbiAgICAgICAgaWYgKCF0aGlzLnR5cGUuaXMoVFlQRS5SR0IpICYmIGggIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiBoO1xuICAgICAgICB0aGlzLl9lbnN1cmVSR0IoKTtcbiAgICAgICAgcmV0dXJuIF8uY2hhbm5lbC5yZ2IyaHNsKGRhdGEsICdoJyk7XG4gICAgfVxuICAgIGdldCBzKCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgICBjb25zdCBzID0gZGF0YS5zO1xuICAgICAgICBpZiAoIXRoaXMudHlwZS5pcyhUWVBFLlJHQikgJiYgcyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIHRoaXMuX2Vuc3VyZVJHQigpO1xuICAgICAgICByZXR1cm4gXy5jaGFubmVsLnJnYjJoc2woZGF0YSwgJ3MnKTtcbiAgICB9XG4gICAgZ2V0IGwoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICAgIGNvbnN0IGwgPSBkYXRhLmw7XG4gICAgICAgIGlmICghdGhpcy50eXBlLmlzKFRZUEUuUkdCKSAmJiBsICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgdGhpcy5fZW5zdXJlUkdCKCk7XG4gICAgICAgIHJldHVybiBfLmNoYW5uZWwucmdiMmhzbChkYXRhLCAnbCcpO1xuICAgIH1cbiAgICBnZXQgYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5hO1xuICAgIH1cbiAgICAvKiBTRVRURVJTICovXG4gICAgc2V0IHIocikge1xuICAgICAgICB0aGlzLnR5cGUuc2V0KFRZUEUuUkdCKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kYXRhLnIgPSByO1xuICAgIH1cbiAgICBzZXQgZyhnKSB7XG4gICAgICAgIHRoaXMudHlwZS5zZXQoVFlQRS5SR0IpO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGEuZyA9IGc7XG4gICAgfVxuICAgIHNldCBiKGIpIHtcbiAgICAgICAgdGhpcy50eXBlLnNldChUWVBFLlJHQik7XG4gICAgICAgIHRoaXMuY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0YS5iID0gYjtcbiAgICB9XG4gICAgc2V0IGgoaCkge1xuICAgICAgICB0aGlzLnR5cGUuc2V0KFRZUEUuSFNMKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kYXRhLmggPSBoO1xuICAgIH1cbiAgICBzZXQgcyhzKSB7XG4gICAgICAgIHRoaXMudHlwZS5zZXQoVFlQRS5IU0wpO1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGEucyA9IHM7XG4gICAgfVxuICAgIHNldCBsKGwpIHtcbiAgICAgICAgdGhpcy50eXBlLnNldChUWVBFLkhTTCk7XG4gICAgICAgIHRoaXMuY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGF0YS5sID0gbDtcbiAgICB9XG4gICAgc2V0IGEoYSkge1xuICAgICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRhdGEuYSA9IGE7XG4gICAgfVxufVxuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBDaGFubmVscztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/channels/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/channels/reusable.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/khroma/dist/channels/reusable.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! .//index.js */ \"../../../node_modules/khroma/dist/channels/index.js\");\n/* IMPORT */\n\n/* MAIN */\nconst channels = new _index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (channels);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NoYW5uZWxzL3JldXNhYmxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDbUM7QUFDbkM7QUFDQSxxQkFBcUIsaURBQVEsR0FBRyx3QkFBd0I7QUFDeEQ7QUFDQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NoYW5uZWxzL3JldXNhYmxlLmpzPzE0NTQiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgQ2hhbm5lbHMgZnJvbSAnLi8vaW5kZXguanMnO1xuLyogTUFJTiAqL1xuY29uc3QgY2hhbm5lbHMgPSBuZXcgQ2hhbm5lbHMoeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAwIH0sICd0cmFuc3BhcmVudCcpO1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBjaGFubmVscztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/channels/reusable.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/channels/type.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/khroma/dist/channels/type.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/khroma/dist/constants.js\");\n/* IMPORT */\n\n/* MAIN */\nclass Type {\n constructor() {\n /* VARIABLES */\n this.type = _constants_js__WEBPACK_IMPORTED_MODULE_0__.TYPE.ALL;\n }\n /* API */\n get() {\n return this.type;\n }\n set(type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n }\n reset() {\n this.type = _constants_js__WEBPACK_IMPORTED_MODULE_0__.TYPE.ALL;\n }\n is(type) {\n return this.type === type;\n }\n}\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Type);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NoYW5uZWxzL3R5cGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUN1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixtREFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1EQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMva2hyb21hL2Rpc3QvY2hhbm5lbHMvdHlwZS5qcz9kNDdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IHsgVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cy5qcyc7XG4vKiBNQUlOICovXG5jbGFzcyBUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLyogVkFSSUFCTEVTICovXG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUuQUxMO1xuICAgIH1cbiAgICAvKiBBUEkgKi9cbiAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGU7XG4gICAgfVxuICAgIHNldCh0eXBlKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgJiYgdGhpcy50eXBlICE9PSB0eXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2hhbmdlIGJvdGggUkdCIGFuZCBIU0wgY2hhbm5lbHMgYXQgdGhlIHNhbWUgdGltZScpO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5BTEw7XG4gICAgfVxuICAgIGlzKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gdHlwZTtcbiAgICB9XG59XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IFR5cGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/channels/type.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/color/hex.js": +/*!******************************************************!*\ + !*** ../../../node_modules/khroma/dist/color/hex.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _channels_reusable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channels/reusable.js */ \"../../../node_modules/khroma/dist/channels/reusable.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/khroma/dist/constants.js\");\n/* IMPORT */\n\n\n\n/* MAIN */\nconst Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: (color) => {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n const match = color.match(Hex.re);\n if (!match)\n return;\n const hex = match[1];\n const dec = parseInt(hex, 16);\n const length = hex.length;\n const hasAlpha = length % 4 === 0;\n const isFullLength = length > 4;\n const multiplier = isFullLength ? 1 : 17;\n const bits = isFullLength ? 8 : 4;\n const bitsOffset = hasAlpha ? 0 : -1;\n const mask = isFullLength ? 255 : 15;\n return _channels_reusable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // #RRGGBBAA\n return `#${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(r)]}${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(g)]}${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(b)]}${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(a * 255)]}`;\n }\n else { // #RRGGBB\n return `#${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(r)]}${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(g)]}${_constants_js__WEBPACK_IMPORTED_MODULE_1__.DEC2HEX[Math.round(b)]}`;\n }\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Hex);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2hleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNrQztBQUNxQjtBQUNiO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxVQUFVLEVBQUU7QUFDNUM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUVBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLGdCQUFnQixhQUFhO0FBQzdCLHFCQUFxQjtBQUNyQix1QkFBdUIsa0RBQU8sZ0JBQWdCLEVBQUUsa0RBQU8sZ0JBQWdCLEVBQUUsa0RBQU8sZ0JBQWdCLEVBQUUsa0RBQU8sc0JBQXNCO0FBQy9IO0FBQ0EsZUFBZTtBQUNmLHVCQUF1QixrREFBTyxnQkFBZ0IsRUFBRSxrREFBTyxnQkFBZ0IsRUFBRSxrREFBTyxnQkFBZ0I7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2hleC5qcz84ZDU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IF8gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IENoYW5uZWxzUmV1c2FibGUgZnJvbSAnLi4vY2hhbm5lbHMvcmV1c2FibGUuanMnO1xuaW1wb3J0IHsgREVDMkhFWCB9IGZyb20gJy4uL2NvbnN0YW50cy5qcyc7XG4vKiBNQUlOICovXG5jb25zdCBIZXggPSB7XG4gICAgLyogVkFSSUFCTEVTICovXG4gICAgcmU6IC9eIygoPzpbYS1mMC05XXsyfSl7Miw0fXxbYS1mMC05XXszfSkkL2ksXG4gICAgLyogQVBJICovXG4gICAgcGFyc2U6IChjb2xvcikgPT4ge1xuICAgICAgICBpZiAoY29sb3IuY2hhckNvZGVBdCgwKSAhPT0gMzUpXG4gICAgICAgICAgICByZXR1cm47IC8vICcjJ1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbG9yLm1hdGNoKEhleC5yZSk7XG4gICAgICAgIGlmICghbWF0Y2gpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGhleCA9IG1hdGNoWzFdO1xuICAgICAgICBjb25zdCBkZWMgPSBwYXJzZUludChoZXgsIDE2KTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaGV4Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgaGFzQWxwaGEgPSBsZW5ndGggJSA0ID09PSAwO1xuICAgICAgICBjb25zdCBpc0Z1bGxMZW5ndGggPSBsZW5ndGggPiA0O1xuICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gaXNGdWxsTGVuZ3RoID8gMSA6IDE3O1xuICAgICAgICBjb25zdCBiaXRzID0gaXNGdWxsTGVuZ3RoID8gOCA6IDQ7XG4gICAgICAgIGNvbnN0IGJpdHNPZmZzZXQgPSBoYXNBbHBoYSA/IDAgOiAtMTtcbiAgICAgICAgY29uc3QgbWFzayA9IGlzRnVsbExlbmd0aCA/IDI1NSA6IDE1O1xuICAgICAgICByZXR1cm4gQ2hhbm5lbHNSZXVzYWJsZS5zZXQoe1xuICAgICAgICAgICAgcjogKChkZWMgPj4gKGJpdHMgKiAoYml0c09mZnNldCArIDMpKSkgJiBtYXNrKSAqIG11bHRpcGxpZXIsXG4gICAgICAgICAgICBnOiAoKGRlYyA+PiAoYml0cyAqIChiaXRzT2Zmc2V0ICsgMikpKSAmIG1hc2spICogbXVsdGlwbGllcixcbiAgICAgICAgICAgIGI6ICgoZGVjID4+IChiaXRzICogKGJpdHNPZmZzZXQgKyAxKSkpICYgbWFzaykgKiBtdWx0aXBsaWVyLFxuICAgICAgICAgICAgYTogaGFzQWxwaGEgPyAoZGVjICYgbWFzaykgKiBtdWx0aXBsaWVyIC8gMjU1IDogMVxuICAgICAgICB9LCBjb2xvcik7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6IChjaGFubmVscykgPT4ge1xuICAgICAgICBjb25zdCB7IHIsIGcsIGIsIGEgfSA9IGNoYW5uZWxzO1xuICAgICAgICBpZiAoYSA8IDEpIHsgLy8gI1JSR0dCQkFBXG4gICAgICAgICAgICByZXR1cm4gYCMke0RFQzJIRVhbTWF0aC5yb3VuZChyKV19JHtERUMySEVYW01hdGgucm91bmQoZyldfSR7REVDMkhFWFtNYXRoLnJvdW5kKGIpXX0ke0RFQzJIRVhbTWF0aC5yb3VuZChhICogMjU1KV19YDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8gI1JSR0dCQlxuICAgICAgICAgICAgcmV0dXJuIGAjJHtERUMySEVYW01hdGgucm91bmQocildfSR7REVDMkhFWFtNYXRoLnJvdW5kKGcpXX0ke0RFQzJIRVhbTWF0aC5yb3VuZChiKV19YDtcbiAgICAgICAgfVxuICAgIH1cbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IEhleDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/color/hex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/color/hsl.js": +/*!******************************************************!*\ + !*** ../../../node_modules/khroma/dist/color/hsl.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _channels_reusable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channels/reusable.js */ \"../../../node_modules/khroma/dist/channels/reusable.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: (hue) => {\n const match = hue.match(HSL.hueRe);\n if (match) {\n const [, number, unit] = match;\n switch (unit) {\n case 'grad': return _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n const match = color.match(HSL.re);\n if (!match)\n return;\n const [, h, s, l, a, isAlphaPercentage] = match;\n return _channels_reusable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set({\n h: HSL._hue2deg(h),\n s: _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.s(parseFloat(s)),\n l: _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.l(parseFloat(l)),\n a: a ? _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { h, s, l, a } = channels;\n if (a < 1) { // HSLA\n return `hsla(${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(h)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(s)}%, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(l)}%, ${a})`;\n }\n else { // HSL\n return `hsl(${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(h)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(s)}%, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(l)}%)`;\n }\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HSL);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2hzbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNrQztBQUNxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHVFQUFpQjtBQUNyRCxtQ0FBbUMsdUVBQWlCO0FBQ3BELG9DQUFvQyx1RUFBaUI7QUFDckQ7QUFDQTtBQUNBLGVBQWUsdUVBQWlCO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUVBQW9CO0FBQ25DO0FBQ0EsZUFBZSx1RUFBaUI7QUFDaEMsZUFBZSx1RUFBaUI7QUFDaEMsbUJBQW1CLHVFQUFpQjtBQUNwQyxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLGFBQWE7QUFDN0IscUJBQXFCO0FBQ3JCLDJCQUEyQixrRUFBWSxJQUFJLElBQUksa0VBQVksSUFBSSxLQUFLLGtFQUFZLElBQUksS0FBSyxFQUFFO0FBQzNGO0FBQ0EsZUFBZTtBQUNmLDBCQUEwQixrRUFBWSxJQUFJLElBQUksa0VBQVksSUFBSSxLQUFLLGtFQUFZLElBQUk7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2hzbC5qcz84YmJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IF8gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IENoYW5uZWxzUmV1c2FibGUgZnJvbSAnLi4vY2hhbm5lbHMvcmV1c2FibGUuanMnO1xuLyogTUFJTiAqL1xuY29uc3QgSFNMID0ge1xuICAgIC8qIFZBUklBQkxFUyAqL1xuICAgIHJlOiAvXmhzbGE/XFwoXFxzKj8oLT8oPzpcXGQrKD86XFwuXFxkKyk/fCg/OlxcLlxcZCspKSg/OmUtP1xcZCspPyg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pXFxzKj8oPzosfFxccylcXHMqPygtPyg/OlxcZCsoPzpcXC5cXGQrKT98KD86XFwuXFxkKykpKD86ZS0/XFxkKyk/JSlcXHMqPyg/Oix8XFxzKVxccyo/KC0/KD86XFxkKyg/OlxcLlxcZCspP3woPzpcXC5cXGQrKSkoPzplLT9cXGQrKT8lKSg/Olxccyo/KD86LHxcXC8pXFxzKj9cXCs/KC0/KD86XFxkKyg/OlxcLlxcZCspP3woPzpcXC5cXGQrKSkoPzplLT9cXGQrKT8oJSk/KSk/XFxzKj9cXCkkL2ksXG4gICAgaHVlUmU6IC9eKC4rPykoZGVnfGdyYWR8cmFkfHR1cm4pJC9pLFxuICAgIC8qIEhFTFBFUlMgKi9cbiAgICBfaHVlMmRlZzogKGh1ZSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGh1ZS5tYXRjaChIU0wuaHVlUmUpO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIG51bWJlciwgdW5pdF0gPSBtYXRjaDtcbiAgICAgICAgICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2dyYWQnOiByZXR1cm4gXy5jaGFubmVsLmNsYW1wLmgocGFyc2VGbG9hdChudW1iZXIpICogLjkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JhZCc6IHJldHVybiBfLmNoYW5uZWwuY2xhbXAuaChwYXJzZUZsb2F0KG51bWJlcikgKiAxODAgLyBNYXRoLlBJKTtcbiAgICAgICAgICAgICAgICBjYXNlICd0dXJuJzogcmV0dXJuIF8uY2hhbm5lbC5jbGFtcC5oKHBhcnNlRmxvYXQobnVtYmVyKSAqIDM2MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF8uY2hhbm5lbC5jbGFtcC5oKHBhcnNlRmxvYXQoaHVlKSk7XG4gICAgfSxcbiAgICAvKiBBUEkgKi9cbiAgICBwYXJzZTogKGNvbG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYXJDb2RlID0gY29sb3IuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgaWYgKGNoYXJDb2RlICE9PSAxMDQgJiYgY2hhckNvZGUgIT09IDcyKVxuICAgICAgICAgICAgcmV0dXJuOyAvLyAnaCcvJ0gnXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY29sb3IubWF0Y2goSFNMLnJlKTtcbiAgICAgICAgaWYgKCFtYXRjaClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgWywgaCwgcywgbCwgYSwgaXNBbHBoYVBlcmNlbnRhZ2VdID0gbWF0Y2g7XG4gICAgICAgIHJldHVybiBDaGFubmVsc1JldXNhYmxlLnNldCh7XG4gICAgICAgICAgICBoOiBIU0wuX2h1ZTJkZWcoaCksXG4gICAgICAgICAgICBzOiBfLmNoYW5uZWwuY2xhbXAucyhwYXJzZUZsb2F0KHMpKSxcbiAgICAgICAgICAgIGw6IF8uY2hhbm5lbC5jbGFtcC5sKHBhcnNlRmxvYXQobCkpLFxuICAgICAgICAgICAgYTogYSA/IF8uY2hhbm5lbC5jbGFtcC5hKGlzQWxwaGFQZXJjZW50YWdlID8gcGFyc2VGbG9hdChhKSAvIDEwMCA6IHBhcnNlRmxvYXQoYSkpIDogMVxuICAgICAgICB9LCBjb2xvcik7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6IChjaGFubmVscykgPT4ge1xuICAgICAgICBjb25zdCB7IGgsIHMsIGwsIGEgfSA9IGNoYW5uZWxzO1xuICAgICAgICBpZiAoYSA8IDEpIHsgLy8gSFNMQVxuICAgICAgICAgICAgcmV0dXJuIGBoc2xhKCR7Xy5sYW5nLnJvdW5kKGgpfSwgJHtfLmxhbmcucm91bmQocyl9JSwgJHtfLmxhbmcucm91bmQobCl9JSwgJHthfSlgO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgeyAvLyBIU0xcbiAgICAgICAgICAgIHJldHVybiBgaHNsKCR7Xy5sYW5nLnJvdW5kKGgpfSwgJHtfLmxhbmcucm91bmQocyl9JSwgJHtfLmxhbmcucm91bmQobCl9JSlgO1xuICAgICAgICB9XG4gICAgfVxufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgSFNMO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/color/hsl.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/color/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/khroma/dist/color/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _hex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hex.js */ \"../../../node_modules/khroma/dist/color/hex.js\");\n/* harmony import */ var _hsl_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hsl.js */ \"../../../node_modules/khroma/dist/color/hsl.js\");\n/* harmony import */ var _keyword_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keyword.js */ \"../../../node_modules/khroma/dist/color/keyword.js\");\n/* harmony import */ var _rgb_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rgb.js */ \"../../../node_modules/khroma/dist/color/rgb.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/khroma/dist/constants.js\");\n/* IMPORT */\n\n\n\n\n\n\n/* MAIN */\nconst Color = {\n /* VARIABLES */\n format: {\n keyword: _keyword_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hex: _hex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n rgb: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n rgba: _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hsl: _hsl_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n hsla: _hsl_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n },\n /* API */\n parse: (color) => {\n if (typeof color !== 'string')\n return color;\n const channels = _hex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parse(color) || _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parse(color) || _hsl_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parse(color) || _keyword_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(`Unsupported color format: \"${color}\"`);\n },\n stringify: (channels) => {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(_constants_js__WEBPACK_IMPORTED_MODULE_4__.TYPE.HSL) || channels.data.r === undefined) {\n return _hsl_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return _rgb_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stringify(channels);\n }\n else {\n return _hex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stringify(channels);\n }\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Color);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ2tDO0FBQ1A7QUFDQTtBQUNRO0FBQ1I7QUFDWTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtREFBTztBQUN4QixhQUFhLCtDQUFHO0FBQ2hCLGFBQWEsK0NBQUc7QUFDaEIsY0FBYywrQ0FBRztBQUNqQixhQUFhLCtDQUFHO0FBQ2hCLGNBQWMsK0NBQUc7QUFDakIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHFEQUFTLFdBQVcscURBQVMsV0FBVyxxREFBUyxXQUFXLHlEQUFhLFNBQVM7QUFDM0c7QUFDQTtBQUNBLHNEQUFzRCxNQUFNO0FBQzVELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixtREFBUTtBQUNyQyxtQkFBbUIseURBQWE7QUFDaEM7QUFDQTtBQUNBLG1CQUFtQix5REFBYTtBQUNoQztBQUNBO0FBQ0EsbUJBQW1CLHlEQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWUsS0FBSyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9jb2xvci9pbmRleC5qcz84MmJiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IF8gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IEhleCBmcm9tICcuL2hleC5qcyc7XG5pbXBvcnQgSFNMIGZyb20gJy4vaHNsLmpzJztcbmltcG9ydCBLZXl3b3JkIGZyb20gJy4va2V5d29yZC5qcyc7XG5pbXBvcnQgUkdCIGZyb20gJy4vcmdiLmpzJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuLi9jb25zdGFudHMuanMnO1xuLyogTUFJTiAqL1xuY29uc3QgQ29sb3IgPSB7XG4gICAgLyogVkFSSUFCTEVTICovXG4gICAgZm9ybWF0OiB7XG4gICAgICAgIGtleXdvcmQ6IEtleXdvcmQsXG4gICAgICAgIGhleDogSGV4LFxuICAgICAgICByZ2I6IFJHQixcbiAgICAgICAgcmdiYTogUkdCLFxuICAgICAgICBoc2w6IEhTTCxcbiAgICAgICAgaHNsYTogSFNMXG4gICAgfSxcbiAgICAvKiBBUEkgKi9cbiAgICBwYXJzZTogKGNvbG9yKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sb3IgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgcmV0dXJuIGNvbG9yO1xuICAgICAgICBjb25zdCBjaGFubmVscyA9IEhleC5wYXJzZShjb2xvcikgfHwgUkdCLnBhcnNlKGNvbG9yKSB8fCBIU0wucGFyc2UoY29sb3IpIHx8IEtleXdvcmQucGFyc2UoY29sb3IpOyAvLyBDb2xvciBwcm92aWRlcnMgb3JkZXJlZCB3aXRoIHBlcmZvcm1hbmNlIGluIG1pbmRcbiAgICAgICAgaWYgKGNoYW5uZWxzKVxuICAgICAgICAgICAgcmV0dXJuIGNoYW5uZWxzO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGNvbG9yIGZvcm1hdDogXCIke2NvbG9yfVwiYCk7XG4gICAgfSxcbiAgICBzdHJpbmdpZnk6IChjaGFubmVscykgPT4ge1xuICAgICAgICAvLyBTQVNTIHJldHVybnMgYSBrZXl3b3JkIGlmIHBvc3NpYmxlLCBidXQgd2UgYXZvaWQgZG9pbmcgdGhhdCBhcyBpdCdzIHNsb3dlciBhbmQgZG9lc24ndCByZWFsbHkgYWRkIGFueSB2YWx1ZVxuICAgICAgICBpZiAoIWNoYW5uZWxzLmNoYW5nZWQgJiYgY2hhbm5lbHMuY29sb3IpXG4gICAgICAgICAgICByZXR1cm4gY2hhbm5lbHMuY29sb3I7XG4gICAgICAgIGlmIChjaGFubmVscy50eXBlLmlzKFRZUEUuSFNMKSB8fCBjaGFubmVscy5kYXRhLnIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIEhTTC5zdHJpbmdpZnkoY2hhbm5lbHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYW5uZWxzLmEgPCAxIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGNoYW5uZWxzLnIpIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGNoYW5uZWxzLmcpIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGNoYW5uZWxzLmIpKSB7XG4gICAgICAgICAgICByZXR1cm4gUkdCLnN0cmluZ2lmeShjaGFubmVscyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gSGV4LnN0cmluZ2lmeShjaGFubmVscyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBDb2xvcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/color/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/color/keyword.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/khroma/dist/color/keyword.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _hex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hex.js */ \"../../../node_modules/khroma/dist/color/hex.js\");\n/* IMPORT */\n\n/* MAIN */\nconst Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: (color) => {\n color = color.toLowerCase();\n const hex = Keyword.colors[color];\n if (!hex)\n return;\n return _hex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(hex);\n },\n stringify: (channels) => {\n const hex = _hex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(channels);\n for (const name in Keyword.colors) {\n if (Keyword.colors[name] === hex)\n return name;\n }\n return;\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Keyword);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL2tleXdvcmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUMyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFEQUFTO0FBQ3hCLEtBQUs7QUFDTDtBQUNBLG9CQUFvQix5REFBYTtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9jb2xvci9rZXl3b3JkLmpzPzU5MWUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgSGV4IGZyb20gJy4vaGV4LmpzJztcbi8qIE1BSU4gKi9cbmNvbnN0IEtleXdvcmQgPSB7XG4gICAgLyogVkFSSUFCTEVTICovXG4gICAgY29sb3JzOiB7XG4gICAgICAgIGFsaWNlYmx1ZTogJyNmMGY4ZmYnLFxuICAgICAgICBhbnRpcXVld2hpdGU6ICcjZmFlYmQ3JyxcbiAgICAgICAgYXF1YTogJyMwMGZmZmYnLFxuICAgICAgICBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsXG4gICAgICAgIGF6dXJlOiAnI2YwZmZmZicsXG4gICAgICAgIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLFxuICAgICAgICBibGFjazogJyMwMDAwMDAnLFxuICAgICAgICBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLFxuICAgICAgICBibHVlOiAnIzAwMDBmZicsXG4gICAgICAgIGJsdWV2aW9sZXQ6ICcjOGEyYmUyJyxcbiAgICAgICAgYnJvd246ICcjYTUyYTJhJyxcbiAgICAgICAgYnVybHl3b29kOiAnI2RlYjg4NycsXG4gICAgICAgIGNhZGV0Ymx1ZTogJyM1ZjllYTAnLFxuICAgICAgICBjaGFydHJldXNlOiAnIzdmZmYwMCcsXG4gICAgICAgIGNob2NvbGF0ZTogJyNkMjY5MWUnLFxuICAgICAgICBjb3JhbDogJyNmZjdmNTAnLFxuICAgICAgICBjb3JuZmxvd2VyYmx1ZTogJyM2NDk1ZWQnLFxuICAgICAgICBjb3Juc2lsazogJyNmZmY4ZGMnLFxuICAgICAgICBjcmltc29uOiAnI2RjMTQzYycsXG4gICAgICAgIGN5YW5hcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIGRhcmtibHVlOiAnIzAwMDA4YicsXG4gICAgICAgIGRhcmtjeWFuOiAnIzAwOGI4YicsXG4gICAgICAgIGRhcmtnb2xkZW5yb2Q6ICcjYjg4NjBiJyxcbiAgICAgICAgZGFya2dyYXk6ICcjYTlhOWE5JyxcbiAgICAgICAgZGFya2dyZWVuOiAnIzAwNjQwMCcsXG4gICAgICAgIGRhcmtncmV5OiAnI2E5YTlhOScsXG4gICAgICAgIGRhcmtraGFraTogJyNiZGI3NmInLFxuICAgICAgICBkYXJrbWFnZW50YTogJyM4YjAwOGInLFxuICAgICAgICBkYXJrb2xpdmVncmVlbjogJyM1NTZiMmYnLFxuICAgICAgICBkYXJrb3JhbmdlOiAnI2ZmOGMwMCcsXG4gICAgICAgIGRhcmtvcmNoaWQ6ICcjOTkzMmNjJyxcbiAgICAgICAgZGFya3JlZDogJyM4YjAwMDAnLFxuICAgICAgICBkYXJrc2FsbW9uOiAnI2U5OTY3YScsXG4gICAgICAgIGRhcmtzZWFncmVlbjogJyM4ZmJjOGYnLFxuICAgICAgICBkYXJrc2xhdGVibHVlOiAnIzQ4M2Q4YicsXG4gICAgICAgIGRhcmtzbGF0ZWdyYXk6ICcjMmY0ZjRmJyxcbiAgICAgICAgZGFya3NsYXRlZ3JleTogJyMyZjRmNGYnLFxuICAgICAgICBkYXJrdHVycXVvaXNlOiAnIzAwY2VkMScsXG4gICAgICAgIGRhcmt2aW9sZXQ6ICcjOTQwMGQzJyxcbiAgICAgICAgZGVlcHBpbms6ICcjZmYxNDkzJyxcbiAgICAgICAgZGVlcHNreWJsdWU6ICcjMDBiZmZmJyxcbiAgICAgICAgZGltZ3JheTogJyM2OTY5NjknLFxuICAgICAgICBkaW1ncmV5OiAnIzY5Njk2OScsXG4gICAgICAgIGRvZGdlcmJsdWU6ICcjMWU5MGZmJyxcbiAgICAgICAgZmlyZWJyaWNrOiAnI2IyMjIyMicsXG4gICAgICAgIGZsb3JhbHdoaXRlOiAnI2ZmZmFmMCcsXG4gICAgICAgIGZvcmVzdGdyZWVuOiAnIzIyOGIyMicsXG4gICAgICAgIGZ1Y2hzaWE6ICcjZmYwMGZmJyxcbiAgICAgICAgZ2FpbnNib3JvOiAnI2RjZGNkYycsXG4gICAgICAgIGdob3N0d2hpdGU6ICcjZjhmOGZmJyxcbiAgICAgICAgZ29sZDogJyNmZmQ3MDAnLFxuICAgICAgICBnb2xkZW5yb2Q6ICcjZGFhNTIwJyxcbiAgICAgICAgZ3JheTogJyM4MDgwODAnLFxuICAgICAgICBncmVlbjogJyMwMDgwMDAnLFxuICAgICAgICBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsXG4gICAgICAgIGhvbmV5ZGV3OiAnI2YwZmZmMCcsXG4gICAgICAgIGhvdHBpbms6ICcjZmY2OWI0JyxcbiAgICAgICAgaW5kaWFucmVkOiAnI2NkNWM1YycsXG4gICAgICAgIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLFxuICAgICAgICBraGFraTogJyNmMGU2OGMnLFxuICAgICAgICBsYXZlbmRlcjogJyNlNmU2ZmEnLFxuICAgICAgICBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsXG4gICAgICAgIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJyxcbiAgICAgICAgbGlnaHRibHVlOiAnI2FkZDhlNicsXG4gICAgICAgIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJyxcbiAgICAgICAgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsXG4gICAgICAgIGxpZ2h0Z3JheTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodGdyZWVuOiAnIzkwZWU5MCcsXG4gICAgICAgIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJyxcbiAgICAgICAgbGlnaHRzYWxtb246ICcjZmZhMDdhJyxcbiAgICAgICAgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLFxuICAgICAgICBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JyxcbiAgICAgICAgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJyxcbiAgICAgICAgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZTogJyMwMGZmMDAnLFxuICAgICAgICBsaW1lZ3JlZW46ICcjMzJjZDMyJyxcbiAgICAgICAgbGluZW46ICcjZmFmMGU2JyxcbiAgICAgICAgbWFnZW50YTogJyNmZjAwZmYnLFxuICAgICAgICBtYXJvb246ICcjODAwMDAwJyxcbiAgICAgICAgbWVkaXVtYXF1YW1hcmluZTogJyM2NmNkYWEnLFxuICAgICAgICBtZWRpdW1ibHVlOiAnIzAwMDBjZCcsXG4gICAgICAgIG1lZGl1bW9yY2hpZDogJyNiYTU1ZDMnLFxuICAgICAgICBtZWRpdW1wdXJwbGU6ICcjOTM3MGRiJyxcbiAgICAgICAgbWVkaXVtc2VhZ3JlZW46ICcjM2NiMzcxJyxcbiAgICAgICAgbWVkaXVtc2xhdGVibHVlOiAnIzdiNjhlZScsXG4gICAgICAgIG1lZGl1bXNwcmluZ2dyZWVuOiAnIzAwZmE5YScsXG4gICAgICAgIG1lZGl1bXR1cnF1b2lzZTogJyM0OGQxY2MnLFxuICAgICAgICBtZWRpdW12aW9sZXRyZWQ6ICcjYzcxNTg1JyxcbiAgICAgICAgbWlkbmlnaHRibHVlOiAnIzE5MTk3MCcsXG4gICAgICAgIG1pbnRjcmVhbTogJyNmNWZmZmEnLFxuICAgICAgICBtaXN0eXJvc2U6ICcjZmZlNGUxJyxcbiAgICAgICAgbW9jY2FzaW46ICcjZmZlNGI1JyxcbiAgICAgICAgbmF2YWpvd2hpdGU6ICcjZmZkZWFkJyxcbiAgICAgICAgbmF2eTogJyMwMDAwODAnLFxuICAgICAgICBvbGRsYWNlOiAnI2ZkZjVlNicsXG4gICAgICAgIG9saXZlOiAnIzgwODAwMCcsXG4gICAgICAgIG9saXZlZHJhYjogJyM2YjhlMjMnLFxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgb3JhbmdlcmVkOiAnI2ZmNDUwMCcsXG4gICAgICAgIG9yY2hpZDogJyNkYTcwZDYnLFxuICAgICAgICBwYWxlZ29sZGVucm9kOiAnI2VlZThhYScsXG4gICAgICAgIHBhbGVncmVlbjogJyM5OGZiOTgnLFxuICAgICAgICBwYWxldHVycXVvaXNlOiAnI2FmZWVlZScsXG4gICAgICAgIHBhbGV2aW9sZXRyZWQ6ICcjZGI3MDkzJyxcbiAgICAgICAgcGFwYXlhd2hpcDogJyNmZmVmZDUnLFxuICAgICAgICBwZWFjaHB1ZmY6ICcjZmZkYWI5JyxcbiAgICAgICAgcGVydTogJyNjZDg1M2YnLFxuICAgICAgICBwaW5rOiAnI2ZmYzBjYicsXG4gICAgICAgIHBsdW06ICcjZGRhMGRkJyxcbiAgICAgICAgcG93ZGVyYmx1ZTogJyNiMGUwZTYnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJyxcbiAgICAgICAgcmViZWNjYXB1cnBsZTogJyM2NjMzOTknLFxuICAgICAgICByZWQ6ICcjZmYwMDAwJyxcbiAgICAgICAgcm9zeWJyb3duOiAnI2JjOGY4ZicsXG4gICAgICAgIHJveWFsYmx1ZTogJyM0MTY5ZTEnLFxuICAgICAgICBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJyxcbiAgICAgICAgc2FuZHlicm93bjogJyNmNGE0NjAnLFxuICAgICAgICBzZWFncmVlbjogJyMyZThiNTcnLFxuICAgICAgICBzZWFzaGVsbDogJyNmZmY1ZWUnLFxuICAgICAgICBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2lsdmVyOiAnI2MwYzBjMCcsXG4gICAgICAgIHNreWJsdWU6ICcjODdjZWViJyxcbiAgICAgICAgc2xhdGVibHVlOiAnIzZhNWFjZCcsXG4gICAgICAgIHNsYXRlZ3JheTogJyM3MDgwOTAnLFxuICAgICAgICBzbGF0ZWdyZXk6ICcjNzA4MDkwJyxcbiAgICAgICAgc25vdzogJyNmZmZhZmEnLFxuICAgICAgICBzcHJpbmdncmVlbjogJyMwMGZmN2YnLFxuICAgICAgICB0YW46ICcjZDJiNDhjJyxcbiAgICAgICAgdGVhbDogJyMwMDgwODAnLFxuICAgICAgICB0aGlzdGxlOiAnI2Q4YmZkOCcsXG4gICAgICAgIHRyYW5zcGFyZW50OiAnIzAwMDAwMDAwJyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsXG4gICAgICAgIHZpb2xldDogJyNlZTgyZWUnLFxuICAgICAgICB3aGVhdDogJyNmNWRlYjMnLFxuICAgICAgICB3aGl0ZTogJyNmZmZmZmYnLFxuICAgICAgICB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsXG4gICAgICAgIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICB5ZWxsb3dncmVlbjogJyM5YWNkMzInXG4gICAgfSxcbiAgICAvKiBBUEkgKi9cbiAgICBwYXJzZTogKGNvbG9yKSA9PiB7XG4gICAgICAgIGNvbG9yID0gY29sb3IudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgaGV4ID0gS2V5d29yZC5jb2xvcnNbY29sb3JdO1xuICAgICAgICBpZiAoIWhleClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmV0dXJuIEhleC5wYXJzZShoZXgpO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiAoY2hhbm5lbHMpID0+IHtcbiAgICAgICAgY29uc3QgaGV4ID0gSGV4LnN0cmluZ2lmeShjaGFubmVscyk7XG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBLZXl3b3JkLmNvbG9ycykge1xuICAgICAgICAgICAgaWYgKEtleXdvcmQuY29sb3JzW25hbWVdID09PSBoZXgpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IEtleXdvcmQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/color/keyword.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/color/rgb.js": +/*!******************************************************!*\ + !*** ../../../node_modules/khroma/dist/color/rgb.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _channels_reusable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../channels/reusable.js */ \"../../../node_modules/khroma/dist/channels/reusable.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: (color) => {\n const charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n const match = color.match(RGB.re);\n if (!match)\n return;\n const [, r, isRedPercentage, g, isGreenPercentage, b, isBluePercentage, a, isAlphaPercentage] = match;\n return _channels_reusable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].set({\n r: _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: (channels) => {\n const { r, g, b, a } = channels;\n if (a < 1) { // RGBA\n return `rgba(${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(r)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(g)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(b)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(a)})`;\n }\n else { // RGB\n return `rgb(${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(r)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(g)}, ${_utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(b)})`;\n }\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RGB);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL3JnYi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNrQztBQUNxQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRUFBb0I7QUFDbkMsZUFBZSx1RUFBaUI7QUFDaEMsZUFBZSx1RUFBaUI7QUFDaEMsZUFBZSx1RUFBaUI7QUFDaEMsbUJBQW1CLHVFQUFpQjtBQUNwQyxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLGFBQWE7QUFDN0IscUJBQXFCO0FBQ3JCLDJCQUEyQixrRUFBWSxJQUFJLElBQUksa0VBQVksSUFBSSxJQUFJLGtFQUFZLElBQUksSUFBSSxrRUFBWSxJQUFJO0FBQ3ZHO0FBQ0EsZUFBZTtBQUNmLDBCQUEwQixrRUFBWSxJQUFJLElBQUksa0VBQVksSUFBSSxJQUFJLGtFQUFZLElBQUk7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbG9yL3JnYi5qcz8yN2ZhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IF8gZnJvbSAnLi4vdXRpbHMvaW5kZXguanMnO1xuaW1wb3J0IENoYW5uZWxzUmV1c2FibGUgZnJvbSAnLi4vY2hhbm5lbHMvcmV1c2FibGUuanMnO1xuLyogTUFJTiAqL1xuY29uc3QgUkdCID0ge1xuICAgIC8qIFZBUklBQkxFUyAqL1xuICAgIHJlOiAvXnJnYmE/XFwoXFxzKj8oLT8oPzpcXGQrKD86XFwuXFxkKyk/fCg/OlxcLlxcZCspKSg/OmVcXGQrKT8oJT8pKVxccyo/KD86LHxcXHMpXFxzKj8oLT8oPzpcXGQrKD86XFwuXFxkKyk/fCg/OlxcLlxcZCspKSg/OmVcXGQrKT8oJT8pKVxccyo/KD86LHxcXHMpXFxzKj8oLT8oPzpcXGQrKD86XFwuXFxkKyk/fCg/OlxcLlxcZCspKSg/OmVcXGQrKT8oJT8pKSg/Olxccyo/KD86LHxcXC8pXFxzKj9cXCs/KC0/KD86XFxkKyg/OlxcLlxcZCspP3woPzpcXC5cXGQrKSkoPzplXFxkKyk/KCU/KSkpP1xccyo/XFwpJC9pLFxuICAgIC8qIEFQSSAqL1xuICAgIHBhcnNlOiAoY29sb3IpID0+IHtcbiAgICAgICAgY29uc3QgY2hhckNvZGUgPSBjb2xvci5jaGFyQ29kZUF0KDApO1xuICAgICAgICBpZiAoY2hhckNvZGUgIT09IDExNCAmJiBjaGFyQ29kZSAhPT0gODIpXG4gICAgICAgICAgICByZXR1cm47IC8vICdyJy8nUidcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjb2xvci5tYXRjaChSR0IucmUpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBbLCByLCBpc1JlZFBlcmNlbnRhZ2UsIGcsIGlzR3JlZW5QZXJjZW50YWdlLCBiLCBpc0JsdWVQZXJjZW50YWdlLCBhLCBpc0FscGhhUGVyY2VudGFnZV0gPSBtYXRjaDtcbiAgICAgICAgcmV0dXJuIENoYW5uZWxzUmV1c2FibGUuc2V0KHtcbiAgICAgICAgICAgIHI6IF8uY2hhbm5lbC5jbGFtcC5yKGlzUmVkUGVyY2VudGFnZSA/IHBhcnNlRmxvYXQocikgKiAyLjU1IDogcGFyc2VGbG9hdChyKSksXG4gICAgICAgICAgICBnOiBfLmNoYW5uZWwuY2xhbXAuZyhpc0dyZWVuUGVyY2VudGFnZSA/IHBhcnNlRmxvYXQoZykgKiAyLjU1IDogcGFyc2VGbG9hdChnKSksXG4gICAgICAgICAgICBiOiBfLmNoYW5uZWwuY2xhbXAuYihpc0JsdWVQZXJjZW50YWdlID8gcGFyc2VGbG9hdChiKSAqIDIuNTUgOiBwYXJzZUZsb2F0KGIpKSxcbiAgICAgICAgICAgIGE6IGEgPyBfLmNoYW5uZWwuY2xhbXAuYShpc0FscGhhUGVyY2VudGFnZSA/IHBhcnNlRmxvYXQoYSkgLyAxMDAgOiBwYXJzZUZsb2F0KGEpKSA6IDFcbiAgICAgICAgfSwgY29sb3IpO1xuICAgIH0sXG4gICAgc3RyaW5naWZ5OiAoY2hhbm5lbHMpID0+IHtcbiAgICAgICAgY29uc3QgeyByLCBnLCBiLCBhIH0gPSBjaGFubmVscztcbiAgICAgICAgaWYgKGEgPCAxKSB7IC8vIFJHQkFcbiAgICAgICAgICAgIHJldHVybiBgcmdiYSgke18ubGFuZy5yb3VuZChyKX0sICR7Xy5sYW5nLnJvdW5kKGcpfSwgJHtfLmxhbmcucm91bmQoYil9LCAke18ubGFuZy5yb3VuZChhKX0pYDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8gUkdCXG4gICAgICAgICAgICByZXR1cm4gYHJnYigke18ubGFuZy5yb3VuZChyKX0sICR7Xy5sYW5nLnJvdW5kKGcpfSwgJHtfLmxhbmcucm91bmQoYil9KWA7XG4gICAgICAgIH1cbiAgICB9XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBSR0I7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/color/rgb.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/constants.js": +/*!******************************************************!*\ + !*** ../../../node_modules/khroma/dist/constants.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEC2HEX\": () => (/* binding */ DEC2HEX),\n/* harmony export */ \"TYPE\": () => (/* binding */ TYPE)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* IMPORT */\n\n/* MAIN */\nconst DEC2HEX = {};\nfor (let i = 0; i <= 255; i++)\n DEC2HEX[i] = _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\nconst TYPE = {\n ALL: 0,\n RGB: 1,\n HSL: 2\n};\n/* EXPORT */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L2NvbnN0YW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNpQztBQUNqQztBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUIsaUJBQWlCLG9FQUFjLEtBQUs7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9jb25zdGFudHMuanM/MzlkNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbmltcG9ydCBfIGZyb20gJy4vdXRpbHMvaW5kZXguanMnO1xuLyogTUFJTiAqL1xuY29uc3QgREVDMkhFWCA9IHt9O1xuZm9yIChsZXQgaSA9IDA7IGkgPD0gMjU1OyBpKyspXG4gICAgREVDMkhFWFtpXSA9IF8udW5pdC5kZWMyaGV4KGkpOyAvLyBQb3B1bGF0aW5nIGR5bmFtaWNhbGx5LCBzdHJpa2luZyBhIGJhbGFuY2UgYmV0d2VlbiBjb2RlIHNpemUgYW5kIHBlcmZvcm1hbmNlXG5jb25zdCBUWVBFID0ge1xuICAgIEFMTDogMCxcbiAgICBSR0I6IDEsXG4gICAgSFNMOiAyXG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgeyBERUMySEVYLCBUWVBFIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/constants.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/adjust.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/adjust.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* harmony import */ var _change_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./change.js */ \"../../../node_modules/khroma/dist/methods/change.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst adjust = (color, channels) => {\n const ch = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color);\n const changes = {};\n for (const c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return (0,_change_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(color, changes);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (adjust);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvYWRqdXN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ3NDO0FBQ0w7QUFDakM7QUFDQTtBQUNBLGVBQWUsNkRBQVc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxzREFBTTtBQUNqQjtBQUNBO0FBQ0EsaUVBQWUsTUFBTSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9tZXRob2RzL2FkanVzdC5qcz9jZjQ1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IENvbG9yIGZyb20gJy4uL2NvbG9yL2luZGV4LmpzJztcbmltcG9ydCBjaGFuZ2UgZnJvbSAnLi9jaGFuZ2UuanMnO1xuLyogTUFJTiAqL1xuY29uc3QgYWRqdXN0ID0gKGNvbG9yLCBjaGFubmVscykgPT4ge1xuICAgIGNvbnN0IGNoID0gQ29sb3IucGFyc2UoY29sb3IpO1xuICAgIGNvbnN0IGNoYW5nZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGMgaW4gY2hhbm5lbHMpIHtcbiAgICAgICAgaWYgKCFjaGFubmVsc1tjXSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjaGFuZ2VzW2NdID0gY2hbY10gKyBjaGFubmVsc1tjXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZShjb2xvciwgY2hhbmdlcyk7XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBhZGp1c3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/adjust.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/adjust_channel.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/adjust_channel.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst adjustChannel = (color, channel, amount) => {\n const channels = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color);\n const amountCurrent = channels[channel];\n const amountNext = _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(channels);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (adjustChannel);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvYWRqdXN0X2NoYW5uZWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDa0M7QUFDSTtBQUN0QztBQUNBO0FBQ0EscUJBQXFCLDZEQUFXO0FBQ2hDO0FBQ0EsdUJBQXVCLHFFQUFlO0FBQ3RDO0FBQ0E7QUFDQSxXQUFXLGlFQUFlO0FBQzFCO0FBQ0E7QUFDQSxpRUFBZSxhQUFhLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvYWRqdXN0X2NoYW5uZWwuanM/NDc3MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbmltcG9ydCBfIGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJztcbmltcG9ydCBDb2xvciBmcm9tICcuLi9jb2xvci9pbmRleC5qcyc7XG4vKiBNQUlOICovXG5jb25zdCBhZGp1c3RDaGFubmVsID0gKGNvbG9yLCBjaGFubmVsLCBhbW91bnQpID0+IHtcbiAgICBjb25zdCBjaGFubmVscyA9IENvbG9yLnBhcnNlKGNvbG9yKTtcbiAgICBjb25zdCBhbW91bnRDdXJyZW50ID0gY2hhbm5lbHNbY2hhbm5lbF07XG4gICAgY29uc3QgYW1vdW50TmV4dCA9IF8uY2hhbm5lbC5jbGFtcFtjaGFubmVsXShhbW91bnRDdXJyZW50ICsgYW1vdW50KTtcbiAgICBpZiAoYW1vdW50Q3VycmVudCAhPT0gYW1vdW50TmV4dClcbiAgICAgICAgY2hhbm5lbHNbY2hhbm5lbF0gPSBhbW91bnROZXh0O1xuICAgIHJldHVybiBDb2xvci5zdHJpbmdpZnkoY2hhbm5lbHMpO1xufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgYWRqdXN0Q2hhbm5lbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/adjust_channel.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/change.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/change.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst change = (color, channels) => {\n const ch = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color);\n for (const c in channels) {\n ch[c] = _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.clamp[c](channels[c]);\n }\n return _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].stringify(ch);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (change);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvY2hhbmdlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ2tDO0FBQ0k7QUFDdEM7QUFDQTtBQUNBLGVBQWUsNkRBQVc7QUFDMUI7QUFDQSxnQkFBZ0IscUVBQWU7QUFDL0I7QUFDQSxXQUFXLGlFQUFlO0FBQzFCO0FBQ0E7QUFDQSxpRUFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvY2hhbmdlLmpzPzhjNmYiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgXyBmcm9tICcuLi91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgQ29sb3IgZnJvbSAnLi4vY29sb3IvaW5kZXguanMnO1xuLyogTUFJTiAqL1xuY29uc3QgY2hhbmdlID0gKGNvbG9yLCBjaGFubmVscykgPT4ge1xuICAgIGNvbnN0IGNoID0gQ29sb3IucGFyc2UoY29sb3IpO1xuICAgIGZvciAoY29uc3QgYyBpbiBjaGFubmVscykge1xuICAgICAgICBjaFtjXSA9IF8uY2hhbm5lbC5jbGFtcFtjXShjaGFubmVsc1tjXSk7XG4gICAgfVxuICAgIHJldHVybiBDb2xvci5zdHJpbmdpZnkoY2gpO1xufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgY2hhbmdlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/change.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/channel.js": +/*!************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/channel.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst channel = (color, channel) => {\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lang.round(_color_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parse(color)[channel]);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (channel);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvY2hhbm5lbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNrQztBQUNJO0FBQ3RDO0FBQ0E7QUFDQSxXQUFXLGtFQUFZLENBQUMsNkRBQVc7QUFDbkM7QUFDQTtBQUNBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMva2hyb21hL2Rpc3QvbWV0aG9kcy9jaGFubmVsLmpzPzczZjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgXyBmcm9tICcuLi91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgQ29sb3IgZnJvbSAnLi4vY29sb3IvaW5kZXguanMnO1xuLyogTUFJTiAqL1xuY29uc3QgY2hhbm5lbCA9IChjb2xvciwgY2hhbm5lbCkgPT4ge1xuICAgIHJldHVybiBfLmxhbmcucm91bmQoQ29sb3IucGFyc2UoY29sb3IpW2NoYW5uZWxdKTtcbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IGNoYW5uZWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/channel.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/darken.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/darken.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _adjust_channel_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjust_channel.js */ \"../../../node_modules/khroma/dist/methods/adjust_channel.js\");\n/* IMPORT */\n\n/* MAIN */\nconst darken = (color, amount) => {\n return (0,_adjust_channel_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(color, 'l', -amount);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (darken);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvZGFya2VuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDZ0Q7QUFDaEQ7QUFDQTtBQUNBLFdBQVcsOERBQWE7QUFDeEI7QUFDQTtBQUNBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMva2hyb21hL2Rpc3QvbWV0aG9kcy9kYXJrZW4uanM/MmJkOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbmltcG9ydCBhZGp1c3RDaGFubmVsIGZyb20gJy4vYWRqdXN0X2NoYW5uZWwuanMnO1xuLyogTUFJTiAqL1xuY29uc3QgZGFya2VuID0gKGNvbG9yLCBhbW91bnQpID0+IHtcbiAgICByZXR1cm4gYWRqdXN0Q2hhbm5lbChjb2xvciwgJ2wnLCAtYW1vdW50KTtcbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IGRhcmtlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/darken.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/invert.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/invert.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* harmony import */ var _mix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mix.js */ \"../../../node_modules/khroma/dist/methods/mix.js\");\n/* IMPORT */\n\n\n/* MAIN */\nconst invert = (color, weight = 100) => {\n const inverse = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return (0,_mix_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(inverse, color, weight);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (invert);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvaW52ZXJ0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ3NDO0FBQ1g7QUFDM0I7QUFDQTtBQUNBLG9CQUFvQiw2REFBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQSxXQUFXLG1EQUFHO0FBQ2Q7QUFDQTtBQUNBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMva2hyb21hL2Rpc3QvbWV0aG9kcy9pbnZlcnQuanM/N2M0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbmltcG9ydCBDb2xvciBmcm9tICcuLi9jb2xvci9pbmRleC5qcyc7XG5pbXBvcnQgbWl4IGZyb20gJy4vbWl4LmpzJztcbi8qIE1BSU4gKi9cbmNvbnN0IGludmVydCA9IChjb2xvciwgd2VpZ2h0ID0gMTAwKSA9PiB7XG4gICAgY29uc3QgaW52ZXJzZSA9IENvbG9yLnBhcnNlKGNvbG9yKTtcbiAgICBpbnZlcnNlLnIgPSAyNTUgLSBpbnZlcnNlLnI7XG4gICAgaW52ZXJzZS5nID0gMjU1IC0gaW52ZXJzZS5nO1xuICAgIGludmVyc2UuYiA9IDI1NSAtIGludmVyc2UuYjtcbiAgICByZXR1cm4gbWl4KGludmVyc2UsIGNvbG9yLCB3ZWlnaHQpO1xufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgaW52ZXJ0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/invert.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/is_dark.js": +/*!************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/is_dark.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _is_light_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is_light.js */ \"../../../node_modules/khroma/dist/methods/is_light.js\");\n/* IMPORT */\n\n/* MAIN */\nconst isDark = (color) => {\n return !(0,_is_light_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(color);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isDark);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvaXNfZGFyay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ29DO0FBQ3BDO0FBQ0E7QUFDQSxZQUFZLHdEQUFPO0FBQ25CO0FBQ0E7QUFDQSxpRUFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvaXNfZGFyay5qcz84MTBmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IGlzTGlnaHQgZnJvbSAnLi9pc19saWdodC5qcyc7XG4vKiBNQUlOICovXG5jb25zdCBpc0RhcmsgPSAoY29sb3IpID0+IHtcbiAgICByZXR1cm4gIWlzTGlnaHQoY29sb3IpO1xufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgaXNEYXJrO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/is_dark.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/is_light.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/is_light.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _luminance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./luminance.js */ \"../../../node_modules/khroma/dist/methods/luminance.js\");\n/* IMPORT */\n\n/* MAIN */\nconst isLight = (color) => {\n return (0,_luminance_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(color) >= .5;\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isLight);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvaXNfbGlnaHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUN1QztBQUN2QztBQUNBO0FBQ0EsV0FBVyx5REFBUztBQUNwQjtBQUNBO0FBQ0EsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9tZXRob2RzL2lzX2xpZ2h0LmpzPzQ0MTMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgbHVtaW5hbmNlIGZyb20gJy4vbHVtaW5hbmNlLmpzJztcbi8qIE1BSU4gKi9cbmNvbnN0IGlzTGlnaHQgPSAoY29sb3IpID0+IHtcbiAgICByZXR1cm4gbHVtaW5hbmNlKGNvbG9yKSA+PSAuNTtcbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IGlzTGlnaHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/is_light.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/lighten.js": +/*!************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/lighten.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _adjust_channel_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adjust_channel.js */ \"../../../node_modules/khroma/dist/methods/adjust_channel.js\");\n/* IMPORT */\n\n/* MAIN */\nconst lighten = (color, amount) => {\n return (0,_adjust_channel_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(color, 'l', amount);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lighten);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbGlnaHRlbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ2dEO0FBQ2hEO0FBQ0E7QUFDQSxXQUFXLDhEQUFhO0FBQ3hCO0FBQ0E7QUFDQSxpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbGlnaHRlbi5qcz81NDUwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIElNUE9SVCAqL1xuaW1wb3J0IGFkanVzdENoYW5uZWwgZnJvbSAnLi9hZGp1c3RfY2hhbm5lbC5qcyc7XG4vKiBNQUlOICovXG5jb25zdCBsaWdodGVuID0gKGNvbG9yLCBhbW91bnQpID0+IHtcbiAgICByZXR1cm4gYWRqdXN0Q2hhbm5lbChjb2xvciwgJ2wnLCBhbW91bnQpO1xufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgbGlnaHRlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/lighten.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/luminance.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/luminance.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* IMPORT */\n\n\n/* MAIN */\n//SOURCE: https://planetcalc.com/7779\nconst luminance = (color) => {\n const { r, g, b } = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color);\n const luminance = .2126 * _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.toLinear(r) + .7152 * _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.toLinear(g) + .0722 * _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].channel.toLinear(b);\n return _utils_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].lang.round(luminance);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (luminance);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbHVtaW5hbmNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ2tDO0FBQ0k7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVLEVBQUUsNkRBQVc7QUFDbkMsOEJBQThCLHdFQUFrQixjQUFjLHdFQUFrQixjQUFjLHdFQUFrQjtBQUNoSCxXQUFXLGtFQUFZO0FBQ3ZCO0FBQ0E7QUFDQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbHVtaW5hbmNlLmpzP2I3ZjAiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgXyBmcm9tICcuLi91dGlscy9pbmRleC5qcyc7XG5pbXBvcnQgQ29sb3IgZnJvbSAnLi4vY29sb3IvaW5kZXguanMnO1xuLyogTUFJTiAqL1xuLy9TT1VSQ0U6IGh0dHBzOi8vcGxhbmV0Y2FsYy5jb20vNzc3OVxuY29uc3QgbHVtaW5hbmNlID0gKGNvbG9yKSA9PiB7XG4gICAgY29uc3QgeyByLCBnLCBiIH0gPSBDb2xvci5wYXJzZShjb2xvcik7XG4gICAgY29uc3QgbHVtaW5hbmNlID0gLjIxMjYgKiBfLmNoYW5uZWwudG9MaW5lYXIocikgKyAuNzE1MiAqIF8uY2hhbm5lbC50b0xpbmVhcihnKSArIC4wNzIyICogXy5jaGFubmVsLnRvTGluZWFyKGIpO1xuICAgIHJldHVybiBfLmxhbmcucm91bmQobHVtaW5hbmNlKTtcbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IGx1bWluYW5jZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/luminance.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/mix.js": +/*!********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/mix.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* harmony import */ var _rgba_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rgba.js */ \"../../../node_modules/khroma/dist/methods/rgba.js\");\n/* IMPORT */\n\n\n/* MAIN */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nconst mix = (color1, color2, weight = 50) => {\n const { r: r1, g: g1, b: b1, a: a1 } = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color1);\n const { r: r2, g: g2, b: b2, a: a2 } = _color_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parse(color2);\n const weightScale = weight / 100;\n const weightNormalized = (weightScale * 2) - 1;\n const alphaDelta = a1 - a2;\n const weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta);\n const weight1 = (weight1combined + 1) / 2;\n const weight2 = 1 - weight1;\n const r = (r1 * weight1) + (r2 * weight2);\n const g = (g1 * weight1) + (g2 * weight2);\n const b = (b1 * weight1) + (b2 * weight2);\n const a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return (0,_rgba_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(r, g, b, a);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mix);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbWl4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ3NDO0FBQ1Q7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsWUFBWSw2QkFBNkIsRUFBRSw2REFBVztBQUN0RCxZQUFZLDZCQUE2QixFQUFFLDZEQUFXO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvREFBSTtBQUNmO0FBQ0E7QUFDQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvbWl4LmpzPzk2NTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgQ29sb3IgZnJvbSAnLi4vY29sb3IvaW5kZXguanMnO1xuaW1wb3J0IHJnYmEgZnJvbSAnLi9yZ2JhLmpzJztcbi8qIE1BSU4gKi9cbi8vU09VUkNFOiBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy9kYXJ0LXNhc3MvYmxvYi83NDU3ZDJlOWU3ZTYyM2Q5ODQ0ZmZkMDM3YTA3MGNmMzJkMzljMzQ4L2xpYi9zcmMvZnVuY3Rpb25zL2NvbG9yLmRhcnQjTDcxOC1MNzU2XG5jb25zdCBtaXggPSAoY29sb3IxLCBjb2xvcjIsIHdlaWdodCA9IDUwKSA9PiB7XG4gICAgY29uc3QgeyByOiByMSwgZzogZzEsIGI6IGIxLCBhOiBhMSB9ID0gQ29sb3IucGFyc2UoY29sb3IxKTtcbiAgICBjb25zdCB7IHI6IHIyLCBnOiBnMiwgYjogYjIsIGE6IGEyIH0gPSBDb2xvci5wYXJzZShjb2xvcjIpO1xuICAgIGNvbnN0IHdlaWdodFNjYWxlID0gd2VpZ2h0IC8gMTAwO1xuICAgIGNvbnN0IHdlaWdodE5vcm1hbGl6ZWQgPSAod2VpZ2h0U2NhbGUgKiAyKSAtIDE7XG4gICAgY29uc3QgYWxwaGFEZWx0YSA9IGExIC0gYTI7XG4gICAgY29uc3Qgd2VpZ2h0MWNvbWJpbmVkID0gKCh3ZWlnaHROb3JtYWxpemVkICogYWxwaGFEZWx0YSkgPT09IC0xKSA/IHdlaWdodE5vcm1hbGl6ZWQgOiAod2VpZ2h0Tm9ybWFsaXplZCArIGFscGhhRGVsdGEpIC8gKDEgKyB3ZWlnaHROb3JtYWxpemVkICogYWxwaGFEZWx0YSk7XG4gICAgY29uc3Qgd2VpZ2h0MSA9ICh3ZWlnaHQxY29tYmluZWQgKyAxKSAvIDI7XG4gICAgY29uc3Qgd2VpZ2h0MiA9IDEgLSB3ZWlnaHQxO1xuICAgIGNvbnN0IHIgPSAocjEgKiB3ZWlnaHQxKSArIChyMiAqIHdlaWdodDIpO1xuICAgIGNvbnN0IGcgPSAoZzEgKiB3ZWlnaHQxKSArIChnMiAqIHdlaWdodDIpO1xuICAgIGNvbnN0IGIgPSAoYjEgKiB3ZWlnaHQxKSArIChiMiAqIHdlaWdodDIpO1xuICAgIGNvbnN0IGEgPSAoYTEgKiB3ZWlnaHRTY2FsZSkgKyAoYTIgKiAoMSAtIHdlaWdodFNjYWxlKSk7XG4gICAgcmV0dXJuIHJnYmEociwgZywgYiwgYSk7XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBtaXg7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/mix.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/methods/rgba.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/khroma/dist/methods/rgba.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/index.js */ \"../../../node_modules/khroma/dist/utils/index.js\");\n/* harmony import */ var _channels_reusable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../channels/reusable.js */ \"../../../node_modules/khroma/dist/channels/reusable.js\");\n/* harmony import */ var _color_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../color/index.js */ \"../../../node_modules/khroma/dist/color/index.js\");\n/* harmony import */ var _change_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./change.js */ \"../../../node_modules/khroma/dist/methods/change.js\");\n/* IMPORT */\n\n\n\n\n/* MAIN */\nconst rgba = (r, g, b = 0, a = 1) => {\n if (typeof r !== 'number')\n return (0,_change_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(r, { a: g });\n const channels = _channels_reusable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set({\n r: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.clamp.r(r),\n g: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.clamp.g(g),\n b: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.clamp.b(b),\n a: _utils_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].channel.clamp.a(a)\n });\n return _color_index_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].stringify(channels);\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rgba);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L21ldGhvZHMvcmdiYS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ2tDO0FBQ3FCO0FBQ2pCO0FBQ0w7QUFDakM7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBTSxNQUFNLE1BQU07QUFDakMscUJBQXFCLGlFQUFvQjtBQUN6QyxXQUFXLHVFQUFpQjtBQUM1QixXQUFXLHVFQUFpQjtBQUM1QixXQUFXLHVFQUFpQjtBQUM1QixXQUFXLHVFQUFpQjtBQUM1QixLQUFLO0FBQ0wsV0FBVyxpRUFBZTtBQUMxQjtBQUNBO0FBQ0EsaUVBQWUsSUFBSSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9raHJvbWEvZGlzdC9tZXRob2RzL3JnYmEuanM/Yjk3YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbmltcG9ydCBfIGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJztcbmltcG9ydCBDaGFubmVsc1JldXNhYmxlIGZyb20gJy4uL2NoYW5uZWxzL3JldXNhYmxlLmpzJztcbmltcG9ydCBDb2xvciBmcm9tICcuLi9jb2xvci9pbmRleC5qcyc7XG5pbXBvcnQgY2hhbmdlIGZyb20gJy4vY2hhbmdlLmpzJztcbi8qIE1BSU4gKi9cbmNvbnN0IHJnYmEgPSAociwgZywgYiA9IDAsIGEgPSAxKSA9PiB7XG4gICAgaWYgKHR5cGVvZiByICE9PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIGNoYW5nZShyLCB7IGE6IGcgfSk7XG4gICAgY29uc3QgY2hhbm5lbHMgPSBDaGFubmVsc1JldXNhYmxlLnNldCh7XG4gICAgICAgIHI6IF8uY2hhbm5lbC5jbGFtcC5yKHIpLFxuICAgICAgICBnOiBfLmNoYW5uZWwuY2xhbXAuZyhnKSxcbiAgICAgICAgYjogXy5jaGFubmVsLmNsYW1wLmIoYiksXG4gICAgICAgIGE6IF8uY2hhbm5lbC5jbGFtcC5hKGEpXG4gICAgfSk7XG4gICAgcmV0dXJuIENvbG9yLnN0cmluZ2lmeShjaGFubmVscyk7XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCByZ2JhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/methods/rgba.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/utils/channel.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/khroma/dist/utils/channel.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* IMPORT */\n/* MAIN */\nconst Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: (r) => r >= 255 ? 255 : (r < 0 ? 0 : r),\n g: (g) => g >= 255 ? 255 : (g < 0 ? 0 : g),\n b: (b) => b >= 255 ? 255 : (b < 0 ? 0 : b),\n h: (h) => h % 360,\n s: (s) => s >= 100 ? 100 : (s < 0 ? 0 : s),\n l: (l) => l >= 100 ? 100 : (l < 0 ? 0 : l),\n a: (a) => a >= 1 ? 1 : (a < 0 ? 0 : a)\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: (c) => {\n const n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: (p, q, t) => {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: ({ h, s, l }, channel) => {\n if (!s)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n const q = (l < .5) ? l * (1 + s) : (l + s) - (l * s);\n const p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: ({ r, g, b }, channel) => {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n const d = max - min;\n const s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Channel);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2NoYW5uZWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2NoYW5uZWwuanM/MTk0MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBJTVBPUlQgKi9cbi8qIE1BSU4gKi9cbmNvbnN0IENoYW5uZWwgPSB7XG4gICAgLyogQ0xBTVAgKi9cbiAgICBtaW46IHtcbiAgICAgICAgcjogMCxcbiAgICAgICAgZzogMCxcbiAgICAgICAgYjogMCxcbiAgICAgICAgczogMCxcbiAgICAgICAgbDogMCxcbiAgICAgICAgYTogMFxuICAgIH0sXG4gICAgbWF4OiB7XG4gICAgICAgIHI6IDI1NSxcbiAgICAgICAgZzogMjU1LFxuICAgICAgICBiOiAyNTUsXG4gICAgICAgIGg6IDM2MCxcbiAgICAgICAgczogMTAwLFxuICAgICAgICBsOiAxMDAsXG4gICAgICAgIGE6IDFcbiAgICB9LFxuICAgIGNsYW1wOiB7XG4gICAgICAgIHI6IChyKSA9PiByID49IDI1NSA/IDI1NSA6IChyIDwgMCA/IDAgOiByKSxcbiAgICAgICAgZzogKGcpID0+IGcgPj0gMjU1ID8gMjU1IDogKGcgPCAwID8gMCA6IGcpLFxuICAgICAgICBiOiAoYikgPT4gYiA+PSAyNTUgPyAyNTUgOiAoYiA8IDAgPyAwIDogYiksXG4gICAgICAgIGg6IChoKSA9PiBoICUgMzYwLFxuICAgICAgICBzOiAocykgPT4gcyA+PSAxMDAgPyAxMDAgOiAocyA8IDAgPyAwIDogcyksXG4gICAgICAgIGw6IChsKSA9PiBsID49IDEwMCA/IDEwMCA6IChsIDwgMCA/IDAgOiBsKSxcbiAgICAgICAgYTogKGEpID0+IGEgPj0gMSA/IDEgOiAoYSA8IDAgPyAwIDogYSlcbiAgICB9LFxuICAgIC8qIENPTlZFUlNJT04gKi9cbiAgICAvL1NPVVJDRTogaHR0cHM6Ly9wbGFuZXRjYWxjLmNvbS83Nzc5XG4gICAgdG9MaW5lYXI6IChjKSA9PiB7XG4gICAgICAgIGNvbnN0IG4gPSBjIC8gMjU1O1xuICAgICAgICByZXR1cm4gYyA+IC4wMzkyOCA/IE1hdGgucG93KCgobiArIC4wNTUpIC8gMS4wNTUpLCAyLjQpIDogbiAvIDEyLjkyO1xuICAgIH0sXG4gICAgLy9TT1VSQ0U6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL21qYWNrc29uLzUzMTEyNTZcbiAgICBodWUycmdiOiAocCwgcSwgdCkgPT4ge1xuICAgICAgICBpZiAodCA8IDApXG4gICAgICAgICAgICB0ICs9IDE7XG4gICAgICAgIGlmICh0ID4gMSlcbiAgICAgICAgICAgIHQgLT0gMTtcbiAgICAgICAgaWYgKHQgPCAxIC8gNilcbiAgICAgICAgICAgIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgICAgICBpZiAodCA8IDEgLyAyKVxuICAgICAgICAgICAgcmV0dXJuIHE7XG4gICAgICAgIGlmICh0IDwgMiAvIDMpXG4gICAgICAgICAgICByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH0sXG4gICAgaHNsMnJnYjogKHsgaCwgcywgbCB9LCBjaGFubmVsKSA9PiB7XG4gICAgICAgIGlmICghcylcbiAgICAgICAgICAgIHJldHVybiBsICogMi41NTsgLy8gQWNocm9tYXRpY1xuICAgICAgICBoIC89IDM2MDtcbiAgICAgICAgcyAvPSAxMDA7XG4gICAgICAgIGwgLz0gMTAwO1xuICAgICAgICBjb25zdCBxID0gKGwgPCAuNSkgPyBsICogKDEgKyBzKSA6IChsICsgcykgLSAobCAqIHMpO1xuICAgICAgICBjb25zdCBwID0gMiAqIGwgLSBxO1xuICAgICAgICBzd2l0Y2ggKGNoYW5uZWwpIHtcbiAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gQ2hhbm5lbC5odWUycmdiKHAsIHEsIGggKyAxIC8gMykgKiAyNTU7XG4gICAgICAgICAgICBjYXNlICdnJzogcmV0dXJuIENoYW5uZWwuaHVlMnJnYihwLCBxLCBoKSAqIDI1NTtcbiAgICAgICAgICAgIGNhc2UgJ2InOiByZXR1cm4gQ2hhbm5lbC5odWUycmdiKHAsIHEsIGggLSAxIC8gMykgKiAyNTU7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJnYjJoc2w6ICh7IHIsIGcsIGIgfSwgY2hhbm5lbCkgPT4ge1xuICAgICAgICByIC89IDI1NTtcbiAgICAgICAgZyAvPSAyNTU7XG4gICAgICAgIGIgLz0gMjU1O1xuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG4gICAgICAgIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG4gICAgICAgIGlmIChjaGFubmVsID09PSAnbCcpXG4gICAgICAgICAgICByZXR1cm4gbCAqIDEwMDtcbiAgICAgICAgaWYgKG1heCA9PT0gbWluKVxuICAgICAgICAgICAgcmV0dXJuIDA7IC8vIEFjaHJvbWF0aWNcbiAgICAgICAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgICAgICAgY29uc3QgcyA9IChsID4gLjUpID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcbiAgICAgICAgaWYgKGNoYW5uZWwgPT09ICdzJylcbiAgICAgICAgICAgIHJldHVybiBzICogMTAwO1xuICAgICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICAgICAgY2FzZSByOiByZXR1cm4gKChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApKSAqIDYwO1xuICAgICAgICAgICAgY2FzZSBnOiByZXR1cm4gKChiIC0gcikgLyBkICsgMikgKiA2MDtcbiAgICAgICAgICAgIGNhc2UgYjogcmV0dXJuICgociAtIGcpIC8gZCArIDQpICogNjA7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gLTE7IC8vVFNDOiBUeXBlU2NyaXB0IGlzIHN0dXBpZCBhbmQgY29tcGxhaW5zIGlmIHRoZXJlIGlzbid0IHRoaXMgdXNlbGVzcyBkZWZhdWx0IHN0YXRlbWVudFxuICAgICAgICB9XG4gICAgfVxufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgQ2hhbm5lbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/utils/channel.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/utils/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/khroma/dist/utils/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _channel_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./channel.js */ \"../../../node_modules/khroma/dist/utils/channel.js\");\n/* harmony import */ var _lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lang.js */ \"../../../node_modules/khroma/dist/utils/lang.js\");\n/* harmony import */ var _unit_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./unit.js */ \"../../../node_modules/khroma/dist/utils/unit.js\");\n/* IMPORT */\n\n\n\n/* MAIN */\nconst Utils = {\n channel: _channel_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n lang: _lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n unit: _unit_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Utils);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNtQztBQUNOO0FBQ0E7QUFDN0I7QUFDQTtBQUNBLFdBQVc7QUFDWCxRQUFRO0FBQ1IsUUFBUTtBQUNSO0FBQ0E7QUFDQSxpRUFBZSxLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2luZGV4LmpzPzAwMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogSU1QT1JUICovXG5pbXBvcnQgY2hhbm5lbCBmcm9tICcuL2NoYW5uZWwuanMnO1xuaW1wb3J0IGxhbmcgZnJvbSAnLi9sYW5nLmpzJztcbmltcG9ydCB1bml0IGZyb20gJy4vdW5pdC5qcyc7XG4vKiBNQUlOICovXG5jb25zdCBVdGlscyA9IHtcbiAgICBjaGFubmVsLFxuICAgIGxhbmcsXG4gICAgdW5pdFxufTtcbi8qIEVYUE9SVCAqL1xuZXhwb3J0IGRlZmF1bHQgVXRpbHM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/utils/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/utils/lang.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/khroma/dist/utils/lang.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* MAIN */\nconst Lang = {\n /* API */\n clamp: (number, lower, upper) => {\n if (lower > upper)\n return Math.min(lower, Math.max(upper, number));\n return Math.min(upper, Math.max(lower, number));\n },\n round: (number) => {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Lang);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2xhbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL2xhbmcuanM/NDUwOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNQUlOICovXG5jb25zdCBMYW5nID0ge1xuICAgIC8qIEFQSSAqL1xuICAgIGNsYW1wOiAobnVtYmVyLCBsb3dlciwgdXBwZXIpID0+IHtcbiAgICAgICAgaWYgKGxvd2VyID4gdXBwZXIpXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4obG93ZXIsIE1hdGgubWF4KHVwcGVyLCBudW1iZXIpKTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKHVwcGVyLCBNYXRoLm1heChsb3dlciwgbnVtYmVyKSk7XG4gICAgfSxcbiAgICByb3VuZDogKG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIgKiAxMDAwMDAwMDAwMCkgLyAxMDAwMDAwMDAwMDtcbiAgICB9XG59O1xuLyogRVhQT1JUICovXG5leHBvcnQgZGVmYXVsdCBMYW5nO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/utils/lang.js\n"); + +/***/ }), + +/***/ "../../../node_modules/khroma/dist/utils/unit.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/khroma/dist/utils/unit.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* MAIN */\nconst Unit = {\n /* API */\n dec2hex: (dec) => {\n const hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : `0${hex}`;\n }\n};\n/* EXPORT */\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Unit);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL3VuaXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsSUFBSTtBQUM5QztBQUNBO0FBQ0E7QUFDQSxpRUFBZSxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tocm9tYS9kaXN0L3V0aWxzL3VuaXQuanM/ZGZiNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNQUlOICovXG5jb25zdCBVbml0ID0ge1xuICAgIC8qIEFQSSAqL1xuICAgIGRlYzJoZXg6IChkZWMpID0+IHtcbiAgICAgICAgY29uc3QgaGV4ID0gTWF0aC5yb3VuZChkZWMpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgcmV0dXJuIGhleC5sZW5ndGggPiAxID8gaGV4IDogYDAke2hleH1gO1xuICAgIH1cbn07XG4vKiBFWFBPUlQgKi9cbmV4cG9ydCBkZWZhdWx0IFVuaXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/khroma/dist/utils/unit.js\n"); + +/***/ }), + +/***/ "../../../node_modules/kleur/index.mjs": +/*!*********************************************!*\ + !*** ../../../node_modules/kleur/index.mjs ***! + \*********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.6\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}) || 0);\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ($);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tsZXVyL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRWI7QUFDQTtBQUNBLElBQUksbURBQW1ELEVBQUUsc3FDQUFXLElBQUksQ0FBRTtBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLGdCQUFnQjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0IsS0FBSztBQUNyQixpQkFBaUIsTUFBTTtBQUN2Qiw2QkFBNkIsTUFBTTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9rbGV1ci9pbmRleC5tanM/MTcxMiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmxldCBGT1JDRV9DT0xPUiwgTk9ERV9ESVNBQkxFX0NPTE9SUywgTk9fQ09MT1IsIFRFUk0sIGlzVFRZPXRydWU7XG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7XG5cdCh7IEZPUkNFX0NPTE9SLCBOT0RFX0RJU0FCTEVfQ09MT1JTLCBOT19DT0xPUiwgVEVSTSB9ID0gcHJvY2Vzcy5lbnYgfHwge30pO1xuXHRpc1RUWSA9IHByb2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rkb3V0LmlzVFRZO1xufVxuXG5jb25zdCAkID0ge1xuXHRlbmFibGVkOiAhTk9ERV9ESVNBQkxFX0NPTE9SUyAmJiBOT19DT0xPUiA9PSBudWxsICYmIFRFUk0gIT09ICdkdW1iJyAmJiAoXG5cdFx0Rk9SQ0VfQ09MT1IgIT0gbnVsbCAmJiBGT1JDRV9DT0xPUiAhPT0gJzAnIHx8IGlzVFRZXG5cdCksXG5cblx0Ly8gbW9kaWZpZXJzXG5cdHJlc2V0OiBpbml0KDAsIDApLFxuXHRib2xkOiBpbml0KDEsIDIyKSxcblx0ZGltOiBpbml0KDIsIDIyKSxcblx0aXRhbGljOiBpbml0KDMsIDIzKSxcblx0dW5kZXJsaW5lOiBpbml0KDQsIDI0KSxcblx0aW52ZXJzZTogaW5pdCg3LCAyNyksXG5cdGhpZGRlbjogaW5pdCg4LCAyOCksXG5cdHN0cmlrZXRocm91Z2g6IGluaXQoOSwgMjkpLFxuXG5cdC8vIGNvbG9yc1xuXHRibGFjazogaW5pdCgzMCwgMzkpLFxuXHRyZWQ6IGluaXQoMzEsIDM5KSxcblx0Z3JlZW46IGluaXQoMzIsIDM5KSxcblx0eWVsbG93OiBpbml0KDMzLCAzOSksXG5cdGJsdWU6IGluaXQoMzQsIDM5KSxcblx0bWFnZW50YTogaW5pdCgzNSwgMzkpLFxuXHRjeWFuOiBpbml0KDM2LCAzOSksXG5cdHdoaXRlOiBpbml0KDM3LCAzOSksXG5cdGdyYXk6IGluaXQoOTAsIDM5KSxcblx0Z3JleTogaW5pdCg5MCwgMzkpLFxuXG5cdC8vIGJhY2tncm91bmQgY29sb3JzXG5cdGJnQmxhY2s6IGluaXQoNDAsIDQ5KSxcblx0YmdSZWQ6IGluaXQoNDEsIDQ5KSxcblx0YmdHcmVlbjogaW5pdCg0MiwgNDkpLFxuXHRiZ1llbGxvdzogaW5pdCg0MywgNDkpLFxuXHRiZ0JsdWU6IGluaXQoNDQsIDQ5KSxcblx0YmdNYWdlbnRhOiBpbml0KDQ1LCA0OSksXG5cdGJnQ3lhbjogaW5pdCg0NiwgNDkpLFxuXHRiZ1doaXRlOiBpbml0KDQ3LCA0OSlcbn07XG5cbmZ1bmN0aW9uIHJ1bihhcnIsIHN0cikge1xuXHRsZXQgaT0wLCB0bXAsIGJlZz0nJywgZW5kPScnO1xuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdHRtcCA9IGFycltpXTtcblx0XHRiZWcgKz0gdG1wLm9wZW47XG5cdFx0ZW5kICs9IHRtcC5jbG9zZTtcblx0XHRpZiAoISF+c3RyLmluZGV4T2YodG1wLmNsb3NlKSkge1xuXHRcdFx0c3RyID0gc3RyLnJlcGxhY2UodG1wLnJneCwgdG1wLmNsb3NlICsgdG1wLm9wZW4pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYmVnICsgc3RyICsgZW5kO1xufVxuXG5mdW5jdGlvbiBjaGFpbihoYXMsIGtleXMpIHtcblx0bGV0IGN0eCA9IHsgaGFzLCBrZXlzIH07XG5cblx0Y3R4LnJlc2V0ID0gJC5yZXNldC5iaW5kKGN0eCk7XG5cdGN0eC5ib2xkID0gJC5ib2xkLmJpbmQoY3R4KTtcblx0Y3R4LmRpbSA9ICQuZGltLmJpbmQoY3R4KTtcblx0Y3R4Lml0YWxpYyA9ICQuaXRhbGljLmJpbmQoY3R4KTtcblx0Y3R4LnVuZGVybGluZSA9ICQudW5kZXJsaW5lLmJpbmQoY3R4KTtcblx0Y3R4LmludmVyc2UgPSAkLmludmVyc2UuYmluZChjdHgpO1xuXHRjdHguaGlkZGVuID0gJC5oaWRkZW4uYmluZChjdHgpO1xuXHRjdHguc3RyaWtldGhyb3VnaCA9ICQuc3RyaWtldGhyb3VnaC5iaW5kKGN0eCk7XG5cblx0Y3R4LmJsYWNrID0gJC5ibGFjay5iaW5kKGN0eCk7XG5cdGN0eC5yZWQgPSAkLnJlZC5iaW5kKGN0eCk7XG5cdGN0eC5ncmVlbiA9ICQuZ3JlZW4uYmluZChjdHgpO1xuXHRjdHgueWVsbG93ID0gJC55ZWxsb3cuYmluZChjdHgpO1xuXHRjdHguYmx1ZSA9ICQuYmx1ZS5iaW5kKGN0eCk7XG5cdGN0eC5tYWdlbnRhID0gJC5tYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmN5YW4gPSAkLmN5YW4uYmluZChjdHgpO1xuXHRjdHgud2hpdGUgPSAkLndoaXRlLmJpbmQoY3R4KTtcblx0Y3R4LmdyYXkgPSAkLmdyYXkuYmluZChjdHgpO1xuXHRjdHguZ3JleSA9ICQuZ3JleS5iaW5kKGN0eCk7XG5cblx0Y3R4LmJnQmxhY2sgPSAkLmJnQmxhY2suYmluZChjdHgpO1xuXHRjdHguYmdSZWQgPSAkLmJnUmVkLmJpbmQoY3R4KTtcblx0Y3R4LmJnR3JlZW4gPSAkLmJnR3JlZW4uYmluZChjdHgpO1xuXHRjdHguYmdZZWxsb3cgPSAkLmJnWWVsbG93LmJpbmQoY3R4KTtcblx0Y3R4LmJnQmx1ZSA9ICQuYmdCbHVlLmJpbmQoY3R4KTtcblx0Y3R4LmJnTWFnZW50YSA9ICQuYmdNYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmJnQ3lhbiA9ICQuYmdDeWFuLmJpbmQoY3R4KTtcblx0Y3R4LmJnV2hpdGUgPSAkLmJnV2hpdGUuYmluZChjdHgpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UpIHtcblx0bGV0IGJsayA9IHtcblx0XHRvcGVuOiBgXFx4MWJbJHtvcGVufW1gLFxuXHRcdGNsb3NlOiBgXFx4MWJbJHtjbG9zZX1tYCxcblx0XHRyZ3g6IG5ldyBSZWdFeHAoYFxcXFx4MWJcXFxcWyR7Y2xvc2V9bWAsICdnJylcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uICh0eHQpIHtcblx0XHRpZiAodGhpcyAhPT0gdm9pZCAwICYmIHRoaXMuaGFzICE9PSB2b2lkIDApIHtcblx0XHRcdCEhfnRoaXMuaGFzLmluZGV4T2Yob3BlbikgfHwgKHRoaXMuaGFzLnB1c2gob3BlbiksdGhpcy5rZXlzLnB1c2goYmxrKSk7XG5cdFx0XHRyZXR1cm4gdHh0ID09PSB2b2lkIDAgPyB0aGlzIDogJC5lbmFibGVkID8gcnVuKHRoaXMua2V5cywgdHh0KycnKSA6IHR4dCsnJztcblx0XHR9XG5cdFx0cmV0dXJuIHR4dCA9PT0gdm9pZCAwID8gY2hhaW4oW29wZW5dLCBbYmxrXSkgOiAkLmVuYWJsZWQgPyBydW4oW2Jsa10sIHR4dCsnJykgOiB0eHQrJyc7XG5cdH07XG59XG5cbmV4cG9ydCBkZWZhdWx0ICQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/kleur/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_DataView.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_DataView.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n\n/* Built-in method references that are verified to be native. */\nvar DataView = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_root_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 'DataView');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DataView);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fRGF0YVZpZXcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ1Y7O0FBRTlCO0FBQ0EsZUFBZSx5REFBUyxDQUFDLGdEQUFJOztBQUU3QixpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fRGF0YVZpZXcuanM/MzA2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5pbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5leHBvcnQgZGVmYXVsdCBEYXRhVmlldztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_DataView.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Hash.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/_Hash.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _hashClear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_hashClear.js */ \"../../../node_modules/lodash-es/_hashClear.js\");\n/* harmony import */ var _hashDelete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_hashDelete.js */ \"../../../node_modules/lodash-es/_hashDelete.js\");\n/* harmony import */ var _hashGet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_hashGet.js */ \"../../../node_modules/lodash-es/_hashGet.js\");\n/* harmony import */ var _hashHas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_hashHas.js */ \"../../../node_modules/lodash-es/_hashHas.js\");\n/* harmony import */ var _hashSet_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_hashSet.js */ \"../../../node_modules/lodash-es/_hashSet.js\");\n\n\n\n\n\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = _hashClear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nHash.prototype['delete'] = _hashDelete_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nHash.prototype.get = _hashGet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nHash.prototype.has = _hashHas_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nHash.prototype.set = _hashSet_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Hash);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fSGFzaC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBd0M7QUFDRTtBQUNOO0FBQ0E7QUFDQTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIscURBQVM7QUFDaEMsMkJBQTJCLHNEQUFVO0FBQ3JDLHFCQUFxQixtREFBTztBQUM1QixxQkFBcUIsbURBQU87QUFDNUIscUJBQXFCLG1EQUFPOztBQUU1QixpRUFBZSxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fSGFzaC5qcz8wOTNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoYXNoQ2xlYXIgZnJvbSAnLi9faGFzaENsZWFyLmpzJztcbmltcG9ydCBoYXNoRGVsZXRlIGZyb20gJy4vX2hhc2hEZWxldGUuanMnO1xuaW1wb3J0IGhhc2hHZXQgZnJvbSAnLi9faGFzaEdldC5qcyc7XG5pbXBvcnQgaGFzaEhhcyBmcm9tICcuL19oYXNoSGFzLmpzJztcbmltcG9ydCBoYXNoU2V0IGZyb20gJy4vX2hhc2hTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Hash.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_ListCache.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_ListCache.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _listCacheClear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_listCacheClear.js */ \"../../../node_modules/lodash-es/_listCacheClear.js\");\n/* harmony import */ var _listCacheDelete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_listCacheDelete.js */ \"../../../node_modules/lodash-es/_listCacheDelete.js\");\n/* harmony import */ var _listCacheGet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_listCacheGet.js */ \"../../../node_modules/lodash-es/_listCacheGet.js\");\n/* harmony import */ var _listCacheHas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_listCacheHas.js */ \"../../../node_modules/lodash-es/_listCacheHas.js\");\n/* harmony import */ var _listCacheSet_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_listCacheSet.js */ \"../../../node_modules/lodash-es/_listCacheSet.js\");\n\n\n\n\n\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = _listCacheClear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nListCache.prototype['delete'] = _listCacheDelete_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nListCache.prototype.get = _listCacheGet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nListCache.prototype.has = _listCacheHas_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nListCache.prototype.set = _listCacheSet_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ListCache);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fTGlzdENhY2hlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFrRDtBQUNFO0FBQ047QUFDQTtBQUNBOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QiwwREFBYztBQUMxQyxnQ0FBZ0MsMkRBQWU7QUFDL0MsMEJBQTBCLHdEQUFZO0FBQ3RDLDBCQUEwQix3REFBWTtBQUN0QywwQkFBMEIsd0RBQVk7O0FBRXRDLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19MaXN0Q2FjaGUuanM/NTg0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGlzdENhY2hlQ2xlYXIgZnJvbSAnLi9fbGlzdENhY2hlQ2xlYXIuanMnO1xuaW1wb3J0IGxpc3RDYWNoZURlbGV0ZSBmcm9tICcuL19saXN0Q2FjaGVEZWxldGUuanMnO1xuaW1wb3J0IGxpc3RDYWNoZUdldCBmcm9tICcuL19saXN0Q2FjaGVHZXQuanMnO1xuaW1wb3J0IGxpc3RDYWNoZUhhcyBmcm9tICcuL19saXN0Q2FjaGVIYXMuanMnO1xuaW1wb3J0IGxpc3RDYWNoZVNldCBmcm9tICcuL19saXN0Q2FjaGVTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbmV4cG9ydCBkZWZhdWx0IExpc3RDYWNoZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_ListCache.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Map.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/_Map.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n\n/* Built-in method references that are verified to be native. */\nvar Map = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_root_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 'Map');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Map);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fTWFwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3QztBQUNWOztBQUU5QjtBQUNBLFVBQVUseURBQVMsQ0FBQyxnREFBSTs7QUFFeEIsaUVBQWUsR0FBRyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX01hcC5qcz9hMWRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROYXRpdmUgZnJvbSAnLi9fZ2V0TmF0aXZlLmpzJztcbmltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdNYXAnKTtcblxuZXhwb3J0IGRlZmF1bHQgTWFwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Map.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_MapCache.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_MapCache.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mapCacheClear_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_mapCacheClear.js */ \"../../../node_modules/lodash-es/_mapCacheClear.js\");\n/* harmony import */ var _mapCacheDelete_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_mapCacheDelete.js */ \"../../../node_modules/lodash-es/_mapCacheDelete.js\");\n/* harmony import */ var _mapCacheGet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_mapCacheGet.js */ \"../../../node_modules/lodash-es/_mapCacheGet.js\");\n/* harmony import */ var _mapCacheHas_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_mapCacheHas.js */ \"../../../node_modules/lodash-es/_mapCacheHas.js\");\n/* harmony import */ var _mapCacheSet_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_mapCacheSet.js */ \"../../../node_modules/lodash-es/_mapCacheSet.js\");\n\n\n\n\n\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = _mapCacheClear_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nMapCache.prototype['delete'] = _mapCacheDelete_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nMapCache.prototype.get = _mapCacheGet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nMapCache.prototype.has = _mapCacheHas_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nMapCache.prototype.set = _mapCacheSet_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MapCache);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fTWFwQ2FjaGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdEO0FBQ0U7QUFDTjtBQUNBO0FBQ0E7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCLHlEQUFhO0FBQ3hDLCtCQUErQiwwREFBYztBQUM3Qyx5QkFBeUIsdURBQVc7QUFDcEMseUJBQXlCLHVEQUFXO0FBQ3BDLHlCQUF5Qix1REFBVzs7QUFFcEMsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX01hcENhY2hlLmpzP2FjYjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1hcENhY2hlQ2xlYXIgZnJvbSAnLi9fbWFwQ2FjaGVDbGVhci5qcyc7XG5pbXBvcnQgbWFwQ2FjaGVEZWxldGUgZnJvbSAnLi9fbWFwQ2FjaGVEZWxldGUuanMnO1xuaW1wb3J0IG1hcENhY2hlR2V0IGZyb20gJy4vX21hcENhY2hlR2V0LmpzJztcbmltcG9ydCBtYXBDYWNoZUhhcyBmcm9tICcuL19tYXBDYWNoZUhhcy5qcyc7XG5pbXBvcnQgbWFwQ2FjaGVTZXQgZnJvbSAnLi9fbWFwQ2FjaGVTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcblxuZXhwb3J0IGRlZmF1bHQgTWFwQ2FjaGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_MapCache.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Promise.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_Promise.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n\n/* Built-in method references that are verified to be native. */\nvar Promise = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_root_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 'Promise');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Promise);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fUHJvbWlzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDVjs7QUFFOUI7QUFDQSxjQUFjLHlEQUFTLENBQUMsZ0RBQUk7O0FBRTVCLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19Qcm9taXNlLmpzP2RhYmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBQcm9taXNlID0gZ2V0TmF0aXZlKHJvb3QsICdQcm9taXNlJyk7XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Promise.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Set.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/_Set.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n\n/* Built-in method references that are verified to be native. */\nvar Set = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_root_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 'Set');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Set);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU2V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3QztBQUNWOztBQUU5QjtBQUNBLFVBQVUseURBQVMsQ0FBQyxnREFBSTs7QUFFeEIsaUVBQWUsR0FBRyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX1NldC5qcz9kNzE1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROYXRpdmUgZnJvbSAnLi9fZ2V0TmF0aXZlLmpzJztcbmltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgU2V0ID0gZ2V0TmF0aXZlKHJvb3QsICdTZXQnKTtcblxuZXhwb3J0IGRlZmF1bHQgU2V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Set.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_SetCache.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_SetCache.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MapCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_MapCache.js */ \"../../../node_modules/lodash-es/_MapCache.js\");\n/* harmony import */ var _setCacheAdd_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_setCacheAdd.js */ \"../../../node_modules/lodash-es/_setCacheAdd.js\");\n/* harmony import */ var _setCacheHas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_setCacheHas.js */ \"../../../node_modules/lodash-es/_setCacheHas.js\");\n\n\n\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new _MapCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = _setCacheAdd_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nSetCache.prototype.has = _setCacheHas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SetCache);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU2V0Q2FjaGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzQztBQUNNO0FBQ0E7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0Isb0RBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQsdURBQVc7QUFDOUQseUJBQXlCLHVEQUFXOztBQUVwQyxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU2V0Q2FjaGUuanM/MjJhNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFwQ2FjaGUgZnJvbSAnLi9fTWFwQ2FjaGUuanMnO1xuaW1wb3J0IHNldENhY2hlQWRkIGZyb20gJy4vX3NldENhY2hlQWRkLmpzJztcbmltcG9ydCBzZXRDYWNoZUhhcyBmcm9tICcuL19zZXRDYWNoZUhhcy5qcyc7XG5cbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG5TZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcblNldENhY2hlLnByb3RvdHlwZS5oYXMgPSBzZXRDYWNoZUhhcztcblxuZXhwb3J0IGRlZmF1bHQgU2V0Q2FjaGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_SetCache.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Stack.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/_Stack.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ListCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ListCache.js */ \"../../../node_modules/lodash-es/_ListCache.js\");\n/* harmony import */ var _stackClear_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_stackClear.js */ \"../../../node_modules/lodash-es/_stackClear.js\");\n/* harmony import */ var _stackDelete_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_stackDelete.js */ \"../../../node_modules/lodash-es/_stackDelete.js\");\n/* harmony import */ var _stackGet_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_stackGet.js */ \"../../../node_modules/lodash-es/_stackGet.js\");\n/* harmony import */ var _stackHas_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_stackHas.js */ \"../../../node_modules/lodash-es/_stackHas.js\");\n/* harmony import */ var _stackSet_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_stackSet.js */ \"../../../node_modules/lodash-es/_stackSet.js\");\n\n\n\n\n\n\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new _ListCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = _stackClear_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\nStack.prototype['delete'] = _stackDelete_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nStack.prototype.get = _stackGet_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nStack.prototype.has = _stackHas_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nStack.prototype.set = _stackSet_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Stack);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU3RhY2suanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF3QztBQUNFO0FBQ0U7QUFDTjtBQUNBO0FBQ0E7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBLGlDQUFpQyxxREFBUztBQUMxQztBQUNBOztBQUVBO0FBQ0Esd0JBQXdCLHNEQUFVO0FBQ2xDLDRCQUE0Qix1REFBVztBQUN2QyxzQkFBc0Isb0RBQVE7QUFDOUIsc0JBQXNCLG9EQUFRO0FBQzlCLHNCQUFzQixvREFBUTs7QUFFOUIsaUVBQWUsS0FBSyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX1N0YWNrLmpzP2Y5NDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpc3RDYWNoZSBmcm9tICcuL19MaXN0Q2FjaGUuanMnO1xuaW1wb3J0IHN0YWNrQ2xlYXIgZnJvbSAnLi9fc3RhY2tDbGVhci5qcyc7XG5pbXBvcnQgc3RhY2tEZWxldGUgZnJvbSAnLi9fc3RhY2tEZWxldGUuanMnO1xuaW1wb3J0IHN0YWNrR2V0IGZyb20gJy4vX3N0YWNrR2V0LmpzJztcbmltcG9ydCBzdGFja0hhcyBmcm9tICcuL19zdGFja0hhcy5qcyc7XG5pbXBvcnQgc3RhY2tTZXQgZnJvbSAnLi9fc3RhY2tTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWNrO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Stack.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Symbol.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/_Symbol.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n/** Built-in value references. */\nvar Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Symbol;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Symbol);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU3ltYm9sLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThCOztBQUU5QjtBQUNBLGFBQWEsdURBQVc7O0FBRXhCLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TeW1ib2wuanM/Y2I3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbmV4cG9ydCBkZWZhdWx0IFN5bWJvbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Symbol.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_Uint8Array.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_Uint8Array.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n/** Built-in value references. */\nvar Uint8Array = _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Uint8Array;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Uint8Array);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fVWludDhBcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qjs7QUFFOUI7QUFDQSxpQkFBaUIsMkRBQWU7O0FBRWhDLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19VaW50OEFycmF5LmpzPzQwMTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IFVpbnQ4QXJyYXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_Uint8Array.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_WeakMap.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_WeakMap.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_root_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 'WeakMap');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WeakMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fV2Vha01hcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDVjs7QUFFOUI7QUFDQSxjQUFjLHlEQUFTLENBQUMsZ0RBQUk7O0FBRTVCLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19XZWFrTWFwLmpzPzBkMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbmV4cG9ydCBkZWZhdWx0IFdlYWtNYXA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_WeakMap.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_apply.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/_apply.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (apply);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxHQUFHO0FBQ2QsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanM/MTdkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFwcGx5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_apply.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayEach.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayEach.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlFYWNoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5RWFjaC5qcz80ZDk0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlFYWNoO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayEach.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayFilter.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayFilter.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayFilter);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlGaWx0ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlGaWx0ZXIuanM/OTE1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5RmlsdGVyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayFilter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayIncludes.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayIncludes.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseIndexOf.js */ \"../../../node_modules/lodash-es/_baseIndexOf.js\");\n\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && (0,_baseIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, value, 0) > -1;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayIncludes);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlJbmNsdWRlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFXO0FBQ2hDOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUluY2x1ZGVzLmpzP2RhN2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VJbmRleE9mIGZyb20gJy4vX2Jhc2VJbmRleE9mLmpzJztcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlJbmNsdWRlcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayIncludes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayIncludesWith.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayIncludesWith.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayIncludesWith);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlJbmNsdWRlc1dpdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsR0FBRztBQUNkLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsaUJBQWlCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlJbmNsdWRlc1dpdGguanM/YTRjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChjb21wYXJhdG9yKHZhbHVlLCBhcnJheVtpbmRleF0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheUluY2x1ZGVzV2l0aDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayIncludesWith.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayLikeKeys.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayLikeKeys.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseTimes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_baseTimes.js */ \"../../../node_modules/lodash-es/_baseTimes.js\");\n/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArguments.js */ \"../../../node_modules/lodash-es/isArguments.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isIndex_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_isIndex.js */ \"../../../node_modules/lodash-es/_isIndex.js\");\n/* harmony import */ var _isTypedArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isTypedArray.js */ \"../../../node_modules/lodash-es/isTypedArray.js\");\n\n\n\n\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value),\n isArg = !isArr && (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value),\n isBuff = !isArr && !isArg && (0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value),\n isType = !isArr && !isArg && !isBuff && (0,_isTypedArray_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? (0,_baseTimes_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n (0,_isIndex_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayLikeKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlMaWtlS2V5cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXdDO0FBQ0c7QUFDUjtBQUNFO0FBQ0Q7QUFDUzs7QUFFN0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0EsY0FBYyx1REFBTztBQUNyQix3QkFBd0IsMkRBQVc7QUFDbkMsbUNBQW1DLHdEQUFRO0FBQzNDLDhDQUE4Qyw0REFBWTtBQUMxRDtBQUNBLDZCQUE2Qix5REFBUztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUxpa2VLZXlzLmpzPzA0N2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VUaW1lcyBmcm9tICcuL19iYXNlVGltZXMuanMnO1xuaW1wb3J0IGlzQXJndW1lbnRzIGZyb20gJy4vaXNBcmd1bWVudHMuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc0J1ZmZlciBmcm9tICcuL2lzQnVmZmVyLmpzJztcbmltcG9ydCBpc0luZGV4IGZyb20gJy4vX2lzSW5kZXguanMnO1xuaW1wb3J0IGlzVHlwZWRBcnJheSBmcm9tICcuL2lzVHlwZWRBcnJheS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgIC8vIE5vZGUuanMgMC4xMCBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiBidWZmZXJzLlxuICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAoaXNUeXBlICYmIChrZXkgPT0gJ2J1ZmZlcicgfHwga2V5ID09ICdieXRlTGVuZ3RoJyB8fCBrZXkgPT0gJ2J5dGVPZmZzZXQnKSkgfHxcbiAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICApKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlMaWtlS2V5cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayLikeKeys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayMap.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayMap.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlNYXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TWFwLmpzPzRkYmUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlNYXA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayMap.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayPush.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayPush.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayPush);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlQdXNoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlQdXNoLmpzPzIxZGYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheVB1c2g7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayPush.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arrayReduce.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_arrayReduce.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayReduce);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlSZWR1Y2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsR0FBRztBQUNkLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheVJlZHVjZS5qcz82MTEwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnJlZHVjZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGFycmF5WysraW5kZXhdO1xuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpdGVyYXRlZShhY2N1bXVsYXRvciwgYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlSZWR1Y2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arrayReduce.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_arraySome.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_arraySome.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arraySome);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlTb21lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlTb21lLmpzPzQ5NjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlTb21lO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_arraySome.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_asciiSize.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_asciiSize.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseProperty.js */ \"../../../node_modules/lodash-es/_baseProperty.js\");\n\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = (0,_baseProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('length');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (asciiSize);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNjaWlTaXplLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQSxnQkFBZ0IsNERBQVk7O0FBRTVCLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hc2NpaVNpemUuanM/YWMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVByb3BlcnR5IGZyb20gJy4vX2Jhc2VQcm9wZXJ0eS5qcyc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xudmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGFzY2lpU2l6ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_asciiSize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_assignMergeValue.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/_assignMergeValue.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseAssignValue.js */ \"../../../node_modules/lodash-es/_baseAssignValue.js\");\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n\n\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !(0,_eq_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object[key], value)) ||\n (value === undefined && !(key in object))) {\n (0,_baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, key, value);\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (assignMergeValue);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduTWVyZ2VWYWx1ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Q7QUFDM0I7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsR0FBRztBQUNkO0FBQ0E7QUFDQSwrQkFBK0Isa0RBQUU7QUFDakM7QUFDQSxJQUFJLCtEQUFlO0FBQ25CO0FBQ0E7O0FBRUEsaUVBQWUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduTWVyZ2VWYWx1ZS5qcz9iNmZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcbmltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFzc2lnblZhbHVlYCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGFzc2lnblxuICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduTWVyZ2VWYWx1ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_assignMergeValue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_assignValue.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_assignValue.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseAssignValue.js */ \"../../../node_modules/lodash-es/_baseAssignValue.js\");\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && (0,_eq_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(objValue, value)) ||\n (value === undefined && !(key in object))) {\n (0,_baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, key, value);\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (assignValue);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9EO0FBQzNCOztBQUV6QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsa0RBQUU7QUFDOUM7QUFDQSxJQUFJLCtEQUFlO0FBQ25CO0FBQ0E7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Fzc2lnblZhbHVlLmpzPzJlZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NpZ25WYWx1ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_assignValue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_assocIndexOf.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_assocIndexOf.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if ((0,_eq_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (assocIndexOf);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzb2NJbmRleE9mLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGtEQUFFO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzb2NJbmRleE9mLmpzPzJmMjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NvY0luZGV4T2Y7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_assocIndexOf.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseAssign.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseAssign.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _copyObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_copyObject.js */ \"../../../node_modules/lodash-es/_copyObject.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && (0,_copyObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, (0,_keys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(source), object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseAssign);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEM7QUFDYjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxtQkFBbUIsMERBQVUsU0FBUyxvREFBSTtBQUMxQzs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnbi5qcz81NmQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlQXNzaWduO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseAssign.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseAssignIn.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseAssignIn.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _copyObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_copyObject.js */ \"../../../node_modules/lodash-es/_copyObject.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && (0,_copyObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, (0,_keysIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(source), object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseAssignIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnbkluLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQztBQUNUOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG1CQUFtQiwwREFBVSxTQUFTLHNEQUFNO0FBQzVDOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduSW4uanM/YzIwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduSW4ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VBc3NpZ25JbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseAssignIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseAssignValue.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseAssignValue.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_defineProperty.js */ \"../../../node_modules/lodash-es/_defineProperty.js\");\n\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseAssignValue);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnblZhbHVlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtEOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0EsNEJBQTRCLDBEQUFjO0FBQzFDLElBQUksOERBQWM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnblZhbHVlLmpzP2ZmM2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICogdmFsdWUgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgIGRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUFzc2lnblZhbHVlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseAssignValue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseClone.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseClone.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Stack_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./_Stack.js */ \"../../../node_modules/lodash-es/_Stack.js\");\n/* harmony import */ var _arrayEach_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./_arrayEach.js */ \"../../../node_modules/lodash-es/_arrayEach.js\");\n/* harmony import */ var _assignValue_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./_assignValue.js */ \"../../../node_modules/lodash-es/_assignValue.js\");\n/* harmony import */ var _baseAssign_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_baseAssign.js */ \"../../../node_modules/lodash-es/_baseAssign.js\");\n/* harmony import */ var _baseAssignIn_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_baseAssignIn.js */ \"../../../node_modules/lodash-es/_baseAssignIn.js\");\n/* harmony import */ var _cloneBuffer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_cloneBuffer.js */ \"../../../node_modules/lodash-es/_cloneBuffer.js\");\n/* harmony import */ var _copyArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_copyArray.js */ \"../../../node_modules/lodash-es/_copyArray.js\");\n/* harmony import */ var _copySymbols_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_copySymbols.js */ \"../../../node_modules/lodash-es/_copySymbols.js\");\n/* harmony import */ var _copySymbolsIn_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_copySymbolsIn.js */ \"../../../node_modules/lodash-es/_copySymbolsIn.js\");\n/* harmony import */ var _getAllKeys_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./_getAllKeys.js */ \"../../../node_modules/lodash-es/_getAllKeys.js\");\n/* harmony import */ var _getAllKeysIn_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./_getAllKeysIn.js */ \"../../../node_modules/lodash-es/_getAllKeysIn.js\");\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _initCloneArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_initCloneArray.js */ \"../../../node_modules/lodash-es/_initCloneArray.js\");\n/* harmony import */ var _initCloneByTag_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_initCloneByTag.js */ \"../../../node_modules/lodash-es/_initCloneByTag.js\");\n/* harmony import */ var _initCloneObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_initCloneObject.js */ \"../../../node_modules/lodash-es/_initCloneObject.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isMap_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./isMap.js */ \"../../../node_modules/lodash-es/isMap.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _isSet_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./isSet.js */ \"../../../node_modules/lodash-es/isSet.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return value;\n }\n var isArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value);\n if (isArr) {\n result = (0,_initCloneArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n if (!isDeep) {\n return (0,_copyArray_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value, result);\n }\n } else {\n var tag = (0,_getTag_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if ((0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(value)) {\n return (0,_cloneBuffer_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : (0,_initCloneObject_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(value);\n if (!isDeep) {\n return isFlat\n ? (0,_copySymbolsIn_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(value, (0,_baseAssignIn_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(result, value))\n : (0,_copySymbols_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(value, (0,_baseAssign_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = (0,_initCloneByTag_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"]);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if ((0,_isSet_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if ((0,_isMap_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? _getAllKeysIn_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"] : _getAllKeys_js__WEBPACK_IMPORTED_MODULE_17__[\"default\"])\n : (isFlat ? _keysIn_js__WEBPACK_IMPORTED_MODULE_18__[\"default\"] : _keys_js__WEBPACK_IMPORTED_MODULE_19__[\"default\"]);\n\n var props = isArr ? undefined : keysFunc(value);\n (0,_arrayEach_js__WEBPACK_IMPORTED_MODULE_20__[\"default\"])(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n (0,_assignValue_js__WEBPACK_IMPORTED_MODULE_21__[\"default\"])(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseClone);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUNsb25lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ1E7QUFDSTtBQUNGO0FBQ0k7QUFDRjtBQUNKO0FBQ0k7QUFDSTtBQUNOO0FBQ0k7QUFDWjtBQUNnQjtBQUNBO0FBQ0U7QUFDakI7QUFDRTtBQUNOO0FBQ007QUFDTjtBQUNGO0FBQ0k7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyx3REFBUTtBQUNmO0FBQ0E7QUFDQSxjQUFjLHVEQUFPO0FBQ3JCO0FBQ0EsYUFBYSw4REFBYztBQUMzQjtBQUNBLGFBQWEseURBQVM7QUFDdEI7QUFDQSxJQUFJO0FBQ0osY0FBYyxzREFBTTtBQUNwQjs7QUFFQSxRQUFRLHdEQUFRO0FBQ2hCLGFBQWEsMkRBQVc7QUFDeEI7QUFDQTtBQUNBLHVDQUF1QyxFQUFFLCtEQUFlO0FBQ3hEO0FBQ0E7QUFDQSxZQUFZLDZEQUFhLFFBQVEsNERBQVk7QUFDN0MsWUFBWSw0REFBVyxRQUFRLDJEQUFVO0FBQ3pDO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0RBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtEQUFLO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxzREFBSztBQUNYO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxTQUFTLHNEQUFLO0FBQ2xCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxnQkFBZ0IseURBQVksR0FBRyx1REFBVTtBQUN6QyxnQkFBZ0IsbURBQU0sR0FBRyxpREFBSTs7QUFFN0I7QUFDQSxFQUFFLDBEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksNERBQVc7QUFDZixHQUFHO0FBQ0g7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUNsb25lLmpzP2Y1NTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0YWNrIGZyb20gJy4vX1N0YWNrLmpzJztcbmltcG9ydCBhcnJheUVhY2ggZnJvbSAnLi9fYXJyYXlFYWNoLmpzJztcbmltcG9ydCBhc3NpZ25WYWx1ZSBmcm9tICcuL19hc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgYmFzZUFzc2lnbiBmcm9tICcuL19iYXNlQXNzaWduLmpzJztcbmltcG9ydCBiYXNlQXNzaWduSW4gZnJvbSAnLi9fYmFzZUFzc2lnbkluLmpzJztcbmltcG9ydCBjbG9uZUJ1ZmZlciBmcm9tICcuL19jbG9uZUJ1ZmZlci5qcyc7XG5pbXBvcnQgY29weUFycmF5IGZyb20gJy4vX2NvcHlBcnJheS5qcyc7XG5pbXBvcnQgY29weVN5bWJvbHMgZnJvbSAnLi9fY29weVN5bWJvbHMuanMnO1xuaW1wb3J0IGNvcHlTeW1ib2xzSW4gZnJvbSAnLi9fY29weVN5bWJvbHNJbi5qcyc7XG5pbXBvcnQgZ2V0QWxsS2V5cyBmcm9tICcuL19nZXRBbGxLZXlzLmpzJztcbmltcG9ydCBnZXRBbGxLZXlzSW4gZnJvbSAnLi9fZ2V0QWxsS2V5c0luLmpzJztcbmltcG9ydCBnZXRUYWcgZnJvbSAnLi9fZ2V0VGFnLmpzJztcbmltcG9ydCBpbml0Q2xvbmVBcnJheSBmcm9tICcuL19pbml0Q2xvbmVBcnJheS5qcyc7XG5pbXBvcnQgaW5pdENsb25lQnlUYWcgZnJvbSAnLi9faW5pdENsb25lQnlUYWcuanMnO1xuaW1wb3J0IGluaXRDbG9uZU9iamVjdCBmcm9tICcuL19pbml0Q2xvbmVPYmplY3QuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc0J1ZmZlciBmcm9tICcuL2lzQnVmZmVyLmpzJztcbmltcG9ydCBpc01hcCBmcm9tICcuL2lzTWFwLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBpc1NldCBmcm9tICcuL2lzU2V0LmpzJztcbmltcG9ydCBrZXlzIGZyb20gJy4va2V5cy5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX0ZMQVRfRkxBRyA9IDIsXG4gICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBzdXBwb3J0ZWQgYnkgYF8uY2xvbmVgLiAqL1xudmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbmNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG5jbG9uZWFibGVUYWdzW2FycmF5QnVmZmVyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0YVZpZXdUYWddID1cbmNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbmNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW2ludDE2VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG5jbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tyZWdleHBUYWddID0gY2xvbmVhYmxlVGFnc1tzZXRUYWddID1cbmNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG5jbG9uZWFibGVUYWdzW3VpbnQxNlRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbmNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gKiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gKiAgMSAtIERlZXAgY2xvbmVcbiAqICAyIC0gRmxhdHRlbiBpbmhlcml0ZWQgcHJvcGVydGllc1xuICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtrZXldIFRoZSBrZXkgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICB2YXIgcmVzdWx0LFxuICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICBpc0Z1bGwgPSBiaXRtYXNrICYgQ0xPTkVfU1lNQk9MU19GTEFHO1xuXG4gIGlmIChjdXN0b21pemVyKSB7XG4gICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICB9XG4gIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gIGlmIChpc0Fycikge1xuICAgIHJlc3VsdCA9IGluaXRDbG9uZUFycmF5KHZhbHVlKTtcbiAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgIGlzRnVuYyA9IHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWc7XG5cbiAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgfVxuICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICA6IGNvcHlTeW1ib2xzKHZhbHVlLCBiYXNlQXNzaWduKHJlc3VsdCwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFjbG9uZWFibGVUYWdzW3RhZ10pIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBpbml0Q2xvbmVCeVRhZyh2YWx1ZSwgdGFnLCBpc0RlZXApO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcyBhbmQgcmV0dXJuIGl0cyBjb3JyZXNwb25kaW5nIGNsb25lLlxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gIGlmIChzdGFja2VkKSB7XG4gICAgcmV0dXJuIHN0YWNrZWQ7XG4gIH1cbiAgc3RhY2suc2V0KHZhbHVlLCByZXN1bHQpO1xuXG4gIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICByZXN1bHQuYWRkKGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3ViVmFsdWUsIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgOiAoaXNGbGF0ID8ga2V5c0luIDoga2V5cyk7XG5cbiAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgIGlmIChwcm9wcykge1xuICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VDbG9uZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseClone.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseCreate.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseCreate.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseCreate);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUNyZWF0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsd0RBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQ3JlYXRlLmpzP2Y4NzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBiYXNlQ3JlYXRlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseCreate.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseEach.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseEach.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseForOwn.js */ \"../../../node_modules/lodash-es/_baseForOwn.js\");\n/* harmony import */ var _createBaseEach_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createBaseEach.js */ \"../../../node_modules/lodash-es/_createBaseEach.js\");\n\n\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = (0,_createBaseEach_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUVhY2guanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ1E7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsVUFBVTtBQUNyQixhQUFhLGNBQWM7QUFDM0I7QUFDQSxlQUFlLDhEQUFjLENBQUMsc0RBQVU7O0FBRXhDLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlRWFjaC5qcz8wZDg3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRm9yT3duIGZyb20gJy4vX2Jhc2VGb3JPd24uanMnO1xuaW1wb3J0IGNyZWF0ZUJhc2VFYWNoIGZyb20gJy4vX2NyZWF0ZUJhc2VFYWNoLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAqL1xudmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VFYWNoO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseEach.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseExtremum.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseExtremum.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !(0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseExtremum);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUV4dHJlbXVtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyx3REFBUTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlRXh0cmVtdW0uanM/NzFlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTeW1ib2wgZnJvbSAnLi9pc1N5bWJvbC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gKiBgY29tcGFyYXRvcmAgdG8gZGV0ZXJtaW5lIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAoY3VycmVudCA9PT0gY3VycmVudCAmJiAhaXNTeW1ib2woY3VycmVudCkpXG4gICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICApKSB7XG4gICAgICB2YXIgY29tcHV0ZWQgPSBjdXJyZW50LFxuICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRXh0cmVtdW07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseExtremum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseFilter.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseFilter.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseEach.js */ \"../../../node_modules/lodash-es/_baseEach.js\");\n\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n (0,_baseEach_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseFilter);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZpbHRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VGaWx0ZXIuanM/ZjBmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUVhY2ggZnJvbSAnLi9fYmFzZUVhY2guanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbHRlcmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VGaWx0ZXI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseFilter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseFindIndex.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseFindIndex.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseFindIndex);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZpbmRJbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsYUFBYSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VGaW5kSW5kZXguanM/Nzk4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUZpbmRJbmRleDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseFindIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseFlatten.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseFlatten.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayPush_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayPush.js */ \"../../../node_modules/lodash-es/_arrayPush.js\");\n/* harmony import */ var _isFlattenable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isFlattenable.js */ \"../../../node_modules/lodash-es/_isFlattenable.js\");\n\n\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = _isFlattenable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n (0,_arrayPush_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseFlatten);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZsYXR0ZW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ1E7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHlEQUFhO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixRQUFRLHlEQUFTO0FBQ2pCO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VGbGF0dGVuLmpzP2UzMTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5UHVzaCBmcm9tICcuL19hcnJheVB1c2guanMnO1xuaW1wb3J0IGlzRmxhdHRlbmFibGUgZnJvbSAnLi9faXNGbGF0dGVuYWJsZS5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRmxhdHRlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseFlatten.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseFor.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseFor.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _createBaseFor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createBaseFor.js */ \"../../../node_modules/lodash-es/_createBaseFor.js\");\n\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = (0,_createBaseFor_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseFor);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnRDs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsY0FBYyw2REFBYTs7QUFFM0IsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VGb3IuanM/NDkxOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlQmFzZUZvciBmcm9tICcuL19jcmVhdGVCYXNlRm9yLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICogcHJvcGVydGllcyByZXR1cm5lZCBieSBga2V5c0Z1bmNgIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbnZhciBiYXNlRm9yID0gY3JlYXRlQmFzZUZvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBiYXNlRm9yO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseFor.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseForOwn.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseForOwn.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseFor.js */ \"../../../node_modules/lodash-es/_baseFor.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && (0,_baseFor_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, iteratee, _keys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseForOwn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZvck93bi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0M7QUFDUDs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsbUJBQW1CLHVEQUFPLG1CQUFtQixnREFBSTtBQUNqRDs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUZvck93bi5qcz84YTUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRm9yIGZyb20gJy4vX2Jhc2VGb3IuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRm9yT3duO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseForOwn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseGet.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseGet.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_castPath.js */ \"../../../node_modules/lodash-es/_castPath.js\");\n/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_toKey.js */ \"../../../node_modules/lodash-es/_toKey.js\");\n\n\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = (0,_castPath_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[(0,_toKey_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0M7QUFDTjs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0EsU0FBUyx3REFBUTs7QUFFakI7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQixxREFBSztBQUN6QjtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VHZXQuanM/MGQ0YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2FzdFBhdGggZnJvbSAnLi9fY2FzdFBhdGguanMnO1xuaW1wb3J0IHRvS2V5IGZyb20gJy4vX3RvS2V5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IDAsXG4gICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICB3aGlsZSAob2JqZWN0ICE9IG51bGwgJiYgaW5kZXggPCBsZW5ndGgpIHtcbiAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICB9XG4gIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUdldDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseGetAllKeys.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseGetAllKeys.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayPush_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayPush.js */ \"../../../node_modules/lodash-es/_arrayPush.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object) ? result : (0,_arrayPush_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result, symbolsFunc(object));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGetAllKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldEFsbEtleXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ0w7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLHVEQUFPLG9CQUFvQix5REFBUztBQUM3Qzs7QUFFQSxpRUFBZSxjQUFjLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldEFsbEtleXMuanM/NWJlNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlQdXNoIGZyb20gJy4vX2FycmF5UHVzaC5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VHZXRBbGxLZXlzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseGetAllKeys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseGetTag.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseGetTag.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getRawTag.js */ \"../../../node_modules/lodash-es/_getRawTag.js\");\n/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_objectToString.js */ \"../../../node_modules/lodash-es/_objectToString.js\");\n\n\n\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? (0,_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)\n : (0,_objectToString_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGetTag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ007QUFDVTs7QUFFbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLGtEQUFNLEdBQUcsOERBQWtCOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHlEQUFTO0FBQ2YsTUFBTSw4REFBYztBQUNwQjs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcz9hYzIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBnZXRSYXdUYWcgZnJvbSAnLi9fZ2V0UmF3VGFnLmpzJztcbmltcG9ydCBvYmplY3RUb1N0cmluZyBmcm9tICcuL19vYmplY3RUb1N0cmluZy5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR2V0VGFnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseGetTag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseGt.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseGt.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGt);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUd0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlR3QuanM/NTAwNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA+IG90aGVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseGt.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseHas.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseHas.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUhhcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsY0FBYztBQUN6QixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VIYXMuanM/YTAxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VIYXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseHasIn.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseHasIn.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseHasIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUhhc0luLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLGNBQWM7QUFDekIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSGFzSW4uanM/MGYyMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc0luYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUhhc0luO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseHasIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIndexOf.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIndexOf.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFindIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseFindIndex.js */ \"../../../node_modules/lodash-es/_baseFindIndex.js\");\n/* harmony import */ var _baseIsNaN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIsNaN.js */ \"../../../node_modules/lodash-es/_baseIsNaN.js\");\n/* harmony import */ var _strictIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_strictIndexOf.js */ \"../../../node_modules/lodash-es/_strictIndexOf.js\");\n\n\n\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? (0,_strictIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, value, fromIndex)\n : (0,_baseFindIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(array, _baseIsNaN_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], fromIndex);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIndexOf);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUluZGV4T2YuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRDtBQUNSO0FBQ1E7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsR0FBRztBQUNkLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsTUFBTSw2REFBYTtBQUNuQixNQUFNLDZEQUFhLFFBQVEscURBQVM7QUFDcEM7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJbmRleE9mLmpzPzQxOGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VGaW5kSW5kZXggZnJvbSAnLi9fYmFzZUZpbmRJbmRleC5qcyc7XG5pbXBvcnQgYmFzZUlzTmFOIGZyb20gJy4vX2Jhc2VJc05hTi5qcyc7XG5pbXBvcnQgc3RyaWN0SW5kZXhPZiBmcm9tICcuL19zdHJpY3RJbmRleE9mLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUluZGV4T2Y7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIndexOf.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsArguments.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsArguments.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) == argsTag;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsArguments);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzQXJndW1lbnRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQztBQUNHOztBQUU3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxTQUFTLDREQUFZLFdBQVcsMERBQVU7QUFDMUM7O0FBRUEsaUVBQWUsZUFBZSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc0FyZ3VtZW50cy5qcz8wZTQzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0FyZ3VtZW50cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsArguments.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsEqual.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsEqual.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsEqualDeep_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseIsEqualDeep.js */ \"../../../node_modules/lodash-es/_baseIsEqualDeep.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!(0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && !(0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other))) {\n return value !== value && other !== other;\n }\n return (0,_baseIsEqualDeep_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsEqual);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzRXF1YWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9EO0FBQ1A7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxXQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNERBQVksWUFBWSw0REFBWTtBQUM5RTtBQUNBO0FBQ0EsU0FBUywrREFBZTtBQUN4Qjs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzRXF1YWwuanM/NGY2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUlzRXF1YWxEZWVwIGZyb20gJy4vX2Jhc2VJc0VxdWFsRGVlcC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gKiBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gVW5vcmRlcmVkIGNvbXBhcmlzb25cbiAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYHZhbHVlYCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykge1xuICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gIH1cbiAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0VxdWFsO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsEqual.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsEqualDeep.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsEqualDeep.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Stack_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_Stack.js */ \"../../../node_modules/lodash-es/_Stack.js\");\n/* harmony import */ var _equalArrays_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_equalArrays.js */ \"../../../node_modules/lodash-es/_equalArrays.js\");\n/* harmony import */ var _equalByTag_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_equalByTag.js */ \"../../../node_modules/lodash-es/_equalByTag.js\");\n/* harmony import */ var _equalObjects_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_equalObjects.js */ \"../../../node_modules/lodash-es/_equalObjects.js\");\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isTypedArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isTypedArray.js */ \"../../../node_modules/lodash-es/isTypedArray.js\");\n\n\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object),\n othIsArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other),\n objTag = objIsArr ? arrayTag : (0,_getTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object),\n othTag = othIsArr ? arrayTag : (0,_getTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && (0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object)) {\n if (!(0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n return (objIsArr || (0,_isTypedArray_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object))\n ? (0,_equalArrays_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(object, other, bitmask, customizer, equalFunc, stack)\n : (0,_equalByTag_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\n return (0,_equalObjects_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsEqualDeep);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzRXF1YWxEZWVwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFnQztBQUNZO0FBQ0Y7QUFDSTtBQUNaO0FBQ0M7QUFDRTtBQUNROztBQUU3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGlCQUFpQix1REFBTztBQUN4QixpQkFBaUIsdURBQU87QUFDeEIscUNBQXFDLHNEQUFNO0FBQzNDLHFDQUFxQyxzREFBTTs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLHdEQUFRO0FBQzNCLFNBQVMsd0RBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGlEQUFLO0FBQy9CLHdCQUF3Qiw0REFBWTtBQUNwQyxRQUFRLDJEQUFXO0FBQ25CLFFBQVEsMERBQVU7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDRCQUE0QixpREFBSztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaURBQUs7QUFDN0IsU0FBUyw0REFBWTtBQUNyQjs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzRXF1YWxEZWVwLmpzPzljZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0YWNrIGZyb20gJy4vX1N0YWNrLmpzJztcbmltcG9ydCBlcXVhbEFycmF5cyBmcm9tICcuL19lcXVhbEFycmF5cy5qcyc7XG5pbXBvcnQgZXF1YWxCeVRhZyBmcm9tICcuL19lcXVhbEJ5VGFnLmpzJztcbmltcG9ydCBlcXVhbE9iamVjdHMgZnJvbSAnLi9fZXF1YWxPYmplY3RzLmpzJztcbmltcG9ydCBnZXRUYWcgZnJvbSAnLi9fZ2V0VGFnLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNUeXBlZEFycmF5IGZyb20gJy4vaXNUeXBlZEFycmF5LmpzJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLFxuICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gIG90aFRhZyA9IG90aFRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb3RoVGFnO1xuXG4gIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICBpc1NhbWVUYWcgPSBvYmpUYWcgPT0gb3RoVGFnO1xuXG4gIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICBvYmpJc09iaiA9IGZhbHNlO1xuICB9XG4gIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gIH1cbiAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgIHZhciBvYmpJc1dyYXBwZWQgPSBvYmpJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ19fd3JhcHBlZF9fJyksXG4gICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgIHZhciBvYmpVbndyYXBwZWQgPSBvYmpJc1dyYXBwZWQgPyBvYmplY3QudmFsdWUoKSA6IG9iamVjdCxcbiAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICB9XG4gIGlmICghaXNTYW1lVGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc0VxdWFsRGVlcDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsEqualDeep.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsMap.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsMap.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_getTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) == mapTag;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTWFwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrQztBQUNXOztBQUU3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxTQUFTLDREQUFZLFdBQVcsc0RBQU07QUFDdEM7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc01hcC5qcz9lM2JjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRUYWcgZnJvbSAnLi9fZ2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTWFwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsMap.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsMatch.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsMatch.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Stack_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Stack.js */ \"../../../node_modules/lodash-es/_Stack.js\");\n/* harmony import */ var _baseIsEqual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseIsEqual.js */ \"../../../node_modules/lodash-es/_baseIsEqual.js\");\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? (0,_baseIsEqual_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsMatch);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTWF0Y2guanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdDO0FBQ1k7O0FBRTVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sc0JBQXNCLGlEQUFLO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYywyREFBVztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNNYXRjaC5qcz8xYTY5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdGFjayBmcm9tICcuL19TdGFjay5qcyc7XG5pbXBvcnQgYmFzZUlzRXF1YWwgZnJvbSAnLi9fYmFzZUlzRXF1YWwuanMnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0FycmF5fSBtYXRjaERhdGEgVGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICBsZW5ndGggPSBpbmRleCxcbiAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgIHJldHVybiAhbGVuZ3RoO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgID8gZGF0YVsxXSAhPT0gb2JqZWN0W2RhdGFbMF1dXG4gICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjayk7XG4gICAgICB9XG4gICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBiYXNlSXNFcXVhbChzcmNWYWx1ZSwgb2JqVmFsdWUsIENPTVBBUkVfUEFSVElBTF9GTEFHIHwgQ09NUEFSRV9VTk9SREVSRURfRkxBRywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTWF0Y2g7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsMatch.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsNaN.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsNaN.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsNaN);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmFOLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmFOLmpzPzNmNWQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTmFOO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsNaN.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsNative.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsNative.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isFunction.js */ \"../../../node_modules/lodash-es/isFunction.js\");\n/* harmony import */ var _isMasked_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isMasked.js */ \"../../../node_modules/lodash-es/_isMasked.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _toSource_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_toSource.js */ \"../../../node_modules/lodash-es/_toSource.js\");\n\n\n\n\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || (0,_isMasked_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n return false;\n }\n var pattern = (0,_isFunction_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) ? reIsNative : reIsHostCtor;\n return pattern.test((0,_toSource_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsNative);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmF0aXZlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXlDO0FBQ0g7QUFDRDtBQUNDOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsT0FBTyx3REFBUSxXQUFXLHdEQUFRO0FBQ2xDO0FBQ0E7QUFDQSxnQkFBZ0IsMERBQVU7QUFDMUIsc0JBQXNCLHdEQUFRO0FBQzlCOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNOYXRpdmUuanM/NmM0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTWFza2VkIGZyb20gJy4vX2lzTWFza2VkLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCB0b1NvdXJjZSBmcm9tICcuL190b1NvdXJjZS5qcyc7XG5cbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBob3N0IGNvbnN0cnVjdG9ycyAoU2FmYXJpKS4gKi9cbnZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gIC5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJ1xuKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwYXR0ZXJuID0gaXNGdW5jdGlvbih2YWx1ZSkgPyByZUlzTmF0aXZlIDogcmVJc0hvc3RDdG9yO1xuICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc05hdGl2ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsNative.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsSet.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsSet.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_getTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) == setTag;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzU2V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrQztBQUNXOztBQUU3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxTQUFTLDREQUFZLFdBQVcsc0RBQU07QUFDdEM7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc1NldC5qcz9lNTljIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRUYWcgZnJvbSAnLi9fZ2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHNldFRhZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzU2V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIsTypedArray.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIsTypedArray.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _isLength_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isLength.js */ \"../../../node_modules/lodash-es/isLength.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) &&\n (0,_isLength_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value.length) && !!typedArrayTags[(0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value)];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIsTypedArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzVHlwZWRBcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBDO0FBQ0w7QUFDUTs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsU0FBUyw0REFBWTtBQUNyQixJQUFJLHdEQUFRLG1DQUFtQywwREFBVTtBQUN6RDs7QUFFQSxpRUFBZSxnQkFBZ0IsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNUeXBlZEFycmF5LmpzPzQ0ZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNUeXBlZEFycmF5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIsTypedArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseIteratee.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseIteratee.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseMatches_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseMatches.js */ \"../../../node_modules/lodash-es/_baseMatches.js\");\n/* harmony import */ var _baseMatchesProperty_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseMatchesProperty.js */ \"../../../node_modules/lodash-es/_baseMatchesProperty.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _property_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./property.js */ \"../../../node_modules/lodash-es/property.js\");\n\n\n\n\n\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n if (typeof value == 'object') {\n return (0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)\n ? (0,_baseMatchesProperty_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value[0], value[1])\n : (0,_baseMatches_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value);\n }\n return (0,_property_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseIteratee);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUl0ZXJhdGVlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUE0QztBQUNnQjtBQUN2QjtBQUNGO0FBQ0U7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9EQUFRO0FBQ25CO0FBQ0E7QUFDQSxXQUFXLHVEQUFPO0FBQ2xCLFFBQVEsbUVBQW1CO0FBQzNCLFFBQVEsMkRBQVc7QUFDbkI7QUFDQSxTQUFTLHdEQUFRO0FBQ2pCOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXRlcmF0ZWUuanM/MTIyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZU1hdGNoZXMgZnJvbSAnLi9fYmFzZU1hdGNoZXMuanMnO1xuaW1wb3J0IGJhc2VNYXRjaGVzUHJvcGVydHkgZnJvbSAnLi9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcyc7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IHByb3BlcnR5IGZyb20gJy4vcHJvcGVydHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXRlcmF0ZWU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseIteratee.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseKeys.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseKeys.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isPrototype_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isPrototype.js */ \"../../../node_modules/lodash-es/_isPrototype.js\");\n/* harmony import */ var _nativeKeys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_nativeKeys.js */ \"../../../node_modules/lodash-es/_nativeKeys.js\");\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!(0,_isPrototype_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n return (0,_nativeKeys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTRDO0FBQ0Y7O0FBRTFDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLE9BQU8sMkRBQVc7QUFDbEIsV0FBVywwREFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VLZXlzLmpzPzlkMmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseKeys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseKeysIn.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseKeysIn.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _isPrototype_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isPrototype.js */ \"../../../node_modules/lodash-es/_isPrototype.js\");\n/* harmony import */ var _nativeKeysIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_nativeKeysIn.js */ \"../../../node_modules/lodash-es/_nativeKeysIn.js\");\n\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n return (0,_nativeKeysIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object);\n }\n var isProto = (0,_isPrototype_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseKeysIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXFDO0FBQ087QUFDRTs7QUFFOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0EsT0FBTyx3REFBUTtBQUNmLFdBQVcsNERBQVk7QUFDdkI7QUFDQSxnQkFBZ0IsMkRBQVc7QUFDM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsVUFBVSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VLZXlzSW4uanM/Mzc3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IG5hdGl2ZUtleXNJbiBmcm9tICcuL19uYXRpdmVLZXlzSW4uanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlS2V5c0luO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseKeysIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseLt.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseLt.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseLt);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUx0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlTHQuanM/ZGU3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA8IG90aGVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlTHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseLt.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseMap.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseMap.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseEach.js */ \"../../../node_modules/lodash-es/_baseEach.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n\n\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? Array(collection.length) : [];\n\n (0,_baseEach_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1hcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0M7QUFDSzs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxlQUFlLDJEQUFXOztBQUUxQixFQUFFLHdEQUFRO0FBQ1Y7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1hcC5qcz83YjNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRWFjaCBmcm9tICcuL19iYXNlRWFjaC5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWFwYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IEFycmF5KGNvbGxlY3Rpb24ubGVuZ3RoKSA6IFtdO1xuXG4gIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VNYXA7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseMap.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseMatches.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseMatches.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsMatch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIsMatch.js */ \"../../../node_modules/lodash-es/_baseIsMatch.js\");\n/* harmony import */ var _getMatchData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getMatchData.js */ \"../../../node_modules/lodash-es/_getMatchData.js\");\n/* harmony import */ var _matchesStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_matchesStrictComparable.js */ \"../../../node_modules/lodash-es/_matchesStrictComparable.js\");\n\n\n\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = (0,_getMatchData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return (0,_matchesStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || (0,_baseIsMatch_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object, source, matchData);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMatches);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1hdGNoZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE0QztBQUNFO0FBQ3NCOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBLGtCQUFrQiw0REFBWTtBQUM5QjtBQUNBLFdBQVcsdUVBQXVCO0FBQ2xDO0FBQ0E7QUFDQSxnQ0FBZ0MsMkRBQVc7QUFDM0M7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1hdGNoZXMuanM/ZjZlYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUlzTWF0Y2ggZnJvbSAnLi9fYmFzZUlzTWF0Y2guanMnO1xuaW1wb3J0IGdldE1hdGNoRGF0YSBmcm9tICcuL19nZXRNYXRjaERhdGEuanMnO1xuaW1wb3J0IG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIGZyb20gJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VNYXRjaGVzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseMatches.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseMatchesProperty.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseMatchesProperty.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsEqual_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_baseIsEqual.js */ \"../../../node_modules/lodash-es/_baseIsEqual.js\");\n/* harmony import */ var _get_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./get.js */ \"../../../node_modules/lodash-es/get.js\");\n/* harmony import */ var _hasIn_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hasIn.js */ \"../../../node_modules/lodash-es/hasIn.js\");\n/* harmony import */ var _isKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isKey.js */ \"../../../node_modules/lodash-es/_isKey.js\");\n/* harmony import */ var _isStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isStrictComparable.js */ \"../../../node_modules/lodash-es/_isStrictComparable.js\");\n/* harmony import */ var _matchesStrictComparable_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_matchesStrictComparable.js */ \"../../../node_modules/lodash-es/_matchesStrictComparable.js\");\n/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_toKey.js */ \"../../../node_modules/lodash-es/_toKey.js\");\n\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if ((0,_isKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path) && (0,_isStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(srcValue)) {\n return (0,_matchesStrictComparable_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_toKey_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(path), srcValue);\n }\n return function(object) {\n var objValue = (0,_get_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? (0,_hasIn_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(object, path)\n : (0,_baseIsEqual_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMatchesProperty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE0QztBQUNqQjtBQUNJO0FBQ0M7QUFDMEI7QUFDVTtBQUNwQzs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsR0FBRztBQUNkLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsTUFBTSxxREFBSyxVQUFVLGtFQUFrQjtBQUN2QyxXQUFXLHVFQUF1QixDQUFDLHFEQUFLO0FBQ3hDO0FBQ0E7QUFDQSxtQkFBbUIsbURBQUc7QUFDdEI7QUFDQSxRQUFRLHFEQUFLO0FBQ2IsUUFBUSwyREFBVztBQUNuQjtBQUNBOztBQUVBLGlFQUFlLG1CQUFtQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VNYXRjaGVzUHJvcGVydHkuanM/ZTNlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUlzRXF1YWwgZnJvbSAnLi9fYmFzZUlzRXF1YWwuanMnO1xuaW1wb3J0IGdldCBmcm9tICcuL2dldC5qcyc7XG5pbXBvcnQgaGFzSW4gZnJvbSAnLi9oYXNJbi5qcyc7XG5pbXBvcnQgaXNLZXkgZnJvbSAnLi9faXNLZXkuanMnO1xuaW1wb3J0IGlzU3RyaWN0Q29tcGFyYWJsZSBmcm9tICcuL19pc1N0cmljdENvbXBhcmFibGUuanMnO1xuaW1wb3J0IG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIGZyb20gJy4vX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzJztcbmltcG9ydCB0b0tleSBmcm9tICcuL190b0tleS5qcyc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZU1hdGNoZXNQcm9wZXJ0eTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseMatchesProperty.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseMerge.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseMerge.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Stack_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_Stack.js */ \"../../../node_modules/lodash-es/_Stack.js\");\n/* harmony import */ var _assignMergeValue_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_assignMergeValue.js */ \"../../../node_modules/lodash-es/_assignMergeValue.js\");\n/* harmony import */ var _baseFor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseFor.js */ \"../../../node_modules/lodash-es/_baseFor.js\");\n/* harmony import */ var _baseMergeDeep_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseMergeDeep.js */ \"../../../node_modules/lodash-es/_baseMergeDeep.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n/* harmony import */ var _safeGet_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_safeGet.js */ \"../../../node_modules/lodash-es/_safeGet.js\");\n\n\n\n\n\n\n\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n (0,_baseFor_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, function(srcValue, key) {\n stack || (stack = new _Stack_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n if ((0,_isObject_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(srcValue)) {\n (0,_baseMergeDeep_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer((0,_safeGet_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n (0,_assignMergeValue_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(object, key, newValue);\n }\n }, _keysIn_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMerge);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1lcmdlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ3NCO0FBQ2xCO0FBQ1k7QUFDWDtBQUNKO0FBQ0c7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFPO0FBQ1QsMEJBQTBCLGlEQUFLO0FBQy9CLFFBQVEsd0RBQVE7QUFDaEIsTUFBTSw2REFBYTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsdURBQU87QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxnRUFBZ0I7QUFDdEI7QUFDQSxHQUFHLEVBQUUsa0RBQU07QUFDWDs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1lcmdlLmpzP2U4ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0YWNrIGZyb20gJy4vX1N0YWNrLmpzJztcbmltcG9ydCBhc3NpZ25NZXJnZVZhbHVlIGZyb20gJy4vX2Fzc2lnbk1lcmdlVmFsdWUuanMnO1xuaW1wb3J0IGJhc2VGb3IgZnJvbSAnLi9fYmFzZUZvci5qcyc7XG5pbXBvcnQgYmFzZU1lcmdlRGVlcCBmcm9tICcuL19iYXNlTWVyZ2VEZWVwLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuaW1wb3J0IHNhZmVHZXQgZnJvbSAnLi9fc2FmZUdldC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZU1lcmdlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseMerge.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseMergeDeep.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseMergeDeep.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assignMergeValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_assignMergeValue.js */ \"../../../node_modules/lodash-es/_assignMergeValue.js\");\n/* harmony import */ var _cloneBuffer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_cloneBuffer.js */ \"../../../node_modules/lodash-es/_cloneBuffer.js\");\n/* harmony import */ var _cloneTypedArray_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_cloneTypedArray.js */ \"../../../node_modules/lodash-es/_cloneTypedArray.js\");\n/* harmony import */ var _copyArray_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_copyArray.js */ \"../../../node_modules/lodash-es/_copyArray.js\");\n/* harmony import */ var _initCloneObject_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_initCloneObject.js */ \"../../../node_modules/lodash-es/_initCloneObject.js\");\n/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./isArguments.js */ \"../../../node_modules/lodash-es/isArguments.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isArrayLikeObject_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isArrayLikeObject.js */ \"../../../node_modules/lodash-es/isArrayLikeObject.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./isFunction.js */ \"../../../node_modules/lodash-es/isFunction.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _isPlainObject_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./isPlainObject.js */ \"../../../node_modules/lodash-es/isPlainObject.js\");\n/* harmony import */ var _isTypedArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isTypedArray.js */ \"../../../node_modules/lodash-es/isTypedArray.js\");\n/* harmony import */ var _safeGet_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_safeGet.js */ \"../../../node_modules/lodash-es/_safeGet.js\");\n/* harmony import */ var _toPlainObject_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./toPlainObject.js */ \"../../../node_modules/lodash-es/toPlainObject.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = (0,_safeGet_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, key),\n srcValue = (0,_safeGet_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n (0,_assignMergeValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(srcValue),\n isBuff = !isArr && (0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(srcValue),\n isTyped = !isArr && !isBuff && (0,_isTypedArray_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(objValue)) {\n newValue = objValue;\n }\n else if ((0,_isArrayLikeObject_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(objValue)) {\n newValue = (0,_copyArray_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = (0,_cloneBuffer_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = (0,_cloneTypedArray_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if ((0,_isPlainObject_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(srcValue) || (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(srcValue)) {\n newValue = objValue;\n if ((0,_isArguments_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(objValue)) {\n newValue = (0,_toPlainObject_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(objValue);\n }\n else if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(objValue) || (0,_isFunction_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"])(objValue)) {\n newValue = (0,_initCloneObject_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n (0,_assignMergeValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, key, newValue);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMergeDeep);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1lcmdlRGVlcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNEO0FBQ1Y7QUFDUTtBQUNaO0FBQ1k7QUFDVDtBQUNSO0FBQ29CO0FBQ2xCO0FBQ0k7QUFDSjtBQUNVO0FBQ0Y7QUFDVDtBQUNXOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVEQUFPO0FBQ3hCLGlCQUFpQix1REFBTztBQUN4Qjs7QUFFQTtBQUNBLElBQUksZ0VBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0IsdURBQU87QUFDdkIsMkJBQTJCLHdEQUFRO0FBQ25DLHVDQUF1Qyw0REFBWTs7QUFFbkQ7QUFDQTtBQUNBLFVBQVUsdURBQU87QUFDakI7QUFDQTtBQUNBLGVBQWUsaUVBQWlCO0FBQ2hDLG1CQUFtQix5REFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkRBQVc7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtEQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDZEQUFhLGNBQWMsNERBQVc7QUFDbkQ7QUFDQSxVQUFVLDREQUFXO0FBQ3JCLG1CQUFtQiw4REFBYTtBQUNoQztBQUNBLGdCQUFnQix5REFBUSxjQUFjLDJEQUFVO0FBQ2hELG1CQUFtQixnRUFBZTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdFQUFnQjtBQUNsQjs7QUFFQSxpRUFBZSxhQUFhLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU1lcmdlRGVlcC5qcz80NDUwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NpZ25NZXJnZVZhbHVlIGZyb20gJy4vX2Fzc2lnbk1lcmdlVmFsdWUuanMnO1xuaW1wb3J0IGNsb25lQnVmZmVyIGZyb20gJy4vX2Nsb25lQnVmZmVyLmpzJztcbmltcG9ydCBjbG9uZVR5cGVkQXJyYXkgZnJvbSAnLi9fY2xvbmVUeXBlZEFycmF5LmpzJztcbmltcG9ydCBjb3B5QXJyYXkgZnJvbSAnLi9fY29weUFycmF5LmpzJztcbmltcG9ydCBpbml0Q2xvbmVPYmplY3QgZnJvbSAnLi9faW5pdENsb25lT2JqZWN0LmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2VPYmplY3QgZnJvbSAnLi9pc0FycmF5TGlrZU9iamVjdC5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuaW1wb3J0IHNhZmVHZXQgZnJvbSAnLi9fc2FmZUdldC5qcyc7XG5pbXBvcnQgdG9QbGFpbk9iamVjdCBmcm9tICcuL3RvUGxhaW5PYmplY3QuanMnO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgaWYgKHN0YWNrZWQpIHtcbiAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICA6IHVuZGVmaW5lZDtcblxuICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICBpc1R5cGVkID0gIWlzQXJyICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtcblxuICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVUeXBlZEFycmF5KHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBuZXdWYWx1ZSA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAoaXNDb21tb24pIHtcbiAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gIH1cbiAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlTWVyZ2VEZWVwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseMergeDeep.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseOrderBy.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseOrderBy.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayMap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arrayMap.js */ \"../../../node_modules/lodash-es/_arrayMap.js\");\n/* harmony import */ var _baseGet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseGet.js */ \"../../../node_modules/lodash-es/_baseGet.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _baseMap_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_baseMap.js */ \"../../../node_modules/lodash-es/_baseMap.js\");\n/* harmony import */ var _baseSortBy_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_baseSortBy.js */ \"../../../node_modules/lodash-es/_baseSortBy.js\");\n/* harmony import */ var _baseUnary_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_baseUnary.js */ \"../../../node_modules/lodash-es/_baseUnary.js\");\n/* harmony import */ var _compareMultiple_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_compareMultiple.js */ \"../../../node_modules/lodash-es/_compareMultiple.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n\n\n\n\n\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = (0,_arrayMap_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(iteratees, function(iteratee) {\n if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iteratee)) {\n return function(value) {\n return (0,_baseGet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [_identity_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]];\n }\n\n var index = -1;\n iteratees = (0,_arrayMap_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(iteratees, (0,_baseUnary_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(_baseIteratee_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]));\n\n var result = (0,_baseMap_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(collection, function(value, key, collection) {\n var criteria = (0,_arrayMap_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return (0,_baseSortBy_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(result, function(object, other) {\n return (0,_compareMultiple_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(object, other, orders);\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseOrderBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU9yZGVyQnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNGO0FBQ1U7QUFDVjtBQUNNO0FBQ0Y7QUFDWTtBQUNmO0FBQ0Y7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsOEJBQThCO0FBQ3pDLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHdEQUFRO0FBQ3hCLFVBQVUsdURBQU87QUFDakI7QUFDQSxpQkFBaUIsdURBQU87QUFDeEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSixpQkFBaUIsb0RBQVE7QUFDekI7O0FBRUE7QUFDQSxjQUFjLHdEQUFRLFlBQVkseURBQVMsQ0FBQyx3REFBWTs7QUFFeEQsZUFBZSx1REFBTztBQUN0QixtQkFBbUIsd0RBQVE7QUFDM0I7QUFDQSxLQUFLO0FBQ0wsYUFBYTtBQUNiLEdBQUc7O0FBRUgsU0FBUywwREFBVTtBQUNuQixXQUFXLCtEQUFlO0FBQzFCLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZU9yZGVyQnkuanM/MzYyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGJhc2VHZXQgZnJvbSAnLi9fYmFzZUdldC5qcyc7XG5pbXBvcnQgYmFzZUl0ZXJhdGVlIGZyb20gJy4vX2Jhc2VJdGVyYXRlZS5qcyc7XG5pbXBvcnQgYmFzZU1hcCBmcm9tICcuL19iYXNlTWFwLmpzJztcbmltcG9ydCBiYXNlU29ydEJ5IGZyb20gJy4vX2Jhc2VTb3J0QnkuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IGNvbXBhcmVNdWx0aXBsZSBmcm9tICcuL19jb21wYXJlTXVsdGlwbGUuanMnO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gb3JkZXJzIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpIHtcbiAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoaXNBcnJheShpdGVyYXRlZSkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2VHZXQodmFsdWUsIGl0ZXJhdGVlLmxlbmd0aCA9PT0gMSA/IGl0ZXJhdGVlWzBdIDogaXRlcmF0ZWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlcmF0ZWU7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaXRlcmF0ZWVzID0gW2lkZW50aXR5XTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IC0xO1xuICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShiYXNlSXRlcmF0ZWUpKTtcblxuICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgdmFyIGNyaXRlcmlhID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGl0ZXJhdGVlKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4geyAnY3JpdGVyaWEnOiBjcml0ZXJpYSwgJ2luZGV4JzogKytpbmRleCwgJ3ZhbHVlJzogdmFsdWUgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgcmV0dXJuIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZU9yZGVyQnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseOrderBy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_basePick.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_basePick.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _basePickBy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_basePickBy.js */ \"../../../node_modules/lodash-es/_basePickBy.js\");\n/* harmony import */ var _hasIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hasIn.js */ \"../../../node_modules/lodash-es/hasIn.js\");\n\n\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return (0,_basePickBy_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, paths, function(value, path) {\n return (0,_hasIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, path);\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (basePick);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVBpY2suanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ1g7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsU0FBUywwREFBVTtBQUNuQixXQUFXLHFEQUFLO0FBQ2hCLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVBpY2suanM/Mjg2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVBpY2tCeSBmcm9tICcuL19iYXNlUGlja0J5LmpzJztcbmltcG9ydCBoYXNJbiBmcm9tICcuL2hhc0luLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUGljaztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_basePick.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_basePickBy.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_basePickBy.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGet_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseGet.js */ \"../../../node_modules/lodash-es/_baseGet.js\");\n/* harmony import */ var _baseSet_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseSet.js */ \"../../../node_modules/lodash-es/_baseSet.js\");\n/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_castPath.js */ \"../../../node_modules/lodash-es/_castPath.js\");\n\n\n\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = (0,_baseGet_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, path);\n\n if (predicate(value, path)) {\n (0,_baseSet_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result, (0,_castPath_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path, object), value);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (basePickBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVBpY2tCeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW9DO0FBQ0E7QUFDRTs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFPOztBQUV2QjtBQUNBLE1BQU0sdURBQU8sU0FBUyx3REFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVBpY2tCeS5qcz9iMzBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0IGZyb20gJy4vX2Jhc2VHZXQuanMnO1xuaW1wb3J0IGJhc2VTZXQgZnJvbSAnLi9fYmFzZVNldC5qcyc7XG5pbXBvcnQgY2FzdFBhdGggZnJvbSAnLi9fY2FzdFBhdGguanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mICBgXy5waWNrQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0ge307XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgcGF0aCA9IHBhdGhzW2luZGV4XSxcbiAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBwYXRoKSkge1xuICAgICAgYmFzZVNldChyZXN1bHQsIGNhc3RQYXRoKHBhdGgsIG9iamVjdCksIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVBpY2tCeTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_basePickBy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseProperty.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseProperty.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseProperty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUHJvcGVydHkuanM/NzI0OCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUHJvcGVydHk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseProperty.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_basePropertyDeep.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/_basePropertyDeep.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGet_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseGet.js */ \"../../../node_modules/lodash-es/_baseGet.js\");\n\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return (0,_baseGet_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, path);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (basePropertyDeep);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5RGVlcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvQzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdURBQU87QUFDbEI7QUFDQTs7QUFFQSxpRUFBZSxnQkFBZ0IsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUHJvcGVydHlEZWVwLmpzPzc4ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VHZXQgZnJvbSAnLi9fYmFzZUdldC5qcyc7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUHJvcGVydHlEZWVwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_basePropertyDeep.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseRange.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseRange.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseRange);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVJhbmdlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VSYW5nZS5qcz8xYmY1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICogY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqL1xuZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICBzdGFydCArPSBzdGVwO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VSYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseRange.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseReduce.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseReduce.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseReduce);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVJlZHVjZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLFVBQVU7QUFDckIsV0FBVyxHQUFHO0FBQ2QsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVJlZHVjZS5qcz9hNzYwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVkdWNlYCBhbmQgYF8ucmVkdWNlUmlnaHRgLCB3aXRob3V0IHN1cHBvcnRcbiAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBiYXNlUmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBlYWNoRnVuYykge1xuICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgPyAoaW5pdEFjY3VtID0gZmFsc2UsIHZhbHVlKVxuICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVJlZHVjZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseReduce.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseRest.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseRest.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n/* harmony import */ var _overRest_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_overRest.js */ \"../../../node_modules/lodash-es/_overRest.js\");\n/* harmony import */ var _setToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_setToString.js */ \"../../../node_modules/lodash-es/_setToString.js\");\n\n\n\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return (0,_setToString_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_overRest_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(func, start, _identity_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]), func + '');\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseRest);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVJlc3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxQztBQUNDO0FBQ007O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBLFNBQVMsMkRBQVcsQ0FBQyx3REFBUSxjQUFjLG9EQUFRO0FBQ25EOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUmVzdC5qcz8zZWUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcbmltcG9ydCBvdmVyUmVzdCBmcm9tICcuL19vdmVyUmVzdC5qcyc7XG5pbXBvcnQgc2V0VG9TdHJpbmcgZnJvbSAnLi9fc2V0VG9TdHJpbmcuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVJlc3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseRest.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseSet.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseSet.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assignValue_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_assignValue.js */ \"../../../node_modules/lodash-es/_assignValue.js\");\n/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_castPath.js */ \"../../../node_modules/lodash-es/_castPath.js\");\n/* harmony import */ var _isIndex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_isIndex.js */ \"../../../node_modules/lodash-es/_isIndex.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_toKey.js */ \"../../../node_modules/lodash-es/_toKey.js\");\n\n\n\n\n\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n return object;\n }\n path = (0,_castPath_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = (0,_toKey_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = (0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(objValue)\n ? objValue\n : ((0,_isIndex_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(path[index + 1]) ? [] : {});\n }\n }\n (0,_assignValue_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNEM7QUFDTjtBQUNGO0FBQ0M7QUFDTDs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsR0FBRztBQUNkLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLE9BQU8sd0RBQVE7QUFDZjtBQUNBO0FBQ0EsU0FBUyx3REFBUTs7QUFFakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLHFEQUFLO0FBQ25COztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix3REFBUTtBQUMzQjtBQUNBLGFBQWEsdURBQU8sMkJBQTJCO0FBQy9DO0FBQ0E7QUFDQSxJQUFJLDJEQUFXO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VTZXQuanM/NWM2ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzaWduVmFsdWUgZnJvbSAnLi9fYXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGNhc3RQYXRoIGZyb20gJy4vX2Nhc3RQYXRoLmpzJztcbmltcG9ydCBpc0luZGV4IGZyb20gJy4vX2lzSW5kZXguanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IHRvS2V5IGZyb20gJy4vX3RvS2V5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIHBhdGggY3JlYXRpb24uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoLFxuICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICB3aGlsZSAobmVzdGVkICE9IG51bGwgJiYgKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoa2V5ID09PSAnX19wcm90b19fJyB8fCBrZXkgPT09ICdjb25zdHJ1Y3RvcicgfHwga2V5ID09PSAncHJvdG90eXBlJykge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT0gbGFzdEluZGV4KSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgIDogKGlzSW5kZXgocGF0aFtpbmRleCArIDFdKSA/IFtdIDoge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3NpZ25WYWx1ZShuZXN0ZWQsIGtleSwgbmV3VmFsdWUpO1xuICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseSetToString.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseSetToString.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _constant_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constant.js */ \"../../../node_modules/lodash-es/constant.js\");\n/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_defineProperty.js */ \"../../../node_modules/lodash-es/_defineProperty.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n\n\n\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : function(func, string) {\n return (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': (0,_constant_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(string),\n 'writable': true\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseSetToString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNldFRvU3RyaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBcUM7QUFDYTtBQUNiOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0EsdUJBQXVCLDBEQUFjLEdBQUcsb0RBQVE7QUFDaEQsU0FBUyw4REFBYztBQUN2QjtBQUNBO0FBQ0EsYUFBYSx3REFBUTtBQUNyQjtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNldFRvU3RyaW5nLmpzPzVhODIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnN0YW50IGZyb20gJy4vY29uc3RhbnQuanMnO1xuaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gJy4vX2RlZmluZVByb3BlcnR5LmpzJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICcuL2lkZW50aXR5LmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTZXRUb1N0cmluZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseSetToString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseSortBy.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseSortBy.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseSortBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNvcnRCeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNvcnRCeS5qcz81Nzg5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICogdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc29ydC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGFycmF5LnNvcnQoY29tcGFyZXIpO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VTb3J0Qnk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseSortBy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseTimes.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseTimes.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseTimes);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRpbWVzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRpbWVzLmpzP2Q2YmYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRpbWVzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseTimes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseToString.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseToString.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n/* harmony import */ var _arrayMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_arrayMap.js */ \"../../../node_modules/lodash-es/_arrayMap.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n\n\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return (0,_arrayMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value, baseToString) + '';\n }\n if ((0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseToString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRvU3RyaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtDO0FBQ0k7QUFDSDtBQUNFOztBQUVyQztBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLGtEQUFNLEdBQUcsNERBQWdCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSx1REFBTztBQUNiO0FBQ0EsV0FBVyx3REFBUTtBQUNuQjtBQUNBLE1BQU0sd0RBQVE7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVG9TdHJpbmcuanM/MDQxYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRvU3RyaW5nO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseToString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseTrim.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseTrim.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _trimmedEndIndex_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_trimmedEndIndex.js */ \"../../../node_modules/lodash-es/_trimmedEndIndex.js\");\n\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, (0,_trimmedEndIndex_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseTrim);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRyaW0uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBb0Q7O0FBRXBEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrREFBZTtBQUNyQztBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVHJpbS5qcz85ZWVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cmltbWVkRW5kSW5kZXggZnJvbSAnLi9fdHJpbW1lZEVuZEluZGV4LmpzJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVHJpbTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseTrim.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseUnary.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseUnary.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseUnary);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVVuYXJ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVW5hcnkuanM/MjU3MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VVbmFyeTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseUnary.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseUniq.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseUniq.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _SetCache_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_SetCache.js */ \"../../../node_modules/lodash-es/_SetCache.js\");\n/* harmony import */ var _arrayIncludes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arrayIncludes.js */ \"../../../node_modules/lodash-es/_arrayIncludes.js\");\n/* harmony import */ var _arrayIncludesWith_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayIncludesWith.js */ \"../../../node_modules/lodash-es/_arrayIncludesWith.js\");\n/* harmony import */ var _cacheHas_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_cacheHas.js */ \"../../../node_modules/lodash-es/_cacheHas.js\");\n/* harmony import */ var _createSet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_createSet.js */ \"../../../node_modules/lodash-es/_createSet.js\");\n/* harmony import */ var _setToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_setToArray.js */ \"../../../node_modules/lodash-es/_setToArray.js\");\n\n\n\n\n\n\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = _arrayIncludes_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = _arrayIncludesWith_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : (0,_createSet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(array);\n if (set) {\n return (0,_setToArray_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(set);\n }\n isCommon = false;\n includes = _cacheHas_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n seen = new _SetCache_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseUniq);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVVuaXEuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFzQztBQUNVO0FBQ1E7QUFDbEI7QUFDRTtBQUNFOztBQUUxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQix5REFBYTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSw2REFBaUI7QUFDaEM7QUFDQTtBQUNBLGdDQUFnQyx5REFBUztBQUN6QztBQUNBLGFBQWEsMERBQVU7QUFDdkI7QUFDQTtBQUNBLGVBQWUsb0RBQVE7QUFDdkIsZUFBZSxvREFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVW5pcS5qcz8yMjcxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTZXRDYWNoZSBmcm9tICcuL19TZXRDYWNoZS5qcyc7XG5pbXBvcnQgYXJyYXlJbmNsdWRlcyBmcm9tICcuL19hcnJheUluY2x1ZGVzLmpzJztcbmltcG9ydCBhcnJheUluY2x1ZGVzV2l0aCBmcm9tICcuL19hcnJheUluY2x1ZGVzV2l0aC5qcyc7XG5pbXBvcnQgY2FjaGVIYXMgZnJvbSAnLi9fY2FjaGVIYXMuanMnO1xuaW1wb3J0IGNyZWF0ZVNldCBmcm9tICcuL19jcmVhdGVTZXQuanMnO1xuaW1wb3J0IHNldFRvQXJyYXkgZnJvbSAnLi9fc2V0VG9BcnJheS5qcyc7XG5cbi8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xudmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5pcUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGlzQ29tbW9uID0gdHJ1ZSxcbiAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICBpZiAoY29tcGFyYXRvcikge1xuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgfVxuICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgIGlmIChzZXQpIHtcbiAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgfVxuICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICB9XG4gIGVsc2Uge1xuICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICB9XG4gIG91dGVyOlxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgIGlmIChzZWVuW3NlZW5JbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VVbmlxO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseUniq.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseValues.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseValues.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayMap_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arrayMap.js */ \"../../../node_modules/lodash-es/_arrayMap.js\");\n\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return (0,_arrayMap_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, function(key) {\n return object[key];\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseValues);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVZhbHVlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLFNBQVMsd0RBQVE7QUFDakI7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsVUFBVSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VWYWx1ZXMuanM/OTBlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVZhbHVlcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseValues.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_baseZipObject.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_baseZipObject.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseZipObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVppcE9iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxhQUFhLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVppcE9iamVjdC5qcz83OWViIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbkZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlWmlwT2JqZWN0KHByb3BzLCB2YWx1ZXMsIGFzc2lnbkZ1bmMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICB2YWxzTGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IHt9O1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gaW5kZXggPCB2YWxzTGVuZ3RoID8gdmFsdWVzW2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVppcE9iamVjdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_baseZipObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cacheHas.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_cacheHas.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cacheHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2FjaGVIYXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NhY2hlSGFzLmpzP2U3MWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYSBgY2FjaGVgIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYWNoZSBUaGUgY2FjaGUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNhY2hlSGFzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cacheHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_castFunction.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_castFunction.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : _identity_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (castFunction);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2FzdEZ1bmN0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsOENBQThDLG9EQUFRO0FBQ3REOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jYXN0RnVuY3Rpb24uanM/ODFhNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5cbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBgaWRlbnRpdHlgIGlmIGl0J3Mgbm90IGEgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FzdEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNhc3RGdW5jdGlvbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_castFunction.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_castPath.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_castPath.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isKey.js */ \"../../../node_modules/lodash-es/_isKey.js\");\n/* harmony import */ var _stringToPath_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_stringToPath.js */ \"../../../node_modules/lodash-es/_stringToPath.js\");\n/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toString.js */ \"../../../node_modules/lodash-es/toString.js\");\n\n\n\n\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return value;\n }\n return (0,_isKey_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value, object) ? [value] : (0,_stringToPath_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_toString_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (castPath);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2FzdFBhdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBbUM7QUFDSDtBQUNjO0FBQ1Q7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0EsTUFBTSx1REFBTztBQUNiO0FBQ0E7QUFDQSxTQUFTLHFEQUFLLDRCQUE0Qiw0REFBWSxDQUFDLHdEQUFRO0FBQy9EOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jYXN0UGF0aC5qcz9jYzM0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNLZXkgZnJvbSAnLi9faXNLZXkuanMnO1xuaW1wb3J0IHN0cmluZ1RvUGF0aCBmcm9tICcuL19zdHJpbmdUb1BhdGguanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjYXN0UGF0aDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_castPath.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneArrayBuffer.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneArrayBuffer.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Uint8Array_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Uint8Array.js */ \"../../../node_modules/lodash-es/_Uint8Array.js\");\n\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new _Uint8Array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](result).set(new _Uint8Array_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](arrayBuffer));\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneArrayBuffer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVBcnJheUJ1ZmZlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sc0RBQVUsaUJBQWlCLHNEQUFVO0FBQzNDO0FBQ0E7O0FBRUEsaUVBQWUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVBcnJheUJ1ZmZlci5qcz84ZDRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVaW50OEFycmF5IGZyb20gJy4vX1VpbnQ4QXJyYXkuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lQXJyYXlCdWZmZXI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneArrayBuffer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneBuffer.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneBuffer.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneBuffer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVCdWZmZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBOEI7O0FBRTlCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNkJBQTZCLHVEQUFXO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZUJ1ZmZlci5qcz9hYTUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZUJ1ZmZlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneBuffer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneDataView.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneDataView.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_cloneArrayBuffer.js */ \"../../../node_modules/lodash-es/_cloneArrayBuffer.js\");\n\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? (0,_cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneDataView);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVEYXRhVmlldy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0Esd0JBQXdCLGdFQUFnQjtBQUN4QztBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZURhdGFWaWV3LmpzP2Y1MTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsb25lQXJyYXlCdWZmZXIgZnJvbSAnLi9fY2xvbmVBcnJheUJ1ZmZlci5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lRGF0YVZpZXc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneDataView.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneRegExp.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneRegExp.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneRegExp);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVSZWdFeHAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVSZWdFeHAuanM/MTkwYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUZsYWdzID0gL1xcdyokLztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gKi9cbmZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gIHJlc3VsdC5sYXN0SW5kZXggPSByZWdleHAubGFzdEluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZVJlZ0V4cDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneRegExp.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneSymbol.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneSymbol.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneSymbol);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVTeW1ib2wuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0M7O0FBRWxDO0FBQ0Esa0JBQWtCLGtEQUFNLEdBQUcsNERBQWdCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVTeW1ib2wuanM/MzE1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xvbmVTeW1ib2w7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneSymbol.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_cloneTypedArray.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_cloneTypedArray.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_cloneArrayBuffer.js */ \"../../../node_modules/lodash-es/_cloneArrayBuffer.js\");\n\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? (0,_cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneTypedArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVUeXBlZEFycmF5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSx3QkFBd0IsZ0VBQWdCO0FBQ3hDO0FBQ0E7O0FBRUEsaUVBQWUsZUFBZSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Nsb25lVHlwZWRBcnJheS5qcz9hNDA2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZUFycmF5QnVmZmVyIGZyb20gJy4vX2Nsb25lQXJyYXlCdWZmZXIuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZVR5cGVkQXJyYXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_cloneTypedArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_compareAscending.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/_compareAscending.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compareAscending);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29tcGFyZUFzY2VuZGluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHdEQUFROztBQUU5QjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isd0RBQVE7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29tcGFyZUFzY2VuZGluZy5qcz9lYWM3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqXG4gKiBDb21wYXJlcyB2YWx1ZXMgdG8gc29ydCB0aGVtIGluIGFzY2VuZGluZyBvcmRlci5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUFzY2VuZGluZyh2YWx1ZSwgb3RoZXIpIHtcbiAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgIHZhciB2YWxJc0RlZmluZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpO1xuXG4gICAgdmFyIG90aElzRGVmaW5lZCA9IG90aGVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IG90aGVyID09PSBvdGhlcixcbiAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChvdGhlcik7XG5cbiAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAodmFsSXNTeW1ib2wgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlICYmICFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sKSB8fFxuICAgICAgICAodmFsSXNOdWxsICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICF2YWxJc1JlZmxleGl2ZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlmICgoIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wgJiYgIW90aElzU3ltYm9sICYmIHZhbHVlIDwgb3RoZXIpIHx8XG4gICAgICAgIChvdGhJc1N5bWJvbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUgJiYgIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wpIHx8XG4gICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIW90aElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIW90aElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wYXJlQXNjZW5kaW5nO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_compareAscending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_compareMultiple.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_compareMultiple.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _compareAscending_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_compareAscending.js */ \"../../../node_modules/lodash-es/_compareAscending.js\");\n\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = (0,_compareAscending_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compareMultiple);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29tcGFyZU11bHRpcGxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsb0JBQW9CO0FBQy9CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixnRUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29tcGFyZU11bHRpcGxlLmpzP2I4ODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbXBhcmVBc2NlbmRpbmcgZnJvbSAnLi9fY29tcGFyZUFzY2VuZGluZy5qcyc7XG5cbi8qKlxuICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gKiBhbmQgc3RhYmxlIHNvcnQgdGhlbS5cbiAqXG4gKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICogc3BlY2lmeSBhbiBvcmRlciBvZiBcImRlc2NcIiBmb3IgZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlclxuICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbltdfHN0cmluZ1tdfSBvcmRlcnMgVGhlIG9yZGVyIHRvIHNvcnQgYnkgZm9yIGVhY2ggcHJvcGVydHkuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgIG90aENyaXRlcmlhID0gb3RoZXIuY3JpdGVyaWEsXG4gICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGlmIChpbmRleCA+PSBvcmRlcnNMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBvcmRlciA9IG9yZGVyc1tpbmRleF07XG4gICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgfVxuICB9XG4gIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgLy8gYG9iamVjdGAgYW5kIGBvdGhlcmAuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vamFzaGtlbmFzL3VuZGVyc2NvcmUvcHVsbC8xMjQ3XG4gIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gIC8vXG4gIC8vIFRoaXMgYWxzbyBlbnN1cmVzIGEgc3RhYmxlIHNvcnQgaW4gVjggYW5kIG90aGVyIGVuZ2luZXMuXG4gIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBhcmVNdWx0aXBsZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_compareMultiple.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_copyArray.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_copyArray.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (copyArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weUFycmF5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weUFycmF5LmpzP2E5ZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlBcnJheTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_copyArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_copyObject.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_copyObject.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assignValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_assignValue.js */ \"../../../node_modules/lodash-es/_assignValue.js\");\n/* harmony import */ var _baseAssignValue_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseAssignValue.js */ \"../../../node_modules/lodash-es/_baseAssignValue.js\");\n\n\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n (0,_baseAssignValue_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, key, newValue);\n } else {\n (0,_assignValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, key, newValue);\n }\n }\n return object;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (copyObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weU9iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEM7QUFDUTs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUSxVQUFVO0FBQzdCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCOztBQUV4QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrREFBZTtBQUNyQixNQUFNO0FBQ04sTUFBTSwyREFBVztBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weU9iamVjdC5qcz9iZGZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NpZ25WYWx1ZSBmcm9tICcuL19hc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgYmFzZUFzc2lnblZhbHVlIGZyb20gJy4vX2Jhc2VBc3NpZ25WYWx1ZS5qcyc7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb3B5T2JqZWN0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_copyObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_copySymbols.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_copySymbols.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _copyObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_copyObject.js */ \"../../../node_modules/lodash-es/_copyObject.js\");\n/* harmony import */ var _getSymbols_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getSymbols.js */ \"../../../node_modules/lodash-es/_getSymbols.js\");\n\n\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return (0,_copyObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, (0,_getSymbols_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(source), object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (copySymbols);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weVN5bWJvbHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ0E7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUSxVQUFVO0FBQzdCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsU0FBUywwREFBVSxTQUFTLDBEQUFVO0FBQ3RDOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3B5U3ltYm9scy5qcz9hMDYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGdldFN5bWJvbHMgZnJvbSAnLi9fZ2V0U3ltYm9scy5qcyc7XG5cbi8qKlxuICogQ29waWVzIG93biBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHN5bWJvbHMgdG8uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5U3ltYm9scyhzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29weVN5bWJvbHM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_copySymbols.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_copySymbolsIn.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_copySymbolsIn.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _copyObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_copyObject.js */ \"../../../node_modules/lodash-es/_copyObject.js\");\n/* harmony import */ var _getSymbolsIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_getSymbolsIn.js */ \"../../../node_modules/lodash-es/_getSymbolsIn.js\");\n\n\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return (0,_copyObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(source, (0,_getSymbolsIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(source), object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (copySymbolsIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weVN5bWJvbHNJbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEM7QUFDSTs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRLFVBQVU7QUFDN0IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTLDBEQUFVLFNBQVMsNERBQVk7QUFDeEM7O0FBRUEsaUVBQWUsYUFBYSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlTeW1ib2xzSW4uanM/YzkxNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBnZXRTeW1ib2xzSW4gZnJvbSAnLi9fZ2V0U3ltYm9sc0luLmpzJztcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb3B5U3ltYm9sc0luO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_copySymbolsIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_coreJsData.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_coreJsData.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"][\"__core-js_shared__\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (coreJsData);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29yZUpzRGF0YS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qjs7QUFFOUI7QUFDQSxpQkFBaUIsc0VBQTBCOztBQUUzQyxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29yZUpzRGF0YS5qcz82MzgyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5leHBvcnQgZGVmYXVsdCBjb3JlSnNEYXRhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_coreJsData.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createAssigner.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_createAssigner.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseRest.js */ \"../../../node_modules/lodash-es/_baseRest.js\");\n/* harmony import */ var _isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isIterateeCall.js */ \"../../../node_modules/lodash-es/_isIterateeCall.js\");\n\n\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return (0,_baseRest_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAssigner);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQXNzaWduZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDO0FBQ1k7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsU0FBUyx3REFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLDhEQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZUFzc2lnbmVyLmpzPzQzNDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VSZXN0IGZyb20gJy4vX2Jhc2VSZXN0LmpzJztcbmltcG9ydCBpc0l0ZXJhdGVlQ2FsbCBmcm9tICcuL19pc0l0ZXJhdGVlQ2FsbC5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUFzc2lnbmVyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createAssigner.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createBaseEach.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_createBaseEach.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!(0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createBaseEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQmFzZUVhY2guanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsU0FBUztBQUNwQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywyREFBVztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZUJhc2VFYWNoLmpzP2IzMTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgYmFzZUVhY2hgIG9yIGBiYXNlRWFjaFJpZ2h0YCBmdW5jdGlvbi5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBhIGNvbGxlY3Rpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCYXNlRWFjaDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createBaseEach.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createBaseFor.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_createBaseFor.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createBaseFor);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQmFzZUZvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxhQUFhLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQmFzZUZvci5qcz9hNzE0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCYXNlRm9yO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createBaseFor.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createFind.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_createFind.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!(0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection)) {\n var iteratee = (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(predicate, 3);\n collection = (0,_keys_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createFind);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlRmluZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQThDO0FBQ0g7QUFDZDs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywyREFBVztBQUNwQixxQkFBcUIsNERBQVk7QUFDakMsbUJBQW1CLG9EQUFJO0FBQ3ZCLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVGaW5kLmpzPzlhNTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VJdGVyYXRlZSBmcm9tICcuL19iYXNlSXRlcmF0ZWUuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVGaW5kO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createFind.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createRange.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_createRange.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseRange_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseRange.js */ \"../../../node_modules/lodash-es/_baseRange.js\");\n/* harmony import */ var _isIterateeCall_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isIterateeCall.js */ \"../../../node_modules/lodash-es/_isIterateeCall.js\");\n/* harmony import */ var _toFinite_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toFinite.js */ \"../../../node_modules/lodash-es/toFinite.js\");\n\n\n\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = (0,_toFinite_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = (0,_toFinite_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : (0,_toFinite_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(step);\n return (0,_baseRange_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(start, end, step, fromRight);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createRange);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlUmFuZ2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3QztBQUNVO0FBQ2I7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsOERBQWM7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSx3REFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sWUFBWSx3REFBUTtBQUNwQjtBQUNBLHlEQUF5RCx3REFBUTtBQUNqRSxXQUFXLHlEQUFTO0FBQ3BCO0FBQ0E7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZVJhbmdlLmpzP2ExM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VSYW5nZSBmcm9tICcuL19iYXNlUmFuZ2UuanMnO1xuaW1wb3J0IGlzSXRlcmF0ZWVDYWxsIGZyb20gJy4vX2lzSXRlcmF0ZWVDYWxsLmpzJztcbmltcG9ydCB0b0Zpbml0ZSBmcm9tICcuL3RvRmluaXRlLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVSYW5nZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createRange.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_createSet.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_createSet.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Set_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Set.js */ \"../../../node_modules/lodash-es/_Set.js\");\n/* harmony import */ var _noop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./noop.js */ \"../../../node_modules/lodash-es/noop.js\");\n/* harmony import */ var _setToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_setToArray.js */ \"../../../node_modules/lodash-es/_setToArray.js\");\n\n\n\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(_Set_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && (1 / (0,_setToArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(new _Set_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]([,-0]))[1]) == INFINITY) ? _noop_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : function(values) {\n return new _Set_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](values);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlU2V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEI7QUFDQztBQUNhOztBQUUxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGtCQUFrQiwrQ0FBRyxTQUFTLDBEQUFVLEtBQUssK0NBQUcsNEJBQTRCLGdEQUFJO0FBQ2hGLGFBQWEsK0NBQUc7QUFDaEI7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZVNldC5qcz8yMmY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTZXQgZnJvbSAnLi9fU2V0LmpzJztcbmltcG9ydCBub29wIGZyb20gJy4vbm9vcC5qcyc7XG5pbXBvcnQgc2V0VG9BcnJheSBmcm9tICcuL19zZXRUb0FycmF5LmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2V0IG9iamVjdCBvZiBgdmFsdWVzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYWRkIHRvIHRoZSBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICovXG52YXIgY3JlYXRlU2V0ID0gIShTZXQgJiYgKDEgLyBzZXRUb0FycmF5KG5ldyBTZXQoWywtMF0pKVsxXSkgPT0gSU5GSU5JVFkpID8gbm9vcCA6IGZ1bmN0aW9uKHZhbHVlcykge1xuICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU2V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_createSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_defineProperty.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_defineProperty.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n\n\nvar defineProperty = (function() {\n try {\n var func = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (defineProperty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZGVmaW5lUHJvcGVydHkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7O0FBRXhDO0FBQ0E7QUFDQSxlQUFlLHlEQUFTO0FBQ3hCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLElBQUk7QUFDSixDQUFDOztBQUVELGlFQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19kZWZpbmVQcm9wZXJ0eS5qcz8xN2MxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROYXRpdmUgZnJvbSAnLi9fZ2V0TmF0aXZlLmpzJztcblxudmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICByZXR1cm4gZnVuYztcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZVByb3BlcnR5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_defineProperty.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_equalArrays.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_equalArrays.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _SetCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_SetCache.js */ \"../../../node_modules/lodash-es/_SetCache.js\");\n/* harmony import */ var _arraySome_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arraySome.js */ \"../../../node_modules/lodash-es/_arraySome.js\");\n/* harmony import */ var _cacheHas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_cacheHas.js */ \"../../../node_modules/lodash-es/_cacheHas.js\");\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new _SetCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!(0,_arraySome_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(other, function(othValue, othIndex) {\n if (!(0,_cacheHas_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (equalArrays);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXF1YWxBcnJheXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzQztBQUNFO0FBQ0Y7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxvREFBUTs7QUFFOUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5REFBUztBQUNwQixpQkFBaUIsd0RBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lcXVhbEFycmF5cy5qcz85NWJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTZXRDYWNoZSBmcm9tICcuL19TZXRDYWNoZS5qcyc7XG5pbXBvcnQgYXJyYXlTb21lIGZyb20gJy4vX2FycmF5U29tZS5qcyc7XG5pbXBvcnQgY2FjaGVIYXMgZnJvbSAnLi9fY2FjaGVIYXMuanMnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVxdWFsQXJyYXlzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_equalArrays.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_equalByTag.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_equalByTag.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n/* harmony import */ var _Uint8Array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_Uint8Array.js */ \"../../../node_modules/lodash-es/_Uint8Array.js\");\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n/* harmony import */ var _equalArrays_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_equalArrays.js */ \"../../../node_modules/lodash-es/_equalArrays.js\");\n/* harmony import */ var _mapToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_mapToArray.js */ \"../../../node_modules/lodash-es/_mapToArray.js\");\n/* harmony import */ var _setToArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_setToArray.js */ \"../../../node_modules/lodash-es/_setToArray.js\");\n\n\n\n\n\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new _Uint8Array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](object), new _Uint8Array_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return (0,_eq_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = _mapToArray_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = _setToArray_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = (0,_equalArrays_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (equalByTag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXF1YWxCeVRhZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWtDO0FBQ1E7QUFDakI7QUFDbUI7QUFDRjtBQUNBOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixrREFBTSxHQUFHLDREQUFnQjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLHNEQUFVLGNBQWMsc0RBQVU7QUFDM0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtEQUFFOztBQUVmO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHNEQUFVOztBQUU5QjtBQUNBO0FBQ0EsNEJBQTRCLHNEQUFVOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQiwyREFBVztBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lcXVhbEJ5VGFnLmpzPzcyMGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN5bWJvbCBmcm9tICcuL19TeW1ib2wuanMnO1xuaW1wb3J0IFVpbnQ4QXJyYXkgZnJvbSAnLi9fVWludDhBcnJheS5qcyc7XG5pbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5pbXBvcnQgZXF1YWxBcnJheXMgZnJvbSAnLi9fZXF1YWxBcnJheXMuanMnO1xuaW1wb3J0IG1hcFRvQXJyYXkgZnJvbSAnLi9fbWFwVG9BcnJheS5qcyc7XG5pbXBvcnQgc2V0VG9BcnJheSBmcm9tICcuL19zZXRUb0FycmF5LmpzJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xWYWx1ZU9mID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by52YWx1ZU9mIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IG9iamVjdC5idWZmZXI7XG4gICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAvLyBJbnZhbGlkIGRhdGVzIGFyZSBjb2VyY2VkIHRvIGBOYU5gLlxuICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICBpZiAob2JqZWN0LnNpemUgIT0gb3RoZXIuc2l6ZSAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIEFzc3VtZSBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXF1YWxCeVRhZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_equalByTag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_equalObjects.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_equalObjects.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getAllKeys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getAllKeys.js */ \"../../../node_modules/lodash-es/_getAllKeys.js\");\n\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = (0,_getAllKeys_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object),\n objLength = objProps.length,\n othProps = (0,_getAllKeys_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (equalObjects);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXF1YWxPYmplY3RzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTBDOztBQUUxQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwwREFBVTtBQUMzQjtBQUNBLGlCQUFpQiwwREFBVTtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2VxdWFsT2JqZWN0cy5qcz9lM2YwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRBbGxLZXlzIGZyb20gJy4vX2dldEFsbEtleXMuanMnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDE7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBvYmplY3RzIHdpdGggc3VwcG9ydCBmb3JcbiAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgIG9iakxlbmd0aCA9IG9ialByb3BzLmxlbmd0aCxcbiAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgaWYgKG9iakxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIWlzUGFydGlhbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgaW5kZXggPSBvYmpMZW5ndGg7XG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICBpZiAoIShpc1BhcnRpYWwgPyBrZXkgaW4gb3RoZXIgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCBrZXkpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICBzdGFjay5zZXQob3RoZXIsIG9iamVjdCk7XG5cbiAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICApKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gIH1cbiAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXF1YWxPYmplY3RzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_equalObjects.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_flatRest.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_flatRest.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _flatten_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flatten.js */ \"../../../node_modules/lodash-es/flatten.js\");\n/* harmony import */ var _overRest_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_overRest.js */ \"../../../node_modules/lodash-es/_overRest.js\");\n/* harmony import */ var _setToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_setToString.js */ \"../../../node_modules/lodash-es/_setToString.js\");\n\n\n\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return (0,_setToString_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_overRest_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(func, undefined, _flatten_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]), func + '');\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (flatRest);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZmxhdFJlc3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFtQztBQUNHO0FBQ007O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsU0FBUywyREFBVyxDQUFDLHdEQUFRLGtCQUFrQixtREFBTztBQUN0RDs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZmxhdFJlc3QuanM/MDZmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmxhdHRlbiBmcm9tICcuL2ZsYXR0ZW4uanMnO1xuaW1wb3J0IG92ZXJSZXN0IGZyb20gJy4vX292ZXJSZXN0LmpzJztcbmltcG9ydCBzZXRUb1N0cmluZyBmcm9tICcuL19zZXRUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggZmxhdHRlbnMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gZmxhdFJlc3QoZnVuYykge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZmxhdFJlc3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_flatRest.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_freeGlobal.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_freeGlobal.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (freeGlobal);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZnJlZUdsb2JhbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZnJlZUdsb2JhbC5qcz9kOWM4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbmV4cG9ydCBkZWZhdWx0IGZyZWVHbG9iYWw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_freeGlobal.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getAllKeys.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_getAllKeys.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseGetAllKeys.js */ \"../../../node_modules/lodash-es/_baseGetAllKeys.js\");\n/* harmony import */ var _getSymbols_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_getSymbols.js */ \"../../../node_modules/lodash-es/_getSymbols.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return (0,_baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, _keys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _getSymbols_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getAllKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0QWxsS2V5cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtEO0FBQ1I7QUFDYjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxTQUFTLDhEQUFjLFNBQVMsZ0RBQUksRUFBRSxzREFBVTtBQUNoRDs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0QWxsS2V5cy5qcz9kOGNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0QWxsS2V5cyBmcm9tICcuL19iYXNlR2V0QWxsS2V5cy5qcyc7XG5pbXBvcnQgZ2V0U3ltYm9scyBmcm9tICcuL19nZXRTeW1ib2xzLmpzJztcbmltcG9ydCBrZXlzIGZyb20gJy4va2V5cy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEFsbEtleXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getAllKeys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getAllKeysIn.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_getAllKeysIn.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseGetAllKeys.js */ \"../../../node_modules/lodash-es/_baseGetAllKeys.js\");\n/* harmony import */ var _getSymbolsIn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_getSymbolsIn.js */ \"../../../node_modules/lodash-es/_getSymbolsIn.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return (0,_baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, _keysIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _getSymbolsIn_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getAllKeysIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0QWxsS2V5c0luLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0Q7QUFDSjtBQUNiOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0EsU0FBUyw4REFBYyxTQUFTLGtEQUFNLEVBQUUsd0RBQVk7QUFDcEQ7O0FBRUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldEFsbEtleXNJbi5qcz8zNjllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0QWxsS2V5cyBmcm9tICcuL19iYXNlR2V0QWxsS2V5cy5qcyc7XG5pbXBvcnQgZ2V0U3ltYm9sc0luIGZyb20gJy4vX2dldFN5bWJvbHNJbi5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0QWxsS2V5c0luO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getAllKeysIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getMapData.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_getMapData.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isKeyable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isKeyable.js */ \"../../../node_modules/lodash-es/_isKeyable.js\");\n\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return (0,_isKeyable_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getMapData);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TWFwRGF0YS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQSxTQUFTLHlEQUFTO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TWFwRGF0YS5qcz81NDI2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0tleWFibGUgZnJvbSAnLi9faXNLZXlhYmxlLmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgcmV0dXJuIGlzS2V5YWJsZShrZXkpXG4gICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICA6IGRhdGEubWFwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRNYXBEYXRhO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getMapData.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getMatchData.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_getMatchData.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isStrictComparable.js */ \"../../../node_modules/lodash-es/_isStrictComparable.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = (0,_keys_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, (0,_isStrictComparable_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)];\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getMatchData);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TWF0Y2hEYXRhLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwRDtBQUM3Qjs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLG9EQUFJO0FBQ25COztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0Msa0VBQWtCO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TWF0Y2hEYXRhLmpzP2MxNDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzU3RyaWN0Q29tcGFyYWJsZSBmcm9tICcuL19pc1N0cmljdENvbXBhcmFibGUuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldE1hdGNoRGF0YTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getMatchData.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getNative.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_getNative.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsNative_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseIsNative.js */ \"../../../node_modules/lodash-es/_baseIsNative.js\");\n/* harmony import */ var _getValue_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getValue.js */ \"../../../node_modules/lodash-es/_getValue.js\");\n\n\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = (0,_getValue_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, key);\n return (0,_baseIsNative_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) ? value : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getNative);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0TmF0aXZlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUNSOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQSxjQUFjLHdEQUFRO0FBQ3RCLFNBQVMsNERBQVk7QUFDckI7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldE5hdGl2ZS5qcz84MTJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlSXNOYXRpdmUgZnJvbSAnLi9fYmFzZUlzTmF0aXZlLmpzJztcbmltcG9ydCBnZXRWYWx1ZSBmcm9tICcuL19nZXRWYWx1ZS5qcyc7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldE5hdGl2ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getNative.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getPrototype.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_getPrototype.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_overArg.js */ \"../../../node_modules/lodash-es/_overArg.js\");\n\n\n/** Built-in value references. */\nvar getPrototype = (0,_overArg_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object.getPrototypeOf, Object);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getPrototype);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0UHJvdG90eXBlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW9DOztBQUVwQztBQUNBLG1CQUFtQix1REFBTzs7QUFFMUIsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcz83MzFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvdmVyQXJnIGZyb20gJy4vX292ZXJBcmcuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0UHJvdG90eXBlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getPrototype.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getRawTag.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_getRawTag.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getRawTag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0UmF3VGFnLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDOztBQUVsQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLGtEQUFNLEdBQUcsOERBQWtCOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFJhd1RhZy5qcz82YjQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getRawTag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getSymbols.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_getSymbols.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayFilter.js */ \"../../../node_modules/lodash-es/_arrayFilter.js\");\n/* harmony import */ var _stubArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stubArray.js */ \"../../../node_modules/lodash-es/stubArray.js\");\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? _stubArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return (0,_arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSymbols);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0U3ltYm9scy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEM7QUFDTDs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EscUNBQXFDLHFEQUFTO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywyREFBVztBQUNwQjtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0U3ltYm9scy5qcz9iNmEzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheUZpbHRlciBmcm9tICcuL19hcnJheUZpbHRlci5qcyc7XG5pbXBvcnQgc3R1YkFycmF5IGZyb20gJy4vc3R1YkFycmF5LmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTeW1ib2xzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getSymbols.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getSymbolsIn.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_getSymbolsIn.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayPush_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayPush.js */ \"../../../node_modules/lodash-es/_arrayPush.js\");\n/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_getPrototype.js */ \"../../../node_modules/lodash-es/_getPrototype.js\");\n/* harmony import */ var _getSymbols_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_getSymbols.js */ \"../../../node_modules/lodash-es/_getSymbols.js\");\n/* harmony import */ var _stubArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./stubArray.js */ \"../../../node_modules/lodash-es/stubArray.js\");\n\n\n\n\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? _stubArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : function(object) {\n var result = [];\n while (object) {\n (0,_arrayPush_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result, (0,_getSymbols_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object));\n object = (0,_getPrototype_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object);\n }\n return result;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSymbolsIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0U3ltYm9sc0luLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXdDO0FBQ007QUFDSjtBQUNIOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBLHVDQUF1QyxxREFBUztBQUNoRDtBQUNBO0FBQ0EsSUFBSSx5REFBUyxTQUFTLDBEQUFVO0FBQ2hDLGFBQWEsNERBQVk7QUFDekI7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRTeW1ib2xzSW4uanM/ZDJjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlQdXNoIGZyb20gJy4vX2FycmF5UHVzaC5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgZ2V0U3ltYm9scyBmcm9tICcuL19nZXRTeW1ib2xzLmpzJztcbmltcG9ydCBzdHViQXJyYXkgZnJvbSAnLi9zdHViQXJyYXkuanMnO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTeW1ib2xzSW47XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getSymbolsIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getTag.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/_getTag.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _DataView_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_DataView.js */ \"../../../node_modules/lodash-es/_DataView.js\");\n/* harmony import */ var _Map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_Map.js */ \"../../../node_modules/lodash-es/_Map.js\");\n/* harmony import */ var _Promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_Promise.js */ \"../../../node_modules/lodash-es/_Promise.js\");\n/* harmony import */ var _Set_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_Set.js */ \"../../../node_modules/lodash-es/_Set.js\");\n/* harmony import */ var _WeakMap_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_WeakMap.js */ \"../../../node_modules/lodash-es/_WeakMap.js\");\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _toSource_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_toSource.js */ \"../../../node_modules/lodash-es/_toSource.js\");\n\n\n\n\n\n\n\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DataView_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n mapCtorString = (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Map_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n promiseCtorString = (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Promise_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n setCtorString = (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_Set_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n weakMapCtorString = (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_WeakMap_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = _baseGetTag_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((_DataView_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] && getTag(new _DataView_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](new ArrayBuffer(1))) != dataViewTag) ||\n (_Map_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"] && getTag(new _Map_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]) != mapTag) ||\n (_Promise_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"] && getTag(_Promise_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].resolve()) != promiseTag) ||\n (_Set_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"] && getTag(new _Set_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) != setTag) ||\n (_WeakMap_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"] && getTag(new _WeakMap_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) != weakMapTag)) {\n getTag = function(value) {\n var result = (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? (0,_toSource_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getTag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VGFnLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXNDO0FBQ1Y7QUFDUTtBQUNSO0FBQ1E7QUFDTTtBQUNKOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx5QkFBeUIsd0RBQVEsQ0FBQyxvREFBUTtBQUMxQyxvQkFBb0Isd0RBQVEsQ0FBQywrQ0FBRztBQUNoQyx3QkFBd0Isd0RBQVEsQ0FBQyxtREFBTztBQUN4QyxvQkFBb0Isd0RBQVEsQ0FBQywrQ0FBRztBQUNoQyx3QkFBd0Isd0RBQVEsQ0FBQyxtREFBTzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLHNEQUFVOztBQUV2QjtBQUNBLEtBQUssb0RBQVEsZUFBZSxvREFBUTtBQUNwQyxLQUFLLCtDQUFHLGVBQWUsK0NBQUc7QUFDMUIsS0FBSyxtREFBTyxXQUFXLDJEQUFlO0FBQ3RDLEtBQUssK0NBQUcsZUFBZSwrQ0FBRztBQUMxQixLQUFLLG1EQUFPLGVBQWUsbURBQU87QUFDbEM7QUFDQSxpQkFBaUIsMERBQVU7QUFDM0I7QUFDQSw0QkFBNEIsd0RBQVE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VGFnLmpzP2Q3NjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhdGFWaWV3IGZyb20gJy4vX0RhdGFWaWV3LmpzJztcbmltcG9ydCBNYXAgZnJvbSAnLi9fTWFwLmpzJztcbmltcG9ydCBQcm9taXNlIGZyb20gJy4vX1Byb21pc2UuanMnO1xuaW1wb3J0IFNldCBmcm9tICcuL19TZXQuanMnO1xuaW1wb3J0IFdlYWtNYXAgZnJvbSAnLi9fV2Vha01hcC5qcyc7XG5pbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCB0b1NvdXJjZSBmcm9tICcuL190b1NvdXJjZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG52YXIgZGF0YVZpZXdDdG9yU3RyaW5nID0gdG9Tb3VyY2UoRGF0YVZpZXcpLFxuICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgc2V0Q3RvclN0cmluZyA9IHRvU291cmNlKFNldCksXG4gICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBgdG9TdHJpbmdUYWdgIG9mIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xudmFyIGdldFRhZyA9IGJhc2VHZXRUYWc7XG5cbi8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbmlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAoTWFwICYmIGdldFRhZyhuZXcgTWFwKSAhPSBtYXBUYWcpIHx8XG4gICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAoV2Vha01hcCAmJiBnZXRUYWcobmV3IFdlYWtNYXApICE9IHdlYWtNYXBUYWcpKSB7XG4gIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLFxuICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgc3dpdGNoIChjdG9yU3RyaW5nKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgY2FzZSBwcm9taXNlQ3RvclN0cmluZzogcmV0dXJuIHByb21pc2VUYWc7XG4gICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFRhZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getTag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_getValue.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_getValue.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getValue);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0VmFsdWUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFZhbHVlLmpzP2VkMzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFZhbHVlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_getValue.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hasPath.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_hasPath.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_castPath.js */ \"../../../node_modules/lodash-es/_castPath.js\");\n/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isArguments.js */ \"../../../node_modules/lodash-es/isArguments.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isIndex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_isIndex.js */ \"../../../node_modules/lodash-es/_isIndex.js\");\n/* harmony import */ var _isLength_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLength.js */ \"../../../node_modules/lodash-es/isLength.js\");\n/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_toKey.js */ \"../../../node_modules/lodash-es/_toKey.js\");\n\n\n\n\n\n\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = (0,_castPath_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = (0,_toKey_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && (0,_isLength_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(length) && (0,_isIndex_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(key, length) &&\n ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object) || (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(object));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hasPath);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzUGF0aC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXNDO0FBQ0s7QUFDUjtBQUNDO0FBQ0M7QUFDTDs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLFNBQVMsd0RBQVE7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMscURBQUs7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFRLFlBQVksdURBQU87QUFDaEQsS0FBSyx1REFBTyxZQUFZLDJEQUFXO0FBQ25DOztBQUVBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19oYXNQYXRoLmpzP2FkZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNhc3RQYXRoIGZyb20gJy4vX2Nhc3RQYXRoLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc0xlbmd0aCBmcm9tICcuL2lzTGVuZ3RoLmpzJztcbmltcG9ydCB0b0tleSBmcm9tICcuL190b0tleS5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNQYXRoO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hasPath.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hasUnicode.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_hasUnicode.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hasUnicode);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzVW5pY29kZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzVW5pY29kZS5qcz9mNDFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9SYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNVbmljb2RlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hasUnicode.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hashClear.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_hashClear.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nativeCreate.js */ \"../../../node_modules/lodash-es/_nativeCreate.js\");\n\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? (0,_nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(null) : {};\n this.size = 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hashClear);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaENsZWFyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHdEQUFZLEdBQUcsNERBQVk7QUFDN0M7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaENsZWFyLmpzPzFkZjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5hdGl2ZUNyZWF0ZSBmcm9tICcuL19uYXRpdmVDcmVhdGUuanMnO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaENsZWFyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hashClear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hashDelete.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_hashDelete.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hashDelete);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaERlbGV0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19oYXNoRGVsZXRlLmpzPzE5ZDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaERlbGV0ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hashDelete.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hashGet.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_hashGet.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nativeCreate.js */ \"../../../node_modules/lodash-es/_nativeCreate.js\");\n\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (_nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hashGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaEdldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qzs7QUFFOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQSxNQUFNLHdEQUFZO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2hhc2hHZXQuanM/ODljNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmF0aXZlQ3JlYXRlIGZyb20gJy4vX25hdGl2ZUNyZWF0ZS5qcyc7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaEdldDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hashGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hashHas.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_hashHas.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nativeCreate.js */ \"../../../node_modules/lodash-es/_nativeCreate.js\");\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hashHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaEhhcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qzs7QUFFOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsU0FBUyx3REFBWTtBQUNyQjs7QUFFQSxpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaEhhcy5qcz8xMGRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBuYXRpdmVDcmVhdGUgZnJvbSAnLi9fbmF0aXZlQ3JlYXRlLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNoSGFzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hashHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_hashSet.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_hashSet.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nativeCreate.js */ \"../../../node_modules/lodash-es/_nativeCreate.js\");\n\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (_nativeCreate_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hashSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaFNldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qzs7QUFFOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSx3REFBWTtBQUMzQjtBQUNBOztBQUVBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19oYXNoU2V0LmpzPzU0OWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5hdGl2ZUNyZWF0ZSBmcm9tICcuL19uYXRpdmVDcmVhdGUuanMnO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaFNldDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_hashSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_initCloneArray.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_initCloneArray.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (initCloneArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lQXJyYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2luaXRDbG9uZUFycmF5LmpzP2RhZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gIGlmIChsZW5ndGggJiYgdHlwZW9mIGFycmF5WzBdID09ICdzdHJpbmcnICYmIGhhc093blByb3BlcnR5LmNhbGwoYXJyYXksICdpbmRleCcpKSB7XG4gICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW5pdENsb25lQXJyYXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_initCloneArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_initCloneByTag.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_initCloneByTag.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_cloneArrayBuffer.js */ \"../../../node_modules/lodash-es/_cloneArrayBuffer.js\");\n/* harmony import */ var _cloneDataView_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_cloneDataView.js */ \"../../../node_modules/lodash-es/_cloneDataView.js\");\n/* harmony import */ var _cloneRegExp_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_cloneRegExp.js */ \"../../../node_modules/lodash-es/_cloneRegExp.js\");\n/* harmony import */ var _cloneSymbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_cloneSymbol.js */ \"../../../node_modules/lodash-es/_cloneSymbol.js\");\n/* harmony import */ var _cloneTypedArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_cloneTypedArray.js */ \"../../../node_modules/lodash-es/_cloneTypedArray.js\");\n\n\n\n\n\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return (0,_cloneArrayBuffer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return (0,_cloneDataView_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return (0,_cloneTypedArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return (0,_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return (0,_cloneSymbol_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object);\n }\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (initCloneByTag);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lQnlUYWcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNEO0FBQ047QUFDSjtBQUNBO0FBQ1E7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGdFQUFnQjs7QUFFN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSw2REFBYTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrREFBZTs7QUFFNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhLDJEQUFXOztBQUV4QjtBQUNBOztBQUVBO0FBQ0EsYUFBYSwyREFBVztBQUN4QjtBQUNBOztBQUVBLGlFQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pbml0Q2xvbmVCeVRhZy5qcz85MmY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZUFycmF5QnVmZmVyIGZyb20gJy4vX2Nsb25lQXJyYXlCdWZmZXIuanMnO1xuaW1wb3J0IGNsb25lRGF0YVZpZXcgZnJvbSAnLi9fY2xvbmVEYXRhVmlldy5qcyc7XG5pbXBvcnQgY2xvbmVSZWdFeHAgZnJvbSAnLi9fY2xvbmVSZWdFeHAuanMnO1xuaW1wb3J0IGNsb25lU3ltYm9sIGZyb20gJy4vX2Nsb25lU3ltYm9sLmpzJztcbmltcG9ydCBjbG9uZVR5cGVkQXJyYXkgZnJvbSAnLi9fY2xvbmVUeXBlZEFycmF5LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFnIFRoZSBgdG9TdHJpbmdUYWdgIG9mIHRoZSBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgIGNhc2UgaW50OFRhZzogY2FzZSBpbnQxNlRhZzogY2FzZSBpbnQzMlRhZzpcbiAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIG1hcFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVJlZ0V4cChvYmplY3QpO1xuXG4gICAgY2FzZSBzZXRUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXRDbG9uZUJ5VGFnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_initCloneByTag.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_initCloneObject.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_initCloneObject.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseCreate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseCreate.js */ \"../../../node_modules/lodash-es/_baseCreate.js\");\n/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_getPrototype.js */ \"../../../node_modules/lodash-es/_getPrototype.js\");\n/* harmony import */ var _isPrototype_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isPrototype.js */ \"../../../node_modules/lodash-es/_isPrototype.js\");\n\n\n\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !(0,_isPrototype_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object))\n ? (0,_baseCreate_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((0,_getPrototype_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object))\n : {};\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (initCloneObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lT2JqZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEM7QUFDSTtBQUNGOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLHNEQUFzRCwyREFBVztBQUNqRSxNQUFNLDBEQUFVLENBQUMsNERBQVk7QUFDN0I7QUFDQTs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lT2JqZWN0LmpzPzk1OTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VDcmVhdGUgZnJvbSAnLi9fYmFzZUNyZWF0ZS5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXRDbG9uZU9iamVjdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_initCloneObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isFlattenable.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_isFlattenable.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Symbol.js */ \"../../../node_modules/lodash-es/_Symbol.js\");\n/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isArguments.js */ \"../../../node_modules/lodash-es/isArguments.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n/** Built-in value references. */\nvar spreadableSymbol = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return (0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) || (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isFlattenable);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNGbGF0dGVuYWJsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtDO0FBQ1M7QUFDUjs7QUFFbkM7QUFDQSx1QkFBdUIsa0RBQU0sR0FBRyxxRUFBeUI7O0FBRXpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxTQUFTLHVEQUFPLFdBQVcsMkRBQVc7QUFDdEM7QUFDQTs7QUFFQSxpRUFBZSxhQUFhLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNGbGF0dGVuYWJsZS5qcz83YzRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICEhKHNwcmVhZGFibGVTeW1ib2wgJiYgdmFsdWUgJiYgdmFsdWVbc3ByZWFkYWJsZVN5bWJvbF0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0ZsYXR0ZW5hYmxlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isFlattenable.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isIndex.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_isIndex.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isIndex);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0luZGV4LmpzPzBhNWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0luZGV4O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isIterateeCall.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_isIterateeCall.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n/* harmony import */ var _isIndex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isIndex.js */ \"../../../node_modules/lodash-es/_isIndex.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n\n\n\n\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? ((0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object) && (0,_isIndex_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return (0,_eq_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(object[index], value);\n }\n return false;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isIterateeCall);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJdGVyYXRlZUNhbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBeUI7QUFDa0I7QUFDUDtBQUNDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxPQUFPLHdEQUFRO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJEQUFXLFlBQVksdURBQU87QUFDekM7QUFDQTtBQUNBLFdBQVcsa0RBQUU7QUFDYjtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzSXRlcmF0ZWVDYWxsLmpzPzU5Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuaW1wb3J0IGlzSW5kZXggZnJvbSAnLi9faXNJbmRleC5qcyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJdGVyYXRlZUNhbGw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isIterateeCall.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isKey.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/_isKey.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isKey);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNLZXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW1DO0FBQ0U7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLE1BQU0sdURBQU87QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix3REFBUTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0tleS5qcz9lYzI1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNTeW1ib2wgZnJvbSAnLi9pc1N5bWJvbC5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNLZXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isKey.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isKeyable.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/_isKeyable.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isKeyable);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNLZXlhYmxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNLZXlhYmxlLmpzP2FlMzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICh0eXBlID09ICdzdHJpbmcnIHx8IHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJylcbiAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgOiAodmFsdWUgPT09IG51bGwpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0tleWFibGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isKeyable.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isMasked.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_isMasked.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _coreJsData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_coreJsData.js */ \"../../../node_modules/lodash-es/_coreJsData.js\");\n\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(_coreJsData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && _coreJsData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].keys && _coreJsData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isMasked);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNNYXNrZWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQVUsSUFBSSwyREFBZSxJQUFJLG9FQUF3QjtBQUNuRjtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc01hc2tlZC5qcz8zMjQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isMasked.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isPrototype.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_isPrototype.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isPrototype);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNQcm90b3R5cGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNQcm90b3R5cGUuanM/OGY1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvdG90eXBlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isPrototype.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_isStrictComparable.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/lodash-es/_isStrictComparable.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isStrictComparable);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNTdHJpY3RDb21wYXJhYmxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsd0RBQVE7QUFDckM7O0FBRUEsaUVBQWUsa0JBQWtCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNTdHJpY3RDb21wYXJhYmxlLmpzPzhkMTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_isStrictComparable.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_listCacheClear.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_listCacheClear.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (listCacheClear);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlQ2xlYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2xpc3RDYWNoZUNsZWFyLmpzPzUzMzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0Q2FjaGVDbGVhcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_listCacheClear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_listCacheDelete.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_listCacheDelete.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_assocIndexOf.js */ \"../../../node_modules/lodash-es/_assocIndexOf.js\");\n\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = (0,_assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (listCacheDelete);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlRGVsZXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFZOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxlQUFlLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlRGVsZXRlLmpzPzJmMWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc29jSW5kZXhPZiBmcm9tICcuL19hc3NvY0luZGV4T2YuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsYXN0SW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICBkYXRhLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgfVxuICAtLXRoaXMuc2l6ZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RDYWNoZURlbGV0ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_listCacheDelete.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_listCacheGet.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_listCacheGet.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_assocIndexOf.js */ \"../../../node_modules/lodash-es/_assocIndexOf.js\");\n\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = (0,_assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (listCacheGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlR2V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQVk7O0FBRTFCO0FBQ0E7O0FBRUEsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2xpc3RDYWNoZUdldC5qcz9kYTVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NvY0luZGV4T2YgZnJvbSAnLi9fYXNzb2NJbmRleE9mLmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGlzdENhY2hlR2V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_listCacheGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_listCacheHas.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_listCacheHas.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_assocIndexOf.js */ \"../../../node_modules/lodash-es/_assocIndexOf.js\");\n\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return (0,_assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this.__data__, key) > -1;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (listCacheHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlSGFzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxTQUFTLDREQUFZO0FBQ3JCOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19saXN0Q2FjaGVIYXMuanM/ZTAxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzb2NJbmRleE9mIGZyb20gJy4vX2Fzc29jSW5kZXhPZi5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0Q2FjaGVIYXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_listCacheHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_listCacheSet.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_listCacheSet.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_assocIndexOf.js */ \"../../../node_modules/lodash-es/_assocIndexOf.js\");\n\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = (0,_assocIndexOf_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (listCacheSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlU2V0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQThDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQVk7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlU2V0LmpzP2I5MDYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc29jSW5kZXhPZiBmcm9tICcuL19hc3NvY0luZGV4T2YuanMnO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpc3QgY2FjaGUgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgICsrdGhpcy5zaXplO1xuICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICB9IGVsc2Uge1xuICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RDYWNoZVNldDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_listCacheSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapCacheClear.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapCacheClear.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _Hash_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_Hash.js */ \"../../../node_modules/lodash-es/_Hash.js\");\n/* harmony import */ var _ListCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_ListCache.js */ \"../../../node_modules/lodash-es/_ListCache.js\");\n/* harmony import */ var _Map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_Map.js */ \"../../../node_modules/lodash-es/_Map.js\");\n\n\n\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new _Hash_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n 'map': new (_Map_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || _ListCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n 'string': new _Hash_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapCacheClear);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwQ2FjaGVDbGVhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQThCO0FBQ1U7QUFDWjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQUk7QUFDcEIsZ0JBQWdCLCtDQUFHLElBQUkscURBQVM7QUFDaEMsa0JBQWtCLGdEQUFJO0FBQ3RCO0FBQ0E7O0FBRUEsaUVBQWUsYUFBYSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlQ2xlYXIuanM/ZGZiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSGFzaCBmcm9tICcuL19IYXNoLmpzJztcbmltcG9ydCBMaXN0Q2FjaGUgZnJvbSAnLi9fTGlzdENhY2hlLmpzJztcbmltcG9ydCBNYXAgZnJvbSAnLi9fTWFwLmpzJztcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgdGhpcy5zaXplID0gMDtcbiAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICdtYXAnOiBuZXcgKE1hcCB8fCBMaXN0Q2FjaGUpLFxuICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXBDYWNoZUNsZWFyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapCacheClear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapCacheDelete.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapCacheDelete.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getMapData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getMapData.js */ \"../../../node_modules/lodash-es/_getMapData.js\");\n\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = (0,_getMapData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapCacheDelete);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwQ2FjaGVEZWxldGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGVBQWUsMERBQVU7QUFDekI7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19tYXBDYWNoZURlbGV0ZS5qcz9lYzU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRNYXBEYXRhIGZyb20gJy4vX2dldE1hcERhdGEuanMnO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwQ2FjaGVEZWxldGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapCacheDelete.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapCacheGet.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapCacheGet.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getMapData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getMapData.js */ \"../../../node_modules/lodash-es/_getMapData.js\");\n\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return (0,_getMapData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, key).get(key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapCacheGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwQ2FjaGVHZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBLFNBQVMsMERBQVU7QUFDbkI7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlR2V0LmpzPzZiNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldE1hcERhdGEgZnJvbSAnLi9fZ2V0TWFwRGF0YS5qcyc7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwQ2FjaGVHZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapCacheGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapCacheHas.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapCacheHas.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getMapData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getMapData.js */ \"../../../node_modules/lodash-es/_getMapData.js\");\n\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return (0,_getMapData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, key).has(key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapCacheHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwQ2FjaGVIYXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLFNBQVMsMERBQVU7QUFDbkI7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlSGFzLmpzPzI1ZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldE1hcERhdGEgZnJvbSAnLi9fZ2V0TWFwRGF0YS5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1hcENhY2hlSGFzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapCacheHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapCacheSet.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapCacheSet.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getMapData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getMapData.js */ \"../../../node_modules/lodash-es/_getMapData.js\");\n\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = (0,_getMapData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapCacheSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwQ2FjaGVTZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLGFBQWEsMERBQVU7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlU2V0LmpzP2Q3ZjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldE1hcERhdGEgZnJvbSAnLi9fZ2V0TWFwRGF0YS5qcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwQ2FjaGVTZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapCacheSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_mapToArray.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_mapToArray.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapToArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwVG9BcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWFwVG9BcnJheS5qcz9iZTQ0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYG1hcGAgdG8gaXRzIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAqL1xuZnVuY3Rpb24gbWFwVG9BcnJheShtYXApIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgbWFwLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1hcFRvQXJyYXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_mapToArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_matchesStrictComparable.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/lodash-es/_matchesStrictComparable.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (matchesStrictComparable);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxHQUFHO0FBQ2QsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzPzViMzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYG1hdGNoZXNQcm9wZXJ0eWAgZm9yIHNvdXJjZSB2YWx1ZXMgc3VpdGFibGVcbiAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_matchesStrictComparable.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_memoizeCapped.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_memoizeCapped.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _memoize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./memoize.js */ \"../../../node_modules/lodash-es/memoize.js\");\n\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = (0,_memoize_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (memoizeCapped);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbWVtb2l6ZUNhcHBlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFtQzs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsZUFBZSx1REFBTztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19tZW1vaXplQ2FwcGVkLmpzPzY5ODAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW9pemUgZnJvbSAnLi9tZW1vaXplLmpzJztcblxuLyoqIFVzZWQgYXMgdGhlIG1heGltdW0gbWVtb2l6ZSBjYWNoZSBzaXplLiAqL1xudmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICB2YXIgcmVzdWx0ID0gbWVtb2l6ZShmdW5jLCBmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIGtleTtcbiAgfSk7XG5cbiAgdmFyIGNhY2hlID0gcmVzdWx0LmNhY2hlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vaXplQ2FwcGVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_memoizeCapped.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_nativeCreate.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_nativeCreate.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _getNative_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_getNative.js */ \"../../../node_modules/lodash-es/_getNative.js\");\n\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = (0,_getNative_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object, 'create');\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (nativeCreate);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlQ3JlYXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXdDOztBQUV4QztBQUNBLG1CQUFtQix5REFBUzs7QUFFNUIsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUNyZWF0ZS5qcz9hNWQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROYXRpdmUgZnJvbSAnLi9fZ2V0TmF0aXZlLmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuZXhwb3J0IGRlZmF1bHQgbmF0aXZlQ3JlYXRlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_nativeCreate.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_nativeKeys.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_nativeKeys.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_overArg.js */ \"../../../node_modules/lodash-es/_overArg.js\");\n\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = (0,_overArg_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(Object.keys, Object);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (nativeKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFvQzs7QUFFcEM7QUFDQSxpQkFBaUIsdURBQU87O0FBRXhCLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzLmpzPzY5MDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG92ZXJBcmcgZnJvbSAnLi9fb3ZlckFyZy5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxuZXhwb3J0IGRlZmF1bHQgbmF0aXZlS2V5cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_nativeKeys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_nativeKeysIn.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_nativeKeysIn.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (nativeKeysIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbmF0aXZlS2V5c0luLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzSW4uanM/Zjk1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbmF0aXZlS2V5c0luO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_nativeKeysIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_nodeUtil.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_nodeUtil.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_freeGlobal.js */ \"../../../node_modules/lodash-es/_freeGlobal.js\");\n\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (nodeUtil);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbm9kZVV0aWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEM7O0FBRTFDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUNBQW1DLDhEQUFrQjs7QUFFckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixDQUFDOztBQUVELGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19ub2RlVXRpbC5qcz9kZTNlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcmVlR2xvYmFsIGZyb20gJy4vX2ZyZWVHbG9iYWwuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBub2RlVXRpbDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_nodeUtil.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_objectToString.js": +/*!**********************************************************!*\ + !*** ../../../node_modules/lodash-es/_objectToString.js ***! + \**********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (objectToString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vYmplY3RUb1N0cmluZy5qcz9hZGQxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBvYmplY3RUb1N0cmluZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_objectToString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_overArg.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_overArg.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (overArg);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlckFyZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX292ZXJBcmcuanM/MDQ5NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb3ZlckFyZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_overArg.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_overRest.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_overRest.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _apply_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_apply.js */ \"../../../node_modules/lodash-es/_apply.js\");\n\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return (0,_apply_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(func, this, otherArgs);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (overRest);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlclJlc3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZ0M7O0FBRWhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFEQUFLO0FBQ2hCO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX292ZXJSZXN0LmpzPzhhYjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFwcGx5IGZyb20gJy4vX2FwcGx5LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb3ZlclJlc3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_overRest.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_root.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/_root.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_freeGlobal.js */ \"../../../node_modules/lodash-es/_freeGlobal.js\");\n\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] || freeSelf || Function('return this')();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (root);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcm9vdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUEwQzs7QUFFMUM7QUFDQTs7QUFFQTtBQUNBLFdBQVcsc0RBQVU7O0FBRXJCLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzP2RjNDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuZXhwb3J0IGRlZmF1bHQgcm9vdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_root.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_safeGet.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/_safeGet.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (safeGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2FmZUdldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zYWZlR2V0LmpzPzQ5ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gb2JqZWN0W2tleV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNhZmVHZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_safeGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_setCacheAdd.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_setCacheAdd.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setCacheAdd);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0Q2FjaGVBZGQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0Q2FjaGVBZGQuanM/ODdmOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKlxuICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgYWRkXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBhbGlhcyBwdXNoXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0Q2FjaGVBZGQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_setCacheAdd.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_setCacheHas.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_setCacheHas.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setCacheHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0Q2FjaGVIYXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0Q2FjaGVIYXMuanM/MGYxNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldENhY2hlSGFzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_setCacheHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_setToArray.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_setToArray.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setToArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0VG9BcnJheS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0VG9BcnJheS5qcz82ZDE2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNldFRvQXJyYXk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_setToArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_setToString.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_setToString.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseSetToString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseSetToString.js */ \"../../../node_modules/lodash-es/_baseSetToString.js\");\n/* harmony import */ var _shortOut_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_shortOut.js */ \"../../../node_modules/lodash-es/_shortOut.js\");\n\n\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = (0,_shortOut_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_baseSetToString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setToString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2V0VG9TdHJpbmcuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9EO0FBQ2Q7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQSxrQkFBa0Isd0RBQVEsQ0FBQywyREFBZTs7QUFFMUMsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzPzZmYzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VTZXRUb1N0cmluZyBmcm9tICcuL19iYXNlU2V0VG9TdHJpbmcuanMnO1xuaW1wb3J0IHNob3J0T3V0IGZyb20gJy4vX3Nob3J0T3V0LmpzJztcblxuLyoqXG4gKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0VG9TdHJpbmc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_setToString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_shortOut.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_shortOut.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (shortOut);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2hvcnRPdXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc2hvcnRPdXQuanM/ZDhkYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNob3J0T3V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_shortOut.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stackClear.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_stackClear.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ListCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ListCache.js */ \"../../../node_modules/lodash-es/_ListCache.js\");\n\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new _ListCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n this.size = 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stackClear);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tDbGVhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3Qzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxREFBUztBQUMvQjtBQUNBOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja0NsZWFyLmpzP2U0NzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpc3RDYWNoZSBmcm9tICcuL19MaXN0Q2FjaGUuanMnO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdGFja0NsZWFyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stackClear.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stackDelete.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_stackDelete.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stackDelete);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tEZWxldGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja0RlbGV0ZS5qcz84ZDkyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RhY2tEZWxldGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stackDelete.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stackGet.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_stackGet.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stackGet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tHZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3N0YWNrR2V0LmpzP2Q5OWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdGFja0dldDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stackGet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stackHas.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_stackHas.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stackHas);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tIYXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3N0YWNrSGFzLmpzP2Y5NjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RhY2tIYXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stackHas.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stackSet.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_stackSet.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ListCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ListCache.js */ \"../../../node_modules/lodash-es/_ListCache.js\");\n/* harmony import */ var _Map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_Map.js */ \"../../../node_modules/lodash-es/_Map.js\");\n/* harmony import */ var _MapCache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_MapCache.js */ \"../../../node_modules/lodash-es/_MapCache.js\");\n\n\n\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof _ListCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n var pairs = data.__data__;\n if (!_Map_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new _MapCache_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stackSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tTZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3QztBQUNaO0FBQ1U7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IscURBQVM7QUFDL0I7QUFDQSxTQUFTLCtDQUFHO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0RBQVE7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tTZXQuanM/NTIxOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdENhY2hlIGZyb20gJy4vX0xpc3RDYWNoZS5qcyc7XG5pbXBvcnQgTWFwIGZyb20gJy4vX01hcC5qcyc7XG5pbXBvcnQgTWFwQ2FjaGUgZnJvbSAnLi9fTWFwQ2FjaGUuanMnO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RhY2tTZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stackSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_strictIndexOf.js": +/*!*********************************************************!*\ + !*** ../../../node_modules/lodash-es/_strictIndexOf.js ***! + \*********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (strictIndexOf);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RyaWN0SW5kZXhPZi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEdBQUc7QUFDZCxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdHJpY3RJbmRleE9mLmpzP2IxOTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHJpY3RJbmRleE9mO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_strictIndexOf.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stringSize.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/_stringSize.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _asciiSize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_asciiSize.js */ \"../../../node_modules/lodash-es/_asciiSize.js\");\n/* harmony import */ var _hasUnicode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_hasUnicode.js */ \"../../../node_modules/lodash-es/_hasUnicode.js\");\n/* harmony import */ var _unicodeSize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_unicodeSize.js */ \"../../../node_modules/lodash-es/_unicodeSize.js\");\n\n\n\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return (0,_hasUnicode_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(string)\n ? (0,_unicodeSize_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(string)\n : (0,_asciiSize_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(string);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringSize);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RyaW5nU2l6ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXdDO0FBQ0U7QUFDRTs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTLDBEQUFVO0FBQ25CLE1BQU0sMkRBQVc7QUFDakIsTUFBTSx5REFBUztBQUNmOztBQUVBLGlFQUFlLFVBQVUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdHJpbmdTaXplLmpzP2ZiMWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzY2lpU2l6ZSBmcm9tICcuL19hc2NpaVNpemUuanMnO1xuaW1wb3J0IGhhc1VuaWNvZGUgZnJvbSAnLi9faGFzVW5pY29kZS5qcyc7XG5pbXBvcnQgdW5pY29kZVNpemUgZnJvbSAnLi9fdW5pY29kZVNpemUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG51bWJlciBvZiBzeW1ib2xzIGluIGBzdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICovXG5mdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZykge1xuICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgOiBhc2NpaVNpemUoc3RyaW5nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RyaW5nU2l6ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stringSize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_stringToPath.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/_stringToPath.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _memoizeCapped_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_memoizeCapped.js */ \"../../../node_modules/lodash-es/_memoizeCapped.js\");\n\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = (0,_memoizeCapped_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stringToPath);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RyaW5nVG9QYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWdEOztBQUVoRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsbUJBQW1CLDZEQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQsaUVBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3N0cmluZ1RvUGF0aC5qcz80N2U5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vaXplQ2FwcGVkIGZyb20gJy4vX21lbW9pemVDYXBwZWQuanMnO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ1RvUGF0aDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_stringToPath.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_toKey.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/_toKey.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toKey);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdG9LZXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLGVBQWU7QUFDNUI7QUFDQTtBQUNBLGtDQUFrQyx3REFBUTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL190b0tleS5qcz9lYmRkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvS2V5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_toKey.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_toSource.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/_toSource.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toSource);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdG9Tb3VyY2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdG9Tb3VyY2UuanM/YjE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvU291cmNlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_toSource.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_trimmedEndIndex.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/lodash-es/_trimmedEndIndex.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (trimmedEndIndex);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdHJpbW1lZEVuZEluZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsZUFBZSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3RyaW1tZWRFbmRJbmRleC5qcz81MTU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJpbW1lZEVuZEluZGV4O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_trimmedEndIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/_unicodeSize.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/_unicodeSize.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (unicodeSize);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdW5pY29kZVNpemUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxFQUFFO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3VuaWNvZGVTaXplLmpzPzZiNTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc0NvbWJvID0gJ1snICsgcnNDb21ib1JhbmdlICsgJ10nLFxuICAgIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nLFxuICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICByc1JlZ2lvbmFsID0gJyg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn0nLFxuICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbnZhciByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICByc09wdEpvaW4gPSAnKD86JyArIHJzWldKICsgJyg/OicgKyBbcnNOb25Bc3RyYWwsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzT3B0VmFyICsgcmVPcHRNb2QgKyAnKSonLFxuICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICByc1N5bWJvbCA9ICcoPzonICsgW3JzTm9uQXN0cmFsICsgcnNDb21ibyArICc/JywgcnNDb21ibywgcnNSZWdpb25hbCwgcnNTdXJyUGFpciwgcnNBc3RyYWxdLmpvaW4oJ3wnKSArICcpJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbnZhciByZVVuaWNvZGUgPSBSZWdFeHAocnNGaXR6ICsgJyg/PScgKyByc0ZpdHogKyAnKXwnICsgcnNTeW1ib2wgKyByc1NlcSwgJ2cnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSByZVVuaWNvZGUubGFzdEluZGV4ID0gMDtcbiAgd2hpbGUgKHJlVW5pY29kZS50ZXN0KHN0cmluZykpIHtcbiAgICArK3Jlc3VsdDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCB1bmljb2RlU2l6ZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/_unicodeSize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/clone.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/clone.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseClone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseClone.js */ \"../../../node_modules/lodash-es/_baseClone.js\");\n\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return (0,_baseClone_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, CLONE_SYMBOLS_FLAG);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (clone);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jbG9uZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF3Qzs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFFBQVEsSUFBSSxRQUFRO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMseURBQVM7QUFDbEI7O0FBRUEsaUVBQWUsS0FBSyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvY2xvbmUuanM/NjE5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUNsb25lIGZyb20gJy4vX2Jhc2VDbG9uZS5qcyc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAqIGFuZCBzdXBwb3J0cyBjbG9uaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsIGRhdGUgb2JqZWN0cywgbWFwcyxcbiAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAqIGFzIHBsYWluIG9iamVjdHMuIEFuIGVtcHR5IG9iamVjdCBpcyByZXR1cm5lZCBmb3IgdW5jbG9uZWFibGUgdmFsdWVzIHN1Y2hcbiAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZURlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbeyAnYSc6IDEgfSwgeyAnYic6IDIgfV07XG4gKlxuICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coc2hhbGxvd1swXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNsb25lKHZhbHVlKSB7XG4gIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/clone.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/cloneDeep.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/cloneDeep.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseClone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseClone.js */ \"../../../node_modules/lodash-es/_baseClone.js\");\n\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return (0,_baseClone_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloneDeep);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jbG9uZURlZXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUSxJQUFJLFFBQVE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyx5REFBUztBQUNsQjs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jbG9uZURlZXAuanM/YTBhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUNsb25lIGZyb20gJy4vX2Jhc2VDbG9uZS5qcyc7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAqIEBzZWUgXy5jbG9uZVxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgZGVlcCA9IF8uY2xvbmVEZWVwKG9iamVjdHMpO1xuICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xvbmVEZWVwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/cloneDeep.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/constant.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/constant.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (constant);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jb25zdGFudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pEO0FBQ0E7QUFDQSxZQUFZLFFBQVEsSUFBSSxRQUFRO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9jb25zdGFudC5qcz9kOWE2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25zdGFudDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/constant.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/defaults.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/defaults.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseRest.js */ \"../../../node_modules/lodash-es/_baseRest.js\");\n/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eq.js */ \"../../../node_modules/lodash-es/eq.js\");\n/* harmony import */ var _isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isIterateeCall.js */ \"../../../node_modules/lodash-es/_isIterateeCall.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = (0,_baseRest_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = (0,_keysIn_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n ((0,_eq_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (defaults);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9kZWZhdWx0cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFzQztBQUNiO0FBQ3lCO0FBQ2pCOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsV0FBVztBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFFBQVEsSUFBSSxRQUFRLElBQUksUUFBUTtBQUNoRCxXQUFXO0FBQ1g7QUFDQSxlQUFlLHdEQUFRO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLDhEQUFjO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixzREFBTTtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsa0RBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZGVmYXVsdHMuanM/Yjk2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuaW1wb3J0IGlzSXRlcmF0ZWVDYWxsIGZyb20gJy4vX2lzSXRlcmF0ZWVDYWxsLmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAqIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXMgdGhhdFxuICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgbGVuZ3RoID0gMTtcbiAgfVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgIHZhciBwcm9wc0luZGV4ID0gLTE7XG4gICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbcHJvcHNJbmRleF07XG4gICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAoZXEodmFsdWUsIG9iamVjdFByb3RvW2tleV0pICYmICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmF1bHRzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/defaults.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/eq.js": +/*!*********************************************!*\ + !*** ../../../node_modules/lodash-es/eq.js ***! + \*********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (eq);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9lcS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLEVBQUUsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2VxLmpzPzI5OWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVxO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/eq.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/filter.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/filter.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayFilter.js */ \"../../../node_modules/lodash-es/_arrayFilter.js\");\n/* harmony import */ var _baseFilter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseFilter.js */ \"../../../node_modules/lodash-es/_baseFilter.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? _arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _baseFilter_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n return func(collection, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(predicate, 3));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (filter);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9maWx0ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBNEM7QUFDRjtBQUNJO0FBQ1g7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sNkNBQTZDO0FBQ3BELE9BQU87QUFDUDtBQUNBO0FBQ0EsaUNBQWlDLG1CQUFtQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkJBQTJCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsV0FBVztBQUM1QztBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFPLGVBQWUsdURBQVcsR0FBRyxzREFBVTtBQUMzRCwwQkFBMEIsNERBQVk7QUFDdEM7O0FBRUEsaUVBQWUsTUFBTSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZmlsdGVyLmpzPzAwMmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5RmlsdGVyIGZyb20gJy4vX2FycmF5RmlsdGVyLmpzJztcbmltcG9ydCBiYXNlRmlsdGVyIGZyb20gJy4vX2Jhc2VGaWx0ZXIuanMnO1xuaW1wb3J0IGJhc2VJdGVyYXRlZSBmcm9tICcuL19iYXNlSXRlcmF0ZWUuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmaWx0ZXI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/filter.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/find.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/find.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _createFind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createFind.js */ \"../../../node_modules/lodash-es/_createFind.js\");\n/* harmony import */ var _findIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./findIndex.js */ \"../../../node_modules/lodash-es/findIndex.js\");\n\n\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = (0,_createFind_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_findIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (find);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9maW5kLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQztBQUNIOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0EsT0FBTyw4Q0FBOEM7QUFDckQsT0FBTywrQ0FBK0M7QUFDdEQsT0FBTztBQUNQO0FBQ0E7QUFDQSwrQkFBK0Isb0JBQW9CO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwQkFBMEI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDBEQUFVLENBQUMscURBQVM7O0FBRS9CLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2ZpbmQuanM/YTQ0NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlRmluZCBmcm9tICcuL19jcmVhdGVGaW5kLmpzJztcbmltcG9ydCBmaW5kSW5kZXggZnJvbSAnLi9maW5kSW5kZXguanMnO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAqIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hdGNoZWQgZWxlbWVudCwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICogXTtcbiAqXG4gKiBfLmZpbmQodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAncGViYmxlcydcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2ZyZWQnXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmQodXNlcnMsICdhY3RpdmUnKTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAqL1xudmFyIGZpbmQgPSBjcmVhdGVGaW5kKGZpbmRJbmRleCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZpbmQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/find.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/findIndex.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/findIndex.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFindIndex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseFindIndex.js */ \"../../../node_modules/lodash-es/_baseFindIndex.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _toInteger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toInteger.js */ \"../../../node_modules/lodash-es/toInteger.js\");\n\n\n\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : (0,_toInteger_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return (0,_baseFindIndex_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(array, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(predicate, 3), index);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (findIndex);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9maW5kSW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRDtBQUNGO0FBQ1A7O0FBRXZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxPQUFPLG9DQUFvQztBQUMzQyxPQUFPLG9DQUFvQztBQUMzQyxPQUFPO0FBQ1A7QUFDQTtBQUNBLG9DQUFvQyw0QkFBNEI7QUFDaEU7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlDQUFpQztBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MseURBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsU0FBUyw2REFBYSxRQUFRLDREQUFZO0FBQzFDOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2ZpbmRJbmRleC5qcz9iYjgxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRmluZEluZGV4IGZyb20gJy4vX2Jhc2VGaW5kSW5kZXguanMnO1xuaW1wb3J0IGJhc2VJdGVyYXRlZSBmcm9tICcuL19iYXNlSXRlcmF0ZWUuanMnO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuL3RvSW50ZWdlci5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFxuICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ2Jhcm5leSc7IH0pO1xuICogLy8gPT4gMFxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICogLy8gPT4gMVxuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbmRJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gMlxuICovXG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gIH1cbiAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZpbmRJbmRleDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/findIndex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/flatten.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/flatten.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFlatten_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseFlatten.js */ \"../../../node_modules/lodash-es/_baseFlatten.js\");\n\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? (0,_baseFlatten_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, 1) : [];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (flatten);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9mbGF0dGVuLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMkRBQVc7QUFDN0I7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZmxhdHRlbi5qcz8yZjFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRmxhdHRlbiBmcm9tICcuL19iYXNlRmxhdHRlbi5qcyc7XG5cbi8qKlxuICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZmxhdHRlbihbMSwgWzIsIFszLCBbNF1dLCA1XV0pO1xuICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICovXG5mdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmbGF0dGVuO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/flatten.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/forEach.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/forEach.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayEach_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayEach.js */ \"../../../node_modules/lodash-es/_arrayEach.js\");\n/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseEach.js */ \"../../../node_modules/lodash-es/_baseEach.js\");\n/* harmony import */ var _castFunction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_castFunction.js */ \"../../../node_modules/lodash-es/_castFunction.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? _arrayEach_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _baseEach_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n return func(collection, (0,_castFunction_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratee));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (forEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9mb3JFYWNoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXdDO0FBQ0Y7QUFDUTtBQUNYOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsVUFBVTtBQUNyQixhQUFhLGNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsZUFBZSxnQkFBZ0I7QUFDL0I7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1REFBTyxlQUFlLHFEQUFTLEdBQUcsb0RBQVE7QUFDdkQsMEJBQTBCLDREQUFZO0FBQ3RDOztBQUVBLGlFQUFlLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2ZvckVhY2guanM/ZmM3OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlFYWNoIGZyb20gJy4vX2FycmF5RWFjaC5qcyc7XG5pbXBvcnQgYmFzZUVhY2ggZnJvbSAnLi9fYmFzZUVhY2guanMnO1xuaW1wb3J0IGNhc3RGdW5jdGlvbiBmcm9tICcuL19jYXN0RnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gKiBwcm9wZXJ0eSBhcmUgaXRlcmF0ZWQgbGlrZSBhcnJheXMuIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3IgdXNlIGBfLmZvckluYFxuICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAYWxpYXMgZWFjaFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gKlxuICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvckVhY2g7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/forEach.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/forIn.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/forIn.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseFor.js */ \"../../../node_modules/lodash-es/_baseFor.js\");\n/* harmony import */ var _castFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_castFunction.js */ \"../../../node_modules/lodash-es/_castFunction.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : (0,_baseFor_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, (0,_castFunction_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iteratee), _keysIn_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (forIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9mb3JJbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW9DO0FBQ1U7QUFDYjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdURBQU8sU0FBUyw0REFBWSxZQUFZLGtEQUFNO0FBQ3BEOztBQUVBLGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2ZvckluLmpzP2JkNmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VGb3IgZnJvbSAnLi9fYmFzZUZvci5qcyc7XG5pbXBvcnQgY2FzdEZ1bmN0aW9uIGZyb20gJy4vX2Nhc3RGdW5jdGlvbi5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAqIG9iamVjdCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4zLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZm9ySW5SaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmZvckluKG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScsICdiJywgdGhlbiAnYycgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsXG4gICAgPyBvYmplY3RcbiAgICA6IGJhc2VGb3Iob2JqZWN0LCBjYXN0RnVuY3Rpb24oaXRlcmF0ZWUpLCBrZXlzSW4pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JJbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/forIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/forOwn.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/forOwn.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseForOwn_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseForOwn.js */ \"../../../node_modules/lodash-es/_baseForOwn.js\");\n/* harmony import */ var _castFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_castFunction.js */ \"../../../node_modules/lodash-es/_castFunction.js\");\n\n\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && (0,_baseForOwn_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, (0,_castFunction_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iteratee));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (forOwn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9mb3JPd24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ0k7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwREFBVSxTQUFTLDREQUFZO0FBQ2xEOztBQUVBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2Zvck93bi5qcz9iMWRmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRm9yT3duIGZyb20gJy4vX2Jhc2VGb3JPd24uanMnO1xuaW1wb3J0IGNhc3RGdW5jdGlvbiBmcm9tICcuL19jYXN0RnVuY3Rpb24uanMnO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0IGFuZFxuICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gKiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4zLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uZm9yT3duUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgY2FzdEZ1bmN0aW9uKGl0ZXJhdGVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvck93bjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/forOwn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/get.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/get.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGet_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseGet.js */ \"../../../node_modules/lodash-es/_baseGet.js\");\n\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : (0,_baseGet_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (get);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9nZXQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsR0FBRztBQUNkLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0Esa0JBQWtCLFFBQVEsT0FBTyxVQUFVO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsdURBQU87QUFDbkQ7QUFDQTs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9nZXQuanM/OWU4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUdldCBmcm9tICcuL19iYXNlR2V0LmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/get.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/has.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/has.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseHas_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseHas.js */ \"../../../node_modules/lodash-es/_baseHas.js\");\n/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_hasPath.js */ \"../../../node_modules/lodash-es/_hasPath.js\");\n\n\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && (0,_hasPath_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, path, _baseHas_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (has);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9oYXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9DO0FBQ0E7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsY0FBYztBQUN6QixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLGtCQUFrQixPQUFPO0FBQ3pCLDBCQUEwQixnQkFBZ0IsUUFBUSxHQUFHO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdURBQU8sZUFBZSxtREFBTztBQUN4RDs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9oYXMuanM/YzcyZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUhhcyBmcm9tICcuL19iYXNlSGFzLmpzJztcbmltcG9ydCBoYXNQYXRoIGZyb20gJy4vX2hhc1BhdGguanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3QgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAqIHZhciBvdGhlciA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/has.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/hasIn.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/hasIn.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseHasIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseHasIn.js */ \"../../../node_modules/lodash-es/_baseHasIn.js\");\n/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_hasPath.js */ \"../../../node_modules/lodash-es/_hasPath.js\");\n\n\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && (0,_hasPath_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, path, _baseHasIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hasIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9oYXNJbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDSjs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsMkJBQTJCLGdCQUFnQixRQUFRLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1REFBTyxlQUFlLHFEQUFTO0FBQzFEOztBQUVBLGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2hhc0luLmpzPzYzNzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VIYXNJbiBmcm9tICcuL19iYXNlSGFzSW4uanMnO1xuaW1wb3J0IGhhc1BhdGggZnJvbSAnLi9faGFzUGF0aC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYS5iJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCAnYicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzSW4ob2JqZWN0LCBwYXRoKSB7XG4gIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzSW47XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/hasIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/identity.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/identity.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (identity);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pZGVudGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pZGVudGl0eS5qcz8zZWE3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlkZW50aXR5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/identity.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isArguments.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/isArguments.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsArguments_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseIsArguments.js */ \"../../../node_modules/lodash-es/_baseIsArguments.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = (0,_baseIsArguments_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function() { return arguments; }()) ? _baseIsArguments_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] : function(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isArguments);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Q7QUFDUDs7QUFFN0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG1CQUFtQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtEQUFlLGNBQWMsbUJBQW1CLE1BQU0sMkRBQWU7QUFDdkYsU0FBUyw0REFBWTtBQUNyQjtBQUNBOztBQUVBLGlFQUFlLFdBQVcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJndW1lbnRzLmpzPzhhZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VJc0FyZ3VtZW50cyBmcm9tICcuL19iYXNlSXNBcmd1bWVudHMuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpc0FyZ3VtZW50cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isArguments.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isArray.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/isArray.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheS5qcz82ZjIzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5leHBvcnQgZGVmYXVsdCBpc0FycmF5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isArrayLike.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/isArrayLike.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isFunction.js */ \"../../../node_modules/lodash-es/isFunction.js\");\n/* harmony import */ var _isLength_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isLength.js */ \"../../../node_modules/lodash-es/isLength.js\");\n\n\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && (0,_isLength_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value.length) && !(0,_isFunction_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isArrayLike);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5TGlrZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUM7QUFDSjs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix3REFBUSxtQkFBbUIsMERBQVU7QUFDL0Q7O0FBRUEsaUVBQWUsV0FBVyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheUxpa2UuanM/YTZkYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNGdW5jdGlvbiBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuaW1wb3J0IGlzTGVuZ3RoIGZyb20gJy4vaXNMZW5ndGguanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheUxpa2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isArrayLike.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isArrayLikeObject.js": +/*!************************************************************!*\ + !*** ../../../node_modules/lodash-es/isArrayLikeObject.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isArrayLikeObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5TGlrZU9iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMkM7QUFDRTs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsNERBQVksV0FBVywyREFBVztBQUMzQzs7QUFFQSxpRUFBZSxpQkFBaUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlT2JqZWN0LmpzP2M1OGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheUxpa2VPYmplY3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isArrayLikeObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isBuffer.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/isBuffer.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n/* harmony import */ var _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stubFalse.js */ \"../../../node_modules/lodash-es/stubFalse.js\");\n\n\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isBuffer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0J1ZmZlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEI7QUFDUzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsdURBQVc7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxxREFBUzs7QUFFMUMsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNCdWZmZXIuanM/MDViYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcbmltcG9ydCBzdHViRmFsc2UgZnJvbSAnLi9zdHViRmFsc2UuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbmV4cG9ydCBkZWZhdWx0IGlzQnVmZmVyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isBuffer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isEmpty.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/isEmpty.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseKeys_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_baseKeys.js */ \"../../../node_modules/lodash-es/_baseKeys.js\");\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isArguments.js */ \"../../../node_modules/lodash-es/isArguments.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isPrototype_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_isPrototype.js */ \"../../../node_modules/lodash-es/_isPrototype.js\");\n/* harmony import */ var _isTypedArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isTypedArray.js */ \"../../../node_modules/lodash-es/isTypedArray.js\");\n\n\n\n\n\n\n\n\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if ((0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) &&\n ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n (0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) || (0,_isTypedArray_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value) || (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(value))) {\n return !value.length;\n }\n var tag = (0,_getTag_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if ((0,_isPrototype_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(value)) {\n return !(0,_baseKeys_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isEmpty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0VtcHR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFzQztBQUNKO0FBQ1M7QUFDUjtBQUNRO0FBQ047QUFDTztBQUNDOztBQUU3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDJEQUFXO0FBQ2pCLE9BQU8sdURBQU87QUFDZCxRQUFRLHdEQUFRLFdBQVcsNERBQVksV0FBVywyREFBVztBQUM3RDtBQUNBO0FBQ0EsWUFBWSxzREFBTTtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxNQUFNLDJEQUFXO0FBQ2pCLFlBQVksd0RBQVE7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0VtcHR5LmpzPzczZjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VLZXlzIGZyb20gJy4vX2Jhc2VLZXlzLmpzJztcbmltcG9ydCBnZXRUYWcgZnJvbSAnLi9fZ2V0VGFnLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IGlzVHlwZWRBcnJheSBmcm9tICcuL2lzVHlwZWRBcnJheS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBlbXB0eSBvYmplY3QsIGNvbGxlY3Rpb24sIG1hcCwgb3Igc2V0LlxuICpcbiAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICogcHJvcGVydGllcy5cbiAqXG4gKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAqIGpRdWVyeS1saWtlIGNvbGxlY3Rpb25zIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBsZW5ndGhgIG9mIGAwYC5cbiAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFbXB0eShudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkodHJ1ZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKHZhbHVlKSAmJlxuICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgIHJldHVybiAhdmFsdWUubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICB9XG4gIGlmIChpc1Byb3RvdHlwZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gIH1cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRW1wdHk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isEmpty.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isFunction.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/lodash-es/isFunction.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n\n\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!(0,_isObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isFunction);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQztBQUNMOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sd0RBQVE7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMERBQVU7QUFDdEI7QUFDQTs7QUFFQSxpRUFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzPzFkM2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA5IHdoaWNoIHJldHVybnMgJ29iamVjdCcgZm9yIHR5cGVkIGFycmF5cyBhbmQgb3RoZXIgY29uc3RydWN0b3JzLlxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRnVuY3Rpb247XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isFunction.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isLength.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/isLength.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isLength);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0xlbmd0aC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNMZW5ndGguanM/Njc0YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTGVuZ3RoO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isLength.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isMap.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/isMap.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIsMap.js */ \"../../../node_modules/lodash-es/_baseIsMap.js\");\n/* harmony import */ var _baseUnary_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseUnary.js */ \"../../../node_modules/lodash-es/_baseUnary.js\");\n/* harmony import */ var _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nodeUtil.js */ \"../../../node_modules/lodash-es/_nodeUtil.js\");\n\n\n\n\n/* Node.js helper references. */\nvar nodeIsMap = _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? (0,_baseUnary_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nodeIsMap) : _baseIsMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc01hcC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXdDO0FBQ0E7QUFDRjs7QUFFdEM7QUFDQSxnQkFBZ0Isb0RBQVEsSUFBSSwwREFBYzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix5REFBUyxjQUFjLHFEQUFTOztBQUV4RCxpRUFBZSxLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc01hcC5qcz85ZGFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlSXNNYXAgZnJvbSAnLi9fYmFzZUlzTWFwLmpzJztcbmltcG9ydCBiYXNlVW5hcnkgZnJvbSAnLi9fYmFzZVVuYXJ5LmpzJztcbmltcG9ydCBub2RlVXRpbCBmcm9tICcuL19ub2RlVXRpbC5qcyc7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXA7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBNYXBgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTWFwKG5ldyBNYXApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbmV4cG9ydCBkZWZhdWx0IGlzTWFwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isMap.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isObject.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/isObject.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0LmpzPzVhYjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzT2JqZWN0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isObjectLike.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/isObjectLike.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isObjectLike);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc09iamVjdExpa2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlrZS5qcz83MDk3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isObjectLike.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isPlainObject.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/isPlainObject.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_getPrototype.js */ \"../../../node_modules/lodash-es/_getPrototype.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!(0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) || (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) != objectTag) {\n return false;\n }\n var proto = (0,_getPrototype_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isPlainObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1BsYWluT2JqZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEM7QUFDSTtBQUNEOztBQUU3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyw0REFBWSxXQUFXLDBEQUFVO0FBQ3hDO0FBQ0E7QUFDQSxjQUFjLDREQUFZO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzUGxhaW5PYmplY3QuanM/NmNkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBnZXRQcm90b3R5cGUgZnJvbSAnLi9fZ2V0UHJvdG90eXBlLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUGxhaW5PYmplY3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isPlainObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isSet.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/isSet.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsSet_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIsSet.js */ \"../../../node_modules/lodash-es/_baseIsSet.js\");\n/* harmony import */ var _baseUnary_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseUnary.js */ \"../../../node_modules/lodash-es/_baseUnary.js\");\n/* harmony import */ var _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nodeUtil.js */ \"../../../node_modules/lodash-es/_nodeUtil.js\");\n\n\n\n\n/* Node.js helper references. */\nvar nodeIsSet = _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? (0,_baseUnary_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nodeIsSet) : _baseIsSet_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isSet);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1NldC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXdDO0FBQ0E7QUFDRjs7QUFFdEM7QUFDQSxnQkFBZ0Isb0RBQVEsSUFBSSwwREFBYzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix5REFBUyxjQUFjLHFEQUFTOztBQUV4RCxpRUFBZSxLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1NldC5qcz83ZTc2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlSXNTZXQgZnJvbSAnLi9fYmFzZUlzU2V0LmpzJztcbmltcG9ydCBiYXNlVW5hcnkgZnJvbSAnLi9fYmFzZVVuYXJ5LmpzJztcbmltcG9ydCBub2RlVXRpbCBmcm9tICcuL19ub2RlVXRpbC5qcyc7XG5cbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzU2V0ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNTZXQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2V0KG5ldyBTZXQpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTZXQobmV3IFdlYWtTZXQpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzU2V0ID0gbm9kZUlzU2V0ID8gYmFzZVVuYXJ5KG5vZGVJc1NldCkgOiBiYXNlSXNTZXQ7XG5cbmV4cG9ydCBkZWZhdWx0IGlzU2V0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isSet.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isString.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/isString.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!(0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) && (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value) == stringTag);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1N0cmluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBDO0FBQ1A7QUFDVTs7QUFFN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdURBQU8sV0FBVyw0REFBWSxXQUFXLDBEQUFVO0FBQ3pEOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU3RyaW5nLmpzPzZlZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N0cmluZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isSymbol.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/isSymbol.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseGetTag.js */ \"../../../node_modules/lodash-es/_baseGetTag.js\");\n/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isObjectLike.js */ \"../../../node_modules/lodash-es/isObjectLike.js\");\n\n\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n ((0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value) && (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value) == symbolTag);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isSymbol);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1N5bWJvbC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEM7QUFDRzs7QUFFN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssNERBQVksV0FBVywwREFBVTtBQUN0Qzs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1N5bWJvbC5qcz9mY2NmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTeW1ib2w7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isSymbol.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isTypedArray.js": +/*!*******************************************************!*\ + !*** ../../../node_modules/lodash-es/isTypedArray.js ***! + \*******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseIsTypedArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseIsTypedArray.js */ \"../../../node_modules/lodash-es/_baseIsTypedArray.js\");\n/* harmony import */ var _baseUnary_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseUnary.js */ \"../../../node_modules/lodash-es/_baseUnary.js\");\n/* harmony import */ var _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_nodeUtil.js */ \"../../../node_modules/lodash-es/_nodeUtil.js\");\n\n\n\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] && _nodeUtil_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? (0,_baseUnary_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(nodeIsTypedArray) : _baseIsTypedArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isTypedArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1R5cGVkQXJyYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzRDtBQUNkO0FBQ0Y7O0FBRXRDO0FBQ0EsdUJBQXVCLG9EQUFRLElBQUksaUVBQXFCOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHlEQUFTLHFCQUFxQiw0REFBZ0I7O0FBRXBGLGlFQUFlLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzVHlwZWRBcnJheS5qcz8wNjcwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlSXNUeXBlZEFycmF5IGZyb20gJy4vX2Jhc2VJc1R5cGVkQXJyYXkuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZWRBcnJheTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isTypedArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/isUndefined.js": +/*!******************************************************!*\ + !*** ../../../node_modules/lodash-es/isUndefined.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isUndefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1VuZGVmaW5lZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1VuZGVmaW5lZC5qcz80ZDA1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNVbmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/isUndefined.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/keys.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/keys.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayLikeKeys.js */ \"../../../node_modules/lodash-es/_arrayLikeKeys.js\");\n/* harmony import */ var _baseKeys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseKeys.js */ \"../../../node_modules/lodash-es/_baseKeys.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n\n\n\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object) ? (0,_arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object) : (0,_baseKeys_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (keys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZ0Q7QUFDVjtBQUNLOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMkRBQVcsV0FBVyw2REFBYSxXQUFXLHdEQUFRO0FBQy9EOztBQUVBLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXMuanM/Nzk5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlMaWtlS2V5cyBmcm9tICcuL19hcnJheUxpa2VLZXlzLmpzJztcbmltcG9ydCBiYXNlS2V5cyBmcm9tICcuL19iYXNlS2V5cy5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/keys.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/keysIn.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/keysIn.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayLikeKeys.js */ \"../../../node_modules/lodash-es/_arrayLikeKeys.js\");\n/* harmony import */ var _baseKeysIn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseKeysIn.js */ \"../../../node_modules/lodash-es/_baseKeysIn.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n\n\n\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object) ? (0,_arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, true) : (0,_baseKeysIn_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (keysIn);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzSW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRDtBQUNOO0FBQ0M7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDJEQUFXLFdBQVcsNkRBQWEsaUJBQWlCLDBEQUFVO0FBQ3ZFOztBQUVBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXNJbi5qcz83ODc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheUxpa2VLZXlzIGZyb20gJy4vX2FycmF5TGlrZUtleXMuanMnO1xuaW1wb3J0IGJhc2VLZXlzSW4gZnJvbSAnLi9fYmFzZUtleXNJbi5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzSW47XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/keysIn.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/last.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/last.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (last);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9sYXN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2xhc3QuanM/OWZkYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGFzdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/last.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/map.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/map.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayMap.js */ \"../../../node_modules/lodash-es/_arrayMap.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _baseMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseMap.js */ \"../../../node_modules/lodash-es/_baseMap.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? _arrayMap_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _baseMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n return func(collection, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratee, 3));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (map);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tYXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0M7QUFDUTtBQUNWO0FBQ0Q7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZ0JBQWdCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLE9BQU8sa0JBQWtCO0FBQ3pCLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQU8sZUFBZSxvREFBUSxHQUFHLG1EQUFPO0FBQ3JELDBCQUEwQiw0REFBWTtBQUN0Qzs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tYXAuanM/MmY0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGJhc2VJdGVyYXRlZSBmcm9tICcuL19iYXNlSXRlcmF0ZWUuanMnO1xuaW1wb3J0IGJhc2VNYXAgZnJvbSAnLi9fYmFzZU1hcC5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICogYHNhbXBsZVNpemVgLCBgc2xpY2VgLCBgc29tZWAsIGBzb3J0QnlgLCBgc3BsaXRgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLFxuICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAqICAgcmV0dXJuIG4gKiBuO1xuICogfVxuICpcbiAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdXG4gKlxuICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnIH1cbiAqIF07XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICovXG5mdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/map.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/mapValues.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/mapValues.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseAssignValue_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseAssignValue.js */ \"../../../node_modules/lodash-es/_baseAssignValue.js\");\n/* harmony import */ var _baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseForOwn.js */ \"../../../node_modules/lodash-es/_baseForOwn.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n\n\n\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(iteratee, 3);\n\n (0,_baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, function(value, key, object) {\n (0,_baseAssignValue_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (mapValues);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tYXBWYWx1ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNWO0FBQ0k7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsOEJBQThCO0FBQ2hELGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esb0NBQW9DLGVBQWU7QUFDbkQsV0FBVywyQkFBMkI7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsV0FBVywyQkFBMkI7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsYUFBYSw0REFBWTs7QUFFekIsRUFBRSwwREFBVTtBQUNaLElBQUksK0RBQWU7QUFDbkIsR0FBRztBQUNIO0FBQ0E7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvbWFwVmFsdWVzLmpzPzdkNzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGJhc2VGb3JPd24gZnJvbSAnLi9fYmFzZUZvck93bi5qcyc7XG5pbXBvcnQgYmFzZUl0ZXJhdGVlIGZyb20gJy4vX2Jhc2VJdGVyYXRlZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gKiBAc2VlIF8ubWFwS2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSB7XG4gKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICogfTtcbiAqXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXBWYWx1ZXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/mapValues.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/max.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/max.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseExtremum.js */ \"../../../node_modules/lodash-es/_baseExtremum.js\");\n/* harmony import */ var _baseGt_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseGt.js */ \"../../../node_modules/lodash-es/_baseGt.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n\n\n\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? (0,_baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _baseGt_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (max);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tYXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE4QztBQUNaO0FBQ0c7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0REFBWSxRQUFRLG9EQUFRLEVBQUUsa0RBQU07QUFDMUM7QUFDQTs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tYXguanM/ZmU1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUV4dHJlbXVtIGZyb20gJy4vX2Jhc2VFeHRyZW11bS5qcyc7XG5pbXBvcnQgYmFzZUd0IGZyb20gJy4vX2Jhc2VHdC5qcyc7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIG1heGltdW0gdmFsdWUgb2YgYGFycmF5YC4gSWYgYGFycmF5YCBpcyBlbXB0eSBvciBmYWxzZXksXG4gKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICogLy8gPT4gOFxuICpcbiAqIF8ubWF4KFtdKTtcbiAqIC8vID0+IHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1heDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/max.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/memoize.js": +/*!**************************************************!*\ + !*** ../../../node_modules/lodash-es/memoize.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _MapCache_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_MapCache.js */ \"../../../node_modules/lodash-es/_MapCache.js\");\n\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || _MapCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = _MapCache_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (memoize);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tZW1vaXplLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXNDOztBQUV0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QyxvREFBUTtBQUNqRDtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLG9EQUFROztBQUV4QixpRUFBZSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tZW1vaXplLmpzPzdmNmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hcENhY2hlIGZyb20gJy4vX01hcENhY2hlLmpzJztcblxuLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gKlxuICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIHZhbHVlcyhvdGhlcik7XG4gKiAvLyA9PiBbMywgNF1cbiAqXG4gKiBvYmplY3QuYSA9IDI7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddXG4gKlxuICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gKi9cbmZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSxcbiAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICBtZW1vaXplZC5jYWNoZSA9IGNhY2hlLnNldChrZXksIHJlc3VsdCkgfHwgY2FjaGU7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgbWVtb2l6ZWQuY2FjaGUgPSBuZXcgKG1lbW9pemUuQ2FjaGUgfHwgTWFwQ2FjaGUpO1xuICByZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbi8vIEV4cG9zZSBgTWFwQ2FjaGVgLlxubWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG5leHBvcnQgZGVmYXVsdCBtZW1vaXplO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/memoize.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/merge.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/merge.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseMerge_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseMerge.js */ \"../../../node_modules/lodash-es/_baseMerge.js\");\n/* harmony import */ var _createAssigner_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createAssigner.js */ \"../../../node_modules/lodash-es/_createAssigner.js\");\n\n\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = (0,_createAssigner_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(object, source, srcIndex) {\n (0,_baseMerge_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, source, srcIndex);\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (merge);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9tZXJnZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDVTs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsV0FBVztBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRLElBQUksUUFBUTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVEsSUFBSSxRQUFRO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUSxnQkFBZ0IsSUFBSSxnQkFBZ0I7QUFDdkQ7QUFDQSxZQUFZLDhEQUFjO0FBQzFCLEVBQUUseURBQVM7QUFDWCxDQUFDOztBQUVELGlFQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL21lcmdlLmpzPzNmNTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VNZXJnZSBmcm9tICcuL19iYXNlTWVyZ2UuanMnO1xuaW1wb3J0IGNyZWF0ZUFzc2lnbmVyIGZyb20gJy4vX2NyZWF0ZUFzc2lnbmVyLmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7XG4gKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gKiB9O1xuICpcbiAqIHZhciBvdGhlciA9IHtcbiAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAqL1xudmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IG1lcmdlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/merge.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/min.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/min.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseExtremum.js */ \"../../../node_modules/lodash-es/_baseExtremum.js\");\n/* harmony import */ var _baseLt_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseLt.js */ \"../../../node_modules/lodash-es/_baseLt.js\");\n/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ \"../../../node_modules/lodash-es/identity.js\");\n\n\n\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? (0,_baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, _identity_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _baseLt_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (min);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9taW4uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE4QztBQUNaO0FBQ0c7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxHQUFHO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0REFBWSxRQUFRLG9EQUFRLEVBQUUsa0RBQU07QUFDMUM7QUFDQTs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9taW4uanM/YTIyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUV4dHJlbXVtIGZyb20gJy4vX2Jhc2VFeHRyZW11bS5qcyc7XG5pbXBvcnQgYmFzZUx0IGZyb20gJy4vX2Jhc2VMdC5qcyc7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIG1pbmltdW0gdmFsdWUgb2YgYGFycmF5YC4gSWYgYGFycmF5YCBpcyBlbXB0eSBvciBmYWxzZXksXG4gKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICogLy8gPT4gMlxuICpcbiAqIF8ubWluKFtdKTtcbiAqIC8vID0+IHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1pbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/min.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/minBy.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/minBy.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseExtremum.js */ \"../../../node_modules/lodash-es/_baseExtremum.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _baseLt_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseLt.js */ \"../../../node_modules/lodash-es/_baseLt.js\");\n\n\n\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? (0,_baseExtremum_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(array, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iteratee, 2), _baseLt_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n : undefined;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (minBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9taW5CeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQThDO0FBQ0E7QUFDWjs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBLG9CQUFvQixRQUFRLElBQUksUUFBUTtBQUN4QztBQUNBLGtDQUFrQyxhQUFhO0FBQy9DLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsTUFBTSw0REFBWSxRQUFRLDREQUFZLGVBQWUsa0RBQU07QUFDM0Q7QUFDQTs7QUFFQSxpRUFBZSxLQUFLLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9taW5CeS5qcz8wZmI0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlRXh0cmVtdW0gZnJvbSAnLi9fYmFzZUV4dHJlbXVtLmpzJztcbmltcG9ydCBiYXNlSXRlcmF0ZWUgZnJvbSAnLi9fYmFzZUl0ZXJhdGVlLmpzJztcbmltcG9ydCBiYXNlTHQgZnJvbSAnLi9fYmFzZUx0LmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtaW5CeTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/minBy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/noop.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/noop.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (noop);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9ub29wLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsSUFBSSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvbm9vcC5qcz84MmZjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vb3A7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/noop.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/now.js": +/*!**********************************************!*\ + !*** ../../../node_modules/lodash-es/now.js ***! + \**********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_root.js */ \"../../../node_modules/lodash-es/_root.js\");\n\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return _root_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].Date.now();\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (now);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9ub3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsU0FBUyx5REFBYTtBQUN0Qjs7QUFFQSxpRUFBZSxHQUFHLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9ub3cuanM/N2Q1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbm93O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/now.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/pick.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/pick.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _basePick_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_basePick.js */ \"../../../node_modules/lodash-es/_basePick.js\");\n/* harmony import */ var _flatRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_flatRest.js */ \"../../../node_modules/lodash-es/_flatRest.js\");\n\n\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = (0,_flatRest_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(object, paths) {\n return object == null ? {} : (0,_basePick_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object, paths);\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (pick);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9waWNrLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzQztBQUNBOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLHNCQUFzQjtBQUNqQyxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVyx3REFBUTtBQUNuQiw2QkFBNkIsRUFBRSx3REFBUTtBQUN2QyxDQUFDOztBQUVELGlFQUFlLElBQUksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3BpY2suanM/Nzc4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVBpY2sgZnJvbSAnLi9fYmFzZVBpY2suanMnO1xuaW1wb3J0IGZsYXRSZXN0IGZyb20gJy4vX2ZsYXRSZXN0LmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgcGlja2VkIGBvYmplY3RgIHByb3BlcnRpZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAqXG4gKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICovXG52YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBwaWNrO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/pick.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/property.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/property.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseProperty_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseProperty.js */ \"../../../node_modules/lodash-es/_baseProperty.js\");\n/* harmony import */ var _basePropertyDeep_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_basePropertyDeep.js */ \"../../../node_modules/lodash-es/_basePropertyDeep.js\");\n/* harmony import */ var _isKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isKey.js */ \"../../../node_modules/lodash-es/_isKey.js\");\n/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_toKey.js */ \"../../../node_modules/lodash-es/_toKey.js\");\n\n\n\n\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return (0,_isKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(path) ? (0,_baseProperty_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((0,_toKey_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(path)) : (0,_basePropertyDeep_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(path);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (property);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9wcm9wZXJ0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUE4QztBQUNRO0FBQ3RCO0FBQ0E7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxPQUFPLE9BQU8sVUFBVTtBQUN4QixPQUFPLE9BQU87QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHFEQUFLLFNBQVMsNERBQVksQ0FBQyxxREFBSyxVQUFVLGdFQUFnQjtBQUNuRTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9wcm9wZXJ0eS5qcz84MDhlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlUHJvcGVydHkgZnJvbSAnLi9fYmFzZVByb3BlcnR5LmpzJztcbmltcG9ydCBiYXNlUHJvcGVydHlEZWVwIGZyb20gJy4vX2Jhc2VQcm9wZXJ0eURlZXAuanMnO1xuaW1wb3J0IGlzS2V5IGZyb20gJy4vX2lzS2V5LmpzJztcbmltcG9ydCB0b0tleSBmcm9tICcuL190b0tleS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICByZXR1cm4gaXNLZXkocGF0aCkgPyBiYXNlUHJvcGVydHkodG9LZXkocGF0aCkpIDogYmFzZVByb3BlcnR5RGVlcChwYXRoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcHJvcGVydHk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/property.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/range.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/range.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _createRange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createRange.js */ \"../../../node_modules/lodash-es/_createRange.js\");\n\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = (0,_createRange_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (range);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9yYW5nZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE0Qzs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyREFBVzs7QUFFdkIsaUVBQWUsS0FBSyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvcmFuZ2UuanM/NjVlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlUmFuZ2UgZnJvbSAnLi9fY3JlYXRlUmFuZ2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gKiBgc3RhcnRgIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIEEgc3RlcCBvZiBgLTFgIGlzIHVzZWQgaWYgYSBuZWdhdGl2ZVxuICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gKlxuICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5yYW5nZSg0KTtcbiAqIC8vID0+IFswLCAxLCAyLCAzXVxuICpcbiAqIF8ucmFuZ2UoLTQpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA1KTtcbiAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICpcbiAqIF8ucmFuZ2UoMCwgMjAsIDUpO1xuICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAqXG4gKiBfLnJhbmdlKDAsIC00LCAtMSk7XG4gKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAqXG4gKiBfLnJhbmdlKDEsIDQsIDApO1xuICogLy8gPT4gWzEsIDEsIDFdXG4gKlxuICogXy5yYW5nZSgwKTtcbiAqIC8vID0+IFtdXG4gKi9cbnZhciByYW5nZSA9IGNyZWF0ZVJhbmdlKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHJhbmdlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/range.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/reduce.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/reduce.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayReduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayReduce.js */ \"../../../node_modules/lodash-es/_arrayReduce.js\");\n/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_baseEach.js */ \"../../../node_modules/lodash-es/_baseEach.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _baseReduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseReduce.js */ \"../../../node_modules/lodash-es/_baseReduce.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n\n\n\n\n\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? _arrayReduce_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _baseReduce_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n initAccum = arguments.length < 3;\n\n return func(collection, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratee, 4), accumulator, initAccum, _baseEach_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reduce);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9yZWR1Y2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTRDO0FBQ047QUFDUTtBQUNKO0FBQ1A7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsVUFBVTtBQUNyQixXQUFXLEdBQUc7QUFDZCxhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsY0FBYyx3QkFBd0I7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSTtBQUNSLFdBQVcsOEJBQThCO0FBQ3pDO0FBQ0E7QUFDQSxhQUFhLHVEQUFPLGVBQWUsdURBQVcsR0FBRyxzREFBVTtBQUMzRDs7QUFFQSwwQkFBMEIsNERBQVksdUNBQXVDLG9EQUFRO0FBQ3JGOztBQUVBLGlFQUFlLE1BQU0sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3JlZHVjZS5qcz85NDVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheVJlZHVjZSBmcm9tICcuL19hcnJheVJlZHVjZS5qcyc7XG5pbXBvcnQgYmFzZUVhY2ggZnJvbSAnLi9fYmFzZUVhY2guanMnO1xuaW1wb3J0IGJhc2VJdGVyYXRlZSBmcm9tICcuL19iYXNlSXRlcmF0ZWUuanMnO1xuaW1wb3J0IGJhc2VSZWR1Y2UgZnJvbSAnLi9fYmFzZVJlZHVjZS5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuXG4vKipcbiAqIFJlZHVjZXMgYGNvbGxlY3Rpb25gIHRvIGEgdmFsdWUgd2hpY2ggaXMgdGhlIGFjY3VtdWxhdGVkIHJlc3VsdCBvZiBydW5uaW5nXG4gKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gKiBpcyBub3QgZ2l2ZW4sIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCBpcyB1c2VkIGFzIHRoZSBpbml0aWFsXG4gKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICpcbiAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gKiBhbmQgYHNvcnRCeWBcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAqIEBleGFtcGxlXG4gKlxuICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAqICAgcmV0dXJuIHN1bSArIG47XG4gKiB9LCAwKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnJlZHVjZSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiAgIHJldHVybiByZXN1bHQ7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZWR1Y2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/reduce.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/size.js": +/*!***********************************************!*\ + !*** ../../../node_modules/lodash-es/size.js ***! + \***********************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseKeys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_baseKeys.js */ \"../../../node_modules/lodash-es/_baseKeys.js\");\n/* harmony import */ var _getTag_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_getTag.js */ \"../../../node_modules/lodash-es/_getTag.js\");\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"../../../node_modules/lodash-es/isArrayLike.js\");\n/* harmony import */ var _isString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isString.js */ \"../../../node_modules/lodash-es/isString.js\");\n/* harmony import */ var _stringSize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_stringSize.js */ \"../../../node_modules/lodash-es/_stringSize.js\");\n\n\n\n\n\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if ((0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection)) {\n return (0,_isString_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(collection) ? (0,_stringSize_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(collection) : collection.length;\n }\n var tag = (0,_getTag_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return (0,_baseKeys_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(collection).length;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (size);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9zaXplLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFzQztBQUNKO0FBQ1M7QUFDTjtBQUNLOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSwyREFBVztBQUNqQixXQUFXLHdEQUFRLGVBQWUsMERBQVU7QUFDNUM7QUFDQSxZQUFZLHNEQUFNO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLFNBQVMsd0RBQVE7QUFDakI7O0FBRUEsaUVBQWUsSUFBSSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvc2l6ZS5qcz83ZmZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlS2V5cyBmcm9tICcuL19iYXNlS2V5cy5qcyc7XG5pbXBvcnQgZ2V0VGFnIGZyb20gJy4vX2dldFRhZy5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnLi9pc1N0cmluZy5qcyc7XG5pbXBvcnQgc3RyaW5nU2l6ZSBmcm9tICcuL19zdHJpbmdTaXplLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIEdldHMgdGhlIHNpemUgb2YgYGNvbGxlY3Rpb25gIGJ5IHJldHVybmluZyBpdHMgbGVuZ3RoIGZvciBhcnJheS1saWtlXG4gKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb2xsZWN0aW9uIHNpemUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uc2l6ZShbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICpcbiAqIF8uc2l6ZSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICogLy8gPT4gMlxuICpcbiAqIF8uc2l6ZSgncGViYmxlcycpO1xuICogLy8gPT4gN1xuICovXG5mdW5jdGlvbiBzaXplKGNvbGxlY3Rpb24pIHtcbiAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKGNvbGxlY3Rpb24pO1xuICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgcmV0dXJuIGNvbGxlY3Rpb24uc2l6ZTtcbiAgfVxuICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaXplO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/size.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/sortBy.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/sortBy.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFlatten_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseFlatten.js */ \"../../../node_modules/lodash-es/_baseFlatten.js\");\n/* harmony import */ var _baseOrderBy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseOrderBy.js */ \"../../../node_modules/lodash-es/_baseOrderBy.js\");\n/* harmony import */ var _baseRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseRest.js */ \"../../../node_modules/lodash-es/_baseRest.js\");\n/* harmony import */ var _isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isIterateeCall.js */ \"../../../node_modules/lodash-es/_isIterateeCall.js\");\n\n\n\n\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = (0,_baseRest_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return (0,_baseOrderBy_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(collection, (0,_baseFlatten_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratees, 1), []);\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (sortBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9zb3J0QnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBNEM7QUFDQTtBQUNOO0FBQ1k7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsMEJBQTBCO0FBQ3JDO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLE9BQU8sNkJBQTZCO0FBQ3BDLE9BQU8sNkJBQTZCO0FBQ3BDLE9BQU8sNkJBQTZCO0FBQ3BDLE9BQU87QUFDUDtBQUNBO0FBQ0Esa0NBQWtDLGdCQUFnQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx3REFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4REFBYztBQUNsQztBQUNBLElBQUksdUJBQXVCLDhEQUFjO0FBQ3pDO0FBQ0E7QUFDQSxTQUFTLDJEQUFXLGFBQWEsMkRBQVc7QUFDNUMsQ0FBQzs7QUFFRCxpRUFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9zb3J0QnkuanM/ZTBiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUZsYXR0ZW4gZnJvbSAnLi9fYmFzZUZsYXR0ZW4uanMnO1xuaW1wb3J0IGJhc2VPcmRlckJ5IGZyb20gJy4vX2Jhc2VPcmRlckJ5LmpzJztcbmltcG9ydCBiYXNlUmVzdCBmcm9tICcuL19iYXNlUmVzdC5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAqIHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGEgY29sbGVjdGlvbiB0aHJ1IGVhY2ggaXRlcmF0ZWUuIFRoaXMgbWV0aG9kXG4gKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDMwIH0sXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH1cbiAqIF07XG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFtmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXI7IH1dKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICpcbiAqIF8uc29ydEJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gKi9cbnZhciBzb3J0QnkgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZXMpIHtcbiAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW107XG4gIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICB9XG4gIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc29ydEJ5O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/sortBy.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/stubArray.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/stubArray.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stubArray);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9zdHViQXJyYXkuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJBcnJheS5qcz85ZWU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0dWJBcnJheTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/stubArray.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/stubFalse.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/stubFalse.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stubFalse);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9zdHViRmFsc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsU0FBUyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvc3R1YkZhbHNlLmpzPzZiODciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHViRmFsc2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/stubFalse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/toFinite.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/toFinite.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _toNumber_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toNumber.js */ \"../../../node_modules/lodash-es/toNumber.js\");\n\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = (0,_toNumber_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toFinite);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b0Zpbml0ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsd0RBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvRmluaXRlLmpzPzE2NjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvTnVtYmVyIGZyb20gJy4vdG9OdW1iZXIuanMnO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwLFxuICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDg7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9GaW5pdGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/toFinite.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/toInteger.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/toInteger.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _toFinite_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFinite.js */ \"../../../node_modules/lodash-es/toFinite.js\");\n\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = (0,_toFinite_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toInteger);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b0ludGVnZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsd0RBQVE7QUFDdkI7O0FBRUE7QUFDQTs7QUFFQSxpRUFBZSxTQUFTLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b0ludGVnZXIuanM/MTkyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdG9GaW5pdGUgZnJvbSAnLi90b0Zpbml0ZS5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvSW50ZWdlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/toInteger.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/toNumber.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/toNumber.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseTrim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseTrim.js */ \"../../../node_modules/lodash-es/_baseTrim.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isSymbol.js */ \"../../../node_modules/lodash-es/isSymbol.js\");\n\n\n\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if ((0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n return NAN;\n }\n if ((0,_isObject_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = (0,_isObject_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = (0,_baseTrim_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toNumber);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b051bWJlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNDO0FBQ0Q7QUFDQTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sd0RBQVE7QUFDZDtBQUNBO0FBQ0EsTUFBTSx3REFBUTtBQUNkO0FBQ0EsWUFBWSx3REFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsd0RBQVE7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b051bWJlci5qcz9jOGY1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlVHJpbSBmcm9tICcuL19iYXNlVHJpbS5qcyc7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5pbXBvcnQgaXNTeW1ib2wgZnJvbSAnLi9pc1N5bWJvbC5qcyc7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0b051bWJlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/toNumber.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/toPlainObject.js": +/*!********************************************************!*\ + !*** ../../../node_modules/lodash-es/toPlainObject.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _copyObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_copyObject.js */ \"../../../node_modules/lodash-es/_copyObject.js\");\n/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keysIn.js */ \"../../../node_modules/lodash-es/keysIn.js\");\n\n\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return (0,_copyObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value, (0,_keysIn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(value));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toPlainObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b1BsYWluT2JqZWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQztBQUNUOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEIsV0FBVztBQUNYO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLFdBQVc7QUFDWDtBQUNBO0FBQ0EsU0FBUywwREFBVSxRQUFRLHNEQUFNO0FBQ2pDOztBQUVBLGlFQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvUGxhaW5PYmplY3QuanM/NWU5NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvUGxhaW5PYmplY3Q7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/toPlainObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/toString.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/toString.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseToString.js */ \"../../../node_modules/lodash-es/_baseToString.js\");\n\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : (0,_baseToString_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toString);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b1N0cmluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE4Qzs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsNERBQVk7QUFDMUM7O0FBRUEsaUVBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9TdHJpbmcuanM/NTFhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVRvU3RyaW5nIGZyb20gJy4vX2Jhc2VUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9TdHJpbmc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/toString.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/transform.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/transform.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _arrayEach_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./_arrayEach.js */ \"../../../node_modules/lodash-es/_arrayEach.js\");\n/* harmony import */ var _baseCreate_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./_baseCreate.js */ \"../../../node_modules/lodash-es/_baseCreate.js\");\n/* harmony import */ var _baseForOwn_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./_baseForOwn.js */ \"../../../node_modules/lodash-es/_baseForOwn.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseIteratee.js */ \"../../../node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./_getPrototype.js */ \"../../../node_modules/lodash-es/_getPrototype.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"../../../node_modules/lodash-es/isArray.js\");\n/* harmony import */ var _isBuffer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isBuffer.js */ \"../../../node_modules/lodash-es/isBuffer.js\");\n/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isFunction.js */ \"../../../node_modules/lodash-es/isFunction.js\");\n/* harmony import */ var _isObject_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isObject.js */ \"../../../node_modules/lodash-es/isObject.js\");\n/* harmony import */ var _isTypedArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isTypedArray.js */ \"../../../node_modules/lodash-es/isTypedArray.js\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object),\n isArrLike = isArr || (0,_isBuffer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object) || (0,_isTypedArray_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(object);\n\n iteratee = (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if ((0,_isObject_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(object)) {\n accumulator = (0,_isFunction_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(Ctor) ? (0,_baseCreate_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])((0,_getPrototype_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? _arrayEach_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"] : _baseForOwn_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (transform);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90cmFuc2Zvcm0uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBd0M7QUFDRTtBQUNBO0FBQ0k7QUFDQTtBQUNYO0FBQ0U7QUFDSTtBQUNKO0FBQ1E7O0FBRTdDO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsR0FBRztBQUNkLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxpQkFBaUIsd0JBQXdCO0FBQ3pDO0FBQ0EsSUFBSSxJQUFJO0FBQ1IsV0FBVztBQUNYO0FBQ0E7QUFDQSxjQUFjLHVEQUFPO0FBQ3JCLDJCQUEyQix3REFBUSxZQUFZLDREQUFZOztBQUUzRCxhQUFhLDREQUFZO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHdEQUFRO0FBQ3JCLG9CQUFvQiwwREFBVSxTQUFTLDBEQUFVLENBQUMsNERBQVk7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscURBQVMsR0FBRyxzREFBVTtBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RyYW5zZm9ybS5qcz8zOTc4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcnJheUVhY2ggZnJvbSAnLi9fYXJyYXlFYWNoLmpzJztcbmltcG9ydCBiYXNlQ3JlYXRlIGZyb20gJy4vX2Jhc2VDcmVhdGUuanMnO1xuaW1wb3J0IGJhc2VGb3JPd24gZnJvbSAnLi9fYmFzZUZvck93bi5qcyc7XG5pbXBvcnQgYmFzZUl0ZXJhdGVlIGZyb20gJy4vX2Jhc2VJdGVyYXRlZS5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzQnVmZmVyIGZyb20gJy4vaXNCdWZmZXIuanMnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pc0Z1bmN0aW9uLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKipcbiAqIEFuIGFsdGVybmF0aXZlIHRvIGBfLnJlZHVjZWA7IHRoaXMgbWV0aG9kIHRyYW5zZm9ybXMgYG9iamVjdGAgdG8gYSBuZXdcbiAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICogcG90ZW50aWFsbHkgbXV0YXRpbmcgdGhlIGBhY2N1bXVsYXRvcmAgb2JqZWN0LiBJZiBgYWNjdW11bGF0b3JgIGlzIG5vdFxuICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udHJhbnNmb3JtKFsyLCAzLCA0XSwgZnVuY3Rpb24ocmVzdWx0LCBuKSB7XG4gKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICogfSwgW10pO1xuICogLy8gPT4gWzQsIDldXG4gKlxuICogXy50cmFuc2Zvcm0oeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICogfSwge30pO1xuICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICovXG5mdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgdmFyIEN0b3IgPSBvYmplY3QgJiYgb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgfVxuICB9XG4gIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIG9iamVjdCk7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRyYW5zZm9ybTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/transform.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/union.js": +/*!************************************************!*\ + !*** ../../../node_modules/lodash-es/union.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseFlatten_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseFlatten.js */ \"../../../node_modules/lodash-es/_baseFlatten.js\");\n/* harmony import */ var _baseRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseRest.js */ \"../../../node_modules/lodash-es/_baseRest.js\");\n/* harmony import */ var _baseUniq_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseUniq.js */ \"../../../node_modules/lodash-es/_baseUniq.js\");\n/* harmony import */ var _isArrayLikeObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isArrayLikeObject.js */ \"../../../node_modules/lodash-es/isArrayLikeObject.js\");\n\n\n\n\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = (0,_baseRest_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(arrays) {\n return (0,_baseUniq_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((0,_baseFlatten_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(arrays, 1, _isArrayLikeObject_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], true));\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (union);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy91bmlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUE0QztBQUNOO0FBQ0E7QUFDaUI7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0RBQVE7QUFDcEIsU0FBUyx3REFBUSxDQUFDLDJEQUFXLFlBQVksNkRBQWlCO0FBQzFELENBQUM7O0FBRUQsaUVBQWUsS0FBSyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdW5pb24uanM/MWU2YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUZsYXR0ZW4gZnJvbSAnLi9fYmFzZUZsYXR0ZW4uanMnO1xuaW1wb3J0IGJhc2VSZXN0IGZyb20gJy4vX2Jhc2VSZXN0LmpzJztcbmltcG9ydCBiYXNlVW5pcSBmcm9tICcuL19iYXNlVW5pcS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2VPYmplY3QgZnJvbSAnLi9pc0FycmF5TGlrZU9iamVjdC5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB1bmlvbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/union.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/uniqueId.js": +/*!***************************************************!*\ + !*** ../../../node_modules/lodash-es/uniqueId.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toString.js */ \"../../../node_modules/lodash-es/toString.js\");\n\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return (0,_toString_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(prefix) + id;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (uniqueId);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy91bmlxdWVJZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFxQzs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdEQUFRO0FBQ2pCOztBQUVBLGlFQUFlLFFBQVEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3VuaXF1ZUlkLmpzP2ZjYzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVuaXF1ZUlkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/uniqueId.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/values.js": +/*!*************************************************!*\ + !*** ../../../node_modules/lodash-es/values.js ***! + \*************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _baseValues_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseValues.js */ \"../../../node_modules/lodash-es/_baseValues.js\");\n/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ \"../../../node_modules/lodash-es/keys.js\");\n\n\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : (0,_baseValues_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(object, (0,_keys_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(object));\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (values);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy92YWx1ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTBDO0FBQ2I7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMERBQVUsU0FBUyxvREFBSTtBQUN0RDs7QUFFQSxpRUFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy92YWx1ZXMuanM/MTgwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZVZhbHVlcyBmcm9tICcuL19iYXNlVmFsdWVzLmpzJztcbmltcG9ydCBrZXlzIGZyb20gJy4va2V5cy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWx1ZXM7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/values.js\n"); + +/***/ }), + +/***/ "../../../node_modules/lodash-es/zipObject.js": +/*!****************************************************!*\ + !*** ../../../node_modules/lodash-es/zipObject.js ***! + \****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _assignValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_assignValue.js */ \"../../../node_modules/lodash-es/_assignValue.js\");\n/* harmony import */ var _baseZipObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseZipObject.js */ \"../../../node_modules/lodash-es/_baseZipObject.js\");\n\n\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return (0,_baseZipObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props || [], values || [], _assignValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (zipObject);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy96aXBPYmplY3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTRDO0FBQ0k7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVMsNkRBQWEsNEJBQTRCLHVEQUFXO0FBQzdEOztBQUVBLGlFQUFlLFNBQVMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL3ppcE9iamVjdC5qcz81YTk1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NpZ25WYWx1ZSBmcm9tICcuL19hc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgYmFzZVppcE9iamVjdCBmcm9tICcuL19iYXNlWmlwT2JqZWN0LmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgemlwT2JqZWN0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/lodash-es/zipObject.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mdast-util-from-markdown/dev/lib/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/mdast-util-from-markdown/dev/lib/index.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"fromMarkdown\": () => (/* binding */ fromMarkdown)\n/* harmony export */ });\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mdast-util-to-string */ \"../../../node_modules/mdast-util-to-string/lib/index.js\");\n/* harmony import */ var micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark/lib/parse.js */ \"../../../node_modules/micromark/dev/lib/parse.js\");\n/* harmony import */ var micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark/lib/preprocess.js */ \"../../../node_modules/micromark/dev/lib/preprocess.js\");\n/* harmony import */ var micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark/lib/postprocess.js */ \"../../../node_modules/micromark/dev/lib/postprocess.js\");\n/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ \"../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\");\n/* harmony import */ var micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-util-decode-string */ \"../../../node_modules/micromark-util-decode-string/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"../../../node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! decode-named-character-reference */ \"../../../node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! unist-util-stringify-position */ \"../../../node_modules/unist-util-stringify-position/lib/index.js\");\n/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nconst fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n (\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n (0,micromark_lib_postprocess_js__WEBPACK_IMPORTED_MODULE_1__.postprocess)(\n (0,micromark_lib_parse_js__WEBPACK_IMPORTED_MODULE_2__.parse)(options).document().write((0,micromark_lib_preprocess_js__WEBPACK_IMPORTED_MODULE_3__.preprocess)()(value, encoding, true))\n )\n )\n }\n )\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {type: 'root', children: []}\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered ||\n events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof tail === 'number', 'expected list ot be open')\n index = prepareList(events, tail, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {sliceSerialize: events[index][2].sliceSerialize},\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0 ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuote\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank) {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemValue ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemMarker ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefixWhitespace\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listUnordered ||\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listOrdered))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding ||\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank\n listSpread = true\n }\n\n tailEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix ||\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefix ||\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuotePrefixWhitespace ||\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.blockQuoteMarker ||\n tailEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemIndent\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.listItemPrefix) {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(parent, 'expected `parent`')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in parent, 'expected `parent`')\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {start: point(token.start)}\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected `node`')\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type !== 'fragment', 'unexpected fragment `exit`ed')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.position, 'expected `position` to be defined')\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return (0,mdast_util_to_string__WEBPACK_IMPORTED_MODULE_6__.toString)(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected nodes on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor.type === 'list', 'expected list on stack')\n ancestor.start = Number.parseInt(\n this.sliceSerialize(token),\n micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal\n )\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'code', 'expected code on stack')\n\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n node.label = label\n node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'definition', 'expected definition on stack')\n\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack')\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n depth === 1 ||\n depth === 2 ||\n depth === 3 ||\n depth === 4 ||\n depth === 5 ||\n depth === 6,\n 'expected `depth` between `1` and `6`'\n )\n\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'heading', 'expected heading on stack')\n\n node.depth =\n this.sliceSerialize(token).charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_9__.codes.equalsTo ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in node, 'expected parent on stack')\n\n let tail = node.children[node.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {start: point(token.start)}\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected a `node` to be on the stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected a `literal` to be on the stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node` to have an open position')\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(context, 'expected `node`')\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('children' in context, 'expected `parent`')\n const tail = context.children[context.children.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected tail to have a starting position')\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack')\n\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'html', 'expected html on stack')\n\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'inlineCode', 'expected inline code on stack')\n\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'image', 'expected image on stack')\n\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(ancestor, 'expected ancestor on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n ancestor.type === 'image' || ancestor.type === 'link',\n 'expected image or link on stack'\n )\n\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = (0,micromark_util_decode_string__WEBPACK_IMPORTED_MODULE_10__.decodeString)(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(fragment.type === 'fragment', 'expected fragment on stack')\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n node.type === 'image' || node.type === 'link',\n 'expected image or link on stack'\n )\n\n // Assume a reference.\n setData('inReference', true)\n\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n node.type === 'image' || node.type === 'link',\n 'expected image or link on stack'\n )\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n node.type === 'image' || node.type === 'link',\n 'expected image or link on stack'\n )\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n node.type === 'image' || node.type === 'link',\n 'expected image reference or link reference on stack'\n )\n\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_8__.normalizeIdentifier)(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n token.type === 'characterReferenceMarkerNumeric' ||\n token.type === 'characterReferenceMarkerHexadecimal'\n )\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n\n if (type) {\n value = (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_11__.decodeNumericCharacterReference)(\n data,\n type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.characterReferenceMarkerNumeric\n ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseDecimal\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_7__.constants.numericBaseHexadecimal\n )\n setData('characterReferenceType')\n } else {\n const result = (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_12__.decodeNamedCharacterReference)(data)\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(result !== false, 'expected reference to decode')\n value = result\n }\n\n const tail = this.stack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail, 'expected `node`')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(tail.position, 'expected `node.position`')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)('value' in tail, 'expected `node.value`')\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node, 'expected node on stack')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(node.type === 'link', 'expected link on stack')\n\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {type: 'heading', depth: undefined, children: []}\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {type: 'break'}\n }\n\n /** @returns {HTML} */\n function html() {\n return {type: 'html', value: ''}\n }\n\n /** @returns {Image} */\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n /** @returns {Link} */\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n /** @returns {Strong} */\n function strong() {\n return {type: 'strong', children: []}\n }\n\n /** @returns {Text} */\n function text() {\n return {type: 'text', value: ''}\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: left.start, end: left.end}) +\n '): a different token (`' +\n right.type +\n '`, ' +\n (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n (0,unist_util_stringify_position__WEBPACK_IMPORTED_MODULE_5__.stringifyPosition)({start: right.start, end: right.end}) +\n ') is still open'\n )\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtZnJvbS1tYXJrZG93bi9kZXYvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLDZDQUE2QztBQUMxRCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLHNDQUFzQztBQUNuRDtBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDLGFBQWEsdUJBQXVCO0FBQ3BDO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUMsYUFBYSx1Q0FBdUM7QUFDcEQsYUFBYSx5QkFBeUI7QUFDdEMsYUFBYSx1QkFBdUI7QUFDcEMsYUFBYSw0QkFBNEI7QUFDekMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSw0QkFBNEI7QUFDekMsYUFBYSwwQkFBMEI7QUFDdkMsYUFBYSx5QkFBeUI7QUFDdEMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSx1QkFBdUI7QUFDcEMsYUFBYSxnQ0FBZ0M7QUFDN0MsYUFBYSw0QkFBNEI7QUFDekMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSwrQkFBK0I7QUFDNUMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSwwQkFBMEI7QUFDdkMsYUFBYSwyQkFBMkI7QUFDeEMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSx3QkFBd0I7QUFDckMsYUFBYSxzQkFBc0I7QUFDbkMsYUFBYSwrQkFBK0I7QUFDNUMsYUFBYSwrQkFBK0I7QUFDNUMsYUFBYSxtQ0FBbUM7QUFDaEQ7O0FBRUE7QUFDQSxhQUFhLGdCQUFnQjtBQUM3QixhQUFhLDRCQUE0QjtBQUN6QztBQUNBLGFBQWEsMENBQTBDLHFEQUFxRDtBQUM1Rzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBLFdBQVcsT0FBTztBQUNs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Q0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcscUNBQXFDO0FBQ2hELGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsV0FBVztBQUN0QixhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWEsaUJBQWlCO0FBQzlCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxjQUFjO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0ZBQWlCLEVBQUUsaUNBQWlDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0ZBQWlCLEVBQUUsbUNBQW1DO0FBQzlEO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLGdGQUFpQixFQUFFLG1DQUFtQztBQUM5RDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duL2Rldi9saWIvaW5kZXguanM/ODVlYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRW5jb2Rpbmd9IEVuY29kaW5nXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZU9wdGlvbnN9IFBhcnNlT3B0aW9uc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVmFsdWV9IFZhbHVlXG4gKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5QYXJlbnR9IFVuaXN0UGFyZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICpcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUGhyYXNpbmdDb250ZW50fSBQaHJhc2luZ0NvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuU3RhdGljUGhyYXNpbmdDb250ZW50fSBTdGF0aWNQaHJhc2luZ0NvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQ29udGVudH0gQ29udGVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5CcmVha30gQnJlYWtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQmxvY2txdW90ZX0gQmxvY2txdW90ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkRlZmluaXRpb259IERlZmluaXRpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuRW1waGFzaXN9IEVtcGhhc2lzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkhlYWRpbmd9IEhlYWRpbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSFRNTH0gSFRNTFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5JbWFnZX0gSW1hZ2VcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSW1hZ2VSZWZlcmVuY2V9IEltYWdlUmVmZXJlbmNlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLklubGluZUNvZGV9IElubGluZUNvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlua30gTGlua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5MaW5rUmVmZXJlbmNlfSBMaW5rUmVmZXJlbmNlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkxpc3R9IExpc3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlzdEl0ZW19IExpc3RJdGVtXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlBhcmFncmFwaH0gUGFyYWdyYXBoXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuU3Ryb25nfSBTdHJvbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuVGV4dH0gVGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5UaGVtYXRpY0JyZWFrfSBUaGVtYXRpY0JyZWFrXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJlZmVyZW5jZVR5cGV9IFJlZmVyZW5jZVR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2luZGV4LmpzJykuQ29tcGlsZURhdGF9IENvbXBpbGVEYXRhXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7Um9vdCB8IENvbnRlbnR9IE5vZGVcbiAqIEB0eXBlZGVmIHtFeHRyYWN0PE5vZGUsIFVuaXN0UGFyZW50Pn0gUGFyZW50XG4gKlxuICogQHR5cGVkZWYge09taXQ8VW5pc3RQYXJlbnQsICd0eXBlJyB8ICdjaGlsZHJlbic+ICYge3R5cGU6ICdmcmFnbWVudCcsIGNoaWxkcmVuOiBBcnJheTxQaHJhc2luZ0NvbnRlbnQ+fX0gRnJhZ21lbnRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBUcmFuc2Zvcm1cbiAqICAgRXh0cmEgdHJhbnNmb3JtLCB0byBjaGFuZ2UgdGhlIEFTVCBhZnRlcndhcmRzLlxuICogQHBhcmFtIHtSb290fSB0cmVlXG4gKiAgIFRyZWUgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybnMge1Jvb3QgfCB1bmRlZmluZWQgfCBudWxsIHwgdm9pZH1cbiAqICAgTmV3IHRyZWUgb3Igbm90aGluZyAoaW4gd2hpY2ggY2FzZSB0aGUgY3VycmVudCB0cmVlIGlzIHVzZWQpLlxuICpcbiAqIEBjYWxsYmFjayBIYW5kbGVcbiAqICAgSGFuZGxlIGEgdG9rZW4uXG4gKiBAcGFyYW0ge0NvbXBpbGVDb250ZXh0fSB0aGlzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICogICBDdXJyZW50IHRva2VuLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIEhhbmRsZT59IEhhbmRsZXNcbiAqICAgVG9rZW4gdHlwZXMgbWFwcGluZyB0byBoYW5kbGVzXG4gKlxuICogQGNhbGxiYWNrIE9uRW50ZXJFcnJvclxuICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGByaWdodGAgdG9rZW4gaXMgb3BlbiwgYnV0IGl0IGlzIGNsb3NlZCAoYnkgdGhlXG4gKiAgIGBsZWZ0YCB0b2tlbikgb3IgYmVjYXVzZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LlxuICogQHBhcmFtIHtPbWl0PENvbXBpbGVDb250ZXh0LCAnc2xpY2VTZXJpYWxpemUnPn0gdGhpc1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtUb2tlbiB8IHVuZGVmaW5lZH0gbGVmdFxuICogICBMZWZ0IHRva2VuLlxuICogQHBhcmFtIHtUb2tlbn0gcmlnaHRcbiAqICAgUmlnaHQgdG9rZW4uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAY2FsbGJhY2sgT25FeGl0RXJyb3JcbiAqICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBgcmlnaHRgIHRva2VuIGlzIG9wZW4gYnV0IGl0IGlzIGNsb3NlZCBieVxuICogICBleGl0aW5nIHRoZSBgbGVmdGAgdG9rZW4uXG4gKiBAcGFyYW0ge09taXQ8Q29tcGlsZUNvbnRleHQsICdzbGljZVNlcmlhbGl6ZSc+fSB0aGlzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1Rva2VufSBsZWZ0XG4gKiAgIExlZnQgdG9rZW4uXG4gKiBAcGFyYW0ge1Rva2VufSByaWdodFxuICogICBSaWdodCB0b2tlbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEB0eXBlZGVmIHtbVG9rZW4sIE9uRW50ZXJFcnJvciB8IHVuZGVmaW5lZF19IFRva2VuVHVwbGVcbiAqICAgT3BlbiB0b2tlbiBvbiB0aGUgc3RhY2ssIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgaGFuZGxlciBmb3Igd2hlblxuICogICB0aGF0IHRva2VuIGlzbuKAmXQgY2xvc2VkIHByb3Blcmx5LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgQ29uZmlnXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKlxuICogICBXZSBoYXZlIG91ciBkZWZhdWx0cywgYnV0IGV4dGVuc2lvbnMgd2lsbCBhZGQgbW9yZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gY2FuQ29udGFpbkVvbHNcbiAqICAgVG9rZW4gdHlwZXMgd2hlcmUgbGluZSBlbmRpbmdzIGFyZSB1c2VkLlxuICogQHByb3BlcnR5IHtIYW5kbGVzfSBlbnRlclxuICogICBPcGVuaW5nIGhhbmRsZXMuXG4gKiBAcHJvcGVydHkge0hhbmRsZXN9IGV4aXRcbiAqICAgQ2xvc2luZyBoYW5kbGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxUcmFuc2Zvcm0+fSB0cmFuc2Zvcm1zXG4gKiAgIFRyZWUgdHJhbnNmb3Jtcy5cbiAqXG4gKiBAdHlwZWRlZiB7UGFydGlhbDxDb25maWc+fSBFeHRlbnNpb25cbiAqICAgQ2hhbmdlIGhvdyBtYXJrZG93biB0b2tlbnMgZnJvbSBtaWNyb21hcmsgYXJlIHR1cm5lZCBpbnRvIG1kYXN0LlxuICpcbiAqIEB0eXBlZGVmIENvbXBpbGVDb250ZXh0XG4gKiAgIG1kYXN0IGNvbXBpbGVyIGNvbnRleHQuXG4gKiBAcHJvcGVydHkge0FycmF5PE5vZGUgfCBGcmFnbWVudD59IHN0YWNrXG4gKiAgIFN0YWNrIG9mIG5vZGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxUb2tlblR1cGxlPn0gdG9rZW5TdGFja1xuICogICBTdGFjayBvZiB0b2tlbnMuXG4gKiBAcHJvcGVydHkgezxLZXkgZXh0ZW5kcyBrZXlvZiBDb21waWxlRGF0YT4oa2V5OiBLZXkpID0+IENvbXBpbGVEYXRhW0tleV19IGdldERhdGFcbiAqICAgR2V0IGRhdGEgZnJvbSB0aGUga2V5L3ZhbHVlIHN0b3JlLlxuICogQHByb3BlcnR5IHs8S2V5IGV4dGVuZHMga2V5b2YgQ29tcGlsZURhdGE+KGtleTogS2V5LCB2YWx1ZT86IENvbXBpbGVEYXRhW0tleV0pID0+IHZvaWR9IHNldERhdGFcbiAqICAgU2V0IGRhdGEgaW50byB0aGUga2V5L3ZhbHVlIHN0b3JlLlxuICogQHByb3BlcnR5IHsodGhpczogQ29tcGlsZUNvbnRleHQpID0+IHZvaWR9IGJ1ZmZlclxuICogICBDYXB0dXJlIHNvbWUgb2YgdGhlIG91dHB1dCBkYXRhLlxuICogQHByb3BlcnR5IHsodGhpczogQ29tcGlsZUNvbnRleHQpID0+IHN0cmluZ30gcmVzdW1lXG4gKiAgIFN0b3AgY2FwdHVyaW5nIGFuZCBhY2Nlc3MgdGhlIG91dHB1dCBkYXRhLlxuICogQHByb3BlcnR5IHs8S2luZCBleHRlbmRzIE5vZGU+KHRoaXM6IENvbXBpbGVDb250ZXh0LCBub2RlOiBLaW5kLCB0b2tlbjogVG9rZW4sIG9uRXJyb3I/OiBPbkVudGVyRXJyb3IpID0+IEtpbmR9IGVudGVyXG4gKiAgIEVudGVyIGEgdG9rZW4uXG4gKiBAcHJvcGVydHkgeyh0aGlzOiBDb21waWxlQ29udGV4dCwgdG9rZW46IFRva2VuLCBvbkVycm9yPzogT25FeGl0RXJyb3IpID0+IE5vZGV9IGV4aXRcbiAqICAgRXhpdCBhIHRva2VuLlxuICogQHByb3BlcnR5IHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU2VyaWFsaXplJ119IHNsaWNlU2VyaWFsaXplXG4gKiAgIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgdG9rZW4uXG4gKiBAcHJvcGVydHkge0NvbmZpZ30gY29uZmlnXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKlxuICogQHR5cGVkZWYgRnJvbU1hcmtkb3duT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uIGZvciBob3cgdG8gYnVpbGQgbWRhc3QuXG4gKiBAcHJvcGVydHkge0FycmF5PEV4dGVuc2lvbiB8IEFycmF5PEV4dGVuc2lvbj4+IHwgbnVsbCB8IHVuZGVmaW5lZH0gW21kYXN0RXh0ZW5zaW9uc11cbiAqICAgRXh0ZW5zaW9ucyBmb3IgdGhpcyB1dGlsaXR5IHRvIGNoYW5nZSBob3cgdG9rZW5zIGFyZSB0dXJuZWQgaW50byBhIHRyZWUuXG4gKlxuICogQHR5cGVkZWYge1BhcnNlT3B0aW9ucyAmIEZyb21NYXJrZG93bk9wdGlvbnN9IE9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqL1xuXG4vLyBUbyBkbzogbWljcm9tYXJrOiBjcmVhdGUgYSByZWdpc3RyeSBvZiB0b2tlbnM/XG4vLyBUbyBkbzogbmV4dCBtYWpvcjogZG9u4oCZdCByZXR1cm4gZ2l2ZW4gYE5vZGVgIGZyb20gYGVudGVyYC5cbi8vIFRvIGRvOiBuZXh0IG1ham9yOiByZW1vdmUgc2V0dGVyL2dldHRlci5cblxuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICdtZGFzdC11dGlsLXRvLXN0cmluZydcbmltcG9ydCB7cGFyc2V9IGZyb20gJ21pY3JvbWFyay9saWIvcGFyc2UuanMnXG5pbXBvcnQge3ByZXByb2Nlc3N9IGZyb20gJ21pY3JvbWFyay9saWIvcHJlcHJvY2Vzcy5qcydcbmltcG9ydCB7cG9zdHByb2Nlc3N9IGZyb20gJ21pY3JvbWFyay9saWIvcG9zdHByb2Nlc3MuanMnXG5pbXBvcnQge2RlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge2RlY29kZVN0cmluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZydcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7ZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuaW1wb3J0IHtzdHJpbmdpZnlQb3NpdGlvbn0gZnJvbSAndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nXG5cbmNvbnN0IG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8qKlxuICogQHBhcmFtIHZhbHVlXG4gKiAgIE1hcmtkb3duIHRvIHBhcnNlLlxuICogQHBhcmFtIGVuY29kaW5nXG4gKiAgIENoYXJhY3RlciBlbmNvZGluZyBmb3Igd2hlbiBgdmFsdWVgIGlzIGBCdWZmZXJgLlxuICogQHBhcmFtIG9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zXG4gKiAgIG1kYXN0IHRyZWUuXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tTWFya2Rvd24gPVxuICAvKipcbiAgICogQHR5cGUgeyhcbiAgICogICAoKHZhbHVlOiBWYWx1ZSwgZW5jb2Rpbmc6IEVuY29kaW5nLCBvcHRpb25zPzogT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWQpID0+IFJvb3QpICZcbiAgICogICAoKHZhbHVlOiBWYWx1ZSwgb3B0aW9ucz86IE9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiBSb290KVxuICAgKiApfVxuICAgKi9cbiAgKFxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7VmFsdWV9IHZhbHVlXG4gICAgICogQHBhcmFtIHtFbmNvZGluZyB8IE9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5jb2RpbmddXG4gICAgICogQHBhcmFtIHtPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gICAgICogQHJldHVybnMge1Jvb3R9XG4gICAgICovXG4gICAgZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZywgb3B0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgb3B0aW9ucyA9IGVuY29kaW5nXG4gICAgICAgIGVuY29kaW5nID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21waWxlcihvcHRpb25zKShcbiAgICAgICAgcG9zdHByb2Nlc3MoXG4gICAgICAgICAgcGFyc2Uob3B0aW9ucykuZG9jdW1lbnQoKS53cml0ZShwcmVwcm9jZXNzKCkodmFsdWUsIGVuY29kaW5nLCB0cnVlKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cbiAgKVxuXG4vKipcbiAqIE5vdGUgdGhpcyBjb21waWxlciBvbmx5IHVuZGVyc3RhbmQgY29tcGxldGUgYnVmZmVyaW5nLCBub3Qgc3RyZWFtaW5nLlxuICpcbiAqIEBwYXJhbSB7T3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICovXG5mdW5jdGlvbiBjb21waWxlcihvcHRpb25zKSB7XG4gIC8qKiBAdHlwZSB7Q29uZmlnfSAqL1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgdHJhbnNmb3JtczogW10sXG4gICAgY2FuQ29udGFpbkVvbHM6IFsnZW1waGFzaXMnLCAnZnJhZ21lbnQnLCAnaGVhZGluZycsICdwYXJhZ3JhcGgnLCAnc3Ryb25nJ10sXG4gICAgZW50ZXI6IHtcbiAgICAgIGF1dG9saW5rOiBvcGVuZXIobGluayksXG4gICAgICBhdXRvbGlua1Byb3RvY29sOiBvbmVudGVyZGF0YSxcbiAgICAgIGF1dG9saW5rRW1haWw6IG9uZW50ZXJkYXRhLFxuICAgICAgYXR4SGVhZGluZzogb3BlbmVyKGhlYWRpbmcpLFxuICAgICAgYmxvY2tRdW90ZTogb3BlbmVyKGJsb2NrUXVvdGUpLFxuICAgICAgY2hhcmFjdGVyRXNjYXBlOiBvbmVudGVyZGF0YSxcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZTogb25lbnRlcmRhdGEsXG4gICAgICBjb2RlRmVuY2VkOiBvcGVuZXIoY29kZUZsb3cpLFxuICAgICAgY29kZUZlbmNlZEZlbmNlSW5mbzogYnVmZmVyLFxuICAgICAgY29kZUZlbmNlZEZlbmNlTWV0YTogYnVmZmVyLFxuICAgICAgY29kZUluZGVudGVkOiBvcGVuZXIoY29kZUZsb3csIGJ1ZmZlciksXG4gICAgICBjb2RlVGV4dDogb3BlbmVyKGNvZGVUZXh0LCBidWZmZXIpLFxuICAgICAgY29kZVRleHREYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGRhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgY29kZUZsb3dWYWx1ZTogb25lbnRlcmRhdGEsXG4gICAgICBkZWZpbml0aW9uOiBvcGVuZXIoZGVmaW5pdGlvbiksXG4gICAgICBkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6IGJ1ZmZlcixcbiAgICAgIGRlZmluaXRpb25MYWJlbFN0cmluZzogYnVmZmVyLFxuICAgICAgZGVmaW5pdGlvblRpdGxlU3RyaW5nOiBidWZmZXIsXG4gICAgICBlbXBoYXNpczogb3BlbmVyKGVtcGhhc2lzKSxcbiAgICAgIGhhcmRCcmVha0VzY2FwZTogb3BlbmVyKGhhcmRCcmVhayksXG4gICAgICBoYXJkQnJlYWtUcmFpbGluZzogb3BlbmVyKGhhcmRCcmVhayksXG4gICAgICBodG1sRmxvdzogb3BlbmVyKGh0bWwsIGJ1ZmZlciksXG4gICAgICBodG1sRmxvd0RhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgaHRtbFRleHQ6IG9wZW5lcihodG1sLCBidWZmZXIpLFxuICAgICAgaHRtbFRleHREYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGltYWdlOiBvcGVuZXIoaW1hZ2UpLFxuICAgICAgbGFiZWw6IGJ1ZmZlcixcbiAgICAgIGxpbms6IG9wZW5lcihsaW5rKSxcbiAgICAgIGxpc3RJdGVtOiBvcGVuZXIobGlzdEl0ZW0pLFxuICAgICAgbGlzdEl0ZW1WYWx1ZTogb25lbnRlcmxpc3RpdGVtdmFsdWUsXG4gICAgICBsaXN0T3JkZXJlZDogb3BlbmVyKGxpc3QsIG9uZW50ZXJsaXN0b3JkZXJlZCksXG4gICAgICBsaXN0VW5vcmRlcmVkOiBvcGVuZXIobGlzdCksXG4gICAgICBwYXJhZ3JhcGg6IG9wZW5lcihwYXJhZ3JhcGgpLFxuICAgICAgcmVmZXJlbmNlOiBvbmVudGVycmVmZXJlbmNlLFxuICAgICAgcmVmZXJlbmNlU3RyaW5nOiBidWZmZXIsXG4gICAgICByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOiBidWZmZXIsXG4gICAgICByZXNvdXJjZVRpdGxlU3RyaW5nOiBidWZmZXIsXG4gICAgICBzZXRleHRIZWFkaW5nOiBvcGVuZXIoaGVhZGluZyksXG4gICAgICBzdHJvbmc6IG9wZW5lcihzdHJvbmcpLFxuICAgICAgdGhlbWF0aWNCcmVhazogb3BlbmVyKHRoZW1hdGljQnJlYWspXG4gICAgfSxcbiAgICBleGl0OiB7XG4gICAgICBhdHhIZWFkaW5nOiBjbG9zZXIoKSxcbiAgICAgIGF0eEhlYWRpbmdTZXF1ZW5jZTogb25leGl0YXR4aGVhZGluZ3NlcXVlbmNlLFxuICAgICAgYXV0b2xpbms6IGNsb3NlcigpLFxuICAgICAgYXV0b2xpbmtFbWFpbDogb25leGl0YXV0b2xpbmtlbWFpbCxcbiAgICAgIGF1dG9saW5rUHJvdG9jb2w6IG9uZXhpdGF1dG9saW5rcHJvdG9jb2wsXG4gICAgICBibG9ja1F1b3RlOiBjbG9zZXIoKSxcbiAgICAgIGNoYXJhY3RlckVzY2FwZVZhbHVlOiBvbmV4aXRkYXRhLFxuICAgICAgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6IG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZW1hcmtlcixcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWM6IG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZW1hcmtlcixcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2V2YWx1ZSxcbiAgICAgIGNvZGVGZW5jZWQ6IGNsb3NlcihvbmV4aXRjb2RlZmVuY2VkKSxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZTogb25leGl0Y29kZWZlbmNlZGZlbmNlLFxuICAgICAgY29kZUZlbmNlZEZlbmNlSW5mbzogb25leGl0Y29kZWZlbmNlZGZlbmNlaW5mbyxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZU1ldGE6IG9uZXhpdGNvZGVmZW5jZWRmZW5jZW1ldGEsXG4gICAgICBjb2RlRmxvd1ZhbHVlOiBvbmV4aXRkYXRhLFxuICAgICAgY29kZUluZGVudGVkOiBjbG9zZXIob25leGl0Y29kZWluZGVudGVkKSxcbiAgICAgIGNvZGVUZXh0OiBjbG9zZXIob25leGl0Y29kZXRleHQpLFxuICAgICAgY29kZVRleHREYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgZGF0YTogb25leGl0ZGF0YSxcbiAgICAgIGRlZmluaXRpb246IGNsb3NlcigpLFxuICAgICAgZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOiBvbmV4aXRkZWZpbml0aW9uZGVzdGluYXRpb25zdHJpbmcsXG4gICAgICBkZWZpbml0aW9uTGFiZWxTdHJpbmc6IG9uZXhpdGRlZmluaXRpb25sYWJlbHN0cmluZyxcbiAgICAgIGRlZmluaXRpb25UaXRsZVN0cmluZzogb25leGl0ZGVmaW5pdGlvbnRpdGxlc3RyaW5nLFxuICAgICAgZW1waGFzaXM6IGNsb3NlcigpLFxuICAgICAgaGFyZEJyZWFrRXNjYXBlOiBjbG9zZXIob25leGl0aGFyZGJyZWFrKSxcbiAgICAgIGhhcmRCcmVha1RyYWlsaW5nOiBjbG9zZXIob25leGl0aGFyZGJyZWFrKSxcbiAgICAgIGh0bWxGbG93OiBjbG9zZXIob25leGl0aHRtbGZsb3cpLFxuICAgICAgaHRtbEZsb3dEYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgaHRtbFRleHQ6IGNsb3NlcihvbmV4aXRodG1sdGV4dCksXG4gICAgICBodG1sVGV4dERhdGE6IG9uZXhpdGRhdGEsXG4gICAgICBpbWFnZTogY2xvc2VyKG9uZXhpdGltYWdlKSxcbiAgICAgIGxhYmVsOiBvbmV4aXRsYWJlbCxcbiAgICAgIGxhYmVsVGV4dDogb25leGl0bGFiZWx0ZXh0LFxuICAgICAgbGluZUVuZGluZzogb25leGl0bGluZWVuZGluZyxcbiAgICAgIGxpbms6IGNsb3NlcihvbmV4aXRsaW5rKSxcbiAgICAgIGxpc3RJdGVtOiBjbG9zZXIoKSxcbiAgICAgIGxpc3RPcmRlcmVkOiBjbG9zZXIoKSxcbiAgICAgIGxpc3RVbm9yZGVyZWQ6IGNsb3NlcigpLFxuICAgICAgcGFyYWdyYXBoOiBjbG9zZXIoKSxcbiAgICAgIHJlZmVyZW5jZVN0cmluZzogb25leGl0cmVmZXJlbmNlc3RyaW5nLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzogb25leGl0cmVzb3VyY2VkZXN0aW5hdGlvbnN0cmluZyxcbiAgICAgIHJlc291cmNlVGl0bGVTdHJpbmc6IG9uZXhpdHJlc291cmNldGl0bGVzdHJpbmcsXG4gICAgICByZXNvdXJjZTogb25leGl0cmVzb3VyY2UsXG4gICAgICBzZXRleHRIZWFkaW5nOiBjbG9zZXIob25leGl0c2V0ZXh0aGVhZGluZyksXG4gICAgICBzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlOiBvbmV4aXRzZXRleHRoZWFkaW5nbGluZXNlcXVlbmNlLFxuICAgICAgc2V0ZXh0SGVhZGluZ1RleHQ6IG9uZXhpdHNldGV4dGhlYWRpbmd0ZXh0LFxuICAgICAgc3Ryb25nOiBjbG9zZXIoKSxcbiAgICAgIHRoZW1hdGljQnJlYWs6IGNsb3NlcigpXG4gICAgfVxuICB9XG5cbiAgY29uZmlndXJlKGNvbmZpZywgKG9wdGlvbnMgfHwge30pLm1kYXN0RXh0ZW5zaW9ucyB8fCBbXSlcblxuICAvKiogQHR5cGUge0NvbXBpbGVEYXRhfSAqL1xuICBjb25zdCBkYXRhID0ge31cblxuICByZXR1cm4gY29tcGlsZVxuXG4gIC8qKlxuICAgKiBUdXJuIG1pY3JvbWFyayBldmVudHMgaW50byBhbiBtZGFzdCB0cmVlLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gICAqICAgRXZlbnRzLlxuICAgKiBAcmV0dXJucyB7Um9vdH1cbiAgICogICBtZGFzdCB0cmVlLlxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZShldmVudHMpIHtcbiAgICAvKiogQHR5cGUge1Jvb3R9ICovXG4gICAgbGV0IHRyZWUgPSB7dHlwZTogJ3Jvb3QnLCBjaGlsZHJlbjogW119XG4gICAgLyoqIEB0eXBlIHtPbWl0PENvbXBpbGVDb250ZXh0LCAnc2xpY2VTZXJpYWxpemUnPn0gKi9cbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgc3RhY2s6IFt0cmVlXSxcbiAgICAgIHRva2VuU3RhY2s6IFtdLFxuICAgICAgY29uZmlnLFxuICAgICAgZW50ZXIsXG4gICAgICBleGl0LFxuICAgICAgYnVmZmVyLFxuICAgICAgcmVzdW1lLFxuICAgICAgc2V0RGF0YSxcbiAgICAgIGdldERhdGFcbiAgICB9XG4gICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqL1xuICAgIGNvbnN0IGxpc3RTdGFjayA9IFtdXG4gICAgbGV0IGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgICAgLy8gV2UgcHJlcHJvY2VzcyBsaXN0cyB0byBhZGQgYGxpc3RJdGVtYCB0b2tlbnMsIGFuZCB0byBpbmZlciB3aGV0aGVyXG4gICAgICAvLyBpdGVtcyB0aGUgbGlzdCBpdHNlbGYgYXJlIHNwcmVhZCBvdXQuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMubGlzdE9yZGVyZWQgfHxcbiAgICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSB0eXBlcy5saXN0VW5vcmRlcmVkXG4gICAgICApIHtcbiAgICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicpIHtcbiAgICAgICAgICBsaXN0U3RhY2sucHVzaChpbmRleClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YWlsID0gbGlzdFN0YWNrLnBvcCgpXG4gICAgICAgICAgYXNzZXJ0KHR5cGVvZiB0YWlsID09PSAnbnVtYmVyJywgJ2V4cGVjdGVkIGxpc3Qgb3QgYmUgb3BlbicpXG4gICAgICAgICAgaW5kZXggPSBwcmVwYXJlTGlzdChldmVudHMsIHRhaWwsIGluZGV4KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gY29uZmlnW2V2ZW50c1tpbmRleF1bMF1dXG5cbiAgICAgIGlmIChvd24uY2FsbChoYW5kbGVyLCBldmVudHNbaW5kZXhdWzFdLnR5cGUpKSB7XG4gICAgICAgIGhhbmRsZXJbZXZlbnRzW2luZGV4XVsxXS50eXBlXS5jYWxsKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7c2xpY2VTZXJpYWxpemU6IGV2ZW50c1tpbmRleF1bMl0uc2xpY2VTZXJpYWxpemV9LFxuICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICksXG4gICAgICAgICAgZXZlbnRzW2luZGV4XVsxXVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRva2VucyBzdGlsbCBiZWluZyBvcGVuLlxuICAgIGlmIChjb250ZXh0LnRva2VuU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFpbCA9IGNvbnRleHQudG9rZW5TdGFja1tjb250ZXh0LnRva2VuU3RhY2subGVuZ3RoIC0gMV1cbiAgICAgIGNvbnN0IGhhbmRsZXIgPSB0YWlsWzFdIHx8IGRlZmF1bHRPbkVycm9yXG4gICAgICBoYW5kbGVyLmNhbGwoY29udGV4dCwgdW5kZWZpbmVkLCB0YWlsWzBdKVxuICAgIH1cblxuICAgIC8vIEZpZ3VyZSBvdXQgYHJvb3RgIHBvc2l0aW9uLlxuICAgIHRyZWUucG9zaXRpb24gPSB7XG4gICAgICBzdGFydDogcG9pbnQoXG4gICAgICAgIGV2ZW50cy5sZW5ndGggPiAwID8gZXZlbnRzWzBdWzFdLnN0YXJ0IDoge2xpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwfVxuICAgICAgKSxcbiAgICAgIGVuZDogcG9pbnQoXG4gICAgICAgIGV2ZW50cy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDJdWzFdLmVuZFxuICAgICAgICAgIDoge2xpbmU6IDEsIGNvbHVtbjogMSwgb2Zmc2V0OiAwfVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIENhbGwgdHJhbnNmb3Jtcy5cbiAgICBpbmRleCA9IC0xXG4gICAgd2hpbGUgKCsraW5kZXggPCBjb25maWcudHJhbnNmb3Jtcy5sZW5ndGgpIHtcbiAgICAgIHRyZWUgPSBjb25maWcudHJhbnNmb3Jtc1tpbmRleF0odHJlZSkgfHwgdHJlZVxuICAgIH1cblxuICAgIHJldHVybiB0cmVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZnVuY3Rpb24gcHJlcGFyZUxpc3QoZXZlbnRzLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgbGV0IGluZGV4ID0gc3RhcnQgLSAxXG4gICAgbGV0IGNvbnRhaW5lckJhbGFuY2UgPSAtMVxuICAgIGxldCBsaXN0U3ByZWFkID0gZmFsc2VcbiAgICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBsaXN0SXRlbVxuICAgIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBsaW5lSW5kZXhcbiAgICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgZmlyc3RCbGFua0xpbmVJbmRleFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgYXRNYXJrZXJcblxuICAgIHdoaWxlICgrK2luZGV4IDw9IGxlbmd0aCkge1xuICAgICAgY29uc3QgZXZlbnQgPSBldmVudHNbaW5kZXhdXG5cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdFVub3JkZXJlZCB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSB0eXBlcy5saXN0T3JkZXJlZCB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSB0eXBlcy5ibG9ja1F1b3RlXG4gICAgICApIHtcbiAgICAgICAgaWYgKGV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgY29udGFpbmVyQmFsYW5jZSsrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGFpbmVyQmFsYW5jZS0tXG4gICAgICAgIH1cblxuICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfSBlbHNlIGlmIChldmVudFsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nQmxhbmspIHtcbiAgICAgICAgaWYgKGV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbGlzdEl0ZW0gJiZcbiAgICAgICAgICAgICFhdE1hcmtlciAmJlxuICAgICAgICAgICAgIWNvbnRhaW5lckJhbGFuY2UgJiZcbiAgICAgICAgICAgICFmaXJzdEJsYW5rTGluZUluZGV4XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmaXJzdEJsYW5rTGluZUluZGV4ID0gaW5kZXhcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBldmVudFsxXS50eXBlID09PSB0eXBlcy5saW5lUHJlZml4IHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpc3RJdGVtVmFsdWUgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1NYXJrZXIgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1QcmVmaXggfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlXG4gICAgICApIHtcbiAgICAgICAgLy8gRW1wdHkuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICghY29udGFpbmVyQmFsYW5jZSAmJlxuICAgICAgICAgIGV2ZW50WzBdID09PSAnZW50ZXInICYmXG4gICAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1QcmVmaXgpIHx8XG4gICAgICAgIChjb250YWluZXJCYWxhbmNlID09PSAtMSAmJlxuICAgICAgICAgIGV2ZW50WzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICAoZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdFVub3JkZXJlZCB8fFxuICAgICAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gdHlwZXMubGlzdE9yZGVyZWQpKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsaXN0SXRlbSkge1xuICAgICAgICAgIGxldCB0YWlsSW5kZXggPSBpbmRleFxuICAgICAgICAgIGxpbmVJbmRleCA9IHVuZGVmaW5lZFxuXG4gICAgICAgICAgd2hpbGUgKHRhaWxJbmRleC0tKSB7XG4gICAgICAgICAgICBjb25zdCB0YWlsRXZlbnQgPSBldmVudHNbdGFpbEluZGV4XVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nQmxhbmtcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAodGFpbEV2ZW50WzBdID09PSAnZXhpdCcpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAgICAgICAgIGV2ZW50c1tsaW5lSW5kZXhdWzFdLnR5cGUgPSB0eXBlcy5saW5lRW5kaW5nQmxhbmtcbiAgICAgICAgICAgICAgICBsaXN0U3ByZWFkID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPSB0eXBlcy5saW5lRW5kaW5nXG4gICAgICAgICAgICAgIGxpbmVJbmRleCA9IHRhaWxJbmRleFxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpbmVQcmVmaXggfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmJsb2NrUXVvdGVQcmVmaXggfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSB0eXBlcy5ibG9ja1F1b3RlTWFya2VyIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSB0eXBlcy5saXN0SXRlbUluZGVudFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIEVtcHR5XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpcnN0QmxhbmtMaW5lSW5kZXggJiZcbiAgICAgICAgICAgICghbGluZUluZGV4IHx8IGZpcnN0QmxhbmtMaW5lSW5kZXggPCBsaW5lSW5kZXgpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBsaXN0SXRlbS5fc3ByZWFkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpeCBwb3NpdGlvbi5cbiAgICAgICAgICBsaXN0SXRlbS5lbmQgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBsaW5lSW5kZXggPyBldmVudHNbbGluZUluZGV4XVsxXS5zdGFydCA6IGV2ZW50WzFdLmVuZFxuICAgICAgICAgIClcblxuICAgICAgICAgIGV2ZW50cy5zcGxpY2UobGluZUluZGV4IHx8IGluZGV4LCAwLCBbJ2V4aXQnLCBsaXN0SXRlbSwgZXZlbnRbMl1dKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBsZW5ndGgrK1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGxpc3QgaXRlbS5cbiAgICAgICAgaWYgKGV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpc3RJdGVtUHJlZml4KSB7XG4gICAgICAgICAgbGlzdEl0ZW0gPSB7XG4gICAgICAgICAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgICAgICAgICAgX3NwcmVhZDogZmFsc2UsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRbMV0uc3RhcnQpLFxuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogd2XigJlsbCBhZGQgYGVuZGAgaW4gYSBzZWNvbmQuXG4gICAgICAgICAgICBlbmQ6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbGlzdEl0ZW1gIGlzIG1vc3QgZGVmaW5pdGVseSBkZWZpbmVkLCBUUy4uLlxuICAgICAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXgsIDAsIFsnZW50ZXInLCBsaXN0SXRlbSwgZXZlbnRbMl1dKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBsZW5ndGgrK1xuICAgICAgICAgIGZpcnN0QmxhbmtMaW5lSW5kZXggPSB1bmRlZmluZWRcbiAgICAgICAgICBhdE1hcmtlciA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGV2ZW50c1tzdGFydF1bMV0uX3NwcmVhZCA9IGxpc3RTcHJlYWRcbiAgICByZXR1cm4gbGVuZ3RoXG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgQ29tcGlsZURhdGF9IEtleVxuICAgKiAgIEZpZWxkIHR5cGUuXG4gICAqIEBwYXJhbSB7S2V5fSBrZXlcbiAgICogICBLZXkgb2YgZmllbGQuXG4gICAqIEBwYXJhbSB7Q29tcGlsZURhdGFbS2V5XX0gW3ZhbHVlXVxuICAgKiAgIE5ldyB2YWx1ZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqICAgTm90aGluZy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldERhdGEoa2V5LCB2YWx1ZSkge1xuICAgIGRhdGFba2V5XSA9IHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogR2V0IGRhdGEuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgQ29tcGlsZURhdGF9IEtleVxuICAgKiAgIEZpZWxkIHR5cGUuXG4gICAqIEBwYXJhbSB7S2V5fSBrZXlcbiAgICogICBLZXkgb2YgZmllbGQuXG4gICAqIEByZXR1cm5zIHtDb21waWxlRGF0YVtLZXldfVxuICAgKiAgIFZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0RGF0YShrZXkpIHtcbiAgICByZXR1cm4gZGF0YVtrZXldXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG9wZW5lciBoYW5kbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7KHRva2VuOiBUb2tlbikgPT4gTm9kZX0gY3JlYXRlXG4gICAqICAgQ3JlYXRlIGEgbm9kZS5cbiAgICogQHBhcmFtIHtIYW5kbGV9IFthbmRdXG4gICAqICAgT3B0aW9uYWwgZnVuY3Rpb24gdG8gYWxzbyBydW4uXG4gICAqIEByZXR1cm5zIHtIYW5kbGV9XG4gICAqICAgSGFuZGxlLlxuICAgKi9cbiAgZnVuY3Rpb24gb3BlbmVyKGNyZWF0ZSwgYW5kKSB7XG4gICAgcmV0dXJuIG9wZW5cblxuICAgIC8qKlxuICAgICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9wZW4odG9rZW4pIHtcbiAgICAgIGVudGVyLmNhbGwodGhpcywgY3JlYXRlKHRva2VuKSwgdG9rZW4pXG4gICAgICBpZiAoYW5kKSBhbmQuY2FsbCh0aGlzLCB0b2tlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGJ1ZmZlcigpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2goe3R5cGU6ICdmcmFnbWVudCcsIGNoaWxkcmVuOiBbXX0pXG4gIH1cblxuICAvKipcbiAgICogQHRlbXBsYXRlIHtOb2RlfSBLaW5kXG4gICAqICAgTm9kZSB0eXBlLlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqICAgQ29udGV4dC5cbiAgICogQHBhcmFtIHtLaW5kfSBub2RlXG4gICAqICAgTm9kZSB0byBlbnRlci5cbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogICBDb3JyZXNwb25kaW5nIHRva2VuLlxuICAgKiBAcGFyYW0ge09uRW50ZXJFcnJvciB8IHVuZGVmaW5lZH0gW2Vycm9ySGFuZGxlcl1cbiAgICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhpcyB0b2tlbiBpcyBvcGVuLCBidXQgaXQgaXMgY2xvc2VkIGJ5IHNvbWV0aGluZyBlbHNlLlxuICAgKiBAcmV0dXJucyB7S2luZH1cbiAgICogICBUaGUgZ2l2ZW4gbm9kZS5cbiAgICovXG4gIGZ1bmN0aW9uIGVudGVyKG5vZGUsIHRva2VuLCBlcnJvckhhbmRsZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQocGFyZW50LCAnZXhwZWN0ZWQgYHBhcmVudGAnKVxuICAgIGFzc2VydCgnY2hpbGRyZW4nIGluIHBhcmVudCwgJ2V4cGVjdGVkIGBwYXJlbnRgJylcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBBc3N1bWUgYE5vZGVgIGNhbiBleGlzdCBhcyBhIGNoaWxkIG9mIGBwYXJlbnRgLlxuICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpXG4gICAgdGhpcy5zdGFjay5wdXNoKG5vZGUpXG4gICAgdGhpcy50b2tlblN0YWNrLnB1c2goW3Rva2VuLCBlcnJvckhhbmRsZXJdKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBlbmRgIHdpbGwgYmUgcGF0Y2hlZCBsYXRlci5cbiAgICBub2RlLnBvc2l0aW9uID0ge3N0YXJ0OiBwb2ludCh0b2tlbi5zdGFydCl9XG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjbG9zZXIgaGFuZGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge0hhbmRsZX0gW2FuZF1cbiAgICogICBPcHRpb25hbCBmdW5jdGlvbiB0byBhbHNvIHJ1bi5cbiAgICogQHJldHVybnMge0hhbmRsZX1cbiAgICogICBIYW5kbGUuXG4gICAqL1xuICBmdW5jdGlvbiBjbG9zZXIoYW5kKSB7XG4gICAgcmV0dXJuIGNsb3NlXG5cbiAgICAvKipcbiAgICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9zZSh0b2tlbikge1xuICAgICAgaWYgKGFuZCkgYW5kLmNhbGwodGhpcywgdG9rZW4pXG4gICAgICBleGl0LmNhbGwodGhpcywgdG9rZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogICBDb250ZXh0LlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiAgIENvcnJlc3BvbmRpbmcgdG9rZW4uXG4gICAqIEBwYXJhbSB7T25FeGl0RXJyb3IgfCB1bmRlZmluZWR9IFtvbkV4aXRFcnJvcl1cbiAgICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW5vdGhlciB0b2tlbiBpcyBvcGVuLlxuICAgKiBAcmV0dXJucyB7Tm9kZX1cbiAgICogICBUaGUgY2xvc2VkIG5vZGUuXG4gICAqL1xuICBmdW5jdGlvbiBleGl0KHRva2VuLCBvbkV4aXRFcnJvcikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrLnBvcCgpXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBgbm9kZWAnKVxuICAgIGNvbnN0IG9wZW4gPSB0aGlzLnRva2VuU3RhY2sucG9wKClcblxuICAgIGlmICghb3Blbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGNsb3NlIGAnICtcbiAgICAgICAgICB0b2tlbi50eXBlICtcbiAgICAgICAgICAnYCAoJyArXG4gICAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe3N0YXJ0OiB0b2tlbi5zdGFydCwgZW5kOiB0b2tlbi5lbmR9KSArXG4gICAgICAgICAgJyk6IGl04oCZcyBub3Qgb3BlbidcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKG9wZW5bMF0udHlwZSAhPT0gdG9rZW4udHlwZSkge1xuICAgICAgaWYgKG9uRXhpdEVycm9yKSB7XG4gICAgICAgIG9uRXhpdEVycm9yLmNhbGwodGhpcywgdG9rZW4sIG9wZW5bMF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gb3BlblsxXSB8fCBkZWZhdWx0T25FcnJvclxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgdG9rZW4sIG9wZW5bMF0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgYXNzZXJ0KG5vZGUudHlwZSAhPT0gJ2ZyYWdtZW50JywgJ3VuZXhwZWN0ZWQgZnJhZ21lbnQgYGV4aXRgZWQnKVxuICAgIGFzc2VydChub2RlLnBvc2l0aW9uLCAnZXhwZWN0ZWQgYHBvc2l0aW9uYCB0byBiZSBkZWZpbmVkJylcbiAgICBub2RlLnBvc2l0aW9uLmVuZCA9IHBvaW50KHRva2VuLmVuZClcbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcodGhpcy5zdGFjay5wb3AoKSlcbiAgfVxuXG4gIC8vXG4gIC8vIEhhbmRsZXJzLlxuICAvL1xuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmVudGVybGlzdG9yZGVyZWQoKSB7XG4gICAgc2V0RGF0YSgnZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmVudGVybGlzdGl0ZW12YWx1ZSh0b2tlbikge1xuICAgIGlmIChnZXREYXRhKCdleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUnKSkge1xuICAgICAgY29uc3QgYW5jZXN0b3IgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMl1cbiAgICAgIGFzc2VydChhbmNlc3RvciwgJ2V4cGVjdGVkIG5vZGVzIG9uIHN0YWNrJylcbiAgICAgIGFzc2VydChhbmNlc3Rvci50eXBlID09PSAnbGlzdCcsICdleHBlY3RlZCBsaXN0IG9uIHN0YWNrJylcbiAgICAgIGFuY2VzdG9yLnN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KFxuICAgICAgICB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKSxcbiAgICAgICAgY29uc3RhbnRzLm51bWVyaWNCYXNlRGVjaW1hbFxuICAgICAgKVxuICAgICAgc2V0RGF0YSgnZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlJylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZGZlbmNlaW5mbygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChub2RlLnR5cGUgPT09ICdjb2RlJywgJ2V4cGVjdGVkIGNvZGUgb24gc3RhY2snKVxuICAgIG5vZGUubGFuZyA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlZmVuY2VkZmVuY2VtZXRhKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2NvZGUnLCAnZXhwZWN0ZWQgY29kZSBvbiBzdGFjaycpXG4gICAgbm9kZS5tZXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVmZW5jZWRmZW5jZSgpIHtcbiAgICAvLyBFeGl0IGlmIHRoaXMgaXMgdGhlIGNsb3NpbmcgZmVuY2UuXG4gICAgaWYgKGdldERhdGEoJ2Zsb3dDb2RlSW5zaWRlJykpIHJldHVyblxuICAgIHRoaXMuYnVmZmVyKClcbiAgICBzZXREYXRhKCdmbG93Q29kZUluc2lkZScsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChub2RlLnR5cGUgPT09ICdjb2RlJywgJ2V4cGVjdGVkIGNvZGUgb24gc3RhY2snKVxuXG4gICAgbm9kZS52YWx1ZSA9IGRhdGEucmVwbGFjZSgvXihcXHI/XFxufFxccil8KFxccj9cXG58XFxyKSQvZywgJycpXG4gICAgc2V0RGF0YSgnZmxvd0NvZGVJbnNpZGUnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVpbmRlbnRlZCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChub2RlLnR5cGUgPT09ICdjb2RlJywgJ2V4cGVjdGVkIGNvZGUgb24gc3RhY2snKVxuXG4gICAgbm9kZS52YWx1ZSA9IGRhdGEucmVwbGFjZSgvKFxccj9cXG58XFxyKSQvZywgJycpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0ZGVmaW5pdGlvbmxhYmVsc3RyaW5nKHRva2VuKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2RlZmluaXRpb24nLCAnZXhwZWN0ZWQgZGVmaW5pdGlvbiBvbiBzdGFjaycpXG5cbiAgICBub2RlLmxhYmVsID0gbGFiZWxcbiAgICBub2RlLmlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICApLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRkZWZpbml0aW9udGl0bGVzdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQobm9kZS50eXBlID09PSAnZGVmaW5pdGlvbicsICdleHBlY3RlZCBkZWZpbml0aW9uIG9uIHN0YWNrJylcblxuICAgIG5vZGUudGl0bGUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0ZGVmaW5pdGlvbmRlc3RpbmF0aW9uc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2RlZmluaXRpb24nLCAnZXhwZWN0ZWQgZGVmaW5pdGlvbiBvbiBzdGFjaycpXG5cbiAgICBub2RlLnVybCA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRhdHhoZWFkaW5nc2VxdWVuY2UodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQobm9kZS50eXBlID09PSAnaGVhZGluZycsICdleHBlY3RlZCBoZWFkaW5nIG9uIHN0YWNrJylcblxuICAgIGlmICghbm9kZS5kZXB0aCkge1xuICAgICAgY29uc3QgZGVwdGggPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKS5sZW5ndGhcblxuICAgICAgYXNzZXJ0KFxuICAgICAgICBkZXB0aCA9PT0gMSB8fFxuICAgICAgICAgIGRlcHRoID09PSAyIHx8XG4gICAgICAgICAgZGVwdGggPT09IDMgfHxcbiAgICAgICAgICBkZXB0aCA9PT0gNCB8fFxuICAgICAgICAgIGRlcHRoID09PSA1IHx8XG4gICAgICAgICAgZGVwdGggPT09IDYsXG4gICAgICAgICdleHBlY3RlZCBgZGVwdGhgIGJldHdlZW4gYDFgIGFuZCBgNmAnXG4gICAgICApXG5cbiAgICAgIG5vZGUuZGVwdGggPSBkZXB0aFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5ndGV4dCgpIHtcbiAgICBzZXREYXRhKCdzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5nbGluZXNlcXVlbmNlKHRva2VuKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2hlYWRpbmcnLCAnZXhwZWN0ZWQgaGVhZGluZyBvbiBzdGFjaycpXG5cbiAgICBub2RlLmRlcHRoID1cbiAgICAgIHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pLmNoYXJDb2RlQXQoMCkgPT09IGNvZGVzLmVxdWFsc1RvID8gMSA6IDJcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5nKCkge1xuICAgIHNldERhdGEoJ3NldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25lbnRlcmRhdGEodG9rZW4pIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQoJ2NoaWxkcmVuJyBpbiBub2RlLCAnZXhwZWN0ZWQgcGFyZW50IG9uIHN0YWNrJylcblxuICAgIGxldCB0YWlsID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG5cbiAgICBpZiAoIXRhaWwgfHwgdGFpbC50eXBlICE9PSAndGV4dCcpIHtcbiAgICAgIC8vIEFkZCBhIG5ldyB0ZXh0IG5vZGUuXG4gICAgICB0YWlsID0gdGV4dCgpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZeKAmWxsIGFkZCBgZW5kYCBsYXRlci5cbiAgICAgIHRhaWwucG9zaXRpb24gPSB7c3RhcnQ6IHBvaW50KHRva2VuLnN0YXJ0KX1cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEFzc3VtZSBgcGFyZW50YCBhY2NlcHRzIGB0ZXh0YC5cbiAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaCh0YWlsKVxuICAgIH1cblxuICAgIHRoaXMuc3RhY2sucHVzaCh0YWlsKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0ZGF0YSh0b2tlbikge1xuICAgIGNvbnN0IHRhaWwgPSB0aGlzLnN0YWNrLnBvcCgpXG4gICAgYXNzZXJ0KHRhaWwsICdleHBlY3RlZCBhIGBub2RlYCB0byBiZSBvbiB0aGUgc3RhY2snKVxuICAgIGFzc2VydCgndmFsdWUnIGluIHRhaWwsICdleHBlY3RlZCBhIGBsaXRlcmFsYCB0byBiZSBvbiB0aGUgc3RhY2snKVxuICAgIGFzc2VydCh0YWlsLnBvc2l0aW9uLCAnZXhwZWN0ZWQgYG5vZGVgIHRvIGhhdmUgYW4gb3BlbiBwb3NpdGlvbicpXG4gICAgdGFpbC52YWx1ZSArPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0bGluZWVuZGluZyh0b2tlbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQoY29udGV4dCwgJ2V4cGVjdGVkIGBub2RlYCcpXG5cbiAgICAvLyBJZiB3ZeKAmXJlIGF0IGEgaGFyZCBicmVhaywgaW5jbHVkZSB0aGUgbGluZSBlbmRpbmcgaW4gdGhlcmUuXG4gICAgaWYgKGdldERhdGEoJ2F0SGFyZEJyZWFrJykpIHtcbiAgICAgIGFzc2VydCgnY2hpbGRyZW4nIGluIGNvbnRleHQsICdleHBlY3RlZCBgcGFyZW50YCcpXG4gICAgICBjb25zdCB0YWlsID0gY29udGV4dC5jaGlsZHJlbltjb250ZXh0LmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICBhc3NlcnQodGFpbC5wb3NpdGlvbiwgJ2V4cGVjdGVkIHRhaWwgdG8gaGF2ZSBhIHN0YXJ0aW5nIHBvc2l0aW9uJylcbiAgICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICAgICAgc2V0RGF0YSgnYXRIYXJkQnJlYWsnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWdldERhdGEoJ3NldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcnKSAmJlxuICAgICAgY29uZmlnLmNhbkNvbnRhaW5Fb2xzLmluY2x1ZGVzKGNvbnRleHQudHlwZSlcbiAgICApIHtcbiAgICAgIG9uZW50ZXJkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgICBvbmV4aXRkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aGFyZGJyZWFrKCkge1xuICAgIHNldERhdGEoJ2F0SGFyZEJyZWFrJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGh0bWxmbG93KCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2h0bWwnLCAnZXhwZWN0ZWQgaHRtbCBvbiBzdGFjaycpXG5cbiAgICBub2RlLnZhbHVlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aHRtbHRleHQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQobm9kZS50eXBlID09PSAnaHRtbCcsICdleHBlY3RlZCBodG1sIG9uIHN0YWNrJylcblxuICAgIG5vZGUudmFsdWUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRjb2RldGV4dCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChub2RlLnR5cGUgPT09ICdpbmxpbmVDb2RlJywgJ2V4cGVjdGVkIGlubGluZSBjb2RlIG9uIHN0YWNrJylcblxuICAgIG5vZGUudmFsdWUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRsaW5rKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChub2RlLnR5cGUgPT09ICdsaW5rJywgJ2V4cGVjdGVkIGxpbmsgb24gc3RhY2snKVxuXG4gICAgLy8gTm90ZTogdGhlcmUgYXJlIGFsc28gYGlkZW50aWZpZXJgIGFuZCBgbGFiZWxgIGZpZWxkcyBvbiB0aGlzIGxpbmsgbm9kZSFcbiAgICAvLyBUaGVzZSBhcmUgdXNlZCAvIGNsZWFuZWQgaGVyZS5cblxuICAgIC8vIFRvIGRvOiBjbGVhbi5cbiAgICBpZiAoZ2V0RGF0YSgnaW5SZWZlcmVuY2UnKSkge1xuICAgICAgLyoqIEB0eXBlIHtSZWZlcmVuY2VUeXBlfSAqL1xuICAgICAgY29uc3QgcmVmZXJlbmNlVHlwZSA9IGdldERhdGEoJ3JlZmVyZW5jZVR5cGUnKSB8fCAnc2hvcnRjdXQnXG5cbiAgICAgIG5vZGUudHlwZSArPSAnUmVmZXJlbmNlJ1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUudXJsXG4gICAgICBkZWxldGUgbm9kZS50aXRsZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5pZGVudGlmaWVyXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5sYWJlbFxuICAgIH1cblxuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aW1hZ2UoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2ltYWdlJywgJ2V4cGVjdGVkIGltYWdlIG9uIHN0YWNrJylcblxuICAgIC8vIE5vdGU6IHRoZXJlIGFyZSBhbHNvIGBpZGVudGlmaWVyYCBhbmQgYGxhYmVsYCBmaWVsZHMgb24gdGhpcyBsaW5rIG5vZGUhXG4gICAgLy8gVGhlc2UgYXJlIHVzZWQgLyBjbGVhbmVkIGhlcmUuXG5cbiAgICAvLyBUbyBkbzogY2xlYW4uXG4gICAgaWYgKGdldERhdGEoJ2luUmVmZXJlbmNlJykpIHtcbiAgICAgIC8qKiBAdHlwZSB7UmVmZXJlbmNlVHlwZX0gKi9cbiAgICAgIGNvbnN0IHJlZmVyZW5jZVR5cGUgPSBnZXREYXRhKCdyZWZlcmVuY2VUeXBlJykgfHwgJ3Nob3J0Y3V0J1xuXG4gICAgICBub2RlLnR5cGUgKz0gJ1JlZmVyZW5jZSdcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIG5vZGUucmVmZXJlbmNlVHlwZSA9IHJlZmVyZW5jZVR5cGVcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLnVybFxuICAgICAgZGVsZXRlIG5vZGUudGl0bGVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUuaWRlbnRpZmllclxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUubGFiZWxcbiAgICB9XG5cbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxhYmVsdGV4dCh0b2tlbikge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgY29uc3QgYW5jZXN0b3IgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMl1cbiAgICBhc3NlcnQoYW5jZXN0b3IsICdleHBlY3RlZCBhbmNlc3RvciBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KFxuICAgICAgYW5jZXN0b3IudHlwZSA9PT0gJ2ltYWdlJyB8fCBhbmNlc3Rvci50eXBlID09PSAnbGluaycsXG4gICAgICAnZXhwZWN0ZWQgaW1hZ2Ugb3IgbGluayBvbiBzdGFjaydcbiAgICApXG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBzdGFzaCB0aGlzIG9uIHRoZSBub2RlLCBhcyBpdCBtaWdodCBiZWNvbWUgYSByZWZlcmVuY2VcbiAgICAvLyBsYXRlci5cbiAgICBhbmNlc3Rvci5sYWJlbCA9IGRlY29kZVN0cmluZyhzdHJpbmcpXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc2FtZSBhcyBhYm92ZS5cbiAgICBhbmNlc3Rvci5pZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihzdHJpbmcpLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxhYmVsKCkge1xuICAgIGNvbnN0IGZyYWdtZW50ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KGZyYWdtZW50LCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KGZyYWdtZW50LnR5cGUgPT09ICdmcmFnbWVudCcsICdleHBlY3RlZCBmcmFnbWVudCBvbiBzdGFjaycpXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KFxuICAgICAgbm9kZS50eXBlID09PSAnaW1hZ2UnIHx8IG5vZGUudHlwZSA9PT0gJ2xpbmsnLFxuICAgICAgJ2V4cGVjdGVkIGltYWdlIG9yIGxpbmsgb24gc3RhY2snXG4gICAgKVxuXG4gICAgLy8gQXNzdW1lIGEgcmVmZXJlbmNlLlxuICAgIHNldERhdGEoJ2luUmVmZXJlbmNlJywgdHJ1ZSlcblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgLyoqIEB0eXBlIHtBcnJheTxTdGF0aWNQaHJhc2luZ0NvbnRlbnQ+fSAqL1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogQXNzdW1lIHN0YXRpYyBwaHJhc2luZyBjb250ZW50LlxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBmcmFnbWVudC5jaGlsZHJlblxuXG4gICAgICBub2RlLmNoaWxkcmVuID0gY2hpbGRyZW5cbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5hbHQgPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlc291cmNlZGVzdGluYXRpb25zdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQoXG4gICAgICBub2RlLnR5cGUgPT09ICdpbWFnZScgfHwgbm9kZS50eXBlID09PSAnbGluaycsXG4gICAgICAnZXhwZWN0ZWQgaW1hZ2Ugb3IgbGluayBvbiBzdGFjaydcbiAgICApXG4gICAgbm9kZS51cmwgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZXNvdXJjZXRpdGxlc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KFxuICAgICAgbm9kZS50eXBlID09PSAnaW1hZ2UnIHx8IG5vZGUudHlwZSA9PT0gJ2xpbmsnLFxuICAgICAgJ2V4cGVjdGVkIGltYWdlIG9yIGxpbmsgb24gc3RhY2snXG4gICAgKVxuICAgIG5vZGUudGl0bGUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZXNvdXJjZSgpIHtcbiAgICBzZXREYXRhKCdpblJlZmVyZW5jZScpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmVudGVycmVmZXJlbmNlKCkge1xuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnLCAnY29sbGFwc2VkJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlZmVyZW5jZXN0cmluZyh0b2tlbikge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBhc3NlcnQobm9kZSwgJ2V4cGVjdGVkIG5vZGUgb24gc3RhY2snKVxuICAgIGFzc2VydChcbiAgICAgIG5vZGUudHlwZSA9PT0gJ2ltYWdlJyB8fCBub2RlLnR5cGUgPT09ICdsaW5rJyxcbiAgICAgICdleHBlY3RlZCBpbWFnZSByZWZlcmVuY2Ugb3IgbGluayByZWZlcmVuY2Ugb24gc3RhY2snXG4gICAgKVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc3Rhc2ggdGhpcyBvbiB0aGUgbm9kZSwgYXMgaXQgbWlnaHQgYmVjb21lIGEgcmVmZXJlbmNlXG4gICAgLy8gbGF0ZXIuXG4gICAgbm9kZS5sYWJlbCA9IGxhYmVsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc2FtZSBhcyBhYm92ZS5cbiAgICBub2RlLmlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICApLnRvTG93ZXJDYXNlKClcbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJywgJ2Z1bGwnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0Y2hhcmFjdGVycmVmZXJlbmNlbWFya2VyKHRva2VuKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgdG9rZW4udHlwZSA9PT0gJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMnIHx8XG4gICAgICAgIHRva2VuLnR5cGUgPT09ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCdcbiAgICApXG4gICAgc2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScsIHRva2VuLnR5cGUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y2hhcmFjdGVycmVmZXJlbmNldmFsdWUodG9rZW4pIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICBjb25zdCB0eXBlID0gZ2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScpXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IHZhbHVlXG5cbiAgICBpZiAodHlwZSkge1xuICAgICAgdmFsdWUgPSBkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKFxuICAgICAgICBkYXRhLFxuICAgICAgICB0eXBlID09PSB0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljXG4gICAgICAgICAgPyBjb25zdGFudHMubnVtZXJpY0Jhc2VEZWNpbWFsXG4gICAgICAgICAgOiBjb25zdGFudHMubnVtZXJpY0Jhc2VIZXhhZGVjaW1hbFxuICAgICAgKVxuICAgICAgc2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGRhdGEpXG4gICAgICBhc3NlcnQocmVzdWx0ICE9PSBmYWxzZSwgJ2V4cGVjdGVkIHJlZmVyZW5jZSB0byBkZWNvZGUnKVxuICAgICAgdmFsdWUgPSByZXN1bHRcbiAgICB9XG5cbiAgICBjb25zdCB0YWlsID0gdGhpcy5zdGFjay5wb3AoKVxuICAgIGFzc2VydCh0YWlsLCAnZXhwZWN0ZWQgYG5vZGVgJylcbiAgICBhc3NlcnQodGFpbC5wb3NpdGlvbiwgJ2V4cGVjdGVkIGBub2RlLnBvc2l0aW9uYCcpXG4gICAgYXNzZXJ0KCd2YWx1ZScgaW4gdGFpbCwgJ2V4cGVjdGVkIGBub2RlLnZhbHVlYCcpXG4gICAgdGFpbC52YWx1ZSArPSB2YWx1ZVxuICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGF1dG9saW5rcHJvdG9jb2wodG9rZW4pIHtcbiAgICBvbmV4aXRkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGFzc2VydChub2RlLCAnZXhwZWN0ZWQgbm9kZSBvbiBzdGFjaycpXG4gICAgYXNzZXJ0KG5vZGUudHlwZSA9PT0gJ2xpbmsnLCAnZXhwZWN0ZWQgbGluayBvbiBzdGFjaycpXG5cbiAgICBub2RlLnVybCA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0YXV0b2xpbmtlbWFpbCh0b2tlbikge1xuICAgIG9uZXhpdGRhdGEuY2FsbCh0aGlzLCB0b2tlbilcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgYXNzZXJ0KG5vZGUsICdleHBlY3RlZCBub2RlIG9uIHN0YWNrJylcbiAgICBhc3NlcnQobm9kZS50eXBlID09PSAnbGluaycsICdleHBlY3RlZCBsaW5rIG9uIHN0YWNrJylcblxuICAgIG5vZGUudXJsID0gJ21haWx0bzonICsgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgfVxuXG4gIC8vXG4gIC8vIENyZWF0ZXJzLlxuICAvL1xuXG4gIC8qKiBAcmV0dXJucyB7QmxvY2txdW90ZX0gKi9cbiAgZnVuY3Rpb24gYmxvY2tRdW90ZSgpIHtcbiAgICByZXR1cm4ge3R5cGU6ICdibG9ja3F1b3RlJywgY2hpbGRyZW46IFtdfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtDb2RlfSAqL1xuICBmdW5jdGlvbiBjb2RlRmxvdygpIHtcbiAgICByZXR1cm4ge3R5cGU6ICdjb2RlJywgbGFuZzogbnVsbCwgbWV0YTogbnVsbCwgdmFsdWU6ICcnfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtJbmxpbmVDb2RlfSAqL1xuICBmdW5jdGlvbiBjb2RlVGV4dCgpIHtcbiAgICByZXR1cm4ge3R5cGU6ICdpbmxpbmVDb2RlJywgdmFsdWU6ICcnfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtEZWZpbml0aW9ufSAqL1xuICBmdW5jdGlvbiBkZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZGVmaW5pdGlvbicsXG4gICAgICBpZGVudGlmaWVyOiAnJyxcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgdGl0bGU6IG51bGwsXG4gICAgICB1cmw6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtFbXBoYXNpc30gKi9cbiAgZnVuY3Rpb24gZW1waGFzaXMoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAnZW1waGFzaXMnLCBjaGlsZHJlbjogW119XG4gIH1cblxuICAvKiogQHJldHVybnMge0hlYWRpbmd9ICovXG4gIGZ1bmN0aW9uIGhlYWRpbmcoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgZGVwdGhgIHdpbGwgYmUgc2V0IGxhdGVyLlxuICAgIHJldHVybiB7dHlwZTogJ2hlYWRpbmcnLCBkZXB0aDogdW5kZWZpbmVkLCBjaGlsZHJlbjogW119XG4gIH1cblxuICAvKiogQHJldHVybnMge0JyZWFrfSAqL1xuICBmdW5jdGlvbiBoYXJkQnJlYWsoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAnYnJlYWsnfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtIVE1MfSAqL1xuICBmdW5jdGlvbiBodG1sKCkge1xuICAgIHJldHVybiB7dHlwZTogJ2h0bWwnLCB2YWx1ZTogJyd9XG4gIH1cblxuICAvKiogQHJldHVybnMge0ltYWdlfSAqL1xuICBmdW5jdGlvbiBpbWFnZSgpIHtcbiAgICByZXR1cm4ge3R5cGU6ICdpbWFnZScsIHRpdGxlOiBudWxsLCB1cmw6ICcnLCBhbHQ6IG51bGx9XG4gIH1cblxuICAvKiogQHJldHVybnMge0xpbmt9ICovXG4gIGZ1bmN0aW9uIGxpbmsoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAnbGluaycsIHRpdGxlOiBudWxsLCB1cmw6ICcnLCBjaGlsZHJlbjogW119XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogQHJldHVybnMge0xpc3R9XG4gICAqL1xuICBmdW5jdGlvbiBsaXN0KHRva2VuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdsaXN0JyxcbiAgICAgIG9yZGVyZWQ6IHRva2VuLnR5cGUgPT09ICdsaXN0T3JkZXJlZCcsXG4gICAgICBzdGFydDogbnVsbCxcbiAgICAgIHNwcmVhZDogdG9rZW4uX3NwcmVhZCxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiBAcmV0dXJucyB7TGlzdEl0ZW19XG4gICAqL1xuICBmdW5jdGlvbiBsaXN0SXRlbSh0b2tlbikge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgICAgc3ByZWFkOiB0b2tlbi5fc3ByZWFkLFxuICAgICAgY2hlY2tlZDogbnVsbCxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UGFyYWdyYXBofSAqL1xuICBmdW5jdGlvbiBwYXJhZ3JhcGgoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAncGFyYWdyYXBoJywgY2hpbGRyZW46IFtdfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtTdHJvbmd9ICovXG4gIGZ1bmN0aW9uIHN0cm9uZygpIHtcbiAgICByZXR1cm4ge3R5cGU6ICdzdHJvbmcnLCBjaGlsZHJlbjogW119XG4gIH1cblxuICAvKiogQHJldHVybnMge1RleHR9ICovXG4gIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiAndGV4dCcsIHZhbHVlOiAnJ31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VGhlbWF0aWNCcmVha30gKi9cbiAgZnVuY3Rpb24gdGhlbWF0aWNCcmVhaygpIHtcbiAgICByZXR1cm4ge3R5cGU6ICd0aGVtYXRpY0JyZWFrJ31cbiAgfVxufVxuXG4vKipcbiAqIENvcHkgYSBwb2ludC1saWtlIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7UG9pbnR9IGRcbiAqICAgUG9pbnQtbGlrZSB2YWx1ZS5cbiAqIEByZXR1cm5zIHtQb2ludH1cbiAqICAgdW5pc3QgcG9pbnQuXG4gKi9cbmZ1bmN0aW9uIHBvaW50KGQpIHtcbiAgcmV0dXJuIHtsaW5lOiBkLmxpbmUsIGNvbHVtbjogZC5jb2x1bW4sIG9mZnNldDogZC5vZmZzZXR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb25maWd9IGNvbWJpbmVkXG4gKiBAcGFyYW0ge0FycmF5PEV4dGVuc2lvbiB8IEFycmF5PEV4dGVuc2lvbj4+fSBleHRlbnNpb25zXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlKGNvbWJpbmVkLCBleHRlbnNpb25zKSB7XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBleHRlbnNpb25zLmxlbmd0aCkge1xuICAgIGNvbnN0IHZhbHVlID0gZXh0ZW5zaW9uc1tpbmRleF1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uZmlndXJlKGNvbWJpbmVkLCB2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgZXh0ZW5zaW9uKGNvbWJpbmVkLCB2YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbmZpZ30gY29tYmluZWRcbiAqIEBwYXJhbSB7RXh0ZW5zaW9ufSBleHRlbnNpb25cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBleHRlbnNpb24oY29tYmluZWQsIGV4dGVuc2lvbikge1xuICAvKiogQHR5cGUge2tleW9mIEV4dGVuc2lvbn0gKi9cbiAgbGV0IGtleVxuXG4gIGZvciAoa2V5IGluIGV4dGVuc2lvbikge1xuICAgIGlmIChvd24uY2FsbChleHRlbnNpb24sIGtleSkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdjYW5Db250YWluRW9scycpIHtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25ba2V5XVxuICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICBjb21iaW5lZFtrZXldLnB1c2goLi4ucmlnaHQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndHJhbnNmb3JtcycpIHtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25ba2V5XVxuICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICBjb21iaW5lZFtrZXldLnB1c2goLi4ucmlnaHQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW50ZXInIHx8IGtleSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2tleV1cbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihjb21iaW5lZFtrZXldLCByaWdodClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiogQHR5cGUge09uRW50ZXJFcnJvcn0gKi9cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGxlZnQsIHJpZ2h0KSB7XG4gIGlmIChsZWZ0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBjbG9zZSBgJyArXG4gICAgICAgIGxlZnQudHlwZSArXG4gICAgICAgICdgICgnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe3N0YXJ0OiBsZWZ0LnN0YXJ0LCBlbmQ6IGxlZnQuZW5kfSkgK1xuICAgICAgICAnKTogYSBkaWZmZXJlbnQgdG9rZW4gKGAnICtcbiAgICAgICAgcmlnaHQudHlwZSArXG4gICAgICAgICdgLCAnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe3N0YXJ0OiByaWdodC5zdGFydCwgZW5kOiByaWdodC5lbmR9KSArXG4gICAgICAgICcpIGlzIG9wZW4nXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgY2xvc2UgZG9jdW1lbnQsIGEgdG9rZW4gKGAnICtcbiAgICAgICAgcmlnaHQudHlwZSArXG4gICAgICAgICdgLCAnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe3N0YXJ0OiByaWdodC5zdGFydCwgZW5kOiByaWdodC5lbmR9KSArXG4gICAgICAgICcpIGlzIHN0aWxsIG9wZW4nXG4gICAgKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdast-util-from-markdown/dev/lib/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mdast-util-to-string/lib/index.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/mdast-util-to-string/lib/index.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"toString\": () => (/* binding */ toString)\n/* harmony export */ });\n/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nfunction toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21kYXN0LXV0aWwtdG8tc3RyaW5nL2xpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxhQUFhLDhDQUE4QztBQUMzRDtBQUNBO0FBQ0E7QUFDQSxjQUFjLDRCQUE0QjtBQUMxQztBQUNBLGNBQWMsNEJBQTRCO0FBQzFDO0FBQ0E7O0FBRUEsV0FBVyxTQUFTO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsNEJBQTRCO0FBQ3ZDO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxhQUFhLGVBQWU7QUFDNUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1zdHJpbmcvbGliL2luZGV4LmpzPzI3YTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJvb3R8aW1wb3J0KCdtZGFzdCcpLkNvbnRlbnR9IE5vZGVcbiAqXG4gKiBAdHlwZWRlZiBPcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24gKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtpbmNsdWRlSW1hZ2VBbHQ9dHJ1ZV1cbiAqICAgV2hldGhlciB0byB1c2UgYGFsdGAgZm9yIGBpbWFnZWBzLlxuICogQHByb3BlcnR5IHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2luY2x1ZGVIdG1sPXRydWVdXG4gKiAgIFdoZXRoZXIgdG8gdXNlIGB2YWx1ZWAgb2YgSFRNTC5cbiAqL1xuXG4vKiogQHR5cGUge09wdGlvbnN9ICovXG5jb25zdCBlbXB0eU9wdGlvbnMgPSB7fVxuXG4vKipcbiAqIEdldCB0aGUgdGV4dCBjb250ZW50IG9mIGEgbm9kZSBvciBsaXN0IG9mIG5vZGVzLlxuICpcbiAqIFByZWZlcnMgdGhlIG5vZGXigJlzIHBsYWluLXRleHQgZmllbGRzLCBvdGhlcndpc2Ugc2VyaWFsaXplcyBpdHMgY2hpbGRyZW4sXG4gKiBhbmQgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGFycmF5LCBzZXJpYWxpemUgdGhlIG5vZGVzIGluIGl0LlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgVGhpbmcgdG8gc2VyaWFsaXplLCB0eXBpY2FsbHkgYE5vZGVgLlxuICogQHBhcmFtIHtPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gKiAgIENvbmZpZ3VyYXRpb24gKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNlcmlhbGl6ZWQgYHZhbHVlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHNldHRpbmdzID0gb3B0aW9ucyB8fCBlbXB0eU9wdGlvbnNcbiAgY29uc3QgaW5jbHVkZUltYWdlQWx0ID1cbiAgICB0eXBlb2Ygc2V0dGluZ3MuaW5jbHVkZUltYWdlQWx0ID09PSAnYm9vbGVhbidcbiAgICAgID8gc2V0dGluZ3MuaW5jbHVkZUltYWdlQWx0XG4gICAgICA6IHRydWVcbiAgY29uc3QgaW5jbHVkZUh0bWwgPVxuICAgIHR5cGVvZiBzZXR0aW5ncy5pbmNsdWRlSHRtbCA9PT0gJ2Jvb2xlYW4nID8gc2V0dGluZ3MuaW5jbHVkZUh0bWwgOiB0cnVlXG5cbiAgcmV0dXJuIG9uZSh2YWx1ZSwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbClcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvciBzZXZlcmFsIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgVGhpbmcgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlSW1hZ2VBbHRcbiAqICAgSW5jbHVkZSBpbWFnZSBgYWx0YHMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVIdG1sXG4gKiAgIEluY2x1ZGUgSFRNTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNlcmlhbGl6ZWQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gb25lKHZhbHVlLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKSB7XG4gIGlmIChub2RlKHZhbHVlKSkge1xuICAgIGlmICgndmFsdWUnIGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHlwZSA9PT0gJ2h0bWwnICYmICFpbmNsdWRlSHRtbCA/ICcnIDogdmFsdWUudmFsdWVcbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZUltYWdlQWx0ICYmICdhbHQnIGluIHZhbHVlICYmIHZhbHVlLmFsdCkge1xuICAgICAgcmV0dXJuIHZhbHVlLmFsdFxuICAgIH1cblxuICAgIGlmICgnY2hpbGRyZW4nIGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYWxsKHZhbHVlLmNoaWxkcmVuLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBhbGwodmFsdWUsIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpXG4gIH1cblxuICByZXR1cm4gJydcbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgYSBsaXN0IG9mIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IHZhbHVlc1xuICogICBUaGluZyB0byBzZXJpYWxpemUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVJbWFnZUFsdFxuICogICBJbmNsdWRlIGltYWdlIGBhbHRgcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUh0bWxcbiAqICAgSW5jbHVkZSBIVE1MLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgU2VyaWFsaXplZCBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gYWxsKHZhbHVlcywgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbCkge1xuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IHJlc3VsdCA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IG9uZSh2YWx1ZXNbaW5kZXhdLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGB2YWx1ZWAgbG9va3MgbGlrZSBhIG5vZGUuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICBUaGluZy5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBOb2RlfVxuICogICBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBub2RlLlxuICovXG5mdW5jdGlvbiBub2RlKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mdast-util-to-string/lib/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/c4Diagram-9cddb37f.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/c4Diagram-9cddb37f.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDrawCommon-f26cad39.js */ \"../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 6], $V1 = [1, 7], $V2 = [1, 8], $V3 = [1, 9], $V4 = [1, 16], $V5 = [1, 11], $V6 = [1, 12], $V7 = [1, 13], $V8 = [1, 14], $V9 = [1, 15], $Va = [1, 27], $Vb = [1, 33], $Vc = [1, 34], $Vd = [1, 35], $Ve = [1, 36], $Vf = [1, 37], $Vg = [1, 72], $Vh = [1, 73], $Vi = [1, 74], $Vj = [1, 75], $Vk = [1, 76], $Vl = [1, 77], $Vm = [1, 78], $Vn = [1, 38], $Vo = [1, 39], $Vp = [1, 40], $Vq = [1, 41], $Vr = [1, 42], $Vs = [1, 43], $Vt = [1, 44], $Vu = [1, 45], $Vv = [1, 46], $Vw = [1, 47], $Vx = [1, 48], $Vy = [1, 49], $Vz = [1, 50], $VA = [1, 51], $VB = [1, 52], $VC = [1, 53], $VD = [1, 54], $VE = [1, 55], $VF = [1, 56], $VG = [1, 57], $VH = [1, 59], $VI = [1, 60], $VJ = [1, 61], $VK = [1, 62], $VL = [1, 63], $VM = [1, 64], $VN = [1, 65], $VO = [1, 66], $VP = [1, 67], $VQ = [1, 68], $VR = [1, 69], $VS = [24, 52], $VT = [24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84], $VU = [15, 24, 44, 46, 47, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84], $VV = [1, 94], $VW = [1, 95], $VX = [1, 96], $VY = [1, 97], $VZ = [15, 24, 52], $V_ = [7, 8, 9, 10, 18, 22, 25, 26, 27, 28], $V$ = [15, 24, 43, 52], $V01 = [15, 24, 43, 52, 86, 87, 89, 90], $V11 = [15, 43], $V21 = [44, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"directive\": 6, \"direction_tb\": 7, \"direction_bt\": 8, \"direction_rl\": 9, \"direction_lr\": 10, \"graphConfig\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \"NEWLINE\": 15, \":\": 16, \"argDirective\": 17, \"open_directive\": 18, \"type_directive\": 19, \"arg_directive\": 20, \"close_directive\": 21, \"C4_CONTEXT\": 22, \"statements\": 23, \"EOF\": 24, \"C4_CONTAINER\": 25, \"C4_COMPONENT\": 26, \"C4_DYNAMIC\": 27, \"C4_DEPLOYMENT\": 28, \"otherStatements\": 29, \"diagramStatements\": 30, \"otherStatement\": 31, \"title\": 32, \"accDescription\": 33, \"acc_title\": 34, \"acc_title_value\": 35, \"acc_descr\": 36, \"acc_descr_value\": 37, \"acc_descr_multiline_value\": 38, \"boundaryStatement\": 39, \"boundaryStartStatement\": 40, \"boundaryStopStatement\": 41, \"boundaryStart\": 42, \"LBRACE\": 43, \"ENTERPRISE_BOUNDARY\": 44, \"attributes\": 45, \"SYSTEM_BOUNDARY\": 46, \"BOUNDARY\": 47, \"CONTAINER_BOUNDARY\": 48, \"NODE\": 49, \"NODE_L\": 50, \"NODE_R\": 51, \"RBRACE\": 52, \"diagramStatement\": 53, \"PERSON\": 54, \"PERSON_EXT\": 55, \"SYSTEM\": 56, \"SYSTEM_DB\": 57, \"SYSTEM_QUEUE\": 58, \"SYSTEM_EXT\": 59, \"SYSTEM_EXT_DB\": 60, \"SYSTEM_EXT_QUEUE\": 61, \"CONTAINER\": 62, \"CONTAINER_DB\": 63, \"CONTAINER_QUEUE\": 64, \"CONTAINER_EXT\": 65, \"CONTAINER_EXT_DB\": 66, \"CONTAINER_EXT_QUEUE\": 67, \"COMPONENT\": 68, \"COMPONENT_DB\": 69, \"COMPONENT_QUEUE\": 70, \"COMPONENT_EXT\": 71, \"COMPONENT_EXT_DB\": 72, \"COMPONENT_EXT_QUEUE\": 73, \"REL\": 74, \"BIREL\": 75, \"REL_U\": 76, \"REL_D\": 77, \"REL_L\": 78, \"REL_R\": 79, \"REL_B\": 80, \"REL_INDEX\": 81, \"UPDATE_EL_STYLE\": 82, \"UPDATE_REL_STYLE\": 83, \"UPDATE_LAYOUT_CONFIG\": 84, \"attribute\": 85, \"STR\": 86, \"STR_KEY\": 87, \"STR_VALUE\": 88, \"ATTRIBUTE\": 89, \"ATTRIBUTE_EMPTY\": 90, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 7: \"direction_tb\", 8: \"direction_bt\", 9: \"direction_rl\", 10: \"direction_lr\", 15: \"NEWLINE\", 16: \":\", 18: \"open_directive\", 19: \"type_directive\", 20: \"arg_directive\", 21: \"close_directive\", 22: \"C4_CONTEXT\", 24: \"EOF\", 25: \"C4_CONTAINER\", 26: \"C4_COMPONENT\", 27: \"C4_DYNAMIC\", 28: \"C4_DEPLOYMENT\", 32: \"title\", 33: \"accDescription\", 34: \"acc_title\", 35: \"acc_title_value\", 36: \"acc_descr\", 37: \"acc_descr_value\", 38: \"acc_descr_multiline_value\", 43: \"LBRACE\", 44: \"ENTERPRISE_BOUNDARY\", 46: \"SYSTEM_BOUNDARY\", 47: \"BOUNDARY\", 48: \"CONTAINER_BOUNDARY\", 49: \"NODE\", 50: \"NODE_L\", 51: \"NODE_R\", 52: \"RBRACE\", 54: \"PERSON\", 55: \"PERSON_EXT\", 56: \"SYSTEM\", 57: \"SYSTEM_DB\", 58: \"SYSTEM_QUEUE\", 59: \"SYSTEM_EXT\", 60: \"SYSTEM_EXT_DB\", 61: \"SYSTEM_EXT_QUEUE\", 62: \"CONTAINER\", 63: \"CONTAINER_DB\", 64: \"CONTAINER_QUEUE\", 65: \"CONTAINER_EXT\", 66: \"CONTAINER_EXT_DB\", 67: \"CONTAINER_EXT_QUEUE\", 68: \"COMPONENT\", 69: \"COMPONENT_DB\", 70: \"COMPONENT_QUEUE\", 71: \"COMPONENT_EXT\", 72: \"COMPONENT_EXT_DB\", 73: \"COMPONENT_EXT_QUEUE\", 74: \"REL\", 75: \"BIREL\", 76: \"REL_U\", 77: \"REL_D\", 78: \"REL_L\", 79: \"REL_R\", 80: \"REL_B\", 81: \"REL_INDEX\", 82: \"UPDATE_EL_STYLE\", 83: \"UPDATE_REL_STYLE\", 84: \"UPDATE_LAYOUT_CONFIG\", 86: \"STR\", 87: \"STR_KEY\", 88: \"STR_VALUE\", 89: \"ATTRIBUTE\", 90: \"ATTRIBUTE_EMPTY\" },\n productions_: [0, [3, 1], [3, 1], [3, 2], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [6, 4], [6, 6], [12, 1], [13, 1], [17, 1], [14, 1], [11, 4], [11, 4], [11, 4], [11, 4], [11, 4], [23, 1], [23, 1], [23, 2], [29, 1], [29, 2], [29, 3], [31, 1], [31, 1], [31, 2], [31, 2], [31, 1], [39, 3], [40, 3], [40, 3], [40, 4], [42, 2], [42, 2], [42, 2], [42, 2], [42, 2], [42, 2], [42, 2], [41, 1], [30, 1], [30, 2], [30, 3], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 1], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [53, 2], [45, 1], [45, 2], [85, 1], [85, 2], [85, 1], [85, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.setDirection(\"TB\");\n break;\n case 5:\n yy.setDirection(\"BT\");\n break;\n case 6:\n yy.setDirection(\"RL\");\n break;\n case 7:\n yy.setDirection(\"LR\");\n break;\n case 11:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 12:\n break;\n case 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 14:\n yy.parseDirective(\"}%%\", \"close_directive\", \"c4Context\");\n break;\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n yy.setC4Type($$[$0 - 3]);\n break;\n case 26:\n yy.setTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 27:\n yy.setAccDescription($$[$0].substring(15));\n this.$ = $$[$0].substring(15);\n break;\n case 28:\n this.$ = $$[$0].trim();\n yy.setTitle(this.$);\n break;\n case 29:\n case 30:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 35:\n case 36:\n $$[$0].splice(2, 0, \"ENTERPRISE\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 37:\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 38:\n $$[$0].splice(2, 0, \"CONTAINER\");\n yy.addContainerBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 39:\n yy.addDeploymentNode(\"node\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 40:\n yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 41:\n yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 42:\n yy.popBoundaryParseStack();\n break;\n case 46:\n yy.addPersonOrSystem(\"person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 48:\n yy.addPersonOrSystem(\"system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 49:\n yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 50:\n yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 51:\n yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 52:\n yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 53:\n yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 54:\n yy.addContainer(\"container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 55:\n yy.addContainer(\"container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 56:\n yy.addContainer(\"container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 57:\n yy.addContainer(\"external_container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 58:\n yy.addContainer(\"external_container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 59:\n yy.addContainer(\"external_container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 60:\n yy.addComponent(\"component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 61:\n yy.addComponent(\"component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 62:\n yy.addComponent(\"component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 63:\n yy.addComponent(\"external_component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 64:\n yy.addComponent(\"external_component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 65:\n yy.addComponent(\"external_component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 67:\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 68:\n yy.addRel(\"birel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 69:\n yy.addRel(\"rel_u\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 70:\n yy.addRel(\"rel_d\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 71:\n yy.addRel(\"rel_l\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 72:\n yy.addRel(\"rel_r\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 73:\n yy.addRel(\"rel_b\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 74:\n $$[$0].splice(0, 1);\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 75:\n yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 76:\n yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 77:\n yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 78:\n this.$ = [$$[$0]];\n break;\n case 79:\n $$[$0].unshift($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 80:\n case 82:\n this.$ = $$[$0].trim();\n break;\n case 81:\n let kv = {};\n kv[$$[$0 - 1].trim()] = $$[$0].trim();\n this.$ = kv;\n break;\n case 83:\n this.$ = \"\";\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: $V0, 8: $V1, 9: $V2, 10: $V3, 11: 5, 12: 10, 18: $V4, 22: $V5, 25: $V6, 26: $V7, 27: $V8, 28: $V9 }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 3: 17, 4: 2, 5: 3, 6: 4, 7: $V0, 8: $V1, 9: $V2, 10: $V3, 11: 5, 12: 10, 18: $V4, 22: $V5, 25: $V6, 26: $V7, 27: $V8, 28: $V9 }, { 1: [2, 8] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 1: [2, 7] }, { 13: 18, 19: [1, 19] }, { 15: [1, 20] }, { 15: [1, 21] }, { 15: [1, 22] }, { 15: [1, 23] }, { 15: [1, 24] }, { 19: [2, 11] }, { 1: [2, 3] }, { 14: 25, 16: [1, 26], 21: $Va }, o([16, 21], [2, 12]), { 23: 28, 29: 29, 30: 30, 31: 31, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 23: 79, 29: 29, 30: 30, 31: 31, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 23: 80, 29: 29, 30: 30, 31: 31, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 23: 81, 29: 29, 30: 30, 31: 31, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 23: 82, 29: 29, 30: 30, 31: 31, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 15: [1, 83] }, { 17: 84, 20: [1, 85] }, { 15: [2, 14] }, { 24: [1, 86] }, o($VS, [2, 20], { 53: 32, 39: 58, 40: 70, 42: 71, 30: 87, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }), o($VS, [2, 21]), o($VT, [2, 23], { 15: [1, 88] }), o($VS, [2, 43], { 15: [1, 89] }), o($VU, [2, 26]), o($VU, [2, 27]), { 35: [1, 90] }, { 37: [1, 91] }, o($VU, [2, 30]), { 45: 92, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 98, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 99, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 100, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 101, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 102, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 103, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 104, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 105, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 106, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 107, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 108, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 109, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 110, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 111, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 112, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 113, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 114, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 115, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 116, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, o($VZ, [2, 66]), { 45: 117, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 118, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 119, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 120, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 121, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 122, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 123, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 124, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 125, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 126, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 127, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 30: 128, 39: 58, 40: 70, 42: 71, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 53: 32, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }, { 15: [1, 130], 43: [1, 129] }, { 45: 131, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 132, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 133, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 134, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 135, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 136, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 45: 137, 85: 93, 86: $VV, 87: $VW, 89: $VX, 90: $VY }, { 24: [1, 138] }, { 24: [1, 139] }, { 24: [1, 140] }, { 24: [1, 141] }, o($V_, [2, 9]), { 14: 142, 21: $Va }, { 21: [2, 13] }, { 1: [2, 15] }, o($VS, [2, 22]), o($VT, [2, 24], { 31: 31, 29: 143, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf }), o($VS, [2, 44], { 29: 29, 30: 30, 31: 31, 53: 32, 39: 58, 40: 70, 42: 71, 23: 144, 32: $Vb, 33: $Vc, 34: $Vd, 36: $Ve, 38: $Vf, 44: $Vg, 46: $Vh, 47: $Vi, 48: $Vj, 49: $Vk, 50: $Vl, 51: $Vm, 54: $Vn, 55: $Vo, 56: $Vp, 57: $Vq, 58: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 63: $Vw, 64: $Vx, 65: $Vy, 66: $Vz, 67: $VA, 68: $VB, 69: $VC, 70: $VD, 71: $VE, 72: $VF, 73: $VG, 74: $VH, 75: $VI, 76: $VJ, 77: $VK, 78: $VL, 79: $VM, 80: $VN, 81: $VO, 82: $VP, 83: $VQ, 84: $VR }), o($VU, [2, 28]), o($VU, [2, 29]), o($VZ, [2, 46]), o($V$, [2, 78], { 85: 93, 45: 145, 86: $VV, 87: $VW, 89: $VX, 90: $VY }), o($V01, [2, 80]), { 88: [1, 146] }, o($V01, [2, 82]), o($V01, [2, 83]), o($VZ, [2, 47]), o($VZ, [2, 48]), o($VZ, [2, 49]), o($VZ, [2, 50]), o($VZ, [2, 51]), o($VZ, [2, 52]), o($VZ, [2, 53]), o($VZ, [2, 54]), o($VZ, [2, 55]), o($VZ, [2, 56]), o($VZ, [2, 57]), o($VZ, [2, 58]), o($VZ, [2, 59]), o($VZ, [2, 60]), o($VZ, [2, 61]), o($VZ, [2, 62]), o($VZ, [2, 63]), o($VZ, [2, 64]), o($VZ, [2, 65]), o($VZ, [2, 67]), o($VZ, [2, 68]), o($VZ, [2, 69]), o($VZ, [2, 70]), o($VZ, [2, 71]), o($VZ, [2, 72]), o($VZ, [2, 73]), o($VZ, [2, 74]), o($VZ, [2, 75]), o($VZ, [2, 76]), o($VZ, [2, 77]), { 41: 147, 52: [1, 148] }, { 15: [1, 149] }, { 43: [1, 150] }, o($V11, [2, 35]), o($V11, [2, 36]), o($V11, [2, 37]), o($V11, [2, 38]), o($V11, [2, 39]), o($V11, [2, 40]), o($V11, [2, 41]), { 1: [2, 16] }, { 1: [2, 17] }, { 1: [2, 18] }, { 1: [2, 19] }, { 15: [1, 151] }, o($VT, [2, 25]), o($VS, [2, 45]), o($V$, [2, 79]), o($V01, [2, 81]), o($VZ, [2, 31]), o($VZ, [2, 42]), o($V21, [2, 32]), o($V21, [2, 33], { 15: [1, 152] }), o($V_, [2, 10]), o($V21, [2, 34])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 5: [2, 8], 6: [2, 4], 7: [2, 5], 8: [2, 6], 9: [2, 7], 16: [2, 11], 17: [2, 3], 27: [2, 14], 85: [2, 13], 86: [2, 15], 138: [2, 16], 139: [2, 17], 140: [2, 18], 141: [2, 19] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c2 = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 18;\n case 1:\n return 7;\n case 2:\n return 8;\n case 3:\n return 9;\n case 4:\n return 10;\n case 5:\n this.begin(\"type_directive\");\n return 19;\n case 6:\n this.popState();\n this.begin(\"arg_directive\");\n return 16;\n case 7:\n this.popState();\n this.popState();\n return 21;\n case 8:\n return 20;\n case 9:\n return 32;\n case 10:\n return 33;\n case 11:\n this.begin(\"acc_title\");\n return 34;\n case 12:\n this.popState();\n return \"acc_title_value\";\n case 13:\n this.begin(\"acc_descr\");\n return 36;\n case 14:\n this.popState();\n return \"acc_descr_value\";\n case 15:\n this.begin(\"acc_descr_multiline\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"acc_descr_multiline_value\";\n case 18:\n break;\n case 19:\n c;\n break;\n case 20:\n return 15;\n case 21:\n break;\n case 22:\n return 22;\n case 23:\n return 25;\n case 24:\n return 26;\n case 25:\n return 27;\n case 26:\n return 28;\n case 27:\n this.begin(\"person_ext\");\n return 55;\n case 28:\n this.begin(\"person\");\n return 54;\n case 29:\n this.begin(\"system_ext_queue\");\n return 61;\n case 30:\n this.begin(\"system_ext_db\");\n return 60;\n case 31:\n this.begin(\"system_ext\");\n return 59;\n case 32:\n this.begin(\"system_queue\");\n return 58;\n case 33:\n this.begin(\"system_db\");\n return 57;\n case 34:\n this.begin(\"system\");\n return 56;\n case 35:\n this.begin(\"boundary\");\n return 47;\n case 36:\n this.begin(\"enterprise_boundary\");\n return 44;\n case 37:\n this.begin(\"system_boundary\");\n return 46;\n case 38:\n this.begin(\"container_ext_queue\");\n return 67;\n case 39:\n this.begin(\"container_ext_db\");\n return 66;\n case 40:\n this.begin(\"container_ext\");\n return 65;\n case 41:\n this.begin(\"container_queue\");\n return 64;\n case 42:\n this.begin(\"container_db\");\n return 63;\n case 43:\n this.begin(\"container\");\n return 62;\n case 44:\n this.begin(\"container_boundary\");\n return 48;\n case 45:\n this.begin(\"component_ext_queue\");\n return 73;\n case 46:\n this.begin(\"component_ext_db\");\n return 72;\n case 47:\n this.begin(\"component_ext\");\n return 71;\n case 48:\n this.begin(\"component_queue\");\n return 70;\n case 49:\n this.begin(\"component_db\");\n return 69;\n case 50:\n this.begin(\"component\");\n return 68;\n case 51:\n this.begin(\"node\");\n return 49;\n case 52:\n this.begin(\"node\");\n return 49;\n case 53:\n this.begin(\"node_l\");\n return 50;\n case 54:\n this.begin(\"node_r\");\n return 51;\n case 55:\n this.begin(\"rel\");\n return 74;\n case 56:\n this.begin(\"birel\");\n return 75;\n case 57:\n this.begin(\"rel_u\");\n return 76;\n case 58:\n this.begin(\"rel_u\");\n return 76;\n case 59:\n this.begin(\"rel_d\");\n return 77;\n case 60:\n this.begin(\"rel_d\");\n return 77;\n case 61:\n this.begin(\"rel_l\");\n return 78;\n case 62:\n this.begin(\"rel_l\");\n return 78;\n case 63:\n this.begin(\"rel_r\");\n return 79;\n case 64:\n this.begin(\"rel_r\");\n return 79;\n case 65:\n this.begin(\"rel_b\");\n return 80;\n case 66:\n this.begin(\"rel_index\");\n return 81;\n case 67:\n this.begin(\"update_el_style\");\n return 82;\n case 68:\n this.begin(\"update_rel_style\");\n return 83;\n case 69:\n this.begin(\"update_layout_config\");\n return 84;\n case 70:\n return \"EOF_IN_STRUCT\";\n case 71:\n this.begin(\"attribute\");\n return \"ATTRIBUTE_EMPTY\";\n case 72:\n this.begin(\"attribute\");\n break;\n case 73:\n this.popState();\n this.popState();\n break;\n case 74:\n return 90;\n case 75:\n break;\n case 76:\n return 90;\n case 77:\n this.begin(\"string\");\n break;\n case 78:\n this.popState();\n break;\n case 79:\n return \"STR\";\n case 80:\n this.begin(\"string_kv\");\n break;\n case 81:\n this.begin(\"string_kv_key\");\n return \"STR_KEY\";\n case 82:\n this.popState();\n this.begin(\"string_kv_value\");\n break;\n case 83:\n return \"STR_VALUE\";\n case 84:\n this.popState();\n this.popState();\n break;\n case 85:\n return \"STR\";\n case 86:\n return \"LBRACE\";\n case 87:\n return \"RBRACE\";\n case 88:\n return \"SPACE\";\n case 89:\n return \"EOL\";\n case 90:\n return 24;\n }\n },\n rules: [/^(?:%%\\{)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:((?:(?!\\}%%)[^:.])*))/, /^(?::)/, /^(?:\\}%%)/, /^(?:((?:(?!\\}%%).|\\n)*))/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n conditions: { \"acc_descr_multiline\": { \"rules\": [16, 17], \"inclusive\": false }, \"acc_descr\": { \"rules\": [14], \"inclusive\": false }, \"acc_title\": { \"rules\": [12], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [7, 8], \"inclusive\": false }, \"type_directive\": { \"rules\": [6, 7], \"inclusive\": false }, \"open_directive\": { \"rules\": [5], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [83, 84], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [82], \"inclusive\": false }, \"string_kv\": { \"rules\": [81], \"inclusive\": false }, \"string\": { \"rules\": [78, 79], \"inclusive\": false }, \"attribute\": { \"rules\": [73, 74, 75, 76, 77, 80, 85], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"update_el_style\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_b\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_r\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_l\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_d\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_u\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"node_r\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"node_l\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"node\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"component_ext\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"component_queue\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"component_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"component\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container_boundary\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container_ext\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container_queue\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"container\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"birel\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_boundary\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"boundary\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_ext\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_queue\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system_db\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"system\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"person_ext\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"person\": { \"rules\": [70, 71, 72, 73], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 86, 87, 88, 89, 90], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst c4Parser = parser;\nlet c4ShapeArray = [];\nlet boundaryParseStack = [\"\"];\nlet currentBoundaryParse = \"global\";\nlet parentBoundaryParse = \"\";\nlet boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n];\nlet rels = [];\nlet title = \"\";\nlet wrapEnabled = false;\nlet c4ShapeInRow$1 = 4;\nlet c4BoundaryInRow$1 = 2;\nvar c4Type;\nconst getC4Type = function() {\n return c4Type;\n};\nconst setC4Type = function(c4TypeParam) {\n let sanitizedText = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(c4TypeParam, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n c4Type = sanitizedText;\n};\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nconst addRel = function(type, from, to, label, techn, descr, sprite, tags, link) {\n if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n return;\n }\n let rel = {};\n const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n if (techn === void 0 || techn === null) {\n rel.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n rel.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\nconst addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n if (label === void 0 || label === null) {\n personOrSystem.label = { text: \"\" };\n } else {\n personOrSystem.label = { text: label };\n }\n if (descr === void 0 || descr === null) {\n personOrSystem.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\nconst addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let container = {};\n const old = c4ShapeArray.find((container2) => container2.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n if (label === void 0 || label === null) {\n container.label = { text: \"\" };\n } else {\n container.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n container.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n container.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\nconst addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let component = {};\n const old = c4ShapeArray.find((component2) => component2.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n if (label === void 0 || label === null) {\n component.label = { text: \"\" };\n } else {\n component.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n component.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n component.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\nconst addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"system\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addContainerBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"container\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"node\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (descr === void 0 || descr === null) {\n boundary.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst popBoundaryParseStack = function() {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === void 0) {\n old = boundarys.find((element) => element.alias === elementName);\n if (old === void 0) {\n return;\n }\n }\n if (bgColor !== void 0 && bgColor !== null) {\n if (typeof bgColor === \"object\") {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== void 0 && fontColor !== null) {\n if (typeof fontColor === \"object\") {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== void 0 && borderColor !== null) {\n if (typeof borderColor === \"object\") {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== void 0 && shadowing !== null) {\n if (typeof shadowing === \"object\") {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== void 0 && shape !== null) {\n if (typeof shape === \"object\") {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== void 0 && sprite !== null) {\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== void 0 && techn !== null) {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== void 0 && legendText !== null) {\n if (typeof legendText === \"object\") {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== void 0 && legendSprite !== null) {\n if (typeof legendSprite === \"object\") {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\nconst updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === void 0) {\n return;\n }\n if (textColor !== void 0 && textColor !== null) {\n if (typeof textColor === \"object\") {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== void 0 && lineColor !== null) {\n if (typeof lineColor === \"object\") {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== void 0 && offsetX !== null) {\n if (typeof offsetX === \"object\") {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== void 0 && offsetY !== null) {\n if (typeof offsetY === \"object\") {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\nconst updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow$1;\n let c4BoundaryInRowValue = c4BoundaryInRow$1;\n if (typeof c4ShapeInRowParam === \"object\") {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === \"object\") {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow$1 = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow$1 = c4BoundaryInRowValue;\n }\n};\nconst getC4ShapeInRow = function() {\n return c4ShapeInRow$1;\n};\nconst getC4BoundaryInRow = function() {\n return c4BoundaryInRow$1;\n};\nconst getCurrentBoundaryParse = function() {\n return currentBoundaryParse;\n};\nconst getParentBoundaryParse = function() {\n return parentBoundaryParse;\n};\nconst getC4ShapeArray = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nconst getC4Shape = function(alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nconst getC4ShapeKeys = function(parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\nconst getBoundarys = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundarys;\n } else {\n return boundarys.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\nconst getRels = function() {\n return rels;\n};\nconst getTitle = function() {\n return title;\n};\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = function() {\n return wrapEnabled;\n};\nconst clear = function() {\n c4ShapeArray = [];\n boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n ];\n parentBoundaryParse = \"\";\n currentBoundaryParse = \"global\";\n boundaryParseStack = [\"\"];\n rels = [];\n boundaryParseStack = [\"\"];\n title = \"\";\n wrapEnabled = false;\n c4ShapeInRow$1 = 4;\n c4BoundaryInRow$1 = 2;\n};\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst setTitle = function(txt) {\n let sanitizedText = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(txt, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n title = sanitizedText;\n};\nconst c4Db = {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b,\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type\n // apply,\n};\nconst drawRect = function(elem, rectData) {\n return (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.d)(elem, rectData);\n};\nconst drawImage = function(elem, width, height, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"width\", width);\n imageElem.attr(\"height\", height);\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__.sanitizeUrl)(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawRels$1 = (elem, rels2, conf2) => {\n const relsElem = elem.append(\"g\");\n let i = 0;\n for (let rel of rels2) {\n let textColor = rel.textColor ? rel.textColor : \"#444444\";\n let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n let url = \"\";\n if (i === 0) {\n let line = relsElem.append(\"line\");\n line.attr(\"x1\", rel.startPoint.x);\n line.attr(\"y1\", rel.startPoint.y);\n line.attr(\"x2\", rel.endPoint.x);\n line.attr(\"y2\", rel.endPoint.y);\n line.attr(\"stroke-width\", \"1\");\n line.attr(\"stroke\", strokeColor);\n line.style(\"fill\", \"none\");\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n i = -1;\n } else {\n let line = relsElem.append(\"path\");\n line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n \"controlx\",\n rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n );\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n }\n let messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n if (rel.techn && rel.techn.text !== \"\") {\n messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n \"[\" + rel.techn.text + \"]\",\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, \"font-style\": \"italic\" },\n messageConf\n );\n }\n }\n};\nconst drawBoundary$1 = function(elem, boundary, conf2) {\n const boundaryElem = elem.append(\"g\");\n let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n if (boundary.nodeType) {\n attrsValue = { \"stroke-width\": 1 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue\n };\n drawRect(boundaryElem, rectData);\n let boundaryConf = conf2.boundaryFont();\n boundaryConf.fontWeight = \"bold\";\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n if (boundary.type && boundary.type.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n if (boundary.descr && boundary.descr.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n};\nconst drawC4Shape = function(elem, c4Shape, conf2) {\n var _a;\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n break;\n case \"external_person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n break;\n }\n const c4ShapeElem = elem.append(\"g\");\n c4ShapeElem.attr(\"class\", \"person-man\");\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n case \"system\":\n case \"external_system\":\n case \"container\":\n case \"external_container\":\n case \"component\":\n case \"external_component\":\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { \"stroke-width\": 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case \"system_db\":\n case \"external_system_db\":\n case \"container_db\":\n case \"external_container_db\":\n case \"component_db\":\n case \"external_component_db\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n );\n break;\n case \"system_queue\":\n case \"external_system_queue\":\n case \"container_queue\":\n case \"external_container_queue\":\n case \"component_queue\":\n case \"external_component_queue\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n );\n break;\n }\n let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontWeight = \"bold\";\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontColor = fontColor;\n if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n }\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n textFontConf = conf2.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n return c4Shape.height;\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowEnd = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertDynamicNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n};\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { fontSize, fontFamily, fontWeight } = conf2;\n const lines = content.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawBoundary: drawBoundary$1,\n drawC4Shape,\n drawRels: drawRels$1,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon\n};\nlet globalBoundaryMaxX = 0, globalBoundaryMaxY = 0;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nparser.yy = c4Db;\nlet conf = {};\nclass Bounds {\n constructor(diagObj) {\n this.name = \"\";\n this.data = {};\n this.data.startx = void 0;\n this.data.stopx = void 0;\n this.data.starty = void 0;\n this.data.stopy = void 0;\n this.data.widthLimit = void 0;\n this.nextData = {};\n this.nextData.startx = void 0;\n this.nextData.stopx = void 0;\n this.nextData.starty = void 0;\n this.nextData.stopy = void 0;\n this.nextData.cnt = 0;\n setConf(diagObj.db.getConfig());\n }\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n updateVal(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n this.updateVal(this.data, \"startx\", _startx, Math.min);\n this.updateVal(this.data, \"starty\", _starty, Math.min);\n this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n }\n init(diagObj) {\n this.name = \"\";\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n widthLimit: void 0\n };\n this.nextData = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n cnt: 0\n };\n setConf(diagObj.db.getConfig());\n }\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\nconst setConf = function(cnf) {\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.f)(conf, cnf);\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight\n };\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.w)(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex).length;\n c4Shape[textType].width = textLimitWidth;\n c4Shape[textType].height = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.j)(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.j)(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n }\n }\n}\nconst drawBoundary = function(diagram2, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n boundary.label.y = conf.c4ShapeMargin - 35;\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = \"bold\";\n let textLimitWidth = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n svgDraw.drawBoundary(diagram2, boundary, conf);\n};\nconst drawC4ShapeArray = function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n let Y = 0;\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray2[c4ShapeKey];\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(\n \"<<\" + c4Shape.typeC4Shape.text + \">>\",\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape[\"label\"].Y = Y + 8;\n Y = c4Shape[\"label\"].Y + c4Shape[\"label\"].height;\n if (c4Shape.type && c4Shape.type.text !== \"\") {\n c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n c4Shape[\"type\"].Y = Y + 5;\n Y = c4Shape[\"type\"].Y + c4Shape[\"type\"].height;\n } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape[\"techn\"].Y = Y + 5;\n Y = c4Shape[\"techn\"].Y + c4Shape[\"techn\"].height;\n }\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape[\"descr\"].Y = Y + 20;\n Y = c4Shape[\"descr\"].Y + c4Shape[\"descr\"].height;\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape[\"descr\"].textLines * 5;\n }\n rectWidth = rectWidth + conf.c4ShapePadding;\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n currentBounds.insert(c4Shape);\n svgDraw.drawC4Shape(diagram2, c4Shape, conf);\n }\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nlet getIntersectPoint = function(fromNode, endPoint) {\n let x1 = fromNode.x;\n let y1 = fromNode.y;\n let x2 = endPoint.x;\n let y2 = endPoint.y;\n let fromCenterX = x1 + fromNode.width / 2;\n let fromCenterY = y1 + fromNode.height / 2;\n let dx = Math.abs(x1 - x2);\n let dy = Math.abs(y1 - y2);\n let tanDYX = dy / dx;\n let fromDYX = fromNode.height / fromNode.width;\n let returnPoint = null;\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n }\n }\n return returnPoint;\n};\nlet getIntersectPoints = function(fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint, endPoint };\n};\nconst drawRels = function(diagram2, rels2, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels2) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === \"C4Dynamic\") {\n rel.label.text = i + \": \" + rel.label.text;\n }\n let textLimitWidth = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(rel.label.text, relConf);\n calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n if (rel.techn && rel.techn.text !== \"\") {\n textLimitWidth = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(rel.techn.text, relConf);\n calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n }\n if (rel.descr && rel.descr.text !== \"\") {\n textLimitWidth = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.h)(rel.descr.text, relConf);\n calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n }\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram2, rels2, conf);\n};\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n let currentBounds = new Bounds(diagObj);\n currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\n \"label\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"label\"].Y = Y + 8;\n Y = currentBoundary[\"label\"].Y + currentBoundary[\"label\"].height;\n if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n \"type\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"type\"].Y = Y + 5;\n Y = currentBoundary[\"type\"].Y + currentBoundary[\"type\"].height;\n }\n if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n \"descr\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"descr\"].Y = Y + 20;\n Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n }\n if (i == 0 || i % c4BoundaryInRow === 0) {\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram2,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundarys = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundarys.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundarys,\n diagObj\n );\n }\n if (currentBoundary.alias !== \"global\") {\n drawBoundary(diagram2, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\nconst draw = function(_text, id, _version, diagObj) {\n conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().c4;\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n let db = diagObj.db;\n diagObj.db.setWrap(conf.wrap);\n c4ShapeInRow = db.getC4ShapeInRow();\n c4BoundaryInRow = db.getC4BoundaryInRow();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(`C:${JSON.stringify(conf, null, 2)}`);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(`[id=\"${id}\"]`);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n let screenBounds = new Bounds(diagObj);\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n const title2 = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundarys(\"\");\n drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowEnd(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n const box = screenBounds.data;\n let boxHeight = box.stopy - box.starty;\n let height = boxHeight + 2 * conf.diagramMarginY;\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title2) {\n diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n }\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.i)(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title2 ? 60 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(`models:`, box);\n};\nconst c4Renderer = {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw\n};\nconst getStyles = (options) => `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\nconst c4Styles = getStyles;\nconst diagram = {\n parser: c4Parser,\n db: c4Db,\n renderer: c4Renderer,\n styles: c4Styles,\n init: (cnf) => {\n c4Renderer.setConf(cnf.c4);\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9jNERpYWdyYW0tOWNkZGIzN2YuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBc1Q7QUFDMVI7QUFDb0Q7QUFDMUI7QUFDbkM7QUFDSjtBQUNJO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQixvc0RBQW9zRDtBQUNwdEQsa0JBQWtCLDJ3Q0FBMndDO0FBQzd4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLHVCQUF1Qiw4SUFBOEksZ0NBQWdDLG9CQUFvQixnQ0FBZ0MsaUNBQWlDLHdIQUF3SCxlQUFlLGNBQWMsa0JBQWtCLGcwQ0FBZzBDLFdBQVc7QUFDNXdELG9CQUFvQix5QkFBeUIsdUNBQXVDLGlCQUFpQixtQ0FBbUMsaUJBQWlCLG1DQUFtQyx1QkFBdUIsaUNBQWlDLHFCQUFxQixxQ0FBcUMsc0JBQXNCLHFDQUFxQyxzQkFBc0Isa0NBQWtDLHVCQUF1Qix1Q0FBdUMscUJBQXFCLG1DQUFtQyxpQkFBaUIsbUNBQW1DLGNBQWMsdUNBQXVDLGlCQUFpQiwyREFBMkQsNEJBQTRCLCtDQUErQyx3QkFBd0IsK0NBQStDLHVCQUF1QiwrQ0FBK0MsYUFBYSwrQ0FBK0MsYUFBYSwrQ0FBK0MsYUFBYSwrQ0FBK0MsYUFBYSwrQ0FBK0MsYUFBYSwrQ0FBK0MsY0FBYyxpQ0FBaUMsV0FBVywrQ0FBK0MsY0FBYywrQ0FBK0MsY0FBYywrQ0FBK0MsWUFBWSwrQ0FBK0MsYUFBYSxpQ0FBaUMsaUJBQWlCLCtDQUErQywyQkFBMkIsaUNBQWlDLHdCQUF3QiwrQ0FBK0MscUJBQXFCLCtDQUErQyx1QkFBdUIsK0NBQStDLG9CQUFvQiwrQ0FBK0MsaUJBQWlCLCtDQUErQywwQkFBMEIsK0NBQStDLDJCQUEyQixpQ0FBaUMsd0JBQXdCLCtDQUErQyxxQkFBcUIsK0NBQStDLHVCQUF1QiwrQ0FBK0Msb0JBQW9CLCtDQUErQyxpQkFBaUIsK0NBQStDLGFBQWEsK0NBQStDLHVCQUF1QiwrQ0FBK0MsMkJBQTJCLCtDQUErQyxnQkFBZ0IsK0NBQStDLHdCQUF3QiwrQ0FBK0MscUJBQXFCLCtDQUErQyxrQkFBa0IsK0NBQStDLG9CQUFvQiwrQ0FBK0MsaUJBQWlCLCtDQUErQyxjQUFjLCtDQUErQyxrQkFBa0IsK0NBQStDLGNBQWMsK0NBQStDLGVBQWU7QUFDenVHO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxnQkFBZ0I7QUFDN0IsWUFBWSxnQkFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHVEQUFZLGNBQWMsdURBQVM7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsRUFBRSxrRUFBeUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxrQkFBa0I7QUFDbEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsSUFBSTtBQUNKLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLElBQUk7QUFDSjtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLE1BQU07QUFDTiwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCLElBQUk7QUFDSix3QkFBd0I7QUFDeEI7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixJQUFJO0FBQ0o7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixNQUFNO0FBQ04sMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixJQUFJO0FBQ0o7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixNQUFNO0FBQ04sMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixJQUFJO0FBQ0osd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsTUFBTTtBQUNOLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsTUFBTTtBQUNOLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsSUFBSTtBQUNKLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCLElBQUk7QUFDSjtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCLE1BQU07QUFDTix3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLElBQUk7QUFDSix1QkFBdUI7QUFDdkI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixJQUFJO0FBQ0o7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QixNQUFNO0FBQ04sd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixJQUFJO0FBQ0osdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsTUFBTTtBQUNOLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkIsSUFBSTtBQUNKO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsTUFBTTtBQUNOLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpQkFBaUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx5Q0FBeUM7QUFDakQ7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEseUNBQXlDO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxpQkFBaUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxtQ0FBbUM7QUFDL0MsZ0NBQWdDLGtFQUFxQjtBQUNyRCxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsdURBQVM7QUFDeEMsaUVBQWlFLGtFQUFxQjtBQUN0RjtBQUNBLGlDQUFpQyx1REFBbUI7QUFDcEQsTUFBTTtBQUNOLCtDQUErQyxrRUFBcUI7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSx1REFBa0I7QUFDNUI7QUFDQTtBQUNBLHFCQUFxQix1REFBbUI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx5REFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvYzREaWFncmFtLTljZGRiMzdmLmpzP2M0NTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcyBhcyBzZXRBY2NUaXRsZSwgZyBhcyBnZXRBY2NUaXRsZSwgYSBhcyBnZXRBY2NEZXNjcmlwdGlvbiwgYiBhcyBzZXRBY2NEZXNjcmlwdGlvbiwgYyBhcyBnZXRDb25maWcsIGQgYXMgc2FuaXRpemVUZXh0LCBtIGFzIG1lcm1haWRBUEksIGUgYXMgY29tbW9uLCBmIGFzIGFzc2lnbldpdGhEZXB0aCwgaCBhcyBjYWxjdWxhdGVUZXh0V2lkdGgsIGwgYXMgbG9nLCBpIGFzIGNvbmZpZ3VyZVN2Z1NpemUsIHcgYXMgd3JhcExhYmVsLCBqIGFzIGNhbGN1bGF0ZVRleHRIZWlnaHQgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7IGQgYXMgZHJhd1JlY3QkMSwgZyBhcyBnZXROb3RlUmVjdCB9IGZyb20gXCIuL3N2Z0RyYXdDb21tb24tZjI2Y2FkMzkuanNcIjtcbmltcG9ydCB7IHNhbml0aXplVXJsIH0gZnJvbSBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCA2XSwgJFYxID0gWzEsIDddLCAkVjIgPSBbMSwgOF0sICRWMyA9IFsxLCA5XSwgJFY0ID0gWzEsIDE2XSwgJFY1ID0gWzEsIDExXSwgJFY2ID0gWzEsIDEyXSwgJFY3ID0gWzEsIDEzXSwgJFY4ID0gWzEsIDE0XSwgJFY5ID0gWzEsIDE1XSwgJFZhID0gWzEsIDI3XSwgJFZiID0gWzEsIDMzXSwgJFZjID0gWzEsIDM0XSwgJFZkID0gWzEsIDM1XSwgJFZlID0gWzEsIDM2XSwgJFZmID0gWzEsIDM3XSwgJFZnID0gWzEsIDcyXSwgJFZoID0gWzEsIDczXSwgJFZpID0gWzEsIDc0XSwgJFZqID0gWzEsIDc1XSwgJFZrID0gWzEsIDc2XSwgJFZsID0gWzEsIDc3XSwgJFZtID0gWzEsIDc4XSwgJFZuID0gWzEsIDM4XSwgJFZvID0gWzEsIDM5XSwgJFZwID0gWzEsIDQwXSwgJFZxID0gWzEsIDQxXSwgJFZyID0gWzEsIDQyXSwgJFZzID0gWzEsIDQzXSwgJFZ0ID0gWzEsIDQ0XSwgJFZ1ID0gWzEsIDQ1XSwgJFZ2ID0gWzEsIDQ2XSwgJFZ3ID0gWzEsIDQ3XSwgJFZ4ID0gWzEsIDQ4XSwgJFZ5ID0gWzEsIDQ5XSwgJFZ6ID0gWzEsIDUwXSwgJFZBID0gWzEsIDUxXSwgJFZCID0gWzEsIDUyXSwgJFZDID0gWzEsIDUzXSwgJFZEID0gWzEsIDU0XSwgJFZFID0gWzEsIDU1XSwgJFZGID0gWzEsIDU2XSwgJFZHID0gWzEsIDU3XSwgJFZIID0gWzEsIDU5XSwgJFZJID0gWzEsIDYwXSwgJFZKID0gWzEsIDYxXSwgJFZLID0gWzEsIDYyXSwgJFZMID0gWzEsIDYzXSwgJFZNID0gWzEsIDY0XSwgJFZOID0gWzEsIDY1XSwgJFZPID0gWzEsIDY2XSwgJFZQID0gWzEsIDY3XSwgJFZRID0gWzEsIDY4XSwgJFZSID0gWzEsIDY5XSwgJFZTID0gWzI0LCA1Ml0sICRWVCA9IFsyNCwgNDQsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NF0sICRWVSA9IFsxNSwgMjQsIDQ0LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODRdLCAkVlYgPSBbMSwgOTRdLCAkVlcgPSBbMSwgOTVdLCAkVlggPSBbMSwgOTZdLCAkVlkgPSBbMSwgOTddLCAkVlogPSBbMTUsIDI0LCA1Ml0sICRWXyA9IFs3LCA4LCA5LCAxMCwgMTgsIDIyLCAyNSwgMjYsIDI3LCAyOF0sICRWJCA9IFsxNSwgMjQsIDQzLCA1Ml0sICRWMDEgPSBbMTUsIDI0LCA0MywgNTIsIDg2LCA4NywgODksIDkwXSwgJFYxMSA9IFsxNSwgNDNdLCAkVjIxID0gWzQ0LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NF07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJtZXJtYWlkRG9jXCI6IDQsIFwiZGlyZWN0aW9uXCI6IDUsIFwiZGlyZWN0aXZlXCI6IDYsIFwiZGlyZWN0aW9uX3RiXCI6IDcsIFwiZGlyZWN0aW9uX2J0XCI6IDgsIFwiZGlyZWN0aW9uX3JsXCI6IDksIFwiZGlyZWN0aW9uX2xyXCI6IDEwLCBcImdyYXBoQ29uZmlnXCI6IDExLCBcIm9wZW5EaXJlY3RpdmVcIjogMTIsIFwidHlwZURpcmVjdGl2ZVwiOiAxMywgXCJjbG9zZURpcmVjdGl2ZVwiOiAxNCwgXCJORVdMSU5FXCI6IDE1LCBcIjpcIjogMTYsIFwiYXJnRGlyZWN0aXZlXCI6IDE3LCBcIm9wZW5fZGlyZWN0aXZlXCI6IDE4LCBcInR5cGVfZGlyZWN0aXZlXCI6IDE5LCBcImFyZ19kaXJlY3RpdmVcIjogMjAsIFwiY2xvc2VfZGlyZWN0aXZlXCI6IDIxLCBcIkM0X0NPTlRFWFRcIjogMjIsIFwic3RhdGVtZW50c1wiOiAyMywgXCJFT0ZcIjogMjQsIFwiQzRfQ09OVEFJTkVSXCI6IDI1LCBcIkM0X0NPTVBPTkVOVFwiOiAyNiwgXCJDNF9EWU5BTUlDXCI6IDI3LCBcIkM0X0RFUExPWU1FTlRcIjogMjgsIFwib3RoZXJTdGF0ZW1lbnRzXCI6IDI5LCBcImRpYWdyYW1TdGF0ZW1lbnRzXCI6IDMwLCBcIm90aGVyU3RhdGVtZW50XCI6IDMxLCBcInRpdGxlXCI6IDMyLCBcImFjY0Rlc2NyaXB0aW9uXCI6IDMzLCBcImFjY190aXRsZVwiOiAzNCwgXCJhY2NfdGl0bGVfdmFsdWVcIjogMzUsIFwiYWNjX2Rlc2NyXCI6IDM2LCBcImFjY19kZXNjcl92YWx1ZVwiOiAzNywgXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI6IDM4LCBcImJvdW5kYXJ5U3RhdGVtZW50XCI6IDM5LCBcImJvdW5kYXJ5U3RhcnRTdGF0ZW1lbnRcIjogNDAsIFwiYm91bmRhcnlTdG9wU3RhdGVtZW50XCI6IDQxLCBcImJvdW5kYXJ5U3RhcnRcIjogNDIsIFwiTEJSQUNFXCI6IDQzLCBcIkVOVEVSUFJJU0VfQk9VTkRBUllcIjogNDQsIFwiYXR0cmlidXRlc1wiOiA0NSwgXCJTWVNURU1fQk9VTkRBUllcIjogNDYsIFwiQk9VTkRBUllcIjogNDcsIFwiQ09OVEFJTkVSX0JPVU5EQVJZXCI6IDQ4LCBcIk5PREVcIjogNDksIFwiTk9ERV9MXCI6IDUwLCBcIk5PREVfUlwiOiA1MSwgXCJSQlJBQ0VcIjogNTIsIFwiZGlhZ3JhbVN0YXRlbWVudFwiOiA1MywgXCJQRVJTT05cIjogNTQsIFwiUEVSU09OX0VYVFwiOiA1NSwgXCJTWVNURU1cIjogNTYsIFwiU1lTVEVNX0RCXCI6IDU3LCBcIlNZU1RFTV9RVUVVRVwiOiA1OCwgXCJTWVNURU1fRVhUXCI6IDU5LCBcIlNZU1RFTV9FWFRfREJcIjogNjAsIFwiU1lTVEVNX0VYVF9RVUVVRVwiOiA2MSwgXCJDT05UQUlORVJcIjogNjIsIFwiQ09OVEFJTkVSX0RCXCI6IDYzLCBcIkNPTlRBSU5FUl9RVUVVRVwiOiA2NCwgXCJDT05UQUlORVJfRVhUXCI6IDY1LCBcIkNPTlRBSU5FUl9FWFRfREJcIjogNjYsIFwiQ09OVEFJTkVSX0VYVF9RVUVVRVwiOiA2NywgXCJDT01QT05FTlRcIjogNjgsIFwiQ09NUE9ORU5UX0RCXCI6IDY5LCBcIkNPTVBPTkVOVF9RVUVVRVwiOiA3MCwgXCJDT01QT05FTlRfRVhUXCI6IDcxLCBcIkNPTVBPTkVOVF9FWFRfREJcIjogNzIsIFwiQ09NUE9ORU5UX0VYVF9RVUVVRVwiOiA3MywgXCJSRUxcIjogNzQsIFwiQklSRUxcIjogNzUsIFwiUkVMX1VcIjogNzYsIFwiUkVMX0RcIjogNzcsIFwiUkVMX0xcIjogNzgsIFwiUkVMX1JcIjogNzksIFwiUkVMX0JcIjogODAsIFwiUkVMX0lOREVYXCI6IDgxLCBcIlVQREFURV9FTF9TVFlMRVwiOiA4MiwgXCJVUERBVEVfUkVMX1NUWUxFXCI6IDgzLCBcIlVQREFURV9MQVlPVVRfQ09ORklHXCI6IDg0LCBcImF0dHJpYnV0ZVwiOiA4NSwgXCJTVFJcIjogODYsIFwiU1RSX0tFWVwiOiA4NywgXCJTVFJfVkFMVUVcIjogODgsIFwiQVRUUklCVVRFXCI6IDg5LCBcIkFUVFJJQlVURV9FTVBUWVwiOiA5MCwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDc6IFwiZGlyZWN0aW9uX3RiXCIsIDg6IFwiZGlyZWN0aW9uX2J0XCIsIDk6IFwiZGlyZWN0aW9uX3JsXCIsIDEwOiBcImRpcmVjdGlvbl9sclwiLCAxNTogXCJORVdMSU5FXCIsIDE2OiBcIjpcIiwgMTg6IFwib3Blbl9kaXJlY3RpdmVcIiwgMTk6IFwidHlwZV9kaXJlY3RpdmVcIiwgMjA6IFwiYXJnX2RpcmVjdGl2ZVwiLCAyMTogXCJjbG9zZV9kaXJlY3RpdmVcIiwgMjI6IFwiQzRfQ09OVEVYVFwiLCAyNDogXCJFT0ZcIiwgMjU6IFwiQzRfQ09OVEFJTkVSXCIsIDI2OiBcIkM0X0NPTVBPTkVOVFwiLCAyNzogXCJDNF9EWU5BTUlDXCIsIDI4OiBcIkM0X0RFUExPWU1FTlRcIiwgMzI6IFwidGl0bGVcIiwgMzM6IFwiYWNjRGVzY3JpcHRpb25cIiwgMzQ6IFwiYWNjX3RpdGxlXCIsIDM1OiBcImFjY190aXRsZV92YWx1ZVwiLCAzNjogXCJhY2NfZGVzY3JcIiwgMzc6IFwiYWNjX2Rlc2NyX3ZhbHVlXCIsIDM4OiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIiwgNDM6IFwiTEJSQUNFXCIsIDQ0OiBcIkVOVEVSUFJJU0VfQk9VTkRBUllcIiwgNDY6IFwiU1lTVEVNX0JPVU5EQVJZXCIsIDQ3OiBcIkJPVU5EQVJZXCIsIDQ4OiBcIkNPTlRBSU5FUl9CT1VOREFSWVwiLCA0OTogXCJOT0RFXCIsIDUwOiBcIk5PREVfTFwiLCA1MTogXCJOT0RFX1JcIiwgNTI6IFwiUkJSQUNFXCIsIDU0OiBcIlBFUlNPTlwiLCA1NTogXCJQRVJTT05fRVhUXCIsIDU2OiBcIlNZU1RFTVwiLCA1NzogXCJTWVNURU1fREJcIiwgNTg6IFwiU1lTVEVNX1FVRVVFXCIsIDU5OiBcIlNZU1RFTV9FWFRcIiwgNjA6IFwiU1lTVEVNX0VYVF9EQlwiLCA2MTogXCJTWVNURU1fRVhUX1FVRVVFXCIsIDYyOiBcIkNPTlRBSU5FUlwiLCA2MzogXCJDT05UQUlORVJfREJcIiwgNjQ6IFwiQ09OVEFJTkVSX1FVRVVFXCIsIDY1OiBcIkNPTlRBSU5FUl9FWFRcIiwgNjY6IFwiQ09OVEFJTkVSX0VYVF9EQlwiLCA2NzogXCJDT05UQUlORVJfRVhUX1FVRVVFXCIsIDY4OiBcIkNPTVBPTkVOVFwiLCA2OTogXCJDT01QT05FTlRfREJcIiwgNzA6IFwiQ09NUE9ORU5UX1FVRVVFXCIsIDcxOiBcIkNPTVBPTkVOVF9FWFRcIiwgNzI6IFwiQ09NUE9ORU5UX0VYVF9EQlwiLCA3MzogXCJDT01QT05FTlRfRVhUX1FVRVVFXCIsIDc0OiBcIlJFTFwiLCA3NTogXCJCSVJFTFwiLCA3NjogXCJSRUxfVVwiLCA3NzogXCJSRUxfRFwiLCA3ODogXCJSRUxfTFwiLCA3OTogXCJSRUxfUlwiLCA4MDogXCJSRUxfQlwiLCA4MTogXCJSRUxfSU5ERVhcIiwgODI6IFwiVVBEQVRFX0VMX1NUWUxFXCIsIDgzOiBcIlVQREFURV9SRUxfU1RZTEVcIiwgODQ6IFwiVVBEQVRFX0xBWU9VVF9DT05GSUdcIiwgODY6IFwiU1RSXCIsIDg3OiBcIlNUUl9LRVlcIiwgODg6IFwiU1RSX1ZBTFVFXCIsIDg5OiBcIkFUVFJJQlVURVwiLCA5MDogXCJBVFRSSUJVVEVfRU1QVFlcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAxXSwgWzMsIDFdLCBbMywgMl0sIFs1LCAxXSwgWzUsIDFdLCBbNSwgMV0sIFs1LCAxXSwgWzQsIDFdLCBbNiwgNF0sIFs2LCA2XSwgWzEyLCAxXSwgWzEzLCAxXSwgWzE3LCAxXSwgWzE0LCAxXSwgWzExLCA0XSwgWzExLCA0XSwgWzExLCA0XSwgWzExLCA0XSwgWzExLCA0XSwgWzIzLCAxXSwgWzIzLCAxXSwgWzIzLCAyXSwgWzI5LCAxXSwgWzI5LCAyXSwgWzI5LCAzXSwgWzMxLCAxXSwgWzMxLCAxXSwgWzMxLCAyXSwgWzMxLCAyXSwgWzMxLCAxXSwgWzM5LCAzXSwgWzQwLCAzXSwgWzQwLCAzXSwgWzQwLCA0XSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQyLCAyXSwgWzQxLCAxXSwgWzMwLCAxXSwgWzMwLCAyXSwgWzMwLCAzXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAxXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzUzLCAyXSwgWzQ1LCAxXSwgWzQ1LCAyXSwgWzg1LCAxXSwgWzg1LCAyXSwgWzg1LCAxXSwgWzg1LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgeXkuc2V0RGlyZWN0aW9uKFwiVEJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJCVFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHl5LnNldERpcmVjdGlvbihcIlJMXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgeXkuc2V0RGlyZWN0aW9uKFwiTFJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCIlJXtcIiwgXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAkJFskMF0gPSAkJFskMF0udHJpbSgpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCJ9JSVcIiwgXCJjbG9zZV9kaXJlY3RpdmVcIiwgXCJjNENvbnRleHRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTU6XG4gICAgICAgIGNhc2UgMTY6XG4gICAgICAgIGNhc2UgMTc6XG4gICAgICAgIGNhc2UgMTg6XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgeXkuc2V0QzRUeXBlKCQkWyQwIC0gM10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgIHl5LnNldFRpdGxlKCQkWyQwXS5zdWJzdHJpbmcoNikpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHJpbmcoNik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24oJCRbJDBdLnN1YnN0cmluZygxNSkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHJpbmcoMTUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI4OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0VGl0bGUodGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOTpcbiAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY0Rlc2NyaXB0aW9uKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzU6XG4gICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgJCRbJDBdLnNwbGljZSgyLCAwLCBcIkVOVEVSUFJJU0VcIik7XG4gICAgICAgICAgeXkuYWRkUGVyc29uT3JTeXN0ZW1Cb3VuZGFyeSguLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbUJvdW5kYXJ5KC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICQkWyQwXS5zcGxpY2UoMiwgMCwgXCJDT05UQUlORVJcIik7XG4gICAgICAgICAgeXkuYWRkQ29udGFpbmVyQm91bmRhcnkoLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgeXkuYWRkRGVwbG95bWVudE5vZGUoXCJub2RlXCIsIC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgIHl5LmFkZERlcGxveW1lbnROb2RlKFwibm9kZUxcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgeXkuYWRkRGVwbG95bWVudE5vZGUoXCJub2RlUlwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICB5eS5wb3BCb3VuZGFyeVBhcnNlU3RhY2soKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcInBlcnNvblwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcImV4dGVybmFsX3BlcnNvblwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcInN5c3RlbVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OTpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcInN5c3RlbV9kYlwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MDpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcInN5c3RlbV9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcImV4dGVybmFsX3N5c3RlbVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcImV4dGVybmFsX3N5c3RlbV9kYlwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICB5eS5hZGRQZXJzb25PclN5c3RlbShcImV4dGVybmFsX3N5c3RlbV9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NDpcbiAgICAgICAgICB5eS5hZGRDb250YWluZXIoXCJjb250YWluZXJcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTU6XG4gICAgICAgICAgeXkuYWRkQ29udGFpbmVyKFwiY29udGFpbmVyX2RiXCIsIC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU2OlxuICAgICAgICAgIHl5LmFkZENvbnRhaW5lcihcImNvbnRhaW5lcl9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NzpcbiAgICAgICAgICB5eS5hZGRDb250YWluZXIoXCJleHRlcm5hbF9jb250YWluZXJcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTg6XG4gICAgICAgICAgeXkuYWRkQ29udGFpbmVyKFwiZXh0ZXJuYWxfY29udGFpbmVyX2RiXCIsIC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgIHl5LmFkZENvbnRhaW5lcihcImV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2MDpcbiAgICAgICAgICB5eS5hZGRDb21wb25lbnQoXCJjb21wb25lbnRcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgeXkuYWRkQ29tcG9uZW50KFwiY29tcG9uZW50X2RiXCIsIC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYyOlxuICAgICAgICAgIHl5LmFkZENvbXBvbmVudChcImNvbXBvbmVudF9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2MzpcbiAgICAgICAgICB5eS5hZGRDb21wb25lbnQoXCJleHRlcm5hbF9jb21wb25lbnRcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgeXkuYWRkQ29tcG9uZW50KFwiZXh0ZXJuYWxfY29tcG9uZW50X2RiXCIsIC4uLiQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgIHl5LmFkZENvbXBvbmVudChcImV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICB5eS5hZGRSZWwoXCJyZWxcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjg6XG4gICAgICAgICAgeXkuYWRkUmVsKFwiYmlyZWxcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjk6XG4gICAgICAgICAgeXkuYWRkUmVsKFwicmVsX3VcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgeXkuYWRkUmVsKFwicmVsX2RcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzE6XG4gICAgICAgICAgeXkuYWRkUmVsKFwicmVsX2xcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgeXkuYWRkUmVsKFwicmVsX3JcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzM6XG4gICAgICAgICAgeXkuYWRkUmVsKFwicmVsX2JcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzQ6XG4gICAgICAgICAgJCRbJDBdLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICB5eS5hZGRSZWwoXCJyZWxcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzU6XG4gICAgICAgICAgeXkudXBkYXRlRWxTdHlsZShcInVwZGF0ZV9lbF9zdHlsZVwiLCAuLi4kJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICB5eS51cGRhdGVSZWxTdHlsZShcInVwZGF0ZV9yZWxfc3R5bGVcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgeXkudXBkYXRlTGF5b3V0Q29uZmlnKFwidXBkYXRlX2xheW91dF9jb25maWdcIiwgLi4uJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzg6XG4gICAgICAgICAgdGhpcy4kID0gWyQkWyQwXV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzk6XG4gICAgICAgICAgJCRbJDBdLnVuc2hpZnQoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgwOlxuICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODE6XG4gICAgICAgICAgbGV0IGt2ID0ge307XG4gICAgICAgICAga3ZbJCRbJDAgLSAxXS50cmltKCldID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB0aGlzLiQgPSBrdjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICB0aGlzLiQgPSBcIlwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFibGU6IFt7IDM6IDEsIDQ6IDIsIDU6IDMsIDY6IDQsIDc6ICRWMCwgODogJFYxLCA5OiAkVjIsIDEwOiAkVjMsIDExOiA1LCAxMjogMTAsIDE4OiAkVjQsIDIyOiAkVjUsIDI1OiAkVjYsIDI2OiAkVjcsIDI3OiAkVjgsIDI4OiAkVjkgfSwgeyAxOiBbM10gfSwgeyAxOiBbMiwgMV0gfSwgeyAxOiBbMiwgMl0gfSwgeyAzOiAxNywgNDogMiwgNTogMywgNjogNCwgNzogJFYwLCA4OiAkVjEsIDk6ICRWMiwgMTA6ICRWMywgMTE6IDUsIDEyOiAxMCwgMTg6ICRWNCwgMjI6ICRWNSwgMjU6ICRWNiwgMjY6ICRWNywgMjc6ICRWOCwgMjg6ICRWOSB9LCB7IDE6IFsyLCA4XSB9LCB7IDE6IFsyLCA0XSB9LCB7IDE6IFsyLCA1XSB9LCB7IDE6IFsyLCA2XSB9LCB7IDE6IFsyLCA3XSB9LCB7IDEzOiAxOCwgMTk6IFsxLCAxOV0gfSwgeyAxNTogWzEsIDIwXSB9LCB7IDE1OiBbMSwgMjFdIH0sIHsgMTU6IFsxLCAyMl0gfSwgeyAxNTogWzEsIDIzXSB9LCB7IDE1OiBbMSwgMjRdIH0sIHsgMTk6IFsyLCAxMV0gfSwgeyAxOiBbMiwgM10gfSwgeyAxNDogMjUsIDE2OiBbMSwgMjZdLCAyMTogJFZhIH0sIG8oWzE2LCAyMV0sIFsyLCAxMl0pLCB7IDIzOiAyOCwgMjk6IDI5LCAzMDogMzAsIDMxOiAzMSwgMzI6ICRWYiwgMzM6ICRWYywgMzQ6ICRWZCwgMzY6ICRWZSwgMzg6ICRWZiwgMzk6IDU4LCA0MDogNzAsIDQyOiA3MSwgNDQ6ICRWZywgNDY6ICRWaCwgNDc6ICRWaSwgNDg6ICRWaiwgNDk6ICRWaywgNTA6ICRWbCwgNTE6ICRWbSwgNTM6IDMyLCA1NDogJFZuLCA1NTogJFZvLCA1NjogJFZwLCA1NzogJFZxLCA1ODogJFZyLCA1OTogJFZzLCA2MDogJFZ0LCA2MTogJFZ1LCA2MjogJFZ2LCA2MzogJFZ3LCA2NDogJFZ4LCA2NTogJFZ5LCA2NjogJFZ6LCA2NzogJFZBLCA2ODogJFZCLCA2OTogJFZDLCA3MDogJFZELCA3MTogJFZFLCA3MjogJFZGLCA3MzogJFZHLCA3NDogJFZILCA3NTogJFZJLCA3NjogJFZKLCA3NzogJFZLLCA3ODogJFZMLCA3OTogJFZNLCA4MDogJFZOLCA4MTogJFZPLCA4MjogJFZQLCA4MzogJFZRLCA4NDogJFZSIH0sIHsgMjM6IDc5LCAyOTogMjksIDMwOiAzMCwgMzE6IDMxLCAzMjogJFZiLCAzMzogJFZjLCAzNDogJFZkLCAzNjogJFZlLCAzODogJFZmLCAzOTogNTgsIDQwOiA3MCwgNDI6IDcxLCA0NDogJFZnLCA0NjogJFZoLCA0NzogJFZpLCA0ODogJFZqLCA0OTogJFZrLCA1MDogJFZsLCA1MTogJFZtLCA1MzogMzIsIDU0OiAkVm4sIDU1OiAkVm8sIDU2OiAkVnAsIDU3OiAkVnEsIDU4OiAkVnIsIDU5OiAkVnMsIDYwOiAkVnQsIDYxOiAkVnUsIDYyOiAkVnYsIDYzOiAkVncsIDY0OiAkVngsIDY1OiAkVnksIDY2OiAkVnosIDY3OiAkVkEsIDY4OiAkVkIsIDY5OiAkVkMsIDcwOiAkVkQsIDcxOiAkVkUsIDcyOiAkVkYsIDczOiAkVkcsIDc0OiAkVkgsIDc1OiAkVkksIDc2OiAkVkosIDc3OiAkVkssIDc4OiAkVkwsIDc5OiAkVk0sIDgwOiAkVk4sIDgxOiAkVk8sIDgyOiAkVlAsIDgzOiAkVlEsIDg0OiAkVlIgfSwgeyAyMzogODAsIDI5OiAyOSwgMzA6IDMwLCAzMTogMzEsIDMyOiAkVmIsIDMzOiAkVmMsIDM0OiAkVmQsIDM2OiAkVmUsIDM4OiAkVmYsIDM5OiA1OCwgNDA6IDcwLCA0MjogNzEsIDQ0OiAkVmcsIDQ2OiAkVmgsIDQ3OiAkVmksIDQ4OiAkVmosIDQ5OiAkVmssIDUwOiAkVmwsIDUxOiAkVm0sIDUzOiAzMiwgNTQ6ICRWbiwgNTU6ICRWbywgNTY6ICRWcCwgNTc6ICRWcSwgNTg6ICRWciwgNTk6ICRWcywgNjA6ICRWdCwgNjE6ICRWdSwgNjI6ICRWdiwgNjM6ICRWdywgNjQ6ICRWeCwgNjU6ICRWeSwgNjY6ICRWeiwgNjc6ICRWQSwgNjg6ICRWQiwgNjk6ICRWQywgNzA6ICRWRCwgNzE6ICRWRSwgNzI6ICRWRiwgNzM6ICRWRywgNzQ6ICRWSCwgNzU6ICRWSSwgNzY6ICRWSiwgNzc6ICRWSywgNzg6ICRWTCwgNzk6ICRWTSwgODA6ICRWTiwgODE6ICRWTywgODI6ICRWUCwgODM6ICRWUSwgODQ6ICRWUiB9LCB7IDIzOiA4MSwgMjk6IDI5LCAzMDogMzAsIDMxOiAzMSwgMzI6ICRWYiwgMzM6ICRWYywgMzQ6ICRWZCwgMzY6ICRWZSwgMzg6ICRWZiwgMzk6IDU4LCA0MDogNzAsIDQyOiA3MSwgNDQ6ICRWZywgNDY6ICRWaCwgNDc6ICRWaSwgNDg6ICRWaiwgNDk6ICRWaywgNTA6ICRWbCwgNTE6ICRWbSwgNTM6IDMyLCA1NDogJFZuLCA1NTogJFZvLCA1NjogJFZwLCA1NzogJFZxLCA1ODogJFZyLCA1OTogJFZzLCA2MDogJFZ0LCA2MTogJFZ1LCA2MjogJFZ2LCA2MzogJFZ3LCA2NDogJFZ4LCA2NTogJFZ5LCA2NjogJFZ6LCA2NzogJFZBLCA2ODogJFZCLCA2OTogJFZDLCA3MDogJFZELCA3MTogJFZFLCA3MjogJFZGLCA3MzogJFZHLCA3NDogJFZILCA3NTogJFZJLCA3NjogJFZKLCA3NzogJFZLLCA3ODogJFZMLCA3OTogJFZNLCA4MDogJFZOLCA4MTogJFZPLCA4MjogJFZQLCA4MzogJFZRLCA4NDogJFZSIH0sIHsgMjM6IDgyLCAyOTogMjksIDMwOiAzMCwgMzE6IDMxLCAzMjogJFZiLCAzMzogJFZjLCAzNDogJFZkLCAzNjogJFZlLCAzODogJFZmLCAzOTogNTgsIDQwOiA3MCwgNDI6IDcxLCA0NDogJFZnLCA0NjogJFZoLCA0NzogJFZpLCA0ODogJFZqLCA0OTogJFZrLCA1MDogJFZsLCA1MTogJFZtLCA1MzogMzIsIDU0OiAkVm4sIDU1OiAkVm8sIDU2OiAkVnAsIDU3OiAkVnEsIDU4OiAkVnIsIDU5OiAkVnMsIDYwOiAkVnQsIDYxOiAkVnUsIDYyOiAkVnYsIDYzOiAkVncsIDY0OiAkVngsIDY1OiAkVnksIDY2OiAkVnosIDY3OiAkVkEsIDY4OiAkVkIsIDY5OiAkVkMsIDcwOiAkVkQsIDcxOiAkVkUsIDcyOiAkVkYsIDczOiAkVkcsIDc0OiAkVkgsIDc1OiAkVkksIDc2OiAkVkosIDc3OiAkVkssIDc4OiAkVkwsIDc5OiAkVk0sIDgwOiAkVk4sIDgxOiAkVk8sIDgyOiAkVlAsIDgzOiAkVlEsIDg0OiAkVlIgfSwgeyAxNTogWzEsIDgzXSB9LCB7IDE3OiA4NCwgMjA6IFsxLCA4NV0gfSwgeyAxNTogWzIsIDE0XSB9LCB7IDI0OiBbMSwgODZdIH0sIG8oJFZTLCBbMiwgMjBdLCB7IDUzOiAzMiwgMzk6IDU4LCA0MDogNzAsIDQyOiA3MSwgMzA6IDg3LCA0NDogJFZnLCA0NjogJFZoLCA0NzogJFZpLCA0ODogJFZqLCA0OTogJFZrLCA1MDogJFZsLCA1MTogJFZtLCA1NDogJFZuLCA1NTogJFZvLCA1NjogJFZwLCA1NzogJFZxLCA1ODogJFZyLCA1OTogJFZzLCA2MDogJFZ0LCA2MTogJFZ1LCA2MjogJFZ2LCA2MzogJFZ3LCA2NDogJFZ4LCA2NTogJFZ5LCA2NjogJFZ6LCA2NzogJFZBLCA2ODogJFZCLCA2OTogJFZDLCA3MDogJFZELCA3MTogJFZFLCA3MjogJFZGLCA3MzogJFZHLCA3NDogJFZILCA3NTogJFZJLCA3NjogJFZKLCA3NzogJFZLLCA3ODogJFZMLCA3OTogJFZNLCA4MDogJFZOLCA4MTogJFZPLCA4MjogJFZQLCA4MzogJFZRLCA4NDogJFZSIH0pLCBvKCRWUywgWzIsIDIxXSksIG8oJFZULCBbMiwgMjNdLCB7IDE1OiBbMSwgODhdIH0pLCBvKCRWUywgWzIsIDQzXSwgeyAxNTogWzEsIDg5XSB9KSwgbygkVlUsIFsyLCAyNl0pLCBvKCRWVSwgWzIsIDI3XSksIHsgMzU6IFsxLCA5MF0gfSwgeyAzNzogWzEsIDkxXSB9LCBvKCRWVSwgWzIsIDMwXSksIHsgNDU6IDkyLCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogOTgsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiA5OSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwMCwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwMSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwMiwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwMywgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwNCwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwNSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwNiwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwNywgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwOCwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDEwOSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExMCwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExMSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExMiwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExMywgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExNCwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExNSwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIHsgNDU6IDExNiwgODU6IDkzLCA4NjogJFZWLCA4NzogJFZXLCA4OTogJFZYLCA5MDogJFZZIH0sIG8oJFZaLCBbMiwgNjZdKSwgeyA0NTogMTE3LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTE4LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTE5LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTIwLCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTIxLCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTIyLCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTIzLCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTI0LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTI1LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTI2LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyA0NTogMTI3LCA4NTogOTMsIDg2OiAkVlYsIDg3OiAkVlcsIDg5OiAkVlgsIDkwOiAkVlkgfSwgeyAzMDogMTI4LCAzOTogNTgsIDQwOiA3MCwgNDI6IDcxLCA0NDogJFZnLCA0NjogJFZoLCA0NzogJFZpLCA0ODogJFZqLCA0OTogJFZrLCA1MDogJFZsLCA1MTogJFZtLCA1MzogMzIsIDU0OiAkVm4sIDU1OiAkVm8sIDU2OiAkVnAsIDU3OiAkVnEsIDU4OiAkVnIsIDU5OiAkVnMsIDYwOiAkVnQsIDYxOiAkVnUsIDYyOiAkVnYsIDYzOiAkVncsIDY0OiAkVngsIDY1OiAkVnksIDY2OiAkVnosIDY3OiAkVkEsIDY4OiAkVkIsIDY5OiAkVkMsIDcwOiAkVkQsIDcxOiAkVkUsIDcyOiAkVkYsIDczOiAkVkcsIDc0OiAkVkgsIDc1OiAkVkksIDc2OiAkVkosIDc3OiAkVkssIDc4OiAkVkwsIDc5OiAkVk0sIDgwOiAkVk4sIDgxOiAkVk8sIDgyOiAkVlAsIDgzOiAkVlEsIDg0OiAkVlIgfSwgeyAxNTogWzEsIDEzMF0sIDQzOiBbMSwgMTI5XSB9LCB7IDQ1OiAxMzEsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzIsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzMsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzQsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzUsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzYsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDQ1OiAxMzcsIDg1OiA5MywgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9LCB7IDI0OiBbMSwgMTM4XSB9LCB7IDI0OiBbMSwgMTM5XSB9LCB7IDI0OiBbMSwgMTQwXSB9LCB7IDI0OiBbMSwgMTQxXSB9LCBvKCRWXywgWzIsIDldKSwgeyAxNDogMTQyLCAyMTogJFZhIH0sIHsgMjE6IFsyLCAxM10gfSwgeyAxOiBbMiwgMTVdIH0sIG8oJFZTLCBbMiwgMjJdKSwgbygkVlQsIFsyLCAyNF0sIHsgMzE6IDMxLCAyOTogMTQzLCAzMjogJFZiLCAzMzogJFZjLCAzNDogJFZkLCAzNjogJFZlLCAzODogJFZmIH0pLCBvKCRWUywgWzIsIDQ0XSwgeyAyOTogMjksIDMwOiAzMCwgMzE6IDMxLCA1MzogMzIsIDM5OiA1OCwgNDA6IDcwLCA0MjogNzEsIDIzOiAxNDQsIDMyOiAkVmIsIDMzOiAkVmMsIDM0OiAkVmQsIDM2OiAkVmUsIDM4OiAkVmYsIDQ0OiAkVmcsIDQ2OiAkVmgsIDQ3OiAkVmksIDQ4OiAkVmosIDQ5OiAkVmssIDUwOiAkVmwsIDUxOiAkVm0sIDU0OiAkVm4sIDU1OiAkVm8sIDU2OiAkVnAsIDU3OiAkVnEsIDU4OiAkVnIsIDU5OiAkVnMsIDYwOiAkVnQsIDYxOiAkVnUsIDYyOiAkVnYsIDYzOiAkVncsIDY0OiAkVngsIDY1OiAkVnksIDY2OiAkVnosIDY3OiAkVkEsIDY4OiAkVkIsIDY5OiAkVkMsIDcwOiAkVkQsIDcxOiAkVkUsIDcyOiAkVkYsIDczOiAkVkcsIDc0OiAkVkgsIDc1OiAkVkksIDc2OiAkVkosIDc3OiAkVkssIDc4OiAkVkwsIDc5OiAkVk0sIDgwOiAkVk4sIDgxOiAkVk8sIDgyOiAkVlAsIDgzOiAkVlEsIDg0OiAkVlIgfSksIG8oJFZVLCBbMiwgMjhdKSwgbygkVlUsIFsyLCAyOV0pLCBvKCRWWiwgWzIsIDQ2XSksIG8oJFYkLCBbMiwgNzhdLCB7IDg1OiA5MywgNDU6IDE0NSwgODY6ICRWViwgODc6ICRWVywgODk6ICRWWCwgOTA6ICRWWSB9KSwgbygkVjAxLCBbMiwgODBdKSwgeyA4ODogWzEsIDE0Nl0gfSwgbygkVjAxLCBbMiwgODJdKSwgbygkVjAxLCBbMiwgODNdKSwgbygkVlosIFsyLCA0N10pLCBvKCRWWiwgWzIsIDQ4XSksIG8oJFZaLCBbMiwgNDldKSwgbygkVlosIFsyLCA1MF0pLCBvKCRWWiwgWzIsIDUxXSksIG8oJFZaLCBbMiwgNTJdKSwgbygkVlosIFsyLCA1M10pLCBvKCRWWiwgWzIsIDU0XSksIG8oJFZaLCBbMiwgNTVdKSwgbygkVlosIFsyLCA1Nl0pLCBvKCRWWiwgWzIsIDU3XSksIG8oJFZaLCBbMiwgNThdKSwgbygkVlosIFsyLCA1OV0pLCBvKCRWWiwgWzIsIDYwXSksIG8oJFZaLCBbMiwgNjFdKSwgbygkVlosIFsyLCA2Ml0pLCBvKCRWWiwgWzIsIDYzXSksIG8oJFZaLCBbMiwgNjRdKSwgbygkVlosIFsyLCA2NV0pLCBvKCRWWiwgWzIsIDY3XSksIG8oJFZaLCBbMiwgNjhdKSwgbygkVlosIFsyLCA2OV0pLCBvKCRWWiwgWzIsIDcwXSksIG8oJFZaLCBbMiwgNzFdKSwgbygkVlosIFsyLCA3Ml0pLCBvKCRWWiwgWzIsIDczXSksIG8oJFZaLCBbMiwgNzRdKSwgbygkVlosIFsyLCA3NV0pLCBvKCRWWiwgWzIsIDc2XSksIG8oJFZaLCBbMiwgNzddKSwgeyA0MTogMTQ3LCA1MjogWzEsIDE0OF0gfSwgeyAxNTogWzEsIDE0OV0gfSwgeyA0MzogWzEsIDE1MF0gfSwgbygkVjExLCBbMiwgMzVdKSwgbygkVjExLCBbMiwgMzZdKSwgbygkVjExLCBbMiwgMzddKSwgbygkVjExLCBbMiwgMzhdKSwgbygkVjExLCBbMiwgMzldKSwgbygkVjExLCBbMiwgNDBdKSwgbygkVjExLCBbMiwgNDFdKSwgeyAxOiBbMiwgMTZdIH0sIHsgMTogWzIsIDE3XSB9LCB7IDE6IFsyLCAxOF0gfSwgeyAxOiBbMiwgMTldIH0sIHsgMTU6IFsxLCAxNTFdIH0sIG8oJFZULCBbMiwgMjVdKSwgbygkVlMsIFsyLCA0NV0pLCBvKCRWJCwgWzIsIDc5XSksIG8oJFYwMSwgWzIsIDgxXSksIG8oJFZaLCBbMiwgMzFdKSwgbygkVlosIFsyLCA0Ml0pLCBvKCRWMjEsIFsyLCAzMl0pLCBvKCRWMjEsIFsyLCAzM10sIHsgMTU6IFsxLCAxNTJdIH0pLCBvKCRWXywgWzIsIDEwXSksIG8oJFYyMSwgWzIsIDM0XSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDI6IFsyLCAxXSwgMzogWzIsIDJdLCA1OiBbMiwgOF0sIDY6IFsyLCA0XSwgNzogWzIsIDVdLCA4OiBbMiwgNl0sIDk6IFsyLCA3XSwgMTY6IFsyLCAxMV0sIDE3OiBbMiwgM10sIDI3OiBbMiwgMTRdLCA4NTogWzIsIDEzXSwgODY6IFsyLCAxNV0sIDEzODogWzIsIDE2XSwgMTM5OiBbMiwgMTddLCAxNDA6IFsyLCAxOF0sIDE0MTogWzIsIDE5XSB9LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKSB8fCBsZXhlcjIubGV4KCkgfHwgRU9GO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHRzdGFjayA9IHRva2VuO1xuICAgICAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgfVxuICAgICAgdmFyIHN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgdmFyIGVyclN0ciA9IFwiXCI7XG4gICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxleGVyMi5zaG93UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyBsZXhlcjIuc2hvd1Bvc2l0aW9uKCkgKyBcIlxcbkV4cGVjdGluZyBcIiArIGV4cGVjdGVkLmpvaW4oXCIsIFwiKSArIFwiLCBnb3QgJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gRU9GID8gXCJlbmQgb2YgaW5wdXRcIiA6IFwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxleGVyMi5tYXRjaCxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICBsaW5lOiBsZXhlcjIueXlsaW5lbm8sXG4gICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2gobGV4ZXIyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaChsZXhlcjIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHl5bGVuZyA9IGxleGVyMi55eWxlbmc7XG4gICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyMi55eXRleHQ7XG4gICAgICAgICAgICAgIHl5bGluZW5vID0gbGV4ZXIyLnl5bGluZW5vO1xuICAgICAgICAgICAgICB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICB5eWxlbmcsXG4gICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICBzaGFyZWRTdGF0ZS55eSxcbiAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgIGxzdGFja1xuICAgICAgICAgICAgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBsZXhlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZXhlcjIgPSB7XG4gICAgICBFT0Y6IDEsXG4gICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHtcbiAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0LCB5eSkge1xuICAgICAgICB0aGlzLnl5ID0geXkgfHwgdGhpcy55eSB8fCB7fTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrID0gW1wiSU5JVElBTFwiXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiAwXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgICAgfSxcbiAgICAgIC8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbiAgICAgIHVucHV0OiBmdW5jdGlvbihjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbik7XG4gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbiAgICAgIG1vcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgIHJlamVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gcmV0YWluIGZpcnN0IG4gY2hhcmFjdGVycyBvZiB0aGUgbWF0Y2hcbiAgICAgIGxlc3M6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyBhbHJlYWR5IG1hdGNoZWQgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdXBjb21pbmcgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMyID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMyICsgXCJeXCI7XG4gICAgICB9LFxuICAgICAgLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG4gICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGluZXMsIGJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgIHl5bGxvYzoge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgIG1hdGNoOiB0aGlzLm1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgeXlsZW5nOiB0aGlzLnl5bGVuZyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgIF9pbnB1dDogdGhpcy5faW5wdXQsXG4gICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgIGZvciAodmFyIGsgaW4gYmFja3VwKSB7XG4gICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICB0aGlzLnl5dGV4dCA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFVucmVjb2duaXplZCB0ZXh0LlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxuICAgICAgbGV4OiBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyBwb3AgdGhlIHByZXZpb3VzbHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvZmYgdGhlIGNvbmRpdGlvbiBzdGFja1xuICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbMF07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBwcm9kdWNlIHRoZSBsZXhlciBydWxlIHNldCB3aGljaCBpcyBhY3RpdmUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZVxuICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW1wiSU5JVElBTFwiXS5ydWxlcztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGU7IHdoZW4gYW4gaW5kZXggYXJndW1lbnQgaXMgcHJvdmlkZWQgaXQgcHJvZHVjZXMgdGhlIE4tdGggcHJldmlvdXMgY29uZGl0aW9uIHN0YXRlLCBpZiBhdmFpbGFibGVcbiAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiSU5JVElBTFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWxpYXMgZm9yIGJlZ2luKGNvbmRpdGlvbilcbiAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbiAgICAgIHN0YXRlU3RhY2tTaXplOiBmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHt9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxODtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gOTtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gMTA7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyMTtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgcmV0dXJuIDMyO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICByZXR1cm4gMzM7XG4gICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMzQ7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY190aXRsZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDM2O1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIGM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDIyO1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gMjU7XG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgcmV0dXJuIDI3O1xuICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICByZXR1cm4gMjg7XG4gICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJwZXJzb25fZXh0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU1O1xuICAgICAgICAgIGNhc2UgMjg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwicGVyc29uXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU0O1xuICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3lzdGVtX2V4dF9xdWV1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA2MTtcbiAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInN5c3RlbV9leHRfZGJcIik7XG4gICAgICAgICAgICByZXR1cm4gNjA7XG4gICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJzeXN0ZW1fZXh0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU5O1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3lzdGVtX3F1ZXVlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU4O1xuICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3lzdGVtX2RiXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU3O1xuICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3lzdGVtXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU2O1xuICAgICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYm91bmRhcnlcIik7XG4gICAgICAgICAgICByZXR1cm4gNDc7XG4gICAgICAgICAgY2FzZSAzNjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJlbnRlcnByaXNlX2JvdW5kYXJ5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQ0O1xuICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3lzdGVtX2JvdW5kYXJ5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQ2O1xuICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29udGFpbmVyX2V4dF9xdWV1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA2NztcbiAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImNvbnRhaW5lcl9leHRfZGJcIik7XG4gICAgICAgICAgICByZXR1cm4gNjY7XG4gICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjb250YWluZXJfZXh0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDY1O1xuICAgICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29udGFpbmVyX3F1ZXVlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDY0O1xuICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29udGFpbmVyX2RiXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDYzO1xuICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29udGFpbmVyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDYyO1xuICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29udGFpbmVyX2JvdW5kYXJ5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQ4O1xuICAgICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29tcG9uZW50X2V4dF9xdWV1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA3MztcbiAgICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImNvbXBvbmVudF9leHRfZGJcIik7XG4gICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjb21wb25lbnRfZXh0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDcxO1xuICAgICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29tcG9uZW50X3F1ZXVlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDcwO1xuICAgICAgICAgIGNhc2UgNDk6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29tcG9uZW50X2RiXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDY5O1xuICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY29tcG9uZW50XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDY4O1xuICAgICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwibm9kZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0OTtcbiAgICAgICAgICBjYXNlIDUyOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIm5vZGVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDk7XG4gICAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJub2RlX2xcIik7XG4gICAgICAgICAgICByZXR1cm4gNTA7XG4gICAgICAgICAgY2FzZSA1NDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJub2RlX3JcIik7XG4gICAgICAgICAgICByZXR1cm4gNTE7XG4gICAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJyZWxcIik7XG4gICAgICAgICAgICByZXR1cm4gNzQ7XG4gICAgICAgICAgY2FzZSA1NjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJiaXJlbFwiKTtcbiAgICAgICAgICAgIHJldHVybiA3NTtcbiAgICAgICAgICBjYXNlIDU3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInJlbF91XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDc2O1xuICAgICAgICAgIGNhc2UgNTg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwicmVsX3VcIik7XG4gICAgICAgICAgICByZXR1cm4gNzY7XG4gICAgICAgICAgY2FzZSA1OTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJyZWxfZFwiKTtcbiAgICAgICAgICAgIHJldHVybiA3NztcbiAgICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInJlbF9kXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwicmVsX2xcIik7XG4gICAgICAgICAgICByZXR1cm4gNzg7XG4gICAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJyZWxfbFwiKTtcbiAgICAgICAgICAgIHJldHVybiA3ODtcbiAgICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInJlbF9yXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDc5O1xuICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwicmVsX3JcIik7XG4gICAgICAgICAgICByZXR1cm4gNzk7XG4gICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJyZWxfYlwiKTtcbiAgICAgICAgICAgIHJldHVybiA4MDtcbiAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInJlbF9pbmRleFwiKTtcbiAgICAgICAgICAgIHJldHVybiA4MTtcbiAgICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInVwZGF0ZV9lbF9zdHlsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA4MjtcbiAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInVwZGF0ZV9yZWxfc3R5bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gODM7XG4gICAgICAgICAgY2FzZSA2OTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJ1cGRhdGVfbGF5b3V0X2NvbmZpZ1wiKTtcbiAgICAgICAgICAgIHJldHVybiA4NDtcbiAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgcmV0dXJuIFwiRU9GX0lOX1NUUlVDVFwiO1xuICAgICAgICAgIGNhc2UgNzE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYXR0cmlidXRlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFwiQVRUUklCVVRFX0VNUFRZXCI7XG4gICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhdHRyaWJ1dGVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA3NDpcbiAgICAgICAgICAgIHJldHVybiA5MDtcbiAgICAgICAgICBjYXNlIDc1OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgIHJldHVybiA5MDtcbiAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInN0cmluZ1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNzg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDc5OlxuICAgICAgICAgICAgcmV0dXJuIFwiU1RSXCI7XG4gICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJzdHJpbmdfa3ZcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDgxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInN0cmluZ19rdl9rZXlcIik7XG4gICAgICAgICAgICByZXR1cm4gXCJTVFJfS0VZXCI7XG4gICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJzdHJpbmdfa3ZfdmFsdWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgcmV0dXJuIFwiU1RSX1ZBTFVFXCI7XG4gICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgICByZXR1cm4gXCJTVFJcIjtcbiAgICAgICAgICBjYXNlIDg2OlxuICAgICAgICAgICAgcmV0dXJuIFwiTEJSQUNFXCI7XG4gICAgICAgICAgY2FzZSA4NzpcbiAgICAgICAgICAgIHJldHVybiBcIlJCUkFDRVwiO1xuICAgICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgICByZXR1cm4gXCJTUEFDRVwiO1xuICAgICAgICAgIGNhc2UgODk6XG4gICAgICAgICAgICByZXR1cm4gXCJFT0xcIjtcbiAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS8sIC9eKD86LipkaXJlY3Rpb25cXHMrVEJbXlxcbl0qKS8sIC9eKD86LipkaXJlY3Rpb25cXHMrQlRbXlxcbl0qKS8sIC9eKD86LipkaXJlY3Rpb25cXHMrUkxbXlxcbl0qKS8sIC9eKD86LipkaXJlY3Rpb25cXHMrTFJbXlxcbl0qKS8sIC9eKD86KCg/Oig/IVxcfSUlKVteOi5dKSopKS8sIC9eKD86OikvLCAvXig/OlxcfSUlKS8sIC9eKD86KCg/Oig/IVxcfSUlKS58XFxuKSopKS8sIC9eKD86dGl0bGVcXHNbXiNcXG47XSspLywgL14oPzphY2NEZXNjcmlwdGlvblxcc1teI1xcbjtdKykvLCAvXig/OmFjY1RpdGxlXFxzKjpcXHMqKS8sIC9eKD86KD8hXFxufHwpKlteXFxuXSopLywgL14oPzphY2NEZXNjclxccyo6XFxzKikvLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS8sIC9eKD86YWNjRGVzY3JcXHMqXFx7XFxzKikvLCAvXig/OltcXH1dKS8sIC9eKD86W15cXH1dKikvLCAvXig/OiUlKD8hXFx7KSpbXlxcbl0qKFxccj9cXG4/KSspLywgL14oPzolJVteXFxuXSooXFxyP1xcbikqKS8sIC9eKD86XFxzKihcXHI/XFxuKSspLywgL14oPzpcXHMrKS8sIC9eKD86QzRDb250ZXh0XFxiKS8sIC9eKD86QzRDb250YWluZXJcXGIpLywgL14oPzpDNENvbXBvbmVudFxcYikvLCAvXig/OkM0RHluYW1pY1xcYikvLCAvXig/OkM0RGVwbG95bWVudFxcYikvLCAvXig/OlBlcnNvbl9FeHRcXGIpLywgL14oPzpQZXJzb25cXGIpLywgL14oPzpTeXN0ZW1RdWV1ZV9FeHRcXGIpLywgL14oPzpTeXN0ZW1EYl9FeHRcXGIpLywgL14oPzpTeXN0ZW1fRXh0XFxiKS8sIC9eKD86U3lzdGVtUXVldWVcXGIpLywgL14oPzpTeXN0ZW1EYlxcYikvLCAvXig/OlN5c3RlbVxcYikvLCAvXig/OkJvdW5kYXJ5XFxiKS8sIC9eKD86RW50ZXJwcmlzZV9Cb3VuZGFyeVxcYikvLCAvXig/OlN5c3RlbV9Cb3VuZGFyeVxcYikvLCAvXig/OkNvbnRhaW5lclF1ZXVlX0V4dFxcYikvLCAvXig/OkNvbnRhaW5lckRiX0V4dFxcYikvLCAvXig/OkNvbnRhaW5lcl9FeHRcXGIpLywgL14oPzpDb250YWluZXJRdWV1ZVxcYikvLCAvXig/OkNvbnRhaW5lckRiXFxiKS8sIC9eKD86Q29udGFpbmVyXFxiKS8sIC9eKD86Q29udGFpbmVyX0JvdW5kYXJ5XFxiKS8sIC9eKD86Q29tcG9uZW50UXVldWVfRXh0XFxiKS8sIC9eKD86Q29tcG9uZW50RGJfRXh0XFxiKS8sIC9eKD86Q29tcG9uZW50X0V4dFxcYikvLCAvXig/OkNvbXBvbmVudFF1ZXVlXFxiKS8sIC9eKD86Q29tcG9uZW50RGJcXGIpLywgL14oPzpDb21wb25lbnRcXGIpLywgL14oPzpEZXBsb3ltZW50X05vZGVcXGIpLywgL14oPzpOb2RlXFxiKS8sIC9eKD86Tm9kZV9MXFxiKS8sIC9eKD86Tm9kZV9SXFxiKS8sIC9eKD86UmVsXFxiKS8sIC9eKD86QmlSZWxcXGIpLywgL14oPzpSZWxfVXBcXGIpLywgL14oPzpSZWxfVVxcYikvLCAvXig/OlJlbF9Eb3duXFxiKS8sIC9eKD86UmVsX0RcXGIpLywgL14oPzpSZWxfTGVmdFxcYikvLCAvXig/OlJlbF9MXFxiKS8sIC9eKD86UmVsX1JpZ2h0XFxiKS8sIC9eKD86UmVsX1JcXGIpLywgL14oPzpSZWxfQmFja1xcYikvLCAvXig/OlJlbEluZGV4XFxiKS8sIC9eKD86VXBkYXRlRWxlbWVudFN0eWxlXFxiKS8sIC9eKD86VXBkYXRlUmVsU3R5bGVcXGIpLywgL14oPzpVcGRhdGVMYXlvdXRDb25maWdcXGIpLywgL14oPzokKS8sIC9eKD86WyhdWyBdKlssXSkvLCAvXig/OlsoXSkvLCAvXig/OlspXSkvLCAvXig/OiwsKS8sIC9eKD86LCkvLCAvXig/OlsgXSpbXCJdW1wiXSkvLCAvXig/OlsgXSpbXCJdKS8sIC9eKD86W1wiXSkvLCAvXig/OlteXCJdKikvLCAvXig/OlsgXSpbXFwkXSkvLCAvXig/OltePV0qKS8sIC9eKD86Wz1dWyBdKltcIl0pLywgL14oPzpbXlwiXSspLywgL14oPzpbXCJdKS8sIC9eKD86W14sXSspLywgL14oPzpcXHspLywgL14oPzpcXH0pLywgL14oPzpbXFxzXSspLywgL14oPzpbXFxuXFxyXSspLywgL14oPzokKS9dLFxuICAgICAgY29uZGl0aW9uczogeyBcImFjY19kZXNjcl9tdWx0aWxpbmVcIjogeyBcInJ1bGVzXCI6IFsxNiwgMTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzE0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFsxMl0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2xvc2VfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhcmdfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbNywgOF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFs2LCA3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cmluZ19rdl92YWx1ZVwiOiB7IFwicnVsZXNcIjogWzgzLCA4NF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3RyaW5nX2t2X2tleVwiOiB7IFwicnVsZXNcIjogWzgyXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJzdHJpbmdfa3ZcIjogeyBcInJ1bGVzXCI6IFs4MV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3RyaW5nXCI6IHsgXCJydWxlc1wiOiBbNzgsIDc5XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhdHRyaWJ1dGVcIjogeyBcInJ1bGVzXCI6IFs3MywgNzQsIDc1LCA3NiwgNzcsIDgwLCA4NV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidXBkYXRlX2xheW91dF9jb25maWdcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidXBkYXRlX3JlbF9zdHlsZVwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ1cGRhdGVfZWxfc3R5bGVcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX2JcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX3JcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX2xcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX2RcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX3VcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicmVsX2JpXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJyZWxcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwibm9kZV9yXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm5vZGVfbFwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJub2RlXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImluZGV4XCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJyZWxfaW5kZXhcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY29tcG9uZW50X2V4dF9xdWV1ZVwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY29tcG9uZW50X2V4dF9kYlwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb21wb25lbnRfZXh0XCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNvbXBvbmVudF9xdWV1ZVwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb21wb25lbnRfZGJcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY29tcG9uZW50XCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNvbnRhaW5lcl9ib3VuZGFyeVwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb250YWluZXJfZXh0X3F1ZXVlXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb250YWluZXJfZXh0X2RiXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNvbnRhaW5lcl9leHRcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY29udGFpbmVyX3F1ZXVlXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNvbnRhaW5lcl9kYlwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb250YWluZXJcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYmlyZWxcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3lzdGVtX2JvdW5kYXJ5XCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImVudGVycHJpc2VfYm91bmRhcnlcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYm91bmRhcnlcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3lzdGVtX2V4dF9xdWV1ZVwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJzeXN0ZW1fZXh0X2RiXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN5c3RlbV9leHRcIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3lzdGVtX3F1ZXVlXCI6IHsgXCJydWxlc1wiOiBbNzAsIDcxLCA3MiwgNzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN5c3RlbV9kYlwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJzeXN0ZW1cIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwicGVyc29uX2V4dFwiOiB7IFwicnVsZXNcIjogWzcwLCA3MSwgNzIsIDczXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJwZXJzb25cIjogeyBcInJ1bGVzXCI6IFs3MCwgNzEsIDcyLCA3M10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSU5JVElBTFwiOiB7IFwicnVsZXNcIjogWzAsIDEsIDIsIDMsIDQsIDksIDEwLCAxMSwgMTMsIDE1LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgODYsIDg3LCA4OCwgODksIDkwXSwgXCJpbmNsdXNpdmVcIjogdHJ1ZSB9IH1cbiAgICB9O1xuICAgIHJldHVybiBsZXhlcjI7XG4gIH0oKTtcbiAgcGFyc2VyMi5sZXhlciA9IGxleGVyO1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgdGhpcy55eSA9IHt9O1xuICB9XG4gIFBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXIyO1xuICBwYXJzZXIyLlBhcnNlciA9IFBhcnNlcjtcbiAgcmV0dXJuIG5ldyBQYXJzZXIoKTtcbn0oKTtcbnBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5jb25zdCBjNFBhcnNlciA9IHBhcnNlcjtcbmxldCBjNFNoYXBlQXJyYXkgPSBbXTtcbmxldCBib3VuZGFyeVBhcnNlU3RhY2sgPSBbXCJcIl07XG5sZXQgY3VycmVudEJvdW5kYXJ5UGFyc2UgPSBcImdsb2JhbFwiO1xubGV0IHBhcmVudEJvdW5kYXJ5UGFyc2UgPSBcIlwiO1xubGV0IGJvdW5kYXJ5cyA9IFtcbiAge1xuICAgIGFsaWFzOiBcImdsb2JhbFwiLFxuICAgIGxhYmVsOiB7IHRleHQ6IFwiZ2xvYmFsXCIgfSxcbiAgICB0eXBlOiB7IHRleHQ6IFwiZ2xvYmFsXCIgfSxcbiAgICB0YWdzOiBudWxsLFxuICAgIGxpbms6IG51bGwsXG4gICAgcGFyZW50Qm91bmRhcnk6IFwiXCJcbiAgfVxuXTtcbmxldCByZWxzID0gW107XG5sZXQgdGl0bGUgPSBcIlwiO1xubGV0IHdyYXBFbmFibGVkID0gZmFsc2U7XG5sZXQgYzRTaGFwZUluUm93JDEgPSA0O1xubGV0IGM0Qm91bmRhcnlJblJvdyQxID0gMjtcbnZhciBjNFR5cGU7XG5jb25zdCBnZXRDNFR5cGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGM0VHlwZTtcbn07XG5jb25zdCBzZXRDNFR5cGUgPSBmdW5jdGlvbihjNFR5cGVQYXJhbSkge1xuICBsZXQgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplVGV4dChjNFR5cGVQYXJhbSwgZ2V0Q29uZmlnKCkpO1xuICBjNFR5cGUgPSBzYW5pdGl6ZWRUZXh0O1xufTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBhZGRSZWwgPSBmdW5jdGlvbih0eXBlLCBmcm9tLCB0bywgbGFiZWwsIHRlY2huLCBkZXNjciwgc3ByaXRlLCB0YWdzLCBsaW5rKSB7XG4gIGlmICh0eXBlID09PSB2b2lkIDAgfHwgdHlwZSA9PT0gbnVsbCB8fCBmcm9tID09PSB2b2lkIDAgfHwgZnJvbSA9PT0gbnVsbCB8fCB0byA9PT0gdm9pZCAwIHx8IHRvID09PSBudWxsIHx8IGxhYmVsID09PSB2b2lkIDAgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHJlbCA9IHt9O1xuICBjb25zdCBvbGQgPSByZWxzLmZpbmQoKHJlbDIpID0+IHJlbDIuZnJvbSA9PT0gZnJvbSAmJiByZWwyLnRvID09PSB0byk7XG4gIGlmIChvbGQpIHtcbiAgICByZWwgPSBvbGQ7XG4gIH0gZWxzZSB7XG4gICAgcmVscy5wdXNoKHJlbCk7XG4gIH1cbiAgcmVsLnR5cGUgPSB0eXBlO1xuICByZWwuZnJvbSA9IGZyb207XG4gIHJlbC50byA9IHRvO1xuICByZWwubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIGlmICh0ZWNobiA9PT0gdm9pZCAwIHx8IHRlY2huID09PSBudWxsKSB7XG4gICAgcmVsLnRlY2huID0geyB0ZXh0OiBcIlwiIH07XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB0ZWNobiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHRlY2huKVswXTtcbiAgICAgIHJlbFtrZXldID0geyB0ZXh0OiB2YWx1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWwudGVjaG4gPSB7IHRleHQ6IHRlY2huIH07XG4gICAgfVxuICB9XG4gIGlmIChkZXNjciA9PT0gdm9pZCAwIHx8IGRlc2NyID09PSBudWxsKSB7XG4gICAgcmVsLmRlc2NyID0geyB0ZXh0OiBcIlwiIH07XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBkZXNjciA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKGRlc2NyKVswXTtcbiAgICAgIHJlbFtrZXldID0geyB0ZXh0OiB2YWx1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWwuZGVzY3IgPSB7IHRleHQ6IGRlc2NyIH07XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2Ygc3ByaXRlID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHNwcml0ZSlbMF07XG4gICAgcmVsW2tleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZWwuc3ByaXRlID0gc3ByaXRlO1xuICB9XG4gIGlmICh0eXBlb2YgdGFncyA9PT0gXCJvYmplY3RcIikge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0YWdzKVswXTtcbiAgICByZWxba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJlbC50YWdzID0gdGFncztcbiAgfVxuICBpZiAodHlwZW9mIGxpbmsgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMobGluaylbMF07XG4gICAgcmVsW2tleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZWwubGluayA9IGxpbms7XG4gIH1cbiAgcmVsLndyYXAgPSBhdXRvV3JhcCgpO1xufTtcbmNvbnN0IGFkZFBlcnNvbk9yU3lzdGVtID0gZnVuY3Rpb24odHlwZUM0U2hhcGUsIGFsaWFzLCBsYWJlbCwgZGVzY3IsIHNwcml0ZSwgdGFncywgbGluaykge1xuICBpZiAoYWxpYXMgPT09IG51bGwgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHBlcnNvbk9yU3lzdGVtID0ge307XG4gIGNvbnN0IG9sZCA9IGM0U2hhcGVBcnJheS5maW5kKChwZXJzb25PclN5c3RlbTIpID0+IHBlcnNvbk9yU3lzdGVtMi5hbGlhcyA9PT0gYWxpYXMpO1xuICBpZiAob2xkICYmIGFsaWFzID09PSBvbGQuYWxpYXMpIHtcbiAgICBwZXJzb25PclN5c3RlbSA9IG9sZDtcbiAgfSBlbHNlIHtcbiAgICBwZXJzb25PclN5c3RlbS5hbGlhcyA9IGFsaWFzO1xuICAgIGM0U2hhcGVBcnJheS5wdXNoKHBlcnNvbk9yU3lzdGVtKTtcbiAgfVxuICBpZiAobGFiZWwgPT09IHZvaWQgMCB8fCBsYWJlbCA9PT0gbnVsbCkge1xuICAgIHBlcnNvbk9yU3lzdGVtLmxhYmVsID0geyB0ZXh0OiBcIlwiIH07XG4gIH0gZWxzZSB7XG4gICAgcGVyc29uT3JTeXN0ZW0ubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIH1cbiAgaWYgKGRlc2NyID09PSB2b2lkIDAgfHwgZGVzY3IgPT09IG51bGwpIHtcbiAgICBwZXJzb25PclN5c3RlbS5kZXNjciA9IHsgdGV4dDogXCJcIiB9O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZGVzY3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhkZXNjcilbMF07XG4gICAgICBwZXJzb25PclN5c3RlbVtrZXldID0geyB0ZXh0OiB2YWx1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBwZXJzb25PclN5c3RlbS5kZXNjciA9IHsgdGV4dDogZGVzY3IgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBzcHJpdGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoc3ByaXRlKVswXTtcbiAgICBwZXJzb25PclN5c3RlbVtrZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcGVyc29uT3JTeXN0ZW0uc3ByaXRlID0gc3ByaXRlO1xuICB9XG4gIGlmICh0eXBlb2YgdGFncyA9PT0gXCJvYmplY3RcIikge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0YWdzKVswXTtcbiAgICBwZXJzb25PclN5c3RlbVtrZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcGVyc29uT3JTeXN0ZW0udGFncyA9IHRhZ3M7XG4gIH1cbiAgaWYgKHR5cGVvZiBsaW5rID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKGxpbmspWzBdO1xuICAgIHBlcnNvbk9yU3lzdGVtW2tleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBwZXJzb25PclN5c3RlbS5saW5rID0gbGluaztcbiAgfVxuICBwZXJzb25PclN5c3RlbS50eXBlQzRTaGFwZSA9IHsgdGV4dDogdHlwZUM0U2hhcGUgfTtcbiAgcGVyc29uT3JTeXN0ZW0ucGFyZW50Qm91bmRhcnkgPSBjdXJyZW50Qm91bmRhcnlQYXJzZTtcbiAgcGVyc29uT3JTeXN0ZW0ud3JhcCA9IGF1dG9XcmFwKCk7XG59O1xuY29uc3QgYWRkQ29udGFpbmVyID0gZnVuY3Rpb24odHlwZUM0U2hhcGUsIGFsaWFzLCBsYWJlbCwgdGVjaG4sIGRlc2NyLCBzcHJpdGUsIHRhZ3MsIGxpbmspIHtcbiAgaWYgKGFsaWFzID09PSBudWxsIHx8IGxhYmVsID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBjb250YWluZXIgPSB7fTtcbiAgY29uc3Qgb2xkID0gYzRTaGFwZUFycmF5LmZpbmQoKGNvbnRhaW5lcjIpID0+IGNvbnRhaW5lcjIuYWxpYXMgPT09IGFsaWFzKTtcbiAgaWYgKG9sZCAmJiBhbGlhcyA9PT0gb2xkLmFsaWFzKSB7XG4gICAgY29udGFpbmVyID0gb2xkO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5hbGlhcyA9IGFsaWFzO1xuICAgIGM0U2hhcGVBcnJheS5wdXNoKGNvbnRhaW5lcik7XG4gIH1cbiAgaWYgKGxhYmVsID09PSB2b2lkIDAgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICBjb250YWluZXIubGFiZWwgPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIH1cbiAgaWYgKHRlY2huID09PSB2b2lkIDAgfHwgdGVjaG4gPT09IG51bGwpIHtcbiAgICBjb250YWluZXIudGVjaG4gPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHRlY2huID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXModGVjaG4pWzBdO1xuICAgICAgY29udGFpbmVyW2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci50ZWNobiA9IHsgdGV4dDogdGVjaG4gfTtcbiAgICB9XG4gIH1cbiAgaWYgKGRlc2NyID09PSB2b2lkIDAgfHwgZGVzY3IgPT09IG51bGwpIHtcbiAgICBjb250YWluZXIuZGVzY3IgPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGRlc2NyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoZGVzY3IpWzBdO1xuICAgICAgY29udGFpbmVyW2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5kZXNjciA9IHsgdGV4dDogZGVzY3IgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBzcHJpdGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoc3ByaXRlKVswXTtcbiAgICBjb250YWluZXJba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5zcHJpdGUgPSBzcHJpdGU7XG4gIH1cbiAgaWYgKHR5cGVvZiB0YWdzID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHRhZ3MpWzBdO1xuICAgIGNvbnRhaW5lcltrZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyLnRhZ3MgPSB0YWdzO1xuICB9XG4gIGlmICh0eXBlb2YgbGluayA9PT0gXCJvYmplY3RcIikge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhsaW5rKVswXTtcbiAgICBjb250YWluZXJba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5saW5rID0gbGluaztcbiAgfVxuICBjb250YWluZXIud3JhcCA9IGF1dG9XcmFwKCk7XG4gIGNvbnRhaW5lci50eXBlQzRTaGFwZSA9IHsgdGV4dDogdHlwZUM0U2hhcGUgfTtcbiAgY29udGFpbmVyLnBhcmVudEJvdW5kYXJ5ID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG59O1xuY29uc3QgYWRkQ29tcG9uZW50ID0gZnVuY3Rpb24odHlwZUM0U2hhcGUsIGFsaWFzLCBsYWJlbCwgdGVjaG4sIGRlc2NyLCBzcHJpdGUsIHRhZ3MsIGxpbmspIHtcbiAgaWYgKGFsaWFzID09PSBudWxsIHx8IGxhYmVsID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBjb21wb25lbnQgPSB7fTtcbiAgY29uc3Qgb2xkID0gYzRTaGFwZUFycmF5LmZpbmQoKGNvbXBvbmVudDIpID0+IGNvbXBvbmVudDIuYWxpYXMgPT09IGFsaWFzKTtcbiAgaWYgKG9sZCAmJiBhbGlhcyA9PT0gb2xkLmFsaWFzKSB7XG4gICAgY29tcG9uZW50ID0gb2xkO1xuICB9IGVsc2Uge1xuICAgIGNvbXBvbmVudC5hbGlhcyA9IGFsaWFzO1xuICAgIGM0U2hhcGVBcnJheS5wdXNoKGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKGxhYmVsID09PSB2b2lkIDAgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICBjb21wb25lbnQubGFiZWwgPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBjb21wb25lbnQubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIH1cbiAgaWYgKHRlY2huID09PSB2b2lkIDAgfHwgdGVjaG4gPT09IG51bGwpIHtcbiAgICBjb21wb25lbnQudGVjaG4gPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHRlY2huID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXModGVjaG4pWzBdO1xuICAgICAgY29tcG9uZW50W2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC50ZWNobiA9IHsgdGV4dDogdGVjaG4gfTtcbiAgICB9XG4gIH1cbiAgaWYgKGRlc2NyID09PSB2b2lkIDAgfHwgZGVzY3IgPT09IG51bGwpIHtcbiAgICBjb21wb25lbnQuZGVzY3IgPSB7IHRleHQ6IFwiXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGRlc2NyID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoZGVzY3IpWzBdO1xuICAgICAgY29tcG9uZW50W2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC5kZXNjciA9IHsgdGV4dDogZGVzY3IgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBzcHJpdGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoc3ByaXRlKVswXTtcbiAgICBjb21wb25lbnRba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbXBvbmVudC5zcHJpdGUgPSBzcHJpdGU7XG4gIH1cbiAgaWYgKHR5cGVvZiB0YWdzID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHRhZ3MpWzBdO1xuICAgIGNvbXBvbmVudFtrZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgY29tcG9uZW50LnRhZ3MgPSB0YWdzO1xuICB9XG4gIGlmICh0eXBlb2YgbGluayA9PT0gXCJvYmplY3RcIikge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhsaW5rKVswXTtcbiAgICBjb21wb25lbnRba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNvbXBvbmVudC5saW5rID0gbGluaztcbiAgfVxuICBjb21wb25lbnQud3JhcCA9IGF1dG9XcmFwKCk7XG4gIGNvbXBvbmVudC50eXBlQzRTaGFwZSA9IHsgdGV4dDogdHlwZUM0U2hhcGUgfTtcbiAgY29tcG9uZW50LnBhcmVudEJvdW5kYXJ5ID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG59O1xuY29uc3QgYWRkUGVyc29uT3JTeXN0ZW1Cb3VuZGFyeSA9IGZ1bmN0aW9uKGFsaWFzLCBsYWJlbCwgdHlwZSwgdGFncywgbGluaykge1xuICBpZiAoYWxpYXMgPT09IG51bGwgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGJvdW5kYXJ5ID0ge307XG4gIGNvbnN0IG9sZCA9IGJvdW5kYXJ5cy5maW5kKChib3VuZGFyeTIpID0+IGJvdW5kYXJ5Mi5hbGlhcyA9PT0gYWxpYXMpO1xuICBpZiAob2xkICYmIGFsaWFzID09PSBvbGQuYWxpYXMpIHtcbiAgICBib3VuZGFyeSA9IG9sZDtcbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS5hbGlhcyA9IGFsaWFzO1xuICAgIGJvdW5kYXJ5cy5wdXNoKGJvdW5kYXJ5KTtcbiAgfVxuICBpZiAobGFiZWwgPT09IHZvaWQgMCB8fCBsYWJlbCA9PT0gbnVsbCkge1xuICAgIGJvdW5kYXJ5LmxhYmVsID0geyB0ZXh0OiBcIlwiIH07XG4gIH0gZWxzZSB7XG4gICAgYm91bmRhcnkubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IHZvaWQgMCB8fCB0eXBlID09PSBudWxsKSB7XG4gICAgYm91bmRhcnkudHlwZSA9IHsgdGV4dDogXCJzeXN0ZW1cIiB9O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHR5cGUpWzBdO1xuICAgICAgYm91bmRhcnlba2V5XSA9IHsgdGV4dDogdmFsdWUgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm91bmRhcnkudHlwZSA9IHsgdGV4dDogdHlwZSB9O1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIHRhZ3MgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXModGFncylbMF07XG4gICAgYm91bmRhcnlba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LnRhZ3MgPSB0YWdzO1xuICB9XG4gIGlmICh0eXBlb2YgbGluayA9PT0gXCJvYmplY3RcIikge1xuICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhsaW5rKVswXTtcbiAgICBib3VuZGFyeVtrZXldID0gdmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgYm91bmRhcnkubGluayA9IGxpbms7XG4gIH1cbiAgYm91bmRhcnkucGFyZW50Qm91bmRhcnkgPSBjdXJyZW50Qm91bmRhcnlQYXJzZTtcbiAgYm91bmRhcnkud3JhcCA9IGF1dG9XcmFwKCk7XG4gIHBhcmVudEJvdW5kYXJ5UGFyc2UgPSBjdXJyZW50Qm91bmRhcnlQYXJzZTtcbiAgY3VycmVudEJvdW5kYXJ5UGFyc2UgPSBhbGlhcztcbiAgYm91bmRhcnlQYXJzZVN0YWNrLnB1c2gocGFyZW50Qm91bmRhcnlQYXJzZSk7XG59O1xuY29uc3QgYWRkQ29udGFpbmVyQm91bmRhcnkgPSBmdW5jdGlvbihhbGlhcywgbGFiZWwsIHR5cGUsIHRhZ3MsIGxpbmspIHtcbiAgaWYgKGFsaWFzID09PSBudWxsIHx8IGxhYmVsID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBib3VuZGFyeSA9IHt9O1xuICBjb25zdCBvbGQgPSBib3VuZGFyeXMuZmluZCgoYm91bmRhcnkyKSA9PiBib3VuZGFyeTIuYWxpYXMgPT09IGFsaWFzKTtcbiAgaWYgKG9sZCAmJiBhbGlhcyA9PT0gb2xkLmFsaWFzKSB7XG4gICAgYm91bmRhcnkgPSBvbGQ7XG4gIH0gZWxzZSB7XG4gICAgYm91bmRhcnkuYWxpYXMgPSBhbGlhcztcbiAgICBib3VuZGFyeXMucHVzaChib3VuZGFyeSk7XG4gIH1cbiAgaWYgKGxhYmVsID09PSB2b2lkIDAgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICBib3VuZGFyeS5sYWJlbCA9IHsgdGV4dDogXCJcIiB9O1xuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LmxhYmVsID0geyB0ZXh0OiBsYWJlbCB9O1xuICB9XG4gIGlmICh0eXBlID09PSB2b2lkIDAgfHwgdHlwZSA9PT0gbnVsbCkge1xuICAgIGJvdW5kYXJ5LnR5cGUgPSB7IHRleHQ6IFwiY29udGFpbmVyXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0eXBlKVswXTtcbiAgICAgIGJvdW5kYXJ5W2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvdW5kYXJ5LnR5cGUgPSB7IHRleHQ6IHR5cGUgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiB0YWdzID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHRhZ3MpWzBdO1xuICAgIGJvdW5kYXJ5W2tleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS50YWdzID0gdGFncztcbiAgfVxuICBpZiAodHlwZW9mIGxpbmsgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMobGluaylbMF07XG4gICAgYm91bmRhcnlba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LmxpbmsgPSBsaW5rO1xuICB9XG4gIGJvdW5kYXJ5LnBhcmVudEJvdW5kYXJ5ID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG4gIGJvdW5kYXJ5LndyYXAgPSBhdXRvV3JhcCgpO1xuICBwYXJlbnRCb3VuZGFyeVBhcnNlID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG4gIGN1cnJlbnRCb3VuZGFyeVBhcnNlID0gYWxpYXM7XG4gIGJvdW5kYXJ5UGFyc2VTdGFjay5wdXNoKHBhcmVudEJvdW5kYXJ5UGFyc2UpO1xufTtcbmNvbnN0IGFkZERlcGxveW1lbnROb2RlID0gZnVuY3Rpb24obm9kZVR5cGUsIGFsaWFzLCBsYWJlbCwgdHlwZSwgZGVzY3IsIHNwcml0ZSwgdGFncywgbGluaykge1xuICBpZiAoYWxpYXMgPT09IG51bGwgfHwgbGFiZWwgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IGJvdW5kYXJ5ID0ge307XG4gIGNvbnN0IG9sZCA9IGJvdW5kYXJ5cy5maW5kKChib3VuZGFyeTIpID0+IGJvdW5kYXJ5Mi5hbGlhcyA9PT0gYWxpYXMpO1xuICBpZiAob2xkICYmIGFsaWFzID09PSBvbGQuYWxpYXMpIHtcbiAgICBib3VuZGFyeSA9IG9sZDtcbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS5hbGlhcyA9IGFsaWFzO1xuICAgIGJvdW5kYXJ5cy5wdXNoKGJvdW5kYXJ5KTtcbiAgfVxuICBpZiAobGFiZWwgPT09IHZvaWQgMCB8fCBsYWJlbCA9PT0gbnVsbCkge1xuICAgIGJvdW5kYXJ5LmxhYmVsID0geyB0ZXh0OiBcIlwiIH07XG4gIH0gZWxzZSB7XG4gICAgYm91bmRhcnkubGFiZWwgPSB7IHRleHQ6IGxhYmVsIH07XG4gIH1cbiAgaWYgKHR5cGUgPT09IHZvaWQgMCB8fCB0eXBlID09PSBudWxsKSB7XG4gICAgYm91bmRhcnkudHlwZSA9IHsgdGV4dDogXCJub2RlXCIgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0eXBlKVswXTtcbiAgICAgIGJvdW5kYXJ5W2tleV0gPSB7IHRleHQ6IHZhbHVlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvdW5kYXJ5LnR5cGUgPSB7IHRleHQ6IHR5cGUgfTtcbiAgICB9XG4gIH1cbiAgaWYgKGRlc2NyID09PSB2b2lkIDAgfHwgZGVzY3IgPT09IG51bGwpIHtcbiAgICBib3VuZGFyeS5kZXNjciA9IHsgdGV4dDogXCJcIiB9O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZGVzY3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhkZXNjcilbMF07XG4gICAgICBib3VuZGFyeVtrZXldID0geyB0ZXh0OiB2YWx1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBib3VuZGFyeS5kZXNjciA9IHsgdGV4dDogZGVzY3IgfTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiB0YWdzID09PSBcIm9iamVjdFwiKSB7XG4gICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHRhZ3MpWzBdO1xuICAgIGJvdW5kYXJ5W2tleV0gPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS50YWdzID0gdGFncztcbiAgfVxuICBpZiAodHlwZW9mIGxpbmsgPT09IFwib2JqZWN0XCIpIHtcbiAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMobGluaylbMF07XG4gICAgYm91bmRhcnlba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LmxpbmsgPSBsaW5rO1xuICB9XG4gIGJvdW5kYXJ5Lm5vZGVUeXBlID0gbm9kZVR5cGU7XG4gIGJvdW5kYXJ5LnBhcmVudEJvdW5kYXJ5ID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG4gIGJvdW5kYXJ5LndyYXAgPSBhdXRvV3JhcCgpO1xuICBwYXJlbnRCb3VuZGFyeVBhcnNlID0gY3VycmVudEJvdW5kYXJ5UGFyc2U7XG4gIGN1cnJlbnRCb3VuZGFyeVBhcnNlID0gYWxpYXM7XG4gIGJvdW5kYXJ5UGFyc2VTdGFjay5wdXNoKHBhcmVudEJvdW5kYXJ5UGFyc2UpO1xufTtcbmNvbnN0IHBvcEJvdW5kYXJ5UGFyc2VTdGFjayA9IGZ1bmN0aW9uKCkge1xuICBjdXJyZW50Qm91bmRhcnlQYXJzZSA9IHBhcmVudEJvdW5kYXJ5UGFyc2U7XG4gIGJvdW5kYXJ5UGFyc2VTdGFjay5wb3AoKTtcbiAgcGFyZW50Qm91bmRhcnlQYXJzZSA9IGJvdW5kYXJ5UGFyc2VTdGFjay5wb3AoKTtcbiAgYm91bmRhcnlQYXJzZVN0YWNrLnB1c2gocGFyZW50Qm91bmRhcnlQYXJzZSk7XG59O1xuY29uc3QgdXBkYXRlRWxTdHlsZSA9IGZ1bmN0aW9uKHR5cGVDNFNoYXBlLCBlbGVtZW50TmFtZSwgYmdDb2xvciwgZm9udENvbG9yLCBib3JkZXJDb2xvciwgc2hhZG93aW5nLCBzaGFwZSwgc3ByaXRlLCB0ZWNobiwgbGVnZW5kVGV4dCwgbGVnZW5kU3ByaXRlKSB7XG4gIGxldCBvbGQgPSBjNFNoYXBlQXJyYXkuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5hbGlhcyA9PT0gZWxlbWVudE5hbWUpO1xuICBpZiAob2xkID09PSB2b2lkIDApIHtcbiAgICBvbGQgPSBib3VuZGFyeXMuZmluZCgoZWxlbWVudCkgPT4gZWxlbWVudC5hbGlhcyA9PT0gZWxlbWVudE5hbWUpO1xuICAgIGlmIChvbGQgPT09IHZvaWQgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAoYmdDb2xvciAhPT0gdm9pZCAwICYmIGJnQ29sb3IgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIGJnQ29sb3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhiZ0NvbG9yKVswXTtcbiAgICAgIG9sZFtrZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5iZ0NvbG9yID0gYmdDb2xvcjtcbiAgICB9XG4gIH1cbiAgaWYgKGZvbnRDb2xvciAhPT0gdm9pZCAwICYmIGZvbnRDb2xvciAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgZm9udENvbG9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoZm9udENvbG9yKVswXTtcbiAgICAgIG9sZFtrZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5mb250Q29sb3IgPSBmb250Q29sb3I7XG4gICAgfVxuICB9XG4gIGlmIChib3JkZXJDb2xvciAhPT0gdm9pZCAwICYmIGJvcmRlckNvbG9yICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBib3JkZXJDb2xvciA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKGJvcmRlckNvbG9yKVswXTtcbiAgICAgIG9sZFtrZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5ib3JkZXJDb2xvciA9IGJvcmRlckNvbG9yO1xuICAgIH1cbiAgfVxuICBpZiAoc2hhZG93aW5nICE9PSB2b2lkIDAgJiYgc2hhZG93aW5nICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBzaGFkb3dpbmcgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyhzaGFkb3dpbmcpWzBdO1xuICAgICAgb2xkW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkLnNoYWRvd2luZyA9IHNoYWRvd2luZztcbiAgICB9XG4gIH1cbiAgaWYgKHNoYXBlICE9PSB2b2lkIDAgJiYgc2hhcGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIHNoYXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMoc2hhcGUpWzBdO1xuICAgICAgb2xkW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkLnNoYXBlID0gc2hhcGU7XG4gICAgfVxuICB9XG4gIGlmIChzcHJpdGUgIT09IHZvaWQgMCAmJiBzcHJpdGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIHNwcml0ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKHNwcml0ZSlbMF07XG4gICAgICBvbGRba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbGQuc3ByaXRlID0gc3ByaXRlO1xuICAgIH1cbiAgfVxuICBpZiAodGVjaG4gIT09IHZvaWQgMCAmJiB0ZWNobiAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgdGVjaG4gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0ZWNobilbMF07XG4gICAgICBvbGRba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbGQudGVjaG4gPSB0ZWNobjtcbiAgICB9XG4gIH1cbiAgaWYgKGxlZ2VuZFRleHQgIT09IHZvaWQgMCAmJiBsZWdlbmRUZXh0ICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBsZWdlbmRUZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMobGVnZW5kVGV4dClbMF07XG4gICAgICBvbGRba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbGQubGVnZW5kVGV4dCA9IGxlZ2VuZFRleHQ7XG4gICAgfVxuICB9XG4gIGlmIChsZWdlbmRTcHJpdGUgIT09IHZvaWQgMCAmJiBsZWdlbmRTcHJpdGUgIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIGxlZ2VuZFNwcml0ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKGxlZ2VuZFNwcml0ZSlbMF07XG4gICAgICBvbGRba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbGQubGVnZW5kU3ByaXRlID0gbGVnZW5kU3ByaXRlO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IHVwZGF0ZVJlbFN0eWxlID0gZnVuY3Rpb24odHlwZUM0U2hhcGUsIGZyb20sIHRvLCB0ZXh0Q29sb3IsIGxpbmVDb2xvciwgb2Zmc2V0WCwgb2Zmc2V0WSkge1xuICBjb25zdCBvbGQgPSByZWxzLmZpbmQoKHJlbCkgPT4gcmVsLmZyb20gPT09IGZyb20gJiYgcmVsLnRvID09PSB0byk7XG4gIGlmIChvbGQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodGV4dENvbG9yICE9PSB2b2lkIDAgJiYgdGV4dENvbG9yICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiB0ZXh0Q29sb3IgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGxldCBba2V5LCB2YWx1ZV0gPSBPYmplY3QuZW50cmllcyh0ZXh0Q29sb3IpWzBdO1xuICAgICAgb2xkW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkLnRleHRDb2xvciA9IHRleHRDb2xvcjtcbiAgICB9XG4gIH1cbiAgaWYgKGxpbmVDb2xvciAhPT0gdm9pZCAwICYmIGxpbmVDb2xvciAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgbGluZUNvbG9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBsZXQgW2tleSwgdmFsdWVdID0gT2JqZWN0LmVudHJpZXMobGluZUNvbG9yKVswXTtcbiAgICAgIG9sZFtrZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5saW5lQ29sb3IgPSBsaW5lQ29sb3I7XG4gICAgfVxuICB9XG4gIGlmIChvZmZzZXRYICE9PSB2b2lkIDAgJiYgb2Zmc2V0WCAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb2Zmc2V0WCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKG9mZnNldFgpWzBdO1xuICAgICAgb2xkW2tleV0gPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5vZmZzZXRYID0gcGFyc2VJbnQob2Zmc2V0WCk7XG4gICAgfVxuICB9XG4gIGlmIChvZmZzZXRZICE9PSB2b2lkIDAgJiYgb2Zmc2V0WSAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb2Zmc2V0WSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbGV0IFtrZXksIHZhbHVlXSA9IE9iamVjdC5lbnRyaWVzKG9mZnNldFkpWzBdO1xuICAgICAgb2xkW2tleV0gPSBwYXJzZUludCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZC5vZmZzZXRZID0gcGFyc2VJbnQob2Zmc2V0WSk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgdXBkYXRlTGF5b3V0Q29uZmlnID0gZnVuY3Rpb24odHlwZUM0U2hhcGUsIGM0U2hhcGVJblJvd1BhcmFtLCBjNEJvdW5kYXJ5SW5Sb3dQYXJhbSkge1xuICBsZXQgYzRTaGFwZUluUm93VmFsdWUgPSBjNFNoYXBlSW5Sb3ckMTtcbiAgbGV0IGM0Qm91bmRhcnlJblJvd1ZhbHVlID0gYzRCb3VuZGFyeUluUm93JDE7XG4gIGlmICh0eXBlb2YgYzRTaGFwZUluUm93UGFyYW0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC52YWx1ZXMoYzRTaGFwZUluUm93UGFyYW0pWzBdO1xuICAgIGM0U2hhcGVJblJvd1ZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGM0U2hhcGVJblJvd1ZhbHVlID0gcGFyc2VJbnQoYzRTaGFwZUluUm93UGFyYW0pO1xuICB9XG4gIGlmICh0eXBlb2YgYzRCb3VuZGFyeUluUm93UGFyYW0gPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC52YWx1ZXMoYzRCb3VuZGFyeUluUm93UGFyYW0pWzBdO1xuICAgIGM0Qm91bmRhcnlJblJvd1ZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGM0Qm91bmRhcnlJblJvd1ZhbHVlID0gcGFyc2VJbnQoYzRCb3VuZGFyeUluUm93UGFyYW0pO1xuICB9XG4gIGlmIChjNFNoYXBlSW5Sb3dWYWx1ZSA+PSAxKSB7XG4gICAgYzRTaGFwZUluUm93JDEgPSBjNFNoYXBlSW5Sb3dWYWx1ZTtcbiAgfVxuICBpZiAoYzRCb3VuZGFyeUluUm93VmFsdWUgPj0gMSkge1xuICAgIGM0Qm91bmRhcnlJblJvdyQxID0gYzRCb3VuZGFyeUluUm93VmFsdWU7XG4gIH1cbn07XG5jb25zdCBnZXRDNFNoYXBlSW5Sb3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGM0U2hhcGVJblJvdyQxO1xufTtcbmNvbnN0IGdldEM0Qm91bmRhcnlJblJvdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gYzRCb3VuZGFyeUluUm93JDE7XG59O1xuY29uc3QgZ2V0Q3VycmVudEJvdW5kYXJ5UGFyc2UgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGN1cnJlbnRCb3VuZGFyeVBhcnNlO1xufTtcbmNvbnN0IGdldFBhcmVudEJvdW5kYXJ5UGFyc2UgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHBhcmVudEJvdW5kYXJ5UGFyc2U7XG59O1xuY29uc3QgZ2V0QzRTaGFwZUFycmF5ID0gZnVuY3Rpb24ocGFyZW50Qm91bmRhcnkpIHtcbiAgaWYgKHBhcmVudEJvdW5kYXJ5ID09PSB2b2lkIDAgfHwgcGFyZW50Qm91bmRhcnkgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYzRTaGFwZUFycmF5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjNFNoYXBlQXJyYXkuZmlsdGVyKChwZXJzb25PclN5c3RlbSkgPT4ge1xuICAgICAgcmV0dXJuIHBlcnNvbk9yU3lzdGVtLnBhcmVudEJvdW5kYXJ5ID09PSBwYXJlbnRCb3VuZGFyeTtcbiAgICB9KTtcbiAgfVxufTtcbmNvbnN0IGdldEM0U2hhcGUgPSBmdW5jdGlvbihhbGlhcykge1xuICByZXR1cm4gYzRTaGFwZUFycmF5LmZpbmQoKHBlcnNvbk9yU3lzdGVtKSA9PiBwZXJzb25PclN5c3RlbS5hbGlhcyA9PT0gYWxpYXMpO1xufTtcbmNvbnN0IGdldEM0U2hhcGVLZXlzID0gZnVuY3Rpb24ocGFyZW50Qm91bmRhcnkpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGdldEM0U2hhcGVBcnJheShwYXJlbnRCb3VuZGFyeSkpO1xufTtcbmNvbnN0IGdldEJvdW5kYXJ5cyA9IGZ1bmN0aW9uKHBhcmVudEJvdW5kYXJ5KSB7XG4gIGlmIChwYXJlbnRCb3VuZGFyeSA9PT0gdm9pZCAwIHx8IHBhcmVudEJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGJvdW5kYXJ5cztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYm91bmRhcnlzLmZpbHRlcigoYm91bmRhcnkpID0+IGJvdW5kYXJ5LnBhcmVudEJvdW5kYXJ5ID09PSBwYXJlbnRCb3VuZGFyeSk7XG4gIH1cbn07XG5jb25zdCBnZXRSZWxzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByZWxzO1xufTtcbmNvbnN0IGdldFRpdGxlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aXRsZTtcbn07XG5jb25zdCBzZXRXcmFwID0gZnVuY3Rpb24od3JhcFNldHRpbmcpIHtcbiAgd3JhcEVuYWJsZWQgPSB3cmFwU2V0dGluZztcbn07XG5jb25zdCBhdXRvV3JhcCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gd3JhcEVuYWJsZWQ7XG59O1xuY29uc3QgY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgYzRTaGFwZUFycmF5ID0gW107XG4gIGJvdW5kYXJ5cyA9IFtcbiAgICB7XG4gICAgICBhbGlhczogXCJnbG9iYWxcIixcbiAgICAgIGxhYmVsOiB7IHRleHQ6IFwiZ2xvYmFsXCIgfSxcbiAgICAgIHR5cGU6IHsgdGV4dDogXCJnbG9iYWxcIiB9LFxuICAgICAgdGFnczogbnVsbCxcbiAgICAgIGxpbms6IG51bGwsXG4gICAgICBwYXJlbnRCb3VuZGFyeTogXCJcIlxuICAgIH1cbiAgXTtcbiAgcGFyZW50Qm91bmRhcnlQYXJzZSA9IFwiXCI7XG4gIGN1cnJlbnRCb3VuZGFyeVBhcnNlID0gXCJnbG9iYWxcIjtcbiAgYm91bmRhcnlQYXJzZVN0YWNrID0gW1wiXCJdO1xuICByZWxzID0gW107XG4gIGJvdW5kYXJ5UGFyc2VTdGFjayA9IFtcIlwiXTtcbiAgdGl0bGUgPSBcIlwiO1xuICB3cmFwRW5hYmxlZCA9IGZhbHNlO1xuICBjNFNoYXBlSW5Sb3ckMSA9IDQ7XG4gIGM0Qm91bmRhcnlJblJvdyQxID0gMjtcbn07XG5jb25zdCBMSU5FVFlQRSA9IHtcbiAgU09MSUQ6IDAsXG4gIERPVFRFRDogMSxcbiAgTk9URTogMixcbiAgU09MSURfQ1JPU1M6IDMsXG4gIERPVFRFRF9DUk9TUzogNCxcbiAgU09MSURfT1BFTjogNSxcbiAgRE9UVEVEX09QRU46IDYsXG4gIExPT1BfU1RBUlQ6IDEwLFxuICBMT09QX0VORDogMTEsXG4gIEFMVF9TVEFSVDogMTIsXG4gIEFMVF9FTFNFOiAxMyxcbiAgQUxUX0VORDogMTQsXG4gIE9QVF9TVEFSVDogMTUsXG4gIE9QVF9FTkQ6IDE2LFxuICBBQ1RJVkVfU1RBUlQ6IDE3LFxuICBBQ1RJVkVfRU5EOiAxOCxcbiAgUEFSX1NUQVJUOiAxOSxcbiAgUEFSX0FORDogMjAsXG4gIFBBUl9FTkQ6IDIxLFxuICBSRUNUX1NUQVJUOiAyMixcbiAgUkVDVF9FTkQ6IDIzLFxuICBTT0xJRF9QT0lOVDogMjQsXG4gIERPVFRFRF9QT0lOVDogMjVcbn07XG5jb25zdCBBUlJPV1RZUEUgPSB7XG4gIEZJTExFRDogMCxcbiAgT1BFTjogMVxufTtcbmNvbnN0IFBMQUNFTUVOVCA9IHtcbiAgTEVGVE9GOiAwLFxuICBSSUdIVE9GOiAxLFxuICBPVkVSOiAyXG59O1xuY29uc3Qgc2V0VGl0bGUgPSBmdW5jdGlvbih0eHQpIHtcbiAgbGV0IHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZVRleHQodHh0LCBnZXRDb25maWcoKSk7XG4gIHRpdGxlID0gc2FuaXRpemVkVGV4dDtcbn07XG5jb25zdCBjNERiID0ge1xuICBhZGRQZXJzb25PclN5c3RlbSxcbiAgYWRkUGVyc29uT3JTeXN0ZW1Cb3VuZGFyeSxcbiAgYWRkQ29udGFpbmVyLFxuICBhZGRDb250YWluZXJCb3VuZGFyeSxcbiAgYWRkQ29tcG9uZW50LFxuICBhZGREZXBsb3ltZW50Tm9kZSxcbiAgcG9wQm91bmRhcnlQYXJzZVN0YWNrLFxuICBhZGRSZWwsXG4gIHVwZGF0ZUVsU3R5bGUsXG4gIHVwZGF0ZVJlbFN0eWxlLFxuICB1cGRhdGVMYXlvdXRDb25maWcsXG4gIGF1dG9XcmFwLFxuICBzZXRXcmFwLFxuICBnZXRDNFNoYXBlQXJyYXksXG4gIGdldEM0U2hhcGUsXG4gIGdldEM0U2hhcGVLZXlzLFxuICBnZXRCb3VuZGFyeXMsXG4gIGdldEN1cnJlbnRCb3VuZGFyeVBhcnNlLFxuICBnZXRQYXJlbnRCb3VuZGFyeVBhcnNlLFxuICBnZXRSZWxzLFxuICBnZXRUaXRsZSxcbiAgZ2V0QzRUeXBlLFxuICBnZXRDNFNoYXBlSW5Sb3csXG4gIGdldEM0Qm91bmRhcnlJblJvdyxcbiAgc2V0QWNjVGl0bGUsXG4gIGdldEFjY1RpdGxlLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIHBhcnNlRGlyZWN0aXZlLFxuICBnZXRDb25maWc6ICgpID0+IGdldENvbmZpZygpLmM0LFxuICBjbGVhcixcbiAgTElORVRZUEUsXG4gIEFSUk9XVFlQRSxcbiAgUExBQ0VNRU5ULFxuICBzZXRUaXRsZSxcbiAgc2V0QzRUeXBlXG4gIC8vIGFwcGx5LFxufTtcbmNvbnN0IGRyYXdSZWN0ID0gZnVuY3Rpb24oZWxlbSwgcmVjdERhdGEpIHtcbiAgcmV0dXJuIGRyYXdSZWN0JDEoZWxlbSwgcmVjdERhdGEpO1xufTtcbmNvbnN0IGRyYXdJbWFnZSA9IGZ1bmN0aW9uKGVsZW0sIHdpZHRoLCBoZWlnaHQsIHgsIHksIGxpbmspIHtcbiAgY29uc3QgaW1hZ2VFbGVtID0gZWxlbS5hcHBlbmQoXCJpbWFnZVwiKTtcbiAgaW1hZ2VFbGVtLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCk7XG4gIGltYWdlRWxlbS5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCk7XG4gIGltYWdlRWxlbS5hdHRyKFwieFwiLCB4KTtcbiAgaW1hZ2VFbGVtLmF0dHIoXCJ5XCIsIHkpO1xuICBsZXQgc2FuaXRpemVkTGluayA9IGxpbmsuc3RhcnRzV2l0aChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NFwiKSA/IGxpbmsgOiBzYW5pdGl6ZVVybChsaW5rKTtcbiAgaW1hZ2VFbGVtLmF0dHIoXCJ4bGluazpocmVmXCIsIHNhbml0aXplZExpbmspO1xufTtcbmNvbnN0IGRyYXdSZWxzJDEgPSAoZWxlbSwgcmVsczIsIGNvbmYyKSA9PiB7XG4gIGNvbnN0IHJlbHNFbGVtID0gZWxlbS5hcHBlbmQoXCJnXCIpO1xuICBsZXQgaSA9IDA7XG4gIGZvciAobGV0IHJlbCBvZiByZWxzMikge1xuICAgIGxldCB0ZXh0Q29sb3IgPSByZWwudGV4dENvbG9yID8gcmVsLnRleHRDb2xvciA6IFwiIzQ0NDQ0NFwiO1xuICAgIGxldCBzdHJva2VDb2xvciA9IHJlbC5saW5lQ29sb3IgPyByZWwubGluZUNvbG9yIDogXCIjNDQ0NDQ0XCI7XG4gICAgbGV0IG9mZnNldFggPSByZWwub2Zmc2V0WCA/IHBhcnNlSW50KHJlbC5vZmZzZXRYKSA6IDA7XG4gICAgbGV0IG9mZnNldFkgPSByZWwub2Zmc2V0WSA/IHBhcnNlSW50KHJlbC5vZmZzZXRZKSA6IDA7XG4gICAgbGV0IHVybCA9IFwiXCI7XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIGxldCBsaW5lID0gcmVsc0VsZW0uYXBwZW5kKFwibGluZVwiKTtcbiAgICAgIGxpbmUuYXR0cihcIngxXCIsIHJlbC5zdGFydFBvaW50LngpO1xuICAgICAgbGluZS5hdHRyKFwieTFcIiwgcmVsLnN0YXJ0UG9pbnQueSk7XG4gICAgICBsaW5lLmF0dHIoXCJ4MlwiLCByZWwuZW5kUG9pbnQueCk7XG4gICAgICBsaW5lLmF0dHIoXCJ5MlwiLCByZWwuZW5kUG9pbnQueSk7XG4gICAgICBsaW5lLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIxXCIpO1xuICAgICAgbGluZS5hdHRyKFwic3Ryb2tlXCIsIHN0cm9rZUNvbG9yKTtcbiAgICAgIGxpbmUuc3R5bGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcbiAgICAgIGlmIChyZWwudHlwZSAhPT0gXCJyZWxfYlwiKSB7XG4gICAgICAgIGxpbmUuYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNhcnJvd2hlYWQpXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHJlbC50eXBlID09PSBcImJpcmVsXCIgfHwgcmVsLnR5cGUgPT09IFwicmVsX2JcIikge1xuICAgICAgICBsaW5lLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNhcnJvd2VuZClcIik7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBsaW5lID0gcmVsc0VsZW0uYXBwZW5kKFwicGF0aFwiKTtcbiAgICAgIGxpbmUuYXR0cihcImZpbGxcIiwgXCJub25lXCIpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIxXCIpLmF0dHIoXCJzdHJva2VcIiwgc3Ryb2tlQ29sb3IpLmF0dHIoXG4gICAgICAgIFwiZFwiLFxuICAgICAgICBcIk1zdGFydHgsc3RhcnR5IFFjb250cm9seCxjb250cm9seSBzdG9weCxzdG9weSBcIi5yZXBsYWNlQWxsKFwic3RhcnR4XCIsIHJlbC5zdGFydFBvaW50LngpLnJlcGxhY2VBbGwoXCJzdGFydHlcIiwgcmVsLnN0YXJ0UG9pbnQueSkucmVwbGFjZUFsbChcbiAgICAgICAgICBcImNvbnRyb2x4XCIsXG4gICAgICAgICAgcmVsLnN0YXJ0UG9pbnQueCArIChyZWwuZW5kUG9pbnQueCAtIHJlbC5zdGFydFBvaW50LngpIC8gMiAtIChyZWwuZW5kUG9pbnQueCAtIHJlbC5zdGFydFBvaW50LngpIC8gNFxuICAgICAgICApLnJlcGxhY2VBbGwoXCJjb250cm9seVwiLCByZWwuc3RhcnRQb2ludC55ICsgKHJlbC5lbmRQb2ludC55IC0gcmVsLnN0YXJ0UG9pbnQueSkgLyAyKS5yZXBsYWNlQWxsKFwic3RvcHhcIiwgcmVsLmVuZFBvaW50LngpLnJlcGxhY2VBbGwoXCJzdG9weVwiLCByZWwuZW5kUG9pbnQueSlcbiAgICAgICk7XG4gICAgICBpZiAocmVsLnR5cGUgIT09IFwicmVsX2JcIikge1xuICAgICAgICBsaW5lLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjYXJyb3doZWFkKVwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWwudHlwZSA9PT0gXCJiaXJlbFwiIHx8IHJlbC50eXBlID09PSBcInJlbF9iXCIpIHtcbiAgICAgICAgbGluZS5hdHRyKFwibWFya2VyLXN0YXJ0XCIsIFwidXJsKFwiICsgdXJsICsgXCIjYXJyb3dlbmQpXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWVzc2FnZUNvbmYgPSBjb25mMi5tZXNzYWdlRm9udCgpO1xuICAgIF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMoY29uZjIpKFxuICAgICAgcmVsLmxhYmVsLnRleHQsXG4gICAgICByZWxzRWxlbSxcbiAgICAgIE1hdGgubWluKHJlbC5zdGFydFBvaW50LngsIHJlbC5lbmRQb2ludC54KSArIE1hdGguYWJzKHJlbC5lbmRQb2ludC54IC0gcmVsLnN0YXJ0UG9pbnQueCkgLyAyICsgb2Zmc2V0WCxcbiAgICAgIE1hdGgubWluKHJlbC5zdGFydFBvaW50LnksIHJlbC5lbmRQb2ludC55KSArIE1hdGguYWJzKHJlbC5lbmRQb2ludC55IC0gcmVsLnN0YXJ0UG9pbnQueSkgLyAyICsgb2Zmc2V0WSxcbiAgICAgIHJlbC5sYWJlbC53aWR0aCxcbiAgICAgIHJlbC5sYWJlbC5oZWlnaHQsXG4gICAgICB7IGZpbGw6IHRleHRDb2xvciB9LFxuICAgICAgbWVzc2FnZUNvbmZcbiAgICApO1xuICAgIGlmIChyZWwudGVjaG4gJiYgcmVsLnRlY2huLnRleHQgIT09IFwiXCIpIHtcbiAgICAgIG1lc3NhZ2VDb25mID0gY29uZjIubWVzc2FnZUZvbnQoKTtcbiAgICAgIF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMoY29uZjIpKFxuICAgICAgICBcIltcIiArIHJlbC50ZWNobi50ZXh0ICsgXCJdXCIsXG4gICAgICAgIHJlbHNFbGVtLFxuICAgICAgICBNYXRoLm1pbihyZWwuc3RhcnRQb2ludC54LCByZWwuZW5kUG9pbnQueCkgKyBNYXRoLmFicyhyZWwuZW5kUG9pbnQueCAtIHJlbC5zdGFydFBvaW50LngpIC8gMiArIG9mZnNldFgsXG4gICAgICAgIE1hdGgubWluKHJlbC5zdGFydFBvaW50LnksIHJlbC5lbmRQb2ludC55KSArIE1hdGguYWJzKHJlbC5lbmRQb2ludC55IC0gcmVsLnN0YXJ0UG9pbnQueSkgLyAyICsgY29uZjIubWVzc2FnZUZvbnRTaXplICsgNSArIG9mZnNldFksXG4gICAgICAgIE1hdGgubWF4KHJlbC5sYWJlbC53aWR0aCwgcmVsLnRlY2huLndpZHRoKSxcbiAgICAgICAgcmVsLnRlY2huLmhlaWdodCxcbiAgICAgICAgeyBmaWxsOiB0ZXh0Q29sb3IsIFwiZm9udC1zdHlsZVwiOiBcIml0YWxpY1wiIH0sXG4gICAgICAgIG1lc3NhZ2VDb25mXG4gICAgICApO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IGRyYXdCb3VuZGFyeSQxID0gZnVuY3Rpb24oZWxlbSwgYm91bmRhcnksIGNvbmYyKSB7XG4gIGNvbnN0IGJvdW5kYXJ5RWxlbSA9IGVsZW0uYXBwZW5kKFwiZ1wiKTtcbiAgbGV0IGZpbGxDb2xvciA9IGJvdW5kYXJ5LmJnQ29sb3IgPyBib3VuZGFyeS5iZ0NvbG9yIDogXCJub25lXCI7XG4gIGxldCBzdHJva2VDb2xvciA9IGJvdW5kYXJ5LmJvcmRlckNvbG9yID8gYm91bmRhcnkuYm9yZGVyQ29sb3IgOiBcIiM0NDQ0NDRcIjtcbiAgbGV0IGZvbnRDb2xvciA9IGJvdW5kYXJ5LmZvbnRDb2xvciA/IGJvdW5kYXJ5LmZvbnRDb2xvciA6IFwiYmxhY2tcIjtcbiAgbGV0IGF0dHJzVmFsdWUgPSB7IFwic3Ryb2tlLXdpZHRoXCI6IDEsIFwic3Ryb2tlLWRhc2hhcnJheVwiOiBcIjcuMCw3LjBcIiB9O1xuICBpZiAoYm91bmRhcnkubm9kZVR5cGUpIHtcbiAgICBhdHRyc1ZhbHVlID0geyBcInN0cm9rZS13aWR0aFwiOiAxIH07XG4gIH1cbiAgbGV0IHJlY3REYXRhID0ge1xuICAgIHg6IGJvdW5kYXJ5LngsXG4gICAgeTogYm91bmRhcnkueSxcbiAgICBmaWxsOiBmaWxsQ29sb3IsXG4gICAgc3Ryb2tlOiBzdHJva2VDb2xvcixcbiAgICB3aWR0aDogYm91bmRhcnkud2lkdGgsXG4gICAgaGVpZ2h0OiBib3VuZGFyeS5oZWlnaHQsXG4gICAgcng6IDIuNSxcbiAgICByeTogMi41LFxuICAgIGF0dHJzOiBhdHRyc1ZhbHVlXG4gIH07XG4gIGRyYXdSZWN0KGJvdW5kYXJ5RWxlbSwgcmVjdERhdGEpO1xuICBsZXQgYm91bmRhcnlDb25mID0gY29uZjIuYm91bmRhcnlGb250KCk7XG4gIGJvdW5kYXJ5Q29uZi5mb250V2VpZ2h0ID0gXCJib2xkXCI7XG4gIGJvdW5kYXJ5Q29uZi5mb250U2l6ZSA9IGJvdW5kYXJ5Q29uZi5mb250U2l6ZSArIDI7XG4gIGJvdW5kYXJ5Q29uZi5mb250Q29sb3IgPSBmb250Q29sb3I7XG4gIF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMoY29uZjIpKFxuICAgIGJvdW5kYXJ5LmxhYmVsLnRleHQsXG4gICAgYm91bmRhcnlFbGVtLFxuICAgIGJvdW5kYXJ5LngsXG4gICAgYm91bmRhcnkueSArIGJvdW5kYXJ5LmxhYmVsLlksXG4gICAgYm91bmRhcnkud2lkdGgsXG4gICAgYm91bmRhcnkuaGVpZ2h0LFxuICAgIHsgZmlsbDogXCIjNDQ0NDQ0XCIgfSxcbiAgICBib3VuZGFyeUNvbmZcbiAgKTtcbiAgaWYgKGJvdW5kYXJ5LnR5cGUgJiYgYm91bmRhcnkudHlwZS50ZXh0ICE9PSBcIlwiKSB7XG4gICAgYm91bmRhcnlDb25mID0gY29uZjIuYm91bmRhcnlGb250KCk7XG4gICAgYm91bmRhcnlDb25mLmZvbnRDb2xvciA9IGZvbnRDb2xvcjtcbiAgICBfZHJhd1RleHRDYW5kaWRhdGVGdW5jKGNvbmYyKShcbiAgICAgIGJvdW5kYXJ5LnR5cGUudGV4dCxcbiAgICAgIGJvdW5kYXJ5RWxlbSxcbiAgICAgIGJvdW5kYXJ5LngsXG4gICAgICBib3VuZGFyeS55ICsgYm91bmRhcnkudHlwZS5ZLFxuICAgICAgYm91bmRhcnkud2lkdGgsXG4gICAgICBib3VuZGFyeS5oZWlnaHQsXG4gICAgICB7IGZpbGw6IFwiIzQ0NDQ0NFwiIH0sXG4gICAgICBib3VuZGFyeUNvbmZcbiAgICApO1xuICB9XG4gIGlmIChib3VuZGFyeS5kZXNjciAmJiBib3VuZGFyeS5kZXNjci50ZXh0ICE9PSBcIlwiKSB7XG4gICAgYm91bmRhcnlDb25mID0gY29uZjIuYm91bmRhcnlGb250KCk7XG4gICAgYm91bmRhcnlDb25mLmZvbnRTaXplID0gYm91bmRhcnlDb25mLmZvbnRTaXplIC0gMjtcbiAgICBib3VuZGFyeUNvbmYuZm9udENvbG9yID0gZm9udENvbG9yO1xuICAgIF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMoY29uZjIpKFxuICAgICAgYm91bmRhcnkuZGVzY3IudGV4dCxcbiAgICAgIGJvdW5kYXJ5RWxlbSxcbiAgICAgIGJvdW5kYXJ5LngsXG4gICAgICBib3VuZGFyeS55ICsgYm91bmRhcnkuZGVzY3IuWSxcbiAgICAgIGJvdW5kYXJ5LndpZHRoLFxuICAgICAgYm91bmRhcnkuaGVpZ2h0LFxuICAgICAgeyBmaWxsOiBcIiM0NDQ0NDRcIiB9LFxuICAgICAgYm91bmRhcnlDb25mXG4gICAgKTtcbiAgfVxufTtcbmNvbnN0IGRyYXdDNFNoYXBlID0gZnVuY3Rpb24oZWxlbSwgYzRTaGFwZSwgY29uZjIpIHtcbiAgdmFyIF9hO1xuICBsZXQgZmlsbENvbG9yID0gYzRTaGFwZS5iZ0NvbG9yID8gYzRTaGFwZS5iZ0NvbG9yIDogY29uZjJbYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0ICsgXCJfYmdfY29sb3JcIl07XG4gIGxldCBzdHJva2VDb2xvciA9IGM0U2hhcGUuYm9yZGVyQ29sb3IgPyBjNFNoYXBlLmJvcmRlckNvbG9yIDogY29uZjJbYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0ICsgXCJfYm9yZGVyX2NvbG9yXCJdO1xuICBsZXQgZm9udENvbG9yID0gYzRTaGFwZS5mb250Q29sb3IgPyBjNFNoYXBlLmZvbnRDb2xvciA6IFwiI0ZGRkZGRlwiO1xuICBsZXQgcGVyc29uSW1nID0gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQUlBQUFEWVlHN1FBQUFDRDBsRVFWUjRYdTJZb1U0RU1SQ0dUKzRqOEFpOEFoYUg0UUhnQVVqUXVGTUVDVWdNSVVnd0pBZ01oZ1FzQVlVaUpDaVFJQkJZK0VJVHNqZlRkbWU2VjI0djRjOHZ5R2JiK1pqT3ROMGJOY3ZqUVhta0g4M1d2WUJXdG82UExtNnY3cDd1SDEvdzJmWEQrUEJ5Y1gxUHYybDNJZERtL3ZuN3grZFhRaUF1YlJ6b1VSYTdnUlpXZDBpR1JJaUpiT25obmZZQlFaTkpqTmJ1eVkyZUpHOGZrREUzYmJHNGVwNk1IVUFzZ1l4bUUzblZzNlZzQldKU0djY3NPbEZQbUxJVmlNekxPQjdwQ1ZPMkF0SEpNb2hIN0ZoNnpxaXRRSzdtMHJKdkFWWWdHY0VwZS8vUExkRHo2NXNNNHBGOU43SUNjWERLSUI1TnY2ajd0RDBOb1NkTTJRclU5R2cwZXdFMUxxQmhIUjNCQmR2ajJ2YXBuaWRqSHhEL3E2dmQ3UHZocjMxQXdjWThlWE1UWEFLRUNaWkpGWHVFcTI3YUxnUUs1dUxNb2hDZW5HR3VHZXdPeFNqQnZZQnFlRzZCK05xaWJsZ2dkam5jK1pYRHkrRk5GcEZ6dzc2TzNVQkFST3VYaDZGb2lBY2Y1ZzllVHZVZ3p5MG5XZzZJOGNYSFJVcGc1Yk9WQkNvK0tEcEZhak9mMjNHZ1BtZTdSU1ErbGFjSUVOVWdKNmdnMWs2SGpnT2xxbkxxaXA0dEV1aHYwaE5FTVhVRDBjbHlYRTNwNnBaQTBTMm5udlRsWHdMSkVaV2xiN2NUUUgxK1VTZ1RONFZoQWVubS93ZWExT0NBT21xbzZmRTFXQ2I5V1NLQmFoK3JiVVdQV0FtRTJSdmswQXBpQjQ1ZU95TkF6VTh4Y1R2ajhLdmtLRW9PYUlZZUhOQTNadXlnQXZGTVVPMEFBQUFBU1VWT1JLNUNZSUk9XCI7XG4gIHN3aXRjaCAoYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0KSB7XG4gICAgY2FzZSBcInBlcnNvblwiOlxuICAgICAgcGVyc29uSW1nID0gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQUlBQUFEWVlHN1FBQUFDRDBsRVFWUjRYdTJZb1U0RU1SQ0dUKzRqOEFpOEFoYUg0UUhnQVVqUXVGTUVDVWdNSVVnd0pBZ01oZ1FzQVlVaUpDaVFJQkJZK0VJVHNqZlRkbWU2VjI0djRjOHZ5R2JiK1pqT3ROMGJOY3ZqUVhta0g4M1d2WUJXdG82UExtNnY3cDd1SDEvdzJmWEQrUEJ5Y1gxUHYybDNJZERtL3ZuN3grZFhRaUF1YlJ6b1VSYTdnUlpXZDBpR1JJaUpiT25obmZZQlFaTkpqTmJ1eVkyZUpHOGZrREUzYmJHNGVwNk1IVUFzZ1l4bUUzblZzNlZzQldKU0djY3NPbEZQbUxJVmlNekxPQjdwQ1ZPMkF0SEpNb2hIN0ZoNnpxaXRRSzdtMHJKdkFWWWdHY0VwZS8vUExkRHo2NXNNNHBGOU43SUNjWERLSUI1TnY2ajd0RDBOb1NkTTJRclU5R2cwZXdFMUxxQmhIUjNCQmR2ajJ2YXBuaWRqSHhEL3E2dmQ3UHZocjMxQXdjWThlWE1UWEFLRUNaWkpGWHVFcTI3YUxnUUs1dUxNb2hDZW5HR3VHZXdPeFNqQnZZQnFlRzZCK05xaWJsZ2dkam5jK1pYRHkrRk5GcEZ6dzc2TzNVQkFST3VYaDZGb2lBY2Y1ZzllVHZVZ3p5MG5XZzZJOGNYSFJVcGc1Yk9WQkNvK0tEcEZhak9mMjNHZ1BtZTdSU1ErbGFjSUVOVWdKNmdnMWs2SGpnT2xxbkxxaXA0dEV1aHYwaE5FTVhVRDBjbHlYRTNwNnBaQTBTMm5udlRsWHdMSkVaV2xiN2NUUUgxK1VTZ1RONFZoQWVubS93ZWExT0NBT21xbzZmRTFXQ2I5V1NLQmFoK3JiVVdQV0FtRTJSdmswQXBpQjQ1ZU95TkF6VTh4Y1R2ajhLdmtLRW9PYUlZZUhOQTNadXlnQXZGTVVPMEFBQUFBU1VWT1JLNUNZSUk9XCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZXh0ZXJuYWxfcGVyc29uXCI6XG4gICAgICBwZXJzb25JbWcgPSBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBSUFBQURZWUc3UUFBQUI2RWxFUVZSNFh1MllMWStFTUJDRzkrZFdyMGFqMFdnMEdvMUdvMCtqOFhkdjJ1VEN2djFncHQwZWJIS1B1aERhZVc0NjA1WjltSnZ4NEFkWFV5VFVkZDA4eit1NmZsbVdaUm5Ic1drYWZrOURwdEF3RFB1K2YwZUFZdHUyUEVhR1d1ajVmQ0lackJBQzJlTEJBblJDc0Vra3htZWFKcDdpREoyUU1EZEhzTGc4U3hLRkVKYUFvOGxBWG5tdU9GSWhUTXB4eEtBVGVibzRVaUZrbnVObzRPbmlTSVhReVJ4RUEzWXNuakdDVkVqVlhEN3lMVUFxeEJHVXlQdi9ZNFcyYmVNZ0d1UzdrVlFJQnljSDBmRCtvaTVwZXpRRVR4ZEhLbVFLR2sxZVFFWWxkSytqdzVHeFBmWjl6N01rMFFuaGYxVzFtM3cvL0VVbjVCRG1TWnNiUjQ0UVFMQkVxckJIcU9ybVNLYVFBeGRuTEFyQ3J4WmNNN0E3WktzNGlvUnE4TEZDK05wQzNXQ0JKc3ZwVnc1ZWRtOWlFWEZ1eU5meFhBZ1N3ZnJGUTFjMGlOZGE4QWRlanZVZ25rdE90SlFReG1jZkZ6R2dsYzVXVkNqN29EZ0ZxVTE4Ym9lRlNzNTJDVWg4TEU4QklWUURUMUFCckIwSHRnU0VZbFg1ZG9KbkN3djlUWG9jS0NhS2Jud2hkREtQcTRsZjNTd1UzSExxNFYvK1dZaEhWTWEvM2I0SWxmeWlrQWR1Q2tjQmM3bVEzL3ovUXEvY1R1aWtoa3pCMTJBZS9tY0pDOVUrVm84RWoxZ1dBdGdiZUdnRnNBTUhyNTBCSVdPTENiZXp2aHBCRlVkWTZFSnVKL1FEVzBYb01YNjB6WjBBQUFBQVNVVk9SSzVDWUlJPVwiO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgY29uc3QgYzRTaGFwZUVsZW0gPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGM0U2hhcGVFbGVtLmF0dHIoXCJjbGFzc1wiLCBcInBlcnNvbi1tYW5cIik7XG4gIGNvbnN0IHJlY3QgPSBnZXROb3RlUmVjdCgpO1xuICBzd2l0Y2ggKGM0U2hhcGUudHlwZUM0U2hhcGUudGV4dCkge1xuICAgIGNhc2UgXCJwZXJzb25cIjpcbiAgICBjYXNlIFwiZXh0ZXJuYWxfcGVyc29uXCI6XG4gICAgY2FzZSBcInN5c3RlbVwiOlxuICAgIGNhc2UgXCJleHRlcm5hbF9zeXN0ZW1cIjpcbiAgICBjYXNlIFwiY29udGFpbmVyXCI6XG4gICAgY2FzZSBcImV4dGVybmFsX2NvbnRhaW5lclwiOlxuICAgIGNhc2UgXCJjb21wb25lbnRcIjpcbiAgICBjYXNlIFwiZXh0ZXJuYWxfY29tcG9uZW50XCI6XG4gICAgICByZWN0LnggPSBjNFNoYXBlLng7XG4gICAgICByZWN0LnkgPSBjNFNoYXBlLnk7XG4gICAgICByZWN0LmZpbGwgPSBmaWxsQ29sb3I7XG4gICAgICByZWN0LndpZHRoID0gYzRTaGFwZS53aWR0aDtcbiAgICAgIHJlY3QuaGVpZ2h0ID0gYzRTaGFwZS5oZWlnaHQ7XG4gICAgICByZWN0LnN0cm9rZSA9IHN0cm9rZUNvbG9yO1xuICAgICAgcmVjdC5yeCA9IDIuNTtcbiAgICAgIHJlY3QucnkgPSAyLjU7XG4gICAgICByZWN0LmF0dHJzID0geyBcInN0cm9rZS13aWR0aFwiOiAwLjUgfTtcbiAgICAgIGRyYXdSZWN0KGM0U2hhcGVFbGVtLCByZWN0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJzeXN0ZW1fZGJcIjpcbiAgICBjYXNlIFwiZXh0ZXJuYWxfc3lzdGVtX2RiXCI6XG4gICAgY2FzZSBcImNvbnRhaW5lcl9kYlwiOlxuICAgIGNhc2UgXCJleHRlcm5hbF9jb250YWluZXJfZGJcIjpcbiAgICBjYXNlIFwiY29tcG9uZW50X2RiXCI6XG4gICAgY2FzZSBcImV4dGVybmFsX2NvbXBvbmVudF9kYlwiOlxuICAgICAgYzRTaGFwZUVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZmlsbFwiLCBmaWxsQ29sb3IpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIwLjVcIikuYXR0cihcInN0cm9rZVwiLCBzdHJva2VDb2xvcikuYXR0cihcbiAgICAgICAgXCJkXCIsXG4gICAgICAgIFwiTXN0YXJ0eCxzdGFydHljMCwtMTAgaGFsZiwtMTAgaGFsZiwtMTBjMCwwIGhhbGYsMCBoYWxmLDEwbDAsaGVpZ2h0YzAsMTAgLWhhbGYsMTAgLWhhbGYsMTBjMCwwIC1oYWxmLDAgLWhhbGYsLTEwbDAsLWhlaWdodFwiLnJlcGxhY2VBbGwoXCJzdGFydHhcIiwgYzRTaGFwZS54KS5yZXBsYWNlQWxsKFwic3RhcnR5XCIsIGM0U2hhcGUueSkucmVwbGFjZUFsbChcImhhbGZcIiwgYzRTaGFwZS53aWR0aCAvIDIpLnJlcGxhY2VBbGwoXCJoZWlnaHRcIiwgYzRTaGFwZS5oZWlnaHQpXG4gICAgICApO1xuICAgICAgYzRTaGFwZUVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcInN0cm9rZS13aWR0aFwiLCBcIjAuNVwiKS5hdHRyKFwic3Ryb2tlXCIsIHN0cm9rZUNvbG9yKS5hdHRyKFxuICAgICAgICBcImRcIixcbiAgICAgICAgXCJNc3RhcnR4LHN0YXJ0eWMwLDEwIGhhbGYsMTAgaGFsZiwxMGMwLDAgaGFsZiwwIGhhbGYsLTEwXCIucmVwbGFjZUFsbChcInN0YXJ0eFwiLCBjNFNoYXBlLngpLnJlcGxhY2VBbGwoXCJzdGFydHlcIiwgYzRTaGFwZS55KS5yZXBsYWNlQWxsKFwiaGFsZlwiLCBjNFNoYXBlLndpZHRoIC8gMilcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwic3lzdGVtX3F1ZXVlXCI6XG4gICAgY2FzZSBcImV4dGVybmFsX3N5c3RlbV9xdWV1ZVwiOlxuICAgIGNhc2UgXCJjb250YWluZXJfcXVldWVcIjpcbiAgICBjYXNlIFwiZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlXCI6XG4gICAgY2FzZSBcImNvbXBvbmVudF9xdWV1ZVwiOlxuICAgIGNhc2UgXCJleHRlcm5hbF9jb21wb25lbnRfcXVldWVcIjpcbiAgICAgIGM0U2hhcGVFbGVtLmFwcGVuZChcInBhdGhcIikuYXR0cihcImZpbGxcIiwgZmlsbENvbG9yKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMC41XCIpLmF0dHIoXCJzdHJva2VcIiwgc3Ryb2tlQ29sb3IpLmF0dHIoXG4gICAgICAgIFwiZFwiLFxuICAgICAgICBcIk1zdGFydHgsc3RhcnR5bHdpZHRoLDBjNSwwIDUsaGFsZiA1LGhhbGZjMCwwIDAsaGFsZiAtNSxoYWxmbC13aWR0aCwwYy01LDAgLTUsLWhhbGYgLTUsLWhhbGZjMCwwIDAsLWhhbGYgNSwtaGFsZlwiLnJlcGxhY2VBbGwoXCJzdGFydHhcIiwgYzRTaGFwZS54KS5yZXBsYWNlQWxsKFwic3RhcnR5XCIsIGM0U2hhcGUueSkucmVwbGFjZUFsbChcIndpZHRoXCIsIGM0U2hhcGUud2lkdGgpLnJlcGxhY2VBbGwoXCJoYWxmXCIsIGM0U2hhcGUuaGVpZ2h0IC8gMilcbiAgICAgICk7XG4gICAgICBjNFNoYXBlRWxlbS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMC41XCIpLmF0dHIoXCJzdHJva2VcIiwgc3Ryb2tlQ29sb3IpLmF0dHIoXG4gICAgICAgIFwiZFwiLFxuICAgICAgICBcIk1zdGFydHgsc3RhcnR5Yy01LDAgLTUsaGFsZiAtNSxoYWxmYzAsaGFsZiA1LGhhbGYgNSxoYWxmXCIucmVwbGFjZUFsbChcInN0YXJ0eFwiLCBjNFNoYXBlLnggKyBjNFNoYXBlLndpZHRoKS5yZXBsYWNlQWxsKFwic3RhcnR5XCIsIGM0U2hhcGUueSkucmVwbGFjZUFsbChcImhhbGZcIiwgYzRTaGFwZS5oZWlnaHQgLyAyKVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGxldCBjNFNoYXBlRm9udENvbmYgPSBnZXRDNFNoYXBlRm9udChjb25mMiwgYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0KTtcbiAgYzRTaGFwZUVsZW0uYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiZmlsbFwiLCBmb250Q29sb3IpLmF0dHIoXCJmb250LWZhbWlseVwiLCBjNFNoYXBlRm9udENvbmYuZm9udEZhbWlseSkuYXR0cihcImZvbnQtc2l6ZVwiLCBjNFNoYXBlRm9udENvbmYuZm9udFNpemUgLSAyKS5hdHRyKFwiZm9udC1zdHlsZVwiLCBcIml0YWxpY1wiKS5hdHRyKFwibGVuZ3RoQWRqdXN0XCIsIFwic3BhY2luZ1wiKS5hdHRyKFwidGV4dExlbmd0aFwiLCBjNFNoYXBlLnR5cGVDNFNoYXBlLndpZHRoKS5hdHRyKFwieFwiLCBjNFNoYXBlLnggKyBjNFNoYXBlLndpZHRoIC8gMiAtIGM0U2hhcGUudHlwZUM0U2hhcGUud2lkdGggLyAyKS5hdHRyKFwieVwiLCBjNFNoYXBlLnkgKyBjNFNoYXBlLnR5cGVDNFNoYXBlLlkpLnRleHQoXCI8PFwiICsgYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0ICsgXCI+PlwiKTtcbiAgc3dpdGNoIChjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQpIHtcbiAgICBjYXNlIFwicGVyc29uXCI6XG4gICAgY2FzZSBcImV4dGVybmFsX3BlcnNvblwiOlxuICAgICAgZHJhd0ltYWdlKFxuICAgICAgICBjNFNoYXBlRWxlbSxcbiAgICAgICAgNDgsXG4gICAgICAgIDQ4LFxuICAgICAgICBjNFNoYXBlLnggKyBjNFNoYXBlLndpZHRoIC8gMiAtIDI0LFxuICAgICAgICBjNFNoYXBlLnkgKyBjNFNoYXBlLmltYWdlLlksXG4gICAgICAgIHBlcnNvbkltZ1xuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGxldCB0ZXh0Rm9udENvbmYgPSBjb25mMltjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQgKyBcIkZvbnRcIl0oKTtcbiAgdGV4dEZvbnRDb25mLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgdGV4dEZvbnRDb25mLmZvbnRTaXplID0gdGV4dEZvbnRDb25mLmZvbnRTaXplICsgMjtcbiAgdGV4dEZvbnRDb25mLmZvbnRDb2xvciA9IGZvbnRDb2xvcjtcbiAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgYzRTaGFwZS5sYWJlbC50ZXh0LFxuICAgIGM0U2hhcGVFbGVtLFxuICAgIGM0U2hhcGUueCxcbiAgICBjNFNoYXBlLnkgKyBjNFNoYXBlLmxhYmVsLlksXG4gICAgYzRTaGFwZS53aWR0aCxcbiAgICBjNFNoYXBlLmhlaWdodCxcbiAgICB7IGZpbGw6IGZvbnRDb2xvciB9LFxuICAgIHRleHRGb250Q29uZlxuICApO1xuICB0ZXh0Rm9udENvbmYgPSBjb25mMltjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQgKyBcIkZvbnRcIl0oKTtcbiAgdGV4dEZvbnRDb25mLmZvbnRDb2xvciA9IGZvbnRDb2xvcjtcbiAgaWYgKGM0U2hhcGUudGVjaG4gJiYgKChfYSA9IGM0U2hhcGUudGVjaG4pID09IG51bGwgPyB2b2lkIDAgOiBfYS50ZXh0KSAhPT0gXCJcIikge1xuICAgIF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMoY29uZjIpKFxuICAgICAgYzRTaGFwZS50ZWNobi50ZXh0LFxuICAgICAgYzRTaGFwZUVsZW0sXG4gICAgICBjNFNoYXBlLngsXG4gICAgICBjNFNoYXBlLnkgKyBjNFNoYXBlLnRlY2huLlksXG4gICAgICBjNFNoYXBlLndpZHRoLFxuICAgICAgYzRTaGFwZS5oZWlnaHQsXG4gICAgICB7IGZpbGw6IGZvbnRDb2xvciwgXCJmb250LXN0eWxlXCI6IFwiaXRhbGljXCIgfSxcbiAgICAgIHRleHRGb250Q29uZlxuICAgICk7XG4gIH0gZWxzZSBpZiAoYzRTaGFwZS50eXBlICYmIGM0U2hhcGUudHlwZS50ZXh0ICE9PSBcIlwiKSB7XG4gICAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgICBjNFNoYXBlLnR5cGUudGV4dCxcbiAgICAgIGM0U2hhcGVFbGVtLFxuICAgICAgYzRTaGFwZS54LFxuICAgICAgYzRTaGFwZS55ICsgYzRTaGFwZS50eXBlLlksXG4gICAgICBjNFNoYXBlLndpZHRoLFxuICAgICAgYzRTaGFwZS5oZWlnaHQsXG4gICAgICB7IGZpbGw6IGZvbnRDb2xvciwgXCJmb250LXN0eWxlXCI6IFwiaXRhbGljXCIgfSxcbiAgICAgIHRleHRGb250Q29uZlxuICAgICk7XG4gIH1cbiAgaWYgKGM0U2hhcGUuZGVzY3IgJiYgYzRTaGFwZS5kZXNjci50ZXh0ICE9PSBcIlwiKSB7XG4gICAgdGV4dEZvbnRDb25mID0gY29uZjIucGVyc29uRm9udCgpO1xuICAgIHRleHRGb250Q29uZi5mb250Q29sb3IgPSBmb250Q29sb3I7XG4gICAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgICBjNFNoYXBlLmRlc2NyLnRleHQsXG4gICAgICBjNFNoYXBlRWxlbSxcbiAgICAgIGM0U2hhcGUueCxcbiAgICAgIGM0U2hhcGUueSArIGM0U2hhcGUuZGVzY3IuWSxcbiAgICAgIGM0U2hhcGUud2lkdGgsXG4gICAgICBjNFNoYXBlLmhlaWdodCxcbiAgICAgIHsgZmlsbDogZm9udENvbG9yIH0sXG4gICAgICB0ZXh0Rm9udENvbmZcbiAgICApO1xuICB9XG4gIHJldHVybiBjNFNoYXBlLmhlaWdodDtcbn07XG5jb25zdCBpbnNlcnREYXRhYmFzZUljb24gPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJzeW1ib2xcIikuYXR0cihcImlkXCIsIFwiZGF0YWJhc2VcIikuYXR0cihcImZpbGwtcnVsZVwiLCBcImV2ZW5vZGRcIikuYXR0cihcImNsaXAtcnVsZVwiLCBcImV2ZW5vZGRcIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwic2NhbGUoLjUpXCIpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgXCJNMTIuMjU4LjAwMWwuMjU2LjAwNC4yNTUuMDA1LjI1My4wMDguMjUxLjAxLjI0OS4wMTIuMjQ3LjAxNS4yNDYuMDE2LjI0Mi4wMTkuMjQxLjAyLjIzOS4wMjMuMjM2LjAyNC4yMzMuMDI3LjIzMS4wMjguMjI5LjAzMS4yMjUuMDMyLjIyMy4wMzQuMjIuMDM2LjIxNy4wMzguMjE0LjA0LjIxMS4wNDEuMjA4LjA0My4yMDUuMDQ1LjIwMS4wNDYuMTk4LjA0OC4xOTQuMDUuMTkxLjA1MS4xODcuMDUzLjE4My4wNTQuMTguMDU2LjE3NS4wNTcuMTcyLjA1OS4xNjguMDYuMTYzLjA2MS4xNi4wNjMuMTU1LjA2NC4xNS4wNjYuMDc0LjAzMy4wNzMuMDMzLjA3MS4wMzQuMDcuMDM0LjA2OS4wMzUuMDY4LjAzNS4wNjcuMDM1LjA2Ni4wMzUuMDY0LjAzNi4wNjQuMDM2LjA2Mi4wMzYuMDYuMDM2LjA2LjAzNy4wNTguMDM3LjA1OC4wMzcuMDU1LjAzOC4wNTUuMDM4LjA1My4wMzguMDUyLjAzOC4wNTEuMDM5LjA1LjAzOS4wNDguMDM5LjA0Ny4wMzkuMDQ1LjA0LjA0NC4wNC4wNDMuMDQuMDQxLjA0LjA0LjA0MS4wMzkuMDQxLjAzNy4wNDEuMDM2LjA0MS4wMzQuMDQxLjAzMy4wNDIuMDMyLjA0Mi4wMy4wNDIuMDI5LjA0Mi4wMjcuMDQyLjAyNi4wNDMuMDI0LjA0My4wMjMuMDQzLjAyMS4wNDMuMDIuMDQzLjAxOC4wNDQuMDE3LjA0My4wMTUuMDQ0LjAxMy4wNDQuMDEyLjA0NC4wMTEuMDQ1LjAwOS4wNDQuMDA3LjA0NS4wMDYuMDQ1LjAwNC4wNDUuMDAyLjA0NS4wMDEuMDQ1djE3bC0uMDAxLjA0NS0uMDAyLjA0NS0uMDA0LjA0NS0uMDA2LjA0NS0uMDA3LjA0NS0uMDA5LjA0NC0uMDExLjA0NS0uMDEyLjA0NC0uMDEzLjA0NC0uMDE1LjA0NC0uMDE3LjA0My0uMDE4LjA0NC0uMDIuMDQzLS4wMjEuMDQzLS4wMjMuMDQzLS4wMjQuMDQzLS4wMjYuMDQzLS4wMjcuMDQyLS4wMjkuMDQyLS4wMy4wNDItLjAzMi4wNDItLjAzMy4wNDItLjAzNC4wNDEtLjAzNi4wNDEtLjAzNy4wNDEtLjAzOS4wNDEtLjA0LjA0MS0uMDQxLjA0LS4wNDMuMDQtLjA0NC4wNC0uMDQ1LjA0LS4wNDcuMDM5LS4wNDguMDM5LS4wNS4wMzktLjA1MS4wMzktLjA1Mi4wMzgtLjA1My4wMzgtLjA1NS4wMzgtLjA1NS4wMzgtLjA1OC4wMzctLjA1OC4wMzctLjA2LjAzNy0uMDYuMDM2LS4wNjIuMDM2LS4wNjQuMDM2LS4wNjQuMDM2LS4wNjYuMDM1LS4wNjcuMDM1LS4wNjguMDM1LS4wNjkuMDM1LS4wNy4wMzQtLjA3MS4wMzQtLjA3My4wMzMtLjA3NC4wMzMtLjE1LjA2Ni0uMTU1LjA2NC0uMTYuMDYzLS4xNjMuMDYxLS4xNjguMDYtLjE3Mi4wNTktLjE3NS4wNTctLjE4LjA1Ni0uMTgzLjA1NC0uMTg3LjA1My0uMTkxLjA1MS0uMTk0LjA1LS4xOTguMDQ4LS4yMDEuMDQ2LS4yMDUuMDQ1LS4yMDguMDQzLS4yMTEuMDQxLS4yMTQuMDQtLjIxNy4wMzgtLjIyLjAzNi0uMjIzLjAzNC0uMjI1LjAzMi0uMjI5LjAzMS0uMjMxLjAyOC0uMjMzLjAyNy0uMjM2LjAyNC0uMjM5LjAyMy0uMjQxLjAyLS4yNDIuMDE5LS4yNDYuMDE2LS4yNDcuMDE1LS4yNDkuMDEyLS4yNTEuMDEtLjI1My4wMDgtLjI1NS4wMDUtLjI1Ni4wMDQtLjI1OC4wMDEtLjI1OC0uMDAxLS4yNTYtLjAwNC0uMjU1LS4wMDUtLjI1My0uMDA4LS4yNTEtLjAxLS4yNDktLjAxMi0uMjQ3LS4wMTUtLjI0NS0uMDE2LS4yNDMtLjAxOS0uMjQxLS4wMi0uMjM4LS4wMjMtLjIzNi0uMDI0LS4yMzQtLjAyNy0uMjMxLS4wMjgtLjIyOC0uMDMxLS4yMjYtLjAzMi0uMjIzLS4wMzQtLjIyLS4wMzYtLjIxNy0uMDM4LS4yMTQtLjA0LS4yMTEtLjA0MS0uMjA4LS4wNDMtLjIwNC0uMDQ1LS4yMDEtLjA0Ni0uMTk4LS4wNDgtLjE5NS0uMDUtLjE5LS4wNTEtLjE4Ny0uMDUzLS4xODQtLjA1NC0uMTc5LS4wNTYtLjE3Ni0uMDU3LS4xNzItLjA1OS0uMTY3LS4wNi0uMTY0LS4wNjEtLjE1OS0uMDYzLS4xNTUtLjA2NC0uMTUxLS4wNjYtLjA3NC0uMDMzLS4wNzItLjAzMy0uMDcyLS4wMzQtLjA3LS4wMzQtLjA2OS0uMDM1LS4wNjgtLjAzNS0uMDY3LS4wMzUtLjA2Ni0uMDM1LS4wNjQtLjAzNi0uMDYzLS4wMzYtLjA2Mi0uMDM2LS4wNjEtLjAzNi0uMDYtLjAzNy0uMDU4LS4wMzctLjA1Ny0uMDM3LS4wNTYtLjAzOC0uMDU1LS4wMzgtLjA1My0uMDM4LS4wNTItLjAzOC0uMDUxLS4wMzktLjA0OS0uMDM5LS4wNDktLjAzOS0uMDQ2LS4wMzktLjA0Ni0uMDQtLjA0NC0uMDQtLjA0My0uMDQtLjA0MS0uMDQtLjA0LS4wNDEtLjAzOS0uMDQxLS4wMzctLjA0MS0uMDM2LS4wNDEtLjAzNC0uMDQxLS4wMzMtLjA0Mi0uMDMyLS4wNDItLjAzLS4wNDItLjAyOS0uMDQyLS4wMjctLjA0Mi0uMDI2LS4wNDMtLjAyNC0uMDQzLS4wMjMtLjA0My0uMDIxLS4wNDMtLjAyLS4wNDMtLjAxOC0uMDQ0LS4wMTctLjA0My0uMDE1LS4wNDQtLjAxMy0uMDQ0LS4wMTItLjA0NC0uMDExLS4wNDUtLjAwOS0uMDQ0LS4wMDctLjA0NS0uMDA2LS4wNDUtLjAwNC0uMDQ1LS4wMDItLjA0NS0uMDAxLS4wNDV2LTE3bC4wMDEtLjA0NS4wMDItLjA0NS4wMDQtLjA0NS4wMDYtLjA0NS4wMDctLjA0NS4wMDktLjA0NC4wMTEtLjA0NS4wMTItLjA0NC4wMTMtLjA0NC4wMTUtLjA0NC4wMTctLjA0My4wMTgtLjA0NC4wMi0uMDQzLjAyMS0uMDQzLjAyMy0uMDQzLjAyNC0uMDQzLjAyNi0uMDQzLjAyNy0uMDQyLjAyOS0uMDQyLjAzLS4wNDIuMDMyLS4wNDIuMDMzLS4wNDIuMDM0LS4wNDEuMDM2LS4wNDEuMDM3LS4wNDEuMDM5LS4wNDEuMDQtLjA0MS4wNDEtLjA0LjA0My0uMDQuMDQ0LS4wNC4wNDYtLjA0LjA0Ni0uMDM5LjA0OS0uMDM5LjA0OS0uMDM5LjA1MS0uMDM5LjA1Mi0uMDM4LjA1My0uMDM4LjA1NS0uMDM4LjA1Ni0uMDM4LjA1Ny0uMDM3LjA1OC0uMDM3LjA2LS4wMzcuMDYxLS4wMzYuMDYyLS4wMzYuMDYzLS4wMzYuMDY0LS4wMzYuMDY2LS4wMzUuMDY3LS4wMzUuMDY4LS4wMzUuMDY5LS4wMzUuMDctLjAzNC4wNzItLjAzNC4wNzItLjAzMy4wNzQtLjAzMy4xNTEtLjA2Ni4xNTUtLjA2NC4xNTktLjA2My4xNjQtLjA2MS4xNjctLjA2LjE3Mi0uMDU5LjE3Ni0uMDU3LjE3OS0uMDU2LjE4NC0uMDU0LjE4Ny0uMDUzLjE5LS4wNTEuMTk1LS4wNS4xOTgtLjA0OC4yMDEtLjA0Ni4yMDQtLjA0NS4yMDgtLjA0My4yMTEtLjA0MS4yMTQtLjA0LjIxNy0uMDM4LjIyLS4wMzYuMjIzLS4wMzQuMjI2LS4wMzIuMjI4LS4wMzEuMjMxLS4wMjguMjM0LS4wMjcuMjM2LS4wMjQuMjM4LS4wMjMuMjQxLS4wMi4yNDMtLjAxOS4yNDUtLjAxNi4yNDctLjAxNS4yNDktLjAxMi4yNTEtLjAxLjI1My0uMDA4LjI1NS0uMDA1LjI1Ni0uMDA0LjI1OC0uMDAxLjI1OC4wMDF6bS05LjI1OCAyMC40OTl2LjAxbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMi4wMDUuMDIxLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIzLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDIzLjAxNi4wMjQuMDE3LjAyMy4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI1LjAyMy4wMjQuMDI0LjAyNS4wNTIuMDQ5LjA1Ni4wNS4wNjEuMDUxLjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTEuMDc5LjA1Mi4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTEuMTA1LjA1Mi4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OC4xNDQuMDQ5LjE0Ny4wNDcuMTUyLjA0Ny4xNTUuMDQ3LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQxLjE3OC4wNDEuMTgzLjAzOS4xODcuMDM5LjE5LjAzNy4xOTQuMDM1LjE5Ny4wMzUuMjAyLjAzMy4yMDQuMDMxLjIwOS4wMy4yMTIuMDI5LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjEuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNS4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDUuMjU2LjAwNC4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMS4yMjQtLjAyNC4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzEuMjAyLS4wMzQuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wNC4xNzktLjA0LjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDYuMTU1LS4wNDYuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNS4xMzEtLjA1LjEyNi0uMDUuMTIzLS4wNTEuMTE4LS4wNTIuMTE0LS4wNTEuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1My4wODMtLjA1MS4wNzktLjA1Mi4wNzQtLjA1Mi4wNy0uMDUxLjA2NS0uMDUxLjA2LS4wNTEuMDU2LS4wNS4wNTEtLjA1LjAyMy0uMDI0LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMy4wMS0uMDIyLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjEyN2wtLjA3Ny4wNTUtLjA4LjA1My0uMDgzLjA1NC0uMDg1LjA1My0uMDg3LjA1Mi0uMDkuMDUyLS4wOTMuMDUxLS4wOTUuMDUtLjA5Ny4wNS0uMS4wNDktLjEwMi4wNDktLjEwNS4wNDgtLjEwNi4wNDctLjEwOS4wNDctLjExMS4wNDYtLjExNC4wNDUtLjExNS4wNDUtLjExOC4wNDQtLjEyLjA0My0uMTIyLjA0Mi0uMTI0LjA0Mi0uMTI2LjA0MS0uMTI4LjA0LS4xMy4wNC0uMTMyLjAzOC0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNy0uMTM5LjAzNS0uMTQyLjAzNS0uMTQzLjAzNC0uMTQ0LjAzMy0uMTQ3LjAzMi0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOS0uMTU0LjAyNy0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDEtLjE3OS4wMDgtLjE3OS4wMDgtLjE4MS4wMDYtLjE4Mi4wMDUtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDJoLS4zN2wtLjE4NC0uMDAyLS4xODQtLjAwMy0uMTgyLS4wMDQtLjE4Mi0uMDA1LS4xODEtLjAwNi0uMTc5LS4wMDgtLjE3OS0uMDA4LS4xNzgtLjAxLS4xNzYtLjAxMS0uMTc2LS4wMTItLjE3NS0uMDEzLS4xNzMtLjAxNC0uMTcyLS4wMTUtLjE3MS0uMDE2LS4xNy0uMDE3LS4xNjktLjAxOC0uMTY3LS4wMTktLjE2Ni0uMDItLjE2NS0uMDIxLS4xNjMtLjAyMi0uMTYyLS4wMjMtLjE2MS0uMDI0LS4xNTktLjAyNS0uMTU3LS4wMjYtLjE1Ni0uMDI3LS4xNTUtLjAyNy0uMTUzLS4wMjktLjE1MS0uMDMtLjE1LS4wMy0uMTQ4LS4wMzEtLjE0Ni0uMDMyLS4xNDUtLjAzMy0uMTQzLS4wMzQtLjE0MS0uMDM1LS4xNC0uMDM1LS4xMzctLjAzNy0uMTM2LS4wMzctLjEzNC0uMDM4LS4xMzItLjAzOC0uMTMtLjA0LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQyLS4xMi0uMDQ0LS4xMTctLjA0My0uMTE2LS4wNDUtLjExMy0uMDQ1LS4xMTItLjA0Ni0uMTA5LS4wNDctLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNS0uMDkzLS4wNTItLjA5LS4wNTEtLjA4Ny0uMDUyLS4wODUtLjA1My0uMDgzLS4wNTQtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTI3em0wLTUuNjU0di4wMTFsLjAwMS4wMjEuMDAzLjAyMS4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMi4wMDcuMDIyLjAwOS4wMjIuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjQuMDE2LjAyMy4wMTcuMDI0LjAxOC4wMjQuMDE5LjAyNC4wMjEuMDI0LjAyMi4wMjQuMDIzLjAyNS4wMjQuMDI0LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1Mi4xMS4wNTEuMTE0LjA1MS4xMTkuMDUyLjEyMy4wNS4xMjcuMDUxLjEzMS4wNS4xMzUuMDQ5LjEzOS4wNDkuMTQ0LjA0OC4xNDcuMDQ4LjE1Mi4wNDcuMTU1LjA0Ni4xNi4wNDUuMTYzLjA0NS4xNjcuMDQ0LjE3MS4wNDIuMTc2LjA0Mi4xNzguMDQuMTgzLjA0LjE4Ny4wMzguMTkuMDM3LjE5NC4wMzYuMTk3LjAzNC4yMDIuMDMzLjIwNC4wMzIuMjA5LjAzLjIxMi4wMjguMjE2LjAyNy4yMTkuMDI1LjIyMi4wMjQuMjI2LjAyMi4yMy4wMi4yMzMuMDE4LjIzNi4wMTYuMjQuMDE0LjI0My4wMTIuMjQ2LjAxLjI0OS4wMDguMjUzLjAwNi4yNTYuMDAzLjI1OS4wMDEuMjYtLjAwMS4yNTctLjAwMy4yNTQtLjAwNi4yNS0uMDA4LjI0Ny0uMDEuMjQ0LS4wMTIuMjQxLS4wMTUuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMi4yMjYtLjAyMi4yMjQtLjAyNC4yMi0uMDI1LjIxNi0uMDI3LjIxMi0uMDI5LjIxLS4wMy4yMDUtLjAzMi4yMDItLjAzMy4xOTgtLjAzNS4xOTQtLjAzNi4xOTEtLjAzNy4xODctLjAzOS4xODMtLjAzOS4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ1LjE1NS0uMDQ3LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDUuMTM2LS4wNDkuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUxLjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI0LjAyMS0uMDI1LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjMuMDEzLS4wMjQuMDEyLS4wMjIuMDEtLjAyMy4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIxLjAwNC0uMDIyLjAwMS0uMDIxLjAwMS0uMDIxdi00LjEzOWwtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1NC0uMDg1LjA1Mi0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDQtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM1LS4xNDMuMDMzLS4xNDQuMDMzLS4xNDcuMDMzLS4xNDguMDMxLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI1LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIyLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMTEtLjE3OC4wMDktLjE3OS4wMDktLjE3OS4wMDctLjE4MS4wMDctLjE4Mi4wMDUtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDJoLS4zN2wtLjE4NC0uMDAyLS4xODQtLjAwMy0uMTgyLS4wMDQtLjE4Mi0uMDA1LS4xODEtLjAwNy0uMTc5LS4wMDctLjE3OS0uMDA5LS4xNzgtLjAwOS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMy0uMTQ1LS4wMzMtLjE0My0uMDMzLS4xNDEtLjAzNS0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQtLjEyNi0uMDQxLS4xMjQtLjA0Mi0uMTIyLS4wNDMtLjEyLS4wNDMtLjExNy0uMDQ0LS4xMTYtLjA0NC0uMTEzLS4wNDYtLjExMi0uMDQ2LS4xMDktLjA0Ni0uMTA2LS4wNDctLjEwNS0uMDQ4LS4xMDItLjA0OS0uMS0uMDQ5LS4wOTctLjA1LS4wOTUtLjA1MS0uMDkzLS4wNTEtLjA5LS4wNTEtLjA4Ny0uMDUzLS4wODUtLjA1Mi0uMDgzLS4wNTQtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTM5em0wLTUuNjY2di4wMTFsLjAwMS4wMi4wMDMuMDIyLjAwNC4wMjEuMDA1LjAyMi4wMDYuMDIxLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjQuMDE4LjAyMy4wMTkuMDI0LjAyMS4wMjUuMDIyLjAyNC4wMjMuMDI0LjAyNC4wMjUuMDUyLjA1LjA1Ni4wNS4wNjEuMDUuMDY2LjA1MS4wNy4wNTEuMDc1LjA1Mi4wNzkuMDUxLjA4NC4wNTIuMDg4LjA1Mi4wOTIuMDUyLjA5Ny4wNTIuMTAyLjA1Mi4xMDUuMDUxLjExLjA1Mi4xMTQuMDUxLjExOS4wNTEuMTIzLjA1MS4xMjcuMDUuMTMxLjA1LjEzNS4wNS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0My4xNzEuMDQzLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjEuMjMuMDIuMjMzLjAxOC4yMzYuMDE3LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEzLjI0MS0uMDE0LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OS4xMzktLjA0OS4xMzYtLjA0OS4xMzEtLjA1MS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTIuMDgzLS4wNTIuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNDkuMDIzLS4wMjUuMDIzLS4wMjUuMDIxLS4wMjQuMDItLjAyNC4wMTktLjAyNC4wMTgtLjAyNC4wMTctLjAyNC4wMTUtLjAyMy4wMTQtLjAyNC4wMTMtLjAyMy4wMTItLjAyMy4wMS0uMDIyLjAxLS4wMjMuMDA4LS4wMjIuMDA2LS4wMjIuMDA2LS4wMjIuMDA0LS4wMjIuMDA0LS4wMjEuMDAxLS4wMjEuMDAxLS4wMjF2LTQuMTUzbC0uMDc3LjA1NC0uMDguMDU0LS4wODMuMDUzLS4wODUuMDUzLS4wODcuMDUzLS4wOS4wNTEtLjA5My4wNTEtLjA5NS4wNTEtLjA5Ny4wNS0uMS4wNDktLjEwMi4wNDgtLjEwNS4wNDgtLjEwNi4wNDgtLjEwOS4wNDYtLjExMS4wNDYtLjExNC4wNDYtLjExNS4wNDQtLjExOC4wNDQtLjEyLjA0My0uMTIyLjA0My0uMTI0LjA0Mi0uMTI2LjA0MS0uMTI4LjA0LS4xMy4wMzktLjEzMi4wMzktLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzYtLjEzOS4wMzYtLjE0Mi4wMzQtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzItLjE1LjAzLS4xNTEuMDMtLjE1My4wMjgtLjE1NC4wMjgtLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjQtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjMtLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxLS4xNzguMDEtLjE3OS4wMDktLjE3OS4wMDctLjE4MS4wMDYtLjE4Mi4wMDYtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDEtLjE4NS4wMDEtLjE4NS0uMDAxLS4xODQtLjAwMS0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNi0uMTgxLS4wMDYtLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMS0uMTc2LS4wMS0uMTc2LS4wMTItLjE3NS0uMDEzLS4xNzMtLjAxNC0uMTcyLS4wMTUtLjE3MS0uMDE2LS4xNy0uMDE3LS4xNjktLjAxOC0uMTY3LS4wMTktLjE2Ni0uMDItLjE2NS0uMDIxLS4xNjMtLjAyMy0uMTYyLS4wMjMtLjE2MS0uMDI0LS4xNTktLjAyNC0uMTU3LS4wMjYtLjE1Ni0uMDI3LS4xNTUtLjAyOC0uMTUzLS4wMjgtLjE1MS0uMDMtLjE1LS4wMy0uMTQ4LS4wMzItLjE0Ni0uMDMyLS4xNDUtLjAzMy0uMTQzLS4wMzQtLjE0MS0uMDM0LS4xNC0uMDM2LS4xMzctLjAzNi0uMTM2LS4wMzctLjEzNC0uMDM4LS4xMzItLjAzOS0uMTMtLjAzOS0uMTI4LS4wNDEtLjEyNi0uMDQxLS4xMjQtLjA0MS0uMTIyLS4wNDMtLjEyLS4wNDMtLjExNy0uMDQ0LS4xMTYtLjA0NC0uMTEzLS4wNDYtLjExMi0uMDQ2LS4xMDktLjA0Ni0uMTA2LS4wNDgtLjEwNS0uMDQ4LS4xMDItLjA0OC0uMS0uMDUtLjA5Ny0uMDQ5LS4wOTUtLjA1MS0uMDkzLS4wNTEtLjA5LS4wNTItLjA4Ny0uMDUyLS4wODUtLjA1My0uMDgzLS4wNTMtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTUzem04Ljc0LTguMTc5bC0uMjU3LjAwNC0uMjU0LjAwNS0uMjUuMDA4LS4yNDcuMDExLS4yNDQuMDEyLS4yNDEuMDE0LS4yMzcuMDE2LS4yMzMuMDE4LS4yMzEuMDIxLS4yMjYuMDIyLS4yMjQuMDIzLS4yMi4wMjYtLjIxNi4wMjctLjIxMi4wMjgtLjIxLjAzMS0uMjA1LjAzMi0uMjAyLjAzMy0uMTk4LjAzNC0uMTk0LjAzNi0uMTkxLjAzOC0uMTg3LjAzOC0uMTgzLjA0LS4xNzkuMDQxLS4xNzUuMDQyLS4xNzIuMDQzLS4xNjguMDQzLS4xNjMuMDQ1LS4xNi4wNDYtLjE1NS4wNDYtLjE1Mi4wNDgtLjE0OC4wNDgtLjE0My4wNDgtLjEzOS4wNDktLjEzNi4wNS0uMTMxLjA1LS4xMjYuMDUxLS4xMjMuMDUxLS4xMTguMDUxLS4xMTQuMDUyLS4xMS4wNTItLjEwNi4wNTItLjEwMS4wNTItLjA5Ni4wNTItLjA5Mi4wNTItLjA4OC4wNTItLjA4My4wNTItLjA3OS4wNTItLjA3NC4wNTEtLjA3LjA1Mi0uMDY1LjA1MS0uMDYuMDUtLjA1Ni4wNS0uMDUxLjA1LS4wMjMuMDI1LS4wMjMuMDI0LS4wMjEuMDI0LS4wMi4wMjUtLjAxOS4wMjQtLjAxOC4wMjQtLjAxNy4wMjMtLjAxNS4wMjQtLjAxNC4wMjMtLjAxMy4wMjMtLjAxMi4wMjMtLjAxLjAyMy0uMDEuMDIyLS4wMDguMDIyLS4wMDYuMDIzLS4wMDYuMDIxLS4wMDQuMDIyLS4wMDQuMDIxLS4wMDEuMDIxLS4wMDEuMDIxLjAwMS4wMjEuMDAxLjAyMS4wMDQuMDIxLjAwNC4wMjIuMDA2LjAyMS4wMDYuMDIzLjAwOC4wMjIuMDEuMDIyLjAxLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE0LjAyMy4wMTUuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyLjAyNS4wMjEuMDI0LjAyMy4wMjQuMDIzLjAyNS4wNTEuMDUuMDU2LjA1LjA2LjA1LjA2NS4wNTEuMDcuMDUyLjA3NC4wNTEuMDc5LjA1Mi4wODMuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTYuMDUyLjEwMS4wNTIuMTA2LjA1Mi4xMS4wNTIuMTE0LjA1Mi4xMTguMDUxLjEyMy4wNTEuMTI2LjA1MS4xMzEuMDUuMTM2LjA1LjEzOS4wNDkuMTQzLjA0OC4xNDguMDQ4LjE1Mi4wNDguMTU1LjA0Ni4xNi4wNDYuMTYzLjA0NS4xNjguMDQzLjE3Mi4wNDMuMTc1LjA0Mi4xNzkuMDQxLjE4My4wNC4xODcuMDM4LjE5MS4wMzguMTk0LjAzNi4xOTguMDM0LjIwMi4wMzMuMjA1LjAzMi4yMS4wMzEuMjEyLjAyOC4yMTYuMDI3LjIyLjAyNi4yMjQuMDIzLjIyNi4wMjIuMjMxLjAyMS4yMzMuMDE4LjIzNy4wMTYuMjQxLjAxNC4yNDQuMDEyLjI0Ny4wMTEuMjUuMDA4LjI1NC4wMDUuMjU3LjAwNC4yNi4wMDEuMjYtLjAwMS4yNTctLjAwNC4yNTQtLjAwNS4yNS0uMDA4LjI0Ny0uMDExLjI0NC0uMDEyLjI0MS0uMDE0LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIxLjIyNi0uMDIyLjIyNC0uMDIzLjIyLS4wMjYuMjE2LS4wMjcuMjEyLS4wMjguMjEtLjAzMS4yMDUtLjAzMi4yMDItLjAzMy4xOTgtLjAzNC4xOTQtLjAzNi4xOTEtLjAzOC4xODctLjAzOC4xODMtLjA0LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQzLjE2My0uMDQ1LjE2LS4wNDYuMTU1LS4wNDYuMTUyLS4wNDguMTQ4LS4wNDguMTQzLS4wNDguMTM5LS4wNDkuMTM2LS4wNS4xMzEtLjA1LjEyNi0uMDUxLjEyMy0uMDUxLjExOC0uMDUxLjExNC0uMDUyLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTIuMDgzLS4wNTIuMDc5LS4wNTIuMDc0LS4wNTEuMDctLjA1Mi4wNjUtLjA1MS4wNi0uMDUuMDU2LS4wNS4wNTEtLjA1LjAyMy0uMDI1LjAyMy0uMDI0LjAyMS0uMDI0LjAyLS4wMjUuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjMuMDE1LS4wMjQuMDE0LS4wMjMuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMy4wMS0uMDIyLjAwOC0uMDIyLjAwNi0uMDIzLjAwNi0uMDIxLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxLS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwNC0uMDIxLS4wMDQtLjAyMi0uMDA2LS4wMjEtLjAwNi0uMDIzLS4wMDgtLjAyMi0uMDEtLjAyMi0uMDEtLjAyMy0uMDEyLS4wMjMtLjAxMy0uMDIzLS4wMTQtLjAyMy0uMDE1LS4wMjQtLjAxNy0uMDIzLS4wMTgtLjAyNC0uMDE5LS4wMjQtLjAyLS4wMjUtLjAyMS0uMDI0LS4wMjMtLjAyNC0uMDIzLS4wMjUtLjA1MS0uMDUtLjA1Ni0uMDUtLjA2LS4wNS0uMDY1LS4wNTEtLjA3LS4wNTItLjA3NC0uMDUxLS4wNzktLjA1Mi0uMDgzLS4wNTItLjA4OC0uMDUyLS4wOTItLjA1Mi0uMDk2LS4wNTItLjEwMS0uMDUyLS4xMDYtLjA1Mi0uMTEtLjA1Mi0uMTE0LS4wNTItLjExOC0uMDUxLS4xMjMtLjA1MS0uMTI2LS4wNTEtLjEzMS0uMDUtLjEzNi0uMDUtLjEzOS0uMDQ5LS4xNDMtLjA0OC0uMTQ4LS4wNDgtLjE1Mi0uMDQ4LS4xNTUtLjA0Ni0uMTYtLjA0Ni0uMTYzLS4wNDUtLjE2OC0uMDQzLS4xNzItLjA0My0uMTc1LS4wNDItLjE3OS0uMDQxLS4xODMtLjA0LS4xODctLjAzOC0uMTkxLS4wMzgtLjE5NC0uMDM2LS4xOTgtLjAzNC0uMjAyLS4wMzMtLjIwNS0uMDMyLS4yMS0uMDMxLS4yMTItLjAyOC0uMjE2LS4wMjctLjIyLS4wMjYtLjIyNC0uMDIzLS4yMjYtLjAyMi0uMjMxLS4wMjEtLjIzMy0uMDE4LS4yMzctLjAxNi0uMjQxLS4wMTQtLjI0NC0uMDEyLS4yNDctLjAxMS0uMjUtLjAwOC0uMjU0LS4wMDUtLjI1Ny0uMDA0LS4yNi0uMDAxLS4yNi4wMDF6XCJcbiAgKTtcbn07XG5jb25zdCBpbnNlcnRDb21wdXRlckljb24gPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJzeW1ib2xcIikuYXR0cihcImlkXCIsIFwiY29tcHV0ZXJcIikuYXR0cihcIndpZHRoXCIsIFwiMjRcIikuYXR0cihcImhlaWdodFwiLCBcIjI0XCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcInRyYW5zZm9ybVwiLCBcInNjYWxlKC41KVwiKS5hdHRyKFxuICAgIFwiZFwiLFxuICAgIFwiTTIgMnYxM2gyMHYtMTNoLTIwem0xOCAxMWgtMTZ2LTloMTZ2OXptLTEwLjIyOCA2bC40NjYtMWgzLjUyNGwuNDY3IDFoLTQuNDU3em0xNC4yMjggM2gtMjRsMi02aDIuMTA0bC0xLjMzIDRoMTguNDVsLTEuMjk3LTRoMi4wNzNsMiA2em0tNS0xMGgtMTR2LTdoMTR2N3pcIlxuICApO1xufTtcbmNvbnN0IGluc2VydENsb2NrSWNvbiA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcInN5bWJvbFwiKS5hdHRyKFwiaWRcIiwgXCJjbG9ja1wiKS5hdHRyKFwid2lkdGhcIiwgXCIyNFwiKS5hdHRyKFwiaGVpZ2h0XCIsIFwiMjRcIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwic2NhbGUoLjUpXCIpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgXCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem01Ljg0OCAxMi40NTljLjIwMi4wMzguMjAyLjMzMy4wMDEuMzcyLTEuOTA3LjM2MS02LjA0NSAxLjExMS02LjU0NyAxLjExMS0uNzE5IDAtMS4zMDEtLjU4Mi0xLjMwMS0xLjMwMSAwLS41MTIuNzctNS40NDcgMS4xMjUtNy40NDUuMDM0LS4xOTIuMzEyLS4xODEuMzQzLjAxNGwuOTg1IDYuMjM4IDUuMzk0IDEuMDExelwiXG4gICk7XG59O1xuY29uc3QgaW5zZXJ0QXJyb3dIZWFkID0gZnVuY3Rpb24oZWxlbSkge1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImFycm93aGVhZFwiKS5hdHRyKFwicmVmWFwiLCA5KS5hdHRyKFwicmVmWVwiLCA1KS5hdHRyKFwibWFya2VyVW5pdHNcIiwgXCJ1c2VyU3BhY2VPblVzZVwiKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTIpLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMTIpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDAgMCBMIDEwIDUgTCAwIDEwIHpcIik7XG59O1xuY29uc3QgaW5zZXJ0QXJyb3dFbmQgPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiYXJyb3dlbmRcIikuYXR0cihcInJlZlhcIiwgMSkuYXR0cihcInJlZllcIiwgNSkuYXR0cihcIm1hcmtlclVuaXRzXCIsIFwidXNlclNwYWNlT25Vc2VcIikuYXR0cihcIm1hcmtlcldpZHRoXCIsIDEyKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDEyKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxMCAwIEwgMCA1IEwgMTAgMTAgelwiKTtcbn07XG5jb25zdCBpbnNlcnRBcnJvd0ZpbGxlZEhlYWQgPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiZmlsbGVkLWhlYWRcIikuYXR0cihcInJlZlhcIiwgMTgpLmF0dHIoXCJyZWZZXCIsIDcpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAyMCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyOCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMTgsNyBMOSwxMyBMMTQsNyBMOSwxIFpcIik7XG59O1xuY29uc3QgaW5zZXJ0RHluYW1pY051bWJlciA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJzZXF1ZW5jZW51bWJlclwiKS5hdHRyKFwicmVmWFwiLCAxNSkuYXR0cihcInJlZllcIiwgMTUpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCA2MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCA0MCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjeFwiLCAxNSkuYXR0cihcImN5XCIsIDE1KS5hdHRyKFwiclwiLCA2KTtcbn07XG5jb25zdCBpbnNlcnRBcnJvd0Nyb3NzSGVhZCA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgY29uc3QgZGVmcyA9IGVsZW0uYXBwZW5kKFwiZGVmc1wiKTtcbiAgY29uc3QgbWFya2VyID0gZGVmcy5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiY3Jvc3NoZWFkXCIpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxNSkuYXR0cihcIm1hcmtlckhlaWdodFwiLCA4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hdHRyKFwicmVmWFwiLCAxNikuYXR0cihcInJlZllcIiwgNCk7XG4gIG1hcmtlci5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJmaWxsXCIsIFwiYmxhY2tcIikuYXR0cihcInN0cm9rZVwiLCBcIiMwMDAwMDBcIikuc3R5bGUoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiMCwgMFwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMXB4XCIpLmF0dHIoXCJkXCIsIFwiTSA5LDIgViA2IEwxNiw0IFpcIik7XG4gIG1hcmtlci5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKS5hdHRyKFwic3Ryb2tlXCIsIFwiIzAwMDAwMFwiKS5zdHlsZShcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCIwLCAwXCIpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIxcHhcIikuYXR0cihcImRcIiwgXCJNIDAsMSBMIDYsNyBNIDYsMSBMIDAsN1wiKTtcbn07XG5jb25zdCBnZXRDNFNoYXBlRm9udCA9IChjbmYsIHR5cGVDNFNoYXBlKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9udEZhbWlseTogY25mW3R5cGVDNFNoYXBlICsgXCJGb250RmFtaWx5XCJdLFxuICAgIGZvbnRTaXplOiBjbmZbdHlwZUM0U2hhcGUgKyBcIkZvbnRTaXplXCJdLFxuICAgIGZvbnRXZWlnaHQ6IGNuZlt0eXBlQzRTaGFwZSArIFwiRm9udFdlaWdodFwiXVxuICB9O1xufTtcbmNvbnN0IF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gYnlUZXh0KGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycykge1xuICAgIGNvbnN0IHRleHQgPSBnLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgeCArIHdpZHRoIC8gMikuYXR0cihcInlcIiwgeSArIGhlaWdodCAvIDIgKyA1KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnRleHQoY29udGVudCk7XG4gICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICB9XG4gIGZ1bmN0aW9uIGJ5VHNwYW4oY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMikge1xuICAgIGNvbnN0IHsgZm9udFNpemUsIGZvbnRGYW1pbHksIGZvbnRXZWlnaHQgfSA9IGNvbmYyO1xuICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdChjb21tb24ubGluZUJyZWFrUmVnZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGR5ID0gaSAqIGZvbnRTaXplIC0gZm9udFNpemUgKiAobGluZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgY29uc3QgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCB4ICsgd2lkdGggLyAyKS5hdHRyKFwieVwiLCB5KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKS5zdHlsZShcImZvbnQtc2l6ZVwiLCBmb250U2l6ZSkuc3R5bGUoXCJmb250LXdlaWdodFwiLCBmb250V2VpZ2h0KS5zdHlsZShcImZvbnQtZmFtaWx5XCIsIGZvbnRGYW1pbHkpO1xuICAgICAgdGV4dC5hcHBlbmQoXCJ0c3BhblwiKS5hdHRyKFwiZHlcIiwgZHkpLnRleHQobGluZXNbaV0pLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtYXRoZW1hdGljYWxcIik7XG4gICAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGJ5Rm8oY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMikge1xuICAgIGNvbnN0IHMgPSBnLmFwcGVuZChcInN3aXRjaFwiKTtcbiAgICBjb25zdCBmID0gcy5hcHBlbmQoXCJmb3JlaWduT2JqZWN0XCIpLmF0dHIoXCJ4XCIsIHgpLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpO1xuICAgIGNvbnN0IHRleHQgPSBmLmFwcGVuZChcInhodG1sOmRpdlwiKS5zdHlsZShcImRpc3BsYXlcIiwgXCJ0YWJsZVwiKS5zdHlsZShcImhlaWdodFwiLCBcIjEwMCVcIikuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGV4dC5hcHBlbmQoXCJkaXZcIikuc3R5bGUoXCJkaXNwbGF5XCIsIFwidGFibGUtY2VsbFwiKS5zdHlsZShcInRleHQtYWxpZ25cIiwgXCJjZW50ZXJcIikuc3R5bGUoXCJ2ZXJ0aWNhbC1hbGlnblwiLCBcIm1pZGRsZVwiKS50ZXh0KGNvbnRlbnQpO1xuICAgIGJ5VHNwYW4oY29udGVudCwgcywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMik7XG4gICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICB9XG4gIGZ1bmN0aW9uIF9zZXRUZXh0QXR0cnModG9UZXh0LCBmcm9tVGV4dEF0dHJzRGljdCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb21UZXh0QXR0cnNEaWN0KSB7XG4gICAgICBpZiAoZnJvbVRleHRBdHRyc0RpY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB0b1RleHQuYXR0cihrZXksIGZyb21UZXh0QXR0cnNEaWN0W2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oY29uZjIpIHtcbiAgICByZXR1cm4gY29uZjIudGV4dFBsYWNlbWVudCA9PT0gXCJmb1wiID8gYnlGbyA6IGNvbmYyLnRleHRQbGFjZW1lbnQgPT09IFwib2xkXCIgPyBieVRleHQgOiBieVRzcGFuO1xuICB9O1xufSgpO1xuY29uc3Qgc3ZnRHJhdyA9IHtcbiAgZHJhd1JlY3QsXG4gIGRyYXdCb3VuZGFyeTogZHJhd0JvdW5kYXJ5JDEsXG4gIGRyYXdDNFNoYXBlLFxuICBkcmF3UmVsczogZHJhd1JlbHMkMSxcbiAgZHJhd0ltYWdlLFxuICBpbnNlcnRBcnJvd0hlYWQsXG4gIGluc2VydEFycm93RW5kLFxuICBpbnNlcnRBcnJvd0ZpbGxlZEhlYWQsXG4gIGluc2VydER5bmFtaWNOdW1iZXIsXG4gIGluc2VydEFycm93Q3Jvc3NIZWFkLFxuICBpbnNlcnREYXRhYmFzZUljb24sXG4gIGluc2VydENvbXB1dGVySWNvbixcbiAgaW5zZXJ0Q2xvY2tJY29uXG59O1xubGV0IGdsb2JhbEJvdW5kYXJ5TWF4WCA9IDAsIGdsb2JhbEJvdW5kYXJ5TWF4WSA9IDA7XG5sZXQgYzRTaGFwZUluUm93ID0gNDtcbmxldCBjNEJvdW5kYXJ5SW5Sb3cgPSAyO1xucGFyc2VyLnl5ID0gYzREYjtcbmxldCBjb25mID0ge307XG5jbGFzcyBCb3VuZHMge1xuICBjb25zdHJ1Y3RvcihkaWFnT2JqKSB7XG4gICAgdGhpcy5uYW1lID0gXCJcIjtcbiAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB0aGlzLmRhdGEuc3RhcnR4ID0gdm9pZCAwO1xuICAgIHRoaXMuZGF0YS5zdG9weCA9IHZvaWQgMDtcbiAgICB0aGlzLmRhdGEuc3RhcnR5ID0gdm9pZCAwO1xuICAgIHRoaXMuZGF0YS5zdG9weSA9IHZvaWQgMDtcbiAgICB0aGlzLmRhdGEud2lkdGhMaW1pdCA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHREYXRhID0ge307XG4gICAgdGhpcy5uZXh0RGF0YS5zdGFydHggPSB2b2lkIDA7XG4gICAgdGhpcy5uZXh0RGF0YS5zdG9weCA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHREYXRhLnN0YXJ0eSA9IHZvaWQgMDtcbiAgICB0aGlzLm5leHREYXRhLnN0b3B5ID0gdm9pZCAwO1xuICAgIHRoaXMubmV4dERhdGEuY250ID0gMDtcbiAgICBzZXRDb25mKGRpYWdPYmouZGIuZ2V0Q29uZmlnKCkpO1xuICB9XG4gIHNldERhdGEoc3RhcnR4LCBzdG9weCwgc3RhcnR5LCBzdG9weSkge1xuICAgIHRoaXMubmV4dERhdGEuc3RhcnR4ID0gdGhpcy5kYXRhLnN0YXJ0eCA9IHN0YXJ0eDtcbiAgICB0aGlzLm5leHREYXRhLnN0b3B4ID0gdGhpcy5kYXRhLnN0b3B4ID0gc3RvcHg7XG4gICAgdGhpcy5uZXh0RGF0YS5zdGFydHkgPSB0aGlzLmRhdGEuc3RhcnR5ID0gc3RhcnR5O1xuICAgIHRoaXMubmV4dERhdGEuc3RvcHkgPSB0aGlzLmRhdGEuc3RvcHkgPSBzdG9weTtcbiAgfVxuICB1cGRhdGVWYWwob2JqLCBrZXksIHZhbCwgZnVuKSB7XG4gICAgaWYgKG9ialtrZXldID09PSB2b2lkIDApIHtcbiAgICAgIG9ialtrZXldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba2V5XSA9IGZ1bih2YWwsIG9ialtrZXldKTtcbiAgICB9XG4gIH1cbiAgaW5zZXJ0KGM0U2hhcGUpIHtcbiAgICB0aGlzLm5leHREYXRhLmNudCA9IHRoaXMubmV4dERhdGEuY250ICsgMTtcbiAgICBsZXQgX3N0YXJ0eCA9IHRoaXMubmV4dERhdGEuc3RhcnR4ID09PSB0aGlzLm5leHREYXRhLnN0b3B4ID8gdGhpcy5uZXh0RGF0YS5zdG9weCArIGM0U2hhcGUubWFyZ2luIDogdGhpcy5uZXh0RGF0YS5zdG9weCArIGM0U2hhcGUubWFyZ2luICogMjtcbiAgICBsZXQgX3N0b3B4ID0gX3N0YXJ0eCArIGM0U2hhcGUud2lkdGg7XG4gICAgbGV0IF9zdGFydHkgPSB0aGlzLm5leHREYXRhLnN0YXJ0eSArIGM0U2hhcGUubWFyZ2luICogMjtcbiAgICBsZXQgX3N0b3B5ID0gX3N0YXJ0eSArIGM0U2hhcGUuaGVpZ2h0O1xuICAgIGlmIChfc3RhcnR4ID49IHRoaXMuZGF0YS53aWR0aExpbWl0IHx8IF9zdG9weCA+PSB0aGlzLmRhdGEud2lkdGhMaW1pdCB8fCB0aGlzLm5leHREYXRhLmNudCA+IGM0U2hhcGVJblJvdykge1xuICAgICAgX3N0YXJ0eCA9IHRoaXMubmV4dERhdGEuc3RhcnR4ICsgYzRTaGFwZS5tYXJnaW4gKyBjb25mLm5leHRMaW5lUGFkZGluZ1g7XG4gICAgICBfc3RhcnR5ID0gdGhpcy5uZXh0RGF0YS5zdG9weSArIGM0U2hhcGUubWFyZ2luICogMjtcbiAgICAgIHRoaXMubmV4dERhdGEuc3RvcHggPSBfc3RvcHggPSBfc3RhcnR4ICsgYzRTaGFwZS53aWR0aDtcbiAgICAgIHRoaXMubmV4dERhdGEuc3RhcnR5ID0gdGhpcy5uZXh0RGF0YS5zdG9weTtcbiAgICAgIHRoaXMubmV4dERhdGEuc3RvcHkgPSBfc3RvcHkgPSBfc3RhcnR5ICsgYzRTaGFwZS5oZWlnaHQ7XG4gICAgICB0aGlzLm5leHREYXRhLmNudCA9IDE7XG4gICAgfVxuICAgIGM0U2hhcGUueCA9IF9zdGFydHg7XG4gICAgYzRTaGFwZS55ID0gX3N0YXJ0eTtcbiAgICB0aGlzLnVwZGF0ZVZhbCh0aGlzLmRhdGEsIFwic3RhcnR4XCIsIF9zdGFydHgsIE1hdGgubWluKTtcbiAgICB0aGlzLnVwZGF0ZVZhbCh0aGlzLmRhdGEsIFwic3RhcnR5XCIsIF9zdGFydHksIE1hdGgubWluKTtcbiAgICB0aGlzLnVwZGF0ZVZhbCh0aGlzLmRhdGEsIFwic3RvcHhcIiwgX3N0b3B4LCBNYXRoLm1heCk7XG4gICAgdGhpcy51cGRhdGVWYWwodGhpcy5kYXRhLCBcInN0b3B5XCIsIF9zdG9weSwgTWF0aC5tYXgpO1xuICAgIHRoaXMudXBkYXRlVmFsKHRoaXMubmV4dERhdGEsIFwic3RhcnR4XCIsIF9zdGFydHgsIE1hdGgubWluKTtcbiAgICB0aGlzLnVwZGF0ZVZhbCh0aGlzLm5leHREYXRhLCBcInN0YXJ0eVwiLCBfc3RhcnR5LCBNYXRoLm1pbik7XG4gICAgdGhpcy51cGRhdGVWYWwodGhpcy5uZXh0RGF0YSwgXCJzdG9weFwiLCBfc3RvcHgsIE1hdGgubWF4KTtcbiAgICB0aGlzLnVwZGF0ZVZhbCh0aGlzLm5leHREYXRhLCBcInN0b3B5XCIsIF9zdG9weSwgTWF0aC5tYXgpO1xuICB9XG4gIGluaXQoZGlhZ09iaikge1xuICAgIHRoaXMubmFtZSA9IFwiXCI7XG4gICAgdGhpcy5kYXRhID0ge1xuICAgICAgc3RhcnR4OiB2b2lkIDAsXG4gICAgICBzdG9weDogdm9pZCAwLFxuICAgICAgc3RhcnR5OiB2b2lkIDAsXG4gICAgICBzdG9weTogdm9pZCAwLFxuICAgICAgd2lkdGhMaW1pdDogdm9pZCAwXG4gICAgfTtcbiAgICB0aGlzLm5leHREYXRhID0ge1xuICAgICAgc3RhcnR4OiB2b2lkIDAsXG4gICAgICBzdG9weDogdm9pZCAwLFxuICAgICAgc3RhcnR5OiB2b2lkIDAsXG4gICAgICBzdG9weTogdm9pZCAwLFxuICAgICAgY250OiAwXG4gICAgfTtcbiAgICBzZXRDb25mKGRpYWdPYmouZGIuZ2V0Q29uZmlnKCkpO1xuICB9XG4gIGJ1bXBMYXN0TWFyZ2luKG1hcmdpbikge1xuICAgIHRoaXMuZGF0YS5zdG9weCArPSBtYXJnaW47XG4gICAgdGhpcy5kYXRhLnN0b3B5ICs9IG1hcmdpbjtcbiAgfVxufVxuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKGNuZikge1xuICBhc3NpZ25XaXRoRGVwdGgoY29uZiwgY25mKTtcbiAgaWYgKGNuZi5mb250RmFtaWx5KSB7XG4gICAgY29uZi5wZXJzb25Gb250RmFtaWx5ID0gY29uZi5zeXN0ZW1Gb250RmFtaWx5ID0gY29uZi5tZXNzYWdlRm9udEZhbWlseSA9IGNuZi5mb250RmFtaWx5O1xuICB9XG4gIGlmIChjbmYuZm9udFNpemUpIHtcbiAgICBjb25mLnBlcnNvbkZvbnRTaXplID0gY29uZi5zeXN0ZW1Gb250U2l6ZSA9IGNvbmYubWVzc2FnZUZvbnRTaXplID0gY25mLmZvbnRTaXplO1xuICB9XG4gIGlmIChjbmYuZm9udFdlaWdodCkge1xuICAgIGNvbmYucGVyc29uRm9udFdlaWdodCA9IGNvbmYuc3lzdGVtRm9udFdlaWdodCA9IGNvbmYubWVzc2FnZUZvbnRXZWlnaHQgPSBjbmYuZm9udFdlaWdodDtcbiAgfVxufTtcbmNvbnN0IGM0U2hhcGVGb250ID0gKGNuZiwgdHlwZUM0U2hhcGUpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBmb250RmFtaWx5OiBjbmZbdHlwZUM0U2hhcGUgKyBcIkZvbnRGYW1pbHlcIl0sXG4gICAgZm9udFNpemU6IGNuZlt0eXBlQzRTaGFwZSArIFwiRm9udFNpemVcIl0sXG4gICAgZm9udFdlaWdodDogY25mW3R5cGVDNFNoYXBlICsgXCJGb250V2VpZ2h0XCJdXG4gIH07XG59O1xuY29uc3QgYm91bmRhcnlGb250ID0gKGNuZikgPT4ge1xuICByZXR1cm4ge1xuICAgIGZvbnRGYW1pbHk6IGNuZi5ib3VuZGFyeUZvbnRGYW1pbHksXG4gICAgZm9udFNpemU6IGNuZi5ib3VuZGFyeUZvbnRTaXplLFxuICAgIGZvbnRXZWlnaHQ6IGNuZi5ib3VuZGFyeUZvbnRXZWlnaHRcbiAgfTtcbn07XG5jb25zdCBtZXNzYWdlRm9udCA9IChjbmYpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBmb250RmFtaWx5OiBjbmYubWVzc2FnZUZvbnRGYW1pbHksXG4gICAgZm9udFNpemU6IGNuZi5tZXNzYWdlRm9udFNpemUsXG4gICAgZm9udFdlaWdodDogY25mLm1lc3NhZ2VGb250V2VpZ2h0XG4gIH07XG59O1xuZnVuY3Rpb24gY2FsY0M0U2hhcGVUZXh0V0godGV4dFR5cGUsIGM0U2hhcGUsIGM0U2hhcGVUZXh0V3JhcCwgdGV4dENvbmYsIHRleHRMaW1pdFdpZHRoKSB7XG4gIGlmICghYzRTaGFwZVt0ZXh0VHlwZV0ud2lkdGgpIHtcbiAgICBpZiAoYzRTaGFwZVRleHRXcmFwKSB7XG4gICAgICBjNFNoYXBlW3RleHRUeXBlXS50ZXh0ID0gd3JhcExhYmVsKGM0U2hhcGVbdGV4dFR5cGVdLnRleHQsIHRleHRMaW1pdFdpZHRoLCB0ZXh0Q29uZik7XG4gICAgICBjNFNoYXBlW3RleHRUeXBlXS50ZXh0TGluZXMgPSBjNFNoYXBlW3RleHRUeXBlXS50ZXh0LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCkubGVuZ3RoO1xuICAgICAgYzRTaGFwZVt0ZXh0VHlwZV0ud2lkdGggPSB0ZXh0TGltaXRXaWR0aDtcbiAgICAgIGM0U2hhcGVbdGV4dFR5cGVdLmhlaWdodCA9IGNhbGN1bGF0ZVRleHRIZWlnaHQoYzRTaGFwZVt0ZXh0VHlwZV0udGV4dCwgdGV4dENvbmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbGluZXMgPSBjNFNoYXBlW3RleHRUeXBlXS50ZXh0LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCk7XG4gICAgICBjNFNoYXBlW3RleHRUeXBlXS50ZXh0TGluZXMgPSBsaW5lcy5sZW5ndGg7XG4gICAgICBsZXQgbGluZUhlaWdodCA9IDA7XG4gICAgICBjNFNoYXBlW3RleHRUeXBlXS5oZWlnaHQgPSAwO1xuICAgICAgYzRTaGFwZVt0ZXh0VHlwZV0ud2lkdGggPSAwO1xuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGM0U2hhcGVbdGV4dFR5cGVdLndpZHRoID0gTWF0aC5tYXgoXG4gICAgICAgICAgY2FsY3VsYXRlVGV4dFdpZHRoKGxpbmUsIHRleHRDb25mKSxcbiAgICAgICAgICBjNFNoYXBlW3RleHRUeXBlXS53aWR0aFxuICAgICAgICApO1xuICAgICAgICBsaW5lSGVpZ2h0ID0gY2FsY3VsYXRlVGV4dEhlaWdodChsaW5lLCB0ZXh0Q29uZik7XG4gICAgICAgIGM0U2hhcGVbdGV4dFR5cGVdLmhlaWdodCA9IGM0U2hhcGVbdGV4dFR5cGVdLmhlaWdodCArIGxpbmVIZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBkcmF3Qm91bmRhcnkgPSBmdW5jdGlvbihkaWFncmFtMiwgYm91bmRhcnksIGJvdW5kcykge1xuICBib3VuZGFyeS54ID0gYm91bmRzLmRhdGEuc3RhcnR4O1xuICBib3VuZGFyeS55ID0gYm91bmRzLmRhdGEuc3RhcnR5O1xuICBib3VuZGFyeS53aWR0aCA9IGJvdW5kcy5kYXRhLnN0b3B4IC0gYm91bmRzLmRhdGEuc3RhcnR4O1xuICBib3VuZGFyeS5oZWlnaHQgPSBib3VuZHMuZGF0YS5zdG9weSAtIGJvdW5kcy5kYXRhLnN0YXJ0eTtcbiAgYm91bmRhcnkubGFiZWwueSA9IGNvbmYuYzRTaGFwZU1hcmdpbiAtIDM1O1xuICBsZXQgYm91bmRhcnlUZXh0V3JhcCA9IGJvdW5kYXJ5LndyYXAgJiYgY29uZi53cmFwO1xuICBsZXQgYm91bmRhcnlMYWJlbENvbmYgPSBib3VuZGFyeUZvbnQoY29uZik7XG4gIGJvdW5kYXJ5TGFiZWxDb25mLmZvbnRTaXplID0gYm91bmRhcnlMYWJlbENvbmYuZm9udFNpemUgKyAyO1xuICBib3VuZGFyeUxhYmVsQ29uZi5mb250V2VpZ2h0ID0gXCJib2xkXCI7XG4gIGxldCB0ZXh0TGltaXRXaWR0aCA9IGNhbGN1bGF0ZVRleHRXaWR0aChib3VuZGFyeS5sYWJlbC50ZXh0LCBib3VuZGFyeUxhYmVsQ29uZik7XG4gIGNhbGNDNFNoYXBlVGV4dFdIKFwibGFiZWxcIiwgYm91bmRhcnksIGJvdW5kYXJ5VGV4dFdyYXAsIGJvdW5kYXJ5TGFiZWxDb25mLCB0ZXh0TGltaXRXaWR0aCk7XG4gIHN2Z0RyYXcuZHJhd0JvdW5kYXJ5KGRpYWdyYW0yLCBib3VuZGFyeSwgY29uZik7XG59O1xuY29uc3QgZHJhd0M0U2hhcGVBcnJheSA9IGZ1bmN0aW9uKGN1cnJlbnRCb3VuZHMsIGRpYWdyYW0yLCBjNFNoYXBlQXJyYXkyLCBjNFNoYXBlS2V5cykge1xuICBsZXQgWSA9IDA7XG4gIGZvciAoY29uc3QgYzRTaGFwZUtleSBvZiBjNFNoYXBlS2V5cykge1xuICAgIFkgPSAwO1xuICAgIGNvbnN0IGM0U2hhcGUgPSBjNFNoYXBlQXJyYXkyW2M0U2hhcGVLZXldO1xuICAgIGxldCBjNFNoYXBlVHlwZUNvbmYgPSBjNFNoYXBlRm9udChjb25mLCBjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQpO1xuICAgIGM0U2hhcGVUeXBlQ29uZi5mb250U2l6ZSA9IGM0U2hhcGVUeXBlQ29uZi5mb250U2l6ZSAtIDI7XG4gICAgYzRTaGFwZS50eXBlQzRTaGFwZS53aWR0aCA9IGNhbGN1bGF0ZVRleHRXaWR0aChcbiAgICAgIFwiPDxcIiArIGM0U2hhcGUudHlwZUM0U2hhcGUudGV4dCArIFwiPj5cIixcbiAgICAgIGM0U2hhcGVUeXBlQ29uZlxuICAgICk7XG4gICAgYzRTaGFwZS50eXBlQzRTaGFwZS5oZWlnaHQgPSBjNFNoYXBlVHlwZUNvbmYuZm9udFNpemUgKyAyO1xuICAgIGM0U2hhcGUudHlwZUM0U2hhcGUuWSA9IGNvbmYuYzRTaGFwZVBhZGRpbmc7XG4gICAgWSA9IGM0U2hhcGUudHlwZUM0U2hhcGUuWSArIGM0U2hhcGUudHlwZUM0U2hhcGUuaGVpZ2h0IC0gNDtcbiAgICBjNFNoYXBlLmltYWdlID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCBZOiAwIH07XG4gICAgc3dpdGNoIChjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQpIHtcbiAgICAgIGNhc2UgXCJwZXJzb25cIjpcbiAgICAgIGNhc2UgXCJleHRlcm5hbF9wZXJzb25cIjpcbiAgICAgICAgYzRTaGFwZS5pbWFnZS53aWR0aCA9IDQ4O1xuICAgICAgICBjNFNoYXBlLmltYWdlLmhlaWdodCA9IDQ4O1xuICAgICAgICBjNFNoYXBlLmltYWdlLlkgPSBZO1xuICAgICAgICBZID0gYzRTaGFwZS5pbWFnZS5ZICsgYzRTaGFwZS5pbWFnZS5oZWlnaHQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoYzRTaGFwZS5zcHJpdGUpIHtcbiAgICAgIGM0U2hhcGUuaW1hZ2Uud2lkdGggPSA0ODtcbiAgICAgIGM0U2hhcGUuaW1hZ2UuaGVpZ2h0ID0gNDg7XG4gICAgICBjNFNoYXBlLmltYWdlLlkgPSBZO1xuICAgICAgWSA9IGM0U2hhcGUuaW1hZ2UuWSArIGM0U2hhcGUuaW1hZ2UuaGVpZ2h0O1xuICAgIH1cbiAgICBsZXQgYzRTaGFwZVRleHRXcmFwID0gYzRTaGFwZS53cmFwICYmIGNvbmYud3JhcDtcbiAgICBsZXQgdGV4dExpbWl0V2lkdGggPSBjb25mLndpZHRoIC0gY29uZi5jNFNoYXBlUGFkZGluZyAqIDI7XG4gICAgbGV0IGM0U2hhcGVMYWJlbENvbmYgPSBjNFNoYXBlRm9udChjb25mLCBjNFNoYXBlLnR5cGVDNFNoYXBlLnRleHQpO1xuICAgIGM0U2hhcGVMYWJlbENvbmYuZm9udFNpemUgPSBjNFNoYXBlTGFiZWxDb25mLmZvbnRTaXplICsgMjtcbiAgICBjNFNoYXBlTGFiZWxDb25mLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgICBjYWxjQzRTaGFwZVRleHRXSChcImxhYmVsXCIsIGM0U2hhcGUsIGM0U2hhcGVUZXh0V3JhcCwgYzRTaGFwZUxhYmVsQ29uZiwgdGV4dExpbWl0V2lkdGgpO1xuICAgIGM0U2hhcGVbXCJsYWJlbFwiXS5ZID0gWSArIDg7XG4gICAgWSA9IGM0U2hhcGVbXCJsYWJlbFwiXS5ZICsgYzRTaGFwZVtcImxhYmVsXCJdLmhlaWdodDtcbiAgICBpZiAoYzRTaGFwZS50eXBlICYmIGM0U2hhcGUudHlwZS50ZXh0ICE9PSBcIlwiKSB7XG4gICAgICBjNFNoYXBlLnR5cGUudGV4dCA9IFwiW1wiICsgYzRTaGFwZS50eXBlLnRleHQgKyBcIl1cIjtcbiAgICAgIGxldCBjNFNoYXBlVHlwZUNvbmYyID0gYzRTaGFwZUZvbnQoY29uZiwgYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0KTtcbiAgICAgIGNhbGNDNFNoYXBlVGV4dFdIKFwidHlwZVwiLCBjNFNoYXBlLCBjNFNoYXBlVGV4dFdyYXAsIGM0U2hhcGVUeXBlQ29uZjIsIHRleHRMaW1pdFdpZHRoKTtcbiAgICAgIGM0U2hhcGVbXCJ0eXBlXCJdLlkgPSBZICsgNTtcbiAgICAgIFkgPSBjNFNoYXBlW1widHlwZVwiXS5ZICsgYzRTaGFwZVtcInR5cGVcIl0uaGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoYzRTaGFwZS50ZWNobiAmJiBjNFNoYXBlLnRlY2huLnRleHQgIT09IFwiXCIpIHtcbiAgICAgIGM0U2hhcGUudGVjaG4udGV4dCA9IFwiW1wiICsgYzRTaGFwZS50ZWNobi50ZXh0ICsgXCJdXCI7XG4gICAgICBsZXQgYzRTaGFwZVRlY2huQ29uZiA9IGM0U2hhcGVGb250KGNvbmYsIGM0U2hhcGUudGVjaG4udGV4dCk7XG4gICAgICBjYWxjQzRTaGFwZVRleHRXSChcInRlY2huXCIsIGM0U2hhcGUsIGM0U2hhcGVUZXh0V3JhcCwgYzRTaGFwZVRlY2huQ29uZiwgdGV4dExpbWl0V2lkdGgpO1xuICAgICAgYzRTaGFwZVtcInRlY2huXCJdLlkgPSBZICsgNTtcbiAgICAgIFkgPSBjNFNoYXBlW1widGVjaG5cIl0uWSArIGM0U2hhcGVbXCJ0ZWNoblwiXS5oZWlnaHQ7XG4gICAgfVxuICAgIGxldCByZWN0SGVpZ2h0ID0gWTtcbiAgICBsZXQgcmVjdFdpZHRoID0gYzRTaGFwZS5sYWJlbC53aWR0aDtcbiAgICBpZiAoYzRTaGFwZS5kZXNjciAmJiBjNFNoYXBlLmRlc2NyLnRleHQgIT09IFwiXCIpIHtcbiAgICAgIGxldCBjNFNoYXBlRGVzY3JDb25mID0gYzRTaGFwZUZvbnQoY29uZiwgYzRTaGFwZS50eXBlQzRTaGFwZS50ZXh0KTtcbiAgICAgIGNhbGNDNFNoYXBlVGV4dFdIKFwiZGVzY3JcIiwgYzRTaGFwZSwgYzRTaGFwZVRleHRXcmFwLCBjNFNoYXBlRGVzY3JDb25mLCB0ZXh0TGltaXRXaWR0aCk7XG4gICAgICBjNFNoYXBlW1wiZGVzY3JcIl0uWSA9IFkgKyAyMDtcbiAgICAgIFkgPSBjNFNoYXBlW1wiZGVzY3JcIl0uWSArIGM0U2hhcGVbXCJkZXNjclwiXS5oZWlnaHQ7XG4gICAgICByZWN0V2lkdGggPSBNYXRoLm1heChjNFNoYXBlLmxhYmVsLndpZHRoLCBjNFNoYXBlLmRlc2NyLndpZHRoKTtcbiAgICAgIHJlY3RIZWlnaHQgPSBZIC0gYzRTaGFwZVtcImRlc2NyXCJdLnRleHRMaW5lcyAqIDU7XG4gICAgfVxuICAgIHJlY3RXaWR0aCA9IHJlY3RXaWR0aCArIGNvbmYuYzRTaGFwZVBhZGRpbmc7XG4gICAgYzRTaGFwZS53aWR0aCA9IE1hdGgubWF4KGM0U2hhcGUud2lkdGggfHwgY29uZi53aWR0aCwgcmVjdFdpZHRoLCBjb25mLndpZHRoKTtcbiAgICBjNFNoYXBlLmhlaWdodCA9IE1hdGgubWF4KGM0U2hhcGUuaGVpZ2h0IHx8IGNvbmYuaGVpZ2h0LCByZWN0SGVpZ2h0LCBjb25mLmhlaWdodCk7XG4gICAgYzRTaGFwZS5tYXJnaW4gPSBjNFNoYXBlLm1hcmdpbiB8fCBjb25mLmM0U2hhcGVNYXJnaW47XG4gICAgY3VycmVudEJvdW5kcy5pbnNlcnQoYzRTaGFwZSk7XG4gICAgc3ZnRHJhdy5kcmF3QzRTaGFwZShkaWFncmFtMiwgYzRTaGFwZSwgY29uZik7XG4gIH1cbiAgY3VycmVudEJvdW5kcy5idW1wTGFzdE1hcmdpbihjb25mLmM0U2hhcGVNYXJnaW4pO1xufTtcbmNsYXNzIFBvaW50IHtcbiAgY29uc3RydWN0b3IoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxufVxubGV0IGdldEludGVyc2VjdFBvaW50ID0gZnVuY3Rpb24oZnJvbU5vZGUsIGVuZFBvaW50KSB7XG4gIGxldCB4MSA9IGZyb21Ob2RlLng7XG4gIGxldCB5MSA9IGZyb21Ob2RlLnk7XG4gIGxldCB4MiA9IGVuZFBvaW50Lng7XG4gIGxldCB5MiA9IGVuZFBvaW50Lnk7XG4gIGxldCBmcm9tQ2VudGVyWCA9IHgxICsgZnJvbU5vZGUud2lkdGggLyAyO1xuICBsZXQgZnJvbUNlbnRlclkgPSB5MSArIGZyb21Ob2RlLmhlaWdodCAvIDI7XG4gIGxldCBkeCA9IE1hdGguYWJzKHgxIC0geDIpO1xuICBsZXQgZHkgPSBNYXRoLmFicyh5MSAtIHkyKTtcbiAgbGV0IHRhbkRZWCA9IGR5IC8gZHg7XG4gIGxldCBmcm9tRFlYID0gZnJvbU5vZGUuaGVpZ2h0IC8gZnJvbU5vZGUud2lkdGg7XG4gIGxldCByZXR1cm5Qb2ludCA9IG51bGw7XG4gIGlmICh5MSA9PSB5MiAmJiB4MSA8IHgyKSB7XG4gICAgcmV0dXJuUG9pbnQgPSBuZXcgUG9pbnQoeDEgKyBmcm9tTm9kZS53aWR0aCwgZnJvbUNlbnRlclkpO1xuICB9IGVsc2UgaWYgKHkxID09IHkyICYmIHgxID4geDIpIHtcbiAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludCh4MSwgZnJvbUNlbnRlclkpO1xuICB9IGVsc2UgaWYgKHgxID09IHgyICYmIHkxIDwgeTIpIHtcbiAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludChmcm9tQ2VudGVyWCwgeTEgKyBmcm9tTm9kZS5oZWlnaHQpO1xuICB9IGVsc2UgaWYgKHgxID09IHgyICYmIHkxID4geTIpIHtcbiAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludChmcm9tQ2VudGVyWCwgeTEpO1xuICB9XG4gIGlmICh4MSA+IHgyICYmIHkxIDwgeTIpIHtcbiAgICBpZiAoZnJvbURZWCA+PSB0YW5EWVgpIHtcbiAgICAgIHJldHVyblBvaW50ID0gbmV3IFBvaW50KHgxLCBmcm9tQ2VudGVyWSArIHRhbkRZWCAqIGZyb21Ob2RlLndpZHRoIC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICBmcm9tQ2VudGVyWCAtIGR4IC8gZHkgKiBmcm9tTm9kZS5oZWlnaHQgLyAyLFxuICAgICAgICB5MSArIGZyb21Ob2RlLmhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeDEgPCB4MiAmJiB5MSA8IHkyKSB7XG4gICAgaWYgKGZyb21EWVggPj0gdGFuRFlYKSB7XG4gICAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludCh4MSArIGZyb21Ob2RlLndpZHRoLCBmcm9tQ2VudGVyWSArIHRhbkRZWCAqIGZyb21Ob2RlLndpZHRoIC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblBvaW50ID0gbmV3IFBvaW50KFxuICAgICAgICBmcm9tQ2VudGVyWCArIGR4IC8gZHkgKiBmcm9tTm9kZS5oZWlnaHQgLyAyLFxuICAgICAgICB5MSArIGZyb21Ob2RlLmhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeDEgPCB4MiAmJiB5MSA+IHkyKSB7XG4gICAgaWYgKGZyb21EWVggPj0gdGFuRFlYKSB7XG4gICAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludCh4MSArIGZyb21Ob2RlLndpZHRoLCBmcm9tQ2VudGVyWSAtIHRhbkRZWCAqIGZyb21Ob2RlLndpZHRoIC8gMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblBvaW50ID0gbmV3IFBvaW50KGZyb21DZW50ZXJYICsgZnJvbU5vZGUuaGVpZ2h0IC8gMiAqIGR4IC8gZHksIHkxKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoeDEgPiB4MiAmJiB5MSA+IHkyKSB7XG4gICAgaWYgKGZyb21EWVggPj0gdGFuRFlYKSB7XG4gICAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludCh4MSwgZnJvbUNlbnRlclkgLSBmcm9tTm9kZS53aWR0aCAvIDIgKiB0YW5EWVgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5Qb2ludCA9IG5ldyBQb2ludChmcm9tQ2VudGVyWCAtIGZyb21Ob2RlLmhlaWdodCAvIDIgKiBkeCAvIGR5LCB5MSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXR1cm5Qb2ludDtcbn07XG5sZXQgZ2V0SW50ZXJzZWN0UG9pbnRzID0gZnVuY3Rpb24oZnJvbU5vZGUsIGVuZE5vZGUpIHtcbiAgbGV0IGVuZEludGVyc2VjdFBvaW50ID0geyB4OiAwLCB5OiAwIH07XG4gIGVuZEludGVyc2VjdFBvaW50LnggPSBlbmROb2RlLnggKyBlbmROb2RlLndpZHRoIC8gMjtcbiAgZW5kSW50ZXJzZWN0UG9pbnQueSA9IGVuZE5vZGUueSArIGVuZE5vZGUuaGVpZ2h0IC8gMjtcbiAgbGV0IHN0YXJ0UG9pbnQgPSBnZXRJbnRlcnNlY3RQb2ludChmcm9tTm9kZSwgZW5kSW50ZXJzZWN0UG9pbnQpO1xuICBlbmRJbnRlcnNlY3RQb2ludC54ID0gZnJvbU5vZGUueCArIGZyb21Ob2RlLndpZHRoIC8gMjtcbiAgZW5kSW50ZXJzZWN0UG9pbnQueSA9IGZyb21Ob2RlLnkgKyBmcm9tTm9kZS5oZWlnaHQgLyAyO1xuICBsZXQgZW5kUG9pbnQgPSBnZXRJbnRlcnNlY3RQb2ludChlbmROb2RlLCBlbmRJbnRlcnNlY3RQb2ludCk7XG4gIHJldHVybiB7IHN0YXJ0UG9pbnQsIGVuZFBvaW50IH07XG59O1xuY29uc3QgZHJhd1JlbHMgPSBmdW5jdGlvbihkaWFncmFtMiwgcmVsczIsIGdldEM0U2hhcGVPYmosIGRpYWdPYmopIHtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKGxldCByZWwgb2YgcmVsczIpIHtcbiAgICBpID0gaSArIDE7XG4gICAgbGV0IHJlbFRleHRXcmFwID0gcmVsLndyYXAgJiYgY29uZi53cmFwO1xuICAgIGxldCByZWxDb25mID0gbWVzc2FnZUZvbnQoY29uZik7XG4gICAgbGV0IGRpYWdyYW1UeXBlID0gZGlhZ09iai5kYi5nZXRDNFR5cGUoKTtcbiAgICBpZiAoZGlhZ3JhbVR5cGUgPT09IFwiQzREeW5hbWljXCIpIHtcbiAgICAgIHJlbC5sYWJlbC50ZXh0ID0gaSArIFwiOiBcIiArIHJlbC5sYWJlbC50ZXh0O1xuICAgIH1cbiAgICBsZXQgdGV4dExpbWl0V2lkdGggPSBjYWxjdWxhdGVUZXh0V2lkdGgocmVsLmxhYmVsLnRleHQsIHJlbENvbmYpO1xuICAgIGNhbGNDNFNoYXBlVGV4dFdIKFwibGFiZWxcIiwgcmVsLCByZWxUZXh0V3JhcCwgcmVsQ29uZiwgdGV4dExpbWl0V2lkdGgpO1xuICAgIGlmIChyZWwudGVjaG4gJiYgcmVsLnRlY2huLnRleHQgIT09IFwiXCIpIHtcbiAgICAgIHRleHRMaW1pdFdpZHRoID0gY2FsY3VsYXRlVGV4dFdpZHRoKHJlbC50ZWNobi50ZXh0LCByZWxDb25mKTtcbiAgICAgIGNhbGNDNFNoYXBlVGV4dFdIKFwidGVjaG5cIiwgcmVsLCByZWxUZXh0V3JhcCwgcmVsQ29uZiwgdGV4dExpbWl0V2lkdGgpO1xuICAgIH1cbiAgICBpZiAocmVsLmRlc2NyICYmIHJlbC5kZXNjci50ZXh0ICE9PSBcIlwiKSB7XG4gICAgICB0ZXh0TGltaXRXaWR0aCA9IGNhbGN1bGF0ZVRleHRXaWR0aChyZWwuZGVzY3IudGV4dCwgcmVsQ29uZik7XG4gICAgICBjYWxjQzRTaGFwZVRleHRXSChcImRlc2NyXCIsIHJlbCwgcmVsVGV4dFdyYXAsIHJlbENvbmYsIHRleHRMaW1pdFdpZHRoKTtcbiAgICB9XG4gICAgbGV0IGZyb21Ob2RlID0gZ2V0QzRTaGFwZU9iaihyZWwuZnJvbSk7XG4gICAgbGV0IGVuZE5vZGUgPSBnZXRDNFNoYXBlT2JqKHJlbC50byk7XG4gICAgbGV0IHBvaW50cyA9IGdldEludGVyc2VjdFBvaW50cyhmcm9tTm9kZSwgZW5kTm9kZSk7XG4gICAgcmVsLnN0YXJ0UG9pbnQgPSBwb2ludHMuc3RhcnRQb2ludDtcbiAgICByZWwuZW5kUG9pbnQgPSBwb2ludHMuZW5kUG9pbnQ7XG4gIH1cbiAgc3ZnRHJhdy5kcmF3UmVscyhkaWFncmFtMiwgcmVsczIsIGNvbmYpO1xufTtcbmZ1bmN0aW9uIGRyYXdJbnNpZGVCb3VuZGFyeShkaWFncmFtMiwgcGFyZW50Qm91bmRhcnlBbGlhcywgcGFyZW50Qm91bmRzLCBjdXJyZW50Qm91bmRhcmllcywgZGlhZ09iaikge1xuICBsZXQgY3VycmVudEJvdW5kcyA9IG5ldyBCb3VuZHMoZGlhZ09iaik7XG4gIGN1cnJlbnRCb3VuZHMuZGF0YS53aWR0aExpbWl0ID0gcGFyZW50Qm91bmRzLmRhdGEud2lkdGhMaW1pdCAvIE1hdGgubWluKGM0Qm91bmRhcnlJblJvdywgY3VycmVudEJvdW5kYXJpZXMubGVuZ3RoKTtcbiAgZm9yIChsZXQgW2ksIGN1cnJlbnRCb3VuZGFyeV0gb2YgY3VycmVudEJvdW5kYXJpZXMuZW50cmllcygpKSB7XG4gICAgbGV0IFkgPSAwO1xuICAgIGN1cnJlbnRCb3VuZGFyeS5pbWFnZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgWTogMCB9O1xuICAgIGlmIChjdXJyZW50Qm91bmRhcnkuc3ByaXRlKSB7XG4gICAgICBjdXJyZW50Qm91bmRhcnkuaW1hZ2Uud2lkdGggPSA0ODtcbiAgICAgIGN1cnJlbnRCb3VuZGFyeS5pbWFnZS5oZWlnaHQgPSA0ODtcbiAgICAgIGN1cnJlbnRCb3VuZGFyeS5pbWFnZS5ZID0gWTtcbiAgICAgIFkgPSBjdXJyZW50Qm91bmRhcnkuaW1hZ2UuWSArIGN1cnJlbnRCb3VuZGFyeS5pbWFnZS5oZWlnaHQ7XG4gICAgfVxuICAgIGxldCBjdXJyZW50Qm91bmRhcnlUZXh0V3JhcCA9IGN1cnJlbnRCb3VuZGFyeS53cmFwICYmIGNvbmYud3JhcDtcbiAgICBsZXQgY3VycmVudEJvdW5kYXJ5TGFiZWxDb25mID0gYm91bmRhcnlGb250KGNvbmYpO1xuICAgIGN1cnJlbnRCb3VuZGFyeUxhYmVsQ29uZi5mb250U2l6ZSA9IGN1cnJlbnRCb3VuZGFyeUxhYmVsQ29uZi5mb250U2l6ZSArIDI7XG4gICAgY3VycmVudEJvdW5kYXJ5TGFiZWxDb25mLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcbiAgICBjYWxjQzRTaGFwZVRleHRXSChcbiAgICAgIFwibGFiZWxcIixcbiAgICAgIGN1cnJlbnRCb3VuZGFyeSxcbiAgICAgIGN1cnJlbnRCb3VuZGFyeVRleHRXcmFwLFxuICAgICAgY3VycmVudEJvdW5kYXJ5TGFiZWxDb25mLFxuICAgICAgY3VycmVudEJvdW5kcy5kYXRhLndpZHRoTGltaXRcbiAgICApO1xuICAgIGN1cnJlbnRCb3VuZGFyeVtcImxhYmVsXCJdLlkgPSBZICsgODtcbiAgICBZID0gY3VycmVudEJvdW5kYXJ5W1wibGFiZWxcIl0uWSArIGN1cnJlbnRCb3VuZGFyeVtcImxhYmVsXCJdLmhlaWdodDtcbiAgICBpZiAoY3VycmVudEJvdW5kYXJ5LnR5cGUgJiYgY3VycmVudEJvdW5kYXJ5LnR5cGUudGV4dCAhPT0gXCJcIikge1xuICAgICAgY3VycmVudEJvdW5kYXJ5LnR5cGUudGV4dCA9IFwiW1wiICsgY3VycmVudEJvdW5kYXJ5LnR5cGUudGV4dCArIFwiXVwiO1xuICAgICAgbGV0IGN1cnJlbnRCb3VuZGFyeVR5cGVDb25mID0gYm91bmRhcnlGb250KGNvbmYpO1xuICAgICAgY2FsY0M0U2hhcGVUZXh0V0goXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBjdXJyZW50Qm91bmRhcnksXG4gICAgICAgIGN1cnJlbnRCb3VuZGFyeVRleHRXcmFwLFxuICAgICAgICBjdXJyZW50Qm91bmRhcnlUeXBlQ29uZixcbiAgICAgICAgY3VycmVudEJvdW5kcy5kYXRhLndpZHRoTGltaXRcbiAgICAgICk7XG4gICAgICBjdXJyZW50Qm91bmRhcnlbXCJ0eXBlXCJdLlkgPSBZICsgNTtcbiAgICAgIFkgPSBjdXJyZW50Qm91bmRhcnlbXCJ0eXBlXCJdLlkgKyBjdXJyZW50Qm91bmRhcnlbXCJ0eXBlXCJdLmhlaWdodDtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRCb3VuZGFyeS5kZXNjciAmJiBjdXJyZW50Qm91bmRhcnkuZGVzY3IudGV4dCAhPT0gXCJcIikge1xuICAgICAgbGV0IGN1cnJlbnRCb3VuZGFyeURlc2NyQ29uZiA9IGJvdW5kYXJ5Rm9udChjb25mKTtcbiAgICAgIGN1cnJlbnRCb3VuZGFyeURlc2NyQ29uZi5mb250U2l6ZSA9IGN1cnJlbnRCb3VuZGFyeURlc2NyQ29uZi5mb250U2l6ZSAtIDI7XG4gICAgICBjYWxjQzRTaGFwZVRleHRXSChcbiAgICAgICAgXCJkZXNjclwiLFxuICAgICAgICBjdXJyZW50Qm91bmRhcnksXG4gICAgICAgIGN1cnJlbnRCb3VuZGFyeVRleHRXcmFwLFxuICAgICAgICBjdXJyZW50Qm91bmRhcnlEZXNjckNvbmYsXG4gICAgICAgIGN1cnJlbnRCb3VuZHMuZGF0YS53aWR0aExpbWl0XG4gICAgICApO1xuICAgICAgY3VycmVudEJvdW5kYXJ5W1wiZGVzY3JcIl0uWSA9IFkgKyAyMDtcbiAgICAgIFkgPSBjdXJyZW50Qm91bmRhcnlbXCJkZXNjclwiXS5ZICsgY3VycmVudEJvdW5kYXJ5W1wiZGVzY3JcIl0uaGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoaSA9PSAwIHx8IGkgJSBjNEJvdW5kYXJ5SW5Sb3cgPT09IDApIHtcbiAgICAgIGxldCBfeCA9IHBhcmVudEJvdW5kcy5kYXRhLnN0YXJ0eCArIGNvbmYuZGlhZ3JhbU1hcmdpblg7XG4gICAgICBsZXQgX3kgPSBwYXJlbnRCb3VuZHMuZGF0YS5zdG9weSArIGNvbmYuZGlhZ3JhbU1hcmdpblkgKyBZO1xuICAgICAgY3VycmVudEJvdW5kcy5zZXREYXRhKF94LCBfeCwgX3ksIF95KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IF94ID0gY3VycmVudEJvdW5kcy5kYXRhLnN0b3B4ICE9PSBjdXJyZW50Qm91bmRzLmRhdGEuc3RhcnR4ID8gY3VycmVudEJvdW5kcy5kYXRhLnN0b3B4ICsgY29uZi5kaWFncmFtTWFyZ2luWCA6IGN1cnJlbnRCb3VuZHMuZGF0YS5zdGFydHg7XG4gICAgICBsZXQgX3kgPSBjdXJyZW50Qm91bmRzLmRhdGEuc3RhcnR5O1xuICAgICAgY3VycmVudEJvdW5kcy5zZXREYXRhKF94LCBfeCwgX3ksIF95KTtcbiAgICB9XG4gICAgY3VycmVudEJvdW5kcy5uYW1lID0gY3VycmVudEJvdW5kYXJ5LmFsaWFzO1xuICAgIGxldCBjdXJyZW50UGVyc29uT3JTeXN0ZW1BcnJheSA9IGRpYWdPYmouZGIuZ2V0QzRTaGFwZUFycmF5KGN1cnJlbnRCb3VuZGFyeS5hbGlhcyk7XG4gICAgbGV0IGN1cnJlbnRQZXJzb25PclN5c3RlbUtleXMgPSBkaWFnT2JqLmRiLmdldEM0U2hhcGVLZXlzKGN1cnJlbnRCb3VuZGFyeS5hbGlhcyk7XG4gICAgaWYgKGN1cnJlbnRQZXJzb25PclN5c3RlbUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgZHJhd0M0U2hhcGVBcnJheShcbiAgICAgICAgY3VycmVudEJvdW5kcyxcbiAgICAgICAgZGlhZ3JhbTIsXG4gICAgICAgIGN1cnJlbnRQZXJzb25PclN5c3RlbUFycmF5LFxuICAgICAgICBjdXJyZW50UGVyc29uT3JTeXN0ZW1LZXlzXG4gICAgICApO1xuICAgIH1cbiAgICBwYXJlbnRCb3VuZGFyeUFsaWFzID0gY3VycmVudEJvdW5kYXJ5LmFsaWFzO1xuICAgIGxldCBuZXh0Q3VycmVudEJvdW5kYXJ5cyA9IGRpYWdPYmouZGIuZ2V0Qm91bmRhcnlzKHBhcmVudEJvdW5kYXJ5QWxpYXMpO1xuICAgIGlmIChuZXh0Q3VycmVudEJvdW5kYXJ5cy5sZW5ndGggPiAwKSB7XG4gICAgICBkcmF3SW5zaWRlQm91bmRhcnkoXG4gICAgICAgIGRpYWdyYW0yLFxuICAgICAgICBwYXJlbnRCb3VuZGFyeUFsaWFzLFxuICAgICAgICBjdXJyZW50Qm91bmRzLFxuICAgICAgICBuZXh0Q3VycmVudEJvdW5kYXJ5cyxcbiAgICAgICAgZGlhZ09ialxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRCb3VuZGFyeS5hbGlhcyAhPT0gXCJnbG9iYWxcIikge1xuICAgICAgZHJhd0JvdW5kYXJ5KGRpYWdyYW0yLCBjdXJyZW50Qm91bmRhcnksIGN1cnJlbnRCb3VuZHMpO1xuICAgIH1cbiAgICBwYXJlbnRCb3VuZHMuZGF0YS5zdG9weSA9IE1hdGgubWF4KFxuICAgICAgY3VycmVudEJvdW5kcy5kYXRhLnN0b3B5ICsgY29uZi5jNFNoYXBlTWFyZ2luLFxuICAgICAgcGFyZW50Qm91bmRzLmRhdGEuc3RvcHlcbiAgICApO1xuICAgIHBhcmVudEJvdW5kcy5kYXRhLnN0b3B4ID0gTWF0aC5tYXgoXG4gICAgICBjdXJyZW50Qm91bmRzLmRhdGEuc3RvcHggKyBjb25mLmM0U2hhcGVNYXJnaW4sXG4gICAgICBwYXJlbnRCb3VuZHMuZGF0YS5zdG9weFxuICAgICk7XG4gICAgZ2xvYmFsQm91bmRhcnlNYXhYID0gTWF0aC5tYXgoZ2xvYmFsQm91bmRhcnlNYXhYLCBwYXJlbnRCb3VuZHMuZGF0YS5zdG9weCk7XG4gICAgZ2xvYmFsQm91bmRhcnlNYXhZID0gTWF0aC5tYXgoZ2xvYmFsQm91bmRhcnlNYXhZLCBwYXJlbnRCb3VuZHMuZGF0YS5zdG9weSk7XG4gIH1cbn1cbmNvbnN0IGRyYXcgPSBmdW5jdGlvbihfdGV4dCwgaWQsIF92ZXJzaW9uLCBkaWFnT2JqKSB7XG4gIGNvbmYgPSBnZXRDb25maWcoKS5jNDtcbiAgY29uc3Qgc2VjdXJpdHlMZXZlbCA9IGdldENvbmZpZygpLnNlY3VyaXR5TGV2ZWw7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGxldCBkYiA9IGRpYWdPYmouZGI7XG4gIGRpYWdPYmouZGIuc2V0V3JhcChjb25mLndyYXApO1xuICBjNFNoYXBlSW5Sb3cgPSBkYi5nZXRDNFNoYXBlSW5Sb3coKTtcbiAgYzRCb3VuZGFyeUluUm93ID0gZGIuZ2V0QzRCb3VuZGFyeUluUm93KCk7XG4gIGxvZy5kZWJ1ZyhgQzoke0pTT04uc3RyaW5naWZ5KGNvbmYsIG51bGwsIDIpfWApO1xuICBjb25zdCBkaWFncmFtMiA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gcm9vdC5zZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCkgOiBzZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIHN2Z0RyYXcuaW5zZXJ0Q29tcHV0ZXJJY29uKGRpYWdyYW0yKTtcbiAgc3ZnRHJhdy5pbnNlcnREYXRhYmFzZUljb24oZGlhZ3JhbTIpO1xuICBzdmdEcmF3Lmluc2VydENsb2NrSWNvbihkaWFncmFtMik7XG4gIGxldCBzY3JlZW5Cb3VuZHMgPSBuZXcgQm91bmRzKGRpYWdPYmopO1xuICBzY3JlZW5Cb3VuZHMuc2V0RGF0YShcbiAgICBjb25mLmRpYWdyYW1NYXJnaW5YLFxuICAgIGNvbmYuZGlhZ3JhbU1hcmdpblgsXG4gICAgY29uZi5kaWFncmFtTWFyZ2luWSxcbiAgICBjb25mLmRpYWdyYW1NYXJnaW5ZXG4gICk7XG4gIHNjcmVlbkJvdW5kcy5kYXRhLndpZHRoTGltaXQgPSBzY3JlZW4uYXZhaWxXaWR0aDtcbiAgZ2xvYmFsQm91bmRhcnlNYXhYID0gY29uZi5kaWFncmFtTWFyZ2luWDtcbiAgZ2xvYmFsQm91bmRhcnlNYXhZID0gY29uZi5kaWFncmFtTWFyZ2luWTtcbiAgY29uc3QgdGl0bGUyID0gZGlhZ09iai5kYi5nZXRUaXRsZSgpO1xuICBsZXQgY3VycmVudEJvdW5kYXJpZXMgPSBkaWFnT2JqLmRiLmdldEJvdW5kYXJ5cyhcIlwiKTtcbiAgZHJhd0luc2lkZUJvdW5kYXJ5KGRpYWdyYW0yLCBcIlwiLCBzY3JlZW5Cb3VuZHMsIGN1cnJlbnRCb3VuZGFyaWVzLCBkaWFnT2JqKTtcbiAgc3ZnRHJhdy5pbnNlcnRBcnJvd0hlYWQoZGlhZ3JhbTIpO1xuICBzdmdEcmF3Lmluc2VydEFycm93RW5kKGRpYWdyYW0yKTtcbiAgc3ZnRHJhdy5pbnNlcnRBcnJvd0Nyb3NzSGVhZChkaWFncmFtMik7XG4gIHN2Z0RyYXcuaW5zZXJ0QXJyb3dGaWxsZWRIZWFkKGRpYWdyYW0yKTtcbiAgZHJhd1JlbHMoZGlhZ3JhbTIsIGRpYWdPYmouZGIuZ2V0UmVscygpLCBkaWFnT2JqLmRiLmdldEM0U2hhcGUsIGRpYWdPYmopO1xuICBzY3JlZW5Cb3VuZHMuZGF0YS5zdG9weCA9IGdsb2JhbEJvdW5kYXJ5TWF4WDtcbiAgc2NyZWVuQm91bmRzLmRhdGEuc3RvcHkgPSBnbG9iYWxCb3VuZGFyeU1heFk7XG4gIGNvbnN0IGJveCA9IHNjcmVlbkJvdW5kcy5kYXRhO1xuICBsZXQgYm94SGVpZ2h0ID0gYm94LnN0b3B5IC0gYm94LnN0YXJ0eTtcbiAgbGV0IGhlaWdodCA9IGJveEhlaWdodCArIDIgKiBjb25mLmRpYWdyYW1NYXJnaW5ZO1xuICBsZXQgYm94V2lkdGggPSBib3guc3RvcHggLSBib3guc3RhcnR4O1xuICBjb25zdCB3aWR0aCA9IGJveFdpZHRoICsgMiAqIGNvbmYuZGlhZ3JhbU1hcmdpblg7XG4gIGlmICh0aXRsZTIpIHtcbiAgICBkaWFncmFtMi5hcHBlbmQoXCJ0ZXh0XCIpLnRleHQodGl0bGUyKS5hdHRyKFwieFwiLCAoYm94LnN0b3B4IC0gYm94LnN0YXJ0eCkgLyAyIC0gNCAqIGNvbmYuZGlhZ3JhbU1hcmdpblgpLmF0dHIoXCJ5XCIsIGJveC5zdGFydHkgKyBjb25mLmRpYWdyYW1NYXJnaW5ZKTtcbiAgfVxuICBjb25maWd1cmVTdmdTaXplKGRpYWdyYW0yLCBoZWlnaHQsIHdpZHRoLCBjb25mLnVzZU1heFdpZHRoKTtcbiAgY29uc3QgZXh0cmFWZXJ0Rm9yVGl0bGUgPSB0aXRsZTIgPyA2MCA6IDA7XG4gIGRpYWdyYW0yLmF0dHIoXG4gICAgXCJ2aWV3Qm94XCIsXG4gICAgYm94LnN0YXJ0eCAtIGNvbmYuZGlhZ3JhbU1hcmdpblggKyBcIiAtXCIgKyAoY29uZi5kaWFncmFtTWFyZ2luWSArIGV4dHJhVmVydEZvclRpdGxlKSArIFwiIFwiICsgd2lkdGggKyBcIiBcIiArIChoZWlnaHQgKyBleHRyYVZlcnRGb3JUaXRsZSlcbiAgKTtcbiAgbG9nLmRlYnVnKGBtb2RlbHM6YCwgYm94KTtcbn07XG5jb25zdCBjNFJlbmRlcmVyID0ge1xuICBkcmF3UGVyc29uT3JTeXN0ZW1BcnJheTogZHJhd0M0U2hhcGVBcnJheSxcbiAgZHJhd0JvdW5kYXJ5LFxuICBzZXRDb25mLFxuICBkcmF3XG59O1xuY29uc3QgZ2V0U3R5bGVzID0gKG9wdGlvbnMpID0+IGAucGVyc29uIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5wZXJzb25Cb3JkZXJ9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy5wZXJzb25Ca2d9O1xuICB9XG5gO1xuY29uc3QgYzRTdHlsZXMgPSBnZXRTdHlsZXM7XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXI6IGM0UGFyc2VyLFxuICBkYjogYzREYixcbiAgcmVuZGVyZXI6IGM0UmVuZGVyZXIsXG4gIHN0eWxlczogYzRTdHlsZXMsXG4gIGluaXQ6IChjbmYpID0+IHtcbiAgICBjNFJlbmRlcmVyLnNldENvbmYoY25mLmM0KTtcbiAgfVxufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/c4Diagram-9cddb37f.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/classDiagram-bc733c3b.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/classDiagram-bc733c3b.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles-aefe6593.js */ \"../../../node_modules/mermaid/dist/styles-aefe6593.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./svgDraw-0fcc813d.js */ \"../../../node_modules/mermaid/dist/svgDraw-0fcc813d.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet idCache = {};\nconst padding = 20;\nconst getGraphId = function(label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n if (foundEntry) {\n return foundEntry[0];\n }\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().class;\n idCache = {};\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Rendering diagram \" + text);\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__.Graph({\n multigraph: true\n });\n g.setGraph({\n isMultiGraph: true\n });\n g.setDefaultEdgeLabel(function() {\n return {};\n });\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n for (const key of keys) {\n const classDef = classes[key];\n const node = _svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_8__.s.drawClass(diagram2, classDef, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Org height: \" + node.height);\n }\n const relations = diagObj.db.getRelations();\n relations.forEach(function(relation) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\n \"tjoho\" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation\n },\n relation.title || \"DEFAULT\"\n );\n });\n const notes = diagObj.db.getNotes();\n notes.forEach(function(note) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(`Adding note: ${JSON.stringify(note)}`);\n const node = _svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_8__.s.drawNote(diagram2, note, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n if (note.class && note.class in classes) {\n g.setEdge(\n note.id,\n getGraphId(note.class),\n {\n relation: {\n id1: note.id,\n id2: note.class,\n relation: {\n type1: \"none\",\n type2: \"none\",\n lineType: 10\n }\n }\n },\n \"DEFAULT\"\n );\n }\n });\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__.layout)(g);\n g.nodes().forEach(function(v) {\n if (v !== void 0 && g.node(v) !== void 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Node \" + v + \": \" + JSON.stringify(g.node(v)));\n root.select(\"#\" + (diagObj.db.lookUpDomId(v) || v)).attr(\n \"transform\",\n \"translate(\" + (g.node(v).x - g.node(v).width / 2) + \",\" + (g.node(v).y - g.node(v).height / 2) + \" )\"\n );\n }\n });\n g.edges().forEach(function(e) {\n if (e !== void 0 && g.edge(e) !== void 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(g.edge(e)));\n _svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_8__.s.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);\n }\n });\n const svgBounds = diagram2.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.i)(diagram2, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(`viewBox ${vBox}`);\n diagram2.attr(\"viewBox\", vBox);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_9__.p,\n db: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_9__.d,\n renderer,\n styles: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_9__.s,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_9__.d.clear();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9jbGFzc0RpYWdyYW0tYmM3MzNjM2IuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBeUU7QUFDN0M7QUFDNEI7QUFDTTtBQUMwQjtBQUNuQztBQUNsQztBQUNKO0FBQ2tCO0FBQ2Q7QUFDSDtBQUNjO0FBQ2Q7QUFDYztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsdURBQVM7QUFDeEI7QUFDQSxFQUFFLHdEQUFRO0FBQ1Ysd0JBQXdCLHVEQUFTO0FBQ2pDO0FBQ0E7QUFDQSxxQkFBcUIsMENBQU07QUFDM0I7QUFDQSw2Q0FBNkMsMENBQU0sbURBQW1ELDBDQUFNO0FBQzVHLHVDQUF1QyxHQUFHO0FBQzFDO0FBQ0EsZ0JBQWdCLG9FQUFjO0FBQzlCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2REFBaUI7QUFDbEM7QUFDQTtBQUNBLElBQUksd0RBQVE7QUFDWjtBQUNBO0FBQ0E7QUFDQSxJQUFJLHdEQUFRO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsSUFBSSx5REFBUyxpQkFBaUIscUJBQXFCO0FBQ25ELGlCQUFpQiw0REFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUUsc0VBQU07QUFDUjtBQUNBO0FBQ0EsTUFBTSx5REFBUztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE1BQU0seURBQVM7QUFDZixNQUFNLDREQUFnQjtBQUN0QjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFnQjtBQUNsQixrQkFBa0IsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE9BQU87QUFDcEYsRUFBRSx5REFBUyxZQUFZLEtBQUs7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLElBQUk7QUFDSjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3REFBUTtBQUNaO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2NsYXNzRGlhZ3JhbS1iYzczM2MzYi5qcz9jOWMyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHAgYXMgcGFyc2VyLCBkIGFzIGRiLCBzIGFzIHN0eWxlcyB9IGZyb20gXCIuL3N0eWxlcy1hZWZlNjU5My5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgeyBsYXlvdXQgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBncmFwaGxpYiBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBjIGFzIGdldENvbmZpZywgbCBhcyBsb2csIGkgYXMgY29uZmlndXJlU3ZnU2l6ZSB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbmltcG9ydCB7IHMgYXMgc3ZnRHJhdyB9IGZyb20gXCIuL3N2Z0RyYXctMGZjYzgxM2QuanNcIjtcbmltcG9ydCBcInRzLWRlZGVudFwiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbmxldCBpZENhY2hlID0ge307XG5jb25zdCBwYWRkaW5nID0gMjA7XG5jb25zdCBnZXRHcmFwaElkID0gZnVuY3Rpb24obGFiZWwpIHtcbiAgY29uc3QgZm91bmRFbnRyeSA9IE9iamVjdC5lbnRyaWVzKGlkQ2FjaGUpLmZpbmQoKGVudHJ5KSA9PiBlbnRyeVsxXS5sYWJlbCA9PT0gbGFiZWwpO1xuICBpZiAoZm91bmRFbnRyeSkge1xuICAgIHJldHVybiBmb3VuZEVudHJ5WzBdO1xuICB9XG59O1xuY29uc3QgaW5zZXJ0TWFya2VycyA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJleHRlbnNpb25TdGFydFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJleHRlbnNpb25cIikuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDEsNyBMMTgsMTMgViAxIFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiZXh0ZW5zaW9uRW5kXCIpLmF0dHIoXCJyZWZYXCIsIDE5KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDEsMSBWIDEzIEwxOCw3IFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiY29tcG9zaXRpb25TdGFydFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJleHRlbnNpb25cIikuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFwiY29tcG9zaXRpb25FbmRcIikuYXR0cihcInJlZlhcIiwgMTkpLmF0dHIoXCJyZWZZXCIsIDcpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAyMCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyOCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWlwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJhZ2dyZWdhdGlvblN0YXJ0XCIpLmF0dHIoXCJjbGFzc1wiLCBcImV4dGVuc2lvblwiKS5hdHRyKFwicmVmWFwiLCAwKS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTkwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI0MCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWlwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJhZ2dyZWdhdGlvbkVuZFwiKS5hdHRyKFwicmVmWFwiLCAxOSkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDIwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaXCIpO1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImRlcGVuZGVuY3lTdGFydFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJleHRlbnNpb25cIikuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDUsNyBMOSwxMyBMMSw3IEw5LDEgWlwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJkZXBlbmRlbmN5RW5kXCIpLmF0dHIoXCJyZWZYXCIsIDE5KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDE0LDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IGRyYXcgPSBmdW5jdGlvbih0ZXh0LCBpZCwgX3ZlcnNpb24sIGRpYWdPYmopIHtcbiAgY29uc3QgY29uZiA9IGdldENvbmZpZygpLmNsYXNzO1xuICBpZENhY2hlID0ge307XG4gIGxvZy5pbmZvKFwiUmVuZGVyaW5nIGRpYWdyYW0gXCIgKyB0ZXh0KTtcbiAgY29uc3Qgc2VjdXJpdHlMZXZlbCA9IGdldENvbmZpZygpLnNlY3VyaXR5TGV2ZWw7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IGRpYWdyYW0yID0gcm9vdC5zZWxlY3QoYFtpZD0nJHtpZH0nXWApO1xuICBpbnNlcnRNYXJrZXJzKGRpYWdyYW0yKTtcbiAgY29uc3QgZyA9IG5ldyBncmFwaGxpYi5HcmFwaCh7XG4gICAgbXVsdGlncmFwaDogdHJ1ZVxuICB9KTtcbiAgZy5zZXRHcmFwaCh7XG4gICAgaXNNdWx0aUdyYXBoOiB0cnVlXG4gIH0pO1xuICBnLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IGRpYWdPYmouZGIuZ2V0Q2xhc3NlcygpO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2xhc3Nlcyk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCBjbGFzc0RlZiA9IGNsYXNzZXNba2V5XTtcbiAgICBjb25zdCBub2RlID0gc3ZnRHJhdy5kcmF3Q2xhc3MoZGlhZ3JhbTIsIGNsYXNzRGVmLCBjb25mLCBkaWFnT2JqKTtcbiAgICBpZENhY2hlW25vZGUuaWRdID0gbm9kZTtcbiAgICBnLnNldE5vZGUobm9kZS5pZCwgbm9kZSk7XG4gICAgbG9nLmluZm8oXCJPcmcgaGVpZ2h0OiBcIiArIG5vZGUuaGVpZ2h0KTtcbiAgfVxuICBjb25zdCByZWxhdGlvbnMgPSBkaWFnT2JqLmRiLmdldFJlbGF0aW9ucygpO1xuICByZWxhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihyZWxhdGlvbikge1xuICAgIGxvZy5pbmZvKFxuICAgICAgXCJ0am9ob1wiICsgZ2V0R3JhcGhJZChyZWxhdGlvbi5pZDEpICsgZ2V0R3JhcGhJZChyZWxhdGlvbi5pZDIpICsgSlNPTi5zdHJpbmdpZnkocmVsYXRpb24pXG4gICAgKTtcbiAgICBnLnNldEVkZ2UoXG4gICAgICBnZXRHcmFwaElkKHJlbGF0aW9uLmlkMSksXG4gICAgICBnZXRHcmFwaElkKHJlbGF0aW9uLmlkMiksXG4gICAgICB7XG4gICAgICAgIHJlbGF0aW9uXG4gICAgICB9LFxuICAgICAgcmVsYXRpb24udGl0bGUgfHwgXCJERUZBVUxUXCJcbiAgICApO1xuICB9KTtcbiAgY29uc3Qgbm90ZXMgPSBkaWFnT2JqLmRiLmdldE5vdGVzKCk7XG4gIG5vdGVzLmZvckVhY2goZnVuY3Rpb24obm90ZSkge1xuICAgIGxvZy5kZWJ1ZyhgQWRkaW5nIG5vdGU6ICR7SlNPTi5zdHJpbmdpZnkobm90ZSl9YCk7XG4gICAgY29uc3Qgbm9kZSA9IHN2Z0RyYXcuZHJhd05vdGUoZGlhZ3JhbTIsIG5vdGUsIGNvbmYsIGRpYWdPYmopO1xuICAgIGlkQ2FjaGVbbm9kZS5pZF0gPSBub2RlO1xuICAgIGcuc2V0Tm9kZShub2RlLmlkLCBub2RlKTtcbiAgICBpZiAobm90ZS5jbGFzcyAmJiBub3RlLmNsYXNzIGluIGNsYXNzZXMpIHtcbiAgICAgIGcuc2V0RWRnZShcbiAgICAgICAgbm90ZS5pZCxcbiAgICAgICAgZ2V0R3JhcGhJZChub3RlLmNsYXNzKSxcbiAgICAgICAge1xuICAgICAgICAgIHJlbGF0aW9uOiB7XG4gICAgICAgICAgICBpZDE6IG5vdGUuaWQsXG4gICAgICAgICAgICBpZDI6IG5vdGUuY2xhc3MsXG4gICAgICAgICAgICByZWxhdGlvbjoge1xuICAgICAgICAgICAgICB0eXBlMTogXCJub25lXCIsXG4gICAgICAgICAgICAgIHR5cGUyOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgbGluZVR5cGU6IDEwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIkRFRkFVTFRcIlxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuICBsYXlvdXQoZyk7XG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAodiAhPT0gdm9pZCAwICYmIGcubm9kZSh2KSAhPT0gdm9pZCAwKSB7XG4gICAgICBsb2cuZGVidWcoXCJOb2RlIFwiICsgdiArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGcubm9kZSh2KSkpO1xuICAgICAgcm9vdC5zZWxlY3QoXCIjXCIgKyAoZGlhZ09iai5kYi5sb29rVXBEb21JZCh2KSB8fCB2KSkuYXR0cihcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAoZy5ub2RlKHYpLnggLSBnLm5vZGUodikud2lkdGggLyAyKSArIFwiLFwiICsgKGcubm9kZSh2KS55IC0gZy5ub2RlKHYpLmhlaWdodCAvIDIpICsgXCIgKVwiXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIGcuZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoZSAhPT0gdm9pZCAwICYmIGcuZWRnZShlKSAhPT0gdm9pZCAwKSB7XG4gICAgICBsb2cuZGVidWcoXCJFZGdlIFwiICsgZS52ICsgXCIgLT4gXCIgKyBlLncgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShnLmVkZ2UoZSkpKTtcbiAgICAgIHN2Z0RyYXcuZHJhd0VkZ2UoZGlhZ3JhbTIsIGcuZWRnZShlKSwgZy5lZGdlKGUpLnJlbGF0aW9uLCBjb25mLCBkaWFnT2JqKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdmdCb3VuZHMgPSBkaWFncmFtMi5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCB3aWR0aCA9IHN2Z0JvdW5kcy53aWR0aCArIHBhZGRpbmcgKiAyO1xuICBjb25zdCBoZWlnaHQgPSBzdmdCb3VuZHMuaGVpZ2h0ICsgcGFkZGluZyAqIDI7XG4gIGNvbmZpZ3VyZVN2Z1NpemUoZGlhZ3JhbTIsIGhlaWdodCwgd2lkdGgsIGNvbmYudXNlTWF4V2lkdGgpO1xuICBjb25zdCB2Qm94ID0gYCR7c3ZnQm91bmRzLnggLSBwYWRkaW5nfSAke3N2Z0JvdW5kcy55IC0gcGFkZGluZ30gJHt3aWR0aH0gJHtoZWlnaHR9YDtcbiAgbG9nLmRlYnVnKGB2aWV3Qm94ICR7dkJveH1gKTtcbiAgZGlhZ3JhbTIuYXR0cihcInZpZXdCb3hcIiwgdkJveCk7XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIGRyYXdcbn07XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXIsXG4gIGRiLFxuICByZW5kZXJlcixcbiAgc3R5bGVzLFxuICBpbml0OiAoY25mKSA9PiB7XG4gICAgaWYgKCFjbmYuY2xhc3MpIHtcbiAgICAgIGNuZi5jbGFzcyA9IHt9O1xuICAgIH1cbiAgICBjbmYuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZSA9IGNuZi5hcnJvd01hcmtlckFic29sdXRlO1xuICAgIGRiLmNsZWFyKCk7XG4gIH1cbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/classDiagram-bc733c3b.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/classDiagram-v2-8931bdaf.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/classDiagram-v2-8931bdaf.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles-aefe6593.js */ \"../../../node_modules/mermaid/dist/styles-aefe6593.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _index_a92ac404_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./index-a92ac404.js */ \"../../../node_modules/mermaid/dist/index-a92ac404.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/json.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst sanitizeText = (txt) => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.sanitizeText(txt, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)());\nlet conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n curve: void 0\n};\nconst addNamespaces = function(namespaces, g, _id, diagObj) {\n const keys = Object.keys(namespaces);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"keys:\", keys);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(namespaces);\n keys.forEach(function(id) {\n var _a, _b;\n const vertex = namespaces[id];\n const shape = \"rect\";\n const node = {\n shape,\n id: vertex.id,\n domId: vertex.domId,\n labelText: sanitizeText(vertex.id),\n labelStyle: \"\",\n style: \"fill: none; stroke: black\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart) == null ? void 0 : _a.padding) ?? ((_b = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n addClasses(vertex.classes, g, _id, diagObj, vertex.id);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"setNode\", node);\n });\n};\nconst addClasses = function(classes, g, _id, diagObj, parent) {\n const keys = Object.keys(classes);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"keys:\", keys);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(classes);\n keys.forEach(function(id) {\n var _a, _b;\n const vertex = classes[id];\n let cssClassStr = \"\";\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + \" \" + vertex.cssClasses.join(\" \");\n }\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.label ?? vertex.id;\n const radius = 0;\n const shape = \"class_box\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radius,\n ry: radius,\n class: cssClassStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.domId,\n tooltip: diagObj.db.getTooltip(vertex.id, parent) || \"\",\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart) == null ? void 0 : _a.padding) ?? ((_b = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n if (parent) {\n g.setParent(vertex.id, parent);\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"setNode\", node);\n });\n};\nconst addNotes = function(notes, g, startEdgeId, classes) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(notes);\n notes.forEach(function(note, i) {\n var _a, _b;\n const vertex = note;\n const cssNoteStr = \"\";\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.text;\n const radius = 0;\n const shape = \"note\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n noteData: vertex,\n rx: radius,\n ry: radius,\n class: cssNoteStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.id,\n tooltip: \"\",\n type: \"note\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart) == null ? void 0 : _a.padding) ?? ((_b = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"setNode\", node);\n if (!vertex.class || !(vertex.class in classes)) {\n return;\n }\n const edgeId = startEdgeId + i;\n const edgeData = {\n id: `edgeNote${edgeId}`,\n //Set relationship style and line type\n classes: \"relation\",\n pattern: \"dotted\",\n // Set link type for rendering\n arrowhead: \"none\",\n //Set edge extra labels\n startLabelRight: \"\",\n endLabelLeft: \"\",\n //Set relation arrow types\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n style: \"fill:none\",\n labelStyle: \"\",\n curve: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.o)(conf.curve, d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear)\n };\n g.setEdge(vertex.id, vertex.class, edgeData, edgeId);\n });\n};\nconst addRelations = function(relations, g) {\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart;\n let cnt = 0;\n relations.forEach(function(edge) {\n var _a;\n cnt++;\n const edgeData = {\n //Set relationship style and line type\n classes: \"relation\",\n pattern: edge.relation.lineType == 1 ? \"dashed\" : \"solid\",\n id: \"id\" + cnt,\n // Set link type for rendering\n arrowhead: edge.type === \"arrow_open\" ? \"none\" : \"normal\",\n //Set edge extra labels\n startLabelRight: edge.relationTitle1 === \"none\" ? \"\" : edge.relationTitle1,\n endLabelLeft: edge.relationTitle2 === \"none\" ? \"\" : edge.relationTitle2,\n //Set relation arrow types\n arrowTypeStart: getArrowMarker(edge.relation.type1),\n arrowTypeEnd: getArrowMarker(edge.relation.type2),\n style: \"fill:none\",\n labelStyle: \"\",\n curve: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.o)(conf2 == null ? void 0 : conf2.curve, d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear)\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(edgeData, edge);\n if (edge.style !== void 0) {\n const styles2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.k)(edge.style);\n edgeData.style = styles2.style;\n edgeData.labelStyle = styles2.labelStyle;\n }\n edge.text = edge.title;\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (((_a = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart) == null ? void 0 : _a.htmlLabels) ?? (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().htmlLabels) {\n edgeData.labelType = \"html\";\n edgeData.label = '' + edge.text + \"\";\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\nconst setConf = function(cnf) {\n conf = {\n ...conf,\n ...cnf\n };\n};\nconst draw = async function(text, id, _version, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"Drawing class - \", id);\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().flowchart ?? (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().class;\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().securityLevel;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"config:\", conf2);\n const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;\n const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_1__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: diagObj.db.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const namespaces = diagObj.db.getNamespaces();\n const classes = diagObj.db.getClasses();\n const relations = diagObj.db.getRelations();\n const notes = diagObj.db.getNotes();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(relations);\n addNamespaces(namespaces, g, id, diagObj);\n addClasses(classes, g, id, diagObj);\n addRelations(relations, g);\n addNotes(notes, g, relations.length + 1, classes);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (\n // @ts-ignore Ignore type error for now\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body)\n ) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await (0,_index_a92ac404_js__WEBPACK_IMPORTED_MODULE_9__.r)(\n element,\n g,\n [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"],\n \"classDiagram\",\n id\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.u.insertTitle(svg, \"classTitleText\", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.p)(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);\n if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_10__.p,\n db: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_10__.d,\n renderer,\n styles: _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_10__.s,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _styles_aefe6593_js__WEBPACK_IMPORTED_MODULE_10__.d.clear();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9jbGFzc0RpYWdyYW0tdjItODkzMWJkYWYuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXlFO0FBQ2hDO0FBQ3FCO0FBQ3NHO0FBQ2xIO0FBQy9CO0FBQ0o7QUFDa0I7QUFDZDtBQUNIO0FBQ2M7QUFDZDtBQUNjO0FBQ1U7QUFDRTtBQUNiO0FBQ0s7QUFDQTtBQUNIO0FBQy9CLDhCQUE4QixnRUFBbUIsTUFBTSx1REFBUztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3REFBUTtBQUNWLEVBQUUsd0RBQVE7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLHNCQUFzQix1REFBUyx1REFBdUQsdURBQVM7QUFDL0Y7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3REFBUTtBQUNaLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1YsRUFBRSx3REFBUTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsdURBQVMsdURBQXVELHVEQUFTO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHdEQUFRO0FBQ1osR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1REFBUyx1REFBdUQsdURBQVM7QUFDL0Y7QUFDQTtBQUNBLElBQUksd0RBQVE7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLE9BQU87QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFrQixhQUFhLDJDQUFXO0FBQ3ZEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGdCQUFnQix1REFBUztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQWtCLHVDQUF1QywyQ0FBVztBQUNqRjtBQUNBLElBQUksd0RBQVE7QUFDWjtBQUNBLHNCQUFzQix1REFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsaUJBQWlCLHVEQUFTLG1EQUFtRCx1REFBUztBQUN0RjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsMkNBQTJDLGtFQUFxQjtBQUNoRTtBQUNBLDREQUE0RCxvQkFBb0I7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3REFBUTtBQUNWLGdCQUFnQix1REFBUyxnQkFBZ0IsdURBQVM7QUFDbEQsd0JBQXdCLHVEQUFTO0FBQ2pDLEVBQUUsd0RBQVE7QUFDVjtBQUNBO0FBQ0EsZ0JBQWdCLG9FQUFjO0FBQzlCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0RBQVE7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMENBQU07QUFDM0I7QUFDQTtBQUNBO0FBQ0EsSUFBSSwwQ0FBTTtBQUNWLE1BQU0sMENBQU07QUFDWixrQ0FBa0MsR0FBRztBQUNyQztBQUNBLFFBQVEscURBQU07QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLCtEQUFpQjtBQUNuQixFQUFFLHVEQUFpQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsSUFBSTtBQUNKO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlEQUFRO0FBQ1o7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvY2xhc3NEaWFncmFtLXYyLTg5MzFiZGFmLmpzP2NjNmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcCBhcyBwYXJzZXIsIGQgYXMgZGIsIHMgYXMgc3R5bGVzIH0gZnJvbSBcIi4vc3R5bGVzLWFlZmU2NTkzLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIGN1cnZlTGluZWFyIH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgKiBhcyBncmFwaGxpYiBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBsIGFzIGxvZywgYyBhcyBnZXRDb25maWcsIHUgYXMgdXRpbHMsIHAgYXMgc2V0dXBHcmFwaFZpZXdib3gsIG8gYXMgaW50ZXJwb2xhdGVUb0N1cnZlLCBrIGFzIGdldFN0eWxlc0Zyb21BcnJheSwgZSBhcyBjb21tb24gfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyByIGFzIHJlbmRlciB9IGZyb20gXCIuL2luZGV4LWE5MmFjNDA0LmpzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5pbXBvcnQgXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUvaW5kZXguanNcIjtcbmltcG9ydCBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzXCI7XG5pbXBvcnQgXCIuL2VkZ2VzLTQ5YWM0M2EyLmpzXCI7XG5pbXBvcnQgXCIuL2NyZWF0ZVRleHQtM2RmNjMwYjUuanNcIjtcbmltcG9ydCBcIm1kYXN0LXV0aWwtZnJvbS1tYXJrZG93blwiO1xuaW1wb3J0IFwiLi9zdmdEcmF3LTBmY2M4MTNkLmpzXCI7XG5jb25zdCBzYW5pdGl6ZVRleHQgPSAodHh0KSA9PiBjb21tb24uc2FuaXRpemVUZXh0KHR4dCwgZ2V0Q29uZmlnKCkpO1xubGV0IGNvbmYgPSB7XG4gIGRpdmlkZXJNYXJnaW46IDEwLFxuICBwYWRkaW5nOiA1LFxuICB0ZXh0SGVpZ2h0OiAxMCxcbiAgY3VydmU6IHZvaWQgMFxufTtcbmNvbnN0IGFkZE5hbWVzcGFjZXMgPSBmdW5jdGlvbihuYW1lc3BhY2VzLCBnLCBfaWQsIGRpYWdPYmopIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG5hbWVzcGFjZXMpO1xuICBsb2cuaW5mbyhcImtleXM6XCIsIGtleXMpO1xuICBsb2cuaW5mbyhuYW1lc3BhY2VzKTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB2ZXJ0ZXggPSBuYW1lc3BhY2VzW2lkXTtcbiAgICBjb25zdCBzaGFwZSA9IFwicmVjdFwiO1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICBzaGFwZSxcbiAgICAgIGlkOiB2ZXJ0ZXguaWQsXG4gICAgICBkb21JZDogdmVydGV4LmRvbUlkLFxuICAgICAgbGFiZWxUZXh0OiBzYW5pdGl6ZVRleHQodmVydGV4LmlkKSxcbiAgICAgIGxhYmVsU3R5bGU6IFwiXCIsXG4gICAgICBzdHlsZTogXCJmaWxsOiBub25lOyBzdHJva2U6IGJsYWNrXCIsXG4gICAgICAvLyBUT0RPIFYxMDogRmxvd2NoYXJ0ID8gS2VlcGluZyBmbG93Y2hhcnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBSZW1vdmUgaW4gbmV4dCBtYWpvciByZWxlYXNlXG4gICAgICBwYWRkaW5nOiAoKF9hID0gZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2EucGFkZGluZykgPz8gKChfYiA9IGdldENvbmZpZygpLmNsYXNzKSA9PSBudWxsID8gdm9pZCAwIDogX2IucGFkZGluZylcbiAgICB9O1xuICAgIGcuc2V0Tm9kZSh2ZXJ0ZXguaWQsIG5vZGUpO1xuICAgIGFkZENsYXNzZXModmVydGV4LmNsYXNzZXMsIGcsIF9pZCwgZGlhZ09iaiwgdmVydGV4LmlkKTtcbiAgICBsb2cuaW5mbyhcInNldE5vZGVcIiwgbm9kZSk7XG4gIH0pO1xufTtcbmNvbnN0IGFkZENsYXNzZXMgPSBmdW5jdGlvbihjbGFzc2VzLCBnLCBfaWQsIGRpYWdPYmosIHBhcmVudCkge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2xhc3Nlcyk7XG4gIGxvZy5pbmZvKFwia2V5czpcIiwga2V5cyk7XG4gIGxvZy5pbmZvKGNsYXNzZXMpO1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHZlcnRleCA9IGNsYXNzZXNbaWRdO1xuICAgIGxldCBjc3NDbGFzc1N0ciA9IFwiXCI7XG4gICAgaWYgKHZlcnRleC5jc3NDbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNzc0NsYXNzU3RyID0gY3NzQ2xhc3NTdHIgKyBcIiBcIiArIHZlcnRleC5jc3NDbGFzc2VzLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgICBjb25zdCBzdHlsZXMyID0geyBsYWJlbFN0eWxlOiBcIlwiLCBzdHlsZTogXCJcIiB9O1xuICAgIGNvbnN0IHZlcnRleFRleHQgPSB2ZXJ0ZXgubGFiZWwgPz8gdmVydGV4LmlkO1xuICAgIGNvbnN0IHJhZGl1cyA9IDA7XG4gICAgY29uc3Qgc2hhcGUgPSBcImNsYXNzX2JveFwiO1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICBsYWJlbFN0eWxlOiBzdHlsZXMyLmxhYmVsU3R5bGUsXG4gICAgICBzaGFwZSxcbiAgICAgIGxhYmVsVGV4dDogc2FuaXRpemVUZXh0KHZlcnRleFRleHQpLFxuICAgICAgY2xhc3NEYXRhOiB2ZXJ0ZXgsXG4gICAgICByeDogcmFkaXVzLFxuICAgICAgcnk6IHJhZGl1cyxcbiAgICAgIGNsYXNzOiBjc3NDbGFzc1N0cixcbiAgICAgIHN0eWxlOiBzdHlsZXMyLnN0eWxlLFxuICAgICAgaWQ6IHZlcnRleC5pZCxcbiAgICAgIGRvbUlkOiB2ZXJ0ZXguZG9tSWQsXG4gICAgICB0b29sdGlwOiBkaWFnT2JqLmRiLmdldFRvb2x0aXAodmVydGV4LmlkLCBwYXJlbnQpIHx8IFwiXCIsXG4gICAgICBoYXZlQ2FsbGJhY2s6IHZlcnRleC5oYXZlQ2FsbGJhY2ssXG4gICAgICBsaW5rOiB2ZXJ0ZXgubGluayxcbiAgICAgIHdpZHRoOiB2ZXJ0ZXgudHlwZSA9PT0gXCJncm91cFwiID8gNTAwIDogdm9pZCAwLFxuICAgICAgdHlwZTogdmVydGV4LnR5cGUsXG4gICAgICAvLyBUT0RPIFYxMDogRmxvd2NoYXJ0ID8gS2VlcGluZyBmbG93Y2hhcnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBSZW1vdmUgaW4gbmV4dCBtYWpvciByZWxlYXNlXG4gICAgICBwYWRkaW5nOiAoKF9hID0gZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2EucGFkZGluZykgPz8gKChfYiA9IGdldENvbmZpZygpLmNsYXNzKSA9PSBudWxsID8gdm9pZCAwIDogX2IucGFkZGluZylcbiAgICB9O1xuICAgIGcuc2V0Tm9kZSh2ZXJ0ZXguaWQsIG5vZGUpO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGcuc2V0UGFyZW50KHZlcnRleC5pZCwgcGFyZW50KTtcbiAgICB9XG4gICAgbG9nLmluZm8oXCJzZXROb2RlXCIsIG5vZGUpO1xuICB9KTtcbn07XG5jb25zdCBhZGROb3RlcyA9IGZ1bmN0aW9uKG5vdGVzLCBnLCBzdGFydEVkZ2VJZCwgY2xhc3Nlcykge1xuICBsb2cuaW5mbyhub3Rlcyk7XG4gIG5vdGVzLmZvckVhY2goZnVuY3Rpb24obm90ZSwgaSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgdmVydGV4ID0gbm90ZTtcbiAgICBjb25zdCBjc3NOb3RlU3RyID0gXCJcIjtcbiAgICBjb25zdCBzdHlsZXMyID0geyBsYWJlbFN0eWxlOiBcIlwiLCBzdHlsZTogXCJcIiB9O1xuICAgIGNvbnN0IHZlcnRleFRleHQgPSB2ZXJ0ZXgudGV4dDtcbiAgICBjb25zdCByYWRpdXMgPSAwO1xuICAgIGNvbnN0IHNoYXBlID0gXCJub3RlXCI7XG4gICAgY29uc3Qgbm9kZSA9IHtcbiAgICAgIGxhYmVsU3R5bGU6IHN0eWxlczIubGFiZWxTdHlsZSxcbiAgICAgIHNoYXBlLFxuICAgICAgbGFiZWxUZXh0OiBzYW5pdGl6ZVRleHQodmVydGV4VGV4dCksXG4gICAgICBub3RlRGF0YTogdmVydGV4LFxuICAgICAgcng6IHJhZGl1cyxcbiAgICAgIHJ5OiByYWRpdXMsXG4gICAgICBjbGFzczogY3NzTm90ZVN0cixcbiAgICAgIHN0eWxlOiBzdHlsZXMyLnN0eWxlLFxuICAgICAgaWQ6IHZlcnRleC5pZCxcbiAgICAgIGRvbUlkOiB2ZXJ0ZXguaWQsXG4gICAgICB0b29sdGlwOiBcIlwiLFxuICAgICAgdHlwZTogXCJub3RlXCIsXG4gICAgICAvLyBUT0RPIFYxMDogRmxvd2NoYXJ0ID8gS2VlcGluZyBmbG93Y2hhcnQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBSZW1vdmUgaW4gbmV4dCBtYWpvciByZWxlYXNlXG4gICAgICBwYWRkaW5nOiAoKF9hID0gZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2EucGFkZGluZykgPz8gKChfYiA9IGdldENvbmZpZygpLmNsYXNzKSA9PSBudWxsID8gdm9pZCAwIDogX2IucGFkZGluZylcbiAgICB9O1xuICAgIGcuc2V0Tm9kZSh2ZXJ0ZXguaWQsIG5vZGUpO1xuICAgIGxvZy5pbmZvKFwic2V0Tm9kZVwiLCBub2RlKTtcbiAgICBpZiAoIXZlcnRleC5jbGFzcyB8fCAhKHZlcnRleC5jbGFzcyBpbiBjbGFzc2VzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlZGdlSWQgPSBzdGFydEVkZ2VJZCArIGk7XG4gICAgY29uc3QgZWRnZURhdGEgPSB7XG4gICAgICBpZDogYGVkZ2VOb3RlJHtlZGdlSWR9YCxcbiAgICAgIC8vU2V0IHJlbGF0aW9uc2hpcCBzdHlsZSBhbmQgbGluZSB0eXBlXG4gICAgICBjbGFzc2VzOiBcInJlbGF0aW9uXCIsXG4gICAgICBwYXR0ZXJuOiBcImRvdHRlZFwiLFxuICAgICAgLy8gU2V0IGxpbmsgdHlwZSBmb3IgcmVuZGVyaW5nXG4gICAgICBhcnJvd2hlYWQ6IFwibm9uZVwiLFxuICAgICAgLy9TZXQgZWRnZSBleHRyYSBsYWJlbHNcbiAgICAgIHN0YXJ0TGFiZWxSaWdodDogXCJcIixcbiAgICAgIGVuZExhYmVsTGVmdDogXCJcIixcbiAgICAgIC8vU2V0IHJlbGF0aW9uIGFycm93IHR5cGVzXG4gICAgICBhcnJvd1R5cGVTdGFydDogXCJub25lXCIsXG4gICAgICBhcnJvd1R5cGVFbmQ6IFwibm9uZVwiLFxuICAgICAgc3R5bGU6IFwiZmlsbDpub25lXCIsXG4gICAgICBsYWJlbFN0eWxlOiBcIlwiLFxuICAgICAgY3VydmU6IGludGVycG9sYXRlVG9DdXJ2ZShjb25mLmN1cnZlLCBjdXJ2ZUxpbmVhcilcbiAgICB9O1xuICAgIGcuc2V0RWRnZSh2ZXJ0ZXguaWQsIHZlcnRleC5jbGFzcywgZWRnZURhdGEsIGVkZ2VJZCk7XG4gIH0pO1xufTtcbmNvbnN0IGFkZFJlbGF0aW9ucyA9IGZ1bmN0aW9uKHJlbGF0aW9ucywgZykge1xuICBjb25zdCBjb25mMiA9IGdldENvbmZpZygpLmZsb3djaGFydDtcbiAgbGV0IGNudCA9IDA7XG4gIHJlbGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICB2YXIgX2E7XG4gICAgY250Kys7XG4gICAgY29uc3QgZWRnZURhdGEgPSB7XG4gICAgICAvL1NldCByZWxhdGlvbnNoaXAgc3R5bGUgYW5kIGxpbmUgdHlwZVxuICAgICAgY2xhc3NlczogXCJyZWxhdGlvblwiLFxuICAgICAgcGF0dGVybjogZWRnZS5yZWxhdGlvbi5saW5lVHlwZSA9PSAxID8gXCJkYXNoZWRcIiA6IFwic29saWRcIixcbiAgICAgIGlkOiBcImlkXCIgKyBjbnQsXG4gICAgICAvLyBTZXQgbGluayB0eXBlIGZvciByZW5kZXJpbmdcbiAgICAgIGFycm93aGVhZDogZWRnZS50eXBlID09PSBcImFycm93X29wZW5cIiA/IFwibm9uZVwiIDogXCJub3JtYWxcIixcbiAgICAgIC8vU2V0IGVkZ2UgZXh0cmEgbGFiZWxzXG4gICAgICBzdGFydExhYmVsUmlnaHQ6IGVkZ2UucmVsYXRpb25UaXRsZTEgPT09IFwibm9uZVwiID8gXCJcIiA6IGVkZ2UucmVsYXRpb25UaXRsZTEsXG4gICAgICBlbmRMYWJlbExlZnQ6IGVkZ2UucmVsYXRpb25UaXRsZTIgPT09IFwibm9uZVwiID8gXCJcIiA6IGVkZ2UucmVsYXRpb25UaXRsZTIsXG4gICAgICAvL1NldCByZWxhdGlvbiBhcnJvdyB0eXBlc1xuICAgICAgYXJyb3dUeXBlU3RhcnQ6IGdldEFycm93TWFya2VyKGVkZ2UucmVsYXRpb24udHlwZTEpLFxuICAgICAgYXJyb3dUeXBlRW5kOiBnZXRBcnJvd01hcmtlcihlZGdlLnJlbGF0aW9uLnR5cGUyKSxcbiAgICAgIHN0eWxlOiBcImZpbGw6bm9uZVwiLFxuICAgICAgbGFiZWxTdHlsZTogXCJcIixcbiAgICAgIGN1cnZlOiBpbnRlcnBvbGF0ZVRvQ3VydmUoY29uZjIgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbmYyLmN1cnZlLCBjdXJ2ZUxpbmVhcilcbiAgICB9O1xuICAgIGxvZy5pbmZvKGVkZ2VEYXRhLCBlZGdlKTtcbiAgICBpZiAoZWRnZS5zdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCBzdHlsZXMyID0gZ2V0U3R5bGVzRnJvbUFycmF5KGVkZ2Uuc3R5bGUpO1xuICAgICAgZWRnZURhdGEuc3R5bGUgPSBzdHlsZXMyLnN0eWxlO1xuICAgICAgZWRnZURhdGEubGFiZWxTdHlsZSA9IHN0eWxlczIubGFiZWxTdHlsZTtcbiAgICB9XG4gICAgZWRnZS50ZXh0ID0gZWRnZS50aXRsZTtcbiAgICBpZiAoZWRnZS50ZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIGlmIChlZGdlLnN0eWxlICE9PSB2b2lkIDApIHtcbiAgICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIGVkZ2VEYXRhLmxhYmVscG9zID0gXCJjXCI7XG4gICAgICBpZiAoKChfYSA9IGdldENvbmZpZygpLmZsb3djaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmh0bWxMYWJlbHMpID8/IGdldENvbmZpZygpLmh0bWxMYWJlbHMpIHtcbiAgICAgICAgZWRnZURhdGEubGFiZWxUeXBlID0gXCJodG1sXCI7XG4gICAgICAgIGVkZ2VEYXRhLmxhYmVsID0gJzxzcGFuIGNsYXNzPVwiZWRnZUxhYmVsXCI+JyArIGVkZ2UudGV4dCArIFwiPC9zcGFuPlwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWRnZURhdGEubGFiZWxUeXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgIGVkZ2VEYXRhLmxhYmVsID0gZWRnZS50ZXh0LnJlcGxhY2UoY29tbW9uLmxpbmVCcmVha1JlZ2V4LCBcIlxcblwiKTtcbiAgICAgICAgaWYgKGVkZ2Uuc3R5bGUgPT09IHZvaWQgMCkge1xuICAgICAgICAgIGVkZ2VEYXRhLnN0eWxlID0gZWRnZURhdGEuc3R5bGUgfHwgXCJzdHJva2U6ICMzMzM7IHN0cm9rZS13aWR0aDogMS41cHg7ZmlsbDpub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgZWRnZURhdGEubGFiZWxTdHlsZSA9IGVkZ2VEYXRhLmxhYmVsU3R5bGUucmVwbGFjZShcImNvbG9yOlwiLCBcImZpbGw6XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBnLnNldEVkZ2UoZWRnZS5pZDEsIGVkZ2UuaWQyLCBlZGdlRGF0YSwgY250KTtcbiAgfSk7XG59O1xuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKGNuZikge1xuICBjb25mID0ge1xuICAgIC4uLmNvbmYsXG4gICAgLi4uY25mXG4gIH07XG59O1xuY29uc3QgZHJhdyA9IGFzeW5jIGZ1bmN0aW9uKHRleHQsIGlkLCBfdmVyc2lvbiwgZGlhZ09iaikge1xuICBsb2cuaW5mbyhcIkRyYXdpbmcgY2xhc3MgLSBcIiwgaWQpO1xuICBjb25zdCBjb25mMiA9IGdldENvbmZpZygpLmZsb3djaGFydCA/PyBnZXRDb25maWcoKS5jbGFzcztcbiAgY29uc3Qgc2VjdXJpdHlMZXZlbCA9IGdldENvbmZpZygpLnNlY3VyaXR5TGV2ZWw7XG4gIGxvZy5pbmZvKFwiY29uZmlnOlwiLCBjb25mMik7XG4gIGNvbnN0IG5vZGVTcGFjaW5nID0gKGNvbmYyID09IG51bGwgPyB2b2lkIDAgOiBjb25mMi5ub2RlU3BhY2luZykgPz8gNTA7XG4gIGNvbnN0IHJhbmtTcGFjaW5nID0gKGNvbmYyID09IG51bGwgPyB2b2lkIDAgOiBjb25mMi5yYW5rU3BhY2luZykgPz8gNTA7XG4gIGNvbnN0IGcgPSBuZXcgZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSkuc2V0R3JhcGgoe1xuICAgIHJhbmtkaXI6IGRpYWdPYmouZGIuZ2V0RGlyZWN0aW9uKCksXG4gICAgbm9kZXNlcDogbm9kZVNwYWNpbmcsXG4gICAgcmFua3NlcDogcmFua1NwYWNpbmcsXG4gICAgbWFyZ2lueDogOCxcbiAgICBtYXJnaW55OiA4XG4gIH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgY29uc3QgbmFtZXNwYWNlcyA9IGRpYWdPYmouZGIuZ2V0TmFtZXNwYWNlcygpO1xuICBjb25zdCBjbGFzc2VzID0gZGlhZ09iai5kYi5nZXRDbGFzc2VzKCk7XG4gIGNvbnN0IHJlbGF0aW9ucyA9IGRpYWdPYmouZGIuZ2V0UmVsYXRpb25zKCk7XG4gIGNvbnN0IG5vdGVzID0gZGlhZ09iai5kYi5nZXROb3RlcygpO1xuICBsb2cuaW5mbyhyZWxhdGlvbnMpO1xuICBhZGROYW1lc3BhY2VzKG5hbWVzcGFjZXMsIGcsIGlkLCBkaWFnT2JqKTtcbiAgYWRkQ2xhc3NlcyhjbGFzc2VzLCBnLCBpZCwgZGlhZ09iaik7XG4gIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnMsIGcpO1xuICBhZGROb3Rlcyhub3RlcywgZywgcmVsYXRpb25zLmxlbmd0aCArIDEsIGNsYXNzZXMpO1xuICBsZXQgc2FuZGJveEVsZW1lbnQ7XG4gIGlmIChzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIikge1xuICAgIHNhbmRib3hFbGVtZW50ID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgfVxuICBjb25zdCByb290ID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyAoXG4gICAgLy8gQHRzLWlnbm9yZSBJZ25vcmUgdHlwZSBlcnJvciBmb3Igbm93XG4gICAgc2VsZWN0KHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpXG4gICkgOiBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChgW2lkPVwiJHtpZH1cIl1gKTtcbiAgY29uc3QgZWxlbWVudCA9IHJvb3Quc2VsZWN0KFwiI1wiICsgaWQgKyBcIiBnXCIpO1xuICBhd2FpdCByZW5kZXIoXG4gICAgZWxlbWVudCxcbiAgICBnLFxuICAgIFtcImFnZ3JlZ2F0aW9uXCIsIFwiZXh0ZW5zaW9uXCIsIFwiY29tcG9zaXRpb25cIiwgXCJkZXBlbmRlbmN5XCIsIFwibG9sbGlwb3BcIl0sXG4gICAgXCJjbGFzc0RpYWdyYW1cIixcbiAgICBpZFxuICApO1xuICB1dGlscy5pbnNlcnRUaXRsZShzdmcsIFwiY2xhc3NUaXRsZVRleHRcIiwgKGNvbmYyID09IG51bGwgPyB2b2lkIDAgOiBjb25mMi50aXRsZVRvcE1hcmdpbikgPz8gNSwgZGlhZ09iai5kYi5nZXREaWFncmFtVGl0bGUoKSk7XG4gIHNldHVwR3JhcGhWaWV3Ym94KGcsIHN2ZywgY29uZjIgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbmYyLmRpYWdyYW1QYWRkaW5nLCBjb25mMiA9PSBudWxsID8gdm9pZCAwIDogY29uZjIudXNlTWF4V2lkdGgpO1xuICBpZiAoIShjb25mMiA9PSBudWxsID8gdm9pZCAwIDogY29uZjIuaHRtbExhYmVscykpIHtcbiAgICBjb25zdCBkb2MgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50IDogZG9jdW1lbnQ7XG4gICAgY29uc3QgbGFiZWxzID0gZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD1cIicgKyBpZCArICdcIl0gLmVkZ2VMYWJlbCAubGFiZWwnKTtcbiAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGxhYmVscykge1xuICAgICAgY29uc3QgZGltID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgICAgY29uc3QgcmVjdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInJlY3RcIik7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcInJ4XCIsIDApO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJyeVwiLCAwKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgZGltLndpZHRoKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGRpbS5oZWlnaHQpO1xuICAgICAgbGFiZWwuaW5zZXJ0QmVmb3JlKHJlY3QsIGxhYmVsLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIGdldEFycm93TWFya2VyKHR5cGUpIHtcbiAgbGV0IG1hcmtlcjtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAwOlxuICAgICAgbWFya2VyID0gXCJhZ2dyZWdhdGlvblwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgbWFya2VyID0gXCJleHRlbnNpb25cIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIG1hcmtlciA9IFwiY29tcG9zaXRpb25cIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIG1hcmtlciA9IFwiZGVwZW5kZW5jeVwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgbWFya2VyID0gXCJsb2xsaXBvcFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1hcmtlciA9IFwibm9uZVwiO1xuICB9XG4gIHJldHVybiBtYXJrZXI7XG59XG5jb25zdCByZW5kZXJlciA9IHtcbiAgc2V0Q29uZixcbiAgZHJhd1xufTtcbmNvbnN0IGRpYWdyYW0gPSB7XG4gIHBhcnNlcixcbiAgZGIsXG4gIHJlbmRlcmVyLFxuICBzdHlsZXMsXG4gIGluaXQ6IChjbmYpID0+IHtcbiAgICBpZiAoIWNuZi5jbGFzcykge1xuICAgICAgY25mLmNsYXNzID0ge307XG4gICAgfVxuICAgIGNuZi5jbGFzcy5hcnJvd01hcmtlckFic29sdXRlID0gY25mLmFycm93TWFya2VyQWJzb2x1dGU7XG4gICAgZGIuY2xlYXIoKTtcbiAgfVxufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/classDiagram-v2-8931bdaf.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/createText-3df630b5.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/createText-3df630b5.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"c\": () => (/* binding */ createText)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var mdast_util_from_markdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mdast-util-from-markdown */ \"../../../node_modules/mdast-util-from-markdown/dev/lib/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n\n\n\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = (0,ts_dedent__WEBPACK_IMPORTED_MODULE_0__.dedent)(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = (0,mdast_util_from_markdown__WEBPACK_IMPORTED_MODULE_1__.fromMarkdown)(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = (0,mdast_util_from_markdown__WEBPACK_IMPORTED_MODULE_1__.fromMarkdown)(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"emphasis\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `

${node.children.map(output).join(\"\")}

`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n \" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, text) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, [{ content: text, type: \"normal\" }]);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n let bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n structuredText.forEach((line) => {\n let fullStr = line.map((data) => data.content).join(\" \");\n let tempStr = \"\";\n let linesUnderWidth = [];\n let prevIndex = 0;\n if (computeWidthOfText(labelGroup, lineHeight, fullStr) <= width) {\n linesUnderWidth.push(fullStr);\n } else {\n for (let i = 0; i <= fullStr.length; i++) {\n tempStr = fullStr.slice(prevIndex, i);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_2__.l.info(tempStr, prevIndex, i);\n if (computeWidthOfText(labelGroup, lineHeight, tempStr) > width) {\n const subStr = fullStr.slice(prevIndex, i);\n const lastSpaceIndex = subStr.lastIndexOf(\" \");\n if (lastSpaceIndex > -1) {\n i = prevIndex + lastSpaceIndex + 1;\n }\n linesUnderWidth.push(fullStr.slice(prevIndex, i).trim());\n prevIndex = i;\n tempStr = null;\n }\n }\n if (tempStr != null) {\n linesUnderWidth.push(tempStr);\n }\n }\n const preparedLines = linesUnderWidth.map((w) => ({ content: w, type: line.type }));\n for (const preparedLine of preparedLines) {\n let tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, [preparedLine]);\n lineIndex++;\n }\n });\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"em\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width,\n addSvgBackground = false\n} = {}) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_2__.l.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_2__.H)(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9jcmVhdGVUZXh0LTNkZjYzMGI1LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBc0U7QUFDZDtBQUNyQjtBQUNuQztBQUNBLHVEQUF1RCxHQUFHO0FBQzFELDZCQUE2QixpREFBTTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsV0FBVyxFQUFFLHNFQUFZO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxpQ0FBaUM7QUFDdkU7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxVQUFVLFdBQVcsRUFBRSxzRUFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sd0JBQXdCLG1DQUFtQztBQUMzRCxNQUFNO0FBQ04sb0JBQW9CLG1DQUFtQztBQUN2RCxNQUFNO0FBQ04sbUJBQW1CLG1DQUFtQztBQUN0RDtBQUNBLG9DQUFvQyxVQUFVO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixZQUFZLEVBQUUsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLCtCQUErQjtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLHNCQUFzQixxQkFBcUI7QUFDM0M7QUFDQSxRQUFRLHdEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCw2QkFBNkI7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSTtBQUNOLEVBQUUsd0RBQVE7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQWM7QUFDM0I7QUFDQSw0QkFBNEIsb0JBQW9CO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvY3JlYXRlVGV4dC0zZGY2MzBiNS5qcz85ZjY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGwgYXMgbG9nLCBIIGFzIGRlY29kZUVudGl0aWVzIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IHsgZnJvbU1hcmtkb3duIH0gZnJvbSBcIm1kYXN0LXV0aWwtZnJvbS1tYXJrZG93blwiO1xuaW1wb3J0IHsgZGVkZW50IH0gZnJvbSBcInRzLWRlZGVudFwiO1xuZnVuY3Rpb24gcHJlcHJvY2Vzc01hcmtkb3duKG1hcmtkb3duKSB7XG4gIGNvbnN0IHdpdGhvdXRNdWx0aXBsZU5ld2xpbmVzID0gbWFya2Rvd24ucmVwbGFjZSgvXFxuezIsfS9nLCBcIlxcblwiKTtcbiAgY29uc3Qgd2l0aG91dEV4dHJhU3BhY2VzID0gZGVkZW50KHdpdGhvdXRNdWx0aXBsZU5ld2xpbmVzKTtcbiAgcmV0dXJuIHdpdGhvdXRFeHRyYVNwYWNlcztcbn1cbmZ1bmN0aW9uIG1hcmtkb3duVG9MaW5lcyhtYXJrZG93bikge1xuICBjb25zdCBwcmVwcm9jZXNzZWRNYXJrZG93biA9IHByZXByb2Nlc3NNYXJrZG93bihtYXJrZG93bik7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGZyb21NYXJrZG93bihwcmVwcm9jZXNzZWRNYXJrZG93bik7XG4gIGNvbnN0IGxpbmVzID0gW1tdXTtcbiAgbGV0IGN1cnJlbnRMaW5lID0gMDtcbiAgZnVuY3Rpb24gcHJvY2Vzc05vZGUobm9kZSwgcGFyZW50VHlwZSA9IFwibm9ybWFsXCIpIHtcbiAgICBpZiAobm9kZS50eXBlID09PSBcInRleHRcIikge1xuICAgICAgY29uc3QgdGV4dExpbmVzID0gbm9kZS52YWx1ZS5zcGxpdChcIlxcblwiKTtcbiAgICAgIHRleHRMaW5lcy5mb3JFYWNoKCh0ZXh0TGluZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgY3VycmVudExpbmUrKztcbiAgICAgICAgICBsaW5lcy5wdXNoKFtdKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0TGluZS5zcGxpdChcIiBcIikuZm9yRWFjaCgod29yZCkgPT4ge1xuICAgICAgICAgIGlmICh3b3JkKSB7XG4gICAgICAgICAgICBsaW5lc1tjdXJyZW50TGluZV0ucHVzaCh7IGNvbnRlbnQ6IHdvcmQsIHR5cGU6IHBhcmVudFR5cGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInN0cm9uZ1wiIHx8IG5vZGUudHlwZSA9PT0gXCJlbXBoYXNpc1wiKSB7XG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNvbnRlbnROb2RlKSA9PiB7XG4gICAgICAgIHByb2Nlc3NOb2RlKGNvbnRlbnROb2RlLCBub2RlLnR5cGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNoaWxkcmVuLmZvckVhY2goKHRyZWVOb2RlKSA9PiB7XG4gICAgaWYgKHRyZWVOb2RlLnR5cGUgPT09IFwicGFyYWdyYXBoXCIpIHtcbiAgICAgIHRyZWVOb2RlLmNoaWxkcmVuLmZvckVhY2goKGNvbnRlbnROb2RlKSA9PiB7XG4gICAgICAgIHByb2Nlc3NOb2RlKGNvbnRlbnROb2RlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsaW5lcztcbn1cbmZ1bmN0aW9uIG1hcmtkb3duVG9IVE1MKG1hcmtkb3duKSB7XG4gIGNvbnN0IHsgY2hpbGRyZW4gfSA9IGZyb21NYXJrZG93bihtYXJrZG93bik7XG4gIGZ1bmN0aW9uIG91dHB1dChub2RlKSB7XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlLnJlcGxhY2UoL1xcbi9nLCBcIjxici8+XCIpO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlID09PSBcInN0cm9uZ1wiKSB7XG4gICAgICByZXR1cm4gYDxzdHJvbmc+JHtub2RlLmNoaWxkcmVuLm1hcChvdXRwdXQpLmpvaW4oXCJcIil9PC9zdHJvbmc+YDtcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gXCJlbXBoYXNpc1wiKSB7XG4gICAgICByZXR1cm4gYDxlbT4ke25vZGUuY2hpbGRyZW4ubWFwKG91dHB1dCkuam9pbihcIlwiKX08L2VtPmA7XG4gICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IFwicGFyYWdyYXBoXCIpIHtcbiAgICAgIHJldHVybiBgPHA+JHtub2RlLmNoaWxkcmVuLm1hcChvdXRwdXQpLmpvaW4oXCJcIil9PC9wPmA7XG4gICAgfVxuICAgIHJldHVybiBgVW5zdXBwb3J0ZWQgbWFya2Rvd246ICR7bm9kZS50eXBlfWA7XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuLm1hcChvdXRwdXQpLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiBhcHBseVN0eWxlKGRvbSwgc3R5bGVGbikge1xuICBpZiAoc3R5bGVGbikge1xuICAgIGRvbS5hdHRyKFwic3R5bGVcIiwgc3R5bGVGbik7XG4gIH1cbn1cbmZ1bmN0aW9uIGFkZEh0bWxTcGFuKGVsZW1lbnQsIG5vZGUsIHdpZHRoLCBjbGFzc2VzLCBhZGRCYWNrZ3JvdW5kID0gZmFsc2UpIHtcbiAgY29uc3QgZm8gPSBlbGVtZW50LmFwcGVuZChcImZvcmVpZ25PYmplY3RcIik7XG4gIGNvbnN0IGRpdiA9IGZvLmFwcGVuZChcInhodG1sOmRpdlwiKTtcbiAgY29uc3QgbGFiZWwgPSBub2RlLmxhYmVsO1xuICBjb25zdCBsYWJlbENsYXNzID0gbm9kZS5pc05vZGUgPyBcIm5vZGVMYWJlbFwiIDogXCJlZGdlTGFiZWxcIjtcbiAgZGl2Lmh0bWwoXG4gICAgYFxuICAgIDxzcGFuIGNsYXNzPVwiJHtsYWJlbENsYXNzfSAke2NsYXNzZXN9XCIgYCArIChub2RlLmxhYmVsU3R5bGUgPyAnc3R5bGU9XCInICsgbm9kZS5sYWJlbFN0eWxlICsgJ1wiJyA6IFwiXCIpICsgXCI+XCIgKyBsYWJlbCArIFwiPC9zcGFuPlwiXG4gICk7XG4gIGFwcGx5U3R5bGUoZGl2LCBub2RlLmxhYmVsU3R5bGUpO1xuICBkaXYuc3R5bGUoXCJkaXNwbGF5XCIsIFwidGFibGUtY2VsbFwiKTtcbiAgZGl2LnN0eWxlKFwid2hpdGUtc3BhY2VcIiwgXCJub3dyYXBcIik7XG4gIGRpdi5zdHlsZShcIm1heC13aWR0aFwiLCB3aWR0aCArIFwicHhcIik7XG4gIGRpdi5hdHRyKFwieG1sbnNcIiwgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpO1xuICBpZiAoYWRkQmFja2dyb3VuZCkge1xuICAgIGRpdi5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbEJrZ1wiKTtcbiAgfVxuICBsZXQgYmJveCA9IGRpdi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGlmIChiYm94LndpZHRoID09PSB3aWR0aCkge1xuICAgIGRpdi5zdHlsZShcImRpc3BsYXlcIiwgXCJ0YWJsZVwiKTtcbiAgICBkaXYuc3R5bGUoXCJ3aGl0ZS1zcGFjZVwiLCBcImJyZWFrLXNwYWNlc1wiKTtcbiAgICBkaXYuc3R5bGUoXCJ3aWR0aFwiLCB3aWR0aCArIFwicHhcIik7XG4gICAgYmJveCA9IGRpdi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIH1cbiAgZm8uc3R5bGUoXCJ3aWR0aFwiLCBiYm94LndpZHRoKTtcbiAgZm8uc3R5bGUoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQpO1xuICByZXR1cm4gZm8ubm9kZSgpO1xufVxuZnVuY3Rpb24gY3JlYXRlVHNwYW4odGV4dEVsZW1lbnQsIGxpbmVJbmRleCwgbGluZUhlaWdodCkge1xuICByZXR1cm4gdGV4dEVsZW1lbnQuYXBwZW5kKFwidHNwYW5cIikuYXR0cihcImNsYXNzXCIsIFwidGV4dC1vdXRlci10c3BhblwiKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0IC0gMC4xICsgXCJlbVwiKS5hdHRyKFwiZHlcIiwgbGluZUhlaWdodCArIFwiZW1cIik7XG59XG5mdW5jdGlvbiBjb21wdXRlV2lkdGhPZlRleHQocGFyZW50Tm9kZSwgbGluZUhlaWdodCwgdGV4dCkge1xuICBjb25zdCB0ZXN0RWxlbWVudCA9IHBhcmVudE5vZGUuYXBwZW5kKFwidGV4dFwiKTtcbiAgY29uc3QgdGVzdFNwYW4gPSBjcmVhdGVUc3Bhbih0ZXN0RWxlbWVudCwgMSwgbGluZUhlaWdodCk7XG4gIHVwZGF0ZVRleHRDb250ZW50QW5kU3R5bGVzKHRlc3RTcGFuLCBbeyBjb250ZW50OiB0ZXh0LCB0eXBlOiBcIm5vcm1hbFwiIH1dKTtcbiAgY29uc3QgdGV4dExlbmd0aCA9IHRlc3RTcGFuLm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKTtcbiAgdGVzdEVsZW1lbnQucmVtb3ZlKCk7XG4gIHJldHVybiB0ZXh0TGVuZ3RoO1xufVxuZnVuY3Rpb24gY3JlYXRlRm9ybWF0dGVkVGV4dCh3aWR0aCwgZywgc3RydWN0dXJlZFRleHQsIGFkZEJhY2tncm91bmQgPSBmYWxzZSkge1xuICBjb25zdCBsaW5lSGVpZ2h0ID0gMS4xO1xuICBjb25zdCBsYWJlbEdyb3VwID0gZy5hcHBlbmQoXCJnXCIpO1xuICBsZXQgYmtnID0gbGFiZWxHcm91cC5pbnNlcnQoXCJyZWN0XCIpLmF0dHIoXCJjbGFzc1wiLCBcImJhY2tncm91bmRcIik7XG4gIGNvbnN0IHRleHRFbGVtZW50ID0gbGFiZWxHcm91cC5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ5XCIsIFwiLTEwLjFcIik7XG4gIGxldCBsaW5lSW5kZXggPSAwO1xuICBzdHJ1Y3R1cmVkVGV4dC5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgbGV0IGZ1bGxTdHIgPSBsaW5lLm1hcCgoZGF0YSkgPT4gZGF0YS5jb250ZW50KS5qb2luKFwiIFwiKTtcbiAgICBsZXQgdGVtcFN0ciA9IFwiXCI7XG4gICAgbGV0IGxpbmVzVW5kZXJXaWR0aCA9IFtdO1xuICAgIGxldCBwcmV2SW5kZXggPSAwO1xuICAgIGlmIChjb21wdXRlV2lkdGhPZlRleHQobGFiZWxHcm91cCwgbGluZUhlaWdodCwgZnVsbFN0cikgPD0gd2lkdGgpIHtcbiAgICAgIGxpbmVzVW5kZXJXaWR0aC5wdXNoKGZ1bGxTdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBmdWxsU3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRlbXBTdHIgPSBmdWxsU3RyLnNsaWNlKHByZXZJbmRleCwgaSk7XG4gICAgICAgIGxvZy5pbmZvKHRlbXBTdHIsIHByZXZJbmRleCwgaSk7XG4gICAgICAgIGlmIChjb21wdXRlV2lkdGhPZlRleHQobGFiZWxHcm91cCwgbGluZUhlaWdodCwgdGVtcFN0cikgPiB3aWR0aCkge1xuICAgICAgICAgIGNvbnN0IHN1YlN0ciA9IGZ1bGxTdHIuc2xpY2UocHJldkluZGV4LCBpKTtcbiAgICAgICAgICBjb25zdCBsYXN0U3BhY2VJbmRleCA9IHN1YlN0ci5sYXN0SW5kZXhPZihcIiBcIik7XG4gICAgICAgICAgaWYgKGxhc3RTcGFjZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGkgPSBwcmV2SW5kZXggKyBsYXN0U3BhY2VJbmRleCArIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxpbmVzVW5kZXJXaWR0aC5wdXNoKGZ1bGxTdHIuc2xpY2UocHJldkluZGV4LCBpKS50cmltKCkpO1xuICAgICAgICAgIHByZXZJbmRleCA9IGk7XG4gICAgICAgICAgdGVtcFN0ciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wU3RyICE9IG51bGwpIHtcbiAgICAgICAgbGluZXNVbmRlcldpZHRoLnB1c2godGVtcFN0cik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHByZXBhcmVkTGluZXMgPSBsaW5lc1VuZGVyV2lkdGgubWFwKCh3KSA9PiAoeyBjb250ZW50OiB3LCB0eXBlOiBsaW5lLnR5cGUgfSkpO1xuICAgIGZvciAoY29uc3QgcHJlcGFyZWRMaW5lIG9mIHByZXBhcmVkTGluZXMpIHtcbiAgICAgIGxldCB0c3BhbiA9IGNyZWF0ZVRzcGFuKHRleHRFbGVtZW50LCBsaW5lSW5kZXgsIGxpbmVIZWlnaHQpO1xuICAgICAgdXBkYXRlVGV4dENvbnRlbnRBbmRTdHlsZXModHNwYW4sIFtwcmVwYXJlZExpbmVdKTtcbiAgICAgIGxpbmVJbmRleCsrO1xuICAgIH1cbiAgfSk7XG4gIGlmIChhZGRCYWNrZ3JvdW5kKSB7XG4gICAgY29uc3QgYmJveCA9IHRleHRFbGVtZW50Lm5vZGUoKS5nZXRCQm94KCk7XG4gICAgY29uc3QgcGFkZGluZyA9IDI7XG4gICAgYmtnLmF0dHIoXCJ4XCIsIC1wYWRkaW5nKS5hdHRyKFwieVwiLCAtcGFkZGluZykuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGggKyAyICogcGFkZGluZykuYXR0cihcImhlaWdodFwiLCBiYm94LmhlaWdodCArIDIgKiBwYWRkaW5nKTtcbiAgICByZXR1cm4gbGFiZWxHcm91cC5ub2RlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRleHRFbGVtZW50Lm5vZGUoKTtcbiAgfVxufVxuZnVuY3Rpb24gdXBkYXRlVGV4dENvbnRlbnRBbmRTdHlsZXModHNwYW4sIHdyYXBwZWRMaW5lKSB7XG4gIHRzcGFuLnRleHQoXCJcIik7XG4gIHdyYXBwZWRMaW5lLmZvckVhY2goKHdvcmQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5uZXJUc3BhbiA9IHRzcGFuLmFwcGVuZChcInRzcGFuXCIpLmF0dHIoXCJmb250LXN0eWxlXCIsIHdvcmQudHlwZSA9PT0gXCJlbVwiID8gXCJpdGFsaWNcIiA6IFwibm9ybWFsXCIpLmF0dHIoXCJjbGFzc1wiLCBcInRleHQtaW5uZXItdHNwYW5cIikuYXR0cihcImZvbnQtd2VpZ2h0XCIsIHdvcmQudHlwZSA9PT0gXCJzdHJvbmdcIiA/IFwiYm9sZFwiIDogXCJub3JtYWxcIik7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICBpbm5lclRzcGFuLnRleHQod29yZC5jb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5uZXJUc3Bhbi50ZXh0KFwiIFwiICsgd29yZC5jb250ZW50KTtcbiAgICB9XG4gIH0pO1xufVxuY29uc3QgY3JlYXRlVGV4dCA9IChlbCwgdGV4dCA9IFwiXCIsIHtcbiAgc3R5bGUgPSBcIlwiLFxuICBpc1RpdGxlID0gZmFsc2UsXG4gIGNsYXNzZXMgPSBcIlwiLFxuICB1c2VIdG1sTGFiZWxzID0gdHJ1ZSxcbiAgaXNOb2RlID0gdHJ1ZSxcbiAgd2lkdGgsXG4gIGFkZFN2Z0JhY2tncm91bmQgPSBmYWxzZVxufSA9IHt9KSA9PiB7XG4gIGxvZy5pbmZvKFwiY3JlYXRlVGV4dFwiLCB0ZXh0LCBzdHlsZSwgaXNUaXRsZSwgY2xhc3NlcywgdXNlSHRtbExhYmVscywgaXNOb2RlLCBhZGRTdmdCYWNrZ3JvdW5kKTtcbiAgaWYgKHVzZUh0bWxMYWJlbHMpIHtcbiAgICBjb25zdCBodG1sVGV4dCA9IG1hcmtkb3duVG9IVE1MKHRleHQpO1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICBpc05vZGUsXG4gICAgICBsYWJlbDogZGVjb2RlRW50aXRpZXMoaHRtbFRleHQpLnJlcGxhY2UoXG4gICAgICAgIC9mYVtibHJzXT86ZmEtW1xcdy1dKy9nLFxuICAgICAgICAocykgPT4gYDxpIGNsYXNzPScke3MucmVwbGFjZShcIjpcIiwgXCIgXCIpfSc+PC9pPmBcbiAgICAgICksXG4gICAgICBsYWJlbFN0eWxlOiBzdHlsZS5yZXBsYWNlKFwiZmlsbDpcIiwgXCJjb2xvcjpcIilcbiAgICB9O1xuICAgIGxldCB2ZXJ0ZXhOb2RlID0gYWRkSHRtbFNwYW4oZWwsIG5vZGUsIHdpZHRoLCBjbGFzc2VzLCBhZGRTdmdCYWNrZ3JvdW5kKTtcbiAgICByZXR1cm4gdmVydGV4Tm9kZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVGV4dCA9IG1hcmtkb3duVG9MaW5lcyh0ZXh0KTtcbiAgICBjb25zdCBzdmdMYWJlbCA9IGNyZWF0ZUZvcm1hdHRlZFRleHQod2lkdGgsIGVsLCBzdHJ1Y3R1cmVkVGV4dCwgYWRkU3ZnQmFja2dyb3VuZCk7XG4gICAgcmV0dXJuIHN2Z0xhYmVsO1xuICB9XG59O1xuZXhwb3J0IHtcbiAgY3JlYXRlVGV4dCBhcyBjXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/createText-3df630b5.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/edges-49ac43a2.js": +/*!************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/edges-49ac43a2.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"a\": () => (/* binding */ insertMarkers$1),\n/* harmony export */ \"b\": () => (/* binding */ clear$1),\n/* harmony export */ \"c\": () => (/* binding */ createLabel$1),\n/* harmony export */ \"d\": () => (/* binding */ clear),\n/* harmony export */ \"e\": () => (/* binding */ insertNode),\n/* harmony export */ \"f\": () => (/* binding */ insertEdgeLabel),\n/* harmony export */ \"g\": () => (/* binding */ insertEdge),\n/* harmony export */ \"h\": () => (/* binding */ positionEdgeLabel),\n/* harmony export */ \"i\": () => (/* binding */ intersectRect$1),\n/* harmony export */ \"l\": () => (/* binding */ labelHelper),\n/* harmony export */ \"p\": () => (/* binding */ positionNode),\n/* harmony export */ \"s\": () => (/* binding */ setNodeElem),\n/* harmony export */ \"u\": () => (/* binding */ updateNodeBounds)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createText-3df630b5.js */ \"../../../node_modules/mermaid/dist/createText-3df630b5.js\");\n/* harmony import */ var _svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./svgDraw-0fcc813d.js */ \"../../../node_modules/mermaid/dist/svgDraw-0fcc813d.js\");\n\n\n\n\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,7 L18,13 V 1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 V 13 L18,7 Z\");\n};\nconst composition = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst aggregation = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n};\nconst dependency = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 5,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst lollipop = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"circle\").attr(\"stroke\", \"black\").attr(\"fill\", \"white\").attr(\"cx\", 6).attr(\"cy\", 7).attr(\"r\", 6);\n};\nconst point = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-pointEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 10).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-pointStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 0).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 5 L 10 10 L 10 0 z\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst circle$1 = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-circleEnd\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 11).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-circleStart\").attr(\"class\", \"marker \" + type).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", -1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", \"5\").attr(\"cy\", \"5\").attr(\"r\", \"5\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n};\nconst cross = (elem, type) => {\n elem.append(\"marker\").attr(\"id\", type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", 12).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n elem.append(\"marker\").attr(\"id\", type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).attr(\"viewBox\", \"0 0 11 11\").attr(\"refX\", -1).attr(\"refY\", 5.2).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 11).attr(\"markerHeight\", 11).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 1,1 l 9,9 M 10,1 l -9,9\").attr(\"class\", \"arrowMarkerPath\").style(\"stroke-width\", 2).style(\"stroke-dasharray\", \"1,0\");\n};\nconst barb = (elem, type) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", type + \"-barbEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 14).attr(\"markerUnits\", \"strokeWidth\").attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.H)(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = (0,_createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_2__.c)(label, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.d)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.H)(labelText), (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)()), {\n useHtmlLabels,\n width: node.width || (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.d)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.H)(labelText), (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise(\n (res) => img.addEventListener(\"load\", function() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().fontSize ? (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n img.style.width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n })\n )\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.trace(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, void 0, true);\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((str) => {\n const parsedInfo = (0,_svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_3__.p)(str);\n let parsedText = parsedInfo.displayText;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((str) => {\n const parsedInfo = (0,_svgDraw_0fcc813d_js__WEBPACK_IMPORTED_MODULE_3__.p)(str);\n let displayText = parsedInfo.displayText;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr(\"class\", \"divider\").attr(\"x1\", -maxWidth / 2 - halfPadding).attr(\"x2\", maxWidth / 2 + halfPadding).attr(\"y1\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr(\"y2\", -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n });\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? (0,_createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_2__.c)(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"abc82\", edge, edge.labelType);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Moving label abc78 \", edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcLabelPosition(path);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc78\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundryNode) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"abc88 checking point\", point2, boundryNode);\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 inside\", point2, lastPointOutside, inter);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 intersection\", inter);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 no intersect\", inter, points);\n }\n isInside = true;\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 outside\", point2, lastPointOutside);\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.warn(\"abc88 returning points\", points);\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"abc88 InsertEdge: \", edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\n \"Last point\",\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve;\n if (diagramType === \"graph\" || diagramType === \"flowchart\") {\n curve = edge.curve || d3__WEBPACK_IMPORTED_MODULE_0__.curveBasis;\n } else {\n curve = d3__WEBPACK_IMPORTED_MODULE_0__.curveBasis;\n }\n const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_0__.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().flowchart.arrowMarkerAbsolute || (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"arrowTypeStart\", edge.arrowTypeStart);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n switch (edge.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-crossStart)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-pointStart)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-barbStart)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-circleStart)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-aggregationStart)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-extensionStart)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-compositionStart)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-dependencyStart)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-lollipopStart)\");\n break;\n }\n switch (edge.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-aggregationEnd)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-extensionEnd)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-compositionEnd)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-dependencyEnd)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-lollipopEnd)\");\n break;\n }\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9lZGdlcy00OWFjNDNhMi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFvSTtBQUN0RjtBQUNhO0FBQ0Y7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLHlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSwwQ0FBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSx1REFBUSxDQUFDLHVEQUFTO0FBQ3hCO0FBQ0EsSUFBSSx3REFBUTtBQUNaO0FBQ0E7QUFDQSxhQUFhLHVEQUFjO0FBQzNCO0FBQ0EsNEJBQTRCLG9CQUFvQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsdURBQVEsQ0FBQyx1REFBUztBQUNoRTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFlRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2VkZ2VzLTQ5YWM0M2EyLmpzPzZjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbCBhcyBsb2csIG4gYXMgZXZhbHVhdGUsIGMgYXMgZ2V0Q29uZmlnLCBIIGFzIGRlY29kZUVudGl0aWVzLCBkIGFzIHNhbml0aXplVGV4dCwgdSBhcyB1dGlscyB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbmltcG9ydCB7IHNlbGVjdCwgY3VydmVCYXNpcywgbGluZSB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgYyBhcyBjcmVhdGVUZXh0IH0gZnJvbSBcIi4vY3JlYXRlVGV4dC0zZGY2MzBiNS5qc1wiO1xuaW1wb3J0IHsgcCBhcyBwYXJzZU1lbWJlciB9IGZyb20gXCIuL3N2Z0RyYXctMGZjYzgxM2QuanNcIjtcbmNvbnN0IGluc2VydE1hcmtlcnMgPSAoZWxlbSwgbWFya2VyQXJyYXksIHR5cGUsIGlkKSA9PiB7XG4gIG1hcmtlckFycmF5LmZvckVhY2goKG1hcmtlck5hbWUpID0+IHtcbiAgICBtYXJrZXJzW21hcmtlck5hbWVdKGVsZW0sIHR5cGUsIGlkKTtcbiAgfSk7XG59O1xuY29uc3QgZXh0ZW5zaW9uID0gKGVsZW0sIHR5cGUsIGlkKSA9PiB7XG4gIGxvZy50cmFjZShcIk1ha2luZyBtYXJrZXJzIGZvciBcIiwgaWQpO1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCB0eXBlICsgXCItZXh0ZW5zaW9uU3RhcnRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIGV4dGVuc2lvbiBcIiArIHR5cGUpLmF0dHIoXCJyZWZYXCIsIDApLmF0dHIoXCJyZWZZXCIsIDcpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxOTApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjQwKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxLDcgTDE4LDEzIFYgMSBaXCIpO1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCB0eXBlICsgXCItZXh0ZW5zaW9uRW5kXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1hcmtlciBleHRlbnNpb24gXCIgKyB0eXBlKS5hdHRyKFwicmVmWFwiLCAxOSkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDIwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxLDEgViAxMyBMMTgsNyBaXCIpO1xufTtcbmNvbnN0IGNvbXBvc2l0aW9uID0gKGVsZW0sIHR5cGUpID0+IHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgdHlwZSArIFwiLWNvbXBvc2l0aW9uU3RhcnRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIGNvbXBvc2l0aW9uIFwiICsgdHlwZSkuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1jb21wb3NpdGlvbkVuZFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtYXJrZXIgY29tcG9zaXRpb24gXCIgKyB0eXBlKS5hdHRyKFwicmVmWFwiLCAxOSkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDIwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IGFnZ3JlZ2F0aW9uID0gKGVsZW0sIHR5cGUpID0+IHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgdHlwZSArIFwiLWFnZ3JlZ2F0aW9uU3RhcnRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIGFnZ3JlZ2F0aW9uIFwiICsgdHlwZSkuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1hZ2dyZWdhdGlvbkVuZFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtYXJrZXIgYWdncmVnYXRpb24gXCIgKyB0eXBlKS5hdHRyKFwicmVmWFwiLCAxOSkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDIwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IGRlcGVuZGVuY3kgPSAoZWxlbSwgdHlwZSkgPT4ge1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCB0eXBlICsgXCItZGVwZW5kZW5jeVN0YXJ0XCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1hcmtlciBkZXBlbmRlbmN5IFwiICsgdHlwZSkuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE5MCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAyNDApLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDUsNyBMOSwxMyBMMSw3IEw5LDEgWlwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgdHlwZSArIFwiLWRlcGVuZGVuY3lFbmRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIGRlcGVuZGVuY3kgXCIgKyB0eXBlKS5hdHRyKFwicmVmWFwiLCAxOSkuYXR0cihcInJlZllcIiwgNykuYXR0cihcIm1hcmtlcldpZHRoXCIsIDIwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWlwiKTtcbn07XG5jb25zdCBsb2xsaXBvcCA9IChlbGVtLCB0eXBlKSA9PiB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1sb2xsaXBvcFN0YXJ0XCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1hcmtlciBsb2xsaXBvcCBcIiArIHR5cGUpLmF0dHIoXCJyZWZYXCIsIDApLmF0dHIoXCJyZWZZXCIsIDcpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxOTApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjQwKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcInN0cm9rZVwiLCBcImJsYWNrXCIpLmF0dHIoXCJmaWxsXCIsIFwid2hpdGVcIikuYXR0cihcImN4XCIsIDYpLmF0dHIoXCJjeVwiLCA3KS5hdHRyKFwiclwiLCA2KTtcbn07XG5jb25zdCBwb2ludCA9IChlbGVtLCB0eXBlKSA9PiB7XG4gIGVsZW0uYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCB0eXBlICsgXCItcG9pbnRFbmRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIFwiICsgdHlwZSkuYXR0cihcInZpZXdCb3hcIiwgXCIwIDAgMTAgMTBcIikuYXR0cihcInJlZlhcIiwgMTApLmF0dHIoXCJyZWZZXCIsIDUpLmF0dHIoXCJtYXJrZXJVbml0c1wiLCBcInVzZXJTcGFjZU9uVXNlXCIpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxMikuYXR0cihcIm1hcmtlckhlaWdodFwiLCAxMikuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMCAwIEwgMTAgNSBMIDAgMTAgelwiKS5hdHRyKFwiY2xhc3NcIiwgXCJhcnJvd01hcmtlclBhdGhcIikuc3R5bGUoXCJzdHJva2Utd2lkdGhcIiwgMSkuc3R5bGUoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiMSwwXCIpO1xuICBlbGVtLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgdHlwZSArIFwiLXBvaW50U3RhcnRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIFwiICsgdHlwZSkuYXR0cihcInZpZXdCb3hcIiwgXCIwIDAgMTAgMTBcIikuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgNSkuYXR0cihcIm1hcmtlclVuaXRzXCIsIFwidXNlclNwYWNlT25Vc2VcIikuYXR0cihcIm1hcmtlcldpZHRoXCIsIDEyKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDEyKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAwIDUgTCAxMCAxMCBMIDEwIDAgelwiKS5hdHRyKFwiY2xhc3NcIiwgXCJhcnJvd01hcmtlclBhdGhcIikuc3R5bGUoXCJzdHJva2Utd2lkdGhcIiwgMSkuc3R5bGUoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiMSwwXCIpO1xufTtcbmNvbnN0IGNpcmNsZSQxID0gKGVsZW0sIHR5cGUpID0+IHtcbiAgZWxlbS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1jaXJjbGVFbmRcIikuYXR0cihcImNsYXNzXCIsIFwibWFya2VyIFwiICsgdHlwZSkuYXR0cihcInZpZXdCb3hcIiwgXCIwIDAgMTAgMTBcIikuYXR0cihcInJlZlhcIiwgMTEpLmF0dHIoXCJyZWZZXCIsIDUpLmF0dHIoXCJtYXJrZXJVbml0c1wiLCBcInVzZXJTcGFjZU9uVXNlXCIpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxMSkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAxMSkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjeFwiLCBcIjVcIikuYXR0cihcImN5XCIsIFwiNVwiKS5hdHRyKFwiclwiLCBcIjVcIikuYXR0cihcImNsYXNzXCIsIFwiYXJyb3dNYXJrZXJQYXRoXCIpLnN0eWxlKFwic3Ryb2tlLXdpZHRoXCIsIDEpLnN0eWxlKFwic3Ryb2tlLWRhc2hhcnJheVwiLCBcIjEsMFwiKTtcbiAgZWxlbS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1jaXJjbGVTdGFydFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtYXJrZXIgXCIgKyB0eXBlKS5hdHRyKFwidmlld0JveFwiLCBcIjAgMCAxMCAxMFwiKS5hdHRyKFwicmVmWFwiLCAtMSkuYXR0cihcInJlZllcIiwgNSkuYXR0cihcIm1hcmtlclVuaXRzXCIsIFwidXNlclNwYWNlT25Vc2VcIikuYXR0cihcIm1hcmtlcldpZHRoXCIsIDExKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDExKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIFwiNVwiKS5hdHRyKFwiY3lcIiwgXCI1XCIpLmF0dHIoXCJyXCIsIFwiNVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJhcnJvd01hcmtlclBhdGhcIikuc3R5bGUoXCJzdHJva2Utd2lkdGhcIiwgMSkuc3R5bGUoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiMSwwXCIpO1xufTtcbmNvbnN0IGNyb3NzID0gKGVsZW0sIHR5cGUpID0+IHtcbiAgZWxlbS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1jcm9zc0VuZFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtYXJrZXIgY3Jvc3MgXCIgKyB0eXBlKS5hdHRyKFwidmlld0JveFwiLCBcIjAgMCAxMSAxMVwiKS5hdHRyKFwicmVmWFwiLCAxMikuYXR0cihcInJlZllcIiwgNS4yKS5hdHRyKFwibWFya2VyVW5pdHNcIiwgXCJ1c2VyU3BhY2VPblVzZVwiKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTEpLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMTEpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDEsMSBsIDksOSBNIDEwLDEgbCAtOSw5XCIpLmF0dHIoXCJjbGFzc1wiLCBcImFycm93TWFya2VyUGF0aFwiKS5zdHlsZShcInN0cm9rZS13aWR0aFwiLCAyKS5zdHlsZShcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCIxLDBcIik7XG4gIGVsZW0uYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCB0eXBlICsgXCItY3Jvc3NTdGFydFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtYXJrZXIgY3Jvc3MgXCIgKyB0eXBlKS5hdHRyKFwidmlld0JveFwiLCBcIjAgMCAxMSAxMVwiKS5hdHRyKFwicmVmWFwiLCAtMSkuYXR0cihcInJlZllcIiwgNS4yKS5hdHRyKFwibWFya2VyVW5pdHNcIiwgXCJ1c2VyU3BhY2VPblVzZVwiKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTEpLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMTEpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDEsMSBsIDksOSBNIDEwLDEgbCAtOSw5XCIpLmF0dHIoXCJjbGFzc1wiLCBcImFycm93TWFya2VyUGF0aFwiKS5zdHlsZShcInN0cm9rZS13aWR0aFwiLCAyKS5zdHlsZShcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCIxLDBcIik7XG59O1xuY29uc3QgYmFyYiA9IChlbGVtLCB0eXBlKSA9PiB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIHR5cGUgKyBcIi1iYXJiRW5kXCIpLmF0dHIoXCJyZWZYXCIsIDE5KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMTQpLmF0dHIoXCJtYXJrZXJVbml0c1wiLCBcInN0cm9rZVdpZHRoXCIpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE5LDcgTDksMTMgTDE0LDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IG1hcmtlcnMgPSB7XG4gIGV4dGVuc2lvbixcbiAgY29tcG9zaXRpb24sXG4gIGFnZ3JlZ2F0aW9uLFxuICBkZXBlbmRlbmN5LFxuICBsb2xsaXBvcCxcbiAgcG9pbnQsXG4gIGNpcmNsZTogY2lyY2xlJDEsXG4gIGNyb3NzLFxuICBiYXJiXG59O1xuY29uc3QgaW5zZXJ0TWFya2VycyQxID0gaW5zZXJ0TWFya2VycztcbmZ1bmN0aW9uIGFwcGx5U3R5bGUoZG9tLCBzdHlsZUZuKSB7XG4gIGlmIChzdHlsZUZuKSB7XG4gICAgZG9tLmF0dHIoXCJzdHlsZVwiLCBzdHlsZUZuKTtcbiAgfVxufVxuZnVuY3Rpb24gYWRkSHRtbExhYmVsKG5vZGUpIHtcbiAgY29uc3QgZm8gPSBzZWxlY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJmb3JlaWduT2JqZWN0XCIpKTtcbiAgY29uc3QgZGl2ID0gZm8uYXBwZW5kKFwieGh0bWw6ZGl2XCIpO1xuICBjb25zdCBsYWJlbCA9IG5vZGUubGFiZWw7XG4gIGNvbnN0IGxhYmVsQ2xhc3MgPSBub2RlLmlzTm9kZSA/IFwibm9kZUxhYmVsXCIgOiBcImVkZ2VMYWJlbFwiO1xuICBkaXYuaHRtbChcbiAgICAnPHNwYW4gY2xhc3M9XCInICsgbGFiZWxDbGFzcyArICdcIiAnICsgKG5vZGUubGFiZWxTdHlsZSA/ICdzdHlsZT1cIicgKyBub2RlLmxhYmVsU3R5bGUgKyAnXCInIDogXCJcIikgKyBcIj5cIiArIGxhYmVsICsgXCI8L3NwYW4+XCJcbiAgKTtcbiAgYXBwbHlTdHlsZShkaXYsIG5vZGUubGFiZWxTdHlsZSk7XG4gIGRpdi5zdHlsZShcImRpc3BsYXlcIiwgXCJpbmxpbmUtYmxvY2tcIik7XG4gIGRpdi5zdHlsZShcIndoaXRlLXNwYWNlXCIsIFwibm93cmFwXCIpO1xuICBkaXYuYXR0cihcInhtbG5zXCIsIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiKTtcbiAgcmV0dXJuIGZvLm5vZGUoKTtcbn1cbmNvbnN0IGNyZWF0ZUxhYmVsID0gKF92ZXJ0ZXhUZXh0LCBzdHlsZSwgaXNUaXRsZSwgaXNOb2RlKSA9PiB7XG4gIGxldCB2ZXJ0ZXhUZXh0ID0gX3ZlcnRleFRleHQgfHwgXCJcIjtcbiAgaWYgKHR5cGVvZiB2ZXJ0ZXhUZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgdmVydGV4VGV4dCA9IHZlcnRleFRleHRbMF07XG4gIH1cbiAgaWYgKGV2YWx1YXRlKGdldENvbmZpZygpLmZsb3djaGFydC5odG1sTGFiZWxzKSkge1xuICAgIHZlcnRleFRleHQgPSB2ZXJ0ZXhUZXh0LnJlcGxhY2UoL1xcXFxufFxcbi9nLCBcIjxiciAvPlwiKTtcbiAgICBsb2cuaW5mbyhcInZlcnRleFRleHRcIiArIHZlcnRleFRleHQpO1xuICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICBpc05vZGUsXG4gICAgICBsYWJlbDogZGVjb2RlRW50aXRpZXModmVydGV4VGV4dCkucmVwbGFjZShcbiAgICAgICAgL2ZhW2JscnNdPzpmYS1bXFx3LV0rL2csXG4gICAgICAgIChzKSA9PiBgPGkgY2xhc3M9JyR7cy5yZXBsYWNlKFwiOlwiLCBcIiBcIil9Jz48L2k+YFxuICAgICAgKSxcbiAgICAgIGxhYmVsU3R5bGU6IHN0eWxlLnJlcGxhY2UoXCJmaWxsOlwiLCBcImNvbG9yOlwiKVxuICAgIH07XG4gICAgbGV0IHZlcnRleE5vZGUgPSBhZGRIdG1sTGFiZWwobm9kZSk7XG4gICAgcmV0dXJuIHZlcnRleE5vZGU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc3ZnTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRleHRcIik7XG4gICAgc3ZnTGFiZWwuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgc3R5bGUucmVwbGFjZShcImNvbG9yOlwiLCBcImZpbGw6XCIpKTtcbiAgICBsZXQgcm93cyA9IFtdO1xuICAgIGlmICh0eXBlb2YgdmVydGV4VGV4dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcm93cyA9IHZlcnRleFRleHQuc3BsaXQoL1xcXFxufFxcbnw8YnJcXHMqXFwvPz4vZ2kpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2ZXJ0ZXhUZXh0KSkge1xuICAgICAgcm93cyA9IHZlcnRleFRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3MgPSBbXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgdHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRzcGFuXCIpO1xuICAgICAgdHNwYW4uc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwgXCJ4bWw6c3BhY2VcIiwgXCJwcmVzZXJ2ZVwiKTtcbiAgICAgIHRzcGFuLnNldEF0dHJpYnV0ZShcImR5XCIsIFwiMWVtXCIpO1xuICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgICBpZiAoaXNUaXRsZSkge1xuICAgICAgICB0c3Bhbi5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBcInRpdGxlLXJvd1wiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRzcGFuLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwicm93XCIpO1xuICAgICAgfVxuICAgICAgdHNwYW4udGV4dENvbnRlbnQgPSByb3cudHJpbSgpO1xuICAgICAgc3ZnTGFiZWwuYXBwZW5kQ2hpbGQodHNwYW4pO1xuICAgIH1cbiAgICByZXR1cm4gc3ZnTGFiZWw7XG4gIH1cbn07XG5jb25zdCBjcmVhdGVMYWJlbCQxID0gY3JlYXRlTGFiZWw7XG5jb25zdCBsYWJlbEhlbHBlciA9IGFzeW5jIChwYXJlbnQsIG5vZGUsIF9jbGFzc2VzLCBpc05vZGUpID0+IHtcbiAgbGV0IGNsYXNzZXM7XG4gIGNvbnN0IHVzZUh0bWxMYWJlbHMgPSBub2RlLnVzZUh0bWxMYWJlbHMgfHwgZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpO1xuICBpZiAoIV9jbGFzc2VzKSB7XG4gICAgY2xhc3NlcyA9IFwibm9kZSBkZWZhdWx0XCI7XG4gIH0gZWxzZSB7XG4gICAgY2xhc3NlcyA9IF9jbGFzc2VzO1xuICB9XG4gIGNvbnN0IHNoYXBlU3ZnID0gcGFyZW50Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIGNsYXNzZXMpLmF0dHIoXCJpZFwiLCBub2RlLmRvbUlkIHx8IG5vZGUuaWQpO1xuICBjb25zdCBsYWJlbCA9IHNoYXBlU3ZnLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwibGFiZWxcIikuYXR0cihcInN0eWxlXCIsIG5vZGUubGFiZWxTdHlsZSk7XG4gIGxldCBsYWJlbFRleHQ7XG4gIGlmIChub2RlLmxhYmVsVGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgbGFiZWxUZXh0ID0gXCJcIjtcbiAgfSBlbHNlIHtcbiAgICBsYWJlbFRleHQgPSB0eXBlb2Ygbm9kZS5sYWJlbFRleHQgPT09IFwic3RyaW5nXCIgPyBub2RlLmxhYmVsVGV4dCA6IG5vZGUubGFiZWxUZXh0WzBdO1xuICB9XG4gIGNvbnN0IHRleHROb2RlID0gbGFiZWwubm9kZSgpO1xuICBsZXQgdGV4dDtcbiAgaWYgKG5vZGUubGFiZWxUeXBlID09PSBcIm1hcmtkb3duXCIpIHtcbiAgICB0ZXh0ID0gY3JlYXRlVGV4dChsYWJlbCwgc2FuaXRpemVUZXh0KGRlY29kZUVudGl0aWVzKGxhYmVsVGV4dCksIGdldENvbmZpZygpKSwge1xuICAgICAgdXNlSHRtbExhYmVscyxcbiAgICAgIHdpZHRoOiBub2RlLndpZHRoIHx8IGdldENvbmZpZygpLmZsb3djaGFydC53cmFwcGluZ1dpZHRoLFxuICAgICAgY2xhc3NlczogXCJtYXJrZG93bi1ub2RlLWxhYmVsXCJcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0ZXh0ID0gdGV4dE5vZGUuYXBwZW5kQ2hpbGQoXG4gICAgICBjcmVhdGVMYWJlbCQxKFxuICAgICAgICBzYW5pdGl6ZVRleHQoZGVjb2RlRW50aXRpZXMobGFiZWxUZXh0KSwgZ2V0Q29uZmlnKCkpLFxuICAgICAgICBub2RlLmxhYmVsU3R5bGUsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBpc05vZGVcbiAgICAgIClcbiAgICApO1xuICB9XG4gIGxldCBiYm94ID0gdGV4dC5nZXRCQm94KCk7XG4gIGNvbnN0IGhhbGZQYWRkaW5nID0gbm9kZS5wYWRkaW5nIC8gMjtcbiAgaWYgKGV2YWx1YXRlKGdldENvbmZpZygpLmZsb3djaGFydC5odG1sTGFiZWxzKSkge1xuICAgIGNvbnN0IGRpdiA9IHRleHQuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgZHYgPSBzZWxlY3QodGV4dCk7XG4gICAgY29uc3QgaW1hZ2VzID0gZGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaW1nXCIpO1xuICAgIGlmIChpbWFnZXMpIHtcbiAgICAgIGNvbnN0IG5vSW1nVGV4dCA9IGxhYmVsVGV4dC5yZXBsYWNlKC88aW1nW14+XSo+L2csIFwiXCIpLnRyaW0oKSA9PT0gXCJcIjtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uaW1hZ2VzXS5tYXAoXG4gICAgICAgICAgKGltZykgPT4gbmV3IFByb21pc2UoXG4gICAgICAgICAgICAocmVzKSA9PiBpbWcuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIGltZy5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgICAgICAgIGltZy5zdHlsZS5mbGV4RGlyZWN0aW9uID0gXCJjb2x1bW5cIjtcbiAgICAgICAgICAgICAgaWYgKG5vSW1nVGV4dCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlGb250U2l6ZSA9IGdldENvbmZpZygpLmZvbnRTaXplID8gZ2V0Q29uZmlnKCkuZm9udFNpemUgOiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5mb250U2l6ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmxhcmdpbmdGYWN0b3IgPSA1O1xuICAgICAgICAgICAgICAgIGltZy5zdHlsZS53aWR0aCA9IHBhcnNlSW50KGJvZHlGb250U2l6ZSwgMTApICogZW5sYXJnaW5nRmFjdG9yICsgXCJweFwiO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGltZy5zdHlsZS53aWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJlcyhpbWcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIGJib3ggPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgZHYuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGgpO1xuICAgIGR2LmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQpO1xuICB9XG4gIGlmICh1c2VIdG1sTGFiZWxzKSB7XG4gICAgbGFiZWwuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIC1iYm94LndpZHRoIC8gMiArIFwiLCBcIiArIC1iYm94LmhlaWdodCAvIDIgKyBcIilcIik7XG4gIH0gZWxzZSB7XG4gICAgbGFiZWwuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZSgwLCBcIiArIC1iYm94LmhlaWdodCAvIDIgKyBcIilcIik7XG4gIH1cbiAgaWYgKG5vZGUuY2VudGVyTGFiZWwpIHtcbiAgICBsYWJlbC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgLWJib3gud2lkdGggLyAyICsgXCIsIFwiICsgLWJib3guaGVpZ2h0IC8gMiArIFwiKVwiKTtcbiAgfVxuICBsYWJlbC5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICByZXR1cm4geyBzaGFwZVN2ZywgYmJveCwgaGFsZlBhZGRpbmcsIGxhYmVsIH07XG59O1xuY29uc3QgdXBkYXRlTm9kZUJvdW5kcyA9IChub2RlLCBlbGVtZW50KSA9PiB7XG4gIGNvbnN0IGJib3ggPSBlbGVtZW50Lm5vZGUoKS5nZXRCQm94KCk7XG4gIG5vZGUud2lkdGggPSBiYm94LndpZHRoO1xuICBub2RlLmhlaWdodCA9IGJib3guaGVpZ2h0O1xufTtcbmZ1bmN0aW9uIGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cykge1xuICByZXR1cm4gcGFyZW50Lmluc2VydChcInBvbHlnb25cIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcbiAgICBcInBvaW50c1wiLFxuICAgIHBvaW50cy5tYXAoZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGQueCArIFwiLFwiICsgZC55O1xuICAgIH0pLmpvaW4oXCIgXCIpXG4gICkuYXR0cihcImNsYXNzXCIsIFwibGFiZWwtY29udGFpbmVyXCIpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAtdyAvIDIgKyBcIixcIiArIGggLyAyICsgXCIpXCIpO1xufVxuZnVuY3Rpb24gaW50ZXJzZWN0Tm9kZShub2RlLCBwb2ludDIpIHtcbiAgcmV0dXJuIG5vZGUuaW50ZXJzZWN0KHBvaW50Mik7XG59XG5mdW5jdGlvbiBpbnRlcnNlY3RFbGxpcHNlKG5vZGUsIHJ4LCByeSwgcG9pbnQyKSB7XG4gIHZhciBjeCA9IG5vZGUueDtcbiAgdmFyIGN5ID0gbm9kZS55O1xuICB2YXIgcHggPSBjeCAtIHBvaW50Mi54O1xuICB2YXIgcHkgPSBjeSAtIHBvaW50Mi55O1xuICB2YXIgZGV0ID0gTWF0aC5zcXJ0KHJ4ICogcnggKiBweSAqIHB5ICsgcnkgKiByeSAqIHB4ICogcHgpO1xuICB2YXIgZHggPSBNYXRoLmFicyhyeCAqIHJ5ICogcHggLyBkZXQpO1xuICBpZiAocG9pbnQyLnggPCBjeCkge1xuICAgIGR4ID0gLWR4O1xuICB9XG4gIHZhciBkeSA9IE1hdGguYWJzKHJ4ICogcnkgKiBweSAvIGRldCk7XG4gIGlmIChwb2ludDIueSA8IGN5KSB7XG4gICAgZHkgPSAtZHk7XG4gIH1cbiAgcmV0dXJuIHsgeDogY3ggKyBkeCwgeTogY3kgKyBkeSB9O1xufVxuZnVuY3Rpb24gaW50ZXJzZWN0Q2lyY2xlKG5vZGUsIHJ4LCBwb2ludDIpIHtcbiAgcmV0dXJuIGludGVyc2VjdEVsbGlwc2Uobm9kZSwgcngsIHJ4LCBwb2ludDIpO1xufVxuZnVuY3Rpb24gaW50ZXJzZWN0TGluZShwMSwgcDIsIHExLCBxMikge1xuICB2YXIgYTEsIGEyLCBiMSwgYjIsIGMxLCBjMjtcbiAgdmFyIHIxLCByMiwgcjMsIHI0O1xuICB2YXIgZGVub20sIG9mZnNldCwgbnVtO1xuICB2YXIgeCwgeTtcbiAgYTEgPSBwMi55IC0gcDEueTtcbiAgYjEgPSBwMS54IC0gcDIueDtcbiAgYzEgPSBwMi54ICogcDEueSAtIHAxLnggKiBwMi55O1xuICByMyA9IGExICogcTEueCArIGIxICogcTEueSArIGMxO1xuICByNCA9IGExICogcTIueCArIGIxICogcTIueSArIGMxO1xuICBpZiAocjMgIT09IDAgJiYgcjQgIT09IDAgJiYgc2FtZVNpZ24ocjMsIHI0KSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhMiA9IHEyLnkgLSBxMS55O1xuICBiMiA9IHExLnggLSBxMi54O1xuICBjMiA9IHEyLnggKiBxMS55IC0gcTEueCAqIHEyLnk7XG4gIHIxID0gYTIgKiBwMS54ICsgYjIgKiBwMS55ICsgYzI7XG4gIHIyID0gYTIgKiBwMi54ICsgYjIgKiBwMi55ICsgYzI7XG4gIGlmIChyMSAhPT0gMCAmJiByMiAhPT0gMCAmJiBzYW1lU2lnbihyMSwgcjIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRlbm9tID0gYTEgKiBiMiAtIGEyICogYjE7XG4gIGlmIChkZW5vbSA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBvZmZzZXQgPSBNYXRoLmFicyhkZW5vbSAvIDIpO1xuICBudW0gPSBiMSAqIGMyIC0gYjIgKiBjMTtcbiAgeCA9IG51bSA8IDAgPyAobnVtIC0gb2Zmc2V0KSAvIGRlbm9tIDogKG51bSArIG9mZnNldCkgLyBkZW5vbTtcbiAgbnVtID0gYTIgKiBjMSAtIGExICogYzI7XG4gIHkgPSBudW0gPCAwID8gKG51bSAtIG9mZnNldCkgLyBkZW5vbSA6IChudW0gKyBvZmZzZXQpIC8gZGVub207XG4gIHJldHVybiB7IHgsIHkgfTtcbn1cbmZ1bmN0aW9uIHNhbWVTaWduKHIxLCByMikge1xuICByZXR1cm4gcjEgKiByMiA+IDA7XG59XG5mdW5jdGlvbiBpbnRlcnNlY3RQb2x5Z29uKG5vZGUsIHBvbHlQb2ludHMsIHBvaW50Mikge1xuICB2YXIgeDEgPSBub2RlLng7XG4gIHZhciB5MSA9IG5vZGUueTtcbiAgdmFyIGludGVyc2VjdGlvbnMgPSBbXTtcbiAgdmFyIG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICBpZiAodHlwZW9mIHBvbHlQb2ludHMuZm9yRWFjaCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcG9seVBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgZW50cnkueCk7XG4gICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgZW50cnkueSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHBvbHlQb2ludHMueCk7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHBvbHlQb2ludHMueSk7XG4gIH1cbiAgdmFyIGxlZnQgPSB4MSAtIG5vZGUud2lkdGggLyAyIC0gbWluWDtcbiAgdmFyIHRvcCA9IHkxIC0gbm9kZS5oZWlnaHQgLyAyIC0gbWluWTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAxID0gcG9seVBvaW50c1tpXTtcbiAgICB2YXIgcDIgPSBwb2x5UG9pbnRzW2kgPCBwb2x5UG9pbnRzLmxlbmd0aCAtIDEgPyBpICsgMSA6IDBdO1xuICAgIHZhciBpbnRlcnNlY3QyID0gaW50ZXJzZWN0TGluZShcbiAgICAgIG5vZGUsXG4gICAgICBwb2ludDIsXG4gICAgICB7IHg6IGxlZnQgKyBwMS54LCB5OiB0b3AgKyBwMS55IH0sXG4gICAgICB7IHg6IGxlZnQgKyBwMi54LCB5OiB0b3AgKyBwMi55IH1cbiAgICApO1xuICAgIGlmIChpbnRlcnNlY3QyKSB7XG4gICAgICBpbnRlcnNlY3Rpb25zLnB1c2goaW50ZXJzZWN0Mik7XG4gICAgfVxuICB9XG4gIGlmICghaW50ZXJzZWN0aW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBpZiAoaW50ZXJzZWN0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgaW50ZXJzZWN0aW9ucy5zb3J0KGZ1bmN0aW9uKHAsIHEpIHtcbiAgICAgIHZhciBwZHggPSBwLnggLSBwb2ludDIueDtcbiAgICAgIHZhciBwZHkgPSBwLnkgLSBwb2ludDIueTtcbiAgICAgIHZhciBkaXN0cCA9IE1hdGguc3FydChwZHggKiBwZHggKyBwZHkgKiBwZHkpO1xuICAgICAgdmFyIHFkeCA9IHEueCAtIHBvaW50Mi54O1xuICAgICAgdmFyIHFkeSA9IHEueSAtIHBvaW50Mi55O1xuICAgICAgdmFyIGRpc3RxID0gTWF0aC5zcXJ0KHFkeCAqIHFkeCArIHFkeSAqIHFkeSk7XG4gICAgICByZXR1cm4gZGlzdHAgPCBkaXN0cSA/IC0xIDogZGlzdHAgPT09IGRpc3RxID8gMCA6IDE7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGludGVyc2VjdGlvbnNbMF07XG59XG5jb25zdCBpbnRlcnNlY3RSZWN0ID0gKG5vZGUsIHBvaW50MikgPT4ge1xuICB2YXIgeCA9IG5vZGUueDtcbiAgdmFyIHkgPSBub2RlLnk7XG4gIHZhciBkeCA9IHBvaW50Mi54IC0geDtcbiAgdmFyIGR5ID0gcG9pbnQyLnkgLSB5O1xuICB2YXIgdyA9IG5vZGUud2lkdGggLyAyO1xuICB2YXIgaCA9IG5vZGUuaGVpZ2h0IC8gMjtcbiAgdmFyIHN4LCBzeTtcbiAgaWYgKE1hdGguYWJzKGR5KSAqIHcgPiBNYXRoLmFicyhkeCkgKiBoKSB7XG4gICAgaWYgKGR5IDwgMCkge1xuICAgICAgaCA9IC1oO1xuICAgIH1cbiAgICBzeCA9IGR5ID09PSAwID8gMCA6IGggKiBkeCAvIGR5O1xuICAgIHN5ID0gaDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZHggPCAwKSB7XG4gICAgICB3ID0gLXc7XG4gICAgfVxuICAgIHN4ID0gdztcbiAgICBzeSA9IGR4ID09PSAwID8gMCA6IHcgKiBkeSAvIGR4O1xuICB9XG4gIHJldHVybiB7IHg6IHggKyBzeCwgeTogeSArIHN5IH07XG59O1xuY29uc3QgaW50ZXJzZWN0UmVjdCQxID0gaW50ZXJzZWN0UmVjdDtcbmNvbnN0IGludGVyc2VjdCA9IHtcbiAgbm9kZTogaW50ZXJzZWN0Tm9kZSxcbiAgY2lyY2xlOiBpbnRlcnNlY3RDaXJjbGUsXG4gIGVsbGlwc2U6IGludGVyc2VjdEVsbGlwc2UsXG4gIHBvbHlnb246IGludGVyc2VjdFBvbHlnb24sXG4gIHJlY3Q6IGludGVyc2VjdFJlY3QkMVxufTtcbmNvbnN0IG5vdGUgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHVzZUh0bWxMYWJlbHMgPSBub2RlLnVzZUh0bWxMYWJlbHMgfHwgZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHM7XG4gIGlmICghdXNlSHRtbExhYmVscykge1xuICAgIG5vZGUuY2VudGVyTGFiZWwgPSB0cnVlO1xuICB9XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3gsIGhhbGZQYWRkaW5nIH0gPSBhd2FpdCBsYWJlbEhlbHBlcihcbiAgICBwYXJlbnQsXG4gICAgbm9kZSxcbiAgICBcIm5vZGUgXCIgKyBub2RlLmNsYXNzZXMsXG4gICAgdHJ1ZVxuICApO1xuICBsb2cuaW5mbyhcIkNsYXNzZXMgPSBcIiwgbm9kZS5jbGFzc2VzKTtcbiAgY29uc3QgcmVjdDIgPSBzaGFwZVN2Zy5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICByZWN0Mi5hdHRyKFwicnhcIiwgbm9kZS5yeCkuYXR0cihcInJ5XCIsIG5vZGUucnkpLmF0dHIoXCJ4XCIsIC1iYm94LndpZHRoIC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwieVwiLCAtYmJveC5oZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ3aWR0aFwiLCBiYm94LndpZHRoICsgbm9kZS5wYWRkaW5nKS5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0ICsgbm9kZS5wYWRkaW5nKTtcbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCByZWN0Mik7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5yZWN0KG5vZGUsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBub3RlJDEgPSBub3RlO1xuY29uc3QgcXVlc3Rpb24gPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3ggfSA9IGF3YWl0IGxhYmVsSGVscGVyKHBhcmVudCwgbm9kZSwgdm9pZCAwLCB0cnVlKTtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgcyA9IHcgKyBoO1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiBzIC8gMiwgeTogMCB9LFxuICAgIHsgeDogcywgeTogLXMgLyAyIH0sXG4gICAgeyB4OiBzIC8gMiwgeTogLXMgfSxcbiAgICB7IHg6IDAsIHk6IC1zIC8gMiB9XG4gIF07XG4gIGxvZy5pbmZvKFwiUXVlc3Rpb24gbWFpbiAoQ2lyY2xlKVwiKTtcbiAgY29uc3QgcXVlc3Rpb25FbGVtID0gaW5zZXJ0UG9seWdvblNoYXBlKHNoYXBlU3ZnLCBzLCBzLCBwb2ludHMpO1xuICBxdWVzdGlvbkVsZW0uYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIHF1ZXN0aW9uRWxlbSk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgbG9nLndhcm4oXCJJbnRlcnNlY3QgY2FsbGVkXCIpO1xuICAgIHJldHVybiBpbnRlcnNlY3QucG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBjaG9pY2UgPSAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHNoYXBlU3ZnID0gcGFyZW50Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwibm9kZSBkZWZhdWx0XCIpLmF0dHIoXCJpZFwiLCBub2RlLmRvbUlkIHx8IG5vZGUuaWQpO1xuICBjb25zdCBzID0gMjg7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IDAsIHk6IHMgLyAyIH0sXG4gICAgeyB4OiBzIC8gMiwgeTogMCB9LFxuICAgIHsgeDogMCwgeTogLXMgLyAyIH0sXG4gICAgeyB4OiAtcyAvIDIsIHk6IDAgfVxuICBdO1xuICBjb25zdCBjaG9pY2UyID0gc2hhcGVTdmcuaW5zZXJ0KFwicG9seWdvblwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFxuICAgIFwicG9pbnRzXCIsXG4gICAgcG9pbnRzLm1hcChmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gZC54ICsgXCIsXCIgKyBkLnk7XG4gICAgfSkuam9pbihcIiBcIilcbiAgKTtcbiAgY2hvaWNlMi5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZS1zdGFydFwiKS5hdHRyKFwiclwiLCA3KS5hdHRyKFwid2lkdGhcIiwgMjgpLmF0dHIoXCJoZWlnaHRcIiwgMjgpO1xuICBub2RlLndpZHRoID0gMjg7XG4gIG5vZGUuaGVpZ2h0ID0gMjg7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5jaXJjbGUobm9kZSwgMTQsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBoZXhhZ29uID0gYXN5bmMgKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCB7IHNoYXBlU3ZnLCBiYm94IH0gPSBhd2FpdCBsYWJlbEhlbHBlcihwYXJlbnQsIG5vZGUsIHZvaWQgMCwgdHJ1ZSk7XG4gIGNvbnN0IGYgPSA0O1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IG0gPSBoIC8gZjtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyAyICogbSArIG5vZGUucGFkZGluZztcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIHsgeDogbSwgeTogMCB9LFxuICAgIHsgeDogdyAtIG0sIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IC1oIC8gMiB9LFxuICAgIHsgeDogdyAtIG0sIHk6IC1oIH0sXG4gICAgeyB4OiBtLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggLyAyIH1cbiAgXTtcbiAgY29uc3QgaGV4ID0gaW5zZXJ0UG9seWdvblNoYXBlKHNoYXBlU3ZnLCB3LCBoLCBwb2ludHMpO1xuICBoZXguYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGhleCk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5wb2x5Z29uKG5vZGUsIHBvaW50cywgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IHJlY3RfbGVmdF9pbnZfYXJyb3cgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3ggfSA9IGF3YWl0IGxhYmVsSGVscGVyKHBhcmVudCwgbm9kZSwgdm9pZCAwLCB0cnVlKTtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIHsgeDogLWggLyAyLCB5OiAwIH0sXG4gICAgeyB4OiB3LCB5OiAwIH0sXG4gICAgeyB4OiB3LCB5OiAtaCB9LFxuICAgIHsgeDogLWggLyAyLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggLyAyIH1cbiAgXTtcbiAgY29uc3QgZWwgPSBpbnNlcnRQb2x5Z29uU2hhcGUoc2hhcGVTdmcsIHcsIGgsIHBvaW50cyk7XG4gIGVsLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKTtcbiAgbm9kZS53aWR0aCA9IHcgKyBoO1xuICBub2RlLmhlaWdodCA9IGg7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5wb2x5Z29uKG5vZGUsIHBvaW50cywgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IGxlYW5fcmlnaHQgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3ggfSA9IGF3YWl0IGxhYmVsSGVscGVyKHBhcmVudCwgbm9kZSwgdm9pZCAwLCB0cnVlKTtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIHsgeDogLTIgKiBoIC8gNiwgeTogMCB9LFxuICAgIHsgeDogdyAtIGggLyA2LCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgMiAqIGggLyA2LCB5OiAtaCB9LFxuICAgIHsgeDogaCAvIDYsIHk6IC1oIH1cbiAgXTtcbiAgY29uc3QgZWwgPSBpbnNlcnRQb2x5Z29uU2hhcGUoc2hhcGVTdmcsIHcsIGgsIHBvaW50cyk7XG4gIGVsLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKTtcbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCBlbCk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5wb2x5Z29uKG5vZGUsIHBvaW50cywgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IGxlYW5fbGVmdCA9IGFzeW5jIChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3QgeyBzaGFwZVN2ZywgYmJveCB9ID0gYXdhaXQgbGFiZWxIZWxwZXIocGFyZW50LCBub2RlLCB2b2lkIDAsIHRydWUpO1xuICBjb25zdCB3ID0gYmJveC53aWR0aCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0ICsgbm9kZS5wYWRkaW5nO1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAyICogaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyBoIC8gNiwgeTogMCB9LFxuICAgIHsgeDogdyAtIDIgKiBoIC8gNiwgeTogLWggfSxcbiAgICB7IHg6IC1oIC8gNiwgeTogLWggfVxuICBdO1xuICBjb25zdCBlbCA9IGluc2VydFBvbHlnb25TaGFwZShzaGFwZVN2ZywgdywgaCwgcG9pbnRzKTtcbiAgZWwuYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGVsKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0LnBvbHlnb24obm9kZSwgcG9pbnRzLCBwb2ludDIpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59O1xuY29uc3QgdHJhcGV6b2lkID0gYXN5bmMgKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCB7IHNoYXBlU3ZnLCBiYm94IH0gPSBhd2FpdCBsYWJlbEhlbHBlcihwYXJlbnQsIG5vZGUsIHZvaWQgMCwgdHJ1ZSk7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoICsgbm9kZS5wYWRkaW5nO1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IC0yICogaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyAyICogaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgLSBoIC8gNiwgeTogLWggfSxcbiAgICB7IHg6IGggLyA2LCB5OiAtaCB9XG4gIF07XG4gIGNvbnN0IGVsID0gaW5zZXJ0UG9seWdvblNoYXBlKHNoYXBlU3ZnLCB3LCBoLCBwb2ludHMpO1xuICBlbC5hdHRyKFwic3R5bGVcIiwgbm9kZS5zdHlsZSk7XG4gIHVwZGF0ZU5vZGVCb3VuZHMobm9kZSwgZWwpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIHJldHVybiBpbnRlcnNlY3QucG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBpbnZfdHJhcGV6b2lkID0gYXN5bmMgKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCB7IHNoYXBlU3ZnLCBiYm94IH0gPSBhd2FpdCBsYWJlbEhlbHBlcihwYXJlbnQsIG5vZGUsIHZvaWQgMCwgdHJ1ZSk7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoICsgbm9kZS5wYWRkaW5nO1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IGggLyA2LCB5OiAwIH0sXG4gICAgeyB4OiB3IC0gaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyAyICogaCAvIDYsIHk6IC1oIH0sXG4gICAgeyB4OiAtMiAqIGggLyA2LCB5OiAtaCB9XG4gIF07XG4gIGNvbnN0IGVsID0gaW5zZXJ0UG9seWdvblNoYXBlKHNoYXBlU3ZnLCB3LCBoLCBwb2ludHMpO1xuICBlbC5hdHRyKFwic3R5bGVcIiwgbm9kZS5zdHlsZSk7XG4gIHVwZGF0ZU5vZGVCb3VuZHMobm9kZSwgZWwpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIHJldHVybiBpbnRlcnNlY3QucG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCByZWN0X3JpZ2h0X2ludl9hcnJvdyA9IGFzeW5jIChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3QgeyBzaGFwZVN2ZywgYmJveCB9ID0gYXdhaXQgbGFiZWxIZWxwZXIocGFyZW50LCBub2RlLCB2b2lkIDAsIHRydWUpO1xuICBjb25zdCB3ID0gYmJveC53aWR0aCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0ICsgbm9kZS5wYWRkaW5nO1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAwLCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgaCAvIDIsIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IC1oIC8gMiB9LFxuICAgIHsgeDogdyArIGggLyAyLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggfVxuICBdO1xuICBjb25zdCBlbCA9IGluc2VydFBvbHlnb25TaGFwZShzaGFwZVN2ZywgdywgaCwgcG9pbnRzKTtcbiAgZWwuYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGVsKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0LnBvbHlnb24obm9kZSwgcG9pbnRzLCBwb2ludDIpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59O1xuY29uc3QgY3lsaW5kZXIgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3ggfSA9IGF3YWl0IGxhYmVsSGVscGVyKHBhcmVudCwgbm9kZSwgdm9pZCAwLCB0cnVlKTtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHJ4ID0gdyAvIDI7XG4gIGNvbnN0IHJ5ID0gcnggLyAoMi41ICsgdyAvIDUwKTtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0ICsgcnkgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHNoYXBlID0gXCJNIDAsXCIgKyByeSArIFwiIGEgXCIgKyByeCArIFwiLFwiICsgcnkgKyBcIiAwLDAsMCBcIiArIHcgKyBcIiAwIGEgXCIgKyByeCArIFwiLFwiICsgcnkgKyBcIiAwLDAsMCBcIiArIC13ICsgXCIgMCBsIDAsXCIgKyBoICsgXCIgYSBcIiArIHJ4ICsgXCIsXCIgKyByeSArIFwiIDAsMCwwIFwiICsgdyArIFwiIDAgbCAwLFwiICsgLWg7XG4gIGNvbnN0IGVsID0gc2hhcGVTdmcuYXR0cihcImxhYmVsLW9mZnNldC15XCIsIHJ5KS5pbnNlcnQoXCJwYXRoXCIsIFwiOmZpcnN0LWNoaWxkXCIpLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKS5hdHRyKFwiZFwiLCBzaGFwZSkuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIC13IC8gMiArIFwiLFwiICsgLShoIC8gMiArIHJ5KSArIFwiKVwiKTtcbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCBlbCk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgY29uc3QgcG9zID0gaW50ZXJzZWN0LnJlY3Qobm9kZSwgcG9pbnQyKTtcbiAgICBjb25zdCB4ID0gcG9zLnggLSBub2RlLng7XG4gICAgaWYgKHJ4ICE9IDAgJiYgKE1hdGguYWJzKHgpIDwgbm9kZS53aWR0aCAvIDIgfHwgTWF0aC5hYnMoeCkgPT0gbm9kZS53aWR0aCAvIDIgJiYgTWF0aC5hYnMocG9zLnkgLSBub2RlLnkpID4gbm9kZS5oZWlnaHQgLyAyIC0gcnkpKSB7XG4gICAgICBsZXQgeSA9IHJ5ICogcnkgKiAoMSAtIHggKiB4IC8gKHJ4ICogcngpKTtcbiAgICAgIGlmICh5ICE9IDApIHtcbiAgICAgICAgeSA9IE1hdGguc3FydCh5KTtcbiAgICAgIH1cbiAgICAgIHkgPSByeSAtIHk7XG4gICAgICBpZiAocG9pbnQyLnkgLSBub2RlLnkgPiAwKSB7XG4gICAgICAgIHkgPSAteTtcbiAgICAgIH1cbiAgICAgIHBvcy55ICs9IHk7XG4gICAgfVxuICAgIHJldHVybiBwb3M7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCByZWN0ID0gYXN5bmMgKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCB7IHNoYXBlU3ZnLCBiYm94LCBoYWxmUGFkZGluZyB9ID0gYXdhaXQgbGFiZWxIZWxwZXIoXG4gICAgcGFyZW50LFxuICAgIG5vZGUsXG4gICAgXCJub2RlIFwiICsgbm9kZS5jbGFzc2VzLFxuICAgIHRydWVcbiAgKTtcbiAgY29uc3QgcmVjdDIgPSBzaGFwZVN2Zy5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICBjb25zdCB0b3RhbFdpZHRoID0gYmJveC53aWR0aCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgdG90YWxIZWlnaHQgPSBiYm94LmhlaWdodCArIG5vZGUucGFkZGluZztcbiAgcmVjdDIuYXR0cihcImNsYXNzXCIsIFwiYmFzaWMgbGFiZWwtY29udGFpbmVyXCIpLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKS5hdHRyKFwicnhcIiwgbm9kZS5yeCkuYXR0cihcInJ5XCIsIG5vZGUucnkpLmF0dHIoXCJ4XCIsIC1iYm94LndpZHRoIC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwieVwiLCAtYmJveC5oZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ3aWR0aFwiLCB0b3RhbFdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIHRvdGFsSGVpZ2h0KTtcbiAgaWYgKG5vZGUucHJvcHMpIHtcbiAgICBjb25zdCBwcm9wS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMobm9kZS5wcm9wcykpO1xuICAgIGlmIChub2RlLnByb3BzLmJvcmRlcnMpIHtcbiAgICAgIGFwcGx5Tm9kZVByb3BlcnR5Qm9yZGVycyhyZWN0Miwgbm9kZS5wcm9wcy5ib3JkZXJzLCB0b3RhbFdpZHRoLCB0b3RhbEhlaWdodCk7XG4gICAgICBwcm9wS2V5cy5kZWxldGUoXCJib3JkZXJzXCIpO1xuICAgIH1cbiAgICBwcm9wS2V5cy5mb3JFYWNoKChwcm9wS2V5KSA9PiB7XG4gICAgICBsb2cud2FybihgVW5rbm93biBub2RlIHByb3BlcnR5ICR7cHJvcEtleX1gKTtcbiAgICB9KTtcbiAgfVxuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIHJlY3QyKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0LnJlY3Qobm9kZSwgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IGxhYmVsUmVjdCA9IGFzeW5jIChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3QgeyBzaGFwZVN2ZyB9ID0gYXdhaXQgbGFiZWxIZWxwZXIocGFyZW50LCBub2RlLCBcImxhYmVsXCIsIHRydWUpO1xuICBsb2cudHJhY2UoXCJDbGFzc2VzID0gXCIsIG5vZGUuY2xhc3Nlcyk7XG4gIGNvbnN0IHJlY3QyID0gc2hhcGVTdmcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKTtcbiAgY29uc3QgdG90YWxXaWR0aCA9IDA7XG4gIGNvbnN0IHRvdGFsSGVpZ2h0ID0gMDtcbiAgcmVjdDIuYXR0cihcIndpZHRoXCIsIHRvdGFsV2lkdGgpLmF0dHIoXCJoZWlnaHRcIiwgdG90YWxIZWlnaHQpO1xuICBzaGFwZVN2Zy5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbCBlZGdlTGFiZWxcIik7XG4gIGlmIChub2RlLnByb3BzKSB7XG4gICAgY29uc3QgcHJvcEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG5vZGUucHJvcHMpKTtcbiAgICBpZiAobm9kZS5wcm9wcy5ib3JkZXJzKSB7XG4gICAgICBhcHBseU5vZGVQcm9wZXJ0eUJvcmRlcnMocmVjdDIsIG5vZGUucHJvcHMuYm9yZGVycywgdG90YWxXaWR0aCwgdG90YWxIZWlnaHQpO1xuICAgICAgcHJvcEtleXMuZGVsZXRlKFwiYm9yZGVyc1wiKTtcbiAgICB9XG4gICAgcHJvcEtleXMuZm9yRWFjaCgocHJvcEtleSkgPT4ge1xuICAgICAgbG9nLndhcm4oYFVua25vd24gbm9kZSBwcm9wZXJ0eSAke3Byb3BLZXl9YCk7XG4gICAgfSk7XG4gIH1cbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCByZWN0Mik7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5yZWN0KG5vZGUsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5mdW5jdGlvbiBhcHBseU5vZGVQcm9wZXJ0eUJvcmRlcnMocmVjdDIsIGJvcmRlcnMsIHRvdGFsV2lkdGgsIHRvdGFsSGVpZ2h0KSB7XG4gIGNvbnN0IHN0cm9rZURhc2hBcnJheSA9IFtdO1xuICBjb25zdCBhZGRCb3JkZXIgPSAobGVuZ3RoKSA9PiB7XG4gICAgc3Ryb2tlRGFzaEFycmF5LnB1c2gobGVuZ3RoLCAwKTtcbiAgfTtcbiAgY29uc3Qgc2tpcEJvcmRlciA9IChsZW5ndGgpID0+IHtcbiAgICBzdHJva2VEYXNoQXJyYXkucHVzaCgwLCBsZW5ndGgpO1xuICB9O1xuICBpZiAoYm9yZGVycy5pbmNsdWRlcyhcInRcIikpIHtcbiAgICBsb2cuZGVidWcoXCJhZGQgdG9wIGJvcmRlclwiKTtcbiAgICBhZGRCb3JkZXIodG90YWxXaWR0aCk7XG4gIH0gZWxzZSB7XG4gICAgc2tpcEJvcmRlcih0b3RhbFdpZHRoKTtcbiAgfVxuICBpZiAoYm9yZGVycy5pbmNsdWRlcyhcInJcIikpIHtcbiAgICBsb2cuZGVidWcoXCJhZGQgcmlnaHQgYm9yZGVyXCIpO1xuICAgIGFkZEJvcmRlcih0b3RhbEhlaWdodCk7XG4gIH0gZWxzZSB7XG4gICAgc2tpcEJvcmRlcih0b3RhbEhlaWdodCk7XG4gIH1cbiAgaWYgKGJvcmRlcnMuaW5jbHVkZXMoXCJiXCIpKSB7XG4gICAgbG9nLmRlYnVnKFwiYWRkIGJvdHRvbSBib3JkZXJcIik7XG4gICAgYWRkQm9yZGVyKHRvdGFsV2lkdGgpO1xuICB9IGVsc2Uge1xuICAgIHNraXBCb3JkZXIodG90YWxXaWR0aCk7XG4gIH1cbiAgaWYgKGJvcmRlcnMuaW5jbHVkZXMoXCJsXCIpKSB7XG4gICAgbG9nLmRlYnVnKFwiYWRkIGxlZnQgYm9yZGVyXCIpO1xuICAgIGFkZEJvcmRlcih0b3RhbEhlaWdodCk7XG4gIH0gZWxzZSB7XG4gICAgc2tpcEJvcmRlcih0b3RhbEhlaWdodCk7XG4gIH1cbiAgcmVjdDIuYXR0cihcInN0cm9rZS1kYXNoYXJyYXlcIiwgc3Ryb2tlRGFzaEFycmF5LmpvaW4oXCIgXCIpKTtcbn1cbmNvbnN0IHJlY3RXaXRoVGl0bGUgPSAocGFyZW50LCBub2RlKSA9PiB7XG4gIGxldCBjbGFzc2VzO1xuICBpZiAoIW5vZGUuY2xhc3Nlcykge1xuICAgIGNsYXNzZXMgPSBcIm5vZGUgZGVmYXVsdFwiO1xuICB9IGVsc2Uge1xuICAgIGNsYXNzZXMgPSBcIm5vZGUgXCIgKyBub2RlLmNsYXNzZXM7XG4gIH1cbiAgY29uc3Qgc2hhcGVTdmcgPSBwYXJlbnQuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgY2xhc3NlcykuYXR0cihcImlkXCIsIG5vZGUuZG9tSWQgfHwgbm9kZS5pZCk7XG4gIGNvbnN0IHJlY3QyID0gc2hhcGVTdmcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKTtcbiAgY29uc3QgaW5uZXJMaW5lID0gc2hhcGVTdmcuaW5zZXJ0KFwibGluZVwiKTtcbiAgY29uc3QgbGFiZWwgPSBzaGFwZVN2Zy5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImxhYmVsXCIpO1xuICBjb25zdCB0ZXh0MiA9IG5vZGUubGFiZWxUZXh0LmZsYXQgPyBub2RlLmxhYmVsVGV4dC5mbGF0KCkgOiBub2RlLmxhYmVsVGV4dDtcbiAgbGV0IHRpdGxlID0gXCJcIjtcbiAgaWYgKHR5cGVvZiB0ZXh0MiA9PT0gXCJvYmplY3RcIikge1xuICAgIHRpdGxlID0gdGV4dDJbMF07XG4gIH0gZWxzZSB7XG4gICAgdGl0bGUgPSB0ZXh0MjtcbiAgfVxuICBsb2cuaW5mbyhcIkxhYmVsIHRleHQgYWJjNzlcIiwgdGl0bGUsIHRleHQyLCB0eXBlb2YgdGV4dDIgPT09IFwib2JqZWN0XCIpO1xuICBjb25zdCB0ZXh0ID0gbGFiZWwubm9kZSgpLmFwcGVuZENoaWxkKGNyZWF0ZUxhYmVsJDEodGl0bGUsIG5vZGUubGFiZWxTdHlsZSwgdHJ1ZSwgdHJ1ZSkpO1xuICBsZXQgYmJveCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgY29uc3QgZGl2ID0gdGV4dC5jaGlsZHJlblswXTtcbiAgICBjb25zdCBkdiA9IHNlbGVjdCh0ZXh0KTtcbiAgICBiYm94ID0gZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGR2LmF0dHIoXCJ3aWR0aFwiLCBiYm94LndpZHRoKTtcbiAgICBkdi5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0KTtcbiAgfVxuICBsb2cuaW5mbyhcIlRleHQgMlwiLCB0ZXh0Mik7XG4gIGNvbnN0IHRleHRSb3dzID0gdGV4dDIuc2xpY2UoMSwgdGV4dDIubGVuZ3RoKTtcbiAgbGV0IHRpdGxlQm94ID0gdGV4dC5nZXRCQm94KCk7XG4gIGNvbnN0IGRlc2NyID0gbGFiZWwubm9kZSgpLmFwcGVuZENoaWxkKFxuICAgIGNyZWF0ZUxhYmVsJDEodGV4dFJvd3Muam9pbiA/IHRleHRSb3dzLmpvaW4oXCI8YnIvPlwiKSA6IHRleHRSb3dzLCBub2RlLmxhYmVsU3R5bGUsIHRydWUsIHRydWUpXG4gICk7XG4gIGlmIChldmFsdWF0ZShnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpIHtcbiAgICBjb25zdCBkaXYgPSBkZXNjci5jaGlsZHJlblswXTtcbiAgICBjb25zdCBkdiA9IHNlbGVjdChkZXNjcik7XG4gICAgYmJveCA9IGRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBkdi5hdHRyKFwid2lkdGhcIiwgYmJveC53aWR0aCk7XG4gICAgZHYuYXR0cihcImhlaWdodFwiLCBiYm94LmhlaWdodCk7XG4gIH1cbiAgY29uc3QgaGFsZlBhZGRpbmcgPSBub2RlLnBhZGRpbmcgLyAyO1xuICBzZWxlY3QoZGVzY3IpLmF0dHIoXG4gICAgXCJ0cmFuc2Zvcm1cIixcbiAgICBcInRyYW5zbGF0ZSggXCIgKyAvLyAodGl0bGVCb3gud2lkdGggLSBiYm94LndpZHRoKSAvIDIgK1xuICAgIChiYm94LndpZHRoID4gdGl0bGVCb3gud2lkdGggPyAwIDogKHRpdGxlQm94LndpZHRoIC0gYmJveC53aWR0aCkgLyAyKSArIFwiLCBcIiArICh0aXRsZUJveC5oZWlnaHQgKyBoYWxmUGFkZGluZyArIDUpICsgXCIpXCJcbiAgKTtcbiAgc2VsZWN0KHRleHQpLmF0dHIoXG4gICAgXCJ0cmFuc2Zvcm1cIixcbiAgICBcInRyYW5zbGF0ZSggXCIgKyAvLyAodGl0bGVCb3gud2lkdGggLSBiYm94LndpZHRoKSAvIDIgK1xuICAgIChiYm94LndpZHRoIDwgdGl0bGVCb3gud2lkdGggPyAwIDogLSh0aXRsZUJveC53aWR0aCAtIGJib3gud2lkdGgpIC8gMikgKyBcIiwgMClcIlxuICApO1xuICBiYm94ID0gbGFiZWwubm9kZSgpLmdldEJCb3goKTtcbiAgbGFiZWwuYXR0cihcbiAgICBcInRyYW5zZm9ybVwiLFxuICAgIFwidHJhbnNsYXRlKFwiICsgLWJib3gud2lkdGggLyAyICsgXCIsIFwiICsgKC1iYm94LmhlaWdodCAvIDIgLSBoYWxmUGFkZGluZyArIDMpICsgXCIpXCJcbiAgKTtcbiAgcmVjdDIuYXR0cihcImNsYXNzXCIsIFwib3V0ZXIgdGl0bGUtc3RhdGVcIikuYXR0cihcInhcIiwgLWJib3gud2lkdGggLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ5XCIsIC1iYm94LmhlaWdodCAvIDIgLSBoYWxmUGFkZGluZykuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGggKyBub2RlLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmcpO1xuICBpbm5lckxpbmUuYXR0cihcImNsYXNzXCIsIFwiZGl2aWRlclwiKS5hdHRyKFwieDFcIiwgLWJib3gud2lkdGggLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ4MlwiLCBiYm94LndpZHRoIC8gMiArIGhhbGZQYWRkaW5nKS5hdHRyKFwieTFcIiwgLWJib3guaGVpZ2h0IC8gMiAtIGhhbGZQYWRkaW5nICsgdGl0bGVCb3guaGVpZ2h0ICsgaGFsZlBhZGRpbmcpLmF0dHIoXCJ5MlwiLCAtYmJveC5oZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcgKyB0aXRsZUJveC5oZWlnaHQgKyBoYWxmUGFkZGluZyk7XG4gIHVwZGF0ZU5vZGVCb3VuZHMobm9kZSwgcmVjdDIpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIHJldHVybiBpbnRlcnNlY3QucmVjdChub2RlLCBwb2ludDIpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59O1xuY29uc3Qgc3RhZGl1bSA9IGFzeW5jIChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3QgeyBzaGFwZVN2ZywgYmJveCB9ID0gYXdhaXQgbGFiZWxIZWxwZXIocGFyZW50LCBub2RlLCB2b2lkIDAsIHRydWUpO1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoICsgaCAvIDQgKyBub2RlLnBhZGRpbmc7XG4gIGNvbnN0IHJlY3QyID0gc2hhcGVTdmcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFwic3R5bGVcIiwgbm9kZS5zdHlsZSkuYXR0cihcInJ4XCIsIGggLyAyKS5hdHRyKFwicnlcIiwgaCAvIDIpLmF0dHIoXCJ4XCIsIC13IC8gMikuYXR0cihcInlcIiwgLWggLyAyKS5hdHRyKFwid2lkdGhcIiwgdykuYXR0cihcImhlaWdodFwiLCBoKTtcbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCByZWN0Mik7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5yZWN0KG5vZGUsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBjaXJjbGUgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3gsIGhhbGZQYWRkaW5nIH0gPSBhd2FpdCBsYWJlbEhlbHBlcihwYXJlbnQsIG5vZGUsIHZvaWQgMCwgdHJ1ZSk7XG4gIGNvbnN0IGNpcmNsZTIgPSBzaGFwZVN2Zy5pbnNlcnQoXCJjaXJjbGVcIiwgXCI6Zmlyc3QtY2hpbGRcIik7XG4gIGNpcmNsZTIuYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpLmF0dHIoXCJyeFwiLCBub2RlLnJ4KS5hdHRyKFwicnlcIiwgbm9kZS5yeSkuYXR0cihcInJcIiwgYmJveC53aWR0aCAvIDIgKyBoYWxmUGFkZGluZykuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGggKyBub2RlLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmcpO1xuICBsb2cuaW5mbyhcIkNpcmNsZSBtYWluXCIpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGNpcmNsZTIpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIGxvZy5pbmZvKFwiQ2lyY2xlIGludGVyc2VjdFwiLCBub2RlLCBiYm94LndpZHRoIC8gMiArIGhhbGZQYWRkaW5nLCBwb2ludDIpO1xuICAgIHJldHVybiBpbnRlcnNlY3QuY2lyY2xlKG5vZGUsIGJib3gud2lkdGggLyAyICsgaGFsZlBhZGRpbmcsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBkb3VibGVjaXJjbGUgPSBhc3luYyAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHsgc2hhcGVTdmcsIGJib3gsIGhhbGZQYWRkaW5nIH0gPSBhd2FpdCBsYWJlbEhlbHBlcihwYXJlbnQsIG5vZGUsIHZvaWQgMCwgdHJ1ZSk7XG4gIGNvbnN0IGdhcCA9IDU7XG4gIGNvbnN0IGNpcmNsZUdyb3VwID0gc2hhcGVTdmcuaW5zZXJ0KFwiZ1wiLCBcIjpmaXJzdC1jaGlsZFwiKTtcbiAgY29uc3Qgb3V0ZXJDaXJjbGUgPSBjaXJjbGVHcm91cC5pbnNlcnQoXCJjaXJjbGVcIik7XG4gIGNvbnN0IGlubmVyQ2lyY2xlID0gY2lyY2xlR3JvdXAuaW5zZXJ0KFwiY2lyY2xlXCIpO1xuICBvdXRlckNpcmNsZS5hdHRyKFwic3R5bGVcIiwgbm9kZS5zdHlsZSkuYXR0cihcInJ4XCIsIG5vZGUucngpLmF0dHIoXCJyeVwiLCBub2RlLnJ5KS5hdHRyKFwiclwiLCBiYm94LndpZHRoIC8gMiArIGhhbGZQYWRkaW5nICsgZ2FwKS5hdHRyKFwid2lkdGhcIiwgYmJveC53aWR0aCArIG5vZGUucGFkZGluZyArIGdhcCAqIDIpLmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmcgKyBnYXAgKiAyKTtcbiAgaW5uZXJDaXJjbGUuYXR0cihcInN0eWxlXCIsIG5vZGUuc3R5bGUpLmF0dHIoXCJyeFwiLCBub2RlLnJ4KS5hdHRyKFwicnlcIiwgbm9kZS5yeSkuYXR0cihcInJcIiwgYmJveC53aWR0aCAvIDIgKyBoYWxmUGFkZGluZykuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGggKyBub2RlLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQgKyBub2RlLnBhZGRpbmcpO1xuICBsb2cuaW5mbyhcIkRvdWJsZUNpcmNsZSBtYWluXCIpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIG91dGVyQ2lyY2xlKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICBsb2cuaW5mbyhcIkRvdWJsZUNpcmNsZSBpbnRlcnNlY3RcIiwgbm9kZSwgYmJveC53aWR0aCAvIDIgKyBoYWxmUGFkZGluZyArIGdhcCwgcG9pbnQyKTtcbiAgICByZXR1cm4gaW50ZXJzZWN0LmNpcmNsZShub2RlLCBiYm94LndpZHRoIC8gMiArIGhhbGZQYWRkaW5nICsgZ2FwLCBwb2ludDIpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59O1xuY29uc3Qgc3Vicm91dGluZSA9IGFzeW5jIChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3QgeyBzaGFwZVN2ZywgYmJveCB9ID0gYXdhaXQgbGFiZWxIZWxwZXIocGFyZW50LCBub2RlLCB2b2lkIDAsIHRydWUpO1xuICBjb25zdCB3ID0gYmJveC53aWR0aCArIG5vZGUucGFkZGluZztcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0ICsgbm9kZS5wYWRkaW5nO1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAwLCB5OiAwIH0sXG4gICAgeyB4OiB3LCB5OiAwIH0sXG4gICAgeyB4OiB3LCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggfSxcbiAgICB7IHg6IDAsIHk6IDAgfSxcbiAgICB7IHg6IC04LCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgOCwgeTogMCB9LFxuICAgIHsgeDogdyArIDgsIHk6IC1oIH0sXG4gICAgeyB4OiAtOCwgeTogLWggfSxcbiAgICB7IHg6IC04LCB5OiAwIH1cbiAgXTtcbiAgY29uc3QgZWwgPSBpbnNlcnRQb2x5Z29uU2hhcGUoc2hhcGVTdmcsIHcsIGgsIHBvaW50cyk7XG4gIGVsLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKTtcbiAgdXBkYXRlTm9kZUJvdW5kcyhub2RlLCBlbCk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQyKSB7XG4gICAgcmV0dXJuIGludGVyc2VjdC5wb2x5Z29uKG5vZGUsIHBvaW50cywgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IHN0YXJ0ID0gKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUgZGVmYXVsdFwiKS5hdHRyKFwiaWRcIiwgbm9kZS5kb21JZCB8fCBub2RlLmlkKTtcbiAgY29uc3QgY2lyY2xlMiA9IHNoYXBlU3ZnLmluc2VydChcImNpcmNsZVwiLCBcIjpmaXJzdC1jaGlsZFwiKTtcbiAgY2lyY2xlMi5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZS1zdGFydFwiKS5hdHRyKFwiclwiLCA3KS5hdHRyKFwid2lkdGhcIiwgMTQpLmF0dHIoXCJoZWlnaHRcIiwgMTQpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGNpcmNsZTIpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIHJldHVybiBpbnRlcnNlY3QuY2lyY2xlKG5vZGUsIDcsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBmb3JrSm9pbiA9IChwYXJlbnQsIG5vZGUsIGRpcikgPT4ge1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUgZGVmYXVsdFwiKS5hdHRyKFwiaWRcIiwgbm9kZS5kb21JZCB8fCBub2RlLmlkKTtcbiAgbGV0IHdpZHRoID0gNzA7XG4gIGxldCBoZWlnaHQgPSAxMDtcbiAgaWYgKGRpciA9PT0gXCJMUlwiKSB7XG4gICAgd2lkdGggPSAxMDtcbiAgICBoZWlnaHQgPSA3MDtcbiAgfVxuICBjb25zdCBzaGFwZSA9IHNoYXBlU3ZnLmFwcGVuZChcInJlY3RcIikuYXR0cihcInhcIiwgLTEgKiB3aWR0aCAvIDIpLmF0dHIoXCJ5XCIsIC0xICogaGVpZ2h0IC8gMikuYXR0cihcIndpZHRoXCIsIHdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCkuYXR0cihcImNsYXNzXCIsIFwiZm9yay1qb2luXCIpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIHNoYXBlKTtcbiAgbm9kZS5oZWlnaHQgPSBub2RlLmhlaWdodCArIG5vZGUucGFkZGluZyAvIDI7XG4gIG5vZGUud2lkdGggPSBub2RlLndpZHRoICsgbm9kZS5wYWRkaW5nIC8gMjtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0LnJlY3Qobm9kZSwgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IGVuZCA9IChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3Qgc2hhcGVTdmcgPSBwYXJlbnQuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJub2RlIGRlZmF1bHRcIikuYXR0cihcImlkXCIsIG5vZGUuZG9tSWQgfHwgbm9kZS5pZCk7XG4gIGNvbnN0IGlubmVyQ2lyY2xlID0gc2hhcGVTdmcuaW5zZXJ0KFwiY2lyY2xlXCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICBjb25zdCBjaXJjbGUyID0gc2hhcGVTdmcuaW5zZXJ0KFwiY2lyY2xlXCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICBjaXJjbGUyLmF0dHIoXCJjbGFzc1wiLCBcInN0YXRlLXN0YXJ0XCIpLmF0dHIoXCJyXCIsIDcpLmF0dHIoXCJ3aWR0aFwiLCAxNCkuYXR0cihcImhlaWdodFwiLCAxNCk7XG4gIGlubmVyQ2lyY2xlLmF0dHIoXCJjbGFzc1wiLCBcInN0YXRlLWVuZFwiKS5hdHRyKFwiclwiLCA1KS5hdHRyKFwid2lkdGhcIiwgMTApLmF0dHIoXCJoZWlnaHRcIiwgMTApO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIGNpcmNsZTIpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50Mikge1xuICAgIHJldHVybiBpbnRlcnNlY3QuY2lyY2xlKG5vZGUsIDcsIHBvaW50Mik7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBjbGFzc19ib3ggPSAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IGhhbGZQYWRkaW5nID0gbm9kZS5wYWRkaW5nIC8gMjtcbiAgY29uc3Qgcm93UGFkZGluZyA9IDQ7XG4gIGNvbnN0IGxpbmVIZWlnaHQgPSA4O1xuICBsZXQgY2xhc3NlcztcbiAgaWYgKCFub2RlLmNsYXNzZXMpIHtcbiAgICBjbGFzc2VzID0gXCJub2RlIGRlZmF1bHRcIjtcbiAgfSBlbHNlIHtcbiAgICBjbGFzc2VzID0gXCJub2RlIFwiICsgbm9kZS5jbGFzc2VzO1xuICB9XG4gIGNvbnN0IHNoYXBlU3ZnID0gcGFyZW50Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIGNsYXNzZXMpLmF0dHIoXCJpZFwiLCBub2RlLmRvbUlkIHx8IG5vZGUuaWQpO1xuICBjb25zdCByZWN0MiA9IHNoYXBlU3ZnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIik7XG4gIGNvbnN0IHRvcExpbmUgPSBzaGFwZVN2Zy5pbnNlcnQoXCJsaW5lXCIpO1xuICBjb25zdCBib3R0b21MaW5lID0gc2hhcGVTdmcuaW5zZXJ0KFwibGluZVwiKTtcbiAgbGV0IG1heFdpZHRoID0gMDtcbiAgbGV0IG1heEhlaWdodCA9IHJvd1BhZGRpbmc7XG4gIGNvbnN0IGxhYmVsQ29udGFpbmVyID0gc2hhcGVTdmcuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbFwiKTtcbiAgbGV0IHZlcnRpY2FsUG9zID0gMDtcbiAgY29uc3QgaGFzSW50ZXJmYWNlID0gbm9kZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnMgJiYgbm9kZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnNbMF07XG4gIGNvbnN0IGludGVyZmFjZUxhYmVsVGV4dCA9IG5vZGUuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdID8gXCLCq1wiICsgbm9kZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnNbMF0gKyBcIsK7XCIgOiBcIlwiO1xuICBjb25zdCBpbnRlcmZhY2VMYWJlbCA9IGxhYmVsQ29udGFpbmVyLm5vZGUoKS5hcHBlbmRDaGlsZChjcmVhdGVMYWJlbCQxKGludGVyZmFjZUxhYmVsVGV4dCwgbm9kZS5sYWJlbFN0eWxlLCB0cnVlLCB0cnVlKSk7XG4gIGxldCBpbnRlcmZhY2VCQm94ID0gaW50ZXJmYWNlTGFiZWwuZ2V0QkJveCgpO1xuICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgY29uc3QgZGl2ID0gaW50ZXJmYWNlTGFiZWwuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgZHYgPSBzZWxlY3QoaW50ZXJmYWNlTGFiZWwpO1xuICAgIGludGVyZmFjZUJCb3ggPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgZHYuYXR0cihcIndpZHRoXCIsIGludGVyZmFjZUJCb3gud2lkdGgpO1xuICAgIGR2LmF0dHIoXCJoZWlnaHRcIiwgaW50ZXJmYWNlQkJveC5oZWlnaHQpO1xuICB9XG4gIGlmIChub2RlLmNsYXNzRGF0YS5hbm5vdGF0aW9uc1swXSkge1xuICAgIG1heEhlaWdodCArPSBpbnRlcmZhY2VCQm94LmhlaWdodCArIHJvd1BhZGRpbmc7XG4gICAgbWF4V2lkdGggKz0gaW50ZXJmYWNlQkJveC53aWR0aDtcbiAgfVxuICBsZXQgY2xhc3NUaXRsZVN0cmluZyA9IG5vZGUuY2xhc3NEYXRhLmxhYmVsO1xuICBpZiAobm9kZS5jbGFzc0RhdGEudHlwZSAhPT0gdm9pZCAwICYmIG5vZGUuY2xhc3NEYXRhLnR5cGUgIT09IFwiXCIpIHtcbiAgICBpZiAoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpIHtcbiAgICAgIGNsYXNzVGl0bGVTdHJpbmcgKz0gXCImbHQ7XCIgKyBub2RlLmNsYXNzRGF0YS50eXBlICsgXCImZ3Q7XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzVGl0bGVTdHJpbmcgKz0gXCI8XCIgKyBub2RlLmNsYXNzRGF0YS50eXBlICsgXCI+XCI7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNsYXNzVGl0bGVMYWJlbCA9IGxhYmVsQ29udGFpbmVyLm5vZGUoKS5hcHBlbmRDaGlsZChjcmVhdGVMYWJlbCQxKGNsYXNzVGl0bGVTdHJpbmcsIG5vZGUubGFiZWxTdHlsZSwgdHJ1ZSwgdHJ1ZSkpO1xuICBzZWxlY3QoY2xhc3NUaXRsZUxhYmVsKS5hdHRyKFwiY2xhc3NcIiwgXCJjbGFzc1RpdGxlXCIpO1xuICBsZXQgY2xhc3NUaXRsZUJCb3ggPSBjbGFzc1RpdGxlTGFiZWwuZ2V0QkJveCgpO1xuICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgY29uc3QgZGl2ID0gY2xhc3NUaXRsZUxhYmVsLmNoaWxkcmVuWzBdO1xuICAgIGNvbnN0IGR2ID0gc2VsZWN0KGNsYXNzVGl0bGVMYWJlbCk7XG4gICAgY2xhc3NUaXRsZUJCb3ggPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgZHYuYXR0cihcIndpZHRoXCIsIGNsYXNzVGl0bGVCQm94LndpZHRoKTtcbiAgICBkdi5hdHRyKFwiaGVpZ2h0XCIsIGNsYXNzVGl0bGVCQm94LmhlaWdodCk7XG4gIH1cbiAgbWF4SGVpZ2h0ICs9IGNsYXNzVGl0bGVCQm94LmhlaWdodCArIHJvd1BhZGRpbmc7XG4gIGlmIChjbGFzc1RpdGxlQkJveC53aWR0aCA+IG1heFdpZHRoKSB7XG4gICAgbWF4V2lkdGggPSBjbGFzc1RpdGxlQkJveC53aWR0aDtcbiAgfVxuICBjb25zdCBjbGFzc0F0dHJpYnV0ZXMgPSBbXTtcbiAgbm9kZS5jbGFzc0RhdGEubWVtYmVycy5mb3JFYWNoKChzdHIpID0+IHtcbiAgICBjb25zdCBwYXJzZWRJbmZvID0gcGFyc2VNZW1iZXIoc3RyKTtcbiAgICBsZXQgcGFyc2VkVGV4dCA9IHBhcnNlZEluZm8uZGlzcGxheVRleHQ7XG4gICAgaWYgKGdldENvbmZpZygpLmZsb3djaGFydC5odG1sTGFiZWxzKSB7XG4gICAgICBwYXJzZWRUZXh0ID0gcGFyc2VkVGV4dC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKS5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbiAgICB9XG4gICAgY29uc3QgbGJsID0gbGFiZWxDb250YWluZXIubm9kZSgpLmFwcGVuZENoaWxkKFxuICAgICAgY3JlYXRlTGFiZWwkMShcbiAgICAgICAgcGFyc2VkVGV4dCxcbiAgICAgICAgcGFyc2VkSW5mby5jc3NTdHlsZSA/IHBhcnNlZEluZm8uY3NzU3R5bGUgOiBub2RlLmxhYmVsU3R5bGUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgIClcbiAgICApO1xuICAgIGxldCBiYm94ID0gbGJsLmdldEJCb3goKTtcbiAgICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgICBjb25zdCBkaXYgPSBsYmwuY2hpbGRyZW5bMF07XG4gICAgICBjb25zdCBkdiA9IHNlbGVjdChsYmwpO1xuICAgICAgYmJveCA9IGRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGR2LmF0dHIoXCJ3aWR0aFwiLCBiYm94LndpZHRoKTtcbiAgICAgIGR2LmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQpO1xuICAgIH1cbiAgICBpZiAoYmJveC53aWR0aCA+IG1heFdpZHRoKSB7XG4gICAgICBtYXhXaWR0aCA9IGJib3gud2lkdGg7XG4gICAgfVxuICAgIG1heEhlaWdodCArPSBiYm94LmhlaWdodCArIHJvd1BhZGRpbmc7XG4gICAgY2xhc3NBdHRyaWJ1dGVzLnB1c2gobGJsKTtcbiAgfSk7XG4gIG1heEhlaWdodCArPSBsaW5lSGVpZ2h0O1xuICBjb25zdCBjbGFzc01ldGhvZHMgPSBbXTtcbiAgbm9kZS5jbGFzc0RhdGEubWV0aG9kcy5mb3JFYWNoKChzdHIpID0+IHtcbiAgICBjb25zdCBwYXJzZWRJbmZvID0gcGFyc2VNZW1iZXIoc3RyKTtcbiAgICBsZXQgZGlzcGxheVRleHQgPSBwYXJzZWRJbmZvLmRpc3BsYXlUZXh0O1xuICAgIGlmIChnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscykge1xuICAgICAgZGlzcGxheVRleHQgPSBkaXNwbGF5VGV4dC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKS5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbiAgICB9XG4gICAgY29uc3QgbGJsID0gbGFiZWxDb250YWluZXIubm9kZSgpLmFwcGVuZENoaWxkKFxuICAgICAgY3JlYXRlTGFiZWwkMShcbiAgICAgICAgZGlzcGxheVRleHQsXG4gICAgICAgIHBhcnNlZEluZm8uY3NzU3R5bGUgPyBwYXJzZWRJbmZvLmNzc1N0eWxlIDogbm9kZS5sYWJlbFN0eWxlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgKTtcbiAgICBsZXQgYmJveCA9IGxibC5nZXRCQm94KCk7XG4gICAgaWYgKGV2YWx1YXRlKGdldENvbmZpZygpLmZsb3djaGFydC5odG1sTGFiZWxzKSkge1xuICAgICAgY29uc3QgZGl2ID0gbGJsLmNoaWxkcmVuWzBdO1xuICAgICAgY29uc3QgZHYgPSBzZWxlY3QobGJsKTtcbiAgICAgIGJib3ggPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBkdi5hdHRyKFwid2lkdGhcIiwgYmJveC53aWR0aCk7XG4gICAgICBkdi5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0KTtcbiAgICB9XG4gICAgaWYgKGJib3gud2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgbWF4V2lkdGggPSBiYm94LndpZHRoO1xuICAgIH1cbiAgICBtYXhIZWlnaHQgKz0gYmJveC5oZWlnaHQgKyByb3dQYWRkaW5nO1xuICAgIGNsYXNzTWV0aG9kcy5wdXNoKGxibCk7XG4gIH0pO1xuICBtYXhIZWlnaHQgKz0gbGluZUhlaWdodDtcbiAgaWYgKGhhc0ludGVyZmFjZSkge1xuICAgIGxldCBkaWZmWDIgPSAobWF4V2lkdGggLSBpbnRlcmZhY2VCQm94LndpZHRoKSAvIDI7XG4gICAgc2VsZWN0KGludGVyZmFjZUxhYmVsKS5hdHRyKFxuICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgIFwidHJhbnNsYXRlKCBcIiArICgtMSAqIG1heFdpZHRoIC8gMiArIGRpZmZYMikgKyBcIiwgXCIgKyAtMSAqIG1heEhlaWdodCAvIDIgKyBcIilcIlxuICAgICk7XG4gICAgdmVydGljYWxQb3MgPSBpbnRlcmZhY2VCQm94LmhlaWdodCArIHJvd1BhZGRpbmc7XG4gIH1cbiAgbGV0IGRpZmZYID0gKG1heFdpZHRoIC0gY2xhc3NUaXRsZUJCb3gud2lkdGgpIC8gMjtcbiAgc2VsZWN0KGNsYXNzVGl0bGVMYWJlbCkuYXR0cihcbiAgICBcInRyYW5zZm9ybVwiLFxuICAgIFwidHJhbnNsYXRlKCBcIiArICgtMSAqIG1heFdpZHRoIC8gMiArIGRpZmZYKSArIFwiLCBcIiArICgtMSAqIG1heEhlaWdodCAvIDIgKyB2ZXJ0aWNhbFBvcykgKyBcIilcIlxuICApO1xuICB2ZXJ0aWNhbFBvcyArPSBjbGFzc1RpdGxlQkJveC5oZWlnaHQgKyByb3dQYWRkaW5nO1xuICB0b3BMaW5lLmF0dHIoXCJjbGFzc1wiLCBcImRpdmlkZXJcIikuYXR0cihcIngxXCIsIC1tYXhXaWR0aCAvIDIgLSBoYWxmUGFkZGluZykuYXR0cihcIngyXCIsIG1heFdpZHRoIC8gMiArIGhhbGZQYWRkaW5nKS5hdHRyKFwieTFcIiwgLW1heEhlaWdodCAvIDIgLSBoYWxmUGFkZGluZyArIGxpbmVIZWlnaHQgKyB2ZXJ0aWNhbFBvcykuYXR0cihcInkyXCIsIC1tYXhIZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcgKyBsaW5lSGVpZ2h0ICsgdmVydGljYWxQb3MpO1xuICB2ZXJ0aWNhbFBvcyArPSBsaW5lSGVpZ2h0O1xuICBjbGFzc0F0dHJpYnV0ZXMuZm9yRWFjaCgobGJsKSA9PiB7XG4gICAgc2VsZWN0KGxibCkuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICBcInRyYW5zbGF0ZSggXCIgKyAtbWF4V2lkdGggLyAyICsgXCIsIFwiICsgKC0xICogbWF4SGVpZ2h0IC8gMiArIHZlcnRpY2FsUG9zICsgbGluZUhlaWdodCAvIDIpICsgXCIpXCJcbiAgICApO1xuICAgIHZlcnRpY2FsUG9zICs9IGNsYXNzVGl0bGVCQm94LmhlaWdodCArIHJvd1BhZGRpbmc7XG4gIH0pO1xuICB2ZXJ0aWNhbFBvcyArPSBsaW5lSGVpZ2h0O1xuICBib3R0b21MaW5lLmF0dHIoXCJjbGFzc1wiLCBcImRpdmlkZXJcIikuYXR0cihcIngxXCIsIC1tYXhXaWR0aCAvIDIgLSBoYWxmUGFkZGluZykuYXR0cihcIngyXCIsIG1heFdpZHRoIC8gMiArIGhhbGZQYWRkaW5nKS5hdHRyKFwieTFcIiwgLW1heEhlaWdodCAvIDIgLSBoYWxmUGFkZGluZyArIGxpbmVIZWlnaHQgKyB2ZXJ0aWNhbFBvcykuYXR0cihcInkyXCIsIC1tYXhIZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcgKyBsaW5lSGVpZ2h0ICsgdmVydGljYWxQb3MpO1xuICB2ZXJ0aWNhbFBvcyArPSBsaW5lSGVpZ2h0O1xuICBjbGFzc01ldGhvZHMuZm9yRWFjaCgobGJsKSA9PiB7XG4gICAgc2VsZWN0KGxibCkuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICBcInRyYW5zbGF0ZSggXCIgKyAtbWF4V2lkdGggLyAyICsgXCIsIFwiICsgKC0xICogbWF4SGVpZ2h0IC8gMiArIHZlcnRpY2FsUG9zKSArIFwiKVwiXG4gICAgKTtcbiAgICB2ZXJ0aWNhbFBvcyArPSBjbGFzc1RpdGxlQkJveC5oZWlnaHQgKyByb3dQYWRkaW5nO1xuICB9KTtcbiAgcmVjdDIuYXR0cihcImNsYXNzXCIsIFwib3V0ZXIgdGl0bGUtc3RhdGVcIikuYXR0cihcInhcIiwgLW1heFdpZHRoIC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwieVwiLCAtKG1heEhlaWdodCAvIDIpIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ3aWR0aFwiLCBtYXhXaWR0aCArIG5vZGUucGFkZGluZykuYXR0cihcImhlaWdodFwiLCBtYXhIZWlnaHQgKyBub2RlLnBhZGRpbmcpO1xuICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIHJlY3QyKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludDIpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0LnJlY3Qobm9kZSwgcG9pbnQyKTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IHNoYXBlcyA9IHtcbiAgcmhvbWJ1czogcXVlc3Rpb24sXG4gIHF1ZXN0aW9uLFxuICByZWN0LFxuICBsYWJlbFJlY3QsXG4gIHJlY3RXaXRoVGl0bGUsXG4gIGNob2ljZSxcbiAgY2lyY2xlLFxuICBkb3VibGVjaXJjbGUsXG4gIHN0YWRpdW0sXG4gIGhleGFnb24sXG4gIHJlY3RfbGVmdF9pbnZfYXJyb3csXG4gIGxlYW5fcmlnaHQsXG4gIGxlYW5fbGVmdCxcbiAgdHJhcGV6b2lkLFxuICBpbnZfdHJhcGV6b2lkLFxuICByZWN0X3JpZ2h0X2ludl9hcnJvdyxcbiAgY3lsaW5kZXIsXG4gIHN0YXJ0LFxuICBlbmQsXG4gIG5vdGU6IG5vdGUkMSxcbiAgc3Vicm91dGluZSxcbiAgZm9yazogZm9ya0pvaW4sXG4gIGpvaW46IGZvcmtKb2luLFxuICBjbGFzc19ib3hcbn07XG5sZXQgbm9kZUVsZW1zID0ge307XG5jb25zdCBpbnNlcnROb2RlID0gYXN5bmMgKGVsZW0sIG5vZGUsIGRpcikgPT4ge1xuICBsZXQgbmV3RWw7XG4gIGxldCBlbDtcbiAgaWYgKG5vZGUubGluaykge1xuICAgIGxldCB0YXJnZXQ7XG4gICAgaWYgKGdldENvbmZpZygpLnNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgICB0YXJnZXQgPSBcIl90b3BcIjtcbiAgICB9IGVsc2UgaWYgKG5vZGUubGlua1RhcmdldCkge1xuICAgICAgdGFyZ2V0ID0gbm9kZS5saW5rVGFyZ2V0IHx8IFwiX2JsYW5rXCI7XG4gICAgfVxuICAgIG5ld0VsID0gZWxlbS5pbnNlcnQoXCJzdmc6YVwiKS5hdHRyKFwieGxpbms6aHJlZlwiLCBub2RlLmxpbmspLmF0dHIoXCJ0YXJnZXRcIiwgdGFyZ2V0KTtcbiAgICBlbCA9IGF3YWl0IHNoYXBlc1tub2RlLnNoYXBlXShuZXdFbCwgbm9kZSwgZGlyKTtcbiAgfSBlbHNlIHtcbiAgICBlbCA9IGF3YWl0IHNoYXBlc1tub2RlLnNoYXBlXShlbGVtLCBub2RlLCBkaXIpO1xuICAgIG5ld0VsID0gZWw7XG4gIH1cbiAgaWYgKG5vZGUudG9vbHRpcCkge1xuICAgIGVsLmF0dHIoXCJ0aXRsZVwiLCBub2RlLnRvb2x0aXApO1xuICB9XG4gIGlmIChub2RlLmNsYXNzKSB7XG4gICAgZWwuYXR0cihcImNsYXNzXCIsIFwibm9kZSBkZWZhdWx0IFwiICsgbm9kZS5jbGFzcyk7XG4gIH1cbiAgbm9kZUVsZW1zW25vZGUuaWRdID0gbmV3RWw7XG4gIGlmIChub2RlLmhhdmVDYWxsYmFjaykge1xuICAgIG5vZGVFbGVtc1tub2RlLmlkXS5hdHRyKFwiY2xhc3NcIiwgbm9kZUVsZW1zW25vZGUuaWRdLmF0dHIoXCJjbGFzc1wiKSArIFwiIGNsaWNrYWJsZVwiKTtcbiAgfVxuICByZXR1cm4gbmV3RWw7XG59O1xuY29uc3Qgc2V0Tm9kZUVsZW0gPSAoZWxlbSwgbm9kZSkgPT4ge1xuICBub2RlRWxlbXNbbm9kZS5pZF0gPSBlbGVtO1xufTtcbmNvbnN0IGNsZWFyJDEgPSAoKSA9PiB7XG4gIG5vZGVFbGVtcyA9IHt9O1xufTtcbmNvbnN0IHBvc2l0aW9uTm9kZSA9IChub2RlKSA9PiB7XG4gIGNvbnN0IGVsID0gbm9kZUVsZW1zW25vZGUuaWRdO1xuICBsb2cudHJhY2UoXG4gICAgXCJUcmFuc2Zvcm1pbmcgbm9kZVwiLFxuICAgIG5vZGUuZGlmZixcbiAgICBub2RlLFxuICAgIFwidHJhbnNsYXRlKFwiICsgKG5vZGUueCAtIG5vZGUud2lkdGggLyAyIC0gNSkgKyBcIiwgXCIgKyBub2RlLndpZHRoIC8gMiArIFwiKVwiXG4gICk7XG4gIGNvbnN0IHBhZGRpbmcgPSA4O1xuICBjb25zdCBkaWZmID0gbm9kZS5kaWZmIHx8IDA7XG4gIGlmIChub2RlLmNsdXN0ZXJOb2RlKSB7XG4gICAgZWwuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICBcInRyYW5zbGF0ZShcIiArIChub2RlLnggKyBkaWZmIC0gbm9kZS53aWR0aCAvIDIpICsgXCIsIFwiICsgKG5vZGUueSAtIG5vZGUuaGVpZ2h0IC8gMiAtIHBhZGRpbmcpICsgXCIpXCJcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGVsLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBub2RlLnggKyBcIiwgXCIgKyBub2RlLnkgKyBcIilcIik7XG4gIH1cbiAgcmV0dXJuIGRpZmY7XG59O1xubGV0IGVkZ2VMYWJlbHMgPSB7fTtcbmxldCB0ZXJtaW5hbExhYmVscyA9IHt9O1xuY29uc3QgY2xlYXIgPSAoKSA9PiB7XG4gIGVkZ2VMYWJlbHMgPSB7fTtcbiAgdGVybWluYWxMYWJlbHMgPSB7fTtcbn07XG5jb25zdCBpbnNlcnRFZGdlTGFiZWwgPSAoZWxlbSwgZWRnZSkgPT4ge1xuICBjb25zdCB1c2VIdG1sTGFiZWxzID0gZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpO1xuICBjb25zdCBsYWJlbEVsZW1lbnQgPSBlZGdlLmxhYmVsVHlwZSA9PT0gXCJtYXJrZG93blwiID8gY3JlYXRlVGV4dChlbGVtLCBlZGdlLmxhYmVsLCB7XG4gICAgc3R5bGU6IGVkZ2UubGFiZWxTdHlsZSxcbiAgICB1c2VIdG1sTGFiZWxzLFxuICAgIGFkZFN2Z0JhY2tncm91bmQ6IHRydWVcbiAgfSkgOiBjcmVhdGVMYWJlbCQxKGVkZ2UubGFiZWwsIGVkZ2UubGFiZWxTdHlsZSk7XG4gIGxvZy5pbmZvKFwiYWJjODJcIiwgZWRnZSwgZWRnZS5sYWJlbFR5cGUpO1xuICBjb25zdCBlZGdlTGFiZWwgPSBlbGVtLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZWRnZUxhYmVsXCIpO1xuICBjb25zdCBsYWJlbCA9IGVkZ2VMYWJlbC5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImxhYmVsXCIpO1xuICBsYWJlbC5ub2RlKCkuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTtcbiAgbGV0IGJib3ggPSBsYWJlbEVsZW1lbnQuZ2V0QkJveCgpO1xuICBpZiAodXNlSHRtbExhYmVscykge1xuICAgIGNvbnN0IGRpdiA9IGxhYmVsRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICBjb25zdCBkdiA9IHNlbGVjdChsYWJlbEVsZW1lbnQpO1xuICAgIGJib3ggPSBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgZHYuYXR0cihcIndpZHRoXCIsIGJib3gud2lkdGgpO1xuICAgIGR2LmF0dHIoXCJoZWlnaHRcIiwgYmJveC5oZWlnaHQpO1xuICB9XG4gIGxhYmVsLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAtYmJveC53aWR0aCAvIDIgKyBcIiwgXCIgKyAtYmJveC5oZWlnaHQgLyAyICsgXCIpXCIpO1xuICBlZGdlTGFiZWxzW2VkZ2UuaWRdID0gZWRnZUxhYmVsO1xuICBlZGdlLndpZHRoID0gYmJveC53aWR0aDtcbiAgZWRnZS5oZWlnaHQgPSBiYm94LmhlaWdodDtcbiAgbGV0IGZvO1xuICBpZiAoZWRnZS5zdGFydExhYmVsTGVmdCkge1xuICAgIGNvbnN0IHN0YXJ0TGFiZWxFbGVtZW50ID0gY3JlYXRlTGFiZWwkMShlZGdlLnN0YXJ0TGFiZWxMZWZ0LCBlZGdlLmxhYmVsU3R5bGUpO1xuICAgIGNvbnN0IHN0YXJ0RWRnZUxhYmVsTGVmdCA9IGVsZW0uaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlVGVybWluYWxzXCIpO1xuICAgIGNvbnN0IGlubmVyID0gc3RhcnRFZGdlTGFiZWxMZWZ0Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiaW5uZXJcIik7XG4gICAgZm8gPSBpbm5lci5ub2RlKCkuYXBwZW5kQ2hpbGQoc3RhcnRMYWJlbEVsZW1lbnQpO1xuICAgIGNvbnN0IHNsQm94ID0gc3RhcnRMYWJlbEVsZW1lbnQuZ2V0QkJveCgpO1xuICAgIGlubmVyLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAtc2xCb3gud2lkdGggLyAyICsgXCIsIFwiICsgLXNsQm94LmhlaWdodCAvIDIgKyBcIilcIik7XG4gICAgaWYgKCF0ZXJtaW5hbExhYmVsc1tlZGdlLmlkXSkge1xuICAgICAgdGVybWluYWxMYWJlbHNbZWRnZS5pZF0gPSB7fTtcbiAgICB9XG4gICAgdGVybWluYWxMYWJlbHNbZWRnZS5pZF0uc3RhcnRMZWZ0ID0gc3RhcnRFZGdlTGFiZWxMZWZ0O1xuICAgIHNldFRlcm1pbmFsV2lkdGgoZm8sIGVkZ2Uuc3RhcnRMYWJlbExlZnQpO1xuICB9XG4gIGlmIChlZGdlLnN0YXJ0TGFiZWxSaWdodCkge1xuICAgIGNvbnN0IHN0YXJ0TGFiZWxFbGVtZW50ID0gY3JlYXRlTGFiZWwkMShlZGdlLnN0YXJ0TGFiZWxSaWdodCwgZWRnZS5sYWJlbFN0eWxlKTtcbiAgICBjb25zdCBzdGFydEVkZ2VMYWJlbFJpZ2h0ID0gZWxlbS5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImVkZ2VUZXJtaW5hbHNcIik7XG4gICAgY29uc3QgaW5uZXIgPSBzdGFydEVkZ2VMYWJlbFJpZ2h0Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiaW5uZXJcIik7XG4gICAgZm8gPSBzdGFydEVkZ2VMYWJlbFJpZ2h0Lm5vZGUoKS5hcHBlbmRDaGlsZChzdGFydExhYmVsRWxlbWVudCk7XG4gICAgaW5uZXIubm9kZSgpLmFwcGVuZENoaWxkKHN0YXJ0TGFiZWxFbGVtZW50KTtcbiAgICBjb25zdCBzbEJveCA9IHN0YXJ0TGFiZWxFbGVtZW50LmdldEJCb3goKTtcbiAgICBpbm5lci5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgLXNsQm94LndpZHRoIC8gMiArIFwiLCBcIiArIC1zbEJveC5oZWlnaHQgLyAyICsgXCIpXCIpO1xuICAgIGlmICghdGVybWluYWxMYWJlbHNbZWRnZS5pZF0pIHtcbiAgICAgIHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdID0ge307XG4gICAgfVxuICAgIHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdLnN0YXJ0UmlnaHQgPSBzdGFydEVkZ2VMYWJlbFJpZ2h0O1xuICAgIHNldFRlcm1pbmFsV2lkdGgoZm8sIGVkZ2Uuc3RhcnRMYWJlbFJpZ2h0KTtcbiAgfVxuICBpZiAoZWRnZS5lbmRMYWJlbExlZnQpIHtcbiAgICBjb25zdCBlbmRMYWJlbEVsZW1lbnQgPSBjcmVhdGVMYWJlbCQxKGVkZ2UuZW5kTGFiZWxMZWZ0LCBlZGdlLmxhYmVsU3R5bGUpO1xuICAgIGNvbnN0IGVuZEVkZ2VMYWJlbExlZnQgPSBlbGVtLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZWRnZVRlcm1pbmFsc1wiKTtcbiAgICBjb25zdCBpbm5lciA9IGVuZEVkZ2VMYWJlbExlZnQuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJpbm5lclwiKTtcbiAgICBmbyA9IGlubmVyLm5vZGUoKS5hcHBlbmRDaGlsZChlbmRMYWJlbEVsZW1lbnQpO1xuICAgIGNvbnN0IHNsQm94ID0gZW5kTGFiZWxFbGVtZW50LmdldEJCb3goKTtcbiAgICBpbm5lci5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgLXNsQm94LndpZHRoIC8gMiArIFwiLCBcIiArIC1zbEJveC5oZWlnaHQgLyAyICsgXCIpXCIpO1xuICAgIGVuZEVkZ2VMYWJlbExlZnQubm9kZSgpLmFwcGVuZENoaWxkKGVuZExhYmVsRWxlbWVudCk7XG4gICAgaWYgKCF0ZXJtaW5hbExhYmVsc1tlZGdlLmlkXSkge1xuICAgICAgdGVybWluYWxMYWJlbHNbZWRnZS5pZF0gPSB7fTtcbiAgICB9XG4gICAgdGVybWluYWxMYWJlbHNbZWRnZS5pZF0uZW5kTGVmdCA9IGVuZEVkZ2VMYWJlbExlZnQ7XG4gICAgc2V0VGVybWluYWxXaWR0aChmbywgZWRnZS5lbmRMYWJlbExlZnQpO1xuICB9XG4gIGlmIChlZGdlLmVuZExhYmVsUmlnaHQpIHtcbiAgICBjb25zdCBlbmRMYWJlbEVsZW1lbnQgPSBjcmVhdGVMYWJlbCQxKGVkZ2UuZW5kTGFiZWxSaWdodCwgZWRnZS5sYWJlbFN0eWxlKTtcbiAgICBjb25zdCBlbmRFZGdlTGFiZWxSaWdodCA9IGVsZW0uaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlVGVybWluYWxzXCIpO1xuICAgIGNvbnN0IGlubmVyID0gZW5kRWRnZUxhYmVsUmlnaHQuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJpbm5lclwiKTtcbiAgICBmbyA9IGlubmVyLm5vZGUoKS5hcHBlbmRDaGlsZChlbmRMYWJlbEVsZW1lbnQpO1xuICAgIGNvbnN0IHNsQm94ID0gZW5kTGFiZWxFbGVtZW50LmdldEJCb3goKTtcbiAgICBpbm5lci5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgLXNsQm94LndpZHRoIC8gMiArIFwiLCBcIiArIC1zbEJveC5oZWlnaHQgLyAyICsgXCIpXCIpO1xuICAgIGVuZEVkZ2VMYWJlbFJpZ2h0Lm5vZGUoKS5hcHBlbmRDaGlsZChlbmRMYWJlbEVsZW1lbnQpO1xuICAgIGlmICghdGVybWluYWxMYWJlbHNbZWRnZS5pZF0pIHtcbiAgICAgIHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdID0ge307XG4gICAgfVxuICAgIHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdLmVuZFJpZ2h0ID0gZW5kRWRnZUxhYmVsUmlnaHQ7XG4gICAgc2V0VGVybWluYWxXaWR0aChmbywgZWRnZS5lbmRMYWJlbFJpZ2h0KTtcbiAgfVxuICByZXR1cm4gbGFiZWxFbGVtZW50O1xufTtcbmZ1bmN0aW9uIHNldFRlcm1pbmFsV2lkdGgoZm8sIHZhbHVlKSB7XG4gIGlmIChnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscyAmJiBmbykge1xuICAgIGZvLnN0eWxlLndpZHRoID0gdmFsdWUubGVuZ3RoICogOSArIFwicHhcIjtcbiAgICBmby5zdHlsZS5oZWlnaHQgPSBcIjEycHhcIjtcbiAgfVxufVxuY29uc3QgcG9zaXRpb25FZGdlTGFiZWwgPSAoZWRnZSwgcGF0aHMpID0+IHtcbiAgbG9nLmluZm8oXCJNb3ZpbmcgbGFiZWwgYWJjNzggXCIsIGVkZ2UuaWQsIGVkZ2UubGFiZWwsIGVkZ2VMYWJlbHNbZWRnZS5pZF0pO1xuICBsZXQgcGF0aCA9IHBhdGhzLnVwZGF0ZWRQYXRoID8gcGF0aHMudXBkYXRlZFBhdGggOiBwYXRocy5vcmlnaW5hbFBhdGg7XG4gIGlmIChlZGdlLmxhYmVsKSB7XG4gICAgY29uc3QgZWwgPSBlZGdlTGFiZWxzW2VkZ2UuaWRdO1xuICAgIGxldCB4ID0gZWRnZS54O1xuICAgIGxldCB5ID0gZWRnZS55O1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCBwb3MgPSB1dGlscy5jYWxjTGFiZWxQb3NpdGlvbihwYXRoKTtcbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBcIk1vdmluZyBsYWJlbCBcIiArIGVkZ2UubGFiZWwgKyBcIiBmcm9tIChcIixcbiAgICAgICAgeCxcbiAgICAgICAgXCIsXCIsXG4gICAgICAgIHksXG4gICAgICAgIFwiKSB0byAoXCIsXG4gICAgICAgIHBvcy54LFxuICAgICAgICBcIixcIixcbiAgICAgICAgcG9zLnksXG4gICAgICAgIFwiKSBhYmM3OFwiXG4gICAgICApO1xuICAgICAgaWYgKHBhdGhzLnVwZGF0ZWRQYXRoKSB7XG4gICAgICAgIHggPSBwb3MueDtcbiAgICAgICAgeSA9IHBvcy55O1xuICAgICAgfVxuICAgIH1cbiAgICBlbC5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgeCArIFwiLCBcIiArIHkgKyBcIilcIik7XG4gIH1cbiAgaWYgKGVkZ2Uuc3RhcnRMYWJlbExlZnQpIHtcbiAgICBjb25zdCBlbCA9IHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdLnN0YXJ0TGVmdDtcbiAgICBsZXQgeCA9IGVkZ2UueDtcbiAgICBsZXQgeSA9IGVkZ2UueTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgY29uc3QgcG9zID0gdXRpbHMuY2FsY1Rlcm1pbmFsTGFiZWxQb3NpdGlvbihlZGdlLmFycm93VHlwZVN0YXJ0ID8gMTAgOiAwLCBcInN0YXJ0X2xlZnRcIiwgcGF0aCk7XG4gICAgICB4ID0gcG9zLng7XG4gICAgICB5ID0gcG9zLnk7XG4gICAgfVxuICAgIGVsLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCIsIFwiICsgeSArIFwiKVwiKTtcbiAgfVxuICBpZiAoZWRnZS5zdGFydExhYmVsUmlnaHQpIHtcbiAgICBjb25zdCBlbCA9IHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdLnN0YXJ0UmlnaHQ7XG4gICAgbGV0IHggPSBlZGdlLng7XG4gICAgbGV0IHkgPSBlZGdlLnk7XG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIGNvbnN0IHBvcyA9IHV0aWxzLmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24oXG4gICAgICAgIGVkZ2UuYXJyb3dUeXBlU3RhcnQgPyAxMCA6IDAsXG4gICAgICAgIFwic3RhcnRfcmlnaHRcIixcbiAgICAgICAgcGF0aFxuICAgICAgKTtcbiAgICAgIHggPSBwb3MueDtcbiAgICAgIHkgPSBwb3MueTtcbiAgICB9XG4gICAgZWwuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIpXCIpO1xuICB9XG4gIGlmIChlZGdlLmVuZExhYmVsTGVmdCkge1xuICAgIGNvbnN0IGVsID0gdGVybWluYWxMYWJlbHNbZWRnZS5pZF0uZW5kTGVmdDtcbiAgICBsZXQgeCA9IGVkZ2UueDtcbiAgICBsZXQgeSA9IGVkZ2UueTtcbiAgICBpZiAocGF0aCkge1xuICAgICAgY29uc3QgcG9zID0gdXRpbHMuY2FsY1Rlcm1pbmFsTGFiZWxQb3NpdGlvbihlZGdlLmFycm93VHlwZUVuZCA/IDEwIDogMCwgXCJlbmRfbGVmdFwiLCBwYXRoKTtcbiAgICAgIHggPSBwb3MueDtcbiAgICAgIHkgPSBwb3MueTtcbiAgICB9XG4gICAgZWwuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIpXCIpO1xuICB9XG4gIGlmIChlZGdlLmVuZExhYmVsUmlnaHQpIHtcbiAgICBjb25zdCBlbCA9IHRlcm1pbmFsTGFiZWxzW2VkZ2UuaWRdLmVuZFJpZ2h0O1xuICAgIGxldCB4ID0gZWRnZS54O1xuICAgIGxldCB5ID0gZWRnZS55O1xuICAgIGlmIChwYXRoKSB7XG4gICAgICBjb25zdCBwb3MgPSB1dGlscy5jYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uKGVkZ2UuYXJyb3dUeXBlRW5kID8gMTAgOiAwLCBcImVuZF9yaWdodFwiLCBwYXRoKTtcbiAgICAgIHggPSBwb3MueDtcbiAgICAgIHkgPSBwb3MueTtcbiAgICB9XG4gICAgZWwuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIpXCIpO1xuICB9XG59O1xuY29uc3Qgb3V0c2lkZU5vZGUgPSAobm9kZSwgcG9pbnQyKSA9PiB7XG4gIGNvbnN0IHggPSBub2RlLng7XG4gIGNvbnN0IHkgPSBub2RlLnk7XG4gIGNvbnN0IGR4ID0gTWF0aC5hYnMocG9pbnQyLnggLSB4KTtcbiAgY29uc3QgZHkgPSBNYXRoLmFicyhwb2ludDIueSAtIHkpO1xuICBjb25zdCB3ID0gbm9kZS53aWR0aCAvIDI7XG4gIGNvbnN0IGggPSBub2RlLmhlaWdodCAvIDI7XG4gIGlmIChkeCA+PSB3IHx8IGR5ID49IGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuY29uc3QgaW50ZXJzZWN0aW9uID0gKG5vZGUsIG91dHNpZGVQb2ludCwgaW5zaWRlUG9pbnQpID0+IHtcbiAgbG9nLndhcm4oYGludGVyc2VjdGlvbiBjYWxjIGFiYzg5OlxuICBvdXRzaWRlUG9pbnQ6ICR7SlNPTi5zdHJpbmdpZnkob3V0c2lkZVBvaW50KX1cbiAgaW5zaWRlUG9pbnQgOiAke0pTT04uc3RyaW5naWZ5KGluc2lkZVBvaW50KX1cbiAgbm9kZSAgICAgICAgOiB4OiR7bm9kZS54fSB5OiR7bm9kZS55fSB3OiR7bm9kZS53aWR0aH0gaDoke25vZGUuaGVpZ2h0fWApO1xuICBjb25zdCB4ID0gbm9kZS54O1xuICBjb25zdCB5ID0gbm9kZS55O1xuICBjb25zdCBkeCA9IE1hdGguYWJzKHggLSBpbnNpZGVQb2ludC54KTtcbiAgY29uc3QgdyA9IG5vZGUud2lkdGggLyAyO1xuICBsZXQgciA9IGluc2lkZVBvaW50LnggPCBvdXRzaWRlUG9pbnQueCA/IHcgLSBkeCA6IHcgKyBkeDtcbiAgY29uc3QgaCA9IG5vZGUuaGVpZ2h0IC8gMjtcbiAgY29uc3QgUSA9IE1hdGguYWJzKG91dHNpZGVQb2ludC55IC0gaW5zaWRlUG9pbnQueSk7XG4gIGNvbnN0IFIgPSBNYXRoLmFicyhvdXRzaWRlUG9pbnQueCAtIGluc2lkZVBvaW50LngpO1xuICBpZiAoTWF0aC5hYnMoeSAtIG91dHNpZGVQb2ludC55KSAqIHcgPiBNYXRoLmFicyh4IC0gb3V0c2lkZVBvaW50LngpICogaCkge1xuICAgIGxldCBxID0gaW5zaWRlUG9pbnQueSA8IG91dHNpZGVQb2ludC55ID8gb3V0c2lkZVBvaW50LnkgLSBoIC0geSA6IHkgLSBoIC0gb3V0c2lkZVBvaW50Lnk7XG4gICAgciA9IFIgKiBxIC8gUTtcbiAgICBjb25zdCByZXMgPSB7XG4gICAgICB4OiBpbnNpZGVQb2ludC54IDwgb3V0c2lkZVBvaW50LnggPyBpbnNpZGVQb2ludC54ICsgciA6IGluc2lkZVBvaW50LnggLSBSICsgcixcbiAgICAgIHk6IGluc2lkZVBvaW50LnkgPCBvdXRzaWRlUG9pbnQueSA/IGluc2lkZVBvaW50LnkgKyBRIC0gcSA6IGluc2lkZVBvaW50LnkgLSBRICsgcVxuICAgIH07XG4gICAgaWYgKHIgPT09IDApIHtcbiAgICAgIHJlcy54ID0gb3V0c2lkZVBvaW50Lng7XG4gICAgICByZXMueSA9IG91dHNpZGVQb2ludC55O1xuICAgIH1cbiAgICBpZiAoUiA9PT0gMCkge1xuICAgICAgcmVzLnggPSBvdXRzaWRlUG9pbnQueDtcbiAgICB9XG4gICAgaWYgKFEgPT09IDApIHtcbiAgICAgIHJlcy55ID0gb3V0c2lkZVBvaW50Lnk7XG4gICAgfVxuICAgIGxvZy53YXJuKGBhYmM4OSB0b3BwL2JvdHQgY2FsYywgUSAke1F9LCBxICR7cX0sIFIgJHtSfSwgciAke3J9YCwgcmVzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGVsc2Uge1xuICAgIGlmIChpbnNpZGVQb2ludC54IDwgb3V0c2lkZVBvaW50LngpIHtcbiAgICAgIHIgPSBvdXRzaWRlUG9pbnQueCAtIHcgLSB4O1xuICAgIH0gZWxzZSB7XG4gICAgICByID0geCAtIHcgLSBvdXRzaWRlUG9pbnQueDtcbiAgICB9XG4gICAgbGV0IHEgPSBRICogciAvIFI7XG4gICAgbGV0IF94ID0gaW5zaWRlUG9pbnQueCA8IG91dHNpZGVQb2ludC54ID8gaW5zaWRlUG9pbnQueCArIFIgLSByIDogaW5zaWRlUG9pbnQueCAtIFIgKyByO1xuICAgIGxldCBfeSA9IGluc2lkZVBvaW50LnkgPCBvdXRzaWRlUG9pbnQueSA/IGluc2lkZVBvaW50LnkgKyBxIDogaW5zaWRlUG9pbnQueSAtIHE7XG4gICAgbG9nLndhcm4oYHNpZGVzIGNhbGMgYWJjODksIFEgJHtRfSwgcSAke3F9LCBSICR7Un0sIHIgJHtyfWAsIHsgX3gsIF95IH0pO1xuICAgIGlmIChyID09PSAwKSB7XG4gICAgICBfeCA9IG91dHNpZGVQb2ludC54O1xuICAgICAgX3kgPSBvdXRzaWRlUG9pbnQueTtcbiAgICB9XG4gICAgaWYgKFIgPT09IDApIHtcbiAgICAgIF94ID0gb3V0c2lkZVBvaW50Lng7XG4gICAgfVxuICAgIGlmIChRID09PSAwKSB7XG4gICAgICBfeSA9IG91dHNpZGVQb2ludC55O1xuICAgIH1cbiAgICByZXR1cm4geyB4OiBfeCwgeTogX3kgfTtcbiAgfVxufTtcbmNvbnN0IGN1dFBhdGhBdEludGVyc2VjdCA9IChfcG9pbnRzLCBib3VuZHJ5Tm9kZSkgPT4ge1xuICBsb2cud2FybihcImFiYzg4IGN1dFBhdGhBdEludGVyc2VjdFwiLCBfcG9pbnRzLCBib3VuZHJ5Tm9kZSk7XG4gIGxldCBwb2ludHMgPSBbXTtcbiAgbGV0IGxhc3RQb2ludE91dHNpZGUgPSBfcG9pbnRzWzBdO1xuICBsZXQgaXNJbnNpZGUgPSBmYWxzZTtcbiAgX3BvaW50cy5mb3JFYWNoKChwb2ludDIpID0+IHtcbiAgICBsb2cuaW5mbyhcImFiYzg4IGNoZWNraW5nIHBvaW50XCIsIHBvaW50MiwgYm91bmRyeU5vZGUpO1xuICAgIGlmICghb3V0c2lkZU5vZGUoYm91bmRyeU5vZGUsIHBvaW50MikgJiYgIWlzSW5zaWRlKSB7XG4gICAgICBjb25zdCBpbnRlciA9IGludGVyc2VjdGlvbihib3VuZHJ5Tm9kZSwgbGFzdFBvaW50T3V0c2lkZSwgcG9pbnQyKTtcbiAgICAgIGxvZy53YXJuKFwiYWJjODggaW5zaWRlXCIsIHBvaW50MiwgbGFzdFBvaW50T3V0c2lkZSwgaW50ZXIpO1xuICAgICAgbG9nLndhcm4oXCJhYmM4OCBpbnRlcnNlY3Rpb25cIiwgaW50ZXIpO1xuICAgICAgbGV0IHBvaW50UHJlc2VudCA9IGZhbHNlO1xuICAgICAgcG9pbnRzLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgcG9pbnRQcmVzZW50ID0gcG9pbnRQcmVzZW50IHx8IHAueCA9PT0gaW50ZXIueCAmJiBwLnkgPT09IGludGVyLnk7XG4gICAgICB9KTtcbiAgICAgIGlmICghcG9pbnRzLnNvbWUoKGUpID0+IGUueCA9PT0gaW50ZXIueCAmJiBlLnkgPT09IGludGVyLnkpKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKGludGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy53YXJuKFwiYWJjODggbm8gaW50ZXJzZWN0XCIsIGludGVyLCBwb2ludHMpO1xuICAgICAgfVxuICAgICAgaXNJbnNpZGUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cud2FybihcImFiYzg4IG91dHNpZGVcIiwgcG9pbnQyLCBsYXN0UG9pbnRPdXRzaWRlKTtcbiAgICAgIGxhc3RQb2ludE91dHNpZGUgPSBwb2ludDI7XG4gICAgICBpZiAoIWlzSW5zaWRlKSB7XG4gICAgICAgIHBvaW50cy5wdXNoKHBvaW50Mik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgbG9nLndhcm4oXCJhYmM4OCByZXR1cm5pbmcgcG9pbnRzXCIsIHBvaW50cyk7XG4gIHJldHVybiBwb2ludHM7XG59O1xuY29uc3QgaW5zZXJ0RWRnZSA9IGZ1bmN0aW9uKGVsZW0sIGUsIGVkZ2UsIGNsdXN0ZXJEYiwgZGlhZ3JhbVR5cGUsIGdyYXBoKSB7XG4gIGxldCBwb2ludHMgPSBlZGdlLnBvaW50cztcbiAgbGV0IHBvaW50c0hhc0NoYW5nZWQgPSBmYWxzZTtcbiAgY29uc3QgdGFpbCA9IGdyYXBoLm5vZGUoZS52KTtcbiAgdmFyIGhlYWQgPSBncmFwaC5ub2RlKGUudyk7XG4gIGxvZy5pbmZvKFwiYWJjODggSW5zZXJ0RWRnZTogXCIsIGVkZ2UpO1xuICBpZiAoaGVhZC5pbnRlcnNlY3QgJiYgdGFpbC5pbnRlcnNlY3QpIHtcbiAgICBwb2ludHMgPSBwb2ludHMuc2xpY2UoMSwgZWRnZS5wb2ludHMubGVuZ3RoIC0gMSk7XG4gICAgcG9pbnRzLnVuc2hpZnQodGFpbC5pbnRlcnNlY3QocG9pbnRzWzBdKSk7XG4gICAgbG9nLmluZm8oXG4gICAgICBcIkxhc3QgcG9pbnRcIixcbiAgICAgIHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0sXG4gICAgICBoZWFkLFxuICAgICAgaGVhZC5pbnRlcnNlY3QocG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXSlcbiAgICApO1xuICAgIHBvaW50cy5wdXNoKGhlYWQuaW50ZXJzZWN0KHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV0pKTtcbiAgfVxuICBpZiAoZWRnZS50b0NsdXN0ZXIpIHtcbiAgICBsb2cuaW5mbyhcInRvIGNsdXN0ZXIgYWJjODhcIiwgY2x1c3RlckRiW2VkZ2UudG9DbHVzdGVyXSk7XG4gICAgcG9pbnRzID0gY3V0UGF0aEF0SW50ZXJzZWN0KGVkZ2UucG9pbnRzLCBjbHVzdGVyRGJbZWRnZS50b0NsdXN0ZXJdLm5vZGUpO1xuICAgIHBvaW50c0hhc0NoYW5nZWQgPSB0cnVlO1xuICB9XG4gIGlmIChlZGdlLmZyb21DbHVzdGVyKSB7XG4gICAgbG9nLmluZm8oXCJmcm9tIGNsdXN0ZXIgYWJjODhcIiwgY2x1c3RlckRiW2VkZ2UuZnJvbUNsdXN0ZXJdKTtcbiAgICBwb2ludHMgPSBjdXRQYXRoQXRJbnRlcnNlY3QocG9pbnRzLnJldmVyc2UoKSwgY2x1c3RlckRiW2VkZ2UuZnJvbUNsdXN0ZXJdLm5vZGUpLnJldmVyc2UoKTtcbiAgICBwb2ludHNIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBsaW5lRGF0YSA9IHBvaW50cy5maWx0ZXIoKHApID0+ICFOdW1iZXIuaXNOYU4ocC55KSk7XG4gIGxldCBjdXJ2ZTtcbiAgaWYgKGRpYWdyYW1UeXBlID09PSBcImdyYXBoXCIgfHwgZGlhZ3JhbVR5cGUgPT09IFwiZmxvd2NoYXJ0XCIpIHtcbiAgICBjdXJ2ZSA9IGVkZ2UuY3VydmUgfHwgY3VydmVCYXNpcztcbiAgfSBlbHNlIHtcbiAgICBjdXJ2ZSA9IGN1cnZlQmFzaXM7XG4gIH1cbiAgY29uc3QgbGluZUZ1bmN0aW9uID0gbGluZSgpLngoZnVuY3Rpb24oZCkge1xuICAgIHJldHVybiBkLng7XG4gIH0pLnkoZnVuY3Rpb24oZCkge1xuICAgIHJldHVybiBkLnk7XG4gIH0pLmN1cnZlKGN1cnZlKTtcbiAgbGV0IHN0cm9rZUNsYXNzZXM7XG4gIHN3aXRjaCAoZWRnZS50aGlja25lc3MpIHtcbiAgICBjYXNlIFwibm9ybWFsXCI6XG4gICAgICBzdHJva2VDbGFzc2VzID0gXCJlZGdlLXRoaWNrbmVzcy1ub3JtYWxcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0aGlja1wiOlxuICAgICAgc3Ryb2tlQ2xhc3NlcyA9IFwiZWRnZS10aGlja25lc3MtdGhpY2tcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpbnZpc2libGVcIjpcbiAgICAgIHN0cm9rZUNsYXNzZXMgPSBcImVkZ2UtdGhpY2tuZXNzLXRoaWNrXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3Ryb2tlQ2xhc3NlcyA9IFwiXCI7XG4gIH1cbiAgc3dpdGNoIChlZGdlLnBhdHRlcm4pIHtcbiAgICBjYXNlIFwic29saWRcIjpcbiAgICAgIHN0cm9rZUNsYXNzZXMgKz0gXCIgZWRnZS1wYXR0ZXJuLXNvbGlkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZG90dGVkXCI6XG4gICAgICBzdHJva2VDbGFzc2VzICs9IFwiIGVkZ2UtcGF0dGVybi1kb3R0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkYXNoZWRcIjpcbiAgICAgIHN0cm9rZUNsYXNzZXMgKz0gXCIgZWRnZS1wYXR0ZXJuLWRhc2hlZFwiO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgY29uc3Qgc3ZnUGF0aCA9IGVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBsaW5lRnVuY3Rpb24obGluZURhdGEpKS5hdHRyKFwiaWRcIiwgZWRnZS5pZCkuYXR0cihcImNsYXNzXCIsIFwiIFwiICsgc3Ryb2tlQ2xhc3NlcyArIChlZGdlLmNsYXNzZXMgPyBcIiBcIiArIGVkZ2UuY2xhc3NlcyA6IFwiXCIpKS5hdHRyKFwic3R5bGVcIiwgZWRnZS5zdHlsZSk7XG4gIGxldCB1cmwgPSBcIlwiO1xuICBpZiAoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0LmFycm93TWFya2VyQWJzb2x1dGUgfHwgZ2V0Q29uZmlnKCkuc3RhdGUuYXJyb3dNYXJrZXJBYnNvbHV0ZSkge1xuICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFwoL2csIFwiXFxcXChcIik7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKS9nLCBcIlxcXFwpXCIpO1xuICB9XG4gIGxvZy5pbmZvKFwiYXJyb3dUeXBlU3RhcnRcIiwgZWRnZS5hcnJvd1R5cGVTdGFydCk7XG4gIGxvZy5pbmZvKFwiYXJyb3dUeXBlRW5kXCIsIGVkZ2UuYXJyb3dUeXBlRW5kKTtcbiAgc3dpdGNoIChlZGdlLmFycm93VHlwZVN0YXJ0KSB7XG4gICAgY2FzZSBcImFycm93X2Nyb3NzXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItY3Jvc3NTdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYXJyb3dfcG9pbnRcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1wb2ludFN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhcnJvd19iYXJiXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItYmFyYlN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhcnJvd19jaXJjbGVcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jaXJjbGVTdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYWdncmVnYXRpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1hZ2dyZWdhdGlvblN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleHRlbnNpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1leHRlbnNpb25TdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY29tcG9zaXRpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jb21wb3NpdGlvblN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkZXBlbmRlbmN5XCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItZGVwZW5kZW5jeVN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJsb2xsaXBvcFwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLXN0YXJ0XCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWxvbGxpcG9wU3RhcnQpXCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3dpdGNoIChlZGdlLmFycm93VHlwZUVuZCkge1xuICAgIGNhc2UgXCJhcnJvd19jcm9zc1wiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jcm9zc0VuZClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYXJyb3dfcG9pbnRcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItcG9pbnRFbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImFycm93X2JhcmJcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItYmFyYkVuZClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYXJyb3dfY2lyY2xlXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWNpcmNsZUVuZClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYWdncmVnYXRpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItYWdncmVnYXRpb25FbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4dGVuc2lvblwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1leHRlbnNpb25FbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNvbXBvc2l0aW9uXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWNvbXBvc2l0aW9uRW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkZXBlbmRlbmN5XCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWRlcGVuZGVuY3lFbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImxvbGxpcG9wXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWxvbGxpcG9wRW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGxldCBwYXRocyA9IHt9O1xuICBpZiAocG9pbnRzSGFzQ2hhbmdlZCkge1xuICAgIHBhdGhzLnVwZGF0ZWRQYXRoID0gcG9pbnRzO1xuICB9XG4gIHBhdGhzLm9yaWdpbmFsUGF0aCA9IGVkZ2UucG9pbnRzO1xuICByZXR1cm4gcGF0aHM7XG59O1xuZXhwb3J0IHtcbiAgaW5zZXJ0TWFya2VycyQxIGFzIGEsXG4gIGNsZWFyJDEgYXMgYixcbiAgY3JlYXRlTGFiZWwkMSBhcyBjLFxuICBjbGVhciBhcyBkLFxuICBpbnNlcnROb2RlIGFzIGUsXG4gIGluc2VydEVkZ2VMYWJlbCBhcyBmLFxuICBpbnNlcnRFZGdlIGFzIGcsXG4gIHBvc2l0aW9uRWRnZUxhYmVsIGFzIGgsXG4gIGludGVyc2VjdFJlY3QkMSBhcyBpLFxuICBsYWJlbEhlbHBlciBhcyBsLFxuICBwb3NpdGlvbk5vZGUgYXMgcCxcbiAgc2V0Tm9kZUVsZW0gYXMgcyxcbiAgdXBkYXRlTm9kZUJvdW5kcyBhcyB1XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/edges-49ac43a2.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/erDiagram-f6946109.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/erDiagram-f6946109.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var uuid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! uuid */ \"../../../node_modules/uuid/dist/esm-browser/v5.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 5], $V2 = [6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $V3 = [1, 17], $V4 = [1, 18], $V5 = [1, 19], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 25], $Va = [1, 30], $Vb = [1, 31], $Vc = [1, 32], $Vd = [1, 33], $Ve = [1, 34], $Vf = [6, 9, 11, 15, 20, 23, 25, 27, 29, 30, 31, 44, 45, 46, 47, 48, 52], $Vg = [1, 46], $Vh = [30, 31, 49, 50], $Vi = [4, 6, 9, 11, 23, 25, 27, 29, 30, 31, 52], $Vj = [44, 45, 46, 47, 48], $Vk = [22, 37], $Vl = [1, 66], $Vm = [1, 65], $Vn = [22, 37, 39, 41];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"directive\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NEWLINE\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \":\": 15, \"argDirective\": 16, \"entityName\": 17, \"relSpec\": 18, \"role\": 19, \"BLOCK_START\": 20, \"attributes\": 21, \"BLOCK_STOP\": 22, \"title\": 23, \"title_value\": 24, \"acc_title\": 25, \"acc_title_value\": 26, \"acc_descr\": 27, \"acc_descr_value\": 28, \"acc_descr_multiline_value\": 29, \"ALPHANUM\": 30, \"ENTITY_NAME\": 31, \"attribute\": 32, \"attributeType\": 33, \"attributeName\": 34, \"attributeKeyTypeList\": 35, \"attributeComment\": 36, \"ATTRIBUTE_WORD\": 37, \"attributeKeyType\": 38, \"COMMA\": 39, \"ATTRIBUTE_KEY\": 40, \"COMMENT\": 41, \"cardinality\": 42, \"relType\": 43, \"ZERO_OR_ONE\": 44, \"ZERO_OR_MORE\": 45, \"ONE_OR_MORE\": 46, \"ONLY_ONE\": 47, \"MD_PARENT\": 48, \"NON_IDENTIFYING\": 49, \"IDENTIFYING\": 50, \"WORD\": 51, \"open_directive\": 52, \"type_directive\": 53, \"arg_directive\": 54, \"close_directive\": 55, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 9: \"SPACE\", 11: \"NEWLINE\", 15: \":\", 20: \"BLOCK_START\", 22: \"BLOCK_STOP\", 23: \"title\", 24: \"title_value\", 25: \"acc_title\", 26: \"acc_title_value\", 27: \"acc_descr\", 28: \"acc_descr_value\", 29: \"acc_descr_multiline_value\", 30: \"ALPHANUM\", 31: \"ENTITY_NAME\", 37: \"ATTRIBUTE_WORD\", 39: \"COMMA\", 40: \"ATTRIBUTE_KEY\", 41: \"COMMENT\", 44: \"ZERO_OR_ONE\", 45: \"ZERO_OR_MORE\", 46: \"ONE_OR_MORE\", 47: \"ONLY_ONE\", 48: \"MD_PARENT\", 49: \"NON_IDENTIFYING\", 50: \"IDENTIFYING\", 51: \"WORD\", 52: \"open_directive\", 53: \"type_directive\", 54: \"arg_directive\", 55: \"close_directive\" },\n productions_: [0, [3, 3], [3, 2], [5, 0], [5, 2], [8, 2], [8, 1], [8, 1], [8, 1], [7, 4], [7, 6], [10, 1], [10, 5], [10, 4], [10, 3], [10, 1], [10, 2], [10, 2], [10, 2], [10, 1], [17, 1], [17, 1], [21, 1], [21, 2], [32, 2], [32, 3], [32, 3], [32, 4], [33, 1], [34, 1], [35, 1], [35, 3], [38, 1], [36, 1], [18, 3], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [43, 1], [43, 1], [19, 1], [19, 1], [19, 1], [12, 1], [13, 1], [16, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 12:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 13:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 14:\n yy.addEntity($$[$0 - 2]);\n break;\n case 15:\n yy.addEntity($$[$0]);\n break;\n case 16:\n case 17:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 18:\n case 19:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 20:\n case 44:\n this.$ = $$[$0];\n break;\n case 21:\n case 42:\n case 43:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 22:\n case 30:\n this.$ = [$$[$0]];\n break;\n case 23:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 28:\n case 29:\n case 32:\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 33:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 34:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 36:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 38:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 39:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 40:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 41:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n case 45:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 46:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 47:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 48:\n yy.parseDirective(\"}%%\", \"close_directive\", \"er\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 1: [3] }, o($V2, [2, 3], { 5: 6 }), { 3: 7, 4: $V0, 7: 3, 12: 4, 52: $V1 }, { 13: 8, 53: [1, 9] }, { 53: [2, 45] }, { 6: [1, 10], 7: 15, 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, { 1: [2, 2] }, { 14: 23, 15: [1, 24], 55: $V9 }, o([15, 55], [2, 46]), o($V2, [2, 8], { 1: [2, 1] }), o($V2, [2, 4]), { 7: 15, 10: 26, 12: 4, 17: 16, 23: $V3, 25: $V4, 27: $V5, 29: $V6, 30: $V7, 31: $V8, 52: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 11]), o($V2, [2, 15], { 18: 27, 42: 29, 20: [1, 28], 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }), { 24: [1, 35] }, { 26: [1, 36] }, { 28: [1, 37] }, o($V2, [2, 19]), o($Vf, [2, 20]), o($Vf, [2, 21]), { 11: [1, 38] }, { 16: 39, 54: [1, 40] }, { 11: [2, 48] }, o($V2, [2, 5]), { 17: 41, 30: $V7, 31: $V8 }, { 21: 42, 22: [1, 43], 32: 44, 33: 45, 37: $Vg }, { 43: 47, 49: [1, 48], 50: [1, 49] }, o($Vh, [2, 35]), o($Vh, [2, 36]), o($Vh, [2, 37]), o($Vh, [2, 38]), o($Vh, [2, 39]), o($V2, [2, 16]), o($V2, [2, 17]), o($V2, [2, 18]), o($Vi, [2, 9]), { 14: 50, 55: $V9 }, { 55: [2, 47] }, { 15: [1, 51] }, { 22: [1, 52] }, o($V2, [2, 14]), { 21: 53, 22: [2, 22], 32: 44, 33: 45, 37: $Vg }, { 34: 54, 37: [1, 55] }, { 37: [2, 28] }, { 42: 56, 44: $Va, 45: $Vb, 46: $Vc, 47: $Vd, 48: $Ve }, o($Vj, [2, 40]), o($Vj, [2, 41]), { 11: [1, 57] }, { 19: 58, 30: [1, 61], 31: [1, 60], 51: [1, 59] }, o($V2, [2, 13]), { 22: [2, 23] }, o($Vk, [2, 24], { 35: 62, 36: 63, 38: 64, 40: $Vl, 41: $Vm }), o([22, 37, 40, 41], [2, 29]), o([30, 31], [2, 34]), o($Vi, [2, 10]), o($V2, [2, 12]), o($V2, [2, 42]), o($V2, [2, 43]), o($V2, [2, 44]), o($Vk, [2, 25], { 36: 67, 39: [1, 68], 41: $Vm }), o($Vk, [2, 26]), o($Vn, [2, 30]), o($Vk, [2, 33]), o($Vn, [2, 32]), o($Vk, [2, 27]), { 38: 69, 40: $Vl }, o($Vn, [2, 31])],\n defaultActions: { 5: [2, 45], 7: [2, 2], 25: [2, 48], 40: [2, 47], 46: [2, 28], 53: [2, 23] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 25;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 27;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"open_directive\");\n return 52;\n case 8:\n this.begin(\"type_directive\");\n return 53;\n case 9:\n this.popState();\n this.begin(\"arg_directive\");\n return 15;\n case 10:\n this.popState();\n this.popState();\n return 55;\n case 11:\n return 54;\n case 12:\n return 11;\n case 13:\n break;\n case 14:\n return 9;\n case 15:\n return 31;\n case 16:\n return 51;\n case 17:\n return 4;\n case 18:\n this.begin(\"block\");\n return 20;\n case 19:\n return 39;\n case 20:\n break;\n case 21:\n return 40;\n case 22:\n return 37;\n case 23:\n return 37;\n case 24:\n return 41;\n case 25:\n break;\n case 26:\n this.popState();\n return 22;\n case 27:\n return yy_.yytext[0];\n case 28:\n return 44;\n case 29:\n return 46;\n case 30:\n return 46;\n case 31:\n return 46;\n case 32:\n return 44;\n case 33:\n return 44;\n case 34:\n return 45;\n case 35:\n return 45;\n case 36:\n return 45;\n case 37:\n return 45;\n case 38:\n return 45;\n case 39:\n return 46;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n return 47;\n case 44:\n return 47;\n case 45:\n return 47;\n case 46:\n return 44;\n case 47:\n return 45;\n case 48:\n return 46;\n case 49:\n return 48;\n case 50:\n return 49;\n case 51:\n return 50;\n case 52:\n return 50;\n case 53:\n return 49;\n case 54:\n return 49;\n case 55:\n return 49;\n case 56:\n return 30;\n case 57:\n return yy_.yytext[0];\n case 58:\n return 6;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"open_directive\": { \"rules\": [8], \"inclusive\": false }, \"type_directive\": { \"rules\": [9, 10], \"inclusive\": false }, \"arg_directive\": { \"rules\": [10, 11], \"inclusive\": false }, \"block\": { \"rules\": [19, 20, 21, 22, 23, 24, 25, 26, 27], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 12, 13, 14, 15, 16, 17, 18, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst erParser = parser;\nlet entities = {};\nlet relationships = [];\nconst Cardinality = {\n ZERO_OR_ONE: \"ZERO_OR_ONE\",\n ZERO_OR_MORE: \"ZERO_OR_MORE\",\n ONE_OR_MORE: \"ONE_OR_MORE\",\n ONLY_ONE: \"ONLY_ONE\",\n MD_PARENT: \"MD_PARENT\"\n};\nconst Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.m.parseDirective(this, statement, context, type);\n};\nconst addEntity = function(name) {\n if (entities[name] === void 0) {\n entities[name] = { attributes: [] };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Added new entity :\", name);\n }\n return entities[name];\n};\nconst getEntities = () => entities;\nconst addAttributes = function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Added attribute \", attribs[i].attributeName);\n }\n};\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Added new relationship :\", rel);\n};\nconst getRelationships = () => relationships;\nconst clear = function() {\n entities = {};\n relationships = [];\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.v)();\n};\nconst erDb = {\n Cardinality,\n Identification,\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.g,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.b,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.a,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.t\n};\nconst ERMarkers = {\n ONLY_ONE_START: \"ONLY_ONE_START\",\n ONLY_ONE_END: \"ONLY_ONE_END\",\n ZERO_OR_ONE_START: \"ZERO_OR_ONE_START\",\n ZERO_OR_ONE_END: \"ZERO_OR_ONE_END\",\n ONE_OR_MORE_START: \"ONE_OR_MORE_START\",\n ONE_OR_MORE_END: \"ONE_OR_MORE_END\",\n ZERO_OR_MORE_START: \"ZERO_OR_MORE_START\",\n ZERO_OR_MORE_END: \"ZERO_OR_MORE_END\",\n MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nconst insertMarkers = function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n};\nconst erMarkers = {\n ERMarkers,\n insertMarkers\n};\nconst BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nlet conf = {};\nlet entityNameIds = /* @__PURE__ */ new Map();\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.x)(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n};\nconst drawEntities = function(svgNode, entities2, graph) {\n const keys = Object.keys(entities2);\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2[entityName].attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n};\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n};\nconst addRelationships = function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n};\nlet relCnt = 0;\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_1__.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_1__.curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(rel.roleA);\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().er;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Drawing ER diagram\");\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers.insertMarkers(svg, conf);\n let g;\n g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_2__.layout)(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.u.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.i)(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${(0,uuid__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\nconst erRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`;\nconst erStyles = getStyles;\nconst diagram = {\n parser: erParser,\n db: erDb,\n renderer: erRenderer,\n styles: erStyles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9lckRpYWdyYW0tZjY5NDYxMDkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUEyUjtBQUM3TjtBQUNoQjtBQUNVO0FBQzlCO0FBQ1A7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQixnL0JBQWcvQjtBQUNoZ0Msa0JBQWtCLG9sQkFBb2xCO0FBQ3RtQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyxvQ0FBb0MsSUFBSSxRQUFRLG1CQUFtQixNQUFNLEtBQUssb0NBQW9DLElBQUksbUJBQW1CLElBQUksYUFBYSxJQUFJLHlJQUF5SSxJQUFJLFdBQVcsSUFBSSw4QkFBOEIseUNBQXlDLFdBQVcscUJBQXFCLDZGQUE2RixxRUFBcUUsMEVBQTBFLEtBQUssYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLHVEQUF1RCxhQUFhLElBQUkscUJBQXFCLElBQUksYUFBYSxvQkFBb0IsMEJBQTBCLElBQUksOENBQThDLElBQUksa0NBQWtDLDRKQUE0SixpQkFBaUIsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEscUJBQXFCLDhDQUE4QyxJQUFJLHFCQUFxQixJQUFJLGFBQWEsSUFBSSxxREFBcUQsc0NBQXNDLGFBQWEsSUFBSSwrQ0FBK0MscUJBQXFCLGFBQWEsb0JBQW9CLDBDQUEwQyw4SkFBOEosOEJBQThCLDBGQUEwRixpQkFBaUI7QUFDdHpELHNCQUFzQiwyRUFBMkU7QUFDakc7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUCw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLGlCQUFpQiwwQkFBMEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLG9JQUFvSSxnQkFBZ0Is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SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsc0VBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLCtEQUFpQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFnQjtBQUNsQix5QkFBeUIsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE9BQU87QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLHNCQUFzQixFQUFFLDZCQUE2QixFQUFFLGdEQUFFO0FBQ3JFO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLDZCQUE2QixJQUFJO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLGNBQWM7QUFDZDs7QUFFQTtBQUNBLFlBQVk7QUFDWixjQUFjO0FBQ2Q7O0FBRUE7QUFDQSxhQUFhO0FBQ2IsY0FBYztBQUNkOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQW1CO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2VyRGlhZ3JhbS1mNjk0NjEwOS5qcz9mMDAyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIG0gYXMgbWVybWFpZEFQSSwgbCBhcyBsb2csIHYgYXMgY2xlYXIkMSwgdSBhcyB1dGlscywgaSBhcyBjb25maWd1cmVTdmdTaXplLCB4IGFzIHBhcnNlR2VuZXJpY1R5cGVzIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0ICogYXMgZ3JhcGhsaWIgZnJvbSBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0LCBsaW5lLCBjdXJ2ZUJhc2lzIH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgeyBsYXlvdXQgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB2NSB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG52YXIgcGFyc2VyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBvID0gZnVuY3Rpb24oaywgdiwgbzIsIGwpIHtcbiAgICBmb3IgKG8yID0gbzIgfHwge30sIGwgPSBrLmxlbmd0aDsgbC0tOyBvMltrW2xdXSA9IHYpXG4gICAgICA7XG4gICAgcmV0dXJuIG8yO1xuICB9LCAkVjAgPSBbMSwgMl0sICRWMSA9IFsxLCA1XSwgJFYyID0gWzYsIDksIDExLCAyMywgMjUsIDI3LCAyOSwgMzAsIDMxLCA1Ml0sICRWMyA9IFsxLCAxN10sICRWNCA9IFsxLCAxOF0sICRWNSA9IFsxLCAxOV0sICRWNiA9IFsxLCAyMF0sICRWNyA9IFsxLCAyMV0sICRWOCA9IFsxLCAyMl0sICRWOSA9IFsxLCAyNV0sICRWYSA9IFsxLCAzMF0sICRWYiA9IFsxLCAzMV0sICRWYyA9IFsxLCAzMl0sICRWZCA9IFsxLCAzM10sICRWZSA9IFsxLCAzNF0sICRWZiA9IFs2LCA5LCAxMSwgMTUsIDIwLCAyMywgMjUsIDI3LCAyOSwgMzAsIDMxLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDUyXSwgJFZnID0gWzEsIDQ2XSwgJFZoID0gWzMwLCAzMSwgNDksIDUwXSwgJFZpID0gWzQsIDYsIDksIDExLCAyMywgMjUsIDI3LCAyOSwgMzAsIDMxLCA1Ml0sICRWaiA9IFs0NCwgNDUsIDQ2LCA0NywgNDhdLCAkVmsgPSBbMjIsIDM3XSwgJFZsID0gWzEsIDY2XSwgJFZtID0gWzEsIDY1XSwgJFZuID0gWzIyLCAzNywgMzksIDQxXTtcbiAgdmFyIHBhcnNlcjIgPSB7XG4gICAgdHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkge1xuICAgIH0sXG4gICAgeXk6IHt9LFxuICAgIHN5bWJvbHNfOiB7IFwiZXJyb3JcIjogMiwgXCJzdGFydFwiOiAzLCBcIkVSX0RJQUdSQU1cIjogNCwgXCJkb2N1bWVudFwiOiA1LCBcIkVPRlwiOiA2LCBcImRpcmVjdGl2ZVwiOiA3LCBcImxpbmVcIjogOCwgXCJTUEFDRVwiOiA5LCBcInN0YXRlbWVudFwiOiAxMCwgXCJORVdMSU5FXCI6IDExLCBcIm9wZW5EaXJlY3RpdmVcIjogMTIsIFwidHlwZURpcmVjdGl2ZVwiOiAxMywgXCJjbG9zZURpcmVjdGl2ZVwiOiAxNCwgXCI6XCI6IDE1LCBcImFyZ0RpcmVjdGl2ZVwiOiAxNiwgXCJlbnRpdHlOYW1lXCI6IDE3LCBcInJlbFNwZWNcIjogMTgsIFwicm9sZVwiOiAxOSwgXCJCTE9DS19TVEFSVFwiOiAyMCwgXCJhdHRyaWJ1dGVzXCI6IDIxLCBcIkJMT0NLX1NUT1BcIjogMjIsIFwidGl0bGVcIjogMjMsIFwidGl0bGVfdmFsdWVcIjogMjQsIFwiYWNjX3RpdGxlXCI6IDI1LCBcImFjY190aXRsZV92YWx1ZVwiOiAyNiwgXCJhY2NfZGVzY3JcIjogMjcsIFwiYWNjX2Rlc2NyX3ZhbHVlXCI6IDI4LCBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjogMjksIFwiQUxQSEFOVU1cIjogMzAsIFwiRU5USVRZX05BTUVcIjogMzEsIFwiYXR0cmlidXRlXCI6IDMyLCBcImF0dHJpYnV0ZVR5cGVcIjogMzMsIFwiYXR0cmlidXRlTmFtZVwiOiAzNCwgXCJhdHRyaWJ1dGVLZXlUeXBlTGlzdFwiOiAzNSwgXCJhdHRyaWJ1dGVDb21tZW50XCI6IDM2LCBcIkFUVFJJQlVURV9XT1JEXCI6IDM3LCBcImF0dHJpYnV0ZUtleVR5cGVcIjogMzgsIFwiQ09NTUFcIjogMzksIFwiQVRUUklCVVRFX0tFWVwiOiA0MCwgXCJDT01NRU5UXCI6IDQxLCBcImNhcmRpbmFsaXR5XCI6IDQyLCBcInJlbFR5cGVcIjogNDMsIFwiWkVST19PUl9PTkVcIjogNDQsIFwiWkVST19PUl9NT1JFXCI6IDQ1LCBcIk9ORV9PUl9NT1JFXCI6IDQ2LCBcIk9OTFlfT05FXCI6IDQ3LCBcIk1EX1BBUkVOVFwiOiA0OCwgXCJOT05fSURFTlRJRllJTkdcIjogNDksIFwiSURFTlRJRllJTkdcIjogNTAsIFwiV09SRFwiOiA1MSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiA1MiwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiA1MywgXCJhcmdfZGlyZWN0aXZlXCI6IDU0LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiA1NSwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDQ6IFwiRVJfRElBR1JBTVwiLCA2OiBcIkVPRlwiLCA5OiBcIlNQQUNFXCIsIDExOiBcIk5FV0xJTkVcIiwgMTU6IFwiOlwiLCAyMDogXCJCTE9DS19TVEFSVFwiLCAyMjogXCJCTE9DS19TVE9QXCIsIDIzOiBcInRpdGxlXCIsIDI0OiBcInRpdGxlX3ZhbHVlXCIsIDI1OiBcImFjY190aXRsZVwiLCAyNjogXCJhY2NfdGl0bGVfdmFsdWVcIiwgMjc6IFwiYWNjX2Rlc2NyXCIsIDI4OiBcImFjY19kZXNjcl92YWx1ZVwiLCAyOTogXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCIsIDMwOiBcIkFMUEhBTlVNXCIsIDMxOiBcIkVOVElUWV9OQU1FXCIsIDM3OiBcIkFUVFJJQlVURV9XT1JEXCIsIDM5OiBcIkNPTU1BXCIsIDQwOiBcIkFUVFJJQlVURV9LRVlcIiwgNDE6IFwiQ09NTUVOVFwiLCA0NDogXCJaRVJPX09SX09ORVwiLCA0NTogXCJaRVJPX09SX01PUkVcIiwgNDY6IFwiT05FX09SX01PUkVcIiwgNDc6IFwiT05MWV9PTkVcIiwgNDg6IFwiTURfUEFSRU5UXCIsIDQ5OiBcIk5PTl9JREVOVElGWUlOR1wiLCA1MDogXCJJREVOVElGWUlOR1wiLCA1MTogXCJXT1JEXCIsIDUyOiBcIm9wZW5fZGlyZWN0aXZlXCIsIDUzOiBcInR5cGVfZGlyZWN0aXZlXCIsIDU0OiBcImFyZ19kaXJlY3RpdmVcIiwgNTU6IFwiY2xvc2VfZGlyZWN0aXZlXCIgfSxcbiAgICBwcm9kdWN0aW9uc186IFswLCBbMywgM10sIFszLCAyXSwgWzUsIDBdLCBbNSwgMl0sIFs4LCAyXSwgWzgsIDFdLCBbOCwgMV0sIFs4LCAxXSwgWzcsIDRdLCBbNywgNl0sIFsxMCwgMV0sIFsxMCwgNV0sIFsxMCwgNF0sIFsxMCwgM10sIFsxMCwgMV0sIFsxMCwgMl0sIFsxMCwgMl0sIFsxMCwgMl0sIFsxMCwgMV0sIFsxNywgMV0sIFsxNywgMV0sIFsyMSwgMV0sIFsyMSwgMl0sIFszMiwgMl0sIFszMiwgM10sIFszMiwgM10sIFszMiwgNF0sIFszMywgMV0sIFszNCwgMV0sIFszNSwgMV0sIFszNSwgM10sIFszOCwgMV0sIFszNiwgMV0sIFsxOCwgM10sIFs0MiwgMV0sIFs0MiwgMV0sIFs0MiwgMV0sIFs0MiwgMV0sIFs0MiwgMV0sIFs0MywgMV0sIFs0MywgMV0sIFsxOSwgMV0sIFsxOSwgMV0sIFsxOSwgMV0sIFsxMiwgMV0sIFsxMywgMV0sIFsxNiwgMV0sIFsxNCwgMV1dLFxuICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQpIHtcbiAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIHl5LmFkZEVudGl0eSgkJFskMCAtIDRdKTtcbiAgICAgICAgICB5eS5hZGRFbnRpdHkoJCRbJDAgLSAyXSk7XG4gICAgICAgICAgeXkuYWRkUmVsYXRpb25zaGlwKCQkWyQwIC0gNF0sICQkWyQwXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAzXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgeXkuYWRkRW50aXR5KCQkWyQwIC0gM10pO1xuICAgICAgICAgIHl5LmFkZEF0dHJpYnV0ZXMoJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgeXkuYWRkRW50aXR5KCQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgIHl5LmFkZEVudGl0eSgkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE2OlxuICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjVGl0bGUodGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxODpcbiAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY0Rlc2NyaXB0aW9uKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjA6XG4gICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIxOlxuICAgICAgICBjYXNlIDQyOlxuICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAkJFskMF0ucHVzaCgkJFskMCAtIDFdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgdGhpcy4kID0geyBhdHRyaWJ1dGVUeXBlOiAkJFskMCAtIDFdLCBhdHRyaWJ1dGVOYW1lOiAkJFskMF0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICB0aGlzLiQgPSB7IGF0dHJpYnV0ZVR5cGU6ICQkWyQwIC0gMl0sIGF0dHJpYnV0ZU5hbWU6ICQkWyQwIC0gMV0sIGF0dHJpYnV0ZUtleVR5cGVMaXN0OiAkJFskMF0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICB0aGlzLiQgPSB7IGF0dHJpYnV0ZVR5cGU6ICQkWyQwIC0gMl0sIGF0dHJpYnV0ZU5hbWU6ICQkWyQwIC0gMV0sIGF0dHJpYnV0ZUNvbW1lbnQ6ICQkWyQwXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIHRoaXMuJCA9IHsgYXR0cmlidXRlVHlwZTogJCRbJDAgLSAzXSwgYXR0cmlidXRlTmFtZTogJCRbJDAgLSAyXSwgYXR0cmlidXRlS2V5VHlwZUxpc3Q6ICQkWyQwIC0gMV0sIGF0dHJpYnV0ZUNvbW1lbnQ6ICQkWyQwXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI4OlxuICAgICAgICBjYXNlIDI5OlxuICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAkJFskMCAtIDJdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDJdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5yZXBsYWNlKC9cIi9nLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICB0aGlzLiQgPSB7IGNhcmRBOiAkJFskMF0sIHJlbFR5cGU6ICQkWyQwIC0gMV0sIGNhcmRCOiAkJFskMCAtIDJdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgdGhpcy4kID0geXkuQ2FyZGluYWxpdHkuWkVST19PUl9PTkU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgdGhpcy4kID0geXkuQ2FyZGluYWxpdHkuWkVST19PUl9NT1JFO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LkNhcmRpbmFsaXR5Lk9ORV9PUl9NT1JFO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LkNhcmRpbmFsaXR5Lk9OTFlfT05FO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LkNhcmRpbmFsaXR5Lk1EX1BBUkVOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5JZGVudGlmaWNhdGlvbi5OT05fSURFTlRJRllJTkc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgdGhpcy4kID0geXkuSWRlbnRpZmljYXRpb24uSURFTlRJRllJTkc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCIlJXtcIiwgXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgJCRbJDBdID0gJCRbJDBdLnRyaW0oKS5yZXBsYWNlKC8nL2csICdcIicpO1xuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwifSUlXCIsIFwiY2xvc2VfZGlyZWN0aXZlXCIsIFwiZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogJFYwLCA3OiAzLCAxMjogNCwgNTI6ICRWMSB9LCB7IDE6IFszXSB9LCBvKCRWMiwgWzIsIDNdLCB7IDU6IDYgfSksIHsgMzogNywgNDogJFYwLCA3OiAzLCAxMjogNCwgNTI6ICRWMSB9LCB7IDEzOiA4LCA1MzogWzEsIDldIH0sIHsgNTM6IFsyLCA0NV0gfSwgeyA2OiBbMSwgMTBdLCA3OiAxNSwgODogMTEsIDk6IFsxLCAxMl0sIDEwOiAxMywgMTE6IFsxLCAxNF0sIDEyOiA0LCAxNzogMTYsIDIzOiAkVjMsIDI1OiAkVjQsIDI3OiAkVjUsIDI5OiAkVjYsIDMwOiAkVjcsIDMxOiAkVjgsIDUyOiAkVjEgfSwgeyAxOiBbMiwgMl0gfSwgeyAxNDogMjMsIDE1OiBbMSwgMjRdLCA1NTogJFY5IH0sIG8oWzE1LCA1NV0sIFsyLCA0Nl0pLCBvKCRWMiwgWzIsIDhdLCB7IDE6IFsyLCAxXSB9KSwgbygkVjIsIFsyLCA0XSksIHsgNzogMTUsIDEwOiAyNiwgMTI6IDQsIDE3OiAxNiwgMjM6ICRWMywgMjU6ICRWNCwgMjc6ICRWNSwgMjk6ICRWNiwgMzA6ICRWNywgMzE6ICRWOCwgNTI6ICRWMSB9LCBvKCRWMiwgWzIsIDZdKSwgbygkVjIsIFsyLCA3XSksIG8oJFYyLCBbMiwgMTFdKSwgbygkVjIsIFsyLCAxNV0sIHsgMTg6IDI3LCA0MjogMjksIDIwOiBbMSwgMjhdLCA0NDogJFZhLCA0NTogJFZiLCA0NjogJFZjLCA0NzogJFZkLCA0ODogJFZlIH0pLCB7IDI0OiBbMSwgMzVdIH0sIHsgMjY6IFsxLCAzNl0gfSwgeyAyODogWzEsIDM3XSB9LCBvKCRWMiwgWzIsIDE5XSksIG8oJFZmLCBbMiwgMjBdKSwgbygkVmYsIFsyLCAyMV0pLCB7IDExOiBbMSwgMzhdIH0sIHsgMTY6IDM5LCA1NDogWzEsIDQwXSB9LCB7IDExOiBbMiwgNDhdIH0sIG8oJFYyLCBbMiwgNV0pLCB7IDE3OiA0MSwgMzA6ICRWNywgMzE6ICRWOCB9LCB7IDIxOiA0MiwgMjI6IFsxLCA0M10sIDMyOiA0NCwgMzM6IDQ1LCAzNzogJFZnIH0sIHsgNDM6IDQ3LCA0OTogWzEsIDQ4XSwgNTA6IFsxLCA0OV0gfSwgbygkVmgsIFsyLCAzNV0pLCBvKCRWaCwgWzIsIDM2XSksIG8oJFZoLCBbMiwgMzddKSwgbygkVmgsIFsyLCAzOF0pLCBvKCRWaCwgWzIsIDM5XSksIG8oJFYyLCBbMiwgMTZdKSwgbygkVjIsIFsyLCAxN10pLCBvKCRWMiwgWzIsIDE4XSksIG8oJFZpLCBbMiwgOV0pLCB7IDE0OiA1MCwgNTU6ICRWOSB9LCB7IDU1OiBbMiwgNDddIH0sIHsgMTU6IFsxLCA1MV0gfSwgeyAyMjogWzEsIDUyXSB9LCBvKCRWMiwgWzIsIDE0XSksIHsgMjE6IDUzLCAyMjogWzIsIDIyXSwgMzI6IDQ0LCAzMzogNDUsIDM3OiAkVmcgfSwgeyAzNDogNTQsIDM3OiBbMSwgNTVdIH0sIHsgMzc6IFsyLCAyOF0gfSwgeyA0MjogNTYsIDQ0OiAkVmEsIDQ1OiAkVmIsIDQ2OiAkVmMsIDQ3OiAkVmQsIDQ4OiAkVmUgfSwgbygkVmosIFsyLCA0MF0pLCBvKCRWaiwgWzIsIDQxXSksIHsgMTE6IFsxLCA1N10gfSwgeyAxOTogNTgsIDMwOiBbMSwgNjFdLCAzMTogWzEsIDYwXSwgNTE6IFsxLCA1OV0gfSwgbygkVjIsIFsyLCAxM10pLCB7IDIyOiBbMiwgMjNdIH0sIG8oJFZrLCBbMiwgMjRdLCB7IDM1OiA2MiwgMzY6IDYzLCAzODogNjQsIDQwOiAkVmwsIDQxOiAkVm0gfSksIG8oWzIyLCAzNywgNDAsIDQxXSwgWzIsIDI5XSksIG8oWzMwLCAzMV0sIFsyLCAzNF0pLCBvKCRWaSwgWzIsIDEwXSksIG8oJFYyLCBbMiwgMTJdKSwgbygkVjIsIFsyLCA0Ml0pLCBvKCRWMiwgWzIsIDQzXSksIG8oJFYyLCBbMiwgNDRdKSwgbygkVmssIFsyLCAyNV0sIHsgMzY6IDY3LCAzOTogWzEsIDY4XSwgNDE6ICRWbSB9KSwgbygkVmssIFsyLCAyNl0pLCBvKCRWbiwgWzIsIDMwXSksIG8oJFZrLCBbMiwgMzNdKSwgbygkVm4sIFsyLCAzMl0pLCBvKCRWaywgWzIsIDI3XSksIHsgMzg6IDY5LCA0MDogJFZsIH0sIG8oJFZuLCBbMiwgMzFdKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgNTogWzIsIDQ1XSwgNzogWzIsIDJdLCAyNTogWzIsIDQ4XSwgNDA6IFsyLCA0N10sIDQ2OiBbMiwgMjhdLCA1MzogWzIsIDIzXSB9LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKSB8fCBsZXhlcjIubGV4KCkgfHwgRU9GO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHRzdGFjayA9IHRva2VuO1xuICAgICAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgfVxuICAgICAgdmFyIHN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgdmFyIGVyclN0ciA9IFwiXCI7XG4gICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxleGVyMi5zaG93UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyBsZXhlcjIuc2hvd1Bvc2l0aW9uKCkgKyBcIlxcbkV4cGVjdGluZyBcIiArIGV4cGVjdGVkLmpvaW4oXCIsIFwiKSArIFwiLCBnb3QgJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gRU9GID8gXCJlbmQgb2YgaW5wdXRcIiA6IFwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxleGVyMi5tYXRjaCxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICBsaW5lOiBsZXhlcjIueXlsaW5lbm8sXG4gICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2gobGV4ZXIyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaChsZXhlcjIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHl5bGVuZyA9IGxleGVyMi55eWxlbmc7XG4gICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyMi55eXRleHQ7XG4gICAgICAgICAgICAgIHl5bGluZW5vID0gbGV4ZXIyLnl5bGluZW5vO1xuICAgICAgICAgICAgICB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICB5eWxlbmcsXG4gICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICBzaGFyZWRTdGF0ZS55eSxcbiAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgIGxzdGFja1xuICAgICAgICAgICAgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBsZXhlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZXhlcjIgPSB7XG4gICAgICBFT0Y6IDEsXG4gICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHtcbiAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0LCB5eSkge1xuICAgICAgICB0aGlzLnl5ID0geXkgfHwgdGhpcy55eSB8fCB7fTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrID0gW1wiSU5JVElBTFwiXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiAwXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgICAgfSxcbiAgICAgIC8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbiAgICAgIHVucHV0OiBmdW5jdGlvbihjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbik7XG4gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbiAgICAgIG1vcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgIHJlamVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gcmV0YWluIGZpcnN0IG4gY2hhcmFjdGVycyBvZiB0aGUgbWF0Y2hcbiAgICAgIGxlc3M6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyBhbHJlYWR5IG1hdGNoZWQgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdXBjb21pbmcgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgICAgfSxcbiAgICAgIC8vIHRlc3QgdGhlIGxleGVkIHRva2VuOiByZXR1cm4gRkFMU0Ugd2hlbiBub3QgYSBtYXRjaCwgb3RoZXJ3aXNlIHJldHVybiB0b2tlblxuICAgICAgdGVzdF9tYXRjaDogZnVuY3Rpb24obWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sIGxpbmVzLCBiYWNrdXA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgYmFja3VwID0ge1xuICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICB5eWxsb2M6IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICBtYXRjaDogdGhpcy5tYXRjaCxcbiAgICAgICAgICAgIG1hdGNoZXM6IHRoaXMubWF0Y2hlcyxcbiAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgIHl5bGVuZzogdGhpcy55eWxlbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICBfaW5wdXQ6IHRoaXMuX2lucHV0LFxuICAgICAgICAgICAgeXk6IHRoaXMueXksXG4gICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmddO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIGluZGV4ZWRfcnVsZSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICBmb3IgKHZhciBrIGluIGJhY2t1cCkge1xuICAgICAgICAgICAgdGhpc1trXSA9IGJhY2t1cFtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCBpbiBpbnB1dFxuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBpbmRleDtcbiAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7XG4gICAgICAgICAgdGhpcy55eXRleHQgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKG1hdGNoLCBydWxlc1tpbmRleF0pO1xuICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBVbnJlY29nbml6ZWQgdGV4dC5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIHRoYXQgaGFzIGEgdG9rZW5cbiAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWN0aXZhdGVzIGEgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSAocHVzaGVzIHRoZSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9udG8gdGhlIGNvbmRpdGlvbiBzdGFjaylcbiAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbiAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbiAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG4gICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG4gICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG4gICAgICBzdGF0ZVN0YWNrU2l6ZTogZnVuY3Rpb24gc3RhdGVTdGFja1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7IFwiY2FzZS1pbnNlbnNpdGl2ZVwiOiB0cnVlIH0sXG4gICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXksIHl5XywgJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucywgWVlfU1RBUlQpIHtcbiAgICAgICAgc3dpdGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY190aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfdGl0bGVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDI3O1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA1MjtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gNTM7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiA1NTtcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgcmV0dXJuIDU0O1xuICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICByZXR1cm4gMTE7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICByZXR1cm4gOTtcbiAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICByZXR1cm4gNTE7XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYmxvY2tcIik7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHJldHVybiAzOTtcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgIHJldHVybiA0MDtcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDM3O1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gMzc7XG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHJldHVybiA0MTtcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyMjtcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgcmV0dXJuIHl5Xy55eXRleHRbMF07XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHJldHVybiA0NDtcbiAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgcmV0dXJuIDQ2O1xuICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICByZXR1cm4gNDY7XG4gICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgIHJldHVybiA0NjtcbiAgICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgICAgcmV0dXJuIDQ0O1xuICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgIHJldHVybiA0NTtcbiAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgcmV0dXJuIDQ1O1xuICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICByZXR1cm4gNDU7XG4gICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgIHJldHVybiA0NTtcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgcmV0dXJuIDQ1O1xuICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICByZXR1cm4gNDY7XG4gICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgIHJldHVybiA0NTtcbiAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgcmV0dXJuIDQ2O1xuICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICByZXR1cm4gNDc7XG4gICAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICAgIHJldHVybiA0NztcbiAgICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgICAgcmV0dXJuIDQ3O1xuICAgICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgICByZXR1cm4gNDc7XG4gICAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICAgIHJldHVybiA0NDtcbiAgICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgICAgcmV0dXJuIDQ1O1xuICAgICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgICByZXR1cm4gNDY7XG4gICAgICAgICAgY2FzZSA0OTpcbiAgICAgICAgICAgIHJldHVybiA0ODtcbiAgICAgICAgICBjYXNlIDUwOlxuICAgICAgICAgICAgcmV0dXJuIDQ5O1xuICAgICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgICByZXR1cm4gNTA7XG4gICAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICAgIHJldHVybiA1MDtcbiAgICAgICAgICBjYXNlIDUzOlxuICAgICAgICAgICAgcmV0dXJuIDQ5O1xuICAgICAgICAgIGNhc2UgNTQ6XG4gICAgICAgICAgICByZXR1cm4gNDk7XG4gICAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICAgIHJldHVybiA0OTtcbiAgICAgICAgICBjYXNlIDU2OlxuICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgICByZXR1cm4geXlfLnl5dGV4dFswXTtcbiAgICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgICAgcmV0dXJuIDY7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBydWxlczogWy9eKD86YWNjVGl0bGVcXHMqOlxccyopL2ksIC9eKD86KD8hXFxufHwpKlteXFxuXSopL2ksIC9eKD86YWNjRGVzY3JcXHMqOlxccyopL2ksIC9eKD86KD8hXFxufHwpKlteXFxuXSopL2ksIC9eKD86YWNjRGVzY3JcXHMqXFx7XFxzKikvaSwgL14oPzpbXFx9XSkvaSwgL14oPzpbXlxcfV0qKS9pLCAvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzpbXFxuXSspL2ksIC9eKD86XFxzKykvaSwgL14oPzpbXFxzXSspL2ksIC9eKD86XCJbXlwiJVxcclxcblxcdlxcYlxcXFxdK1wiKS9pLCAvXig/OlwiW15cIl0qXCIpL2ksIC9eKD86ZXJEaWFncmFtXFxiKS9pLCAvXig/OlxceykvaSwgL14oPzosKS9pLCAvXig/OlxccyspL2ksIC9eKD86XFxiKCg/OlBLKXwoPzpGSyl8KD86VUspKVxcYikvaSwgL14oPzooLio/KVt+XSguKj8pKlt+XSkvaSwgL14oPzpbQS1aYS16X11bQS1aYS16MC05XFwtX1xcW1xcXVxcKFxcKV0qKS9pLCAvXig/OlwiW15cIl0qXCIpL2ksIC9eKD86W1xcbl0rKS9pLCAvXig/OlxcfSkvaSwgL14oPzouKS9pLCAvXig/Om9uZSBvciB6ZXJvXFxiKS9pLCAvXig/Om9uZSBvciBtb3JlXFxiKS9pLCAvXig/Om9uZSBvciBtYW55XFxiKS9pLCAvXig/OjFcXCspL2ksIC9eKD86XFx8b1xcYikvaSwgL14oPzp6ZXJvIG9yIG9uZVxcYikvaSwgL14oPzp6ZXJvIG9yIG1vcmVcXGIpL2ksIC9eKD86emVybyBvciBtYW55XFxiKS9pLCAvXig/OjBcXCspL2ksIC9eKD86XFx9b1xcYikvaSwgL14oPzptYW55XFwoMFxcKSkvaSwgL14oPzptYW55XFwoMVxcKSkvaSwgL14oPzptYW55XFxiKS9pLCAvXig/OlxcfVxcfCkvaSwgL14oPzpvbmVcXGIpL2ksIC9eKD86b25seSBvbmVcXGIpL2ksIC9eKD86MVxcYikvaSwgL14oPzpcXHxcXHwpL2ksIC9eKD86b1xcfCkvaSwgL14oPzpvXFx7KS9pLCAvXig/OlxcfFxceykvaSwgL14oPzpcXHMqdVxcYikvaSwgL14oPzpcXC5cXC4pL2ksIC9eKD86LS0pL2ksIC9eKD86dG9cXGIpL2ksIC9eKD86b3B0aW9uYWxseSB0b1xcYikvaSwgL14oPzpcXC4tKS9pLCAvXig/Oi1cXC4pL2ksIC9eKD86W0EtWmEtel1bQS1aYS16MC05XFwtX10qKS9pLCAvXig/Oi4pL2ksIC9eKD86JCkvaV0sXG4gICAgICBjb25kaXRpb25zOiB7IFwiYWNjX2Rlc2NyX211bHRpbGluZVwiOiB7IFwicnVsZXNcIjogWzUsIDZdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY190aXRsZVwiOiB7IFwicnVsZXNcIjogWzFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm9wZW5fZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbOF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFs5LCAxMF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYXJnX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzEwLCAxMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYmxvY2tcIjogeyBcInJ1bGVzXCI6IFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgMiwgNCwgNywgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4XSwgXCJpbmNsdXNpdmVcIjogdHJ1ZSB9IH1cbiAgICB9O1xuICAgIHJldHVybiBsZXhlcjI7XG4gIH0oKTtcbiAgcGFyc2VyMi5sZXhlciA9IGxleGVyO1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgdGhpcy55eSA9IHt9O1xuICB9XG4gIFBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXIyO1xuICBwYXJzZXIyLlBhcnNlciA9IFBhcnNlcjtcbiAgcmV0dXJuIG5ldyBQYXJzZXIoKTtcbn0oKTtcbnBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5jb25zdCBlclBhcnNlciA9IHBhcnNlcjtcbmxldCBlbnRpdGllcyA9IHt9O1xubGV0IHJlbGF0aW9uc2hpcHMgPSBbXTtcbmNvbnN0IENhcmRpbmFsaXR5ID0ge1xuICBaRVJPX09SX09ORTogXCJaRVJPX09SX09ORVwiLFxuICBaRVJPX09SX01PUkU6IFwiWkVST19PUl9NT1JFXCIsXG4gIE9ORV9PUl9NT1JFOiBcIk9ORV9PUl9NT1JFXCIsXG4gIE9OTFlfT05FOiBcIk9OTFlfT05FXCIsXG4gIE1EX1BBUkVOVDogXCJNRF9QQVJFTlRcIlxufTtcbmNvbnN0IElkZW50aWZpY2F0aW9uID0ge1xuICBOT05fSURFTlRJRllJTkc6IFwiTk9OX0lERU5USUZZSU5HXCIsXG4gIElERU5USUZZSU5HOiBcIklERU5USUZZSU5HXCJcbn07XG5jb25zdCBwYXJzZURpcmVjdGl2ZSA9IGZ1bmN0aW9uKHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSkge1xuICBtZXJtYWlkQVBJLnBhcnNlRGlyZWN0aXZlKHRoaXMsIHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSk7XG59O1xuY29uc3QgYWRkRW50aXR5ID0gZnVuY3Rpb24obmFtZSkge1xuICBpZiAoZW50aXRpZXNbbmFtZV0gPT09IHZvaWQgMCkge1xuICAgIGVudGl0aWVzW25hbWVdID0geyBhdHRyaWJ1dGVzOiBbXSB9O1xuICAgIGxvZy5pbmZvKFwiQWRkZWQgbmV3IGVudGl0eSA6XCIsIG5hbWUpO1xuICB9XG4gIHJldHVybiBlbnRpdGllc1tuYW1lXTtcbn07XG5jb25zdCBnZXRFbnRpdGllcyA9ICgpID0+IGVudGl0aWVzO1xuY29uc3QgYWRkQXR0cmlidXRlcyA9IGZ1bmN0aW9uKGVudGl0eU5hbWUsIGF0dHJpYnMpIHtcbiAgbGV0IGVudGl0eSA9IGFkZEVudGl0eShlbnRpdHlOYW1lKTtcbiAgbGV0IGk7XG4gIGZvciAoaSA9IGF0dHJpYnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBlbnRpdHkuYXR0cmlidXRlcy5wdXNoKGF0dHJpYnNbaV0pO1xuICAgIGxvZy5kZWJ1ZyhcIkFkZGVkIGF0dHJpYnV0ZSBcIiwgYXR0cmlic1tpXS5hdHRyaWJ1dGVOYW1lKTtcbiAgfVxufTtcbmNvbnN0IGFkZFJlbGF0aW9uc2hpcCA9IGZ1bmN0aW9uKGVudEEsIHJvbEEsIGVudEIsIHJTcGVjKSB7XG4gIGxldCByZWwgPSB7XG4gICAgZW50aXR5QTogZW50QSxcbiAgICByb2xlQTogcm9sQSxcbiAgICBlbnRpdHlCOiBlbnRCLFxuICAgIHJlbFNwZWM6IHJTcGVjXG4gIH07XG4gIHJlbGF0aW9uc2hpcHMucHVzaChyZWwpO1xuICBsb2cuZGVidWcoXCJBZGRlZCBuZXcgcmVsYXRpb25zaGlwIDpcIiwgcmVsKTtcbn07XG5jb25zdCBnZXRSZWxhdGlvbnNoaXBzID0gKCkgPT4gcmVsYXRpb25zaGlwcztcbmNvbnN0IGNsZWFyID0gZnVuY3Rpb24oKSB7XG4gIGVudGl0aWVzID0ge307XG4gIHJlbGF0aW9uc2hpcHMgPSBbXTtcbiAgY2xlYXIkMSgpO1xufTtcbmNvbnN0IGVyRGIgPSB7XG4gIENhcmRpbmFsaXR5LFxuICBJZGVudGlmaWNhdGlvbixcbiAgcGFyc2VEaXJlY3RpdmUsXG4gIGdldENvbmZpZzogKCkgPT4gZ2V0Q29uZmlnKCkuZXIsXG4gIGFkZEVudGl0eSxcbiAgYWRkQXR0cmlidXRlcyxcbiAgZ2V0RW50aXRpZXMsXG4gIGFkZFJlbGF0aW9uc2hpcCxcbiAgZ2V0UmVsYXRpb25zaGlwcyxcbiAgY2xlYXIsXG4gIHNldEFjY1RpdGxlLFxuICBnZXRBY2NUaXRsZSxcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBzZXREaWFncmFtVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZVxufTtcbmNvbnN0IEVSTWFya2VycyA9IHtcbiAgT05MWV9PTkVfU1RBUlQ6IFwiT05MWV9PTkVfU1RBUlRcIixcbiAgT05MWV9PTkVfRU5EOiBcIk9OTFlfT05FX0VORFwiLFxuICBaRVJPX09SX09ORV9TVEFSVDogXCJaRVJPX09SX09ORV9TVEFSVFwiLFxuICBaRVJPX09SX09ORV9FTkQ6IFwiWkVST19PUl9PTkVfRU5EXCIsXG4gIE9ORV9PUl9NT1JFX1NUQVJUOiBcIk9ORV9PUl9NT1JFX1NUQVJUXCIsXG4gIE9ORV9PUl9NT1JFX0VORDogXCJPTkVfT1JfTU9SRV9FTkRcIixcbiAgWkVST19PUl9NT1JFX1NUQVJUOiBcIlpFUk9fT1JfTU9SRV9TVEFSVFwiLFxuICBaRVJPX09SX01PUkVfRU5EOiBcIlpFUk9fT1JfTU9SRV9FTkRcIixcbiAgTURfUEFSRU5UX0VORDogXCJNRF9QQVJFTlRfRU5EXCIsXG4gIE1EX1BBUkVOVF9TVEFSVDogXCJNRF9QQVJFTlRfU1RBUlRcIlxufTtcbmNvbnN0IGluc2VydE1hcmtlcnMgPSBmdW5jdGlvbihlbGVtLCBjb25mMikge1xuICBsZXQgbWFya2VyO1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBFUk1hcmtlcnMuTURfUEFSRU5UX1NUQVJUKS5hdHRyKFwicmVmWFwiLCAwKS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTkwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDI0MCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWlwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgRVJNYXJrZXJzLk1EX1BBUkVOVF9FTkQpLmF0dHIoXCJyZWZYXCIsIDE5KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFpcIik7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIEVSTWFya2Vycy5PTkxZX09ORV9TVEFSVCkuYXR0cihcInJlZlhcIiwgMCkuYXR0cihcInJlZllcIiwgOSkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE4KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDE4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJzdHJva2VcIiwgY29uZjIuc3Ryb2tlKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcImRcIiwgXCJNOSwwIEw5LDE4IE0xNSwwIEwxNSwxOFwiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgRVJNYXJrZXJzLk9OTFlfT05FX0VORCkuYXR0cihcInJlZlhcIiwgMTgpLmF0dHIoXCJyZWZZXCIsIDkpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAxOCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAxOCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwic3Ryb2tlXCIsIGNvbmYyLnN0cm9rZSkuYXR0cihcImZpbGxcIiwgXCJub25lXCIpLmF0dHIoXCJkXCIsIFwiTTMsMCBMMywxOCBNOSwwIEw5LDE4XCIpO1xuICBtYXJrZXIgPSBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBFUk1hcmtlcnMuWkVST19PUl9PTkVfU1RBUlQpLmF0dHIoXCJyZWZYXCIsIDApLmF0dHIoXCJyZWZZXCIsIDkpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCAzMCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCAxOCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIik7XG4gIG1hcmtlci5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcInN0cm9rZVwiLCBjb25mMi5zdHJva2UpLmF0dHIoXCJmaWxsXCIsIFwid2hpdGVcIikuYXR0cihcImN4XCIsIDIxKS5hdHRyKFwiY3lcIiwgOSkuYXR0cihcInJcIiwgNik7XG4gIG1hcmtlci5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJzdHJva2VcIiwgY29uZjIuc3Ryb2tlKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcImRcIiwgXCJNOSwwIEw5LDE4XCIpO1xuICBtYXJrZXIgPSBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBFUk1hcmtlcnMuWkVST19PUl9PTkVfRU5EKS5hdHRyKFwicmVmWFwiLCAzMCkuYXR0cihcInJlZllcIiwgOSkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDMwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDE4KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKTtcbiAgbWFya2VyLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwic3Ryb2tlXCIsIGNvbmYyLnN0cm9rZSkuYXR0cihcImZpbGxcIiwgXCJ3aGl0ZVwiKS5hdHRyKFwiY3hcIiwgOSkuYXR0cihcImN5XCIsIDkpLmF0dHIoXCJyXCIsIDYpO1xuICBtYXJrZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwic3Ryb2tlXCIsIGNvbmYyLnN0cm9rZSkuYXR0cihcImZpbGxcIiwgXCJub25lXCIpLmF0dHIoXCJkXCIsIFwiTTIxLDAgTDIxLDE4XCIpO1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBFUk1hcmtlcnMuT05FX09SX01PUkVfU1RBUlQpLmF0dHIoXCJyZWZYXCIsIDE4KS5hdHRyKFwicmVmWVwiLCAxOCkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDQ1KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDM2KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJzdHJva2VcIiwgY29uZjIuc3Ryb2tlKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcImRcIiwgXCJNMCwxOCBRIDE4LDAgMzYsMTggUSAxOCwzNiAwLDE4IE00Miw5IEw0MiwyN1wiKTtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgRVJNYXJrZXJzLk9ORV9PUl9NT1JFX0VORCkuYXR0cihcInJlZlhcIiwgMjcpLmF0dHIoXCJyZWZZXCIsIDE4KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgNDUpLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMzYpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcInN0cm9rZVwiLCBjb25mMi5zdHJva2UpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKS5hdHRyKFwiZFwiLCBcIk0zLDkgTDMsMjcgTTksMTggUTI3LDAgNDUsMTggUTI3LDM2IDksMThcIik7XG4gIG1hcmtlciA9IGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIEVSTWFya2Vycy5aRVJPX09SX01PUkVfU1RBUlQpLmF0dHIoXCJyZWZYXCIsIDE4KS5hdHRyKFwicmVmWVwiLCAxOCkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDU3KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDM2KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKTtcbiAgbWFya2VyLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwic3Ryb2tlXCIsIGNvbmYyLnN0cm9rZSkuYXR0cihcImZpbGxcIiwgXCJ3aGl0ZVwiKS5hdHRyKFwiY3hcIiwgNDgpLmF0dHIoXCJjeVwiLCAxOCkuYXR0cihcInJcIiwgNik7XG4gIG1hcmtlci5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJzdHJva2VcIiwgY29uZjIuc3Ryb2tlKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcImRcIiwgXCJNMCwxOCBRMTgsMCAzNiwxOCBRMTgsMzYgMCwxOFwiKTtcbiAgbWFya2VyID0gZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgRVJNYXJrZXJzLlpFUk9fT1JfTU9SRV9FTkQpLmF0dHIoXCJyZWZYXCIsIDM5KS5hdHRyKFwicmVmWVwiLCAxOCkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDU3KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDM2KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKTtcbiAgbWFya2VyLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwic3Ryb2tlXCIsIGNvbmYyLnN0cm9rZSkuYXR0cihcImZpbGxcIiwgXCJ3aGl0ZVwiKS5hdHRyKFwiY3hcIiwgOSkuYXR0cihcImN5XCIsIDE4KS5hdHRyKFwiclwiLCA2KTtcbiAgbWFya2VyLmFwcGVuZChcInBhdGhcIikuYXR0cihcInN0cm9rZVwiLCBjb25mMi5zdHJva2UpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKS5hdHRyKFwiZFwiLCBcIk0yMSwxOCBRMzksMCA1NywxOCBRMzksMzYgMjEsMThcIik7XG4gIHJldHVybjtcbn07XG5jb25zdCBlck1hcmtlcnMgPSB7XG4gIEVSTWFya2VycyxcbiAgaW5zZXJ0TWFya2Vyc1xufTtcbmNvbnN0IEJBRF9JRF9DSEFSU19SRUdFWFAgPSAvW15cXGRBLVphLXpdKFxcVykqL2c7XG5sZXQgY29uZiA9IHt9O1xubGV0IGVudGl0eU5hbWVJZHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKGNuZikge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY25mKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbmZba2V5XSA9IGNuZltrZXldO1xuICB9XG59O1xuY29uc3QgZHJhd0F0dHJpYnV0ZXMgPSAoZ3JvdXBOb2RlLCBlbnRpdHlUZXh0Tm9kZSwgYXR0cmlidXRlcykgPT4ge1xuICBjb25zdCBoZWlnaHRQYWRkaW5nID0gY29uZi5lbnRpdHlQYWRkaW5nIC8gMztcbiAgY29uc3Qgd2lkdGhQYWRkaW5nID0gY29uZi5lbnRpdHlQYWRkaW5nIC8gMztcbiAgY29uc3QgYXR0ckZvbnRTaXplID0gY29uZi5mb250U2l6ZSAqIDAuODU7XG4gIGNvbnN0IGxhYmVsQkJveCA9IGVudGl0eVRleHROb2RlLm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IGF0dHJpYnV0ZU5vZGVzID0gW107XG4gIGxldCBoYXNLZXlUeXBlID0gZmFsc2U7XG4gIGxldCBoYXNDb21tZW50ID0gZmFsc2U7XG4gIGxldCBtYXhUeXBlV2lkdGggPSAwO1xuICBsZXQgbWF4TmFtZVdpZHRoID0gMDtcbiAgbGV0IG1heEtleVdpZHRoID0gMDtcbiAgbGV0IG1heENvbW1lbnRXaWR0aCA9IDA7XG4gIGxldCBjdW11bGF0aXZlSGVpZ2h0ID0gbGFiZWxCQm94LmhlaWdodCArIGhlaWdodFBhZGRpbmcgKiAyO1xuICBsZXQgYXR0ck51bSA9IDE7XG4gIGF0dHJpYnV0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIGlmIChpdGVtLmF0dHJpYnV0ZUtleVR5cGVMaXN0ICE9PSB2b2lkIDAgJiYgaXRlbS5hdHRyaWJ1dGVLZXlUeXBlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBoYXNLZXlUeXBlID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uYXR0cmlidXRlQ29tbWVudCAhPT0gdm9pZCAwKSB7XG4gICAgICBoYXNDb21tZW50ID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuICBhdHRyaWJ1dGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBjb25zdCBhdHRyUHJlZml4ID0gYCR7ZW50aXR5VGV4dE5vZGUubm9kZSgpLmlkfS1hdHRyLSR7YXR0ck51bX1gO1xuICAgIGxldCBub2RlSGVpZ2h0ID0gMDtcbiAgICBjb25zdCBhdHRyaWJ1dGVUeXBlID0gcGFyc2VHZW5lcmljVHlwZXMoaXRlbS5hdHRyaWJ1dGVUeXBlKTtcbiAgICBjb25zdCB0eXBlTm9kZSA9IGdyb3VwTm9kZS5hcHBlbmQoXCJ0ZXh0XCIpLmNsYXNzZWQoXCJlciBlbnRpdHlMYWJlbFwiLCB0cnVlKS5hdHRyKFwiaWRcIiwgYCR7YXR0clByZWZpeH0tdHlwZWApLmF0dHIoXCJ4XCIsIDApLmF0dHIoXCJ5XCIsIDApLnN0eWxlKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuc3R5bGUoXCJ0ZXh0LWFuY2hvclwiLCBcImxlZnRcIikuc3R5bGUoXCJmb250LWZhbWlseVwiLCBnZXRDb25maWcoKS5mb250RmFtaWx5KS5zdHlsZShcImZvbnQtc2l6ZVwiLCBhdHRyRm9udFNpemUgKyBcInB4XCIpLnRleHQoYXR0cmlidXRlVHlwZSk7XG4gICAgY29uc3QgbmFtZU5vZGUgPSBncm91cE5vZGUuYXBwZW5kKFwidGV4dFwiKS5jbGFzc2VkKFwiZXIgZW50aXR5TGFiZWxcIiwgdHJ1ZSkuYXR0cihcImlkXCIsIGAke2F0dHJQcmVmaXh9LW5hbWVgKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAwKS5zdHlsZShcImRvbWluYW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgXCJsZWZ0XCIpLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgZ2V0Q29uZmlnKCkuZm9udEZhbWlseSkuc3R5bGUoXCJmb250LXNpemVcIiwgYXR0ckZvbnRTaXplICsgXCJweFwiKS50ZXh0KGl0ZW0uYXR0cmlidXRlTmFtZSk7XG4gICAgY29uc3QgYXR0cmlidXRlTm9kZSA9IHt9O1xuICAgIGF0dHJpYnV0ZU5vZGUudG4gPSB0eXBlTm9kZTtcbiAgICBhdHRyaWJ1dGVOb2RlLm5uID0gbmFtZU5vZGU7XG4gICAgY29uc3QgdHlwZUJCb3ggPSB0eXBlTm9kZS5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIGNvbnN0IG5hbWVCQm94ID0gbmFtZU5vZGUubm9kZSgpLmdldEJCb3goKTtcbiAgICBtYXhUeXBlV2lkdGggPSBNYXRoLm1heChtYXhUeXBlV2lkdGgsIHR5cGVCQm94LndpZHRoKTtcbiAgICBtYXhOYW1lV2lkdGggPSBNYXRoLm1heChtYXhOYW1lV2lkdGgsIG5hbWVCQm94LndpZHRoKTtcbiAgICBub2RlSGVpZ2h0ID0gTWF0aC5tYXgodHlwZUJCb3guaGVpZ2h0LCBuYW1lQkJveC5oZWlnaHQpO1xuICAgIGlmIChoYXNLZXlUeXBlKSB7XG4gICAgICBjb25zdCBrZXlUeXBlTm9kZVRleHQgPSBpdGVtLmF0dHJpYnV0ZUtleVR5cGVMaXN0ICE9PSB2b2lkIDAgPyBpdGVtLmF0dHJpYnV0ZUtleVR5cGVMaXN0LmpvaW4oXCIsXCIpIDogXCJcIjtcbiAgICAgIGNvbnN0IGtleVR5cGVOb2RlID0gZ3JvdXBOb2RlLmFwcGVuZChcInRleHRcIikuY2xhc3NlZChcImVyIGVudGl0eUxhYmVsXCIsIHRydWUpLmF0dHIoXCJpZFwiLCBgJHthdHRyUHJlZml4fS1rZXlgKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAwKS5zdHlsZShcImRvbWluYW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgXCJsZWZ0XCIpLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgZ2V0Q29uZmlnKCkuZm9udEZhbWlseSkuc3R5bGUoXCJmb250LXNpemVcIiwgYXR0ckZvbnRTaXplICsgXCJweFwiKS50ZXh0KGtleVR5cGVOb2RlVGV4dCk7XG4gICAgICBhdHRyaWJ1dGVOb2RlLmtuID0ga2V5VHlwZU5vZGU7XG4gICAgICBjb25zdCBrZXlUeXBlQkJveCA9IGtleVR5cGVOb2RlLm5vZGUoKS5nZXRCQm94KCk7XG4gICAgICBtYXhLZXlXaWR0aCA9IE1hdGgubWF4KG1heEtleVdpZHRoLCBrZXlUeXBlQkJveC53aWR0aCk7XG4gICAgICBub2RlSGVpZ2h0ID0gTWF0aC5tYXgobm9kZUhlaWdodCwga2V5VHlwZUJCb3guaGVpZ2h0KTtcbiAgICB9XG4gICAgaWYgKGhhc0NvbW1lbnQpIHtcbiAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gZ3JvdXBOb2RlLmFwcGVuZChcInRleHRcIikuY2xhc3NlZChcImVyIGVudGl0eUxhYmVsXCIsIHRydWUpLmF0dHIoXCJpZFwiLCBgJHthdHRyUHJlZml4fS1jb21tZW50YCkuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkuc3R5bGUoXCJkb21pbmFudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibGVmdFwiKS5zdHlsZShcImZvbnQtZmFtaWx5XCIsIGdldENvbmZpZygpLmZvbnRGYW1pbHkpLnN0eWxlKFwiZm9udC1zaXplXCIsIGF0dHJGb250U2l6ZSArIFwicHhcIikudGV4dChpdGVtLmF0dHJpYnV0ZUNvbW1lbnQgfHwgXCJcIik7XG4gICAgICBhdHRyaWJ1dGVOb2RlLmNuID0gY29tbWVudE5vZGU7XG4gICAgICBjb25zdCBjb21tZW50Tm9kZUJCb3ggPSBjb21tZW50Tm9kZS5ub2RlKCkuZ2V0QkJveCgpO1xuICAgICAgbWF4Q29tbWVudFdpZHRoID0gTWF0aC5tYXgobWF4Q29tbWVudFdpZHRoLCBjb21tZW50Tm9kZUJCb3gud2lkdGgpO1xuICAgICAgbm9kZUhlaWdodCA9IE1hdGgubWF4KG5vZGVIZWlnaHQsIGNvbW1lbnROb2RlQkJveC5oZWlnaHQpO1xuICAgIH1cbiAgICBhdHRyaWJ1dGVOb2RlLmhlaWdodCA9IG5vZGVIZWlnaHQ7XG4gICAgYXR0cmlidXRlTm9kZXMucHVzaChhdHRyaWJ1dGVOb2RlKTtcbiAgICBjdW11bGF0aXZlSGVpZ2h0ICs9IG5vZGVIZWlnaHQgKyBoZWlnaHRQYWRkaW5nICogMjtcbiAgICBhdHRyTnVtICs9IDE7XG4gIH0pO1xuICBsZXQgd2lkdGhQYWRkaW5nRmFjdG9yID0gNDtcbiAgaWYgKGhhc0tleVR5cGUpIHtcbiAgICB3aWR0aFBhZGRpbmdGYWN0b3IgKz0gMjtcbiAgfVxuICBpZiAoaGFzQ29tbWVudCkge1xuICAgIHdpZHRoUGFkZGluZ0ZhY3RvciArPSAyO1xuICB9XG4gIGNvbnN0IG1heFdpZHRoID0gbWF4VHlwZVdpZHRoICsgbWF4TmFtZVdpZHRoICsgbWF4S2V5V2lkdGggKyBtYXhDb21tZW50V2lkdGg7XG4gIGNvbnN0IGJCb3ggPSB7XG4gICAgd2lkdGg6IE1hdGgubWF4KFxuICAgICAgY29uZi5taW5FbnRpdHlXaWR0aCxcbiAgICAgIE1hdGgubWF4KFxuICAgICAgICBsYWJlbEJCb3gud2lkdGggKyBjb25mLmVudGl0eVBhZGRpbmcgKiAyLFxuICAgICAgICBtYXhXaWR0aCArIHdpZHRoUGFkZGluZyAqIHdpZHRoUGFkZGluZ0ZhY3RvclxuICAgICAgKVxuICAgICksXG4gICAgaGVpZ2h0OiBhdHRyaWJ1dGVzLmxlbmd0aCA+IDAgPyBjdW11bGF0aXZlSGVpZ2h0IDogTWF0aC5tYXgoY29uZi5taW5FbnRpdHlIZWlnaHQsIGxhYmVsQkJveC5oZWlnaHQgKyBjb25mLmVudGl0eVBhZGRpbmcgKiAyKVxuICB9O1xuICBpZiAoYXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3BhcmVDb2x1bW5XaWR0aCA9IE1hdGgubWF4KFxuICAgICAgMCxcbiAgICAgIChiQm94LndpZHRoIC0gbWF4V2lkdGggLSB3aWR0aFBhZGRpbmcgKiB3aWR0aFBhZGRpbmdGYWN0b3IpIC8gKHdpZHRoUGFkZGluZ0ZhY3RvciAvIDIpXG4gICAgKTtcbiAgICBlbnRpdHlUZXh0Tm9kZS5hdHRyKFxuICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgIFwidHJhbnNsYXRlKFwiICsgYkJveC53aWR0aCAvIDIgKyBcIixcIiArIChoZWlnaHRQYWRkaW5nICsgbGFiZWxCQm94LmhlaWdodCAvIDIpICsgXCIpXCJcbiAgICApO1xuICAgIGxldCBoZWlnaHRPZmZzZXQgPSBsYWJlbEJCb3guaGVpZ2h0ICsgaGVpZ2h0UGFkZGluZyAqIDI7XG4gICAgbGV0IGF0dHJpYlN0eWxlID0gXCJhdHRyaWJ1dGVCb3hPZGRcIjtcbiAgICBhdHRyaWJ1dGVOb2Rlcy5mb3JFYWNoKChhdHRyaWJ1dGVOb2RlKSA9PiB7XG4gICAgICBjb25zdCBhbGlnblkgPSBoZWlnaHRPZmZzZXQgKyBoZWlnaHRQYWRkaW5nICsgYXR0cmlidXRlTm9kZS5oZWlnaHQgLyAyO1xuICAgICAgYXR0cmlidXRlTm9kZS50bi5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgd2lkdGhQYWRkaW5nICsgXCIsXCIgKyBhbGlnblkgKyBcIilcIik7XG4gICAgICBjb25zdCB0eXBlUmVjdCA9IGdyb3VwTm9kZS5pbnNlcnQoXCJyZWN0XCIsIFwiI1wiICsgYXR0cmlidXRlTm9kZS50bi5ub2RlKCkuaWQpLmNsYXNzZWQoYGVyICR7YXR0cmliU3R5bGV9YCwgdHJ1ZSkuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgaGVpZ2h0T2Zmc2V0KS5hdHRyKFwid2lkdGhcIiwgbWF4VHlwZVdpZHRoICsgd2lkdGhQYWRkaW5nICogMiArIHNwYXJlQ29sdW1uV2lkdGgpLmF0dHIoXCJoZWlnaHRcIiwgYXR0cmlidXRlTm9kZS5oZWlnaHQgKyBoZWlnaHRQYWRkaW5nICogMik7XG4gICAgICBjb25zdCBuYW1lWE9mZnNldCA9IHBhcnNlRmxvYXQodHlwZVJlY3QuYXR0cihcInhcIikpICsgcGFyc2VGbG9hdCh0eXBlUmVjdC5hdHRyKFwid2lkdGhcIikpO1xuICAgICAgYXR0cmlidXRlTm9kZS5ubi5hdHRyKFxuICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICBcInRyYW5zbGF0ZShcIiArIChuYW1lWE9mZnNldCArIHdpZHRoUGFkZGluZykgKyBcIixcIiArIGFsaWduWSArIFwiKVwiXG4gICAgICApO1xuICAgICAgY29uc3QgbmFtZVJlY3QgPSBncm91cE5vZGUuaW5zZXJ0KFwicmVjdFwiLCBcIiNcIiArIGF0dHJpYnV0ZU5vZGUubm4ubm9kZSgpLmlkKS5jbGFzc2VkKGBlciAke2F0dHJpYlN0eWxlfWAsIHRydWUpLmF0dHIoXCJ4XCIsIG5hbWVYT2Zmc2V0KS5hdHRyKFwieVwiLCBoZWlnaHRPZmZzZXQpLmF0dHIoXCJ3aWR0aFwiLCBtYXhOYW1lV2lkdGggKyB3aWR0aFBhZGRpbmcgKiAyICsgc3BhcmVDb2x1bW5XaWR0aCkuYXR0cihcImhlaWdodFwiLCBhdHRyaWJ1dGVOb2RlLmhlaWdodCArIGhlaWdodFBhZGRpbmcgKiAyKTtcbiAgICAgIGxldCBrZXlUeXBlQW5kQ29tbWVudFhPZmZzZXQgPSBwYXJzZUZsb2F0KG5hbWVSZWN0LmF0dHIoXCJ4XCIpKSArIHBhcnNlRmxvYXQobmFtZVJlY3QuYXR0cihcIndpZHRoXCIpKTtcbiAgICAgIGlmIChoYXNLZXlUeXBlKSB7XG4gICAgICAgIGF0dHJpYnV0ZU5vZGUua24uYXR0cihcbiAgICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICAgIFwidHJhbnNsYXRlKFwiICsgKGtleVR5cGVBbmRDb21tZW50WE9mZnNldCArIHdpZHRoUGFkZGluZykgKyBcIixcIiArIGFsaWduWSArIFwiKVwiXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGtleVR5cGVSZWN0ID0gZ3JvdXBOb2RlLmluc2VydChcInJlY3RcIiwgXCIjXCIgKyBhdHRyaWJ1dGVOb2RlLmtuLm5vZGUoKS5pZCkuY2xhc3NlZChgZXIgJHthdHRyaWJTdHlsZX1gLCB0cnVlKS5hdHRyKFwieFwiLCBrZXlUeXBlQW5kQ29tbWVudFhPZmZzZXQpLmF0dHIoXCJ5XCIsIGhlaWdodE9mZnNldCkuYXR0cihcIndpZHRoXCIsIG1heEtleVdpZHRoICsgd2lkdGhQYWRkaW5nICogMiArIHNwYXJlQ29sdW1uV2lkdGgpLmF0dHIoXCJoZWlnaHRcIiwgYXR0cmlidXRlTm9kZS5oZWlnaHQgKyBoZWlnaHRQYWRkaW5nICogMik7XG4gICAgICAgIGtleVR5cGVBbmRDb21tZW50WE9mZnNldCA9IHBhcnNlRmxvYXQoa2V5VHlwZVJlY3QuYXR0cihcInhcIikpICsgcGFyc2VGbG9hdChrZXlUeXBlUmVjdC5hdHRyKFwid2lkdGhcIikpO1xuICAgICAgfVxuICAgICAgaWYgKGhhc0NvbW1lbnQpIHtcbiAgICAgICAgYXR0cmlidXRlTm9kZS5jbi5hdHRyKFxuICAgICAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAoa2V5VHlwZUFuZENvbW1lbnRYT2Zmc2V0ICsgd2lkdGhQYWRkaW5nKSArIFwiLFwiICsgYWxpZ25ZICsgXCIpXCJcbiAgICAgICAgKTtcbiAgICAgICAgZ3JvdXBOb2RlLmluc2VydChcInJlY3RcIiwgXCIjXCIgKyBhdHRyaWJ1dGVOb2RlLmNuLm5vZGUoKS5pZCkuY2xhc3NlZChgZXIgJHthdHRyaWJTdHlsZX1gLCBcInRydWVcIikuYXR0cihcInhcIiwga2V5VHlwZUFuZENvbW1lbnRYT2Zmc2V0KS5hdHRyKFwieVwiLCBoZWlnaHRPZmZzZXQpLmF0dHIoXCJ3aWR0aFwiLCBtYXhDb21tZW50V2lkdGggKyB3aWR0aFBhZGRpbmcgKiAyICsgc3BhcmVDb2x1bW5XaWR0aCkuYXR0cihcImhlaWdodFwiLCBhdHRyaWJ1dGVOb2RlLmhlaWdodCArIGhlaWdodFBhZGRpbmcgKiAyKTtcbiAgICAgIH1cbiAgICAgIGhlaWdodE9mZnNldCArPSBhdHRyaWJ1dGVOb2RlLmhlaWdodCArIGhlaWdodFBhZGRpbmcgKiAyO1xuICAgICAgYXR0cmliU3R5bGUgPSBhdHRyaWJTdHlsZSA9PT0gXCJhdHRyaWJ1dGVCb3hPZGRcIiA/IFwiYXR0cmlidXRlQm94RXZlblwiIDogXCJhdHRyaWJ1dGVCb3hPZGRcIjtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBiQm94LmhlaWdodCA9IE1hdGgubWF4KGNvbmYubWluRW50aXR5SGVpZ2h0LCBjdW11bGF0aXZlSGVpZ2h0KTtcbiAgICBlbnRpdHlUZXh0Tm9kZS5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgYkJveC53aWR0aCAvIDIgKyBcIixcIiArIGJCb3guaGVpZ2h0IC8gMiArIFwiKVwiKTtcbiAgfVxuICByZXR1cm4gYkJveDtcbn07XG5jb25zdCBkcmF3RW50aXRpZXMgPSBmdW5jdGlvbihzdmdOb2RlLCBlbnRpdGllczIsIGdyYXBoKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhlbnRpdGllczIpO1xuICBsZXQgZmlyc3RPbmU7XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbihlbnRpdHlOYW1lKSB7XG4gICAgY29uc3QgZW50aXR5SWQgPSBnZW5lcmF0ZUlkKGVudGl0eU5hbWUsIFwiZW50aXR5XCIpO1xuICAgIGVudGl0eU5hbWVJZHMuc2V0KGVudGl0eU5hbWUsIGVudGl0eUlkKTtcbiAgICBjb25zdCBncm91cE5vZGUgPSBzdmdOb2RlLmFwcGVuZChcImdcIikuYXR0cihcImlkXCIsIGVudGl0eUlkKTtcbiAgICBmaXJzdE9uZSA9IGZpcnN0T25lID09PSB2b2lkIDAgPyBlbnRpdHlJZCA6IGZpcnN0T25lO1xuICAgIGNvbnN0IHRleHRJZCA9IFwidGV4dC1cIiArIGVudGl0eUlkO1xuICAgIGNvbnN0IHRleHROb2RlID0gZ3JvdXBOb2RlLmFwcGVuZChcInRleHRcIikuY2xhc3NlZChcImVyIGVudGl0eUxhYmVsXCIsIHRydWUpLmF0dHIoXCJpZFwiLCB0ZXh0SWQpLmF0dHIoXCJ4XCIsIDApLmF0dHIoXCJ5XCIsIDApLnN0eWxlKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuc3R5bGUoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS5zdHlsZShcImZvbnQtZmFtaWx5XCIsIGdldENvbmZpZygpLmZvbnRGYW1pbHkpLnN0eWxlKFwiZm9udC1zaXplXCIsIGNvbmYuZm9udFNpemUgKyBcInB4XCIpLnRleHQoZW50aXR5TmFtZSk7XG4gICAgY29uc3QgeyB3aWR0aDogZW50aXR5V2lkdGgsIGhlaWdodDogZW50aXR5SGVpZ2h0IH0gPSBkcmF3QXR0cmlidXRlcyhcbiAgICAgIGdyb3VwTm9kZSxcbiAgICAgIHRleHROb2RlLFxuICAgICAgZW50aXRpZXMyW2VudGl0eU5hbWVdLmF0dHJpYnV0ZXNcbiAgICApO1xuICAgIGNvbnN0IHJlY3ROb2RlID0gZ3JvdXBOb2RlLmluc2VydChcInJlY3RcIiwgXCIjXCIgKyB0ZXh0SWQpLmNsYXNzZWQoXCJlciBlbnRpdHlCb3hcIiwgdHJ1ZSkuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkuYXR0cihcIndpZHRoXCIsIGVudGl0eVdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIGVudGl0eUhlaWdodCk7XG4gICAgY29uc3QgcmVjdEJCb3ggPSByZWN0Tm9kZS5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIGdyYXBoLnNldE5vZGUoZW50aXR5SWQsIHtcbiAgICAgIHdpZHRoOiByZWN0QkJveC53aWR0aCxcbiAgICAgIGhlaWdodDogcmVjdEJCb3guaGVpZ2h0LFxuICAgICAgc2hhcGU6IFwicmVjdFwiLFxuICAgICAgaWQ6IGVudGl0eUlkXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gZmlyc3RPbmU7XG59O1xuY29uc3QgYWRqdXN0RW50aXRpZXMgPSBmdW5jdGlvbihzdmdOb2RlLCBncmFwaCkge1xuICBncmFwaC5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICh2ICE9PSB2b2lkIDAgJiYgZ3JhcGgubm9kZSh2KSAhPT0gdm9pZCAwKSB7XG4gICAgICBzdmdOb2RlLnNlbGVjdChcIiNcIiArIHYpLmF0dHIoXG4gICAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICAgIFwidHJhbnNsYXRlKFwiICsgKGdyYXBoLm5vZGUodikueCAtIGdyYXBoLm5vZGUodikud2lkdGggLyAyKSArIFwiLFwiICsgKGdyYXBoLm5vZGUodikueSAtIGdyYXBoLm5vZGUodikuaGVpZ2h0IC8gMikgKyBcIiApXCJcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbn07XG5jb25zdCBnZXRFZGdlTmFtZSA9IGZ1bmN0aW9uKHJlbCkge1xuICByZXR1cm4gKHJlbC5lbnRpdHlBICsgcmVsLnJvbGVBICsgcmVsLmVudGl0eUIpLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbn07XG5jb25zdCBhZGRSZWxhdGlvbnNoaXBzID0gZnVuY3Rpb24ocmVsYXRpb25zaGlwczIsIGcpIHtcbiAgcmVsYXRpb25zaGlwczIuZm9yRWFjaChmdW5jdGlvbihyKSB7XG4gICAgZy5zZXRFZGdlKFxuICAgICAgZW50aXR5TmFtZUlkcy5nZXQoci5lbnRpdHlBKSxcbiAgICAgIGVudGl0eU5hbWVJZHMuZ2V0KHIuZW50aXR5QiksXG4gICAgICB7IHJlbGF0aW9uc2hpcDogciB9LFxuICAgICAgZ2V0RWRnZU5hbWUocilcbiAgICApO1xuICB9KTtcbiAgcmV0dXJuIHJlbGF0aW9uc2hpcHMyO1xufTtcbmxldCByZWxDbnQgPSAwO1xuY29uc3QgZHJhd1JlbGF0aW9uc2hpcEZyb21MYXlvdXQgPSBmdW5jdGlvbihzdmcsIHJlbCwgZywgaW5zZXJ0LCBkaWFnT2JqKSB7XG4gIHJlbENudCsrO1xuICBjb25zdCBlZGdlID0gZy5lZGdlKFxuICAgIGVudGl0eU5hbWVJZHMuZ2V0KHJlbC5lbnRpdHlBKSxcbiAgICBlbnRpdHlOYW1lSWRzLmdldChyZWwuZW50aXR5QiksXG4gICAgZ2V0RWRnZU5hbWUocmVsKVxuICApO1xuICBjb25zdCBsaW5lRnVuY3Rpb24gPSBsaW5lKCkueChmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIGQueDtcbiAgfSkueShmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIGQueTtcbiAgfSkuY3VydmUoY3VydmVCYXNpcyk7XG4gIGNvbnN0IHN2Z1BhdGggPSBzdmcuaW5zZXJ0KFwicGF0aFwiLCBcIiNcIiArIGluc2VydCkuY2xhc3NlZChcImVyIHJlbGF0aW9uc2hpcExpbmVcIiwgdHJ1ZSkuYXR0cihcImRcIiwgbGluZUZ1bmN0aW9uKGVkZ2UucG9pbnRzKSkuc3R5bGUoXCJzdHJva2VcIiwgY29uZi5zdHJva2UpLnN0eWxlKFwiZmlsbFwiLCBcIm5vbmVcIik7XG4gIGlmIChyZWwucmVsU3BlYy5yZWxUeXBlID09PSBkaWFnT2JqLmRiLklkZW50aWZpY2F0aW9uLk5PTl9JREVOVElGWUlORykge1xuICAgIHN2Z1BhdGguYXR0cihcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCI4LDhcIik7XG4gIH1cbiAgbGV0IHVybCA9IFwiXCI7XG4gIGlmIChjb25mLmFycm93TWFya2VyQWJzb2x1dGUpIHtcbiAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKC9nLCBcIlxcXFwoXCIpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKC9cXCkvZywgXCJcXFxcKVwiKTtcbiAgfVxuICBzd2l0Y2ggKHJlbC5yZWxTcGVjLmNhcmRBKSB7XG4gICAgY2FzZSBkaWFnT2JqLmRiLkNhcmRpbmFsaXR5LlpFUk9fT1JfT05FOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZXJNYXJrZXJzLkVSTWFya2Vycy5aRVJPX09SX09ORV9FTkQgKyBcIilcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGRpYWdPYmouZGIuQ2FyZGluYWxpdHkuWkVST19PUl9NT1JFOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZXJNYXJrZXJzLkVSTWFya2Vycy5aRVJPX09SX01PUkVfRU5EICsgXCIpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBkaWFnT2JqLmRiLkNhcmRpbmFsaXR5Lk9ORV9PUl9NT1JFOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZXJNYXJrZXJzLkVSTWFya2Vycy5PTkVfT1JfTU9SRV9FTkQgKyBcIilcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGRpYWdPYmouZGIuQ2FyZGluYWxpdHkuT05MWV9PTkU6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBlck1hcmtlcnMuRVJNYXJrZXJzLk9OTFlfT05FX0VORCArIFwiKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZGlhZ09iai5kYi5DYXJkaW5hbGl0eS5NRF9QQVJFTlQ6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBlck1hcmtlcnMuRVJNYXJrZXJzLk1EX1BBUkVOVF9FTkQgKyBcIilcIik7XG4gICAgICBicmVhaztcbiAgfVxuICBzd2l0Y2ggKHJlbC5yZWxTcGVjLmNhcmRCKSB7XG4gICAgY2FzZSBkaWFnT2JqLmRiLkNhcmRpbmFsaXR5LlpFUk9fT1JfT05FOlxuICAgICAgc3ZnUGF0aC5hdHRyKFxuICAgICAgICBcIm1hcmtlci1zdGFydFwiLFxuICAgICAgICBcInVybChcIiArIHVybCArIFwiI1wiICsgZXJNYXJrZXJzLkVSTWFya2Vycy5aRVJPX09SX09ORV9TVEFSVCArIFwiKVwiXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBkaWFnT2JqLmRiLkNhcmRpbmFsaXR5LlpFUk9fT1JfTU9SRTpcbiAgICAgIHN2Z1BhdGguYXR0cihcbiAgICAgICAgXCJtYXJrZXItc3RhcnRcIixcbiAgICAgICAgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGVyTWFya2Vycy5FUk1hcmtlcnMuWkVST19PUl9NT1JFX1NUQVJUICsgXCIpXCJcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGRpYWdPYmouZGIuQ2FyZGluYWxpdHkuT05FX09SX01PUkU6XG4gICAgICBzdmdQYXRoLmF0dHIoXG4gICAgICAgIFwibWFya2VyLXN0YXJ0XCIsXG4gICAgICAgIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBlck1hcmtlcnMuRVJNYXJrZXJzLk9ORV9PUl9NT1JFX1NUQVJUICsgXCIpXCJcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGRpYWdPYmouZGIuQ2FyZGluYWxpdHkuT05MWV9PTkU6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGVyTWFya2Vycy5FUk1hcmtlcnMuT05MWV9PTkVfU1RBUlQgKyBcIilcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGRpYWdPYmouZGIuQ2FyZGluYWxpdHkuTURfUEFSRU5UOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLXN0YXJ0XCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBlck1hcmtlcnMuRVJNYXJrZXJzLk1EX1BBUkVOVF9TVEFSVCArIFwiKVwiKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGNvbnN0IGxlbiA9IHN2Z1BhdGgubm9kZSgpLmdldFRvdGFsTGVuZ3RoKCk7XG4gIGNvbnN0IGxhYmVsUG9pbnQgPSBzdmdQYXRoLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKGxlbiAqIDAuNSk7XG4gIGNvbnN0IGxhYmVsSWQgPSBcInJlbFwiICsgcmVsQ250O1xuICBjb25zdCBsYWJlbE5vZGUgPSBzdmcuYXBwZW5kKFwidGV4dFwiKS5jbGFzc2VkKFwiZXIgcmVsYXRpb25zaGlwTGFiZWxcIiwgdHJ1ZSkuYXR0cihcImlkXCIsIGxhYmVsSWQpLmF0dHIoXCJ4XCIsIGxhYmVsUG9pbnQueCkuYXR0cihcInlcIiwgbGFiZWxQb2ludC55KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnN0eWxlKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuc3R5bGUoXCJmb250LWZhbWlseVwiLCBnZXRDb25maWcoKS5mb250RmFtaWx5KS5zdHlsZShcImZvbnQtc2l6ZVwiLCBjb25mLmZvbnRTaXplICsgXCJweFwiKS50ZXh0KHJlbC5yb2xlQSk7XG4gIGNvbnN0IGxhYmVsQkJveCA9IGxhYmVsTm9kZS5ub2RlKCkuZ2V0QkJveCgpO1xuICBzdmcuaW5zZXJ0KFwicmVjdFwiLCBcIiNcIiArIGxhYmVsSWQpLmNsYXNzZWQoXCJlciByZWxhdGlvbnNoaXBMYWJlbEJveFwiLCB0cnVlKS5hdHRyKFwieFwiLCBsYWJlbFBvaW50LnggLSBsYWJlbEJCb3gud2lkdGggLyAyKS5hdHRyKFwieVwiLCBsYWJlbFBvaW50LnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMikuYXR0cihcIndpZHRoXCIsIGxhYmVsQkJveC53aWR0aCkuYXR0cihcImhlaWdodFwiLCBsYWJlbEJCb3guaGVpZ2h0KTtcbn07XG5jb25zdCBkcmF3ID0gZnVuY3Rpb24odGV4dCwgaWQsIF92ZXJzaW9uLCBkaWFnT2JqKSB7XG4gIGNvbmYgPSBnZXRDb25maWcoKS5lcjtcbiAgbG9nLmluZm8oXCJEcmF3aW5nIEVSIGRpYWdyYW1cIik7XG4gIGNvbnN0IHNlY3VyaXR5TGV2ZWwgPSBnZXRDb25maWcoKS5zZWN1cml0eUxldmVsO1xuICBsZXQgc2FuZGJveEVsZW1lbnQ7XG4gIGlmIChzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIikge1xuICAgIHNhbmRib3hFbGVtZW50ID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgfVxuICBjb25zdCByb290ID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzZWxlY3Qoc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keSkgOiBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChgW2lkPScke2lkfSddYCk7XG4gIGVyTWFya2Vycy5pbnNlcnRNYXJrZXJzKHN2ZywgY29uZik7XG4gIGxldCBnO1xuICBnID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgIGRpcmVjdGVkOiB0cnVlLFxuICAgIGNvbXBvdW5kOiBmYWxzZVxuICB9KS5zZXRHcmFwaCh7XG4gICAgcmFua2RpcjogY29uZi5sYXlvdXREaXJlY3Rpb24sXG4gICAgbWFyZ2lueDogMjAsXG4gICAgbWFyZ2lueTogMjAsXG4gICAgbm9kZXNlcDogMTAwLFxuICAgIGVkZ2VzZXA6IDEwMCxcbiAgICByYW5rc2VwOiAxMDBcbiAgfSkuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge307XG4gIH0pO1xuICBjb25zdCBmaXJzdEVudGl0eSA9IGRyYXdFbnRpdGllcyhzdmcsIGRpYWdPYmouZGIuZ2V0RW50aXRpZXMoKSwgZyk7XG4gIGNvbnN0IHJlbGF0aW9uc2hpcHMyID0gYWRkUmVsYXRpb25zaGlwcyhkaWFnT2JqLmRiLmdldFJlbGF0aW9uc2hpcHMoKSwgZyk7XG4gIGxheW91dChnKTtcbiAgYWRqdXN0RW50aXRpZXMoc3ZnLCBnKTtcbiAgcmVsYXRpb25zaGlwczIuZm9yRWFjaChmdW5jdGlvbihyZWwpIHtcbiAgICBkcmF3UmVsYXRpb25zaGlwRnJvbUxheW91dChzdmcsIHJlbCwgZywgZmlyc3RFbnRpdHksIGRpYWdPYmopO1xuICB9KTtcbiAgY29uc3QgcGFkZGluZyA9IGNvbmYuZGlhZ3JhbVBhZGRpbmc7XG4gIHV0aWxzLmluc2VydFRpdGxlKHN2ZywgXCJlbnRpdHlUaXRsZVRleHRcIiwgY29uZi50aXRsZVRvcE1hcmdpbiwgZGlhZ09iai5kYi5nZXREaWFncmFtVGl0bGUoKSk7XG4gIGNvbnN0IHN2Z0JvdW5kcyA9IHN2Zy5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCB3aWR0aCA9IHN2Z0JvdW5kcy53aWR0aCArIHBhZGRpbmcgKiAyO1xuICBjb25zdCBoZWlnaHQgPSBzdmdCb3VuZHMuaGVpZ2h0ICsgcGFkZGluZyAqIDI7XG4gIGNvbmZpZ3VyZVN2Z1NpemUoc3ZnLCBoZWlnaHQsIHdpZHRoLCBjb25mLnVzZU1heFdpZHRoKTtcbiAgc3ZnLmF0dHIoXCJ2aWV3Qm94XCIsIGAke3N2Z0JvdW5kcy54IC0gcGFkZGluZ30gJHtzdmdCb3VuZHMueSAtIHBhZGRpbmd9ICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xufTtcbmNvbnN0IE1FUk1BSURfRVJESUFHUkFNX1VVSUQgPSBcIjI4ZTlmOWRiLTNjOGQtNWFhNS05ZmFmLTQ0Mjg2YWU1OTM3Y1wiO1xuZnVuY3Rpb24gZ2VuZXJhdGVJZChzdHIgPSBcIlwiLCBwcmVmaXggPSBcIlwiKSB7XG4gIGNvbnN0IHNpbXBsaWZpZWRTdHIgPSBzdHIucmVwbGFjZShCQURfSURfQ0hBUlNfUkVHRVhQLCBcIlwiKTtcbiAgcmV0dXJuIGAke3N0cldpdGhIeXBoZW4ocHJlZml4KX0ke3N0cldpdGhIeXBoZW4oc2ltcGxpZmllZFN0cil9JHt2NShcbiAgICBzdHIsXG4gICAgTUVSTUFJRF9FUkRJQUdSQU1fVVVJRFxuICApfWA7XG59XG5mdW5jdGlvbiBzdHJXaXRoSHlwaGVuKHN0ciA9IFwiXCIpIHtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPiAwID8gYCR7c3RyfS1gIDogXCJcIjtcbn1cbmNvbnN0IGVyUmVuZGVyZXIgPSB7XG4gIHNldENvbmYsXG4gIGRyYXdcbn07XG5jb25zdCBnZXRTdHlsZXMgPSAob3B0aW9ucykgPT4gYFxuICAuZW50aXR5Qm94IHtcbiAgICBmaWxsOiAke29wdGlvbnMubWFpbkJrZ307XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gIH1cblxuICAuYXR0cmlidXRlQm94T2RkIHtcbiAgICBmaWxsOiAke29wdGlvbnMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbiAgfVxuXG4gIC5hdHRyaWJ1dGVCb3hFdmVuIHtcbiAgICBmaWxsOiAgJHtvcHRpb25zLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW59O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLm5vZGVCb3JkZXJ9O1xuICB9XG5cbiAgLnJlbGF0aW9uc2hpcExhYmVsQm94IHtcbiAgICBmaWxsOiAke29wdGlvbnMudGVydGlhcnlDb2xvcn07XG4gICAgb3BhY2l0eTogMC43O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7b3B0aW9ucy50ZXJ0aWFyeUNvbG9yfTtcbiAgICAgIHJlY3Qge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gIH1cblxuICAgIC5yZWxhdGlvbnNoaXBMaW5lIHtcbiAgICAgIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn07XG4gICAgfVxuXG4gIC5lbnRpdHlUaXRsZVRleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZpbGw6ICR7b3B0aW9ucy50ZXh0Q29sb3J9O1xuICB9ICAgIFxuICAjTURfUEFSRU5UX1NUQVJUIHtcbiAgICBmaWxsOiAjZjVmNWY1ICFpbXBvcnRhbnQ7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICAgIHN0cm9rZS13aWR0aDogMTtcbiAgfVxuICAjTURfUEFSRU5UX0VORCB7XG4gICAgZmlsbDogI2Y1ZjVmNSAhaW1wb3J0YW50O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgICBzdHJva2Utd2lkdGg6IDE7XG4gIH1cbiAgXG5gO1xuY29uc3QgZXJTdHlsZXMgPSBnZXRTdHlsZXM7XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXI6IGVyUGFyc2VyLFxuICBkYjogZXJEYixcbiAgcmVuZGVyZXI6IGVyUmVuZGVyZXIsXG4gIHN0eWxlczogZXJTdHlsZXNcbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/erDiagram-f6946109.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"d\": () => (/* binding */ db),\n/* harmony export */ \"f\": () => (/* binding */ flowDb),\n/* harmony export */ \"p\": () => (/* binding */ parser$1)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 9], $V1 = [1, 7], $V2 = [1, 6], $V3 = [1, 8], $V4 = [1, 20, 21, 22, 23, 38, 44, 46, 48, 52, 66, 67, 87, 88, 89, 90, 91, 92, 96, 106, 107, 110, 112, 113, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128], $V5 = [2, 10], $V6 = [1, 20], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 30], $Vb = [1, 32], $Vc = [1, 33], $Vd = [1, 34], $Ve = [1, 62], $Vf = [1, 48], $Vg = [1, 52], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 38], $Vk = [1, 39], $Vl = [1, 40], $Vm = [1, 56], $Vn = [1, 63], $Vo = [1, 51], $Vp = [1, 53], $Vq = [1, 55], $Vr = [1, 59], $Vs = [1, 60], $Vt = [1, 41], $Vu = [1, 42], $Vv = [1, 43], $Vw = [1, 44], $Vx = [1, 61], $Vy = [1, 50], $Vz = [1, 54], $VA = [1, 57], $VB = [1, 58], $VC = [1, 49], $VD = [1, 66], $VE = [1, 71], $VF = [1, 20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 66, 67, 87, 88, 89, 90, 91, 92, 96, 106, 107, 110, 112, 113, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128], $VG = [1, 75], $VH = [1, 74], $VI = [1, 76], $VJ = [20, 21, 23, 81, 82], $VK = [1, 99], $VL = [1, 104], $VM = [1, 107], $VN = [1, 108], $VO = [1, 101], $VP = [1, 106], $VQ = [1, 109], $VR = [1, 102], $VS = [1, 114], $VT = [1, 113], $VU = [1, 103], $VV = [1, 105], $VW = [1, 110], $VX = [1, 111], $VY = [1, 112], $VZ = [1, 115], $V_ = [20, 21, 22, 23, 81, 82], $V$ = [20, 21, 22, 23, 53, 81, 82], $V01 = [20, 21, 22, 23, 40, 52, 53, 55, 57, 59, 61, 63, 65, 66, 67, 69, 71, 73, 74, 76, 81, 82, 92, 96, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], $V11 = [20, 21, 23], $V21 = [20, 21, 23, 52, 66, 67, 81, 82, 92, 96, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], $V31 = [1, 12, 20, 21, 22, 23, 24, 38, 42, 44, 46, 48, 52, 66, 67, 87, 88, 89, 90, 91, 92, 96, 106, 107, 110, 112, 113, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128], $V41 = [52, 66, 67, 92, 96, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], $V51 = [1, 150], $V61 = [1, 158], $V71 = [1, 159], $V81 = [1, 160], $V91 = [1, 161], $Va1 = [1, 145], $Vb1 = [1, 146], $Vc1 = [1, 141], $Vd1 = [1, 142], $Ve1 = [1, 153], $Vf1 = [1, 154], $Vg1 = [1, 155], $Vh1 = [1, 156], $Vi1 = [1, 157], $Vj1 = [1, 162], $Vk1 = [1, 163], $Vl1 = [1, 148], $Vm1 = [1, 151], $Vn1 = [1, 147], $Vo1 = [1, 144], $Vp1 = [20, 21, 22, 23, 38, 42, 44, 46, 48, 52, 66, 67, 87, 88, 89, 90, 91, 92, 96, 106, 107, 110, 112, 113, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128], $Vq1 = [1, 166], $Vr1 = [20, 21, 22, 23, 26, 52, 66, 67, 92, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], $Vs1 = [20, 21, 22, 23, 24, 26, 38, 40, 41, 42, 52, 56, 58, 60, 62, 64, 66, 67, 68, 70, 72, 73, 75, 77, 81, 82, 87, 88, 89, 90, 91, 92, 93, 96, 106, 107, 110, 112, 113, 114, 115, 123, 124, 125, 126, 127, 128], $Vt1 = [12, 21, 22, 24], $Vu1 = [22, 107], $Vv1 = [1, 251], $Vw1 = [1, 246], $Vx1 = [1, 247], $Vy1 = [1, 255], $Vz1 = [1, 252], $VA1 = [1, 249], $VB1 = [1, 248], $VC1 = [1, 250], $VD1 = [1, 253], $VE1 = [1, 254], $VF1 = [1, 256], $VG1 = [1, 274], $VH1 = [20, 21, 23, 107], $VI1 = [20, 21, 22, 23, 66, 67, 87, 103, 106, 107, 110, 111, 112, 113, 114];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"directive\": 5, \"openDirective\": 6, \"typeDirective\": 7, \"closeDirective\": 8, \"separator\": 9, \":\": 10, \"argDirective\": 11, \"open_directive\": 12, \"type_directive\": 13, \"arg_directive\": 14, \"close_directive\": 15, \"graphConfig\": 16, \"document\": 17, \"line\": 18, \"statement\": 19, \"SEMI\": 20, \"NEWLINE\": 21, \"SPACE\": 22, \"EOF\": 23, \"GRAPH\": 24, \"NODIR\": 25, \"DIR\": 26, \"FirstStmtSeperator\": 27, \"ending\": 28, \"endToken\": 29, \"spaceList\": 30, \"spaceListNewline\": 31, \"verticeStatement\": 32, \"styleStatement\": 33, \"linkStyleStatement\": 34, \"classDefStatement\": 35, \"classStatement\": 36, \"clickStatement\": 37, \"subgraph\": 38, \"text\": 39, \"SQS\": 40, \"SQE\": 41, \"end\": 42, \"direction\": 43, \"acc_title\": 44, \"acc_title_value\": 45, \"acc_descr\": 46, \"acc_descr_value\": 47, \"acc_descr_multiline_value\": 48, \"link\": 49, \"node\": 50, \"vertex\": 51, \"AMP\": 52, \"STYLE_SEPARATOR\": 53, \"idString\": 54, \"DOUBLECIRCLESTART\": 55, \"DOUBLECIRCLEEND\": 56, \"PS\": 57, \"PE\": 58, \"(-\": 59, \"-)\": 60, \"STADIUMSTART\": 61, \"STADIUMEND\": 62, \"SUBROUTINESTART\": 63, \"SUBROUTINEEND\": 64, \"VERTEX_WITH_PROPS_START\": 65, \"ALPHA\": 66, \"COLON\": 67, \"PIPE\": 68, \"CYLINDERSTART\": 69, \"CYLINDEREND\": 70, \"DIAMOND_START\": 71, \"DIAMOND_STOP\": 72, \"TAGEND\": 73, \"TRAPSTART\": 74, \"TRAPEND\": 75, \"INVTRAPSTART\": 76, \"INVTRAPEND\": 77, \"linkStatement\": 78, \"arrowText\": 79, \"TESTSTR\": 80, \"START_LINK\": 81, \"LINK\": 82, \"textToken\": 83, \"STR\": 84, \"MD_STR\": 85, \"keywords\": 86, \"STYLE\": 87, \"LINKSTYLE\": 88, \"CLASSDEF\": 89, \"CLASS\": 90, \"CLICK\": 91, \"DOWN\": 92, \"UP\": 93, \"textNoTags\": 94, \"textNoTagsToken\": 95, \"DEFAULT\": 96, \"stylesOpt\": 97, \"alphaNum\": 98, \"CALLBACKNAME\": 99, \"CALLBACKARGS\": 100, \"HREF\": 101, \"LINK_TARGET\": 102, \"HEX\": 103, \"numList\": 104, \"INTERPOLATE\": 105, \"NUM\": 106, \"COMMA\": 107, \"style\": 108, \"styleComponent\": 109, \"MINUS\": 110, \"UNIT\": 111, \"BRKT\": 112, \"DOT\": 113, \"PCT\": 114, \"TAGSTART\": 115, \"alphaNumToken\": 116, \"idStringToken\": 117, \"alphaNumStatement\": 118, \"direction_tb\": 119, \"direction_bt\": 120, \"direction_rl\": 121, \"direction_lr\": 122, \"PUNCTUATION\": 123, \"UNICODE_TEXT\": 124, \"PLUS\": 125, \"EQUALS\": 126, \"MULT\": 127, \"UNDERSCORE\": 128, \"graphCodeTokens\": 129, \"ARROW_CROSS\": 130, \"ARROW_POINT\": 131, \"ARROW_CIRCLE\": 132, \"ARROW_OPEN\": 133, \"QUOTE\": 134, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 10: \":\", 12: \"open_directive\", 13: \"type_directive\", 14: \"arg_directive\", 15: \"close_directive\", 20: \"SEMI\", 21: \"NEWLINE\", 22: \"SPACE\", 23: \"EOF\", 24: \"GRAPH\", 25: \"NODIR\", 26: \"DIR\", 38: \"subgraph\", 40: \"SQS\", 41: \"SQE\", 42: \"end\", 44: \"acc_title\", 45: \"acc_title_value\", 46: \"acc_descr\", 47: \"acc_descr_value\", 48: \"acc_descr_multiline_value\", 52: \"AMP\", 53: \"STYLE_SEPARATOR\", 55: \"DOUBLECIRCLESTART\", 56: \"DOUBLECIRCLEEND\", 57: \"PS\", 58: \"PE\", 59: \"(-\", 60: \"-)\", 61: \"STADIUMSTART\", 62: \"STADIUMEND\", 63: \"SUBROUTINESTART\", 64: \"SUBROUTINEEND\", 65: \"VERTEX_WITH_PROPS_START\", 66: \"ALPHA\", 67: \"COLON\", 68: \"PIPE\", 69: \"CYLINDERSTART\", 70: \"CYLINDEREND\", 71: \"DIAMOND_START\", 72: \"DIAMOND_STOP\", 73: \"TAGEND\", 74: \"TRAPSTART\", 75: \"TRAPEND\", 76: \"INVTRAPSTART\", 77: \"INVTRAPEND\", 80: \"TESTSTR\", 81: \"START_LINK\", 82: \"LINK\", 84: \"STR\", 85: \"MD_STR\", 87: \"STYLE\", 88: \"LINKSTYLE\", 89: \"CLASSDEF\", 90: \"CLASS\", 91: \"CLICK\", 92: \"DOWN\", 93: \"UP\", 96: \"DEFAULT\", 99: \"CALLBACKNAME\", 100: \"CALLBACKARGS\", 101: \"HREF\", 102: \"LINK_TARGET\", 103: \"HEX\", 105: \"INTERPOLATE\", 106: \"NUM\", 107: \"COMMA\", 110: \"MINUS\", 111: \"UNIT\", 112: \"BRKT\", 113: \"DOT\", 114: \"PCT\", 115: \"TAGSTART\", 119: \"direction_tb\", 120: \"direction_bt\", 121: \"direction_rl\", 122: \"direction_lr\", 123: \"PUNCTUATION\", 124: \"UNICODE_TEXT\", 125: \"PLUS\", 126: \"EQUALS\", 127: \"MULT\", 128: \"UNDERSCORE\", 130: \"ARROW_CROSS\", 131: \"ARROW_POINT\", 132: \"ARROW_CIRCLE\", 133: \"ARROW_OPEN\", 134: \"QUOTE\" },\n productions_: [0, [3, 1], [3, 2], [5, 4], [5, 6], [6, 1], [7, 1], [11, 1], [8, 1], [4, 2], [17, 0], [17, 2], [18, 1], [18, 1], [18, 1], [18, 1], [18, 1], [16, 2], [16, 2], [16, 2], [16, 3], [28, 2], [28, 1], [29, 1], [29, 1], [29, 1], [27, 1], [27, 1], [27, 2], [31, 2], [31, 2], [31, 1], [31, 1], [30, 2], [30, 1], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 2], [19, 9], [19, 6], [19, 4], [19, 1], [19, 2], [19, 2], [19, 1], [9, 1], [9, 1], [9, 1], [32, 3], [32, 4], [32, 2], [32, 1], [50, 1], [50, 5], [50, 3], [51, 4], [51, 4], [51, 6], [51, 4], [51, 4], [51, 4], [51, 8], [51, 4], [51, 4], [51, 4], [51, 6], [51, 4], [51, 4], [51, 4], [51, 4], [51, 4], [51, 1], [49, 2], [49, 3], [49, 3], [49, 1], [49, 3], [78, 1], [79, 3], [39, 1], [39, 2], [39, 1], [39, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [86, 1], [94, 1], [94, 2], [35, 5], [35, 5], [36, 5], [37, 2], [37, 4], [37, 3], [37, 5], [37, 2], [37, 4], [37, 4], [37, 6], [37, 2], [37, 4], [37, 2], [37, 4], [37, 4], [37, 6], [33, 5], [33, 5], [34, 5], [34, 5], [34, 9], [34, 9], [34, 7], [34, 7], [104, 1], [104, 3], [97, 1], [97, 3], [108, 1], [108, 2], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [109, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [83, 1], [95, 1], [95, 1], [95, 1], [95, 1], [54, 1], [54, 2], [98, 1], [98, 2], [118, 1], [118, 1], [118, 1], [118, 1], [43, 1], [43, 1], [43, 1], [43, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1], [129, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 6:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 8:\n yy.parseDirective(\"}%%\", \"close_directive\", \"flowchart\");\n break;\n case 10:\n this.$ = [];\n break;\n case 11:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 12:\n case 97:\n case 153:\n case 155:\n case 156:\n this.$ = $$[$0];\n break;\n case 19:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 20:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 35:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n this.$ = [];\n break;\n case 41:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 42:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 43:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 45:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 46:\n case 47:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 51:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 52:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 53:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 54:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 55:\n this.$ = [$$[$0]];\n break;\n case 56:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 57:\n this.$ = [$$[$0 - 2]];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 58:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 60:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 61:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 64:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 65:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 67:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 68:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 69:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 70:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 71:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 72:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 74:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 75:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 76:\n case 77:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 78:\n this.$ = $$[$0];\n break;\n case 79:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 80:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 81:\n this.$ = $$[$0 - 1];\n break;\n case 82:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 83:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 84:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 85:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 98:\n case 154:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 99:\n case 100:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 101:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 102:\n case 110:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 103:\n case 111:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 104:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 106:\n case 112:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 107:\n case 113:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 108:\n case 114:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 109:\n case 115:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 116:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 117:\n case 119:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 118:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 120:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 121:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 122:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 123:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 124:\n case 126:\n this.$ = [$$[$0]];\n break;\n case 125:\n case 127:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 129:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 151:\n this.$ = $$[$0];\n break;\n case 152:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 157:\n this.$ = \"v\";\n break;\n case 158:\n this.$ = \"-\";\n break;\n case 159:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 160:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 161:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 162:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, { 1: [3] }, { 1: [2, 1] }, { 3: 10, 4: 2, 5: 3, 6: 5, 12: $V0, 16: 4, 21: $V1, 22: $V2, 24: $V3 }, o($V4, $V5, { 17: 11 }), { 7: 12, 13: [1, 13] }, { 16: 14, 21: $V1, 22: $V2, 24: $V3 }, { 16: 15, 21: $V1, 22: $V2, 24: $V3 }, { 25: [1, 16], 26: [1, 17] }, { 13: [2, 5] }, { 1: [2, 2] }, { 1: [2, 9], 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 87: $Vh, 88: $Vi, 89: $Vj, 90: $Vk, 91: $Vl, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 119: $Vt, 120: $Vu, 121: $Vv, 122: $Vw, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, { 8: 64, 10: [1, 65], 15: $VD }, o([10, 15], [2, 6]), o($V4, [2, 17]), o($V4, [2, 18]), o($V4, [2, 19]), { 20: [1, 68], 21: [1, 69], 22: $VE, 27: 67, 30: 70 }, o($VF, [2, 11]), o($VF, [2, 12]), o($VF, [2, 13]), o($VF, [2, 14]), o($VF, [2, 15]), o($VF, [2, 16]), { 9: 72, 20: $VG, 21: $VH, 23: $VI, 49: 73, 78: 77, 81: [1, 78], 82: [1, 79] }, { 9: 80, 20: $VG, 21: $VH, 23: $VI }, { 9: 81, 20: $VG, 21: $VH, 23: $VI }, { 9: 82, 20: $VG, 21: $VH, 23: $VI }, { 9: 83, 20: $VG, 21: $VH, 23: $VI }, { 9: 84, 20: $VG, 21: $VH, 23: $VI }, { 9: 86, 20: $VG, 21: $VH, 22: [1, 85], 23: $VI }, o($VF, [2, 44]), { 45: [1, 87] }, { 47: [1, 88] }, o($VF, [2, 47]), o($VJ, [2, 54], { 30: 89, 22: $VE }), { 22: [1, 90] }, { 22: [1, 91] }, { 22: [1, 92] }, { 22: [1, 93] }, { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 84: [1, 97], 92: $VO, 98: 96, 99: [1, 94], 101: [1, 95], 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($VF, [2, 159]), o($VF, [2, 160]), o($VF, [2, 161]), o($VF, [2, 162]), o($V_, [2, 55], { 53: [1, 116] }), o($V$, [2, 74], { 117: 129, 40: [1, 117], 52: $Ve, 55: [1, 118], 57: [1, 119], 59: [1, 120], 61: [1, 121], 63: [1, 122], 65: [1, 123], 66: $Vf, 67: $Vg, 69: [1, 124], 71: [1, 125], 73: [1, 126], 74: [1, 127], 76: [1, 128], 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }), o($V01, [2, 151]), o($V01, [2, 176]), o($V01, [2, 177]), o($V01, [2, 178]), o($V01, [2, 179]), o($V01, [2, 180]), o($V01, [2, 181]), o($V01, [2, 182]), o($V01, [2, 183]), o($V01, [2, 184]), o($V01, [2, 185]), o($V01, [2, 186]), o($V01, [2, 187]), o($V01, [2, 188]), o($V01, [2, 189]), o($V01, [2, 190]), o($V01, [2, 191]), { 9: 130, 20: $VG, 21: $VH, 23: $VI }, { 11: 131, 14: [1, 132] }, o($V11, [2, 8]), o($V4, [2, 20]), o($V4, [2, 26]), o($V4, [2, 27]), { 21: [1, 133] }, o($V21, [2, 34], { 30: 134, 22: $VE }), o($VF, [2, 35]), { 50: 135, 51: 45, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, o($V31, [2, 48]), o($V31, [2, 49]), o($V31, [2, 50]), o($V41, [2, 78], { 79: 136, 68: [1, 138], 80: [1, 137] }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 139, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o([52, 66, 67, 68, 80, 92, 96, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], [2, 80]), o($VF, [2, 36]), o($VF, [2, 37]), o($VF, [2, 38]), o($VF, [2, 39]), o($VF, [2, 40]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 164, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($Vp1, $V5, { 17: 165 }), o($VF, [2, 45]), o($VF, [2, 46]), o($VJ, [2, 53], { 52: $Vq1 }), { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 98: 167, 103: [1, 168], 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 96: [1, 169], 104: 170, 106: [1, 171] }, { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 96: [1, 172], 98: 173, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 98: 174, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V11, [2, 102], { 22: [1, 175], 100: [1, 176] }), o($V11, [2, 106], { 22: [1, 177] }), o($V11, [2, 110], { 116: 100, 118: 179, 22: [1, 178], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }), o($V11, [2, 112], { 22: [1, 180] }), o($Vr1, [2, 153]), o($Vr1, [2, 155]), o($Vr1, [2, 156]), o($Vr1, [2, 157]), o($Vr1, [2, 158]), o($Vs1, [2, 163]), o($Vs1, [2, 164]), o($Vs1, [2, 165]), o($Vs1, [2, 166]), o($Vs1, [2, 167]), o($Vs1, [2, 168]), o($Vs1, [2, 169]), o($Vs1, [2, 170]), o($Vs1, [2, 171]), o($Vs1, [2, 172]), o($Vs1, [2, 173]), o($Vs1, [2, 174]), o($Vs1, [2, 175]), { 52: $Ve, 54: 181, 66: $Vf, 67: $Vg, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 182, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 183, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 185, 42: $V91, 52: $VL, 57: [1, 184], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 186, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 187, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 188, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 66: [1, 189] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 190, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 191, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 71: [1, 192], 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 193, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 194, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 195, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V01, [2, 152]), o($Vt1, [2, 3]), { 8: 196, 15: $VD }, { 15: [2, 7] }, o($V4, [2, 28]), o($V21, [2, 33]), o($VJ, [2, 51], { 30: 197, 22: $VE }), o($V41, [2, 75], { 22: [1, 198] }), { 22: [1, 199] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 200, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 82: [1, 201], 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($Vs1, [2, 82]), o($Vs1, [2, 84]), o($Vs1, [2, 85]), o($Vs1, [2, 141]), o($Vs1, [2, 142]), o($Vs1, [2, 143]), o($Vs1, [2, 144]), o($Vs1, [2, 145]), o($Vs1, [2, 146]), o($Vs1, [2, 147]), o($Vs1, [2, 148]), o($Vs1, [2, 149]), o($Vs1, [2, 150]), o($Vs1, [2, 86]), o($Vs1, [2, 87]), o($Vs1, [2, 88]), o($Vs1, [2, 89]), o($Vs1, [2, 90]), o($Vs1, [2, 91]), o($Vs1, [2, 92]), o($Vs1, [2, 93]), o($Vs1, [2, 94]), o($Vs1, [2, 95]), o($Vs1, [2, 96]), { 9: 204, 20: $VG, 21: $VH, 22: $V51, 23: $VI, 24: $V61, 26: $V71, 38: $V81, 40: [1, 203], 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 205], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 87: $Vh, 88: $Vi, 89: $Vj, 90: $Vk, 91: $Vl, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 119: $Vt, 120: $Vu, 121: $Vv, 122: $Vw, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, { 22: $VE, 30: 206 }, { 22: [1, 207], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 179, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: [1, 208] }, { 22: [1, 209] }, { 22: [1, 210], 107: [1, 211] }, o($Vu1, [2, 124]), { 22: [1, 212] }, { 22: [1, 213], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 179, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: [1, 214], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 179, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 84: [1, 215] }, o($V11, [2, 104], { 22: [1, 216] }), { 84: [1, 217], 102: [1, 218] }, { 84: [1, 219] }, o($Vr1, [2, 154]), { 84: [1, 220], 102: [1, 221] }, o($V_, [2, 57], { 117: 129, 52: $Ve, 66: $Vf, 67: $Vg, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 222], 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 56: [1, 223], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 224, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 58: [1, 225], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 60: [1, 226], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 62: [1, 227], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 64: [1, 228], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 67: [1, 229] }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 70: [1, 230], 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 72: [1, 231], 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 232, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 233], 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 75: [1, 234], 77: [1, 235], 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 75: [1, 237], 77: [1, 236], 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 9: 238, 20: $VG, 21: $VH, 23: $VI }, o($VJ, [2, 52], { 52: $Vq1 }), o($V41, [2, 77]), o($V41, [2, 76]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 68: [1, 239], 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V41, [2, 79]), o($Vs1, [2, 83]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 240, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($Vp1, $V5, { 17: 241 }), o($VF, [2, 43]), { 51: 242, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 243, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 257, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 258, 103: $Vz1, 105: [1, 259], 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 260, 103: $Vz1, 105: [1, 261], 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 106: [1, 262] }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 263, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 264, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 98: 265, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V11, [2, 103]), { 84: [1, 266] }, o($V11, [2, 107], { 22: [1, 267] }), o($V11, [2, 108]), o($V11, [2, 111]), o($V11, [2, 113], { 22: [1, 268] }), o($V11, [2, 114]), o($V$, [2, 58]), o($V$, [2, 59]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 58: [1, 269], 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V$, [2, 66]), o($V$, [2, 61]), o($V$, [2, 62]), o($V$, [2, 63]), { 66: [1, 270] }, o($V$, [2, 65]), o($V$, [2, 67]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 72: [1, 271], 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V$, [2, 69]), o($V$, [2, 70]), o($V$, [2, 72]), o($V$, [2, 71]), o($V$, [2, 73]), o($Vt1, [2, 4]), o([22, 52, 66, 67, 92, 96, 106, 107, 110, 112, 113, 123, 124, 125, 126, 127, 128], [2, 81]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 272], 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 273], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 87: $Vh, 88: $Vi, 89: $Vj, 90: $Vk, 91: $Vl, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 119: $Vt, 120: $Vu, 121: $Vv, 122: $Vw, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, o($V_, [2, 56]), o($V11, [2, 116], { 107: $VG1 }), o($VH1, [2, 126], { 109: 275, 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 103: $Vz1, 106: $VA1, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }), o($VI1, [2, 128]), o($VI1, [2, 130]), o($VI1, [2, 131]), o($VI1, [2, 132]), o($VI1, [2, 133]), o($VI1, [2, 134]), o($VI1, [2, 135]), o($VI1, [2, 136]), o($VI1, [2, 137]), o($VI1, [2, 138]), o($VI1, [2, 139]), o($VI1, [2, 140]), o($V11, [2, 117], { 107: $VG1 }), o($V11, [2, 118], { 107: $VG1 }), { 22: [1, 276] }, o($V11, [2, 119], { 107: $VG1 }), { 22: [1, 277] }, o($Vu1, [2, 125]), o($V11, [2, 99], { 107: $VG1 }), o($V11, [2, 100], { 107: $VG1 }), o($V11, [2, 101], { 116: 100, 118: 179, 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }), o($V11, [2, 105]), { 102: [1, 278] }, { 102: [1, 279] }, { 58: [1, 280] }, { 68: [1, 281] }, { 72: [1, 282] }, { 9: 283, 20: $VG, 21: $VH, 23: $VI }, o($VF, [2, 42]), { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 103: $Vz1, 106: $VA1, 108: 284, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, o($VI1, [2, 129]), { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 98: 285, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 98: 286, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 116: 100, 118: 98, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V11, [2, 109]), o($V11, [2, 115]), o($V$, [2, 60]), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 39: 287, 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 140, 84: $Vc1, 85: $Vd1, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, o($V$, [2, 68]), o($Vp1, $V5, { 17: 288 }), o($VH1, [2, 127], { 109: 275, 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 103: $Vz1, 106: $VA1, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }), o($V11, [2, 122], { 116: 100, 118: 179, 22: [1, 289], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }), o($V11, [2, 123], { 116: 100, 118: 179, 22: [1, 290], 26: $VK, 52: $VL, 66: $VM, 67: $VN, 92: $VO, 106: $VP, 107: $VQ, 110: $VR, 112: $VS, 113: $VT, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }), { 22: $V51, 24: $V61, 26: $V71, 38: $V81, 41: [1, 291], 42: $V91, 52: $VL, 66: $VM, 67: $VN, 73: $Va1, 81: $Vb1, 83: 202, 86: 152, 87: $Ve1, 88: $Vf1, 89: $Vg1, 90: $Vh1, 91: $Vi1, 92: $Vj1, 93: $Vk1, 95: 143, 96: $Vl1, 106: $VP, 107: $VQ, 110: $Vm1, 112: $VS, 113: $VT, 114: $Vn1, 115: $Vo1, 116: 149, 123: $VU, 124: $VV, 125: $VW, 126: $VX, 127: $VY, 128: $VZ }, { 18: 18, 19: 19, 20: $V6, 21: $V7, 22: $V8, 23: $V9, 32: 24, 33: 25, 34: 26, 35: 27, 36: 28, 37: 29, 38: $Va, 42: [1, 292], 43: 31, 44: $Vb, 46: $Vc, 48: $Vd, 50: 35, 51: 45, 52: $Ve, 54: 46, 66: $Vf, 67: $Vg, 87: $Vh, 88: $Vi, 89: $Vj, 90: $Vk, 91: $Vl, 92: $Vm, 96: $Vn, 106: $Vo, 107: $Vp, 110: $Vq, 112: $Vr, 113: $Vs, 117: 47, 119: $Vt, 120: $Vu, 121: $Vv, 122: $Vw, 123: $Vx, 124: $Vy, 125: $Vz, 126: $VA, 127: $VB, 128: $VC }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 293, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, { 22: $Vv1, 66: $Vw1, 67: $Vx1, 87: $Vy1, 97: 294, 103: $Vz1, 106: $VA1, 108: 244, 109: 245, 110: $VB1, 111: $VC1, 112: $VD1, 113: $VE1, 114: $VF1 }, o($V$, [2, 64]), o($VF, [2, 41]), o($V11, [2, 120], { 107: $VG1 }), o($V11, [2, 121], { 107: $VG1 })],\n defaultActions: { 2: [2, 1], 9: [2, 5], 10: [2, 2], 132: [2, 7] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex2() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex2();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 12;\n case 1:\n this.begin(\"type_directive\");\n return 13;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 10;\n case 3:\n this.popState();\n this.popState();\n return 15;\n case 4:\n return 14;\n case 5:\n this.begin(\"acc_title\");\n return 44;\n case 6:\n this.popState();\n return \"acc_title_value\";\n case 7:\n this.begin(\"acc_descr\");\n return 46;\n case 8:\n this.popState();\n return \"acc_descr_value\";\n case 9:\n this.begin(\"acc_descr_multiline\");\n break;\n case 10:\n this.popState();\n break;\n case 11:\n return \"acc_descr_multiline_value\";\n case 12:\n this.begin(\"md_string\");\n break;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"string\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"STR\";\n case 18:\n return 87;\n case 19:\n return 96;\n case 20:\n return 88;\n case 21:\n return 105;\n case 22:\n return 89;\n case 23:\n return 90;\n case 24:\n this.begin(\"href\");\n break;\n case 25:\n this.popState();\n break;\n case 26:\n return 101;\n case 27:\n this.begin(\"callbackname\");\n break;\n case 28:\n this.popState();\n break;\n case 29:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 30:\n return 99;\n case 31:\n this.popState();\n break;\n case 32:\n return 100;\n case 33:\n this.begin(\"click\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return 91;\n case 36:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 37:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 38:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 24;\n case 39:\n return 38;\n case 40:\n return 42;\n case 41:\n return 102;\n case 42:\n return 102;\n case 43:\n return 102;\n case 44:\n return 102;\n case 45:\n this.popState();\n return 25;\n case 46:\n this.popState();\n return 26;\n case 47:\n this.popState();\n return 26;\n case 48:\n this.popState();\n return 26;\n case 49:\n this.popState();\n return 26;\n case 50:\n this.popState();\n return 26;\n case 51:\n this.popState();\n return 26;\n case 52:\n this.popState();\n return 26;\n case 53:\n this.popState();\n return 26;\n case 54:\n this.popState();\n return 26;\n case 55:\n this.popState();\n return 26;\n case 56:\n return 119;\n case 57:\n return 120;\n case 58:\n return 121;\n case 59:\n return 122;\n case 60:\n return 106;\n case 61:\n return 112;\n case 62:\n return 53;\n case 63:\n return 67;\n case 64:\n return 52;\n case 65:\n return 20;\n case 66:\n return 107;\n case 67:\n return 127;\n case 68:\n return 82;\n case 69:\n return 82;\n case 70:\n return 82;\n case 71:\n return 82;\n case 72:\n return 81;\n case 73:\n return 81;\n case 74:\n return 81;\n case 75:\n return 59;\n case 76:\n return 60;\n case 77:\n return 61;\n case 78:\n return 62;\n case 79:\n return 63;\n case 80:\n return 64;\n case 81:\n return 65;\n case 82:\n return 69;\n case 83:\n return 70;\n case 84:\n return 55;\n case 85:\n return 56;\n case 86:\n return 110;\n case 87:\n return 113;\n case 88:\n return 128;\n case 89:\n return 125;\n case 90:\n return 114;\n case 91:\n return 126;\n case 92:\n return 126;\n case 93:\n return 115;\n case 94:\n return 73;\n case 95:\n return 93;\n case 96:\n return \"SEP\";\n case 97:\n return 92;\n case 98:\n return 66;\n case 99:\n return 75;\n case 100:\n return 74;\n case 101:\n return 77;\n case 102:\n return 76;\n case 103:\n return 123;\n case 104:\n return 124;\n case 105:\n return 68;\n case 106:\n return 57;\n case 107:\n return 58;\n case 108:\n return 40;\n case 109:\n return 41;\n case 110:\n return 71;\n case 111:\n return 72;\n case 112:\n return 134;\n case 113:\n return 21;\n case 114:\n return 22;\n case 115:\n return 23;\n }\n },\n rules: [/^(?:%%\\{)/, /^(?:((?:(?!\\}%%)[^:.])*))/, /^(?::)/, /^(?:\\}%%)/, /^(?:((?:(?!\\}%%).|\\n)*))/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:[\"][`])/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s]+[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:\\(-)/, /^(?:-\\))/, /^(?:\\(\\[)/, /^(?:\\]\\))/, /^(?:\\[\\[)/, /^(?:\\]\\])/, /^(?:\\[\\|)/, /^(?:\\[\\()/, /^(?:\\)\\])/, /^(?:\\(\\(\\()/, /^(?:\\)\\)\\))/, /^(?:-)/, /^(?:\\.)/, /^(?:[\\_])/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:[A-Za-z]+)/, /^(?:\\\\\\])/, /^(?:\\[\\/)/, /^(?:\\/\\])/, /^(?:\\[\\\\)/, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\()/, /^(?:\\))/, /^(?:\\[)/, /^(?:\\])/, /^(?:\\{)/, /^(?:\\})/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"callbackargs\": { \"rules\": [31, 32], \"inclusive\": false }, \"callbackname\": { \"rules\": [28, 29, 30], \"inclusive\": false }, \"href\": { \"rules\": [25, 26], \"inclusive\": false }, \"click\": { \"rules\": [34, 35], \"inclusive\": false }, \"vertex\": { \"rules\": [], \"inclusive\": false }, \"dir\": { \"rules\": [45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [10, 11], \"inclusive\": false }, \"acc_descr\": { \"rules\": [8], \"inclusive\": false }, \"acc_title\": { \"rules\": [6], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14], \"inclusive\": false }, \"string\": { \"rules\": [16, 17], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 7, 9, 12, 15, 18, 19, 20, 21, 22, 23, 24, 27, 33, 36, 37, 38, 39, 40, 41, 42, 43, 44, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.e.sanitizeText(txt, config);\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.m.parseDirective(this, statement, context, type);\n};\nconst lookUpDomId = function(id) {\n const veritceKeys = Object.keys(vertices);\n for (const veritceKey of veritceKeys) {\n if (vertices[veritceKey].id === id) {\n return vertices[veritceKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n edges.push(edge);\n};\nconst addLink = function(_start, _end, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"addLink (abc78)\", _start, _end, type);\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type);\n }\n }\n};\nconst updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultStyle = style;\n } else {\n if (_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.isSubstringInArray(\"fill\", style) === -1) {\n style.push(\"fill:none\");\n }\n edges[pos].style = style;\n }\n });\n};\nconst addClass = function(id, style) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle1 = s.replace(\"fill\", \"bgFill\");\n const newStyle2 = newStyle1.replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle2);\n }\n classes[id].styles.push(s);\n });\n }\n};\nconst setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*/)) {\n direction = \"LR\";\n }\n if (direction.match(/.*v/)) {\n direction = \"TB\";\n }\n if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n return tooltips[id];\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n version = ver;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.v)();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n parseDirective,\n defaultConfig: () => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.G.flowchart,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.g,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.b,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.t\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n parseDirective,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9mbG93RGItNmE1N2MxYjQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBNEI7QUFDaVA7QUFDN1E7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQix3d0VBQXd3RTtBQUN4eEUsa0JBQWtCLDQ3Q0FBNDdDO0FBQzk4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsdUJBQXVCLGtCQUFrQixnQ0FBZ0Msb0JBQW9CLGdJQUFnSSxlQUFlLGNBQWMsMDRCQUEwNEIsNjVKQUE2NUosV0FBVztBQUM1aU0sb0JBQW9CLHFCQUFxQixpQ0FBaUMscUJBQXFCLHFDQUFxQyxzQkFBc0IscUNBQXFDLHNCQUFzQixrQ0FBa0Msb0JBQW9CLHVDQUF1QyxvQkFBb0IsMkNBQTJDLFlBQVksdUNBQXVDLGFBQWEsdUNBQXVDLGNBQWMsaUNBQWlDLFdBQVcsMkVBQTJFLDJCQUEyQix1Q0FBdUMsaUJBQWlCLGtDQUFrQyxpQkFBaUIsa0NBQWtDLGlCQUFpQix1Q0FBdUMsY0FBYyx1Q0FBdUMsZUFBZTtBQUNqNEI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixnRUFBbUI7QUFDakQ7QUFDQSxFQUFFLGtFQUF5QjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtFQUErRTtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsdURBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsRUFBRSx3REFBUTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3REFBUTtBQUNWO0FBQ0EsY0FBYyxtQkFBbUI7QUFDakMsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTixVQUFVLHNFQUF3QjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdURBQVM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxFQUFFO0FBQ3RELG9CQUFvQixvQkFBb0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBa0QsTUFBTTtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkRBQWE7QUFDekIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDZEQUFlO0FBQ3pDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMENBQU07QUFDMUI7QUFDQSxrQkFBa0IsMENBQU07QUFDeEI7QUFDQSxjQUFjLDBDQUFNO0FBQ3BCO0FBQ0E7QUFDQSxlQUFlLDBDQUFNO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELFFBQVE7QUFDN0Q7QUFDQSxHQUFHO0FBQ0g7QUFDQSxlQUFlLDBDQUFNO0FBQ3JCO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBTztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYyxtQkFBbUIsdUJBQXVCLFVBQVUsYUFBYTtBQUNuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVcsWUFBWTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBO0FBQ0EsVUFBVSxvQkFBb0I7QUFDOUI7QUFDQTtBQUNBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3REFBUTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLFlBQVk7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNkRBQXVCO0FBQzlDLGFBQWE7QUFDYixhQUFhO0FBQ2IsbUJBQW1CO0FBQ25CLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsd0JBQXdCLGlCQUFpQjtBQUt4QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2Zsb3dEYi02YTU3YzFiNC5qcz9jNWM5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlbGVjdCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgRyBhcyBkZWZhdWx0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIGMgYXMgZ2V0Q29uZmlnLCBtIGFzIG1lcm1haWRBUEksIGwgYXMgbG9nLCB1IGFzIHV0aWxzLCB2IGFzIGNsZWFyJDEsIGUgYXMgY29tbW9uIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xudmFyIHBhcnNlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbyA9IGZ1bmN0aW9uKGssIHYsIG8yLCBsKSB7XG4gICAgZm9yIChvMiA9IG8yIHx8IHt9LCBsID0gay5sZW5ndGg7IGwtLTsgbzJba1tsXV0gPSB2KVxuICAgICAgO1xuICAgIHJldHVybiBvMjtcbiAgfSwgJFYwID0gWzEsIDldLCAkVjEgPSBbMSwgN10sICRWMiA9IFsxLCA2XSwgJFYzID0gWzEsIDhdLCAkVjQgPSBbMSwgMjAsIDIxLCAyMiwgMjMsIDM4LCA0NCwgNDYsIDQ4LCA1MiwgNjYsIDY3LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sICRWNSA9IFsyLCAxMF0sICRWNiA9IFsxLCAyMF0sICRWNyA9IFsxLCAyMV0sICRWOCA9IFsxLCAyMl0sICRWOSA9IFsxLCAyM10sICRWYSA9IFsxLCAzMF0sICRWYiA9IFsxLCAzMl0sICRWYyA9IFsxLCAzM10sICRWZCA9IFsxLCAzNF0sICRWZSA9IFsxLCA2Ml0sICRWZiA9IFsxLCA0OF0sICRWZyA9IFsxLCA1Ml0sICRWaCA9IFsxLCAzNl0sICRWaSA9IFsxLCAzN10sICRWaiA9IFsxLCAzOF0sICRWayA9IFsxLCAzOV0sICRWbCA9IFsxLCA0MF0sICRWbSA9IFsxLCA1Nl0sICRWbiA9IFsxLCA2M10sICRWbyA9IFsxLCA1MV0sICRWcCA9IFsxLCA1M10sICRWcSA9IFsxLCA1NV0sICRWciA9IFsxLCA1OV0sICRWcyA9IFsxLCA2MF0sICRWdCA9IFsxLCA0MV0sICRWdSA9IFsxLCA0Ml0sICRWdiA9IFsxLCA0M10sICRWdyA9IFsxLCA0NF0sICRWeCA9IFsxLCA2MV0sICRWeSA9IFsxLCA1MF0sICRWeiA9IFsxLCA1NF0sICRWQSA9IFsxLCA1N10sICRWQiA9IFsxLCA1OF0sICRWQyA9IFsxLCA0OV0sICRWRCA9IFsxLCA2Nl0sICRWRSA9IFsxLCA3MV0sICRWRiA9IFsxLCAyMCwgMjEsIDIyLCAyMywgMzgsIDQyLCA0NCwgNDYsIDQ4LCA1MiwgNjYsIDY3LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sICRWRyA9IFsxLCA3NV0sICRWSCA9IFsxLCA3NF0sICRWSSA9IFsxLCA3Nl0sICRWSiA9IFsyMCwgMjEsIDIzLCA4MSwgODJdLCAkVksgPSBbMSwgOTldLCAkVkwgPSBbMSwgMTA0XSwgJFZNID0gWzEsIDEwN10sICRWTiA9IFsxLCAxMDhdLCAkVk8gPSBbMSwgMTAxXSwgJFZQID0gWzEsIDEwNl0sICRWUSA9IFsxLCAxMDldLCAkVlIgPSBbMSwgMTAyXSwgJFZTID0gWzEsIDExNF0sICRWVCA9IFsxLCAxMTNdLCAkVlUgPSBbMSwgMTAzXSwgJFZWID0gWzEsIDEwNV0sICRWVyA9IFsxLCAxMTBdLCAkVlggPSBbMSwgMTExXSwgJFZZID0gWzEsIDExMl0sICRWWiA9IFsxLCAxMTVdLCAkVl8gPSBbMjAsIDIxLCAyMiwgMjMsIDgxLCA4Ml0sICRWJCA9IFsyMCwgMjEsIDIyLCAyMywgNTMsIDgxLCA4Ml0sICRWMDEgPSBbMjAsIDIxLCAyMiwgMjMsIDQwLCA1MiwgNTMsIDU1LCA1NywgNTksIDYxLCA2MywgNjUsIDY2LCA2NywgNjksIDcxLCA3MywgNzQsIDc2LCA4MSwgODIsIDkyLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjhdLCAkVjExID0gWzIwLCAyMSwgMjNdLCAkVjIxID0gWzIwLCAyMSwgMjMsIDUyLCA2NiwgNjcsIDgxLCA4MiwgOTIsIDk2LCAxMDYsIDEwNywgMTEwLCAxMTIsIDExMywgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sICRWMzEgPSBbMSwgMTIsIDIwLCAyMSwgMjIsIDIzLCAyNCwgMzgsIDQyLCA0NCwgNDYsIDQ4LCA1MiwgNjYsIDY3LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sICRWNDEgPSBbNTIsIDY2LCA2NywgOTIsIDk2LCAxMDYsIDEwNywgMTEwLCAxMTIsIDExMywgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sICRWNTEgPSBbMSwgMTUwXSwgJFY2MSA9IFsxLCAxNThdLCAkVjcxID0gWzEsIDE1OV0sICRWODEgPSBbMSwgMTYwXSwgJFY5MSA9IFsxLCAxNjFdLCAkVmExID0gWzEsIDE0NV0sICRWYjEgPSBbMSwgMTQ2XSwgJFZjMSA9IFsxLCAxNDFdLCAkVmQxID0gWzEsIDE0Ml0sICRWZTEgPSBbMSwgMTUzXSwgJFZmMSA9IFsxLCAxNTRdLCAkVmcxID0gWzEsIDE1NV0sICRWaDEgPSBbMSwgMTU2XSwgJFZpMSA9IFsxLCAxNTddLCAkVmoxID0gWzEsIDE2Ml0sICRWazEgPSBbMSwgMTYzXSwgJFZsMSA9IFsxLCAxNDhdLCAkVm0xID0gWzEsIDE1MV0sICRWbjEgPSBbMSwgMTQ3XSwgJFZvMSA9IFsxLCAxNDRdLCAkVnAxID0gWzIwLCAyMSwgMjIsIDIzLCAzOCwgNDIsIDQ0LCA0NiwgNDgsIDUyLCA2NiwgNjcsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDk2LCAxMDYsIDEwNywgMTEwLCAxMTIsIDExMywgMTE5LCAxMjAsIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4XSwgJFZxMSA9IFsxLCAxNjZdLCAkVnIxID0gWzIwLCAyMSwgMjIsIDIzLCAyNiwgNTIsIDY2LCA2NywgOTIsIDEwNiwgMTA3LCAxMTAsIDExMiwgMTEzLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4XSwgJFZzMSA9IFsyMCwgMjEsIDIyLCAyMywgMjQsIDI2LCAzOCwgNDAsIDQxLCA0MiwgNTIsIDU2LCA1OCwgNjAsIDYyLCA2NCwgNjYsIDY3LCA2OCwgNzAsIDcyLCA3MywgNzUsIDc3LCA4MSwgODIsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4XSwgJFZ0MSA9IFsxMiwgMjEsIDIyLCAyNF0sICRWdTEgPSBbMjIsIDEwN10sICRWdjEgPSBbMSwgMjUxXSwgJFZ3MSA9IFsxLCAyNDZdLCAkVngxID0gWzEsIDI0N10sICRWeTEgPSBbMSwgMjU1XSwgJFZ6MSA9IFsxLCAyNTJdLCAkVkExID0gWzEsIDI0OV0sICRWQjEgPSBbMSwgMjQ4XSwgJFZDMSA9IFsxLCAyNTBdLCAkVkQxID0gWzEsIDI1M10sICRWRTEgPSBbMSwgMjU0XSwgJFZGMSA9IFsxLCAyNTZdLCAkVkcxID0gWzEsIDI3NF0sICRWSDEgPSBbMjAsIDIxLCAyMywgMTA3XSwgJFZJMSA9IFsyMCwgMjEsIDIyLCAyMywgNjYsIDY3LCA4NywgMTAzLCAxMDYsIDEwNywgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTRdO1xuICB2YXIgcGFyc2VyMiA9IHtcbiAgICB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7XG4gICAgfSxcbiAgICB5eToge30sXG4gICAgc3ltYm9sc186IHsgXCJlcnJvclwiOiAyLCBcInN0YXJ0XCI6IDMsIFwibWVybWFpZERvY1wiOiA0LCBcImRpcmVjdGl2ZVwiOiA1LCBcIm9wZW5EaXJlY3RpdmVcIjogNiwgXCJ0eXBlRGlyZWN0aXZlXCI6IDcsIFwiY2xvc2VEaXJlY3RpdmVcIjogOCwgXCJzZXBhcmF0b3JcIjogOSwgXCI6XCI6IDEwLCBcImFyZ0RpcmVjdGl2ZVwiOiAxMSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiAxMiwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiAxMywgXCJhcmdfZGlyZWN0aXZlXCI6IDE0LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiAxNSwgXCJncmFwaENvbmZpZ1wiOiAxNiwgXCJkb2N1bWVudFwiOiAxNywgXCJsaW5lXCI6IDE4LCBcInN0YXRlbWVudFwiOiAxOSwgXCJTRU1JXCI6IDIwLCBcIk5FV0xJTkVcIjogMjEsIFwiU1BBQ0VcIjogMjIsIFwiRU9GXCI6IDIzLCBcIkdSQVBIXCI6IDI0LCBcIk5PRElSXCI6IDI1LCBcIkRJUlwiOiAyNiwgXCJGaXJzdFN0bXRTZXBlcmF0b3JcIjogMjcsIFwiZW5kaW5nXCI6IDI4LCBcImVuZFRva2VuXCI6IDI5LCBcInNwYWNlTGlzdFwiOiAzMCwgXCJzcGFjZUxpc3ROZXdsaW5lXCI6IDMxLCBcInZlcnRpY2VTdGF0ZW1lbnRcIjogMzIsIFwic3R5bGVTdGF0ZW1lbnRcIjogMzMsIFwibGlua1N0eWxlU3RhdGVtZW50XCI6IDM0LCBcImNsYXNzRGVmU3RhdGVtZW50XCI6IDM1LCBcImNsYXNzU3RhdGVtZW50XCI6IDM2LCBcImNsaWNrU3RhdGVtZW50XCI6IDM3LCBcInN1YmdyYXBoXCI6IDM4LCBcInRleHRcIjogMzksIFwiU1FTXCI6IDQwLCBcIlNRRVwiOiA0MSwgXCJlbmRcIjogNDIsIFwiZGlyZWN0aW9uXCI6IDQzLCBcImFjY190aXRsZVwiOiA0NCwgXCJhY2NfdGl0bGVfdmFsdWVcIjogNDUsIFwiYWNjX2Rlc2NyXCI6IDQ2LCBcImFjY19kZXNjcl92YWx1ZVwiOiA0NywgXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI6IDQ4LCBcImxpbmtcIjogNDksIFwibm9kZVwiOiA1MCwgXCJ2ZXJ0ZXhcIjogNTEsIFwiQU1QXCI6IDUyLCBcIlNUWUxFX1NFUEFSQVRPUlwiOiA1MywgXCJpZFN0cmluZ1wiOiA1NCwgXCJET1VCTEVDSVJDTEVTVEFSVFwiOiA1NSwgXCJET1VCTEVDSVJDTEVFTkRcIjogNTYsIFwiUFNcIjogNTcsIFwiUEVcIjogNTgsIFwiKC1cIjogNTksIFwiLSlcIjogNjAsIFwiU1RBRElVTVNUQVJUXCI6IDYxLCBcIlNUQURJVU1FTkRcIjogNjIsIFwiU1VCUk9VVElORVNUQVJUXCI6IDYzLCBcIlNVQlJPVVRJTkVFTkRcIjogNjQsIFwiVkVSVEVYX1dJVEhfUFJPUFNfU1RBUlRcIjogNjUsIFwiQUxQSEFcIjogNjYsIFwiQ09MT05cIjogNjcsIFwiUElQRVwiOiA2OCwgXCJDWUxJTkRFUlNUQVJUXCI6IDY5LCBcIkNZTElOREVSRU5EXCI6IDcwLCBcIkRJQU1PTkRfU1RBUlRcIjogNzEsIFwiRElBTU9ORF9TVE9QXCI6IDcyLCBcIlRBR0VORFwiOiA3MywgXCJUUkFQU1RBUlRcIjogNzQsIFwiVFJBUEVORFwiOiA3NSwgXCJJTlZUUkFQU1RBUlRcIjogNzYsIFwiSU5WVFJBUEVORFwiOiA3NywgXCJsaW5rU3RhdGVtZW50XCI6IDc4LCBcImFycm93VGV4dFwiOiA3OSwgXCJURVNUU1RSXCI6IDgwLCBcIlNUQVJUX0xJTktcIjogODEsIFwiTElOS1wiOiA4MiwgXCJ0ZXh0VG9rZW5cIjogODMsIFwiU1RSXCI6IDg0LCBcIk1EX1NUUlwiOiA4NSwgXCJrZXl3b3Jkc1wiOiA4NiwgXCJTVFlMRVwiOiA4NywgXCJMSU5LU1RZTEVcIjogODgsIFwiQ0xBU1NERUZcIjogODksIFwiQ0xBU1NcIjogOTAsIFwiQ0xJQ0tcIjogOTEsIFwiRE9XTlwiOiA5MiwgXCJVUFwiOiA5MywgXCJ0ZXh0Tm9UYWdzXCI6IDk0LCBcInRleHROb1RhZ3NUb2tlblwiOiA5NSwgXCJERUZBVUxUXCI6IDk2LCBcInN0eWxlc09wdFwiOiA5NywgXCJhbHBoYU51bVwiOiA5OCwgXCJDQUxMQkFDS05BTUVcIjogOTksIFwiQ0FMTEJBQ0tBUkdTXCI6IDEwMCwgXCJIUkVGXCI6IDEwMSwgXCJMSU5LX1RBUkdFVFwiOiAxMDIsIFwiSEVYXCI6IDEwMywgXCJudW1MaXN0XCI6IDEwNCwgXCJJTlRFUlBPTEFURVwiOiAxMDUsIFwiTlVNXCI6IDEwNiwgXCJDT01NQVwiOiAxMDcsIFwic3R5bGVcIjogMTA4LCBcInN0eWxlQ29tcG9uZW50XCI6IDEwOSwgXCJNSU5VU1wiOiAxMTAsIFwiVU5JVFwiOiAxMTEsIFwiQlJLVFwiOiAxMTIsIFwiRE9UXCI6IDExMywgXCJQQ1RcIjogMTE0LCBcIlRBR1NUQVJUXCI6IDExNSwgXCJhbHBoYU51bVRva2VuXCI6IDExNiwgXCJpZFN0cmluZ1Rva2VuXCI6IDExNywgXCJhbHBoYU51bVN0YXRlbWVudFwiOiAxMTgsIFwiZGlyZWN0aW9uX3RiXCI6IDExOSwgXCJkaXJlY3Rpb25fYnRcIjogMTIwLCBcImRpcmVjdGlvbl9ybFwiOiAxMjEsIFwiZGlyZWN0aW9uX2xyXCI6IDEyMiwgXCJQVU5DVFVBVElPTlwiOiAxMjMsIFwiVU5JQ09ERV9URVhUXCI6IDEyNCwgXCJQTFVTXCI6IDEyNSwgXCJFUVVBTFNcIjogMTI2LCBcIk1VTFRcIjogMTI3LCBcIlVOREVSU0NPUkVcIjogMTI4LCBcImdyYXBoQ29kZVRva2Vuc1wiOiAxMjksIFwiQVJST1dfQ1JPU1NcIjogMTMwLCBcIkFSUk9XX1BPSU5UXCI6IDEzMSwgXCJBUlJPV19DSVJDTEVcIjogMTMyLCBcIkFSUk9XX09QRU5cIjogMTMzLCBcIlFVT1RFXCI6IDEzNCwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDEwOiBcIjpcIiwgMTI6IFwib3Blbl9kaXJlY3RpdmVcIiwgMTM6IFwidHlwZV9kaXJlY3RpdmVcIiwgMTQ6IFwiYXJnX2RpcmVjdGl2ZVwiLCAxNTogXCJjbG9zZV9kaXJlY3RpdmVcIiwgMjA6IFwiU0VNSVwiLCAyMTogXCJORVdMSU5FXCIsIDIyOiBcIlNQQUNFXCIsIDIzOiBcIkVPRlwiLCAyNDogXCJHUkFQSFwiLCAyNTogXCJOT0RJUlwiLCAyNjogXCJESVJcIiwgMzg6IFwic3ViZ3JhcGhcIiwgNDA6IFwiU1FTXCIsIDQxOiBcIlNRRVwiLCA0MjogXCJlbmRcIiwgNDQ6IFwiYWNjX3RpdGxlXCIsIDQ1OiBcImFjY190aXRsZV92YWx1ZVwiLCA0NjogXCJhY2NfZGVzY3JcIiwgNDc6IFwiYWNjX2Rlc2NyX3ZhbHVlXCIsIDQ4OiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIiwgNTI6IFwiQU1QXCIsIDUzOiBcIlNUWUxFX1NFUEFSQVRPUlwiLCA1NTogXCJET1VCTEVDSVJDTEVTVEFSVFwiLCA1NjogXCJET1VCTEVDSVJDTEVFTkRcIiwgNTc6IFwiUFNcIiwgNTg6IFwiUEVcIiwgNTk6IFwiKC1cIiwgNjA6IFwiLSlcIiwgNjE6IFwiU1RBRElVTVNUQVJUXCIsIDYyOiBcIlNUQURJVU1FTkRcIiwgNjM6IFwiU1VCUk9VVElORVNUQVJUXCIsIDY0OiBcIlNVQlJPVVRJTkVFTkRcIiwgNjU6IFwiVkVSVEVYX1dJVEhfUFJPUFNfU1RBUlRcIiwgNjY6IFwiQUxQSEFcIiwgNjc6IFwiQ09MT05cIiwgNjg6IFwiUElQRVwiLCA2OTogXCJDWUxJTkRFUlNUQVJUXCIsIDcwOiBcIkNZTElOREVSRU5EXCIsIDcxOiBcIkRJQU1PTkRfU1RBUlRcIiwgNzI6IFwiRElBTU9ORF9TVE9QXCIsIDczOiBcIlRBR0VORFwiLCA3NDogXCJUUkFQU1RBUlRcIiwgNzU6IFwiVFJBUEVORFwiLCA3NjogXCJJTlZUUkFQU1RBUlRcIiwgNzc6IFwiSU5WVFJBUEVORFwiLCA4MDogXCJURVNUU1RSXCIsIDgxOiBcIlNUQVJUX0xJTktcIiwgODI6IFwiTElOS1wiLCA4NDogXCJTVFJcIiwgODU6IFwiTURfU1RSXCIsIDg3OiBcIlNUWUxFXCIsIDg4OiBcIkxJTktTVFlMRVwiLCA4OTogXCJDTEFTU0RFRlwiLCA5MDogXCJDTEFTU1wiLCA5MTogXCJDTElDS1wiLCA5MjogXCJET1dOXCIsIDkzOiBcIlVQXCIsIDk2OiBcIkRFRkFVTFRcIiwgOTk6IFwiQ0FMTEJBQ0tOQU1FXCIsIDEwMDogXCJDQUxMQkFDS0FSR1NcIiwgMTAxOiBcIkhSRUZcIiwgMTAyOiBcIkxJTktfVEFSR0VUXCIsIDEwMzogXCJIRVhcIiwgMTA1OiBcIklOVEVSUE9MQVRFXCIsIDEwNjogXCJOVU1cIiwgMTA3OiBcIkNPTU1BXCIsIDExMDogXCJNSU5VU1wiLCAxMTE6IFwiVU5JVFwiLCAxMTI6IFwiQlJLVFwiLCAxMTM6IFwiRE9UXCIsIDExNDogXCJQQ1RcIiwgMTE1OiBcIlRBR1NUQVJUXCIsIDExOTogXCJkaXJlY3Rpb25fdGJcIiwgMTIwOiBcImRpcmVjdGlvbl9idFwiLCAxMjE6IFwiZGlyZWN0aW9uX3JsXCIsIDEyMjogXCJkaXJlY3Rpb25fbHJcIiwgMTIzOiBcIlBVTkNUVUFUSU9OXCIsIDEyNDogXCJVTklDT0RFX1RFWFRcIiwgMTI1OiBcIlBMVVNcIiwgMTI2OiBcIkVRVUFMU1wiLCAxMjc6IFwiTVVMVFwiLCAxMjg6IFwiVU5ERVJTQ09SRVwiLCAxMzA6IFwiQVJST1dfQ1JPU1NcIiwgMTMxOiBcIkFSUk9XX1BPSU5UXCIsIDEzMjogXCJBUlJPV19DSVJDTEVcIiwgMTMzOiBcIkFSUk9XX09QRU5cIiwgMTM0OiBcIlFVT1RFXCIgfSxcbiAgICBwcm9kdWN0aW9uc186IFswLCBbMywgMV0sIFszLCAyXSwgWzUsIDRdLCBbNSwgNl0sIFs2LCAxXSwgWzcsIDFdLCBbMTEsIDFdLCBbOCwgMV0sIFs0LCAyXSwgWzE3LCAwXSwgWzE3LCAyXSwgWzE4LCAxXSwgWzE4LCAxXSwgWzE4LCAxXSwgWzE4LCAxXSwgWzE4LCAxXSwgWzE2LCAyXSwgWzE2LCAyXSwgWzE2LCAyXSwgWzE2LCAzXSwgWzI4LCAyXSwgWzI4LCAxXSwgWzI5LCAxXSwgWzI5LCAxXSwgWzI5LCAxXSwgWzI3LCAxXSwgWzI3LCAxXSwgWzI3LCAyXSwgWzMxLCAyXSwgWzMxLCAyXSwgWzMxLCAxXSwgWzMxLCAxXSwgWzMwLCAyXSwgWzMwLCAxXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCA5XSwgWzE5LCA2XSwgWzE5LCA0XSwgWzE5LCAxXSwgWzE5LCAyXSwgWzE5LCAyXSwgWzE5LCAxXSwgWzksIDFdLCBbOSwgMV0sIFs5LCAxXSwgWzMyLCAzXSwgWzMyLCA0XSwgWzMyLCAyXSwgWzMyLCAxXSwgWzUwLCAxXSwgWzUwLCA1XSwgWzUwLCAzXSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA2XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA4XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA2XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCA0XSwgWzUxLCAxXSwgWzQ5LCAyXSwgWzQ5LCAzXSwgWzQ5LCAzXSwgWzQ5LCAxXSwgWzQ5LCAzXSwgWzc4LCAxXSwgWzc5LCAzXSwgWzM5LCAxXSwgWzM5LCAyXSwgWzM5LCAxXSwgWzM5LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzk0LCAxXSwgWzk0LCAyXSwgWzM1LCA1XSwgWzM1LCA1XSwgWzM2LCA1XSwgWzM3LCAyXSwgWzM3LCA0XSwgWzM3LCAzXSwgWzM3LCA1XSwgWzM3LCAyXSwgWzM3LCA0XSwgWzM3LCA0XSwgWzM3LCA2XSwgWzM3LCAyXSwgWzM3LCA0XSwgWzM3LCAyXSwgWzM3LCA0XSwgWzM3LCA0XSwgWzM3LCA2XSwgWzMzLCA1XSwgWzMzLCA1XSwgWzM0LCA1XSwgWzM0LCA1XSwgWzM0LCA5XSwgWzM0LCA5XSwgWzM0LCA3XSwgWzM0LCA3XSwgWzEwNCwgMV0sIFsxMDQsIDNdLCBbOTcsIDFdLCBbOTcsIDNdLCBbMTA4LCAxXSwgWzEwOCwgMl0sIFsxMDksIDFdLCBbMTA5LCAxXSwgWzEwOSwgMV0sIFsxMDksIDFdLCBbMTA5LCAxXSwgWzEwOSwgMV0sIFsxMDksIDFdLCBbMTA5LCAxXSwgWzEwOSwgMV0sIFsxMDksIDFdLCBbMTA5LCAxXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzk1LCAxXSwgWzk1LCAxXSwgWzk1LCAxXSwgWzk1LCAxXSwgWzU0LCAxXSwgWzU0LCAyXSwgWzk4LCAxXSwgWzk4LCAyXSwgWzExOCwgMV0sIFsxMTgsIDFdLCBbMTE4LCAxXSwgWzExOCwgMV0sIFs0MywgMV0sIFs0MywgMV0sIFs0MywgMV0sIFs0MywgMV0sIFsxMTYsIDFdLCBbMTE2LCAxXSwgWzExNiwgMV0sIFsxMTYsIDFdLCBbMTE2LCAxXSwgWzExNiwgMV0sIFsxMTYsIDFdLCBbMTE2LCAxXSwgWzExNiwgMV0sIFsxMTYsIDFdLCBbMTE2LCAxXSwgWzExNiwgMV0sIFsxMTYsIDFdLCBbMTE3LCAxXSwgWzExNywgMV0sIFsxMTcsIDFdLCBbMTE3LCAxXSwgWzExNywgMV0sIFsxMTcsIDFdLCBbMTE3LCAxXSwgWzExNywgMV0sIFsxMTcsIDFdLCBbMTE3LCAxXSwgWzExNywgMV0sIFsxMTcsIDFdLCBbMTE3LCAxXSwgWzExNywgMV0sIFsxMTcsIDFdLCBbMTE3LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdLCBbMTI5LCAxXSwgWzEyOSwgMV0sIFsxMjksIDFdXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG4gICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuICAgICAgc3dpdGNoICh5eXN0YXRlKSB7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIiUle1wiLCBcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgJCRbJDBdID0gJCRbJDBdLnRyaW0oKS5yZXBsYWNlKC8nL2csICdcIicpO1xuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCJ9JSVcIiwgXCJjbG9zZV9kaXJlY3RpdmVcIiwgXCJmbG93Y2hhcnRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KCQkWyQwXSkgfHwgJCRbJDBdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICBjYXNlIDk3OlxuICAgICAgICBjYXNlIDE1MzpcbiAgICAgICAgY2FzZSAxNTU6XG4gICAgICAgIGNhc2UgMTU2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJUQlwiKTtcbiAgICAgICAgICB0aGlzLiQgPSBcIlRCXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgeXkuc2V0RGlyZWN0aW9uKCQkWyQwIC0gMV0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXS5ub2RlcztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNjpcbiAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgY2FzZSAzODpcbiAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5hZGRTdWJHcmFwaCgkJFskMCAtIDZdLCAkJFskMCAtIDFdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5hZGRTdWJHcmFwaCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCAkJFskMCAtIDNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5hZGRTdWJHcmFwaCh2b2lkIDAsICQkWyQwIC0gMV0sIHZvaWQgMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NUaXRsZSh0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ2OlxuICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICB5eS5hZGRMaW5rKCQkWyQwIC0gMl0uc3RtdCwgJCRbJDBdLCAkJFskMCAtIDFdKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6ICQkWyQwXSwgbm9kZXM6ICQkWyQwXS5jb25jYXQoJCRbJDAgLSAyXS5ub2RlcykgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICB5eS5hZGRMaW5rKCQkWyQwIC0gM10uc3RtdCwgJCRbJDAgLSAxXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiAkJFskMCAtIDFdLCBub2RlczogJCRbJDAgLSAxXS5jb25jYXQoJCRbJDAgLSAzXS5ub2RlcykgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6ICQkWyQwIC0gMV0sIG5vZGVzOiAkJFskMCAtIDFdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTQ6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiAkJFskMF0sIG5vZGVzOiAkJFskMF0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICB0aGlzLiQgPSBbJCRbJDBdXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdLmNvbmNhdCgkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU3OlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDJdXTtcbiAgICAgICAgICB5eS5zZXRDbGFzcygkJFskMCAtIDJdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sIFwic3F1YXJlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sIFwiZG91YmxlY2lyY2xlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gNV07XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gNV0sICQkWyQwIC0gMl0sIFwiY2lyY2xlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYxOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sIFwiZWxsaXBzZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCBcInN0YWRpdW1cIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjM6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5hZGRWZXJ0ZXgoJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSwgXCJzdWJyb3V0aW5lXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gN107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gN10sICQkWyQwIC0gMV0sIFwicmVjdFwiLCB2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBPYmplY3QuZnJvbUVudHJpZXMoW1skJFskMCAtIDVdLCAkJFskMCAtIDNdXV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCBcImN5bGluZGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sIFwicm91bmRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5hZGRWZXJ0ZXgoJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSwgXCJkaWFtb25kXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gNV07XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gNV0sICQkWyQwIC0gMl0sIFwiaGV4YWdvblwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCBcIm9kZFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCBcInRyYXBlem9pZFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDNdLCAkJFskMCAtIDFdLCBcImludl90cmFwZXpvaWRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5hZGRWZXJ0ZXgoJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSwgXCJsZWFuX3JpZ2h0XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDczOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuYWRkVmVydGV4KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sIFwibGVhbl9sZWZ0XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICB5eS5hZGRWZXJ0ZXgoJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NTpcbiAgICAgICAgICAkJFskMCAtIDFdLnRleHQgPSAkJFskMF07XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICAkJFskMCAtIDJdLnRleHQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMl07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzg6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc5OlxuICAgICAgICAgIHZhciBpbmYgPSB5eS5kZXN0cnVjdExpbmsoJCRbJDBdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IFwidHlwZVwiOiBpbmYudHlwZSwgXCJzdHJva2VcIjogaW5mLnN0cm9rZSwgXCJsZW5ndGhcIjogaW5mLmxlbmd0aCwgXCJ0ZXh0XCI6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICB2YXIgaW5mID0geXkuZGVzdHJ1Y3RMaW5rKCQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0geyBcInR5cGVcIjogaW5mLnR5cGUsIFwic3Ryb2tlXCI6IGluZi5zdHJva2UsIFwibGVuZ3RoXCI6IGluZi5sZW5ndGggfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgIHRoaXMuJCA9IHsgdGV4dDogJCRbJDBdLCB0eXBlOiBcInRleHRcIiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgIHRoaXMuJCA9IHsgdGV4dDogJCRbJDAgLSAxXS50ZXh0ICsgXCJcIiArICQkWyQwXSwgdHlwZTogJCRbJDAgLSAxXS50eXBlIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODQ6XG4gICAgICAgICAgdGhpcy4kID0geyB0ZXh0OiAkJFskMF0sIHR5cGU6IFwidGV4dFwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgdGhpcy4kID0geyB0ZXh0OiAkJFskMF0sIHR5cGU6IFwibWFya2Rvd25cIiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDk4OlxuICAgICAgICBjYXNlIDE1NDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdICsgXCJcIiArICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSA0XTtcbiAgICAgICAgICB5eS5hZGRDbGFzcygkJFskMCAtIDJdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdO1xuICAgICAgICAgIHl5LnNldENsYXNzKCQkWyQwIC0gMl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAyOlxuICAgICAgICBjYXNlIDExMDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIHl5LnNldENsaWNrRXZlbnQoJCRbJDAgLSAxXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDM6XG4gICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDNdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICB5eS5zZXRUb29sdGlwKCQkWyQwIC0gM10sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMl07XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwNTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdO1xuICAgICAgICAgIHl5LnNldENsaWNrRXZlbnQoJCRbJDAgLSA0XSwgJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgeXkuc2V0VG9vbHRpcCgkJFskMCAtIDRdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgY2FzZSAxMTI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA3OlxuICAgICAgICBjYXNlIDExMzpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgeXkuc2V0VG9vbHRpcCgkJFskMCAtIDNdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgY2FzZSAxMTQ6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDVdO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSA1XSwgJCRbJDAgLSA0XSwgJCRbJDBdKTtcbiAgICAgICAgICB5eS5zZXRUb29sdGlwKCQkWyQwIC0gNV0sICQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExNjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdO1xuICAgICAgICAgIHl5LmFkZFZlcnRleCgkJFskMCAtIDJdLCB2b2lkIDAsIHZvaWQgMCwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMTc6XG4gICAgICAgIGNhc2UgMTE5OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gNF07XG4gICAgICAgICAgeXkudXBkYXRlTGluaygkJFskMCAtIDJdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdO1xuICAgICAgICAgIHl5LnVwZGF0ZUxpbmsoWyQkWyQwIC0gMl1dLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDhdO1xuICAgICAgICAgIHl5LnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZShbJCRbJDAgLSA2XV0sICQkWyQwIC0gMl0pO1xuICAgICAgICAgIHl5LnVwZGF0ZUxpbmsoWyQkWyQwIC0gNl1dLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyMTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDhdO1xuICAgICAgICAgIHl5LnVwZGF0ZUxpbmtJbnRlcnBvbGF0ZSgkJFskMCAtIDZdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICB5eS51cGRhdGVMaW5rKCQkWyQwIC0gNl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gNl07XG4gICAgICAgICAgeXkudXBkYXRlTGlua0ludGVycG9sYXRlKFskJFskMCAtIDRdXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjM6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSA2XTtcbiAgICAgICAgICB5eS51cGRhdGVMaW5rSW50ZXJwb2xhdGUoJCRbJDAgLSA0XSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjQ6XG4gICAgICAgIGNhc2UgMTI2OlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyNTpcbiAgICAgICAgY2FzZSAxMjc6XG4gICAgICAgICAgJCRbJDAgLSAyXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjk6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXSArICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTE6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1MjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdICsgXCJcIiArICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTc6XG4gICAgICAgICAgdGhpcy4kID0gXCJ2XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTU4OlxuICAgICAgICAgIHRoaXMuJCA9IFwiLVwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1OTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIlRCXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNjA6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcImRpclwiLCB2YWx1ZTogXCJCVFwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTYxOlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJkaXJcIiwgdmFsdWU6IFwiUkxcIiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE2MjpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIkxSXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiAzLCA2OiA1LCAxMjogJFYwLCAxNjogNCwgMjE6ICRWMSwgMjI6ICRWMiwgMjQ6ICRWMyB9LCB7IDE6IFszXSB9LCB7IDE6IFsyLCAxXSB9LCB7IDM6IDEwLCA0OiAyLCA1OiAzLCA2OiA1LCAxMjogJFYwLCAxNjogNCwgMjE6ICRWMSwgMjI6ICRWMiwgMjQ6ICRWMyB9LCBvKCRWNCwgJFY1LCB7IDE3OiAxMSB9KSwgeyA3OiAxMiwgMTM6IFsxLCAxM10gfSwgeyAxNjogMTQsIDIxOiAkVjEsIDIyOiAkVjIsIDI0OiAkVjMgfSwgeyAxNjogMTUsIDIxOiAkVjEsIDIyOiAkVjIsIDI0OiAkVjMgfSwgeyAyNTogWzEsIDE2XSwgMjY6IFsxLCAxN10gfSwgeyAxMzogWzIsIDVdIH0sIHsgMTogWzIsIDJdIH0sIHsgMTogWzIsIDldLCAxODogMTgsIDE5OiAxOSwgMjA6ICRWNiwgMjE6ICRWNywgMjI6ICRWOCwgMjM6ICRWOSwgMzI6IDI0LCAzMzogMjUsIDM0OiAyNiwgMzU6IDI3LCAzNjogMjgsIDM3OiAyOSwgMzg6ICRWYSwgNDM6IDMxLCA0NDogJFZiLCA0NjogJFZjLCA0ODogJFZkLCA1MDogMzUsIDUxOiA0NSwgNTI6ICRWZSwgNTQ6IDQ2LCA2NjogJFZmLCA2NzogJFZnLCA4NzogJFZoLCA4ODogJFZpLCA4OTogJFZqLCA5MDogJFZrLCA5MTogJFZsLCA5MjogJFZtLCA5NjogJFZuLCAxMDY6ICRWbywgMTA3OiAkVnAsIDExMDogJFZxLCAxMTI6ICRWciwgMTEzOiAkVnMsIDExNzogNDcsIDExOTogJFZ0LCAxMjA6ICRWdSwgMTIxOiAkVnYsIDEyMjogJFZ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIHsgODogNjQsIDEwOiBbMSwgNjVdLCAxNTogJFZEIH0sIG8oWzEwLCAxNV0sIFsyLCA2XSksIG8oJFY0LCBbMiwgMTddKSwgbygkVjQsIFsyLCAxOF0pLCBvKCRWNCwgWzIsIDE5XSksIHsgMjA6IFsxLCA2OF0sIDIxOiBbMSwgNjldLCAyMjogJFZFLCAyNzogNjcsIDMwOiA3MCB9LCBvKCRWRiwgWzIsIDExXSksIG8oJFZGLCBbMiwgMTJdKSwgbygkVkYsIFsyLCAxM10pLCBvKCRWRiwgWzIsIDE0XSksIG8oJFZGLCBbMiwgMTVdKSwgbygkVkYsIFsyLCAxNl0pLCB7IDk6IDcyLCAyMDogJFZHLCAyMTogJFZILCAyMzogJFZJLCA0OTogNzMsIDc4OiA3NywgODE6IFsxLCA3OF0sIDgyOiBbMSwgNzldIH0sIHsgOTogODAsIDIwOiAkVkcsIDIxOiAkVkgsIDIzOiAkVkkgfSwgeyA5OiA4MSwgMjA6ICRWRywgMjE6ICRWSCwgMjM6ICRWSSB9LCB7IDk6IDgyLCAyMDogJFZHLCAyMTogJFZILCAyMzogJFZJIH0sIHsgOTogODMsIDIwOiAkVkcsIDIxOiAkVkgsIDIzOiAkVkkgfSwgeyA5OiA4NCwgMjA6ICRWRywgMjE6ICRWSCwgMjM6ICRWSSB9LCB7IDk6IDg2LCAyMDogJFZHLCAyMTogJFZILCAyMjogWzEsIDg1XSwgMjM6ICRWSSB9LCBvKCRWRiwgWzIsIDQ0XSksIHsgNDU6IFsxLCA4N10gfSwgeyA0NzogWzEsIDg4XSB9LCBvKCRWRiwgWzIsIDQ3XSksIG8oJFZKLCBbMiwgNTRdLCB7IDMwOiA4OSwgMjI6ICRWRSB9KSwgeyAyMjogWzEsIDkwXSB9LCB7IDIyOiBbMSwgOTFdIH0sIHsgMjI6IFsxLCA5Ml0gfSwgeyAyMjogWzEsIDkzXSB9LCB7IDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDg0OiBbMSwgOTddLCA5MjogJFZPLCA5ODogOTYsIDk5OiBbMSwgOTRdLCAxMDE6IFsxLCA5NV0sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE2OiAxMDAsIDExODogOTgsIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkVkYsIFsyLCAxNTldKSwgbygkVkYsIFsyLCAxNjBdKSwgbygkVkYsIFsyLCAxNjFdKSwgbygkVkYsIFsyLCAxNjJdKSwgbygkVl8sIFsyLCA1NV0sIHsgNTM6IFsxLCAxMTZdIH0pLCBvKCRWJCwgWzIsIDc0XSwgeyAxMTc6IDEyOSwgNDA6IFsxLCAxMTddLCA1MjogJFZlLCA1NTogWzEsIDExOF0sIDU3OiBbMSwgMTE5XSwgNTk6IFsxLCAxMjBdLCA2MTogWzEsIDEyMV0sIDYzOiBbMSwgMTIyXSwgNjU6IFsxLCAxMjNdLCA2NjogJFZmLCA2NzogJFZnLCA2OTogWzEsIDEyNF0sIDcxOiBbMSwgMTI1XSwgNzM6IFsxLCAxMjZdLCA3NDogWzEsIDEyN10sIDc2OiBbMSwgMTI4XSwgOTI6ICRWbSwgOTY6ICRWbiwgMTA2OiAkVm8sIDEwNzogJFZwLCAxMTA6ICRWcSwgMTEyOiAkVnIsIDExMzogJFZzLCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0pLCBvKCRWMDEsIFsyLCAxNTFdKSwgbygkVjAxLCBbMiwgMTc2XSksIG8oJFYwMSwgWzIsIDE3N10pLCBvKCRWMDEsIFsyLCAxNzhdKSwgbygkVjAxLCBbMiwgMTc5XSksIG8oJFYwMSwgWzIsIDE4MF0pLCBvKCRWMDEsIFsyLCAxODFdKSwgbygkVjAxLCBbMiwgMTgyXSksIG8oJFYwMSwgWzIsIDE4M10pLCBvKCRWMDEsIFsyLCAxODRdKSwgbygkVjAxLCBbMiwgMTg1XSksIG8oJFYwMSwgWzIsIDE4Nl0pLCBvKCRWMDEsIFsyLCAxODddKSwgbygkVjAxLCBbMiwgMTg4XSksIG8oJFYwMSwgWzIsIDE4OV0pLCBvKCRWMDEsIFsyLCAxOTBdKSwgbygkVjAxLCBbMiwgMTkxXSksIHsgOTogMTMwLCAyMDogJFZHLCAyMTogJFZILCAyMzogJFZJIH0sIHsgMTE6IDEzMSwgMTQ6IFsxLCAxMzJdIH0sIG8oJFYxMSwgWzIsIDhdKSwgbygkVjQsIFsyLCAyMF0pLCBvKCRWNCwgWzIsIDI2XSksIG8oJFY0LCBbMiwgMjddKSwgeyAyMTogWzEsIDEzM10gfSwgbygkVjIxLCBbMiwgMzRdLCB7IDMwOiAxMzQsIDIyOiAkVkUgfSksIG8oJFZGLCBbMiwgMzVdKSwgeyA1MDogMTM1LCA1MTogNDUsIDUyOiAkVmUsIDU0OiA0NiwgNjY6ICRWZiwgNjc6ICRWZywgOTI6ICRWbSwgOTY6ICRWbiwgMTA2OiAkVm8sIDEwNzogJFZwLCAxMTA6ICRWcSwgMTEyOiAkVnIsIDExMzogJFZzLCAxMTc6IDQ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIG8oJFYzMSwgWzIsIDQ4XSksIG8oJFYzMSwgWzIsIDQ5XSksIG8oJFYzMSwgWzIsIDUwXSksIG8oJFY0MSwgWzIsIDc4XSwgeyA3OTogMTM2LCA2ODogWzEsIDEzOF0sIDgwOiBbMSwgMTM3XSB9KSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDEzOSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCBvKFs1MiwgNjYsIDY3LCA2OCwgODAsIDkyLCA5NiwgMTA2LCAxMDcsIDExMCwgMTEyLCAxMTMsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjhdLCBbMiwgODBdKSwgbygkVkYsIFsyLCAzNl0pLCBvKCRWRiwgWzIsIDM3XSksIG8oJFZGLCBbMiwgMzhdKSwgbygkVkYsIFsyLCAzOV0pLCBvKCRWRiwgWzIsIDQwXSksIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAxNjQsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkVnAxLCAkVjUsIHsgMTc6IDE2NSB9KSwgbygkVkYsIFsyLCA0NV0pLCBvKCRWRiwgWzIsIDQ2XSksIG8oJFZKLCBbMiwgNTNdLCB7IDUyOiAkVnExIH0pLCB7IDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDk4OiAxNjcsIDEwMzogWzEsIDE2OF0sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE2OiAxMDAsIDExODogOTgsIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyA5NjogWzEsIDE2OV0sIDEwNDogMTcwLCAxMDY6IFsxLCAxNzFdIH0sIHsgMjY6ICRWSywgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgOTI6ICRWTywgOTY6IFsxLCAxNzJdLCA5ODogMTczLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZSLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNjogMTAwLCAxMTg6IDk4LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjY6ICRWSywgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgOTI6ICRWTywgOTg6IDE3NCwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWUiwgMTEyOiAkVlMsIDExMzogJFZULCAxMTY6IDEwMCwgMTE4OiA5OCwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCBvKCRWMTEsIFsyLCAxMDJdLCB7IDIyOiBbMSwgMTc1XSwgMTAwOiBbMSwgMTc2XSB9KSwgbygkVjExLCBbMiwgMTA2XSwgeyAyMjogWzEsIDE3N10gfSksIG8oJFYxMSwgWzIsIDExMF0sIHsgMTE2OiAxMDAsIDExODogMTc5LCAyMjogWzEsIDE3OF0sIDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9KSwgbygkVjExLCBbMiwgMTEyXSwgeyAyMjogWzEsIDE4MF0gfSksIG8oJFZyMSwgWzIsIDE1M10pLCBvKCRWcjEsIFsyLCAxNTVdKSwgbygkVnIxLCBbMiwgMTU2XSksIG8oJFZyMSwgWzIsIDE1N10pLCBvKCRWcjEsIFsyLCAxNThdKSwgbygkVnMxLCBbMiwgMTYzXSksIG8oJFZzMSwgWzIsIDE2NF0pLCBvKCRWczEsIFsyLCAxNjVdKSwgbygkVnMxLCBbMiwgMTY2XSksIG8oJFZzMSwgWzIsIDE2N10pLCBvKCRWczEsIFsyLCAxNjhdKSwgbygkVnMxLCBbMiwgMTY5XSksIG8oJFZzMSwgWzIsIDE3MF0pLCBvKCRWczEsIFsyLCAxNzFdKSwgbygkVnMxLCBbMiwgMTcyXSksIG8oJFZzMSwgWzIsIDE3M10pLCBvKCRWczEsIFsyLCAxNzRdKSwgbygkVnMxLCBbMiwgMTc1XSksIHsgNTI6ICRWZSwgNTQ6IDE4MSwgNjY6ICRWZiwgNjc6ICRWZywgOTI6ICRWbSwgOTY6ICRWbiwgMTA2OiAkVm8sIDEwNzogJFZwLCAxMTA6ICRWcSwgMTEyOiAkVnIsIDExMzogJFZzLCAxMTc6IDQ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAxODIsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDE4MywgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCAzOTogMTg1LCA0MjogJFY5MSwgNTI6ICRWTCwgNTc6IFsxLCAxODRdLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDE4NiwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCAzOTogMTg3LCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMTQwLCA4NDogJFZjMSwgODU6ICRWZDEsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAxODgsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyA2NjogWzEsIDE4OV0gfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDE5MCwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCAzOTogMTkxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzE6IFsxLCAxOTJdLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDE5MywgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCAzOTogMTk0LCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMTQwLCA4NDogJFZjMSwgODU6ICRWZDEsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAxOTUsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkVjAxLCBbMiwgMTUyXSksIG8oJFZ0MSwgWzIsIDNdKSwgeyA4OiAxOTYsIDE1OiAkVkQgfSwgeyAxNTogWzIsIDddIH0sIG8oJFY0LCBbMiwgMjhdKSwgbygkVjIxLCBbMiwgMzNdKSwgbygkVkosIFsyLCA1MV0sIHsgMzA6IDE5NywgMjI6ICRWRSB9KSwgbygkVjQxLCBbMiwgNzVdLCB7IDIyOiBbMSwgMTk4XSB9KSwgeyAyMjogWzEsIDE5OV0gfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDIwMCwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MjogWzEsIDIwMV0sIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIG8oJFZzMSwgWzIsIDgyXSksIG8oJFZzMSwgWzIsIDg0XSksIG8oJFZzMSwgWzIsIDg1XSksIG8oJFZzMSwgWzIsIDE0MV0pLCBvKCRWczEsIFsyLCAxNDJdKSwgbygkVnMxLCBbMiwgMTQzXSksIG8oJFZzMSwgWzIsIDE0NF0pLCBvKCRWczEsIFsyLCAxNDVdKSwgbygkVnMxLCBbMiwgMTQ2XSksIG8oJFZzMSwgWzIsIDE0N10pLCBvKCRWczEsIFsyLCAxNDhdKSwgbygkVnMxLCBbMiwgMTQ5XSksIG8oJFZzMSwgWzIsIDE1MF0pLCBvKCRWczEsIFsyLCA4Nl0pLCBvKCRWczEsIFsyLCA4N10pLCBvKCRWczEsIFsyLCA4OF0pLCBvKCRWczEsIFsyLCA4OV0pLCBvKCRWczEsIFsyLCA5MF0pLCBvKCRWczEsIFsyLCA5MV0pLCBvKCRWczEsIFsyLCA5Ml0pLCBvKCRWczEsIFsyLCA5M10pLCBvKCRWczEsIFsyLCA5NF0pLCBvKCRWczEsIFsyLCA5NV0pLCBvKCRWczEsIFsyLCA5Nl0pLCB7IDk6IDIwNCwgMjA6ICRWRywgMjE6ICRWSCwgMjI6ICRWNTEsIDIzOiAkVkksIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDQwOiBbMSwgMjAzXSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAxODogMTgsIDE5OiAxOSwgMjA6ICRWNiwgMjE6ICRWNywgMjI6ICRWOCwgMjM6ICRWOSwgMzI6IDI0LCAzMzogMjUsIDM0OiAyNiwgMzU6IDI3LCAzNjogMjgsIDM3OiAyOSwgMzg6ICRWYSwgNDI6IFsxLCAyMDVdLCA0MzogMzEsIDQ0OiAkVmIsIDQ2OiAkVmMsIDQ4OiAkVmQsIDUwOiAzNSwgNTE6IDQ1LCA1MjogJFZlLCA1NDogNDYsIDY2OiAkVmYsIDY3OiAkVmcsIDg3OiAkVmgsIDg4OiAkVmksIDg5OiAkVmosIDkwOiAkVmssIDkxOiAkVmwsIDkyOiAkVm0sIDk2OiAkVm4sIDEwNjogJFZvLCAxMDc6ICRWcCwgMTEwOiAkVnEsIDExMjogJFZyLCAxMTM6ICRWcywgMTE3OiA0NywgMTE5OiAkVnQsIDEyMDogJFZ1LCAxMjE6ICRWdiwgMTIyOiAkVncsIDEyMzogJFZ4LCAxMjQ6ICRWeSwgMTI1OiAkVnosIDEyNjogJFZBLCAxMjc6ICRWQiwgMTI4OiAkVkMgfSwgeyAyMjogJFZFLCAzMDogMjA2IH0sIHsgMjI6IFsxLCAyMDddLCAyNjogJFZLLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA5MjogJFZPLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZSLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNjogMTAwLCAxMTg6IDE3OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiBbMSwgMjA4XSB9LCB7IDIyOiBbMSwgMjA5XSB9LCB7IDIyOiBbMSwgMjEwXSwgMTA3OiBbMSwgMjExXSB9LCBvKCRWdTEsIFsyLCAxMjRdKSwgeyAyMjogWzEsIDIxMl0gfSwgeyAyMjogWzEsIDIxM10sIDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE2OiAxMDAsIDExODogMTc5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6IFsxLCAyMTRdLCAyNjogJFZLLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA5MjogJFZPLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZSLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNjogMTAwLCAxMTg6IDE3OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDg0OiBbMSwgMjE1XSB9LCBvKCRWMTEsIFsyLCAxMDRdLCB7IDIyOiBbMSwgMjE2XSB9KSwgeyA4NDogWzEsIDIxN10sIDEwMjogWzEsIDIxOF0gfSwgeyA4NDogWzEsIDIxOV0gfSwgbygkVnIxLCBbMiwgMTU0XSksIHsgODQ6IFsxLCAyMjBdLCAxMDI6IFsxLCAyMjFdIH0sIG8oJFZfLCBbMiwgNTddLCB7IDExNzogMTI5LCA1MjogJFZlLCA2NjogJFZmLCA2NzogJFZnLCA5MjogJFZtLCA5NjogJFZuLCAxMDY6ICRWbywgMTA3OiAkVnAsIDExMDogJFZxLCAxMTI6ICRWciwgMTEzOiAkVnMsIDEyMzogJFZ4LCAxMjQ6ICRWeSwgMTI1OiAkVnosIDEyNjogJFZBLCAxMjc6ICRWQiwgMTI4OiAkVkMgfSksIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDQxOiBbMSwgMjIyXSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDI6ICRWOTEsIDUyOiAkVkwsIDU2OiBbMSwgMjIzXSwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMjAyLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCAzOTogMjI0LCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMTQwLCA4NDogJFZjMSwgODU6ICRWZDEsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDQyOiAkVjkxLCA1MjogJFZMLCA1ODogWzEsIDIyNV0sIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDI6ICRWOTEsIDUyOiAkVkwsIDYwOiBbMSwgMjI2XSwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMjAyLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjI6IFsxLCAyMjddLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDQyOiAkVjkxLCA1MjogJFZMLCA2NDogWzEsIDIyOF0sIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyA2NzogWzEsIDIyOV0gfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDcwOiBbMSwgMjMwXSwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMjAyLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzI6IFsxLCAyMzFdLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAyMzIsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDE6IFsxLCAyMzNdLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMjAyLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNzM6ICRWYTEsIDc1OiBbMSwgMjM0XSwgNzc6IFsxLCAyMzVdLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA3NTogWzEsIDIzN10sIDc3OiBbMSwgMjM2XSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgOTogMjM4LCAyMDogJFZHLCAyMTogJFZILCAyMzogJFZJIH0sIG8oJFZKLCBbMiwgNTJdLCB7IDUyOiAkVnExIH0pLCBvKCRWNDEsIFsyLCA3N10pLCBvKCRWNDEsIFsyLCA3Nl0pLCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MjogJFY5MSwgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgNjg6IFsxLCAyMzldLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIG8oJFY0MSwgWzIsIDc5XSksIG8oJFZzMSwgWzIsIDgzXSksIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDM5OiAyNDAsIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAxNDAsIDg0OiAkVmMxLCA4NTogJFZkMSwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkVnAxLCAkVjUsIHsgMTc6IDI0MSB9KSwgbygkVkYsIFsyLCA0M10pLCB7IDUxOiAyNDIsIDUyOiAkVmUsIDU0OiA0NiwgNjY6ICRWZiwgNjc6ICRWZywgOTI6ICRWbSwgOTY6ICRWbiwgMTA2OiAkVm8sIDEwNzogJFZwLCAxMTA6ICRWcSwgMTEyOiAkVnIsIDExMzogJFZzLCAxMTc6IDQ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyNDMsIDEwMzogJFZ6MSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyNTcsIDEwMzogJFZ6MSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyNTgsIDEwMzogJFZ6MSwgMTA1OiBbMSwgMjU5XSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyNjAsIDEwMzogJFZ6MSwgMTA1OiBbMSwgMjYxXSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIHsgMTA2OiBbMSwgMjYyXSB9LCB7IDIyOiAkVnYxLCA2NjogJFZ3MSwgNjc6ICRWeDEsIDg3OiAkVnkxLCA5NzogMjYzLCAxMDM6ICRWejEsIDEwNjogJFZBMSwgMTA4OiAyNDQsIDEwOTogMjQ1LCAxMTA6ICRWQjEsIDExMTogJFZDMSwgMTEyOiAkVkQxLCAxMTM6ICRWRTEsIDExNDogJFZGMSB9LCB7IDIyOiAkVnYxLCA2NjogJFZ3MSwgNjc6ICRWeDEsIDg3OiAkVnkxLCA5NzogMjY0LCAxMDM6ICRWejEsIDEwNjogJFZBMSwgMTA4OiAyNDQsIDEwOTogMjQ1LCAxMTA6ICRWQjEsIDExMTogJFZDMSwgMTEyOiAkVkQxLCAxMTM6ICRWRTEsIDExNDogJFZGMSB9LCB7IDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDk4OiAyNjUsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE2OiAxMDAsIDExODogOTgsIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkVjExLCBbMiwgMTAzXSksIHsgODQ6IFsxLCAyNjZdIH0sIG8oJFYxMSwgWzIsIDEwN10sIHsgMjI6IFsxLCAyNjddIH0pLCBvKCRWMTEsIFsyLCAxMDhdKSwgbygkVjExLCBbMiwgMTExXSksIG8oJFYxMSwgWzIsIDExM10sIHsgMjI6IFsxLCAyNjhdIH0pLCBvKCRWMTEsIFsyLCAxMTRdKSwgbygkViQsIFsyLCA1OF0pLCBvKCRWJCwgWzIsIDU5XSksIHsgMjI6ICRWNTEsIDI0OiAkVjYxLCAyNjogJFY3MSwgMzg6ICRWODEsIDQyOiAkVjkxLCA1MjogJFZMLCA1ODogWzEsIDI2OV0sIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDIwMiwgODY6IDE1MiwgODc6ICRWZTEsIDg4OiAkVmYxLCA4OTogJFZnMSwgOTA6ICRWaDEsIDkxOiAkVmkxLCA5MjogJFZqMSwgOTM6ICRWazEsIDk1OiAxNDMsIDk2OiAkVmwxLCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZtMSwgMTEyOiAkVlMsIDExMzogJFZULCAxMTQ6ICRWbjEsIDExNTogJFZvMSwgMTE2OiAxNDksIDEyMzogJFZVLCAxMjQ6ICRWViwgMTI1OiAkVlcsIDEyNjogJFZYLCAxMjc6ICRWWSwgMTI4OiAkVlogfSwgbygkViQsIFsyLCA2Nl0pLCBvKCRWJCwgWzIsIDYxXSksIG8oJFYkLCBbMiwgNjJdKSwgbygkViQsIFsyLCA2M10pLCB7IDY2OiBbMSwgMjcwXSB9LCBvKCRWJCwgWzIsIDY1XSksIG8oJFYkLCBbMiwgNjddKSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDcyOiBbMSwgMjcxXSwgNzM6ICRWYTEsIDgxOiAkVmIxLCA4MzogMjAyLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCBvKCRWJCwgWzIsIDY5XSksIG8oJFYkLCBbMiwgNzBdKSwgbygkViQsIFsyLCA3Ml0pLCBvKCRWJCwgWzIsIDcxXSksIG8oJFYkLCBbMiwgNzNdKSwgbygkVnQxLCBbMiwgNF0pLCBvKFsyMiwgNTIsIDY2LCA2NywgOTIsIDk2LCAxMDYsIDEwNywgMTEwLCAxMTIsIDExMywgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOF0sIFsyLCA4MV0pLCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MTogWzEsIDI3Ml0sIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMTg6IDE4LCAxOTogMTksIDIwOiAkVjYsIDIxOiAkVjcsIDIyOiAkVjgsIDIzOiAkVjksIDMyOiAyNCwgMzM6IDI1LCAzNDogMjYsIDM1OiAyNywgMzY6IDI4LCAzNzogMjksIDM4OiAkVmEsIDQyOiBbMSwgMjczXSwgNDM6IDMxLCA0NDogJFZiLCA0NjogJFZjLCA0ODogJFZkLCA1MDogMzUsIDUxOiA0NSwgNTI6ICRWZSwgNTQ6IDQ2LCA2NjogJFZmLCA2NzogJFZnLCA4NzogJFZoLCA4ODogJFZpLCA4OTogJFZqLCA5MDogJFZrLCA5MTogJFZsLCA5MjogJFZtLCA5NjogJFZuLCAxMDY6ICRWbywgMTA3OiAkVnAsIDExMDogJFZxLCAxMTI6ICRWciwgMTEzOiAkVnMsIDExNzogNDcsIDExOTogJFZ0LCAxMjA6ICRWdSwgMTIxOiAkVnYsIDEyMjogJFZ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIG8oJFZfLCBbMiwgNTZdKSwgbygkVjExLCBbMiwgMTE2XSwgeyAxMDc6ICRWRzEgfSksIG8oJFZIMSwgWzIsIDEyNl0sIHsgMTA5OiAyNzUsIDIyOiAkVnYxLCA2NjogJFZ3MSwgNjc6ICRWeDEsIDg3OiAkVnkxLCAxMDM6ICRWejEsIDEwNjogJFZBMSwgMTEwOiAkVkIxLCAxMTE6ICRWQzEsIDExMjogJFZEMSwgMTEzOiAkVkUxLCAxMTQ6ICRWRjEgfSksIG8oJFZJMSwgWzIsIDEyOF0pLCBvKCRWSTEsIFsyLCAxMzBdKSwgbygkVkkxLCBbMiwgMTMxXSksIG8oJFZJMSwgWzIsIDEzMl0pLCBvKCRWSTEsIFsyLCAxMzNdKSwgbygkVkkxLCBbMiwgMTM0XSksIG8oJFZJMSwgWzIsIDEzNV0pLCBvKCRWSTEsIFsyLCAxMzZdKSwgbygkVkkxLCBbMiwgMTM3XSksIG8oJFZJMSwgWzIsIDEzOF0pLCBvKCRWSTEsIFsyLCAxMzldKSwgbygkVkkxLCBbMiwgMTQwXSksIG8oJFYxMSwgWzIsIDExN10sIHsgMTA3OiAkVkcxIH0pLCBvKCRWMTEsIFsyLCAxMThdLCB7IDEwNzogJFZHMSB9KSwgeyAyMjogWzEsIDI3Nl0gfSwgbygkVjExLCBbMiwgMTE5XSwgeyAxMDc6ICRWRzEgfSksIHsgMjI6IFsxLCAyNzddIH0sIG8oJFZ1MSwgWzIsIDEyNV0pLCBvKCRWMTEsIFsyLCA5OV0sIHsgMTA3OiAkVkcxIH0pLCBvKCRWMTEsIFsyLCAxMDBdLCB7IDEwNzogJFZHMSB9KSwgbygkVjExLCBbMiwgMTAxXSwgeyAxMTY6IDEwMCwgMTE4OiAxNzksIDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9KSwgbygkVjExLCBbMiwgMTA1XSksIHsgMTAyOiBbMSwgMjc4XSB9LCB7IDEwMjogWzEsIDI3OV0gfSwgeyA1ODogWzEsIDI4MF0gfSwgeyA2ODogWzEsIDI4MV0gfSwgeyA3MjogWzEsIDI4Ml0gfSwgeyA5OiAyODMsIDIwOiAkVkcsIDIxOiAkVkgsIDIzOiAkVkkgfSwgbygkVkYsIFsyLCA0Ml0pLCB7IDIyOiAkVnYxLCA2NjogJFZ3MSwgNjc6ICRWeDEsIDg3OiAkVnkxLCAxMDM6ICRWejEsIDEwNjogJFZBMSwgMTA4OiAyODQsIDEwOTogMjQ1LCAxMTA6ICRWQjEsIDExMTogJFZDMSwgMTEyOiAkVkQxLCAxMTM6ICRWRTEsIDExNDogJFZGMSB9LCBvKCRWSTEsIFsyLCAxMjldKSwgeyAyNjogJFZLLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA5MjogJFZPLCA5ODogMjg1LCAxMDY6ICRWUCwgMTA3OiAkVlEsIDExMDogJFZSLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNjogMTAwLCAxMTg6IDk4LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMjY6ICRWSywgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgOTI6ICRWTywgOTg6IDI4NiwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWUiwgMTEyOiAkVlMsIDExMzogJFZULCAxMTY6IDEwMCwgMTE4OiA5OCwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCBvKCRWMTEsIFsyLCAxMDldKSwgbygkVjExLCBbMiwgMTE1XSksIG8oJFYkLCBbMiwgNjBdKSwgeyAyMjogJFY1MSwgMjQ6ICRWNjEsIDI2OiAkVjcxLCAzODogJFY4MSwgMzk6IDI4NywgNDI6ICRWOTEsIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDczOiAkVmExLCA4MTogJFZiMSwgODM6IDE0MCwgODQ6ICRWYzEsIDg1OiAkVmQxLCA4NjogMTUyLCA4NzogJFZlMSwgODg6ICRWZjEsIDg5OiAkVmcxLCA5MDogJFZoMSwgOTE6ICRWaTEsIDkyOiAkVmoxLCA5MzogJFZrMSwgOTU6IDE0MywgOTY6ICRWbDEsIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVm0xLCAxMTI6ICRWUywgMTEzOiAkVlQsIDExNDogJFZuMSwgMTE1OiAkVm8xLCAxMTY6IDE0OSwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9LCBvKCRWJCwgWzIsIDY4XSksIG8oJFZwMSwgJFY1LCB7IDE3OiAyODggfSksIG8oJFZIMSwgWzIsIDEyN10sIHsgMTA5OiAyNzUsIDIyOiAkVnYxLCA2NjogJFZ3MSwgNjc6ICRWeDEsIDg3OiAkVnkxLCAxMDM6ICRWejEsIDEwNjogJFZBMSwgMTEwOiAkVkIxLCAxMTE6ICRWQzEsIDExMjogJFZEMSwgMTEzOiAkVkUxLCAxMTQ6ICRWRjEgfSksIG8oJFYxMSwgWzIsIDEyMl0sIHsgMTE2OiAxMDAsIDExODogMTc5LCAyMjogWzEsIDI4OV0sIDI2OiAkVkssIDUyOiAkVkwsIDY2OiAkVk0sIDY3OiAkVk4sIDkyOiAkVk8sIDEwNjogJFZQLCAxMDc6ICRWUSwgMTEwOiAkVlIsIDExMjogJFZTLCAxMTM6ICRWVCwgMTIzOiAkVlUsIDEyNDogJFZWLCAxMjU6ICRWVywgMTI2OiAkVlgsIDEyNzogJFZZLCAxMjg6ICRWWiB9KSwgbygkVjExLCBbMiwgMTIzXSwgeyAxMTY6IDEwMCwgMTE4OiAxNzksIDIyOiBbMSwgMjkwXSwgMjY6ICRWSywgNTI6ICRWTCwgNjY6ICRWTSwgNjc6ICRWTiwgOTI6ICRWTywgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWUiwgMTEyOiAkVlMsIDExMzogJFZULCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0pLCB7IDIyOiAkVjUxLCAyNDogJFY2MSwgMjY6ICRWNzEsIDM4OiAkVjgxLCA0MTogWzEsIDI5MV0sIDQyOiAkVjkxLCA1MjogJFZMLCA2NjogJFZNLCA2NzogJFZOLCA3MzogJFZhMSwgODE6ICRWYjEsIDgzOiAyMDIsIDg2OiAxNTIsIDg3OiAkVmUxLCA4ODogJFZmMSwgODk6ICRWZzEsIDkwOiAkVmgxLCA5MTogJFZpMSwgOTI6ICRWajEsIDkzOiAkVmsxLCA5NTogMTQzLCA5NjogJFZsMSwgMTA2OiAkVlAsIDEwNzogJFZRLCAxMTA6ICRWbTEsIDExMjogJFZTLCAxMTM6ICRWVCwgMTE0OiAkVm4xLCAxMTU6ICRWbzEsIDExNjogMTQ5LCAxMjM6ICRWVSwgMTI0OiAkVlYsIDEyNTogJFZXLCAxMjY6ICRWWCwgMTI3OiAkVlksIDEyODogJFZaIH0sIHsgMTg6IDE4LCAxOTogMTksIDIwOiAkVjYsIDIxOiAkVjcsIDIyOiAkVjgsIDIzOiAkVjksIDMyOiAyNCwgMzM6IDI1LCAzNDogMjYsIDM1OiAyNywgMzY6IDI4LCAzNzogMjksIDM4OiAkVmEsIDQyOiBbMSwgMjkyXSwgNDM6IDMxLCA0NDogJFZiLCA0NjogJFZjLCA0ODogJFZkLCA1MDogMzUsIDUxOiA0NSwgNTI6ICRWZSwgNTQ6IDQ2LCA2NjogJFZmLCA2NzogJFZnLCA4NzogJFZoLCA4ODogJFZpLCA4OTogJFZqLCA5MDogJFZrLCA5MTogJFZsLCA5MjogJFZtLCA5NjogJFZuLCAxMDY6ICRWbywgMTA3OiAkVnAsIDExMDogJFZxLCAxMTI6ICRWciwgMTEzOiAkVnMsIDExNzogNDcsIDExOTogJFZ0LCAxMjA6ICRWdSwgMTIxOiAkVnYsIDEyMjogJFZ3LCAxMjM6ICRWeCwgMTI0OiAkVnksIDEyNTogJFZ6LCAxMjY6ICRWQSwgMTI3OiAkVkIsIDEyODogJFZDIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyOTMsIDEwMzogJFZ6MSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIHsgMjI6ICRWdjEsIDY2OiAkVncxLCA2NzogJFZ4MSwgODc6ICRWeTEsIDk3OiAyOTQsIDEwMzogJFZ6MSwgMTA2OiAkVkExLCAxMDg6IDI0NCwgMTA5OiAyNDUsIDExMDogJFZCMSwgMTExOiAkVkMxLCAxMTI6ICRWRDEsIDExMzogJFZFMSwgMTE0OiAkVkYxIH0sIG8oJFYkLCBbMiwgNjRdKSwgbygkVkYsIFsyLCA0MV0pLCBvKCRWMTEsIFsyLCAxMjBdLCB7IDEwNzogJFZHMSB9KSwgbygkVjExLCBbMiwgMTIxXSwgeyAxMDc6ICRWRzEgfSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDI6IFsyLCAxXSwgOTogWzIsIDVdLCAxMDogWzIsIDJdLCAxMzI6IFsyLCA3XSB9LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleDIoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleDIoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSBcInVuZGVmaW5lZFwiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICB2YXIgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+IFRFUlJPUikge1xuICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKFwiJ1wiICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgXCInXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGV4ZXIyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjpcXG5cIiArIGxleGVyMi5zaG93UG9zaXRpb24oKSArIFwiXFxuRXhwZWN0aW5nIFwiICsgZXhwZWN0ZWQuam9pbihcIiwgXCIpICsgXCIsIGdvdCAnXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOiBVbmV4cGVjdGVkIFwiICsgKHN5bWJvbCA9PSBFT0YgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgdGV4dDogbGV4ZXIyLm1hdGNoLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCxcbiAgICAgICAgICAgIGxpbmU6IGxleGVyMi55eWxpbmVubyxcbiAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiBcIiArIHN0YXRlICsgXCIsIHRva2VuOiBcIiArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaChsZXhlcjIueXl0ZXh0KTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKGxleGVyMi55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeXlsZW5nID0gbGV4ZXIyLnl5bGVuZztcbiAgICAgICAgICAgICAgeXl0ZXh0ID0gbGV4ZXIyLnl5dGV4dDtcbiAgICAgICAgICAgICAgeXlsaW5lbm8gPSBsZXhlcjIueXlsaW5lbm87XG4gICAgICAgICAgICAgIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmFuZ2VzKSB7XG4gICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5hcHBseSh5eXZhbCwgW1xuICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgeXlsaW5lbm8sXG4gICAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5LFxuICAgICAgICAgICAgICBhY3Rpb25bMV0sXG4gICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTtcbiAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcbiAgdmFyIGxleGVyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxleGVyMiA9IHtcbiAgICAgIEVPRjogMSxcbiAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG4gICAgICBzZXRJbnB1dDogZnVuY3Rpb24oaW5wdXQsIHl5KSB7XG4gICAgICAgIHRoaXMueXkgPSB5eSB8fCB0aGlzLnl5IHx8IHt9O1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fYmFja3RyYWNrID0gdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbXCJJTklUSUFMXCJdO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogMCxcbiAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLCAwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG4gICAgICBpbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgICB9LFxuICAgICAgLy8gdW5zaGlmdHMgb25lIGNoYXIgKG9yIGEgc3RyaW5nKSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdW5wdXQ6IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgY2FjaGVzIG1hdGNoZWQgdGV4dCBhbmQgYXBwZW5kcyBpdCBvbiBuZXh0IGFjdGlvblxuICAgICAgbW9yZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgc2lnbmFscyB0aGUgbGV4ZXIgdGhhdCB0aGlzIHJ1bGUgZmFpbHMgdG8gbWF0Y2ggdGhlIGlucHV0LCBzbyB0aGUgbmV4dCBtYXRjaGluZyBydWxlIChyZWdleCkgc2hvdWxkIGJlIHRlc3RlZCBpbnN0ZWFkLlxuICAgICAgcmVqZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxuICAgICAgbGVzczogZnVuY3Rpb24obikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgICB9LFxuICAgICAgLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG4gICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGluZXMsIGJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgIHl5bGxvYzoge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgIG1hdGNoOiB0aGlzLm1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgeXlsZW5nOiB0aGlzLnl5bGVuZyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgIF9pbnB1dDogdGhpcy5faW5wdXQsXG4gICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgIGZvciAodmFyIGsgaW4gYmFja3VwKSB7XG4gICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICB0aGlzLnl5dGV4dCA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFVucmVjb2duaXplZCB0ZXh0LlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxuICAgICAgbGV4OiBmdW5jdGlvbiBsZXgyKCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWN0aXZhdGVzIGEgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSAocHVzaGVzIHRoZSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9udG8gdGhlIGNvbmRpdGlvbiBzdGFjaylcbiAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbiAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbiAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG4gICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG4gICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG4gICAgICBzdGF0ZVN0YWNrU2l6ZTogZnVuY3Rpb24gc3RhdGVTdGFja1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuICAgICAgICBzd2l0Y2ggKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDEzO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDEwO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAxNTtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gMTQ7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY190aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0NDtcbiAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfdGl0bGVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQ2O1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJtZF9zdHJpbmdcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgcmV0dXJuIFwiTURfU1RSXCI7XG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3RyaW5nXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICByZXR1cm4gXCJTVFJcIjtcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgcmV0dXJuIDg3O1xuICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICByZXR1cm4gOTY7XG4gICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgIHJldHVybiA4ODtcbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgcmV0dXJuIDEwNTtcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDg5O1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gOTA7XG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJocmVmXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICByZXR1cm4gMTAxO1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY2FsbGJhY2tuYW1lXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY2FsbGJhY2thcmdzXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICAgIHJldHVybiA5OTtcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgIHJldHVybiAxMDA7XG4gICAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjbGlja1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgcmV0dXJuIDkxO1xuICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICBpZiAoeXkubGV4LmZpcnN0R3JhcGgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZGlyXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICBpZiAoeXkubGV4LmZpcnN0R3JhcGgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZGlyXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICBpZiAoeXkubGV4LmZpcnN0R3JhcGgoKSkge1xuICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZGlyXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICByZXR1cm4gMzg7XG4gICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgIHJldHVybiA0MjtcbiAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgcmV0dXJuIDEwMjtcbiAgICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgICAgcmV0dXJuIDEwMjtcbiAgICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgICAgcmV0dXJuIDEwMjtcbiAgICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgICAgcmV0dXJuIDEwMjtcbiAgICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI1O1xuICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI2O1xuICAgICAgICAgIGNhc2UgNDk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSA1MDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDUxOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI2O1xuICAgICAgICAgIGNhc2UgNTI6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDU0OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI2O1xuICAgICAgICAgIGNhc2UgNTU6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSA1NjpcbiAgICAgICAgICAgIHJldHVybiAxMTk7XG4gICAgICAgICAgY2FzZSA1NzpcbiAgICAgICAgICAgIHJldHVybiAxMjA7XG4gICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgIHJldHVybiAxMjE7XG4gICAgICAgICAgY2FzZSA1OTpcbiAgICAgICAgICAgIHJldHVybiAxMjI7XG4gICAgICAgICAgY2FzZSA2MDpcbiAgICAgICAgICAgIHJldHVybiAxMDY7XG4gICAgICAgICAgY2FzZSA2MTpcbiAgICAgICAgICAgIHJldHVybiAxMTI7XG4gICAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICAgIHJldHVybiA1MztcbiAgICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgICAgcmV0dXJuIDY3O1xuICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICByZXR1cm4gNTI7XG4gICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgIHJldHVybiAyMDtcbiAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgcmV0dXJuIDEwNztcbiAgICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgICAgcmV0dXJuIDEyNztcbiAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgcmV0dXJuIDgyO1xuICAgICAgICAgIGNhc2UgNjk6XG4gICAgICAgICAgICByZXR1cm4gODI7XG4gICAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICAgIHJldHVybiA4MjtcbiAgICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgICAgcmV0dXJuIDgyO1xuICAgICAgICAgIGNhc2UgNzI6XG4gICAgICAgICAgICByZXR1cm4gODE7XG4gICAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICAgIHJldHVybiA4MTtcbiAgICAgICAgICBjYXNlIDc0OlxuICAgICAgICAgICAgcmV0dXJuIDgxO1xuICAgICAgICAgIGNhc2UgNzU6XG4gICAgICAgICAgICByZXR1cm4gNTk7XG4gICAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICAgIHJldHVybiA2MDtcbiAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgcmV0dXJuIDYxO1xuICAgICAgICAgIGNhc2UgNzg6XG4gICAgICAgICAgICByZXR1cm4gNjI7XG4gICAgICAgICAgY2FzZSA3OTpcbiAgICAgICAgICAgIHJldHVybiA2MztcbiAgICAgICAgICBjYXNlIDgwOlxuICAgICAgICAgICAgcmV0dXJuIDY0O1xuICAgICAgICAgIGNhc2UgODE6XG4gICAgICAgICAgICByZXR1cm4gNjU7XG4gICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgIHJldHVybiA2OTtcbiAgICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgICAgcmV0dXJuIDcwO1xuICAgICAgICAgIGNhc2UgODQ6XG4gICAgICAgICAgICByZXR1cm4gNTU7XG4gICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgIHJldHVybiA1NjtcbiAgICAgICAgICBjYXNlIDg2OlxuICAgICAgICAgICAgcmV0dXJuIDExMDtcbiAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgcmV0dXJuIDExMztcbiAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgcmV0dXJuIDEyODtcbiAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgcmV0dXJuIDEyNTtcbiAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgcmV0dXJuIDExNDtcbiAgICAgICAgICBjYXNlIDkxOlxuICAgICAgICAgICAgcmV0dXJuIDEyNjtcbiAgICAgICAgICBjYXNlIDkyOlxuICAgICAgICAgICAgcmV0dXJuIDEyNjtcbiAgICAgICAgICBjYXNlIDkzOlxuICAgICAgICAgICAgcmV0dXJuIDExNTtcbiAgICAgICAgICBjYXNlIDk0OlxuICAgICAgICAgICAgcmV0dXJuIDczO1xuICAgICAgICAgIGNhc2UgOTU6XG4gICAgICAgICAgICByZXR1cm4gOTM7XG4gICAgICAgICAgY2FzZSA5NjpcbiAgICAgICAgICAgIHJldHVybiBcIlNFUFwiO1xuICAgICAgICAgIGNhc2UgOTc6XG4gICAgICAgICAgICByZXR1cm4gOTI7XG4gICAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICAgIHJldHVybiA2NjtcbiAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgcmV0dXJuIDc1O1xuICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgcmV0dXJuIDc0O1xuICAgICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgIGNhc2UgMTAyOlxuICAgICAgICAgICAgcmV0dXJuIDc2O1xuICAgICAgICAgIGNhc2UgMTAzOlxuICAgICAgICAgICAgcmV0dXJuIDEyMztcbiAgICAgICAgICBjYXNlIDEwNDpcbiAgICAgICAgICAgIHJldHVybiAxMjQ7XG4gICAgICAgICAgY2FzZSAxMDU6XG4gICAgICAgICAgICByZXR1cm4gNjg7XG4gICAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgICByZXR1cm4gNTc7XG4gICAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgICByZXR1cm4gNTg7XG4gICAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgICByZXR1cm4gNDA7XG4gICAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgICByZXR1cm4gNDE7XG4gICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICByZXR1cm4gNzE7XG4gICAgICAgICAgY2FzZSAxMTE6XG4gICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgY2FzZSAxMTI6XG4gICAgICAgICAgICByZXR1cm4gMTM0O1xuICAgICAgICAgIGNhc2UgMTEzOlxuICAgICAgICAgICAgcmV0dXJuIDIxO1xuICAgICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgICAgcmV0dXJuIDIyO1xuICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS8sIC9eKD86KCg/Oig/IVxcfSUlKVteOi5dKSopKS8sIC9eKD86OikvLCAvXig/OlxcfSUlKS8sIC9eKD86KCg/Oig/IVxcfSUlKS58XFxuKSopKS8sIC9eKD86YWNjVGl0bGVcXHMqOlxccyopLywgL14oPzooPyFcXG58fCkqW15cXG5dKikvLCAvXig/OmFjY0Rlc2NyXFxzKjpcXHMqKS8sIC9eKD86KD8hXFxufHwpKlteXFxuXSopLywgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS8sIC9eKD86W1xcfV0pLywgL14oPzpbXlxcfV0qKS8sIC9eKD86W1wiXVtgXSkvLCAvXig/OlteYFwiXSspLywgL14oPzpbYF1bXCJdKS8sIC9eKD86W1wiXSkvLCAvXig/OltcIl0pLywgL14oPzpbXlwiXSopLywgL14oPzpzdHlsZVxcYikvLCAvXig/OmRlZmF1bHRcXGIpLywgL14oPzpsaW5rU3R5bGVcXGIpLywgL14oPzppbnRlcnBvbGF0ZVxcYikvLCAvXig/OmNsYXNzRGVmXFxiKS8sIC9eKD86Y2xhc3NcXGIpLywgL14oPzpocmVmW1xcc10rW1wiXSkvLCAvXig/OltcIl0pLywgL14oPzpbXlwiXSopLywgL14oPzpjYWxsW1xcc10rKS8sIC9eKD86XFwoW1xcc10qXFwpKS8sIC9eKD86XFwoKS8sIC9eKD86W14oXSopLywgL14oPzpcXCkpLywgL14oPzpbXildKikvLCAvXig/OmNsaWNrW1xcc10rKS8sIC9eKD86W1xcc1xcbl0pLywgL14oPzpbXlxcc1xcbl0qKS8sIC9eKD86Zmxvd2NoYXJ0LWVsa1xcYikvLCAvXig/OmdyYXBoXFxiKS8sIC9eKD86Zmxvd2NoYXJ0XFxiKS8sIC9eKD86c3ViZ3JhcGhcXGIpLywgL14oPzplbmRcXGJcXHMqKS8sIC9eKD86X3NlbGZcXGIpLywgL14oPzpfYmxhbmtcXGIpLywgL14oPzpfcGFyZW50XFxiKS8sIC9eKD86X3RvcFxcYikvLCAvXig/OihcXHI/XFxuKSpcXHMqXFxuKS8sIC9eKD86XFxzKkxSXFxiKS8sIC9eKD86XFxzKlJMXFxiKS8sIC9eKD86XFxzKlRCXFxiKS8sIC9eKD86XFxzKkJUXFxiKS8sIC9eKD86XFxzKlREXFxiKS8sIC9eKD86XFxzKkJSXFxiKS8sIC9eKD86XFxzKjwpLywgL14oPzpcXHMqPikvLCAvXig/OlxccypcXF4pLywgL14oPzpcXHMqdlxcYikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1RCW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0JUW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1JMW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0xSW15cXG5dKikvLCAvXig/OlswLTldKykvLCAvXig/OiMpLywgL14oPzo6OjopLywgL14oPzo6KS8sIC9eKD86JikvLCAvXig/OjspLywgL14oPzosKS8sIC9eKD86XFwqKS8sIC9eKD86XFxzKlt4bzxdPy0tK1steG8+XVxccyopLywgL14oPzpcXHMqW3hvPF0/PT0rWz14bz5dXFxzKikvLCAvXig/OlxccypbeG88XT8tP1xcListW3hvPl0/XFxzKikvLCAvXig/Olxccyp+fltcXH5dK1xccyopLywgL14oPzpcXHMqW3hvPF0/LS1cXHMqKS8sIC9eKD86XFxzKlt4bzxdPz09XFxzKikvLCAvXig/OlxccypbeG88XT8tXFwuXFxzKikvLCAvXig/OlxcKC0pLywgL14oPzotXFwpKS8sIC9eKD86XFwoXFxbKS8sIC9eKD86XFxdXFwpKS8sIC9eKD86XFxbXFxbKS8sIC9eKD86XFxdXFxdKS8sIC9eKD86XFxbXFx8KS8sIC9eKD86XFxbXFwoKS8sIC9eKD86XFwpXFxdKS8sIC9eKD86XFwoXFwoXFwoKS8sIC9eKD86XFwpXFwpXFwpKS8sIC9eKD86LSkvLCAvXig/OlxcLikvLCAvXig/OltcXF9dKS8sIC9eKD86XFwrKS8sIC9eKD86JSkvLCAvXig/Oj0pLywgL14oPzo9KS8sIC9eKD86PCkvLCAvXig/Oj4pLywgL14oPzpcXF4pLywgL14oPzpcXFxcXFx8KS8sIC9eKD86dlxcYikvLCAvXig/OltBLVphLXpdKykvLCAvXig/OlxcXFxcXF0pLywgL14oPzpcXFtcXC8pLywgL14oPzpcXC9cXF0pLywgL14oPzpcXFtcXFxcKS8sIC9eKD86WyFcIiMkJSYnKissLS5gP1xcXFxfL10pLywgL14oPzpbXFx1MDBBQVxcdTAwQjVcXHUwMEJBXFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XXxbXFx1MDBGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N118W1xcdTAzN0EtXFx1MDM3RFxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwM0ExXFx1MDNBMy1cXHUwM0Y1XXxbXFx1MDNGNy1cXHUwNDgxXFx1MDQ4QS1cXHUwNTI3XFx1MDUzMS1cXHUwNTU2XFx1MDU1OVxcdTA1NjEtXFx1MDU4N1xcdTA1RDAtXFx1MDVFQV18W1xcdTA1RjAtXFx1MDVGMlxcdTA2MjAtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RTVcXHUwNkU2XFx1MDZFRV18W1xcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFdfFtcXHUwN0Y0XFx1MDdGNVxcdTA3RkFcXHUwODAwLVxcdTA4MTVcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwODQwLVxcdTA4NThcXHUwOEEwXXxbXFx1MDhBMi1cXHUwOEFDXFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5NzddfFtcXHUwOTc5LVxcdTA5N0ZcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJdfFtcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwQTA1LVxcdTBBMEFdfFtcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOV18W1xcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThdfFtcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQjA1LVxcdTBCMENdfFtcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNdfFtcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XXxbXFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMF18W1xcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzM1xcdTBDMzUtXFx1MEMzOVxcdTBDM0RdfFtcXHUwQzU4XFx1MEM1OVxcdTBDNjBcXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXXxbXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXXxbXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDYwXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMV18W1xcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFdfFtcXHUwRTgyXFx1MEU4NFxcdTBFODdcXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNdfFtcXHUwRUE1XFx1MEVBN1xcdTBFQUFcXHUwRUFCXFx1MEVBRC1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVDNl18W1xcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFdfFtcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXXxbXFx1MTA4RVxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGQy1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXXxbXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMF18W1xcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBdfFtcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxM0EwLVxcdTEzRjRcXHUxNDAxLVxcdTE2NkNdfFtcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFdfFtcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0Q3XXxbXFx1MTdEQ1xcdTE4MjAtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUNdfFtcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUMxLVxcdTE5QzdcXHUxQTAwLVxcdTFBMTZdfFtcXHUxQTIwLVxcdTFBNTRcXHUxQUE3XFx1MUIwNS1cXHUxQjMzXFx1MUI0NS1cXHUxQjRCXFx1MUI4My1cXHUxQkEwXFx1MUJBRVxcdTFCQUZdfFtcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDN0RcXHUxQ0U5LVxcdTFDRUNdfFtcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1XFx1MUNGNlxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRF18W1xcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RF18W1xcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNdfFtcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3Rl18W1xcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOF18W1xcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTgzXFx1MjE4NF18W1xcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXXxbXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XXxbXFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXXxbXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkUyRlxcdTMwMDVcXHUzMDA2XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwM0NdfFtcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRdfFtcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGQ0NdfFtcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQl18W1xcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5N1xcdUE2QTAtXFx1QTZFNVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OF18W1xcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTc5M1xcdUE3QTAtXFx1QTdBQVxcdUE3RjgtXFx1QTgwMVxcdUE4MDMtXFx1QTgwNV18W1xcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJdfFtcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUNGXFx1QUEwMC1cXHVBQTI4XXxbXFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTc2XFx1QUE3QVxcdUFBODAtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XXxbXFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQUREXFx1QUFFMC1cXHVBQUVBXFx1QUFGMi1cXHVBQUY0XXxbXFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXXxbXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXXxbXFx1RkE3MC1cXHVGQUQ5XFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNl18W1xcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXXxbXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXXxbXFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBXFx1RkY2Ni1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXXxbXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXSkvLCAvXig/OlxcfCkvLCAvXig/OlxcKCkvLCAvXig/OlxcKSkvLCAvXig/OlxcWykvLCAvXig/OlxcXSkvLCAvXig/OlxceykvLCAvXig/OlxcfSkvLCAvXig/OlwiKS8sIC9eKD86KFxccj9cXG4pKykvLCAvXig/OlxccykvLCAvXig/OiQpL10sXG4gICAgICBjb25kaXRpb25zOiB7IFwiY2xvc2VfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhcmdfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMywgNF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsyLCAzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNhbGxiYWNrYXJnc1wiOiB7IFwicnVsZXNcIjogWzMxLCAzMl0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2FsbGJhY2tuYW1lXCI6IHsgXCJydWxlc1wiOiBbMjgsIDI5LCAzMF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiaHJlZlwiOiB7IFwicnVsZXNcIjogWzI1LCAyNl0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2xpY2tcIjogeyBcInJ1bGVzXCI6IFszNCwgMzVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInZlcnRleFwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiZGlyXCI6IHsgXCJydWxlc1wiOiBbNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCI6IHsgXCJydWxlc1wiOiBbMTAsIDExXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JcIjogeyBcInJ1bGVzXCI6IFs4XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFs2XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJtZF9zdHJpbmdcIjogeyBcInJ1bGVzXCI6IFsxMywgMTRdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cmluZ1wiOiB7IFwicnVsZXNcIjogWzE2LCAxN10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSU5JVElBTFwiOiB7IFwicnVsZXNcIjogWzAsIDUsIDcsIDksIDEyLCAxNSwgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI3LCAzMywgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTVdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xuY29uc3QgTUVSTUFJRF9ET01fSURfUFJFRklYID0gXCJmbG93Y2hhcnQtXCI7XG5sZXQgdmVydGV4Q291bnRlciA9IDA7XG5sZXQgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG5sZXQgdmVydGljZXMgPSB7fTtcbmxldCBlZGdlcyA9IFtdO1xubGV0IGNsYXNzZXMgPSB7fTtcbmxldCBzdWJHcmFwaHMgPSBbXTtcbmxldCBzdWJHcmFwaExvb2t1cCA9IHt9O1xubGV0IHRvb2x0aXBzID0ge307XG5sZXQgc3ViQ291bnQgPSAwO1xubGV0IGZpcnN0R3JhcGhGbGFnID0gdHJ1ZTtcbmxldCBkaXJlY3Rpb247XG5sZXQgdmVyc2lvbjtcbmxldCBmdW5zID0gW107XG5jb25zdCBzYW5pdGl6ZVRleHQgPSAodHh0KSA9PiBjb21tb24uc2FuaXRpemVUZXh0KHR4dCwgY29uZmlnKTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBsb29rVXBEb21JZCA9IGZ1bmN0aW9uKGlkKSB7XG4gIGNvbnN0IHZlcml0Y2VLZXlzID0gT2JqZWN0LmtleXModmVydGljZXMpO1xuICBmb3IgKGNvbnN0IHZlcml0Y2VLZXkgb2YgdmVyaXRjZUtleXMpIHtcbiAgICBpZiAodmVydGljZXNbdmVyaXRjZUtleV0uaWQgPT09IGlkKSB7XG4gICAgICByZXR1cm4gdmVydGljZXNbdmVyaXRjZUtleV0uZG9tSWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBpZDtcbn07XG5jb25zdCBhZGRWZXJ0ZXggPSBmdW5jdGlvbihfaWQsIHRleHRPYmosIHR5cGUsIHN0eWxlLCBjbGFzc2VzMiwgZGlyLCBwcm9wcyA9IHt9KSB7XG4gIGxldCB0eHQ7XG4gIGxldCBpZCA9IF9pZDtcbiAgaWYgKGlkID09PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGlkLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZlcnRpY2VzW2lkXSA9PT0gdm9pZCAwKSB7XG4gICAgdmVydGljZXNbaWRdID0ge1xuICAgICAgaWQsXG4gICAgICBsYWJlbFR5cGU6IFwidGV4dFwiLFxuICAgICAgZG9tSWQ6IE1FUk1BSURfRE9NX0lEX1BSRUZJWCArIGlkICsgXCItXCIgKyB2ZXJ0ZXhDb3VudGVyLFxuICAgICAgc3R5bGVzOiBbXSxcbiAgICAgIGNsYXNzZXM6IFtdXG4gICAgfTtcbiAgfVxuICB2ZXJ0ZXhDb3VudGVyKys7XG4gIGlmICh0ZXh0T2JqICE9PSB2b2lkIDApIHtcbiAgICBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICB0eHQgPSBzYW5pdGl6ZVRleHQodGV4dE9iai50ZXh0LnRyaW0oKSk7XG4gICAgdmVydGljZXNbaWRdLmxhYmVsVHlwZSA9IHRleHRPYmoudHlwZTtcbiAgICBpZiAodHh0WzBdID09PSAnXCInICYmIHR4dFt0eHQubGVuZ3RoIC0gMV0gPT09ICdcIicpIHtcbiAgICAgIHR4dCA9IHR4dC5zdWJzdHJpbmcoMSwgdHh0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICB2ZXJ0aWNlc1tpZF0udGV4dCA9IHR4dDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodmVydGljZXNbaWRdLnRleHQgPT09IHZvaWQgMCkge1xuICAgICAgdmVydGljZXNbaWRdLnRleHQgPSBfaWQ7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlICE9PSB2b2lkIDApIHtcbiAgICB2ZXJ0aWNlc1tpZF0udHlwZSA9IHR5cGU7XG4gIH1cbiAgaWYgKHN0eWxlICE9PSB2b2lkIDAgJiYgc3R5bGUgIT09IG51bGwpIHtcbiAgICBzdHlsZS5mb3JFYWNoKGZ1bmN0aW9uKHMpIHtcbiAgICAgIHZlcnRpY2VzW2lkXS5zdHlsZXMucHVzaChzKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoY2xhc3NlczIgIT09IHZvaWQgMCAmJiBjbGFzc2VzMiAhPT0gbnVsbCkge1xuICAgIGNsYXNzZXMyLmZvckVhY2goZnVuY3Rpb24ocykge1xuICAgICAgdmVydGljZXNbaWRdLmNsYXNzZXMucHVzaChzKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoZGlyICE9PSB2b2lkIDApIHtcbiAgICB2ZXJ0aWNlc1tpZF0uZGlyID0gZGlyO1xuICB9XG4gIGlmICh2ZXJ0aWNlc1tpZF0ucHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHZlcnRpY2VzW2lkXS5wcm9wcyA9IHByb3BzO1xuICB9IGVsc2UgaWYgKHByb3BzICE9PSB2b2lkIDApIHtcbiAgICBPYmplY3QuYXNzaWduKHZlcnRpY2VzW2lkXS5wcm9wcywgcHJvcHMpO1xuICB9XG59O1xuY29uc3QgYWRkU2luZ2xlTGluayA9IGZ1bmN0aW9uKF9zdGFydCwgX2VuZCwgdHlwZSkge1xuICBsZXQgc3RhcnQgPSBfc3RhcnQ7XG4gIGxldCBlbmQgPSBfZW5kO1xuICBjb25zdCBlZGdlID0geyBzdGFydCwgZW5kLCB0eXBlOiB2b2lkIDAsIHRleHQ6IFwiXCIsIGxhYmVsVHlwZTogXCJ0ZXh0XCIgfTtcbiAgbG9nLmluZm8oXCJhYmM3OCBHb3QgZWRnZS4uLlwiLCBlZGdlKTtcbiAgY29uc3QgbGlua1RleHRPYmogPSB0eXBlLnRleHQ7XG4gIGlmIChsaW5rVGV4dE9iaiAhPT0gdm9pZCAwKSB7XG4gICAgZWRnZS50ZXh0ID0gc2FuaXRpemVUZXh0KGxpbmtUZXh0T2JqLnRleHQudHJpbSgpKTtcbiAgICBpZiAoZWRnZS50ZXh0WzBdID09PSAnXCInICYmIGVkZ2UudGV4dFtlZGdlLnRleHQubGVuZ3RoIC0gMV0gPT09ICdcIicpIHtcbiAgICAgIGVkZ2UudGV4dCA9IGVkZ2UudGV4dC5zdWJzdHJpbmcoMSwgZWRnZS50ZXh0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBlZGdlLmxhYmVsVHlwZSA9IGxpbmtUZXh0T2JqLnR5cGU7XG4gIH1cbiAgaWYgKHR5cGUgIT09IHZvaWQgMCkge1xuICAgIGVkZ2UudHlwZSA9IHR5cGUudHlwZTtcbiAgICBlZGdlLnN0cm9rZSA9IHR5cGUuc3Ryb2tlO1xuICAgIGVkZ2UubGVuZ3RoID0gdHlwZS5sZW5ndGg7XG4gIH1cbiAgZWRnZXMucHVzaChlZGdlKTtcbn07XG5jb25zdCBhZGRMaW5rID0gZnVuY3Rpb24oX3N0YXJ0LCBfZW5kLCB0eXBlKSB7XG4gIGxvZy5pbmZvKFwiYWRkTGluayAoYWJjNzgpXCIsIF9zdGFydCwgX2VuZCwgdHlwZSk7XG4gIGxldCBpLCBqO1xuICBmb3IgKGkgPSAwOyBpIDwgX3N0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChqID0gMDsgaiA8IF9lbmQubGVuZ3RoOyBqKyspIHtcbiAgICAgIGFkZFNpbmdsZUxpbmsoX3N0YXJ0W2ldLCBfZW5kW2pdLCB0eXBlKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCB1cGRhdGVMaW5rSW50ZXJwb2xhdGUgPSBmdW5jdGlvbihwb3NpdGlvbnMsIGludGVycCkge1xuICBwb3NpdGlvbnMuZm9yRWFjaChmdW5jdGlvbihwb3MpIHtcbiAgICBpZiAocG9zID09PSBcImRlZmF1bHRcIikge1xuICAgICAgZWRnZXMuZGVmYXVsdEludGVycG9sYXRlID0gaW50ZXJwO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGdlc1twb3NdLmludGVycG9sYXRlID0gaW50ZXJwO1xuICAgIH1cbiAgfSk7XG59O1xuY29uc3QgdXBkYXRlTGluayA9IGZ1bmN0aW9uKHBvc2l0aW9ucywgc3R5bGUpIHtcbiAgcG9zaXRpb25zLmZvckVhY2goZnVuY3Rpb24ocG9zKSB7XG4gICAgaWYgKHBvcyA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgIGVkZ2VzLmRlZmF1bHRTdHlsZSA9IHN0eWxlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodXRpbHMuaXNTdWJzdHJpbmdJbkFycmF5KFwiZmlsbFwiLCBzdHlsZSkgPT09IC0xKSB7XG4gICAgICAgIHN0eWxlLnB1c2goXCJmaWxsOm5vbmVcIik7XG4gICAgICB9XG4gICAgICBlZGdlc1twb3NdLnN0eWxlID0gc3R5bGU7XG4gICAgfVxuICB9KTtcbn07XG5jb25zdCBhZGRDbGFzcyA9IGZ1bmN0aW9uKGlkLCBzdHlsZSkge1xuICBpZiAoY2xhc3Nlc1tpZF0gPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXNbaWRdID0geyBpZCwgc3R5bGVzOiBbXSwgdGV4dFN0eWxlczogW10gfTtcbiAgfVxuICBpZiAoc3R5bGUgIT09IHZvaWQgMCAmJiBzdHlsZSAhPT0gbnVsbCkge1xuICAgIHN0eWxlLmZvckVhY2goZnVuY3Rpb24ocykge1xuICAgICAgaWYgKHMubWF0Y2goXCJjb2xvclwiKSkge1xuICAgICAgICBjb25zdCBuZXdTdHlsZTEgPSBzLnJlcGxhY2UoXCJmaWxsXCIsIFwiYmdGaWxsXCIpO1xuICAgICAgICBjb25zdCBuZXdTdHlsZTIgPSBuZXdTdHlsZTEucmVwbGFjZShcImNvbG9yXCIsIFwiZmlsbFwiKTtcbiAgICAgICAgY2xhc3Nlc1tpZF0udGV4dFN0eWxlcy5wdXNoKG5ld1N0eWxlMik7XG4gICAgICB9XG4gICAgICBjbGFzc2VzW2lkXS5zdHlsZXMucHVzaChzKTtcbiAgICB9KTtcbiAgfVxufTtcbmNvbnN0IHNldERpcmVjdGlvbiA9IGZ1bmN0aW9uKGRpcikge1xuICBkaXJlY3Rpb24gPSBkaXI7XG4gIGlmIChkaXJlY3Rpb24ubWF0Y2goLy4qPC8pKSB7XG4gICAgZGlyZWN0aW9uID0gXCJSTFwiO1xuICB9XG4gIGlmIChkaXJlY3Rpb24ubWF0Y2goLy4qXFxeLykpIHtcbiAgICBkaXJlY3Rpb24gPSBcIkJUXCI7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbi5tYXRjaCgvLio+LykpIHtcbiAgICBkaXJlY3Rpb24gPSBcIkxSXCI7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbi5tYXRjaCgvLip2LykpIHtcbiAgICBkaXJlY3Rpb24gPSBcIlRCXCI7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gXCJURFwiKSB7XG4gICAgZGlyZWN0aW9uID0gXCJUQlwiO1xuICB9XG59O1xuY29uc3Qgc2V0Q2xhc3MgPSBmdW5jdGlvbihpZHMsIGNsYXNzTmFtZSkge1xuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oX2lkKSB7XG4gICAgbGV0IGlkID0gX2lkO1xuICAgIGlmICh2ZXJ0aWNlc1tpZF0gIT09IHZvaWQgMCkge1xuICAgICAgdmVydGljZXNbaWRdLmNsYXNzZXMucHVzaChjbGFzc05hbWUpO1xuICAgIH1cbiAgICBpZiAoc3ViR3JhcGhMb29rdXBbaWRdICE9PSB2b2lkIDApIHtcbiAgICAgIHN1YkdyYXBoTG9va3VwW2lkXS5jbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IHNldFRvb2x0aXAgPSBmdW5jdGlvbihpZHMsIHRvb2x0aXApIHtcbiAgaWRzLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgaWYgKHRvb2x0aXAgIT09IHZvaWQgMCkge1xuICAgICAgdG9vbHRpcHNbdmVyc2lvbiA9PT0gXCJnZW4tMVwiID8gbG9va1VwRG9tSWQoaWQpIDogaWRdID0gc2FuaXRpemVUZXh0KHRvb2x0aXApO1xuICAgIH1cbiAgfSk7XG59O1xuY29uc3Qgc2V0Q2xpY2tGdW4gPSBmdW5jdGlvbihpZCwgZnVuY3Rpb25OYW1lLCBmdW5jdGlvbkFyZ3MpIHtcbiAgbGV0IGRvbUlkID0gbG9va1VwRG9tSWQoaWQpO1xuICBpZiAoZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbCAhPT0gXCJsb29zZVwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmdW5jdGlvbk5hbWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgYXJnTGlzdCA9IFtdO1xuICBpZiAodHlwZW9mIGZ1bmN0aW9uQXJncyA9PT0gXCJzdHJpbmdcIikge1xuICAgIGFyZ0xpc3QgPSBmdW5jdGlvbkFyZ3Muc3BsaXQoLywoPz0oPzooPzpbXlwiXSpcIil7Mn0pKlteXCJdKiQpLyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgaXRlbSA9IGFyZ0xpc3RbaV0udHJpbSgpO1xuICAgICAgaWYgKGl0ZW0uY2hhckF0KDApID09PSAnXCInICYmIGl0ZW0uY2hhckF0KGl0ZW0ubGVuZ3RoIC0gMSkgPT09ICdcIicpIHtcbiAgICAgICAgaXRlbSA9IGl0ZW0uc3Vic3RyKDEsIGl0ZW0ubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBhcmdMaXN0W2ldID0gaXRlbTtcbiAgICB9XG4gIH1cbiAgaWYgKGFyZ0xpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgYXJnTGlzdC5wdXNoKGlkKTtcbiAgfVxuICBpZiAodmVydGljZXNbaWRdICE9PSB2b2lkIDApIHtcbiAgICB2ZXJ0aWNlc1tpZF0uaGF2ZUNhbGxiYWNrID0gdHJ1ZTtcbiAgICBmdW5zLnB1c2goZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtkb21JZH1cIl1gKTtcbiAgICAgIGlmIChlbGVtICE9PSBudWxsKSB7XG4gICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICBcImNsaWNrXCIsXG4gICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB1dGlscy5ydW5GdW5jKGZ1bmN0aW9uTmFtZSwgLi4uYXJnTGlzdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuY29uc3Qgc2V0TGluayA9IGZ1bmN0aW9uKGlkcywgbGlua1N0ciwgdGFyZ2V0KSB7XG4gIGlkcy5zcGxpdChcIixcIikuZm9yRWFjaChmdW5jdGlvbihpZCkge1xuICAgIGlmICh2ZXJ0aWNlc1tpZF0gIT09IHZvaWQgMCkge1xuICAgICAgdmVydGljZXNbaWRdLmxpbmsgPSB1dGlscy5mb3JtYXRVcmwobGlua1N0ciwgY29uZmlnKTtcbiAgICAgIHZlcnRpY2VzW2lkXS5saW5rVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cbiAgfSk7XG4gIHNldENsYXNzKGlkcywgXCJjbGlja2FibGVcIik7XG59O1xuY29uc3QgZ2V0VG9vbHRpcCA9IGZ1bmN0aW9uKGlkKSB7XG4gIHJldHVybiB0b29sdGlwc1tpZF07XG59O1xuY29uc3Qgc2V0Q2xpY2tFdmVudCA9IGZ1bmN0aW9uKGlkcywgZnVuY3Rpb25OYW1lLCBmdW5jdGlvbkFyZ3MpIHtcbiAgaWRzLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgc2V0Q2xpY2tGdW4oaWQsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25BcmdzKTtcbiAgfSk7XG4gIHNldENsYXNzKGlkcywgXCJjbGlja2FibGVcIik7XG59O1xuY29uc3QgYmluZEZ1bmN0aW9ucyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgZnVucy5mb3JFYWNoKGZ1bmN0aW9uKGZ1bikge1xuICAgIGZ1bihlbGVtZW50KTtcbiAgfSk7XG59O1xuY29uc3QgZ2V0RGlyZWN0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBkaXJlY3Rpb24udHJpbSgpO1xufTtcbmNvbnN0IGdldFZlcnRpY2VzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB2ZXJ0aWNlcztcbn07XG5jb25zdCBnZXRFZGdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZWRnZXM7XG59O1xuY29uc3QgZ2V0Q2xhc3NlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY2xhc3Nlcztcbn07XG5jb25zdCBzZXR1cFRvb2xUaXBzID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICBsZXQgdG9vbHRpcEVsZW0gPSBzZWxlY3QoXCIubWVybWFpZFRvb2x0aXBcIik7XG4gIGlmICgodG9vbHRpcEVsZW0uX2dyb3VwcyB8fCB0b29sdGlwRWxlbSlbMF1bMF0gPT09IG51bGwpIHtcbiAgICB0b29sdGlwRWxlbSA9IHNlbGVjdChcImJvZHlcIikuYXBwZW5kKFwiZGl2XCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1lcm1haWRUb29sdGlwXCIpLnN0eWxlKFwib3BhY2l0eVwiLCAwKTtcbiAgfVxuICBjb25zdCBzdmcgPSBzZWxlY3QoZWxlbWVudCkuc2VsZWN0KFwic3ZnXCIpO1xuICBjb25zdCBub2RlcyA9IHN2Zy5zZWxlY3RBbGwoXCJnLm5vZGVcIik7XG4gIG5vZGVzLm9uKFwibW91c2VvdmVyXCIsIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGVsID0gc2VsZWN0KHRoaXMpO1xuICAgIGNvbnN0IHRpdGxlID0gZWwuYXR0cihcInRpdGxlXCIpO1xuICAgIGlmICh0aXRsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0b29sdGlwRWxlbS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMjAwKS5zdHlsZShcIm9wYWNpdHlcIiwgXCIuOVwiKTtcbiAgICB0b29sdGlwRWxlbS50ZXh0KGVsLmF0dHIoXCJ0aXRsZVwiKSkuc3R5bGUoXCJsZWZ0XCIsIHdpbmRvdy5zY3JvbGxYICsgcmVjdC5sZWZ0ICsgKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpIC8gMiArIFwicHhcIikuc3R5bGUoXCJ0b3BcIiwgd2luZG93LnNjcm9sbFkgKyByZWN0LnRvcCAtIDE0ICsgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKyBcInB4XCIpO1xuICAgIHRvb2x0aXBFbGVtLmh0bWwodG9vbHRpcEVsZW0uaHRtbCgpLnJlcGxhY2UoLyZsdDticlxcLyZndDsvZywgXCI8YnIvPlwiKSk7XG4gICAgZWwuY2xhc3NlZChcImhvdmVyXCIsIHRydWUpO1xuICB9KS5vbihcIm1vdXNlb3V0XCIsIGZ1bmN0aW9uKCkge1xuICAgIHRvb2x0aXBFbGVtLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLnN0eWxlKFwib3BhY2l0eVwiLCAwKTtcbiAgICBjb25zdCBlbCA9IHNlbGVjdCh0aGlzKTtcbiAgICBlbC5jbGFzc2VkKFwiaG92ZXJcIiwgZmFsc2UpO1xuICB9KTtcbn07XG5mdW5zLnB1c2goc2V0dXBUb29sVGlwcyk7XG5jb25zdCBjbGVhciA9IGZ1bmN0aW9uKHZlciA9IFwiZ2VuLTFcIikge1xuICB2ZXJ0aWNlcyA9IHt9O1xuICBjbGFzc2VzID0ge307XG4gIGVkZ2VzID0gW107XG4gIGZ1bnMgPSBbc2V0dXBUb29sVGlwc107XG4gIHN1YkdyYXBocyA9IFtdO1xuICBzdWJHcmFwaExvb2t1cCA9IHt9O1xuICBzdWJDb3VudCA9IDA7XG4gIHRvb2x0aXBzID0gW107XG4gIGZpcnN0R3JhcGhGbGFnID0gdHJ1ZTtcbiAgdmVyc2lvbiA9IHZlcjtcbiAgY2xlYXIkMSgpO1xufTtcbmNvbnN0IHNldEdlbiA9ICh2ZXIpID0+IHtcbiAgdmVyc2lvbiA9IHZlciB8fCBcImdlbi0yXCI7XG59O1xuY29uc3QgZGVmYXVsdFN0eWxlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBcImZpbGw6I2ZmYTtzdHJva2U6ICNmNjY7IHN0cm9rZS13aWR0aDogM3B4OyBzdHJva2UtZGFzaGFycmF5OiA1LCA1O2ZpbGw6I2ZmYTtzdHJva2U6ICM2NjY7XCI7XG59O1xuY29uc3QgYWRkU3ViR3JhcGggPSBmdW5jdGlvbihfaWQsIGxpc3QsIF90aXRsZSkge1xuICBsZXQgaWQgPSBfaWQudGV4dC50cmltKCk7XG4gIGxldCB0aXRsZSA9IF90aXRsZS50ZXh0O1xuICBpZiAoX2lkID09PSBfdGl0bGUgJiYgX3RpdGxlLnRleHQubWF0Y2goL1xccy8pKSB7XG4gICAgaWQgPSB2b2lkIDA7XG4gIH1cbiAgZnVuY3Rpb24gdW5pcShhKSB7XG4gICAgY29uc3QgcHJpbXMgPSB7IGJvb2xlYW46IHt9LCBudW1iZXI6IHt9LCBzdHJpbmc6IHt9IH07XG4gICAgY29uc3Qgb2JqcyA9IFtdO1xuICAgIGxldCBkaXIyO1xuICAgIGNvbnN0IG5vZGVMaXN0MiA9IGEuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgaXRlbTtcbiAgICAgIGlmIChpdGVtLnN0bXQgJiYgaXRlbS5zdG10ID09PSBcImRpclwiKSB7XG4gICAgICAgIGRpcjIgPSBpdGVtLnZhbHVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgaW4gcHJpbXMpIHtcbiAgICAgICAgcmV0dXJuIHByaW1zW3R5cGVdLmhhc093blByb3BlcnR5KGl0ZW0pID8gZmFsc2UgOiBwcmltc1t0eXBlXVtpdGVtXSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gb2Jqcy5pbmNsdWRlcyhpdGVtKSA/IGZhbHNlIDogb2Jqcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IG5vZGVMaXN0OiBub2RlTGlzdDIsIGRpcjogZGlyMiB9O1xuICB9XG4gIGxldCBub2RlTGlzdCA9IFtdO1xuICBjb25zdCB7IG5vZGVMaXN0OiBubCwgZGlyIH0gPSB1bmlxKG5vZGVMaXN0LmNvbmNhdC5hcHBseShub2RlTGlzdCwgbGlzdCkpO1xuICBub2RlTGlzdCA9IG5sO1xuICBpZiAodmVyc2lvbiA9PT0gXCJnZW4tMVwiKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgbm9kZUxpc3RbaV0gPSBsb29rVXBEb21JZChub2RlTGlzdFtpXSk7XG4gICAgfVxuICB9XG4gIGlkID0gaWQgfHwgXCJzdWJHcmFwaFwiICsgc3ViQ291bnQ7XG4gIHRpdGxlID0gdGl0bGUgfHwgXCJcIjtcbiAgdGl0bGUgPSBzYW5pdGl6ZVRleHQodGl0bGUpO1xuICBzdWJDb3VudCA9IHN1YkNvdW50ICsgMTtcbiAgY29uc3Qgc3ViR3JhcGggPSB7XG4gICAgaWQsXG4gICAgbm9kZXM6IG5vZGVMaXN0LFxuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgY2xhc3NlczogW10sXG4gICAgZGlyLFxuICAgIGxhYmVsVHlwZTogX3RpdGxlLnR5cGVcbiAgfTtcbiAgbG9nLmluZm8oXCJBZGRpbmdcIiwgc3ViR3JhcGguaWQsIHN1YkdyYXBoLm5vZGVzLCBzdWJHcmFwaC5kaXIpO1xuICBzdWJHcmFwaC5ub2RlcyA9IG1ha2VVbmlxKHN1YkdyYXBoLCBzdWJHcmFwaHMpLm5vZGVzO1xuICBzdWJHcmFwaHMucHVzaChzdWJHcmFwaCk7XG4gIHN1YkdyYXBoTG9va3VwW2lkXSA9IHN1YkdyYXBoO1xuICByZXR1cm4gaWQ7XG59O1xuY29uc3QgZ2V0UG9zRm9ySWQgPSBmdW5jdGlvbihpZCkge1xuICBmb3IgKGNvbnN0IFtpLCBzdWJHcmFwaF0gb2Ygc3ViR3JhcGhzLmVudHJpZXMoKSkge1xuICAgIGlmIChzdWJHcmFwaC5pZCA9PT0gaWQpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59O1xubGV0IHNlY0NvdW50ID0gLTE7XG5jb25zdCBwb3NDcm9zc1JlZiA9IFtdO1xuY29uc3QgaW5kZXhOb2RlczIgPSBmdW5jdGlvbihpZCwgcG9zKSB7XG4gIGNvbnN0IG5vZGVzID0gc3ViR3JhcGhzW3Bvc10ubm9kZXM7XG4gIHNlY0NvdW50ID0gc2VjQ291bnQgKyAxO1xuICBpZiAoc2VjQ291bnQgPiAyZTMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgcG9zQ3Jvc3NSZWZbc2VjQ291bnRdID0gcG9zO1xuICBpZiAoc3ViR3JhcGhzW3Bvc10uaWQgPT09IGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgIGNvdW50OiAwXG4gICAgfTtcbiAgfVxuICBsZXQgY291bnQgPSAwO1xuICBsZXQgcG9zQ291bnQgPSAxO1xuICB3aGlsZSAoY291bnQgPCBub2Rlcy5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGlsZFBvcyA9IGdldFBvc0ZvcklkKG5vZGVzW2NvdW50XSk7XG4gICAgaWYgKGNoaWxkUG9zID49IDApIHtcbiAgICAgIGNvbnN0IHJlcyA9IGluZGV4Tm9kZXMyKGlkLCBjaGlsZFBvcyk7XG4gICAgICBpZiAocmVzLnJlc3VsdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogdHJ1ZSxcbiAgICAgICAgICBjb3VudDogcG9zQ291bnQgKyByZXMuY291bnRcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvc0NvdW50ID0gcG9zQ291bnQgKyByZXMuY291bnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGNvdW50ID0gY291bnQgKyAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiBmYWxzZSxcbiAgICBjb3VudDogcG9zQ291bnRcbiAgfTtcbn07XG5jb25zdCBnZXREZXB0aEZpcnN0UG9zID0gZnVuY3Rpb24ocG9zKSB7XG4gIHJldHVybiBwb3NDcm9zc1JlZltwb3NdO1xufTtcbmNvbnN0IGluZGV4Tm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgc2VjQ291bnQgPSAtMTtcbiAgaWYgKHN1YkdyYXBocy5sZW5ndGggPiAwKSB7XG4gICAgaW5kZXhOb2RlczIoXCJub25lXCIsIHN1YkdyYXBocy5sZW5ndGggLSAxKTtcbiAgfVxufTtcbmNvbnN0IGdldFN1YkdyYXBocyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gc3ViR3JhcGhzO1xufTtcbmNvbnN0IGZpcnN0R3JhcGggPSAoKSA9PiB7XG4gIGlmIChmaXJzdEdyYXBoRmxhZykge1xuICAgIGZpcnN0R3JhcGhGbGFnID0gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGRlc3RydWN0U3RhcnRMaW5rID0gKF9zdHIpID0+IHtcbiAgbGV0IHN0ciA9IF9zdHIudHJpbSgpO1xuICBsZXQgdHlwZSA9IFwiYXJyb3dfb3BlblwiO1xuICBzd2l0Y2ggKHN0clswXSkge1xuICAgIGNhc2UgXCI8XCI6XG4gICAgICB0eXBlID0gXCJhcnJvd19wb2ludFwiO1xuICAgICAgc3RyID0gc3RyLnNsaWNlKDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInhcIjpcbiAgICAgIHR5cGUgPSBcImFycm93X2Nyb3NzXCI7XG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwib1wiOlxuICAgICAgdHlwZSA9IFwiYXJyb3dfY2lyY2xlXCI7XG4gICAgICBzdHIgPSBzdHIuc2xpY2UoMSk7XG4gICAgICBicmVhaztcbiAgfVxuICBsZXQgc3Ryb2tlID0gXCJub3JtYWxcIjtcbiAgaWYgKHN0ci5pbmNsdWRlcyhcIj1cIikpIHtcbiAgICBzdHJva2UgPSBcInRoaWNrXCI7XG4gIH1cbiAgaWYgKHN0ci5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICBzdHJva2UgPSBcImRvdHRlZFwiO1xuICB9XG4gIHJldHVybiB7IHR5cGUsIHN0cm9rZSB9O1xufTtcbmNvbnN0IGNvdW50Q2hhciA9IChjaGFyLCBzdHIpID0+IHtcbiAgY29uc3QgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgbGV0IGNvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmIChzdHJbaV0gPT09IGNoYXIpIHtcbiAgICAgICsrY291bnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5jb25zdCBkZXN0cnVjdEVuZExpbmsgPSAoX3N0cikgPT4ge1xuICBjb25zdCBzdHIgPSBfc3RyLnRyaW0oKTtcbiAgbGV0IGxpbmUgPSBzdHIuc2xpY2UoMCwgLTEpO1xuICBsZXQgdHlwZSA9IFwiYXJyb3dfb3BlblwiO1xuICBzd2l0Y2ggKHN0ci5zbGljZSgtMSkpIHtcbiAgICBjYXNlIFwieFwiOlxuICAgICAgdHlwZSA9IFwiYXJyb3dfY3Jvc3NcIjtcbiAgICAgIGlmIChzdHJbMF0gPT09IFwieFwiKSB7XG4gICAgICAgIHR5cGUgPSBcImRvdWJsZV9cIiArIHR5cGU7XG4gICAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIj5cIjpcbiAgICAgIHR5cGUgPSBcImFycm93X3BvaW50XCI7XG4gICAgICBpZiAoc3RyWzBdID09PSBcIjxcIikge1xuICAgICAgICB0eXBlID0gXCJkb3VibGVfXCIgKyB0eXBlO1xuICAgICAgICBsaW5lID0gbGluZS5zbGljZSgxKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJvXCI6XG4gICAgICB0eXBlID0gXCJhcnJvd19jaXJjbGVcIjtcbiAgICAgIGlmIChzdHJbMF0gPT09IFwib1wiKSB7XG4gICAgICAgIHR5cGUgPSBcImRvdWJsZV9cIiArIHR5cGU7XG4gICAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gIH1cbiAgbGV0IHN0cm9rZSA9IFwibm9ybWFsXCI7XG4gIGxldCBsZW5ndGggPSBsaW5lLmxlbmd0aCAtIDE7XG4gIGlmIChsaW5lWzBdID09PSBcIj1cIikge1xuICAgIHN0cm9rZSA9IFwidGhpY2tcIjtcbiAgfVxuICBpZiAobGluZVswXSA9PT0gXCJ+XCIpIHtcbiAgICBzdHJva2UgPSBcImludmlzaWJsZVwiO1xuICB9XG4gIGxldCBkb3RzID0gY291bnRDaGFyKFwiLlwiLCBsaW5lKTtcbiAgaWYgKGRvdHMpIHtcbiAgICBzdHJva2UgPSBcImRvdHRlZFwiO1xuICAgIGxlbmd0aCA9IGRvdHM7XG4gIH1cbiAgcmV0dXJuIHsgdHlwZSwgc3Ryb2tlLCBsZW5ndGggfTtcbn07XG5jb25zdCBkZXN0cnVjdExpbmsgPSAoX3N0ciwgX3N0YXJ0U3RyKSA9PiB7XG4gIGNvbnN0IGluZm8gPSBkZXN0cnVjdEVuZExpbmsoX3N0cik7XG4gIGxldCBzdGFydEluZm87XG4gIGlmIChfc3RhcnRTdHIpIHtcbiAgICBzdGFydEluZm8gPSBkZXN0cnVjdFN0YXJ0TGluayhfc3RhcnRTdHIpO1xuICAgIGlmIChzdGFydEluZm8uc3Ryb2tlICE9PSBpbmZvLnN0cm9rZSkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJJTlZBTElEXCIsIHN0cm9rZTogXCJJTlZBTElEXCIgfTtcbiAgICB9XG4gICAgaWYgKHN0YXJ0SW5mby50eXBlID09PSBcImFycm93X29wZW5cIikge1xuICAgICAgc3RhcnRJbmZvLnR5cGUgPSBpbmZvLnR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGFydEluZm8udHlwZSAhPT0gaW5mby50eXBlKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiSU5WQUxJRFwiLCBzdHJva2U6IFwiSU5WQUxJRFwiIH07XG4gICAgICB9XG4gICAgICBzdGFydEluZm8udHlwZSA9IFwiZG91YmxlX1wiICsgc3RhcnRJbmZvLnR5cGU7XG4gICAgfVxuICAgIGlmIChzdGFydEluZm8udHlwZSA9PT0gXCJkb3VibGVfYXJyb3dcIikge1xuICAgICAgc3RhcnRJbmZvLnR5cGUgPSBcImRvdWJsZV9hcnJvd19wb2ludFwiO1xuICAgIH1cbiAgICBzdGFydEluZm8ubGVuZ3RoID0gaW5mby5sZW5ndGg7XG4gICAgcmV0dXJuIHN0YXJ0SW5mbztcbiAgfVxuICByZXR1cm4gaW5mbztcbn07XG5jb25zdCBleGlzdHMgPSAoYWxsU2dzLCBfaWQpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBhbGxTZ3MuZm9yRWFjaCgoc2cpID0+IHtcbiAgICBjb25zdCBwb3MgPSBzZy5ub2Rlcy5pbmRleE9mKF9pZCk7XG4gICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICByZXMgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXM7XG59O1xuY29uc3QgbWFrZVVuaXEgPSAoc2csIGFsbFN1YmdyYXBocykgPT4ge1xuICBjb25zdCByZXMgPSBbXTtcbiAgc2cubm9kZXMuZm9yRWFjaCgoX2lkLCBwb3MpID0+IHtcbiAgICBpZiAoIWV4aXN0cyhhbGxTdWJncmFwaHMsIF9pZCkpIHtcbiAgICAgIHJlcy5wdXNoKHNnLm5vZGVzW3Bvc10pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7IG5vZGVzOiByZXMgfTtcbn07XG5jb25zdCBsZXggPSB7XG4gIGZpcnN0R3JhcGhcbn07XG5jb25zdCBmbG93RGIgPSB7XG4gIHBhcnNlRGlyZWN0aXZlLFxuICBkZWZhdWx0Q29uZmlnOiAoKSA9PiBkZWZhdWx0Q29uZmlnLmZsb3djaGFydCxcbiAgc2V0QWNjVGl0bGUsXG4gIGdldEFjY1RpdGxlLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGFkZFZlcnRleCxcbiAgbG9va1VwRG9tSWQsXG4gIGFkZExpbmssXG4gIHVwZGF0ZUxpbmtJbnRlcnBvbGF0ZSxcbiAgdXBkYXRlTGluayxcbiAgYWRkQ2xhc3MsXG4gIHNldERpcmVjdGlvbixcbiAgc2V0Q2xhc3MsXG4gIHNldFRvb2x0aXAsXG4gIGdldFRvb2x0aXAsXG4gIHNldENsaWNrRXZlbnQsXG4gIHNldExpbmssXG4gIGJpbmRGdW5jdGlvbnMsXG4gIGdldERpcmVjdGlvbixcbiAgZ2V0VmVydGljZXMsXG4gIGdldEVkZ2VzLFxuICBnZXRDbGFzc2VzLFxuICBjbGVhcixcbiAgc2V0R2VuLFxuICBkZWZhdWx0U3R5bGUsXG4gIGFkZFN1YkdyYXBoLFxuICBnZXREZXB0aEZpcnN0UG9zLFxuICBpbmRleE5vZGVzLFxuICBnZXRTdWJHcmFwaHMsXG4gIGRlc3RydWN0TGluayxcbiAgbGV4LFxuICBleGlzdHMsXG4gIG1ha2VVbmlxLFxuICBzZXREaWFncmFtVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZVxufTtcbmNvbnN0IGRiID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgYWRkQ2xhc3MsXG4gIGFkZExpbmssXG4gIGFkZFNpbmdsZUxpbmssXG4gIGFkZFN1YkdyYXBoLFxuICBhZGRWZXJ0ZXgsXG4gIGJpbmRGdW5jdGlvbnMsXG4gIGNsZWFyLFxuICBkZWZhdWx0OiBmbG93RGIsXG4gIGRlZmF1bHRTdHlsZSxcbiAgZGVzdHJ1Y3RMaW5rLFxuICBmaXJzdEdyYXBoLFxuICBnZXRDbGFzc2VzLFxuICBnZXREZXB0aEZpcnN0UG9zLFxuICBnZXREaXJlY3Rpb24sXG4gIGdldEVkZ2VzLFxuICBnZXRTdWJHcmFwaHMsXG4gIGdldFRvb2x0aXAsXG4gIGdldFZlcnRpY2VzLFxuICBpbmRleE5vZGVzLFxuICBsZXgsXG4gIGxvb2tVcERvbUlkLFxuICBwYXJzZURpcmVjdGl2ZSxcbiAgc2V0Q2xhc3MsXG4gIHNldENsaWNrRXZlbnQsXG4gIHNldERpcmVjdGlvbixcbiAgc2V0R2VuLFxuICBzZXRMaW5rLFxuICB1cGRhdGVMaW5rLFxuICB1cGRhdGVMaW5rSW50ZXJwb2xhdGVcbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5leHBvcnQge1xuICBkYiBhcyBkLFxuICBmbG93RGIgYXMgZixcbiAgcGFyc2VyJDEgYXMgcFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/flowDiagram-93327f21.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/flowDiagram-93327f21.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./flowDb-6a57c1b4.js */ \"../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var dagre_d3_es__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es */ \"../../../node_modules/dagre-d3-es/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_util_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/util.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/util.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/label/add-html-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_intersect_intersect_rect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/intersect/intersect-rect.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\");\n/* harmony import */ var _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./styles-5f89df53.js */ \"../../../node_modules/mermaid/dist/styles-5f89df53.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/json.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_rect_js__WEBPACK_IMPORTED_MODULE_6__.intersectRect)(node, point);\n };\n return shapeSvg;\n}\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return (0,dagre_d3_es_src_dagre_js_intersect_intersect_polygon_js__WEBPACK_IMPORTED_MODULE_5__.intersectPolygon)(node, points, point);\n };\n return shapeSvg;\n}\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = (0,dagre_d3_es_src_dagre_js_intersect_intersect_rect_js__WEBPACK_IMPORTED_MODULE_6__.intersectRect)(node, point);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\n}\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, _doc, diagObj) {\n const svg = !root ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.k)(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.c)().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = (0,dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_4__.addHtmlLabel)(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.e.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n default:\n _shape = \"rect\";\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.warn(\"Adding node\", vertex.id, vertex.domId);\n g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n labelType: \"svg\",\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: diagObj.db.lookUpDomId(vertex.id)\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.k)(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\n const styles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.k)(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n break;\n case \"dotted\":\n style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n style = \" stroke-width: 3.5px;fill:none\";\n break;\n }\n }\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.o)(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.o)(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n } else {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.o)(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.c)().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `${edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )}`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.e.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.info(\"Extracting classes\");\n diagObj.db.clear();\n try {\n diagObj.parse(text);\n return diagObj.db.getClasses();\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.error(e);\n return {};\n }\n};\nconst draw = function(text, id, _version, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.info(\"Drawing flowchart\");\n diagObj.db.clear();\n const { securityLevel, flowchart: conf2 } = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.c)();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n try {\n diagObj.parser.parse(text);\n } catch (err) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.debug(\"Parsing failed\");\n }\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n (0,d3__WEBPACK_IMPORTED_MODULE_1__.selectAll)(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.l.warn(\n \"Setting subgraph\",\n subG.nodes[j],\n diagObj.db.lookUpDomId(subG.nodes[j]),\n diagObj.db.lookUpDomId(subG.id)\n );\n g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g, diagObj);\n const render$1 = new dagre_d3_es__WEBPACK_IMPORTED_MODULE_2__.render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n const path = marker.append(\"path\").attr(\"d\", \"M 0 0 L 0 0 L 0 0 z\");\n (0,dagre_d3_es_src_dagre_js_util_js__WEBPACK_IMPORTED_MODULE_3__.applyStyle)(path, edge[type + \"Style\"]);\n };\n render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== \"undefined\") {\n const clusterRects = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"]'\n );\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const _width = clusterRects[0].width.baseVal.value;\n const cluster = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(clusterEl[0]);\n const te = cluster.select(\".label\");\n te.attr(\"transform\", `translate(${xPos + _width / 2}, ${yPos + 14})`);\n te.attr(\"id\", id + \"Text\");\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_13__.p)(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = root.select(\"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_14__.p,\n db: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_14__.f,\n renderer: _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_15__.f,\n styles: _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_15__.a,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_14__.f.clear();\n _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_14__.f.setGen(\"gen-1\");\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9mbG93RGlhZ3JhbS05MzMyN2YyMS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFnRTtBQUNGO0FBQ1Y7QUFDbUg7QUFDbEk7QUFDeUI7QUFDa0I7QUFDVztBQUNOO0FBQ1Q7QUFDekQ7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDRDtBQUNXO0FBQ0U7QUFDYjtBQUNLO0FBQ0E7QUFDSDtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUdBQWdCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sWUFBWTtBQUNsQixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLGlCQUFpQjtBQUN2QixNQUFNLGlCQUFpQjtBQUN2QixNQUFNLGFBQWE7QUFDbkIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUdBQWdCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSxZQUFZO0FBQ2xCLE1BQU0sYUFBYTtBQUNuQixNQUFNLGtCQUFrQjtBQUN4QixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsV0FBVyx5R0FBZ0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLG9CQUFvQjtBQUMxQixNQUFNLHlCQUF5QjtBQUMvQixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsV0FBVyx5R0FBZ0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLG9CQUFvQjtBQUMxQixNQUFNLG9CQUFvQjtBQUMxQixN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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsTUFBTSxtREFBTTtBQUNaLFlBQVksbURBQWM7QUFDMUIsVUFBVSxtREFBVTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlEQUFZO0FBQ2hCLElBQUksMERBQWE7QUFDakI7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvZmxvd0RpYWdyYW0tOTMzMjdmMjEuanM/ZGNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwIGFzIHBhcnNlciwgZiBhcyBmbG93RGIgfSBmcm9tIFwiLi9mbG93RGItNmE1N2MxYjQuanNcIjtcbmltcG9ydCAqIGFzIGdyYXBobGliIGZyb20gXCJkYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvaW5kZXguanNcIjtcbmltcG9ydCB7IHNlbGVjdCwgY3VydmVMaW5lYXIsIHNlbGVjdEFsbCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgayBhcyBnZXRTdHlsZXNGcm9tQXJyYXksIG4gYXMgZXZhbHVhdGUsIGMgYXMgZ2V0Q29uZmlnLCBlIGFzIGNvbW1vbiwgbCBhcyBsb2csIG8gYXMgaW50ZXJwb2xhdGVUb0N1cnZlLCBwIGFzIHNldHVwR3JhcGhWaWV3Ym94IH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSBcImRhZ3JlLWQzLWVzXCI7XG5pbXBvcnQgeyBhcHBseVN0eWxlIH0gZnJvbSBcImRhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy91dGlsLmpzXCI7XG5pbXBvcnQgeyBhZGRIdG1sTGFiZWwgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2xhYmVsL2FkZC1odG1sLWxhYmVsLmpzXCI7XG5pbXBvcnQgeyBpbnRlcnNlY3RQb2x5Z29uIH0gZnJvbSBcImRhZ3JlLWQzLWVzL3NyYy9kYWdyZS1qcy9pbnRlcnNlY3QvaW50ZXJzZWN0LXBvbHlnb24uanNcIjtcbmltcG9ydCB7IGludGVyc2VjdFJlY3QgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2ludGVyc2VjdC9pbnRlcnNlY3QtcmVjdC5qc1wiO1xuaW1wb3J0IHsgZiBhcyBmbG93UmVuZGVyZXJWMiwgYSBhcyBmbG93U3R5bGVzIH0gZnJvbSBcIi4vc3R5bGVzLTVmODlkZjUzLmpzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5pbXBvcnQgXCIuL2luZGV4LWE5MmFjNDA0LmpzXCI7XG5pbXBvcnQgXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUvaW5kZXguanNcIjtcbmltcG9ydCBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzXCI7XG5pbXBvcnQgXCIuL2VkZ2VzLTQ5YWM0M2EyLmpzXCI7XG5pbXBvcnQgXCIuL2NyZWF0ZVRleHQtM2RmNjMwYjUuanNcIjtcbmltcG9ydCBcIm1kYXN0LXV0aWwtZnJvbS1tYXJrZG93blwiO1xuaW1wb3J0IFwiLi9zdmdEcmF3LTBmY2M4MTNkLmpzXCI7XG5mdW5jdGlvbiBxdWVzdGlvbihwYXJlbnQsIGJib3gsIG5vZGUpIHtcbiAgY29uc3QgdyA9IGJib3gud2lkdGg7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodDtcbiAgY29uc3QgcyA9ICh3ICsgaCkgKiAwLjk7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IHMgLyAyLCB5OiAwIH0sXG4gICAgeyB4OiBzLCB5OiAtcyAvIDIgfSxcbiAgICB7IHg6IHMgLyAyLCB5OiAtcyB9LFxuICAgIHsgeDogMCwgeTogLXMgLyAyIH1cbiAgXTtcbiAgY29uc3Qgc2hhcGVTdmcgPSBpbnNlcnRQb2x5Z29uU2hhcGUocGFyZW50LCBzLCBzLCBwb2ludHMpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIGludGVyc2VjdFBvbHlnb24obm9kZSwgcG9pbnRzLCBwb2ludCk7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn1cbmZ1bmN0aW9uIGhleGFnb24ocGFyZW50LCBiYm94LCBub2RlKSB7XG4gIGNvbnN0IGYgPSA0O1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQ7XG4gIGNvbnN0IG0gPSBoIC8gZjtcbiAgY29uc3QgdyA9IGJib3gud2lkdGggKyAyICogbTtcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIHsgeDogbSwgeTogMCB9LFxuICAgIHsgeDogdyAtIG0sIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IC1oIC8gMiB9LFxuICAgIHsgeDogdyAtIG0sIHk6IC1oIH0sXG4gICAgeyB4OiBtLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggLyAyIH1cbiAgXTtcbiAgY29uc3Qgc2hhcGVTdmcgPSBpbnNlcnRQb2x5Z29uU2hhcGUocGFyZW50LCB3LCBoLCBwb2ludHMpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIGludGVyc2VjdFBvbHlnb24obm9kZSwgcG9pbnRzLCBwb2ludCk7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn1cbmZ1bmN0aW9uIHJlY3RfbGVmdF9pbnZfYXJyb3cocGFyZW50LCBiYm94LCBub2RlKSB7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoO1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQ7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IC1oIC8gMiwgeTogMCB9LFxuICAgIHsgeDogdywgeTogMCB9LFxuICAgIHsgeDogdywgeTogLWggfSxcbiAgICB7IHg6IC1oIC8gMiwgeTogLWggfSxcbiAgICB7IHg6IDAsIHk6IC1oIC8gMiB9XG4gIF07XG4gIGNvbnN0IHNoYXBlU3ZnID0gaW5zZXJ0UG9seWdvblNoYXBlKHBhcmVudCwgdywgaCwgcG9pbnRzKTtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludCkge1xuICAgIHJldHVybiBpbnRlcnNlY3RQb2x5Z29uKG5vZGUsIHBvaW50cywgcG9pbnQpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59XG5mdW5jdGlvbiBsZWFuX3JpZ2h0KHBhcmVudCwgYmJveCwgbm9kZSkge1xuICBjb25zdCB3ID0gYmJveC53aWR0aDtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0O1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAtMiAqIGggLyA2LCB5OiAwIH0sXG4gICAgeyB4OiB3IC0gaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyAyICogaCAvIDYsIHk6IC1oIH0sXG4gICAgeyB4OiBoIC8gNiwgeTogLWggfVxuICBdO1xuICBjb25zdCBzaGFwZVN2ZyA9IGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cyk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gbGVhbl9sZWZ0KHBhcmVudCwgYmJveCwgbm9kZSkge1xuICBjb25zdCB3ID0gYmJveC53aWR0aDtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0O1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAyICogaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyBoIC8gNiwgeTogMCB9LFxuICAgIHsgeDogdyAtIDIgKiBoIC8gNiwgeTogLWggfSxcbiAgICB7IHg6IC1oIC8gNiwgeTogLWggfVxuICBdO1xuICBjb25zdCBzaGFwZVN2ZyA9IGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cyk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gdHJhcGV6b2lkKHBhcmVudCwgYmJveCwgbm9kZSkge1xuICBjb25zdCB3ID0gYmJveC53aWR0aDtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0O1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAtMiAqIGggLyA2LCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgMiAqIGggLyA2LCB5OiAwIH0sXG4gICAgeyB4OiB3IC0gaCAvIDYsIHk6IC1oIH0sXG4gICAgeyB4OiBoIC8gNiwgeTogLWggfVxuICBdO1xuICBjb25zdCBzaGFwZVN2ZyA9IGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cyk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gaW52X3RyYXBlem9pZChwYXJlbnQsIGJib3gsIG5vZGUpIHtcbiAgY29uc3QgdyA9IGJib3gud2lkdGg7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodDtcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIHsgeDogaCAvIDYsIHk6IDAgfSxcbiAgICB7IHg6IHcgLSBoIC8gNiwgeTogMCB9LFxuICAgIHsgeDogdyArIDIgKiBoIC8gNiwgeTogLWggfSxcbiAgICB7IHg6IC0yICogaCAvIDYsIHk6IC1oIH1cbiAgXTtcbiAgY29uc3Qgc2hhcGVTdmcgPSBpbnNlcnRQb2x5Z29uU2hhcGUocGFyZW50LCB3LCBoLCBwb2ludHMpO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIGludGVyc2VjdFBvbHlnb24obm9kZSwgcG9pbnRzLCBwb2ludCk7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn1cbmZ1bmN0aW9uIHJlY3RfcmlnaHRfaW52X2Fycm93KHBhcmVudCwgYmJveCwgbm9kZSkge1xuICBjb25zdCB3ID0gYmJveC53aWR0aDtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0O1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiAwLCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgaCAvIDIsIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IC1oIC8gMiB9LFxuICAgIHsgeDogdyArIGggLyAyLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogLWggfVxuICBdO1xuICBjb25zdCBzaGFwZVN2ZyA9IGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cyk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gc3RhZGl1bShwYXJlbnQsIGJib3gsIG5vZGUpIHtcbiAgY29uc3QgaCA9IGJib3guaGVpZ2h0O1xuICBjb25zdCB3ID0gYmJveC53aWR0aCArIGggLyA0O1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpLmF0dHIoXCJyeFwiLCBoIC8gMikuYXR0cihcInJ5XCIsIGggLyAyKS5hdHRyKFwieFwiLCAtdyAvIDIpLmF0dHIoXCJ5XCIsIC1oIC8gMikuYXR0cihcIndpZHRoXCIsIHcpLmF0dHIoXCJoZWlnaHRcIiwgaCk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChub2RlLCBwb2ludCk7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn1cbmZ1bmN0aW9uIHN1YnJvdXRpbmUocGFyZW50LCBiYm94LCBub2RlKSB7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoO1xuICBjb25zdCBoID0gYmJveC5oZWlnaHQ7XG4gIGNvbnN0IHBvaW50cyA9IFtcbiAgICB7IHg6IDAsIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IDAgfSxcbiAgICB7IHg6IHcsIHk6IC1oIH0sXG4gICAgeyB4OiAwLCB5OiAtaCB9LFxuICAgIHsgeDogMCwgeTogMCB9LFxuICAgIHsgeDogLTgsIHk6IDAgfSxcbiAgICB7IHg6IHcgKyA4LCB5OiAwIH0sXG4gICAgeyB4OiB3ICsgOCwgeTogLWggfSxcbiAgICB7IHg6IC04LCB5OiAtaCB9LFxuICAgIHsgeDogLTgsIHk6IDAgfVxuICBdO1xuICBjb25zdCBzaGFwZVN2ZyA9IGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cyk7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UG9seWdvbihub2RlLCBwb2ludHMsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gY3lsaW5kZXIocGFyZW50LCBiYm94LCBub2RlKSB7XG4gIGNvbnN0IHcgPSBiYm94LndpZHRoO1xuICBjb25zdCByeCA9IHcgLyAyO1xuICBjb25zdCByeSA9IHJ4IC8gKDIuNSArIHcgLyA1MCk7XG4gIGNvbnN0IGggPSBiYm94LmhlaWdodCArIHJ5O1xuICBjb25zdCBzaGFwZSA9IFwiTSAwLFwiICsgcnkgKyBcIiBhIFwiICsgcnggKyBcIixcIiArIHJ5ICsgXCIgMCwwLDAgXCIgKyB3ICsgXCIgMCBhIFwiICsgcnggKyBcIixcIiArIHJ5ICsgXCIgMCwwLDAgXCIgKyAtdyArIFwiIDAgbCAwLFwiICsgaCArIFwiIGEgXCIgKyByeCArIFwiLFwiICsgcnkgKyBcIiAwLDAsMCBcIiArIHcgKyBcIiAwIGwgMCxcIiArIC1oO1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5hdHRyKFwibGFiZWwtb2Zmc2V0LXlcIiwgcnkpLmluc2VydChcInBhdGhcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcImRcIiwgc2hhcGUpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAtdyAvIDIgKyBcIixcIiArIC0oaCAvIDIgKyByeSkgKyBcIilcIik7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICBjb25zdCBwb3MgPSBpbnRlcnNlY3RSZWN0KG5vZGUsIHBvaW50KTtcbiAgICBjb25zdCB4ID0gcG9zLnggLSBub2RlLng7XG4gICAgaWYgKHJ4ICE9IDAgJiYgKE1hdGguYWJzKHgpIDwgbm9kZS53aWR0aCAvIDIgfHwgTWF0aC5hYnMoeCkgPT0gbm9kZS53aWR0aCAvIDIgJiYgTWF0aC5hYnMocG9zLnkgLSBub2RlLnkpID4gbm9kZS5oZWlnaHQgLyAyIC0gcnkpKSB7XG4gICAgICBsZXQgeSA9IHJ5ICogcnkgKiAoMSAtIHggKiB4IC8gKHJ4ICogcngpKTtcbiAgICAgIGlmICh5ICE9IDApIHtcbiAgICAgICAgeSA9IE1hdGguc3FydCh5KTtcbiAgICAgIH1cbiAgICAgIHkgPSByeSAtIHk7XG4gICAgICBpZiAocG9pbnQueSAtIG5vZGUueSA+IDApIHtcbiAgICAgICAgeSA9IC15O1xuICAgICAgfVxuICAgICAgcG9zLnkgKz0geTtcbiAgICB9XG4gICAgcmV0dXJuIHBvcztcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufVxuZnVuY3Rpb24gYWRkVG9SZW5kZXIocmVuZGVyMikge1xuICByZW5kZXIyLnNoYXBlcygpLnF1ZXN0aW9uID0gcXVlc3Rpb247XG4gIHJlbmRlcjIuc2hhcGVzKCkuaGV4YWdvbiA9IGhleGFnb247XG4gIHJlbmRlcjIuc2hhcGVzKCkuc3RhZGl1bSA9IHN0YWRpdW07XG4gIHJlbmRlcjIuc2hhcGVzKCkuc3Vicm91dGluZSA9IHN1YnJvdXRpbmU7XG4gIHJlbmRlcjIuc2hhcGVzKCkuY3lsaW5kZXIgPSBjeWxpbmRlcjtcbiAgcmVuZGVyMi5zaGFwZXMoKS5yZWN0X2xlZnRfaW52X2Fycm93ID0gcmVjdF9sZWZ0X2ludl9hcnJvdztcbiAgcmVuZGVyMi5zaGFwZXMoKS5sZWFuX3JpZ2h0ID0gbGVhbl9yaWdodDtcbiAgcmVuZGVyMi5zaGFwZXMoKS5sZWFuX2xlZnQgPSBsZWFuX2xlZnQ7XG4gIHJlbmRlcjIuc2hhcGVzKCkudHJhcGV6b2lkID0gdHJhcGV6b2lkO1xuICByZW5kZXIyLnNoYXBlcygpLmludl90cmFwZXpvaWQgPSBpbnZfdHJhcGV6b2lkO1xuICByZW5kZXIyLnNoYXBlcygpLnJlY3RfcmlnaHRfaW52X2Fycm93ID0gcmVjdF9yaWdodF9pbnZfYXJyb3c7XG59XG5mdW5jdGlvbiBhZGRUb1JlbmRlclYyKGFkZFNoYXBlKSB7XG4gIGFkZFNoYXBlKHsgcXVlc3Rpb24gfSk7XG4gIGFkZFNoYXBlKHsgaGV4YWdvbiB9KTtcbiAgYWRkU2hhcGUoeyBzdGFkaXVtIH0pO1xuICBhZGRTaGFwZSh7IHN1YnJvdXRpbmUgfSk7XG4gIGFkZFNoYXBlKHsgY3lsaW5kZXIgfSk7XG4gIGFkZFNoYXBlKHsgcmVjdF9sZWZ0X2ludl9hcnJvdyB9KTtcbiAgYWRkU2hhcGUoeyBsZWFuX3JpZ2h0IH0pO1xuICBhZGRTaGFwZSh7IGxlYW5fbGVmdCB9KTtcbiAgYWRkU2hhcGUoeyB0cmFwZXpvaWQgfSk7XG4gIGFkZFNoYXBlKHsgaW52X3RyYXBlem9pZCB9KTtcbiAgYWRkU2hhcGUoeyByZWN0X3JpZ2h0X2ludl9hcnJvdyB9KTtcbn1cbmZ1bmN0aW9uIGluc2VydFBvbHlnb25TaGFwZShwYXJlbnQsIHcsIGgsIHBvaW50cykge1xuICByZXR1cm4gcGFyZW50Lmluc2VydChcInBvbHlnb25cIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcbiAgICBcInBvaW50c1wiLFxuICAgIHBvaW50cy5tYXAoZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGQueCArIFwiLFwiICsgZC55O1xuICAgIH0pLmpvaW4oXCIgXCIpXG4gICkuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIC13IC8gMiArIFwiLFwiICsgaCAvIDIgKyBcIilcIik7XG59XG5jb25zdCBmbG93Q2hhcnRTaGFwZXMgPSB7XG4gIGFkZFRvUmVuZGVyLFxuICBhZGRUb1JlbmRlclYyXG59O1xuY29uc3QgY29uZiA9IHt9O1xuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKGNuZikge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY25mKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbmZba2V5XSA9IGNuZltrZXldO1xuICB9XG59O1xuY29uc3QgYWRkVmVydGljZXMgPSBmdW5jdGlvbih2ZXJ0LCBnLCBzdmdJZCwgcm9vdCwgX2RvYywgZGlhZ09iaikge1xuICBjb25zdCBzdmcgPSAhcm9vdCA/IHNlbGVjdChgW2lkPVwiJHtzdmdJZH1cIl1gKSA6IHJvb3Quc2VsZWN0KGBbaWQ9XCIke3N2Z0lkfVwiXWApO1xuICBjb25zdCBkb2MgPSAhX2RvYyA/IGRvY3VtZW50IDogX2RvYztcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZlcnQpO1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBjb25zdCB2ZXJ0ZXggPSB2ZXJ0W2lkXTtcbiAgICBsZXQgY2xhc3NTdHIgPSBcImRlZmF1bHRcIjtcbiAgICBpZiAodmVydGV4LmNsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgY2xhc3NTdHIgPSB2ZXJ0ZXguY2xhc3Nlcy5qb2luKFwiIFwiKTtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzRnJvbUFycmF5KHZlcnRleC5zdHlsZXMpO1xuICAgIGxldCB2ZXJ0ZXhUZXh0ID0gdmVydGV4LnRleHQgIT09IHZvaWQgMCA/IHZlcnRleC50ZXh0IDogdmVydGV4LmlkO1xuICAgIGxldCB2ZXJ0ZXhOb2RlO1xuICAgIGlmIChldmFsdWF0ZShnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICAgIGxhYmVsOiB2ZXJ0ZXhUZXh0LnJlcGxhY2UoXG4gICAgICAgICAgL2ZhW2JscnNdPzpmYS1bXFx3LV0rL2csXG4gICAgICAgICAgKHMpID0+IGA8aSBjbGFzcz0nJHtzLnJlcGxhY2UoXCI6XCIsIFwiIFwiKX0nPjwvaT5gXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgICB2ZXJ0ZXhOb2RlID0gYWRkSHRtbExhYmVsKHN2Zywgbm9kZSkubm9kZSgpO1xuICAgICAgdmVydGV4Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHZlcnRleE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdmdMYWJlbCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRleHRcIik7XG4gICAgICBzdmdMYWJlbC5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBzdHlsZXMubGFiZWxTdHlsZS5yZXBsYWNlKFwiY29sb3I6XCIsIFwiZmlsbDpcIikpO1xuICAgICAgY29uc3Qgcm93cyA9IHZlcnRleFRleHQuc3BsaXQoY29tbW9uLmxpbmVCcmVha1JlZ2V4KTtcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgY29uc3QgdHNwYW4gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJ0c3BhblwiKTtcbiAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwgXCJ4bWw6c3BhY2VcIiwgXCJwcmVzZXJ2ZVwiKTtcbiAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwiZHlcIiwgXCIxZW1cIik7XG4gICAgICAgIHRzcGFuLnNldEF0dHJpYnV0ZShcInhcIiwgXCIxXCIpO1xuICAgICAgICB0c3Bhbi50ZXh0Q29udGVudCA9IHJvdztcbiAgICAgICAgc3ZnTGFiZWwuYXBwZW5kQ2hpbGQodHNwYW4pO1xuICAgICAgfVxuICAgICAgdmVydGV4Tm9kZSA9IHN2Z0xhYmVsO1xuICAgIH1cbiAgICBsZXQgcmFkaW91cyA9IDA7XG4gICAgbGV0IF9zaGFwZSA9IFwiXCI7XG4gICAgc3dpdGNoICh2ZXJ0ZXgudHlwZSkge1xuICAgICAgY2FzZSBcInJvdW5kXCI6XG4gICAgICAgIHJhZGlvdXMgPSA1O1xuICAgICAgICBfc2hhcGUgPSBcInJlY3RcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic3F1YXJlXCI6XG4gICAgICAgIF9zaGFwZSA9IFwicmVjdFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgICAgIF9zaGFwZSA9IFwicXVlc3Rpb25cIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaGV4YWdvblwiOlxuICAgICAgICBfc2hhcGUgPSBcImhleGFnb25cIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib2RkXCI6XG4gICAgICAgIF9zaGFwZSA9IFwicmVjdF9sZWZ0X2ludl9hcnJvd1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJsZWFuX3JpZ2h0XCI6XG4gICAgICAgIF9zaGFwZSA9IFwibGVhbl9yaWdodFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJsZWFuX2xlZnRcIjpcbiAgICAgICAgX3NoYXBlID0gXCJsZWFuX2xlZnRcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidHJhcGV6b2lkXCI6XG4gICAgICAgIF9zaGFwZSA9IFwidHJhcGV6b2lkXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImludl90cmFwZXpvaWRcIjpcbiAgICAgICAgX3NoYXBlID0gXCJpbnZfdHJhcGV6b2lkXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9kZF9yaWdodFwiOlxuICAgICAgICBfc2hhcGUgPSBcInJlY3RfbGVmdF9pbnZfYXJyb3dcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY2lyY2xlXCI6XG4gICAgICAgIF9zaGFwZSA9IFwiY2lyY2xlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImVsbGlwc2VcIjpcbiAgICAgICAgX3NoYXBlID0gXCJlbGxpcHNlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInN0YWRpdW1cIjpcbiAgICAgICAgX3NoYXBlID0gXCJzdGFkaXVtXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInN1YnJvdXRpbmVcIjpcbiAgICAgICAgX3NoYXBlID0gXCJzdWJyb3V0aW5lXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImN5bGluZGVyXCI6XG4gICAgICAgIF9zaGFwZSA9IFwiY3lsaW5kZXJcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcbiAgICAgICAgX3NoYXBlID0gXCJyZWN0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgX3NoYXBlID0gXCJyZWN0XCI7XG4gICAgfVxuICAgIGxvZy53YXJuKFwiQWRkaW5nIG5vZGVcIiwgdmVydGV4LmlkLCB2ZXJ0ZXguZG9tSWQpO1xuICAgIGcuc2V0Tm9kZShkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHZlcnRleC5pZCksIHtcbiAgICAgIGxhYmVsVHlwZTogXCJzdmdcIixcbiAgICAgIGxhYmVsU3R5bGU6IHN0eWxlcy5sYWJlbFN0eWxlLFxuICAgICAgc2hhcGU6IF9zaGFwZSxcbiAgICAgIGxhYmVsOiB2ZXJ0ZXhOb2RlLFxuICAgICAgcng6IHJhZGlvdXMsXG4gICAgICByeTogcmFkaW91cyxcbiAgICAgIGNsYXNzOiBjbGFzc1N0cixcbiAgICAgIHN0eWxlOiBzdHlsZXMuc3R5bGUsXG4gICAgICBpZDogZGlhZ09iai5kYi5sb29rVXBEb21JZCh2ZXJ0ZXguaWQpXG4gICAgfSk7XG4gIH0pO1xufTtcbmNvbnN0IGFkZEVkZ2VzID0gZnVuY3Rpb24oZWRnZXMsIGcsIGRpYWdPYmopIHtcbiAgbGV0IGNudCA9IDA7XG4gIGxldCBkZWZhdWx0U3R5bGU7XG4gIGxldCBkZWZhdWx0TGFiZWxTdHlsZTtcbiAgaWYgKGVkZ2VzLmRlZmF1bHRTdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0eWxlcyA9IGdldFN0eWxlc0Zyb21BcnJheShlZGdlcy5kZWZhdWx0U3R5bGUpO1xuICAgIGRlZmF1bHRTdHlsZSA9IGRlZmF1bHRTdHlsZXMuc3R5bGU7XG4gICAgZGVmYXVsdExhYmVsU3R5bGUgPSBkZWZhdWx0U3R5bGVzLmxhYmVsU3R5bGU7XG4gIH1cbiAgZWRnZXMuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgY250Kys7XG4gICAgY29uc3QgbGlua0lkID0gXCJMLVwiICsgZWRnZS5zdGFydCArIFwiLVwiICsgZWRnZS5lbmQ7XG4gICAgY29uc3QgbGlua05hbWVTdGFydCA9IFwiTFMtXCIgKyBlZGdlLnN0YXJ0O1xuICAgIGNvbnN0IGxpbmtOYW1lRW5kID0gXCJMRS1cIiArIGVkZ2UuZW5kO1xuICAgIGNvbnN0IGVkZ2VEYXRhID0ge307XG4gICAgaWYgKGVkZ2UudHlwZSA9PT0gXCJhcnJvd19vcGVuXCIpIHtcbiAgICAgIGVkZ2VEYXRhLmFycm93aGVhZCA9IFwibm9uZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGdlRGF0YS5hcnJvd2hlYWQgPSBcIm5vcm1hbFwiO1xuICAgIH1cbiAgICBsZXQgc3R5bGUgPSBcIlwiO1xuICAgIGxldCBsYWJlbFN0eWxlID0gXCJcIjtcbiAgICBpZiAoZWRnZS5zdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCBzdHlsZXMgPSBnZXRTdHlsZXNGcm9tQXJyYXkoZWRnZS5zdHlsZSk7XG4gICAgICBzdHlsZSA9IHN0eWxlcy5zdHlsZTtcbiAgICAgIGxhYmVsU3R5bGUgPSBzdHlsZXMubGFiZWxTdHlsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChlZGdlLnN0cm9rZSkge1xuICAgICAgICBjYXNlIFwibm9ybWFsXCI6XG4gICAgICAgICAgc3R5bGUgPSBcImZpbGw6bm9uZVwiO1xuICAgICAgICAgIGlmIChkZWZhdWx0U3R5bGUgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgc3R5bGUgPSBkZWZhdWx0U3R5bGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZWZhdWx0TGFiZWxTdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBsYWJlbFN0eWxlID0gZGVmYXVsdExhYmVsU3R5bGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZG90dGVkXCI6XG4gICAgICAgICAgc3R5bGUgPSBcImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1kYXNoYXJyYXk6MztcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRoaWNrXCI6XG4gICAgICAgICAgc3R5bGUgPSBcIiBzdHJva2Utd2lkdGg6IDMuNXB4O2ZpbGw6bm9uZVwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBlZGdlRGF0YS5zdHlsZSA9IHN0eWxlO1xuICAgIGVkZ2VEYXRhLmxhYmVsU3R5bGUgPSBsYWJlbFN0eWxlO1xuICAgIGlmIChlZGdlLmludGVycG9sYXRlICE9PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VEYXRhLmN1cnZlID0gaW50ZXJwb2xhdGVUb0N1cnZlKGVkZ2UuaW50ZXJwb2xhdGUsIGN1cnZlTGluZWFyKTtcbiAgICB9IGVsc2UgaWYgKGVkZ2VzLmRlZmF1bHRJbnRlcnBvbGF0ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBlZGdlRGF0YS5jdXJ2ZSA9IGludGVycG9sYXRlVG9DdXJ2ZShlZGdlcy5kZWZhdWx0SW50ZXJwb2xhdGUsIGN1cnZlTGluZWFyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZURhdGEuY3VydmUgPSBpbnRlcnBvbGF0ZVRvQ3VydmUoY29uZi5jdXJ2ZSwgY3VydmVMaW5lYXIpO1xuICAgIH1cbiAgICBpZiAoZWRnZS50ZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIGlmIChlZGdlLnN0eWxlICE9PSB2b2lkIDApIHtcbiAgICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIGVkZ2VEYXRhLmxhYmVscG9zID0gXCJjXCI7XG4gICAgICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgICAgIGVkZ2VEYXRhLmxhYmVsVHlwZSA9IFwiaHRtbFwiO1xuICAgICAgICBlZGdlRGF0YS5sYWJlbCA9IGA8c3BhbiBpZD1cIkwtJHtsaW5rSWR9XCIgY2xhc3M9XCJlZGdlTGFiZWwgTC0ke2xpbmtOYW1lU3RhcnR9JyBMLSR7bGlua05hbWVFbmR9XCIgc3R5bGU9XCIke2VkZ2VEYXRhLmxhYmVsU3R5bGV9XCI+JHtlZGdlLnRleHQucmVwbGFjZShcbiAgICAgICAgICAvZmFbYmxyc10/OmZhLVtcXHctXSsvZyxcbiAgICAgICAgICAocykgPT4gYDxpIGNsYXNzPScke3MucmVwbGFjZShcIjpcIiwgXCIgXCIpfSc+PC9pPmBcbiAgICAgICAgKX08L3NwYW4+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkZ2VEYXRhLmxhYmVsVHlwZSA9IFwidGV4dFwiO1xuICAgICAgICBlZGdlRGF0YS5sYWJlbCA9IGVkZ2UudGV4dC5yZXBsYWNlKGNvbW1vbi5saW5lQnJlYWtSZWdleCwgXCJcXG5cIik7XG4gICAgICAgIGlmIChlZGdlLnN0eWxlID09PSB2b2lkIDApIHtcbiAgICAgICAgICBlZGdlRGF0YS5zdHlsZSA9IGVkZ2VEYXRhLnN0eWxlIHx8IFwic3Ryb2tlOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O2ZpbGw6bm9uZVwiO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2VEYXRhLmxhYmVsU3R5bGUgPSBlZGdlRGF0YS5sYWJlbFN0eWxlLnJlcGxhY2UoXCJjb2xvcjpcIiwgXCJmaWxsOlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWRnZURhdGEuaWQgPSBsaW5rSWQ7XG4gICAgZWRnZURhdGEuY2xhc3MgPSBsaW5rTmFtZVN0YXJ0ICsgXCIgXCIgKyBsaW5rTmFtZUVuZDtcbiAgICBlZGdlRGF0YS5taW5sZW4gPSBlZGdlLmxlbmd0aCB8fCAxO1xuICAgIGcuc2V0RWRnZShkaWFnT2JqLmRiLmxvb2tVcERvbUlkKGVkZ2Uuc3RhcnQpLCBkaWFnT2JqLmRiLmxvb2tVcERvbUlkKGVkZ2UuZW5kKSwgZWRnZURhdGEsIGNudCk7XG4gIH0pO1xufTtcbmNvbnN0IGdldENsYXNzZXMgPSBmdW5jdGlvbih0ZXh0LCBkaWFnT2JqKSB7XG4gIGxvZy5pbmZvKFwiRXh0cmFjdGluZyBjbGFzc2VzXCIpO1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIHRyeSB7XG4gICAgZGlhZ09iai5wYXJzZSh0ZXh0KTtcbiAgICByZXR1cm4gZGlhZ09iai5kYi5nZXRDbGFzc2VzKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3IoZSk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuY29uc3QgZHJhdyA9IGZ1bmN0aW9uKHRleHQsIGlkLCBfdmVyc2lvbiwgZGlhZ09iaikge1xuICBsb2cuaW5mbyhcIkRyYXdpbmcgZmxvd2NoYXJ0XCIpO1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIGNvbnN0IHsgc2VjdXJpdHlMZXZlbCwgZmxvd2NoYXJ0OiBjb25mMiB9ID0gZ2V0Q29uZmlnKCk7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IGRvYyA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudDtcbiAgdHJ5IHtcbiAgICBkaWFnT2JqLnBhcnNlci5wYXJzZSh0ZXh0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmRlYnVnKFwiUGFyc2luZyBmYWlsZWRcIik7XG4gIH1cbiAgbGV0IGRpciA9IGRpYWdPYmouZGIuZ2V0RGlyZWN0aW9uKCk7XG4gIGlmIChkaXIgPT09IHZvaWQgMCkge1xuICAgIGRpciA9IFwiVERcIjtcbiAgfVxuICBjb25zdCBub2RlU3BhY2luZyA9IGNvbmYyLm5vZGVTcGFjaW5nIHx8IDUwO1xuICBjb25zdCByYW5rU3BhY2luZyA9IGNvbmYyLnJhbmtTcGFjaW5nIHx8IDUwO1xuICBjb25zdCBnID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgIGNvbXBvdW5kOiB0cnVlXG4gIH0pLnNldEdyYXBoKHtcbiAgICByYW5rZGlyOiBkaXIsXG4gICAgbm9kZXNlcDogbm9kZVNwYWNpbmcsXG4gICAgcmFua3NlcDogcmFua1NwYWNpbmcsXG4gICAgbWFyZ2lueDogOCxcbiAgICBtYXJnaW55OiA4XG4gIH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgbGV0IHN1Ykc7XG4gIGNvbnN0IHN1YkdyYXBocyA9IGRpYWdPYmouZGIuZ2V0U3ViR3JhcGhzKCk7XG4gIGZvciAobGV0IGkyID0gc3ViR3JhcGhzLmxlbmd0aCAtIDE7IGkyID49IDA7IGkyLS0pIHtcbiAgICBzdWJHID0gc3ViR3JhcGhzW2kyXTtcbiAgICBkaWFnT2JqLmRiLmFkZFZlcnRleChzdWJHLmlkLCBzdWJHLnRpdGxlLCBcImdyb3VwXCIsIHZvaWQgMCwgc3ViRy5jbGFzc2VzKTtcbiAgfVxuICBjb25zdCB2ZXJ0ID0gZGlhZ09iai5kYi5nZXRWZXJ0aWNlcygpO1xuICBsb2cud2FybihcIkdldCB2ZXJ0aWNlc1wiLCB2ZXJ0KTtcbiAgY29uc3QgZWRnZXMgPSBkaWFnT2JqLmRiLmdldEVkZ2VzKCk7XG4gIGxldCBpID0gMDtcbiAgZm9yIChpID0gc3ViR3JhcGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgc3ViRyA9IHN1YkdyYXBoc1tpXTtcbiAgICBzZWxlY3RBbGwoXCJjbHVzdGVyXCIpLmFwcGVuZChcInRleHRcIik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdWJHLm5vZGVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsb2cud2FybihcbiAgICAgICAgXCJTZXR0aW5nIHN1YmdyYXBoXCIsXG4gICAgICAgIHN1Ykcubm9kZXNbal0sXG4gICAgICAgIGRpYWdPYmouZGIubG9va1VwRG9tSWQoc3ViRy5ub2Rlc1tqXSksXG4gICAgICAgIGRpYWdPYmouZGIubG9va1VwRG9tSWQoc3ViRy5pZClcbiAgICAgICk7XG4gICAgICBnLnNldFBhcmVudChkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHN1Ykcubm9kZXNbal0pLCBkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHN1YkcuaWQpKTtcbiAgICB9XG4gIH1cbiAgYWRkVmVydGljZXModmVydCwgZywgaWQsIHJvb3QsIGRvYywgZGlhZ09iaik7XG4gIGFkZEVkZ2VzKGVkZ2VzLCBnLCBkaWFnT2JqKTtcbiAgY29uc3QgcmVuZGVyJDEgPSBuZXcgcmVuZGVyKCk7XG4gIGZsb3dDaGFydFNoYXBlcy5hZGRUb1JlbmRlcihyZW5kZXIkMSk7XG4gIHJlbmRlciQxLmFycm93cygpLm5vbmUgPSBmdW5jdGlvbiBub3JtYWwocGFyZW50LCBpZDIsIGVkZ2UsIHR5cGUpIHtcbiAgICBjb25zdCBtYXJrZXIgPSBwYXJlbnQuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBpZDIpLmF0dHIoXCJ2aWV3Qm94XCIsIFwiMCAwIDEwIDEwXCIpLmF0dHIoXCJyZWZYXCIsIDkpLmF0dHIoXCJyZWZZXCIsIDUpLmF0dHIoXCJtYXJrZXJVbml0c1wiLCBcInN0cm9rZVdpZHRoXCIpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCA4KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDYpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpO1xuICAgIGNvbnN0IHBhdGggPSBtYXJrZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMCAwIEwgMCAwIEwgMCAwIHpcIik7XG4gICAgYXBwbHlTdHlsZShwYXRoLCBlZGdlW3R5cGUgKyBcIlN0eWxlXCJdKTtcbiAgfTtcbiAgcmVuZGVyJDEuYXJyb3dzKCkubm9ybWFsID0gZnVuY3Rpb24gbm9ybWFsKHBhcmVudCwgaWQyKSB7XG4gICAgY29uc3QgbWFya2VyID0gcGFyZW50LmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgaWQyKS5hdHRyKFwidmlld0JveFwiLCBcIjAgMCAxMCAxMFwiKS5hdHRyKFwicmVmWFwiLCA5KS5hdHRyKFwicmVmWVwiLCA1KS5hdHRyKFwibWFya2VyVW5pdHNcIiwgXCJzdHJva2VXaWR0aFwiKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgOCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCA2KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKTtcbiAgICBtYXJrZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBcIk0gMCAwIEwgMTAgNSBMIDAgMTAgelwiKS5hdHRyKFwiY2xhc3NcIiwgXCJhcnJvd2hlYWRQYXRoXCIpLnN0eWxlKFwic3Ryb2tlLXdpZHRoXCIsIDEpLnN0eWxlKFwic3Ryb2tlLWRhc2hhcnJheVwiLCBcIjEsMFwiKTtcbiAgfTtcbiAgY29uc3Qgc3ZnID0gcm9vdC5zZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIGNvbnN0IGVsZW1lbnQgPSByb290LnNlbGVjdChcIiNcIiArIGlkICsgXCIgZ1wiKTtcbiAgcmVuZGVyJDEoZWxlbWVudCwgZyk7XG4gIGVsZW1lbnQuc2VsZWN0QWxsKFwiZy5ub2RlXCIpLmF0dHIoXCJ0aXRsZVwiLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGlhZ09iai5kYi5nZXRUb29sdGlwKHRoaXMuaWQpO1xuICB9KTtcbiAgZGlhZ09iai5kYi5pbmRleE5vZGVzKFwic3ViR3JhcGhcIiArIGkpO1xuICBmb3IgKGkgPSAwOyBpIDwgc3ViR3JhcGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgc3ViRyA9IHN1YkdyYXBoc1tpXTtcbiAgICBpZiAoc3ViRy50aXRsZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3QgY2x1c3RlclJlY3RzID0gZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgIFwiI1wiICsgaWQgKyAnIFtpZD1cIicgKyBkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHN1YkcuaWQpICsgJ1wiXSByZWN0J1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGNsdXN0ZXJFbCA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICBcIiNcIiArIGlkICsgJyBbaWQ9XCInICsgZGlhZ09iai5kYi5sb29rVXBEb21JZChzdWJHLmlkKSArICdcIl0nXG4gICAgICApO1xuICAgICAgY29uc3QgeFBvcyA9IGNsdXN0ZXJSZWN0c1swXS54LmJhc2VWYWwudmFsdWU7XG4gICAgICBjb25zdCB5UG9zID0gY2x1c3RlclJlY3RzWzBdLnkuYmFzZVZhbC52YWx1ZTtcbiAgICAgIGNvbnN0IF93aWR0aCA9IGNsdXN0ZXJSZWN0c1swXS53aWR0aC5iYXNlVmFsLnZhbHVlO1xuICAgICAgY29uc3QgY2x1c3RlciA9IHNlbGVjdChjbHVzdGVyRWxbMF0pO1xuICAgICAgY29uc3QgdGUgPSBjbHVzdGVyLnNlbGVjdChcIi5sYWJlbFwiKTtcbiAgICAgIHRlLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke3hQb3MgKyBfd2lkdGggLyAyfSwgJHt5UG9zICsgMTR9KWApO1xuICAgICAgdGUuYXR0cihcImlkXCIsIGlkICsgXCJUZXh0XCIpO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdWJHLmNsYXNzZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY2x1c3RlckVsWzBdLmNsYXNzTGlzdC5hZGQoc3ViRy5jbGFzc2VzW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFjb25mMi5odG1sTGFiZWxzKSB7XG4gICAgY29uc3QgbGFiZWxzID0gZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD1cIicgKyBpZCArICdcIl0gLmVkZ2VMYWJlbCAubGFiZWwnKTtcbiAgICBmb3IgKGNvbnN0IGxhYmVsIG9mIGxhYmVscykge1xuICAgICAgY29uc3QgZGltID0gbGFiZWwuZ2V0QkJveCgpO1xuICAgICAgY29uc3QgcmVjdCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInJlY3RcIik7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcInJ4XCIsIDApO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJyeVwiLCAwKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgZGltLndpZHRoKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGRpbS5oZWlnaHQpO1xuICAgICAgbGFiZWwuaW5zZXJ0QmVmb3JlKHJlY3QsIGxhYmVsLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgfVxuICBzZXR1cEdyYXBoVmlld2JveChnLCBzdmcsIGNvbmYyLmRpYWdyYW1QYWRkaW5nLCBjb25mMi51c2VNYXhXaWR0aCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2ZXJ0KTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGNvbnN0IHZlcnRleCA9IHZlcnRba2V5XTtcbiAgICBpZiAodmVydGV4LmxpbmspIHtcbiAgICAgIGNvbnN0IG5vZGUgPSByb290LnNlbGVjdChcIiNcIiArIGlkICsgJyBbaWQ9XCInICsgZGlhZ09iai5kYi5sb29rVXBEb21JZChrZXkpICsgJ1wiXScpO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgbGluayA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImFcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImNsYXNzXCIsIHZlcnRleC5jbGFzc2VzLmpvaW4oXCIgXCIpKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiaHJlZlwiLCB2ZXJ0ZXgubGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInJlbFwiLCBcIm5vb3BlbmVyXCIpO1xuICAgICAgICBpZiAoc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIpIHtcbiAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJ0YXJnZXRcIiwgXCJfdG9wXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKHZlcnRleC5saW5rVGFyZ2V0KSB7XG4gICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwidGFyZ2V0XCIsIHZlcnRleC5saW5rVGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5rTm9kZSA9IG5vZGUuaW5zZXJ0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBsaW5rO1xuICAgICAgICB9LCBcIjpmaXJzdC1jaGlsZFwiKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBub2RlLnNlbGVjdChcIi5sYWJlbC1jb250YWluZXJcIik7XG4gICAgICAgIGlmIChzaGFwZSkge1xuICAgICAgICAgIGxpbmtOb2RlLmFwcGVuZChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBzaGFwZS5ub2RlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGFiZWwgPSBub2RlLnNlbGVjdChcIi5sYWJlbFwiKTtcbiAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgbGlua05vZGUuYXBwZW5kKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIGxhYmVsLm5vZGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuY29uc3QgZmxvd1JlbmRlcmVyID0ge1xuICBzZXRDb25mLFxuICBhZGRWZXJ0aWNlcyxcbiAgYWRkRWRnZXMsXG4gIGdldENsYXNzZXMsXG4gIGRyYXdcbn07XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXIsXG4gIGRiOiBmbG93RGIsXG4gIHJlbmRlcmVyOiBmbG93UmVuZGVyZXJWMixcbiAgc3R5bGVzOiBmbG93U3R5bGVzLFxuICBpbml0OiAoY25mKSA9PiB7XG4gICAgaWYgKCFjbmYuZmxvd2NoYXJ0KSB7XG4gICAgICBjbmYuZmxvd2NoYXJ0ID0ge307XG4gICAgfVxuICAgIGNuZi5mbG93Y2hhcnQuYXJyb3dNYXJrZXJBYnNvbHV0ZSA9IGNuZi5hcnJvd01hcmtlckFic29sdXRlO1xuICAgIGZsb3dSZW5kZXJlci5zZXRDb25mKGNuZi5mbG93Y2hhcnQpO1xuICAgIGZsb3dEYi5jbGVhcigpO1xuICAgIGZsb3dEYi5zZXRHZW4oXCJnZW4tMVwiKTtcbiAgfVxufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/flowDiagram-93327f21.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/flowDiagram-v2-476db779.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/flowDiagram-v2-476db779.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./flowDb-6a57c1b4.js */ \"../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js\");\n/* harmony import */ var _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles-5f89df53.js */ \"../../../node_modules/mermaid/dist/styles-5f89df53.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/json.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/label/add-html-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst diagram = {\n parser: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.p,\n db: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.f,\n renderer: _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_10__.f,\n styles: _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_10__.a,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_11__.q)({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n _styles_5f89df53_js__WEBPACK_IMPORTED_MODULE_10__.f.setConf(cnf.flowchart);\n _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.f.clear();\n _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.f.setGen(\"gen-2\");\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9mbG93RGlhZ3JhbS12Mi00NzZkYjc3OS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQWdFO0FBQ1k7QUFDckI7QUFDM0M7QUFDK0I7QUFDZDtBQUNXO0FBQ0U7QUFDYjtBQUNLO0FBQ0E7QUFDZjtBQUNZO0FBQzJCO0FBQzFDO0FBQ0Q7QUFDa0I7QUFDZDtBQUNXO0FBQ2Q7QUFDYztBQUM5QjtBQUNBLFFBQVE7QUFDUixNQUFNLGtEQUFNO0FBQ1osWUFBWSxtREFBYztBQUMxQixVQUFVLG1EQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHdEQUFTLEdBQUcsYUFBYSxnREFBZ0Q7QUFDN0UsSUFBSSwyREFBc0I7QUFDMUIsSUFBSSx3REFBWTtBQUNoQixJQUFJLHlEQUFhO0FBQ2pCO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2Zsb3dEaWFncmFtLXYyLTQ3NmRiNzc5LmpzPzI3MDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcCBhcyBwYXJzZXIsIGYgYXMgZmxvd0RiIH0gZnJvbSBcIi4vZmxvd0RiLTZhNTdjMWI0LmpzXCI7XG5pbXBvcnQgeyBmIGFzIGZsb3dSZW5kZXJlclYyLCBhIGFzIGZsb3dTdHlsZXMgfSBmcm9tIFwiLi9zdHlsZXMtNWY4OWRmNTMuanNcIjtcbmltcG9ydCB7IHEgYXMgc2V0Q29uZmlnIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IFwiZDNcIjtcbmltcG9ydCBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9pbmRleC5qc1wiO1xuaW1wb3J0IFwiLi9pbmRleC1hOTJhYzQwNC5qc1wiO1xuaW1wb3J0IFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgXCJkYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvanNvbi5qc1wiO1xuaW1wb3J0IFwiLi9lZGdlcy00OWFjNDNhMi5qc1wiO1xuaW1wb3J0IFwiLi9jcmVhdGVUZXh0LTNkZjYzMGI1LmpzXCI7XG5pbXBvcnQgXCJtZGFzdC11dGlsLWZyb20tbWFya2Rvd25cIjtcbmltcG9ydCBcInRzLWRlZGVudFwiO1xuaW1wb3J0IFwiLi9zdmdEcmF3LTBmY2M4MTNkLmpzXCI7XG5pbXBvcnQgXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvbGFiZWwvYWRkLWh0bWwtbGFiZWwuanNcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXIsXG4gIGRiOiBmbG93RGIsXG4gIHJlbmRlcmVyOiBmbG93UmVuZGVyZXJWMixcbiAgc3R5bGVzOiBmbG93U3R5bGVzLFxuICBpbml0OiAoY25mKSA9PiB7XG4gICAgaWYgKCFjbmYuZmxvd2NoYXJ0KSB7XG4gICAgICBjbmYuZmxvd2NoYXJ0ID0ge307XG4gICAgfVxuICAgIGNuZi5mbG93Y2hhcnQuYXJyb3dNYXJrZXJBYnNvbHV0ZSA9IGNuZi5hcnJvd01hcmtlckFic29sdXRlO1xuICAgIHNldENvbmZpZyh7IGZsb3djaGFydDogeyBhcnJvd01hcmtlckFic29sdXRlOiBjbmYuYXJyb3dNYXJrZXJBYnNvbHV0ZSB9IH0pO1xuICAgIGZsb3dSZW5kZXJlclYyLnNldENvbmYoY25mLmZsb3djaGFydCk7XG4gICAgZmxvd0RiLmNsZWFyKCk7XG4gICAgZmxvd0RiLnNldEdlbihcImdlbi0yXCIpO1xuICB9XG59O1xuZXhwb3J0IHtcbiAgZGlhZ3JhbVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/flowDiagram-v2-476db779.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/flowchart-elk-definition-5082a990.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/flowchart-elk-definition-5082a990.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./flowDb-6a57c1b4.js */ \"../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./edges-49ac43a2.js */ \"../../../node_modules/mermaid/dist/edges-49ac43a2.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/label/add-html-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var elkjs_lib_elk_bundled_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! elkjs/lib/elk.bundled.js */ \"../../../node_modules/elkjs/lib/elk.bundled.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst findCommonAncestor = (id1, id2, treeData) => {\n const { parentById } = treeData;\n const visited = /* @__PURE__ */ new Set();\n let currentId = id1;\n while (currentId) {\n visited.add(currentId);\n if (currentId === id2) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n currentId = id2;\n while (currentId) {\n if (visited.has(currentId)) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n return \"root\";\n};\nconst elk = new elkjs_lib_elk_bundled_js__WEBPACK_IMPORTED_MODULE_2__();\nlet portPos = {};\nconst conf = {};\nlet nodeDb = {};\nconst addVertices = async function(vert, svgId, root, doc, diagObj, parentLookupDb, graph) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const nodes = svg.insert(\"g\").attr(\"class\", \"nodes\");\n const keys = Object.keys(vert);\n await Promise.all(\n keys.map(async function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.k)(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n const labelData = { width: 0, height: 0 };\n const ports = [\n {\n id: vertex.id + \"-west\",\n layoutOptions: {\n \"port.side\": \"WEST\"\n }\n },\n {\n id: vertex.id + \"-east\",\n layoutOptions: {\n \"port.side\": \"EAST\"\n }\n },\n {\n id: vertex.id + \"-south\",\n layoutOptions: {\n \"port.side\": \"SOUTH\"\n }\n },\n {\n id: vertex.id + \"-north\",\n layoutOptions: {\n \"port.side\": \"NORTH\"\n }\n }\n ];\n let radious = 0;\n let _shape = \"\";\n let layoutOptions = {};\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n layoutOptions = {\n portConstraints: \"FIXED_SIDE\"\n };\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n const node = {\n labelStyle: styles2.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles2.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().flowchart.padding\n };\n let boundingBox;\n let nodeEl;\n if (node.type !== \"group\") {\n nodeEl = await (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_8__.e)(nodes, node, vertex.dir);\n boundingBox = nodeEl.node().getBBox();\n } else {\n doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const { shapeSvg, bbox } = await (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_8__.l)(nodes, node, void 0, true);\n labelData.width = bbox.width;\n labelData.wrappingWidth = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().flowchart.wrappingWidth;\n labelData.height = bbox.height;\n labelData.labelNode = shapeSvg.node();\n node.labelData = labelData;\n }\n const data = {\n id: vertex.id,\n ports: vertex.type === \"diamond\" ? ports : [],\n // labelStyle: styles.labelStyle,\n // shape: _shape,\n layoutOptions,\n labelText: vertexText,\n labelData,\n // labels: [{ text: vertexText }],\n // rx: radius,\n // ry: radius,\n // class: classStr,\n // style: styles.style,\n // link: vertex.link,\n // linkTarget: vertex.linkTarget,\n // tooltip: diagObj.db.getTooltip(vertex.id) || '',\n domId: diagObj.db.lookUpDomId(vertex.id),\n // haveCallback: vertex.haveCallback,\n width: boundingBox == null ? void 0 : boundingBox.width,\n height: boundingBox == null ? void 0 : boundingBox.height,\n // dir: vertex.dir,\n type: vertex.type,\n // props: vertex.props,\n // padding: getConfig().flowchart.padding,\n // boundingBox,\n el: nodeEl,\n parent: parentLookupDb.parentById[vertex.id]\n };\n nodeDb[node.id] = data;\n })\n );\n return graph;\n};\nconst getNextPosition = (position, edgeDirection, graphDirection) => {\n const portPos2 = {\n TB: {\n in: {\n north: \"north\"\n },\n out: {\n south: \"west\",\n west: \"east\",\n east: \"south\"\n }\n },\n LR: {\n in: {\n west: \"west\"\n },\n out: {\n east: \"south\",\n south: \"north\",\n north: \"east\"\n }\n },\n RL: {\n in: {\n east: \"east\"\n },\n out: {\n west: \"north\",\n north: \"south\",\n south: \"west\"\n }\n },\n BT: {\n in: {\n south: \"south\"\n },\n out: {\n north: \"east\",\n east: \"west\",\n west: \"north\"\n }\n }\n };\n portPos2.TD = portPos2.TB;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"abc88\", graphDirection, edgeDirection, position);\n return portPos2[graphDirection][edgeDirection][position];\n};\nconst getNextPort = (node, edgeDirection, graphDirection) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"getNextPort abc88\", { node, edgeDirection, graphDirection });\n if (!portPos[node]) {\n switch (graphDirection) {\n case \"TB\":\n case \"TD\":\n portPos[node] = {\n inPosition: \"north\",\n outPosition: \"south\"\n };\n break;\n case \"BT\":\n portPos[node] = {\n inPosition: \"south\",\n outPosition: \"north\"\n };\n break;\n case \"RL\":\n portPos[node] = {\n inPosition: \"east\",\n outPosition: \"west\"\n };\n break;\n case \"LR\":\n portPos[node] = {\n inPosition: \"west\",\n outPosition: \"east\"\n };\n break;\n }\n }\n const result = edgeDirection === \"in\" ? portPos[node].inPosition : portPos[node].outPosition;\n if (edgeDirection === \"in\") {\n portPos[node].inPosition = getNextPosition(\n portPos[node].inPosition,\n edgeDirection,\n graphDirection\n );\n } else {\n portPos[node].outPosition = getNextPosition(\n portPos[node].outPosition,\n edgeDirection,\n graphDirection\n );\n }\n return result;\n};\nconst getEdgeStartEndPoint = (edge, dir) => {\n let source = edge.start;\n let target = edge.end;\n const sourceId = source;\n const targetId = target;\n const startNode = nodeDb[source];\n const endNode = nodeDb[target];\n if (!startNode || !endNode) {\n return { source, target };\n }\n if (startNode.type === \"diamond\") {\n source = `${source}-${getNextPort(source, \"out\", dir)}`;\n }\n if (endNode.type === \"diamond\") {\n target = `${target}-${getNextPort(target, \"in\", dir)}`;\n }\n return { source, target, sourceId, targetId };\n};\nconst addEdges = function(edges, diagObj, graph, svg) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"abc78 edges = \", edges);\n const labelsEl = svg.insert(\"g\").attr(\"class\", \"edgeLabels\");\n let linkIdCnt = {};\n let dir = diagObj.db.getDirection();\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.k)(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\n switch (edge.type) {\n case \"double_arrow_cross\":\n edgeData.arrowTypeStart = \"arrow_cross\";\n case \"arrow_cross\":\n edgeData.arrowTypeEnd = \"arrow_cross\";\n break;\n case \"double_arrow_point\":\n edgeData.arrowTypeStart = \"arrow_point\";\n case \"arrow_point\":\n edgeData.arrowTypeEnd = \"arrow_point\";\n break;\n case \"double_arrow_circle\":\n edgeData.arrowTypeStart = \"arrow_circle\";\n case \"arrow_circle\":\n edgeData.arrowTypeEnd = \"arrow_circle\";\n break;\n }\n let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"solid\";\n break;\n case \"dotted\":\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"dotted\";\n edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.k)(edge.style);\n style = styles2.style;\n labelStyle = styles2.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.o)(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.o)(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear);\n } else {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.o)(conf.curve, d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n const labelEl = (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_8__.f)(labelsEl, edgeData);\n const { source, target, sourceId, targetId } = getEdgeStartEndPoint(edge, dir);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"abc78 source and target\", source, target);\n graph.edges.push({\n id: \"e\" + edge.start + edge.end,\n sources: [source],\n targets: [target],\n sourceId,\n targetId,\n labelEl,\n labels: [\n {\n width: edgeData.width,\n height: edgeData.height,\n orgWidth: edgeData.width,\n orgHeight: edgeData.height,\n text: edgeData.label,\n layoutOptions: {\n \"edgeLabels.inline\": \"true\",\n \"edgeLabels.placement\": \"CENTER\"\n }\n }\n ],\n edgeData\n });\n });\n return graph;\n};\nconst addMarkersToEdge = function(svgPath, edgeData, diagramType, arrowMarkerAbsolute) {\n let url = \"\";\n if (arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (edgeData.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-crossStart)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-pointStart)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-barbStart)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-circleStart)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-aggregationStart)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-extensionStart)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-compositionStart)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-dependencyStart)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + diagramType + \"-lollipopStart)\");\n break;\n }\n switch (edgeData.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-aggregationEnd)\");\n break;\n case \"extension\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-extensionEnd)\");\n break;\n case \"composition\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-compositionEnd)\");\n break;\n case \"dependency\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-dependencyEnd)\");\n break;\n case \"lollipop\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + diagramType + \"-lollipopEnd)\");\n break;\n }\n};\nconst getClasses = function(text, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Extracting classes\");\n diagObj.db.clear(\"ver-2\");\n try {\n diagObj.parse(text);\n return diagObj.db.getClasses();\n } catch (e) {\n return {};\n }\n};\nconst addSubGraphs = function(db2) {\n const parentLookupDb = { parentById: {}, childrenById: {} };\n const subgraphs = db2.getSubGraphs();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Subgraphs - \", subgraphs);\n subgraphs.forEach(function(subgraph) {\n subgraph.nodes.forEach(function(node) {\n parentLookupDb.parentById[node] = subgraph.id;\n if (parentLookupDb.childrenById[subgraph.id] === void 0) {\n parentLookupDb.childrenById[subgraph.id] = [];\n }\n parentLookupDb.childrenById[subgraph.id].push(node);\n });\n });\n subgraphs.forEach(function(subgraph) {\n ({ id: subgraph.id });\n if (parentLookupDb.parentById[subgraph.id] !== void 0) {\n parentLookupDb.parentById[subgraph.id];\n }\n });\n return parentLookupDb;\n};\nconst calcOffset = function(src, dest, parentLookupDb) {\n const ancestor = findCommonAncestor(src, dest, parentLookupDb);\n if (ancestor === void 0 || ancestor === \"root\") {\n return { x: 0, y: 0 };\n }\n const ancestorOffset = nodeDb[ancestor].offset;\n return { x: ancestorOffset.posX, y: ancestorOffset.posY };\n};\nconst insertEdge = function(edgesEl, edge, edgeData, diagObj, parentLookupDb) {\n const offset = calcOffset(edge.sourceId, edge.targetId, parentLookupDb);\n const src = edge.sections[0].startPoint;\n const dest = edge.sections[0].endPoint;\n const segments = edge.sections[0].bendPoints ? edge.sections[0].bendPoints : [];\n const segPoints = segments.map((segment) => [segment.x + offset.x, segment.y + offset.y]);\n const points = [\n [src.x + offset.x, src.y + offset.y],\n ...segPoints,\n [dest.x + offset.x, dest.y + offset.y]\n ];\n const curve = (0,d3__WEBPACK_IMPORTED_MODULE_0__.line)().curve(d3__WEBPACK_IMPORTED_MODULE_0__.curveLinear);\n const edgePath = edgesEl.insert(\"path\").attr(\"d\", curve(points)).attr(\"class\", \"path \" + edgeData.classes).attr(\"fill\", \"none\");\n const edgeG = edgesEl.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const edgeWithLabel = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(edgeG.node().appendChild(edge.labelEl));\n const box = edgeWithLabel.node().firstChild.getBoundingClientRect();\n edgeWithLabel.attr(\"width\", box.width);\n edgeWithLabel.attr(\"height\", box.height);\n edgeG.attr(\n \"transform\",\n `translate(${edge.labels[0].x + offset.x}, ${edge.labels[0].y + offset.y})`\n );\n addMarkersToEdge(edgePath, edgeData, diagObj.type, diagObj.arrowMarkerAbsolute);\n};\nconst insertChildren = (nodeArray, parentLookupDb) => {\n nodeArray.forEach((node) => {\n if (!node.children) {\n node.children = [];\n }\n const childIds = parentLookupDb.childrenById[node.id];\n if (childIds) {\n childIds.forEach((childId) => {\n node.children.push(nodeDb[childId]);\n });\n }\n insertChildren(node.children, parentLookupDb);\n });\n};\nconst draw = async function(text, id, _version, diagObj) {\n var _a;\n diagObj.db.clear();\n nodeDb = {};\n portPos = {};\n diagObj.db.setGen(\"gen-2\");\n diagObj.parser.parse(text);\n const renderEl = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\").append(\"div\").attr(\"style\", \"height:400px\").attr(\"id\", \"cy\");\n let graph = {\n id: \"root\",\n layoutOptions: {\n \"elk.hierarchyHandling\": \"INCLUDE_CHILDREN\",\n \"org.eclipse.elk.padding\": \"[top=100, left=100, bottom=110, right=110]\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"30\",\n // 'elk.layered.mergeEdges': 'true',\n \"elk.direction\": \"DOWN\"\n // 'elk.ports.sameLayerEdges': true,\n // 'nodePlacement.strategy': 'SIMPLE',\n },\n children: [],\n edges: []\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Drawing flowchart using v3 renderer\", elk);\n let dir = diagObj.db.getDirection();\n switch (dir) {\n case \"BT\":\n graph.layoutOptions[\"elk.direction\"] = \"UP\";\n break;\n case \"TB\":\n graph.layoutOptions[\"elk.direction\"] = \"DOWN\";\n break;\n case \"LR\":\n graph.layoutOptions[\"elk.direction\"] = \"RIGHT\";\n break;\n case \"RL\":\n graph.layoutOptions[\"elk.direction\"] = \"LEFT\";\n break;\n }\n const { securityLevel, flowchart: conf2 } = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const svg = root.select(`[id=\"${id}\"]`);\n const markers = [\"point\", \"circle\", \"cross\"];\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_8__.a)(svg, markers, diagObj.type, diagObj.arrowMarkerAbsolute);\n const vert = diagObj.db.getVertices();\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Subgraphs - \", subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const subGraphsEl = svg.insert(\"g\").attr(\"class\", \"subgraphs\");\n const parentLookupDb = addSubGraphs(diagObj.db);\n graph = await addVertices(vert, id, root, doc, diagObj, parentLookupDb, graph);\n const edgesEl = svg.insert(\"g\").attr(\"class\", \"edges edgePath\");\n const edges = diagObj.db.getEdges();\n graph = addEdges(edges, diagObj, graph, svg);\n const nodes = Object.keys(nodeDb);\n nodes.forEach((nodeId) => {\n const node = nodeDb[nodeId];\n if (!node.parent) {\n graph.children.push(node);\n }\n if (parentLookupDb.childrenById[nodeId] !== void 0) {\n node.labels = [\n {\n text: node.labelText,\n layoutOptions: {\n \"nodeLabels.placement\": \"[H_CENTER, V_TOP, INSIDE]\"\n },\n width: node.labelData.width,\n height: node.labelData.height\n // width: 100,\n // height: 100,\n }\n ];\n delete node.x;\n delete node.y;\n delete node.width;\n delete node.height;\n }\n });\n insertChildren(graph.children, parentLookupDb);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"after layout\", JSON.stringify(graph, null, 2));\n const g = await elk.layout(graph);\n drawNodes(0, 0, g.children, svg, subGraphsEl, diagObj, 0);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"after layout\", g);\n (_a = g.edges) == null ? void 0 : _a.map((edge) => {\n insertEdge(edgesEl, edge, edge.edgeData, diagObj, parentLookupDb);\n });\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.p)({}, svg, conf2.diagramPadding, conf2.useMaxWidth);\n renderEl.remove();\n};\nconst drawNodes = (relX, relY, nodeArray, svg, subgraphsEl, diagObj, depth) => {\n nodeArray.forEach(function(node) {\n if (node) {\n nodeDb[node.id].offset = {\n posX: node.x + relX,\n posY: node.y + relY,\n x: relX,\n y: relY,\n depth,\n width: node.width,\n height: node.height\n };\n if (node.type === \"group\") {\n const subgraphEl = subgraphsEl.insert(\"g\").attr(\"class\", \"subgraph\");\n subgraphEl.insert(\"rect\").attr(\"class\", \"subgraph subgraph-lvl-\" + depth % 5 + \" node\").attr(\"x\", node.x + relX).attr(\"y\", node.y + relY).attr(\"width\", node.width).attr(\"height\", node.height);\n const label = subgraphEl.insert(\"g\").attr(\"class\", \"label\");\n const labelCentering = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().flowchart.htmlLabels ? node.labelData.width / 2 : 0;\n label.attr(\n \"transform\",\n `translate(${node.labels[0].x + relX + node.x + labelCentering}, ${node.labels[0].y + relY + node.y + 3})`\n );\n label.node().appendChild(node.labelData.labelNode);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Id (UGH)= \", node.type, node.labels);\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Id (UGH)= \", node.id);\n node.el.attr(\n \"transform\",\n `translate(${node.x + relX + node.width / 2}, ${node.y + relY + node.height / 2})`\n );\n }\n }\n });\n nodeArray.forEach(function(node) {\n if (node && node.type === \"group\") {\n drawNodes(relX + node.x, relY + node.y, node.children, svg, subgraphsEl, diagObj, depth + 1);\n }\n });\n};\nconst renderer = {\n getClasses,\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < 5; i++) {\n sections += `\n .subgraph-lvl-${i} {\n fill: ${options[`surface${i}`]};\n stroke: ${options[`surfacePeer${i}`]};\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.85;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n .subgraph {\n stroke-width:2;\n rx:3;\n }\n // .subgraph-lvl-1 {\n // fill:#ccc;\n // // stroke:black;\n // }\n\n .flowchart-label text {\n text-anchor: middle;\n }\n\n ${genSections(options)}\n`;\nconst styles = getStyles;\nconst diagram = {\n db: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.d,\n renderer,\n parser: _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_9__.p,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9mbG93Y2hhcnQtZWxrLWRlZmluaXRpb24tNTA4MmE5OTAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBNEQ7QUFDYjtBQUNtRTtBQUN4RDtBQUM4RjtBQUM3RztBQUNUO0FBQ0E7QUFDZjtBQUNZO0FBQ2hCO0FBQ2tCO0FBQ2Q7QUFDSDtBQUNjO0FBQ2Q7QUFDYztBQUM5QjtBQUNBLFVBQVUsYUFBYTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQUc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsTUFBTTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1REFBa0I7QUFDeEM7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ2Q7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0Esa0JBQWtCO0FBQ2xCLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2Zsb3djaGFydC1lbGstZGVmaW5pdGlvbi01MDgyYTk5MC5qcz81OWM1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGQgYXMgZGIsIHAgYXMgcGFyc2VyIH0gZnJvbSBcIi4vZmxvd0RiLTZhNTdjMWI0LmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIGN1cnZlTGluZWFyLCBsaW5lIH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgeyBhIGFzIGluc2VydE1hcmtlcnMsIGUgYXMgaW5zZXJ0Tm9kZSwgbCBhcyBsYWJlbEhlbHBlciwgZiBhcyBpbnNlcnRFZGdlTGFiZWwgfSBmcm9tIFwiLi9lZGdlcy00OWFjNDNhMi5qc1wiO1xuaW1wb3J0IFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlLWpzL2xhYmVsL2FkZC1odG1sLWxhYmVsLmpzXCI7XG5pbXBvcnQgeyBsIGFzIGxvZywgYyBhcyBnZXRDb25maWcsIHAgYXMgc2V0dXBHcmFwaFZpZXdib3gsIGsgYXMgZ2V0U3R5bGVzRnJvbUFycmF5LCBvIGFzIGludGVycG9sYXRlVG9DdXJ2ZSwgZSBhcyBjb21tb24gfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgRUxLIGZyb20gXCJlbGtqcy9saWIvZWxrLmJ1bmRsZWQuanNcIjtcbmltcG9ydCBcIi4vY3JlYXRlVGV4dC0zZGY2MzBiNS5qc1wiO1xuaW1wb3J0IFwibWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcIi4vc3ZnRHJhdy0wZmNjODEzZC5qc1wiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbmNvbnN0IGZpbmRDb21tb25BbmNlc3RvciA9IChpZDEsIGlkMiwgdHJlZURhdGEpID0+IHtcbiAgY29uc3QgeyBwYXJlbnRCeUlkIH0gPSB0cmVlRGF0YTtcbiAgY29uc3QgdmlzaXRlZCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGxldCBjdXJyZW50SWQgPSBpZDE7XG4gIHdoaWxlIChjdXJyZW50SWQpIHtcbiAgICB2aXNpdGVkLmFkZChjdXJyZW50SWQpO1xuICAgIGlmIChjdXJyZW50SWQgPT09IGlkMikge1xuICAgICAgcmV0dXJuIGN1cnJlbnRJZDtcbiAgICB9XG4gICAgY3VycmVudElkID0gcGFyZW50QnlJZFtjdXJyZW50SWRdO1xuICB9XG4gIGN1cnJlbnRJZCA9IGlkMjtcbiAgd2hpbGUgKGN1cnJlbnRJZCkge1xuICAgIGlmICh2aXNpdGVkLmhhcyhjdXJyZW50SWQpKSB7XG4gICAgICByZXR1cm4gY3VycmVudElkO1xuICAgIH1cbiAgICBjdXJyZW50SWQgPSBwYXJlbnRCeUlkW2N1cnJlbnRJZF07XG4gIH1cbiAgcmV0dXJuIFwicm9vdFwiO1xufTtcbmNvbnN0IGVsayA9IG5ldyBFTEsoKTtcbmxldCBwb3J0UG9zID0ge307XG5jb25zdCBjb25mID0ge307XG5sZXQgbm9kZURiID0ge307XG5jb25zdCBhZGRWZXJ0aWNlcyA9IGFzeW5jIGZ1bmN0aW9uKHZlcnQsIHN2Z0lkLCByb290LCBkb2MsIGRpYWdPYmosIHBhcmVudExvb2t1cERiLCBncmFwaCkge1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChgW2lkPVwiJHtzdmdJZH1cIl1gKTtcbiAgY29uc3Qgbm9kZXMgPSBzdmcuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJub2Rlc1wiKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZlcnQpO1xuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBrZXlzLm1hcChhc3luYyBmdW5jdGlvbihpZCkge1xuICAgICAgY29uc3QgdmVydGV4ID0gdmVydFtpZF07XG4gICAgICBsZXQgY2xhc3NTdHIgPSBcImRlZmF1bHRcIjtcbiAgICAgIGlmICh2ZXJ0ZXguY2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNsYXNzU3RyID0gdmVydGV4LmNsYXNzZXMuam9pbihcIiBcIik7XG4gICAgICB9XG4gICAgICBjbGFzc1N0ciA9IGNsYXNzU3RyICsgXCIgZmxvd2NoYXJ0LWxhYmVsXCI7XG4gICAgICBjb25zdCBzdHlsZXMyID0gZ2V0U3R5bGVzRnJvbUFycmF5KHZlcnRleC5zdHlsZXMpO1xuICAgICAgbGV0IHZlcnRleFRleHQgPSB2ZXJ0ZXgudGV4dCAhPT0gdm9pZCAwID8gdmVydGV4LnRleHQgOiB2ZXJ0ZXguaWQ7XG4gICAgICBjb25zdCBsYWJlbERhdGEgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgICAgIGNvbnN0IHBvcnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHZlcnRleC5pZCArIFwiLXdlc3RcIixcbiAgICAgICAgICBsYXlvdXRPcHRpb25zOiB7XG4gICAgICAgICAgICBcInBvcnQuc2lkZVwiOiBcIldFU1RcIlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB2ZXJ0ZXguaWQgKyBcIi1lYXN0XCIsXG4gICAgICAgICAgbGF5b3V0T3B0aW9uczoge1xuICAgICAgICAgICAgXCJwb3J0LnNpZGVcIjogXCJFQVNUXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdmVydGV4LmlkICsgXCItc291dGhcIixcbiAgICAgICAgICBsYXlvdXRPcHRpb25zOiB7XG4gICAgICAgICAgICBcInBvcnQuc2lkZVwiOiBcIlNPVVRIXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdmVydGV4LmlkICsgXCItbm9ydGhcIixcbiAgICAgICAgICBsYXlvdXRPcHRpb25zOiB7XG4gICAgICAgICAgICBcInBvcnQuc2lkZVwiOiBcIk5PUlRIXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICBsZXQgcmFkaW91cyA9IDA7XG4gICAgICBsZXQgX3NoYXBlID0gXCJcIjtcbiAgICAgIGxldCBsYXlvdXRPcHRpb25zID0ge307XG4gICAgICBzd2l0Y2ggKHZlcnRleC50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJyb3VuZFwiOlxuICAgICAgICAgIHJhZGlvdXMgPSA1O1xuICAgICAgICAgIF9zaGFwZSA9IFwicmVjdFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3F1YXJlXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJyZWN0XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJxdWVzdGlvblwiO1xuICAgICAgICAgIGxheW91dE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBwb3J0Q29uc3RyYWludHM6IFwiRklYRURfU0lERVwiXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImhleGFnb25cIjpcbiAgICAgICAgICBfc2hhcGUgPSBcImhleGFnb25cIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm9kZFwiOlxuICAgICAgICAgIF9zaGFwZSA9IFwicmVjdF9sZWZ0X2ludl9hcnJvd1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibGVhbl9yaWdodFwiOlxuICAgICAgICAgIF9zaGFwZSA9IFwibGVhbl9yaWdodFwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibGVhbl9sZWZ0XCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJsZWFuX2xlZnRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRyYXBlem9pZFwiOlxuICAgICAgICAgIF9zaGFwZSA9IFwidHJhcGV6b2lkXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJpbnZfdHJhcGV6b2lkXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJpbnZfdHJhcGV6b2lkXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJvZGRfcmlnaHRcIjpcbiAgICAgICAgICBfc2hhcGUgPSBcInJlY3RfbGVmdF9pbnZfYXJyb3dcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNpcmNsZVwiOlxuICAgICAgICAgIF9zaGFwZSA9IFwiY2lyY2xlXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJlbGxpcHNlXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzdGFkaXVtXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJzdGFkaXVtXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzdWJyb3V0aW5lXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJzdWJyb3V0aW5lXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJjeWxpbmRlclwiOlxuICAgICAgICAgIF9zaGFwZSA9IFwiY3lsaW5kZXJcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImdyb3VwXCI6XG4gICAgICAgICAgX3NoYXBlID0gXCJyZWN0XCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkb3VibGVjaXJjbGVcIjpcbiAgICAgICAgICBfc2hhcGUgPSBcImRvdWJsZWNpcmNsZVwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIF9zaGFwZSA9IFwicmVjdFwiO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZSA9IHtcbiAgICAgICAgbGFiZWxTdHlsZTogc3R5bGVzMi5sYWJlbFN0eWxlLFxuICAgICAgICBzaGFwZTogX3NoYXBlLFxuICAgICAgICBsYWJlbFRleHQ6IHZlcnRleFRleHQsXG4gICAgICAgIGxhYmVsVHlwZTogdmVydGV4LmxhYmVsVHlwZSxcbiAgICAgICAgcng6IHJhZGlvdXMsXG4gICAgICAgIHJ5OiByYWRpb3VzLFxuICAgICAgICBjbGFzczogY2xhc3NTdHIsXG4gICAgICAgIHN0eWxlOiBzdHlsZXMyLnN0eWxlLFxuICAgICAgICBpZDogdmVydGV4LmlkLFxuICAgICAgICBsaW5rOiB2ZXJ0ZXgubGluayxcbiAgICAgICAgbGlua1RhcmdldDogdmVydGV4LmxpbmtUYXJnZXQsXG4gICAgICAgIHRvb2x0aXA6IGRpYWdPYmouZGIuZ2V0VG9vbHRpcCh2ZXJ0ZXguaWQpIHx8IFwiXCIsXG4gICAgICAgIGRvbUlkOiBkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHZlcnRleC5pZCksXG4gICAgICAgIGhhdmVDYWxsYmFjazogdmVydGV4LmhhdmVDYWxsYmFjayxcbiAgICAgICAgd2lkdGg6IHZlcnRleC50eXBlID09PSBcImdyb3VwXCIgPyA1MDAgOiB2b2lkIDAsXG4gICAgICAgIGRpcjogdmVydGV4LmRpcixcbiAgICAgICAgdHlwZTogdmVydGV4LnR5cGUsXG4gICAgICAgIHByb3BzOiB2ZXJ0ZXgucHJvcHMsXG4gICAgICAgIHBhZGRpbmc6IGdldENvbmZpZygpLmZsb3djaGFydC5wYWRkaW5nXG4gICAgICB9O1xuICAgICAgbGV0IGJvdW5kaW5nQm94O1xuICAgICAgbGV0IG5vZGVFbDtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09IFwiZ3JvdXBcIikge1xuICAgICAgICBub2RlRWwgPSBhd2FpdCBpbnNlcnROb2RlKG5vZGVzLCBub2RlLCB2ZXJ0ZXguZGlyKTtcbiAgICAgICAgYm91bmRpbmdCb3ggPSBub2RlRWwubm9kZSgpLmdldEJCb3goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRleHRcIik7XG4gICAgICAgIGNvbnN0IHsgc2hhcGVTdmcsIGJib3ggfSA9IGF3YWl0IGxhYmVsSGVscGVyKG5vZGVzLCBub2RlLCB2b2lkIDAsIHRydWUpO1xuICAgICAgICBsYWJlbERhdGEud2lkdGggPSBiYm94LndpZHRoO1xuICAgICAgICBsYWJlbERhdGEud3JhcHBpbmdXaWR0aCA9IGdldENvbmZpZygpLmZsb3djaGFydC53cmFwcGluZ1dpZHRoO1xuICAgICAgICBsYWJlbERhdGEuaGVpZ2h0ID0gYmJveC5oZWlnaHQ7XG4gICAgICAgIGxhYmVsRGF0YS5sYWJlbE5vZGUgPSBzaGFwZVN2Zy5ub2RlKCk7XG4gICAgICAgIG5vZGUubGFiZWxEYXRhID0gbGFiZWxEYXRhO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgaWQ6IHZlcnRleC5pZCxcbiAgICAgICAgcG9ydHM6IHZlcnRleC50eXBlID09PSBcImRpYW1vbmRcIiA/IHBvcnRzIDogW10sXG4gICAgICAgIC8vIGxhYmVsU3R5bGU6IHN0eWxlcy5sYWJlbFN0eWxlLFxuICAgICAgICAvLyBzaGFwZTogX3NoYXBlLFxuICAgICAgICBsYXlvdXRPcHRpb25zLFxuICAgICAgICBsYWJlbFRleHQ6IHZlcnRleFRleHQsXG4gICAgICAgIGxhYmVsRGF0YSxcbiAgICAgICAgLy8gbGFiZWxzOiBbeyB0ZXh0OiB2ZXJ0ZXhUZXh0IH1dLFxuICAgICAgICAvLyByeDogcmFkaXVzLFxuICAgICAgICAvLyByeTogcmFkaXVzLFxuICAgICAgICAvLyBjbGFzczogY2xhc3NTdHIsXG4gICAgICAgIC8vIHN0eWxlOiBzdHlsZXMuc3R5bGUsXG4gICAgICAgIC8vIGxpbms6IHZlcnRleC5saW5rLFxuICAgICAgICAvLyBsaW5rVGFyZ2V0OiB2ZXJ0ZXgubGlua1RhcmdldCxcbiAgICAgICAgLy8gdG9vbHRpcDogZGlhZ09iai5kYi5nZXRUb29sdGlwKHZlcnRleC5pZCkgfHwgJycsXG4gICAgICAgIGRvbUlkOiBkaWFnT2JqLmRiLmxvb2tVcERvbUlkKHZlcnRleC5pZCksXG4gICAgICAgIC8vIGhhdmVDYWxsYmFjazogdmVydGV4LmhhdmVDYWxsYmFjayxcbiAgICAgICAgd2lkdGg6IGJvdW5kaW5nQm94ID09IG51bGwgPyB2b2lkIDAgOiBib3VuZGluZ0JveC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBib3VuZGluZ0JveCA9PSBudWxsID8gdm9pZCAwIDogYm91bmRpbmdCb3guaGVpZ2h0LFxuICAgICAgICAvLyBkaXI6IHZlcnRleC5kaXIsXG4gICAgICAgIHR5cGU6IHZlcnRleC50eXBlLFxuICAgICAgICAvLyBwcm9wczogdmVydGV4LnByb3BzLFxuICAgICAgICAvLyBwYWRkaW5nOiBnZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZyxcbiAgICAgICAgLy8gYm91bmRpbmdCb3gsXG4gICAgICAgIGVsOiBub2RlRWwsXG4gICAgICAgIHBhcmVudDogcGFyZW50TG9va3VwRGIucGFyZW50QnlJZFt2ZXJ0ZXguaWRdXG4gICAgICB9O1xuICAgICAgbm9kZURiW25vZGUuaWRdID0gZGF0YTtcbiAgICB9KVxuICApO1xuICByZXR1cm4gZ3JhcGg7XG59O1xuY29uc3QgZ2V0TmV4dFBvc2l0aW9uID0gKHBvc2l0aW9uLCBlZGdlRGlyZWN0aW9uLCBncmFwaERpcmVjdGlvbikgPT4ge1xuICBjb25zdCBwb3J0UG9zMiA9IHtcbiAgICBUQjoge1xuICAgICAgaW46IHtcbiAgICAgICAgbm9ydGg6IFwibm9ydGhcIlxuICAgICAgfSxcbiAgICAgIG91dDoge1xuICAgICAgICBzb3V0aDogXCJ3ZXN0XCIsXG4gICAgICAgIHdlc3Q6IFwiZWFzdFwiLFxuICAgICAgICBlYXN0OiBcInNvdXRoXCJcbiAgICAgIH1cbiAgICB9LFxuICAgIExSOiB7XG4gICAgICBpbjoge1xuICAgICAgICB3ZXN0OiBcIndlc3RcIlxuICAgICAgfSxcbiAgICAgIG91dDoge1xuICAgICAgICBlYXN0OiBcInNvdXRoXCIsXG4gICAgICAgIHNvdXRoOiBcIm5vcnRoXCIsXG4gICAgICAgIG5vcnRoOiBcImVhc3RcIlxuICAgICAgfVxuICAgIH0sXG4gICAgUkw6IHtcbiAgICAgIGluOiB7XG4gICAgICAgIGVhc3Q6IFwiZWFzdFwiXG4gICAgICB9LFxuICAgICAgb3V0OiB7XG4gICAgICAgIHdlc3Q6IFwibm9ydGhcIixcbiAgICAgICAgbm9ydGg6IFwic291dGhcIixcbiAgICAgICAgc291dGg6IFwid2VzdFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBCVDoge1xuICAgICAgaW46IHtcbiAgICAgICAgc291dGg6IFwic291dGhcIlxuICAgICAgfSxcbiAgICAgIG91dDoge1xuICAgICAgICBub3J0aDogXCJlYXN0XCIsXG4gICAgICAgIGVhc3Q6IFwid2VzdFwiLFxuICAgICAgICB3ZXN0OiBcIm5vcnRoXCJcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHBvcnRQb3MyLlREID0gcG9ydFBvczIuVEI7XG4gIGxvZy5pbmZvKFwiYWJjODhcIiwgZ3JhcGhEaXJlY3Rpb24sIGVkZ2VEaXJlY3Rpb24sIHBvc2l0aW9uKTtcbiAgcmV0dXJuIHBvcnRQb3MyW2dyYXBoRGlyZWN0aW9uXVtlZGdlRGlyZWN0aW9uXVtwb3NpdGlvbl07XG59O1xuY29uc3QgZ2V0TmV4dFBvcnQgPSAobm9kZSwgZWRnZURpcmVjdGlvbiwgZ3JhcGhEaXJlY3Rpb24pID0+IHtcbiAgbG9nLmluZm8oXCJnZXROZXh0UG9ydCBhYmM4OFwiLCB7IG5vZGUsIGVkZ2VEaXJlY3Rpb24sIGdyYXBoRGlyZWN0aW9uIH0pO1xuICBpZiAoIXBvcnRQb3Nbbm9kZV0pIHtcbiAgICBzd2l0Y2ggKGdyYXBoRGlyZWN0aW9uKSB7XG4gICAgICBjYXNlIFwiVEJcIjpcbiAgICAgIGNhc2UgXCJURFwiOlxuICAgICAgICBwb3J0UG9zW25vZGVdID0ge1xuICAgICAgICAgIGluUG9zaXRpb246IFwibm9ydGhcIixcbiAgICAgICAgICBvdXRQb3NpdGlvbjogXCJzb3V0aFwiXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkJUXCI6XG4gICAgICAgIHBvcnRQb3Nbbm9kZV0gPSB7XG4gICAgICAgICAgaW5Qb3NpdGlvbjogXCJzb3V0aFwiLFxuICAgICAgICAgIG91dFBvc2l0aW9uOiBcIm5vcnRoXCJcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiUkxcIjpcbiAgICAgICAgcG9ydFBvc1tub2RlXSA9IHtcbiAgICAgICAgICBpblBvc2l0aW9uOiBcImVhc3RcIixcbiAgICAgICAgICBvdXRQb3NpdGlvbjogXCJ3ZXN0XCJcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiTFJcIjpcbiAgICAgICAgcG9ydFBvc1tub2RlXSA9IHtcbiAgICAgICAgICBpblBvc2l0aW9uOiBcIndlc3RcIixcbiAgICAgICAgICBvdXRQb3NpdGlvbjogXCJlYXN0XCJcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGNvbnN0IHJlc3VsdCA9IGVkZ2VEaXJlY3Rpb24gPT09IFwiaW5cIiA/IHBvcnRQb3Nbbm9kZV0uaW5Qb3NpdGlvbiA6IHBvcnRQb3Nbbm9kZV0ub3V0UG9zaXRpb247XG4gIGlmIChlZGdlRGlyZWN0aW9uID09PSBcImluXCIpIHtcbiAgICBwb3J0UG9zW25vZGVdLmluUG9zaXRpb24gPSBnZXROZXh0UG9zaXRpb24oXG4gICAgICBwb3J0UG9zW25vZGVdLmluUG9zaXRpb24sXG4gICAgICBlZGdlRGlyZWN0aW9uLFxuICAgICAgZ3JhcGhEaXJlY3Rpb25cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHBvcnRQb3Nbbm9kZV0ub3V0UG9zaXRpb24gPSBnZXROZXh0UG9zaXRpb24oXG4gICAgICBwb3J0UG9zW25vZGVdLm91dFBvc2l0aW9uLFxuICAgICAgZWRnZURpcmVjdGlvbixcbiAgICAgIGdyYXBoRGlyZWN0aW9uXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbmNvbnN0IGdldEVkZ2VTdGFydEVuZFBvaW50ID0gKGVkZ2UsIGRpcikgPT4ge1xuICBsZXQgc291cmNlID0gZWRnZS5zdGFydDtcbiAgbGV0IHRhcmdldCA9IGVkZ2UuZW5kO1xuICBjb25zdCBzb3VyY2VJZCA9IHNvdXJjZTtcbiAgY29uc3QgdGFyZ2V0SWQgPSB0YXJnZXQ7XG4gIGNvbnN0IHN0YXJ0Tm9kZSA9IG5vZGVEYltzb3VyY2VdO1xuICBjb25zdCBlbmROb2RlID0gbm9kZURiW3RhcmdldF07XG4gIGlmICghc3RhcnROb2RlIHx8ICFlbmROb2RlKSB7XG4gICAgcmV0dXJuIHsgc291cmNlLCB0YXJnZXQgfTtcbiAgfVxuICBpZiAoc3RhcnROb2RlLnR5cGUgPT09IFwiZGlhbW9uZFwiKSB7XG4gICAgc291cmNlID0gYCR7c291cmNlfS0ke2dldE5leHRQb3J0KHNvdXJjZSwgXCJvdXRcIiwgZGlyKX1gO1xuICB9XG4gIGlmIChlbmROb2RlLnR5cGUgPT09IFwiZGlhbW9uZFwiKSB7XG4gICAgdGFyZ2V0ID0gYCR7dGFyZ2V0fS0ke2dldE5leHRQb3J0KHRhcmdldCwgXCJpblwiLCBkaXIpfWA7XG4gIH1cbiAgcmV0dXJuIHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUlkLCB0YXJnZXRJZCB9O1xufTtcbmNvbnN0IGFkZEVkZ2VzID0gZnVuY3Rpb24oZWRnZXMsIGRpYWdPYmosIGdyYXBoLCBzdmcpIHtcbiAgbG9nLmluZm8oXCJhYmM3OCBlZGdlcyA9IFwiLCBlZGdlcyk7XG4gIGNvbnN0IGxhYmVsc0VsID0gc3ZnLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZWRnZUxhYmVsc1wiKTtcbiAgbGV0IGxpbmtJZENudCA9IHt9O1xuICBsZXQgZGlyID0gZGlhZ09iai5kYi5nZXREaXJlY3Rpb24oKTtcbiAgbGV0IGRlZmF1bHRTdHlsZTtcbiAgbGV0IGRlZmF1bHRMYWJlbFN0eWxlO1xuICBpZiAoZWRnZXMuZGVmYXVsdFN0eWxlICE9PSB2b2lkIDApIHtcbiAgICBjb25zdCBkZWZhdWx0U3R5bGVzID0gZ2V0U3R5bGVzRnJvbUFycmF5KGVkZ2VzLmRlZmF1bHRTdHlsZSk7XG4gICAgZGVmYXVsdFN0eWxlID0gZGVmYXVsdFN0eWxlcy5zdHlsZTtcbiAgICBkZWZhdWx0TGFiZWxTdHlsZSA9IGRlZmF1bHRTdHlsZXMubGFiZWxTdHlsZTtcbiAgfVxuICBlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICBjb25zdCBsaW5rSWRCYXNlID0gXCJMLVwiICsgZWRnZS5zdGFydCArIFwiLVwiICsgZWRnZS5lbmQ7XG4gICAgaWYgKGxpbmtJZENudFtsaW5rSWRCYXNlXSA9PT0gdm9pZCAwKSB7XG4gICAgICBsaW5rSWRDbnRbbGlua0lkQmFzZV0gPSAwO1xuICAgICAgbG9nLmluZm8oXCJhYmM3OCBuZXcgZW50cnlcIiwgbGlua0lkQmFzZSwgbGlua0lkQ250W2xpbmtJZEJhc2VdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlua0lkQ250W2xpbmtJZEJhc2VdKys7XG4gICAgICBsb2cuaW5mbyhcImFiYzc4IG5ldyBlbnRyeVwiLCBsaW5rSWRCYXNlLCBsaW5rSWRDbnRbbGlua0lkQmFzZV0pO1xuICAgIH1cbiAgICBsZXQgbGlua0lkID0gbGlua0lkQmFzZSArIFwiLVwiICsgbGlua0lkQ250W2xpbmtJZEJhc2VdO1xuICAgIGxvZy5pbmZvKFwiYWJjNzggbmV3IGxpbmsgaWQgdG8gYmUgdXNlZCBpc1wiLCBsaW5rSWRCYXNlLCBsaW5rSWQsIGxpbmtJZENudFtsaW5rSWRCYXNlXSk7XG4gICAgY29uc3QgbGlua05hbWVTdGFydCA9IFwiTFMtXCIgKyBlZGdlLnN0YXJ0O1xuICAgIGNvbnN0IGxpbmtOYW1lRW5kID0gXCJMRS1cIiArIGVkZ2UuZW5kO1xuICAgIGNvbnN0IGVkZ2VEYXRhID0geyBzdHlsZTogXCJcIiwgbGFiZWxTdHlsZTogXCJcIiB9O1xuICAgIGVkZ2VEYXRhLm1pbmxlbiA9IGVkZ2UubGVuZ3RoIHx8IDE7XG4gICAgaWYgKGVkZ2UudHlwZSA9PT0gXCJhcnJvd19vcGVuXCIpIHtcbiAgICAgIGVkZ2VEYXRhLmFycm93aGVhZCA9IFwibm9uZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGdlRGF0YS5hcnJvd2hlYWQgPSBcIm5vcm1hbFwiO1xuICAgIH1cbiAgICBlZGdlRGF0YS5hcnJvd1R5cGVTdGFydCA9IFwiYXJyb3dfb3BlblwiO1xuICAgIGVkZ2VEYXRhLmFycm93VHlwZUVuZCA9IFwiYXJyb3dfb3BlblwiO1xuICAgIHN3aXRjaCAoZWRnZS50eXBlKSB7XG4gICAgICBjYXNlIFwiZG91YmxlX2Fycm93X2Nyb3NzXCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZVN0YXJ0ID0gXCJhcnJvd19jcm9zc1wiO1xuICAgICAgY2FzZSBcImFycm93X2Nyb3NzXCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZUVuZCA9IFwiYXJyb3dfY3Jvc3NcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZG91YmxlX2Fycm93X3BvaW50XCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZVN0YXJ0ID0gXCJhcnJvd19wb2ludFwiO1xuICAgICAgY2FzZSBcImFycm93X3BvaW50XCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZUVuZCA9IFwiYXJyb3dfcG9pbnRcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZG91YmxlX2Fycm93X2NpcmNsZVwiOlxuICAgICAgICBlZGdlRGF0YS5hcnJvd1R5cGVTdGFydCA9IFwiYXJyb3dfY2lyY2xlXCI7XG4gICAgICBjYXNlIFwiYXJyb3dfY2lyY2xlXCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZUVuZCA9IFwiYXJyb3dfY2lyY2xlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgc3R5bGUgPSBcIlwiO1xuICAgIGxldCBsYWJlbFN0eWxlID0gXCJcIjtcbiAgICBzd2l0Y2ggKGVkZ2Uuc3Ryb2tlKSB7XG4gICAgICBjYXNlIFwibm9ybWFsXCI6XG4gICAgICAgIHN0eWxlID0gXCJmaWxsOm5vbmU7XCI7XG4gICAgICAgIGlmIChkZWZhdWx0U3R5bGUgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHN0eWxlID0gZGVmYXVsdFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0TGFiZWxTdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgbGFiZWxTdHlsZSA9IGRlZmF1bHRMYWJlbFN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIGVkZ2VEYXRhLnRoaWNrbmVzcyA9IFwibm9ybWFsXCI7XG4gICAgICAgIGVkZ2VEYXRhLnBhdHRlcm4gPSBcInNvbGlkXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRvdHRlZFwiOlxuICAgICAgICBlZGdlRGF0YS50aGlja25lc3MgPSBcIm5vcm1hbFwiO1xuICAgICAgICBlZGdlRGF0YS5wYXR0ZXJuID0gXCJkb3R0ZWRcIjtcbiAgICAgICAgZWRnZURhdGEuc3R5bGUgPSBcImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1kYXNoYXJyYXk6MztcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGhpY2tcIjpcbiAgICAgICAgZWRnZURhdGEudGhpY2tuZXNzID0gXCJ0aGlja1wiO1xuICAgICAgICBlZGdlRGF0YS5wYXR0ZXJuID0gXCJzb2xpZFwiO1xuICAgICAgICBlZGdlRGF0YS5zdHlsZSA9IFwic3Ryb2tlLXdpZHRoOiAzLjVweDtmaWxsOm5vbmU7XCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoZWRnZS5zdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCBzdHlsZXMyID0gZ2V0U3R5bGVzRnJvbUFycmF5KGVkZ2Uuc3R5bGUpO1xuICAgICAgc3R5bGUgPSBzdHlsZXMyLnN0eWxlO1xuICAgICAgbGFiZWxTdHlsZSA9IHN0eWxlczIubGFiZWxTdHlsZTtcbiAgICB9XG4gICAgZWRnZURhdGEuc3R5bGUgPSBlZGdlRGF0YS5zdHlsZSArPSBzdHlsZTtcbiAgICBlZGdlRGF0YS5sYWJlbFN0eWxlID0gZWRnZURhdGEubGFiZWxTdHlsZSArPSBsYWJlbFN0eWxlO1xuICAgIGlmIChlZGdlLmludGVycG9sYXRlICE9PSB2b2lkIDApIHtcbiAgICAgIGVkZ2VEYXRhLmN1cnZlID0gaW50ZXJwb2xhdGVUb0N1cnZlKGVkZ2UuaW50ZXJwb2xhdGUsIGN1cnZlTGluZWFyKTtcbiAgICB9IGVsc2UgaWYgKGVkZ2VzLmRlZmF1bHRJbnRlcnBvbGF0ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBlZGdlRGF0YS5jdXJ2ZSA9IGludGVycG9sYXRlVG9DdXJ2ZShlZGdlcy5kZWZhdWx0SW50ZXJwb2xhdGUsIGN1cnZlTGluZWFyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZURhdGEuY3VydmUgPSBpbnRlcnBvbGF0ZVRvQ3VydmUoY29uZi5jdXJ2ZSwgY3VydmVMaW5lYXIpO1xuICAgIH1cbiAgICBpZiAoZWRnZS50ZXh0ID09PSB2b2lkIDApIHtcbiAgICAgIGlmIChlZGdlLnN0eWxlICE9PSB2b2lkIDApIHtcbiAgICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZWRnZURhdGEuYXJyb3doZWFkU3R5bGUgPSBcImZpbGw6ICMzMzNcIjtcbiAgICAgIGVkZ2VEYXRhLmxhYmVscG9zID0gXCJjXCI7XG4gICAgfVxuICAgIGVkZ2VEYXRhLmxhYmVsVHlwZSA9IGVkZ2UubGFiZWxUeXBlO1xuICAgIGVkZ2VEYXRhLmxhYmVsID0gZWRnZS50ZXh0LnJlcGxhY2UoY29tbW9uLmxpbmVCcmVha1JlZ2V4LCBcIlxcblwiKTtcbiAgICBpZiAoZWRnZS5zdHlsZSA9PT0gdm9pZCAwKSB7XG4gICAgICBlZGdlRGF0YS5zdHlsZSA9IGVkZ2VEYXRhLnN0eWxlIHx8IFwic3Ryb2tlOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O2ZpbGw6bm9uZTtcIjtcbiAgICB9XG4gICAgZWRnZURhdGEubGFiZWxTdHlsZSA9IGVkZ2VEYXRhLmxhYmVsU3R5bGUucmVwbGFjZShcImNvbG9yOlwiLCBcImZpbGw6XCIpO1xuICAgIGVkZ2VEYXRhLmlkID0gbGlua0lkO1xuICAgIGVkZ2VEYXRhLmNsYXNzZXMgPSBcImZsb3djaGFydC1saW5rIFwiICsgbGlua05hbWVTdGFydCArIFwiIFwiICsgbGlua05hbWVFbmQ7XG4gICAgY29uc3QgbGFiZWxFbCA9IGluc2VydEVkZ2VMYWJlbChsYWJlbHNFbCwgZWRnZURhdGEpO1xuICAgIGNvbnN0IHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUlkLCB0YXJnZXRJZCB9ID0gZ2V0RWRnZVN0YXJ0RW5kUG9pbnQoZWRnZSwgZGlyKTtcbiAgICBsb2cuZGVidWcoXCJhYmM3OCBzb3VyY2UgYW5kIHRhcmdldFwiLCBzb3VyY2UsIHRhcmdldCk7XG4gICAgZ3JhcGguZWRnZXMucHVzaCh7XG4gICAgICBpZDogXCJlXCIgKyBlZGdlLnN0YXJ0ICsgZWRnZS5lbmQsXG4gICAgICBzb3VyY2VzOiBbc291cmNlXSxcbiAgICAgIHRhcmdldHM6IFt0YXJnZXRdLFxuICAgICAgc291cmNlSWQsXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGxhYmVsRWwsXG4gICAgICBsYWJlbHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHdpZHRoOiBlZGdlRGF0YS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGVkZ2VEYXRhLmhlaWdodCxcbiAgICAgICAgICBvcmdXaWR0aDogZWRnZURhdGEud2lkdGgsXG4gICAgICAgICAgb3JnSGVpZ2h0OiBlZGdlRGF0YS5oZWlnaHQsXG4gICAgICAgICAgdGV4dDogZWRnZURhdGEubGFiZWwsXG4gICAgICAgICAgbGF5b3V0T3B0aW9uczoge1xuICAgICAgICAgICAgXCJlZGdlTGFiZWxzLmlubGluZVwiOiBcInRydWVcIixcbiAgICAgICAgICAgIFwiZWRnZUxhYmVscy5wbGFjZW1lbnRcIjogXCJDRU5URVJcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGVkZ2VEYXRhXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gZ3JhcGg7XG59O1xuY29uc3QgYWRkTWFya2Vyc1RvRWRnZSA9IGZ1bmN0aW9uKHN2Z1BhdGgsIGVkZ2VEYXRhLCBkaWFncmFtVHlwZSwgYXJyb3dNYXJrZXJBYnNvbHV0ZSkge1xuICBsZXQgdXJsID0gXCJcIjtcbiAgaWYgKGFycm93TWFya2VyQWJzb2x1dGUpIHtcbiAgICB1cmwgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKC9nLCBcIlxcXFwoXCIpO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKC9cXCkvZywgXCJcXFxcKVwiKTtcbiAgfVxuICBzd2l0Y2ggKGVkZ2VEYXRhLmFycm93VHlwZVN0YXJ0KSB7XG4gICAgY2FzZSBcImFycm93X2Nyb3NzXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItY3Jvc3NTdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYXJyb3dfcG9pbnRcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1wb2ludFN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhcnJvd19iYXJiXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItYmFyYlN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhcnJvd19jaXJjbGVcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jaXJjbGVTdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYWdncmVnYXRpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1hZ2dyZWdhdGlvblN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleHRlbnNpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1leHRlbnNpb25TdGFydClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY29tcG9zaXRpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1zdGFydFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jb21wb3NpdGlvblN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkZXBlbmRlbmN5XCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItZGVwZW5kZW5jeVN0YXJ0KVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJsb2xsaXBvcFwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLXN0YXJ0XCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWxvbGxpcG9wU3RhcnQpXCIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3dpdGNoIChlZGdlRGF0YS5hcnJvd1R5cGVFbmQpIHtcbiAgICBjYXNlIFwiYXJyb3dfY3Jvc3NcIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItY3Jvc3NFbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImFycm93X3BvaW50XCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLXBvaW50RW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhcnJvd19iYXJiXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWJhcmJFbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImFycm93X2NpcmNsZVwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jaXJjbGVFbmQpXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImFnZ3JlZ2F0aW9uXCI6XG4gICAgICBzdmdQYXRoLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBkaWFncmFtVHlwZSArIFwiLWFnZ3JlZ2F0aW9uRW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleHRlbnNpb25cIjpcbiAgICAgIHN2Z1BhdGguYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGRpYWdyYW1UeXBlICsgXCItZXh0ZW5zaW9uRW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjb21wb3NpdGlvblwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1jb21wb3NpdGlvbkVuZClcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZGVwZW5kZW5jeVwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1kZXBlbmRlbmN5RW5kKVwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJsb2xsaXBvcFwiOlxuICAgICAgc3ZnUGF0aC5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI1wiICsgZGlhZ3JhbVR5cGUgKyBcIi1sb2xsaXBvcEVuZClcIik7XG4gICAgICBicmVhaztcbiAgfVxufTtcbmNvbnN0IGdldENsYXNzZXMgPSBmdW5jdGlvbih0ZXh0LCBkaWFnT2JqKSB7XG4gIGxvZy5pbmZvKFwiRXh0cmFjdGluZyBjbGFzc2VzXCIpO1xuICBkaWFnT2JqLmRiLmNsZWFyKFwidmVyLTJcIik7XG4gIHRyeSB7XG4gICAgZGlhZ09iai5wYXJzZSh0ZXh0KTtcbiAgICByZXR1cm4gZGlhZ09iai5kYi5nZXRDbGFzc2VzKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5jb25zdCBhZGRTdWJHcmFwaHMgPSBmdW5jdGlvbihkYjIpIHtcbiAgY29uc3QgcGFyZW50TG9va3VwRGIgPSB7IHBhcmVudEJ5SWQ6IHt9LCBjaGlsZHJlbkJ5SWQ6IHt9IH07XG4gIGNvbnN0IHN1YmdyYXBocyA9IGRiMi5nZXRTdWJHcmFwaHMoKTtcbiAgbG9nLmluZm8oXCJTdWJncmFwaHMgLSBcIiwgc3ViZ3JhcGhzKTtcbiAgc3ViZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24oc3ViZ3JhcGgpIHtcbiAgICBzdWJncmFwaC5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgIHBhcmVudExvb2t1cERiLnBhcmVudEJ5SWRbbm9kZV0gPSBzdWJncmFwaC5pZDtcbiAgICAgIGlmIChwYXJlbnRMb29rdXBEYi5jaGlsZHJlbkJ5SWRbc3ViZ3JhcGguaWRdID09PSB2b2lkIDApIHtcbiAgICAgICAgcGFyZW50TG9va3VwRGIuY2hpbGRyZW5CeUlkW3N1YmdyYXBoLmlkXSA9IFtdO1xuICAgICAgfVxuICAgICAgcGFyZW50TG9va3VwRGIuY2hpbGRyZW5CeUlkW3N1YmdyYXBoLmlkXS5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICB9KTtcbiAgc3ViZ3JhcGhzLmZvckVhY2goZnVuY3Rpb24oc3ViZ3JhcGgpIHtcbiAgICAoeyBpZDogc3ViZ3JhcGguaWQgfSk7XG4gICAgaWYgKHBhcmVudExvb2t1cERiLnBhcmVudEJ5SWRbc3ViZ3JhcGguaWRdICE9PSB2b2lkIDApIHtcbiAgICAgIHBhcmVudExvb2t1cERiLnBhcmVudEJ5SWRbc3ViZ3JhcGguaWRdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBwYXJlbnRMb29rdXBEYjtcbn07XG5jb25zdCBjYWxjT2Zmc2V0ID0gZnVuY3Rpb24oc3JjLCBkZXN0LCBwYXJlbnRMb29rdXBEYikge1xuICBjb25zdCBhbmNlc3RvciA9IGZpbmRDb21tb25BbmNlc3RvcihzcmMsIGRlc3QsIHBhcmVudExvb2t1cERiKTtcbiAgaWYgKGFuY2VzdG9yID09PSB2b2lkIDAgfHwgYW5jZXN0b3IgPT09IFwicm9vdFwiKSB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCB9O1xuICB9XG4gIGNvbnN0IGFuY2VzdG9yT2Zmc2V0ID0gbm9kZURiW2FuY2VzdG9yXS5vZmZzZXQ7XG4gIHJldHVybiB7IHg6IGFuY2VzdG9yT2Zmc2V0LnBvc1gsIHk6IGFuY2VzdG9yT2Zmc2V0LnBvc1kgfTtcbn07XG5jb25zdCBpbnNlcnRFZGdlID0gZnVuY3Rpb24oZWRnZXNFbCwgZWRnZSwgZWRnZURhdGEsIGRpYWdPYmosIHBhcmVudExvb2t1cERiKSB7XG4gIGNvbnN0IG9mZnNldCA9IGNhbGNPZmZzZXQoZWRnZS5zb3VyY2VJZCwgZWRnZS50YXJnZXRJZCwgcGFyZW50TG9va3VwRGIpO1xuICBjb25zdCBzcmMgPSBlZGdlLnNlY3Rpb25zWzBdLnN0YXJ0UG9pbnQ7XG4gIGNvbnN0IGRlc3QgPSBlZGdlLnNlY3Rpb25zWzBdLmVuZFBvaW50O1xuICBjb25zdCBzZWdtZW50cyA9IGVkZ2Uuc2VjdGlvbnNbMF0uYmVuZFBvaW50cyA/IGVkZ2Uuc2VjdGlvbnNbMF0uYmVuZFBvaW50cyA6IFtdO1xuICBjb25zdCBzZWdQb2ludHMgPSBzZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IFtzZWdtZW50LnggKyBvZmZzZXQueCwgc2VnbWVudC55ICsgb2Zmc2V0LnldKTtcbiAgY29uc3QgcG9pbnRzID0gW1xuICAgIFtzcmMueCArIG9mZnNldC54LCBzcmMueSArIG9mZnNldC55XSxcbiAgICAuLi5zZWdQb2ludHMsXG4gICAgW2Rlc3QueCArIG9mZnNldC54LCBkZXN0LnkgKyBvZmZzZXQueV1cbiAgXTtcbiAgY29uc3QgY3VydmUgPSBsaW5lKCkuY3VydmUoY3VydmVMaW5lYXIpO1xuICBjb25zdCBlZGdlUGF0aCA9IGVkZ2VzRWwuaW5zZXJ0KFwicGF0aFwiKS5hdHRyKFwiZFwiLCBjdXJ2ZShwb2ludHMpKS5hdHRyKFwiY2xhc3NcIiwgXCJwYXRoIFwiICsgZWRnZURhdGEuY2xhc3NlcykuYXR0cihcImZpbGxcIiwgXCJub25lXCIpO1xuICBjb25zdCBlZGdlRyA9IGVkZ2VzRWwuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlTGFiZWxcIik7XG4gIGNvbnN0IGVkZ2VXaXRoTGFiZWwgPSBzZWxlY3QoZWRnZUcubm9kZSgpLmFwcGVuZENoaWxkKGVkZ2UubGFiZWxFbCkpO1xuICBjb25zdCBib3ggPSBlZGdlV2l0aExhYmVsLm5vZGUoKS5maXJzdENoaWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBlZGdlV2l0aExhYmVsLmF0dHIoXCJ3aWR0aFwiLCBib3gud2lkdGgpO1xuICBlZGdlV2l0aExhYmVsLmF0dHIoXCJoZWlnaHRcIiwgYm94LmhlaWdodCk7XG4gIGVkZ2VHLmF0dHIoXG4gICAgXCJ0cmFuc2Zvcm1cIixcbiAgICBgdHJhbnNsYXRlKCR7ZWRnZS5sYWJlbHNbMF0ueCArIG9mZnNldC54fSwgJHtlZGdlLmxhYmVsc1swXS55ICsgb2Zmc2V0Lnl9KWBcbiAgKTtcbiAgYWRkTWFya2Vyc1RvRWRnZShlZGdlUGF0aCwgZWRnZURhdGEsIGRpYWdPYmoudHlwZSwgZGlhZ09iai5hcnJvd01hcmtlckFic29sdXRlKTtcbn07XG5jb25zdCBpbnNlcnRDaGlsZHJlbiA9IChub2RlQXJyYXksIHBhcmVudExvb2t1cERiKSA9PiB7XG4gIG5vZGVBcnJheS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gW107XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkSWRzID0gcGFyZW50TG9va3VwRGIuY2hpbGRyZW5CeUlkW25vZGUuaWRdO1xuICAgIGlmIChjaGlsZElkcykge1xuICAgICAgY2hpbGRJZHMuZm9yRWFjaCgoY2hpbGRJZCkgPT4ge1xuICAgICAgICBub2RlLmNoaWxkcmVuLnB1c2gobm9kZURiW2NoaWxkSWRdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpbnNlcnRDaGlsZHJlbihub2RlLmNoaWxkcmVuLCBwYXJlbnRMb29rdXBEYik7XG4gIH0pO1xufTtcbmNvbnN0IGRyYXcgPSBhc3luYyBmdW5jdGlvbih0ZXh0LCBpZCwgX3ZlcnNpb24sIGRpYWdPYmopIHtcbiAgdmFyIF9hO1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIG5vZGVEYiA9IHt9O1xuICBwb3J0UG9zID0ge307XG4gIGRpYWdPYmouZGIuc2V0R2VuKFwiZ2VuLTJcIik7XG4gIGRpYWdPYmoucGFyc2VyLnBhcnNlKHRleHQpO1xuICBjb25zdCByZW5kZXJFbCA9IHNlbGVjdChcImJvZHlcIikuYXBwZW5kKFwiZGl2XCIpLmF0dHIoXCJzdHlsZVwiLCBcImhlaWdodDo0MDBweFwiKS5hdHRyKFwiaWRcIiwgXCJjeVwiKTtcbiAgbGV0IGdyYXBoID0ge1xuICAgIGlkOiBcInJvb3RcIixcbiAgICBsYXlvdXRPcHRpb25zOiB7XG4gICAgICBcImVsay5oaWVyYXJjaHlIYW5kbGluZ1wiOiBcIklOQ0xVREVfQ0hJTERSRU5cIixcbiAgICAgIFwib3JnLmVjbGlwc2UuZWxrLnBhZGRpbmdcIjogXCJbdG9wPTEwMCwgbGVmdD0xMDAsIGJvdHRvbT0xMTAsIHJpZ2h0PTExMF1cIixcbiAgICAgIFwiZWxrLmxheWVyZWQuc3BhY2luZy5lZGdlTm9kZUJldHdlZW5MYXllcnNcIjogXCIzMFwiLFxuICAgICAgLy8gJ2Vsay5sYXllcmVkLm1lcmdlRWRnZXMnOiAndHJ1ZScsXG4gICAgICBcImVsay5kaXJlY3Rpb25cIjogXCJET1dOXCJcbiAgICAgIC8vICdlbGsucG9ydHMuc2FtZUxheWVyRWRnZXMnOiB0cnVlLFxuICAgICAgLy8gJ25vZGVQbGFjZW1lbnQuc3RyYXRlZ3knOiAnU0lNUExFJyxcbiAgICB9LFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBlZGdlczogW11cbiAgfTtcbiAgbG9nLmluZm8oXCJEcmF3aW5nIGZsb3djaGFydCB1c2luZyB2MyByZW5kZXJlclwiLCBlbGspO1xuICBsZXQgZGlyID0gZGlhZ09iai5kYi5nZXREaXJlY3Rpb24oKTtcbiAgc3dpdGNoIChkaXIpIHtcbiAgICBjYXNlIFwiQlRcIjpcbiAgICAgIGdyYXBoLmxheW91dE9wdGlvbnNbXCJlbGsuZGlyZWN0aW9uXCJdID0gXCJVUFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIlRCXCI6XG4gICAgICBncmFwaC5sYXlvdXRPcHRpb25zW1wiZWxrLmRpcmVjdGlvblwiXSA9IFwiRE9XTlwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIkxSXCI6XG4gICAgICBncmFwaC5sYXlvdXRPcHRpb25zW1wiZWxrLmRpcmVjdGlvblwiXSA9IFwiUklHSFRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJSTFwiOlxuICAgICAgZ3JhcGgubGF5b3V0T3B0aW9uc1tcImVsay5kaXJlY3Rpb25cIl0gPSBcIkxFRlRcIjtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGNvbnN0IHsgc2VjdXJpdHlMZXZlbCwgZmxvd2NoYXJ0OiBjb25mMiB9ID0gZ2V0Q29uZmlnKCk7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IGRvYyA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudDtcbiAgY29uc3Qgc3ZnID0gcm9vdC5zZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIGNvbnN0IG1hcmtlcnMgPSBbXCJwb2ludFwiLCBcImNpcmNsZVwiLCBcImNyb3NzXCJdO1xuICBpbnNlcnRNYXJrZXJzKHN2ZywgbWFya2VycywgZGlhZ09iai50eXBlLCBkaWFnT2JqLmFycm93TWFya2VyQWJzb2x1dGUpO1xuICBjb25zdCB2ZXJ0ID0gZGlhZ09iai5kYi5nZXRWZXJ0aWNlcygpO1xuICBsZXQgc3ViRztcbiAgY29uc3Qgc3ViR3JhcGhzID0gZGlhZ09iai5kYi5nZXRTdWJHcmFwaHMoKTtcbiAgbG9nLmluZm8oXCJTdWJncmFwaHMgLSBcIiwgc3ViR3JhcGhzKTtcbiAgZm9yIChsZXQgaSA9IHN1YkdyYXBocy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHN1YkcgPSBzdWJHcmFwaHNbaV07XG4gICAgZGlhZ09iai5kYi5hZGRWZXJ0ZXgoXG4gICAgICBzdWJHLmlkLFxuICAgICAgeyB0ZXh0OiBzdWJHLnRpdGxlLCB0eXBlOiBzdWJHLmxhYmVsVHlwZSB9LFxuICAgICAgXCJncm91cFwiLFxuICAgICAgdm9pZCAwLFxuICAgICAgc3ViRy5jbGFzc2VzLFxuICAgICAgc3ViRy5kaXJcbiAgICApO1xuICB9XG4gIGNvbnN0IHN1YkdyYXBoc0VsID0gc3ZnLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwic3ViZ3JhcGhzXCIpO1xuICBjb25zdCBwYXJlbnRMb29rdXBEYiA9IGFkZFN1YkdyYXBocyhkaWFnT2JqLmRiKTtcbiAgZ3JhcGggPSBhd2FpdCBhZGRWZXJ0aWNlcyh2ZXJ0LCBpZCwgcm9vdCwgZG9jLCBkaWFnT2JqLCBwYXJlbnRMb29rdXBEYiwgZ3JhcGgpO1xuICBjb25zdCBlZGdlc0VsID0gc3ZnLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZWRnZXMgZWRnZVBhdGhcIik7XG4gIGNvbnN0IGVkZ2VzID0gZGlhZ09iai5kYi5nZXRFZGdlcygpO1xuICBncmFwaCA9IGFkZEVkZ2VzKGVkZ2VzLCBkaWFnT2JqLCBncmFwaCwgc3ZnKTtcbiAgY29uc3Qgbm9kZXMgPSBPYmplY3Qua2V5cyhub2RlRGIpO1xuICBub2Rlcy5mb3JFYWNoKChub2RlSWQpID0+IHtcbiAgICBjb25zdCBub2RlID0gbm9kZURiW25vZGVJZF07XG4gICAgaWYgKCFub2RlLnBhcmVudCkge1xuICAgICAgZ3JhcGguY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKHBhcmVudExvb2t1cERiLmNoaWxkcmVuQnlJZFtub2RlSWRdICE9PSB2b2lkIDApIHtcbiAgICAgIG5vZGUubGFiZWxzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogbm9kZS5sYWJlbFRleHQsXG4gICAgICAgICAgbGF5b3V0T3B0aW9uczoge1xuICAgICAgICAgICAgXCJub2RlTGFiZWxzLnBsYWNlbWVudFwiOiBcIltIX0NFTlRFUiwgVl9UT1AsIElOU0lERV1cIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgd2lkdGg6IG5vZGUubGFiZWxEYXRhLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogbm9kZS5sYWJlbERhdGEuaGVpZ2h0XG4gICAgICAgICAgLy8gd2lkdGg6IDEwMCxcbiAgICAgICAgICAvLyBoZWlnaHQ6IDEwMCxcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICAgIGRlbGV0ZSBub2RlLng7XG4gICAgICBkZWxldGUgbm9kZS55O1xuICAgICAgZGVsZXRlIG5vZGUud2lkdGg7XG4gICAgICBkZWxldGUgbm9kZS5oZWlnaHQ7XG4gICAgfVxuICB9KTtcbiAgaW5zZXJ0Q2hpbGRyZW4oZ3JhcGguY2hpbGRyZW4sIHBhcmVudExvb2t1cERiKTtcbiAgbG9nLmluZm8oXCJhZnRlciBsYXlvdXRcIiwgSlNPTi5zdHJpbmdpZnkoZ3JhcGgsIG51bGwsIDIpKTtcbiAgY29uc3QgZyA9IGF3YWl0IGVsay5sYXlvdXQoZ3JhcGgpO1xuICBkcmF3Tm9kZXMoMCwgMCwgZy5jaGlsZHJlbiwgc3ZnLCBzdWJHcmFwaHNFbCwgZGlhZ09iaiwgMCk7XG4gIGxvZy5pbmZvKFwiYWZ0ZXIgbGF5b3V0XCIsIGcpO1xuICAoX2EgPSBnLmVkZ2VzKSA9PSBudWxsID8gdm9pZCAwIDogX2EubWFwKChlZGdlKSA9PiB7XG4gICAgaW5zZXJ0RWRnZShlZGdlc0VsLCBlZGdlLCBlZGdlLmVkZ2VEYXRhLCBkaWFnT2JqLCBwYXJlbnRMb29rdXBEYik7XG4gIH0pO1xuICBzZXR1cEdyYXBoVmlld2JveCh7fSwgc3ZnLCBjb25mMi5kaWFncmFtUGFkZGluZywgY29uZjIudXNlTWF4V2lkdGgpO1xuICByZW5kZXJFbC5yZW1vdmUoKTtcbn07XG5jb25zdCBkcmF3Tm9kZXMgPSAocmVsWCwgcmVsWSwgbm9kZUFycmF5LCBzdmcsIHN1YmdyYXBoc0VsLCBkaWFnT2JqLCBkZXB0aCkgPT4ge1xuICBub2RlQXJyYXkuZm9yRWFjaChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGVEYltub2RlLmlkXS5vZmZzZXQgPSB7XG4gICAgICAgIHBvc1g6IG5vZGUueCArIHJlbFgsXG4gICAgICAgIHBvc1k6IG5vZGUueSArIHJlbFksXG4gICAgICAgIHg6IHJlbFgsXG4gICAgICAgIHk6IHJlbFksXG4gICAgICAgIGRlcHRoLFxuICAgICAgICB3aWR0aDogbm9kZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBub2RlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiZ3JvdXBcIikge1xuICAgICAgICBjb25zdCBzdWJncmFwaEVsID0gc3ViZ3JhcGhzRWwuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJzdWJncmFwaFwiKTtcbiAgICAgICAgc3ViZ3JhcGhFbC5pbnNlcnQoXCJyZWN0XCIpLmF0dHIoXCJjbGFzc1wiLCBcInN1YmdyYXBoIHN1YmdyYXBoLWx2bC1cIiArIGRlcHRoICUgNSArIFwiIG5vZGVcIikuYXR0cihcInhcIiwgbm9kZS54ICsgcmVsWCkuYXR0cihcInlcIiwgbm9kZS55ICsgcmVsWSkuYXR0cihcIndpZHRoXCIsIG5vZGUud2lkdGgpLmF0dHIoXCJoZWlnaHRcIiwgbm9kZS5oZWlnaHQpO1xuICAgICAgICBjb25zdCBsYWJlbCA9IHN1YmdyYXBoRWwuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbFwiKTtcbiAgICAgICAgY29uc3QgbGFiZWxDZW50ZXJpbmcgPSBnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscyA/IG5vZGUubGFiZWxEYXRhLndpZHRoIC8gMiA6IDA7XG4gICAgICAgIGxhYmVsLmF0dHIoXG4gICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICBgdHJhbnNsYXRlKCR7bm9kZS5sYWJlbHNbMF0ueCArIHJlbFggKyBub2RlLnggKyBsYWJlbENlbnRlcmluZ30sICR7bm9kZS5sYWJlbHNbMF0ueSArIHJlbFkgKyBub2RlLnkgKyAzfSlgXG4gICAgICAgICk7XG4gICAgICAgIGxhYmVsLm5vZGUoKS5hcHBlbmRDaGlsZChub2RlLmxhYmVsRGF0YS5sYWJlbE5vZGUpO1xuICAgICAgICBsb2cuaW5mbyhcIklkIChVR0gpPSBcIiwgbm9kZS50eXBlLCBub2RlLmxhYmVscyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuaW5mbyhcIklkIChVR0gpPSBcIiwgbm9kZS5pZCk7XG4gICAgICAgIG5vZGUuZWwuYXR0cihcbiAgICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICAgIGB0cmFuc2xhdGUoJHtub2RlLnggKyByZWxYICsgbm9kZS53aWR0aCAvIDJ9LCAke25vZGUueSArIHJlbFkgKyBub2RlLmhlaWdodCAvIDJ9KWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBub2RlQXJyYXkuZm9yRWFjaChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUgJiYgbm9kZS50eXBlID09PSBcImdyb3VwXCIpIHtcbiAgICAgIGRyYXdOb2RlcyhyZWxYICsgbm9kZS54LCByZWxZICsgbm9kZS55LCBub2RlLmNoaWxkcmVuLCBzdmcsIHN1YmdyYXBoc0VsLCBkaWFnT2JqLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfSk7XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIGdldENsYXNzZXMsXG4gIGRyYXdcbn07XG5jb25zdCBnZW5TZWN0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGxldCBzZWN0aW9ucyA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgc2VjdGlvbnMgKz0gYFxuICAgICAgLnN1YmdyYXBoLWx2bC0ke2l9IHtcbiAgICAgICAgZmlsbDogJHtvcHRpb25zW2BzdXJmYWNlJHtpfWBdfTtcbiAgICAgICAgc3Ryb2tlOiAke29wdGlvbnNbYHN1cmZhY2VQZWVyJHtpfWBdfTtcbiAgICAgIH1cbiAgICBgO1xuICB9XG4gIHJldHVybiBzZWN0aW9ucztcbn07XG5jb25zdCBnZXRTdHlsZXMgPSAob3B0aW9ucykgPT4gYC5sYWJlbCB7XG4gICAgZm9udC1mYW1pbHk6ICR7b3B0aW9ucy5mb250RmFtaWx5fTtcbiAgICBjb2xvcjogJHtvcHRpb25zLm5vZGVUZXh0Q29sb3IgfHwgb3B0aW9ucy50ZXh0Q29sb3J9O1xuICB9XG4gIC5jbHVzdGVyLWxhYmVsIHRleHQge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuICAuY2x1c3Rlci1sYWJlbCBzcGFuIHtcbiAgICBjb2xvcjogJHtvcHRpb25zLnRpdGxlQ29sb3J9O1xuICB9XG5cbiAgLmxhYmVsIHRleHQsc3BhbiB7XG4gICAgZmlsbDogJHtvcHRpb25zLm5vZGVUZXh0Q29sb3IgfHwgb3B0aW9ucy50ZXh0Q29sb3J9O1xuICAgIGNvbG9yOiAke29wdGlvbnMubm9kZVRleHRDb2xvciB8fCBvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cblxuICAubm9kZSByZWN0LFxuICAubm9kZSBjaXJjbGUsXG4gIC5ub2RlIGVsbGlwc2UsXG4gIC5ub2RlIHBvbHlnb24sXG4gIC5ub2RlIHBhdGgge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5ub2RlIC5sYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG4gIC5ub2RlLmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmFycm93aGVhZFBhdGgge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hcnJvd2hlYWRDb2xvcn07XG4gIH1cblxuICAuZWRnZVBhdGggLnBhdGgge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn07XG4gICAgc3Ryb2tlLXdpZHRoOiAyLjBweDtcbiAgfVxuXG4gIC5mbG93Y2hhcnQtbGluayB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfTtcbiAgICBmaWxsOiBub25lO1xuICB9XG5cbiAgLmVkZ2VMYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtvcHRpb25zLmVkZ2VMYWJlbEJhY2tncm91bmR9O1xuICAgIHJlY3Qge1xuICAgICAgb3BhY2l0eTogMC44NTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICAgIGZpbGw6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmNsdXN0ZXIgcmVjdCB7XG4gICAgZmlsbDogJHtvcHRpb25zLmNsdXN0ZXJCa2d9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmNsdXN0ZXJCb3JkZXJ9O1xuICAgIHN0cm9rZS13aWR0aDogMXB4O1xuICB9XG5cbiAgLmNsdXN0ZXIgdGV4dCB7XG4gICAgZmlsbDogJHtvcHRpb25zLnRpdGxlQ29sb3J9O1xuICB9XG5cbiAgLmNsdXN0ZXIgc3BhbiB7XG4gICAgY29sb3I6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuICAvKiAuY2x1c3RlciBkaXYge1xuICAgIGNvbG9yOiAke29wdGlvbnMudGl0bGVDb2xvcn07XG4gIH0gKi9cblxuICBkaXYubWVybWFpZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgZm9udC1mYW1pbHk6ICR7b3B0aW9ucy5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2dyb3VuZDogJHtvcHRpb25zLnRlcnRpYXJ5Q29sb3J9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7b3B0aW9ucy5ib3JkZXIyfTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTAwO1xuICB9XG5cbiAgLmZsb3djaGFydFRpdGxlVGV4dCB7XG4gICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZmlsbDogJHtvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cbiAgLnN1YmdyYXBoIHtcbiAgICBzdHJva2Utd2lkdGg6MjtcbiAgICByeDozO1xuICB9XG4gIC8vIC5zdWJncmFwaC1sdmwtMSB7XG4gIC8vICAgZmlsbDojY2NjO1xuICAvLyAgIC8vIHN0cm9rZTpibGFjaztcbiAgLy8gfVxuXG4gIC5mbG93Y2hhcnQtbGFiZWwgdGV4dCB7XG4gICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgfVxuXG4gICR7Z2VuU2VjdGlvbnMob3B0aW9ucyl9XG5gO1xuY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgZGIsXG4gIHJlbmRlcmVyLFxuICBwYXJzZXIsXG4gIHN0eWxlc1xufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/flowchart-elk-definition-5082a990.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/ganttDiagram-7ce12d6b.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/ganttDiagram-7ce12d6b.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs_plugin_isoWeek_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs/plugin/isoWeek.js */ \"../../../node_modules/dayjs/plugin/isoWeek.js\");\n/* harmony import */ var dayjs_plugin_customParseFormat_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/customParseFormat.js */ \"../../../node_modules/dayjs/plugin/customParseFormat.js\");\n/* harmony import */ var dayjs_plugin_advancedFormat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs/plugin/advancedFormat.js */ \"../../../node_modules/dayjs/plugin/advancedFormat.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 5], $V2 = [7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 28, 35, 40], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 17], $V6 = [1, 18], $V7 = [1, 19], $V8 = [1, 20], $V9 = [1, 21], $Va = [1, 22], $Vb = [1, 23], $Vc = [1, 24], $Vd = [1, 25], $Ve = [1, 26], $Vf = [1, 27], $Vg = [1, 29], $Vh = [1, 31], $Vi = [1, 34], $Vj = [5, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 28, 35, 40];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"directive\": 4, \"gantt\": 5, \"document\": 6, \"EOF\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NL\": 11, \"dateFormat\": 12, \"inclusiveEndDates\": 13, \"topAxis\": 14, \"axisFormat\": 15, \"tickInterval\": 16, \"excludes\": 17, \"includes\": 18, \"todayMarker\": 19, \"title\": 20, \"acc_title\": 21, \"acc_title_value\": 22, \"acc_descr\": 23, \"acc_descr_value\": 24, \"acc_descr_multiline_value\": 25, \"section\": 26, \"clickStatement\": 27, \"taskTxt\": 28, \"taskData\": 29, \"openDirective\": 30, \"typeDirective\": 31, \"closeDirective\": 32, \":\": 33, \"argDirective\": 34, \"click\": 35, \"callbackname\": 36, \"callbackargs\": 37, \"href\": 38, \"clickStatementDebug\": 39, \"open_directive\": 40, \"type_directive\": 41, \"arg_directive\": 42, \"close_directive\": 43, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"gantt\", 7: \"EOF\", 9: \"SPACE\", 11: \"NL\", 12: \"dateFormat\", 13: \"inclusiveEndDates\", 14: \"topAxis\", 15: \"axisFormat\", 16: \"tickInterval\", 17: \"excludes\", 18: \"includes\", 19: \"todayMarker\", 20: \"title\", 21: \"acc_title\", 22: \"acc_title_value\", 23: \"acc_descr\", 24: \"acc_descr_value\", 25: \"acc_descr_multiline_value\", 26: \"section\", 28: \"taskTxt\", 29: \"taskData\", 33: \":\", 35: \"click\", 36: \"callbackname\", 37: \"callbackargs\", 38: \"href\", 40: \"open_directive\", 41: \"type_directive\", 42: \"arg_directive\", 43: \"close_directive\" },\n productions_: [0, [3, 2], [3, 3], [6, 0], [6, 2], [8, 2], [8, 1], [8, 1], [8, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [10, 1], [10, 1], [10, 2], [10, 1], [4, 4], [4, 6], [27, 2], [27, 3], [27, 3], [27, 4], [27, 3], [27, 4], [27, 2], [39, 2], [39, 3], [39, 3], [39, 4], [39, 3], [39, 4], [39, 2], [30, 1], [31, 1], [34, 1], [32, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n return $$[$0 - 1];\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 9:\n yy.setDateFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 10:\n yy.enableInclusiveEndDates();\n this.$ = $$[$0].substr(18);\n break;\n case 11:\n yy.TopAxis();\n this.$ = $$[$0].substr(8);\n break;\n case 12:\n yy.setAxisFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 13:\n yy.setTickInterval($$[$0].substr(13));\n this.$ = $$[$0].substr(13);\n break;\n case 14:\n yy.setExcludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 15:\n yy.setIncludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 16:\n yy.setTodayMarker($$[$0].substr(12));\n this.$ = $$[$0].substr(12);\n break;\n case 17:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 19:\n case 20:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 21:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 23:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n case 27:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0], null);\n break;\n case 28:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 29:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null);\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 30:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setLink($$[$0 - 3], $$[$0]);\n break;\n case 31:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0], null);\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n break;\n case 32:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]);\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n break;\n case 33:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 34:\n case 40:\n this.$ = $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 35:\n case 36:\n case 38:\n this.$ = $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 37:\n case 39:\n this.$ = $$[$0 - 3] + \" \" + $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 41:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 42:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 43:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 44:\n yy.parseDirective(\"}%%\", \"close_directive\", \"gantt\");\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 30: 4, 40: $V1 }, { 1: [3] }, { 3: 6, 4: 2, 5: $V0, 30: 4, 40: $V1 }, o($V2, [2, 3], { 6: 7 }), { 31: 8, 41: [1, 9] }, { 41: [2, 41] }, { 1: [2, 1] }, { 4: 30, 7: [1, 10], 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: $V3, 13: $V4, 14: $V5, 15: $V6, 16: $V7, 17: $V8, 18: $V9, 19: $Va, 20: $Vb, 21: $Vc, 23: $Vd, 25: $Ve, 26: $Vf, 27: 28, 28: $Vg, 30: 4, 35: $Vh, 40: $V1 }, { 32: 32, 33: [1, 33], 43: $Vi }, o([33, 43], [2, 42]), o($V2, [2, 8], { 1: [2, 2] }), o($V2, [2, 4]), { 4: 30, 10: 35, 12: $V3, 13: $V4, 14: $V5, 15: $V6, 16: $V7, 17: $V8, 18: $V9, 19: $Va, 20: $Vb, 21: $Vc, 23: $Vd, 25: $Ve, 26: $Vf, 27: 28, 28: $Vg, 30: 4, 35: $Vh, 40: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 9]), o($V2, [2, 10]), o($V2, [2, 11]), o($V2, [2, 12]), o($V2, [2, 13]), o($V2, [2, 14]), o($V2, [2, 15]), o($V2, [2, 16]), o($V2, [2, 17]), { 22: [1, 36] }, { 24: [1, 37] }, o($V2, [2, 20]), o($V2, [2, 21]), o($V2, [2, 22]), { 29: [1, 38] }, o($V2, [2, 24]), { 36: [1, 39], 38: [1, 40] }, { 11: [1, 41] }, { 34: 42, 42: [1, 43] }, { 11: [2, 44] }, o($V2, [2, 5]), o($V2, [2, 18]), o($V2, [2, 19]), o($V2, [2, 23]), o($V2, [2, 27], { 37: [1, 44], 38: [1, 45] }), o($V2, [2, 33], { 36: [1, 46] }), o($Vj, [2, 25]), { 32: 47, 43: $Vi }, { 43: [2, 43] }, o($V2, [2, 28], { 38: [1, 48] }), o($V2, [2, 29]), o($V2, [2, 31], { 37: [1, 49] }), { 11: [1, 50] }, o($V2, [2, 30]), o($V2, [2, 32]), o($Vj, [2, 26])],\n defaultActions: { 5: [2, 41], 6: [2, 1], 34: [2, 44], 43: [2, 43] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 40;\n case 1:\n this.begin(\"type_directive\");\n return 41;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 33;\n case 3:\n this.popState();\n this.popState();\n return 43;\n case 4:\n return 42;\n case 5:\n this.begin(\"acc_title\");\n return 21;\n case 6:\n this.popState();\n return \"acc_title_value\";\n case 7:\n this.begin(\"acc_descr\");\n return 23;\n case 8:\n this.popState();\n return \"acc_descr_value\";\n case 9:\n this.begin(\"acc_descr_multiline\");\n break;\n case 10:\n this.popState();\n break;\n case 11:\n return \"acc_descr_multiline_value\";\n case 12:\n break;\n case 13:\n break;\n case 14:\n break;\n case 15:\n return 11;\n case 16:\n break;\n case 17:\n break;\n case 18:\n break;\n case 19:\n this.begin(\"href\");\n break;\n case 20:\n this.popState();\n break;\n case 21:\n return 38;\n case 22:\n this.begin(\"callbackname\");\n break;\n case 23:\n this.popState();\n break;\n case 24:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 25:\n return 36;\n case 26:\n this.popState();\n break;\n case 27:\n return 37;\n case 28:\n this.begin(\"click\");\n break;\n case 29:\n this.popState();\n break;\n case 30:\n return 35;\n case 31:\n return 5;\n case 32:\n return 12;\n case 33:\n return 13;\n case 34:\n return 14;\n case 35:\n return 15;\n case 36:\n return 16;\n case 37:\n return 18;\n case 38:\n return 17;\n case 39:\n return 19;\n case 40:\n return \"date\";\n case 41:\n return 20;\n case 42:\n return \"accDescription\";\n case 43:\n return 26;\n case 44:\n return 28;\n case 45:\n return 29;\n case 46:\n return 33;\n case 47:\n return 7;\n case 48:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%(?!\\{)*[^\\n]*)/i, /^(?:[^\\}]%%*[^\\n]*)/i, /^(?:%%*[^\\n]*[\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:href[\\s]+[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:call[\\s]+)/i, /^(?:\\([\\s]*\\))/i, /^(?:\\()/i, /^(?:[^(]*)/i, /^(?:\\))/i, /^(?:[^)]*)/i, /^(?:click[\\s]+)/i, /^(?:[\\s\\n])/i, /^(?:[^\\s\\n]*)/i, /^(?:gantt\\b)/i, /^(?:dateFormat\\s[^#\\n;]+)/i, /^(?:inclusiveEndDates\\b)/i, /^(?:topAxis\\b)/i, /^(?:axisFormat\\s[^#\\n;]+)/i, /^(?:tickInterval\\s[^#\\n;]+)/i, /^(?:includes\\s[^#\\n;]+)/i, /^(?:excludes\\s[^#\\n;]+)/i, /^(?:todayMarker\\s[^\\n;]+)/i, /^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accDescription\\s[^#\\n;]+)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [10, 11], \"inclusive\": false }, \"acc_descr\": { \"rules\": [8], \"inclusive\": false }, \"acc_title\": { \"rules\": [6], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"callbackargs\": { \"rules\": [26, 27], \"inclusive\": false }, \"callbackname\": { \"rules\": [23, 24, 25], \"inclusive\": false }, \"href\": { \"rules\": [20, 21], \"inclusive\": false }, \"click\": { \"rules\": [29, 30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 7, 9, 12, 13, 14, 15, 16, 17, 18, 19, 22, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst ganttParser = parser;\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_isoWeek_js__WEBPACK_IMPORTED_MODULE_2__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_customParseFormat_js__WEBPACK_IMPORTED_MODULE_3__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_advancedFormat_js__WEBPACK_IMPORTED_MODULE_4__);\nlet dateFormat = \"\";\nlet axisFormat = \"\";\nlet tickInterval = void 0;\nlet todayMarker = \"\";\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = \"\";\nlet displayMode = \"\";\nconst tags = [\"active\", \"done\", \"crit\", \"milestone\"];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\nlet lastOrder = 0;\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.m.parseDirective(this, statement, context, type);\n};\nconst clear = function() {\n sections = [];\n tasks = [];\n currentSection = \"\";\n funs = [];\n taskCnt = 0;\n lastTask = void 0;\n lastTaskID = void 0;\n rawTasks = [];\n dateFormat = \"\";\n axisFormat = \"\";\n displayMode = \"\";\n tickInterval = void 0;\n todayMarker = \"\";\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.v)();\n};\nconst setAxisFormat = function(txt) {\n axisFormat = txt;\n};\nconst getAxisFormat = function() {\n return axisFormat;\n};\nconst setTickInterval = function(txt) {\n tickInterval = txt;\n};\nconst getTickInterval = function() {\n return tickInterval;\n};\nconst setTodayMarker = function(txt) {\n todayMarker = txt;\n};\nconst getTodayMarker = function() {\n return todayMarker;\n};\nconst setDateFormat = function(txt) {\n dateFormat = txt;\n};\nconst enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\nconst endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\nconst enableTopAxis = function() {\n topAxis = true;\n};\nconst topAxisEnabled = function() {\n return topAxis;\n};\nconst setDisplayMode = function(txt) {\n displayMode = txt;\n};\nconst getDisplayMode = function() {\n return displayMode;\n};\nconst getDateFormat = function() {\n return dateFormat;\n};\nconst setIncludes = function(txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getIncludes = function() {\n return includes;\n};\nconst setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getExcludes = function() {\n return excludes;\n};\nconst getLinks = function() {\n return links;\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks = rawTasks;\n return tasks;\n};\nconst isInvalidDate = function(date, dateFormat2, excludes2, includes2) {\n if (includes2.includes(date.format(dateFormat2.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes2.includes(\"weekends\")) {\n return true;\n }\n if (excludes2.includes(date.format(\"dddd\").toLowerCase())) {\n return true;\n }\n return excludes2.includes(date.format(dateFormat2.trim()));\n};\nconst checkTaskDates = function(task, dateFormat2, excludes2, includes2) {\n if (!excludes2.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(task.startTime);\n } else {\n startTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(task.startTime, dateFormat2, true);\n }\n startTime = startTime.add(1, \"d\");\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(task.endTime);\n } else {\n originalEndTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(task.endTime, dateFormat2, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat2,\n excludes2,\n includes2\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\nconst fixTaskDates = function(startTime, endTime, dateFormat2, excludes2, includes2) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes2);\n if (invalid) {\n endTime = endTime.add(1, \"d\");\n }\n startTime = startTime.add(1, \"d\");\n }\n return [endTime, renderEndTime];\n};\nconst getStartDate = function(prevTime, dateFormat2, str) {\n str = str.trim();\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n if (afterStatement !== null) {\n let latestEndingTask = null;\n afterStatement[1].split(\" \").forEach(function(id) {\n let task = findTaskById(id);\n if (task !== void 0) {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n if (!latestEndingTask) {\n const dt = /* @__PURE__ */ new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n let mDate = dayjs__WEBPACK_IMPORTED_MODULE_1__(str, dateFormat2.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.debug(\"Invalid date:\" + str);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.debug(\"With date format:\" + dateFormat2.trim());\n const d = new Date(str);\n if (d === void 0 || isNaN(d.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously\n // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304.\n // This can cause virtually infinite loops while rendering, so for the\n // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as\n // invalid.\n d.getFullYear() < -1e4 || d.getFullYear() > 1e4) {\n throw new Error(\"Invalid date:\" + str);\n }\n return d;\n }\n};\nconst parseDuration = function(str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n return [NaN, \"ms\"];\n};\nconst getEndDate = function(prevTime, dateFormat2, str, inclusive = false) {\n str = str.trim();\n let mDate = dayjs__WEBPACK_IMPORTED_MODULE_1__(str, dateFormat2.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate = mDate.add(1, \"d\");\n }\n return mDate.toDate();\n }\n let endTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (idStr === void 0) {\n taskCnt = taskCnt + 1;\n return \"task\" + taskCnt;\n }\n return idStr;\n};\nconst compileData = function(prevTask, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === \":\") {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n let endTimeData = \"\";\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(void 0, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(void 0, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n }\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(endTimeData, \"YYYY-MM-DD\", true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n return task;\n};\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === \":\") {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: \"prevTaskEnd\",\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: \"getStartDate\",\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: \"getStartDate\",\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n }\n return task;\n};\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nconst addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n lastOrder++;\n const pos = rawTasks.push(rawTask);\n lastTaskID = rawTask.id;\n taskDb[rawTask.id] = pos - 1;\n};\nconst findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\nconst addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = \"\";\n switch (rawTasks[pos].raw.startTime.type) {\n case \"prevTaskEnd\": {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case \"getStartDate\":\n startTime = getStartDate(void 0, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs__WEBPACK_IMPORTED_MODULE_1__(\n rawTasks[pos].raw.endTime.data,\n \"YYYY-MM-DD\",\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().securityLevel !== \"loose\") {\n linkStr = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__.sanitizeUrl)(_linkStr);\n }\n ids.split(\",\").forEach(function(id) {\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n pushFun(id, () => {\n window.open(linkStr, \"_self\");\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(id) {\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n rawTask.classes.push(className);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n pushFun(id, () => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.u.runFunc(functionName, ...argList);\n });\n }\n};\nconst pushFun = function(id, callbackFunction) {\n funs.push(\n function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n },\n function() {\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n }\n );\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst ganttDb = {\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.g,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.t,\n setDisplayMode,\n getDisplayMode,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.b,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.a,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate\n};\nfunction getTaskTags(data, task, tags2) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags2.forEach(function(t) {\n const pattern = \"^\\\\s*\" + t + \"\\\\s*$\";\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\nconst setConf = function() {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.debug(\"Something is calling, setConf, remove the call\");\n};\nconst getMaxIntersections = (tasks2, orderOffset) => {\n let timeline = [...tasks2].map(() => -Infinity);\n let sorted = [...tasks2].sort((a, b) => a.startTime - b.startTime || a.order - b.order);\n let maxIntersections = 0;\n for (const element of sorted) {\n for (let j = 0; j < timeline.length; j++) {\n if (element.startTime >= timeline[j]) {\n timeline[j] = element.endTime;\n element.order = j + orderOffset;\n if (j > maxIntersections) {\n maxIntersections = j;\n }\n break;\n }\n }\n }\n return maxIntersections;\n};\nlet w;\nconst draw = function(text, id, version, diagObj) {\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().gantt;\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_5__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_5__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_5__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n if (w === void 0) {\n w = 1200;\n }\n if (conf.useWidth !== void 0) {\n w = conf.useWidth;\n }\n const taskArray = diagObj.db.getTasks();\n let categories = [];\n for (const element of taskArray) {\n categories.push(element.type);\n }\n categories = checkUnique(categories);\n const categoryHeights = {};\n let h = 2 * conf.topPadding;\n if (diagObj.db.getDisplayMode() === \"compact\" || conf.displayMode === \"compact\") {\n const categoryElements = {};\n for (const element of taskArray) {\n if (categoryElements[element.section] === void 0) {\n categoryElements[element.section] = [element];\n } else {\n categoryElements[element.section].push(element);\n }\n }\n let intersections = 0;\n for (const category of Object.keys(categoryElements)) {\n const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1;\n intersections += categoryHeight;\n h += categoryHeight * (conf.barHeight + conf.barGap);\n categoryHeights[category] = categoryHeight;\n }\n } else {\n h += taskArray.length * (conf.barHeight + conf.barGap);\n for (const category of categories) {\n categoryHeights[category] = taskArray.filter((task) => task.type === category).length;\n }\n }\n elem.setAttribute(\"viewBox\", \"0 0 \" + w + \" \" + h);\n const svg = root.select(`[id=\"${id}\"]`);\n const timeScale = (0,d3__WEBPACK_IMPORTED_MODULE_5__.scaleTime)().domain([\n (0,d3__WEBPACK_IMPORTED_MODULE_5__.min)(taskArray, function(d) {\n return d.startTime;\n }),\n (0,d3__WEBPACK_IMPORTED_MODULE_5__.max)(taskArray, function(d) {\n return d.endTime;\n })\n ]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n taskArray.sort(taskCompare);\n makeGant(taskArray, w, h);\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.i)(svg, h, w, conf.useMaxWidth);\n svg.append(\"text\").text(diagObj.db.getDiagramTitle()).attr(\"x\", w / 2).attr(\"y\", conf.titleTopMargin).attr(\"class\", \"titleText\");\n function makeGant(tasks2, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n const colorScale = (0,d3__WEBPACK_IMPORTED_MODULE_5__.scaleLinear)().domain([0, categories.length]).range([\"#00B9FA\", \"#F95002\"]).interpolate(d3__WEBPACK_IMPORTED_MODULE_5__.interpolateHcl);\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks2,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks2, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth);\n vertLabels(gap, topPadding);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w2) {\n const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))];\n const uniqueTasks = uniqueTaskOrderIds.map((id2) => theArray.find((item) => item.order === id2));\n svg.append(\"g\").selectAll(\"rect\").data(uniqueTasks).enter().append(\"rect\").attr(\"x\", 0).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad - 2;\n }).attr(\"width\", function() {\n return w2 - conf.rightPadding / 2;\n }).attr(\"height\", theGap).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return \"section section\" + i % conf.numberSectionStyles;\n }\n }\n return \"section section0\";\n });\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(theArray).enter();\n const links2 = diagObj.db.getLinks();\n rectangles.append(\"rect\").attr(\"id\", function(d) {\n return d.id;\n }).attr(\"rx\", 3).attr(\"ry\", 3).attr(\"x\", function(d) {\n if (d.milestone) {\n return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n return timeScale(d.startTime) + theSidePad;\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad;\n }).attr(\"width\", function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n }).attr(\"height\", theBarHeight).attr(\"transform-origin\", function(d, i) {\n i = d.order;\n return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + \"px \" + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + \"px\";\n }).attr(\"class\", function(d) {\n const res = \"task\";\n let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n let taskClass = \"\";\n if (d.active) {\n if (d.crit) {\n taskClass += \" activeCrit\";\n } else {\n taskClass = \" active\";\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = \" doneCrit\";\n } else {\n taskClass = \" done\";\n }\n } else {\n if (d.crit) {\n taskClass += \" crit\";\n }\n }\n if (taskClass.length === 0) {\n taskClass = \" task\";\n }\n if (d.milestone) {\n taskClass = \" milestone \" + taskClass;\n }\n taskClass += secNum;\n taskClass += \" \" + classStr;\n return res + taskClass;\n });\n rectangles.append(\"text\").attr(\"id\", function(d) {\n return d.id + \"-text\";\n }).text(function(d) {\n return d.task;\n }).attr(\"font-size\", conf.fontSize).attr(\"x\", function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n }).attr(\"text-height\", theBarHeight).attr(\"class\", function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n let taskType = \"\";\n if (d.active) {\n if (d.crit) {\n taskType = \"activeCritText\" + secNum;\n } else {\n taskType = \"activeText\" + secNum;\n }\n }\n if (d.done) {\n if (d.crit) {\n taskType = taskType + \" doneCritText\" + secNum;\n } else {\n taskType = taskType + \" doneText\" + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + \" critText\" + secNum;\n }\n }\n if (d.milestone) {\n taskType += \" milestoneText\";\n }\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return classStr + \" taskTextOutsideLeft taskTextOutside\" + secNum + \" \" + taskType;\n } else {\n return classStr + \" taskTextOutsideRight taskTextOutside\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n } else {\n return classStr + \" taskText taskText\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n });\n const securityLevel2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)().securityLevel;\n if (securityLevel2 === \"sandbox\") {\n let sandboxElement2;\n sandboxElement2 = (0,d3__WEBPACK_IMPORTED_MODULE_5__.select)(\"#i\" + id);\n const doc2 = sandboxElement2.nodes()[0].contentDocument;\n rectangles.filter(function(d) {\n return links2[d.id] !== void 0;\n }).each(function(o) {\n var taskRect = doc2.querySelector(\"#\" + o.id);\n var taskText = doc2.querySelector(\"#\" + o.id + \"-text\");\n const oldParent = taskRect.parentNode;\n var Link = doc2.createElement(\"a\");\n Link.setAttribute(\"xlink:href\", links2[o.id]);\n Link.setAttribute(\"target\", \"_top\");\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n function drawExcludeDays(theGap, theTopPad, theSidePad, w2, h2, tasks2, excludes2, includes2) {\n const minTime = tasks2.reduce(\n (min2, { startTime }) => min2 ? Math.min(min2, startTime) : startTime,\n 0\n );\n const maxTime = tasks2.reduce((max2, { endTime }) => max2 ? Math.max(max2, endTime) : endTime, 0);\n const dateFormat2 = diagObj.db.getDateFormat();\n if (!minTime || !maxTime) {\n return;\n }\n const excludeRanges = [];\n let range = null;\n let d = dayjs__WEBPACK_IMPORTED_MODULE_1__(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat2, excludes2, includes2)) {\n if (!range) {\n range = {\n start: d,\n end: d\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, \"d\");\n }\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(excludeRanges).enter();\n rectangles.append(\"rect\").attr(\"id\", function(d2) {\n return \"exclude-\" + d2.start.format(\"YYYY-MM-DD\");\n }).attr(\"x\", function(d2) {\n return timeScale(d2.start) + theSidePad;\n }).attr(\"y\", conf.gridLineStartPadding).attr(\"width\", function(d2) {\n const renderEnd = d2.end.add(1, \"day\");\n return timeScale(renderEnd) - timeScale(d2.start);\n }).attr(\"height\", h2 - theTopPad - conf.gridLineStartPadding).attr(\"transform-origin\", function(d2, i) {\n return (timeScale(d2.start) + theSidePad + 0.5 * (timeScale(d2.end) - timeScale(d2.start))).toString() + \"px \" + (i * theGap + 0.5 * h2).toString() + \"px\";\n }).attr(\"class\", \"exclude-range\");\n }\n function makeGrid(theSidePad, theTopPad, w2, h2) {\n let bottomXAxis = (0,d3__WEBPACK_IMPORTED_MODULE_5__.axisBottom)(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat((0,d3__WEBPACK_IMPORTED_MODULE_5__.timeFormat)(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n const reTickInterval = /^([1-9]\\d*)(minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case \"minute\":\n bottomXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeMinute.every(every));\n break;\n case \"hour\":\n bottomXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeHour.every(every));\n break;\n case \"day\":\n bottomXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeDay.every(every));\n break;\n case \"week\":\n bottomXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeWeek.every(every));\n break;\n case \"month\":\n bottomXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + (h2 - 50) + \")\").call(bottomXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10).attr(\"dy\", \"1em\");\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = (0,d3__WEBPACK_IMPORTED_MODULE_5__.axisTop)(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat((0,d3__WEBPACK_IMPORTED_MODULE_5__.timeFormat)(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case \"minute\":\n topXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeMinute.every(every));\n break;\n case \"hour\":\n topXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeHour.every(every));\n break;\n case \"day\":\n topXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeDay.every(every));\n break;\n case \"week\":\n topXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeWeek.every(every));\n break;\n case \"month\":\n topXAxis.ticks(d3__WEBPACK_IMPORTED_MODULE_5__.timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + theTopPad + \")\").call(topXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10);\n }\n }\n function vertLabels(theGap, theTopPad) {\n let prevGap = 0;\n const numOccurances = Object.keys(categoryHeights).map((d) => [d, categoryHeights[d]]);\n svg.append(\"g\").selectAll(\"text\").data(numOccurances).enter().append(function(d) {\n const rows = d[0].split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"dy\", dy + \"em\");\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttribute(\"alignment-baseline\", \"central\");\n tspan.setAttribute(\"x\", \"10\");\n if (j > 0) {\n tspan.setAttribute(\"dy\", \"1em\");\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }).attr(\"x\", 10).attr(\"y\", function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return d[1] * theGap / 2 + theTopPad;\n }\n }).attr(\"font-size\", conf.sectionFontSize).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return \"sectionTitle sectionTitle\" + i % conf.numberSectionStyles;\n }\n }\n return \"sectionTitle\";\n });\n }\n function drawToday(theSidePad, theTopPad, w2, h2) {\n const todayMarker2 = diagObj.db.getTodayMarker();\n if (todayMarker2 === \"off\") {\n return;\n }\n const todayG = svg.append(\"g\").attr(\"class\", \"today\");\n const today = /* @__PURE__ */ new Date();\n const todayLine = todayG.append(\"line\");\n todayLine.attr(\"x1\", timeScale(today) + theSidePad).attr(\"x2\", timeScale(today) + theSidePad).attr(\"y1\", conf.titleTopMargin).attr(\"y2\", h2 - conf.titleTopMargin).attr(\"class\", \"today\");\n if (todayMarker2 !== \"\") {\n todayLine.attr(\"style\", todayMarker2.replace(/,/g, \";\"));\n }\n }\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n};\nconst ganttRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\nconst ganttStyles = getStyles;\nconst diagram = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9nYW50dERpYWdyYW0tN2NlMTJkNmIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFzRDtBQUM1QjtBQUN5QjtBQUNvQjtBQUNOO0FBQytNO0FBQzdHO0FBQ2hKO0FBQ0E7QUFDSDtBQUNjO0FBQ2Q7QUFDYztBQUM5QjtBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQixLQUFLO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTCxVQUFVO0FBQ1YsZ0JBQWdCLDh2QkFBOHZCO0FBQzl3QixrQkFBa0IseWhCQUF5aEI7QUFDM2lCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLG9DQUFvQyxJQUFJLFFBQVEsSUFBSSxvQ0FBb0MsbUJBQW1CLE1BQU0sS0FBSyxtQkFBbUIsSUFBSSxhQUFhLElBQUksV0FBVyxJQUFJLDBOQUEwTixJQUFJLDhCQUE4Qix5Q0FBeUMsV0FBVyxxQkFBcUIsOEtBQThLLDRMQUE0TCxhQUFhLElBQUksYUFBYSx1REFBdUQsYUFBYSxxQkFBcUIsMEJBQTBCLElBQUksYUFBYSxJQUFJLHFCQUFxQixJQUFJLGFBQWEsdUZBQXVGLDBCQUEwQixxQkFBcUIsYUFBYSxzQkFBc0IsaUJBQWlCLElBQUksYUFBYSxvQkFBb0IsYUFBYSxzQ0FBc0MsYUFBYSxLQUFLLGFBQWE7QUFDdjJDLHNCQUFzQixpREFBaUQ7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7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O0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQix1REFBUztBQUNwQztBQUNBO0FBQ0Esd0JBQXdCLDBDQUFNO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFdBQVc7QUFDMUI7QUFDQTtBQUNBLDJDQUEy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QUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7O0FBRUE7QUFDQTtBQUNBLFlBQVk7QUFDWjs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyQkFBMkI7QUFDdkM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyQkFBMkI7QUFDdkM7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJCQUEyQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkJBQTJCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9nYW50dERpYWdyYW0tN2NlMTJkNmIuanM/NTkyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYW5pdGl6ZVVybCB9IGZyb20gXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IGRheWpzSXNvV2VlayBmcm9tIFwiZGF5anMvcGx1Z2luL2lzb1dlZWsuanNcIjtcbmltcG9ydCBkYXlqc0N1c3RvbVBhcnNlRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQuanNcIjtcbmltcG9ydCBkYXlqc0FkdmFuY2VkRm9ybWF0IGZyb20gXCJkYXlqcy9wbHVnaW4vYWR2YW5jZWRGb3JtYXQuanNcIjtcbmltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIGIgYXMgc2V0QWNjRGVzY3JpcHRpb24sIGEgYXMgZ2V0QWNjRGVzY3JpcHRpb24sIG0gYXMgbWVybWFpZEFQSSwgdiBhcyBjbGVhciQxLCB1IGFzIHV0aWxzLCBsIGFzIGxvZywgaSBhcyBjb25maWd1cmVTdmdTaXplLCBlIGFzIGNvbW1vbiB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbmltcG9ydCB7IHNlbGVjdCwgc2NhbGVUaW1lLCBtaW4sIG1heCwgc2NhbGVMaW5lYXIsIGludGVycG9sYXRlSGNsLCBheGlzQm90dG9tLCB0aW1lRm9ybWF0LCB0aW1lTW9udGgsIHRpbWVXZWVrLCB0aW1lRGF5LCB0aW1lSG91ciwgdGltZU1pbnV0ZSwgYXhpc1RvcCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IFwidHMtZGVkZW50XCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCAzXSwgJFYxID0gWzEsIDVdLCAkVjIgPSBbNywgOSwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMywgMjUsIDI2LCAyOCwgMzUsIDQwXSwgJFYzID0gWzEsIDE1XSwgJFY0ID0gWzEsIDE2XSwgJFY1ID0gWzEsIDE3XSwgJFY2ID0gWzEsIDE4XSwgJFY3ID0gWzEsIDE5XSwgJFY4ID0gWzEsIDIwXSwgJFY5ID0gWzEsIDIxXSwgJFZhID0gWzEsIDIyXSwgJFZiID0gWzEsIDIzXSwgJFZjID0gWzEsIDI0XSwgJFZkID0gWzEsIDI1XSwgJFZlID0gWzEsIDI2XSwgJFZmID0gWzEsIDI3XSwgJFZnID0gWzEsIDI5XSwgJFZoID0gWzEsIDMxXSwgJFZpID0gWzEsIDM0XSwgJFZqID0gWzUsIDcsIDksIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjMsIDI1LCAyNiwgMjgsIDM1LCA0MF07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJkaXJlY3RpdmVcIjogNCwgXCJnYW50dFwiOiA1LCBcImRvY3VtZW50XCI6IDYsIFwiRU9GXCI6IDcsIFwibGluZVwiOiA4LCBcIlNQQUNFXCI6IDksIFwic3RhdGVtZW50XCI6IDEwLCBcIk5MXCI6IDExLCBcImRhdGVGb3JtYXRcIjogMTIsIFwiaW5jbHVzaXZlRW5kRGF0ZXNcIjogMTMsIFwidG9wQXhpc1wiOiAxNCwgXCJheGlzRm9ybWF0XCI6IDE1LCBcInRpY2tJbnRlcnZhbFwiOiAxNiwgXCJleGNsdWRlc1wiOiAxNywgXCJpbmNsdWRlc1wiOiAxOCwgXCJ0b2RheU1hcmtlclwiOiAxOSwgXCJ0aXRsZVwiOiAyMCwgXCJhY2NfdGl0bGVcIjogMjEsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDIyLCBcImFjY19kZXNjclwiOiAyMywgXCJhY2NfZGVzY3JfdmFsdWVcIjogMjQsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAyNSwgXCJzZWN0aW9uXCI6IDI2LCBcImNsaWNrU3RhdGVtZW50XCI6IDI3LCBcInRhc2tUeHRcIjogMjgsIFwidGFza0RhdGFcIjogMjksIFwib3BlbkRpcmVjdGl2ZVwiOiAzMCwgXCJ0eXBlRGlyZWN0aXZlXCI6IDMxLCBcImNsb3NlRGlyZWN0aXZlXCI6IDMyLCBcIjpcIjogMzMsIFwiYXJnRGlyZWN0aXZlXCI6IDM0LCBcImNsaWNrXCI6IDM1LCBcImNhbGxiYWNrbmFtZVwiOiAzNiwgXCJjYWxsYmFja2FyZ3NcIjogMzcsIFwiaHJlZlwiOiAzOCwgXCJjbGlja1N0YXRlbWVudERlYnVnXCI6IDM5LCBcIm9wZW5fZGlyZWN0aXZlXCI6IDQwLCBcInR5cGVfZGlyZWN0aXZlXCI6IDQxLCBcImFyZ19kaXJlY3RpdmVcIjogNDIsIFwiY2xvc2VfZGlyZWN0aXZlXCI6IDQzLCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICB0ZXJtaW5hbHNfOiB7IDI6IFwiZXJyb3JcIiwgNTogXCJnYW50dFwiLCA3OiBcIkVPRlwiLCA5OiBcIlNQQUNFXCIsIDExOiBcIk5MXCIsIDEyOiBcImRhdGVGb3JtYXRcIiwgMTM6IFwiaW5jbHVzaXZlRW5kRGF0ZXNcIiwgMTQ6IFwidG9wQXhpc1wiLCAxNTogXCJheGlzRm9ybWF0XCIsIDE2OiBcInRpY2tJbnRlcnZhbFwiLCAxNzogXCJleGNsdWRlc1wiLCAxODogXCJpbmNsdWRlc1wiLCAxOTogXCJ0b2RheU1hcmtlclwiLCAyMDogXCJ0aXRsZVwiLCAyMTogXCJhY2NfdGl0bGVcIiwgMjI6IFwiYWNjX3RpdGxlX3ZhbHVlXCIsIDIzOiBcImFjY19kZXNjclwiLCAyNDogXCJhY2NfZGVzY3JfdmFsdWVcIiwgMjU6IFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiLCAyNjogXCJzZWN0aW9uXCIsIDI4OiBcInRhc2tUeHRcIiwgMjk6IFwidGFza0RhdGFcIiwgMzM6IFwiOlwiLCAzNTogXCJjbGlja1wiLCAzNjogXCJjYWxsYmFja25hbWVcIiwgMzc6IFwiY2FsbGJhY2thcmdzXCIsIDM4OiBcImhyZWZcIiwgNDA6IFwib3Blbl9kaXJlY3RpdmVcIiwgNDE6IFwidHlwZV9kaXJlY3RpdmVcIiwgNDI6IFwiYXJnX2RpcmVjdGl2ZVwiLCA0MzogXCJjbG9zZV9kaXJlY3RpdmVcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzMsIDNdLCBbNiwgMF0sIFs2LCAyXSwgWzgsIDJdLCBbOCwgMV0sIFs4LCAxXSwgWzgsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDFdLCBbNCwgNF0sIFs0LCA2XSwgWzI3LCAyXSwgWzI3LCAzXSwgWzI3LCAzXSwgWzI3LCA0XSwgWzI3LCAzXSwgWzI3LCA0XSwgWzI3LCAyXSwgWzM5LCAyXSwgWzM5LCAzXSwgWzM5LCAzXSwgWzM5LCA0XSwgWzM5LCAzXSwgWzM5LCA0XSwgWzM5LCAyXSwgWzMwLCAxXSwgWzMxLCAxXSwgWzM0LCAxXSwgWzMyLCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmV0dXJuICQkWyQwIC0gMV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICB5eS5zZXREYXRlRm9ybWF0KCQkWyQwXS5zdWJzdHIoMTEpKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0uc3Vic3RyKDExKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICB5eS5lbmFibGVJbmNsdXNpdmVFbmREYXRlcygpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoMTgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHl5LlRvcEF4aXMoKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0uc3Vic3RyKDgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIHl5LnNldEF4aXNGb3JtYXQoJCRbJDBdLnN1YnN0cigxMSkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoMTEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIHl5LnNldFRpY2tJbnRlcnZhbCgkJFskMF0uc3Vic3RyKDEzKSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cigxMyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgeXkuc2V0RXhjbHVkZXMoJCRbJDBdLnN1YnN0cig5KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cig5KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICB5eS5zZXRJbmNsdWRlcygkJFskMF0uc3Vic3RyKDkpKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0uc3Vic3RyKDkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgIHl5LnNldFRvZGF5TWFya2VyKCQkWyQwXS5zdWJzdHIoMTIpKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0uc3Vic3RyKDEyKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICB5eS5zZXREaWFncmFtVGl0bGUoJCRbJDBdLnN1YnN0cig2KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cig2KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY1RpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgIHl5LmFkZFNlY3Rpb24oJCRbJDBdLnN1YnN0cig4KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cig4KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICB5eS5hZGRUYXNrKCQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gXCJ0YXNrXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICB5eS5zZXRDbGlja0V2ZW50KCQkWyQwIC0gMV0sICQkWyQwXSwgbnVsbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjg6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICB5eS5zZXRDbGlja0V2ZW50KCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICB5eS5zZXRDbGlja0V2ZW50KCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sIG51bGwpO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIHl5LnNldENsaWNrRXZlbnQoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSk7XG4gICAgICAgICAgeXkuc2V0TGluaygkJFskMCAtIDNdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMl07XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDJdLCAkJFskMF0sIG51bGwpO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5zZXRDbGlja0V2ZW50KCQkWyQwIC0gM10sICQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgeXkuc2V0TGluaygkJFskMCAtIDNdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSAxXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdICsgXCIgXCIgKyAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzU6XG4gICAgICAgIGNhc2UgMzY6XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAyXSArIFwiIFwiICsgJCRbJDAgLSAxXSArIFwiIFwiICsgJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM3OlxuICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM10gKyBcIiBcIiArICQkWyQwIC0gMl0gKyBcIiBcIiArICQkWyQwIC0gMV0gKyBcIiBcIiArICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIiUle1wiLCBcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJ0eXBlX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICAkJFskMF0gPSAkJFskMF0udHJpbSgpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCJ9JSVcIiwgXCJjbG9zZV9kaXJlY3RpdmVcIiwgXCJnYW50dFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiAkVjAsIDMwOiA0LCA0MDogJFYxIH0sIHsgMTogWzNdIH0sIHsgMzogNiwgNDogMiwgNTogJFYwLCAzMDogNCwgNDA6ICRWMSB9LCBvKCRWMiwgWzIsIDNdLCB7IDY6IDcgfSksIHsgMzE6IDgsIDQxOiBbMSwgOV0gfSwgeyA0MTogWzIsIDQxXSB9LCB7IDE6IFsyLCAxXSB9LCB7IDQ6IDMwLCA3OiBbMSwgMTBdLCA4OiAxMSwgOTogWzEsIDEyXSwgMTA6IDEzLCAxMTogWzEsIDE0XSwgMTI6ICRWMywgMTM6ICRWNCwgMTQ6ICRWNSwgMTU6ICRWNiwgMTY6ICRWNywgMTc6ICRWOCwgMTg6ICRWOSwgMTk6ICRWYSwgMjA6ICRWYiwgMjE6ICRWYywgMjM6ICRWZCwgMjU6ICRWZSwgMjY6ICRWZiwgMjc6IDI4LCAyODogJFZnLCAzMDogNCwgMzU6ICRWaCwgNDA6ICRWMSB9LCB7IDMyOiAzMiwgMzM6IFsxLCAzM10sIDQzOiAkVmkgfSwgbyhbMzMsIDQzXSwgWzIsIDQyXSksIG8oJFYyLCBbMiwgOF0sIHsgMTogWzIsIDJdIH0pLCBvKCRWMiwgWzIsIDRdKSwgeyA0OiAzMCwgMTA6IDM1LCAxMjogJFYzLCAxMzogJFY0LCAxNDogJFY1LCAxNTogJFY2LCAxNjogJFY3LCAxNzogJFY4LCAxODogJFY5LCAxOTogJFZhLCAyMDogJFZiLCAyMTogJFZjLCAyMzogJFZkLCAyNTogJFZlLCAyNjogJFZmLCAyNzogMjgsIDI4OiAkVmcsIDMwOiA0LCAzNTogJFZoLCA0MDogJFYxIH0sIG8oJFYyLCBbMiwgNl0pLCBvKCRWMiwgWzIsIDddKSwgbygkVjIsIFsyLCA5XSksIG8oJFYyLCBbMiwgMTBdKSwgbygkVjIsIFsyLCAxMV0pLCBvKCRWMiwgWzIsIDEyXSksIG8oJFYyLCBbMiwgMTNdKSwgbygkVjIsIFsyLCAxNF0pLCBvKCRWMiwgWzIsIDE1XSksIG8oJFYyLCBbMiwgMTZdKSwgbygkVjIsIFsyLCAxN10pLCB7IDIyOiBbMSwgMzZdIH0sIHsgMjQ6IFsxLCAzN10gfSwgbygkVjIsIFsyLCAyMF0pLCBvKCRWMiwgWzIsIDIxXSksIG8oJFYyLCBbMiwgMjJdKSwgeyAyOTogWzEsIDM4XSB9LCBvKCRWMiwgWzIsIDI0XSksIHsgMzY6IFsxLCAzOV0sIDM4OiBbMSwgNDBdIH0sIHsgMTE6IFsxLCA0MV0gfSwgeyAzNDogNDIsIDQyOiBbMSwgNDNdIH0sIHsgMTE6IFsyLCA0NF0gfSwgbygkVjIsIFsyLCA1XSksIG8oJFYyLCBbMiwgMThdKSwgbygkVjIsIFsyLCAxOV0pLCBvKCRWMiwgWzIsIDIzXSksIG8oJFYyLCBbMiwgMjddLCB7IDM3OiBbMSwgNDRdLCAzODogWzEsIDQ1XSB9KSwgbygkVjIsIFsyLCAzM10sIHsgMzY6IFsxLCA0Nl0gfSksIG8oJFZqLCBbMiwgMjVdKSwgeyAzMjogNDcsIDQzOiAkVmkgfSwgeyA0MzogWzIsIDQzXSB9LCBvKCRWMiwgWzIsIDI4XSwgeyAzODogWzEsIDQ4XSB9KSwgbygkVjIsIFsyLCAyOV0pLCBvKCRWMiwgWzIsIDMxXSwgeyAzNzogWzEsIDQ5XSB9KSwgeyAxMTogWzEsIDUwXSB9LCBvKCRWMiwgWzIsIDMwXSksIG8oJFYyLCBbMiwgMzJdKSwgbygkVmosIFsyLCAyNl0pXSxcbiAgICBkZWZhdWx0QWN0aW9uczogeyA1OiBbMiwgNDFdLCA2OiBbMiwgMV0sIDM0OiBbMiwgNDRdLCA0MzogWzIsIDQzXSB9LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKSB8fCBsZXhlcjIubGV4KCkgfHwgRU9GO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHRzdGFjayA9IHRva2VuO1xuICAgICAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgfVxuICAgICAgdmFyIHN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgdmFyIGVyclN0ciA9IFwiXCI7XG4gICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxleGVyMi5zaG93UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyBsZXhlcjIuc2hvd1Bvc2l0aW9uKCkgKyBcIlxcbkV4cGVjdGluZyBcIiArIGV4cGVjdGVkLmpvaW4oXCIsIFwiKSArIFwiLCBnb3QgJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gRU9GID8gXCJlbmQgb2YgaW5wdXRcIiA6IFwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxleGVyMi5tYXRjaCxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICBsaW5lOiBsZXhlcjIueXlsaW5lbm8sXG4gICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2gobGV4ZXIyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaChsZXhlcjIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHl5bGVuZyA9IGxleGVyMi55eWxlbmc7XG4gICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyMi55eXRleHQ7XG4gICAgICAgICAgICAgIHl5bGluZW5vID0gbGV4ZXIyLnl5bGluZW5vO1xuICAgICAgICAgICAgICB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICB5eWxlbmcsXG4gICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICBzaGFyZWRTdGF0ZS55eSxcbiAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgIGxzdGFja1xuICAgICAgICAgICAgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBsZXhlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZXhlcjIgPSB7XG4gICAgICBFT0Y6IDEsXG4gICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHtcbiAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0LCB5eSkge1xuICAgICAgICB0aGlzLnl5ID0geXkgfHwgdGhpcy55eSB8fCB7fTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrID0gW1wiSU5JVElBTFwiXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiAwXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgICAgfSxcbiAgICAgIC8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbiAgICAgIHVucHV0OiBmdW5jdGlvbihjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbik7XG4gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbiAgICAgIG1vcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgIHJlamVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gcmV0YWluIGZpcnN0IG4gY2hhcmFjdGVycyBvZiB0aGUgbWF0Y2hcbiAgICAgIGxlc3M6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyBhbHJlYWR5IG1hdGNoZWQgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdXBjb21pbmcgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgICAgfSxcbiAgICAgIC8vIHRlc3QgdGhlIGxleGVkIHRva2VuOiByZXR1cm4gRkFMU0Ugd2hlbiBub3QgYSBtYXRjaCwgb3RoZXJ3aXNlIHJldHVybiB0b2tlblxuICAgICAgdGVzdF9tYXRjaDogZnVuY3Rpb24obWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sIGxpbmVzLCBiYWNrdXA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgYmFja3VwID0ge1xuICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICB5eWxsb2M6IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICBtYXRjaDogdGhpcy5tYXRjaCxcbiAgICAgICAgICAgIG1hdGNoZXM6IHRoaXMubWF0Y2hlcyxcbiAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgIHl5bGVuZzogdGhpcy55eWxlbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICBfaW5wdXQ6IHRoaXMuX2lucHV0LFxuICAgICAgICAgICAgeXk6IHRoaXMueXksXG4gICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmddO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIGluZGV4ZWRfcnVsZSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICBmb3IgKHZhciBrIGluIGJhY2t1cCkge1xuICAgICAgICAgICAgdGhpc1trXSA9IGJhY2t1cFtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCBpbiBpbnB1dFxuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBpbmRleDtcbiAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7XG4gICAgICAgICAgdGhpcy55eXRleHQgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKG1hdGNoLCBydWxlc1tpbmRleF0pO1xuICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBVbnJlY29nbml6ZWQgdGV4dC5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIHRoYXQgaGFzIGEgdG9rZW5cbiAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWN0aXZhdGVzIGEgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSAocHVzaGVzIHRoZSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9udG8gdGhlIGNvbmRpdGlvbiBzdGFjaylcbiAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbiAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbiAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG4gICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG4gICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG4gICAgICBzdGF0ZVN0YWNrU2l6ZTogZnVuY3Rpb24gc3RhdGVTdGFja1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7IFwiY2FzZS1pbnNlbnNpdGl2ZVwiOiB0cnVlIH0sXG4gICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXksIHl5XywgJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucywgWVlfU1RBUlQpIHtcbiAgICAgICAgc3dpdGNoICgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQwO1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJ0eXBlX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0MTtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAzMztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNDM7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIDQyO1xuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjE7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjclwiKTtcbiAgICAgICAgICAgIHJldHVybiAyMztcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyX211bHRpbGluZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICByZXR1cm4gMTE7XG4gICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJocmVmXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICByZXR1cm4gMzg7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjYWxsYmFja25hbWVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjYWxsYmFja2FyZ3NcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgcmV0dXJuIDM2O1xuICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgcmV0dXJuIDM3O1xuICAgICAgICAgIGNhc2UgMjg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY2xpY2tcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICAgIHJldHVybiAzNTtcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgcmV0dXJuIDU7XG4gICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgICBjYXNlIDMzOlxuICAgICAgICAgICAgcmV0dXJuIDEzO1xuICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICByZXR1cm4gMTQ7XG4gICAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICAgIHJldHVybiAxNTtcbiAgICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgIHJldHVybiAxNztcbiAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICByZXR1cm4gXCJkYXRlXCI7XG4gICAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICAgIHJldHVybiAyMDtcbiAgICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjRGVzY3JpcHRpb25cIjtcbiAgICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgICAgcmV0dXJuIDI2O1xuICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICByZXR1cm4gMjg7XG4gICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgIHJldHVybiAyOTtcbiAgICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgICAgcmV0dXJuIDMzO1xuICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgICAgcmV0dXJuIFwiSU5WQUxJRFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzphY2NUaXRsZVxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS9pLCAvXig/OltcXH1dKS9pLCAvXig/OlteXFx9XSopL2ksIC9eKD86JSUoPyFcXHspKlteXFxuXSopL2ksIC9eKD86W15cXH1dJSUqW15cXG5dKikvaSwgL14oPzolJSpbXlxcbl0qW1xcbl0qKS9pLCAvXig/OltcXG5dKykvaSwgL14oPzpcXHMrKS9pLCAvXig/OiNbXlxcbl0qKS9pLCAvXig/OiVbXlxcbl0qKS9pLCAvXig/OmhyZWZbXFxzXStbXCJdKS9pLCAvXig/OltcIl0pL2ksIC9eKD86W15cIl0qKS9pLCAvXig/OmNhbGxbXFxzXSspL2ksIC9eKD86XFwoW1xcc10qXFwpKS9pLCAvXig/OlxcKCkvaSwgL14oPzpbXihdKikvaSwgL14oPzpcXCkpL2ksIC9eKD86W14pXSopL2ksIC9eKD86Y2xpY2tbXFxzXSspL2ksIC9eKD86W1xcc1xcbl0pL2ksIC9eKD86W15cXHNcXG5dKikvaSwgL14oPzpnYW50dFxcYikvaSwgL14oPzpkYXRlRm9ybWF0XFxzW14jXFxuO10rKS9pLCAvXig/OmluY2x1c2l2ZUVuZERhdGVzXFxiKS9pLCAvXig/OnRvcEF4aXNcXGIpL2ksIC9eKD86YXhpc0Zvcm1hdFxcc1teI1xcbjtdKykvaSwgL14oPzp0aWNrSW50ZXJ2YWxcXHNbXiNcXG47XSspL2ksIC9eKD86aW5jbHVkZXNcXHNbXiNcXG47XSspL2ksIC9eKD86ZXhjbHVkZXNcXHNbXiNcXG47XSspL2ksIC9eKD86dG9kYXlNYXJrZXJcXHNbXlxcbjtdKykvaSwgL14oPzpcXGRcXGRcXGRcXGQtXFxkXFxkLVxcZFxcZFxcYikvaSwgL14oPzp0aXRsZVxcc1teI1xcbjtdKykvaSwgL14oPzphY2NEZXNjcmlwdGlvblxcc1teI1xcbjtdKykvaSwgL14oPzpzZWN0aW9uXFxzW14jOlxcbjtdKykvaSwgL14oPzpbXiM6XFxuO10rKS9pLCAvXig/OjpbXiNcXG47XSspL2ksIC9eKD86OikvaSwgL14oPzokKS9pLCAvXig/Oi4pL2ldLFxuICAgICAgY29uZGl0aW9uczogeyBcImFjY19kZXNjcl9tdWx0aWxpbmVcIjogeyBcInJ1bGVzXCI6IFsxMCwgMTFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzhdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY190aXRsZVwiOiB7IFwicnVsZXNcIjogWzZdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYXJnX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzMsIDRdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInR5cGVfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMiwgM10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwib3Blbl9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsxXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjYWxsYmFja2FyZ3NcIjogeyBcInJ1bGVzXCI6IFsyNiwgMjddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNhbGxiYWNrbmFtZVwiOiB7IFwicnVsZXNcIjogWzIzLCAyNCwgMjVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImhyZWZcIjogeyBcInJ1bGVzXCI6IFsyMCwgMjFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNsaWNrXCI6IHsgXCJydWxlc1wiOiBbMjksIDMwXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgNSwgNywgOSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMiwgMjgsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDhdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IGdhbnR0UGFyc2VyID0gcGFyc2VyO1xuZGF5anMuZXh0ZW5kKGRheWpzSXNvV2Vlayk7XG5kYXlqcy5leHRlbmQoZGF5anNDdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoZGF5anNBZHZhbmNlZEZvcm1hdCk7XG5sZXQgZGF0ZUZvcm1hdCA9IFwiXCI7XG5sZXQgYXhpc0Zvcm1hdCA9IFwiXCI7XG5sZXQgdGlja0ludGVydmFsID0gdm9pZCAwO1xubGV0IHRvZGF5TWFya2VyID0gXCJcIjtcbmxldCBpbmNsdWRlcyA9IFtdO1xubGV0IGV4Y2x1ZGVzID0gW107XG5sZXQgbGlua3MgPSB7fTtcbmxldCBzZWN0aW9ucyA9IFtdO1xubGV0IHRhc2tzID0gW107XG5sZXQgY3VycmVudFNlY3Rpb24gPSBcIlwiO1xubGV0IGRpc3BsYXlNb2RlID0gXCJcIjtcbmNvbnN0IHRhZ3MgPSBbXCJhY3RpdmVcIiwgXCJkb25lXCIsIFwiY3JpdFwiLCBcIm1pbGVzdG9uZVwiXTtcbmxldCBmdW5zID0gW107XG5sZXQgaW5jbHVzaXZlRW5kRGF0ZXMgPSBmYWxzZTtcbmxldCB0b3BBeGlzID0gZmFsc2U7XG5sZXQgbGFzdE9yZGVyID0gMDtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBjbGVhciA9IGZ1bmN0aW9uKCkge1xuICBzZWN0aW9ucyA9IFtdO1xuICB0YXNrcyA9IFtdO1xuICBjdXJyZW50U2VjdGlvbiA9IFwiXCI7XG4gIGZ1bnMgPSBbXTtcbiAgdGFza0NudCA9IDA7XG4gIGxhc3RUYXNrID0gdm9pZCAwO1xuICBsYXN0VGFza0lEID0gdm9pZCAwO1xuICByYXdUYXNrcyA9IFtdO1xuICBkYXRlRm9ybWF0ID0gXCJcIjtcbiAgYXhpc0Zvcm1hdCA9IFwiXCI7XG4gIGRpc3BsYXlNb2RlID0gXCJcIjtcbiAgdGlja0ludGVydmFsID0gdm9pZCAwO1xuICB0b2RheU1hcmtlciA9IFwiXCI7XG4gIGluY2x1ZGVzID0gW107XG4gIGV4Y2x1ZGVzID0gW107XG4gIGluY2x1c2l2ZUVuZERhdGVzID0gZmFsc2U7XG4gIHRvcEF4aXMgPSBmYWxzZTtcbiAgbGFzdE9yZGVyID0gMDtcbiAgbGlua3MgPSB7fTtcbiAgY2xlYXIkMSgpO1xufTtcbmNvbnN0IHNldEF4aXNGb3JtYXQgPSBmdW5jdGlvbih0eHQpIHtcbiAgYXhpc0Zvcm1hdCA9IHR4dDtcbn07XG5jb25zdCBnZXRBeGlzRm9ybWF0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBheGlzRm9ybWF0O1xufTtcbmNvbnN0IHNldFRpY2tJbnRlcnZhbCA9IGZ1bmN0aW9uKHR4dCkge1xuICB0aWNrSW50ZXJ2YWwgPSB0eHQ7XG59O1xuY29uc3QgZ2V0VGlja0ludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aWNrSW50ZXJ2YWw7XG59O1xuY29uc3Qgc2V0VG9kYXlNYXJrZXIgPSBmdW5jdGlvbih0eHQpIHtcbiAgdG9kYXlNYXJrZXIgPSB0eHQ7XG59O1xuY29uc3QgZ2V0VG9kYXlNYXJrZXIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRvZGF5TWFya2VyO1xufTtcbmNvbnN0IHNldERhdGVGb3JtYXQgPSBmdW5jdGlvbih0eHQpIHtcbiAgZGF0ZUZvcm1hdCA9IHR4dDtcbn07XG5jb25zdCBlbmFibGVJbmNsdXNpdmVFbmREYXRlcyA9IGZ1bmN0aW9uKCkge1xuICBpbmNsdXNpdmVFbmREYXRlcyA9IHRydWU7XG59O1xuY29uc3QgZW5kRGF0ZXNBcmVJbmNsdXNpdmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGluY2x1c2l2ZUVuZERhdGVzO1xufTtcbmNvbnN0IGVuYWJsZVRvcEF4aXMgPSBmdW5jdGlvbigpIHtcbiAgdG9wQXhpcyA9IHRydWU7XG59O1xuY29uc3QgdG9wQXhpc0VuYWJsZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRvcEF4aXM7XG59O1xuY29uc3Qgc2V0RGlzcGxheU1vZGUgPSBmdW5jdGlvbih0eHQpIHtcbiAgZGlzcGxheU1vZGUgPSB0eHQ7XG59O1xuY29uc3QgZ2V0RGlzcGxheU1vZGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGRpc3BsYXlNb2RlO1xufTtcbmNvbnN0IGdldERhdGVGb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGRhdGVGb3JtYXQ7XG59O1xuY29uc3Qgc2V0SW5jbHVkZXMgPSBmdW5jdGlvbih0eHQpIHtcbiAgaW5jbHVkZXMgPSB0eHQudG9Mb3dlckNhc2UoKS5zcGxpdCgvW1xccyxdKy8pO1xufTtcbmNvbnN0IGdldEluY2x1ZGVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBpbmNsdWRlcztcbn07XG5jb25zdCBzZXRFeGNsdWRlcyA9IGZ1bmN0aW9uKHR4dCkge1xuICBleGNsdWRlcyA9IHR4dC50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bXFxzLF0rLyk7XG59O1xuY29uc3QgZ2V0RXhjbHVkZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGV4Y2x1ZGVzO1xufTtcbmNvbnN0IGdldExpbmtzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBsaW5rcztcbn07XG5jb25zdCBhZGRTZWN0aW9uID0gZnVuY3Rpb24odHh0KSB7XG4gIGN1cnJlbnRTZWN0aW9uID0gdHh0O1xuICBzZWN0aW9ucy5wdXNoKHR4dCk7XG59O1xuY29uc3QgZ2V0U2VjdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHNlY3Rpb25zO1xufTtcbmNvbnN0IGdldFRhc2tzID0gZnVuY3Rpb24oKSB7XG4gIGxldCBhbGxJdGVtc1Byb2Nlc3NlZCA9IGNvbXBpbGVUYXNrcygpO1xuICBjb25zdCBtYXhEZXB0aCA9IDEwO1xuICBsZXQgaXRlcmF0aW9uQ291bnQgPSAwO1xuICB3aGlsZSAoIWFsbEl0ZW1zUHJvY2Vzc2VkICYmIGl0ZXJhdGlvbkNvdW50IDwgbWF4RGVwdGgpIHtcbiAgICBhbGxJdGVtc1Byb2Nlc3NlZCA9IGNvbXBpbGVUYXNrcygpO1xuICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gIH1cbiAgdGFza3MgPSByYXdUYXNrcztcbiAgcmV0dXJuIHRhc2tzO1xufTtcbmNvbnN0IGlzSW52YWxpZERhdGUgPSBmdW5jdGlvbihkYXRlLCBkYXRlRm9ybWF0MiwgZXhjbHVkZXMyLCBpbmNsdWRlczIpIHtcbiAgaWYgKGluY2x1ZGVzMi5pbmNsdWRlcyhkYXRlLmZvcm1hdChkYXRlRm9ybWF0Mi50cmltKCkpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0ZS5pc29XZWVrZGF5KCkgPj0gNiAmJiBleGNsdWRlczIuaW5jbHVkZXMoXCJ3ZWVrZW5kc1wiKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChleGNsdWRlczIuaW5jbHVkZXMoZGF0ZS5mb3JtYXQoXCJkZGRkXCIpLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4Y2x1ZGVzMi5pbmNsdWRlcyhkYXRlLmZvcm1hdChkYXRlRm9ybWF0Mi50cmltKCkpKTtcbn07XG5jb25zdCBjaGVja1Rhc2tEYXRlcyA9IGZ1bmN0aW9uKHRhc2ssIGRhdGVGb3JtYXQyLCBleGNsdWRlczIsIGluY2x1ZGVzMikge1xuICBpZiAoIWV4Y2x1ZGVzMi5sZW5ndGggfHwgdGFzay5tYW51YWxFbmRUaW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBzdGFydFRpbWU7XG4gIGlmICh0YXNrLnN0YXJ0VGltZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBzdGFydFRpbWUgPSBkYXlqcyh0YXNrLnN0YXJ0VGltZSk7XG4gIH0gZWxzZSB7XG4gICAgc3RhcnRUaW1lID0gZGF5anModGFzay5zdGFydFRpbWUsIGRhdGVGb3JtYXQyLCB0cnVlKTtcbiAgfVxuICBzdGFydFRpbWUgPSBzdGFydFRpbWUuYWRkKDEsIFwiZFwiKTtcbiAgbGV0IG9yaWdpbmFsRW5kVGltZTtcbiAgaWYgKHRhc2suZW5kVGltZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBvcmlnaW5hbEVuZFRpbWUgPSBkYXlqcyh0YXNrLmVuZFRpbWUpO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsRW5kVGltZSA9IGRheWpzKHRhc2suZW5kVGltZSwgZGF0ZUZvcm1hdDIsIHRydWUpO1xuICB9XG4gIGNvbnN0IFtmaXhlZEVuZFRpbWUsIHJlbmRlckVuZFRpbWVdID0gZml4VGFza0RhdGVzKFxuICAgIHN0YXJ0VGltZSxcbiAgICBvcmlnaW5hbEVuZFRpbWUsXG4gICAgZGF0ZUZvcm1hdDIsXG4gICAgZXhjbHVkZXMyLFxuICAgIGluY2x1ZGVzMlxuICApO1xuICB0YXNrLmVuZFRpbWUgPSBmaXhlZEVuZFRpbWUudG9EYXRlKCk7XG4gIHRhc2sucmVuZGVyRW5kVGltZSA9IHJlbmRlckVuZFRpbWU7XG59O1xuY29uc3QgZml4VGFza0RhdGVzID0gZnVuY3Rpb24oc3RhcnRUaW1lLCBlbmRUaW1lLCBkYXRlRm9ybWF0MiwgZXhjbHVkZXMyLCBpbmNsdWRlczIpIHtcbiAgbGV0IGludmFsaWQgPSBmYWxzZTtcbiAgbGV0IHJlbmRlckVuZFRpbWUgPSBudWxsO1xuICB3aGlsZSAoc3RhcnRUaW1lIDw9IGVuZFRpbWUpIHtcbiAgICBpZiAoIWludmFsaWQpIHtcbiAgICAgIHJlbmRlckVuZFRpbWUgPSBlbmRUaW1lLnRvRGF0ZSgpO1xuICAgIH1cbiAgICBpbnZhbGlkID0gaXNJbnZhbGlkRGF0ZShzdGFydFRpbWUsIGRhdGVGb3JtYXQyLCBleGNsdWRlczIsIGluY2x1ZGVzMik7XG4gICAgaWYgKGludmFsaWQpIHtcbiAgICAgIGVuZFRpbWUgPSBlbmRUaW1lLmFkZCgxLCBcImRcIik7XG4gICAgfVxuICAgIHN0YXJ0VGltZSA9IHN0YXJ0VGltZS5hZGQoMSwgXCJkXCIpO1xuICB9XG4gIHJldHVybiBbZW5kVGltZSwgcmVuZGVyRW5kVGltZV07XG59O1xuY29uc3QgZ2V0U3RhcnREYXRlID0gZnVuY3Rpb24ocHJldlRpbWUsIGRhdGVGb3JtYXQyLCBzdHIpIHtcbiAgc3RyID0gc3RyLnRyaW0oKTtcbiAgY29uc3QgcmUgPSAvXmFmdGVyXFxzKyhbXFxkXFx3LSBdKykvO1xuICBjb25zdCBhZnRlclN0YXRlbWVudCA9IHJlLmV4ZWMoc3RyLnRyaW0oKSk7XG4gIGlmIChhZnRlclN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGxldCBsYXRlc3RFbmRpbmdUYXNrID0gbnVsbDtcbiAgICBhZnRlclN0YXRlbWVudFsxXS5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihpZCkge1xuICAgICAgbGV0IHRhc2sgPSBmaW5kVGFza0J5SWQoaWQpO1xuICAgICAgaWYgKHRhc2sgIT09IHZvaWQgMCkge1xuICAgICAgICBpZiAoIWxhdGVzdEVuZGluZ1Rhc2spIHtcbiAgICAgICAgICBsYXRlc3RFbmRpbmdUYXNrID0gdGFzaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGFzay5lbmRUaW1lID4gbGF0ZXN0RW5kaW5nVGFzay5lbmRUaW1lKSB7XG4gICAgICAgICAgICBsYXRlc3RFbmRpbmdUYXNrID0gdGFzaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWxhdGVzdEVuZGluZ1Rhc2spIHtcbiAgICAgIGNvbnN0IGR0ID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG4gICAgICBkdC5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxhdGVzdEVuZGluZ1Rhc2suZW5kVGltZTtcbiAgICB9XG4gIH1cbiAgbGV0IG1EYXRlID0gZGF5anMoc3RyLCBkYXRlRm9ybWF0Mi50cmltKCksIHRydWUpO1xuICBpZiAobURhdGUuaXNWYWxpZCgpKSB7XG4gICAgcmV0dXJuIG1EYXRlLnRvRGF0ZSgpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5kZWJ1ZyhcIkludmFsaWQgZGF0ZTpcIiArIHN0cik7XG4gICAgbG9nLmRlYnVnKFwiV2l0aCBkYXRlIGZvcm1hdDpcIiArIGRhdGVGb3JtYXQyLnRyaW0oKSk7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHN0cik7XG4gICAgaWYgKGQgPT09IHZvaWQgMCB8fCBpc05hTihkLmdldFRpbWUoKSkgfHwgLy8gV2ViS2l0IGJyb3dzZXJzIGNhbiBtaXMtcGFyc2UgaW52YWxpZCBkYXRlcyB0byBiZSByaWRpY3Vsb3VzbHlcbiAgICAvLyBodWdlIG51bWJlcnMsIGUuZy4gbmV3IERhdGUoJzIwMjMwNCcpIGdldHMgcGFyc2VkIGFzIEphbnVhcnkgMSwgMjAyMzA0LlxuICAgIC8vIFRoaXMgY2FuIGNhdXNlIHZpcnR1YWxseSBpbmZpbml0ZSBsb29wcyB3aGlsZSByZW5kZXJpbmcsIHNvIGZvciB0aGVcbiAgICAvLyBwdXJwb3NlcyBvZiBHYW50dCBjaGFydHMgd2UnbGwganVzdCB0cmVhdCBhbnkgZGF0ZSBiZXlvbmQgMTAsMDAwIEFEL0JDIGFzXG4gICAgLy8gaW52YWxpZC5cbiAgICBkLmdldEZ1bGxZZWFyKCkgPCAtMWU0IHx8IGQuZ2V0RnVsbFllYXIoKSA+IDFlNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkYXRlOlwiICsgc3RyKTtcbiAgICB9XG4gICAgcmV0dXJuIGQ7XG4gIH1cbn07XG5jb25zdCBwYXJzZUR1cmF0aW9uID0gZnVuY3Rpb24oc3RyKSB7XG4gIGNvbnN0IHN0YXRlbWVudCA9IC9eKFxcZCsoPzpcXC5cXGQrKT8pKFtNZGhtc3d5XXxtcykkLy5leGVjKHN0ci50cmltKCkpO1xuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtOdW1iZXIucGFyc2VGbG9hdChzdGF0ZW1lbnRbMV0pLCBzdGF0ZW1lbnRbMl1dO1xuICB9XG4gIHJldHVybiBbTmFOLCBcIm1zXCJdO1xufTtcbmNvbnN0IGdldEVuZERhdGUgPSBmdW5jdGlvbihwcmV2VGltZSwgZGF0ZUZvcm1hdDIsIHN0ciwgaW5jbHVzaXZlID0gZmFsc2UpIHtcbiAgc3RyID0gc3RyLnRyaW0oKTtcbiAgbGV0IG1EYXRlID0gZGF5anMoc3RyLCBkYXRlRm9ybWF0Mi50cmltKCksIHRydWUpO1xuICBpZiAobURhdGUuaXNWYWxpZCgpKSB7XG4gICAgaWYgKGluY2x1c2l2ZSkge1xuICAgICAgbURhdGUgPSBtRGF0ZS5hZGQoMSwgXCJkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbURhdGUudG9EYXRlKCk7XG4gIH1cbiAgbGV0IGVuZFRpbWUgPSBkYXlqcyhwcmV2VGltZSk7XG4gIGNvbnN0IFtkdXJhdGlvblZhbHVlLCBkdXJhdGlvblVuaXRdID0gcGFyc2VEdXJhdGlvbihzdHIpO1xuICBpZiAoIU51bWJlci5pc05hTihkdXJhdGlvblZhbHVlKSkge1xuICAgIGNvbnN0IG5ld0VuZFRpbWUgPSBlbmRUaW1lLmFkZChkdXJhdGlvblZhbHVlLCBkdXJhdGlvblVuaXQpO1xuICAgIGlmIChuZXdFbmRUaW1lLmlzVmFsaWQoKSkge1xuICAgICAgZW5kVGltZSA9IG5ld0VuZFRpbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbmRUaW1lLnRvRGF0ZSgpO1xufTtcbmxldCB0YXNrQ250ID0gMDtcbmNvbnN0IHBhcnNlSWQgPSBmdW5jdGlvbihpZFN0cikge1xuICBpZiAoaWRTdHIgPT09IHZvaWQgMCkge1xuICAgIHRhc2tDbnQgPSB0YXNrQ250ICsgMTtcbiAgICByZXR1cm4gXCJ0YXNrXCIgKyB0YXNrQ250O1xuICB9XG4gIHJldHVybiBpZFN0cjtcbn07XG5jb25zdCBjb21waWxlRGF0YSA9IGZ1bmN0aW9uKHByZXZUYXNrLCBkYXRhU3RyKSB7XG4gIGxldCBkcztcbiAgaWYgKGRhdGFTdHIuc3Vic3RyKDAsIDEpID09PSBcIjpcIikge1xuICAgIGRzID0gZGF0YVN0ci5zdWJzdHIoMSwgZGF0YVN0ci5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIGRzID0gZGF0YVN0cjtcbiAgfVxuICBjb25zdCBkYXRhID0gZHMuc3BsaXQoXCIsXCIpO1xuICBjb25zdCB0YXNrID0ge307XG4gIGdldFRhc2tUYWdzKGRhdGEsIHRhc2ssIHRhZ3MpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICBkYXRhW2ldID0gZGF0YVtpXS50cmltKCk7XG4gIH1cbiAgbGV0IGVuZFRpbWVEYXRhID0gXCJcIjtcbiAgc3dpdGNoIChkYXRhLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHRhc2suaWQgPSBwYXJzZUlkKCk7XG4gICAgICB0YXNrLnN0YXJ0VGltZSA9IHByZXZUYXNrLmVuZFRpbWU7XG4gICAgICBlbmRUaW1lRGF0YSA9IGRhdGFbMF07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB0YXNrLmlkID0gcGFyc2VJZCgpO1xuICAgICAgdGFzay5zdGFydFRpbWUgPSBnZXRTdGFydERhdGUodm9pZCAwLCBkYXRlRm9ybWF0LCBkYXRhWzBdKTtcbiAgICAgIGVuZFRpbWVEYXRhID0gZGF0YVsxXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHRhc2suaWQgPSBwYXJzZUlkKGRhdGFbMF0pO1xuICAgICAgdGFzay5zdGFydFRpbWUgPSBnZXRTdGFydERhdGUodm9pZCAwLCBkYXRlRm9ybWF0LCBkYXRhWzFdKTtcbiAgICAgIGVuZFRpbWVEYXRhID0gZGF0YVsyXTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmIChlbmRUaW1lRGF0YSkge1xuICAgIHRhc2suZW5kVGltZSA9IGdldEVuZERhdGUodGFzay5zdGFydFRpbWUsIGRhdGVGb3JtYXQsIGVuZFRpbWVEYXRhLCBpbmNsdXNpdmVFbmREYXRlcyk7XG4gICAgdGFzay5tYW51YWxFbmRUaW1lID0gZGF5anMoZW5kVGltZURhdGEsIFwiWVlZWS1NTS1ERFwiLCB0cnVlKS5pc1ZhbGlkKCk7XG4gICAgY2hlY2tUYXNrRGF0ZXModGFzaywgZGF0ZUZvcm1hdCwgZXhjbHVkZXMsIGluY2x1ZGVzKTtcbiAgfVxuICByZXR1cm4gdGFzaztcbn07XG5jb25zdCBwYXJzZURhdGEgPSBmdW5jdGlvbihwcmV2VGFza0lkLCBkYXRhU3RyKSB7XG4gIGxldCBkcztcbiAgaWYgKGRhdGFTdHIuc3Vic3RyKDAsIDEpID09PSBcIjpcIikge1xuICAgIGRzID0gZGF0YVN0ci5zdWJzdHIoMSwgZGF0YVN0ci5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIGRzID0gZGF0YVN0cjtcbiAgfVxuICBjb25zdCBkYXRhID0gZHMuc3BsaXQoXCIsXCIpO1xuICBjb25zdCB0YXNrID0ge307XG4gIGdldFRhc2tUYWdzKGRhdGEsIHRhc2ssIHRhZ3MpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICBkYXRhW2ldID0gZGF0YVtpXS50cmltKCk7XG4gIH1cbiAgc3dpdGNoIChkYXRhLmxlbmd0aCkge1xuICAgIGNhc2UgMTpcbiAgICAgIHRhc2suaWQgPSBwYXJzZUlkKCk7XG4gICAgICB0YXNrLnN0YXJ0VGltZSA9IHtcbiAgICAgICAgdHlwZTogXCJwcmV2VGFza0VuZFwiLFxuICAgICAgICBpZDogcHJldlRhc2tJZFxuICAgICAgfTtcbiAgICAgIHRhc2suZW5kVGltZSA9IHtcbiAgICAgICAgZGF0YTogZGF0YVswXVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIHRhc2suaWQgPSBwYXJzZUlkKCk7XG4gICAgICB0YXNrLnN0YXJ0VGltZSA9IHtcbiAgICAgICAgdHlwZTogXCJnZXRTdGFydERhdGVcIixcbiAgICAgICAgc3RhcnREYXRhOiBkYXRhWzBdXG4gICAgICB9O1xuICAgICAgdGFzay5lbmRUaW1lID0ge1xuICAgICAgICBkYXRhOiBkYXRhWzFdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgdGFzay5pZCA9IHBhcnNlSWQoZGF0YVswXSk7XG4gICAgICB0YXNrLnN0YXJ0VGltZSA9IHtcbiAgICAgICAgdHlwZTogXCJnZXRTdGFydERhdGVcIixcbiAgICAgICAgc3RhcnREYXRhOiBkYXRhWzFdXG4gICAgICB9O1xuICAgICAgdGFzay5lbmRUaW1lID0ge1xuICAgICAgICBkYXRhOiBkYXRhWzJdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHRhc2s7XG59O1xubGV0IGxhc3RUYXNrO1xubGV0IGxhc3RUYXNrSUQ7XG5sZXQgcmF3VGFza3MgPSBbXTtcbmNvbnN0IHRhc2tEYiA9IHt9O1xuY29uc3QgYWRkVGFzayA9IGZ1bmN0aW9uKGRlc2NyLCBkYXRhKSB7XG4gIGNvbnN0IHJhd1Rhc2sgPSB7XG4gICAgc2VjdGlvbjogY3VycmVudFNlY3Rpb24sXG4gICAgdHlwZTogY3VycmVudFNlY3Rpb24sXG4gICAgcHJvY2Vzc2VkOiBmYWxzZSxcbiAgICBtYW51YWxFbmRUaW1lOiBmYWxzZSxcbiAgICByZW5kZXJFbmRUaW1lOiBudWxsLFxuICAgIHJhdzogeyBkYXRhIH0sXG4gICAgdGFzazogZGVzY3IsXG4gICAgY2xhc3NlczogW11cbiAgfTtcbiAgY29uc3QgdGFza0luZm8gPSBwYXJzZURhdGEobGFzdFRhc2tJRCwgZGF0YSk7XG4gIHJhd1Rhc2sucmF3LnN0YXJ0VGltZSA9IHRhc2tJbmZvLnN0YXJ0VGltZTtcbiAgcmF3VGFzay5yYXcuZW5kVGltZSA9IHRhc2tJbmZvLmVuZFRpbWU7XG4gIHJhd1Rhc2suaWQgPSB0YXNrSW5mby5pZDtcbiAgcmF3VGFzay5wcmV2VGFza0lkID0gbGFzdFRhc2tJRDtcbiAgcmF3VGFzay5hY3RpdmUgPSB0YXNrSW5mby5hY3RpdmU7XG4gIHJhd1Rhc2suZG9uZSA9IHRhc2tJbmZvLmRvbmU7XG4gIHJhd1Rhc2suY3JpdCA9IHRhc2tJbmZvLmNyaXQ7XG4gIHJhd1Rhc2subWlsZXN0b25lID0gdGFza0luZm8ubWlsZXN0b25lO1xuICByYXdUYXNrLm9yZGVyID0gbGFzdE9yZGVyO1xuICBsYXN0T3JkZXIrKztcbiAgY29uc3QgcG9zID0gcmF3VGFza3MucHVzaChyYXdUYXNrKTtcbiAgbGFzdFRhc2tJRCA9IHJhd1Rhc2suaWQ7XG4gIHRhc2tEYltyYXdUYXNrLmlkXSA9IHBvcyAtIDE7XG59O1xuY29uc3QgZmluZFRhc2tCeUlkID0gZnVuY3Rpb24oaWQpIHtcbiAgY29uc3QgcG9zID0gdGFza0RiW2lkXTtcbiAgcmV0dXJuIHJhd1Rhc2tzW3Bvc107XG59O1xuY29uc3QgYWRkVGFza09yZyA9IGZ1bmN0aW9uKGRlc2NyLCBkYXRhKSB7XG4gIGNvbnN0IG5ld1Rhc2sgPSB7XG4gICAgc2VjdGlvbjogY3VycmVudFNlY3Rpb24sXG4gICAgdHlwZTogY3VycmVudFNlY3Rpb24sXG4gICAgZGVzY3JpcHRpb246IGRlc2NyLFxuICAgIHRhc2s6IGRlc2NyLFxuICAgIGNsYXNzZXM6IFtdXG4gIH07XG4gIGNvbnN0IHRhc2tJbmZvID0gY29tcGlsZURhdGEobGFzdFRhc2ssIGRhdGEpO1xuICBuZXdUYXNrLnN0YXJ0VGltZSA9IHRhc2tJbmZvLnN0YXJ0VGltZTtcbiAgbmV3VGFzay5lbmRUaW1lID0gdGFza0luZm8uZW5kVGltZTtcbiAgbmV3VGFzay5pZCA9IHRhc2tJbmZvLmlkO1xuICBuZXdUYXNrLmFjdGl2ZSA9IHRhc2tJbmZvLmFjdGl2ZTtcbiAgbmV3VGFzay5kb25lID0gdGFza0luZm8uZG9uZTtcbiAgbmV3VGFzay5jcml0ID0gdGFza0luZm8uY3JpdDtcbiAgbmV3VGFzay5taWxlc3RvbmUgPSB0YXNrSW5mby5taWxlc3RvbmU7XG4gIGxhc3RUYXNrID0gbmV3VGFzaztcbiAgdGFza3MucHVzaChuZXdUYXNrKTtcbn07XG5jb25zdCBjb21waWxlVGFza3MgPSBmdW5jdGlvbigpIHtcbiAgY29uc3QgY29tcGlsZVRhc2sgPSBmdW5jdGlvbihwb3MpIHtcbiAgICBjb25zdCB0YXNrID0gcmF3VGFza3NbcG9zXTtcbiAgICBsZXQgc3RhcnRUaW1lID0gXCJcIjtcbiAgICBzd2l0Y2ggKHJhd1Rhc2tzW3Bvc10ucmF3LnN0YXJ0VGltZS50eXBlKSB7XG4gICAgICBjYXNlIFwicHJldlRhc2tFbmRcIjoge1xuICAgICAgICBjb25zdCBwcmV2VGFzayA9IGZpbmRUYXNrQnlJZCh0YXNrLnByZXZUYXNrSWQpO1xuICAgICAgICB0YXNrLnN0YXJ0VGltZSA9IHByZXZUYXNrLmVuZFRpbWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImdldFN0YXJ0RGF0ZVwiOlxuICAgICAgICBzdGFydFRpbWUgPSBnZXRTdGFydERhdGUodm9pZCAwLCBkYXRlRm9ybWF0LCByYXdUYXNrc1twb3NdLnJhdy5zdGFydFRpbWUuc3RhcnREYXRhKTtcbiAgICAgICAgaWYgKHN0YXJ0VGltZSkge1xuICAgICAgICAgIHJhd1Rhc2tzW3Bvc10uc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAocmF3VGFza3NbcG9zXS5zdGFydFRpbWUpIHtcbiAgICAgIHJhd1Rhc2tzW3Bvc10uZW5kVGltZSA9IGdldEVuZERhdGUoXG4gICAgICAgIHJhd1Rhc2tzW3Bvc10uc3RhcnRUaW1lLFxuICAgICAgICBkYXRlRm9ybWF0LFxuICAgICAgICByYXdUYXNrc1twb3NdLnJhdy5lbmRUaW1lLmRhdGEsXG4gICAgICAgIGluY2x1c2l2ZUVuZERhdGVzXG4gICAgICApO1xuICAgICAgaWYgKHJhd1Rhc2tzW3Bvc10uZW5kVGltZSkge1xuICAgICAgICByYXdUYXNrc1twb3NdLnByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgIHJhd1Rhc2tzW3Bvc10ubWFudWFsRW5kVGltZSA9IGRheWpzKFxuICAgICAgICAgIHJhd1Rhc2tzW3Bvc10ucmF3LmVuZFRpbWUuZGF0YSxcbiAgICAgICAgICBcIllZWVktTU0tRERcIixcbiAgICAgICAgICB0cnVlXG4gICAgICAgICkuaXNWYWxpZCgpO1xuICAgICAgICBjaGVja1Rhc2tEYXRlcyhyYXdUYXNrc1twb3NdLCBkYXRlRm9ybWF0LCBleGNsdWRlcywgaW5jbHVkZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmF3VGFza3NbcG9zXS5wcm9jZXNzZWQ7XG4gIH07XG4gIGxldCBhbGxQcm9jZXNzZWQgPSB0cnVlO1xuICBmb3IgKGNvbnN0IFtpLCByYXdUYXNrXSBvZiByYXdUYXNrcy5lbnRyaWVzKCkpIHtcbiAgICBjb21waWxlVGFzayhpKTtcbiAgICBhbGxQcm9jZXNzZWQgPSBhbGxQcm9jZXNzZWQgJiYgcmF3VGFzay5wcm9jZXNzZWQ7XG4gIH1cbiAgcmV0dXJuIGFsbFByb2Nlc3NlZDtcbn07XG5jb25zdCBzZXRMaW5rID0gZnVuY3Rpb24oaWRzLCBfbGlua1N0cikge1xuICBsZXQgbGlua1N0ciA9IF9saW5rU3RyO1xuICBpZiAoZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbCAhPT0gXCJsb29zZVwiKSB7XG4gICAgbGlua1N0ciA9IHNhbml0aXplVXJsKF9saW5rU3RyKTtcbiAgfVxuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBsZXQgcmF3VGFzayA9IGZpbmRUYXNrQnlJZChpZCk7XG4gICAgaWYgKHJhd1Rhc2sgIT09IHZvaWQgMCkge1xuICAgICAgcHVzaEZ1bihpZCwgKCkgPT4ge1xuICAgICAgICB3aW5kb3cub3BlbihsaW5rU3RyLCBcIl9zZWxmXCIpO1xuICAgICAgfSk7XG4gICAgICBsaW5rc1tpZF0gPSBsaW5rU3RyO1xuICAgIH1cbiAgfSk7XG4gIHNldENsYXNzKGlkcywgXCJjbGlja2FibGVcIik7XG59O1xuY29uc3Qgc2V0Q2xhc3MgPSBmdW5jdGlvbihpZHMsIGNsYXNzTmFtZSkge1xuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBsZXQgcmF3VGFzayA9IGZpbmRUYXNrQnlJZChpZCk7XG4gICAgaWYgKHJhd1Rhc2sgIT09IHZvaWQgMCkge1xuICAgICAgcmF3VGFzay5jbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IHNldENsaWNrRnVuID0gZnVuY3Rpb24oaWQsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25BcmdzKSB7XG4gIGlmIChnZXRDb25maWcoKS5zZWN1cml0eUxldmVsICE9PSBcImxvb3NlXCIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBhcmdMaXN0ID0gW107XG4gIGlmICh0eXBlb2YgZnVuY3Rpb25BcmdzID09PSBcInN0cmluZ1wiKSB7XG4gICAgYXJnTGlzdCA9IGZ1bmN0aW9uQXJncy5zcGxpdCgvLCg/PSg/Oig/OlteXCJdKlwiKXsyfSkqW15cIl0qJCkvKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ0xpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBpdGVtID0gYXJnTGlzdFtpXS50cmltKCk7XG4gICAgICBpZiAoaXRlbS5jaGFyQXQoMCkgPT09ICdcIicgJiYgaXRlbS5jaGFyQXQoaXRlbS5sZW5ndGggLSAxKSA9PT0gJ1wiJykge1xuICAgICAgICBpdGVtID0gaXRlbS5zdWJzdHIoMSwgaXRlbS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGFyZ0xpc3RbaV0gPSBpdGVtO1xuICAgIH1cbiAgfVxuICBpZiAoYXJnTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICBhcmdMaXN0LnB1c2goaWQpO1xuICB9XG4gIGxldCByYXdUYXNrID0gZmluZFRhc2tCeUlkKGlkKTtcbiAgaWYgKHJhd1Rhc2sgIT09IHZvaWQgMCkge1xuICAgIHB1c2hGdW4oaWQsICgpID0+IHtcbiAgICAgIHV0aWxzLnJ1bkZ1bmMoZnVuY3Rpb25OYW1lLCAuLi5hcmdMaXN0KTtcbiAgICB9KTtcbiAgfVxufTtcbmNvbnN0IHB1c2hGdW4gPSBmdW5jdGlvbihpZCwgY2FsbGJhY2tGdW5jdGlvbikge1xuICBmdW5zLnB1c2goXG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgICAgIGlmIChlbGVtICE9PSBudWxsKSB7XG4gICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9XCIke2lkfS10ZXh0XCJdYCk7XG4gICAgICBpZiAoZWxlbSAhPT0gbnVsbCkge1xuICAgICAgICBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn07XG5jb25zdCBzZXRDbGlja0V2ZW50ID0gZnVuY3Rpb24oaWRzLCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQXJncykge1xuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBzZXRDbGlja0Z1bihpZCwgZnVuY3Rpb25OYW1lLCBmdW5jdGlvbkFyZ3MpO1xuICB9KTtcbiAgc2V0Q2xhc3MoaWRzLCBcImNsaWNrYWJsZVwiKTtcbn07XG5jb25zdCBiaW5kRnVuY3Rpb25zID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICBmdW5zLmZvckVhY2goZnVuY3Rpb24oZnVuKSB7XG4gICAgZnVuKGVsZW1lbnQpO1xuICB9KTtcbn07XG5jb25zdCBnYW50dERiID0ge1xuICBwYXJzZURpcmVjdGl2ZSxcbiAgZ2V0Q29uZmlnOiAoKSA9PiBnZXRDb25maWcoKS5nYW50dCxcbiAgY2xlYXIsXG4gIHNldERhdGVGb3JtYXQsXG4gIGdldERhdGVGb3JtYXQsXG4gIGVuYWJsZUluY2x1c2l2ZUVuZERhdGVzLFxuICBlbmREYXRlc0FyZUluY2x1c2l2ZSxcbiAgZW5hYmxlVG9wQXhpcyxcbiAgdG9wQXhpc0VuYWJsZWQsXG4gIHNldEF4aXNGb3JtYXQsXG4gIGdldEF4aXNGb3JtYXQsXG4gIHNldFRpY2tJbnRlcnZhbCxcbiAgZ2V0VGlja0ludGVydmFsLFxuICBzZXRUb2RheU1hcmtlcixcbiAgZ2V0VG9kYXlNYXJrZXIsXG4gIHNldEFjY1RpdGxlLFxuICBnZXRBY2NUaXRsZSxcbiAgc2V0RGlhZ3JhbVRpdGxlLFxuICBnZXREaWFncmFtVGl0bGUsXG4gIHNldERpc3BsYXlNb2RlLFxuICBnZXREaXNwbGF5TW9kZSxcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBhZGRTZWN0aW9uLFxuICBnZXRTZWN0aW9ucyxcbiAgZ2V0VGFza3MsXG4gIGFkZFRhc2ssXG4gIGZpbmRUYXNrQnlJZCxcbiAgYWRkVGFza09yZyxcbiAgc2V0SW5jbHVkZXMsXG4gIGdldEluY2x1ZGVzLFxuICBzZXRFeGNsdWRlcyxcbiAgZ2V0RXhjbHVkZXMsXG4gIHNldENsaWNrRXZlbnQsXG4gIHNldExpbmssXG4gIGdldExpbmtzLFxuICBiaW5kRnVuY3Rpb25zLFxuICBwYXJzZUR1cmF0aW9uLFxuICBpc0ludmFsaWREYXRlXG59O1xuZnVuY3Rpb24gZ2V0VGFza1RhZ3MoZGF0YSwgdGFzaywgdGFnczIpIHtcbiAgbGV0IG1hdGNoRm91bmQgPSB0cnVlO1xuICB3aGlsZSAobWF0Y2hGb3VuZCkge1xuICAgIG1hdGNoRm91bmQgPSBmYWxzZTtcbiAgICB0YWdzMi5mb3JFYWNoKGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSBcIl5cXFxccypcIiArIHQgKyBcIlxcXFxzKiRcIjtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICAgIGlmIChkYXRhWzBdLm1hdGNoKHJlZ2V4KSkge1xuICAgICAgICB0YXNrW3RdID0gdHJ1ZTtcbiAgICAgICAgZGF0YS5zaGlmdCgxKTtcbiAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNvbnN0IHNldENvbmYgPSBmdW5jdGlvbigpIHtcbiAgbG9nLmRlYnVnKFwiU29tZXRoaW5nIGlzIGNhbGxpbmcsIHNldENvbmYsIHJlbW92ZSB0aGUgY2FsbFwiKTtcbn07XG5jb25zdCBnZXRNYXhJbnRlcnNlY3Rpb25zID0gKHRhc2tzMiwgb3JkZXJPZmZzZXQpID0+IHtcbiAgbGV0IHRpbWVsaW5lID0gWy4uLnRhc2tzMl0ubWFwKCgpID0+IC1JbmZpbml0eSk7XG4gIGxldCBzb3J0ZWQgPSBbLi4udGFza3MyXS5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0VGltZSAtIGIuc3RhcnRUaW1lIHx8IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgbGV0IG1heEludGVyc2VjdGlvbnMgPSAwO1xuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygc29ydGVkKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aW1lbGluZS5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGVsZW1lbnQuc3RhcnRUaW1lID49IHRpbWVsaW5lW2pdKSB7XG4gICAgICAgIHRpbWVsaW5lW2pdID0gZWxlbWVudC5lbmRUaW1lO1xuICAgICAgICBlbGVtZW50Lm9yZGVyID0gaiArIG9yZGVyT2Zmc2V0O1xuICAgICAgICBpZiAoaiA+IG1heEludGVyc2VjdGlvbnMpIHtcbiAgICAgICAgICBtYXhJbnRlcnNlY3Rpb25zID0gajtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1heEludGVyc2VjdGlvbnM7XG59O1xubGV0IHc7XG5jb25zdCBkcmF3ID0gZnVuY3Rpb24odGV4dCwgaWQsIHZlcnNpb24sIGRpYWdPYmopIHtcbiAgY29uc3QgY29uZiA9IGdldENvbmZpZygpLmdhbnR0O1xuICBjb25zdCBzZWN1cml0eUxldmVsID0gZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbDtcbiAgbGV0IHNhbmRib3hFbGVtZW50O1xuICBpZiAoc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIpIHtcbiAgICBzYW5kYm94RWxlbWVudCA9IHNlbGVjdChcIiNpXCIgKyBpZCk7XG4gIH1cbiAgY29uc3Qgcm9vdCA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2VsZWN0KHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpIDogc2VsZWN0KFwiYm9keVwiKTtcbiAgY29uc3QgZG9jID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50O1xuICBjb25zdCBlbGVtID0gZG9jLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgdyA9IGVsZW0ucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgaWYgKHcgPT09IHZvaWQgMCkge1xuICAgIHcgPSAxMjAwO1xuICB9XG4gIGlmIChjb25mLnVzZVdpZHRoICE9PSB2b2lkIDApIHtcbiAgICB3ID0gY29uZi51c2VXaWR0aDtcbiAgfVxuICBjb25zdCB0YXNrQXJyYXkgPSBkaWFnT2JqLmRiLmdldFRhc2tzKCk7XG4gIGxldCBjYXRlZ29yaWVzID0gW107XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiB0YXNrQXJyYXkpIHtcbiAgICBjYXRlZ29yaWVzLnB1c2goZWxlbWVudC50eXBlKTtcbiAgfVxuICBjYXRlZ29yaWVzID0gY2hlY2tVbmlxdWUoY2F0ZWdvcmllcyk7XG4gIGNvbnN0IGNhdGVnb3J5SGVpZ2h0cyA9IHt9O1xuICBsZXQgaCA9IDIgKiBjb25mLnRvcFBhZGRpbmc7XG4gIGlmIChkaWFnT2JqLmRiLmdldERpc3BsYXlNb2RlKCkgPT09IFwiY29tcGFjdFwiIHx8IGNvbmYuZGlzcGxheU1vZGUgPT09IFwiY29tcGFjdFwiKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlFbGVtZW50cyA9IHt9O1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0YXNrQXJyYXkpIHtcbiAgICAgIGlmIChjYXRlZ29yeUVsZW1lbnRzW2VsZW1lbnQuc2VjdGlvbl0gPT09IHZvaWQgMCkge1xuICAgICAgICBjYXRlZ29yeUVsZW1lbnRzW2VsZW1lbnQuc2VjdGlvbl0gPSBbZWxlbWVudF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXRlZ29yeUVsZW1lbnRzW2VsZW1lbnQuc2VjdGlvbl0ucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGludGVyc2VjdGlvbnMgPSAwO1xuICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgT2JqZWN0LmtleXMoY2F0ZWdvcnlFbGVtZW50cykpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5SGVpZ2h0ID0gZ2V0TWF4SW50ZXJzZWN0aW9ucyhjYXRlZ29yeUVsZW1lbnRzW2NhdGVnb3J5XSwgaW50ZXJzZWN0aW9ucykgKyAxO1xuICAgICAgaW50ZXJzZWN0aW9ucyArPSBjYXRlZ29yeUhlaWdodDtcbiAgICAgIGggKz0gY2F0ZWdvcnlIZWlnaHQgKiAoY29uZi5iYXJIZWlnaHQgKyBjb25mLmJhckdhcCk7XG4gICAgICBjYXRlZ29yeUhlaWdodHNbY2F0ZWdvcnldID0gY2F0ZWdvcnlIZWlnaHQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGggKz0gdGFza0FycmF5Lmxlbmd0aCAqIChjb25mLmJhckhlaWdodCArIGNvbmYuYmFyR2FwKTtcbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMpIHtcbiAgICAgIGNhdGVnb3J5SGVpZ2h0c1tjYXRlZ29yeV0gPSB0YXNrQXJyYXkuZmlsdGVyKCh0YXNrKSA9PiB0YXNrLnR5cGUgPT09IGNhdGVnb3J5KS5sZW5ndGg7XG4gICAgfVxuICB9XG4gIGVsZW0uc2V0QXR0cmlidXRlKFwidmlld0JveFwiLCBcIjAgMCBcIiArIHcgKyBcIiBcIiArIGgpO1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChgW2lkPVwiJHtpZH1cIl1gKTtcbiAgY29uc3QgdGltZVNjYWxlID0gc2NhbGVUaW1lKCkuZG9tYWluKFtcbiAgICBtaW4odGFza0FycmF5LCBmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gZC5zdGFydFRpbWU7XG4gICAgfSksXG4gICAgbWF4KHRhc2tBcnJheSwgZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGQuZW5kVGltZTtcbiAgICB9KVxuICBdKS5yYW5nZVJvdW5kKFswLCB3IC0gY29uZi5sZWZ0UGFkZGluZyAtIGNvbmYucmlnaHRQYWRkaW5nXSk7XG4gIGZ1bmN0aW9uIHRhc2tDb21wYXJlKGEsIGIpIHtcbiAgICBjb25zdCB0YXNrQSA9IGEuc3RhcnRUaW1lO1xuICAgIGNvbnN0IHRhc2tCID0gYi5zdGFydFRpbWU7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHRhc2tBID4gdGFza0IpIHtcbiAgICAgIHJlc3VsdCA9IDE7XG4gICAgfSBlbHNlIGlmICh0YXNrQSA8IHRhc2tCKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICB0YXNrQXJyYXkuc29ydCh0YXNrQ29tcGFyZSk7XG4gIG1ha2VHYW50KHRhc2tBcnJheSwgdywgaCk7XG4gIGNvbmZpZ3VyZVN2Z1NpemUoc3ZnLCBoLCB3LCBjb25mLnVzZU1heFdpZHRoKTtcbiAgc3ZnLmFwcGVuZChcInRleHRcIikudGV4dChkaWFnT2JqLmRiLmdldERpYWdyYW1UaXRsZSgpKS5hdHRyKFwieFwiLCB3IC8gMikuYXR0cihcInlcIiwgY29uZi50aXRsZVRvcE1hcmdpbikuYXR0cihcImNsYXNzXCIsIFwidGl0bGVUZXh0XCIpO1xuICBmdW5jdGlvbiBtYWtlR2FudCh0YXNrczIsIHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkge1xuICAgIGNvbnN0IGJhckhlaWdodCA9IGNvbmYuYmFySGVpZ2h0O1xuICAgIGNvbnN0IGdhcCA9IGJhckhlaWdodCArIGNvbmYuYmFyR2FwO1xuICAgIGNvbnN0IHRvcFBhZGRpbmcgPSBjb25mLnRvcFBhZGRpbmc7XG4gICAgY29uc3QgbGVmdFBhZGRpbmcgPSBjb25mLmxlZnRQYWRkaW5nO1xuICAgIGNvbnN0IGNvbG9yU2NhbGUgPSBzY2FsZUxpbmVhcigpLmRvbWFpbihbMCwgY2F0ZWdvcmllcy5sZW5ndGhdKS5yYW5nZShbXCIjMDBCOUZBXCIsIFwiI0Y5NTAwMlwiXSkuaW50ZXJwb2xhdGUoaW50ZXJwb2xhdGVIY2wpO1xuICAgIGRyYXdFeGNsdWRlRGF5cyhcbiAgICAgIGdhcCxcbiAgICAgIHRvcFBhZGRpbmcsXG4gICAgICBsZWZ0UGFkZGluZyxcbiAgICAgIHBhZ2VXaWR0aCxcbiAgICAgIHBhZ2VIZWlnaHQsXG4gICAgICB0YXNrczIsXG4gICAgICBkaWFnT2JqLmRiLmdldEV4Y2x1ZGVzKCksXG4gICAgICBkaWFnT2JqLmRiLmdldEluY2x1ZGVzKClcbiAgICApO1xuICAgIG1ha2VHcmlkKGxlZnRQYWRkaW5nLCB0b3BQYWRkaW5nLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpO1xuICAgIGRyYXdSZWN0cyh0YXNrczIsIGdhcCwgdG9wUGFkZGluZywgbGVmdFBhZGRpbmcsIGJhckhlaWdodCwgY29sb3JTY2FsZSwgcGFnZVdpZHRoKTtcbiAgICB2ZXJ0TGFiZWxzKGdhcCwgdG9wUGFkZGluZyk7XG4gICAgZHJhd1RvZGF5KGxlZnRQYWRkaW5nLCB0b3BQYWRkaW5nLCBwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpO1xuICB9XG4gIGZ1bmN0aW9uIGRyYXdSZWN0cyh0aGVBcnJheSwgdGhlR2FwLCB0aGVUb3BQYWQsIHRoZVNpZGVQYWQsIHRoZUJhckhlaWdodCwgdGhlQ29sb3JTY2FsZSwgdzIpIHtcbiAgICBjb25zdCB1bmlxdWVUYXNrT3JkZXJJZHMgPSBbLi4ubmV3IFNldCh0aGVBcnJheS5tYXAoKGl0ZW0pID0+IGl0ZW0ub3JkZXIpKV07XG4gICAgY29uc3QgdW5pcXVlVGFza3MgPSB1bmlxdWVUYXNrT3JkZXJJZHMubWFwKChpZDIpID0+IHRoZUFycmF5LmZpbmQoKGl0ZW0pID0+IGl0ZW0ub3JkZXIgPT09IGlkMikpO1xuICAgIHN2Zy5hcHBlbmQoXCJnXCIpLnNlbGVjdEFsbChcInJlY3RcIikuZGF0YSh1bmlxdWVUYXNrcykuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpLmF0dHIoXCJ4XCIsIDApLmF0dHIoXCJ5XCIsIGZ1bmN0aW9uKGQsIGkpIHtcbiAgICAgIGkgPSBkLm9yZGVyO1xuICAgICAgcmV0dXJuIGkgKiB0aGVHYXAgKyB0aGVUb3BQYWQgLSAyO1xuICAgIH0pLmF0dHIoXCJ3aWR0aFwiLCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB3MiAtIGNvbmYucmlnaHRQYWRkaW5nIC8gMjtcbiAgICB9KS5hdHRyKFwiaGVpZ2h0XCIsIHRoZUdhcCkuYXR0cihcImNsYXNzXCIsIGZ1bmN0aW9uKGQpIHtcbiAgICAgIGZvciAoY29uc3QgW2ksIGNhdGVnb3J5XSBvZiBjYXRlZ29yaWVzLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoZC50eXBlID09PSBjYXRlZ29yeSkge1xuICAgICAgICAgIHJldHVybiBcInNlY3Rpb24gc2VjdGlvblwiICsgaSAlIGNvbmYubnVtYmVyU2VjdGlvblN0eWxlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFwic2VjdGlvbiBzZWN0aW9uMFwiO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlY3RhbmdsZXMgPSBzdmcuYXBwZW5kKFwiZ1wiKS5zZWxlY3RBbGwoXCJyZWN0XCIpLmRhdGEodGhlQXJyYXkpLmVudGVyKCk7XG4gICAgY29uc3QgbGlua3MyID0gZGlhZ09iai5kYi5nZXRMaW5rcygpO1xuICAgIHJlY3RhbmdsZXMuYXBwZW5kKFwicmVjdFwiKS5hdHRyKFwiaWRcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGQuaWQ7XG4gICAgfSkuYXR0cihcInJ4XCIsIDMpLmF0dHIoXCJyeVwiLCAzKS5hdHRyKFwieFwiLCBmdW5jdGlvbihkKSB7XG4gICAgICBpZiAoZC5taWxlc3RvbmUpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVTY2FsZShkLnN0YXJ0VGltZSkgKyB0aGVTaWRlUGFkICsgMC41ICogKHRpbWVTY2FsZShkLmVuZFRpbWUpIC0gdGltZVNjYWxlKGQuc3RhcnRUaW1lKSkgLSAwLjUgKiB0aGVCYXJIZWlnaHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGltZVNjYWxlKGQuc3RhcnRUaW1lKSArIHRoZVNpZGVQYWQ7XG4gICAgfSkuYXR0cihcInlcIiwgZnVuY3Rpb24oZCwgaSkge1xuICAgICAgaSA9IGQub3JkZXI7XG4gICAgICByZXR1cm4gaSAqIHRoZUdhcCArIHRoZVRvcFBhZDtcbiAgICB9KS5hdHRyKFwid2lkdGhcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgaWYgKGQubWlsZXN0b25lKSB7XG4gICAgICAgIHJldHVybiB0aGVCYXJIZWlnaHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGltZVNjYWxlKGQucmVuZGVyRW5kVGltZSB8fCBkLmVuZFRpbWUpIC0gdGltZVNjYWxlKGQuc3RhcnRUaW1lKTtcbiAgICB9KS5hdHRyKFwiaGVpZ2h0XCIsIHRoZUJhckhlaWdodCkuYXR0cihcInRyYW5zZm9ybS1vcmlnaW5cIiwgZnVuY3Rpb24oZCwgaSkge1xuICAgICAgaSA9IGQub3JkZXI7XG4gICAgICByZXR1cm4gKHRpbWVTY2FsZShkLnN0YXJ0VGltZSkgKyB0aGVTaWRlUGFkICsgMC41ICogKHRpbWVTY2FsZShkLmVuZFRpbWUpIC0gdGltZVNjYWxlKGQuc3RhcnRUaW1lKSkpLnRvU3RyaW5nKCkgKyBcInB4IFwiICsgKGkgKiB0aGVHYXAgKyB0aGVUb3BQYWQgKyAwLjUgKiB0aGVCYXJIZWlnaHQpLnRvU3RyaW5nKCkgKyBcInB4XCI7XG4gICAgfSkuYXR0cihcImNsYXNzXCIsIGZ1bmN0aW9uKGQpIHtcbiAgICAgIGNvbnN0IHJlcyA9IFwidGFza1wiO1xuICAgICAgbGV0IGNsYXNzU3RyID0gXCJcIjtcbiAgICAgIGlmIChkLmNsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjbGFzc1N0ciA9IGQuY2xhc3Nlcy5qb2luKFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGxldCBzZWNOdW0gPSAwO1xuICAgICAgZm9yIChjb25zdCBbaSwgY2F0ZWdvcnldIG9mIGNhdGVnb3JpZXMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChkLnR5cGUgPT09IGNhdGVnb3J5KSB7XG4gICAgICAgICAgc2VjTnVtID0gaSAlIGNvbmYubnVtYmVyU2VjdGlvblN0eWxlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IHRhc2tDbGFzcyA9IFwiXCI7XG4gICAgICBpZiAoZC5hY3RpdmUpIHtcbiAgICAgICAgaWYgKGQuY3JpdCkge1xuICAgICAgICAgIHRhc2tDbGFzcyArPSBcIiBhY3RpdmVDcml0XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFza0NsYXNzID0gXCIgYWN0aXZlXCI7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZC5kb25lKSB7XG4gICAgICAgIGlmIChkLmNyaXQpIHtcbiAgICAgICAgICB0YXNrQ2xhc3MgPSBcIiBkb25lQ3JpdFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhc2tDbGFzcyA9IFwiIGRvbmVcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGQuY3JpdCkge1xuICAgICAgICAgIHRhc2tDbGFzcyArPSBcIiBjcml0XCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0YXNrQ2xhc3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRhc2tDbGFzcyA9IFwiIHRhc2tcIjtcbiAgICAgIH1cbiAgICAgIGlmIChkLm1pbGVzdG9uZSkge1xuICAgICAgICB0YXNrQ2xhc3MgPSBcIiBtaWxlc3RvbmUgXCIgKyB0YXNrQ2xhc3M7XG4gICAgICB9XG4gICAgICB0YXNrQ2xhc3MgKz0gc2VjTnVtO1xuICAgICAgdGFza0NsYXNzICs9IFwiIFwiICsgY2xhc3NTdHI7XG4gICAgICByZXR1cm4gcmVzICsgdGFza0NsYXNzO1xuICAgIH0pO1xuICAgIHJlY3RhbmdsZXMuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiaWRcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGQuaWQgKyBcIi10ZXh0XCI7XG4gICAgfSkudGV4dChmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gZC50YXNrO1xuICAgIH0pLmF0dHIoXCJmb250LXNpemVcIiwgY29uZi5mb250U2l6ZSkuYXR0cihcInhcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgbGV0IHN0YXJ0WCA9IHRpbWVTY2FsZShkLnN0YXJ0VGltZSk7XG4gICAgICBsZXQgZW5kWCA9IHRpbWVTY2FsZShkLnJlbmRlckVuZFRpbWUgfHwgZC5lbmRUaW1lKTtcbiAgICAgIGlmIChkLm1pbGVzdG9uZSkge1xuICAgICAgICBzdGFydFggKz0gMC41ICogKHRpbWVTY2FsZShkLmVuZFRpbWUpIC0gdGltZVNjYWxlKGQuc3RhcnRUaW1lKSkgLSAwLjUgKiB0aGVCYXJIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAoZC5taWxlc3RvbmUpIHtcbiAgICAgICAgZW5kWCA9IHN0YXJ0WCArIHRoZUJhckhlaWdodDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRleHRXaWR0aCA9IHRoaXMuZ2V0QkJveCgpLndpZHRoO1xuICAgICAgaWYgKHRleHRXaWR0aCA+IGVuZFggLSBzdGFydFgpIHtcbiAgICAgICAgaWYgKGVuZFggKyB0ZXh0V2lkdGggKyAxLjUgKiBjb25mLmxlZnRQYWRkaW5nID4gdzIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhcnRYICsgdGhlU2lkZVBhZCAtIDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGVuZFggKyB0aGVTaWRlUGFkICsgNTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChlbmRYIC0gc3RhcnRYKSAvIDIgKyBzdGFydFggKyB0aGVTaWRlUGFkO1xuICAgICAgfVxuICAgIH0pLmF0dHIoXCJ5XCIsIGZ1bmN0aW9uKGQsIGkpIHtcbiAgICAgIGkgPSBkLm9yZGVyO1xuICAgICAgcmV0dXJuIGkgKiB0aGVHYXAgKyBjb25mLmJhckhlaWdodCAvIDIgKyAoY29uZi5mb250U2l6ZSAvIDIgLSAyKSArIHRoZVRvcFBhZDtcbiAgICB9KS5hdHRyKFwidGV4dC1oZWlnaHRcIiwgdGhlQmFySGVpZ2h0KS5hdHRyKFwiY2xhc3NcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgY29uc3Qgc3RhcnRYID0gdGltZVNjYWxlKGQuc3RhcnRUaW1lKTtcbiAgICAgIGxldCBlbmRYID0gdGltZVNjYWxlKGQuZW5kVGltZSk7XG4gICAgICBpZiAoZC5taWxlc3RvbmUpIHtcbiAgICAgICAgZW5kWCA9IHN0YXJ0WCArIHRoZUJhckhlaWdodDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRleHRXaWR0aCA9IHRoaXMuZ2V0QkJveCgpLndpZHRoO1xuICAgICAgbGV0IGNsYXNzU3RyID0gXCJcIjtcbiAgICAgIGlmIChkLmNsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjbGFzc1N0ciA9IGQuY2xhc3Nlcy5qb2luKFwiIFwiKTtcbiAgICAgIH1cbiAgICAgIGxldCBzZWNOdW0gPSAwO1xuICAgICAgZm9yIChjb25zdCBbaSwgY2F0ZWdvcnldIG9mIGNhdGVnb3JpZXMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChkLnR5cGUgPT09IGNhdGVnb3J5KSB7XG4gICAgICAgICAgc2VjTnVtID0gaSAlIGNvbmYubnVtYmVyU2VjdGlvblN0eWxlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IHRhc2tUeXBlID0gXCJcIjtcbiAgICAgIGlmIChkLmFjdGl2ZSkge1xuICAgICAgICBpZiAoZC5jcml0KSB7XG4gICAgICAgICAgdGFza1R5cGUgPSBcImFjdGl2ZUNyaXRUZXh0XCIgKyBzZWNOdW07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFza1R5cGUgPSBcImFjdGl2ZVRleHRcIiArIHNlY051bTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGQuZG9uZSkge1xuICAgICAgICBpZiAoZC5jcml0KSB7XG4gICAgICAgICAgdGFza1R5cGUgPSB0YXNrVHlwZSArIFwiIGRvbmVDcml0VGV4dFwiICsgc2VjTnVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhc2tUeXBlID0gdGFza1R5cGUgKyBcIiBkb25lVGV4dFwiICsgc2VjTnVtO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZC5jcml0KSB7XG4gICAgICAgICAgdGFza1R5cGUgPSB0YXNrVHlwZSArIFwiIGNyaXRUZXh0XCIgKyBzZWNOdW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkLm1pbGVzdG9uZSkge1xuICAgICAgICB0YXNrVHlwZSArPSBcIiBtaWxlc3RvbmVUZXh0XCI7XG4gICAgICB9XG4gICAgICBpZiAodGV4dFdpZHRoID4gZW5kWCAtIHN0YXJ0WCkge1xuICAgICAgICBpZiAoZW5kWCArIHRleHRXaWR0aCArIDEuNSAqIGNvbmYubGVmdFBhZGRpbmcgPiB3Mikge1xuICAgICAgICAgIHJldHVybiBjbGFzc1N0ciArIFwiIHRhc2tUZXh0T3V0c2lkZUxlZnQgdGFza1RleHRPdXRzaWRlXCIgKyBzZWNOdW0gKyBcIiBcIiArIHRhc2tUeXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjbGFzc1N0ciArIFwiIHRhc2tUZXh0T3V0c2lkZVJpZ2h0IHRhc2tUZXh0T3V0c2lkZVwiICsgc2VjTnVtICsgXCIgXCIgKyB0YXNrVHlwZSArIFwiIHdpZHRoLVwiICsgdGV4dFdpZHRoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2xhc3NTdHIgKyBcIiB0YXNrVGV4dCB0YXNrVGV4dFwiICsgc2VjTnVtICsgXCIgXCIgKyB0YXNrVHlwZSArIFwiIHdpZHRoLVwiICsgdGV4dFdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY3VyaXR5TGV2ZWwyID0gZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbDtcbiAgICBpZiAoc2VjdXJpdHlMZXZlbDIgPT09IFwic2FuZGJveFwiKSB7XG4gICAgICBsZXQgc2FuZGJveEVsZW1lbnQyO1xuICAgICAgc2FuZGJveEVsZW1lbnQyID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgICAgIGNvbnN0IGRvYzIgPSBzYW5kYm94RWxlbWVudDIubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQ7XG4gICAgICByZWN0YW5nbGVzLmZpbHRlcihmdW5jdGlvbihkKSB7XG4gICAgICAgIHJldHVybiBsaW5rczJbZC5pZF0gIT09IHZvaWQgMDtcbiAgICAgIH0pLmVhY2goZnVuY3Rpb24obykge1xuICAgICAgICB2YXIgdGFza1JlY3QgPSBkb2MyLnF1ZXJ5U2VsZWN0b3IoXCIjXCIgKyBvLmlkKTtcbiAgICAgICAgdmFyIHRhc2tUZXh0ID0gZG9jMi5xdWVyeVNlbGVjdG9yKFwiI1wiICsgby5pZCArIFwiLXRleHRcIik7XG4gICAgICAgIGNvbnN0IG9sZFBhcmVudCA9IHRhc2tSZWN0LnBhcmVudE5vZGU7XG4gICAgICAgIHZhciBMaW5rID0gZG9jMi5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgTGluay5zZXRBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIsIGxpbmtzMltvLmlkXSk7XG4gICAgICAgIExpbmsuc2V0QXR0cmlidXRlKFwidGFyZ2V0XCIsIFwiX3RvcFwiKTtcbiAgICAgICAgb2xkUGFyZW50LmFwcGVuZENoaWxkKExpbmspO1xuICAgICAgICBMaW5rLmFwcGVuZENoaWxkKHRhc2tSZWN0KTtcbiAgICAgICAgTGluay5hcHBlbmRDaGlsZCh0YXNrVGV4dCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZHJhd0V4Y2x1ZGVEYXlzKHRoZUdhcCwgdGhlVG9wUGFkLCB0aGVTaWRlUGFkLCB3MiwgaDIsIHRhc2tzMiwgZXhjbHVkZXMyLCBpbmNsdWRlczIpIHtcbiAgICBjb25zdCBtaW5UaW1lID0gdGFza3MyLnJlZHVjZShcbiAgICAgIChtaW4yLCB7IHN0YXJ0VGltZSB9KSA9PiBtaW4yID8gTWF0aC5taW4obWluMiwgc3RhcnRUaW1lKSA6IHN0YXJ0VGltZSxcbiAgICAgIDBcbiAgICApO1xuICAgIGNvbnN0IG1heFRpbWUgPSB0YXNrczIucmVkdWNlKChtYXgyLCB7IGVuZFRpbWUgfSkgPT4gbWF4MiA/IE1hdGgubWF4KG1heDIsIGVuZFRpbWUpIDogZW5kVGltZSwgMCk7XG4gICAgY29uc3QgZGF0ZUZvcm1hdDIgPSBkaWFnT2JqLmRiLmdldERhdGVGb3JtYXQoKTtcbiAgICBpZiAoIW1pblRpbWUgfHwgIW1heFRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhjbHVkZVJhbmdlcyA9IFtdO1xuICAgIGxldCByYW5nZSA9IG51bGw7XG4gICAgbGV0IGQgPSBkYXlqcyhtaW5UaW1lKTtcbiAgICB3aGlsZSAoZC52YWx1ZU9mKCkgPD0gbWF4VGltZSkge1xuICAgICAgaWYgKGRpYWdPYmouZGIuaXNJbnZhbGlkRGF0ZShkLCBkYXRlRm9ybWF0MiwgZXhjbHVkZXMyLCBpbmNsdWRlczIpKSB7XG4gICAgICAgIGlmICghcmFuZ2UpIHtcbiAgICAgICAgICByYW5nZSA9IHtcbiAgICAgICAgICAgIHN0YXJ0OiBkLFxuICAgICAgICAgICAgZW5kOiBkXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByYW5nZS5lbmQgPSBkO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgICBleGNsdWRlUmFuZ2VzLnB1c2gocmFuZ2UpO1xuICAgICAgICAgIHJhbmdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZCA9IGQuYWRkKDEsIFwiZFwiKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdGFuZ2xlcyA9IHN2Zy5hcHBlbmQoXCJnXCIpLnNlbGVjdEFsbChcInJlY3RcIikuZGF0YShleGNsdWRlUmFuZ2VzKS5lbnRlcigpO1xuICAgIHJlY3RhbmdsZXMuYXBwZW5kKFwicmVjdFwiKS5hdHRyKFwiaWRcIiwgZnVuY3Rpb24oZDIpIHtcbiAgICAgIHJldHVybiBcImV4Y2x1ZGUtXCIgKyBkMi5zdGFydC5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgIH0pLmF0dHIoXCJ4XCIsIGZ1bmN0aW9uKGQyKSB7XG4gICAgICByZXR1cm4gdGltZVNjYWxlKGQyLnN0YXJ0KSArIHRoZVNpZGVQYWQ7XG4gICAgfSkuYXR0cihcInlcIiwgY29uZi5ncmlkTGluZVN0YXJ0UGFkZGluZykuYXR0cihcIndpZHRoXCIsIGZ1bmN0aW9uKGQyKSB7XG4gICAgICBjb25zdCByZW5kZXJFbmQgPSBkMi5lbmQuYWRkKDEsIFwiZGF5XCIpO1xuICAgICAgcmV0dXJuIHRpbWVTY2FsZShyZW5kZXJFbmQpIC0gdGltZVNjYWxlKGQyLnN0YXJ0KTtcbiAgICB9KS5hdHRyKFwiaGVpZ2h0XCIsIGgyIC0gdGhlVG9wUGFkIC0gY29uZi5ncmlkTGluZVN0YXJ0UGFkZGluZykuYXR0cihcInRyYW5zZm9ybS1vcmlnaW5cIiwgZnVuY3Rpb24oZDIsIGkpIHtcbiAgICAgIHJldHVybiAodGltZVNjYWxlKGQyLnN0YXJ0KSArIHRoZVNpZGVQYWQgKyAwLjUgKiAodGltZVNjYWxlKGQyLmVuZCkgLSB0aW1lU2NhbGUoZDIuc3RhcnQpKSkudG9TdHJpbmcoKSArIFwicHggXCIgKyAoaSAqIHRoZUdhcCArIDAuNSAqIGgyKS50b1N0cmluZygpICsgXCJweFwiO1xuICAgIH0pLmF0dHIoXCJjbGFzc1wiLCBcImV4Y2x1ZGUtcmFuZ2VcIik7XG4gIH1cbiAgZnVuY3Rpb24gbWFrZUdyaWQodGhlU2lkZVBhZCwgdGhlVG9wUGFkLCB3MiwgaDIpIHtcbiAgICBsZXQgYm90dG9tWEF4aXMgPSBheGlzQm90dG9tKHRpbWVTY2FsZSkudGlja1NpemUoLWgyICsgdGhlVG9wUGFkICsgY29uZi5ncmlkTGluZVN0YXJ0UGFkZGluZykudGlja0Zvcm1hdCh0aW1lRm9ybWF0KGRpYWdPYmouZGIuZ2V0QXhpc0Zvcm1hdCgpIHx8IGNvbmYuYXhpc0Zvcm1hdCB8fCBcIiVZLSVtLSVkXCIpKTtcbiAgICBjb25zdCByZVRpY2tJbnRlcnZhbCA9IC9eKFsxLTldXFxkKikobWludXRlfGhvdXJ8ZGF5fHdlZWt8bW9udGgpJC87XG4gICAgY29uc3QgcmVzdWx0VGlja0ludGVydmFsID0gcmVUaWNrSW50ZXJ2YWwuZXhlYyhcbiAgICAgIGRpYWdPYmouZGIuZ2V0VGlja0ludGVydmFsKCkgfHwgY29uZi50aWNrSW50ZXJ2YWxcbiAgICApO1xuICAgIGlmIChyZXN1bHRUaWNrSW50ZXJ2YWwgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGV2ZXJ5ID0gcmVzdWx0VGlja0ludGVydmFsWzFdO1xuICAgICAgY29uc3QgaW50ZXJ2YWwgPSByZXN1bHRUaWNrSW50ZXJ2YWxbMl07XG4gICAgICBzd2l0Y2ggKGludGVydmFsKSB7XG4gICAgICAgIGNhc2UgXCJtaW51dGVcIjpcbiAgICAgICAgICBib3R0b21YQXhpcy50aWNrcyh0aW1lTWludXRlLmV2ZXJ5KGV2ZXJ5KSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJob3VyXCI6XG4gICAgICAgICAgYm90dG9tWEF4aXMudGlja3ModGltZUhvdXIuZXZlcnkoZXZlcnkpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRheVwiOlxuICAgICAgICAgIGJvdHRvbVhBeGlzLnRpY2tzKHRpbWVEYXkuZXZlcnkoZXZlcnkpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIndlZWtcIjpcbiAgICAgICAgICBib3R0b21YQXhpcy50aWNrcyh0aW1lV2Vlay5ldmVyeShldmVyeSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibW9udGhcIjpcbiAgICAgICAgICBib3R0b21YQXhpcy50aWNrcyh0aW1lTW9udGguZXZlcnkoZXZlcnkpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgc3ZnLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZ3JpZFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgdGhlU2lkZVBhZCArIFwiLCBcIiArIChoMiAtIDUwKSArIFwiKVwiKS5jYWxsKGJvdHRvbVhBeGlzKS5zZWxlY3RBbGwoXCJ0ZXh0XCIpLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIikuYXR0cihcImZpbGxcIiwgXCIjMDAwXCIpLmF0dHIoXCJzdHJva2VcIiwgXCJub25lXCIpLmF0dHIoXCJmb250LXNpemVcIiwgMTApLmF0dHIoXCJkeVwiLCBcIjFlbVwiKTtcbiAgICBpZiAoZGlhZ09iai5kYi50b3BBeGlzRW5hYmxlZCgpIHx8IGNvbmYudG9wQXhpcykge1xuICAgICAgbGV0IHRvcFhBeGlzID0gYXhpc1RvcCh0aW1lU2NhbGUpLnRpY2tTaXplKC1oMiArIHRoZVRvcFBhZCArIGNvbmYuZ3JpZExpbmVTdGFydFBhZGRpbmcpLnRpY2tGb3JtYXQodGltZUZvcm1hdChkaWFnT2JqLmRiLmdldEF4aXNGb3JtYXQoKSB8fCBjb25mLmF4aXNGb3JtYXQgfHwgXCIlWS0lbS0lZFwiKSk7XG4gICAgICBpZiAocmVzdWx0VGlja0ludGVydmFsICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGV2ZXJ5ID0gcmVzdWx0VGlja0ludGVydmFsWzFdO1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHJlc3VsdFRpY2tJbnRlcnZhbFsyXTtcbiAgICAgICAgc3dpdGNoIChpbnRlcnZhbCkge1xuICAgICAgICAgIGNhc2UgXCJtaW51dGVcIjpcbiAgICAgICAgICAgIHRvcFhBeGlzLnRpY2tzKHRpbWVNaW51dGUuZXZlcnkoZXZlcnkpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJob3VyXCI6XG4gICAgICAgICAgICB0b3BYQXhpcy50aWNrcyh0aW1lSG91ci5ldmVyeShldmVyeSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcImRheVwiOlxuICAgICAgICAgICAgdG9wWEF4aXMudGlja3ModGltZURheS5ldmVyeShldmVyeSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIndlZWtcIjpcbiAgICAgICAgICAgIHRvcFhBeGlzLnRpY2tzKHRpbWVXZWVrLmV2ZXJ5KGV2ZXJ5KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwibW9udGhcIjpcbiAgICAgICAgICAgIHRvcFhBeGlzLnRpY2tzKHRpbWVNb250aC5ldmVyeShldmVyeSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN2Zy5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImdyaWRcIikuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIHRoZVNpZGVQYWQgKyBcIiwgXCIgKyB0aGVUb3BQYWQgKyBcIilcIikuY2FsbCh0b3BYQXhpcykuc2VsZWN0QWxsKFwidGV4dFwiKS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLmF0dHIoXCJmaWxsXCIsIFwiIzAwMFwiKS5hdHRyKFwic3Ryb2tlXCIsIFwibm9uZVwiKS5hdHRyKFwiZm9udC1zaXplXCIsIDEwKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gdmVydExhYmVscyh0aGVHYXAsIHRoZVRvcFBhZCkge1xuICAgIGxldCBwcmV2R2FwID0gMDtcbiAgICBjb25zdCBudW1PY2N1cmFuY2VzID0gT2JqZWN0LmtleXMoY2F0ZWdvcnlIZWlnaHRzKS5tYXAoKGQpID0+IFtkLCBjYXRlZ29yeUhlaWdodHNbZF1dKTtcbiAgICBzdmcuYXBwZW5kKFwiZ1wiKS5zZWxlY3RBbGwoXCJ0ZXh0XCIpLmRhdGEobnVtT2NjdXJhbmNlcykuZW50ZXIoKS5hcHBlbmQoZnVuY3Rpb24oZCkge1xuICAgICAgY29uc3Qgcm93cyA9IGRbMF0uc3BsaXQoY29tbW9uLmxpbmVCcmVha1JlZ2V4KTtcbiAgICAgIGNvbnN0IGR5ID0gLShyb3dzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IHN2Z0xhYmVsID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwidGV4dFwiKTtcbiAgICAgIHN2Z0xhYmVsLnNldEF0dHJpYnV0ZShcImR5XCIsIGR5ICsgXCJlbVwiKTtcbiAgICAgIGZvciAoY29uc3QgW2osIHJvd10gb2Ygcm93cy5lbnRyaWVzKCkpIHtcbiAgICAgICAgY29uc3QgdHNwYW4gPSBkb2MuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJ0c3BhblwiKTtcbiAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwiY2VudHJhbFwiKTtcbiAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwieFwiLCBcIjEwXCIpO1xuICAgICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgICB0c3Bhbi5zZXRBdHRyaWJ1dGUoXCJkeVwiLCBcIjFlbVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0c3Bhbi50ZXh0Q29udGVudCA9IHJvdztcbiAgICAgICAgc3ZnTGFiZWwuYXBwZW5kQ2hpbGQodHNwYW4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN2Z0xhYmVsO1xuICAgIH0pLmF0dHIoXCJ4XCIsIDEwKS5hdHRyKFwieVwiLCBmdW5jdGlvbihkLCBpKSB7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgICBwcmV2R2FwICs9IG51bU9jY3VyYW5jZXNbaSAtIDFdWzFdO1xuICAgICAgICAgIHJldHVybiBkWzFdICogdGhlR2FwIC8gMiArIHByZXZHYXAgKiB0aGVHYXAgKyB0aGVUb3BQYWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkWzFdICogdGhlR2FwIC8gMiArIHRoZVRvcFBhZDtcbiAgICAgIH1cbiAgICB9KS5hdHRyKFwiZm9udC1zaXplXCIsIGNvbmYuc2VjdGlvbkZvbnRTaXplKS5hdHRyKFwiY2xhc3NcIiwgZnVuY3Rpb24oZCkge1xuICAgICAgZm9yIChjb25zdCBbaSwgY2F0ZWdvcnldIG9mIGNhdGVnb3JpZXMuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChkWzBdID09PSBjYXRlZ29yeSkge1xuICAgICAgICAgIHJldHVybiBcInNlY3Rpb25UaXRsZSBzZWN0aW9uVGl0bGVcIiArIGkgJSBjb25mLm51bWJlclNlY3Rpb25TdHlsZXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBcInNlY3Rpb25UaXRsZVwiO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGRyYXdUb2RheSh0aGVTaWRlUGFkLCB0aGVUb3BQYWQsIHcyLCBoMikge1xuICAgIGNvbnN0IHRvZGF5TWFya2VyMiA9IGRpYWdPYmouZGIuZ2V0VG9kYXlNYXJrZXIoKTtcbiAgICBpZiAodG9kYXlNYXJrZXIyID09PSBcIm9mZlwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRvZGF5RyA9IHN2Zy5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcInRvZGF5XCIpO1xuICAgIGNvbnN0IHRvZGF5ID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdG9kYXlMaW5lID0gdG9kYXlHLmFwcGVuZChcImxpbmVcIik7XG4gICAgdG9kYXlMaW5lLmF0dHIoXCJ4MVwiLCB0aW1lU2NhbGUodG9kYXkpICsgdGhlU2lkZVBhZCkuYXR0cihcIngyXCIsIHRpbWVTY2FsZSh0b2RheSkgKyB0aGVTaWRlUGFkKS5hdHRyKFwieTFcIiwgY29uZi50aXRsZVRvcE1hcmdpbikuYXR0cihcInkyXCIsIGgyIC0gY29uZi50aXRsZVRvcE1hcmdpbikuYXR0cihcImNsYXNzXCIsIFwidG9kYXlcIik7XG4gICAgaWYgKHRvZGF5TWFya2VyMiAhPT0gXCJcIikge1xuICAgICAgdG9kYXlMaW5lLmF0dHIoXCJzdHlsZVwiLCB0b2RheU1hcmtlcjIucmVwbGFjZSgvLC9nLCBcIjtcIikpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBjaGVja1VuaXF1ZShhcnIpIHtcbiAgICBjb25zdCBoYXNoID0ge307XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcnIubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoYXNoLCBhcnJbaV0pKSB7XG4gICAgICAgIGhhc2hbYXJyW2ldXSA9IHRydWU7XG4gICAgICAgIHJlc3VsdC5wdXNoKGFycltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5jb25zdCBnYW50dFJlbmRlcmVyID0ge1xuICBzZXRDb25mLFxuICBkcmF3XG59O1xuY29uc3QgZ2V0U3R5bGVzID0gKG9wdGlvbnMpID0+IGBcbiAgLm1lcm1haWQtbWFpbi1mb250IHtcbiAgICBmb250LWZhbWlseTogXCJ0cmVidWNoZXQgbXNcIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpO1xuICB9XG4gIC5leGNsdWRlLXJhbmdlIHtcbiAgICBmaWxsOiAke29wdGlvbnMuZXhjbHVkZUJrZ0NvbG9yfTtcbiAgfVxuXG4gIC5zZWN0aW9uIHtcbiAgICBzdHJva2U6IG5vbmU7XG4gICAgb3BhY2l0eTogMC4yO1xuICB9XG5cbiAgLnNlY3Rpb24wIHtcbiAgICBmaWxsOiAke29wdGlvbnMuc2VjdGlvbkJrZ0NvbG9yfTtcbiAgfVxuXG4gIC5zZWN0aW9uMiB7XG4gICAgZmlsbDogJHtvcHRpb25zLnNlY3Rpb25Ca2dDb2xvcjJ9O1xuICB9XG5cbiAgLnNlY3Rpb24xLFxuICAuc2VjdGlvbjMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hbHRTZWN0aW9uQmtnQ29sb3J9O1xuICAgIG9wYWNpdHk6IDAuMjtcbiAgfVxuXG4gIC5zZWN0aW9uVGl0bGUwIHtcbiAgICBmaWxsOiAke29wdGlvbnMudGl0bGVDb2xvcn07XG4gIH1cblxuICAuc2VjdGlvblRpdGxlMSB7XG4gICAgZmlsbDogJHtvcHRpb25zLnRpdGxlQ29sb3J9O1xuICB9XG5cbiAgLnNlY3Rpb25UaXRsZTIge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuXG4gIC5zZWN0aW9uVGl0bGUzIHtcbiAgICBmaWxsOiAke29wdGlvbnMudGl0bGVDb2xvcn07XG4gIH1cblxuICAuc2VjdGlvblRpdGxlIHtcbiAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7XG4gICAgLy8gZm9udC1zaXplOiAke29wdGlvbnMuZ2FudHRGb250U2l6ZX07XG4gICAgLy8gdGV4dC1oZWlnaHQ6IDE0cHg7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG5cbiAgfVxuXG5cbiAgLyogR3JpZCBhbmQgYXhpcyAqL1xuXG4gIC5ncmlkIC50aWNrIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5ncmlkQ29sb3J9O1xuICAgIG9wYWNpdHk6IDAuODtcbiAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7XG4gICAgdGV4dCB7XG4gICAgICBmb250LWZhbWlseTogJHtvcHRpb25zLmZvbnRGYW1pbHl9O1xuICAgICAgZmlsbDogJHtvcHRpb25zLnRleHRDb2xvcn07XG4gICAgfVxuICB9XG5cbiAgLmdyaWQgcGF0aCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAwO1xuICB9XG5cblxuICAvKiBUb2RheSBsaW5lICovXG5cbiAgLnRvZGF5IHtcbiAgICBmaWxsOiBub25lO1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnRvZGF5TGluZUNvbG9yfTtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuXG5cbiAgLyogVGFzayBzdHlsaW5nICovXG5cbiAgLyogRGVmYXVsdCB0YXNrICovXG5cbiAgLnRhc2sge1xuICAgIHN0cm9rZS13aWR0aDogMjtcbiAgfVxuXG4gIC50YXNrVGV4dCB7XG4gICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgICBmb250LWZhbWlseTogJ3RyZWJ1Y2hldCBtcycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZXJtYWlkLWZvbnQtZmFtaWx5KTtcbiAgfVxuXG4gIC8vIC50YXNrVGV4dDpub3QoW2ZvbnQtc2l6ZV0pIHtcbiAgLy8gICBmb250LXNpemU6ICR7b3B0aW9ucy5nYW50dEZvbnRTaXplfTtcbiAgLy8gfVxuXG4gIC50YXNrVGV4dE91dHNpZGVSaWdodCB7XG4gICAgZmlsbDogJHtvcHRpb25zLnRhc2tUZXh0RGFya0NvbG9yfTtcbiAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7XG4gICAgLy8gZm9udC1zaXplOiAke29wdGlvbnMuZ2FudHRGb250U2l6ZX07XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG5cbiAgfVxuXG4gIC50YXNrVGV4dE91dHNpZGVMZWZ0IHtcbiAgICBmaWxsOiAke29wdGlvbnMudGFza1RleHREYXJrQ29sb3J9O1xuICAgIHRleHQtYW5jaG9yOiBlbmQ7XG4gICAgLy8gZm9udC1zaXplOiAke29wdGlvbnMuZ2FudHRGb250U2l6ZX07XG4gIH1cblxuICAvKiBTcGVjaWFsIGNhc2UgY2xpY2thYmxlICovXG4gIC50YXNrLmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIC50YXNrVGV4dC5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmaWxsOiAke29wdGlvbnMudGFza1RleHRDbGlja2FibGVDb2xvcn0gIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC50YXNrVGV4dE91dHNpZGVMZWZ0LmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dENsaWNrYWJsZUNvbG9yfSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLnRhc2tUZXh0T3V0c2lkZVJpZ2h0LmNsaWNrYWJsZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dENsaWNrYWJsZUNvbG9yfSAhaW1wb3J0YW50O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgLyogU3BlY2lmaWMgdGFzayBzZXR0aW5ncyBmb3IgdGhlIHNlY3Rpb25zKi9cblxuICAudGFza1RleHQwLFxuICAudGFza1RleHQxLFxuICAudGFza1RleHQyLFxuICAudGFza1RleHQzIHtcbiAgICBmaWxsOiAke29wdGlvbnMudGFza1RleHRDb2xvcn07XG4gIH1cblxuICAudGFzazAsXG4gIC50YXNrMSxcbiAgLnRhc2syLFxuICAudGFzazMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrQmtnQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnRhc2tCb3JkZXJDb2xvcn07XG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlMCxcbiAgLnRhc2tUZXh0T3V0c2lkZTJcbiAge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dE91dHNpZGVDb2xvcn07XG4gIH1cblxuICAudGFza1RleHRPdXRzaWRlMSxcbiAgLnRhc2tUZXh0T3V0c2lkZTMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dE91dHNpZGVDb2xvcn07XG4gIH1cblxuXG4gIC8qIEFjdGl2ZSB0YXNrICovXG5cbiAgLmFjdGl2ZTAsXG4gIC5hY3RpdmUxLFxuICAuYWN0aXZlMixcbiAgLmFjdGl2ZTMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hY3RpdmVUYXNrQmtnQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcn07XG4gIH1cblxuICAuYWN0aXZlVGV4dDAsXG4gIC5hY3RpdmVUZXh0MSxcbiAgLmFjdGl2ZVRleHQyLFxuICAuYWN0aXZlVGV4dDMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDtcbiAgfVxuXG5cbiAgLyogQ29tcGxldGVkIHRhc2sgKi9cblxuICAuZG9uZTAsXG4gIC5kb25lMSxcbiAgLmRvbmUyLFxuICAuZG9uZTMge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmRvbmVUYXNrQm9yZGVyQ29sb3J9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy5kb25lVGFza0JrZ0NvbG9yfTtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAuZG9uZVRleHQwLFxuICAuZG9uZVRleHQxLFxuICAuZG9uZVRleHQyLFxuICAuZG9uZVRleHQzIHtcbiAgICBmaWxsOiAke29wdGlvbnMudGFza1RleHREYXJrQ29sb3J9ICFpbXBvcnRhbnQ7XG4gIH1cblxuXG4gIC8qIFRhc2tzIG9uIHRoZSBjcml0aWNhbCBsaW5lICovXG5cbiAgLmNyaXQwLFxuICAuY3JpdDEsXG4gIC5jcml0MixcbiAgLmNyaXQzIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5jcml0Qm9yZGVyQ29sb3J9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy5jcml0QmtnQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogMjtcbiAgfVxuXG4gIC5hY3RpdmVDcml0MCxcbiAgLmFjdGl2ZUNyaXQxLFxuICAuYWN0aXZlQ3JpdDIsXG4gIC5hY3RpdmVDcml0MyB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMuY3JpdEJvcmRlckNvbG9yfTtcbiAgICBmaWxsOiAke29wdGlvbnMuYWN0aXZlVGFza0JrZ0NvbG9yfTtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cblxuICAuZG9uZUNyaXQwLFxuICAuZG9uZUNyaXQxLFxuICAuZG9uZUNyaXQyLFxuICAuZG9uZUNyaXQzIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5jcml0Qm9yZGVyQ29sb3J9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy5kb25lVGFza0JrZ0NvbG9yfTtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlcztcbiAgfVxuXG4gIC5taWxlc3RvbmUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSBzY2FsZSgwLjgsMC44KTtcbiAgfVxuXG4gIC5taWxlc3RvbmVUZXh0IHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIH1cbiAgLmRvbmVDcml0VGV4dDAsXG4gIC5kb25lQ3JpdFRleHQxLFxuICAuZG9uZUNyaXRUZXh0MixcbiAgLmRvbmVDcml0VGV4dDMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDtcbiAgfVxuXG4gIC5hY3RpdmVDcml0VGV4dDAsXG4gIC5hY3RpdmVDcml0VGV4dDEsXG4gIC5hY3RpdmVDcml0VGV4dDIsXG4gIC5hY3RpdmVDcml0VGV4dDMge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDtcbiAgfVxuXG4gIC50aXRsZVRleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZpbGw6ICR7b3B0aW9ucy50ZXh0Q29sb3J9ICAgIDtcbiAgICBmb250LWZhbWlseTogJ3RyZWJ1Y2hldCBtcycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZXJtYWlkLWZvbnQtZmFtaWx5KTtcbiAgfVxuYDtcbmNvbnN0IGdhbnR0U3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgcGFyc2VyOiBnYW50dFBhcnNlcixcbiAgZGI6IGdhbnR0RGIsXG4gIHJlbmRlcmVyOiBnYW50dFJlbmRlcmVyLFxuICBzdHlsZXM6IGdhbnR0U3R5bGVzXG59O1xuZXhwb3J0IHtcbiAgZGlhZ3JhbVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/ganttDiagram-7ce12d6b.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/gitGraphDiagram-1e960c50.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/gitGraphDiagram-1e960c50.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 7], $V2 = [1, 5], $V3 = [1, 9], $V4 = [1, 6], $V5 = [2, 6], $V6 = [1, 16], $V7 = [6, 8, 14, 20, 22, 24, 25, 27, 29, 32, 37, 40, 50, 55], $V8 = [8, 14, 20, 22, 24, 25, 27, 29, 32, 37, 40], $V9 = [8, 13, 14, 20, 22, 24, 25, 27, 29, 32, 37, 40], $Va = [1, 26], $Vb = [6, 8, 14, 50, 55], $Vc = [8, 14, 55], $Vd = [1, 53], $Ve = [1, 52], $Vf = [8, 14, 30, 33, 35, 38, 55], $Vg = [1, 67], $Vh = [1, 68], $Vi = [1, 69], $Vj = [8, 14, 33, 35, 42, 55];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"directive\": 5, \"GG\": 6, \"document\": 7, \"EOF\": 8, \":\": 9, \"DIR\": 10, \"options\": 11, \"body\": 12, \"OPT\": 13, \"NL\": 14, \"line\": 15, \"statement\": 16, \"commitStatement\": 17, \"mergeStatement\": 18, \"cherryPickStatement\": 19, \"acc_title\": 20, \"acc_title_value\": 21, \"acc_descr\": 22, \"acc_descr_value\": 23, \"acc_descr_multiline_value\": 24, \"section\": 25, \"branchStatement\": 26, \"CHECKOUT\": 27, \"ref\": 28, \"BRANCH\": 29, \"ORDER\": 30, \"NUM\": 31, \"CHERRY_PICK\": 32, \"COMMIT_ID\": 33, \"STR\": 34, \"COMMIT_TAG\": 35, \"EMPTYSTR\": 36, \"MERGE\": 37, \"COMMIT_TYPE\": 38, \"commitType\": 39, \"COMMIT\": 40, \"commit_arg\": 41, \"COMMIT_MSG\": 42, \"NORMAL\": 43, \"REVERSE\": 44, \"HIGHLIGHT\": 45, \"openDirective\": 46, \"typeDirective\": 47, \"closeDirective\": 48, \"argDirective\": 49, \"open_directive\": 50, \"type_directive\": 51, \"arg_directive\": 52, \"close_directive\": 53, \"ID\": 54, \";\": 55, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"GG\", 8: \"EOF\", 9: \":\", 10: \"DIR\", 13: \"OPT\", 14: \"NL\", 20: \"acc_title\", 21: \"acc_title_value\", 22: \"acc_descr\", 23: \"acc_descr_value\", 24: \"acc_descr_multiline_value\", 25: \"section\", 27: \"CHECKOUT\", 29: \"BRANCH\", 30: \"ORDER\", 31: \"NUM\", 32: \"CHERRY_PICK\", 33: \"COMMIT_ID\", 34: \"STR\", 35: \"COMMIT_TAG\", 36: \"EMPTYSTR\", 37: \"MERGE\", 38: \"COMMIT_TYPE\", 40: \"COMMIT\", 42: \"COMMIT_MSG\", 43: \"NORMAL\", 44: \"REVERSE\", 45: \"HIGHLIGHT\", 50: \"open_directive\", 51: \"type_directive\", 52: \"arg_directive\", 53: \"close_directive\", 54: \"ID\", 55: \";\" },\n productions_: [0, [3, 2], [3, 2], [3, 3], [3, 4], [3, 5], [7, 0], [7, 2], [11, 2], [11, 1], [12, 0], [12, 2], [15, 2], [15, 1], [16, 1], [16, 1], [16, 1], [16, 2], [16, 2], [16, 1], [16, 1], [16, 1], [16, 2], [26, 2], [26, 4], [19, 3], [19, 5], [19, 5], [19, 5], [19, 5], [18, 2], [18, 4], [18, 4], [18, 4], [18, 6], [18, 6], [18, 6], [18, 6], [18, 6], [18, 6], [18, 8], [18, 8], [18, 8], [18, 8], [18, 8], [18, 8], [17, 2], [17, 3], [17, 3], [17, 5], [17, 5], [17, 3], [17, 5], [17, 5], [17, 5], [17, 5], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 3], [17, 5], [17, 5], [17, 5], [17, 5], [17, 5], [17, 5], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 7], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [17, 9], [41, 0], [41, 1], [39, 1], [39, 1], [39, 1], [5, 3], [5, 5], [46, 1], [47, 1], [49, 1], [48, 1], [28, 1], [28, 1], [4, 1], [4, 1], [4, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n return $$[$0];\n case 4:\n return $$[$0 - 1];\n case 5:\n yy.setDirection($$[$0 - 3]);\n return $$[$0 - 1];\n case 7:\n yy.setOptions($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 8:\n $$[$0 - 1] += $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 10:\n this.$ = [];\n break;\n case 11:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 12:\n this.$ = $$[$0 - 1];\n break;\n case 17:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 18:\n case 19:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 20:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 22:\n yy.checkout($$[$0]);\n break;\n case 23:\n yy.branch($$[$0]);\n break;\n case 24:\n yy.branch($$[$0 - 2], $$[$0]);\n break;\n case 25:\n yy.cherryPick($$[$0], \"\", void 0);\n break;\n case 26:\n yy.cherryPick($$[$0 - 2], \"\", $$[$0]);\n break;\n case 27:\n case 29:\n yy.cherryPick($$[$0 - 2], \"\", \"\");\n break;\n case 28:\n yy.cherryPick($$[$0], \"\", $$[$0 - 2]);\n break;\n case 30:\n yy.merge($$[$0], \"\", \"\", \"\");\n break;\n case 31:\n yy.merge($$[$0 - 2], $$[$0], \"\", \"\");\n break;\n case 32:\n yy.merge($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 33:\n yy.merge($$[$0 - 2], \"\", \"\", $$[$0]);\n break;\n case 34:\n yy.merge($$[$0 - 4], $$[$0], \"\", $$[$0 - 2]);\n break;\n case 35:\n yy.merge($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 36:\n yy.merge($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 37:\n yy.merge($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 38:\n yy.merge($$[$0 - 4], $$[$0 - 2], \"\", $$[$0]);\n break;\n case 39:\n yy.merge($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 40:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 41:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 42:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 43:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 44:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 45:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 46:\n yy.commit($$[$0]);\n break;\n case 47:\n yy.commit(\"\", \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 48:\n yy.commit(\"\", \"\", $$[$0], \"\");\n break;\n case 49:\n yy.commit(\"\", \"\", $$[$0], $$[$0 - 2]);\n break;\n case 50:\n yy.commit(\"\", \"\", $$[$0 - 2], $$[$0]);\n break;\n case 51:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 52:\n yy.commit(\"\", $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 53:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 54:\n yy.commit(\"\", $$[$0 - 2], $$[$0], \"\");\n break;\n case 55:\n yy.commit(\"\", $$[$0], $$[$0 - 2], \"\");\n break;\n case 56:\n yy.commit(\"\", $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 57:\n yy.commit(\"\", $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 58:\n yy.commit(\"\", $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 59:\n yy.commit(\"\", $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 60:\n yy.commit(\"\", $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 61:\n yy.commit(\"\", $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 62:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, \"\");\n break;\n case 63:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 64:\n yy.commit($$[$0 - 2], \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 65:\n yy.commit($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 66:\n yy.commit($$[$0], \"\", $$[$0 - 2], \"\");\n break;\n case 67:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, \"\");\n break;\n case 68:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 69:\n yy.commit($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 70:\n yy.commit($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 71:\n yy.commit($$[$0 - 2], \"\", $$[$0 - 4], $$[$0]);\n break;\n case 72:\n yy.commit($$[$0], \"\", $$[$0 - 4], $$[$0 - 2]);\n break;\n case 73:\n yy.commit($$[$0], \"\", $$[$0 - 2], $$[$0 - 4]);\n break;\n case 74:\n yy.commit($$[$0 - 2], \"\", $$[$0], $$[$0 - 4]);\n break;\n case 75:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 76:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 77:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], \"\");\n break;\n case 78:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], \"\");\n break;\n case 79:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], \"\");\n break;\n case 80:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], \"\");\n break;\n case 81:\n yy.commit($$[$0 - 4], $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 82:\n yy.commit($$[$0 - 4], $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 83:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 84:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 85:\n yy.commit($$[$0], $$[$0 - 4], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 86:\n yy.commit($$[$0 - 2], $$[$0 - 4], yy.commitType.NORMAL, $$[$0]);\n break;\n case 87:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 88:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 89:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 90:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 91:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 92:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 93:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0 - 2], $$[$0]);\n break;\n case 94:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0], $$[$0 - 2]);\n break;\n case 95:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0 - 4], $$[$0]);\n break;\n case 96:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 97:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0], $$[$0 - 4]);\n break;\n case 98:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 99:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 100:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], $$[$0 - 6]);\n break;\n case 101:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 102:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 103:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], $$[$0 - 6]);\n break;\n case 104:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 105:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0 - 6], $$[$0]);\n break;\n case 106:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 107:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 108:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 109:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0 - 6], $$[$0]);\n break;\n case 110:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 111:\n this.$ = \"\";\n break;\n case 112:\n this.$ = $$[$0];\n break;\n case 113:\n this.$ = yy.commitType.NORMAL;\n break;\n case 114:\n this.$ = yy.commitType.REVERSE;\n break;\n case 115:\n this.$ = yy.commitType.HIGHLIGHT;\n break;\n case 118:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 119:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 120:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 121:\n yy.parseDirective(\"}%%\", \"close_directive\", \"gitGraph\");\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: $V0, 8: $V1, 14: $V2, 46: 8, 50: $V3, 55: $V4 }, { 1: [3] }, { 3: 10, 4: 2, 5: 3, 6: $V0, 8: $V1, 14: $V2, 46: 8, 50: $V3, 55: $V4 }, { 3: 11, 4: 2, 5: 3, 6: $V0, 8: $V1, 14: $V2, 46: 8, 50: $V3, 55: $V4 }, { 7: 12, 8: $V5, 9: [1, 13], 10: [1, 14], 11: 15, 14: $V6 }, o($V7, [2, 124]), o($V7, [2, 125]), o($V7, [2, 126]), { 47: 17, 51: [1, 18] }, { 51: [2, 118] }, { 1: [2, 1] }, { 1: [2, 2] }, { 8: [1, 19] }, { 7: 20, 8: $V5, 11: 15, 14: $V6 }, { 9: [1, 21] }, o($V8, [2, 10], { 12: 22, 13: [1, 23] }), o($V9, [2, 9]), { 9: [1, 25], 48: 24, 53: $Va }, o([9, 53], [2, 119]), { 1: [2, 3] }, { 8: [1, 27] }, { 7: 28, 8: $V5, 11: 15, 14: $V6 }, { 8: [2, 7], 14: [1, 31], 15: 29, 16: 30, 17: 32, 18: 33, 19: 34, 20: [1, 35], 22: [1, 36], 24: [1, 37], 25: [1, 38], 26: 39, 27: [1, 40], 29: [1, 44], 32: [1, 43], 37: [1, 42], 40: [1, 41] }, o($V9, [2, 8]), o($Vb, [2, 116]), { 49: 45, 52: [1, 46] }, o($Vb, [2, 121]), { 1: [2, 4] }, { 8: [1, 47] }, o($V8, [2, 11]), { 4: 48, 8: $V1, 14: $V2, 55: $V4 }, o($V8, [2, 13]), o($Vc, [2, 14]), o($Vc, [2, 15]), o($Vc, [2, 16]), { 21: [1, 49] }, { 23: [1, 50] }, o($Vc, [2, 19]), o($Vc, [2, 20]), o($Vc, [2, 21]), { 28: 51, 34: $Vd, 54: $Ve }, o($Vc, [2, 111], { 41: 54, 33: [1, 57], 34: [1, 59], 35: [1, 55], 38: [1, 56], 42: [1, 58] }), { 28: 60, 34: $Vd, 54: $Ve }, { 33: [1, 61], 35: [1, 62] }, { 28: 63, 34: $Vd, 54: $Ve }, { 48: 64, 53: $Va }, { 53: [2, 120] }, { 1: [2, 5] }, o($V8, [2, 12]), o($Vc, [2, 17]), o($Vc, [2, 18]), o($Vc, [2, 22]), o($Vf, [2, 122]), o($Vf, [2, 123]), o($Vc, [2, 46]), { 34: [1, 65] }, { 39: 66, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 70] }, { 34: [1, 71] }, o($Vc, [2, 112]), o($Vc, [2, 30], { 33: [1, 72], 35: [1, 74], 38: [1, 73] }), { 34: [1, 75] }, { 34: [1, 76], 36: [1, 77] }, o($Vc, [2, 23], { 30: [1, 78] }), o($Vb, [2, 117]), o($Vc, [2, 47], { 33: [1, 80], 38: [1, 79], 42: [1, 81] }), o($Vc, [2, 48], { 33: [1, 83], 35: [1, 82], 42: [1, 84] }), o($Vj, [2, 113]), o($Vj, [2, 114]), o($Vj, [2, 115]), o($Vc, [2, 51], { 35: [1, 85], 38: [1, 86], 42: [1, 87] }), o($Vc, [2, 62], { 33: [1, 90], 35: [1, 88], 38: [1, 89] }), { 34: [1, 91] }, { 39: 92, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 93] }, o($Vc, [2, 25], { 35: [1, 94] }), { 33: [1, 95] }, { 33: [1, 96] }, { 31: [1, 97] }, { 39: 98, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 99] }, { 34: [1, 100] }, { 34: [1, 101] }, { 34: [1, 102] }, { 34: [1, 103] }, { 34: [1, 104] }, { 39: 105, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 106] }, { 34: [1, 107] }, { 39: 108, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 109] }, o($Vc, [2, 31], { 35: [1, 111], 38: [1, 110] }), o($Vc, [2, 32], { 33: [1, 113], 35: [1, 112] }), o($Vc, [2, 33], { 33: [1, 114], 38: [1, 115] }), { 34: [1, 116], 36: [1, 117] }, { 34: [1, 118] }, { 34: [1, 119] }, o($Vc, [2, 24]), o($Vc, [2, 49], { 33: [1, 120], 42: [1, 121] }), o($Vc, [2, 53], { 38: [1, 122], 42: [1, 123] }), o($Vc, [2, 63], { 33: [1, 125], 38: [1, 124] }), o($Vc, [2, 50], { 33: [1, 126], 42: [1, 127] }), o($Vc, [2, 55], { 35: [1, 128], 42: [1, 129] }), o($Vc, [2, 66], { 33: [1, 131], 35: [1, 130] }), o($Vc, [2, 52], { 38: [1, 132], 42: [1, 133] }), o($Vc, [2, 54], { 35: [1, 134], 42: [1, 135] }), o($Vc, [2, 67], { 35: [1, 137], 38: [1, 136] }), o($Vc, [2, 64], { 33: [1, 139], 38: [1, 138] }), o($Vc, [2, 65], { 33: [1, 141], 35: [1, 140] }), o($Vc, [2, 68], { 35: [1, 143], 38: [1, 142] }), { 39: 144, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 145] }, { 34: [1, 146] }, { 34: [1, 147] }, { 34: [1, 148] }, { 39: 149, 43: $Vg, 44: $Vh, 45: $Vi }, o($Vc, [2, 26]), o($Vc, [2, 27]), o($Vc, [2, 28]), o($Vc, [2, 29]), { 34: [1, 150] }, { 34: [1, 151] }, { 39: 152, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 153] }, { 39: 154, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 155] }, { 34: [1, 156] }, { 34: [1, 157] }, { 34: [1, 158] }, { 34: [1, 159] }, { 34: [1, 160] }, { 34: [1, 161] }, { 39: 162, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 163] }, { 34: [1, 164] }, { 34: [1, 165] }, { 39: 166, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 167] }, { 39: 168, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 169] }, { 34: [1, 170] }, { 34: [1, 171] }, { 39: 172, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 173] }, o($Vc, [2, 37], { 35: [1, 174] }), o($Vc, [2, 38], { 38: [1, 175] }), o($Vc, [2, 36], { 33: [1, 176] }), o($Vc, [2, 39], { 35: [1, 177] }), o($Vc, [2, 34], { 38: [1, 178] }), o($Vc, [2, 35], { 33: [1, 179] }), o($Vc, [2, 60], { 42: [1, 180] }), o($Vc, [2, 73], { 33: [1, 181] }), o($Vc, [2, 61], { 42: [1, 182] }), o($Vc, [2, 84], { 38: [1, 183] }), o($Vc, [2, 74], { 33: [1, 184] }), o($Vc, [2, 83], { 38: [1, 185] }), o($Vc, [2, 59], { 42: [1, 186] }), o($Vc, [2, 72], { 33: [1, 187] }), o($Vc, [2, 58], { 42: [1, 188] }), o($Vc, [2, 78], { 35: [1, 189] }), o($Vc, [2, 71], { 33: [1, 190] }), o($Vc, [2, 77], { 35: [1, 191] }), o($Vc, [2, 57], { 42: [1, 192] }), o($Vc, [2, 85], { 38: [1, 193] }), o($Vc, [2, 56], { 42: [1, 194] }), o($Vc, [2, 79], { 35: [1, 195] }), o($Vc, [2, 80], { 35: [1, 196] }), o($Vc, [2, 86], { 38: [1, 197] }), o($Vc, [2, 70], { 33: [1, 198] }), o($Vc, [2, 81], { 38: [1, 199] }), o($Vc, [2, 69], { 33: [1, 200] }), o($Vc, [2, 75], { 35: [1, 201] }), o($Vc, [2, 76], { 35: [1, 202] }), o($Vc, [2, 82], { 38: [1, 203] }), { 34: [1, 204] }, { 39: 205, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 206] }, { 34: [1, 207] }, { 39: 208, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 209] }, { 34: [1, 210] }, { 34: [1, 211] }, { 34: [1, 212] }, { 39: 213, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 214] }, { 39: 215, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 216] }, { 34: [1, 217] }, { 34: [1, 218] }, { 34: [1, 219] }, { 34: [1, 220] }, { 34: [1, 221] }, { 34: [1, 222] }, { 39: 223, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 224] }, { 34: [1, 225] }, { 34: [1, 226] }, { 39: 227, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 228] }, { 39: 229, 43: $Vg, 44: $Vh, 45: $Vi }, { 34: [1, 230] }, { 34: [1, 231] }, { 34: [1, 232] }, { 39: 233, 43: $Vg, 44: $Vh, 45: $Vi }, o($Vc, [2, 40]), o($Vc, [2, 42]), o($Vc, [2, 41]), o($Vc, [2, 43]), o($Vc, [2, 45]), o($Vc, [2, 44]), o($Vc, [2, 101]), o($Vc, [2, 102]), o($Vc, [2, 99]), o($Vc, [2, 100]), o($Vc, [2, 104]), o($Vc, [2, 103]), o($Vc, [2, 108]), o($Vc, [2, 107]), o($Vc, [2, 106]), o($Vc, [2, 105]), o($Vc, [2, 110]), o($Vc, [2, 109]), o($Vc, [2, 98]), o($Vc, [2, 97]), o($Vc, [2, 96]), o($Vc, [2, 95]), o($Vc, [2, 93]), o($Vc, [2, 94]), o($Vc, [2, 92]), o($Vc, [2, 91]), o($Vc, [2, 90]), o($Vc, [2, 89]), o($Vc, [2, 87]), o($Vc, [2, 88])],\n defaultActions: { 9: [2, 118], 10: [2, 1], 11: [2, 2], 19: [2, 3], 27: [2, 4], 46: [2, 120], 47: [2, 5] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 50;\n case 1:\n this.begin(\"type_directive\");\n return 51;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 9;\n case 3:\n this.popState();\n this.popState();\n return 53;\n case 4:\n return 52;\n case 5:\n this.begin(\"acc_title\");\n return 20;\n case 6:\n this.popState();\n return \"acc_title_value\";\n case 7:\n this.begin(\"acc_descr\");\n return 22;\n case 8:\n this.popState();\n return \"acc_descr_value\";\n case 9:\n this.begin(\"acc_descr_multiline\");\n break;\n case 10:\n this.popState();\n break;\n case 11:\n return \"acc_descr_multiline_value\";\n case 12:\n return 14;\n case 13:\n break;\n case 14:\n break;\n case 15:\n return 6;\n case 16:\n return 40;\n case 17:\n return 33;\n case 18:\n return 38;\n case 19:\n return 42;\n case 20:\n return 43;\n case 21:\n return 44;\n case 22:\n return 45;\n case 23:\n return 35;\n case 24:\n return 29;\n case 25:\n return 30;\n case 26:\n return 37;\n case 27:\n return 32;\n case 28:\n return 27;\n case 29:\n return 10;\n case 30:\n return 10;\n case 31:\n return 9;\n case 32:\n return \"CARET\";\n case 33:\n this.begin(\"options\");\n break;\n case 34:\n this.popState();\n break;\n case 35:\n return 13;\n case 36:\n return 36;\n case 37:\n this.begin(\"string\");\n break;\n case 38:\n this.popState();\n break;\n case 39:\n return 34;\n case 40:\n return 31;\n case 41:\n return 54;\n case 42:\n return 8;\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:gitGraph\\b)/i, /^(?:commit(?=\\s|$))/i, /^(?:id:)/i, /^(?:type:)/i, /^(?:msg:)/i, /^(?:NORMAL\\b)/i, /^(?:REVERSE\\b)/i, /^(?:HIGHLIGHT\\b)/i, /^(?:tag:)/i, /^(?:branch(?=\\s|$))/i, /^(?:order:)/i, /^(?:merge(?=\\s|$))/i, /^(?:cherry-pick(?=\\s|$))/i, /^(?:checkout(?=\\s|$))/i, /^(?:LR\\b)/i, /^(?:BT\\b)/i, /^(?::)/i, /^(?:\\^)/i, /^(?:options\\r?\\n)/i, /^(?:[ \\r\\n\\t]+end\\b)/i, /^(?:[\\s\\S]+(?=[ \\r\\n\\t]+end))/i, /^(?:[\"][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[0-9]+(?=\\s|$))/i, /^(?:\\w([-\\./\\w]*[-\\w])?)/i, /^(?:$)/i, /^(?:\\s+)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [10, 11], \"inclusive\": false }, \"acc_descr\": { \"rules\": [8], \"inclusive\": false }, \"acc_title\": { \"rules\": [6], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"options\": { \"rules\": [34, 35], \"inclusive\": false }, \"string\": { \"rules\": [38, 39], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 7, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 40, 41, 42, 43], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst gitGraphParser = parser;\nlet mainBranchName = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().gitGraph.mainBranchName;\nlet mainBranchOrder = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().gitGraph.mainBranchOrder;\nlet commits = {};\nlet head = null;\nlet branchesConfig = {};\nbranchesConfig[mainBranchName] = { name: mainBranchName, order: mainBranchOrder };\nlet branches = {};\nbranches[mainBranchName] = head;\nlet curBranch = mainBranchName;\nlet direction = \"LR\";\nlet seq = 0;\nfunction getId() {\n return (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.y)({ length: 7 });\n}\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\nconst setDirection = function(dir) {\n direction = dir;\n};\nlet options = {};\nconst setOptions = function(rawOptString) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"options str\", rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while parsing gitGraph options\", e.message);\n }\n};\nconst getOptions = function() {\n return options;\n};\nconst commit = function(msg, id, type, tag) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Entering commit:\", msg, id, type, tag);\n id = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(id, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n msg = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(msg, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n tag = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(tag, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n const commit2 = {\n id: id ? id : seq + \"-\" + getId(),\n message: msg,\n seq: seq++,\n type: type ? type : commitType$1.NORMAL,\n tag: tag ? tag : \"\",\n parents: head == null ? [] : [head.id],\n branch: curBranch\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"in pushCommit \" + commit2.id);\n};\nconst branch = function(name, order) {\n name = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(name, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n if (branches[name] === void 0) {\n branches[name] = head != null ? head.id : null;\n branchesConfig[name] = { name, order: order ? parseInt(order, 10) : null };\n checkout(name);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"in createBranch\");\n } else {\n let error = new Error(\n 'Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ' + name + '\")'\n );\n error.hash = {\n text: \"branch \" + name,\n token: \"branch \" + name,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"']\n };\n throw error;\n }\n};\nconst merge = function(otherBranch, custom_id, override_type, custom_tag) {\n otherBranch = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(otherBranch, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n custom_id = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(custom_id, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (curBranch === otherBranch) {\n let error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"commit\"]\n };\n throw error;\n } else if (branches[otherBranch] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch \" + otherBranch]\n };\n throw error;\n } else if (otherCommit === void 0 || !otherCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"commit\"']\n };\n throw error;\n } else if (currentCommit === otherCommit) {\n let error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (custom_id && commits[custom_id] !== void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + custom_id + \" already exists, use different custom Id\"\n );\n error.hash = {\n text: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n token: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\n \"merge \" + otherBranch + \" \" + custom_id + \"_UNIQUE \" + override_type + \" \" + custom_tag\n ]\n };\n throw error;\n }\n const commit2 = {\n id: custom_id ? custom_id : seq + \"-\" + getId(),\n message: \"merged branch \" + otherBranch + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, branches[otherBranch]],\n branch: curBranch,\n type: commitType$1.MERGE,\n customType: override_type,\n customId: custom_id ? true : false,\n tag: custom_tag ? custom_tag : \"\"\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(branches);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"in mergeBranch\");\n};\nconst cherryPick = function(sourceId, targetId, tag) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Entering cherryPick:\", sourceId, targetId, tag);\n sourceId = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(sourceId, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n targetId = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(targetId, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n tag = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(tag, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n if (!sourceId || commits[sourceId] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n let sourceCommit = commits[sourceId];\n let sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType$1.MERGE) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit should not be a merge commit'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n if (!targetId || commits[targetId] === void 0) {\n if (sourceCommitBranch === curBranch) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = commits[branches[curBranch]];\n if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"cherry-pick\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: seq + \"-\" + getId(),\n message: \"cherry-picked \" + sourceCommit + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, sourceCommit.id],\n branch: curBranch,\n type: commitType$1.CHERRY_PICK,\n tag: tag ?? \"cherry-pick:\" + sourceCommit.id\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(branches);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"in cherryPick\");\n }\n};\nconst checkout = function(branch2) {\n branch2 = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(branch2, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n if (branches[branch2] === void 0) {\n let error = new Error(\n 'Trying to checkout branch which is not yet created. (Help try using \"branch ' + branch2 + '\")'\n );\n error.hash = {\n text: \"checkout \" + branch2,\n token: \"checkout \" + branch2,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"branch ' + branch2 + '\"']\n };\n throw error;\n } else {\n curBranch = branch2;\n const id = branches[curBranch];\n head = commits[id];\n }\n};\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (let branch2 in branches) {\n if (branches[branch2] === commit2.id) {\n label.push(branch2);\n }\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2) {\n const newCommit = commits[commit2.parents[0]];\n upsert(commitArr, commit2, newCommit);\n commitArr.push(commits[commit2.parents[1]]);\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n const nextCommit = commits[commit2.parents];\n upsert(commitArr, commit2, nextCommit);\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\nconst prettyPrint = function() {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\nconst clear$1 = function() {\n commits = {};\n head = null;\n let mainBranch = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().gitGraph.mainBranchName;\n let mainBranchOrder2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().gitGraph.mainBranchOrder;\n branches = {};\n branches[mainBranch] = null;\n branchesConfig = {};\n branchesConfig[mainBranch] = { name: mainBranch, order: mainBranchOrder2 };\n curBranch = mainBranch;\n seq = 0;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst getBranchesAsObjArray = function() {\n const branchesArray = Object.values(branchesConfig).map((branchConfig, i) => {\n if (branchConfig.order !== null) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`, 10)\n };\n }).sort((a, b) => a.order - b.order).map(({ name }) => ({ name }));\n return branchesArray;\n};\nconst getBranches = function() {\n return branches;\n};\nconst getCommits = function() {\n return commits;\n};\nconst getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nconst getCurrentBranch = function() {\n return curBranch;\n};\nconst getDirection = function() {\n return direction;\n};\nconst getHead = function() {\n return head;\n};\nconst commitType$1 = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst gitGraphDb = {\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().gitGraph,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear$1,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t,\n commitType: commitType$1\n};\nlet allCommitsDict = {};\nconst commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst THEME_COLOR_LIMIT = 8;\nlet branchPos = {};\nlet commitPos = {};\nlet lanes = [];\nlet maxPos = 0;\nconst clear = () => {\n branchPos = {};\n commitPos = {};\n allCommitsDict = {};\n maxPos = 0;\n lanes = [];\n};\nconst drawText = (txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n let rows = [];\n if (typeof txt === \"string\") {\n rows = txt.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(txt)) {\n rows = txt;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n};\nconst drawCommits = (svg, commits2, modifyGraph) => {\n const gitGraphConfig = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.z)().gitGraph;\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = 0;\n const keys = Object.keys(commits2);\n const sortedKeys = keys.sort((a, b) => {\n return commits2[a].seq - commits2[b].seq;\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits2[key];\n const y = branchPos[commit2.branch].pos;\n const x = pos + 10;\n if (modifyGraph) {\n let typeClass;\n let commitSymbolType = commit2.customType !== void 0 && commit2.customType !== \"\" ? commit2.customType : commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n typeClass = \"commit-normal\";\n break;\n case commitType.REVERSE:\n typeClass = \"commit-reverse\";\n break;\n case commitType.HIGHLIGHT:\n typeClass = \"commit-highlight\";\n break;\n case commitType.MERGE:\n typeClass = \"commit-merge\";\n break;\n case commitType.CHERRY_PICK:\n typeClass = \"commit-cherry-pick\";\n break;\n default:\n typeClass = \"commit-normal\";\n }\n if (commitSymbolType === commitType.HIGHLIGHT) {\n const circle = gBullets.append(\"rect\");\n circle.attr(\"x\", x - 10);\n circle.attr(\"y\", y - 10);\n circle.attr(\"height\", 20);\n circle.attr(\"width\", 20);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", x - 6).attr(\"y\", y - 6).attr(\"height\", 12).attr(\"width\", 12).attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", x).attr(\"cy\", y).attr(\"r\", 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x - 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x + 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x + 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x - 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", x);\n circle.attr(\"cy\", y);\n circle.attr(\"r\", commit2.type === commitType.MERGE ? 9 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", x);\n circle2.attr(\"cy\", y);\n circle2.attr(\"r\", 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n cross.attr(\"d\", `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n }\n }\n commitPos[commit2.id] = { x: pos + 10, y };\n if (modifyGraph) {\n const px = 4;\n const py = 2;\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n let bbox = text.node().getBBox();\n labelBkg.attr(\"x\", pos + 10 - bbox.width / 2 - py).attr(\"y\", y + 13.5).attr(\"width\", bbox.width + 2 * py).attr(\"height\", bbox.height + 2 * py);\n text.attr(\"x\", pos + 10 - bbox.width / 2);\n if (gitGraphConfig.rotateCommitLabel) {\n let r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n let r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + y + \")\"\n );\n }\n }\n if (commit2.tag) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", y - 16).attr(\"class\", \"tag-label\").text(commit2.tag);\n let tagBbox = tag.node().getBBox();\n tag.attr(\"x\", pos + 10 - tagBbox.width / 2);\n const h2 = tagBbox.height / 2;\n const ly = y - 19.2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - tagBbox.width / 2 - px / 2},${ly + py}\n ${pos - tagBbox.width / 2 - px / 2},${ly - py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly + h2 + py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly + h2 + py}`\n );\n hole.attr(\"cx\", pos - tagBbox.width / 2 + px / 2).attr(\"cy\", ly).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n }\n }\n pos += 50;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\nconst hasOverlappingCommits = (commit1, commit2, allCommits) => {\n const keys = Object.keys(allCommits);\n const overlappingComits = keys.filter((key) => {\n return allCommits[key].branch === commit2.branch && allCommits[key].seq > commit1.seq && allCommits[key].seq < commit2.seq;\n });\n return overlappingComits.length > 0;\n};\nconst findLane = (y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n let ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n};\nconst drawArrow = (svg, commit1, commit2, allCommits) => {\n const p1 = commitPos[commit1.id];\n const p2 = commitPos[commit2.id];\n const overlappingCommits = hasOverlappingCommits(commit1, commit2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos[commit2.branch].index;\n let lineDef;\n if (overlappingCommits) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n colorClassNum = branchPos[commit2.branch].index;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n arc = \"A 20 20, 0, 0, 0,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit2.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n if (p1.y > p2.y) {\n arc = \"A 20 20, 0, 0, 0,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n if (p1.y === p2.y) {\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\"class\", \"arrow arrow\" + colorClassNum % THEME_COLOR_LIMIT);\n};\nconst drawArrows = (svg, commits2) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n Object.keys(commits2).forEach((key) => {\n const commit2 = commits2[key];\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits2[parent], commit2, commits2);\n });\n }\n });\n};\nconst drawBranches = (svg, branches2) => {\n const gitGraphConfig = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.z)().gitGraph;\n const g = svg.append(\"g\");\n branches2.forEach((branch2, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n const pos = branchPos[branch2.name].pos;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", pos);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", pos);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n lanes.push(pos);\n let name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\"rx\", 4).attr(\"ry\", 4).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 8).attr(\"width\", bbox.width + 18).attr(\"height\", bbox.height + 4);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) + \", \" + (pos - bbox.height / 2 - 1) + \")\"\n );\n bkg.attr(\"transform\", \"translate(-19, \" + (pos - bbox.height / 2) + \")\");\n });\n};\nconst draw = function(txt, id, ver, diagObj) {\n clear();\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.z)();\n const gitGraphConfig = conf.gitGraph;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n allCommitsDict = diagObj.db.getCommits();\n const branches2 = diagObj.db.getBranchesAsObjArray();\n let pos = 0;\n branches2.forEach((branch2, index) => {\n branchPos[branch2.name] = { pos, index };\n pos += 50 + (gitGraphConfig.rotateCommitLabel ? 40 : 0);\n });\n const diagram2 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(`[id=\"${id}\"]`);\n drawCommits(diagram2, allCommitsDict, false);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches2);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin,\n diagObj.db.getDiagramTitle()\n );\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.A)(\n void 0,\n diagram2,\n gitGraphConfig.diagramPadding,\n gitGraphConfig.useMaxWidth ?? conf.useMaxWidth\n );\n};\nconst gitGraphRenderer = {\n draw\n};\nconst getStyles = (options2) => `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(\n (i) => `\n .branch-label${i} { fill: ${options2[\"gitBranchLabel\" + i]}; }\n .commit${i} { stroke: ${options2[\"git\" + i]}; fill: ${options2[\"git\" + i]}; }\n .commit-highlight${i} { stroke: ${options2[\"gitInv\" + i]}; fill: ${options2[\"gitInv\" + i]}; }\n .label${i} { fill: ${options2[\"git\" + i]}; }\n .arrow${i} { stroke: ${options2[\"git\" + i]}; }\n `\n).join(\"\\n\")}\n\n .branch {\n stroke-width: 1;\n stroke: ${options2.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelColor};}\n .commit-label-bkg { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${options2.tagLabelFontSize}; fill: ${options2.tagLabelColor};}\n .tag-label-bkg { fill: ${options2.tagLabelBackground}; stroke: ${options2.tagLabelBorder}; }\n .tag-hole { fill: ${options2.textColor}; }\n\n .commit-merge {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n .commit-reverse {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options2.textColor};\n }\n`;\nconst gitGraphStyles = getStyles;\nconst diagram = {\n parser: gitGraphParser,\n db: gitGraphDb,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9naXRHcmFwaERpYWdyYW0tMWU5NjBjNTAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFnVDtBQUNwUjtBQUNUO0FBQ0o7QUFDa0I7QUFDZDtBQUNIO0FBQ2M7QUFDZDtBQUNjO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0IsZ0JBQWdCLEtBQUs7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMLFVBQVU7QUFDVixnQkFBZ0IsKzJCQUErMkIsZ0NBQWdDO0FBQy81QixrQkFBa0Isb2lCQUFvaUIsR0FBRztBQUN6akI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLG9FQUFvRSxJQUFJLFFBQVEsSUFBSSxxRUFBcUUsSUFBSSxxRUFBcUUsSUFBSSx5REFBeUQsMERBQTBELHFCQUFxQixJQUFJLGNBQWMsSUFBSSxXQUFXLElBQUksV0FBVyxJQUFJLFlBQVksSUFBSSxnQ0FBZ0MsSUFBSSxZQUFZLG9CQUFvQixxQkFBcUIscUJBQXFCLDZCQUE2QiwwQkFBMEIsV0FBVyxJQUFJLFlBQVksSUFBSSxnQ0FBZ0MsSUFBSSw2TEFBNkwsc0NBQXNDLHFCQUFxQixzQkFBc0IsV0FBVyxJQUFJLFlBQVkscUJBQXFCLGlDQUFpQyx3RUFBd0UsYUFBYSxJQUFJLGFBQWEsdURBQXVELDBCQUEwQixxQkFBcUIseUVBQXlFLEtBQUssMEJBQTBCLElBQUksMEJBQTBCLElBQUksMEJBQTBCLElBQUksaUJBQWlCLElBQUksY0FBYyxJQUFJLFdBQVcsNkhBQTZILGFBQWEsSUFBSSxtQ0FBbUMsSUFBSSxhQUFhLElBQUksYUFBYSxzQ0FBc0MsdUNBQXVDLEtBQUssYUFBYSxJQUFJLDBCQUEwQixvQkFBb0IsYUFBYSx1Q0FBdUMsdUNBQXVDLHFCQUFxQix1Q0FBdUMsMkVBQTJFLHVDQUF1QyxxQkFBcUIsdUNBQXVDLEtBQUssYUFBYSxJQUFJLG1DQUFtQyxJQUFJLGFBQWEsb0JBQW9CLGFBQWEsS0FBSyxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEsSUFBSSxtQ0FBbUMsSUFBSSxhQUFhLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLG9DQUFvQyxJQUFJLGNBQWMsb0JBQW9CLDRCQUE0QixxQkFBcUIsNEJBQTRCLHFCQUFxQiw0QkFBNEIsS0FBSyw0QkFBNEIsSUFBSSxjQUFjLElBQUksY0FBYyxxQ0FBcUMsNEJBQTRCLHFCQUFxQiw0QkFBNEIscUJBQXFCLDRCQUE0QixxQkFBcUIsNEJBQTRCLHFCQUFxQiw0QkFBNEIscUJBQXFCLDRCQUE0QixxQkFBcUIsNEJBQTRCLHFCQUFxQiw0QkFBNEIscUJBQXFCLDRCQUE0QixxQkFBcUIsNEJBQTRCLHFCQUFxQiw0QkFBNEIscUJBQXFCLDRCQUE0QixLQUFLLG9DQUFvQyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0Msd0VBQXdFLGNBQWMsSUFBSSxjQUFjLElBQUksb0NBQW9DLElBQUksY0FBYyxJQUFJLG9DQUFvQyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksb0NBQW9DLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksb0NBQW9DLElBQUksY0FBYyxvQkFBb0IsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxxQkFBcUIsY0FBYyxLQUFLLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLG9DQUFvQyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksb0NBQW9DLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLG9DQUFvQyxJQUFJLGNBQWMsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLG9DQUFvQyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0MsSUFBSSxjQUFjLElBQUksY0FBYyxJQUFJLGNBQWMsSUFBSSxvQ0FBb0M7QUFDdnpMLHNCQUFzQix1RkFBdUY7QUFDN0c7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFP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QUFXO0FBQzFCO0FBQ0EsRUFBRSx5REFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsR0FBRztBQUNILG1CQUFtQiwwQ0FBTSxTQUFTLEdBQUc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwrREFBaUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQWlCO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLHVCQUF1QixLQUFLLFFBQVE7QUFDcEMsaUJBQWlCLEtBQUssVUFBVSxzQkFBc0IsUUFBUTtBQUM5RCwyQkFBMkIsS0FBSyxVQUFVLHlCQUF5QixRQUFRO0FBQzNFLGdCQUFnQixNQUFNLFFBQVE7QUFDOUIsZ0JBQWdCLEtBQUssVUFBVTtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLGtCQUFrQixhQUFhLCtCQUErQixRQUFRO0FBQ3RFLHNCQUFzQixhQUFhLCtCQUErQixRQUFRLGlDQUFpQztBQUMzRyxlQUFlLGFBQWEsNEJBQTRCLFFBQVE7QUFDaEUsbUJBQW1CLFFBQVEsOEJBQThCLFVBQVU7QUFDbkUsY0FBYyxRQUFROztBQUV0QjtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7QUFDQTtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxZQUFZO0FBQ1o7O0FBRUEsV0FBVyxpQkFBaUIsdUJBQXVCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L2dpdEdyYXBoRGlhZ3JhbS0xZTk2MGM1MC5qcz9kYmIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIG0gYXMgbWVybWFpZEFQSSwgbCBhcyBsb2csIGUgYXMgY29tbW9uLCB2IGFzIGNsZWFyJDIsIHkgYXMgcmFuZG9tLCB6IGFzIGdldENvbmZpZyQxLCB1IGFzIHV0aWxzLCBBIGFzIHNldHVwR3JhcGhWaWV3Ym94IH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG52YXIgcGFyc2VyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBvID0gZnVuY3Rpb24oaywgdiwgbzIsIGwpIHtcbiAgICBmb3IgKG8yID0gbzIgfHwge30sIGwgPSBrLmxlbmd0aDsgbC0tOyBvMltrW2xdXSA9IHYpXG4gICAgICA7XG4gICAgcmV0dXJuIG8yO1xuICB9LCAkVjAgPSBbMSwgNF0sICRWMSA9IFsxLCA3XSwgJFYyID0gWzEsIDVdLCAkVjMgPSBbMSwgOV0sICRWNCA9IFsxLCA2XSwgJFY1ID0gWzIsIDZdLCAkVjYgPSBbMSwgMTZdLCAkVjcgPSBbNiwgOCwgMTQsIDIwLCAyMiwgMjQsIDI1LCAyNywgMjksIDMyLCAzNywgNDAsIDUwLCA1NV0sICRWOCA9IFs4LCAxNCwgMjAsIDIyLCAyNCwgMjUsIDI3LCAyOSwgMzIsIDM3LCA0MF0sICRWOSA9IFs4LCAxMywgMTQsIDIwLCAyMiwgMjQsIDI1LCAyNywgMjksIDMyLCAzNywgNDBdLCAkVmEgPSBbMSwgMjZdLCAkVmIgPSBbNiwgOCwgMTQsIDUwLCA1NV0sICRWYyA9IFs4LCAxNCwgNTVdLCAkVmQgPSBbMSwgNTNdLCAkVmUgPSBbMSwgNTJdLCAkVmYgPSBbOCwgMTQsIDMwLCAzMywgMzUsIDM4LCA1NV0sICRWZyA9IFsxLCA2N10sICRWaCA9IFsxLCA2OF0sICRWaSA9IFsxLCA2OV0sICRWaiA9IFs4LCAxNCwgMzMsIDM1LCA0MiwgNTVdO1xuICB2YXIgcGFyc2VyMiA9IHtcbiAgICB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7XG4gICAgfSxcbiAgICB5eToge30sXG4gICAgc3ltYm9sc186IHsgXCJlcnJvclwiOiAyLCBcInN0YXJ0XCI6IDMsIFwiZW9sXCI6IDQsIFwiZGlyZWN0aXZlXCI6IDUsIFwiR0dcIjogNiwgXCJkb2N1bWVudFwiOiA3LCBcIkVPRlwiOiA4LCBcIjpcIjogOSwgXCJESVJcIjogMTAsIFwib3B0aW9uc1wiOiAxMSwgXCJib2R5XCI6IDEyLCBcIk9QVFwiOiAxMywgXCJOTFwiOiAxNCwgXCJsaW5lXCI6IDE1LCBcInN0YXRlbWVudFwiOiAxNiwgXCJjb21taXRTdGF0ZW1lbnRcIjogMTcsIFwibWVyZ2VTdGF0ZW1lbnRcIjogMTgsIFwiY2hlcnJ5UGlja1N0YXRlbWVudFwiOiAxOSwgXCJhY2NfdGl0bGVcIjogMjAsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDIxLCBcImFjY19kZXNjclwiOiAyMiwgXCJhY2NfZGVzY3JfdmFsdWVcIjogMjMsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAyNCwgXCJzZWN0aW9uXCI6IDI1LCBcImJyYW5jaFN0YXRlbWVudFwiOiAyNiwgXCJDSEVDS09VVFwiOiAyNywgXCJyZWZcIjogMjgsIFwiQlJBTkNIXCI6IDI5LCBcIk9SREVSXCI6IDMwLCBcIk5VTVwiOiAzMSwgXCJDSEVSUllfUElDS1wiOiAzMiwgXCJDT01NSVRfSURcIjogMzMsIFwiU1RSXCI6IDM0LCBcIkNPTU1JVF9UQUdcIjogMzUsIFwiRU1QVFlTVFJcIjogMzYsIFwiTUVSR0VcIjogMzcsIFwiQ09NTUlUX1RZUEVcIjogMzgsIFwiY29tbWl0VHlwZVwiOiAzOSwgXCJDT01NSVRcIjogNDAsIFwiY29tbWl0X2FyZ1wiOiA0MSwgXCJDT01NSVRfTVNHXCI6IDQyLCBcIk5PUk1BTFwiOiA0MywgXCJSRVZFUlNFXCI6IDQ0LCBcIkhJR0hMSUdIVFwiOiA0NSwgXCJvcGVuRGlyZWN0aXZlXCI6IDQ2LCBcInR5cGVEaXJlY3RpdmVcIjogNDcsIFwiY2xvc2VEaXJlY3RpdmVcIjogNDgsIFwiYXJnRGlyZWN0aXZlXCI6IDQ5LCBcIm9wZW5fZGlyZWN0aXZlXCI6IDUwLCBcInR5cGVfZGlyZWN0aXZlXCI6IDUxLCBcImFyZ19kaXJlY3RpdmVcIjogNTIsIFwiY2xvc2VfZGlyZWN0aXZlXCI6IDUzLCBcIklEXCI6IDU0LCBcIjtcIjogNTUsIFwiJGFjY2VwdFwiOiAwLCBcIiRlbmRcIjogMSB9LFxuICAgIHRlcm1pbmFsc186IHsgMjogXCJlcnJvclwiLCA2OiBcIkdHXCIsIDg6IFwiRU9GXCIsIDk6IFwiOlwiLCAxMDogXCJESVJcIiwgMTM6IFwiT1BUXCIsIDE0OiBcIk5MXCIsIDIwOiBcImFjY190aXRsZVwiLCAyMTogXCJhY2NfdGl0bGVfdmFsdWVcIiwgMjI6IFwiYWNjX2Rlc2NyXCIsIDIzOiBcImFjY19kZXNjcl92YWx1ZVwiLCAyNDogXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCIsIDI1OiBcInNlY3Rpb25cIiwgMjc6IFwiQ0hFQ0tPVVRcIiwgMjk6IFwiQlJBTkNIXCIsIDMwOiBcIk9SREVSXCIsIDMxOiBcIk5VTVwiLCAzMjogXCJDSEVSUllfUElDS1wiLCAzMzogXCJDT01NSVRfSURcIiwgMzQ6IFwiU1RSXCIsIDM1OiBcIkNPTU1JVF9UQUdcIiwgMzY6IFwiRU1QVFlTVFJcIiwgMzc6IFwiTUVSR0VcIiwgMzg6IFwiQ09NTUlUX1RZUEVcIiwgNDA6IFwiQ09NTUlUXCIsIDQyOiBcIkNPTU1JVF9NU0dcIiwgNDM6IFwiTk9STUFMXCIsIDQ0OiBcIlJFVkVSU0VcIiwgNDU6IFwiSElHSExJR0hUXCIsIDUwOiBcIm9wZW5fZGlyZWN0aXZlXCIsIDUxOiBcInR5cGVfZGlyZWN0aXZlXCIsIDUyOiBcImFyZ19kaXJlY3RpdmVcIiwgNTM6IFwiY2xvc2VfZGlyZWN0aXZlXCIsIDU0OiBcIklEXCIsIDU1OiBcIjtcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzMsIDJdLCBbMywgM10sIFszLCA0XSwgWzMsIDVdLCBbNywgMF0sIFs3LCAyXSwgWzExLCAyXSwgWzExLCAxXSwgWzEyLCAwXSwgWzEyLCAyXSwgWzE1LCAyXSwgWzE1LCAxXSwgWzE2LCAxXSwgWzE2LCAxXSwgWzE2LCAxXSwgWzE2LCAyXSwgWzE2LCAyXSwgWzE2LCAxXSwgWzE2LCAxXSwgWzE2LCAxXSwgWzE2LCAyXSwgWzI2LCAyXSwgWzI2LCA0XSwgWzE5LCAzXSwgWzE5LCA1XSwgWzE5LCA1XSwgWzE5LCA1XSwgWzE5LCA1XSwgWzE4LCAyXSwgWzE4LCA0XSwgWzE4LCA0XSwgWzE4LCA0XSwgWzE4LCA2XSwgWzE4LCA2XSwgWzE4LCA2XSwgWzE4LCA2XSwgWzE4LCA2XSwgWzE4LCA2XSwgWzE4LCA4XSwgWzE4LCA4XSwgWzE4LCA4XSwgWzE4LCA4XSwgWzE4LCA4XSwgWzE4LCA4XSwgWzE3LCAyXSwgWzE3LCAzXSwgWzE3LCAzXSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCAzXSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCAzXSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA1XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA3XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzE3LCA5XSwgWzQxLCAwXSwgWzQxLCAxXSwgWzM5LCAxXSwgWzM5LCAxXSwgWzM5LCAxXSwgWzUsIDNdLCBbNSwgNV0sIFs0NiwgMV0sIFs0NywgMV0sIFs0OSwgMV0sIFs0OCwgMV0sIFsyOCwgMV0sIFsyOCwgMV0sIFs0LCAxXSwgWzQsIDFdLCBbNCwgMV1dLFxuICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQpIHtcbiAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiAkJFskMF07XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gJCRbJDAgLSAxXTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHl5LnNldERpcmVjdGlvbigkJFskMCAtIDNdKTtcbiAgICAgICAgICByZXR1cm4gJCRbJDAgLSAxXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHl5LnNldE9wdGlvbnMoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgJCRbJDAgLSAxXSArPSAkJFskMF07XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NUaXRsZSh0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB5eS5hZGRTZWN0aW9uKCQkWyQwXS5zdWJzdHIoOCkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgeXkuY2hlY2tvdXQoJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICB5eS5icmFuY2goJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICB5eS5icmFuY2goJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICB5eS5jaGVycnlQaWNrKCQkWyQwXSwgXCJcIiwgdm9pZCAwKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICB5eS5jaGVycnlQaWNrKCQkWyQwIC0gMl0sIFwiXCIsICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjc6XG4gICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgeXkuY2hlcnJ5UGljaygkJFskMCAtIDJdLCBcIlwiLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICB5eS5jaGVycnlQaWNrKCQkWyQwXSwgXCJcIiwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDBdLCBcIlwiLCBcIlwiLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICB5eS5tZXJnZSgkJFskMCAtIDJdLCAkJFskMF0sIFwiXCIsIFwiXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgIHl5Lm1lcmdlKCQkWyQwIC0gMl0sIFwiXCIsICQkWyQwXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDAgLSAyXSwgXCJcIiwgXCJcIiwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICB5eS5tZXJnZSgkJFskMCAtIDRdLCAkJFskMF0sIFwiXCIsICQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgIHl5Lm1lcmdlKCQkWyQwIC0gNF0sIFwiXCIsICQkWyQwXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDAgLSA0XSwgXCJcIiwgJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICB5eS5tZXJnZSgkJFskMCAtIDRdLCAkJFskMCAtIDJdLCAkJFskMF0sIFwiXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgIHl5Lm1lcmdlKCQkWyQwIC0gNF0sICQkWyQwIC0gMl0sIFwiXCIsICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDAgLSA0XSwgJCRbJDBdLCAkJFskMCAtIDJdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICB5eS5tZXJnZSgkJFskMCAtIDZdLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgIHl5Lm1lcmdlKCQkWyQwIC0gNl0sICQkWyQwXSwgJCRbJDAgLSA0XSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDAgLSA2XSwgJCRbJDAgLSA0XSwgJCRbJDBdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICB5eS5tZXJnZSgkJFskMCAtIDZdLCAkJFskMCAtIDJdLCAkJFskMCAtIDRdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgIHl5Lm1lcmdlKCQkWyQwIC0gNl0sICQkWyQwXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSA0XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgeXkubWVyZ2UoJCRbJDAgLSA2XSwgJCRbJDAgLSAyXSwgJCRbJDBdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICB5eS5jb21taXQoXCJcIiwgXCJcIiwgeXkuY29tbWl0VHlwZS5OT1JNQUwsICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsIFwiXCIsICQkWyQwXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDk6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsIFwiXCIsICQkWyQwXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsIFwiXCIsICQkWyQwIC0gMl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwXSwgeXkuY29tbWl0VHlwZS5OT1JNQUwsIFwiXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDUyOlxuICAgICAgICAgIHl5LmNvbW1pdChcIlwiLCAkJFskMCAtIDJdLCB5eS5jb21taXRUeXBlLk5PUk1BTCwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICB5eS5jb21taXQoXCJcIiwgJCRbJDBdLCB5eS5jb21taXRUeXBlLk5PUk1BTCwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTQ6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwIC0gMl0sICQkWyQwXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTU6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwXSwgJCRbJDAgLSAyXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTY6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwIC0gNF0sICQkWyQwIC0gMl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwIC0gNF0sICQkWyQwXSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTg6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwIC0gMl0sICQkWyQwIC0gNF0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwXSwgJCRbJDAgLSA0XSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjA6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSA0XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgeXkuY29tbWl0KFwiXCIsICQkWyQwIC0gMl0sICQkWyQwXSwgJCRbJDAgLSA0XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjI6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwXSwgXCJcIiwgeXkuY29tbWl0VHlwZS5OT1JNQUwsIFwiXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMF0sIFwiXCIsIHl5LmNvbW1pdFR5cGUuTk9STUFMLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgXCJcIiwgeXkuY29tbWl0VHlwZS5OT1JNQUwsICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwIC0gMl0sIFwiXCIsICQkWyQwXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjY6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwXSwgXCJcIiwgJCRbJDAgLSAyXSwgXCJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjc6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwXSwgJCRbJDAgLSAyXSwgeXkuY29tbWl0VHlwZS5OT1JNQUwsIFwiXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDJdLCAkJFskMF0sIHl5LmNvbW1pdFR5cGUuTk9STUFMLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgXCJcIiwgJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgXCJcIiwgJCRbJDBdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgXCJcIiwgJCRbJDAgLSA0XSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCBcIlwiLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCBcIlwiLCAkJFskMCAtIDJdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgXCJcIiwgJCRbJDBdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgJCRbJDBdLCAkJFskMCAtIDJdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgJCRbJDAgLSAyXSwgJCRbJDBdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NzpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDBdLCAkJFskMCAtIDRdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDJdLCAkJFskMCAtIDRdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDAgLSA0XSwgJCRbJDBdLCBcIlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgJCRbJDBdLCB5eS5jb21taXRUeXBlLk5PUk1BTCwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODI6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwIC0gNF0sICQkWyQwIC0gMl0sIHl5LmNvbW1pdFR5cGUuTk9STUFMLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDJdLCAkJFskMF0sIHl5LmNvbW1pdFR5cGUuTk9STUFMLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDJdLCB5eS5jb21taXRUeXBlLk5PUk1BTCwgJCRbJDAgLSA0XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODU6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwXSwgJCRbJDAgLSA0XSwgeXkuY29tbWl0VHlwZS5OT1JNQUwsICQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg2OlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDJdLCAkJFskMCAtIDRdLCB5eS5jb21taXRUeXBlLk5PUk1BTCwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4NzpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDAgLSA0XSwgJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4ODpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDAgLSA0XSwgJCRbJDBdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDAgLSAyXSwgJCRbJDAgLSA0XSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDBdLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDAgLSAyXSwgJCRbJDBdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA2XSwgJCRbJDBdLCAkJFskMCAtIDJdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5MzpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgJCRbJDAgLSA2XSwgJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5NDpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSA0XSwgJCRbJDAgLSA2XSwgJCRbJDBdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5NTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDAgLSA2XSwgJCRbJDAgLSA0XSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5NjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDZdLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDAgLSA2XSwgJCRbJDBdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5ODpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDZdLCAkJFskMCAtIDJdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDRdLCAkJFskMCAtIDJdLCAkJFskMCAtIDZdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwIC0gMl0sICQkWyQwIC0gNF0sICQkWyQwXSwgJCRbJDAgLSA2XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTAxOlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMF0sICQkWyQwIC0gMl0sICQkWyQwIC0gNF0sICQkWyQwIC0gNl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDBdLCAkJFskMCAtIDRdLCAkJFskMCAtIDZdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDM6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwIC0gNF0sICQkWyQwIC0gMl0sICQkWyQwXSwgJCRbJDAgLSA2XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA0OlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDRdLCAkJFskMF0sICQkWyQwIC0gMl0sICQkWyQwIC0gNl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwNTpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDAgLSAyXSwgJCRbJDAgLSA0XSwgJCRbJDAgLSA2XSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDY6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwXSwgJCRbJDAgLSA0XSwgJCRbJDAgLSA2XSwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDJdLCAkJFskMF0sICQkWyQwIC0gNl0sICQkWyQwIC0gNF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICB5eS5jb21taXQoJCRbJDBdLCAkJFskMCAtIDJdLCAkJFskMCAtIDZdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgeXkuY29tbWl0KCQkWyQwIC0gNF0sICQkWyQwIC0gMl0sICQkWyQwIC0gNl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTEwOlxuICAgICAgICAgIHl5LmNvbW1pdCgkJFskMCAtIDRdLCAkJFskMF0sICQkWyQwIC0gNl0sICQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICB0aGlzLiQgPSBcIlwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTEzOlxuICAgICAgICAgIHRoaXMuJCA9IHl5LmNvbW1pdFR5cGUuTk9STUFMO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5jb21taXRUeXBlLlJFVkVSU0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LmNvbW1pdFR5cGUuSElHSExJR0hUO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExODpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIiUle1wiLCBcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTIwOlxuICAgICAgICAgICQkWyQwXSA9ICQkWyQwXS50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKTtcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCJ9JSVcIiwgXCJjbG9zZV9kaXJlY3RpdmVcIiwgXCJnaXRHcmFwaFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiAzLCA2OiAkVjAsIDg6ICRWMSwgMTQ6ICRWMiwgNDY6IDgsIDUwOiAkVjMsIDU1OiAkVjQgfSwgeyAxOiBbM10gfSwgeyAzOiAxMCwgNDogMiwgNTogMywgNjogJFYwLCA4OiAkVjEsIDE0OiAkVjIsIDQ2OiA4LCA1MDogJFYzLCA1NTogJFY0IH0sIHsgMzogMTEsIDQ6IDIsIDU6IDMsIDY6ICRWMCwgODogJFYxLCAxNDogJFYyLCA0NjogOCwgNTA6ICRWMywgNTU6ICRWNCB9LCB7IDc6IDEyLCA4OiAkVjUsIDk6IFsxLCAxM10sIDEwOiBbMSwgMTRdLCAxMTogMTUsIDE0OiAkVjYgfSwgbygkVjcsIFsyLCAxMjRdKSwgbygkVjcsIFsyLCAxMjVdKSwgbygkVjcsIFsyLCAxMjZdKSwgeyA0NzogMTcsIDUxOiBbMSwgMThdIH0sIHsgNTE6IFsyLCAxMThdIH0sIHsgMTogWzIsIDFdIH0sIHsgMTogWzIsIDJdIH0sIHsgODogWzEsIDE5XSB9LCB7IDc6IDIwLCA4OiAkVjUsIDExOiAxNSwgMTQ6ICRWNiB9LCB7IDk6IFsxLCAyMV0gfSwgbygkVjgsIFsyLCAxMF0sIHsgMTI6IDIyLCAxMzogWzEsIDIzXSB9KSwgbygkVjksIFsyLCA5XSksIHsgOTogWzEsIDI1XSwgNDg6IDI0LCA1MzogJFZhIH0sIG8oWzksIDUzXSwgWzIsIDExOV0pLCB7IDE6IFsyLCAzXSB9LCB7IDg6IFsxLCAyN10gfSwgeyA3OiAyOCwgODogJFY1LCAxMTogMTUsIDE0OiAkVjYgfSwgeyA4OiBbMiwgN10sIDE0OiBbMSwgMzFdLCAxNTogMjksIDE2OiAzMCwgMTc6IDMyLCAxODogMzMsIDE5OiAzNCwgMjA6IFsxLCAzNV0sIDIyOiBbMSwgMzZdLCAyNDogWzEsIDM3XSwgMjU6IFsxLCAzOF0sIDI2OiAzOSwgMjc6IFsxLCA0MF0sIDI5OiBbMSwgNDRdLCAzMjogWzEsIDQzXSwgMzc6IFsxLCA0Ml0sIDQwOiBbMSwgNDFdIH0sIG8oJFY5LCBbMiwgOF0pLCBvKCRWYiwgWzIsIDExNl0pLCB7IDQ5OiA0NSwgNTI6IFsxLCA0Nl0gfSwgbygkVmIsIFsyLCAxMjFdKSwgeyAxOiBbMiwgNF0gfSwgeyA4OiBbMSwgNDddIH0sIG8oJFY4LCBbMiwgMTFdKSwgeyA0OiA0OCwgODogJFYxLCAxNDogJFYyLCA1NTogJFY0IH0sIG8oJFY4LCBbMiwgMTNdKSwgbygkVmMsIFsyLCAxNF0pLCBvKCRWYywgWzIsIDE1XSksIG8oJFZjLCBbMiwgMTZdKSwgeyAyMTogWzEsIDQ5XSB9LCB7IDIzOiBbMSwgNTBdIH0sIG8oJFZjLCBbMiwgMTldKSwgbygkVmMsIFsyLCAyMF0pLCBvKCRWYywgWzIsIDIxXSksIHsgMjg6IDUxLCAzNDogJFZkLCA1NDogJFZlIH0sIG8oJFZjLCBbMiwgMTExXSwgeyA0MTogNTQsIDMzOiBbMSwgNTddLCAzNDogWzEsIDU5XSwgMzU6IFsxLCA1NV0sIDM4OiBbMSwgNTZdLCA0MjogWzEsIDU4XSB9KSwgeyAyODogNjAsIDM0OiAkVmQsIDU0OiAkVmUgfSwgeyAzMzogWzEsIDYxXSwgMzU6IFsxLCA2Ml0gfSwgeyAyODogNjMsIDM0OiAkVmQsIDU0OiAkVmUgfSwgeyA0ODogNjQsIDUzOiAkVmEgfSwgeyA1MzogWzIsIDEyMF0gfSwgeyAxOiBbMiwgNV0gfSwgbygkVjgsIFsyLCAxMl0pLCBvKCRWYywgWzIsIDE3XSksIG8oJFZjLCBbMiwgMThdKSwgbygkVmMsIFsyLCAyMl0pLCBvKCRWZiwgWzIsIDEyMl0pLCBvKCRWZiwgWzIsIDEyM10pLCBvKCRWYywgWzIsIDQ2XSksIHsgMzQ6IFsxLCA2NV0gfSwgeyAzOTogNjYsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDcwXSB9LCB7IDM0OiBbMSwgNzFdIH0sIG8oJFZjLCBbMiwgMTEyXSksIG8oJFZjLCBbMiwgMzBdLCB7IDMzOiBbMSwgNzJdLCAzNTogWzEsIDc0XSwgMzg6IFsxLCA3M10gfSksIHsgMzQ6IFsxLCA3NV0gfSwgeyAzNDogWzEsIDc2XSwgMzY6IFsxLCA3N10gfSwgbygkVmMsIFsyLCAyM10sIHsgMzA6IFsxLCA3OF0gfSksIG8oJFZiLCBbMiwgMTE3XSksIG8oJFZjLCBbMiwgNDddLCB7IDMzOiBbMSwgODBdLCAzODogWzEsIDc5XSwgNDI6IFsxLCA4MV0gfSksIG8oJFZjLCBbMiwgNDhdLCB7IDMzOiBbMSwgODNdLCAzNTogWzEsIDgyXSwgNDI6IFsxLCA4NF0gfSksIG8oJFZqLCBbMiwgMTEzXSksIG8oJFZqLCBbMiwgMTE0XSksIG8oJFZqLCBbMiwgMTE1XSksIG8oJFZjLCBbMiwgNTFdLCB7IDM1OiBbMSwgODVdLCAzODogWzEsIDg2XSwgNDI6IFsxLCA4N10gfSksIG8oJFZjLCBbMiwgNjJdLCB7IDMzOiBbMSwgOTBdLCAzNTogWzEsIDg4XSwgMzg6IFsxLCA4OV0gfSksIHsgMzQ6IFsxLCA5MV0gfSwgeyAzOTogOTIsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDkzXSB9LCBvKCRWYywgWzIsIDI1XSwgeyAzNTogWzEsIDk0XSB9KSwgeyAzMzogWzEsIDk1XSB9LCB7IDMzOiBbMSwgOTZdIH0sIHsgMzE6IFsxLCA5N10gfSwgeyAzOTogOTgsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDk5XSB9LCB7IDM0OiBbMSwgMTAwXSB9LCB7IDM0OiBbMSwgMTAxXSB9LCB7IDM0OiBbMSwgMTAyXSB9LCB7IDM0OiBbMSwgMTAzXSB9LCB7IDM0OiBbMSwgMTA0XSB9LCB7IDM5OiAxMDUsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDEwNl0gfSwgeyAzNDogWzEsIDEwN10gfSwgeyAzOTogMTA4LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAxMDldIH0sIG8oJFZjLCBbMiwgMzFdLCB7IDM1OiBbMSwgMTExXSwgMzg6IFsxLCAxMTBdIH0pLCBvKCRWYywgWzIsIDMyXSwgeyAzMzogWzEsIDExM10sIDM1OiBbMSwgMTEyXSB9KSwgbygkVmMsIFsyLCAzM10sIHsgMzM6IFsxLCAxMTRdLCAzODogWzEsIDExNV0gfSksIHsgMzQ6IFsxLCAxMTZdLCAzNjogWzEsIDExN10gfSwgeyAzNDogWzEsIDExOF0gfSwgeyAzNDogWzEsIDExOV0gfSwgbygkVmMsIFsyLCAyNF0pLCBvKCRWYywgWzIsIDQ5XSwgeyAzMzogWzEsIDEyMF0sIDQyOiBbMSwgMTIxXSB9KSwgbygkVmMsIFsyLCA1M10sIHsgMzg6IFsxLCAxMjJdLCA0MjogWzEsIDEyM10gfSksIG8oJFZjLCBbMiwgNjNdLCB7IDMzOiBbMSwgMTI1XSwgMzg6IFsxLCAxMjRdIH0pLCBvKCRWYywgWzIsIDUwXSwgeyAzMzogWzEsIDEyNl0sIDQyOiBbMSwgMTI3XSB9KSwgbygkVmMsIFsyLCA1NV0sIHsgMzU6IFsxLCAxMjhdLCA0MjogWzEsIDEyOV0gfSksIG8oJFZjLCBbMiwgNjZdLCB7IDMzOiBbMSwgMTMxXSwgMzU6IFsxLCAxMzBdIH0pLCBvKCRWYywgWzIsIDUyXSwgeyAzODogWzEsIDEzMl0sIDQyOiBbMSwgMTMzXSB9KSwgbygkVmMsIFsyLCA1NF0sIHsgMzU6IFsxLCAxMzRdLCA0MjogWzEsIDEzNV0gfSksIG8oJFZjLCBbMiwgNjddLCB7IDM1OiBbMSwgMTM3XSwgMzg6IFsxLCAxMzZdIH0pLCBvKCRWYywgWzIsIDY0XSwgeyAzMzogWzEsIDEzOV0sIDM4OiBbMSwgMTM4XSB9KSwgbygkVmMsIFsyLCA2NV0sIHsgMzM6IFsxLCAxNDFdLCAzNTogWzEsIDE0MF0gfSksIG8oJFZjLCBbMiwgNjhdLCB7IDM1OiBbMSwgMTQzXSwgMzg6IFsxLCAxNDJdIH0pLCB7IDM5OiAxNDQsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDE0NV0gfSwgeyAzNDogWzEsIDE0Nl0gfSwgeyAzNDogWzEsIDE0N10gfSwgeyAzNDogWzEsIDE0OF0gfSwgeyAzOTogMTQ5LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIG8oJFZjLCBbMiwgMjZdKSwgbygkVmMsIFsyLCAyN10pLCBvKCRWYywgWzIsIDI4XSksIG8oJFZjLCBbMiwgMjldKSwgeyAzNDogWzEsIDE1MF0gfSwgeyAzNDogWzEsIDE1MV0gfSwgeyAzOTogMTUyLCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAxNTNdIH0sIHsgMzk6IDE1NCwgNDM6ICRWZywgNDQ6ICRWaCwgNDU6ICRWaSB9LCB7IDM0OiBbMSwgMTU1XSB9LCB7IDM0OiBbMSwgMTU2XSB9LCB7IDM0OiBbMSwgMTU3XSB9LCB7IDM0OiBbMSwgMTU4XSB9LCB7IDM0OiBbMSwgMTU5XSB9LCB7IDM0OiBbMSwgMTYwXSB9LCB7IDM0OiBbMSwgMTYxXSB9LCB7IDM5OiAxNjIsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDE2M10gfSwgeyAzNDogWzEsIDE2NF0gfSwgeyAzNDogWzEsIDE2NV0gfSwgeyAzOTogMTY2LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAxNjddIH0sIHsgMzk6IDE2OCwgNDM6ICRWZywgNDQ6ICRWaCwgNDU6ICRWaSB9LCB7IDM0OiBbMSwgMTY5XSB9LCB7IDM0OiBbMSwgMTcwXSB9LCB7IDM0OiBbMSwgMTcxXSB9LCB7IDM5OiAxNzIsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDE3M10gfSwgbygkVmMsIFsyLCAzN10sIHsgMzU6IFsxLCAxNzRdIH0pLCBvKCRWYywgWzIsIDM4XSwgeyAzODogWzEsIDE3NV0gfSksIG8oJFZjLCBbMiwgMzZdLCB7IDMzOiBbMSwgMTc2XSB9KSwgbygkVmMsIFsyLCAzOV0sIHsgMzU6IFsxLCAxNzddIH0pLCBvKCRWYywgWzIsIDM0XSwgeyAzODogWzEsIDE3OF0gfSksIG8oJFZjLCBbMiwgMzVdLCB7IDMzOiBbMSwgMTc5XSB9KSwgbygkVmMsIFsyLCA2MF0sIHsgNDI6IFsxLCAxODBdIH0pLCBvKCRWYywgWzIsIDczXSwgeyAzMzogWzEsIDE4MV0gfSksIG8oJFZjLCBbMiwgNjFdLCB7IDQyOiBbMSwgMTgyXSB9KSwgbygkVmMsIFsyLCA4NF0sIHsgMzg6IFsxLCAxODNdIH0pLCBvKCRWYywgWzIsIDc0XSwgeyAzMzogWzEsIDE4NF0gfSksIG8oJFZjLCBbMiwgODNdLCB7IDM4OiBbMSwgMTg1XSB9KSwgbygkVmMsIFsyLCA1OV0sIHsgNDI6IFsxLCAxODZdIH0pLCBvKCRWYywgWzIsIDcyXSwgeyAzMzogWzEsIDE4N10gfSksIG8oJFZjLCBbMiwgNThdLCB7IDQyOiBbMSwgMTg4XSB9KSwgbygkVmMsIFsyLCA3OF0sIHsgMzU6IFsxLCAxODldIH0pLCBvKCRWYywgWzIsIDcxXSwgeyAzMzogWzEsIDE5MF0gfSksIG8oJFZjLCBbMiwgNzddLCB7IDM1OiBbMSwgMTkxXSB9KSwgbygkVmMsIFsyLCA1N10sIHsgNDI6IFsxLCAxOTJdIH0pLCBvKCRWYywgWzIsIDg1XSwgeyAzODogWzEsIDE5M10gfSksIG8oJFZjLCBbMiwgNTZdLCB7IDQyOiBbMSwgMTk0XSB9KSwgbygkVmMsIFsyLCA3OV0sIHsgMzU6IFsxLCAxOTVdIH0pLCBvKCRWYywgWzIsIDgwXSwgeyAzNTogWzEsIDE5Nl0gfSksIG8oJFZjLCBbMiwgODZdLCB7IDM4OiBbMSwgMTk3XSB9KSwgbygkVmMsIFsyLCA3MF0sIHsgMzM6IFsxLCAxOThdIH0pLCBvKCRWYywgWzIsIDgxXSwgeyAzODogWzEsIDE5OV0gfSksIG8oJFZjLCBbMiwgNjldLCB7IDMzOiBbMSwgMjAwXSB9KSwgbygkVmMsIFsyLCA3NV0sIHsgMzU6IFsxLCAyMDFdIH0pLCBvKCRWYywgWzIsIDc2XSwgeyAzNTogWzEsIDIwMl0gfSksIG8oJFZjLCBbMiwgODJdLCB7IDM4OiBbMSwgMjAzXSB9KSwgeyAzNDogWzEsIDIwNF0gfSwgeyAzOTogMjA1LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAyMDZdIH0sIHsgMzQ6IFsxLCAyMDddIH0sIHsgMzk6IDIwOCwgNDM6ICRWZywgNDQ6ICRWaCwgNDU6ICRWaSB9LCB7IDM0OiBbMSwgMjA5XSB9LCB7IDM0OiBbMSwgMjEwXSB9LCB7IDM0OiBbMSwgMjExXSB9LCB7IDM0OiBbMSwgMjEyXSB9LCB7IDM5OiAyMTMsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDIxNF0gfSwgeyAzOTogMjE1LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAyMTZdIH0sIHsgMzQ6IFsxLCAyMTddIH0sIHsgMzQ6IFsxLCAyMThdIH0sIHsgMzQ6IFsxLCAyMTldIH0sIHsgMzQ6IFsxLCAyMjBdIH0sIHsgMzQ6IFsxLCAyMjFdIH0sIHsgMzQ6IFsxLCAyMjJdIH0sIHsgMzk6IDIyMywgNDM6ICRWZywgNDQ6ICRWaCwgNDU6ICRWaSB9LCB7IDM0OiBbMSwgMjI0XSB9LCB7IDM0OiBbMSwgMjI1XSB9LCB7IDM0OiBbMSwgMjI2XSB9LCB7IDM5OiAyMjcsIDQzOiAkVmcsIDQ0OiAkVmgsIDQ1OiAkVmkgfSwgeyAzNDogWzEsIDIyOF0gfSwgeyAzOTogMjI5LCA0MzogJFZnLCA0NDogJFZoLCA0NTogJFZpIH0sIHsgMzQ6IFsxLCAyMzBdIH0sIHsgMzQ6IFsxLCAyMzFdIH0sIHsgMzQ6IFsxLCAyMzJdIH0sIHsgMzk6IDIzMywgNDM6ICRWZywgNDQ6ICRWaCwgNDU6ICRWaSB9LCBvKCRWYywgWzIsIDQwXSksIG8oJFZjLCBbMiwgNDJdKSwgbygkVmMsIFsyLCA0MV0pLCBvKCRWYywgWzIsIDQzXSksIG8oJFZjLCBbMiwgNDVdKSwgbygkVmMsIFsyLCA0NF0pLCBvKCRWYywgWzIsIDEwMV0pLCBvKCRWYywgWzIsIDEwMl0pLCBvKCRWYywgWzIsIDk5XSksIG8oJFZjLCBbMiwgMTAwXSksIG8oJFZjLCBbMiwgMTA0XSksIG8oJFZjLCBbMiwgMTAzXSksIG8oJFZjLCBbMiwgMTA4XSksIG8oJFZjLCBbMiwgMTA3XSksIG8oJFZjLCBbMiwgMTA2XSksIG8oJFZjLCBbMiwgMTA1XSksIG8oJFZjLCBbMiwgMTEwXSksIG8oJFZjLCBbMiwgMTA5XSksIG8oJFZjLCBbMiwgOThdKSwgbygkVmMsIFsyLCA5N10pLCBvKCRWYywgWzIsIDk2XSksIG8oJFZjLCBbMiwgOTVdKSwgbygkVmMsIFsyLCA5M10pLCBvKCRWYywgWzIsIDk0XSksIG8oJFZjLCBbMiwgOTJdKSwgbygkVmMsIFsyLCA5MV0pLCBvKCRWYywgWzIsIDkwXSksIG8oJFZjLCBbMiwgODldKSwgbygkVmMsIFsyLCA4N10pLCBvKCRWYywgWzIsIDg4XSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDk6IFsyLCAxMThdLCAxMDogWzIsIDFdLCAxMTogWzIsIDJdLCAxOTogWzIsIDNdLCAyNzogWzIsIDRdLCA0NjogWzIsIDEyMF0sIDQ3OiBbMiwgNV0gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA1MDtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gNTE7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gOTtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNTM7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgcmV0dXJuIDUyO1xuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjclwiKTtcbiAgICAgICAgICAgIHJldHVybiAyMjtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyX211bHRpbGluZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICByZXR1cm4gMTQ7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgcmV0dXJuIDY7XG4gICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgIHJldHVybiA0MDtcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgcmV0dXJuIDMzO1xuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICByZXR1cm4gMzg7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHJldHVybiA0MjtcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgcmV0dXJuIDQzO1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHJldHVybiA0NTtcbiAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgcmV0dXJuIDM1O1xuICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgIHJldHVybiAzMDtcbiAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgcmV0dXJuIDM3O1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICByZXR1cm4gMzI7XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHJldHVybiAyNztcbiAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgcmV0dXJuIDEwO1xuICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICByZXR1cm4gMTA7XG4gICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgIHJldHVybiA5O1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICByZXR1cm4gXCJDQVJFVFwiO1xuICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwib3B0aW9uc1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgcmV0dXJuIDEzO1xuICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICByZXR1cm4gMzY7XG4gICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJzdHJpbmdcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgIHJldHVybiAzNDtcbiAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgICByZXR1cm4gNTQ7XG4gICAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzphY2NUaXRsZVxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS9pLCAvXig/OltcXH1dKS9pLCAvXig/OlteXFx9XSopL2ksIC9eKD86KFxccj9cXG4pKykvaSwgL14oPzojW15cXG5dKikvaSwgL14oPzolW15cXG5dKikvaSwgL14oPzpnaXRHcmFwaFxcYikvaSwgL14oPzpjb21taXQoPz1cXHN8JCkpL2ksIC9eKD86aWQ6KS9pLCAvXig/OnR5cGU6KS9pLCAvXig/Om1zZzopL2ksIC9eKD86Tk9STUFMXFxiKS9pLCAvXig/OlJFVkVSU0VcXGIpL2ksIC9eKD86SElHSExJR0hUXFxiKS9pLCAvXig/OnRhZzopL2ksIC9eKD86YnJhbmNoKD89XFxzfCQpKS9pLCAvXig/Om9yZGVyOikvaSwgL14oPzptZXJnZSg/PVxcc3wkKSkvaSwgL14oPzpjaGVycnktcGljayg/PVxcc3wkKSkvaSwgL14oPzpjaGVja291dCg/PVxcc3wkKSkvaSwgL14oPzpMUlxcYikvaSwgL14oPzpCVFxcYikvaSwgL14oPzo6KS9pLCAvXig/OlxcXikvaSwgL14oPzpvcHRpb25zXFxyP1xcbikvaSwgL14oPzpbIFxcclxcblxcdF0rZW5kXFxiKS9pLCAvXig/OltcXHNcXFNdKyg/PVsgXFxyXFxuXFx0XStlbmQpKS9pLCAvXig/OltcIl1bXCJdKS9pLCAvXig/OltcIl0pL2ksIC9eKD86W1wiXSkvaSwgL14oPzpbXlwiXSopL2ksIC9eKD86WzAtOV0rKD89XFxzfCQpKS9pLCAvXig/OlxcdyhbLVxcLi9cXHddKlstXFx3XSk/KS9pLCAvXig/OiQpL2ksIC9eKD86XFxzKykvaV0sXG4gICAgICBjb25kaXRpb25zOiB7IFwiYWNjX2Rlc2NyX211bHRpbGluZVwiOiB7IFwicnVsZXNcIjogWzEwLCAxMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX2Rlc2NyXCI6IHsgXCJydWxlc1wiOiBbOF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX3RpdGxlXCI6IHsgXCJydWxlc1wiOiBbNl0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2xvc2VfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhcmdfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMywgNF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsyLCAzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm9wdGlvbnNcIjogeyBcInJ1bGVzXCI6IFszNCwgMzVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cmluZ1wiOiB7IFwicnVsZXNcIjogWzM4LCAzOV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSU5JVElBTFwiOiB7IFwicnVsZXNcIjogWzAsIDUsIDcsIDksIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNiwgMzcsIDQwLCA0MSwgNDIsIDQzXSwgXCJpbmNsdXNpdmVcIjogdHJ1ZSB9IH1cbiAgICB9O1xuICAgIHJldHVybiBsZXhlcjI7XG4gIH0oKTtcbiAgcGFyc2VyMi5sZXhlciA9IGxleGVyO1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgdGhpcy55eSA9IHt9O1xuICB9XG4gIFBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXIyO1xuICBwYXJzZXIyLlBhcnNlciA9IFBhcnNlcjtcbiAgcmV0dXJuIG5ldyBQYXJzZXIoKTtcbn0oKTtcbnBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5jb25zdCBnaXRHcmFwaFBhcnNlciA9IHBhcnNlcjtcbmxldCBtYWluQnJhbmNoTmFtZSA9IGdldENvbmZpZygpLmdpdEdyYXBoLm1haW5CcmFuY2hOYW1lO1xubGV0IG1haW5CcmFuY2hPcmRlciA9IGdldENvbmZpZygpLmdpdEdyYXBoLm1haW5CcmFuY2hPcmRlcjtcbmxldCBjb21taXRzID0ge307XG5sZXQgaGVhZCA9IG51bGw7XG5sZXQgYnJhbmNoZXNDb25maWcgPSB7fTtcbmJyYW5jaGVzQ29uZmlnW21haW5CcmFuY2hOYW1lXSA9IHsgbmFtZTogbWFpbkJyYW5jaE5hbWUsIG9yZGVyOiBtYWluQnJhbmNoT3JkZXIgfTtcbmxldCBicmFuY2hlcyA9IHt9O1xuYnJhbmNoZXNbbWFpbkJyYW5jaE5hbWVdID0gaGVhZDtcbmxldCBjdXJCcmFuY2ggPSBtYWluQnJhbmNoTmFtZTtcbmxldCBkaXJlY3Rpb24gPSBcIkxSXCI7XG5sZXQgc2VxID0gMDtcbmZ1bmN0aW9uIGdldElkKCkge1xuICByZXR1cm4gcmFuZG9tKHsgbGVuZ3RoOiA3IH0pO1xufVxuY29uc3QgcGFyc2VEaXJlY3RpdmUgPSBmdW5jdGlvbihzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpIHtcbiAgbWVybWFpZEFQSS5wYXJzZURpcmVjdGl2ZSh0aGlzLCBzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpO1xufTtcbmZ1bmN0aW9uIHVuaXFCeShsaXN0LCBmbikge1xuICBjb25zdCByZWNvcmRNYXAgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGxpc3QucmVkdWNlKChvdXQsIGl0ZW0pID0+IHtcbiAgICBjb25zdCBrZXkgPSBmbihpdGVtKTtcbiAgICBpZiAoIXJlY29yZE1hcFtrZXldKSB7XG4gICAgICByZWNvcmRNYXBba2V5XSA9IHRydWU7XG4gICAgICBvdXQucHVzaChpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfSwgW10pO1xufVxuY29uc3Qgc2V0RGlyZWN0aW9uID0gZnVuY3Rpb24oZGlyKSB7XG4gIGRpcmVjdGlvbiA9IGRpcjtcbn07XG5sZXQgb3B0aW9ucyA9IHt9O1xuY29uc3Qgc2V0T3B0aW9ucyA9IGZ1bmN0aW9uKHJhd09wdFN0cmluZykge1xuICBsb2cuZGVidWcoXCJvcHRpb25zIHN0clwiLCByYXdPcHRTdHJpbmcpO1xuICByYXdPcHRTdHJpbmcgPSByYXdPcHRTdHJpbmcgJiYgcmF3T3B0U3RyaW5nLnRyaW0oKTtcbiAgcmF3T3B0U3RyaW5nID0gcmF3T3B0U3RyaW5nIHx8IFwie31cIjtcbiAgdHJ5IHtcbiAgICBvcHRpb25zID0gSlNPTi5wYXJzZShyYXdPcHRTdHJpbmcpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmVycm9yKFwiZXJyb3Igd2hpbGUgcGFyc2luZyBnaXRHcmFwaCBvcHRpb25zXCIsIGUubWVzc2FnZSk7XG4gIH1cbn07XG5jb25zdCBnZXRPcHRpb25zID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBvcHRpb25zO1xufTtcbmNvbnN0IGNvbW1pdCA9IGZ1bmN0aW9uKG1zZywgaWQsIHR5cGUsIHRhZykge1xuICBsb2cuZGVidWcoXCJFbnRlcmluZyBjb21taXQ6XCIsIG1zZywgaWQsIHR5cGUsIHRhZyk7XG4gIGlkID0gY29tbW9uLnNhbml0aXplVGV4dChpZCwgZ2V0Q29uZmlnKCkpO1xuICBtc2cgPSBjb21tb24uc2FuaXRpemVUZXh0KG1zZywgZ2V0Q29uZmlnKCkpO1xuICB0YWcgPSBjb21tb24uc2FuaXRpemVUZXh0KHRhZywgZ2V0Q29uZmlnKCkpO1xuICBjb25zdCBjb21taXQyID0ge1xuICAgIGlkOiBpZCA/IGlkIDogc2VxICsgXCItXCIgKyBnZXRJZCgpLFxuICAgIG1lc3NhZ2U6IG1zZyxcbiAgICBzZXE6IHNlcSsrLFxuICAgIHR5cGU6IHR5cGUgPyB0eXBlIDogY29tbWl0VHlwZSQxLk5PUk1BTCxcbiAgICB0YWc6IHRhZyA/IHRhZyA6IFwiXCIsXG4gICAgcGFyZW50czogaGVhZCA9PSBudWxsID8gW10gOiBbaGVhZC5pZF0sXG4gICAgYnJhbmNoOiBjdXJCcmFuY2hcbiAgfTtcbiAgaGVhZCA9IGNvbW1pdDI7XG4gIGNvbW1pdHNbY29tbWl0Mi5pZF0gPSBjb21taXQyO1xuICBicmFuY2hlc1tjdXJCcmFuY2hdID0gY29tbWl0Mi5pZDtcbiAgbG9nLmRlYnVnKFwiaW4gcHVzaENvbW1pdCBcIiArIGNvbW1pdDIuaWQpO1xufTtcbmNvbnN0IGJyYW5jaCA9IGZ1bmN0aW9uKG5hbWUsIG9yZGVyKSB7XG4gIG5hbWUgPSBjb21tb24uc2FuaXRpemVUZXh0KG5hbWUsIGdldENvbmZpZygpKTtcbiAgaWYgKGJyYW5jaGVzW25hbWVdID09PSB2b2lkIDApIHtcbiAgICBicmFuY2hlc1tuYW1lXSA9IGhlYWQgIT0gbnVsbCA/IGhlYWQuaWQgOiBudWxsO1xuICAgIGJyYW5jaGVzQ29uZmlnW25hbWVdID0geyBuYW1lLCBvcmRlcjogb3JkZXIgPyBwYXJzZUludChvcmRlciwgMTApIDogbnVsbCB9O1xuICAgIGNoZWNrb3V0KG5hbWUpO1xuICAgIGxvZy5kZWJ1ZyhcImluIGNyZWF0ZUJyYW5jaFwiKTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAnVHJ5aW5nIHRvIGNyZWF0ZSBhbiBleGlzdGluZyBicmFuY2guIChIZWxwOiBFaXRoZXIgdXNlIGEgbmV3IG5hbWUgaWYgeW91IHdhbnQgY3JlYXRlIGEgbmV3IGJyYW5jaCBvciB0cnkgdXNpbmcgXCJjaGVja291dCAnICsgbmFtZSArICdcIiknXG4gICAgKTtcbiAgICBlcnJvci5oYXNoID0ge1xuICAgICAgdGV4dDogXCJicmFuY2ggXCIgKyBuYW1lLFxuICAgICAgdG9rZW46IFwiYnJhbmNoIFwiICsgbmFtZSxcbiAgICAgIGxpbmU6IFwiMVwiLFxuICAgICAgbG9jOiB7IGZpcnN0X2xpbmU6IDEsIGxhc3RfbGluZTogMSwgZmlyc3RfY29sdW1uOiAxLCBsYXN0X2NvbHVtbjogMSB9LFxuICAgICAgZXhwZWN0ZWQ6IFsnXCJjaGVja291dCAnICsgbmFtZSArICdcIiddXG4gICAgfTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcbmNvbnN0IG1lcmdlID0gZnVuY3Rpb24ob3RoZXJCcmFuY2gsIGN1c3RvbV9pZCwgb3ZlcnJpZGVfdHlwZSwgY3VzdG9tX3RhZykge1xuICBvdGhlckJyYW5jaCA9IGNvbW1vbi5zYW5pdGl6ZVRleHQob3RoZXJCcmFuY2gsIGdldENvbmZpZygpKTtcbiAgY3VzdG9tX2lkID0gY29tbW9uLnNhbml0aXplVGV4dChjdXN0b21faWQsIGdldENvbmZpZygpKTtcbiAgY29uc3QgY3VycmVudENvbW1pdCA9IGNvbW1pdHNbYnJhbmNoZXNbY3VyQnJhbmNoXV07XG4gIGNvbnN0IG90aGVyQ29tbWl0ID0gY29tbWl0c1ticmFuY2hlc1tvdGhlckJyYW5jaF1dO1xuICBpZiAoY3VyQnJhbmNoID09PSBvdGhlckJyYW5jaCkge1xuICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcignSW5jb3JyZWN0IHVzYWdlIG9mIFwibWVyZ2VcIi4gQ2Fubm90IG1lcmdlIGEgYnJhbmNoIHRvIGl0c2VsZicpO1xuICAgIGVycm9yLmhhc2ggPSB7XG4gICAgICB0ZXh0OiBcIm1lcmdlIFwiICsgb3RoZXJCcmFuY2gsXG4gICAgICB0b2tlbjogXCJtZXJnZSBcIiArIG90aGVyQnJhbmNoLFxuICAgICAgbGluZTogXCIxXCIsXG4gICAgICBsb2M6IHsgZmlyc3RfbGluZTogMSwgbGFzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDEsIGxhc3RfY29sdW1uOiAxIH0sXG4gICAgICBleHBlY3RlZDogW1wiYnJhbmNoIGFiY1wiXVxuICAgIH07XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZWxzZSBpZiAoY3VycmVudENvbW1pdCA9PT0gdm9pZCAwIHx8ICFjdXJyZW50Q29tbWl0KSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgJ0luY29ycmVjdCB1c2FnZSBvZiBcIm1lcmdlXCIuIEN1cnJlbnQgYnJhbmNoICgnICsgY3VyQnJhbmNoICsgXCIpaGFzIG5vIGNvbW1pdHNcIlxuICAgICk7XG4gICAgZXJyb3IuaGFzaCA9IHtcbiAgICAgIHRleHQ6IFwibWVyZ2UgXCIgKyBvdGhlckJyYW5jaCxcbiAgICAgIHRva2VuOiBcIm1lcmdlIFwiICsgb3RoZXJCcmFuY2gsXG4gICAgICBsaW5lOiBcIjFcIixcbiAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgIGV4cGVjdGVkOiBbXCJjb21taXRcIl1cbiAgICB9O1xuICAgIHRocm93IGVycm9yO1xuICB9IGVsc2UgaWYgKGJyYW5jaGVzW290aGVyQnJhbmNoXSA9PT0gdm9pZCAwKSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgJ0luY29ycmVjdCB1c2FnZSBvZiBcIm1lcmdlXCIuIEJyYW5jaCB0byBiZSBtZXJnZWQgKCcgKyBvdGhlckJyYW5jaCArIFwiKSBkb2VzIG5vdCBleGlzdFwiXG4gICAgKTtcbiAgICBlcnJvci5oYXNoID0ge1xuICAgICAgdGV4dDogXCJtZXJnZSBcIiArIG90aGVyQnJhbmNoLFxuICAgICAgdG9rZW46IFwibWVyZ2UgXCIgKyBvdGhlckJyYW5jaCxcbiAgICAgIGxpbmU6IFwiMVwiLFxuICAgICAgbG9jOiB7IGZpcnN0X2xpbmU6IDEsIGxhc3RfbGluZTogMSwgZmlyc3RfY29sdW1uOiAxLCBsYXN0X2NvbHVtbjogMSB9LFxuICAgICAgZXhwZWN0ZWQ6IFtcImJyYW5jaCBcIiArIG90aGVyQnJhbmNoXVxuICAgIH07XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZWxzZSBpZiAob3RoZXJDb21taXQgPT09IHZvaWQgMCB8fCAhb3RoZXJDb21taXQpIHtcbiAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAnSW5jb3JyZWN0IHVzYWdlIG9mIFwibWVyZ2VcIi4gQnJhbmNoIHRvIGJlIG1lcmdlZCAoJyArIG90aGVyQnJhbmNoICsgXCIpIGhhcyBubyBjb21taXRzXCJcbiAgICApO1xuICAgIGVycm9yLmhhc2ggPSB7XG4gICAgICB0ZXh0OiBcIm1lcmdlIFwiICsgb3RoZXJCcmFuY2gsXG4gICAgICB0b2tlbjogXCJtZXJnZSBcIiArIG90aGVyQnJhbmNoLFxuICAgICAgbGluZTogXCIxXCIsXG4gICAgICBsb2M6IHsgZmlyc3RfbGluZTogMSwgbGFzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDEsIGxhc3RfY29sdW1uOiAxIH0sXG4gICAgICBleHBlY3RlZDogWydcImNvbW1pdFwiJ11cbiAgICB9O1xuICAgIHRocm93IGVycm9yO1xuICB9IGVsc2UgaWYgKGN1cnJlbnRDb21taXQgPT09IG90aGVyQ29tbWl0KSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKCdJbmNvcnJlY3QgdXNhZ2Ugb2YgXCJtZXJnZVwiLiBCb3RoIGJyYW5jaGVzIGhhdmUgc2FtZSBoZWFkJyk7XG4gICAgZXJyb3IuaGFzaCA9IHtcbiAgICAgIHRleHQ6IFwibWVyZ2UgXCIgKyBvdGhlckJyYW5jaCxcbiAgICAgIHRva2VuOiBcIm1lcmdlIFwiICsgb3RoZXJCcmFuY2gsXG4gICAgICBsaW5lOiBcIjFcIixcbiAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgIGV4cGVjdGVkOiBbXCJicmFuY2ggYWJjXCJdXG4gICAgfTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSBlbHNlIGlmIChjdXN0b21faWQgJiYgY29tbWl0c1tjdXN0b21faWRdICE9PSB2b2lkIDApIHtcbiAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAnSW5jb3JyZWN0IHVzYWdlIG9mIFwibWVyZ2VcIi4gQ29tbWl0IHdpdGggaWQ6JyArIGN1c3RvbV9pZCArIFwiIGFscmVhZHkgZXhpc3RzLCB1c2UgZGlmZmVyZW50IGN1c3RvbSBJZFwiXG4gICAgKTtcbiAgICBlcnJvci5oYXNoID0ge1xuICAgICAgdGV4dDogXCJtZXJnZSBcIiArIG90aGVyQnJhbmNoICsgY3VzdG9tX2lkICsgb3ZlcnJpZGVfdHlwZSArIGN1c3RvbV90YWcsXG4gICAgICB0b2tlbjogXCJtZXJnZSBcIiArIG90aGVyQnJhbmNoICsgY3VzdG9tX2lkICsgb3ZlcnJpZGVfdHlwZSArIGN1c3RvbV90YWcsXG4gICAgICBsaW5lOiBcIjFcIixcbiAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgIGV4cGVjdGVkOiBbXG4gICAgICAgIFwibWVyZ2UgXCIgKyBvdGhlckJyYW5jaCArIFwiIFwiICsgY3VzdG9tX2lkICsgXCJfVU5JUVVFIFwiICsgb3ZlcnJpZGVfdHlwZSArIFwiIFwiICsgY3VzdG9tX3RhZ1xuICAgICAgXVxuICAgIH07XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgY29uc3QgY29tbWl0MiA9IHtcbiAgICBpZDogY3VzdG9tX2lkID8gY3VzdG9tX2lkIDogc2VxICsgXCItXCIgKyBnZXRJZCgpLFxuICAgIG1lc3NhZ2U6IFwibWVyZ2VkIGJyYW5jaCBcIiArIG90aGVyQnJhbmNoICsgXCIgaW50byBcIiArIGN1ckJyYW5jaCxcbiAgICBzZXE6IHNlcSsrLFxuICAgIHBhcmVudHM6IFtoZWFkID09IG51bGwgPyBudWxsIDogaGVhZC5pZCwgYnJhbmNoZXNbb3RoZXJCcmFuY2hdXSxcbiAgICBicmFuY2g6IGN1ckJyYW5jaCxcbiAgICB0eXBlOiBjb21taXRUeXBlJDEuTUVSR0UsXG4gICAgY3VzdG9tVHlwZTogb3ZlcnJpZGVfdHlwZSxcbiAgICBjdXN0b21JZDogY3VzdG9tX2lkID8gdHJ1ZSA6IGZhbHNlLFxuICAgIHRhZzogY3VzdG9tX3RhZyA/IGN1c3RvbV90YWcgOiBcIlwiXG4gIH07XG4gIGhlYWQgPSBjb21taXQyO1xuICBjb21taXRzW2NvbW1pdDIuaWRdID0gY29tbWl0MjtcbiAgYnJhbmNoZXNbY3VyQnJhbmNoXSA9IGNvbW1pdDIuaWQ7XG4gIGxvZy5kZWJ1ZyhicmFuY2hlcyk7XG4gIGxvZy5kZWJ1ZyhcImluIG1lcmdlQnJhbmNoXCIpO1xufTtcbmNvbnN0IGNoZXJyeVBpY2sgPSBmdW5jdGlvbihzb3VyY2VJZCwgdGFyZ2V0SWQsIHRhZykge1xuICBsb2cuZGVidWcoXCJFbnRlcmluZyBjaGVycnlQaWNrOlwiLCBzb3VyY2VJZCwgdGFyZ2V0SWQsIHRhZyk7XG4gIHNvdXJjZUlkID0gY29tbW9uLnNhbml0aXplVGV4dChzb3VyY2VJZCwgZ2V0Q29uZmlnKCkpO1xuICB0YXJnZXRJZCA9IGNvbW1vbi5zYW5pdGl6ZVRleHQodGFyZ2V0SWQsIGdldENvbmZpZygpKTtcbiAgdGFnID0gY29tbW9uLnNhbml0aXplVGV4dCh0YWcsIGdldENvbmZpZygpKTtcbiAgaWYgKCFzb3VyY2VJZCB8fCBjb21taXRzW3NvdXJjZUlkXSA9PT0gdm9pZCAwKSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgJ0luY29ycmVjdCB1c2FnZSBvZiBcImNoZXJyeVBpY2tcIi4gU291cmNlIGNvbW1pdCBpZCBzaG91bGQgZXhpc3QgYW5kIHByb3ZpZGVkJ1xuICAgICk7XG4gICAgZXJyb3IuaGFzaCA9IHtcbiAgICAgIHRleHQ6IFwiY2hlcnJ5UGljayBcIiArIHNvdXJjZUlkICsgXCIgXCIgKyB0YXJnZXRJZCxcbiAgICAgIHRva2VuOiBcImNoZXJyeVBpY2sgXCIgKyBzb3VyY2VJZCArIFwiIFwiICsgdGFyZ2V0SWQsXG4gICAgICBsaW5lOiBcIjFcIixcbiAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgIGV4cGVjdGVkOiBbXCJjaGVycnktcGljayBhYmNcIl1cbiAgICB9O1xuICAgIHRocm93IGVycm9yO1xuICB9XG4gIGxldCBzb3VyY2VDb21taXQgPSBjb21taXRzW3NvdXJjZUlkXTtcbiAgbGV0IHNvdXJjZUNvbW1pdEJyYW5jaCA9IHNvdXJjZUNvbW1pdC5icmFuY2g7XG4gIGlmIChzb3VyY2VDb21taXQudHlwZSA9PT0gY29tbWl0VHlwZSQxLk1FUkdFKSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgJ0luY29ycmVjdCB1c2FnZSBvZiBcImNoZXJyeVBpY2tcIi4gU291cmNlIGNvbW1pdCBzaG91bGQgbm90IGJlIGEgbWVyZ2UgY29tbWl0J1xuICAgICk7XG4gICAgZXJyb3IuaGFzaCA9IHtcbiAgICAgIHRleHQ6IFwiY2hlcnJ5UGljayBcIiArIHNvdXJjZUlkICsgXCIgXCIgKyB0YXJnZXRJZCxcbiAgICAgIHRva2VuOiBcImNoZXJyeVBpY2sgXCIgKyBzb3VyY2VJZCArIFwiIFwiICsgdGFyZ2V0SWQsXG4gICAgICBsaW5lOiBcIjFcIixcbiAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgIGV4cGVjdGVkOiBbXCJjaGVycnktcGljayBhYmNcIl1cbiAgICB9O1xuICAgIHRocm93IGVycm9yO1xuICB9XG4gIGlmICghdGFyZ2V0SWQgfHwgY29tbWl0c1t0YXJnZXRJZF0gPT09IHZvaWQgMCkge1xuICAgIGlmIChzb3VyY2VDb21taXRCcmFuY2ggPT09IGN1ckJyYW5jaCkge1xuICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFxuICAgICAgICAnSW5jb3JyZWN0IHVzYWdlIG9mIFwiY2hlcnJ5UGlja1wiLiBTb3VyY2UgY29tbWl0IGlzIGFscmVhZHkgb24gY3VycmVudCBicmFuY2gnXG4gICAgICApO1xuICAgICAgZXJyb3IuaGFzaCA9IHtcbiAgICAgICAgdGV4dDogXCJjaGVycnlQaWNrIFwiICsgc291cmNlSWQgKyBcIiBcIiArIHRhcmdldElkLFxuICAgICAgICB0b2tlbjogXCJjaGVycnlQaWNrIFwiICsgc291cmNlSWQgKyBcIiBcIiArIHRhcmdldElkLFxuICAgICAgICBsaW5lOiBcIjFcIixcbiAgICAgICAgbG9jOiB7IGZpcnN0X2xpbmU6IDEsIGxhc3RfbGluZTogMSwgZmlyc3RfY29sdW1uOiAxLCBsYXN0X2NvbHVtbjogMSB9LFxuICAgICAgICBleHBlY3RlZDogW1wiY2hlcnJ5LXBpY2sgYWJjXCJdXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRDb21taXQgPSBjb21taXRzW2JyYW5jaGVzW2N1ckJyYW5jaF1dO1xuICAgIGlmIChjdXJyZW50Q29tbWl0ID09PSB2b2lkIDAgfHwgIWN1cnJlbnRDb21taXQpIHtcbiAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ0luY29ycmVjdCB1c2FnZSBvZiBcImNoZXJyeS1waWNrXCIuIEN1cnJlbnQgYnJhbmNoICgnICsgY3VyQnJhbmNoICsgXCIpaGFzIG5vIGNvbW1pdHNcIlxuICAgICAgKTtcbiAgICAgIGVycm9yLmhhc2ggPSB7XG4gICAgICAgIHRleHQ6IFwiY2hlcnJ5UGljayBcIiArIHNvdXJjZUlkICsgXCIgXCIgKyB0YXJnZXRJZCxcbiAgICAgICAgdG9rZW46IFwiY2hlcnJ5UGljayBcIiArIHNvdXJjZUlkICsgXCIgXCIgKyB0YXJnZXRJZCxcbiAgICAgICAgbGluZTogXCIxXCIsXG4gICAgICAgIGxvYzogeyBmaXJzdF9saW5lOiAxLCBsYXN0X2xpbmU6IDEsIGZpcnN0X2NvbHVtbjogMSwgbGFzdF9jb2x1bW46IDEgfSxcbiAgICAgICAgZXhwZWN0ZWQ6IFtcImNoZXJyeS1waWNrIGFiY1wiXVxuICAgICAgfTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBjb25zdCBjb21taXQyID0ge1xuICAgICAgaWQ6IHNlcSArIFwiLVwiICsgZ2V0SWQoKSxcbiAgICAgIG1lc3NhZ2U6IFwiY2hlcnJ5LXBpY2tlZCBcIiArIHNvdXJjZUNvbW1pdCArIFwiIGludG8gXCIgKyBjdXJCcmFuY2gsXG4gICAgICBzZXE6IHNlcSsrLFxuICAgICAgcGFyZW50czogW2hlYWQgPT0gbnVsbCA/IG51bGwgOiBoZWFkLmlkLCBzb3VyY2VDb21taXQuaWRdLFxuICAgICAgYnJhbmNoOiBjdXJCcmFuY2gsXG4gICAgICB0eXBlOiBjb21taXRUeXBlJDEuQ0hFUlJZX1BJQ0ssXG4gICAgICB0YWc6IHRhZyA/PyBcImNoZXJyeS1waWNrOlwiICsgc291cmNlQ29tbWl0LmlkXG4gICAgfTtcbiAgICBoZWFkID0gY29tbWl0MjtcbiAgICBjb21taXRzW2NvbW1pdDIuaWRdID0gY29tbWl0MjtcbiAgICBicmFuY2hlc1tjdXJCcmFuY2hdID0gY29tbWl0Mi5pZDtcbiAgICBsb2cuZGVidWcoYnJhbmNoZXMpO1xuICAgIGxvZy5kZWJ1ZyhcImluIGNoZXJyeVBpY2tcIik7XG4gIH1cbn07XG5jb25zdCBjaGVja291dCA9IGZ1bmN0aW9uKGJyYW5jaDIpIHtcbiAgYnJhbmNoMiA9IGNvbW1vbi5zYW5pdGl6ZVRleHQoYnJhbmNoMiwgZ2V0Q29uZmlnKCkpO1xuICBpZiAoYnJhbmNoZXNbYnJhbmNoMl0gPT09IHZvaWQgMCkge1xuICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICdUcnlpbmcgdG8gY2hlY2tvdXQgYnJhbmNoIHdoaWNoIGlzIG5vdCB5ZXQgY3JlYXRlZC4gKEhlbHAgdHJ5IHVzaW5nIFwiYnJhbmNoICcgKyBicmFuY2gyICsgJ1wiKSdcbiAgICApO1xuICAgIGVycm9yLmhhc2ggPSB7XG4gICAgICB0ZXh0OiBcImNoZWNrb3V0IFwiICsgYnJhbmNoMixcbiAgICAgIHRva2VuOiBcImNoZWNrb3V0IFwiICsgYnJhbmNoMixcbiAgICAgIGxpbmU6IFwiMVwiLFxuICAgICAgbG9jOiB7IGZpcnN0X2xpbmU6IDEsIGxhc3RfbGluZTogMSwgZmlyc3RfY29sdW1uOiAxLCBsYXN0X2NvbHVtbjogMSB9LFxuICAgICAgZXhwZWN0ZWQ6IFsnXCJicmFuY2ggJyArIGJyYW5jaDIgKyAnXCInXVxuICAgIH07XG4gICAgdGhyb3cgZXJyb3I7XG4gIH0gZWxzZSB7XG4gICAgY3VyQnJhbmNoID0gYnJhbmNoMjtcbiAgICBjb25zdCBpZCA9IGJyYW5jaGVzW2N1ckJyYW5jaF07XG4gICAgaGVhZCA9IGNvbW1pdHNbaWRdO1xuICB9XG59O1xuZnVuY3Rpb24gdXBzZXJ0KGFyciwga2V5LCBuZXdWYWwpIHtcbiAgY29uc3QgaW5kZXggPSBhcnIuaW5kZXhPZihrZXkpO1xuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgYXJyLnB1c2gobmV3VmFsKTtcbiAgfSBlbHNlIHtcbiAgICBhcnIuc3BsaWNlKGluZGV4LCAxLCBuZXdWYWwpO1xuICB9XG59XG5mdW5jdGlvbiBwcmV0dHlQcmludENvbW1pdEhpc3RvcnkoY29tbWl0QXJyKSB7XG4gIGNvbnN0IGNvbW1pdDIgPSBjb21taXRBcnIucmVkdWNlKChvdXQsIGNvbW1pdDMpID0+IHtcbiAgICBpZiAob3V0LnNlcSA+IGNvbW1pdDMuc2VxKSB7XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICByZXR1cm4gY29tbWl0MztcbiAgfSwgY29tbWl0QXJyWzBdKTtcbiAgbGV0IGxpbmUgPSBcIlwiO1xuICBjb21taXRBcnIuZm9yRWFjaChmdW5jdGlvbihjKSB7XG4gICAgaWYgKGMgPT09IGNvbW1pdDIpIHtcbiAgICAgIGxpbmUgKz0gXCJcdCpcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZSArPSBcIlx0fFwiO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGxhYmVsID0gW2xpbmUsIGNvbW1pdDIuaWQsIGNvbW1pdDIuc2VxXTtcbiAgZm9yIChsZXQgYnJhbmNoMiBpbiBicmFuY2hlcykge1xuICAgIGlmIChicmFuY2hlc1ticmFuY2gyXSA9PT0gY29tbWl0Mi5pZCkge1xuICAgICAgbGFiZWwucHVzaChicmFuY2gyKTtcbiAgICB9XG4gIH1cbiAgbG9nLmRlYnVnKGxhYmVsLmpvaW4oXCIgXCIpKTtcbiAgaWYgKGNvbW1pdDIucGFyZW50cyAmJiBjb21taXQyLnBhcmVudHMubGVuZ3RoID09IDIpIHtcbiAgICBjb25zdCBuZXdDb21taXQgPSBjb21taXRzW2NvbW1pdDIucGFyZW50c1swXV07XG4gICAgdXBzZXJ0KGNvbW1pdEFyciwgY29tbWl0MiwgbmV3Q29tbWl0KTtcbiAgICBjb21taXRBcnIucHVzaChjb21taXRzW2NvbW1pdDIucGFyZW50c1sxXV0pO1xuICB9IGVsc2UgaWYgKGNvbW1pdDIucGFyZW50cy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBuZXh0Q29tbWl0ID0gY29tbWl0c1tjb21taXQyLnBhcmVudHNdO1xuICAgIHVwc2VydChjb21taXRBcnIsIGNvbW1pdDIsIG5leHRDb21taXQpO1xuICB9XG4gIGNvbW1pdEFyciA9IHVuaXFCeShjb21taXRBcnIsIChjKSA9PiBjLmlkKTtcbiAgcHJldHR5UHJpbnRDb21taXRIaXN0b3J5KGNvbW1pdEFycik7XG59XG5jb25zdCBwcmV0dHlQcmludCA9IGZ1bmN0aW9uKCkge1xuICBsb2cuZGVidWcoY29tbWl0cyk7XG4gIGNvbnN0IG5vZGUgPSBnZXRDb21taXRzQXJyYXkoKVswXTtcbiAgcHJldHR5UHJpbnRDb21taXRIaXN0b3J5KFtub2RlXSk7XG59O1xuY29uc3QgY2xlYXIkMSA9IGZ1bmN0aW9uKCkge1xuICBjb21taXRzID0ge307XG4gIGhlYWQgPSBudWxsO1xuICBsZXQgbWFpbkJyYW5jaCA9IGdldENvbmZpZygpLmdpdEdyYXBoLm1haW5CcmFuY2hOYW1lO1xuICBsZXQgbWFpbkJyYW5jaE9yZGVyMiA9IGdldENvbmZpZygpLmdpdEdyYXBoLm1haW5CcmFuY2hPcmRlcjtcbiAgYnJhbmNoZXMgPSB7fTtcbiAgYnJhbmNoZXNbbWFpbkJyYW5jaF0gPSBudWxsO1xuICBicmFuY2hlc0NvbmZpZyA9IHt9O1xuICBicmFuY2hlc0NvbmZpZ1ttYWluQnJhbmNoXSA9IHsgbmFtZTogbWFpbkJyYW5jaCwgb3JkZXI6IG1haW5CcmFuY2hPcmRlcjIgfTtcbiAgY3VyQnJhbmNoID0gbWFpbkJyYW5jaDtcbiAgc2VxID0gMDtcbiAgY2xlYXIkMigpO1xufTtcbmNvbnN0IGdldEJyYW5jaGVzQXNPYmpBcnJheSA9IGZ1bmN0aW9uKCkge1xuICBjb25zdCBicmFuY2hlc0FycmF5ID0gT2JqZWN0LnZhbHVlcyhicmFuY2hlc0NvbmZpZykubWFwKChicmFuY2hDb25maWcsIGkpID0+IHtcbiAgICBpZiAoYnJhbmNoQ29uZmlnLm9yZGVyICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYnJhbmNoQ29uZmlnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYnJhbmNoQ29uZmlnLFxuICAgICAgb3JkZXI6IHBhcnNlRmxvYXQoYDAuJHtpfWAsIDEwKVxuICAgIH07XG4gIH0pLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKS5tYXAoKHsgbmFtZSB9KSA9PiAoeyBuYW1lIH0pKTtcbiAgcmV0dXJuIGJyYW5jaGVzQXJyYXk7XG59O1xuY29uc3QgZ2V0QnJhbmNoZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJyYW5jaGVzO1xufTtcbmNvbnN0IGdldENvbW1pdHMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbW1pdHM7XG59O1xuY29uc3QgZ2V0Q29tbWl0c0FycmF5ID0gZnVuY3Rpb24oKSB7XG4gIGNvbnN0IGNvbW1pdEFyciA9IE9iamVjdC5rZXlzKGNvbW1pdHMpLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gY29tbWl0c1trZXldO1xuICB9KTtcbiAgY29tbWl0QXJyLmZvckVhY2goZnVuY3Rpb24obykge1xuICAgIGxvZy5kZWJ1ZyhvLmlkKTtcbiAgfSk7XG4gIGNvbW1pdEFyci5zb3J0KChhLCBiKSA9PiBhLnNlcSAtIGIuc2VxKTtcbiAgcmV0dXJuIGNvbW1pdEFycjtcbn07XG5jb25zdCBnZXRDdXJyZW50QnJhbmNoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjdXJCcmFuY2g7XG59O1xuY29uc3QgZ2V0RGlyZWN0aW9uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBkaXJlY3Rpb247XG59O1xuY29uc3QgZ2V0SGVhZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gaGVhZDtcbn07XG5jb25zdCBjb21taXRUeXBlJDEgPSB7XG4gIE5PUk1BTDogMCxcbiAgUkVWRVJTRTogMSxcbiAgSElHSExJR0hUOiAyLFxuICBNRVJHRTogMyxcbiAgQ0hFUlJZX1BJQ0s6IDRcbn07XG5jb25zdCBnaXRHcmFwaERiID0ge1xuICBwYXJzZURpcmVjdGl2ZSxcbiAgZ2V0Q29uZmlnOiAoKSA9PiBnZXRDb25maWcoKS5naXRHcmFwaCxcbiAgc2V0RGlyZWN0aW9uLFxuICBzZXRPcHRpb25zLFxuICBnZXRPcHRpb25zLFxuICBjb21taXQsXG4gIGJyYW5jaCxcbiAgbWVyZ2UsXG4gIGNoZXJyeVBpY2ssXG4gIGNoZWNrb3V0LFxuICAvL3Jlc2V0LFxuICBwcmV0dHlQcmludCxcbiAgY2xlYXI6IGNsZWFyJDEsXG4gIGdldEJyYW5jaGVzQXNPYmpBcnJheSxcbiAgZ2V0QnJhbmNoZXMsXG4gIGdldENvbW1pdHMsXG4gIGdldENvbW1pdHNBcnJheSxcbiAgZ2V0Q3VycmVudEJyYW5jaCxcbiAgZ2V0RGlyZWN0aW9uLFxuICBnZXRIZWFkLFxuICBzZXRBY2NUaXRsZSxcbiAgZ2V0QWNjVGl0bGUsXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBzZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0RGlhZ3JhbVRpdGxlLFxuICBnZXREaWFncmFtVGl0bGUsXG4gIGNvbW1pdFR5cGU6IGNvbW1pdFR5cGUkMVxufTtcbmxldCBhbGxDb21taXRzRGljdCA9IHt9O1xuY29uc3QgY29tbWl0VHlwZSA9IHtcbiAgTk9STUFMOiAwLFxuICBSRVZFUlNFOiAxLFxuICBISUdITElHSFQ6IDIsXG4gIE1FUkdFOiAzLFxuICBDSEVSUllfUElDSzogNFxufTtcbmNvbnN0IFRIRU1FX0NPTE9SX0xJTUlUID0gODtcbmxldCBicmFuY2hQb3MgPSB7fTtcbmxldCBjb21taXRQb3MgPSB7fTtcbmxldCBsYW5lcyA9IFtdO1xubGV0IG1heFBvcyA9IDA7XG5jb25zdCBjbGVhciA9ICgpID0+IHtcbiAgYnJhbmNoUG9zID0ge307XG4gIGNvbW1pdFBvcyA9IHt9O1xuICBhbGxDb21taXRzRGljdCA9IHt9O1xuICBtYXhQb3MgPSAwO1xuICBsYW5lcyA9IFtdO1xufTtcbmNvbnN0IGRyYXdUZXh0ID0gKHR4dCkgPT4ge1xuICBjb25zdCBzdmdMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwidGV4dFwiKTtcbiAgbGV0IHJvd3MgPSBbXTtcbiAgaWYgKHR5cGVvZiB0eHQgPT09IFwic3RyaW5nXCIpIHtcbiAgICByb3dzID0gdHh0LnNwbGl0KC9cXFxcbnxcXG58PGJyXFxzKlxcLz8+L2dpKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHR4dCkpIHtcbiAgICByb3dzID0gdHh0O1xuICB9IGVsc2Uge1xuICAgIHJvd3MgPSBbXTtcbiAgfVxuICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgY29uc3QgdHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRzcGFuXCIpO1xuICAgIHRzcGFuLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsIFwieG1sOnNwYWNlXCIsIFwicHJlc2VydmVcIik7XG4gICAgdHNwYW4uc2V0QXR0cmlidXRlKFwiZHlcIiwgXCIxZW1cIik7XG4gICAgdHNwYW4uc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgdHNwYW4uc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJyb3dcIik7XG4gICAgdHNwYW4udGV4dENvbnRlbnQgPSByb3cudHJpbSgpO1xuICAgIHN2Z0xhYmVsLmFwcGVuZENoaWxkKHRzcGFuKTtcbiAgfVxuICByZXR1cm4gc3ZnTGFiZWw7XG59O1xuY29uc3QgZHJhd0NvbW1pdHMgPSAoc3ZnLCBjb21taXRzMiwgbW9kaWZ5R3JhcGgpID0+IHtcbiAgY29uc3QgZ2l0R3JhcGhDb25maWcgPSBnZXRDb25maWckMSgpLmdpdEdyYXBoO1xuICBjb25zdCBnQnVsbGV0cyA9IHN2Zy5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImNvbW1pdC1idWxsZXRzXCIpO1xuICBjb25zdCBnTGFiZWxzID0gc3ZnLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiY29tbWl0LWxhYmVsc1wiKTtcbiAgbGV0IHBvcyA9IDA7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb21taXRzMik7XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBrZXlzLnNvcnQoKGEsIGIpID0+IHtcbiAgICByZXR1cm4gY29tbWl0czJbYV0uc2VxIC0gY29tbWl0czJbYl0uc2VxO1xuICB9KTtcbiAgc29ydGVkS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCBjb21taXQyID0gY29tbWl0czJba2V5XTtcbiAgICBjb25zdCB5ID0gYnJhbmNoUG9zW2NvbW1pdDIuYnJhbmNoXS5wb3M7XG4gICAgY29uc3QgeCA9IHBvcyArIDEwO1xuICAgIGlmIChtb2RpZnlHcmFwaCkge1xuICAgICAgbGV0IHR5cGVDbGFzcztcbiAgICAgIGxldCBjb21taXRTeW1ib2xUeXBlID0gY29tbWl0Mi5jdXN0b21UeXBlICE9PSB2b2lkIDAgJiYgY29tbWl0Mi5jdXN0b21UeXBlICE9PSBcIlwiID8gY29tbWl0Mi5jdXN0b21UeXBlIDogY29tbWl0Mi50eXBlO1xuICAgICAgc3dpdGNoIChjb21taXRTeW1ib2xUeXBlKSB7XG4gICAgICAgIGNhc2UgY29tbWl0VHlwZS5OT1JNQUw6XG4gICAgICAgICAgdHlwZUNsYXNzID0gXCJjb21taXQtbm9ybWFsXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgY29tbWl0VHlwZS5SRVZFUlNFOlxuICAgICAgICAgIHR5cGVDbGFzcyA9IFwiY29tbWl0LXJldmVyc2VcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjb21taXRUeXBlLkhJR0hMSUdIVDpcbiAgICAgICAgICB0eXBlQ2xhc3MgPSBcImNvbW1pdC1oaWdobGlnaHRcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBjb21taXRUeXBlLk1FUkdFOlxuICAgICAgICAgIHR5cGVDbGFzcyA9IFwiY29tbWl0LW1lcmdlXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgY29tbWl0VHlwZS5DSEVSUllfUElDSzpcbiAgICAgICAgICB0eXBlQ2xhc3MgPSBcImNvbW1pdC1jaGVycnktcGlja1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHR5cGVDbGFzcyA9IFwiY29tbWl0LW5vcm1hbFwiO1xuICAgICAgfVxuICAgICAgaWYgKGNvbW1pdFN5bWJvbFR5cGUgPT09IGNvbW1pdFR5cGUuSElHSExJR0hUKSB7XG4gICAgICAgIGNvbnN0IGNpcmNsZSA9IGdCdWxsZXRzLmFwcGVuZChcInJlY3RcIik7XG4gICAgICAgIGNpcmNsZS5hdHRyKFwieFwiLCB4IC0gMTApO1xuICAgICAgICBjaXJjbGUuYXR0cihcInlcIiwgeSAtIDEwKTtcbiAgICAgICAgY2lyY2xlLmF0dHIoXCJoZWlnaHRcIiwgMjApO1xuICAgICAgICBjaXJjbGUuYXR0cihcIndpZHRoXCIsIDIwKTtcbiAgICAgICAgY2lyY2xlLmF0dHIoXG4gICAgICAgICAgXCJjbGFzc1wiLFxuICAgICAgICAgIGBjb21taXQgJHtjb21taXQyLmlkfSBjb21taXQtaGlnaGxpZ2h0JHticmFuY2hQb3NbY29tbWl0Mi5icmFuY2hdLmluZGV4ICUgVEhFTUVfQ09MT1JfTElNSVR9ICR7dHlwZUNsYXNzfS1vdXRlcmBcbiAgICAgICAgKTtcbiAgICAgICAgZ0J1bGxldHMuYXBwZW5kKFwicmVjdFwiKS5hdHRyKFwieFwiLCB4IC0gNikuYXR0cihcInlcIiwgeSAtIDYpLmF0dHIoXCJoZWlnaHRcIiwgMTIpLmF0dHIoXCJ3aWR0aFwiLCAxMikuYXR0cihcbiAgICAgICAgICBcImNsYXNzXCIsXG4gICAgICAgICAgYGNvbW1pdCAke2NvbW1pdDIuaWR9IGNvbW1pdCR7YnJhbmNoUG9zW2NvbW1pdDIuYnJhbmNoXS5pbmRleCAlIFRIRU1FX0NPTE9SX0xJTUlUfSAke3R5cGVDbGFzc30taW5uZXJgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGNvbW1pdFN5bWJvbFR5cGUgPT09IGNvbW1pdFR5cGUuQ0hFUlJZX1BJQ0spIHtcbiAgICAgICAgZ0J1bGxldHMuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjeFwiLCB4KS5hdHRyKFwiY3lcIiwgeSkuYXR0cihcInJcIiwgMTApLmF0dHIoXCJjbGFzc1wiLCBgY29tbWl0ICR7Y29tbWl0Mi5pZH0gJHt0eXBlQ2xhc3N9YCk7XG4gICAgICAgIGdCdWxsZXRzLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiY3hcIiwgeCAtIDMpLmF0dHIoXCJjeVwiLCB5ICsgMikuYXR0cihcInJcIiwgMi43NSkuYXR0cihcImZpbGxcIiwgXCIjZmZmXCIpLmF0dHIoXCJjbGFzc1wiLCBgY29tbWl0ICR7Y29tbWl0Mi5pZH0gJHt0eXBlQ2xhc3N9YCk7XG4gICAgICAgIGdCdWxsZXRzLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiY3hcIiwgeCArIDMpLmF0dHIoXCJjeVwiLCB5ICsgMikuYXR0cihcInJcIiwgMi43NSkuYXR0cihcImZpbGxcIiwgXCIjZmZmXCIpLmF0dHIoXCJjbGFzc1wiLCBgY29tbWl0ICR7Y29tbWl0Mi5pZH0gJHt0eXBlQ2xhc3N9YCk7XG4gICAgICAgIGdCdWxsZXRzLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIHggKyAzKS5hdHRyKFwieTFcIiwgeSArIDEpLmF0dHIoXCJ4MlwiLCB4KS5hdHRyKFwieTJcIiwgeSAtIDUpLmF0dHIoXCJzdHJva2VcIiwgXCIjZmZmXCIpLmF0dHIoXCJjbGFzc1wiLCBgY29tbWl0ICR7Y29tbWl0Mi5pZH0gJHt0eXBlQ2xhc3N9YCk7XG4gICAgICAgIGdCdWxsZXRzLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIHggLSAzKS5hdHRyKFwieTFcIiwgeSArIDEpLmF0dHIoXCJ4MlwiLCB4KS5hdHRyKFwieTJcIiwgeSAtIDUpLmF0dHIoXCJzdHJva2VcIiwgXCIjZmZmXCIpLmF0dHIoXCJjbGFzc1wiLCBgY29tbWl0ICR7Y29tbWl0Mi5pZH0gJHt0eXBlQ2xhc3N9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjaXJjbGUgPSBnQnVsbGV0cy5hcHBlbmQoXCJjaXJjbGVcIik7XG4gICAgICAgIGNpcmNsZS5hdHRyKFwiY3hcIiwgeCk7XG4gICAgICAgIGNpcmNsZS5hdHRyKFwiY3lcIiwgeSk7XG4gICAgICAgIGNpcmNsZS5hdHRyKFwiclwiLCBjb21taXQyLnR5cGUgPT09IGNvbW1pdFR5cGUuTUVSR0UgPyA5IDogMTApO1xuICAgICAgICBjaXJjbGUuYXR0cihcbiAgICAgICAgICBcImNsYXNzXCIsXG4gICAgICAgICAgYGNvbW1pdCAke2NvbW1pdDIuaWR9IGNvbW1pdCR7YnJhbmNoUG9zW2NvbW1pdDIuYnJhbmNoXS5pbmRleCAlIFRIRU1FX0NPTE9SX0xJTUlUfWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGNvbW1pdFN5bWJvbFR5cGUgPT09IGNvbW1pdFR5cGUuTUVSR0UpIHtcbiAgICAgICAgICBjb25zdCBjaXJjbGUyID0gZ0J1bGxldHMuYXBwZW5kKFwiY2lyY2xlXCIpO1xuICAgICAgICAgIGNpcmNsZTIuYXR0cihcImN4XCIsIHgpO1xuICAgICAgICAgIGNpcmNsZTIuYXR0cihcImN5XCIsIHkpO1xuICAgICAgICAgIGNpcmNsZTIuYXR0cihcInJcIiwgNik7XG4gICAgICAgICAgY2lyY2xlMi5hdHRyKFxuICAgICAgICAgICAgXCJjbGFzc1wiLFxuICAgICAgICAgICAgYGNvbW1pdCAke3R5cGVDbGFzc30gJHtjb21taXQyLmlkfSBjb21taXQke2JyYW5jaFBvc1tjb21taXQyLmJyYW5jaF0uaW5kZXggJSBUSEVNRV9DT0xPUl9MSU1JVH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tbWl0U3ltYm9sVHlwZSA9PT0gY29tbWl0VHlwZS5SRVZFUlNFKSB7XG4gICAgICAgICAgY29uc3QgY3Jvc3MgPSBnQnVsbGV0cy5hcHBlbmQoXCJwYXRoXCIpO1xuICAgICAgICAgIGNyb3NzLmF0dHIoXCJkXCIsIGBNICR7eCAtIDV9LCR7eSAtIDV9TCR7eCArIDV9LCR7eSArIDV9TSR7eCAtIDV9LCR7eSArIDV9TCR7eCArIDV9LCR7eSAtIDV9YCkuYXR0cihcbiAgICAgICAgICAgIFwiY2xhc3NcIixcbiAgICAgICAgICAgIGBjb21taXQgJHt0eXBlQ2xhc3N9ICR7Y29tbWl0Mi5pZH0gY29tbWl0JHticmFuY2hQb3NbY29tbWl0Mi5icmFuY2hdLmluZGV4ICUgVEhFTUVfQ09MT1JfTElNSVR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29tbWl0UG9zW2NvbW1pdDIuaWRdID0geyB4OiBwb3MgKyAxMCwgeSB9O1xuICAgIGlmIChtb2RpZnlHcmFwaCkge1xuICAgICAgY29uc3QgcHggPSA0O1xuICAgICAgY29uc3QgcHkgPSAyO1xuICAgICAgaWYgKGNvbW1pdDIudHlwZSAhPT0gY29tbWl0VHlwZS5DSEVSUllfUElDSyAmJiAoY29tbWl0Mi5jdXN0b21JZCAmJiBjb21taXQyLnR5cGUgPT09IGNvbW1pdFR5cGUuTUVSR0UgfHwgY29tbWl0Mi50eXBlICE9PSBjb21taXRUeXBlLk1FUkdFKSAmJiBnaXRHcmFwaENvbmZpZy5zaG93Q29tbWl0TGFiZWwpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGdMYWJlbHMuYXBwZW5kKFwiZ1wiKTtcbiAgICAgICAgY29uc3QgbGFiZWxCa2cgPSB3cmFwcGVyLmluc2VydChcInJlY3RcIikuYXR0cihcImNsYXNzXCIsIFwiY29tbWl0LWxhYmVsLWJrZ1wiKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IHdyYXBwZXIuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCBwb3MpLmF0dHIoXCJ5XCIsIHkgKyAyNSkuYXR0cihcImNsYXNzXCIsIFwiY29tbWl0LWxhYmVsXCIpLnRleHQoY29tbWl0Mi5pZCk7XG4gICAgICAgIGxldCBiYm94ID0gdGV4dC5ub2RlKCkuZ2V0QkJveCgpO1xuICAgICAgICBsYWJlbEJrZy5hdHRyKFwieFwiLCBwb3MgKyAxMCAtIGJib3gud2lkdGggLyAyIC0gcHkpLmF0dHIoXCJ5XCIsIHkgKyAxMy41KS5hdHRyKFwid2lkdGhcIiwgYmJveC53aWR0aCArIDIgKiBweSkuYXR0cihcImhlaWdodFwiLCBiYm94LmhlaWdodCArIDIgKiBweSk7XG4gICAgICAgIHRleHQuYXR0cihcInhcIiwgcG9zICsgMTAgLSBiYm94LndpZHRoIC8gMik7XG4gICAgICAgIGlmIChnaXRHcmFwaENvbmZpZy5yb3RhdGVDb21taXRMYWJlbCkge1xuICAgICAgICAgIGxldCByX3ggPSAtNy41IC0gKGJib3gud2lkdGggKyAxMCkgLyAyNSAqIDkuNTtcbiAgICAgICAgICBsZXQgcl95ID0gMTAgKyBiYm94LndpZHRoIC8gMjUgKiA4LjU7XG4gICAgICAgICAgd3JhcHBlci5hdHRyKFxuICAgICAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgICAgIFwidHJhbnNsYXRlKFwiICsgcl94ICsgXCIsIFwiICsgcl95ICsgXCIpIHJvdGF0ZSgtNDUsIFwiICsgcG9zICsgXCIsIFwiICsgeSArIFwiKVwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbW1pdDIudGFnKSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBnTGFiZWxzLmluc2VydChcInBvbHlnb25cIik7XG4gICAgICAgIGNvbnN0IGhvbGUgPSBnTGFiZWxzLmFwcGVuZChcImNpcmNsZVwiKTtcbiAgICAgICAgY29uc3QgdGFnID0gZ0xhYmVscy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ5XCIsIHkgLSAxNikuYXR0cihcImNsYXNzXCIsIFwidGFnLWxhYmVsXCIpLnRleHQoY29tbWl0Mi50YWcpO1xuICAgICAgICBsZXQgdGFnQmJveCA9IHRhZy5ub2RlKCkuZ2V0QkJveCgpO1xuICAgICAgICB0YWcuYXR0cihcInhcIiwgcG9zICsgMTAgLSB0YWdCYm94LndpZHRoIC8gMik7XG4gICAgICAgIGNvbnN0IGgyID0gdGFnQmJveC5oZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBseSA9IHkgLSAxOS4yO1xuICAgICAgICByZWN0LmF0dHIoXCJjbGFzc1wiLCBcInRhZy1sYWJlbC1ia2dcIikuYXR0cihcbiAgICAgICAgICBcInBvaW50c1wiLFxuICAgICAgICAgIGBcbiAgICAgICAgICAke3BvcyAtIHRhZ0Jib3gud2lkdGggLyAyIC0gcHggLyAyfSwke2x5ICsgcHl9XG4gICAgICAgICAgJHtwb3MgLSB0YWdCYm94LndpZHRoIC8gMiAtIHB4IC8gMn0sJHtseSAtIHB5fVxuICAgICAgICAgICR7cG9zICsgMTAgLSB0YWdCYm94LndpZHRoIC8gMiAtIHB4fSwke2x5IC0gaDIgLSBweX1cbiAgICAgICAgICAke3BvcyArIDEwICsgdGFnQmJveC53aWR0aCAvIDIgKyBweH0sJHtseSAtIGgyIC0gcHl9XG4gICAgICAgICAgJHtwb3MgKyAxMCArIHRhZ0Jib3gud2lkdGggLyAyICsgcHh9LCR7bHkgKyBoMiArIHB5fVxuICAgICAgICAgICR7cG9zICsgMTAgLSB0YWdCYm94LndpZHRoIC8gMiAtIHB4fSwke2x5ICsgaDIgKyBweX1gXG4gICAgICAgICk7XG4gICAgICAgIGhvbGUuYXR0cihcImN4XCIsIHBvcyAtIHRhZ0Jib3gud2lkdGggLyAyICsgcHggLyAyKS5hdHRyKFwiY3lcIiwgbHkpLmF0dHIoXCJyXCIsIDEuNSkuYXR0cihcImNsYXNzXCIsIFwidGFnLWhvbGVcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHBvcyArPSA1MDtcbiAgICBpZiAocG9zID4gbWF4UG9zKSB7XG4gICAgICBtYXhQb3MgPSBwb3M7XG4gICAgfVxuICB9KTtcbn07XG5jb25zdCBoYXNPdmVybGFwcGluZ0NvbW1pdHMgPSAoY29tbWl0MSwgY29tbWl0MiwgYWxsQ29tbWl0cykgPT4ge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYWxsQ29tbWl0cyk7XG4gIGNvbnN0IG92ZXJsYXBwaW5nQ29taXRzID0ga2V5cy5maWx0ZXIoKGtleSkgPT4ge1xuICAgIHJldHVybiBhbGxDb21taXRzW2tleV0uYnJhbmNoID09PSBjb21taXQyLmJyYW5jaCAmJiBhbGxDb21taXRzW2tleV0uc2VxID4gY29tbWl0MS5zZXEgJiYgYWxsQ29tbWl0c1trZXldLnNlcSA8IGNvbW1pdDIuc2VxO1xuICB9KTtcbiAgcmV0dXJuIG92ZXJsYXBwaW5nQ29taXRzLmxlbmd0aCA+IDA7XG59O1xuY29uc3QgZmluZExhbmUgPSAoeTEsIHkyLCBkZXB0aCA9IDApID0+IHtcbiAgY29uc3QgY2FuZGlkYXRlID0geTEgKyBNYXRoLmFicyh5MSAtIHkyKSAvIDI7XG4gIGlmIChkZXB0aCA+IDUpIHtcbiAgICByZXR1cm4gY2FuZGlkYXRlO1xuICB9XG4gIGxldCBvayA9IGxhbmVzLmV2ZXJ5KChsYW5lKSA9PiBNYXRoLmFicyhsYW5lIC0gY2FuZGlkYXRlKSA+PSAxMCk7XG4gIGlmIChvaykge1xuICAgIGxhbmVzLnB1c2goY2FuZGlkYXRlKTtcbiAgICByZXR1cm4gY2FuZGlkYXRlO1xuICB9XG4gIGNvbnN0IGRpZmYgPSBNYXRoLmFicyh5MSAtIHkyKTtcbiAgcmV0dXJuIGZpbmRMYW5lKHkxLCB5MiAtIGRpZmYgLyA1LCBkZXB0aCArIDEpO1xufTtcbmNvbnN0IGRyYXdBcnJvdyA9IChzdmcsIGNvbW1pdDEsIGNvbW1pdDIsIGFsbENvbW1pdHMpID0+IHtcbiAgY29uc3QgcDEgPSBjb21taXRQb3NbY29tbWl0MS5pZF07XG4gIGNvbnN0IHAyID0gY29tbWl0UG9zW2NvbW1pdDIuaWRdO1xuICBjb25zdCBvdmVybGFwcGluZ0NvbW1pdHMgPSBoYXNPdmVybGFwcGluZ0NvbW1pdHMoY29tbWl0MSwgY29tbWl0MiwgYWxsQ29tbWl0cyk7XG4gIGxldCBhcmMgPSBcIlwiO1xuICBsZXQgYXJjMiA9IFwiXCI7XG4gIGxldCByYWRpdXMgPSAwO1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgbGV0IGNvbG9yQ2xhc3NOdW0gPSBicmFuY2hQb3NbY29tbWl0Mi5icmFuY2hdLmluZGV4O1xuICBsZXQgbGluZURlZjtcbiAgaWYgKG92ZXJsYXBwaW5nQ29tbWl0cykge1xuICAgIGFyYyA9IFwiQSAxMCAxMCwgMCwgMCwgMCxcIjtcbiAgICBhcmMyID0gXCJBIDEwIDEwLCAwLCAwLCAxLFwiO1xuICAgIHJhZGl1cyA9IDEwO1xuICAgIG9mZnNldCA9IDEwO1xuICAgIGNvbG9yQ2xhc3NOdW0gPSBicmFuY2hQb3NbY29tbWl0Mi5icmFuY2hdLmluZGV4O1xuICAgIGNvbnN0IGxpbmVZID0gcDEueSA8IHAyLnkgPyBmaW5kTGFuZShwMS55LCBwMi55KSA6IGZpbmRMYW5lKHAyLnksIHAxLnkpO1xuICAgIGlmIChwMS55IDwgcDIueSkge1xuICAgICAgbGluZURlZiA9IGBNICR7cDEueH0gJHtwMS55fSBMICR7cDEueH0gJHtsaW5lWSAtIHJhZGl1c30gJHthcmN9ICR7cDEueCArIG9mZnNldH0gJHtsaW5lWX0gTCAke3AyLnggLSByYWRpdXN9ICR7bGluZVl9ICR7YXJjMn0gJHtwMi54fSAke2xpbmVZICsgb2Zmc2V0fSBMICR7cDIueH0gJHtwMi55fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmVEZWYgPSBgTSAke3AxLnh9ICR7cDEueX0gTCAke3AxLnh9ICR7bGluZVkgKyByYWRpdXN9ICR7YXJjMn0gJHtwMS54ICsgb2Zmc2V0fSAke2xpbmVZfSBMICR7cDIueCAtIHJhZGl1c30gJHtsaW5lWX0gJHthcmN9ICR7cDIueH0gJHtsaW5lWSAtIG9mZnNldH0gTCAke3AyLnh9ICR7cDIueX1gO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAocDEueSA8IHAyLnkpIHtcbiAgICAgIGFyYyA9IFwiQSAyMCAyMCwgMCwgMCwgMCxcIjtcbiAgICAgIHJhZGl1cyA9IDIwO1xuICAgICAgb2Zmc2V0ID0gMjA7XG4gICAgICBjb2xvckNsYXNzTnVtID0gYnJhbmNoUG9zW2NvbW1pdDIuYnJhbmNoXS5pbmRleDtcbiAgICAgIGxpbmVEZWYgPSBgTSAke3AxLnh9ICR7cDEueX0gTCAke3AxLnh9ICR7cDIueSAtIHJhZGl1c30gJHthcmN9ICR7cDEueCArIG9mZnNldH0gJHtwMi55fSBMICR7cDIueH0gJHtwMi55fWA7XG4gICAgfVxuICAgIGlmIChwMS55ID4gcDIueSkge1xuICAgICAgYXJjID0gXCJBIDIwIDIwLCAwLCAwLCAwLFwiO1xuICAgICAgcmFkaXVzID0gMjA7XG4gICAgICBvZmZzZXQgPSAyMDtcbiAgICAgIGNvbG9yQ2xhc3NOdW0gPSBicmFuY2hQb3NbY29tbWl0MS5icmFuY2hdLmluZGV4O1xuICAgICAgbGluZURlZiA9IGBNICR7cDEueH0gJHtwMS55fSBMICR7cDIueCAtIHJhZGl1c30gJHtwMS55fSAke2FyY30gJHtwMi54fSAke3AxLnkgLSBvZmZzZXR9IEwgJHtwMi54fSAke3AyLnl9YDtcbiAgICB9XG4gICAgaWYgKHAxLnkgPT09IHAyLnkpIHtcbiAgICAgIGNvbG9yQ2xhc3NOdW0gPSBicmFuY2hQb3NbY29tbWl0MS5icmFuY2hdLmluZGV4O1xuICAgICAgbGluZURlZiA9IGBNICR7cDEueH0gJHtwMS55fSBMICR7cDEueH0gJHtwMi55IC0gcmFkaXVzfSAke2FyY30gJHtwMS54ICsgb2Zmc2V0fSAke3AyLnl9IEwgJHtwMi54fSAke3AyLnl9YDtcbiAgICB9XG4gIH1cbiAgc3ZnLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgbGluZURlZikuYXR0cihcImNsYXNzXCIsIFwiYXJyb3cgYXJyb3dcIiArIGNvbG9yQ2xhc3NOdW0gJSBUSEVNRV9DT0xPUl9MSU1JVCk7XG59O1xuY29uc3QgZHJhd0Fycm93cyA9IChzdmcsIGNvbW1pdHMyKSA9PiB7XG4gIGNvbnN0IGdBcnJvd3MgPSBzdmcuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJjb21taXQtYXJyb3dzXCIpO1xuICBPYmplY3Qua2V5cyhjb21taXRzMikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3QgY29tbWl0MiA9IGNvbW1pdHMyW2tleV07XG4gICAgaWYgKGNvbW1pdDIucGFyZW50cyAmJiBjb21taXQyLnBhcmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29tbWl0Mi5wYXJlbnRzLmZvckVhY2goKHBhcmVudCkgPT4ge1xuICAgICAgICBkcmF3QXJyb3coZ0Fycm93cywgY29tbWl0czJbcGFyZW50XSwgY29tbWl0MiwgY29tbWl0czIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5jb25zdCBkcmF3QnJhbmNoZXMgPSAoc3ZnLCBicmFuY2hlczIpID0+IHtcbiAgY29uc3QgZ2l0R3JhcGhDb25maWcgPSBnZXRDb25maWckMSgpLmdpdEdyYXBoO1xuICBjb25zdCBnID0gc3ZnLmFwcGVuZChcImdcIik7XG4gIGJyYW5jaGVzMi5mb3JFYWNoKChicmFuY2gyLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGFkanVzdEluZGV4Rm9yVGhlbWUgPSBpbmRleCAlIFRIRU1FX0NPTE9SX0xJTUlUO1xuICAgIGNvbnN0IHBvcyA9IGJyYW5jaFBvc1ticmFuY2gyLm5hbWVdLnBvcztcbiAgICBjb25zdCBsaW5lID0gZy5hcHBlbmQoXCJsaW5lXCIpO1xuICAgIGxpbmUuYXR0cihcIngxXCIsIDApO1xuICAgIGxpbmUuYXR0cihcInkxXCIsIHBvcyk7XG4gICAgbGluZS5hdHRyKFwieDJcIiwgbWF4UG9zKTtcbiAgICBsaW5lLmF0dHIoXCJ5MlwiLCBwb3MpO1xuICAgIGxpbmUuYXR0cihcImNsYXNzXCIsIFwiYnJhbmNoIGJyYW5jaFwiICsgYWRqdXN0SW5kZXhGb3JUaGVtZSk7XG4gICAgbGFuZXMucHVzaChwb3MpO1xuICAgIGxldCBuYW1lID0gYnJhbmNoMi5uYW1lO1xuICAgIGNvbnN0IGxhYmVsRWxlbWVudCA9IGRyYXdUZXh0KG5hbWUpO1xuICAgIGNvbnN0IGJrZyA9IGcuaW5zZXJ0KFwicmVjdFwiKTtcbiAgICBjb25zdCBicmFuY2hMYWJlbCA9IGcuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJicmFuY2hMYWJlbFwiKTtcbiAgICBjb25zdCBsYWJlbCA9IGJyYW5jaExhYmVsLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwibGFiZWwgYnJhbmNoLWxhYmVsXCIgKyBhZGp1c3RJbmRleEZvclRoZW1lKTtcbiAgICBsYWJlbC5ub2RlKCkuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTtcbiAgICBsZXQgYmJveCA9IGxhYmVsRWxlbWVudC5nZXRCQm94KCk7XG4gICAgYmtnLmF0dHIoXCJjbGFzc1wiLCBcImJyYW5jaExhYmVsQmtnIGxhYmVsXCIgKyBhZGp1c3RJbmRleEZvclRoZW1lKS5hdHRyKFwicnhcIiwgNCkuYXR0cihcInJ5XCIsIDQpLmF0dHIoXCJ4XCIsIC1iYm94LndpZHRoIC0gNCAtIChnaXRHcmFwaENvbmZpZy5yb3RhdGVDb21taXRMYWJlbCA9PT0gdHJ1ZSA/IDMwIDogMCkpLmF0dHIoXCJ5XCIsIC1iYm94LmhlaWdodCAvIDIgKyA4KS5hdHRyKFwid2lkdGhcIiwgYmJveC53aWR0aCArIDE4KS5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0ICsgNCk7XG4gICAgbGFiZWwuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICBcInRyYW5zbGF0ZShcIiArICgtYmJveC53aWR0aCAtIDE0IC0gKGdpdEdyYXBoQ29uZmlnLnJvdGF0ZUNvbW1pdExhYmVsID09PSB0cnVlID8gMzAgOiAwKSkgKyBcIiwgXCIgKyAocG9zIC0gYmJveC5oZWlnaHQgLyAyIC0gMSkgKyBcIilcIlxuICAgICk7XG4gICAgYmtnLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoLTE5LCBcIiArIChwb3MgLSBiYm94LmhlaWdodCAvIDIpICsgXCIpXCIpO1xuICB9KTtcbn07XG5jb25zdCBkcmF3ID0gZnVuY3Rpb24odHh0LCBpZCwgdmVyLCBkaWFnT2JqKSB7XG4gIGNsZWFyKCk7XG4gIGNvbnN0IGNvbmYgPSBnZXRDb25maWckMSgpO1xuICBjb25zdCBnaXRHcmFwaENvbmZpZyA9IGNvbmYuZ2l0R3JhcGg7XG4gIGxvZy5kZWJ1ZyhcImluIGdpdGdyYXBoIHJlbmRlcmVyXCIsIHR4dCArIFwiXFxuXCIsIFwiaWQ6XCIsIGlkLCB2ZXIpO1xuICBhbGxDb21taXRzRGljdCA9IGRpYWdPYmouZGIuZ2V0Q29tbWl0cygpO1xuICBjb25zdCBicmFuY2hlczIgPSBkaWFnT2JqLmRiLmdldEJyYW5jaGVzQXNPYmpBcnJheSgpO1xuICBsZXQgcG9zID0gMDtcbiAgYnJhbmNoZXMyLmZvckVhY2goKGJyYW5jaDIsIGluZGV4KSA9PiB7XG4gICAgYnJhbmNoUG9zW2JyYW5jaDIubmFtZV0gPSB7IHBvcywgaW5kZXggfTtcbiAgICBwb3MgKz0gNTAgKyAoZ2l0R3JhcGhDb25maWcucm90YXRlQ29tbWl0TGFiZWwgPyA0MCA6IDApO1xuICB9KTtcbiAgY29uc3QgZGlhZ3JhbTIgPSBzZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIGRyYXdDb21taXRzKGRpYWdyYW0yLCBhbGxDb21taXRzRGljdCwgZmFsc2UpO1xuICBpZiAoZ2l0R3JhcGhDb25maWcuc2hvd0JyYW5jaGVzKSB7XG4gICAgZHJhd0JyYW5jaGVzKGRpYWdyYW0yLCBicmFuY2hlczIpO1xuICB9XG4gIGRyYXdBcnJvd3MoZGlhZ3JhbTIsIGFsbENvbW1pdHNEaWN0KTtcbiAgZHJhd0NvbW1pdHMoZGlhZ3JhbTIsIGFsbENvbW1pdHNEaWN0LCB0cnVlKTtcbiAgdXRpbHMuaW5zZXJ0VGl0bGUoXG4gICAgZGlhZ3JhbTIsXG4gICAgXCJnaXRUaXRsZVRleHRcIixcbiAgICBnaXRHcmFwaENvbmZpZy50aXRsZVRvcE1hcmdpbixcbiAgICBkaWFnT2JqLmRiLmdldERpYWdyYW1UaXRsZSgpXG4gICk7XG4gIHNldHVwR3JhcGhWaWV3Ym94KFxuICAgIHZvaWQgMCxcbiAgICBkaWFncmFtMixcbiAgICBnaXRHcmFwaENvbmZpZy5kaWFncmFtUGFkZGluZyxcbiAgICBnaXRHcmFwaENvbmZpZy51c2VNYXhXaWR0aCA/PyBjb25mLnVzZU1heFdpZHRoXG4gICk7XG59O1xuY29uc3QgZ2l0R3JhcGhSZW5kZXJlciA9IHtcbiAgZHJhd1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zMikgPT4gYFxuICAuY29tbWl0LWlkLFxuICAuY29tbWl0LW1zZyxcbiAgLmJyYW5jaC1sYWJlbCB7XG4gICAgZmlsbDogbGlnaHRncmV5O1xuICAgIGNvbG9yOiBsaWdodGdyZXk7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gIH1cbiAgJHtbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10ubWFwKFxuICAoaSkgPT4gYFxuICAgICAgICAuYnJhbmNoLWxhYmVsJHtpfSB7IGZpbGw6ICR7b3B0aW9uczJbXCJnaXRCcmFuY2hMYWJlbFwiICsgaV19OyB9XG4gICAgICAgIC5jb21taXQke2l9IHsgc3Ryb2tlOiAke29wdGlvbnMyW1wiZ2l0XCIgKyBpXX07IGZpbGw6ICR7b3B0aW9uczJbXCJnaXRcIiArIGldfTsgfVxuICAgICAgICAuY29tbWl0LWhpZ2hsaWdodCR7aX0geyBzdHJva2U6ICR7b3B0aW9uczJbXCJnaXRJbnZcIiArIGldfTsgZmlsbDogJHtvcHRpb25zMltcImdpdEludlwiICsgaV19OyB9XG4gICAgICAgIC5sYWJlbCR7aX0gIHsgZmlsbDogJHtvcHRpb25zMltcImdpdFwiICsgaV19OyB9XG4gICAgICAgIC5hcnJvdyR7aX0geyBzdHJva2U6ICR7b3B0aW9uczJbXCJnaXRcIiArIGldfTsgfVxuICAgICAgICBgXG4pLmpvaW4oXCJcXG5cIil9XG5cbiAgLmJyYW5jaCB7XG4gICAgc3Ryb2tlLXdpZHRoOiAxO1xuICAgIHN0cm9rZTogJHtvcHRpb25zMi5saW5lQ29sb3J9O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDI7XG4gIH1cbiAgLmNvbW1pdC1sYWJlbCB7IGZvbnQtc2l6ZTogJHtvcHRpb25zMi5jb21taXRMYWJlbEZvbnRTaXplfTsgZmlsbDogJHtvcHRpb25zMi5jb21taXRMYWJlbENvbG9yfTt9XG4gIC5jb21taXQtbGFiZWwtYmtnIHsgZm9udC1zaXplOiAke29wdGlvbnMyLmNvbW1pdExhYmVsRm9udFNpemV9OyBmaWxsOiAke29wdGlvbnMyLmNvbW1pdExhYmVsQmFja2dyb3VuZH07IG9wYWNpdHk6IDAuNTsgfVxuICAudGFnLWxhYmVsIHsgZm9udC1zaXplOiAke29wdGlvbnMyLnRhZ0xhYmVsRm9udFNpemV9OyBmaWxsOiAke29wdGlvbnMyLnRhZ0xhYmVsQ29sb3J9O31cbiAgLnRhZy1sYWJlbC1ia2cgeyBmaWxsOiAke29wdGlvbnMyLnRhZ0xhYmVsQmFja2dyb3VuZH07IHN0cm9rZTogJHtvcHRpb25zMi50YWdMYWJlbEJvcmRlcn07IH1cbiAgLnRhZy1ob2xlIHsgZmlsbDogJHtvcHRpb25zMi50ZXh0Q29sb3J9OyB9XG5cbiAgLmNvbW1pdC1tZXJnZSB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMyLnByaW1hcnlDb2xvcn07XG4gICAgZmlsbDogJHtvcHRpb25zMi5wcmltYXJ5Q29sb3J9O1xuICB9XG4gIC5jb21taXQtcmV2ZXJzZSB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMyLnByaW1hcnlDb2xvcn07XG4gICAgZmlsbDogJHtvcHRpb25zMi5wcmltYXJ5Q29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgfVxuICAuY29tbWl0LWhpZ2hsaWdodC1vdXRlciB7XG4gIH1cbiAgLmNvbW1pdC1oaWdobGlnaHQtaW5uZXIge1xuICAgIHN0cm9rZTogJHtvcHRpb25zMi5wcmltYXJ5Q29sb3J9O1xuICAgIGZpbGw6ICR7b3B0aW9uczIucHJpbWFyeUNvbG9yfTtcbiAgfVxuXG4gIC5hcnJvdyB7IHN0cm9rZS13aWR0aDogODsgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOyBmaWxsOiBub25lfVxuICAuZ2l0VGl0bGVUZXh0IHtcbiAgICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmaWxsOiAke29wdGlvbnMyLnRleHRDb2xvcn07XG4gIH1cbmA7XG5jb25zdCBnaXRHcmFwaFN0eWxlcyA9IGdldFN0eWxlcztcbmNvbnN0IGRpYWdyYW0gPSB7XG4gIHBhcnNlcjogZ2l0R3JhcGhQYXJzZXIsXG4gIGRiOiBnaXRHcmFwaERiLFxuICByZW5kZXJlcjogZ2l0R3JhcGhSZW5kZXJlcixcbiAgc3R5bGVzOiBnaXRHcmFwaFN0eWxlc1xufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/gitGraphDiagram-1e960c50.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/index-a92ac404.js": +/*!************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/index-a92ac404.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"r\": () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/json.js\");\n/* harmony import */ var _edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./edges-49ac43a2.js */ \"../../../node_modules/mermaid/dist/edges-49ac43a2.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createText-3df630b5.js */ \"../../../node_modules/mermaid/dist/createText-3df630b5.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n\n\n\n\n\n\n\nlet clusterDb = {};\nlet descendants = {};\nlet parents = {};\nconst clear$1 = () => {\n descendants = {};\n parents = {};\n clusterDb = {};\n};\nconst isDescendant = (id, ancenstorId) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"In isDecendant\", ancenstorId, \" \", id, \" = \", descendants[ancenstorId].includes(id));\n if (descendants[ancenstorId].includes(id)) {\n return true;\n }\n return false;\n};\nconst edgeInCluster = (edge, clusterId) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Decendants of \", clusterId, \" is \", descendants[clusterId]);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge is \", edge);\n if (edge.v === clusterId) {\n return false;\n }\n if (edge.w === clusterId) {\n return false;\n }\n if (!descendants[clusterId]) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Tilt, \", clusterId, \",not in decendants\");\n return false;\n }\n return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);\n};\nconst copy = (clusterId, graph, newGraph, rootId) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\n \"Copying children of \",\n clusterId,\n \"root\",\n rootId,\n \"data\",\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\n \"Not Setting parent for node=\",\n node,\n \"cluster!==rootId\",\n clusterId !== rootId,\n \"node!==clusterId\",\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\n \"Skipping copy of edge \",\n edge.v,\n \"-->\",\n edge.w,\n \" rootId: \",\n rootId,\n \" clusterId:\",\n clusterId\n );\n }\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.error(e);\n }\n });\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n};\nconst extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents[child] = id;\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n};\nconst findNonClusterChild = (id, graph) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Searching\", id);\n const children = graph.children(id);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"This is a valid node\", id);\n return id;\n }\n for (const child of children) {\n const _id = findNonClusterChild(child, graph);\n if (_id) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Found replacement for\", id, \" => \", _id);\n return _id;\n }\n }\n};\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\nconst adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Opting out, no graph \");\n return;\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph)\n );\n descendants[id] = extractDescendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n if (edge.v !== id && edge.w !== id) {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Edge: \", edge, \" leaves cluster \", id);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Decendants of XXX \", id, \": \", descendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Not a cluster \", id, descendants);\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb[e.v],\n \" --- \",\n clusterDb[e.w]\n );\n if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n const specialId = e.w + \"---\" + e.v;\n graph.setNode(specialId, {\n domId: specialId,\n id: specialId,\n labelStyle: \"\",\n labelText: edge.label,\n padding: 0,\n shape: \"labelRect\",\n style: \"\"\n });\n const edge1 = JSON.parse(JSON.stringify(edge));\n const edge2 = JSON.parse(JSON.stringify(edge));\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge2.label = \"\";\n edge1.fromCluster = e.v;\n edge2.toCluster = e.v;\n graph.setEdge(v, specialId, edge1, e.name + \"-cyclic-special\");\n graph.setEdge(specialId, w, edge2, e.name + \"-cyclic-special\");\n } else if (clusterDb[e.v] || clusterDb[e.w]) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n edge.toCluster = e.w;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Adjusted Graph\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n extractor(graph, 0);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(clusterDb);\n};\nconst extractor = (graph, depth) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"extractor - \", depth, dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb[node]) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&\n graph.children(node) && graph.children(node).length > 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Fixing dir\", clusterDb[node].clusterData.dir, dir);\n }\n const clusterGraph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Old graph before copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"New graph after copy node: (\", node, \")\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(clusterGraph));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(\"Old graph after copy\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb[node].externalConnections,\n \" no parent: \",\n !graph.parent(node),\n \" children \",\n graph.children(node) && graph.children(node).length > 0,\n graph.children(\"D\"),\n depth\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\" Now next level\", node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n};\nconst sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\nconst rect = (parent, node) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Creating subgraph rect for \", node.id, node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster\" + (node.class ? \" \" + node.class : \"\")).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const useHtmlLabels = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.c)().flowchart.htmlLabels);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const text = node.labelType === \"markdown\" ? (0,_createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_5__.c)(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild((0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.c)(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Data \", node, JSON.stringify(node));\n rect2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - width / 2).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width).attr(\"height\", node.height + padding);\n if (useHtmlLabels) {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2) + \")\"\n );\n } else {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + node.x + \", \" + (node.y - node.height / 2) + \")\"\n );\n }\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.i)(node, point);\n };\n return shapeSvg;\n};\nconst noteGroup = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.i)(node, point);\n };\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const innerRect = shapeSvg.append(\"rect\");\n const text = label.node().appendChild((0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.c)(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n rect2.attr(\"class\", \"outer\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width + padding).attr(\"height\", node.height + padding);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr(\"width\", width + padding).attr(\"height\", node.height + padding - bbox.height - 3);\n label.attr(\n \"transform\",\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2 - node.padding / 3 + ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.c)().flowchart.htmlLabels) ? 5 : 3)) + \")\"\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.intersect = function(point) {\n return (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.i)(node, point);\n };\n return shapeSvg;\n};\nconst divider = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"class\", \"divider\").attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding);\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function(point) {\n return (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.i)(node, point);\n };\n return shapeSvg;\n};\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\nlet clusterElems = {};\nconst insertCluster = (elem, node) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Inserting cluster\");\n const shape = node.shape || \"rect\";\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nconst clear = () => {\n clusterElems = {};\n};\nconst recursiveRender = async (_elem, graph, diagramtype, parentCluster) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Graph in recursive render: XXX\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"No nodes found for\", graph);\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\n const edgePaths = elem.insert(\"g\").attr(\"class\", \"edgePaths\");\n const edgeLabels = elem.insert(\"g\").attr(\"class\", \"edgeLabels\");\n const nodes = elem.insert(\"g\").attr(\"class\", \"nodes\");\n await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Cluster identified\", v, node.width, graph.node(v));\n const o = await recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n const newEl = o.elem;\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.u)(node, newEl);\n node.diff = o.diff || 0;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.s)(newEl, node);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Recursive render complete \", newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Node - the non recursive path\", v, node.id, node);\n await (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.e)(nodes, graph.node(v), dir);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Fix\", clusterDb, \"ids:\", e.v, e.w, \"Translateing: \", clusterDb[e.v], clusterDb[e.w]);\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.f)(edgeLabels, edge);\n });\n graph.edges().forEach(function(e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"#############################################\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"### Layout ###\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"#############################################\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(graph);\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_0__.layout)(graph);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Graph after layout:\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function(v) {\n const node = graph.node(v);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Position \" + v + \": \" + JSON.stringify(graph.node(v)));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\n \"Position \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node && node.clusterNode) {\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.p)(node);\n } else {\n if (graph.children(v).length > 0) {\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.p)(node);\n }\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n const paths = (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.g)(edgePaths, e, edge, clusterDb, diagramtype, graph);\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.h)(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.info(v, n.type, n.diff);\n if (n.type === \"group\") {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\nconst render = async (elem, graph, markers, diagramtype, id) => {\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.a)(elem, markers, diagramtype, id);\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.b)();\n (0,_edges_49ac43a2_js__WEBPACK_IMPORTED_MODULE_6__.d)();\n clear();\n clear$1();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Graph at first:\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n adjustClustersAndEdges(graph);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_4__.l.warn(\"Graph after:\", dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_1__.write(graph));\n await recursiveRender(elem, graph, diagramtype);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9pbmRleC1hOTJhYzQwNC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUF3RDtBQUNTO0FBQ3NNO0FBQ3ZMO0FBQ2xCO0FBQ0g7QUFDL0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx5REFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0RBQVE7QUFDVixFQUFFLHdEQUFRO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsd0RBQVE7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTSx3REFBUTtBQUNkO0FBQ0E7QUFDQSxRQUFRLHdEQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLFFBQVEseURBQVM7QUFDakI7QUFDQSxRQUFRO0FBQ1IsUUFBUSx3REFBUTtBQUNoQixRQUFRLHlEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0seURBQVM7QUFDZjtBQUNBLFFBQVEsd0RBQVE7QUFDaEI7QUFDQSxRQUFRLHdEQUFRO0FBQ2hCO0FBQ0E7QUFDQSxZQUFZLHdEQUFRO0FBQ3BCO0FBQ0EsWUFBWSx3REFBUTtBQUNwQixZQUFZO0FBQ1osWUFBWSx3REFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixVQUFVLHlEQUFTO0FBQ25CO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSSx5REFBUztBQUNiO0FBQ0EsR0FBRztBQUNI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Q1osa0JBQWtCLHFEQUFVO0FBQzVCLElBQUkscURBQWlCO0FBQ3JCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsSUFBSSx3REFBUTtBQUNaO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxXQUFXO0FBQ1g7QUFDQTtBQUNBLEVBQUUscURBQWE7QUFDZixFQUFFLHFEQUFPO0FBQ1QsRUFBRSxxREFBTztBQUNUO0FBQ0E7QUFDQSxFQUFFLHdEQUFRLG9CQUFvQixtRUFBa0I7QUFDaEQ7QUFDQSxFQUFFLHdEQUFRLGlCQUFpQixtRUFBa0I7QUFDN0M7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvaW5kZXgtYTkyYWM0MDQuanM/OTQ4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXlvdXQgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBncmFwaGxpYkpzb24gZnJvbSBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzXCI7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUxhYmVsLCBpIGFzIGludGVyc2VjdFJlY3QsIGEgYXMgaW5zZXJ0TWFya2VycywgYiBhcyBjbGVhciQyLCBkIGFzIGNsZWFyJDMsIHUgYXMgdXBkYXRlTm9kZUJvdW5kcywgcyBhcyBzZXROb2RlRWxlbSwgZSBhcyBpbnNlcnROb2RlLCBmIGFzIGluc2VydEVkZ2VMYWJlbCwgcCBhcyBwb3NpdGlvbk5vZGUsIGcgYXMgaW5zZXJ0RWRnZSwgaCBhcyBwb3NpdGlvbkVkZ2VMYWJlbCB9IGZyb20gXCIuL2VkZ2VzLTQ5YWM0M2EyLmpzXCI7XG5pbXBvcnQgeyBsIGFzIGxvZywgbiBhcyBldmFsdWF0ZSwgYyBhcyBnZXRDb25maWcgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgKiBhcyBncmFwaGxpYiBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZVRleHQgfSBmcm9tIFwiLi9jcmVhdGVUZXh0LTNkZjYzMGI1LmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tIFwiZDNcIjtcbmxldCBjbHVzdGVyRGIgPSB7fTtcbmxldCBkZXNjZW5kYW50cyA9IHt9O1xubGV0IHBhcmVudHMgPSB7fTtcbmNvbnN0IGNsZWFyJDEgPSAoKSA9PiB7XG4gIGRlc2NlbmRhbnRzID0ge307XG4gIHBhcmVudHMgPSB7fTtcbiAgY2x1c3RlckRiID0ge307XG59O1xuY29uc3QgaXNEZXNjZW5kYW50ID0gKGlkLCBhbmNlbnN0b3JJZCkgPT4ge1xuICBsb2cudHJhY2UoXCJJbiBpc0RlY2VuZGFudFwiLCBhbmNlbnN0b3JJZCwgXCIgXCIsIGlkLCBcIiA9IFwiLCBkZXNjZW5kYW50c1thbmNlbnN0b3JJZF0uaW5jbHVkZXMoaWQpKTtcbiAgaWYgKGRlc2NlbmRhbnRzW2FuY2Vuc3RvcklkXS5pbmNsdWRlcyhpZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuY29uc3QgZWRnZUluQ2x1c3RlciA9IChlZGdlLCBjbHVzdGVySWQpID0+IHtcbiAgbG9nLmluZm8oXCJEZWNlbmRhbnRzIG9mIFwiLCBjbHVzdGVySWQsIFwiIGlzIFwiLCBkZXNjZW5kYW50c1tjbHVzdGVySWRdKTtcbiAgbG9nLmluZm8oXCJFZGdlIGlzIFwiLCBlZGdlKTtcbiAgaWYgKGVkZ2UudiA9PT0gY2x1c3RlcklkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChlZGdlLncgPT09IGNsdXN0ZXJJZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWRlc2NlbmRhbnRzW2NsdXN0ZXJJZF0pIHtcbiAgICBsb2cuZGVidWcoXCJUaWx0LCBcIiwgY2x1c3RlcklkLCBcIixub3QgaW4gZGVjZW5kYW50c1wiKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGRlc2NlbmRhbnRzW2NsdXN0ZXJJZF0uaW5jbHVkZXMoZWRnZS52KSB8fCBpc0Rlc2NlbmRhbnQoZWRnZS52LCBjbHVzdGVySWQpIHx8IGlzRGVzY2VuZGFudChlZGdlLncsIGNsdXN0ZXJJZCkgfHwgZGVzY2VuZGFudHNbY2x1c3RlcklkXS5pbmNsdWRlcyhlZGdlLncpO1xufTtcbmNvbnN0IGNvcHkgPSAoY2x1c3RlcklkLCBncmFwaCwgbmV3R3JhcGgsIHJvb3RJZCkgPT4ge1xuICBsb2cud2FybihcbiAgICBcIkNvcHlpbmcgY2hpbGRyZW4gb2YgXCIsXG4gICAgY2x1c3RlcklkLFxuICAgIFwicm9vdFwiLFxuICAgIHJvb3RJZCxcbiAgICBcImRhdGFcIixcbiAgICBncmFwaC5ub2RlKGNsdXN0ZXJJZCksXG4gICAgcm9vdElkXG4gICk7XG4gIGNvbnN0IG5vZGVzID0gZ3JhcGguY2hpbGRyZW4oY2x1c3RlcklkKSB8fCBbXTtcbiAgaWYgKGNsdXN0ZXJJZCAhPT0gcm9vdElkKSB7XG4gICAgbm9kZXMucHVzaChjbHVzdGVySWQpO1xuICB9XG4gIGxvZy53YXJuKFwiQ29weWluZyAobm9kZXMpIGNsdXN0ZXJJZFwiLCBjbHVzdGVySWQsIFwibm9kZXNcIiwgbm9kZXMpO1xuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgaWYgKGdyYXBoLmNoaWxkcmVuKG5vZGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvcHkobm9kZSwgZ3JhcGgsIG5ld0dyYXBoLCByb290SWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkYXRhID0gZ3JhcGgubm9kZShub2RlKTtcbiAgICAgIGxvZy5pbmZvKFwiY3AgXCIsIG5vZGUsIFwiIHRvIFwiLCByb290SWQsIFwiIHdpdGggcGFyZW50IFwiLCBjbHVzdGVySWQpO1xuICAgICAgbmV3R3JhcGguc2V0Tm9kZShub2RlLCBkYXRhKTtcbiAgICAgIGlmIChyb290SWQgIT09IGdyYXBoLnBhcmVudChub2RlKSkge1xuICAgICAgICBsb2cud2FybihcIlNldHRpbmcgcGFyZW50XCIsIG5vZGUsIGdyYXBoLnBhcmVudChub2RlKSk7XG4gICAgICAgIG5ld0dyYXBoLnNldFBhcmVudChub2RlLCBncmFwaC5wYXJlbnQobm9kZSkpO1xuICAgICAgfVxuICAgICAgaWYgKGNsdXN0ZXJJZCAhPT0gcm9vdElkICYmIG5vZGUgIT09IGNsdXN0ZXJJZCkge1xuICAgICAgICBsb2cuZGVidWcoXCJTZXR0aW5nIHBhcmVudFwiLCBub2RlLCBjbHVzdGVySWQpO1xuICAgICAgICBuZXdHcmFwaC5zZXRQYXJlbnQobm9kZSwgY2x1c3RlcklkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5pbmZvKFwiSW4gY29weSBcIiwgY2x1c3RlcklkLCBcInJvb3RcIiwgcm9vdElkLCBcImRhdGFcIiwgZ3JhcGgubm9kZShjbHVzdGVySWQpLCByb290SWQpO1xuICAgICAgICBsb2cuZGVidWcoXG4gICAgICAgICAgXCJOb3QgU2V0dGluZyBwYXJlbnQgZm9yIG5vZGU9XCIsXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBcImNsdXN0ZXIhPT1yb290SWRcIixcbiAgICAgICAgICBjbHVzdGVySWQgIT09IHJvb3RJZCxcbiAgICAgICAgICBcIm5vZGUhPT1jbHVzdGVySWRcIixcbiAgICAgICAgICBub2RlICE9PSBjbHVzdGVySWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVkZ2VzID0gZ3JhcGguZWRnZXMobm9kZSk7XG4gICAgICBsb2cuZGVidWcoXCJDb3B5aW5nIEVkZ2VzXCIsIGVkZ2VzKTtcbiAgICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgICAgbG9nLmluZm8oXCJFZGdlXCIsIGVkZ2UpO1xuICAgICAgICBjb25zdCBkYXRhMiA9IGdyYXBoLmVkZ2UoZWRnZS52LCBlZGdlLncsIGVkZ2UubmFtZSk7XG4gICAgICAgIGxvZy5pbmZvKFwiRWRnZSBkYXRhXCIsIGRhdGEyLCByb290SWQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChlZGdlSW5DbHVzdGVyKGVkZ2UsIHJvb3RJZCkpIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKFwiQ29weWluZyBhcyBcIiwgZWRnZS52LCBlZGdlLncsIGRhdGEyLCBlZGdlLm5hbWUpO1xuICAgICAgICAgICAgbmV3R3JhcGguc2V0RWRnZShlZGdlLnYsIGVkZ2UudywgZGF0YTIsIGVkZ2UubmFtZSk7XG4gICAgICAgICAgICBsb2cuaW5mbyhcIm5ld0dyYXBoIGVkZ2VzIFwiLCBuZXdHcmFwaC5lZGdlcygpLCBuZXdHcmFwaC5lZGdlKG5ld0dyYXBoLmVkZ2VzKClbMF0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9nLmluZm8oXG4gICAgICAgICAgICAgIFwiU2tpcHBpbmcgY29weSBvZiBlZGdlIFwiLFxuICAgICAgICAgICAgICBlZGdlLnYsXG4gICAgICAgICAgICAgIFwiLS0+XCIsXG4gICAgICAgICAgICAgIGVkZ2UudyxcbiAgICAgICAgICAgICAgXCIgcm9vdElkOiBcIixcbiAgICAgICAgICAgICAgcm9vdElkLFxuICAgICAgICAgICAgICBcIiBjbHVzdGVySWQ6XCIsXG4gICAgICAgICAgICAgIGNsdXN0ZXJJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2cuZGVidWcoXCJSZW1vdmluZyBub2RlXCIsIG5vZGUpO1xuICAgIGdyYXBoLnJlbW92ZU5vZGUobm9kZSk7XG4gIH0pO1xufTtcbmNvbnN0IGV4dHJhY3REZXNjZW5kYW50cyA9IChpZCwgZ3JhcGgpID0+IHtcbiAgY29uc3QgY2hpbGRyZW4gPSBncmFwaC5jaGlsZHJlbihpZCk7XG4gIGxldCByZXMgPSBbLi4uY2hpbGRyZW5dO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgcGFyZW50c1tjaGlsZF0gPSBpZDtcbiAgICByZXMgPSBbLi4ucmVzLCAuLi5leHRyYWN0RGVzY2VuZGFudHMoY2hpbGQsIGdyYXBoKV07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5jb25zdCBmaW5kTm9uQ2x1c3RlckNoaWxkID0gKGlkLCBncmFwaCkgPT4ge1xuICBsb2cudHJhY2UoXCJTZWFyY2hpbmdcIiwgaWQpO1xuICBjb25zdCBjaGlsZHJlbiA9IGdyYXBoLmNoaWxkcmVuKGlkKTtcbiAgbG9nLnRyYWNlKFwiU2VhcmNoaW5nIGNoaWxkcmVuIG9mIGlkIFwiLCBpZCwgY2hpbGRyZW4pO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoIDwgMSkge1xuICAgIGxvZy50cmFjZShcIlRoaXMgaXMgYSB2YWxpZCBub2RlXCIsIGlkKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIGNvbnN0IF9pZCA9IGZpbmROb25DbHVzdGVyQ2hpbGQoY2hpbGQsIGdyYXBoKTtcbiAgICBpZiAoX2lkKSB7XG4gICAgICBsb2cudHJhY2UoXCJGb3VuZCByZXBsYWNlbWVudCBmb3JcIiwgaWQsIFwiID0+IFwiLCBfaWQpO1xuICAgICAgcmV0dXJuIF9pZDtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBnZXRBbmNob3JJZCA9IChpZCkgPT4ge1xuICBpZiAoIWNsdXN0ZXJEYltpZF0pIHtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbiAgaWYgKCFjbHVzdGVyRGJbaWRdLmV4dGVybmFsQ29ubmVjdGlvbnMpIHtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbiAgaWYgKGNsdXN0ZXJEYltpZF0pIHtcbiAgICByZXR1cm4gY2x1c3RlckRiW2lkXS5pZDtcbiAgfVxuICByZXR1cm4gaWQ7XG59O1xuY29uc3QgYWRqdXN0Q2x1c3RlcnNBbmRFZGdlcyA9IChncmFwaCwgZGVwdGgpID0+IHtcbiAgaWYgKCFncmFwaCB8fCBkZXB0aCA+IDEwKSB7XG4gICAgbG9nLmRlYnVnKFwiT3B0aW5nIG91dCwgbm8gZ3JhcGggXCIpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIHtcbiAgICBsb2cuZGVidWcoXCJPcHRpbmcgaW4sIGdyYXBoIFwiKTtcbiAgfVxuICBncmFwaC5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGdyYXBoLmNoaWxkcmVuKGlkKTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgbG9nLndhcm4oXG4gICAgICAgIFwiQ2x1c3RlciBpZGVudGlmaWVkXCIsXG4gICAgICAgIGlkLFxuICAgICAgICBcIiBSZXBsYWNlbWVudCBpZCBpbiBlZGdlczogXCIsXG4gICAgICAgIGZpbmROb25DbHVzdGVyQ2hpbGQoaWQsIGdyYXBoKVxuICAgICAgKTtcbiAgICAgIGRlc2NlbmRhbnRzW2lkXSA9IGV4dHJhY3REZXNjZW5kYW50cyhpZCwgZ3JhcGgpO1xuICAgICAgY2x1c3RlckRiW2lkXSA9IHsgaWQ6IGZpbmROb25DbHVzdGVyQ2hpbGQoaWQsIGdyYXBoKSwgY2x1c3RlckRhdGE6IGdyYXBoLm5vZGUoaWQpIH07XG4gICAgfVxuICB9KTtcbiAgZ3JhcGgubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBncmFwaC5jaGlsZHJlbihpZCk7XG4gICAgY29uc3QgZWRnZXMgPSBncmFwaC5lZGdlcygpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBsb2cuZGVidWcoXCJDbHVzdGVyIGlkZW50aWZpZWRcIiwgaWQsIGRlc2NlbmRhbnRzKTtcbiAgICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgICAgaWYgKGVkZ2UudiAhPT0gaWQgJiYgZWRnZS53ICE9PSBpZCkge1xuICAgICAgICAgIGNvbnN0IGQxID0gaXNEZXNjZW5kYW50KGVkZ2UudiwgaWQpO1xuICAgICAgICAgIGNvbnN0IGQyID0gaXNEZXNjZW5kYW50KGVkZ2UudywgaWQpO1xuICAgICAgICAgIGlmIChkMSBeIGQyKSB7XG4gICAgICAgICAgICBsb2cud2FybihcIkVkZ2U6IFwiLCBlZGdlLCBcIiBsZWF2ZXMgY2x1c3RlciBcIiwgaWQpO1xuICAgICAgICAgICAgbG9nLndhcm4oXCJEZWNlbmRhbnRzIG9mIFhYWCBcIiwgaWQsIFwiOiBcIiwgZGVzY2VuZGFudHNbaWRdKTtcbiAgICAgICAgICAgIGNsdXN0ZXJEYltpZF0uZXh0ZXJuYWxDb25uZWN0aW9ucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKFwiTm90IGEgY2x1c3RlciBcIiwgaWQsIGRlc2NlbmRhbnRzKTtcbiAgICB9XG4gIH0pO1xuICBncmFwaC5lZGdlcygpLmZvckVhY2goZnVuY3Rpb24oZSkge1xuICAgIGNvbnN0IGVkZ2UgPSBncmFwaC5lZGdlKGUpO1xuICAgIGxvZy53YXJuKFwiRWRnZSBcIiArIGUudiArIFwiIC0+IFwiICsgZS53ICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoZSkpO1xuICAgIGxvZy53YXJuKFwiRWRnZSBcIiArIGUudiArIFwiIC0+IFwiICsgZS53ICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoZ3JhcGguZWRnZShlKSkpO1xuICAgIGxldCB2ID0gZS52O1xuICAgIGxldCB3ID0gZS53O1xuICAgIGxvZy53YXJuKFxuICAgICAgXCJGaXggWFhYXCIsXG4gICAgICBjbHVzdGVyRGIsXG4gICAgICBcImlkczpcIixcbiAgICAgIGUudixcbiAgICAgIGUudyxcbiAgICAgIFwiVHJhbnNsYXRpbmc6IFwiLFxuICAgICAgY2x1c3RlckRiW2Uudl0sXG4gICAgICBcIiAtLS0gXCIsXG4gICAgICBjbHVzdGVyRGJbZS53XVxuICAgICk7XG4gICAgaWYgKGNsdXN0ZXJEYltlLnZdICYmIGNsdXN0ZXJEYltlLnddICYmIGNsdXN0ZXJEYltlLnZdID09PSBjbHVzdGVyRGJbZS53XSkge1xuICAgICAgbG9nLndhcm4oXCJGaXhpbmcgYW5kIHRyaXhpbmcgbGluayB0byBzZWxmIC0gcmVtb3ZpbmcgWFhYXCIsIGUudiwgZS53LCBlLm5hbWUpO1xuICAgICAgbG9nLndhcm4oXCJGaXhpbmcgYW5kIHRyaXhpbmcgLSByZW1vdmluZyBYWFhcIiwgZS52LCBlLncsIGUubmFtZSk7XG4gICAgICB2ID0gZ2V0QW5jaG9ySWQoZS52KTtcbiAgICAgIHcgPSBnZXRBbmNob3JJZChlLncpO1xuICAgICAgZ3JhcGgucmVtb3ZlRWRnZShlLnYsIGUudywgZS5uYW1lKTtcbiAgICAgIGNvbnN0IHNwZWNpYWxJZCA9IGUudyArIFwiLS0tXCIgKyBlLnY7XG4gICAgICBncmFwaC5zZXROb2RlKHNwZWNpYWxJZCwge1xuICAgICAgICBkb21JZDogc3BlY2lhbElkLFxuICAgICAgICBpZDogc3BlY2lhbElkLFxuICAgICAgICBsYWJlbFN0eWxlOiBcIlwiLFxuICAgICAgICBsYWJlbFRleHQ6IGVkZ2UubGFiZWwsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHNoYXBlOiBcImxhYmVsUmVjdFwiLFxuICAgICAgICBzdHlsZTogXCJcIlxuICAgICAgfSk7XG4gICAgICBjb25zdCBlZGdlMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWRnZSkpO1xuICAgICAgY29uc3QgZWRnZTIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVkZ2UpKTtcbiAgICAgIGVkZ2UxLmxhYmVsID0gXCJcIjtcbiAgICAgIGVkZ2UxLmFycm93VHlwZUVuZCA9IFwibm9uZVwiO1xuICAgICAgZWRnZTIubGFiZWwgPSBcIlwiO1xuICAgICAgZWRnZTEuZnJvbUNsdXN0ZXIgPSBlLnY7XG4gICAgICBlZGdlMi50b0NsdXN0ZXIgPSBlLnY7XG4gICAgICBncmFwaC5zZXRFZGdlKHYsIHNwZWNpYWxJZCwgZWRnZTEsIGUubmFtZSArIFwiLWN5Y2xpYy1zcGVjaWFsXCIpO1xuICAgICAgZ3JhcGguc2V0RWRnZShzcGVjaWFsSWQsIHcsIGVkZ2UyLCBlLm5hbWUgKyBcIi1jeWNsaWMtc3BlY2lhbFwiKTtcbiAgICB9IGVsc2UgaWYgKGNsdXN0ZXJEYltlLnZdIHx8IGNsdXN0ZXJEYltlLnddKSB7XG4gICAgICBsb2cud2FybihcIkZpeGluZyBhbmQgdHJpeGluZyAtIHJlbW92aW5nIFhYWFwiLCBlLnYsIGUudywgZS5uYW1lKTtcbiAgICAgIHYgPSBnZXRBbmNob3JJZChlLnYpO1xuICAgICAgdyA9IGdldEFuY2hvcklkKGUudyk7XG4gICAgICBncmFwaC5yZW1vdmVFZGdlKGUudiwgZS53LCBlLm5hbWUpO1xuICAgICAgaWYgKHYgIT09IGUudikge1xuICAgICAgICBlZGdlLmZyb21DbHVzdGVyID0gZS52O1xuICAgICAgfVxuICAgICAgaWYgKHcgIT09IGUudykge1xuICAgICAgICBlZGdlLnRvQ2x1c3RlciA9IGUudztcbiAgICAgIH1cbiAgICAgIGxvZy53YXJuKFwiRml4IFJlcGxhY2luZyB3aXRoIFhYWFwiLCB2LCB3LCBlLm5hbWUpO1xuICAgICAgZ3JhcGguc2V0RWRnZSh2LCB3LCBlZGdlLCBlLm5hbWUpO1xuICAgIH1cbiAgfSk7XG4gIGxvZy53YXJuKFwiQWRqdXN0ZWQgR3JhcGhcIiwgZ3JhcGhsaWJKc29uLndyaXRlKGdyYXBoKSk7XG4gIGV4dHJhY3RvcihncmFwaCwgMCk7XG4gIGxvZy50cmFjZShjbHVzdGVyRGIpO1xufTtcbmNvbnN0IGV4dHJhY3RvciA9IChncmFwaCwgZGVwdGgpID0+IHtcbiAgbG9nLndhcm4oXCJleHRyYWN0b3IgLSBcIiwgZGVwdGgsIGdyYXBobGliSnNvbi53cml0ZShncmFwaCksIGdyYXBoLmNoaWxkcmVuKFwiRFwiKSk7XG4gIGlmIChkZXB0aCA+IDEwKSB7XG4gICAgbG9nLmVycm9yKFwiQmFpbGluZyBvdXRcIik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBub2RlcyA9IGdyYXBoLm5vZGVzKCk7XG4gIGxldCBoYXNDaGlsZHJlbiA9IGZhbHNlO1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGdyYXBoLmNoaWxkcmVuKG5vZGUpO1xuICAgIGhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW4gfHwgY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgfVxuICBpZiAoIWhhc0NoaWxkcmVuKSB7XG4gICAgbG9nLmRlYnVnKFwiRG9uZSwgbm8gbm9kZSBoYXMgY2hpbGRyZW5cIiwgZ3JhcGgubm9kZXMoKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZy5kZWJ1ZyhcIk5vZGVzID0gXCIsIG5vZGVzLCBkZXB0aCk7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIFwiRXh0cmFjdGluZyBub2RlXCIsXG4gICAgICBub2RlLFxuICAgICAgY2x1c3RlckRiLFxuICAgICAgY2x1c3RlckRiW25vZGVdICYmICFjbHVzdGVyRGJbbm9kZV0uZXh0ZXJuYWxDb25uZWN0aW9ucyxcbiAgICAgICFncmFwaC5wYXJlbnQobm9kZSksXG4gICAgICBncmFwaC5ub2RlKG5vZGUpLFxuICAgICAgZ3JhcGguY2hpbGRyZW4oXCJEXCIpLFxuICAgICAgXCIgRGVwdGggXCIsXG4gICAgICBkZXB0aFxuICAgICk7XG4gICAgaWYgKCFjbHVzdGVyRGJbbm9kZV0pIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIk5vdCBhIGNsdXN0ZXJcIiwgbm9kZSwgZGVwdGgpO1xuICAgIH0gZWxzZSBpZiAoIWNsdXN0ZXJEYltub2RlXS5leHRlcm5hbENvbm5lY3Rpb25zICYmIC8vICFncmFwaC5wYXJlbnQobm9kZSkgJiZcbiAgICBncmFwaC5jaGlsZHJlbihub2RlKSAmJiBncmFwaC5jaGlsZHJlbihub2RlKS5sZW5ndGggPiAwKSB7XG4gICAgICBsb2cud2FybihcbiAgICAgICAgXCJDbHVzdGVyIHdpdGhvdXQgZXh0ZXJuYWwgY29ubmVjdGlvbnMsIHdpdGhvdXQgYSBwYXJlbnQgYW5kIHdpdGggY2hpbGRyZW5cIixcbiAgICAgICAgbm9kZSxcbiAgICAgICAgZGVwdGhcbiAgICAgICk7XG4gICAgICBjb25zdCBncmFwaFNldHRpbmdzID0gZ3JhcGguZ3JhcGgoKTtcbiAgICAgIGxldCBkaXIgPSBncmFwaFNldHRpbmdzLnJhbmtkaXIgPT09IFwiVEJcIiA/IFwiTFJcIiA6IFwiVEJcIjtcbiAgICAgIGlmIChjbHVzdGVyRGJbbm9kZV0gJiYgY2x1c3RlckRiW25vZGVdLmNsdXN0ZXJEYXRhICYmIGNsdXN0ZXJEYltub2RlXS5jbHVzdGVyRGF0YS5kaXIpIHtcbiAgICAgICAgZGlyID0gY2x1c3RlckRiW25vZGVdLmNsdXN0ZXJEYXRhLmRpcjtcbiAgICAgICAgbG9nLndhcm4oXCJGaXhpbmcgZGlyXCIsIGNsdXN0ZXJEYltub2RlXS5jbHVzdGVyRGF0YS5kaXIsIGRpcik7XG4gICAgICB9XG4gICAgICBjb25zdCBjbHVzdGVyR3JhcGggPSBuZXcgZ3JhcGhsaWIuR3JhcGgoe1xuICAgICAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgICAgICBjb21wb3VuZDogdHJ1ZVxuICAgICAgfSkuc2V0R3JhcGgoe1xuICAgICAgICByYW5rZGlyOiBkaXIsXG4gICAgICAgIC8vIFRvZG86IHNldCBwcm9wZXIgc3BhY2luZ1xuICAgICAgICBub2Rlc2VwOiA1MCxcbiAgICAgICAgcmFua3NlcDogNTAsXG4gICAgICAgIG1hcmdpbng6IDgsXG4gICAgICAgIG1hcmdpbnk6IDhcbiAgICAgIH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH0pO1xuICAgICAgbG9nLndhcm4oXCJPbGQgZ3JhcGggYmVmb3JlIGNvcHlcIiwgZ3JhcGhsaWJKc29uLndyaXRlKGdyYXBoKSk7XG4gICAgICBjb3B5KG5vZGUsIGdyYXBoLCBjbHVzdGVyR3JhcGgsIG5vZGUpO1xuICAgICAgZ3JhcGguc2V0Tm9kZShub2RlLCB7XG4gICAgICAgIGNsdXN0ZXJOb2RlOiB0cnVlLFxuICAgICAgICBpZDogbm9kZSxcbiAgICAgICAgY2x1c3RlckRhdGE6IGNsdXN0ZXJEYltub2RlXS5jbHVzdGVyRGF0YSxcbiAgICAgICAgbGFiZWxUZXh0OiBjbHVzdGVyRGJbbm9kZV0ubGFiZWxUZXh0LFxuICAgICAgICBncmFwaDogY2x1c3RlckdyYXBoXG4gICAgICB9KTtcbiAgICAgIGxvZy53YXJuKFwiTmV3IGdyYXBoIGFmdGVyIGNvcHkgbm9kZTogKFwiLCBub2RlLCBcIilcIiwgZ3JhcGhsaWJKc29uLndyaXRlKGNsdXN0ZXJHcmFwaCkpO1xuICAgICAgbG9nLmRlYnVnKFwiT2xkIGdyYXBoIGFmdGVyIGNvcHlcIiwgZ3JhcGhsaWJKc29uLndyaXRlKGdyYXBoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy53YXJuKFxuICAgICAgICBcIkNsdXN0ZXIgKiogXCIsXG4gICAgICAgIG5vZGUsXG4gICAgICAgIFwiICoqbm90IG1lZXRpbmcgdGhlIGNyaXRlcmlhICFleHRlcm5hbENvbm5lY3Rpb25zOlwiLFxuICAgICAgICAhY2x1c3RlckRiW25vZGVdLmV4dGVybmFsQ29ubmVjdGlvbnMsXG4gICAgICAgIFwiIG5vIHBhcmVudDogXCIsXG4gICAgICAgICFncmFwaC5wYXJlbnQobm9kZSksXG4gICAgICAgIFwiIGNoaWxkcmVuIFwiLFxuICAgICAgICBncmFwaC5jaGlsZHJlbihub2RlKSAmJiBncmFwaC5jaGlsZHJlbihub2RlKS5sZW5ndGggPiAwLFxuICAgICAgICBncmFwaC5jaGlsZHJlbihcIkRcIiksXG4gICAgICAgIGRlcHRoXG4gICAgICApO1xuICAgICAgbG9nLmRlYnVnKGNsdXN0ZXJEYik7XG4gICAgfVxuICB9XG4gIG5vZGVzID0gZ3JhcGgubm9kZXMoKTtcbiAgbG9nLndhcm4oXCJOZXcgbGlzdCBvZiBub2Rlc1wiLCBub2Rlcyk7XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIGNvbnN0IGRhdGEgPSBncmFwaC5ub2RlKG5vZGUpO1xuICAgIGxvZy53YXJuKFwiIE5vdyBuZXh0IGxldmVsXCIsIG5vZGUsIGRhdGEpO1xuICAgIGlmIChkYXRhLmNsdXN0ZXJOb2RlKSB7XG4gICAgICBleHRyYWN0b3IoZGF0YS5ncmFwaCwgZGVwdGggKyAxKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBzb3J0ZXIgPSAoZ3JhcGgsIG5vZGVzKSA9PiB7XG4gIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgbGV0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24obm9kZXMpO1xuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBncmFwaC5jaGlsZHJlbihub2RlKTtcbiAgICBjb25zdCBzb3J0ZWQgPSBzb3J0ZXIoZ3JhcGgsIGNoaWxkcmVuKTtcbiAgICByZXN1bHQgPSBbLi4ucmVzdWx0LCAuLi5zb3J0ZWRdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBzb3J0Tm9kZXNCeUhpZXJhcmNoeSA9IChncmFwaCkgPT4gc29ydGVyKGdyYXBoLCBncmFwaC5jaGlsZHJlbigpKTtcbmNvbnN0IHJlY3QgPSAocGFyZW50LCBub2RlKSA9PiB7XG4gIGxvZy5pbmZvKFwiQ3JlYXRpbmcgc3ViZ3JhcGggcmVjdCBmb3IgXCIsIG5vZGUuaWQsIG5vZGUpO1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImNsdXN0ZXJcIiArIChub2RlLmNsYXNzID8gXCIgXCIgKyBub2RlLmNsYXNzIDogXCJcIikpLmF0dHIoXCJpZFwiLCBub2RlLmlkKTtcbiAgY29uc3QgcmVjdDIgPSBzaGFwZVN2Zy5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICBjb25zdCB1c2VIdG1sTGFiZWxzID0gZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpO1xuICBjb25zdCBsYWJlbCA9IHNoYXBlU3ZnLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiY2x1c3Rlci1sYWJlbFwiKTtcbiAgY29uc3QgdGV4dCA9IG5vZGUubGFiZWxUeXBlID09PSBcIm1hcmtkb3duXCIgPyBjcmVhdGVUZXh0KGxhYmVsLCBub2RlLmxhYmVsVGV4dCwgeyBzdHlsZTogbm9kZS5sYWJlbFN0eWxlLCB1c2VIdG1sTGFiZWxzIH0pIDogbGFiZWwubm9kZSgpLmFwcGVuZENoaWxkKGNyZWF0ZUxhYmVsKG5vZGUubGFiZWxUZXh0LCBub2RlLmxhYmVsU3R5bGUsIHZvaWQgMCwgdHJ1ZSkpO1xuICBsZXQgYmJveCA9IHRleHQuZ2V0QkJveCgpO1xuICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgY29uc3QgZGl2ID0gdGV4dC5jaGlsZHJlblswXTtcbiAgICBjb25zdCBkdiA9IHNlbGVjdCh0ZXh0KTtcbiAgICBiYm94ID0gZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGR2LmF0dHIoXCJ3aWR0aFwiLCBiYm94LndpZHRoKTtcbiAgICBkdi5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0KTtcbiAgfVxuICBjb25zdCBwYWRkaW5nID0gMCAqIG5vZGUucGFkZGluZztcbiAgY29uc3QgaGFsZlBhZGRpbmcgPSBwYWRkaW5nIC8gMjtcbiAgY29uc3Qgd2lkdGggPSBub2RlLndpZHRoIDw9IGJib3gud2lkdGggKyBwYWRkaW5nID8gYmJveC53aWR0aCArIHBhZGRpbmcgOiBub2RlLndpZHRoO1xuICBpZiAobm9kZS53aWR0aCA8PSBiYm94LndpZHRoICsgcGFkZGluZykge1xuICAgIG5vZGUuZGlmZiA9IChiYm94LndpZHRoIC0gbm9kZS53aWR0aCkgLyAyIC0gbm9kZS5wYWRkaW5nIC8gMjtcbiAgfSBlbHNlIHtcbiAgICBub2RlLmRpZmYgPSAtbm9kZS5wYWRkaW5nIC8gMjtcbiAgfVxuICBsb2cudHJhY2UoXCJEYXRhIFwiLCBub2RlLCBKU09OLnN0cmluZ2lmeShub2RlKSk7XG4gIHJlY3QyLmF0dHIoXCJzdHlsZVwiLCBub2RlLnN0eWxlKS5hdHRyKFwicnhcIiwgbm9kZS5yeCkuYXR0cihcInJ5XCIsIG5vZGUucnkpLmF0dHIoXCJ4XCIsIG5vZGUueCAtIHdpZHRoIC8gMikuYXR0cihcInlcIiwgbm9kZS55IC0gbm9kZS5oZWlnaHQgLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkuYXR0cihcImhlaWdodFwiLCBub2RlLmhlaWdodCArIHBhZGRpbmcpO1xuICBpZiAodXNlSHRtbExhYmVscykge1xuICAgIGxhYmVsLmF0dHIoXG4gICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgLy8gVGhpcyBwdXRzIHRoZSBsYWJhbCBvbiB0b3Agb2YgdGhlIGJveCBpbnN0ZWFkIG9mIGluc2lkZSBpdFxuICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAobm9kZS54IC0gYmJveC53aWR0aCAvIDIpICsgXCIsIFwiICsgKG5vZGUueSAtIG5vZGUuaGVpZ2h0IC8gMikgKyBcIilcIlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbGFiZWwuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICAvLyBUaGlzIHB1dHMgdGhlIGxhYmFsIG9uIHRvcCBvZiB0aGUgYm94IGluc3RlYWQgb2YgaW5zaWRlIGl0XG4gICAgICBcInRyYW5zbGF0ZShcIiArIG5vZGUueCArIFwiLCBcIiArIChub2RlLnkgLSBub2RlLmhlaWdodCAvIDIpICsgXCIpXCJcbiAgICApO1xuICB9XG4gIGNvbnN0IHJlY3RCb3ggPSByZWN0Mi5ub2RlKCkuZ2V0QkJveCgpO1xuICBub2RlLndpZHRoID0gcmVjdEJveC53aWR0aDtcbiAgbm9kZS5oZWlnaHQgPSByZWN0Qm94LmhlaWdodDtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludCkge1xuICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KG5vZGUsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IG5vdGVHcm91cCA9IChwYXJlbnQsIG5vZGUpID0+IHtcbiAgY29uc3Qgc2hhcGVTdmcgPSBwYXJlbnQuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJub3RlLWNsdXN0ZXJcIikuYXR0cihcImlkXCIsIG5vZGUuaWQpO1xuICBjb25zdCByZWN0MiA9IHNoYXBlU3ZnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIik7XG4gIGNvbnN0IHBhZGRpbmcgPSAwICogbm9kZS5wYWRkaW5nO1xuICBjb25zdCBoYWxmUGFkZGluZyA9IHBhZGRpbmcgLyAyO1xuICByZWN0Mi5hdHRyKFwicnhcIiwgbm9kZS5yeCkuYXR0cihcInJ5XCIsIG5vZGUucnkpLmF0dHIoXCJ4XCIsIG5vZGUueCAtIG5vZGUud2lkdGggLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ5XCIsIG5vZGUueSAtIG5vZGUuaGVpZ2h0IC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwid2lkdGhcIiwgbm9kZS53aWR0aCArIHBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgbm9kZS5oZWlnaHQgKyBwYWRkaW5nKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIik7XG4gIGNvbnN0IHJlY3RCb3ggPSByZWN0Mi5ub2RlKCkuZ2V0QkJveCgpO1xuICBub2RlLndpZHRoID0gcmVjdEJveC53aWR0aDtcbiAgbm9kZS5oZWlnaHQgPSByZWN0Qm94LmhlaWdodDtcbiAgbm9kZS5pbnRlcnNlY3QgPSBmdW5jdGlvbihwb2ludCkge1xuICAgIHJldHVybiBpbnRlcnNlY3RSZWN0KG5vZGUsIHBvaW50KTtcbiAgfTtcbiAgcmV0dXJuIHNoYXBlU3ZnO1xufTtcbmNvbnN0IHJvdW5kZWRXaXRoVGl0bGUgPSAocGFyZW50LCBub2RlKSA9PiB7XG4gIGNvbnN0IHNoYXBlU3ZnID0gcGFyZW50Lmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIG5vZGUuY2xhc3NlcykuYXR0cihcImlkXCIsIG5vZGUuaWQpO1xuICBjb25zdCByZWN0MiA9IHNoYXBlU3ZnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIik7XG4gIGNvbnN0IGxhYmVsID0gc2hhcGVTdmcuaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJjbHVzdGVyLWxhYmVsXCIpO1xuICBjb25zdCBpbm5lclJlY3QgPSBzaGFwZVN2Zy5hcHBlbmQoXCJyZWN0XCIpO1xuICBjb25zdCB0ZXh0ID0gbGFiZWwubm9kZSgpLmFwcGVuZENoaWxkKGNyZWF0ZUxhYmVsKG5vZGUubGFiZWxUZXh0LCBub2RlLmxhYmVsU3R5bGUsIHZvaWQgMCwgdHJ1ZSkpO1xuICBsZXQgYmJveCA9IHRleHQuZ2V0QkJveCgpO1xuICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgY29uc3QgZGl2ID0gdGV4dC5jaGlsZHJlblswXTtcbiAgICBjb25zdCBkdiA9IHNlbGVjdCh0ZXh0KTtcbiAgICBiYm94ID0gZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGR2LmF0dHIoXCJ3aWR0aFwiLCBiYm94LndpZHRoKTtcbiAgICBkdi5hdHRyKFwiaGVpZ2h0XCIsIGJib3guaGVpZ2h0KTtcbiAgfVxuICBiYm94ID0gdGV4dC5nZXRCQm94KCk7XG4gIGNvbnN0IHBhZGRpbmcgPSAwICogbm9kZS5wYWRkaW5nO1xuICBjb25zdCBoYWxmUGFkZGluZyA9IHBhZGRpbmcgLyAyO1xuICBjb25zdCB3aWR0aCA9IG5vZGUud2lkdGggPD0gYmJveC53aWR0aCArIG5vZGUucGFkZGluZyA/IGJib3gud2lkdGggKyBub2RlLnBhZGRpbmcgOiBub2RlLndpZHRoO1xuICBpZiAobm9kZS53aWR0aCA8PSBiYm94LndpZHRoICsgbm9kZS5wYWRkaW5nKSB7XG4gICAgbm9kZS5kaWZmID0gKGJib3gud2lkdGggKyBub2RlLnBhZGRpbmcgKiAwIC0gbm9kZS53aWR0aCkgLyAyO1xuICB9IGVsc2Uge1xuICAgIG5vZGUuZGlmZiA9IC1ub2RlLnBhZGRpbmcgLyAyO1xuICB9XG4gIHJlY3QyLmF0dHIoXCJjbGFzc1wiLCBcIm91dGVyXCIpLmF0dHIoXCJ4XCIsIG5vZGUueCAtIHdpZHRoIC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwieVwiLCBub2RlLnkgLSBub2RlLmhlaWdodCAvIDIgLSBoYWxmUGFkZGluZykuYXR0cihcIndpZHRoXCIsIHdpZHRoICsgcGFkZGluZykuYXR0cihcImhlaWdodFwiLCBub2RlLmhlaWdodCArIHBhZGRpbmcpO1xuICBpbm5lclJlY3QuYXR0cihcImNsYXNzXCIsIFwiaW5uZXJcIikuYXR0cihcInhcIiwgbm9kZS54IC0gd2lkdGggLyAyIC0gaGFsZlBhZGRpbmcpLmF0dHIoXCJ5XCIsIG5vZGUueSAtIG5vZGUuaGVpZ2h0IC8gMiAtIGhhbGZQYWRkaW5nICsgYmJveC5oZWlnaHQgLSAxKS5hdHRyKFwid2lkdGhcIiwgd2lkdGggKyBwYWRkaW5nKS5hdHRyKFwiaGVpZ2h0XCIsIG5vZGUuaGVpZ2h0ICsgcGFkZGluZyAtIGJib3guaGVpZ2h0IC0gMyk7XG4gIGxhYmVsLmF0dHIoXG4gICAgXCJ0cmFuc2Zvcm1cIixcbiAgICBcInRyYW5zbGF0ZShcIiArIChub2RlLnggLSBiYm94LndpZHRoIC8gMikgKyBcIiwgXCIgKyAobm9kZS55IC0gbm9kZS5oZWlnaHQgLyAyIC0gbm9kZS5wYWRkaW5nIC8gMyArIChldmFsdWF0ZShnZXRDb25maWcoKS5mbG93Y2hhcnQuaHRtbExhYmVscykgPyA1IDogMykpICsgXCIpXCJcbiAgKTtcbiAgY29uc3QgcmVjdEJveCA9IHJlY3QyLm5vZGUoKS5nZXRCQm94KCk7XG4gIG5vZGUuaGVpZ2h0ID0gcmVjdEJveC5oZWlnaHQ7XG4gIG5vZGUuaW50ZXJzZWN0ID0gZnVuY3Rpb24ocG9pbnQpIHtcbiAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChub2RlLCBwb2ludCk7XG4gIH07XG4gIHJldHVybiBzaGFwZVN2Zztcbn07XG5jb25zdCBkaXZpZGVyID0gKHBhcmVudCwgbm9kZSkgPT4ge1xuICBjb25zdCBzaGFwZVN2ZyA9IHBhcmVudC5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBub2RlLmNsYXNzZXMpLmF0dHIoXCJpZFwiLCBub2RlLmlkKTtcbiAgY29uc3QgcmVjdDIgPSBzaGFwZVN2Zy5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpO1xuICBjb25zdCBwYWRkaW5nID0gMCAqIG5vZGUucGFkZGluZztcbiAgY29uc3QgaGFsZlBhZGRpbmcgPSBwYWRkaW5nIC8gMjtcbiAgcmVjdDIuYXR0cihcImNsYXNzXCIsIFwiZGl2aWRlclwiKS5hdHRyKFwieFwiLCBub2RlLnggLSBub2RlLndpZHRoIC8gMiAtIGhhbGZQYWRkaW5nKS5hdHRyKFwieVwiLCBub2RlLnkgLSBub2RlLmhlaWdodCAvIDIpLmF0dHIoXCJ3aWR0aFwiLCBub2RlLndpZHRoICsgcGFkZGluZykuYXR0cihcImhlaWdodFwiLCBub2RlLmhlaWdodCArIHBhZGRpbmcpO1xuICBjb25zdCByZWN0Qm94ID0gcmVjdDIubm9kZSgpLmdldEJCb3goKTtcbiAgbm9kZS53aWR0aCA9IHJlY3RCb3gud2lkdGg7XG4gIG5vZGUuaGVpZ2h0ID0gcmVjdEJveC5oZWlnaHQ7XG4gIG5vZGUuZGlmZiA9IC1ub2RlLnBhZGRpbmcgLyAyO1xuICBub2RlLmludGVyc2VjdCA9IGZ1bmN0aW9uKHBvaW50KSB7XG4gICAgcmV0dXJuIGludGVyc2VjdFJlY3Qobm9kZSwgcG9pbnQpO1xuICB9O1xuICByZXR1cm4gc2hhcGVTdmc7XG59O1xuY29uc3Qgc2hhcGVzID0geyByZWN0LCByb3VuZGVkV2l0aFRpdGxlLCBub3RlR3JvdXAsIGRpdmlkZXIgfTtcbmxldCBjbHVzdGVyRWxlbXMgPSB7fTtcbmNvbnN0IGluc2VydENsdXN0ZXIgPSAoZWxlbSwgbm9kZSkgPT4ge1xuICBsb2cudHJhY2UoXCJJbnNlcnRpbmcgY2x1c3RlclwiKTtcbiAgY29uc3Qgc2hhcGUgPSBub2RlLnNoYXBlIHx8IFwicmVjdFwiO1xuICBjbHVzdGVyRWxlbXNbbm9kZS5pZF0gPSBzaGFwZXNbc2hhcGVdKGVsZW0sIG5vZGUpO1xufTtcbmNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICBjbHVzdGVyRWxlbXMgPSB7fTtcbn07XG5jb25zdCByZWN1cnNpdmVSZW5kZXIgPSBhc3luYyAoX2VsZW0sIGdyYXBoLCBkaWFncmFtdHlwZSwgcGFyZW50Q2x1c3RlcikgPT4ge1xuICBsb2cuaW5mbyhcIkdyYXBoIGluIHJlY3Vyc2l2ZSByZW5kZXI6IFhYWFwiLCBncmFwaGxpYkpzb24ud3JpdGUoZ3JhcGgpLCBwYXJlbnRDbHVzdGVyKTtcbiAgY29uc3QgZGlyID0gZ3JhcGguZ3JhcGgoKS5yYW5rZGlyO1xuICBsb2cudHJhY2UoXCJEaXIgaW4gcmVjdXJzaXZlIHJlbmRlciAtIGRpcjpcIiwgZGlyKTtcbiAgY29uc3QgZWxlbSA9IF9lbGVtLmluc2VydChcImdcIikuYXR0cihcImNsYXNzXCIsIFwicm9vdFwiKTtcbiAgaWYgKCFncmFwaC5ub2RlcygpKSB7XG4gICAgbG9nLmluZm8oXCJObyBub2RlcyBmb3VuZCBmb3JcIiwgZ3JhcGgpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKFwiUmVjdXJzaXZlIHJlbmRlciBYWFhcIiwgZ3JhcGgubm9kZXMoKSk7XG4gIH1cbiAgaWYgKGdyYXBoLmVkZ2VzKCkubGVuZ3RoID4gMCkge1xuICAgIGxvZy50cmFjZShcIlJlY3Vyc2l2ZSBlZGdlc1wiLCBncmFwaC5lZGdlKGdyYXBoLmVkZ2VzKClbMF0pKTtcbiAgfVxuICBjb25zdCBjbHVzdGVycyA9IGVsZW0uaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJjbHVzdGVyc1wiKTtcbiAgY29uc3QgZWRnZVBhdGhzID0gZWxlbS5pbnNlcnQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImVkZ2VQYXRoc1wiKTtcbiAgY29uc3QgZWRnZUxhYmVscyA9IGVsZW0uaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlTGFiZWxzXCIpO1xuICBjb25zdCBub2RlcyA9IGVsZW0uaW5zZXJ0KFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJub2Rlc1wiKTtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgZ3JhcGgubm9kZXMoKS5tYXAoYXN5bmMgZnVuY3Rpb24odikge1xuICAgICAgY29uc3Qgbm9kZSA9IGdyYXBoLm5vZGUodik7XG4gICAgICBpZiAocGFyZW50Q2x1c3RlciAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmVudENsdXN0ZXIuY2x1c3RlckRhdGEpKTtcbiAgICAgICAgbG9nLmluZm8oXCJTZXR0aW5nIGRhdGEgZm9yIGNsdXN0ZXIgWFhYIChcIiwgdiwgXCIpIFwiLCBkYXRhLCBwYXJlbnRDbHVzdGVyKTtcbiAgICAgICAgZ3JhcGguc2V0Tm9kZShwYXJlbnRDbHVzdGVyLmlkLCBkYXRhKTtcbiAgICAgICAgaWYgKCFncmFwaC5wYXJlbnQodikpIHtcbiAgICAgICAgICBsb2cudHJhY2UoXCJTZXR0aW5nIHBhcmVudFwiLCB2LCBwYXJlbnRDbHVzdGVyLmlkKTtcbiAgICAgICAgICBncmFwaC5zZXRQYXJlbnQodiwgcGFyZW50Q2x1c3Rlci5pZCwgZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKFwiKEluc2VydCkgTm9kZSBYWFhcIiArIHYgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShncmFwaC5ub2RlKHYpKSk7XG4gICAgICBpZiAobm9kZSAmJiBub2RlLmNsdXN0ZXJOb2RlKSB7XG4gICAgICAgIGxvZy5pbmZvKFwiQ2x1c3RlciBpZGVudGlmaWVkXCIsIHYsIG5vZGUud2lkdGgsIGdyYXBoLm5vZGUodikpO1xuICAgICAgICBjb25zdCBvID0gYXdhaXQgcmVjdXJzaXZlUmVuZGVyKG5vZGVzLCBub2RlLmdyYXBoLCBkaWFncmFtdHlwZSwgZ3JhcGgubm9kZSh2KSk7XG4gICAgICAgIGNvbnN0IG5ld0VsID0gby5lbGVtO1xuICAgICAgICB1cGRhdGVOb2RlQm91bmRzKG5vZGUsIG5ld0VsKTtcbiAgICAgICAgbm9kZS5kaWZmID0gby5kaWZmIHx8IDA7XG4gICAgICAgIGxvZy5pbmZvKFwiTm9kZSBib3VuZHMgKGFiYzEyMylcIiwgdiwgbm9kZSwgbm9kZS53aWR0aCwgbm9kZS54LCBub2RlLnkpO1xuICAgICAgICBzZXROb2RlRWxlbShuZXdFbCwgbm9kZSk7XG4gICAgICAgIGxvZy53YXJuKFwiUmVjdXJzaXZlIHJlbmRlciBjb21wbGV0ZSBcIiwgbmV3RWwsIG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGdyYXBoLmNoaWxkcmVuKHYpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBsb2cuaW5mbyhcIkNsdXN0ZXIgLSB0aGUgbm9uIHJlY3Vyc2l2ZSBwYXRoIFhYWFwiLCB2LCBub2RlLmlkLCBub2RlLCBncmFwaCk7XG4gICAgICAgICAgbG9nLmluZm8oZmluZE5vbkNsdXN0ZXJDaGlsZChub2RlLmlkLCBncmFwaCkpO1xuICAgICAgICAgIGNsdXN0ZXJEYltub2RlLmlkXSA9IHsgaWQ6IGZpbmROb25DbHVzdGVyQ2hpbGQobm9kZS5pZCwgZ3JhcGgpLCBub2RlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmluZm8oXCJOb2RlIC0gdGhlIG5vbiByZWN1cnNpdmUgcGF0aFwiLCB2LCBub2RlLmlkLCBub2RlKTtcbiAgICAgICAgICBhd2FpdCBpbnNlcnROb2RlKG5vZGVzLCBncmFwaC5ub2RlKHYpLCBkaXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgKTtcbiAgZ3JhcGguZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBjb25zdCBlZGdlID0gZ3JhcGguZWRnZShlLnYsIGUudywgZS5uYW1lKTtcbiAgICBsb2cuaW5mbyhcIkVkZ2UgXCIgKyBlLnYgKyBcIiAtPiBcIiArIGUudyArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGUpKTtcbiAgICBsb2cuaW5mbyhcIkVkZ2UgXCIgKyBlLnYgKyBcIiAtPiBcIiArIGUudyArIFwiOiBcIiwgZSwgXCIgXCIsIEpTT04uc3RyaW5naWZ5KGdyYXBoLmVkZ2UoZSkpKTtcbiAgICBsb2cuaW5mbyhcIkZpeFwiLCBjbHVzdGVyRGIsIFwiaWRzOlwiLCBlLnYsIGUudywgXCJUcmFuc2xhdGVpbmc6IFwiLCBjbHVzdGVyRGJbZS52XSwgY2x1c3RlckRiW2Uud10pO1xuICAgIGluc2VydEVkZ2VMYWJlbChlZGdlTGFiZWxzLCBlZGdlKTtcbiAgfSk7XG4gIGdyYXBoLmVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgbG9nLmluZm8oXCJFZGdlIFwiICsgZS52ICsgXCIgLT4gXCIgKyBlLncgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShlKSk7XG4gIH0pO1xuICBsb2cuaW5mbyhcIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1wiKTtcbiAgbG9nLmluZm8oXCIjIyMgICAgICAgICAgICAgICAgTGF5b3V0ICAgICAgICAgICAgICAgICAjIyNcIik7XG4gIGxvZy5pbmZvKFwiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXCIpO1xuICBsb2cuaW5mbyhncmFwaCk7XG4gIGxheW91dChncmFwaCk7XG4gIGxvZy5pbmZvKFwiR3JhcGggYWZ0ZXIgbGF5b3V0OlwiLCBncmFwaGxpYkpzb24ud3JpdGUoZ3JhcGgpKTtcbiAgbGV0IGRpZmYgPSAwO1xuICBzb3J0Tm9kZXNCeUhpZXJhcmNoeShncmFwaCkuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgY29uc3Qgbm9kZSA9IGdyYXBoLm5vZGUodik7XG4gICAgbG9nLmluZm8oXCJQb3NpdGlvbiBcIiArIHYgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShncmFwaC5ub2RlKHYpKSk7XG4gICAgbG9nLmluZm8oXG4gICAgICBcIlBvc2l0aW9uIFwiICsgdiArIFwiOiAoXCIgKyBub2RlLngsXG4gICAgICBcIixcIiArIG5vZGUueSxcbiAgICAgIFwiKSB3aWR0aDogXCIsXG4gICAgICBub2RlLndpZHRoLFxuICAgICAgXCIgaGVpZ2h0OiBcIixcbiAgICAgIG5vZGUuaGVpZ2h0XG4gICAgKTtcbiAgICBpZiAobm9kZSAmJiBub2RlLmNsdXN0ZXJOb2RlKSB7XG4gICAgICBwb3NpdGlvbk5vZGUobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChncmFwaC5jaGlsZHJlbih2KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGluc2VydENsdXN0ZXIoY2x1c3RlcnMsIG5vZGUpO1xuICAgICAgICBjbHVzdGVyRGJbbm9kZS5pZF0ubm9kZSA9IG5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3NpdGlvbk5vZGUobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgZ3JhcGguZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpIHtcbiAgICBjb25zdCBlZGdlID0gZ3JhcGguZWRnZShlKTtcbiAgICBsb2cuaW5mbyhcIkVkZ2UgXCIgKyBlLnYgKyBcIiAtPiBcIiArIGUudyArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGVkZ2UpLCBlZGdlKTtcbiAgICBjb25zdCBwYXRocyA9IGluc2VydEVkZ2UoZWRnZVBhdGhzLCBlLCBlZGdlLCBjbHVzdGVyRGIsIGRpYWdyYW10eXBlLCBncmFwaCk7XG4gICAgcG9zaXRpb25FZGdlTGFiZWwoZWRnZSwgcGF0aHMpO1xuICB9KTtcbiAgZ3JhcGgubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICBjb25zdCBuID0gZ3JhcGgubm9kZSh2KTtcbiAgICBsb2cuaW5mbyh2LCBuLnR5cGUsIG4uZGlmZik7XG4gICAgaWYgKG4udHlwZSA9PT0gXCJncm91cFwiKSB7XG4gICAgICBkaWZmID0gbi5kaWZmO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB7IGVsZW0sIGRpZmYgfTtcbn07XG5jb25zdCByZW5kZXIgPSBhc3luYyAoZWxlbSwgZ3JhcGgsIG1hcmtlcnMsIGRpYWdyYW10eXBlLCBpZCkgPT4ge1xuICBpbnNlcnRNYXJrZXJzKGVsZW0sIG1hcmtlcnMsIGRpYWdyYW10eXBlLCBpZCk7XG4gIGNsZWFyJDIoKTtcbiAgY2xlYXIkMygpO1xuICBjbGVhcigpO1xuICBjbGVhciQxKCk7XG4gIGxvZy53YXJuKFwiR3JhcGggYXQgZmlyc3Q6XCIsIGdyYXBobGliSnNvbi53cml0ZShncmFwaCkpO1xuICBhZGp1c3RDbHVzdGVyc0FuZEVkZ2VzKGdyYXBoKTtcbiAgbG9nLndhcm4oXCJHcmFwaCBhZnRlcjpcIiwgZ3JhcGhsaWJKc29uLndyaXRlKGdyYXBoKSk7XG4gIGF3YWl0IHJlY3Vyc2l2ZVJlbmRlcihlbGVtLCBncmFwaCwgZGlhZ3JhbXR5cGUpO1xufTtcbmV4cG9ydCB7XG4gIHJlbmRlciBhcyByXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/index-a92ac404.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/infoDiagram-264bed3e.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/infoDiagram-264bed3e.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 9, 10];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"info\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"statement\": 8, \"NL\": 9, \"showInfo\": 10, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"info\", 6: \"EOF\", 9: \"NL\", 10: \"showInfo\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n $$.length - 1;\n switch (yystate) {\n case 1:\n return yy;\n case 4:\n break;\n case 6:\n yy.setInfo(true);\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8] }, { 1: [2, 1] }, o($V0, [2, 3]), o($V0, [2, 4]), o($V0, [2, 5]), o($V0, [2, 6])],\n defaultActions: { 4: [2, 1] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 4;\n case 1:\n return 9;\n case 2:\n return \"space\";\n case 3:\n return 10;\n case 4:\n return 6;\n case 5:\n return \"TXT\";\n }\n },\n rules: [/^(?:info\\b)/i, /^(?:[\\s\\n\\r]+)/i, /^(?:[\\s]+)/i, /^(?:showInfo\\b)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nvar message = \"\";\nvar info = false;\nconst setMessage = (txt) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Setting message to: \" + txt);\n message = txt;\n};\nconst getMessage = () => {\n return message;\n};\nconst setInfo = (inf) => {\n info = inf;\n};\nconst getInfo = () => {\n return info;\n};\nconst db = {\n setMessage,\n getMessage,\n setInfo,\n getInfo,\n clear: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v\n // parseError\n};\nconst getStyles = () => ``;\nconst styles = getStyles;\nconst draw = (text, id, version) => {\n try {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Rendering info diagram\\n\" + text);\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(\"#\" + id);\n const g = svg.append(\"g\");\n g.append(\"text\").attr(\"x\", 100).attr(\"y\", 40).attr(\"class\", \"version\").attr(\"font-size\", \"32px\").style(\"text-anchor\", \"middle\").text(\"v \" + version);\n svg.attr(\"height\", 100);\n svg.attr(\"width\", 400);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"Error while rendering info diagram\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(e.message);\n }\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9pbmZvRGlhZ3JhbS0yNjRiZWQzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTZFO0FBQ2pEO0FBQ1Q7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQix5SUFBeUk7QUFDekosa0JBQWtCLDBEQUEwRDtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyxpQkFBaUIsSUFBSSxRQUFRLG1CQUFtQixNQUFNLEtBQUssOENBQThDLElBQUksV0FBVztBQUN0SSxzQkFBc0IsV0FBVztBQUNqQztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsaUJBQWlCLDBCQUEwQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5REFBUztBQUNiLDBCQUEwQix1REFBUztBQUNuQztBQUNBO0FBQ0EsdUJBQXVCLDBDQUFNO0FBQzdCO0FBQ0EsK0NBQStDLDBDQUFNLG1EQUFtRCwwQ0FBTTtBQUM5RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLElBQUkseURBQVM7QUFDYixJQUFJLHlEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvaW5mb0RpYWdyYW0tMjY0YmVkM2UuanM/ODNkNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2IGFzIGNsZWFyLCBsIGFzIGxvZywgYyBhcyBnZXRDb25maWcgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QgfSBmcm9tIFwiZDNcIjtcbmltcG9ydCBcInRzLWRlZGVudFwiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFs2LCA5LCAxMF07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJpbmZvXCI6IDQsIFwiZG9jdW1lbnRcIjogNSwgXCJFT0ZcIjogNiwgXCJsaW5lXCI6IDcsIFwic3RhdGVtZW50XCI6IDgsIFwiTkxcIjogOSwgXCJzaG93SW5mb1wiOiAxMCwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDQ6IFwiaW5mb1wiLCA2OiBcIkVPRlwiLCA5OiBcIk5MXCIsIDEwOiBcInNob3dJbmZvXCIgfSxcbiAgICBwcm9kdWN0aW9uc186IFswLCBbMywgM10sIFs1LCAwXSwgWzUsIDJdLCBbNywgMV0sIFs3LCAxXSwgWzgsIDFdXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG4gICAgICAkJC5sZW5ndGggLSAxO1xuICAgICAgc3dpdGNoICh5eXN0YXRlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXR1cm4geXk7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHl5LnNldEluZm8odHJ1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogWzEsIDJdIH0sIHsgMTogWzNdIH0sIG8oJFYwLCBbMiwgMl0sIHsgNTogMyB9KSwgeyA2OiBbMSwgNF0sIDc6IDUsIDg6IDYsIDk6IFsxLCA3XSwgMTA6IFsxLCA4XSB9LCB7IDE6IFsyLCAxXSB9LCBvKCRWMCwgWzIsIDNdKSwgbygkVjAsIFsyLCA0XSksIG8oJFYwLCBbMiwgNV0pLCBvKCRWMCwgWzIsIDZdKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgNDogWzIsIDFdIH0sXG4gICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgIGlmIChoYXNoLnJlY292ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMudHJhY2Uoc3RyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICBlcnJvci5oYXNoID0gaGFzaDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHRzdGFjayA9IFtdLCB2c3RhY2sgPSBbbnVsbF0sIGxzdGFjayA9IFtdLCB0YWJsZSA9IHRoaXMudGFibGUsIHl5dGV4dCA9IFwiXCIsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgVEVSUk9SID0gMiwgRU9GID0gMTtcbiAgICAgIHZhciBhcmdzID0gbHN0YWNrLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBsZXhlcjIgPSBPYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpO1xuICAgICAgdmFyIHNoYXJlZFN0YXRlID0geyB5eToge30gfTtcbiAgICAgIGZvciAodmFyIGsgaW4gdGhpcy55eSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksIGspKSB7XG4gICAgICAgICAgc2hhcmVkU3RhdGUueXlba10gPSB0aGlzLnl5W2tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXhlcjIuc2V0SW5wdXQoaW5wdXQsIHNoYXJlZFN0YXRlLnl5KTtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LmxleGVyID0gbGV4ZXIyO1xuICAgICAgc2hhcmVkU3RhdGUueXkucGFyc2VyID0gdGhpcztcbiAgICAgIGlmICh0eXBlb2YgbGV4ZXIyLnl5bGxvYyA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxleGVyMi55eWxsb2MgPSB7fTtcbiAgICAgIH1cbiAgICAgIHZhciB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICBsc3RhY2sucHVzaCh5eWxvYyk7XG4gICAgICB2YXIgcmFuZ2VzID0gbGV4ZXIyLm9wdGlvbnMgJiYgbGV4ZXIyLm9wdGlvbnMucmFuZ2VzO1xuICAgICAgaWYgKHR5cGVvZiBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpIHx8IGxleGVyMi5sZXgoKSB8fCBFT0Y7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgdHN0YWNrID0gdG9rZW47XG4gICAgICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9XG4gICAgICB2YXIgc3ltYm9sLCBzdGF0ZSwgYWN0aW9uLCByLCB5eXZhbCA9IHt9LCBwLCBsZW4sIG5ld1N0YXRlLCBleHBlY3RlZDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5bWJvbCA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSBcInVuZGVmaW5lZFwiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICB2YXIgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+IFRFUlJPUikge1xuICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKFwiJ1wiICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgXCInXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGV4ZXIyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjpcXG5cIiArIGxleGVyMi5zaG93UG9zaXRpb24oKSArIFwiXFxuRXhwZWN0aW5nIFwiICsgZXhwZWN0ZWQuam9pbihcIiwgXCIpICsgXCIsIGdvdCAnXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOiBVbmV4cGVjdGVkIFwiICsgKHN5bWJvbCA9PSBFT0YgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgdGV4dDogbGV4ZXIyLm1hdGNoLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCxcbiAgICAgICAgICAgIGxpbmU6IGxleGVyMi55eWxpbmVubyxcbiAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiBcIiArIHN0YXRlICsgXCIsIHRva2VuOiBcIiArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaChsZXhlcjIueXl0ZXh0KTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKGxleGVyMi55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeXlsZW5nID0gbGV4ZXIyLnl5bGVuZztcbiAgICAgICAgICAgICAgeXl0ZXh0ID0gbGV4ZXIyLnl5dGV4dDtcbiAgICAgICAgICAgICAgeXlsaW5lbm8gPSBsZXhlcjIueXlsaW5lbm87XG4gICAgICAgICAgICAgIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmFuZ2VzKSB7XG4gICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5hcHBseSh5eXZhbCwgW1xuICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgeXlsaW5lbm8sXG4gICAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5LFxuICAgICAgICAgICAgICBhY3Rpb25bMV0sXG4gICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTtcbiAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcbiAgdmFyIGxleGVyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxleGVyMiA9IHtcbiAgICAgIEVPRjogMSxcbiAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG4gICAgICBzZXRJbnB1dDogZnVuY3Rpb24oaW5wdXQsIHl5KSB7XG4gICAgICAgIHRoaXMueXkgPSB5eSB8fCB0aGlzLnl5IHx8IHt9O1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fYmFja3RyYWNrID0gdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbXCJJTklUSUFMXCJdO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogMCxcbiAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLCAwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG4gICAgICBpbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgICB9LFxuICAgICAgLy8gdW5zaGlmdHMgb25lIGNoYXIgKG9yIGEgc3RyaW5nKSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdW5wdXQ6IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgY2FjaGVzIG1hdGNoZWQgdGV4dCBhbmQgYXBwZW5kcyBpdCBvbiBuZXh0IGFjdGlvblxuICAgICAgbW9yZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgc2lnbmFscyB0aGUgbGV4ZXIgdGhhdCB0aGlzIHJ1bGUgZmFpbHMgdG8gbWF0Y2ggdGhlIGlucHV0LCBzbyB0aGUgbmV4dCBtYXRjaGluZyBydWxlIChyZWdleCkgc2hvdWxkIGJlIHRlc3RlZCBpbnN0ZWFkLlxuICAgICAgcmVqZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxuICAgICAgbGVzczogZnVuY3Rpb24obikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgICB9LFxuICAgICAgLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG4gICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGluZXMsIGJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgIHl5bGxvYzoge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgIG1hdGNoOiB0aGlzLm1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgeXlsZW5nOiB0aGlzLnl5bGVuZyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgIF9pbnB1dDogdGhpcy5faW5wdXQsXG4gICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgIGZvciAodmFyIGsgaW4gYmFja3VwKSB7XG4gICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICB0aGlzLnl5dGV4dCA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFVucmVjb2duaXplZCB0ZXh0LlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxuICAgICAgbGV4OiBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyBwb3AgdGhlIHByZXZpb3VzbHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvZmYgdGhlIGNvbmRpdGlvbiBzdGFja1xuICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbMF07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBwcm9kdWNlIHRoZSBsZXhlciBydWxlIHNldCB3aGljaCBpcyBhY3RpdmUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZVxuICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW1wiSU5JVElBTFwiXS5ydWxlcztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGU7IHdoZW4gYW4gaW5kZXggYXJndW1lbnQgaXMgcHJvdmlkZWQgaXQgcHJvZHVjZXMgdGhlIE4tdGggcHJldmlvdXMgY29uZGl0aW9uIHN0YXRlLCBpZiBhdmFpbGFibGVcbiAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiSU5JVElBTFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWxpYXMgZm9yIGJlZ2luKGNvbmRpdGlvbilcbiAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbiAgICAgIHN0YXRlU3RhY2tTaXplOiBmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHsgXCJjYXNlLWluc2Vuc2l0aXZlXCI6IHRydWUgfSxcbiAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuICAgICAgICBzd2l0Y2ggKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gOTtcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZXR1cm4gXCJzcGFjZVwiO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiAxMDtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gNjtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gXCJUWFRcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiBbL14oPzppbmZvXFxiKS9pLCAvXig/OltcXHNcXG5cXHJdKykvaSwgL14oPzpbXFxzXSspL2ksIC9eKD86c2hvd0luZm9cXGIpL2ksIC9eKD86JCkvaSwgL14oPzouKS9pXSxcbiAgICAgIGNvbmRpdGlvbnM6IHsgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgMSwgMiwgMywgNCwgNV0sIFwiaW5jbHVzaXZlXCI6IHRydWUgfSB9XG4gICAgfTtcbiAgICByZXR1cm4gbGV4ZXIyO1xuICB9KCk7XG4gIHBhcnNlcjIubGV4ZXIgPSBsZXhlcjtcbiAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgIHRoaXMueXkgPSB7fTtcbiAgfVxuICBQYXJzZXIucHJvdG90eXBlID0gcGFyc2VyMjtcbiAgcGFyc2VyMi5QYXJzZXIgPSBQYXJzZXI7XG4gIHJldHVybiBuZXcgUGFyc2VyKCk7XG59KCk7XG5wYXJzZXIucGFyc2VyID0gcGFyc2VyO1xuY29uc3QgcGFyc2VyJDEgPSBwYXJzZXI7XG52YXIgbWVzc2FnZSA9IFwiXCI7XG52YXIgaW5mbyA9IGZhbHNlO1xuY29uc3Qgc2V0TWVzc2FnZSA9ICh0eHQpID0+IHtcbiAgbG9nLmRlYnVnKFwiU2V0dGluZyBtZXNzYWdlIHRvOiBcIiArIHR4dCk7XG4gIG1lc3NhZ2UgPSB0eHQ7XG59O1xuY29uc3QgZ2V0TWVzc2FnZSA9ICgpID0+IHtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59O1xuY29uc3Qgc2V0SW5mbyA9IChpbmYpID0+IHtcbiAgaW5mbyA9IGluZjtcbn07XG5jb25zdCBnZXRJbmZvID0gKCkgPT4ge1xuICByZXR1cm4gaW5mbztcbn07XG5jb25zdCBkYiA9IHtcbiAgc2V0TWVzc2FnZSxcbiAgZ2V0TWVzc2FnZSxcbiAgc2V0SW5mbyxcbiAgZ2V0SW5mbyxcbiAgY2xlYXJcbiAgLy8gcGFyc2VFcnJvclxufTtcbmNvbnN0IGdldFN0eWxlcyA9ICgpID0+IGBgO1xuY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3QgZHJhdyA9ICh0ZXh0LCBpZCwgdmVyc2lvbikgPT4ge1xuICB0cnkge1xuICAgIGxvZy5kZWJ1ZyhcIlJlbmRlcmluZyBpbmZvIGRpYWdyYW1cXG5cIiArIHRleHQpO1xuICAgIGNvbnN0IHNlY3VyaXR5TGV2ZWwgPSBnZXRDb25maWcoKS5zZWN1cml0eUxldmVsO1xuICAgIGxldCBzYW5kYm94RWxlbWVudDtcbiAgICBpZiAoc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIpIHtcbiAgICAgIHNhbmRib3hFbGVtZW50ID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdCA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2VsZWN0KHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpIDogc2VsZWN0KFwiYm9keVwiKTtcbiAgICBjb25zdCBzdmcgPSByb290LnNlbGVjdChcIiNcIiArIGlkKTtcbiAgICBjb25zdCBnID0gc3ZnLmFwcGVuZChcImdcIik7XG4gICAgZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ4XCIsIDEwMCkuYXR0cihcInlcIiwgNDApLmF0dHIoXCJjbGFzc1wiLCBcInZlcnNpb25cIikuYXR0cihcImZvbnQtc2l6ZVwiLCBcIjMycHhcIikuc3R5bGUoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS50ZXh0KFwidiBcIiArIHZlcnNpb24pO1xuICAgIHN2Zy5hdHRyKFwiaGVpZ2h0XCIsIDEwMCk7XG4gICAgc3ZnLmF0dHIoXCJ3aWR0aFwiLCA0MDApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVuZGVyaW5nIGluZm8gZGlhZ3JhbVwiKTtcbiAgICBsb2cuZXJyb3IoZS5tZXNzYWdlKTtcbiAgfVxufTtcbmNvbnN0IHJlbmRlcmVyID0ge1xuICBkcmF3XG59O1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgcGFyc2VyOiBwYXJzZXIkMSxcbiAgZGIsXG4gIHJlbmRlcmVyLFxuICBzdHlsZXNcbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/infoDiagram-264bed3e.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/journeyDiagram-31be0096.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/journeyDiagram-31be0096.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDrawCommon-f26cad39.js */ \"../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 5], $V2 = [6, 9, 11, 17, 18, 20, 22, 23, 24, 26], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 17], $V6 = [1, 18], $V7 = [1, 19], $V8 = [1, 20], $V9 = [1, 24], $Va = [4, 6, 9, 11, 17, 18, 20, 22, 23, 24, 26];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"journey\": 4, \"document\": 5, \"EOF\": 6, \"directive\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NEWLINE\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \":\": 15, \"argDirective\": 16, \"title\": 17, \"acc_title\": 18, \"acc_title_value\": 19, \"acc_descr\": 20, \"acc_descr_value\": 21, \"acc_descr_multiline_value\": 22, \"section\": 23, \"taskName\": 24, \"taskData\": 25, \"open_directive\": 26, \"type_directive\": 27, \"arg_directive\": 28, \"close_directive\": 29, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"journey\", 6: \"EOF\", 9: \"SPACE\", 11: \"NEWLINE\", 15: \":\", 17: \"title\", 18: \"acc_title\", 19: \"acc_title_value\", 20: \"acc_descr\", 21: \"acc_descr_value\", 22: \"acc_descr_multiline_value\", 23: \"section\", 24: \"taskName\", 25: \"taskData\", 26: \"open_directive\", 27: \"type_directive\", 28: \"arg_directive\", 29: \"close_directive\" },\n productions_: [0, [3, 3], [3, 2], [5, 0], [5, 2], [8, 2], [8, 1], [8, 1], [8, 1], [7, 4], [7, 6], [10, 1], [10, 2], [10, 2], [10, 1], [10, 1], [10, 2], [10, 1], [12, 1], [13, 1], [16, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 11:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 12:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 13:\n case 14:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 15:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 16:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n case 18:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 19:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 20:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 21:\n yy.parseDirective(\"}%%\", \"close_directive\", \"journey\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 7: 3, 12: 4, 26: $V1 }, { 1: [3] }, o($V2, [2, 3], { 5: 6 }), { 3: 7, 4: $V0, 7: 3, 12: 4, 26: $V1 }, { 13: 8, 27: [1, 9] }, { 27: [2, 18] }, { 6: [1, 10], 7: 21, 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: 4, 17: $V3, 18: $V4, 20: $V5, 22: $V6, 23: $V7, 24: $V8, 26: $V1 }, { 1: [2, 2] }, { 14: 22, 15: [1, 23], 29: $V9 }, o([15, 29], [2, 19]), o($V2, [2, 8], { 1: [2, 1] }), o($V2, [2, 4]), { 7: 21, 10: 25, 12: 4, 17: $V3, 18: $V4, 20: $V5, 22: $V6, 23: $V7, 24: $V8, 26: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 11]), { 19: [1, 26] }, { 21: [1, 27] }, o($V2, [2, 14]), o($V2, [2, 15]), { 25: [1, 28] }, o($V2, [2, 17]), { 11: [1, 29] }, { 16: 30, 28: [1, 31] }, { 11: [2, 21] }, o($V2, [2, 5]), o($V2, [2, 12]), o($V2, [2, 13]), o($V2, [2, 16]), o($Va, [2, 9]), { 14: 32, 29: $V9 }, { 29: [2, 20] }, { 11: [1, 33] }, o($Va, [2, 10])],\n defaultActions: { 5: [2, 18], 7: [2, 2], 24: [2, 21], 31: [2, 20] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 26;\n case 1:\n this.begin(\"type_directive\");\n return 27;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 15;\n case 3:\n this.popState();\n this.popState();\n return 29;\n case 4:\n return 28;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 11;\n case 8:\n break;\n case 9:\n break;\n case 10:\n return 4;\n case 11:\n return 17;\n case 12:\n this.begin(\"acc_title\");\n return 18;\n case 13:\n this.popState();\n return \"acc_title_value\";\n case 14:\n this.begin(\"acc_descr\");\n return 20;\n case 15:\n this.popState();\n return \"acc_descr_value\";\n case 16:\n this.begin(\"acc_descr_multiline\");\n break;\n case 17:\n this.popState();\n break;\n case 18:\n return \"acc_descr_multiline_value\";\n case 19:\n return 23;\n case 20:\n return 24;\n case 21:\n return 25;\n case 22:\n return 15;\n case 23:\n return 6;\n case 24:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:journey\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [17, 18], \"inclusive\": false }, \"acc_descr\": { \"rules\": [15], \"inclusive\": false }, \"acc_title\": { \"rules\": [13], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23, 24], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n};\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\nconst addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(\":\");\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(\",\");\n }\n const peopleList = peeps.map((s) => s.trim());\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n rawTasks.push(rawTask);\n};\nconst addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst getActors = function() {\n return updateActors();\n};\nconst db = {\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey,\n clear,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\nconst getStyles = (options) => `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n ${options.faceColor ? `fill: ${options.faceColor}` : \"fill: #FFF8DC\"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : \"\"};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : \"\"};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : \"\"};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : \"\"};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : \"\"};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : \"\"};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : \"\"};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : \"\"};\n }\n\n .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : \"\"};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : \"\"};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : \"\"};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : \"\"};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : \"\"};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : \"\"};\n }\n`;\nconst styles = getStyles;\nconst drawRect = function(elem, rectData) {\n return (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.d)(elem, rectData);\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n};\nconst drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n return (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.f)(elem, textData);\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf2) {\n const g = elem.append(\"g\");\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf2.width * section.taskCount + // width of the tasks\n conf2.diagramMarginX * (section.taskCount - 1);\n rect.height = conf2.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf2)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf2,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf2) {\n const center = task.x + conf2.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf2.width;\n rect.height = conf2.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n title: person,\n pos: task.actors[person].position\n };\n drawCircle(g, circle);\n xPos += 10;\n });\n _drawTextCandidateFunc(conf2)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf2,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.a)(elem, bounds2);\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2, colour) {\n const { taskFontSize, taskFontFamily } = conf2;\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n initGraphics\n};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nconst actors = {};\nfunction drawActorLegend(diagram2) {\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey;\n let yPos = 60;\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n pos: actors[person].position\n };\n svgDraw.drawCircle(diagram2, circleData);\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: \"#666\",\n text: person,\n textMargin: conf2.boxTextMargin | 5\n };\n svgDraw.drawText(diagram2, labelData);\n yPos += 20;\n });\n}\nconst conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey;\nconst LEFT_MARGIN = conf.leftMargin;\nconst draw = function(text, id, version, diagObj) {\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey;\n diagObj.db.clear();\n diagObj.parser.parse(text + \"\\n\");\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n bounds.init();\n const diagram2 = root.select(\"#\" + id);\n svgDraw.initGraphics(diagram2);\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getDiagramTitle();\n const actorNames = diagObj.db.getActors();\n for (const member in actors) {\n delete actors[member];\n }\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf2.actorColours[actorPos % conf2.actorColours.length],\n position: actorPos\n };\n actorPos++;\n });\n drawActorLegend(diagram2);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n drawTasks(diagram2, tasks2, 0);\n const box = bounds.getBounds();\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 25);\n }\n const height = box.stopy - box.starty + 2 * conf2.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf2.diagramMarginX;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.i)(diagram2, height, width, conf2.useMaxWidth);\n diagram2.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", conf2.height * 4).attr(\"x2\", width - LEFT_MARGIN - 4).attr(\"y2\", conf2.height * 4).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n const extraVertForTitle = title ? 70 : 0;\n diagram2.attr(\"viewBox\", `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram2.attr(\"preserveAspectRatio\", \"xMinYMin meet\");\n diagram2.attr(\"height\", height + extraVertForTitle + 25);\n};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey;\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n if (!(type === \"activation\")) {\n _self.updateVal(item, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\n }\n };\n }\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n this.updateVal(bounds.data, \"startx\", _startx, Math.min);\n this.updateVal(bounds.data, \"starty\", _starty, Math.min);\n this.updateVal(bounds.data, \"stopx\", _stopx, Math.max);\n this.updateVal(bounds.data, \"stopy\", _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\nconst drawTasks = function(diagram2, tasks2, verticalPos) {\n const conf2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().journey;\n let lastSection = \"\";\n const sectionVHeight = conf2.height * 2 + conf2.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n let sectionNumber = 0;\n let fill = \"#CCC\";\n let colour = \"black\";\n let num = 0;\n for (const [i, task] of tasks2.entries()) {\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n let taskInSectionCount = 0;\n const currentSection2 = task.section;\n for (let taskIndex = i; taskIndex < tasks2.length; taskIndex++) {\n if (tasks2[taskIndex].section == currentSection2) {\n taskInSectionCount = taskInSectionCount + 1;\n } else {\n break;\n }\n }\n const section = {\n x: i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n taskCount: taskInSectionCount\n };\n svgDraw.drawSection(diagram2, section, conf2);\n lastSection = task.section;\n sectionNumber++;\n }\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n return acc;\n }, {});\n task.x = i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf2.diagramMarginX;\n task.height = conf2.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n svgDraw.drawTask(diagram2, task, conf2);\n bounds.insert(task.x, task.y, task.x + task.width + conf2.taskMargin, 300 + 5 * 30);\n }\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: (cnf) => {\n renderer.setConf(cnf.journey);\n db.clear();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9qb3VybmV5RGlhZ3JhbS0zMWJlMDA5Ni5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE2TztBQUM1TTtBQUMyRjtBQUN6RztBQUNKO0FBQ2tCO0FBQ2Q7QUFDSDtBQUNjO0FBQ2Q7QUFDYztBQUM5QjtBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQixLQUFLO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTCxVQUFVO0FBQ1YsZ0JBQWdCLGlnQkFBaWdCO0FBQ2poQixrQkFBa0IsNlVBQTZVO0FBQy9WO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0EsS0FBSztBQUNMLGNBQWMsb0NBQW9DLElBQUksUUFBUSxtQkFBbUIsTUFBTSxLQUFLLG9DQUFvQyxJQUFJLG1CQUFtQixJQUFJLGFBQWEsSUFBSSxpSUFBaUksSUFBSSxXQUFXLElBQUksOEJBQThCLHlDQUF5QyxXQUFXLHFCQUFxQixxRkFBcUYscURBQXFELGFBQWEsSUFBSSxhQUFhLHNDQUFzQyxhQUFhLHFCQUFxQixhQUFhLElBQUkscUJBQXFCLElBQUksYUFBYSx1RkFBdUYsaUJBQWlCLElBQUksYUFBYSxJQUFJLGFBQWE7QUFDeDFCLHNCQUFzQixpREFBaUQ7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FB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a0JBQWtCLHVEQUFTO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVEQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkJBQTJCO0FBQ3pEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxJQUFJO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3Qvam91cm5leURpYWdyYW0tMzFiZTAwOTYuanM/ZWQxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjIGFzIGdldENvbmZpZywgciBhcyBzZXREaWFncmFtVGl0bGUsIHQgYXMgZ2V0RGlhZ3JhbVRpdGxlLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBtIGFzIG1lcm1haWRBUEksIHYgYXMgY2xlYXIkMSwgaSBhcyBjb25maWd1cmVTdmdTaXplIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IHsgYXJjLCBzZWxlY3QgfSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7IGQgYXMgZHJhd1JlY3QkMSwgZiBhcyBkcmF3VGV4dCQxLCBhIGFzIGRyYXdCYWNrZ3JvdW5kUmVjdCQxLCBnIGFzIGdldE5vdGVSZWN0IH0gZnJvbSBcIi4vc3ZnRHJhd0NvbW1vbi1mMjZjYWQzOS5qc1wiO1xuaW1wb3J0IFwidHMtZGVkZW50XCI7XG5pbXBvcnQgXCJkYXlqc1wiO1xuaW1wb3J0IFwiQGJyYWludHJlZS9zYW5pdGl6ZS11cmxcIjtcbmltcG9ydCBcImRvbXB1cmlmeVwiO1xuaW1wb3J0IFwia2hyb21hXCI7XG5pbXBvcnQgXCJsb2Rhc2gtZXMvbWVtb2l6ZS5qc1wiO1xuaW1wb3J0IFwic3R5bGlzXCI7XG5pbXBvcnQgXCJsb2Rhc2gtZXMvaXNFbXB0eS5qc1wiO1xudmFyIHBhcnNlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbyA9IGZ1bmN0aW9uKGssIHYsIG8yLCBsKSB7XG4gICAgZm9yIChvMiA9IG8yIHx8IHt9LCBsID0gay5sZW5ndGg7IGwtLTsgbzJba1tsXV0gPSB2KVxuICAgICAgO1xuICAgIHJldHVybiBvMjtcbiAgfSwgJFYwID0gWzEsIDJdLCAkVjEgPSBbMSwgNV0sICRWMiA9IFs2LCA5LCAxMSwgMTcsIDE4LCAyMCwgMjIsIDIzLCAyNCwgMjZdLCAkVjMgPSBbMSwgMTVdLCAkVjQgPSBbMSwgMTZdLCAkVjUgPSBbMSwgMTddLCAkVjYgPSBbMSwgMThdLCAkVjcgPSBbMSwgMTldLCAkVjggPSBbMSwgMjBdLCAkVjkgPSBbMSwgMjRdLCAkVmEgPSBbNCwgNiwgOSwgMTEsIDE3LCAxOCwgMjAsIDIyLCAyMywgMjQsIDI2XTtcbiAgdmFyIHBhcnNlcjIgPSB7XG4gICAgdHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkge1xuICAgIH0sXG4gICAgeXk6IHt9LFxuICAgIHN5bWJvbHNfOiB7IFwiZXJyb3JcIjogMiwgXCJzdGFydFwiOiAzLCBcImpvdXJuZXlcIjogNCwgXCJkb2N1bWVudFwiOiA1LCBcIkVPRlwiOiA2LCBcImRpcmVjdGl2ZVwiOiA3LCBcImxpbmVcIjogOCwgXCJTUEFDRVwiOiA5LCBcInN0YXRlbWVudFwiOiAxMCwgXCJORVdMSU5FXCI6IDExLCBcIm9wZW5EaXJlY3RpdmVcIjogMTIsIFwidHlwZURpcmVjdGl2ZVwiOiAxMywgXCJjbG9zZURpcmVjdGl2ZVwiOiAxNCwgXCI6XCI6IDE1LCBcImFyZ0RpcmVjdGl2ZVwiOiAxNiwgXCJ0aXRsZVwiOiAxNywgXCJhY2NfdGl0bGVcIjogMTgsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDE5LCBcImFjY19kZXNjclwiOiAyMCwgXCJhY2NfZGVzY3JfdmFsdWVcIjogMjEsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAyMiwgXCJzZWN0aW9uXCI6IDIzLCBcInRhc2tOYW1lXCI6IDI0LCBcInRhc2tEYXRhXCI6IDI1LCBcIm9wZW5fZGlyZWN0aXZlXCI6IDI2LCBcInR5cGVfZGlyZWN0aXZlXCI6IDI3LCBcImFyZ19kaXJlY3RpdmVcIjogMjgsIFwiY2xvc2VfZGlyZWN0aXZlXCI6IDI5LCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICB0ZXJtaW5hbHNfOiB7IDI6IFwiZXJyb3JcIiwgNDogXCJqb3VybmV5XCIsIDY6IFwiRU9GXCIsIDk6IFwiU1BBQ0VcIiwgMTE6IFwiTkVXTElORVwiLCAxNTogXCI6XCIsIDE3OiBcInRpdGxlXCIsIDE4OiBcImFjY190aXRsZVwiLCAxOTogXCJhY2NfdGl0bGVfdmFsdWVcIiwgMjA6IFwiYWNjX2Rlc2NyXCIsIDIxOiBcImFjY19kZXNjcl92YWx1ZVwiLCAyMjogXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCIsIDIzOiBcInNlY3Rpb25cIiwgMjQ6IFwidGFza05hbWVcIiwgMjU6IFwidGFza0RhdGFcIiwgMjY6IFwib3Blbl9kaXJlY3RpdmVcIiwgMjc6IFwidHlwZV9kaXJlY3RpdmVcIiwgMjg6IFwiYXJnX2RpcmVjdGl2ZVwiLCAyOTogXCJjbG9zZV9kaXJlY3RpdmVcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAzXSwgWzMsIDJdLCBbNSwgMF0sIFs1LCAyXSwgWzgsIDJdLCBbOCwgMV0sIFs4LCAxXSwgWzgsIDFdLCBbNywgNF0sIFs3LCA2XSwgWzEwLCAxXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAyXSwgWzEwLCAxXSwgWzEyLCAxXSwgWzEzLCAxXSwgWzE2LCAxXSwgWzE0LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuICQkWyQwIC0gMV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeXkuc2V0RGlhZ3JhbVRpdGxlKCQkWyQwXS5zdWJzdHIoNikpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoNik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NUaXRsZSh0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICB5eS5hZGRTZWN0aW9uKCQkWyQwXS5zdWJzdHIoOCkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgeXkuYWRkVGFzaygkJFskMCAtIDFdLCAkJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9IFwidGFza1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwiJSV7XCIsIFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICQkWyQwXSA9ICQkWyQwXS50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKTtcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIn0lJVwiLCBcImNsb3NlX2RpcmVjdGl2ZVwiLCBcImpvdXJuZXlcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogJFYwLCA3OiAzLCAxMjogNCwgMjY6ICRWMSB9LCB7IDE6IFszXSB9LCBvKCRWMiwgWzIsIDNdLCB7IDU6IDYgfSksIHsgMzogNywgNDogJFYwLCA3OiAzLCAxMjogNCwgMjY6ICRWMSB9LCB7IDEzOiA4LCAyNzogWzEsIDldIH0sIHsgMjc6IFsyLCAxOF0gfSwgeyA2OiBbMSwgMTBdLCA3OiAyMSwgODogMTEsIDk6IFsxLCAxMl0sIDEwOiAxMywgMTE6IFsxLCAxNF0sIDEyOiA0LCAxNzogJFYzLCAxODogJFY0LCAyMDogJFY1LCAyMjogJFY2LCAyMzogJFY3LCAyNDogJFY4LCAyNjogJFYxIH0sIHsgMTogWzIsIDJdIH0sIHsgMTQ6IDIyLCAxNTogWzEsIDIzXSwgMjk6ICRWOSB9LCBvKFsxNSwgMjldLCBbMiwgMTldKSwgbygkVjIsIFsyLCA4XSwgeyAxOiBbMiwgMV0gfSksIG8oJFYyLCBbMiwgNF0pLCB7IDc6IDIxLCAxMDogMjUsIDEyOiA0LCAxNzogJFYzLCAxODogJFY0LCAyMDogJFY1LCAyMjogJFY2LCAyMzogJFY3LCAyNDogJFY4LCAyNjogJFYxIH0sIG8oJFYyLCBbMiwgNl0pLCBvKCRWMiwgWzIsIDddKSwgbygkVjIsIFsyLCAxMV0pLCB7IDE5OiBbMSwgMjZdIH0sIHsgMjE6IFsxLCAyN10gfSwgbygkVjIsIFsyLCAxNF0pLCBvKCRWMiwgWzIsIDE1XSksIHsgMjU6IFsxLCAyOF0gfSwgbygkVjIsIFsyLCAxN10pLCB7IDExOiBbMSwgMjldIH0sIHsgMTY6IDMwLCAyODogWzEsIDMxXSB9LCB7IDExOiBbMiwgMjFdIH0sIG8oJFYyLCBbMiwgNV0pLCBvKCRWMiwgWzIsIDEyXSksIG8oJFYyLCBbMiwgMTNdKSwgbygkVjIsIFsyLCAxNl0pLCBvKCRWYSwgWzIsIDldKSwgeyAxNDogMzIsIDI5OiAkVjkgfSwgeyAyOTogWzIsIDIwXSB9LCB7IDExOiBbMSwgMzNdIH0sIG8oJFZhLCBbMiwgMTBdKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgNTogWzIsIDE4XSwgNzogWzIsIDJdLCAyNDogWzIsIDIxXSwgMzE6IFsyLCAyMF0gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjc7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI5O1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAyODtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gMTE7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICByZXR1cm4gMTc7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY190aXRsZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDIwO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgICByZXR1cm4gMjQ7XG4gICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gNjtcbiAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgcmV0dXJuIFwiSU5WQUxJRFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzolKD8hXFx7KVteXFxuXSopL2ksIC9eKD86W15cXH1dJSVbXlxcbl0qKS9pLCAvXig/OltcXG5dKykvaSwgL14oPzpcXHMrKS9pLCAvXig/OiNbXlxcbl0qKS9pLCAvXig/OmpvdXJuZXlcXGIpL2ksIC9eKD86dGl0bGVcXHNbXiNcXG47XSspL2ksIC9eKD86YWNjVGl0bGVcXHMqOlxccyopL2ksIC9eKD86KD8hXFxufHwpKlteXFxuXSopL2ksIC9eKD86YWNjRGVzY3JcXHMqOlxccyopL2ksIC9eKD86KD8hXFxufHwpKlteXFxuXSopL2ksIC9eKD86YWNjRGVzY3JcXHMqXFx7XFxzKikvaSwgL14oPzpbXFx9XSkvaSwgL14oPzpbXlxcfV0qKS9pLCAvXig/OnNlY3Rpb25cXHNbXiM6XFxuO10rKS9pLCAvXig/OlteIzpcXG47XSspL2ksIC9eKD86OlteI1xcbjtdKykvaSwgL14oPzo6KS9pLCAvXig/OiQpL2ksIC9eKD86LikvaV0sXG4gICAgICBjb25kaXRpb25zOiB7IFwib3Blbl9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsxXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzIsIDNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFyZ19kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFszLCA0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCI6IHsgXCJydWxlc1wiOiBbMTcsIDE4XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JcIjogeyBcInJ1bGVzXCI6IFsxNV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX3RpdGxlXCI6IHsgXCJydWxlc1wiOiBbMTNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIklOSVRJQUxcIjogeyBcInJ1bGVzXCI6IFswLCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxNCwgMTYsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjRdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xubGV0IGN1cnJlbnRTZWN0aW9uID0gXCJcIjtcbmNvbnN0IHNlY3Rpb25zID0gW107XG5jb25zdCB0YXNrcyA9IFtdO1xuY29uc3QgcmF3VGFza3MgPSBbXTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBjbGVhciA9IGZ1bmN0aW9uKCkge1xuICBzZWN0aW9ucy5sZW5ndGggPSAwO1xuICB0YXNrcy5sZW5ndGggPSAwO1xuICBjdXJyZW50U2VjdGlvbiA9IFwiXCI7XG4gIHJhd1Rhc2tzLmxlbmd0aCA9IDA7XG4gIGNsZWFyJDEoKTtcbn07XG5jb25zdCBhZGRTZWN0aW9uID0gZnVuY3Rpb24odHh0KSB7XG4gIGN1cnJlbnRTZWN0aW9uID0gdHh0O1xuICBzZWN0aW9ucy5wdXNoKHR4dCk7XG59O1xuY29uc3QgZ2V0U2VjdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHNlY3Rpb25zO1xufTtcbmNvbnN0IGdldFRhc2tzID0gZnVuY3Rpb24oKSB7XG4gIGxldCBhbGxJdGVtc1Byb2Nlc3NlZCA9IGNvbXBpbGVUYXNrcygpO1xuICBjb25zdCBtYXhEZXB0aCA9IDEwMDtcbiAgbGV0IGl0ZXJhdGlvbkNvdW50ID0gMDtcbiAgd2hpbGUgKCFhbGxJdGVtc1Byb2Nlc3NlZCAmJiBpdGVyYXRpb25Db3VudCA8IG1heERlcHRoKSB7XG4gICAgYWxsSXRlbXNQcm9jZXNzZWQgPSBjb21waWxlVGFza3MoKTtcbiAgICBpdGVyYXRpb25Db3VudCsrO1xuICB9XG4gIHRhc2tzLnB1c2goLi4ucmF3VGFza3MpO1xuICByZXR1cm4gdGFza3M7XG59O1xuY29uc3QgdXBkYXRlQWN0b3JzID0gZnVuY3Rpb24oKSB7XG4gIGNvbnN0IHRlbXBBY3RvcnMgPSBbXTtcbiAgdGFza3MuZm9yRWFjaCgodGFzaykgPT4ge1xuICAgIGlmICh0YXNrLnBlb3BsZSkge1xuICAgICAgdGVtcEFjdG9ycy5wdXNoKC4uLnRhc2sucGVvcGxlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCB1bmlxdWUgPSBuZXcgU2V0KHRlbXBBY3RvcnMpO1xuICByZXR1cm4gWy4uLnVuaXF1ZV0uc29ydCgpO1xufTtcbmNvbnN0IGFkZFRhc2sgPSBmdW5jdGlvbihkZXNjciwgdGFza0RhdGEpIHtcbiAgY29uc3QgcGllY2VzID0gdGFza0RhdGEuc3Vic3RyKDEpLnNwbGl0KFwiOlwiKTtcbiAgbGV0IHNjb3JlID0gMDtcbiAgbGV0IHBlZXBzID0gW107XG4gIGlmIChwaWVjZXMubGVuZ3RoID09PSAxKSB7XG4gICAgc2NvcmUgPSBOdW1iZXIocGllY2VzWzBdKTtcbiAgICBwZWVwcyA9IFtdO1xuICB9IGVsc2Uge1xuICAgIHNjb3JlID0gTnVtYmVyKHBpZWNlc1swXSk7XG4gICAgcGVlcHMgPSBwaWVjZXNbMV0uc3BsaXQoXCIsXCIpO1xuICB9XG4gIGNvbnN0IHBlb3BsZUxpc3QgPSBwZWVwcy5tYXAoKHMpID0+IHMudHJpbSgpKTtcbiAgY29uc3QgcmF3VGFzayA9IHtcbiAgICBzZWN0aW9uOiBjdXJyZW50U2VjdGlvbixcbiAgICB0eXBlOiBjdXJyZW50U2VjdGlvbixcbiAgICBwZW9wbGU6IHBlb3BsZUxpc3QsXG4gICAgdGFzazogZGVzY3IsXG4gICAgc2NvcmVcbiAgfTtcbiAgcmF3VGFza3MucHVzaChyYXdUYXNrKTtcbn07XG5jb25zdCBhZGRUYXNrT3JnID0gZnVuY3Rpb24oZGVzY3IpIHtcbiAgY29uc3QgbmV3VGFzayA9IHtcbiAgICBzZWN0aW9uOiBjdXJyZW50U2VjdGlvbixcbiAgICB0eXBlOiBjdXJyZW50U2VjdGlvbixcbiAgICBkZXNjcmlwdGlvbjogZGVzY3IsXG4gICAgdGFzazogZGVzY3IsXG4gICAgY2xhc3NlczogW11cbiAgfTtcbiAgdGFza3MucHVzaChuZXdUYXNrKTtcbn07XG5jb25zdCBjb21waWxlVGFza3MgPSBmdW5jdGlvbigpIHtcbiAgY29uc3QgY29tcGlsZVRhc2sgPSBmdW5jdGlvbihwb3MpIHtcbiAgICByZXR1cm4gcmF3VGFza3NbcG9zXS5wcm9jZXNzZWQ7XG4gIH07XG4gIGxldCBhbGxQcm9jZXNzZWQgPSB0cnVlO1xuICBmb3IgKGNvbnN0IFtpLCByYXdUYXNrXSBvZiByYXdUYXNrcy5lbnRyaWVzKCkpIHtcbiAgICBjb21waWxlVGFzayhpKTtcbiAgICBhbGxQcm9jZXNzZWQgPSBhbGxQcm9jZXNzZWQgJiYgcmF3VGFzay5wcm9jZXNzZWQ7XG4gIH1cbiAgcmV0dXJuIGFsbFByb2Nlc3NlZDtcbn07XG5jb25zdCBnZXRBY3RvcnMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHVwZGF0ZUFjdG9ycygpO1xufTtcbmNvbnN0IGRiID0ge1xuICBwYXJzZURpcmVjdGl2ZSxcbiAgZ2V0Q29uZmlnOiAoKSA9PiBnZXRDb25maWcoKS5qb3VybmV5LFxuICBjbGVhcixcbiAgc2V0RGlhZ3JhbVRpdGxlLFxuICBnZXREaWFncmFtVGl0bGUsXG4gIHNldEFjY1RpdGxlLFxuICBnZXRBY2NUaXRsZSxcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBhZGRTZWN0aW9uLFxuICBnZXRTZWN0aW9ucyxcbiAgZ2V0VGFza3MsXG4gIGFkZFRhc2ssXG4gIGFkZFRhc2tPcmcsXG4gIGdldEFjdG9yc1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgLmxhYmVsIHtcbiAgICBmb250LWZhbWlseTogJ3RyZWJ1Y2hldCBtcycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZXJtYWlkLWZvbnQtZmFtaWx5KTtcbiAgICBjb2xvcjogJHtvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cbiAgLm1vdXRoIHtcbiAgICBzdHJva2U6ICM2NjY7XG4gIH1cblxuICBsaW5lIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy50ZXh0Q29sb3J9XG4gIH1cblxuICAubGVnZW5kIHtcbiAgICBmaWxsOiAke29wdGlvbnMudGV4dENvbG9yfTtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0IHtcbiAgICBmaWxsOiAjMzMzO1xuICB9XG4gIC5sYWJlbCB7XG4gICAgY29sb3I6ICR7b3B0aW9ucy50ZXh0Q29sb3J9XG4gIH1cblxuICAuZmFjZSB7XG4gICAgJHtvcHRpb25zLmZhY2VDb2xvciA/IGBmaWxsOiAke29wdGlvbnMuZmFjZUNvbG9yfWAgOiBcImZpbGw6ICNGRkY4RENcIn07XG4gICAgc3Ryb2tlOiAjOTk5O1xuICB9XG5cbiAgLm5vZGUgcmVjdCxcbiAgLm5vZGUgY2lyY2xlLFxuICAubm9kZSBlbGxpcHNlLFxuICAubm9kZSBwb2x5Z29uLFxuICAubm9kZSBwYXRoIHtcbiAgICBmaWxsOiAke29wdGlvbnMubWFpbkJrZ307XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIH1cblxuICAubm9kZSAubGFiZWwge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAubm9kZS5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5hcnJvd2hlYWRQYXRoIHtcbiAgICBmaWxsOiAke29wdGlvbnMuYXJyb3doZWFkQ29sb3J9O1xuICB9XG5cbiAgLmVkZ2VQYXRoIC5wYXRoIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogMS41cHg7XG4gIH1cblxuICAuZmxvd2NoYXJ0LWxpbmsge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn07XG4gICAgZmlsbDogbm9uZTtcbiAgfVxuXG4gIC5lZGdlTGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICByZWN0IHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLmNsdXN0ZXIgcmVjdCB7XG4gIH1cblxuICAuY2x1c3RlciB0ZXh0IHtcbiAgICBmaWxsOiAke29wdGlvbnMudGl0bGVDb2xvcn07XG4gIH1cblxuICBkaXYubWVybWFpZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6ICR7b3B0aW9ucy50ZXJ0aWFyeUNvbG9yfTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke29wdGlvbnMuYm9yZGVyMn07XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxuXG4gIC50YXNrLXR5cGUtMCwgLnNlY3Rpb24tdHlwZS0wICB7XG4gICAgJHtvcHRpb25zLmZpbGxUeXBlMCA/IGBmaWxsOiAke29wdGlvbnMuZmlsbFR5cGUwfWAgOiBcIlwifTtcbiAgfVxuICAudGFzay10eXBlLTEsIC5zZWN0aW9uLXR5cGUtMSAge1xuICAgICR7b3B0aW9ucy5maWxsVHlwZTAgPyBgZmlsbDogJHtvcHRpb25zLmZpbGxUeXBlMX1gIDogXCJcIn07XG4gIH1cbiAgLnRhc2stdHlwZS0yLCAuc2VjdGlvbi10eXBlLTIgIHtcbiAgICAke29wdGlvbnMuZmlsbFR5cGUwID8gYGZpbGw6ICR7b3B0aW9ucy5maWxsVHlwZTJ9YCA6IFwiXCJ9O1xuICB9XG4gIC50YXNrLXR5cGUtMywgLnNlY3Rpb24tdHlwZS0zICB7XG4gICAgJHtvcHRpb25zLmZpbGxUeXBlMCA/IGBmaWxsOiAke29wdGlvbnMuZmlsbFR5cGUzfWAgOiBcIlwifTtcbiAgfVxuICAudGFzay10eXBlLTQsIC5zZWN0aW9uLXR5cGUtNCAge1xuICAgICR7b3B0aW9ucy5maWxsVHlwZTAgPyBgZmlsbDogJHtvcHRpb25zLmZpbGxUeXBlNH1gIDogXCJcIn07XG4gIH1cbiAgLnRhc2stdHlwZS01LCAuc2VjdGlvbi10eXBlLTUgIHtcbiAgICAke29wdGlvbnMuZmlsbFR5cGUwID8gYGZpbGw6ICR7b3B0aW9ucy5maWxsVHlwZTV9YCA6IFwiXCJ9O1xuICB9XG4gIC50YXNrLXR5cGUtNiwgLnNlY3Rpb24tdHlwZS02ICB7XG4gICAgJHtvcHRpb25zLmZpbGxUeXBlMCA/IGBmaWxsOiAke29wdGlvbnMuZmlsbFR5cGU2fWAgOiBcIlwifTtcbiAgfVxuICAudGFzay10eXBlLTcsIC5zZWN0aW9uLXR5cGUtNyAge1xuICAgICR7b3B0aW9ucy5maWxsVHlwZTAgPyBgZmlsbDogJHtvcHRpb25zLmZpbGxUeXBlN31gIDogXCJcIn07XG4gIH1cblxuICAuYWN0b3ItMCB7XG4gICAgJHtvcHRpb25zLmFjdG9yMCA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3IwfWAgOiBcIlwifTtcbiAgfVxuICAuYWN0b3ItMSB7XG4gICAgJHtvcHRpb25zLmFjdG9yMSA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3IxfWAgOiBcIlwifTtcbiAgfVxuICAuYWN0b3ItMiB7XG4gICAgJHtvcHRpb25zLmFjdG9yMiA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3IyfWAgOiBcIlwifTtcbiAgfVxuICAuYWN0b3ItMyB7XG4gICAgJHtvcHRpb25zLmFjdG9yMyA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3IzfWAgOiBcIlwifTtcbiAgfVxuICAuYWN0b3ItNCB7XG4gICAgJHtvcHRpb25zLmFjdG9yNCA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3I0fWAgOiBcIlwifTtcbiAgfVxuICAuYWN0b3ItNSB7XG4gICAgJHtvcHRpb25zLmFjdG9yNSA/IGBmaWxsOiAke29wdGlvbnMuYWN0b3I1fWAgOiBcIlwifTtcbiAgfVxuYDtcbmNvbnN0IHN0eWxlcyA9IGdldFN0eWxlcztcbmNvbnN0IGRyYXdSZWN0ID0gZnVuY3Rpb24oZWxlbSwgcmVjdERhdGEpIHtcbiAgcmV0dXJuIGRyYXdSZWN0JDEoZWxlbSwgcmVjdERhdGEpO1xufTtcbmNvbnN0IGRyYXdGYWNlID0gZnVuY3Rpb24oZWxlbWVudCwgZmFjZURhdGEpIHtcbiAgY29uc3QgcmFkaXVzID0gMTU7XG4gIGNvbnN0IGNpcmNsZUVsZW1lbnQgPSBlbGVtZW50LmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiY3hcIiwgZmFjZURhdGEuY3gpLmF0dHIoXCJjeVwiLCBmYWNlRGF0YS5jeSkuYXR0cihcImNsYXNzXCIsIFwiZmFjZVwiKS5hdHRyKFwiclwiLCByYWRpdXMpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMikuYXR0cihcIm92ZXJmbG93XCIsIFwidmlzaWJsZVwiKTtcbiAgY29uc3QgZmFjZSA9IGVsZW1lbnQuYXBwZW5kKFwiZ1wiKTtcbiAgZmFjZS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIGZhY2VEYXRhLmN4IC0gcmFkaXVzIC8gMykuYXR0cihcImN5XCIsIGZhY2VEYXRhLmN5IC0gcmFkaXVzIC8gMykuYXR0cihcInJcIiwgMS41KS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDIpLmF0dHIoXCJmaWxsXCIsIFwiIzY2NlwiKS5hdHRyKFwic3Ryb2tlXCIsIFwiIzY2NlwiKTtcbiAgZmFjZS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIGZhY2VEYXRhLmN4ICsgcmFkaXVzIC8gMykuYXR0cihcImN5XCIsIGZhY2VEYXRhLmN5IC0gcmFkaXVzIC8gMykuYXR0cihcInJcIiwgMS41KS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDIpLmF0dHIoXCJmaWxsXCIsIFwiIzY2NlwiKS5hdHRyKFwic3Ryb2tlXCIsIFwiIzY2NlwiKTtcbiAgZnVuY3Rpb24gc21pbGUoZmFjZTIpIHtcbiAgICBjb25zdCBhcmMkMSA9IGFyYygpLnN0YXJ0QW5nbGUoTWF0aC5QSSAvIDIpLmVuZEFuZ2xlKDMgKiAoTWF0aC5QSSAvIDIpKS5pbm5lclJhZGl1cyhyYWRpdXMgLyAyKS5vdXRlclJhZGl1cyhyYWRpdXMgLyAyLjIpO1xuICAgIGZhY2UyLmFwcGVuZChcInBhdGhcIikuYXR0cihcImNsYXNzXCIsIFwibW91dGhcIikuYXR0cihcImRcIiwgYXJjJDEpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBmYWNlRGF0YS5jeCArIFwiLFwiICsgKGZhY2VEYXRhLmN5ICsgMikgKyBcIilcIik7XG4gIH1cbiAgZnVuY3Rpb24gc2FkKGZhY2UyKSB7XG4gICAgY29uc3QgYXJjJDEgPSBhcmMoKS5zdGFydEFuZ2xlKDMgKiBNYXRoLlBJIC8gMikuZW5kQW5nbGUoNSAqIChNYXRoLlBJIC8gMikpLmlubmVyUmFkaXVzKHJhZGl1cyAvIDIpLm91dGVyUmFkaXVzKHJhZGl1cyAvIDIuMik7XG4gICAgZmFjZTIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtb3V0aFwiKS5hdHRyKFwiZFwiLCBhcmMkMSkuYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIGZhY2VEYXRhLmN4ICsgXCIsXCIgKyAoZmFjZURhdGEuY3kgKyA3KSArIFwiKVwiKTtcbiAgfVxuICBmdW5jdGlvbiBhbWJpdmFsZW50KGZhY2UyKSB7XG4gICAgZmFjZTIuYXBwZW5kKFwibGluZVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtb3V0aFwiKS5hdHRyKFwic3Ryb2tlXCIsIDIpLmF0dHIoXCJ4MVwiLCBmYWNlRGF0YS5jeCAtIDUpLmF0dHIoXCJ5MVwiLCBmYWNlRGF0YS5jeSArIDcpLmF0dHIoXCJ4MlwiLCBmYWNlRGF0YS5jeCArIDUpLmF0dHIoXCJ5MlwiLCBmYWNlRGF0YS5jeSArIDcpLmF0dHIoXCJjbGFzc1wiLCBcIm1vdXRoXCIpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIxcHhcIikuYXR0cihcInN0cm9rZVwiLCBcIiM2NjZcIik7XG4gIH1cbiAgaWYgKGZhY2VEYXRhLnNjb3JlID4gMykge1xuICAgIHNtaWxlKGZhY2UpO1xuICB9IGVsc2UgaWYgKGZhY2VEYXRhLnNjb3JlIDwgMykge1xuICAgIHNhZChmYWNlKTtcbiAgfSBlbHNlIHtcbiAgICBhbWJpdmFsZW50KGZhY2UpO1xuICB9XG4gIHJldHVybiBjaXJjbGVFbGVtZW50O1xufTtcbmNvbnN0IGRyYXdDaXJjbGUgPSBmdW5jdGlvbihlbGVtZW50LCBjaXJjbGVEYXRhKSB7XG4gIGNvbnN0IGNpcmNsZUVsZW1lbnQgPSBlbGVtZW50LmFwcGVuZChcImNpcmNsZVwiKTtcbiAgY2lyY2xlRWxlbWVudC5hdHRyKFwiY3hcIiwgY2lyY2xlRGF0YS5jeCk7XG4gIGNpcmNsZUVsZW1lbnQuYXR0cihcImN5XCIsIGNpcmNsZURhdGEuY3kpO1xuICBjaXJjbGVFbGVtZW50LmF0dHIoXCJjbGFzc1wiLCBcImFjdG9yLVwiICsgY2lyY2xlRGF0YS5wb3MpO1xuICBjaXJjbGVFbGVtZW50LmF0dHIoXCJmaWxsXCIsIGNpcmNsZURhdGEuZmlsbCk7XG4gIGNpcmNsZUVsZW1lbnQuYXR0cihcInN0cm9rZVwiLCBjaXJjbGVEYXRhLnN0cm9rZSk7XG4gIGNpcmNsZUVsZW1lbnQuYXR0cihcInJcIiwgY2lyY2xlRGF0YS5yKTtcbiAgaWYgKGNpcmNsZUVsZW1lbnQuY2xhc3MgIT09IHZvaWQgMCkge1xuICAgIGNpcmNsZUVsZW1lbnQuYXR0cihcImNsYXNzXCIsIGNpcmNsZUVsZW1lbnQuY2xhc3MpO1xuICB9XG4gIGlmIChjaXJjbGVEYXRhLnRpdGxlICE9PSB2b2lkIDApIHtcbiAgICBjaXJjbGVFbGVtZW50LmFwcGVuZChcInRpdGxlXCIpLnRleHQoY2lyY2xlRGF0YS50aXRsZSk7XG4gIH1cbiAgcmV0dXJuIGNpcmNsZUVsZW1lbnQ7XG59O1xuY29uc3QgZHJhd1RleHQgPSBmdW5jdGlvbihlbGVtLCB0ZXh0RGF0YSkge1xuICByZXR1cm4gZHJhd1RleHQkMShlbGVtLCB0ZXh0RGF0YSk7XG59O1xuY29uc3QgZHJhd0xhYmVsID0gZnVuY3Rpb24oZWxlbSwgdHh0T2JqZWN0KSB7XG4gIGZ1bmN0aW9uIGdlblBvaW50cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjdXQpIHtcbiAgICByZXR1cm4geCArIFwiLFwiICsgeSArIFwiIFwiICsgKHggKyB3aWR0aCkgKyBcIixcIiArIHkgKyBcIiBcIiArICh4ICsgd2lkdGgpICsgXCIsXCIgKyAoeSArIGhlaWdodCAtIGN1dCkgKyBcIiBcIiArICh4ICsgd2lkdGggLSBjdXQgKiAxLjIpICsgXCIsXCIgKyAoeSArIGhlaWdodCkgKyBcIiBcIiArIHggKyBcIixcIiArICh5ICsgaGVpZ2h0KTtcbiAgfVxuICBjb25zdCBwb2x5Z29uID0gZWxlbS5hcHBlbmQoXCJwb2x5Z29uXCIpO1xuICBwb2x5Z29uLmF0dHIoXCJwb2ludHNcIiwgZ2VuUG9pbnRzKHR4dE9iamVjdC54LCB0eHRPYmplY3QueSwgNTAsIDIwLCA3KSk7XG4gIHBvbHlnb24uYXR0cihcImNsYXNzXCIsIFwibGFiZWxCb3hcIik7XG4gIHR4dE9iamVjdC55ID0gdHh0T2JqZWN0LnkgKyB0eHRPYmplY3QubGFiZWxNYXJnaW47XG4gIHR4dE9iamVjdC54ID0gdHh0T2JqZWN0LnggKyAwLjUgKiB0eHRPYmplY3QubGFiZWxNYXJnaW47XG4gIGRyYXdUZXh0KGVsZW0sIHR4dE9iamVjdCk7XG59O1xuY29uc3QgZHJhd1NlY3Rpb24gPSBmdW5jdGlvbihlbGVtLCBzZWN0aW9uLCBjb25mMikge1xuICBjb25zdCBnID0gZWxlbS5hcHBlbmQoXCJnXCIpO1xuICBjb25zdCByZWN0ID0gZ2V0Tm90ZVJlY3QoKTtcbiAgcmVjdC54ID0gc2VjdGlvbi54O1xuICByZWN0LnkgPSBzZWN0aW9uLnk7XG4gIHJlY3QuZmlsbCA9IHNlY3Rpb24uZmlsbDtcbiAgcmVjdC53aWR0aCA9IGNvbmYyLndpZHRoICogc2VjdGlvbi50YXNrQ291bnQgKyAvLyB3aWR0aCBvZiB0aGUgdGFza3NcbiAgY29uZjIuZGlhZ3JhbU1hcmdpblggKiAoc2VjdGlvbi50YXNrQ291bnQgLSAxKTtcbiAgcmVjdC5oZWlnaHQgPSBjb25mMi5oZWlnaHQ7XG4gIHJlY3QuY2xhc3MgPSBcImpvdXJuZXktc2VjdGlvbiBzZWN0aW9uLXR5cGUtXCIgKyBzZWN0aW9uLm51bTtcbiAgcmVjdC5yeCA9IDM7XG4gIHJlY3QucnkgPSAzO1xuICBkcmF3UmVjdChnLCByZWN0KTtcbiAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgc2VjdGlvbi50ZXh0LFxuICAgIGcsXG4gICAgcmVjdC54LFxuICAgIHJlY3QueSxcbiAgICByZWN0LndpZHRoLFxuICAgIHJlY3QuaGVpZ2h0LFxuICAgIHsgY2xhc3M6IFwiam91cm5leS1zZWN0aW9uIHNlY3Rpb24tdHlwZS1cIiArIHNlY3Rpb24ubnVtIH0sXG4gICAgY29uZjIsXG4gICAgc2VjdGlvbi5jb2xvdXJcbiAgKTtcbn07XG5sZXQgdGFza0NvdW50ID0gLTE7XG5jb25zdCBkcmF3VGFzayA9IGZ1bmN0aW9uKGVsZW0sIHRhc2ssIGNvbmYyKSB7XG4gIGNvbnN0IGNlbnRlciA9IHRhc2sueCArIGNvbmYyLndpZHRoIC8gMjtcbiAgY29uc3QgZyA9IGVsZW0uYXBwZW5kKFwiZ1wiKTtcbiAgdGFza0NvdW50Kys7XG4gIGNvbnN0IG1heEhlaWdodCA9IDMwMCArIDUgKiAzMDtcbiAgZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJpZFwiLCBcInRhc2tcIiArIHRhc2tDb3VudCkuYXR0cihcIngxXCIsIGNlbnRlcikuYXR0cihcInkxXCIsIHRhc2sueSkuYXR0cihcIngyXCIsIGNlbnRlcikuYXR0cihcInkyXCIsIG1heEhlaWdodCkuYXR0cihcImNsYXNzXCIsIFwidGFzay1saW5lXCIpLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgXCIxcHhcIikuYXR0cihcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCI0IDJcIikuYXR0cihcInN0cm9rZVwiLCBcIiM2NjZcIik7XG4gIGRyYXdGYWNlKGcsIHtcbiAgICBjeDogY2VudGVyLFxuICAgIGN5OiAzMDAgKyAoNSAtIHRhc2suc2NvcmUpICogMzAsXG4gICAgc2NvcmU6IHRhc2suc2NvcmVcbiAgfSk7XG4gIGNvbnN0IHJlY3QgPSBnZXROb3RlUmVjdCgpO1xuICByZWN0LnggPSB0YXNrLng7XG4gIHJlY3QueSA9IHRhc2sueTtcbiAgcmVjdC5maWxsID0gdGFzay5maWxsO1xuICByZWN0LndpZHRoID0gY29uZjIud2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gY29uZjIuaGVpZ2h0O1xuICByZWN0LmNsYXNzID0gXCJ0YXNrIHRhc2stdHlwZS1cIiArIHRhc2subnVtO1xuICByZWN0LnJ4ID0gMztcbiAgcmVjdC5yeSA9IDM7XG4gIGRyYXdSZWN0KGcsIHJlY3QpO1xuICBsZXQgeFBvcyA9IHRhc2sueCArIDE0O1xuICB0YXNrLnBlb3BsZS5mb3JFYWNoKChwZXJzb24pID0+IHtcbiAgICBjb25zdCBjb2xvdXIgPSB0YXNrLmFjdG9yc1twZXJzb25dLmNvbG9yO1xuICAgIGNvbnN0IGNpcmNsZSA9IHtcbiAgICAgIGN4OiB4UG9zLFxuICAgICAgY3k6IHRhc2sueSxcbiAgICAgIHI6IDcsXG4gICAgICBmaWxsOiBjb2xvdXIsXG4gICAgICBzdHJva2U6IFwiIzAwMFwiLFxuICAgICAgdGl0bGU6IHBlcnNvbixcbiAgICAgIHBvczogdGFzay5hY3RvcnNbcGVyc29uXS5wb3NpdGlvblxuICAgIH07XG4gICAgZHJhd0NpcmNsZShnLCBjaXJjbGUpO1xuICAgIHhQb3MgKz0gMTA7XG4gIH0pO1xuICBfZHJhd1RleHRDYW5kaWRhdGVGdW5jKGNvbmYyKShcbiAgICB0YXNrLnRhc2ssXG4gICAgZyxcbiAgICByZWN0LngsXG4gICAgcmVjdC55LFxuICAgIHJlY3Qud2lkdGgsXG4gICAgcmVjdC5oZWlnaHQsXG4gICAgeyBjbGFzczogXCJ0YXNrXCIgfSxcbiAgICBjb25mMixcbiAgICB0YXNrLmNvbG91clxuICApO1xufTtcbmNvbnN0IGRyYXdCYWNrZ3JvdW5kUmVjdCA9IGZ1bmN0aW9uKGVsZW0sIGJvdW5kczIpIHtcbiAgZHJhd0JhY2tncm91bmRSZWN0JDEoZWxlbSwgYm91bmRzMik7XG59O1xuY29uc3QgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBieVRleHQoY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb2xvdXIpIHtcbiAgICBjb25zdCB0ZXh0ID0gZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ4XCIsIHggKyB3aWR0aCAvIDIpLmF0dHIoXCJ5XCIsIHkgKyBoZWlnaHQgLyAyICsgNSkuc3R5bGUoXCJmb250LWNvbG9yXCIsIGNvbG91cikuc3R5bGUoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS50ZXh0KGNvbnRlbnQpO1xuICAgIF9zZXRUZXh0QXR0cnModGV4dCwgdGV4dEF0dHJzKTtcbiAgfVxuICBmdW5jdGlvbiBieVRzcGFuKGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycywgY29uZjIsIGNvbG91cikge1xuICAgIGNvbnN0IHsgdGFza0ZvbnRTaXplLCB0YXNrRm9udEZhbWlseSB9ID0gY29uZjI7XG4gICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KC88YnJcXHMqXFwvPz4vZ2kpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGR5ID0gaSAqIHRhc2tGb250U2l6ZSAtIHRhc2tGb250U2l6ZSAqIChsaW5lcy5sZW5ndGggLSAxKSAvIDI7XG4gICAgICBjb25zdCB0ZXh0ID0gZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ4XCIsIHggKyB3aWR0aCAvIDIpLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJmaWxsXCIsIGNvbG91cikuc3R5bGUoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS5zdHlsZShcImZvbnQtc2l6ZVwiLCB0YXNrRm9udFNpemUpLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgdGFza0ZvbnRGYW1pbHkpO1xuICAgICAgdGV4dC5hcHBlbmQoXCJ0c3BhblwiKS5hdHRyKFwieFwiLCB4ICsgd2lkdGggLyAyKS5hdHRyKFwiZHlcIiwgZHkpLnRleHQobGluZXNbaV0pO1xuICAgICAgdGV4dC5hdHRyKFwieVwiLCB5ICsgaGVpZ2h0IC8gMikuYXR0cihcImRvbWluYW50LWJhc2VsaW5lXCIsIFwiY2VudHJhbFwiKS5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIFwiY2VudHJhbFwiKTtcbiAgICAgIF9zZXRUZXh0QXR0cnModGV4dCwgdGV4dEF0dHJzKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYnlGbyhjb250ZW50LCBnLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0ZXh0QXR0cnMsIGNvbmYyKSB7XG4gICAgY29uc3QgYm9keSA9IGcuYXBwZW5kKFwic3dpdGNoXCIpO1xuICAgIGNvbnN0IGYgPSBib2R5LmFwcGVuZChcImZvcmVpZ25PYmplY3RcIikuYXR0cihcInhcIiwgeCkuYXR0cihcInlcIiwgeSkuYXR0cihcIndpZHRoXCIsIHdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCkuYXR0cihcInBvc2l0aW9uXCIsIFwiZml4ZWRcIik7XG4gICAgY29uc3QgdGV4dCA9IGYuYXBwZW5kKFwieGh0bWw6ZGl2XCIpLnN0eWxlKFwiZGlzcGxheVwiLCBcInRhYmxlXCIpLnN0eWxlKFwiaGVpZ2h0XCIsIFwiMTAwJVwiKS5zdHlsZShcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICB0ZXh0LmFwcGVuZChcImRpdlwiKS5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbFwiKS5zdHlsZShcImRpc3BsYXlcIiwgXCJ0YWJsZS1jZWxsXCIpLnN0eWxlKFwidGV4dC1hbGlnblwiLCBcImNlbnRlclwiKS5zdHlsZShcInZlcnRpY2FsLWFsaWduXCIsIFwibWlkZGxlXCIpLnRleHQoY29udGVudCk7XG4gICAgYnlUc3Bhbihjb250ZW50LCBib2R5LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0ZXh0QXR0cnMsIGNvbmYyKTtcbiAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gIH1cbiAgZnVuY3Rpb24gX3NldFRleHRBdHRycyh0b1RleHQsIGZyb21UZXh0QXR0cnNEaWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbVRleHRBdHRyc0RpY3QpIHtcbiAgICAgIGlmIChrZXkgaW4gZnJvbVRleHRBdHRyc0RpY3QpIHtcbiAgICAgICAgdG9UZXh0LmF0dHIoa2V5LCBmcm9tVGV4dEF0dHJzRGljdFtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbmYyKSB7XG4gICAgcmV0dXJuIGNvbmYyLnRleHRQbGFjZW1lbnQgPT09IFwiZm9cIiA/IGJ5Rm8gOiBjb25mMi50ZXh0UGxhY2VtZW50ID09PSBcIm9sZFwiID8gYnlUZXh0IDogYnlUc3BhbjtcbiAgfTtcbn0oKTtcbmNvbnN0IGluaXRHcmFwaGljcyA9IGZ1bmN0aW9uKGdyYXBoaWNzKSB7XG4gIGdyYXBoaWNzLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImFycm93aGVhZFwiKS5hdHRyKFwicmVmWFwiLCA1KS5hdHRyKFwicmVmWVwiLCAyKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgNikuYXR0cihcIm1hcmtlckhlaWdodFwiLCA0KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAwLDAgViA0IEw2LDIgWlwiKTtcbn07XG5jb25zdCBzdmdEcmF3ID0ge1xuICBkcmF3UmVjdCxcbiAgZHJhd0NpcmNsZSxcbiAgZHJhd1NlY3Rpb24sXG4gIGRyYXdUZXh0LFxuICBkcmF3TGFiZWwsXG4gIGRyYXdUYXNrLFxuICBkcmF3QmFja2dyb3VuZFJlY3QsXG4gIGluaXRHcmFwaGljc1xufTtcbmNvbnN0IHNldENvbmYgPSBmdW5jdGlvbihjbmYpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNuZik7XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBjb25mW2tleV0gPSBjbmZba2V5XTtcbiAgfSk7XG59O1xuY29uc3QgYWN0b3JzID0ge307XG5mdW5jdGlvbiBkcmF3QWN0b3JMZWdlbmQoZGlhZ3JhbTIpIHtcbiAgY29uc3QgY29uZjIgPSBnZXRDb25maWcoKS5qb3VybmV5O1xuICBsZXQgeVBvcyA9IDYwO1xuICBPYmplY3Qua2V5cyhhY3RvcnMpLmZvckVhY2goKHBlcnNvbikgPT4ge1xuICAgIGNvbnN0IGNvbG91ciA9IGFjdG9yc1twZXJzb25dLmNvbG9yO1xuICAgIGNvbnN0IGNpcmNsZURhdGEgPSB7XG4gICAgICBjeDogMjAsXG4gICAgICBjeTogeVBvcyxcbiAgICAgIHI6IDcsXG4gICAgICBmaWxsOiBjb2xvdXIsXG4gICAgICBzdHJva2U6IFwiIzAwMFwiLFxuICAgICAgcG9zOiBhY3RvcnNbcGVyc29uXS5wb3NpdGlvblxuICAgIH07XG4gICAgc3ZnRHJhdy5kcmF3Q2lyY2xlKGRpYWdyYW0yLCBjaXJjbGVEYXRhKTtcbiAgICBjb25zdCBsYWJlbERhdGEgPSB7XG4gICAgICB4OiA0MCxcbiAgICAgIHk6IHlQb3MgKyA3LFxuICAgICAgZmlsbDogXCIjNjY2XCIsXG4gICAgICB0ZXh0OiBwZXJzb24sXG4gICAgICB0ZXh0TWFyZ2luOiBjb25mMi5ib3hUZXh0TWFyZ2luIHwgNVxuICAgIH07XG4gICAgc3ZnRHJhdy5kcmF3VGV4dChkaWFncmFtMiwgbGFiZWxEYXRhKTtcbiAgICB5UG9zICs9IDIwO1xuICB9KTtcbn1cbmNvbnN0IGNvbmYgPSBnZXRDb25maWcoKS5qb3VybmV5O1xuY29uc3QgTEVGVF9NQVJHSU4gPSBjb25mLmxlZnRNYXJnaW47XG5jb25zdCBkcmF3ID0gZnVuY3Rpb24odGV4dCwgaWQsIHZlcnNpb24sIGRpYWdPYmopIHtcbiAgY29uc3QgY29uZjIgPSBnZXRDb25maWcoKS5qb3VybmV5O1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIGRpYWdPYmoucGFyc2VyLnBhcnNlKHRleHQgKyBcIlxcblwiKTtcbiAgY29uc3Qgc2VjdXJpdHlMZXZlbCA9IGdldENvbmZpZygpLnNlY3VyaXR5TGV2ZWw7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGJvdW5kcy5pbml0KCk7XG4gIGNvbnN0IGRpYWdyYW0yID0gcm9vdC5zZWxlY3QoXCIjXCIgKyBpZCk7XG4gIHN2Z0RyYXcuaW5pdEdyYXBoaWNzKGRpYWdyYW0yKTtcbiAgY29uc3QgdGFza3MyID0gZGlhZ09iai5kYi5nZXRUYXNrcygpO1xuICBjb25zdCB0aXRsZSA9IGRpYWdPYmouZGIuZ2V0RGlhZ3JhbVRpdGxlKCk7XG4gIGNvbnN0IGFjdG9yTmFtZXMgPSBkaWFnT2JqLmRiLmdldEFjdG9ycygpO1xuICBmb3IgKGNvbnN0IG1lbWJlciBpbiBhY3RvcnMpIHtcbiAgICBkZWxldGUgYWN0b3JzW21lbWJlcl07XG4gIH1cbiAgbGV0IGFjdG9yUG9zID0gMDtcbiAgYWN0b3JOYW1lcy5mb3JFYWNoKChhY3Rvck5hbWUpID0+IHtcbiAgICBhY3RvcnNbYWN0b3JOYW1lXSA9IHtcbiAgICAgIGNvbG9yOiBjb25mMi5hY3RvckNvbG91cnNbYWN0b3JQb3MgJSBjb25mMi5hY3RvckNvbG91cnMubGVuZ3RoXSxcbiAgICAgIHBvc2l0aW9uOiBhY3RvclBvc1xuICAgIH07XG4gICAgYWN0b3JQb3MrKztcbiAgfSk7XG4gIGRyYXdBY3RvckxlZ2VuZChkaWFncmFtMik7XG4gIGJvdW5kcy5pbnNlcnQoMCwgMCwgTEVGVF9NQVJHSU4sIE9iamVjdC5rZXlzKGFjdG9ycykubGVuZ3RoICogNTApO1xuICBkcmF3VGFza3MoZGlhZ3JhbTIsIHRhc2tzMiwgMCk7XG4gIGNvbnN0IGJveCA9IGJvdW5kcy5nZXRCb3VuZHMoKTtcbiAgaWYgKHRpdGxlKSB7XG4gICAgZGlhZ3JhbTIuYXBwZW5kKFwidGV4dFwiKS50ZXh0KHRpdGxlKS5hdHRyKFwieFwiLCBMRUZUX01BUkdJTikuYXR0cihcImZvbnQtc2l6ZVwiLCBcIjRleFwiKS5hdHRyKFwiZm9udC13ZWlnaHRcIiwgXCJib2xkXCIpLmF0dHIoXCJ5XCIsIDI1KTtcbiAgfVxuICBjb25zdCBoZWlnaHQgPSBib3guc3RvcHkgLSBib3guc3RhcnR5ICsgMiAqIGNvbmYyLmRpYWdyYW1NYXJnaW5ZO1xuICBjb25zdCB3aWR0aCA9IExFRlRfTUFSR0lOICsgYm94LnN0b3B4ICsgMiAqIGNvbmYyLmRpYWdyYW1NYXJnaW5YO1xuICBjb25maWd1cmVTdmdTaXplKGRpYWdyYW0yLCBoZWlnaHQsIHdpZHRoLCBjb25mMi51c2VNYXhXaWR0aCk7XG4gIGRpYWdyYW0yLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIExFRlRfTUFSR0lOKS5hdHRyKFwieTFcIiwgY29uZjIuaGVpZ2h0ICogNCkuYXR0cihcIngyXCIsIHdpZHRoIC0gTEVGVF9NQVJHSU4gLSA0KS5hdHRyKFwieTJcIiwgY29uZjIuaGVpZ2h0ICogNCkuYXR0cihcInN0cm9rZS13aWR0aFwiLCA0KS5hdHRyKFwic3Ryb2tlXCIsIFwiYmxhY2tcIikuYXR0cihcIm1hcmtlci1lbmRcIiwgXCJ1cmwoI2Fycm93aGVhZClcIik7XG4gIGNvbnN0IGV4dHJhVmVydEZvclRpdGxlID0gdGl0bGUgPyA3MCA6IDA7XG4gIGRpYWdyYW0yLmF0dHIoXCJ2aWV3Qm94XCIsIGAke2JveC5zdGFydHh9IC0yNSAke3dpZHRofSAke2hlaWdodCArIGV4dHJhVmVydEZvclRpdGxlfWApO1xuICBkaWFncmFtMi5hdHRyKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcInhNaW5ZTWluIG1lZXRcIik7XG4gIGRpYWdyYW0yLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0ICsgZXh0cmFWZXJ0Rm9yVGl0bGUgKyAyNSk7XG59O1xuY29uc3QgYm91bmRzID0ge1xuICBkYXRhOiB7XG4gICAgc3RhcnR4OiB2b2lkIDAsXG4gICAgc3RvcHg6IHZvaWQgMCxcbiAgICBzdGFydHk6IHZvaWQgMCxcbiAgICBzdG9weTogdm9pZCAwXG4gIH0sXG4gIHZlcnRpY2FsUG9zOiAwLFxuICBzZXF1ZW5jZUl0ZW1zOiBbXSxcbiAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXF1ZW5jZUl0ZW1zID0gW107XG4gICAgdGhpcy5kYXRhID0ge1xuICAgICAgc3RhcnR4OiB2b2lkIDAsXG4gICAgICBzdG9weDogdm9pZCAwLFxuICAgICAgc3RhcnR5OiB2b2lkIDAsXG4gICAgICBzdG9weTogdm9pZCAwXG4gICAgfTtcbiAgICB0aGlzLnZlcnRpY2FsUG9zID0gMDtcbiAgfSxcbiAgdXBkYXRlVmFsOiBmdW5jdGlvbihvYmosIGtleSwgdmFsLCBmdW4pIHtcbiAgICBpZiAob2JqW2tleV0gPT09IHZvaWQgMCkge1xuICAgICAgb2JqW2tleV0gPSB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrZXldID0gZnVuKHZhbCwgb2JqW2tleV0pO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlQm91bmRzOiBmdW5jdGlvbihzdGFydHgsIHN0YXJ0eSwgc3RvcHgsIHN0b3B5KSB7XG4gICAgY29uc3QgY29uZjIgPSBnZXRDb25maWcoKS5qb3VybmV5O1xuICAgIGNvbnN0IF9zZWxmID0gdGhpcztcbiAgICBsZXQgY250ID0gMDtcbiAgICBmdW5jdGlvbiB1cGRhdGVGbih0eXBlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlSXRlbUJvdW5kcyhpdGVtKSB7XG4gICAgICAgIGNudCsrO1xuICAgICAgICBjb25zdCBuID0gX3NlbGYuc2VxdWVuY2VJdGVtcy5sZW5ndGggLSBjbnQgKyAxO1xuICAgICAgICBfc2VsZi51cGRhdGVWYWwoaXRlbSwgXCJzdGFydHlcIiwgc3RhcnR5IC0gbiAqIGNvbmYyLmJveE1hcmdpbiwgTWF0aC5taW4pO1xuICAgICAgICBfc2VsZi51cGRhdGVWYWwoaXRlbSwgXCJzdG9weVwiLCBzdG9weSArIG4gKiBjb25mMi5ib3hNYXJnaW4sIE1hdGgubWF4KTtcbiAgICAgICAgX3NlbGYudXBkYXRlVmFsKGJvdW5kcy5kYXRhLCBcInN0YXJ0eFwiLCBzdGFydHggLSBuICogY29uZjIuYm94TWFyZ2luLCBNYXRoLm1pbik7XG4gICAgICAgIF9zZWxmLnVwZGF0ZVZhbChib3VuZHMuZGF0YSwgXCJzdG9weFwiLCBzdG9weCArIG4gKiBjb25mMi5ib3hNYXJnaW4sIE1hdGgubWF4KTtcbiAgICAgICAgaWYgKCEodHlwZSA9PT0gXCJhY3RpdmF0aW9uXCIpKSB7XG4gICAgICAgICAgX3NlbGYudXBkYXRlVmFsKGl0ZW0sIFwic3RhcnR4XCIsIHN0YXJ0eCAtIG4gKiBjb25mMi5ib3hNYXJnaW4sIE1hdGgubWluKTtcbiAgICAgICAgICBfc2VsZi51cGRhdGVWYWwoaXRlbSwgXCJzdG9weFwiLCBzdG9weCArIG4gKiBjb25mMi5ib3hNYXJnaW4sIE1hdGgubWF4KTtcbiAgICAgICAgICBfc2VsZi51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RhcnR5XCIsIHN0YXJ0eSAtIG4gKiBjb25mMi5ib3hNYXJnaW4sIE1hdGgubWluKTtcbiAgICAgICAgICBfc2VsZi51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RvcHlcIiwgc3RvcHkgKyBuICogY29uZjIuYm94TWFyZ2luLCBNYXRoLm1heCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuc2VxdWVuY2VJdGVtcy5mb3JFYWNoKHVwZGF0ZUZuKCkpO1xuICB9LFxuICBpbnNlcnQ6IGZ1bmN0aW9uKHN0YXJ0eCwgc3RhcnR5LCBzdG9weCwgc3RvcHkpIHtcbiAgICBjb25zdCBfc3RhcnR4ID0gTWF0aC5taW4oc3RhcnR4LCBzdG9weCk7XG4gICAgY29uc3QgX3N0b3B4ID0gTWF0aC5tYXgoc3RhcnR4LCBzdG9weCk7XG4gICAgY29uc3QgX3N0YXJ0eSA9IE1hdGgubWluKHN0YXJ0eSwgc3RvcHkpO1xuICAgIGNvbnN0IF9zdG9weSA9IE1hdGgubWF4KHN0YXJ0eSwgc3RvcHkpO1xuICAgIHRoaXMudXBkYXRlVmFsKGJvdW5kcy5kYXRhLCBcInN0YXJ0eFwiLCBfc3RhcnR4LCBNYXRoLm1pbik7XG4gICAgdGhpcy51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RhcnR5XCIsIF9zdGFydHksIE1hdGgubWluKTtcbiAgICB0aGlzLnVwZGF0ZVZhbChib3VuZHMuZGF0YSwgXCJzdG9weFwiLCBfc3RvcHgsIE1hdGgubWF4KTtcbiAgICB0aGlzLnVwZGF0ZVZhbChib3VuZHMuZGF0YSwgXCJzdG9weVwiLCBfc3RvcHksIE1hdGgubWF4KTtcbiAgICB0aGlzLnVwZGF0ZUJvdW5kcyhfc3RhcnR4LCBfc3RhcnR5LCBfc3RvcHgsIF9zdG9weSk7XG4gIH0sXG4gIGJ1bXBWZXJ0aWNhbFBvczogZnVuY3Rpb24oYnVtcCkge1xuICAgIHRoaXMudmVydGljYWxQb3MgPSB0aGlzLnZlcnRpY2FsUG9zICsgYnVtcDtcbiAgICB0aGlzLmRhdGEuc3RvcHkgPSB0aGlzLnZlcnRpY2FsUG9zO1xuICB9LFxuICBnZXRWZXJ0aWNhbFBvczogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWxQb3M7XG4gIH0sXG4gIGdldEJvdW5kczogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufTtcbmNvbnN0IGZpbGxzID0gY29uZi5zZWN0aW9uRmlsbHM7XG5jb25zdCB0ZXh0Q29sb3VycyA9IGNvbmYuc2VjdGlvbkNvbG91cnM7XG5jb25zdCBkcmF3VGFza3MgPSBmdW5jdGlvbihkaWFncmFtMiwgdGFza3MyLCB2ZXJ0aWNhbFBvcykge1xuICBjb25zdCBjb25mMiA9IGdldENvbmZpZygpLmpvdXJuZXk7XG4gIGxldCBsYXN0U2VjdGlvbiA9IFwiXCI7XG4gIGNvbnN0IHNlY3Rpb25WSGVpZ2h0ID0gY29uZjIuaGVpZ2h0ICogMiArIGNvbmYyLmRpYWdyYW1NYXJnaW5ZO1xuICBjb25zdCB0YXNrUG9zID0gdmVydGljYWxQb3MgKyBzZWN0aW9uVkhlaWdodDtcbiAgbGV0IHNlY3Rpb25OdW1iZXIgPSAwO1xuICBsZXQgZmlsbCA9IFwiI0NDQ1wiO1xuICBsZXQgY29sb3VyID0gXCJibGFja1wiO1xuICBsZXQgbnVtID0gMDtcbiAgZm9yIChjb25zdCBbaSwgdGFza10gb2YgdGFza3MyLmVudHJpZXMoKSkge1xuICAgIGlmIChsYXN0U2VjdGlvbiAhPT0gdGFzay5zZWN0aW9uKSB7XG4gICAgICBmaWxsID0gZmlsbHNbc2VjdGlvbk51bWJlciAlIGZpbGxzLmxlbmd0aF07XG4gICAgICBudW0gPSBzZWN0aW9uTnVtYmVyICUgZmlsbHMubGVuZ3RoO1xuICAgICAgY29sb3VyID0gdGV4dENvbG91cnNbc2VjdGlvbk51bWJlciAlIHRleHRDb2xvdXJzLmxlbmd0aF07XG4gICAgICBsZXQgdGFza0luU2VjdGlvbkNvdW50ID0gMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uMiA9IHRhc2suc2VjdGlvbjtcbiAgICAgIGZvciAobGV0IHRhc2tJbmRleCA9IGk7IHRhc2tJbmRleCA8IHRhc2tzMi5sZW5ndGg7IHRhc2tJbmRleCsrKSB7XG4gICAgICAgIGlmICh0YXNrczJbdGFza0luZGV4XS5zZWN0aW9uID09IGN1cnJlbnRTZWN0aW9uMikge1xuICAgICAgICAgIHRhc2tJblNlY3Rpb25Db3VudCA9IHRhc2tJblNlY3Rpb25Db3VudCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHNlY3Rpb24gPSB7XG4gICAgICAgIHg6IGkgKiBjb25mMi50YXNrTWFyZ2luICsgaSAqIGNvbmYyLndpZHRoICsgTEVGVF9NQVJHSU4sXG4gICAgICAgIHk6IDUwLFxuICAgICAgICB0ZXh0OiB0YXNrLnNlY3Rpb24sXG4gICAgICAgIGZpbGwsXG4gICAgICAgIG51bSxcbiAgICAgICAgY29sb3VyLFxuICAgICAgICB0YXNrQ291bnQ6IHRhc2tJblNlY3Rpb25Db3VudFxuICAgICAgfTtcbiAgICAgIHN2Z0RyYXcuZHJhd1NlY3Rpb24oZGlhZ3JhbTIsIHNlY3Rpb24sIGNvbmYyKTtcbiAgICAgIGxhc3RTZWN0aW9uID0gdGFzay5zZWN0aW9uO1xuICAgICAgc2VjdGlvbk51bWJlcisrO1xuICAgIH1cbiAgICBjb25zdCB0YXNrQWN0b3JzID0gdGFzay5wZW9wbGUucmVkdWNlKChhY2MsIGFjdG9yTmFtZSkgPT4ge1xuICAgICAgaWYgKGFjdG9yc1thY3Rvck5hbWVdKSB7XG4gICAgICAgIGFjY1thY3Rvck5hbWVdID0gYWN0b3JzW2FjdG9yTmFtZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICB0YXNrLnggPSBpICogY29uZjIudGFza01hcmdpbiArIGkgKiBjb25mMi53aWR0aCArIExFRlRfTUFSR0lOO1xuICAgIHRhc2sueSA9IHRhc2tQb3M7XG4gICAgdGFzay53aWR0aCA9IGNvbmYyLmRpYWdyYW1NYXJnaW5YO1xuICAgIHRhc2suaGVpZ2h0ID0gY29uZjIuZGlhZ3JhbU1hcmdpblk7XG4gICAgdGFzay5jb2xvdXIgPSBjb2xvdXI7XG4gICAgdGFzay5maWxsID0gZmlsbDtcbiAgICB0YXNrLm51bSA9IG51bTtcbiAgICB0YXNrLmFjdG9ycyA9IHRhc2tBY3RvcnM7XG4gICAgc3ZnRHJhdy5kcmF3VGFzayhkaWFncmFtMiwgdGFzaywgY29uZjIpO1xuICAgIGJvdW5kcy5pbnNlcnQodGFzay54LCB0YXNrLnksIHRhc2sueCArIHRhc2sud2lkdGggKyBjb25mMi50YXNrTWFyZ2luLCAzMDAgKyA1ICogMzApO1xuICB9XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIHNldENvbmYsXG4gIGRyYXdcbn07XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXI6IHBhcnNlciQxLFxuICBkYixcbiAgcmVuZGVyZXIsXG4gIHN0eWxlcyxcbiAgaW5pdDogKGNuZikgPT4ge1xuICAgIHJlbmRlcmVyLnNldENvbmYoY25mLmpvdXJuZXkpO1xuICAgIGRiLmNsZWFyKCk7XG4gIH1cbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/journeyDiagram-31be0096.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"A\": () => (/* binding */ setupGraphViewbox),\n/* harmony export */ \"B\": () => (/* binding */ parseFontSize),\n/* harmony export */ \"C\": () => (/* binding */ getThemeVariables$2),\n/* harmony export */ \"D\": () => (/* binding */ defaultConfig$1),\n/* harmony export */ \"E\": () => (/* binding */ addFunction),\n/* harmony export */ \"F\": () => (/* binding */ generateId),\n/* harmony export */ \"G\": () => (/* binding */ defaultConfig),\n/* harmony export */ \"H\": () => (/* binding */ decodeEntities),\n/* harmony export */ \"I\": () => (/* binding */ commonDb$1),\n/* harmony export */ \"J\": () => (/* binding */ parseDirective$1),\n/* harmony export */ \"K\": () => (/* binding */ mermaid),\n/* harmony export */ \"Z\": () => (/* binding */ ZERO_WIDTH_SPACE),\n/* harmony export */ \"a\": () => (/* binding */ getAccDescription),\n/* harmony export */ \"b\": () => (/* binding */ setAccDescription),\n/* harmony export */ \"c\": () => (/* binding */ getConfig$1),\n/* harmony export */ \"d\": () => (/* binding */ sanitizeText$2),\n/* harmony export */ \"e\": () => (/* binding */ common$1),\n/* harmony export */ \"f\": () => (/* binding */ assignWithDepth$1),\n/* harmony export */ \"g\": () => (/* binding */ getAccTitle),\n/* harmony export */ \"h\": () => (/* binding */ calculateTextWidth),\n/* harmony export */ \"i\": () => (/* binding */ configureSvgSize),\n/* harmony export */ \"j\": () => (/* binding */ calculateTextHeight),\n/* harmony export */ \"k\": () => (/* binding */ getStylesFromArray),\n/* harmony export */ \"l\": () => (/* binding */ log$1),\n/* harmony export */ \"m\": () => (/* binding */ mermaidAPI),\n/* harmony export */ \"n\": () => (/* binding */ evaluate),\n/* harmony export */ \"o\": () => (/* binding */ interpolateToCurve),\n/* harmony export */ \"p\": () => (/* binding */ setupGraphViewbox$1),\n/* harmony export */ \"q\": () => (/* binding */ setConfig),\n/* harmony export */ \"r\": () => (/* binding */ setDiagramTitle),\n/* harmony export */ \"s\": () => (/* binding */ setAccTitle),\n/* harmony export */ \"t\": () => (/* binding */ getDiagramTitle),\n/* harmony export */ \"u\": () => (/* binding */ utils),\n/* harmony export */ \"v\": () => (/* binding */ clear),\n/* harmony export */ \"w\": () => (/* binding */ wrapLabel),\n/* harmony export */ \"x\": () => (/* binding */ parseGenericTypes),\n/* harmony export */ \"y\": () => (/* binding */ random),\n/* harmony export */ \"z\": () => (/* binding */ getConfig)\n/* harmony export */ });\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/adjust.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/invert.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/darken.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/lighten.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/is_dark.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/rgba.js\");\n/* harmony import */ var lodash_es_memoize_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash-es/memoize.js */ \"../../../node_modules/lodash-es/memoize.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! stylis */ \"../../../node_modules/stylis/src/Serializer.js\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! stylis */ \"../../../node_modules/stylis/src/Parser.js\");\n/* harmony import */ var lodash_es_isEmpty_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash-es/isEmpty.js */ \"../../../node_modules/lodash-es/isEmpty.js\");\n\n\n\n\n\n\n\n\n\nconst LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nconst log$1 = {\n trace: (..._args) => {\n },\n debug: (..._args) => {\n },\n info: (..._args) => {\n },\n warn: (..._args) => {\n },\n error: (..._args) => {\n },\n fatal: (..._args) => {\n }\n};\nconst setLogLevel$1 = function(level = \"fatal\") {\n let numericLevel = LEVELS.fatal;\n if (typeof level === \"string\") {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level];\n }\n } else if (typeof level === \"number\") {\n numericLevel = level;\n }\n log$1.trace = () => {\n };\n log$1.debug = () => {\n };\n log$1.info = () => {\n };\n log$1.warn = () => {\n };\n log$1.error = () => {\n };\n log$1.fatal = () => {\n };\n if (numericLevel <= LEVELS.fatal) {\n log$1.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n }\n if (numericLevel <= LEVELS.error) {\n log$1.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n }\n if (numericLevel <= LEVELS.warn) {\n log$1.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n }\n if (numericLevel <= LEVELS.info) {\n log$1.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n }\n if (numericLevel <= LEVELS.debug) {\n log$1.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n }\n if (numericLevel <= LEVELS.trace) {\n log$1.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n }\n};\nconst format = (level) => {\n const time = dayjs__WEBPACK_IMPORTED_MODULE_1__().format(\"ss.SSS\");\n return `%c${time} : ${level} : `;\n};\nconst lineBreakRegex = //gi;\nconst getRows = (s) => {\n if (!s) {\n return [\"\"];\n }\n const str2 = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n return str2.split(\"#br#\");\n};\nconst removeScript = (txt) => {\n return dompurify__WEBPACK_IMPORTED_MODULE_4__.sanitize(txt);\n};\nconst sanitizeMore = (text, config2) => {\n var _a;\n if (((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels) !== false) {\n const level = config2.securityLevel;\n if (level === \"antiscript\" || level === \"strict\") {\n text = removeScript(text);\n } else if (level !== \"loose\") {\n text = breakToPlaceholder(text);\n text = text.replace(//g, \">\");\n text = text.replace(/=/g, \"=\");\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\nconst sanitizeText$2 = (text, config2) => {\n if (!text) {\n return text;\n }\n if (config2.dompurifyConfig) {\n text = dompurify__WEBPACK_IMPORTED_MODULE_4__.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n } else {\n text = dompurify__WEBPACK_IMPORTED_MODULE_4__.sanitize(sanitizeMore(text, config2), {\n FORBID_TAGS: [\"style\"]\n }).toString();\n }\n return text;\n};\nconst sanitizeTextOrArray = (a, config2) => {\n if (typeof a === \"string\") {\n return sanitizeText$2(a, config2);\n }\n return a.flat().map((x) => sanitizeText$2(x, config2));\n};\nconst hasBreaks = (text) => {\n return lineBreakRegex.test(text);\n};\nconst splitBreaks = (text) => {\n return text.split(lineBreakRegex);\n};\nconst placeholderToBreak = (s) => {\n return s.replace(/#br#/g, \"
\");\n};\nconst breakToPlaceholder = (s) => {\n return s.replace(lineBreakRegex, \"#br#\");\n};\nconst getUrl = (useAbsolute) => {\n let url = \"\";\n if (useAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replaceAll(/\\(/g, \"\\\\(\");\n url = url.replaceAll(/\\)/g, \"\\\\)\");\n }\n return url;\n};\nconst evaluate = (val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true;\nconst getMax = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\nconst getMin = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\nconst parseGenericTypes = function(text) {\n let cleanedText = text;\n if (text.split(\"~\").length - 1 >= 2) {\n let newCleanedText = cleanedText;\n do {\n cleanedText = newCleanedText;\n newCleanedText = cleanedText.replace(/~([^\\s,:;]+)~/, \"<$1>\");\n } while (newCleanedText != cleanedText);\n return parseGenericTypes(newCleanedText);\n } else {\n return cleanedText;\n }\n};\nconst common$1 = {\n getRows,\n sanitizeText: sanitizeText$2,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin\n};\nconst mkBorder = (col, darkMode) => darkMode ? (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(col, { s: -40, l: 10 }) : (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(col, { s: -40, l: -10 });\nconst oldAttributeBackgroundColorOdd = \"#ffffff\";\nconst oldAttributeBackgroundColorEven = \"#f2f2f2\";\nlet Theme$4 = class Theme {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#fff4dd\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n }\n updateColors() {\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n this.secondaryColor = this.secondaryColor || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 180, l: 5 });\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n this.noteTextColor = this.noteTextColor || \"#333\";\n this.secondaryTextColor = this.secondaryTextColor || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.tertiaryColor);\n this.lineColor = this.lineColor || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.arrowheadColor = this.arrowheadColor || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n this.border2 = this.border2 || this.tertiaryBorderColor;\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || \"grey\";\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.lineColor);\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.primaryColor, 23);\n this.gridColor = this.gridColor || \"lightgrey\";\n this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n this.critBorderColor = this.critBorderColor || \"#ff8888\";\n this.critBkgColor = this.critBkgColor || \"red\";\n this.todayLineColor = this.todayLineColor || \"red\";\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 25);\n }\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n this.classText = this.classText || this.textColor;\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -20 });\n this.pie11 = this.pie11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || (0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.quadrant1Fill) ? (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.quadrant1Fill) : (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git7, 25);\n } else {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git0);\n this.gitInv1 = this.gitInv1 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git1);\n this.gitInv2 = this.gitInv2 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git2);\n this.gitInv3 = this.gitInv3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git3);\n this.gitInv4 = this.gitInv4 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git4);\n this.gitInv5 = this.gitInv5 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git5);\n this.gitInv6 = this.gitInv6 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git6);\n this.gitInv7 = this.gitInv7 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git7);\n this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$4 = (userOverrides) => {\n const theme2 = new Theme$4();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$3 = class Theme2 {\n constructor() {\n this.background = \"#333\";\n this.primaryColor = \"#1f2020\";\n this.secondaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.primaryColor, 16);\n this.tertiaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -160 });\n this.primaryBorderColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.primaryColor);\n this.secondaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.secondaryColor);\n this.tertiaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.tertiaryColor);\n this.lineColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.textColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.mainBkg = \"#1f2020\";\n this.secondBkg = \"calculated\";\n this.mainContrastColor = \"lightgrey\";\n this.darkTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(\"#323D47\"), 10);\n this.lineColor = \"calculated\";\n this.border1 = \"#81B1DB\";\n this.border2 = (0,khroma__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(255, 255, 255, 0.25);\n this.arrowheadColor = \"calculated\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#181818\";\n this.textColor = \"#ccc\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#F9FFFE\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"calculated\";\n this.activationBkgColor = \"calculated\";\n this.sequenceNumberColor = \"black\";\n this.sectionBkgColor = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(\"#EAE8D9\", 30);\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"#EAE8D9\";\n this.excludeBkgColor = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.sectionBkgColor, 10);\n this.taskBorderColor = (0,khroma__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(255, 255, 255, 70);\n this.taskBkgColor = \"calculated\";\n this.taskTextColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = (0,khroma__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(255, 255, 255, 50);\n this.activeTaskBkgColor = \"#81B1DB\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#E83737\";\n this.critBkgColor = \"#E83737\";\n this.taskTextDarkColor = \"calculated\";\n this.todayLineColor = \"#DB5757\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"calculated\";\n this.errorBkgColor = \"#a44141\";\n this.errorTextColor = \"#ddd\";\n }\n updateColors() {\n this.secondBkg = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.labelBackground, 25);\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#555\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#f4f4f4\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 64 });\n this.fillType3 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 64 });\n this.fillType4 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -64 });\n this.fillType5 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: -64 });\n this.fillType6 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 128 });\n this.fillType7 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 128 });\n this.cScale1 = this.cScale1 || \"#0b0000\";\n this.cScale2 = this.cScale2 || \"#4d1037\";\n this.cScale3 = this.cScale3 || \"#3f5258\";\n this.cScale4 = this.cScale4 || \"#4f2f1b\";\n this.cScale5 = this.cScale5 || \"#6e0a0a\";\n this.cScale6 = this.cScale6 || \"#3b0048\";\n this.cScale7 = this.cScale7 || \"#995a01\";\n this.cScale8 = this.cScale8 || \"#154706\";\n this.cScale9 = this.cScale9 || \"#161722\";\n this.cScale10 = this.cScale10 || \"#00296f\";\n this.cScale11 = this.cScale11 || \"#01629c\";\n this.cScale12 = this.cScale12 || \"#010029\";\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 330 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this[\"cScale\" + i], 10);\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || (0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.quadrant1Fill) ? (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.quadrant1Fill) : (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.classText = this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.secondaryColor, 20);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie2 || this.secondaryColor, 20);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie3 || this.tertiaryColor, 20);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -30 }), 20);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60 }), 20);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90 }), 10);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 }), 10);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.pie8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 }), 20);\n this.gitInv0 = this.gitInv0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git0);\n this.gitInv1 = this.gitInv1 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git1);\n this.gitInv2 = this.gitInv2 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git2);\n this.gitInv3 = this.gitInv3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git3);\n this.gitInv4 = this.gitInv4 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git4);\n this.gitInv5 = this.gitInv5 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git5);\n this.gitInv6 = this.gitInv6 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git6);\n this.gitInv7 = this.gitInv7 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.background, 12);\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.background, 2);\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$3 = (userOverrides) => {\n const theme2 = new Theme$3();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$2 = class Theme3 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#ECECFF\";\n this.secondaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.secondaryColor = \"#ffffde\";\n this.tertiaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.primaryColor);\n this.secondaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.secondaryColor);\n this.tertiaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.tertiaryColor);\n this.lineColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.textColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.background = \"white\";\n this.mainBkg = \"#ECECFF\";\n this.secondBkg = \"#ffffde\";\n this.lineColor = \"#333333\";\n this.border1 = \"#9370DB\";\n this.border2 = \"#aaaa33\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#e8e8e8\";\n this.textColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = \"calculated\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.sectionBkgColor = (0,khroma__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(102, 102, 255, 0.49);\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#fff400\";\n this.taskBorderColor = \"#534fbc\";\n this.taskBkgColor = \"#8a90dd\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"#534fbc\";\n this.activeTaskBkgColor = \"#bfc7ff\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n this.updateColors();\n }\n updateColors() {\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this[\"cScale\" + i], { h: 180 });\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n if (this.labelTextColor !== \"calculated\") {\n this.cScaleLabel0 = this.cScaleLabel0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n }\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n this.actorBorder = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 64 });\n this.fillType3 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 64 });\n this.fillType4 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -64 });\n this.fillType5 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: -64 });\n this.fillType6 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 128 });\n this.fillType7 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -20 });\n this.pie8 = this.pie8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -40 });\n this.pie11 = this.pie11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || (0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.quadrant1Fill) ? (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.quadrant1Fill) : (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git7, 25);\n } else {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])((0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git0), 25);\n this.gitInv1 = this.gitInv1 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git1);\n this.gitInv2 = this.gitInv2 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git2);\n this.gitInv3 = this.gitInv3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git3);\n this.gitInv4 = this.gitInv4 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git4);\n this.gitInv5 = this.gitInv5 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git5);\n this.gitInv6 = this.gitInv6 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git6);\n this.gitInv7 = this.gitInv7 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$2 = (userOverrides) => {\n const theme2 = new Theme$2();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$1 = class Theme4 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#cde498\";\n this.secondaryColor = \"#cdffb2\";\n this.background = \"white\";\n this.mainBkg = \"#cde498\";\n this.secondBkg = \"#cdffb2\";\n this.lineColor = \"green\";\n this.border1 = \"#13540c\";\n this.border2 = \"#6eaa49\";\n this.arrowheadColor = \"green\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.tertiaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(\"#cde498\", 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.primaryColor);\n this.secondaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.secondaryColor);\n this.tertiaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.primaryColor);\n this.lineColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.textColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#333\";\n this.edgeLabelBackground = \"#e8e8e8\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"#333\";\n this.signalTextColor = \"#333\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"#326932\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"#6eaa49\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#6eaa49\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"#487e3a\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.actorBorder = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this[\"cScale\" + i], { h: 180 });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 64 });\n this.fillType3 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 64 });\n this.fillType4 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -64 });\n this.fillType5 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: -64 });\n this.fillType6 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 128 });\n this.fillType7 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.tertiaryColor, { h: 40, l: -40 });\n this.pie7 = this.pie7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60, l: -50 });\n this.pie11 = this.pie11 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || (0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.quadrant1Fill) ? (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.quadrant1Fill) : (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.git7, 25);\n } else {\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git0, 25);\n this.git1 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git1, 25);\n this.git2 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git2, 25);\n this.git3 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git3, 25);\n this.git4 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git4, 25);\n this.git5 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git5, 25);\n this.git6 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git6, 25);\n this.git7 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git0);\n this.gitInv1 = this.gitInv1 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git1);\n this.gitInv2 = this.gitInv2 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git2);\n this.gitInv3 = this.gitInv3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git3);\n this.gitInv4 = this.gitInv4 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git4);\n this.gitInv5 = this.gitInv5 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git5);\n this.gitInv6 = this.gitInv6 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git6);\n this.gitInv7 = this.gitInv7 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$1 = (userOverrides) => {\n const theme2 = new Theme$1();\n theme2.calculate(userOverrides);\n return theme2;\n};\nclass Theme5 {\n constructor() {\n this.primaryColor = \"#eee\";\n this.contrast = \"#707070\";\n this.secondaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.contrast, 55);\n this.background = \"#ffffff\";\n this.tertiaryColor = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.primaryColor);\n this.secondaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.secondaryColor);\n this.tertiaryTextColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.tertiaryColor);\n this.lineColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.textColor = (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.background);\n this.mainBkg = \"#eee\";\n this.secondBkg = \"calculated\";\n this.lineColor = \"#666\";\n this.border1 = \"#999\";\n this.border2 = \"calculated\";\n this.note = \"#ffa\";\n this.text = \"#333\";\n this.critical = \"#d42\";\n this.done = \"#bbb\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"white\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"calculated\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n this.secondBkg = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.contrast, 55);\n this.border2 = this.contrast;\n this.actorBorder = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = \"#999\";\n this.noteBkgColor = \"#666\";\n this.noteTextColor = \"#fff\";\n this.cScale0 = this.cScale0 || \"#555\";\n this.cScale1 = this.cScale1 || \"#F4F4F4\";\n this.cScale2 = this.cScale2 || \"#555\";\n this.cScale3 = this.cScale3 || \"#BBB\";\n this.cScale4 = this.cScale4 || \"#777\";\n this.cScale5 = this.cScale5 || \"#999\";\n this.cScale6 = this.cScale6 || \"#DDD\";\n this.cScale7 = this.cScale7 || \"#FFF\";\n this.cScale8 = this.cScale8 || \"#DDD\";\n this.cScale9 = this.cScale9 || \"#BBB\";\n this.cScale10 = this.cScale10 || \"#999\";\n this.cScale11 = this.cScale11 || \"#777\";\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this[\"cScaleLabel0\"] = this[\"cScaleLabel0\"] || this.cScale1;\n this[\"cScaleLabel2\"] = this[\"cScaleLabel2\"] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.mainBkg, { l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n this.sectionBkgColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.contrast, 30);\n this.sectionBkgColor2 = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.contrast, 30);\n this.taskBorderColor = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.contrast, 10);\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.border1, 30);\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n this.transitionColor = this.transitionColor || \"#000\";\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f4f4f4\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || \"#000\";\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#222\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 64 });\n this.fillType3 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 64 });\n this.fillType4 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -64 });\n this.fillType5 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: -64 });\n this.fillType6 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 128 });\n this.fillType7 = (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.secondaryColor, { h: 128 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || (0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(this.quadrant1Fill) ? (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.quadrant1Fill) : (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 60 });\n this.git7 = this.pie8 || (0,khroma__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(this.primaryColor, { h: 120 });\n this.gitInv0 = this.gitInv0 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git0);\n this.gitInv1 = this.gitInv1 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git1);\n this.gitInv2 = this.gitInv2 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git2);\n this.gitInv3 = this.gitInv3 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git3);\n this.gitInv4 = this.gitInv4 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git4);\n this.gitInv5 = this.gitInv5 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git5);\n this.gitInv6 = this.gitInv6 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git6);\n this.gitInv7 = this.gitInv7 || (0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(this.git7);\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = \"white\";\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = \"white\";\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\nconst getThemeVariables = (userOverrides) => {\n const theme2 = new Theme5();\n theme2.calculate(userOverrides);\n return theme2;\n};\nconst theme = {\n base: {\n getThemeVariables: getThemeVariables$4\n },\n dark: {\n getThemeVariables: getThemeVariables$3\n },\n default: {\n getThemeVariables: getThemeVariables$2\n },\n forest: {\n getThemeVariables: getThemeVariables$1\n },\n neutral: {\n getThemeVariables\n }\n};\nconst config = {\n /**\n * Theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------- | ------ | -------- | ---------------------------------------------- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' |\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n *\n * @example\n *\n * ```js\n * {\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n * }\n * ```\n */\n theme: \"default\",\n themeVariables: theme[\"default\"].getThemeVariables(),\n themeCSS: void 0,\n /* **maxTextSize** - The maximum allowed size of the users text diagram */\n maxTextSize: 5e4,\n darkMode: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- |\n * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------------------------- | ---------------- | -------- | --------------------------------------------- |\n * | logLevel | This option decides the amount of logging to be used. | string \\| number | Required | 'trace','debug','info','warn','error','fatal' |\n *\n * **Notes:**\n *\n * - Trace: 0\n * - Debug: 1\n * - Info: 2\n * - Warn: 3\n * - Error: 4\n * - Fatal: 5 (default)\n */\n logLevel: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------------------- | ------ | -------- | ------------------------------------------ |\n * | securityLevel | Level of trust for parsed diagram | string | Required | 'sandbox', 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) HTML tags in the text are encoded and click functionality is disabled.\n * - **antiscript**: HTML tags in text are allowed (only script elements are removed), and click\n * functionality is enabled.\n * - **loose**: HTML tags in text are allowed and click functionality is enabled.\n * - **sandbox**: With this security level, all rendering takes place in a sandboxed iframe. This\n * prevent any JavaScript from running in the context. This may hinder interactive functionality\n * of the diagram, like scripts, popups in the sequence diagram, links to other tabs or targets, etc.\n */\n securityLevel: \"strict\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | -------------------------------------------- | ------- | -------- | ----------- |\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed\n * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the\n * `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n *\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: [\"secure\", \"securityLevel\", \"startOnLoad\", \"maxTextSize\"],\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based\n * on a seed. If set to false, the IDs are generated based on the current date and thus are not\n * deterministic. This is the default behavior.\n *\n * **Notes**:\n *\n * This matters if your files are checked into source control e.g. git and should not change unless\n * content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but\n * deterministicIds is true, a simple number iterator is used. You can set this attribute to base\n * the seed on a static string.\n */\n deterministicIDSeed: void 0,\n /** The object containing configurations specific for flowcharts */\n flowchart: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the flowchart | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the\n * vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal\n * spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' |\n *\n * **Notes:**\n *\n * Default Value: 'basis'\n */\n curve: \"basis\",\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper, elk |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid, elk for layout using\n * elkjs\n *\n * Default value: 'dagre-wrapper'\n */\n defaultRenderer: \"dagre-wrapper\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | wrappingWidth | See notes | number | 4 | width of nodes where text is wrapped |\n *\n * **Notes:**\n *\n * When using markdown strings the text ius wrapped automatically, this\n * value sets the max width of a text before it continues on a new line.\n * Default value: 'dagre-wrapper'\n */\n wrappingWidth: 200\n },\n /** The object containing configurations specific for sequence diagrams */\n sequence: {\n hideUnusedParticipants: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------- | ------- | -------- | ------------------ |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n actorMargin: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 65,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ---------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n messageMargin: 35,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------ | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: \"center\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ------- | -------- | ----------- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n mirrorActors: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- |\n * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False |\n *\n * **Notes:**\n *\n * Default value: false.\n */\n forceMenus: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------------------ | ------- | -------- | ----------- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curve\n *\n * Default value: false\n */\n rightAngles: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ------------------------------- | ------- | -------- | ----------- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:** Default value: false\n */\n showSequenceNumbers: false,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n * **Notes:** **Default value 14**..\n */\n actorFontSize: 14,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- |\n * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: \"'Open Sans\", sans-serif'\n */\n actorFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:** Default value: 400.\n */\n actorFontWeight: 400,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 14\n */\n noteFontSize: 14,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- |\n * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:** Default value: 400\n */\n noteFontWeight: 400,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n noteAlign: \"center\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:** Default value: 16\n */\n messageFontSize: 16,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\n *\n * **Notes:** Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:** Default value: 400.\n */\n messageFontWeight: 400,\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: false.\n */\n wrap: false,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 50.\n */\n labelBoxWidth: 50,\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:** Default value: 20.\n */\n labelBoxHeight: 20,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n /** The object containing configurations specific for gantt diagrams */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n barHeight: 20,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n barGap: 4,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n topPadding: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n rightPadding: 75,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 75\n */\n leftPadding: 75,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 35\n */\n gridLineStartPadding: 35,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ------------------ |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n fontSize: 11,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------- | ------- | -------- | ------------------ |\n * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 11\n */\n sectionFontSize: 11,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Default value: 4\n */\n numberSectionStyles: 4,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ------------------------- | ------ | -------- | --------- |\n * | displayMode | Controls the display mode | string | 4 | 'compact' |\n *\n * **Notes**:\n *\n * - **compact**: Enables displaying multiple tasks on the same row.\n */\n displayMode: \"\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ---------------------------- | ---- | -------- | ---------------- |\n * | axisFormat | Date/time format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: \"%Y-%m-%d\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ------------| ------ | -------- | ------- |\n * | tickInterval | axis ticks | string | Optional | string |\n *\n * **Notes:**\n *\n * Pattern is /^([1-9][0-9]*)(minute|hour|day|week|month)$/\n *\n * Default value: undefined\n */\n tickInterval: void 0,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------- | ------- | -------- | ----------- |\n * | topAxis | See notes | Boolean | 4 | True, False |\n *\n * **Notes:** when this flag is set date labels will be added to the top of the chart\n *\n * **Default value false**.\n */\n topAxis: false,\n useWidth: void 0\n },\n /** The object containing configurations specific for journey diagrams */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: \"center\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n // text placement as: tspan | fo | old only text as before\n textPlacement: \"fo\",\n actorColours: [\"#8FBC8F\", \"#7CFC00\", \"#00FFFF\", \"#20B2AA\", \"#B0E0E6\", \"#FFFFE0\"],\n sectionFills: [\"#191970\", \"#8B008B\", \"#4B0082\", \"#2F4F4F\", \"#800000\", \"#8B4513\", \"#00008B\"],\n sectionColours: [\"#fff\"]\n },\n /** The object containing configurations specific for timeline diagrams */\n timeline: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------- | ------- | -------- | ------------------ |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n leftMargin: 150,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------- | ------- | -------- | ------------------ |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 150\n */\n width: 150,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 65\n */\n height: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------------ | ------- | -------- | ------------------ |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 5\n */\n boxTextMargin: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------- | ------------------- | ------- | -------- | ------------------ |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n noteMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ----------------------- | ------- | -------- | ------------------ |\n * | messageMargin | Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | --------------------------- | ---- | -------- | ------------------------- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:** Default value: 'center'\n */\n messageAlign: \"center\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | --------------------------------- | ---- | -------- | ----------- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a\n * curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open Sans\", sans-serif',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n // text placement as: tspan | fo | old only text as before\n textPlacement: \"fo\",\n actorColours: [\"#8FBC8F\", \"#7CFC00\", \"#00FFFF\", \"#20B2AA\", \"#B0E0E6\", \"#FFFFE0\"],\n sectionFills: [\"#191970\", \"#8B008B\", \"#4B0082\", \"#2F4F4F\", \"#800000\", \"#8B4513\", \"#00008B\"],\n sectionColours: [\"#fff\"],\n disableMulticolor: false\n },\n class: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the class diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n arrowMarkerAbsolute: false,\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes**:\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: \"dagre-wrapper\"\n },\n state: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the state diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: \"20\",\n compositTitleSize: 35,\n radius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ----------------------- |\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\n *\n * **Notes:**\n *\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\n * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid\n *\n * Default value: 'dagre-d3'\n */\n defaultRenderer: \"dagre-wrapper\"\n },\n /** The object containing configurations specific for entity relationship diagrams */\n er: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins,\n * expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: \"TB\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------- | ------- | -------- | ------------------ |\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:** Expressed in pixels. Default value: 100\n */\n minEntityWidth: 100,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------------------------------- | ------- | -------- | ------------------ |\n * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:** Expressed in pixels Default value: 75\n */\n minEntityHeight: 75,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------------------------------------ | ------- | -------- | ------------------ |\n * | entityPadding | Minimum internal padding between text in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding between text in an entity box and the enclosing box borders,\n * expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ----------------------------------- | ------ | -------- | -------------------- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'gray'\n */\n stroke: \"gray\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | -------------------------- | ------ | -------- | -------------------- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:** Default value: 'honeydew'\n */\n fill: \"honeydew\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels) Default value: 12\n */\n fontSize: 12,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n /** The object containing configurations specific for pie diagrams */\n pie: {\n useWidth: void 0,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | -------------------------------------------------------------------------------- | ------- | -------- | ------------------- |\n * | textPosition | Axial position of slice's label from zero at the center to 1 at the outside edge | Number | Optional | Decimal from 0 to 1 |\n *\n * **Notes:** Default value: 0.75\n */\n textPosition: 0.75\n },\n quadrantChart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |\n * | chartWidth | Width of the chart | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 500\n */\n chartWidth: 500,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |\n * | chartHeight | Height of the chart | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 500\n */\n chartHeight: 500,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |\n * | titlePadding | Chart title top and bottom padding | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 10\n */\n titlePadding: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |\n * | titleFontSize | Chart title font size | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 20\n */\n titleFontSize: 20,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |\n * | quadrantPadding | Padding around the quadrant square | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n quadrantPadding: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------------------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------- |\n * | quadrantTextTopPadding | quadrant title padding from top if the quadrant is rendered on top | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n quadrantTextTopPadding: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |\n * | quadrantLabelFontSize | quadrant title font size | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 16\n */\n quadrantLabelFontSize: 16,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------------------------- | ------------------------------------------------------------- | ------- | -------- | ------------------- |\n * | quadrantInternalBorderStrokeWidth | stroke width of edges of the box that are inside the quadrant | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 1\n */\n quadrantInternalBorderStrokeWidth: 1,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------------------------- | -------------------------------------------------------------- | ------- | -------- | ------------------- |\n * | quadrantExternalBorderStrokeWidth | stroke width of edges of the box that are outside the quadrant | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 2\n */\n quadrantExternalBorderStrokeWidth: 2,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |\n * | xAxisLabelPadding | Padding around x-axis labels | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n xAxisLabelPadding: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |\n * | xAxisLabelFontSize | x-axis label font size | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 16\n */\n xAxisLabelFontSize: 16,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------- | ------- | -------- | ------------------- |\n * | xAxisPosition | position of x-axis labels | string | Optional | 'top' or 'bottom' |\n *\n * **Notes:**\n * Default value: top\n */\n xAxisPosition: \"top\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ---------------------------------- | ------- | -------- | ------------------- |\n * | yAxisLabelPadding | Padding around y-axis labels | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n yAxisLabelPadding: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------------ | ---------------------------------- | ------- | -------- | ------------------- |\n * | yAxisLabelFontSize | y-axis label font size | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 16\n */\n yAxisLabelFontSize: 16,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------- | ------- | -------- | ------------------- |\n * | yAxisPosition | position of y-axis labels | string | Optional | 'left' or 'right' |\n *\n * **Notes:**\n * Default value: left\n */\n yAxisPosition: \"left\",\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------------------- | -------------------------------------- | ------- | -------- | ------------------- |\n * | pointTextPadding | padding between point and point label | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n pointTextPadding: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ---------------------- | ---------------------- | ------- | -------- | ------------------- |\n * | pointTextPadding | point title font size | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 12\n */\n pointLabelFontSize: 12,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | ------------------------------- | ------- | -------- | ------------------- |\n * | pointRadius | radius of the point to be drawn | number | Optional | Any positive number |\n *\n * **Notes:**\n * Default value: 5\n */\n pointRadius: 5,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n /** The object containing configurations specific for req diagrams */\n requirement: {\n useWidth: void 0,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and scaled based on\n * available space. If set to false, the diagram reserves its absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n rect_fill: \"#f9f9f9\",\n text_color: \"#333\",\n rect_border_size: \"0.5px\",\n rect_border_color: \"#bbb\",\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20\n },\n gitGraph: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | titleTopMargin | Margin top for the text over the Git diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 25\n */\n titleTopMargin: 25,\n diagramPadding: 8,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n },\n mainBranchName: \"main\",\n mainBranchOrder: 0,\n showCommitLabel: true,\n showBranches: true,\n rotateCommitLabel: true\n },\n /** The object containing configurations specific for c4 diagrams */\n c4: {\n useWidth: void 0,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginX | Margin to the right and left of the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ------------------------------------------- | ------- | -------- | ------------------ |\n * | diagramMarginY | Margin to the over and under the c4 diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------- | --------------------- | ------- | -------- | ------------------ |\n * | c4ShapeMargin | Margin between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n c4ShapeMargin: 50,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | -------------- | ---------------------- | ------- | -------- | ------------------ |\n * | c4ShapePadding | Padding between shapes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 20\n */\n c4ShapePadding: 20,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | --------------------- | ------- | -------- | ------------------ |\n * | width | Width of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 216\n */\n width: 216,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ---------------------- | ------- | -------- | ------------------ |\n * | height | Height of person boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 60\n */\n height: 60,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------- | ------------------- | ------- | -------- | ------------------ |\n * | boxMargin | Margin around boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n boxMargin: 10,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ----------- | ----------- | ------- | -------- | ----------- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:** When this flag is set to true, the height and width is set to 100% and is then\n * scaling with the available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | ------------ | ----------- | ------- | -------- | ------------------ |\n * | c4ShapeInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many shapes to place in each row.\n *\n * Default value: 4\n */\n c4ShapeInRow: 4,\n nextLinePaddingX: 0,\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --------------- | ----------- | ------- | -------- | ------------------ |\n * | c4BoundaryInRow | See Notes | Integer | Required | Any Positive Value |\n *\n * **Notes:** How many boundaries to place in each row.\n *\n * Default value: 2\n */\n c4BoundaryInRow: 2,\n /**\n * This sets the font size of Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n personFontSize: 14,\n /**\n * This sets the font family of Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n personFontWeight: \"normal\",\n /**\n * This sets the font size of External Person shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_personFontSize: 14,\n /**\n * This sets the font family of External Person shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_personFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Person shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_personFontWeight: \"normal\",\n /**\n * This sets the font size of System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n systemFontSize: 14,\n /**\n * This sets the font family of System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n systemFontWeight: \"normal\",\n /**\n * This sets the font size of External System shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_systemFontSize: 14,\n /**\n * This sets the font family of External System shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_systemFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_systemFontWeight: \"normal\",\n /**\n * This sets the font size of System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_dbFontSize: 14,\n /**\n * This sets the font family of System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_dbFontWeight: \"normal\",\n /**\n * This sets the font size of External System DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_dbFontSize: 14,\n /**\n * This sets the font family of External System DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_dbFontWeight: \"normal\",\n /**\n * This sets the font size of System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n system_queueFontSize: 14,\n /**\n * This sets the font family of System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n system_queueFontWeight: \"normal\",\n /**\n * This sets the font size of External System Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_system_queueFontSize: 14,\n /**\n * This sets the font family of External System Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_system_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External System Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_system_queueFontWeight: \"normal\",\n /**\n * This sets the font size of Boundary shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n boundaryFontSize: 14,\n /**\n * This sets the font family of Boundary shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n boundaryFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Boundary shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n boundaryFontWeight: \"normal\",\n /**\n * This sets the font size of Message shape for the diagram\n *\n * **Notes:** Default value: 12.\n */\n messageFontSize: 12,\n /**\n * This sets the font family of Message shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n messageFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Message shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n messageFontWeight: \"normal\",\n /**\n * This sets the font size of Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n containerFontSize: 14,\n /**\n * This sets the font family of Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n containerFontWeight: \"normal\",\n /**\n * This sets the font size of External Container shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_containerFontSize: 14,\n /**\n * This sets the font family of External Container shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_containerFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_containerFontWeight: \"normal\",\n /**\n * This sets the font size of Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_dbFontSize: 14,\n /**\n * This sets the font family of Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_dbFontWeight: \"normal\",\n /**\n * This sets the font size of External Container DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_dbFontSize: 14,\n /**\n * This sets the font family of External Container DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_dbFontWeight: \"normal\",\n /**\n * This sets the font size of Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n container_queueFontSize: 14,\n /**\n * This sets the font family of Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n container_queueFontWeight: \"normal\",\n /**\n * This sets the font size of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_container_queueFontSize: 14,\n /**\n * This sets the font family of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_container_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Container Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_container_queueFontWeight: \"normal\",\n /**\n * This sets the font size of Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n componentFontSize: 14,\n /**\n * This sets the font family of Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n componentFontWeight: \"normal\",\n /**\n * This sets the font size of External Component shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_componentFontSize: 14,\n /**\n * This sets the font family of External Component shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_componentFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_componentFontWeight: \"normal\",\n /**\n * This sets the font size of Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_dbFontSize: 14,\n /**\n * This sets the font family of Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_dbFontWeight: \"normal\",\n /**\n * This sets the font size of External Component DB shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_dbFontSize: 14,\n /**\n * This sets the font family of External Component DB shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_dbFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component DB shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_dbFontWeight: \"normal\",\n /**\n * This sets the font size of Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n component_queueFontSize: 14,\n /**\n * This sets the font family of Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n component_queueFontWeight: \"normal\",\n /**\n * This sets the font size of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: 14.\n */\n external_component_queueFontSize: 14,\n /**\n * This sets the font family of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: \"Open Sans\", sans-serif.\n */\n external_component_queueFontFamily: '\"Open Sans\", sans-serif',\n /**\n * This sets the font weight of External Component Queue shape for the diagram\n *\n * **Notes:** Default value: normal.\n */\n external_component_queueFontWeight: \"normal\",\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:** Default value: true.\n */\n wrap: true,\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:** Default value: 0.\n */\n wrapPadding: 10,\n personFont: function() {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight\n };\n },\n external_personFont: function() {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight\n };\n },\n systemFont: function() {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight\n };\n },\n external_systemFont: function() {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight\n };\n },\n system_dbFont: function() {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight\n };\n },\n external_system_dbFont: function() {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight\n };\n },\n system_queueFont: function() {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight\n };\n },\n external_system_queueFont: function() {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight\n };\n },\n containerFont: function() {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight\n };\n },\n external_containerFont: function() {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight\n };\n },\n container_dbFont: function() {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight\n };\n },\n external_container_dbFont: function() {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight\n };\n },\n container_queueFont: function() {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight\n };\n },\n external_container_queueFont: function() {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight\n };\n },\n componentFont: function() {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight\n };\n },\n external_componentFont: function() {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight\n };\n },\n component_dbFont: function() {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight\n };\n },\n external_component_dbFont: function() {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight\n };\n },\n component_queueFont: function() {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight\n };\n },\n external_component_queueFont: function() {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight\n };\n },\n boundaryFont: function() {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight\n };\n },\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n // ' Colors\n // ' ##################################\n person_bg_color: \"#08427B\",\n person_border_color: \"#073B6F\",\n external_person_bg_color: \"#686868\",\n external_person_border_color: \"#8A8A8A\",\n system_bg_color: \"#1168BD\",\n system_border_color: \"#3C7FC0\",\n system_db_bg_color: \"#1168BD\",\n system_db_border_color: \"#3C7FC0\",\n system_queue_bg_color: \"#1168BD\",\n system_queue_border_color: \"#3C7FC0\",\n external_system_bg_color: \"#999999\",\n external_system_border_color: \"#8A8A8A\",\n external_system_db_bg_color: \"#999999\",\n external_system_db_border_color: \"#8A8A8A\",\n external_system_queue_bg_color: \"#999999\",\n external_system_queue_border_color: \"#8A8A8A\",\n container_bg_color: \"#438DD5\",\n container_border_color: \"#3C7FC0\",\n container_db_bg_color: \"#438DD5\",\n container_db_border_color: \"#3C7FC0\",\n container_queue_bg_color: \"#438DD5\",\n container_queue_border_color: \"#3C7FC0\",\n external_container_bg_color: \"#B3B3B3\",\n external_container_border_color: \"#A6A6A6\",\n external_container_db_bg_color: \"#B3B3B3\",\n external_container_db_border_color: \"#A6A6A6\",\n external_container_queue_bg_color: \"#B3B3B3\",\n external_container_queue_border_color: \"#A6A6A6\",\n component_bg_color: \"#85BBF0\",\n component_border_color: \"#78A8D8\",\n component_db_bg_color: \"#85BBF0\",\n component_db_border_color: \"#78A8D8\",\n component_queue_bg_color: \"#85BBF0\",\n component_queue_border_color: \"#78A8D8\",\n external_component_bg_color: \"#CCCCCC\",\n external_component_border_color: \"#BFBFBF\",\n external_component_db_bg_color: \"#CCCCCC\",\n external_component_db_border_color: \"#BFBFBF\",\n external_component_queue_bg_color: \"#CCCCCC\",\n external_component_queue_border_color: \"#BFBFBF\"\n },\n mindmap: {\n useMaxWidth: true,\n padding: 10,\n maxNodeWidth: 200\n },\n fontSize: 16\n};\nif (config.class) {\n config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\nif (config.gitGraph) {\n config.gitGraph.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n}\nconst keyify = (obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], \"\")];\n }\n return [...res, prefix + el];\n}, []);\nconst configKeys = keyify(config, \"\");\nconst defaultConfig$1 = config;\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return typeof subject === \"undefined\" || subject === null;\n}\nfunction isObject(subject) {\n return typeof subject === \"object\" && subject !== null;\n}\nfunction toArray(sequence2) {\n if (Array.isArray(sequence2))\n return sequence2;\n else if (isNothing(sequence2))\n return [];\n return [sequence2];\n}\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n if (source) {\n sourceKeys = Object.keys(source);\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction repeat(string, count) {\n var result = \"\", cycle;\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n return result;\n}\nfunction isNegativeZero(number) {\n return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\nvar common = {\n isNothing: isNothing_1,\n isObject: isObject_1,\n toArray: toArray_1,\n repeat: repeat_1,\n isNegativeZero: isNegativeZero_1,\n extend: extend_1\n};\nfunction formatError(exception2, compact) {\n var where = \"\", message = exception2.reason || \"(unknown reason)\";\n if (!exception2.mark)\n return message;\n if (exception2.mark.name) {\n where += 'in \"' + exception2.mark.name + '\" ';\n }\n where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n if (!compact && exception2.mark.snippet) {\n where += \"\\n\\n\" + exception2.mark.snippet;\n }\n return message + \" \" + where;\n}\nfunction YAMLException$1(reason, mark) {\n Error.call(this);\n this.name = \"YAMLException\";\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack || \"\";\n }\n}\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + \": \" + formatError(this, compact);\n};\nvar exception = YAMLException$1;\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = \"\";\n var tail = \"\";\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n if (position - lineStart > maxHalfLength) {\n head = \" ... \";\n lineStart = position - maxHalfLength + head.length;\n }\n if (lineEnd - position > maxHalfLength) {\n tail = \" ...\";\n lineEnd = position + maxHalfLength - tail.length;\n }\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n pos: position - lineStart + head.length\n // relative position\n };\n}\nfunction padStart(string, max) {\n return common.repeat(\" \", max - string.length) + string;\n}\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n if (!mark.buffer)\n return null;\n if (!options.maxLength)\n options.maxLength = 79;\n if (typeof options.indent !== \"number\")\n options.indent = 1;\n if (typeof options.linesBefore !== \"number\")\n options.linesBefore = 3;\n if (typeof options.linesAfter !== \"number\")\n options.linesAfter = 2;\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [0];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n while (match = re.exec(mark.buffer)) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n if (foundLineNo < 0)\n foundLineNo = lineStarts.length - 1;\n var result = \"\", i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n }\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n result += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n }\n return result.replace(/\\n$/, \"\");\n}\nvar snippet = makeSnippet;\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n \"kind\",\n \"multi\",\n \"resolve\",\n \"construct\",\n \"instanceOf\",\n \"predicate\",\n \"represent\",\n \"representName\",\n \"defaultStyle\",\n \"styleAliases\"\n];\nvar YAML_NODE_KINDS = [\n \"scalar\",\n \"sequence\",\n \"mapping\"\n];\nfunction compileStyleAliases(map2) {\n var result = {};\n if (map2 !== null) {\n Object.keys(map2).forEach(function(style) {\n map2[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type$1(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.options = options;\n this.tag = tag;\n this.kind = options[\"kind\"] || null;\n this.resolve = options[\"resolve\"] || function() {\n return true;\n };\n this.construct = options[\"construct\"] || function(data) {\n return data;\n };\n this.instanceOf = options[\"instanceOf\"] || null;\n this.predicate = options[\"predicate\"] || null;\n this.represent = options[\"represent\"] || null;\n this.representName = options[\"representName\"] || null;\n this.defaultStyle = options[\"defaultStyle\"] || null;\n this.multi = options[\"multi\"] || false;\n this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nvar type = Type$1;\nfunction compileList(schema2, name) {\n var result = [];\n schema2[name].forEach(function(currentType) {\n var newIndex = result.length;\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n newIndex = previousIndex;\n }\n });\n result[newIndex] = currentType;\n });\n return result;\n}\nfunction compileMap() {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n function collectType(type2) {\n if (type2.multi) {\n result.multi[type2.kind].push(type2);\n result.multi[\"fallback\"].push(type2);\n } else {\n result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n }\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\nSchema$1.prototype.extend = function extend2(definition) {\n var implicit = [];\n var explicit = [];\n if (definition instanceof type) {\n explicit.push(definition);\n } else if (Array.isArray(definition)) {\n explicit = explicit.concat(definition);\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n if (definition.implicit)\n implicit = implicit.concat(definition.implicit);\n if (definition.explicit)\n explicit = explicit.concat(definition.explicit);\n } else {\n throw new exception(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n }\n implicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n if (type$1.loadKind && type$1.loadKind !== \"scalar\") {\n throw new exception(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n }\n if (type$1.multi) {\n throw new exception(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n }\n });\n explicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n });\n var result = Object.create(Schema$1.prototype);\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n result.compiledImplicit = compileList(result, \"implicit\");\n result.compiledExplicit = compileList(result, \"explicit\");\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n return result;\n};\nvar schema = Schema$1;\nvar str = new type(\"tag:yaml.org,2002:str\", {\n kind: \"scalar\",\n construct: function(data) {\n return data !== null ? data : \"\";\n }\n});\nvar seq = new type(\"tag:yaml.org,2002:seq\", {\n kind: \"sequence\",\n construct: function(data) {\n return data !== null ? data : [];\n }\n});\nvar map = new type(\"tag:yaml.org,2002:map\", {\n kind: \"mapping\",\n construct: function(data) {\n return data !== null ? data : {};\n }\n});\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\nfunction resolveYamlNull(data) {\n if (data === null)\n return true;\n var max = data.length;\n return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return object === null;\n}\nvar _null = new type(\"tag:yaml.org,2002:null\", {\n kind: \"scalar\",\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return \"~\";\n },\n lowercase: function() {\n return \"null\";\n },\n uppercase: function() {\n return \"NULL\";\n },\n camelcase: function() {\n return \"Null\";\n },\n empty: function() {\n return \"\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction resolveYamlBoolean(data) {\n if (data === null)\n return false;\n var max = data.length;\n return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n}\nfunction constructYamlBoolean(data) {\n return data === \"true\" || data === \"True\" || data === \"TRUE\";\n}\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === \"[object Boolean]\";\n}\nvar bool = new type(\"tag:yaml.org,2002:bool\", {\n kind: \"scalar\",\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? \"true\" : \"false\";\n },\n uppercase: function(object) {\n return object ? \"TRUE\" : \"FALSE\";\n },\n camelcase: function(object) {\n return object ? \"True\" : \"False\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction isHexCode(c) {\n return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;\n}\nfunction isOctCode(c) {\n return 48 <= c && c <= 55;\n}\nfunction isDecCode(c) {\n return 48 <= c && c <= 57;\n}\nfunction resolveYamlInteger(data) {\n if (data === null)\n return false;\n var max = data.length, index = 0, hasDigits = false, ch;\n if (!max)\n return false;\n ch = data[index];\n if (ch === \"-\" || ch === \"+\") {\n ch = data[++index];\n }\n if (ch === \"0\") {\n if (index + 1 === max)\n return true;\n ch = data[++index];\n if (ch === \"b\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (ch !== \"0\" && ch !== \"1\")\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"x\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isHexCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"o\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isOctCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n }\n if (ch === \"_\")\n return false;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits || ch === \"_\")\n return false;\n return true;\n}\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n if (value.indexOf(\"_\") !== -1) {\n value = value.replace(/_/g, \"\");\n }\n ch = value[0];\n if (ch === \"-\" || ch === \"+\") {\n if (ch === \"-\")\n sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n if (value === \"0\")\n return 0;\n if (ch === \"0\") {\n if (value[1] === \"b\")\n return sign * parseInt(value.slice(2), 2);\n if (value[1] === \"x\")\n return sign * parseInt(value.slice(2), 16);\n if (value[1] === \"o\")\n return sign * parseInt(value.slice(2), 8);\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common.isNegativeZero(object));\n}\nvar int = new type(\"tag:yaml.org,2002:int\", {\n kind: \"scalar\",\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(obj) {\n return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n },\n octal: function(obj) {\n return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n },\n decimal: function(obj) {\n return obj.toString(10);\n },\n /* eslint-disable max-len */\n hexadecimal: function(obj) {\n return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n }\n },\n defaultStyle: \"decimal\",\n styleAliases: {\n binary: [2, \"bin\"],\n octal: [8, \"oct\"],\n decimal: [10, \"dec\"],\n hexadecimal: [16, \"hex\"]\n }\n});\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n \"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n);\nfunction resolveYamlFloat(data) {\n if (data === null)\n return false;\n if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === \"_\") {\n return false;\n }\n return true;\n}\nfunction constructYamlFloat(data) {\n var value, sign;\n value = data.replace(/_/g, \"\").toLowerCase();\n sign = value[0] === \"-\" ? -1 : 1;\n if (\"+-\".indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n if (value === \".inf\") {\n return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === \".nan\") {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case \"lowercase\":\n return \".nan\";\n case \"uppercase\":\n return \".NAN\";\n case \"camelcase\":\n return \".NaN\";\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \".inf\";\n case \"uppercase\":\n return \".INF\";\n case \"camelcase\":\n return \".Inf\";\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \"-.inf\";\n case \"uppercase\":\n return \"-.INF\";\n case \"camelcase\":\n return \"-.Inf\";\n }\n } else if (common.isNegativeZero(object)) {\n return \"-0.0\";\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n}\nfunction isFloat(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n}\nvar float = new type(\"tag:yaml.org,2002:float\", {\n kind: \"scalar\",\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: \"lowercase\"\n});\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\nvar core = json;\nvar YAML_DATE_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n);\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n);\nfunction resolveYamlTimestamp(data) {\n if (data === null)\n return false;\n if (YAML_DATE_REGEXP.exec(data) !== null)\n return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null)\n return true;\n return false;\n}\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null)\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null)\n throw new Error(\"Date resolve error\");\n year = +match[1];\n month = +match[2] - 1;\n day = +match[3];\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +match[4];\n minute = +match[5];\n second = +match[6];\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += \"0\";\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +match[10];\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 6e4;\n if (match[9] === \"-\")\n delta = -delta;\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta)\n date.setTime(date.getTime() - delta);\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nvar timestamp = new type(\"tag:yaml.org,2002:timestamp\", {\n kind: \"scalar\",\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\nfunction resolveYamlMerge(data) {\n return data === \"<<\" || data === null;\n}\nvar merge = new type(\"tag:yaml.org,2002:merge\", {\n kind: \"scalar\",\n resolve: resolveYamlMerge\n});\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\nfunction resolveYamlBinary(data) {\n if (data === null)\n return false;\n var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map2.indexOf(data.charAt(idx));\n if (code > 64)\n continue;\n if (code < 0)\n return false;\n bitlen += 6;\n }\n return bitlen % 8 === 0;\n}\nfunction constructYamlBinary(data) {\n var idx, tailbits, input = data.replace(/[\\r\\n=]/g, \"\"), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];\n for (idx = 0; idx < max; idx++) {\n if (idx % 4 === 0 && idx) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n }\n bits = bits << 6 | map2.indexOf(input.charAt(idx));\n }\n tailbits = max % 4 * 6;\n if (tailbits === 0) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n } else if (tailbits === 18) {\n result.push(bits >> 10 & 255);\n result.push(bits >> 2 & 255);\n } else if (tailbits === 12) {\n result.push(bits >> 4 & 255);\n }\n return new Uint8Array(result);\n}\nfunction representYamlBinary(object) {\n var result = \"\", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if (idx % 3 === 0 && idx) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n } else if (tail === 2) {\n result += map2[bits >> 10 & 63];\n result += map2[bits >> 4 & 63];\n result += map2[bits << 2 & 63];\n result += map2[64];\n } else if (tail === 1) {\n result += map2[bits >> 2 & 63];\n result += map2[bits << 4 & 63];\n result += map2[64];\n result += map2[64];\n }\n return result;\n}\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n}\nvar binary = new type(\"tag:yaml.org,2002:binary\", {\n kind: \"scalar\",\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (data === null)\n return true;\n var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString$2.call(pair) !== \"[object Object]\")\n return false;\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey)\n pairHasKey = true;\n else\n return false;\n }\n }\n if (!pairHasKey)\n return false;\n if (objectKeys.indexOf(pairKey) === -1)\n objectKeys.push(pairKey);\n else\n return false;\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\nvar omap = new type(\"tag:yaml.org,2002:omap\", {\n kind: \"sequence\",\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\nvar _toString$1 = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (data === null)\n return true;\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString$1.call(pair) !== \"[object Object]\")\n return false;\n keys = Object.keys(pair);\n if (keys.length !== 1)\n return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (data === null)\n return [];\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nvar pairs = new type(\"tag:yaml.org,2002:pairs\", {\n kind: \"sequence\",\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (data === null)\n return true;\n var key, object = data;\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null)\n return false;\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\nvar set = new type(\"tag:yaml.org,2002:set\", {\n kind: \"mapping\",\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction is_EOL(c) {\n return c === 10 || c === 13;\n}\nfunction is_WHITE_SPACE(c) {\n return c === 9 || c === 32;\n}\nfunction is_WS_OR_EOL(c) {\n return c === 9 || c === 32 || c === 10 || c === 13;\n}\nfunction is_FLOW_INDICATOR(c) {\n return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n}\nfunction fromHexCode(c) {\n var lc;\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n lc = c | 32;\n if (97 <= lc && lc <= 102) {\n return lc - 97 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 120) {\n return 2;\n }\n if (c === 117) {\n return 4;\n }\n if (c === 85) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return c === 48 ? \"\\0\" : c === 97 ? \"\\x07\" : c === 98 ? \"\\b\" : c === 116 ? \"\t\" : c === 9 ? \"\t\" : c === 110 ? \"\\n\" : c === 118 ? \"\\v\" : c === 102 ? \"\\f\" : c === 114 ? \"\\r\" : c === 101 ? \"\\x1B\" : c === 32 ? \" \" : c === 34 ? '\"' : c === 47 ? \"/\" : c === 92 ? \"\\\\\" : c === 78 ? \"…\" : c === 95 ? \" \" : c === 76 ? \"\\u2028\" : c === 80 ? \"\\u2029\" : \"\";\n}\nfunction charFromCodepoint(c) {\n if (c <= 65535) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(\n (c - 65536 >> 10) + 55296,\n (c - 65536 & 1023) + 56320\n );\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State$1(input, options) {\n this.input = input;\n this.filename = options[\"filename\"] || null;\n this.schema = options[\"schema\"] || _default;\n this.onWarning = options[\"onWarning\"] || null;\n this.legacy = options[\"legacy\"] || false;\n this.json = options[\"json\"] || false;\n this.listener = options[\"listener\"] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.firstTabInLine = -1;\n this.documents = [];\n}\nfunction generateError(state2, message) {\n var mark = {\n name: state2.filename,\n buffer: state2.input.slice(0, -1),\n // omit trailing \\0\n position: state2.position,\n line: state2.line,\n column: state2.position - state2.lineStart\n };\n mark.snippet = snippet(mark);\n return new exception(message, mark);\n}\nfunction throwError(state2, message) {\n throw generateError(state2, message);\n}\nfunction throwWarning(state2, message) {\n if (state2.onWarning) {\n state2.onWarning.call(null, generateError(state2, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state2, name, args) {\n var match, major, minor;\n if (state2.version !== null) {\n throwError(state2, \"duplication of %YAML directive\");\n }\n if (args.length !== 1) {\n throwError(state2, \"YAML directive accepts exactly one argument\");\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (match === null) {\n throwError(state2, \"ill-formed argument of the YAML directive\");\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (major !== 1) {\n throwError(state2, \"unacceptable YAML version of the document\");\n }\n state2.version = args[0];\n state2.checkLineBreaks = minor < 2;\n if (minor !== 1 && minor !== 2) {\n throwWarning(state2, \"unsupported YAML version of the document\");\n }\n },\n TAG: function handleTagDirective(state2, name, args) {\n var handle, prefix;\n if (args.length !== 2) {\n throwError(state2, \"TAG directive accepts exactly two arguments\");\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state2, \"ill-formed tag handle (first argument) of the TAG directive\");\n }\n if (_hasOwnProperty$1.call(state2.tagMap, handle)) {\n throwError(state2, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state2, \"ill-formed tag prefix (second argument) of the TAG directive\");\n }\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state2, \"tag prefix is malformed: \" + prefix);\n }\n state2.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state2, start, end, checkJson) {\n var _position, _length, _character, _result;\n if (start < end) {\n _result = state2.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {\n throwError(state2, \"expected valid JSON character\");\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state2, \"the stream contains non-printable characters\");\n }\n state2.result += _result;\n }\n}\nfunction mergeMappings(state2, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n if (!common.isObject(source)) {\n throwError(state2, \"cannot merge mappings; the provided source object is unacceptable\");\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n var index, quantity;\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state2, \"nested arrays are not supported inside keys\");\n }\n if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n keyNode[index] = \"[object Object]\";\n }\n }\n }\n if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n keyNode = \"[object Object]\";\n }\n keyNode = String(keyNode);\n if (_result === null) {\n _result = {};\n }\n if (keyTag === \"tag:yaml.org,2002:merge\") {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state2, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state2, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state2.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {\n state2.line = startLine || state2.line;\n state2.lineStart = startLineStart || state2.lineStart;\n state2.position = startPos || state2.position;\n throwError(state2, \"duplicated mapping key\");\n }\n if (keyNode === \"__proto__\") {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state2) {\n var ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 10) {\n state2.position++;\n } else if (ch === 13) {\n state2.position++;\n if (state2.input.charCodeAt(state2.position) === 10) {\n state2.position++;\n }\n } else {\n throwError(state2, \"a line break is expected\");\n }\n state2.line += 1;\n state2.lineStart = state2.position;\n state2.firstTabInLine = -1;\n}\nfunction skipSeparationSpace(state2, allowComments, checkIndent) {\n var lineBreaks = 0, ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 9 && state2.firstTabInLine === -1) {\n state2.firstTabInLine = state2.position;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (allowComments && ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 10 && ch !== 13 && ch !== 0);\n }\n if (is_EOL(ch)) {\n readLineBreak(state2);\n ch = state2.input.charCodeAt(state2.position);\n lineBreaks++;\n state2.lineIndent = 0;\n while (ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n } else {\n break;\n }\n }\n if (checkIndent !== -1 && lineBreaks !== 0 && state2.lineIndent < checkIndent) {\n throwWarning(state2, \"deficient indentation\");\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state2) {\n var _position = state2.position, ch;\n ch = state2.input.charCodeAt(_position);\n if ((ch === 45 || ch === 46) && ch === state2.input.charCodeAt(_position + 1) && ch === state2.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state2.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state2, count) {\n if (count === 1) {\n state2.result += \" \";\n } else if (count > 1) {\n state2.result += common.repeat(\"\\n\", count - 1);\n }\n}\nfunction readPlainScalar(state2, nodeIndent, withinFlowCollection) {\n var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state2.kind, _result = state2.result, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n return false;\n }\n if (ch === 63 || ch === 45) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n while (ch !== 0) {\n if (ch === 58) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 35) {\n preceding = state2.input.charCodeAt(state2.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state2.line;\n _lineStart = state2.lineStart;\n _lineIndent = state2.lineIndent;\n skipSeparationSpace(state2, false, -1);\n if (state2.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state2.input.charCodeAt(state2.position);\n continue;\n } else {\n state2.position = captureEnd;\n state2.line = _line;\n state2.lineStart = _lineStart;\n state2.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state2, captureStart, captureEnd, false);\n writeFoldedLines(state2, state2.line - _line);\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state2.position + 1;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, captureEnd, false);\n if (state2.result) {\n return true;\n }\n state2.kind = _kind;\n state2.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state2, nodeIndent) {\n var ch, captureStart, captureEnd;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 39) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 39) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 39) {\n captureStart = state2.position;\n state2.position++;\n captureEnd = state2.position;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a single quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a single quoted scalar\");\n}\nfunction readDoubleQuotedScalar(state2, nodeIndent) {\n var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 34) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 34) {\n captureSegment(state2, captureStart, state2.position, true);\n state2.position++;\n return true;\n } else if (ch === 92) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state2, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state2.result += simpleEscapeMap[ch];\n state2.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state2.input.charCodeAt(++state2.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state2, \"expected hexadecimal character\");\n }\n }\n state2.result += charFromCodepoint(hexResult);\n state2.position++;\n } else {\n throwError(state2, \"unknown escape sequence\");\n }\n captureStart = captureEnd = state2.position;\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a double quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a double quoted scalar\");\n}\nfunction readFlowCollection(state2, nodeIndent) {\n var readNext = true, _line, _lineStart, _pos, _tag = state2.tag, _result, _anchor = state2.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 91) {\n terminator = 93;\n isMapping = false;\n _result = [];\n } else if (ch === 123) {\n terminator = 125;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(++state2.position);\n while (ch !== 0) {\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === terminator) {\n state2.position++;\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = isMapping ? \"mapping\" : \"sequence\";\n state2.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state2, \"missed comma between flow collection entries\");\n } else if (ch === 44) {\n throwError(state2, \"expected the node content, but found ','\");\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (ch === 63) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state2.position++;\n skipSeparationSpace(state2, true, nodeIndent);\n }\n }\n _line = state2.line;\n _lineStart = state2.lineStart;\n _pos = state2.position;\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state2.tag;\n keyNode = state2.result;\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if ((isExplicitPair || state2.line === _line) && ch === 58) {\n isPair = true;\n ch = state2.input.charCodeAt(++state2.position);\n skipSeparationSpace(state2, true, nodeIndent);\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state2.result;\n }\n if (isMapping) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state2, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 44) {\n readNext = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n readNext = false;\n }\n }\n throwError(state2, \"unexpected end of the stream within a flow collection\");\n}\nfunction readBlockScalar(state2, nodeIndent) {\n var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 124) {\n folding = false;\n } else if (ch === 62) {\n folding = true;\n } else {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n while (ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 43 || ch === 45) {\n if (CHOMPING_CLIP === chomping) {\n chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state2, \"repeat of a chomping mode identifier\");\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state2, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state2, \"repeat of an indentation width identifier\");\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (is_WHITE_SPACE(ch));\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (!is_EOL(ch) && ch !== 0);\n }\n }\n while (ch !== 0) {\n readLineBreak(state2);\n state2.lineIndent = 0;\n ch = state2.input.charCodeAt(state2.position);\n while ((!detectedIndent || state2.lineIndent < textIndent) && ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (!detectedIndent && state2.lineIndent > textIndent) {\n textIndent = state2.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state2.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n state2.result += \"\\n\";\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state2.result += common.repeat(\"\\n\", emptyLines + 1);\n } else if (emptyLines === 0) {\n if (didReadContent) {\n state2.result += \" \";\n }\n } else {\n state2.result += common.repeat(\"\\n\", emptyLines);\n }\n } else {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n }\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state2.position;\n while (!is_EOL(ch) && ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, state2.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state2, nodeIndent) {\n var _line, _tag = state2.tag, _anchor = state2.anchor, _result = [], following, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n if (ch !== 45) {\n break;\n }\n following = state2.input.charCodeAt(state2.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state2.position++;\n if (skipSeparationSpace(state2, true, -1)) {\n if (state2.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state2.input.charCodeAt(state2.position);\n continue;\n }\n }\n _line = state2.line;\n composeNode(state2, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state2.result);\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a sequence entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"sequence\";\n state2.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state2, nodeIndent, flowIndent) {\n var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state2.tag, _anchor = state2.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (!atExplicitKey && state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n following = state2.input.charCodeAt(state2.position + 1);\n _line = state2.line;\n if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {\n if (ch === 63) {\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state2, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n }\n state2.position += 1;\n ch = following;\n } else {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n if (!composeNode(state2, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n break;\n }\n if (state2.line === _line) {\n ch = state2.input.charCodeAt(state2.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 58) {\n ch = state2.input.charCodeAt(++state2.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state2, \"a whitespace character is expected after the key-value separator within a block mapping\");\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state2.tag;\n keyNode = state2.result;\n } else if (detected) {\n throwError(state2, \"can not read an implicit mapping pair; a colon is missed\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state2, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n }\n if (state2.line === _line || state2.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n }\n if (composeNode(state2, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state2.result;\n } else {\n valueNode = state2.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n }\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a mapping entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"mapping\";\n state2.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state2) {\n var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 33)\n return false;\n if (state2.tag !== null) {\n throwError(state2, \"duplication of a tag property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 60) {\n isVerbatim = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else if (ch === 33) {\n isNamed = true;\n tagHandle = \"!!\";\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n tagHandle = \"!\";\n }\n _position = state2.position;\n if (isVerbatim) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && ch !== 62);\n if (state2.position < state2.length) {\n tagName = state2.input.slice(_position, state2.position);\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n throwError(state2, \"unexpected end of the stream within a verbatim tag\");\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 33) {\n if (!isNamed) {\n tagHandle = state2.input.slice(_position - 1, state2.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state2, \"named tag handle cannot contain such characters\");\n }\n isNamed = true;\n _position = state2.position + 1;\n } else {\n throwError(state2, \"tag suffix cannot contain exclamation marks\");\n }\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n tagName = state2.input.slice(_position, state2.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state2, \"tag suffix cannot contain flow indicator characters\");\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state2, \"tag name cannot contain such characters: \" + tagName);\n }\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state2, \"tag name is malformed: \" + tagName);\n }\n if (isVerbatim) {\n state2.tag = tagName;\n } else if (_hasOwnProperty$1.call(state2.tagMap, tagHandle)) {\n state2.tag = state2.tagMap[tagHandle] + tagName;\n } else if (tagHandle === \"!\") {\n state2.tag = \"!\" + tagName;\n } else if (tagHandle === \"!!\") {\n state2.tag = \"tag:yaml.org,2002:\" + tagName;\n } else {\n throwError(state2, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state2) {\n var _position, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 38)\n return false;\n if (state2.anchor !== null) {\n throwError(state2, \"duplication of an anchor property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an anchor node must contain at least one character\");\n }\n state2.anchor = state2.input.slice(_position, state2.position);\n return true;\n}\nfunction readAlias(state2) {\n var _position, alias, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 42)\n return false;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an alias node must contain at least one character\");\n }\n alias = state2.input.slice(_position, state2.position);\n if (!_hasOwnProperty$1.call(state2.anchorMap, alias)) {\n throwError(state2, 'unidentified alias \"' + alias + '\"');\n }\n state2.result = state2.anchorMap[alias];\n skipSeparationSpace(state2, true, -1);\n return true;\n}\nfunction composeNode(state2, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;\n if (state2.listener !== null) {\n state2.listener(\"open\", state2);\n }\n state2.tag = null;\n state2.anchor = null;\n state2.kind = null;\n state2.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (indentStatus === 1) {\n while (readTagProperty(state2) || readAnchorProperty(state2)) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state2.position - state2.lineStart;\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state2, blockIndent) || readBlockMapping(state2, blockIndent, flowIndent)) || readFlowCollection(state2, flowIndent)) {\n hasContent = true;\n } else {\n if (allowBlockScalars && readBlockScalar(state2, flowIndent) || readSingleQuotedScalar(state2, flowIndent) || readDoubleQuotedScalar(state2, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state2)) {\n hasContent = true;\n if (state2.tag !== null || state2.anchor !== null) {\n throwError(state2, \"alias node should not have any properties\");\n }\n } else if (readPlainScalar(state2, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (state2.tag === null) {\n state2.tag = \"?\";\n }\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n } else if (indentStatus === 0) {\n hasContent = allowBlockCollections && readBlockSequence(state2, blockIndent);\n }\n }\n if (state2.tag === null) {\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n } else if (state2.tag === \"?\") {\n if (state2.result !== null && state2.kind !== \"scalar\") {\n throwError(state2, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state2.kind + '\"');\n }\n for (typeIndex = 0, typeQuantity = state2.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type2 = state2.implicitTypes[typeIndex];\n if (type2.resolve(state2.result)) {\n state2.result = type2.construct(state2.result);\n state2.tag = type2.tag;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n break;\n }\n }\n } else if (state2.tag !== \"!\") {\n if (_hasOwnProperty$1.call(state2.typeMap[state2.kind || \"fallback\"], state2.tag)) {\n type2 = state2.typeMap[state2.kind || \"fallback\"][state2.tag];\n } else {\n type2 = null;\n typeList = state2.typeMap.multi[state2.kind || \"fallback\"];\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state2.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type2 = typeList[typeIndex];\n break;\n }\n }\n }\n if (!type2) {\n throwError(state2, \"unknown tag !<\" + state2.tag + \">\");\n }\n if (state2.result !== null && type2.kind !== state2.kind) {\n throwError(state2, \"unacceptable node kind for !<\" + state2.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state2.kind + '\"');\n }\n if (!type2.resolve(state2.result, state2.tag)) {\n throwError(state2, \"cannot resolve a node with !<\" + state2.tag + \"> explicit tag\");\n } else {\n state2.result = type2.construct(state2.result, state2.tag);\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n }\n if (state2.listener !== null) {\n state2.listener(\"close\", state2);\n }\n return state2.tag !== null || state2.anchor !== null || hasContent;\n}\nfunction readDocument(state2) {\n var documentStart = state2.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;\n state2.version = null;\n state2.checkLineBreaks = state2.legacy;\n state2.tagMap = /* @__PURE__ */ Object.create(null);\n state2.anchorMap = /* @__PURE__ */ Object.create(null);\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if (state2.lineIndent > 0 || ch !== 37) {\n break;\n }\n hasDirectives = true;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveName = state2.input.slice(_position, state2.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state2, \"directive name must not be less than one character in length\");\n }\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch))\n break;\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveArgs.push(state2.input.slice(_position, state2.position));\n }\n if (ch !== 0)\n readLineBreak(state2);\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state2, directiveName, directiveArgs);\n } else {\n throwWarning(state2, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state2, true, -1);\n if (state2.lineIndent === 0 && state2.input.charCodeAt(state2.position) === 45 && state2.input.charCodeAt(state2.position + 1) === 45 && state2.input.charCodeAt(state2.position + 2) === 45) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n } else if (hasDirectives) {\n throwError(state2, \"directives end mark is expected\");\n }\n composeNode(state2, state2.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state2, true, -1);\n if (state2.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state2.input.slice(documentStart, state2.position))) {\n throwWarning(state2, \"non-ASCII line breaks are interpreted as content\");\n }\n state2.documents.push(state2.result);\n if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n if (state2.input.charCodeAt(state2.position) === 46) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n }\n return;\n }\n if (state2.position < state2.length - 1) {\n throwError(state2, \"end of the stream or a document separator is expected\");\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n input += \"\\n\";\n }\n if (input.charCodeAt(0) === 65279) {\n input = input.slice(1);\n }\n }\n var state2 = new State$1(input, options);\n var nullpos = input.indexOf(\"\\0\");\n if (nullpos !== -1) {\n state2.position = nullpos;\n throwError(state2, \"null byte is not allowed in input\");\n }\n state2.input += \"\\0\";\n while (state2.input.charCodeAt(state2.position) === 32) {\n state2.lineIndent += 1;\n state2.position += 1;\n }\n while (state2.position < state2.length - 1) {\n readDocument(state2);\n }\n return state2.documents;\n}\nfunction loadAll$1(input, iterator2, options) {\n if (iterator2 !== null && typeof iterator2 === \"object\" && typeof options === \"undefined\") {\n options = iterator2;\n iterator2 = null;\n }\n var documents = loadDocuments(input, options);\n if (typeof iterator2 !== \"function\") {\n return documents;\n }\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator2(documents[index]);\n }\n}\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n if (documents.length === 0) {\n return void 0;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception(\"expected a single document in the stream, but found more\");\n}\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\nvar loader$j = {\n loadAll: loadAll_1,\n load: load_1\n};\nvar FAILSAFE_SCHEMA = failsafe;\nvar load = loader$j.load;\nconst frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nfunction extractFrontMatter(text, db) {\n var _a, _b;\n const matches = text.match(frontMatterRegex);\n if (matches) {\n const parsed = load(matches[1], {\n // To keep things simple, only allow strings, arrays, and plain objects.\n // https://www.yaml.org/spec/1.2/spec.html#id2802346\n schema: FAILSAFE_SCHEMA\n });\n if (parsed == null ? void 0 : parsed.title) {\n (_a = db.setDiagramTitle) == null ? void 0 : _a.call(db, parsed.title);\n }\n if (parsed == null ? void 0 : parsed.displayMode) {\n (_b = db.setDisplayMode) == null ? void 0 : _b.call(db, parsed.displayMode);\n }\n return text.slice(matches[0].length);\n } else {\n return text;\n }\n}\nconst assignWithDepth = function(dst, src, config2) {\n const { depth, clobber } = Object.assign({ depth: 2, clobber: false }, config2);\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config2));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === void 0 || depth <= 0) {\n if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n Object.keys(src).forEach((key) => {\n if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n if (dst[key] === void 0) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || typeof dst[key] !== \"object\" && typeof src[key] !== \"object\") {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\nconst assignWithDepth$1 = assignWithDepth;\nconst defaultConfig = Object.freeze(defaultConfig$1);\nlet siteConfig = assignWithDepth$1({}, defaultConfig);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth$1({}, defaultConfig);\nconst updateCurrentConfig = (siteCfg, _directives) => {\n let cfg = assignWithDepth$1({}, siteCfg);\n let sumOfDirectives = {};\n for (const d of _directives) {\n sanitize(d);\n sumOfDirectives = assignWithDepth$1(sumOfDirectives, d);\n }\n cfg = assignWithDepth$1(cfg, sumOfDirectives);\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth$1({}, configFromInitialize);\n const themeVariables = assignWithDepth$1(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n }\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\nconst setSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1({}, defaultConfig);\n siteConfig = assignWithDepth$1(siteConfig, conf);\n if (conf.theme && theme[conf.theme]) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst saveConfigFromInitialize = (conf) => {\n configFromInitialize = assignWithDepth$1({}, conf);\n};\nconst updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst getSiteConfig = () => {\n return assignWithDepth$1({}, siteConfig);\n};\nconst setConfig = (conf) => {\n checkConfig(conf);\n assignWithDepth$1(currentConfig, conf);\n return getConfig$1();\n};\nconst getConfig$1 = () => {\n return assignWithDepth$1({}, currentConfig);\n};\nconst sanitize = (options) => {\n [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n if (options[key] !== void 0) {\n log$1.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (key.indexOf(\"__\") === 0) {\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n delete options[key];\n }\n if (typeof options[key] === \"object\") {\n sanitize(options[key]);\n }\n });\n};\nconst addDirective = (directive2) => {\n if (directive2.fontFamily) {\n if (!directive2.themeVariables) {\n directive2.themeVariables = { fontFamily: directive2.fontFamily };\n } else {\n if (!directive2.themeVariables.fontFamily) {\n directive2.themeVariables = { fontFamily: directive2.fontFamily };\n }\n }\n }\n directives.push(directive2);\n updateCurrentConfig(siteConfig, directives);\n};\nconst reset = (config2 = siteConfig) => {\n directives = [];\n updateCurrentConfig(config2, directives);\n};\nvar ConfigWarning = /* @__PURE__ */ ((ConfigWarning2) => {\n ConfigWarning2[\"LAZY_LOAD_DEPRECATED\"] = \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\";\n return ConfigWarning2;\n})(ConfigWarning || {});\nconst issuedWarnings = {};\nconst issueWarning = (warning) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log$1.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\nconst checkConfig = (config2) => {\n if (!config2) {\n return;\n }\n if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n issueWarning(\"LAZY_LOAD_DEPRECATED\");\n }\n};\nconst d3Attrs = function(d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\nconst calculateSvgSizeAttrs = function(height, width, useMaxWidth) {\n let attrs = /* @__PURE__ */ new Map();\n if (useMaxWidth) {\n attrs.set(\"width\", \"100%\");\n attrs.set(\"style\", `max-width: ${width}px;`);\n } else {\n attrs.set(\"height\", height);\n attrs.set(\"width\", width);\n }\n return attrs;\n};\nconst configureSvgSize = function(svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\nconst setupGraphViewbox$1 = function(graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n log$1.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n let width = 0;\n let height = 0;\n log$1.info(`Graph bounds: ${width}x${height}`, graph);\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n log$1.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n svgElem.attr(\"viewBox\", vBox);\n};\nconst themes = {};\nconst getStyles$1 = (type2, userStyles, options) => {\n let diagramStyles = \"\";\n if (type2 in themes && themes[type2]) {\n diagramStyles = themes[type2](options);\n } else {\n log$1.warn(`No theme found for ${type2}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${diagramStyles}\n\n ${userStyles}\n`;\n};\nconst addStylesForDiagram = (type2, diagramTheme) => {\n themes[type2] = diagramTheme;\n};\nconst getStyles$2 = getStyles$1;\nlet title = \"\";\nlet diagramTitle = \"\";\nlet description = \"\";\nconst sanitizeText$1 = (txt) => sanitizeText$2(txt, getConfig$1());\nconst clear = function() {\n title = \"\";\n description = \"\";\n diagramTitle = \"\";\n};\nconst setAccTitle = function(txt) {\n title = sanitizeText$1(txt).replace(/^\\s+/g, \"\");\n};\nconst getAccTitle = function() {\n return title || diagramTitle;\n};\nconst setAccDescription = function(txt) {\n description = sanitizeText$1(txt).replace(/\\n\\s+/g, \"\\n\");\n};\nconst getAccDescription = function() {\n return description;\n};\nconst setDiagramTitle = function(txt) {\n diagramTitle = sanitizeText$1(txt);\n};\nconst getDiagramTitle = function() {\n return diagramTitle;\n};\nconst commonDb = {\n getAccTitle,\n setAccTitle,\n getDiagramTitle,\n setDiagramTitle,\n getAccDescription,\n setAccDescription,\n clear\n};\nconst commonDb$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n clear,\n default: commonDb,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n}, Symbol.toStringTag, { value: \"Module\" }));\nlet currentDirective = {};\nconst parseDirective$1 = function(p, statement, context, type2) {\n log$1.debug(\"parseDirective is being called\", statement, context, type2);\n try {\n if (statement !== void 0) {\n statement = statement.trim();\n switch (context) {\n case \"open_directive\":\n currentDirective = {};\n break;\n case \"type_directive\":\n if (!currentDirective) {\n throw new Error(\"currentDirective is undefined\");\n }\n currentDirective.type = statement.toLowerCase();\n break;\n case \"arg_directive\":\n if (!currentDirective) {\n throw new Error(\"currentDirective is undefined\");\n }\n currentDirective.args = JSON.parse(statement);\n break;\n case \"close_directive\":\n handleDirective(p, currentDirective, type2);\n currentDirective = void 0;\n break;\n }\n }\n } catch (error) {\n log$1.error(\n `Error while rendering sequenceDiagram directive: ${statement} jison context: ${context}`\n );\n log$1.error(error.message);\n }\n};\nconst handleDirective = function(p, directive2, type2) {\n log$1.info(`Directive type=${directive2.type} with args:`, directive2.args);\n switch (directive2.type) {\n case \"init\":\n case \"initialize\": {\n [\"config\"].forEach((prop) => {\n if (directive2.args[prop] !== void 0) {\n if (type2 === \"flowchart-v2\") {\n type2 = \"flowchart\";\n }\n directive2.args[type2] = directive2.args[prop];\n delete directive2.args[prop];\n }\n });\n log$1.info(\"sanitize in handleDirective\", directive2.args);\n directiveSanitizer(directive2.args);\n log$1.info(\"sanitize in handleDirective (done)\", directive2.args);\n addDirective(directive2.args);\n break;\n }\n case \"wrap\":\n case \"nowrap\":\n if (p && p[\"setWrap\"]) {\n p.setWrap(directive2.type === \"wrap\");\n }\n break;\n case \"themeCss\":\n log$1.warn(\"themeCss encountered\");\n break;\n default:\n log$1.warn(\n `Unhandled directive: source: '%%{${directive2.type}: ${JSON.stringify(\n directive2.args ? directive2.args : {}\n )}}%%`,\n directive2\n );\n break;\n }\n};\nconst log = log$1;\nconst setLogLevel = setLogLevel$1;\nconst getConfig = getConfig$1;\nconst sanitizeText = (text) => sanitizeText$2(text, getConfig());\nconst setupGraphViewbox = setupGraphViewbox$1;\nconst getCommonDb = () => {\n return commonDb$1;\n};\nconst parseDirective = (p, statement, context, type2) => parseDirective$1(p, statement, context, type2);\nconst diagrams = {};\nconst registerDiagram = (id2, diagram2, detector2) => {\n if (diagrams[id2]) {\n throw new Error(`Diagram ${id2} already registered.`);\n }\n diagrams[id2] = diagram2;\n if (detector2) {\n addDetector(id2, detector2);\n }\n addStylesForDiagram(id2, diagram2.styles);\n if (diagram2.injectUtils) {\n diagram2.injectUtils(\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n parseDirective\n );\n }\n};\nconst getDiagram = (name) => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new Error(`Diagram ${name} not found.`);\n};\nclass UnknownDiagramError extends Error {\n constructor(message) {\n super(message);\n this.name = \"UnknownDiagramError\";\n }\n}\nconst directive$1 = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst anyComment = /\\s*%%.*\\n/gm;\nconst detectors = {};\nconst detectType = function(text, config2) {\n text = text.replace(frontMatterRegex, \"\").replace(directive$1, \"\").replace(anyComment, \"\\n\");\n for (const [key, { detector: detector2 }] of Object.entries(detectors)) {\n const diagram2 = detector2(text, config2);\n if (diagram2) {\n return key;\n }\n }\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\nconst registerLazyLoadedDiagrams = (...diagrams2) => {\n for (const { id: id2, detector: detector2, loader: loader2 } of diagrams2) {\n addDetector(id2, detector2, loader2);\n }\n};\nconst loadRegisteredDiagrams = async () => {\n log$1.debug(`Loading registered diagrams`);\n const results = await Promise.allSettled(\n Object.entries(detectors).map(async ([key, { detector: detector2, loader: loader2 }]) => {\n if (loader2) {\n try {\n getDiagram(key);\n } catch (error) {\n try {\n const { diagram: diagram2, id: id2 } = await loader2();\n registerDiagram(id2, diagram2, detector2);\n } catch (err) {\n log$1.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);\n delete detectors[key];\n throw err;\n }\n }\n }\n })\n );\n const failed = results.filter((result) => result.status === \"rejected\");\n if (failed.length > 0) {\n log$1.error(`Failed to load ${failed.length} external diagrams`);\n for (const res of failed) {\n log$1.error(res);\n }\n throw new Error(`Failed to load ${failed.length} external diagrams`);\n }\n};\nconst addDetector = (key, detector2, loader2) => {\n if (detectors[key]) {\n log$1.error(`Detector with key ${key} already exists`);\n } else {\n detectors[key] = { detector: detector2, loader: loader2 };\n }\n log$1.debug(`Detector with key ${key} added${loader2 ? \" with loader\" : \"\"}`);\n};\nconst getDiagramLoader = (key) => {\n return detectors[key].loader;\n};\nconst ZERO_WIDTH_SPACE = \"​\";\nconst d3CurveTypes = {\n curveBasis: d3__WEBPACK_IMPORTED_MODULE_3__.curveBasis,\n curveBasisClosed: d3__WEBPACK_IMPORTED_MODULE_3__.curveBasisClosed,\n curveBasisOpen: d3__WEBPACK_IMPORTED_MODULE_3__.curveBasisOpen,\n curveBumpX: d3__WEBPACK_IMPORTED_MODULE_3__.curveBumpX,\n curveBumpY: d3__WEBPACK_IMPORTED_MODULE_3__.curveBumpY,\n curveBundle: d3__WEBPACK_IMPORTED_MODULE_3__.curveBundle,\n curveCardinalClosed: d3__WEBPACK_IMPORTED_MODULE_3__.curveCardinalClosed,\n curveCardinalOpen: d3__WEBPACK_IMPORTED_MODULE_3__.curveCardinalOpen,\n curveCardinal: d3__WEBPACK_IMPORTED_MODULE_3__.curveCardinal,\n curveCatmullRomClosed: d3__WEBPACK_IMPORTED_MODULE_3__.curveCatmullRomClosed,\n curveCatmullRomOpen: d3__WEBPACK_IMPORTED_MODULE_3__.curveCatmullRomOpen,\n curveCatmullRom: d3__WEBPACK_IMPORTED_MODULE_3__.curveCatmullRom,\n curveLinear: d3__WEBPACK_IMPORTED_MODULE_3__.curveLinear,\n curveLinearClosed: d3__WEBPACK_IMPORTED_MODULE_3__.curveLinearClosed,\n curveMonotoneX: d3__WEBPACK_IMPORTED_MODULE_3__.curveMonotoneX,\n curveMonotoneY: d3__WEBPACK_IMPORTED_MODULE_3__.curveMonotoneY,\n curveNatural: d3__WEBPACK_IMPORTED_MODULE_3__.curveNatural,\n curveStep: d3__WEBPACK_IMPORTED_MODULE_3__.curveStep,\n curveStepAfter: d3__WEBPACK_IMPORTED_MODULE_3__.curveStepAfter,\n curveStepBefore: d3__WEBPACK_IMPORTED_MODULE_3__.curveStepBefore\n};\nconst directive = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst detectInit = function(text, config2) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init2) => init2.args);\n directiveSanitizer(args);\n results = assignWithDepth$1(results, [...args]);\n } else {\n results = inits.args;\n }\n if (results) {\n let type2 = detectType(text, config2);\n [\"config\"].forEach((prop) => {\n if (results[prop] !== void 0) {\n if (type2 === \"flowchart-v2\") {\n type2 = \"flowchart\";\n }\n results[type2] = results[prop];\n delete results[prop];\n }\n });\n }\n return results;\n};\nconst detectDirective = function(text, type2 = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log$1.debug(\n `Detecting diagram directive${type2 !== null ? \" type:\" + type2 : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directive.exec(text)) !== null) {\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n if (match && !type2 || type2 && match[1] && match[1].match(type2) || type2 && match[2] && match[2].match(type2)) {\n const type22 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type22, args });\n }\n }\n if (result.length === 0) {\n result.push({ type: text, args: null });\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log$1.error(\n `ERROR: ${error.message} - Unable to parse directive\n ${type2 !== null ? \" type:\" + type2 : \"\"} based on the text:${text}`\n );\n return { type: null, args: null };\n }\n};\nconst isSubstringInArray = function(str2, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str2)) {\n return i;\n }\n }\n return -1;\n};\nfunction interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] || defaultCurve;\n}\nfunction formatUrl(linkStr, config2) {\n const url = linkStr.trim();\n if (url) {\n if (config2.securityLevel !== \"loose\") {\n return (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_2__.sanitizeUrl)(url);\n }\n return url;\n }\n}\nconst runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n return;\n }\n }\n obj[fnName](...params);\n};\nfunction distance(p1, p2) {\n return p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n}\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n let remainingDistance = totalDistance / 2;\n let center = void 0;\n prevPoint = void 0;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n center = prevPoint;\n }\n if (distanceRatio >= 1) {\n center = { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n return center;\n}\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n let prevPoint;\n log$1.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = void 0;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n center = prevPoint;\n }\n if (distanceRatio >= 1) {\n center = { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n let points = JSON.parse(JSON.stringify(_points));\n let prevPoint;\n log$1.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points = points.reverse();\n }\n points.forEach((point) => {\n prevPoint = point;\n });\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n let remainingDistance = distanceToCardinalityPoint;\n let center;\n prevPoint = void 0;\n points.forEach((point) => {\n if (prevPoint && !center) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n center = prevPoint;\n }\n if (distanceRatio >= 1) {\n center = { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n prevPoint = point;\n });\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n }\n if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n }\n if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n }\n return cardinalityPosition;\n}\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\nlet cnt = 0;\nconst generateId = () => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n};\nfunction makeid(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nconst random = (options) => {\n return makeid(options.length);\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0\n };\n};\nconst drawSimpleText = function(elem, textData) {\n const nText = textData.text.replace(common$1.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.style(\"text-anchor\", textData.anchor);\n textElem.style(\"font-family\", textData.fontFamily);\n textElem.style(\"font-size\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.attr(\"fill\", textData.fill);\n span.text(nText);\n return textElem;\n};\nconst wrapLabel = (0,lodash_es_memoize_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(\n (label, maxWidth, config2) => {\n if (!label) {\n return label;\n }\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"
\" },\n config2\n );\n if (common$1.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(\" \");\n const completedLines = [];\n let nextLine = \"\";\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config2);\n const nextLineLength = calculateTextWidth(nextLine, config2);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config2);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(\" \");\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== \"\").join(config2.joinWith);\n },\n (label, maxWidth, config2) => `${label}${maxWidth}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}${config2.joinWith}`\n);\nconst breakString = (0,lodash_es_memoize_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(\n (word, maxWidth, hyphenCharacter = \"-\", config2) => {\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config2\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config2);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = \"\";\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = \"-\", config2) => `${word}${maxWidth}${hyphenCharacter}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nfunction calculateTextHeight(text, config2) {\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 15 },\n config2\n );\n return calculateTextDimensions(text, config2).height;\n}\nfunction calculateTextWidth(text, config2) {\n config2 = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: \"Arial\" }, config2);\n return calculateTextDimensions(text, config2).width;\n}\nconst calculateTextDimensions = (0,lodash_es_memoize_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(\n (text, config2) => {\n config2 = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: \"Arial\" }, config2);\n const { fontSize, fontFamily, fontWeight } = config2;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common$1.lineBreakRegex);\n const dims = [];\n const body = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cheight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n dims.push(dim);\n }\n g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config2) => `${text}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nconst initIdGenerator = class iterator {\n constructor(deterministic, seed) {\n this.deterministic = deterministic;\n this.seed = seed;\n this.count = seed ? seed.length : 0;\n }\n next() {\n if (!this.deterministic) {\n return Date.now();\n }\n return this.count++;\n }\n};\nlet decoder;\nconst entityDecode = function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\nconst directiveSanitizer = (args) => {\n log$1.debug(\"directiveSanitizer called with\", args);\n if (typeof args === \"object\") {\n if (args.length) {\n args.forEach((arg) => directiveSanitizer(arg));\n } else {\n Object.keys(args).forEach((key) => {\n log$1.debug(\"Checking key\", key);\n if (key.startsWith(\"__\")) {\n log$1.debug(\"sanitize deleting __ option\", key);\n delete args[key];\n }\n if (key.includes(\"proto\")) {\n log$1.debug(\"sanitize deleting proto option\", key);\n delete args[key];\n }\n if (key.includes(\"constr\")) {\n log$1.debug(\"sanitize deleting constr option\", key);\n delete args[key];\n }\n if (key.includes(\"themeCSS\")) {\n log$1.debug(\"sanitizing themeCss option\");\n args[key] = sanitizeCss(args[key]);\n }\n if (key.includes(\"fontFamily\")) {\n log$1.debug(\"sanitizing fontFamily option\");\n args[key] = sanitizeCss(args[key]);\n }\n if (key.includes(\"altFontFamily\")) {\n log$1.debug(\"sanitizing altFontFamily option\");\n args[key] = sanitizeCss(args[key]);\n }\n if (!configKeys.includes(key)) {\n log$1.debug(\"sanitize deleting option\", key);\n delete args[key];\n } else {\n if (typeof args[key] === \"object\") {\n log$1.debug(\"sanitize deleting object\", key);\n directiveSanitizer(args[key]);\n }\n }\n });\n }\n }\n if (args.themeVariables) {\n const kArr = Object.keys(args.themeVariables);\n for (const k of kArr) {\n const val = args.themeVariables[k];\n if (val && val.match && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = \"\";\n }\n }\n }\n log$1.debug(\"After sanitization\", args);\n};\nconst sanitizeCss = (str2) => {\n let startCnt = 0;\n let endCnt = 0;\n for (const element of str2) {\n if (startCnt < endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n if (element === \"{\") {\n startCnt++;\n } else if (element === \"}\") {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n return str2;\n};\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\nfunction getErrorMessage(error) {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\nconst insertTitle = (parent, cssClass, titleTopMargin, title2) => {\n if (!title2) {\n return;\n }\n const bounds = parent.node().getBBox();\n parent.append(\"text\").text(title2).attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n};\nconst parseFontSize = (fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize, 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\nconst utils = {\n assignWithDepth: assignWithDepth$1,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n initIdGenerator,\n directiveSanitizer,\n sanitizeCss,\n insertTitle,\n parseFontSize\n};\nconst version = \"10.2.3\";\nconst id$i = \"c4\";\nconst detector$i = (txt) => {\n return txt.match(/^\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/) !== null;\n};\nconst loader$i = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./c4Diagram-9cddb37f.js */ \"../../../node_modules/mermaid/dist/c4Diagram-9cddb37f.js\"));\n return { id: id$i, diagram: diagram2 };\n};\nconst plugin$i = {\n id: id$i,\n detector: detector$i,\n loader: loader$i\n};\nconst c4 = plugin$i;\nconst id$h = \"flowchart\";\nconst detector$h = (txt, config2) => {\n var _a, _b;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n return txt.match(/^\\s*graph/) !== null;\n};\nconst loader$h = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./flowDiagram-93327f21.js */ \"../../../node_modules/mermaid/dist/flowDiagram-93327f21.js\"));\n return { id: id$h, diagram: diagram2 };\n};\nconst plugin$h = {\n id: id$h,\n detector: detector$h,\n loader: loader$h\n};\nconst flowchart = plugin$h;\nconst id$g = \"flowchart-v2\";\nconst detector$g = (txt, config2) => {\n var _a, _b, _c;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-d3\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n if (txt.match(/^\\s*graph/) !== null && ((_c = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _c.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return txt.match(/^\\s*flowchart/) !== null;\n};\nconst loader$g = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./flowDiagram-v2-476db779.js */ \"../../../node_modules/mermaid/dist/flowDiagram-v2-476db779.js\"));\n return { id: id$g, diagram: diagram2 };\n};\nconst plugin$g = {\n id: id$g,\n detector: detector$g,\n loader: loader$g\n};\nconst flowchartV2 = plugin$g;\nconst id$f = \"er\";\nconst detector$f = (txt) => {\n return txt.match(/^\\s*erDiagram/) !== null;\n};\nconst loader$f = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./erDiagram-f6946109.js */ \"../../../node_modules/mermaid/dist/erDiagram-f6946109.js\"));\n return { id: id$f, diagram: diagram2 };\n};\nconst plugin$f = {\n id: id$f,\n detector: detector$f,\n loader: loader$f\n};\nconst er = plugin$f;\nconst id$e = \"gitGraph\";\nconst detector$e = (txt) => {\n return txt.match(/^\\s*gitGraph/) !== null;\n};\nconst loader$e = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./gitGraphDiagram-1e960c50.js */ \"../../../node_modules/mermaid/dist/gitGraphDiagram-1e960c50.js\"));\n return { id: id$e, diagram: diagram2 };\n};\nconst plugin$e = {\n id: id$e,\n detector: detector$e,\n loader: loader$e\n};\nconst git = plugin$e;\nconst id$d = \"gantt\";\nconst detector$d = (txt) => {\n return txt.match(/^\\s*gantt/) !== null;\n};\nconst loader$d = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./ganttDiagram-7ce12d6b.js */ \"../../../node_modules/mermaid/dist/ganttDiagram-7ce12d6b.js\"));\n return { id: id$d, diagram: diagram2 };\n};\nconst plugin$d = {\n id: id$d,\n detector: detector$d,\n loader: loader$d\n};\nconst gantt = plugin$d;\nconst id$c = \"info\";\nconst detector$c = (txt) => {\n return txt.match(/^\\s*info/) !== null;\n};\nconst loader$c = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./infoDiagram-264bed3e.js */ \"../../../node_modules/mermaid/dist/infoDiagram-264bed3e.js\"));\n return { id: id$c, diagram: diagram2 };\n};\nconst plugin$c = {\n id: id$c,\n detector: detector$c,\n loader: loader$c\n};\nconst info = plugin$c;\nconst id$b = \"pie\";\nconst detector$b = (txt) => {\n return txt.match(/^\\s*pie/) !== null;\n};\nconst loader$b = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./pieDiagram-157505fe.js */ \"../../../node_modules/mermaid/dist/pieDiagram-157505fe.js\"));\n return { id: id$b, diagram: diagram2 };\n};\nconst plugin$b = {\n id: id$b,\n detector: detector$b,\n loader: loader$b\n};\nconst pie = plugin$b;\nconst id$a = \"quadrantChart\";\nconst detector$a = (txt) => {\n return txt.match(/^\\s*quadrantChart/) !== null;\n};\nconst loader$a = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./quadrantDiagram-fd70f2d0.js */ \"../../../node_modules/mermaid/dist/quadrantDiagram-fd70f2d0.js\"));\n return { id: id$a, diagram: diagram2 };\n};\nconst plugin$a = {\n id: id$a,\n detector: detector$a,\n loader: loader$a\n};\nconst quadrantChart = plugin$a;\nconst id$9 = \"requirement\";\nconst detector$9 = (txt) => {\n return txt.match(/^\\s*requirement(Diagram)?/) !== null;\n};\nconst loader$9 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./requirementDiagram-19c99588.js */ \"../../../node_modules/mermaid/dist/requirementDiagram-19c99588.js\"));\n return { id: id$9, diagram: diagram2 };\n};\nconst plugin$9 = {\n id: id$9,\n detector: detector$9,\n loader: loader$9\n};\nconst requirement = plugin$9;\nconst id$8 = \"sequence\";\nconst detector$8 = (txt) => {\n return txt.match(/^\\s*sequenceDiagram/) !== null;\n};\nconst loader$8 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./sequenceDiagram-5dfd0049.js */ \"../../../node_modules/mermaid/dist/sequenceDiagram-5dfd0049.js\"));\n return { id: id$8, diagram: diagram2 };\n};\nconst plugin$8 = {\n id: id$8,\n detector: detector$8,\n loader: loader$8\n};\nconst sequence = plugin$8;\nconst id$7 = \"class\";\nconst detector$7 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return txt.match(/^\\s*classDiagram/) !== null;\n};\nconst loader$7 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./classDiagram-bc733c3b.js */ \"../../../node_modules/mermaid/dist/classDiagram-bc733c3b.js\"));\n return { id: id$7, diagram: diagram2 };\n};\nconst plugin$7 = {\n id: id$7,\n detector: detector$7,\n loader: loader$7\n};\nconst classDiagram = plugin$7;\nconst id$6 = \"classDiagram\";\nconst detector$6 = (txt, config2) => {\n var _a;\n if (txt.match(/^\\s*classDiagram/) !== null && ((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return txt.match(/^\\s*classDiagram-v2/) !== null;\n};\nconst loader$6 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./classDiagram-v2-8931bdaf.js */ \"../../../node_modules/mermaid/dist/classDiagram-v2-8931bdaf.js\"));\n return { id: id$6, diagram: diagram2 };\n};\nconst plugin$6 = {\n id: id$6,\n detector: detector$6,\n loader: loader$6\n};\nconst classDiagramV2 = plugin$6;\nconst id$5 = \"state\";\nconst detector$5 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return txt.match(/^\\s*stateDiagram/) !== null;\n};\nconst loader$5 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./stateDiagram-133e3642.js */ \"../../../node_modules/mermaid/dist/stateDiagram-133e3642.js\"));\n return { id: id$5, diagram: diagram2 };\n};\nconst plugin$5 = {\n id: id$5,\n detector: detector$5,\n loader: loader$5\n};\nconst state = plugin$5;\nconst id$4 = \"stateDiagram\";\nconst detector$4 = (text, config2) => {\n var _a, _b;\n if (text.match(/^\\s*stateDiagram-v2/) !== null) {\n return true;\n }\n if (text.match(/^\\s*stateDiagram/) && ((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n if (text.match(/^\\s*stateDiagram/) && ((_b = config2 == null ? void 0 : config2.state) == null ? void 0 : _b.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return false;\n};\nconst loader$4 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./stateDiagram-v2-6371a76b.js */ \"../../../node_modules/mermaid/dist/stateDiagram-v2-6371a76b.js\"));\n return { id: id$4, diagram: diagram2 };\n};\nconst plugin$4 = {\n id: id$4,\n detector: detector$4,\n loader: loader$4\n};\nconst stateV2 = plugin$4;\nconst id$3 = \"journey\";\nconst detector$3 = (txt) => {\n return txt.match(/^\\s*journey/) !== null;\n};\nconst loader$3 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./journeyDiagram-31be0096.js */ \"../../../node_modules/mermaid/dist/journeyDiagram-31be0096.js\"));\n return { id: id$3, diagram: diagram2 };\n};\nconst plugin$3 = {\n id: id$3,\n detector: detector$3,\n loader: loader$3\n};\nconst journey = plugin$3;\nconst getStyles = () => ``;\nconst styles = getStyles;\nconst setConf = function() {\n};\nconst draw = (_text, id2, mermaidVersion) => {\n try {\n log$1.debug(\"Renering svg for syntax error\\n\");\n const svg = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(\"#\" + id2);\n const g = svg.append(\"g\");\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z\"\n );\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1440).attr(\"y\", 250).attr(\"font-size\", \"150px\").style(\"text-anchor\", \"middle\").text(\"Syntax error in text\");\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1250).attr(\"y\", 400).attr(\"font-size\", \"100px\").style(\"text-anchor\", \"middle\").text(\"mermaid version \" + mermaidVersion);\n svg.attr(\"height\", 100);\n svg.attr(\"width\", 500);\n svg.attr(\"viewBox\", \"768 0 912 512\");\n } catch (e) {\n log$1.error(\"Error while rendering info diagram\");\n log$1.error(getErrorMessage(e));\n }\n};\nconst errorRenderer = {\n setConf,\n draw\n};\nconst diagram = {\n db: {\n clear: () => {\n }\n },\n styles,\n renderer: errorRenderer,\n parser: {\n parser: { yy: {} },\n parse: () => {\n }\n },\n init: () => {\n }\n};\nconst errorDiagram = diagram;\nconst id$2 = \"flowchart-elk\";\nconst detector$2 = (txt, config2) => {\n var _a;\n if (\n // If diagram explicitly states flowchart-elk\n txt.match(/^\\s*flowchart-elk/) || // If a flowchart/graph diagram has their default renderer set to elk\n txt.match(/^\\s*flowchart|graph/) && ((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"elk\"\n ) {\n return true;\n }\n return false;\n};\nconst loader$2 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./flowchart-elk-definition-5082a990.js */ \"../../../node_modules/mermaid/dist/flowchart-elk-definition-5082a990.js\"));\n return { id: id$2, diagram: diagram2 };\n};\nconst plugin$2 = {\n id: id$2,\n detector: detector$2,\n loader: loader$2\n};\nconst flowchartElk = plugin$2;\nconst id$1 = \"timeline\";\nconst detector$1 = (txt) => {\n return txt.match(/^\\s*timeline/) !== null;\n};\nconst loader$1 = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./timeline-definition-5ed366f4.js */ \"../../../node_modules/mermaid/dist/timeline-definition-5ed366f4.js\"));\n return { id: id$1, diagram: diagram2 };\n};\nconst plugin$1 = {\n id: id$1,\n detector: detector$1,\n loader: loader$1\n};\nconst timeline = plugin$1;\nconst id = \"mindmap\";\nconst detector = (txt) => {\n return txt.match(/^\\s*mindmap/) !== null;\n};\nconst loader = async () => {\n const { diagram: diagram2 } = await __webpack_require__.e(/*! import() */ \"vendor\").then(__webpack_require__.bind(__webpack_require__, /*! ./mindmap-definition-4fc2557c.js */ \"../../../node_modules/mermaid/dist/mindmap-definition-4fc2557c.js\"));\n return { id, diagram: diagram2 };\n};\nconst plugin = {\n id,\n detector,\n loader\n};\nconst mindmap = plugin;\nlet hasLoadedDiagrams = false;\nconst addDiagrams = () => {\n if (hasLoadedDiagrams) {\n return;\n }\n hasLoadedDiagrams = true;\n registerDiagram(\"error\", errorDiagram, (text) => {\n return text.toLowerCase().trim() === \"error\";\n });\n registerDiagram(\n \"---\",\n // --- diagram type may appear if YAML front-matter is not parsed correctly\n {\n db: {\n clear: () => {\n }\n },\n styles: {},\n // should never be used\n renderer: {},\n // should never be used\n parser: {\n parser: { yy: {} },\n parse: () => {\n throw new Error(\n \"Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks\"\n );\n }\n },\n init: () => null\n // no op\n },\n (text) => {\n return text.toLowerCase().trimStart().startsWith(\"---\");\n }\n );\n registerLazyLoadedDiagrams(\n c4,\n classDiagramV2,\n classDiagram,\n er,\n gantt,\n info,\n pie,\n requirement,\n sequence,\n flowchartElk,\n flowchartV2,\n flowchart,\n mindmap,\n timeline,\n git,\n stateV2,\n state,\n journey,\n quadrantChart\n );\n};\nconst cleanupComments = (text) => {\n return text.trimStart().replace(/^\\s*%%(?!{)[^\\n]+\\n?/gm, \"\");\n};\nclass Diagram {\n constructor(text) {\n var _a, _b;\n this.text = text;\n this.type = \"graph\";\n this.text += \"\\n\";\n const cnf = getConfig$1();\n try {\n this.type = detectType(text, cnf);\n } catch (e) {\n this.type = \"error\";\n this.detectError = e;\n }\n const diagram2 = getDiagram(this.type);\n log$1.debug(\"Type \" + this.type);\n this.db = diagram2.db;\n (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a);\n this.renderer = diagram2.renderer;\n this.parser = diagram2.parser;\n const originalParse = this.parser.parse.bind(this.parser);\n this.parser.parse = (text2) => originalParse(cleanupComments(extractFrontMatter(text2, this.db)));\n this.parser.parser.yy = this.db;\n if (diagram2.init) {\n diagram2.init(cnf);\n log$1.info(\"Initialized diagram \" + this.type, cnf);\n }\n this.parse();\n }\n parse() {\n var _a, _b;\n if (this.detectError) {\n throw this.detectError;\n }\n (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a);\n this.parser.parse(this.text);\n }\n async render(id2, version2) {\n await this.renderer.draw(this.text, id2, version2, this);\n }\n getParser() {\n return this.parser;\n }\n getType() {\n return this.type;\n }\n}\nconst getDiagramFromText = async (text) => {\n const type2 = detectType(text, getConfig$1());\n try {\n getDiagram(type2);\n } catch (error) {\n const loader2 = getDiagramLoader(type2);\n if (!loader2) {\n throw new UnknownDiagramError(`Diagram ${type2} not found.`);\n }\n const { id: id2, diagram: diagram2 } = await loader2();\n registerDiagram(id2, diagram2);\n }\n return new Diagram(text);\n};\nlet interactionFunctions = [];\nconst addFunction = (func) => {\n interactionFunctions.push(func);\n};\nconst attachFunctions = () => {\n interactionFunctions.forEach((f) => {\n f();\n });\n interactionFunctions = [];\n};\nconst SVG_ROLE = \"graphics-document document\";\nfunction setA11yDiagramInfo(svg, diagramType) {\n svg.attr(\"role\", SVG_ROLE);\n if (!(0,lodash_es_isEmpty_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(diagramType)) {\n svg.attr(\"aria-roledescription\", diagramType);\n }\n}\nfunction addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {\n if (svg.insert === void 0) {\n return;\n }\n if (a11yTitle || a11yDesc) {\n if (a11yDesc) {\n const descId = \"chart-desc-\" + baseId;\n svg.attr(\"aria-describedby\", descId);\n svg.insert(\"desc\", \":first-child\").attr(\"id\", descId).text(a11yDesc);\n }\n if (a11yTitle) {\n const titleId = \"chart-title-\" + baseId;\n svg.attr(\"aria-labelledby\", titleId);\n svg.insert(\"title\", \":first-child\").attr(\"id\", titleId).text(a11yTitle);\n }\n } else {\n return;\n }\n}\nconst CLASSDEF_DIAGRAMS = [\n \"graph\",\n \"flowchart\",\n \"flowchart-v2\",\n \"flowchart-elk\",\n \"stateDiagram\",\n \"stateDiagram-v2\"\n];\nconst MAX_TEXTLENGTH = 5e4;\nconst MAX_TEXTLENGTH_EXCEEDED_MSG = \"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\";\nconst SECURITY_LVL_SANDBOX = \"sandbox\";\nconst SECURITY_LVL_LOOSE = \"loose\";\nconst XMLNS_SVG_STD = \"http://www.w3.org/2000/svg\";\nconst XMLNS_XLINK_STD = \"http://www.w3.org/1999/xlink\";\nconst XMLNS_XHTML_STD = \"http://www.w3.org/1999/xhtml\";\nconst IFRAME_WIDTH = \"100%\";\nconst IFRAME_HEIGHT = \"100%\";\nconst IFRAME_STYLES = \"border:0;margin:0;\";\nconst IFRAME_BODY_STYLE = \"margin:0\";\nconst IFRAME_SANDBOX_OPTS = \"allow-top-navigation-by-user-activation allow-popups\";\nconst IFRAME_NOT_SUPPORTED_MSG = 'The \"iframe\" tag is not supported by your browser.';\nconst DOMPURIFY_TAGS = [\"foreignobject\"];\nconst DOMPURIFY_ATTR = [\"dominant-baseline\"];\nasync function parse$1(text, parseOptions) {\n addDiagrams();\n try {\n const diagram2 = await getDiagramFromText(text);\n diagram2.parse();\n } catch (error) {\n if (parseOptions == null ? void 0 : parseOptions.suppressErrors) {\n return false;\n }\n throw error;\n }\n return true;\n}\nconst encodeEntities = function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"fl°°\" + innerTxt + \"¶ß\";\n } else {\n return \"fl°\" + innerTxt + \"¶ß\";\n }\n });\n return txt;\n};\nconst decodeEntities = function(text) {\n return text.replace(/fl°°/g, \"&#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\nconst cssImportantStyles = (cssClass, element, cssClasses = []) => {\n return `\n.${cssClass} ${element} { ${cssClasses.join(\" !important; \")} !important; }`;\n};\nconst createCssStyles = (config2, graphType, classDefs = {}) => {\n var _a;\n let cssStyles = \"\";\n if (config2.themeCSS !== void 0) {\n cssStyles += `\n${config2.themeCSS}`;\n }\n if (config2.fontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-font-family: ${config2.fontFamily}}`;\n }\n if (config2.altFontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-alt-font-family: ${config2.altFontFamily}}`;\n }\n if (!(0,lodash_es_isEmpty_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(classDefs) && CLASSDEF_DIAGRAMS.includes(graphType)) {\n const htmlLabels = config2.htmlLabels || ((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels);\n const cssHtmlElements = [\"> *\", \"span\"];\n const cssShapeElements = [\"rect\", \"polygon\", \"ellipse\", \"circle\", \"path\"];\n const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;\n for (const classId in classDefs) {\n const styleClassDef = classDefs[classId];\n if (!(0,lodash_es_isEmpty_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(styleClassDef.styles)) {\n cssElements.forEach((cssElement) => {\n cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles);\n });\n }\n if (!(0,lodash_es_isEmpty_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(styleClassDef.textStyles)) {\n cssStyles += cssImportantStyles(styleClassDef.id, \"tspan\", styleClassDef.textStyles);\n }\n }\n }\n return cssStyles;\n};\nconst createUserStyles = (config2, graphType, classDefs, svgId) => {\n const userCSSstyles = createCssStyles(config2, graphType, classDefs);\n const allStyles = getStyles$2(graphType, userCSSstyles, config2.themeVariables);\n return (0,stylis__WEBPACK_IMPORTED_MODULE_13__.serialize)((0,stylis__WEBPACK_IMPORTED_MODULE_14__.compile)(`${svgId}{${allStyles}}`), stylis__WEBPACK_IMPORTED_MODULE_13__.stringify);\n};\nconst cleanUpSvgCode = (svgCode = \"\", inSandboxMode, useArrowMarkerUrls) => {\n let cleanedUpSvg = svgCode;\n if (!useArrowMarkerUrls && !inSandboxMode) {\n cleanedUpSvg = cleanedUpSvg.replace(\n /marker-end=\"url\\([\\d+./:=?A-Za-z-]*?#/g,\n 'marker-end=\"url(#'\n );\n }\n cleanedUpSvg = decodeEntities(cleanedUpSvg);\n cleanedUpSvg = cleanedUpSvg.replace(/
/g, \"
\");\n return cleanedUpSvg;\n};\nconst putIntoIFrame = (svgCode = \"\", svgElement) => {\n const height = svgElement ? svgElement.viewBox.baseVal.height + \"px\" : IFRAME_HEIGHT;\n const base64encodedSrc = btoa('' + svgCode + \"\");\n return ``;\n};\nconst appendDivSvgG = (parentRoot, id2, enclosingDivId, divStyle, svgXlink) => {\n const enclosingDiv = parentRoot.append(\"div\");\n enclosingDiv.attr(\"id\", enclosingDivId);\n if (divStyle) {\n enclosingDiv.attr(\"style\", divStyle);\n }\n const svgNode = enclosingDiv.append(\"svg\").attr(\"id\", id2).attr(\"width\", \"100%\").attr(\"xmlns\", XMLNS_SVG_STD);\n if (svgXlink) {\n svgNode.attr(\"xmlns:xlink\", svgXlink);\n }\n svgNode.append(\"g\");\n return parentRoot;\n};\nfunction sandboxedIframe(parentNode, iFrameId) {\n return parentNode.append(\"iframe\").attr(\"id\", iFrameId).attr(\"style\", \"width: 100%; height: 100%;\").attr(\"sandbox\", \"\");\n}\nconst removeExistingElements = (doc, id2, divId, iFrameId) => {\n var _a, _b, _c;\n (_a = doc.getElementById(id2)) == null ? void 0 : _a.remove();\n (_b = doc.getElementById(divId)) == null ? void 0 : _b.remove();\n (_c = doc.getElementById(iFrameId)) == null ? void 0 : _c.remove();\n};\nconst render$1 = async function(id2, text, svgContainingElement) {\n var _a, _b, _c, _d;\n addDiagrams();\n reset();\n const graphInit = utils.detectInit(text);\n if (graphInit) {\n directiveSanitizer(graphInit);\n addDirective(graphInit);\n }\n const config2 = getConfig$1();\n log$1.debug(config2);\n if (text.length > ((config2 == null ? void 0 : config2.maxTextSize) ?? MAX_TEXTLENGTH)) {\n text = MAX_TEXTLENGTH_EXCEEDED_MSG;\n }\n text = text.replace(/\\r\\n?/g, \"\\n\");\n text = text.replace(\n /<(\\w+)([^>]*)>/g,\n (match, tag, attributes) => \"<\" + tag + attributes.replace(/=\"([^\"]*)\"/g, \"='$1'\") + \">\"\n );\n const idSelector = \"#\" + id2;\n const iFrameID = \"i\" + id2;\n const iFrameID_selector = \"#\" + iFrameID;\n const enclosingDivID = \"d\" + id2;\n const enclosingDivID_selector = \"#\" + enclosingDivID;\n let root = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(\"body\");\n const isSandboxed = config2.securityLevel === SECURITY_LVL_SANDBOX;\n const isLooseSecurityLevel = config2.securityLevel === SECURITY_LVL_LOOSE;\n const fontFamily = config2.fontFamily;\n if (svgContainingElement !== void 0) {\n if (svgContainingElement) {\n svgContainingElement.innerHTML = \"\";\n }\n if (isSandboxed) {\n const iframe = sandboxedIframe((0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(svgContainingElement), iFrameID);\n root = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(svgContainingElement);\n }\n appendDivSvgG(root, id2, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);\n } else {\n removeExistingElements(document, id2, enclosingDivID, iFrameID);\n if (isSandboxed) {\n const iframe = sandboxedIframe((0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(\"body\"), iFrameID);\n root = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(\"body\");\n }\n appendDivSvgG(root, id2, enclosingDivID);\n }\n text = encodeEntities(text);\n let diag;\n let parseEncounteredException;\n try {\n diag = await getDiagramFromText(text);\n } catch (error) {\n diag = new Diagram(\"error\");\n parseEncounteredException = error;\n }\n const element = root.select(enclosingDivID_selector).node();\n const graphType = diag.type;\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n const diagramClassDefs = CLASSDEF_DIAGRAMS.includes(graphType) ? diag.renderer.getClasses(text, diag) : {};\n const rules = createUserStyles(\n config2,\n graphType,\n // @ts-ignore convert renderer to TS.\n diagramClassDefs,\n idSelector\n );\n const style1 = document.createElement(\"style\");\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n try {\n await diag.renderer.draw(text, id2, version, diag);\n } catch (e) {\n errorRenderer.draw(text, id2, version);\n throw e;\n }\n const svgNode = root.select(`${enclosingDivID_selector} svg`);\n const a11yTitle = (_b = (_a = diag.db).getAccTitle) == null ? void 0 : _b.call(_a);\n const a11yDescr = (_d = (_c = diag.db).getAccDescription) == null ? void 0 : _d.call(_c);\n addA11yInfo(graphType, svgNode, a11yTitle, a11yDescr);\n root.select(`[id=\"${id2}\"]`).selectAll(\"foreignobject > *\").attr(\"xmlns\", XMLNS_XHTML_STD);\n let svgCode = root.select(enclosingDivID_selector).node().innerHTML;\n log$1.debug(\"config.arrowMarkerAbsolute\", config2.arrowMarkerAbsolute);\n svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config2.arrowMarkerAbsolute));\n if (isSandboxed) {\n const svgEl = root.select(enclosingDivID_selector + \" svg\").node();\n svgCode = putIntoIFrame(svgCode, svgEl);\n } else if (!isLooseSecurityLevel) {\n svgCode = dompurify__WEBPACK_IMPORTED_MODULE_4__.sanitize(svgCode, {\n ADD_TAGS: DOMPURIFY_TAGS,\n ADD_ATTR: DOMPURIFY_ATTR\n });\n }\n attachFunctions();\n if (parseEncounteredException) {\n throw parseEncounteredException;\n }\n const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;\n const node = (0,d3__WEBPACK_IMPORTED_MODULE_3__.select)(tmpElementSelector).node();\n if (node && \"remove\" in node) {\n node.remove();\n }\n return {\n svg: svgCode,\n bindFunctions: diag.db.bindFunctions\n };\n};\nfunction initialize$1(options = {}) {\n var _a;\n if ((options == null ? void 0 : options.fontFamily) && !((_a = options.themeVariables) == null ? void 0 : _a.fontFamily)) {\n if (!options.themeVariables) {\n options.themeVariables = {};\n }\n options.themeVariables.fontFamily = options.fontFamily;\n }\n saveConfigFromInitialize(options);\n if ((options == null ? void 0 : options.theme) && options.theme in theme) {\n options.themeVariables = theme[options.theme].getThemeVariables(\n options.themeVariables\n );\n } else if (options) {\n options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n const config2 = typeof options === \"object\" ? setSiteConfig(options) : getSiteConfig();\n setLogLevel$1(config2.logLevel);\n addDiagrams();\n}\nfunction addA11yInfo(graphType, svgNode, a11yTitle, a11yDescr) {\n setA11yDiagramInfo(svgNode, graphType);\n addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr(\"id\"));\n}\nconst mermaidAPI = Object.freeze({\n render: render$1,\n parse: parse$1,\n parseDirective: parseDirective$1,\n getDiagramFromText,\n initialize: initialize$1,\n getConfig: getConfig$1,\n setConfig,\n getSiteConfig,\n updateSiteConfig,\n reset: () => {\n reset();\n },\n globalReset: () => {\n reset(defaultConfig);\n },\n defaultConfig\n});\nsetLogLevel$1(getConfig$1().logLevel);\nreset(getConfig$1());\nconst handleError = (error, errors, parseError) => {\n log$1.warn(error);\n if (isDetailedError(error)) {\n if (parseError) {\n parseError(error.str, error.hash);\n }\n errors.push({ ...error, message: error.str, error });\n } else {\n if (parseError) {\n parseError(error);\n }\n if (error instanceof Error) {\n errors.push({\n str: error.message,\n message: error.message,\n hash: error.name,\n error\n });\n }\n }\n};\nconst run = async function(options = {\n querySelector: \".mermaid\"\n}) {\n try {\n await runThrowsErrors(options);\n } catch (e) {\n if (isDetailedError(e)) {\n log$1.error(e.str);\n }\n if (mermaid.parseError) {\n mermaid.parseError(e);\n }\n if (!options.suppressErrors) {\n log$1.error(\"Use the suppressErrors option to suppress these errors\");\n throw e;\n }\n }\n};\nconst runThrowsErrors = async function({ postRenderCallback, querySelector, nodes } = {\n querySelector: \".mermaid\"\n}) {\n const conf = mermaidAPI.getConfig();\n log$1.debug(`${!postRenderCallback ? \"No \" : \"\"}Callback function found`);\n let nodesToProcess;\n if (nodes) {\n nodesToProcess = nodes;\n } else if (querySelector) {\n nodesToProcess = document.querySelectorAll(querySelector);\n } else {\n throw new Error(\"Nodes and querySelector are both undefined\");\n }\n log$1.debug(`Found ${nodesToProcess.length} diagrams`);\n if ((conf == null ? void 0 : conf.startOnLoad) !== void 0) {\n log$1.debug(\"Start On Load: \" + (conf == null ? void 0 : conf.startOnLoad));\n mermaidAPI.updateSiteConfig({ startOnLoad: conf == null ? void 0 : conf.startOnLoad });\n }\n const idGenerator = new utils.initIdGenerator(conf.deterministicIds, conf.deterministicIDSeed);\n let txt;\n const errors = [];\n for (const element of Array.from(nodesToProcess)) {\n log$1.info(\"Rendering diagram: \" + element.id);\n /*! Check if previously processed */\n if (element.getAttribute(\"data-processed\")) {\n continue;\n }\n element.setAttribute(\"data-processed\", \"true\");\n const id2 = `mermaid-${idGenerator.next()}`;\n txt = element.innerHTML;\n txt = (0,ts_dedent__WEBPACK_IMPORTED_MODULE_0__.dedent)(utils.entityDecode(txt)).trim().replace(//gi, \"
\");\n const init2 = utils.detectInit(txt);\n if (init2) {\n log$1.debug(\"Detected early reinit: \", init2);\n }\n try {\n const { svg, bindFunctions } = await render(id2, txt, element);\n element.innerHTML = svg;\n if (postRenderCallback) {\n await postRenderCallback(id2);\n }\n if (bindFunctions) {\n bindFunctions(element);\n }\n } catch (error) {\n handleError(error, errors, mermaid.parseError);\n }\n }\n if (errors.length > 0) {\n throw errors[0];\n }\n};\nconst initialize = function(config2) {\n mermaidAPI.initialize(config2);\n};\nconst init = async function(config2, nodes, callback) {\n log$1.warn(\"mermaid.init is deprecated. Please use run instead.\");\n if (config2) {\n initialize(config2);\n }\n const runOptions = { postRenderCallback: callback, querySelector: \".mermaid\" };\n if (typeof nodes === \"string\") {\n runOptions.querySelector = nodes;\n } else if (nodes) {\n if (nodes instanceof HTMLElement) {\n runOptions.nodes = [nodes];\n } else {\n runOptions.nodes = nodes;\n }\n }\n await run(runOptions);\n};\nconst registerExternalDiagrams = async (diagrams2, {\n lazyLoad = true\n} = {}) => {\n registerLazyLoadedDiagrams(...diagrams2);\n if (lazyLoad === false) {\n await loadRegisteredDiagrams();\n }\n};\nconst contentLoaded = function() {\n if (mermaid.startOnLoad) {\n const { startOnLoad } = mermaidAPI.getConfig();\n if (startOnLoad) {\n mermaid.run().catch((err) => log$1.error(\"Mermaid failed to initialize\", err));\n }\n }\n};\nif (typeof document !== \"undefined\") {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\"load\", contentLoaded, false);\n}\nconst setParseErrorHandler = function(parseErrorHandler) {\n mermaid.parseError = parseErrorHandler;\n};\nconst executionQueue = [];\nlet executionQueueRunning = false;\nconst executeQueue = async () => {\n if (executionQueueRunning) {\n return;\n }\n executionQueueRunning = true;\n while (executionQueue.length > 0) {\n const f = executionQueue.shift();\n if (f) {\n try {\n await f();\n } catch (e) {\n log$1.error(\"Error executing queue\", e);\n }\n }\n }\n executionQueueRunning = false;\n};\nconst parse = async (text, parseOptions) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.parse(text, parseOptions).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst render = (id2, text, container) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.render(id2, text, container).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst mermaid = {\n startOnLoad: true,\n mermaidAPI,\n parse,\n render,\n init,\n run,\n registerExternalDiagrams,\n initialize,\n parseError: void 0,\n contentLoaded,\n setParseErrorHandler,\n detectType\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9tZXJtYWlkLWIwYWQyZGUxLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1DO0FBQ1Q7QUFDNEI7QUFDdVM7QUFDM1Q7QUFDcUM7QUFDNUI7QUFDWTtBQUNaO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxrQ0FBSztBQUNwQixjQUFjLE1BQU0sSUFBSSxPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQ0FBa0I7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxxQ0FBcUMsc0JBQXNCO0FBQzNELHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0NBQWtCO0FBQzdCLElBQUk7QUFDSixXQUFXLCtDQUFrQjtBQUM3QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsWUFBWTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFO0FBQzNFO0FBQ0EsMERBQTBEO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELGdCQUFnQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGVBQWU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDBCQUEwQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyx5QkFBeUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGdCQUFnQjtBQUNoQixlQUFlO0FBQ2YsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsZ0JBQWdCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixzR0FBc0csa0NBQWtDO0FBQ3hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGFBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsYUFBYTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFdBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLGdCQUFnQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsZ0JBQWdCO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxnQkFBZ0I7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLEVBQUU7QUFDekM7QUFDQSxzQ0FBc0MsRUFBRSxlQUFlLEVBQUUsWUFBWTtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixTQUFTO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxxQkFBcUI7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQSxnREFBZ0Qsa0JBQWtCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msa0JBQWtCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQsa0JBQWtCO0FBQ3JFO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLDhFQUE4RTtBQUM5RSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0lBQWdJO0FBQ2hJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsOERBQThELHNCQUFzQjtBQUNwRjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YscUVBQXFFO0FBQ3JFLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixnRUFBZ0U7QUFDaEUsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLCtEQUErRDtBQUMvRDtBQUNBLG9FQUFvRSwwQkFBMEI7QUFDOUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsMERBQTBELDBCQUEwQjtBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUFnRjtBQUNoRjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0JBQW9CLFFBQVEsb01BQW9DO0FBQzFFLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0JBQW9CLFFBQVEsME1BQXVDO0FBQzdFLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0JBQW9CLFFBQVEsb01BQW9DO0FBQzFFLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsb0JBQW9CLFFBQVEsME1BQXVDO0FBQzdFLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLG9CQUFvQixRQUFRLHdNQUFzQztBQUM1RSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwQ0FBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF3Q0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9tZXJtYWlkLWIwYWQyZGUxLmpzPzJiNjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVkZW50IH0gZnJvbSBcInRzLWRlZGVudFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgc2FuaXRpemVVcmwgfSBmcm9tIFwiQGJyYWludHJlZS9zYW5pdGl6ZS11cmxcIjtcbmltcG9ydCB7IHNlbGVjdCwgY3VydmVCYXNpcywgY3VydmVCYXNpc0Nsb3NlZCwgY3VydmVCYXNpc09wZW4sIGN1cnZlQnVtcFgsIGN1cnZlQnVtcFksIGN1cnZlQnVuZGxlLCBjdXJ2ZUNhcmRpbmFsQ2xvc2VkLCBjdXJ2ZUNhcmRpbmFsT3BlbiwgY3VydmVDYXJkaW5hbCwgY3VydmVDYXRtdWxsUm9tQ2xvc2VkLCBjdXJ2ZUNhdG11bGxSb21PcGVuLCBjdXJ2ZUNhdG11bGxSb20sIGN1cnZlTGluZWFyLCBjdXJ2ZUxpbmVhckNsb3NlZCwgY3VydmVNb25vdG9uZVgsIGN1cnZlTW9ub3RvbmVZLCBjdXJ2ZU5hdHVyYWwsIGN1cnZlU3RlcCwgY3VydmVTdGVwQWZ0ZXIsIGN1cnZlU3RlcEJlZm9yZSB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IERPTVB1cmlmeSBmcm9tIFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgeyBhZGp1c3QsIGludmVydCwgZGFya2VuLCBsaWdodGVuLCBpc0RhcmssIHJnYmEgfSBmcm9tIFwia2hyb21hXCI7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tIFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZSwgY29tcGlsZSwgc3RyaW5naWZ5IH0gZnJvbSBcInN0eWxpc1wiO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5jb25zdCBMRVZFTFMgPSB7XG4gIHRyYWNlOiAwLFxuICBkZWJ1ZzogMSxcbiAgaW5mbzogMixcbiAgd2FybjogMyxcbiAgZXJyb3I6IDQsXG4gIGZhdGFsOiA1XG59O1xuY29uc3QgbG9nJDEgPSB7XG4gIHRyYWNlOiAoLi4uX2FyZ3MpID0+IHtcbiAgfSxcbiAgZGVidWc6ICguLi5fYXJncykgPT4ge1xuICB9LFxuICBpbmZvOiAoLi4uX2FyZ3MpID0+IHtcbiAgfSxcbiAgd2FybjogKC4uLl9hcmdzKSA9PiB7XG4gIH0sXG4gIGVycm9yOiAoLi4uX2FyZ3MpID0+IHtcbiAgfSxcbiAgZmF0YWw6ICguLi5fYXJncykgPT4ge1xuICB9XG59O1xuY29uc3Qgc2V0TG9nTGV2ZWwkMSA9IGZ1bmN0aW9uKGxldmVsID0gXCJmYXRhbFwiKSB7XG4gIGxldCBudW1lcmljTGV2ZWwgPSBMRVZFTFMuZmF0YWw7XG4gIGlmICh0eXBlb2YgbGV2ZWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICBsZXZlbCA9IGxldmVsLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGxldmVsIGluIExFVkVMUykge1xuICAgICAgbnVtZXJpY0xldmVsID0gTEVWRUxTW2xldmVsXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxldmVsID09PSBcIm51bWJlclwiKSB7XG4gICAgbnVtZXJpY0xldmVsID0gbGV2ZWw7XG4gIH1cbiAgbG9nJDEudHJhY2UgPSAoKSA9PiB7XG4gIH07XG4gIGxvZyQxLmRlYnVnID0gKCkgPT4ge1xuICB9O1xuICBsb2ckMS5pbmZvID0gKCkgPT4ge1xuICB9O1xuICBsb2ckMS53YXJuID0gKCkgPT4ge1xuICB9O1xuICBsb2ckMS5lcnJvciA9ICgpID0+IHtcbiAgfTtcbiAgbG9nJDEuZmF0YWwgPSAoKSA9PiB7XG4gIH07XG4gIGlmIChudW1lcmljTGV2ZWwgPD0gTEVWRUxTLmZhdGFsKSB7XG4gICAgbG9nJDEuZmF0YWwgPSBjb25zb2xlLmVycm9yID8gY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUsIGZvcm1hdChcIkZBVEFMXCIpLCBcImNvbG9yOiBvcmFuZ2VcIikgOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIFwiXFx4MUJbMzVtXCIsIGZvcm1hdChcIkZBVEFMXCIpKTtcbiAgfVxuICBpZiAobnVtZXJpY0xldmVsIDw9IExFVkVMUy5lcnJvcikge1xuICAgIGxvZyQxLmVycm9yID0gY29uc29sZS5lcnJvciA/IGNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlLCBmb3JtYXQoXCJFUlJPUlwiKSwgXCJjb2xvcjogb3JhbmdlXCIpIDogY29uc29sZS5sb2cuYmluZChjb25zb2xlLCBcIlxceDFCWzMxbVwiLCBmb3JtYXQoXCJFUlJPUlwiKSk7XG4gIH1cbiAgaWYgKG51bWVyaWNMZXZlbCA8PSBMRVZFTFMud2Fybikge1xuICAgIGxvZyQxLndhcm4gPSBjb25zb2xlLndhcm4gPyBjb25zb2xlLndhcm4uYmluZChjb25zb2xlLCBmb3JtYXQoXCJXQVJOXCIpLCBcImNvbG9yOiBvcmFuZ2VcIikgOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIGBcXHgxQlszM21gLCBmb3JtYXQoXCJXQVJOXCIpKTtcbiAgfVxuICBpZiAobnVtZXJpY0xldmVsIDw9IExFVkVMUy5pbmZvKSB7XG4gICAgbG9nJDEuaW5mbyA9IGNvbnNvbGUuaW5mbyA/IGNvbnNvbGUuaW5mby5iaW5kKGNvbnNvbGUsIGZvcm1hdChcIklORk9cIiksIFwiY29sb3I6IGxpZ2h0Ymx1ZVwiKSA6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwgXCJcXHgxQlszNG1cIiwgZm9ybWF0KFwiSU5GT1wiKSk7XG4gIH1cbiAgaWYgKG51bWVyaWNMZXZlbCA8PSBMRVZFTFMuZGVidWcpIHtcbiAgICBsb2ckMS5kZWJ1ZyA9IGNvbnNvbGUuZGVidWcgPyBjb25zb2xlLmRlYnVnLmJpbmQoY29uc29sZSwgZm9ybWF0KFwiREVCVUdcIiksIFwiY29sb3I6IGxpZ2h0Z3JlZW5cIikgOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIFwiXFx4MUJbMzJtXCIsIGZvcm1hdChcIkRFQlVHXCIpKTtcbiAgfVxuICBpZiAobnVtZXJpY0xldmVsIDw9IExFVkVMUy50cmFjZSkge1xuICAgIGxvZyQxLnRyYWNlID0gY29uc29sZS5kZWJ1ZyA/IGNvbnNvbGUuZGVidWcuYmluZChjb25zb2xlLCBmb3JtYXQoXCJUUkFDRVwiKSwgXCJjb2xvcjogbGlnaHRncmVlblwiKSA6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwgXCJcXHgxQlszMm1cIiwgZm9ybWF0KFwiVFJBQ0VcIikpO1xuICB9XG59O1xuY29uc3QgZm9ybWF0ID0gKGxldmVsKSA9PiB7XG4gIGNvbnN0IHRpbWUgPSBkYXlqcygpLmZvcm1hdChcInNzLlNTU1wiKTtcbiAgcmV0dXJuIGAlYyR7dGltZX0gOiAke2xldmVsfSA6IGA7XG59O1xuY29uc3QgbGluZUJyZWFrUmVnZXggPSAvPGJyXFxzKlxcLz8+L2dpO1xuY29uc3QgZ2V0Um93cyA9IChzKSA9PiB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBbXCJcIl07XG4gIH1cbiAgY29uc3Qgc3RyMiA9IGJyZWFrVG9QbGFjZWhvbGRlcihzKS5yZXBsYWNlKC9cXFxcbi9nLCBcIiNiciNcIik7XG4gIHJldHVybiBzdHIyLnNwbGl0KFwiI2JyI1wiKTtcbn07XG5jb25zdCByZW1vdmVTY3JpcHQgPSAodHh0KSA9PiB7XG4gIHJldHVybiBET01QdXJpZnkuc2FuaXRpemUodHh0KTtcbn07XG5jb25zdCBzYW5pdGl6ZU1vcmUgPSAodGV4dCwgY29uZmlnMikgPT4ge1xuICB2YXIgX2E7XG4gIGlmICgoKF9hID0gY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5odG1sTGFiZWxzKSAhPT0gZmFsc2UpIHtcbiAgICBjb25zdCBsZXZlbCA9IGNvbmZpZzIuc2VjdXJpdHlMZXZlbDtcbiAgICBpZiAobGV2ZWwgPT09IFwiYW50aXNjcmlwdFwiIHx8IGxldmVsID09PSBcInN0cmljdFwiKSB7XG4gICAgICB0ZXh0ID0gcmVtb3ZlU2NyaXB0KHRleHQpO1xuICAgIH0gZWxzZSBpZiAobGV2ZWwgIT09IFwibG9vc2VcIikge1xuICAgICAgdGV4dCA9IGJyZWFrVG9QbGFjZWhvbGRlcih0ZXh0KTtcbiAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoLzwvZywgXCImbHQ7XCIpLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpO1xuICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvPS9nLCBcIiZlcXVhbHM7XCIpO1xuICAgICAgdGV4dCA9IHBsYWNlaG9sZGVyVG9CcmVhayh0ZXh0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59O1xuY29uc3Qgc2FuaXRpemVUZXh0JDIgPSAodGV4dCwgY29uZmlnMikgPT4ge1xuICBpZiAoIXRleHQpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuICBpZiAoY29uZmlnMi5kb21wdXJpZnlDb25maWcpIHtcbiAgICB0ZXh0ID0gRE9NUHVyaWZ5LnNhbml0aXplKHNhbml0aXplTW9yZSh0ZXh0LCBjb25maWcyKSwgY29uZmlnMi5kb21wdXJpZnlDb25maWcpLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgdGV4dCA9IERPTVB1cmlmeS5zYW5pdGl6ZShzYW5pdGl6ZU1vcmUodGV4dCwgY29uZmlnMiksIHtcbiAgICAgIEZPUkJJRF9UQUdTOiBbXCJzdHlsZVwiXVxuICAgIH0pLnRvU3RyaW5nKCk7XG4gIH1cbiAgcmV0dXJuIHRleHQ7XG59O1xuY29uc3Qgc2FuaXRpemVUZXh0T3JBcnJheSA9IChhLCBjb25maWcyKSA9PiB7XG4gIGlmICh0eXBlb2YgYSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBzYW5pdGl6ZVRleHQkMihhLCBjb25maWcyKTtcbiAgfVxuICByZXR1cm4gYS5mbGF0KCkubWFwKCh4KSA9PiBzYW5pdGl6ZVRleHQkMih4LCBjb25maWcyKSk7XG59O1xuY29uc3QgaGFzQnJlYWtzID0gKHRleHQpID0+IHtcbiAgcmV0dXJuIGxpbmVCcmVha1JlZ2V4LnRlc3QodGV4dCk7XG59O1xuY29uc3Qgc3BsaXRCcmVha3MgPSAodGV4dCkgPT4ge1xuICByZXR1cm4gdGV4dC5zcGxpdChsaW5lQnJlYWtSZWdleCk7XG59O1xuY29uc3QgcGxhY2Vob2xkZXJUb0JyZWFrID0gKHMpID0+IHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvI2JyIy9nLCBcIjxici8+XCIpO1xufTtcbmNvbnN0IGJyZWFrVG9QbGFjZWhvbGRlciA9IChzKSA9PiB7XG4gIHJldHVybiBzLnJlcGxhY2UobGluZUJyZWFrUmVnZXgsIFwiI2JyI1wiKTtcbn07XG5jb25zdCBnZXRVcmwgPSAodXNlQWJzb2x1dGUpID0+IHtcbiAgbGV0IHVybCA9IFwiXCI7XG4gIGlmICh1c2VBYnNvbHV0ZSkge1xuICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICB1cmwgPSB1cmwucmVwbGFjZUFsbCgvXFwoL2csIFwiXFxcXChcIik7XG4gICAgdXJsID0gdXJsLnJlcGxhY2VBbGwoL1xcKS9nLCBcIlxcXFwpXCIpO1xuICB9XG4gIHJldHVybiB1cmw7XG59O1xuY29uc3QgZXZhbHVhdGUgPSAodmFsKSA9PiB2YWwgPT09IGZhbHNlIHx8IFtcImZhbHNlXCIsIFwibnVsbFwiLCBcIjBcIl0uaW5jbHVkZXMoU3RyaW5nKHZhbCkudHJpbSgpLnRvTG93ZXJDYXNlKCkpID8gZmFsc2UgOiB0cnVlO1xuY29uc3QgZ2V0TWF4ID0gZnVuY3Rpb24oLi4udmFsdWVzKSB7XG4gIGNvbnN0IG5ld1ZhbHVlcyA9IHZhbHVlcy5maWx0ZXIoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuICFpc05hTih2YWx1ZSk7XG4gIH0pO1xuICByZXR1cm4gTWF0aC5tYXgoLi4ubmV3VmFsdWVzKTtcbn07XG5jb25zdCBnZXRNaW4gPSBmdW5jdGlvbiguLi52YWx1ZXMpIHtcbiAgY29uc3QgbmV3VmFsdWVzID0gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IHtcbiAgICByZXR1cm4gIWlzTmFOKHZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBNYXRoLm1pbiguLi5uZXdWYWx1ZXMpO1xufTtcbmNvbnN0IHBhcnNlR2VuZXJpY1R5cGVzID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgY2xlYW5lZFRleHQgPSB0ZXh0O1xuICBpZiAodGV4dC5zcGxpdChcIn5cIikubGVuZ3RoIC0gMSA+PSAyKSB7XG4gICAgbGV0IG5ld0NsZWFuZWRUZXh0ID0gY2xlYW5lZFRleHQ7XG4gICAgZG8ge1xuICAgICAgY2xlYW5lZFRleHQgPSBuZXdDbGVhbmVkVGV4dDtcbiAgICAgIG5ld0NsZWFuZWRUZXh0ID0gY2xlYW5lZFRleHQucmVwbGFjZSgvfihbXlxccyw6O10rKX4vLCBcIjwkMT5cIik7XG4gICAgfSB3aGlsZSAobmV3Q2xlYW5lZFRleHQgIT0gY2xlYW5lZFRleHQpO1xuICAgIHJldHVybiBwYXJzZUdlbmVyaWNUeXBlcyhuZXdDbGVhbmVkVGV4dCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNsZWFuZWRUZXh0O1xuICB9XG59O1xuY29uc3QgY29tbW9uJDEgPSB7XG4gIGdldFJvd3MsXG4gIHNhbml0aXplVGV4dDogc2FuaXRpemVUZXh0JDIsXG4gIHNhbml0aXplVGV4dE9yQXJyYXksXG4gIGhhc0JyZWFrcyxcbiAgc3BsaXRCcmVha3MsXG4gIGxpbmVCcmVha1JlZ2V4LFxuICByZW1vdmVTY3JpcHQsXG4gIGdldFVybCxcbiAgZXZhbHVhdGUsXG4gIGdldE1heCxcbiAgZ2V0TWluXG59O1xuY29uc3QgbWtCb3JkZXIgPSAoY29sLCBkYXJrTW9kZSkgPT4gZGFya01vZGUgPyBhZGp1c3QoY29sLCB7IHM6IC00MCwgbDogMTAgfSkgOiBhZGp1c3QoY29sLCB7IHM6IC00MCwgbDogLTEwIH0pO1xuY29uc3Qgb2xkQXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkID0gXCIjZmZmZmZmXCI7XG5jb25zdCBvbGRBdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVuID0gXCIjZjJmMmYyXCI7XG5sZXQgVGhlbWUkNCA9IGNsYXNzIFRoZW1lIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kID0gXCIjZjRmNGY0XCI7XG4gICAgdGhpcy5wcmltYXJ5Q29sb3IgPSBcIiNmZmY0ZGRcIjtcbiAgICB0aGlzLm5vdGVCa2dDb2xvciA9IFwiI2ZmZjVhZFwiO1xuICAgIHRoaXMubm90ZVRleHRDb2xvciA9IFwiIzMzM1wiO1xuICAgIHRoaXMuVEhFTUVfQ09MT1JfTElNSVQgPSAxMjtcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSAnXCJ0cmVidWNoZXQgbXNcIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnO1xuICAgIHRoaXMuZm9udFNpemUgPSBcIjE2cHhcIjtcbiAgfVxuICB1cGRhdGVDb2xvcnMoKSB7XG4gICAgdGhpcy5wcmltYXJ5VGV4dENvbG9yID0gdGhpcy5wcmltYXJ5VGV4dENvbG9yIHx8ICh0aGlzLmRhcmtNb2RlID8gXCIjZWVlXCIgOiBcIiMzMzNcIik7XG4gICAgdGhpcy5zZWNvbmRhcnlDb2xvciA9IHRoaXMuc2Vjb25kYXJ5Q29sb3IgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC0xMjAgfSk7XG4gICAgdGhpcy50ZXJ0aWFyeUNvbG9yID0gdGhpcy50ZXJ0aWFyeUNvbG9yIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxODAsIGw6IDUgfSk7XG4gICAgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IgPSB0aGlzLnByaW1hcnlCb3JkZXJDb2xvciB8fCBta0JvcmRlcih0aGlzLnByaW1hcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvciA9IHRoaXMuc2Vjb25kYXJ5Qm9yZGVyQ29sb3IgfHwgbWtCb3JkZXIodGhpcy5zZWNvbmRhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yID0gdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yIHx8IG1rQm9yZGVyKHRoaXMudGVydGlhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy5ub3RlQm9yZGVyQ29sb3IgPSB0aGlzLm5vdGVCb3JkZXJDb2xvciB8fCBta0JvcmRlcih0aGlzLm5vdGVCa2dDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy5ub3RlQmtnQ29sb3IgPSB0aGlzLm5vdGVCa2dDb2xvciB8fCBcIiNmZmY1YWRcIjtcbiAgICB0aGlzLm5vdGVUZXh0Q29sb3IgPSB0aGlzLm5vdGVUZXh0Q29sb3IgfHwgXCIjMzMzXCI7XG4gICAgdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3IgPSB0aGlzLnNlY29uZGFyeVRleHRDb2xvciB8fCBpbnZlcnQodGhpcy5zZWNvbmRhcnlDb2xvcik7XG4gICAgdGhpcy50ZXJ0aWFyeVRleHRDb2xvciA9IHRoaXMudGVydGlhcnlUZXh0Q29sb3IgfHwgaW52ZXJ0KHRoaXMudGVydGlhcnlDb2xvcik7XG4gICAgdGhpcy5saW5lQ29sb3IgPSB0aGlzLmxpbmVDb2xvciB8fCBpbnZlcnQodGhpcy5iYWNrZ3JvdW5kKTtcbiAgICB0aGlzLmFycm93aGVhZENvbG9yID0gdGhpcy5hcnJvd2hlYWRDb2xvciB8fCBpbnZlcnQodGhpcy5iYWNrZ3JvdW5kKTtcbiAgICB0aGlzLnRleHRDb2xvciA9IHRoaXMudGV4dENvbG9yIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmJvcmRlcjIgPSB0aGlzLmJvcmRlcjIgfHwgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMubm9kZUJrZyA9IHRoaXMubm9kZUJrZyB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLm1haW5Ca2cgPSB0aGlzLm1haW5Ca2cgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5ub2RlQm9yZGVyID0gdGhpcy5ub2RlQm9yZGVyIHx8IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMuY2x1c3RlckJrZyA9IHRoaXMuY2x1c3RlckJrZyB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5jbHVzdGVyQm9yZGVyID0gdGhpcy5jbHVzdGVyQm9yZGVyIHx8IHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLmRlZmF1bHRMaW5rQ29sb3IgPSB0aGlzLmRlZmF1bHRMaW5rQ29sb3IgfHwgdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy50aXRsZUNvbG9yID0gdGhpcy50aXRsZUNvbG9yIHx8IHRoaXMudGVydGlhcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kID0gdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kIHx8ICh0aGlzLmRhcmtNb2RlID8gZGFya2VuKHRoaXMuc2Vjb25kYXJ5Q29sb3IsIDMwKSA6IHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMubm9kZVRleHRDb2xvciA9IHRoaXMubm9kZVRleHRDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5hY3RvckJvcmRlciA9IHRoaXMuYWN0b3JCb3JkZXIgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5hY3RvckJrZyA9IHRoaXMuYWN0b3JCa2cgfHwgdGhpcy5tYWluQmtnO1xuICAgIHRoaXMuYWN0b3JUZXh0Q29sb3IgPSB0aGlzLmFjdG9yVGV4dENvbG9yIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmFjdG9yTGluZUNvbG9yID0gdGhpcy5hY3RvckxpbmVDb2xvciB8fCBcImdyZXlcIjtcbiAgICB0aGlzLmxhYmVsQm94QmtnQ29sb3IgPSB0aGlzLmxhYmVsQm94QmtnQ29sb3IgfHwgdGhpcy5hY3RvckJrZztcbiAgICB0aGlzLnNpZ25hbENvbG9yID0gdGhpcy5zaWduYWxDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnNpZ25hbFRleHRDb2xvciA9IHRoaXMuc2lnbmFsVGV4dENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvciA9IHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvciB8fCB0aGlzLmFjdG9yQm9yZGVyO1xuICAgIHRoaXMubGFiZWxUZXh0Q29sb3IgPSB0aGlzLmxhYmVsVGV4dENvbG9yIHx8IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy5sb29wVGV4dENvbG9yID0gdGhpcy5sb29wVGV4dENvbG9yIHx8IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3IgPSB0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvciB8fCBkYXJrZW4odGhpcy5zZWNvbmRhcnlDb2xvciwgMTApO1xuICAgIHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yID0gdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3IgfHwgdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3IgPSB0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3IgfHwgaW52ZXJ0KHRoaXMubGluZUNvbG9yKTtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IHRoaXMuc2VjdGlvbkJrZ0NvbG9yIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvciA9IHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yIHx8IFwid2hpdGVcIjtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IHRoaXMuc2VjdGlvbkJrZ0NvbG9yIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IyID0gdGhpcy5zZWN0aW9uQmtnQ29sb3IyIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuZXhjbHVkZUJrZ0NvbG9yID0gdGhpcy5leGNsdWRlQmtnQ29sb3IgfHwgXCIjZWVlZWVlXCI7XG4gICAgdGhpcy50YXNrQm9yZGVyQ29sb3IgPSB0aGlzLnRhc2tCb3JkZXJDb2xvciB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnRhc2tCa2dDb2xvciA9IHRoaXMudGFza0JrZ0NvbG9yIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yID0gdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3IgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3IgPSB0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvciB8fCBsaWdodGVuKHRoaXMucHJpbWFyeUNvbG9yLCAyMyk7XG4gICAgdGhpcy5ncmlkQ29sb3IgPSB0aGlzLmdyaWRDb2xvciB8fCBcImxpZ2h0Z3JleVwiO1xuICAgIHRoaXMuZG9uZVRhc2tCa2dDb2xvciA9IHRoaXMuZG9uZVRhc2tCa2dDb2xvciB8fCBcImxpZ2h0Z3JleVwiO1xuICAgIHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvciA9IHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvciB8fCBcImdyZXlcIjtcbiAgICB0aGlzLmNyaXRCb3JkZXJDb2xvciA9IHRoaXMuY3JpdEJvcmRlckNvbG9yIHx8IFwiI2ZmODg4OFwiO1xuICAgIHRoaXMuY3JpdEJrZ0NvbG9yID0gdGhpcy5jcml0QmtnQ29sb3IgfHwgXCJyZWRcIjtcbiAgICB0aGlzLnRvZGF5TGluZUNvbG9yID0gdGhpcy50b2RheUxpbmVDb2xvciB8fCBcInJlZFwiO1xuICAgIHRoaXMudGFza1RleHRDb2xvciA9IHRoaXMudGFza1RleHRDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yID0gdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnRhc2tUZXh0TGlnaHRDb2xvciA9IHRoaXMudGFza1RleHRMaWdodENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMudGFza1RleHRDb2xvciA9IHRoaXMudGFza1RleHRDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dERhcmtDb2xvciA9IHRoaXMudGFza1RleHREYXJrQ29sb3IgfHwgdGhpcy50ZXh0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yID0gdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yIHx8IFwiIzAwMzE2M1wiO1xuICAgIHRoaXMucGVyc29uQm9yZGVyID0gdGhpcy5wZXJzb25Cb3JkZXIgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5wZXJzb25Ca2cgPSB0aGlzLnBlcnNvbkJrZyB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy50cmFuc2l0aW9uQ29sb3IgPSB0aGlzLnRyYW5zaXRpb25Db2xvciB8fCB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yID0gdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnN0YXRlTGFiZWxDb2xvciA9IHRoaXMuc3RhdGVMYWJlbENvbG9yIHx8IHRoaXMuc3RhdGVCa2cgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMuc3RhdGVCa2cgPSB0aGlzLnN0YXRlQmtnIHx8IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yID0gdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvciB8fCB0aGlzLnN0YXRlQmtnO1xuICAgIHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZCA9IHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZCB8fCB0aGlzLmJhY2tncm91bmQgfHwgdGhpcy50ZXJ0aWFyeUNvbG9yO1xuICAgIHRoaXMuYWx0QmFja2dyb3VuZCA9IHRoaXMuYWx0QmFja2dyb3VuZCB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQgPSB0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZCB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5jb21wb3NpdGVCb3JkZXIgPSB0aGlzLmNvbXBvc2l0ZUJvcmRlciB8fCB0aGlzLm5vZGVCb3JkZXI7XG4gICAgdGhpcy5pbm5lckVuZEJhY2tncm91bmQgPSB0aGlzLm5vZGVCb3JkZXI7XG4gICAgdGhpcy5lcnJvckJrZ0NvbG9yID0gdGhpcy5lcnJvckJrZ0NvbG9yIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gdGhpcy5lcnJvclRleHRDb2xvciB8fCB0aGlzLnRlcnRpYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMudHJhbnNpdGlvbkNvbG9yID0gdGhpcy50cmFuc2l0aW9uQ29sb3IgfHwgdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5zcGVjaWFsU3RhdGVDb2xvciA9IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMCA9IHRoaXMuY1NjYWxlMCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLmNTY2FsZTEgPSB0aGlzLmNTY2FsZTEgfHwgdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLmNTY2FsZTIgPSB0aGlzLmNTY2FsZTIgfHwgdGhpcy50ZXJ0aWFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMyA9IHRoaXMuY1NjYWxlMyB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMzAgfSk7XG4gICAgdGhpcy5jU2NhbGU0ID0gdGhpcy5jU2NhbGU0IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiA2MCB9KTtcbiAgICB0aGlzLmNTY2FsZTUgPSB0aGlzLmNTY2FsZTUgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDkwIH0pO1xuICAgIHRoaXMuY1NjYWxlNiA9IHRoaXMuY1NjYWxlNiB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTIwIH0pO1xuICAgIHRoaXMuY1NjYWxlNyA9IHRoaXMuY1NjYWxlNyB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTUwIH0pO1xuICAgIHRoaXMuY1NjYWxlOCA9IHRoaXMuY1NjYWxlOCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMjEwLCBsOiAxNTAgfSk7XG4gICAgdGhpcy5jU2NhbGU5ID0gdGhpcy5jU2NhbGU5IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyNzAgfSk7XG4gICAgdGhpcy5jU2NhbGUxMCA9IHRoaXMuY1NjYWxlMTAgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDMwMCB9KTtcbiAgICB0aGlzLmNTY2FsZTExID0gdGhpcy5jU2NhbGUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMzMwIH0pO1xuICAgIGlmICh0aGlzLmRhcmtNb2RlKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgICB0aGlzW1wiY1NjYWxlXCIgKyBpXSA9IGRhcmtlbih0aGlzW1wiY1NjYWxlXCIgKyBpXSwgNzUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgICB0aGlzW1wiY1NjYWxlXCIgKyBpXSA9IGRhcmtlbih0aGlzW1wiY1NjYWxlXCIgKyBpXSwgMjUpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgdGhpc1tcImNTY2FsZUludlwiICsgaV0gPSB0aGlzW1wiY1NjYWxlSW52XCIgKyBpXSB8fCBpbnZlcnQodGhpc1tcImNTY2FsZVwiICsgaV0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGFya01vZGUpIHtcbiAgICAgICAgdGhpc1tcImNTY2FsZVBlZXJcIiArIGldID0gdGhpc1tcImNTY2FsZVBlZXJcIiArIGldIHx8IGxpZ2h0ZW4odGhpc1tcImNTY2FsZVwiICsgaV0sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbXCJjU2NhbGVQZWVyXCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVQZWVyXCIgKyBpXSB8fCBkYXJrZW4odGhpc1tcImNTY2FsZVwiICsgaV0sIDEwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zY2FsZUxhYmVsQ29sb3IgPSB0aGlzLnNjYWxlTGFiZWxDb2xvciB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlTGFiZWxcIiArIGldID0gdGhpc1tcImNTY2FsZUxhYmVsXCIgKyBpXSB8fCB0aGlzLnNjYWxlTGFiZWxDb2xvcjtcbiAgICB9XG4gICAgY29uc3QgbXVsdGlwbGllciA9IHRoaXMuZGFya01vZGUgPyAtNCA6IC0xO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgICB0aGlzW1wic3VyZmFjZVwiICsgaV0gPSB0aGlzW1wic3VyZmFjZVwiICsgaV0gfHwgYWRqdXN0KHRoaXMubWFpbkJrZywgeyBoOiAxODAsIHM6IC0xNSwgbDogbXVsdGlwbGllciAqICg1ICsgaSAqIDMpIH0pO1xuICAgICAgdGhpc1tcInN1cmZhY2VQZWVyXCIgKyBpXSA9IHRoaXNbXCJzdXJmYWNlUGVlclwiICsgaV0gfHwgYWRqdXN0KHRoaXMubWFpbkJrZywgeyBoOiAxODAsIHM6IC0xNSwgbDogbXVsdGlwbGllciAqICg4ICsgaSAqIDMpIH0pO1xuICAgIH1cbiAgICB0aGlzLmNsYXNzVGV4dCA9IHRoaXMuY2xhc3NUZXh0IHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMuZmlsbFR5cGUwID0gdGhpcy5maWxsVHlwZTAgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTEgPSB0aGlzLmZpbGxUeXBlMSB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuZmlsbFR5cGUyID0gdGhpcy5maWxsVHlwZTIgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGUzID0gdGhpcy5maWxsVHlwZTMgfHwgYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTQgPSB0aGlzLmZpbGxUeXBlNCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU1ID0gdGhpcy5maWxsVHlwZTUgfHwgYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogLTY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU2ID0gdGhpcy5maWxsVHlwZTYgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyOCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNyA9IHRoaXMuZmlsbFR5cGU3IHx8IGFkanVzdCh0aGlzLnNlY29uZGFyeUNvbG9yLCB7IGg6IDEyOCB9KTtcbiAgICB0aGlzLnBpZTEgPSB0aGlzLnBpZTEgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5waWUyID0gdGhpcy5waWUyIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5waWUzID0gdGhpcy5waWUzIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLnBpZTQgPSB0aGlzLnBpZTQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGw6IC0xMCB9KTtcbiAgICB0aGlzLnBpZTUgPSB0aGlzLnBpZTUgfHwgYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgbDogLTEwIH0pO1xuICAgIHRoaXMucGllNiA9IHRoaXMucGllNiB8fCBhZGp1c3QodGhpcy50ZXJ0aWFyeUNvbG9yLCB7IGw6IC0xMCB9KTtcbiAgICB0aGlzLnBpZTcgPSB0aGlzLnBpZTcgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwLCBsOiAtMTAgfSk7XG4gICAgdGhpcy5waWU4ID0gdGhpcy5waWU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtNjAsIGw6IC0xMCB9KTtcbiAgICB0aGlzLnBpZTkgPSB0aGlzLnBpZTkgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCwgbDogMCB9KTtcbiAgICB0aGlzLnBpZTEwID0gdGhpcy5waWUxMCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjAsIGw6IC0yMCB9KTtcbiAgICB0aGlzLnBpZTExID0gdGhpcy5waWUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTYwLCBsOiAtMjAgfSk7XG4gICAgdGhpcy5waWUxMiA9IHRoaXMucGllMTIgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCwgbDogLTEwIH0pO1xuICAgIHRoaXMucGllVGl0bGVUZXh0U2l6ZSA9IHRoaXMucGllVGl0bGVUZXh0U2l6ZSB8fCBcIjI1cHhcIjtcbiAgICB0aGlzLnBpZVRpdGxlVGV4dENvbG9yID0gdGhpcy5waWVUaXRsZVRleHRDb2xvciB8fCB0aGlzLnRhc2tUZXh0RGFya0NvbG9yO1xuICAgIHRoaXMucGllU2VjdGlvblRleHRTaXplID0gdGhpcy5waWVTZWN0aW9uVGV4dFNpemUgfHwgXCIxN3B4XCI7XG4gICAgdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yID0gdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dFNpemUgPSB0aGlzLnBpZUxlZ2VuZFRleHRTaXplIHx8IFwiMTdweFwiO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dENvbG9yID0gdGhpcy5waWVMZWdlbmRUZXh0Q29sb3IgfHwgdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLnBpZVN0cm9rZUNvbG9yID0gdGhpcy5waWVTdHJva2VDb2xvciB8fCBcImJsYWNrXCI7XG4gICAgdGhpcy5waWVTdHJva2VXaWR0aCA9IHRoaXMucGllU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggPSB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgPSB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgfHwgXCJibGFja1wiO1xuICAgIHRoaXMucGllT3BhY2l0eSA9IHRoaXMucGllT3BhY2l0eSB8fCBcIjAuN1wiO1xuICAgIHRoaXMucXVhZHJhbnQxRmlsbCA9IHRoaXMucXVhZHJhbnQxRmlsbCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50MkZpbGwgPSB0aGlzLnF1YWRyYW50MkZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IHI6IDUsIGc6IDUsIGI6IDUgfSk7XG4gICAgdGhpcy5xdWFkcmFudDNGaWxsID0gdGhpcy5xdWFkcmFudDNGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyByOiAxMCwgZzogMTAsIGI6IDEwIH0pO1xuICAgIHRoaXMucXVhZHJhbnQ0RmlsbCA9IHRoaXMucXVhZHJhbnQ0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgcjogMTUsIGc6IDE1LCBiOiAxNSB9KTtcbiAgICB0aGlzLnF1YWRyYW50MVRleHRGaWxsID0gdGhpcy5xdWFkcmFudDFUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudDJUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQyVGV4dEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeVRleHRDb2xvciwgeyByOiAtNSwgZzogLTUsIGI6IC01IH0pO1xuICAgIHRoaXMucXVhZHJhbnQzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50M1RleHRGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlUZXh0Q29sb3IsIHsgcjogLTEwLCBnOiAtMTAsIGI6IC0xMCB9KTtcbiAgICB0aGlzLnF1YWRyYW50NFRleHRGaWxsID0gdGhpcy5xdWFkcmFudDRUZXh0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5VGV4dENvbG9yLCB7IHI6IC0xNSwgZzogLTE1LCBiOiAtMTUgfSk7XG4gICAgdGhpcy5xdWFkcmFudFBvaW50RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludEZpbGwgfHwgaXNEYXJrKHRoaXMucXVhZHJhbnQxRmlsbCkgPyBsaWdodGVuKHRoaXMucXVhZHJhbnQxRmlsbCkgOiBkYXJrZW4odGhpcy5xdWFkcmFudDFGaWxsKTtcbiAgICB0aGlzLnF1YWRyYW50UG9pbnRUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludFRleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WEF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRYQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WUF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRZQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50VGl0bGVGaWxsID0gdGhpcy5xdWFkcmFudFRpdGxlRmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQgPSB0aGlzLnJlcXVpcmVtZW50QmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemUgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZSB8fCBcIjFcIjtcbiAgICB0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yID0gdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZWxhdGlvbkNvbG9yID0gdGhpcy5yZWxhdGlvbkNvbG9yIHx8IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmQgPSB0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kIHx8ICh0aGlzLmRhcmtNb2RlID8gZGFya2VuKHRoaXMuc2Vjb25kYXJ5Q29sb3IsIDMwKSA6IHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMucmVsYXRpb25MYWJlbENvbG9yID0gdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3IgfHwgdGhpcy5hY3RvclRleHRDb2xvcjtcbiAgICB0aGlzLmdpdDAgPSB0aGlzLmdpdDAgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5naXQxID0gdGhpcy5naXQxIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5naXQyID0gdGhpcy5naXQyIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmdpdDMgPSB0aGlzLmdpdDMgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC0zMCB9KTtcbiAgICB0aGlzLmdpdDQgPSB0aGlzLmdpdDQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC02MCB9KTtcbiAgICB0aGlzLmdpdDUgPSB0aGlzLmdpdDUgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC05MCB9KTtcbiAgICB0aGlzLmdpdDYgPSB0aGlzLmdpdDYgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwIH0pO1xuICAgIHRoaXMuZ2l0NyA9IHRoaXMuZ2l0NyB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTIwIH0pO1xuICAgIGlmICh0aGlzLmRhcmtNb2RlKSB7XG4gICAgICB0aGlzLmdpdDAgPSBsaWdodGVuKHRoaXMuZ2l0MCwgMjUpO1xuICAgICAgdGhpcy5naXQxID0gbGlnaHRlbih0aGlzLmdpdDEsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MiA9IGxpZ2h0ZW4odGhpcy5naXQyLCAyNSk7XG4gICAgICB0aGlzLmdpdDMgPSBsaWdodGVuKHRoaXMuZ2l0MywgMjUpO1xuICAgICAgdGhpcy5naXQ0ID0gbGlnaHRlbih0aGlzLmdpdDQsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NSA9IGxpZ2h0ZW4odGhpcy5naXQ1LCAyNSk7XG4gICAgICB0aGlzLmdpdDYgPSBsaWdodGVuKHRoaXMuZ2l0NiwgMjUpO1xuICAgICAgdGhpcy5naXQ3ID0gbGlnaHRlbih0aGlzLmdpdDcsIDI1KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5naXQwID0gZGFya2VuKHRoaXMuZ2l0MCwgMjUpO1xuICAgICAgdGhpcy5naXQxID0gZGFya2VuKHRoaXMuZ2l0MSwgMjUpO1xuICAgICAgdGhpcy5naXQyID0gZGFya2VuKHRoaXMuZ2l0MiwgMjUpO1xuICAgICAgdGhpcy5naXQzID0gZGFya2VuKHRoaXMuZ2l0MywgMjUpO1xuICAgICAgdGhpcy5naXQ0ID0gZGFya2VuKHRoaXMuZ2l0NCwgMjUpO1xuICAgICAgdGhpcy5naXQ1ID0gZGFya2VuKHRoaXMuZ2l0NSwgMjUpO1xuICAgICAgdGhpcy5naXQ2ID0gZGFya2VuKHRoaXMuZ2l0NiwgMjUpO1xuICAgICAgdGhpcy5naXQ3ID0gZGFya2VuKHRoaXMuZ2l0NywgMjUpO1xuICAgIH1cbiAgICB0aGlzLmdpdEludjAgPSB0aGlzLmdpdEludjAgfHwgaW52ZXJ0KHRoaXMuZ2l0MCk7XG4gICAgdGhpcy5naXRJbnYxID0gdGhpcy5naXRJbnYxIHx8IGludmVydCh0aGlzLmdpdDEpO1xuICAgIHRoaXMuZ2l0SW52MiA9IHRoaXMuZ2l0SW52MiB8fCBpbnZlcnQodGhpcy5naXQyKTtcbiAgICB0aGlzLmdpdEludjMgPSB0aGlzLmdpdEludjMgfHwgaW52ZXJ0KHRoaXMuZ2l0Myk7XG4gICAgdGhpcy5naXRJbnY0ID0gdGhpcy5naXRJbnY0IHx8IGludmVydCh0aGlzLmdpdDQpO1xuICAgIHRoaXMuZ2l0SW52NSA9IHRoaXMuZ2l0SW52NSB8fCBpbnZlcnQodGhpcy5naXQ1KTtcbiAgICB0aGlzLmdpdEludjYgPSB0aGlzLmdpdEludjYgfHwgaW52ZXJ0KHRoaXMuZ2l0Nik7XG4gICAgdGhpcy5naXRJbnY3ID0gdGhpcy5naXRJbnY3IHx8IGludmVydCh0aGlzLmdpdDcpO1xuICAgIHRoaXMuYnJhbmNoTGFiZWxDb2xvciA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvciB8fCAodGhpcy5kYXJrTW9kZSA/IFwiYmxhY2tcIiA6IHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwwID0gdGhpcy5naXRCcmFuY2hMYWJlbDAgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwxID0gdGhpcy5naXRCcmFuY2hMYWJlbDEgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwyID0gdGhpcy5naXRCcmFuY2hMYWJlbDIgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwzID0gdGhpcy5naXRCcmFuY2hMYWJlbDMgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw0ID0gdGhpcy5naXRCcmFuY2hMYWJlbDQgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw1ID0gdGhpcy5naXRCcmFuY2hMYWJlbDUgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw2ID0gdGhpcy5naXRCcmFuY2hMYWJlbDYgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw3ID0gdGhpcy5naXRCcmFuY2hMYWJlbDcgfHwgdGhpcy5icmFuY2hMYWJlbENvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxDb2xvciA9IHRoaXMudGFnTGFiZWxDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEJhY2tncm91bmQgPSB0aGlzLnRhZ0xhYmVsQmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnRhZ0xhYmVsQm9yZGVyID0gdGhpcy50YWdCb3JkZXIgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEZvbnRTaXplID0gdGhpcy50YWdMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuY29tbWl0TGFiZWxDb2xvciA9IHRoaXMuY29tbWl0TGFiZWxDb2xvciB8fCB0aGlzLnNlY29uZGFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZCA9IHRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5jb21taXRMYWJlbEZvbnRTaXplID0gdGhpcy5jb21taXRMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkID0gdGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JPZGQgfHwgb2xkQXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkO1xuICAgIHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbiA9IHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbiB8fCBvbGRBdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVuO1xuICB9XG4gIGNhbGN1bGF0ZShvdmVycmlkZXMpIHtcbiAgICBpZiAodHlwZW9mIG92ZXJyaWRlcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy51cGRhdGVDb2xvcnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlcyk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlQ29sb3JzKCk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICB9XG59O1xuY29uc3QgZ2V0VGhlbWVWYXJpYWJsZXMkNCA9ICh1c2VyT3ZlcnJpZGVzKSA9PiB7XG4gIGNvbnN0IHRoZW1lMiA9IG5ldyBUaGVtZSQ0KCk7XG4gIHRoZW1lMi5jYWxjdWxhdGUodXNlck92ZXJyaWRlcyk7XG4gIHJldHVybiB0aGVtZTI7XG59O1xubGV0IFRoZW1lJDMgPSBjbGFzcyBUaGVtZTIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJhY2tncm91bmQgPSBcIiMzMzNcIjtcbiAgICB0aGlzLnByaW1hcnlDb2xvciA9IFwiIzFmMjAyMFwiO1xuICAgIHRoaXMuc2Vjb25kYXJ5Q29sb3IgPSBsaWdodGVuKHRoaXMucHJpbWFyeUNvbG9yLCAxNik7XG4gICAgdGhpcy50ZXJ0aWFyeUNvbG9yID0gYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC0xNjAgfSk7XG4gICAgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IgPSBpbnZlcnQodGhpcy5iYWNrZ3JvdW5kKTtcbiAgICB0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy5zZWNvbmRhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy50ZXJ0aWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnByaW1hcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5wcmltYXJ5Q29sb3IpO1xuICAgIHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMudGVydGlhcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy50ZXJ0aWFyeUNvbG9yKTtcbiAgICB0aGlzLmxpbmVDb2xvciA9IGludmVydCh0aGlzLmJhY2tncm91bmQpO1xuICAgIHRoaXMudGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuYmFja2dyb3VuZCk7XG4gICAgdGhpcy5tYWluQmtnID0gXCIjMWYyMDIwXCI7XG4gICAgdGhpcy5zZWNvbmRCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm1haW5Db250cmFzdENvbG9yID0gXCJsaWdodGdyZXlcIjtcbiAgICB0aGlzLmRhcmtUZXh0Q29sb3IgPSBsaWdodGVuKGludmVydChcIiMzMjNENDdcIiksIDEwKTtcbiAgICB0aGlzLmxpbmVDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYm9yZGVyMSA9IFwiIzgxQjFEQlwiO1xuICAgIHRoaXMuYm9yZGVyMiA9IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yNSk7XG4gICAgdGhpcy5hcnJvd2hlYWRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuZm9udEZhbWlseSA9ICdcInRyZWJ1Y2hldCBtc1wiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZic7XG4gICAgdGhpcy5mb250U2l6ZSA9IFwiMTZweFwiO1xuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kID0gXCIjMTgxODE4XCI7XG4gICAgdGhpcy50ZXh0Q29sb3IgPSBcIiNjY2NcIjtcbiAgICB0aGlzLlRIRU1FX0NPTE9SX0xJTUlUID0gMTI7XG4gICAgdGhpcy5ub2RlQmtnID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ub2RlQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5jbHVzdGVyQmtnID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5jbHVzdGVyQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kZWZhdWx0TGlua0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50aXRsZUNvbG9yID0gXCIjRjlGRkZFXCI7XG4gICAgdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RvckJvcmRlciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0b3JCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdG9yVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RvckxpbmVDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuc2lnbmFsQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnNpZ25hbFRleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxCb3hCa2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmxvb3BUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm5vdGVCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubm90ZUJrZ0NvbG9yID0gXCIjZmZmNWFkXCI7XG4gICAgdGhpcy5ub3RlVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdGl2YXRpb25Ca2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvciA9IFwiYmxhY2tcIjtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IGRhcmtlbihcIiNFQUU4RDlcIiwgMzApO1xuICAgIHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IyID0gXCIjRUFFOEQ5XCI7XG4gICAgdGhpcy5leGNsdWRlQmtnQ29sb3IgPSBkYXJrZW4odGhpcy5zZWN0aW9uQmtnQ29sb3IsIDEwKTtcbiAgICB0aGlzLnRhc2tCb3JkZXJDb2xvciA9IHJnYmEoMjU1LCAyNTUsIDI1NSwgNzApO1xuICAgIHRoaXMudGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dExpZ2h0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yID0gXCIjMDAzMTYzXCI7XG4gICAgdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3IgPSByZ2JhKDI1NSwgMjU1LCAyNTUsIDUwKTtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvciA9IFwiIzgxQjFEQlwiO1xuICAgIHRoaXMuZ3JpZENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kb25lVGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kb25lVGFza0JvcmRlckNvbG9yID0gXCJncmV5XCI7XG4gICAgdGhpcy5jcml0Qm9yZGVyQ29sb3IgPSBcIiNFODM3MzdcIjtcbiAgICB0aGlzLmNyaXRCa2dDb2xvciA9IFwiI0U4MzczN1wiO1xuICAgIHRoaXMudGFza1RleHREYXJrQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRvZGF5TGluZUNvbG9yID0gXCIjREI1NzU3XCI7XG4gICAgdGhpcy5wZXJzb25Cb3JkZXIgPSB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnBlcnNvbkJrZyA9IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmVycm9yQmtnQ29sb3IgPSBcIiNhNDQxNDFcIjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gXCIjZGRkXCI7XG4gIH1cbiAgdXBkYXRlQ29sb3JzKCkge1xuICAgIHRoaXMuc2Vjb25kQmtnID0gbGlnaHRlbih0aGlzLm1haW5Ca2csIDE2KTtcbiAgICB0aGlzLmxpbmVDb2xvciA9IHRoaXMubWFpbkNvbnRyYXN0Q29sb3I7XG4gICAgdGhpcy5hcnJvd2hlYWRDb2xvciA9IHRoaXMubWFpbkNvbnRyYXN0Q29sb3I7XG4gICAgdGhpcy5ub2RlQmtnID0gdGhpcy5tYWluQmtnO1xuICAgIHRoaXMubm9kZUJvcmRlciA9IHRoaXMuYm9yZGVyMTtcbiAgICB0aGlzLmNsdXN0ZXJCa2cgPSB0aGlzLnNlY29uZEJrZztcbiAgICB0aGlzLmNsdXN0ZXJCb3JkZXIgPSB0aGlzLmJvcmRlcjI7XG4gICAgdGhpcy5kZWZhdWx0TGlua0NvbG9yID0gdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kID0gbGlnaHRlbih0aGlzLmxhYmVsQmFja2dyb3VuZCwgMjUpO1xuICAgIHRoaXMuYWN0b3JCb3JkZXIgPSB0aGlzLmJvcmRlcjE7XG4gICAgdGhpcy5hY3RvckJrZyA9IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmFjdG9yVGV4dENvbG9yID0gdGhpcy5tYWluQ29udHJhc3RDb2xvcjtcbiAgICB0aGlzLmFjdG9yTGluZUNvbG9yID0gdGhpcy5tYWluQ29udHJhc3RDb2xvcjtcbiAgICB0aGlzLnNpZ25hbENvbG9yID0gdGhpcy5tYWluQ29udHJhc3RDb2xvcjtcbiAgICB0aGlzLnNpZ25hbFRleHRDb2xvciA9IHRoaXMubWFpbkNvbnRyYXN0Q29sb3I7XG4gICAgdGhpcy5sYWJlbEJveEJrZ0NvbG9yID0gdGhpcy5hY3RvckJrZztcbiAgICB0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3IgPSB0aGlzLmFjdG9yQm9yZGVyO1xuICAgIHRoaXMubGFiZWxUZXh0Q29sb3IgPSB0aGlzLm1haW5Db250cmFzdENvbG9yO1xuICAgIHRoaXMubG9vcFRleHRDb2xvciA9IHRoaXMubWFpbkNvbnRyYXN0Q29sb3I7XG4gICAgdGhpcy5ub3RlQm9yZGVyQ29sb3IgPSB0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMubm90ZUJrZ0NvbG9yID0gdGhpcy5zZWNvbmRCa2c7XG4gICAgdGhpcy5ub3RlVGV4dENvbG9yID0gdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3IgPSB0aGlzLmJvcmRlcjE7XG4gICAgdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3IgPSB0aGlzLnNlY29uZEJrZztcbiAgICB0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvciA9IHRoaXMuYmFja2dyb3VuZDtcbiAgICB0aGlzLnRhc2tCa2dDb2xvciA9IGxpZ2h0ZW4odGhpcy5tYWluQmtnLCAyMyk7XG4gICAgdGhpcy50YXNrVGV4dENvbG9yID0gdGhpcy5kYXJrVGV4dENvbG9yO1xuICAgIHRoaXMudGFza1RleHRMaWdodENvbG9yID0gdGhpcy5tYWluQ29udHJhc3RDb2xvcjtcbiAgICB0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yID0gdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I7XG4gICAgdGhpcy5ncmlkQ29sb3IgPSB0aGlzLm1haW5Db250cmFzdENvbG9yO1xuICAgIHRoaXMuZG9uZVRhc2tCa2dDb2xvciA9IHRoaXMubWFpbkNvbnRyYXN0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dERhcmtDb2xvciA9IHRoaXMuZGFya1RleHRDb2xvcjtcbiAgICB0aGlzLnRyYW5zaXRpb25Db2xvciA9IHRoaXMudHJhbnNpdGlvbkNvbG9yIHx8IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3IgPSB0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMuc3RhdGVMYWJlbENvbG9yID0gdGhpcy5zdGF0ZUxhYmVsQ29sb3IgfHwgdGhpcy5zdGF0ZUJrZyB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5zdGF0ZUJrZyA9IHRoaXMuc3RhdGVCa2cgfHwgdGhpcy5tYWluQmtnO1xuICAgIHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yIHx8IHRoaXMuc3RhdGVCa2c7XG4gICAgdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kID0gdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kIHx8IHRoaXMuYmFja2dyb3VuZCB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5hbHRCYWNrZ3JvdW5kID0gdGhpcy5hbHRCYWNrZ3JvdW5kIHx8IFwiIzU1NVwiO1xuICAgIHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kID0gdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQgfHwgdGhpcy5tYWluQmtnO1xuICAgIHRoaXMuY29tcG9zaXRlQm9yZGVyID0gdGhpcy5jb21wb3NpdGVCb3JkZXIgfHwgdGhpcy5ub2RlQm9yZGVyO1xuICAgIHRoaXMuaW5uZXJFbmRCYWNrZ3JvdW5kID0gdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5zcGVjaWFsU3RhdGVDb2xvciA9IFwiI2Y0ZjRmNFwiO1xuICAgIHRoaXMuZXJyb3JCa2dDb2xvciA9IHRoaXMuZXJyb3JCa2dDb2xvciB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5lcnJvclRleHRDb2xvciA9IHRoaXMuZXJyb3JUZXh0Q29sb3IgfHwgdGhpcy50ZXJ0aWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmZpbGxUeXBlMCA9IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuZmlsbFR5cGUxID0gdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLmZpbGxUeXBlMiA9IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiA2NCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlMyA9IGFkanVzdCh0aGlzLnNlY29uZGFyeUNvbG9yLCB7IGg6IDY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU0ID0gYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC02NCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNSA9IGFkanVzdCh0aGlzLnNlY29uZGFyeUNvbG9yLCB7IGg6IC02NCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNiA9IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjggfSk7XG4gICAgdGhpcy5maWxsVHlwZTcgPSBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBoOiAxMjggfSk7XG4gICAgdGhpcy5jU2NhbGUxID0gdGhpcy5jU2NhbGUxIHx8IFwiIzBiMDAwMFwiO1xuICAgIHRoaXMuY1NjYWxlMiA9IHRoaXMuY1NjYWxlMiB8fCBcIiM0ZDEwMzdcIjtcbiAgICB0aGlzLmNTY2FsZTMgPSB0aGlzLmNTY2FsZTMgfHwgXCIjM2Y1MjU4XCI7XG4gICAgdGhpcy5jU2NhbGU0ID0gdGhpcy5jU2NhbGU0IHx8IFwiIzRmMmYxYlwiO1xuICAgIHRoaXMuY1NjYWxlNSA9IHRoaXMuY1NjYWxlNSB8fCBcIiM2ZTBhMGFcIjtcbiAgICB0aGlzLmNTY2FsZTYgPSB0aGlzLmNTY2FsZTYgfHwgXCIjM2IwMDQ4XCI7XG4gICAgdGhpcy5jU2NhbGU3ID0gdGhpcy5jU2NhbGU3IHx8IFwiIzk5NWEwMVwiO1xuICAgIHRoaXMuY1NjYWxlOCA9IHRoaXMuY1NjYWxlOCB8fCBcIiMxNTQ3MDZcIjtcbiAgICB0aGlzLmNTY2FsZTkgPSB0aGlzLmNTY2FsZTkgfHwgXCIjMTYxNzIyXCI7XG4gICAgdGhpcy5jU2NhbGUxMCA9IHRoaXMuY1NjYWxlMTAgfHwgXCIjMDAyOTZmXCI7XG4gICAgdGhpcy5jU2NhbGUxMSA9IHRoaXMuY1NjYWxlMTEgfHwgXCIjMDE2MjljXCI7XG4gICAgdGhpcy5jU2NhbGUxMiA9IHRoaXMuY1NjYWxlMTIgfHwgXCIjMDEwMDI5XCI7XG4gICAgdGhpcy5jU2NhbGUwID0gdGhpcy5jU2NhbGUwIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMSA9IHRoaXMuY1NjYWxlMSB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMiA9IHRoaXMuY1NjYWxlMiB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5jU2NhbGUzID0gdGhpcy5jU2NhbGUzIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAzMCB9KTtcbiAgICB0aGlzLmNTY2FsZTQgPSB0aGlzLmNTY2FsZTQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwIH0pO1xuICAgIHRoaXMuY1NjYWxlNSA9IHRoaXMuY1NjYWxlNSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogOTAgfSk7XG4gICAgdGhpcy5jU2NhbGU2ID0gdGhpcy5jU2NhbGU2IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAgfSk7XG4gICAgdGhpcy5jU2NhbGU3ID0gdGhpcy5jU2NhbGU3IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxNTAgfSk7XG4gICAgdGhpcy5jU2NhbGU4ID0gdGhpcy5jU2NhbGU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyMTAgfSk7XG4gICAgdGhpcy5jU2NhbGU5ID0gdGhpcy5jU2NhbGU5IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyNzAgfSk7XG4gICAgdGhpcy5jU2NhbGUxMCA9IHRoaXMuY1NjYWxlMTAgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDMwMCB9KTtcbiAgICB0aGlzLmNTY2FsZTExID0gdGhpcy5jU2NhbGUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMzMwIH0pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlSW52XCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVJbnZcIiArIGldIHx8IGludmVydCh0aGlzW1wiY1NjYWxlXCIgKyBpXSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gPSB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gfHwgbGlnaHRlbih0aGlzW1wiY1NjYWxlXCIgKyBpXSwgMTApO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgdGhpc1tcInN1cmZhY2VcIiArIGldID0gdGhpc1tcInN1cmZhY2VcIiArIGldIHx8IGFkanVzdCh0aGlzLm1haW5Ca2csIHsgaDogMzAsIHM6IC0zMCwgbDogLSgtMTAgKyBpICogNCkgfSk7XG4gICAgICB0aGlzW1wic3VyZmFjZVBlZXJcIiArIGldID0gdGhpc1tcInN1cmZhY2VQZWVyXCIgKyBpXSB8fCBhZGp1c3QodGhpcy5tYWluQmtnLCB7IGg6IDMwLCBzOiAtMzAsIGw6IC0oLTcgKyBpICogNCkgfSk7XG4gICAgfVxuICAgIHRoaXMuc2NhbGVMYWJlbENvbG9yID0gdGhpcy5zY2FsZUxhYmVsQ29sb3IgfHwgKHRoaXMuZGFya01vZGUgPyBcImJsYWNrXCIgOiB0aGlzLmxhYmVsVGV4dENvbG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgdGhpc1tcImNTY2FsZUxhYmVsXCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVMYWJlbFwiICsgaV0gfHwgdGhpcy5zY2FsZUxhYmVsQ29sb3I7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wicGllXCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVcIiArIGldO1xuICAgIH1cbiAgICB0aGlzLnBpZVRpdGxlVGV4dFNpemUgPSB0aGlzLnBpZVRpdGxlVGV4dFNpemUgfHwgXCIyNXB4XCI7XG4gICAgdGhpcy5waWVUaXRsZVRleHRDb2xvciA9IHRoaXMucGllVGl0bGVUZXh0Q29sb3IgfHwgdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZSA9IHRoaXMucGllU2VjdGlvblRleHRTaXplIHx8IFwiMTdweFwiO1xuICAgIHRoaXMucGllU2VjdGlvblRleHRDb2xvciA9IHRoaXMucGllU2VjdGlvblRleHRDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnBpZUxlZ2VuZFRleHRTaXplID0gdGhpcy5waWVMZWdlbmRUZXh0U2l6ZSB8fCBcIjE3cHhcIjtcbiAgICB0aGlzLnBpZUxlZ2VuZFRleHRDb2xvciA9IHRoaXMucGllTGVnZW5kVGV4dENvbG9yIHx8IHRoaXMudGFza1RleHREYXJrQ29sb3I7XG4gICAgdGhpcy5waWVTdHJva2VDb2xvciA9IHRoaXMucGllU3Ryb2tlQ29sb3IgfHwgXCJibGFja1wiO1xuICAgIHRoaXMucGllU3Ryb2tlV2lkdGggPSB0aGlzLnBpZVN0cm9rZVdpZHRoIHx8IFwiMnB4XCI7XG4gICAgdGhpcy5waWVPdXRlclN0cm9rZVdpZHRoID0gdGhpcy5waWVPdXRlclN0cm9rZVdpZHRoIHx8IFwiMnB4XCI7XG4gICAgdGhpcy5waWVPdXRlclN0cm9rZUNvbG9yID0gdGhpcy5waWVPdXRlclN0cm9rZUNvbG9yIHx8IFwiYmxhY2tcIjtcbiAgICB0aGlzLnBpZU9wYWNpdHkgPSB0aGlzLnBpZU9wYWNpdHkgfHwgXCIwLjdcIjtcbiAgICB0aGlzLnF1YWRyYW50MUZpbGwgPSB0aGlzLnF1YWRyYW50MUZpbGwgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudDJGaWxsID0gdGhpcy5xdWFkcmFudDJGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyByOiA1LCBnOiA1LCBiOiA1IH0pO1xuICAgIHRoaXMucXVhZHJhbnQzRmlsbCA9IHRoaXMucXVhZHJhbnQzRmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgcjogMTAsIGc6IDEwLCBiOiAxMCB9KTtcbiAgICB0aGlzLnF1YWRyYW50NEZpbGwgPSB0aGlzLnF1YWRyYW50NEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IHI6IDE1LCBnOiAxNSwgYjogMTUgfSk7XG4gICAgdGhpcy5xdWFkcmFudDFUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQxVGV4dEZpbGwgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucXVhZHJhbnQyVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50MlRleHRGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlUZXh0Q29sb3IsIHsgcjogLTUsIGc6IC01LCBiOiAtNSB9KTtcbiAgICB0aGlzLnF1YWRyYW50M1RleHRGaWxsID0gdGhpcy5xdWFkcmFudDNUZXh0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5VGV4dENvbG9yLCB7IHI6IC0xMCwgZzogLTEwLCBiOiAtMTAgfSk7XG4gICAgdGhpcy5xdWFkcmFudDRUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQ0VGV4dEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeVRleHRDb2xvciwgeyByOiAtMTUsIGc6IC0xNSwgYjogLTE1IH0pO1xuICAgIHRoaXMucXVhZHJhbnRQb2ludEZpbGwgPSB0aGlzLnF1YWRyYW50UG9pbnRGaWxsIHx8IGlzRGFyayh0aGlzLnF1YWRyYW50MUZpbGwpID8gbGlnaHRlbih0aGlzLnF1YWRyYW50MUZpbGwpIDogZGFya2VuKHRoaXMucXVhZHJhbnQxRmlsbCk7XG4gICAgdGhpcy5xdWFkcmFudFBvaW50VGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50UG9pbnRUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFhBeGlzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50WEF4aXNUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFlBeGlzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50WUF4aXNUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCA9IHRoaXMucXVhZHJhbnRJbnRlcm5hbEJvcmRlclN0cm9rZUZpbGwgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCA9IHRoaXMucXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZUZpbGwgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFRpdGxlRmlsbCA9IHRoaXMucXVhZHJhbnRUaXRsZUZpbGwgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMuY2xhc3NUZXh0ID0gdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kID0gdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yID0gdGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yIHx8IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplID0gdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemUgfHwgXCIxXCI7XG4gICAgdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvciA9IHRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3IgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucmVsYXRpb25Db2xvciA9IHRoaXMucmVsYXRpb25Db2xvciB8fCB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kID0gdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZCB8fCAodGhpcy5kYXJrTW9kZSA/IGRhcmtlbih0aGlzLnNlY29uZGFyeUNvbG9yLCAzMCkgOiB0aGlzLnNlY29uZGFyeUNvbG9yKTtcbiAgICB0aGlzLnJlbGF0aW9uTGFiZWxDb2xvciA9IHRoaXMucmVsYXRpb25MYWJlbENvbG9yIHx8IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy5naXQwID0gbGlnaHRlbih0aGlzLnNlY29uZGFyeUNvbG9yLCAyMCk7XG4gICAgdGhpcy5naXQxID0gbGlnaHRlbih0aGlzLnBpZTIgfHwgdGhpcy5zZWNvbmRhcnlDb2xvciwgMjApO1xuICAgIHRoaXMuZ2l0MiA9IGxpZ2h0ZW4odGhpcy5waWUzIHx8IHRoaXMudGVydGlhcnlDb2xvciwgMjApO1xuICAgIHRoaXMuZ2l0MyA9IGxpZ2h0ZW4odGhpcy5waWU0IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtMzAgfSksIDIwKTtcbiAgICB0aGlzLmdpdDQgPSBsaWdodGVuKHRoaXMucGllNSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTYwIH0pLCAyMCk7XG4gICAgdGhpcy5naXQ1ID0gbGlnaHRlbih0aGlzLnBpZTYgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC05MCB9KSwgMTApO1xuICAgIHRoaXMuZ2l0NiA9IGxpZ2h0ZW4odGhpcy5waWU3IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiA2MCB9KSwgMTApO1xuICAgIHRoaXMuZ2l0NyA9IGxpZ2h0ZW4odGhpcy5waWU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAgfSksIDIwKTtcbiAgICB0aGlzLmdpdEludjAgPSB0aGlzLmdpdEludjAgfHwgaW52ZXJ0KHRoaXMuZ2l0MCk7XG4gICAgdGhpcy5naXRJbnYxID0gdGhpcy5naXRJbnYxIHx8IGludmVydCh0aGlzLmdpdDEpO1xuICAgIHRoaXMuZ2l0SW52MiA9IHRoaXMuZ2l0SW52MiB8fCBpbnZlcnQodGhpcy5naXQyKTtcbiAgICB0aGlzLmdpdEludjMgPSB0aGlzLmdpdEludjMgfHwgaW52ZXJ0KHRoaXMuZ2l0Myk7XG4gICAgdGhpcy5naXRJbnY0ID0gdGhpcy5naXRJbnY0IHx8IGludmVydCh0aGlzLmdpdDQpO1xuICAgIHRoaXMuZ2l0SW52NSA9IHRoaXMuZ2l0SW52NSB8fCBpbnZlcnQodGhpcy5naXQ1KTtcbiAgICB0aGlzLmdpdEludjYgPSB0aGlzLmdpdEludjYgfHwgaW52ZXJ0KHRoaXMuZ2l0Nik7XG4gICAgdGhpcy5naXRJbnY3ID0gdGhpcy5naXRJbnY3IHx8IGludmVydCh0aGlzLmdpdDcpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwwID0gdGhpcy5naXRCcmFuY2hMYWJlbDAgfHwgaW52ZXJ0KHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwxID0gdGhpcy5naXRCcmFuY2hMYWJlbDEgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMiA9IHRoaXMuZ2l0QnJhbmNoTGFiZWwyIHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDMgPSB0aGlzLmdpdEJyYW5jaExhYmVsMyB8fCBpbnZlcnQodGhpcy5sYWJlbFRleHRDb2xvcik7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDQgPSB0aGlzLmdpdEJyYW5jaExhYmVsNCB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw1ID0gdGhpcy5naXRCcmFuY2hMYWJlbDUgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNiA9IHRoaXMuZ2l0QnJhbmNoTGFiZWw2IHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDcgPSB0aGlzLmdpdEJyYW5jaExhYmVsNyB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxDb2xvciA9IHRoaXMudGFnTGFiZWxDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEJhY2tncm91bmQgPSB0aGlzLnRhZ0xhYmVsQmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnRhZ0xhYmVsQm9yZGVyID0gdGhpcy50YWdCb3JkZXIgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEZvbnRTaXplID0gdGhpcy50YWdMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuY29tbWl0TGFiZWxDb2xvciA9IHRoaXMuY29tbWl0TGFiZWxDb2xvciB8fCB0aGlzLnNlY29uZGFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZCA9IHRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5jb21taXRMYWJlbEZvbnRTaXplID0gdGhpcy5jb21taXRMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkID0gdGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JPZGQgfHwgbGlnaHRlbih0aGlzLmJhY2tncm91bmQsIDEyKTtcbiAgICB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gPSB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gfHwgbGlnaHRlbih0aGlzLmJhY2tncm91bmQsIDIpO1xuICB9XG4gIGNhbGN1bGF0ZShvdmVycmlkZXMpIHtcbiAgICBpZiAodHlwZW9mIG92ZXJyaWRlcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy51cGRhdGVDb2xvcnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlcyk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlQ29sb3JzKCk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICB9XG59O1xuY29uc3QgZ2V0VGhlbWVWYXJpYWJsZXMkMyA9ICh1c2VyT3ZlcnJpZGVzKSA9PiB7XG4gIGNvbnN0IHRoZW1lMiA9IG5ldyBUaGVtZSQzKCk7XG4gIHRoZW1lMi5jYWxjdWxhdGUodXNlck92ZXJyaWRlcyk7XG4gIHJldHVybiB0aGVtZTI7XG59O1xubGV0IFRoZW1lJDIgPSBjbGFzcyBUaGVtZTMge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJhY2tncm91bmQgPSBcIiNmNGY0ZjRcIjtcbiAgICB0aGlzLnByaW1hcnlDb2xvciA9IFwiI0VDRUNGRlwiO1xuICAgIHRoaXMuc2Vjb25kYXJ5Q29sb3IgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTIwIH0pO1xuICAgIHRoaXMuc2Vjb25kYXJ5Q29sb3IgPSBcIiNmZmZmZGVcIjtcbiAgICB0aGlzLnRlcnRpYXJ5Q29sb3IgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTE2MCB9KTtcbiAgICB0aGlzLnByaW1hcnlCb3JkZXJDb2xvciA9IG1rQm9yZGVyKHRoaXMucHJpbWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy5zZWNvbmRhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy50ZXJ0aWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnByaW1hcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5wcmltYXJ5Q29sb3IpO1xuICAgIHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMudGVydGlhcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy50ZXJ0aWFyeUNvbG9yKTtcbiAgICB0aGlzLmxpbmVDb2xvciA9IGludmVydCh0aGlzLmJhY2tncm91bmQpO1xuICAgIHRoaXMudGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuYmFja2dyb3VuZCk7XG4gICAgdGhpcy5iYWNrZ3JvdW5kID0gXCJ3aGl0ZVwiO1xuICAgIHRoaXMubWFpbkJrZyA9IFwiI0VDRUNGRlwiO1xuICAgIHRoaXMuc2Vjb25kQmtnID0gXCIjZmZmZmRlXCI7XG4gICAgdGhpcy5saW5lQ29sb3IgPSBcIiMzMzMzMzNcIjtcbiAgICB0aGlzLmJvcmRlcjEgPSBcIiM5MzcwREJcIjtcbiAgICB0aGlzLmJvcmRlcjIgPSBcIiNhYWFhMzNcIjtcbiAgICB0aGlzLmFycm93aGVhZENvbG9yID0gXCIjMzMzMzMzXCI7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gJ1widHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLmZvbnRTaXplID0gXCIxNnB4XCI7XG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmQgPSBcIiNlOGU4ZThcIjtcbiAgICB0aGlzLnRleHRDb2xvciA9IFwiIzMzM1wiO1xuICAgIHRoaXMuVEhFTUVfQ09MT1JfTElNSVQgPSAxMjtcbiAgICB0aGlzLm5vZGVCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm5vZGVCb3JkZXIgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmNsdXN0ZXJCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmNsdXN0ZXJCb3JkZXIgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmRlZmF1bHRMaW5rQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRpdGxlQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdG9yQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RvckJrZyA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0b3JUZXh0Q29sb3IgPSBcImJsYWNrXCI7XG4gICAgdGhpcy5hY3RvckxpbmVDb2xvciA9IFwiZ3JleVwiO1xuICAgIHRoaXMuc2lnbmFsQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnNpZ25hbFRleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxCb3hCa2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubGFiZWxUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmxvb3BUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm5vdGVCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubm90ZUJrZ0NvbG9yID0gXCIjZmZmNWFkXCI7XG4gICAgdGhpcy5ub3RlVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3IgPSBcIiM2NjZcIjtcbiAgICB0aGlzLmFjdGl2YXRpb25Ca2dDb2xvciA9IFwiI2Y0ZjRmNFwiO1xuICAgIHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvciA9IFwid2hpdGVcIjtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5leGNsdWRlQmtnQ29sb3IgPSBcIiNlZWVlZWVcIjtcbiAgICB0aGlzLnRhc2tCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dExpZ2h0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRhc2tUZXh0Q29sb3IgPSB0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcjtcbiAgICB0aGlzLnRhc2tUZXh0RGFya0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvciA9IHRoaXMudGFza1RleHREYXJrQ29sb3I7XG4gICAgdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuZ3JpZENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kb25lVGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kb25lVGFza0JvcmRlckNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5jcml0Qm9yZGVyQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmNyaXRCa2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudG9kYXlMaW5lQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IHJnYmEoMTAyLCAxMDIsIDI1NSwgMC40OSk7XG4gICAgdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3IgPSBcIndoaXRlXCI7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IyID0gXCIjZmZmNDAwXCI7XG4gICAgdGhpcy50YXNrQm9yZGVyQ29sb3IgPSBcIiM1MzRmYmNcIjtcbiAgICB0aGlzLnRhc2tCa2dDb2xvciA9IFwiIzhhOTBkZFwiO1xuICAgIHRoaXMudGFza1RleHRMaWdodENvbG9yID0gXCJ3aGl0ZVwiO1xuICAgIHRoaXMudGFza1RleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGFza1RleHREYXJrQ29sb3IgPSBcImJsYWNrXCI7XG4gICAgdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvciA9IFwiIzAwMzE2M1wiO1xuICAgIHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yID0gXCIjNTM0ZmJjXCI7XG4gICAgdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3IgPSBcIiNiZmM3ZmZcIjtcbiAgICB0aGlzLmdyaWRDb2xvciA9IFwibGlnaHRncmV5XCI7XG4gICAgdGhpcy5kb25lVGFza0JrZ0NvbG9yID0gXCJsaWdodGdyZXlcIjtcbiAgICB0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3IgPSBcImdyZXlcIjtcbiAgICB0aGlzLmNyaXRCb3JkZXJDb2xvciA9IFwiI2ZmODg4OFwiO1xuICAgIHRoaXMuY3JpdEJrZ0NvbG9yID0gXCJyZWRcIjtcbiAgICB0aGlzLnRvZGF5TGluZUNvbG9yID0gXCJyZWRcIjtcbiAgICB0aGlzLnBlcnNvbkJvcmRlciA9IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMucGVyc29uQmtnID0gdGhpcy5tYWluQmtnO1xuICAgIHRoaXMubGFiZWxDb2xvciA9IFwiYmxhY2tcIjtcbiAgICB0aGlzLmVycm9yQmtnQ29sb3IgPSBcIiM1NTIyMjJcIjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gXCIjNTUyMjIyXCI7XG4gICAgdGhpcy51cGRhdGVDb2xvcnMoKTtcbiAgfVxuICB1cGRhdGVDb2xvcnMoKSB7XG4gICAgdGhpcy5jU2NhbGUwID0gdGhpcy5jU2NhbGUwIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMSA9IHRoaXMuY1NjYWxlMSB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMiA9IHRoaXMuY1NjYWxlMiB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5jU2NhbGUzID0gdGhpcy5jU2NhbGUzIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAzMCB9KTtcbiAgICB0aGlzLmNTY2FsZTQgPSB0aGlzLmNTY2FsZTQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwIH0pO1xuICAgIHRoaXMuY1NjYWxlNSA9IHRoaXMuY1NjYWxlNSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogOTAgfSk7XG4gICAgdGhpcy5jU2NhbGU2ID0gdGhpcy5jU2NhbGU2IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAgfSk7XG4gICAgdGhpcy5jU2NhbGU3ID0gdGhpcy5jU2NhbGU3IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxNTAgfSk7XG4gICAgdGhpcy5jU2NhbGU4ID0gdGhpcy5jU2NhbGU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyMTAgfSk7XG4gICAgdGhpcy5jU2NhbGU5ID0gdGhpcy5jU2NhbGU5IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyNzAgfSk7XG4gICAgdGhpcy5jU2NhbGUxMCA9IHRoaXMuY1NjYWxlMTAgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDMwMCB9KTtcbiAgICB0aGlzLmNTY2FsZTExID0gdGhpcy5jU2NhbGUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMzMwIH0pO1xuICAgIHRoaXNbXCJjU2NhbGVQZWVyMVwiXSA9IHRoaXNbXCJjU2NhbGVQZWVyMVwiXSB8fCBkYXJrZW4odGhpcy5zZWNvbmRhcnlDb2xvciwgNDUpO1xuICAgIHRoaXNbXCJjU2NhbGVQZWVyMlwiXSA9IHRoaXNbXCJjU2NhbGVQZWVyMlwiXSB8fCBkYXJrZW4odGhpcy50ZXJ0aWFyeUNvbG9yLCA0MCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLlRIRU1FX0NPTE9SX0xJTUlUOyBpKyspIHtcbiAgICAgIHRoaXNbXCJjU2NhbGVcIiArIGldID0gZGFya2VuKHRoaXNbXCJjU2NhbGVcIiArIGldLCAxMCk7XG4gICAgICB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gPSB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gfHwgZGFya2VuKHRoaXNbXCJjU2NhbGVcIiArIGldLCAyNSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlSW52XCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVJbnZcIiArIGldIHx8IGFkanVzdCh0aGlzW1wiY1NjYWxlXCIgKyBpXSwgeyBoOiAxODAgfSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgICB0aGlzW1wic3VyZmFjZVwiICsgaV0gPSB0aGlzW1wic3VyZmFjZVwiICsgaV0gfHwgYWRqdXN0KHRoaXMubWFpbkJrZywgeyBoOiAzMCwgbDogLSg1ICsgaSAqIDUpIH0pO1xuICAgICAgdGhpc1tcInN1cmZhY2VQZWVyXCIgKyBpXSA9IHRoaXNbXCJzdXJmYWNlUGVlclwiICsgaV0gfHwgYWRqdXN0KHRoaXMubWFpbkJrZywgeyBoOiAzMCwgbDogLSg3ICsgaSAqIDUpIH0pO1xuICAgIH1cbiAgICB0aGlzLnNjYWxlTGFiZWxDb2xvciA9IHRoaXMuc2NhbGVMYWJlbENvbG9yICE9PSBcImNhbGN1bGF0ZWRcIiAmJiB0aGlzLnNjYWxlTGFiZWxDb2xvciA/IHRoaXMuc2NhbGVMYWJlbENvbG9yIDogdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICBpZiAodGhpcy5sYWJlbFRleHRDb2xvciAhPT0gXCJjYWxjdWxhdGVkXCIpIHtcbiAgICAgIHRoaXMuY1NjYWxlTGFiZWwwID0gdGhpcy5jU2NhbGVMYWJlbDAgfHwgaW52ZXJ0KHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgICAgdGhpcy5jU2NhbGVMYWJlbDMgPSB0aGlzLmNTY2FsZUxhYmVsMyB8fCBpbnZlcnQodGhpcy5sYWJlbFRleHRDb2xvcik7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgICB0aGlzW1wiY1NjYWxlTGFiZWxcIiArIGldID0gdGhpc1tcImNTY2FsZUxhYmVsXCIgKyBpXSB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5vZGVCa2cgPSB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5ub2RlQm9yZGVyID0gdGhpcy5ib3JkZXIxO1xuICAgIHRoaXMuY2x1c3RlckJrZyA9IHRoaXMuc2Vjb25kQmtnO1xuICAgIHRoaXMuY2x1c3RlckJvcmRlciA9IHRoaXMuYm9yZGVyMjtcbiAgICB0aGlzLmRlZmF1bHRMaW5rQ29sb3IgPSB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnRpdGxlQ29sb3IgPSB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQgPSB0aGlzLmxhYmVsQmFja2dyb3VuZDtcbiAgICB0aGlzLmFjdG9yQm9yZGVyID0gbGlnaHRlbih0aGlzLmJvcmRlcjEsIDIzKTtcbiAgICB0aGlzLmFjdG9yQmtnID0gdGhpcy5tYWluQmtnO1xuICAgIHRoaXMubGFiZWxCb3hCa2dDb2xvciA9IHRoaXMuYWN0b3JCa2c7XG4gICAgdGhpcy5zaWduYWxDb2xvciA9IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMuc2lnbmFsVGV4dENvbG9yID0gdGhpcy50ZXh0Q29sb3I7XG4gICAgdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yID0gdGhpcy5hY3RvckJvcmRlcjtcbiAgICB0aGlzLmxhYmVsVGV4dENvbG9yID0gdGhpcy5hY3RvclRleHRDb2xvcjtcbiAgICB0aGlzLmxvb3BUZXh0Q29sb3IgPSB0aGlzLmFjdG9yVGV4dENvbG9yO1xuICAgIHRoaXMubm90ZUJvcmRlckNvbG9yID0gdGhpcy5ib3JkZXIyO1xuICAgIHRoaXMubm90ZVRleHRDb2xvciA9IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dENvbG9yID0gdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvciA9IHRoaXMudGFza1RleHREYXJrQ29sb3I7XG4gICAgdGhpcy50cmFuc2l0aW9uQ29sb3IgPSB0aGlzLnRyYW5zaXRpb25Db2xvciB8fCB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yID0gdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnN0YXRlTGFiZWxDb2xvciA9IHRoaXMuc3RhdGVMYWJlbENvbG9yIHx8IHRoaXMuc3RhdGVCa2cgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMuc3RhdGVCa2cgPSB0aGlzLnN0YXRlQmtnIHx8IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yID0gdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvciB8fCB0aGlzLnN0YXRlQmtnO1xuICAgIHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZCA9IHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZCB8fCB0aGlzLmJhY2tncm91bmQgfHwgdGhpcy50ZXJ0aWFyeUNvbG9yO1xuICAgIHRoaXMuYWx0QmFja2dyb3VuZCA9IHRoaXMuYWx0QmFja2dyb3VuZCB8fCBcIiNmMGYwZjBcIjtcbiAgICB0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZCA9IHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kIHx8IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmNvbXBvc2l0ZUJvcmRlciA9IHRoaXMuY29tcG9zaXRlQm9yZGVyIHx8IHRoaXMubm9kZUJvcmRlcjtcbiAgICB0aGlzLmlubmVyRW5kQmFja2dyb3VuZCA9IHRoaXMubm9kZUJvcmRlcjtcbiAgICB0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yID0gdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5lcnJvckJrZ0NvbG9yID0gdGhpcy5lcnJvckJrZ0NvbG9yIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gdGhpcy5lcnJvclRleHRDb2xvciB8fCB0aGlzLnRlcnRpYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMudHJhbnNpdGlvbkNvbG9yID0gdGhpcy50cmFuc2l0aW9uQ29sb3IgfHwgdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5jbGFzc1RleHQgPSB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTAgPSB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLmZpbGxUeXBlMSA9IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTIgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTMgPSBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBoOiA2NCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNCA9IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTUgPSBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBoOiAtNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTYgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTI4IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU3ID0gYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogMTI4IH0pO1xuICAgIHRoaXMucGllMSA9IHRoaXMucGllMSB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnBpZTIgPSB0aGlzLnBpZTIgfHwgdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLnBpZTMgPSB0aGlzLnBpZTMgfHwgYWRqdXN0KHRoaXMudGVydGlhcnlDb2xvciwgeyBsOiAtNDAgfSk7XG4gICAgdGhpcy5waWU0ID0gdGhpcy5waWU0IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBsOiAtMTAgfSk7XG4gICAgdGhpcy5waWU1ID0gdGhpcy5waWU1IHx8IGFkanVzdCh0aGlzLnNlY29uZGFyeUNvbG9yLCB7IGw6IC0zMCB9KTtcbiAgICB0aGlzLnBpZTYgPSB0aGlzLnBpZTYgfHwgYWRqdXN0KHRoaXMudGVydGlhcnlDb2xvciwgeyBsOiAtMjAgfSk7XG4gICAgdGhpcy5waWU3ID0gdGhpcy5waWU3IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiA2MCwgbDogLTIwIH0pO1xuICAgIHRoaXMucGllOCA9IHRoaXMucGllOCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTYwLCBsOiAtNDAgfSk7XG4gICAgdGhpcy5waWU5ID0gdGhpcy5waWU5IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAsIGw6IC00MCB9KTtcbiAgICB0aGlzLnBpZTEwID0gdGhpcy5waWUxMCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjAsIGw6IC00MCB9KTtcbiAgICB0aGlzLnBpZTExID0gdGhpcy5waWUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTkwLCBsOiAtNDAgfSk7XG4gICAgdGhpcy5waWUxMiA9IHRoaXMucGllMTIgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCwgbDogLTMwIH0pO1xuICAgIHRoaXMucGllVGl0bGVUZXh0U2l6ZSA9IHRoaXMucGllVGl0bGVUZXh0U2l6ZSB8fCBcIjI1cHhcIjtcbiAgICB0aGlzLnBpZVRpdGxlVGV4dENvbG9yID0gdGhpcy5waWVUaXRsZVRleHRDb2xvciB8fCB0aGlzLnRhc2tUZXh0RGFya0NvbG9yO1xuICAgIHRoaXMucGllU2VjdGlvblRleHRTaXplID0gdGhpcy5waWVTZWN0aW9uVGV4dFNpemUgfHwgXCIxN3B4XCI7XG4gICAgdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yID0gdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dFNpemUgPSB0aGlzLnBpZUxlZ2VuZFRleHRTaXplIHx8IFwiMTdweFwiO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dENvbG9yID0gdGhpcy5waWVMZWdlbmRUZXh0Q29sb3IgfHwgdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLnBpZVN0cm9rZUNvbG9yID0gdGhpcy5waWVTdHJva2VDb2xvciB8fCBcImJsYWNrXCI7XG4gICAgdGhpcy5waWVTdHJva2VXaWR0aCA9IHRoaXMucGllU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggPSB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgPSB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgfHwgXCJibGFja1wiO1xuICAgIHRoaXMucGllT3BhY2l0eSA9IHRoaXMucGllT3BhY2l0eSB8fCBcIjAuN1wiO1xuICAgIHRoaXMucXVhZHJhbnQxRmlsbCA9IHRoaXMucXVhZHJhbnQxRmlsbCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50MkZpbGwgPSB0aGlzLnF1YWRyYW50MkZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IHI6IDUsIGc6IDUsIGI6IDUgfSk7XG4gICAgdGhpcy5xdWFkcmFudDNGaWxsID0gdGhpcy5xdWFkcmFudDNGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyByOiAxMCwgZzogMTAsIGI6IDEwIH0pO1xuICAgIHRoaXMucXVhZHJhbnQ0RmlsbCA9IHRoaXMucXVhZHJhbnQ0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgcjogMTUsIGc6IDE1LCBiOiAxNSB9KTtcbiAgICB0aGlzLnF1YWRyYW50MVRleHRGaWxsID0gdGhpcy5xdWFkcmFudDFUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudDJUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQyVGV4dEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeVRleHRDb2xvciwgeyByOiAtNSwgZzogLTUsIGI6IC01IH0pO1xuICAgIHRoaXMucXVhZHJhbnQzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50M1RleHRGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlUZXh0Q29sb3IsIHsgcjogLTEwLCBnOiAtMTAsIGI6IC0xMCB9KTtcbiAgICB0aGlzLnF1YWRyYW50NFRleHRGaWxsID0gdGhpcy5xdWFkcmFudDRUZXh0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5VGV4dENvbG9yLCB7IHI6IC0xNSwgZzogLTE1LCBiOiAtMTUgfSk7XG4gICAgdGhpcy5xdWFkcmFudFBvaW50RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludEZpbGwgfHwgaXNEYXJrKHRoaXMucXVhZHJhbnQxRmlsbCkgPyBsaWdodGVuKHRoaXMucXVhZHJhbnQxRmlsbCkgOiBkYXJrZW4odGhpcy5xdWFkcmFudDFGaWxsKTtcbiAgICB0aGlzLnF1YWRyYW50UG9pbnRUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludFRleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WEF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRYQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WUF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRZQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50VGl0bGVGaWxsID0gdGhpcy5xdWFkcmFudFRpdGxlRmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQgPSB0aGlzLnJlcXVpcmVtZW50QmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemUgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZSB8fCBcIjFcIjtcbiAgICB0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yID0gdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZWxhdGlvbkNvbG9yID0gdGhpcy5yZWxhdGlvbkNvbG9yIHx8IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmQgPSB0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kIHx8IHRoaXMubGFiZWxCYWNrZ3JvdW5kO1xuICAgIHRoaXMucmVsYXRpb25MYWJlbENvbG9yID0gdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3IgfHwgdGhpcy5hY3RvclRleHRDb2xvcjtcbiAgICB0aGlzLmdpdDAgPSB0aGlzLmdpdDAgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5naXQxID0gdGhpcy5naXQxIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5naXQyID0gdGhpcy5naXQyIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmdpdDMgPSB0aGlzLmdpdDMgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC0zMCB9KTtcbiAgICB0aGlzLmdpdDQgPSB0aGlzLmdpdDQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC02MCB9KTtcbiAgICB0aGlzLmdpdDUgPSB0aGlzLmdpdDUgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IC05MCB9KTtcbiAgICB0aGlzLmdpdDYgPSB0aGlzLmdpdDYgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwIH0pO1xuICAgIHRoaXMuZ2l0NyA9IHRoaXMuZ2l0NyB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTIwIH0pO1xuICAgIGlmICh0aGlzLmRhcmtNb2RlKSB7XG4gICAgICB0aGlzLmdpdDAgPSBsaWdodGVuKHRoaXMuZ2l0MCwgMjUpO1xuICAgICAgdGhpcy5naXQxID0gbGlnaHRlbih0aGlzLmdpdDEsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MiA9IGxpZ2h0ZW4odGhpcy5naXQyLCAyNSk7XG4gICAgICB0aGlzLmdpdDMgPSBsaWdodGVuKHRoaXMuZ2l0MywgMjUpO1xuICAgICAgdGhpcy5naXQ0ID0gbGlnaHRlbih0aGlzLmdpdDQsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NSA9IGxpZ2h0ZW4odGhpcy5naXQ1LCAyNSk7XG4gICAgICB0aGlzLmdpdDYgPSBsaWdodGVuKHRoaXMuZ2l0NiwgMjUpO1xuICAgICAgdGhpcy5naXQ3ID0gbGlnaHRlbih0aGlzLmdpdDcsIDI1KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5naXQwID0gZGFya2VuKHRoaXMuZ2l0MCwgMjUpO1xuICAgICAgdGhpcy5naXQxID0gZGFya2VuKHRoaXMuZ2l0MSwgMjUpO1xuICAgICAgdGhpcy5naXQyID0gZGFya2VuKHRoaXMuZ2l0MiwgMjUpO1xuICAgICAgdGhpcy5naXQzID0gZGFya2VuKHRoaXMuZ2l0MywgMjUpO1xuICAgICAgdGhpcy5naXQ0ID0gZGFya2VuKHRoaXMuZ2l0NCwgMjUpO1xuICAgICAgdGhpcy5naXQ1ID0gZGFya2VuKHRoaXMuZ2l0NSwgMjUpO1xuICAgICAgdGhpcy5naXQ2ID0gZGFya2VuKHRoaXMuZ2l0NiwgMjUpO1xuICAgICAgdGhpcy5naXQ3ID0gZGFya2VuKHRoaXMuZ2l0NywgMjUpO1xuICAgIH1cbiAgICB0aGlzLmdpdEludjAgPSB0aGlzLmdpdEludjAgfHwgZGFya2VuKGludmVydCh0aGlzLmdpdDApLCAyNSk7XG4gICAgdGhpcy5naXRJbnYxID0gdGhpcy5naXRJbnYxIHx8IGludmVydCh0aGlzLmdpdDEpO1xuICAgIHRoaXMuZ2l0SW52MiA9IHRoaXMuZ2l0SW52MiB8fCBpbnZlcnQodGhpcy5naXQyKTtcbiAgICB0aGlzLmdpdEludjMgPSB0aGlzLmdpdEludjMgfHwgaW52ZXJ0KHRoaXMuZ2l0Myk7XG4gICAgdGhpcy5naXRJbnY0ID0gdGhpcy5naXRJbnY0IHx8IGludmVydCh0aGlzLmdpdDQpO1xuICAgIHRoaXMuZ2l0SW52NSA9IHRoaXMuZ2l0SW52NSB8fCBpbnZlcnQodGhpcy5naXQ1KTtcbiAgICB0aGlzLmdpdEludjYgPSB0aGlzLmdpdEludjYgfHwgaW52ZXJ0KHRoaXMuZ2l0Nik7XG4gICAgdGhpcy5naXRJbnY3ID0gdGhpcy5naXRJbnY3IHx8IGludmVydCh0aGlzLmdpdDcpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwwID0gdGhpcy5naXRCcmFuY2hMYWJlbDAgfHwgaW52ZXJ0KHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwxID0gdGhpcy5naXRCcmFuY2hMYWJlbDEgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMiA9IHRoaXMuZ2l0QnJhbmNoTGFiZWwyIHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDMgPSB0aGlzLmdpdEJyYW5jaExhYmVsMyB8fCBpbnZlcnQodGhpcy5sYWJlbFRleHRDb2xvcik7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDQgPSB0aGlzLmdpdEJyYW5jaExhYmVsNCB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw1ID0gdGhpcy5naXRCcmFuY2hMYWJlbDUgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNiA9IHRoaXMuZ2l0QnJhbmNoTGFiZWw2IHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDcgPSB0aGlzLmdpdEJyYW5jaExhYmVsNyB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxDb2xvciA9IHRoaXMudGFnTGFiZWxDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEJhY2tncm91bmQgPSB0aGlzLnRhZ0xhYmVsQmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnRhZ0xhYmVsQm9yZGVyID0gdGhpcy50YWdCb3JkZXIgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEZvbnRTaXplID0gdGhpcy50YWdMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuY29tbWl0TGFiZWxDb2xvciA9IHRoaXMuY29tbWl0TGFiZWxDb2xvciB8fCB0aGlzLnNlY29uZGFyeVRleHRDb2xvcjtcbiAgICB0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZCA9IHRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kIHx8IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5jb21taXRMYWJlbEZvbnRTaXplID0gdGhpcy5jb21taXRMYWJlbEZvbnRTaXplIHx8IFwiMTBweFwiO1xuICAgIHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkID0gdGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JPZGQgfHwgb2xkQXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkO1xuICAgIHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbiA9IHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbiB8fCBvbGRBdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVuO1xuICB9XG4gIGNhbGN1bGF0ZShvdmVycmlkZXMpIHtcbiAgICBpZiAodHlwZW9mIG92ZXJyaWRlcyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhpcy51cGRhdGVDb2xvcnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlcyk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlQ29sb3JzKCk7XG4gICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICB0aGlzW2tdID0gb3ZlcnJpZGVzW2tdO1xuICAgIH0pO1xuICB9XG59O1xuY29uc3QgZ2V0VGhlbWVWYXJpYWJsZXMkMiA9ICh1c2VyT3ZlcnJpZGVzKSA9PiB7XG4gIGNvbnN0IHRoZW1lMiA9IG5ldyBUaGVtZSQyKCk7XG4gIHRoZW1lMi5jYWxjdWxhdGUodXNlck92ZXJyaWRlcyk7XG4gIHJldHVybiB0aGVtZTI7XG59O1xubGV0IFRoZW1lJDEgPSBjbGFzcyBUaGVtZTQge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJhY2tncm91bmQgPSBcIiNmNGY0ZjRcIjtcbiAgICB0aGlzLnByaW1hcnlDb2xvciA9IFwiI2NkZTQ5OFwiO1xuICAgIHRoaXMuc2Vjb25kYXJ5Q29sb3IgPSBcIiNjZGZmYjJcIjtcbiAgICB0aGlzLmJhY2tncm91bmQgPSBcIndoaXRlXCI7XG4gICAgdGhpcy5tYWluQmtnID0gXCIjY2RlNDk4XCI7XG4gICAgdGhpcy5zZWNvbmRCa2cgPSBcIiNjZGZmYjJcIjtcbiAgICB0aGlzLmxpbmVDb2xvciA9IFwiZ3JlZW5cIjtcbiAgICB0aGlzLmJvcmRlcjEgPSBcIiMxMzU0MGNcIjtcbiAgICB0aGlzLmJvcmRlcjIgPSBcIiM2ZWFhNDlcIjtcbiAgICB0aGlzLmFycm93aGVhZENvbG9yID0gXCJncmVlblwiO1xuICAgIHRoaXMuZm9udEZhbWlseSA9ICdcInRyZWJ1Y2hldCBtc1wiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZic7XG4gICAgdGhpcy5mb250U2l6ZSA9IFwiMTZweFwiO1xuICAgIHRoaXMudGVydGlhcnlDb2xvciA9IGxpZ2h0ZW4oXCIjY2RlNDk4XCIsIDEwKTtcbiAgICB0aGlzLnByaW1hcnlCb3JkZXJDb2xvciA9IG1rQm9yZGVyKHRoaXMucHJpbWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy5zZWNvbmRhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy50ZXJ0aWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnByaW1hcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5wcmltYXJ5Q29sb3IpO1xuICAgIHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMudGVydGlhcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5wcmltYXJ5Q29sb3IpO1xuICAgIHRoaXMubGluZUNvbG9yID0gaW52ZXJ0KHRoaXMuYmFja2dyb3VuZCk7XG4gICAgdGhpcy50ZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5iYWNrZ3JvdW5kKTtcbiAgICB0aGlzLlRIRU1FX0NPTE9SX0xJTUlUID0gMTI7XG4gICAgdGhpcy5ub2RlQmtnID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ub2RlQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5jbHVzdGVyQmtnID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5jbHVzdGVyQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5kZWZhdWx0TGlua0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50aXRsZUNvbG9yID0gXCIjMzMzXCI7XG4gICAgdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kID0gXCIjZThlOGU4XCI7XG4gICAgdGhpcy5hY3RvckJvcmRlciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0b3JCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdG9yVGV4dENvbG9yID0gXCJibGFja1wiO1xuICAgIHRoaXMuYWN0b3JMaW5lQ29sb3IgPSBcImdyZXlcIjtcbiAgICB0aGlzLnNpZ25hbENvbG9yID0gXCIjMzMzXCI7XG4gICAgdGhpcy5zaWduYWxUZXh0Q29sb3IgPSBcIiMzMzNcIjtcbiAgICB0aGlzLmxhYmVsQm94QmtnQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3IgPSBcIiMzMjY5MzJcIjtcbiAgICB0aGlzLmxhYmVsVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5sb29wVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ub3RlQm9yZGVyQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm5vdGVCa2dDb2xvciA9IFwiI2ZmZjVhZFwiO1xuICAgIHRoaXMubm90ZVRleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yID0gXCIjNjY2XCI7XG4gICAgdGhpcy5hY3RpdmF0aW9uQmtnQ29sb3IgPSBcIiNmNGY0ZjRcIjtcbiAgICB0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3IgPSBcIndoaXRlXCI7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IgPSBcIiM2ZWFhNDlcIjtcbiAgICB0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvciA9IFwid2hpdGVcIjtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvcjIgPSBcIiM2ZWFhNDlcIjtcbiAgICB0aGlzLmV4Y2x1ZGVCa2dDb2xvciA9IFwiI2VlZWVlZVwiO1xuICAgIHRoaXMudGFza0JvcmRlckNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrQmtnQ29sb3IgPSBcIiM0ODdlM2FcIjtcbiAgICB0aGlzLnRhc2tUZXh0TGlnaHRDb2xvciA9IFwid2hpdGVcIjtcbiAgICB0aGlzLnRhc2tUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRhc2tUZXh0RGFya0NvbG9yID0gXCJibGFja1wiO1xuICAgIHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3IgPSBcIiMwMDMxNjNcIjtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ncmlkQ29sb3IgPSBcImxpZ2h0Z3JleVwiO1xuICAgIHRoaXMuZG9uZVRhc2tCa2dDb2xvciA9IFwibGlnaHRncmV5XCI7XG4gICAgdGhpcy5kb25lVGFza0JvcmRlckNvbG9yID0gXCJncmV5XCI7XG4gICAgdGhpcy5jcml0Qm9yZGVyQ29sb3IgPSBcIiNmZjg4ODhcIjtcbiAgICB0aGlzLmNyaXRCa2dDb2xvciA9IFwicmVkXCI7XG4gICAgdGhpcy50b2RheUxpbmVDb2xvciA9IFwicmVkXCI7XG4gICAgdGhpcy5wZXJzb25Cb3JkZXIgPSB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnBlcnNvbkJrZyA9IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLmxhYmVsQ29sb3IgPSBcImJsYWNrXCI7XG4gICAgdGhpcy5lcnJvckJrZ0NvbG9yID0gXCIjNTUyMjIyXCI7XG4gICAgdGhpcy5lcnJvclRleHRDb2xvciA9IFwiIzU1MjIyMlwiO1xuICB9XG4gIHVwZGF0ZUNvbG9ycygpIHtcbiAgICB0aGlzLmFjdG9yQm9yZGVyID0gZGFya2VuKHRoaXMubWFpbkJrZywgMjApO1xuICAgIHRoaXMuYWN0b3JCa2cgPSB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5sYWJlbEJveEJrZ0NvbG9yID0gdGhpcy5hY3RvckJrZztcbiAgICB0aGlzLmxhYmVsVGV4dENvbG9yID0gdGhpcy5hY3RvclRleHRDb2xvcjtcbiAgICB0aGlzLmxvb3BUZXh0Q29sb3IgPSB0aGlzLmFjdG9yVGV4dENvbG9yO1xuICAgIHRoaXMubm90ZUJvcmRlckNvbG9yID0gdGhpcy5ib3JkZXIyO1xuICAgIHRoaXMubm90ZVRleHRDb2xvciA9IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy5jU2NhbGUwID0gdGhpcy5jU2NhbGUwIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMSA9IHRoaXMuY1NjYWxlMSB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuY1NjYWxlMiA9IHRoaXMuY1NjYWxlMiB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5jU2NhbGUzID0gdGhpcy5jU2NhbGUzIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAzMCB9KTtcbiAgICB0aGlzLmNTY2FsZTQgPSB0aGlzLmNTY2FsZTQgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwIH0pO1xuICAgIHRoaXMuY1NjYWxlNSA9IHRoaXMuY1NjYWxlNSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogOTAgfSk7XG4gICAgdGhpcy5jU2NhbGU2ID0gdGhpcy5jU2NhbGU2IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAgfSk7XG4gICAgdGhpcy5jU2NhbGU3ID0gdGhpcy5jU2NhbGU3IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxNTAgfSk7XG4gICAgdGhpcy5jU2NhbGU4ID0gdGhpcy5jU2NhbGU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyMTAgfSk7XG4gICAgdGhpcy5jU2NhbGU5ID0gdGhpcy5jU2NhbGU5IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAyNzAgfSk7XG4gICAgdGhpcy5jU2NhbGUxMCA9IHRoaXMuY1NjYWxlMTAgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDMwMCB9KTtcbiAgICB0aGlzLmNTY2FsZTExID0gdGhpcy5jU2NhbGUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMzMwIH0pO1xuICAgIHRoaXNbXCJjU2NhbGVQZWVyMVwiXSA9IHRoaXNbXCJjU2NhbGVQZWVyMVwiXSB8fCBkYXJrZW4odGhpcy5zZWNvbmRhcnlDb2xvciwgNDUpO1xuICAgIHRoaXNbXCJjU2NhbGVQZWVyMlwiXSA9IHRoaXNbXCJjU2NhbGVQZWVyMlwiXSB8fCBkYXJrZW4odGhpcy50ZXJ0aWFyeUNvbG9yLCA0MCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLlRIRU1FX0NPTE9SX0xJTUlUOyBpKyspIHtcbiAgICAgIHRoaXNbXCJjU2NhbGVcIiArIGldID0gZGFya2VuKHRoaXNbXCJjU2NhbGVcIiArIGldLCAxMCk7XG4gICAgICB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gPSB0aGlzW1wiY1NjYWxlUGVlclwiICsgaV0gfHwgZGFya2VuKHRoaXNbXCJjU2NhbGVcIiArIGldLCAyNSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlSW52XCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVJbnZcIiArIGldIHx8IGFkanVzdCh0aGlzW1wiY1NjYWxlXCIgKyBpXSwgeyBoOiAxODAgfSk7XG4gICAgfVxuICAgIHRoaXMuc2NhbGVMYWJlbENvbG9yID0gdGhpcy5zY2FsZUxhYmVsQ29sb3IgIT09IFwiY2FsY3VsYXRlZFwiICYmIHRoaXMuc2NhbGVMYWJlbENvbG9yID8gdGhpcy5zY2FsZUxhYmVsQ29sb3IgOiB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5USEVNRV9DT0xPUl9MSU1JVDsgaSsrKSB7XG4gICAgICB0aGlzW1wiY1NjYWxlTGFiZWxcIiArIGldID0gdGhpc1tcImNTY2FsZUxhYmVsXCIgKyBpXSB8fCB0aGlzLnNjYWxlTGFiZWxDb2xvcjtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgIHRoaXNbXCJzdXJmYWNlXCIgKyBpXSA9IHRoaXNbXCJzdXJmYWNlXCIgKyBpXSB8fCBhZGp1c3QodGhpcy5tYWluQmtnLCB7IGg6IDMwLCBzOiAtMzAsIGw6IC0oNSArIGkgKiA1KSB9KTtcbiAgICAgIHRoaXNbXCJzdXJmYWNlUGVlclwiICsgaV0gPSB0aGlzW1wic3VyZmFjZVBlZXJcIiArIGldIHx8IGFkanVzdCh0aGlzLm1haW5Ca2csIHsgaDogMzAsIHM6IC0zMCwgbDogLSg4ICsgaSAqIDUpIH0pO1xuICAgIH1cbiAgICB0aGlzLm5vZGVCa2cgPSB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5ub2RlQm9yZGVyID0gdGhpcy5ib3JkZXIxO1xuICAgIHRoaXMuY2x1c3RlckJrZyA9IHRoaXMuc2Vjb25kQmtnO1xuICAgIHRoaXMuY2x1c3RlckJvcmRlciA9IHRoaXMuYm9yZGVyMjtcbiAgICB0aGlzLmRlZmF1bHRMaW5rQ29sb3IgPSB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnRhc2tCb3JkZXJDb2xvciA9IHRoaXMuYm9yZGVyMTtcbiAgICB0aGlzLnRhc2tUZXh0Q29sb3IgPSB0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcjtcbiAgICB0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yID0gdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvciA9IHRoaXMudGFza0JvcmRlckNvbG9yO1xuICAgIHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yID0gdGhpcy5tYWluQmtnO1xuICAgIHRoaXMudHJhbnNpdGlvbkNvbG9yID0gdGhpcy50cmFuc2l0aW9uQ29sb3IgfHwgdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvciA9IHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3IgfHwgdGhpcy50ZXh0Q29sb3I7XG4gICAgdGhpcy5zdGF0ZUxhYmVsQ29sb3IgPSB0aGlzLnN0YXRlTGFiZWxDb2xvciB8fCB0aGlzLnN0YXRlQmtnIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnN0YXRlQmtnID0gdGhpcy5zdGF0ZUJrZyB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvciA9IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5zdGF0ZUJrZztcbiAgICB0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQgPSB0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQgfHwgdGhpcy5iYWNrZ3JvdW5kIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmFsdEJhY2tncm91bmQgPSB0aGlzLmFsdEJhY2tncm91bmQgfHwgXCIjZjBmMGYwXCI7XG4gICAgdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQgPSB0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZCB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5jb21wb3NpdGVCb3JkZXIgPSB0aGlzLmNvbXBvc2l0ZUJvcmRlciB8fCB0aGlzLm5vZGVCb3JkZXI7XG4gICAgdGhpcy5pbm5lckVuZEJhY2tncm91bmQgPSB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yID0gdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5lcnJvckJrZ0NvbG9yID0gdGhpcy5lcnJvckJrZ0NvbG9yIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gdGhpcy5lcnJvclRleHRDb2xvciB8fCB0aGlzLnRlcnRpYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMudHJhbnNpdGlvbkNvbG9yID0gdGhpcy50cmFuc2l0aW9uQ29sb3IgfHwgdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5jbGFzc1RleHQgPSB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTAgPSB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLmZpbGxUeXBlMSA9IHRoaXMuc2Vjb25kYXJ5Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTIgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTMgPSBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBoOiA2NCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNCA9IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTUgPSBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBoOiAtNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTYgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogMTI4IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU3ID0gYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogMTI4IH0pO1xuICAgIHRoaXMucGllMSA9IHRoaXMucGllMSB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnBpZTIgPSB0aGlzLnBpZTIgfHwgdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLnBpZTMgPSB0aGlzLnBpZTMgfHwgdGhpcy50ZXJ0aWFyeUNvbG9yO1xuICAgIHRoaXMucGllNCA9IHRoaXMucGllNCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgbDogLTMwIH0pO1xuICAgIHRoaXMucGllNSA9IHRoaXMucGllNSB8fCBhZGp1c3QodGhpcy5zZWNvbmRhcnlDb2xvciwgeyBsOiAtMzAgfSk7XG4gICAgdGhpcy5waWU2ID0gdGhpcy5waWU2IHx8IGFkanVzdCh0aGlzLnRlcnRpYXJ5Q29sb3IsIHsgaDogNDAsIGw6IC00MCB9KTtcbiAgICB0aGlzLnBpZTcgPSB0aGlzLnBpZTcgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDYwLCBsOiAtMTAgfSk7XG4gICAgdGhpcy5waWU4ID0gdGhpcy5waWU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtNjAsIGw6IC0xMCB9KTtcbiAgICB0aGlzLnBpZTkgPSB0aGlzLnBpZTkgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCwgbDogMCB9KTtcbiAgICB0aGlzLnBpZTEwID0gdGhpcy5waWUxMCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjAsIGw6IC01MCB9KTtcbiAgICB0aGlzLnBpZTExID0gdGhpcy5waWUxMSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTYwLCBsOiAtNTAgfSk7XG4gICAgdGhpcy5waWUxMiA9IHRoaXMucGllMTIgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCwgbDogLTUwIH0pO1xuICAgIHRoaXMucGllVGl0bGVUZXh0U2l6ZSA9IHRoaXMucGllVGl0bGVUZXh0U2l6ZSB8fCBcIjI1cHhcIjtcbiAgICB0aGlzLnBpZVRpdGxlVGV4dENvbG9yID0gdGhpcy5waWVUaXRsZVRleHRDb2xvciB8fCB0aGlzLnRhc2tUZXh0RGFya0NvbG9yO1xuICAgIHRoaXMucGllU2VjdGlvblRleHRTaXplID0gdGhpcy5waWVTZWN0aW9uVGV4dFNpemUgfHwgXCIxN3B4XCI7XG4gICAgdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yID0gdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yIHx8IHRoaXMudGV4dENvbG9yO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dFNpemUgPSB0aGlzLnBpZUxlZ2VuZFRleHRTaXplIHx8IFwiMTdweFwiO1xuICAgIHRoaXMucGllTGVnZW5kVGV4dENvbG9yID0gdGhpcy5waWVMZWdlbmRUZXh0Q29sb3IgfHwgdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLnBpZVN0cm9rZUNvbG9yID0gdGhpcy5waWVTdHJva2VDb2xvciB8fCBcImJsYWNrXCI7XG4gICAgdGhpcy5waWVTdHJva2VXaWR0aCA9IHRoaXMucGllU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggPSB0aGlzLnBpZU91dGVyU3Ryb2tlV2lkdGggfHwgXCIycHhcIjtcbiAgICB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgPSB0aGlzLnBpZU91dGVyU3Ryb2tlQ29sb3IgfHwgXCJibGFja1wiO1xuICAgIHRoaXMucGllT3BhY2l0eSA9IHRoaXMucGllT3BhY2l0eSB8fCBcIjAuN1wiO1xuICAgIHRoaXMucXVhZHJhbnQxRmlsbCA9IHRoaXMucXVhZHJhbnQxRmlsbCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50MkZpbGwgPSB0aGlzLnF1YWRyYW50MkZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IHI6IDUsIGc6IDUsIGI6IDUgfSk7XG4gICAgdGhpcy5xdWFkcmFudDNGaWxsID0gdGhpcy5xdWFkcmFudDNGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyByOiAxMCwgZzogMTAsIGI6IDEwIH0pO1xuICAgIHRoaXMucXVhZHJhbnQ0RmlsbCA9IHRoaXMucXVhZHJhbnQ0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgcjogMTUsIGc6IDE1LCBiOiAxNSB9KTtcbiAgICB0aGlzLnF1YWRyYW50MVRleHRGaWxsID0gdGhpcy5xdWFkcmFudDFUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudDJUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQyVGV4dEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeVRleHRDb2xvciwgeyByOiAtNSwgZzogLTUsIGI6IC01IH0pO1xuICAgIHRoaXMucXVhZHJhbnQzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50M1RleHRGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlUZXh0Q29sb3IsIHsgcjogLTEwLCBnOiAtMTAsIGI6IC0xMCB9KTtcbiAgICB0aGlzLnF1YWRyYW50NFRleHRGaWxsID0gdGhpcy5xdWFkcmFudDRUZXh0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5VGV4dENvbG9yLCB7IHI6IC0xNSwgZzogLTE1LCBiOiAtMTUgfSk7XG4gICAgdGhpcy5xdWFkcmFudFBvaW50RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludEZpbGwgfHwgaXNEYXJrKHRoaXMucXVhZHJhbnQxRmlsbCkgPyBsaWdodGVuKHRoaXMucXVhZHJhbnQxRmlsbCkgOiBkYXJrZW4odGhpcy5xdWFkcmFudDFGaWxsKTtcbiAgICB0aGlzLnF1YWRyYW50UG9pbnRUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRQb2ludFRleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WEF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRYQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50WUF4aXNUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnRZQXhpc1RleHRGaWxsIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsID0gdGhpcy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCB8fCB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnF1YWRyYW50VGl0bGVGaWxsID0gdGhpcy5xdWFkcmFudFRpdGxlRmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQgPSB0aGlzLnJlcXVpcmVtZW50QmFja2dyb3VuZCB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3IgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemUgPSB0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZSB8fCBcIjFcIjtcbiAgICB0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yID0gdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvciB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5yZWxhdGlvbkNvbG9yID0gdGhpcy5yZWxhdGlvbkNvbG9yIHx8IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmQgPSB0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kIHx8IHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZDtcbiAgICB0aGlzLnJlbGF0aW9uTGFiZWxDb2xvciA9IHRoaXMucmVsYXRpb25MYWJlbENvbG9yIHx8IHRoaXMuYWN0b3JUZXh0Q29sb3I7XG4gICAgdGhpcy5naXQwID0gdGhpcy5naXQwIHx8IHRoaXMucHJpbWFyeUNvbG9yO1xuICAgIHRoaXMuZ2l0MSA9IHRoaXMuZ2l0MSB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuZ2l0MiA9IHRoaXMuZ2l0MiB8fCB0aGlzLnRlcnRpYXJ5Q29sb3I7XG4gICAgdGhpcy5naXQzID0gdGhpcy5naXQzIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtMzAgfSk7XG4gICAgdGhpcy5naXQ0ID0gdGhpcy5naXQ0IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtNjAgfSk7XG4gICAgdGhpcy5naXQ1ID0gdGhpcy5naXQ1IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAtOTAgfSk7XG4gICAgdGhpcy5naXQ2ID0gdGhpcy5naXQ2IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiA2MCB9KTtcbiAgICB0aGlzLmdpdDcgPSB0aGlzLmdpdDcgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyMCB9KTtcbiAgICBpZiAodGhpcy5kYXJrTW9kZSkge1xuICAgICAgdGhpcy5naXQwID0gbGlnaHRlbih0aGlzLmdpdDAsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MSA9IGxpZ2h0ZW4odGhpcy5naXQxLCAyNSk7XG4gICAgICB0aGlzLmdpdDIgPSBsaWdodGVuKHRoaXMuZ2l0MiwgMjUpO1xuICAgICAgdGhpcy5naXQzID0gbGlnaHRlbih0aGlzLmdpdDMsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NCA9IGxpZ2h0ZW4odGhpcy5naXQ0LCAyNSk7XG4gICAgICB0aGlzLmdpdDUgPSBsaWdodGVuKHRoaXMuZ2l0NSwgMjUpO1xuICAgICAgdGhpcy5naXQ2ID0gbGlnaHRlbih0aGlzLmdpdDYsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NyA9IGxpZ2h0ZW4odGhpcy5naXQ3LCAyNSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2l0MCA9IGRhcmtlbih0aGlzLmdpdDAsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MSA9IGRhcmtlbih0aGlzLmdpdDEsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MiA9IGRhcmtlbih0aGlzLmdpdDIsIDI1KTtcbiAgICAgIHRoaXMuZ2l0MyA9IGRhcmtlbih0aGlzLmdpdDMsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NCA9IGRhcmtlbih0aGlzLmdpdDQsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NSA9IGRhcmtlbih0aGlzLmdpdDUsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NiA9IGRhcmtlbih0aGlzLmdpdDYsIDI1KTtcbiAgICAgIHRoaXMuZ2l0NyA9IGRhcmtlbih0aGlzLmdpdDcsIDI1KTtcbiAgICB9XG4gICAgdGhpcy5naXRJbnYwID0gdGhpcy5naXRJbnYwIHx8IGludmVydCh0aGlzLmdpdDApO1xuICAgIHRoaXMuZ2l0SW52MSA9IHRoaXMuZ2l0SW52MSB8fCBpbnZlcnQodGhpcy5naXQxKTtcbiAgICB0aGlzLmdpdEludjIgPSB0aGlzLmdpdEludjIgfHwgaW52ZXJ0KHRoaXMuZ2l0Mik7XG4gICAgdGhpcy5naXRJbnYzID0gdGhpcy5naXRJbnYzIHx8IGludmVydCh0aGlzLmdpdDMpO1xuICAgIHRoaXMuZ2l0SW52NCA9IHRoaXMuZ2l0SW52NCB8fCBpbnZlcnQodGhpcy5naXQ0KTtcbiAgICB0aGlzLmdpdEludjUgPSB0aGlzLmdpdEludjUgfHwgaW52ZXJ0KHRoaXMuZ2l0NSk7XG4gICAgdGhpcy5naXRJbnY2ID0gdGhpcy5naXRJbnY2IHx8IGludmVydCh0aGlzLmdpdDYpO1xuICAgIHRoaXMuZ2l0SW52NyA9IHRoaXMuZ2l0SW52NyB8fCBpbnZlcnQodGhpcy5naXQ3KTtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMCA9IHRoaXMuZ2l0QnJhbmNoTGFiZWwwIHx8IGludmVydCh0aGlzLmxhYmVsVGV4dENvbG9yKTtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMSA9IHRoaXMuZ2l0QnJhbmNoTGFiZWwxIHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDIgPSB0aGlzLmdpdEJyYW5jaExhYmVsMiB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWwzID0gdGhpcy5naXRCcmFuY2hMYWJlbDMgfHwgaW52ZXJ0KHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw0ID0gdGhpcy5naXRCcmFuY2hMYWJlbDQgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNSA9IHRoaXMuZ2l0QnJhbmNoTGFiZWw1IHx8IHRoaXMubGFiZWxUZXh0Q29sb3I7XG4gICAgdGhpcy5naXRCcmFuY2hMYWJlbDYgPSB0aGlzLmdpdEJyYW5jaExhYmVsNiB8fCB0aGlzLmxhYmVsVGV4dENvbG9yO1xuICAgIHRoaXMuZ2l0QnJhbmNoTGFiZWw3ID0gdGhpcy5naXRCcmFuY2hMYWJlbDcgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLnRhZ0xhYmVsQ29sb3IgPSB0aGlzLnRhZ0xhYmVsQ29sb3IgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kID0gdGhpcy50YWdMYWJlbEJhY2tncm91bmQgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEJvcmRlciA9IHRoaXMudGFnQm9yZGVyIHx8IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxGb250U2l6ZSA9IHRoaXMudGFnTGFiZWxGb250U2l6ZSB8fCBcIjEwcHhcIjtcbiAgICB0aGlzLmNvbW1pdExhYmVsQ29sb3IgPSB0aGlzLmNvbW1pdExhYmVsQ29sb3IgfHwgdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5jb21taXRMYWJlbEJhY2tncm91bmQgPSB0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZCB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZSA9IHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZSB8fCBcIjEwcHhcIjtcbiAgICB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZCA9IHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkIHx8IG9sZEF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZDtcbiAgICB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gPSB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gfHwgb2xkQXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbjtcbiAgfVxuICBjYWxjdWxhdGUob3ZlcnJpZGVzKSB7XG4gICAgaWYgKHR5cGVvZiBvdmVycmlkZXMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3JzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZXMpO1xuICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgdGhpc1trXSA9IG92ZXJyaWRlc1trXTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUNvbG9ycygpO1xuICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgdGhpc1trXSA9IG92ZXJyaWRlc1trXTtcbiAgICB9KTtcbiAgfVxufTtcbmNvbnN0IGdldFRoZW1lVmFyaWFibGVzJDEgPSAodXNlck92ZXJyaWRlcykgPT4ge1xuICBjb25zdCB0aGVtZTIgPSBuZXcgVGhlbWUkMSgpO1xuICB0aGVtZTIuY2FsY3VsYXRlKHVzZXJPdmVycmlkZXMpO1xuICByZXR1cm4gdGhlbWUyO1xufTtcbmNsYXNzIFRoZW1lNSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucHJpbWFyeUNvbG9yID0gXCIjZWVlXCI7XG4gICAgdGhpcy5jb250cmFzdCA9IFwiIzcwNzA3MFwiO1xuICAgIHRoaXMuc2Vjb25kYXJ5Q29sb3IgPSBsaWdodGVuKHRoaXMuY29udHJhc3QsIDU1KTtcbiAgICB0aGlzLmJhY2tncm91bmQgPSBcIiNmZmZmZmZcIjtcbiAgICB0aGlzLnRlcnRpYXJ5Q29sb3IgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTE2MCB9KTtcbiAgICB0aGlzLnByaW1hcnlCb3JkZXJDb2xvciA9IG1rQm9yZGVyKHRoaXMucHJpbWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy5zZWNvbmRhcnlDb2xvciwgdGhpcy5kYXJrTW9kZSk7XG4gICAgdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yID0gbWtCb3JkZXIodGhpcy50ZXJ0aWFyeUNvbG9yLCB0aGlzLmRhcmtNb2RlKTtcbiAgICB0aGlzLnByaW1hcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy5wcmltYXJ5Q29sb3IpO1xuICAgIHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpO1xuICAgIHRoaXMudGVydGlhcnlUZXh0Q29sb3IgPSBpbnZlcnQodGhpcy50ZXJ0aWFyeUNvbG9yKTtcbiAgICB0aGlzLmxpbmVDb2xvciA9IGludmVydCh0aGlzLmJhY2tncm91bmQpO1xuICAgIHRoaXMudGV4dENvbG9yID0gaW52ZXJ0KHRoaXMuYmFja2dyb3VuZCk7XG4gICAgdGhpcy5tYWluQmtnID0gXCIjZWVlXCI7XG4gICAgdGhpcy5zZWNvbmRCa2cgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmxpbmVDb2xvciA9IFwiIzY2NlwiO1xuICAgIHRoaXMuYm9yZGVyMSA9IFwiIzk5OVwiO1xuICAgIHRoaXMuYm9yZGVyMiA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubm90ZSA9IFwiI2ZmYVwiO1xuICAgIHRoaXMudGV4dCA9IFwiIzMzM1wiO1xuICAgIHRoaXMuY3JpdGljYWwgPSBcIiNkNDJcIjtcbiAgICB0aGlzLmRvbmUgPSBcIiNiYmJcIjtcbiAgICB0aGlzLmFycm93aGVhZENvbG9yID0gXCIjMzMzMzMzXCI7XG4gICAgdGhpcy5mb250RmFtaWx5ID0gJ1widHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJztcbiAgICB0aGlzLmZvbnRTaXplID0gXCIxNnB4XCI7XG4gICAgdGhpcy5USEVNRV9DT0xPUl9MSU1JVCA9IDEyO1xuICAgIHRoaXMubm9kZUJrZyA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubm9kZUJvcmRlciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuY2x1c3RlckJrZyA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuY2x1c3RlckJvcmRlciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuZGVmYXVsdExpbmtDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGl0bGVDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZCA9IFwid2hpdGVcIjtcbiAgICB0aGlzLmFjdG9yQm9yZGVyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hY3RvckJrZyA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0b3JUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdG9yTGluZUNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5zaWduYWxDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuc2lnbmFsVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5sYWJlbEJveEJrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5sYWJlbFRleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubG9vcFRleHRDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMubm90ZUJvcmRlckNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ub3RlQmtnQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLm5vdGVUZXh0Q29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmFjdGl2YXRpb25Cb3JkZXJDb2xvciA9IFwiIzY2NlwiO1xuICAgIHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yID0gXCIjZjRmNGY0XCI7XG4gICAgdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yID0gXCJ3aGl0ZVwiO1xuICAgIHRoaXMuc2VjdGlvbkJrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3IgPSBcIndoaXRlXCI7XG4gICAgdGhpcy5zZWN0aW9uQmtnQ29sb3IyID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5leGNsdWRlQmtnQ29sb3IgPSBcIiNlZWVlZWVcIjtcbiAgICB0aGlzLnRhc2tCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dExpZ2h0Q29sb3IgPSBcIndoaXRlXCI7XG4gICAgdGhpcy50YXNrVGV4dENvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50YXNrVGV4dERhcmtDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3IgPSBcIiMwMDMxNjNcIjtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy5ncmlkQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmRvbmVUYXNrQmtnQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3IgPSBcImNhbGN1bGF0ZWRcIjtcbiAgICB0aGlzLmNyaXRCa2dDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMuY3JpdEJvcmRlckNvbG9yID0gXCJjYWxjdWxhdGVkXCI7XG4gICAgdGhpcy50b2RheUxpbmVDb2xvciA9IFwiY2FsY3VsYXRlZFwiO1xuICAgIHRoaXMucGVyc29uQm9yZGVyID0gdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5wZXJzb25Ca2cgPSB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5sYWJlbENvbG9yID0gXCJibGFja1wiO1xuICAgIHRoaXMuZXJyb3JCa2dDb2xvciA9IFwiIzU1MjIyMlwiO1xuICAgIHRoaXMuZXJyb3JUZXh0Q29sb3IgPSBcIiM1NTIyMjJcIjtcbiAgfVxuICB1cGRhdGVDb2xvcnMoKSB7XG4gICAgdGhpcy5zZWNvbmRCa2cgPSBsaWdodGVuKHRoaXMuY29udHJhc3QsIDU1KTtcbiAgICB0aGlzLmJvcmRlcjIgPSB0aGlzLmNvbnRyYXN0O1xuICAgIHRoaXMuYWN0b3JCb3JkZXIgPSBsaWdodGVuKHRoaXMuYm9yZGVyMSwgMjMpO1xuICAgIHRoaXMuYWN0b3JCa2cgPSB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5hY3RvclRleHRDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLmFjdG9yTGluZUNvbG9yID0gdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5zaWduYWxDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLnNpZ25hbFRleHRDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLmxhYmVsQm94QmtnQ29sb3IgPSB0aGlzLmFjdG9yQmtnO1xuICAgIHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvciA9IHRoaXMuYWN0b3JCb3JkZXI7XG4gICAgdGhpcy5sYWJlbFRleHRDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLmxvb3BUZXh0Q29sb3IgPSB0aGlzLnRleHQ7XG4gICAgdGhpcy5ub3RlQm9yZGVyQ29sb3IgPSBcIiM5OTlcIjtcbiAgICB0aGlzLm5vdGVCa2dDb2xvciA9IFwiIzY2NlwiO1xuICAgIHRoaXMubm90ZVRleHRDb2xvciA9IFwiI2ZmZlwiO1xuICAgIHRoaXMuY1NjYWxlMCA9IHRoaXMuY1NjYWxlMCB8fCBcIiM1NTVcIjtcbiAgICB0aGlzLmNTY2FsZTEgPSB0aGlzLmNTY2FsZTEgfHwgXCIjRjRGNEY0XCI7XG4gICAgdGhpcy5jU2NhbGUyID0gdGhpcy5jU2NhbGUyIHx8IFwiIzU1NVwiO1xuICAgIHRoaXMuY1NjYWxlMyA9IHRoaXMuY1NjYWxlMyB8fCBcIiNCQkJcIjtcbiAgICB0aGlzLmNTY2FsZTQgPSB0aGlzLmNTY2FsZTQgfHwgXCIjNzc3XCI7XG4gICAgdGhpcy5jU2NhbGU1ID0gdGhpcy5jU2NhbGU1IHx8IFwiIzk5OVwiO1xuICAgIHRoaXMuY1NjYWxlNiA9IHRoaXMuY1NjYWxlNiB8fCBcIiNERERcIjtcbiAgICB0aGlzLmNTY2FsZTcgPSB0aGlzLmNTY2FsZTcgfHwgXCIjRkZGXCI7XG4gICAgdGhpcy5jU2NhbGU4ID0gdGhpcy5jU2NhbGU4IHx8IFwiI0RERFwiO1xuICAgIHRoaXMuY1NjYWxlOSA9IHRoaXMuY1NjYWxlOSB8fCBcIiNCQkJcIjtcbiAgICB0aGlzLmNTY2FsZTEwID0gdGhpcy5jU2NhbGUxMCB8fCBcIiM5OTlcIjtcbiAgICB0aGlzLmNTY2FsZTExID0gdGhpcy5jU2NhbGUxMSB8fCBcIiM3NzdcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgdGhpc1tcImNTY2FsZUludlwiICsgaV0gPSB0aGlzW1wiY1NjYWxlSW52XCIgKyBpXSB8fCBpbnZlcnQodGhpc1tcImNTY2FsZVwiICsgaV0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZGFya01vZGUpIHtcbiAgICAgICAgdGhpc1tcImNTY2FsZVBlZXJcIiArIGldID0gdGhpc1tcImNTY2FsZVBlZXJcIiArIGldIHx8IGxpZ2h0ZW4odGhpc1tcImNTY2FsZVwiICsgaV0sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbXCJjU2NhbGVQZWVyXCIgKyBpXSA9IHRoaXNbXCJjU2NhbGVQZWVyXCIgKyBpXSB8fCBkYXJrZW4odGhpc1tcImNTY2FsZVwiICsgaV0sIDEwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zY2FsZUxhYmVsQ29sb3IgPSB0aGlzLnNjYWxlTGFiZWxDb2xvciB8fCAodGhpcy5kYXJrTW9kZSA/IFwiYmxhY2tcIiA6IHRoaXMubGFiZWxUZXh0Q29sb3IpO1xuICAgIHRoaXNbXCJjU2NhbGVMYWJlbDBcIl0gPSB0aGlzW1wiY1NjYWxlTGFiZWwwXCJdIHx8IHRoaXMuY1NjYWxlMTtcbiAgICB0aGlzW1wiY1NjYWxlTGFiZWwyXCJdID0gdGhpc1tcImNTY2FsZUxhYmVsMlwiXSB8fCB0aGlzLmNTY2FsZTE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLlRIRU1FX0NPTE9SX0xJTUlUOyBpKyspIHtcbiAgICAgIHRoaXNbXCJjU2NhbGVMYWJlbFwiICsgaV0gPSB0aGlzW1wiY1NjYWxlTGFiZWxcIiArIGldIHx8IHRoaXMuc2NhbGVMYWJlbENvbG9yO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgdGhpc1tcInN1cmZhY2VcIiArIGldID0gdGhpc1tcInN1cmZhY2VcIiArIGldIHx8IGFkanVzdCh0aGlzLm1haW5Ca2csIHsgbDogLSg1ICsgaSAqIDUpIH0pO1xuICAgICAgdGhpc1tcInN1cmZhY2VQZWVyXCIgKyBpXSA9IHRoaXNbXCJzdXJmYWNlUGVlclwiICsgaV0gfHwgYWRqdXN0KHRoaXMubWFpbkJrZywgeyBsOiAtKDggKyBpICogNSkgfSk7XG4gICAgfVxuICAgIHRoaXMubm9kZUJrZyA9IHRoaXMubWFpbkJrZztcbiAgICB0aGlzLm5vZGVCb3JkZXIgPSB0aGlzLmJvcmRlcjE7XG4gICAgdGhpcy5jbHVzdGVyQmtnID0gdGhpcy5zZWNvbmRCa2c7XG4gICAgdGhpcy5jbHVzdGVyQm9yZGVyID0gdGhpcy5ib3JkZXIyO1xuICAgIHRoaXMuZGVmYXVsdExpbmtDb2xvciA9IHRoaXMubGluZUNvbG9yO1xuICAgIHRoaXMudGl0bGVDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLnNlY3Rpb25Ca2dDb2xvciA9IGxpZ2h0ZW4odGhpcy5jb250cmFzdCwgMzApO1xuICAgIHRoaXMuc2VjdGlvbkJrZ0NvbG9yMiA9IGxpZ2h0ZW4odGhpcy5jb250cmFzdCwgMzApO1xuICAgIHRoaXMudGFza0JvcmRlckNvbG9yID0gZGFya2VuKHRoaXMuY29udHJhc3QsIDEwKTtcbiAgICB0aGlzLnRhc2tCa2dDb2xvciA9IHRoaXMuY29udHJhc3Q7XG4gICAgdGhpcy50YXNrVGV4dENvbG9yID0gdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I7XG4gICAgdGhpcy50YXNrVGV4dERhcmtDb2xvciA9IHRoaXMudGV4dDtcbiAgICB0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yID0gdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvciA9IHRoaXMudGFza0JvcmRlckNvbG9yO1xuICAgIHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yID0gdGhpcy5tYWluQmtnO1xuICAgIHRoaXMuZ3JpZENvbG9yID0gbGlnaHRlbih0aGlzLmJvcmRlcjEsIDMwKTtcbiAgICB0aGlzLmRvbmVUYXNrQmtnQ29sb3IgPSB0aGlzLmRvbmU7XG4gICAgdGhpcy5kb25lVGFza0JvcmRlckNvbG9yID0gdGhpcy5saW5lQ29sb3I7XG4gICAgdGhpcy5jcml0QmtnQ29sb3IgPSB0aGlzLmNyaXRpY2FsO1xuICAgIHRoaXMuY3JpdEJvcmRlckNvbG9yID0gZGFya2VuKHRoaXMuY3JpdEJrZ0NvbG9yLCAxMCk7XG4gICAgdGhpcy50b2RheUxpbmVDb2xvciA9IHRoaXMuY3JpdEJrZ0NvbG9yO1xuICAgIHRoaXMudHJhbnNpdGlvbkNvbG9yID0gdGhpcy50cmFuc2l0aW9uQ29sb3IgfHwgXCIjMDAwXCI7XG4gICAgdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvciA9IHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3IgfHwgdGhpcy50ZXh0Q29sb3I7XG4gICAgdGhpcy5zdGF0ZUxhYmVsQ29sb3IgPSB0aGlzLnN0YXRlTGFiZWxDb2xvciB8fCB0aGlzLnN0YXRlQmtnIHx8IHRoaXMucHJpbWFyeVRleHRDb2xvcjtcbiAgICB0aGlzLnN0YXRlQmtnID0gdGhpcy5zdGF0ZUJrZyB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvciA9IHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3IgfHwgdGhpcy5zdGF0ZUJrZztcbiAgICB0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQgPSB0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQgfHwgdGhpcy5iYWNrZ3JvdW5kIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmFsdEJhY2tncm91bmQgPSB0aGlzLmFsdEJhY2tncm91bmQgfHwgXCIjZjRmNGY0XCI7XG4gICAgdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQgPSB0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZCB8fCB0aGlzLm1haW5Ca2c7XG4gICAgdGhpcy5zdGF0ZUJvcmRlciA9IHRoaXMuc3RhdGVCb3JkZXIgfHwgXCIjMDAwXCI7XG4gICAgdGhpcy5pbm5lckVuZEJhY2tncm91bmQgPSB0aGlzLnByaW1hcnlCb3JkZXJDb2xvcjtcbiAgICB0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yID0gXCIjMjIyXCI7XG4gICAgdGhpcy5lcnJvckJrZ0NvbG9yID0gdGhpcy5lcnJvckJrZ0NvbG9yIHx8IHRoaXMudGVydGlhcnlDb2xvcjtcbiAgICB0aGlzLmVycm9yVGV4dENvbG9yID0gdGhpcy5lcnJvclRleHRDb2xvciB8fCB0aGlzLnRlcnRpYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMuY2xhc3NUZXh0ID0gdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMuZmlsbFR5cGUwID0gdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5maWxsVHlwZTEgPSB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuZmlsbFR5cGUyID0gYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGUzID0gYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogNjQgfSk7XG4gICAgdGhpcy5maWxsVHlwZTQgPSBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU1ID0gYWRqdXN0KHRoaXMuc2Vjb25kYXJ5Q29sb3IsIHsgaDogLTY0IH0pO1xuICAgIHRoaXMuZmlsbFR5cGU2ID0gYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IGg6IDEyOCB9KTtcbiAgICB0aGlzLmZpbGxUeXBlNyA9IGFkanVzdCh0aGlzLnNlY29uZGFyeUNvbG9yLCB7IGg6IDEyOCB9KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgICAgdGhpc1tcInBpZVwiICsgaV0gPSB0aGlzW1wiY1NjYWxlXCIgKyBpXTtcbiAgICB9XG4gICAgdGhpcy5waWUxMiA9IHRoaXMucGllMDtcbiAgICB0aGlzLnBpZVRpdGxlVGV4dFNpemUgPSB0aGlzLnBpZVRpdGxlVGV4dFNpemUgfHwgXCIyNXB4XCI7XG4gICAgdGhpcy5waWVUaXRsZVRleHRDb2xvciA9IHRoaXMucGllVGl0bGVUZXh0Q29sb3IgfHwgdGhpcy50YXNrVGV4dERhcmtDb2xvcjtcbiAgICB0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZSA9IHRoaXMucGllU2VjdGlvblRleHRTaXplIHx8IFwiMTdweFwiO1xuICAgIHRoaXMucGllU2VjdGlvblRleHRDb2xvciA9IHRoaXMucGllU2VjdGlvblRleHRDb2xvciB8fCB0aGlzLnRleHRDb2xvcjtcbiAgICB0aGlzLnBpZUxlZ2VuZFRleHRTaXplID0gdGhpcy5waWVMZWdlbmRUZXh0U2l6ZSB8fCBcIjE3cHhcIjtcbiAgICB0aGlzLnBpZUxlZ2VuZFRleHRDb2xvciA9IHRoaXMucGllTGVnZW5kVGV4dENvbG9yIHx8IHRoaXMudGFza1RleHREYXJrQ29sb3I7XG4gICAgdGhpcy5waWVTdHJva2VDb2xvciA9IHRoaXMucGllU3Ryb2tlQ29sb3IgfHwgXCJibGFja1wiO1xuICAgIHRoaXMucGllU3Ryb2tlV2lkdGggPSB0aGlzLnBpZVN0cm9rZVdpZHRoIHx8IFwiMnB4XCI7XG4gICAgdGhpcy5waWVPdXRlclN0cm9rZVdpZHRoID0gdGhpcy5waWVPdXRlclN0cm9rZVdpZHRoIHx8IFwiMnB4XCI7XG4gICAgdGhpcy5waWVPdXRlclN0cm9rZUNvbG9yID0gdGhpcy5waWVPdXRlclN0cm9rZUNvbG9yIHx8IFwiYmxhY2tcIjtcbiAgICB0aGlzLnBpZU9wYWNpdHkgPSB0aGlzLnBpZU9wYWNpdHkgfHwgXCIwLjdcIjtcbiAgICB0aGlzLnF1YWRyYW50MUZpbGwgPSB0aGlzLnF1YWRyYW50MUZpbGwgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudDJGaWxsID0gdGhpcy5xdWFkcmFudDJGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyByOiA1LCBnOiA1LCBiOiA1IH0pO1xuICAgIHRoaXMucXVhZHJhbnQzRmlsbCA9IHRoaXMucXVhZHJhbnQzRmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgcjogMTAsIGc6IDEwLCBiOiAxMCB9KTtcbiAgICB0aGlzLnF1YWRyYW50NEZpbGwgPSB0aGlzLnF1YWRyYW50NEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeUNvbG9yLCB7IHI6IDE1LCBnOiAxNSwgYjogMTUgfSk7XG4gICAgdGhpcy5xdWFkcmFudDFUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQxVGV4dEZpbGwgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucXVhZHJhbnQyVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50MlRleHRGaWxsIHx8IGFkanVzdCh0aGlzLnByaW1hcnlUZXh0Q29sb3IsIHsgcjogLTUsIGc6IC01LCBiOiAtNSB9KTtcbiAgICB0aGlzLnF1YWRyYW50M1RleHRGaWxsID0gdGhpcy5xdWFkcmFudDNUZXh0RmlsbCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5VGV4dENvbG9yLCB7IHI6IC0xMCwgZzogLTEwLCBiOiAtMTAgfSk7XG4gICAgdGhpcy5xdWFkcmFudDRUZXh0RmlsbCA9IHRoaXMucXVhZHJhbnQ0VGV4dEZpbGwgfHwgYWRqdXN0KHRoaXMucHJpbWFyeVRleHRDb2xvciwgeyByOiAtMTUsIGc6IC0xNSwgYjogLTE1IH0pO1xuICAgIHRoaXMucXVhZHJhbnRQb2ludEZpbGwgPSB0aGlzLnF1YWRyYW50UG9pbnRGaWxsIHx8IGlzRGFyayh0aGlzLnF1YWRyYW50MUZpbGwpID8gbGlnaHRlbih0aGlzLnF1YWRyYW50MUZpbGwpIDogZGFya2VuKHRoaXMucXVhZHJhbnQxRmlsbCk7XG4gICAgdGhpcy5xdWFkcmFudFBvaW50VGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50UG9pbnRUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFhBeGlzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50WEF4aXNUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFlBeGlzVGV4dEZpbGwgPSB0aGlzLnF1YWRyYW50WUF4aXNUZXh0RmlsbCB8fCB0aGlzLnByaW1hcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCA9IHRoaXMucXVhZHJhbnRJbnRlcm5hbEJvcmRlclN0cm9rZUZpbGwgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCA9IHRoaXMucXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZUZpbGwgfHwgdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I7XG4gICAgdGhpcy5xdWFkcmFudFRpdGxlRmlsbCA9IHRoaXMucXVhZHJhbnRUaXRsZUZpbGwgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kID0gdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yID0gdGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yIHx8IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplID0gdGhpcy5yZXF1aXJlbWVudEJvcmRlclNpemUgfHwgXCIxXCI7XG4gICAgdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvciA9IHRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3IgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMucmVsYXRpb25Db2xvciA9IHRoaXMucmVsYXRpb25Db2xvciB8fCB0aGlzLmxpbmVDb2xvcjtcbiAgICB0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kID0gdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZCB8fCB0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ7XG4gICAgdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3IgPSB0aGlzLnJlbGF0aW9uTGFiZWxDb2xvciB8fCB0aGlzLmFjdG9yVGV4dENvbG9yO1xuICAgIHRoaXMuZ2l0MCA9IGRhcmtlbih0aGlzLnBpZTEsIDI1KSB8fCB0aGlzLnByaW1hcnlDb2xvcjtcbiAgICB0aGlzLmdpdDEgPSB0aGlzLnBpZTIgfHwgdGhpcy5zZWNvbmRhcnlDb2xvcjtcbiAgICB0aGlzLmdpdDIgPSB0aGlzLnBpZTMgfHwgdGhpcy50ZXJ0aWFyeUNvbG9yO1xuICAgIHRoaXMuZ2l0MyA9IHRoaXMucGllNCB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTMwIH0pO1xuICAgIHRoaXMuZ2l0NCA9IHRoaXMucGllNSB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTYwIH0pO1xuICAgIHRoaXMuZ2l0NSA9IHRoaXMucGllNiB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogLTkwIH0pO1xuICAgIHRoaXMuZ2l0NiA9IHRoaXMucGllNyB8fCBhZGp1c3QodGhpcy5wcmltYXJ5Q29sb3IsIHsgaDogNjAgfSk7XG4gICAgdGhpcy5naXQ3ID0gdGhpcy5waWU4IHx8IGFkanVzdCh0aGlzLnByaW1hcnlDb2xvciwgeyBoOiAxMjAgfSk7XG4gICAgdGhpcy5naXRJbnYwID0gdGhpcy5naXRJbnYwIHx8IGludmVydCh0aGlzLmdpdDApO1xuICAgIHRoaXMuZ2l0SW52MSA9IHRoaXMuZ2l0SW52MSB8fCBpbnZlcnQodGhpcy5naXQxKTtcbiAgICB0aGlzLmdpdEludjIgPSB0aGlzLmdpdEludjIgfHwgaW52ZXJ0KHRoaXMuZ2l0Mik7XG4gICAgdGhpcy5naXRJbnYzID0gdGhpcy5naXRJbnYzIHx8IGludmVydCh0aGlzLmdpdDMpO1xuICAgIHRoaXMuZ2l0SW52NCA9IHRoaXMuZ2l0SW52NCB8fCBpbnZlcnQodGhpcy5naXQ0KTtcbiAgICB0aGlzLmdpdEludjUgPSB0aGlzLmdpdEludjUgfHwgaW52ZXJ0KHRoaXMuZ2l0NSk7XG4gICAgdGhpcy5naXRJbnY2ID0gdGhpcy5naXRJbnY2IHx8IGludmVydCh0aGlzLmdpdDYpO1xuICAgIHRoaXMuZ2l0SW52NyA9IHRoaXMuZ2l0SW52NyB8fCBpbnZlcnQodGhpcy5naXQ3KTtcbiAgICB0aGlzLmJyYW5jaExhYmVsQ29sb3IgPSB0aGlzLmJyYW5jaExhYmVsQ29sb3IgfHwgdGhpcy5sYWJlbFRleHRDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMCA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMSA9IFwid2hpdGVcIjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMiA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsMyA9IFwid2hpdGVcIjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNCA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNSA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNiA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLmdpdEJyYW5jaExhYmVsNyA9IHRoaXMuYnJhbmNoTGFiZWxDb2xvcjtcbiAgICB0aGlzLnRhZ0xhYmVsQ29sb3IgPSB0aGlzLnRhZ0xhYmVsQ29sb3IgfHwgdGhpcy5wcmltYXJ5VGV4dENvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kID0gdGhpcy50YWdMYWJlbEJhY2tncm91bmQgfHwgdGhpcy5wcmltYXJ5Q29sb3I7XG4gICAgdGhpcy50YWdMYWJlbEJvcmRlciA9IHRoaXMudGFnQm9yZGVyIHx8IHRoaXMucHJpbWFyeUJvcmRlckNvbG9yO1xuICAgIHRoaXMudGFnTGFiZWxGb250U2l6ZSA9IHRoaXMudGFnTGFiZWxGb250U2l6ZSB8fCBcIjEwcHhcIjtcbiAgICB0aGlzLmNvbW1pdExhYmVsQ29sb3IgPSB0aGlzLmNvbW1pdExhYmVsQ29sb3IgfHwgdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I7XG4gICAgdGhpcy5jb21taXRMYWJlbEJhY2tncm91bmQgPSB0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZCB8fCB0aGlzLnNlY29uZGFyeUNvbG9yO1xuICAgIHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZSA9IHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZSB8fCBcIjEwcHhcIjtcbiAgICB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZCA9IHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkIHx8IG9sZEF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZDtcbiAgICB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gPSB0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW4gfHwgb2xkQXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbjtcbiAgfVxuICBjYWxjdWxhdGUob3ZlcnJpZGVzKSB7XG4gICAgaWYgKHR5cGVvZiBvdmVycmlkZXMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3JzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvdmVycmlkZXMpO1xuICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgdGhpc1trXSA9IG92ZXJyaWRlc1trXTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUNvbG9ycygpO1xuICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgdGhpc1trXSA9IG92ZXJyaWRlc1trXTtcbiAgICB9KTtcbiAgfVxufVxuY29uc3QgZ2V0VGhlbWVWYXJpYWJsZXMgPSAodXNlck92ZXJyaWRlcykgPT4ge1xuICBjb25zdCB0aGVtZTIgPSBuZXcgVGhlbWU1KCk7XG4gIHRoZW1lMi5jYWxjdWxhdGUodXNlck92ZXJyaWRlcyk7XG4gIHJldHVybiB0aGVtZTI7XG59O1xuY29uc3QgdGhlbWUgPSB7XG4gIGJhc2U6IHtcbiAgICBnZXRUaGVtZVZhcmlhYmxlczogZ2V0VGhlbWVWYXJpYWJsZXMkNFxuICB9LFxuICBkYXJrOiB7XG4gICAgZ2V0VGhlbWVWYXJpYWJsZXM6IGdldFRoZW1lVmFyaWFibGVzJDNcbiAgfSxcbiAgZGVmYXVsdDoge1xuICAgIGdldFRoZW1lVmFyaWFibGVzOiBnZXRUaGVtZVZhcmlhYmxlcyQyXG4gIH0sXG4gIGZvcmVzdDoge1xuICAgIGdldFRoZW1lVmFyaWFibGVzOiBnZXRUaGVtZVZhcmlhYmxlcyQxXG4gIH0sXG4gIG5ldXRyYWw6IHtcbiAgICBnZXRUaGVtZVZhcmlhYmxlc1xuICB9XG59O1xuY29uc3QgY29uZmlnID0ge1xuICAvKipcbiAgICogVGhlbWUgLCB0aGUgQ1NTIHN0eWxlIHNoZWV0XG4gICAqXG4gICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgKiB8IHRoZW1lICAgICB8IEJ1aWx0IGluIFRoZW1lcyB8IHN0cmluZyB8IE9wdGlvbmFsIHwgJ2RlZmF1bHQnLCAnZm9yZXN0JywgJ2RhcmsnLCAnbmV1dHJhbCcsICdudWxsJyB8XG4gICAqXG4gICAqICoqTm90ZXM6KiogVG8gZGlzYWJsZSBhbnkgcHJlLWRlZmluZWQgbWVybWFpZCB0aGVtZSwgdXNlIFwibnVsbFwiLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGBqc1xuICAgKiB7XG4gICAqICAgXCJ0aGVtZVwiOiBcImZvcmVzdFwiLFxuICAgKiAgIFwidGhlbWVDU1NcIjogXCIubm9kZSByZWN0IHsgZmlsbDogcmVkOyB9XCJcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHRoZW1lOiBcImRlZmF1bHRcIixcbiAgdGhlbWVWYXJpYWJsZXM6IHRoZW1lW1wiZGVmYXVsdFwiXS5nZXRUaGVtZVZhcmlhYmxlcygpLFxuICB0aGVtZUNTUzogdm9pZCAwLFxuICAvKiAqKm1heFRleHRTaXplKiogLSBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgdGhlIHVzZXJzIHRleHQgZGlhZ3JhbSAqL1xuICBtYXhUZXh0U2l6ZTogNWU0LFxuICBkYXJrTW9kZTogZmFsc2UsXG4gIC8qKlxuICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgICAgICAgICB8XG4gICAqIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICogfCBmb250RmFtaWx5IHwgc3BlY2lmaWVzIHRoZSBmb250IHRvIGJlIHVzZWQgaW4gdGhlIHJlbmRlcmVkIGRpYWdyYW1zIHwgc3RyaW5nIHwgUmVxdWlyZWQgfCBBbnkgUG9zc2libGUgQ1NTIEZvbnRGYW1pbHkgfFxuICAgKlxuICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6ICdcInRyZWJ1Y2hldCBtc1wiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsnLlxuICAgKi9cbiAgZm9udEZhbWlseTogJ1widHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOycsXG4gIC8qKlxuICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAqIHwgbG9nTGV2ZWwgIHwgVGhpcyBvcHRpb24gZGVjaWRlcyB0aGUgYW1vdW50IG9mIGxvZ2dpbmcgdG8gYmUgdXNlZC4gfCBzdHJpbmcgXFx8IG51bWJlciB8IFJlcXVpcmVkIHwgJ3RyYWNlJywnZGVidWcnLCdpbmZvJywnd2FybicsJ2Vycm9yJywnZmF0YWwnIHxcbiAgICpcbiAgICogKipOb3RlczoqKlxuICAgKlxuICAgKiAtIFRyYWNlOiAwXG4gICAqIC0gRGVidWc6IDFcbiAgICogLSBJbmZvOiAyXG4gICAqIC0gV2FybjogM1xuICAgKiAtIEVycm9yOiA0XG4gICAqIC0gRmF0YWw6IDUgKGRlZmF1bHQpXG4gICAqL1xuICBsb2dMZXZlbDogNSxcbiAgLyoqXG4gICAqIHwgUGFyYW1ldGVyICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICogfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgKiB8IHNlY3VyaXR5TGV2ZWwgfCBMZXZlbCBvZiB0cnVzdCBmb3IgcGFyc2VkIGRpYWdyYW0gfCBzdHJpbmcgfCBSZXF1aXJlZCB8ICdzYW5kYm94JywgJ3N0cmljdCcsICdsb29zZScsICdhbnRpc2NyaXB0JyB8XG4gICAqXG4gICAqICoqTm90ZXMqKjpcbiAgICpcbiAgICogLSAqKnN0cmljdCoqOiAoKipkZWZhdWx0KiopIEhUTUwgdGFncyBpbiB0aGUgdGV4dCBhcmUgZW5jb2RlZCBhbmQgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxlZC5cbiAgICogLSAqKmFudGlzY3JpcHQqKjogSFRNTCB0YWdzIGluIHRleHQgYXJlIGFsbG93ZWQgKG9ubHkgc2NyaXB0IGVsZW1lbnRzIGFyZSByZW1vdmVkKSwgYW5kIGNsaWNrXG4gICAqICAgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkLlxuICAgKiAtICoqbG9vc2UqKjogSFRNTCB0YWdzIGluIHRleHQgYXJlIGFsbG93ZWQgYW5kIGNsaWNrIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC5cbiAgICogLSAqKnNhbmRib3gqKjogV2l0aCB0aGlzIHNlY3VyaXR5IGxldmVsLCBhbGwgcmVuZGVyaW5nIHRha2VzIHBsYWNlIGluIGEgc2FuZGJveGVkIGlmcmFtZS4gVGhpc1xuICAgKiAgIHByZXZlbnQgYW55IEphdmFTY3JpcHQgZnJvbSBydW5uaW5nIGluIHRoZSBjb250ZXh0LiBUaGlzIG1heSBoaW5kZXIgaW50ZXJhY3RpdmUgZnVuY3Rpb25hbGl0eVxuICAgKiAgIG9mIHRoZSBkaWFncmFtLCBsaWtlIHNjcmlwdHMsIHBvcHVwcyBpbiB0aGUgc2VxdWVuY2UgZGlhZ3JhbSwgbGlua3MgdG8gb3RoZXIgdGFicyBvciB0YXJnZXRzLCBldGMuXG4gICAqL1xuICBzZWN1cml0eUxldmVsOiBcInN0cmljdFwiLFxuICAvKipcbiAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgfFxuICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAqIHwgc3RhcnRPbkxvYWQgfCBEaWN0YXRlcyB3aGV0aGVyIG1lcm1haWQgc3RhcnRzIG9uIFBhZ2UgbG9hZCB8IGJvb2xlYW4gfCBSZXF1aXJlZCB8IHRydWUsIGZhbHNlIHxcbiAgICpcbiAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiB0cnVlXG4gICAqL1xuICBzdGFydE9uTG9hZDogdHJ1ZSxcbiAgLyoqXG4gICAqIHwgUGFyYW1ldGVyICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAqIHwgYXJyb3dNYXJrZXJBYnNvbHV0ZSB8IENvbnRyb2xzIHdoZXRoZXIgb3IgYXJyb3cgbWFya2VycyBpbiBodG1sIGNvZGUgYXJlIGFic29sdXRlIHBhdGhzIG9yIGFuY2hvcnMgfCBib29sZWFuIHwgUmVxdWlyZWQgfCB0cnVlLCBmYWxzZSB8XG4gICAqXG4gICAqICoqTm90ZXMqKjpcbiAgICpcbiAgICogVGhpcyBtYXR0ZXJzIGlmIHlvdSBhcmUgdXNpbmcgYmFzZSB0YWcgc2V0dGluZ3MuXG4gICAqXG4gICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAqL1xuICBhcnJvd01hcmtlckFic29sdXRlOiBmYWxzZSxcbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIGNvbnRyb2xzIHdoaWNoIGN1cnJlbnRDb25maWcga2V5cyBhcmUgY29uc2lkZXJlZCBfc2VjdXJlXyBhbmQgY2FuIG9ubHkgYmUgY2hhbmdlZFxuICAgKiB2aWEgY2FsbCB0byBtZXJtYWlkQVBJLmluaXRpYWxpemUuIENhbGxzIHRvIG1lcm1haWRBUEkucmVpbml0aWFsaXplIGNhbm5vdCBtYWtlIGNoYW5nZXMgdG8gdGhlXG4gICAqIGBzZWN1cmVgIGtleXMgaW4gdGhlIGN1cnJlbnQgY3VycmVudENvbmZpZy4gVGhpcyBwcmV2ZW50cyBtYWxpY2lvdXMgZ3JhcGggZGlyZWN0aXZlcyBmcm9tXG4gICAqIG92ZXJyaWRpbmcgYSBzaXRlJ3MgZGVmYXVsdCBzZWN1cml0eS5cbiAgICpcbiAgICogKipOb3RlcyoqOlxuICAgKlxuICAgKiBEZWZhdWx0IHZhbHVlOiBbJ3NlY3VyZScsICdzZWN1cml0eUxldmVsJywgJ3N0YXJ0T25Mb2FkJywgJ21heFRleHRTaXplJ11cbiAgICovXG4gIHNlY3VyZTogW1wic2VjdXJlXCIsIFwic2VjdXJpdHlMZXZlbFwiLCBcInN0YXJ0T25Mb2FkXCIsIFwibWF4VGV4dFNpemVcIl0sXG4gIC8qKlxuICAgKiBUaGlzIG9wdGlvbiBjb250cm9scyBpZiB0aGUgZ2VuZXJhdGVkIGlkcyBvZiBub2RlcyBpbiB0aGUgU1ZHIGFyZSBnZW5lcmF0ZWQgcmFuZG9tbHkgb3IgYmFzZWRcbiAgICogb24gYSBzZWVkLiBJZiBzZXQgdG8gZmFsc2UsIHRoZSBJRHMgYXJlIGdlbmVyYXRlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aHVzIGFyZSBub3RcbiAgICogZGV0ZXJtaW5pc3RpYy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiAgICpcbiAgICogKipOb3RlcyoqOlxuICAgKlxuICAgKiBUaGlzIG1hdHRlcnMgaWYgeW91ciBmaWxlcyBhcmUgY2hlY2tlZCBpbnRvIHNvdXJjZSBjb250cm9sIGUuZy4gZ2l0IGFuZCBzaG91bGQgbm90IGNoYW5nZSB1bmxlc3NcbiAgICogY29udGVudCBpcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgKi9cbiAgZGV0ZXJtaW5pc3RpY0lkczogZmFsc2UsXG4gIC8qKlxuICAgKiBUaGlzIG9wdGlvbiBpcyB0aGUgb3B0aW9uYWwgc2VlZCBmb3IgZGV0ZXJtaW5pc3RpYyBpZHMuIGlmIHNldCB0byB1bmRlZmluZWQgYnV0XG4gICAqIGRldGVybWluaXN0aWNJZHMgaXMgdHJ1ZSwgYSBzaW1wbGUgbnVtYmVyIGl0ZXJhdG9yIGlzIHVzZWQuIFlvdSBjYW4gc2V0IHRoaXMgYXR0cmlidXRlIHRvIGJhc2VcbiAgICogdGhlIHNlZWQgb24gYSBzdGF0aWMgc3RyaW5nLlxuICAgKi9cbiAgZGV0ZXJtaW5pc3RpY0lEU2VlZDogdm9pZCAwLFxuICAvKiogVGhlIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljIGZvciBmbG93Y2hhcnRzICovXG4gIGZsb3djaGFydDoge1xuICAgIC8qKlxuICAgICAqICMjIyB0aXRsZVRvcE1hcmdpblxuICAgICAqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHRpdGxlVG9wTWFyZ2luIHwgTWFyZ2luIHRvcCBmb3IgdGhlIHRleHQgb3ZlciB0aGUgZmxvd2NoYXJ0ICAgICB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDI1XG4gICAgICovXG4gICAgdGl0bGVUb3BNYXJnaW46IDI1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1QYWRkaW5nIHwgQW1vdW50IG9mIHBhZGRpbmcgYXJvdW5kIHRoZSBkaWFncmFtIGFzIGEgd2hvbGUgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogVGhlIGFtb3VudCBvZiBwYWRkaW5nIGFyb3VuZCB0aGUgZGlhZ3JhbSBhcyBhIHdob2xlIHNvIHRoYXQgZW1iZWRkZWQgZGlhZ3JhbXMgaGF2ZSBtYXJnaW5zLFxuICAgICAqIGV4cHJlc3NlZCBpbiBwaXhlbHNcbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDhcbiAgICAgKi9cbiAgICBkaWFncmFtUGFkZGluZzogOCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGh0bWxMYWJlbHMgfCBGbGFnIGZvciBzZXR0aW5nIHdoZXRoZXIgb3Igbm90IGEgaHRtbCB0YWcgc2hvdWxkIGJlIHVzZWQgZm9yIHJlbmRlcmluZyBsYWJlbHMgb24gdGhlIGVkZ2VzLiB8IGJvb2xlYW4gfCBSZXF1aXJlZCB8IHRydWUsIGZhbHNlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogdHJ1ZS5cbiAgICAgKi9cbiAgICBodG1sTGFiZWxzOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBub2RlU3BhY2luZyB8IERlZmluZXMgdGhlIHNwYWNpbmcgYmV0d2VlbiBub2RlcyBvbiB0aGUgc2FtZSBsZXZlbCB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBwb3NpdGl2ZSBOdW1iZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogUGVydGFpbnMgdG8gaG9yaXpvbnRhbCBzcGFjaW5nIGZvciBUQiAodG9wIHRvIGJvdHRvbSkgb3IgQlQgKGJvdHRvbSB0byB0b3ApIGdyYXBocywgYW5kIHRoZVxuICAgICAqIHZlcnRpY2FsIHNwYWNpbmcgZm9yIExSIGFzIHdlbGwgYXMgUkwgZ3JhcGhzLioqXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiA1MFxuICAgICAqL1xuICAgIG5vZGVTcGFjaW5nOiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHJhbmtTcGFjaW5nIHwgRGVmaW5lcyB0aGUgc3BhY2luZyBiZXR3ZWVuIG5vZGVzIG9uIGRpZmZlcmVudCBsZXZlbHMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgTnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXMqKjpcbiAgICAgKlxuICAgICAqIFBlcnRhaW5zIHRvIHZlcnRpY2FsIHNwYWNpbmcgZm9yIFRCICh0b3AgdG8gYm90dG9tKSBvciBCVCAoYm90dG9tIHRvIHRvcCksIGFuZCB0aGUgaG9yaXpvbnRhbFxuICAgICAqIHNwYWNpbmcgZm9yIExSIGFzIHdlbGwgYXMgUkwgZ3JhcGhzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZSA1MFxuICAgICAqL1xuICAgIHJhbmtTcGFjaW5nOiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgY3VydmUgICAgIHwgRGVmaW5lcyBob3cgbWVybWFpZCByZW5kZXJzIGN1cnZlcyBmb3IgZmxvd2NoYXJ0cy4gfCBzdHJpbmcgfCBSZXF1aXJlZCB8ICdiYXNpcycsICdsaW5lYXInLCAnY2FyZGluYWwnIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIERlZmF1bHQgVmFsdWU6ICdiYXNpcydcbiAgICAgKi9cbiAgICBjdXJ2ZTogXCJiYXNpc1wiLFxuICAgIC8vIE9ubHkgdXNlZCBpbiBuZXcgZXhwZXJpbWVudGFsIHJlbmRlcmluZ1xuICAgIC8vIHJlcHJlc2VudHMgdGhlIHBhZGRpbmcgYmV0d2VlbiB0aGUgbGFiZWxzIGFuZCB0aGUgc2hhcGVcbiAgICBwYWRkaW5nOiAxNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdXNlTWF4V2lkdGggfCBTZWUgbm90ZXMgICB8IGJvb2xlYW4gfCA0ICAgICAgICB8IHRydWUsIGZhbHNlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBpcyBzZXQgdG8gMTAwJSBhbmQgaXMgdGhlbiBzY2FsaW5nIHdpdGggdGhlXG4gICAgICogYXZhaWxhYmxlIHNwYWNlIGlmIG5vdCB0aGUgYWJzb2x1dGUgc3BhY2UgcmVxdWlyZWQgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICB1c2VNYXhXaWR0aDogdHJ1ZSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkZWZhdWx0UmVuZGVyZXIgfCBTZWUgbm90ZXMgICB8IGJvb2xlYW4gfCA0ICAgICAgICB8IGRhZ3JlLWQzLCBkYWdyZS13cmFwcGVyLCBlbGsgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogRGVjaWRlcyB3aGljaCByZW5kZXJpbmcgZW5naW5lIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlbmRlcmluZy4gTGVnYWwgdmFsdWVzIGFyZTpcbiAgICAgKiBkYWdyZS1kMyBkYWdyZS13cmFwcGVyIC0gd3JhcHBlciBmb3IgZGFncmUgaW1wbGVtZW50ZWQgaW4gbWVybWFpZCwgZWxrIGZvciBsYXlvdXQgdXNpbmdcbiAgICAgKiBlbGtqc1xuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ2RhZ3JlLXdyYXBwZXInXG4gICAgICovXG4gICAgZGVmYXVsdFJlbmRlcmVyOiBcImRhZ3JlLXdyYXBwZXJcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB3cmFwcGluZ1dpZHRoICAgfCBTZWUgbm90ZXMgICB8IG51bWJlciAgfCA0ICAgICAgICB8IHdpZHRoIG9mIG5vZGVzIHdoZXJlIHRleHQgaXMgd3JhcHBlZCB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBXaGVuIHVzaW5nIG1hcmtkb3duIHN0cmluZ3MgdGhlIHRleHQgaXVzIHdyYXBwZWQgYXV0b21hdGljYWxseSwgdGhpc1xuICAgICAqIHZhbHVlIHNldHMgdGhlIG1heCB3aWR0aCBvZiBhIHRleHQgYmVmb3JlIGl0IGNvbnRpbnVlcyBvbiBhIG5ldyBsaW5lLlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICdkYWdyZS13cmFwcGVyJ1xuICAgICAqL1xuICAgIHdyYXBwaW5nV2lkdGg6IDIwMFxuICB9LFxuICAvKiogVGhlIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljIGZvciBzZXF1ZW5jZSBkaWFncmFtcyAqL1xuICBzZXF1ZW5jZToge1xuICAgIGhpZGVVbnVzZWRQYXJ0aWNpcGFudHM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGFjdGl2YXRpb25XaWR0aCB8IFdpZHRoIG9mIHRoZSBhY3RpdmF0aW9uIHJlY3QgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlIDoxMFxuICAgICAqL1xuICAgIGFjdGl2YXRpb25XaWR0aDogMTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1NYXJnaW5YIHwgTWFyZ2luIHRvIHRoZSByaWdodCBhbmQgbGVmdCBvZiB0aGUgc2VxdWVuY2UgZGlhZ3JhbSB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDUwXG4gICAgICovXG4gICAgZGlhZ3JhbU1hcmdpblg6IDUwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkaWFncmFtTWFyZ2luWSB8IE1hcmdpbiB0byB0aGUgb3ZlciBhbmQgdW5kZXIgdGhlIHNlcXVlbmNlIGRpYWdyYW0gfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxMFxuICAgICAqL1xuICAgIGRpYWdyYW1NYXJnaW5ZOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGFjdG9yTWFyZ2luIHwgTWFyZ2luIGJldHdlZW4gYWN0b3JzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNTBcbiAgICAgKi9cbiAgICBhY3Rvck1hcmdpbjogNTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB3aWR0aCAgICAgfCBXaWR0aCBvZiBhY3RvciBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE1MFxuICAgICAqL1xuICAgIHdpZHRoOiAxNTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGhlaWdodCAgICB8IEhlaWdodCBvZiBhY3RvciBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDY1XG4gICAgICovXG4gICAgaGVpZ2h0OiA2NSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYm94TWFyZ2luIHwgTWFyZ2luIGFyb3VuZCBsb29wIGJveGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBib3hNYXJnaW46IDEwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBib3hUZXh0TWFyZ2luIHwgTWFyZ2luIGFyb3VuZCB0aGUgdGV4dCBpbiBsb29wL2FsdC9vcHQgYm94ZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiA1XG4gICAgICovXG4gICAgYm94VGV4dE1hcmdpbjogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG5vdGVNYXJnaW4gfCBtYXJnaW4gYXJvdW5kIG5vdGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBub3RlTWFyZ2luOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG1lc3NhZ2VNYXJnaW4gfCBTcGFjZSBiZXR3ZWVuIG1lc3NhZ2VzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMzVcbiAgICAgKi9cbiAgICBtZXNzYWdlTWFyZ2luOiAzNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICB8IFR5cGUgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgbWVzc2FnZUFsaWduIHwgTXVsdGlsaW5lIG1lc3NhZ2UgYWxpZ25tZW50IHwgc3RyaW5nIHwgUmVxdWlyZWQgfCAnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogJ2NlbnRlcidcbiAgICAgKi9cbiAgICBtZXNzYWdlQWxpZ246IFwiY2VudGVyXCIsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCBtaXJyb3JBY3RvcnMgfCBNaXJyb3IgYWN0b3JzIHVuZGVyIGRpYWdyYW0gfCBib29sZWFuIHwgUmVxdWlyZWQgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICBtaXJyb3JBY3RvcnM6IHRydWUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCBmb3JjZU1lbnVzIHwgZm9yY2VzIGFjdG9yIHBvcHVwIG1lbnVzIHRvIGFsd2F5cyBiZSB2aXNpYmxlICh0byBzdXBwb3J0IEUyRSB0ZXN0aW5nKS4gfCBCb29sZWFuIHwgUmVxdWlyZWQgfCBUcnVlLCBGYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZS5cbiAgICAgKi9cbiAgICBmb3JjZU1lbnVzOiBmYWxzZSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYm90dG9tTWFyZ2luQWRqIHwgUHJvbG9uZ3MgdGhlIGVkZ2Ugb2YgdGhlIGRpYWdyYW0gZG93bndhcmRzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIERlcGVuZGluZyBvbiBjc3Mgc3R5bGluZyB0aGlzIG1pZ2h0IG5lZWQgYWRqdXN0bWVudC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDFcbiAgICAgKi9cbiAgICBib3R0b21NYXJnaW5BZGo6IDEsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHVzZU1heFdpZHRoIHwgU2VlIE5vdGVzICAgfCBib29sZWFuIHwgUmVxdWlyZWQgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB0byB0cnVlLCB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBpcyBzZXQgdG8gMTAwJSBhbmQgaXMgdGhlblxuICAgICAqIHNjYWxpbmcgd2l0aCB0aGUgYXZhaWxhYmxlIHNwYWNlLiBJZiBzZXQgdG8gZmFsc2UsIHRoZSBhYnNvbHV0ZSBzcGFjZSByZXF1aXJlZCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZVxuICAgICAqL1xuICAgIHVzZU1heFdpZHRoOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHJpZ2h0QW5nbGVzIHwgZGlzcGxheSBjdXJ2ZSBhcnJvd3MgYXMgcmlnaHQgYW5nbGVzIHwgYm9vbGVhbiB8IFJlcXVpcmVkIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogVGhpcyB3aWxsIGRpc3BsYXkgYXJyb3dzIHRoYXQgc3RhcnQgYW5kIGJlZ2luIGF0IHRoZSBzYW1lIG5vZGUgYXMgcmlnaHQgYW5nbGVzLCByYXRoZXIgdGhhbiBhXG4gICAgICogY3VydmVcbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgcmlnaHRBbmdsZXM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHNob3dTZXF1ZW5jZU51bWJlcnMgfCBUaGlzIHdpbGwgc2hvdyB0aGUgbm9kZSBudW1iZXJzIHwgYm9vbGVhbiB8IFJlcXVpcmVkIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIHNob3dTZXF1ZW5jZU51bWJlcnM6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBhY3RvckZvbnRTaXplIHwgVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgdGhlIGFjdG9yJ3MgZGVzY3JpcHRpb24gfCBJbnRlZ2VyIHwgUmVxdWlyZSAgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiAqKkRlZmF1bHQgdmFsdWUgMTQqKi4uXG4gICAgICovXG4gICAgYWN0b3JGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGFjdG9yRm9udEZhbWlseSB8IFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgdGhlIGFjdG9yJ3MgZGVzY3JpcHRpb24gfCBzdHJpbmcgfCBSZXF1aXJlZCB8IEFueSBQb3NzaWJsZSBDU1MgRm9udEZhbWlseSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiJ09wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJ1xuICAgICAqL1xuICAgIGFjdG9yRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgdGhlIGFjdG9yJ3MgZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNDAwLlxuICAgICAqL1xuICAgIGFjdG9yRm9udFdlaWdodDogNDAwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgbm90ZUZvbnRTaXplIHwgVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgYWN0b3ItYXR0YWNoZWQgbm90ZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNFxuICAgICAqL1xuICAgIG5vdGVGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG5vdGVGb250RmFtaWx5IHwgVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBhY3Rvci1hdHRhY2hlZCBub3Rlcy4gfCBzdHJpbmcgfCBSZXF1aXJlZCB8IEFueSBQb3NzaWJsZSBDU1MgRm9udEZhbWlseSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6ICcnXCJ0cmVidWNoZXQgbXNcIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnXG4gICAgICovXG4gICAgbm90ZUZvbnRGYW1pbHk6ICdcInRyZWJ1Y2hldCBtc1wiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiB0aGUgbm90ZSdzIGRlc2NyaXB0aW9uXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDQwMFxuICAgICAqL1xuICAgIG5vdGVGb250V2VpZ2h0OiA0MDAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgbm90ZUFsaWduIHwgVGhpcyBzZXRzIHRoZSB0ZXh0IGFsaWdubWVudCBvZiBhY3Rvci1hdHRhY2hlZCBub3RlcyB8IHN0cmluZyB8IHJlcXVpcmVkIHwgJ2xlZnQnLCAnY2VudGVyJywgJ3JpZ2h0JyB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6ICdjZW50ZXInXG4gICAgICovXG4gICAgbm90ZUFsaWduOiBcImNlbnRlclwiLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBtZXNzYWdlRm9udFNpemUgfCBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBhY3RvciBtZXNzYWdlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBOdW1iZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNlxuICAgICAqL1xuICAgIG1lc3NhZ2VGb250U2l6ZTogMTYsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBtZXNzYWdlRm9udEZhbWlseSB8IFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgYWN0b3IgbWVzc2FnZXMgfCBzdHJpbmcgfCBSZXF1aXJlZCB8IEFueSBQb3NzaWJsZSBDU1MgRm9udEZhbWlseSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6ICdcInRyZWJ1Y2hldCBtc1wiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZidcbiAgICAgKi9cbiAgICBtZXNzYWdlRm9udEZhbWlseTogJ1widHJlYnVjaGV0IG1zXCIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIHRoZSBtZXNzYWdlJ3MgZGVzY3JpcHRpb25cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNDAwLlxuICAgICAqL1xuICAgIG1lc3NhZ2VGb250V2VpZ2h0OiA0MDAsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBhdXRvLXdyYXAgc3RhdGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IGZhbHNlLlxuICAgICAqL1xuICAgIHdyYXA6IGZhbHNlLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgYXV0by13cmFwIHBhZGRpbmcgZm9yIHRoZSBkaWFncmFtIChzaWRlcyBvbmx5KVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAwLlxuICAgICAqL1xuICAgIHdyYXBQYWRkaW5nOiAxMCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBsb29wLWJveCAobG9vcCwgYWx0LCBvcHQsIHBhcilcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNTAuXG4gICAgICovXG4gICAgbGFiZWxCb3hXaWR0aDogNTAsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBoZWlnaHQgb2YgdGhlIGxvb3AtYm94IChsb29wLCBhbHQsIG9wdCwgcGFyKVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAyMC5cbiAgICAgKi9cbiAgICBsYWJlbEJveEhlaWdodDogMjAsXG4gICAgbWVzc2FnZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5tZXNzYWdlRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMubWVzc2FnZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLm1lc3NhZ2VGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgbm90ZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5ub3RlRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMubm90ZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLm5vdGVGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgYWN0b3JGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuYWN0b3JGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5hY3RvckZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmFjdG9yRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIC8qKiBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbnMgc3BlY2lmaWMgZm9yIGdhbnR0IGRpYWdyYW1zICovXG4gIGdhbnR0OiB7XG4gICAgLyoqXG4gICAgICogIyMjIHRpdGxlVG9wTWFyZ2luXG4gICAgICpcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGl0bGVUb3BNYXJnaW4gfCBNYXJnaW4gdG9wIGZvciB0aGUgdGV4dCBvdmVyIHRoZSBnYW50dCBkaWFncmFtIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMjVcbiAgICAgKi9cbiAgICB0aXRsZVRvcE1hcmdpbjogMjUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBiYXJIZWlnaHQgfCBUaGUgaGVpZ2h0IG9mIHRoZSBiYXJzIGluIHRoZSBncmFwaCB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDIwXG4gICAgICovXG4gICAgYmFySGVpZ2h0OiAyMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBiYXJHYXAgICAgfCBUaGUgbWFyZ2luIGJldHdlZW4gdGhlIGRpZmZlcmVudCBhY3Rpdml0aWVzIGluIHRoZSBnYW50dCBkaWFncmFtIHwgSW50ZWdlciB8IE9wdGlvbmFsIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNFxuICAgICAqL1xuICAgIGJhckdhcDogNCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdG9wUGFkZGluZyB8IE1hcmdpbiBiZXR3ZWVuIHRpdGxlIGFuZCBnYW50dCBkaWFncmFtIGFuZCBiZXR3ZWVuIGF4aXMgYW5kIGdhbnR0IGRpYWdyYW0uIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNTBcbiAgICAgKi9cbiAgICB0b3BQYWRkaW5nOiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHJpZ2h0UGFkZGluZyB8IFRoZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBzZWN0aW9uIG5hbWUgdG8gdGhlIHJpZ2h0IG9mIHRoZSBhY3Rpdml0aWVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNzVcbiAgICAgKi9cbiAgICByaWdodFBhZGRpbmc6IDc1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBsZWZ0UGFkZGluZyB8IFRoZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBzZWN0aW9uIG5hbWUgdG8gdGhlIGxlZnQgb2YgdGhlIGFjdGl2aXRpZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiA3NVxuICAgICAqL1xuICAgIGxlZnRQYWRkaW5nOiA3NSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBncmlkTGluZVN0YXJ0UGFkZGluZyB8IFZlcnRpY2FsIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBncmlkIGxpbmVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMzVcbiAgICAgKi9cbiAgICBncmlkTGluZVN0YXJ0UGFkZGluZzogMzUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBmb250U2l6ZSAgfCBGb250IHNpemUgICB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDExXG4gICAgICovXG4gICAgZm9udFNpemU6IDExLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHNlY3Rpb25Gb250U2l6ZSB8IEZvbnQgc2l6ZSBmb3Igc2VjdGlvbnMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxMVxuICAgICAqL1xuICAgIHNlY3Rpb25Gb250U2l6ZTogMTEsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBudW1iZXJTZWN0aW9uU3R5bGVzIHwgVGhlIG51bWJlciBvZiBhbHRlcm5hdGluZyBzZWN0aW9uIHN0eWxlcyB8IEludGVnZXIgfCA0ICAgICAgICB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDRcbiAgICAgKi9cbiAgICBudW1iZXJTZWN0aW9uU3R5bGVzOiA0LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIHwgVHlwZSAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0gfFxuICAgICAqIHwgZGlzcGxheU1vZGUgfCBDb250cm9scyB0aGUgZGlzcGxheSBtb2RlIHwgc3RyaW5nIHwgNCAgICAgICAgfCAnY29tcGFjdCcgfFxuICAgICAqXG4gICAgICogKipOb3RlcyoqOlxuICAgICAqXG4gICAgICogLSAqKmNvbXBhY3QqKjogRW5hYmxlcyBkaXNwbGF5aW5nIG11bHRpcGxlIHRhc2tzIG9uIHRoZSBzYW1lIHJvdy5cbiAgICAgKi9cbiAgICBkaXNwbGF5TW9kZTogXCJcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgIHwgVHlwZSB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYXhpc0Zvcm1hdCB8IERhdGUvdGltZSBmb3JtYXQgb2YgdGhlIGF4aXMgfCAzICAgIHwgUmVxdWlyZWQgfCBEYXRlIGluIHl5LW1tLWRkIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFRoaXMgbWlnaHQgbmVlZCBhZGp1c3RtZW50IHRvIG1hdGNoIHlvdXIgbG9jYWxlIGFuZCBwcmVmZXJlbmNlc1xuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJyVZLSVtLSVkJy5cbiAgICAgKi9cbiAgICBheGlzRm9ybWF0OiBcIiVZLSVtLSVkXCIsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICB8IFJlcXVpcmVkIHwgVmFsdWVzICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS18IC0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLSB8XG4gICAgICogfCB0aWNrSW50ZXJ2YWwgfCBheGlzIHRpY2tzICB8IHN0cmluZyB8IE9wdGlvbmFsIHwgc3RyaW5nICB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBQYXR0ZXJuIGlzIC9eKFsxLTldWzAtOV0qKShtaW51dGV8aG91cnxkYXl8d2Vla3xtb250aCkkL1xuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdW5kZWZpbmVkXG4gICAgICovXG4gICAgdGlja0ludGVydmFsOiB2b2lkIDAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHVzZU1heFdpZHRoIHwgU2VlIG5vdGVzICAgfCBib29sZWFuIHwgNCAgICAgICAgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQgdGhlIGhlaWdodCBhbmQgd2lkdGggaXMgc2V0IHRvIDEwMCUgYW5kIGlzIHRoZW4gc2NhbGluZyB3aXRoIHRoZVxuICAgICAqIGF2YWlsYWJsZSBzcGFjZSBpZiBub3QgdGhlIGFic29sdXRlIHNwYWNlIHJlcXVpcmVkIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiB0cnVlXG4gICAgICovXG4gICAgdXNlTWF4V2lkdGg6IHRydWUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdG9wQXhpcyAgIHwgU2VlIG5vdGVzICAgfCBCb29sZWFuIHwgNCAgICAgICAgfCBUcnVlLCBGYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIHdoZW4gdGhpcyBmbGFnIGlzIHNldCBkYXRlIGxhYmVscyB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0b3Agb2YgdGhlIGNoYXJ0XG4gICAgICpcbiAgICAgKiAqKkRlZmF1bHQgdmFsdWUgZmFsc2UqKi5cbiAgICAgKi9cbiAgICB0b3BBeGlzOiBmYWxzZSxcbiAgICB1c2VXaWR0aDogdm9pZCAwXG4gIH0sXG4gIC8qKiBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbnMgc3BlY2lmaWMgZm9yIGpvdXJuZXkgZGlhZ3JhbXMgKi9cbiAgam91cm5leToge1xuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkaWFncmFtTWFyZ2luWCB8IE1hcmdpbiB0byB0aGUgcmlnaHQgYW5kIGxlZnQgb2YgdGhlIHNlcXVlbmNlIGRpYWdyYW0gfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiA1MFxuICAgICAqL1xuICAgIGRpYWdyYW1NYXJnaW5YOiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkaWFncmFtTWFyZ2luWSB8IE1hcmdpbiB0byB0aGUgb3ZlciBhbmQgdW5kZXIgdGhlIHNlcXVlbmNlIGRpYWdyYW0uIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBkaWFncmFtTWFyZ2luWTogMTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBhY3Rvck1hcmdpbiB8IE1hcmdpbiBiZXR3ZWVuIGFjdG9ycyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDUwXG4gICAgICovXG4gICAgbGVmdE1hcmdpbjogMTUwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgd2lkdGggICAgIHwgV2lkdGggb2YgYWN0b3IgYm94ZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNTBcbiAgICAgKi9cbiAgICB3aWR0aDogMTUwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBoZWlnaHQgICAgfCBIZWlnaHQgb2YgYWN0b3IgYm94ZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiA2NVxuICAgICAqL1xuICAgIGhlaWdodDogNTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGJveE1hcmdpbiB8IE1hcmdpbiBhcm91bmQgbG9vcCBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDEwXG4gICAgICovXG4gICAgYm94TWFyZ2luOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYm94VGV4dE1hcmdpbiB8IE1hcmdpbiBhcm91bmQgdGhlIHRleHQgaW4gbG9vcC9hbHQvb3B0IGJveGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNVxuICAgICAqL1xuICAgIGJveFRleHRNYXJnaW46IDUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgIHwgRGVzY3JpcHRpb24gICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBub3RlTWFyZ2luIHwgTWFyZ2luIGFyb3VuZCBub3RlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDEwXG4gICAgICovXG4gICAgbm90ZU1hcmdpbjogMTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG1lc3NhZ2VNYXJnaW4gfCBTcGFjZSBiZXR3ZWVuIG1lc3NhZ2VzLiB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBTcGFjZSBiZXR3ZWVuIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMzVcbiAgICAgKi9cbiAgICBtZXNzYWdlTWFyZ2luOiAzNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICB8IFR5cGUgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBtZXNzYWdlQWxpZ24gfCBNdWx0aWxpbmUgbWVzc2FnZSBhbGlnbm1lbnQgfCAzICAgIHwgNCAgICAgICAgfCAnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogJ2NlbnRlcidcbiAgICAgKi9cbiAgICBtZXNzYWdlQWxpZ246IFwiY2VudGVyXCIsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGJvdHRvbU1hcmdpbkFkaiB8IFByb2xvbmdzIHRoZSBlZGdlIG9mIHRoZSBkaWFncmFtIGRvd253YXJkcyB8IEludGVnZXIgfCA0ICAgICAgICB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBEZXBlbmRpbmcgb24gY3NzIHN0eWxpbmcgdGhpcyBtaWdodCBuZWVkIGFkanVzdG1lbnQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxXG4gICAgICovXG4gICAgYm90dG9tTWFyZ2luQWRqOiAxLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCB1c2VNYXhXaWR0aCB8IFNlZSBub3RlcyAgIHwgYm9vbGVhbiB8IDQgICAgICAgIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogV2hlbiB0aGlzIGZsYWcgaXMgc2V0IHRoZSBoZWlnaHQgYW5kIHdpZHRoIGlzIHNldCB0byAxMDAlIGFuZCBpcyB0aGVuIHNjYWxpbmcgd2l0aCB0aGVcbiAgICAgKiBhdmFpbGFibGUgc3BhY2UgaWYgbm90IHRoZSBhYnNvbHV0ZSBzcGFjZSByZXF1aXJlZCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZVxuICAgICAqL1xuICAgIHVzZU1heFdpZHRoOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHJpZ2h0QW5nbGVzIHwgQ3VydmVkIEFycm93cyBiZWNvbWUgUmlnaHQgQW5nbGVzIHwgMyAgICB8IDQgICAgICAgIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogVGhpcyB3aWxsIGRpc3BsYXkgYXJyb3dzIHRoYXQgc3RhcnQgYW5kIGJlZ2luIGF0IHRoZSBzYW1lIG5vZGUgYXMgcmlnaHQgYW5nbGVzLCByYXRoZXIgdGhhbiBhXG4gICAgICogY3VydmVzXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIHJpZ2h0QW5nbGVzOiBmYWxzZSxcbiAgICB0YXNrRm9udFNpemU6IDE0LFxuICAgIHRhc2tGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgdGFza01hcmdpbjogNTAsXG4gICAgLy8gd2lkdGggb2YgYWN0aXZhdGlvbiBib3hcbiAgICBhY3RpdmF0aW9uV2lkdGg6IDEwLFxuICAgIC8vIHRleHQgcGxhY2VtZW50IGFzOiB0c3BhbiB8IGZvIHwgb2xkIG9ubHkgdGV4dCBhcyBiZWZvcmVcbiAgICB0ZXh0UGxhY2VtZW50OiBcImZvXCIsXG4gICAgYWN0b3JDb2xvdXJzOiBbXCIjOEZCQzhGXCIsIFwiIzdDRkMwMFwiLCBcIiMwMEZGRkZcIiwgXCIjMjBCMkFBXCIsIFwiI0IwRTBFNlwiLCBcIiNGRkZGRTBcIl0sXG4gICAgc2VjdGlvbkZpbGxzOiBbXCIjMTkxOTcwXCIsIFwiIzhCMDA4QlwiLCBcIiM0QjAwODJcIiwgXCIjMkY0RjRGXCIsIFwiIzgwMDAwMFwiLCBcIiM4QjQ1MTNcIiwgXCIjMDAwMDhCXCJdLFxuICAgIHNlY3Rpb25Db2xvdXJzOiBbXCIjZmZmXCJdXG4gIH0sXG4gIC8qKiBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbnMgc3BlY2lmaWMgZm9yIHRpbWVsaW5lIGRpYWdyYW1zICovXG4gIHRpbWVsaW5lOiB7XG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1NYXJnaW5YIHwgTWFyZ2luIHRvIHRoZSByaWdodCBhbmQgbGVmdCBvZiB0aGUgc2VxdWVuY2UgZGlhZ3JhbSB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDUwXG4gICAgICovXG4gICAgZGlhZ3JhbU1hcmdpblg6IDUwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1NYXJnaW5ZIHwgTWFyZ2luIHRvIHRoZSBvdmVyIGFuZCB1bmRlciB0aGUgc2VxdWVuY2UgZGlhZ3JhbS4gfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxMFxuICAgICAqL1xuICAgIGRpYWdyYW1NYXJnaW5ZOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGFjdG9yTWFyZ2luIHwgTWFyZ2luIGJldHdlZW4gYWN0b3JzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNTBcbiAgICAgKi9cbiAgICBsZWZ0TWFyZ2luOiAxNTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB3aWR0aCAgICAgfCBXaWR0aCBvZiBhY3RvciBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE1MFxuICAgICAqL1xuICAgIHdpZHRoOiAxNTAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGhlaWdodCAgICB8IEhlaWdodCBvZiBhY3RvciBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDY1XG4gICAgICovXG4gICAgaGVpZ2h0OiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYm94TWFyZ2luIHwgTWFyZ2luIGFyb3VuZCBsb29wIGJveGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBib3hNYXJnaW46IDEwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBib3hUZXh0TWFyZ2luIHwgTWFyZ2luIGFyb3VuZCB0aGUgdGV4dCBpbiBsb29wL2FsdC9vcHQgYm94ZXMgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiA1XG4gICAgICovXG4gICAgYm94VGV4dE1hcmdpbjogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgfCBEZXNjcmlwdGlvbiAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG5vdGVNYXJnaW4gfCBNYXJnaW4gYXJvdW5kIG5vdGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBub3RlTWFyZ2luOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgbWVzc2FnZU1hcmdpbiB8IFNwYWNlIGJldHdlZW4gbWVzc2FnZXMuIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFNwYWNlIGJldHdlZW4gbWVzc2FnZXMuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAzNVxuICAgICAqL1xuICAgIG1lc3NhZ2VNYXJnaW46IDM1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIHwgVHlwZSB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG1lc3NhZ2VBbGlnbiB8IE11bHRpbGluZSBtZXNzYWdlIGFsaWdubWVudCB8IDMgICAgfCA0ICAgICAgICB8ICdsZWZ0JywgJ2NlbnRlcicsICdyaWdodCcgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAnY2VudGVyJ1xuICAgICAqL1xuICAgIG1lc3NhZ2VBbGlnbjogXCJjZW50ZXJcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYm90dG9tTWFyZ2luQWRqIHwgUHJvbG9uZ3MgdGhlIGVkZ2Ugb2YgdGhlIGRpYWdyYW0gZG93bndhcmRzIHwgSW50ZWdlciB8IDQgICAgICAgIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIERlcGVuZGluZyBvbiBjc3Mgc3R5bGluZyB0aGlzIG1pZ2h0IG5lZWQgYWRqdXN0bWVudC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDFcbiAgICAgKi9cbiAgICBib3R0b21NYXJnaW5BZGo6IDEsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHVzZU1heFdpZHRoIHwgU2VlIG5vdGVzICAgfCBib29sZWFuIHwgNCAgICAgICAgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQgdGhlIGhlaWdodCBhbmQgd2lkdGggaXMgc2V0IHRvIDEwMCUgYW5kIGlzIHRoZW4gc2NhbGluZyB3aXRoIHRoZVxuICAgICAqIGF2YWlsYWJsZSBzcGFjZSBpZiBub3QgdGhlIGFic29sdXRlIHNwYWNlIHJlcXVpcmVkIGlzIHVzZWQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiB0cnVlXG4gICAgICovXG4gICAgdXNlTWF4V2lkdGg6IHRydWUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgcmlnaHRBbmdsZXMgfCBDdXJ2ZWQgQXJyb3dzIGJlY29tZSBSaWdodCBBbmdsZXMgfCAzICAgIHwgNCAgICAgICAgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBUaGlzIHdpbGwgZGlzcGxheSBhcnJvd3MgdGhhdCBzdGFydCBhbmQgYmVnaW4gYXQgdGhlIHNhbWUgbm9kZSBhcyByaWdodCBhbmdsZXMsIHJhdGhlciB0aGFuIGFcbiAgICAgKiBjdXJ2ZXNcbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgcmlnaHRBbmdsZXM6IGZhbHNlLFxuICAgIHRhc2tGb250U2l6ZTogMTQsXG4gICAgdGFza0ZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICB0YXNrTWFyZ2luOiA1MCxcbiAgICAvLyB3aWR0aCBvZiBhY3RpdmF0aW9uIGJveFxuICAgIGFjdGl2YXRpb25XaWR0aDogMTAsXG4gICAgLy8gdGV4dCBwbGFjZW1lbnQgYXM6IHRzcGFuIHwgZm8gfCBvbGQgb25seSB0ZXh0IGFzIGJlZm9yZVxuICAgIHRleHRQbGFjZW1lbnQ6IFwiZm9cIixcbiAgICBhY3RvckNvbG91cnM6IFtcIiM4RkJDOEZcIiwgXCIjN0NGQzAwXCIsIFwiIzAwRkZGRlwiLCBcIiMyMEIyQUFcIiwgXCIjQjBFMEU2XCIsIFwiI0ZGRkZFMFwiXSxcbiAgICBzZWN0aW9uRmlsbHM6IFtcIiMxOTE5NzBcIiwgXCIjOEIwMDhCXCIsIFwiIzRCMDA4MlwiLCBcIiMyRjRGNEZcIiwgXCIjODAwMDAwXCIsIFwiIzhCNDUxM1wiLCBcIiMwMDAwOEJcIl0sXG4gICAgc2VjdGlvbkNvbG91cnM6IFtcIiNmZmZcIl0sXG4gICAgZGlzYWJsZU11bHRpY29sb3I6IGZhbHNlXG4gIH0sXG4gIGNsYXNzOiB7XG4gICAgLyoqXG4gICAgICogIyMjIHRpdGxlVG9wTWFyZ2luXG4gICAgICpcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGl0bGVUb3BNYXJnaW4gfCBNYXJnaW4gdG9wIGZvciB0aGUgdGV4dCBvdmVyIHRoZSBjbGFzcyBkaWFncmFtIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMjVcbiAgICAgKi9cbiAgICB0aXRsZVRvcE1hcmdpbjogMjUsXG4gICAgYXJyb3dNYXJrZXJBYnNvbHV0ZTogZmFsc2UsXG4gICAgZGl2aWRlck1hcmdpbjogMTAsXG4gICAgcGFkZGluZzogNSxcbiAgICB0ZXh0SGVpZ2h0OiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdXNlTWF4V2lkdGggfCBTZWUgbm90ZXMgICB8IGJvb2xlYW4gfCA0ICAgICAgICB8IHRydWUsIGZhbHNlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBpcyBzZXQgdG8gMTAwJSBhbmQgaXMgdGhlbiBzY2FsaW5nIHdpdGggdGhlXG4gICAgICogYXZhaWxhYmxlIHNwYWNlIGlmIG5vdCB0aGUgYWJzb2x1dGUgc3BhY2UgcmVxdWlyZWQgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICB1c2VNYXhXaWR0aDogdHJ1ZSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkZWZhdWx0UmVuZGVyZXIgfCBTZWUgbm90ZXMgICB8IGJvb2xlYW4gfCA0ICAgICAgICB8IGRhZ3JlLWQzLCBkYWdyZS13cmFwcGVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXMqKjpcbiAgICAgKlxuICAgICAqIERlY2lkZXMgd2hpY2ggcmVuZGVyaW5nIGVuZ2luZSB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZW5kZXJpbmcuIExlZ2FsIHZhbHVlcyBhcmU6XG4gICAgICogZGFncmUtZDMgZGFncmUtd3JhcHBlciAtIHdyYXBwZXIgZm9yIGRhZ3JlIGltcGxlbWVudGVkIGluIG1lcm1haWRcbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICdkYWdyZS1kMydcbiAgICAgKi9cbiAgICBkZWZhdWx0UmVuZGVyZXI6IFwiZGFncmUtd3JhcHBlclwiXG4gIH0sXG4gIHN0YXRlOiB7XG4gICAgLyoqXG4gICAgICogIyMjIHRpdGxlVG9wTWFyZ2luXG4gICAgICpcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGl0bGVUb3BNYXJnaW4gfCBNYXJnaW4gdG9wIGZvciB0aGUgdGV4dCBvdmVyIHRoZSBzdGF0ZSBkaWFncmFtIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMjVcbiAgICAgKi9cbiAgICB0aXRsZVRvcE1hcmdpbjogMjUsXG4gICAgZGl2aWRlck1hcmdpbjogMTAsXG4gICAgc2l6ZVVuaXQ6IDUsXG4gICAgcGFkZGluZzogOCxcbiAgICB0ZXh0SGVpZ2h0OiAxMCxcbiAgICB0aXRsZVNoaWZ0OiAtMTUsXG4gICAgbm90ZU1hcmdpbjogMTAsXG4gICAgZm9ya1dpZHRoOiA3MCxcbiAgICBmb3JrSGVpZ2h0OiA3LFxuICAgIC8vIFVzZWRcbiAgICBtaW5pUGFkZGluZzogMixcbiAgICAvLyBGb250IHNpemUgZmFjdG9yLCB0aGlzIGlzIHVzZWQgdG8gZ3Vlc3MgdGhlIHdpZHRoIG9mIHRoZSBlZGdlcyBsYWJlbHMgYmVmb3JlIHJlbmRlcmluZyBieSBkYWdyZVxuICAgIC8vIGxheW91dC4gVGhpcyBtaWdodCBuZWVkIHVwZGF0aW5nIGlmL3doZW4gc3dpdGNoaW5nIGZvbnRcbiAgICBmb250U2l6ZUZhY3RvcjogNS4wMixcbiAgICBmb250U2l6ZTogMjQsXG4gICAgbGFiZWxIZWlnaHQ6IDE2LFxuICAgIGVkZ2VMZW5ndGhGYWN0b3I6IFwiMjBcIixcbiAgICBjb21wb3NpdFRpdGxlU2l6ZTogMzUsXG4gICAgcmFkaXVzOiA1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCB1c2VNYXhXaWR0aCB8IFNlZSBub3RlcyAgIHwgYm9vbGVhbiB8IDQgICAgICAgIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogV2hlbiB0aGlzIGZsYWcgaXMgc2V0IHRoZSBoZWlnaHQgYW5kIHdpZHRoIGlzIHNldCB0byAxMDAlIGFuZCBpcyB0aGVuIHNjYWxpbmcgd2l0aCB0aGVcbiAgICAgKiBhdmFpbGFibGUgc3BhY2UgaWYgbm90IHRoZSBhYnNvbHV0ZSBzcGFjZSByZXF1aXJlZCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZVxuICAgICAqL1xuICAgIHVzZU1heFdpZHRoOiB0cnVlLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRlZmF1bHRSZW5kZXJlciB8IFNlZSBub3RlcyAgIHwgYm9vbGVhbiB8IDQgICAgICAgIHwgZGFncmUtZDMsIGRhZ3JlLXdyYXBwZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogRGVjaWRlcyB3aGljaCByZW5kZXJpbmcgZW5naW5lIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlbmRlcmluZy4gTGVnYWwgdmFsdWVzIGFyZTpcbiAgICAgKiBkYWdyZS1kMyBkYWdyZS13cmFwcGVyIC0gd3JhcHBlciBmb3IgZGFncmUgaW1wbGVtZW50ZWQgaW4gbWVybWFpZFxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ2RhZ3JlLWQzJ1xuICAgICAqL1xuICAgIGRlZmF1bHRSZW5kZXJlcjogXCJkYWdyZS13cmFwcGVyXCJcbiAgfSxcbiAgLyoqIFRoZSBvYmplY3QgY29udGFpbmluZyBjb25maWd1cmF0aW9ucyBzcGVjaWZpYyBmb3IgZW50aXR5IHJlbGF0aW9uc2hpcCBkaWFncmFtcyAqL1xuICBlcjoge1xuICAgIC8qKlxuICAgICAqICMjIyB0aXRsZVRvcE1hcmdpblxuICAgICAqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHRpdGxlVG9wTWFyZ2luIHwgTWFyZ2luIHRvcCBmb3IgdGhlIHRleHQgb3ZlciB0aGUgZGlhZ3JhbSAgICAgICB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDI1XG4gICAgICovXG4gICAgdGl0bGVUb3BNYXJnaW46IDI1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1QYWRkaW5nIHwgQW1vdW50IG9mIHBhZGRpbmcgYXJvdW5kIHRoZSBkaWFncmFtIGFzIGEgd2hvbGUgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogVGhlIGFtb3VudCBvZiBwYWRkaW5nIGFyb3VuZCB0aGUgZGlhZ3JhbSBhcyBhIHdob2xlIHNvIHRoYXQgZW1iZWRkZWQgZGlhZ3JhbXMgaGF2ZSBtYXJnaW5zLFxuICAgICAqIGV4cHJlc3NlZCBpbiBwaXhlbHNcbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDIwXG4gICAgICovXG4gICAgZGlhZ3JhbVBhZGRpbmc6IDIwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGxheW91dERpcmVjdGlvbiB8IERpcmVjdGlvbmFsIGJpYXMgZm9yIGxheW91dCBvZiBlbnRpdGllcy4gfCBzdHJpbmcgfCBSZXF1aXJlZCB8IFwiVEJcIiwgXCJCVFwiLCBcIkxSXCIsIFwiUkxcIiB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiAnVEInIGZvciBUb3AtQm90dG9tLCAnQlQnZm9yIEJvdHRvbS1Ub3AsICdMUicgZm9yIExlZnQtUmlnaHQsIG9yICdSTCcgZm9yIFJpZ2h0IHRvIExlZnQuXG4gICAgICpcbiAgICAgKiBUID0gdG9wLCBCID0gYm90dG9tLCBMID0gbGVmdCwgYW5kIFIgPSByaWdodC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICdUQidcbiAgICAgKi9cbiAgICBsYXlvdXREaXJlY3Rpb246IFwiVEJcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgbWluRW50aXR5V2lkdGggfCBUaGUgbWluaW11bSB3aWR0aCBvZiBhbiBlbnRpdHkgYm94IHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRXhwcmVzc2VkIGluIHBpeGVscy4gRGVmYXVsdCB2YWx1ZTogMTAwXG4gICAgICovXG4gICAgbWluRW50aXR5V2lkdGg6IDEwMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IG1pbkVudGl0eUhlaWdodCB8IFRoZSBtaW5pbXVtIGhlaWdodCBvZiBhbiBlbnRpdHkgYm94IHwgSW50ZWdlciB8IDQgICAgICAgIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRXhwcmVzc2VkIGluIHBpeGVscyBEZWZhdWx0IHZhbHVlOiA3NVxuICAgICAqL1xuICAgIG1pbkVudGl0eUhlaWdodDogNzUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgZW50aXR5UGFkZGluZyB8IE1pbmltdW0gaW50ZXJuYWwgcGFkZGluZyBiZXR3ZWVuIHRleHQgaW4gYm94IGFuZCBib3ggYm9yZGVycyB8IEludGVnZXIgfCA0ICAgICAgICB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBUaGUgbWluaW11bSBpbnRlcm5hbCBwYWRkaW5nIGJldHdlZW4gdGV4dCBpbiBhbiBlbnRpdHkgYm94IGFuZCB0aGUgZW5jbG9zaW5nIGJveCBib3JkZXJzLFxuICAgICAqIGV4cHJlc3NlZCBpbiBwaXhlbHMuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxNVxuICAgICAqL1xuICAgIGVudGl0eVBhZGRpbmc6IDE1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBzdHJva2UgICAgfCBTdHJva2UgY29sb3Igb2YgYm94IGVkZ2VzIGFuZCBsaW5lcyB8IHN0cmluZyB8IDQgICAgICAgIHwgQW55IHJlY29nbml6ZWQgY29sb3IgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAnZ3JheSdcbiAgICAgKi9cbiAgICBzdHJva2U6IFwiZ3JheVwiLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgfCBUeXBlICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBmaWxsICAgICAgfCBGaWxsIGNvbG9yIG9mIGVudGl0eSBib3hlcyB8IHN0cmluZyB8IDQgICAgICAgIHwgQW55IHJlY29nbml6ZWQgY29sb3IgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAnaG9uZXlkZXcnXG4gICAgICovXG4gICAgZmlsbDogXCJob25leWRld1wiLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyIHwgRGVzY3JpcHRpb24gICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGZvbnRTaXplICB8IEZvbnQgU2l6ZSBpbiBwaXhlbHMgfCBJbnRlZ2VyIHwgICAgICAgICAgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogRm9udCBzaXplIChleHByZXNzZWQgYXMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgYSBudW1iZXIgb2YgcGl4ZWxzKSBEZWZhdWx0IHZhbHVlOiAxMlxuICAgICAqL1xuICAgIGZvbnRTaXplOiAxMixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdXNlTWF4V2lkdGggfCBTZWUgTm90ZXMgICB8IGJvb2xlYW4gfCBSZXF1aXJlZCB8IHRydWUsIGZhbHNlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB0byB0cnVlLCB0aGUgZGlhZ3JhbSB3aWR0aCBpcyBsb2NrZWQgdG8gMTAwJSBhbmQgc2NhbGVkIGJhc2VkIG9uXG4gICAgICogYXZhaWxhYmxlIHNwYWNlLiBJZiBzZXQgdG8gZmFsc2UsIHRoZSBkaWFncmFtIHJlc2VydmVzIGl0cyBhYnNvbHV0ZSB3aWR0aC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICB1c2VNYXhXaWR0aDogdHJ1ZVxuICB9LFxuICAvKiogVGhlIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljIGZvciBwaWUgZGlhZ3JhbXMgKi9cbiAgcGllOiB7XG4gICAgdXNlV2lkdGg6IHZvaWQgMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdXNlTWF4V2lkdGggfCBTZWUgTm90ZXMgICB8IGJvb2xlYW4gfCBSZXF1aXJlZCB8IHRydWUsIGZhbHNlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKlxuICAgICAqIFdoZW4gdGhpcyBmbGFnIGlzIHNldCB0byB0cnVlLCB0aGUgZGlhZ3JhbSB3aWR0aCBpcyBsb2NrZWQgdG8gMTAwJSBhbmQgc2NhbGVkIGJhc2VkIG9uXG4gICAgICogYXZhaWxhYmxlIHNwYWNlLiBJZiBzZXQgdG8gZmFsc2UsIHRoZSBkaWFncmFtIHJlc2VydmVzIGl0cyBhYnNvbHV0ZSB3aWR0aC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICB1c2VNYXhXaWR0aDogdHJ1ZSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGV4dFBvc2l0aW9uIHwgQXhpYWwgcG9zaXRpb24gb2Ygc2xpY2UncyBsYWJlbCBmcm9tIHplcm8gYXQgdGhlIGNlbnRlciB0byAxIGF0IHRoZSBvdXRzaWRlIGVkZ2UgfCBOdW1iZXIgIHwgT3B0aW9uYWwgfCBEZWNpbWFsIGZyb20gMCB0byAxIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMC43NVxuICAgICAqL1xuICAgIHRleHRQb3NpdGlvbjogMC43NVxuICB9LFxuICBxdWFkcmFudENoYXJ0OiB7XG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBjaGFydFdpZHRoICAgICAgfCBXaWR0aCBvZiB0aGUgY2hhcnQgICAgICAgICAgICAgICAgIHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogNTAwXG4gICAgICovXG4gICAgY2hhcnRXaWR0aDogNTAwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgY2hhcnRIZWlnaHQgICAgIHwgSGVpZ2h0IG9mIHRoZSBjaGFydCAgICAgICAgICAgICAgICB8IG51bWJlciAgfCBPcHRpb25hbCB8IEFueSBwb3NpdGl2ZSBudW1iZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDUwMFxuICAgICAqL1xuICAgIGNoYXJ0SGVpZ2h0OiA1MDAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB0aXRsZVBhZGRpbmcgICAgICAgfCBDaGFydCB0aXRsZSB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nIHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICB0aXRsZVBhZGRpbmc6IDEwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGl0bGVGb250U2l6ZSAgICAgIHwgQ2hhcnQgdGl0bGUgZm9udCBzaXplICAgICAgICAgICAgICB8IG51bWJlciAgfCBPcHRpb25hbCB8IEFueSBwb3NpdGl2ZSBudW1iZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDIwXG4gICAgICovXG4gICAgdGl0bGVGb250U2l6ZTogMjAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBxdWFkcmFudFBhZGRpbmcgfCBQYWRkaW5nIGFyb3VuZCB0aGUgcXVhZHJhbnQgc3F1YXJlIHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogNVxuICAgICAqL1xuICAgIHF1YWRyYW50UGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBxdWFkcmFudFRleHRUb3BQYWRkaW5nIHwgcXVhZHJhbnQgdGl0bGUgcGFkZGluZyBmcm9tIHRvcCBpZiB0aGUgcXVhZHJhbnQgaXMgcmVuZGVyZWQgb24gdG9wICAgICAgICAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiA1XG4gICAgICovXG4gICAgcXVhZHJhbnRUZXh0VG9wUGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tLS0tLSAgICB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHF1YWRyYW50TGFiZWxGb250U2l6ZSB8IHF1YWRyYW50IHRpdGxlIGZvbnQgc2l6ZSAgICAgICAgICAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxNlxuICAgICAqL1xuICAgIHF1YWRyYW50TGFiZWxGb250U2l6ZTogMTYsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBxdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlV2lkdGggfCBzdHJva2Ugd2lkdGggb2YgZWRnZXMgb2YgdGhlIGJveCB0aGF0IGFyZSBpbnNpZGUgdGhlIHF1YWRyYW50IHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMVxuICAgICAqL1xuICAgIHF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VXaWR0aDogMSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgcXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZVdpZHRoIHwgc3Ryb2tlIHdpZHRoIG9mIGVkZ2VzIG9mIHRoZSBib3ggdGhhdCBhcmUgb3V0c2lkZSB0aGUgcXVhZHJhbnQgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAyXG4gICAgICovXG4gICAgcXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZVdpZHRoOiAyLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0gICB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHhBeGlzTGFiZWxQYWRkaW5nIHwgUGFkZGluZyBhcm91bmQgeC1heGlzIGxhYmVscyAgICAgICB8IG51bWJlciAgfCBPcHRpb25hbCB8IEFueSBwb3NpdGl2ZSBudW1iZXIgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IDVcbiAgICAgKi9cbiAgICB4QXhpc0xhYmVsUGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHhBeGlzTGFiZWxGb250U2l6ZSB8IHgtYXhpcyBsYWJlbCBmb250IHNpemUgICAgICAgICAgICAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxNlxuICAgICAqL1xuICAgIHhBeGlzTGFiZWxGb250U2l6ZTogMTYsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHhBeGlzUG9zaXRpb24gfCBwb3NpdGlvbiBvZiB4LWF4aXMgbGFiZWxzICAgICAgIHwgc3RyaW5nICB8IE9wdGlvbmFsIHwgJ3RvcCcgb3IgJ2JvdHRvbScgICB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdG9wXG4gICAgICovXG4gICAgeEF4aXNQb3NpdGlvbjogXCJ0b3BcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tICAgfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB5QXhpc0xhYmVsUGFkZGluZyB8IFBhZGRpbmcgYXJvdW5kIHktYXhpcyBsYWJlbHMgICAgICAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiA1XG4gICAgICovXG4gICAgeUF4aXNMYWJlbFBhZGRpbmc6IDUsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB5QXhpc0xhYmVsRm9udFNpemUgfCB5LWF4aXMgbGFiZWwgZm9udCBzaXplICAgICAgICAgICAgIHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMTZcbiAgICAgKi9cbiAgICB5QXhpc0xhYmVsRm9udFNpemU6IDE2LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCB5QXhpc1Bvc2l0aW9uIHwgcG9zaXRpb24gb2YgeS1heGlzIGxhYmVscyAgICAgICB8IHN0cmluZyAgfCBPcHRpb25hbCB8ICdsZWZ0JyBvciAncmlnaHQnICAgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IGxlZnRcbiAgICAgKi9cbiAgICB5QXhpc1Bvc2l0aW9uOiBcImxlZnRcIixcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBwb2ludFRleHRQYWRkaW5nICAgICAgIHwgcGFkZGluZyBiZXR3ZWVuIHBvaW50IGFuZCBwb2ludCBsYWJlbCAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiA1XG4gICAgICovXG4gICAgcG9pbnRUZXh0UGFkZGluZzogNSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgcG9pbnRUZXh0UGFkZGluZyAgICAgICB8IHBvaW50IHRpdGxlIGZvbnQgc2l6ZSAgfCBudW1iZXIgIHwgT3B0aW9uYWwgfCBBbnkgcG9zaXRpdmUgbnVtYmVyIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KipcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxMlxuICAgICAqL1xuICAgIHBvaW50TGFiZWxGb250U2l6ZTogMTIsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHBvaW50UmFkaXVzICAgfCByYWRpdXMgb2YgdGhlIHBvaW50IHRvIGJlIGRyYXduIHwgbnVtYmVyICB8IE9wdGlvbmFsIHwgQW55IHBvc2l0aXZlIG51bWJlciB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogNVxuICAgICAqL1xuICAgIHBvaW50UmFkaXVzOiA1LFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCB1c2VNYXhXaWR0aCB8IFNlZSBOb3RlcyAgIHwgYm9vbGVhbiB8IFJlcXVpcmVkIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKlxuICAgICAqXG4gICAgICogV2hlbiB0aGlzIGZsYWcgaXMgc2V0IHRvIHRydWUsIHRoZSBkaWFncmFtIHdpZHRoIGlzIGxvY2tlZCB0byAxMDAlIGFuZCBzY2FsZWQgYmFzZWQgb25cbiAgICAgKiBhdmFpbGFibGUgc3BhY2UuIElmIHNldCB0byBmYWxzZSwgdGhlIGRpYWdyYW0gcmVzZXJ2ZXMgaXRzIGFic29sdXRlIHdpZHRoLlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZVxuICAgICAqL1xuICAgIHVzZU1heFdpZHRoOiB0cnVlXG4gIH0sXG4gIC8qKiBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlvbnMgc3BlY2lmaWMgZm9yIHJlcSBkaWFncmFtcyAqL1xuICByZXF1aXJlbWVudDoge1xuICAgIHVzZVdpZHRoOiB2b2lkIDAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHVzZU1heFdpZHRoIHwgU2VlIE5vdGVzICAgfCBib29sZWFuIHwgUmVxdWlyZWQgfCB0cnVlLCBmYWxzZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqXG4gICAgICpcbiAgICAgKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGRpYWdyYW0gd2lkdGggaXMgbG9ja2VkIHRvIDEwMCUgYW5kIHNjYWxlZCBiYXNlZCBvblxuICAgICAqIGF2YWlsYWJsZSBzcGFjZS4gSWYgc2V0IHRvIGZhbHNlLCB0aGUgZGlhZ3JhbSByZXNlcnZlcyBpdHMgYWJzb2x1dGUgd2lkdGguXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiB0cnVlXG4gICAgICovXG4gICAgdXNlTWF4V2lkdGg6IHRydWUsXG4gICAgcmVjdF9maWxsOiBcIiNmOWY5ZjlcIixcbiAgICB0ZXh0X2NvbG9yOiBcIiMzMzNcIixcbiAgICByZWN0X2JvcmRlcl9zaXplOiBcIjAuNXB4XCIsXG4gICAgcmVjdF9ib3JkZXJfY29sb3I6IFwiI2JiYlwiLFxuICAgIHJlY3RfbWluX3dpZHRoOiAyMDAsXG4gICAgcmVjdF9taW5faGVpZ2h0OiAyMDAsXG4gICAgZm9udFNpemU6IDE0LFxuICAgIHJlY3RfcGFkZGluZzogMTAsXG4gICAgbGluZV9oZWlnaHQ6IDIwXG4gIH0sXG4gIGdpdEdyYXBoOiB7XG4gICAgLyoqXG4gICAgICogIyMjIHRpdGxlVG9wTWFyZ2luXG4gICAgICpcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgdGl0bGVUb3BNYXJnaW4gfCBNYXJnaW4gdG9wIGZvciB0aGUgdGV4dCBvdmVyIHRoZSBHaXQgZGlhZ3JhbSAgIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMjVcbiAgICAgKi9cbiAgICB0aXRsZVRvcE1hcmdpbjogMjUsXG4gICAgZGlhZ3JhbVBhZGRpbmc6IDgsXG4gICAgbm9kZUxhYmVsOiB7XG4gICAgICB3aWR0aDogNzUsXG4gICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgIHg6IC0yNSxcbiAgICAgIHk6IDBcbiAgICB9LFxuICAgIG1haW5CcmFuY2hOYW1lOiBcIm1haW5cIixcbiAgICBtYWluQnJhbmNoT3JkZXI6IDAsXG4gICAgc2hvd0NvbW1pdExhYmVsOiB0cnVlLFxuICAgIHNob3dCcmFuY2hlczogdHJ1ZSxcbiAgICByb3RhdGVDb21taXRMYWJlbDogdHJ1ZVxuICB9LFxuICAvKiogVGhlIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb25zIHNwZWNpZmljIGZvciBjNCBkaWFncmFtcyAqL1xuICBjNDoge1xuICAgIHVzZVdpZHRoOiB2b2lkIDAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGRpYWdyYW1NYXJnaW5YIHwgTWFyZ2luIHRvIHRoZSByaWdodCBhbmQgbGVmdCBvZiB0aGUgYzQgZGlhZ3JhbSB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDUwXG4gICAgICovXG4gICAgZGlhZ3JhbU1hcmdpblg6IDUwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBkaWFncmFtTWFyZ2luWSB8IE1hcmdpbiB0byB0aGUgb3ZlciBhbmQgdW5kZXIgdGhlIGM0IGRpYWdyYW0gfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxMFxuICAgICAqL1xuICAgIGRpYWdyYW1NYXJnaW5ZOiAxMCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBjNFNoYXBlTWFyZ2luIHwgTWFyZ2luIGJldHdlZW4gc2hhcGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogNTBcbiAgICAgKi9cbiAgICBjNFNoYXBlTWFyZ2luOiA1MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgICAgICAgICB8XG4gICAgICogfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYzRTaGFwZVBhZGRpbmcgfCBQYWRkaW5nIGJldHdlZW4gc2hhcGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMjBcbiAgICAgKi9cbiAgICBjNFNoYXBlUGFkZGluZzogMjAsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IHdpZHRoICAgICB8IFdpZHRoIG9mIHBlcnNvbiBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDIxNlxuICAgICAqL1xuICAgIHdpZHRoOiAyMTYsXG4gICAgLyoqXG4gICAgICogfCBQYXJhbWV0ZXIgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgaGVpZ2h0ICAgIHwgSGVpZ2h0IG9mIHBlcnNvbiBib3hlcyB8IEludGVnZXIgfCBSZXF1aXJlZCB8IEFueSBQb3NpdGl2ZSBWYWx1ZSB8XG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDYwXG4gICAgICovXG4gICAgaGVpZ2h0OiA2MCxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciB8IERlc2NyaXB0aW9uICAgICAgICAgfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gICAgICogfCBib3hNYXJnaW4gfCBNYXJnaW4gYXJvdW5kIGJveGVzIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTBcbiAgICAgKi9cbiAgICBib3hNYXJnaW46IDEwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgfCBEZXNjcmlwdGlvbiB8IFR5cGUgICAgfCBSZXF1aXJlZCB8IFZhbHVlcyAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLSB8XG4gICAgICogfCB1c2VNYXhXaWR0aCB8IFNlZSBOb3RlcyAgIHwgYm9vbGVhbiB8IFJlcXVpcmVkIHwgdHJ1ZSwgZmFsc2UgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGhlaWdodCBhbmQgd2lkdGggaXMgc2V0IHRvIDEwMCUgYW5kIGlzIHRoZW5cbiAgICAgKiBzY2FsaW5nIHdpdGggdGhlIGF2YWlsYWJsZSBzcGFjZS4gSWYgc2V0IHRvIGZhbHNlLCB0aGUgYWJzb2x1dGUgc3BhY2UgcmVxdWlyZWQgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWU6IHRydWVcbiAgICAgKi9cbiAgICB1c2VNYXhXaWR0aDogdHJ1ZSxcbiAgICAvKipcbiAgICAgKiB8IFBhcmFtZXRlciAgICB8IERlc2NyaXB0aW9uIHwgVHlwZSAgICB8IFJlcXVpcmVkIHwgVmFsdWVzICAgICAgICAgICAgIHxcbiAgICAgKiB8IC0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tIHwgLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tIHxcbiAgICAgKiB8IGM0U2hhcGVJblJvdyB8IFNlZSBOb3RlcyAgIHwgSW50ZWdlciB8IFJlcXVpcmVkIHwgQW55IFBvc2l0aXZlIFZhbHVlIHxcbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogSG93IG1hbnkgc2hhcGVzIHRvIHBsYWNlIGluIGVhY2ggcm93LlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogNFxuICAgICAqL1xuICAgIGM0U2hhcGVJblJvdzogNCxcbiAgICBuZXh0TGluZVBhZGRpbmdYOiAwLFxuICAgIC8qKlxuICAgICAqIHwgUGFyYW1ldGVyICAgICAgIHwgRGVzY3JpcHRpb24gfCBUeXBlICAgIHwgUmVxdWlyZWQgfCBWYWx1ZXMgICAgICAgICAgICAgfFxuICAgICAqIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tIHwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfFxuICAgICAqIHwgYzRCb3VuZGFyeUluUm93IHwgU2VlIE5vdGVzICAgfCBJbnRlZ2VyIHwgUmVxdWlyZWQgfCBBbnkgUG9zaXRpdmUgVmFsdWUgfFxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBIb3cgbWFueSBib3VuZGFyaWVzIHRvIHBsYWNlIGluIGVhY2ggcm93LlxuICAgICAqXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMlxuICAgICAqL1xuICAgIGM0Qm91bmRhcnlJblJvdzogMixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBQZXJzb24gc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIHBlcnNvbkZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIFBlcnNvbiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBwZXJzb25Gb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBQZXJzb24gc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBwZXJzb25Gb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIEV4dGVybmFsIFBlcnNvbiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfcGVyc29uRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgRXh0ZXJuYWwgUGVyc29uIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGV4dGVybmFsX3BlcnNvbkZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIEV4dGVybmFsIFBlcnNvbiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGV4dGVybmFsX3BlcnNvbkZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgU3lzdGVtIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBzeXN0ZW1Gb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBTeXN0ZW0gc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgc3lzdGVtRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgU3lzdGVtIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgc3lzdGVtRm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBFeHRlcm5hbCBTeXN0ZW0gc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGV4dGVybmFsX3N5c3RlbUZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIEV4dGVybmFsIFN5c3RlbSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9zeXN0ZW1Gb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBFeHRlcm5hbCBTeXN0ZW0gc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9zeXN0ZW1Gb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIFN5c3RlbSBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgc3lzdGVtX2RiRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgU3lzdGVtIERCIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIHN5c3RlbV9kYkZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIFN5c3RlbSBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIHN5c3RlbV9kYkZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgRXh0ZXJuYWwgU3lzdGVtIERCIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9zeXN0ZW1fZGJGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBFeHRlcm5hbCBTeXN0ZW0gREIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfc3lzdGVtX2RiRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgRXh0ZXJuYWwgU3lzdGVtIERCIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfc3lzdGVtX2RiRm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBTeXN0ZW0gUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIHN5c3RlbV9xdWV1ZUZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIFN5c3RlbSBRdWV1ZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBzeXN0ZW1fcXVldWVGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBTeXN0ZW0gUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBzeXN0ZW1fcXVldWVGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIEV4dGVybmFsIFN5c3RlbSBRdWV1ZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgRXh0ZXJuYWwgU3lzdGVtIFF1ZXVlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIEV4dGVybmFsIFN5c3RlbSBRdWV1ZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgQm91bmRhcnkgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGJvdW5kYXJ5Rm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgQm91bmRhcnkgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgYm91bmRhcnlGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBCb3VuZGFyeSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGJvdW5kYXJ5Rm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBNZXNzYWdlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxMi5cbiAgICAgKi9cbiAgICBtZXNzYWdlRm9udFNpemU6IDEyLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgTWVzc2FnZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBtZXNzYWdlRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgTWVzc2FnZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIG1lc3NhZ2VGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIENvbnRhaW5lciBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgY29udGFpbmVyRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgQ29udGFpbmVyIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGNvbnRhaW5lckZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIENvbnRhaW5lciBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGNvbnRhaW5lckZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgRXh0ZXJuYWwgQ29udGFpbmVyIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb250YWluZXJGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBFeHRlcm5hbCBDb250YWluZXIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgRXh0ZXJuYWwgQ29udGFpbmVyIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyRm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBDb250YWluZXIgREIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGNvbnRhaW5lcl9kYkZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIENvbnRhaW5lciBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBjb250YWluZXJfZGJGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBDb250YWluZXIgREIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBjb250YWluZXJfZGJGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIEV4dGVybmFsIENvbnRhaW5lciBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgRXh0ZXJuYWwgQ29udGFpbmVyIERCIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbnRhaW5lcl9kYkZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIEV4dGVybmFsIENvbnRhaW5lciBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbnRhaW5lcl9kYkZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgQ29udGFpbmVyIFF1ZXVlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBjb250YWluZXJfcXVldWVGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBDb250YWluZXIgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgY29udGFpbmVyX3F1ZXVlRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgQ29udGFpbmVyIFF1ZXVlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgY29udGFpbmVyX3F1ZXVlRm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBFeHRlcm5hbCBDb250YWluZXIgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIEV4dGVybmFsIENvbnRhaW5lciBRdWV1ZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb250YWluZXJfcXVldWVGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBFeHRlcm5hbCBDb250YWluZXIgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb250YWluZXJfcXVldWVGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIENvbXBvbmVudCBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgY29tcG9uZW50Rm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgQ29tcG9uZW50IHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGNvbXBvbmVudEZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIENvbXBvbmVudCBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGNvbXBvbmVudEZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgRXh0ZXJuYWwgQ29tcG9uZW50IHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb21wb25lbnRGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBFeHRlcm5hbCBDb21wb25lbnQgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50Rm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgRXh0ZXJuYWwgQ29tcG9uZW50IHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50Rm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBDb21wb25lbnQgREIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGNvbXBvbmVudF9kYkZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIENvbXBvbmVudCBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBjb21wb25lbnRfZGJGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBDb21wb25lbnQgREIgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBjb21wb25lbnRfZGJGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBzaXplIG9mIEV4dGVybmFsIENvbXBvbmVudCBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogMTQuXG4gICAgICovXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udFNpemU6IDE0LFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCBmYW1pbHkgb2YgRXh0ZXJuYWwgQ29tcG9uZW50IERCIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmLlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbXBvbmVudF9kYkZvbnRGYW1pbHk6ICdcIk9wZW4gU2Fuc1wiLCBzYW5zLXNlcmlmJyxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgd2VpZ2h0IG9mIEV4dGVybmFsIENvbXBvbmVudCBEQiBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogbm9ybWFsLlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbXBvbmVudF9kYkZvbnRXZWlnaHQ6IFwibm9ybWFsXCIsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHNpemUgb2YgQ29tcG9uZW50IFF1ZXVlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiAxNC5cbiAgICAgKi9cbiAgICBjb21wb25lbnRfcXVldWVGb250U2l6ZTogMTQsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IGZhbWlseSBvZiBDb21wb25lbnQgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYuXG4gICAgICovXG4gICAgY29tcG9uZW50X3F1ZXVlRm9udEZhbWlseTogJ1wiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWYnLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgZm9udCB3ZWlnaHQgb2YgQ29tcG9uZW50IFF1ZXVlIHNoYXBlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiBub3JtYWwuXG4gICAgICovXG4gICAgY29tcG9uZW50X3F1ZXVlRm9udFdlaWdodDogXCJub3JtYWxcIixcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgc2l6ZSBvZiBFeHRlcm5hbCBDb21wb25lbnQgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDE0LlxuICAgICAqL1xuICAgIGV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRTaXplOiAxNCxcbiAgICAvKipcbiAgICAgKiBUaGlzIHNldHMgdGhlIGZvbnQgZmFtaWx5IG9mIEV4dGVybmFsIENvbXBvbmVudCBRdWV1ZSBzaGFwZSBmb3IgdGhlIGRpYWdyYW1cbiAgICAgKlxuICAgICAqICoqTm90ZXM6KiogRGVmYXVsdCB2YWx1ZTogXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZi5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb21wb25lbnRfcXVldWVGb250RmFtaWx5OiAnXCJPcGVuIFNhbnNcIiwgc2Fucy1zZXJpZicsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBmb250IHdlaWdodCBvZiBFeHRlcm5hbCBDb21wb25lbnQgUXVldWUgc2hhcGUgZm9yIHRoZSBkaWFncmFtXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IG5vcm1hbC5cbiAgICAgKi9cbiAgICBleHRlcm5hbF9jb21wb25lbnRfcXVldWVGb250V2VpZ2h0OiBcIm5vcm1hbFwiLFxuICAgIC8qKlxuICAgICAqIFRoaXMgc2V0cyB0aGUgYXV0by13cmFwIHN0YXRlIGZvciB0aGUgZGlhZ3JhbVxuICAgICAqXG4gICAgICogKipOb3RlczoqKiBEZWZhdWx0IHZhbHVlOiB0cnVlLlxuICAgICAqL1xuICAgIHdyYXA6IHRydWUsXG4gICAgLyoqXG4gICAgICogVGhpcyBzZXRzIHRoZSBhdXRvLXdyYXAgcGFkZGluZyBmb3IgdGhlIGRpYWdyYW0gKHNpZGVzIG9ubHkpXG4gICAgICpcbiAgICAgKiAqKk5vdGVzOioqIERlZmF1bHQgdmFsdWU6IDAuXG4gICAgICovXG4gICAgd3JhcFBhZGRpbmc6IDEwLFxuICAgIHBlcnNvbkZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5wZXJzb25Gb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5wZXJzb25Gb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5wZXJzb25Gb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgZXh0ZXJuYWxfcGVyc29uRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmV4dGVybmFsX3BlcnNvbkZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmV4dGVybmFsX3BlcnNvbkZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmV4dGVybmFsX3BlcnNvbkZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBzeXN0ZW1Gb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuc3lzdGVtRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuc3lzdGVtRm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuc3lzdGVtRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIGV4dGVybmFsX3N5c3RlbUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5leHRlcm5hbF9zeXN0ZW1Gb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5leHRlcm5hbF9zeXN0ZW1Gb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5leHRlcm5hbF9zeXN0ZW1Gb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgc3lzdGVtX2RiRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLnN5c3RlbV9kYkZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLnN5c3RlbV9kYkZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLnN5c3RlbV9kYkZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBleHRlcm5hbF9zeXN0ZW1fZGJGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZXh0ZXJuYWxfc3lzdGVtX2RiRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuZXh0ZXJuYWxfc3lzdGVtX2RiRm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuZXh0ZXJuYWxfc3lzdGVtX2RiRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIHN5c3RlbV9xdWV1ZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5zeXN0ZW1fcXVldWVGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5zeXN0ZW1fcXVldWVGb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5zeXN0ZW1fcXVldWVGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBjb250YWluZXJGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuY29udGFpbmVyRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuY29udGFpbmVyRm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuY29udGFpbmVyRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIGV4dGVybmFsX2NvbnRhaW5lckZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5leHRlcm5hbF9jb250YWluZXJGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5leHRlcm5hbF9jb250YWluZXJGb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5leHRlcm5hbF9jb250YWluZXJGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgY29udGFpbmVyX2RiRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmNvbnRhaW5lcl9kYkZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmNvbnRhaW5lcl9kYkZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmNvbnRhaW5lcl9kYkZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBleHRlcm5hbF9jb250YWluZXJfZGJGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIGNvbnRhaW5lcl9xdWV1ZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5jb250YWluZXJfcXVldWVGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5jb250YWluZXJfcXVldWVGb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5jb250YWluZXJfcXVldWVGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBjb21wb25lbnRGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuY29tcG9uZW50Rm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuY29tcG9uZW50Rm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuY29tcG9uZW50Rm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIGV4dGVybmFsX2NvbXBvbmVudEZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5leHRlcm5hbF9jb21wb25lbnRGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5leHRlcm5hbF9jb21wb25lbnRGb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5leHRlcm5hbF9jb21wb25lbnRGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgY29tcG9uZW50X2RiRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmNvbXBvbmVudF9kYkZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmNvbXBvbmVudF9kYkZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmNvbXBvbmVudF9kYkZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBleHRlcm5hbF9jb21wb25lbnRfZGJGb250OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvbnRGYW1pbHk6IHRoaXMuZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udFdlaWdodFxuICAgICAgfTtcbiAgICB9LFxuICAgIGNvbXBvbmVudF9xdWV1ZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5jb21wb25lbnRfcXVldWVGb250RmFtaWx5LFxuICAgICAgICBmb250U2l6ZTogdGhpcy5jb21wb25lbnRfcXVldWVGb250U2l6ZSxcbiAgICAgICAgZm9udFdlaWdodDogdGhpcy5jb21wb25lbnRfcXVldWVGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlRm9udDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmb250RmFtaWx5OiB0aGlzLmV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLmV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRXZWlnaHRcbiAgICAgIH07XG4gICAgfSxcbiAgICBib3VuZGFyeUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5ib3VuZGFyeUZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmJvdW5kYXJ5Rm9udFNpemUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoaXMuYm91bmRhcnlGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgbWVzc2FnZUZvbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogdGhpcy5tZXNzYWdlRm9udEZhbWlseSxcbiAgICAgICAgZm9udFNpemU6IHRoaXMubWVzc2FnZUZvbnRTaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGlzLm1lc3NhZ2VGb250V2VpZ2h0XG4gICAgICB9O1xuICAgIH0sXG4gICAgLy8gJyBDb2xvcnNcbiAgICAvLyAnICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiAgICBwZXJzb25fYmdfY29sb3I6IFwiIzA4NDI3QlwiLFxuICAgIHBlcnNvbl9ib3JkZXJfY29sb3I6IFwiIzA3M0I2RlwiLFxuICAgIGV4dGVybmFsX3BlcnNvbl9iZ19jb2xvcjogXCIjNjg2ODY4XCIsXG4gICAgZXh0ZXJuYWxfcGVyc29uX2JvcmRlcl9jb2xvcjogXCIjOEE4QThBXCIsXG4gICAgc3lzdGVtX2JnX2NvbG9yOiBcIiMxMTY4QkRcIixcbiAgICBzeXN0ZW1fYm9yZGVyX2NvbG9yOiBcIiMzQzdGQzBcIixcbiAgICBzeXN0ZW1fZGJfYmdfY29sb3I6IFwiIzExNjhCRFwiLFxuICAgIHN5c3RlbV9kYl9ib3JkZXJfY29sb3I6IFwiIzNDN0ZDMFwiLFxuICAgIHN5c3RlbV9xdWV1ZV9iZ19jb2xvcjogXCIjMTE2OEJEXCIsXG4gICAgc3lzdGVtX3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjM0M3RkMwXCIsXG4gICAgZXh0ZXJuYWxfc3lzdGVtX2JnX2NvbG9yOiBcIiM5OTk5OTlcIixcbiAgICBleHRlcm5hbF9zeXN0ZW1fYm9yZGVyX2NvbG9yOiBcIiM4QThBOEFcIixcbiAgICBleHRlcm5hbF9zeXN0ZW1fZGJfYmdfY29sb3I6IFwiIzk5OTk5OVwiLFxuICAgIGV4dGVybmFsX3N5c3RlbV9kYl9ib3JkZXJfY29sb3I6IFwiIzhBOEE4QVwiLFxuICAgIGV4dGVybmFsX3N5c3RlbV9xdWV1ZV9iZ19jb2xvcjogXCIjOTk5OTk5XCIsXG4gICAgZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjOEE4QThBXCIsXG4gICAgY29udGFpbmVyX2JnX2NvbG9yOiBcIiM0MzhERDVcIixcbiAgICBjb250YWluZXJfYm9yZGVyX2NvbG9yOiBcIiMzQzdGQzBcIixcbiAgICBjb250YWluZXJfZGJfYmdfY29sb3I6IFwiIzQzOERENVwiLFxuICAgIGNvbnRhaW5lcl9kYl9ib3JkZXJfY29sb3I6IFwiIzNDN0ZDMFwiLFxuICAgIGNvbnRhaW5lcl9xdWV1ZV9iZ19jb2xvcjogXCIjNDM4REQ1XCIsXG4gICAgY29udGFpbmVyX3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjM0M3RkMwXCIsXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyX2JnX2NvbG9yOiBcIiNCM0IzQjNcIixcbiAgICBleHRlcm5hbF9jb250YWluZXJfYm9yZGVyX2NvbG9yOiBcIiNBNkE2QTZcIixcbiAgICBleHRlcm5hbF9jb250YWluZXJfZGJfYmdfY29sb3I6IFwiI0IzQjNCM1wiLFxuICAgIGV4dGVybmFsX2NvbnRhaW5lcl9kYl9ib3JkZXJfY29sb3I6IFwiI0E2QTZBNlwiLFxuICAgIGV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZV9iZ19jb2xvcjogXCIjQjNCM0IzXCIsXG4gICAgZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjQTZBNkE2XCIsXG4gICAgY29tcG9uZW50X2JnX2NvbG9yOiBcIiM4NUJCRjBcIixcbiAgICBjb21wb25lbnRfYm9yZGVyX2NvbG9yOiBcIiM3OEE4RDhcIixcbiAgICBjb21wb25lbnRfZGJfYmdfY29sb3I6IFwiIzg1QkJGMFwiLFxuICAgIGNvbXBvbmVudF9kYl9ib3JkZXJfY29sb3I6IFwiIzc4QThEOFwiLFxuICAgIGNvbXBvbmVudF9xdWV1ZV9iZ19jb2xvcjogXCIjODVCQkYwXCIsXG4gICAgY29tcG9uZW50X3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjNzhBOEQ4XCIsXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50X2JnX2NvbG9yOiBcIiNDQ0NDQ0NcIixcbiAgICBleHRlcm5hbF9jb21wb25lbnRfYm9yZGVyX2NvbG9yOiBcIiNCRkJGQkZcIixcbiAgICBleHRlcm5hbF9jb21wb25lbnRfZGJfYmdfY29sb3I6IFwiI0NDQ0NDQ1wiLFxuICAgIGV4dGVybmFsX2NvbXBvbmVudF9kYl9ib3JkZXJfY29sb3I6IFwiI0JGQkZCRlwiLFxuICAgIGV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZV9iZ19jb2xvcjogXCIjQ0NDQ0NDXCIsXG4gICAgZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlX2JvcmRlcl9jb2xvcjogXCIjQkZCRkJGXCJcbiAgfSxcbiAgbWluZG1hcDoge1xuICAgIHVzZU1heFdpZHRoOiB0cnVlLFxuICAgIHBhZGRpbmc6IDEwLFxuICAgIG1heE5vZGVXaWR0aDogMjAwXG4gIH0sXG4gIGZvbnRTaXplOiAxNlxufTtcbmlmIChjb25maWcuY2xhc3MpIHtcbiAgY29uZmlnLmNsYXNzLmFycm93TWFya2VyQWJzb2x1dGUgPSBjb25maWcuYXJyb3dNYXJrZXJBYnNvbHV0ZTtcbn1cbmlmIChjb25maWcuZ2l0R3JhcGgpIHtcbiAgY29uZmlnLmdpdEdyYXBoLmFycm93TWFya2VyQWJzb2x1dGUgPSBjb25maWcuYXJyb3dNYXJrZXJBYnNvbHV0ZTtcbn1cbmNvbnN0IGtleWlmeSA9IChvYmosIHByZWZpeCA9IFwiXCIpID0+IE9iamVjdC5rZXlzKG9iaikucmVkdWNlKChyZXMsIGVsKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KG9ialtlbF0pKSB7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqW2VsXSA9PT0gXCJvYmplY3RcIiAmJiBvYmpbZWxdICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIFsuLi5yZXMsIHByZWZpeCArIGVsLCAuLi5rZXlpZnkob2JqW2VsXSwgXCJcIildO1xuICB9XG4gIHJldHVybiBbLi4ucmVzLCBwcmVmaXggKyBlbF07XG59LCBbXSk7XG5jb25zdCBjb25maWdLZXlzID0ga2V5aWZ5KGNvbmZpZywgXCJcIik7XG5jb25zdCBkZWZhdWx0Q29uZmlnJDEgPSBjb25maWc7XG4vKiEganMteWFtbCA0LjEuMCBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwgQGxpY2Vuc2UgTUlUICovXG5mdW5jdGlvbiBpc05vdGhpbmcoc3ViamVjdCkge1xuICByZXR1cm4gdHlwZW9mIHN1YmplY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgc3ViamVjdCA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdWJqZWN0ID09PSBcIm9iamVjdFwiICYmIHN1YmplY3QgIT09IG51bGw7XG59XG5mdW5jdGlvbiB0b0FycmF5KHNlcXVlbmNlMikge1xuICBpZiAoQXJyYXkuaXNBcnJheShzZXF1ZW5jZTIpKVxuICAgIHJldHVybiBzZXF1ZW5jZTI7XG4gIGVsc2UgaWYgKGlzTm90aGluZyhzZXF1ZW5jZTIpKVxuICAgIHJldHVybiBbXTtcbiAgcmV0dXJuIFtzZXF1ZW5jZTJdO1xufVxuZnVuY3Rpb24gZXh0ZW5kKHRhcmdldCwgc291cmNlKSB7XG4gIHZhciBpbmRleCwgbGVuZ3RoLCBrZXksIHNvdXJjZUtleXM7XG4gIGlmIChzb3VyY2UpIHtcbiAgICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5mdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBjb3VudCkge1xuICB2YXIgcmVzdWx0ID0gXCJcIiwgY3ljbGU7XG4gIGZvciAoY3ljbGUgPSAwOyBjeWNsZSA8IGNvdW50OyBjeWNsZSArPSAxKSB7XG4gICAgcmVzdWx0ICs9IHN0cmluZztcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gaXNOZWdhdGl2ZVplcm8obnVtYmVyKSB7XG4gIHJldHVybiBudW1iZXIgPT09IDAgJiYgTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSAxIC8gbnVtYmVyO1xufVxudmFyIGlzTm90aGluZ18xID0gaXNOb3RoaW5nO1xudmFyIGlzT2JqZWN0XzEgPSBpc09iamVjdDtcbnZhciB0b0FycmF5XzEgPSB0b0FycmF5O1xudmFyIHJlcGVhdF8xID0gcmVwZWF0O1xudmFyIGlzTmVnYXRpdmVaZXJvXzEgPSBpc05lZ2F0aXZlWmVybztcbnZhciBleHRlbmRfMSA9IGV4dGVuZDtcbnZhciBjb21tb24gPSB7XG4gIGlzTm90aGluZzogaXNOb3RoaW5nXzEsXG4gIGlzT2JqZWN0OiBpc09iamVjdF8xLFxuICB0b0FycmF5OiB0b0FycmF5XzEsXG4gIHJlcGVhdDogcmVwZWF0XzEsXG4gIGlzTmVnYXRpdmVaZXJvOiBpc05lZ2F0aXZlWmVyb18xLFxuICBleHRlbmQ6IGV4dGVuZF8xXG59O1xuZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXhjZXB0aW9uMiwgY29tcGFjdCkge1xuICB2YXIgd2hlcmUgPSBcIlwiLCBtZXNzYWdlID0gZXhjZXB0aW9uMi5yZWFzb24gfHwgXCIodW5rbm93biByZWFzb24pXCI7XG4gIGlmICghZXhjZXB0aW9uMi5tYXJrKVxuICAgIHJldHVybiBtZXNzYWdlO1xuICBpZiAoZXhjZXB0aW9uMi5tYXJrLm5hbWUpIHtcbiAgICB3aGVyZSArPSAnaW4gXCInICsgZXhjZXB0aW9uMi5tYXJrLm5hbWUgKyAnXCIgJztcbiAgfVxuICB3aGVyZSArPSBcIihcIiArIChleGNlcHRpb24yLm1hcmsubGluZSArIDEpICsgXCI6XCIgKyAoZXhjZXB0aW9uMi5tYXJrLmNvbHVtbiArIDEpICsgXCIpXCI7XG4gIGlmICghY29tcGFjdCAmJiBleGNlcHRpb24yLm1hcmsuc25pcHBldCkge1xuICAgIHdoZXJlICs9IFwiXFxuXFxuXCIgKyBleGNlcHRpb24yLm1hcmsuc25pcHBldDtcbiAgfVxuICByZXR1cm4gbWVzc2FnZSArIFwiIFwiICsgd2hlcmU7XG59XG5mdW5jdGlvbiBZQU1MRXhjZXB0aW9uJDEocmVhc29uLCBtYXJrKSB7XG4gIEVycm9yLmNhbGwodGhpcyk7XG4gIHRoaXMubmFtZSA9IFwiWUFNTEV4Y2VwdGlvblwiO1xuICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgdGhpcy5tYXJrID0gbWFyaztcbiAgdGhpcy5tZXNzYWdlID0gZm9ybWF0RXJyb3IodGhpcywgZmFsc2UpO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2sgfHwgXCJcIjtcbiAgfVxufVxuWUFNTEV4Y2VwdGlvbiQxLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbllBTUxFeGNlcHRpb24kMS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBZQU1MRXhjZXB0aW9uJDE7XG5ZQU1MRXhjZXB0aW9uJDEucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICByZXR1cm4gdGhpcy5uYW1lICsgXCI6IFwiICsgZm9ybWF0RXJyb3IodGhpcywgY29tcGFjdCk7XG59O1xudmFyIGV4Y2VwdGlvbiA9IFlBTUxFeGNlcHRpb24kMTtcbmZ1bmN0aW9uIGdldExpbmUoYnVmZmVyLCBsaW5lU3RhcnQsIGxpbmVFbmQsIHBvc2l0aW9uLCBtYXhMaW5lTGVuZ3RoKSB7XG4gIHZhciBoZWFkID0gXCJcIjtcbiAgdmFyIHRhaWwgPSBcIlwiO1xuICB2YXIgbWF4SGFsZkxlbmd0aCA9IE1hdGguZmxvb3IobWF4TGluZUxlbmd0aCAvIDIpIC0gMTtcbiAgaWYgKHBvc2l0aW9uIC0gbGluZVN0YXJ0ID4gbWF4SGFsZkxlbmd0aCkge1xuICAgIGhlYWQgPSBcIiAuLi4gXCI7XG4gICAgbGluZVN0YXJ0ID0gcG9zaXRpb24gLSBtYXhIYWxmTGVuZ3RoICsgaGVhZC5sZW5ndGg7XG4gIH1cbiAgaWYgKGxpbmVFbmQgLSBwb3NpdGlvbiA+IG1heEhhbGZMZW5ndGgpIHtcbiAgICB0YWlsID0gXCIgLi4uXCI7XG4gICAgbGluZUVuZCA9IHBvc2l0aW9uICsgbWF4SGFsZkxlbmd0aCAtIHRhaWwubGVuZ3RoO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RyOiBoZWFkICsgYnVmZmVyLnNsaWNlKGxpbmVTdGFydCwgbGluZUVuZCkucmVwbGFjZSgvXFx0L2csIFwi4oaSXCIpICsgdGFpbCxcbiAgICBwb3M6IHBvc2l0aW9uIC0gbGluZVN0YXJ0ICsgaGVhZC5sZW5ndGhcbiAgICAvLyByZWxhdGl2ZSBwb3NpdGlvblxuICB9O1xufVxuZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLCBtYXgpIHtcbiAgcmV0dXJuIGNvbW1vbi5yZXBlYXQoXCIgXCIsIG1heCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuZnVuY3Rpb24gbWFrZVNuaXBwZXQobWFyaywgb3B0aW9ucykge1xuICBvcHRpb25zID0gT2JqZWN0LmNyZWF0ZShvcHRpb25zIHx8IG51bGwpO1xuICBpZiAoIW1hcmsuYnVmZmVyKVxuICAgIHJldHVybiBudWxsO1xuICBpZiAoIW9wdGlvbnMubWF4TGVuZ3RoKVxuICAgIG9wdGlvbnMubWF4TGVuZ3RoID0gNzk7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbmRlbnQgIT09IFwibnVtYmVyXCIpXG4gICAgb3B0aW9ucy5pbmRlbnQgPSAxO1xuICBpZiAodHlwZW9mIG9wdGlvbnMubGluZXNCZWZvcmUgIT09IFwibnVtYmVyXCIpXG4gICAgb3B0aW9ucy5saW5lc0JlZm9yZSA9IDM7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5saW5lc0FmdGVyICE9PSBcIm51bWJlclwiKVxuICAgIG9wdGlvbnMubGluZXNBZnRlciA9IDI7XG4gIHZhciByZSA9IC9cXHI/XFxufFxccnxcXDAvZztcbiAgdmFyIGxpbmVTdGFydHMgPSBbMF07XG4gIHZhciBsaW5lRW5kcyA9IFtdO1xuICB2YXIgbWF0Y2g7XG4gIHZhciBmb3VuZExpbmVObyA9IC0xO1xuICB3aGlsZSAobWF0Y2ggPSByZS5leGVjKG1hcmsuYnVmZmVyKSkge1xuICAgIGxpbmVFbmRzLnB1c2gobWF0Y2guaW5kZXgpO1xuICAgIGxpbmVTdGFydHMucHVzaChtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgaWYgKG1hcmsucG9zaXRpb24gPD0gbWF0Y2guaW5kZXggJiYgZm91bmRMaW5lTm8gPCAwKSB7XG4gICAgICBmb3VuZExpbmVObyA9IGxpbmVTdGFydHMubGVuZ3RoIC0gMjtcbiAgICB9XG4gIH1cbiAgaWYgKGZvdW5kTGluZU5vIDwgMClcbiAgICBmb3VuZExpbmVObyA9IGxpbmVTdGFydHMubGVuZ3RoIC0gMTtcbiAgdmFyIHJlc3VsdCA9IFwiXCIsIGksIGxpbmU7XG4gIHZhciBsaW5lTm9MZW5ndGggPSBNYXRoLm1pbihtYXJrLmxpbmUgKyBvcHRpb25zLmxpbmVzQWZ0ZXIsIGxpbmVFbmRzLmxlbmd0aCkudG9TdHJpbmcoKS5sZW5ndGg7XG4gIHZhciBtYXhMaW5lTGVuZ3RoID0gb3B0aW9ucy5tYXhMZW5ndGggLSAob3B0aW9ucy5pbmRlbnQgKyBsaW5lTm9MZW5ndGggKyAzKTtcbiAgZm9yIChpID0gMTsgaSA8PSBvcHRpb25zLmxpbmVzQmVmb3JlOyBpKyspIHtcbiAgICBpZiAoZm91bmRMaW5lTm8gLSBpIDwgMClcbiAgICAgIGJyZWFrO1xuICAgIGxpbmUgPSBnZXRMaW5lKFxuICAgICAgbWFyay5idWZmZXIsXG4gICAgICBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vIC0gaV0sXG4gICAgICBsaW5lRW5kc1tmb3VuZExpbmVObyAtIGldLFxuICAgICAgbWFyay5wb3NpdGlvbiAtIChsaW5lU3RhcnRzW2ZvdW5kTGluZU5vXSAtIGxpbmVTdGFydHNbZm91bmRMaW5lTm8gLSBpXSksXG4gICAgICBtYXhMaW5lTGVuZ3RoXG4gICAgKTtcbiAgICByZXN1bHQgPSBjb21tb24ucmVwZWF0KFwiIFwiLCBvcHRpb25zLmluZGVudCkgKyBwYWRTdGFydCgobWFyay5saW5lIC0gaSArIDEpLnRvU3RyaW5nKCksIGxpbmVOb0xlbmd0aCkgKyBcIiB8IFwiICsgbGluZS5zdHIgKyBcIlxcblwiICsgcmVzdWx0O1xuICB9XG4gIGxpbmUgPSBnZXRMaW5lKG1hcmsuYnVmZmVyLCBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vXSwgbGluZUVuZHNbZm91bmRMaW5lTm9dLCBtYXJrLnBvc2l0aW9uLCBtYXhMaW5lTGVuZ3RoKTtcbiAgcmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoXCIgXCIsIG9wdGlvbnMuaW5kZW50KSArIHBhZFN0YXJ0KChtYXJrLmxpbmUgKyAxKS50b1N0cmluZygpLCBsaW5lTm9MZW5ndGgpICsgXCIgfCBcIiArIGxpbmUuc3RyICsgXCJcXG5cIjtcbiAgcmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoXCItXCIsIG9wdGlvbnMuaW5kZW50ICsgbGluZU5vTGVuZ3RoICsgMyArIGxpbmUucG9zKSArIFwiXlxcblwiO1xuICBmb3IgKGkgPSAxOyBpIDw9IG9wdGlvbnMubGluZXNBZnRlcjsgaSsrKSB7XG4gICAgaWYgKGZvdW5kTGluZU5vICsgaSA+PSBsaW5lRW5kcy5sZW5ndGgpXG4gICAgICBicmVhaztcbiAgICBsaW5lID0gZ2V0TGluZShcbiAgICAgIG1hcmsuYnVmZmVyLFxuICAgICAgbGluZVN0YXJ0c1tmb3VuZExpbmVObyArIGldLFxuICAgICAgbGluZUVuZHNbZm91bmRMaW5lTm8gKyBpXSxcbiAgICAgIG1hcmsucG9zaXRpb24gLSAobGluZVN0YXJ0c1tmb3VuZExpbmVOb10gLSBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vICsgaV0pLFxuICAgICAgbWF4TGluZUxlbmd0aFxuICAgICk7XG4gICAgcmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoXCIgXCIsIG9wdGlvbnMuaW5kZW50KSArIHBhZFN0YXJ0KChtYXJrLmxpbmUgKyBpICsgMSkudG9TdHJpbmcoKSwgbGluZU5vTGVuZ3RoKSArIFwiIHwgXCIgKyBsaW5lLnN0ciArIFwiXFxuXCI7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5yZXBsYWNlKC9cXG4kLywgXCJcIik7XG59XG52YXIgc25pcHBldCA9IG1ha2VTbmlwcGV0O1xudmFyIFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUyA9IFtcbiAgXCJraW5kXCIsXG4gIFwibXVsdGlcIixcbiAgXCJyZXNvbHZlXCIsXG4gIFwiY29uc3RydWN0XCIsXG4gIFwiaW5zdGFuY2VPZlwiLFxuICBcInByZWRpY2F0ZVwiLFxuICBcInJlcHJlc2VudFwiLFxuICBcInJlcHJlc2VudE5hbWVcIixcbiAgXCJkZWZhdWx0U3R5bGVcIixcbiAgXCJzdHlsZUFsaWFzZXNcIlxuXTtcbnZhciBZQU1MX05PREVfS0lORFMgPSBbXG4gIFwic2NhbGFyXCIsXG4gIFwic2VxdWVuY2VcIixcbiAgXCJtYXBwaW5nXCJcbl07XG5mdW5jdGlvbiBjb21waWxlU3R5bGVBbGlhc2VzKG1hcDIpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpZiAobWFwMiAhPT0gbnVsbCkge1xuICAgIE9iamVjdC5rZXlzKG1hcDIpLmZvckVhY2goZnVuY3Rpb24oc3R5bGUpIHtcbiAgICAgIG1hcDJbc3R5bGVdLmZvckVhY2goZnVuY3Rpb24oYWxpYXMpIHtcbiAgICAgICAgcmVzdWx0W1N0cmluZyhhbGlhcyldID0gc3R5bGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gVHlwZSQxKHRhZywgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgaWYgKFRZUEVfQ09OU1RSVUNUT1JfT1BUSU9OUy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignVW5rbm93biBvcHRpb24gXCInICsgbmFtZSArICdcIiBpcyBtZXQgaW4gZGVmaW5pdGlvbiBvZiBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICAgIH1cbiAgfSk7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmtpbmQgPSBvcHRpb25zW1wia2luZFwiXSB8fCBudWxsO1xuICB0aGlzLnJlc29sdmUgPSBvcHRpb25zW1wicmVzb2x2ZVwiXSB8fCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgdGhpcy5jb25zdHJ1Y3QgPSBvcHRpb25zW1wiY29uc3RydWN0XCJdIHx8IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcbiAgdGhpcy5pbnN0YW5jZU9mID0gb3B0aW9uc1tcImluc3RhbmNlT2ZcIl0gfHwgbnVsbDtcbiAgdGhpcy5wcmVkaWNhdGUgPSBvcHRpb25zW1wicHJlZGljYXRlXCJdIHx8IG51bGw7XG4gIHRoaXMucmVwcmVzZW50ID0gb3B0aW9uc1tcInJlcHJlc2VudFwiXSB8fCBudWxsO1xuICB0aGlzLnJlcHJlc2VudE5hbWUgPSBvcHRpb25zW1wicmVwcmVzZW50TmFtZVwiXSB8fCBudWxsO1xuICB0aGlzLmRlZmF1bHRTdHlsZSA9IG9wdGlvbnNbXCJkZWZhdWx0U3R5bGVcIl0gfHwgbnVsbDtcbiAgdGhpcy5tdWx0aSA9IG9wdGlvbnNbXCJtdWx0aVwiXSB8fCBmYWxzZTtcbiAgdGhpcy5zdHlsZUFsaWFzZXMgPSBjb21waWxlU3R5bGVBbGlhc2VzKG9wdGlvbnNbXCJzdHlsZUFsaWFzZXNcIl0gfHwgbnVsbCk7XG4gIGlmIChZQU1MX05PREVfS0lORFMuaW5kZXhPZih0aGlzLmtpbmQpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1Vua25vd24ga2luZCBcIicgKyB0aGlzLmtpbmQgKyAnXCIgaXMgc3BlY2lmaWVkIGZvciBcIicgKyB0YWcgKyAnXCIgWUFNTCB0eXBlLicpO1xuICB9XG59XG52YXIgdHlwZSA9IFR5cGUkMTtcbmZ1bmN0aW9uIGNvbXBpbGVMaXN0KHNjaGVtYTIsIG5hbWUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBzY2hlbWEyW25hbWVdLmZvckVhY2goZnVuY3Rpb24oY3VycmVudFR5cGUpIHtcbiAgICB2YXIgbmV3SW5kZXggPSByZXN1bHQubGVuZ3RoO1xuICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uKHByZXZpb3VzVHlwZSwgcHJldmlvdXNJbmRleCkge1xuICAgICAgaWYgKHByZXZpb3VzVHlwZS50YWcgPT09IGN1cnJlbnRUeXBlLnRhZyAmJiBwcmV2aW91c1R5cGUua2luZCA9PT0gY3VycmVudFR5cGUua2luZCAmJiBwcmV2aW91c1R5cGUubXVsdGkgPT09IGN1cnJlbnRUeXBlLm11bHRpKSB7XG4gICAgICAgIG5ld0luZGV4ID0gcHJldmlvdXNJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHRbbmV3SW5kZXhdID0gY3VycmVudFR5cGU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY29tcGlsZU1hcCgpIHtcbiAgdmFyIHJlc3VsdCA9IHtcbiAgICBzY2FsYXI6IHt9LFxuICAgIHNlcXVlbmNlOiB7fSxcbiAgICBtYXBwaW5nOiB7fSxcbiAgICBmYWxsYmFjazoge30sXG4gICAgbXVsdGk6IHtcbiAgICAgIHNjYWxhcjogW10sXG4gICAgICBzZXF1ZW5jZTogW10sXG4gICAgICBtYXBwaW5nOiBbXSxcbiAgICAgIGZhbGxiYWNrOiBbXVxuICAgIH1cbiAgfSwgaW5kZXgsIGxlbmd0aDtcbiAgZnVuY3Rpb24gY29sbGVjdFR5cGUodHlwZTIpIHtcbiAgICBpZiAodHlwZTIubXVsdGkpIHtcbiAgICAgIHJlc3VsdC5tdWx0aVt0eXBlMi5raW5kXS5wdXNoKHR5cGUyKTtcbiAgICAgIHJlc3VsdC5tdWx0aVtcImZhbGxiYWNrXCJdLnB1c2godHlwZTIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbdHlwZTIua2luZF1bdHlwZTIudGFnXSA9IHJlc3VsdFtcImZhbGxiYWNrXCJdW3R5cGUyLnRhZ10gPSB0eXBlMjtcbiAgICB9XG4gIH1cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgYXJndW1lbnRzW2luZGV4XS5mb3JFYWNoKGNvbGxlY3RUeXBlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gU2NoZW1hJDEoZGVmaW5pdGlvbikge1xuICByZXR1cm4gdGhpcy5leHRlbmQoZGVmaW5pdGlvbik7XG59XG5TY2hlbWEkMS5wcm90b3R5cGUuZXh0ZW5kID0gZnVuY3Rpb24gZXh0ZW5kMihkZWZpbml0aW9uKSB7XG4gIHZhciBpbXBsaWNpdCA9IFtdO1xuICB2YXIgZXhwbGljaXQgPSBbXTtcbiAgaWYgKGRlZmluaXRpb24gaW5zdGFuY2VvZiB0eXBlKSB7XG4gICAgZXhwbGljaXQucHVzaChkZWZpbml0aW9uKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRlZmluaXRpb24pKSB7XG4gICAgZXhwbGljaXQgPSBleHBsaWNpdC5jb25jYXQoZGVmaW5pdGlvbik7XG4gIH0gZWxzZSBpZiAoZGVmaW5pdGlvbiAmJiAoQXJyYXkuaXNBcnJheShkZWZpbml0aW9uLmltcGxpY2l0KSB8fCBBcnJheS5pc0FycmF5KGRlZmluaXRpb24uZXhwbGljaXQpKSkge1xuICAgIGlmIChkZWZpbml0aW9uLmltcGxpY2l0KVxuICAgICAgaW1wbGljaXQgPSBpbXBsaWNpdC5jb25jYXQoZGVmaW5pdGlvbi5pbXBsaWNpdCk7XG4gICAgaWYgKGRlZmluaXRpb24uZXhwbGljaXQpXG4gICAgICBleHBsaWNpdCA9IGV4cGxpY2l0LmNvbmNhdChkZWZpbml0aW9uLmV4cGxpY2l0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKFwiU2NoZW1hLmV4dGVuZCBhcmd1bWVudCBzaG91bGQgYmUgYSBUeXBlLCBbIFR5cGUgXSwgb3IgYSBzY2hlbWEgZGVmaW5pdGlvbiAoeyBpbXBsaWNpdDogWy4uLl0sIGV4cGxpY2l0OiBbLi4uXSB9KVwiKTtcbiAgfVxuICBpbXBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUkMSkge1xuICAgIGlmICghKHR5cGUkMSBpbnN0YW5jZW9mIHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKFwiU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LlwiKTtcbiAgICB9XG4gICAgaWYgKHR5cGUkMS5sb2FkS2luZCAmJiB0eXBlJDEubG9hZEtpbmQgIT09IFwic2NhbGFyXCIpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oXCJUaGVyZSBpcyBhIG5vbi1zY2FsYXIgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gSW1wbGljaXQgcmVzb2x2aW5nIG9mIHN1Y2ggdHlwZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgfVxuICAgIGlmICh0eXBlJDEubXVsdGkpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oXCJUaGVyZSBpcyBhIG11bHRpIHR5cGUgaW4gdGhlIGltcGxpY2l0IGxpc3Qgb2YgYSBzY2hlbWEuIE11bHRpIHRhZ3MgY2FuIG9ubHkgYmUgbGlzdGVkIGFzIGV4cGxpY2l0LlwiKTtcbiAgICB9XG4gIH0pO1xuICBleHBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUkMSkge1xuICAgIGlmICghKHR5cGUkMSBpbnN0YW5jZW9mIHR5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKFwiU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LlwiKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShTY2hlbWEkMS5wcm90b3R5cGUpO1xuICByZXN1bHQuaW1wbGljaXQgPSAodGhpcy5pbXBsaWNpdCB8fCBbXSkuY29uY2F0KGltcGxpY2l0KTtcbiAgcmVzdWx0LmV4cGxpY2l0ID0gKHRoaXMuZXhwbGljaXQgfHwgW10pLmNvbmNhdChleHBsaWNpdCk7XG4gIHJlc3VsdC5jb21waWxlZEltcGxpY2l0ID0gY29tcGlsZUxpc3QocmVzdWx0LCBcImltcGxpY2l0XCIpO1xuICByZXN1bHQuY29tcGlsZWRFeHBsaWNpdCA9IGNvbXBpbGVMaXN0KHJlc3VsdCwgXCJleHBsaWNpdFwiKTtcbiAgcmVzdWx0LmNvbXBpbGVkVHlwZU1hcCA9IGNvbXBpbGVNYXAocmVzdWx0LmNvbXBpbGVkSW1wbGljaXQsIHJlc3VsdC5jb21waWxlZEV4cGxpY2l0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgc2NoZW1hID0gU2NoZW1hJDE7XG52YXIgc3RyID0gbmV3IHR5cGUoXCJ0YWc6eWFtbC5vcmcsMjAwMjpzdHJcIiwge1xuICBraW5kOiBcInNjYWxhclwiLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBcIlwiO1xuICB9XG59KTtcbnZhciBzZXEgPSBuZXcgdHlwZShcInRhZzp5YW1sLm9yZywyMDAyOnNlcVwiLCB7XG4gIGtpbmQ6IFwic2VxdWVuY2VcIixcbiAgY29uc3RydWN0OiBmdW5jdGlvbihkYXRhKSB7XG4gICAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107XG4gIH1cbn0pO1xudmFyIG1hcCA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6bWFwXCIsIHtcbiAga2luZDogXCJtYXBwaW5nXCIsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24oZGF0YSkge1xuICAgIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IHt9O1xuICB9XG59KTtcbnZhciBmYWlsc2FmZSA9IG5ldyBzY2hlbWEoe1xuICBleHBsaWNpdDogW1xuICAgIHN0cixcbiAgICBzZXEsXG4gICAgbWFwXG4gIF1cbn0pO1xuZnVuY3Rpb24gcmVzb2x2ZVlhbWxOdWxsKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpXG4gICAgcmV0dXJuIHRydWU7XG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcbiAgcmV0dXJuIG1heCA9PT0gMSAmJiBkYXRhID09PSBcIn5cIiB8fCBtYXggPT09IDQgJiYgKGRhdGEgPT09IFwibnVsbFwiIHx8IGRhdGEgPT09IFwiTnVsbFwiIHx8IGRhdGEgPT09IFwiTlVMTFwiKTtcbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzTnVsbChvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PT0gbnVsbDtcbn1cbnZhciBfbnVsbCA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLCB7XG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTnVsbCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sTnVsbCxcbiAgcHJlZGljYXRlOiBpc051bGwsXG4gIHJlcHJlc2VudDoge1xuICAgIGNhbm9uaWNhbDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJ+XCI7XG4gICAgfSxcbiAgICBsb3dlcmNhc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwibnVsbFwiO1xuICAgIH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIk5VTExcIjtcbiAgICB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJOdWxsXCI7XG4gICAgfSxcbiAgICBlbXB0eTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogXCJsb3dlcmNhc2VcIlxufSk7XG5mdW5jdGlvbiByZXNvbHZlWWFtbEJvb2xlYW4oZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcbiAgcmV0dXJuIG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gXCJ0cnVlXCIgfHwgZGF0YSA9PT0gXCJUcnVlXCIgfHwgZGF0YSA9PT0gXCJUUlVFXCIpIHx8IG1heCA9PT0gNSAmJiAoZGF0YSA9PT0gXCJmYWxzZVwiIHx8IGRhdGEgPT09IFwiRmFsc2VcIiB8fCBkYXRhID09PSBcIkZBTFNFXCIpO1xufVxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJvb2xlYW4oZGF0YSkge1xuICByZXR1cm4gZGF0YSA9PT0gXCJ0cnVlXCIgfHwgZGF0YSA9PT0gXCJUcnVlXCIgfHwgZGF0YSA9PT0gXCJUUlVFXCI7XG59XG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gXCJbb2JqZWN0IEJvb2xlYW5dXCI7XG59XG52YXIgYm9vbCA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLCB7XG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQm9vbGVhbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sQm9vbGVhbixcbiAgcHJlZGljYXRlOiBpc0Jvb2xlYW4sXG4gIHJlcHJlc2VudDoge1xuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG4gICAgfSxcbiAgICB1cHBlcmNhc2U6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuICAgIH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPyBcIlRydWVcIiA6IFwiRmFsc2VcIjtcbiAgICB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogXCJsb3dlcmNhc2VcIlxufSk7XG5mdW5jdGlvbiBpc0hleENvZGUoYykge1xuICByZXR1cm4gNDggPD0gYyAmJiBjIDw9IDU3IHx8IDY1IDw9IGMgJiYgYyA8PSA3MCB8fCA5NyA8PSBjICYmIGMgPD0gMTAyO1xufVxuZnVuY3Rpb24gaXNPY3RDb2RlKGMpIHtcbiAgcmV0dXJuIDQ4IDw9IGMgJiYgYyA8PSA1NTtcbn1cbmZ1bmN0aW9uIGlzRGVjQ29kZShjKSB7XG4gIHJldHVybiA0OCA8PSBjICYmIGMgPD0gNTc7XG59XG5mdW5jdGlvbiByZXNvbHZlWWFtbEludGVnZXIoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCwgaW5kZXggPSAwLCBoYXNEaWdpdHMgPSBmYWxzZSwgY2g7XG4gIGlmICghbWF4KVxuICAgIHJldHVybiBmYWxzZTtcbiAgY2ggPSBkYXRhW2luZGV4XTtcbiAgaWYgKGNoID09PSBcIi1cIiB8fCBjaCA9PT0gXCIrXCIpIHtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG4gIH1cbiAgaWYgKGNoID09PSBcIjBcIikge1xuICAgIGlmIChpbmRleCArIDEgPT09IG1heClcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcbiAgICBpZiAoY2ggPT09IFwiYlwiKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gXCJfXCIpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChjaCAhPT0gXCIwXCIgJiYgY2ggIT09IFwiMVwiKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09IFwiX1wiO1xuICAgIH1cbiAgICBpZiAoY2ggPT09IFwieFwiKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gXCJfXCIpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmICghaXNIZXhDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09IFwiX1wiO1xuICAgIH1cbiAgICBpZiAoY2ggPT09IFwib1wiKSB7XG4gICAgICBpbmRleCsrO1xuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gXCJfXCIpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmICghaXNPY3RDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09IFwiX1wiO1xuICAgIH1cbiAgfVxuICBpZiAoY2ggPT09IFwiX1wiKVxuICAgIHJldHVybiBmYWxzZTtcbiAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICBpZiAoY2ggPT09IFwiX1wiKVxuICAgICAgY29udGludWU7XG4gICAgaWYgKCFpc0RlY0NvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgfVxuICBpZiAoIWhhc0RpZ2l0cyB8fCBjaCA9PT0gXCJfXCIpXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgdmFyIHZhbHVlID0gZGF0YSwgc2lnbiA9IDEsIGNoO1xuICBpZiAodmFsdWUuaW5kZXhPZihcIl9cIikgIT09IC0xKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9fL2csIFwiXCIpO1xuICB9XG4gIGNoID0gdmFsdWVbMF07XG4gIGlmIChjaCA9PT0gXCItXCIgfHwgY2ggPT09IFwiK1wiKSB7XG4gICAgaWYgKGNoID09PSBcIi1cIilcbiAgICAgIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cbiAgaWYgKHZhbHVlID09PSBcIjBcIilcbiAgICByZXR1cm4gMDtcbiAgaWYgKGNoID09PSBcIjBcIikge1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gXCJiXCIpXG4gICAgICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCAyKTtcbiAgICBpZiAodmFsdWVbMV0gPT09IFwieFwiKVxuICAgICAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMTYpO1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gXCJvXCIpXG4gICAgICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCA4KTtcbiAgfVxuICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59XG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiAmJiAob2JqZWN0ICUgMSA9PT0gMCAmJiAhY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxudmFyIGludCA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsIHtcbiAga2luZDogXCJzY2FsYXJcIixcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxJbnRlZ2VyLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxJbnRlZ2VyLFxuICBwcmVkaWNhdGU6IGlzSW50ZWdlcixcbiAgcmVwcmVzZW50OiB7XG4gICAgYmluYXJ5OiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogPj0gMCA/IFwiMGJcIiArIG9iai50b1N0cmluZygyKSA6IFwiLTBiXCIgKyBvYmoudG9TdHJpbmcoMikuc2xpY2UoMSk7XG4gICAgfSxcbiAgICBvY3RhbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqID49IDAgPyBcIjBvXCIgKyBvYmoudG9TdHJpbmcoOCkgOiBcIi0wb1wiICsgb2JqLnRvU3RyaW5nKDgpLnNsaWNlKDEpO1xuICAgIH0sXG4gICAgZGVjaW1hbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqLnRvU3RyaW5nKDEwKTtcbiAgICB9LFxuICAgIC8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbiAgICBoZXhhZGVjaW1hbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqID49IDAgPyBcIjB4XCIgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgOiBcIi0weFwiICsgb2JqLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLnNsaWNlKDEpO1xuICAgIH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiBcImRlY2ltYWxcIixcbiAgc3R5bGVBbGlhc2VzOiB7XG4gICAgYmluYXJ5OiBbMiwgXCJiaW5cIl0sXG4gICAgb2N0YWw6IFs4LCBcIm9jdFwiXSxcbiAgICBkZWNpbWFsOiBbMTAsIFwiZGVjXCJdLFxuICAgIGhleGFkZWNpbWFsOiBbMTYsIFwiaGV4XCJdXG4gIH1cbn0pO1xudmFyIFlBTUxfRkxPQVRfUEFUVEVSTiA9IG5ldyBSZWdFeHAoXG4gIC8vIDIuNWU0LCAyLjUgYW5kIGludGVnZXJzXG4gIFwiXig/OlstK10/KD86WzAtOV1bMC05X10qKSg/OlxcXFwuWzAtOV9dKik/KD86W2VFXVstK10/WzAtOV0rKT98XFxcXC5bMC05X10rKD86W2VFXVstK10/WzAtOV0rKT98Wy0rXT9cXFxcLig/OmluZnxJbmZ8SU5GKXxcXFxcLig/Om5hbnxOYU58TkFOKSkkXCJcbik7XG5mdW5jdGlvbiByZXNvbHZlWWFtbEZsb2F0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoIVlBTUxfRkxPQVRfUEFUVEVSTi50ZXN0KGRhdGEpIHx8IC8vIFF1aWNrIGhhY2sgdG8gbm90IGFsbG93IGludGVnZXJzIGVuZCB3aXRoIGBfYFxuICAvLyBQcm9iYWJseSBzaG91bGQgdXBkYXRlIHJlZ2V4cCAmIGNoZWNrIHNwZWVkXG4gIGRhdGFbZGF0YS5sZW5ndGggLSAxXSA9PT0gXCJfXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sRmxvYXQoZGF0YSkge1xuICB2YXIgdmFsdWUsIHNpZ247XG4gIHZhbHVlID0gZGF0YS5yZXBsYWNlKC9fL2csIFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gIHNpZ24gPSB2YWx1ZVswXSA9PT0gXCItXCIgPyAtMSA6IDE7XG4gIGlmIChcIistXCIuaW5kZXhPZih2YWx1ZVswXSkgPj0gMCkge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKHZhbHVlID09PSBcIi5pbmZcIikge1xuICAgIHJldHVybiBzaWduID09PSAxID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICB9IGVsc2UgaWYgKHZhbHVlID09PSBcIi5uYW5cIikge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUZsb2F0KHZhbHVlLCAxMCk7XG59XG52YXIgU0NJRU5USUZJQ19XSVRIT1VUX0RPVCA9IC9eWy0rXT9bMC05XStlLztcbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxGbG9hdChvYmplY3QsIHN0eWxlKSB7XG4gIHZhciByZXM7XG4gIGlmIChpc05hTihvYmplY3QpKSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSBcImxvd2VyY2FzZVwiOlxuICAgICAgICByZXR1cm4gXCIubmFuXCI7XG4gICAgICBjYXNlIFwidXBwZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi5OQU5cIjtcbiAgICAgIGNhc2UgXCJjYW1lbGNhc2VcIjpcbiAgICAgICAgcmV0dXJuIFwiLk5hTlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgXCJsb3dlcmNhc2VcIjpcbiAgICAgICAgcmV0dXJuIFwiLmluZlwiO1xuICAgICAgY2FzZSBcInVwcGVyY2FzZVwiOlxuICAgICAgICByZXR1cm4gXCIuSU5GXCI7XG4gICAgICBjYXNlIFwiY2FtZWxjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi5JbmZcIjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSBvYmplY3QpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIFwibG93ZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uaW5mXCI7XG4gICAgICBjYXNlIFwidXBwZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uSU5GXCI7XG4gICAgICBjYXNlIFwiY2FtZWxjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uSW5mXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKSB7XG4gICAgcmV0dXJuIFwiLTAuMFwiO1xuICB9XG4gIHJlcyA9IG9iamVjdC50b1N0cmluZygxMCk7XG4gIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKFwiZVwiLCBcIi5lXCIpIDogcmVzO1xufVxuZnVuY3Rpb24gaXNGbG9hdChvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSBcIltvYmplY3QgTnVtYmVyXVwiICYmIChvYmplY3QgJSAxICE9PSAwIHx8IGNvbW1vbi5pc05lZ2F0aXZlWmVybyhvYmplY3QpKTtcbn1cbnZhciBmbG9hdCA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIiwge1xuICBraW5kOiBcInNjYWxhclwiLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbEZsb2F0LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxGbG9hdCxcbiAgcHJlZGljYXRlOiBpc0Zsb2F0LFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxGbG9hdCxcbiAgZGVmYXVsdFN0eWxlOiBcImxvd2VyY2FzZVwiXG59KTtcbnZhciBqc29uID0gZmFpbHNhZmUuZXh0ZW5kKHtcbiAgaW1wbGljaXQ6IFtcbiAgICBfbnVsbCxcbiAgICBib29sLFxuICAgIGludCxcbiAgICBmbG9hdFxuICBdXG59KTtcbnZhciBjb3JlID0ganNvbjtcbnZhciBZQU1MX0RBVEVfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgXCJeKFswLTldWzAtOV1bMC05XVswLTldKS0oWzAtOV1bMC05XSktKFswLTldWzAtOV0pJFwiXG4pO1xudmFyIFlBTUxfVElNRVNUQU1QX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gIFwiXihbMC05XVswLTldWzAtOV1bMC05XSktKFswLTldWzAtOV0/KS0oWzAtOV1bMC05XT8pKD86W1R0XXxbIFxcXFx0XSspKFswLTldWzAtOV0/KTooWzAtOV1bMC05XSk6KFswLTldWzAtOV0pKD86XFxcXC4oWzAtOV0qKSk/KD86WyBcXFxcdF0qKFp8KFstK10pKFswLTldWzAtOV0/KSg/OjooWzAtOV1bMC05XSkpPykpPyRcIlxuKTtcbmZ1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKVxuICAgIHJldHVybiB0cnVlO1xuICBpZiAoWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSkgIT09IG51bGwpXG4gICAgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAoZGF0YSkge1xuICB2YXIgbWF0Y2gsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbiA9IDAsIGRlbHRhID0gbnVsbCwgdHpfaG91ciwgdHpfbWludXRlLCBkYXRlO1xuICBtYXRjaCA9IFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKTtcbiAgaWYgKG1hdGNoID09PSBudWxsKVxuICAgIG1hdGNoID0gWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRlIHJlc29sdmUgZXJyb3JcIik7XG4gIHllYXIgPSArbWF0Y2hbMV07XG4gIG1vbnRoID0gK21hdGNoWzJdIC0gMTtcbiAgZGF5ID0gK21hdGNoWzNdO1xuICBpZiAoIW1hdGNoWzRdKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgfVxuICBob3VyID0gK21hdGNoWzRdO1xuICBtaW51dGUgPSArbWF0Y2hbNV07XG4gIHNlY29uZCA9ICttYXRjaFs2XTtcbiAgaWYgKG1hdGNoWzddKSB7XG4gICAgZnJhY3Rpb24gPSBtYXRjaFs3XS5zbGljZSgwLCAzKTtcbiAgICB3aGlsZSAoZnJhY3Rpb24ubGVuZ3RoIDwgMykge1xuICAgICAgZnJhY3Rpb24gKz0gXCIwXCI7XG4gICAgfVxuICAgIGZyYWN0aW9uID0gK2ZyYWN0aW9uO1xuICB9XG4gIGlmIChtYXRjaFs5XSkge1xuICAgIHR6X2hvdXIgPSArbWF0Y2hbMTBdO1xuICAgIHR6X21pbnV0ZSA9ICsobWF0Y2hbMTFdIHx8IDApO1xuICAgIGRlbHRhID0gKHR6X2hvdXIgKiA2MCArIHR6X21pbnV0ZSkgKiA2ZTQ7XG4gICAgaWYgKG1hdGNoWzldID09PSBcIi1cIilcbiAgICAgIGRlbHRhID0gLWRlbHRhO1xuICB9XG4gIGRhdGUgPSBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZnJhY3Rpb24pKTtcbiAgaWYgKGRlbHRhKVxuICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSAtIGRlbHRhKTtcbiAgcmV0dXJuIGRhdGU7XG59XG5mdW5jdGlvbiByZXByZXNlbnRZYW1sVGltZXN0YW1wKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0LnRvSVNPU3RyaW5nKCk7XG59XG52YXIgdGltZXN0YW1wID0gbmV3IHR5cGUoXCJ0YWc6eWFtbC5vcmcsMjAwMjp0aW1lc3RhbXBcIiwge1xuICBraW5kOiBcInNjYWxhclwiLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFRpbWVzdGFtcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wLFxuICBpbnN0YW5jZU9mOiBEYXRlLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudFlhbWxUaW1lc3RhbXBcbn0pO1xuZnVuY3Rpb24gcmVzb2x2ZVlhbWxNZXJnZShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSBcIjw8XCIgfHwgZGF0YSA9PT0gbnVsbDtcbn1cbnZhciBtZXJnZSA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6bWVyZ2VcIiwge1xuICBraW5kOiBcInNjYWxhclwiLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE1lcmdlXG59KTtcbnZhciBCQVNFNjRfTUFQID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVxcblxcclwiO1xuZnVuY3Rpb24gcmVzb2x2ZVlhbWxCaW5hcnkoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBjb2RlLCBpZHgsIGJpdGxlbiA9IDAsIG1heCA9IGRhdGEubGVuZ3RoLCBtYXAyID0gQkFTRTY0X01BUDtcbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgY29kZSA9IG1hcDIuaW5kZXhPZihkYXRhLmNoYXJBdChpZHgpKTtcbiAgICBpZiAoY29kZSA+IDY0KVxuICAgICAgY29udGludWU7XG4gICAgaWYgKGNvZGUgPCAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGJpdGxlbiArPSA2O1xuICB9XG4gIHJldHVybiBiaXRsZW4gJSA4ID09PSAwO1xufVxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJpbmFyeShkYXRhKSB7XG4gIHZhciBpZHgsIHRhaWxiaXRzLCBpbnB1dCA9IGRhdGEucmVwbGFjZSgvW1xcclxcbj1dL2csIFwiXCIpLCBtYXggPSBpbnB1dC5sZW5ndGgsIG1hcDIgPSBCQVNFNjRfTUFQLCBiaXRzID0gMCwgcmVzdWx0ID0gW107XG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmIChpZHggJSA0ID09PSAwICYmIGlkeCkge1xuICAgICAgcmVzdWx0LnB1c2goYml0cyA+PiAxNiAmIDI1NSk7XG4gICAgICByZXN1bHQucHVzaChiaXRzID4+IDggJiAyNTUpO1xuICAgICAgcmVzdWx0LnB1c2goYml0cyAmIDI1NSk7XG4gICAgfVxuICAgIGJpdHMgPSBiaXRzIDw8IDYgfCBtYXAyLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpO1xuICB9XG4gIHRhaWxiaXRzID0gbWF4ICUgNCAqIDY7XG4gIGlmICh0YWlsYml0cyA9PT0gMCkge1xuICAgIHJlc3VsdC5wdXNoKGJpdHMgPj4gMTYgJiAyNTUpO1xuICAgIHJlc3VsdC5wdXNoKGJpdHMgPj4gOCAmIDI1NSk7XG4gICAgcmVzdWx0LnB1c2goYml0cyAmIDI1NSk7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDE4KSB7XG4gICAgcmVzdWx0LnB1c2goYml0cyA+PiAxMCAmIDI1NSk7XG4gICAgcmVzdWx0LnB1c2goYml0cyA+PiAyICYgMjU1KTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTIpIHtcbiAgICByZXN1bHQucHVzaChiaXRzID4+IDQgJiAyNTUpO1xuICB9XG4gIHJldHVybiBuZXcgVWludDhBcnJheShyZXN1bHQpO1xufVxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFwiXCIsIGJpdHMgPSAwLCBpZHgsIHRhaWwsIG1heCA9IG9iamVjdC5sZW5ndGgsIG1hcDIgPSBCQVNFNjRfTUFQO1xuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoaWR4ICUgMyA9PT0gMCAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXAyW2JpdHMgPj4gMTggJiA2M107XG4gICAgICByZXN1bHQgKz0gbWFwMltiaXRzID4+IDEyICYgNjNdO1xuICAgICAgcmVzdWx0ICs9IG1hcDJbYml0cyA+PiA2ICYgNjNdO1xuICAgICAgcmVzdWx0ICs9IG1hcDJbYml0cyAmIDYzXTtcbiAgICB9XG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF07XG4gIH1cbiAgdGFpbCA9IG1heCAlIDM7XG4gIGlmICh0YWlsID09PSAwKSB7XG4gICAgcmVzdWx0ICs9IG1hcDJbYml0cyA+PiAxOCAmIDYzXTtcbiAgICByZXN1bHQgKz0gbWFwMltiaXRzID4+IDEyICYgNjNdO1xuICAgIHJlc3VsdCArPSBtYXAyW2JpdHMgPj4gNiAmIDYzXTtcbiAgICByZXN1bHQgKz0gbWFwMltiaXRzICYgNjNdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDIpIHtcbiAgICByZXN1bHQgKz0gbWFwMltiaXRzID4+IDEwICYgNjNdO1xuICAgIHJlc3VsdCArPSBtYXAyW2JpdHMgPj4gNCAmIDYzXTtcbiAgICByZXN1bHQgKz0gbWFwMltiaXRzIDw8IDIgJiA2M107XG4gICAgcmVzdWx0ICs9IG1hcDJbNjRdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDEpIHtcbiAgICByZXN1bHQgKz0gbWFwMltiaXRzID4+IDIgJiA2M107XG4gICAgcmVzdWx0ICs9IG1hcDJbYml0cyA8PCA0ICYgNjNdO1xuICAgIHJlc3VsdCArPSBtYXAyWzY0XTtcbiAgICByZXN1bHQgKz0gbWFwMls2NF07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGlzQmluYXJ5KG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBVaW50OEFycmF5XVwiO1xufVxudmFyIGJpbmFyeSA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5XCIsIHtcbiAga2luZDogXCJzY2FsYXJcIixcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCaW5hcnksXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJpbmFyeSxcbiAgcHJlZGljYXRlOiBpc0JpbmFyeSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sQmluYXJ5XG59KTtcbnZhciBfaGFzT3duUHJvcGVydHkkMyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX3RvU3RyaW5nJDIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuZnVuY3Rpb24gcmVzb2x2ZVlhbWxPbWFwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpXG4gICAgcmV0dXJuIHRydWU7XG4gIHZhciBvYmplY3RLZXlzID0gW10sIGluZGV4LCBsZW5ndGgsIHBhaXIsIHBhaXJLZXksIHBhaXJIYXNLZXksIG9iamVjdCA9IGRhdGE7XG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuICAgIHBhaXJIYXNLZXkgPSBmYWxzZTtcbiAgICBpZiAoX3RvU3RyaW5nJDIuY2FsbChwYWlyKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIilcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKHBhaXJLZXkgaW4gcGFpcikge1xuICAgICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQzLmNhbGwocGFpciwgcGFpcktleSkpIHtcbiAgICAgICAgaWYgKCFwYWlySGFzS2V5KVxuICAgICAgICAgIHBhaXJIYXNLZXkgPSB0cnVlO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXBhaXJIYXNLZXkpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG9iamVjdEtleXMuaW5kZXhPZihwYWlyS2V5KSA9PT0gLTEpXG4gICAgICBvYmplY3RLZXlzLnB1c2gocGFpcktleSk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE9tYXAoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTtcbn1cbnZhciBvbWFwID0gbmV3IHR5cGUoXCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwXCIsIHtcbiAga2luZDogXCJzZXF1ZW5jZVwiLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbE9tYXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbE9tYXBcbn0pO1xudmFyIF90b1N0cmluZyQxID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCwgb2JqZWN0ID0gZGF0YTtcbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcbiAgICBpZiAoX3RvU3RyaW5nJDEuY2FsbChwYWlyKSAhPT0gXCJbb2JqZWN0IE9iamVjdF1cIilcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIHJlc3VsdFtpbmRleF0gPSBba2V5c1swXSwgcGFpcltrZXlzWzBdXV07XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbClcbiAgICByZXR1cm4gW107XG4gIHZhciBpbmRleCwgbGVuZ3RoLCBwYWlyLCBrZXlzLCByZXN1bHQsIG9iamVjdCA9IGRhdGE7XG4gIHJlc3VsdCA9IG5ldyBBcnJheShvYmplY3QubGVuZ3RoKTtcbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuICAgIHJlc3VsdFtpbmRleF0gPSBba2V5c1swXSwgcGFpcltrZXlzWzBdXV07XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbnZhciBwYWlycyA9IG5ldyB0eXBlKFwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIiwge1xuICBraW5kOiBcInNlcXVlbmNlXCIsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sUGFpcnMsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFBhaXJzXG59KTtcbnZhciBfaGFzT3duUHJvcGVydHkkMiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKVxuICAgIHJldHVybiB0cnVlO1xuICB2YXIga2V5LCBvYmplY3QgPSBkYXRhO1xuICBmb3IgKGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoX2hhc093blByb3BlcnR5JDIuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgIGlmIChvYmplY3Rba2V5XSAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxTZXQoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fTtcbn1cbnZhciBzZXQgPSBuZXcgdHlwZShcInRhZzp5YW1sLm9yZywyMDAyOnNldFwiLCB7XG4gIGtpbmQ6IFwibWFwcGluZ1wiLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0XG59KTtcbnZhciBfZGVmYXVsdCA9IGNvcmUuZXh0ZW5kKHtcbiAgaW1wbGljaXQ6IFtcbiAgICB0aW1lc3RhbXAsXG4gICAgbWVyZ2VcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICBiaW5hcnksXG4gICAgb21hcCxcbiAgICBwYWlycyxcbiAgICBzZXRcbiAgXVxufSk7XG52YXIgX2hhc093blByb3BlcnR5JDEgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIENPTlRFWFRfRkxPV19JTiA9IDE7XG52YXIgQ09OVEVYVF9GTE9XX09VVCA9IDI7XG52YXIgQ09OVEVYVF9CTE9DS19JTiA9IDM7XG52YXIgQ09OVEVYVF9CTE9DS19PVVQgPSA0O1xudmFyIENIT01QSU5HX0NMSVAgPSAxO1xudmFyIENIT01QSU5HX1NUUklQID0gMjtcbnZhciBDSE9NUElOR19LRUVQID0gMztcbnZhciBQQVRURVJOX05PTl9QUklOVEFCTEUgPSAvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0YtXFx4ODRcXHg4Ni1cXHg5RlxcdUZGRkVcXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXS87XG52YXIgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MgPSAvW1xceDg1XFx1MjAyOFxcdTIwMjldLztcbnZhciBQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUyA9IC9bLFxcW1xcXVxce1xcfV0vO1xudmFyIFBBVFRFUk5fVEFHX0hBTkRMRSA9IC9eKD86IXwhIXwhW2EtelxcLV0rISkkL2k7XG52YXIgUEFUVEVSTl9UQUdfVVJJID0gL14oPzohfFteLFxcW1xcXVxce1xcfV0pKD86JVswLTlhLWZdezJ9fFswLTlhLXpcXC0jO1xcL1xcPzpAJj1cXCtcXCQsX1xcLiF+XFwqJ1xcKFxcKVxcW1xcXV0pKiQvaTtcbmZ1bmN0aW9uIF9jbGFzcyhvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopO1xufVxuZnVuY3Rpb24gaXNfRU9MKGMpIHtcbiAgcmV0dXJuIGMgPT09IDEwIHx8IGMgPT09IDEzO1xufVxuZnVuY3Rpb24gaXNfV0hJVEVfU1BBQ0UoYykge1xuICByZXR1cm4gYyA9PT0gOSB8fCBjID09PSAzMjtcbn1cbmZ1bmN0aW9uIGlzX1dTX09SX0VPTChjKSB7XG4gIHJldHVybiBjID09PSA5IHx8IGMgPT09IDMyIHx8IGMgPT09IDEwIHx8IGMgPT09IDEzO1xufVxuZnVuY3Rpb24gaXNfRkxPV19JTkRJQ0FUT1IoYykge1xuICByZXR1cm4gYyA9PT0gNDQgfHwgYyA9PT0gOTEgfHwgYyA9PT0gOTMgfHwgYyA9PT0gMTIzIHx8IGMgPT09IDEyNTtcbn1cbmZ1bmN0aW9uIGZyb21IZXhDb2RlKGMpIHtcbiAgdmFyIGxjO1xuICBpZiAoNDggPD0gYyAmJiBjIDw9IDU3KSB7XG4gICAgcmV0dXJuIGMgLSA0ODtcbiAgfVxuICBsYyA9IGMgfCAzMjtcbiAgaWYgKDk3IDw9IGxjICYmIGxjIDw9IDEwMikge1xuICAgIHJldHVybiBsYyAtIDk3ICsgMTA7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuZnVuY3Rpb24gZXNjYXBlZEhleExlbihjKSB7XG4gIGlmIChjID09PSAxMjApIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuICBpZiAoYyA9PT0gMTE3KSB7XG4gICAgcmV0dXJuIDQ7XG4gIH1cbiAgaWYgKGMgPT09IDg1KSB7XG4gICAgcmV0dXJuIDg7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBmcm9tRGVjaW1hbENvZGUoYykge1xuICBpZiAoNDggPD0gYyAmJiBjIDw9IDU3KSB7XG4gICAgcmV0dXJuIGMgLSA0ODtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5mdW5jdGlvbiBzaW1wbGVFc2NhcGVTZXF1ZW5jZShjKSB7XG4gIHJldHVybiBjID09PSA0OCA/IFwiXFwwXCIgOiBjID09PSA5NyA/IFwiXFx4MDdcIiA6IGMgPT09IDk4ID8gXCJcXGJcIiA6IGMgPT09IDExNiA/IFwiXHRcIiA6IGMgPT09IDkgPyBcIlx0XCIgOiBjID09PSAxMTAgPyBcIlxcblwiIDogYyA9PT0gMTE4ID8gXCJcXHZcIiA6IGMgPT09IDEwMiA/IFwiXFxmXCIgOiBjID09PSAxMTQgPyBcIlxcclwiIDogYyA9PT0gMTAxID8gXCJcXHgxQlwiIDogYyA9PT0gMzIgPyBcIiBcIiA6IGMgPT09IDM0ID8gJ1wiJyA6IGMgPT09IDQ3ID8gXCIvXCIgOiBjID09PSA5MiA/IFwiXFxcXFwiIDogYyA9PT0gNzggPyBcIsKFXCIgOiBjID09PSA5NSA/IFwiwqBcIiA6IGMgPT09IDc2ID8gXCJcXHUyMDI4XCIgOiBjID09PSA4MCA/IFwiXFx1MjAyOVwiIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGNoYXJGcm9tQ29kZXBvaW50KGMpIHtcbiAgaWYgKGMgPD0gNjU1MzUpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgfVxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoYyAtIDY1NTM2ID4+IDEwKSArIDU1Mjk2LFxuICAgIChjIC0gNjU1MzYgJiAxMDIzKSArIDU2MzIwXG4gICk7XG59XG52YXIgc2ltcGxlRXNjYXBlQ2hlY2sgPSBuZXcgQXJyYXkoMjU2KTtcbnZhciBzaW1wbGVFc2NhcGVNYXAgPSBuZXcgQXJyYXkoMjU2KTtcbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgc2ltcGxlRXNjYXBlQ2hlY2tbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKSA/IDEgOiAwO1xuICBzaW1wbGVFc2NhcGVNYXBbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKTtcbn1cbmZ1bmN0aW9uIFN0YXRlJDEoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICB0aGlzLmZpbGVuYW1lID0gb3B0aW9uc1tcImZpbGVuYW1lXCJdIHx8IG51bGw7XG4gIHRoaXMuc2NoZW1hID0gb3B0aW9uc1tcInNjaGVtYVwiXSB8fCBfZGVmYXVsdDtcbiAgdGhpcy5vbldhcm5pbmcgPSBvcHRpb25zW1wib25XYXJuaW5nXCJdIHx8IG51bGw7XG4gIHRoaXMubGVnYWN5ID0gb3B0aW9uc1tcImxlZ2FjeVwiXSB8fCBmYWxzZTtcbiAgdGhpcy5qc29uID0gb3B0aW9uc1tcImpzb25cIl0gfHwgZmFsc2U7XG4gIHRoaXMubGlzdGVuZXIgPSBvcHRpb25zW1wibGlzdGVuZXJcIl0gfHwgbnVsbDtcbiAgdGhpcy5pbXBsaWNpdFR5cGVzID0gdGhpcy5zY2hlbWEuY29tcGlsZWRJbXBsaWNpdDtcbiAgdGhpcy50eXBlTWFwID0gdGhpcy5zY2hlbWEuY29tcGlsZWRUeXBlTWFwO1xuICB0aGlzLmxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gIHRoaXMubGluZSA9IDA7XG4gIHRoaXMubGluZVN0YXJ0ID0gMDtcbiAgdGhpcy5saW5lSW5kZW50ID0gMDtcbiAgdGhpcy5maXJzdFRhYkluTGluZSA9IC0xO1xuICB0aGlzLmRvY3VtZW50cyA9IFtdO1xufVxuZnVuY3Rpb24gZ2VuZXJhdGVFcnJvcihzdGF0ZTIsIG1lc3NhZ2UpIHtcbiAgdmFyIG1hcmsgPSB7XG4gICAgbmFtZTogc3RhdGUyLmZpbGVuYW1lLFxuICAgIGJ1ZmZlcjogc3RhdGUyLmlucHV0LnNsaWNlKDAsIC0xKSxcbiAgICAvLyBvbWl0IHRyYWlsaW5nIFxcMFxuICAgIHBvc2l0aW9uOiBzdGF0ZTIucG9zaXRpb24sXG4gICAgbGluZTogc3RhdGUyLmxpbmUsXG4gICAgY29sdW1uOiBzdGF0ZTIucG9zaXRpb24gLSBzdGF0ZTIubGluZVN0YXJ0XG4gIH07XG4gIG1hcmsuc25pcHBldCA9IHNuaXBwZXQobWFyayk7XG4gIHJldHVybiBuZXcgZXhjZXB0aW9uKG1lc3NhZ2UsIG1hcmspO1xufVxuZnVuY3Rpb24gdGhyb3dFcnJvcihzdGF0ZTIsIG1lc3NhZ2UpIHtcbiAgdGhyb3cgZ2VuZXJhdGVFcnJvcihzdGF0ZTIsIG1lc3NhZ2UpO1xufVxuZnVuY3Rpb24gdGhyb3dXYXJuaW5nKHN0YXRlMiwgbWVzc2FnZSkge1xuICBpZiAoc3RhdGUyLm9uV2FybmluZykge1xuICAgIHN0YXRlMi5vbldhcm5pbmcuY2FsbChudWxsLCBnZW5lcmF0ZUVycm9yKHN0YXRlMiwgbWVzc2FnZSkpO1xuICB9XG59XG52YXIgZGlyZWN0aXZlSGFuZGxlcnMgPSB7XG4gIFlBTUw6IGZ1bmN0aW9uIGhhbmRsZVlhbWxEaXJlY3RpdmUoc3RhdGUyLCBuYW1lLCBhcmdzKSB7XG4gICAgdmFyIG1hdGNoLCBtYWpvciwgbWlub3I7XG4gICAgaWYgKHN0YXRlMi52ZXJzaW9uICE9PSBudWxsKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJkdXBsaWNhdGlvbiBvZiAlWUFNTCBkaXJlY3RpdmVcIik7XG4gICAgfVxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudFwiKTtcbiAgICB9XG4gICAgbWF0Y2ggPSAvXihbMC05XSspXFwuKFswLTldKykkLy5leGVjKGFyZ3NbMF0pO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiaWxsLWZvcm1lZCBhcmd1bWVudCBvZiB0aGUgWUFNTCBkaXJlY3RpdmVcIik7XG4gICAgfVxuICAgIG1ham9yID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgICBtaW5vciA9IHBhcnNlSW50KG1hdGNoWzJdLCAxMCk7XG4gICAgaWYgKG1ham9yICE9PSAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJ1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudFwiKTtcbiAgICB9XG4gICAgc3RhdGUyLnZlcnNpb24gPSBhcmdzWzBdO1xuICAgIHN0YXRlMi5jaGVja0xpbmVCcmVha3MgPSBtaW5vciA8IDI7XG4gICAgaWYgKG1pbm9yICE9PSAxICYmIG1pbm9yICE9PSAyKSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUyLCBcInVuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnRcIik7XG4gICAgfVxuICB9LFxuICBUQUc6IGZ1bmN0aW9uIGhhbmRsZVRhZ0RpcmVjdGl2ZShzdGF0ZTIsIG5hbWUsIGFyZ3MpIHtcbiAgICB2YXIgaGFuZGxlLCBwcmVmaXg7XG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJUQUcgZGlyZWN0aXZlIGFjY2VwdHMgZXhhY3RseSB0d28gYXJndW1lbnRzXCIpO1xuICAgIH1cbiAgICBoYW5kbGUgPSBhcmdzWzBdO1xuICAgIHByZWZpeCA9IGFyZ3NbMV07XG4gICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdChoYW5kbGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZVwiKTtcbiAgICB9XG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoc3RhdGUyLnRhZ01hcCwgaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsICd0aGVyZSBpcyBhIHByZXZpb3VzbHkgZGVjbGFyZWQgc3VmZml4IGZvciBcIicgKyBoYW5kbGUgKyAnXCIgdGFnIGhhbmRsZScpO1xuICAgIH1cbiAgICBpZiAoIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHByZWZpeCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImlsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZVwiKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHByZWZpeCA9IGRlY29kZVVSSUNvbXBvbmVudChwcmVmaXgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidGFnIHByZWZpeCBpcyBtYWxmb3JtZWQ6IFwiICsgcHJlZml4KTtcbiAgICB9XG4gICAgc3RhdGUyLnRhZ01hcFtoYW5kbGVdID0gcHJlZml4O1xuICB9XG59O1xuZnVuY3Rpb24gY2FwdHVyZVNlZ21lbnQoc3RhdGUyLCBzdGFydCwgZW5kLCBjaGVja0pzb24pIHtcbiAgdmFyIF9wb3NpdGlvbiwgX2xlbmd0aCwgX2NoYXJhY3RlciwgX3Jlc3VsdDtcbiAgaWYgKHN0YXJ0IDwgZW5kKSB7XG4gICAgX3Jlc3VsdCA9IHN0YXRlMi5pbnB1dC5zbGljZShzdGFydCwgZW5kKTtcbiAgICBpZiAoY2hlY2tKc29uKSB7XG4gICAgICBmb3IgKF9wb3NpdGlvbiA9IDAsIF9sZW5ndGggPSBfcmVzdWx0Lmxlbmd0aDsgX3Bvc2l0aW9uIDwgX2xlbmd0aDsgX3Bvc2l0aW9uICs9IDEpIHtcbiAgICAgICAgX2NoYXJhY3RlciA9IF9yZXN1bHQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuICAgICAgICBpZiAoIShfY2hhcmFjdGVyID09PSA5IHx8IDMyIDw9IF9jaGFyYWN0ZXIgJiYgX2NoYXJhY3RlciA8PSAxMTE0MTExKSkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImV4cGVjdGVkIHZhbGlkIEpTT04gY2hhcmFjdGVyXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidGhlIHN0cmVhbSBjb250YWlucyBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnNcIik7XG4gICAgfVxuICAgIHN0YXRlMi5yZXN1bHQgKz0gX3Jlc3VsdDtcbiAgfVxufVxuZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZTIsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG92ZXJyaWRhYmxlS2V5cykge1xuICB2YXIgc291cmNlS2V5cywga2V5LCBpbmRleCwgcXVhbnRpdHk7XG4gIGlmICghY29tbW9uLmlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJjYW5ub3QgbWVyZ2UgbWFwcGluZ3M7IHRoZSBwcm92aWRlZCBzb3VyY2Ugb2JqZWN0IGlzIHVuYWNjZXB0YWJsZVwiKTtcbiAgfVxuICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcbiAgICBpZiAoIV9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoZGVzdGluYXRpb24sIGtleSkpIHtcbiAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIG92ZXJyaWRhYmxlS2V5c1trZXldID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUyLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBzdGFydExpbmUsIHN0YXJ0TGluZVN0YXJ0LCBzdGFydFBvcykge1xuICB2YXIgaW5kZXgsIHF1YW50aXR5O1xuICBpZiAoQXJyYXkuaXNBcnJheShrZXlOb2RlKSkge1xuICAgIGtleU5vZGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChrZXlOb2RlKTtcbiAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBrZXlOb2RlLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Tm9kZVtpbmRleF0pKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcIm5lc3RlZCBhcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW5zaWRlIGtleXNcIik7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGtleU5vZGUgPT09IFwib2JqZWN0XCIgJiYgX2NsYXNzKGtleU5vZGVbaW5kZXhdKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIikge1xuICAgICAgICBrZXlOb2RlW2luZGV4XSA9IFwiW29iamVjdCBPYmplY3RdXCI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gXCJvYmplY3RcIiAmJiBfY2xhc3Moa2V5Tm9kZSkgPT09IFwiW29iamVjdCBPYmplY3RdXCIpIHtcbiAgICBrZXlOb2RlID0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbiAgfVxuICBrZXlOb2RlID0gU3RyaW5nKGtleU5vZGUpO1xuICBpZiAoX3Jlc3VsdCA9PT0gbnVsbCkge1xuICAgIF9yZXN1bHQgPSB7fTtcbiAgfVxuICBpZiAoa2V5VGFnID09PSBcInRhZzp5YW1sLm9yZywyMDAyOm1lcmdlXCIpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSB2YWx1ZU5vZGUubGVuZ3RoOyBpbmRleCA8IHF1YW50aXR5OyBpbmRleCArPSAxKSB7XG4gICAgICAgIG1lcmdlTWFwcGluZ3Moc3RhdGUyLCBfcmVzdWx0LCB2YWx1ZU5vZGVbaW5kZXhdLCBvdmVycmlkYWJsZUtleXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZU1hcHBpbmdzKHN0YXRlMiwgX3Jlc3VsdCwgdmFsdWVOb2RlLCBvdmVycmlkYWJsZUtleXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoIXN0YXRlMi5qc29uICYmICFfaGFzT3duUHJvcGVydHkkMS5jYWxsKG92ZXJyaWRhYmxlS2V5cywga2V5Tm9kZSkgJiYgX2hhc093blByb3BlcnR5JDEuY2FsbChfcmVzdWx0LCBrZXlOb2RlKSkge1xuICAgICAgc3RhdGUyLmxpbmUgPSBzdGFydExpbmUgfHwgc3RhdGUyLmxpbmU7XG4gICAgICBzdGF0ZTIubGluZVN0YXJ0ID0gc3RhcnRMaW5lU3RhcnQgfHwgc3RhdGUyLmxpbmVTdGFydDtcbiAgICAgIHN0YXRlMi5wb3NpdGlvbiA9IHN0YXJ0UG9zIHx8IHN0YXRlMi5wb3NpdGlvbjtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImR1cGxpY2F0ZWQgbWFwcGluZyBrZXlcIik7XG4gICAgfVxuICAgIGlmIChrZXlOb2RlID09PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX3Jlc3VsdCwga2V5Tm9kZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogdmFsdWVOb2RlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3Jlc3VsdFtrZXlOb2RlXSA9IHZhbHVlTm9kZTtcbiAgICB9XG4gICAgZGVsZXRlIG92ZXJyaWRhYmxlS2V5c1trZXlOb2RlXTtcbiAgfVxuICByZXR1cm4gX3Jlc3VsdDtcbn1cbmZ1bmN0aW9uIHJlYWRMaW5lQnJlYWsoc3RhdGUyKSB7XG4gIHZhciBjaDtcbiAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICBpZiAoY2ggPT09IDEwKSB7XG4gICAgc3RhdGUyLnBvc2l0aW9uKys7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDEzKSB7XG4gICAgc3RhdGUyLnBvc2l0aW9uKys7XG4gICAgaWYgKHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbikgPT09IDEwKSB7XG4gICAgICBzdGF0ZTIucG9zaXRpb24rKztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkXCIpO1xuICB9XG4gIHN0YXRlMi5saW5lICs9IDE7XG4gIHN0YXRlMi5saW5lU3RhcnQgPSBzdGF0ZTIucG9zaXRpb247XG4gIHN0YXRlMi5maXJzdFRhYkluTGluZSA9IC0xO1xufVxuZnVuY3Rpb24gc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIGFsbG93Q29tbWVudHMsIGNoZWNrSW5kZW50KSB7XG4gIHZhciBsaW5lQnJlYWtzID0gMCwgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBpZiAoY2ggPT09IDkgJiYgc3RhdGUyLmZpcnN0VGFiSW5MaW5lID09PSAtMSkge1xuICAgICAgICBzdGF0ZTIuZmlyc3RUYWJJbkxpbmUgPSBzdGF0ZTIucG9zaXRpb247XG4gICAgICB9XG4gICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICB9XG4gICAgaWYgKGFsbG93Q29tbWVudHMgJiYgY2ggPT09IDM1KSB7XG4gICAgICBkbyB7XG4gICAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoY2ggIT09IDEwICYmIGNoICE9PSAxMyAmJiBjaCAhPT0gMCk7XG4gICAgfVxuICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICByZWFkTGluZUJyZWFrKHN0YXRlMik7XG4gICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbik7XG4gICAgICBsaW5lQnJlYWtzKys7XG4gICAgICBzdGF0ZTIubGluZUluZGVudCA9IDA7XG4gICAgICB3aGlsZSAoY2ggPT09IDMyKSB7XG4gICAgICAgIHN0YXRlMi5saW5lSW5kZW50Kys7XG4gICAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGNoZWNrSW5kZW50ICE9PSAtMSAmJiBsaW5lQnJlYWtzICE9PSAwICYmIHN0YXRlMi5saW5lSW5kZW50IDwgY2hlY2tJbmRlbnQpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUyLCBcImRlZmljaWVudCBpbmRlbnRhdGlvblwiKTtcbiAgfVxuICByZXR1cm4gbGluZUJyZWFrcztcbn1cbmZ1bmN0aW9uIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZTIpIHtcbiAgdmFyIF9wb3NpdGlvbiA9IHN0YXRlMi5wb3NpdGlvbiwgY2g7XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcbiAgaWYgKChjaCA9PT0gNDUgfHwgY2ggPT09IDQ2KSAmJiBjaCA9PT0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMSkgJiYgY2ggPT09IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDIpKSB7XG4gICAgX3Bvc2l0aW9uICs9IDM7XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuICAgIGlmIChjaCA9PT0gMCB8fCBpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZTIsIGNvdW50KSB7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHN0YXRlMi5yZXN1bHQgKz0gXCIgXCI7XG4gIH0gZWxzZSBpZiAoY291bnQgPiAxKSB7XG4gICAgc3RhdGUyLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KFwiXFxuXCIsIGNvdW50IC0gMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlYWRQbGFpblNjYWxhcihzdGF0ZTIsIG5vZGVJbmRlbnQsIHdpdGhpbkZsb3dDb2xsZWN0aW9uKSB7XG4gIHZhciBwcmVjZWRpbmcsIGZvbGxvd2luZywgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBoYXNQZW5kaW5nQ29udGVudCwgX2xpbmUsIF9saW5lU3RhcnQsIF9saW5lSW5kZW50LCBfa2luZCA9IHN0YXRlMi5raW5kLCBfcmVzdWx0ID0gc3RhdGUyLnJlc3VsdCwgY2g7XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgaWYgKGlzX1dTX09SX0VPTChjaCkgfHwgaXNfRkxPV19JTkRJQ0FUT1IoY2gpIHx8IGNoID09PSAzNSB8fCBjaCA9PT0gMzggfHwgY2ggPT09IDQyIHx8IGNoID09PSAzMyB8fCBjaCA9PT0gMTI0IHx8IGNoID09PSA2MiB8fCBjaCA9PT0gMzkgfHwgY2ggPT09IDM0IHx8IGNoID09PSAzNyB8fCBjaCA9PT0gNjQgfHwgY2ggPT09IDk2KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChjaCA9PT0gNjMgfHwgY2ggPT09IDQ1KSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uICsgMSk7XG4gICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpIHx8IHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhdGUyLmtpbmQgPSBcInNjYWxhclwiO1xuICBzdGF0ZTIucmVzdWx0ID0gXCJcIjtcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSA1OCkge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uICsgMSk7XG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHwgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNoID09PSAzNSkge1xuICAgICAgcHJlY2VkaW5nID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uIC0gMSk7XG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGF0ZTIucG9zaXRpb24gPT09IHN0YXRlMi5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlMikgfHwgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIF9saW5lID0gc3RhdGUyLmxpbmU7XG4gICAgICBfbGluZVN0YXJ0ID0gc3RhdGUyLmxpbmVTdGFydDtcbiAgICAgIF9saW5lSW5kZW50ID0gc3RhdGUyLmxpbmVJbmRlbnQ7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgZmFsc2UsIC0xKTtcbiAgICAgIGlmIChzdGF0ZTIubGluZUluZGVudCA+PSBub2RlSW5kZW50KSB7XG4gICAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlMi5wb3NpdGlvbiA9IGNhcHR1cmVFbmQ7XG4gICAgICAgIHN0YXRlMi5saW5lID0gX2xpbmU7XG4gICAgICAgIHN0YXRlMi5saW5lU3RhcnQgPSBfbGluZVN0YXJ0O1xuICAgICAgICBzdGF0ZTIubGluZUluZGVudCA9IF9saW5lSW5kZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZTIsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZTIsIHN0YXRlMi5saW5lIC0gX2xpbmUpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICghaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUyLnBvc2l0aW9uICsgMTtcbiAgICB9XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gIH1cbiAgY2FwdHVyZVNlZ21lbnQoc3RhdGUyLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIGZhbHNlKTtcbiAgaWYgKHN0YXRlMi5yZXN1bHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBzdGF0ZTIua2luZCA9IF9raW5kO1xuICBzdGF0ZTIucmVzdWx0ID0gX3Jlc3VsdDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gcmVhZFNpbmdsZVF1b3RlZFNjYWxhcihzdGF0ZTIsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNoLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQ7XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgaWYgKGNoICE9PSAzOSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGF0ZTIua2luZCA9IFwic2NhbGFyXCI7XG4gIHN0YXRlMi5yZXN1bHQgPSBcIlwiO1xuICBzdGF0ZTIucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgd2hpbGUgKChjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAzOSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUyLCBjYXB0dXJlU3RhcnQsIHN0YXRlMi5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgIGlmIChjaCA9PT0gMzkpIHtcbiAgICAgICAgY2FwdHVyZVN0YXJ0ID0gc3RhdGUyLnBvc2l0aW9uO1xuICAgICAgICBzdGF0ZTIucG9zaXRpb24rKztcbiAgICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUyLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZTIsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUyLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKHN0YXRlMi5wb3NpdGlvbiA9PT0gc3RhdGUyLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUyKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZTIucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZTIucG9zaXRpb247XG4gICAgfVxuICB9XG4gIHRocm93RXJyb3Ioc3RhdGUyLCBcInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXJcIik7XG59XG5mdW5jdGlvbiByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlMiwgbm9kZUluZGVudCkge1xuICB2YXIgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBoZXhMZW5ndGgsIGhleFJlc3VsdCwgdG1wLCBjaDtcbiAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICBpZiAoY2ggIT09IDM0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0YXRlMi5raW5kID0gXCJzY2FsYXJcIjtcbiAgc3RhdGUyLnJlc3VsdCA9IFwiXCI7XG4gIHN0YXRlMi5wb3NpdGlvbisrO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUyLnBvc2l0aW9uO1xuICB3aGlsZSAoKGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDM0KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZTIsIGNhcHR1cmVTdGFydCwgc3RhdGUyLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIHN0YXRlMi5wb3NpdGlvbisrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gOTIpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlMiwgY2FwdHVyZVN0YXJ0LCBzdGF0ZTIucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgZmFsc2UsIG5vZGVJbmRlbnQpO1xuICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBzaW1wbGVFc2NhcGVDaGVja1tjaF0pIHtcbiAgICAgICAgc3RhdGUyLnJlc3VsdCArPSBzaW1wbGVFc2NhcGVNYXBbY2hdO1xuICAgICAgICBzdGF0ZTIucG9zaXRpb24rKztcbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGVzY2FwZWRIZXhMZW4oY2gpKSA+IDApIHtcbiAgICAgICAgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICBoZXhSZXN1bHQgPSAwO1xuICAgICAgICBmb3IgKDsgaGV4TGVuZ3RoID4gMDsgaGV4TGVuZ3RoLS0pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgICAgICBpZiAoKHRtcCA9IGZyb21IZXhDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgICAgICAgaGV4UmVzdWx0ID0gKGhleFJlc3VsdCA8PCA0KSArIHRtcDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiZXhwZWN0ZWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZTIucmVzdWx0ICs9IGNoYXJGcm9tQ29kZXBvaW50KGhleFJlc3VsdCk7XG4gICAgICAgIHN0YXRlMi5wb3NpdGlvbisrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidW5rbm93biBlc2NhcGUgc2VxdWVuY2VcIik7XG4gICAgICB9XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUyLnBvc2l0aW9uO1xuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUyLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZTIsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUyLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKHN0YXRlMi5wb3NpdGlvbiA9PT0gc3RhdGUyLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUyKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZTIucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZTIucG9zaXRpb247XG4gICAgfVxuICB9XG4gIHRocm93RXJyb3Ioc3RhdGUyLCBcInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXJcIik7XG59XG5mdW5jdGlvbiByZWFkRmxvd0NvbGxlY3Rpb24oc3RhdGUyLCBub2RlSW5kZW50KSB7XG4gIHZhciByZWFkTmV4dCA9IHRydWUsIF9saW5lLCBfbGluZVN0YXJ0LCBfcG9zLCBfdGFnID0gc3RhdGUyLnRhZywgX3Jlc3VsdCwgX2FuY2hvciA9IHN0YXRlMi5hbmNob3IsIGZvbGxvd2luZywgdGVybWluYXRvciwgaXNQYWlyLCBpc0V4cGxpY2l0UGFpciwgaXNNYXBwaW5nLCBvdmVycmlkYWJsZUtleXMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSwga2V5Tm9kZSwga2V5VGFnLCB2YWx1ZU5vZGUsIGNoO1xuICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbik7XG4gIGlmIChjaCA9PT0gOTEpIHtcbiAgICB0ZXJtaW5hdG9yID0gOTM7XG4gICAgaXNNYXBwaW5nID0gZmFsc2U7XG4gICAgX3Jlc3VsdCA9IFtdO1xuICB9IGVsc2UgaWYgKGNoID09PSAxMjMpIHtcbiAgICB0ZXJtaW5hdG9yID0gMTI1O1xuICAgIGlzTWFwcGluZyA9IHRydWU7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc3RhdGUyLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlMi5hbmNob3JNYXBbc3RhdGUyLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgIGlmIChjaCA9PT0gdGVybWluYXRvcikge1xuICAgICAgc3RhdGUyLnBvc2l0aW9uKys7XG4gICAgICBzdGF0ZTIudGFnID0gX3RhZztcbiAgICAgIHN0YXRlMi5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgc3RhdGUyLmtpbmQgPSBpc01hcHBpbmcgPyBcIm1hcHBpbmdcIiA6IFwic2VxdWVuY2VcIjtcbiAgICAgIHN0YXRlMi5yZXN1bHQgPSBfcmVzdWx0O1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghcmVhZE5leHQpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcIm1pc3NlZCBjb21tYSBiZXR3ZWVuIGZsb3cgY29sbGVjdGlvbiBlbnRyaWVzXCIpO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDQ0KSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJleHBlY3RlZCB0aGUgbm9kZSBjb250ZW50LCBidXQgZm91bmQgJywnXCIpO1xuICAgIH1cbiAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuICAgIGlmIChjaCA9PT0gNjMpIHtcbiAgICAgIGZvbGxvd2luZyA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbiArIDEpO1xuICAgICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUyLnBvc2l0aW9uKys7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUyLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgX2xpbmUgPSBzdGF0ZTIubGluZTtcbiAgICBfbGluZVN0YXJ0ID0gc3RhdGUyLmxpbmVTdGFydDtcbiAgICBfcG9zID0gc3RhdGUyLnBvc2l0aW9uO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlMiwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAga2V5VGFnID0gc3RhdGUyLnRhZztcbiAgICBrZXlOb2RlID0gc3RhdGUyLnJlc3VsdDtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgIGlmICgoaXNFeHBsaWNpdFBhaXIgfHwgc3RhdGUyLmxpbmUgPT09IF9saW5lKSAmJiBjaCA9PT0gNTgpIHtcbiAgICAgIGlzUGFpciA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUyLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIGNvbXBvc2VOb2RlKHN0YXRlMiwgbm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB2YWx1ZU5vZGUgPSBzdGF0ZTIucmVzdWx0O1xuICAgIH1cbiAgICBpZiAoaXNNYXBwaW5nKSB7XG4gICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlMiwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2xpbmUsIF9saW5lU3RhcnQsIF9wb3MpO1xuICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICBfcmVzdWx0LnB1c2goc3RvcmVNYXBwaW5nUGFpcihzdGF0ZTIsIG51bGwsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUsIF9saW5lLCBfbGluZVN0YXJ0LCBfcG9zKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9yZXN1bHQucHVzaChrZXlOb2RlKTtcbiAgICB9XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgICBpZiAoY2ggPT09IDQ0KSB7XG4gICAgICByZWFkTmV4dCA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhZE5leHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb25cIik7XG59XG5mdW5jdGlvbiByZWFkQmxvY2tTY2FsYXIoc3RhdGUyLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsIGZvbGRpbmcsIGNob21waW5nID0gQ0hPTVBJTkdfQ0xJUCwgZGlkUmVhZENvbnRlbnQgPSBmYWxzZSwgZGV0ZWN0ZWRJbmRlbnQgPSBmYWxzZSwgdGV4dEluZGVudCA9IG5vZGVJbmRlbnQsIGVtcHR5TGluZXMgPSAwLCBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlLCB0bXAsIGNoO1xuICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbik7XG4gIGlmIChjaCA9PT0gMTI0KSB7XG4gICAgZm9sZGluZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGNoID09PSA2Mikge1xuICAgIGZvbGRpbmcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGF0ZTIua2luZCA9IFwic2NhbGFyXCI7XG4gIHN0YXRlMi5yZXN1bHQgPSBcIlwiO1xuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICBpZiAoY2ggPT09IDQzIHx8IGNoID09PSA0NSkge1xuICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgIGNob21waW5nID0gY2ggPT09IDQzID8gQ0hPTVBJTkdfS0VFUCA6IENIT01QSU5HX1NUUklQO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwicmVwZWF0IG9mIGEgY2hvbXBpbmcgbW9kZSBpZGVudGlmaWVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoKHRtcCA9IGZyb21EZWNpbWFsQ29kZShjaCkpID49IDApIHtcbiAgICAgIGlmICh0bXAgPT09IDApIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiYmFkIGV4cGxpY2l0IGluZGVudGF0aW9uIHdpZHRoIG9mIGEgYmxvY2sgc2NhbGFyOyBpdCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9uZVwiKTtcbiAgICAgIH0gZWxzZSBpZiAoIWRldGVjdGVkSW5kZW50KSB7XG4gICAgICAgIHRleHRJbmRlbnQgPSBub2RlSW5kZW50ICsgdG1wIC0gMTtcbiAgICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwicmVwZWF0IG9mIGFuIGluZGVudGF0aW9uIHdpZHRoIGlkZW50aWZpZXJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgZG8ge1xuICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgfSB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKTtcbiAgICBpZiAoY2ggPT09IDM1KSB7XG4gICAgICBkbyB7XG4gICAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoIWlzX0VPTChjaCkgJiYgY2ggIT09IDApO1xuICAgIH1cbiAgfVxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICByZWFkTGluZUJyZWFrKHN0YXRlMik7XG4gICAgc3RhdGUyLmxpbmVJbmRlbnQgPSAwO1xuICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgICB3aGlsZSAoKCFkZXRlY3RlZEluZGVudCB8fCBzdGF0ZTIubGluZUluZGVudCA8IHRleHRJbmRlbnQpICYmIGNoID09PSAzMikge1xuICAgICAgc3RhdGUyLmxpbmVJbmRlbnQrKztcbiAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgIH1cbiAgICBpZiAoIWRldGVjdGVkSW5kZW50ICYmIHN0YXRlMi5saW5lSW5kZW50ID4gdGV4dEluZGVudCkge1xuICAgICAgdGV4dEluZGVudCA9IHN0YXRlMi5saW5lSW5kZW50O1xuICAgIH1cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgZW1wdHlMaW5lcysrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzdGF0ZTIubGluZUluZGVudCA8IHRleHRJbmRlbnQpIHtcbiAgICAgIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfS0VFUCkge1xuICAgICAgICBzdGF0ZTIucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoXCJcXG5cIiwgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgICAgfSBlbHNlIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfQ0xJUCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHtcbiAgICAgICAgICBzdGF0ZTIucmVzdWx0ICs9IFwiXFxuXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoZm9sZGluZykge1xuICAgICAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIHN0YXRlMi5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdChcIlxcblwiLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgICB9IGVsc2UgaWYgKGF0TW9yZUluZGVudGVkKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2U7XG4gICAgICAgIHN0YXRlMi5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdChcIlxcblwiLCBlbXB0eUxpbmVzICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXMgPT09IDApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7XG4gICAgICAgICAgc3RhdGUyLnJlc3VsdCArPSBcIiBcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUyLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KFwiXFxuXCIsIGVtcHR5TGluZXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZTIucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoXCJcXG5cIiwgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgIH1cbiAgICBkaWRSZWFkQ29udGVudCA9IHRydWU7XG4gICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlO1xuICAgIGVtcHR5TGluZXMgPSAwO1xuICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgY2ggIT09IDApIHtcbiAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgIH1cbiAgICBjYXB0dXJlU2VnbWVudChzdGF0ZTIsIGNhcHR1cmVTdGFydCwgc3RhdGUyLnBvc2l0aW9uLCBmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZTIsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIF9saW5lLCBfdGFnID0gc3RhdGUyLnRhZywgX2FuY2hvciA9IHN0YXRlMi5hbmNob3IsIF9yZXN1bHQgPSBbXSwgZm9sbG93aW5nLCBkZXRlY3RlZCA9IGZhbHNlLCBjaDtcbiAgaWYgKHN0YXRlMi5maXJzdFRhYkluTGluZSAhPT0gLTEpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoc3RhdGUyLmFuY2hvciAhPT0gbnVsbCkge1xuICAgIHN0YXRlMi5hbmNob3JNYXBbc3RhdGUyLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKHN0YXRlMi5maXJzdFRhYkluTGluZSAhPT0gLTEpIHtcbiAgICAgIHN0YXRlMi5wb3NpdGlvbiA9IHN0YXRlMi5maXJzdFRhYkluTGluZTtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcInRhYiBjaGFyYWN0ZXJzIG11c3Qgbm90IGJlIHVzZWQgaW4gaW5kZW50YXRpb25cIik7XG4gICAgfVxuICAgIGlmIChjaCAhPT0gNDUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24gKyAxKTtcbiAgICBpZiAoIWlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgIHN0YXRlMi5wb3NpdGlvbisrO1xuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpKSB7XG4gICAgICBpZiAoc3RhdGUyLmxpbmVJbmRlbnQgPD0gbm9kZUluZGVudCkge1xuICAgICAgICBfcmVzdWx0LnB1c2gobnVsbCk7XG4gICAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIF9saW5lID0gc3RhdGUyLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUyLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgX3Jlc3VsdC5wdXNoKHN0YXRlMi5yZXN1bHQpO1xuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUyLCB0cnVlLCAtMSk7XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgIGlmICgoc3RhdGUyLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlMi5saW5lSW5kZW50ID4gbm9kZUluZGVudCkgJiYgY2ggIT09IDApIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImJhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5XCIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUyLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUyLnRhZyA9IF90YWc7XG4gICAgc3RhdGUyLmFuY2hvciA9IF9hbmNob3I7XG4gICAgc3RhdGUyLmtpbmQgPSBcInNlcXVlbmNlXCI7XG4gICAgc3RhdGUyLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gcmVhZEJsb2NrTWFwcGluZyhzdGF0ZTIsIG5vZGVJbmRlbnQsIGZsb3dJbmRlbnQpIHtcbiAgdmFyIGZvbGxvd2luZywgYWxsb3dDb21wYWN0LCBfbGluZSwgX2tleUxpbmUsIF9rZXlMaW5lU3RhcnQsIF9rZXlQb3MsIF90YWcgPSBzdGF0ZTIudGFnLCBfYW5jaG9yID0gc3RhdGUyLmFuY2hvciwgX3Jlc3VsdCA9IHt9LCBvdmVycmlkYWJsZUtleXMgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKSwga2V5VGFnID0gbnVsbCwga2V5Tm9kZSA9IG51bGwsIHZhbHVlTm9kZSA9IG51bGwsIGF0RXhwbGljaXRLZXkgPSBmYWxzZSwgZGV0ZWN0ZWQgPSBmYWxzZSwgY2g7XG4gIGlmIChzdGF0ZTIuZmlyc3RUYWJJbkxpbmUgIT09IC0xKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHN0YXRlMi5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZTIuYW5jaG9yTWFwW3N0YXRlMi5hbmNob3JdID0gX3Jlc3VsdDtcbiAgfVxuICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbik7XG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGlmICghYXRFeHBsaWNpdEtleSAmJiBzdGF0ZTIuZmlyc3RUYWJJbkxpbmUgIT09IC0xKSB7XG4gICAgICBzdGF0ZTIucG9zaXRpb24gPSBzdGF0ZTIuZmlyc3RUYWJJbkxpbmU7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJ0YWIgY2hhcmFjdGVycyBtdXN0IG5vdCBiZSB1c2VkIGluIGluZGVudGF0aW9uXCIpO1xuICAgIH1cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24gKyAxKTtcbiAgICBfbGluZSA9IHN0YXRlMi5saW5lO1xuICAgIGlmICgoY2ggPT09IDYzIHx8IGNoID09PSA1OCkgJiYgaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcbiAgICAgIGlmIChjaCA9PT0gNjMpIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlMiwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwsIF9rZXlMaW5lLCBfa2V5TGluZVN0YXJ0LCBfa2V5UG9zKTtcbiAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImluY29tcGxldGUgZXhwbGljaXQgbWFwcGluZyBwYWlyOyBhIGtleSBub2RlIGlzIG1pc3NlZDsgb3IgZm9sbG93ZWQgYnkgYSBub24tdGFidWxhdGVkIGVtcHR5IGxpbmVcIik7XG4gICAgICB9XG4gICAgICBzdGF0ZTIucG9zaXRpb24gKz0gMTtcbiAgICAgIGNoID0gZm9sbG93aW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICBfa2V5TGluZSA9IHN0YXRlMi5saW5lO1xuICAgICAgX2tleUxpbmVTdGFydCA9IHN0YXRlMi5saW5lU3RhcnQ7XG4gICAgICBfa2V5UG9zID0gc3RhdGUyLnBvc2l0aW9uO1xuICAgICAgaWYgKCFjb21wb3NlTm9kZShzdGF0ZTIsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19PVVQsIGZhbHNlLCB0cnVlKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZTIubGluZSA9PT0gX2xpbmUpIHtcbiAgICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSA1OCkge1xuICAgICAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgICAgIGlmICghaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZTIsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsLCBfa2V5TGluZSwgX2tleUxpbmVTdGFydCwgX2tleVBvcyk7XG4gICAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgICBhbGxvd0NvbXBhY3QgPSBmYWxzZTtcbiAgICAgICAgICBrZXlUYWcgPSBzdGF0ZTIudGFnO1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZTIucmVzdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiY2FuIG5vdCByZWFkIGFuIGltcGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBjb2xvbiBpcyBtaXNzZWRcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUyLnRhZyA9IF90YWc7XG4gICAgICAgICAgc3RhdGUyLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiY2FuIG5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTsgYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5XCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUyLnRhZyA9IF90YWc7XG4gICAgICAgIHN0YXRlMi5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YXRlMi5saW5lID09PSBfbGluZSB8fCBzdGF0ZTIubGluZUluZGVudCA+IG5vZGVJbmRlbnQpIHtcbiAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgIF9rZXlMaW5lID0gc3RhdGUyLmxpbmU7XG4gICAgICAgIF9rZXlMaW5lU3RhcnQgPSBzdGF0ZTIubGluZVN0YXJ0O1xuICAgICAgICBfa2V5UG9zID0gc3RhdGUyLnBvc2l0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBvc2VOb2RlKHN0YXRlMiwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19PVVQsIHRydWUsIGFsbG93Q29tcGFjdCkpIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUyLnJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZU5vZGUgPSBzdGF0ZTIucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZTIsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUsIF9rZXlMaW5lLCBfa2V5TGluZVN0YXJ0LCBfa2V5UG9zKTtcbiAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpO1xuICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICAgIH1cbiAgICBpZiAoKHN0YXRlMi5saW5lID09PSBfbGluZSB8fCBzdGF0ZTIubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIGNoICE9PSAwKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJiYWQgaW5kZW50YXRpb24gb2YgYSBtYXBwaW5nIGVudHJ5XCIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUyLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlMiwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwsIF9rZXlMaW5lLCBfa2V5TGluZVN0YXJ0LCBfa2V5UG9zKTtcbiAgfVxuICBpZiAoZGV0ZWN0ZWQpIHtcbiAgICBzdGF0ZTIudGFnID0gX3RhZztcbiAgICBzdGF0ZTIuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZTIua2luZCA9IFwibWFwcGluZ1wiO1xuICAgIHN0YXRlMi5yZXN1bHQgPSBfcmVzdWx0O1xuICB9XG4gIHJldHVybiBkZXRlY3RlZDtcbn1cbmZ1bmN0aW9uIHJlYWRUYWdQcm9wZXJ0eShzdGF0ZTIpIHtcbiAgdmFyIF9wb3NpdGlvbiwgaXNWZXJiYXRpbSA9IGZhbHNlLCBpc05hbWVkID0gZmFsc2UsIHRhZ0hhbmRsZSwgdGFnTmFtZSwgY2g7XG4gIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgaWYgKGNoICE9PSAzMylcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzdGF0ZTIudGFnICE9PSBudWxsKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHlcIik7XG4gIH1cbiAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gIGlmIChjaCA9PT0gNjApIHtcbiAgICBpc1ZlcmJhdGltID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgfSBlbHNlIGlmIChjaCA9PT0gMzMpIHtcbiAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICB0YWdIYW5kbGUgPSBcIiEhXCI7XG4gICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgdGFnSGFuZGxlID0gXCIhXCI7XG4gIH1cbiAgX3Bvc2l0aW9uID0gc3RhdGUyLnBvc2l0aW9uO1xuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIGRvIHtcbiAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgIH0gd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSA2Mik7XG4gICAgaWYgKHN0YXRlMi5wb3NpdGlvbiA8IHN0YXRlMi5sZW5ndGgpIHtcbiAgICAgIHRhZ05hbWUgPSBzdGF0ZTIuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZTIucG9zaXRpb24pO1xuICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcInVuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnXCIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgIGlmIChjaCA9PT0gMzMpIHtcbiAgICAgICAgaWYgKCFpc05hbWVkKSB7XG4gICAgICAgICAgdGFnSGFuZGxlID0gc3RhdGUyLmlucHV0LnNsaWNlKF9wb3NpdGlvbiAtIDEsIHN0YXRlMi5wb3NpdGlvbiArIDEpO1xuICAgICAgICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QodGFnSGFuZGxlKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwibmFtZWQgdGFnIGhhbmRsZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlzTmFtZWQgPSB0cnVlO1xuICAgICAgICAgIF9wb3NpdGlvbiA9IHN0YXRlMi5wb3NpdGlvbiArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrc1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgfVxuICAgIHRhZ05hbWUgPSBzdGF0ZTIuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZTIucG9zaXRpb24pO1xuICAgIGlmIChQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUy50ZXN0KHRhZ05hbWUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJ0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGZsb3cgaW5kaWNhdG9yIGNoYXJhY3RlcnNcIik7XG4gICAgfVxuICB9XG4gIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcInRhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogXCIgKyB0YWdOYW1lKTtcbiAgfVxuICB0cnkge1xuICAgIHRhZ05hbWUgPSBkZWNvZGVVUklDb21wb25lbnQodGFnTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcInRhZyBuYW1lIGlzIG1hbGZvcm1lZDogXCIgKyB0YWdOYW1lKTtcbiAgfVxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIHN0YXRlMi50YWcgPSB0YWdOYW1lO1xuICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoc3RhdGUyLnRhZ01hcCwgdGFnSGFuZGxlKSkge1xuICAgIHN0YXRlMi50YWcgPSBzdGF0ZTIudGFnTWFwW3RhZ0hhbmRsZV0gKyB0YWdOYW1lO1xuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gXCIhXCIpIHtcbiAgICBzdGF0ZTIudGFnID0gXCIhXCIgKyB0YWdOYW1lO1xuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gXCIhIVwiKSB7XG4gICAgc3RhdGUyLnRhZyA9IFwidGFnOnlhbWwub3JnLDIwMDI6XCIgKyB0YWdOYW1lO1xuICB9IGVsc2Uge1xuICAgIHRocm93RXJyb3Ioc3RhdGUyLCAndW5kZWNsYXJlZCB0YWcgaGFuZGxlIFwiJyArIHRhZ0hhbmRsZSArICdcIicpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlMikge1xuICB2YXIgX3Bvc2l0aW9uLCBjaDtcbiAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pO1xuICBpZiAoY2ggIT09IDM4KVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHN0YXRlMi5hbmNob3IgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJkdXBsaWNhdGlvbiBvZiBhbiBhbmNob3IgcHJvcGVydHlcIik7XG4gIH1cbiAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gIF9wb3NpdGlvbiA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpICYmICFpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgfVxuICBpZiAoc3RhdGUyLnBvc2l0aW9uID09PSBfcG9zaXRpb24pIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJuYW1lIG9mIGFuIGFuY2hvciBub2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyXCIpO1xuICB9XG4gIHN0YXRlMi5hbmNob3IgPSBzdGF0ZTIuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZTIucG9zaXRpb24pO1xuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHJlYWRBbGlhcyhzdGF0ZTIpIHtcbiAgdmFyIF9wb3NpdGlvbiwgYWxpYXMsIGNoO1xuICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbik7XG4gIGlmIChjaCAhPT0gNDIpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgX3Bvc2l0aW9uID0gc3RhdGUyLnBvc2l0aW9uO1xuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICB9XG4gIGlmIChzdGF0ZTIucG9zaXRpb24gPT09IF9wb3NpdGlvbikge1xuICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcIm5hbWUgb2YgYW4gYWxpYXMgbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlclwiKTtcbiAgfVxuICBhbGlhcyA9IHN0YXRlMi5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlMi5wb3NpdGlvbik7XG4gIGlmICghX2hhc093blByb3BlcnR5JDEuY2FsbChzdGF0ZTIuYW5jaG9yTWFwLCBhbGlhcykpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlMiwgJ3VuaWRlbnRpZmllZCBhbGlhcyBcIicgKyBhbGlhcyArICdcIicpO1xuICB9XG4gIHN0YXRlMi5yZXN1bHQgPSBzdGF0ZTIuYW5jaG9yTWFwW2FsaWFzXTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIHRydWUsIC0xKTtcbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjb21wb3NlTm9kZShzdGF0ZTIsIHBhcmVudEluZGVudCwgbm9kZUNvbnRleHQsIGFsbG93VG9TZWVrLCBhbGxvd0NvbXBhY3QpIHtcbiAgdmFyIGFsbG93QmxvY2tTdHlsZXMsIGFsbG93QmxvY2tTY2FsYXJzLCBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMsIGluZGVudFN0YXR1cyA9IDEsIGF0TmV3TGluZSA9IGZhbHNlLCBoYXNDb250ZW50ID0gZmFsc2UsIHR5cGVJbmRleCwgdHlwZVF1YW50aXR5LCB0eXBlTGlzdCwgdHlwZTIsIGZsb3dJbmRlbnQsIGJsb2NrSW5kZW50O1xuICBpZiAoc3RhdGUyLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUyLmxpc3RlbmVyKFwib3BlblwiLCBzdGF0ZTIpO1xuICB9XG4gIHN0YXRlMi50YWcgPSBudWxsO1xuICBzdGF0ZTIuYW5jaG9yID0gbnVsbDtcbiAgc3RhdGUyLmtpbmQgPSBudWxsO1xuICBzdGF0ZTIucmVzdWx0ID0gbnVsbDtcbiAgYWxsb3dCbG9ja1N0eWxlcyA9IGFsbG93QmxvY2tTY2FsYXJzID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0IHx8IENPTlRFWFRfQkxPQ0tfSU4gPT09IG5vZGVDb250ZXh0O1xuICBpZiAoYWxsb3dUb1NlZWspIHtcbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIHRydWUsIC0xKSkge1xuICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgIGlmIChzdGF0ZTIubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZTIubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlMi5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgd2hpbGUgKHJlYWRUYWdQcm9wZXJ0eShzdGF0ZTIpIHx8IHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZTIpKSB7XG4gICAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIHRydWUsIC0xKSkge1xuICAgICAgICBhdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhbGxvd0Jsb2NrU3R5bGVzO1xuICAgICAgICBpZiAoc3RhdGUyLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlMi5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlMi5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zKSB7XG4gICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYXROZXdMaW5lIHx8IGFsbG93Q29tcGFjdDtcbiAgfVxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxIHx8IENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgIGlmIChDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0IHx8IENPTlRFWFRfRkxPV19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50ICsgMTtcbiAgICB9XG4gICAgYmxvY2tJbmRlbnQgPSBzdGF0ZTIucG9zaXRpb24gLSBzdGF0ZTIubGluZVN0YXJ0O1xuICAgIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICAgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYgKHJlYWRCbG9ja1NlcXVlbmNlKHN0YXRlMiwgYmxvY2tJbmRlbnQpIHx8IHJlYWRCbG9ja01hcHBpbmcoc3RhdGUyLCBibG9ja0luZGVudCwgZmxvd0luZGVudCkpIHx8IHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZTIsIGZsb3dJbmRlbnQpKSB7XG4gICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFsbG93QmxvY2tTY2FsYXJzICYmIHJlYWRCbG9ja1NjYWxhcihzdGF0ZTIsIGZsb3dJbmRlbnQpIHx8IHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUyLCBmbG93SW5kZW50KSB8fCByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlMiwgZmxvd0luZGVudCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChyZWFkQWxpYXMoc3RhdGUyKSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgIGlmIChzdGF0ZTIudGFnICE9PSBudWxsIHx8IHN0YXRlMi5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImFsaWFzIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkUGxhaW5TY2FsYXIoc3RhdGUyLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgIGlmIChzdGF0ZTIudGFnID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdGF0ZTIudGFnID0gXCI/XCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZTIuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUyLmFuY2hvck1hcFtzdGF0ZTIuYW5jaG9yXSA9IHN0YXRlMi5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGluZGVudFN0YXR1cyA9PT0gMCkge1xuICAgICAgaGFzQ29udGVudCA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZTIsIGJsb2NrSW5kZW50KTtcbiAgICB9XG4gIH1cbiAgaWYgKHN0YXRlMi50YWcgPT09IG51bGwpIHtcbiAgICBpZiAoc3RhdGUyLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUyLmFuY2hvck1hcFtzdGF0ZTIuYW5jaG9yXSA9IHN0YXRlMi5yZXN1bHQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKHN0YXRlMi50YWcgPT09IFwiP1wiKSB7XG4gICAgaWYgKHN0YXRlMi5yZXN1bHQgIT09IG51bGwgJiYgc3RhdGUyLmtpbmQgIT09IFwic2NhbGFyXCIpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITw/PiB0YWc7IGl0IHNob3VsZCBiZSBcInNjYWxhclwiLCBub3QgXCInICsgc3RhdGUyLmtpbmQgKyAnXCInKTtcbiAgICB9XG4gICAgZm9yICh0eXBlSW5kZXggPSAwLCB0eXBlUXVhbnRpdHkgPSBzdGF0ZTIuaW1wbGljaXRUeXBlcy5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgIHR5cGUyID0gc3RhdGUyLmltcGxpY2l0VHlwZXNbdHlwZUluZGV4XTtcbiAgICAgIGlmICh0eXBlMi5yZXNvbHZlKHN0YXRlMi5yZXN1bHQpKSB7XG4gICAgICAgIHN0YXRlMi5yZXN1bHQgPSB0eXBlMi5jb25zdHJ1Y3Qoc3RhdGUyLnJlc3VsdCk7XG4gICAgICAgIHN0YXRlMi50YWcgPSB0eXBlMi50YWc7XG4gICAgICAgIGlmIChzdGF0ZTIuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUyLmFuY2hvck1hcFtzdGF0ZTIuYW5jaG9yXSA9IHN0YXRlMi5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHN0YXRlMi50YWcgIT09IFwiIVwiKSB7XG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoc3RhdGUyLnR5cGVNYXBbc3RhdGUyLmtpbmQgfHwgXCJmYWxsYmFja1wiXSwgc3RhdGUyLnRhZykpIHtcbiAgICAgIHR5cGUyID0gc3RhdGUyLnR5cGVNYXBbc3RhdGUyLmtpbmQgfHwgXCJmYWxsYmFja1wiXVtzdGF0ZTIudGFnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZTIgPSBudWxsO1xuICAgICAgdHlwZUxpc3QgPSBzdGF0ZTIudHlwZU1hcC5tdWx0aVtzdGF0ZTIua2luZCB8fCBcImZhbGxiYWNrXCJdO1xuICAgICAgZm9yICh0eXBlSW5kZXggPSAwLCB0eXBlUXVhbnRpdHkgPSB0eXBlTGlzdC5sZW5ndGg7IHR5cGVJbmRleCA8IHR5cGVRdWFudGl0eTsgdHlwZUluZGV4ICs9IDEpIHtcbiAgICAgICAgaWYgKHN0YXRlMi50YWcuc2xpY2UoMCwgdHlwZUxpc3RbdHlwZUluZGV4XS50YWcubGVuZ3RoKSA9PT0gdHlwZUxpc3RbdHlwZUluZGV4XS50YWcpIHtcbiAgICAgICAgICB0eXBlMiA9IHR5cGVMaXN0W3R5cGVJbmRleF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0eXBlMikge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwidW5rbm93biB0YWcgITxcIiArIHN0YXRlMi50YWcgKyBcIj5cIik7XG4gICAgfVxuICAgIGlmIChzdGF0ZTIucmVzdWx0ICE9PSBudWxsICYmIHR5cGUyLmtpbmQgIT09IHN0YXRlMi5raW5kKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJ1bmFjY2VwdGFibGUgbm9kZSBraW5kIGZvciAhPFwiICsgc3RhdGUyLnRhZyArICc+IHRhZzsgaXQgc2hvdWxkIGJlIFwiJyArIHR5cGUyLmtpbmQgKyAnXCIsIG5vdCBcIicgKyBzdGF0ZTIua2luZCArICdcIicpO1xuICAgIH1cbiAgICBpZiAoIXR5cGUyLnJlc29sdmUoc3RhdGUyLnJlc3VsdCwgc3RhdGUyLnRhZykpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcImNhbm5vdCByZXNvbHZlIGEgbm9kZSB3aXRoICE8XCIgKyBzdGF0ZTIudGFnICsgXCI+IGV4cGxpY2l0IHRhZ1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUyLnJlc3VsdCA9IHR5cGUyLmNvbnN0cnVjdChzdGF0ZTIucmVzdWx0LCBzdGF0ZTIudGFnKTtcbiAgICAgIGlmIChzdGF0ZTIuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgIHN0YXRlMi5hbmNob3JNYXBbc3RhdGUyLmFuY2hvcl0gPSBzdGF0ZTIucmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoc3RhdGUyLmxpc3RlbmVyICE9PSBudWxsKSB7XG4gICAgc3RhdGUyLmxpc3RlbmVyKFwiY2xvc2VcIiwgc3RhdGUyKTtcbiAgfVxuICByZXR1cm4gc3RhdGUyLnRhZyAhPT0gbnVsbCB8fCBzdGF0ZTIuYW5jaG9yICE9PSBudWxsIHx8IGhhc0NvbnRlbnQ7XG59XG5mdW5jdGlvbiByZWFkRG9jdW1lbnQoc3RhdGUyKSB7XG4gIHZhciBkb2N1bWVudFN0YXJ0ID0gc3RhdGUyLnBvc2l0aW9uLCBfcG9zaXRpb24sIGRpcmVjdGl2ZU5hbWUsIGRpcmVjdGl2ZUFyZ3MsIGhhc0RpcmVjdGl2ZXMgPSBmYWxzZSwgY2g7XG4gIHN0YXRlMi52ZXJzaW9uID0gbnVsbDtcbiAgc3RhdGUyLmNoZWNrTGluZUJyZWFrcyA9IHN0YXRlMi5sZWdhY3k7XG4gIHN0YXRlMi50YWdNYXAgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RhdGUyLmFuY2hvck1hcCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB3aGlsZSAoKGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpO1xuICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUyLnBvc2l0aW9uKTtcbiAgICBpZiAoc3RhdGUyLmxpbmVJbmRlbnQgPiAwIHx8IGNoICE9PSAzNykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgIF9wb3NpdGlvbiA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgIGNoID0gc3RhdGUyLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZTIucG9zaXRpb24pO1xuICAgIH1cbiAgICBkaXJlY3RpdmVOYW1lID0gc3RhdGUyLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUyLnBvc2l0aW9uKTtcbiAgICBkaXJlY3RpdmVBcmdzID0gW107XG4gICAgaWYgKGRpcmVjdGl2ZU5hbWUubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoXCIpO1xuICAgIH1cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlMi5wb3NpdGlvbik7XG4gICAgICB9XG4gICAgICBpZiAoY2ggPT09IDM1KSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgICAgfSB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX0VPTChjaCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChpc19FT0woY2gpKVxuICAgICAgICBicmVhaztcbiAgICAgIF9wb3NpdGlvbiA9IHN0YXRlMi5wb3NpdGlvbjtcbiAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgICBjaCA9IHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUyLnBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICAgIGRpcmVjdGl2ZUFyZ3MucHVzaChzdGF0ZTIuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZTIucG9zaXRpb24pKTtcbiAgICB9XG4gICAgaWYgKGNoICE9PSAwKVxuICAgICAgcmVhZExpbmVCcmVhayhzdGF0ZTIpO1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkkMS5jYWxsKGRpcmVjdGl2ZUhhbmRsZXJzLCBkaXJlY3RpdmVOYW1lKSkge1xuICAgICAgZGlyZWN0aXZlSGFuZGxlcnNbZGlyZWN0aXZlTmFtZV0oc3RhdGUyLCBkaXJlY3RpdmVOYW1lLCBkaXJlY3RpdmVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dXYXJuaW5nKHN0YXRlMiwgJ3Vua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJyArIGRpcmVjdGl2ZU5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH1cbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZTIsIHRydWUsIC0xKTtcbiAgaWYgKHN0YXRlMi5saW5lSW5kZW50ID09PSAwICYmIHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbikgPT09IDQ1ICYmIHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbiArIDEpID09PSA0NSAmJiBzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24gKyAyKSA9PT0gNDUpIHtcbiAgICBzdGF0ZTIucG9zaXRpb24gKz0gMztcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpO1xuICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlMiwgXCJkaXJlY3RpdmVzIGVuZCBtYXJrIGlzIGV4cGVjdGVkXCIpO1xuICB9XG4gIGNvbXBvc2VOb2RlKHN0YXRlMiwgc3RhdGUyLmxpbmVJbmRlbnQgLSAxLCBDT05URVhUX0JMT0NLX09VVCwgZmFsc2UsIHRydWUpO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpO1xuICBpZiAoc3RhdGUyLmNoZWNrTGluZUJyZWFrcyAmJiBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUy50ZXN0KHN0YXRlMi5pbnB1dC5zbGljZShkb2N1bWVudFN0YXJ0LCBzdGF0ZTIucG9zaXRpb24pKSkge1xuICAgIHRocm93V2FybmluZyhzdGF0ZTIsIFwibm9uLUFTQ0lJIGxpbmUgYnJlYWtzIGFyZSBpbnRlcnByZXRlZCBhcyBjb250ZW50XCIpO1xuICB9XG4gIHN0YXRlMi5kb2N1bWVudHMucHVzaChzdGF0ZTIucmVzdWx0KTtcbiAgaWYgKHN0YXRlMi5wb3NpdGlvbiA9PT0gc3RhdGUyLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUyKSkge1xuICAgIGlmIChzdGF0ZTIuaW5wdXQuY2hhckNvZGVBdChzdGF0ZTIucG9zaXRpb24pID09PSA0Nikge1xuICAgICAgc3RhdGUyLnBvc2l0aW9uICs9IDM7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlMiwgdHJ1ZSwgLTEpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN0YXRlMi5wb3NpdGlvbiA8IHN0YXRlMi5sZW5ndGggLSAxKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZTIsIFwiZW5kIG9mIHRoZSBzdHJlYW0gb3IgYSBkb2N1bWVudCBzZXBhcmF0b3IgaXMgZXhwZWN0ZWRcIik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5mdW5jdGlvbiBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKSB7XG4gIGlucHV0ID0gU3RyaW5nKGlucHV0KTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmIChpbnB1dC5sZW5ndGggIT09IDApIHtcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMTAgJiYgaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMTMpIHtcbiAgICAgIGlucHV0ICs9IFwiXFxuXCI7XG4gICAgfVxuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KDApID09PSA2NTI3OSkge1xuICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICB9XG4gIH1cbiAgdmFyIHN0YXRlMiA9IG5ldyBTdGF0ZSQxKGlucHV0LCBvcHRpb25zKTtcbiAgdmFyIG51bGxwb3MgPSBpbnB1dC5pbmRleE9mKFwiXFwwXCIpO1xuICBpZiAobnVsbHBvcyAhPT0gLTEpIHtcbiAgICBzdGF0ZTIucG9zaXRpb24gPSBudWxscG9zO1xuICAgIHRocm93RXJyb3Ioc3RhdGUyLCBcIm51bGwgYnl0ZSBpcyBub3QgYWxsb3dlZCBpbiBpbnB1dFwiKTtcbiAgfVxuICBzdGF0ZTIuaW5wdXQgKz0gXCJcXDBcIjtcbiAgd2hpbGUgKHN0YXRlMi5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlMi5wb3NpdGlvbikgPT09IDMyKSB7XG4gICAgc3RhdGUyLmxpbmVJbmRlbnQgKz0gMTtcbiAgICBzdGF0ZTIucG9zaXRpb24gKz0gMTtcbiAgfVxuICB3aGlsZSAoc3RhdGUyLnBvc2l0aW9uIDwgc3RhdGUyLmxlbmd0aCAtIDEpIHtcbiAgICByZWFkRG9jdW1lbnQoc3RhdGUyKTtcbiAgfVxuICByZXR1cm4gc3RhdGUyLmRvY3VtZW50cztcbn1cbmZ1bmN0aW9uIGxvYWRBbGwkMShpbnB1dCwgaXRlcmF0b3IyLCBvcHRpb25zKSB7XG4gIGlmIChpdGVyYXRvcjIgIT09IG51bGwgJiYgdHlwZW9mIGl0ZXJhdG9yMiA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG9wdGlvbnMgPSBpdGVyYXRvcjI7XG4gICAgaXRlcmF0b3IyID0gbnVsbDtcbiAgfVxuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG4gIGlmICh0eXBlb2YgaXRlcmF0b3IyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzO1xuICB9XG4gIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gZG9jdW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpdGVyYXRvcjIoZG9jdW1lbnRzW2luZGV4XSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGxvYWQkMShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG4gIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfSBlbHNlIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50c1swXTtcbiAgfVxuICB0aHJvdyBuZXcgZXhjZXB0aW9uKFwiZXhwZWN0ZWQgYSBzaW5nbGUgZG9jdW1lbnQgaW4gdGhlIHN0cmVhbSwgYnV0IGZvdW5kIG1vcmVcIik7XG59XG52YXIgbG9hZEFsbF8xID0gbG9hZEFsbCQxO1xudmFyIGxvYWRfMSA9IGxvYWQkMTtcbnZhciBsb2FkZXIkaiA9IHtcbiAgbG9hZEFsbDogbG9hZEFsbF8xLFxuICBsb2FkOiBsb2FkXzFcbn07XG52YXIgRkFJTFNBRkVfU0NIRU1BID0gZmFpbHNhZmU7XG52YXIgbG9hZCA9IGxvYWRlciRqLmxvYWQ7XG5jb25zdCBmcm9udE1hdHRlclJlZ2V4ID0gL14tezN9XFxzKltcXG5cXHJdKC4qPylbXFxuXFxyXS17M31cXHMqW1xcblxccl0rL3M7XG5mdW5jdGlvbiBleHRyYWN0RnJvbnRNYXR0ZXIodGV4dCwgZGIpIHtcbiAgdmFyIF9hLCBfYjtcbiAgY29uc3QgbWF0Y2hlcyA9IHRleHQubWF0Y2goZnJvbnRNYXR0ZXJSZWdleCk7XG4gIGlmIChtYXRjaGVzKSB7XG4gICAgY29uc3QgcGFyc2VkID0gbG9hZChtYXRjaGVzWzFdLCB7XG4gICAgICAvLyBUbyBrZWVwIHRoaW5ncyBzaW1wbGUsIG9ubHkgYWxsb3cgc3RyaW5ncywgYXJyYXlzLCBhbmQgcGxhaW4gb2JqZWN0cy5cbiAgICAgIC8vIGh0dHBzOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDIzNDZcbiAgICAgIHNjaGVtYTogRkFJTFNBRkVfU0NIRU1BXG4gICAgfSk7XG4gICAgaWYgKHBhcnNlZCA9PSBudWxsID8gdm9pZCAwIDogcGFyc2VkLnRpdGxlKSB7XG4gICAgICAoX2EgPSBkYi5zZXREaWFncmFtVGl0bGUpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKGRiLCBwYXJzZWQudGl0bGUpO1xuICAgIH1cbiAgICBpZiAocGFyc2VkID09IG51bGwgPyB2b2lkIDAgOiBwYXJzZWQuZGlzcGxheU1vZGUpIHtcbiAgICAgIChfYiA9IGRiLnNldERpc3BsYXlNb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChkYiwgcGFyc2VkLmRpc3BsYXlNb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHQuc2xpY2UobWF0Y2hlc1swXS5sZW5ndGgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG59XG5jb25zdCBhc3NpZ25XaXRoRGVwdGggPSBmdW5jdGlvbihkc3QsIHNyYywgY29uZmlnMikge1xuICBjb25zdCB7IGRlcHRoLCBjbG9iYmVyIH0gPSBPYmplY3QuYXNzaWduKHsgZGVwdGg6IDIsIGNsb2JiZXI6IGZhbHNlIH0sIGNvbmZpZzIpO1xuICBpZiAoQXJyYXkuaXNBcnJheShzcmMpICYmICFBcnJheS5pc0FycmF5KGRzdCkpIHtcbiAgICBzcmMuZm9yRWFjaCgocykgPT4gYXNzaWduV2l0aERlcHRoKGRzdCwgcywgY29uZmlnMikpO1xuICAgIHJldHVybiBkc3Q7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzcmMpICYmIEFycmF5LmlzQXJyYXkoZHN0KSkge1xuICAgIHNyYy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBpZiAoIWRzdC5pbmNsdWRlcyhzKSkge1xuICAgICAgICBkc3QucHVzaChzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZHN0O1xuICB9XG4gIGlmIChkc3QgPT09IHZvaWQgMCB8fCBkZXB0aCA8PSAwKSB7XG4gICAgaWYgKGRzdCAhPT0gdm9pZCAwICYmIGRzdCAhPT0gbnVsbCAmJiB0eXBlb2YgZHN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBzcmMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGRzdCwgc3JjKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHNyYztcbiAgICB9XG4gIH1cbiAgaWYgKHNyYyAhPT0gdm9pZCAwICYmIHR5cGVvZiBkc3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHNyYyA9PT0gXCJvYmplY3RcIikge1xuICAgIE9iamVjdC5rZXlzKHNyYykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHNyY1trZXldID09PSBcIm9iamVjdFwiICYmIChkc3Rba2V5XSA9PT0gdm9pZCAwIHx8IHR5cGVvZiBkc3Rba2V5XSA9PT0gXCJvYmplY3RcIikpIHtcbiAgICAgICAgaWYgKGRzdFtrZXldID09PSB2b2lkIDApIHtcbiAgICAgICAgICBkc3Rba2V5XSA9IEFycmF5LmlzQXJyYXkoc3JjW2tleV0pID8gW10gOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBkc3Rba2V5XSA9IGFzc2lnbldpdGhEZXB0aChkc3Rba2V5XSwgc3JjW2tleV0sIHsgZGVwdGg6IGRlcHRoIC0gMSwgY2xvYmJlciB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY2xvYmJlciB8fCB0eXBlb2YgZHN0W2tleV0gIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHNyY1trZXldICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGRzdFtrZXldID0gc3JjW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGRzdDtcbn07XG5jb25zdCBhc3NpZ25XaXRoRGVwdGgkMSA9IGFzc2lnbldpdGhEZXB0aDtcbmNvbnN0IGRlZmF1bHRDb25maWcgPSBPYmplY3QuZnJlZXplKGRlZmF1bHRDb25maWckMSk7XG5sZXQgc2l0ZUNvbmZpZyA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBkZWZhdWx0Q29uZmlnKTtcbmxldCBjb25maWdGcm9tSW5pdGlhbGl6ZTtcbmxldCBkaXJlY3RpdmVzID0gW107XG5sZXQgY3VycmVudENvbmZpZyA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBkZWZhdWx0Q29uZmlnKTtcbmNvbnN0IHVwZGF0ZUN1cnJlbnRDb25maWcgPSAoc2l0ZUNmZywgX2RpcmVjdGl2ZXMpID0+IHtcbiAgbGV0IGNmZyA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBzaXRlQ2ZnKTtcbiAgbGV0IHN1bU9mRGlyZWN0aXZlcyA9IHt9O1xuICBmb3IgKGNvbnN0IGQgb2YgX2RpcmVjdGl2ZXMpIHtcbiAgICBzYW5pdGl6ZShkKTtcbiAgICBzdW1PZkRpcmVjdGl2ZXMgPSBhc3NpZ25XaXRoRGVwdGgkMShzdW1PZkRpcmVjdGl2ZXMsIGQpO1xuICB9XG4gIGNmZyA9IGFzc2lnbldpdGhEZXB0aCQxKGNmZywgc3VtT2ZEaXJlY3RpdmVzKTtcbiAgaWYgKHN1bU9mRGlyZWN0aXZlcy50aGVtZSAmJiBzdW1PZkRpcmVjdGl2ZXMudGhlbWUgaW4gdGhlbWUpIHtcbiAgICBjb25zdCB0bXBDb25maWdGcm9tSW5pdGlhbGl6ZSA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBjb25maWdGcm9tSW5pdGlhbGl6ZSk7XG4gICAgY29uc3QgdGhlbWVWYXJpYWJsZXMgPSBhc3NpZ25XaXRoRGVwdGgkMShcbiAgICAgIHRtcENvbmZpZ0Zyb21Jbml0aWFsaXplLnRoZW1lVmFyaWFibGVzIHx8IHt9LFxuICAgICAgc3VtT2ZEaXJlY3RpdmVzLnRoZW1lVmFyaWFibGVzXG4gICAgKTtcbiAgICBpZiAoY2ZnLnRoZW1lICYmIGNmZy50aGVtZSBpbiB0aGVtZSkge1xuICAgICAgY2ZnLnRoZW1lVmFyaWFibGVzID0gdGhlbWVbY2ZnLnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyh0aGVtZVZhcmlhYmxlcyk7XG4gICAgfVxuICB9XG4gIGN1cnJlbnRDb25maWcgPSBjZmc7XG4gIGNoZWNrQ29uZmlnKGN1cnJlbnRDb25maWcpO1xuICByZXR1cm4gY3VycmVudENvbmZpZztcbn07XG5jb25zdCBzZXRTaXRlQ29uZmlnID0gKGNvbmYpID0+IHtcbiAgc2l0ZUNvbmZpZyA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBkZWZhdWx0Q29uZmlnKTtcbiAgc2l0ZUNvbmZpZyA9IGFzc2lnbldpdGhEZXB0aCQxKHNpdGVDb25maWcsIGNvbmYpO1xuICBpZiAoY29uZi50aGVtZSAmJiB0aGVtZVtjb25mLnRoZW1lXSkge1xuICAgIHNpdGVDb25maWcudGhlbWVWYXJpYWJsZXMgPSB0aGVtZVtjb25mLnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyhjb25mLnRoZW1lVmFyaWFibGVzKTtcbiAgfVxuICB1cGRhdGVDdXJyZW50Q29uZmlnKHNpdGVDb25maWcsIGRpcmVjdGl2ZXMpO1xuICByZXR1cm4gc2l0ZUNvbmZpZztcbn07XG5jb25zdCBzYXZlQ29uZmlnRnJvbUluaXRpYWxpemUgPSAoY29uZikgPT4ge1xuICBjb25maWdGcm9tSW5pdGlhbGl6ZSA9IGFzc2lnbldpdGhEZXB0aCQxKHt9LCBjb25mKTtcbn07XG5jb25zdCB1cGRhdGVTaXRlQ29uZmlnID0gKGNvbmYpID0+IHtcbiAgc2l0ZUNvbmZpZyA9IGFzc2lnbldpdGhEZXB0aCQxKHNpdGVDb25maWcsIGNvbmYpO1xuICB1cGRhdGVDdXJyZW50Q29uZmlnKHNpdGVDb25maWcsIGRpcmVjdGl2ZXMpO1xuICByZXR1cm4gc2l0ZUNvbmZpZztcbn07XG5jb25zdCBnZXRTaXRlQ29uZmlnID0gKCkgPT4ge1xuICByZXR1cm4gYXNzaWduV2l0aERlcHRoJDEoe30sIHNpdGVDb25maWcpO1xufTtcbmNvbnN0IHNldENvbmZpZyA9IChjb25mKSA9PiB7XG4gIGNoZWNrQ29uZmlnKGNvbmYpO1xuICBhc3NpZ25XaXRoRGVwdGgkMShjdXJyZW50Q29uZmlnLCBjb25mKTtcbiAgcmV0dXJuIGdldENvbmZpZyQxKCk7XG59O1xuY29uc3QgZ2V0Q29uZmlnJDEgPSAoKSA9PiB7XG4gIHJldHVybiBhc3NpZ25XaXRoRGVwdGgkMSh7fSwgY3VycmVudENvbmZpZyk7XG59O1xuY29uc3Qgc2FuaXRpemUgPSAob3B0aW9ucykgPT4ge1xuICBbXCJzZWN1cmVcIiwgLi4uc2l0ZUNvbmZpZy5zZWN1cmUgPz8gW11dLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChvcHRpb25zW2tleV0gIT09IHZvaWQgMCkge1xuICAgICAgbG9nJDEuZGVidWcoYERlbmllZCBhdHRlbXB0IHRvIG1vZGlmeSBhIHNlY3VyZSBrZXkgJHtrZXl9YCwgb3B0aW9uc1trZXldKTtcbiAgICAgIGRlbGV0ZSBvcHRpb25zW2tleV07XG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKGtleS5pbmRleE9mKFwiX19cIikgPT09IDApIHtcbiAgICAgIGRlbGV0ZSBvcHRpb25zW2tleV07XG4gICAgfVxuICB9KTtcbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zW2tleV0gPT09IFwic3RyaW5nXCIgJiYgKG9wdGlvbnNba2V5XS5pbmNsdWRlcyhcIjxcIikgfHwgb3B0aW9uc1trZXldLmluY2x1ZGVzKFwiPlwiKSB8fCBvcHRpb25zW2tleV0uaW5jbHVkZXMoXCJ1cmwoZGF0YTpcIikpKSB7XG4gICAgICBkZWxldGUgb3B0aW9uc1trZXldO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnNba2V5XSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgc2FuaXRpemUob3B0aW9uc1trZXldKTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IGFkZERpcmVjdGl2ZSA9IChkaXJlY3RpdmUyKSA9PiB7XG4gIGlmIChkaXJlY3RpdmUyLmZvbnRGYW1pbHkpIHtcbiAgICBpZiAoIWRpcmVjdGl2ZTIudGhlbWVWYXJpYWJsZXMpIHtcbiAgICAgIGRpcmVjdGl2ZTIudGhlbWVWYXJpYWJsZXMgPSB7IGZvbnRGYW1pbHk6IGRpcmVjdGl2ZTIuZm9udEZhbWlseSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWRpcmVjdGl2ZTIudGhlbWVWYXJpYWJsZXMuZm9udEZhbWlseSkge1xuICAgICAgICBkaXJlY3RpdmUyLnRoZW1lVmFyaWFibGVzID0geyBmb250RmFtaWx5OiBkaXJlY3RpdmUyLmZvbnRGYW1pbHkgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZGlyZWN0aXZlcy5wdXNoKGRpcmVjdGl2ZTIpO1xuICB1cGRhdGVDdXJyZW50Q29uZmlnKHNpdGVDb25maWcsIGRpcmVjdGl2ZXMpO1xufTtcbmNvbnN0IHJlc2V0ID0gKGNvbmZpZzIgPSBzaXRlQ29uZmlnKSA9PiB7XG4gIGRpcmVjdGl2ZXMgPSBbXTtcbiAgdXBkYXRlQ3VycmVudENvbmZpZyhjb25maWcyLCBkaXJlY3RpdmVzKTtcbn07XG52YXIgQ29uZmlnV2FybmluZyA9IC8qIEBfX1BVUkVfXyAqLyAoKENvbmZpZ1dhcm5pbmcyKSA9PiB7XG4gIENvbmZpZ1dhcm5pbmcyW1wiTEFaWV9MT0FEX0RFUFJFQ0FURURcIl0gPSBcIlRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbGF6eUxvYWRlZERpYWdyYW1zIGFuZCBsb2FkRXh0ZXJuYWxEaWFncmFtc0F0U3RhcnR1cCBhcmUgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSByZWdpc3RlckV4dGVybmFsRGlhZ3JhbXMgaW5zdGVhZC5cIjtcbiAgcmV0dXJuIENvbmZpZ1dhcm5pbmcyO1xufSkoQ29uZmlnV2FybmluZyB8fCB7fSk7XG5jb25zdCBpc3N1ZWRXYXJuaW5ncyA9IHt9O1xuY29uc3QgaXNzdWVXYXJuaW5nID0gKHdhcm5pbmcpID0+IHtcbiAgaWYgKGlzc3VlZFdhcm5pbmdzW3dhcm5pbmddKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZyQxLndhcm4oQ29uZmlnV2FybmluZ1t3YXJuaW5nXSk7XG4gIGlzc3VlZFdhcm5pbmdzW3dhcm5pbmddID0gdHJ1ZTtcbn07XG5jb25zdCBjaGVja0NvbmZpZyA9IChjb25maWcyKSA9PiB7XG4gIGlmICghY29uZmlnMikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoY29uZmlnMi5sYXp5TG9hZGVkRGlhZ3JhbXMgfHwgY29uZmlnMi5sb2FkRXh0ZXJuYWxEaWFncmFtc0F0U3RhcnR1cCkge1xuICAgIGlzc3VlV2FybmluZyhcIkxBWllfTE9BRF9ERVBSRUNBVEVEXCIpO1xuICB9XG59O1xuY29uc3QgZDNBdHRycyA9IGZ1bmN0aW9uKGQzRWxlbSwgYXR0cnMpIHtcbiAgZm9yIChsZXQgYXR0ciBvZiBhdHRycykge1xuICAgIGQzRWxlbS5hdHRyKGF0dHJbMF0sIGF0dHJbMV0pO1xuICB9XG59O1xuY29uc3QgY2FsY3VsYXRlU3ZnU2l6ZUF0dHJzID0gZnVuY3Rpb24oaGVpZ2h0LCB3aWR0aCwgdXNlTWF4V2lkdGgpIHtcbiAgbGV0IGF0dHJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgaWYgKHVzZU1heFdpZHRoKSB7XG4gICAgYXR0cnMuc2V0KFwid2lkdGhcIiwgXCIxMDAlXCIpO1xuICAgIGF0dHJzLnNldChcInN0eWxlXCIsIGBtYXgtd2lkdGg6ICR7d2lkdGh9cHg7YCk7XG4gIH0gZWxzZSB7XG4gICAgYXR0cnMuc2V0KFwiaGVpZ2h0XCIsIGhlaWdodCk7XG4gICAgYXR0cnMuc2V0KFwid2lkdGhcIiwgd2lkdGgpO1xuICB9XG4gIHJldHVybiBhdHRycztcbn07XG5jb25zdCBjb25maWd1cmVTdmdTaXplID0gZnVuY3Rpb24oc3ZnRWxlbSwgaGVpZ2h0LCB3aWR0aCwgdXNlTWF4V2lkdGgpIHtcbiAgY29uc3QgYXR0cnMgPSBjYWxjdWxhdGVTdmdTaXplQXR0cnMoaGVpZ2h0LCB3aWR0aCwgdXNlTWF4V2lkdGgpO1xuICBkM0F0dHJzKHN2Z0VsZW0sIGF0dHJzKTtcbn07XG5jb25zdCBzZXR1cEdyYXBoVmlld2JveCQxID0gZnVuY3Rpb24oZ3JhcGgsIHN2Z0VsZW0sIHBhZGRpbmcsIHVzZU1heFdpZHRoKSB7XG4gIGNvbnN0IHN2Z0JvdW5kcyA9IHN2Z0VsZW0ubm9kZSgpLmdldEJCb3goKTtcbiAgY29uc3Qgc1dpZHRoID0gc3ZnQm91bmRzLndpZHRoO1xuICBjb25zdCBzSGVpZ2h0ID0gc3ZnQm91bmRzLmhlaWdodDtcbiAgbG9nJDEuaW5mbyhgU1ZHIGJvdW5kczogJHtzV2lkdGh9eCR7c0hlaWdodH1gLCBzdmdCb3VuZHMpO1xuICBsZXQgd2lkdGggPSAwO1xuICBsZXQgaGVpZ2h0ID0gMDtcbiAgbG9nJDEuaW5mbyhgR3JhcGggYm91bmRzOiAke3dpZHRofXgke2hlaWdodH1gLCBncmFwaCk7XG4gIHdpZHRoID0gc1dpZHRoICsgcGFkZGluZyAqIDI7XG4gIGhlaWdodCA9IHNIZWlnaHQgKyBwYWRkaW5nICogMjtcbiAgbG9nJDEuaW5mbyhgQ2FsY3VsYXRlZCBib3VuZHM6ICR7d2lkdGh9eCR7aGVpZ2h0fWApO1xuICBjb25maWd1cmVTdmdTaXplKHN2Z0VsZW0sIGhlaWdodCwgd2lkdGgsIHVzZU1heFdpZHRoKTtcbiAgY29uc3QgdkJveCA9IGAke3N2Z0JvdW5kcy54IC0gcGFkZGluZ30gJHtzdmdCb3VuZHMueSAtIHBhZGRpbmd9ICR7c3ZnQm91bmRzLndpZHRoICsgMiAqIHBhZGRpbmd9ICR7c3ZnQm91bmRzLmhlaWdodCArIDIgKiBwYWRkaW5nfWA7XG4gIHN2Z0VsZW0uYXR0cihcInZpZXdCb3hcIiwgdkJveCk7XG59O1xuY29uc3QgdGhlbWVzID0ge307XG5jb25zdCBnZXRTdHlsZXMkMSA9ICh0eXBlMiwgdXNlclN0eWxlcywgb3B0aW9ucykgPT4ge1xuICBsZXQgZGlhZ3JhbVN0eWxlcyA9IFwiXCI7XG4gIGlmICh0eXBlMiBpbiB0aGVtZXMgJiYgdGhlbWVzW3R5cGUyXSkge1xuICAgIGRpYWdyYW1TdHlsZXMgPSB0aGVtZXNbdHlwZTJdKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGxvZyQxLndhcm4oYE5vIHRoZW1lIGZvdW5kIGZvciAke3R5cGUyfWApO1xuICB9XG4gIHJldHVybiBgICYge1xuICAgIGZvbnQtZmFtaWx5OiAke29wdGlvbnMuZm9udEZhbWlseX07XG4gICAgZm9udC1zaXplOiAke29wdGlvbnMuZm9udFNpemV9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy50ZXh0Q29sb3J9XG4gIH1cblxuICAvKiBDbGFzc2VzIGNvbW1vbiBmb3IgbXVsdGlwbGUgZGlhZ3JhbXMgKi9cblxuICAmIC5lcnJvci1pY29uIHtcbiAgICBmaWxsOiAke29wdGlvbnMuZXJyb3JCa2dDb2xvcn07XG4gIH1cbiAgJiAuZXJyb3ItdGV4dCB7XG4gICAgZmlsbDogJHtvcHRpb25zLmVycm9yVGV4dENvbG9yfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5lcnJvclRleHRDb2xvcn07XG4gIH1cblxuICAmIC5lZGdlLXRoaWNrbmVzcy1ub3JtYWwge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gICYgLmVkZ2UtdGhpY2tuZXNzLXRoaWNrIHtcbiAgICBzdHJva2Utd2lkdGg6IDMuNXB4XG4gIH1cbiAgJiAuZWRnZS1wYXR0ZXJuLXNvbGlkIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwO1xuICB9XG5cbiAgJiAuZWRnZS1wYXR0ZXJuLWRhc2hlZHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAzO1xuICB9XG4gIC5lZGdlLXBhdHRlcm4tZG90dGVkIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAyO1xuICB9XG5cbiAgJiAubWFya2VyIHtcbiAgICBmaWxsOiAke29wdGlvbnMubGluZUNvbG9yfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9O1xuICB9XG4gICYgLm1hcmtlci5jcm9zcyB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfTtcbiAgfVxuXG4gICYgc3ZnIHtcbiAgICBmb250LWZhbWlseTogJHtvcHRpb25zLmZvbnRGYW1pbHl9O1xuICAgIGZvbnQtc2l6ZTogJHtvcHRpb25zLmZvbnRTaXplfTtcbiAgfVxuXG4gICR7ZGlhZ3JhbVN0eWxlc31cblxuICAke3VzZXJTdHlsZXN9XG5gO1xufTtcbmNvbnN0IGFkZFN0eWxlc0ZvckRpYWdyYW0gPSAodHlwZTIsIGRpYWdyYW1UaGVtZSkgPT4ge1xuICB0aGVtZXNbdHlwZTJdID0gZGlhZ3JhbVRoZW1lO1xufTtcbmNvbnN0IGdldFN0eWxlcyQyID0gZ2V0U3R5bGVzJDE7XG5sZXQgdGl0bGUgPSBcIlwiO1xubGV0IGRpYWdyYW1UaXRsZSA9IFwiXCI7XG5sZXQgZGVzY3JpcHRpb24gPSBcIlwiO1xuY29uc3Qgc2FuaXRpemVUZXh0JDEgPSAodHh0KSA9PiBzYW5pdGl6ZVRleHQkMih0eHQsIGdldENvbmZpZyQxKCkpO1xuY29uc3QgY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgdGl0bGUgPSBcIlwiO1xuICBkZXNjcmlwdGlvbiA9IFwiXCI7XG4gIGRpYWdyYW1UaXRsZSA9IFwiXCI7XG59O1xuY29uc3Qgc2V0QWNjVGl0bGUgPSBmdW5jdGlvbih0eHQpIHtcbiAgdGl0bGUgPSBzYW5pdGl6ZVRleHQkMSh0eHQpLnJlcGxhY2UoL15cXHMrL2csIFwiXCIpO1xufTtcbmNvbnN0IGdldEFjY1RpdGxlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aXRsZSB8fCBkaWFncmFtVGl0bGU7XG59O1xuY29uc3Qgc2V0QWNjRGVzY3JpcHRpb24gPSBmdW5jdGlvbih0eHQpIHtcbiAgZGVzY3JpcHRpb24gPSBzYW5pdGl6ZVRleHQkMSh0eHQpLnJlcGxhY2UoL1xcblxccysvZywgXCJcXG5cIik7XG59O1xuY29uc3QgZ2V0QWNjRGVzY3JpcHRpb24gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGRlc2NyaXB0aW9uO1xufTtcbmNvbnN0IHNldERpYWdyYW1UaXRsZSA9IGZ1bmN0aW9uKHR4dCkge1xuICBkaWFncmFtVGl0bGUgPSBzYW5pdGl6ZVRleHQkMSh0eHQpO1xufTtcbmNvbnN0IGdldERpYWdyYW1UaXRsZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZGlhZ3JhbVRpdGxlO1xufTtcbmNvbnN0IGNvbW1vbkRiID0ge1xuICBnZXRBY2NUaXRsZSxcbiAgc2V0QWNjVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZSxcbiAgc2V0RGlhZ3JhbVRpdGxlLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGNsZWFyXG59O1xuY29uc3QgY29tbW9uRGIkMSA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIGNsZWFyLFxuICBkZWZhdWx0OiBjb21tb25EYixcbiAgZ2V0QWNjRGVzY3JpcHRpb24sXG4gIGdldEFjY1RpdGxlLFxuICBnZXREaWFncmFtVGl0bGUsXG4gIHNldEFjY0Rlc2NyaXB0aW9uLFxuICBzZXRBY2NUaXRsZSxcbiAgc2V0RGlhZ3JhbVRpdGxlXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6IFwiTW9kdWxlXCIgfSkpO1xubGV0IGN1cnJlbnREaXJlY3RpdmUgPSB7fTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlJDEgPSBmdW5jdGlvbihwLCBzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUyKSB7XG4gIGxvZyQxLmRlYnVnKFwicGFyc2VEaXJlY3RpdmUgaXMgYmVpbmcgY2FsbGVkXCIsIHN0YXRlbWVudCwgY29udGV4dCwgdHlwZTIpO1xuICB0cnkge1xuICAgIGlmIChzdGF0ZW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRyaW0oKTtcbiAgICAgIHN3aXRjaCAoY29udGV4dCkge1xuICAgICAgICBjYXNlIFwib3Blbl9kaXJlY3RpdmVcIjpcbiAgICAgICAgICBjdXJyZW50RGlyZWN0aXZlID0ge307XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ0eXBlX2RpcmVjdGl2ZVwiOlxuICAgICAgICAgIGlmICghY3VycmVudERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudERpcmVjdGl2ZSBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnREaXJlY3RpdmUudHlwZSA9IHN0YXRlbWVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXJnX2RpcmVjdGl2ZVwiOlxuICAgICAgICAgIGlmICghY3VycmVudERpcmVjdGl2ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY3VycmVudERpcmVjdGl2ZSBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnREaXJlY3RpdmUuYXJncyA9IEpTT04ucGFyc2Uoc3RhdGVtZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNsb3NlX2RpcmVjdGl2ZVwiOlxuICAgICAgICAgIGhhbmRsZURpcmVjdGl2ZShwLCBjdXJyZW50RGlyZWN0aXZlLCB0eXBlMik7XG4gICAgICAgICAgY3VycmVudERpcmVjdGl2ZSA9IHZvaWQgMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nJDEuZXJyb3IoXG4gICAgICBgRXJyb3Igd2hpbGUgcmVuZGVyaW5nIHNlcXVlbmNlRGlhZ3JhbSBkaXJlY3RpdmU6ICR7c3RhdGVtZW50fSBqaXNvbiBjb250ZXh0OiAke2NvbnRleHR9YFxuICAgICk7XG4gICAgbG9nJDEuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gIH1cbn07XG5jb25zdCBoYW5kbGVEaXJlY3RpdmUgPSBmdW5jdGlvbihwLCBkaXJlY3RpdmUyLCB0eXBlMikge1xuICBsb2ckMS5pbmZvKGBEaXJlY3RpdmUgdHlwZT0ke2RpcmVjdGl2ZTIudHlwZX0gd2l0aCBhcmdzOmAsIGRpcmVjdGl2ZTIuYXJncyk7XG4gIHN3aXRjaCAoZGlyZWN0aXZlMi50eXBlKSB7XG4gICAgY2FzZSBcImluaXRcIjpcbiAgICBjYXNlIFwiaW5pdGlhbGl6ZVwiOiB7XG4gICAgICBbXCJjb25maWdcIl0uZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICBpZiAoZGlyZWN0aXZlMi5hcmdzW3Byb3BdICE9PSB2b2lkIDApIHtcbiAgICAgICAgICBpZiAodHlwZTIgPT09IFwiZmxvd2NoYXJ0LXYyXCIpIHtcbiAgICAgICAgICAgIHR5cGUyID0gXCJmbG93Y2hhcnRcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGlyZWN0aXZlMi5hcmdzW3R5cGUyXSA9IGRpcmVjdGl2ZTIuYXJnc1twcm9wXTtcbiAgICAgICAgICBkZWxldGUgZGlyZWN0aXZlMi5hcmdzW3Byb3BdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxvZyQxLmluZm8oXCJzYW5pdGl6ZSBpbiBoYW5kbGVEaXJlY3RpdmVcIiwgZGlyZWN0aXZlMi5hcmdzKTtcbiAgICAgIGRpcmVjdGl2ZVNhbml0aXplcihkaXJlY3RpdmUyLmFyZ3MpO1xuICAgICAgbG9nJDEuaW5mbyhcInNhbml0aXplIGluIGhhbmRsZURpcmVjdGl2ZSAoZG9uZSlcIiwgZGlyZWN0aXZlMi5hcmdzKTtcbiAgICAgIGFkZERpcmVjdGl2ZShkaXJlY3RpdmUyLmFyZ3MpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJ3cmFwXCI6XG4gICAgY2FzZSBcIm5vd3JhcFwiOlxuICAgICAgaWYgKHAgJiYgcFtcInNldFdyYXBcIl0pIHtcbiAgICAgICAgcC5zZXRXcmFwKGRpcmVjdGl2ZTIudHlwZSA9PT0gXCJ3cmFwXCIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInRoZW1lQ3NzXCI6XG4gICAgICBsb2ckMS53YXJuKFwidGhlbWVDc3MgZW5jb3VudGVyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbG9nJDEud2FybihcbiAgICAgICAgYFVuaGFuZGxlZCBkaXJlY3RpdmU6IHNvdXJjZTogJyUleyR7ZGlyZWN0aXZlMi50eXBlfTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBkaXJlY3RpdmUyLmFyZ3MgPyBkaXJlY3RpdmUyLmFyZ3MgOiB7fVxuICAgICAgICApfX0lJWAsXG4gICAgICAgIGRpcmVjdGl2ZTJcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgfVxufTtcbmNvbnN0IGxvZyA9IGxvZyQxO1xuY29uc3Qgc2V0TG9nTGV2ZWwgPSBzZXRMb2dMZXZlbCQxO1xuY29uc3QgZ2V0Q29uZmlnID0gZ2V0Q29uZmlnJDE7XG5jb25zdCBzYW5pdGl6ZVRleHQgPSAodGV4dCkgPT4gc2FuaXRpemVUZXh0JDIodGV4dCwgZ2V0Q29uZmlnKCkpO1xuY29uc3Qgc2V0dXBHcmFwaFZpZXdib3ggPSBzZXR1cEdyYXBoVmlld2JveCQxO1xuY29uc3QgZ2V0Q29tbW9uRGIgPSAoKSA9PiB7XG4gIHJldHVybiBjb21tb25EYiQxO1xufTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gKHAsIHN0YXRlbWVudCwgY29udGV4dCwgdHlwZTIpID0+IHBhcnNlRGlyZWN0aXZlJDEocCwgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlMik7XG5jb25zdCBkaWFncmFtcyA9IHt9O1xuY29uc3QgcmVnaXN0ZXJEaWFncmFtID0gKGlkMiwgZGlhZ3JhbTIsIGRldGVjdG9yMikgPT4ge1xuICBpZiAoZGlhZ3JhbXNbaWQyXSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGlhZ3JhbSAke2lkMn0gYWxyZWFkeSByZWdpc3RlcmVkLmApO1xuICB9XG4gIGRpYWdyYW1zW2lkMl0gPSBkaWFncmFtMjtcbiAgaWYgKGRldGVjdG9yMikge1xuICAgIGFkZERldGVjdG9yKGlkMiwgZGV0ZWN0b3IyKTtcbiAgfVxuICBhZGRTdHlsZXNGb3JEaWFncmFtKGlkMiwgZGlhZ3JhbTIuc3R5bGVzKTtcbiAgaWYgKGRpYWdyYW0yLmluamVjdFV0aWxzKSB7XG4gICAgZGlhZ3JhbTIuaW5qZWN0VXRpbHMoXG4gICAgICBsb2csXG4gICAgICBzZXRMb2dMZXZlbCxcbiAgICAgIGdldENvbmZpZyxcbiAgICAgIHNhbml0aXplVGV4dCxcbiAgICAgIHNldHVwR3JhcGhWaWV3Ym94LFxuICAgICAgZ2V0Q29tbW9uRGIoKSxcbiAgICAgIHBhcnNlRGlyZWN0aXZlXG4gICAgKTtcbiAgfVxufTtcbmNvbnN0IGdldERpYWdyYW0gPSAobmFtZSkgPT4ge1xuICBpZiAobmFtZSBpbiBkaWFncmFtcykge1xuICAgIHJldHVybiBkaWFncmFtc1tuYW1lXTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYERpYWdyYW0gJHtuYW1lfSBub3QgZm91bmQuYCk7XG59O1xuY2xhc3MgVW5rbm93bkRpYWdyYW1FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiVW5rbm93bkRpYWdyYW1FcnJvclwiO1xuICB9XG59XG5jb25zdCBkaXJlY3RpdmUkMSA9IC8lezJ9e1xccyooPzooXFx3KylcXHMqOnwoXFx3KykpXFxzKig/OihcXHcrKXwoKD86KD8hfSV7Mn0pLnxcXHI/XFxuKSopKT9cXHMqKD86fSV7Mn0pPy9naTtcbmNvbnN0IGFueUNvbW1lbnQgPSAvXFxzKiUlLipcXG4vZ207XG5jb25zdCBkZXRlY3RvcnMgPSB7fTtcbmNvbnN0IGRldGVjdFR5cGUgPSBmdW5jdGlvbih0ZXh0LCBjb25maWcyKSB7XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoZnJvbnRNYXR0ZXJSZWdleCwgXCJcIikucmVwbGFjZShkaXJlY3RpdmUkMSwgXCJcIikucmVwbGFjZShhbnlDb21tZW50LCBcIlxcblwiKTtcbiAgZm9yIChjb25zdCBba2V5LCB7IGRldGVjdG9yOiBkZXRlY3RvcjIgfV0gb2YgT2JqZWN0LmVudHJpZXMoZGV0ZWN0b3JzKSkge1xuICAgIGNvbnN0IGRpYWdyYW0yID0gZGV0ZWN0b3IyKHRleHQsIGNvbmZpZzIpO1xuICAgIGlmIChkaWFncmFtMikge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IFVua25vd25EaWFncmFtRXJyb3IoXG4gICAgYE5vIGRpYWdyYW0gdHlwZSBkZXRlY3RlZCBtYXRjaGluZyBnaXZlbiBjb25maWd1cmF0aW9uIGZvciB0ZXh0OiAke3RleHR9YFxuICApO1xufTtcbmNvbnN0IHJlZ2lzdGVyTGF6eUxvYWRlZERpYWdyYW1zID0gKC4uLmRpYWdyYW1zMikgPT4ge1xuICBmb3IgKGNvbnN0IHsgaWQ6IGlkMiwgZGV0ZWN0b3I6IGRldGVjdG9yMiwgbG9hZGVyOiBsb2FkZXIyIH0gb2YgZGlhZ3JhbXMyKSB7XG4gICAgYWRkRGV0ZWN0b3IoaWQyLCBkZXRlY3RvcjIsIGxvYWRlcjIpO1xuICB9XG59O1xuY29uc3QgbG9hZFJlZ2lzdGVyZWREaWFncmFtcyA9IGFzeW5jICgpID0+IHtcbiAgbG9nJDEuZGVidWcoYExvYWRpbmcgcmVnaXN0ZXJlZCBkaWFncmFtc2ApO1xuICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgIE9iamVjdC5lbnRyaWVzKGRldGVjdG9ycykubWFwKGFzeW5jIChba2V5LCB7IGRldGVjdG9yOiBkZXRlY3RvcjIsIGxvYWRlcjogbG9hZGVyMiB9XSkgPT4ge1xuICAgICAgaWYgKGxvYWRlcjIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBnZXREaWFncmFtKGtleSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIsIGlkOiBpZDIgfSA9IGF3YWl0IGxvYWRlcjIoKTtcbiAgICAgICAgICAgIHJlZ2lzdGVyRGlhZ3JhbShpZDIsIGRpYWdyYW0yLCBkZXRlY3RvcjIpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgbG9nJDEuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGV4dGVybmFsIGRpYWdyYW0gd2l0aCBrZXkgJHtrZXl9LiBSZW1vdmluZyBmcm9tIGRldGVjdG9ycy5gKTtcbiAgICAgICAgICAgIGRlbGV0ZSBkZXRlY3RvcnNba2V5XTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBjb25zdCBmYWlsZWQgPSByZXN1bHRzLmZpbHRlcigocmVzdWx0KSA9PiByZXN1bHQuc3RhdHVzID09PSBcInJlamVjdGVkXCIpO1xuICBpZiAoZmFpbGVkLmxlbmd0aCA+IDApIHtcbiAgICBsb2ckMS5lcnJvcihgRmFpbGVkIHRvIGxvYWQgJHtmYWlsZWQubGVuZ3RofSBleHRlcm5hbCBkaWFncmFtc2ApO1xuICAgIGZvciAoY29uc3QgcmVzIG9mIGZhaWxlZCkge1xuICAgICAgbG9nJDEuZXJyb3IocmVzKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCAke2ZhaWxlZC5sZW5ndGh9IGV4dGVybmFsIGRpYWdyYW1zYCk7XG4gIH1cbn07XG5jb25zdCBhZGREZXRlY3RvciA9IChrZXksIGRldGVjdG9yMiwgbG9hZGVyMikgPT4ge1xuICBpZiAoZGV0ZWN0b3JzW2tleV0pIHtcbiAgICBsb2ckMS5lcnJvcihgRGV0ZWN0b3Igd2l0aCBrZXkgJHtrZXl9IGFscmVhZHkgZXhpc3RzYCk7XG4gIH0gZWxzZSB7XG4gICAgZGV0ZWN0b3JzW2tleV0gPSB7IGRldGVjdG9yOiBkZXRlY3RvcjIsIGxvYWRlcjogbG9hZGVyMiB9O1xuICB9XG4gIGxvZyQxLmRlYnVnKGBEZXRlY3RvciB3aXRoIGtleSAke2tleX0gYWRkZWQke2xvYWRlcjIgPyBcIiB3aXRoIGxvYWRlclwiIDogXCJcIn1gKTtcbn07XG5jb25zdCBnZXREaWFncmFtTG9hZGVyID0gKGtleSkgPT4ge1xuICByZXR1cm4gZGV0ZWN0b3JzW2tleV0ubG9hZGVyO1xufTtcbmNvbnN0IFpFUk9fV0lEVEhfU1BBQ0UgPSBcIuKAi1wiO1xuY29uc3QgZDNDdXJ2ZVR5cGVzID0ge1xuICBjdXJ2ZUJhc2lzLFxuICBjdXJ2ZUJhc2lzQ2xvc2VkLFxuICBjdXJ2ZUJhc2lzT3BlbixcbiAgY3VydmVCdW1wWCxcbiAgY3VydmVCdW1wWSxcbiAgY3VydmVCdW5kbGUsXG4gIGN1cnZlQ2FyZGluYWxDbG9zZWQsXG4gIGN1cnZlQ2FyZGluYWxPcGVuLFxuICBjdXJ2ZUNhcmRpbmFsLFxuICBjdXJ2ZUNhdG11bGxSb21DbG9zZWQsXG4gIGN1cnZlQ2F0bXVsbFJvbU9wZW4sXG4gIGN1cnZlQ2F0bXVsbFJvbSxcbiAgY3VydmVMaW5lYXIsXG4gIGN1cnZlTGluZWFyQ2xvc2VkLFxuICBjdXJ2ZU1vbm90b25lWCxcbiAgY3VydmVNb25vdG9uZVksXG4gIGN1cnZlTmF0dXJhbCxcbiAgY3VydmVTdGVwLFxuICBjdXJ2ZVN0ZXBBZnRlcixcbiAgY3VydmVTdGVwQmVmb3JlXG59O1xuY29uc3QgZGlyZWN0aXZlID0gLyV7Mn17XFxzKig/OihcXHcrKVxccyo6fChcXHcrKSlcXHMqKD86KFxcdyspfCgoPzooPyF9JXsyfSkufFxccj9cXG4pKikpP1xccyooPzp9JXsyfSk/L2dpO1xuY29uc3QgZGlyZWN0aXZlV2l0aG91dE9wZW4gPSAvXFxzKig/OihcXHcrKSg/PTopOnwoXFx3KykpXFxzKig/OihcXHcrKXwoKD86KD8hfSV7Mn0pLnxcXHI/XFxuKSopKT9cXHMqKD86fSV7Mn0pPy9naTtcbmNvbnN0IGRldGVjdEluaXQgPSBmdW5jdGlvbih0ZXh0LCBjb25maWcyKSB7XG4gIGNvbnN0IGluaXRzID0gZGV0ZWN0RGlyZWN0aXZlKHRleHQsIC8oPzppbml0XFxiKXwoPzppbml0aWFsaXplXFxiKS8pO1xuICBsZXQgcmVzdWx0cyA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShpbml0cykpIHtcbiAgICBjb25zdCBhcmdzID0gaW5pdHMubWFwKChpbml0MikgPT4gaW5pdDIuYXJncyk7XG4gICAgZGlyZWN0aXZlU2FuaXRpemVyKGFyZ3MpO1xuICAgIHJlc3VsdHMgPSBhc3NpZ25XaXRoRGVwdGgkMShyZXN1bHRzLCBbLi4uYXJnc10pO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdHMgPSBpbml0cy5hcmdzO1xuICB9XG4gIGlmIChyZXN1bHRzKSB7XG4gICAgbGV0IHR5cGUyID0gZGV0ZWN0VHlwZSh0ZXh0LCBjb25maWcyKTtcbiAgICBbXCJjb25maWdcIl0uZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdHNbcHJvcF0gIT09IHZvaWQgMCkge1xuICAgICAgICBpZiAodHlwZTIgPT09IFwiZmxvd2NoYXJ0LXYyXCIpIHtcbiAgICAgICAgICB0eXBlMiA9IFwiZmxvd2NoYXJ0XCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0c1t0eXBlMl0gPSByZXN1bHRzW3Byb3BdO1xuICAgICAgICBkZWxldGUgcmVzdWx0c1twcm9wXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5jb25zdCBkZXRlY3REaXJlY3RpdmUgPSBmdW5jdGlvbih0ZXh0LCB0eXBlMiA9IG51bGwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb21tZW50V2l0aG91dERpcmVjdGl2ZXMgPSBuZXcgUmVnRXhwKFxuICAgICAgYFslXXsyfSg/IVt7XSR7ZGlyZWN0aXZlV2l0aG91dE9wZW4uc291cmNlfSkoPz1bfV1bJV17Mn0pLipcbmAsXG4gICAgICBcImlnXCJcbiAgICApO1xuICAgIHRleHQgPSB0ZXh0LnRyaW0oKS5yZXBsYWNlKGNvbW1lbnRXaXRob3V0RGlyZWN0aXZlcywgXCJcIikucmVwbGFjZSgvJy9nbSwgJ1wiJyk7XG4gICAgbG9nJDEuZGVidWcoXG4gICAgICBgRGV0ZWN0aW5nIGRpYWdyYW0gZGlyZWN0aXZlJHt0eXBlMiAhPT0gbnVsbCA/IFwiIHR5cGU6XCIgKyB0eXBlMiA6IFwiXCJ9IGJhc2VkIG9uIHRoZSB0ZXh0OiR7dGV4dH1gXG4gICAgKTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgd2hpbGUgKChtYXRjaCA9IGRpcmVjdGl2ZS5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKG1hdGNoLmluZGV4ID09PSBkaXJlY3RpdmUubGFzdEluZGV4KSB7XG4gICAgICAgIGRpcmVjdGl2ZS5sYXN0SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaCAmJiAhdHlwZTIgfHwgdHlwZTIgJiYgbWF0Y2hbMV0gJiYgbWF0Y2hbMV0ubWF0Y2godHlwZTIpIHx8IHR5cGUyICYmIG1hdGNoWzJdICYmIG1hdGNoWzJdLm1hdGNoKHR5cGUyKSkge1xuICAgICAgICBjb25zdCB0eXBlMjIgPSBtYXRjaFsxXSA/IG1hdGNoWzFdIDogbWF0Y2hbMl07XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBtYXRjaFszXSA/IG1hdGNoWzNdLnRyaW0oKSA6IG1hdGNoWzRdID8gSlNPTi5wYXJzZShtYXRjaFs0XS50cmltKCkpIDogbnVsbDtcbiAgICAgICAgcmVzdWx0LnB1c2goeyB0eXBlOiB0eXBlMjIsIGFyZ3MgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXN1bHQucHVzaCh7IHR5cGU6IHRleHQsIGFyZ3M6IG51bGwgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQubGVuZ3RoID09PSAxID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxvZyQxLmVycm9yKFxuICAgICAgYEVSUk9SOiAke2Vycm9yLm1lc3NhZ2V9IC0gVW5hYmxlIHRvIHBhcnNlIGRpcmVjdGl2ZVxuICAgICAgJHt0eXBlMiAhPT0gbnVsbCA/IFwiIHR5cGU6XCIgKyB0eXBlMiA6IFwiXCJ9IGJhc2VkIG9uIHRoZSB0ZXh0OiR7dGV4dH1gXG4gICAgKTtcbiAgICByZXR1cm4geyB0eXBlOiBudWxsLCBhcmdzOiBudWxsIH07XG4gIH1cbn07XG5jb25zdCBpc1N1YnN0cmluZ0luQXJyYXkgPSBmdW5jdGlvbihzdHIyLCBhcnIpIHtcbiAgZm9yIChjb25zdCBbaSwgZWxlbWVudF0gb2YgYXJyLmVudHJpZXMoKSkge1xuICAgIGlmIChlbGVtZW50Lm1hdGNoKHN0cjIpKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcbmZ1bmN0aW9uIGludGVycG9sYXRlVG9DdXJ2ZShpbnRlcnBvbGF0ZSwgZGVmYXVsdEN1cnZlKSB7XG4gIGlmICghaW50ZXJwb2xhdGUpIHtcbiAgICByZXR1cm4gZGVmYXVsdEN1cnZlO1xuICB9XG4gIGNvbnN0IGN1cnZlTmFtZSA9IGBjdXJ2ZSR7aW50ZXJwb2xhdGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBpbnRlcnBvbGF0ZS5zbGljZSgxKX1gO1xuICByZXR1cm4gZDNDdXJ2ZVR5cGVzW2N1cnZlTmFtZV0gfHwgZGVmYXVsdEN1cnZlO1xufVxuZnVuY3Rpb24gZm9ybWF0VXJsKGxpbmtTdHIsIGNvbmZpZzIpIHtcbiAgY29uc3QgdXJsID0gbGlua1N0ci50cmltKCk7XG4gIGlmICh1cmwpIHtcbiAgICBpZiAoY29uZmlnMi5zZWN1cml0eUxldmVsICE9PSBcImxvb3NlXCIpIHtcbiAgICAgIHJldHVybiBzYW5pdGl6ZVVybCh1cmwpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG5jb25zdCBydW5GdW5jID0gKGZ1bmN0aW9uTmFtZSwgLi4ucGFyYW1zKSA9PiB7XG4gIGNvbnN0IGFyclBhdGhzID0gZnVuY3Rpb25OYW1lLnNwbGl0KFwiLlwiKTtcbiAgY29uc3QgbGVuID0gYXJyUGF0aHMubGVuZ3RoIC0gMTtcbiAgY29uc3QgZm5OYW1lID0gYXJyUGF0aHNbbGVuXTtcbiAgbGV0IG9iaiA9IHdpbmRvdztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG9iaiA9IG9ialthcnJQYXRoc1tpXV07XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgb2JqW2ZuTmFtZV0oLi4ucGFyYW1zKTtcbn07XG5mdW5jdGlvbiBkaXN0YW5jZShwMSwgcDIpIHtcbiAgcmV0dXJuIHAxICYmIHAyID8gTWF0aC5zcXJ0KE1hdGgucG93KHAyLnggLSBwMS54LCAyKSArIE1hdGgucG93KHAyLnkgLSBwMS55LCAyKSkgOiAwO1xufVxuZnVuY3Rpb24gdHJhdmVyc2VFZGdlKHBvaW50cykge1xuICBsZXQgcHJldlBvaW50O1xuICBsZXQgdG90YWxEaXN0YW5jZSA9IDA7XG4gIHBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgIHRvdGFsRGlzdGFuY2UgKz0gZGlzdGFuY2UocG9pbnQsIHByZXZQb2ludCk7XG4gICAgcHJldlBvaW50ID0gcG9pbnQ7XG4gIH0pO1xuICBsZXQgcmVtYWluaW5nRGlzdGFuY2UgPSB0b3RhbERpc3RhbmNlIC8gMjtcbiAgbGV0IGNlbnRlciA9IHZvaWQgMDtcbiAgcHJldlBvaW50ID0gdm9pZCAwO1xuICBwb2ludHMuZm9yRWFjaCgocG9pbnQpID0+IHtcbiAgICBpZiAocHJldlBvaW50ICYmICFjZW50ZXIpIHtcbiAgICAgIGNvbnN0IHZlY3RvckRpc3RhbmNlID0gZGlzdGFuY2UocG9pbnQsIHByZXZQb2ludCk7XG4gICAgICBpZiAodmVjdG9yRGlzdGFuY2UgPCByZW1haW5pbmdEaXN0YW5jZSkge1xuICAgICAgICByZW1haW5pbmdEaXN0YW5jZSAtPSB2ZWN0b3JEaXN0YW5jZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlUmF0aW8gPSByZW1haW5pbmdEaXN0YW5jZSAvIHZlY3RvckRpc3RhbmNlO1xuICAgICAgICBpZiAoZGlzdGFuY2VSYXRpbyA8PSAwKSB7XG4gICAgICAgICAgY2VudGVyID0gcHJldlBvaW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZVJhdGlvID49IDEpIHtcbiAgICAgICAgICBjZW50ZXIgPSB7IHg6IHBvaW50LngsIHk6IHBvaW50LnkgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzdGFuY2VSYXRpbyA+IDAgJiYgZGlzdGFuY2VSYXRpbyA8IDEpIHtcbiAgICAgICAgICBjZW50ZXIgPSB7XG4gICAgICAgICAgICB4OiAoMSAtIGRpc3RhbmNlUmF0aW8pICogcHJldlBvaW50LnggKyBkaXN0YW5jZVJhdGlvICogcG9pbnQueCxcbiAgICAgICAgICAgIHk6ICgxIC0gZGlzdGFuY2VSYXRpbykgKiBwcmV2UG9pbnQueSArIGRpc3RhbmNlUmF0aW8gKiBwb2ludC55XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBwcmV2UG9pbnQgPSBwb2ludDtcbiAgfSk7XG4gIHJldHVybiBjZW50ZXI7XG59XG5mdW5jdGlvbiBjYWxjTGFiZWxQb3NpdGlvbihwb2ludHMpIHtcbiAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcG9pbnRzWzBdO1xuICB9XG4gIHJldHVybiB0cmF2ZXJzZUVkZ2UocG9pbnRzKTtcbn1cbmNvbnN0IGNhbGNDYXJkaW5hbGl0eVBvc2l0aW9uID0gKGlzUmVsYXRpb25UeXBlUHJlc2VudCwgcG9pbnRzLCBpbml0aWFsUG9zaXRpb24pID0+IHtcbiAgbGV0IHByZXZQb2ludDtcbiAgbG9nJDEuaW5mbyhgb3VyIHBvaW50cyAke0pTT04uc3RyaW5naWZ5KHBvaW50cyl9YCk7XG4gIGlmIChwb2ludHNbMF0gIT09IGluaXRpYWxQb3NpdGlvbikge1xuICAgIHBvaW50cyA9IHBvaW50cy5yZXZlcnNlKCk7XG4gIH1cbiAgY29uc3QgZGlzdGFuY2VUb0NhcmRpbmFsaXR5UG9pbnQgPSAyNTtcbiAgbGV0IHJlbWFpbmluZ0Rpc3RhbmNlID0gZGlzdGFuY2VUb0NhcmRpbmFsaXR5UG9pbnQ7XG4gIGxldCBjZW50ZXI7XG4gIHByZXZQb2ludCA9IHZvaWQgMDtcbiAgcG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgaWYgKHByZXZQb2ludCAmJiAhY2VudGVyKSB7XG4gICAgICBjb25zdCB2ZWN0b3JEaXN0YW5jZSA9IGRpc3RhbmNlKHBvaW50LCBwcmV2UG9pbnQpO1xuICAgICAgaWYgKHZlY3RvckRpc3RhbmNlIDwgcmVtYWluaW5nRGlzdGFuY2UpIHtcbiAgICAgICAgcmVtYWluaW5nRGlzdGFuY2UgLT0gdmVjdG9yRGlzdGFuY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkaXN0YW5jZVJhdGlvID0gcmVtYWluaW5nRGlzdGFuY2UgLyB2ZWN0b3JEaXN0YW5jZTtcbiAgICAgICAgaWYgKGRpc3RhbmNlUmF0aW8gPD0gMCkge1xuICAgICAgICAgIGNlbnRlciA9IHByZXZQb2ludDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzdGFuY2VSYXRpbyA+PSAxKSB7XG4gICAgICAgICAgY2VudGVyID0geyB4OiBwb2ludC54LCB5OiBwb2ludC55IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlUmF0aW8gPiAwICYmIGRpc3RhbmNlUmF0aW8gPCAxKSB7XG4gICAgICAgICAgY2VudGVyID0ge1xuICAgICAgICAgICAgeDogKDEgLSBkaXN0YW5jZVJhdGlvKSAqIHByZXZQb2ludC54ICsgZGlzdGFuY2VSYXRpbyAqIHBvaW50LngsXG4gICAgICAgICAgICB5OiAoMSAtIGRpc3RhbmNlUmF0aW8pICogcHJldlBvaW50LnkgKyBkaXN0YW5jZVJhdGlvICogcG9pbnQueVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcHJldlBvaW50ID0gcG9pbnQ7XG4gIH0pO1xuICBjb25zdCBkID0gaXNSZWxhdGlvblR5cGVQcmVzZW50ID8gMTAgOiA1O1xuICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIocG9pbnRzWzBdLnkgLSBjZW50ZXIueSwgcG9pbnRzWzBdLnggLSBjZW50ZXIueCk7XG4gIGNvbnN0IGNhcmRpbmFsaXR5UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcbiAgY2FyZGluYWxpdHlQb3NpdGlvbi54ID0gTWF0aC5zaW4oYW5nbGUpICogZCArIChwb2ludHNbMF0ueCArIGNlbnRlci54KSAvIDI7XG4gIGNhcmRpbmFsaXR5UG9zaXRpb24ueSA9IC1NYXRoLmNvcyhhbmdsZSkgKiBkICsgKHBvaW50c1swXS55ICsgY2VudGVyLnkpIC8gMjtcbiAgcmV0dXJuIGNhcmRpbmFsaXR5UG9zaXRpb247XG59O1xuZnVuY3Rpb24gY2FsY1Rlcm1pbmFsTGFiZWxQb3NpdGlvbih0ZXJtaW5hbE1hcmtlclNpemUsIHBvc2l0aW9uLCBfcG9pbnRzKSB7XG4gIGxldCBwb2ludHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9wb2ludHMpKTtcbiAgbGV0IHByZXZQb2ludDtcbiAgbG9nJDEuaW5mbyhcIm91ciBwb2ludHNcIiwgcG9pbnRzKTtcbiAgaWYgKHBvc2l0aW9uICE9PSBcInN0YXJ0X2xlZnRcIiAmJiBwb3NpdGlvbiAhPT0gXCJzdGFydF9yaWdodFwiKSB7XG4gICAgcG9pbnRzID0gcG9pbnRzLnJldmVyc2UoKTtcbiAgfVxuICBwb2ludHMuZm9yRWFjaCgocG9pbnQpID0+IHtcbiAgICBwcmV2UG9pbnQgPSBwb2ludDtcbiAgfSk7XG4gIGNvbnN0IGRpc3RhbmNlVG9DYXJkaW5hbGl0eVBvaW50ID0gMjUgKyB0ZXJtaW5hbE1hcmtlclNpemU7XG4gIGxldCByZW1haW5pbmdEaXN0YW5jZSA9IGRpc3RhbmNlVG9DYXJkaW5hbGl0eVBvaW50O1xuICBsZXQgY2VudGVyO1xuICBwcmV2UG9pbnQgPSB2b2lkIDA7XG4gIHBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgIGlmIChwcmV2UG9pbnQgJiYgIWNlbnRlcikge1xuICAgICAgY29uc3QgdmVjdG9yRGlzdGFuY2UgPSBkaXN0YW5jZShwb2ludCwgcHJldlBvaW50KTtcbiAgICAgIGlmICh2ZWN0b3JEaXN0YW5jZSA8IHJlbWFpbmluZ0Rpc3RhbmNlKSB7XG4gICAgICAgIHJlbWFpbmluZ0Rpc3RhbmNlIC09IHZlY3RvckRpc3RhbmNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VSYXRpbyA9IHJlbWFpbmluZ0Rpc3RhbmNlIC8gdmVjdG9yRGlzdGFuY2U7XG4gICAgICAgIGlmIChkaXN0YW5jZVJhdGlvIDw9IDApIHtcbiAgICAgICAgICBjZW50ZXIgPSBwcmV2UG9pbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlUmF0aW8gPj0gMSkge1xuICAgICAgICAgIGNlbnRlciA9IHsgeDogcG9pbnQueCwgeTogcG9pbnQueSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZVJhdGlvID4gMCAmJiBkaXN0YW5jZVJhdGlvIDwgMSkge1xuICAgICAgICAgIGNlbnRlciA9IHtcbiAgICAgICAgICAgIHg6ICgxIC0gZGlzdGFuY2VSYXRpbykgKiBwcmV2UG9pbnQueCArIGRpc3RhbmNlUmF0aW8gKiBwb2ludC54LFxuICAgICAgICAgICAgeTogKDEgLSBkaXN0YW5jZVJhdGlvKSAqIHByZXZQb2ludC55ICsgZGlzdGFuY2VSYXRpbyAqIHBvaW50LnlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHByZXZQb2ludCA9IHBvaW50O1xuICB9KTtcbiAgY29uc3QgZCA9IDEwICsgdGVybWluYWxNYXJrZXJTaXplICogMC41O1xuICBjb25zdCBhbmdsZSA9IE1hdGguYXRhbjIocG9pbnRzWzBdLnkgLSBjZW50ZXIueSwgcG9pbnRzWzBdLnggLSBjZW50ZXIueCk7XG4gIGNvbnN0IGNhcmRpbmFsaXR5UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcbiAgY2FyZGluYWxpdHlQb3NpdGlvbi54ID0gTWF0aC5zaW4oYW5nbGUpICogZCArIChwb2ludHNbMF0ueCArIGNlbnRlci54KSAvIDI7XG4gIGNhcmRpbmFsaXR5UG9zaXRpb24ueSA9IC1NYXRoLmNvcyhhbmdsZSkgKiBkICsgKHBvaW50c1swXS55ICsgY2VudGVyLnkpIC8gMjtcbiAgaWYgKHBvc2l0aW9uID09PSBcInN0YXJ0X2xlZnRcIikge1xuICAgIGNhcmRpbmFsaXR5UG9zaXRpb24ueCA9IE1hdGguc2luKGFuZ2xlICsgTWF0aC5QSSkgKiBkICsgKHBvaW50c1swXS54ICsgY2VudGVyLngpIC8gMjtcbiAgICBjYXJkaW5hbGl0eVBvc2l0aW9uLnkgPSAtTWF0aC5jb3MoYW5nbGUgKyBNYXRoLlBJKSAqIGQgKyAocG9pbnRzWzBdLnkgKyBjZW50ZXIueSkgLyAyO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gXCJlbmRfcmlnaHRcIikge1xuICAgIGNhcmRpbmFsaXR5UG9zaXRpb24ueCA9IE1hdGguc2luKGFuZ2xlIC0gTWF0aC5QSSkgKiBkICsgKHBvaW50c1swXS54ICsgY2VudGVyLngpIC8gMiAtIDU7XG4gICAgY2FyZGluYWxpdHlQb3NpdGlvbi55ID0gLU1hdGguY29zKGFuZ2xlIC0gTWF0aC5QSSkgKiBkICsgKHBvaW50c1swXS55ICsgY2VudGVyLnkpIC8gMiAtIDU7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSBcImVuZF9sZWZ0XCIpIHtcbiAgICBjYXJkaW5hbGl0eVBvc2l0aW9uLnggPSBNYXRoLnNpbihhbmdsZSkgKiBkICsgKHBvaW50c1swXS54ICsgY2VudGVyLngpIC8gMiAtIDU7XG4gICAgY2FyZGluYWxpdHlQb3NpdGlvbi55ID0gLU1hdGguY29zKGFuZ2xlKSAqIGQgKyAocG9pbnRzWzBdLnkgKyBjZW50ZXIueSkgLyAyIC0gNTtcbiAgfVxuICByZXR1cm4gY2FyZGluYWxpdHlQb3NpdGlvbjtcbn1cbmZ1bmN0aW9uIGdldFN0eWxlc0Zyb21BcnJheShhcnIpIHtcbiAgbGV0IHN0eWxlID0gXCJcIjtcbiAgbGV0IGxhYmVsU3R5bGUgPSBcIlwiO1xuICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgYXJyKSB7XG4gICAgaWYgKGVsZW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgaWYgKGVsZW1lbnQuc3RhcnRzV2l0aChcImNvbG9yOlwiKSB8fCBlbGVtZW50LnN0YXJ0c1dpdGgoXCJ0ZXh0LWFsaWduOlwiKSkge1xuICAgICAgICBsYWJlbFN0eWxlID0gbGFiZWxTdHlsZSArIGVsZW1lbnQgKyBcIjtcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0eWxlID0gc3R5bGUgKyBlbGVtZW50ICsgXCI7XCI7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHN0eWxlLCBsYWJlbFN0eWxlIH07XG59XG5sZXQgY250ID0gMDtcbmNvbnN0IGdlbmVyYXRlSWQgPSAoKSA9PiB7XG4gIGNudCsrO1xuICByZXR1cm4gXCJpZC1cIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCAxMikgKyBcIi1cIiArIGNudDtcbn07XG5mdW5jdGlvbiBtYWtlaWQobGVuZ3RoKSB7XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBjb25zdCBjaGFyYWN0ZXJzID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmNvbnN0IHJhbmRvbSA9IChvcHRpb25zKSA9PiB7XG4gIHJldHVybiBtYWtlaWQob3B0aW9ucy5sZW5ndGgpO1xufTtcbmNvbnN0IGdldFRleHRPYmogPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgZmlsbDogdm9pZCAwLFxuICAgIGFuY2hvcjogXCJzdGFydFwiLFxuICAgIHN0eWxlOiBcIiM2NjZcIixcbiAgICB3aWR0aDogMTAwLFxuICAgIGhlaWdodDogMTAwLFxuICAgIHRleHRNYXJnaW46IDAsXG4gICAgcng6IDAsXG4gICAgcnk6IDAsXG4gICAgdmFsaWduOiB2b2lkIDBcbiAgfTtcbn07XG5jb25zdCBkcmF3U2ltcGxlVGV4dCA9IGZ1bmN0aW9uKGVsZW0sIHRleHREYXRhKSB7XG4gIGNvbnN0IG5UZXh0ID0gdGV4dERhdGEudGV4dC5yZXBsYWNlKGNvbW1vbiQxLmxpbmVCcmVha1JlZ2V4LCBcIiBcIik7XG4gIGNvbnN0IFssIF9mb250U2l6ZVB4XSA9IHBhcnNlRm9udFNpemUodGV4dERhdGEuZm9udFNpemUpO1xuICBjb25zdCB0ZXh0RWxlbSA9IGVsZW0uYXBwZW5kKFwidGV4dFwiKTtcbiAgdGV4dEVsZW0uYXR0cihcInhcIiwgdGV4dERhdGEueCk7XG4gIHRleHRFbGVtLmF0dHIoXCJ5XCIsIHRleHREYXRhLnkpO1xuICB0ZXh0RWxlbS5zdHlsZShcInRleHQtYW5jaG9yXCIsIHRleHREYXRhLmFuY2hvcik7XG4gIHRleHRFbGVtLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgdGV4dERhdGEuZm9udEZhbWlseSk7XG4gIHRleHRFbGVtLnN0eWxlKFwiZm9udC1zaXplXCIsIF9mb250U2l6ZVB4KTtcbiAgdGV4dEVsZW0uc3R5bGUoXCJmb250LXdlaWdodFwiLCB0ZXh0RGF0YS5mb250V2VpZ2h0KTtcbiAgdGV4dEVsZW0uYXR0cihcImZpbGxcIiwgdGV4dERhdGEuZmlsbCk7XG4gIGlmICh0ZXh0RGF0YS5jbGFzcyAhPT0gdm9pZCAwKSB7XG4gICAgdGV4dEVsZW0uYXR0cihcImNsYXNzXCIsIHRleHREYXRhLmNsYXNzKTtcbiAgfVxuICBjb25zdCBzcGFuID0gdGV4dEVsZW0uYXBwZW5kKFwidHNwYW5cIik7XG4gIHNwYW4uYXR0cihcInhcIiwgdGV4dERhdGEueCArIHRleHREYXRhLnRleHRNYXJnaW4gKiAyKTtcbiAgc3Bhbi5hdHRyKFwiZmlsbFwiLCB0ZXh0RGF0YS5maWxsKTtcbiAgc3Bhbi50ZXh0KG5UZXh0KTtcbiAgcmV0dXJuIHRleHRFbGVtO1xufTtcbmNvbnN0IHdyYXBMYWJlbCA9IG1lbW9pemUoXG4gIChsYWJlbCwgbWF4V2lkdGgsIGNvbmZpZzIpID0+IHtcbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICByZXR1cm4gbGFiZWw7XG4gICAgfVxuICAgIGNvbmZpZzIgPSBPYmplY3QuYXNzaWduKFxuICAgICAgeyBmb250U2l6ZTogMTIsIGZvbnRXZWlnaHQ6IDQwMCwgZm9udEZhbWlseTogXCJBcmlhbFwiLCBqb2luV2l0aDogXCI8YnIvPlwiIH0sXG4gICAgICBjb25maWcyXG4gICAgKTtcbiAgICBpZiAoY29tbW9uJDEubGluZUJyZWFrUmVnZXgudGVzdChsYWJlbCkpIHtcbiAgICAgIHJldHVybiBsYWJlbDtcbiAgICB9XG4gICAgY29uc3Qgd29yZHMgPSBsYWJlbC5zcGxpdChcIiBcIik7XG4gICAgY29uc3QgY29tcGxldGVkTGluZXMgPSBbXTtcbiAgICBsZXQgbmV4dExpbmUgPSBcIlwiO1xuICAgIHdvcmRzLmZvckVhY2goKHdvcmQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB3b3JkTGVuZ3RoID0gY2FsY3VsYXRlVGV4dFdpZHRoKGAke3dvcmR9IGAsIGNvbmZpZzIpO1xuICAgICAgY29uc3QgbmV4dExpbmVMZW5ndGggPSBjYWxjdWxhdGVUZXh0V2lkdGgobmV4dExpbmUsIGNvbmZpZzIpO1xuICAgICAgaWYgKHdvcmRMZW5ndGggPiBtYXhXaWR0aCkge1xuICAgICAgICBjb25zdCB7IGh5cGhlbmF0ZWRTdHJpbmdzLCByZW1haW5pbmdXb3JkIH0gPSBicmVha1N0cmluZyh3b3JkLCBtYXhXaWR0aCwgXCItXCIsIGNvbmZpZzIpO1xuICAgICAgICBjb21wbGV0ZWRMaW5lcy5wdXNoKG5leHRMaW5lLCAuLi5oeXBoZW5hdGVkU3RyaW5ncyk7XG4gICAgICAgIG5leHRMaW5lID0gcmVtYWluaW5nV29yZDtcbiAgICAgIH0gZWxzZSBpZiAobmV4dExpbmVMZW5ndGggKyB3b3JkTGVuZ3RoID49IG1heFdpZHRoKSB7XG4gICAgICAgIGNvbXBsZXRlZExpbmVzLnB1c2gobmV4dExpbmUpO1xuICAgICAgICBuZXh0TGluZSA9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0TGluZSA9IFtuZXh0TGluZSwgd29yZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudFdvcmQgPSBpbmRleCArIDE7XG4gICAgICBjb25zdCBpc0xhc3RXb3JkID0gY3VycmVudFdvcmQgPT09IHdvcmRzLmxlbmd0aDtcbiAgICAgIGlmIChpc0xhc3RXb3JkKSB7XG4gICAgICAgIGNvbXBsZXRlZExpbmVzLnB1c2gobmV4dExpbmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjb21wbGV0ZWRMaW5lcy5maWx0ZXIoKGxpbmUpID0+IGxpbmUgIT09IFwiXCIpLmpvaW4oY29uZmlnMi5qb2luV2l0aCk7XG4gIH0sXG4gIChsYWJlbCwgbWF4V2lkdGgsIGNvbmZpZzIpID0+IGAke2xhYmVsfSR7bWF4V2lkdGh9JHtjb25maWcyLmZvbnRTaXplfSR7Y29uZmlnMi5mb250V2VpZ2h0fSR7Y29uZmlnMi5mb250RmFtaWx5fSR7Y29uZmlnMi5qb2luV2l0aH1gXG4pO1xuY29uc3QgYnJlYWtTdHJpbmcgPSBtZW1vaXplKFxuICAod29yZCwgbWF4V2lkdGgsIGh5cGhlbkNoYXJhY3RlciA9IFwiLVwiLCBjb25maWcyKSA9PiB7XG4gICAgY29uZmlnMiA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7IGZvbnRTaXplOiAxMiwgZm9udFdlaWdodDogNDAwLCBmb250RmFtaWx5OiBcIkFyaWFsXCIsIG1hcmdpbjogMCB9LFxuICAgICAgY29uZmlnMlxuICAgICk7XG4gICAgY29uc3QgY2hhcmFjdGVycyA9IFsuLi53b3JkXTtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGxldCBjdXJyZW50TGluZSA9IFwiXCI7XG4gICAgY2hhcmFjdGVycy5mb3JFYWNoKChjaGFyYWN0ZXIsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuZXh0TGluZSA9IGAke2N1cnJlbnRMaW5lfSR7Y2hhcmFjdGVyfWA7XG4gICAgICBjb25zdCBsaW5lV2lkdGggPSBjYWxjdWxhdGVUZXh0V2lkdGgobmV4dExpbmUsIGNvbmZpZzIpO1xuICAgICAgaWYgKGxpbmVXaWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICBjb25zdCBjdXJyZW50Q2hhcmFjdGVyID0gaW5kZXggKyAxO1xuICAgICAgICBjb25zdCBpc0xhc3RMaW5lID0gY2hhcmFjdGVycy5sZW5ndGggPT09IGN1cnJlbnRDaGFyYWN0ZXI7XG4gICAgICAgIGNvbnN0IGh5cGhlbmF0ZWROZXh0TGluZSA9IGAke25leHRMaW5lfSR7aHlwaGVuQ2hhcmFjdGVyfWA7XG4gICAgICAgIGxpbmVzLnB1c2goaXNMYXN0TGluZSA/IG5leHRMaW5lIDogaHlwaGVuYXRlZE5leHRMaW5lKTtcbiAgICAgICAgY3VycmVudExpbmUgPSBcIlwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudExpbmUgPSBuZXh0TGluZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyBoeXBoZW5hdGVkU3RyaW5nczogbGluZXMsIHJlbWFpbmluZ1dvcmQ6IGN1cnJlbnRMaW5lIH07XG4gIH0sXG4gICh3b3JkLCBtYXhXaWR0aCwgaHlwaGVuQ2hhcmFjdGVyID0gXCItXCIsIGNvbmZpZzIpID0+IGAke3dvcmR9JHttYXhXaWR0aH0ke2h5cGhlbkNoYXJhY3Rlcn0ke2NvbmZpZzIuZm9udFNpemV9JHtjb25maWcyLmZvbnRXZWlnaHR9JHtjb25maWcyLmZvbnRGYW1pbHl9YFxuKTtcbmZ1bmN0aW9uIGNhbGN1bGF0ZVRleHRIZWlnaHQodGV4dCwgY29uZmlnMikge1xuICBjb25maWcyID0gT2JqZWN0LmFzc2lnbihcbiAgICB7IGZvbnRTaXplOiAxMiwgZm9udFdlaWdodDogNDAwLCBmb250RmFtaWx5OiBcIkFyaWFsXCIsIG1hcmdpbjogMTUgfSxcbiAgICBjb25maWcyXG4gICk7XG4gIHJldHVybiBjYWxjdWxhdGVUZXh0RGltZW5zaW9ucyh0ZXh0LCBjb25maWcyKS5oZWlnaHQ7XG59XG5mdW5jdGlvbiBjYWxjdWxhdGVUZXh0V2lkdGgodGV4dCwgY29uZmlnMikge1xuICBjb25maWcyID0gT2JqZWN0LmFzc2lnbih7IGZvbnRTaXplOiAxMiwgZm9udFdlaWdodDogNDAwLCBmb250RmFtaWx5OiBcIkFyaWFsXCIgfSwgY29uZmlnMik7XG4gIHJldHVybiBjYWxjdWxhdGVUZXh0RGltZW5zaW9ucyh0ZXh0LCBjb25maWcyKS53aWR0aDtcbn1cbmNvbnN0IGNhbGN1bGF0ZVRleHREaW1lbnNpb25zID0gbWVtb2l6ZShcbiAgKHRleHQsIGNvbmZpZzIpID0+IHtcbiAgICBjb25maWcyID0gT2JqZWN0LmFzc2lnbih7IGZvbnRTaXplOiAxMiwgZm9udFdlaWdodDogNDAwLCBmb250RmFtaWx5OiBcIkFyaWFsXCIgfSwgY29uZmlnMik7XG4gICAgY29uc3QgeyBmb250U2l6ZSwgZm9udEZhbWlseSwgZm9udFdlaWdodCB9ID0gY29uZmlnMjtcbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgICB9XG4gICAgY29uc3QgWywgX2ZvbnRTaXplUHhdID0gcGFyc2VGb250U2l6ZShmb250U2l6ZSk7XG4gICAgY29uc3QgZm9udEZhbWlsaWVzID0gW1wic2Fucy1zZXJpZlwiLCBmb250RmFtaWx5XTtcbiAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoY29tbW9uJDEubGluZUJyZWFrUmVnZXgpO1xuICAgIGNvbnN0IGRpbXMgPSBbXTtcbiAgICBjb25zdCBib2R5ID0gc2VsZWN0KFwiYm9keVwiKTtcbiAgICBpZiAoIWJvZHkucmVtb3ZlKSB7XG4gICAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCBsaW5lSGVpZ2h0OiAwIH07XG4gICAgfVxuICAgIGNvbnN0IGcgPSBib2R5LmFwcGVuZChcInN2Z1wiKTtcbiAgICBmb3IgKGNvbnN0IGZvbnRGYW1pbHkyIG9mIGZvbnRGYW1pbGllcykge1xuICAgICAgbGV0IGNoZWlnaHQgPSAwO1xuICAgICAgY29uc3QgZGltID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwLCBsaW5lSGVpZ2h0OiAwIH07XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgdGV4dE9iaiA9IGdldFRleHRPYmooKTtcbiAgICAgICAgdGV4dE9iai50ZXh0ID0gbGluZSB8fCBaRVJPX1dJRFRIX1NQQUNFO1xuICAgICAgICBjb25zdCB0ZXh0RWxlbSA9IGRyYXdTaW1wbGVUZXh0KGcsIHRleHRPYmopLnN0eWxlKFwiZm9udC1zaXplXCIsIF9mb250U2l6ZVB4KS5zdHlsZShcImZvbnQtd2VpZ2h0XCIsIGZvbnRXZWlnaHQpLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgZm9udEZhbWlseTIpO1xuICAgICAgICBjb25zdCBiQm94ID0gKHRleHRFbGVtLl9ncm91cHMgfHwgdGV4dEVsZW0pWzBdWzBdLmdldEJCb3goKTtcbiAgICAgICAgaWYgKGJCb3gud2lkdGggPT09IDAgJiYgYkJveC5oZWlnaHQgPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzdmcgZWxlbWVudCBub3QgaW4gcmVuZGVyIHRyZWVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZGltLndpZHRoID0gTWF0aC5yb3VuZChNYXRoLm1heChkaW0ud2lkdGgsIGJCb3gud2lkdGgpKTtcbiAgICAgICAgY2hlaWdodCA9IE1hdGgucm91bmQoYkJveC5oZWlnaHQpO1xuICAgICAgICBkaW0uaGVpZ2h0ICs9IGNoZWlnaHQ7XG4gICAgICAgIGRpbS5saW5lSGVpZ2h0ID0gTWF0aC5yb3VuZChNYXRoLm1heChkaW0ubGluZUhlaWdodCwgY2hlaWdodCkpO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKGRpbSk7XG4gICAgfVxuICAgIGcucmVtb3ZlKCk7XG4gICAgY29uc3QgaW5kZXggPSBpc05hTihkaW1zWzFdLmhlaWdodCkgfHwgaXNOYU4oZGltc1sxXS53aWR0aCkgfHwgaXNOYU4oZGltc1sxXS5saW5lSGVpZ2h0KSB8fCBkaW1zWzBdLmhlaWdodCA+IGRpbXNbMV0uaGVpZ2h0ICYmIGRpbXNbMF0ud2lkdGggPiBkaW1zWzFdLndpZHRoICYmIGRpbXNbMF0ubGluZUhlaWdodCA+IGRpbXNbMV0ubGluZUhlaWdodCA/IDAgOiAxO1xuICAgIHJldHVybiBkaW1zW2luZGV4XTtcbiAgfSxcbiAgKHRleHQsIGNvbmZpZzIpID0+IGAke3RleHR9JHtjb25maWcyLmZvbnRTaXplfSR7Y29uZmlnMi5mb250V2VpZ2h0fSR7Y29uZmlnMi5mb250RmFtaWx5fWBcbik7XG5jb25zdCBpbml0SWRHZW5lcmF0b3IgPSBjbGFzcyBpdGVyYXRvciB7XG4gIGNvbnN0cnVjdG9yKGRldGVybWluaXN0aWMsIHNlZWQpIHtcbiAgICB0aGlzLmRldGVybWluaXN0aWMgPSBkZXRlcm1pbmlzdGljO1xuICAgIHRoaXMuc2VlZCA9IHNlZWQ7XG4gICAgdGhpcy5jb3VudCA9IHNlZWQgPyBzZWVkLmxlbmd0aCA6IDA7XG4gIH1cbiAgbmV4dCgpIHtcbiAgICBpZiAoIXRoaXMuZGV0ZXJtaW5pc3RpYykge1xuICAgICAgcmV0dXJuIERhdGUubm93KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvdW50Kys7XG4gIH1cbn07XG5sZXQgZGVjb2RlcjtcbmNvbnN0IGVudGl0eURlY29kZSA9IGZ1bmN0aW9uKGh0bWwpIHtcbiAgZGVjb2RlciA9IGRlY29kZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgaHRtbCA9IGVzY2FwZShodG1sKS5yZXBsYWNlKC8lMjYvZywgXCImXCIpLnJlcGxhY2UoLyUyMy9nLCBcIiNcIikucmVwbGFjZSgvJTNCL2csIFwiO1wiKTtcbiAgZGVjb2Rlci5pbm5lckhUTUwgPSBodG1sO1xuICByZXR1cm4gdW5lc2NhcGUoZGVjb2Rlci50ZXh0Q29udGVudCk7XG59O1xuY29uc3QgZGlyZWN0aXZlU2FuaXRpemVyID0gKGFyZ3MpID0+IHtcbiAgbG9nJDEuZGVidWcoXCJkaXJlY3RpdmVTYW5pdGl6ZXIgY2FsbGVkIHdpdGhcIiwgYXJncyk7XG4gIGlmICh0eXBlb2YgYXJncyA9PT0gXCJvYmplY3RcIikge1xuICAgIGlmIChhcmdzLmxlbmd0aCkge1xuICAgICAgYXJncy5mb3JFYWNoKChhcmcpID0+IGRpcmVjdGl2ZVNhbml0aXplcihhcmcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMoYXJncykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGxvZyQxLmRlYnVnKFwiQ2hlY2tpbmcga2V5XCIsIGtleSk7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIl9fXCIpKSB7XG4gICAgICAgICAgbG9nJDEuZGVidWcoXCJzYW5pdGl6ZSBkZWxldGluZyBfXyBvcHRpb25cIiwga2V5KTtcbiAgICAgICAgICBkZWxldGUgYXJnc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoXCJwcm90b1wiKSkge1xuICAgICAgICAgIGxvZyQxLmRlYnVnKFwic2FuaXRpemUgZGVsZXRpbmcgcHJvdG8gb3B0aW9uXCIsIGtleSk7XG4gICAgICAgICAgZGVsZXRlIGFyZ3Nba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiY29uc3RyXCIpKSB7XG4gICAgICAgICAgbG9nJDEuZGVidWcoXCJzYW5pdGl6ZSBkZWxldGluZyBjb25zdHIgb3B0aW9uXCIsIGtleSk7XG4gICAgICAgICAgZGVsZXRlIGFyZ3Nba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKFwidGhlbWVDU1NcIikpIHtcbiAgICAgICAgICBsb2ckMS5kZWJ1ZyhcInNhbml0aXppbmcgdGhlbWVDc3Mgb3B0aW9uXCIpO1xuICAgICAgICAgIGFyZ3Nba2V5XSA9IHNhbml0aXplQ3NzKGFyZ3Nba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcyhcImZvbnRGYW1pbHlcIikpIHtcbiAgICAgICAgICBsb2ckMS5kZWJ1ZyhcInNhbml0aXppbmcgZm9udEZhbWlseSBvcHRpb25cIik7XG4gICAgICAgICAgYXJnc1trZXldID0gc2FuaXRpemVDc3MoYXJnc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiYWx0Rm9udEZhbWlseVwiKSkge1xuICAgICAgICAgIGxvZyQxLmRlYnVnKFwic2FuaXRpemluZyBhbHRGb250RmFtaWx5IG9wdGlvblwiKTtcbiAgICAgICAgICBhcmdzW2tleV0gPSBzYW5pdGl6ZUNzcyhhcmdzW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY29uZmlnS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgbG9nJDEuZGVidWcoXCJzYW5pdGl6ZSBkZWxldGluZyBvcHRpb25cIiwga2V5KTtcbiAgICAgICAgICBkZWxldGUgYXJnc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXJnc1trZXldID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBsb2ckMS5kZWJ1ZyhcInNhbml0aXplIGRlbGV0aW5nIG9iamVjdFwiLCBrZXkpO1xuICAgICAgICAgICAgZGlyZWN0aXZlU2FuaXRpemVyKGFyZ3Nba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKGFyZ3MudGhlbWVWYXJpYWJsZXMpIHtcbiAgICBjb25zdCBrQXJyID0gT2JqZWN0LmtleXMoYXJncy50aGVtZVZhcmlhYmxlcyk7XG4gICAgZm9yIChjb25zdCBrIG9mIGtBcnIpIHtcbiAgICAgIGNvbnN0IHZhbCA9IGFyZ3MudGhlbWVWYXJpYWJsZXNba107XG4gICAgICBpZiAodmFsICYmIHZhbC5tYXRjaCAmJiAhdmFsLm1hdGNoKC9eW1xcZCBcIiMlKCksLjtBLVphLXpdKyQvKSkge1xuICAgICAgICBhcmdzLnRoZW1lVmFyaWFibGVzW2tdID0gXCJcIjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbG9nJDEuZGVidWcoXCJBZnRlciBzYW5pdGl6YXRpb25cIiwgYXJncyk7XG59O1xuY29uc3Qgc2FuaXRpemVDc3MgPSAoc3RyMikgPT4ge1xuICBsZXQgc3RhcnRDbnQgPSAwO1xuICBsZXQgZW5kQ250ID0gMDtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIHN0cjIpIHtcbiAgICBpZiAoc3RhcnRDbnQgPCBlbmRDbnQpIHtcbiAgICAgIHJldHVybiBcInsgLyogRVJST1I6IFVuYmFsYW5jZWQgQ1NTICovIH1cIjtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQgPT09IFwie1wiKSB7XG4gICAgICBzdGFydENudCsrO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudCA9PT0gXCJ9XCIpIHtcbiAgICAgIGVuZENudCsrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnRDbnQgIT09IGVuZENudCkge1xuICAgIHJldHVybiBcInsgLyogRVJST1I6IFVuYmFsYW5jZWQgQ1NTICovIH1cIjtcbiAgfVxuICByZXR1cm4gc3RyMjtcbn07XG5mdW5jdGlvbiBpc0RldGFpbGVkRXJyb3IoZXJyb3IpIHtcbiAgcmV0dXJuIFwic3RyXCIgaW4gZXJyb3I7XG59XG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IubWVzc2FnZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKGVycm9yKTtcbn1cbmNvbnN0IGluc2VydFRpdGxlID0gKHBhcmVudCwgY3NzQ2xhc3MsIHRpdGxlVG9wTWFyZ2luLCB0aXRsZTIpID0+IHtcbiAgaWYgKCF0aXRsZTIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYm91bmRzID0gcGFyZW50Lm5vZGUoKS5nZXRCQm94KCk7XG4gIHBhcmVudC5hcHBlbmQoXCJ0ZXh0XCIpLnRleHQodGl0bGUyKS5hdHRyKFwieFwiLCBib3VuZHMueCArIGJvdW5kcy53aWR0aCAvIDIpLmF0dHIoXCJ5XCIsIC10aXRsZVRvcE1hcmdpbikuYXR0cihcImNsYXNzXCIsIGNzc0NsYXNzKTtcbn07XG5jb25zdCBwYXJzZUZvbnRTaXplID0gKGZvbnRTaXplKSA9PiB7XG4gIGlmICh0eXBlb2YgZm9udFNpemUgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gW2ZvbnRTaXplLCBmb250U2l6ZSArIFwicHhcIl07XG4gIH1cbiAgY29uc3QgZm9udFNpemVOdW1iZXIgPSBwYXJzZUludChmb250U2l6ZSwgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKGZvbnRTaXplTnVtYmVyKSkge1xuICAgIHJldHVybiBbdm9pZCAwLCB2b2lkIDBdO1xuICB9IGVsc2UgaWYgKGZvbnRTaXplID09PSBTdHJpbmcoZm9udFNpemVOdW1iZXIpKSB7XG4gICAgcmV0dXJuIFtmb250U2l6ZU51bWJlciwgZm9udFNpemUgKyBcInB4XCJdO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbZm9udFNpemVOdW1iZXIsIGZvbnRTaXplXTtcbiAgfVxufTtcbmNvbnN0IHV0aWxzID0ge1xuICBhc3NpZ25XaXRoRGVwdGg6IGFzc2lnbldpdGhEZXB0aCQxLFxuICB3cmFwTGFiZWwsXG4gIGNhbGN1bGF0ZVRleHRIZWlnaHQsXG4gIGNhbGN1bGF0ZVRleHRXaWR0aCxcbiAgY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMsXG4gIGRldGVjdEluaXQsXG4gIGRldGVjdERpcmVjdGl2ZSxcbiAgaXNTdWJzdHJpbmdJbkFycmF5LFxuICBpbnRlcnBvbGF0ZVRvQ3VydmUsXG4gIGNhbGNMYWJlbFBvc2l0aW9uLFxuICBjYWxjQ2FyZGluYWxpdHlQb3NpdGlvbixcbiAgY2FsY1Rlcm1pbmFsTGFiZWxQb3NpdGlvbixcbiAgZm9ybWF0VXJsLFxuICBnZXRTdHlsZXNGcm9tQXJyYXksXG4gIGdlbmVyYXRlSWQsXG4gIHJhbmRvbSxcbiAgcnVuRnVuYyxcbiAgZW50aXR5RGVjb2RlLFxuICBpbml0SWRHZW5lcmF0b3IsXG4gIGRpcmVjdGl2ZVNhbml0aXplcixcbiAgc2FuaXRpemVDc3MsXG4gIGluc2VydFRpdGxlLFxuICBwYXJzZUZvbnRTaXplXG59O1xuY29uc3QgdmVyc2lvbiA9IFwiMTAuMi4zXCI7XG5jb25zdCBpZCRpID0gXCJjNFwiO1xuY29uc3QgZGV0ZWN0b3IkaSA9ICh0eHQpID0+IHtcbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypDNENvbnRleHR8QzRDb250YWluZXJ8QzRDb21wb25lbnR8QzREeW5hbWljfEM0RGVwbG95bWVudC8pICE9PSBudWxsO1xufTtcbmNvbnN0IGxvYWRlciRpID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7IGRpYWdyYW06IGRpYWdyYW0yIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2M0RGlhZ3JhbS05Y2RkYjM3Zi5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJGksIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJGkgPSB7XG4gIGlkOiBpZCRpLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkaSxcbiAgbG9hZGVyOiBsb2FkZXIkaVxufTtcbmNvbnN0IGM0ID0gcGx1Z2luJGk7XG5jb25zdCBpZCRoID0gXCJmbG93Y2hhcnRcIjtcbmNvbnN0IGRldGVjdG9yJGggPSAodHh0LCBjb25maWcyKSA9PiB7XG4gIHZhciBfYSwgX2I7XG4gIGlmICgoKF9hID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5kZWZhdWx0UmVuZGVyZXIpID09PSBcImRhZ3JlLXdyYXBwZXJcIiB8fCAoKF9iID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5kZWZhdWx0UmVuZGVyZXIpID09PSBcImVsa1wiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqZ3JhcGgvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkaCA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9mbG93RGlhZ3JhbS05MzMyN2YyMS5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJGgsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJGggPSB7XG4gIGlkOiBpZCRoLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkaCxcbiAgbG9hZGVyOiBsb2FkZXIkaFxufTtcbmNvbnN0IGZsb3djaGFydCA9IHBsdWdpbiRoO1xuY29uc3QgaWQkZyA9IFwiZmxvd2NoYXJ0LXYyXCI7XG5jb25zdCBkZXRlY3RvciRnID0gKHR4dCwgY29uZmlnMikgPT4ge1xuICB2YXIgX2EsIF9iLCBfYztcbiAgaWYgKCgoX2EgPSBjb25maWcyID09IG51bGwgPyB2b2lkIDAgOiBjb25maWcyLmZsb3djaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRSZW5kZXJlcikgPT09IFwiZGFncmUtZDNcIiB8fCAoKF9iID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYi5kZWZhdWx0UmVuZGVyZXIpID09PSBcImVsa1wiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eHQubWF0Y2goL15cXHMqZ3JhcGgvKSAhPT0gbnVsbCAmJiAoKF9jID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYy5kZWZhdWx0UmVuZGVyZXIpID09PSBcImRhZ3JlLXdyYXBwZXJcIikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqZmxvd2NoYXJ0LykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyJGcgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIgfSA9IGF3YWl0IGltcG9ydChcIi4vZmxvd0RpYWdyYW0tdjItNDc2ZGI3NzkuanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCRnLCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiRnID0ge1xuICBpZDogaWQkZyxcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJGcsXG4gIGxvYWRlcjogbG9hZGVyJGdcbn07XG5jb25zdCBmbG93Y2hhcnRWMiA9IHBsdWdpbiRnO1xuY29uc3QgaWQkZiA9IFwiZXJcIjtcbmNvbnN0IGRldGVjdG9yJGYgPSAodHh0KSA9PiB7XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqZXJEaWFncmFtLykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyJGYgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIgfSA9IGF3YWl0IGltcG9ydChcIi4vZXJEaWFncmFtLWY2OTQ2MTA5LmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkZiwgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kZiA9IHtcbiAgaWQ6IGlkJGYsXG4gIGRldGVjdG9yOiBkZXRlY3RvciRmLFxuICBsb2FkZXI6IGxvYWRlciRmXG59O1xuY29uc3QgZXIgPSBwbHVnaW4kZjtcbmNvbnN0IGlkJGUgPSBcImdpdEdyYXBoXCI7XG5jb25zdCBkZXRlY3RvciRlID0gKHR4dCkgPT4ge1xuICByZXR1cm4gdHh0Lm1hdGNoKC9eXFxzKmdpdEdyYXBoLykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyJGUgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIgfSA9IGF3YWl0IGltcG9ydChcIi4vZ2l0R3JhcGhEaWFncmFtLTFlOTYwYzUwLmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkZSwgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kZSA9IHtcbiAgaWQ6IGlkJGUsXG4gIGRldGVjdG9yOiBkZXRlY3RvciRlLFxuICBsb2FkZXI6IGxvYWRlciRlXG59O1xuY29uc3QgZ2l0ID0gcGx1Z2luJGU7XG5jb25zdCBpZCRkID0gXCJnYW50dFwiO1xuY29uc3QgZGV0ZWN0b3IkZCA9ICh0eHQpID0+IHtcbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypnYW50dC8pICE9PSBudWxsO1xufTtcbmNvbnN0IGxvYWRlciRkID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7IGRpYWdyYW06IGRpYWdyYW0yIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2dhbnR0RGlhZ3JhbS03Y2UxMmQ2Yi5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJGQsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJGQgPSB7XG4gIGlkOiBpZCRkLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkZCxcbiAgbG9hZGVyOiBsb2FkZXIkZFxufTtcbmNvbnN0IGdhbnR0ID0gcGx1Z2luJGQ7XG5jb25zdCBpZCRjID0gXCJpbmZvXCI7XG5jb25zdCBkZXRlY3RvciRjID0gKHR4dCkgPT4ge1xuICByZXR1cm4gdHh0Lm1hdGNoKC9eXFxzKmluZm8vKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkYyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9pbmZvRGlhZ3JhbS0yNjRiZWQzZS5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJGMsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJGMgPSB7XG4gIGlkOiBpZCRjLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkYyxcbiAgbG9hZGVyOiBsb2FkZXIkY1xufTtcbmNvbnN0IGluZm8gPSBwbHVnaW4kYztcbmNvbnN0IGlkJGIgPSBcInBpZVwiO1xuY29uc3QgZGV0ZWN0b3IkYiA9ICh0eHQpID0+IHtcbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypwaWUvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkYiA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9waWVEaWFncmFtLTE1NzUwNWZlLmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkYiwgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kYiA9IHtcbiAgaWQ6IGlkJGIsXG4gIGRldGVjdG9yOiBkZXRlY3RvciRiLFxuICBsb2FkZXI6IGxvYWRlciRiXG59O1xuY29uc3QgcGllID0gcGx1Z2luJGI7XG5jb25zdCBpZCRhID0gXCJxdWFkcmFudENoYXJ0XCI7XG5jb25zdCBkZXRlY3RvciRhID0gKHR4dCkgPT4ge1xuICByZXR1cm4gdHh0Lm1hdGNoKC9eXFxzKnF1YWRyYW50Q2hhcnQvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkYSA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9xdWFkcmFudERpYWdyYW0tZmQ3MGYyZDAuanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCRhLCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiRhID0ge1xuICBpZDogaWQkYSxcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJGEsXG4gIGxvYWRlcjogbG9hZGVyJGFcbn07XG5jb25zdCBxdWFkcmFudENoYXJ0ID0gcGx1Z2luJGE7XG5jb25zdCBpZCQ5ID0gXCJyZXF1aXJlbWVudFwiO1xuY29uc3QgZGV0ZWN0b3IkOSA9ICh0eHQpID0+IHtcbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypyZXF1aXJlbWVudChEaWFncmFtKT8vKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkOSA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9yZXF1aXJlbWVudERpYWdyYW0tMTljOTk1ODguanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCQ5LCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiQ5ID0ge1xuICBpZDogaWQkOSxcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJDksXG4gIGxvYWRlcjogbG9hZGVyJDlcbn07XG5jb25zdCByZXF1aXJlbWVudCA9IHBsdWdpbiQ5O1xuY29uc3QgaWQkOCA9IFwic2VxdWVuY2VcIjtcbmNvbnN0IGRldGVjdG9yJDggPSAodHh0KSA9PiB7XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqc2VxdWVuY2VEaWFncmFtLykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyJDggPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIgfSA9IGF3YWl0IGltcG9ydChcIi4vc2VxdWVuY2VEaWFncmFtLTVkZmQwMDQ5LmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkOCwgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kOCA9IHtcbiAgaWQ6IGlkJDgsXG4gIGRldGVjdG9yOiBkZXRlY3RvciQ4LFxuICBsb2FkZXI6IGxvYWRlciQ4XG59O1xuY29uc3Qgc2VxdWVuY2UgPSBwbHVnaW4kODtcbmNvbnN0IGlkJDcgPSBcImNsYXNzXCI7XG5jb25zdCBkZXRlY3RvciQ3ID0gKHR4dCwgY29uZmlnMikgPT4ge1xuICB2YXIgX2E7XG4gIGlmICgoKF9hID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5jbGFzcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRSZW5kZXJlcikgPT09IFwiZGFncmUtd3JhcHBlclwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqY2xhc3NEaWFncmFtLykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyJDcgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHsgZGlhZ3JhbTogZGlhZ3JhbTIgfSA9IGF3YWl0IGltcG9ydChcIi4vY2xhc3NEaWFncmFtLWJjNzMzYzNiLmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkNywgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kNyA9IHtcbiAgaWQ6IGlkJDcsXG4gIGRldGVjdG9yOiBkZXRlY3RvciQ3LFxuICBsb2FkZXI6IGxvYWRlciQ3XG59O1xuY29uc3QgY2xhc3NEaWFncmFtID0gcGx1Z2luJDc7XG5jb25zdCBpZCQ2ID0gXCJjbGFzc0RpYWdyYW1cIjtcbmNvbnN0IGRldGVjdG9yJDYgPSAodHh0LCBjb25maWcyKSA9PiB7XG4gIHZhciBfYTtcbiAgaWYgKHR4dC5tYXRjaCgvXlxccypjbGFzc0RpYWdyYW0vKSAhPT0gbnVsbCAmJiAoKF9hID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5jbGFzcykgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRSZW5kZXJlcikgPT09IFwiZGFncmUtd3JhcHBlclwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypjbGFzc0RpYWdyYW0tdjIvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkNiA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9jbGFzc0RpYWdyYW0tdjItODkzMWJkYWYuanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCQ2LCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiQ2ID0ge1xuICBpZDogaWQkNixcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJDYsXG4gIGxvYWRlcjogbG9hZGVyJDZcbn07XG5jb25zdCBjbGFzc0RpYWdyYW1WMiA9IHBsdWdpbiQ2O1xuY29uc3QgaWQkNSA9IFwic3RhdGVcIjtcbmNvbnN0IGRldGVjdG9yJDUgPSAodHh0LCBjb25maWcyKSA9PiB7XG4gIHZhciBfYTtcbiAgaWYgKCgoX2EgPSBjb25maWcyID09IG51bGwgPyB2b2lkIDAgOiBjb25maWcyLnN0YXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGVmYXVsdFJlbmRlcmVyKSA9PT0gXCJkYWdyZS13cmFwcGVyXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccypzdGF0ZURpYWdyYW0vKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkNSA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9zdGF0ZURpYWdyYW0tMTMzZTM2NDIuanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCQ1LCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiQ1ID0ge1xuICBpZDogaWQkNSxcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJDUsXG4gIGxvYWRlcjogbG9hZGVyJDVcbn07XG5jb25zdCBzdGF0ZSA9IHBsdWdpbiQ1O1xuY29uc3QgaWQkNCA9IFwic3RhdGVEaWFncmFtXCI7XG5jb25zdCBkZXRlY3RvciQ0ID0gKHRleHQsIGNvbmZpZzIpID0+IHtcbiAgdmFyIF9hLCBfYjtcbiAgaWYgKHRleHQubWF0Y2goL15cXHMqc3RhdGVEaWFncmFtLXYyLykgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodGV4dC5tYXRjaCgvXlxccypzdGF0ZURpYWdyYW0vKSAmJiAoKF9hID0gY29uZmlnMiA9PSBudWxsID8gdm9pZCAwIDogY29uZmlnMi5zdGF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRSZW5kZXJlcikgPT09IFwiZGFncmUtd3JhcHBlclwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHRleHQubWF0Y2goL15cXHMqc3RhdGVEaWFncmFtLykgJiYgKChfYiA9IGNvbmZpZzIgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbmZpZzIuc3RhdGUpID09IG51bGwgPyB2b2lkIDAgOiBfYi5kZWZhdWx0UmVuZGVyZXIpID09PSBcImRhZ3JlLXdyYXBwZXJcIikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5jb25zdCBsb2FkZXIkNCA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9zdGF0ZURpYWdyYW0tdjItNjM3MWE3NmIuanNcIik7XG4gIHJldHVybiB7IGlkOiBpZCQ0LCBkaWFncmFtOiBkaWFncmFtMiB9O1xufTtcbmNvbnN0IHBsdWdpbiQ0ID0ge1xuICBpZDogaWQkNCxcbiAgZGV0ZWN0b3I6IGRldGVjdG9yJDQsXG4gIGxvYWRlcjogbG9hZGVyJDRcbn07XG5jb25zdCBzdGF0ZVYyID0gcGx1Z2luJDQ7XG5jb25zdCBpZCQzID0gXCJqb3VybmV5XCI7XG5jb25zdCBkZXRlY3RvciQzID0gKHR4dCkgPT4ge1xuICByZXR1cm4gdHh0Lm1hdGNoKC9eXFxzKmpvdXJuZXkvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkMyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi9qb3VybmV5RGlhZ3JhbS0zMWJlMDA5Ni5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJDMsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJDMgPSB7XG4gIGlkOiBpZCQzLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkMyxcbiAgbG9hZGVyOiBsb2FkZXIkM1xufTtcbmNvbnN0IGpvdXJuZXkgPSBwbHVnaW4kMztcbmNvbnN0IGdldFN0eWxlcyA9ICgpID0+IGBgO1xuY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKCkge1xufTtcbmNvbnN0IGRyYXcgPSAoX3RleHQsIGlkMiwgbWVybWFpZFZlcnNpb24pID0+IHtcbiAgdHJ5IHtcbiAgICBsb2ckMS5kZWJ1ZyhcIlJlbmVyaW5nIHN2ZyBmb3Igc3ludGF4IGVycm9yXFxuXCIpO1xuICAgIGNvbnN0IHN2ZyA9IHNlbGVjdChcIiNcIiArIGlkMik7XG4gICAgY29uc3QgZyA9IHN2Zy5hcHBlbmQoXCJnXCIpO1xuICAgIGcuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJlcnJvci1pY29uXCIpLmF0dHIoXG4gICAgICBcImRcIixcbiAgICAgIFwibTQxMS4zMTMsMTIzLjMxM2M2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMi05LjM3NSw5LjM3NS0yMC42ODgtMjAuNjg4Yy0xMi40ODQtMTIuNS0zMi43NjYtMTIuNS00NS4yNSwwbC0xNiwxNmMtMS4yNjEsMS4yNjEtMi4zMDQsMi42NDgtMy4zMSw0LjA1MS0yMS43MzktOC41NjEtNDUuMzI0LTEzLjQyNi03MC4wNjUtMTMuNDI2LTEwNS44NjcsMC0xOTIsODYuMTMzLTE5MiwxOTJzODYuMTMzLDE5MiAxOTIsMTkyIDE5Mi04Ni4xMzMgMTkyLTE5MmMwLTI0Ljc0MS00Ljg2NC00OC4zMjctMTMuNDI2LTcwLjA2NSAxLjQwMi0xLjAwNyAyLjc5LTIuMDQ5IDQuMDUxLTMuMzFsMTYtMTZjMTIuNS0xMi40OTIgMTIuNS0zMi43NTggMC00NS4yNWwtMjAuNjg4LTIwLjY4OCA5LjM3NS05LjM3NSAzMi4wMDEtMzEuOTk5em0tMjE5LjMxMywxMDAuNjg3Yy01Mi45MzgsMC05Niw0My4wNjMtOTYsOTYgMCw4LjgzNi03LjE2NCwxNi0xNiwxNnMtMTYtNy4xNjQtMTYtMTZjMC03MC41NzggNTcuNDIyLTEyOCAxMjgtMTI4IDguODM2LDAgMTYsNy4xNjQgMTYsMTZzLTcuMTY0LDE2LTE2LDE2elwiXG4gICAgKTtcbiAgICBnLmFwcGVuZChcInBhdGhcIikuYXR0cihcImNsYXNzXCIsIFwiZXJyb3ItaWNvblwiKS5hdHRyKFxuICAgICAgXCJkXCIsXG4gICAgICBcIm00NTkuMDIsMTQ4Ljk4Yy02LjI1LTYuMjUtMTYuMzc1LTYuMjUtMjIuNjI1LDBzLTYuMjUsMTYuMzc1IDAsMjIuNjI1bDE2LDE2YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OCA2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVsLTE2LjAwMS0xNnpcIlxuICAgICk7XG4gICAgZy5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJjbGFzc1wiLCBcImVycm9yLWljb25cIikuYXR0cihcbiAgICAgIFwiZFwiLFxuICAgICAgXCJtMzQwLjM5NSw3NS42MDVjMy4xMjUsMy4xMjUgNy4yMTksNC42ODggMTEuMzEzLDQuNjg4IDQuMDk0LDAgOC4xODgtMS41NjMgMTEuMzEzLTQuNjg4IDYuMjUtNi4yNSA2LjI1LTE2LjM3NSAwLTIyLjYyNWwtMTYtMTZjLTYuMjUtNi4yNS0xNi4zNzUtNi4yNS0yMi42MjUsMHMtNi4yNSwxNi4zNzUgMCwyMi42MjVsMTUuOTk5LDE2elwiXG4gICAgKTtcbiAgICBnLmFwcGVuZChcInBhdGhcIikuYXR0cihcImNsYXNzXCIsIFwiZXJyb3ItaWNvblwiKS5hdHRyKFxuICAgICAgXCJkXCIsXG4gICAgICBcIm00MDAsNjRjOC44NDQsMCAxNi03LjE2NCAxNi0xNnYtMzJjMC04LjgzNi03LjE1Ni0xNi0xNi0xNi04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2djMyYzAsOC44MzYgNy4xNTYsMTYgMTYsMTZ6XCJcbiAgICApO1xuICAgIGcuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJlcnJvci1pY29uXCIpLmF0dHIoXG4gICAgICBcImRcIixcbiAgICAgIFwibTQ5Niw5Ni41ODZoLTMyYy04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2IDAsOC44MzYgNy4xNTYsMTYgMTYsMTZoMzJjOC44NDQsMCAxNi03LjE2NCAxNi0xNiAwLTguODM2LTcuMTU2LTE2LTE2LTE2elwiXG4gICAgKTtcbiAgICBnLmFwcGVuZChcInBhdGhcIikuYXR0cihcImNsYXNzXCIsIFwiZXJyb3ItaWNvblwiKS5hdHRyKFxuICAgICAgXCJkXCIsXG4gICAgICBcIm00MzYuOTgsNzUuNjA1YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OGwzMi0zMmM2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMmMtNi4yNTEsNi4yNS02LjI1MSwxNi4zNzUtMC4wMDEsMjIuNjI1elwiXG4gICAgKTtcbiAgICBnLmFwcGVuZChcInRleHRcIikuYXR0cihcImNsYXNzXCIsIFwiZXJyb3ItdGV4dFwiKS5hdHRyKFwieFwiLCAxNDQwKS5hdHRyKFwieVwiLCAyNTApLmF0dHIoXCJmb250LXNpemVcIiwgXCIxNTBweFwiKS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnRleHQoXCJTeW50YXggZXJyb3IgaW4gdGV4dFwiKTtcbiAgICBnLmFwcGVuZChcInRleHRcIikuYXR0cihcImNsYXNzXCIsIFwiZXJyb3ItdGV4dFwiKS5hdHRyKFwieFwiLCAxMjUwKS5hdHRyKFwieVwiLCA0MDApLmF0dHIoXCJmb250LXNpemVcIiwgXCIxMDBweFwiKS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnRleHQoXCJtZXJtYWlkIHZlcnNpb24gXCIgKyBtZXJtYWlkVmVyc2lvbik7XG4gICAgc3ZnLmF0dHIoXCJoZWlnaHRcIiwgMTAwKTtcbiAgICBzdmcuYXR0cihcIndpZHRoXCIsIDUwMCk7XG4gICAgc3ZnLmF0dHIoXCJ2aWV3Qm94XCIsIFwiNzY4IDAgOTEyIDUxMlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZyQxLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVuZGVyaW5nIGluZm8gZGlhZ3JhbVwiKTtcbiAgICBsb2ckMS5lcnJvcihnZXRFcnJvck1lc3NhZ2UoZSkpO1xuICB9XG59O1xuY29uc3QgZXJyb3JSZW5kZXJlciA9IHtcbiAgc2V0Q29uZixcbiAgZHJhd1xufTtcbmNvbnN0IGRpYWdyYW0gPSB7XG4gIGRiOiB7XG4gICAgY2xlYXI6ICgpID0+IHtcbiAgICB9XG4gIH0sXG4gIHN0eWxlcyxcbiAgcmVuZGVyZXI6IGVycm9yUmVuZGVyZXIsXG4gIHBhcnNlcjoge1xuICAgIHBhcnNlcjogeyB5eToge30gfSxcbiAgICBwYXJzZTogKCkgPT4ge1xuICAgIH1cbiAgfSxcbiAgaW5pdDogKCkgPT4ge1xuICB9XG59O1xuY29uc3QgZXJyb3JEaWFncmFtID0gZGlhZ3JhbTtcbmNvbnN0IGlkJDIgPSBcImZsb3djaGFydC1lbGtcIjtcbmNvbnN0IGRldGVjdG9yJDIgPSAodHh0LCBjb25maWcyKSA9PiB7XG4gIHZhciBfYTtcbiAgaWYgKFxuICAgIC8vIElmIGRpYWdyYW0gZXhwbGljaXRseSBzdGF0ZXMgZmxvd2NoYXJ0LWVsa1xuICAgIHR4dC5tYXRjaCgvXlxccypmbG93Y2hhcnQtZWxrLykgfHwgLy8gSWYgYSBmbG93Y2hhcnQvZ3JhcGggZGlhZ3JhbSBoYXMgdGhlaXIgZGVmYXVsdCByZW5kZXJlciBzZXQgdG8gZWxrXG4gICAgdHh0Lm1hdGNoKC9eXFxzKmZsb3djaGFydHxncmFwaC8pICYmICgoX2EgPSBjb25maWcyID09IG51bGwgPyB2b2lkIDAgOiBjb25maWcyLmZsb3djaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRSZW5kZXJlcikgPT09IFwiZWxrXCJcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGxvYWRlciQyID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7IGRpYWdyYW06IGRpYWdyYW0yIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2Zsb3djaGFydC1lbGstZGVmaW5pdGlvbi01MDgyYTk5MC5qc1wiKTtcbiAgcmV0dXJuIHsgaWQ6IGlkJDIsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luJDIgPSB7XG4gIGlkOiBpZCQyLFxuICBkZXRlY3RvcjogZGV0ZWN0b3IkMixcbiAgbG9hZGVyOiBsb2FkZXIkMlxufTtcbmNvbnN0IGZsb3djaGFydEVsayA9IHBsdWdpbiQyO1xuY29uc3QgaWQkMSA9IFwidGltZWxpbmVcIjtcbmNvbnN0IGRldGVjdG9yJDEgPSAodHh0KSA9PiB7XG4gIHJldHVybiB0eHQubWF0Y2goL15cXHMqdGltZWxpbmUvKSAhPT0gbnVsbDtcbn07XG5jb25zdCBsb2FkZXIkMSA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgeyBkaWFncmFtOiBkaWFncmFtMiB9ID0gYXdhaXQgaW1wb3J0KFwiLi90aW1lbGluZS1kZWZpbml0aW9uLTVlZDM2NmY0LmpzXCIpO1xuICByZXR1cm4geyBpZDogaWQkMSwgZGlhZ3JhbTogZGlhZ3JhbTIgfTtcbn07XG5jb25zdCBwbHVnaW4kMSA9IHtcbiAgaWQ6IGlkJDEsXG4gIGRldGVjdG9yOiBkZXRlY3RvciQxLFxuICBsb2FkZXI6IGxvYWRlciQxXG59O1xuY29uc3QgdGltZWxpbmUgPSBwbHVnaW4kMTtcbmNvbnN0IGlkID0gXCJtaW5kbWFwXCI7XG5jb25zdCBkZXRlY3RvciA9ICh0eHQpID0+IHtcbiAgcmV0dXJuIHR4dC5tYXRjaCgvXlxccyptaW5kbWFwLykgIT09IG51bGw7XG59O1xuY29uc3QgbG9hZGVyID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCB7IGRpYWdyYW06IGRpYWdyYW0yIH0gPSBhd2FpdCBpbXBvcnQoXCIuL21pbmRtYXAtZGVmaW5pdGlvbi00ZmMyNTU3Yy5qc1wiKTtcbiAgcmV0dXJuIHsgaWQsIGRpYWdyYW06IGRpYWdyYW0yIH07XG59O1xuY29uc3QgcGx1Z2luID0ge1xuICBpZCxcbiAgZGV0ZWN0b3IsXG4gIGxvYWRlclxufTtcbmNvbnN0IG1pbmRtYXAgPSBwbHVnaW47XG5sZXQgaGFzTG9hZGVkRGlhZ3JhbXMgPSBmYWxzZTtcbmNvbnN0IGFkZERpYWdyYW1zID0gKCkgPT4ge1xuICBpZiAoaGFzTG9hZGVkRGlhZ3JhbXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaGFzTG9hZGVkRGlhZ3JhbXMgPSB0cnVlO1xuICByZWdpc3RlckRpYWdyYW0oXCJlcnJvclwiLCBlcnJvckRpYWdyYW0sICh0ZXh0KSA9PiB7XG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS50cmltKCkgPT09IFwiZXJyb3JcIjtcbiAgfSk7XG4gIHJlZ2lzdGVyRGlhZ3JhbShcbiAgICBcIi0tLVwiLFxuICAgIC8vIC0tLSBkaWFncmFtIHR5cGUgbWF5IGFwcGVhciBpZiBZQU1MIGZyb250LW1hdHRlciBpcyBub3QgcGFyc2VkIGNvcnJlY3RseVxuICAgIHtcbiAgICAgIGRiOiB7XG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzdHlsZXM6IHt9LFxuICAgICAgLy8gc2hvdWxkIG5ldmVyIGJlIHVzZWRcbiAgICAgIHJlbmRlcmVyOiB7fSxcbiAgICAgIC8vIHNob3VsZCBuZXZlciBiZSB1c2VkXG4gICAgICBwYXJzZXI6IHtcbiAgICAgICAgcGFyc2VyOiB7IHl5OiB7fSB9LFxuICAgICAgICBwYXJzZTogKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwiRGlhZ3JhbXMgYmVnaW5uaW5nIHdpdGggLS0tIGFyZSBub3QgdmFsaWQuIElmIHlvdSB3ZXJlIHRyeWluZyB0byB1c2UgYSBZQU1MIGZyb250LW1hdHRlciwgcGxlYXNlIGVuc3VyZSB0aGF0IHlvdSd2ZSBjb3JyZWN0bHkgb3BlbmVkIGFuZCBjbG9zZWQgdGhlIFlBTUwgZnJvbnQtbWF0dGVyIHdpdGggdW4taW5kZW50ZWQgYC0tLWAgYmxvY2tzXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaW5pdDogKCkgPT4gbnVsbFxuICAgICAgLy8gbm8gb3BcbiAgICB9LFxuICAgICh0ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLnRyaW1TdGFydCgpLnN0YXJ0c1dpdGgoXCItLS1cIik7XG4gICAgfVxuICApO1xuICByZWdpc3RlckxhenlMb2FkZWREaWFncmFtcyhcbiAgICBjNCxcbiAgICBjbGFzc0RpYWdyYW1WMixcbiAgICBjbGFzc0RpYWdyYW0sXG4gICAgZXIsXG4gICAgZ2FudHQsXG4gICAgaW5mbyxcbiAgICBwaWUsXG4gICAgcmVxdWlyZW1lbnQsXG4gICAgc2VxdWVuY2UsXG4gICAgZmxvd2NoYXJ0RWxrLFxuICAgIGZsb3djaGFydFYyLFxuICAgIGZsb3djaGFydCxcbiAgICBtaW5kbWFwLFxuICAgIHRpbWVsaW5lLFxuICAgIGdpdCxcbiAgICBzdGF0ZVYyLFxuICAgIHN0YXRlLFxuICAgIGpvdXJuZXksXG4gICAgcXVhZHJhbnRDaGFydFxuICApO1xufTtcbmNvbnN0IGNsZWFudXBDb21tZW50cyA9ICh0ZXh0KSA9PiB7XG4gIHJldHVybiB0ZXh0LnRyaW1TdGFydCgpLnJlcGxhY2UoL15cXHMqJSUoPyF7KVteXFxuXStcXG4/L2dtLCBcIlwiKTtcbn07XG5jbGFzcyBEaWFncmFtIHtcbiAgY29uc3RydWN0b3IodGV4dCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLnR5cGUgPSBcImdyYXBoXCI7XG4gICAgdGhpcy50ZXh0ICs9IFwiXFxuXCI7XG4gICAgY29uc3QgY25mID0gZ2V0Q29uZmlnJDEoKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy50eXBlID0gZGV0ZWN0VHlwZSh0ZXh0LCBjbmYpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMudHlwZSA9IFwiZXJyb3JcIjtcbiAgICAgIHRoaXMuZGV0ZWN0RXJyb3IgPSBlO1xuICAgIH1cbiAgICBjb25zdCBkaWFncmFtMiA9IGdldERpYWdyYW0odGhpcy50eXBlKTtcbiAgICBsb2ckMS5kZWJ1ZyhcIlR5cGUgXCIgKyB0aGlzLnR5cGUpO1xuICAgIHRoaXMuZGIgPSBkaWFncmFtMi5kYjtcbiAgICAoX2IgPSAoX2EgPSB0aGlzLmRiKS5jbGVhcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgIHRoaXMucmVuZGVyZXIgPSBkaWFncmFtMi5yZW5kZXJlcjtcbiAgICB0aGlzLnBhcnNlciA9IGRpYWdyYW0yLnBhcnNlcjtcbiAgICBjb25zdCBvcmlnaW5hbFBhcnNlID0gdGhpcy5wYXJzZXIucGFyc2UuYmluZCh0aGlzLnBhcnNlcik7XG4gICAgdGhpcy5wYXJzZXIucGFyc2UgPSAodGV4dDIpID0+IG9yaWdpbmFsUGFyc2UoY2xlYW51cENvbW1lbnRzKGV4dHJhY3RGcm9udE1hdHRlcih0ZXh0MiwgdGhpcy5kYikpKTtcbiAgICB0aGlzLnBhcnNlci5wYXJzZXIueXkgPSB0aGlzLmRiO1xuICAgIGlmIChkaWFncmFtMi5pbml0KSB7XG4gICAgICBkaWFncmFtMi5pbml0KGNuZik7XG4gICAgICBsb2ckMS5pbmZvKFwiSW5pdGlhbGl6ZWQgZGlhZ3JhbSBcIiArIHRoaXMudHlwZSwgY25mKTtcbiAgICB9XG4gICAgdGhpcy5wYXJzZSgpO1xuICB9XG4gIHBhcnNlKCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKHRoaXMuZGV0ZWN0RXJyb3IpIHtcbiAgICAgIHRocm93IHRoaXMuZGV0ZWN0RXJyb3I7XG4gICAgfVxuICAgIChfYiA9IChfYSA9IHRoaXMuZGIpLmNsZWFyKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gICAgdGhpcy5wYXJzZXIucGFyc2UodGhpcy50ZXh0KTtcbiAgfVxuICBhc3luYyByZW5kZXIoaWQyLCB2ZXJzaW9uMikge1xuICAgIGF3YWl0IHRoaXMucmVuZGVyZXIuZHJhdyh0aGlzLnRleHQsIGlkMiwgdmVyc2lvbjIsIHRoaXMpO1xuICB9XG4gIGdldFBhcnNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXI7XG4gIH1cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG59XG5jb25zdCBnZXREaWFncmFtRnJvbVRleHQgPSBhc3luYyAodGV4dCkgPT4ge1xuICBjb25zdCB0eXBlMiA9IGRldGVjdFR5cGUodGV4dCwgZ2V0Q29uZmlnJDEoKSk7XG4gIHRyeSB7XG4gICAgZ2V0RGlhZ3JhbSh0eXBlMik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgbG9hZGVyMiA9IGdldERpYWdyYW1Mb2FkZXIodHlwZTIpO1xuICAgIGlmICghbG9hZGVyMikge1xuICAgICAgdGhyb3cgbmV3IFVua25vd25EaWFncmFtRXJyb3IoYERpYWdyYW0gJHt0eXBlMn0gbm90IGZvdW5kLmApO1xuICAgIH1cbiAgICBjb25zdCB7IGlkOiBpZDIsIGRpYWdyYW06IGRpYWdyYW0yIH0gPSBhd2FpdCBsb2FkZXIyKCk7XG4gICAgcmVnaXN0ZXJEaWFncmFtKGlkMiwgZGlhZ3JhbTIpO1xuICB9XG4gIHJldHVybiBuZXcgRGlhZ3JhbSh0ZXh0KTtcbn07XG5sZXQgaW50ZXJhY3Rpb25GdW5jdGlvbnMgPSBbXTtcbmNvbnN0IGFkZEZ1bmN0aW9uID0gKGZ1bmMpID0+IHtcbiAgaW50ZXJhY3Rpb25GdW5jdGlvbnMucHVzaChmdW5jKTtcbn07XG5jb25zdCBhdHRhY2hGdW5jdGlvbnMgPSAoKSA9PiB7XG4gIGludGVyYWN0aW9uRnVuY3Rpb25zLmZvckVhY2goKGYpID0+IHtcbiAgICBmKCk7XG4gIH0pO1xuICBpbnRlcmFjdGlvbkZ1bmN0aW9ucyA9IFtdO1xufTtcbmNvbnN0IFNWR19ST0xFID0gXCJncmFwaGljcy1kb2N1bWVudCBkb2N1bWVudFwiO1xuZnVuY3Rpb24gc2V0QTExeURpYWdyYW1JbmZvKHN2ZywgZGlhZ3JhbVR5cGUpIHtcbiAgc3ZnLmF0dHIoXCJyb2xlXCIsIFNWR19ST0xFKTtcbiAgaWYgKCFpc0VtcHR5KGRpYWdyYW1UeXBlKSkge1xuICAgIHN2Zy5hdHRyKFwiYXJpYS1yb2xlZGVzY3JpcHRpb25cIiwgZGlhZ3JhbVR5cGUpO1xuICB9XG59XG5mdW5jdGlvbiBhZGRTVkdhMTF5VGl0bGVEZXNjcmlwdGlvbihzdmcsIGExMXlUaXRsZSwgYTExeURlc2MsIGJhc2VJZCkge1xuICBpZiAoc3ZnLmluc2VydCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChhMTF5VGl0bGUgfHwgYTExeURlc2MpIHtcbiAgICBpZiAoYTExeURlc2MpIHtcbiAgICAgIGNvbnN0IGRlc2NJZCA9IFwiY2hhcnQtZGVzYy1cIiArIGJhc2VJZDtcbiAgICAgIHN2Zy5hdHRyKFwiYXJpYS1kZXNjcmliZWRieVwiLCBkZXNjSWQpO1xuICAgICAgc3ZnLmluc2VydChcImRlc2NcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcImlkXCIsIGRlc2NJZCkudGV4dChhMTF5RGVzYyk7XG4gICAgfVxuICAgIGlmIChhMTF5VGl0bGUpIHtcbiAgICAgIGNvbnN0IHRpdGxlSWQgPSBcImNoYXJ0LXRpdGxlLVwiICsgYmFzZUlkO1xuICAgICAgc3ZnLmF0dHIoXCJhcmlhLWxhYmVsbGVkYnlcIiwgdGl0bGVJZCk7XG4gICAgICBzdmcuaW5zZXJ0KFwidGl0bGVcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcImlkXCIsIHRpdGxlSWQpLnRleHQoYTExeVRpdGxlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5jb25zdCBDTEFTU0RFRl9ESUFHUkFNUyA9IFtcbiAgXCJncmFwaFwiLFxuICBcImZsb3djaGFydFwiLFxuICBcImZsb3djaGFydC12MlwiLFxuICBcImZsb3djaGFydC1lbGtcIixcbiAgXCJzdGF0ZURpYWdyYW1cIixcbiAgXCJzdGF0ZURpYWdyYW0tdjJcIlxuXTtcbmNvbnN0IE1BWF9URVhUTEVOR1RIID0gNWU0O1xuY29uc3QgTUFYX1RFWFRMRU5HVEhfRVhDRUVERURfTVNHID0gXCJncmFwaCBUQjthW01heGltdW0gdGV4dCBzaXplIGluIGRpYWdyYW0gZXhjZWVkZWRdO3N0eWxlIGEgZmlsbDojZmFhXCI7XG5jb25zdCBTRUNVUklUWV9MVkxfU0FOREJPWCA9IFwic2FuZGJveFwiO1xuY29uc3QgU0VDVVJJVFlfTFZMX0xPT1NFID0gXCJsb29zZVwiO1xuY29uc3QgWE1MTlNfU1ZHX1NURCA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbmNvbnN0IFhNTE5TX1hMSU5LX1NURCA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiO1xuY29uc3QgWE1MTlNfWEhUTUxfU1REID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG5jb25zdCBJRlJBTUVfV0lEVEggPSBcIjEwMCVcIjtcbmNvbnN0IElGUkFNRV9IRUlHSFQgPSBcIjEwMCVcIjtcbmNvbnN0IElGUkFNRV9TVFlMRVMgPSBcImJvcmRlcjowO21hcmdpbjowO1wiO1xuY29uc3QgSUZSQU1FX0JPRFlfU1RZTEUgPSBcIm1hcmdpbjowXCI7XG5jb25zdCBJRlJBTUVfU0FOREJPWF9PUFRTID0gXCJhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb24gYWxsb3ctcG9wdXBzXCI7XG5jb25zdCBJRlJBTUVfTk9UX1NVUFBPUlRFRF9NU0cgPSAnVGhlIFwiaWZyYW1lXCIgdGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyLic7XG5jb25zdCBET01QVVJJRllfVEFHUyA9IFtcImZvcmVpZ25vYmplY3RcIl07XG5jb25zdCBET01QVVJJRllfQVRUUiA9IFtcImRvbWluYW50LWJhc2VsaW5lXCJdO1xuYXN5bmMgZnVuY3Rpb24gcGFyc2UkMSh0ZXh0LCBwYXJzZU9wdGlvbnMpIHtcbiAgYWRkRGlhZ3JhbXMoKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkaWFncmFtMiA9IGF3YWl0IGdldERpYWdyYW1Gcm9tVGV4dCh0ZXh0KTtcbiAgICBkaWFncmFtMi5wYXJzZSgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChwYXJzZU9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IHBhcnNlT3B0aW9ucy5zdXBwcmVzc0Vycm9ycykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmNvbnN0IGVuY29kZUVudGl0aWVzID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgdHh0ID0gdGV4dDtcbiAgdHh0ID0gdHh0LnJlcGxhY2UoL3N0eWxlLio6XFxTKiMuKjsvZywgZnVuY3Rpb24ocykge1xuICAgIHJldHVybiBzLnN1YnN0cmluZygwLCBzLmxlbmd0aCAtIDEpO1xuICB9KTtcbiAgdHh0ID0gdHh0LnJlcGxhY2UoL2NsYXNzRGVmLio6XFxTKiMuKjsvZywgZnVuY3Rpb24ocykge1xuICAgIHJldHVybiBzLnN1YnN0cmluZygwLCBzLmxlbmd0aCAtIDEpO1xuICB9KTtcbiAgdHh0ID0gdHh0LnJlcGxhY2UoLyNcXHcrOy9nLCBmdW5jdGlvbihzKSB7XG4gICAgY29uc3QgaW5uZXJUeHQgPSBzLnN1YnN0cmluZygxLCBzLmxlbmd0aCAtIDEpO1xuICAgIGNvbnN0IGlzSW50ID0gL15cXCs/XFxkKyQvLnRlc3QoaW5uZXJUeHQpO1xuICAgIGlmIChpc0ludCkge1xuICAgICAgcmV0dXJuIFwi76yCwrDCsFwiICsgaW5uZXJUeHQgKyBcIsK2w59cIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwi76yCwrBcIiArIGlubmVyVHh0ICsgXCLCtsOfXCI7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHR4dDtcbn07XG5jb25zdCBkZWNvZGVFbnRpdGllcyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSgv76yCwrDCsC9nLCBcIiYjXCIpLnJlcGxhY2UoL++sgsKwL2csIFwiJlwiKS5yZXBsYWNlKC/CtsOfL2csIFwiO1wiKTtcbn07XG5jb25zdCBjc3NJbXBvcnRhbnRTdHlsZXMgPSAoY3NzQ2xhc3MsIGVsZW1lbnQsIGNzc0NsYXNzZXMgPSBbXSkgPT4ge1xuICByZXR1cm4gYFxuLiR7Y3NzQ2xhc3N9ICR7ZWxlbWVudH0geyAke2Nzc0NsYXNzZXMuam9pbihcIiAhaW1wb3J0YW50OyBcIil9ICFpbXBvcnRhbnQ7IH1gO1xufTtcbmNvbnN0IGNyZWF0ZUNzc1N0eWxlcyA9IChjb25maWcyLCBncmFwaFR5cGUsIGNsYXNzRGVmcyA9IHt9KSA9PiB7XG4gIHZhciBfYTtcbiAgbGV0IGNzc1N0eWxlcyA9IFwiXCI7XG4gIGlmIChjb25maWcyLnRoZW1lQ1NTICE9PSB2b2lkIDApIHtcbiAgICBjc3NTdHlsZXMgKz0gYFxuJHtjb25maWcyLnRoZW1lQ1NTfWA7XG4gIH1cbiAgaWYgKGNvbmZpZzIuZm9udEZhbWlseSAhPT0gdm9pZCAwKSB7XG4gICAgY3NzU3R5bGVzICs9IGBcbjpyb290IHsgLS1tZXJtYWlkLWZvbnQtZmFtaWx5OiAke2NvbmZpZzIuZm9udEZhbWlseX19YDtcbiAgfVxuICBpZiAoY29uZmlnMi5hbHRGb250RmFtaWx5ICE9PSB2b2lkIDApIHtcbiAgICBjc3NTdHlsZXMgKz0gYFxuOnJvb3QgeyAtLW1lcm1haWQtYWx0LWZvbnQtZmFtaWx5OiAke2NvbmZpZzIuYWx0Rm9udEZhbWlseX19YDtcbiAgfVxuICBpZiAoIWlzRW1wdHkoY2xhc3NEZWZzKSAmJiBDTEFTU0RFRl9ESUFHUkFNUy5pbmNsdWRlcyhncmFwaFR5cGUpKSB7XG4gICAgY29uc3QgaHRtbExhYmVscyA9IGNvbmZpZzIuaHRtbExhYmVscyB8fCAoKF9hID0gY29uZmlnMi5mbG93Y2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYS5odG1sTGFiZWxzKTtcbiAgICBjb25zdCBjc3NIdG1sRWxlbWVudHMgPSBbXCI+ICpcIiwgXCJzcGFuXCJdO1xuICAgIGNvbnN0IGNzc1NoYXBlRWxlbWVudHMgPSBbXCJyZWN0XCIsIFwicG9seWdvblwiLCBcImVsbGlwc2VcIiwgXCJjaXJjbGVcIiwgXCJwYXRoXCJdO1xuICAgIGNvbnN0IGNzc0VsZW1lbnRzID0gaHRtbExhYmVscyA/IGNzc0h0bWxFbGVtZW50cyA6IGNzc1NoYXBlRWxlbWVudHM7XG4gICAgZm9yIChjb25zdCBjbGFzc0lkIGluIGNsYXNzRGVmcykge1xuICAgICAgY29uc3Qgc3R5bGVDbGFzc0RlZiA9IGNsYXNzRGVmc1tjbGFzc0lkXTtcbiAgICAgIGlmICghaXNFbXB0eShzdHlsZUNsYXNzRGVmLnN0eWxlcykpIHtcbiAgICAgICAgY3NzRWxlbWVudHMuZm9yRWFjaCgoY3NzRWxlbWVudCkgPT4ge1xuICAgICAgICAgIGNzc1N0eWxlcyArPSBjc3NJbXBvcnRhbnRTdHlsZXMoc3R5bGVDbGFzc0RlZi5pZCwgY3NzRWxlbWVudCwgc3R5bGVDbGFzc0RlZi5zdHlsZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNFbXB0eShzdHlsZUNsYXNzRGVmLnRleHRTdHlsZXMpKSB7XG4gICAgICAgIGNzc1N0eWxlcyArPSBjc3NJbXBvcnRhbnRTdHlsZXMoc3R5bGVDbGFzc0RlZi5pZCwgXCJ0c3BhblwiLCBzdHlsZUNsYXNzRGVmLnRleHRTdHlsZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY3NzU3R5bGVzO1xufTtcbmNvbnN0IGNyZWF0ZVVzZXJTdHlsZXMgPSAoY29uZmlnMiwgZ3JhcGhUeXBlLCBjbGFzc0RlZnMsIHN2Z0lkKSA9PiB7XG4gIGNvbnN0IHVzZXJDU1NzdHlsZXMgPSBjcmVhdGVDc3NTdHlsZXMoY29uZmlnMiwgZ3JhcGhUeXBlLCBjbGFzc0RlZnMpO1xuICBjb25zdCBhbGxTdHlsZXMgPSBnZXRTdHlsZXMkMihncmFwaFR5cGUsIHVzZXJDU1NzdHlsZXMsIGNvbmZpZzIudGhlbWVWYXJpYWJsZXMpO1xuICByZXR1cm4gc2VyaWFsaXplKGNvbXBpbGUoYCR7c3ZnSWR9eyR7YWxsU3R5bGVzfX1gKSwgc3RyaW5naWZ5KTtcbn07XG5jb25zdCBjbGVhblVwU3ZnQ29kZSA9IChzdmdDb2RlID0gXCJcIiwgaW5TYW5kYm94TW9kZSwgdXNlQXJyb3dNYXJrZXJVcmxzKSA9PiB7XG4gIGxldCBjbGVhbmVkVXBTdmcgPSBzdmdDb2RlO1xuICBpZiAoIXVzZUFycm93TWFya2VyVXJscyAmJiAhaW5TYW5kYm94TW9kZSkge1xuICAgIGNsZWFuZWRVcFN2ZyA9IGNsZWFuZWRVcFN2Zy5yZXBsYWNlKFxuICAgICAgL21hcmtlci1lbmQ9XCJ1cmxcXChbXFxkKy4vOj0/QS1aYS16LV0qPyMvZyxcbiAgICAgICdtYXJrZXItZW5kPVwidXJsKCMnXG4gICAgKTtcbiAgfVxuICBjbGVhbmVkVXBTdmcgPSBkZWNvZGVFbnRpdGllcyhjbGVhbmVkVXBTdmcpO1xuICBjbGVhbmVkVXBTdmcgPSBjbGVhbmVkVXBTdmcucmVwbGFjZSgvPGJyPi9nLCBcIjxici8+XCIpO1xuICByZXR1cm4gY2xlYW5lZFVwU3ZnO1xufTtcbmNvbnN0IHB1dEludG9JRnJhbWUgPSAoc3ZnQ29kZSA9IFwiXCIsIHN2Z0VsZW1lbnQpID0+IHtcbiAgY29uc3QgaGVpZ2h0ID0gc3ZnRWxlbWVudCA/IHN2Z0VsZW1lbnQudmlld0JveC5iYXNlVmFsLmhlaWdodCArIFwicHhcIiA6IElGUkFNRV9IRUlHSFQ7XG4gIGNvbnN0IGJhc2U2NGVuY29kZWRTcmMgPSBidG9hKCc8Ym9keSBzdHlsZT1cIicgKyBJRlJBTUVfQk9EWV9TVFlMRSArICdcIj4nICsgc3ZnQ29kZSArIFwiPC9ib2R5PlwiKTtcbiAgcmV0dXJuIGA8aWZyYW1lIHN0eWxlPVwid2lkdGg6JHtJRlJBTUVfV0lEVEh9O2hlaWdodDoke2hlaWdodH07JHtJRlJBTUVfU1RZTEVTfVwiIHNyYz1cImRhdGE6dGV4dC9odG1sO2Jhc2U2NCwke2Jhc2U2NGVuY29kZWRTcmN9XCIgc2FuZGJveD1cIiR7SUZSQU1FX1NBTkRCT1hfT1BUU31cIj5cbiAgJHtJRlJBTUVfTk9UX1NVUFBPUlRFRF9NU0d9XG48L2lmcmFtZT5gO1xufTtcbmNvbnN0IGFwcGVuZERpdlN2Z0cgPSAocGFyZW50Um9vdCwgaWQyLCBlbmNsb3NpbmdEaXZJZCwgZGl2U3R5bGUsIHN2Z1hsaW5rKSA9PiB7XG4gIGNvbnN0IGVuY2xvc2luZ0RpdiA9IHBhcmVudFJvb3QuYXBwZW5kKFwiZGl2XCIpO1xuICBlbmNsb3NpbmdEaXYuYXR0cihcImlkXCIsIGVuY2xvc2luZ0RpdklkKTtcbiAgaWYgKGRpdlN0eWxlKSB7XG4gICAgZW5jbG9zaW5nRGl2LmF0dHIoXCJzdHlsZVwiLCBkaXZTdHlsZSk7XG4gIH1cbiAgY29uc3Qgc3ZnTm9kZSA9IGVuY2xvc2luZ0Rpdi5hcHBlbmQoXCJzdmdcIikuYXR0cihcImlkXCIsIGlkMikuYXR0cihcIndpZHRoXCIsIFwiMTAwJVwiKS5hdHRyKFwieG1sbnNcIiwgWE1MTlNfU1ZHX1NURCk7XG4gIGlmIChzdmdYbGluaykge1xuICAgIHN2Z05vZGUuYXR0cihcInhtbG5zOnhsaW5rXCIsIHN2Z1hsaW5rKTtcbiAgfVxuICBzdmdOb2RlLmFwcGVuZChcImdcIik7XG4gIHJldHVybiBwYXJlbnRSb290O1xufTtcbmZ1bmN0aW9uIHNhbmRib3hlZElmcmFtZShwYXJlbnROb2RlLCBpRnJhbWVJZCkge1xuICByZXR1cm4gcGFyZW50Tm9kZS5hcHBlbmQoXCJpZnJhbWVcIikuYXR0cihcImlkXCIsIGlGcmFtZUlkKS5hdHRyKFwic3R5bGVcIiwgXCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiKS5hdHRyKFwic2FuZGJveFwiLCBcIlwiKTtcbn1cbmNvbnN0IHJlbW92ZUV4aXN0aW5nRWxlbWVudHMgPSAoZG9jLCBpZDIsIGRpdklkLCBpRnJhbWVJZCkgPT4ge1xuICB2YXIgX2EsIF9iLCBfYztcbiAgKF9hID0gZG9jLmdldEVsZW1lbnRCeUlkKGlkMikpID09IG51bGwgPyB2b2lkIDAgOiBfYS5yZW1vdmUoKTtcbiAgKF9iID0gZG9jLmdldEVsZW1lbnRCeUlkKGRpdklkKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLnJlbW92ZSgpO1xuICAoX2MgPSBkb2MuZ2V0RWxlbWVudEJ5SWQoaUZyYW1lSWQpKSA9PSBudWxsID8gdm9pZCAwIDogX2MucmVtb3ZlKCk7XG59O1xuY29uc3QgcmVuZGVyJDEgPSBhc3luYyBmdW5jdGlvbihpZDIsIHRleHQsIHN2Z0NvbnRhaW5pbmdFbGVtZW50KSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgYWRkRGlhZ3JhbXMoKTtcbiAgcmVzZXQoKTtcbiAgY29uc3QgZ3JhcGhJbml0ID0gdXRpbHMuZGV0ZWN0SW5pdCh0ZXh0KTtcbiAgaWYgKGdyYXBoSW5pdCkge1xuICAgIGRpcmVjdGl2ZVNhbml0aXplcihncmFwaEluaXQpO1xuICAgIGFkZERpcmVjdGl2ZShncmFwaEluaXQpO1xuICB9XG4gIGNvbnN0IGNvbmZpZzIgPSBnZXRDb25maWckMSgpO1xuICBsb2ckMS5kZWJ1Zyhjb25maWcyKTtcbiAgaWYgKHRleHQubGVuZ3RoID4gKChjb25maWcyID09IG51bGwgPyB2b2lkIDAgOiBjb25maWcyLm1heFRleHRTaXplKSA/PyBNQVhfVEVYVExFTkdUSCkpIHtcbiAgICB0ZXh0ID0gTUFYX1RFWFRMRU5HVEhfRVhDRUVERURfTVNHO1xuICB9XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIik7XG4gIHRleHQgPSB0ZXh0LnJlcGxhY2UoXG4gICAgLzwoXFx3KykoW14+XSopPi9nLFxuICAgIChtYXRjaCwgdGFnLCBhdHRyaWJ1dGVzKSA9PiBcIjxcIiArIHRhZyArIGF0dHJpYnV0ZXMucmVwbGFjZSgvPVwiKFteXCJdKilcIi9nLCBcIj0nJDEnXCIpICsgXCI+XCJcbiAgKTtcbiAgY29uc3QgaWRTZWxlY3RvciA9IFwiI1wiICsgaWQyO1xuICBjb25zdCBpRnJhbWVJRCA9IFwiaVwiICsgaWQyO1xuICBjb25zdCBpRnJhbWVJRF9zZWxlY3RvciA9IFwiI1wiICsgaUZyYW1lSUQ7XG4gIGNvbnN0IGVuY2xvc2luZ0RpdklEID0gXCJkXCIgKyBpZDI7XG4gIGNvbnN0IGVuY2xvc2luZ0RpdklEX3NlbGVjdG9yID0gXCIjXCIgKyBlbmNsb3NpbmdEaXZJRDtcbiAgbGV0IHJvb3QgPSBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBpc1NhbmRib3hlZCA9IGNvbmZpZzIuc2VjdXJpdHlMZXZlbCA9PT0gU0VDVVJJVFlfTFZMX1NBTkRCT1g7XG4gIGNvbnN0IGlzTG9vc2VTZWN1cml0eUxldmVsID0gY29uZmlnMi5zZWN1cml0eUxldmVsID09PSBTRUNVUklUWV9MVkxfTE9PU0U7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSBjb25maWcyLmZvbnRGYW1pbHk7XG4gIGlmIChzdmdDb250YWluaW5nRWxlbWVudCAhPT0gdm9pZCAwKSB7XG4gICAgaWYgKHN2Z0NvbnRhaW5pbmdFbGVtZW50KSB7XG4gICAgICBzdmdDb250YWluaW5nRWxlbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuICAgIH1cbiAgICBpZiAoaXNTYW5kYm94ZWQpIHtcbiAgICAgIGNvbnN0IGlmcmFtZSA9IHNhbmRib3hlZElmcmFtZShzZWxlY3Qoc3ZnQ29udGFpbmluZ0VsZW1lbnQpLCBpRnJhbWVJRCk7XG4gICAgICByb290ID0gc2VsZWN0KGlmcmFtZS5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KTtcbiAgICAgIHJvb3Qubm9kZSgpLnN0eWxlLm1hcmdpbiA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3QgPSBzZWxlY3Qoc3ZnQ29udGFpbmluZ0VsZW1lbnQpO1xuICAgIH1cbiAgICBhcHBlbmREaXZTdmdHKHJvb3QsIGlkMiwgZW5jbG9zaW5nRGl2SUQsIGBmb250LWZhbWlseTogJHtmb250RmFtaWx5fWAsIFhNTE5TX1hMSU5LX1NURCk7XG4gIH0gZWxzZSB7XG4gICAgcmVtb3ZlRXhpc3RpbmdFbGVtZW50cyhkb2N1bWVudCwgaWQyLCBlbmNsb3NpbmdEaXZJRCwgaUZyYW1lSUQpO1xuICAgIGlmIChpc1NhbmRib3hlZCkge1xuICAgICAgY29uc3QgaWZyYW1lID0gc2FuZGJveGVkSWZyYW1lKHNlbGVjdChcImJvZHlcIiksIGlGcmFtZUlEKTtcbiAgICAgIHJvb3QgPSBzZWxlY3QoaWZyYW1lLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpO1xuICAgICAgcm9vdC5ub2RlKCkuc3R5bGUubWFyZ2luID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdCA9IHNlbGVjdChcImJvZHlcIik7XG4gICAgfVxuICAgIGFwcGVuZERpdlN2Z0cocm9vdCwgaWQyLCBlbmNsb3NpbmdEaXZJRCk7XG4gIH1cbiAgdGV4dCA9IGVuY29kZUVudGl0aWVzKHRleHQpO1xuICBsZXQgZGlhZztcbiAgbGV0IHBhcnNlRW5jb3VudGVyZWRFeGNlcHRpb247XG4gIHRyeSB7XG4gICAgZGlhZyA9IGF3YWl0IGdldERpYWdyYW1Gcm9tVGV4dCh0ZXh0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBkaWFnID0gbmV3IERpYWdyYW0oXCJlcnJvclwiKTtcbiAgICBwYXJzZUVuY291bnRlcmVkRXhjZXB0aW9uID0gZXJyb3I7XG4gIH1cbiAgY29uc3QgZWxlbWVudCA9IHJvb3Quc2VsZWN0KGVuY2xvc2luZ0RpdklEX3NlbGVjdG9yKS5ub2RlKCk7XG4gIGNvbnN0IGdyYXBoVHlwZSA9IGRpYWcudHlwZTtcbiAgY29uc3Qgc3ZnID0gZWxlbWVudC5maXJzdENoaWxkO1xuICBjb25zdCBmaXJzdENoaWxkID0gc3ZnLmZpcnN0Q2hpbGQ7XG4gIGNvbnN0IGRpYWdyYW1DbGFzc0RlZnMgPSBDTEFTU0RFRl9ESUFHUkFNUy5pbmNsdWRlcyhncmFwaFR5cGUpID8gZGlhZy5yZW5kZXJlci5nZXRDbGFzc2VzKHRleHQsIGRpYWcpIDoge307XG4gIGNvbnN0IHJ1bGVzID0gY3JlYXRlVXNlclN0eWxlcyhcbiAgICBjb25maWcyLFxuICAgIGdyYXBoVHlwZSxcbiAgICAvLyBAdHMtaWdub3JlIGNvbnZlcnQgcmVuZGVyZXIgdG8gVFMuXG4gICAgZGlhZ3JhbUNsYXNzRGVmcyxcbiAgICBpZFNlbGVjdG9yXG4gICk7XG4gIGNvbnN0IHN0eWxlMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgc3R5bGUxLmlubmVySFRNTCA9IHJ1bGVzO1xuICBzdmcuaW5zZXJ0QmVmb3JlKHN0eWxlMSwgZmlyc3RDaGlsZCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZGlhZy5yZW5kZXJlci5kcmF3KHRleHQsIGlkMiwgdmVyc2lvbiwgZGlhZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvclJlbmRlcmVyLmRyYXcodGV4dCwgaWQyLCB2ZXJzaW9uKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIGNvbnN0IHN2Z05vZGUgPSByb290LnNlbGVjdChgJHtlbmNsb3NpbmdEaXZJRF9zZWxlY3Rvcn0gc3ZnYCk7XG4gIGNvbnN0IGExMXlUaXRsZSA9IChfYiA9IChfYSA9IGRpYWcuZGIpLmdldEFjY1RpdGxlKSA9PSBudWxsID8gdm9pZCAwIDogX2IuY2FsbChfYSk7XG4gIGNvbnN0IGExMXlEZXNjciA9IChfZCA9IChfYyA9IGRpYWcuZGIpLmdldEFjY0Rlc2NyaXB0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX2QuY2FsbChfYyk7XG4gIGFkZEExMXlJbmZvKGdyYXBoVHlwZSwgc3ZnTm9kZSwgYTExeVRpdGxlLCBhMTF5RGVzY3IpO1xuICByb290LnNlbGVjdChgW2lkPVwiJHtpZDJ9XCJdYCkuc2VsZWN0QWxsKFwiZm9yZWlnbm9iamVjdCA+ICpcIikuYXR0cihcInhtbG5zXCIsIFhNTE5TX1hIVE1MX1NURCk7XG4gIGxldCBzdmdDb2RlID0gcm9vdC5zZWxlY3QoZW5jbG9zaW5nRGl2SURfc2VsZWN0b3IpLm5vZGUoKS5pbm5lckhUTUw7XG4gIGxvZyQxLmRlYnVnKFwiY29uZmlnLmFycm93TWFya2VyQWJzb2x1dGVcIiwgY29uZmlnMi5hcnJvd01hcmtlckFic29sdXRlKTtcbiAgc3ZnQ29kZSA9IGNsZWFuVXBTdmdDb2RlKHN2Z0NvZGUsIGlzU2FuZGJveGVkLCBldmFsdWF0ZShjb25maWcyLmFycm93TWFya2VyQWJzb2x1dGUpKTtcbiAgaWYgKGlzU2FuZGJveGVkKSB7XG4gICAgY29uc3Qgc3ZnRWwgPSByb290LnNlbGVjdChlbmNsb3NpbmdEaXZJRF9zZWxlY3RvciArIFwiIHN2Z1wiKS5ub2RlKCk7XG4gICAgc3ZnQ29kZSA9IHB1dEludG9JRnJhbWUoc3ZnQ29kZSwgc3ZnRWwpO1xuICB9IGVsc2UgaWYgKCFpc0xvb3NlU2VjdXJpdHlMZXZlbCkge1xuICAgIHN2Z0NvZGUgPSBET01QdXJpZnkuc2FuaXRpemUoc3ZnQ29kZSwge1xuICAgICAgQUREX1RBR1M6IERPTVBVUklGWV9UQUdTLFxuICAgICAgQUREX0FUVFI6IERPTVBVUklGWV9BVFRSXG4gICAgfSk7XG4gIH1cbiAgYXR0YWNoRnVuY3Rpb25zKCk7XG4gIGlmIChwYXJzZUVuY291bnRlcmVkRXhjZXB0aW9uKSB7XG4gICAgdGhyb3cgcGFyc2VFbmNvdW50ZXJlZEV4Y2VwdGlvbjtcbiAgfVxuICBjb25zdCB0bXBFbGVtZW50U2VsZWN0b3IgPSBpc1NhbmRib3hlZCA/IGlGcmFtZUlEX3NlbGVjdG9yIDogZW5jbG9zaW5nRGl2SURfc2VsZWN0b3I7XG4gIGNvbnN0IG5vZGUgPSBzZWxlY3QodG1wRWxlbWVudFNlbGVjdG9yKS5ub2RlKCk7XG4gIGlmIChub2RlICYmIFwicmVtb3ZlXCIgaW4gbm9kZSkge1xuICAgIG5vZGUucmVtb3ZlKCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdmc6IHN2Z0NvZGUsXG4gICAgYmluZEZ1bmN0aW9uczogZGlhZy5kYi5iaW5kRnVuY3Rpb25zXG4gIH07XG59O1xuZnVuY3Rpb24gaW5pdGlhbGl6ZSQxKG9wdGlvbnMgPSB7fSkge1xuICB2YXIgX2E7XG4gIGlmICgob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5mb250RmFtaWx5KSAmJiAhKChfYSA9IG9wdGlvbnMudGhlbWVWYXJpYWJsZXMpID09IG51bGwgPyB2b2lkIDAgOiBfYS5mb250RmFtaWx5KSkge1xuICAgIGlmICghb3B0aW9ucy50aGVtZVZhcmlhYmxlcykge1xuICAgICAgb3B0aW9ucy50aGVtZVZhcmlhYmxlcyA9IHt9O1xuICAgIH1cbiAgICBvcHRpb25zLnRoZW1lVmFyaWFibGVzLmZvbnRGYW1pbHkgPSBvcHRpb25zLmZvbnRGYW1pbHk7XG4gIH1cbiAgc2F2ZUNvbmZpZ0Zyb21Jbml0aWFsaXplKG9wdGlvbnMpO1xuICBpZiAoKG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMudGhlbWUpICYmIG9wdGlvbnMudGhlbWUgaW4gdGhlbWUpIHtcbiAgICBvcHRpb25zLnRoZW1lVmFyaWFibGVzID0gdGhlbWVbb3B0aW9ucy50aGVtZV0uZ2V0VGhlbWVWYXJpYWJsZXMoXG4gICAgICBvcHRpb25zLnRoZW1lVmFyaWFibGVzXG4gICAgKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucy50aGVtZVZhcmlhYmxlcyA9IHRoZW1lLmRlZmF1bHQuZ2V0VGhlbWVWYXJpYWJsZXMob3B0aW9ucy50aGVtZVZhcmlhYmxlcyk7XG4gIH1cbiAgY29uc3QgY29uZmlnMiA9IHR5cGVvZiBvcHRpb25zID09PSBcIm9iamVjdFwiID8gc2V0U2l0ZUNvbmZpZyhvcHRpb25zKSA6IGdldFNpdGVDb25maWcoKTtcbiAgc2V0TG9nTGV2ZWwkMShjb25maWcyLmxvZ0xldmVsKTtcbiAgYWRkRGlhZ3JhbXMoKTtcbn1cbmZ1bmN0aW9uIGFkZEExMXlJbmZvKGdyYXBoVHlwZSwgc3ZnTm9kZSwgYTExeVRpdGxlLCBhMTF5RGVzY3IpIHtcbiAgc2V0QTExeURpYWdyYW1JbmZvKHN2Z05vZGUsIGdyYXBoVHlwZSk7XG4gIGFkZFNWR2ExMXlUaXRsZURlc2NyaXB0aW9uKHN2Z05vZGUsIGExMXlUaXRsZSwgYTExeURlc2NyLCBzdmdOb2RlLmF0dHIoXCJpZFwiKSk7XG59XG5jb25zdCBtZXJtYWlkQVBJID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHJlbmRlcjogcmVuZGVyJDEsXG4gIHBhcnNlOiBwYXJzZSQxLFxuICBwYXJzZURpcmVjdGl2ZTogcGFyc2VEaXJlY3RpdmUkMSxcbiAgZ2V0RGlhZ3JhbUZyb21UZXh0LFxuICBpbml0aWFsaXplOiBpbml0aWFsaXplJDEsXG4gIGdldENvbmZpZzogZ2V0Q29uZmlnJDEsXG4gIHNldENvbmZpZyxcbiAgZ2V0U2l0ZUNvbmZpZyxcbiAgdXBkYXRlU2l0ZUNvbmZpZyxcbiAgcmVzZXQ6ICgpID0+IHtcbiAgICByZXNldCgpO1xuICB9LFxuICBnbG9iYWxSZXNldDogKCkgPT4ge1xuICAgIHJlc2V0KGRlZmF1bHRDb25maWcpO1xuICB9LFxuICBkZWZhdWx0Q29uZmlnXG59KTtcbnNldExvZ0xldmVsJDEoZ2V0Q29uZmlnJDEoKS5sb2dMZXZlbCk7XG5yZXNldChnZXRDb25maWckMSgpKTtcbmNvbnN0IGhhbmRsZUVycm9yID0gKGVycm9yLCBlcnJvcnMsIHBhcnNlRXJyb3IpID0+IHtcbiAgbG9nJDEud2FybihlcnJvcik7XG4gIGlmIChpc0RldGFpbGVkRXJyb3IoZXJyb3IpKSB7XG4gICAgaWYgKHBhcnNlRXJyb3IpIHtcbiAgICAgIHBhcnNlRXJyb3IoZXJyb3Iuc3RyLCBlcnJvci5oYXNoKTtcbiAgICB9XG4gICAgZXJyb3JzLnB1c2goeyAuLi5lcnJvciwgbWVzc2FnZTogZXJyb3Iuc3RyLCBlcnJvciB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAocGFyc2VFcnJvcikge1xuICAgICAgcGFyc2VFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgIHN0cjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgaGFzaDogZXJyb3IubmFtZSxcbiAgICAgICAgZXJyb3JcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IHJ1biA9IGFzeW5jIGZ1bmN0aW9uKG9wdGlvbnMgPSB7XG4gIHF1ZXJ5U2VsZWN0b3I6IFwiLm1lcm1haWRcIlxufSkge1xuICB0cnkge1xuICAgIGF3YWl0IHJ1blRocm93c0Vycm9ycyhvcHRpb25zKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChpc0RldGFpbGVkRXJyb3IoZSkpIHtcbiAgICAgIGxvZyQxLmVycm9yKGUuc3RyKTtcbiAgICB9XG4gICAgaWYgKG1lcm1haWQucGFyc2VFcnJvcikge1xuICAgICAgbWVybWFpZC5wYXJzZUVycm9yKGUpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NFcnJvcnMpIHtcbiAgICAgIGxvZyQxLmVycm9yKFwiVXNlIHRoZSBzdXBwcmVzc0Vycm9ycyBvcHRpb24gdG8gc3VwcHJlc3MgdGhlc2UgZXJyb3JzXCIpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBydW5UaHJvd3NFcnJvcnMgPSBhc3luYyBmdW5jdGlvbih7IHBvc3RSZW5kZXJDYWxsYmFjaywgcXVlcnlTZWxlY3Rvciwgbm9kZXMgfSA9IHtcbiAgcXVlcnlTZWxlY3RvcjogXCIubWVybWFpZFwiXG59KSB7XG4gIGNvbnN0IGNvbmYgPSBtZXJtYWlkQVBJLmdldENvbmZpZygpO1xuICBsb2ckMS5kZWJ1ZyhgJHshcG9zdFJlbmRlckNhbGxiYWNrID8gXCJObyBcIiA6IFwiXCJ9Q2FsbGJhY2sgZnVuY3Rpb24gZm91bmRgKTtcbiAgbGV0IG5vZGVzVG9Qcm9jZXNzO1xuICBpZiAobm9kZXMpIHtcbiAgICBub2Rlc1RvUHJvY2VzcyA9IG5vZGVzO1xuICB9IGVsc2UgaWYgKHF1ZXJ5U2VsZWN0b3IpIHtcbiAgICBub2Rlc1RvUHJvY2VzcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocXVlcnlTZWxlY3Rvcik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm9kZXMgYW5kIHF1ZXJ5U2VsZWN0b3IgYXJlIGJvdGggdW5kZWZpbmVkXCIpO1xuICB9XG4gIGxvZyQxLmRlYnVnKGBGb3VuZCAke25vZGVzVG9Qcm9jZXNzLmxlbmd0aH0gZGlhZ3JhbXNgKTtcbiAgaWYgKChjb25mID09IG51bGwgPyB2b2lkIDAgOiBjb25mLnN0YXJ0T25Mb2FkKSAhPT0gdm9pZCAwKSB7XG4gICAgbG9nJDEuZGVidWcoXCJTdGFydCBPbiBMb2FkOiBcIiArIChjb25mID09IG51bGwgPyB2b2lkIDAgOiBjb25mLnN0YXJ0T25Mb2FkKSk7XG4gICAgbWVybWFpZEFQSS51cGRhdGVTaXRlQ29uZmlnKHsgc3RhcnRPbkxvYWQ6IGNvbmYgPT0gbnVsbCA/IHZvaWQgMCA6IGNvbmYuc3RhcnRPbkxvYWQgfSk7XG4gIH1cbiAgY29uc3QgaWRHZW5lcmF0b3IgPSBuZXcgdXRpbHMuaW5pdElkR2VuZXJhdG9yKGNvbmYuZGV0ZXJtaW5pc3RpY0lkcywgY29uZi5kZXRlcm1pbmlzdGljSURTZWVkKTtcbiAgbGV0IHR4dDtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBBcnJheS5mcm9tKG5vZGVzVG9Qcm9jZXNzKSkge1xuICAgIGxvZyQxLmluZm8oXCJSZW5kZXJpbmcgZGlhZ3JhbTogXCIgKyBlbGVtZW50LmlkKTtcbiAgICAvKiEgQ2hlY2sgaWYgcHJldmlvdXNseSBwcm9jZXNzZWQgKi9cbiAgICBpZiAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXByb2Nlc3NlZFwiKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1wcm9jZXNzZWRcIiwgXCJ0cnVlXCIpO1xuICAgIGNvbnN0IGlkMiA9IGBtZXJtYWlkLSR7aWRHZW5lcmF0b3IubmV4dCgpfWA7XG4gICAgdHh0ID0gZWxlbWVudC5pbm5lckhUTUw7XG4gICAgdHh0ID0gZGVkZW50KHV0aWxzLmVudGl0eURlY29kZSh0eHQpKS50cmltKCkucmVwbGFjZSgvPGJyXFxzKlxcLz8+L2dpLCBcIjxici8+XCIpO1xuICAgIGNvbnN0IGluaXQyID0gdXRpbHMuZGV0ZWN0SW5pdCh0eHQpO1xuICAgIGlmIChpbml0Mikge1xuICAgICAgbG9nJDEuZGVidWcoXCJEZXRlY3RlZCBlYXJseSByZWluaXQ6IFwiLCBpbml0Mik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IHN2ZywgYmluZEZ1bmN0aW9ucyB9ID0gYXdhaXQgcmVuZGVyKGlkMiwgdHh0LCBlbGVtZW50KTtcbiAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gc3ZnO1xuICAgICAgaWYgKHBvc3RSZW5kZXJDYWxsYmFjaykge1xuICAgICAgICBhd2FpdCBwb3N0UmVuZGVyQ2FsbGJhY2soaWQyKTtcbiAgICAgIH1cbiAgICAgIGlmIChiaW5kRnVuY3Rpb25zKSB7XG4gICAgICAgIGJpbmRGdW5jdGlvbnMoZWxlbWVudCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBlcnJvcnMsIG1lcm1haWQucGFyc2VFcnJvcik7XG4gICAgfVxuICB9XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IGVycm9yc1swXTtcbiAgfVxufTtcbmNvbnN0IGluaXRpYWxpemUgPSBmdW5jdGlvbihjb25maWcyKSB7XG4gIG1lcm1haWRBUEkuaW5pdGlhbGl6ZShjb25maWcyKTtcbn07XG5jb25zdCBpbml0ID0gYXN5bmMgZnVuY3Rpb24oY29uZmlnMiwgbm9kZXMsIGNhbGxiYWNrKSB7XG4gIGxvZyQxLndhcm4oXCJtZXJtYWlkLmluaXQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBydW4gaW5zdGVhZC5cIik7XG4gIGlmIChjb25maWcyKSB7XG4gICAgaW5pdGlhbGl6ZShjb25maWcyKTtcbiAgfVxuICBjb25zdCBydW5PcHRpb25zID0geyBwb3N0UmVuZGVyQ2FsbGJhY2s6IGNhbGxiYWNrLCBxdWVyeVNlbGVjdG9yOiBcIi5tZXJtYWlkXCIgfTtcbiAgaWYgKHR5cGVvZiBub2RlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJ1bk9wdGlvbnMucXVlcnlTZWxlY3RvciA9IG5vZGVzO1xuICB9IGVsc2UgaWYgKG5vZGVzKSB7XG4gICAgaWYgKG5vZGVzIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHJ1bk9wdGlvbnMubm9kZXMgPSBbbm9kZXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBydW5PcHRpb25zLm5vZGVzID0gbm9kZXM7XG4gICAgfVxuICB9XG4gIGF3YWl0IHJ1bihydW5PcHRpb25zKTtcbn07XG5jb25zdCByZWdpc3RlckV4dGVybmFsRGlhZ3JhbXMgPSBhc3luYyAoZGlhZ3JhbXMyLCB7XG4gIGxhenlMb2FkID0gdHJ1ZVxufSA9IHt9KSA9PiB7XG4gIHJlZ2lzdGVyTGF6eUxvYWRlZERpYWdyYW1zKC4uLmRpYWdyYW1zMik7XG4gIGlmIChsYXp5TG9hZCA9PT0gZmFsc2UpIHtcbiAgICBhd2FpdCBsb2FkUmVnaXN0ZXJlZERpYWdyYW1zKCk7XG4gIH1cbn07XG5jb25zdCBjb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKSB7XG4gIGlmIChtZXJtYWlkLnN0YXJ0T25Mb2FkKSB7XG4gICAgY29uc3QgeyBzdGFydE9uTG9hZCB9ID0gbWVybWFpZEFQSS5nZXRDb25maWcoKTtcbiAgICBpZiAoc3RhcnRPbkxvYWQpIHtcbiAgICAgIG1lcm1haWQucnVuKCkuY2F0Y2goKGVycikgPT4gbG9nJDEuZXJyb3IoXCJNZXJtYWlkIGZhaWxlZCB0byBpbml0aWFsaXplXCIsIGVycikpO1xuICAgIH1cbiAgfVxufTtcbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLyohXG4gICAqIFdhaXQgZm9yIGRvY3VtZW50IGxvYWRlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIGV4ZWN1dGlvblxuICAgKi9cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGNvbnRlbnRMb2FkZWQsIGZhbHNlKTtcbn1cbmNvbnN0IHNldFBhcnNlRXJyb3JIYW5kbGVyID0gZnVuY3Rpb24ocGFyc2VFcnJvckhhbmRsZXIpIHtcbiAgbWVybWFpZC5wYXJzZUVycm9yID0gcGFyc2VFcnJvckhhbmRsZXI7XG59O1xuY29uc3QgZXhlY3V0aW9uUXVldWUgPSBbXTtcbmxldCBleGVjdXRpb25RdWV1ZVJ1bm5pbmcgPSBmYWxzZTtcbmNvbnN0IGV4ZWN1dGVRdWV1ZSA9IGFzeW5jICgpID0+IHtcbiAgaWYgKGV4ZWN1dGlvblF1ZXVlUnVubmluZykge1xuICAgIHJldHVybjtcbiAgfVxuICBleGVjdXRpb25RdWV1ZVJ1bm5pbmcgPSB0cnVlO1xuICB3aGlsZSAoZXhlY3V0aW9uUXVldWUubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGYgPSBleGVjdXRpb25RdWV1ZS5zaGlmdCgpO1xuICAgIGlmIChmKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyQxLmVycm9yKFwiRXJyb3IgZXhlY3V0aW5nIHF1ZXVlXCIsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBleGVjdXRpb25RdWV1ZVJ1bm5pbmcgPSBmYWxzZTtcbn07XG5jb25zdCBwYXJzZSA9IGFzeW5jICh0ZXh0LCBwYXJzZU9wdGlvbnMpID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBwZXJmb3JtQ2FsbCA9ICgpID0+IG5ldyBQcm9taXNlKChyZXMsIHJlaikgPT4ge1xuICAgICAgbWVybWFpZEFQSS5wYXJzZSh0ZXh0LCBwYXJzZU9wdGlvbnMpLnRoZW4oXG4gICAgICAgIChyKSA9PiB7XG4gICAgICAgICAgcmVzKHIpO1xuICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgIH0sXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgIGxvZyQxLmVycm9yKFwiRXJyb3IgcGFyc2luZ1wiLCBlKTtcbiAgICAgICAgICAoX2EgPSBtZXJtYWlkLnBhcnNlRXJyb3IpID09IG51bGwgPyB2b2lkIDAgOiBfYS5jYWxsKG1lcm1haWQsIGUpO1xuICAgICAgICAgIHJlaihlKTtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgZXhlY3V0aW9uUXVldWUucHVzaChwZXJmb3JtQ2FsbCk7XG4gICAgZXhlY3V0ZVF1ZXVlKCkuY2F0Y2gocmVqZWN0KTtcbiAgfSk7XG59O1xuY29uc3QgcmVuZGVyID0gKGlkMiwgdGV4dCwgY29udGFpbmVyKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcGVyZm9ybUNhbGwgPSAoKSA9PiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHtcbiAgICAgIG1lcm1haWRBUEkucmVuZGVyKGlkMiwgdGV4dCwgY29udGFpbmVyKS50aGVuKFxuICAgICAgICAocikgPT4ge1xuICAgICAgICAgIHJlcyhyKTtcbiAgICAgICAgICByZXNvbHZlKHIpO1xuICAgICAgICB9LFxuICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICBsb2ckMS5lcnJvcihcIkVycm9yIHBhcnNpbmdcIiwgZSk7XG4gICAgICAgICAgKF9hID0gbWVybWFpZC5wYXJzZUVycm9yKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChtZXJtYWlkLCBlKTtcbiAgICAgICAgICByZWooZSk7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICAgIGV4ZWN1dGlvblF1ZXVlLnB1c2gocGVyZm9ybUNhbGwpO1xuICAgIGV4ZWN1dGVRdWV1ZSgpLmNhdGNoKHJlamVjdCk7XG4gIH0pO1xufTtcbmNvbnN0IG1lcm1haWQgPSB7XG4gIHN0YXJ0T25Mb2FkOiB0cnVlLFxuICBtZXJtYWlkQVBJLFxuICBwYXJzZSxcbiAgcmVuZGVyLFxuICBpbml0LFxuICBydW4sXG4gIHJlZ2lzdGVyRXh0ZXJuYWxEaWFncmFtcyxcbiAgaW5pdGlhbGl6ZSxcbiAgcGFyc2VFcnJvcjogdm9pZCAwLFxuICBjb250ZW50TG9hZGVkLFxuICBzZXRQYXJzZUVycm9ySGFuZGxlcixcbiAgZGV0ZWN0VHlwZVxufTtcbmV4cG9ydCB7XG4gIHNldHVwR3JhcGhWaWV3Ym94IGFzIEEsXG4gIHBhcnNlRm9udFNpemUgYXMgQixcbiAgZ2V0VGhlbWVWYXJpYWJsZXMkMiBhcyBDLFxuICBkZWZhdWx0Q29uZmlnJDEgYXMgRCxcbiAgYWRkRnVuY3Rpb24gYXMgRSxcbiAgZ2VuZXJhdGVJZCBhcyBGLFxuICBkZWZhdWx0Q29uZmlnIGFzIEcsXG4gIGRlY29kZUVudGl0aWVzIGFzIEgsXG4gIGNvbW1vbkRiJDEgYXMgSSxcbiAgcGFyc2VEaXJlY3RpdmUkMSBhcyBKLFxuICBtZXJtYWlkIGFzIEssXG4gIFpFUk9fV0lEVEhfU1BBQ0UgYXMgWixcbiAgZ2V0QWNjRGVzY3JpcHRpb24gYXMgYSxcbiAgc2V0QWNjRGVzY3JpcHRpb24gYXMgYixcbiAgZ2V0Q29uZmlnJDEgYXMgYyxcbiAgc2FuaXRpemVUZXh0JDIgYXMgZCxcbiAgY29tbW9uJDEgYXMgZSxcbiAgYXNzaWduV2l0aERlcHRoJDEgYXMgZixcbiAgZ2V0QWNjVGl0bGUgYXMgZyxcbiAgY2FsY3VsYXRlVGV4dFdpZHRoIGFzIGgsXG4gIGNvbmZpZ3VyZVN2Z1NpemUgYXMgaSxcbiAgY2FsY3VsYXRlVGV4dEhlaWdodCBhcyBqLFxuICBnZXRTdHlsZXNGcm9tQXJyYXkgYXMgayxcbiAgbG9nJDEgYXMgbCxcbiAgbWVybWFpZEFQSSBhcyBtLFxuICBldmFsdWF0ZSBhcyBuLFxuICBpbnRlcnBvbGF0ZVRvQ3VydmUgYXMgbyxcbiAgc2V0dXBHcmFwaFZpZXdib3gkMSBhcyBwLFxuICBzZXRDb25maWcgYXMgcSxcbiAgc2V0RGlhZ3JhbVRpdGxlIGFzIHIsXG4gIHNldEFjY1RpdGxlIGFzIHMsXG4gIGdldERpYWdyYW1UaXRsZSBhcyB0LFxuICB1dGlscyBhcyB1LFxuICBjbGVhciBhcyB2LFxuICB3cmFwTGFiZWwgYXMgdyxcbiAgcGFyc2VHZW5lcmljVHlwZXMgYXMgeCxcbiAgcmFuZG9tIGFzIHksXG4gIGdldENvbmZpZyBhcyB6XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/mindmap-definition-4fc2557c.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/mindmap-definition-4fc2557c.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./createText-3df630b5.js */ \"../../../node_modules/mermaid/dist/createText-3df630b5.js\");\n/* harmony import */ var cytoscape_dist_cytoscape_umd_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cytoscape/dist/cytoscape.umd.js */ \"../../../node_modules/cytoscape/dist/cytoscape.umd.js\");\n/* harmony import */ var cytoscape_cose_bilkent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cytoscape-cose-bilkent */ \"../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/is_dark.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/lighten.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/darken.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 6, 13, 15, 16, 19, 22], $Vd = [1, 33], $Ve = [1, 34], $Vf = [1, 6, 7, 11, 13, 15, 16, 19, 22];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mindMap\": 4, \"spaceLines\": 5, \"SPACELINE\": 6, \"NL\": 7, \"MINDMAP\": 8, \"document\": 9, \"stop\": 10, \"EOF\": 11, \"statement\": 12, \"SPACELIST\": 13, \"node\": 14, \"ICON\": 15, \"CLASS\": 16, \"nodeWithId\": 17, \"nodeWithoutId\": 18, \"NODE_DSTART\": 19, \"NODE_DESCR\": 20, \"NODE_DEND\": 21, \"NODE_ID\": 22, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"SPACELINE\", 7: \"NL\", 8: \"MINDMAP\", 11: \"EOF\", 13: \"SPACELIST\", 15: \"ICON\", 16: \"CLASS\", 19: \"NODE_DSTART\", 20: \"NODE_DESCR\", 21: \"NODE_DEND\", 22: \"NODE_ID\" },\n productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 6:\n case 7:\n return yy;\n case 8:\n yy.getLogger().trace(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().trace(\"Stop EOF \");\n break;\n case 11:\n yy.getLogger().trace(\"Stop NL2 \");\n break;\n case 12:\n yy.getLogger().trace(\"Stop EOF2 \");\n break;\n case 15:\n yy.getLogger().info(\"Node: \", $$[$0].id);\n yy.addNode($$[$0 - 1].length, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 16:\n yy.getLogger().trace(\"Icon: \", $$[$0]);\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 17:\n case 21:\n yy.decorateNode({ class: $$[$0] });\n break;\n case 18:\n yy.getLogger().trace(\"SPACELIST\");\n break;\n case 19:\n yy.getLogger().trace(\"Node: \", $$[$0].id);\n yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 20:\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 25:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 2]);\n this.$ = { id: $$[$0 - 1], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n case 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT };\n break;\n case 27:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 3]);\n this.$ = { id: $$[$0 - 3], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: $V0 }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: $V0 }, { 6: $V1, 7: [1, 10], 9: 9, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($V7, [2, 3]), { 1: [2, 2] }, o($V7, [2, 4]), o($V7, [2, 5]), { 1: [2, 6], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V1, 9: 22, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V8, 7: $V9, 10: 23, 11: $Va }, o($Vb, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: $V5, 22: $V6 }), o($Vb, [2, 18]), o($Vb, [2, 19]), o($Vb, [2, 20]), o($Vb, [2, 21]), o($Vb, [2, 23]), o($Vb, [2, 24]), o($Vb, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: $V8, 7: $V9, 10: 32, 11: $Va }, { 1: [2, 7], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($Vc, [2, 14], { 7: $Vd, 11: $Ve }), o($Vf, [2, 8]), o($Vf, [2, 9]), o($Vf, [2, 10]), o($Vb, [2, 15]), o($Vb, [2, 16]), o($Vb, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, o($Vc, [2, 13], { 7: $Vd, 11: $Ve }), o($Vf, [2, 11]), o($Vf, [2, 12]), { 21: [1, 37] }, o($Vb, [2, 25]), o($Vb, [2, 27])],\n defaultActions: { 2: [2, 1], 6: [2, 2] },\n parseError: function parseError2(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError2(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().trace(\"Found comment\", yy_.yytext);\n return 6;\n case 1:\n return 8;\n case 2:\n this.begin(\"CLASS\");\n break;\n case 3:\n this.popState();\n return 16;\n case 4:\n this.popState();\n break;\n case 5:\n yy.getLogger().trace(\"Begin icon\");\n this.begin(\"ICON\");\n break;\n case 6:\n yy.getLogger().trace(\"SPACELINE\");\n return 6;\n case 7:\n return 7;\n case 8:\n return 15;\n case 9:\n yy.getLogger().trace(\"end icon\");\n this.popState();\n break;\n case 10:\n yy.getLogger().trace(\"Exploding node\");\n this.begin(\"NODE\");\n return 19;\n case 11:\n yy.getLogger().trace(\"Cloud\");\n this.begin(\"NODE\");\n return 19;\n case 12:\n yy.getLogger().trace(\"Explosion Bang\");\n this.begin(\"NODE\");\n return 19;\n case 13:\n yy.getLogger().trace(\"Cloud Bang\");\n this.begin(\"NODE\");\n return 19;\n case 14:\n this.begin(\"NODE\");\n return 19;\n case 15:\n this.begin(\"NODE\");\n return 19;\n case 16:\n this.begin(\"NODE\");\n return 19;\n case 17:\n this.begin(\"NODE\");\n return 19;\n case 18:\n return 13;\n case 19:\n return 22;\n case 20:\n return 11;\n case 21:\n this.begin(\"NSTR2\");\n break;\n case 22:\n return \"NODE_DESCR\";\n case 23:\n this.popState();\n break;\n case 24:\n yy.getLogger().trace(\"Starting NSTR\");\n this.begin(\"NSTR\");\n break;\n case 25:\n yy.getLogger().trace(\"description:\", yy_.yytext);\n return \"NODE_DESCR\";\n case 26:\n this.popState();\n break;\n case 27:\n this.popState();\n yy.getLogger().trace(\"node end ))\");\n return \"NODE_DEND\";\n case 28:\n this.popState();\n yy.getLogger().trace(\"node end )\");\n return \"NODE_DEND\";\n case 29:\n this.popState();\n yy.getLogger().trace(\"node end ...\", yy_.yytext);\n return \"NODE_DEND\";\n case 30:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 31:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 32:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 33:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 34:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 35:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n case 36:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n }\n },\n rules: [/^(?:\\s*%%.*)/i, /^(?:mindmap\\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\\n)/i, /^(?:::icon\\()/i, /^(?:[\\s]+[\\n])/i, /^(?:[\\n]+)/i, /^(?:[^\\)]+)/i, /^(?:\\))/i, /^(?:-\\))/i, /^(?:\\(-)/i, /^(?:\\)\\))/i, /^(?:\\))/i, /^(?:\\(\\()/i, /^(?:\\{\\{)/i, /^(?:\\()/i, /^(?:\\[)/i, /^(?:[\\s]+)/i, /^(?:[^\\(\\[\\n\\-\\)\\{\\}]+)/i, /^(?:$)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[^\"]+)/i, /^(?:[\"])/i, /^(?:[\\)]\\))/i, /^(?:[\\)])/i, /^(?:[\\]])/i, /^(?:\\}\\})/i, /^(?:\\(-)/i, /^(?:-\\))/i, /^(?:\\(\\()/i, /^(?:\\()/i, /^(?:[^\\)\\]\\(\\}]+)/i, /^(?:.+(?!\\(\\())/i],\n conditions: { \"CLASS\": { \"rules\": [3, 4], \"inclusive\": false }, \"ICON\": { \"rules\": [8, 9], \"inclusive\": false }, \"NSTR2\": { \"rules\": [22, 23], \"inclusive\": false }, \"NSTR\": { \"rules\": [25, 26], \"inclusive\": false }, \"NODE\": { \"rules\": [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst mindmapParser = parser;\nconst sanitizeText = (text) => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.d)(text, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)());\nlet nodes = [];\nlet cnt = 0;\nlet elements = {};\nconst clear = () => {\n nodes = [];\n cnt = 0;\n elements = {};\n};\nconst getParent = function(level) {\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level < level) {\n return nodes[i];\n }\n }\n return null;\n};\nconst getMindmap = () => {\n return nodes.length > 0 ? nodes[0] : null;\n};\nconst addNode = (level, id, descr, type) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"addNode\", level, id, descr, type);\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)();\n const node = {\n id: cnt++,\n nodeId: sanitizeText(id),\n level,\n descr: sanitizeText(descr),\n type,\n children: [],\n width: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().mindmap.maxNodeWidth\n };\n switch (node.type) {\n case nodeType.ROUNDED_RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.HEXAGON:\n node.padding = 2 * conf.mindmap.padding;\n break;\n default:\n node.padding = conf.mindmap.padding;\n }\n const parent = getParent(level);\n if (parent) {\n parent.children.push(node);\n nodes.push(node);\n } else {\n if (nodes.length === 0) {\n nodes.push(node);\n } else {\n let error = new Error(\n 'There can be only one root. No parent could be found for (\"' + node.descr + '\")'\n );\n error.hash = {\n text: \"branch \" + name,\n token: \"branch \" + name,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"']\n };\n throw error;\n }\n }\n};\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6\n};\nconst getType = (startStr, endStr) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"In get type\", startStr, endStr);\n switch (startStr) {\n case \"[\":\n return nodeType.RECT;\n case \"(\":\n return endStr === \")\" ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case \"((\":\n return nodeType.CIRCLE;\n case \")\":\n return nodeType.CLOUD;\n case \"))\":\n return nodeType.BANG;\n case \"{{\":\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\nconst setElementForId = (id, element) => {\n elements[id] = element;\n};\nconst decorateNode = (decoration) => {\n const node = nodes[nodes.length - 1];\n if (decoration && decoration.icon) {\n node.icon = sanitizeText(decoration.icon);\n }\n if (decoration && decoration.class) {\n node.class = sanitizeText(decoration.class);\n }\n};\nconst type2Str = (type) => {\n switch (type) {\n case nodeType.DEFAULT:\n return \"no-border\";\n case nodeType.RECT:\n return \"rect\";\n case nodeType.ROUNDED_RECT:\n return \"rounded-rect\";\n case nodeType.CIRCLE:\n return \"circle\";\n case nodeType.CLOUD:\n return \"cloud\";\n case nodeType.BANG:\n return \"bang\";\n case nodeType.HEXAGON:\n return \"hexgon\";\n default:\n return \"no-border\";\n }\n};\nlet parseError;\nconst setErrorHandler = (handler) => {\n parseError = handler;\n};\nconst getLogger = () => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l;\nconst getNodeById = (id) => nodes[id];\nconst getElementById = (id) => elements[id];\nconst mindmapDb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addNode,\n clear,\n decorateNode,\n getElementById,\n getLogger,\n getMindmap,\n getNodeById,\n getType,\n nodeType,\n get parseError() {\n return parseError;\n },\n sanitizeText,\n setElementForId,\n setErrorHandler,\n type2Str\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst rectBkg = function(elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"height\", node.height).attr(\"width\", node.width);\n};\nconst cloudBkg = function(elem, node) {\n const w = node.width;\n const h = node.height;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n H0 V0 Z`\n );\n};\nconst bangBkg = function(elem, node) {\n const w = node.width;\n const h = node.height;\n const r = 0.15 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n H0 V0 Z`\n );\n};\nconst circleBkg = function(elem, node) {\n elem.append(\"circle\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"r\", node.width / 2);\n};\nfunction insertPolygonShape(parent, w, h, points, node) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"transform\", \"translate(\" + (node.width - w) / 2 + \", \" + h + \")\");\n}\nconst hexagonBkg = function(elem, node) {\n const h = node.height;\n const f = 4;\n const m = h / f;\n const w = node.width - node.padding + 2 * m;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n insertPolygonShape(elem, w, h, points, node);\n};\nconst roundedRectBkg = function(elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"height\", node.height).attr(\"rx\", node.padding).attr(\"ry\", node.padding).attr(\"width\", node.width);\n};\nconst drawNode = function(elem, node, fullSection, conf) {\n const htmlLabels = conf.htmlLabels;\n const section = fullSection % (MAX_SECTIONS - 1);\n const nodeElem = elem.append(\"g\");\n node.section = section;\n let sectionClass = \"section-\" + section;\n if (section < 0) {\n sectionClass += \" section-root\";\n }\n nodeElem.attr(\"class\", (node.class ? node.class + \" \" : \"\") + \"mindmap-node \" + sectionClass);\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const description = node.descr.replace(/()/g, \"\\n\");\n (0,_createText_3df630b5_js__WEBPACK_IMPORTED_MODULE_8__.c)(textElem, description, {\n useHtmlLabels: htmlLabels,\n width: node.width,\n classes: \"mindmap-node-label\"\n });\n if (!htmlLabels) {\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n }\n const bbox = textElem.node().getBBox();\n const fontSize = conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.width = bbox.width + 2 * node.padding;\n if (node.icon) {\n if (node.type === nodeType.CIRCLE) {\n node.height += 50;\n node.width += 50;\n const icon = nodeElem.append(\"foreignObject\").attr(\"height\", \"50px\").attr(\"width\", node.width).attr(\"style\", \"text-align: center;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + node.width / 2 + \", \" + (node.height / 2 - 1.5 * node.padding) + \")\"\n );\n } else {\n node.width += 50;\n const orgHeight = node.height;\n node.height = Math.max(orgHeight, 60);\n const heightDiff = Math.abs(node.height - orgHeight);\n const icon = nodeElem.append(\"foreignObject\").attr(\"width\", \"60px\").attr(\"height\", node.height).attr(\"style\", \"text-align: center;margin-top:\" + heightDiff / 2 + \"px;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + (25 + node.width / 2) + \", \" + (heightDiff / 2 + node.padding / 2) + \")\"\n );\n }\n } else {\n if (!htmlLabels) {\n const dx = node.width / 2;\n const dy = node.padding / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n } else {\n const dx = (node.width - bbox.width) / 2;\n const dy = (node.height - bbox.height) / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n }\n }\n switch (node.type) {\n case nodeType.DEFAULT:\n defaultBkg(bkgElem, node, section);\n break;\n case nodeType.ROUNDED_RECT:\n roundedRectBkg(bkgElem, node);\n break;\n case nodeType.RECT:\n rectBkg(bkgElem, node);\n break;\n case nodeType.CIRCLE:\n bkgElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + +node.height / 2 + \")\");\n circleBkg(bkgElem, node);\n break;\n case nodeType.CLOUD:\n cloudBkg(bkgElem, node);\n break;\n case nodeType.BANG:\n bangBkg(bkgElem, node);\n break;\n case nodeType.HEXAGON:\n hexagonBkg(bkgElem, node);\n break;\n }\n setElementForId(node.id, nodeElem);\n return node.height;\n};\nconst drawEdge = function drawEdge2(edgesElem, mindmap, parent, depth, fullSection) {\n const section = fullSection % (MAX_SECTIONS - 1);\n const sx = parent.x + parent.width / 2;\n const sy = parent.y + parent.height / 2;\n const ex = mindmap.x + mindmap.width / 2;\n const ey = mindmap.y + mindmap.height / 2;\n const mx = ex > sx ? sx + Math.abs(sx - ex) / 2 : sx - Math.abs(sx - ex) / 2;\n const my = ey > sy ? sy + Math.abs(sy - ey) / 2 : sy - Math.abs(sy - ey) / 2;\n const qx = ex > sx ? Math.abs(sx - mx) / 2 + sx : -Math.abs(sx - mx) / 2 + sx;\n const qy = ey > sy ? Math.abs(sy - my) / 2 + sy : -Math.abs(sy - my) / 2 + sy;\n edgesElem.append(\"path\").attr(\n \"d\",\n parent.direction === \"TB\" || parent.direction === \"BT\" ? `M${sx},${sy} Q${sx},${qy} ${mx},${my} T${ex},${ey}` : `M${sx},${sy} Q${qx},${sy} ${mx},${my} T${ex},${ey}`\n ).attr(\"class\", \"edge section-edge-\" + section + \" edge-depth-\" + depth);\n};\nconst positionNode = function(node) {\n const nodeElem = getElementById(node.id);\n const x = node.x || 0;\n const y = node.y || 0;\n nodeElem.attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n};\nconst svgDraw = { drawNode, positionNode, drawEdge };\ncytoscape_dist_cytoscape_umd_js__WEBPACK_IMPORTED_MODULE_1__.use(cytoscape_cose_bilkent__WEBPACK_IMPORTED_MODULE_2__);\nfunction drawNodes(svg, mindmap, section, conf) {\n svgDraw.drawNode(svg, mindmap, section, conf);\n if (mindmap.children) {\n mindmap.children.forEach((child, index) => {\n drawNodes(svg, child, section < 0 ? index : section, conf);\n });\n }\n}\nfunction drawEdges(edgesEl, cy) {\n cy.edges().map((edge, id) => {\n const data = edge.data();\n if (edge[0]._private.bodyBounds) {\n const bounds = edge[0]._private.rscratch;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.trace(\"Edge: \", id, data);\n edgesEl.insert(\"path\").attr(\n \"d\",\n `M ${bounds.startX},${bounds.startY} L ${bounds.midX},${bounds.midY} L${bounds.endX},${bounds.endY} `\n ).attr(\"class\", \"edge section-edge-\" + data.section + \" edge-depth-\" + data.depth);\n }\n });\n}\nfunction addNodes(mindmap, cy, conf, level) {\n cy.add({\n group: \"nodes\",\n data: {\n id: mindmap.id,\n labelText: mindmap.descr,\n height: mindmap.height,\n width: mindmap.width,\n level,\n nodeId: mindmap.id,\n padding: mindmap.padding,\n type: mindmap.type\n },\n position: {\n x: mindmap.x,\n y: mindmap.y\n }\n });\n if (mindmap.children) {\n mindmap.children.forEach((child) => {\n addNodes(child, cy, conf, level + 1);\n cy.add({\n group: \"edges\",\n data: {\n id: `${mindmap.id}_${child.id}`,\n source: mindmap.id,\n target: child.id,\n depth: level,\n section: child.section\n }\n });\n });\n }\n}\nfunction layoutMindmap(node, conf) {\n return new Promise((resolve) => {\n const renderEl = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape_dist_cytoscape_umd_js__WEBPACK_IMPORTED_MODULE_1__({\n container: document.getElementById(\"cy\"),\n // container to render in\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"bezier\"\n }\n }\n ]\n });\n renderEl.remove();\n addNodes(node, cy, conf, 0);\n cy.nodes().forEach(function(n) {\n n.layoutDimensions = () => {\n const data = n.data();\n return { w: data.width, h: data.height };\n };\n });\n cy.layout({\n name: \"cose-bilkent\",\n quality: \"proof\",\n // headless: true,\n styleEnabled: false,\n animate: false\n }).run();\n cy.ready((e) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\nfunction positionNodes(cy) {\n cy.nodes().map((node, id) => {\n const data = node.data();\n data.x = node.position().x;\n data.y = node.position().y;\n svgDraw.positionNode(data);\n const el = getElementById(data.nodeId);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Id:\", id, \"Position: (\", node.position().x, \", \", node.position().y, \")\", data);\n el.attr(\n \"transform\",\n `translate(${node.position().x - data.width / 2}, ${node.position().y - data.height / 2})`\n );\n el.attr(\"attr\", `apa-${id})`);\n });\n}\nconst draw = async (text, id, version, diagObj) => {\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)();\n conf.htmlLabels = false;\n diagObj.db.clear();\n diagObj.parser.parse(text);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Rendering mindmap diagram\\n\" + text, diagObj.parser);\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const mm = diagObj.db.getMindmap();\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"mindmap-edges\");\n const nodesElem = svg.append(\"g\");\n nodesElem.attr(\"class\", \"mindmap-nodes\");\n drawNodes(nodesElem, mm, -1, conf);\n const cy = await layoutMindmap(mm, conf);\n drawEdges(edgesElem, cy);\n positionNodes(cy);\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.p)(void 0, svg, conf.mindmap.padding, conf.mindmap.useMaxWidth);\n};\nconst mindmapRenderer = {\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if ((0,khroma__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} polygon, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`;\nconst mindmapStyles = getStyles;\nconst diagram = {\n db: mindmapDb,\n renderer: mindmapRenderer,\n parser: mindmapParser,\n styles: mindmapStyles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9taW5kbWFwLWRlZmluaXRpb24tNGZjMjU1N2MuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUE4RztBQUNsRjtBQUMrQjtBQUNIO0FBQ1A7QUFDQTtBQUM5QjtBQUNKO0FBQ2tCO0FBQ2Q7QUFDVztBQUNkO0FBQ2M7QUFDSTtBQUNsQztBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQixLQUFLO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTCxVQUFVO0FBQ1YsZ0JBQWdCLGdWQUFnVjtBQUNoVyxrQkFBa0IsNktBQTZLO0FBQy9MO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGNBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGVBQWU7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGNBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyxxQ0FBcUMsSUFBSSxRQUFRLElBQUksV0FBVyxJQUFJLG9DQUFvQyxJQUFJLHVHQUF1RyxvQkFBb0IsV0FBVyxvQ0FBb0MsZ0dBQWdHLElBQUksNEZBQTRGLElBQUksaUNBQWlDLG9CQUFvQixvRUFBb0UsMkhBQTJILGFBQWEsS0FBSyxhQUFhLElBQUksaUNBQWlDLElBQUksZ0dBQWdHLG9CQUFvQixpQkFBaUIseUdBQXlHLGFBQWEsSUFBSSxhQUFhLG9CQUFvQixpQkFBaUIsdUNBQXVDLGFBQWE7QUFDem9DLHNCQUFzQixzQkFBc0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QVEsY0FBYyxHQUFHO0FBQzVDLFNBQVMsR0FBRyxHQUFHLElBQUksUUFBUSxhQUFhLEdBQUc7QUFDM0MsU0FBUyxHQUFHLEdBQUcsSUFBSSxRQUFRLGNBQWMsR0FBRzs7QUFFNUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxRQUFRLGFBQWEsR0FBRztBQUMzQyxTQUFTLEdBQUcsR0FBRyxJQUFJLFFBQVEsUUFBUSxHQUFHOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEVBQUUsR0FBRyxHQUFHLFFBQVEsU0FBUyxHQUFHO0FBQ3pDLFNBQVMsRUFBRSxHQUFHLEdBQUcsUUFBUSxTQUFTLEdBQUc7QUFDckMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFRLFNBQVMsR0FBRztBQUNyQyxTQUFTLEVBQUUsR0FBRyxHQUFHLFFBQVEsU0FBUyxHQUFHOztBQUVyQyxTQUFTLEVBQUUsR0FBRyxHQUFHLFFBQVEsU0FBUyxHQUFHO0FBQ3JDLFNBQVMsUUFBUSxHQUFHLFNBQVMsUUFBUSxFQUFFLEdBQUc7QUFDMUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFRLGNBQWMsR0FBRzs7QUFFMUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFRLGNBQWMsR0FBRztBQUMxQyxTQUFTLEVBQUUsR0FBRyxHQUFHLFFBQVEsY0FBYyxHQUFHO0FBQzFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsUUFBUSxjQUFjLEdBQUc7QUFDMUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFRLGNBQWMsR0FBRzs7QUFFMUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxRQUFRLGFBQWEsR0FBRztBQUN6QyxTQUFTLFFBQVEsR0FBRyxTQUFTLFFBQVEsRUFBRSxHQUFHO0FBQzFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsUUFBUSxRQUFRLEdBQUc7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QzNCO0FBQ0EsNkNBQTZDLDBDQUFNLG1EQUFtRCwwQ0FBTTtBQUM1RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBaUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQjtBQUNqRDtBQUNBLFFBQVEsa0RBQU07QUFDZCxpQ0FBaUMsbURBQU87QUFDeEMsTUFBTTtBQUNOLGlDQUFpQyxtREFBTTtBQUN2QztBQUNBO0FBQ0Esa0JBQWtCLCtCQUErQjtBQUNqRDtBQUNBO0FBQ0EsZUFBZSxPQUFPLGlCQUFpQixPQUFPLGlCQUFpQixPQUFPLG1CQUFtQixPQUFPLG9CQUFvQixPQUFPO0FBQzNILGNBQWM7QUFDZDtBQUNBLGVBQWUsT0FBTztBQUN0QixhQUFhO0FBQ2I7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxvQkFBb0I7QUFDcEIsZ0JBQWdCO0FBQ2hCO0FBQ0Esa0JBQWtCO0FBQ2xCLHNCQUFzQjtBQUN0QjtBQUNBLGVBQWUsT0FBTztBQUN0QixnQkFBZ0I7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L21pbmRtYXAtZGVmaW5pdGlvbi00ZmMyNTU3Yy5qcz85NzEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGQgYXMgc2FuaXRpemVUZXh0JDEsIGMgYXMgZ2V0Q29uZmlnLCBsIGFzIGxvZywgcCBhcyBzZXR1cEdyYXBoVmlld2JveCB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgYyBhcyBjcmVhdGVUZXh0IH0gZnJvbSBcIi4vY3JlYXRlVGV4dC0zZGY2MzBiNS5qc1wiO1xuaW1wb3J0IGN5dG9zY2FwZSBmcm9tIFwiY3l0b3NjYXBlL2Rpc3QvY3l0b3NjYXBlLnVtZC5qc1wiO1xuaW1wb3J0IGNvc2VCaWxrZW50IGZyb20gXCJjeXRvc2NhcGUtY29zZS1iaWxrZW50XCI7XG5pbXBvcnQgeyBpc0RhcmssIGxpZ2h0ZW4sIGRhcmtlbiB9IGZyb20gXCJraHJvbWFcIjtcbmltcG9ydCBcInRzLWRlZGVudFwiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5pbXBvcnQgXCJtZGFzdC11dGlsLWZyb20tbWFya2Rvd25cIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCA0XSwgJFYxID0gWzEsIDEzXSwgJFYyID0gWzEsIDEyXSwgJFYzID0gWzEsIDE1XSwgJFY0ID0gWzEsIDE2XSwgJFY1ID0gWzEsIDIwXSwgJFY2ID0gWzEsIDE5XSwgJFY3ID0gWzYsIDcsIDhdLCAkVjggPSBbMSwgMjZdLCAkVjkgPSBbMSwgMjRdLCAkVmEgPSBbMSwgMjVdLCAkVmIgPSBbNiwgNywgMTFdLCAkVmMgPSBbMSwgNiwgMTMsIDE1LCAxNiwgMTksIDIyXSwgJFZkID0gWzEsIDMzXSwgJFZlID0gWzEsIDM0XSwgJFZmID0gWzEsIDYsIDcsIDExLCAxMywgMTUsIDE2LCAxOSwgMjJdO1xuICB2YXIgcGFyc2VyMiA9IHtcbiAgICB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7XG4gICAgfSxcbiAgICB5eToge30sXG4gICAgc3ltYm9sc186IHsgXCJlcnJvclwiOiAyLCBcInN0YXJ0XCI6IDMsIFwibWluZE1hcFwiOiA0LCBcInNwYWNlTGluZXNcIjogNSwgXCJTUEFDRUxJTkVcIjogNiwgXCJOTFwiOiA3LCBcIk1JTkRNQVBcIjogOCwgXCJkb2N1bWVudFwiOiA5LCBcInN0b3BcIjogMTAsIFwiRU9GXCI6IDExLCBcInN0YXRlbWVudFwiOiAxMiwgXCJTUEFDRUxJU1RcIjogMTMsIFwibm9kZVwiOiAxNCwgXCJJQ09OXCI6IDE1LCBcIkNMQVNTXCI6IDE2LCBcIm5vZGVXaXRoSWRcIjogMTcsIFwibm9kZVdpdGhvdXRJZFwiOiAxOCwgXCJOT0RFX0RTVEFSVFwiOiAxOSwgXCJOT0RFX0RFU0NSXCI6IDIwLCBcIk5PREVfREVORFwiOiAyMSwgXCJOT0RFX0lEXCI6IDIyLCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICB0ZXJtaW5hbHNfOiB7IDI6IFwiZXJyb3JcIiwgNjogXCJTUEFDRUxJTkVcIiwgNzogXCJOTFwiLCA4OiBcIk1JTkRNQVBcIiwgMTE6IFwiRU9GXCIsIDEzOiBcIlNQQUNFTElTVFwiLCAxNTogXCJJQ09OXCIsIDE2OiBcIkNMQVNTXCIsIDE5OiBcIk5PREVfRFNUQVJUXCIsIDIwOiBcIk5PREVfREVTQ1JcIiwgMjE6IFwiTk9ERV9ERU5EXCIsIDIyOiBcIk5PREVfSURcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAxXSwgWzMsIDJdLCBbNSwgMV0sIFs1LCAyXSwgWzUsIDJdLCBbNCwgMl0sIFs0LCAzXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzksIDNdLCBbOSwgMl0sIFsxMiwgMl0sIFsxMiwgMl0sIFsxMiwgMl0sIFsxMiwgMV0sIFsxMiwgMV0sIFsxMiwgMV0sIFsxMiwgMV0sIFsxMiwgMV0sIFsxNCwgMV0sIFsxNCwgMV0sIFsxOCwgM10sIFsxNywgMV0sIFsxNywgNF1dLFxuICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQpIHtcbiAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgcmV0dXJuIHl5O1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJTdG9wIE5MIFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiU3RvcCBFT0YgXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiU3RvcCBOTDIgXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiU3RvcCBFT0YyIFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICB5eS5nZXRMb2dnZXIoKS5pbmZvKFwiTm9kZTogXCIsICQkWyQwXS5pZCk7XG4gICAgICAgICAgeXkuYWRkTm9kZSgkJFskMCAtIDFdLmxlbmd0aCwgJCRbJDBdLmlkLCAkJFskMF0uZGVzY3IsICQkWyQwXS50eXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIkljb246IFwiLCAkJFskMF0pO1xuICAgICAgICAgIHl5LmRlY29yYXRlTm9kZSh7IGljb246ICQkWyQwXSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICB5eS5kZWNvcmF0ZU5vZGUoeyBjbGFzczogJCRbJDBdIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiU1BBQ0VMSVNUXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiTm9kZTogXCIsICQkWyQwXS5pZCk7XG4gICAgICAgICAgeXkuYWRkTm9kZSgwLCAkJFskMF0uaWQsICQkWyQwXS5kZXNjciwgJCRbJDBdLnR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIHl5LmRlY29yYXRlTm9kZSh7IGljb246ICQkWyQwXSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIm5vZGUgZm91bmQgLi5cIiwgJCRbJDAgLSAyXSk7XG4gICAgICAgICAgdGhpcy4kID0geyBpZDogJCRbJDAgLSAxXSwgZGVzY3I6ICQkWyQwIC0gMV0sIHR5cGU6IHl5LmdldFR5cGUoJCRbJDAgLSAyXSwgJCRbJDBdKSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgIHRoaXMuJCA9IHsgaWQ6ICQkWyQwXSwgZGVzY3I6ICQkWyQwXSwgdHlwZTogeXkubm9kZVR5cGUuREVGQVVMVCB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwibm9kZSBmb3VuZCAuLlwiLCAkJFskMCAtIDNdKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IGlkOiAkJFskMCAtIDNdLCBkZXNjcjogJCRbJDAgLSAxXSwgdHlwZTogeXkuZ2V0VHlwZSgkJFskMCAtIDJdLCAkJFskMF0pIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogMiwgNTogMywgNjogWzEsIDVdLCA4OiAkVjAgfSwgeyAxOiBbM10gfSwgeyAxOiBbMiwgMV0gfSwgeyA0OiA2LCA2OiBbMSwgN10sIDc6IFsxLCA4XSwgODogJFYwIH0sIHsgNjogJFYxLCA3OiBbMSwgMTBdLCA5OiA5LCAxMjogMTEsIDEzOiAkVjIsIDE0OiAxNCwgMTU6ICRWMywgMTY6ICRWNCwgMTc6IDE3LCAxODogMTgsIDE5OiAkVjUsIDIyOiAkVjYgfSwgbygkVjcsIFsyLCAzXSksIHsgMTogWzIsIDJdIH0sIG8oJFY3LCBbMiwgNF0pLCBvKCRWNywgWzIsIDVdKSwgeyAxOiBbMiwgNl0sIDY6ICRWMSwgMTI6IDIxLCAxMzogJFYyLCAxNDogMTQsIDE1OiAkVjMsIDE2OiAkVjQsIDE3OiAxNywgMTg6IDE4LCAxOTogJFY1LCAyMjogJFY2IH0sIHsgNjogJFYxLCA5OiAyMiwgMTI6IDExLCAxMzogJFYyLCAxNDogMTQsIDE1OiAkVjMsIDE2OiAkVjQsIDE3OiAxNywgMTg6IDE4LCAxOTogJFY1LCAyMjogJFY2IH0sIHsgNjogJFY4LCA3OiAkVjksIDEwOiAyMywgMTE6ICRWYSB9LCBvKCRWYiwgWzIsIDIyXSwgeyAxNzogMTcsIDE4OiAxOCwgMTQ6IDI3LCAxNTogWzEsIDI4XSwgMTY6IFsxLCAyOV0sIDE5OiAkVjUsIDIyOiAkVjYgfSksIG8oJFZiLCBbMiwgMThdKSwgbygkVmIsIFsyLCAxOV0pLCBvKCRWYiwgWzIsIDIwXSksIG8oJFZiLCBbMiwgMjFdKSwgbygkVmIsIFsyLCAyM10pLCBvKCRWYiwgWzIsIDI0XSksIG8oJFZiLCBbMiwgMjZdLCB7IDE5OiBbMSwgMzBdIH0pLCB7IDIwOiBbMSwgMzFdIH0sIHsgNjogJFY4LCA3OiAkVjksIDEwOiAzMiwgMTE6ICRWYSB9LCB7IDE6IFsyLCA3XSwgNjogJFYxLCAxMjogMjEsIDEzOiAkVjIsIDE0OiAxNCwgMTU6ICRWMywgMTY6ICRWNCwgMTc6IDE3LCAxODogMTgsIDE5OiAkVjUsIDIyOiAkVjYgfSwgbygkVmMsIFsyLCAxNF0sIHsgNzogJFZkLCAxMTogJFZlIH0pLCBvKCRWZiwgWzIsIDhdKSwgbygkVmYsIFsyLCA5XSksIG8oJFZmLCBbMiwgMTBdKSwgbygkVmIsIFsyLCAxNV0pLCBvKCRWYiwgWzIsIDE2XSksIG8oJFZiLCBbMiwgMTddKSwgeyAyMDogWzEsIDM1XSB9LCB7IDIxOiBbMSwgMzZdIH0sIG8oJFZjLCBbMiwgMTNdLCB7IDc6ICRWZCwgMTE6ICRWZSB9KSwgbygkVmYsIFsyLCAxMV0pLCBvKCRWZiwgWzIsIDEyXSksIHsgMjE6IFsxLCAzN10gfSwgbygkVmIsIFsyLCAyNV0pLCBvKCRWYiwgWzIsIDI3XSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDI6IFsyLCAxXSwgNjogWzIsIDJdIH0sXG4gICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcjIoc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKSB8fCBsZXhlcjIubGV4KCkgfHwgRU9GO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHRzdGFjayA9IHRva2VuO1xuICAgICAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgfVxuICAgICAgdmFyIHN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgdmFyIGVyclN0ciA9IFwiXCI7XG4gICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxleGVyMi5zaG93UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyBsZXhlcjIuc2hvd1Bvc2l0aW9uKCkgKyBcIlxcbkV4cGVjdGluZyBcIiArIGV4cGVjdGVkLmpvaW4oXCIsIFwiKSArIFwiLCBnb3QgJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gRU9GID8gXCJlbmQgb2YgaW5wdXRcIiA6IFwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxleGVyMi5tYXRjaCxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICBsaW5lOiBsZXhlcjIueXlsaW5lbm8sXG4gICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2gobGV4ZXIyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaChsZXhlcjIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHl5bGVuZyA9IGxleGVyMi55eWxlbmc7XG4gICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyMi55eXRleHQ7XG4gICAgICAgICAgICAgIHl5bGluZW5vID0gbGV4ZXIyLnl5bGluZW5vO1xuICAgICAgICAgICAgICB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICB5eWxlbmcsXG4gICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICBzaGFyZWRTdGF0ZS55eSxcbiAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgIGxzdGFja1xuICAgICAgICAgICAgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBsZXhlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZXhlcjIgPSB7XG4gICAgICBFT0Y6IDEsXG4gICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yMihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiRm91bmQgY29tbWVudFwiLCB5eV8ueXl0ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiA2O1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJDTEFTU1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIkJlZ2luIGljb25cIik7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiSUNPTlwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiU1BBQ0VMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDY7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgcmV0dXJuIDc7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiZW5kIGljb25cIik7XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJFeHBsb2Rpbmcgbm9kZVwiKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJOT0RFXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIkNsb3VkXCIpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcIk5PREVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTk7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwiRXhwbG9zaW9uIEJhbmdcIik7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTk9ERVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxOTtcbiAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJDbG91ZCBCYW5nXCIpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcIk5PREVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTk7XG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJOT0RFXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTk9ERVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxOTtcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIk5PREVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTk7XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJOT0RFXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICByZXR1cm4gMTM7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHJldHVybiAyMjtcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgcmV0dXJuIDExO1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTlNUUjJcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIFwiTk9ERV9ERVNDUlwiO1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJTdGFydGluZyBOU1RSXCIpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcIk5TVFJcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJkZXNjcmlwdGlvbjpcIiwgeXlfLnl5dGV4dCk7XG4gICAgICAgICAgICByZXR1cm4gXCJOT0RFX0RFU0NSXCI7XG4gICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIm5vZGUgZW5kICkpXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFwiTk9ERV9ERU5EXCI7XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwibm9kZSBlbmQgKVwiKTtcbiAgICAgICAgICAgIHJldHVybiBcIk5PREVfREVORFwiO1xuICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIm5vZGUgZW5kIC4uLlwiLCB5eV8ueXl0ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiBcIk5PREVfREVORFwiO1xuICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIm5vZGUgZW5kICgoXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFwiTk9ERV9ERU5EXCI7XG4gICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwibm9kZSBlbmQgKC1cIik7XG4gICAgICAgICAgICByZXR1cm4gXCJOT0RFX0RFTkRcIjtcbiAgICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJub2RlIGVuZCAoLVwiKTtcbiAgICAgICAgICAgIHJldHVybiBcIk5PREVfREVORFwiO1xuICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eS5nZXRMb2dnZXIoKS50cmFjZShcIm5vZGUgZW5kICgoXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFwiTk9ERV9ERU5EXCI7XG4gICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5LmdldExvZ2dlcigpLnRyYWNlKFwibm9kZSBlbmQgKChcIik7XG4gICAgICAgICAgICByZXR1cm4gXCJOT0RFX0RFTkRcIjtcbiAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJMb25nIGRlc2NyaXB0aW9uOlwiLCB5eV8ueXl0ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiAyMDtcbiAgICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICAgeXkuZ2V0TG9nZ2VyKCkudHJhY2UoXCJMb25nIGRlc2NyaXB0aW9uOlwiLCB5eV8ueXl0ZXh0KTtcbiAgICAgICAgICAgIHJldHVybiAyMDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiBbL14oPzpcXHMqJSUuKikvaSwgL14oPzptaW5kbWFwXFxiKS9pLCAvXig/Ojo6OikvaSwgL14oPzouKykvaSwgL14oPzpcXG4pL2ksIC9eKD86OjppY29uXFwoKS9pLCAvXig/OltcXHNdK1tcXG5dKS9pLCAvXig/OltcXG5dKykvaSwgL14oPzpbXlxcKV0rKS9pLCAvXig/OlxcKSkvaSwgL14oPzotXFwpKS9pLCAvXig/OlxcKC0pL2ksIC9eKD86XFwpXFwpKS9pLCAvXig/OlxcKSkvaSwgL14oPzpcXChcXCgpL2ksIC9eKD86XFx7XFx7KS9pLCAvXig/OlxcKCkvaSwgL14oPzpcXFspL2ksIC9eKD86W1xcc10rKS9pLCAvXig/OlteXFwoXFxbXFxuXFwtXFwpXFx7XFx9XSspL2ksIC9eKD86JCkvaSwgL14oPzpbXCJdW2BdKS9pLCAvXig/OlteYFwiXSspL2ksIC9eKD86W2BdW1wiXSkvaSwgL14oPzpbXCJdKS9pLCAvXig/OlteXCJdKykvaSwgL14oPzpbXCJdKS9pLCAvXig/OltcXCldXFwpKS9pLCAvXig/OltcXCldKS9pLCAvXig/OltcXF1dKS9pLCAvXig/OlxcfVxcfSkvaSwgL14oPzpcXCgtKS9pLCAvXig/Oi1cXCkpL2ksIC9eKD86XFwoXFwoKS9pLCAvXig/OlxcKCkvaSwgL14oPzpbXlxcKVxcXVxcKFxcfV0rKS9pLCAvXig/Oi4rKD8hXFwoXFwoKSkvaV0sXG4gICAgICBjb25kaXRpb25zOiB7IFwiQ0xBU1NcIjogeyBcInJ1bGVzXCI6IFszLCA0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJQ09OXCI6IHsgXCJydWxlc1wiOiBbOCwgOV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiTlNUUjJcIjogeyBcInJ1bGVzXCI6IFsyMiwgMjNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIk5TVFJcIjogeyBcInJ1bGVzXCI6IFsyNSwgMjZdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIk5PREVcIjogeyBcInJ1bGVzXCI6IFsyMSwgMjQsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgMSwgMiwgNSwgNiwgNywgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwXSwgXCJpbmNsdXNpdmVcIjogdHJ1ZSB9IH1cbiAgICB9O1xuICAgIHJldHVybiBsZXhlcjI7XG4gIH0oKTtcbiAgcGFyc2VyMi5sZXhlciA9IGxleGVyO1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgdGhpcy55eSA9IHt9O1xuICB9XG4gIFBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXIyO1xuICBwYXJzZXIyLlBhcnNlciA9IFBhcnNlcjtcbiAgcmV0dXJuIG5ldyBQYXJzZXIoKTtcbn0oKTtcbnBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5jb25zdCBtaW5kbWFwUGFyc2VyID0gcGFyc2VyO1xuY29uc3Qgc2FuaXRpemVUZXh0ID0gKHRleHQpID0+IHNhbml0aXplVGV4dCQxKHRleHQsIGdldENvbmZpZygpKTtcbmxldCBub2RlcyA9IFtdO1xubGV0IGNudCA9IDA7XG5sZXQgZWxlbWVudHMgPSB7fTtcbmNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICBub2RlcyA9IFtdO1xuICBjbnQgPSAwO1xuICBlbGVtZW50cyA9IHt9O1xufTtcbmNvbnN0IGdldFBhcmVudCA9IGZ1bmN0aW9uKGxldmVsKSB7XG4gIGZvciAobGV0IGkgPSBub2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChub2Rlc1tpXS5sZXZlbCA8IGxldmVsKSB7XG4gICAgICByZXR1cm4gbm9kZXNbaV07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbnN0IGdldE1pbmRtYXAgPSAoKSA9PiB7XG4gIHJldHVybiBub2Rlcy5sZW5ndGggPiAwID8gbm9kZXNbMF0gOiBudWxsO1xufTtcbmNvbnN0IGFkZE5vZGUgPSAobGV2ZWwsIGlkLCBkZXNjciwgdHlwZSkgPT4ge1xuICBsb2cuaW5mbyhcImFkZE5vZGVcIiwgbGV2ZWwsIGlkLCBkZXNjciwgdHlwZSk7XG4gIGNvbnN0IGNvbmYgPSBnZXRDb25maWcoKTtcbiAgY29uc3Qgbm9kZSA9IHtcbiAgICBpZDogY250KyssXG4gICAgbm9kZUlkOiBzYW5pdGl6ZVRleHQoaWQpLFxuICAgIGxldmVsLFxuICAgIGRlc2NyOiBzYW5pdGl6ZVRleHQoZGVzY3IpLFxuICAgIHR5cGUsXG4gICAgY2hpbGRyZW46IFtdLFxuICAgIHdpZHRoOiBnZXRDb25maWcoKS5taW5kbWFwLm1heE5vZGVXaWR0aFxuICB9O1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2Ugbm9kZVR5cGUuUk9VTkRFRF9SRUNUOlxuICAgICAgbm9kZS5wYWRkaW5nID0gMiAqIGNvbmYubWluZG1hcC5wYWRkaW5nO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBub2RlVHlwZS5SRUNUOlxuICAgICAgbm9kZS5wYWRkaW5nID0gMiAqIGNvbmYubWluZG1hcC5wYWRkaW5nO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBub2RlVHlwZS5IRVhBR09OOlxuICAgICAgbm9kZS5wYWRkaW5nID0gMiAqIGNvbmYubWluZG1hcC5wYWRkaW5nO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG5vZGUucGFkZGluZyA9IGNvbmYubWluZG1hcC5wYWRkaW5nO1xuICB9XG4gIGNvbnN0IHBhcmVudCA9IGdldFBhcmVudChsZXZlbCk7XG4gIGlmIChwYXJlbnQpIHtcbiAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGlmIChub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZXJlIGNhbiBiZSBvbmx5IG9uZSByb290LiBObyBwYXJlbnQgY291bGQgYmUgZm91bmQgZm9yIChcIicgKyBub2RlLmRlc2NyICsgJ1wiKSdcbiAgICAgICk7XG4gICAgICBlcnJvci5oYXNoID0ge1xuICAgICAgICB0ZXh0OiBcImJyYW5jaCBcIiArIG5hbWUsXG4gICAgICAgIHRva2VuOiBcImJyYW5jaCBcIiArIG5hbWUsXG4gICAgICAgIGxpbmU6IFwiMVwiLFxuICAgICAgICBsb2M6IHsgZmlyc3RfbGluZTogMSwgbGFzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDEsIGxhc3RfY29sdW1uOiAxIH0sXG4gICAgICAgIGV4cGVjdGVkOiBbJ1wiY2hlY2tvdXQgJyArIG5hbWUgKyAnXCInXVxuICAgICAgfTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IG5vZGVUeXBlID0ge1xuICBERUZBVUxUOiAwLFxuICBOT19CT1JERVI6IDAsXG4gIFJPVU5ERURfUkVDVDogMSxcbiAgUkVDVDogMixcbiAgQ0lSQ0xFOiAzLFxuICBDTE9VRDogNCxcbiAgQkFORzogNSxcbiAgSEVYQUdPTjogNlxufTtcbmNvbnN0IGdldFR5cGUgPSAoc3RhcnRTdHIsIGVuZFN0cikgPT4ge1xuICBsb2cuZGVidWcoXCJJbiBnZXQgdHlwZVwiLCBzdGFydFN0ciwgZW5kU3RyKTtcbiAgc3dpdGNoIChzdGFydFN0cikge1xuICAgIGNhc2UgXCJbXCI6XG4gICAgICByZXR1cm4gbm9kZVR5cGUuUkVDVDtcbiAgICBjYXNlIFwiKFwiOlxuICAgICAgcmV0dXJuIGVuZFN0ciA9PT0gXCIpXCIgPyBub2RlVHlwZS5ST1VOREVEX1JFQ1QgOiBub2RlVHlwZS5DTE9VRDtcbiAgICBjYXNlIFwiKChcIjpcbiAgICAgIHJldHVybiBub2RlVHlwZS5DSVJDTEU7XG4gICAgY2FzZSBcIilcIjpcbiAgICAgIHJldHVybiBub2RlVHlwZS5DTE9VRDtcbiAgICBjYXNlIFwiKSlcIjpcbiAgICAgIHJldHVybiBub2RlVHlwZS5CQU5HO1xuICAgIGNhc2UgXCJ7e1wiOlxuICAgICAgcmV0dXJuIG5vZGVUeXBlLkhFWEFHT047XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBub2RlVHlwZS5ERUZBVUxUO1xuICB9XG59O1xuY29uc3Qgc2V0RWxlbWVudEZvcklkID0gKGlkLCBlbGVtZW50KSA9PiB7XG4gIGVsZW1lbnRzW2lkXSA9IGVsZW1lbnQ7XG59O1xuY29uc3QgZGVjb3JhdGVOb2RlID0gKGRlY29yYXRpb24pID0+IHtcbiAgY29uc3Qgbm9kZSA9IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdO1xuICBpZiAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLmljb24pIHtcbiAgICBub2RlLmljb24gPSBzYW5pdGl6ZVRleHQoZGVjb3JhdGlvbi5pY29uKTtcbiAgfVxuICBpZiAoZGVjb3JhdGlvbiAmJiBkZWNvcmF0aW9uLmNsYXNzKSB7XG4gICAgbm9kZS5jbGFzcyA9IHNhbml0aXplVGV4dChkZWNvcmF0aW9uLmNsYXNzKTtcbiAgfVxufTtcbmNvbnN0IHR5cGUyU3RyID0gKHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBub2RlVHlwZS5ERUZBVUxUOlxuICAgICAgcmV0dXJuIFwibm8tYm9yZGVyXCI7XG4gICAgY2FzZSBub2RlVHlwZS5SRUNUOlxuICAgICAgcmV0dXJuIFwicmVjdFwiO1xuICAgIGNhc2Ugbm9kZVR5cGUuUk9VTkRFRF9SRUNUOlxuICAgICAgcmV0dXJuIFwicm91bmRlZC1yZWN0XCI7XG4gICAgY2FzZSBub2RlVHlwZS5DSVJDTEU6XG4gICAgICByZXR1cm4gXCJjaXJjbGVcIjtcbiAgICBjYXNlIG5vZGVUeXBlLkNMT1VEOlxuICAgICAgcmV0dXJuIFwiY2xvdWRcIjtcbiAgICBjYXNlIG5vZGVUeXBlLkJBTkc6XG4gICAgICByZXR1cm4gXCJiYW5nXCI7XG4gICAgY2FzZSBub2RlVHlwZS5IRVhBR09OOlxuICAgICAgcmV0dXJuIFwiaGV4Z29uXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIm5vLWJvcmRlclwiO1xuICB9XG59O1xubGV0IHBhcnNlRXJyb3I7XG5jb25zdCBzZXRFcnJvckhhbmRsZXIgPSAoaGFuZGxlcikgPT4ge1xuICBwYXJzZUVycm9yID0gaGFuZGxlcjtcbn07XG5jb25zdCBnZXRMb2dnZXIgPSAoKSA9PiBsb2c7XG5jb25zdCBnZXROb2RlQnlJZCA9IChpZCkgPT4gbm9kZXNbaWRdO1xuY29uc3QgZ2V0RWxlbWVudEJ5SWQgPSAoaWQpID0+IGVsZW1lbnRzW2lkXTtcbmNvbnN0IG1pbmRtYXBEYiA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIGFkZE5vZGUsXG4gIGNsZWFyLFxuICBkZWNvcmF0ZU5vZGUsXG4gIGdldEVsZW1lbnRCeUlkLFxuICBnZXRMb2dnZXIsXG4gIGdldE1pbmRtYXAsXG4gIGdldE5vZGVCeUlkLFxuICBnZXRUeXBlLFxuICBub2RlVHlwZSxcbiAgZ2V0IHBhcnNlRXJyb3IoKSB7XG4gICAgcmV0dXJuIHBhcnNlRXJyb3I7XG4gIH0sXG4gIHNhbml0aXplVGV4dCxcbiAgc2V0RWxlbWVudEZvcklkLFxuICBzZXRFcnJvckhhbmRsZXIsXG4gIHR5cGUyU3RyXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6IFwiTW9kdWxlXCIgfSkpO1xuY29uc3QgTUFYX1NFQ1RJT05TID0gMTI7XG5jb25zdCBkZWZhdWx0QmtnID0gZnVuY3Rpb24oZWxlbSwgbm9kZSwgc2VjdGlvbikge1xuICBjb25zdCByZCA9IDU7XG4gIGVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiaWRcIiwgXCJub2RlLVwiICsgbm9kZS5pZCkuYXR0cihcImNsYXNzXCIsIFwibm9kZS1ia2cgbm9kZS1cIiArIHR5cGUyU3RyKG5vZGUudHlwZSkpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgYE0wICR7bm9kZS5oZWlnaHQgLSByZH0gdiR7LW5vZGUuaGVpZ2h0ICsgMiAqIHJkfSBxMCwtNSA1LC01IGgke25vZGUud2lkdGggLSAyICogcmR9IHE1LDAgNSw1IHYke25vZGUuaGVpZ2h0IC0gcmR9IEgwIFpgXG4gICk7XG4gIGVsZW0uYXBwZW5kKFwibGluZVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJub2RlLWxpbmUtXCIgKyBzZWN0aW9uKS5hdHRyKFwieDFcIiwgMCkuYXR0cihcInkxXCIsIG5vZGUuaGVpZ2h0KS5hdHRyKFwieDJcIiwgbm9kZS53aWR0aCkuYXR0cihcInkyXCIsIG5vZGUuaGVpZ2h0KTtcbn07XG5jb25zdCByZWN0QmtnID0gZnVuY3Rpb24oZWxlbSwgbm9kZSkge1xuICBlbGVtLmFwcGVuZChcInJlY3RcIikuYXR0cihcImlkXCIsIFwibm9kZS1cIiArIG5vZGUuaWQpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUtYmtnIG5vZGUtXCIgKyB0eXBlMlN0cihub2RlLnR5cGUpKS5hdHRyKFwiaGVpZ2h0XCIsIG5vZGUuaGVpZ2h0KS5hdHRyKFwid2lkdGhcIiwgbm9kZS53aWR0aCk7XG59O1xuY29uc3QgY2xvdWRCa2cgPSBmdW5jdGlvbihlbGVtLCBub2RlKSB7XG4gIGNvbnN0IHcgPSBub2RlLndpZHRoO1xuICBjb25zdCBoID0gbm9kZS5oZWlnaHQ7XG4gIGNvbnN0IHIxID0gMC4xNSAqIHc7XG4gIGNvbnN0IHIyID0gMC4yNSAqIHc7XG4gIGNvbnN0IHIzID0gMC4zNSAqIHc7XG4gIGNvbnN0IHI0ID0gMC4yICogdztcbiAgZWxlbS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJpZFwiLCBcIm5vZGUtXCIgKyBub2RlLmlkKS5hdHRyKFwiY2xhc3NcIiwgXCJub2RlLWJrZyBub2RlLVwiICsgdHlwZTJTdHIobm9kZS50eXBlKSkuYXR0cihcbiAgICBcImRcIixcbiAgICBgTTAgMCBhJHtyMX0sJHtyMX0gMCAwLDEgJHt3ICogMC4yNX0sJHstMSAqIHcgKiAwLjF9XG4gICAgICBhJHtyM30sJHtyM30gMSAwLDEgJHt3ICogMC40fSwkey0xICogdyAqIDAuMX1cbiAgICAgIGEke3IyfSwke3IyfSAxIDAsMSAke3cgKiAwLjM1fSwkezEgKiB3ICogMC4yfVxuXG4gICAgICBhJHtyMX0sJHtyMX0gMSAwLDEgJHt3ICogMC4xNX0sJHsxICogaCAqIDAuMzV9XG4gICAgICBhJHtyNH0sJHtyNH0gMSAwLDEgJHstMSAqIHcgKiAwLjE1fSwkezEgKiBoICogMC42NX1cblxuICAgICAgYSR7cjJ9LCR7cjF9IDEgMCwxICR7LTEgKiB3ICogMC4yNX0sJHt3ICogMC4xNX1cbiAgICAgIGEke3IzfSwke3IzfSAxIDAsMSAkey0xICogdyAqIDAuNX0sJHswfVxuICAgICAgYSR7cjF9LCR7cjF9IDEgMCwxICR7LTEgKiB3ICogMC4yNX0sJHstMSAqIHcgKiAwLjE1fVxuXG4gICAgICBhJHtyMX0sJHtyMX0gMSAwLDEgJHstMSAqIHcgKiAwLjF9LCR7LTEgKiBoICogMC4zNX1cbiAgICAgIGEke3I0fSwke3I0fSAxIDAsMSAke3cgKiAwLjF9LCR7LTEgKiBoICogMC42NX1cblxuICAgIEgwIFYwIFpgXG4gICk7XG59O1xuY29uc3QgYmFuZ0JrZyA9IGZ1bmN0aW9uKGVsZW0sIG5vZGUpIHtcbiAgY29uc3QgdyA9IG5vZGUud2lkdGg7XG4gIGNvbnN0IGggPSBub2RlLmhlaWdodDtcbiAgY29uc3QgciA9IDAuMTUgKiB3O1xuICBlbGVtLmFwcGVuZChcInBhdGhcIikuYXR0cihcImlkXCIsIFwibm9kZS1cIiArIG5vZGUuaWQpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUtYmtnIG5vZGUtXCIgKyB0eXBlMlN0cihub2RlLnR5cGUpKS5hdHRyKFxuICAgIFwiZFwiLFxuICAgIGBNMCAwIGEke3J9LCR7cn0gMSAwLDAgJHt3ICogMC4yNX0sJHstMSAqIGggKiAwLjF9XG4gICAgICBhJHtyfSwke3J9IDEgMCwwICR7dyAqIDAuMjV9LCR7MH1cbiAgICAgIGEke3J9LCR7cn0gMSAwLDAgJHt3ICogMC4yNX0sJHswfVxuICAgICAgYSR7cn0sJHtyfSAxIDAsMCAke3cgKiAwLjI1fSwkezEgKiBoICogMC4xfVxuXG4gICAgICBhJHtyfSwke3J9IDEgMCwwICR7dyAqIDAuMTV9LCR7MSAqIGggKiAwLjMzfVxuICAgICAgYSR7ciAqIDAuOH0sJHtyICogMC44fSAxIDAsMCAkezB9LCR7MSAqIGggKiAwLjM0fVxuICAgICAgYSR7cn0sJHtyfSAxIDAsMCAkey0xICogdyAqIDAuMTV9LCR7MSAqIGggKiAwLjMzfVxuXG4gICAgICBhJHtyfSwke3J9IDEgMCwwICR7LTEgKiB3ICogMC4yNX0sJHtoICogMC4xNX1cbiAgICAgIGEke3J9LCR7cn0gMSAwLDAgJHstMSAqIHcgKiAwLjI1fSwkezB9XG4gICAgICBhJHtyfSwke3J9IDEgMCwwICR7LTEgKiB3ICogMC4yNX0sJHswfVxuICAgICAgYSR7cn0sJHtyfSAxIDAsMCAkey0xICogdyAqIDAuMjV9LCR7LTEgKiBoICogMC4xNX1cblxuICAgICAgYSR7cn0sJHtyfSAxIDAsMCAkey0xICogdyAqIDAuMX0sJHstMSAqIGggKiAwLjMzfVxuICAgICAgYSR7ciAqIDAuOH0sJHtyICogMC44fSAxIDAsMCAkezB9LCR7LTEgKiBoICogMC4zNH1cbiAgICAgIGEke3J9LCR7cn0gMSAwLDAgJHt3ICogMC4xfSwkey0xICogaCAqIDAuMzN9XG5cbiAgICBIMCBWMCBaYFxuICApO1xufTtcbmNvbnN0IGNpcmNsZUJrZyA9IGZ1bmN0aW9uKGVsZW0sIG5vZGUpIHtcbiAgZWxlbS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImlkXCIsIFwibm9kZS1cIiArIG5vZGUuaWQpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUtYmtnIG5vZGUtXCIgKyB0eXBlMlN0cihub2RlLnR5cGUpKS5hdHRyKFwiclwiLCBub2RlLndpZHRoIC8gMik7XG59O1xuZnVuY3Rpb24gaW5zZXJ0UG9seWdvblNoYXBlKHBhcmVudCwgdywgaCwgcG9pbnRzLCBub2RlKSB7XG4gIHJldHVybiBwYXJlbnQuaW5zZXJ0KFwicG9seWdvblwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFxuICAgIFwicG9pbnRzXCIsXG4gICAgcG9pbnRzLm1hcChmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gZC54ICsgXCIsXCIgKyBkLnk7XG4gICAgfSkuam9pbihcIiBcIilcbiAgKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgKG5vZGUud2lkdGggLSB3KSAvIDIgKyBcIiwgXCIgKyBoICsgXCIpXCIpO1xufVxuY29uc3QgaGV4YWdvbkJrZyA9IGZ1bmN0aW9uKGVsZW0sIG5vZGUpIHtcbiAgY29uc3QgaCA9IG5vZGUuaGVpZ2h0O1xuICBjb25zdCBmID0gNDtcbiAgY29uc3QgbSA9IGggLyBmO1xuICBjb25zdCB3ID0gbm9kZS53aWR0aCAtIG5vZGUucGFkZGluZyArIDIgKiBtO1xuICBjb25zdCBwb2ludHMgPSBbXG4gICAgeyB4OiBtLCB5OiAwIH0sXG4gICAgeyB4OiB3IC0gbSwgeTogMCB9LFxuICAgIHsgeDogdywgeTogLWggLyAyIH0sXG4gICAgeyB4OiB3IC0gbSwgeTogLWggfSxcbiAgICB7IHg6IG0sIHk6IC1oIH0sXG4gICAgeyB4OiAwLCB5OiAtaCAvIDIgfVxuICBdO1xuICBpbnNlcnRQb2x5Z29uU2hhcGUoZWxlbSwgdywgaCwgcG9pbnRzLCBub2RlKTtcbn07XG5jb25zdCByb3VuZGVkUmVjdEJrZyA9IGZ1bmN0aW9uKGVsZW0sIG5vZGUpIHtcbiAgZWxlbS5hcHBlbmQoXCJyZWN0XCIpLmF0dHIoXCJpZFwiLCBcIm5vZGUtXCIgKyBub2RlLmlkKS5hdHRyKFwiY2xhc3NcIiwgXCJub2RlLWJrZyBub2RlLVwiICsgdHlwZTJTdHIobm9kZS50eXBlKSkuYXR0cihcImhlaWdodFwiLCBub2RlLmhlaWdodCkuYXR0cihcInJ4XCIsIG5vZGUucGFkZGluZykuYXR0cihcInJ5XCIsIG5vZGUucGFkZGluZykuYXR0cihcIndpZHRoXCIsIG5vZGUud2lkdGgpO1xufTtcbmNvbnN0IGRyYXdOb2RlID0gZnVuY3Rpb24oZWxlbSwgbm9kZSwgZnVsbFNlY3Rpb24sIGNvbmYpIHtcbiAgY29uc3QgaHRtbExhYmVscyA9IGNvbmYuaHRtbExhYmVscztcbiAgY29uc3Qgc2VjdGlvbiA9IGZ1bGxTZWN0aW9uICUgKE1BWF9TRUNUSU9OUyAtIDEpO1xuICBjb25zdCBub2RlRWxlbSA9IGVsZW0uYXBwZW5kKFwiZ1wiKTtcbiAgbm9kZS5zZWN0aW9uID0gc2VjdGlvbjtcbiAgbGV0IHNlY3Rpb25DbGFzcyA9IFwic2VjdGlvbi1cIiArIHNlY3Rpb247XG4gIGlmIChzZWN0aW9uIDwgMCkge1xuICAgIHNlY3Rpb25DbGFzcyArPSBcIiBzZWN0aW9uLXJvb3RcIjtcbiAgfVxuICBub2RlRWxlbS5hdHRyKFwiY2xhc3NcIiwgKG5vZGUuY2xhc3MgPyBub2RlLmNsYXNzICsgXCIgXCIgOiBcIlwiKSArIFwibWluZG1hcC1ub2RlIFwiICsgc2VjdGlvbkNsYXNzKTtcbiAgY29uc3QgYmtnRWxlbSA9IG5vZGVFbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IHRleHRFbGVtID0gbm9kZUVsZW0uYXBwZW5kKFwiZ1wiKTtcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBub2RlLmRlc2NyLnJlcGxhY2UoLyg8YnJcXC8qPikvZywgXCJcXG5cIik7XG4gIGNyZWF0ZVRleHQodGV4dEVsZW0sIGRlc2NyaXB0aW9uLCB7XG4gICAgdXNlSHRtbExhYmVsczogaHRtbExhYmVscyxcbiAgICB3aWR0aDogbm9kZS53aWR0aCxcbiAgICBjbGFzc2VzOiBcIm1pbmRtYXAtbm9kZS1sYWJlbFwiXG4gIH0pO1xuICBpZiAoIWh0bWxMYWJlbHMpIHtcbiAgICB0ZXh0RWxlbS5hdHRyKFwiZHlcIiwgXCIxZW1cIikuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKS5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpO1xuICB9XG4gIGNvbnN0IGJib3ggPSB0ZXh0RWxlbS5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCBmb250U2l6ZSA9IGNvbmYuZm9udFNpemUucmVwbGFjZSA/IGNvbmYuZm9udFNpemUucmVwbGFjZShcInB4XCIsIFwiXCIpIDogY29uZi5mb250U2l6ZTtcbiAgbm9kZS5oZWlnaHQgPSBiYm94LmhlaWdodCArIGZvbnRTaXplICogMS4xICogMC41ICsgbm9kZS5wYWRkaW5nO1xuICBub2RlLndpZHRoID0gYmJveC53aWR0aCArIDIgKiBub2RlLnBhZGRpbmc7XG4gIGlmIChub2RlLmljb24pIHtcbiAgICBpZiAobm9kZS50eXBlID09PSBub2RlVHlwZS5DSVJDTEUpIHtcbiAgICAgIG5vZGUuaGVpZ2h0ICs9IDUwO1xuICAgICAgbm9kZS53aWR0aCArPSA1MDtcbiAgICAgIGNvbnN0IGljb24gPSBub2RlRWxlbS5hcHBlbmQoXCJmb3JlaWduT2JqZWN0XCIpLmF0dHIoXCJoZWlnaHRcIiwgXCI1MHB4XCIpLmF0dHIoXCJ3aWR0aFwiLCBub2RlLndpZHRoKS5hdHRyKFwic3R5bGVcIiwgXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCIpO1xuICAgICAgaWNvbi5hcHBlbmQoXCJkaXZcIikuYXR0cihcImNsYXNzXCIsIFwiaWNvbi1jb250YWluZXJcIikuYXBwZW5kKFwiaVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJub2RlLWljb24tXCIgKyBzZWN0aW9uICsgXCIgXCIgKyBub2RlLmljb24pO1xuICAgICAgdGV4dEVsZW0uYXR0cihcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyBub2RlLndpZHRoIC8gMiArIFwiLCBcIiArIChub2RlLmhlaWdodCAvIDIgLSAxLjUgKiBub2RlLnBhZGRpbmcpICsgXCIpXCJcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUud2lkdGggKz0gNTA7XG4gICAgICBjb25zdCBvcmdIZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgIG5vZGUuaGVpZ2h0ID0gTWF0aC5tYXgob3JnSGVpZ2h0LCA2MCk7XG4gICAgICBjb25zdCBoZWlnaHREaWZmID0gTWF0aC5hYnMobm9kZS5oZWlnaHQgLSBvcmdIZWlnaHQpO1xuICAgICAgY29uc3QgaWNvbiA9IG5vZGVFbGVtLmFwcGVuZChcImZvcmVpZ25PYmplY3RcIikuYXR0cihcIndpZHRoXCIsIFwiNjBweFwiKS5hdHRyKFwiaGVpZ2h0XCIsIG5vZGUuaGVpZ2h0KS5hdHRyKFwic3R5bGVcIiwgXCJ0ZXh0LWFsaWduOiBjZW50ZXI7bWFyZ2luLXRvcDpcIiArIGhlaWdodERpZmYgLyAyICsgXCJweDtcIik7XG4gICAgICBpY29uLmFwcGVuZChcImRpdlwiKS5hdHRyKFwiY2xhc3NcIiwgXCJpY29uLWNvbnRhaW5lclwiKS5hcHBlbmQoXCJpXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUtaWNvbi1cIiArIHNlY3Rpb24gKyBcIiBcIiArIG5vZGUuaWNvbik7XG4gICAgICB0ZXh0RWxlbS5hdHRyKFxuICAgICAgICBcInRyYW5zZm9ybVwiLFxuICAgICAgICBcInRyYW5zbGF0ZShcIiArICgyNSArIG5vZGUud2lkdGggLyAyKSArIFwiLCBcIiArIChoZWlnaHREaWZmIC8gMiArIG5vZGUucGFkZGluZyAvIDIpICsgXCIpXCJcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghaHRtbExhYmVscykge1xuICAgICAgY29uc3QgZHggPSBub2RlLndpZHRoIC8gMjtcbiAgICAgIGNvbnN0IGR5ID0gbm9kZS5wYWRkaW5nIC8gMjtcbiAgICAgIHRleHRFbGVtLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBkeCArIFwiLCBcIiArIGR5ICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkeCA9IChub2RlLndpZHRoIC0gYmJveC53aWR0aCkgLyAyO1xuICAgICAgY29uc3QgZHkgPSAobm9kZS5oZWlnaHQgLSBiYm94LmhlaWdodCkgLyAyO1xuICAgICAgdGV4dEVsZW0uYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIGR4ICsgXCIsIFwiICsgZHkgKyBcIilcIik7XG4gICAgfVxuICB9XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgY2FzZSBub2RlVHlwZS5ERUZBVUxUOlxuICAgICAgZGVmYXVsdEJrZyhia2dFbGVtLCBub2RlLCBzZWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2Ugbm9kZVR5cGUuUk9VTkRFRF9SRUNUOlxuICAgICAgcm91bmRlZFJlY3RCa2coYmtnRWxlbSwgbm9kZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5vZGVUeXBlLlJFQ1Q6XG4gICAgICByZWN0QmtnKGJrZ0VsZW0sIG5vZGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBub2RlVHlwZS5DSVJDTEU6XG4gICAgICBia2dFbGVtLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBub2RlLndpZHRoIC8gMiArIFwiLCBcIiArICtub2RlLmhlaWdodCAvIDIgKyBcIilcIik7XG4gICAgICBjaXJjbGVCa2coYmtnRWxlbSwgbm9kZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5vZGVUeXBlLkNMT1VEOlxuICAgICAgY2xvdWRCa2coYmtnRWxlbSwgbm9kZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG5vZGVUeXBlLkJBTkc6XG4gICAgICBiYW5nQmtnKGJrZ0VsZW0sIG5vZGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBub2RlVHlwZS5IRVhBR09OOlxuICAgICAgaGV4YWdvbkJrZyhia2dFbGVtLCBub2RlKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHNldEVsZW1lbnRGb3JJZChub2RlLmlkLCBub2RlRWxlbSk7XG4gIHJldHVybiBub2RlLmhlaWdodDtcbn07XG5jb25zdCBkcmF3RWRnZSA9IGZ1bmN0aW9uIGRyYXdFZGdlMihlZGdlc0VsZW0sIG1pbmRtYXAsIHBhcmVudCwgZGVwdGgsIGZ1bGxTZWN0aW9uKSB7XG4gIGNvbnN0IHNlY3Rpb24gPSBmdWxsU2VjdGlvbiAlIChNQVhfU0VDVElPTlMgLSAxKTtcbiAgY29uc3Qgc3ggPSBwYXJlbnQueCArIHBhcmVudC53aWR0aCAvIDI7XG4gIGNvbnN0IHN5ID0gcGFyZW50LnkgKyBwYXJlbnQuaGVpZ2h0IC8gMjtcbiAgY29uc3QgZXggPSBtaW5kbWFwLnggKyBtaW5kbWFwLndpZHRoIC8gMjtcbiAgY29uc3QgZXkgPSBtaW5kbWFwLnkgKyBtaW5kbWFwLmhlaWdodCAvIDI7XG4gIGNvbnN0IG14ID0gZXggPiBzeCA/IHN4ICsgTWF0aC5hYnMoc3ggLSBleCkgLyAyIDogc3ggLSBNYXRoLmFicyhzeCAtIGV4KSAvIDI7XG4gIGNvbnN0IG15ID0gZXkgPiBzeSA/IHN5ICsgTWF0aC5hYnMoc3kgLSBleSkgLyAyIDogc3kgLSBNYXRoLmFicyhzeSAtIGV5KSAvIDI7XG4gIGNvbnN0IHF4ID0gZXggPiBzeCA/IE1hdGguYWJzKHN4IC0gbXgpIC8gMiArIHN4IDogLU1hdGguYWJzKHN4IC0gbXgpIC8gMiArIHN4O1xuICBjb25zdCBxeSA9IGV5ID4gc3kgPyBNYXRoLmFicyhzeSAtIG15KSAvIDIgKyBzeSA6IC1NYXRoLmFicyhzeSAtIG15KSAvIDIgKyBzeTtcbiAgZWRnZXNFbGVtLmFwcGVuZChcInBhdGhcIikuYXR0cihcbiAgICBcImRcIixcbiAgICBwYXJlbnQuZGlyZWN0aW9uID09PSBcIlRCXCIgfHwgcGFyZW50LmRpcmVjdGlvbiA9PT0gXCJCVFwiID8gYE0ke3N4fSwke3N5fSBRJHtzeH0sJHtxeX0gJHtteH0sJHtteX0gVCR7ZXh9LCR7ZXl9YCA6IGBNJHtzeH0sJHtzeX0gUSR7cXh9LCR7c3l9ICR7bXh9LCR7bXl9IFQke2V4fSwke2V5fWBcbiAgKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlIHNlY3Rpb24tZWRnZS1cIiArIHNlY3Rpb24gKyBcIiBlZGdlLWRlcHRoLVwiICsgZGVwdGgpO1xufTtcbmNvbnN0IHBvc2l0aW9uTm9kZSA9IGZ1bmN0aW9uKG5vZGUpIHtcbiAgY29uc3Qgbm9kZUVsZW0gPSBnZXRFbGVtZW50QnlJZChub2RlLmlkKTtcbiAgY29uc3QgeCA9IG5vZGUueCB8fCAwO1xuICBjb25zdCB5ID0gbm9kZS55IHx8IDA7XG4gIG5vZGVFbGVtLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCIsXCIgKyB5ICsgXCIpXCIpO1xufTtcbmNvbnN0IHN2Z0RyYXcgPSB7IGRyYXdOb2RlLCBwb3NpdGlvbk5vZGUsIGRyYXdFZGdlIH07XG5jeXRvc2NhcGUudXNlKGNvc2VCaWxrZW50KTtcbmZ1bmN0aW9uIGRyYXdOb2RlcyhzdmcsIG1pbmRtYXAsIHNlY3Rpb24sIGNvbmYpIHtcbiAgc3ZnRHJhdy5kcmF3Tm9kZShzdmcsIG1pbmRtYXAsIHNlY3Rpb24sIGNvbmYpO1xuICBpZiAobWluZG1hcC5jaGlsZHJlbikge1xuICAgIG1pbmRtYXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBkcmF3Tm9kZXMoc3ZnLCBjaGlsZCwgc2VjdGlvbiA8IDAgPyBpbmRleCA6IHNlY3Rpb24sIGNvbmYpO1xuICAgIH0pO1xuICB9XG59XG5mdW5jdGlvbiBkcmF3RWRnZXMoZWRnZXNFbCwgY3kpIHtcbiAgY3kuZWRnZXMoKS5tYXAoKGVkZ2UsIGlkKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IGVkZ2UuZGF0YSgpO1xuICAgIGlmIChlZGdlWzBdLl9wcml2YXRlLmJvZHlCb3VuZHMpIHtcbiAgICAgIGNvbnN0IGJvdW5kcyA9IGVkZ2VbMF0uX3ByaXZhdGUucnNjcmF0Y2g7XG4gICAgICBsb2cudHJhY2UoXCJFZGdlOiBcIiwgaWQsIGRhdGEpO1xuICAgICAgZWRnZXNFbC5pbnNlcnQoXCJwYXRoXCIpLmF0dHIoXG4gICAgICAgIFwiZFwiLFxuICAgICAgICBgTSAke2JvdW5kcy5zdGFydFh9LCR7Ym91bmRzLnN0YXJ0WX0gTCAke2JvdW5kcy5taWRYfSwke2JvdW5kcy5taWRZfSBMJHtib3VuZHMuZW5kWH0sJHtib3VuZHMuZW5kWX0gYFxuICAgICAgKS5hdHRyKFwiY2xhc3NcIiwgXCJlZGdlIHNlY3Rpb24tZWRnZS1cIiArIGRhdGEuc2VjdGlvbiArIFwiIGVkZ2UtZGVwdGgtXCIgKyBkYXRhLmRlcHRoKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gYWRkTm9kZXMobWluZG1hcCwgY3ksIGNvbmYsIGxldmVsKSB7XG4gIGN5LmFkZCh7XG4gICAgZ3JvdXA6IFwibm9kZXNcIixcbiAgICBkYXRhOiB7XG4gICAgICBpZDogbWluZG1hcC5pZCxcbiAgICAgIGxhYmVsVGV4dDogbWluZG1hcC5kZXNjcixcbiAgICAgIGhlaWdodDogbWluZG1hcC5oZWlnaHQsXG4gICAgICB3aWR0aDogbWluZG1hcC53aWR0aCxcbiAgICAgIGxldmVsLFxuICAgICAgbm9kZUlkOiBtaW5kbWFwLmlkLFxuICAgICAgcGFkZGluZzogbWluZG1hcC5wYWRkaW5nLFxuICAgICAgdHlwZTogbWluZG1hcC50eXBlXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgeDogbWluZG1hcC54LFxuICAgICAgeTogbWluZG1hcC55XG4gICAgfVxuICB9KTtcbiAgaWYgKG1pbmRtYXAuY2hpbGRyZW4pIHtcbiAgICBtaW5kbWFwLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBhZGROb2RlcyhjaGlsZCwgY3ksIGNvbmYsIGxldmVsICsgMSk7XG4gICAgICBjeS5hZGQoe1xuICAgICAgICBncm91cDogXCJlZGdlc1wiLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaWQ6IGAke21pbmRtYXAuaWR9XyR7Y2hpbGQuaWR9YCxcbiAgICAgICAgICBzb3VyY2U6IG1pbmRtYXAuaWQsXG4gICAgICAgICAgdGFyZ2V0OiBjaGlsZC5pZCxcbiAgICAgICAgICBkZXB0aDogbGV2ZWwsXG4gICAgICAgICAgc2VjdGlvbjogY2hpbGQuc2VjdGlvblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gbGF5b3V0TWluZG1hcChub2RlLCBjb25mKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlbmRlckVsID0gc2VsZWN0KFwiYm9keVwiKS5hcHBlbmQoXCJkaXZcIikuYXR0cihcImlkXCIsIFwiY3lcIikuYXR0cihcInN0eWxlXCIsIFwiZGlzcGxheTpub25lXCIpO1xuICAgIGNvbnN0IGN5ID0gY3l0b3NjYXBlKHtcbiAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjeVwiKSxcbiAgICAgIC8vIGNvbnRhaW5lciB0byByZW5kZXIgaW5cbiAgICAgIHN0eWxlOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWxlY3RvcjogXCJlZGdlXCIsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIFwiY3VydmUtc3R5bGVcIjogXCJiZXppZXJcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJlbmRlckVsLnJlbW92ZSgpO1xuICAgIGFkZE5vZGVzKG5vZGUsIGN5LCBjb25mLCAwKTtcbiAgICBjeS5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgbi5sYXlvdXREaW1lbnNpb25zID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gbi5kYXRhKCk7XG4gICAgICAgIHJldHVybiB7IHc6IGRhdGEud2lkdGgsIGg6IGRhdGEuaGVpZ2h0IH07XG4gICAgICB9O1xuICAgIH0pO1xuICAgIGN5LmxheW91dCh7XG4gICAgICBuYW1lOiBcImNvc2UtYmlsa2VudFwiLFxuICAgICAgcXVhbGl0eTogXCJwcm9vZlwiLFxuICAgICAgLy8gaGVhZGxlc3M6IHRydWUsXG4gICAgICBzdHlsZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgYW5pbWF0ZTogZmFsc2VcbiAgICB9KS5ydW4oKTtcbiAgICBjeS5yZWFkeSgoZSkgPT4ge1xuICAgICAgbG9nLmluZm8oXCJSZWFkeVwiLCBlKTtcbiAgICAgIHJlc29sdmUoY3kpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHBvc2l0aW9uTm9kZXMoY3kpIHtcbiAgY3kubm9kZXMoKS5tYXAoKG5vZGUsIGlkKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IG5vZGUuZGF0YSgpO1xuICAgIGRhdGEueCA9IG5vZGUucG9zaXRpb24oKS54O1xuICAgIGRhdGEueSA9IG5vZGUucG9zaXRpb24oKS55O1xuICAgIHN2Z0RyYXcucG9zaXRpb25Ob2RlKGRhdGEpO1xuICAgIGNvbnN0IGVsID0gZ2V0RWxlbWVudEJ5SWQoZGF0YS5ub2RlSWQpO1xuICAgIGxvZy5pbmZvKFwiSWQ6XCIsIGlkLCBcIlBvc2l0aW9uOiAoXCIsIG5vZGUucG9zaXRpb24oKS54LCBcIiwgXCIsIG5vZGUucG9zaXRpb24oKS55LCBcIilcIiwgZGF0YSk7XG4gICAgZWwuYXR0cihcbiAgICAgIFwidHJhbnNmb3JtXCIsXG4gICAgICBgdHJhbnNsYXRlKCR7bm9kZS5wb3NpdGlvbigpLnggLSBkYXRhLndpZHRoIC8gMn0sICR7bm9kZS5wb3NpdGlvbigpLnkgLSBkYXRhLmhlaWdodCAvIDJ9KWBcbiAgICApO1xuICAgIGVsLmF0dHIoXCJhdHRyXCIsIGBhcGEtJHtpZH0pYCk7XG4gIH0pO1xufVxuY29uc3QgZHJhdyA9IGFzeW5jICh0ZXh0LCBpZCwgdmVyc2lvbiwgZGlhZ09iaikgPT4ge1xuICBjb25zdCBjb25mID0gZ2V0Q29uZmlnKCk7XG4gIGNvbmYuaHRtbExhYmVscyA9IGZhbHNlO1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIGRpYWdPYmoucGFyc2VyLnBhcnNlKHRleHQpO1xuICBsb2cuZGVidWcoXCJSZW5kZXJpbmcgbWluZG1hcCBkaWFncmFtXFxuXCIgKyB0ZXh0LCBkaWFnT2JqLnBhcnNlcik7XG4gIGNvbnN0IHNlY3VyaXR5TGV2ZWwgPSBnZXRDb25maWcoKS5zZWN1cml0eUxldmVsO1xuICBsZXQgc2FuZGJveEVsZW1lbnQ7XG4gIGlmIChzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIikge1xuICAgIHNhbmRib3hFbGVtZW50ID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgfVxuICBjb25zdCByb290ID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzZWxlY3Qoc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keSkgOiBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChcIiNcIiArIGlkKTtcbiAgc3ZnLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IG1tID0gZGlhZ09iai5kYi5nZXRNaW5kbWFwKCk7XG4gIGNvbnN0IGVkZ2VzRWxlbSA9IHN2Zy5hcHBlbmQoXCJnXCIpO1xuICBlZGdlc0VsZW0uYXR0cihcImNsYXNzXCIsIFwibWluZG1hcC1lZGdlc1wiKTtcbiAgY29uc3Qgbm9kZXNFbGVtID0gc3ZnLmFwcGVuZChcImdcIik7XG4gIG5vZGVzRWxlbS5hdHRyKFwiY2xhc3NcIiwgXCJtaW5kbWFwLW5vZGVzXCIpO1xuICBkcmF3Tm9kZXMobm9kZXNFbGVtLCBtbSwgLTEsIGNvbmYpO1xuICBjb25zdCBjeSA9IGF3YWl0IGxheW91dE1pbmRtYXAobW0sIGNvbmYpO1xuICBkcmF3RWRnZXMoZWRnZXNFbGVtLCBjeSk7XG4gIHBvc2l0aW9uTm9kZXMoY3kpO1xuICBzZXR1cEdyYXBoVmlld2JveCh2b2lkIDAsIHN2ZywgY29uZi5taW5kbWFwLnBhZGRpbmcsIGNvbmYubWluZG1hcC51c2VNYXhXaWR0aCk7XG59O1xuY29uc3QgbWluZG1hcFJlbmRlcmVyID0ge1xuICBkcmF3XG59O1xuY29uc3QgZ2VuU2VjdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICBsZXQgc2VjdGlvbnMgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgIG9wdGlvbnNbXCJsaW5lQ29sb3JcIiArIGldID0gb3B0aW9uc1tcImxpbmVDb2xvclwiICsgaV0gfHwgb3B0aW9uc1tcImNTY2FsZUludlwiICsgaV07XG4gICAgaWYgKGlzRGFyayhvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSkpIHtcbiAgICAgIG9wdGlvbnNbXCJsaW5lQ29sb3JcIiArIGldID0gbGlnaHRlbihvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSwgMjApO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSA9IGRhcmtlbihvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSwgMjApO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgIGNvbnN0IHN3ID0gXCJcIiArICgxNyAtIDMgKiBpKTtcbiAgICBzZWN0aW9ucyArPSBgXG4gICAgLnNlY3Rpb24tJHtpIC0gMX0gcmVjdCwgLnNlY3Rpb24tJHtpIC0gMX0gcGF0aCwgLnNlY3Rpb24tJHtpIC0gMX0gY2lyY2xlLCAuc2VjdGlvbi0ke2kgLSAxfSBwb2x5Z29uLCAuc2VjdGlvbi0ke2kgLSAxfSBwYXRoICB7XG4gICAgICBmaWxsOiAke29wdGlvbnNbXCJjU2NhbGVcIiArIGldfTtcbiAgICB9XG4gICAgLnNlY3Rpb24tJHtpIC0gMX0gdGV4dCB7XG4gICAgIGZpbGw6ICR7b3B0aW9uc1tcImNTY2FsZUxhYmVsXCIgKyBpXX07XG4gICAgfVxuICAgIC5ub2RlLWljb24tJHtpIC0gMX0ge1xuICAgICAgZm9udC1zaXplOiA0MHB4O1xuICAgICAgY29sb3I6ICR7b3B0aW9uc1tcImNTY2FsZUxhYmVsXCIgKyBpXX07XG4gICAgfVxuICAgIC5zZWN0aW9uLWVkZ2UtJHtpIC0gMX17XG4gICAgICBzdHJva2U6ICR7b3B0aW9uc1tcImNTY2FsZVwiICsgaV19O1xuICAgIH1cbiAgICAuZWRnZS1kZXB0aC0ke2kgLSAxfXtcbiAgICAgIHN0cm9rZS13aWR0aDogJHtzd307XG4gICAgfVxuICAgIC5zZWN0aW9uLSR7aSAtIDF9IGxpbmUge1xuICAgICAgc3Ryb2tlOiAke29wdGlvbnNbXCJjU2NhbGVJbnZcIiArIGldfSA7XG4gICAgICBzdHJva2Utd2lkdGg6IDM7XG4gICAgfVxuXG4gICAgLmRpc2FibGVkLCAuZGlzYWJsZWQgY2lyY2xlLCAuZGlzYWJsZWQgdGV4dCB7XG4gICAgICBmaWxsOiBsaWdodGdyYXk7XG4gICAgfVxuICAgIC5kaXNhYmxlZCB0ZXh0IHtcbiAgICAgIGZpbGw6ICNlZmVmZWY7XG4gICAgfVxuICAgIGA7XG4gIH1cbiAgcmV0dXJuIHNlY3Rpb25zO1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgXG4gIC5lZGdlIHtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gIH1cbiAgJHtnZW5TZWN0aW9ucyhvcHRpb25zKX1cbiAgLnNlY3Rpb24tcm9vdCByZWN0LCAuc2VjdGlvbi1yb290IHBhdGgsIC5zZWN0aW9uLXJvb3QgY2lyY2xlLCAuc2VjdGlvbi1yb290IHBvbHlnb24gIHtcbiAgICBmaWxsOiAke29wdGlvbnMuZ2l0MH07XG4gIH1cbiAgLnNlY3Rpb24tcm9vdCB0ZXh0IHtcbiAgICBmaWxsOiAke29wdGlvbnMuZ2l0QnJhbmNoTGFiZWwwfTtcbiAgfVxuICAuaWNvbi1jb250YWluZXIge1xuICAgIGhlaWdodDoxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICAuZWRnZSB7XG4gICAgZmlsbDogbm9uZTtcbiAgfVxuICAubWluZG1hcC1ub2RlLWxhYmVsIHtcbiAgICBkeTogMWVtO1xuICAgIGFsaWdubWVudC1iYXNlbGluZTogbWlkZGxlO1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gICAgZG9taW5hbnQtYmFzZWxpbmU6IG1pZGRsZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cbmA7XG5jb25zdCBtaW5kbWFwU3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgZGI6IG1pbmRtYXBEYixcbiAgcmVuZGVyZXI6IG1pbmRtYXBSZW5kZXJlcixcbiAgcGFyc2VyOiBtaW5kbWFwUGFyc2VyLFxuICBzdHlsZXM6IG1pbmRtYXBTdHlsZXNcbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/mindmap-definition-4fc2557c.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/pieDiagram-157505fe.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/pieDiagram-157505fe.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 5], $V2 = [1, 6], $V3 = [1, 7], $V4 = [1, 9], $V5 = [1, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29], $V6 = [2, 5], $V7 = [1, 6, 11, 13, 15, 17, 19, 20, 26, 27, 28, 29], $V8 = [26, 27, 28], $V9 = [2, 8], $Va = [1, 18], $Vb = [1, 19], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 22], $Vf = [1, 23], $Vg = [1, 28], $Vh = [6, 26, 27, 28, 29];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"directive\": 5, \"PIE\": 6, \"document\": 7, \"showData\": 8, \"line\": 9, \"statement\": 10, \"txt\": 11, \"value\": 12, \"title\": 13, \"title_value\": 14, \"acc_title\": 15, \"acc_title_value\": 16, \"acc_descr\": 17, \"acc_descr_value\": 18, \"acc_descr_multiline_value\": 19, \"section\": 20, \"openDirective\": 21, \"typeDirective\": 22, \"closeDirective\": 23, \":\": 24, \"argDirective\": 25, \"NEWLINE\": 26, \";\": 27, \"EOF\": 28, \"open_directive\": 29, \"type_directive\": 30, \"arg_directive\": 31, \"close_directive\": 32, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"PIE\", 8: \"showData\", 11: \"txt\", 12: \"value\", 13: \"title\", 14: \"title_value\", 15: \"acc_title\", 16: \"acc_title_value\", 17: \"acc_descr\", 18: \"acc_descr_value\", 19: \"acc_descr_multiline_value\", 20: \"section\", 24: \":\", 26: \"NEWLINE\", 27: \";\", 28: \"EOF\", 29: \"open_directive\", 30: \"type_directive\", 31: \"arg_directive\", 32: \"close_directive\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 3], [7, 0], [7, 2], [9, 2], [10, 0], [10, 2], [10, 2], [10, 2], [10, 2], [10, 1], [10, 1], [10, 1], [5, 3], [5, 5], [4, 1], [4, 1], [4, 1], [21, 1], [22, 1], [25, 1], [23, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.setShowData(true);\n break;\n case 7:\n this.$ = $$[$0 - 1];\n break;\n case 9:\n yy.addSection($$[$0 - 1], yy.cleanupValue($$[$0]));\n break;\n case 10:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 11:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 12:\n case 13:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 14:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 21:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 22:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 23:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 24:\n yy.parseDirective(\"}%%\", \"close_directive\", \"pie\");\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: $V0, 21: 8, 26: $V1, 27: $V2, 28: $V3, 29: $V4 }, { 1: [3] }, { 3: 10, 4: 2, 5: 3, 6: $V0, 21: 8, 26: $V1, 27: $V2, 28: $V3, 29: $V4 }, { 3: 11, 4: 2, 5: 3, 6: $V0, 21: 8, 26: $V1, 27: $V2, 28: $V3, 29: $V4 }, o($V5, $V6, { 7: 12, 8: [1, 13] }), o($V7, [2, 18]), o($V7, [2, 19]), o($V7, [2, 20]), { 22: 14, 30: [1, 15] }, { 30: [2, 21] }, { 1: [2, 1] }, { 1: [2, 2] }, o($V8, $V9, { 21: 8, 9: 16, 10: 17, 5: 24, 1: [2, 3], 11: $Va, 13: $Vb, 15: $Vc, 17: $Vd, 19: $Ve, 20: $Vf, 29: $V4 }), o($V5, $V6, { 7: 25 }), { 23: 26, 24: [1, 27], 32: $Vg }, o([24, 32], [2, 22]), o($V5, [2, 6]), { 4: 29, 26: $V1, 27: $V2, 28: $V3 }, { 12: [1, 30] }, { 14: [1, 31] }, { 16: [1, 32] }, { 18: [1, 33] }, o($V8, [2, 13]), o($V8, [2, 14]), o($V8, [2, 15]), o($V8, $V9, { 21: 8, 9: 16, 10: 17, 5: 24, 1: [2, 4], 11: $Va, 13: $Vb, 15: $Vc, 17: $Vd, 19: $Ve, 20: $Vf, 29: $V4 }), o($Vh, [2, 16]), { 25: 34, 31: [1, 35] }, o($Vh, [2, 24]), o($V5, [2, 7]), o($V8, [2, 9]), o($V8, [2, 10]), o($V8, [2, 11]), o($V8, [2, 12]), { 23: 36, 32: $Vg }, { 32: [2, 23] }, o($Vh, [2, 17])],\n defaultActions: { 9: [2, 21], 10: [2, 1], 11: [2, 2], 35: [2, 23] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 29;\n case 1:\n this.begin(\"type_directive\");\n return 30;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 24;\n case 3:\n this.popState();\n this.popState();\n return 32;\n case 4:\n return 31;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 26;\n case 8:\n break;\n case 9:\n break;\n case 10:\n this.begin(\"title\");\n return 13;\n case 11:\n this.popState();\n return \"title_value\";\n case 12:\n this.begin(\"acc_title\");\n return 15;\n case 13:\n this.popState();\n return \"acc_title_value\";\n case 14:\n this.begin(\"acc_descr\");\n return 17;\n case 15:\n this.popState();\n return \"acc_descr_value\";\n case 16:\n this.begin(\"acc_descr_multiline\");\n break;\n case 17:\n this.popState();\n break;\n case 18:\n return \"acc_descr_multiline_value\";\n case 19:\n this.begin(\"string\");\n break;\n case 20:\n this.popState();\n break;\n case 21:\n return \"txt\";\n case 22:\n return 6;\n case 23:\n return 8;\n case 24:\n return \"value\";\n case 25:\n return 28;\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:[\\s]+)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:pie\\b)/i, /^(?:showData\\b)/i, /^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [17, 18], \"inclusive\": false }, \"acc_descr\": { \"rules\": [15], \"inclusive\": false }, \"acc_title\": { \"rules\": [13], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"title\": { \"rules\": [11], \"inclusive\": false }, \"string\": { \"rules\": [20, 21], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 7, 8, 9, 10, 12, 14, 16, 19, 22, 23, 24, 25], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet sections = {};\nlet showData = false;\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nconst addSection = function(id, value) {\n id = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.sanitizeText(id, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n if (sections[id] === void 0) {\n sections[id] = value;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Added new section :\", id);\n }\n};\nconst getSections = () => sections;\nconst setShowData = function(toggle) {\n showData = toggle;\n};\nconst getShowData = function() {\n return showData;\n};\nconst cleanupValue = function(value) {\n if (value.substring(0, 1) === \":\") {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\nconst clear = function() {\n sections = {};\n showData = false;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst db = {\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().pie,\n addSection,\n getSections,\n cleanupValue,\n clear,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t,\n setShowData,\n getShowData,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b\n};\nconst getStyles = (options) => `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${options.pieOuterStrokeColor};\n stroke-width: ${options.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\nconst styles = getStyles;\nlet conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\nlet width;\nconst height = 450;\nconst draw = (txt, id, _version, diagObj) => {\n var _a;\n try {\n conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Rendering info diagram\\n\" + txt);\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n diagObj.db.clear();\n diagObj.parser.parse(txt);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Parsed info diagram\");\n const elem = doc.getElementById(id);\n width = elem.parentElement.offsetWidth;\n if (width === void 0) {\n width = 1200;\n }\n if (conf.useWidth !== void 0) {\n width = conf.useWidth;\n }\n if (conf.pie.useWidth !== void 0) {\n width = conf.pie.useWidth;\n }\n const diagram2 = root.select(\"#\" + id);\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.i)(diagram2, height, width, conf.pie.useMaxWidth);\n elem.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n var radius = Math.min(width, height) / 2 - margin;\n var svg = diagram2.append(\"g\").attr(\"transform\", \"translate(\" + width / 2 + \",\" + height / 2 + \")\");\n var data = diagObj.db.getSections();\n var sum = 0;\n Object.keys(data).forEach(function(key) {\n sum += data[key];\n });\n const themeVariables = conf.themeVariables;\n var myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12\n ];\n const textPosition = ((_a = conf.pie) == null ? void 0 : _a.textPosition) ?? 0.75;\n let [outerStrokeWidth] = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.B)(themeVariables.pieOuterStrokeWidth);\n outerStrokeWidth ?? (outerStrokeWidth = 2);\n var color = (0,d3__WEBPACK_IMPORTED_MODULE_0__.scaleOrdinal)().range(myGeneratedColors);\n var pieData = Object.entries(data).map(function(el, idx) {\n return {\n order: idx,\n name: el[0],\n value: el[1]\n };\n });\n var pie$1 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.pie)().value(function(d) {\n return d.value;\n }).sort(function(a, b) {\n return a.order - b.order;\n });\n var dataReady = pie$1(pieData);\n var arcGenerator = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().innerRadius(0).outerRadius(radius);\n var labelArcGenerator = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().innerRadius(radius * textPosition).outerRadius(radius * textPosition);\n svg.append(\"circle\").attr(\"cx\", 0).attr(\"cy\", 0).attr(\"r\", radius + outerStrokeWidth / 2).attr(\"class\", \"pieOuterCircle\");\n svg.selectAll(\"mySlices\").data(dataReady).enter().append(\"path\").attr(\"d\", arcGenerator).attr(\"fill\", function(d) {\n return color(d.data.name);\n }).attr(\"class\", \"pieCircle\");\n svg.selectAll(\"mySlices\").data(dataReady).enter().append(\"text\").text(function(d) {\n return (d.data.value / sum * 100).toFixed(0) + \"%\";\n }).attr(\"transform\", function(d) {\n return \"translate(\" + labelArcGenerator.centroid(d) + \")\";\n }).style(\"text-anchor\", \"middle\").attr(\"class\", \"slice\");\n svg.append(\"text\").text(diagObj.db.getDiagramTitle()).attr(\"x\", 0).attr(\"y\", -(height - 50) / 2).attr(\"class\", \"pieTitleText\");\n var legend = svg.selectAll(\".legend\").data(color.domain()).enter().append(\"g\").attr(\"class\", \"legend\").attr(\"transform\", function(d, i) {\n const height2 = legendRectSize + legendSpacing;\n const offset = height2 * color.domain().length / 2;\n const horizontal = 12 * legendRectSize;\n const vertical = i * height2 - offset;\n return \"translate(\" + horizontal + \",\" + vertical + \")\";\n });\n legend.append(\"rect\").attr(\"width\", legendRectSize).attr(\"height\", legendRectSize).style(\"fill\", color).style(\"stroke\", color);\n legend.data(dataReady).append(\"text\").attr(\"x\", legendRectSize + legendSpacing).attr(\"y\", legendRectSize - legendSpacing).text(function(d) {\n if (diagObj.db.getShowData() || conf.showData || conf.pie.showData) {\n return d.data.name + \" [\" + d.data.value + \"]\";\n } else {\n return d.data.name;\n }\n });\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"Error while rendering info diagram\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(e);\n }\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9waWVEaWFncmFtLTE1NzUwNWZlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBd1I7QUFDcE87QUFDakM7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQiw0WkFBNFosbUlBQW1JO0FBQy9pQixrQkFBa0IsMlBBQTJQLHNHQUFzRztBQUNuWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLHFFQUFxRSxJQUFJLFFBQVEsSUFBSSxzRUFBc0UsSUFBSSxzRUFBc0UsZ0JBQWdCLG1CQUFtQix3REFBd0QscUJBQXFCLElBQUksYUFBYSxJQUFJLFdBQVcsSUFBSSxXQUFXLGdCQUFnQix1R0FBdUcsaUJBQWlCLE9BQU8sS0FBSyw4QkFBOEIsMENBQTBDLGtDQUFrQyxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEsbUVBQW1FLHVHQUF1RyxzQkFBc0IscUJBQXFCLHdHQUF3RyxpQkFBaUIsSUFBSSxhQUFhO0FBQ25qQyxzQkFBc0IsaURBQWlEO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7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eURBQVM7QUFDYiwwQkFBMEIsdURBQVM7QUFDbkM7QUFDQTtBQUNBLHVCQUF1QiwwQ0FBTTtBQUM3QjtBQUNBLCtDQUErQywwQ0FBTSxtREFBbUQsMENBQU07QUFDOUc7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksdURBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLHVEQUFhO0FBQzFDO0FBQ0EsZ0JBQWdCLGdEQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxnQkFBZ0IsdUNBQUc7QUFDbkI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsdUNBQUc7QUFDMUIsNEJBQTRCLHVDQUFHO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSTtBQUNKLElBQUkseURBQVM7QUFDYixJQUFJLHlEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvcGllRGlhZ3JhbS0xNTc1MDVmZS5qcz9iYmZhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIGEgYXMgZ2V0QWNjRGVzY3JpcHRpb24sIGIgYXMgc2V0QWNjRGVzY3JpcHRpb24sIG0gYXMgbWVybWFpZEFQSSwgZSBhcyBjb21tb24sIGwgYXMgbG9nLCB2IGFzIGNsZWFyJDEsIGkgYXMgY29uZmlndXJlU3ZnU2l6ZSwgQiBhcyBwYXJzZUZvbnRTaXplIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0LCBzY2FsZU9yZGluYWwsIHBpZSwgYXJjIH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG52YXIgcGFyc2VyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBvID0gZnVuY3Rpb24oaywgdiwgbzIsIGwpIHtcbiAgICBmb3IgKG8yID0gbzIgfHwge30sIGwgPSBrLmxlbmd0aDsgbC0tOyBvMltrW2xdXSA9IHYpXG4gICAgICA7XG4gICAgcmV0dXJuIG8yO1xuICB9LCAkVjAgPSBbMSwgNF0sICRWMSA9IFsxLCA1XSwgJFYyID0gWzEsIDZdLCAkVjMgPSBbMSwgN10sICRWNCA9IFsxLCA5XSwgJFY1ID0gWzEsIDExLCAxMywgMTUsIDE3LCAxOSwgMjAsIDI2LCAyNywgMjgsIDI5XSwgJFY2ID0gWzIsIDVdLCAkVjcgPSBbMSwgNiwgMTEsIDEzLCAxNSwgMTcsIDE5LCAyMCwgMjYsIDI3LCAyOCwgMjldLCAkVjggPSBbMjYsIDI3LCAyOF0sICRWOSA9IFsyLCA4XSwgJFZhID0gWzEsIDE4XSwgJFZiID0gWzEsIDE5XSwgJFZjID0gWzEsIDIwXSwgJFZkID0gWzEsIDIxXSwgJFZlID0gWzEsIDIyXSwgJFZmID0gWzEsIDIzXSwgJFZnID0gWzEsIDI4XSwgJFZoID0gWzYsIDI2LCAyNywgMjgsIDI5XTtcbiAgdmFyIHBhcnNlcjIgPSB7XG4gICAgdHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkge1xuICAgIH0sXG4gICAgeXk6IHt9LFxuICAgIHN5bWJvbHNfOiB7IFwiZXJyb3JcIjogMiwgXCJzdGFydFwiOiAzLCBcImVvbFwiOiA0LCBcImRpcmVjdGl2ZVwiOiA1LCBcIlBJRVwiOiA2LCBcImRvY3VtZW50XCI6IDcsIFwic2hvd0RhdGFcIjogOCwgXCJsaW5lXCI6IDksIFwic3RhdGVtZW50XCI6IDEwLCBcInR4dFwiOiAxMSwgXCJ2YWx1ZVwiOiAxMiwgXCJ0aXRsZVwiOiAxMywgXCJ0aXRsZV92YWx1ZVwiOiAxNCwgXCJhY2NfdGl0bGVcIjogMTUsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDE2LCBcImFjY19kZXNjclwiOiAxNywgXCJhY2NfZGVzY3JfdmFsdWVcIjogMTgsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAxOSwgXCJzZWN0aW9uXCI6IDIwLCBcIm9wZW5EaXJlY3RpdmVcIjogMjEsIFwidHlwZURpcmVjdGl2ZVwiOiAyMiwgXCJjbG9zZURpcmVjdGl2ZVwiOiAyMywgXCI6XCI6IDI0LCBcImFyZ0RpcmVjdGl2ZVwiOiAyNSwgXCJORVdMSU5FXCI6IDI2LCBcIjtcIjogMjcsIFwiRU9GXCI6IDI4LCBcIm9wZW5fZGlyZWN0aXZlXCI6IDI5LCBcInR5cGVfZGlyZWN0aXZlXCI6IDMwLCBcImFyZ19kaXJlY3RpdmVcIjogMzEsIFwiY2xvc2VfZGlyZWN0aXZlXCI6IDMyLCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICB0ZXJtaW5hbHNfOiB7IDI6IFwiZXJyb3JcIiwgNjogXCJQSUVcIiwgODogXCJzaG93RGF0YVwiLCAxMTogXCJ0eHRcIiwgMTI6IFwidmFsdWVcIiwgMTM6IFwidGl0bGVcIiwgMTQ6IFwidGl0bGVfdmFsdWVcIiwgMTU6IFwiYWNjX3RpdGxlXCIsIDE2OiBcImFjY190aXRsZV92YWx1ZVwiLCAxNzogXCJhY2NfZGVzY3JcIiwgMTg6IFwiYWNjX2Rlc2NyX3ZhbHVlXCIsIDE5OiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIiwgMjA6IFwic2VjdGlvblwiLCAyNDogXCI6XCIsIDI2OiBcIk5FV0xJTkVcIiwgMjc6IFwiO1wiLCAyODogXCJFT0ZcIiwgMjk6IFwib3Blbl9kaXJlY3RpdmVcIiwgMzA6IFwidHlwZV9kaXJlY3RpdmVcIiwgMzE6IFwiYXJnX2RpcmVjdGl2ZVwiLCAzMjogXCJjbG9zZV9kaXJlY3RpdmVcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzMsIDJdLCBbMywgMl0sIFszLCAzXSwgWzcsIDBdLCBbNywgMl0sIFs5LCAyXSwgWzEwLCAwXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzUsIDNdLCBbNSwgNV0sIFs0LCAxXSwgWzQsIDFdLCBbNCwgMV0sIFsyMSwgMV0sIFsyMiwgMV0sIFsyNSwgMV0sIFsyMywgMV1dLFxuICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQpIHtcbiAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHl5LnNldFNob3dEYXRhKHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIHl5LmFkZFNlY3Rpb24oJCRbJDAgLSAxXSwgeXkuY2xlYW51cFZhbHVlKCQkWyQwXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0RGlhZ3JhbVRpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NUaXRsZSh0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEyOlxuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICB5eS5hZGRTZWN0aW9uKCQkWyQwXS5zdWJzdHIoOCkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCIlJXtcIiwgXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgJCRbJDBdID0gJCRbJDBdLnRyaW0oKS5yZXBsYWNlKC8nL2csICdcIicpO1xuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwifSUlXCIsIFwiY2xvc2VfZGlyZWN0aXZlXCIsIFwicGllXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFibGU6IFt7IDM6IDEsIDQ6IDIsIDU6IDMsIDY6ICRWMCwgMjE6IDgsIDI2OiAkVjEsIDI3OiAkVjIsIDI4OiAkVjMsIDI5OiAkVjQgfSwgeyAxOiBbM10gfSwgeyAzOiAxMCwgNDogMiwgNTogMywgNjogJFYwLCAyMTogOCwgMjY6ICRWMSwgMjc6ICRWMiwgMjg6ICRWMywgMjk6ICRWNCB9LCB7IDM6IDExLCA0OiAyLCA1OiAzLCA2OiAkVjAsIDIxOiA4LCAyNjogJFYxLCAyNzogJFYyLCAyODogJFYzLCAyOTogJFY0IH0sIG8oJFY1LCAkVjYsIHsgNzogMTIsIDg6IFsxLCAxM10gfSksIG8oJFY3LCBbMiwgMThdKSwgbygkVjcsIFsyLCAxOV0pLCBvKCRWNywgWzIsIDIwXSksIHsgMjI6IDE0LCAzMDogWzEsIDE1XSB9LCB7IDMwOiBbMiwgMjFdIH0sIHsgMTogWzIsIDFdIH0sIHsgMTogWzIsIDJdIH0sIG8oJFY4LCAkVjksIHsgMjE6IDgsIDk6IDE2LCAxMDogMTcsIDU6IDI0LCAxOiBbMiwgM10sIDExOiAkVmEsIDEzOiAkVmIsIDE1OiAkVmMsIDE3OiAkVmQsIDE5OiAkVmUsIDIwOiAkVmYsIDI5OiAkVjQgfSksIG8oJFY1LCAkVjYsIHsgNzogMjUgfSksIHsgMjM6IDI2LCAyNDogWzEsIDI3XSwgMzI6ICRWZyB9LCBvKFsyNCwgMzJdLCBbMiwgMjJdKSwgbygkVjUsIFsyLCA2XSksIHsgNDogMjksIDI2OiAkVjEsIDI3OiAkVjIsIDI4OiAkVjMgfSwgeyAxMjogWzEsIDMwXSB9LCB7IDE0OiBbMSwgMzFdIH0sIHsgMTY6IFsxLCAzMl0gfSwgeyAxODogWzEsIDMzXSB9LCBvKCRWOCwgWzIsIDEzXSksIG8oJFY4LCBbMiwgMTRdKSwgbygkVjgsIFsyLCAxNV0pLCBvKCRWOCwgJFY5LCB7IDIxOiA4LCA5OiAxNiwgMTA6IDE3LCA1OiAyNCwgMTogWzIsIDRdLCAxMTogJFZhLCAxMzogJFZiLCAxNTogJFZjLCAxNzogJFZkLCAxOTogJFZlLCAyMDogJFZmLCAyOTogJFY0IH0pLCBvKCRWaCwgWzIsIDE2XSksIHsgMjU6IDM0LCAzMTogWzEsIDM1XSB9LCBvKCRWaCwgWzIsIDI0XSksIG8oJFY1LCBbMiwgN10pLCBvKCRWOCwgWzIsIDldKSwgbygkVjgsIFsyLCAxMF0pLCBvKCRWOCwgWzIsIDExXSksIG8oJFY4LCBbMiwgMTJdKSwgeyAyMzogMzYsIDMyOiAkVmcgfSwgeyAzMjogWzIsIDIzXSB9LCBvKCRWaCwgWzIsIDE3XSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDk6IFsyLCAyMV0sIDEwOiBbMiwgMV0sIDExOiBbMiwgMl0sIDM1OiBbMiwgMjNdIH0sXG4gICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgIGlmIChoYXNoLnJlY292ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMudHJhY2Uoc3RyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICBlcnJvci5oYXNoID0gaGFzaDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHRzdGFjayA9IFtdLCB2c3RhY2sgPSBbbnVsbF0sIGxzdGFjayA9IFtdLCB0YWJsZSA9IHRoaXMudGFibGUsIHl5dGV4dCA9IFwiXCIsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgVEVSUk9SID0gMiwgRU9GID0gMTtcbiAgICAgIHZhciBhcmdzID0gbHN0YWNrLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBsZXhlcjIgPSBPYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpO1xuICAgICAgdmFyIHNoYXJlZFN0YXRlID0geyB5eToge30gfTtcbiAgICAgIGZvciAodmFyIGsgaW4gdGhpcy55eSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksIGspKSB7XG4gICAgICAgICAgc2hhcmVkU3RhdGUueXlba10gPSB0aGlzLnl5W2tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXhlcjIuc2V0SW5wdXQoaW5wdXQsIHNoYXJlZFN0YXRlLnl5KTtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LmxleGVyID0gbGV4ZXIyO1xuICAgICAgc2hhcmVkU3RhdGUueXkucGFyc2VyID0gdGhpcztcbiAgICAgIGlmICh0eXBlb2YgbGV4ZXIyLnl5bGxvYyA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxleGVyMi55eWxsb2MgPSB7fTtcbiAgICAgIH1cbiAgICAgIHZhciB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICBsc3RhY2sucHVzaCh5eWxvYyk7XG4gICAgICB2YXIgcmFuZ2VzID0gbGV4ZXIyLm9wdGlvbnMgJiYgbGV4ZXIyLm9wdGlvbnMucmFuZ2VzO1xuICAgICAgaWYgKHR5cGVvZiBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpIHx8IGxleGVyMi5sZXgoKSB8fCBFT0Y7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgdHN0YWNrID0gdG9rZW47XG4gICAgICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9XG4gICAgICB2YXIgc3ltYm9sLCBzdGF0ZSwgYWN0aW9uLCByLCB5eXZhbCA9IHt9LCBwLCBsZW4sIG5ld1N0YXRlLCBleHBlY3RlZDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5bWJvbCA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSBcInVuZGVmaW5lZFwiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICB2YXIgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+IFRFUlJPUikge1xuICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKFwiJ1wiICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgXCInXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGV4ZXIyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjpcXG5cIiArIGxleGVyMi5zaG93UG9zaXRpb24oKSArIFwiXFxuRXhwZWN0aW5nIFwiICsgZXhwZWN0ZWQuam9pbihcIiwgXCIpICsgXCIsIGdvdCAnXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOiBVbmV4cGVjdGVkIFwiICsgKHN5bWJvbCA9PSBFT0YgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgdGV4dDogbGV4ZXIyLm1hdGNoLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCxcbiAgICAgICAgICAgIGxpbmU6IGxleGVyMi55eWxpbmVubyxcbiAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiBcIiArIHN0YXRlICsgXCIsIHRva2VuOiBcIiArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaChsZXhlcjIueXl0ZXh0KTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKGxleGVyMi55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeXlsZW5nID0gbGV4ZXIyLnl5bGVuZztcbiAgICAgICAgICAgICAgeXl0ZXh0ID0gbGV4ZXIyLnl5dGV4dDtcbiAgICAgICAgICAgICAgeXlsaW5lbm8gPSBsZXhlcjIueXlsaW5lbm87XG4gICAgICAgICAgICAgIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmFuZ2VzKSB7XG4gICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5hcHBseSh5eXZhbCwgW1xuICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgeXlsaW5lbm8sXG4gICAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5LFxuICAgICAgICAgICAgICBhY3Rpb25bMV0sXG4gICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTtcbiAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcbiAgdmFyIGxleGVyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxleGVyMiA9IHtcbiAgICAgIEVPRjogMSxcbiAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG4gICAgICBzZXRJbnB1dDogZnVuY3Rpb24oaW5wdXQsIHl5KSB7XG4gICAgICAgIHRoaXMueXkgPSB5eSB8fCB0aGlzLnl5IHx8IHt9O1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fYmFja3RyYWNrID0gdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbXCJJTklUSUFMXCJdO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogMCxcbiAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLCAwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG4gICAgICBpbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgICB9LFxuICAgICAgLy8gdW5zaGlmdHMgb25lIGNoYXIgKG9yIGEgc3RyaW5nKSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdW5wdXQ6IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgY2FjaGVzIG1hdGNoZWQgdGV4dCBhbmQgYXBwZW5kcyBpdCBvbiBuZXh0IGFjdGlvblxuICAgICAgbW9yZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgc2lnbmFscyB0aGUgbGV4ZXIgdGhhdCB0aGlzIHJ1bGUgZmFpbHMgdG8gbWF0Y2ggdGhlIGlucHV0LCBzbyB0aGUgbmV4dCBtYXRjaGluZyBydWxlIChyZWdleCkgc2hvdWxkIGJlIHRlc3RlZCBpbnN0ZWFkLlxuICAgICAgcmVqZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxuICAgICAgbGVzczogZnVuY3Rpb24obikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgICB9LFxuICAgICAgLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG4gICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGluZXMsIGJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgIHl5bGxvYzoge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgIG1hdGNoOiB0aGlzLm1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgeXlsZW5nOiB0aGlzLnl5bGVuZyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgIF9pbnB1dDogdGhpcy5faW5wdXQsXG4gICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgIGZvciAodmFyIGsgaW4gYmFja3VwKSB7XG4gICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICB0aGlzLnl5dGV4dCA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFVucmVjb2duaXplZCB0ZXh0LlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxuICAgICAgbGV4OiBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyBwb3AgdGhlIHByZXZpb3VzbHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvZmYgdGhlIGNvbmRpdGlvbiBzdGFja1xuICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbMF07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBwcm9kdWNlIHRoZSBsZXhlciBydWxlIHNldCB3aGljaCBpcyBhY3RpdmUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZVxuICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW1wiSU5JVElBTFwiXS5ydWxlcztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGU7IHdoZW4gYW4gaW5kZXggYXJndW1lbnQgaXMgcHJvdmlkZWQgaXQgcHJvZHVjZXMgdGhlIE4tdGggcHJldmlvdXMgY29uZGl0aW9uIHN0YXRlLCBpZiBhdmFpbGFibGVcbiAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiSU5JVElBTFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWxpYXMgZm9yIGJlZ2luKGNvbmRpdGlvbilcbiAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbiAgICAgIHN0YXRlU3RhY2tTaXplOiBmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHsgXCJjYXNlLWluc2Vuc2l0aXZlXCI6IHRydWUgfSxcbiAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuICAgICAgICBzd2l0Y2ggKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAzMjtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gMzE7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgcmV0dXJuIDI2O1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTM7XG4gICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcInRpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY190aXRsZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDE3O1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInN0cmluZ1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgcmV0dXJuIFwidHh0XCI7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHJldHVybiA2O1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgcmV0dXJuIFwidmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgcmV0dXJuIDI4O1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzolJSg/IVxceylbXlxcbl0qKS9pLCAvXig/OlteXFx9XSUlW15cXG5dKikvaSwgL14oPzpbXFxuXFxyXSspL2ksIC9eKD86JSVbXlxcbl0qKS9pLCAvXig/OltcXHNdKykvaSwgL14oPzp0aXRsZVxcYikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NUaXRsZVxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS9pLCAvXig/OltcXH1dKS9pLCAvXig/OlteXFx9XSopL2ksIC9eKD86W1wiXSkvaSwgL14oPzpbXCJdKS9pLCAvXig/OlteXCJdKikvaSwgL14oPzpwaWVcXGIpL2ksIC9eKD86c2hvd0RhdGFcXGIpL2ksIC9eKD86OltcXHNdKltcXGRdKyg/OlxcLltcXGRdKyk/KS9pLCAvXig/OiQpL2ldLFxuICAgICAgY29uZGl0aW9uczogeyBcImFjY19kZXNjcl9tdWx0aWxpbmVcIjogeyBcInJ1bGVzXCI6IFsxNywgMThdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzE1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFsxM10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2xvc2VfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhcmdfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMywgNF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsyLCAzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInRpdGxlXCI6IHsgXCJydWxlc1wiOiBbMTFdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cmluZ1wiOiB7IFwicnVsZXNcIjogWzIwLCAyMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSU5JVElBTFwiOiB7IFwicnVsZXNcIjogWzAsIDUsIDYsIDcsIDgsIDksIDEwLCAxMiwgMTQsIDE2LCAxOSwgMjIsIDIzLCAyNCwgMjVdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xubGV0IHNlY3Rpb25zID0ge307XG5sZXQgc2hvd0RhdGEgPSBmYWxzZTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBhZGRTZWN0aW9uID0gZnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIGlkID0gY29tbW9uLnNhbml0aXplVGV4dChpZCwgZ2V0Q29uZmlnKCkpO1xuICBpZiAoc2VjdGlvbnNbaWRdID09PSB2b2lkIDApIHtcbiAgICBzZWN0aW9uc1tpZF0gPSB2YWx1ZTtcbiAgICBsb2cuZGVidWcoXCJBZGRlZCBuZXcgc2VjdGlvbiA6XCIsIGlkKTtcbiAgfVxufTtcbmNvbnN0IGdldFNlY3Rpb25zID0gKCkgPT4gc2VjdGlvbnM7XG5jb25zdCBzZXRTaG93RGF0YSA9IGZ1bmN0aW9uKHRvZ2dsZSkge1xuICBzaG93RGF0YSA9IHRvZ2dsZTtcbn07XG5jb25zdCBnZXRTaG93RGF0YSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gc2hvd0RhdGE7XG59O1xuY29uc3QgY2xlYW51cFZhbHVlID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKHZhbHVlLnN1YnN0cmluZygwLCAxKSA9PT0gXCI6XCIpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxKS50cmltKCk7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZS50cmltKCkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUudHJpbSgpKTtcbiAgfVxufTtcbmNvbnN0IGNsZWFyID0gZnVuY3Rpb24oKSB7XG4gIHNlY3Rpb25zID0ge307XG4gIHNob3dEYXRhID0gZmFsc2U7XG4gIGNsZWFyJDEoKTtcbn07XG5jb25zdCBkYiA9IHtcbiAgcGFyc2VEaXJlY3RpdmUsXG4gIGdldENvbmZpZzogKCkgPT4gZ2V0Q29uZmlnKCkucGllLFxuICBhZGRTZWN0aW9uLFxuICBnZXRTZWN0aW9ucyxcbiAgY2xlYW51cFZhbHVlLFxuICBjbGVhcixcbiAgc2V0QWNjVGl0bGUsXG4gIGdldEFjY1RpdGxlLFxuICBzZXREaWFncmFtVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZSxcbiAgc2V0U2hvd0RhdGEsXG4gIGdldFNob3dEYXRhLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0QWNjRGVzY3JpcHRpb25cbn07XG5jb25zdCBnZXRTdHlsZXMgPSAob3B0aW9ucykgPT4gYFxuICAucGllQ2lyY2xle1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnBpZVN0cm9rZUNvbG9yfTtcbiAgICBzdHJva2Utd2lkdGggOiAke29wdGlvbnMucGllU3Ryb2tlV2lkdGh9O1xuICAgIG9wYWNpdHkgOiAke29wdGlvbnMucGllT3BhY2l0eX07XG4gIH1cbiAgLnBpZU91dGVyQ2lyY2xle1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnBpZU91dGVyU3Ryb2tlQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogJHtvcHRpb25zLnBpZU91dGVyU3Ryb2tlV2lkdGh9O1xuICAgIGZpbGw6IG5vbmU7XG4gIH1cbiAgLnBpZVRpdGxlVGV4dCB7XG4gICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgICBmb250LXNpemU6ICR7b3B0aW9ucy5waWVUaXRsZVRleHRTaXplfTtcbiAgICBmaWxsOiAke29wdGlvbnMucGllVGl0bGVUZXh0Q29sb3J9O1xuICAgIGZvbnQtZmFtaWx5OiAke29wdGlvbnMuZm9udEZhbWlseX07XG4gIH1cbiAgLnNsaWNlIHtcbiAgICBmb250LWZhbWlseTogJHtvcHRpb25zLmZvbnRGYW1pbHl9O1xuICAgIGZpbGw6ICR7b3B0aW9ucy5waWVTZWN0aW9uVGV4dENvbG9yfTtcbiAgICBmb250LXNpemU6JHtvcHRpb25zLnBpZVNlY3Rpb25UZXh0U2l6ZX07XG4gICAgLy8gZmlsbDogd2hpdGU7XG4gIH1cbiAgLmxlZ2VuZCB0ZXh0IHtcbiAgICBmaWxsOiAke29wdGlvbnMucGllTGVnZW5kVGV4dENvbG9yfTtcbiAgICBmb250LWZhbWlseTogJHtvcHRpb25zLmZvbnRGYW1pbHl9O1xuICAgIGZvbnQtc2l6ZTogJHtvcHRpb25zLnBpZUxlZ2VuZFRleHRTaXplfTtcbiAgfVxuYDtcbmNvbnN0IHN0eWxlcyA9IGdldFN0eWxlcztcbmxldCBjb25mID0gZ2V0Q29uZmlnKCk7XG5sZXQgd2lkdGg7XG5jb25zdCBoZWlnaHQgPSA0NTA7XG5jb25zdCBkcmF3ID0gKHR4dCwgaWQsIF92ZXJzaW9uLCBkaWFnT2JqKSA9PiB7XG4gIHZhciBfYTtcbiAgdHJ5IHtcbiAgICBjb25mID0gZ2V0Q29uZmlnKCk7XG4gICAgbG9nLmRlYnVnKFwiUmVuZGVyaW5nIGluZm8gZGlhZ3JhbVxcblwiICsgdHh0KTtcbiAgICBjb25zdCBzZWN1cml0eUxldmVsID0gZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbDtcbiAgICBsZXQgc2FuZGJveEVsZW1lbnQ7XG4gICAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgICBzYW5kYm94RWxlbWVudCA9IHNlbGVjdChcIiNpXCIgKyBpZCk7XG4gICAgfVxuICAgIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gICAgY29uc3QgZG9jID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50O1xuICAgIGRpYWdPYmouZGIuY2xlYXIoKTtcbiAgICBkaWFnT2JqLnBhcnNlci5wYXJzZSh0eHQpO1xuICAgIGxvZy5kZWJ1ZyhcIlBhcnNlZCBpbmZvIGRpYWdyYW1cIik7XG4gICAgY29uc3QgZWxlbSA9IGRvYy5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgd2lkdGggPSBlbGVtLnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHtcbiAgICAgIHdpZHRoID0gMTIwMDtcbiAgICB9XG4gICAgaWYgKGNvbmYudXNlV2lkdGggIT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSBjb25mLnVzZVdpZHRoO1xuICAgIH1cbiAgICBpZiAoY29uZi5waWUudXNlV2lkdGggIT09IHZvaWQgMCkge1xuICAgICAgd2lkdGggPSBjb25mLnBpZS51c2VXaWR0aDtcbiAgICB9XG4gICAgY29uc3QgZGlhZ3JhbTIgPSByb290LnNlbGVjdChcIiNcIiArIGlkKTtcbiAgICBjb25maWd1cmVTdmdTaXplKGRpYWdyYW0yLCBoZWlnaHQsIHdpZHRoLCBjb25mLnBpZS51c2VNYXhXaWR0aCk7XG4gICAgZWxlbS5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsIFwiMCAwIFwiICsgd2lkdGggKyBcIiBcIiArIGhlaWdodCk7XG4gICAgdmFyIG1hcmdpbiA9IDQwO1xuICAgIHZhciBsZWdlbmRSZWN0U2l6ZSA9IDE4O1xuICAgIHZhciBsZWdlbmRTcGFjaW5nID0gNDtcbiAgICB2YXIgcmFkaXVzID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCkgLyAyIC0gbWFyZ2luO1xuICAgIHZhciBzdmcgPSBkaWFncmFtMi5hcHBlbmQoXCJnXCIpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyB3aWR0aCAvIDIgKyBcIixcIiArIGhlaWdodCAvIDIgKyBcIilcIik7XG4gICAgdmFyIGRhdGEgPSBkaWFnT2JqLmRiLmdldFNlY3Rpb25zKCk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHN1bSArPSBkYXRhW2tleV07XG4gICAgfSk7XG4gICAgY29uc3QgdGhlbWVWYXJpYWJsZXMgPSBjb25mLnRoZW1lVmFyaWFibGVzO1xuICAgIHZhciBteUdlbmVyYXRlZENvbG9ycyA9IFtcbiAgICAgIHRoZW1lVmFyaWFibGVzLnBpZTEsXG4gICAgICB0aGVtZVZhcmlhYmxlcy5waWUyLFxuICAgICAgdGhlbWVWYXJpYWJsZXMucGllMyxcbiAgICAgIHRoZW1lVmFyaWFibGVzLnBpZTQsXG4gICAgICB0aGVtZVZhcmlhYmxlcy5waWU1LFxuICAgICAgdGhlbWVWYXJpYWJsZXMucGllNixcbiAgICAgIHRoZW1lVmFyaWFibGVzLnBpZTcsXG4gICAgICB0aGVtZVZhcmlhYmxlcy5waWU4LFxuICAgICAgdGhlbWVWYXJpYWJsZXMucGllOSxcbiAgICAgIHRoZW1lVmFyaWFibGVzLnBpZTEwLFxuICAgICAgdGhlbWVWYXJpYWJsZXMucGllMTEsXG4gICAgICB0aGVtZVZhcmlhYmxlcy5waWUxMlxuICAgIF07XG4gICAgY29uc3QgdGV4dFBvc2l0aW9uID0gKChfYSA9IGNvbmYucGllKSA9PSBudWxsID8gdm9pZCAwIDogX2EudGV4dFBvc2l0aW9uKSA/PyAwLjc1O1xuICAgIGxldCBbb3V0ZXJTdHJva2VXaWR0aF0gPSBwYXJzZUZvbnRTaXplKHRoZW1lVmFyaWFibGVzLnBpZU91dGVyU3Ryb2tlV2lkdGgpO1xuICAgIG91dGVyU3Ryb2tlV2lkdGggPz8gKG91dGVyU3Ryb2tlV2lkdGggPSAyKTtcbiAgICB2YXIgY29sb3IgPSBzY2FsZU9yZGluYWwoKS5yYW5nZShteUdlbmVyYXRlZENvbG9ycyk7XG4gICAgdmFyIHBpZURhdGEgPSBPYmplY3QuZW50cmllcyhkYXRhKS5tYXAoZnVuY3Rpb24oZWwsIGlkeCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JkZXI6IGlkeCxcbiAgICAgICAgbmFtZTogZWxbMF0sXG4gICAgICAgIHZhbHVlOiBlbFsxXVxuICAgICAgfTtcbiAgICB9KTtcbiAgICB2YXIgcGllJDEgPSBwaWUoKS52YWx1ZShmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gZC52YWx1ZTtcbiAgICB9KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICB9KTtcbiAgICB2YXIgZGF0YVJlYWR5ID0gcGllJDEocGllRGF0YSk7XG4gICAgdmFyIGFyY0dlbmVyYXRvciA9IGFyYygpLmlubmVyUmFkaXVzKDApLm91dGVyUmFkaXVzKHJhZGl1cyk7XG4gICAgdmFyIGxhYmVsQXJjR2VuZXJhdG9yID0gYXJjKCkuaW5uZXJSYWRpdXMocmFkaXVzICogdGV4dFBvc2l0aW9uKS5vdXRlclJhZGl1cyhyYWRpdXMgKiB0ZXh0UG9zaXRpb24pO1xuICAgIHN2Zy5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIDApLmF0dHIoXCJjeVwiLCAwKS5hdHRyKFwiclwiLCByYWRpdXMgKyBvdXRlclN0cm9rZVdpZHRoIC8gMikuYXR0cihcImNsYXNzXCIsIFwicGllT3V0ZXJDaXJjbGVcIik7XG4gICAgc3ZnLnNlbGVjdEFsbChcIm15U2xpY2VzXCIpLmRhdGEoZGF0YVJlYWR5KS5lbnRlcigpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgYXJjR2VuZXJhdG9yKS5hdHRyKFwiZmlsbFwiLCBmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gY29sb3IoZC5kYXRhLm5hbWUpO1xuICAgIH0pLmF0dHIoXCJjbGFzc1wiLCBcInBpZUNpcmNsZVwiKTtcbiAgICBzdmcuc2VsZWN0QWxsKFwibXlTbGljZXNcIikuZGF0YShkYXRhUmVhZHkpLmVudGVyKCkuYXBwZW5kKFwidGV4dFwiKS50ZXh0KGZ1bmN0aW9uKGQpIHtcbiAgICAgIHJldHVybiAoZC5kYXRhLnZhbHVlIC8gc3VtICogMTAwKS50b0ZpeGVkKDApICsgXCIlXCI7XG4gICAgfSkuYXR0cihcInRyYW5zZm9ybVwiLCBmdW5jdGlvbihkKSB7XG4gICAgICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyBsYWJlbEFyY0dlbmVyYXRvci5jZW50cm9pZChkKSArIFwiKVwiO1xuICAgIH0pLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIikuYXR0cihcImNsYXNzXCIsIFwic2xpY2VcIik7XG4gICAgc3ZnLmFwcGVuZChcInRleHRcIikudGV4dChkaWFnT2JqLmRiLmdldERpYWdyYW1UaXRsZSgpKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAtKGhlaWdodCAtIDUwKSAvIDIpLmF0dHIoXCJjbGFzc1wiLCBcInBpZVRpdGxlVGV4dFwiKTtcbiAgICB2YXIgbGVnZW5kID0gc3ZnLnNlbGVjdEFsbChcIi5sZWdlbmRcIikuZGF0YShjb2xvci5kb21haW4oKSkuZW50ZXIoKS5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImxlZ2VuZFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIGZ1bmN0aW9uKGQsIGkpIHtcbiAgICAgIGNvbnN0IGhlaWdodDIgPSBsZWdlbmRSZWN0U2l6ZSArIGxlZ2VuZFNwYWNpbmc7XG4gICAgICBjb25zdCBvZmZzZXQgPSBoZWlnaHQyICogY29sb3IuZG9tYWluKCkubGVuZ3RoIC8gMjtcbiAgICAgIGNvbnN0IGhvcml6b250YWwgPSAxMiAqIGxlZ2VuZFJlY3RTaXplO1xuICAgICAgY29uc3QgdmVydGljYWwgPSBpICogaGVpZ2h0MiAtIG9mZnNldDtcbiAgICAgIHJldHVybiBcInRyYW5zbGF0ZShcIiArIGhvcml6b250YWwgKyBcIixcIiArIHZlcnRpY2FsICsgXCIpXCI7XG4gICAgfSk7XG4gICAgbGVnZW5kLmFwcGVuZChcInJlY3RcIikuYXR0cihcIndpZHRoXCIsIGxlZ2VuZFJlY3RTaXplKS5hdHRyKFwiaGVpZ2h0XCIsIGxlZ2VuZFJlY3RTaXplKS5zdHlsZShcImZpbGxcIiwgY29sb3IpLnN0eWxlKFwic3Ryb2tlXCIsIGNvbG9yKTtcbiAgICBsZWdlbmQuZGF0YShkYXRhUmVhZHkpLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgbGVnZW5kUmVjdFNpemUgKyBsZWdlbmRTcGFjaW5nKS5hdHRyKFwieVwiLCBsZWdlbmRSZWN0U2l6ZSAtIGxlZ2VuZFNwYWNpbmcpLnRleHQoZnVuY3Rpb24oZCkge1xuICAgICAgaWYgKGRpYWdPYmouZGIuZ2V0U2hvd0RhdGEoKSB8fCBjb25mLnNob3dEYXRhIHx8IGNvbmYucGllLnNob3dEYXRhKSB7XG4gICAgICAgIHJldHVybiBkLmRhdGEubmFtZSArIFwiIFtcIiArIGQuZGF0YS52YWx1ZSArIFwiXVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGQuZGF0YS5uYW1lO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgcmVuZGVyaW5nIGluZm8gZGlhZ3JhbVwiKTtcbiAgICBsb2cuZXJyb3IoZSk7XG4gIH1cbn07XG5jb25zdCByZW5kZXJlciA9IHtcbiAgZHJhd1xufTtcbmNvbnN0IGRpYWdyYW0gPSB7XG4gIHBhcnNlcjogcGFyc2VyJDEsXG4gIGRiLFxuICByZW5kZXJlcixcbiAgc3R5bGVzXG59O1xuZXhwb3J0IHtcbiAgZGlhZ3JhbVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/pieDiagram-157505fe.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/quadrantDiagram-fd70f2d0.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/quadrantDiagram-fd70f2d0.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 5], $V2 = [1, 6], $V3 = [1, 7], $V4 = [1, 8], $V5 = [1, 10], $V6 = [1, 5, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], $V7 = [1, 5, 7, 14, 16, 18, 20, 21, 26, 28, 29, 30, 31, 32, 38, 39, 40, 41, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60], $V8 = [38, 39, 40], $V9 = [2, 8], $Va = [1, 19], $Vb = [1, 23], $Vc = [1, 24], $Vd = [1, 25], $Ve = [1, 26], $Vf = [1, 27], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 37], $Vn = [1, 38], $Vo = [1, 39], $Vp = [1, 40], $Vq = [1, 41], $Vr = [1, 42], $Vs = [1, 43], $Vt = [1, 44], $Vu = [1, 45], $Vv = [1, 46], $Vw = [1, 47], $Vx = [1, 48], $Vy = [1, 49], $Vz = [1, 52], $VA = [1, 67], $VB = [1, 68], $VC = [5, 23, 27, 38, 39, 40, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61], $VD = [5, 7, 38, 39, 40, 41];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"SPACE\": 5, \"directive\": 6, \"QUADRANT\": 7, \"document\": 8, \"line\": 9, \"statement\": 10, \"axisDetails\": 11, \"quadrantDetails\": 12, \"points\": 13, \"title\": 14, \"title_value\": 15, \"acc_title\": 16, \"acc_title_value\": 17, \"acc_descr\": 18, \"acc_descr_value\": 19, \"acc_descr_multiline_value\": 20, \"section\": 21, \"text\": 22, \"point_start\": 23, \"point_x\": 24, \"point_y\": 25, \"X-AXIS\": 26, \"AXIS-TEXT-DELIMITER\": 27, \"Y-AXIS\": 28, \"QUADRANT_1\": 29, \"QUADRANT_2\": 30, \"QUADRANT_3\": 31, \"QUADRANT_4\": 32, \"openDirective\": 33, \"typeDirective\": 34, \"closeDirective\": 35, \":\": 36, \"argDirective\": 37, \"NEWLINE\": 38, \"SEMI\": 39, \"EOF\": 40, \"open_directive\": 41, \"type_directive\": 42, \"arg_directive\": 43, \"close_directive\": 44, \"alphaNumToken\": 45, \"textNoTagsToken\": 46, \"STR\": 47, \"MD_STR\": 48, \"alphaNum\": 49, \"PUNCTUATION\": 50, \"AMP\": 51, \"NUM\": 52, \"ALPHA\": 53, \"COMMA\": 54, \"PLUS\": 55, \"EQUALS\": 56, \"MULT\": 57, \"DOT\": 58, \"BRKT\": 59, \"UNDERSCORE\": 60, \"MINUS\": 61, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"SPACE\", 7: \"QUADRANT\", 14: \"title\", 15: \"title_value\", 16: \"acc_title\", 17: \"acc_title_value\", 18: \"acc_descr\", 19: \"acc_descr_value\", 20: \"acc_descr_multiline_value\", 21: \"section\", 23: \"point_start\", 24: \"point_x\", 25: \"point_y\", 26: \"X-AXIS\", 27: \"AXIS-TEXT-DELIMITER\", 28: \"Y-AXIS\", 29: \"QUADRANT_1\", 30: \"QUADRANT_2\", 31: \"QUADRANT_3\", 32: \"QUADRANT_4\", 36: \":\", 38: \"NEWLINE\", 39: \"SEMI\", 40: \"EOF\", 41: \"open_directive\", 42: \"type_directive\", 43: \"arg_directive\", 44: \"close_directive\", 47: \"STR\", 48: \"MD_STR\", 50: \"PUNCTUATION\", 51: \"AMP\", 52: \"NUM\", 53: \"ALPHA\", 54: \"COMMA\", 55: \"PLUS\", 56: \"EQUALS\", 57: \"MULT\", 58: \"DOT\", 59: \"BRKT\", 60: \"UNDERSCORE\", 61: \"MINUS\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 2], [8, 0], [8, 2], [9, 2], [10, 0], [10, 2], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 2], [10, 1], [10, 1], [10, 1], [13, 4], [11, 4], [11, 3], [11, 2], [11, 4], [11, 3], [11, 2], [12, 2], [12, 2], [12, 2], [12, 2], [6, 3], [6, 5], [4, 1], [4, 1], [4, 1], [33, 1], [34, 1], [37, 1], [35, 1], [22, 1], [22, 2], [22, 1], [22, 1], [49, 1], [49, 2], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [45, 1], [46, 1], [46, 1], [46, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 13:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 14:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 15:\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 17:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 19:\n yy.addPoint($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 20:\n yy.setXAxisLeftText($$[$0 - 2]);\n yy.setXAxisRightText($$[$0]);\n break;\n case 21:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setXAxisLeftText($$[$0 - 1]);\n break;\n case 22:\n yy.setXAxisLeftText($$[$0]);\n break;\n case 23:\n yy.setYAxisBottomText($$[$0 - 2]);\n yy.setYAxisTopText($$[$0]);\n break;\n case 24:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setYAxisBottomText($$[$0 - 1]);\n break;\n case 25:\n yy.setYAxisBottomText($$[$0]);\n break;\n case 26:\n yy.setQuadrant1Text($$[$0]);\n break;\n case 27:\n yy.setQuadrant2Text($$[$0]);\n break;\n case 28:\n yy.setQuadrant3Text($$[$0]);\n break;\n case 29:\n yy.setQuadrant4Text($$[$0]);\n break;\n case 35:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 36:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 37:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 38:\n yy.parseDirective(\"}%%\", \"close_directive\", \"quadrantChart\");\n break;\n case 39:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 40:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 41:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 42:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 43:\n this.$ = $$[$0];\n break;\n case 44:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 6: 4, 7: $V1, 33: 9, 38: $V2, 39: $V3, 40: $V4, 41: $V5 }, { 1: [3] }, { 3: 11, 4: 2, 5: $V0, 6: 4, 7: $V1, 33: 9, 38: $V2, 39: $V3, 40: $V4, 41: $V5 }, { 3: 12, 4: 2, 5: $V0, 6: 4, 7: $V1, 33: 9, 38: $V2, 39: $V3, 40: $V4, 41: $V5 }, { 3: 13, 4: 2, 5: $V0, 6: 4, 7: $V1, 33: 9, 38: $V2, 39: $V3, 40: $V4, 41: $V5 }, o($V6, [2, 5], { 8: 14 }), o($V7, [2, 32]), o($V7, [2, 33]), o($V7, [2, 34]), { 34: 15, 42: [1, 16] }, { 42: [2, 35] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o($V8, $V9, { 33: 9, 9: 17, 10: 18, 11: 20, 12: 21, 13: 22, 6: 28, 22: 35, 45: 36, 1: [2, 4], 5: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 20: $Ve, 21: $Vf, 26: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 32: $Vl, 41: $V5, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }), { 35: 50, 36: [1, 51], 44: $Vz }, o([36, 44], [2, 36]), o($V6, [2, 6]), { 4: 53, 38: $V2, 39: $V3, 40: $V4 }, o($V8, $V9, { 33: 9, 11: 20, 12: 21, 13: 22, 6: 28, 22: 35, 45: 36, 10: 54, 5: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 20: $Ve, 21: $Vf, 26: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 32: $Vl, 41: $V5, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }), o($V8, [2, 10]), o($V8, [2, 11]), o($V8, [2, 12]), { 15: [1, 55] }, { 17: [1, 56] }, { 19: [1, 57] }, o($V8, [2, 16]), o($V8, [2, 17]), o($V8, [2, 18]), { 22: 58, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 22: 59, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 22: 60, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 22: 61, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 22: 62, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 22: 63, 45: 36, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }, { 5: $VA, 23: [1, 64], 45: 66, 46: 65, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }, o($VC, [2, 39]), o($VC, [2, 41]), o($VC, [2, 42]), o($VC, [2, 45]), o($VC, [2, 46]), o($VC, [2, 47]), o($VC, [2, 48]), o($VC, [2, 49]), o($VC, [2, 50]), o($VC, [2, 51]), o($VC, [2, 52]), o($VC, [2, 53]), o($VC, [2, 54]), o($VC, [2, 55]), o($VD, [2, 30]), { 37: 69, 43: [1, 70] }, o($VD, [2, 38]), o($V6, [2, 7]), o($V8, [2, 9]), o($V8, [2, 13]), o($V8, [2, 14]), o($V8, [2, 15]), o($V8, [2, 22], { 46: 65, 45: 66, 5: $VA, 27: [1, 71], 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 25], { 46: 65, 45: 66, 5: $VA, 27: [1, 72], 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 26], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 27], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 28], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 29], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), { 24: [1, 73] }, o($VC, [2, 40]), o($VC, [2, 56]), o($VC, [2, 57]), o($VC, [2, 58]), { 35: 74, 44: $Vz }, { 44: [2, 37] }, o($V8, [2, 21], { 45: 36, 22: 75, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }), o($V8, [2, 24], { 45: 36, 22: 76, 47: $Vm, 48: $Vn, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy }), { 25: [1, 77] }, o($VD, [2, 31]), o($V8, [2, 20], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 23], { 46: 65, 45: 66, 5: $VA, 50: $Vo, 51: $Vp, 52: $Vq, 53: $Vr, 54: $Vs, 55: $Vt, 56: $Vu, 57: $Vv, 58: $Vw, 59: $Vx, 60: $Vy, 61: $VB }), o($V8, [2, 19])],\n defaultActions: { 10: [2, 35], 11: [2, 1], 12: [2, 2], 13: [2, 3], 70: [2, 37] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 41;\n case 1:\n this.begin(\"type_directive\");\n return 42;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 36;\n case 3:\n this.popState();\n this.popState();\n return 44;\n case 4:\n return 43;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 38;\n case 8:\n break;\n case 9:\n this.begin(\"title\");\n return 14;\n case 10:\n this.popState();\n return \"title_value\";\n case 11:\n this.begin(\"acc_title\");\n return 16;\n case 12:\n this.popState();\n return \"acc_title_value\";\n case 13:\n this.begin(\"acc_descr\");\n return 18;\n case 14:\n this.popState();\n return \"acc_descr_value\";\n case 15:\n this.begin(\"acc_descr_multiline\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"acc_descr_multiline_value\";\n case 18:\n return 26;\n case 19:\n return 28;\n case 20:\n return 27;\n case 21:\n return 29;\n case 22:\n return 30;\n case 23:\n return 31;\n case 24:\n return 32;\n case 25:\n this.begin(\"md_string\");\n break;\n case 26:\n return \"MD_STR\";\n case 27:\n this.popState();\n break;\n case 28:\n this.begin(\"string\");\n break;\n case 29:\n this.popState();\n break;\n case 30:\n return \"STR\";\n case 31:\n this.begin(\"point_start\");\n return 23;\n case 32:\n this.begin(\"point_x\");\n return 24;\n case 33:\n this.popState();\n break;\n case 34:\n this.popState();\n this.begin(\"point_y\");\n break;\n case 35:\n this.popState();\n return 25;\n case 36:\n return 7;\n case 37:\n return 53;\n case 38:\n return \"COLON\";\n case 39:\n return 55;\n case 40:\n return 54;\n case 41:\n return 56;\n case 42:\n return 56;\n case 43:\n return 57;\n case 44:\n return 59;\n case 45:\n return 60;\n case 46:\n return 58;\n case 47:\n return 51;\n case 48:\n return 61;\n case 49:\n return 52;\n case 50:\n return 5;\n case 51:\n return 39;\n case 52:\n return 50;\n case 53:\n return 40;\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\s*:\\s*\\[\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?:\\s*\\] *)/i, /^(?:\\s*,\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s)/i, /^(?:;)/i, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/i, /^(?:$)/i],\n conditions: { \"point_y\": { \"rules\": [35], \"inclusive\": false }, \"point_x\": { \"rules\": [34], \"inclusive\": false }, \"point_start\": { \"rules\": [32, 33], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [16, 17], \"inclusive\": false }, \"acc_descr\": { \"rules\": [14], \"inclusive\": false }, \"acc_title\": { \"rules\": [12], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"title\": { \"rules\": [10], \"inclusive\": false }, \"md_string\": { \"rules\": [26, 27], \"inclusive\": false }, \"string\": { \"rules\": [29, 30], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 7, 8, 9, 11, 13, 15, 18, 19, 20, 21, 22, 23, 24, 25, 28, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst defaultThemeVariables = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.C)();\nclass QuadrantBuilder {\n constructor() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n }\n getDefaultData() {\n return {\n titleText: \"\",\n quadrant1Text: \"\",\n quadrant2Text: \"\",\n quadrant3Text: \"\",\n quadrant4Text: \"\",\n xAxisLeftText: \"\",\n xAxisRightText: \"\",\n yAxisBottomText: \"\",\n yAxisTopText: \"\",\n points: []\n };\n }\n getDefaultConfig() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n return {\n showXAxis: true,\n showYAxis: true,\n showTitle: true,\n chartHeight: ((_a = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _a.chartWidth) || 500,\n chartWidth: ((_b = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _b.chartHeight) || 500,\n titlePadding: ((_c = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _c.titlePadding) || 10,\n titleFontSize: ((_d = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _d.titleFontSize) || 20,\n quadrantPadding: ((_e = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _e.quadrantPadding) || 5,\n xAxisLabelPadding: ((_f = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _f.xAxisLabelPadding) || 5,\n yAxisLabelPadding: ((_g = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _g.yAxisLabelPadding) || 5,\n xAxisLabelFontSize: ((_h = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _h.xAxisLabelFontSize) || 16,\n yAxisLabelFontSize: ((_i = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _i.yAxisLabelFontSize) || 16,\n quadrantLabelFontSize: ((_j = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _j.quadrantLabelFontSize) || 16,\n quadrantTextTopPadding: ((_k = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _k.quadrantTextTopPadding) || 5,\n pointTextPadding: ((_l = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _l.pointTextPadding) || 5,\n pointLabelFontSize: ((_m = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _m.pointLabelFontSize) || 12,\n pointRadius: ((_n = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _n.pointRadius) || 5,\n xAxisPosition: ((_o = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _o.xAxisPosition) || \"top\",\n yAxisPosition: ((_p = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _p.yAxisPosition) || \"left\",\n quadrantInternalBorderStrokeWidth: ((_q = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _q.quadrantInternalBorderStrokeWidth) || 1,\n quadrantExternalBorderStrokeWidth: ((_r = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.D.quadrantChart) == null ? void 0 : _r.quadrantExternalBorderStrokeWidth) || 2\n };\n }\n getDefaultThemeConfig() {\n return {\n quadrant1Fill: defaultThemeVariables.quadrant1Fill,\n quadrant2Fill: defaultThemeVariables.quadrant2Fill,\n quadrant3Fill: defaultThemeVariables.quadrant3Fill,\n quadrant4Fill: defaultThemeVariables.quadrant4Fill,\n quadrant1TextFill: defaultThemeVariables.quadrant1TextFill,\n quadrant2TextFill: defaultThemeVariables.quadrant2TextFill,\n quadrant3TextFill: defaultThemeVariables.quadrant3TextFill,\n quadrant4TextFill: defaultThemeVariables.quadrant4TextFill,\n quadrantPointFill: defaultThemeVariables.quadrantPointFill,\n quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill,\n quadrantTitleFill: defaultThemeVariables.quadrantTitleFill,\n quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill,\n quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill\n };\n }\n clear() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.info(\"clear called\");\n }\n setData(data) {\n this.data = { ...this.data, ...data };\n }\n addPoints(points) {\n this.data.points = [...points, ...this.data.points];\n }\n setConfig(config2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.trace(\"setConfig called with: \", config2);\n this.config = { ...this.config, ...config2 };\n }\n setThemeConfig(themeConfig) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.trace(\"setThemeConfig called with: \", themeConfig);\n this.themeConfig = { ...this.themeConfig, ...themeConfig };\n }\n calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle) {\n const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize;\n const xAxisSpace = {\n top: xAxisPosition === \"top\" && showXAxis ? xAxisSpaceCalculation : 0,\n bottom: xAxisPosition === \"bottom\" && showXAxis ? xAxisSpaceCalculation : 0\n };\n const yAxisSpaceCalculation = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize;\n const yAxisSpace = {\n left: this.config.yAxisPosition === \"left\" && showYAxis ? yAxisSpaceCalculation : 0,\n right: this.config.yAxisPosition === \"right\" && showYAxis ? yAxisSpaceCalculation : 0\n };\n const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2;\n const titleSpace = {\n top: showTitle ? titleSpaceCalculation : 0\n };\n const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left;\n const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top;\n const quadrantWidth = this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right;\n const quadrantHeight = this.config.chartHeight - this.config.quadrantPadding * 2 - xAxisSpace.top - xAxisSpace.bottom - titleSpace.top;\n const quadrantHalfWidth = quadrantWidth / 2;\n const quadrantHalfHeight = quadrantHeight / 2;\n const quadrantSpace = {\n quadrantLeft,\n quadrantTop,\n quadrantWidth,\n quadrantHalfWidth,\n quadrantHeight,\n quadrantHalfHeight\n };\n return {\n xAxisSpace,\n yAxisSpace,\n titleSpace,\n quadrantSpace\n };\n }\n getAxisLabels(xAxisPosition, showXAxis, showYAxis, spaceData) {\n const { quadrantSpace, titleSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const drawAxisLabelInMiddle = this.data.points.length === 0;\n const axisLabels = [];\n if (this.data.xAxisLeftText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisLeftText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawAxisLabelInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.xAxisRightText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisRightText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + quadrantHalfWidth + (drawAxisLabelInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawAxisLabelInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.yAxisBottomText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisBottomText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawAxisLabelInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n if (this.data.yAxisTopText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisTopText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHalfHeight - (drawAxisLabelInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawAxisLabelInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n return axisLabels;\n }\n getQuadrants(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace;\n const quadrants = [\n {\n text: {\n text: this.data.quadrant1Text,\n fill: this.themeConfig.quadrant1TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant1Fill\n },\n {\n text: {\n text: this.data.quadrant2Text,\n fill: this.themeConfig.quadrant2TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant2Fill\n },\n {\n text: {\n text: this.data.quadrant3Text,\n fill: this.themeConfig.quadrant3TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant3Fill\n },\n {\n text: {\n text: this.data.quadrant4Text,\n fill: this.themeConfig.quadrant4TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant4Fill\n }\n ];\n for (const quadrant of quadrants) {\n quadrant.text.x = quadrant.x + quadrant.width / 2;\n if (this.data.points.length === 0) {\n quadrant.text.y = quadrant.y + quadrant.height / 2;\n quadrant.text.horizontalPos = \"middle\";\n } else {\n quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding;\n quadrant.text.horizontalPos = \"top\";\n }\n }\n return quadrants;\n }\n getQuadrantPoints(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace;\n const xAxis = (0,d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear)().domain([0, 1]).range([quadrantLeft, quadrantWidth + quadrantLeft]);\n const yAxis = (0,d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear)().domain([0, 1]).range([quadrantHeight + quadrantTop, quadrantTop]);\n const points = this.data.points.map((point) => {\n const props = {\n x: xAxis(point.x),\n y: yAxis(point.y),\n fill: this.themeConfig.quadrantPointFill,\n radius: this.config.pointRadius,\n text: {\n text: point.text,\n fill: this.themeConfig.quadrantPointTextFill,\n x: xAxis(point.x),\n y: yAxis(point.y) + this.config.pointTextPadding,\n verticalPos: \"center\",\n horizontalPos: \"top\",\n fontSize: this.config.pointLabelFontSize,\n rotation: 0\n }\n };\n return props;\n });\n return points;\n }\n getBorders(spaceData) {\n const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2;\n const { quadrantSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const borderLines = [\n // top border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop\n },\n // right border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // bottom border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop + quadrantHeight,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop + quadrantHeight\n },\n // left border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // vertical inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantHalfWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantHalfWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // horizontal inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + halfExternalBorderWidth,\n y1: quadrantTop + quadrantHalfHeight,\n x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth,\n y2: quadrantTop + quadrantHalfHeight\n }\n ];\n return borderLines;\n }\n getTitle(showTitle) {\n if (showTitle) {\n return {\n text: this.data.titleText,\n fill: this.themeConfig.quadrantTitleFill,\n fontSize: this.config.titleFontSize,\n horizontalPos: \"top\",\n verticalPos: \"center\",\n rotation: 0,\n y: this.config.titlePadding,\n x: this.config.chartWidth / 2\n };\n }\n return;\n }\n build() {\n const showXAxis = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText);\n const showYAxis = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText);\n const showTitle = this.config.showTitle && !!this.data.titleText;\n const xAxisPosition = this.data.points.length > 0 ? \"bottom\" : this.config.xAxisPosition;\n const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle);\n return {\n points: this.getQuadrantPoints(calculatedSpace),\n quadrants: this.getQuadrants(calculatedSpace),\n axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace),\n borderLines: this.getBorders(calculatedSpace),\n title: this.getTitle(showTitle)\n };\n }\n}\nconst config = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\nfunction textSanitizer(text) {\n return (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(text.trim(), config);\n}\nconst quadrantBuilder = new QuadrantBuilder();\nfunction setQuadrant1Text(textObj) {\n quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant2Text(textObj) {\n quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant3Text(textObj) {\n quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant4Text(textObj) {\n quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) });\n}\nfunction setXAxisLeftText(textObj) {\n quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) });\n}\nfunction setXAxisRightText(textObj) {\n quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) });\n}\nfunction setYAxisTopText(textObj) {\n quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) });\n}\nfunction setYAxisBottomText(textObj) {\n quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) });\n}\nfunction addPoint(textObj, x, y) {\n quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]);\n}\nfunction setWidth(width) {\n quadrantBuilder.setConfig({ chartWidth: width });\n}\nfunction setHeight(height) {\n quadrantBuilder.setConfig({ chartHeight: height });\n}\nfunction getQuadrantData() {\n const config2 = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\n const { themeVariables, quadrantChart: quadrantChartConfig } = config2;\n if (quadrantChartConfig) {\n quadrantBuilder.setConfig(quadrantChartConfig);\n }\n quadrantBuilder.setThemeConfig({\n quadrant1Fill: themeVariables.quadrant1Fill,\n quadrant2Fill: themeVariables.quadrant2Fill,\n quadrant3Fill: themeVariables.quadrant3Fill,\n quadrant4Fill: themeVariables.quadrant4Fill,\n quadrant1TextFill: themeVariables.quadrant1TextFill,\n quadrant2TextFill: themeVariables.quadrant2TextFill,\n quadrant3TextFill: themeVariables.quadrant3TextFill,\n quadrant4TextFill: themeVariables.quadrant4TextFill,\n quadrantPointFill: themeVariables.quadrantPointFill,\n quadrantPointTextFill: themeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill,\n quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill,\n quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill,\n quadrantTitleFill: themeVariables.quadrantTitleFill\n });\n quadrantBuilder.setData({ titleText: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t)() });\n return quadrantBuilder.build();\n}\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nconst clear = function() {\n quadrantBuilder.clear();\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst db = {\n setWidth,\n setHeight,\n setQuadrant1Text,\n setQuadrant2Text,\n setQuadrant3Text,\n setQuadrant4Text,\n setXAxisLeftText,\n setXAxisRightText,\n setYAxisTopText,\n setYAxisBottomText,\n addPoint,\n getQuadrantData,\n parseDirective,\n clear,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b\n};\nconst draw = (txt, id, _version, diagObj) => {\n var _a, _b, _c;\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"hanging\" : \"middle\";\n }\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : \"middle\";\n }\n function getTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Rendering quadrant chart\\n\" + txt);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const width = ((_a = conf.quadrantChart) == null ? void 0 : _a.chartWidth) || 500;\n const height = ((_b = conf.quadrantChart) == null ? void 0 : _b.chartHeight) || 500;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.i)(svg, height, width, ((_c = conf.quadrantChart) == null ? void 0 : _c.useMaxWidth) || true);\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height);\n diagObj.db.setHeight(height);\n diagObj.db.setWidth(width);\n const quadrantData = diagObj.db.getQuadrantData();\n const quadrantsGroup = group.append(\"g\").attr(\"class\", \"quadrants\");\n const borderGroup = group.append(\"g\").attr(\"class\", \"border\");\n const dataPointGroup = group.append(\"g\").attr(\"class\", \"data-points\");\n const labelGroup = group.append(\"g\").attr(\"class\", \"labels\");\n const titleGroup = group.append(\"g\").attr(\"class\", \"title\");\n if (quadrantData.title) {\n titleGroup.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", quadrantData.title.fill).attr(\"font-size\", quadrantData.title.fontSize).attr(\"dominant-baseline\", getDominantBaseLine(quadrantData.title.horizontalPos)).attr(\"text-anchor\", getTextAnchor(quadrantData.title.verticalPos)).attr(\"transform\", getTransformation(quadrantData.title)).text(quadrantData.title.text);\n }\n if (quadrantData.borderLines) {\n borderGroup.selectAll(\"line\").data(quadrantData.borderLines).enter().append(\"line\").attr(\"x1\", (data) => data.x1).attr(\"y1\", (data) => data.y1).attr(\"x2\", (data) => data.x2).attr(\"y2\", (data) => data.y2).style(\"stroke\", (data) => data.strokeFill).style(\"stroke-width\", (data) => data.strokeWidth);\n }\n const quadrants = quadrantsGroup.selectAll(\"g.quadrant\").data(quadrantData.quadrants).enter().append(\"g\").attr(\"class\", \"quadrant\");\n quadrants.append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill);\n quadrants.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text)).text((data) => data.text.text);\n const labels = labelGroup.selectAll(\"g.label\").data(quadrantData.axisLabels).enter().append(\"g\").attr(\"class\", \"label\");\n labels.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.horizontalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.verticalPos)).attr(\"transform\", (data) => getTransformation(data));\n const dataPoints = dataPointGroup.selectAll(\"g.data-point\").data(quadrantData.points).enter().append(\"g\").attr(\"class\", \"data-point\");\n dataPoints.append(\"circle\").attr(\"cx\", (data) => data.x).attr(\"cy\", (data) => data.y).attr(\"r\", (data) => data.radius).attr(\"fill\", (data) => data.fill);\n dataPoints.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text.text).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text));\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles: () => \"\"\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9xdWFkcmFudERpYWdyYW0tZmQ3MGYyZDAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFzVDtBQUM3UTtBQUN0QjtBQUNKO0FBQ2tCO0FBQ2Q7QUFDSDtBQUNjO0FBQ2Q7QUFDYztBQUM5QjtBQUNBO0FBQ0Esc0JBQXNCLGdCQUFnQixLQUFLO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTCxVQUFVO0FBQ1YsZ0JBQWdCLG8vQkFBby9CO0FBQ3BnQyxrQkFBa0Isc3JCQUFzckI7QUFDeHNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLDZFQUE2RSxJQUFJLFFBQVEsSUFBSSw4RUFBOEUsSUFBSSw4RUFBOEUsSUFBSSw4RUFBOEUsbUJBQW1CLE9BQU8sd0RBQXdELHFCQUFxQixJQUFJLGFBQWEsSUFBSSxXQUFXLElBQUksV0FBVyxJQUFJLFdBQVcsZ0JBQWdCLHlUQUF5VCxLQUFLLDhCQUE4QiwwQ0FBMEMsa0NBQWtDLGdCQUFnQix1U0FBdVMsd0RBQXdELGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSx1REFBdUQscUlBQXFJLElBQUkscUlBQXFJLElBQUkscUlBQXFJLElBQUkscUlBQXFJLElBQUkscUlBQXFJLElBQUkscUlBQXFJLElBQUksaUpBQWlKLG1RQUFtUSxxQkFBcUIsd0hBQXdILGlKQUFpSixxQkFBcUIsaUpBQWlKLHFCQUFxQixvSUFBb0kscUJBQXFCLG9JQUFvSSxxQkFBcUIsb0lBQW9JLHFCQUFxQixvSUFBb0ksS0FBSyxhQUFhLHdFQUF3RSxpQkFBaUIsSUFBSSxhQUFhLG9CQUFvQixxSUFBcUkscUJBQXFCLHFJQUFxSSxLQUFLLGFBQWEscUNBQXFDLG9JQUFvSSxxQkFBcUIsb0lBQW9JO0FBQ3A0SSxzQkFBc0IsOERBQThEO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNB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QUFlLHVEQUFTO0FBQ3hCLEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMENBQU07QUFDM0I7QUFDQSw2Q0FBNkMsMENBQU0sbURBQW1ELDBDQUFNO0FBQzVHLGtDQUFrQyxHQUFHO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEVBQUUsdURBQWdCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvcXVhZHJhbnREaWFncmFtLWZkNzBmMmQwLmpzPzNjNjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQyBhcyBnZXRUaGVtZVZhcmlhYmxlcywgRCBhcyBkZWZhdWx0Q29uZmlnLCBsIGFzIGxvZywgcyBhcyBzZXRBY2NUaXRsZSwgZyBhcyBnZXRBY2NUaXRsZSwgciBhcyBzZXREaWFncmFtVGl0bGUsIHQgYXMgZ2V0RGlhZ3JhbVRpdGxlLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCBjIGFzIGdldENvbmZpZywgbSBhcyBtZXJtYWlkQVBJLCB2IGFzIGNsZWFyJDEsIGQgYXMgc2FuaXRpemVUZXh0LCBpIGFzIGNvbmZpZ3VyZVN2Z1NpemUgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzY2FsZUxpbmVhciwgc2VsZWN0IH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG52YXIgcGFyc2VyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBvID0gZnVuY3Rpb24oaywgdiwgbzIsIGwpIHtcbiAgICBmb3IgKG8yID0gbzIgfHwge30sIGwgPSBrLmxlbmd0aDsgbC0tOyBvMltrW2xdXSA9IHYpXG4gICAgICA7XG4gICAgcmV0dXJuIG8yO1xuICB9LCAkVjAgPSBbMSwgM10sICRWMSA9IFsxLCA1XSwgJFYyID0gWzEsIDZdLCAkVjMgPSBbMSwgN10sICRWNCA9IFsxLCA4XSwgJFY1ID0gWzEsIDEwXSwgJFY2ID0gWzEsIDUsIDE0LCAxNiwgMTgsIDIwLCAyMSwgMjYsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzgsIDM5LCA0MCwgNDEsIDQ3LCA0OCwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwXSwgJFY3ID0gWzEsIDUsIDcsIDE0LCAxNiwgMTgsIDIwLCAyMSwgMjYsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzgsIDM5LCA0MCwgNDEsIDQ3LCA0OCwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwXSwgJFY4ID0gWzM4LCAzOSwgNDBdLCAkVjkgPSBbMiwgOF0sICRWYSA9IFsxLCAxOV0sICRWYiA9IFsxLCAyM10sICRWYyA9IFsxLCAyNF0sICRWZCA9IFsxLCAyNV0sICRWZSA9IFsxLCAyNl0sICRWZiA9IFsxLCAyN10sICRWZyA9IFsxLCAyOV0sICRWaCA9IFsxLCAzMF0sICRWaSA9IFsxLCAzMV0sICRWaiA9IFsxLCAzMl0sICRWayA9IFsxLCAzM10sICRWbCA9IFsxLCAzNF0sICRWbSA9IFsxLCAzN10sICRWbiA9IFsxLCAzOF0sICRWbyA9IFsxLCAzOV0sICRWcCA9IFsxLCA0MF0sICRWcSA9IFsxLCA0MV0sICRWciA9IFsxLCA0Ml0sICRWcyA9IFsxLCA0M10sICRWdCA9IFsxLCA0NF0sICRWdSA9IFsxLCA0NV0sICRWdiA9IFsxLCA0Nl0sICRWdyA9IFsxLCA0N10sICRWeCA9IFsxLCA0OF0sICRWeSA9IFsxLCA0OV0sICRWeiA9IFsxLCA1Ml0sICRWQSA9IFsxLCA2N10sICRWQiA9IFsxLCA2OF0sICRWQyA9IFs1LCAyMywgMjcsIDM4LCAzOSwgNDAsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFdLCAkVkQgPSBbNSwgNywgMzgsIDM5LCA0MCwgNDFdO1xuICB2YXIgcGFyc2VyMiA9IHtcbiAgICB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7XG4gICAgfSxcbiAgICB5eToge30sXG4gICAgc3ltYm9sc186IHsgXCJlcnJvclwiOiAyLCBcInN0YXJ0XCI6IDMsIFwiZW9sXCI6IDQsIFwiU1BBQ0VcIjogNSwgXCJkaXJlY3RpdmVcIjogNiwgXCJRVUFEUkFOVFwiOiA3LCBcImRvY3VtZW50XCI6IDgsIFwibGluZVwiOiA5LCBcInN0YXRlbWVudFwiOiAxMCwgXCJheGlzRGV0YWlsc1wiOiAxMSwgXCJxdWFkcmFudERldGFpbHNcIjogMTIsIFwicG9pbnRzXCI6IDEzLCBcInRpdGxlXCI6IDE0LCBcInRpdGxlX3ZhbHVlXCI6IDE1LCBcImFjY190aXRsZVwiOiAxNiwgXCJhY2NfdGl0bGVfdmFsdWVcIjogMTcsIFwiYWNjX2Rlc2NyXCI6IDE4LCBcImFjY19kZXNjcl92YWx1ZVwiOiAxOSwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI6IDIwLCBcInNlY3Rpb25cIjogMjEsIFwidGV4dFwiOiAyMiwgXCJwb2ludF9zdGFydFwiOiAyMywgXCJwb2ludF94XCI6IDI0LCBcInBvaW50X3lcIjogMjUsIFwiWC1BWElTXCI6IDI2LCBcIkFYSVMtVEVYVC1ERUxJTUlURVJcIjogMjcsIFwiWS1BWElTXCI6IDI4LCBcIlFVQURSQU5UXzFcIjogMjksIFwiUVVBRFJBTlRfMlwiOiAzMCwgXCJRVUFEUkFOVF8zXCI6IDMxLCBcIlFVQURSQU5UXzRcIjogMzIsIFwib3BlbkRpcmVjdGl2ZVwiOiAzMywgXCJ0eXBlRGlyZWN0aXZlXCI6IDM0LCBcImNsb3NlRGlyZWN0aXZlXCI6IDM1LCBcIjpcIjogMzYsIFwiYXJnRGlyZWN0aXZlXCI6IDM3LCBcIk5FV0xJTkVcIjogMzgsIFwiU0VNSVwiOiAzOSwgXCJFT0ZcIjogNDAsIFwib3Blbl9kaXJlY3RpdmVcIjogNDEsIFwidHlwZV9kaXJlY3RpdmVcIjogNDIsIFwiYXJnX2RpcmVjdGl2ZVwiOiA0MywgXCJjbG9zZV9kaXJlY3RpdmVcIjogNDQsIFwiYWxwaGFOdW1Ub2tlblwiOiA0NSwgXCJ0ZXh0Tm9UYWdzVG9rZW5cIjogNDYsIFwiU1RSXCI6IDQ3LCBcIk1EX1NUUlwiOiA0OCwgXCJhbHBoYU51bVwiOiA0OSwgXCJQVU5DVFVBVElPTlwiOiA1MCwgXCJBTVBcIjogNTEsIFwiTlVNXCI6IDUyLCBcIkFMUEhBXCI6IDUzLCBcIkNPTU1BXCI6IDU0LCBcIlBMVVNcIjogNTUsIFwiRVFVQUxTXCI6IDU2LCBcIk1VTFRcIjogNTcsIFwiRE9UXCI6IDU4LCBcIkJSS1RcIjogNTksIFwiVU5ERVJTQ09SRVwiOiA2MCwgXCJNSU5VU1wiOiA2MSwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDU6IFwiU1BBQ0VcIiwgNzogXCJRVUFEUkFOVFwiLCAxNDogXCJ0aXRsZVwiLCAxNTogXCJ0aXRsZV92YWx1ZVwiLCAxNjogXCJhY2NfdGl0bGVcIiwgMTc6IFwiYWNjX3RpdGxlX3ZhbHVlXCIsIDE4OiBcImFjY19kZXNjclwiLCAxOTogXCJhY2NfZGVzY3JfdmFsdWVcIiwgMjA6IFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiLCAyMTogXCJzZWN0aW9uXCIsIDIzOiBcInBvaW50X3N0YXJ0XCIsIDI0OiBcInBvaW50X3hcIiwgMjU6IFwicG9pbnRfeVwiLCAyNjogXCJYLUFYSVNcIiwgMjc6IFwiQVhJUy1URVhULURFTElNSVRFUlwiLCAyODogXCJZLUFYSVNcIiwgMjk6IFwiUVVBRFJBTlRfMVwiLCAzMDogXCJRVUFEUkFOVF8yXCIsIDMxOiBcIlFVQURSQU5UXzNcIiwgMzI6IFwiUVVBRFJBTlRfNFwiLCAzNjogXCI6XCIsIDM4OiBcIk5FV0xJTkVcIiwgMzk6IFwiU0VNSVwiLCA0MDogXCJFT0ZcIiwgNDE6IFwib3Blbl9kaXJlY3RpdmVcIiwgNDI6IFwidHlwZV9kaXJlY3RpdmVcIiwgNDM6IFwiYXJnX2RpcmVjdGl2ZVwiLCA0NDogXCJjbG9zZV9kaXJlY3RpdmVcIiwgNDc6IFwiU1RSXCIsIDQ4OiBcIk1EX1NUUlwiLCA1MDogXCJQVU5DVFVBVElPTlwiLCA1MTogXCJBTVBcIiwgNTI6IFwiTlVNXCIsIDUzOiBcIkFMUEhBXCIsIDU0OiBcIkNPTU1BXCIsIDU1OiBcIlBMVVNcIiwgNTY6IFwiRVFVQUxTXCIsIDU3OiBcIk1VTFRcIiwgNTg6IFwiRE9UXCIsIDU5OiBcIkJSS1RcIiwgNjA6IFwiVU5ERVJTQ09SRVwiLCA2MTogXCJNSU5VU1wiIH0sXG4gICAgcHJvZHVjdGlvbnNfOiBbMCwgWzMsIDJdLCBbMywgMl0sIFszLCAyXSwgWzMsIDJdLCBbOCwgMF0sIFs4LCAyXSwgWzksIDJdLCBbMTAsIDBdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTMsIDRdLCBbMTEsIDRdLCBbMTEsIDNdLCBbMTEsIDJdLCBbMTEsIDRdLCBbMTEsIDNdLCBbMTEsIDJdLCBbMTIsIDJdLCBbMTIsIDJdLCBbMTIsIDJdLCBbMTIsIDJdLCBbNiwgM10sIFs2LCA1XSwgWzQsIDFdLCBbNCwgMV0sIFs0LCAxXSwgWzMzLCAxXSwgWzM0LCAxXSwgWzM3LCAxXSwgWzM1LCAxXSwgWzIyLCAxXSwgWzIyLCAyXSwgWzIyLCAxXSwgWzIyLCAxXSwgWzQ5LCAxXSwgWzQ5LCAyXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ1LCAxXSwgWzQ2LCAxXSwgWzQ2LCAxXSwgWzQ2LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0RGlhZ3JhbVRpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NUaXRsZSh0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE1OlxuICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICB5eS5hZGRTZWN0aW9uKCQkWyQwXS5zdWJzdHIoOCkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgeXkuYWRkUG9pbnQoJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB5eS5zZXRYQXhpc0xlZnRUZXh0KCQkWyQwIC0gMl0pO1xuICAgICAgICAgIHl5LnNldFhBeGlzUmlnaHRUZXh0KCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgJCRbJDAgLSAxXS50ZXh0ICs9IFwiIOKftiBcIjtcbiAgICAgICAgICB5eS5zZXRYQXhpc0xlZnRUZXh0KCQkWyQwIC0gMV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgIHl5LnNldFhBeGlzTGVmdFRleHQoJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICB5eS5zZXRZQXhpc0JvdHRvbVRleHQoJCRbJDAgLSAyXSk7XG4gICAgICAgICAgeXkuc2V0WUF4aXNUb3BUZXh0KCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgJCRbJDAgLSAxXS50ZXh0ICs9IFwiIOKftiBcIjtcbiAgICAgICAgICB5eS5zZXRZQXhpc0JvdHRvbVRleHQoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgeXkuc2V0WUF4aXNCb3R0b21UZXh0KCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgeXkuc2V0UXVhZHJhbnQxVGV4dCgkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIHl5LnNldFF1YWRyYW50MlRleHQoJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICB5eS5zZXRRdWFkcmFudDNUZXh0KCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgeXkuc2V0UXVhZHJhbnQ0VGV4dCgkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwiJSV7XCIsIFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICQkWyQwXSA9ICQkWyQwXS50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKTtcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIn0lJVwiLCBcImNsb3NlX2RpcmVjdGl2ZVwiLCBcInF1YWRyYW50Q2hhcnRcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgdGhpcy4kID0geyB0ZXh0OiAkJFskMF0sIHR5cGU6IFwidGV4dFwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgdGhpcy4kID0geyB0ZXh0OiAkJFskMCAtIDFdLnRleHQgKyBcIlwiICsgJCRbJDBdLCB0eXBlOiAkJFskMCAtIDFdLnR5cGUgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHRleHQ6ICQkWyQwXSwgdHlwZTogXCJ0ZXh0XCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICB0aGlzLiQgPSB7IHRleHQ6ICQkWyQwXSwgdHlwZTogXCJtYXJrZG93blwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV0gKyBcIlwiICsgJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFibGU6IFt7IDM6IDEsIDQ6IDIsIDU6ICRWMCwgNjogNCwgNzogJFYxLCAzMzogOSwgMzg6ICRWMiwgMzk6ICRWMywgNDA6ICRWNCwgNDE6ICRWNSB9LCB7IDE6IFszXSB9LCB7IDM6IDExLCA0OiAyLCA1OiAkVjAsIDY6IDQsIDc6ICRWMSwgMzM6IDksIDM4OiAkVjIsIDM5OiAkVjMsIDQwOiAkVjQsIDQxOiAkVjUgfSwgeyAzOiAxMiwgNDogMiwgNTogJFYwLCA2OiA0LCA3OiAkVjEsIDMzOiA5LCAzODogJFYyLCAzOTogJFYzLCA0MDogJFY0LCA0MTogJFY1IH0sIHsgMzogMTMsIDQ6IDIsIDU6ICRWMCwgNjogNCwgNzogJFYxLCAzMzogOSwgMzg6ICRWMiwgMzk6ICRWMywgNDA6ICRWNCwgNDE6ICRWNSB9LCBvKCRWNiwgWzIsIDVdLCB7IDg6IDE0IH0pLCBvKCRWNywgWzIsIDMyXSksIG8oJFY3LCBbMiwgMzNdKSwgbygkVjcsIFsyLCAzNF0pLCB7IDM0OiAxNSwgNDI6IFsxLCAxNl0gfSwgeyA0MjogWzIsIDM1XSB9LCB7IDE6IFsyLCAxXSB9LCB7IDE6IFsyLCAyXSB9LCB7IDE6IFsyLCAzXSB9LCBvKCRWOCwgJFY5LCB7IDMzOiA5LCA5OiAxNywgMTA6IDE4LCAxMTogMjAsIDEyOiAyMSwgMTM6IDIyLCA2OiAyOCwgMjI6IDM1LCA0NTogMzYsIDE6IFsyLCA0XSwgNTogJFZhLCAxNDogJFZiLCAxNjogJFZjLCAxODogJFZkLCAyMDogJFZlLCAyMTogJFZmLCAyNjogJFZnLCAyODogJFZoLCAyOTogJFZpLCAzMDogJFZqLCAzMTogJFZrLCAzMjogJFZsLCA0MTogJFY1LCA0NzogJFZtLCA0ODogJFZuLCA1MDogJFZvLCA1MTogJFZwLCA1MjogJFZxLCA1MzogJFZyLCA1NDogJFZzLCA1NTogJFZ0LCA1NjogJFZ1LCA1NzogJFZ2LCA1ODogJFZ3LCA1OTogJFZ4LCA2MDogJFZ5IH0pLCB7IDM1OiA1MCwgMzY6IFsxLCA1MV0sIDQ0OiAkVnogfSwgbyhbMzYsIDQ0XSwgWzIsIDM2XSksIG8oJFY2LCBbMiwgNl0pLCB7IDQ6IDUzLCAzODogJFYyLCAzOTogJFYzLCA0MDogJFY0IH0sIG8oJFY4LCAkVjksIHsgMzM6IDksIDExOiAyMCwgMTI6IDIxLCAxMzogMjIsIDY6IDI4LCAyMjogMzUsIDQ1OiAzNiwgMTA6IDU0LCA1OiAkVmEsIDE0OiAkVmIsIDE2OiAkVmMsIDE4OiAkVmQsIDIwOiAkVmUsIDIxOiAkVmYsIDI2OiAkVmcsIDI4OiAkVmgsIDI5OiAkVmksIDMwOiAkVmosIDMxOiAkVmssIDMyOiAkVmwsIDQxOiAkVjUsIDQ3OiAkVm0sIDQ4OiAkVm4sIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnkgfSksIG8oJFY4LCBbMiwgMTBdKSwgbygkVjgsIFsyLCAxMV0pLCBvKCRWOCwgWzIsIDEyXSksIHsgMTU6IFsxLCA1NV0gfSwgeyAxNzogWzEsIDU2XSB9LCB7IDE5OiBbMSwgNTddIH0sIG8oJFY4LCBbMiwgMTZdKSwgbygkVjgsIFsyLCAxN10pLCBvKCRWOCwgWzIsIDE4XSksIHsgMjI6IDU4LCA0NTogMzYsIDQ3OiAkVm0sIDQ4OiAkVm4sIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnkgfSwgeyAyMjogNTksIDQ1OiAzNiwgNDc6ICRWbSwgNDg6ICRWbiwgNTA6ICRWbywgNTE6ICRWcCwgNTI6ICRWcSwgNTM6ICRWciwgNTQ6ICRWcywgNTU6ICRWdCwgNTY6ICRWdSwgNTc6ICRWdiwgNTg6ICRWdywgNTk6ICRWeCwgNjA6ICRWeSB9LCB7IDIyOiA2MCwgNDU6IDM2LCA0NzogJFZtLCA0ODogJFZuLCA1MDogJFZvLCA1MTogJFZwLCA1MjogJFZxLCA1MzogJFZyLCA1NDogJFZzLCA1NTogJFZ0LCA1NjogJFZ1LCA1NzogJFZ2LCA1ODogJFZ3LCA1OTogJFZ4LCA2MDogJFZ5IH0sIHsgMjI6IDYxLCA0NTogMzYsIDQ3OiAkVm0sIDQ4OiAkVm4sIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnkgfSwgeyAyMjogNjIsIDQ1OiAzNiwgNDc6ICRWbSwgNDg6ICRWbiwgNTA6ICRWbywgNTE6ICRWcCwgNTI6ICRWcSwgNTM6ICRWciwgNTQ6ICRWcywgNTU6ICRWdCwgNTY6ICRWdSwgNTc6ICRWdiwgNTg6ICRWdywgNTk6ICRWeCwgNjA6ICRWeSB9LCB7IDIyOiA2MywgNDU6IDM2LCA0NzogJFZtLCA0ODogJFZuLCA1MDogJFZvLCA1MTogJFZwLCA1MjogJFZxLCA1MzogJFZyLCA1NDogJFZzLCA1NTogJFZ0LCA1NjogJFZ1LCA1NzogJFZ2LCA1ODogJFZ3LCA1OTogJFZ4LCA2MDogJFZ5IH0sIHsgNTogJFZBLCAyMzogWzEsIDY0XSwgNDU6IDY2LCA0NjogNjUsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSwgbygkVkMsIFsyLCAzOV0pLCBvKCRWQywgWzIsIDQxXSksIG8oJFZDLCBbMiwgNDJdKSwgbygkVkMsIFsyLCA0NV0pLCBvKCRWQywgWzIsIDQ2XSksIG8oJFZDLCBbMiwgNDddKSwgbygkVkMsIFsyLCA0OF0pLCBvKCRWQywgWzIsIDQ5XSksIG8oJFZDLCBbMiwgNTBdKSwgbygkVkMsIFsyLCA1MV0pLCBvKCRWQywgWzIsIDUyXSksIG8oJFZDLCBbMiwgNTNdKSwgbygkVkMsIFsyLCA1NF0pLCBvKCRWQywgWzIsIDU1XSksIG8oJFZELCBbMiwgMzBdKSwgeyAzNzogNjksIDQzOiBbMSwgNzBdIH0sIG8oJFZELCBbMiwgMzhdKSwgbygkVjYsIFsyLCA3XSksIG8oJFY4LCBbMiwgOV0pLCBvKCRWOCwgWzIsIDEzXSksIG8oJFY4LCBbMiwgMTRdKSwgbygkVjgsIFsyLCAxNV0pLCBvKCRWOCwgWzIsIDIyXSwgeyA0NjogNjUsIDQ1OiA2NiwgNTogJFZBLCAyNzogWzEsIDcxXSwgNTA6ICRWbywgNTE6ICRWcCwgNTI6ICRWcSwgNTM6ICRWciwgNTQ6ICRWcywgNTU6ICRWdCwgNTY6ICRWdSwgNTc6ICRWdiwgNTg6ICRWdywgNTk6ICRWeCwgNjA6ICRWeSwgNjE6ICRWQiB9KSwgbygkVjgsIFsyLCAyNV0sIHsgNDY6IDY1LCA0NTogNjYsIDU6ICRWQSwgMjc6IFsxLCA3Ml0sIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMjZdLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMjddLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMjhdLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMjldLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIHsgMjQ6IFsxLCA3M10gfSwgbygkVkMsIFsyLCA0MF0pLCBvKCRWQywgWzIsIDU2XSksIG8oJFZDLCBbMiwgNTddKSwgbygkVkMsIFsyLCA1OF0pLCB7IDM1OiA3NCwgNDQ6ICRWeiB9LCB7IDQ0OiBbMiwgMzddIH0sIG8oJFY4LCBbMiwgMjFdLCB7IDQ1OiAzNiwgMjI6IDc1LCA0NzogJFZtLCA0ODogJFZuLCA1MDogJFZvLCA1MTogJFZwLCA1MjogJFZxLCA1MzogJFZyLCA1NDogJFZzLCA1NTogJFZ0LCA1NjogJFZ1LCA1NzogJFZ2LCA1ODogJFZ3LCA1OTogJFZ4LCA2MDogJFZ5IH0pLCBvKCRWOCwgWzIsIDI0XSwgeyA0NTogMzYsIDIyOiA3NiwgNDc6ICRWbSwgNDg6ICRWbiwgNTA6ICRWbywgNTE6ICRWcCwgNTI6ICRWcSwgNTM6ICRWciwgNTQ6ICRWcywgNTU6ICRWdCwgNTY6ICRWdSwgNTc6ICRWdiwgNTg6ICRWdywgNTk6ICRWeCwgNjA6ICRWeSB9KSwgeyAyNTogWzEsIDc3XSB9LCBvKCRWRCwgWzIsIDMxXSksIG8oJFY4LCBbMiwgMjBdLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMjNdLCB7IDQ2OiA2NSwgNDU6IDY2LCA1OiAkVkEsIDUwOiAkVm8sIDUxOiAkVnAsIDUyOiAkVnEsIDUzOiAkVnIsIDU0OiAkVnMsIDU1OiAkVnQsIDU2OiAkVnUsIDU3OiAkVnYsIDU4OiAkVncsIDU5OiAkVngsIDYwOiAkVnksIDYxOiAkVkIgfSksIG8oJFY4LCBbMiwgMTldKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgMTA6IFsyLCAzNV0sIDExOiBbMiwgMV0sIDEyOiBbMiwgMl0sIDEzOiBbMiwgM10sIDcwOiBbMiwgMzddIH0sXG4gICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgIGlmIChoYXNoLnJlY292ZXJhYmxlKSB7XG4gICAgICAgIHRoaXMudHJhY2Uoc3RyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICBlcnJvci5oYXNoID0gaGFzaDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSxcbiAgICBwYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHRzdGFjayA9IFtdLCB2c3RhY2sgPSBbbnVsbF0sIGxzdGFjayA9IFtdLCB0YWJsZSA9IHRoaXMudGFibGUsIHl5dGV4dCA9IFwiXCIsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgVEVSUk9SID0gMiwgRU9GID0gMTtcbiAgICAgIHZhciBhcmdzID0gbHN0YWNrLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBsZXhlcjIgPSBPYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpO1xuICAgICAgdmFyIHNoYXJlZFN0YXRlID0geyB5eToge30gfTtcbiAgICAgIGZvciAodmFyIGsgaW4gdGhpcy55eSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksIGspKSB7XG4gICAgICAgICAgc2hhcmVkU3RhdGUueXlba10gPSB0aGlzLnl5W2tdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXhlcjIuc2V0SW5wdXQoaW5wdXQsIHNoYXJlZFN0YXRlLnl5KTtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LmxleGVyID0gbGV4ZXIyO1xuICAgICAgc2hhcmVkU3RhdGUueXkucGFyc2VyID0gdGhpcztcbiAgICAgIGlmICh0eXBlb2YgbGV4ZXIyLnl5bGxvYyA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxleGVyMi55eWxsb2MgPSB7fTtcbiAgICAgIH1cbiAgICAgIHZhciB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICBsc3RhY2sucHVzaCh5eWxvYyk7XG4gICAgICB2YXIgcmFuZ2VzID0gbGV4ZXIyLm9wdGlvbnMgJiYgbGV4ZXIyLm9wdGlvbnMucmFuZ2VzO1xuICAgICAgaWYgKHR5cGVvZiBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpIHx8IGxleGVyMi5sZXgoKSB8fCBFT0Y7XG4gICAgICAgIGlmICh0eXBlb2YgdG9rZW4gIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgdHN0YWNrID0gdG9rZW47XG4gICAgICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9rZW4gPSBzZWxmLnN5bWJvbHNfW3Rva2VuXSB8fCB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9XG4gICAgICB2YXIgc3ltYm9sLCBzdGF0ZSwgYWN0aW9uLCByLCB5eXZhbCA9IHt9LCBwLCBsZW4sIG5ld1N0YXRlLCBleHBlY3RlZDtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzeW1ib2wgPT09IG51bGwgfHwgdHlwZW9mIHN5bWJvbCA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBsZXgoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSBcInVuZGVmaW5lZFwiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICB2YXIgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgICBleHBlY3RlZCA9IFtdO1xuICAgICAgICAgIGZvciAocCBpbiB0YWJsZVtzdGF0ZV0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+IFRFUlJPUikge1xuICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKFwiJ1wiICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgXCInXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobGV4ZXIyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjpcXG5cIiArIGxleGVyMi5zaG93UG9zaXRpb24oKSArIFwiXFxuRXhwZWN0aW5nIFwiICsgZXhwZWN0ZWQuam9pbihcIiwgXCIpICsgXCIsIGdvdCAnXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOiBVbmV4cGVjdGVkIFwiICsgKHN5bWJvbCA9PSBFT0YgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgdGV4dDogbGV4ZXIyLm1hdGNoLFxuICAgICAgICAgICAgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCxcbiAgICAgICAgICAgIGxpbmU6IGxleGVyMi55eWxpbmVubyxcbiAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiBcIiArIHN0YXRlICsgXCIsIHRva2VuOiBcIiArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaChsZXhlcjIueXl0ZXh0KTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKGxleGVyMi55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgeXlsZW5nID0gbGV4ZXIyLnl5bGVuZztcbiAgICAgICAgICAgICAgeXl0ZXh0ID0gbGV4ZXIyLnl5dGV4dDtcbiAgICAgICAgICAgICAgeXlsaW5lbm8gPSBsZXhlcjIueXlsaW5lbm87XG4gICAgICAgICAgICAgIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocmFuZ2VzKSB7XG4gICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXVxuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5hcHBseSh5eXZhbCwgW1xuICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgIHl5bGVuZyxcbiAgICAgICAgICAgICAgeXlsaW5lbm8sXG4gICAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5LFxuICAgICAgICAgICAgICBhY3Rpb25bMV0sXG4gICAgICAgICAgICAgIHZzdGFjayxcbiAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgIHN0YWNrID0gc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4gKiAyKTtcbiAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfTtcbiAgdmFyIGxleGVyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxleGVyMiA9IHtcbiAgICAgIEVPRjogMSxcbiAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJlc2V0cyB0aGUgbGV4ZXIsIHNldHMgbmV3IGlucHV0XG4gICAgICBzZXRJbnB1dDogZnVuY3Rpb24oaW5wdXQsIHl5KSB7XG4gICAgICAgIHRoaXMueXkgPSB5eSB8fCB0aGlzLnl5IHx8IHt9O1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fYmFja3RyYWNrID0gdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sgPSBbXCJJTklUSUFMXCJdO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogMCxcbiAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgbGFzdF9jb2x1bW46IDBcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFswLCAwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG4gICAgICBpbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8rKztcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2VbMV0rKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKDEpO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgICB9LFxuICAgICAgLy8gdW5zaGlmdHMgb25lIGNoYXIgKG9yIGEgc3RyaW5nKSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdW5wdXQ6IGZ1bmN0aW9uKGNoKSB7XG4gICAgICAgIHZhciBsZW4gPSBjaC5sZW5ndGg7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuKTtcbiAgICAgICAgdGhpcy5vZmZzZXQgLT0gbGVuO1xuICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgIHRoaXMubWF0Y2ggPSB0aGlzLm1hdGNoLnN1YnN0cigwLCB0aGlzLm1hdGNoLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSAxKTtcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHIgPSB0aGlzLnl5bGxvYy5yYW5nZTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgY2FjaGVzIG1hdGNoZWQgdGV4dCBhbmQgYXBwZW5kcyBpdCBvbiBuZXh0IGFjdGlvblxuICAgICAgbW9yZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgc2lnbmFscyB0aGUgbGV4ZXIgdGhhdCB0aGlzIHJ1bGUgZmFpbHMgdG8gbWF0Y2ggdGhlIGlucHV0LCBzbyB0aGUgbmV4dCBtYXRjaGluZyBydWxlIChyZWdleCkgc2hvdWxkIGJlIHRlc3RlZCBpbnN0ZWFkLlxuICAgICAgcmVqZWN0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyByZXRhaW4gZmlyc3QgbiBjaGFyYWN0ZXJzIG9mIHRoZSBtYXRjaFxuICAgICAgbGVzczogZnVuY3Rpb24obikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIGFscmVhZHkgbWF0Y2hlZCBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gKHBhc3QubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikgKyBwYXN0LnN1YnN0cigtMjApLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB1cGNvbWluZyBpbnB1dCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLCAyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gd2hlcmUgdGhlIGxleGluZyBlcnJvciBvY2N1cnJlZCwgaS5lLiBmb3IgZXJyb3IgbWVzc2FnZXNcbiAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICB2YXIgYyA9IG5ldyBBcnJheShwcmUubGVuZ3RoICsgMSkuam9pbihcIi1cIik7XG4gICAgICAgIHJldHVybiBwcmUgKyB0aGlzLnVwY29taW5nSW5wdXQoKSArIFwiXFxuXCIgKyBjICsgXCJeXCI7XG4gICAgICB9LFxuICAgICAgLy8gdGVzdCB0aGUgbGV4ZWQgdG9rZW46IHJldHVybiBGQUxTRSB3aGVuIG5vdCBhIG1hdGNoLCBvdGhlcndpc2UgcmV0dXJuIHRva2VuXG4gICAgICB0ZXN0X21hdGNoOiBmdW5jdGlvbihtYXRjaCwgaW5kZXhlZF9ydWxlKSB7XG4gICAgICAgIHZhciB0b2tlbiwgbGluZXMsIGJhY2t1cDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICB5eWxpbmVubzogdGhpcy55eWxpbmVubyxcbiAgICAgICAgICAgIHl5bGxvYzoge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgbGFzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeXl0ZXh0OiB0aGlzLnl5dGV4dCxcbiAgICAgICAgICAgIG1hdGNoOiB0aGlzLm1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgbWF0Y2hlZDogdGhpcy5tYXRjaGVkLFxuICAgICAgICAgICAgeXlsZW5nOiB0aGlzLnl5bGVuZyxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICBfbW9yZTogdGhpcy5fbW9yZSxcbiAgICAgICAgICAgIF9pbnB1dDogdGhpcy5faW5wdXQsXG4gICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgIGNvbmRpdGlvblN0YWNrOiB0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLFxuICAgICAgICAgICAgZG9uZTogdGhpcy5kb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgYmFja3VwLnl5bGxvYy5yYW5nZSA9IHRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgIGZvciAodmFyIGsgaW4gYmFja3VwKSB7XG4gICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG4gICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICB0aGlzLnl5dGV4dCA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5tYXRjaCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgaWYgKHRlbXBNYXRjaCAmJiAoIW1hdGNoIHx8IHRlbXBNYXRjaFswXS5sZW5ndGggPiBtYXRjaFswXS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKHRlbXBNYXRjaCwgcnVsZXNbaV0pO1xuICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoXCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgXCIgKyAodGhpcy55eWxpbmVubyArIDEpICsgXCIuIFVucmVjb2duaXplZCB0ZXh0LlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxuICAgICAgbGV4OiBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhY3RpdmF0ZXMgYSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIChwdXNoZXMgdGhlIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgb250byB0aGUgY29uZGl0aW9uIHN0YWNrKVxuICAgICAgYmVnaW46IGZ1bmN0aW9uIGJlZ2luKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyBwb3AgdGhlIHByZXZpb3VzbHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvZmYgdGhlIGNvbmRpdGlvbiBzdGFja1xuICAgICAgcG9wU3RhdGU6IGZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgICAgICB2YXIgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbMF07XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBwcm9kdWNlIHRoZSBsZXhlciBydWxlIHNldCB3aGljaCBpcyBhY3RpdmUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZVxuICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoICYmIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdXS5ydWxlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW1wiSU5JVElBTFwiXS5ydWxlcztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGU7IHdoZW4gYW4gaW5kZXggYXJndW1lbnQgaXMgcHJvdmlkZWQgaXQgcHJvZHVjZXMgdGhlIE4tdGggcHJldmlvdXMgY29uZGl0aW9uIHN0YXRlLCBpZiBhdmFpbGFibGVcbiAgICAgIHRvcFN0YXRlOiBmdW5jdGlvbiB0b3BTdGF0ZShuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFwiSU5JVElBTFwiO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWxpYXMgZm9yIGJlZ2luKGNvbmRpdGlvbilcbiAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24gcHVzaFN0YXRlKGNvbmRpdGlvbikge1xuICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2Ygc3RhdGVzIGN1cnJlbnRseSBvbiB0aGUgc3RhY2tcbiAgICAgIHN0YXRlU3RhY2tTaXplOiBmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHsgXCJjYXNlLWluc2Vuc2l0aXZlXCI6IHRydWUgfSxcbiAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuICAgICAgICBzd2l0Y2ggKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDE7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQyO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDM2O1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiA0NDtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gNDM7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgcmV0dXJuIDM4O1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxNDtcbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwidGl0bGVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY190aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfZGVzY3JcIik7XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyX211bHRpbGluZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHJldHVybiAyODtcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgcmV0dXJuIDI3O1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHJldHVybiAzMDtcbiAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICByZXR1cm4gMzI7XG4gICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJtZF9zdHJpbmdcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgcmV0dXJuIFwiTURfU1RSXCI7XG4gICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjg6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwic3RyaW5nXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICByZXR1cm4gXCJTVFJcIjtcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInBvaW50X3N0YXJ0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwicG9pbnRfeFwiKTtcbiAgICAgICAgICAgIHJldHVybiAyNDtcbiAgICAgICAgICBjYXNlIDMzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJwb2ludF95XCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICAgcmV0dXJuIDc7XG4gICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgIHJldHVybiA1MztcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgcmV0dXJuIFwiQ09MT05cIjtcbiAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgcmV0dXJuIDU1O1xuICAgICAgICAgIGNhc2UgNDA6XG4gICAgICAgICAgICByZXR1cm4gNTQ7XG4gICAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICAgIHJldHVybiA1NjtcbiAgICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgICAgcmV0dXJuIDU2O1xuICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICByZXR1cm4gNTc7XG4gICAgICAgICAgY2FzZSA0NDpcbiAgICAgICAgICAgIHJldHVybiA1OTtcbiAgICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgICAgcmV0dXJuIDYwO1xuICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICByZXR1cm4gNTg7XG4gICAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICAgIHJldHVybiA1MTtcbiAgICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgICAgcmV0dXJuIDYxO1xuICAgICAgICAgIGNhc2UgNDk6XG4gICAgICAgICAgICByZXR1cm4gNTI7XG4gICAgICAgICAgY2FzZSA1MDpcbiAgICAgICAgICAgIHJldHVybiA1O1xuICAgICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgICByZXR1cm4gMzk7XG4gICAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICAgIHJldHVybiA1MDtcbiAgICAgICAgICBjYXNlIDUzOlxuICAgICAgICAgICAgcmV0dXJuIDQwO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcnVsZXM6IFsvXig/OiUlXFx7KS9pLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvaSwgL14oPzo6KS9pLCAvXig/OlxcfSUlKS9pLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvaSwgL14oPzolJSg/IVxceylbXlxcbl0qKS9pLCAvXig/OlteXFx9XSUlW15cXG5dKikvaSwgL14oPzpbXFxuXFxyXSspL2ksIC9eKD86JSVbXlxcbl0qKS9pLCAvXig/OnRpdGxlXFxiKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY1RpdGxlXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKlxce1xccyopL2ksIC9eKD86W1xcfV0pL2ksIC9eKD86W15cXH1dKikvaSwgL14oPzogKngtYXhpcyAqKS9pLCAvXig/OiAqeS1heGlzICopL2ksIC9eKD86ICotLSs+ICopL2ksIC9eKD86ICpxdWFkcmFudC0xICopL2ksIC9eKD86ICpxdWFkcmFudC0yICopL2ksIC9eKD86ICpxdWFkcmFudC0zICopL2ksIC9eKD86ICpxdWFkcmFudC00ICopL2ksIC9eKD86W1wiXVtgXSkvaSwgL14oPzpbXmBcIl0rKS9pLCAvXig/OltgXVtcIl0pL2ksIC9eKD86W1wiXSkvaSwgL14oPzpbXCJdKS9pLCAvXig/OlteXCJdKikvaSwgL14oPzpcXHMqOlxccypcXFtcXHMqKS9pLCAvXig/OigxKXwoMCguXFxkKyk/KSkvaSwgL14oPzpcXHMqXFxdICopL2ksIC9eKD86XFxzKixcXHMqKS9pLCAvXig/OigxKXwoMCguXFxkKyk/KSkvaSwgL14oPzogKnF1YWRyYW50Q2hhcnQgKikvaSwgL14oPzpbQS1aYS16XSspL2ksIC9eKD86OikvaSwgL14oPzpcXCspL2ksIC9eKD86LCkvaSwgL14oPzo9KS9pLCAvXig/Oj0pL2ksIC9eKD86XFwqKS9pLCAvXig/OiMpL2ksIC9eKD86W1xcX10pL2ksIC9eKD86XFwuKS9pLCAvXig/OiYpL2ksIC9eKD86LSkvaSwgL14oPzpbMC05XSspL2ksIC9eKD86XFxzKS9pLCAvXig/OjspL2ksIC9eKD86WyFcIiMkJSYnKissLS5gP1xcXFxfL10pL2ksIC9eKD86JCkvaV0sXG4gICAgICBjb25kaXRpb25zOiB7IFwicG9pbnRfeVwiOiB7IFwicnVsZXNcIjogWzM1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJwb2ludF94XCI6IHsgXCJydWxlc1wiOiBbMzRdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInBvaW50X3N0YXJ0XCI6IHsgXCJydWxlc1wiOiBbMzIsIDMzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCI6IHsgXCJydWxlc1wiOiBbMTYsIDE3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JcIjogeyBcInJ1bGVzXCI6IFsxNF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX3RpdGxlXCI6IHsgXCJydWxlc1wiOiBbMTJdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYXJnX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzMsIDRdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInR5cGVfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMiwgM10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwib3Blbl9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsxXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0aXRsZVwiOiB7IFwicnVsZXNcIjogWzEwXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJtZF9zdHJpbmdcIjogeyBcInJ1bGVzXCI6IFsyNiwgMjddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cmluZ1wiOiB7IFwicnVsZXNcIjogWzI5LCAzMF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSU5JVElBTFwiOiB7IFwicnVsZXNcIjogWzAsIDUsIDYsIDcsIDgsIDksIDExLCAxMywgMTUsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjgsIDMxLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzXSwgXCJpbmNsdXNpdmVcIjogdHJ1ZSB9IH1cbiAgICB9O1xuICAgIHJldHVybiBsZXhlcjI7XG4gIH0oKTtcbiAgcGFyc2VyMi5sZXhlciA9IGxleGVyO1xuICBmdW5jdGlvbiBQYXJzZXIoKSB7XG4gICAgdGhpcy55eSA9IHt9O1xuICB9XG4gIFBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXIyO1xuICBwYXJzZXIyLlBhcnNlciA9IFBhcnNlcjtcbiAgcmV0dXJuIG5ldyBQYXJzZXIoKTtcbn0oKTtcbnBhcnNlci5wYXJzZXIgPSBwYXJzZXI7XG5jb25zdCBwYXJzZXIkMSA9IHBhcnNlcjtcbmNvbnN0IGRlZmF1bHRUaGVtZVZhcmlhYmxlcyA9IGdldFRoZW1lVmFyaWFibGVzKCk7XG5jbGFzcyBRdWFkcmFudEJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdENvbmZpZygpO1xuICAgIHRoaXMudGhlbWVDb25maWcgPSB0aGlzLmdldERlZmF1bHRUaGVtZUNvbmZpZygpO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuZ2V0RGVmYXVsdERhdGEoKTtcbiAgfVxuICBnZXREZWZhdWx0RGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGVUZXh0OiBcIlwiLFxuICAgICAgcXVhZHJhbnQxVGV4dDogXCJcIixcbiAgICAgIHF1YWRyYW50MlRleHQ6IFwiXCIsXG4gICAgICBxdWFkcmFudDNUZXh0OiBcIlwiLFxuICAgICAgcXVhZHJhbnQ0VGV4dDogXCJcIixcbiAgICAgIHhBeGlzTGVmdFRleHQ6IFwiXCIsXG4gICAgICB4QXhpc1JpZ2h0VGV4dDogXCJcIixcbiAgICAgIHlBeGlzQm90dG9tVGV4dDogXCJcIixcbiAgICAgIHlBeGlzVG9wVGV4dDogXCJcIixcbiAgICAgIHBvaW50czogW11cbiAgICB9O1xuICB9XG4gIGdldERlZmF1bHRDb25maWcoKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2ksIF9qLCBfaywgX2wsIF9tLCBfbiwgX28sIF9wLCBfcSwgX3I7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dYQXhpczogdHJ1ZSxcbiAgICAgIHNob3dZQXhpczogdHJ1ZSxcbiAgICAgIHNob3dUaXRsZTogdHJ1ZSxcbiAgICAgIGNoYXJ0SGVpZ2h0OiAoKF9hID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2hhcnRXaWR0aCkgfHwgNTAwLFxuICAgICAgY2hhcnRXaWR0aDogKChfYiA9IGRlZmF1bHRDb25maWcucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNoYXJ0SGVpZ2h0KSB8fCA1MDAsXG4gICAgICB0aXRsZVBhZGRpbmc6ICgoX2MgPSBkZWZhdWx0Q29uZmlnLnF1YWRyYW50Q2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfYy50aXRsZVBhZGRpbmcpIHx8IDEwLFxuICAgICAgdGl0bGVGb250U2l6ZTogKChfZCA9IGRlZmF1bHRDb25maWcucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLnRpdGxlRm9udFNpemUpIHx8IDIwLFxuICAgICAgcXVhZHJhbnRQYWRkaW5nOiAoKF9lID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2UucXVhZHJhbnRQYWRkaW5nKSB8fCA1LFxuICAgICAgeEF4aXNMYWJlbFBhZGRpbmc6ICgoX2YgPSBkZWZhdWx0Q29uZmlnLnF1YWRyYW50Q2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfZi54QXhpc0xhYmVsUGFkZGluZykgfHwgNSxcbiAgICAgIHlBeGlzTGFiZWxQYWRkaW5nOiAoKF9nID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2cueUF4aXNMYWJlbFBhZGRpbmcpIHx8IDUsXG4gICAgICB4QXhpc0xhYmVsRm9udFNpemU6ICgoX2ggPSBkZWZhdWx0Q29uZmlnLnF1YWRyYW50Q2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfaC54QXhpc0xhYmVsRm9udFNpemUpIHx8IDE2LFxuICAgICAgeUF4aXNMYWJlbEZvbnRTaXplOiAoKF9pID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2kueUF4aXNMYWJlbEZvbnRTaXplKSB8fCAxNixcbiAgICAgIHF1YWRyYW50TGFiZWxGb250U2l6ZTogKChfaiA9IGRlZmF1bHRDb25maWcucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9qLnF1YWRyYW50TGFiZWxGb250U2l6ZSkgfHwgMTYsXG4gICAgICBxdWFkcmFudFRleHRUb3BQYWRkaW5nOiAoKF9rID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2sucXVhZHJhbnRUZXh0VG9wUGFkZGluZykgfHwgNSxcbiAgICAgIHBvaW50VGV4dFBhZGRpbmc6ICgoX2wgPSBkZWZhdWx0Q29uZmlnLnF1YWRyYW50Q2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfbC5wb2ludFRleHRQYWRkaW5nKSB8fCA1LFxuICAgICAgcG9pbnRMYWJlbEZvbnRTaXplOiAoKF9tID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX20ucG9pbnRMYWJlbEZvbnRTaXplKSB8fCAxMixcbiAgICAgIHBvaW50UmFkaXVzOiAoKF9uID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX24ucG9pbnRSYWRpdXMpIHx8IDUsXG4gICAgICB4QXhpc1Bvc2l0aW9uOiAoKF9vID0gZGVmYXVsdENvbmZpZy5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX28ueEF4aXNQb3NpdGlvbikgfHwgXCJ0b3BcIixcbiAgICAgIHlBeGlzUG9zaXRpb246ICgoX3AgPSBkZWZhdWx0Q29uZmlnLnF1YWRyYW50Q2hhcnQpID09IG51bGwgPyB2b2lkIDAgOiBfcC55QXhpc1Bvc2l0aW9uKSB8fCBcImxlZnRcIixcbiAgICAgIHF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VXaWR0aDogKChfcSA9IGRlZmF1bHRDb25maWcucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9xLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCkgfHwgMSxcbiAgICAgIHF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VXaWR0aDogKChfciA9IGRlZmF1bHRDb25maWcucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCkgfHwgMlxuICAgIH07XG4gIH1cbiAgZ2V0RGVmYXVsdFRoZW1lQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBxdWFkcmFudDFGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnQxRmlsbCxcbiAgICAgIHF1YWRyYW50MkZpbGw6IGRlZmF1bHRUaGVtZVZhcmlhYmxlcy5xdWFkcmFudDJGaWxsLFxuICAgICAgcXVhZHJhbnQzRmlsbDogZGVmYXVsdFRoZW1lVmFyaWFibGVzLnF1YWRyYW50M0ZpbGwsXG4gICAgICBxdWFkcmFudDRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnQ0RmlsbCxcbiAgICAgIHF1YWRyYW50MVRleHRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnQxVGV4dEZpbGwsXG4gICAgICBxdWFkcmFudDJUZXh0RmlsbDogZGVmYXVsdFRoZW1lVmFyaWFibGVzLnF1YWRyYW50MlRleHRGaWxsLFxuICAgICAgcXVhZHJhbnQzVGV4dEZpbGw6IGRlZmF1bHRUaGVtZVZhcmlhYmxlcy5xdWFkcmFudDNUZXh0RmlsbCxcbiAgICAgIHF1YWRyYW50NFRleHRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnQ0VGV4dEZpbGwsXG4gICAgICBxdWFkcmFudFBvaW50RmlsbDogZGVmYXVsdFRoZW1lVmFyaWFibGVzLnF1YWRyYW50UG9pbnRGaWxsLFxuICAgICAgcXVhZHJhbnRQb2ludFRleHRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnRQb2ludFRleHRGaWxsLFxuICAgICAgcXVhZHJhbnRYQXhpc1RleHRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnRYQXhpc1RleHRGaWxsLFxuICAgICAgcXVhZHJhbnRZQXhpc1RleHRGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnRZQXhpc1RleHRGaWxsLFxuICAgICAgcXVhZHJhbnRUaXRsZUZpbGw6IGRlZmF1bHRUaGVtZVZhcmlhYmxlcy5xdWFkcmFudFRpdGxlRmlsbCxcbiAgICAgIHF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VGaWxsOiBkZWZhdWx0VGhlbWVWYXJpYWJsZXMucXVhZHJhbnRJbnRlcm5hbEJvcmRlclN0cm9rZUZpbGwsXG4gICAgICBxdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbDogZGVmYXVsdFRoZW1lVmFyaWFibGVzLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsXG4gICAgfTtcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZ2V0RGVmYXVsdENvbmZpZygpO1xuICAgIHRoaXMudGhlbWVDb25maWcgPSB0aGlzLmdldERlZmF1bHRUaGVtZUNvbmZpZygpO1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuZ2V0RGVmYXVsdERhdGEoKTtcbiAgICBsb2cuaW5mbyhcImNsZWFyIGNhbGxlZFwiKTtcbiAgfVxuICBzZXREYXRhKGRhdGEpIHtcbiAgICB0aGlzLmRhdGEgPSB7IC4uLnRoaXMuZGF0YSwgLi4uZGF0YSB9O1xuICB9XG4gIGFkZFBvaW50cyhwb2ludHMpIHtcbiAgICB0aGlzLmRhdGEucG9pbnRzID0gWy4uLnBvaW50cywgLi4udGhpcy5kYXRhLnBvaW50c107XG4gIH1cbiAgc2V0Q29uZmlnKGNvbmZpZzIpIHtcbiAgICBsb2cudHJhY2UoXCJzZXRDb25maWcgY2FsbGVkIHdpdGg6IFwiLCBjb25maWcyKTtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIC4uLmNvbmZpZzIgfTtcbiAgfVxuICBzZXRUaGVtZUNvbmZpZyh0aGVtZUNvbmZpZykge1xuICAgIGxvZy50cmFjZShcInNldFRoZW1lQ29uZmlnIGNhbGxlZCB3aXRoOiBcIiwgdGhlbWVDb25maWcpO1xuICAgIHRoaXMudGhlbWVDb25maWcgPSB7IC4uLnRoaXMudGhlbWVDb25maWcsIC4uLnRoZW1lQ29uZmlnIH07XG4gIH1cbiAgY2FsY3VsYXRlU3BhY2UoeEF4aXNQb3NpdGlvbiwgc2hvd1hBeGlzLCBzaG93WUF4aXMsIHNob3dUaXRsZSkge1xuICAgIGNvbnN0IHhBeGlzU3BhY2VDYWxjdWxhdGlvbiA9IHRoaXMuY29uZmlnLnhBeGlzTGFiZWxQYWRkaW5nICogMiArIHRoaXMuY29uZmlnLnhBeGlzTGFiZWxGb250U2l6ZTtcbiAgICBjb25zdCB4QXhpc1NwYWNlID0ge1xuICAgICAgdG9wOiB4QXhpc1Bvc2l0aW9uID09PSBcInRvcFwiICYmIHNob3dYQXhpcyA/IHhBeGlzU3BhY2VDYWxjdWxhdGlvbiA6IDAsXG4gICAgICBib3R0b206IHhBeGlzUG9zaXRpb24gPT09IFwiYm90dG9tXCIgJiYgc2hvd1hBeGlzID8geEF4aXNTcGFjZUNhbGN1bGF0aW9uIDogMFxuICAgIH07XG4gICAgY29uc3QgeUF4aXNTcGFjZUNhbGN1bGF0aW9uID0gdGhpcy5jb25maWcueUF4aXNMYWJlbFBhZGRpbmcgKiAyICsgdGhpcy5jb25maWcueUF4aXNMYWJlbEZvbnRTaXplO1xuICAgIGNvbnN0IHlBeGlzU3BhY2UgPSB7XG4gICAgICBsZWZ0OiB0aGlzLmNvbmZpZy55QXhpc1Bvc2l0aW9uID09PSBcImxlZnRcIiAmJiBzaG93WUF4aXMgPyB5QXhpc1NwYWNlQ2FsY3VsYXRpb24gOiAwLFxuICAgICAgcmlnaHQ6IHRoaXMuY29uZmlnLnlBeGlzUG9zaXRpb24gPT09IFwicmlnaHRcIiAmJiBzaG93WUF4aXMgPyB5QXhpc1NwYWNlQ2FsY3VsYXRpb24gOiAwXG4gICAgfTtcbiAgICBjb25zdCB0aXRsZVNwYWNlQ2FsY3VsYXRpb24gPSB0aGlzLmNvbmZpZy50aXRsZUZvbnRTaXplICsgdGhpcy5jb25maWcudGl0bGVQYWRkaW5nICogMjtcbiAgICBjb25zdCB0aXRsZVNwYWNlID0ge1xuICAgICAgdG9wOiBzaG93VGl0bGUgPyB0aXRsZVNwYWNlQ2FsY3VsYXRpb24gOiAwXG4gICAgfTtcbiAgICBjb25zdCBxdWFkcmFudExlZnQgPSB0aGlzLmNvbmZpZy5xdWFkcmFudFBhZGRpbmcgKyB5QXhpc1NwYWNlLmxlZnQ7XG4gICAgY29uc3QgcXVhZHJhbnRUb3AgPSB0aGlzLmNvbmZpZy5xdWFkcmFudFBhZGRpbmcgKyB4QXhpc1NwYWNlLnRvcCArIHRpdGxlU3BhY2UudG9wO1xuICAgIGNvbnN0IHF1YWRyYW50V2lkdGggPSB0aGlzLmNvbmZpZy5jaGFydFdpZHRoIC0gdGhpcy5jb25maWcucXVhZHJhbnRQYWRkaW5nICogMiAtIHlBeGlzU3BhY2UubGVmdCAtIHlBeGlzU3BhY2UucmlnaHQ7XG4gICAgY29uc3QgcXVhZHJhbnRIZWlnaHQgPSB0aGlzLmNvbmZpZy5jaGFydEhlaWdodCAtIHRoaXMuY29uZmlnLnF1YWRyYW50UGFkZGluZyAqIDIgLSB4QXhpc1NwYWNlLnRvcCAtIHhBeGlzU3BhY2UuYm90dG9tIC0gdGl0bGVTcGFjZS50b3A7XG4gICAgY29uc3QgcXVhZHJhbnRIYWxmV2lkdGggPSBxdWFkcmFudFdpZHRoIC8gMjtcbiAgICBjb25zdCBxdWFkcmFudEhhbGZIZWlnaHQgPSBxdWFkcmFudEhlaWdodCAvIDI7XG4gICAgY29uc3QgcXVhZHJhbnRTcGFjZSA9IHtcbiAgICAgIHF1YWRyYW50TGVmdCxcbiAgICAgIHF1YWRyYW50VG9wLFxuICAgICAgcXVhZHJhbnRXaWR0aCxcbiAgICAgIHF1YWRyYW50SGFsZldpZHRoLFxuICAgICAgcXVhZHJhbnRIZWlnaHQsXG4gICAgICBxdWFkcmFudEhhbGZIZWlnaHRcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICB4QXhpc1NwYWNlLFxuICAgICAgeUF4aXNTcGFjZSxcbiAgICAgIHRpdGxlU3BhY2UsXG4gICAgICBxdWFkcmFudFNwYWNlXG4gICAgfTtcbiAgfVxuICBnZXRBeGlzTGFiZWxzKHhBeGlzUG9zaXRpb24sIHNob3dYQXhpcywgc2hvd1lBeGlzLCBzcGFjZURhdGEpIHtcbiAgICBjb25zdCB7IHF1YWRyYW50U3BhY2UsIHRpdGxlU3BhY2UgfSA9IHNwYWNlRGF0YTtcbiAgICBjb25zdCB7XG4gICAgICBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICBxdWFkcmFudEhlaWdodCxcbiAgICAgIHF1YWRyYW50TGVmdCxcbiAgICAgIHF1YWRyYW50SGFsZldpZHRoLFxuICAgICAgcXVhZHJhbnRUb3AsXG4gICAgICBxdWFkcmFudFdpZHRoXG4gICAgfSA9IHF1YWRyYW50U3BhY2U7XG4gICAgY29uc3QgZHJhd0F4aXNMYWJlbEluTWlkZGxlID0gdGhpcy5kYXRhLnBvaW50cy5sZW5ndGggPT09IDA7XG4gICAgY29uc3QgYXhpc0xhYmVscyA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGEueEF4aXNMZWZ0VGV4dCAmJiBzaG93WEF4aXMpIHtcbiAgICAgIGF4aXNMYWJlbHMucHVzaCh7XG4gICAgICAgIHRleHQ6IHRoaXMuZGF0YS54QXhpc0xlZnRUZXh0LFxuICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50WEF4aXNUZXh0RmlsbCxcbiAgICAgICAgeDogcXVhZHJhbnRMZWZ0ICsgKGRyYXdBeGlzTGFiZWxJbk1pZGRsZSA/IHF1YWRyYW50SGFsZldpZHRoIC8gMiA6IDApLFxuICAgICAgICB5OiB4QXhpc1Bvc2l0aW9uID09PSBcInRvcFwiID8gdGhpcy5jb25maWcueEF4aXNMYWJlbFBhZGRpbmcgKyB0aXRsZVNwYWNlLnRvcCA6IHRoaXMuY29uZmlnLnhBeGlzTGFiZWxQYWRkaW5nICsgcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhlaWdodCArIHRoaXMuY29uZmlnLnF1YWRyYW50UGFkZGluZyxcbiAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnLnhBeGlzTGFiZWxGb250U2l6ZSxcbiAgICAgICAgdmVydGljYWxQb3M6IGRyYXdBeGlzTGFiZWxJbk1pZGRsZSA/IFwiY2VudGVyXCIgOiBcImxlZnRcIixcbiAgICAgICAgaG9yaXpvbnRhbFBvczogXCJ0b3BcIixcbiAgICAgICAgcm90YXRpb246IDBcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhLnhBeGlzUmlnaHRUZXh0ICYmIHNob3dYQXhpcykge1xuICAgICAgYXhpc0xhYmVscy5wdXNoKHtcbiAgICAgICAgdGV4dDogdGhpcy5kYXRhLnhBeGlzUmlnaHRUZXh0LFxuICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50WEF4aXNUZXh0RmlsbCxcbiAgICAgICAgeDogcXVhZHJhbnRMZWZ0ICsgcXVhZHJhbnRIYWxmV2lkdGggKyAoZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gcXVhZHJhbnRIYWxmV2lkdGggLyAyIDogMCksXG4gICAgICAgIHk6IHhBeGlzUG9zaXRpb24gPT09IFwidG9wXCIgPyB0aGlzLmNvbmZpZy54QXhpc0xhYmVsUGFkZGluZyArIHRpdGxlU3BhY2UudG9wIDogdGhpcy5jb25maWcueEF4aXNMYWJlbFBhZGRpbmcgKyBxdWFkcmFudFRvcCArIHF1YWRyYW50SGVpZ2h0ICsgdGhpcy5jb25maWcucXVhZHJhbnRQYWRkaW5nLFxuICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWcueEF4aXNMYWJlbEZvbnRTaXplLFxuICAgICAgICB2ZXJ0aWNhbFBvczogZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gXCJjZW50ZXJcIiA6IFwibGVmdFwiLFxuICAgICAgICBob3Jpem9udGFsUG9zOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogMFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGEueUF4aXNCb3R0b21UZXh0ICYmIHNob3dZQXhpcykge1xuICAgICAgYXhpc0xhYmVscy5wdXNoKHtcbiAgICAgICAgdGV4dDogdGhpcy5kYXRhLnlBeGlzQm90dG9tVGV4dCxcbiAgICAgICAgZmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudFlBeGlzVGV4dEZpbGwsXG4gICAgICAgIHg6IHRoaXMuY29uZmlnLnlBeGlzUG9zaXRpb24gPT09IFwibGVmdFwiID8gdGhpcy5jb25maWcueUF4aXNMYWJlbFBhZGRpbmcgOiB0aGlzLmNvbmZpZy55QXhpc0xhYmVsUGFkZGluZyArIHF1YWRyYW50TGVmdCArIHF1YWRyYW50V2lkdGggKyB0aGlzLmNvbmZpZy5xdWFkcmFudFBhZGRpbmcsXG4gICAgICAgIHk6IHF1YWRyYW50VG9wICsgcXVhZHJhbnRIZWlnaHQgLSAoZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gcXVhZHJhbnRIYWxmSGVpZ2h0IC8gMiA6IDApLFxuICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWcueUF4aXNMYWJlbEZvbnRTaXplLFxuICAgICAgICB2ZXJ0aWNhbFBvczogZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gXCJjZW50ZXJcIiA6IFwibGVmdFwiLFxuICAgICAgICBob3Jpem9udGFsUG9zOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogLTkwXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YS55QXhpc1RvcFRleHQgJiYgc2hvd1lBeGlzKSB7XG4gICAgICBheGlzTGFiZWxzLnB1c2goe1xuICAgICAgICB0ZXh0OiB0aGlzLmRhdGEueUF4aXNUb3BUZXh0LFxuICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50WUF4aXNUZXh0RmlsbCxcbiAgICAgICAgeDogdGhpcy5jb25maWcueUF4aXNQb3NpdGlvbiA9PT0gXCJsZWZ0XCIgPyB0aGlzLmNvbmZpZy55QXhpc0xhYmVsUGFkZGluZyA6IHRoaXMuY29uZmlnLnlBeGlzTGFiZWxQYWRkaW5nICsgcXVhZHJhbnRMZWZ0ICsgcXVhZHJhbnRXaWR0aCArIHRoaXMuY29uZmlnLnF1YWRyYW50UGFkZGluZyxcbiAgICAgICAgeTogcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhhbGZIZWlnaHQgLSAoZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gcXVhZHJhbnRIYWxmSGVpZ2h0IC8gMiA6IDApLFxuICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWcueUF4aXNMYWJlbEZvbnRTaXplLFxuICAgICAgICB2ZXJ0aWNhbFBvczogZHJhd0F4aXNMYWJlbEluTWlkZGxlID8gXCJjZW50ZXJcIiA6IFwibGVmdFwiLFxuICAgICAgICBob3Jpem9udGFsUG9zOiBcInRvcFwiLFxuICAgICAgICByb3RhdGlvbjogLTkwXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGF4aXNMYWJlbHM7XG4gIH1cbiAgZ2V0UXVhZHJhbnRzKHNwYWNlRGF0YSkge1xuICAgIGNvbnN0IHsgcXVhZHJhbnRTcGFjZSB9ID0gc3BhY2VEYXRhO1xuICAgIGNvbnN0IHsgcXVhZHJhbnRIYWxmSGVpZ2h0LCBxdWFkcmFudExlZnQsIHF1YWRyYW50SGFsZldpZHRoLCBxdWFkcmFudFRvcCB9ID0gcXVhZHJhbnRTcGFjZTtcbiAgICBjb25zdCBxdWFkcmFudHMgPSBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLmRhdGEucXVhZHJhbnQxVGV4dCxcbiAgICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50MVRleHRGaWxsLFxuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWcucXVhZHJhbnRMYWJlbEZvbnRTaXplLFxuICAgICAgICAgIHZlcnRpY2FsUG9zOiBcImNlbnRlclwiLFxuICAgICAgICAgIGhvcml6b250YWxQb3M6IFwibWlkZGxlXCIsXG4gICAgICAgICAgcm90YXRpb246IDBcbiAgICAgICAgfSxcbiAgICAgICAgeDogcXVhZHJhbnRMZWZ0ICsgcXVhZHJhbnRIYWxmV2lkdGgsXG4gICAgICAgIHk6IHF1YWRyYW50VG9wLFxuICAgICAgICB3aWR0aDogcXVhZHJhbnRIYWxmV2lkdGgsXG4gICAgICAgIGhlaWdodDogcXVhZHJhbnRIYWxmSGVpZ2h0LFxuICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50MUZpbGxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHtcbiAgICAgICAgICB0ZXh0OiB0aGlzLmRhdGEucXVhZHJhbnQyVGV4dCxcbiAgICAgICAgICBmaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50MlRleHRGaWxsLFxuICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICBmb250U2l6ZTogdGhpcy5jb25maWcucXVhZHJhbnRMYWJlbEZvbnRTaXplLFxuICAgICAgICAgIHZlcnRpY2FsUG9zOiBcImNlbnRlclwiLFxuICAgICAgICAgIGhvcml6b250YWxQb3M6IFwibWlkZGxlXCIsXG4gICAgICAgICAgcm90YXRpb246IDBcbiAgICAgICAgfSxcbiAgICAgICAgeDogcXVhZHJhbnRMZWZ0LFxuICAgICAgICB5OiBxdWFkcmFudFRvcCxcbiAgICAgICAgd2lkdGg6IHF1YWRyYW50SGFsZldpZHRoLFxuICAgICAgICBoZWlnaHQ6IHF1YWRyYW50SGFsZkhlaWdodCxcbiAgICAgICAgZmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudDJGaWxsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgdGV4dDogdGhpcy5kYXRhLnF1YWRyYW50M1RleHQsXG4gICAgICAgICAgZmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudDNUZXh0RmlsbCxcbiAgICAgICAgICB4OiAwLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnLnF1YWRyYW50TGFiZWxGb250U2l6ZSxcbiAgICAgICAgICB2ZXJ0aWNhbFBvczogXCJjZW50ZXJcIixcbiAgICAgICAgICBob3Jpem9udGFsUG9zOiBcIm1pZGRsZVwiLFxuICAgICAgICAgIHJvdGF0aW9uOiAwXG4gICAgICAgIH0sXG4gICAgICAgIHg6IHF1YWRyYW50TGVmdCxcbiAgICAgICAgeTogcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICAgIHdpZHRoOiBxdWFkcmFudEhhbGZXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICAgIGZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnQzRmlsbFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgIHRleHQ6IHRoaXMuZGF0YS5xdWFkcmFudDRUZXh0LFxuICAgICAgICAgIGZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnQ0VGV4dEZpbGwsXG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwLFxuICAgICAgICAgIGZvbnRTaXplOiB0aGlzLmNvbmZpZy5xdWFkcmFudExhYmVsRm9udFNpemUsXG4gICAgICAgICAgdmVydGljYWxQb3M6IFwiY2VudGVyXCIsXG4gICAgICAgICAgaG9yaXpvbnRhbFBvczogXCJtaWRkbGVcIixcbiAgICAgICAgICByb3RhdGlvbjogMFxuICAgICAgICB9LFxuICAgICAgICB4OiBxdWFkcmFudExlZnQgKyBxdWFkcmFudEhhbGZXaWR0aCxcbiAgICAgICAgeTogcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICAgIHdpZHRoOiBxdWFkcmFudEhhbGZXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICAgIGZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnQ0RmlsbFxuICAgICAgfVxuICAgIF07XG4gICAgZm9yIChjb25zdCBxdWFkcmFudCBvZiBxdWFkcmFudHMpIHtcbiAgICAgIHF1YWRyYW50LnRleHQueCA9IHF1YWRyYW50LnggKyBxdWFkcmFudC53aWR0aCAvIDI7XG4gICAgICBpZiAodGhpcy5kYXRhLnBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcXVhZHJhbnQudGV4dC55ID0gcXVhZHJhbnQueSArIHF1YWRyYW50LmhlaWdodCAvIDI7XG4gICAgICAgIHF1YWRyYW50LnRleHQuaG9yaXpvbnRhbFBvcyA9IFwibWlkZGxlXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWFkcmFudC50ZXh0LnkgPSBxdWFkcmFudC55ICsgdGhpcy5jb25maWcucXVhZHJhbnRUZXh0VG9wUGFkZGluZztcbiAgICAgICAgcXVhZHJhbnQudGV4dC5ob3Jpem9udGFsUG9zID0gXCJ0b3BcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHF1YWRyYW50cztcbiAgfVxuICBnZXRRdWFkcmFudFBvaW50cyhzcGFjZURhdGEpIHtcbiAgICBjb25zdCB7IHF1YWRyYW50U3BhY2UgfSA9IHNwYWNlRGF0YTtcbiAgICBjb25zdCB7IHF1YWRyYW50SGVpZ2h0LCBxdWFkcmFudExlZnQsIHF1YWRyYW50VG9wLCBxdWFkcmFudFdpZHRoIH0gPSBxdWFkcmFudFNwYWNlO1xuICAgIGNvbnN0IHhBeGlzID0gc2NhbGVMaW5lYXIoKS5kb21haW4oWzAsIDFdKS5yYW5nZShbcXVhZHJhbnRMZWZ0LCBxdWFkcmFudFdpZHRoICsgcXVhZHJhbnRMZWZ0XSk7XG4gICAgY29uc3QgeUF4aXMgPSBzY2FsZUxpbmVhcigpLmRvbWFpbihbMCwgMV0pLnJhbmdlKFtxdWFkcmFudEhlaWdodCArIHF1YWRyYW50VG9wLCBxdWFkcmFudFRvcF0pO1xuICAgIGNvbnN0IHBvaW50cyA9IHRoaXMuZGF0YS5wb2ludHMubWFwKChwb2ludCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIHg6IHhBeGlzKHBvaW50LngpLFxuICAgICAgICB5OiB5QXhpcyhwb2ludC55KSxcbiAgICAgICAgZmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudFBvaW50RmlsbCxcbiAgICAgICAgcmFkaXVzOiB0aGlzLmNvbmZpZy5wb2ludFJhZGl1cyxcbiAgICAgICAgdGV4dDoge1xuICAgICAgICAgIHRleHQ6IHBvaW50LnRleHQsXG4gICAgICAgICAgZmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudFBvaW50VGV4dEZpbGwsXG4gICAgICAgICAgeDogeEF4aXMocG9pbnQueCksXG4gICAgICAgICAgeTogeUF4aXMocG9pbnQueSkgKyB0aGlzLmNvbmZpZy5wb2ludFRleHRQYWRkaW5nLFxuICAgICAgICAgIHZlcnRpY2FsUG9zOiBcImNlbnRlclwiLFxuICAgICAgICAgIGhvcml6b250YWxQb3M6IFwidG9wXCIsXG4gICAgICAgICAgZm9udFNpemU6IHRoaXMuY29uZmlnLnBvaW50TGFiZWxGb250U2l6ZSxcbiAgICAgICAgICByb3RhdGlvbjogMFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH0pO1xuICAgIHJldHVybiBwb2ludHM7XG4gIH1cbiAgZ2V0Qm9yZGVycyhzcGFjZURhdGEpIHtcbiAgICBjb25zdCBoYWxmRXh0ZXJuYWxCb3JkZXJXaWR0aCA9IHRoaXMuY29uZmlnLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCAvIDI7XG4gICAgY29uc3QgeyBxdWFkcmFudFNwYWNlIH0gPSBzcGFjZURhdGE7XG4gICAgY29uc3Qge1xuICAgICAgcXVhZHJhbnRIYWxmSGVpZ2h0LFxuICAgICAgcXVhZHJhbnRIZWlnaHQsXG4gICAgICBxdWFkcmFudExlZnQsXG4gICAgICBxdWFkcmFudEhhbGZXaWR0aCxcbiAgICAgIHF1YWRyYW50VG9wLFxuICAgICAgcXVhZHJhbnRXaWR0aFxuICAgIH0gPSBxdWFkcmFudFNwYWNlO1xuICAgIGNvbnN0IGJvcmRlckxpbmVzID0gW1xuICAgICAgLy8gdG9wIGJvcmRlclxuICAgICAge1xuICAgICAgICBzdHJva2VGaWxsOiB0aGlzLnRoZW1lQ29uZmlnLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpcy5jb25maWcucXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZVdpZHRoLFxuICAgICAgICB4MTogcXVhZHJhbnRMZWZ0IC0gaGFsZkV4dGVybmFsQm9yZGVyV2lkdGgsXG4gICAgICAgIHkxOiBxdWFkcmFudFRvcCxcbiAgICAgICAgeDI6IHF1YWRyYW50TGVmdCArIHF1YWRyYW50V2lkdGggKyBoYWxmRXh0ZXJuYWxCb3JkZXJXaWR0aCxcbiAgICAgICAgeTI6IHF1YWRyYW50VG9wXG4gICAgICB9LFxuICAgICAgLy8gcmlnaHQgYm9yZGVyXG4gICAgICB7XG4gICAgICAgIHN0cm9rZUZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZUZpbGwsXG4gICAgICAgIHN0cm9rZVdpZHRoOiB0aGlzLmNvbmZpZy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlV2lkdGgsXG4gICAgICAgIHgxOiBxdWFkcmFudExlZnQgKyBxdWFkcmFudFdpZHRoLFxuICAgICAgICB5MTogcXVhZHJhbnRUb3AgKyBoYWxmRXh0ZXJuYWxCb3JkZXJXaWR0aCxcbiAgICAgICAgeDI6IHF1YWRyYW50TGVmdCArIHF1YWRyYW50V2lkdGgsXG4gICAgICAgIHkyOiBxdWFkcmFudFRvcCArIHF1YWRyYW50SGVpZ2h0IC0gaGFsZkV4dGVybmFsQm9yZGVyV2lkdGhcbiAgICAgIH0sXG4gICAgICAvLyBib3R0b20gYm9yZGVyXG4gICAgICB7XG4gICAgICAgIHN0cm9rZUZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZUZpbGwsXG4gICAgICAgIHN0cm9rZVdpZHRoOiB0aGlzLmNvbmZpZy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlV2lkdGgsXG4gICAgICAgIHgxOiBxdWFkcmFudExlZnQgLSBoYWxmRXh0ZXJuYWxCb3JkZXJXaWR0aCxcbiAgICAgICAgeTE6IHF1YWRyYW50VG9wICsgcXVhZHJhbnRIZWlnaHQsXG4gICAgICAgIHgyOiBxdWFkcmFudExlZnQgKyBxdWFkcmFudFdpZHRoICsgaGFsZkV4dGVybmFsQm9yZGVyV2lkdGgsXG4gICAgICAgIHkyOiBxdWFkcmFudFRvcCArIHF1YWRyYW50SGVpZ2h0XG4gICAgICB9LFxuICAgICAgLy8gbGVmdCBib3JkZXJcbiAgICAgIHtcbiAgICAgICAgc3Ryb2tlRmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudEV4dGVybmFsQm9yZGVyU3Ryb2tlRmlsbCxcbiAgICAgICAgc3Ryb2tlV2lkdGg6IHRoaXMuY29uZmlnLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCxcbiAgICAgICAgeDE6IHF1YWRyYW50TGVmdCxcbiAgICAgICAgeTE6IHF1YWRyYW50VG9wICsgaGFsZkV4dGVybmFsQm9yZGVyV2lkdGgsXG4gICAgICAgIHgyOiBxdWFkcmFudExlZnQsXG4gICAgICAgIHkyOiBxdWFkcmFudFRvcCArIHF1YWRyYW50SGVpZ2h0IC0gaGFsZkV4dGVybmFsQm9yZGVyV2lkdGhcbiAgICAgIH0sXG4gICAgICAvLyB2ZXJ0aWNhbCBpbm5lciBib3JkZXJcbiAgICAgIHtcbiAgICAgICAgc3Ryb2tlRmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCxcbiAgICAgICAgc3Ryb2tlV2lkdGg6IHRoaXMuY29uZmlnLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCxcbiAgICAgICAgeDE6IHF1YWRyYW50TGVmdCArIHF1YWRyYW50SGFsZldpZHRoLFxuICAgICAgICB5MTogcXVhZHJhbnRUb3AgKyBoYWxmRXh0ZXJuYWxCb3JkZXJXaWR0aCxcbiAgICAgICAgeDI6IHF1YWRyYW50TGVmdCArIHF1YWRyYW50SGFsZldpZHRoLFxuICAgICAgICB5MjogcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhlaWdodCAtIGhhbGZFeHRlcm5hbEJvcmRlcldpZHRoXG4gICAgICB9LFxuICAgICAgLy8gaG9yaXpvbnRhbCBpbm5lciBib3JkZXJcbiAgICAgIHtcbiAgICAgICAgc3Ryb2tlRmlsbDogdGhpcy50aGVtZUNvbmZpZy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCxcbiAgICAgICAgc3Ryb2tlV2lkdGg6IHRoaXMuY29uZmlnLnF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VXaWR0aCxcbiAgICAgICAgeDE6IHF1YWRyYW50TGVmdCArIGhhbGZFeHRlcm5hbEJvcmRlcldpZHRoLFxuICAgICAgICB5MTogcXVhZHJhbnRUb3AgKyBxdWFkcmFudEhhbGZIZWlnaHQsXG4gICAgICAgIHgyOiBxdWFkcmFudExlZnQgKyBxdWFkcmFudFdpZHRoIC0gaGFsZkV4dGVybmFsQm9yZGVyV2lkdGgsXG4gICAgICAgIHkyOiBxdWFkcmFudFRvcCArIHF1YWRyYW50SGFsZkhlaWdodFxuICAgICAgfVxuICAgIF07XG4gICAgcmV0dXJuIGJvcmRlckxpbmVzO1xuICB9XG4gIGdldFRpdGxlKHNob3dUaXRsZSkge1xuICAgIGlmIChzaG93VGl0bGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHQ6IHRoaXMuZGF0YS50aXRsZVRleHQsXG4gICAgICAgIGZpbGw6IHRoaXMudGhlbWVDb25maWcucXVhZHJhbnRUaXRsZUZpbGwsXG4gICAgICAgIGZvbnRTaXplOiB0aGlzLmNvbmZpZy50aXRsZUZvbnRTaXplLFxuICAgICAgICBob3Jpem9udGFsUG9zOiBcInRvcFwiLFxuICAgICAgICB2ZXJ0aWNhbFBvczogXCJjZW50ZXJcIixcbiAgICAgICAgcm90YXRpb246IDAsXG4gICAgICAgIHk6IHRoaXMuY29uZmlnLnRpdGxlUGFkZGluZyxcbiAgICAgICAgeDogdGhpcy5jb25maWcuY2hhcnRXaWR0aCAvIDJcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBidWlsZCgpIHtcbiAgICBjb25zdCBzaG93WEF4aXMgPSB0aGlzLmNvbmZpZy5zaG93WEF4aXMgJiYgISEodGhpcy5kYXRhLnhBeGlzTGVmdFRleHQgfHwgdGhpcy5kYXRhLnhBeGlzUmlnaHRUZXh0KTtcbiAgICBjb25zdCBzaG93WUF4aXMgPSB0aGlzLmNvbmZpZy5zaG93WUF4aXMgJiYgISEodGhpcy5kYXRhLnlBeGlzVG9wVGV4dCB8fCB0aGlzLmRhdGEueUF4aXNCb3R0b21UZXh0KTtcbiAgICBjb25zdCBzaG93VGl0bGUgPSB0aGlzLmNvbmZpZy5zaG93VGl0bGUgJiYgISF0aGlzLmRhdGEudGl0bGVUZXh0O1xuICAgIGNvbnN0IHhBeGlzUG9zaXRpb24gPSB0aGlzLmRhdGEucG9pbnRzLmxlbmd0aCA+IDAgPyBcImJvdHRvbVwiIDogdGhpcy5jb25maWcueEF4aXNQb3NpdGlvbjtcbiAgICBjb25zdCBjYWxjdWxhdGVkU3BhY2UgPSB0aGlzLmNhbGN1bGF0ZVNwYWNlKHhBeGlzUG9zaXRpb24sIHNob3dYQXhpcywgc2hvd1lBeGlzLCBzaG93VGl0bGUpO1xuICAgIHJldHVybiB7XG4gICAgICBwb2ludHM6IHRoaXMuZ2V0UXVhZHJhbnRQb2ludHMoY2FsY3VsYXRlZFNwYWNlKSxcbiAgICAgIHF1YWRyYW50czogdGhpcy5nZXRRdWFkcmFudHMoY2FsY3VsYXRlZFNwYWNlKSxcbiAgICAgIGF4aXNMYWJlbHM6IHRoaXMuZ2V0QXhpc0xhYmVscyh4QXhpc1Bvc2l0aW9uLCBzaG93WEF4aXMsIHNob3dZQXhpcywgY2FsY3VsYXRlZFNwYWNlKSxcbiAgICAgIGJvcmRlckxpbmVzOiB0aGlzLmdldEJvcmRlcnMoY2FsY3VsYXRlZFNwYWNlKSxcbiAgICAgIHRpdGxlOiB0aGlzLmdldFRpdGxlKHNob3dUaXRsZSlcbiAgICB9O1xuICB9XG59XG5jb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbmZ1bmN0aW9uIHRleHRTYW5pdGl6ZXIodGV4dCkge1xuICByZXR1cm4gc2FuaXRpemVUZXh0KHRleHQudHJpbSgpLCBjb25maWcpO1xufVxuY29uc3QgcXVhZHJhbnRCdWlsZGVyID0gbmV3IFF1YWRyYW50QnVpbGRlcigpO1xuZnVuY3Rpb24gc2V0UXVhZHJhbnQxVGV4dCh0ZXh0T2JqKSB7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgcXVhZHJhbnQxVGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0UXVhZHJhbnQyVGV4dCh0ZXh0T2JqKSB7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgcXVhZHJhbnQyVGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0UXVhZHJhbnQzVGV4dCh0ZXh0T2JqKSB7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgcXVhZHJhbnQzVGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0UXVhZHJhbnQ0VGV4dCh0ZXh0T2JqKSB7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgcXVhZHJhbnQ0VGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0WEF4aXNMZWZ0VGV4dCh0ZXh0T2JqKSB7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgeEF4aXNMZWZ0VGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0WEF4aXNSaWdodFRleHQodGV4dE9iaikge1xuICBxdWFkcmFudEJ1aWxkZXIuc2V0RGF0YSh7IHhBeGlzUmlnaHRUZXh0OiB0ZXh0U2FuaXRpemVyKHRleHRPYmoudGV4dCkgfSk7XG59XG5mdW5jdGlvbiBzZXRZQXhpc1RvcFRleHQodGV4dE9iaikge1xuICBxdWFkcmFudEJ1aWxkZXIuc2V0RGF0YSh7IHlBeGlzVG9wVGV4dDogdGV4dFNhbml0aXplcih0ZXh0T2JqLnRleHQpIH0pO1xufVxuZnVuY3Rpb24gc2V0WUF4aXNCb3R0b21UZXh0KHRleHRPYmopIHtcbiAgcXVhZHJhbnRCdWlsZGVyLnNldERhdGEoeyB5QXhpc0JvdHRvbVRleHQ6IHRleHRTYW5pdGl6ZXIodGV4dE9iai50ZXh0KSB9KTtcbn1cbmZ1bmN0aW9uIGFkZFBvaW50KHRleHRPYmosIHgsIHkpIHtcbiAgcXVhZHJhbnRCdWlsZGVyLmFkZFBvaW50cyhbeyB4LCB5LCB0ZXh0OiB0ZXh0U2FuaXRpemVyKHRleHRPYmoudGV4dCkgfV0pO1xufVxuZnVuY3Rpb24gc2V0V2lkdGgod2lkdGgpIHtcbiAgcXVhZHJhbnRCdWlsZGVyLnNldENvbmZpZyh7IGNoYXJ0V2lkdGg6IHdpZHRoIH0pO1xufVxuZnVuY3Rpb24gc2V0SGVpZ2h0KGhlaWdodCkge1xuICBxdWFkcmFudEJ1aWxkZXIuc2V0Q29uZmlnKHsgY2hhcnRIZWlnaHQ6IGhlaWdodCB9KTtcbn1cbmZ1bmN0aW9uIGdldFF1YWRyYW50RGF0YSgpIHtcbiAgY29uc3QgY29uZmlnMiA9IGdldENvbmZpZygpO1xuICBjb25zdCB7IHRoZW1lVmFyaWFibGVzLCBxdWFkcmFudENoYXJ0OiBxdWFkcmFudENoYXJ0Q29uZmlnIH0gPSBjb25maWcyO1xuICBpZiAocXVhZHJhbnRDaGFydENvbmZpZykge1xuICAgIHF1YWRyYW50QnVpbGRlci5zZXRDb25maWcocXVhZHJhbnRDaGFydENvbmZpZyk7XG4gIH1cbiAgcXVhZHJhbnRCdWlsZGVyLnNldFRoZW1lQ29uZmlnKHtcbiAgICBxdWFkcmFudDFGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudDFGaWxsLFxuICAgIHF1YWRyYW50MkZpbGw6IHRoZW1lVmFyaWFibGVzLnF1YWRyYW50MkZpbGwsXG4gICAgcXVhZHJhbnQzRmlsbDogdGhlbWVWYXJpYWJsZXMucXVhZHJhbnQzRmlsbCxcbiAgICBxdWFkcmFudDRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudDRGaWxsLFxuICAgIHF1YWRyYW50MVRleHRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudDFUZXh0RmlsbCxcbiAgICBxdWFkcmFudDJUZXh0RmlsbDogdGhlbWVWYXJpYWJsZXMucXVhZHJhbnQyVGV4dEZpbGwsXG4gICAgcXVhZHJhbnQzVGV4dEZpbGw6IHRoZW1lVmFyaWFibGVzLnF1YWRyYW50M1RleHRGaWxsLFxuICAgIHF1YWRyYW50NFRleHRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudDRUZXh0RmlsbCxcbiAgICBxdWFkcmFudFBvaW50RmlsbDogdGhlbWVWYXJpYWJsZXMucXVhZHJhbnRQb2ludEZpbGwsXG4gICAgcXVhZHJhbnRQb2ludFRleHRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudFBvaW50VGV4dEZpbGwsXG4gICAgcXVhZHJhbnRYQXhpc1RleHRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudFhBeGlzVGV4dEZpbGwsXG4gICAgcXVhZHJhbnRZQXhpc1RleHRGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudFlBeGlzVGV4dEZpbGwsXG4gICAgcXVhZHJhbnRFeHRlcm5hbEJvcmRlclN0cm9rZUZpbGw6IHRoZW1lVmFyaWFibGVzLnF1YWRyYW50RXh0ZXJuYWxCb3JkZXJTdHJva2VGaWxsLFxuICAgIHF1YWRyYW50SW50ZXJuYWxCb3JkZXJTdHJva2VGaWxsOiB0aGVtZVZhcmlhYmxlcy5xdWFkcmFudEludGVybmFsQm9yZGVyU3Ryb2tlRmlsbCxcbiAgICBxdWFkcmFudFRpdGxlRmlsbDogdGhlbWVWYXJpYWJsZXMucXVhZHJhbnRUaXRsZUZpbGxcbiAgfSk7XG4gIHF1YWRyYW50QnVpbGRlci5zZXREYXRhKHsgdGl0bGVUZXh0OiBnZXREaWFncmFtVGl0bGUoKSB9KTtcbiAgcmV0dXJuIHF1YWRyYW50QnVpbGRlci5idWlsZCgpO1xufVxuY29uc3QgcGFyc2VEaXJlY3RpdmUgPSBmdW5jdGlvbihzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpIHtcbiAgbWVybWFpZEFQSS5wYXJzZURpcmVjdGl2ZSh0aGlzLCBzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpO1xufTtcbmNvbnN0IGNsZWFyID0gZnVuY3Rpb24oKSB7XG4gIHF1YWRyYW50QnVpbGRlci5jbGVhcigpO1xuICBjbGVhciQxKCk7XG59O1xuY29uc3QgZGIgPSB7XG4gIHNldFdpZHRoLFxuICBzZXRIZWlnaHQsXG4gIHNldFF1YWRyYW50MVRleHQsXG4gIHNldFF1YWRyYW50MlRleHQsXG4gIHNldFF1YWRyYW50M1RleHQsXG4gIHNldFF1YWRyYW50NFRleHQsXG4gIHNldFhBeGlzTGVmdFRleHQsXG4gIHNldFhBeGlzUmlnaHRUZXh0LFxuICBzZXRZQXhpc1RvcFRleHQsXG4gIHNldFlBeGlzQm90dG9tVGV4dCxcbiAgYWRkUG9pbnQsXG4gIGdldFF1YWRyYW50RGF0YSxcbiAgcGFyc2VEaXJlY3RpdmUsXG4gIGNsZWFyLFxuICBzZXRBY2NUaXRsZSxcbiAgZ2V0QWNjVGl0bGUsXG4gIHNldERpYWdyYW1UaXRsZSxcbiAgZ2V0RGlhZ3JhbVRpdGxlLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgc2V0QWNjRGVzY3JpcHRpb25cbn07XG5jb25zdCBkcmF3ID0gKHR4dCwgaWQsIF92ZXJzaW9uLCBkaWFnT2JqKSA9PiB7XG4gIHZhciBfYSwgX2IsIF9jO1xuICBmdW5jdGlvbiBnZXREb21pbmFudEJhc2VMaW5lKGhvcml6b250YWxQb3MpIHtcbiAgICByZXR1cm4gaG9yaXpvbnRhbFBvcyA9PT0gXCJ0b3BcIiA/IFwiaGFuZ2luZ1wiIDogXCJtaWRkbGVcIjtcbiAgfVxuICBmdW5jdGlvbiBnZXRUZXh0QW5jaG9yKHZlcnRpY2FsUG9zKSB7XG4gICAgcmV0dXJuIHZlcnRpY2FsUG9zID09PSBcImxlZnRcIiA/IFwic3RhcnRcIiA6IFwibWlkZGxlXCI7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0VHJhbnNmb3JtYXRpb24oZGF0YSkge1xuICAgIHJldHVybiBgdHJhbnNsYXRlKCR7ZGF0YS54fSwgJHtkYXRhLnl9KSByb3RhdGUoJHtkYXRhLnJvdGF0aW9uIHx8IDB9KWA7XG4gIH1cbiAgY29uc3QgY29uZiA9IGdldENvbmZpZygpO1xuICBsb2cuZGVidWcoXCJSZW5kZXJpbmcgcXVhZHJhbnQgY2hhcnRcXG5cIiArIHR4dCk7XG4gIGNvbnN0IHNlY3VyaXR5TGV2ZWwgPSBjb25mLnNlY3VyaXR5TGV2ZWw7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IHN2ZyA9IHJvb3Quc2VsZWN0KGBbaWQ9XCIke2lkfVwiXWApO1xuICBjb25zdCBncm91cCA9IHN2Zy5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1haW5cIik7XG4gIGNvbnN0IHdpZHRoID0gKChfYSA9IGNvbmYucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLmNoYXJ0V2lkdGgpIHx8IDUwMDtcbiAgY29uc3QgaGVpZ2h0ID0gKChfYiA9IGNvbmYucXVhZHJhbnRDaGFydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNoYXJ0SGVpZ2h0KSB8fCA1MDA7XG4gIGNvbmZpZ3VyZVN2Z1NpemUoc3ZnLCBoZWlnaHQsIHdpZHRoLCAoKF9jID0gY29uZi5xdWFkcmFudENoYXJ0KSA9PSBudWxsID8gdm9pZCAwIDogX2MudXNlTWF4V2lkdGgpIHx8IHRydWUpO1xuICBzdmcuYXR0cihcInZpZXdCb3hcIiwgXCIwIDAgXCIgKyB3aWR0aCArIFwiIFwiICsgaGVpZ2h0KTtcbiAgZGlhZ09iai5kYi5zZXRIZWlnaHQoaGVpZ2h0KTtcbiAgZGlhZ09iai5kYi5zZXRXaWR0aCh3aWR0aCk7XG4gIGNvbnN0IHF1YWRyYW50RGF0YSA9IGRpYWdPYmouZGIuZ2V0UXVhZHJhbnREYXRhKCk7XG4gIGNvbnN0IHF1YWRyYW50c0dyb3VwID0gZ3JvdXAuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJxdWFkcmFudHNcIik7XG4gIGNvbnN0IGJvcmRlckdyb3VwID0gZ3JvdXAuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJib3JkZXJcIik7XG4gIGNvbnN0IGRhdGFQb2ludEdyb3VwID0gZ3JvdXAuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJkYXRhLXBvaW50c1wiKTtcbiAgY29uc3QgbGFiZWxHcm91cCA9IGdyb3VwLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwibGFiZWxzXCIpO1xuICBjb25zdCB0aXRsZUdyb3VwID0gZ3JvdXAuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0aXRsZVwiKTtcbiAgaWYgKHF1YWRyYW50RGF0YS50aXRsZSkge1xuICAgIHRpdGxlR3JvdXAuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAwKS5hdHRyKFwiZmlsbFwiLCBxdWFkcmFudERhdGEudGl0bGUuZmlsbCkuYXR0cihcImZvbnQtc2l6ZVwiLCBxdWFkcmFudERhdGEudGl0bGUuZm9udFNpemUpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCBnZXREb21pbmFudEJhc2VMaW5lKHF1YWRyYW50RGF0YS50aXRsZS5ob3Jpem9udGFsUG9zKSkuYXR0cihcInRleHQtYW5jaG9yXCIsIGdldFRleHRBbmNob3IocXVhZHJhbnREYXRhLnRpdGxlLnZlcnRpY2FsUG9zKSkuYXR0cihcInRyYW5zZm9ybVwiLCBnZXRUcmFuc2Zvcm1hdGlvbihxdWFkcmFudERhdGEudGl0bGUpKS50ZXh0KHF1YWRyYW50RGF0YS50aXRsZS50ZXh0KTtcbiAgfVxuICBpZiAocXVhZHJhbnREYXRhLmJvcmRlckxpbmVzKSB7XG4gICAgYm9yZGVyR3JvdXAuc2VsZWN0QWxsKFwibGluZVwiKS5kYXRhKHF1YWRyYW50RGF0YS5ib3JkZXJMaW5lcykuZW50ZXIoKS5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCAoZGF0YSkgPT4gZGF0YS54MSkuYXR0cihcInkxXCIsIChkYXRhKSA9PiBkYXRhLnkxKS5hdHRyKFwieDJcIiwgKGRhdGEpID0+IGRhdGEueDIpLmF0dHIoXCJ5MlwiLCAoZGF0YSkgPT4gZGF0YS55Mikuc3R5bGUoXCJzdHJva2VcIiwgKGRhdGEpID0+IGRhdGEuc3Ryb2tlRmlsbCkuc3R5bGUoXCJzdHJva2Utd2lkdGhcIiwgKGRhdGEpID0+IGRhdGEuc3Ryb2tlV2lkdGgpO1xuICB9XG4gIGNvbnN0IHF1YWRyYW50cyA9IHF1YWRyYW50c0dyb3VwLnNlbGVjdEFsbChcImcucXVhZHJhbnRcIikuZGF0YShxdWFkcmFudERhdGEucXVhZHJhbnRzKS5lbnRlcigpLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwicXVhZHJhbnRcIik7XG4gIHF1YWRyYW50cy5hcHBlbmQoXCJyZWN0XCIpLmF0dHIoXCJ4XCIsIChkYXRhKSA9PiBkYXRhLngpLmF0dHIoXCJ5XCIsIChkYXRhKSA9PiBkYXRhLnkpLmF0dHIoXCJ3aWR0aFwiLCAoZGF0YSkgPT4gZGF0YS53aWR0aCkuYXR0cihcImhlaWdodFwiLCAoZGF0YSkgPT4gZGF0YS5oZWlnaHQpLmF0dHIoXCJmaWxsXCIsIChkYXRhKSA9PiBkYXRhLmZpbGwpO1xuICBxdWFkcmFudHMuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAwKS5hdHRyKFwiZmlsbFwiLCAoZGF0YSkgPT4gZGF0YS50ZXh0LmZpbGwpLmF0dHIoXCJmb250LXNpemVcIiwgKGRhdGEpID0+IGRhdGEudGV4dC5mb250U2l6ZSkuYXR0cihcbiAgICBcImRvbWluYW50LWJhc2VsaW5lXCIsXG4gICAgKGRhdGEpID0+IGdldERvbWluYW50QmFzZUxpbmUoZGF0YS50ZXh0Lmhvcml6b250YWxQb3MpXG4gICkuYXR0cihcInRleHQtYW5jaG9yXCIsIChkYXRhKSA9PiBnZXRUZXh0QW5jaG9yKGRhdGEudGV4dC52ZXJ0aWNhbFBvcykpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgKGRhdGEpID0+IGdldFRyYW5zZm9ybWF0aW9uKGRhdGEudGV4dCkpLnRleHQoKGRhdGEpID0+IGRhdGEudGV4dC50ZXh0KTtcbiAgY29uc3QgbGFiZWxzID0gbGFiZWxHcm91cC5zZWxlY3RBbGwoXCJnLmxhYmVsXCIpLmRhdGEocXVhZHJhbnREYXRhLmF4aXNMYWJlbHMpLmVudGVyKCkuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbFwiKTtcbiAgbGFiZWxzLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkudGV4dCgoZGF0YSkgPT4gZGF0YS50ZXh0KS5hdHRyKFwiZmlsbFwiLCAoZGF0YSkgPT4gZGF0YS5maWxsKS5hdHRyKFwiZm9udC1zaXplXCIsIChkYXRhKSA9PiBkYXRhLmZvbnRTaXplKS5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgKGRhdGEpID0+IGdldERvbWluYW50QmFzZUxpbmUoZGF0YS5ob3Jpem9udGFsUG9zKSkuYXR0cihcInRleHQtYW5jaG9yXCIsIChkYXRhKSA9PiBnZXRUZXh0QW5jaG9yKGRhdGEudmVydGljYWxQb3MpKS5hdHRyKFwidHJhbnNmb3JtXCIsIChkYXRhKSA9PiBnZXRUcmFuc2Zvcm1hdGlvbihkYXRhKSk7XG4gIGNvbnN0IGRhdGFQb2ludHMgPSBkYXRhUG9pbnRHcm91cC5zZWxlY3RBbGwoXCJnLmRhdGEtcG9pbnRcIikuZGF0YShxdWFkcmFudERhdGEucG9pbnRzKS5lbnRlcigpLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwiZGF0YS1wb2ludFwiKTtcbiAgZGF0YVBvaW50cy5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIChkYXRhKSA9PiBkYXRhLngpLmF0dHIoXCJjeVwiLCAoZGF0YSkgPT4gZGF0YS55KS5hdHRyKFwiclwiLCAoZGF0YSkgPT4gZGF0YS5yYWRpdXMpLmF0dHIoXCJmaWxsXCIsIChkYXRhKSA9PiBkYXRhLmZpbGwpO1xuICBkYXRhUG9pbnRzLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkudGV4dCgoZGF0YSkgPT4gZGF0YS50ZXh0LnRleHQpLmF0dHIoXCJmaWxsXCIsIChkYXRhKSA9PiBkYXRhLnRleHQuZmlsbCkuYXR0cihcImZvbnQtc2l6ZVwiLCAoZGF0YSkgPT4gZGF0YS50ZXh0LmZvbnRTaXplKS5hdHRyKFxuICAgIFwiZG9taW5hbnQtYmFzZWxpbmVcIixcbiAgICAoZGF0YSkgPT4gZ2V0RG9taW5hbnRCYXNlTGluZShkYXRhLnRleHQuaG9yaXpvbnRhbFBvcylcbiAgKS5hdHRyKFwidGV4dC1hbmNob3JcIiwgKGRhdGEpID0+IGdldFRleHRBbmNob3IoZGF0YS50ZXh0LnZlcnRpY2FsUG9zKSkuYXR0cihcInRyYW5zZm9ybVwiLCAoZGF0YSkgPT4gZ2V0VHJhbnNmb3JtYXRpb24oZGF0YS50ZXh0KSk7XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIGRyYXdcbn07XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXI6IHBhcnNlciQxLFxuICBkYixcbiAgcmVuZGVyZXIsXG4gIHN0eWxlczogKCkgPT4gXCJcIlxufTtcbmV4cG9ydCB7XG4gIGRpYWdyYW1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/quadrantDiagram-fd70f2d0.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/requirementDiagram-19c99588.js": +/*!*************************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/requirementDiagram-19c99588.js ***! + \*************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 5], $V2 = [1, 6], $V3 = [1, 7], $V4 = [1, 8], $V5 = [5, 6, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72], $V6 = [1, 22], $V7 = [2, 13], $V8 = [1, 26], $V9 = [1, 27], $Va = [1, 28], $Vb = [1, 29], $Vc = [1, 30], $Vd = [1, 31], $Ve = [1, 24], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 36], $Vi = [71, 72], $Vj = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 60, 62, 71, 72], $Vk = [1, 56], $Vl = [1, 57], $Vm = [1, 58], $Vn = [1, 59], $Vo = [1, 60], $Vp = [1, 61], $Vq = [1, 62], $Vr = [62, 63], $Vs = [1, 74], $Vt = [1, 70], $Vu = [1, 71], $Vv = [1, 72], $Vw = [1, 73], $Vx = [1, 75], $Vy = [1, 79], $Vz = [1, 80], $VA = [1, 77], $VB = [1, 78], $VC = [5, 8, 14, 16, 18, 19, 40, 41, 42, 43, 44, 45, 53, 71, 72];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"directive\": 4, \"NEWLINE\": 5, \"RD\": 6, \"diagram\": 7, \"EOF\": 8, \"openDirective\": 9, \"typeDirective\": 10, \"closeDirective\": 11, \":\": 12, \"argDirective\": 13, \"acc_title\": 14, \"acc_title_value\": 15, \"acc_descr\": 16, \"acc_descr_value\": 17, \"acc_descr_multiline_value\": 18, \"open_directive\": 19, \"type_directive\": 20, \"arg_directive\": 21, \"close_directive\": 22, \"requirementDef\": 23, \"elementDef\": 24, \"relationshipDef\": 25, \"requirementType\": 26, \"requirementName\": 27, \"STRUCT_START\": 28, \"requirementBody\": 29, \"ID\": 30, \"COLONSEP\": 31, \"id\": 32, \"TEXT\": 33, \"text\": 34, \"RISK\": 35, \"riskLevel\": 36, \"VERIFYMTHD\": 37, \"verifyType\": 38, \"STRUCT_STOP\": 39, \"REQUIREMENT\": 40, \"FUNCTIONAL_REQUIREMENT\": 41, \"INTERFACE_REQUIREMENT\": 42, \"PERFORMANCE_REQUIREMENT\": 43, \"PHYSICAL_REQUIREMENT\": 44, \"DESIGN_CONSTRAINT\": 45, \"LOW_RISK\": 46, \"MED_RISK\": 47, \"HIGH_RISK\": 48, \"VERIFY_ANALYSIS\": 49, \"VERIFY_DEMONSTRATION\": 50, \"VERIFY_INSPECTION\": 51, \"VERIFY_TEST\": 52, \"ELEMENT\": 53, \"elementName\": 54, \"elementBody\": 55, \"TYPE\": 56, \"type\": 57, \"DOCREF\": 58, \"ref\": 59, \"END_ARROW_L\": 60, \"relationship\": 61, \"LINE\": 62, \"END_ARROW_R\": 63, \"CONTAINS\": 64, \"COPIES\": 65, \"DERIVES\": 66, \"SATISFIES\": 67, \"VERIFIES\": 68, \"REFINES\": 69, \"TRACES\": 70, \"unqString\": 71, \"qString\": 72, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"NEWLINE\", 6: \"RD\", 8: \"EOF\", 12: \":\", 14: \"acc_title\", 15: \"acc_title_value\", 16: \"acc_descr\", 17: \"acc_descr_value\", 18: \"acc_descr_multiline_value\", 19: \"open_directive\", 20: \"type_directive\", 21: \"arg_directive\", 22: \"close_directive\", 28: \"STRUCT_START\", 30: \"ID\", 31: \"COLONSEP\", 33: \"TEXT\", 35: \"RISK\", 37: \"VERIFYMTHD\", 39: \"STRUCT_STOP\", 40: \"REQUIREMENT\", 41: \"FUNCTIONAL_REQUIREMENT\", 42: \"INTERFACE_REQUIREMENT\", 43: \"PERFORMANCE_REQUIREMENT\", 44: \"PHYSICAL_REQUIREMENT\", 45: \"DESIGN_CONSTRAINT\", 46: \"LOW_RISK\", 47: \"MED_RISK\", 48: \"HIGH_RISK\", 49: \"VERIFY_ANALYSIS\", 50: \"VERIFY_DEMONSTRATION\", 51: \"VERIFY_INSPECTION\", 52: \"VERIFY_TEST\", 53: \"ELEMENT\", 56: \"TYPE\", 58: \"DOCREF\", 60: \"END_ARROW_L\", 62: \"LINE\", 63: \"END_ARROW_R\", 64: \"CONTAINS\", 65: \"COPIES\", 66: \"DERIVES\", 67: \"SATISFIES\", 68: \"VERIFIES\", 69: \"REFINES\", 70: \"TRACES\", 71: \"unqString\", 72: \"qString\" },\n productions_: [0, [3, 3], [3, 2], [3, 4], [4, 3], [4, 5], [4, 2], [4, 2], [4, 1], [9, 1], [10, 1], [13, 1], [11, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [23, 5], [29, 5], [29, 5], [29, 5], [29, 5], [29, 2], [29, 1], [26, 1], [26, 1], [26, 1], [26, 1], [26, 1], [26, 1], [36, 1], [36, 1], [36, 1], [38, 1], [38, 1], [38, 1], [38, 1], [24, 5], [55, 5], [55, 5], [55, 2], [55, 1], [25, 5], [25, 5], [61, 1], [61, 1], [61, 1], [61, 1], [61, 1], [61, 1], [61, 1], [27, 1], [27, 1], [32, 1], [32, 1], [34, 1], [34, 1], [54, 1], [54, 1], [57, 1], [57, 1], [59, 1], [59, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 6:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 7:\n case 8:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 9:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 10:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 11:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 12:\n yy.parseDirective(\"}%%\", \"close_directive\", \"pie\");\n break;\n case 13:\n this.$ = [];\n break;\n case 19:\n yy.addRequirement($$[$0 - 3], $$[$0 - 4]);\n break;\n case 20:\n yy.setNewReqId($$[$0 - 2]);\n break;\n case 21:\n yy.setNewReqText($$[$0 - 2]);\n break;\n case 22:\n yy.setNewReqRisk($$[$0 - 2]);\n break;\n case 23:\n yy.setNewReqVerifyMethod($$[$0 - 2]);\n break;\n case 26:\n this.$ = yy.RequirementType.REQUIREMENT;\n break;\n case 27:\n this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT;\n break;\n case 28:\n this.$ = yy.RequirementType.INTERFACE_REQUIREMENT;\n break;\n case 29:\n this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT;\n break;\n case 30:\n this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT;\n break;\n case 31:\n this.$ = yy.RequirementType.DESIGN_CONSTRAINT;\n break;\n case 32:\n this.$ = yy.RiskLevel.LOW_RISK;\n break;\n case 33:\n this.$ = yy.RiskLevel.MED_RISK;\n break;\n case 34:\n this.$ = yy.RiskLevel.HIGH_RISK;\n break;\n case 35:\n this.$ = yy.VerifyType.VERIFY_ANALYSIS;\n break;\n case 36:\n this.$ = yy.VerifyType.VERIFY_DEMONSTRATION;\n break;\n case 37:\n this.$ = yy.VerifyType.VERIFY_INSPECTION;\n break;\n case 38:\n this.$ = yy.VerifyType.VERIFY_TEST;\n break;\n case 39:\n yy.addElement($$[$0 - 3]);\n break;\n case 40:\n yy.setNewElementType($$[$0 - 2]);\n break;\n case 41:\n yy.setNewElementDocRef($$[$0 - 2]);\n break;\n case 44:\n yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 45:\n yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 46:\n this.$ = yy.Relationships.CONTAINS;\n break;\n case 47:\n this.$ = yy.Relationships.COPIES;\n break;\n case 48:\n this.$ = yy.Relationships.DERIVES;\n break;\n case 49:\n this.$ = yy.Relationships.SATISFIES;\n break;\n case 50:\n this.$ = yy.Relationships.VERIFIES;\n break;\n case 51:\n this.$ = yy.Relationships.REFINES;\n break;\n case 52:\n this.$ = yy.Relationships.TRACES;\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 6: $V0, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4 }, { 1: [3] }, { 3: 10, 4: 2, 5: [1, 9], 6: $V0, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4 }, { 5: [1, 11] }, { 10: 12, 20: [1, 13] }, { 15: [1, 14] }, { 17: [1, 15] }, o($V5, [2, 8]), { 20: [2, 9] }, { 3: 16, 4: 2, 6: $V0, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4 }, { 1: [2, 2] }, { 4: 21, 5: $V6, 7: 17, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 11: 34, 12: [1, 35], 22: $Vh }, o([12, 22], [2, 10]), o($V5, [2, 6]), o($V5, [2, 7]), { 1: [2, 1] }, { 8: [1, 37] }, { 4: 21, 5: $V6, 7: 38, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 4: 21, 5: $V6, 7: 39, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 4: 21, 5: $V6, 7: 40, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 4: 21, 5: $V6, 7: 41, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 4: 21, 5: $V6, 7: 42, 8: $V7, 9: 4, 14: $V1, 16: $V2, 18: $V3, 19: $V4, 23: 18, 24: 19, 25: 20, 26: 23, 32: 25, 40: $V8, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 53: $Ve, 71: $Vf, 72: $Vg }, { 27: 43, 71: [1, 44], 72: [1, 45] }, { 54: 46, 71: [1, 47], 72: [1, 48] }, { 60: [1, 49], 62: [1, 50] }, o($Vi, [2, 26]), o($Vi, [2, 27]), o($Vi, [2, 28]), o($Vi, [2, 29]), o($Vi, [2, 30]), o($Vi, [2, 31]), o($Vj, [2, 55]), o($Vj, [2, 56]), o($V5, [2, 4]), { 13: 51, 21: [1, 52] }, o($V5, [2, 12]), { 1: [2, 3] }, { 8: [2, 14] }, { 8: [2, 15] }, { 8: [2, 16] }, { 8: [2, 17] }, { 8: [2, 18] }, { 28: [1, 53] }, { 28: [2, 53] }, { 28: [2, 54] }, { 28: [1, 54] }, { 28: [2, 59] }, { 28: [2, 60] }, { 61: 55, 64: $Vk, 65: $Vl, 66: $Vm, 67: $Vn, 68: $Vo, 69: $Vp, 70: $Vq }, { 61: 63, 64: $Vk, 65: $Vl, 66: $Vm, 67: $Vn, 68: $Vo, 69: $Vp, 70: $Vq }, { 11: 64, 22: $Vh }, { 22: [2, 11] }, { 5: [1, 65] }, { 5: [1, 66] }, { 62: [1, 67] }, o($Vr, [2, 46]), o($Vr, [2, 47]), o($Vr, [2, 48]), o($Vr, [2, 49]), o($Vr, [2, 50]), o($Vr, [2, 51]), o($Vr, [2, 52]), { 63: [1, 68] }, o($V5, [2, 5]), { 5: $Vs, 29: 69, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, { 5: $Vy, 39: $Vz, 55: 76, 56: $VA, 58: $VB }, { 32: 81, 71: $Vf, 72: $Vg }, { 32: 82, 71: $Vf, 72: $Vg }, o($VC, [2, 19]), { 31: [1, 83] }, { 31: [1, 84] }, { 31: [1, 85] }, { 31: [1, 86] }, { 5: $Vs, 29: 87, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, o($VC, [2, 25]), o($VC, [2, 39]), { 31: [1, 88] }, { 31: [1, 89] }, { 5: $Vy, 39: $Vz, 55: 90, 56: $VA, 58: $VB }, o($VC, [2, 43]), o($VC, [2, 44]), o($VC, [2, 45]), { 32: 91, 71: $Vf, 72: $Vg }, { 34: 92, 71: [1, 93], 72: [1, 94] }, { 36: 95, 46: [1, 96], 47: [1, 97], 48: [1, 98] }, { 38: 99, 49: [1, 100], 50: [1, 101], 51: [1, 102], 52: [1, 103] }, o($VC, [2, 24]), { 57: 104, 71: [1, 105], 72: [1, 106] }, { 59: 107, 71: [1, 108], 72: [1, 109] }, o($VC, [2, 42]), { 5: [1, 110] }, { 5: [1, 111] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: [1, 112] }, { 5: [2, 32] }, { 5: [2, 33] }, { 5: [2, 34] }, { 5: [1, 113] }, { 5: [2, 35] }, { 5: [2, 36] }, { 5: [2, 37] }, { 5: [2, 38] }, { 5: [1, 114] }, { 5: [2, 61] }, { 5: [2, 62] }, { 5: [1, 115] }, { 5: [2, 63] }, { 5: [2, 64] }, { 5: $Vs, 29: 116, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, { 5: $Vs, 29: 117, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, { 5: $Vs, 29: 118, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, { 5: $Vs, 29: 119, 30: $Vt, 33: $Vu, 35: $Vv, 37: $Vw, 39: $Vx }, { 5: $Vy, 39: $Vz, 55: 120, 56: $VA, 58: $VB }, { 5: $Vy, 39: $Vz, 55: 121, 56: $VA, 58: $VB }, o($VC, [2, 20]), o($VC, [2, 21]), o($VC, [2, 22]), o($VC, [2, 23]), o($VC, [2, 40]), o($VC, [2, 41])],\n defaultActions: { 8: [2, 9], 10: [2, 2], 16: [2, 1], 37: [2, 3], 38: [2, 14], 39: [2, 15], 40: [2, 16], 41: [2, 17], 42: [2, 18], 44: [2, 53], 45: [2, 54], 47: [2, 59], 48: [2, 60], 52: [2, 11], 93: [2, 57], 94: [2, 58], 96: [2, 32], 97: [2, 33], 98: [2, 34], 100: [2, 35], 101: [2, 36], 102: [2, 37], 103: [2, 38], 105: [2, 61], 106: [2, 62], 108: [2, 63], 109: [2, 64] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 19;\n case 1:\n this.begin(\"type_directive\");\n return 20;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 12;\n case 3:\n this.popState();\n this.popState();\n return 22;\n case 4:\n return 21;\n case 5:\n return \"title\";\n case 6:\n this.begin(\"acc_title\");\n return 14;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 16;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 5;\n case 14:\n break;\n case 15:\n break;\n case 16:\n break;\n case 17:\n return 8;\n case 18:\n return 6;\n case 19:\n return 28;\n case 20:\n return 39;\n case 21:\n return 31;\n case 22:\n return 30;\n case 23:\n return 33;\n case 24:\n return 35;\n case 25:\n return 37;\n case 26:\n return 40;\n case 27:\n return 41;\n case 28:\n return 42;\n case 29:\n return 43;\n case 30:\n return 44;\n case 31:\n return 45;\n case 32:\n return 46;\n case 33:\n return 47;\n case 34:\n return 48;\n case 35:\n return 49;\n case 36:\n return 50;\n case 37:\n return 51;\n case 38:\n return 52;\n case 39:\n return 53;\n case 40:\n return 64;\n case 41:\n return 65;\n case 42:\n return 66;\n case 43:\n return 67;\n case 44:\n return 68;\n case 45:\n return 69;\n case 46:\n return 70;\n case 47:\n return 56;\n case 48:\n return 58;\n case 49:\n return 60;\n case 50:\n return 63;\n case 51:\n return 62;\n case 52:\n this.begin(\"string\");\n break;\n case 53:\n this.popState();\n break;\n case 54:\n return \"qString\";\n case 55:\n yy_.yytext = yy_.yytext.trim();\n return 71;\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\\b)/i, /^(?:\\{)/i, /^(?:\\})/i, /^(?::)/i, /^(?:id\\b)/i, /^(?:text\\b)/i, /^(?:risk\\b)/i, /^(?:verifyMethod\\b)/i, /^(?:requirement\\b)/i, /^(?:functionalRequirement\\b)/i, /^(?:interfaceRequirement\\b)/i, /^(?:performanceRequirement\\b)/i, /^(?:physicalRequirement\\b)/i, /^(?:designConstraint\\b)/i, /^(?:low\\b)/i, /^(?:medium\\b)/i, /^(?:high\\b)/i, /^(?:analysis\\b)/i, /^(?:demonstration\\b)/i, /^(?:inspection\\b)/i, /^(?:test\\b)/i, /^(?:element\\b)/i, /^(?:contains\\b)/i, /^(?:copies\\b)/i, /^(?:derives\\b)/i, /^(?:satisfies\\b)/i, /^(?:verifies\\b)/i, /^(?:refines\\b)/i, /^(?:traces\\b)/i, /^(?:type\\b)/i, /^(?:docref\\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"close_directive\": { \"rules\": [], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"unqString\": { \"rules\": [], \"inclusive\": false }, \"token\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [53, 54], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 55], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet relations = [];\nlet latestRequirement = {};\nlet requirements = {};\nlet latestElement = {};\nlet elements = {};\nconst RequirementType = {\n REQUIREMENT: \"Requirement\",\n FUNCTIONAL_REQUIREMENT: \"Functional Requirement\",\n INTERFACE_REQUIREMENT: \"Interface Requirement\",\n PERFORMANCE_REQUIREMENT: \"Performance Requirement\",\n PHYSICAL_REQUIREMENT: \"Physical Requirement\",\n DESIGN_CONSTRAINT: \"Design Constraint\"\n};\nconst RiskLevel = {\n LOW_RISK: \"Low\",\n MED_RISK: \"Medium\",\n HIGH_RISK: \"High\"\n};\nconst VerifyType = {\n VERIFY_ANALYSIS: \"Analysis\",\n VERIFY_DEMONSTRATION: \"Demonstration\",\n VERIFY_INSPECTION: \"Inspection\",\n VERIFY_TEST: \"Test\"\n};\nconst Relationships = {\n CONTAINS: \"contains\",\n COPIES: \"copies\",\n DERIVES: \"derives\",\n SATISFIES: \"satisfies\",\n VERIFIES: \"verifies\",\n REFINES: \"refines\",\n TRACES: \"traces\"\n};\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.m.parseDirective(this, statement, context, type);\n};\nconst addRequirement = (name, type) => {\n if (requirements[name] === void 0) {\n requirements[name] = {\n name,\n type,\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod\n };\n }\n latestRequirement = {};\n return requirements[name];\n};\nconst getRequirements = () => requirements;\nconst setNewReqId = (id) => {\n if (latestRequirement !== void 0) {\n latestRequirement.id = id;\n }\n};\nconst setNewReqText = (text) => {\n if (latestRequirement !== void 0) {\n latestRequirement.text = text;\n }\n};\nconst setNewReqRisk = (risk) => {\n if (latestRequirement !== void 0) {\n latestRequirement.risk = risk;\n }\n};\nconst setNewReqVerifyMethod = (verifyMethod) => {\n if (latestRequirement !== void 0) {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\nconst addElement = (name) => {\n if (elements[name] === void 0) {\n elements[name] = {\n name,\n type: latestElement.type,\n docRef: latestElement.docRef\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Added new requirement: \", name);\n }\n latestElement = {};\n return elements[name];\n};\nconst getElements = () => elements;\nconst setNewElementType = (type) => {\n if (latestElement !== void 0) {\n latestElement.type = type;\n }\n};\nconst setNewElementDocRef = (docRef) => {\n if (latestElement !== void 0) {\n latestElement.docRef = docRef;\n }\n};\nconst addRelationship = (type, src, dst) => {\n relations.push({\n type,\n src,\n dst\n });\n};\nconst getRelationships = () => relations;\nconst clear = () => {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.v)();\n};\nconst db = {\n RequirementType,\n RiskLevel,\n VerifyType,\n Relationships,\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().req,\n addRequirement,\n getRequirements,\n setNewReqId,\n setNewReqText,\n setNewReqRisk,\n setNewReqVerifyMethod,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.g,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.b,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.a,\n addElement,\n getElements,\n setNewElementType,\n setNewElementDocRef,\n addRelationship,\n getRelationships,\n clear\n};\nconst getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n\n`;\nconst styles = getStyles;\nconst ReqMarkers = {\n CONTAINS: \"contains\",\n ARROW: \"arrow\"\n};\nconst insertLineEndings = (parentNode, conf2) => {\n let containsNode = parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.CONTAINS + \"_line_ending\").attr(\"refX\", 0).attr(\"refY\", conf2.line_height / 2).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"g\");\n containsNode.append(\"circle\").attr(\"cx\", conf2.line_height / 2).attr(\"cy\", conf2.line_height / 2).attr(\"r\", conf2.line_height / 2).attr(\"fill\", \"none\");\n containsNode.append(\"line\").attr(\"x1\", 0).attr(\"x2\", conf2.line_height).attr(\"y1\", conf2.line_height / 2).attr(\"y2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n containsNode.append(\"line\").attr(\"y1\", 0).attr(\"y2\", conf2.line_height).attr(\"x1\", conf2.line_height / 2).attr(\"x2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.ARROW + \"_line_ending\").attr(\"refX\", conf2.line_height).attr(\"refY\", 0.5 * conf2.line_height).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"path\").attr(\n \"d\",\n `M0,0\n L${conf2.line_height},${conf2.line_height / 2}\n M${conf2.line_height},${conf2.line_height / 2}\n L0,${conf2.line_height}`\n ).attr(\"stroke-width\", 1);\n};\nconst markers = {\n ReqMarkers,\n insertLineEndings\n};\nlet conf = {};\nlet relCnt = 0;\nconst newRectNode = (parentNode, id) => {\n return parentNode.insert(\"rect\", \"#\" + id).attr(\"class\", \"req reqBox\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", conf.rect_min_width + \"px\").attr(\"height\", conf.rect_min_height + \"px\");\n};\nconst newTitleNode = (parentNode, id, txts) => {\n let x = conf.rect_min_width / 2;\n let title = parentNode.append(\"text\").attr(\"class\", \"req reqLabel reqTitle\").attr(\"id\", id).attr(\"x\", x).attr(\"y\", conf.rect_padding).attr(\"dominant-baseline\", \"hanging\");\n let i = 0;\n txts.forEach((textStr) => {\n if (i == 0) {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", 0).text(textStr);\n } else {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", conf.line_height * 0.75).text(textStr);\n }\n i++;\n });\n let yPadding = 1.5 * conf.rect_padding;\n let linePadding = i * conf.line_height * 0.75;\n let totalY = yPadding + linePadding;\n parentNode.append(\"line\").attr(\"class\", \"req-title-line\").attr(\"x1\", \"0\").attr(\"x2\", conf.rect_min_width).attr(\"y1\", totalY).attr(\"y2\", totalY);\n return {\n titleNode: title,\n y: totalY\n };\n};\nconst newBodyNode = (parentNode, id, txts, yStart) => {\n let body = parentNode.append(\"text\").attr(\"class\", \"req reqLabel\").attr(\"id\", id).attr(\"x\", conf.rect_padding).attr(\"y\", yStart).attr(\"dominant-baseline\", \"hanging\");\n let currentRow = 0;\n const charLimit = 30;\n let wrappedTxts = [];\n txts.forEach((textStr) => {\n let currentTextLen = textStr.length;\n while (currentTextLen > charLimit && currentRow < 3) {\n let firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n if (currentRow == 3) {\n let lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + \"...\";\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n currentRow = 0;\n });\n wrappedTxts.forEach((textStr) => {\n body.append(\"tspan\").attr(\"x\", conf.rect_padding).attr(\"dy\", conf.line_height).text(textStr);\n });\n return body;\n};\nconst addEdgeLabel = (parentNode, svgPath, conf2, txt) => {\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n relCnt++;\n const labelNode = parentNode.append(\"text\").attr(\"class\", \"req relationshipLabel\").attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(txt);\n const labelBBox = labelNode.node().getBBox();\n parentNode.insert(\"rect\", \"#\" + labelId).attr(\"class\", \"req reqLabelBox\").attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height).attr(\"fill\", \"white\").attr(\"fill-opacity\", \"85%\");\n};\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n const edge = g.edge(elementString(rel.src), elementString(rel.dst));\n const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_0__.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n });\n const svgPath = svg.insert(\"path\", \"#\" + insert).attr(\"class\", \"er relationshipLine\").attr(\"d\", lineFunction(edge.points)).attr(\"fill\", \"none\");\n if (rel.type == diagObj.db.Relationships.CONTAINS) {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.getUrl(conf.arrowMarkerAbsolute) + \"#\" + rel.type + \"_line_ending)\"\n );\n } else {\n svgPath.attr(\"stroke-dasharray\", \"10,7\");\n svgPath.attr(\n \"marker-end\",\n \"url(\" + _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.getUrl(conf.arrowMarkerAbsolute) + \"#\" + markers.ReqMarkers.ARROW + \"_line_ending)\"\n );\n }\n addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`);\n return;\n};\nconst drawReqs = (reqs, graph, svgNode) => {\n Object.keys(reqs).forEach((reqName) => {\n let req = reqs[reqName];\n reqName = elementString(reqName);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Added new requirement: \", reqName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", reqName);\n const textId = \"req-\" + reqName;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, reqName + \"_title\", [\n `<<${req.type}>>`,\n `${req.name}`\n ]);\n newBodyNode(\n groupNode,\n reqName + \"_body\",\n [\n `Id: ${req.id}`,\n `Text: ${req.text}`,\n `Risk: ${req.risk}`,\n `Verification: ${req.verifyMethod}`\n ],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: reqName\n });\n });\n};\nconst drawElements = (els, graph, svgNode) => {\n Object.keys(els).forEach((elName) => {\n let el = els[elName];\n const id = elementString(elName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", id);\n const textId = \"element-\" + id;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, textId + \"_title\", [`<>`, `${elName}`]);\n newBodyNode(\n groupNode,\n textId + \"_body\",\n [`Type: ${el.type || \"Not Specified\"}`, `Doc Ref: ${el.docRef || \"None\"}`],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id\n });\n });\n};\nconst addRelationships = (relationships, g) => {\n relationships.forEach(function(r) {\n let src = elementString(r.src);\n let dst = elementString(r.dst);\n g.setEdge(src, dst, { relationship: r });\n });\n return relationships;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v);\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n return;\n};\nconst elementString = (str) => {\n return str.replace(/\\s/g, \"\").replace(/\\./g, \"_\");\n};\nconst draw = (text, id, _version, diagObj) => {\n conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().requirement;\n diagObj.db.clear();\n diagObj.parser.parse(text);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(`[id='${id}']`);\n markers.insertLineEndings(svg, conf);\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__.Graph({\n multigraph: false,\n compound: false,\n directed: true\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let requirements2 = diagObj.db.getRequirements();\n let elements2 = diagObj.db.getElements();\n let relationships = diagObj.db.getRelationships();\n drawReqs(requirements2, g, svg);\n drawElements(elements2, g, svg);\n addRelationships(relationships, g);\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__.layout)(g);\n adjustEntities(svg, g);\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, id, diagObj);\n });\n const padding = conf.rect_padding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.i)(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9yZXF1aXJlbWVudERpYWdyYW0tMTljOTk1ODguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXdOO0FBQ3RMO0FBQ3NCO0FBQ007QUFDM0M7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQixzeUNBQXN5QztBQUN0ekMsa0JBQWtCLGs0QkFBazRCO0FBQ3A1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGNBQWMsOERBQThELElBQUksUUFBUSxJQUFJLDBFQUEwRSxJQUFJLFlBQVksSUFBSSxxQkFBcUIsSUFBSSxhQUFhLElBQUksYUFBYSxvQkFBb0IsWUFBWSxJQUFJLCtEQUErRCxJQUFJLFdBQVcsSUFBSSxpTUFBaU0sSUFBSSw4QkFBOEIsMERBQTBELFdBQVcsSUFBSSxZQUFZLElBQUksaU1BQWlNLElBQUksaU1BQWlNLElBQUksaU1BQWlNLElBQUksaU1BQWlNLElBQUksaU1BQWlNLElBQUksa0NBQWtDLElBQUksa0NBQWtDLElBQUksMEJBQTBCLDRKQUE0SixxQkFBcUIscUJBQXFCLFdBQVcsSUFBSSxZQUFZLElBQUksWUFBWSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksWUFBWSxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLHVFQUF1RSxJQUFJLHVFQUF1RSxJQUFJLGlCQUFpQixJQUFJLGFBQWEsSUFBSSxZQUFZLElBQUksWUFBWSxJQUFJLGFBQWEsMkhBQTJILGFBQWEsb0JBQW9CLDZEQUE2RCxJQUFJLDJDQUEyQyxJQUFJLDBCQUEwQixJQUFJLDBCQUEwQixxQkFBcUIsYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLDZEQUE2RCxzQ0FBc0MsYUFBYSxJQUFJLGFBQWEsSUFBSSwyQ0FBMkMsdURBQXVELDBCQUEwQixJQUFJLGtDQUFrQyxJQUFJLCtDQUErQyxJQUFJLGdFQUFnRSxxQkFBcUIscUNBQXFDLElBQUkscUNBQXFDLHFCQUFxQixhQUFhLElBQUksYUFBYSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksYUFBYSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksWUFBWSxJQUFJLGFBQWEsSUFBSSxZQUFZLElBQUksWUFBWSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksYUFBYSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksYUFBYSxJQUFJLFlBQVksSUFBSSxZQUFZLElBQUksOERBQThELElBQUksOERBQThELElBQUksOERBQThELElBQUksOERBQThELElBQUksNENBQTRDLElBQUksNENBQTRDO0FBQ242SCxzQkFBc0Isa1dBQWtXO0FBQ3hYO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNGQUFzRixPQUFPO0FBQzdGO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkIsZUFBZSxvQkFBb0I7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpQkFBaUI7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyx1REFBUztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDBDQUFNO0FBQzNCO0FBQ0EsNkNBQTZDLDBDQUFNLG1EQUFtRCwwQ0FBTTtBQUM1RyxrQ0FBa0MsR0FBRztBQUNyQztBQUNBLGdCQUFnQixvRUFBYztBQUM5QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0VBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFnQjtBQUNsQix5QkFBeUIsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLE9BQU87QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L3JlcXVpcmVtZW50RGlhZ3JhbS0xOWM5OTU4OC5qcz9iM2RiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBnIGFzIGdldEFjY1RpdGxlLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBtIGFzIG1lcm1haWRBUEksIGwgYXMgbG9nLCB2IGFzIGNsZWFyJDEsIGkgYXMgY29uZmlndXJlU3ZnU2l6ZSwgZSBhcyBjb21tb24gfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIGxpbmUgfSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7IGxheW91dCB9IGZyb20gXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIGdyYXBobGliIGZyb20gXCJkYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvaW5kZXguanNcIjtcbmltcG9ydCBcInRzLWRlZGVudFwiO1xuaW1wb3J0IFwiZGF5anNcIjtcbmltcG9ydCBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCAzXSwgJFYxID0gWzEsIDVdLCAkVjIgPSBbMSwgNl0sICRWMyA9IFsxLCA3XSwgJFY0ID0gWzEsIDhdLCAkVjUgPSBbNSwgNiwgOCwgMTQsIDE2LCAxOCwgMTksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDUzLCA3MSwgNzJdLCAkVjYgPSBbMSwgMjJdLCAkVjcgPSBbMiwgMTNdLCAkVjggPSBbMSwgMjZdLCAkVjkgPSBbMSwgMjddLCAkVmEgPSBbMSwgMjhdLCAkVmIgPSBbMSwgMjldLCAkVmMgPSBbMSwgMzBdLCAkVmQgPSBbMSwgMzFdLCAkVmUgPSBbMSwgMjRdLCAkVmYgPSBbMSwgMzJdLCAkVmcgPSBbMSwgMzNdLCAkVmggPSBbMSwgMzZdLCAkVmkgPSBbNzEsIDcyXSwgJFZqID0gWzUsIDgsIDE0LCAxNiwgMTgsIDE5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA1MywgNjAsIDYyLCA3MSwgNzJdLCAkVmsgPSBbMSwgNTZdLCAkVmwgPSBbMSwgNTddLCAkVm0gPSBbMSwgNThdLCAkVm4gPSBbMSwgNTldLCAkVm8gPSBbMSwgNjBdLCAkVnAgPSBbMSwgNjFdLCAkVnEgPSBbMSwgNjJdLCAkVnIgPSBbNjIsIDYzXSwgJFZzID0gWzEsIDc0XSwgJFZ0ID0gWzEsIDcwXSwgJFZ1ID0gWzEsIDcxXSwgJFZ2ID0gWzEsIDcyXSwgJFZ3ID0gWzEsIDczXSwgJFZ4ID0gWzEsIDc1XSwgJFZ5ID0gWzEsIDc5XSwgJFZ6ID0gWzEsIDgwXSwgJFZBID0gWzEsIDc3XSwgJFZCID0gWzEsIDc4XSwgJFZDID0gWzUsIDgsIDE0LCAxNiwgMTgsIDE5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA1MywgNzEsIDcyXTtcbiAgdmFyIHBhcnNlcjIgPSB7XG4gICAgdHJhY2U6IGZ1bmN0aW9uIHRyYWNlKCkge1xuICAgIH0sXG4gICAgeXk6IHt9LFxuICAgIHN5bWJvbHNfOiB7IFwiZXJyb3JcIjogMiwgXCJzdGFydFwiOiAzLCBcImRpcmVjdGl2ZVwiOiA0LCBcIk5FV0xJTkVcIjogNSwgXCJSRFwiOiA2LCBcImRpYWdyYW1cIjogNywgXCJFT0ZcIjogOCwgXCJvcGVuRGlyZWN0aXZlXCI6IDksIFwidHlwZURpcmVjdGl2ZVwiOiAxMCwgXCJjbG9zZURpcmVjdGl2ZVwiOiAxMSwgXCI6XCI6IDEyLCBcImFyZ0RpcmVjdGl2ZVwiOiAxMywgXCJhY2NfdGl0bGVcIjogMTQsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDE1LCBcImFjY19kZXNjclwiOiAxNiwgXCJhY2NfZGVzY3JfdmFsdWVcIjogMTcsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAxOCwgXCJvcGVuX2RpcmVjdGl2ZVwiOiAxOSwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiAyMCwgXCJhcmdfZGlyZWN0aXZlXCI6IDIxLCBcImNsb3NlX2RpcmVjdGl2ZVwiOiAyMiwgXCJyZXF1aXJlbWVudERlZlwiOiAyMywgXCJlbGVtZW50RGVmXCI6IDI0LCBcInJlbGF0aW9uc2hpcERlZlwiOiAyNSwgXCJyZXF1aXJlbWVudFR5cGVcIjogMjYsIFwicmVxdWlyZW1lbnROYW1lXCI6IDI3LCBcIlNUUlVDVF9TVEFSVFwiOiAyOCwgXCJyZXF1aXJlbWVudEJvZHlcIjogMjksIFwiSURcIjogMzAsIFwiQ09MT05TRVBcIjogMzEsIFwiaWRcIjogMzIsIFwiVEVYVFwiOiAzMywgXCJ0ZXh0XCI6IDM0LCBcIlJJU0tcIjogMzUsIFwicmlza0xldmVsXCI6IDM2LCBcIlZFUklGWU1USERcIjogMzcsIFwidmVyaWZ5VHlwZVwiOiAzOCwgXCJTVFJVQ1RfU1RPUFwiOiAzOSwgXCJSRVFVSVJFTUVOVFwiOiA0MCwgXCJGVU5DVElPTkFMX1JFUVVJUkVNRU5UXCI6IDQxLCBcIklOVEVSRkFDRV9SRVFVSVJFTUVOVFwiOiA0MiwgXCJQRVJGT1JNQU5DRV9SRVFVSVJFTUVOVFwiOiA0MywgXCJQSFlTSUNBTF9SRVFVSVJFTUVOVFwiOiA0NCwgXCJERVNJR05fQ09OU1RSQUlOVFwiOiA0NSwgXCJMT1dfUklTS1wiOiA0NiwgXCJNRURfUklTS1wiOiA0NywgXCJISUdIX1JJU0tcIjogNDgsIFwiVkVSSUZZX0FOQUxZU0lTXCI6IDQ5LCBcIlZFUklGWV9ERU1PTlNUUkFUSU9OXCI6IDUwLCBcIlZFUklGWV9JTlNQRUNUSU9OXCI6IDUxLCBcIlZFUklGWV9URVNUXCI6IDUyLCBcIkVMRU1FTlRcIjogNTMsIFwiZWxlbWVudE5hbWVcIjogNTQsIFwiZWxlbWVudEJvZHlcIjogNTUsIFwiVFlQRVwiOiA1NiwgXCJ0eXBlXCI6IDU3LCBcIkRPQ1JFRlwiOiA1OCwgXCJyZWZcIjogNTksIFwiRU5EX0FSUk9XX0xcIjogNjAsIFwicmVsYXRpb25zaGlwXCI6IDYxLCBcIkxJTkVcIjogNjIsIFwiRU5EX0FSUk9XX1JcIjogNjMsIFwiQ09OVEFJTlNcIjogNjQsIFwiQ09QSUVTXCI6IDY1LCBcIkRFUklWRVNcIjogNjYsIFwiU0FUSVNGSUVTXCI6IDY3LCBcIlZFUklGSUVTXCI6IDY4LCBcIlJFRklORVNcIjogNjksIFwiVFJBQ0VTXCI6IDcwLCBcInVucVN0cmluZ1wiOiA3MSwgXCJxU3RyaW5nXCI6IDcyLCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICB0ZXJtaW5hbHNfOiB7IDI6IFwiZXJyb3JcIiwgNTogXCJORVdMSU5FXCIsIDY6IFwiUkRcIiwgODogXCJFT0ZcIiwgMTI6IFwiOlwiLCAxNDogXCJhY2NfdGl0bGVcIiwgMTU6IFwiYWNjX3RpdGxlX3ZhbHVlXCIsIDE2OiBcImFjY19kZXNjclwiLCAxNzogXCJhY2NfZGVzY3JfdmFsdWVcIiwgMTg6IFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiLCAxOTogXCJvcGVuX2RpcmVjdGl2ZVwiLCAyMDogXCJ0eXBlX2RpcmVjdGl2ZVwiLCAyMTogXCJhcmdfZGlyZWN0aXZlXCIsIDIyOiBcImNsb3NlX2RpcmVjdGl2ZVwiLCAyODogXCJTVFJVQ1RfU1RBUlRcIiwgMzA6IFwiSURcIiwgMzE6IFwiQ09MT05TRVBcIiwgMzM6IFwiVEVYVFwiLCAzNTogXCJSSVNLXCIsIDM3OiBcIlZFUklGWU1USERcIiwgMzk6IFwiU1RSVUNUX1NUT1BcIiwgNDA6IFwiUkVRVUlSRU1FTlRcIiwgNDE6IFwiRlVOQ1RJT05BTF9SRVFVSVJFTUVOVFwiLCA0MjogXCJJTlRFUkZBQ0VfUkVRVUlSRU1FTlRcIiwgNDM6IFwiUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlRcIiwgNDQ6IFwiUEhZU0lDQUxfUkVRVUlSRU1FTlRcIiwgNDU6IFwiREVTSUdOX0NPTlNUUkFJTlRcIiwgNDY6IFwiTE9XX1JJU0tcIiwgNDc6IFwiTUVEX1JJU0tcIiwgNDg6IFwiSElHSF9SSVNLXCIsIDQ5OiBcIlZFUklGWV9BTkFMWVNJU1wiLCA1MDogXCJWRVJJRllfREVNT05TVFJBVElPTlwiLCA1MTogXCJWRVJJRllfSU5TUEVDVElPTlwiLCA1MjogXCJWRVJJRllfVEVTVFwiLCA1MzogXCJFTEVNRU5UXCIsIDU2OiBcIlRZUEVcIiwgNTg6IFwiRE9DUkVGXCIsIDYwOiBcIkVORF9BUlJPV19MXCIsIDYyOiBcIkxJTkVcIiwgNjM6IFwiRU5EX0FSUk9XX1JcIiwgNjQ6IFwiQ09OVEFJTlNcIiwgNjU6IFwiQ09QSUVTXCIsIDY2OiBcIkRFUklWRVNcIiwgNjc6IFwiU0FUSVNGSUVTXCIsIDY4OiBcIlZFUklGSUVTXCIsIDY5OiBcIlJFRklORVNcIiwgNzA6IFwiVFJBQ0VTXCIsIDcxOiBcInVucVN0cmluZ1wiLCA3MjogXCJxU3RyaW5nXCIgfSxcbiAgICBwcm9kdWN0aW9uc186IFswLCBbMywgM10sIFszLCAyXSwgWzMsIDRdLCBbNCwgM10sIFs0LCA1XSwgWzQsIDJdLCBbNCwgMl0sIFs0LCAxXSwgWzksIDFdLCBbMTAsIDFdLCBbMTMsIDFdLCBbMTEsIDFdLCBbNywgMF0sIFs3LCAyXSwgWzcsIDJdLCBbNywgMl0sIFs3LCAyXSwgWzcsIDJdLCBbMjMsIDVdLCBbMjksIDVdLCBbMjksIDVdLCBbMjksIDVdLCBbMjksIDVdLCBbMjksIDJdLCBbMjksIDFdLCBbMjYsIDFdLCBbMjYsIDFdLCBbMjYsIDFdLCBbMjYsIDFdLCBbMjYsIDFdLCBbMjYsIDFdLCBbMzYsIDFdLCBbMzYsIDFdLCBbMzYsIDFdLCBbMzgsIDFdLCBbMzgsIDFdLCBbMzgsIDFdLCBbMzgsIDFdLCBbMjQsIDVdLCBbNTUsIDVdLCBbNTUsIDVdLCBbNTUsIDJdLCBbNTUsIDFdLCBbMjUsIDVdLCBbMjUsIDVdLCBbNjEsIDFdLCBbNjEsIDFdLCBbNjEsIDFdLCBbNjEsIDFdLCBbNjEsIDFdLCBbNjEsIDFdLCBbNjEsIDFdLCBbMjcsIDFdLCBbMjcsIDFdLCBbMzIsIDFdLCBbMzIsIDFdLCBbMzQsIDFdLCBbMzQsIDFdLCBbNTQsIDFdLCBbNTQsIDFdLCBbNTcsIDFdLCBbNTcsIDFdLCBbNTksIDFdLCBbNTksIDFdXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG4gICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuICAgICAgc3dpdGNoICh5eXN0YXRlKSB7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY1RpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS50cmltKCk7XG4gICAgICAgICAgeXkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwiJSV7XCIsIFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICQkWyQwXSA9ICQkWyQwXS50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKTtcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIn0lJVwiLCBcImNsb3NlX2RpcmVjdGl2ZVwiLCBcInBpZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICB5eS5hZGRSZXF1aXJlbWVudCgkJFskMCAtIDNdLCAkJFskMCAtIDRdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB5eS5zZXROZXdSZXFJZCgkJFskMCAtIDJdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICB5eS5zZXROZXdSZXFUZXh0KCQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgIHl5LnNldE5ld1JlcVJpc2soJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgeXkuc2V0TmV3UmVxVmVyaWZ5TWV0aG9kKCQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LlJlcXVpcmVtZW50VHlwZS5SRVFVSVJFTUVOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZXF1aXJlbWVudFR5cGUuRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZXF1aXJlbWVudFR5cGUuSU5URVJGQUNFX1JFUVVJUkVNRU5UO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LlJlcXVpcmVtZW50VHlwZS5QRVJGT1JNQU5DRV9SRVFVSVJFTUVOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZXF1aXJlbWVudFR5cGUuUEhZU0lDQUxfUkVRVUlSRU1FTlQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzE6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmVxdWlyZW1lbnRUeXBlLkRFU0lHTl9DT05TVFJBSU5UO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgIHRoaXMuJCA9IHl5LlJpc2tMZXZlbC5MT1dfUklTSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SaXNrTGV2ZWwuTUVEX1JJU0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmlza0xldmVsLkhJR0hfUklTSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5WZXJpZnlUeXBlLlZFUklGWV9BTkFMWVNJUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNjpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5WZXJpZnlUeXBlLlZFUklGWV9ERU1PTlNUUkFUSU9OO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LlZlcmlmeVR5cGUuVkVSSUZZX0lOU1BFQ1RJT047XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgdGhpcy4kID0geXkuVmVyaWZ5VHlwZS5WRVJJRllfVEVTVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICB5eS5hZGRFbGVtZW50KCQkWyQwIC0gM10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgIHl5LnNldE5ld0VsZW1lbnRUeXBlKCQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgIHl5LnNldE5ld0VsZW1lbnREb2NSZWYoJCRbJDAgLSAyXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgeXkuYWRkUmVsYXRpb25zaGlwKCQkWyQwIC0gMl0sICQkWyQwXSwgJCRbJDAgLSA0XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgeXkuYWRkUmVsYXRpb25zaGlwKCQkWyQwIC0gMl0sICQkWyQwIC0gNF0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmVsYXRpb25zaGlwcy5DT05UQUlOUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NzpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZWxhdGlvbnNoaXBzLkNPUElFUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZWxhdGlvbnNoaXBzLkRFUklWRVM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDk6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmVsYXRpb25zaGlwcy5TQVRJU0ZJRVM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmVsYXRpb25zaGlwcy5WRVJJRklFUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5SZWxhdGlvbnNoaXBzLlJFRklORVM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTI6XG4gICAgICAgICAgdGhpcy4kID0geXkuUmVsYXRpb25zaGlwcy5UUkFDRVM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogMiwgNjogJFYwLCA5OiA0LCAxNDogJFYxLCAxNjogJFYyLCAxODogJFYzLCAxOTogJFY0IH0sIHsgMTogWzNdIH0sIHsgMzogMTAsIDQ6IDIsIDU6IFsxLCA5XSwgNjogJFYwLCA5OiA0LCAxNDogJFYxLCAxNjogJFYyLCAxODogJFYzLCAxOTogJFY0IH0sIHsgNTogWzEsIDExXSB9LCB7IDEwOiAxMiwgMjA6IFsxLCAxM10gfSwgeyAxNTogWzEsIDE0XSB9LCB7IDE3OiBbMSwgMTVdIH0sIG8oJFY1LCBbMiwgOF0pLCB7IDIwOiBbMiwgOV0gfSwgeyAzOiAxNiwgNDogMiwgNjogJFYwLCA5OiA0LCAxNDogJFYxLCAxNjogJFYyLCAxODogJFYzLCAxOTogJFY0IH0sIHsgMTogWzIsIDJdIH0sIHsgNDogMjEsIDU6ICRWNiwgNzogMTcsIDg6ICRWNywgOTogNCwgMTQ6ICRWMSwgMTY6ICRWMiwgMTg6ICRWMywgMTk6ICRWNCwgMjM6IDE4LCAyNDogMTksIDI1OiAyMCwgMjY6IDIzLCAzMjogMjUsIDQwOiAkVjgsIDQxOiAkVjksIDQyOiAkVmEsIDQzOiAkVmIsIDQ0OiAkVmMsIDQ1OiAkVmQsIDUzOiAkVmUsIDcxOiAkVmYsIDcyOiAkVmcgfSwgeyAxMTogMzQsIDEyOiBbMSwgMzVdLCAyMjogJFZoIH0sIG8oWzEyLCAyMl0sIFsyLCAxMF0pLCBvKCRWNSwgWzIsIDZdKSwgbygkVjUsIFsyLCA3XSksIHsgMTogWzIsIDFdIH0sIHsgODogWzEsIDM3XSB9LCB7IDQ6IDIxLCA1OiAkVjYsIDc6IDM4LCA4OiAkVjcsIDk6IDQsIDE0OiAkVjEsIDE2OiAkVjIsIDE4OiAkVjMsIDE5OiAkVjQsIDIzOiAxOCwgMjQ6IDE5LCAyNTogMjAsIDI2OiAyMywgMzI6IDI1LCA0MDogJFY4LCA0MTogJFY5LCA0MjogJFZhLCA0MzogJFZiLCA0NDogJFZjLCA0NTogJFZkLCA1MzogJFZlLCA3MTogJFZmLCA3MjogJFZnIH0sIHsgNDogMjEsIDU6ICRWNiwgNzogMzksIDg6ICRWNywgOTogNCwgMTQ6ICRWMSwgMTY6ICRWMiwgMTg6ICRWMywgMTk6ICRWNCwgMjM6IDE4LCAyNDogMTksIDI1OiAyMCwgMjY6IDIzLCAzMjogMjUsIDQwOiAkVjgsIDQxOiAkVjksIDQyOiAkVmEsIDQzOiAkVmIsIDQ0OiAkVmMsIDQ1OiAkVmQsIDUzOiAkVmUsIDcxOiAkVmYsIDcyOiAkVmcgfSwgeyA0OiAyMSwgNTogJFY2LCA3OiA0MCwgODogJFY3LCA5OiA0LCAxNDogJFYxLCAxNjogJFYyLCAxODogJFYzLCAxOTogJFY0LCAyMzogMTgsIDI0OiAxOSwgMjU6IDIwLCAyNjogMjMsIDMyOiAyNSwgNDA6ICRWOCwgNDE6ICRWOSwgNDI6ICRWYSwgNDM6ICRWYiwgNDQ6ICRWYywgNDU6ICRWZCwgNTM6ICRWZSwgNzE6ICRWZiwgNzI6ICRWZyB9LCB7IDQ6IDIxLCA1OiAkVjYsIDc6IDQxLCA4OiAkVjcsIDk6IDQsIDE0OiAkVjEsIDE2OiAkVjIsIDE4OiAkVjMsIDE5OiAkVjQsIDIzOiAxOCwgMjQ6IDE5LCAyNTogMjAsIDI2OiAyMywgMzI6IDI1LCA0MDogJFY4LCA0MTogJFY5LCA0MjogJFZhLCA0MzogJFZiLCA0NDogJFZjLCA0NTogJFZkLCA1MzogJFZlLCA3MTogJFZmLCA3MjogJFZnIH0sIHsgNDogMjEsIDU6ICRWNiwgNzogNDIsIDg6ICRWNywgOTogNCwgMTQ6ICRWMSwgMTY6ICRWMiwgMTg6ICRWMywgMTk6ICRWNCwgMjM6IDE4LCAyNDogMTksIDI1OiAyMCwgMjY6IDIzLCAzMjogMjUsIDQwOiAkVjgsIDQxOiAkVjksIDQyOiAkVmEsIDQzOiAkVmIsIDQ0OiAkVmMsIDQ1OiAkVmQsIDUzOiAkVmUsIDcxOiAkVmYsIDcyOiAkVmcgfSwgeyAyNzogNDMsIDcxOiBbMSwgNDRdLCA3MjogWzEsIDQ1XSB9LCB7IDU0OiA0NiwgNzE6IFsxLCA0N10sIDcyOiBbMSwgNDhdIH0sIHsgNjA6IFsxLCA0OV0sIDYyOiBbMSwgNTBdIH0sIG8oJFZpLCBbMiwgMjZdKSwgbygkVmksIFsyLCAyN10pLCBvKCRWaSwgWzIsIDI4XSksIG8oJFZpLCBbMiwgMjldKSwgbygkVmksIFsyLCAzMF0pLCBvKCRWaSwgWzIsIDMxXSksIG8oJFZqLCBbMiwgNTVdKSwgbygkVmosIFsyLCA1Nl0pLCBvKCRWNSwgWzIsIDRdKSwgeyAxMzogNTEsIDIxOiBbMSwgNTJdIH0sIG8oJFY1LCBbMiwgMTJdKSwgeyAxOiBbMiwgM10gfSwgeyA4OiBbMiwgMTRdIH0sIHsgODogWzIsIDE1XSB9LCB7IDg6IFsyLCAxNl0gfSwgeyA4OiBbMiwgMTddIH0sIHsgODogWzIsIDE4XSB9LCB7IDI4OiBbMSwgNTNdIH0sIHsgMjg6IFsyLCA1M10gfSwgeyAyODogWzIsIDU0XSB9LCB7IDI4OiBbMSwgNTRdIH0sIHsgMjg6IFsyLCA1OV0gfSwgeyAyODogWzIsIDYwXSB9LCB7IDYxOiA1NSwgNjQ6ICRWaywgNjU6ICRWbCwgNjY6ICRWbSwgNjc6ICRWbiwgNjg6ICRWbywgNjk6ICRWcCwgNzA6ICRWcSB9LCB7IDYxOiA2MywgNjQ6ICRWaywgNjU6ICRWbCwgNjY6ICRWbSwgNjc6ICRWbiwgNjg6ICRWbywgNjk6ICRWcCwgNzA6ICRWcSB9LCB7IDExOiA2NCwgMjI6ICRWaCB9LCB7IDIyOiBbMiwgMTFdIH0sIHsgNTogWzEsIDY1XSB9LCB7IDU6IFsxLCA2Nl0gfSwgeyA2MjogWzEsIDY3XSB9LCBvKCRWciwgWzIsIDQ2XSksIG8oJFZyLCBbMiwgNDddKSwgbygkVnIsIFsyLCA0OF0pLCBvKCRWciwgWzIsIDQ5XSksIG8oJFZyLCBbMiwgNTBdKSwgbygkVnIsIFsyLCA1MV0pLCBvKCRWciwgWzIsIDUyXSksIHsgNjM6IFsxLCA2OF0gfSwgbygkVjUsIFsyLCA1XSksIHsgNTogJFZzLCAyOTogNjksIDMwOiAkVnQsIDMzOiAkVnUsIDM1OiAkVnYsIDM3OiAkVncsIDM5OiAkVnggfSwgeyA1OiAkVnksIDM5OiAkVnosIDU1OiA3NiwgNTY6ICRWQSwgNTg6ICRWQiB9LCB7IDMyOiA4MSwgNzE6ICRWZiwgNzI6ICRWZyB9LCB7IDMyOiA4MiwgNzE6ICRWZiwgNzI6ICRWZyB9LCBvKCRWQywgWzIsIDE5XSksIHsgMzE6IFsxLCA4M10gfSwgeyAzMTogWzEsIDg0XSB9LCB7IDMxOiBbMSwgODVdIH0sIHsgMzE6IFsxLCA4Nl0gfSwgeyA1OiAkVnMsIDI5OiA4NywgMzA6ICRWdCwgMzM6ICRWdSwgMzU6ICRWdiwgMzc6ICRWdywgMzk6ICRWeCB9LCBvKCRWQywgWzIsIDI1XSksIG8oJFZDLCBbMiwgMzldKSwgeyAzMTogWzEsIDg4XSB9LCB7IDMxOiBbMSwgODldIH0sIHsgNTogJFZ5LCAzOTogJFZ6LCA1NTogOTAsIDU2OiAkVkEsIDU4OiAkVkIgfSwgbygkVkMsIFsyLCA0M10pLCBvKCRWQywgWzIsIDQ0XSksIG8oJFZDLCBbMiwgNDVdKSwgeyAzMjogOTEsIDcxOiAkVmYsIDcyOiAkVmcgfSwgeyAzNDogOTIsIDcxOiBbMSwgOTNdLCA3MjogWzEsIDk0XSB9LCB7IDM2OiA5NSwgNDY6IFsxLCA5Nl0sIDQ3OiBbMSwgOTddLCA0ODogWzEsIDk4XSB9LCB7IDM4OiA5OSwgNDk6IFsxLCAxMDBdLCA1MDogWzEsIDEwMV0sIDUxOiBbMSwgMTAyXSwgNTI6IFsxLCAxMDNdIH0sIG8oJFZDLCBbMiwgMjRdKSwgeyA1NzogMTA0LCA3MTogWzEsIDEwNV0sIDcyOiBbMSwgMTA2XSB9LCB7IDU5OiAxMDcsIDcxOiBbMSwgMTA4XSwgNzI6IFsxLCAxMDldIH0sIG8oJFZDLCBbMiwgNDJdKSwgeyA1OiBbMSwgMTEwXSB9LCB7IDU6IFsxLCAxMTFdIH0sIHsgNTogWzIsIDU3XSB9LCB7IDU6IFsyLCA1OF0gfSwgeyA1OiBbMSwgMTEyXSB9LCB7IDU6IFsyLCAzMl0gfSwgeyA1OiBbMiwgMzNdIH0sIHsgNTogWzIsIDM0XSB9LCB7IDU6IFsxLCAxMTNdIH0sIHsgNTogWzIsIDM1XSB9LCB7IDU6IFsyLCAzNl0gfSwgeyA1OiBbMiwgMzddIH0sIHsgNTogWzIsIDM4XSB9LCB7IDU6IFsxLCAxMTRdIH0sIHsgNTogWzIsIDYxXSB9LCB7IDU6IFsyLCA2Ml0gfSwgeyA1OiBbMSwgMTE1XSB9LCB7IDU6IFsyLCA2M10gfSwgeyA1OiBbMiwgNjRdIH0sIHsgNTogJFZzLCAyOTogMTE2LCAzMDogJFZ0LCAzMzogJFZ1LCAzNTogJFZ2LCAzNzogJFZ3LCAzOTogJFZ4IH0sIHsgNTogJFZzLCAyOTogMTE3LCAzMDogJFZ0LCAzMzogJFZ1LCAzNTogJFZ2LCAzNzogJFZ3LCAzOTogJFZ4IH0sIHsgNTogJFZzLCAyOTogMTE4LCAzMDogJFZ0LCAzMzogJFZ1LCAzNTogJFZ2LCAzNzogJFZ3LCAzOTogJFZ4IH0sIHsgNTogJFZzLCAyOTogMTE5LCAzMDogJFZ0LCAzMzogJFZ1LCAzNTogJFZ2LCAzNzogJFZ3LCAzOTogJFZ4IH0sIHsgNTogJFZ5LCAzOTogJFZ6LCA1NTogMTIwLCA1NjogJFZBLCA1ODogJFZCIH0sIHsgNTogJFZ5LCAzOTogJFZ6LCA1NTogMTIxLCA1NjogJFZBLCA1ODogJFZCIH0sIG8oJFZDLCBbMiwgMjBdKSwgbygkVkMsIFsyLCAyMV0pLCBvKCRWQywgWzIsIDIyXSksIG8oJFZDLCBbMiwgMjNdKSwgbygkVkMsIFsyLCA0MF0pLCBvKCRWQywgWzIsIDQxXSldLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDg6IFsyLCA5XSwgMTA6IFsyLCAyXSwgMTY6IFsyLCAxXSwgMzc6IFsyLCAzXSwgMzg6IFsyLCAxNF0sIDM5OiBbMiwgMTVdLCA0MDogWzIsIDE2XSwgNDE6IFsyLCAxN10sIDQyOiBbMiwgMThdLCA0NDogWzIsIDUzXSwgNDU6IFsyLCA1NF0sIDQ3OiBbMiwgNTldLCA0ODogWzIsIDYwXSwgNTI6IFsyLCAxMV0sIDkzOiBbMiwgNTddLCA5NDogWzIsIDU4XSwgOTY6IFsyLCAzMl0sIDk3OiBbMiwgMzNdLCA5ODogWzIsIDM0XSwgMTAwOiBbMiwgMzVdLCAxMDE6IFsyLCAzNl0sIDEwMjogWzIsIDM3XSwgMTAzOiBbMiwgMzhdLCAxMDU6IFsyLCA2MV0sIDEwNjogWzIsIDYyXSwgMTA4OiBbMiwgNjNdLCAxMDk6IFsyLCA2NF0gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxOTtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTI7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDIyO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAyMTtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gXCJ0aXRsZVwiO1xuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTQ7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjclwiKTtcbiAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgcmV0dXJuIDU7XG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICByZXR1cm4gNjtcbiAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgcmV0dXJuIDI4O1xuICAgICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgICByZXR1cm4gMzk7XG4gICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgIHJldHVybiAzMTtcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICByZXR1cm4gMzM7XG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHJldHVybiAzNTtcbiAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgcmV0dXJuIDM3O1xuICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICByZXR1cm4gNDA7XG4gICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgIHJldHVybiA0MTtcbiAgICAgICAgICBjYXNlIDI4OlxuICAgICAgICAgICAgcmV0dXJuIDQyO1xuICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICByZXR1cm4gNDM7XG4gICAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICAgIHJldHVybiA0NDtcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgcmV0dXJuIDQ1O1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICByZXR1cm4gNDY7XG4gICAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICAgIHJldHVybiA0NztcbiAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgcmV0dXJuIDQ4O1xuICAgICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgICByZXR1cm4gNDk7XG4gICAgICAgICAgY2FzZSAzNjpcbiAgICAgICAgICAgIHJldHVybiA1MDtcbiAgICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICAgcmV0dXJuIDUxO1xuICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICByZXR1cm4gNTI7XG4gICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgIHJldHVybiA1MztcbiAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgcmV0dXJuIDY0O1xuICAgICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgICByZXR1cm4gNjU7XG4gICAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICAgIHJldHVybiA2NjtcbiAgICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgICAgcmV0dXJuIDY3O1xuICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICByZXR1cm4gNjg7XG4gICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgIHJldHVybiA2OTtcbiAgICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgICAgcmV0dXJuIDcwO1xuICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICByZXR1cm4gNTY7XG4gICAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICAgIHJldHVybiA1ODtcbiAgICAgICAgICBjYXNlIDQ5OlxuICAgICAgICAgICAgcmV0dXJuIDYwO1xuICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICByZXR1cm4gNjM7XG4gICAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICAgIHJldHVybiA2MjtcbiAgICAgICAgICBjYXNlIDUyOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcInN0cmluZ1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDU0OlxuICAgICAgICAgICAgcmV0dXJuIFwicVN0cmluZ1wiO1xuICAgICAgICAgIGNhc2UgNTU6XG4gICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4gNzE7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBydWxlczogWy9eKD86JSVcXHspL2ksIC9eKD86KCg/Oig/IVxcfSUlKVteOi5dKSopKS9pLCAvXig/OjopL2ksIC9eKD86XFx9JSUpL2ksIC9eKD86KCg/Oig/IVxcfSUlKS58XFxuKSopKS9pLCAvXig/OnRpdGxlXFxzW14jXFxuO10rKS9pLCAvXig/OmFjY1RpdGxlXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKlxce1xccyopL2ksIC9eKD86W1xcfV0pL2ksIC9eKD86W15cXH1dKikvaSwgL14oPzooXFxyP1xcbikrKS9pLCAvXig/OlxccyspL2ksIC9eKD86I1teXFxuXSopL2ksIC9eKD86JVteXFxuXSopL2ksIC9eKD86JCkvaSwgL14oPzpyZXF1aXJlbWVudERpYWdyYW1cXGIpL2ksIC9eKD86XFx7KS9pLCAvXig/OlxcfSkvaSwgL14oPzo6KS9pLCAvXig/OmlkXFxiKS9pLCAvXig/OnRleHRcXGIpL2ksIC9eKD86cmlza1xcYikvaSwgL14oPzp2ZXJpZnlNZXRob2RcXGIpL2ksIC9eKD86cmVxdWlyZW1lbnRcXGIpL2ksIC9eKD86ZnVuY3Rpb25hbFJlcXVpcmVtZW50XFxiKS9pLCAvXig/OmludGVyZmFjZVJlcXVpcmVtZW50XFxiKS9pLCAvXig/OnBlcmZvcm1hbmNlUmVxdWlyZW1lbnRcXGIpL2ksIC9eKD86cGh5c2ljYWxSZXF1aXJlbWVudFxcYikvaSwgL14oPzpkZXNpZ25Db25zdHJhaW50XFxiKS9pLCAvXig/Omxvd1xcYikvaSwgL14oPzptZWRpdW1cXGIpL2ksIC9eKD86aGlnaFxcYikvaSwgL14oPzphbmFseXNpc1xcYikvaSwgL14oPzpkZW1vbnN0cmF0aW9uXFxiKS9pLCAvXig/Omluc3BlY3Rpb25cXGIpL2ksIC9eKD86dGVzdFxcYikvaSwgL14oPzplbGVtZW50XFxiKS9pLCAvXig/OmNvbnRhaW5zXFxiKS9pLCAvXig/OmNvcGllc1xcYikvaSwgL14oPzpkZXJpdmVzXFxiKS9pLCAvXig/OnNhdGlzZmllc1xcYikvaSwgL14oPzp2ZXJpZmllc1xcYikvaSwgL14oPzpyZWZpbmVzXFxiKS9pLCAvXig/OnRyYWNlc1xcYikvaSwgL14oPzp0eXBlXFxiKS9pLCAvXig/OmRvY3JlZlxcYikvaSwgL14oPzo8LSkvaSwgL14oPzotPikvaSwgL14oPzotKS9pLCAvXig/OltcIl0pL2ksIC9eKD86W1wiXSkvaSwgL14oPzpbXlwiXSopL2ksIC9eKD86W1xcd11bXlxcclxcblxce1xcPFxcPlxcLVxcPV0qKS9pXSxcbiAgICAgIGNvbmRpdGlvbnM6IHsgXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCI6IHsgXCJydWxlc1wiOiBbMTEsIDEyXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JcIjogeyBcInJ1bGVzXCI6IFs5XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFs3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjbG9zZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFtdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFyZ19kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFszLCA0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzIsIDNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm9wZW5fZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidW5xU3RyaW5nXCI6IHsgXCJydWxlc1wiOiBbXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0b2tlblwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwic3RyaW5nXCI6IHsgXCJydWxlc1wiOiBbNTMsIDU0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgNSwgNiwgOCwgMTAsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1NV0sIFwiaW5jbHVzaXZlXCI6IHRydWUgfSB9XG4gICAgfTtcbiAgICByZXR1cm4gbGV4ZXIyO1xuICB9KCk7XG4gIHBhcnNlcjIubGV4ZXIgPSBsZXhlcjtcbiAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgIHRoaXMueXkgPSB7fTtcbiAgfVxuICBQYXJzZXIucHJvdG90eXBlID0gcGFyc2VyMjtcbiAgcGFyc2VyMi5QYXJzZXIgPSBQYXJzZXI7XG4gIHJldHVybiBuZXcgUGFyc2VyKCk7XG59KCk7XG5wYXJzZXIucGFyc2VyID0gcGFyc2VyO1xuY29uc3QgcGFyc2VyJDEgPSBwYXJzZXI7XG5sZXQgcmVsYXRpb25zID0gW107XG5sZXQgbGF0ZXN0UmVxdWlyZW1lbnQgPSB7fTtcbmxldCByZXF1aXJlbWVudHMgPSB7fTtcbmxldCBsYXRlc3RFbGVtZW50ID0ge307XG5sZXQgZWxlbWVudHMgPSB7fTtcbmNvbnN0IFJlcXVpcmVtZW50VHlwZSA9IHtcbiAgUkVRVUlSRU1FTlQ6IFwiUmVxdWlyZW1lbnRcIixcbiAgRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDogXCJGdW5jdGlvbmFsIFJlcXVpcmVtZW50XCIsXG4gIElOVEVSRkFDRV9SRVFVSVJFTUVOVDogXCJJbnRlcmZhY2UgUmVxdWlyZW1lbnRcIixcbiAgUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQ6IFwiUGVyZm9ybWFuY2UgUmVxdWlyZW1lbnRcIixcbiAgUEhZU0lDQUxfUkVRVUlSRU1FTlQ6IFwiUGh5c2ljYWwgUmVxdWlyZW1lbnRcIixcbiAgREVTSUdOX0NPTlNUUkFJTlQ6IFwiRGVzaWduIENvbnN0cmFpbnRcIlxufTtcbmNvbnN0IFJpc2tMZXZlbCA9IHtcbiAgTE9XX1JJU0s6IFwiTG93XCIsXG4gIE1FRF9SSVNLOiBcIk1lZGl1bVwiLFxuICBISUdIX1JJU0s6IFwiSGlnaFwiXG59O1xuY29uc3QgVmVyaWZ5VHlwZSA9IHtcbiAgVkVSSUZZX0FOQUxZU0lTOiBcIkFuYWx5c2lzXCIsXG4gIFZFUklGWV9ERU1PTlNUUkFUSU9OOiBcIkRlbW9uc3RyYXRpb25cIixcbiAgVkVSSUZZX0lOU1BFQ1RJT046IFwiSW5zcGVjdGlvblwiLFxuICBWRVJJRllfVEVTVDogXCJUZXN0XCJcbn07XG5jb25zdCBSZWxhdGlvbnNoaXBzID0ge1xuICBDT05UQUlOUzogXCJjb250YWluc1wiLFxuICBDT1BJRVM6IFwiY29waWVzXCIsXG4gIERFUklWRVM6IFwiZGVyaXZlc1wiLFxuICBTQVRJU0ZJRVM6IFwic2F0aXNmaWVzXCIsXG4gIFZFUklGSUVTOiBcInZlcmlmaWVzXCIsXG4gIFJFRklORVM6IFwicmVmaW5lc1wiLFxuICBUUkFDRVM6IFwidHJhY2VzXCJcbn07XG5jb25zdCBwYXJzZURpcmVjdGl2ZSA9IGZ1bmN0aW9uKHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSkge1xuICBtZXJtYWlkQVBJLnBhcnNlRGlyZWN0aXZlKHRoaXMsIHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSk7XG59O1xuY29uc3QgYWRkUmVxdWlyZW1lbnQgPSAobmFtZSwgdHlwZSkgPT4ge1xuICBpZiAocmVxdWlyZW1lbnRzW25hbWVdID09PSB2b2lkIDApIHtcbiAgICByZXF1aXJlbWVudHNbbmFtZV0gPSB7XG4gICAgICBuYW1lLFxuICAgICAgdHlwZSxcbiAgICAgIGlkOiBsYXRlc3RSZXF1aXJlbWVudC5pZCxcbiAgICAgIHRleHQ6IGxhdGVzdFJlcXVpcmVtZW50LnRleHQsXG4gICAgICByaXNrOiBsYXRlc3RSZXF1aXJlbWVudC5yaXNrLFxuICAgICAgdmVyaWZ5TWV0aG9kOiBsYXRlc3RSZXF1aXJlbWVudC52ZXJpZnlNZXRob2RcbiAgICB9O1xuICB9XG4gIGxhdGVzdFJlcXVpcmVtZW50ID0ge307XG4gIHJldHVybiByZXF1aXJlbWVudHNbbmFtZV07XG59O1xuY29uc3QgZ2V0UmVxdWlyZW1lbnRzID0gKCkgPT4gcmVxdWlyZW1lbnRzO1xuY29uc3Qgc2V0TmV3UmVxSWQgPSAoaWQpID0+IHtcbiAgaWYgKGxhdGVzdFJlcXVpcmVtZW50ICE9PSB2b2lkIDApIHtcbiAgICBsYXRlc3RSZXF1aXJlbWVudC5pZCA9IGlkO1xuICB9XG59O1xuY29uc3Qgc2V0TmV3UmVxVGV4dCA9ICh0ZXh0KSA9PiB7XG4gIGlmIChsYXRlc3RSZXF1aXJlbWVudCAhPT0gdm9pZCAwKSB7XG4gICAgbGF0ZXN0UmVxdWlyZW1lbnQudGV4dCA9IHRleHQ7XG4gIH1cbn07XG5jb25zdCBzZXROZXdSZXFSaXNrID0gKHJpc2spID0+IHtcbiAgaWYgKGxhdGVzdFJlcXVpcmVtZW50ICE9PSB2b2lkIDApIHtcbiAgICBsYXRlc3RSZXF1aXJlbWVudC5yaXNrID0gcmlzaztcbiAgfVxufTtcbmNvbnN0IHNldE5ld1JlcVZlcmlmeU1ldGhvZCA9ICh2ZXJpZnlNZXRob2QpID0+IHtcbiAgaWYgKGxhdGVzdFJlcXVpcmVtZW50ICE9PSB2b2lkIDApIHtcbiAgICBsYXRlc3RSZXF1aXJlbWVudC52ZXJpZnlNZXRob2QgPSB2ZXJpZnlNZXRob2Q7XG4gIH1cbn07XG5jb25zdCBhZGRFbGVtZW50ID0gKG5hbWUpID0+IHtcbiAgaWYgKGVsZW1lbnRzW25hbWVdID09PSB2b2lkIDApIHtcbiAgICBlbGVtZW50c1tuYW1lXSA9IHtcbiAgICAgIG5hbWUsXG4gICAgICB0eXBlOiBsYXRlc3RFbGVtZW50LnR5cGUsXG4gICAgICBkb2NSZWY6IGxhdGVzdEVsZW1lbnQuZG9jUmVmXG4gICAgfTtcbiAgICBsb2cuaW5mbyhcIkFkZGVkIG5ldyByZXF1aXJlbWVudDogXCIsIG5hbWUpO1xuICB9XG4gIGxhdGVzdEVsZW1lbnQgPSB7fTtcbiAgcmV0dXJuIGVsZW1lbnRzW25hbWVdO1xufTtcbmNvbnN0IGdldEVsZW1lbnRzID0gKCkgPT4gZWxlbWVudHM7XG5jb25zdCBzZXROZXdFbGVtZW50VHlwZSA9ICh0eXBlKSA9PiB7XG4gIGlmIChsYXRlc3RFbGVtZW50ICE9PSB2b2lkIDApIHtcbiAgICBsYXRlc3RFbGVtZW50LnR5cGUgPSB0eXBlO1xuICB9XG59O1xuY29uc3Qgc2V0TmV3RWxlbWVudERvY1JlZiA9IChkb2NSZWYpID0+IHtcbiAgaWYgKGxhdGVzdEVsZW1lbnQgIT09IHZvaWQgMCkge1xuICAgIGxhdGVzdEVsZW1lbnQuZG9jUmVmID0gZG9jUmVmO1xuICB9XG59O1xuY29uc3QgYWRkUmVsYXRpb25zaGlwID0gKHR5cGUsIHNyYywgZHN0KSA9PiB7XG4gIHJlbGF0aW9ucy5wdXNoKHtcbiAgICB0eXBlLFxuICAgIHNyYyxcbiAgICBkc3RcbiAgfSk7XG59O1xuY29uc3QgZ2V0UmVsYXRpb25zaGlwcyA9ICgpID0+IHJlbGF0aW9ucztcbmNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICByZWxhdGlvbnMgPSBbXTtcbiAgbGF0ZXN0UmVxdWlyZW1lbnQgPSB7fTtcbiAgcmVxdWlyZW1lbnRzID0ge307XG4gIGxhdGVzdEVsZW1lbnQgPSB7fTtcbiAgZWxlbWVudHMgPSB7fTtcbiAgY2xlYXIkMSgpO1xufTtcbmNvbnN0IGRiID0ge1xuICBSZXF1aXJlbWVudFR5cGUsXG4gIFJpc2tMZXZlbCxcbiAgVmVyaWZ5VHlwZSxcbiAgUmVsYXRpb25zaGlwcyxcbiAgcGFyc2VEaXJlY3RpdmUsXG4gIGdldENvbmZpZzogKCkgPT4gZ2V0Q29uZmlnKCkucmVxLFxuICBhZGRSZXF1aXJlbWVudCxcbiAgZ2V0UmVxdWlyZW1lbnRzLFxuICBzZXROZXdSZXFJZCxcbiAgc2V0TmV3UmVxVGV4dCxcbiAgc2V0TmV3UmVxUmlzayxcbiAgc2V0TmV3UmVxVmVyaWZ5TWV0aG9kLFxuICBzZXRBY2NUaXRsZSxcbiAgZ2V0QWNjVGl0bGUsXG4gIHNldEFjY0Rlc2NyaXB0aW9uLFxuICBnZXRBY2NEZXNjcmlwdGlvbixcbiAgYWRkRWxlbWVudCxcbiAgZ2V0RWxlbWVudHMsXG4gIHNldE5ld0VsZW1lbnRUeXBlLFxuICBzZXROZXdFbGVtZW50RG9jUmVmLFxuICBhZGRSZWxhdGlvbnNoaXAsXG4gIGdldFJlbGF0aW9uc2hpcHMsXG4gIGNsZWFyXG59O1xuY29uc3QgZ2V0U3R5bGVzID0gKG9wdGlvbnMpID0+IGBcblxuICBtYXJrZXIge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5yZWxhdGlvbkNvbG9yfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5yZWxhdGlvbkNvbG9yfTtcbiAgfVxuXG4gIG1hcmtlci5jcm9zcyB7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgZm9udC1mYW1pbHk6ICR7b3B0aW9ucy5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6ICR7b3B0aW9ucy5mb250U2l6ZX07XG4gIH1cblxuICAucmVxQm94IHtcbiAgICBmaWxsOiAke29wdGlvbnMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfTtcbiAgICBmaWxsLW9wYWNpdHk6IDEuMDtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfTtcbiAgICBzdHJva2Utd2lkdGg6ICR7b3B0aW9ucy5yZXF1aXJlbWVudEJvcmRlclNpemV9O1xuICB9XG4gIFxuICAucmVxVGl0bGUsIC5yZXFMYWJlbHtcbiAgICBmaWxsOiAgJHtvcHRpb25zLnJlcXVpcmVtZW50VGV4dENvbG9yfTtcbiAgfVxuICAucmVxTGFiZWxCb3gge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZH07XG4gICAgZmlsbC1vcGFjaXR5OiAxLjA7XG4gIH1cblxuICAucmVxLXRpdGxlLWxpbmUge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogJHtvcHRpb25zLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZX07XG4gIH1cbiAgLnJlbGF0aW9uc2hpcExpbmUge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnJlbGF0aW9uQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogMTtcbiAgfVxuICAucmVsYXRpb25zaGlwTGFiZWwge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5yZWxhdGlvbkxhYmVsQ29sb3J9O1xuICB9XG5cbmA7XG5jb25zdCBzdHlsZXMgPSBnZXRTdHlsZXM7XG5jb25zdCBSZXFNYXJrZXJzID0ge1xuICBDT05UQUlOUzogXCJjb250YWluc1wiLFxuICBBUlJPVzogXCJhcnJvd1wiXG59O1xuY29uc3QgaW5zZXJ0TGluZUVuZGluZ3MgPSAocGFyZW50Tm9kZSwgY29uZjIpID0+IHtcbiAgbGV0IGNvbnRhaW5zTm9kZSA9IHBhcmVudE5vZGUuYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJtYXJrZXJcIikuYXR0cihcImlkXCIsIFJlcU1hcmtlcnMuQ09OVEFJTlMgKyBcIl9saW5lX2VuZGluZ1wiKS5hdHRyKFwicmVmWFwiLCAwKS5hdHRyKFwicmVmWVwiLCBjb25mMi5saW5lX2hlaWdodCAvIDIpLmF0dHIoXCJtYXJrZXJXaWR0aFwiLCBjb25mMi5saW5lX2hlaWdodCkuYXR0cihcIm1hcmtlckhlaWdodFwiLCBjb25mMi5saW5lX2hlaWdodCkuYXR0cihcIm9yaWVudFwiLCBcImF1dG9cIikuYXBwZW5kKFwiZ1wiKTtcbiAgY29udGFpbnNOb2RlLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiY3hcIiwgY29uZjIubGluZV9oZWlnaHQgLyAyKS5hdHRyKFwiY3lcIiwgY29uZjIubGluZV9oZWlnaHQgLyAyKS5hdHRyKFwiclwiLCBjb25mMi5saW5lX2hlaWdodCAvIDIpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKTtcbiAgY29udGFpbnNOb2RlLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIDApLmF0dHIoXCJ4MlwiLCBjb25mMi5saW5lX2hlaWdodCkuYXR0cihcInkxXCIsIGNvbmYyLmxpbmVfaGVpZ2h0IC8gMikuYXR0cihcInkyXCIsIGNvbmYyLmxpbmVfaGVpZ2h0IC8gMikuYXR0cihcInN0cm9rZS13aWR0aFwiLCAxKTtcbiAgY29udGFpbnNOb2RlLmFwcGVuZChcImxpbmVcIikuYXR0cihcInkxXCIsIDApLmF0dHIoXCJ5MlwiLCBjb25mMi5saW5lX2hlaWdodCkuYXR0cihcIngxXCIsIGNvbmYyLmxpbmVfaGVpZ2h0IC8gMikuYXR0cihcIngyXCIsIGNvbmYyLmxpbmVfaGVpZ2h0IC8gMikuYXR0cihcInN0cm9rZS13aWR0aFwiLCAxKTtcbiAgcGFyZW50Tm9kZS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgUmVxTWFya2Vycy5BUlJPVyArIFwiX2xpbmVfZW5kaW5nXCIpLmF0dHIoXCJyZWZYXCIsIGNvbmYyLmxpbmVfaGVpZ2h0KS5hdHRyKFwicmVmWVwiLCAwLjUgKiBjb25mMi5saW5lX2hlaWdodCkuYXR0cihcIm1hcmtlcldpZHRoXCIsIGNvbmYyLmxpbmVfaGVpZ2h0KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIGNvbmYyLmxpbmVfaGVpZ2h0KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgYE0wLDBcbiAgICAgIEwke2NvbmYyLmxpbmVfaGVpZ2h0fSwke2NvbmYyLmxpbmVfaGVpZ2h0IC8gMn1cbiAgICAgIE0ke2NvbmYyLmxpbmVfaGVpZ2h0fSwke2NvbmYyLmxpbmVfaGVpZ2h0IC8gMn1cbiAgICAgIEwwLCR7Y29uZjIubGluZV9oZWlnaHR9YFxuICApLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMSk7XG59O1xuY29uc3QgbWFya2VycyA9IHtcbiAgUmVxTWFya2VycyxcbiAgaW5zZXJ0TGluZUVuZGluZ3Ncbn07XG5sZXQgY29uZiA9IHt9O1xubGV0IHJlbENudCA9IDA7XG5jb25zdCBuZXdSZWN0Tm9kZSA9IChwYXJlbnROb2RlLCBpZCkgPT4ge1xuICByZXR1cm4gcGFyZW50Tm9kZS5pbnNlcnQoXCJyZWN0XCIsIFwiI1wiICsgaWQpLmF0dHIoXCJjbGFzc1wiLCBcInJlcSByZXFCb3hcIikuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkuYXR0cihcIndpZHRoXCIsIGNvbmYucmVjdF9taW5fd2lkdGggKyBcInB4XCIpLmF0dHIoXCJoZWlnaHRcIiwgY29uZi5yZWN0X21pbl9oZWlnaHQgKyBcInB4XCIpO1xufTtcbmNvbnN0IG5ld1RpdGxlTm9kZSA9IChwYXJlbnROb2RlLCBpZCwgdHh0cykgPT4ge1xuICBsZXQgeCA9IGNvbmYucmVjdF9taW5fd2lkdGggLyAyO1xuICBsZXQgdGl0bGUgPSBwYXJlbnROb2RlLmFwcGVuZChcInRleHRcIikuYXR0cihcImNsYXNzXCIsIFwicmVxIHJlcUxhYmVsIHJlcVRpdGxlXCIpLmF0dHIoXCJpZFwiLCBpZCkuYXR0cihcInhcIiwgeCkuYXR0cihcInlcIiwgY29uZi5yZWN0X3BhZGRpbmcpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCBcImhhbmdpbmdcIik7XG4gIGxldCBpID0gMDtcbiAgdHh0cy5mb3JFYWNoKCh0ZXh0U3RyKSA9PiB7XG4gICAgaWYgKGkgPT0gMCkge1xuICAgICAgdGl0bGUuYXBwZW5kKFwidHNwYW5cIikuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLmF0dHIoXCJ4XCIsIGNvbmYucmVjdF9taW5fd2lkdGggLyAyKS5hdHRyKFwiZHlcIiwgMCkudGV4dCh0ZXh0U3RyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUuYXBwZW5kKFwidHNwYW5cIikuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLmF0dHIoXCJ4XCIsIGNvbmYucmVjdF9taW5fd2lkdGggLyAyKS5hdHRyKFwiZHlcIiwgY29uZi5saW5lX2hlaWdodCAqIDAuNzUpLnRleHQodGV4dFN0cik7XG4gICAgfVxuICAgIGkrKztcbiAgfSk7XG4gIGxldCB5UGFkZGluZyA9IDEuNSAqIGNvbmYucmVjdF9wYWRkaW5nO1xuICBsZXQgbGluZVBhZGRpbmcgPSBpICogY29uZi5saW5lX2hlaWdodCAqIDAuNzU7XG4gIGxldCB0b3RhbFkgPSB5UGFkZGluZyArIGxpbmVQYWRkaW5nO1xuICBwYXJlbnROb2RlLmFwcGVuZChcImxpbmVcIikuYXR0cihcImNsYXNzXCIsIFwicmVxLXRpdGxlLWxpbmVcIikuYXR0cihcIngxXCIsIFwiMFwiKS5hdHRyKFwieDJcIiwgY29uZi5yZWN0X21pbl93aWR0aCkuYXR0cihcInkxXCIsIHRvdGFsWSkuYXR0cihcInkyXCIsIHRvdGFsWSk7XG4gIHJldHVybiB7XG4gICAgdGl0bGVOb2RlOiB0aXRsZSxcbiAgICB5OiB0b3RhbFlcbiAgfTtcbn07XG5jb25zdCBuZXdCb2R5Tm9kZSA9IChwYXJlbnROb2RlLCBpZCwgdHh0cywgeVN0YXJ0KSA9PiB7XG4gIGxldCBib2R5ID0gcGFyZW50Tm9kZS5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJjbGFzc1wiLCBcInJlcSByZXFMYWJlbFwiKS5hdHRyKFwiaWRcIiwgaWQpLmF0dHIoXCJ4XCIsIGNvbmYucmVjdF9wYWRkaW5nKS5hdHRyKFwieVwiLCB5U3RhcnQpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCBcImhhbmdpbmdcIik7XG4gIGxldCBjdXJyZW50Um93ID0gMDtcbiAgY29uc3QgY2hhckxpbWl0ID0gMzA7XG4gIGxldCB3cmFwcGVkVHh0cyA9IFtdO1xuICB0eHRzLmZvckVhY2goKHRleHRTdHIpID0+IHtcbiAgICBsZXQgY3VycmVudFRleHRMZW4gPSB0ZXh0U3RyLmxlbmd0aDtcbiAgICB3aGlsZSAoY3VycmVudFRleHRMZW4gPiBjaGFyTGltaXQgJiYgY3VycmVudFJvdyA8IDMpIHtcbiAgICAgIGxldCBmaXJzdFBhcnQgPSB0ZXh0U3RyLnN1YnN0cmluZygwLCBjaGFyTGltaXQpO1xuICAgICAgdGV4dFN0ciA9IHRleHRTdHIuc3Vic3RyaW5nKGNoYXJMaW1pdCwgdGV4dFN0ci5sZW5ndGgpO1xuICAgICAgY3VycmVudFRleHRMZW4gPSB0ZXh0U3RyLmxlbmd0aDtcbiAgICAgIHdyYXBwZWRUeHRzW3dyYXBwZWRUeHRzLmxlbmd0aF0gPSBmaXJzdFBhcnQ7XG4gICAgICBjdXJyZW50Um93Kys7XG4gICAgfVxuICAgIGlmIChjdXJyZW50Um93ID09IDMpIHtcbiAgICAgIGxldCBsYXN0U3RyID0gd3JhcHBlZFR4dHNbd3JhcHBlZFR4dHMubGVuZ3RoIC0gMV07XG4gICAgICB3cmFwcGVkVHh0c1t3cmFwcGVkVHh0cy5sZW5ndGggLSAxXSA9IGxhc3RTdHIuc3Vic3RyaW5nKDAsIGxhc3RTdHIubGVuZ3RoIC0gNCkgKyBcIi4uLlwiO1xuICAgIH0gZWxzZSB7XG4gICAgICB3cmFwcGVkVHh0c1t3cmFwcGVkVHh0cy5sZW5ndGhdID0gdGV4dFN0cjtcbiAgICB9XG4gICAgY3VycmVudFJvdyA9IDA7XG4gIH0pO1xuICB3cmFwcGVkVHh0cy5mb3JFYWNoKCh0ZXh0U3RyKSA9PiB7XG4gICAgYm9keS5hcHBlbmQoXCJ0c3BhblwiKS5hdHRyKFwieFwiLCBjb25mLnJlY3RfcGFkZGluZykuYXR0cihcImR5XCIsIGNvbmYubGluZV9oZWlnaHQpLnRleHQodGV4dFN0cik7XG4gIH0pO1xuICByZXR1cm4gYm9keTtcbn07XG5jb25zdCBhZGRFZGdlTGFiZWwgPSAocGFyZW50Tm9kZSwgc3ZnUGF0aCwgY29uZjIsIHR4dCkgPT4ge1xuICBjb25zdCBsZW4gPSBzdmdQYXRoLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpO1xuICBjb25zdCBsYWJlbFBvaW50ID0gc3ZnUGF0aC5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChsZW4gKiAwLjUpO1xuICBjb25zdCBsYWJlbElkID0gXCJyZWxcIiArIHJlbENudDtcbiAgcmVsQ250Kys7XG4gIGNvbnN0IGxhYmVsTm9kZSA9IHBhcmVudE5vZGUuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJyZXEgcmVsYXRpb25zaGlwTGFiZWxcIikuYXR0cihcImlkXCIsIGxhYmVsSWQpLmF0dHIoXCJ4XCIsIGxhYmVsUG9pbnQueCkuYXR0cihcInlcIiwgbGFiZWxQb2ludC55KS5hdHRyKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIikuYXR0cihcImRvbWluYW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpLnRleHQodHh0KTtcbiAgY29uc3QgbGFiZWxCQm94ID0gbGFiZWxOb2RlLm5vZGUoKS5nZXRCQm94KCk7XG4gIHBhcmVudE5vZGUuaW5zZXJ0KFwicmVjdFwiLCBcIiNcIiArIGxhYmVsSWQpLmF0dHIoXCJjbGFzc1wiLCBcInJlcSByZXFMYWJlbEJveFwiKS5hdHRyKFwieFwiLCBsYWJlbFBvaW50LnggLSBsYWJlbEJCb3gud2lkdGggLyAyKS5hdHRyKFwieVwiLCBsYWJlbFBvaW50LnkgLSBsYWJlbEJCb3guaGVpZ2h0IC8gMikuYXR0cihcIndpZHRoXCIsIGxhYmVsQkJveC53aWR0aCkuYXR0cihcImhlaWdodFwiLCBsYWJlbEJCb3guaGVpZ2h0KS5hdHRyKFwiZmlsbFwiLCBcIndoaXRlXCIpLmF0dHIoXCJmaWxsLW9wYWNpdHlcIiwgXCI4NSVcIik7XG59O1xuY29uc3QgZHJhd1JlbGF0aW9uc2hpcEZyb21MYXlvdXQgPSBmdW5jdGlvbihzdmcsIHJlbCwgZywgaW5zZXJ0LCBkaWFnT2JqKSB7XG4gIGNvbnN0IGVkZ2UgPSBnLmVkZ2UoZWxlbWVudFN0cmluZyhyZWwuc3JjKSwgZWxlbWVudFN0cmluZyhyZWwuZHN0KSk7XG4gIGNvbnN0IGxpbmVGdW5jdGlvbiA9IGxpbmUoKS54KGZ1bmN0aW9uKGQpIHtcbiAgICByZXR1cm4gZC54O1xuICB9KS55KGZ1bmN0aW9uKGQpIHtcbiAgICByZXR1cm4gZC55O1xuICB9KTtcbiAgY29uc3Qgc3ZnUGF0aCA9IHN2Zy5pbnNlcnQoXCJwYXRoXCIsIFwiI1wiICsgaW5zZXJ0KS5hdHRyKFwiY2xhc3NcIiwgXCJlciByZWxhdGlvbnNoaXBMaW5lXCIpLmF0dHIoXCJkXCIsIGxpbmVGdW5jdGlvbihlZGdlLnBvaW50cykpLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKTtcbiAgaWYgKHJlbC50eXBlID09IGRpYWdPYmouZGIuUmVsYXRpb25zaGlwcy5DT05UQUlOUykge1xuICAgIHN2Z1BhdGguYXR0cihcbiAgICAgIFwibWFya2VyLXN0YXJ0XCIsXG4gICAgICBcInVybChcIiArIGNvbW1vbi5nZXRVcmwoY29uZi5hcnJvd01hcmtlckFic29sdXRlKSArIFwiI1wiICsgcmVsLnR5cGUgKyBcIl9saW5lX2VuZGluZylcIlxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgc3ZnUGF0aC5hdHRyKFwic3Ryb2tlLWRhc2hhcnJheVwiLCBcIjEwLDdcIik7XG4gICAgc3ZnUGF0aC5hdHRyKFxuICAgICAgXCJtYXJrZXItZW5kXCIsXG4gICAgICBcInVybChcIiArIGNvbW1vbi5nZXRVcmwoY29uZi5hcnJvd01hcmtlckFic29sdXRlKSArIFwiI1wiICsgbWFya2Vycy5SZXFNYXJrZXJzLkFSUk9XICsgXCJfbGluZV9lbmRpbmcpXCJcbiAgICApO1xuICB9XG4gIGFkZEVkZ2VMYWJlbChzdmcsIHN2Z1BhdGgsIGNvbmYsIGA8PCR7cmVsLnR5cGV9Pj5gKTtcbiAgcmV0dXJuO1xufTtcbmNvbnN0IGRyYXdSZXFzID0gKHJlcXMsIGdyYXBoLCBzdmdOb2RlKSA9PiB7XG4gIE9iamVjdC5rZXlzKHJlcXMpLmZvckVhY2goKHJlcU5hbWUpID0+IHtcbiAgICBsZXQgcmVxID0gcmVxc1tyZXFOYW1lXTtcbiAgICByZXFOYW1lID0gZWxlbWVudFN0cmluZyhyZXFOYW1lKTtcbiAgICBsb2cuaW5mbyhcIkFkZGVkIG5ldyByZXF1aXJlbWVudDogXCIsIHJlcU5hbWUpO1xuICAgIGNvbnN0IGdyb3VwTm9kZSA9IHN2Z05vZGUuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiaWRcIiwgcmVxTmFtZSk7XG4gICAgY29uc3QgdGV4dElkID0gXCJyZXEtXCIgKyByZXFOYW1lO1xuICAgIGNvbnN0IHJlY3ROb2RlID0gbmV3UmVjdE5vZGUoZ3JvdXBOb2RlLCB0ZXh0SWQpO1xuICAgIGxldCB0aXRsZU5vZGVJbmZvID0gbmV3VGl0bGVOb2RlKGdyb3VwTm9kZSwgcmVxTmFtZSArIFwiX3RpdGxlXCIsIFtcbiAgICAgIGA8PCR7cmVxLnR5cGV9Pj5gLFxuICAgICAgYCR7cmVxLm5hbWV9YFxuICAgIF0pO1xuICAgIG5ld0JvZHlOb2RlKFxuICAgICAgZ3JvdXBOb2RlLFxuICAgICAgcmVxTmFtZSArIFwiX2JvZHlcIixcbiAgICAgIFtcbiAgICAgICAgYElkOiAke3JlcS5pZH1gLFxuICAgICAgICBgVGV4dDogJHtyZXEudGV4dH1gLFxuICAgICAgICBgUmlzazogJHtyZXEucmlza31gLFxuICAgICAgICBgVmVyaWZpY2F0aW9uOiAke3JlcS52ZXJpZnlNZXRob2R9YFxuICAgICAgXSxcbiAgICAgIHRpdGxlTm9kZUluZm8ueVxuICAgICk7XG4gICAgY29uc3QgcmVjdEJCb3ggPSByZWN0Tm9kZS5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIGdyYXBoLnNldE5vZGUocmVxTmFtZSwge1xuICAgICAgd2lkdGg6IHJlY3RCQm94LndpZHRoLFxuICAgICAgaGVpZ2h0OiByZWN0QkJveC5oZWlnaHQsXG4gICAgICBzaGFwZTogXCJyZWN0XCIsXG4gICAgICBpZDogcmVxTmFtZVxuICAgIH0pO1xuICB9KTtcbn07XG5jb25zdCBkcmF3RWxlbWVudHMgPSAoZWxzLCBncmFwaCwgc3ZnTm9kZSkgPT4ge1xuICBPYmplY3Qua2V5cyhlbHMpLmZvckVhY2goKGVsTmFtZSkgPT4ge1xuICAgIGxldCBlbCA9IGVsc1tlbE5hbWVdO1xuICAgIGNvbnN0IGlkID0gZWxlbWVudFN0cmluZyhlbE5hbWUpO1xuICAgIGNvbnN0IGdyb3VwTm9kZSA9IHN2Z05vZGUuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiaWRcIiwgaWQpO1xuICAgIGNvbnN0IHRleHRJZCA9IFwiZWxlbWVudC1cIiArIGlkO1xuICAgIGNvbnN0IHJlY3ROb2RlID0gbmV3UmVjdE5vZGUoZ3JvdXBOb2RlLCB0ZXh0SWQpO1xuICAgIGxldCB0aXRsZU5vZGVJbmZvID0gbmV3VGl0bGVOb2RlKGdyb3VwTm9kZSwgdGV4dElkICsgXCJfdGl0bGVcIiwgW2A8PEVsZW1lbnQ+PmAsIGAke2VsTmFtZX1gXSk7XG4gICAgbmV3Qm9keU5vZGUoXG4gICAgICBncm91cE5vZGUsXG4gICAgICB0ZXh0SWQgKyBcIl9ib2R5XCIsXG4gICAgICBbYFR5cGU6ICR7ZWwudHlwZSB8fCBcIk5vdCBTcGVjaWZpZWRcIn1gLCBgRG9jIFJlZjogJHtlbC5kb2NSZWYgfHwgXCJOb25lXCJ9YF0sXG4gICAgICB0aXRsZU5vZGVJbmZvLnlcbiAgICApO1xuICAgIGNvbnN0IHJlY3RCQm94ID0gcmVjdE5vZGUubm9kZSgpLmdldEJCb3goKTtcbiAgICBncmFwaC5zZXROb2RlKGlkLCB7XG4gICAgICB3aWR0aDogcmVjdEJCb3gud2lkdGgsXG4gICAgICBoZWlnaHQ6IHJlY3RCQm94LmhlaWdodCxcbiAgICAgIHNoYXBlOiBcInJlY3RcIixcbiAgICAgIGlkXG4gICAgfSk7XG4gIH0pO1xufTtcbmNvbnN0IGFkZFJlbGF0aW9uc2hpcHMgPSAocmVsYXRpb25zaGlwcywgZykgPT4ge1xuICByZWxhdGlvbnNoaXBzLmZvckVhY2goZnVuY3Rpb24ocikge1xuICAgIGxldCBzcmMgPSBlbGVtZW50U3RyaW5nKHIuc3JjKTtcbiAgICBsZXQgZHN0ID0gZWxlbWVudFN0cmluZyhyLmRzdCk7XG4gICAgZy5zZXRFZGdlKHNyYywgZHN0LCB7IHJlbGF0aW9uc2hpcDogciB9KTtcbiAgfSk7XG4gIHJldHVybiByZWxhdGlvbnNoaXBzO1xufTtcbmNvbnN0IGFkanVzdEVudGl0aWVzID0gZnVuY3Rpb24oc3ZnTm9kZSwgZ3JhcGgpIHtcbiAgZ3JhcGgubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAodiAhPT0gdm9pZCAwICYmIGdyYXBoLm5vZGUodikgIT09IHZvaWQgMCkge1xuICAgICAgc3ZnTm9kZS5zZWxlY3QoXCIjXCIgKyB2KTtcbiAgICAgIHN2Z05vZGUuc2VsZWN0KFwiI1wiICsgdikuYXR0cihcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAoZ3JhcGgubm9kZSh2KS54IC0gZ3JhcGgubm9kZSh2KS53aWR0aCAvIDIpICsgXCIsXCIgKyAoZ3JhcGgubm9kZSh2KS55IC0gZ3JhcGgubm9kZSh2KS5oZWlnaHQgLyAyKSArIFwiIClcIlxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm47XG59O1xuY29uc3QgZWxlbWVudFN0cmluZyA9IChzdHIpID0+IHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXHMvZywgXCJcIikucmVwbGFjZSgvXFwuL2csIFwiX1wiKTtcbn07XG5jb25zdCBkcmF3ID0gKHRleHQsIGlkLCBfdmVyc2lvbiwgZGlhZ09iaikgPT4ge1xuICBjb25mID0gZ2V0Q29uZmlnKCkucmVxdWlyZW1lbnQ7XG4gIGRpYWdPYmouZGIuY2xlYXIoKTtcbiAgZGlhZ09iai5wYXJzZXIucGFyc2UodGV4dCk7XG4gIGNvbnN0IHNlY3VyaXR5TGV2ZWwgPSBjb25mLnNlY3VyaXR5TGV2ZWw7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IHN2ZyA9IHJvb3Quc2VsZWN0KGBbaWQ9JyR7aWR9J11gKTtcbiAgbWFya2Vycy5pbnNlcnRMaW5lRW5kaW5ncyhzdmcsIGNvbmYpO1xuICBjb25zdCBnID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiBmYWxzZSxcbiAgICBjb21wb3VuZDogZmFsc2UsXG4gICAgZGlyZWN0ZWQ6IHRydWVcbiAgfSkuc2V0R3JhcGgoe1xuICAgIHJhbmtkaXI6IGNvbmYubGF5b3V0RGlyZWN0aW9uLFxuICAgIG1hcmdpbng6IDIwLFxuICAgIG1hcmdpbnk6IDIwLFxuICAgIG5vZGVzZXA6IDEwMCxcbiAgICBlZGdlc2VwOiAxMDAsXG4gICAgcmFua3NlcDogMTAwXG4gIH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgbGV0IHJlcXVpcmVtZW50czIgPSBkaWFnT2JqLmRiLmdldFJlcXVpcmVtZW50cygpO1xuICBsZXQgZWxlbWVudHMyID0gZGlhZ09iai5kYi5nZXRFbGVtZW50cygpO1xuICBsZXQgcmVsYXRpb25zaGlwcyA9IGRpYWdPYmouZGIuZ2V0UmVsYXRpb25zaGlwcygpO1xuICBkcmF3UmVxcyhyZXF1aXJlbWVudHMyLCBnLCBzdmcpO1xuICBkcmF3RWxlbWVudHMoZWxlbWVudHMyLCBnLCBzdmcpO1xuICBhZGRSZWxhdGlvbnNoaXBzKHJlbGF0aW9uc2hpcHMsIGcpO1xuICBsYXlvdXQoZyk7XG4gIGFkanVzdEVudGl0aWVzKHN2ZywgZyk7XG4gIHJlbGF0aW9uc2hpcHMuZm9yRWFjaChmdW5jdGlvbihyZWwpIHtcbiAgICBkcmF3UmVsYXRpb25zaGlwRnJvbUxheW91dChzdmcsIHJlbCwgZywgaWQsIGRpYWdPYmopO1xuICB9KTtcbiAgY29uc3QgcGFkZGluZyA9IGNvbmYucmVjdF9wYWRkaW5nO1xuICBjb25zdCBzdmdCb3VuZHMgPSBzdmcubm9kZSgpLmdldEJCb3goKTtcbiAgY29uc3Qgd2lkdGggPSBzdmdCb3VuZHMud2lkdGggKyBwYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gc3ZnQm91bmRzLmhlaWdodCArIHBhZGRpbmcgKiAyO1xuICBjb25maWd1cmVTdmdTaXplKHN2ZywgaGVpZ2h0LCB3aWR0aCwgY29uZi51c2VNYXhXaWR0aCk7XG4gIHN2Zy5hdHRyKFwidmlld0JveFwiLCBgJHtzdmdCb3VuZHMueCAtIHBhZGRpbmd9ICR7c3ZnQm91bmRzLnkgLSBwYWRkaW5nfSAke3dpZHRofSAke2hlaWdodH1gKTtcbn07XG5jb25zdCByZW5kZXJlciA9IHtcbiAgZHJhd1xufTtcbmNvbnN0IGRpYWdyYW0gPSB7XG4gIHBhcnNlcjogcGFyc2VyJDEsXG4gIGRiLFxuICByZW5kZXJlcixcbiAgc3R5bGVzXG59O1xuZXhwb3J0IHtcbiAgZGlhZ3JhbVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/requirementDiagram-19c99588.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/sequenceDiagram-5dfd0049.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/sequenceDiagram-5dfd0049.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDrawCommon-f26cad39.js */ \"../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 7], $V4 = [2, 5], $V5 = [1, 15], $V6 = [1, 17], $V7 = [1, 19], $V8 = [1, 21], $V9 = [1, 22], $Va = [1, 23], $Vb = [1, 29], $Vc = [1, 30], $Vd = [1, 31], $Ve = [1, 32], $Vf = [1, 33], $Vg = [1, 34], $Vh = [1, 35], $Vi = [1, 36], $Vj = [1, 37], $Vk = [1, 38], $Vl = [1, 39], $Vm = [1, 40], $Vn = [1, 41], $Vo = [1, 43], $Vp = [1, 44], $Vq = [1, 46], $Vr = [1, 47], $Vs = [1, 48], $Vt = [1, 49], $Vu = [1, 50], $Vv = [1, 51], $Vw = [1, 54], $Vx = [1, 4, 5, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 52, 53, 54, 55, 57, 58, 63, 64, 65, 66, 74, 84], $Vy = [4, 5, 21, 55, 57], $Vz = [4, 5, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 55, 57, 58, 63, 64, 65, 66, 74, 84], $VA = [4, 5, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 54, 55, 57, 58, 63, 64, 65, 66, 74, 84], $VB = [4, 5, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 53, 55, 57, 58, 63, 64, 65, 66, 74, 84], $VC = [4, 5, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 52, 55, 57, 58, 63, 64, 65, 66, 74, 84], $VD = [72, 73, 74], $VE = [1, 128], $VF = [1, 4, 5, 7, 19, 21, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 52, 53, 54, 55, 57, 58, 63, 64, 65, 66, 74, 84];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NEWLINE\": 5, \"directive\": 6, \"SD\": 7, \"document\": 8, \"line\": 9, \"statement\": 10, \"box_section\": 11, \"box_line\": 12, \"participant_statement\": 13, \"openDirective\": 14, \"typeDirective\": 15, \"closeDirective\": 16, \":\": 17, \"argDirective\": 18, \"box\": 19, \"restOfLine\": 20, \"end\": 21, \"signal\": 22, \"autonumber\": 23, \"NUM\": 24, \"off\": 25, \"activate\": 26, \"actor\": 27, \"deactivate\": 28, \"note_statement\": 29, \"links_statement\": 30, \"link_statement\": 31, \"properties_statement\": 32, \"details_statement\": 33, \"title\": 34, \"legacy_title\": 35, \"acc_title\": 36, \"acc_title_value\": 37, \"acc_descr\": 38, \"acc_descr_value\": 39, \"acc_descr_multiline_value\": 40, \"loop\": 41, \"rect\": 42, \"opt\": 43, \"alt\": 44, \"else_sections\": 45, \"par\": 46, \"par_sections\": 47, \"par_over\": 48, \"critical\": 49, \"option_sections\": 50, \"break\": 51, \"option\": 52, \"and\": 53, \"else\": 54, \"participant\": 55, \"AS\": 56, \"participant_actor\": 57, \"note\": 58, \"placement\": 59, \"text2\": 60, \"over\": 61, \"actor_pair\": 62, \"links\": 63, \"link\": 64, \"properties\": 65, \"details\": 66, \"spaceList\": 67, \",\": 68, \"left_of\": 69, \"right_of\": 70, \"signaltype\": 71, \"+\": 72, \"-\": 73, \"ACTOR\": 74, \"SOLID_OPEN_ARROW\": 75, \"DOTTED_OPEN_ARROW\": 76, \"SOLID_ARROW\": 77, \"DOTTED_ARROW\": 78, \"SOLID_CROSS\": 79, \"DOTTED_CROSS\": 80, \"SOLID_POINT\": 81, \"DOTTED_POINT\": 82, \"TXT\": 83, \"open_directive\": 84, \"type_directive\": 85, \"arg_directive\": 86, \"close_directive\": 87, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NEWLINE\", 7: \"SD\", 17: \":\", 19: \"box\", 20: \"restOfLine\", 21: \"end\", 23: \"autonumber\", 24: \"NUM\", 25: \"off\", 26: \"activate\", 28: \"deactivate\", 34: \"title\", 35: \"legacy_title\", 36: \"acc_title\", 37: \"acc_title_value\", 38: \"acc_descr\", 39: \"acc_descr_value\", 40: \"acc_descr_multiline_value\", 41: \"loop\", 42: \"rect\", 43: \"opt\", 44: \"alt\", 46: \"par\", 48: \"par_over\", 49: \"critical\", 51: \"break\", 52: \"option\", 53: \"and\", 54: \"else\", 55: \"participant\", 56: \"AS\", 57: \"participant_actor\", 58: \"note\", 61: \"over\", 63: \"links\", 64: \"link\", 65: \"properties\", 66: \"details\", 68: \",\", 69: \"left_of\", 70: \"right_of\", 72: \"+\", 73: \"-\", 74: \"ACTOR\", 75: \"SOLID_OPEN_ARROW\", 76: \"DOTTED_OPEN_ARROW\", 77: \"SOLID_ARROW\", 78: \"DOTTED_ARROW\", 79: \"SOLID_CROSS\", 80: \"DOTTED_CROSS\", 81: \"SOLID_POINT\", 82: \"DOTTED_POINT\", 83: \"TXT\", 84: \"open_directive\", 85: \"type_directive\", 86: \"arg_directive\", 87: \"close_directive\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 2], [8, 0], [8, 2], [9, 2], [9, 1], [9, 1], [11, 0], [11, 2], [12, 2], [12, 1], [12, 1], [6, 4], [6, 6], [10, 1], [10, 4], [10, 2], [10, 4], [10, 3], [10, 3], [10, 2], [10, 3], [10, 3], [10, 2], [10, 2], [10, 2], [10, 2], [10, 2], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [10, 1], [50, 1], [50, 4], [47, 1], [47, 4], [45, 1], [45, 4], [13, 5], [13, 3], [13, 5], [13, 3], [29, 4], [29, 4], [30, 3], [31, 3], [32, 3], [33, 3], [67, 2], [67, 1], [62, 3], [62, 1], [59, 1], [59, 1], [22, 5], [22, 5], [22, 4], [27, 1], [71, 1], [71, 1], [71, 1], [71, 1], [71, 1], [71, 1], [71, 1], [71, 1], [60, 1], [14, 1], [15, 1], [18, 1], [16, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.apply($$[$0]);\n return $$[$0];\n case 5:\n case 10:\n this.$ = [];\n break;\n case 6:\n case 11:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 7:\n case 8:\n case 12:\n case 13:\n this.$ = $$[$0];\n break;\n case 9:\n case 14:\n this.$ = [];\n break;\n case 18:\n $$[$0 - 1].unshift({ type: \"boxStart\", boxData: yy.parseBoxData($$[$0 - 2]) });\n $$[$0 - 1].push({ type: \"boxEnd\", boxText: $$[$0 - 2] });\n this.$ = $$[$0 - 1];\n break;\n case 20:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 21:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 22:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 23:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 24:\n this.$ = { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] };\n break;\n case 25:\n this.$ = { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1] };\n break;\n case 31:\n yy.setDiagramTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 32:\n yy.setDiagramTitle($$[$0].substring(7));\n this.$ = $$[$0].substring(7);\n break;\n case 33:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 34:\n case 35:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 36:\n $$[$0 - 1].unshift({ type: \"loopStart\", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START });\n $$[$0 - 1].push({ type: \"loopEnd\", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END });\n this.$ = $$[$0 - 1];\n break;\n case 37:\n $$[$0 - 1].unshift({ type: \"rectStart\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START });\n $$[$0 - 1].push({ type: \"rectEnd\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END });\n this.$ = $$[$0 - 1];\n break;\n case 38:\n $$[$0 - 1].unshift({ type: \"optStart\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START });\n $$[$0 - 1].push({ type: \"optEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END });\n this.$ = $$[$0 - 1];\n break;\n case 39:\n $$[$0 - 1].unshift({ type: \"altStart\", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START });\n $$[$0 - 1].push({ type: \"altEnd\", signalType: yy.LINETYPE.ALT_END });\n this.$ = $$[$0 - 1];\n break;\n case 40:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 41:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 42:\n $$[$0 - 1].unshift({ type: \"criticalStart\", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START });\n $$[$0 - 1].push({ type: \"criticalEnd\", signalType: yy.LINETYPE.CRITICAL_END });\n this.$ = $$[$0 - 1];\n break;\n case 43:\n $$[$0 - 1].unshift({ type: \"breakStart\", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START });\n $$[$0 - 1].push({ type: \"breakEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END });\n this.$ = $$[$0 - 1];\n break;\n case 46:\n this.$ = $$[$0 - 3].concat([{ type: \"option\", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]);\n break;\n case 48:\n this.$ = $$[$0 - 3].concat([{ type: \"and\", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]);\n break;\n case 50:\n this.$ = $$[$0 - 3].concat([{ type: \"else\", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]);\n break;\n case 51:\n $$[$0 - 3].type = \"addParticipant\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 52:\n $$[$0 - 1].type = \"addParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 53:\n $$[$0 - 3].type = \"addActor\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 54:\n $$[$0 - 1].type = \"addActor\";\n this.$ = $$[$0 - 1];\n break;\n case 55:\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 56:\n $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2);\n $$[$0 - 2][0] = $$[$0 - 2][0].actor;\n $$[$0 - 2][1] = $$[$0 - 2][1].actor;\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }];\n break;\n case 57:\n this.$ = [$$[$0 - 1], { type: \"addLinks\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 58:\n this.$ = [$$[$0 - 1], { type: \"addALink\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 59:\n this.$ = [$$[$0 - 1], { type: \"addProperties\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 60:\n this.$ = [$$[$0 - 1], { type: \"addDetails\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 63:\n this.$ = [$$[$0 - 2], $$[$0]];\n break;\n case 64:\n this.$ = $$[$0];\n break;\n case 65:\n this.$ = yy.PLACEMENT.LEFTOF;\n break;\n case 66:\n this.$ = yy.PLACEMENT.RIGHTOF;\n break;\n case 67:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] },\n { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] }\n ];\n break;\n case 68:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] },\n { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4] }\n ];\n break;\n case 69:\n this.$ = [$$[$0 - 3], $$[$0 - 1], { type: \"addMessage\", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }];\n break;\n case 70:\n this.$ = { type: \"addParticipant\", actor: $$[$0] };\n break;\n case 71:\n this.$ = yy.LINETYPE.SOLID_OPEN;\n break;\n case 72:\n this.$ = yy.LINETYPE.DOTTED_OPEN;\n break;\n case 73:\n this.$ = yy.LINETYPE.SOLID;\n break;\n case 74:\n this.$ = yy.LINETYPE.DOTTED;\n break;\n case 75:\n this.$ = yy.LINETYPE.SOLID_CROSS;\n break;\n case 76:\n this.$ = yy.LINETYPE.DOTTED_CROSS;\n break;\n case 77:\n this.$ = yy.LINETYPE.SOLID_POINT;\n break;\n case 78:\n this.$ = yy.LINETYPE.DOTTED_POINT;\n break;\n case 79:\n this.$ = yy.parseMessage($$[$0].trim().substring(1));\n break;\n case 80:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 81:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 82:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 83:\n yy.parseDirective(\"}%%\", \"close_directive\", \"sequence\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: 4, 7: $V2, 14: 6, 84: $V3 }, { 1: [3] }, { 3: 8, 4: $V0, 5: $V1, 6: 4, 7: $V2, 14: 6, 84: $V3 }, { 3: 9, 4: $V0, 5: $V1, 6: 4, 7: $V2, 14: 6, 84: $V3 }, { 3: 10, 4: $V0, 5: $V1, 6: 4, 7: $V2, 14: 6, 84: $V3 }, o([1, 4, 5, 19, 23, 26, 28, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 49, 51, 55, 57, 58, 63, 64, 65, 66, 74, 84], $V4, { 8: 11 }), { 15: 12, 85: [1, 13] }, { 85: [2, 80] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, { 1: [2, 4], 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 16: 52, 17: [1, 53], 87: $Vw }, o([17, 87], [2, 81]), o($Vx, [2, 6]), { 6: 42, 10: 55, 13: 18, 14: 6, 19: $V7, 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, o($Vx, [2, 8]), o($Vx, [2, 9]), o($Vx, [2, 17]), { 20: [1, 56] }, { 5: [1, 57] }, { 5: [1, 60], 24: [1, 58], 25: [1, 59] }, { 27: 61, 74: $Vv }, { 27: 62, 74: $Vv }, { 5: [1, 63] }, { 5: [1, 64] }, { 5: [1, 65] }, { 5: [1, 66] }, { 5: [1, 67] }, o($Vx, [2, 31]), o($Vx, [2, 32]), { 37: [1, 68] }, { 39: [1, 69] }, o($Vx, [2, 35]), { 20: [1, 70] }, { 20: [1, 71] }, { 20: [1, 72] }, { 20: [1, 73] }, { 20: [1, 74] }, { 20: [1, 75] }, { 20: [1, 76] }, { 20: [1, 77] }, o($Vx, [2, 44]), { 27: 78, 74: $Vv }, { 27: 79, 74: $Vv }, { 71: 80, 75: [1, 81], 76: [1, 82], 77: [1, 83], 78: [1, 84], 79: [1, 85], 80: [1, 86], 81: [1, 87], 82: [1, 88] }, { 59: 89, 61: [1, 90], 69: [1, 91], 70: [1, 92] }, { 27: 93, 74: $Vv }, { 27: 94, 74: $Vv }, { 27: 95, 74: $Vv }, { 27: 96, 74: $Vv }, o([5, 56, 68, 75, 76, 77, 78, 79, 80, 81, 82, 83], [2, 70]), { 5: [1, 97] }, { 18: 98, 86: [1, 99] }, { 5: [2, 83] }, o($Vx, [2, 7]), o($Vy, [2, 10], { 11: 100 }), o($Vx, [2, 19]), { 5: [1, 102], 24: [1, 101] }, { 5: [1, 103] }, o($Vx, [2, 23]), { 5: [1, 104] }, { 5: [1, 105] }, o($Vx, [2, 26]), o($Vx, [2, 27]), o($Vx, [2, 28]), o($Vx, [2, 29]), o($Vx, [2, 30]), o($Vx, [2, 33]), o($Vx, [2, 34]), o($Vz, $V4, { 8: 106 }), o($Vz, $V4, { 8: 107 }), o($Vz, $V4, { 8: 108 }), o($VA, $V4, { 45: 109, 8: 110 }), o($VB, $V4, { 47: 111, 8: 112 }), o($VB, $V4, { 8: 112, 47: 113 }), o($VC, $V4, { 50: 114, 8: 115 }), o($Vz, $V4, { 8: 116 }), { 5: [1, 118], 56: [1, 117] }, { 5: [1, 120], 56: [1, 119] }, { 27: 123, 72: [1, 121], 73: [1, 122], 74: $Vv }, o($VD, [2, 71]), o($VD, [2, 72]), o($VD, [2, 73]), o($VD, [2, 74]), o($VD, [2, 75]), o($VD, [2, 76]), o($VD, [2, 77]), o($VD, [2, 78]), { 27: 124, 74: $Vv }, { 27: 126, 62: 125, 74: $Vv }, { 74: [2, 65] }, { 74: [2, 66] }, { 60: 127, 83: $VE }, { 60: 129, 83: $VE }, { 60: 130, 83: $VE }, { 60: 131, 83: $VE }, o($VF, [2, 15]), { 16: 132, 87: $Vw }, { 87: [2, 82] }, { 4: [1, 135], 5: [1, 137], 12: 134, 13: 136, 21: [1, 133], 55: $Vo, 57: $Vp }, { 5: [1, 138] }, o($Vx, [2, 21]), o($Vx, [2, 22]), o($Vx, [2, 24]), o($Vx, [2, 25]), { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [1, 139], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [1, 140], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [1, 141], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 21: [1, 142] }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [2, 49], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 54: [1, 143], 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 21: [1, 144] }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [2, 47], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 53: [1, 145], 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 21: [1, 146] }, { 21: [1, 147] }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [2, 45], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 52: [1, 148], 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 4: $V5, 5: $V6, 6: 42, 9: 14, 10: 16, 13: 18, 14: 6, 19: $V7, 21: [1, 149], 22: 20, 23: $V8, 26: $V9, 27: 45, 28: $Va, 29: 24, 30: 25, 31: 26, 32: 27, 33: 28, 34: $Vb, 35: $Vc, 36: $Vd, 38: $Ve, 40: $Vf, 41: $Vg, 42: $Vh, 43: $Vi, 44: $Vj, 46: $Vk, 48: $Vl, 49: $Vm, 51: $Vn, 55: $Vo, 57: $Vp, 58: $Vq, 63: $Vr, 64: $Vs, 65: $Vt, 66: $Vu, 74: $Vv, 84: $V3 }, { 20: [1, 150] }, o($Vx, [2, 52]), { 20: [1, 151] }, o($Vx, [2, 54]), { 27: 152, 74: $Vv }, { 27: 153, 74: $Vv }, { 60: 154, 83: $VE }, { 60: 155, 83: $VE }, { 60: 156, 83: $VE }, { 68: [1, 157], 83: [2, 64] }, { 5: [2, 57] }, { 5: [2, 79] }, { 5: [2, 58] }, { 5: [2, 59] }, { 5: [2, 60] }, { 5: [1, 158] }, o($Vx, [2, 18]), o($Vy, [2, 11]), { 13: 159, 55: $Vo, 57: $Vp }, o($Vy, [2, 13]), o($Vy, [2, 14]), o($Vx, [2, 20]), o($Vx, [2, 36]), o($Vx, [2, 37]), o($Vx, [2, 38]), o($Vx, [2, 39]), { 20: [1, 160] }, o($Vx, [2, 40]), { 20: [1, 161] }, o($Vx, [2, 41]), o($Vx, [2, 42]), { 20: [1, 162] }, o($Vx, [2, 43]), { 5: [1, 163] }, { 5: [1, 164] }, { 60: 165, 83: $VE }, { 60: 166, 83: $VE }, { 5: [2, 69] }, { 5: [2, 55] }, { 5: [2, 56] }, { 27: 167, 74: $Vv }, o($VF, [2, 16]), o($Vy, [2, 12]), o($VA, $V4, { 8: 110, 45: 168 }), o($VB, $V4, { 8: 112, 47: 169 }), o($VC, $V4, { 8: 115, 50: 170 }), o($Vx, [2, 51]), o($Vx, [2, 53]), { 5: [2, 67] }, { 5: [2, 68] }, { 83: [2, 63] }, { 21: [2, 50] }, { 21: [2, 48] }, { 21: [2, 46] }],\n defaultActions: { 7: [2, 80], 8: [2, 1], 9: [2, 2], 10: [2, 3], 54: [2, 83], 91: [2, 65], 92: [2, 66], 99: [2, 82], 127: [2, 57], 128: [2, 79], 129: [2, 58], 130: [2, 59], 131: [2, 60], 154: [2, 69], 155: [2, 55], 156: [2, 56], 165: [2, 67], 166: [2, 68], 167: [2, 63], 168: [2, 50], 169: [2, 48], 170: [2, 46] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 84;\n case 1:\n this.begin(\"type_directive\");\n return 85;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 17;\n case 3:\n this.popState();\n this.popState();\n return 87;\n case 4:\n return 86;\n case 5:\n return 5;\n case 6:\n break;\n case 7:\n break;\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n return 24;\n case 12:\n this.begin(\"LINE\");\n return 19;\n case 13:\n this.begin(\"ID\");\n return 55;\n case 14:\n this.begin(\"ID\");\n return 57;\n case 15:\n yy_.yytext = yy_.yytext.trim();\n this.begin(\"ALIAS\");\n return 74;\n case 16:\n this.popState();\n this.popState();\n this.begin(\"LINE\");\n return 56;\n case 17:\n this.popState();\n this.popState();\n return 5;\n case 18:\n this.begin(\"LINE\");\n return 41;\n case 19:\n this.begin(\"LINE\");\n return 42;\n case 20:\n this.begin(\"LINE\");\n return 43;\n case 21:\n this.begin(\"LINE\");\n return 44;\n case 22:\n this.begin(\"LINE\");\n return 54;\n case 23:\n this.begin(\"LINE\");\n return 46;\n case 24:\n this.begin(\"LINE\");\n return 48;\n case 25:\n this.begin(\"LINE\");\n return 53;\n case 26:\n this.begin(\"LINE\");\n return 49;\n case 27:\n this.begin(\"LINE\");\n return 52;\n case 28:\n this.begin(\"LINE\");\n return 51;\n case 29:\n this.popState();\n return 20;\n case 30:\n return 21;\n case 31:\n return 69;\n case 32:\n return 70;\n case 33:\n return 63;\n case 34:\n return 64;\n case 35:\n return 65;\n case 36:\n return 66;\n case 37:\n return 61;\n case 38:\n return 58;\n case 39:\n this.begin(\"ID\");\n return 26;\n case 40:\n this.begin(\"ID\");\n return 28;\n case 41:\n return 34;\n case 42:\n return 35;\n case 43:\n this.begin(\"acc_title\");\n return 36;\n case 44:\n this.popState();\n return \"acc_title_value\";\n case 45:\n this.begin(\"acc_descr\");\n return 38;\n case 46:\n this.popState();\n return \"acc_descr_value\";\n case 47:\n this.begin(\"acc_descr_multiline\");\n break;\n case 48:\n this.popState();\n break;\n case 49:\n return \"acc_descr_multiline_value\";\n case 50:\n return 7;\n case 51:\n return 23;\n case 52:\n return 25;\n case 53:\n return 68;\n case 54:\n return 5;\n case 55:\n yy_.yytext = yy_.yytext.trim();\n return 74;\n case 56:\n return 77;\n case 57:\n return 78;\n case 58:\n return 75;\n case 59:\n return 76;\n case 60:\n return 79;\n case 61:\n return 80;\n case 62:\n return 81;\n case 63:\n return 82;\n case 64:\n return 83;\n case 65:\n return 72;\n case 66:\n return 73;\n case 67:\n return 5;\n case 68:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[0-9]+(?=[ \\n]+))/i, /^(?:box\\b)/i, /^(?:participant\\b)/i, /^(?:actor\\b)/i, /^(?:[^\\->:\\n,;]+?([\\-]*[^\\->:\\n,;]+?)*?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i, /^(?:as\\b)/i, /^(?:(?:))/i, /^(?:loop\\b)/i, /^(?:rect\\b)/i, /^(?:opt\\b)/i, /^(?:alt\\b)/i, /^(?:else\\b)/i, /^(?:par\\b)/i, /^(?:par_over\\b)/i, /^(?:and\\b)/i, /^(?:critical\\b)/i, /^(?:option\\b)/i, /^(?:break\\b)/i, /^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i, /^(?:end\\b)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:links\\b)/i, /^(?:link\\b)/i, /^(?:properties\\b)/i, /^(?:details\\b)/i, /^(?:over\\b)/i, /^(?:note\\b)/i, /^(?:activate\\b)/i, /^(?:deactivate\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:title:\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:sequenceDiagram\\b)/i, /^(?:autonumber\\b)/i, /^(?:off\\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?:-[\\)])/i, /^(?:--[\\)])/i, /^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i, /^(?:\\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [48, 49], \"inclusive\": false }, \"acc_descr\": { \"rules\": [46], \"inclusive\": false }, \"acc_title\": { \"rules\": [44], \"inclusive\": false }, \"open_directive\": { \"rules\": [1, 8], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3, 8], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4, 8], \"inclusive\": false }, \"ID\": { \"rules\": [7, 8, 15], \"inclusive\": false }, \"ALIAS\": { \"rules\": [7, 8, 16, 17], \"inclusive\": false }, \"LINE\": { \"rules\": [7, 8, 29], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet prevActor = void 0;\nlet actors = {};\nlet boxes = [];\nlet messages = [];\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled;\nlet currentBox = void 0;\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.m.parseDirective(this, statement, context, type);\n};\nconst addBox = function(data) {\n boxes.push({\n name: data.text,\n wrap: data.wrap === void 0 && autoWrap() || !!data.wrap,\n fill: data.color,\n actorKeys: []\n });\n currentBox = boxes.slice(-1)[0];\n};\nconst addActor = function(id, name, description, type) {\n let assignedBox = currentBox;\n const old = actors[id];\n if (old) {\n if (currentBox && old.box && currentBox !== old.box) {\n throw new Error(\n \"A same participant should only be defined in one Box: \" + old.name + \" can't be in '\" + old.box.name + \"' and in '\" + currentBox.name + \"' at the same time.\"\n );\n }\n assignedBox = old.box ? old.box : currentBox;\n old.box = assignedBox;\n if (old && name === old.name && description == null) {\n return;\n }\n }\n if (description == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n actors[id] = {\n box: assignedBox,\n name,\n description: description.text,\n wrap: description.wrap === void 0 && autoWrap() || !!description.wrap,\n prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type || \"participant\"\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n if (currentBox) {\n currentBox.actorKeys.push(id);\n }\n prevActor = id;\n};\nconst activationCount = (part) => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n if (messages[i].type === LINETYPE.ACTIVE_START && messages[i].from.actor === part) {\n count++;\n }\n if (messages[i].type === LINETYPE.ACTIVE_END && messages[i].from.actor === part) {\n count--;\n }\n }\n return count;\n};\nconst addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n answer\n });\n};\nconst addSignal = function(idFrom, idTo, message = { text: void 0, wrap: void 0 }, messageType) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n let error = new Error(\"Trying to inactivate an inactive participant (\" + idFrom.actor + \")\");\n error.hash = {\n text: \"->>-\",\n token: \"->>-\",\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: messageType\n });\n return true;\n};\nconst hasAtLeastOneBox = function() {\n return boxes.length > 0;\n};\nconst hasAtLeastOneBoxWithTitle = function() {\n return boxes.some((b) => b.name);\n};\nconst getMessages = function() {\n return messages;\n};\nconst getBoxes = function() {\n return boxes;\n};\nconst getActors = function() {\n return actors;\n};\nconst getActor = function(id) {\n return actors[id];\n};\nconst getActorKeys = function() {\n return Object.keys(actors);\n};\nconst enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nconst disableSequenceNumbers = function() {\n sequenceNumbersEnabled = false;\n};\nconst showSequenceNumbers = () => sequenceNumbersEnabled;\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = () => {\n if (wrapEnabled !== void 0) {\n return wrapEnabled;\n }\n return (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().sequence.wrap;\n};\nconst clear = function() {\n actors = {};\n boxes = [];\n messages = [];\n sequenceNumbersEnabled = false;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^:?(?:no)?wrap:/, \"\").trim(),\n wrap: _str.match(/^:?wrap:/) !== null ? true : _str.match(/^:?nowrap:/) !== null ? false : void 0\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"parseMessage:\", message);\n return message;\n};\nconst parseBoxData = function(str) {\n const match = str.match(/^((?:rgba?|hsla?)\\s*\\(.*\\)|\\w*)(.*)$/);\n let color = match != null && match[1] ? match[1].trim() : \"transparent\";\n let title = match != null && match[2] ? match[2].trim() : void 0;\n if (window && window.CSS) {\n if (!window.CSS.supports(\"color\", color)) {\n color = \"transparent\";\n title = str.trim();\n }\n } else {\n const style = new Option().style;\n style.color = color;\n if (style.color !== color) {\n color = \"transparent\";\n title = str.trim();\n }\n }\n const boxData = {\n color,\n text: title !== void 0 ? (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(title.replace(/^:?(?:no)?wrap:/, \"\"), (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)()) : void 0,\n wrap: title !== void 0 ? title.match(/^:?wrap:/) !== null ? true : title.match(/^:?nowrap:/) !== null ? false : void 0 : void 0\n };\n return boxData;\n};\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst addNote = function(actor, placement, message) {\n ({\n actor,\n placement,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap\n });\n const actors2 = [].concat(actor, actor);\n messages.push({\n from: actors2[0],\n to: actors2[1],\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: LINETYPE.NOTE,\n placement\n });\n};\nconst addLinks = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(text.text, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n const links = JSON.parse(sanitizedText);\n insertLinks(actor, links);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while parsing actor link text\", e);\n }\n};\nconst addALink = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n const links = {};\n let sanitizedText = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(text.text, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n var sep = sanitizedText.indexOf(\"@\");\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n var label = sanitizedText.slice(0, sep - 1).trim();\n var link = sanitizedText.slice(sep + 1).trim();\n links[label] = link;\n insertLinks(actor, links);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while parsing actor link text\", e);\n }\n};\nfunction insertLinks(actor, links) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (let key in links) {\n actor.links[key] = links[key];\n }\n }\n}\nconst addProperties = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.d)(text.text, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n const properties = JSON.parse(sanitizedText);\n insertProperties(actor, properties);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while parsing actor properties text\", e);\n }\n};\nfunction insertProperties(actor, properties) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (let key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n}\nfunction boxEnd() {\n currentBox = void 0;\n}\nconst addDetails = function(actorId, text) {\n const actor = getActor(actorId);\n const elem = document.getElementById(text.text);\n try {\n const text2 = elem.innerHTML;\n const details = JSON.parse(text2);\n if (details[\"properties\"]) {\n insertProperties(actor, details[\"properties\"]);\n }\n if (details[\"links\"]) {\n insertLinks(actor, details[\"links\"]);\n }\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while parsing actor details text\", e);\n }\n};\nconst getActorProperty = function(actor, key) {\n if (actor !== void 0 && actor.properties !== void 0) {\n return actor.properties[key];\n }\n return void 0;\n};\nconst apply = function(param) {\n if (Array.isArray(param)) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case \"sequenceIndex\":\n messages.push({\n from: void 0,\n to: void 0,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible\n },\n wrap: false,\n type: param.signalType\n });\n break;\n case \"addParticipant\":\n addActor(param.actor, param.actor, param.description, \"participant\");\n break;\n case \"addActor\":\n addActor(param.actor, param.actor, param.description, \"actor\");\n break;\n case \"activeStart\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"activeEnd\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"addNote\":\n addNote(param.actor, param.placement, param.text);\n break;\n case \"addLinks\":\n addLinks(param.actor, param.text);\n break;\n case \"addALink\":\n addALink(param.actor, param.text);\n break;\n case \"addProperties\":\n addProperties(param.actor, param.text);\n break;\n case \"addDetails\":\n addDetails(param.actor, param.text);\n break;\n case \"addMessage\":\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n case \"boxStart\":\n addBox(param.boxData);\n break;\n case \"boxEnd\":\n boxEnd();\n break;\n case \"loopStart\":\n addSignal(void 0, void 0, param.loopText, param.signalType);\n break;\n case \"loopEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"rectStart\":\n addSignal(void 0, void 0, param.color, param.signalType);\n break;\n case \"rectEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"optStart\":\n addSignal(void 0, void 0, param.optText, param.signalType);\n break;\n case \"optEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"altStart\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"else\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"altEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"setAccTitle\":\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s)(param.text);\n break;\n case \"parStart\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"and\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"parEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"criticalStart\":\n addSignal(void 0, void 0, param.criticalText, param.signalType);\n break;\n case \"option\":\n addSignal(void 0, void 0, param.optionText, param.signalType);\n break;\n case \"criticalEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"breakStart\":\n addSignal(void 0, void 0, param.breakText, param.signalType);\n break;\n case \"breakEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n }\n }\n};\nconst db = {\n addActor,\n addMessage,\n addSignal,\n addLinks,\n addDetails,\n addProperties,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n disableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getActor,\n getActorKeys,\n getActorProperty,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.g,\n getBoxes,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.t,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.r,\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)().sequence,\n clear,\n parseMessage,\n parseBoxData,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.s,\n apply,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.b,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.a,\n hasAtLeastOneBox,\n hasAtLeastOneBoxWithTitle\n};\nconst getStyles = (options) => `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n`;\nconst styles = getStyles;\nconst drawRect = function(elem, rectData) {\n return (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.d)(elem, rectData);\n};\nconst addPopupInteraction = (id, actorCnt2) => {\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.E)(() => {\n const arr = document.querySelectorAll(id);\n if (arr.length === 0) {\n return;\n }\n arr[0].addEventListener(\"mouseover\", function() {\n popupMenuUpFunc(\"actor\" + actorCnt2 + \"_popup\");\n });\n arr[0].addEventListener(\"mouseout\", function() {\n popupMenuDownFunc(\"actor\" + actorCnt2 + \"_popup\");\n });\n });\n};\nconst drawPopup = function(elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n const links = actor.links;\n const actorCnt2 = actor.actorCnt;\n const rectData = actor.rectData;\n var displayValue = \"none\";\n if (forceMenus) {\n displayValue = \"block !important\";\n }\n const g = elem.append(\"g\");\n g.attr(\"id\", \"actor\" + actorCnt2 + \"_popup\");\n g.attr(\"class\", \"actorPopupMenu\");\n g.attr(\"display\", displayValue);\n addPopupInteraction(\"#actor\" + actorCnt2 + \"_popup\", actorCnt2);\n var actorClass = \"\";\n if (rectData.class !== void 0) {\n actorClass = \" \" + rectData.class;\n }\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n const rectElem = g.append(\"rect\");\n rectElem.attr(\"class\", \"actorPopupMenuPanel\" + actorClass);\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.height);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", menuWidth);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append(\"a\");\n var sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__.sanitizeUrl)(links[key]);\n linkElem.attr(\"xlink:href\", sanitizedLink);\n linkElem.attr(\"target\", \"_blank\");\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: \"actor\" },\n textAttrs\n );\n linkY += 30;\n }\n }\n rectElem.attr(\"height\", linkY);\n return { height: rectData.height + linkY, width: menuWidth };\n};\nconst popupMenu = function(popid) {\n return \"var pu = document.getElementById('\" + popid + \"'); if (pu != null) { pu.style.display = 'block'; }\";\n};\nconst popdownMenu = function(popid) {\n return \"var pu = document.getElementById('\" + popid + \"'); if (pu != null) { pu.style.display = 'none'; }\";\n};\nconst popupMenuUpFunc = function(popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = \"block\";\n }\n};\nconst popupMenuDownFunc = function(popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = \"none\";\n }\n};\nconst drawText = function(elem, textData) {\n let prevTextHeight = 0;\n let textHeight = 0;\n const lines = textData.text.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex);\n const [_textFontSize, _textFontSizePx] = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.B)(textData.fontSize);\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\n switch (textData.valign) {\n case \"top\":\n case \"start\":\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case \"middle\":\n case \"center\":\n yfunc = () => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case \"bottom\":\n case \"end\":\n yfunc = () => Math.round(\n textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin\n );\n break;\n }\n }\n if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) {\n switch (textData.anchor) {\n case \"left\":\n case \"start\":\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = \"start\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n case \"middle\":\n case \"center\":\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = \"middle\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n case \"right\":\n case \"end\":\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = \"end\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n }\n }\n for (let [i, line] of lines.entries()) {\n if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) {\n dy = i * _textFontSize;\n }\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", yfunc());\n if (textData.anchor !== void 0) {\n textElem.attr(\"text-anchor\", textData.anchor).attr(\"dominant-baseline\", textData.dominantBaseline).attr(\"alignment-baseline\", textData.alignmentBaseline);\n }\n if (textData.fontFamily !== void 0) {\n textElem.style(\"font-family\", textData.fontFamily);\n }\n if (_textFontSizePx !== void 0) {\n textElem.style(\"font-size\", _textFontSizePx);\n }\n if (textData.fontWeight !== void 0) {\n textElem.style(\"font-weight\", textData.fontWeight);\n }\n if (textData.fill !== void 0) {\n textElem.attr(\"fill\", textData.fill);\n }\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n if (textData.dy !== void 0) {\n textElem.attr(\"dy\", textData.dy);\n } else if (dy !== 0) {\n textElem.attr(\"dy\", dy);\n }\n const text = line || _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.Z;\n if (textData.tspan) {\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x);\n if (textData.fill !== void 0) {\n span.attr(\"fill\", textData.fill);\n }\n span.text(text);\n } else {\n textElem.text(text);\n }\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n textElems.push(textElem);\n }\n return textElems;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.height / 2;\n drawText(elem, txtObject);\n return polygon;\n};\nlet actorCnt = -1;\nconst fixLifeLineHeights = (diagram2, bounds2) => {\n if (!diagram2.selectAll) {\n return;\n }\n diagram2.selectAll(\".actor-line\").attr(\"class\", \"200\").attr(\"y2\", bounds2 - 55);\n};\nconst drawActorTypeParticipant = function(elem, actor, conf2, isFooter) {\n const center = actor.x + actor.width / 2;\n const centerY = actor.y + 5;\n const boxpluslineGroup = elem.append(\"g\");\n var g = boxpluslineGroup;\n if (!isFooter) {\n actorCnt++;\n g.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n g = boxpluslineGroup.append(\"g\");\n actor.actorCnt = actorCnt;\n if (actor.links != null) {\n g.attr(\"id\", \"root-\" + actorCnt);\n addPopupInteraction(\"#root-\" + actorCnt, actorCnt);\n }\n }\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n var cssclass = \"actor\";\n if (actor.properties != null && actor.properties[\"class\"]) {\n cssclass = actor.properties[\"class\"];\n } else {\n rect.fill = \"#eaeaea\";\n }\n rect.x = actor.x;\n rect.y = actor.y;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n const rectElem = drawRect(g, rect);\n actor.rectData = rect;\n if (actor.properties != null && actor.properties[\"icon\"]) {\n const iconSrc = actor.properties[\"icon\"].trim();\n if (iconSrc.charAt(0) === \"@\") {\n (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.b)(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.c)(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n _drawTextCandidateFunc(conf2)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n let height = actor.height;\n if (rectElem.node) {\n const bounds2 = rectElem.node().getBBox();\n actor.height = bounds2.height;\n height = bounds2.height;\n }\n return height;\n};\nconst drawActorTypeActor = function(elem, actor, conf2, isFooter) {\n const center = actor.x + actor.width / 2;\n const centerY = actor.y + 80;\n if (!isFooter) {\n actorCnt++;\n elem.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n }\n const actElem = elem.append(\"g\");\n actElem.attr(\"class\", \"actor-man\");\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = \"#eaeaea\";\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = \"actor\";\n rect.rx = 3;\n rect.ry = 3;\n actElem.append(\"line\").attr(\"id\", \"actor-man-torso\" + actorCnt).attr(\"x1\", center).attr(\"y1\", actor.y + 25).attr(\"x2\", center).attr(\"y2\", actor.y + 45);\n actElem.append(\"line\").attr(\"id\", \"actor-man-arms\" + actorCnt).attr(\"x1\", center - 18).attr(\"y1\", actor.y + 33).attr(\"x2\", center + 18).attr(\"y2\", actor.y + 33);\n actElem.append(\"line\").attr(\"x1\", center - 18).attr(\"y1\", actor.y + 60).attr(\"x2\", center).attr(\"y2\", actor.y + 45);\n actElem.append(\"line\").attr(\"x1\", center).attr(\"y1\", actor.y + 45).attr(\"x2\", center + 16).attr(\"y2\", actor.y + 60);\n const circle = actElem.append(\"circle\");\n circle.attr(\"cx\", actor.x + actor.width / 2);\n circle.attr(\"cy\", actor.y + 10);\n circle.attr(\"r\", 15);\n circle.attr(\"width\", actor.width);\n circle.attr(\"height\", actor.height);\n const bounds2 = actElem.node().getBBox();\n actor.height = bounds2.height;\n _drawTextCandidateFunc(conf2)(\n actor.description,\n actElem,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n return actor.height;\n};\nconst drawActor = function(elem, actor, conf2, isFooter) {\n switch (actor.type) {\n case \"actor\":\n return drawActorTypeActor(elem, actor, conf2, isFooter);\n case \"participant\":\n return drawActorTypeParticipant(elem, actor, conf2, isFooter);\n }\n};\nconst drawBox = function(elem, box, conf2) {\n const boxplustextGroup = elem.append(\"g\");\n const g = boxplustextGroup;\n drawBackgroundRect(g, box);\n if (box.name) {\n _drawTextCandidateFunc(conf2)(\n box.name,\n g,\n box.x,\n box.y + (box.textMaxHeight || 0) / 2,\n box.width,\n 0,\n { class: \"text\" },\n conf2\n );\n }\n g.lower();\n};\nconst anchorElement = function(elem) {\n return elem.append(\"g\");\n};\nconst drawActivation = function(elem, bounds2, verticalPos, conf2, actorActivations2) {\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n const g = bounds2.anchored;\n rect.x = bounds2.startx;\n rect.y = bounds2.starty;\n rect.class = \"activation\" + actorActivations2 % 3;\n rect.width = bounds2.stopx - bounds2.startx;\n rect.height = verticalPos - bounds2.starty;\n drawRect(g, rect);\n};\nconst drawLoop = function(elem, loopModel, labelText, conf2) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf2;\n const g = elem.append(\"g\");\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g.append(\"line\").attr(\"x1\", startx).attr(\"y1\", starty).attr(\"x2\", stopx).attr(\"y2\", stopy).attr(\"class\", \"loopLine\");\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (loopModel.sections !== void 0) {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n \"stroke-dasharray\",\n \"3, 3\"\n );\n });\n }\n let txt = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.e)();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = \"labelText\";\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.textMargin = boxTextMargin;\n txt.class = \"loopText\";\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n let textElem = drawText(g, txt);\n if (loopModel.sectionTitles !== void 0) {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = \"loopText\";\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.a)(elem, bounds2);\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertSequenceNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 4).attr(\"refY\", 5);\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1pt\").attr(\"d\", \"M 1,2 L 6,7 M 6,2 L 1,7\");\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: void 0,\n style: \"#666\",\n width: void 0,\n height: void 0,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: void 0\n };\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\n const [_actorFontSize, _actorFontSizePx] = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.B)(actorFontSize);\n const lines = content.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * _actorFontSize - _actorFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").style(\"font-size\", _actorFontSizePx).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst _drawMenuItemTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\n const lines = content.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - actorFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").style(\"font-size\", actorFontSize).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawBox,\n drawPopup,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n popupMenu,\n popdownMenu,\n fixLifeLineHeights,\n sanitizeUrl: _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__.sanitizeUrl\n};\nlet conf = {};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h));\n },\n clear: function() {\n this.actors = [];\n this.boxes = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addBox: function(boxModel) {\n this.boxes.push(boxModel);\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n boxes: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n setConf((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)());\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"startx\", startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopx\", stopx + n * conf.boxMargin, Math.max);\n if (!(type === \"activation\")) {\n _self.updateVal(item, \"startx\", startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, \"stopx\", stopx + n * conf.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"starty\", starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopy\", stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn(\"activation\"));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(startx, stopx);\n const _stopx = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(startx, stopx);\n const _starty = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(starty, stopy);\n const _stopy = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(starty, stopy);\n this.updateVal(bounds.data, \"startx\", _startx, Math.min);\n this.updateVal(bounds.data, \"starty\", _starty, Math.min);\n this.updateVal(bounds.data, \"stopx\", _stopx, Math.max);\n this.updateVal(bounds.data, \"stopy\", _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram2, actors2) {\n const actorRect = actors2[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: void 0,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram2)\n });\n },\n endActivation: function(message) {\n const lastActorActivationIdx = this.activations.map(function(activation) {\n return activation.actor;\n }).lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n return {\n startx: void 0,\n starty: this.verticalPos,\n stopx: void 0,\n stopy: void 0,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill\n };\n },\n newLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n isLoopOverlap: function() {\n return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false;\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n saveVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.savedVerticalPos = this.verticalPos;\n }\n },\n resetVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.verticalPos = this.savedVerticalPos;\n }\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(this.data.stopy, this.verticalPos);\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.g)();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = \"note\";\n const g = elem.append(\"g\");\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.e)();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = \"1em\";\n textObj.text = noteModel.message;\n textObj.class = \"noteText\";\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = \"center\";\n const textElem = drawText(g, textObj);\n const textHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n rectElem.attr(\"height\", textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight\n };\n};\nfunction boundMessage(_diagram, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.splitBreaks(message).length;\n const textDims = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(message, messageFont(conf));\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n let lineStartY;\n let totalOffset = textDims.height - 10;\n const textWidth = textDims.width;\n if (startx === stopx) {\n lineStartY = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n bounds.insert(startx, lineStartY - 10, stopx, lineStartY);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n return lineStartY;\n}\nconst drawMessage = function(diagram2, msgModel, lineStartY, diagObj) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n const textDims = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(message, messageFont(conf));\n const textObj = (0,_svgDrawCommon_f26cad39_js__WEBPACK_IMPORTED_MODULE_6__.e)();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = \"messageText\";\n textObj.dy = \"1em\";\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = \"center\";\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n drawText(diagram2, textObj);\n const textWidth = textDims.width;\n let line;\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = diagram2.append(\"path\").attr(\n \"d\",\n `M ${startx},${lineStartY} H ${startx + _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}`\n );\n } else {\n line = diagram2.append(\"path\").attr(\n \"d\",\n \"M \" + startx + \",\" + lineStartY + \" C \" + (startx + 60) + \",\" + (lineStartY - 10) + \" \" + (startx + 60) + \",\" + (lineStartY + 30) + \" \" + startx + \",\" + (lineStartY + 20)\n );\n }\n } else {\n line = diagram2.append(\"line\");\n line.attr(\"x1\", startx);\n line.attr(\"y1\", lineStartY);\n line.attr(\"x2\", stopx);\n line.attr(\"y2\", lineStartY);\n }\n if (type === diagObj.db.LINETYPE.DOTTED || type === diagObj.db.LINETYPE.DOTTED_CROSS || type === diagObj.db.LINETYPE.DOTTED_POINT || type === diagObj.db.LINETYPE.DOTTED_OPEN) {\n line.style(\"stroke-dasharray\", \"3, 3\");\n line.attr(\"class\", \"messageLine1\");\n } else {\n line.attr(\"class\", \"messageLine0\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n line.attr(\"stroke-width\", 2);\n line.attr(\"stroke\", \"none\");\n line.style(\"fill\", \"none\");\n if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {\n line.attr(\"marker-end\", \"url(\" + url + \"#filled-head)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {\n line.attr(\"marker-end\", \"url(\" + url + \"#crosshead)\");\n }\n if (sequenceVisible || conf.showSequenceNumbers) {\n line.attr(\"marker-start\", \"url(\" + url + \"#sequencenumber)\");\n diagram2.append(\"text\").attr(\"x\", startx).attr(\"y\", lineStartY + 4).attr(\"font-family\", \"sans-serif\").attr(\"font-size\", \"12px\").attr(\"text-anchor\", \"middle\").attr(\"class\", \"sequenceNumber\").text(sequenceIndex);\n }\n};\nconst drawActors = function(diagram2, actors2, actorKeys, verticalPos, configuration, messages2, isFooter) {\n if (configuration.hideUnusedParticipants === true) {\n const newActors = /* @__PURE__ */ new Set();\n messages2.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n let prevWidth = 0;\n let prevMargin = 0;\n let maxHeight = 0;\n let prevBox = void 0;\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n const box = actor.box;\n if (prevBox && prevBox != box) {\n if (!isFooter) {\n bounds.models.addBox(prevBox);\n }\n prevMargin += conf.boxMargin + prevBox.margin;\n }\n if (box && box != prevBox) {\n if (!isFooter) {\n box.x = prevWidth + prevMargin;\n box.y = verticalPos;\n }\n prevMargin += box.margin;\n }\n actor.width = actor.width || conf.width;\n actor.height = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n actor.x = prevWidth + prevMargin;\n actor.y = bounds.getVerticalPos();\n const height = svgDraw.drawActor(diagram2, actor, conf, isFooter);\n maxHeight = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(maxHeight, height);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n prevWidth += actor.width + prevMargin;\n if (actor.box) {\n actor.box.width = prevWidth + box.margin - actor.box.x;\n }\n prevMargin = actor.margin;\n prevBox = actor.box;\n bounds.models.addActor(actor);\n }\n if (prevBox && !isFooter) {\n bounds.models.addBox(prevBox);\n }\n bounds.bumpVerticalPos(maxHeight);\n};\nconst drawActorsPopup = function(diagram2, actors2, actorKeys, doc) {\n let maxHeight = 0;\n let maxWidth = 0;\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n const minMenuWidth = getRequiredPopupWidth(actor);\n const menuDimensions = svgDraw.drawPopup(\n diagram2,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n return { maxHeight, maxWidth };\n};\nconst setConf = function(cnf) {\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.f)(conf, cnf);\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\nconst activationBounds = function(actor, actors2) {\n const actorObj = actors2[actor];\n const activations = actorActivations(actor);\n const left = activations.reduce(function(acc, activation) {\n return _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n const right = activations.reduce(function(acc, activation) {\n return _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n const loopWidth = loopWidths[msg.id].width;\n const textConf = messageFont(conf);\n msg.message = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n const textDims = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(msg.message, textConf);\n const totalOffset = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\nconst draw = function(_text, id, _version, diagObj) {\n const { securityLevel, sequence } = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\n conf = sequence;\n diagObj.db.clear();\n diagObj.parser.parse(_text);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n bounds.init();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(diagObj.db);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(`[id=\"${id}\"]`);\n const actors2 = diagObj.db.getActors();\n const boxes2 = diagObj.db.getBoxes();\n const actorKeys = diagObj.db.getActorKeys();\n const messages2 = diagObj.db.getMessages();\n const title = diagObj.db.getDiagramTitle();\n const hasBoxes = diagObj.db.hasAtLeastOneBox();\n const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors2, messages2, diagObj);\n conf.height = calculateActorMargins(actors2, maxMessageWidthPerActor, boxes2);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n if (hasBoxTitles) {\n bounds.bumpVerticalPos(boxes2[0].textMaxHeight);\n }\n }\n drawActors(diagram2, actors2, actorKeys, 0, conf, messages2, false);\n const loopWidths = calculateLoopBounds(messages2, actors2, maxMessageWidthPerActor, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n svgDraw.insertSequenceNumber(diagram2);\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram2,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n const messagesToDraw = [];\n messages2.forEach(function(msg) {\n let loopModel, noteModel, msgModel;\n switch (msg.type) {\n case diagObj.db.LINETYPE.NOTE:\n bounds.resetVerticalPos();\n noteModel = msg.noteModel;\n drawNote(diagram2, noteModel);\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram2, actors2);\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"loop\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin,\n (message) => bounds.newLoop(void 0, message.message)\n );\n break;\n case diagObj.db.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawBackgroundRect(diagram2, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"opt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"alt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n bounds.saveVerticalPos();\n break;\n case diagObj.db.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"par\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) {\n diagObj.db.enableSequenceNumbers();\n } else {\n diagObj.db.disableSequenceNumbers();\n }\n break;\n case diagObj.db.LINETYPE.CRITICAL_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"critical\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.BREAK_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.BREAK_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"break\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n bounds.resetVerticalPos();\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();\n const lineStartY = boundMessage(diagram2, msgModel);\n messagesToDraw.push({ messageModel: msgModel, lineStartY });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.error(\"error while drawing message\", e);\n }\n }\n if ([\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n sequenceIndex = sequenceIndex + sequenceIndexStep;\n }\n });\n messagesToDraw.forEach((e) => drawMessage(diagram2, e.messageModel, e.lineStartY, diagObj));\n if (conf.mirrorActors) {\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram2, actors2, actorKeys, bounds.getVerticalPos(), conf, messages2, true);\n bounds.bumpVerticalPos(conf.boxMargin);\n fixLifeLineHeights(diagram2, bounds.getVerticalPos());\n }\n bounds.models.boxes.forEach(function(box2) {\n box2.height = bounds.getVerticalPos() - box2.y;\n bounds.insert(box2.x, box2.y, box2.x + box2.width, box2.height);\n box2.startx = box2.x;\n box2.starty = box2.y;\n box2.stopx = box2.startx + box2.width;\n box2.stopy = box2.starty + box2.height;\n box2.stroke = \"rgb(0,0,0, 0.5)\";\n svgDraw.drawBox(diagram2, box2, conf);\n });\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n }\n const requiredBoxSize = drawActorsPopup(diagram2, actors2, actorKeys, doc);\n const { bounds: box } = bounds.getBounds();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"For line height fix Querying: #\" + id + \" .actor-line\");\n const actorLines = (0,d3__WEBPACK_IMPORTED_MODULE_0__.selectAll)(\"#\" + id + \" .actor-line\");\n actorLines.attr(\"y2\", box.stopy);\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr(\"y\", -25);\n }\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.i)(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title ? 40 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(`models:`, bounds.models);\n};\nfunction getMaxMessageWidthPerActor(actors2, messages2, diagObj) {\n const maxMessageWidthPerActor = {};\n messages2.forEach(function(msg) {\n if (actors2[msg.to] && actors2[msg.from]) {\n const actor = actors2[msg.to];\n if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n const isNote = msg.placement !== void 0;\n const isMessage = !isNote;\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n const wrappedMessage = msg.wrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;\n const messageDimensions = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n maxMessageWidthPerActor[msg.to] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"maxMessageWidthPerActor:\", maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n}\nconst getRequiredPopupWidth = function(actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (const key in actor.links) {\n const labelDimensions = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(key, textFont);\n const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n return requiredPopupWidth;\n};\nfunction calculateActorMargins(actors2, actorToMessageWidth, boxes2) {\n let maxHeight = 0;\n Object.keys(actors2).forEach((prop) => {\n const actor = actors2[prop];\n if (actor.wrap) {\n actor.description = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(actor.description, actorFont(conf));\n actor.width = actor.wrap ? conf.width : _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);\n actor.height = actor.wrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(actDims.height, conf.height) : conf.height;\n maxHeight = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(maxHeight, actor.height);\n });\n for (const actorKey in actorToMessageWidth) {\n const actor = actors2[actorKey];\n if (!actor) {\n continue;\n }\n const nextActor = actors2[actor.nextActor];\n if (!nextActor) {\n const messageWidth2 = actorToMessageWidth[actorKey];\n const actorWidth2 = messageWidth2 + conf.actorMargin - actor.width / 2;\n actor.margin = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(actorWidth2, conf.actorMargin);\n continue;\n }\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n actor.margin = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(actorWidth, conf.actorMargin);\n }\n let maxBoxHeight = 0;\n boxes2.forEach((box) => {\n const textFont = messageFont(conf);\n let totalWidth = box.actorKeys.reduce((total, aKey) => {\n return total += actors2[aKey].width + (actors2[aKey].margin || 0);\n }, 0);\n totalWidth -= 2 * conf.boxTextMargin;\n if (box.wrap) {\n box.name = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);\n }\n const boxMsgDimensions = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(box.name, textFont);\n maxBoxHeight = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(boxMsgDimensions.height, maxBoxHeight);\n const minWidth = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);\n box.margin = conf.boxTextMargin;\n if (totalWidth < minWidth) {\n const missing = (minWidth - totalWidth) / 2;\n box.margin += missing;\n }\n });\n boxes2.forEach((box) => box.textMaxHeight = maxBoxHeight);\n return _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(maxHeight, conf.height);\n}\nconst buildNoteModel = function(msg, actors2, diagObj) {\n const startx = actors2[msg.from].x;\n const stopx = actors2[msg.to].x;\n const shouldWrap = msg.wrap && msg.message;\n let textDimensions = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(\n shouldWrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n const noteModel = {\n width: shouldWrap ? conf.width : _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors2[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, textDimensions.width) : _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n actors2[msg.from].width / 2 + actors2[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors2[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin) : _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n actors2[msg.from].width / 2 + actors2[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors2[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(\n shouldWrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(\n msg.message,\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, actors2[msg.from].width),\n noteFont(conf)\n ) : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap ? _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(conf.width, actors2[msg.from].width) : _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n actors2[msg.from].width,\n conf.width,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors2[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width = Math.abs(startx + actors2[msg.from].width / 2 - (stopx + actors2[msg.to].width / 2)) + conf.actorMargin;\n noteModel.startx = startx < stopx ? startx + actors2[msg.from].width / 2 - conf.actorMargin / 2 : stopx + actors2[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n noteFont(conf)\n );\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\nconst buildMessageModel = function(msg, actors2, diagObj) {\n let process = false;\n if ([\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n process = true;\n }\n if (!process) {\n return {};\n }\n const fromBounds = activationBounds(msg.from, actors2);\n const toBounds = activationBounds(msg.to, actors2);\n const fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n const toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n const allBounds = [...fromBounds, ...toBounds];\n const boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n if (msg.wrap && msg.message) {\n msg.message = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.wrapLabel(\n msg.message,\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.calculateTextDimensions(msg.message, messageFont(conf));\n return {\n width: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\nconst calculateLoopBounds = function(messages2, actors2, _maxWidthPerActor, diagObj) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n messages2.forEach(function(msg) {\n msg.id = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.u.random({ length: 10 });\n switch (msg.type) {\n case diagObj.db.LINETYPE.LOOP_START:\n case diagObj.db.LINETYPE.ALT_START:\n case diagObj.db.LINETYPE.OPT_START:\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n case diagObj.db.LINETYPE.CRITICAL_START:\n case diagObj.db.LINETYPE.BREAK_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n case diagObj.db.LINETYPE.PAR_AND:\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n case diagObj.db.LINETYPE.ALT_END:\n case diagObj.db.LINETYPE.OPT_END:\n case diagObj.db.LINETYPE.PAR_END:\n case diagObj.db.LINETYPE.CRITICAL_END:\n case diagObj.db.LINETYPE.BREAK_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors2[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations.map((a) => a.actor).lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== void 0;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors2, diagObj);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(current.from, noteModel.startx);\n current.to = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(current.to, noteModel.startx + noteModel.width);\n current.width = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors2, diagObj);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach((stk) => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n const from = actors2[msg.from];\n const to = actors2[msg.to];\n current.from = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(\n to.x + msgModel.width / 2,\n to.x + from.width / 2,\n current.to\n );\n current.width = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMin(msgModel.startx, current.from);\n current.to = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(msgModel.stopx, current.to);\n current.width = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.e.getMax(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"Loop type widths:\", loops);\n return loops;\n};\nconst renderer = {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zZXF1ZW5jZURpYWdyYW0tNWRmZDAwNDkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBc1g7QUFDL1U7QUFDaUk7QUFDbEg7QUFDbkM7QUFDSjtBQUNJO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQix5N0NBQXk3QztBQUN6OEMsa0JBQWtCLCs1QkFBKzVCO0FBQ2o3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isd0RBQXdEO0FBQ3ZGLDRCQUE0QixxQ0FBcUM7QUFDakU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw4RkFBOEY7QUFDN0gsNEJBQTRCLHlFQUF5RTtBQUNyRztBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkZBQTJGO0FBQzFILDRCQUE0Qix1RkFBdUY7QUFDbkg7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDJGQUEyRjtBQUMxSCw0QkFBNEIsdUZBQXVGO0FBQ25IO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiwyRkFBMkY7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUCw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLGlCQUFpQiwwQkFBMEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0NBQW9DO0FBQ3BFO0FBQ0EsVUFBVTtBQUNWLFVBQVUseURBQVM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsY0FBYztBQUN4QixFQUFFLHlEQUFTO0FBQ1gscUJBQXFCLDZDQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVEQUFnQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx5REFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyw2REFBZTtBQUN2RCxnQ0FBZ0MsMkVBQTZCO0FBQzdEO0FBQ0E7QUFDQSwwQ0FBMEMsMERBQWE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLDRDQUE0QywwREFBYTtBQUN6RDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsNENBQTRDLDBEQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQywwREFBYTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsNENBQTRDLDBEQUFhO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixtREFBbUQsMERBQWE7QUFDaEU7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EscURBQXFELDBEQUFhO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMERBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMkVBQTZCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw2REFBZTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJFQUE2QjtBQUNqRCw0Q0FBNEMsMERBQWE7QUFDekQsZ0NBQWdDLDBEQUFhO0FBQzdDLGdCQUFnQiwwREFBYTtBQUM3QixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDBEQUFhO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDBEQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsaUJBQWlCLDZEQUFlO0FBQ2hDO0FBQ0EsNkJBQTZCLDJFQUE2QjtBQUMxRCxtQkFBbUIsMERBQWE7QUFDaEMscUJBQXFCLDBEQUFhO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxTQUFTLDBEQUFhO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMkVBQTZCO0FBQ3BELGlCQUFpQiw2REFBZTtBQUNoQztBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMERBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywwREFBYSxxQ0FBcUMsMERBQWE7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osbUNBQW1DLDBEQUFhLDJEQUEyRCwwREFBYTtBQUN4SDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixxQkFBcUIsMkVBQTZCO0FBQ2xELG1CQUFtQiw2REFBZTtBQUNsQztBQUNBLFFBQVEsMERBQWE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsMERBQWEsd0NBQXdDLDBEQUFhO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkRBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseURBQVM7QUFDWCxXQUFXLGlCQUFpQixHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixHQUFHLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLGlCQUFpQixHQUFHLFlBQVk7QUFDNUk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDZEQUFlO0FBQ2pDO0FBQ0EsTUFBTSwwREFBYTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsMkVBQTZCO0FBQy9DO0FBQ0EsV0FBVywwREFBYTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDBEQUFZLEdBQUcsWUFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsMERBQWE7QUFDcEMscUJBQXFCLDBEQUFhO0FBQ2xDLHdCQUF3QiwwREFBYTtBQUNyQyxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMERBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMERBQWE7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMERBQWE7QUFDekMsWUFBWTtBQUNaLDJCQUEyQiwwREFBYTtBQUN4Qyx5QkFBeUIsMERBQWE7QUFDdEMsNEJBQTRCLDBEQUFhO0FBQ3pDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxFQUFFLHlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zZXF1ZW5jZURpYWdyYW0tNWRmZDAwNDkuanM/NDliYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnIGFzIGdldEFjY1RpdGxlLCB0IGFzIGdldERpYWdyYW1UaXRsZSwgciBhcyBzZXREaWFncmFtVGl0bGUsIGMgYXMgZ2V0Q29uZmlnLCBzIGFzIHNldEFjY1RpdGxlLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBtIGFzIG1lcm1haWRBUEksIHYgYXMgY2xlYXIkMSwgbCBhcyBsb2csIGQgYXMgc2FuaXRpemVUZXh0LCBlIGFzIGNvbW1vbiwgQiBhcyBwYXJzZUZvbnRTaXplLCBFIGFzIGFkZEZ1bmN0aW9uLCBaIGFzIFpFUk9fV0lEVEhfU1BBQ0UsIGYgYXMgYXNzaWduV2l0aERlcHRoLCBpIGFzIGNvbmZpZ3VyZVN2Z1NpemUsIHUgYXMgdXRpbHMgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIHNlbGVjdEFsbCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgZCBhcyBkcmF3UmVjdCQxLCBhIGFzIGRyYXdCYWNrZ3JvdW5kUmVjdCQxLCBiIGFzIGRyYXdFbWJlZGRlZEltYWdlLCBjIGFzIGRyYXdJbWFnZSwgZSBhcyBnZXRUZXh0T2JqJDEsIGcgYXMgZ2V0Tm90ZVJlY3QkMSB9IGZyb20gXCIuL3N2Z0RyYXdDb21tb24tZjI2Y2FkMzkuanNcIjtcbmltcG9ydCB7IHNhbml0aXplVXJsIH0gZnJvbSBcIkBicmFpbnRyZWUvc2FuaXRpemUtdXJsXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJkb21wdXJpZnlcIjtcbmltcG9ydCBcImtocm9tYVwiO1xuaW1wb3J0IFwibG9kYXNoLWVzL21lbW9pemUuanNcIjtcbmltcG9ydCBcInN0eWxpc1wiO1xuaW1wb3J0IFwibG9kYXNoLWVzL2lzRW1wdHkuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCAyXSwgJFYxID0gWzEsIDNdLCAkVjIgPSBbMSwgNV0sICRWMyA9IFsxLCA3XSwgJFY0ID0gWzIsIDVdLCAkVjUgPSBbMSwgMTVdLCAkVjYgPSBbMSwgMTddLCAkVjcgPSBbMSwgMTldLCAkVjggPSBbMSwgMjFdLCAkVjkgPSBbMSwgMjJdLCAkVmEgPSBbMSwgMjNdLCAkVmIgPSBbMSwgMjldLCAkVmMgPSBbMSwgMzBdLCAkVmQgPSBbMSwgMzFdLCAkVmUgPSBbMSwgMzJdLCAkVmYgPSBbMSwgMzNdLCAkVmcgPSBbMSwgMzRdLCAkVmggPSBbMSwgMzVdLCAkVmkgPSBbMSwgMzZdLCAkVmogPSBbMSwgMzddLCAkVmsgPSBbMSwgMzhdLCAkVmwgPSBbMSwgMzldLCAkVm0gPSBbMSwgNDBdLCAkVm4gPSBbMSwgNDFdLCAkVm8gPSBbMSwgNDNdLCAkVnAgPSBbMSwgNDRdLCAkVnEgPSBbMSwgNDZdLCAkVnIgPSBbMSwgNDddLCAkVnMgPSBbMSwgNDhdLCAkVnQgPSBbMSwgNDldLCAkVnUgPSBbMSwgNTBdLCAkVnYgPSBbMSwgNTFdLCAkVncgPSBbMSwgNTRdLCAkVnggPSBbMSwgNCwgNSwgMTksIDIxLCAyMywgMjYsIDI4LCAzNCwgMzUsIDM2LCAzOCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NiwgNDgsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU3LCA1OCwgNjMsIDY0LCA2NSwgNjYsIDc0LCA4NF0sICRWeSA9IFs0LCA1LCAyMSwgNTUsIDU3XSwgJFZ6ID0gWzQsIDUsIDE5LCAyMSwgMjMsIDI2LCAyOCwgMzQsIDM1LCAzNiwgMzgsIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDYsIDQ4LCA0OSwgNTEsIDU1LCA1NywgNTgsIDYzLCA2NCwgNjUsIDY2LCA3NCwgODRdLCAkVkEgPSBbNCwgNSwgMTksIDIxLCAyMywgMjYsIDI4LCAzNCwgMzUsIDM2LCAzOCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NiwgNDgsIDQ5LCA1MSwgNTQsIDU1LCA1NywgNTgsIDYzLCA2NCwgNjUsIDY2LCA3NCwgODRdLCAkVkIgPSBbNCwgNSwgMTksIDIxLCAyMywgMjYsIDI4LCAzNCwgMzUsIDM2LCAzOCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NiwgNDgsIDQ5LCA1MSwgNTMsIDU1LCA1NywgNTgsIDYzLCA2NCwgNjUsIDY2LCA3NCwgODRdLCAkVkMgPSBbNCwgNSwgMTksIDIxLCAyMywgMjYsIDI4LCAzNCwgMzUsIDM2LCAzOCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NiwgNDgsIDQ5LCA1MSwgNTIsIDU1LCA1NywgNTgsIDYzLCA2NCwgNjUsIDY2LCA3NCwgODRdLCAkVkQgPSBbNzIsIDczLCA3NF0sICRWRSA9IFsxLCAxMjhdLCAkVkYgPSBbMSwgNCwgNSwgNywgMTksIDIxLCAyMywgMjYsIDI4LCAzNCwgMzUsIDM2LCAzOCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NiwgNDgsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU3LCA1OCwgNjMsIDY0LCA2NSwgNjYsIDc0LCA4NF07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJTUEFDRVwiOiA0LCBcIk5FV0xJTkVcIjogNSwgXCJkaXJlY3RpdmVcIjogNiwgXCJTRFwiOiA3LCBcImRvY3VtZW50XCI6IDgsIFwibGluZVwiOiA5LCBcInN0YXRlbWVudFwiOiAxMCwgXCJib3hfc2VjdGlvblwiOiAxMSwgXCJib3hfbGluZVwiOiAxMiwgXCJwYXJ0aWNpcGFudF9zdGF0ZW1lbnRcIjogMTMsIFwib3BlbkRpcmVjdGl2ZVwiOiAxNCwgXCJ0eXBlRGlyZWN0aXZlXCI6IDE1LCBcImNsb3NlRGlyZWN0aXZlXCI6IDE2LCBcIjpcIjogMTcsIFwiYXJnRGlyZWN0aXZlXCI6IDE4LCBcImJveFwiOiAxOSwgXCJyZXN0T2ZMaW5lXCI6IDIwLCBcImVuZFwiOiAyMSwgXCJzaWduYWxcIjogMjIsIFwiYXV0b251bWJlclwiOiAyMywgXCJOVU1cIjogMjQsIFwib2ZmXCI6IDI1LCBcImFjdGl2YXRlXCI6IDI2LCBcImFjdG9yXCI6IDI3LCBcImRlYWN0aXZhdGVcIjogMjgsIFwibm90ZV9zdGF0ZW1lbnRcIjogMjksIFwibGlua3Nfc3RhdGVtZW50XCI6IDMwLCBcImxpbmtfc3RhdGVtZW50XCI6IDMxLCBcInByb3BlcnRpZXNfc3RhdGVtZW50XCI6IDMyLCBcImRldGFpbHNfc3RhdGVtZW50XCI6IDMzLCBcInRpdGxlXCI6IDM0LCBcImxlZ2FjeV90aXRsZVwiOiAzNSwgXCJhY2NfdGl0bGVcIjogMzYsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDM3LCBcImFjY19kZXNjclwiOiAzOCwgXCJhY2NfZGVzY3JfdmFsdWVcIjogMzksIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiA0MCwgXCJsb29wXCI6IDQxLCBcInJlY3RcIjogNDIsIFwib3B0XCI6IDQzLCBcImFsdFwiOiA0NCwgXCJlbHNlX3NlY3Rpb25zXCI6IDQ1LCBcInBhclwiOiA0NiwgXCJwYXJfc2VjdGlvbnNcIjogNDcsIFwicGFyX292ZXJcIjogNDgsIFwiY3JpdGljYWxcIjogNDksIFwib3B0aW9uX3NlY3Rpb25zXCI6IDUwLCBcImJyZWFrXCI6IDUxLCBcIm9wdGlvblwiOiA1MiwgXCJhbmRcIjogNTMsIFwiZWxzZVwiOiA1NCwgXCJwYXJ0aWNpcGFudFwiOiA1NSwgXCJBU1wiOiA1NiwgXCJwYXJ0aWNpcGFudF9hY3RvclwiOiA1NywgXCJub3RlXCI6IDU4LCBcInBsYWNlbWVudFwiOiA1OSwgXCJ0ZXh0MlwiOiA2MCwgXCJvdmVyXCI6IDYxLCBcImFjdG9yX3BhaXJcIjogNjIsIFwibGlua3NcIjogNjMsIFwibGlua1wiOiA2NCwgXCJwcm9wZXJ0aWVzXCI6IDY1LCBcImRldGFpbHNcIjogNjYsIFwic3BhY2VMaXN0XCI6IDY3LCBcIixcIjogNjgsIFwibGVmdF9vZlwiOiA2OSwgXCJyaWdodF9vZlwiOiA3MCwgXCJzaWduYWx0eXBlXCI6IDcxLCBcIitcIjogNzIsIFwiLVwiOiA3MywgXCJBQ1RPUlwiOiA3NCwgXCJTT0xJRF9PUEVOX0FSUk9XXCI6IDc1LCBcIkRPVFRFRF9PUEVOX0FSUk9XXCI6IDc2LCBcIlNPTElEX0FSUk9XXCI6IDc3LCBcIkRPVFRFRF9BUlJPV1wiOiA3OCwgXCJTT0xJRF9DUk9TU1wiOiA3OSwgXCJET1RURURfQ1JPU1NcIjogODAsIFwiU09MSURfUE9JTlRcIjogODEsIFwiRE9UVEVEX1BPSU5UXCI6IDgyLCBcIlRYVFwiOiA4MywgXCJvcGVuX2RpcmVjdGl2ZVwiOiA4NCwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiA4NSwgXCJhcmdfZGlyZWN0aXZlXCI6IDg2LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiA4NywgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDQ6IFwiU1BBQ0VcIiwgNTogXCJORVdMSU5FXCIsIDc6IFwiU0RcIiwgMTc6IFwiOlwiLCAxOTogXCJib3hcIiwgMjA6IFwicmVzdE9mTGluZVwiLCAyMTogXCJlbmRcIiwgMjM6IFwiYXV0b251bWJlclwiLCAyNDogXCJOVU1cIiwgMjU6IFwib2ZmXCIsIDI2OiBcImFjdGl2YXRlXCIsIDI4OiBcImRlYWN0aXZhdGVcIiwgMzQ6IFwidGl0bGVcIiwgMzU6IFwibGVnYWN5X3RpdGxlXCIsIDM2OiBcImFjY190aXRsZVwiLCAzNzogXCJhY2NfdGl0bGVfdmFsdWVcIiwgMzg6IFwiYWNjX2Rlc2NyXCIsIDM5OiBcImFjY19kZXNjcl92YWx1ZVwiLCA0MDogXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCIsIDQxOiBcImxvb3BcIiwgNDI6IFwicmVjdFwiLCA0MzogXCJvcHRcIiwgNDQ6IFwiYWx0XCIsIDQ2OiBcInBhclwiLCA0ODogXCJwYXJfb3ZlclwiLCA0OTogXCJjcml0aWNhbFwiLCA1MTogXCJicmVha1wiLCA1MjogXCJvcHRpb25cIiwgNTM6IFwiYW5kXCIsIDU0OiBcImVsc2VcIiwgNTU6IFwicGFydGljaXBhbnRcIiwgNTY6IFwiQVNcIiwgNTc6IFwicGFydGljaXBhbnRfYWN0b3JcIiwgNTg6IFwibm90ZVwiLCA2MTogXCJvdmVyXCIsIDYzOiBcImxpbmtzXCIsIDY0OiBcImxpbmtcIiwgNjU6IFwicHJvcGVydGllc1wiLCA2NjogXCJkZXRhaWxzXCIsIDY4OiBcIixcIiwgNjk6IFwibGVmdF9vZlwiLCA3MDogXCJyaWdodF9vZlwiLCA3MjogXCIrXCIsIDczOiBcIi1cIiwgNzQ6IFwiQUNUT1JcIiwgNzU6IFwiU09MSURfT1BFTl9BUlJPV1wiLCA3NjogXCJET1RURURfT1BFTl9BUlJPV1wiLCA3NzogXCJTT0xJRF9BUlJPV1wiLCA3ODogXCJET1RURURfQVJST1dcIiwgNzk6IFwiU09MSURfQ1JPU1NcIiwgODA6IFwiRE9UVEVEX0NST1NTXCIsIDgxOiBcIlNPTElEX1BPSU5UXCIsIDgyOiBcIkRPVFRFRF9QT0lOVFwiLCA4MzogXCJUWFRcIiwgODQ6IFwib3Blbl9kaXJlY3RpdmVcIiwgODU6IFwidHlwZV9kaXJlY3RpdmVcIiwgODY6IFwiYXJnX2RpcmVjdGl2ZVwiLCA4NzogXCJjbG9zZV9kaXJlY3RpdmVcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzMsIDJdLCBbMywgMl0sIFszLCAyXSwgWzgsIDBdLCBbOCwgMl0sIFs5LCAyXSwgWzksIDFdLCBbOSwgMV0sIFsxMSwgMF0sIFsxMSwgMl0sIFsxMiwgMl0sIFsxMiwgMV0sIFsxMiwgMV0sIFs2LCA0XSwgWzYsIDZdLCBbMTAsIDFdLCBbMTAsIDRdLCBbMTAsIDJdLCBbMTAsIDRdLCBbMTAsIDNdLCBbMTAsIDNdLCBbMTAsIDJdLCBbMTAsIDNdLCBbMTAsIDNdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDFdLCBbNTAsIDFdLCBbNTAsIDRdLCBbNDcsIDFdLCBbNDcsIDRdLCBbNDUsIDFdLCBbNDUsIDRdLCBbMTMsIDVdLCBbMTMsIDNdLCBbMTMsIDVdLCBbMTMsIDNdLCBbMjksIDRdLCBbMjksIDRdLCBbMzAsIDNdLCBbMzEsIDNdLCBbMzIsIDNdLCBbMzMsIDNdLCBbNjcsIDJdLCBbNjcsIDFdLCBbNjIsIDNdLCBbNjIsIDFdLCBbNTksIDFdLCBbNTksIDFdLCBbMjIsIDVdLCBbMjIsIDVdLCBbMjIsIDRdLCBbMjcsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNzEsIDFdLCBbNjAsIDFdLCBbMTQsIDFdLCBbMTUsIDFdLCBbMTgsIDFdLCBbMTYsIDFdXSxcbiAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG4gICAgICB2YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuICAgICAgc3dpdGNoICh5eXN0YXRlKSB7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB5eS5hcHBseSgkJFskMF0pO1xuICAgICAgICAgIHJldHVybiAkJFskMF07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICBjYXNlIDEyOlxuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICQkWyQwIC0gMV0udW5zaGlmdCh7IHR5cGU6IFwiYm94U3RhcnRcIiwgYm94RGF0YTogeXkucGFyc2VCb3hEYXRhKCQkWyQwIC0gMl0pIH0pO1xuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCh7IHR5cGU6IFwiYm94RW5kXCIsIGJveFRleHQ6ICQkWyQwIC0gMl0gfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6IFwic2VxdWVuY2VJbmRleFwiLCBzZXF1ZW5jZUluZGV4OiBOdW1iZXIoJCRbJDAgLSAyXSksIHNlcXVlbmNlSW5kZXhTdGVwOiBOdW1iZXIoJCRbJDAgLSAxXSksIHNlcXVlbmNlVmlzaWJsZTogdHJ1ZSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQVVUT05VTUJFUiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogXCJzZXF1ZW5jZUluZGV4XCIsIHNlcXVlbmNlSW5kZXg6IE51bWJlcigkJFskMCAtIDFdKSwgc2VxdWVuY2VJbmRleFN0ZXA6IDEsIHNlcXVlbmNlVmlzaWJsZTogdHJ1ZSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQVVUT05VTUJFUiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogXCJzZXF1ZW5jZUluZGV4XCIsIHNlcXVlbmNlVmlzaWJsZTogZmFsc2UsIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkFVVE9OVU1CRVIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6IFwic2VxdWVuY2VJbmRleFwiLCBzZXF1ZW5jZVZpc2libGU6IHRydWUsIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkFVVE9OVU1CRVIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6IFwiYWN0aXZlU3RhcnRcIiwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQUNUSVZFX1NUQVJULCBhY3RvcjogJCRbJDAgLSAxXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogXCJhY3RpdmVFbmRcIiwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQUNUSVZFX0VORCwgYWN0b3I6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICB5eS5zZXREaWFncmFtVGl0bGUoJCRbJDBdLnN1YnN0cmluZyg2KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cmluZyg2KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICB5eS5zZXREaWFncmFtVGl0bGUoJCRbJDBdLnN1YnN0cmluZyg3KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cmluZyg3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY1RpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzQ6XG4gICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICQkWyQwIC0gMV0udW5zaGlmdCh7IHR5cGU6IFwibG9vcFN0YXJ0XCIsIGxvb3BUZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkxPT1BfU1RBUlQgfSk7XG4gICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKHsgdHlwZTogXCJsb29wRW5kXCIsIGxvb3BUZXh0OiAkJFskMCAtIDJdLCBzaWduYWxUeXBlOiB5eS5MSU5FVFlQRS5MT09QX0VORCB9KTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICQkWyQwIC0gMV0udW5zaGlmdCh7IHR5cGU6IFwicmVjdFN0YXJ0XCIsIGNvbG9yOiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLlJFQ1RfU1RBUlQgfSk7XG4gICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKHsgdHlwZTogXCJyZWN0RW5kXCIsIGNvbG9yOiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLlJFQ1RfRU5EIH0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgJCRbJDAgLSAxXS51bnNoaWZ0KHsgdHlwZTogXCJvcHRTdGFydFwiLCBvcHRUZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLk9QVF9TVEFSVCB9KTtcbiAgICAgICAgICAkJFskMCAtIDFdLnB1c2goeyB0eXBlOiBcIm9wdEVuZFwiLCBvcHRUZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLk9QVF9FTkQgfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAkJFskMCAtIDFdLnVuc2hpZnQoeyB0eXBlOiBcImFsdFN0YXJ0XCIsIGFsdFRleHQ6IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDJdKSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQUxUX1NUQVJUIH0pO1xuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCh7IHR5cGU6IFwiYWx0RW5kXCIsIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkFMVF9FTkQgfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAkJFskMCAtIDFdLnVuc2hpZnQoeyB0eXBlOiBcInBhclN0YXJ0XCIsIHBhclRleHQ6IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDJdKSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuUEFSX1NUQVJUIH0pO1xuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCh7IHR5cGU6IFwicGFyRW5kXCIsIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLlBBUl9FTkQgfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICAkJFskMCAtIDFdLnVuc2hpZnQoeyB0eXBlOiBcInBhclN0YXJ0XCIsIHBhclRleHQ6IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDJdKSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuUEFSX09WRVJfU1RBUlQgfSk7XG4gICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKHsgdHlwZTogXCJwYXJFbmRcIiwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuUEFSX0VORCB9KTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQyOlxuICAgICAgICAgICQkWyQwIC0gMV0udW5zaGlmdCh7IHR5cGU6IFwiY3JpdGljYWxTdGFydFwiLCBjcml0aWNhbFRleHQ6IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDJdKSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQ1JJVElDQUxfU1RBUlQgfSk7XG4gICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKHsgdHlwZTogXCJjcml0aWNhbEVuZFwiLCBzaWduYWxUeXBlOiB5eS5MSU5FVFlQRS5DUklUSUNBTF9FTkQgfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICAkJFskMCAtIDFdLnVuc2hpZnQoeyB0eXBlOiBcImJyZWFrU3RhcnRcIiwgYnJlYWtUZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAyXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkJSRUFLX1NUQVJUIH0pO1xuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCh7IHR5cGU6IFwiYnJlYWtFbmRcIiwgb3B0VGV4dDogeXkucGFyc2VNZXNzYWdlKCQkWyQwIC0gMl0pLCBzaWduYWxUeXBlOiB5eS5MSU5FVFlQRS5CUkVBS19FTkQgfSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdLmNvbmNhdChbeyB0eXBlOiBcIm9wdGlvblwiLCBvcHRpb25UZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAxXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLkNSSVRJQ0FMX09QVElPTiB9LCAkJFskMF1dKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdLmNvbmNhdChbeyB0eXBlOiBcImFuZFwiLCBwYXJUZXh0OiB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAxXSksIHNpZ25hbFR5cGU6IHl5LkxJTkVUWVBFLlBBUl9BTkQgfSwgJCRbJDBdXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXS5jb25jYXQoW3sgdHlwZTogXCJlbHNlXCIsIGFsdFRleHQ6IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDFdKSwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQUxUX0VMU0UgfSwgJCRbJDBdXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgJCRbJDAgLSAzXS50eXBlID0gXCJhZGRQYXJ0aWNpcGFudFwiO1xuICAgICAgICAgICQkWyQwIC0gM10uZGVzY3JpcHRpb24gPSB5eS5wYXJzZU1lc3NhZ2UoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICAkJFskMCAtIDFdLnR5cGUgPSBcImFkZFBhcnRpY2lwYW50XCI7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICAkJFskMCAtIDNdLnR5cGUgPSBcImFkZEFjdG9yXCI7XG4gICAgICAgICAgJCRbJDAgLSAzXS5kZXNjcmlwdGlvbiA9IHl5LnBhcnNlTWVzc2FnZSgkJFskMCAtIDFdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDNdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU0OlxuICAgICAgICAgICQkWyQwIC0gMV0udHlwZSA9IFwiYWRkQWN0b3JcIjtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU1OlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDFdLCB7IHR5cGU6IFwiYWRkTm90ZVwiLCBwbGFjZW1lbnQ6ICQkWyQwIC0gMl0sIGFjdG9yOiAkJFskMCAtIDFdLmFjdG9yLCB0ZXh0OiAkJFskMF0gfV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTY6XG4gICAgICAgICAgJCRbJDAgLSAyXSA9IFtdLmNvbmNhdCgkJFskMCAtIDFdLCAkJFskMCAtIDFdKS5zbGljZSgwLCAyKTtcbiAgICAgICAgICAkJFskMCAtIDJdWzBdID0gJCRbJDAgLSAyXVswXS5hY3RvcjtcbiAgICAgICAgICAkJFskMCAtIDJdWzFdID0gJCRbJDAgLSAyXVsxXS5hY3RvcjtcbiAgICAgICAgICB0aGlzLiQgPSBbJCRbJDAgLSAxXSwgeyB0eXBlOiBcImFkZE5vdGVcIiwgcGxhY2VtZW50OiB5eS5QTEFDRU1FTlQuT1ZFUiwgYWN0b3I6ICQkWyQwIC0gMl0uc2xpY2UoMCwgMiksIHRleHQ6ICQkWyQwXSB9XTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NzpcbiAgICAgICAgICB0aGlzLiQgPSBbJCRbJDAgLSAxXSwgeyB0eXBlOiBcImFkZExpbmtzXCIsIGFjdG9yOiAkJFskMCAtIDFdLmFjdG9yLCB0ZXh0OiAkJFskMF0gfV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTg6XG4gICAgICAgICAgdGhpcy4kID0gWyQkWyQwIC0gMV0sIHsgdHlwZTogXCJhZGRBTGlua1wiLCBhY3RvcjogJCRbJDAgLSAxXS5hY3RvciwgdGV4dDogJCRbJDBdIH1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDFdLCB7IHR5cGU6IFwiYWRkUHJvcGVydGllc1wiLCBhY3RvcjogJCRbJDAgLSAxXS5hY3RvciwgdGV4dDogJCRbJDBdIH1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDFdLCB7IHR5cGU6IFwiYWRkRGV0YWlsc1wiLCBhY3RvcjogJCRbJDAgLSAxXS5hY3RvciwgdGV4dDogJCRbJDBdIH1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDJdLCAkJFskMF1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5QTEFDRU1FTlQuTEVGVE9GO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LlBMQUNFTUVOVC5SSUdIVE9GO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDY3OlxuICAgICAgICAgIHRoaXMuJCA9IFtcbiAgICAgICAgICAgICQkWyQwIC0gNF0sXG4gICAgICAgICAgICAkJFskMCAtIDFdLFxuICAgICAgICAgICAgeyB0eXBlOiBcImFkZE1lc3NhZ2VcIiwgZnJvbTogJCRbJDAgLSA0XS5hY3RvciwgdG86ICQkWyQwIC0gMV0uYWN0b3IsIHNpZ25hbFR5cGU6ICQkWyQwIC0gM10sIG1zZzogJCRbJDBdIH0sXG4gICAgICAgICAgICB7IHR5cGU6IFwiYWN0aXZlU3RhcnRcIiwgc2lnbmFsVHlwZTogeXkuTElORVRZUEUuQUNUSVZFX1NUQVJULCBhY3RvcjogJCRbJDAgLSAxXSB9XG4gICAgICAgICAgXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICB0aGlzLiQgPSBbXG4gICAgICAgICAgICAkJFskMCAtIDRdLFxuICAgICAgICAgICAgJCRbJDAgLSAxXSxcbiAgICAgICAgICAgIHsgdHlwZTogXCJhZGRNZXNzYWdlXCIsIGZyb206ICQkWyQwIC0gNF0uYWN0b3IsIHRvOiAkJFskMCAtIDFdLmFjdG9yLCBzaWduYWxUeXBlOiAkJFskMCAtIDNdLCBtc2c6ICQkWyQwXSB9LFxuICAgICAgICAgICAgeyB0eXBlOiBcImFjdGl2ZUVuZFwiLCBzaWduYWxUeXBlOiB5eS5MSU5FVFlQRS5BQ1RJVkVfRU5ELCBhY3RvcjogJCRbJDAgLSA0XSB9XG4gICAgICAgICAgXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OTpcbiAgICAgICAgICB0aGlzLiQgPSBbJCRbJDAgLSAzXSwgJCRbJDAgLSAxXSwgeyB0eXBlOiBcImFkZE1lc3NhZ2VcIiwgZnJvbTogJCRbJDAgLSAzXS5hY3RvciwgdG86ICQkWyQwIC0gMV0uYWN0b3IsIHNpZ25hbFR5cGU6ICQkWyQwIC0gMl0sIG1zZzogJCRbJDBdIH1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogXCJhZGRQYXJ0aWNpcGFudFwiLCBhY3RvcjogJCRbJDBdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzE6XG4gICAgICAgICAgdGhpcy4kID0geXkuTElORVRZUEUuU09MSURfT1BFTjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5MSU5FVFlQRS5ET1RURURfT1BFTjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3MzpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5MSU5FVFlQRS5TT0xJRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NDpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5MSU5FVFlQRS5ET1RURUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzU6XG4gICAgICAgICAgdGhpcy4kID0geXkuTElORVRZUEUuU09MSURfQ1JPU1M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzY6XG4gICAgICAgICAgdGhpcy4kID0geXkuTElORVRZUEUuRE9UVEVEX0NST1NTO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LkxJTkVUWVBFLlNPTElEX1BPSU5UO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc4OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LkxJTkVUWVBFLkRPVFRFRF9QT0lOVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OTpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5wYXJzZU1lc3NhZ2UoJCRbJDBdLnRyaW0oKS5zdWJzdHJpbmcoMSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgwOlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwiJSV7XCIsIFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcInR5cGVfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICQkWyQwXSA9ICQkWyQwXS50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKTtcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIn0lJVwiLCBcImNsb3NlX2RpcmVjdGl2ZVwiLCBcInNlcXVlbmNlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgdGFibGU6IFt7IDM6IDEsIDQ6ICRWMCwgNTogJFYxLCA2OiA0LCA3OiAkVjIsIDE0OiA2LCA4NDogJFYzIH0sIHsgMTogWzNdIH0sIHsgMzogOCwgNDogJFYwLCA1OiAkVjEsIDY6IDQsIDc6ICRWMiwgMTQ6IDYsIDg0OiAkVjMgfSwgeyAzOiA5LCA0OiAkVjAsIDU6ICRWMSwgNjogNCwgNzogJFYyLCAxNDogNiwgODQ6ICRWMyB9LCB7IDM6IDEwLCA0OiAkVjAsIDU6ICRWMSwgNjogNCwgNzogJFYyLCAxNDogNiwgODQ6ICRWMyB9LCBvKFsxLCA0LCA1LCAxOSwgMjMsIDI2LCAyOCwgMzQsIDM1LCAzNiwgMzgsIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDYsIDQ4LCA0OSwgNTEsIDU1LCA1NywgNTgsIDYzLCA2NCwgNjUsIDY2LCA3NCwgODRdLCAkVjQsIHsgODogMTEgfSksIHsgMTU6IDEyLCA4NTogWzEsIDEzXSB9LCB7IDg1OiBbMiwgODBdIH0sIHsgMTogWzIsIDFdIH0sIHsgMTogWzIsIDJdIH0sIHsgMTogWzIsIDNdIH0sIHsgMTogWzIsIDRdLCA0OiAkVjUsIDU6ICRWNiwgNjogNDIsIDk6IDE0LCAxMDogMTYsIDEzOiAxOCwgMTQ6IDYsIDE5OiAkVjcsIDIyOiAyMCwgMjM6ICRWOCwgMjY6ICRWOSwgMjc6IDQ1LCAyODogJFZhLCAyOTogMjQsIDMwOiAyNSwgMzE6IDI2LCAzMjogMjcsIDMzOiAyOCwgMzQ6ICRWYiwgMzU6ICRWYywgMzY6ICRWZCwgMzg6ICRWZSwgNDA6ICRWZiwgNDE6ICRWZywgNDI6ICRWaCwgNDM6ICRWaSwgNDQ6ICRWaiwgNDY6ICRWaywgNDg6ICRWbCwgNDk6ICRWbSwgNTE6ICRWbiwgNTU6ICRWbywgNTc6ICRWcCwgNTg6ICRWcSwgNjM6ICRWciwgNjQ6ICRWcywgNjU6ICRWdCwgNjY6ICRWdSwgNzQ6ICRWdiwgODQ6ICRWMyB9LCB7IDE2OiA1MiwgMTc6IFsxLCA1M10sIDg3OiAkVncgfSwgbyhbMTcsIDg3XSwgWzIsIDgxXSksIG8oJFZ4LCBbMiwgNl0pLCB7IDY6IDQyLCAxMDogNTUsIDEzOiAxOCwgMTQ6IDYsIDE5OiAkVjcsIDIyOiAyMCwgMjM6ICRWOCwgMjY6ICRWOSwgMjc6IDQ1LCAyODogJFZhLCAyOTogMjQsIDMwOiAyNSwgMzE6IDI2LCAzMjogMjcsIDMzOiAyOCwgMzQ6ICRWYiwgMzU6ICRWYywgMzY6ICRWZCwgMzg6ICRWZSwgNDA6ICRWZiwgNDE6ICRWZywgNDI6ICRWaCwgNDM6ICRWaSwgNDQ6ICRWaiwgNDY6ICRWaywgNDg6ICRWbCwgNDk6ICRWbSwgNTE6ICRWbiwgNTU6ICRWbywgNTc6ICRWcCwgNTg6ICRWcSwgNjM6ICRWciwgNjQ6ICRWcywgNjU6ICRWdCwgNjY6ICRWdSwgNzQ6ICRWdiwgODQ6ICRWMyB9LCBvKCRWeCwgWzIsIDhdKSwgbygkVngsIFsyLCA5XSksIG8oJFZ4LCBbMiwgMTddKSwgeyAyMDogWzEsIDU2XSB9LCB7IDU6IFsxLCA1N10gfSwgeyA1OiBbMSwgNjBdLCAyNDogWzEsIDU4XSwgMjU6IFsxLCA1OV0gfSwgeyAyNzogNjEsIDc0OiAkVnYgfSwgeyAyNzogNjIsIDc0OiAkVnYgfSwgeyA1OiBbMSwgNjNdIH0sIHsgNTogWzEsIDY0XSB9LCB7IDU6IFsxLCA2NV0gfSwgeyA1OiBbMSwgNjZdIH0sIHsgNTogWzEsIDY3XSB9LCBvKCRWeCwgWzIsIDMxXSksIG8oJFZ4LCBbMiwgMzJdKSwgeyAzNzogWzEsIDY4XSB9LCB7IDM5OiBbMSwgNjldIH0sIG8oJFZ4LCBbMiwgMzVdKSwgeyAyMDogWzEsIDcwXSB9LCB7IDIwOiBbMSwgNzFdIH0sIHsgMjA6IFsxLCA3Ml0gfSwgeyAyMDogWzEsIDczXSB9LCB7IDIwOiBbMSwgNzRdIH0sIHsgMjA6IFsxLCA3NV0gfSwgeyAyMDogWzEsIDc2XSB9LCB7IDIwOiBbMSwgNzddIH0sIG8oJFZ4LCBbMiwgNDRdKSwgeyAyNzogNzgsIDc0OiAkVnYgfSwgeyAyNzogNzksIDc0OiAkVnYgfSwgeyA3MTogODAsIDc1OiBbMSwgODFdLCA3NjogWzEsIDgyXSwgNzc6IFsxLCA4M10sIDc4OiBbMSwgODRdLCA3OTogWzEsIDg1XSwgODA6IFsxLCA4Nl0sIDgxOiBbMSwgODddLCA4MjogWzEsIDg4XSB9LCB7IDU5OiA4OSwgNjE6IFsxLCA5MF0sIDY5OiBbMSwgOTFdLCA3MDogWzEsIDkyXSB9LCB7IDI3OiA5MywgNzQ6ICRWdiB9LCB7IDI3OiA5NCwgNzQ6ICRWdiB9LCB7IDI3OiA5NSwgNzQ6ICRWdiB9LCB7IDI3OiA5NiwgNzQ6ICRWdiB9LCBvKFs1LCA1NiwgNjgsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODNdLCBbMiwgNzBdKSwgeyA1OiBbMSwgOTddIH0sIHsgMTg6IDk4LCA4NjogWzEsIDk5XSB9LCB7IDU6IFsyLCA4M10gfSwgbygkVngsIFsyLCA3XSksIG8oJFZ5LCBbMiwgMTBdLCB7IDExOiAxMDAgfSksIG8oJFZ4LCBbMiwgMTldKSwgeyA1OiBbMSwgMTAyXSwgMjQ6IFsxLCAxMDFdIH0sIHsgNTogWzEsIDEwM10gfSwgbygkVngsIFsyLCAyM10pLCB7IDU6IFsxLCAxMDRdIH0sIHsgNTogWzEsIDEwNV0gfSwgbygkVngsIFsyLCAyNl0pLCBvKCRWeCwgWzIsIDI3XSksIG8oJFZ4LCBbMiwgMjhdKSwgbygkVngsIFsyLCAyOV0pLCBvKCRWeCwgWzIsIDMwXSksIG8oJFZ4LCBbMiwgMzNdKSwgbygkVngsIFsyLCAzNF0pLCBvKCRWeiwgJFY0LCB7IDg6IDEwNiB9KSwgbygkVnosICRWNCwgeyA4OiAxMDcgfSksIG8oJFZ6LCAkVjQsIHsgODogMTA4IH0pLCBvKCRWQSwgJFY0LCB7IDQ1OiAxMDksIDg6IDExMCB9KSwgbygkVkIsICRWNCwgeyA0NzogMTExLCA4OiAxMTIgfSksIG8oJFZCLCAkVjQsIHsgODogMTEyLCA0NzogMTEzIH0pLCBvKCRWQywgJFY0LCB7IDUwOiAxMTQsIDg6IDExNSB9KSwgbygkVnosICRWNCwgeyA4OiAxMTYgfSksIHsgNTogWzEsIDExOF0sIDU2OiBbMSwgMTE3XSB9LCB7IDU6IFsxLCAxMjBdLCA1NjogWzEsIDExOV0gfSwgeyAyNzogMTIzLCA3MjogWzEsIDEyMV0sIDczOiBbMSwgMTIyXSwgNzQ6ICRWdiB9LCBvKCRWRCwgWzIsIDcxXSksIG8oJFZELCBbMiwgNzJdKSwgbygkVkQsIFsyLCA3M10pLCBvKCRWRCwgWzIsIDc0XSksIG8oJFZELCBbMiwgNzVdKSwgbygkVkQsIFsyLCA3Nl0pLCBvKCRWRCwgWzIsIDc3XSksIG8oJFZELCBbMiwgNzhdKSwgeyAyNzogMTI0LCA3NDogJFZ2IH0sIHsgMjc6IDEyNiwgNjI6IDEyNSwgNzQ6ICRWdiB9LCB7IDc0OiBbMiwgNjVdIH0sIHsgNzQ6IFsyLCA2Nl0gfSwgeyA2MDogMTI3LCA4MzogJFZFIH0sIHsgNjA6IDEyOSwgODM6ICRWRSB9LCB7IDYwOiAxMzAsIDgzOiAkVkUgfSwgeyA2MDogMTMxLCA4MzogJFZFIH0sIG8oJFZGLCBbMiwgMTVdKSwgeyAxNjogMTMyLCA4NzogJFZ3IH0sIHsgODc6IFsyLCA4Ml0gfSwgeyA0OiBbMSwgMTM1XSwgNTogWzEsIDEzN10sIDEyOiAxMzQsIDEzOiAxMzYsIDIxOiBbMSwgMTMzXSwgNTU6ICRWbywgNTc6ICRWcCB9LCB7IDU6IFsxLCAxMzhdIH0sIG8oJFZ4LCBbMiwgMjFdKSwgbygkVngsIFsyLCAyMl0pLCBvKCRWeCwgWzIsIDI0XSksIG8oJFZ4LCBbMiwgMjVdKSwgeyA0OiAkVjUsIDU6ICRWNiwgNjogNDIsIDk6IDE0LCAxMDogMTYsIDEzOiAxOCwgMTQ6IDYsIDE5OiAkVjcsIDIxOiBbMSwgMTM5XSwgMjI6IDIwLCAyMzogJFY4LCAyNjogJFY5LCAyNzogNDUsIDI4OiAkVmEsIDI5OiAyNCwgMzA6IDI1LCAzMTogMjYsIDMyOiAyNywgMzM6IDI4LCAzNDogJFZiLCAzNTogJFZjLCAzNjogJFZkLCAzODogJFZlLCA0MDogJFZmLCA0MTogJFZnLCA0MjogJFZoLCA0MzogJFZpLCA0NDogJFZqLCA0NjogJFZrLCA0ODogJFZsLCA0OTogJFZtLCA1MTogJFZuLCA1NTogJFZvLCA1NzogJFZwLCA1ODogJFZxLCA2MzogJFZyLCA2NDogJFZzLCA2NTogJFZ0LCA2NjogJFZ1LCA3NDogJFZ2LCA4NDogJFYzIH0sIHsgNDogJFY1LCA1OiAkVjYsIDY6IDQyLCA5OiAxNCwgMTA6IDE2LCAxMzogMTgsIDE0OiA2LCAxOTogJFY3LCAyMTogWzEsIDE0MF0sIDIyOiAyMCwgMjM6ICRWOCwgMjY6ICRWOSwgMjc6IDQ1LCAyODogJFZhLCAyOTogMjQsIDMwOiAyNSwgMzE6IDI2LCAzMjogMjcsIDMzOiAyOCwgMzQ6ICRWYiwgMzU6ICRWYywgMzY6ICRWZCwgMzg6ICRWZSwgNDA6ICRWZiwgNDE6ICRWZywgNDI6ICRWaCwgNDM6ICRWaSwgNDQ6ICRWaiwgNDY6ICRWaywgNDg6ICRWbCwgNDk6ICRWbSwgNTE6ICRWbiwgNTU6ICRWbywgNTc6ICRWcCwgNTg6ICRWcSwgNjM6ICRWciwgNjQ6ICRWcywgNjU6ICRWdCwgNjY6ICRWdSwgNzQ6ICRWdiwgODQ6ICRWMyB9LCB7IDQ6ICRWNSwgNTogJFY2LCA2OiA0MiwgOTogMTQsIDEwOiAxNiwgMTM6IDE4LCAxNDogNiwgMTk6ICRWNywgMjE6IFsxLCAxNDFdLCAyMjogMjAsIDIzOiAkVjgsIDI2OiAkVjksIDI3OiA0NSwgMjg6ICRWYSwgMjk6IDI0LCAzMDogMjUsIDMxOiAyNiwgMzI6IDI3LCAzMzogMjgsIDM0OiAkVmIsIDM1OiAkVmMsIDM2OiAkVmQsIDM4OiAkVmUsIDQwOiAkVmYsIDQxOiAkVmcsIDQyOiAkVmgsIDQzOiAkVmksIDQ0OiAkVmosIDQ2OiAkVmssIDQ4OiAkVmwsIDQ5OiAkVm0sIDUxOiAkVm4sIDU1OiAkVm8sIDU3OiAkVnAsIDU4OiAkVnEsIDYzOiAkVnIsIDY0OiAkVnMsIDY1OiAkVnQsIDY2OiAkVnUsIDc0OiAkVnYsIDg0OiAkVjMgfSwgeyAyMTogWzEsIDE0Ml0gfSwgeyA0OiAkVjUsIDU6ICRWNiwgNjogNDIsIDk6IDE0LCAxMDogMTYsIDEzOiAxOCwgMTQ6IDYsIDE5OiAkVjcsIDIxOiBbMiwgNDldLCAyMjogMjAsIDIzOiAkVjgsIDI2OiAkVjksIDI3OiA0NSwgMjg6ICRWYSwgMjk6IDI0LCAzMDogMjUsIDMxOiAyNiwgMzI6IDI3LCAzMzogMjgsIDM0OiAkVmIsIDM1OiAkVmMsIDM2OiAkVmQsIDM4OiAkVmUsIDQwOiAkVmYsIDQxOiAkVmcsIDQyOiAkVmgsIDQzOiAkVmksIDQ0OiAkVmosIDQ2OiAkVmssIDQ4OiAkVmwsIDQ5OiAkVm0sIDUxOiAkVm4sIDU0OiBbMSwgMTQzXSwgNTU6ICRWbywgNTc6ICRWcCwgNTg6ICRWcSwgNjM6ICRWciwgNjQ6ICRWcywgNjU6ICRWdCwgNjY6ICRWdSwgNzQ6ICRWdiwgODQ6ICRWMyB9LCB7IDIxOiBbMSwgMTQ0XSB9LCB7IDQ6ICRWNSwgNTogJFY2LCA2OiA0MiwgOTogMTQsIDEwOiAxNiwgMTM6IDE4LCAxNDogNiwgMTk6ICRWNywgMjE6IFsyLCA0N10sIDIyOiAyMCwgMjM6ICRWOCwgMjY6ICRWOSwgMjc6IDQ1LCAyODogJFZhLCAyOTogMjQsIDMwOiAyNSwgMzE6IDI2LCAzMjogMjcsIDMzOiAyOCwgMzQ6ICRWYiwgMzU6ICRWYywgMzY6ICRWZCwgMzg6ICRWZSwgNDA6ICRWZiwgNDE6ICRWZywgNDI6ICRWaCwgNDM6ICRWaSwgNDQ6ICRWaiwgNDY6ICRWaywgNDg6ICRWbCwgNDk6ICRWbSwgNTE6ICRWbiwgNTM6IFsxLCAxNDVdLCA1NTogJFZvLCA1NzogJFZwLCA1ODogJFZxLCA2MzogJFZyLCA2NDogJFZzLCA2NTogJFZ0LCA2NjogJFZ1LCA3NDogJFZ2LCA4NDogJFYzIH0sIHsgMjE6IFsxLCAxNDZdIH0sIHsgMjE6IFsxLCAxNDddIH0sIHsgNDogJFY1LCA1OiAkVjYsIDY6IDQyLCA5OiAxNCwgMTA6IDE2LCAxMzogMTgsIDE0OiA2LCAxOTogJFY3LCAyMTogWzIsIDQ1XSwgMjI6IDIwLCAyMzogJFY4LCAyNjogJFY5LCAyNzogNDUsIDI4OiAkVmEsIDI5OiAyNCwgMzA6IDI1LCAzMTogMjYsIDMyOiAyNywgMzM6IDI4LCAzNDogJFZiLCAzNTogJFZjLCAzNjogJFZkLCAzODogJFZlLCA0MDogJFZmLCA0MTogJFZnLCA0MjogJFZoLCA0MzogJFZpLCA0NDogJFZqLCA0NjogJFZrLCA0ODogJFZsLCA0OTogJFZtLCA1MTogJFZuLCA1MjogWzEsIDE0OF0sIDU1OiAkVm8sIDU3OiAkVnAsIDU4OiAkVnEsIDYzOiAkVnIsIDY0OiAkVnMsIDY1OiAkVnQsIDY2OiAkVnUsIDc0OiAkVnYsIDg0OiAkVjMgfSwgeyA0OiAkVjUsIDU6ICRWNiwgNjogNDIsIDk6IDE0LCAxMDogMTYsIDEzOiAxOCwgMTQ6IDYsIDE5OiAkVjcsIDIxOiBbMSwgMTQ5XSwgMjI6IDIwLCAyMzogJFY4LCAyNjogJFY5LCAyNzogNDUsIDI4OiAkVmEsIDI5OiAyNCwgMzA6IDI1LCAzMTogMjYsIDMyOiAyNywgMzM6IDI4LCAzNDogJFZiLCAzNTogJFZjLCAzNjogJFZkLCAzODogJFZlLCA0MDogJFZmLCA0MTogJFZnLCA0MjogJFZoLCA0MzogJFZpLCA0NDogJFZqLCA0NjogJFZrLCA0ODogJFZsLCA0OTogJFZtLCA1MTogJFZuLCA1NTogJFZvLCA1NzogJFZwLCA1ODogJFZxLCA2MzogJFZyLCA2NDogJFZzLCA2NTogJFZ0LCA2NjogJFZ1LCA3NDogJFZ2LCA4NDogJFYzIH0sIHsgMjA6IFsxLCAxNTBdIH0sIG8oJFZ4LCBbMiwgNTJdKSwgeyAyMDogWzEsIDE1MV0gfSwgbygkVngsIFsyLCA1NF0pLCB7IDI3OiAxNTIsIDc0OiAkVnYgfSwgeyAyNzogMTUzLCA3NDogJFZ2IH0sIHsgNjA6IDE1NCwgODM6ICRWRSB9LCB7IDYwOiAxNTUsIDgzOiAkVkUgfSwgeyA2MDogMTU2LCA4MzogJFZFIH0sIHsgNjg6IFsxLCAxNTddLCA4MzogWzIsIDY0XSB9LCB7IDU6IFsyLCA1N10gfSwgeyA1OiBbMiwgNzldIH0sIHsgNTogWzIsIDU4XSB9LCB7IDU6IFsyLCA1OV0gfSwgeyA1OiBbMiwgNjBdIH0sIHsgNTogWzEsIDE1OF0gfSwgbygkVngsIFsyLCAxOF0pLCBvKCRWeSwgWzIsIDExXSksIHsgMTM6IDE1OSwgNTU6ICRWbywgNTc6ICRWcCB9LCBvKCRWeSwgWzIsIDEzXSksIG8oJFZ5LCBbMiwgMTRdKSwgbygkVngsIFsyLCAyMF0pLCBvKCRWeCwgWzIsIDM2XSksIG8oJFZ4LCBbMiwgMzddKSwgbygkVngsIFsyLCAzOF0pLCBvKCRWeCwgWzIsIDM5XSksIHsgMjA6IFsxLCAxNjBdIH0sIG8oJFZ4LCBbMiwgNDBdKSwgeyAyMDogWzEsIDE2MV0gfSwgbygkVngsIFsyLCA0MV0pLCBvKCRWeCwgWzIsIDQyXSksIHsgMjA6IFsxLCAxNjJdIH0sIG8oJFZ4LCBbMiwgNDNdKSwgeyA1OiBbMSwgMTYzXSB9LCB7IDU6IFsxLCAxNjRdIH0sIHsgNjA6IDE2NSwgODM6ICRWRSB9LCB7IDYwOiAxNjYsIDgzOiAkVkUgfSwgeyA1OiBbMiwgNjldIH0sIHsgNTogWzIsIDU1XSB9LCB7IDU6IFsyLCA1Nl0gfSwgeyAyNzogMTY3LCA3NDogJFZ2IH0sIG8oJFZGLCBbMiwgMTZdKSwgbygkVnksIFsyLCAxMl0pLCBvKCRWQSwgJFY0LCB7IDg6IDExMCwgNDU6IDE2OCB9KSwgbygkVkIsICRWNCwgeyA4OiAxMTIsIDQ3OiAxNjkgfSksIG8oJFZDLCAkVjQsIHsgODogMTE1LCA1MDogMTcwIH0pLCBvKCRWeCwgWzIsIDUxXSksIG8oJFZ4LCBbMiwgNTNdKSwgeyA1OiBbMiwgNjddIH0sIHsgNTogWzIsIDY4XSB9LCB7IDgzOiBbMiwgNjNdIH0sIHsgMjE6IFsyLCA1MF0gfSwgeyAyMTogWzIsIDQ4XSB9LCB7IDIxOiBbMiwgNDZdIH1dLFxuICAgIGRlZmF1bHRBY3Rpb25zOiB7IDc6IFsyLCA4MF0sIDg6IFsyLCAxXSwgOTogWzIsIDJdLCAxMDogWzIsIDNdLCA1NDogWzIsIDgzXSwgOTE6IFsyLCA2NV0sIDkyOiBbMiwgNjZdLCA5OTogWzIsIDgyXSwgMTI3OiBbMiwgNTddLCAxMjg6IFsyLCA3OV0sIDEyOTogWzIsIDU4XSwgMTMwOiBbMiwgNTldLCAxMzE6IFsyLCA2MF0sIDE1NDogWzIsIDY5XSwgMTU1OiBbMiwgNTVdLCAxNTY6IFsyLCA1Nl0sIDE2NTogWzIsIDY3XSwgMTY2OiBbMiwgNjhdLCAxNjc6IFsyLCA2M10sIDE2ODogWzIsIDUwXSwgMTY5OiBbMiwgNDhdLCAxNzA6IFsyLCA0Nl0gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA4NDtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gODU7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTc7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDg3O1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiA4NjtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICByZXR1cm4gNTtcbiAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgIHJldHVybiAyNDtcbiAgICAgICAgICBjYXNlIDEyOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIkxJTkVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTk7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJJRFwiKTtcbiAgICAgICAgICAgIHJldHVybiA1NTtcbiAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIklEXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU3O1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC50cmltKCk7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiQUxJQVNcIik7XG4gICAgICAgICAgICByZXR1cm4gNzQ7XG4gICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU2O1xuICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNTtcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIkxJTkVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDE7XG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQyO1xuICAgICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTElORVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0MztcbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIkxJTkVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU0O1xuICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTElORVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0NjtcbiAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIkxJTkVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDg7XG4gICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDUzO1xuICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTElORVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0OTtcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIkxJTkVcIik7XG4gICAgICAgICAgICByZXR1cm4gNTI7XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJMSU5FXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDUxO1xuICAgICAgICAgIGNhc2UgMjk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICAgIHJldHVybiAyMTtcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgcmV0dXJuIDY5O1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICByZXR1cm4gNzA7XG4gICAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICAgIHJldHVybiA2MztcbiAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgcmV0dXJuIDY0O1xuICAgICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgICByZXR1cm4gNjU7XG4gICAgICAgICAgY2FzZSAzNjpcbiAgICAgICAgICAgIHJldHVybiA2NjtcbiAgICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICAgcmV0dXJuIDYxO1xuICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICByZXR1cm4gNTg7XG4gICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJJRFwiKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIklEXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDI4O1xuICAgICAgICAgIGNhc2UgNDE6XG4gICAgICAgICAgICByZXR1cm4gMzQ7XG4gICAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICAgIHJldHVybiAzNTtcbiAgICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY190aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAzNjtcbiAgICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfZGVzY3JcIik7XG4gICAgICAgICAgICByZXR1cm4gMzg7XG4gICAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyX211bHRpbGluZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDQ5OlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgICBjYXNlIDUxOlxuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgIGNhc2UgNTI6XG4gICAgICAgICAgICByZXR1cm4gMjU7XG4gICAgICAgICAgY2FzZSA1MzpcbiAgICAgICAgICAgIHJldHVybiA2ODtcbiAgICAgICAgICBjYXNlIDU0OlxuICAgICAgICAgICAgcmV0dXJuIDU7XG4gICAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiA3NDtcbiAgICAgICAgICBjYXNlIDU2OlxuICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgICByZXR1cm4gNzg7XG4gICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgIHJldHVybiA3NTtcbiAgICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgICAgcmV0dXJuIDc2O1xuICAgICAgICAgIGNhc2UgNjA6XG4gICAgICAgICAgICByZXR1cm4gNzk7XG4gICAgICAgICAgY2FzZSA2MTpcbiAgICAgICAgICAgIHJldHVybiA4MDtcbiAgICAgICAgICBjYXNlIDYyOlxuICAgICAgICAgICAgcmV0dXJuIDgxO1xuICAgICAgICAgIGNhc2UgNjM6XG4gICAgICAgICAgICByZXR1cm4gODI7XG4gICAgICAgICAgY2FzZSA2NDpcbiAgICAgICAgICAgIHJldHVybiA4MztcbiAgICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgICAgcmV0dXJuIDcyO1xuICAgICAgICAgIGNhc2UgNjY6XG4gICAgICAgICAgICByZXR1cm4gNzM7XG4gICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgIHJldHVybiA1O1xuICAgICAgICAgIGNhc2UgNjg6XG4gICAgICAgICAgICByZXR1cm4gXCJJTlZBTElEXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBydWxlczogWy9eKD86JSVcXHspL2ksIC9eKD86KCg/Oig/IVxcfSUlKVteOi5dKSopKS9pLCAvXig/OjopL2ksIC9eKD86XFx9JSUpL2ksIC9eKD86KCg/Oig/IVxcfSUlKS58XFxuKSopKS9pLCAvXig/OltcXG5dKykvaSwgL14oPzpcXHMrKS9pLCAvXig/OigoPyFcXG4pXFxzKSspL2ksIC9eKD86I1teXFxuXSopL2ksIC9eKD86JSg/IVxceylbXlxcbl0qKS9pLCAvXig/OlteXFx9XSUlW15cXG5dKikvaSwgL14oPzpbMC05XSsoPz1bIFxcbl0rKSkvaSwgL14oPzpib3hcXGIpL2ksIC9eKD86cGFydGljaXBhbnRcXGIpL2ksIC9eKD86YWN0b3JcXGIpL2ksIC9eKD86W15cXC0+Olxcbiw7XSs/KFtcXC1dKlteXFwtPjpcXG4sO10rPykqPyg/PSgoPyFcXG4pXFxzKSthcyg/IVxcbilcXHN8WyNcXG47XXwkKSkvaSwgL14oPzphc1xcYikvaSwgL14oPzooPzopKS9pLCAvXig/Omxvb3BcXGIpL2ksIC9eKD86cmVjdFxcYikvaSwgL14oPzpvcHRcXGIpL2ksIC9eKD86YWx0XFxiKS9pLCAvXig/OmVsc2VcXGIpL2ksIC9eKD86cGFyXFxiKS9pLCAvXig/OnBhcl9vdmVyXFxiKS9pLCAvXig/OmFuZFxcYikvaSwgL14oPzpjcml0aWNhbFxcYikvaSwgL14oPzpvcHRpb25cXGIpL2ksIC9eKD86YnJlYWtcXGIpL2ksIC9eKD86KD86WzpdPyg/Om5vKT93cmFwKT9bXiNcXG47XSopL2ksIC9eKD86ZW5kXFxiKS9pLCAvXig/OmxlZnQgb2ZcXGIpL2ksIC9eKD86cmlnaHQgb2ZcXGIpL2ksIC9eKD86bGlua3NcXGIpL2ksIC9eKD86bGlua1xcYikvaSwgL14oPzpwcm9wZXJ0aWVzXFxiKS9pLCAvXig/OmRldGFpbHNcXGIpL2ksIC9eKD86b3ZlclxcYikvaSwgL14oPzpub3RlXFxiKS9pLCAvXig/OmFjdGl2YXRlXFxiKS9pLCAvXig/OmRlYWN0aXZhdGVcXGIpL2ksIC9eKD86dGl0bGVcXHNbXiNcXG47XSspL2ksIC9eKD86dGl0bGU6XFxzW14jXFxuO10rKS9pLCAvXig/OmFjY1RpdGxlXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKjpcXHMqKS9pLCAvXig/Oig/IVxcbnx8KSpbXlxcbl0qKS9pLCAvXig/OmFjY0Rlc2NyXFxzKlxce1xccyopL2ksIC9eKD86W1xcfV0pL2ksIC9eKD86W15cXH1dKikvaSwgL14oPzpzZXF1ZW5jZURpYWdyYW1cXGIpL2ksIC9eKD86YXV0b251bWJlclxcYikvaSwgL14oPzpvZmZcXGIpL2ksIC9eKD86LCkvaSwgL14oPzo7KS9pLCAvXig/OlteXFwrXFwtPjpcXG4sO10rKCg/ISgteHwtLXh8LVxcKXwtLVxcKSkpW1xcLV0qW15cXCtcXC0+Olxcbiw7XSspKikvaSwgL14oPzotPj4pL2ksIC9eKD86LS0+PikvaSwgL14oPzotPikvaSwgL14oPzotLT4pL2ksIC9eKD86LVt4XSkvaSwgL14oPzotLVt4XSkvaSwgL14oPzotW1xcKV0pL2ksIC9eKD86LS1bXFwpXSkvaSwgL14oPzo6KD86KD86bm8pP3dyYXApP1teI1xcbjtdKykvaSwgL14oPzpcXCspL2ksIC9eKD86LSkvaSwgL14oPzokKS9pLCAvXig/Oi4pL2ldLFxuICAgICAgY29uZGl0aW9uczogeyBcImFjY19kZXNjcl9tdWx0aWxpbmVcIjogeyBcInJ1bGVzXCI6IFs0OCwgNDldLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzQ2XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFs0NF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwib3Blbl9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsxLCA4XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzIsIDMsIDhdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFyZ19kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFszLCA0LCA4XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJRFwiOiB7IFwicnVsZXNcIjogWzcsIDgsIDE1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJBTElBU1wiOiB7IFwicnVsZXNcIjogWzcsIDgsIDE2LCAxN10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiTElORVwiOiB7IFwicnVsZXNcIjogWzcsIDgsIDI5XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgNSwgNiwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDUsIDQ3LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OF0sIFwiaW5jbHVzaXZlXCI6IHRydWUgfSB9XG4gICAgfTtcbiAgICByZXR1cm4gbGV4ZXIyO1xuICB9KCk7XG4gIHBhcnNlcjIubGV4ZXIgPSBsZXhlcjtcbiAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgIHRoaXMueXkgPSB7fTtcbiAgfVxuICBQYXJzZXIucHJvdG90eXBlID0gcGFyc2VyMjtcbiAgcGFyc2VyMi5QYXJzZXIgPSBQYXJzZXI7XG4gIHJldHVybiBuZXcgUGFyc2VyKCk7XG59KCk7XG5wYXJzZXIucGFyc2VyID0gcGFyc2VyO1xuY29uc3QgcGFyc2VyJDEgPSBwYXJzZXI7XG5sZXQgcHJldkFjdG9yID0gdm9pZCAwO1xubGV0IGFjdG9ycyA9IHt9O1xubGV0IGJveGVzID0gW107XG5sZXQgbWVzc2FnZXMgPSBbXTtcbmxldCBzZXF1ZW5jZU51bWJlcnNFbmFibGVkID0gZmFsc2U7XG5sZXQgd3JhcEVuYWJsZWQ7XG5sZXQgY3VycmVudEJveCA9IHZvaWQgMDtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBhZGRCb3ggPSBmdW5jdGlvbihkYXRhKSB7XG4gIGJveGVzLnB1c2goe1xuICAgIG5hbWU6IGRhdGEudGV4dCxcbiAgICB3cmFwOiBkYXRhLndyYXAgPT09IHZvaWQgMCAmJiBhdXRvV3JhcCgpIHx8ICEhZGF0YS53cmFwLFxuICAgIGZpbGw6IGRhdGEuY29sb3IsXG4gICAgYWN0b3JLZXlzOiBbXVxuICB9KTtcbiAgY3VycmVudEJveCA9IGJveGVzLnNsaWNlKC0xKVswXTtcbn07XG5jb25zdCBhZGRBY3RvciA9IGZ1bmN0aW9uKGlkLCBuYW1lLCBkZXNjcmlwdGlvbiwgdHlwZSkge1xuICBsZXQgYXNzaWduZWRCb3ggPSBjdXJyZW50Qm94O1xuICBjb25zdCBvbGQgPSBhY3RvcnNbaWRdO1xuICBpZiAob2xkKSB7XG4gICAgaWYgKGN1cnJlbnRCb3ggJiYgb2xkLmJveCAmJiBjdXJyZW50Qm94ICE9PSBvbGQuYm94KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQSBzYW1lIHBhcnRpY2lwYW50IHNob3VsZCBvbmx5IGJlIGRlZmluZWQgaW4gb25lIEJveDogXCIgKyBvbGQubmFtZSArIFwiIGNhbid0IGJlIGluICdcIiArIG9sZC5ib3gubmFtZSArIFwiJyBhbmQgaW4gJ1wiICsgY3VycmVudEJveC5uYW1lICsgXCInIGF0IHRoZSBzYW1lIHRpbWUuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGFzc2lnbmVkQm94ID0gb2xkLmJveCA/IG9sZC5ib3ggOiBjdXJyZW50Qm94O1xuICAgIG9sZC5ib3ggPSBhc3NpZ25lZEJveDtcbiAgICBpZiAob2xkICYmIG5hbWUgPT09IG9sZC5uYW1lICYmIGRlc2NyaXB0aW9uID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgaWYgKGRlc2NyaXB0aW9uID09IG51bGwgfHwgZGVzY3JpcHRpb24udGV4dCA9PSBudWxsKSB7XG4gICAgZGVzY3JpcHRpb24gPSB7IHRleHQ6IG5hbWUsIHdyYXA6IG51bGwsIHR5cGUgfTtcbiAgfVxuICBpZiAodHlwZSA9PSBudWxsIHx8IGRlc2NyaXB0aW9uLnRleHQgPT0gbnVsbCkge1xuICAgIGRlc2NyaXB0aW9uID0geyB0ZXh0OiBuYW1lLCB3cmFwOiBudWxsLCB0eXBlIH07XG4gIH1cbiAgYWN0b3JzW2lkXSA9IHtcbiAgICBib3g6IGFzc2lnbmVkQm94LFxuICAgIG5hbWUsXG4gICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLnRleHQsXG4gICAgd3JhcDogZGVzY3JpcHRpb24ud3JhcCA9PT0gdm9pZCAwICYmIGF1dG9XcmFwKCkgfHwgISFkZXNjcmlwdGlvbi53cmFwLFxuICAgIHByZXZBY3RvcixcbiAgICBsaW5rczoge30sXG4gICAgcHJvcGVydGllczoge30sXG4gICAgYWN0b3JDbnQ6IG51bGwsXG4gICAgcmVjdERhdGE6IG51bGwsXG4gICAgdHlwZTogdHlwZSB8fCBcInBhcnRpY2lwYW50XCJcbiAgfTtcbiAgaWYgKHByZXZBY3RvciAmJiBhY3RvcnNbcHJldkFjdG9yXSkge1xuICAgIGFjdG9yc1twcmV2QWN0b3JdLm5leHRBY3RvciA9IGlkO1xuICB9XG4gIGlmIChjdXJyZW50Qm94KSB7XG4gICAgY3VycmVudEJveC5hY3RvcktleXMucHVzaChpZCk7XG4gIH1cbiAgcHJldkFjdG9yID0gaWQ7XG59O1xuY29uc3QgYWN0aXZhdGlvbkNvdW50ID0gKHBhcnQpID0+IHtcbiAgbGV0IGk7XG4gIGxldCBjb3VudCA9IDA7XG4gIGZvciAoaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChtZXNzYWdlc1tpXS50eXBlID09PSBMSU5FVFlQRS5BQ1RJVkVfU1RBUlQgJiYgbWVzc2FnZXNbaV0uZnJvbS5hY3RvciA9PT0gcGFydCkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2VzW2ldLnR5cGUgPT09IExJTkVUWVBFLkFDVElWRV9FTkQgJiYgbWVzc2FnZXNbaV0uZnJvbS5hY3RvciA9PT0gcGFydCkge1xuICAgICAgY291bnQtLTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvdW50O1xufTtcbmNvbnN0IGFkZE1lc3NhZ2UgPSBmdW5jdGlvbihpZEZyb20sIGlkVG8sIG1lc3NhZ2UsIGFuc3dlcikge1xuICBtZXNzYWdlcy5wdXNoKHtcbiAgICBmcm9tOiBpZEZyb20sXG4gICAgdG86IGlkVG8sXG4gICAgbWVzc2FnZTogbWVzc2FnZS50ZXh0LFxuICAgIHdyYXA6IG1lc3NhZ2Uud3JhcCA9PT0gdm9pZCAwICYmIGF1dG9XcmFwKCkgfHwgISFtZXNzYWdlLndyYXAsXG4gICAgYW5zd2VyXG4gIH0pO1xufTtcbmNvbnN0IGFkZFNpZ25hbCA9IGZ1bmN0aW9uKGlkRnJvbSwgaWRUbywgbWVzc2FnZSA9IHsgdGV4dDogdm9pZCAwLCB3cmFwOiB2b2lkIDAgfSwgbWVzc2FnZVR5cGUpIHtcbiAgaWYgKG1lc3NhZ2VUeXBlID09PSBMSU5FVFlQRS5BQ1RJVkVfRU5EKSB7XG4gICAgY29uc3QgY250ID0gYWN0aXZhdGlvbkNvdW50KGlkRnJvbS5hY3Rvcik7XG4gICAgaWYgKGNudCA8IDEpIHtcbiAgICAgIGxldCBlcnJvciA9IG5ldyBFcnJvcihcIlRyeWluZyB0byBpbmFjdGl2YXRlIGFuIGluYWN0aXZlIHBhcnRpY2lwYW50IChcIiArIGlkRnJvbS5hY3RvciArIFwiKVwiKTtcbiAgICAgIGVycm9yLmhhc2ggPSB7XG4gICAgICAgIHRleHQ6IFwiLT4+LVwiLFxuICAgICAgICB0b2tlbjogXCItPj4tXCIsXG4gICAgICAgIGxpbmU6IFwiMVwiLFxuICAgICAgICBsb2M6IHsgZmlyc3RfbGluZTogMSwgbGFzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDEsIGxhc3RfY29sdW1uOiAxIH0sXG4gICAgICAgIGV4cGVjdGVkOiBbXCInQUNUSVZFX1BBUlRJQ0lQQU5UJ1wiXVxuICAgICAgfTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuICBtZXNzYWdlcy5wdXNoKHtcbiAgICBmcm9tOiBpZEZyb20sXG4gICAgdG86IGlkVG8sXG4gICAgbWVzc2FnZTogbWVzc2FnZS50ZXh0LFxuICAgIHdyYXA6IG1lc3NhZ2Uud3JhcCA9PT0gdm9pZCAwICYmIGF1dG9XcmFwKCkgfHwgISFtZXNzYWdlLndyYXAsXG4gICAgdHlwZTogbWVzc2FnZVR5cGVcbiAgfSk7XG4gIHJldHVybiB0cnVlO1xufTtcbmNvbnN0IGhhc0F0TGVhc3RPbmVCb3ggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJveGVzLmxlbmd0aCA+IDA7XG59O1xuY29uc3QgaGFzQXRMZWFzdE9uZUJveFdpdGhUaXRsZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gYm94ZXMuc29tZSgoYikgPT4gYi5uYW1lKTtcbn07XG5jb25zdCBnZXRNZXNzYWdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbWVzc2FnZXM7XG59O1xuY29uc3QgZ2V0Qm94ZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJveGVzO1xufTtcbmNvbnN0IGdldEFjdG9ycyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gYWN0b3JzO1xufTtcbmNvbnN0IGdldEFjdG9yID0gZnVuY3Rpb24oaWQpIHtcbiAgcmV0dXJuIGFjdG9yc1tpZF07XG59O1xuY29uc3QgZ2V0QWN0b3JLZXlzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhhY3RvcnMpO1xufTtcbmNvbnN0IGVuYWJsZVNlcXVlbmNlTnVtYmVycyA9IGZ1bmN0aW9uKCkge1xuICBzZXF1ZW5jZU51bWJlcnNFbmFibGVkID0gdHJ1ZTtcbn07XG5jb25zdCBkaXNhYmxlU2VxdWVuY2VOdW1iZXJzID0gZnVuY3Rpb24oKSB7XG4gIHNlcXVlbmNlTnVtYmVyc0VuYWJsZWQgPSBmYWxzZTtcbn07XG5jb25zdCBzaG93U2VxdWVuY2VOdW1iZXJzID0gKCkgPT4gc2VxdWVuY2VOdW1iZXJzRW5hYmxlZDtcbmNvbnN0IHNldFdyYXAgPSBmdW5jdGlvbih3cmFwU2V0dGluZykge1xuICB3cmFwRW5hYmxlZCA9IHdyYXBTZXR0aW5nO1xufTtcbmNvbnN0IGF1dG9XcmFwID0gKCkgPT4ge1xuICBpZiAod3JhcEVuYWJsZWQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiB3cmFwRW5hYmxlZDtcbiAgfVxuICByZXR1cm4gZ2V0Q29uZmlnKCkuc2VxdWVuY2Uud3JhcDtcbn07XG5jb25zdCBjbGVhciA9IGZ1bmN0aW9uKCkge1xuICBhY3RvcnMgPSB7fTtcbiAgYm94ZXMgPSBbXTtcbiAgbWVzc2FnZXMgPSBbXTtcbiAgc2VxdWVuY2VOdW1iZXJzRW5hYmxlZCA9IGZhbHNlO1xuICBjbGVhciQxKCk7XG59O1xuY29uc3QgcGFyc2VNZXNzYWdlID0gZnVuY3Rpb24oc3RyKSB7XG4gIGNvbnN0IF9zdHIgPSBzdHIudHJpbSgpO1xuICBjb25zdCBtZXNzYWdlID0ge1xuICAgIHRleHQ6IF9zdHIucmVwbGFjZSgvXjo/KD86bm8pP3dyYXA6LywgXCJcIikudHJpbSgpLFxuICAgIHdyYXA6IF9zdHIubWF0Y2goL146P3dyYXA6LykgIT09IG51bGwgPyB0cnVlIDogX3N0ci5tYXRjaCgvXjo/bm93cmFwOi8pICE9PSBudWxsID8gZmFsc2UgOiB2b2lkIDBcbiAgfTtcbiAgbG9nLmRlYnVnKFwicGFyc2VNZXNzYWdlOlwiLCBtZXNzYWdlKTtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59O1xuY29uc3QgcGFyc2VCb3hEYXRhID0gZnVuY3Rpb24oc3RyKSB7XG4gIGNvbnN0IG1hdGNoID0gc3RyLm1hdGNoKC9eKCg/OnJnYmE/fGhzbGE/KVxccypcXCguKlxcKXxcXHcqKSguKikkLyk7XG4gIGxldCBjb2xvciA9IG1hdGNoICE9IG51bGwgJiYgbWF0Y2hbMV0gPyBtYXRjaFsxXS50cmltKCkgOiBcInRyYW5zcGFyZW50XCI7XG4gIGxldCB0aXRsZSA9IG1hdGNoICE9IG51bGwgJiYgbWF0Y2hbMl0gPyBtYXRjaFsyXS50cmltKCkgOiB2b2lkIDA7XG4gIGlmICh3aW5kb3cgJiYgd2luZG93LkNTUykge1xuICAgIGlmICghd2luZG93LkNTUy5zdXBwb3J0cyhcImNvbG9yXCIsIGNvbG9yKSkge1xuICAgICAgY29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgICB0aXRsZSA9IHN0ci50cmltKCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0eWxlID0gbmV3IE9wdGlvbigpLnN0eWxlO1xuICAgIHN0eWxlLmNvbG9yID0gY29sb3I7XG4gICAgaWYgKHN0eWxlLmNvbG9yICE9PSBjb2xvcikge1xuICAgICAgY29sb3IgPSBcInRyYW5zcGFyZW50XCI7XG4gICAgICB0aXRsZSA9IHN0ci50cmltKCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGJveERhdGEgPSB7XG4gICAgY29sb3IsXG4gICAgdGV4dDogdGl0bGUgIT09IHZvaWQgMCA/IHNhbml0aXplVGV4dCh0aXRsZS5yZXBsYWNlKC9eOj8oPzpubyk/d3JhcDovLCBcIlwiKSwgZ2V0Q29uZmlnKCkpIDogdm9pZCAwLFxuICAgIHdyYXA6IHRpdGxlICE9PSB2b2lkIDAgPyB0aXRsZS5tYXRjaCgvXjo/d3JhcDovKSAhPT0gbnVsbCA/IHRydWUgOiB0aXRsZS5tYXRjaCgvXjo/bm93cmFwOi8pICE9PSBudWxsID8gZmFsc2UgOiB2b2lkIDAgOiB2b2lkIDBcbiAgfTtcbiAgcmV0dXJuIGJveERhdGE7XG59O1xuY29uc3QgTElORVRZUEUgPSB7XG4gIFNPTElEOiAwLFxuICBET1RURUQ6IDEsXG4gIE5PVEU6IDIsXG4gIFNPTElEX0NST1NTOiAzLFxuICBET1RURURfQ1JPU1M6IDQsXG4gIFNPTElEX09QRU46IDUsXG4gIERPVFRFRF9PUEVOOiA2LFxuICBMT09QX1NUQVJUOiAxMCxcbiAgTE9PUF9FTkQ6IDExLFxuICBBTFRfU1RBUlQ6IDEyLFxuICBBTFRfRUxTRTogMTMsXG4gIEFMVF9FTkQ6IDE0LFxuICBPUFRfU1RBUlQ6IDE1LFxuICBPUFRfRU5EOiAxNixcbiAgQUNUSVZFX1NUQVJUOiAxNyxcbiAgQUNUSVZFX0VORDogMTgsXG4gIFBBUl9TVEFSVDogMTksXG4gIFBBUl9BTkQ6IDIwLFxuICBQQVJfRU5EOiAyMSxcbiAgUkVDVF9TVEFSVDogMjIsXG4gIFJFQ1RfRU5EOiAyMyxcbiAgU09MSURfUE9JTlQ6IDI0LFxuICBET1RURURfUE9JTlQ6IDI1LFxuICBBVVRPTlVNQkVSOiAyNixcbiAgQ1JJVElDQUxfU1RBUlQ6IDI3LFxuICBDUklUSUNBTF9PUFRJT046IDI4LFxuICBDUklUSUNBTF9FTkQ6IDI5LFxuICBCUkVBS19TVEFSVDogMzAsXG4gIEJSRUFLX0VORDogMzEsXG4gIFBBUl9PVkVSX1NUQVJUOiAzMlxufTtcbmNvbnN0IEFSUk9XVFlQRSA9IHtcbiAgRklMTEVEOiAwLFxuICBPUEVOOiAxXG59O1xuY29uc3QgUExBQ0VNRU5UID0ge1xuICBMRUZUT0Y6IDAsXG4gIFJJR0hUT0Y6IDEsXG4gIE9WRVI6IDJcbn07XG5jb25zdCBhZGROb3RlID0gZnVuY3Rpb24oYWN0b3IsIHBsYWNlbWVudCwgbWVzc2FnZSkge1xuICAoe1xuICAgIGFjdG9yLFxuICAgIHBsYWNlbWVudCxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLnRleHQsXG4gICAgd3JhcDogbWVzc2FnZS53cmFwID09PSB2b2lkIDAgJiYgYXV0b1dyYXAoKSB8fCAhIW1lc3NhZ2Uud3JhcFxuICB9KTtcbiAgY29uc3QgYWN0b3JzMiA9IFtdLmNvbmNhdChhY3RvciwgYWN0b3IpO1xuICBtZXNzYWdlcy5wdXNoKHtcbiAgICBmcm9tOiBhY3RvcnMyWzBdLFxuICAgIHRvOiBhY3RvcnMyWzFdLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UudGV4dCxcbiAgICB3cmFwOiBtZXNzYWdlLndyYXAgPT09IHZvaWQgMCAmJiBhdXRvV3JhcCgpIHx8ICEhbWVzc2FnZS53cmFwLFxuICAgIHR5cGU6IExJTkVUWVBFLk5PVEUsXG4gICAgcGxhY2VtZW50XG4gIH0pO1xufTtcbmNvbnN0IGFkZExpbmtzID0gZnVuY3Rpb24oYWN0b3JJZCwgdGV4dCkge1xuICBjb25zdCBhY3RvciA9IGdldEFjdG9yKGFjdG9ySWQpO1xuICB0cnkge1xuICAgIGxldCBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVUZXh0KHRleHQudGV4dCwgZ2V0Q29uZmlnKCkpO1xuICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnJlcGxhY2UoLyZhbXA7L2csIFwiJlwiKTtcbiAgICBzYW5pdGl6ZWRUZXh0ID0gc2FuaXRpemVkVGV4dC5yZXBsYWNlKC8mZXF1YWxzOy9nLCBcIj1cIik7XG4gICAgY29uc3QgbGlua3MgPSBKU09OLnBhcnNlKHNhbml0aXplZFRleHQpO1xuICAgIGluc2VydExpbmtzKGFjdG9yLCBsaW5rcyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3IoXCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGxpbmsgdGV4dFwiLCBlKTtcbiAgfVxufTtcbmNvbnN0IGFkZEFMaW5rID0gZnVuY3Rpb24oYWN0b3JJZCwgdGV4dCkge1xuICBjb25zdCBhY3RvciA9IGdldEFjdG9yKGFjdG9ySWQpO1xuICB0cnkge1xuICAgIGNvbnN0IGxpbmtzID0ge307XG4gICAgbGV0IHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZVRleHQodGV4dC50ZXh0LCBnZXRDb25maWcoKSk7XG4gICAgdmFyIHNlcCA9IHNhbml0aXplZFRleHQuaW5kZXhPZihcIkBcIik7XG4gICAgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplZFRleHQucmVwbGFjZSgvJmFtcDsvZywgXCImXCIpO1xuICAgIHNhbml0aXplZFRleHQgPSBzYW5pdGl6ZWRUZXh0LnJlcGxhY2UoLyZlcXVhbHM7L2csIFwiPVwiKTtcbiAgICB2YXIgbGFiZWwgPSBzYW5pdGl6ZWRUZXh0LnNsaWNlKDAsIHNlcCAtIDEpLnRyaW0oKTtcbiAgICB2YXIgbGluayA9IHNhbml0aXplZFRleHQuc2xpY2Uoc2VwICsgMSkudHJpbSgpO1xuICAgIGxpbmtzW2xhYmVsXSA9IGxpbms7XG4gICAgaW5zZXJ0TGlua3MoYWN0b3IsIGxpbmtzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5lcnJvcihcImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgbGluayB0ZXh0XCIsIGUpO1xuICB9XG59O1xuZnVuY3Rpb24gaW5zZXJ0TGlua3MoYWN0b3IsIGxpbmtzKSB7XG4gIGlmIChhY3Rvci5saW5rcyA9PSBudWxsKSB7XG4gICAgYWN0b3IubGlua3MgPSBsaW5rcztcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gbGlua3MpIHtcbiAgICAgIGFjdG9yLmxpbmtzW2tleV0gPSBsaW5rc1trZXldO1xuICAgIH1cbiAgfVxufVxuY29uc3QgYWRkUHJvcGVydGllcyA9IGZ1bmN0aW9uKGFjdG9ySWQsIHRleHQpIHtcbiAgY29uc3QgYWN0b3IgPSBnZXRBY3RvcihhY3RvcklkKTtcbiAgdHJ5IHtcbiAgICBsZXQgc2FuaXRpemVkVGV4dCA9IHNhbml0aXplVGV4dCh0ZXh0LnRleHQsIGdldENvbmZpZygpKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gSlNPTi5wYXJzZShzYW5pdGl6ZWRUZXh0KTtcbiAgICBpbnNlcnRQcm9wZXJ0aWVzKGFjdG9yLCBwcm9wZXJ0aWVzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5lcnJvcihcImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgcHJvcGVydGllcyB0ZXh0XCIsIGUpO1xuICB9XG59O1xuZnVuY3Rpb24gaW5zZXJ0UHJvcGVydGllcyhhY3RvciwgcHJvcGVydGllcykge1xuICBpZiAoYWN0b3IucHJvcGVydGllcyA9PSBudWxsKSB7XG4gICAgYWN0b3IucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgIGFjdG9yLnByb3BlcnRpZXNba2V5XSA9IHByb3BlcnRpZXNba2V5XTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGJveEVuZCgpIHtcbiAgY3VycmVudEJveCA9IHZvaWQgMDtcbn1cbmNvbnN0IGFkZERldGFpbHMgPSBmdW5jdGlvbihhY3RvcklkLCB0ZXh0KSB7XG4gIGNvbnN0IGFjdG9yID0gZ2V0QWN0b3IoYWN0b3JJZCk7XG4gIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXh0LnRleHQpO1xuICB0cnkge1xuICAgIGNvbnN0IHRleHQyID0gZWxlbS5pbm5lckhUTUw7XG4gICAgY29uc3QgZGV0YWlscyA9IEpTT04ucGFyc2UodGV4dDIpO1xuICAgIGlmIChkZXRhaWxzW1wicHJvcGVydGllc1wiXSkge1xuICAgICAgaW5zZXJ0UHJvcGVydGllcyhhY3RvciwgZGV0YWlsc1tcInByb3BlcnRpZXNcIl0pO1xuICAgIH1cbiAgICBpZiAoZGV0YWlsc1tcImxpbmtzXCJdKSB7XG4gICAgICBpbnNlcnRMaW5rcyhhY3RvciwgZGV0YWlsc1tcImxpbmtzXCJdKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3IoXCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGRldGFpbHMgdGV4dFwiLCBlKTtcbiAgfVxufTtcbmNvbnN0IGdldEFjdG9yUHJvcGVydHkgPSBmdW5jdGlvbihhY3Rvciwga2V5KSB7XG4gIGlmIChhY3RvciAhPT0gdm9pZCAwICYmIGFjdG9yLnByb3BlcnRpZXMgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiBhY3Rvci5wcm9wZXJ0aWVzW2tleV07XG4gIH1cbiAgcmV0dXJuIHZvaWQgMDtcbn07XG5jb25zdCBhcHBseSA9IGZ1bmN0aW9uKHBhcmFtKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhcmFtKSkge1xuICAgIHBhcmFtLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgYXBwbHkoaXRlbSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpdGNoIChwYXJhbS50eXBlKSB7XG4gICAgICBjYXNlIFwic2VxdWVuY2VJbmRleFwiOlxuICAgICAgICBtZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICBmcm9tOiB2b2lkIDAsXG4gICAgICAgICAgdG86IHZvaWQgMCxcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICBzdGFydDogcGFyYW0uc2VxdWVuY2VJbmRleCxcbiAgICAgICAgICAgIHN0ZXA6IHBhcmFtLnNlcXVlbmNlSW5kZXhTdGVwLFxuICAgICAgICAgICAgdmlzaWJsZTogcGFyYW0uc2VxdWVuY2VWaXNpYmxlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3cmFwOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiBwYXJhbS5zaWduYWxUeXBlXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRQYXJ0aWNpcGFudFwiOlxuICAgICAgICBhZGRBY3RvcihwYXJhbS5hY3RvciwgcGFyYW0uYWN0b3IsIHBhcmFtLmRlc2NyaXB0aW9uLCBcInBhcnRpY2lwYW50XCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRBY3RvclwiOlxuICAgICAgICBhZGRBY3RvcihwYXJhbS5hY3RvciwgcGFyYW0uYWN0b3IsIHBhcmFtLmRlc2NyaXB0aW9uLCBcImFjdG9yXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhY3RpdmVTdGFydFwiOlxuICAgICAgICBhZGRTaWduYWwocGFyYW0uYWN0b3IsIHZvaWQgMCwgdm9pZCAwLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWN0aXZlRW5kXCI6XG4gICAgICAgIGFkZFNpZ25hbChwYXJhbS5hY3Rvciwgdm9pZCAwLCB2b2lkIDAsIHBhcmFtLnNpZ25hbFR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGROb3RlXCI6XG4gICAgICAgIGFkZE5vdGUocGFyYW0uYWN0b3IsIHBhcmFtLnBsYWNlbWVudCwgcGFyYW0udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZExpbmtzXCI6XG4gICAgICAgIGFkZExpbmtzKHBhcmFtLmFjdG9yLCBwYXJhbS50ZXh0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWRkQUxpbmtcIjpcbiAgICAgICAgYWRkQUxpbmsocGFyYW0uYWN0b3IsIHBhcmFtLnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRQcm9wZXJ0aWVzXCI6XG4gICAgICAgIGFkZFByb3BlcnRpZXMocGFyYW0uYWN0b3IsIHBhcmFtLnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGREZXRhaWxzXCI6XG4gICAgICAgIGFkZERldGFpbHMocGFyYW0uYWN0b3IsIHBhcmFtLnRleHQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRNZXNzYWdlXCI6XG4gICAgICAgIGFkZFNpZ25hbChwYXJhbS5mcm9tLCBwYXJhbS50bywgcGFyYW0ubXNnLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYm94U3RhcnRcIjpcbiAgICAgICAgYWRkQm94KHBhcmFtLmJveERhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJib3hFbmRcIjpcbiAgICAgICAgYm94RW5kKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImxvb3BTdGFydFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHBhcmFtLmxvb3BUZXh0LCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibG9vcEVuZFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInJlY3RTdGFydFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHBhcmFtLmNvbG9yLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVjdEVuZFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9wdFN0YXJ0XCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgcGFyYW0ub3B0VGV4dCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9wdEVuZFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFsdFN0YXJ0XCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgcGFyYW0uYWx0VGV4dCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImVsc2VcIjpcbiAgICAgICAgYWRkU2lnbmFsKHZvaWQgMCwgdm9pZCAwLCBwYXJhbS5hbHRUZXh0LCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWx0RW5kXCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic2V0QWNjVGl0bGVcIjpcbiAgICAgICAgc2V0QWNjVGl0bGUocGFyYW0udGV4dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBhclN0YXJ0XCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgcGFyYW0ucGFyVGV4dCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFuZFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHBhcmFtLnBhclRleHQsIHBhcmFtLnNpZ25hbFR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJwYXJFbmRcIjpcbiAgICAgICAgYWRkU2lnbmFsKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIHBhcmFtLnNpZ25hbFR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjcml0aWNhbFN0YXJ0XCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgcGFyYW0uY3JpdGljYWxUZXh0LCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib3B0aW9uXCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgcGFyYW0ub3B0aW9uVGV4dCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImNyaXRpY2FsRW5kXCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYnJlYWtTdGFydFwiOlxuICAgICAgICBhZGRTaWduYWwodm9pZCAwLCB2b2lkIDAsIHBhcmFtLmJyZWFrVGV4dCwgcGFyYW0uc2lnbmFsVHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImJyZWFrRW5kXCI6XG4gICAgICAgIGFkZFNpZ25hbCh2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBwYXJhbS5zaWduYWxUeXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59O1xuY29uc3QgZGIgPSB7XG4gIGFkZEFjdG9yLFxuICBhZGRNZXNzYWdlLFxuICBhZGRTaWduYWwsXG4gIGFkZExpbmtzLFxuICBhZGREZXRhaWxzLFxuICBhZGRQcm9wZXJ0aWVzLFxuICBhdXRvV3JhcCxcbiAgc2V0V3JhcCxcbiAgZW5hYmxlU2VxdWVuY2VOdW1iZXJzLFxuICBkaXNhYmxlU2VxdWVuY2VOdW1iZXJzLFxuICBzaG93U2VxdWVuY2VOdW1iZXJzLFxuICBnZXRNZXNzYWdlcyxcbiAgZ2V0QWN0b3JzLFxuICBnZXRBY3RvcixcbiAgZ2V0QWN0b3JLZXlzLFxuICBnZXRBY3RvclByb3BlcnR5LFxuICBnZXRBY2NUaXRsZSxcbiAgZ2V0Qm94ZXMsXG4gIGdldERpYWdyYW1UaXRsZSxcbiAgc2V0RGlhZ3JhbVRpdGxlLFxuICBwYXJzZURpcmVjdGl2ZSxcbiAgZ2V0Q29uZmlnOiAoKSA9PiBnZXRDb25maWcoKS5zZXF1ZW5jZSxcbiAgY2xlYXIsXG4gIHBhcnNlTWVzc2FnZSxcbiAgcGFyc2VCb3hEYXRhLFxuICBMSU5FVFlQRSxcbiAgQVJST1dUWVBFLFxuICBQTEFDRU1FTlQsXG4gIGFkZE5vdGUsXG4gIHNldEFjY1RpdGxlLFxuICBhcHBseSxcbiAgc2V0QWNjRGVzY3JpcHRpb24sXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBoYXNBdExlYXN0T25lQm94LFxuICBoYXNBdExlYXN0T25lQm94V2l0aFRpdGxlXG59O1xuY29uc3QgZ2V0U3R5bGVzID0gKG9wdGlvbnMpID0+IGAuYWN0b3Ige1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdG9yQm9yZGVyfTtcbiAgICBmaWxsOiAke29wdGlvbnMuYWN0b3JCa2d9O1xuICB9XG5cbiAgdGV4dC5hY3RvciA+IHRzcGFuIHtcbiAgICBmaWxsOiAke29wdGlvbnMuYWN0b3JUZXh0Q29sb3J9O1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5hY3Rvci1saW5lIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5hY3RvckxpbmVDb2xvcn07XG4gIH1cblxuICAubWVzc2FnZUxpbmUwIHtcbiAgICBzdHJva2Utd2lkdGg6IDEuNTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiBub25lO1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnNpZ25hbENvbG9yfTtcbiAgfVxuXG4gIC5tZXNzYWdlTGluZTEge1xuICAgIHN0cm9rZS13aWR0aDogMS41O1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMuc2lnbmFsQ29sb3J9O1xuICB9XG5cbiAgI2Fycm93aGVhZCBwYXRoIHtcbiAgICBmaWxsOiAke29wdGlvbnMuc2lnbmFsQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnNpZ25hbENvbG9yfTtcbiAgfVxuXG4gIC5zZXF1ZW5jZU51bWJlciB7XG4gICAgZmlsbDogJHtvcHRpb25zLnNlcXVlbmNlTnVtYmVyQ29sb3J9O1xuICB9XG5cbiAgI3NlcXVlbmNlbnVtYmVyIHtcbiAgICBmaWxsOiAke29wdGlvbnMuc2lnbmFsQ29sb3J9O1xuICB9XG5cbiAgI2Nyb3NzaGVhZCBwYXRoIHtcbiAgICBmaWxsOiAke29wdGlvbnMuc2lnbmFsQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLnNpZ25hbENvbG9yfTtcbiAgfVxuXG4gIC5tZXNzYWdlVGV4dCB7XG4gICAgZmlsbDogJHtvcHRpb25zLnNpZ25hbFRleHRDb2xvcn07XG4gICAgc3Ryb2tlOiBub25lO1xuICB9XG5cbiAgLmxhYmVsQm94IHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5sYWJlbEJveEJvcmRlckNvbG9yfTtcbiAgICBmaWxsOiAke29wdGlvbnMubGFiZWxCb3hCa2dDb2xvcn07XG4gIH1cblxuICAubGFiZWxUZXh0LCAubGFiZWxUZXh0ID4gdHNwYW4ge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5sYWJlbFRleHRDb2xvcn07XG4gICAgc3Ryb2tlOiBub25lO1xuICB9XG5cbiAgLmxvb3BUZXh0LCAubG9vcFRleHQgPiB0c3BhbiB7XG4gICAgZmlsbDogJHtvcHRpb25zLmxvb3BUZXh0Q29sb3J9O1xuICAgIHN0cm9rZTogbm9uZTtcbiAgfVxuXG4gIC5sb29wTGluZSB7XG4gICAgc3Ryb2tlLXdpZHRoOiAycHg7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMiwgMjtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5sYWJlbEJveEJvcmRlckNvbG9yfTtcbiAgICBmaWxsOiAke29wdGlvbnMubGFiZWxCb3hCb3JkZXJDb2xvcn07XG4gIH1cblxuICAubm90ZSB7XG4gICAgLy9zdHJva2U6ICNkZWNjOTM7XG4gICAgc3Ryb2tlOiAke29wdGlvbnMubm90ZUJvcmRlckNvbG9yfTtcbiAgICBmaWxsOiAke29wdGlvbnMubm90ZUJrZ0NvbG9yfTtcbiAgfVxuXG4gIC5ub3RlVGV4dCwgLm5vdGVUZXh0ID4gdHNwYW4ge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5ub3RlVGV4dENvbG9yfTtcbiAgICBzdHJva2U6IG5vbmU7XG4gIH1cblxuICAuYWN0aXZhdGlvbjAge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hY3RpdmF0aW9uQmtnQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdGl2YXRpb25Cb3JkZXJDb2xvcn07XG4gIH1cblxuICAuYWN0aXZhdGlvbjEge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hY3RpdmF0aW9uQmtnQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdGl2YXRpb25Cb3JkZXJDb2xvcn07XG4gIH1cblxuICAuYWN0aXZhdGlvbjIge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5hY3RpdmF0aW9uQmtnQ29sb3J9O1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdGl2YXRpb25Cb3JkZXJDb2xvcn07XG4gIH1cblxuICAuYWN0b3JQb3B1cE1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgfVxuXG4gIC5hY3RvclBvcHVwTWVudVBhbmVsIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZmlsbDogJHtvcHRpb25zLmFjdG9yQmtnfTtcbiAgICBib3gtc2hhZG93OiAwcHggOHB4IDE2cHggMHB4IHJnYmEoMCwwLDAsMC4yKTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDNweCA1cHggMnB4IHJnYigwIDAgMCAvIDAuNCkpO1xufVxuICAuYWN0b3ItbWFuIGxpbmUge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmFjdG9yQm9yZGVyfTtcbiAgICBmaWxsOiAke29wdGlvbnMuYWN0b3JCa2d9O1xuICB9XG4gIC5hY3Rvci1tYW4gY2lyY2xlLCBsaW5lIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5hY3RvckJvcmRlcn07XG4gICAgZmlsbDogJHtvcHRpb25zLmFjdG9yQmtnfTtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuYDtcbmNvbnN0IHN0eWxlcyA9IGdldFN0eWxlcztcbmNvbnN0IGRyYXdSZWN0ID0gZnVuY3Rpb24oZWxlbSwgcmVjdERhdGEpIHtcbiAgcmV0dXJuIGRyYXdSZWN0JDEoZWxlbSwgcmVjdERhdGEpO1xufTtcbmNvbnN0IGFkZFBvcHVwSW50ZXJhY3Rpb24gPSAoaWQsIGFjdG9yQ250MikgPT4ge1xuICBhZGRGdW5jdGlvbigoKSA9PiB7XG4gICAgY29uc3QgYXJyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChpZCk7XG4gICAgaWYgKGFyci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXJyWzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZnVuY3Rpb24oKSB7XG4gICAgICBwb3B1cE1lbnVVcEZ1bmMoXCJhY3RvclwiICsgYWN0b3JDbnQyICsgXCJfcG9wdXBcIik7XG4gICAgfSk7XG4gICAgYXJyWzBdLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW91dFwiLCBmdW5jdGlvbigpIHtcbiAgICAgIHBvcHVwTWVudURvd25GdW5jKFwiYWN0b3JcIiArIGFjdG9yQ250MiArIFwiX3BvcHVwXCIpO1xuICAgIH0pO1xuICB9KTtcbn07XG5jb25zdCBkcmF3UG9wdXAgPSBmdW5jdGlvbihlbGVtLCBhY3RvciwgbWluTWVudVdpZHRoLCB0ZXh0QXR0cnMsIGZvcmNlTWVudXMpIHtcbiAgaWYgKGFjdG9yLmxpbmtzID09PSB2b2lkIDAgfHwgYWN0b3IubGlua3MgPT09IG51bGwgfHwgT2JqZWN0LmtleXMoYWN0b3IubGlua3MpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IGhlaWdodDogMCwgd2lkdGg6IDAgfTtcbiAgfVxuICBjb25zdCBsaW5rcyA9IGFjdG9yLmxpbmtzO1xuICBjb25zdCBhY3RvckNudDIgPSBhY3Rvci5hY3RvckNudDtcbiAgY29uc3QgcmVjdERhdGEgPSBhY3Rvci5yZWN0RGF0YTtcbiAgdmFyIGRpc3BsYXlWYWx1ZSA9IFwibm9uZVwiO1xuICBpZiAoZm9yY2VNZW51cykge1xuICAgIGRpc3BsYXlWYWx1ZSA9IFwiYmxvY2sgIWltcG9ydGFudFwiO1xuICB9XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGcuYXR0cihcImlkXCIsIFwiYWN0b3JcIiArIGFjdG9yQ250MiArIFwiX3BvcHVwXCIpO1xuICBnLmF0dHIoXCJjbGFzc1wiLCBcImFjdG9yUG9wdXBNZW51XCIpO1xuICBnLmF0dHIoXCJkaXNwbGF5XCIsIGRpc3BsYXlWYWx1ZSk7XG4gIGFkZFBvcHVwSW50ZXJhY3Rpb24oXCIjYWN0b3JcIiArIGFjdG9yQ250MiArIFwiX3BvcHVwXCIsIGFjdG9yQ250Mik7XG4gIHZhciBhY3RvckNsYXNzID0gXCJcIjtcbiAgaWYgKHJlY3REYXRhLmNsYXNzICE9PSB2b2lkIDApIHtcbiAgICBhY3RvckNsYXNzID0gXCIgXCIgKyByZWN0RGF0YS5jbGFzcztcbiAgfVxuICBsZXQgbWVudVdpZHRoID0gcmVjdERhdGEud2lkdGggPiBtaW5NZW51V2lkdGggPyByZWN0RGF0YS53aWR0aCA6IG1pbk1lbnVXaWR0aDtcbiAgY29uc3QgcmVjdEVsZW0gPSBnLmFwcGVuZChcInJlY3RcIik7XG4gIHJlY3RFbGVtLmF0dHIoXCJjbGFzc1wiLCBcImFjdG9yUG9wdXBNZW51UGFuZWxcIiArIGFjdG9yQ2xhc3MpO1xuICByZWN0RWxlbS5hdHRyKFwieFwiLCByZWN0RGF0YS54KTtcbiAgcmVjdEVsZW0uYXR0cihcInlcIiwgcmVjdERhdGEuaGVpZ2h0KTtcbiAgcmVjdEVsZW0uYXR0cihcImZpbGxcIiwgcmVjdERhdGEuZmlsbCk7XG4gIHJlY3RFbGVtLmF0dHIoXCJzdHJva2VcIiwgcmVjdERhdGEuc3Ryb2tlKTtcbiAgcmVjdEVsZW0uYXR0cihcIndpZHRoXCIsIG1lbnVXaWR0aCk7XG4gIHJlY3RFbGVtLmF0dHIoXCJoZWlnaHRcIiwgcmVjdERhdGEuaGVpZ2h0KTtcbiAgcmVjdEVsZW0uYXR0cihcInJ4XCIsIHJlY3REYXRhLnJ4KTtcbiAgcmVjdEVsZW0uYXR0cihcInJ5XCIsIHJlY3REYXRhLnJ5KTtcbiAgaWYgKGxpbmtzICE9IG51bGwpIHtcbiAgICB2YXIgbGlua1kgPSAyMDtcbiAgICBmb3IgKGxldCBrZXkgaW4gbGlua3MpIHtcbiAgICAgIHZhciBsaW5rRWxlbSA9IGcuYXBwZW5kKFwiYVwiKTtcbiAgICAgIHZhciBzYW5pdGl6ZWRMaW5rID0gc2FuaXRpemVVcmwobGlua3Nba2V5XSk7XG4gICAgICBsaW5rRWxlbS5hdHRyKFwieGxpbms6aHJlZlwiLCBzYW5pdGl6ZWRMaW5rKTtcbiAgICAgIGxpbmtFbGVtLmF0dHIoXCJ0YXJnZXRcIiwgXCJfYmxhbmtcIik7XG4gICAgICBfZHJhd01lbnVJdGVtVGV4dENhbmRpZGF0ZUZ1bmModGV4dEF0dHJzKShcbiAgICAgICAga2V5LFxuICAgICAgICBsaW5rRWxlbSxcbiAgICAgICAgcmVjdERhdGEueCArIDEwLFxuICAgICAgICByZWN0RGF0YS5oZWlnaHQgKyBsaW5rWSxcbiAgICAgICAgbWVudVdpZHRoLFxuICAgICAgICAyMCxcbiAgICAgICAgeyBjbGFzczogXCJhY3RvclwiIH0sXG4gICAgICAgIHRleHRBdHRyc1xuICAgICAgKTtcbiAgICAgIGxpbmtZICs9IDMwO1xuICAgIH1cbiAgfVxuICByZWN0RWxlbS5hdHRyKFwiaGVpZ2h0XCIsIGxpbmtZKTtcbiAgcmV0dXJuIHsgaGVpZ2h0OiByZWN0RGF0YS5oZWlnaHQgKyBsaW5rWSwgd2lkdGg6IG1lbnVXaWR0aCB9O1xufTtcbmNvbnN0IHBvcHVwTWVudSA9IGZ1bmN0aW9uKHBvcGlkKSB7XG4gIHJldHVybiBcInZhciBwdSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdcIiArIHBvcGlkICsgXCInKTsgaWYgKHB1ICE9IG51bGwpIHsgcHUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH1cIjtcbn07XG5jb25zdCBwb3Bkb3duTWVudSA9IGZ1bmN0aW9uKHBvcGlkKSB7XG4gIHJldHVybiBcInZhciBwdSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdcIiArIHBvcGlkICsgXCInKTsgaWYgKHB1ICE9IG51bGwpIHsgcHUuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgfVwiO1xufTtcbmNvbnN0IHBvcHVwTWVudVVwRnVuYyA9IGZ1bmN0aW9uKHBvcHVwSWQpIHtcbiAgdmFyIHB1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9wdXBJZCk7XG4gIGlmIChwdSAhPSBudWxsKSB7XG4gICAgcHUuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgfVxufTtcbmNvbnN0IHBvcHVwTWVudURvd25GdW5jID0gZnVuY3Rpb24ocG9wdXBJZCkge1xuICB2YXIgcHUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwb3B1cElkKTtcbiAgaWYgKHB1ICE9IG51bGwpIHtcbiAgICBwdS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gIH1cbn07XG5jb25zdCBkcmF3VGV4dCA9IGZ1bmN0aW9uKGVsZW0sIHRleHREYXRhKSB7XG4gIGxldCBwcmV2VGV4dEhlaWdodCA9IDA7XG4gIGxldCB0ZXh0SGVpZ2h0ID0gMDtcbiAgY29uc3QgbGluZXMgPSB0ZXh0RGF0YS50ZXh0LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCk7XG4gIGNvbnN0IFtfdGV4dEZvbnRTaXplLCBfdGV4dEZvbnRTaXplUHhdID0gcGFyc2VGb250U2l6ZSh0ZXh0RGF0YS5mb250U2l6ZSk7XG4gIGxldCB0ZXh0RWxlbXMgPSBbXTtcbiAgbGV0IGR5ID0gMDtcbiAgbGV0IHlmdW5jID0gKCkgPT4gdGV4dERhdGEueTtcbiAgaWYgKHRleHREYXRhLnZhbGlnbiAhPT0gdm9pZCAwICYmIHRleHREYXRhLnRleHRNYXJnaW4gIT09IHZvaWQgMCAmJiB0ZXh0RGF0YS50ZXh0TWFyZ2luID4gMCkge1xuICAgIHN3aXRjaCAodGV4dERhdGEudmFsaWduKSB7XG4gICAgICBjYXNlIFwidG9wXCI6XG4gICAgICBjYXNlIFwic3RhcnRcIjpcbiAgICAgICAgeWZ1bmMgPSAoKSA9PiBNYXRoLnJvdW5kKHRleHREYXRhLnkgKyB0ZXh0RGF0YS50ZXh0TWFyZ2luKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWlkZGxlXCI6XG4gICAgICBjYXNlIFwiY2VudGVyXCI6XG4gICAgICAgIHlmdW5jID0gKCkgPT4gTWF0aC5yb3VuZCh0ZXh0RGF0YS55ICsgKHByZXZUZXh0SGVpZ2h0ICsgdGV4dEhlaWdodCArIHRleHREYXRhLnRleHRNYXJnaW4pIC8gMik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImJvdHRvbVwiOlxuICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICB5ZnVuYyA9ICgpID0+IE1hdGgucm91bmQoXG4gICAgICAgICAgdGV4dERhdGEueSArIChwcmV2VGV4dEhlaWdodCArIHRleHRIZWlnaHQgKyAyICogdGV4dERhdGEudGV4dE1hcmdpbikgLSB0ZXh0RGF0YS50ZXh0TWFyZ2luXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAodGV4dERhdGEuYW5jaG9yICE9PSB2b2lkIDAgJiYgdGV4dERhdGEudGV4dE1hcmdpbiAhPT0gdm9pZCAwICYmIHRleHREYXRhLndpZHRoICE9PSB2b2lkIDApIHtcbiAgICBzd2l0Y2ggKHRleHREYXRhLmFuY2hvcikge1xuICAgICAgY2FzZSBcImxlZnRcIjpcbiAgICAgIGNhc2UgXCJzdGFydFwiOlxuICAgICAgICB0ZXh0RGF0YS54ID0gTWF0aC5yb3VuZCh0ZXh0RGF0YS54ICsgdGV4dERhdGEudGV4dE1hcmdpbik7XG4gICAgICAgIHRleHREYXRhLmFuY2hvciA9IFwic3RhcnRcIjtcbiAgICAgICAgdGV4dERhdGEuZG9taW5hbnRCYXNlbGluZSA9IFwibWlkZGxlXCI7XG4gICAgICAgIHRleHREYXRhLmFsaWdubWVudEJhc2VsaW5lID0gXCJtaWRkbGVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibWlkZGxlXCI6XG4gICAgICBjYXNlIFwiY2VudGVyXCI6XG4gICAgICAgIHRleHREYXRhLnggPSBNYXRoLnJvdW5kKHRleHREYXRhLnggKyB0ZXh0RGF0YS53aWR0aCAvIDIpO1xuICAgICAgICB0ZXh0RGF0YS5hbmNob3IgPSBcIm1pZGRsZVwiO1xuICAgICAgICB0ZXh0RGF0YS5kb21pbmFudEJhc2VsaW5lID0gXCJtaWRkbGVcIjtcbiAgICAgICAgdGV4dERhdGEuYWxpZ25tZW50QmFzZWxpbmUgPSBcIm1pZGRsZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxuICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICB0ZXh0RGF0YS54ID0gTWF0aC5yb3VuZCh0ZXh0RGF0YS54ICsgdGV4dERhdGEud2lkdGggLSB0ZXh0RGF0YS50ZXh0TWFyZ2luKTtcbiAgICAgICAgdGV4dERhdGEuYW5jaG9yID0gXCJlbmRcIjtcbiAgICAgICAgdGV4dERhdGEuZG9taW5hbnRCYXNlbGluZSA9IFwibWlkZGxlXCI7XG4gICAgICAgIHRleHREYXRhLmFsaWdubWVudEJhc2VsaW5lID0gXCJtaWRkbGVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGZvciAobGV0IFtpLCBsaW5lXSBvZiBsaW5lcy5lbnRyaWVzKCkpIHtcbiAgICBpZiAodGV4dERhdGEudGV4dE1hcmdpbiAhPT0gdm9pZCAwICYmIHRleHREYXRhLnRleHRNYXJnaW4gPT09IDAgJiYgX3RleHRGb250U2l6ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBkeSA9IGkgKiBfdGV4dEZvbnRTaXplO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0RWxlbSA9IGVsZW0uYXBwZW5kKFwidGV4dFwiKTtcbiAgICB0ZXh0RWxlbS5hdHRyKFwieFwiLCB0ZXh0RGF0YS54KTtcbiAgICB0ZXh0RWxlbS5hdHRyKFwieVwiLCB5ZnVuYygpKTtcbiAgICBpZiAodGV4dERhdGEuYW5jaG9yICE9PSB2b2lkIDApIHtcbiAgICAgIHRleHRFbGVtLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCB0ZXh0RGF0YS5hbmNob3IpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCB0ZXh0RGF0YS5kb21pbmFudEJhc2VsaW5lKS5hdHRyKFwiYWxpZ25tZW50LWJhc2VsaW5lXCIsIHRleHREYXRhLmFsaWdubWVudEJhc2VsaW5lKTtcbiAgICB9XG4gICAgaWYgKHRleHREYXRhLmZvbnRGYW1pbHkgIT09IHZvaWQgMCkge1xuICAgICAgdGV4dEVsZW0uc3R5bGUoXCJmb250LWZhbWlseVwiLCB0ZXh0RGF0YS5mb250RmFtaWx5KTtcbiAgICB9XG4gICAgaWYgKF90ZXh0Rm9udFNpemVQeCAhPT0gdm9pZCAwKSB7XG4gICAgICB0ZXh0RWxlbS5zdHlsZShcImZvbnQtc2l6ZVwiLCBfdGV4dEZvbnRTaXplUHgpO1xuICAgIH1cbiAgICBpZiAodGV4dERhdGEuZm9udFdlaWdodCAhPT0gdm9pZCAwKSB7XG4gICAgICB0ZXh0RWxlbS5zdHlsZShcImZvbnQtd2VpZ2h0XCIsIHRleHREYXRhLmZvbnRXZWlnaHQpO1xuICAgIH1cbiAgICBpZiAodGV4dERhdGEuZmlsbCAhPT0gdm9pZCAwKSB7XG4gICAgICB0ZXh0RWxlbS5hdHRyKFwiZmlsbFwiLCB0ZXh0RGF0YS5maWxsKTtcbiAgICB9XG4gICAgaWYgKHRleHREYXRhLmNsYXNzICE9PSB2b2lkIDApIHtcbiAgICAgIHRleHRFbGVtLmF0dHIoXCJjbGFzc1wiLCB0ZXh0RGF0YS5jbGFzcyk7XG4gICAgfVxuICAgIGlmICh0ZXh0RGF0YS5keSAhPT0gdm9pZCAwKSB7XG4gICAgICB0ZXh0RWxlbS5hdHRyKFwiZHlcIiwgdGV4dERhdGEuZHkpO1xuICAgIH0gZWxzZSBpZiAoZHkgIT09IDApIHtcbiAgICAgIHRleHRFbGVtLmF0dHIoXCJkeVwiLCBkeSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSBsaW5lIHx8IFpFUk9fV0lEVEhfU1BBQ0U7XG4gICAgaWYgKHRleHREYXRhLnRzcGFuKSB7XG4gICAgICBjb25zdCBzcGFuID0gdGV4dEVsZW0uYXBwZW5kKFwidHNwYW5cIik7XG4gICAgICBzcGFuLmF0dHIoXCJ4XCIsIHRleHREYXRhLngpO1xuICAgICAgaWYgKHRleHREYXRhLmZpbGwgIT09IHZvaWQgMCkge1xuICAgICAgICBzcGFuLmF0dHIoXCJmaWxsXCIsIHRleHREYXRhLmZpbGwpO1xuICAgICAgfVxuICAgICAgc3Bhbi50ZXh0KHRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0RWxlbS50ZXh0KHRleHQpO1xuICAgIH1cbiAgICBpZiAodGV4dERhdGEudmFsaWduICE9PSB2b2lkIDAgJiYgdGV4dERhdGEudGV4dE1hcmdpbiAhPT0gdm9pZCAwICYmIHRleHREYXRhLnRleHRNYXJnaW4gPiAwKSB7XG4gICAgICB0ZXh0SGVpZ2h0ICs9ICh0ZXh0RWxlbS5fZ3JvdXBzIHx8IHRleHRFbGVtKVswXVswXS5nZXRCQm94KCkuaGVpZ2h0O1xuICAgICAgcHJldlRleHRIZWlnaHQgPSB0ZXh0SGVpZ2h0O1xuICAgIH1cbiAgICB0ZXh0RWxlbXMucHVzaCh0ZXh0RWxlbSk7XG4gIH1cbiAgcmV0dXJuIHRleHRFbGVtcztcbn07XG5jb25zdCBkcmF3TGFiZWwgPSBmdW5jdGlvbihlbGVtLCB0eHRPYmplY3QpIHtcbiAgZnVuY3Rpb24gZ2VuUG9pbnRzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGN1dCkge1xuICAgIHJldHVybiB4ICsgXCIsXCIgKyB5ICsgXCIgXCIgKyAoeCArIHdpZHRoKSArIFwiLFwiICsgeSArIFwiIFwiICsgKHggKyB3aWR0aCkgKyBcIixcIiArICh5ICsgaGVpZ2h0IC0gY3V0KSArIFwiIFwiICsgKHggKyB3aWR0aCAtIGN1dCAqIDEuMikgKyBcIixcIiArICh5ICsgaGVpZ2h0KSArIFwiIFwiICsgeCArIFwiLFwiICsgKHkgKyBoZWlnaHQpO1xuICB9XG4gIGNvbnN0IHBvbHlnb24gPSBlbGVtLmFwcGVuZChcInBvbHlnb25cIik7XG4gIHBvbHlnb24uYXR0cihcInBvaW50c1wiLCBnZW5Qb2ludHModHh0T2JqZWN0LngsIHR4dE9iamVjdC55LCB0eHRPYmplY3Qud2lkdGgsIHR4dE9iamVjdC5oZWlnaHQsIDcpKTtcbiAgcG9seWdvbi5hdHRyKFwiY2xhc3NcIiwgXCJsYWJlbEJveFwiKTtcbiAgdHh0T2JqZWN0LnkgPSB0eHRPYmplY3QueSArIHR4dE9iamVjdC5oZWlnaHQgLyAyO1xuICBkcmF3VGV4dChlbGVtLCB0eHRPYmplY3QpO1xuICByZXR1cm4gcG9seWdvbjtcbn07XG5sZXQgYWN0b3JDbnQgPSAtMTtcbmNvbnN0IGZpeExpZmVMaW5lSGVpZ2h0cyA9IChkaWFncmFtMiwgYm91bmRzMikgPT4ge1xuICBpZiAoIWRpYWdyYW0yLnNlbGVjdEFsbCkge1xuICAgIHJldHVybjtcbiAgfVxuICBkaWFncmFtMi5zZWxlY3RBbGwoXCIuYWN0b3ItbGluZVwiKS5hdHRyKFwiY2xhc3NcIiwgXCIyMDBcIikuYXR0cihcInkyXCIsIGJvdW5kczIgLSA1NSk7XG59O1xuY29uc3QgZHJhd0FjdG9yVHlwZVBhcnRpY2lwYW50ID0gZnVuY3Rpb24oZWxlbSwgYWN0b3IsIGNvbmYyLCBpc0Zvb3Rlcikge1xuICBjb25zdCBjZW50ZXIgPSBhY3Rvci54ICsgYWN0b3Iud2lkdGggLyAyO1xuICBjb25zdCBjZW50ZXJZID0gYWN0b3IueSArIDU7XG4gIGNvbnN0IGJveHBsdXNsaW5lR3JvdXAgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIHZhciBnID0gYm94cGx1c2xpbmVHcm91cDtcbiAgaWYgKCFpc0Zvb3Rlcikge1xuICAgIGFjdG9yQ250Kys7XG4gICAgZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJpZFwiLCBcImFjdG9yXCIgKyBhY3RvckNudCkuYXR0cihcIngxXCIsIGNlbnRlcikuYXR0cihcInkxXCIsIGNlbnRlclkpLmF0dHIoXCJ4MlwiLCBjZW50ZXIpLmF0dHIoXCJ5MlwiLCAyZTMpLmF0dHIoXCJjbGFzc1wiLCBcImFjdG9yLWxpbmVcIikuYXR0cihcInN0cm9rZS13aWR0aFwiLCBcIjAuNXB4XCIpLmF0dHIoXCJzdHJva2VcIiwgXCIjOTk5XCIpO1xuICAgIGcgPSBib3hwbHVzbGluZUdyb3VwLmFwcGVuZChcImdcIik7XG4gICAgYWN0b3IuYWN0b3JDbnQgPSBhY3RvckNudDtcbiAgICBpZiAoYWN0b3IubGlua3MgIT0gbnVsbCkge1xuICAgICAgZy5hdHRyKFwiaWRcIiwgXCJyb290LVwiICsgYWN0b3JDbnQpO1xuICAgICAgYWRkUG9wdXBJbnRlcmFjdGlvbihcIiNyb290LVwiICsgYWN0b3JDbnQsIGFjdG9yQ250KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcmVjdCA9IGdldE5vdGVSZWN0JDEoKTtcbiAgdmFyIGNzc2NsYXNzID0gXCJhY3RvclwiO1xuICBpZiAoYWN0b3IucHJvcGVydGllcyAhPSBudWxsICYmIGFjdG9yLnByb3BlcnRpZXNbXCJjbGFzc1wiXSkge1xuICAgIGNzc2NsYXNzID0gYWN0b3IucHJvcGVydGllc1tcImNsYXNzXCJdO1xuICB9IGVsc2Uge1xuICAgIHJlY3QuZmlsbCA9IFwiI2VhZWFlYVwiO1xuICB9XG4gIHJlY3QueCA9IGFjdG9yLng7XG4gIHJlY3QueSA9IGFjdG9yLnk7XG4gIHJlY3Qud2lkdGggPSBhY3Rvci53aWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBhY3Rvci5oZWlnaHQ7XG4gIHJlY3QuY2xhc3MgPSBjc3NjbGFzcztcbiAgcmVjdC5yeCA9IDM7XG4gIHJlY3QucnkgPSAzO1xuICBjb25zdCByZWN0RWxlbSA9IGRyYXdSZWN0KGcsIHJlY3QpO1xuICBhY3Rvci5yZWN0RGF0YSA9IHJlY3Q7XG4gIGlmIChhY3Rvci5wcm9wZXJ0aWVzICE9IG51bGwgJiYgYWN0b3IucHJvcGVydGllc1tcImljb25cIl0pIHtcbiAgICBjb25zdCBpY29uU3JjID0gYWN0b3IucHJvcGVydGllc1tcImljb25cIl0udHJpbSgpO1xuICAgIGlmIChpY29uU3JjLmNoYXJBdCgwKSA9PT0gXCJAXCIpIHtcbiAgICAgIGRyYXdFbWJlZGRlZEltYWdlKGcsIHJlY3QueCArIHJlY3Qud2lkdGggLSAyMCwgcmVjdC55ICsgMTAsIGljb25TcmMuc3Vic3RyKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZHJhd0ltYWdlKGcsIHJlY3QueCArIHJlY3Qud2lkdGggLSAyMCwgcmVjdC55ICsgMTAsIGljb25TcmMpO1xuICAgIH1cbiAgfVxuICBfZHJhd1RleHRDYW5kaWRhdGVGdW5jKGNvbmYyKShcbiAgICBhY3Rvci5kZXNjcmlwdGlvbixcbiAgICBnLFxuICAgIHJlY3QueCxcbiAgICByZWN0LnksXG4gICAgcmVjdC53aWR0aCxcbiAgICByZWN0LmhlaWdodCxcbiAgICB7IGNsYXNzOiBcImFjdG9yXCIgfSxcbiAgICBjb25mMlxuICApO1xuICBsZXQgaGVpZ2h0ID0gYWN0b3IuaGVpZ2h0O1xuICBpZiAocmVjdEVsZW0ubm9kZSkge1xuICAgIGNvbnN0IGJvdW5kczIgPSByZWN0RWxlbS5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIGFjdG9yLmhlaWdodCA9IGJvdW5kczIuaGVpZ2h0O1xuICAgIGhlaWdodCA9IGJvdW5kczIuaGVpZ2h0O1xuICB9XG4gIHJldHVybiBoZWlnaHQ7XG59O1xuY29uc3QgZHJhd0FjdG9yVHlwZUFjdG9yID0gZnVuY3Rpb24oZWxlbSwgYWN0b3IsIGNvbmYyLCBpc0Zvb3Rlcikge1xuICBjb25zdCBjZW50ZXIgPSBhY3Rvci54ICsgYWN0b3Iud2lkdGggLyAyO1xuICBjb25zdCBjZW50ZXJZID0gYWN0b3IueSArIDgwO1xuICBpZiAoIWlzRm9vdGVyKSB7XG4gICAgYWN0b3JDbnQrKztcbiAgICBlbGVtLmFwcGVuZChcImxpbmVcIikuYXR0cihcImlkXCIsIFwiYWN0b3JcIiArIGFjdG9yQ250KS5hdHRyKFwieDFcIiwgY2VudGVyKS5hdHRyKFwieTFcIiwgY2VudGVyWSkuYXR0cihcIngyXCIsIGNlbnRlcikuYXR0cihcInkyXCIsIDJlMykuYXR0cihcImNsYXNzXCIsIFwiYWN0b3ItbGluZVwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMC41cHhcIikuYXR0cihcInN0cm9rZVwiLCBcIiM5OTlcIik7XG4gIH1cbiAgY29uc3QgYWN0RWxlbSA9IGVsZW0uYXBwZW5kKFwiZ1wiKTtcbiAgYWN0RWxlbS5hdHRyKFwiY2xhc3NcIiwgXCJhY3Rvci1tYW5cIik7XG4gIGNvbnN0IHJlY3QgPSBnZXROb3RlUmVjdCQxKCk7XG4gIHJlY3QueCA9IGFjdG9yLng7XG4gIHJlY3QueSA9IGFjdG9yLnk7XG4gIHJlY3QuZmlsbCA9IFwiI2VhZWFlYVwiO1xuICByZWN0LndpZHRoID0gYWN0b3Iud2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gYWN0b3IuaGVpZ2h0O1xuICByZWN0LmNsYXNzID0gXCJhY3RvclwiO1xuICByZWN0LnJ4ID0gMztcbiAgcmVjdC5yeSA9IDM7XG4gIGFjdEVsZW0uYXBwZW5kKFwibGluZVwiKS5hdHRyKFwiaWRcIiwgXCJhY3Rvci1tYW4tdG9yc29cIiArIGFjdG9yQ250KS5hdHRyKFwieDFcIiwgY2VudGVyKS5hdHRyKFwieTFcIiwgYWN0b3IueSArIDI1KS5hdHRyKFwieDJcIiwgY2VudGVyKS5hdHRyKFwieTJcIiwgYWN0b3IueSArIDQ1KTtcbiAgYWN0RWxlbS5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJpZFwiLCBcImFjdG9yLW1hbi1hcm1zXCIgKyBhY3RvckNudCkuYXR0cihcIngxXCIsIGNlbnRlciAtIDE4KS5hdHRyKFwieTFcIiwgYWN0b3IueSArIDMzKS5hdHRyKFwieDJcIiwgY2VudGVyICsgMTgpLmF0dHIoXCJ5MlwiLCBhY3Rvci55ICsgMzMpO1xuICBhY3RFbGVtLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIGNlbnRlciAtIDE4KS5hdHRyKFwieTFcIiwgYWN0b3IueSArIDYwKS5hdHRyKFwieDJcIiwgY2VudGVyKS5hdHRyKFwieTJcIiwgYWN0b3IueSArIDQ1KTtcbiAgYWN0RWxlbS5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCBjZW50ZXIpLmF0dHIoXCJ5MVwiLCBhY3Rvci55ICsgNDUpLmF0dHIoXCJ4MlwiLCBjZW50ZXIgKyAxNikuYXR0cihcInkyXCIsIGFjdG9yLnkgKyA2MCk7XG4gIGNvbnN0IGNpcmNsZSA9IGFjdEVsZW0uYXBwZW5kKFwiY2lyY2xlXCIpO1xuICBjaXJjbGUuYXR0cihcImN4XCIsIGFjdG9yLnggKyBhY3Rvci53aWR0aCAvIDIpO1xuICBjaXJjbGUuYXR0cihcImN5XCIsIGFjdG9yLnkgKyAxMCk7XG4gIGNpcmNsZS5hdHRyKFwiclwiLCAxNSk7XG4gIGNpcmNsZS5hdHRyKFwid2lkdGhcIiwgYWN0b3Iud2lkdGgpO1xuICBjaXJjbGUuYXR0cihcImhlaWdodFwiLCBhY3Rvci5oZWlnaHQpO1xuICBjb25zdCBib3VuZHMyID0gYWN0RWxlbS5ub2RlKCkuZ2V0QkJveCgpO1xuICBhY3Rvci5oZWlnaHQgPSBib3VuZHMyLmhlaWdodDtcbiAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgYWN0b3IuZGVzY3JpcHRpb24sXG4gICAgYWN0RWxlbSxcbiAgICByZWN0LngsXG4gICAgcmVjdC55ICsgMzUsXG4gICAgcmVjdC53aWR0aCxcbiAgICByZWN0LmhlaWdodCxcbiAgICB7IGNsYXNzOiBcImFjdG9yXCIgfSxcbiAgICBjb25mMlxuICApO1xuICByZXR1cm4gYWN0b3IuaGVpZ2h0O1xufTtcbmNvbnN0IGRyYXdBY3RvciA9IGZ1bmN0aW9uKGVsZW0sIGFjdG9yLCBjb25mMiwgaXNGb290ZXIpIHtcbiAgc3dpdGNoIChhY3Rvci50eXBlKSB7XG4gICAgY2FzZSBcImFjdG9yXCI6XG4gICAgICByZXR1cm4gZHJhd0FjdG9yVHlwZUFjdG9yKGVsZW0sIGFjdG9yLCBjb25mMiwgaXNGb290ZXIpO1xuICAgIGNhc2UgXCJwYXJ0aWNpcGFudFwiOlxuICAgICAgcmV0dXJuIGRyYXdBY3RvclR5cGVQYXJ0aWNpcGFudChlbGVtLCBhY3RvciwgY29uZjIsIGlzRm9vdGVyKTtcbiAgfVxufTtcbmNvbnN0IGRyYXdCb3ggPSBmdW5jdGlvbihlbGVtLCBib3gsIGNvbmYyKSB7XG4gIGNvbnN0IGJveHBsdXN0ZXh0R3JvdXAgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IGcgPSBib3hwbHVzdGV4dEdyb3VwO1xuICBkcmF3QmFja2dyb3VuZFJlY3QoZywgYm94KTtcbiAgaWYgKGJveC5uYW1lKSB7XG4gICAgX2RyYXdUZXh0Q2FuZGlkYXRlRnVuYyhjb25mMikoXG4gICAgICBib3gubmFtZSxcbiAgICAgIGcsXG4gICAgICBib3gueCxcbiAgICAgIGJveC55ICsgKGJveC50ZXh0TWF4SGVpZ2h0IHx8IDApIC8gMixcbiAgICAgIGJveC53aWR0aCxcbiAgICAgIDAsXG4gICAgICB7IGNsYXNzOiBcInRleHRcIiB9LFxuICAgICAgY29uZjJcbiAgICApO1xuICB9XG4gIGcubG93ZXIoKTtcbn07XG5jb25zdCBhbmNob3JFbGVtZW50ID0gZnVuY3Rpb24oZWxlbSkge1xuICByZXR1cm4gZWxlbS5hcHBlbmQoXCJnXCIpO1xufTtcbmNvbnN0IGRyYXdBY3RpdmF0aW9uID0gZnVuY3Rpb24oZWxlbSwgYm91bmRzMiwgdmVydGljYWxQb3MsIGNvbmYyLCBhY3RvckFjdGl2YXRpb25zMikge1xuICBjb25zdCByZWN0ID0gZ2V0Tm90ZVJlY3QkMSgpO1xuICBjb25zdCBnID0gYm91bmRzMi5hbmNob3JlZDtcbiAgcmVjdC54ID0gYm91bmRzMi5zdGFydHg7XG4gIHJlY3QueSA9IGJvdW5kczIuc3RhcnR5O1xuICByZWN0LmNsYXNzID0gXCJhY3RpdmF0aW9uXCIgKyBhY3RvckFjdGl2YXRpb25zMiAlIDM7XG4gIHJlY3Qud2lkdGggPSBib3VuZHMyLnN0b3B4IC0gYm91bmRzMi5zdGFydHg7XG4gIHJlY3QuaGVpZ2h0ID0gdmVydGljYWxQb3MgLSBib3VuZHMyLnN0YXJ0eTtcbiAgZHJhd1JlY3QoZywgcmVjdCk7XG59O1xuY29uc3QgZHJhd0xvb3AgPSBmdW5jdGlvbihlbGVtLCBsb29wTW9kZWwsIGxhYmVsVGV4dCwgY29uZjIpIHtcbiAgY29uc3Qge1xuICAgIGJveE1hcmdpbixcbiAgICBib3hUZXh0TWFyZ2luLFxuICAgIGxhYmVsQm94SGVpZ2h0LFxuICAgIGxhYmVsQm94V2lkdGgsXG4gICAgbWVzc2FnZUZvbnRGYW1pbHk6IGZvbnRGYW1pbHksXG4gICAgbWVzc2FnZUZvbnRTaXplOiBmb250U2l6ZSxcbiAgICBtZXNzYWdlRm9udFdlaWdodDogZm9udFdlaWdodFxuICB9ID0gY29uZjI7XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IGRyYXdMb29wTGluZSA9IGZ1bmN0aW9uKHN0YXJ0eCwgc3RhcnR5LCBzdG9weCwgc3RvcHkpIHtcbiAgICByZXR1cm4gZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCBzdGFydHgpLmF0dHIoXCJ5MVwiLCBzdGFydHkpLmF0dHIoXCJ4MlwiLCBzdG9weCkuYXR0cihcInkyXCIsIHN0b3B5KS5hdHRyKFwiY2xhc3NcIiwgXCJsb29wTGluZVwiKTtcbiAgfTtcbiAgZHJhd0xvb3BMaW5lKGxvb3BNb2RlbC5zdGFydHgsIGxvb3BNb2RlbC5zdGFydHksIGxvb3BNb2RlbC5zdG9weCwgbG9vcE1vZGVsLnN0YXJ0eSk7XG4gIGRyYXdMb29wTGluZShsb29wTW9kZWwuc3RvcHgsIGxvb3BNb2RlbC5zdGFydHksIGxvb3BNb2RlbC5zdG9weCwgbG9vcE1vZGVsLnN0b3B5KTtcbiAgZHJhd0xvb3BMaW5lKGxvb3BNb2RlbC5zdGFydHgsIGxvb3BNb2RlbC5zdG9weSwgbG9vcE1vZGVsLnN0b3B4LCBsb29wTW9kZWwuc3RvcHkpO1xuICBkcmF3TG9vcExpbmUobG9vcE1vZGVsLnN0YXJ0eCwgbG9vcE1vZGVsLnN0YXJ0eSwgbG9vcE1vZGVsLnN0YXJ0eCwgbG9vcE1vZGVsLnN0b3B5KTtcbiAgaWYgKGxvb3BNb2RlbC5zZWN0aW9ucyAhPT0gdm9pZCAwKSB7XG4gICAgbG9vcE1vZGVsLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgZHJhd0xvb3BMaW5lKGxvb3BNb2RlbC5zdGFydHgsIGl0ZW0ueSwgbG9vcE1vZGVsLnN0b3B4LCBpdGVtLnkpLnN0eWxlKFxuICAgICAgICBcInN0cm9rZS1kYXNoYXJyYXlcIixcbiAgICAgICAgXCIzLCAzXCJcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgbGV0IHR4dCA9IGdldFRleHRPYmokMSgpO1xuICB0eHQudGV4dCA9IGxhYmVsVGV4dDtcbiAgdHh0LnggPSBsb29wTW9kZWwuc3RhcnR4O1xuICB0eHQueSA9IGxvb3BNb2RlbC5zdGFydHk7XG4gIHR4dC5mb250RmFtaWx5ID0gZm9udEZhbWlseTtcbiAgdHh0LmZvbnRTaXplID0gZm9udFNpemU7XG4gIHR4dC5mb250V2VpZ2h0ID0gZm9udFdlaWdodDtcbiAgdHh0LmFuY2hvciA9IFwibWlkZGxlXCI7XG4gIHR4dC52YWxpZ24gPSBcIm1pZGRsZVwiO1xuICB0eHQudHNwYW4gPSBmYWxzZTtcbiAgdHh0LndpZHRoID0gbGFiZWxCb3hXaWR0aCB8fCA1MDtcbiAgdHh0LmhlaWdodCA9IGxhYmVsQm94SGVpZ2h0IHx8IDIwO1xuICB0eHQudGV4dE1hcmdpbiA9IGJveFRleHRNYXJnaW47XG4gIHR4dC5jbGFzcyA9IFwibGFiZWxUZXh0XCI7XG4gIGRyYXdMYWJlbChnLCB0eHQpO1xuICB0eHQgPSBnZXRUZXh0T2JqKCk7XG4gIHR4dC50ZXh0ID0gbG9vcE1vZGVsLnRpdGxlO1xuICB0eHQueCA9IGxvb3BNb2RlbC5zdGFydHggKyBsYWJlbEJveFdpZHRoIC8gMiArIChsb29wTW9kZWwuc3RvcHggLSBsb29wTW9kZWwuc3RhcnR4KSAvIDI7XG4gIHR4dC55ID0gbG9vcE1vZGVsLnN0YXJ0eSArIGJveE1hcmdpbiArIGJveFRleHRNYXJnaW47XG4gIHR4dC5hbmNob3IgPSBcIm1pZGRsZVwiO1xuICB0eHQudmFsaWduID0gXCJtaWRkbGVcIjtcbiAgdHh0LnRleHRNYXJnaW4gPSBib3hUZXh0TWFyZ2luO1xuICB0eHQuY2xhc3MgPSBcImxvb3BUZXh0XCI7XG4gIHR4dC5mb250RmFtaWx5ID0gZm9udEZhbWlseTtcbiAgdHh0LmZvbnRTaXplID0gZm9udFNpemU7XG4gIHR4dC5mb250V2VpZ2h0ID0gZm9udFdlaWdodDtcbiAgdHh0LndyYXAgPSB0cnVlO1xuICBsZXQgdGV4dEVsZW0gPSBkcmF3VGV4dChnLCB0eHQpO1xuICBpZiAobG9vcE1vZGVsLnNlY3Rpb25UaXRsZXMgIT09IHZvaWQgMCkge1xuICAgIGxvb3BNb2RlbC5zZWN0aW9uVGl0bGVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaWR4KSB7XG4gICAgICBpZiAoaXRlbS5tZXNzYWdlKSB7XG4gICAgICAgIHR4dC50ZXh0ID0gaXRlbS5tZXNzYWdlO1xuICAgICAgICB0eHQueCA9IGxvb3BNb2RlbC5zdGFydHggKyAobG9vcE1vZGVsLnN0b3B4IC0gbG9vcE1vZGVsLnN0YXJ0eCkgLyAyO1xuICAgICAgICB0eHQueSA9IGxvb3BNb2RlbC5zZWN0aW9uc1tpZHhdLnkgKyBib3hNYXJnaW4gKyBib3hUZXh0TWFyZ2luO1xuICAgICAgICB0eHQuY2xhc3MgPSBcImxvb3BUZXh0XCI7XG4gICAgICAgIHR4dC5hbmNob3IgPSBcIm1pZGRsZVwiO1xuICAgICAgICB0eHQudmFsaWduID0gXCJtaWRkbGVcIjtcbiAgICAgICAgdHh0LnRzcGFuID0gZmFsc2U7XG4gICAgICAgIHR4dC5mb250RmFtaWx5ID0gZm9udEZhbWlseTtcbiAgICAgICAgdHh0LmZvbnRTaXplID0gZm9udFNpemU7XG4gICAgICAgIHR4dC5mb250V2VpZ2h0ID0gZm9udFdlaWdodDtcbiAgICAgICAgdHh0LndyYXAgPSBsb29wTW9kZWwud3JhcDtcbiAgICAgICAgdGV4dEVsZW0gPSBkcmF3VGV4dChnLCB0eHQpO1xuICAgICAgICBsZXQgc2VjdGlvbkhlaWdodCA9IE1hdGgucm91bmQoXG4gICAgICAgICAgdGV4dEVsZW0ubWFwKCh0ZSkgPT4gKHRlLl9ncm91cHMgfHwgdGUpWzBdWzBdLmdldEJCb3goKS5oZWlnaHQpLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiBhY2MgKyBjdXJyKVxuICAgICAgICApO1xuICAgICAgICBsb29wTW9kZWwuc2VjdGlvbnNbaWR4XS5oZWlnaHQgKz0gc2VjdGlvbkhlaWdodCAtIChib3hNYXJnaW4gKyBib3hUZXh0TWFyZ2luKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBsb29wTW9kZWwuaGVpZ2h0ID0gTWF0aC5yb3VuZChsb29wTW9kZWwuc3RvcHkgLSBsb29wTW9kZWwuc3RhcnR5KTtcbiAgcmV0dXJuIGc7XG59O1xuY29uc3QgZHJhd0JhY2tncm91bmRSZWN0ID0gZnVuY3Rpb24oZWxlbSwgYm91bmRzMikge1xuICBkcmF3QmFja2dyb3VuZFJlY3QkMShlbGVtLCBib3VuZHMyKTtcbn07XG5jb25zdCBpbnNlcnREYXRhYmFzZUljb24gPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJzeW1ib2xcIikuYXR0cihcImlkXCIsIFwiZGF0YWJhc2VcIikuYXR0cihcImZpbGwtcnVsZVwiLCBcImV2ZW5vZGRcIikuYXR0cihcImNsaXAtcnVsZVwiLCBcImV2ZW5vZGRcIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwic2NhbGUoLjUpXCIpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgXCJNMTIuMjU4LjAwMWwuMjU2LjAwNC4yNTUuMDA1LjI1My4wMDguMjUxLjAxLjI0OS4wMTIuMjQ3LjAxNS4yNDYuMDE2LjI0Mi4wMTkuMjQxLjAyLjIzOS4wMjMuMjM2LjAyNC4yMzMuMDI3LjIzMS4wMjguMjI5LjAzMS4yMjUuMDMyLjIyMy4wMzQuMjIuMDM2LjIxNy4wMzguMjE0LjA0LjIxMS4wNDEuMjA4LjA0My4yMDUuMDQ1LjIwMS4wNDYuMTk4LjA0OC4xOTQuMDUuMTkxLjA1MS4xODcuMDUzLjE4My4wNTQuMTguMDU2LjE3NS4wNTcuMTcyLjA1OS4xNjguMDYuMTYzLjA2MS4xNi4wNjMuMTU1LjA2NC4xNS4wNjYuMDc0LjAzMy4wNzMuMDMzLjA3MS4wMzQuMDcuMDM0LjA2OS4wMzUuMDY4LjAzNS4wNjcuMDM1LjA2Ni4wMzUuMDY0LjAzNi4wNjQuMDM2LjA2Mi4wMzYuMDYuMDM2LjA2LjAzNy4wNTguMDM3LjA1OC4wMzcuMDU1LjAzOC4wNTUuMDM4LjA1My4wMzguMDUyLjAzOC4wNTEuMDM5LjA1LjAzOS4wNDguMDM5LjA0Ny4wMzkuMDQ1LjA0LjA0NC4wNC4wNDMuMDQuMDQxLjA0LjA0LjA0MS4wMzkuMDQxLjAzNy4wNDEuMDM2LjA0MS4wMzQuMDQxLjAzMy4wNDIuMDMyLjA0Mi4wMy4wNDIuMDI5LjA0Mi4wMjcuMDQyLjAyNi4wNDMuMDI0LjA0My4wMjMuMDQzLjAyMS4wNDMuMDIuMDQzLjAxOC4wNDQuMDE3LjA0My4wMTUuMDQ0LjAxMy4wNDQuMDEyLjA0NC4wMTEuMDQ1LjAwOS4wNDQuMDA3LjA0NS4wMDYuMDQ1LjAwNC4wNDUuMDAyLjA0NS4wMDEuMDQ1djE3bC0uMDAxLjA0NS0uMDAyLjA0NS0uMDA0LjA0NS0uMDA2LjA0NS0uMDA3LjA0NS0uMDA5LjA0NC0uMDExLjA0NS0uMDEyLjA0NC0uMDEzLjA0NC0uMDE1LjA0NC0uMDE3LjA0My0uMDE4LjA0NC0uMDIuMDQzLS4wMjEuMDQzLS4wMjMuMDQzLS4wMjQuMDQzLS4wMjYuMDQzLS4wMjcuMDQyLS4wMjkuMDQyLS4wMy4wNDItLjAzMi4wNDItLjAzMy4wNDItLjAzNC4wNDEtLjAzNi4wNDEtLjAzNy4wNDEtLjAzOS4wNDEtLjA0LjA0MS0uMDQxLjA0LS4wNDMuMDQtLjA0NC4wNC0uMDQ1LjA0LS4wNDcuMDM5LS4wNDguMDM5LS4wNS4wMzktLjA1MS4wMzktLjA1Mi4wMzgtLjA1My4wMzgtLjA1NS4wMzgtLjA1NS4wMzgtLjA1OC4wMzctLjA1OC4wMzctLjA2LjAzNy0uMDYuMDM2LS4wNjIuMDM2LS4wNjQuMDM2LS4wNjQuMDM2LS4wNjYuMDM1LS4wNjcuMDM1LS4wNjguMDM1LS4wNjkuMDM1LS4wNy4wMzQtLjA3MS4wMzQtLjA3My4wMzMtLjA3NC4wMzMtLjE1LjA2Ni0uMTU1LjA2NC0uMTYuMDYzLS4xNjMuMDYxLS4xNjguMDYtLjE3Mi4wNTktLjE3NS4wNTctLjE4LjA1Ni0uMTgzLjA1NC0uMTg3LjA1My0uMTkxLjA1MS0uMTk0LjA1LS4xOTguMDQ4LS4yMDEuMDQ2LS4yMDUuMDQ1LS4yMDguMDQzLS4yMTEuMDQxLS4yMTQuMDQtLjIxNy4wMzgtLjIyLjAzNi0uMjIzLjAzNC0uMjI1LjAzMi0uMjI5LjAzMS0uMjMxLjAyOC0uMjMzLjAyNy0uMjM2LjAyNC0uMjM5LjAyMy0uMjQxLjAyLS4yNDIuMDE5LS4yNDYuMDE2LS4yNDcuMDE1LS4yNDkuMDEyLS4yNTEuMDEtLjI1My4wMDgtLjI1NS4wMDUtLjI1Ni4wMDQtLjI1OC4wMDEtLjI1OC0uMDAxLS4yNTYtLjAwNC0uMjU1LS4wMDUtLjI1My0uMDA4LS4yNTEtLjAxLS4yNDktLjAxMi0uMjQ3LS4wMTUtLjI0NS0uMDE2LS4yNDMtLjAxOS0uMjQxLS4wMi0uMjM4LS4wMjMtLjIzNi0uMDI0LS4yMzQtLjAyNy0uMjMxLS4wMjgtLjIyOC0uMDMxLS4yMjYtLjAzMi0uMjIzLS4wMzQtLjIyLS4wMzYtLjIxNy0uMDM4LS4yMTQtLjA0LS4yMTEtLjA0MS0uMjA4LS4wNDMtLjIwNC0uMDQ1LS4yMDEtLjA0Ni0uMTk4LS4wNDgtLjE5NS0uMDUtLjE5LS4wNTEtLjE4Ny0uMDUzLS4xODQtLjA1NC0uMTc5LS4wNTYtLjE3Ni0uMDU3LS4xNzItLjA1OS0uMTY3LS4wNi0uMTY0LS4wNjEtLjE1OS0uMDYzLS4xNTUtLjA2NC0uMTUxLS4wNjYtLjA3NC0uMDMzLS4wNzItLjAzMy0uMDcyLS4wMzQtLjA3LS4wMzQtLjA2OS0uMDM1LS4wNjgtLjAzNS0uMDY3LS4wMzUtLjA2Ni0uMDM1LS4wNjQtLjAzNi0uMDYzLS4wMzYtLjA2Mi0uMDM2LS4wNjEtLjAzNi0uMDYtLjAzNy0uMDU4LS4wMzctLjA1Ny0uMDM3LS4wNTYtLjAzOC0uMDU1LS4wMzgtLjA1My0uMDM4LS4wNTItLjAzOC0uMDUxLS4wMzktLjA0OS0uMDM5LS4wNDktLjAzOS0uMDQ2LS4wMzktLjA0Ni0uMDQtLjA0NC0uMDQtLjA0My0uMDQtLjA0MS0uMDQtLjA0LS4wNDEtLjAzOS0uMDQxLS4wMzctLjA0MS0uMDM2LS4wNDEtLjAzNC0uMDQxLS4wMzMtLjA0Mi0uMDMyLS4wNDItLjAzLS4wNDItLjAyOS0uMDQyLS4wMjctLjA0Mi0uMDI2LS4wNDMtLjAyNC0uMDQzLS4wMjMtLjA0My0uMDIxLS4wNDMtLjAyLS4wNDMtLjAxOC0uMDQ0LS4wMTctLjA0My0uMDE1LS4wNDQtLjAxMy0uMDQ0LS4wMTItLjA0NC0uMDExLS4wNDUtLjAwOS0uMDQ0LS4wMDctLjA0NS0uMDA2LS4wNDUtLjAwNC0uMDQ1LS4wMDItLjA0NS0uMDAxLS4wNDV2LTE3bC4wMDEtLjA0NS4wMDItLjA0NS4wMDQtLjA0NS4wMDYtLjA0NS4wMDctLjA0NS4wMDktLjA0NC4wMTEtLjA0NS4wMTItLjA0NC4wMTMtLjA0NC4wMTUtLjA0NC4wMTctLjA0My4wMTgtLjA0NC4wMi0uMDQzLjAyMS0uMDQzLjAyMy0uMDQzLjAyNC0uMDQzLjAyNi0uMDQzLjAyNy0uMDQyLjAyOS0uMDQyLjAzLS4wNDIuMDMyLS4wNDIuMDMzLS4wNDIuMDM0LS4wNDEuMDM2LS4wNDEuMDM3LS4wNDEuMDM5LS4wNDEuMDQtLjA0MS4wNDEtLjA0LjA0My0uMDQuMDQ0LS4wNC4wNDYtLjA0LjA0Ni0uMDM5LjA0OS0uMDM5LjA0OS0uMDM5LjA1MS0uMDM5LjA1Mi0uMDM4LjA1My0uMDM4LjA1NS0uMDM4LjA1Ni0uMDM4LjA1Ny0uMDM3LjA1OC0uMDM3LjA2LS4wMzcuMDYxLS4wMzYuMDYyLS4wMzYuMDYzLS4wMzYuMDY0LS4wMzYuMDY2LS4wMzUuMDY3LS4wMzUuMDY4LS4wMzUuMDY5LS4wMzUuMDctLjAzNC4wNzItLjAzNC4wNzItLjAzMy4wNzQtLjAzMy4xNTEtLjA2Ni4xNTUtLjA2NC4xNTktLjA2My4xNjQtLjA2MS4xNjctLjA2LjE3Mi0uMDU5LjE3Ni0uMDU3LjE3OS0uMDU2LjE4NC0uMDU0LjE4Ny0uMDUzLjE5LS4wNTEuMTk1LS4wNS4xOTgtLjA0OC4yMDEtLjA0Ni4yMDQtLjA0NS4yMDgtLjA0My4yMTEtLjA0MS4yMTQtLjA0LjIxNy0uMDM4LjIyLS4wMzYuMjIzLS4wMzQuMjI2LS4wMzIuMjI4LS4wMzEuMjMxLS4wMjguMjM0LS4wMjcuMjM2LS4wMjQuMjM4LS4wMjMuMjQxLS4wMi4yNDMtLjAxOS4yNDUtLjAxNi4yNDctLjAxNS4yNDktLjAxMi4yNTEtLjAxLjI1My0uMDA4LjI1NS0uMDA1LjI1Ni0uMDA0LjI1OC0uMDAxLjI1OC4wMDF6bS05LjI1OCAyMC40OTl2LjAxbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMi4wMDUuMDIxLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIzLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDIzLjAxNi4wMjQuMDE3LjAyMy4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI1LjAyMy4wMjQuMDI0LjAyNS4wNTIuMDQ5LjA1Ni4wNS4wNjEuMDUxLjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTEuMDc5LjA1Mi4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTEuMTA1LjA1Mi4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OC4xNDQuMDQ5LjE0Ny4wNDcuMTUyLjA0Ny4xNTUuMDQ3LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQxLjE3OC4wNDEuMTgzLjAzOS4xODcuMDM5LjE5LjAzNy4xOTQuMDM1LjE5Ny4wMzUuMjAyLjAzMy4yMDQuMDMxLjIwOS4wMy4yMTIuMDI5LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjEuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNS4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDUuMjU2LjAwNC4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMS4yMjQtLjAyNC4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzEuMjAyLS4wMzQuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wNC4xNzktLjA0LjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDYuMTU1LS4wNDYuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNS4xMzEtLjA1LjEyNi0uMDUuMTIzLS4wNTEuMTE4LS4wNTIuMTE0LS4wNTEuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1My4wODMtLjA1MS4wNzktLjA1Mi4wNzQtLjA1Mi4wNy0uMDUxLjA2NS0uMDUxLjA2LS4wNTEuMDU2LS4wNS4wNTEtLjA1LjAyMy0uMDI0LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMy4wMS0uMDIyLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjEyN2wtLjA3Ny4wNTUtLjA4LjA1My0uMDgzLjA1NC0uMDg1LjA1My0uMDg3LjA1Mi0uMDkuMDUyLS4wOTMuMDUxLS4wOTUuMDUtLjA5Ny4wNS0uMS4wNDktLjEwMi4wNDktLjEwNS4wNDgtLjEwNi4wNDctLjEwOS4wNDctLjExMS4wNDYtLjExNC4wNDUtLjExNS4wNDUtLjExOC4wNDQtLjEyLjA0My0uMTIyLjA0Mi0uMTI0LjA0Mi0uMTI2LjA0MS0uMTI4LjA0LS4xMy4wNC0uMTMyLjAzOC0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNy0uMTM5LjAzNS0uMTQyLjAzNS0uMTQzLjAzNC0uMTQ0LjAzMy0uMTQ3LjAzMi0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOS0uMTU0LjAyNy0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDEtLjE3OS4wMDgtLjE3OS4wMDgtLjE4MS4wMDYtLjE4Mi4wMDUtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDJoLS4zN2wtLjE4NC0uMDAyLS4xODQtLjAwMy0uMTgyLS4wMDQtLjE4Mi0uMDA1LS4xODEtLjAwNi0uMTc5LS4wMDgtLjE3OS0uMDA4LS4xNzgtLjAxLS4xNzYtLjAxMS0uMTc2LS4wMTItLjE3NS0uMDEzLS4xNzMtLjAxNC0uMTcyLS4wMTUtLjE3MS0uMDE2LS4xNy0uMDE3LS4xNjktLjAxOC0uMTY3LS4wMTktLjE2Ni0uMDItLjE2NS0uMDIxLS4xNjMtLjAyMi0uMTYyLS4wMjMtLjE2MS0uMDI0LS4xNTktLjAyNS0uMTU3LS4wMjYtLjE1Ni0uMDI3LS4xNTUtLjAyNy0uMTUzLS4wMjktLjE1MS0uMDMtLjE1LS4wMy0uMTQ4LS4wMzEtLjE0Ni0uMDMyLS4xNDUtLjAzMy0uMTQzLS4wMzQtLjE0MS0uMDM1LS4xNC0uMDM1LS4xMzctLjAzNy0uMTM2LS4wMzctLjEzNC0uMDM4LS4xMzItLjAzOC0uMTMtLjA0LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQyLS4xMi0uMDQ0LS4xMTctLjA0My0uMTE2LS4wNDUtLjExMy0uMDQ1LS4xMTItLjA0Ni0uMTA5LS4wNDctLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNS0uMDkzLS4wNTItLjA5LS4wNTEtLjA4Ny0uMDUyLS4wODUtLjA1My0uMDgzLS4wNTQtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTI3em0wLTUuNjU0di4wMTFsLjAwMS4wMjEuMDAzLjAyMS4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMi4wMDcuMDIyLjAwOS4wMjIuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjQuMDE2LjAyMy4wMTcuMDI0LjAxOC4wMjQuMDE5LjAyNC4wMjEuMDI0LjAyMi4wMjQuMDIzLjAyNS4wMjQuMDI0LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1Mi4xMS4wNTEuMTE0LjA1MS4xMTkuMDUyLjEyMy4wNS4xMjcuMDUxLjEzMS4wNS4xMzUuMDQ5LjEzOS4wNDkuMTQ0LjA0OC4xNDcuMDQ4LjE1Mi4wNDcuMTU1LjA0Ni4xNi4wNDUuMTYzLjA0NS4xNjcuMDQ0LjE3MS4wNDIuMTc2LjA0Mi4xNzguMDQuMTgzLjA0LjE4Ny4wMzguMTkuMDM3LjE5NC4wMzYuMTk3LjAzNC4yMDIuMDMzLjIwNC4wMzIuMjA5LjAzLjIxMi4wMjguMjE2LjAyNy4yMTkuMDI1LjIyMi4wMjQuMjI2LjAyMi4yMy4wMi4yMzMuMDE4LjIzNi4wMTYuMjQuMDE0LjI0My4wMTIuMjQ2LjAxLjI0OS4wMDguMjUzLjAwNi4yNTYuMDAzLjI1OS4wMDEuMjYtLjAwMS4yNTctLjAwMy4yNTQtLjAwNi4yNS0uMDA4LjI0Ny0uMDEuMjQ0LS4wMTIuMjQxLS4wMTUuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMi4yMjYtLjAyMi4yMjQtLjAyNC4yMi0uMDI1LjIxNi0uMDI3LjIxMi0uMDI5LjIxLS4wMy4yMDUtLjAzMi4yMDItLjAzMy4xOTgtLjAzNS4xOTQtLjAzNi4xOTEtLjAzNy4xODctLjAzOS4xODMtLjAzOS4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ1LjE1NS0uMDQ3LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDUuMTM2LS4wNDkuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUxLjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI0LjAyMS0uMDI1LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjMuMDEzLS4wMjQuMDEyLS4wMjIuMDEtLjAyMy4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIxLjAwNC0uMDIyLjAwMS0uMDIxLjAwMS0uMDIxdi00LjEzOWwtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1NC0uMDg1LjA1Mi0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDQtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM1LS4xNDMuMDMzLS4xNDQuMDMzLS4xNDcuMDMzLS4xNDguMDMxLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI1LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIyLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMTEtLjE3OC4wMDktLjE3OS4wMDktLjE3OS4wMDctLjE4MS4wMDctLjE4Mi4wMDUtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDJoLS4zN2wtLjE4NC0uMDAyLS4xODQtLjAwMy0uMTgyLS4wMDQtLjE4Mi0uMDA1LS4xODEtLjAwNy0uMTc5LS4wMDctLjE3OS0uMDA5LS4xNzgtLjAwOS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMy0uMTQ1LS4wMzMtLjE0My0uMDMzLS4xNDEtLjAzNS0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQtLjEyNi0uMDQxLS4xMjQtLjA0Mi0uMTIyLS4wNDMtLjEyLS4wNDMtLjExNy0uMDQ0LS4xMTYtLjA0NC0uMTEzLS4wNDYtLjExMi0uMDQ2LS4xMDktLjA0Ni0uMTA2LS4wNDctLjEwNS0uMDQ4LS4xMDItLjA0OS0uMS0uMDQ5LS4wOTctLjA1LS4wOTUtLjA1MS0uMDkzLS4wNTEtLjA5LS4wNTEtLjA4Ny0uMDUzLS4wODUtLjA1Mi0uMDgzLS4wNTQtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTM5em0wLTUuNjY2di4wMTFsLjAwMS4wMi4wMDMuMDIyLjAwNC4wMjEuMDA1LjAyMi4wMDYuMDIxLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjQuMDE4LjAyMy4wMTkuMDI0LjAyMS4wMjUuMDIyLjAyNC4wMjMuMDI0LjAyNC4wMjUuMDUyLjA1LjA1Ni4wNS4wNjEuMDUuMDY2LjA1MS4wNy4wNTEuMDc1LjA1Mi4wNzkuMDUxLjA4NC4wNTIuMDg4LjA1Mi4wOTIuMDUyLjA5Ny4wNTIuMTAyLjA1Mi4xMDUuMDUxLjExLjA1Mi4xMTQuMDUxLjExOS4wNTEuMTIzLjA1MS4xMjcuMDUuMTMxLjA1LjEzNS4wNS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0My4xNzEuMDQzLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjEuMjMuMDIuMjMzLjAxOC4yMzYuMDE3LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEzLjI0MS0uMDE0LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OS4xMzktLjA0OS4xMzYtLjA0OS4xMzEtLjA1MS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTIuMDgzLS4wNTIuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNDkuMDIzLS4wMjUuMDIzLS4wMjUuMDIxLS4wMjQuMDItLjAyNC4wMTktLjAyNC4wMTgtLjAyNC4wMTctLjAyNC4wMTUtLjAyMy4wMTQtLjAyNC4wMTMtLjAyMy4wMTItLjAyMy4wMS0uMDIyLjAxLS4wMjMuMDA4LS4wMjIuMDA2LS4wMjIuMDA2LS4wMjIuMDA0LS4wMjIuMDA0LS4wMjEuMDAxLS4wMjEuMDAxLS4wMjF2LTQuMTUzbC0uMDc3LjA1NC0uMDguMDU0LS4wODMuMDUzLS4wODUuMDUzLS4wODcuMDUzLS4wOS4wNTEtLjA5My4wNTEtLjA5NS4wNTEtLjA5Ny4wNS0uMS4wNDktLjEwMi4wNDgtLjEwNS4wNDgtLjEwNi4wNDgtLjEwOS4wNDYtLjExMS4wNDYtLjExNC4wNDYtLjExNS4wNDQtLjExOC4wNDQtLjEyLjA0My0uMTIyLjA0My0uMTI0LjA0Mi0uMTI2LjA0MS0uMTI4LjA0LS4xMy4wMzktLjEzMi4wMzktLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzYtLjEzOS4wMzYtLjE0Mi4wMzQtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzItLjE1LjAzLS4xNTEuMDMtLjE1My4wMjgtLjE1NC4wMjgtLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjQtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjMtLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxLS4xNzguMDEtLjE3OS4wMDktLjE3OS4wMDctLjE4MS4wMDYtLjE4Mi4wMDYtLjE4Mi4wMDQtLjE4NC4wMDMtLjE4NC4wMDEtLjE4NS4wMDEtLjE4NS0uMDAxLS4xODQtLjAwMS0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNi0uMTgxLS4wMDYtLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMS0uMTc2LS4wMS0uMTc2LS4wMTItLjE3NS0uMDEzLS4xNzMtLjAxNC0uMTcyLS4wMTUtLjE3MS0uMDE2LS4xNy0uMDE3LS4xNjktLjAxOC0uMTY3LS4wMTktLjE2Ni0uMDItLjE2NS0uMDIxLS4xNjMtLjAyMy0uMTYyLS4wMjMtLjE2MS0uMDI0LS4xNTktLjAyNC0uMTU3LS4wMjYtLjE1Ni0uMDI3LS4xNTUtLjAyOC0uMTUzLS4wMjgtLjE1MS0uMDMtLjE1LS4wMy0uMTQ4LS4wMzItLjE0Ni0uMDMyLS4xNDUtLjAzMy0uMTQzLS4wMzQtLjE0MS0uMDM0LS4xNC0uMDM2LS4xMzctLjAzNi0uMTM2LS4wMzctLjEzNC0uMDM4LS4xMzItLjAzOS0uMTMtLjAzOS0uMTI4LS4wNDEtLjEyNi0uMDQxLS4xMjQtLjA0MS0uMTIyLS4wNDMtLjEyLS4wNDMtLjExNy0uMDQ0LS4xMTYtLjA0NC0uMTEzLS4wNDYtLjExMi0uMDQ2LS4xMDktLjA0Ni0uMTA2LS4wNDgtLjEwNS0uMDQ4LS4xMDItLjA0OC0uMS0uMDUtLjA5Ny0uMDQ5LS4wOTUtLjA1MS0uMDkzLS4wNTEtLjA5LS4wNTItLjA4Ny0uMDUyLS4wODUtLjA1My0uMDgzLS4wNTMtLjA4LS4wNTQtLjA3Ny0uMDU0djQuMTUzem04Ljc0LTguMTc5bC0uMjU3LjAwNC0uMjU0LjAwNS0uMjUuMDA4LS4yNDcuMDExLS4yNDQuMDEyLS4yNDEuMDE0LS4yMzcuMDE2LS4yMzMuMDE4LS4yMzEuMDIxLS4yMjYuMDIyLS4yMjQuMDIzLS4yMi4wMjYtLjIxNi4wMjctLjIxMi4wMjgtLjIxLjAzMS0uMjA1LjAzMi0uMjAyLjAzMy0uMTk4LjAzNC0uMTk0LjAzNi0uMTkxLjAzOC0uMTg3LjAzOC0uMTgzLjA0LS4xNzkuMDQxLS4xNzUuMDQyLS4xNzIuMDQzLS4xNjguMDQzLS4xNjMuMDQ1LS4xNi4wNDYtLjE1NS4wNDYtLjE1Mi4wNDgtLjE0OC4wNDgtLjE0My4wNDgtLjEzOS4wNDktLjEzNi4wNS0uMTMxLjA1LS4xMjYuMDUxLS4xMjMuMDUxLS4xMTguMDUxLS4xMTQuMDUyLS4xMS4wNTItLjEwNi4wNTItLjEwMS4wNTItLjA5Ni4wNTItLjA5Mi4wNTItLjA4OC4wNTItLjA4My4wNTItLjA3OS4wNTItLjA3NC4wNTEtLjA3LjA1Mi0uMDY1LjA1MS0uMDYuMDUtLjA1Ni4wNS0uMDUxLjA1LS4wMjMuMDI1LS4wMjMuMDI0LS4wMjEuMDI0LS4wMi4wMjUtLjAxOS4wMjQtLjAxOC4wMjQtLjAxNy4wMjMtLjAxNS4wMjQtLjAxNC4wMjMtLjAxMy4wMjMtLjAxMi4wMjMtLjAxLjAyMy0uMDEuMDIyLS4wMDguMDIyLS4wMDYuMDIzLS4wMDYuMDIxLS4wMDQuMDIyLS4wMDQuMDIxLS4wMDEuMDIxLS4wMDEuMDIxLjAwMS4wMjEuMDAxLjAyMS4wMDQuMDIxLjAwNC4wMjIuMDA2LjAyMS4wMDYuMDIzLjAwOC4wMjIuMDEuMDIyLjAxLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE0LjAyMy4wMTUuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyLjAyNS4wMjEuMDI0LjAyMy4wMjQuMDIzLjAyNS4wNTEuMDUuMDU2LjA1LjA2LjA1LjA2NS4wNTEuMDcuMDUyLjA3NC4wNTEuMDc5LjA1Mi4wODMuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTYuMDUyLjEwMS4wNTIuMTA2LjA1Mi4xMS4wNTIuMTE0LjA1Mi4xMTguMDUxLjEyMy4wNTEuMTI2LjA1MS4xMzEuMDUuMTM2LjA1LjEzOS4wNDkuMTQzLjA0OC4xNDguMDQ4LjE1Mi4wNDguMTU1LjA0Ni4xNi4wNDYuMTYzLjA0NS4xNjguMDQzLjE3Mi4wNDMuMTc1LjA0Mi4xNzkuMDQxLjE4My4wNC4xODcuMDM4LjE5MS4wMzguMTk0LjAzNi4xOTguMDM0LjIwMi4wMzMuMjA1LjAzMi4yMS4wMzEuMjEyLjAyOC4yMTYuMDI3LjIyLjAyNi4yMjQuMDIzLjIyNi4wMjIuMjMxLjAyMS4yMzMuMDE4LjIzNy4wMTYuMjQxLjAxNC4yNDQuMDEyLjI0Ny4wMTEuMjUuMDA4LjI1NC4wMDUuMjU3LjAwNC4yNi4wMDEuMjYtLjAwMS4yNTctLjAwNC4yNTQtLjAwNS4yNS0uMDA4LjI0Ny0uMDExLjI0NC0uMDEyLjI0MS0uMDE0LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIxLjIyNi0uMDIyLjIyNC0uMDIzLjIyLS4wMjYuMjE2LS4wMjcuMjEyLS4wMjguMjEtLjAzMS4yMDUtLjAzMi4yMDItLjAzMy4xOTgtLjAzNC4xOTQtLjAzNi4xOTEtLjAzOC4xODctLjAzOC4xODMtLjA0LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQzLjE2My0uMDQ1LjE2LS4wNDYuMTU1LS4wNDYuMTUyLS4wNDguMTQ4LS4wNDguMTQzLS4wNDguMTM5LS4wNDkuMTM2LS4wNS4xMzEtLjA1LjEyNi0uMDUxLjEyMy0uMDUxLjExOC0uMDUxLjExNC0uMDUyLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTIuMDgzLS4wNTIuMDc5LS4wNTIuMDc0LS4wNTEuMDctLjA1Mi4wNjUtLjA1MS4wNi0uMDUuMDU2LS4wNS4wNTEtLjA1LjAyMy0uMDI1LjAyMy0uMDI0LjAyMS0uMDI0LjAyLS4wMjUuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjMuMDE1LS4wMjQuMDE0LS4wMjMuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMy4wMS0uMDIyLjAwOC0uMDIyLjAwNi0uMDIzLjAwNi0uMDIxLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxLS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwNC0uMDIxLS4wMDQtLjAyMi0uMDA2LS4wMjEtLjAwNi0uMDIzLS4wMDgtLjAyMi0uMDEtLjAyMi0uMDEtLjAyMy0uMDEyLS4wMjMtLjAxMy0uMDIzLS4wMTQtLjAyMy0uMDE1LS4wMjQtLjAxNy0uMDIzLS4wMTgtLjAyNC0uMDE5LS4wMjQtLjAyLS4wMjUtLjAyMS0uMDI0LS4wMjMtLjAyNC0uMDIzLS4wMjUtLjA1MS0uMDUtLjA1Ni0uMDUtLjA2LS4wNS0uMDY1LS4wNTEtLjA3LS4wNTItLjA3NC0uMDUxLS4wNzktLjA1Mi0uMDgzLS4wNTItLjA4OC0uMDUyLS4wOTItLjA1Mi0uMDk2LS4wNTItLjEwMS0uMDUyLS4xMDYtLjA1Mi0uMTEtLjA1Mi0uMTE0LS4wNTItLjExOC0uMDUxLS4xMjMtLjA1MS0uMTI2LS4wNTEtLjEzMS0uMDUtLjEzNi0uMDUtLjEzOS0uMDQ5LS4xNDMtLjA0OC0uMTQ4LS4wNDgtLjE1Mi0uMDQ4LS4xNTUtLjA0Ni0uMTYtLjA0Ni0uMTYzLS4wNDUtLjE2OC0uMDQzLS4xNzItLjA0My0uMTc1LS4wNDItLjE3OS0uMDQxLS4xODMtLjA0LS4xODctLjAzOC0uMTkxLS4wMzgtLjE5NC0uMDM2LS4xOTgtLjAzNC0uMjAyLS4wMzMtLjIwNS0uMDMyLS4yMS0uMDMxLS4yMTItLjAyOC0uMjE2LS4wMjctLjIyLS4wMjYtLjIyNC0uMDIzLS4yMjYtLjAyMi0uMjMxLS4wMjEtLjIzMy0uMDE4LS4yMzctLjAxNi0uMjQxLS4wMTQtLjI0NC0uMDEyLS4yNDctLjAxMS0uMjUtLjAwOC0uMjU0LS4wMDUtLjI1Ny0uMDA0LS4yNi0uMDAxLS4yNi4wMDF6XCJcbiAgKTtcbn07XG5jb25zdCBpbnNlcnRDb21wdXRlckljb24gPSBmdW5jdGlvbihlbGVtKSB7XG4gIGVsZW0uYXBwZW5kKFwiZGVmc1wiKS5hcHBlbmQoXCJzeW1ib2xcIikuYXR0cihcImlkXCIsIFwiY29tcHV0ZXJcIikuYXR0cihcIndpZHRoXCIsIFwiMjRcIikuYXR0cihcImhlaWdodFwiLCBcIjI0XCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcInRyYW5zZm9ybVwiLCBcInNjYWxlKC41KVwiKS5hdHRyKFxuICAgIFwiZFwiLFxuICAgIFwiTTIgMnYxM2gyMHYtMTNoLTIwem0xOCAxMWgtMTZ2LTloMTZ2OXptLTEwLjIyOCA2bC40NjYtMWgzLjUyNGwuNDY3IDFoLTQuNDU3em0xNC4yMjggM2gtMjRsMi02aDIuMTA0bC0xLjMzIDRoMTguNDVsLTEuMjk3LTRoMi4wNzNsMiA2em0tNS0xMGgtMTR2LTdoMTR2N3pcIlxuICApO1xufTtcbmNvbnN0IGluc2VydENsb2NrSWNvbiA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcInN5bWJvbFwiKS5hdHRyKFwiaWRcIiwgXCJjbG9ja1wiKS5hdHRyKFwid2lkdGhcIiwgXCIyNFwiKS5hdHRyKFwiaGVpZ2h0XCIsIFwiMjRcIikuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwic2NhbGUoLjUpXCIpLmF0dHIoXG4gICAgXCJkXCIsXG4gICAgXCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem01Ljg0OCAxMi40NTljLjIwMi4wMzguMjAyLjMzMy4wMDEuMzcyLTEuOTA3LjM2MS02LjA0NSAxLjExMS02LjU0NyAxLjExMS0uNzE5IDAtMS4zMDEtLjU4Mi0xLjMwMS0xLjMwMSAwLS41MTIuNzctNS40NDcgMS4xMjUtNy40NDUuMDM0LS4xOTIuMzEyLS4xODEuMzQzLjAxNGwuOTg1IDYuMjM4IDUuMzk0IDEuMDExelwiXG4gICk7XG59O1xuY29uc3QgaW5zZXJ0QXJyb3dIZWFkID0gZnVuY3Rpb24oZWxlbSkge1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImFycm93aGVhZFwiKS5hdHRyKFwicmVmWFwiLCA5KS5hdHRyKFwicmVmWVwiLCA1KS5hdHRyKFwibWFya2VyVW5pdHNcIiwgXCJ1c2VyU3BhY2VPblVzZVwiKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMTIpLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMTIpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDAgMCBMIDEwIDUgTCAwIDEwIHpcIik7XG59O1xuY29uc3QgaW5zZXJ0QXJyb3dGaWxsZWRIZWFkID0gZnVuY3Rpb24oZWxlbSkge1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImZpbGxlZC1oZWFkXCIpLmF0dHIoXCJyZWZYXCIsIDE4KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE4LDcgTDksMTMgTDE0LDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IGluc2VydFNlcXVlbmNlTnVtYmVyID0gZnVuY3Rpb24oZWxlbSkge1xuICBlbGVtLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcInNlcXVlbmNlbnVtYmVyXCIpLmF0dHIoXCJyZWZYXCIsIDE1KS5hdHRyKFwicmVmWVwiLCAxNSkuYXR0cihcIm1hcmtlcldpZHRoXCIsIDYwKS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDQwKS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIDE1KS5hdHRyKFwiY3lcIiwgMTUpLmF0dHIoXCJyXCIsIDYpO1xufTtcbmNvbnN0IGluc2VydEFycm93Q3Jvc3NIZWFkID0gZnVuY3Rpb24oZWxlbSkge1xuICBjb25zdCBkZWZzID0gZWxlbS5hcHBlbmQoXCJkZWZzXCIpO1xuICBjb25zdCBtYXJrZXIgPSBkZWZzLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJjcm9zc2hlYWRcIikuYXR0cihcIm1hcmtlcldpZHRoXCIsIDE1KS5hdHRyKFwibWFya2VySGVpZ2h0XCIsIDgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmF0dHIoXCJyZWZYXCIsIDQpLmF0dHIoXCJyZWZZXCIsIDUpO1xuICBtYXJrZXIuYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZmlsbFwiLCBcIm5vbmVcIikuYXR0cihcInN0cm9rZVwiLCBcIiMwMDAwMDBcIikuc3R5bGUoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiMCwgMFwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMXB0XCIpLmF0dHIoXCJkXCIsIFwiTSAxLDIgTCA2LDcgTSA2LDIgTCAxLDdcIik7XG59O1xuY29uc3QgZ2V0VGV4dE9iaiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBmaWxsOiB2b2lkIDAsXG4gICAgYW5jaG9yOiB2b2lkIDAsXG4gICAgc3R5bGU6IFwiIzY2NlwiLFxuICAgIHdpZHRoOiB2b2lkIDAsXG4gICAgaGVpZ2h0OiB2b2lkIDAsXG4gICAgdGV4dE1hcmdpbjogMCxcbiAgICByeDogMCxcbiAgICByeTogMCxcbiAgICB0c3BhbjogdHJ1ZSxcbiAgICB2YWxpZ246IHZvaWQgMFxuICB9O1xufTtcbmNvbnN0IGdldE5vdGVSZWN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIGZpbGw6IFwiI0VERjJBRVwiLFxuICAgIHN0cm9rZTogXCIjNjY2XCIsXG4gICAgd2lkdGg6IDEwMCxcbiAgICBhbmNob3I6IFwic3RhcnRcIixcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICByeDogMCxcbiAgICByeTogMFxuICB9O1xufTtcbmNvbnN0IF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gYnlUZXh0KGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycykge1xuICAgIGNvbnN0IHRleHQgPSBnLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgeCArIHdpZHRoIC8gMikuYXR0cihcInlcIiwgeSArIGhlaWdodCAvIDIgKyA1KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnRleHQoY29udGVudCk7XG4gICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICB9XG4gIGZ1bmN0aW9uIGJ5VHNwYW4oY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMikge1xuICAgIGNvbnN0IHsgYWN0b3JGb250U2l6ZSwgYWN0b3JGb250RmFtaWx5LCBhY3RvckZvbnRXZWlnaHQgfSA9IGNvbmYyO1xuICAgIGNvbnN0IFtfYWN0b3JGb250U2l6ZSwgX2FjdG9yRm9udFNpemVQeF0gPSBwYXJzZUZvbnRTaXplKGFjdG9yRm9udFNpemUpO1xuICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdChjb21tb24ubGluZUJyZWFrUmVnZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGR5ID0gaSAqIF9hY3RvckZvbnRTaXplIC0gX2FjdG9yRm9udFNpemUgKiAobGluZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgY29uc3QgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCB4ICsgd2lkdGggLyAyKS5hdHRyKFwieVwiLCB5KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnN0eWxlKFwiZm9udC1zaXplXCIsIF9hY3RvckZvbnRTaXplUHgpLnN0eWxlKFwiZm9udC13ZWlnaHRcIiwgYWN0b3JGb250V2VpZ2h0KS5zdHlsZShcImZvbnQtZmFtaWx5XCIsIGFjdG9yRm9udEZhbWlseSk7XG4gICAgICB0ZXh0LmFwcGVuZChcInRzcGFuXCIpLmF0dHIoXCJ4XCIsIHggKyB3aWR0aCAvIDIpLmF0dHIoXCJkeVwiLCBkeSkudGV4dChsaW5lc1tpXSk7XG4gICAgICB0ZXh0LmF0dHIoXCJ5XCIsIHkgKyBoZWlnaHQgLyAyKS5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJjZW50cmFsXCIpLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJjZW50cmFsXCIpO1xuICAgICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBieUZvKGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycywgY29uZjIpIHtcbiAgICBjb25zdCBzID0gZy5hcHBlbmQoXCJzd2l0Y2hcIik7XG4gICAgY29uc3QgZiA9IHMuYXBwZW5kKFwiZm9yZWlnbk9iamVjdFwiKS5hdHRyKFwieFwiLCB4KS5hdHRyKFwieVwiLCB5KS5hdHRyKFwid2lkdGhcIiwgd2lkdGgpLmF0dHIoXCJoZWlnaHRcIiwgaGVpZ2h0KTtcbiAgICBjb25zdCB0ZXh0ID0gZi5hcHBlbmQoXCJ4aHRtbDpkaXZcIikuc3R5bGUoXCJkaXNwbGF5XCIsIFwidGFibGVcIikuc3R5bGUoXCJoZWlnaHRcIiwgXCIxMDAlXCIpLnN0eWxlKFwid2lkdGhcIiwgXCIxMDAlXCIpO1xuICAgIHRleHQuYXBwZW5kKFwiZGl2XCIpLnN0eWxlKFwiZGlzcGxheVwiLCBcInRhYmxlLWNlbGxcIikuc3R5bGUoXCJ0ZXh0LWFsaWduXCIsIFwiY2VudGVyXCIpLnN0eWxlKFwidmVydGljYWwtYWxpZ25cIiwgXCJtaWRkbGVcIikudGV4dChjb250ZW50KTtcbiAgICBieVRzcGFuKGNvbnRlbnQsIHMsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycywgY29uZjIpO1xuICAgIF9zZXRUZXh0QXR0cnModGV4dCwgdGV4dEF0dHJzKTtcbiAgfVxuICBmdW5jdGlvbiBfc2V0VGV4dEF0dHJzKHRvVGV4dCwgZnJvbVRleHRBdHRyc0RpY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmcm9tVGV4dEF0dHJzRGljdCkge1xuICAgICAgaWYgKGZyb21UZXh0QXR0cnNEaWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdG9UZXh0LmF0dHIoa2V5LCBmcm9tVGV4dEF0dHJzRGljdFtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbmYyKSB7XG4gICAgcmV0dXJuIGNvbmYyLnRleHRQbGFjZW1lbnQgPT09IFwiZm9cIiA/IGJ5Rm8gOiBjb25mMi50ZXh0UGxhY2VtZW50ID09PSBcIm9sZFwiID8gYnlUZXh0IDogYnlUc3BhbjtcbiAgfTtcbn0oKTtcbmNvbnN0IF9kcmF3TWVudUl0ZW1UZXh0Q2FuZGlkYXRlRnVuYyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBieVRleHQoY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzKSB7XG4gICAgY29uc3QgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCB4KS5hdHRyKFwieVwiLCB5KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwic3RhcnRcIikudGV4dChjb250ZW50KTtcbiAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gIH1cbiAgZnVuY3Rpb24gYnlUc3Bhbihjb250ZW50LCBnLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0ZXh0QXR0cnMsIGNvbmYyKSB7XG4gICAgY29uc3QgeyBhY3RvckZvbnRTaXplLCBhY3RvckZvbnRGYW1pbHksIGFjdG9yRm9udFdlaWdodCB9ID0gY29uZjI7XG4gICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZHkgPSBpICogYWN0b3JGb250U2l6ZSAtIGFjdG9yRm9udFNpemUgKiAobGluZXMubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgY29uc3QgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCB4KS5hdHRyKFwieVwiLCB5KS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwic3RhcnRcIikuc3R5bGUoXCJmb250LXNpemVcIiwgYWN0b3JGb250U2l6ZSkuc3R5bGUoXCJmb250LXdlaWdodFwiLCBhY3RvckZvbnRXZWlnaHQpLnN0eWxlKFwiZm9udC1mYW1pbHlcIiwgYWN0b3JGb250RmFtaWx5KTtcbiAgICAgIHRleHQuYXBwZW5kKFwidHNwYW5cIikuYXR0cihcInhcIiwgeCkuYXR0cihcImR5XCIsIGR5KS50ZXh0KGxpbmVzW2ldKTtcbiAgICAgIHRleHQuYXR0cihcInlcIiwgeSArIGhlaWdodCAvIDIpLmF0dHIoXCJkb21pbmFudC1iYXNlbGluZVwiLCBcImNlbnRyYWxcIikuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcImNlbnRyYWxcIik7XG4gICAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGJ5Rm8oY29udGVudCwgZywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMikge1xuICAgIGNvbnN0IHMgPSBnLmFwcGVuZChcInN3aXRjaFwiKTtcbiAgICBjb25zdCBmID0gcy5hcHBlbmQoXCJmb3JlaWduT2JqZWN0XCIpLmF0dHIoXCJ4XCIsIHgpLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpO1xuICAgIGNvbnN0IHRleHQgPSBmLmFwcGVuZChcInhodG1sOmRpdlwiKS5zdHlsZShcImRpc3BsYXlcIiwgXCJ0YWJsZVwiKS5zdHlsZShcImhlaWdodFwiLCBcIjEwMCVcIikuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGV4dC5hcHBlbmQoXCJkaXZcIikuc3R5bGUoXCJkaXNwbGF5XCIsIFwidGFibGUtY2VsbFwiKS5zdHlsZShcInRleHQtYWxpZ25cIiwgXCJjZW50ZXJcIikuc3R5bGUoXCJ2ZXJ0aWNhbC1hbGlnblwiLCBcIm1pZGRsZVwiKS50ZXh0KGNvbnRlbnQpO1xuICAgIGJ5VHNwYW4oY29udGVudCwgcywgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mMik7XG4gICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICB9XG4gIGZ1bmN0aW9uIF9zZXRUZXh0QXR0cnModG9UZXh0LCBmcm9tVGV4dEF0dHJzRGljdCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb21UZXh0QXR0cnNEaWN0KSB7XG4gICAgICBpZiAoZnJvbVRleHRBdHRyc0RpY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB0b1RleHQuYXR0cihrZXksIGZyb21UZXh0QXR0cnNEaWN0W2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oY29uZjIpIHtcbiAgICByZXR1cm4gY29uZjIudGV4dFBsYWNlbWVudCA9PT0gXCJmb1wiID8gYnlGbyA6IGNvbmYyLnRleHRQbGFjZW1lbnQgPT09IFwib2xkXCIgPyBieVRleHQgOiBieVRzcGFuO1xuICB9O1xufSgpO1xuY29uc3Qgc3ZnRHJhdyA9IHtcbiAgZHJhd1JlY3QsXG4gIGRyYXdUZXh0LFxuICBkcmF3TGFiZWwsXG4gIGRyYXdBY3RvcixcbiAgZHJhd0JveCxcbiAgZHJhd1BvcHVwLFxuICBhbmNob3JFbGVtZW50LFxuICBkcmF3QWN0aXZhdGlvbixcbiAgZHJhd0xvb3AsXG4gIGRyYXdCYWNrZ3JvdW5kUmVjdCxcbiAgaW5zZXJ0QXJyb3dIZWFkLFxuICBpbnNlcnRBcnJvd0ZpbGxlZEhlYWQsXG4gIGluc2VydFNlcXVlbmNlTnVtYmVyLFxuICBpbnNlcnRBcnJvd0Nyb3NzSGVhZCxcbiAgaW5zZXJ0RGF0YWJhc2VJY29uLFxuICBpbnNlcnRDb21wdXRlckljb24sXG4gIGluc2VydENsb2NrSWNvbixcbiAgZ2V0VGV4dE9iaixcbiAgZ2V0Tm90ZVJlY3QsXG4gIHBvcHVwTWVudSxcbiAgcG9wZG93bk1lbnUsXG4gIGZpeExpZmVMaW5lSGVpZ2h0cyxcbiAgc2FuaXRpemVVcmxcbn07XG5sZXQgY29uZiA9IHt9O1xuY29uc3QgYm91bmRzID0ge1xuICBkYXRhOiB7XG4gICAgc3RhcnR4OiB2b2lkIDAsXG4gICAgc3RvcHg6IHZvaWQgMCxcbiAgICBzdGFydHk6IHZvaWQgMCxcbiAgICBzdG9weTogdm9pZCAwXG4gIH0sXG4gIHZlcnRpY2FsUG9zOiAwLFxuICBzZXF1ZW5jZUl0ZW1zOiBbXSxcbiAgYWN0aXZhdGlvbnM6IFtdLFxuICBtb2RlbHM6IHtcbiAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLmFjdG9ycy5sZW5ndGggPT09IDAgPyBbMF0gOiB0aGlzLmFjdG9ycy5tYXAoKGFjdG9yKSA9PiBhY3Rvci5oZWlnaHQgfHwgMClcbiAgICAgICkgKyAodGhpcy5sb29wcy5sZW5ndGggPT09IDAgPyAwIDogdGhpcy5sb29wcy5tYXAoKGl0KSA9PiBpdC5oZWlnaHQgfHwgMCkucmVkdWNlKChhY2MsIGgpID0+IGFjYyArIGgpKSArICh0aGlzLm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCA/IDAgOiB0aGlzLm1lc3NhZ2VzLm1hcCgoaXQpID0+IGl0LmhlaWdodCB8fCAwKS5yZWR1Y2UoKGFjYywgaCkgPT4gYWNjICsgaCkpICsgKHRoaXMubm90ZXMubGVuZ3RoID09PSAwID8gMCA6IHRoaXMubm90ZXMubWFwKChpdCkgPT4gaXQuaGVpZ2h0IHx8IDApLnJlZHVjZSgoYWNjLCBoKSA9PiBhY2MgKyBoKSk7XG4gICAgfSxcbiAgICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmFjdG9ycyA9IFtdO1xuICAgICAgdGhpcy5ib3hlcyA9IFtdO1xuICAgICAgdGhpcy5sb29wcyA9IFtdO1xuICAgICAgdGhpcy5tZXNzYWdlcyA9IFtdO1xuICAgICAgdGhpcy5ub3RlcyA9IFtdO1xuICAgIH0sXG4gICAgYWRkQm94OiBmdW5jdGlvbihib3hNb2RlbCkge1xuICAgICAgdGhpcy5ib3hlcy5wdXNoKGJveE1vZGVsKTtcbiAgICB9LFxuICAgIGFkZEFjdG9yOiBmdW5jdGlvbihhY3Rvck1vZGVsKSB7XG4gICAgICB0aGlzLmFjdG9ycy5wdXNoKGFjdG9yTW9kZWwpO1xuICAgIH0sXG4gICAgYWRkTG9vcDogZnVuY3Rpb24obG9vcE1vZGVsKSB7XG4gICAgICB0aGlzLmxvb3BzLnB1c2gobG9vcE1vZGVsKTtcbiAgICB9LFxuICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1zZ01vZGVsKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobXNnTW9kZWwpO1xuICAgIH0sXG4gICAgYWRkTm90ZTogZnVuY3Rpb24obm90ZU1vZGVsKSB7XG4gICAgICB0aGlzLm5vdGVzLnB1c2gobm90ZU1vZGVsKTtcbiAgICB9LFxuICAgIGxhc3RBY3RvcjogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RvcnNbdGhpcy5hY3RvcnMubGVuZ3RoIC0gMV07XG4gICAgfSxcbiAgICBsYXN0TG9vcDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb29wc1t0aGlzLmxvb3BzLmxlbmd0aCAtIDFdO1xuICAgIH0sXG4gICAgbGFzdE1lc3NhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZXNbdGhpcy5tZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICB9LFxuICAgIGxhc3ROb3RlOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdGVzW3RoaXMubm90ZXMubGVuZ3RoIC0gMV07XG4gICAgfSxcbiAgICBhY3RvcnM6IFtdLFxuICAgIGJveGVzOiBbXSxcbiAgICBsb29wczogW10sXG4gICAgbWVzc2FnZXM6IFtdLFxuICAgIG5vdGVzOiBbXVxuICB9LFxuICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnNlcXVlbmNlSXRlbXMgPSBbXTtcbiAgICB0aGlzLmFjdGl2YXRpb25zID0gW107XG4gICAgdGhpcy5tb2RlbHMuY2xlYXIoKTtcbiAgICB0aGlzLmRhdGEgPSB7XG4gICAgICBzdGFydHg6IHZvaWQgMCxcbiAgICAgIHN0b3B4OiB2b2lkIDAsXG4gICAgICBzdGFydHk6IHZvaWQgMCxcbiAgICAgIHN0b3B5OiB2b2lkIDBcbiAgICB9O1xuICAgIHRoaXMudmVydGljYWxQb3MgPSAwO1xuICAgIHNldENvbmYoZ2V0Q29uZmlnKCkpO1xuICB9LFxuICB1cGRhdGVWYWw6IGZ1bmN0aW9uKG9iaiwga2V5LCB2YWwsIGZ1bikge1xuICAgIGlmIChvYmpba2V5XSA9PT0gdm9pZCAwKSB7XG4gICAgICBvYmpba2V5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2tleV0gPSBmdW4odmFsLCBvYmpba2V5XSk7XG4gICAgfVxuICB9LFxuICB1cGRhdGVCb3VuZHM6IGZ1bmN0aW9uKHN0YXJ0eCwgc3RhcnR5LCBzdG9weCwgc3RvcHkpIHtcbiAgICBjb25zdCBfc2VsZiA9IHRoaXM7XG4gICAgbGV0IGNudCA9IDA7XG4gICAgZnVuY3Rpb24gdXBkYXRlRm4odHlwZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZUl0ZW1Cb3VuZHMoaXRlbSkge1xuICAgICAgICBjbnQrKztcbiAgICAgICAgY29uc3QgbiA9IF9zZWxmLnNlcXVlbmNlSXRlbXMubGVuZ3RoIC0gY250ICsgMTtcbiAgICAgICAgX3NlbGYudXBkYXRlVmFsKGl0ZW0sIFwic3RhcnR5XCIsIHN0YXJ0eSAtIG4gKiBjb25mLmJveE1hcmdpbiwgTWF0aC5taW4pO1xuICAgICAgICBfc2VsZi51cGRhdGVWYWwoaXRlbSwgXCJzdG9weVwiLCBzdG9weSArIG4gKiBjb25mLmJveE1hcmdpbiwgTWF0aC5tYXgpO1xuICAgICAgICBfc2VsZi51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RhcnR4XCIsIHN0YXJ0eCAtIG4gKiBjb25mLmJveE1hcmdpbiwgTWF0aC5taW4pO1xuICAgICAgICBfc2VsZi51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RvcHhcIiwgc3RvcHggKyBuICogY29uZi5ib3hNYXJnaW4sIE1hdGgubWF4KTtcbiAgICAgICAgaWYgKCEodHlwZSA9PT0gXCJhY3RpdmF0aW9uXCIpKSB7XG4gICAgICAgICAgX3NlbGYudXBkYXRlVmFsKGl0ZW0sIFwic3RhcnR4XCIsIHN0YXJ0eCAtIG4gKiBjb25mLmJveE1hcmdpbiwgTWF0aC5taW4pO1xuICAgICAgICAgIF9zZWxmLnVwZGF0ZVZhbChpdGVtLCBcInN0b3B4XCIsIHN0b3B4ICsgbiAqIGNvbmYuYm94TWFyZ2luLCBNYXRoLm1heCk7XG4gICAgICAgICAgX3NlbGYudXBkYXRlVmFsKGJvdW5kcy5kYXRhLCBcInN0YXJ0eVwiLCBzdGFydHkgLSBuICogY29uZi5ib3hNYXJnaW4sIE1hdGgubWluKTtcbiAgICAgICAgICBfc2VsZi51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RvcHlcIiwgc3RvcHkgKyBuICogY29uZi5ib3hNYXJnaW4sIE1hdGgubWF4KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5zZXF1ZW5jZUl0ZW1zLmZvckVhY2godXBkYXRlRm4oKSk7XG4gICAgdGhpcy5hY3RpdmF0aW9ucy5mb3JFYWNoKHVwZGF0ZUZuKFwiYWN0aXZhdGlvblwiKSk7XG4gIH0sXG4gIGluc2VydDogZnVuY3Rpb24oc3RhcnR4LCBzdGFydHksIHN0b3B4LCBzdG9weSkge1xuICAgIGNvbnN0IF9zdGFydHggPSBjb21tb24uZ2V0TWluKHN0YXJ0eCwgc3RvcHgpO1xuICAgIGNvbnN0IF9zdG9weCA9IGNvbW1vbi5nZXRNYXgoc3RhcnR4LCBzdG9weCk7XG4gICAgY29uc3QgX3N0YXJ0eSA9IGNvbW1vbi5nZXRNaW4oc3RhcnR5LCBzdG9weSk7XG4gICAgY29uc3QgX3N0b3B5ID0gY29tbW9uLmdldE1heChzdGFydHksIHN0b3B5KTtcbiAgICB0aGlzLnVwZGF0ZVZhbChib3VuZHMuZGF0YSwgXCJzdGFydHhcIiwgX3N0YXJ0eCwgTWF0aC5taW4pO1xuICAgIHRoaXMudXBkYXRlVmFsKGJvdW5kcy5kYXRhLCBcInN0YXJ0eVwiLCBfc3RhcnR5LCBNYXRoLm1pbik7XG4gICAgdGhpcy51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RvcHhcIiwgX3N0b3B4LCBNYXRoLm1heCk7XG4gICAgdGhpcy51cGRhdGVWYWwoYm91bmRzLmRhdGEsIFwic3RvcHlcIiwgX3N0b3B5LCBNYXRoLm1heCk7XG4gICAgdGhpcy51cGRhdGVCb3VuZHMoX3N0YXJ0eCwgX3N0YXJ0eSwgX3N0b3B4LCBfc3RvcHkpO1xuICB9LFxuICBuZXdBY3RpdmF0aW9uOiBmdW5jdGlvbihtZXNzYWdlLCBkaWFncmFtMiwgYWN0b3JzMikge1xuICAgIGNvbnN0IGFjdG9yUmVjdCA9IGFjdG9yczJbbWVzc2FnZS5mcm9tLmFjdG9yXTtcbiAgICBjb25zdCBzdGFja2VkU2l6ZSA9IGFjdG9yQWN0aXZhdGlvbnMobWVzc2FnZS5mcm9tLmFjdG9yKS5sZW5ndGggfHwgMDtcbiAgICBjb25zdCB4ID0gYWN0b3JSZWN0LnggKyBhY3RvclJlY3Qud2lkdGggLyAyICsgKHN0YWNrZWRTaXplIC0gMSkgKiBjb25mLmFjdGl2YXRpb25XaWR0aCAvIDI7XG4gICAgdGhpcy5hY3RpdmF0aW9ucy5wdXNoKHtcbiAgICAgIHN0YXJ0eDogeCxcbiAgICAgIHN0YXJ0eTogdGhpcy52ZXJ0aWNhbFBvcyArIDIsXG4gICAgICBzdG9weDogeCArIGNvbmYuYWN0aXZhdGlvbldpZHRoLFxuICAgICAgc3RvcHk6IHZvaWQgMCxcbiAgICAgIGFjdG9yOiBtZXNzYWdlLmZyb20uYWN0b3IsXG4gICAgICBhbmNob3JlZDogc3ZnRHJhdy5hbmNob3JFbGVtZW50KGRpYWdyYW0yKVxuICAgIH0pO1xuICB9LFxuICBlbmRBY3RpdmF0aW9uOiBmdW5jdGlvbihtZXNzYWdlKSB7XG4gICAgY29uc3QgbGFzdEFjdG9yQWN0aXZhdGlvbklkeCA9IHRoaXMuYWN0aXZhdGlvbnMubWFwKGZ1bmN0aW9uKGFjdGl2YXRpb24pIHtcbiAgICAgIHJldHVybiBhY3RpdmF0aW9uLmFjdG9yO1xuICAgIH0pLmxhc3RJbmRleE9mKG1lc3NhZ2UuZnJvbS5hY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZhdGlvbnMuc3BsaWNlKGxhc3RBY3RvckFjdGl2YXRpb25JZHgsIDEpWzBdO1xuICB9LFxuICBjcmVhdGVMb29wOiBmdW5jdGlvbih0aXRsZSA9IHsgbWVzc2FnZTogdm9pZCAwLCB3cmFwOiBmYWxzZSwgd2lkdGg6IHZvaWQgMCB9LCBmaWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0eDogdm9pZCAwLFxuICAgICAgc3RhcnR5OiB0aGlzLnZlcnRpY2FsUG9zLFxuICAgICAgc3RvcHg6IHZvaWQgMCxcbiAgICAgIHN0b3B5OiB2b2lkIDAsXG4gICAgICB0aXRsZTogdGl0bGUubWVzc2FnZSxcbiAgICAgIHdyYXA6IHRpdGxlLndyYXAsXG4gICAgICB3aWR0aDogdGl0bGUud2lkdGgsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBmaWxsXG4gICAgfTtcbiAgfSxcbiAgbmV3TG9vcDogZnVuY3Rpb24odGl0bGUgPSB7IG1lc3NhZ2U6IHZvaWQgMCwgd3JhcDogZmFsc2UsIHdpZHRoOiB2b2lkIDAgfSwgZmlsbCkge1xuICAgIHRoaXMuc2VxdWVuY2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTG9vcCh0aXRsZSwgZmlsbCkpO1xuICB9LFxuICBlbmRMb29wOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXF1ZW5jZUl0ZW1zLnBvcCgpO1xuICB9LFxuICBpc0xvb3BPdmVybGFwOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zZXF1ZW5jZUl0ZW1zLmxlbmd0aCA/IHRoaXMuc2VxdWVuY2VJdGVtc1t0aGlzLnNlcXVlbmNlSXRlbXMubGVuZ3RoIC0gMV0ub3ZlcmxhcCA6IGZhbHNlO1xuICB9LFxuICBhZGRTZWN0aW9uVG9Mb29wOiBmdW5jdGlvbihtZXNzYWdlKSB7XG4gICAgY29uc3QgbG9vcCA9IHRoaXMuc2VxdWVuY2VJdGVtcy5wb3AoKTtcbiAgICBsb29wLnNlY3Rpb25zID0gbG9vcC5zZWN0aW9ucyB8fCBbXTtcbiAgICBsb29wLnNlY3Rpb25UaXRsZXMgPSBsb29wLnNlY3Rpb25UaXRsZXMgfHwgW107XG4gICAgbG9vcC5zZWN0aW9ucy5wdXNoKHsgeTogYm91bmRzLmdldFZlcnRpY2FsUG9zKCksIGhlaWdodDogMCB9KTtcbiAgICBsb29wLnNlY3Rpb25UaXRsZXMucHVzaChtZXNzYWdlKTtcbiAgICB0aGlzLnNlcXVlbmNlSXRlbXMucHVzaChsb29wKTtcbiAgfSxcbiAgc2F2ZVZlcnRpY2FsUG9zOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc0xvb3BPdmVybGFwKCkpIHtcbiAgICAgIHRoaXMuc2F2ZWRWZXJ0aWNhbFBvcyA9IHRoaXMudmVydGljYWxQb3M7XG4gICAgfVxuICB9LFxuICByZXNldFZlcnRpY2FsUG9zOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc0xvb3BPdmVybGFwKCkpIHtcbiAgICAgIHRoaXMudmVydGljYWxQb3MgPSB0aGlzLnNhdmVkVmVydGljYWxQb3M7XG4gICAgfVxuICB9LFxuICBidW1wVmVydGljYWxQb3M6IGZ1bmN0aW9uKGJ1bXApIHtcbiAgICB0aGlzLnZlcnRpY2FsUG9zID0gdGhpcy52ZXJ0aWNhbFBvcyArIGJ1bXA7XG4gICAgdGhpcy5kYXRhLnN0b3B5ID0gY29tbW9uLmdldE1heCh0aGlzLmRhdGEuc3RvcHksIHRoaXMudmVydGljYWxQb3MpO1xuICB9LFxuICBnZXRWZXJ0aWNhbFBvczogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVydGljYWxQb3M7XG4gIH0sXG4gIGdldEJvdW5kczogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHsgYm91bmRzOiB0aGlzLmRhdGEsIG1vZGVsczogdGhpcy5tb2RlbHMgfTtcbiAgfVxufTtcbmNvbnN0IGRyYXdOb3RlID0gZnVuY3Rpb24oZWxlbSwgbm90ZU1vZGVsKSB7XG4gIGJvdW5kcy5idW1wVmVydGljYWxQb3MoY29uZi5ib3hNYXJnaW4pO1xuICBub3RlTW9kZWwuaGVpZ2h0ID0gY29uZi5ib3hNYXJnaW47XG4gIG5vdGVNb2RlbC5zdGFydHkgPSBib3VuZHMuZ2V0VmVydGljYWxQb3MoKTtcbiAgY29uc3QgcmVjdCA9IGdldE5vdGVSZWN0JDEoKTtcbiAgcmVjdC54ID0gbm90ZU1vZGVsLnN0YXJ0eDtcbiAgcmVjdC55ID0gbm90ZU1vZGVsLnN0YXJ0eTtcbiAgcmVjdC53aWR0aCA9IG5vdGVNb2RlbC53aWR0aCB8fCBjb25mLndpZHRoO1xuICByZWN0LmNsYXNzID0gXCJub3RlXCI7XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IHJlY3RFbGVtID0gc3ZnRHJhdy5kcmF3UmVjdChnLCByZWN0KTtcbiAgY29uc3QgdGV4dE9iaiA9IGdldFRleHRPYmokMSgpO1xuICB0ZXh0T2JqLnggPSBub3RlTW9kZWwuc3RhcnR4O1xuICB0ZXh0T2JqLnkgPSBub3RlTW9kZWwuc3RhcnR5O1xuICB0ZXh0T2JqLndpZHRoID0gcmVjdC53aWR0aDtcbiAgdGV4dE9iai5keSA9IFwiMWVtXCI7XG4gIHRleHRPYmoudGV4dCA9IG5vdGVNb2RlbC5tZXNzYWdlO1xuICB0ZXh0T2JqLmNsYXNzID0gXCJub3RlVGV4dFwiO1xuICB0ZXh0T2JqLmZvbnRGYW1pbHkgPSBjb25mLm5vdGVGb250RmFtaWx5O1xuICB0ZXh0T2JqLmZvbnRTaXplID0gY29uZi5ub3RlRm9udFNpemU7XG4gIHRleHRPYmouZm9udFdlaWdodCA9IGNvbmYubm90ZUZvbnRXZWlnaHQ7XG4gIHRleHRPYmouYW5jaG9yID0gY29uZi5ub3RlQWxpZ247XG4gIHRleHRPYmoudGV4dE1hcmdpbiA9IGNvbmYubm90ZU1hcmdpbjtcbiAgdGV4dE9iai52YWxpZ24gPSBcImNlbnRlclwiO1xuICBjb25zdCB0ZXh0RWxlbSA9IGRyYXdUZXh0KGcsIHRleHRPYmopO1xuICBjb25zdCB0ZXh0SGVpZ2h0ID0gTWF0aC5yb3VuZChcbiAgICB0ZXh0RWxlbS5tYXAoKHRlKSA9PiAodGUuX2dyb3VwcyB8fCB0ZSlbMF1bMF0uZ2V0QkJveCgpLmhlaWdodCkucmVkdWNlKChhY2MsIGN1cnIpID0+IGFjYyArIGN1cnIpXG4gICk7XG4gIHJlY3RFbGVtLmF0dHIoXCJoZWlnaHRcIiwgdGV4dEhlaWdodCArIDIgKiBjb25mLm5vdGVNYXJnaW4pO1xuICBub3RlTW9kZWwuaGVpZ2h0ICs9IHRleHRIZWlnaHQgKyAyICogY29uZi5ub3RlTWFyZ2luO1xuICBib3VuZHMuYnVtcFZlcnRpY2FsUG9zKHRleHRIZWlnaHQgKyAyICogY29uZi5ub3RlTWFyZ2luKTtcbiAgbm90ZU1vZGVsLnN0b3B5ID0gbm90ZU1vZGVsLnN0YXJ0eSArIHRleHRIZWlnaHQgKyAyICogY29uZi5ub3RlTWFyZ2luO1xuICBub3RlTW9kZWwuc3RvcHggPSBub3RlTW9kZWwuc3RhcnR4ICsgcmVjdC53aWR0aDtcbiAgYm91bmRzLmluc2VydChub3RlTW9kZWwuc3RhcnR4LCBub3RlTW9kZWwuc3RhcnR5LCBub3RlTW9kZWwuc3RvcHgsIG5vdGVNb2RlbC5zdG9weSk7XG4gIGJvdW5kcy5tb2RlbHMuYWRkTm90ZShub3RlTW9kZWwpO1xufTtcbmNvbnN0IG1lc3NhZ2VGb250ID0gKGNuZikgPT4ge1xuICByZXR1cm4ge1xuICAgIGZvbnRGYW1pbHk6IGNuZi5tZXNzYWdlRm9udEZhbWlseSxcbiAgICBmb250U2l6ZTogY25mLm1lc3NhZ2VGb250U2l6ZSxcbiAgICBmb250V2VpZ2h0OiBjbmYubWVzc2FnZUZvbnRXZWlnaHRcbiAgfTtcbn07XG5jb25zdCBub3RlRm9udCA9IChjbmYpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBmb250RmFtaWx5OiBjbmYubm90ZUZvbnRGYW1pbHksXG4gICAgZm9udFNpemU6IGNuZi5ub3RlRm9udFNpemUsXG4gICAgZm9udFdlaWdodDogY25mLm5vdGVGb250V2VpZ2h0XG4gIH07XG59O1xuY29uc3QgYWN0b3JGb250ID0gKGNuZikgPT4ge1xuICByZXR1cm4ge1xuICAgIGZvbnRGYW1pbHk6IGNuZi5hY3RvckZvbnRGYW1pbHksXG4gICAgZm9udFNpemU6IGNuZi5hY3RvckZvbnRTaXplLFxuICAgIGZvbnRXZWlnaHQ6IGNuZi5hY3RvckZvbnRXZWlnaHRcbiAgfTtcbn07XG5mdW5jdGlvbiBib3VuZE1lc3NhZ2UoX2RpYWdyYW0sIG1zZ01vZGVsKSB7XG4gIGJvdW5kcy5idW1wVmVydGljYWxQb3MoMTApO1xuICBjb25zdCB7IHN0YXJ0eCwgc3RvcHgsIG1lc3NhZ2UgfSA9IG1zZ01vZGVsO1xuICBjb25zdCBsaW5lcyA9IGNvbW1vbi5zcGxpdEJyZWFrcyhtZXNzYWdlKS5sZW5ndGg7XG4gIGNvbnN0IHRleHREaW1zID0gdXRpbHMuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMobWVzc2FnZSwgbWVzc2FnZUZvbnQoY29uZikpO1xuICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dERpbXMuaGVpZ2h0IC8gbGluZXM7XG4gIG1zZ01vZGVsLmhlaWdodCArPSBsaW5lSGVpZ2h0O1xuICBib3VuZHMuYnVtcFZlcnRpY2FsUG9zKGxpbmVIZWlnaHQpO1xuICBsZXQgbGluZVN0YXJ0WTtcbiAgbGV0IHRvdGFsT2Zmc2V0ID0gdGV4dERpbXMuaGVpZ2h0IC0gMTA7XG4gIGNvbnN0IHRleHRXaWR0aCA9IHRleHREaW1zLndpZHRoO1xuICBpZiAoc3RhcnR4ID09PSBzdG9weCkge1xuICAgIGxpbmVTdGFydFkgPSBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSArIHRvdGFsT2Zmc2V0O1xuICAgIGlmICghY29uZi5yaWdodEFuZ2xlcykge1xuICAgICAgdG90YWxPZmZzZXQgKz0gY29uZi5ib3hNYXJnaW47XG4gICAgICBsaW5lU3RhcnRZID0gYm91bmRzLmdldFZlcnRpY2FsUG9zKCkgKyB0b3RhbE9mZnNldDtcbiAgICB9XG4gICAgdG90YWxPZmZzZXQgKz0gMzA7XG4gICAgY29uc3QgZHggPSBjb21tb24uZ2V0TWF4KHRleHRXaWR0aCAvIDIsIGNvbmYud2lkdGggLyAyKTtcbiAgICBib3VuZHMuaW5zZXJ0KFxuICAgICAgc3RhcnR4IC0gZHgsXG4gICAgICBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSAtIDEwICsgdG90YWxPZmZzZXQsXG4gICAgICBzdG9weCArIGR4LFxuICAgICAgYm91bmRzLmdldFZlcnRpY2FsUG9zKCkgKyAzMCArIHRvdGFsT2Zmc2V0XG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICB0b3RhbE9mZnNldCArPSBjb25mLmJveE1hcmdpbjtcbiAgICBsaW5lU3RhcnRZID0gYm91bmRzLmdldFZlcnRpY2FsUG9zKCkgKyB0b3RhbE9mZnNldDtcbiAgICBib3VuZHMuaW5zZXJ0KHN0YXJ0eCwgbGluZVN0YXJ0WSAtIDEwLCBzdG9weCwgbGluZVN0YXJ0WSk7XG4gIH1cbiAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyh0b3RhbE9mZnNldCk7XG4gIG1zZ01vZGVsLmhlaWdodCArPSB0b3RhbE9mZnNldDtcbiAgbXNnTW9kZWwuc3RvcHkgPSBtc2dNb2RlbC5zdGFydHkgKyBtc2dNb2RlbC5oZWlnaHQ7XG4gIGJvdW5kcy5pbnNlcnQobXNnTW9kZWwuZnJvbUJvdW5kcywgbXNnTW9kZWwuc3RhcnR5LCBtc2dNb2RlbC50b0JvdW5kcywgbXNnTW9kZWwuc3RvcHkpO1xuICByZXR1cm4gbGluZVN0YXJ0WTtcbn1cbmNvbnN0IGRyYXdNZXNzYWdlID0gZnVuY3Rpb24oZGlhZ3JhbTIsIG1zZ01vZGVsLCBsaW5lU3RhcnRZLCBkaWFnT2JqKSB7XG4gIGNvbnN0IHsgc3RhcnR4LCBzdG9weCwgc3RhcnR5LCBtZXNzYWdlLCB0eXBlLCBzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZVZpc2libGUgfSA9IG1zZ01vZGVsO1xuICBjb25zdCB0ZXh0RGltcyA9IHV0aWxzLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKG1lc3NhZ2UsIG1lc3NhZ2VGb250KGNvbmYpKTtcbiAgY29uc3QgdGV4dE9iaiA9IGdldFRleHRPYmokMSgpO1xuICB0ZXh0T2JqLnggPSBzdGFydHg7XG4gIHRleHRPYmoueSA9IHN0YXJ0eSArIDEwO1xuICB0ZXh0T2JqLndpZHRoID0gc3RvcHggLSBzdGFydHg7XG4gIHRleHRPYmouY2xhc3MgPSBcIm1lc3NhZ2VUZXh0XCI7XG4gIHRleHRPYmouZHkgPSBcIjFlbVwiO1xuICB0ZXh0T2JqLnRleHQgPSBtZXNzYWdlO1xuICB0ZXh0T2JqLmZvbnRGYW1pbHkgPSBjb25mLm1lc3NhZ2VGb250RmFtaWx5O1xuICB0ZXh0T2JqLmZvbnRTaXplID0gY29uZi5tZXNzYWdlRm9udFNpemU7XG4gIHRleHRPYmouZm9udFdlaWdodCA9IGNvbmYubWVzc2FnZUZvbnRXZWlnaHQ7XG4gIHRleHRPYmouYW5jaG9yID0gY29uZi5tZXNzYWdlQWxpZ247XG4gIHRleHRPYmoudmFsaWduID0gXCJjZW50ZXJcIjtcbiAgdGV4dE9iai50ZXh0TWFyZ2luID0gY29uZi53cmFwUGFkZGluZztcbiAgdGV4dE9iai50c3BhbiA9IGZhbHNlO1xuICBkcmF3VGV4dChkaWFncmFtMiwgdGV4dE9iaik7XG4gIGNvbnN0IHRleHRXaWR0aCA9IHRleHREaW1zLndpZHRoO1xuICBsZXQgbGluZTtcbiAgaWYgKHN0YXJ0eCA9PT0gc3RvcHgpIHtcbiAgICBpZiAoY29uZi5yaWdodEFuZ2xlcykge1xuICAgICAgbGluZSA9IGRpYWdyYW0yLmFwcGVuZChcInBhdGhcIikuYXR0cihcbiAgICAgICAgXCJkXCIsXG4gICAgICAgIGBNICAke3N0YXJ0eH0sJHtsaW5lU3RhcnRZfSBIICR7c3RhcnR4ICsgY29tbW9uLmdldE1heChjb25mLndpZHRoIC8gMiwgdGV4dFdpZHRoIC8gMil9IFYgJHtsaW5lU3RhcnRZICsgMjV9IEggJHtzdGFydHh9YFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZSA9IGRpYWdyYW0yLmFwcGVuZChcInBhdGhcIikuYXR0cihcbiAgICAgICAgXCJkXCIsXG4gICAgICAgIFwiTSBcIiArIHN0YXJ0eCArIFwiLFwiICsgbGluZVN0YXJ0WSArIFwiIEMgXCIgKyAoc3RhcnR4ICsgNjApICsgXCIsXCIgKyAobGluZVN0YXJ0WSAtIDEwKSArIFwiIFwiICsgKHN0YXJ0eCArIDYwKSArIFwiLFwiICsgKGxpbmVTdGFydFkgKyAzMCkgKyBcIiBcIiArIHN0YXJ0eCArIFwiLFwiICsgKGxpbmVTdGFydFkgKyAyMClcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxpbmUgPSBkaWFncmFtMi5hcHBlbmQoXCJsaW5lXCIpO1xuICAgIGxpbmUuYXR0cihcIngxXCIsIHN0YXJ0eCk7XG4gICAgbGluZS5hdHRyKFwieTFcIiwgbGluZVN0YXJ0WSk7XG4gICAgbGluZS5hdHRyKFwieDJcIiwgc3RvcHgpO1xuICAgIGxpbmUuYXR0cihcInkyXCIsIGxpbmVTdGFydFkpO1xuICB9XG4gIGlmICh0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRCB8fCB0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRF9DUk9TUyB8fCB0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRF9QT0lOVCB8fCB0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRF9PUEVOKSB7XG4gICAgbGluZS5zdHlsZShcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCIzLCAzXCIpO1xuICAgIGxpbmUuYXR0cihcImNsYXNzXCIsIFwibWVzc2FnZUxpbmUxXCIpO1xuICB9IGVsc2Uge1xuICAgIGxpbmUuYXR0cihcImNsYXNzXCIsIFwibWVzc2FnZUxpbmUwXCIpO1xuICB9XG4gIGxldCB1cmwgPSBcIlwiO1xuICBpZiAoY29uZi5hcnJvd01hcmtlckFic29sdXRlKSB7XG4gICAgdXJsID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKC9cXCgvZywgXCJcXFxcKFwiKTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFwpL2csIFwiXFxcXClcIik7XG4gIH1cbiAgbGluZS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDIpO1xuICBsaW5lLmF0dHIoXCJzdHJva2VcIiwgXCJub25lXCIpO1xuICBsaW5lLnN0eWxlKFwiZmlsbFwiLCBcIm5vbmVcIik7XG4gIGlmICh0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLlNPTElEIHx8IHR5cGUgPT09IGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEKSB7XG4gICAgbGluZS5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI2Fycm93aGVhZClcIik7XG4gIH1cbiAgaWYgKHR5cGUgPT09IGRpYWdPYmouZGIuTElORVRZUEUuU09MSURfUE9JTlQgfHwgdHlwZSA9PT0gZGlhZ09iai5kYi5MSU5FVFlQRS5ET1RURURfUE9JTlQpIHtcbiAgICBsaW5lLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKFwiICsgdXJsICsgXCIjZmlsbGVkLWhlYWQpXCIpO1xuICB9XG4gIGlmICh0eXBlID09PSBkaWFnT2JqLmRiLkxJTkVUWVBFLlNPTElEX0NST1NTIHx8IHR5cGUgPT09IGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEX0NST1NTKSB7XG4gICAgbGluZS5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybChcIiArIHVybCArIFwiI2Nyb3NzaGVhZClcIik7XG4gIH1cbiAgaWYgKHNlcXVlbmNlVmlzaWJsZSB8fCBjb25mLnNob3dTZXF1ZW5jZU51bWJlcnMpIHtcbiAgICBsaW5lLmF0dHIoXCJtYXJrZXItc3RhcnRcIiwgXCJ1cmwoXCIgKyB1cmwgKyBcIiNzZXF1ZW5jZW51bWJlcilcIik7XG4gICAgZGlhZ3JhbTIuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCBzdGFydHgpLmF0dHIoXCJ5XCIsIGxpbmVTdGFydFkgKyA0KS5hdHRyKFwiZm9udC1mYW1pbHlcIiwgXCJzYW5zLXNlcmlmXCIpLmF0dHIoXCJmb250LXNpemVcIiwgXCIxMnB4XCIpLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJzZXF1ZW5jZU51bWJlclwiKS50ZXh0KHNlcXVlbmNlSW5kZXgpO1xuICB9XG59O1xuY29uc3QgZHJhd0FjdG9ycyA9IGZ1bmN0aW9uKGRpYWdyYW0yLCBhY3RvcnMyLCBhY3RvcktleXMsIHZlcnRpY2FsUG9zLCBjb25maWd1cmF0aW9uLCBtZXNzYWdlczIsIGlzRm9vdGVyKSB7XG4gIGlmIChjb25maWd1cmF0aW9uLmhpZGVVbnVzZWRQYXJ0aWNpcGFudHMgPT09IHRydWUpIHtcbiAgICBjb25zdCBuZXdBY3RvcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgIG1lc3NhZ2VzMi5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XG4gICAgICBuZXdBY3RvcnMuYWRkKG1lc3NhZ2UuZnJvbSk7XG4gICAgICBuZXdBY3RvcnMuYWRkKG1lc3NhZ2UudG8pO1xuICAgIH0pO1xuICAgIGFjdG9yS2V5cyA9IGFjdG9yS2V5cy5maWx0ZXIoKGFjdG9yS2V5KSA9PiBuZXdBY3RvcnMuaGFzKGFjdG9yS2V5KSk7XG4gIH1cbiAgbGV0IHByZXZXaWR0aCA9IDA7XG4gIGxldCBwcmV2TWFyZ2luID0gMDtcbiAgbGV0IG1heEhlaWdodCA9IDA7XG4gIGxldCBwcmV2Qm94ID0gdm9pZCAwO1xuICBmb3IgKGNvbnN0IGFjdG9yS2V5IG9mIGFjdG9yS2V5cykge1xuICAgIGNvbnN0IGFjdG9yID0gYWN0b3JzMlthY3RvcktleV07XG4gICAgY29uc3QgYm94ID0gYWN0b3IuYm94O1xuICAgIGlmIChwcmV2Qm94ICYmIHByZXZCb3ggIT0gYm94KSB7XG4gICAgICBpZiAoIWlzRm9vdGVyKSB7XG4gICAgICAgIGJvdW5kcy5tb2RlbHMuYWRkQm94KHByZXZCb3gpO1xuICAgICAgfVxuICAgICAgcHJldk1hcmdpbiArPSBjb25mLmJveE1hcmdpbiArIHByZXZCb3gubWFyZ2luO1xuICAgIH1cbiAgICBpZiAoYm94ICYmIGJveCAhPSBwcmV2Qm94KSB7XG4gICAgICBpZiAoIWlzRm9vdGVyKSB7XG4gICAgICAgIGJveC54ID0gcHJldldpZHRoICsgcHJldk1hcmdpbjtcbiAgICAgICAgYm94LnkgPSB2ZXJ0aWNhbFBvcztcbiAgICAgIH1cbiAgICAgIHByZXZNYXJnaW4gKz0gYm94Lm1hcmdpbjtcbiAgICB9XG4gICAgYWN0b3Iud2lkdGggPSBhY3Rvci53aWR0aCB8fCBjb25mLndpZHRoO1xuICAgIGFjdG9yLmhlaWdodCA9IGNvbW1vbi5nZXRNYXgoYWN0b3IuaGVpZ2h0IHx8IGNvbmYuaGVpZ2h0LCBjb25mLmhlaWdodCk7XG4gICAgYWN0b3IubWFyZ2luID0gYWN0b3IubWFyZ2luIHx8IGNvbmYuYWN0b3JNYXJnaW47XG4gICAgYWN0b3IueCA9IHByZXZXaWR0aCArIHByZXZNYXJnaW47XG4gICAgYWN0b3IueSA9IGJvdW5kcy5nZXRWZXJ0aWNhbFBvcygpO1xuICAgIGNvbnN0IGhlaWdodCA9IHN2Z0RyYXcuZHJhd0FjdG9yKGRpYWdyYW0yLCBhY3RvciwgY29uZiwgaXNGb290ZXIpO1xuICAgIG1heEhlaWdodCA9IGNvbW1vbi5nZXRNYXgobWF4SGVpZ2h0LCBoZWlnaHQpO1xuICAgIGJvdW5kcy5pbnNlcnQoYWN0b3IueCwgdmVydGljYWxQb3MsIGFjdG9yLnggKyBhY3Rvci53aWR0aCwgYWN0b3IuaGVpZ2h0KTtcbiAgICBwcmV2V2lkdGggKz0gYWN0b3Iud2lkdGggKyBwcmV2TWFyZ2luO1xuICAgIGlmIChhY3Rvci5ib3gpIHtcbiAgICAgIGFjdG9yLmJveC53aWR0aCA9IHByZXZXaWR0aCArIGJveC5tYXJnaW4gLSBhY3Rvci5ib3gueDtcbiAgICB9XG4gICAgcHJldk1hcmdpbiA9IGFjdG9yLm1hcmdpbjtcbiAgICBwcmV2Qm94ID0gYWN0b3IuYm94O1xuICAgIGJvdW5kcy5tb2RlbHMuYWRkQWN0b3IoYWN0b3IpO1xuICB9XG4gIGlmIChwcmV2Qm94ICYmICFpc0Zvb3Rlcikge1xuICAgIGJvdW5kcy5tb2RlbHMuYWRkQm94KHByZXZCb3gpO1xuICB9XG4gIGJvdW5kcy5idW1wVmVydGljYWxQb3MobWF4SGVpZ2h0KTtcbn07XG5jb25zdCBkcmF3QWN0b3JzUG9wdXAgPSBmdW5jdGlvbihkaWFncmFtMiwgYWN0b3JzMiwgYWN0b3JLZXlzLCBkb2MpIHtcbiAgbGV0IG1heEhlaWdodCA9IDA7XG4gIGxldCBtYXhXaWR0aCA9IDA7XG4gIGZvciAoY29uc3QgYWN0b3JLZXkgb2YgYWN0b3JLZXlzKSB7XG4gICAgY29uc3QgYWN0b3IgPSBhY3RvcnMyW2FjdG9yS2V5XTtcbiAgICBjb25zdCBtaW5NZW51V2lkdGggPSBnZXRSZXF1aXJlZFBvcHVwV2lkdGgoYWN0b3IpO1xuICAgIGNvbnN0IG1lbnVEaW1lbnNpb25zID0gc3ZnRHJhdy5kcmF3UG9wdXAoXG4gICAgICBkaWFncmFtMixcbiAgICAgIGFjdG9yLFxuICAgICAgbWluTWVudVdpZHRoLFxuICAgICAgY29uZixcbiAgICAgIGNvbmYuZm9yY2VNZW51cyxcbiAgICAgIGRvY1xuICAgICk7XG4gICAgaWYgKG1lbnVEaW1lbnNpb25zLmhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgbWF4SGVpZ2h0ID0gbWVudURpbWVuc2lvbnMuaGVpZ2h0O1xuICAgIH1cbiAgICBpZiAobWVudURpbWVuc2lvbnMud2lkdGggKyBhY3Rvci54ID4gbWF4V2lkdGgpIHtcbiAgICAgIG1heFdpZHRoID0gbWVudURpbWVuc2lvbnMud2lkdGggKyBhY3Rvci54O1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBtYXhIZWlnaHQsIG1heFdpZHRoIH07XG59O1xuY29uc3Qgc2V0Q29uZiA9IGZ1bmN0aW9uKGNuZikge1xuICBhc3NpZ25XaXRoRGVwdGgoY29uZiwgY25mKTtcbiAgaWYgKGNuZi5mb250RmFtaWx5KSB7XG4gICAgY29uZi5hY3RvckZvbnRGYW1pbHkgPSBjb25mLm5vdGVGb250RmFtaWx5ID0gY29uZi5tZXNzYWdlRm9udEZhbWlseSA9IGNuZi5mb250RmFtaWx5O1xuICB9XG4gIGlmIChjbmYuZm9udFNpemUpIHtcbiAgICBjb25mLmFjdG9yRm9udFNpemUgPSBjb25mLm5vdGVGb250U2l6ZSA9IGNvbmYubWVzc2FnZUZvbnRTaXplID0gY25mLmZvbnRTaXplO1xuICB9XG4gIGlmIChjbmYuZm9udFdlaWdodCkge1xuICAgIGNvbmYuYWN0b3JGb250V2VpZ2h0ID0gY29uZi5ub3RlRm9udFdlaWdodCA9IGNvbmYubWVzc2FnZUZvbnRXZWlnaHQgPSBjbmYuZm9udFdlaWdodDtcbiAgfVxufTtcbmNvbnN0IGFjdG9yQWN0aXZhdGlvbnMgPSBmdW5jdGlvbihhY3Rvcikge1xuICByZXR1cm4gYm91bmRzLmFjdGl2YXRpb25zLmZpbHRlcihmdW5jdGlvbihhY3RpdmF0aW9uKSB7XG4gICAgcmV0dXJuIGFjdGl2YXRpb24uYWN0b3IgPT09IGFjdG9yO1xuICB9KTtcbn07XG5jb25zdCBhY3RpdmF0aW9uQm91bmRzID0gZnVuY3Rpb24oYWN0b3IsIGFjdG9yczIpIHtcbiAgY29uc3QgYWN0b3JPYmogPSBhY3RvcnMyW2FjdG9yXTtcbiAgY29uc3QgYWN0aXZhdGlvbnMgPSBhY3RvckFjdGl2YXRpb25zKGFjdG9yKTtcbiAgY29uc3QgbGVmdCA9IGFjdGl2YXRpb25zLnJlZHVjZShmdW5jdGlvbihhY2MsIGFjdGl2YXRpb24pIHtcbiAgICByZXR1cm4gY29tbW9uLmdldE1pbihhY2MsIGFjdGl2YXRpb24uc3RhcnR4KTtcbiAgfSwgYWN0b3JPYmoueCArIGFjdG9yT2JqLndpZHRoIC8gMik7XG4gIGNvbnN0IHJpZ2h0ID0gYWN0aXZhdGlvbnMucmVkdWNlKGZ1bmN0aW9uKGFjYywgYWN0aXZhdGlvbikge1xuICAgIHJldHVybiBjb21tb24uZ2V0TWF4KGFjYywgYWN0aXZhdGlvbi5zdG9weCk7XG4gIH0sIGFjdG9yT2JqLnggKyBhY3Rvck9iai53aWR0aCAvIDIpO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XTtcbn07XG5mdW5jdGlvbiBhZGp1c3RMb29wSGVpZ2h0Rm9yV3JhcChsb29wV2lkdGhzLCBtc2csIHByZU1hcmdpbiwgcG9zdE1hcmdpbiwgYWRkTG9vcEZuKSB7XG4gIGJvdW5kcy5idW1wVmVydGljYWxQb3MocHJlTWFyZ2luKTtcbiAgbGV0IGhlaWdodEFkanVzdCA9IHBvc3RNYXJnaW47XG4gIGlmIChtc2cuaWQgJiYgbXNnLm1lc3NhZ2UgJiYgbG9vcFdpZHRoc1ttc2cuaWRdKSB7XG4gICAgY29uc3QgbG9vcFdpZHRoID0gbG9vcFdpZHRoc1ttc2cuaWRdLndpZHRoO1xuICAgIGNvbnN0IHRleHRDb25mID0gbWVzc2FnZUZvbnQoY29uZik7XG4gICAgbXNnLm1lc3NhZ2UgPSB1dGlscy53cmFwTGFiZWwoYFske21zZy5tZXNzYWdlfV1gLCBsb29wV2lkdGggLSAyICogY29uZi53cmFwUGFkZGluZywgdGV4dENvbmYpO1xuICAgIG1zZy53aWR0aCA9IGxvb3BXaWR0aDtcbiAgICBtc2cud3JhcCA9IHRydWU7XG4gICAgY29uc3QgdGV4dERpbXMgPSB1dGlscy5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhtc2cubWVzc2FnZSwgdGV4dENvbmYpO1xuICAgIGNvbnN0IHRvdGFsT2Zmc2V0ID0gY29tbW9uLmdldE1heCh0ZXh0RGltcy5oZWlnaHQsIGNvbmYubGFiZWxCb3hIZWlnaHQpO1xuICAgIGhlaWdodEFkanVzdCA9IHBvc3RNYXJnaW4gKyB0b3RhbE9mZnNldDtcbiAgICBsb2cuZGVidWcoYCR7dG90YWxPZmZzZXR9IC0gJHttc2cubWVzc2FnZX1gKTtcbiAgfVxuICBhZGRMb29wRm4obXNnKTtcbiAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhoZWlnaHRBZGp1c3QpO1xufVxuY29uc3QgZHJhdyA9IGZ1bmN0aW9uKF90ZXh0LCBpZCwgX3ZlcnNpb24sIGRpYWdPYmopIHtcbiAgY29uc3QgeyBzZWN1cml0eUxldmVsLCBzZXF1ZW5jZSB9ID0gZ2V0Q29uZmlnKCk7XG4gIGNvbmYgPSBzZXF1ZW5jZTtcbiAgZGlhZ09iai5kYi5jbGVhcigpO1xuICBkaWFnT2JqLnBhcnNlci5wYXJzZShfdGV4dCk7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IGRvYyA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQgOiBkb2N1bWVudDtcbiAgYm91bmRzLmluaXQoKTtcbiAgbG9nLmRlYnVnKGRpYWdPYmouZGIpO1xuICBjb25zdCBkaWFncmFtMiA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gcm9vdC5zZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCkgOiBzZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIGNvbnN0IGFjdG9yczIgPSBkaWFnT2JqLmRiLmdldEFjdG9ycygpO1xuICBjb25zdCBib3hlczIgPSBkaWFnT2JqLmRiLmdldEJveGVzKCk7XG4gIGNvbnN0IGFjdG9yS2V5cyA9IGRpYWdPYmouZGIuZ2V0QWN0b3JLZXlzKCk7XG4gIGNvbnN0IG1lc3NhZ2VzMiA9IGRpYWdPYmouZGIuZ2V0TWVzc2FnZXMoKTtcbiAgY29uc3QgdGl0bGUgPSBkaWFnT2JqLmRiLmdldERpYWdyYW1UaXRsZSgpO1xuICBjb25zdCBoYXNCb3hlcyA9IGRpYWdPYmouZGIuaGFzQXRMZWFzdE9uZUJveCgpO1xuICBjb25zdCBoYXNCb3hUaXRsZXMgPSBkaWFnT2JqLmRiLmhhc0F0TGVhc3RPbmVCb3hXaXRoVGl0bGUoKTtcbiAgY29uc3QgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3IgPSBnZXRNYXhNZXNzYWdlV2lkdGhQZXJBY3RvcihhY3RvcnMyLCBtZXNzYWdlczIsIGRpYWdPYmopO1xuICBjb25mLmhlaWdodCA9IGNhbGN1bGF0ZUFjdG9yTWFyZ2lucyhhY3RvcnMyLCBtYXhNZXNzYWdlV2lkdGhQZXJBY3RvciwgYm94ZXMyKTtcbiAgc3ZnRHJhdy5pbnNlcnRDb21wdXRlckljb24oZGlhZ3JhbTIpO1xuICBzdmdEcmF3Lmluc2VydERhdGFiYXNlSWNvbihkaWFncmFtMik7XG4gIHN2Z0RyYXcuaW5zZXJ0Q2xvY2tJY29uKGRpYWdyYW0yKTtcbiAgaWYgKGhhc0JveGVzKSB7XG4gICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhjb25mLmJveE1hcmdpbik7XG4gICAgaWYgKGhhc0JveFRpdGxlcykge1xuICAgICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhib3hlczJbMF0udGV4dE1heEhlaWdodCk7XG4gICAgfVxuICB9XG4gIGRyYXdBY3RvcnMoZGlhZ3JhbTIsIGFjdG9yczIsIGFjdG9yS2V5cywgMCwgY29uZiwgbWVzc2FnZXMyLCBmYWxzZSk7XG4gIGNvbnN0IGxvb3BXaWR0aHMgPSBjYWxjdWxhdGVMb29wQm91bmRzKG1lc3NhZ2VzMiwgYWN0b3JzMiwgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3IsIGRpYWdPYmopO1xuICBzdmdEcmF3Lmluc2VydEFycm93SGVhZChkaWFncmFtMik7XG4gIHN2Z0RyYXcuaW5zZXJ0QXJyb3dDcm9zc0hlYWQoZGlhZ3JhbTIpO1xuICBzdmdEcmF3Lmluc2VydEFycm93RmlsbGVkSGVhZChkaWFncmFtMik7XG4gIHN2Z0RyYXcuaW5zZXJ0U2VxdWVuY2VOdW1iZXIoZGlhZ3JhbTIpO1xuICBmdW5jdGlvbiBhY3RpdmVFbmQobXNnLCB2ZXJ0aWNhbFBvcykge1xuICAgIGNvbnN0IGFjdGl2YXRpb25EYXRhID0gYm91bmRzLmVuZEFjdGl2YXRpb24obXNnKTtcbiAgICBpZiAoYWN0aXZhdGlvbkRhdGEuc3RhcnR5ICsgMTggPiB2ZXJ0aWNhbFBvcykge1xuICAgICAgYWN0aXZhdGlvbkRhdGEuc3RhcnR5ID0gdmVydGljYWxQb3MgLSA2O1xuICAgICAgdmVydGljYWxQb3MgKz0gMTI7XG4gICAgfVxuICAgIHN2Z0RyYXcuZHJhd0FjdGl2YXRpb24oXG4gICAgICBkaWFncmFtMixcbiAgICAgIGFjdGl2YXRpb25EYXRhLFxuICAgICAgdmVydGljYWxQb3MsXG4gICAgICBjb25mLFxuICAgICAgYWN0b3JBY3RpdmF0aW9ucyhtc2cuZnJvbS5hY3RvcikubGVuZ3RoXG4gICAgKTtcbiAgICBib3VuZHMuaW5zZXJ0KGFjdGl2YXRpb25EYXRhLnN0YXJ0eCwgdmVydGljYWxQb3MgLSAxMCwgYWN0aXZhdGlvbkRhdGEuc3RvcHgsIHZlcnRpY2FsUG9zKTtcbiAgfVxuICBsZXQgc2VxdWVuY2VJbmRleCA9IDE7XG4gIGxldCBzZXF1ZW5jZUluZGV4U3RlcCA9IDE7XG4gIGNvbnN0IG1lc3NhZ2VzVG9EcmF3ID0gW107XG4gIG1lc3NhZ2VzMi5mb3JFYWNoKGZ1bmN0aW9uKG1zZykge1xuICAgIGxldCBsb29wTW9kZWwsIG5vdGVNb2RlbCwgbXNnTW9kZWw7XG4gICAgc3dpdGNoIChtc2cudHlwZSkge1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLk5PVEU6XG4gICAgICAgIGJvdW5kcy5yZXNldFZlcnRpY2FsUG9zKCk7XG4gICAgICAgIG5vdGVNb2RlbCA9IG1zZy5ub3RlTW9kZWw7XG4gICAgICAgIGRyYXdOb3RlKGRpYWdyYW0yLCBub3RlTW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5BQ1RJVkVfU1RBUlQ6XG4gICAgICAgIGJvdW5kcy5uZXdBY3RpdmF0aW9uKG1zZywgZGlhZ3JhbTIsIGFjdG9yczIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5BQ1RJVkVfRU5EOlxuICAgICAgICBhY3RpdmVFbmQobXNnLCBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkxPT1BfU1RBUlQ6XG4gICAgICAgIGFkanVzdExvb3BIZWlnaHRGb3JXcmFwKFxuICAgICAgICAgIGxvb3BXaWR0aHMsXG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luICsgY29uZi5ib3hUZXh0TWFyZ2luLFxuICAgICAgICAgIChtZXNzYWdlKSA9PiBib3VuZHMubmV3TG9vcChtZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5MT09QX0VORDpcbiAgICAgICAgbG9vcE1vZGVsID0gYm91bmRzLmVuZExvb3AoKTtcbiAgICAgICAgc3ZnRHJhdy5kcmF3TG9vcChkaWFncmFtMiwgbG9vcE1vZGVsLCBcImxvb3BcIiwgY29uZik7XG4gICAgICAgIGJvdW5kcy5idW1wVmVydGljYWxQb3MobG9vcE1vZGVsLnN0b3B5IC0gYm91bmRzLmdldFZlcnRpY2FsUG9zKCkpO1xuICAgICAgICBib3VuZHMubW9kZWxzLmFkZExvb3AobG9vcE1vZGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuUkVDVF9TVEFSVDpcbiAgICAgICAgYWRqdXN0TG9vcEhlaWdodEZvcldyYXAoXG4gICAgICAgICAgbG9vcFdpZHRocyxcbiAgICAgICAgICBtc2csXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4sXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4sXG4gICAgICAgICAgKG1lc3NhZ2UpID0+IGJvdW5kcy5uZXdMb29wKHZvaWQgMCwgbWVzc2FnZS5tZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5SRUNUX0VORDpcbiAgICAgICAgbG9vcE1vZGVsID0gYm91bmRzLmVuZExvb3AoKTtcbiAgICAgICAgc3ZnRHJhdy5kcmF3QmFja2dyb3VuZFJlY3QoZGlhZ3JhbTIsIGxvb3BNb2RlbCk7XG4gICAgICAgIGJvdW5kcy5tb2RlbHMuYWRkTG9vcChsb29wTW9kZWwpO1xuICAgICAgICBib3VuZHMuYnVtcFZlcnRpY2FsUG9zKGxvb3BNb2RlbC5zdG9weSAtIGJvdW5kcy5nZXRWZXJ0aWNhbFBvcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuT1BUX1NUQVJUOlxuICAgICAgICBhZGp1c3RMb29wSGVpZ2h0Rm9yV3JhcChcbiAgICAgICAgICBsb29wV2lkdGhzLFxuICAgICAgICAgIG1zZyxcbiAgICAgICAgICBjb25mLmJveE1hcmdpbixcbiAgICAgICAgICBjb25mLmJveE1hcmdpbiArIGNvbmYuYm94VGV4dE1hcmdpbixcbiAgICAgICAgICAobWVzc2FnZSkgPT4gYm91bmRzLm5ld0xvb3AobWVzc2FnZSlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuT1BUX0VORDpcbiAgICAgICAgbG9vcE1vZGVsID0gYm91bmRzLmVuZExvb3AoKTtcbiAgICAgICAgc3ZnRHJhdy5kcmF3TG9vcChkaWFncmFtMiwgbG9vcE1vZGVsLCBcIm9wdFwiLCBjb25mKTtcbiAgICAgICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhsb29wTW9kZWwuc3RvcHkgLSBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSk7XG4gICAgICAgIGJvdW5kcy5tb2RlbHMuYWRkTG9vcChsb29wTW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5BTFRfU1RBUlQ6XG4gICAgICAgIGFkanVzdExvb3BIZWlnaHRGb3JXcmFwKFxuICAgICAgICAgIGxvb3BXaWR0aHMsXG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luICsgY29uZi5ib3hUZXh0TWFyZ2luLFxuICAgICAgICAgIChtZXNzYWdlKSA9PiBib3VuZHMubmV3TG9vcChtZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5BTFRfRUxTRTpcbiAgICAgICAgYWRqdXN0TG9vcEhlaWdodEZvcldyYXAoXG4gICAgICAgICAgbG9vcFdpZHRocyxcbiAgICAgICAgICBtc2csXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4gKyBjb25mLmJveFRleHRNYXJnaW4sXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4sXG4gICAgICAgICAgKG1lc3NhZ2UpID0+IGJvdW5kcy5hZGRTZWN0aW9uVG9Mb29wKG1lc3NhZ2UpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkFMVF9FTkQ6XG4gICAgICAgIGxvb3BNb2RlbCA9IGJvdW5kcy5lbmRMb29wKCk7XG4gICAgICAgIHN2Z0RyYXcuZHJhd0xvb3AoZGlhZ3JhbTIsIGxvb3BNb2RlbCwgXCJhbHRcIiwgY29uZik7XG4gICAgICAgIGJvdW5kcy5idW1wVmVydGljYWxQb3MobG9vcE1vZGVsLnN0b3B5IC0gYm91bmRzLmdldFZlcnRpY2FsUG9zKCkpO1xuICAgICAgICBib3VuZHMubW9kZWxzLmFkZExvb3AobG9vcE1vZGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuUEFSX1NUQVJUOlxuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLlBBUl9PVkVSX1NUQVJUOlxuICAgICAgICBhZGp1c3RMb29wSGVpZ2h0Rm9yV3JhcChcbiAgICAgICAgICBsb29wV2lkdGhzLFxuICAgICAgICAgIG1zZyxcbiAgICAgICAgICBjb25mLmJveE1hcmdpbixcbiAgICAgICAgICBjb25mLmJveE1hcmdpbiArIGNvbmYuYm94VGV4dE1hcmdpbixcbiAgICAgICAgICAobWVzc2FnZSkgPT4gYm91bmRzLm5ld0xvb3AobWVzc2FnZSlcbiAgICAgICAgKTtcbiAgICAgICAgYm91bmRzLnNhdmVWZXJ0aWNhbFBvcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5QQVJfQU5EOlxuICAgICAgICBhZGp1c3RMb29wSGVpZ2h0Rm9yV3JhcChcbiAgICAgICAgICBsb29wV2lkdGhzLFxuICAgICAgICAgIG1zZyxcbiAgICAgICAgICBjb25mLmJveE1hcmdpbiArIGNvbmYuYm94VGV4dE1hcmdpbixcbiAgICAgICAgICBjb25mLmJveE1hcmdpbixcbiAgICAgICAgICAobWVzc2FnZSkgPT4gYm91bmRzLmFkZFNlY3Rpb25Ub0xvb3AobWVzc2FnZSlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuUEFSX0VORDpcbiAgICAgICAgbG9vcE1vZGVsID0gYm91bmRzLmVuZExvb3AoKTtcbiAgICAgICAgc3ZnRHJhdy5kcmF3TG9vcChkaWFncmFtMiwgbG9vcE1vZGVsLCBcInBhclwiLCBjb25mKTtcbiAgICAgICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhsb29wTW9kZWwuc3RvcHkgLSBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSk7XG4gICAgICAgIGJvdW5kcy5tb2RlbHMuYWRkTG9vcChsb29wTW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5BVVRPTlVNQkVSOlxuICAgICAgICBzZXF1ZW5jZUluZGV4ID0gbXNnLm1lc3NhZ2Uuc3RhcnQgfHwgc2VxdWVuY2VJbmRleDtcbiAgICAgICAgc2VxdWVuY2VJbmRleFN0ZXAgPSBtc2cubWVzc2FnZS5zdGVwIHx8IHNlcXVlbmNlSW5kZXhTdGVwO1xuICAgICAgICBpZiAobXNnLm1lc3NhZ2UudmlzaWJsZSkge1xuICAgICAgICAgIGRpYWdPYmouZGIuZW5hYmxlU2VxdWVuY2VOdW1iZXJzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlhZ09iai5kYi5kaXNhYmxlU2VxdWVuY2VOdW1iZXJzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQ1JJVElDQUxfU1RBUlQ6XG4gICAgICAgIGFkanVzdExvb3BIZWlnaHRGb3JXcmFwKFxuICAgICAgICAgIGxvb3BXaWR0aHMsXG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luICsgY29uZi5ib3hUZXh0TWFyZ2luLFxuICAgICAgICAgIChtZXNzYWdlKSA9PiBib3VuZHMubmV3TG9vcChtZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5DUklUSUNBTF9PUFRJT046XG4gICAgICAgIGFkanVzdExvb3BIZWlnaHRGb3JXcmFwKFxuICAgICAgICAgIGxvb3BXaWR0aHMsXG4gICAgICAgICAgbXNnLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luICsgY29uZi5ib3hUZXh0TWFyZ2luLFxuICAgICAgICAgIGNvbmYuYm94TWFyZ2luLFxuICAgICAgICAgIChtZXNzYWdlKSA9PiBib3VuZHMuYWRkU2VjdGlvblRvTG9vcChtZXNzYWdlKVxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5DUklUSUNBTF9FTkQ6XG4gICAgICAgIGxvb3BNb2RlbCA9IGJvdW5kcy5lbmRMb29wKCk7XG4gICAgICAgIHN2Z0RyYXcuZHJhd0xvb3AoZGlhZ3JhbTIsIGxvb3BNb2RlbCwgXCJjcml0aWNhbFwiLCBjb25mKTtcbiAgICAgICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhsb29wTW9kZWwuc3RvcHkgLSBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSk7XG4gICAgICAgIGJvdW5kcy5tb2RlbHMuYWRkTG9vcChsb29wTW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5CUkVBS19TVEFSVDpcbiAgICAgICAgYWRqdXN0TG9vcEhlaWdodEZvcldyYXAoXG4gICAgICAgICAgbG9vcFdpZHRocyxcbiAgICAgICAgICBtc2csXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4sXG4gICAgICAgICAgY29uZi5ib3hNYXJnaW4gKyBjb25mLmJveFRleHRNYXJnaW4sXG4gICAgICAgICAgKG1lc3NhZ2UpID0+IGJvdW5kcy5uZXdMb29wKG1lc3NhZ2UpXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkJSRUFLX0VORDpcbiAgICAgICAgbG9vcE1vZGVsID0gYm91bmRzLmVuZExvb3AoKTtcbiAgICAgICAgc3ZnRHJhdy5kcmF3TG9vcChkaWFncmFtMiwgbG9vcE1vZGVsLCBcImJyZWFrXCIsIGNvbmYpO1xuICAgICAgICBib3VuZHMuYnVtcFZlcnRpY2FsUG9zKGxvb3BNb2RlbC5zdG9weSAtIGJvdW5kcy5nZXRWZXJ0aWNhbFBvcygpKTtcbiAgICAgICAgYm91bmRzLm1vZGVscy5hZGRMb29wKGxvb3BNb2RlbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBib3VuZHMucmVzZXRWZXJ0aWNhbFBvcygpO1xuICAgICAgICAgIG1zZ01vZGVsID0gbXNnLm1zZ01vZGVsO1xuICAgICAgICAgIG1zZ01vZGVsLnN0YXJ0eSA9IGJvdW5kcy5nZXRWZXJ0aWNhbFBvcygpO1xuICAgICAgICAgIG1zZ01vZGVsLnNlcXVlbmNlSW5kZXggPSBzZXF1ZW5jZUluZGV4O1xuICAgICAgICAgIG1zZ01vZGVsLnNlcXVlbmNlVmlzaWJsZSA9IGRpYWdPYmouZGIuc2hvd1NlcXVlbmNlTnVtYmVycygpO1xuICAgICAgICAgIGNvbnN0IGxpbmVTdGFydFkgPSBib3VuZE1lc3NhZ2UoZGlhZ3JhbTIsIG1zZ01vZGVsKTtcbiAgICAgICAgICBtZXNzYWdlc1RvRHJhdy5wdXNoKHsgbWVzc2FnZU1vZGVsOiBtc2dNb2RlbCwgbGluZVN0YXJ0WSB9KTtcbiAgICAgICAgICBib3VuZHMubW9kZWxzLmFkZE1lc3NhZ2UobXNnTW9kZWwpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFwiZXJyb3Igd2hpbGUgZHJhd2luZyBtZXNzYWdlXCIsIGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChbXG4gICAgICBkaWFnT2JqLmRiLkxJTkVUWVBFLlNPTElEX09QRU4sXG4gICAgICBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRF9PUEVOLFxuICAgICAgZGlhZ09iai5kYi5MSU5FVFlQRS5TT0xJRCxcbiAgICAgIGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVELFxuICAgICAgZGlhZ09iai5kYi5MSU5FVFlQRS5TT0xJRF9DUk9TUyxcbiAgICAgIGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEX0NST1NTLFxuICAgICAgZGlhZ09iai5kYi5MSU5FVFlQRS5TT0xJRF9QT0lOVCxcbiAgICAgIGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEX1BPSU5UXG4gICAgXS5pbmNsdWRlcyhtc2cudHlwZSkpIHtcbiAgICAgIHNlcXVlbmNlSW5kZXggPSBzZXF1ZW5jZUluZGV4ICsgc2VxdWVuY2VJbmRleFN0ZXA7XG4gICAgfVxuICB9KTtcbiAgbWVzc2FnZXNUb0RyYXcuZm9yRWFjaCgoZSkgPT4gZHJhd01lc3NhZ2UoZGlhZ3JhbTIsIGUubWVzc2FnZU1vZGVsLCBlLmxpbmVTdGFydFksIGRpYWdPYmopKTtcbiAgaWYgKGNvbmYubWlycm9yQWN0b3JzKSB7XG4gICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhjb25mLmJveE1hcmdpbiAqIDIpO1xuICAgIGRyYXdBY3RvcnMoZGlhZ3JhbTIsIGFjdG9yczIsIGFjdG9yS2V5cywgYm91bmRzLmdldFZlcnRpY2FsUG9zKCksIGNvbmYsIG1lc3NhZ2VzMiwgdHJ1ZSk7XG4gICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhjb25mLmJveE1hcmdpbik7XG4gICAgZml4TGlmZUxpbmVIZWlnaHRzKGRpYWdyYW0yLCBib3VuZHMuZ2V0VmVydGljYWxQb3MoKSk7XG4gIH1cbiAgYm91bmRzLm1vZGVscy5ib3hlcy5mb3JFYWNoKGZ1bmN0aW9uKGJveDIpIHtcbiAgICBib3gyLmhlaWdodCA9IGJvdW5kcy5nZXRWZXJ0aWNhbFBvcygpIC0gYm94Mi55O1xuICAgIGJvdW5kcy5pbnNlcnQoYm94Mi54LCBib3gyLnksIGJveDIueCArIGJveDIud2lkdGgsIGJveDIuaGVpZ2h0KTtcbiAgICBib3gyLnN0YXJ0eCA9IGJveDIueDtcbiAgICBib3gyLnN0YXJ0eSA9IGJveDIueTtcbiAgICBib3gyLnN0b3B4ID0gYm94Mi5zdGFydHggKyBib3gyLndpZHRoO1xuICAgIGJveDIuc3RvcHkgPSBib3gyLnN0YXJ0eSArIGJveDIuaGVpZ2h0O1xuICAgIGJveDIuc3Ryb2tlID0gXCJyZ2IoMCwwLDAsIDAuNSlcIjtcbiAgICBzdmdEcmF3LmRyYXdCb3goZGlhZ3JhbTIsIGJveDIsIGNvbmYpO1xuICB9KTtcbiAgaWYgKGhhc0JveGVzKSB7XG4gICAgYm91bmRzLmJ1bXBWZXJ0aWNhbFBvcyhjb25mLmJveE1hcmdpbik7XG4gIH1cbiAgY29uc3QgcmVxdWlyZWRCb3hTaXplID0gZHJhd0FjdG9yc1BvcHVwKGRpYWdyYW0yLCBhY3RvcnMyLCBhY3RvcktleXMsIGRvYyk7XG4gIGNvbnN0IHsgYm91bmRzOiBib3ggfSA9IGJvdW5kcy5nZXRCb3VuZHMoKTtcbiAgbG9nLmRlYnVnKFwiRm9yIGxpbmUgaGVpZ2h0IGZpeCBRdWVyeWluZzogI1wiICsgaWQgKyBcIiAuYWN0b3ItbGluZVwiKTtcbiAgY29uc3QgYWN0b3JMaW5lcyA9IHNlbGVjdEFsbChcIiNcIiArIGlkICsgXCIgLmFjdG9yLWxpbmVcIik7XG4gIGFjdG9yTGluZXMuYXR0cihcInkyXCIsIGJveC5zdG9weSk7XG4gIGxldCBib3hIZWlnaHQgPSBib3guc3RvcHkgLSBib3guc3RhcnR5O1xuICBpZiAoYm94SGVpZ2h0IDwgcmVxdWlyZWRCb3hTaXplLm1heEhlaWdodCkge1xuICAgIGJveEhlaWdodCA9IHJlcXVpcmVkQm94U2l6ZS5tYXhIZWlnaHQ7XG4gIH1cbiAgbGV0IGhlaWdodCA9IGJveEhlaWdodCArIDIgKiBjb25mLmRpYWdyYW1NYXJnaW5ZO1xuICBpZiAoY29uZi5taXJyb3JBY3RvcnMpIHtcbiAgICBoZWlnaHQgPSBoZWlnaHQgLSBjb25mLmJveE1hcmdpbiArIGNvbmYuYm90dG9tTWFyZ2luQWRqO1xuICB9XG4gIGxldCBib3hXaWR0aCA9IGJveC5zdG9weCAtIGJveC5zdGFydHg7XG4gIGlmIChib3hXaWR0aCA8IHJlcXVpcmVkQm94U2l6ZS5tYXhXaWR0aCkge1xuICAgIGJveFdpZHRoID0gcmVxdWlyZWRCb3hTaXplLm1heFdpZHRoO1xuICB9XG4gIGNvbnN0IHdpZHRoID0gYm94V2lkdGggKyAyICogY29uZi5kaWFncmFtTWFyZ2luWDtcbiAgaWYgKHRpdGxlKSB7XG4gICAgZGlhZ3JhbTIuYXBwZW5kKFwidGV4dFwiKS50ZXh0KHRpdGxlKS5hdHRyKFwieFwiLCAoYm94LnN0b3B4IC0gYm94LnN0YXJ0eCkgLyAyIC0gMiAqIGNvbmYuZGlhZ3JhbU1hcmdpblgpLmF0dHIoXCJ5XCIsIC0yNSk7XG4gIH1cbiAgY29uZmlndXJlU3ZnU2l6ZShkaWFncmFtMiwgaGVpZ2h0LCB3aWR0aCwgY29uZi51c2VNYXhXaWR0aCk7XG4gIGNvbnN0IGV4dHJhVmVydEZvclRpdGxlID0gdGl0bGUgPyA0MCA6IDA7XG4gIGRpYWdyYW0yLmF0dHIoXG4gICAgXCJ2aWV3Qm94XCIsXG4gICAgYm94LnN0YXJ0eCAtIGNvbmYuZGlhZ3JhbU1hcmdpblggKyBcIiAtXCIgKyAoY29uZi5kaWFncmFtTWFyZ2luWSArIGV4dHJhVmVydEZvclRpdGxlKSArIFwiIFwiICsgd2lkdGggKyBcIiBcIiArIChoZWlnaHQgKyBleHRyYVZlcnRGb3JUaXRsZSlcbiAgKTtcbiAgbG9nLmRlYnVnKGBtb2RlbHM6YCwgYm91bmRzLm1vZGVscyk7XG59O1xuZnVuY3Rpb24gZ2V0TWF4TWVzc2FnZVdpZHRoUGVyQWN0b3IoYWN0b3JzMiwgbWVzc2FnZXMyLCBkaWFnT2JqKSB7XG4gIGNvbnN0IG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yID0ge307XG4gIG1lc3NhZ2VzMi5mb3JFYWNoKGZ1bmN0aW9uKG1zZykge1xuICAgIGlmIChhY3RvcnMyW21zZy50b10gJiYgYWN0b3JzMlttc2cuZnJvbV0pIHtcbiAgICAgIGNvbnN0IGFjdG9yID0gYWN0b3JzMlttc2cudG9dO1xuICAgICAgaWYgKG1zZy5wbGFjZW1lbnQgPT09IGRpYWdPYmouZGIuUExBQ0VNRU5ULkxFRlRPRiAmJiAhYWN0b3IucHJldkFjdG9yKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtc2cucGxhY2VtZW50ID09PSBkaWFnT2JqLmRiLlBMQUNFTUVOVC5SSUdIVE9GICYmICFhY3Rvci5uZXh0QWN0b3IpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNOb3RlID0gbXNnLnBsYWNlbWVudCAhPT0gdm9pZCAwO1xuICAgICAgY29uc3QgaXNNZXNzYWdlID0gIWlzTm90ZTtcbiAgICAgIGNvbnN0IHRleHRGb250ID0gaXNOb3RlID8gbm90ZUZvbnQoY29uZikgOiBtZXNzYWdlRm9udChjb25mKTtcbiAgICAgIGNvbnN0IHdyYXBwZWRNZXNzYWdlID0gbXNnLndyYXAgPyB1dGlscy53cmFwTGFiZWwobXNnLm1lc3NhZ2UsIGNvbmYud2lkdGggLSAyICogY29uZi53cmFwUGFkZGluZywgdGV4dEZvbnQpIDogbXNnLm1lc3NhZ2U7XG4gICAgICBjb25zdCBtZXNzYWdlRGltZW5zaW9ucyA9IHV0aWxzLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHdyYXBwZWRNZXNzYWdlLCB0ZXh0Rm9udCk7XG4gICAgICBjb25zdCBtZXNzYWdlV2lkdGggPSBtZXNzYWdlRGltZW5zaW9ucy53aWR0aCArIDIgKiBjb25mLndyYXBQYWRkaW5nO1xuICAgICAgaWYgKGlzTWVzc2FnZSAmJiBtc2cuZnJvbSA9PT0gYWN0b3IubmV4dEFjdG9yKSB7XG4gICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW21zZy50b10gPSBjb21tb24uZ2V0TWF4KFxuICAgICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW21zZy50b10gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGhcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNZXNzYWdlICYmIG1zZy5mcm9tID09PSBhY3Rvci5wcmV2QWN0b3IpIHtcbiAgICAgICAgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3JbbXNnLmZyb21dID0gY29tbW9uLmdldE1heChcbiAgICAgICAgICBtYXhNZXNzYWdlV2lkdGhQZXJBY3Rvclttc2cuZnJvbV0gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGhcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNNZXNzYWdlICYmIG1zZy5mcm9tID09PSBtc2cudG8pIHtcbiAgICAgICAgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3JbbXNnLmZyb21dID0gY29tbW9uLmdldE1heChcbiAgICAgICAgICBtYXhNZXNzYWdlV2lkdGhQZXJBY3Rvclttc2cuZnJvbV0gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGggLyAyXG4gICAgICAgICk7XG4gICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW21zZy50b10gPSBjb21tb24uZ2V0TWF4KFxuICAgICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW21zZy50b10gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGggLyAyXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG1zZy5wbGFjZW1lbnQgPT09IGRpYWdPYmouZGIuUExBQ0VNRU5ULlJJR0hUT0YpIHtcbiAgICAgICAgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3JbbXNnLmZyb21dID0gY29tbW9uLmdldE1heChcbiAgICAgICAgICBtYXhNZXNzYWdlV2lkdGhQZXJBY3Rvclttc2cuZnJvbV0gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGhcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAobXNnLnBsYWNlbWVudCA9PT0gZGlhZ09iai5kYi5QTEFDRU1FTlQuTEVGVE9GKSB7XG4gICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW2FjdG9yLnByZXZBY3Rvcl0gPSBjb21tb24uZ2V0TWF4KFxuICAgICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW2FjdG9yLnByZXZBY3Rvcl0gfHwgMCxcbiAgICAgICAgICBtZXNzYWdlV2lkdGhcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAobXNnLnBsYWNlbWVudCA9PT0gZGlhZ09iai5kYi5QTEFDRU1FTlQuT1ZFUikge1xuICAgICAgICBpZiAoYWN0b3IucHJldkFjdG9yKSB7XG4gICAgICAgICAgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3JbYWN0b3IucHJldkFjdG9yXSA9IGNvbW1vbi5nZXRNYXgoXG4gICAgICAgICAgICBtYXhNZXNzYWdlV2lkdGhQZXJBY3RvclthY3Rvci5wcmV2QWN0b3JdIHx8IDAsXG4gICAgICAgICAgICBtZXNzYWdlV2lkdGggLyAyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0b3IubmV4dEFjdG9yKSB7XG4gICAgICAgICAgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3JbbXNnLmZyb21dID0gY29tbW9uLmdldE1heChcbiAgICAgICAgICAgIG1heE1lc3NhZ2VXaWR0aFBlckFjdG9yW21zZy5mcm9tXSB8fCAwLFxuICAgICAgICAgICAgbWVzc2FnZVdpZHRoIC8gMlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBsb2cuZGVidWcoXCJtYXhNZXNzYWdlV2lkdGhQZXJBY3RvcjpcIiwgbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3IpO1xuICByZXR1cm4gbWF4TWVzc2FnZVdpZHRoUGVyQWN0b3I7XG59XG5jb25zdCBnZXRSZXF1aXJlZFBvcHVwV2lkdGggPSBmdW5jdGlvbihhY3Rvcikge1xuICBsZXQgcmVxdWlyZWRQb3B1cFdpZHRoID0gMDtcbiAgY29uc3QgdGV4dEZvbnQgPSBhY3RvckZvbnQoY29uZik7XG4gIGZvciAoY29uc3Qga2V5IGluIGFjdG9yLmxpbmtzKSB7XG4gICAgY29uc3QgbGFiZWxEaW1lbnNpb25zID0gdXRpbHMuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoa2V5LCB0ZXh0Rm9udCk7XG4gICAgY29uc3QgbGFiZWxXaWR0aCA9IGxhYmVsRGltZW5zaW9ucy53aWR0aCArIDIgKiBjb25mLndyYXBQYWRkaW5nICsgMiAqIGNvbmYuYm94TWFyZ2luO1xuICAgIGlmIChyZXF1aXJlZFBvcHVwV2lkdGggPCBsYWJlbFdpZHRoKSB7XG4gICAgICByZXF1aXJlZFBvcHVwV2lkdGggPSBsYWJlbFdpZHRoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVxdWlyZWRQb3B1cFdpZHRoO1xufTtcbmZ1bmN0aW9uIGNhbGN1bGF0ZUFjdG9yTWFyZ2lucyhhY3RvcnMyLCBhY3RvclRvTWVzc2FnZVdpZHRoLCBib3hlczIpIHtcbiAgbGV0IG1heEhlaWdodCA9IDA7XG4gIE9iamVjdC5rZXlzKGFjdG9yczIpLmZvckVhY2goKHByb3ApID0+IHtcbiAgICBjb25zdCBhY3RvciA9IGFjdG9yczJbcHJvcF07XG4gICAgaWYgKGFjdG9yLndyYXApIHtcbiAgICAgIGFjdG9yLmRlc2NyaXB0aW9uID0gdXRpbHMud3JhcExhYmVsKFxuICAgICAgICBhY3Rvci5kZXNjcmlwdGlvbixcbiAgICAgICAgY29uZi53aWR0aCAtIDIgKiBjb25mLndyYXBQYWRkaW5nLFxuICAgICAgICBhY3RvckZvbnQoY29uZilcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGFjdERpbXMgPSB1dGlscy5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhhY3Rvci5kZXNjcmlwdGlvbiwgYWN0b3JGb250KGNvbmYpKTtcbiAgICBhY3Rvci53aWR0aCA9IGFjdG9yLndyYXAgPyBjb25mLndpZHRoIDogY29tbW9uLmdldE1heChjb25mLndpZHRoLCBhY3REaW1zLndpZHRoICsgMiAqIGNvbmYud3JhcFBhZGRpbmcpO1xuICAgIGFjdG9yLmhlaWdodCA9IGFjdG9yLndyYXAgPyBjb21tb24uZ2V0TWF4KGFjdERpbXMuaGVpZ2h0LCBjb25mLmhlaWdodCkgOiBjb25mLmhlaWdodDtcbiAgICBtYXhIZWlnaHQgPSBjb21tb24uZ2V0TWF4KG1heEhlaWdodCwgYWN0b3IuaGVpZ2h0KTtcbiAgfSk7XG4gIGZvciAoY29uc3QgYWN0b3JLZXkgaW4gYWN0b3JUb01lc3NhZ2VXaWR0aCkge1xuICAgIGNvbnN0IGFjdG9yID0gYWN0b3JzMlthY3RvcktleV07XG4gICAgaWYgKCFhY3Rvcikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5leHRBY3RvciA9IGFjdG9yczJbYWN0b3IubmV4dEFjdG9yXTtcbiAgICBpZiAoIW5leHRBY3Rvcikge1xuICAgICAgY29uc3QgbWVzc2FnZVdpZHRoMiA9IGFjdG9yVG9NZXNzYWdlV2lkdGhbYWN0b3JLZXldO1xuICAgICAgY29uc3QgYWN0b3JXaWR0aDIgPSBtZXNzYWdlV2lkdGgyICsgY29uZi5hY3Rvck1hcmdpbiAtIGFjdG9yLndpZHRoIC8gMjtcbiAgICAgIGFjdG9yLm1hcmdpbiA9IGNvbW1vbi5nZXRNYXgoYWN0b3JXaWR0aDIsIGNvbmYuYWN0b3JNYXJnaW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VXaWR0aCA9IGFjdG9yVG9NZXNzYWdlV2lkdGhbYWN0b3JLZXldO1xuICAgIGNvbnN0IGFjdG9yV2lkdGggPSBtZXNzYWdlV2lkdGggKyBjb25mLmFjdG9yTWFyZ2luIC0gYWN0b3Iud2lkdGggLyAyIC0gbmV4dEFjdG9yLndpZHRoIC8gMjtcbiAgICBhY3Rvci5tYXJnaW4gPSBjb21tb24uZ2V0TWF4KGFjdG9yV2lkdGgsIGNvbmYuYWN0b3JNYXJnaW4pO1xuICB9XG4gIGxldCBtYXhCb3hIZWlnaHQgPSAwO1xuICBib3hlczIuZm9yRWFjaCgoYm94KSA9PiB7XG4gICAgY29uc3QgdGV4dEZvbnQgPSBtZXNzYWdlRm9udChjb25mKTtcbiAgICBsZXQgdG90YWxXaWR0aCA9IGJveC5hY3RvcktleXMucmVkdWNlKCh0b3RhbCwgYUtleSkgPT4ge1xuICAgICAgcmV0dXJuIHRvdGFsICs9IGFjdG9yczJbYUtleV0ud2lkdGggKyAoYWN0b3JzMlthS2V5XS5tYXJnaW4gfHwgMCk7XG4gICAgfSwgMCk7XG4gICAgdG90YWxXaWR0aCAtPSAyICogY29uZi5ib3hUZXh0TWFyZ2luO1xuICAgIGlmIChib3gud3JhcCkge1xuICAgICAgYm94Lm5hbWUgPSB1dGlscy53cmFwTGFiZWwoYm94Lm5hbWUsIHRvdGFsV2lkdGggLSAyICogY29uZi53cmFwUGFkZGluZywgdGV4dEZvbnQpO1xuICAgIH1cbiAgICBjb25zdCBib3hNc2dEaW1lbnNpb25zID0gdXRpbHMuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoYm94Lm5hbWUsIHRleHRGb250KTtcbiAgICBtYXhCb3hIZWlnaHQgPSBjb21tb24uZ2V0TWF4KGJveE1zZ0RpbWVuc2lvbnMuaGVpZ2h0LCBtYXhCb3hIZWlnaHQpO1xuICAgIGNvbnN0IG1pbldpZHRoID0gY29tbW9uLmdldE1heCh0b3RhbFdpZHRoLCBib3hNc2dEaW1lbnNpb25zLndpZHRoICsgMiAqIGNvbmYud3JhcFBhZGRpbmcpO1xuICAgIGJveC5tYXJnaW4gPSBjb25mLmJveFRleHRNYXJnaW47XG4gICAgaWYgKHRvdGFsV2lkdGggPCBtaW5XaWR0aCkge1xuICAgICAgY29uc3QgbWlzc2luZyA9IChtaW5XaWR0aCAtIHRvdGFsV2lkdGgpIC8gMjtcbiAgICAgIGJveC5tYXJnaW4gKz0gbWlzc2luZztcbiAgICB9XG4gIH0pO1xuICBib3hlczIuZm9yRWFjaCgoYm94KSA9PiBib3gudGV4dE1heEhlaWdodCA9IG1heEJveEhlaWdodCk7XG4gIHJldHVybiBjb21tb24uZ2V0TWF4KG1heEhlaWdodCwgY29uZi5oZWlnaHQpO1xufVxuY29uc3QgYnVpbGROb3RlTW9kZWwgPSBmdW5jdGlvbihtc2csIGFjdG9yczIsIGRpYWdPYmopIHtcbiAgY29uc3Qgc3RhcnR4ID0gYWN0b3JzMlttc2cuZnJvbV0ueDtcbiAgY29uc3Qgc3RvcHggPSBhY3RvcnMyW21zZy50b10ueDtcbiAgY29uc3Qgc2hvdWxkV3JhcCA9IG1zZy53cmFwICYmIG1zZy5tZXNzYWdlO1xuICBsZXQgdGV4dERpbWVuc2lvbnMgPSB1dGlscy5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhcbiAgICBzaG91bGRXcmFwID8gdXRpbHMud3JhcExhYmVsKG1zZy5tZXNzYWdlLCBjb25mLndpZHRoLCBub3RlRm9udChjb25mKSkgOiBtc2cubWVzc2FnZSxcbiAgICBub3RlRm9udChjb25mKVxuICApO1xuICBjb25zdCBub3RlTW9kZWwgPSB7XG4gICAgd2lkdGg6IHNob3VsZFdyYXAgPyBjb25mLndpZHRoIDogY29tbW9uLmdldE1heChjb25mLndpZHRoLCB0ZXh0RGltZW5zaW9ucy53aWR0aCArIDIgKiBjb25mLm5vdGVNYXJnaW4pLFxuICAgIGhlaWdodDogMCxcbiAgICBzdGFydHg6IGFjdG9yczJbbXNnLmZyb21dLngsXG4gICAgc3RvcHg6IDAsXG4gICAgc3RhcnR5OiAwLFxuICAgIHN0b3B5OiAwLFxuICAgIG1lc3NhZ2U6IG1zZy5tZXNzYWdlXG4gIH07XG4gIGlmIChtc2cucGxhY2VtZW50ID09PSBkaWFnT2JqLmRiLlBMQUNFTUVOVC5SSUdIVE9GKSB7XG4gICAgbm90ZU1vZGVsLndpZHRoID0gc2hvdWxkV3JhcCA/IGNvbW1vbi5nZXRNYXgoY29uZi53aWR0aCwgdGV4dERpbWVuc2lvbnMud2lkdGgpIDogY29tbW9uLmdldE1heChcbiAgICAgIGFjdG9yczJbbXNnLmZyb21dLndpZHRoIC8gMiArIGFjdG9yczJbbXNnLnRvXS53aWR0aCAvIDIsXG4gICAgICB0ZXh0RGltZW5zaW9ucy53aWR0aCArIDIgKiBjb25mLm5vdGVNYXJnaW5cbiAgICApO1xuICAgIG5vdGVNb2RlbC5zdGFydHggPSBzdGFydHggKyAoYWN0b3JzMlttc2cuZnJvbV0ud2lkdGggKyBjb25mLmFjdG9yTWFyZ2luKSAvIDI7XG4gIH0gZWxzZSBpZiAobXNnLnBsYWNlbWVudCA9PT0gZGlhZ09iai5kYi5QTEFDRU1FTlQuTEVGVE9GKSB7XG4gICAgbm90ZU1vZGVsLndpZHRoID0gc2hvdWxkV3JhcCA/IGNvbW1vbi5nZXRNYXgoY29uZi53aWR0aCwgdGV4dERpbWVuc2lvbnMud2lkdGggKyAyICogY29uZi5ub3RlTWFyZ2luKSA6IGNvbW1vbi5nZXRNYXgoXG4gICAgICBhY3RvcnMyW21zZy5mcm9tXS53aWR0aCAvIDIgKyBhY3RvcnMyW21zZy50b10ud2lkdGggLyAyLFxuICAgICAgdGV4dERpbWVuc2lvbnMud2lkdGggKyAyICogY29uZi5ub3RlTWFyZ2luXG4gICAgKTtcbiAgICBub3RlTW9kZWwuc3RhcnR4ID0gc3RhcnR4IC0gbm90ZU1vZGVsLndpZHRoICsgKGFjdG9yczJbbXNnLmZyb21dLndpZHRoIC0gY29uZi5hY3Rvck1hcmdpbikgLyAyO1xuICB9IGVsc2UgaWYgKG1zZy50byA9PT0gbXNnLmZyb20pIHtcbiAgICB0ZXh0RGltZW5zaW9ucyA9IHV0aWxzLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKFxuICAgICAgc2hvdWxkV3JhcCA/IHV0aWxzLndyYXBMYWJlbChcbiAgICAgICAgbXNnLm1lc3NhZ2UsXG4gICAgICAgIGNvbW1vbi5nZXRNYXgoY29uZi53aWR0aCwgYWN0b3JzMlttc2cuZnJvbV0ud2lkdGgpLFxuICAgICAgICBub3RlRm9udChjb25mKVxuICAgICAgKSA6IG1zZy5tZXNzYWdlLFxuICAgICAgbm90ZUZvbnQoY29uZilcbiAgICApO1xuICAgIG5vdGVNb2RlbC53aWR0aCA9IHNob3VsZFdyYXAgPyBjb21tb24uZ2V0TWF4KGNvbmYud2lkdGgsIGFjdG9yczJbbXNnLmZyb21dLndpZHRoKSA6IGNvbW1vbi5nZXRNYXgoXG4gICAgICBhY3RvcnMyW21zZy5mcm9tXS53aWR0aCxcbiAgICAgIGNvbmYud2lkdGgsXG4gICAgICB0ZXh0RGltZW5zaW9ucy53aWR0aCArIDIgKiBjb25mLm5vdGVNYXJnaW5cbiAgICApO1xuICAgIG5vdGVNb2RlbC5zdGFydHggPSBzdGFydHggKyAoYWN0b3JzMlttc2cuZnJvbV0ud2lkdGggLSBub3RlTW9kZWwud2lkdGgpIC8gMjtcbiAgfSBlbHNlIHtcbiAgICBub3RlTW9kZWwud2lkdGggPSBNYXRoLmFicyhzdGFydHggKyBhY3RvcnMyW21zZy5mcm9tXS53aWR0aCAvIDIgLSAoc3RvcHggKyBhY3RvcnMyW21zZy50b10ud2lkdGggLyAyKSkgKyBjb25mLmFjdG9yTWFyZ2luO1xuICAgIG5vdGVNb2RlbC5zdGFydHggPSBzdGFydHggPCBzdG9weCA/IHN0YXJ0eCArIGFjdG9yczJbbXNnLmZyb21dLndpZHRoIC8gMiAtIGNvbmYuYWN0b3JNYXJnaW4gLyAyIDogc3RvcHggKyBhY3RvcnMyW21zZy50b10ud2lkdGggLyAyIC0gY29uZi5hY3Rvck1hcmdpbiAvIDI7XG4gIH1cbiAgaWYgKHNob3VsZFdyYXApIHtcbiAgICBub3RlTW9kZWwubWVzc2FnZSA9IHV0aWxzLndyYXBMYWJlbChcbiAgICAgIG1zZy5tZXNzYWdlLFxuICAgICAgbm90ZU1vZGVsLndpZHRoIC0gMiAqIGNvbmYud3JhcFBhZGRpbmcsXG4gICAgICBub3RlRm9udChjb25mKVxuICAgICk7XG4gIH1cbiAgbG9nLmRlYnVnKFxuICAgIGBOTTpbJHtub3RlTW9kZWwuc3RhcnR4fSwke25vdGVNb2RlbC5zdG9weH0sJHtub3RlTW9kZWwuc3RhcnR5fSwke25vdGVNb2RlbC5zdG9weX06JHtub3RlTW9kZWwud2lkdGh9LCR7bm90ZU1vZGVsLmhlaWdodH09JHttc2cubWVzc2FnZX1dYFxuICApO1xuICByZXR1cm4gbm90ZU1vZGVsO1xufTtcbmNvbnN0IGJ1aWxkTWVzc2FnZU1vZGVsID0gZnVuY3Rpb24obXNnLCBhY3RvcnMyLCBkaWFnT2JqKSB7XG4gIGxldCBwcm9jZXNzID0gZmFsc2U7XG4gIGlmIChbXG4gICAgZGlhZ09iai5kYi5MSU5FVFlQRS5TT0xJRF9PUEVOLFxuICAgIGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEX09QRU4sXG4gICAgZGlhZ09iai5kYi5MSU5FVFlQRS5TT0xJRCxcbiAgICBkaWFnT2JqLmRiLkxJTkVUWVBFLkRPVFRFRCxcbiAgICBkaWFnT2JqLmRiLkxJTkVUWVBFLlNPTElEX0NST1NTLFxuICAgIGRpYWdPYmouZGIuTElORVRZUEUuRE9UVEVEX0NST1NTLFxuICAgIGRpYWdPYmouZGIuTElORVRZUEUuU09MSURfUE9JTlQsXG4gICAgZGlhZ09iai5kYi5MSU5FVFlQRS5ET1RURURfUE9JTlRcbiAgXS5pbmNsdWRlcyhtc2cudHlwZSkpIHtcbiAgICBwcm9jZXNzID0gdHJ1ZTtcbiAgfVxuICBpZiAoIXByb2Nlc3MpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgZnJvbUJvdW5kcyA9IGFjdGl2YXRpb25Cb3VuZHMobXNnLmZyb20sIGFjdG9yczIpO1xuICBjb25zdCB0b0JvdW5kcyA9IGFjdGl2YXRpb25Cb3VuZHMobXNnLnRvLCBhY3RvcnMyKTtcbiAgY29uc3QgZnJvbUlkeCA9IGZyb21Cb3VuZHNbMF0gPD0gdG9Cb3VuZHNbMF0gPyAxIDogMDtcbiAgY29uc3QgdG9JZHggPSBmcm9tQm91bmRzWzBdIDwgdG9Cb3VuZHNbMF0gPyAwIDogMTtcbiAgY29uc3QgYWxsQm91bmRzID0gWy4uLmZyb21Cb3VuZHMsIC4uLnRvQm91bmRzXTtcbiAgY29uc3QgYm91bmRlZFdpZHRoID0gTWF0aC5hYnModG9Cb3VuZHNbdG9JZHhdIC0gZnJvbUJvdW5kc1tmcm9tSWR4XSk7XG4gIGlmIChtc2cud3JhcCAmJiBtc2cubWVzc2FnZSkge1xuICAgIG1zZy5tZXNzYWdlID0gdXRpbHMud3JhcExhYmVsKFxuICAgICAgbXNnLm1lc3NhZ2UsXG4gICAgICBjb21tb24uZ2V0TWF4KGJvdW5kZWRXaWR0aCArIDIgKiBjb25mLndyYXBQYWRkaW5nLCBjb25mLndpZHRoKSxcbiAgICAgIG1lc3NhZ2VGb250KGNvbmYpXG4gICAgKTtcbiAgfVxuICBjb25zdCBtc2dEaW1zID0gdXRpbHMuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMobXNnLm1lc3NhZ2UsIG1lc3NhZ2VGb250KGNvbmYpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY29tbW9uLmdldE1heChcbiAgICAgIG1zZy53cmFwID8gMCA6IG1zZ0RpbXMud2lkdGggKyAyICogY29uZi53cmFwUGFkZGluZyxcbiAgICAgIGJvdW5kZWRXaWR0aCArIDIgKiBjb25mLndyYXBQYWRkaW5nLFxuICAgICAgY29uZi53aWR0aFxuICAgICksXG4gICAgaGVpZ2h0OiAwLFxuICAgIHN0YXJ0eDogZnJvbUJvdW5kc1tmcm9tSWR4XSxcbiAgICBzdG9weDogdG9Cb3VuZHNbdG9JZHhdLFxuICAgIHN0YXJ0eTogMCxcbiAgICBzdG9weTogMCxcbiAgICBtZXNzYWdlOiBtc2cubWVzc2FnZSxcbiAgICB0eXBlOiBtc2cudHlwZSxcbiAgICB3cmFwOiBtc2cud3JhcCxcbiAgICBmcm9tQm91bmRzOiBNYXRoLm1pbi5hcHBseShudWxsLCBhbGxCb3VuZHMpLFxuICAgIHRvQm91bmRzOiBNYXRoLm1heC5hcHBseShudWxsLCBhbGxCb3VuZHMpXG4gIH07XG59O1xuY29uc3QgY2FsY3VsYXRlTG9vcEJvdW5kcyA9IGZ1bmN0aW9uKG1lc3NhZ2VzMiwgYWN0b3JzMiwgX21heFdpZHRoUGVyQWN0b3IsIGRpYWdPYmopIHtcbiAgY29uc3QgbG9vcHMgPSB7fTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IGN1cnJlbnQsIG5vdGVNb2RlbCwgbXNnTW9kZWw7XG4gIG1lc3NhZ2VzMi5mb3JFYWNoKGZ1bmN0aW9uKG1zZykge1xuICAgIG1zZy5pZCA9IHV0aWxzLnJhbmRvbSh7IGxlbmd0aDogMTAgfSk7XG4gICAgc3dpdGNoIChtc2cudHlwZSkge1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkxPT1BfU1RBUlQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQUxUX1NUQVJUOlxuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLk9QVF9TVEFSVDpcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5QQVJfU1RBUlQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuUEFSX09WRVJfU1RBUlQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQ1JJVElDQUxfU1RBUlQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQlJFQUtfU1RBUlQ6XG4gICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIGlkOiBtc2cuaWQsXG4gICAgICAgICAgbXNnOiBtc2cubWVzc2FnZSxcbiAgICAgICAgICBmcm9tOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcbiAgICAgICAgICB0bzogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgd2lkdGg6IDBcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkFMVF9FTFNFOlxuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLlBBUl9BTkQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQ1JJVElDQUxfT1BUSU9OOlxuICAgICAgICBpZiAobXNnLm1lc3NhZ2UpIHtcbiAgICAgICAgICBjdXJyZW50ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgbG9vcHNbY3VycmVudC5pZF0gPSBjdXJyZW50O1xuICAgICAgICAgIGxvb3BzW21zZy5pZF0gPSBjdXJyZW50O1xuICAgICAgICAgIHN0YWNrLnB1c2goY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuTE9PUF9FTkQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQUxUX0VORDpcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5MSU5FVFlQRS5PUFRfRU5EOlxuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLlBBUl9FTkQ6XG4gICAgICBjYXNlIGRpYWdPYmouZGIuTElORVRZUEUuQ1JJVElDQUxfRU5EOlxuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkJSRUFLX0VORDpcbiAgICAgICAgY3VycmVudCA9IHN0YWNrLnBvcCgpO1xuICAgICAgICBsb29wc1tjdXJyZW50LmlkXSA9IGN1cnJlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkFDVElWRV9TVEFSVDpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGFjdG9yUmVjdCA9IGFjdG9yczJbbXNnLmZyb20gPyBtc2cuZnJvbS5hY3RvciA6IG1zZy50by5hY3Rvcl07XG4gICAgICAgICAgY29uc3Qgc3RhY2tlZFNpemUgPSBhY3RvckFjdGl2YXRpb25zKG1zZy5mcm9tID8gbXNnLmZyb20uYWN0b3IgOiBtc2cudG8uYWN0b3IpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB4ID0gYWN0b3JSZWN0LnggKyBhY3RvclJlY3Qud2lkdGggLyAyICsgKHN0YWNrZWRTaXplIC0gMSkgKiBjb25mLmFjdGl2YXRpb25XaWR0aCAvIDI7XG4gICAgICAgICAgY29uc3QgdG9BZGQgPSB7XG4gICAgICAgICAgICBzdGFydHg6IHgsXG4gICAgICAgICAgICBzdG9weDogeCArIGNvbmYuYWN0aXZhdGlvbldpZHRoLFxuICAgICAgICAgICAgYWN0b3I6IG1zZy5mcm9tLmFjdG9yLFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgYm91bmRzLmFjdGl2YXRpb25zLnB1c2godG9BZGQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLkxJTkVUWVBFLkFDVElWRV9FTkQ6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBsYXN0QWN0b3JBY3RpdmF0aW9uSWR4ID0gYm91bmRzLmFjdGl2YXRpb25zLm1hcCgoYSkgPT4gYS5hY3RvcikubGFzdEluZGV4T2YobXNnLmZyb20uYWN0b3IpO1xuICAgICAgICAgIGRlbGV0ZSBib3VuZHMuYWN0aXZhdGlvbnMuc3BsaWNlKGxhc3RBY3RvckFjdGl2YXRpb25JZHgsIDEpWzBdO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBpc05vdGUgPSBtc2cucGxhY2VtZW50ICE9PSB2b2lkIDA7XG4gICAgaWYgKGlzTm90ZSkge1xuICAgICAgbm90ZU1vZGVsID0gYnVpbGROb3RlTW9kZWwobXNnLCBhY3RvcnMyLCBkaWFnT2JqKTtcbiAgICAgIG1zZy5ub3RlTW9kZWwgPSBub3RlTW9kZWw7XG4gICAgICBzdGFjay5mb3JFYWNoKChzdGspID0+IHtcbiAgICAgICAgY3VycmVudCA9IHN0aztcbiAgICAgICAgY3VycmVudC5mcm9tID0gY29tbW9uLmdldE1pbihjdXJyZW50LmZyb20sIG5vdGVNb2RlbC5zdGFydHgpO1xuICAgICAgICBjdXJyZW50LnRvID0gY29tbW9uLmdldE1heChjdXJyZW50LnRvLCBub3RlTW9kZWwuc3RhcnR4ICsgbm90ZU1vZGVsLndpZHRoKTtcbiAgICAgICAgY3VycmVudC53aWR0aCA9IGNvbW1vbi5nZXRNYXgoY3VycmVudC53aWR0aCwgTWF0aC5hYnMoY3VycmVudC5mcm9tIC0gY3VycmVudC50bykpIC0gY29uZi5sYWJlbEJveFdpZHRoO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1zZ01vZGVsID0gYnVpbGRNZXNzYWdlTW9kZWwobXNnLCBhY3RvcnMyLCBkaWFnT2JqKTtcbiAgICAgIG1zZy5tc2dNb2RlbCA9IG1zZ01vZGVsO1xuICAgICAgaWYgKG1zZ01vZGVsLnN0YXJ0eCAmJiBtc2dNb2RlbC5zdG9weCAmJiBzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YWNrLmZvckVhY2goKHN0aykgPT4ge1xuICAgICAgICAgIGN1cnJlbnQgPSBzdGs7XG4gICAgICAgICAgaWYgKG1zZ01vZGVsLnN0YXJ0eCA9PT0gbXNnTW9kZWwuc3RvcHgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyb20gPSBhY3RvcnMyW21zZy5mcm9tXTtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gYWN0b3JzMlttc2cudG9dO1xuICAgICAgICAgICAgY3VycmVudC5mcm9tID0gY29tbW9uLmdldE1pbihcbiAgICAgICAgICAgICAgZnJvbS54IC0gbXNnTW9kZWwud2lkdGggLyAyLFxuICAgICAgICAgICAgICBmcm9tLnggLSBmcm9tLndpZHRoIC8gMixcbiAgICAgICAgICAgICAgY3VycmVudC5mcm9tXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY3VycmVudC50byA9IGNvbW1vbi5nZXRNYXgoXG4gICAgICAgICAgICAgIHRvLnggKyBtc2dNb2RlbC53aWR0aCAvIDIsXG4gICAgICAgICAgICAgIHRvLnggKyBmcm9tLndpZHRoIC8gMixcbiAgICAgICAgICAgICAgY3VycmVudC50b1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGN1cnJlbnQud2lkdGggPSBjb21tb24uZ2V0TWF4KGN1cnJlbnQud2lkdGgsIE1hdGguYWJzKGN1cnJlbnQudG8gLSBjdXJyZW50LmZyb20pKSAtIGNvbmYubGFiZWxCb3hXaWR0aDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudC5mcm9tID0gY29tbW9uLmdldE1pbihtc2dNb2RlbC5zdGFydHgsIGN1cnJlbnQuZnJvbSk7XG4gICAgICAgICAgICBjdXJyZW50LnRvID0gY29tbW9uLmdldE1heChtc2dNb2RlbC5zdG9weCwgY3VycmVudC50byk7XG4gICAgICAgICAgICBjdXJyZW50LndpZHRoID0gY29tbW9uLmdldE1heChjdXJyZW50LndpZHRoLCBtc2dNb2RlbC53aWR0aCkgLSBjb25mLmxhYmVsQm94V2lkdGg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBib3VuZHMuYWN0aXZhdGlvbnMgPSBbXTtcbiAgbG9nLmRlYnVnKFwiTG9vcCB0eXBlIHdpZHRoczpcIiwgbG9vcHMpO1xuICByZXR1cm4gbG9vcHM7XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIGJvdW5kcyxcbiAgZHJhd0FjdG9ycyxcbiAgZHJhd0FjdG9yc1BvcHVwLFxuICBzZXRDb25mLFxuICBkcmF3XG59O1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgcGFyc2VyOiBwYXJzZXIkMSxcbiAgZGIsXG4gIHJlbmRlcmVyLFxuICBzdHlsZXNcbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/sequenceDiagram-5dfd0049.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/stateDiagram-133e3642.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/stateDiagram-133e3642.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styles-fa41df25.js */ \"../../../node_modules/mermaid/dist/styles-fa41df25.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst idCache = {};\nconst set = (key, val) => {\n idCache[key] = val;\n};\nconst get = (k) => idCache[k];\nconst keys = () => Object.keys(idCache);\nconst size = () => keys().length;\nconst idCache$1 = {\n get,\n set,\n keys,\n size\n};\nconst drawStartState = (g) => g.append(\"circle\").attr(\"class\", \"start-state\").attr(\"r\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit).attr(\"cx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit).attr(\"cy\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit);\nconst drawDivider = (g) => g.append(\"line\").style(\"stroke\", \"grey\").style(\"stroke-dasharray\", \"3\").attr(\"x1\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight).attr(\"class\", \"divider\").attr(\"x2\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight * 2).attr(\"y1\", 0).attr(\"y2\", 0);\nconst drawSimpleState = (g, stateDef) => {\n const state = g.append(\"text\").attr(\"x\", 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"font-size\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const classBox = state.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"x\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"width\", classBox.width + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"height\", classBox.height + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"rx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.radius);\n return state;\n};\nconst drawDescrState = (g, stateDef) => {\n const addTspan = function(textEl, txt, isFirst2) {\n const tSpan = textEl.append(\"tspan\").attr(\"x\", 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).text(txt);\n if (!isFirst2) {\n tSpan.attr(\"dy\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight);\n }\n };\n const title = g.append(\"text\").attr(\"x\", 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight + 1.3 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"font-size\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.descriptions[0]);\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n const description = g.append(\"text\").attr(\"x\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\n \"y\",\n titleHeight + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding * 0.4 + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.dividerMargin + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight\n ).attr(\"class\", \"state-description\");\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function(descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n const descrLine = g.append(\"line\").attr(\"x1\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y1\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + titleHeight + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.dividerMargin / 2).attr(\"y2\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + titleHeight + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.dividerMargin / 2).attr(\"class\", \"descr-divider\");\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr(\"x2\", width + 3 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding);\n g.insert(\"rect\", \":first-child\").attr(\"x\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"width\", width + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"height\", descrBox.height + titleHeight + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"rx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.radius);\n return g;\n};\nconst addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding;\n const dblPad = 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n const title = g.append(\"text\").attr(\"x\", 0).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.titleShift).attr(\"font-size\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth);\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n const graphBox = g.node().getBBox();\n if (stateDef.doc)\n ;\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n const lineY = 1 - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight;\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", lineY).attr(\"class\", altBkg ? \"alt-composit\" : \"composit\").attr(\"width\", width).attr(\n \"height\",\n graphBox.height + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.titleShift + 1\n ).attr(\"rx\", \"0\");\n title.attr(\"x\", startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr(\"x\", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.titleShift - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding\n ).attr(\"width\", width).attr(\"height\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight * 3).attr(\"rx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.radius);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.titleShift - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding\n ).attr(\"width\", width).attr(\"height\", graphBox.height + 3 + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.textHeight).attr(\"rx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.radius);\n return g;\n};\nconst drawEndState = (g) => {\n g.append(\"circle\").attr(\"class\", \"end-state-outer\").attr(\"r\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.miniPadding).attr(\n \"cx\",\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.miniPadding\n ).attr(\n \"cy\",\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.miniPadding\n );\n return g.append(\"circle\").attr(\"class\", \"end-state-inner\").attr(\"r\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit).attr(\"cx\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit + 2).attr(\"cy\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.sizeUnit + 2);\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.forkWidth;\n let height = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.forkHeight;\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g.append(\"rect\").style(\"stroke\", \"black\").style(\"fill\", \"black\").attr(\"width\", width).attr(\"height\", height).attr(\"x\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding);\n};\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n const textElem = g.append(\"text\");\n textElem.style(\"text-anchor\", \"start\");\n textElem.attr(\"class\", \"noteText\");\n let text = _text.replace(/\\r\\n/g, \"
\");\n text = text.replace(/\\n/g, \"
\");\n const lines = text.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.lineBreakRegex);\n let tHeight = 1.25 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.noteMargin;\n for (const line2 of lines) {\n const txt = line2.trim();\n if (txt.length > 0) {\n const span = textElem.append(\"tspan\");\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr(\"x\", x + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.noteMargin);\n span.attr(\"y\", y + textHeight + 1.25 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\nconst drawNote = (text, g) => {\n g.attr(\"class\", \"state-note\");\n const note = g.append(\"rect\").attr(\"x\", 0).attr(\"y\", (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding);\n const rectElem = g.append(\"g\");\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr(\"height\", textHeight + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.noteMargin);\n note.attr(\"width\", textWidth + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.noteMargin * 2);\n return note;\n};\nconst drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"stateGroup\");\n if (stateDef.type === \"start\") {\n drawStartState(g);\n }\n if (stateDef.type === \"end\") {\n drawEndState(g);\n }\n if (stateDef.type === \"fork\" || stateDef.type === \"join\") {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === \"note\") {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === \"divider\") {\n drawDivider(g);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length > 0) {\n drawDescrState(g, stateDef);\n }\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding;\n stateInfo.height = stateBox.height + 2 * (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding;\n idCache$1.set(id, stateInfo);\n return stateInfo;\n};\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.relationType.AGGREGATION:\n return \"aggregation\";\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.relationType.EXTENSION:\n return \"extension\";\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.relationType.COMPOSITION:\n return \"composition\";\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.relationType.DEPENDENCY:\n return \"dependency\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_0__.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_0__.curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"transition\");\n let url = \"\";\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(_styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.relationType.DEPENDENCY) + \"End)\"\n );\n if (relation.title !== void 0) {\n const label = elem.append(\"g\").attr(\"class\", \"stateLabel\");\n const { x, y } = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.u.calcLabelPosition(path.points);\n const rows = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.getRows(relation.title);\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n for (let i = 0; i <= rows.length; i++) {\n const title = label.append(\"text\").attr(\"text-anchor\", \"middle\").text(rows[i]).attr(\"x\", x).attr(\"y\", y + titleHeight);\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(boundstmp.x, x, y + titleHeight);\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(\"Title height\", titleHeight, y);\n }\n titleRows.push(title);\n }\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach((title, i) => title.attr(\"y\", y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n const bounds = label.node().getBBox();\n label.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", x - maxWidth / 2 - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding / 2).attr(\"y\", y - boxHeight / 2 - (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding / 2 - 3.5).attr(\"width\", maxWidth + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding).attr(\"height\", boxHeight + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state.padding);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.info(bounds);\n }\n edgeCount++;\n};\nlet conf;\nconst transformationLog = {};\nconst setConf = function() {\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().state;\n const securityLevel = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.c)().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Rendering diagram \" + text);\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const graph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__.Graph({\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n rankdir: \"RL\"\n // ranksep: '20'\n });\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n const rootDoc = diagObj.db.getRootDoc();\n renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);\n const padding = conf.padding;\n const bounds = diagram2.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n const svgWidth = width * 1.75;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.i)(diagram2, height, svgWidth, conf.useMaxWidth);\n diagram2.attr(\n \"viewBox\",\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + \" \" + height\n );\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\nconst renderDoc = (doc, diagram2, parentId, altBkg, root, domDocument, diagObj) => {\n const graph = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__.Graph({\n compound: true,\n multigraph: true\n });\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === \"relation\") {\n edgeFreeDoc = false;\n break;\n }\n }\n if (parentId) {\n graph.setGraph({\n rankdir: \"LR\",\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: \"tight-tree\",\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n // ranksep: 5,\n // nodesep: 1\n });\n } else {\n graph.setGraph({\n rankdir: \"TB\",\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: \"tight-tree\",\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n }\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n diagObj.db.extract(doc);\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n const keys2 = Object.keys(states);\n for (const key of keys2) {\n const stateDef = states[key];\n if (parentId) {\n stateDef.parentId = parentId;\n }\n let node;\n if (stateDef.doc) {\n let sub = diagram2.append(\"g\").attr(\"id\", stateDef.id).attr(\"class\", \"stateGroup\");\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n {\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram2, stateDef);\n }\n if (stateDef.note) {\n const noteDef = {\n descriptions: [],\n id: stateDef.id + \"-note\",\n note: stateDef.note,\n type: \"note\"\n };\n const note = drawState(diagram2, noteDef);\n if (stateDef.note.position === \"left of\") {\n graph.setNode(node.id + \"-note\", note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + \"-note\", note);\n }\n graph.setParent(node.id, node.id + \"-group\");\n graph.setParent(node.id + \"-note\", node.id + \"-group\");\n } else {\n graph.setNode(node.id, node);\n }\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Count=\", graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Setting edge\", relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.e.getRows(relation.title).length,\n labelpos: \"c\"\n },\n \"id\" + cnt\n );\n });\n (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__.layout)(graph);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Graph after layout\", graph.nodes());\n const svgElem = diagram2.node();\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.warn(\"Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + \" )\"\n );\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"data-x-shift\", graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll(\"#\" + svgElem.id + \" #\" + v + \" .divider\");\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) {\n pWidth = parent.parentElement.getBBox().width;\n }\n pShift = parseInt(parent.getAttribute(\"data-x-shift\"), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute(\"x1\", 0 - pShift + 8);\n divider.setAttribute(\"x2\", pWidth - pShift - 8);\n });\n } else {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"No Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n }\n });\n let stateBox = svgElem.getBBox();\n graph.edges().forEach(function(e) {\n if (e !== void 0 && graph.edge(e) !== void 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n const stateInfo = {\n id: parentId ? parentId : \"root\",\n label: parentId ? parentId : \"root\",\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_7__.l.debug(\"Doc rendered\", stateInfo, graph);\n return stateInfo;\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.p,\n db: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d,\n renderer,\n styles: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.s,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_8__.d.clear();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdGF0ZURpYWdyYW0tMTMzZTM2NDIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUF5RTtBQUMzQjtBQUNVO0FBQ007QUFDbUQ7QUFDOUY7QUFDSjtBQUNrQjtBQUNkO0FBQ0g7QUFDYztBQUNkO0FBQ2M7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RkFBd0YsdURBQVMsOEJBQThCLHVEQUFTLG1CQUFtQix1REFBUyw4QkFBOEIsdURBQVMsbUJBQW1CLHVEQUFTO0FBQ3ZPLDhHQUE4Ryx1REFBUyx5REFBeUQsdURBQVM7QUFDekw7QUFDQSwrQ0FBK0MsdURBQVMsNEJBQTRCLHVEQUFTLDBCQUEwQix1REFBUyxvQ0FBb0MsdURBQVM7QUFDN0s7QUFDQSw2Q0FBNkMsdURBQVMsNEJBQTRCLHVEQUFTLHFEQUFxRCx1REFBUyx1REFBdUQsdURBQVMsNkJBQTZCLHVEQUFTO0FBQy9QO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELHVEQUFTO0FBQ2hFO0FBQ0EsdUJBQXVCLHVEQUFTO0FBQ2hDO0FBQ0E7QUFDQSwrQ0FBK0MsdURBQVMsNEJBQTRCLHVEQUFTLDRCQUE0Qix1REFBUyxvQ0FBb0MsdURBQVM7QUFDL0s7QUFDQTtBQUNBLGlEQUFpRCx1REFBUztBQUMxRDtBQUNBLGtCQUFrQix1REFBUyx5QkFBeUIsdURBQVMseUJBQXlCLHVEQUFTO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxnREFBZ0QsdURBQVMsNkJBQTZCLHVEQUFTLGlDQUFpQyx1REFBUyx1Q0FBdUMsdURBQVMsaUNBQWlDLHVEQUFTO0FBQ25PO0FBQ0E7QUFDQSxtQ0FBbUMsdURBQVM7QUFDNUMsNkNBQTZDLHVEQUFTLDRCQUE0Qix1REFBUyw0Q0FBNEMsdURBQVMscUVB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QUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxJQUFJLHlEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDJEQUFjO0FBQ2pEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSxzRUFBTTtBQUNSLEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxNQUFNLHdEQUFRO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTixNQUFNLHlEQUFTO0FBQ2Y7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsTUFBTSx5REFBUztBQUNmO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx5REFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLElBQUk7QUFDSjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3REFBUTtBQUNaO0FBQ0E7QUFHRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L3N0YXRlRGlhZ3JhbS0xMzNlMzY0Mi5qcz8wMWVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGQgYXMgZGIsIHAgYXMgcGFyc2VyLCBzIGFzIHN0eWxlcyB9IGZyb20gXCIuL3N0eWxlcy1mYTQxZGYyNS5qc1wiO1xuaW1wb3J0IHsgbGluZSwgY3VydmVCYXNpcywgc2VsZWN0IH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgeyBsYXlvdXQgfSBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2RhZ3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBncmFwaGxpYiBmcm9tIFwiZGFncmUtZDMtZXMvc3JjL2dyYXBobGliL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBjIGFzIGdldENvbmZpZywgdSBhcyB1dGlscywgZSBhcyBjb21tb24sIGwgYXMgbG9nLCBpIGFzIGNvbmZpZ3VyZVN2Z1NpemUgfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5jb25zdCBpZENhY2hlID0ge307XG5jb25zdCBzZXQgPSAoa2V5LCB2YWwpID0+IHtcbiAgaWRDYWNoZVtrZXldID0gdmFsO1xufTtcbmNvbnN0IGdldCA9IChrKSA9PiBpZENhY2hlW2tdO1xuY29uc3Qga2V5cyA9ICgpID0+IE9iamVjdC5rZXlzKGlkQ2FjaGUpO1xuY29uc3Qgc2l6ZSA9ICgpID0+IGtleXMoKS5sZW5ndGg7XG5jb25zdCBpZENhY2hlJDEgPSB7XG4gIGdldCxcbiAgc2V0LFxuICBrZXlzLFxuICBzaXplXG59O1xuY29uc3QgZHJhd1N0YXJ0U3RhdGUgPSAoZykgPT4gZy5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImNsYXNzXCIsIFwic3RhcnQtc3RhdGVcIikuYXR0cihcInJcIiwgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoXCJjeFwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nICsgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoXCJjeVwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nICsgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQpO1xuY29uc3QgZHJhd0RpdmlkZXIgPSAoZykgPT4gZy5hcHBlbmQoXCJsaW5lXCIpLnN0eWxlKFwic3Ryb2tlXCIsIFwiZ3JleVwiKS5zdHlsZShcInN0cm9rZS1kYXNoYXJyYXlcIiwgXCIzXCIpLmF0dHIoXCJ4MVwiLCBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKFwiY2xhc3NcIiwgXCJkaXZpZGVyXCIpLmF0dHIoXCJ4MlwiLCBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0ICogMikuYXR0cihcInkxXCIsIDApLmF0dHIoXCJ5MlwiLCAwKTtcbmNvbnN0IGRyYXdTaW1wbGVTdGF0ZSA9IChnLCBzdGF0ZURlZikgPT4ge1xuICBjb25zdCBzdGF0ZSA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCAyICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcInlcIiwgZ2V0Q29uZmlnKCkuc3RhdGUudGV4dEhlaWdodCArIDIgKiBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwiZm9udC1zaXplXCIsIGdldENvbmZpZygpLnN0YXRlLmZvbnRTaXplKS5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZS10aXRsZVwiKS50ZXh0KHN0YXRlRGVmLmlkKTtcbiAgY29uc3QgY2xhc3NCb3ggPSBzdGF0ZS5ub2RlKCkuZ2V0QkJveCgpO1xuICBnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcInhcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcInlcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcIndpZHRoXCIsIGNsYXNzQm94LndpZHRoICsgMiAqIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgY2xhc3NCb3guaGVpZ2h0ICsgMiAqIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmcpLmF0dHIoXCJyeFwiLCBnZXRDb25maWcoKS5zdGF0ZS5yYWRpdXMpO1xuICByZXR1cm4gc3RhdGU7XG59O1xuY29uc3QgZHJhd0Rlc2NyU3RhdGUgPSAoZywgc3RhdGVEZWYpID0+IHtcbiAgY29uc3QgYWRkVHNwYW4gPSBmdW5jdGlvbih0ZXh0RWwsIHR4dCwgaXNGaXJzdDIpIHtcbiAgICBjb25zdCB0U3BhbiA9IHRleHRFbC5hcHBlbmQoXCJ0c3BhblwiKS5hdHRyKFwieFwiLCAyICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykudGV4dCh0eHQpO1xuICAgIGlmICghaXNGaXJzdDIpIHtcbiAgICAgIHRTcGFuLmF0dHIoXCJkeVwiLCBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRpdGxlID0gZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ4XCIsIDIgKiBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwieVwiLCBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0ICsgMS4zICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcImZvbnQtc2l6ZVwiLCBnZXRDb25maWcoKS5zdGF0ZS5mb250U2l6ZSkuYXR0cihcImNsYXNzXCIsIFwic3RhdGUtdGl0bGVcIikudGV4dChzdGF0ZURlZi5kZXNjcmlwdGlvbnNbMF0pO1xuICBjb25zdCB0aXRsZUJveCA9IHRpdGxlLm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IHRpdGxlSGVpZ2h0ID0gdGl0bGVCb3guaGVpZ2h0O1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFxuICAgIFwieVwiLFxuICAgIHRpdGxlSGVpZ2h0ICsgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyAqIDAuNCArIGdldENvbmZpZygpLnN0YXRlLmRpdmlkZXJNYXJnaW4gKyBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0XG4gICkuYXR0cihcImNsYXNzXCIsIFwic3RhdGUtZGVzY3JpcHRpb25cIik7XG4gIGxldCBpc0ZpcnN0ID0gdHJ1ZTtcbiAgbGV0IGlzU2Vjb25kID0gdHJ1ZTtcbiAgc3RhdGVEZWYuZGVzY3JpcHRpb25zLmZvckVhY2goZnVuY3Rpb24oZGVzY3IpIHtcbiAgICBpZiAoIWlzRmlyc3QpIHtcbiAgICAgIGFkZFRzcGFuKGRlc2NyaXB0aW9uLCBkZXNjciwgaXNTZWNvbmQpO1xuICAgICAgaXNTZWNvbmQgPSBmYWxzZTtcbiAgICB9XG4gICAgaXNGaXJzdCA9IGZhbHNlO1xuICB9KTtcbiAgY29uc3QgZGVzY3JMaW5lID0gZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwieTFcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyArIHRpdGxlSGVpZ2h0ICsgZ2V0Q29uZmlnKCkuc3RhdGUuZGl2aWRlck1hcmdpbiAvIDIpLmF0dHIoXCJ5MlwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nICsgdGl0bGVIZWlnaHQgKyBnZXRDb25maWcoKS5zdGF0ZS5kaXZpZGVyTWFyZ2luIC8gMikuYXR0cihcImNsYXNzXCIsIFwiZGVzY3ItZGl2aWRlclwiKTtcbiAgY29uc3QgZGVzY3JCb3ggPSBkZXNjcmlwdGlvbi5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KGRlc2NyQm94LndpZHRoLCB0aXRsZUJveC53aWR0aCk7XG4gIGRlc2NyTGluZS5hdHRyKFwieDJcIiwgd2lkdGggKyAzICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyk7XG4gIGcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFwieFwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwieVwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwid2lkdGhcIiwgd2lkdGggKyAyICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcImhlaWdodFwiLCBkZXNjckJveC5oZWlnaHQgKyB0aXRsZUhlaWdodCArIDIgKiBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKFwicnhcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucmFkaXVzKTtcbiAgcmV0dXJuIGc7XG59O1xuY29uc3QgYWRkVGl0bGVBbmRCb3ggPSAoZywgc3RhdGVEZWYsIGFsdEJrZykgPT4ge1xuICBjb25zdCBwYWQgPSBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nO1xuICBjb25zdCBkYmxQYWQgPSAyICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZztcbiAgY29uc3Qgb3JnQm94ID0gZy5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCBvcmdXaWR0aCA9IG9yZ0JveC53aWR0aDtcbiAgY29uc3Qgb3JnWCA9IG9yZ0JveC54O1xuICBjb25zdCB0aXRsZSA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCBnZXRDb25maWcoKS5zdGF0ZS50aXRsZVNoaWZ0KS5hdHRyKFwiZm9udC1zaXplXCIsIGdldENvbmZpZygpLnN0YXRlLmZvbnRTaXplKS5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZS10aXRsZVwiKS50ZXh0KHN0YXRlRGVmLmlkKTtcbiAgY29uc3QgdGl0bGVCb3ggPSB0aXRsZS5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25zdCB0aXRsZVdpZHRoID0gdGl0bGVCb3gud2lkdGggKyBkYmxQYWQ7XG4gIGxldCB3aWR0aCA9IE1hdGgubWF4KHRpdGxlV2lkdGgsIG9yZ1dpZHRoKTtcbiAgaWYgKHdpZHRoID09PSBvcmdXaWR0aCkge1xuICAgIHdpZHRoID0gd2lkdGggKyBkYmxQYWQ7XG4gIH1cbiAgbGV0IHN0YXJ0WDtcbiAgY29uc3QgZ3JhcGhCb3ggPSBnLm5vZGUoKS5nZXRCQm94KCk7XG4gIGlmIChzdGF0ZURlZi5kb2MpXG4gICAgO1xuICBzdGFydFggPSBvcmdYIC0gcGFkO1xuICBpZiAodGl0bGVXaWR0aCA+IG9yZ1dpZHRoKSB7XG4gICAgc3RhcnRYID0gKG9yZ1dpZHRoIC0gd2lkdGgpIC8gMiArIHBhZDtcbiAgfVxuICBpZiAoTWF0aC5hYnMob3JnWCAtIGdyYXBoQm94LngpIDwgcGFkICYmIHRpdGxlV2lkdGggPiBvcmdXaWR0aCkge1xuICAgIHN0YXJ0WCA9IG9yZ1ggLSAodGl0bGVXaWR0aCAtIG9yZ1dpZHRoKSAvIDI7XG4gIH1cbiAgY29uc3QgbGluZVkgPSAxIC0gZ2V0Q29uZmlnKCkuc3RhdGUudGV4dEhlaWdodDtcbiAgZy5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpLmF0dHIoXCJ4XCIsIHN0YXJ0WCkuYXR0cihcInlcIiwgbGluZVkpLmF0dHIoXCJjbGFzc1wiLCBhbHRCa2cgPyBcImFsdC1jb21wb3NpdFwiIDogXCJjb21wb3NpdFwiKS5hdHRyKFwid2lkdGhcIiwgd2lkdGgpLmF0dHIoXG4gICAgXCJoZWlnaHRcIixcbiAgICBncmFwaEJveC5oZWlnaHQgKyBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0ICsgZ2V0Q29uZmlnKCkuc3RhdGUudGl0bGVTaGlmdCArIDFcbiAgKS5hdHRyKFwicnhcIiwgXCIwXCIpO1xuICB0aXRsZS5hdHRyKFwieFwiLCBzdGFydFggKyBwYWQpO1xuICBpZiAodGl0bGVXaWR0aCA8PSBvcmdXaWR0aCkge1xuICAgIHRpdGxlLmF0dHIoXCJ4XCIsIG9yZ1ggKyAod2lkdGggLSBkYmxQYWQpIC8gMiAtIHRpdGxlV2lkdGggLyAyICsgcGFkKTtcbiAgfVxuICBnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcInhcIiwgc3RhcnRYKS5hdHRyKFxuICAgIFwieVwiLFxuICAgIGdldENvbmZpZygpLnN0YXRlLnRpdGxlU2hpZnQgLSBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0IC0gZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZ1xuICApLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkuYXR0cihcImhlaWdodFwiLCBnZXRDb25maWcoKS5zdGF0ZS50ZXh0SGVpZ2h0ICogMykuYXR0cihcInJ4XCIsIGdldENvbmZpZygpLnN0YXRlLnJhZGl1cyk7XG4gIGcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFwieFwiLCBzdGFydFgpLmF0dHIoXG4gICAgXCJ5XCIsXG4gICAgZ2V0Q29uZmlnKCkuc3RhdGUudGl0bGVTaGlmdCAtIGdldENvbmZpZygpLnN0YXRlLnRleHRIZWlnaHQgLSBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nXG4gICkuYXR0cihcIndpZHRoXCIsIHdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIGdyYXBoQm94LmhlaWdodCArIDMgKyAyICogZ2V0Q29uZmlnKCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cihcInJ4XCIsIGdldENvbmZpZygpLnN0YXRlLnJhZGl1cyk7XG4gIHJldHVybiBnO1xufTtcbmNvbnN0IGRyYXdFbmRTdGF0ZSA9IChnKSA9PiB7XG4gIGcuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjbGFzc1wiLCBcImVuZC1zdGF0ZS1vdXRlclwiKS5hdHRyKFwiclwiLCBnZXRDb25maWcoKS5zdGF0ZS5zaXplVW5pdCArIGdldENvbmZpZygpLnN0YXRlLm1pbmlQYWRkaW5nKS5hdHRyKFxuICAgIFwiY3hcIixcbiAgICBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nICsgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQgKyBnZXRDb25maWcoKS5zdGF0ZS5taW5pUGFkZGluZ1xuICApLmF0dHIoXG4gICAgXCJjeVwiLFxuICAgIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmcgKyBnZXRDb25maWcoKS5zdGF0ZS5zaXplVW5pdCArIGdldENvbmZpZygpLnN0YXRlLm1pbmlQYWRkaW5nXG4gICk7XG4gIHJldHVybiBnLmFwcGVuZChcImNpcmNsZVwiKS5hdHRyKFwiY2xhc3NcIiwgXCJlbmQtc3RhdGUtaW5uZXJcIikuYXR0cihcInJcIiwgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoXCJjeFwiLCBnZXRDb25maWcoKS5zdGF0ZS5wYWRkaW5nICsgZ2V0Q29uZmlnKCkuc3RhdGUuc2l6ZVVuaXQgKyAyKS5hdHRyKFwiY3lcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyArIGdldENvbmZpZygpLnN0YXRlLnNpemVVbml0ICsgMik7XG59O1xuY29uc3QgZHJhd0ZvcmtKb2luU3RhdGUgPSAoZywgc3RhdGVEZWYpID0+IHtcbiAgbGV0IHdpZHRoID0gZ2V0Q29uZmlnKCkuc3RhdGUuZm9ya1dpZHRoO1xuICBsZXQgaGVpZ2h0ID0gZ2V0Q29uZmlnKCkuc3RhdGUuZm9ya0hlaWdodDtcbiAgaWYgKHN0YXRlRGVmLnBhcmVudElkKSB7XG4gICAgbGV0IHRtcCA9IHdpZHRoO1xuICAgIHdpZHRoID0gaGVpZ2h0O1xuICAgIGhlaWdodCA9IHRtcDtcbiAgfVxuICByZXR1cm4gZy5hcHBlbmQoXCJyZWN0XCIpLnN0eWxlKFwic3Ryb2tlXCIsIFwiYmxhY2tcIikuc3R5bGUoXCJmaWxsXCIsIFwiYmxhY2tcIikuYXR0cihcIndpZHRoXCIsIHdpZHRoKS5hdHRyKFwiaGVpZ2h0XCIsIGhlaWdodCkuYXR0cihcInhcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZykuYXR0cihcInlcIiwgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyk7XG59O1xuY29uc3QgX2RyYXdMb25nVGV4dCA9IChfdGV4dCwgeCwgeSwgZykgPT4ge1xuICBsZXQgdGV4dEhlaWdodCA9IDA7XG4gIGNvbnN0IHRleHRFbGVtID0gZy5hcHBlbmQoXCJ0ZXh0XCIpO1xuICB0ZXh0RWxlbS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwic3RhcnRcIik7XG4gIHRleHRFbGVtLmF0dHIoXCJjbGFzc1wiLCBcIm5vdGVUZXh0XCIpO1xuICBsZXQgdGV4dCA9IF90ZXh0LnJlcGxhY2UoL1xcclxcbi9nLCBcIjxici8+XCIpO1xuICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cXG4vZywgXCI8YnIvPlwiKTtcbiAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCk7XG4gIGxldCB0SGVpZ2h0ID0gMS4yNSAqIGdldENvbmZpZygpLnN0YXRlLm5vdGVNYXJnaW47XG4gIGZvciAoY29uc3QgbGluZTIgb2YgbGluZXMpIHtcbiAgICBjb25zdCB0eHQgPSBsaW5lMi50cmltKCk7XG4gICAgaWYgKHR4dC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzcGFuID0gdGV4dEVsZW0uYXBwZW5kKFwidHNwYW5cIik7XG4gICAgICBzcGFuLnRleHQodHh0KTtcbiAgICAgIGlmICh0SGVpZ2h0ID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHRleHRCb3VuZHMgPSBzcGFuLm5vZGUoKS5nZXRCQm94KCk7XG4gICAgICAgIHRIZWlnaHQgKz0gdGV4dEJvdW5kcy5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB0ZXh0SGVpZ2h0ICs9IHRIZWlnaHQ7XG4gICAgICBzcGFuLmF0dHIoXCJ4XCIsIHggKyBnZXRDb25maWcoKS5zdGF0ZS5ub3RlTWFyZ2luKTtcbiAgICAgIHNwYW4uYXR0cihcInlcIiwgeSArIHRleHRIZWlnaHQgKyAxLjI1ICogZ2V0Q29uZmlnKCkuc3RhdGUubm90ZU1hcmdpbik7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRleHRXaWR0aDogdGV4dEVsZW0ubm9kZSgpLmdldEJCb3goKS53aWR0aCwgdGV4dEhlaWdodCB9O1xufTtcbmNvbnN0IGRyYXdOb3RlID0gKHRleHQsIGcpID0+IHtcbiAgZy5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZS1ub3RlXCIpO1xuICBjb25zdCBub3RlID0gZy5hcHBlbmQoXCJyZWN0XCIpLmF0dHIoXCJ4XCIsIDApLmF0dHIoXCJ5XCIsIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmcpO1xuICBjb25zdCByZWN0RWxlbSA9IGcuYXBwZW5kKFwiZ1wiKTtcbiAgY29uc3QgeyB0ZXh0V2lkdGgsIHRleHRIZWlnaHQgfSA9IF9kcmF3TG9uZ1RleHQodGV4dCwgMCwgMCwgcmVjdEVsZW0pO1xuICBub3RlLmF0dHIoXCJoZWlnaHRcIiwgdGV4dEhlaWdodCArIDIgKiBnZXRDb25maWcoKS5zdGF0ZS5ub3RlTWFyZ2luKTtcbiAgbm90ZS5hdHRyKFwid2lkdGhcIiwgdGV4dFdpZHRoICsgZ2V0Q29uZmlnKCkuc3RhdGUubm90ZU1hcmdpbiAqIDIpO1xuICByZXR1cm4gbm90ZTtcbn07XG5jb25zdCBkcmF3U3RhdGUgPSBmdW5jdGlvbihlbGVtLCBzdGF0ZURlZikge1xuICBjb25zdCBpZCA9IHN0YXRlRGVmLmlkO1xuICBjb25zdCBzdGF0ZUluZm8gPSB7XG4gICAgaWQsXG4gICAgbGFiZWw6IHN0YXRlRGVmLmlkLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9O1xuICBjb25zdCBnID0gZWxlbS5hcHBlbmQoXCJnXCIpLmF0dHIoXCJpZFwiLCBpZCkuYXR0cihcImNsYXNzXCIsIFwic3RhdGVHcm91cFwiKTtcbiAgaWYgKHN0YXRlRGVmLnR5cGUgPT09IFwic3RhcnRcIikge1xuICAgIGRyYXdTdGFydFN0YXRlKGcpO1xuICB9XG4gIGlmIChzdGF0ZURlZi50eXBlID09PSBcImVuZFwiKSB7XG4gICAgZHJhd0VuZFN0YXRlKGcpO1xuICB9XG4gIGlmIChzdGF0ZURlZi50eXBlID09PSBcImZvcmtcIiB8fCBzdGF0ZURlZi50eXBlID09PSBcImpvaW5cIikge1xuICAgIGRyYXdGb3JrSm9pblN0YXRlKGcsIHN0YXRlRGVmKTtcbiAgfVxuICBpZiAoc3RhdGVEZWYudHlwZSA9PT0gXCJub3RlXCIpIHtcbiAgICBkcmF3Tm90ZShzdGF0ZURlZi5ub3RlLnRleHQsIGcpO1xuICB9XG4gIGlmIChzdGF0ZURlZi50eXBlID09PSBcImRpdmlkZXJcIikge1xuICAgIGRyYXdEaXZpZGVyKGcpO1xuICB9XG4gIGlmIChzdGF0ZURlZi50eXBlID09PSBcImRlZmF1bHRcIiAmJiBzdGF0ZURlZi5kZXNjcmlwdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgZHJhd1NpbXBsZVN0YXRlKGcsIHN0YXRlRGVmKTtcbiAgfVxuICBpZiAoc3RhdGVEZWYudHlwZSA9PT0gXCJkZWZhdWx0XCIgJiYgc3RhdGVEZWYuZGVzY3JpcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICBkcmF3RGVzY3JTdGF0ZShnLCBzdGF0ZURlZik7XG4gIH1cbiAgY29uc3Qgc3RhdGVCb3ggPSBnLm5vZGUoKS5nZXRCQm94KCk7XG4gIHN0YXRlSW5mby53aWR0aCA9IHN0YXRlQm94LndpZHRoICsgMiAqIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmc7XG4gIHN0YXRlSW5mby5oZWlnaHQgPSBzdGF0ZUJveC5oZWlnaHQgKyAyICogZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZztcbiAgaWRDYWNoZSQxLnNldChpZCwgc3RhdGVJbmZvKTtcbiAgcmV0dXJuIHN0YXRlSW5mbztcbn07XG5sZXQgZWRnZUNvdW50ID0gMDtcbmNvbnN0IGRyYXdFZGdlID0gZnVuY3Rpb24oZWxlbSwgcGF0aCwgcmVsYXRpb24pIHtcbiAgY29uc3QgZ2V0UmVsYXRpb25UeXBlID0gZnVuY3Rpb24odHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBkYi5yZWxhdGlvblR5cGUuQUdHUkVHQVRJT046XG4gICAgICAgIHJldHVybiBcImFnZ3JlZ2F0aW9uXCI7XG4gICAgICBjYXNlIGRiLnJlbGF0aW9uVHlwZS5FWFRFTlNJT046XG4gICAgICAgIHJldHVybiBcImV4dGVuc2lvblwiO1xuICAgICAgY2FzZSBkYi5yZWxhdGlvblR5cGUuQ09NUE9TSVRJT046XG4gICAgICAgIHJldHVybiBcImNvbXBvc2l0aW9uXCI7XG4gICAgICBjYXNlIGRiLnJlbGF0aW9uVHlwZS5ERVBFTkRFTkNZOlxuICAgICAgICByZXR1cm4gXCJkZXBlbmRlbmN5XCI7XG4gICAgfVxuICB9O1xuICBwYXRoLnBvaW50cyA9IHBhdGgucG9pbnRzLmZpbHRlcigocCkgPT4gIU51bWJlci5pc05hTihwLnkpKTtcbiAgY29uc3QgbGluZURhdGEgPSBwYXRoLnBvaW50cztcbiAgY29uc3QgbGluZUZ1bmN0aW9uID0gbGluZSgpLngoZnVuY3Rpb24oZCkge1xuICAgIHJldHVybiBkLng7XG4gIH0pLnkoZnVuY3Rpb24oZCkge1xuICAgIHJldHVybiBkLnk7XG4gIH0pLmN1cnZlKGN1cnZlQmFzaXMpO1xuICBjb25zdCBzdmdQYXRoID0gZWxlbS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIGxpbmVGdW5jdGlvbihsaW5lRGF0YSkpLmF0dHIoXCJpZFwiLCBcImVkZ2VcIiArIGVkZ2VDb3VudCkuYXR0cihcImNsYXNzXCIsIFwidHJhbnNpdGlvblwiKTtcbiAgbGV0IHVybCA9IFwiXCI7XG4gIGlmIChnZXRDb25maWcoKS5zdGF0ZS5hcnJvd01hcmtlckFic29sdXRlKSB7XG4gICAgdXJsID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xuICAgIHVybCA9IHVybC5yZXBsYWNlKC9cXCgvZywgXCJcXFxcKFwiKTtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFwpL2csIFwiXFxcXClcIik7XG4gIH1cbiAgc3ZnUGF0aC5hdHRyKFxuICAgIFwibWFya2VyLWVuZFwiLFxuICAgIFwidXJsKFwiICsgdXJsICsgXCIjXCIgKyBnZXRSZWxhdGlvblR5cGUoZGIucmVsYXRpb25UeXBlLkRFUEVOREVOQ1kpICsgXCJFbmQpXCJcbiAgKTtcbiAgaWYgKHJlbGF0aW9uLnRpdGxlICE9PSB2b2lkIDApIHtcbiAgICBjb25zdCBsYWJlbCA9IGVsZW0uYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJzdGF0ZUxhYmVsXCIpO1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gdXRpbHMuY2FsY0xhYmVsUG9zaXRpb24ocGF0aC5wb2ludHMpO1xuICAgIGNvbnN0IHJvd3MgPSBjb21tb24uZ2V0Um93cyhyZWxhdGlvbi50aXRsZSk7XG4gICAgbGV0IHRpdGxlSGVpZ2h0ID0gMDtcbiAgICBjb25zdCB0aXRsZVJvd3MgPSBbXTtcbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuICAgIGxldCBtaW5YID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSByb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGxhYmVsLmFwcGVuZChcInRleHRcIikuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnRleHQocm93c1tpXSkuYXR0cihcInhcIiwgeCkuYXR0cihcInlcIiwgeSArIHRpdGxlSGVpZ2h0KTtcbiAgICAgIGNvbnN0IGJvdW5kc3RtcCA9IHRpdGxlLm5vZGUoKS5nZXRCQm94KCk7XG4gICAgICBtYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCBib3VuZHN0bXAud2lkdGgpO1xuICAgICAgbWluWCA9IE1hdGgubWluKG1pblgsIGJvdW5kc3RtcC54KTtcbiAgICAgIGxvZy5pbmZvKGJvdW5kc3RtcC54LCB4LCB5ICsgdGl0bGVIZWlnaHQpO1xuICAgICAgaWYgKHRpdGxlSGVpZ2h0ID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHRpdGxlQm94ID0gdGl0bGUubm9kZSgpLmdldEJCb3goKTtcbiAgICAgICAgdGl0bGVIZWlnaHQgPSB0aXRsZUJveC5oZWlnaHQ7XG4gICAgICAgIGxvZy5pbmZvKFwiVGl0bGUgaGVpZ2h0XCIsIHRpdGxlSGVpZ2h0LCB5KTtcbiAgICAgIH1cbiAgICAgIHRpdGxlUm93cy5wdXNoKHRpdGxlKTtcbiAgICB9XG4gICAgbGV0IGJveEhlaWdodCA9IHRpdGxlSGVpZ2h0ICogcm93cy5sZW5ndGg7XG4gICAgaWYgKHJvd3MubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgaGVpZ2h0QWRqID0gKHJvd3MubGVuZ3RoIC0gMSkgKiB0aXRsZUhlaWdodCAqIDAuNTtcbiAgICAgIHRpdGxlUm93cy5mb3JFYWNoKCh0aXRsZSwgaSkgPT4gdGl0bGUuYXR0cihcInlcIiwgeSArIGkgKiB0aXRsZUhlaWdodCAtIGhlaWdodEFkaikpO1xuICAgICAgYm94SGVpZ2h0ID0gdGl0bGVIZWlnaHQgKiByb3dzLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgYm91bmRzID0gbGFiZWwubm9kZSgpLmdldEJCb3goKTtcbiAgICBsYWJlbC5pbnNlcnQoXCJyZWN0XCIsIFwiOmZpcnN0LWNoaWxkXCIpLmF0dHIoXCJjbGFzc1wiLCBcImJveFwiKS5hdHRyKFwieFwiLCB4IC0gbWF4V2lkdGggLyAyIC0gZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyAvIDIpLmF0dHIoXCJ5XCIsIHkgLSBib3hIZWlnaHQgLyAyIC0gZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyAvIDIgLSAzLjUpLmF0dHIoXCJ3aWR0aFwiLCBtYXhXaWR0aCArIGdldENvbmZpZygpLnN0YXRlLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgYm94SGVpZ2h0ICsgZ2V0Q29uZmlnKCkuc3RhdGUucGFkZGluZyk7XG4gICAgbG9nLmluZm8oYm91bmRzKTtcbiAgfVxuICBlZGdlQ291bnQrKztcbn07XG5sZXQgY29uZjtcbmNvbnN0IHRyYW5zZm9ybWF0aW9uTG9nID0ge307XG5jb25zdCBzZXRDb25mID0gZnVuY3Rpb24oKSB7XG59O1xuY29uc3QgaW5zZXJ0TWFya2VycyA9IGZ1bmN0aW9uKGVsZW0pIHtcbiAgZWxlbS5hcHBlbmQoXCJkZWZzXCIpLmFwcGVuZChcIm1hcmtlclwiKS5hdHRyKFwiaWRcIiwgXCJkZXBlbmRlbmN5RW5kXCIpLmF0dHIoXCJyZWZYXCIsIDE5KS5hdHRyKFwicmVmWVwiLCA3KS5hdHRyKFwibWFya2VyV2lkdGhcIiwgMjApLmF0dHIoXCJtYXJrZXJIZWlnaHRcIiwgMjgpLmF0dHIoXCJvcmllbnRcIiwgXCJhdXRvXCIpLmFwcGVuZChcInBhdGhcIikuYXR0cihcImRcIiwgXCJNIDE5LDcgTDksMTMgTDE0LDcgTDksMSBaXCIpO1xufTtcbmNvbnN0IGRyYXcgPSBmdW5jdGlvbih0ZXh0LCBpZCwgX3ZlcnNpb24sIGRpYWdPYmopIHtcbiAgY29uZiA9IGdldENvbmZpZygpLnN0YXRlO1xuICBjb25zdCBzZWN1cml0eUxldmVsID0gZ2V0Q29uZmlnKCkuc2VjdXJpdHlMZXZlbDtcbiAgbGV0IHNhbmRib3hFbGVtZW50O1xuICBpZiAoc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIpIHtcbiAgICBzYW5kYm94RWxlbWVudCA9IHNlbGVjdChcIiNpXCIgKyBpZCk7XG4gIH1cbiAgY29uc3Qgcm9vdCA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gc2VsZWN0KHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpIDogc2VsZWN0KFwiYm9keVwiKTtcbiAgY29uc3QgZG9jID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50O1xuICBsb2cuZGVidWcoXCJSZW5kZXJpbmcgZGlhZ3JhbSBcIiArIHRleHQpO1xuICBjb25zdCBkaWFncmFtMiA9IHJvb3Quc2VsZWN0KGBbaWQ9JyR7aWR9J11gKTtcbiAgaW5zZXJ0TWFya2VycyhkaWFncmFtMik7XG4gIGNvbnN0IGdyYXBoID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgIGNvbXBvdW5kOiB0cnVlLFxuICAgIC8vIGFjeWNsaWNlcjogJ2dyZWVkeScsXG4gICAgcmFua2RpcjogXCJSTFwiXG4gICAgLy8gcmFua3NlcDogJzIwJ1xuICB9KTtcbiAgZ3JhcGguc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge307XG4gIH0pO1xuICBjb25zdCByb290RG9jID0gZGlhZ09iai5kYi5nZXRSb290RG9jKCk7XG4gIHJlbmRlckRvYyhyb290RG9jLCBkaWFncmFtMiwgdm9pZCAwLCBmYWxzZSwgcm9vdCwgZG9jLCBkaWFnT2JqKTtcbiAgY29uc3QgcGFkZGluZyA9IGNvbmYucGFkZGluZztcbiAgY29uc3QgYm91bmRzID0gZGlhZ3JhbTIubm9kZSgpLmdldEJCb3goKTtcbiAgY29uc3Qgd2lkdGggPSBib3VuZHMud2lkdGggKyBwYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gYm91bmRzLmhlaWdodCArIHBhZGRpbmcgKiAyO1xuICBjb25zdCBzdmdXaWR0aCA9IHdpZHRoICogMS43NTtcbiAgY29uZmlndXJlU3ZnU2l6ZShkaWFncmFtMiwgaGVpZ2h0LCBzdmdXaWR0aCwgY29uZi51c2VNYXhXaWR0aCk7XG4gIGRpYWdyYW0yLmF0dHIoXG4gICAgXCJ2aWV3Qm94XCIsXG4gICAgYCR7Ym91bmRzLnggLSBjb25mLnBhZGRpbmd9ICAke2JvdW5kcy55IC0gY29uZi5wYWRkaW5nfSBgICsgd2lkdGggKyBcIiBcIiArIGhlaWdodFxuICApO1xufTtcbmNvbnN0IGdldExhYmVsV2lkdGggPSAodGV4dCkgPT4ge1xuICByZXR1cm4gdGV4dCA/IHRleHQubGVuZ3RoICogY29uZi5mb250U2l6ZUZhY3RvciA6IDE7XG59O1xuY29uc3QgcmVuZGVyRG9jID0gKGRvYywgZGlhZ3JhbTIsIHBhcmVudElkLCBhbHRCa2csIHJvb3QsIGRvbURvY3VtZW50LCBkaWFnT2JqKSA9PiB7XG4gIGNvbnN0IGdyYXBoID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBjb21wb3VuZDogdHJ1ZSxcbiAgICBtdWx0aWdyYXBoOiB0cnVlXG4gIH0pO1xuICBsZXQgaTtcbiAgbGV0IGVkZ2VGcmVlRG9jID0gdHJ1ZTtcbiAgZm9yIChpID0gMDsgaSA8IGRvYy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2NbaV0uc3RtdCA9PT0gXCJyZWxhdGlvblwiKSB7XG4gICAgICBlZGdlRnJlZURvYyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwYXJlbnRJZCkge1xuICAgIGdyYXBoLnNldEdyYXBoKHtcbiAgICAgIHJhbmtkaXI6IFwiTFJcIixcbiAgICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgICBjb21wb3VuZDogdHJ1ZSxcbiAgICAgIC8vIGFjeWNsaWNlcjogJ2dyZWVkeScsXG4gICAgICByYW5rZXI6IFwidGlnaHQtdHJlZVwiLFxuICAgICAgcmFua3NlcDogZWRnZUZyZWVEb2MgPyAxIDogY29uZi5lZGdlTGVuZ3RoRmFjdG9yLFxuICAgICAgbm9kZVNlcDogZWRnZUZyZWVEb2MgPyAxIDogNTAsXG4gICAgICBpc011bHRpR3JhcGg6IHRydWVcbiAgICAgIC8vIHJhbmtzZXA6IDUsXG4gICAgICAvLyBub2Rlc2VwOiAxXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZ3JhcGguc2V0R3JhcGgoe1xuICAgICAgcmFua2RpcjogXCJUQlwiLFxuICAgICAgbXVsdGlncmFwaDogdHJ1ZSxcbiAgICAgIGNvbXBvdW5kOiB0cnVlLFxuICAgICAgLy8gaXNDb21wb3VuZDogdHJ1ZSxcbiAgICAgIC8vIGFjeWNsaWNlcjogJ2dyZWVkeScsXG4gICAgICAvLyByYW5rZXI6ICdsb25nZXN0LXBhdGgnXG4gICAgICByYW5rc2VwOiBlZGdlRnJlZURvYyA/IDEgOiBjb25mLmVkZ2VMZW5ndGhGYWN0b3IsXG4gICAgICBub2RlU2VwOiBlZGdlRnJlZURvYyA/IDEgOiA1MCxcbiAgICAgIHJhbmtlcjogXCJ0aWdodC10cmVlXCIsXG4gICAgICAvLyByYW5rZXI6ICduZXR3b3JrLXNpbXBsZXgnXG4gICAgICBpc011bHRpR3JhcGg6IHRydWVcbiAgICB9KTtcbiAgfVxuICBncmFwaC5zZXREZWZhdWx0RWRnZUxhYmVsKGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIGRpYWdPYmouZGIuZXh0cmFjdChkb2MpO1xuICBjb25zdCBzdGF0ZXMgPSBkaWFnT2JqLmRiLmdldFN0YXRlcygpO1xuICBjb25zdCByZWxhdGlvbnMgPSBkaWFnT2JqLmRiLmdldFJlbGF0aW9ucygpO1xuICBjb25zdCBrZXlzMiA9IE9iamVjdC5rZXlzKHN0YXRlcyk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMyKSB7XG4gICAgY29uc3Qgc3RhdGVEZWYgPSBzdGF0ZXNba2V5XTtcbiAgICBpZiAocGFyZW50SWQpIHtcbiAgICAgIHN0YXRlRGVmLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgfVxuICAgIGxldCBub2RlO1xuICAgIGlmIChzdGF0ZURlZi5kb2MpIHtcbiAgICAgIGxldCBzdWIgPSBkaWFncmFtMi5hcHBlbmQoXCJnXCIpLmF0dHIoXCJpZFwiLCBzdGF0ZURlZi5pZCkuYXR0cihcImNsYXNzXCIsIFwic3RhdGVHcm91cFwiKTtcbiAgICAgIG5vZGUgPSByZW5kZXJEb2Moc3RhdGVEZWYuZG9jLCBzdWIsIHN0YXRlRGVmLmlkLCAhYWx0QmtnLCByb290LCBkb21Eb2N1bWVudCwgZGlhZ09iaik7XG4gICAgICB7XG4gICAgICAgIHN1YiA9IGFkZFRpdGxlQW5kQm94KHN1Yiwgc3RhdGVEZWYsIGFsdEJrZyk7XG4gICAgICAgIGxldCBib3hCb3VuZHMgPSBzdWIubm9kZSgpLmdldEJCb3goKTtcbiAgICAgICAgbm9kZS53aWR0aCA9IGJveEJvdW5kcy53aWR0aDtcbiAgICAgICAgbm9kZS5oZWlnaHQgPSBib3hCb3VuZHMuaGVpZ2h0ICsgY29uZi5wYWRkaW5nIC8gMjtcbiAgICAgICAgdHJhbnNmb3JtYXRpb25Mb2dbc3RhdGVEZWYuaWRdID0geyB5OiBjb25mLmNvbXBvc2l0VGl0bGVTaXplIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBkcmF3U3RhdGUoZGlhZ3JhbTIsIHN0YXRlRGVmKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlRGVmLm5vdGUpIHtcbiAgICAgIGNvbnN0IG5vdGVEZWYgPSB7XG4gICAgICAgIGRlc2NyaXB0aW9uczogW10sXG4gICAgICAgIGlkOiBzdGF0ZURlZi5pZCArIFwiLW5vdGVcIixcbiAgICAgICAgbm90ZTogc3RhdGVEZWYubm90ZSxcbiAgICAgICAgdHlwZTogXCJub3RlXCJcbiAgICAgIH07XG4gICAgICBjb25zdCBub3RlID0gZHJhd1N0YXRlKGRpYWdyYW0yLCBub3RlRGVmKTtcbiAgICAgIGlmIChzdGF0ZURlZi5ub3RlLnBvc2l0aW9uID09PSBcImxlZnQgb2ZcIikge1xuICAgICAgICBncmFwaC5zZXROb2RlKG5vZGUuaWQgKyBcIi1ub3RlXCIsIG5vdGUpO1xuICAgICAgICBncmFwaC5zZXROb2RlKG5vZGUuaWQsIG5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGguc2V0Tm9kZShub2RlLmlkLCBub2RlKTtcbiAgICAgICAgZ3JhcGguc2V0Tm9kZShub2RlLmlkICsgXCItbm90ZVwiLCBub3RlKTtcbiAgICAgIH1cbiAgICAgIGdyYXBoLnNldFBhcmVudChub2RlLmlkLCBub2RlLmlkICsgXCItZ3JvdXBcIik7XG4gICAgICBncmFwaC5zZXRQYXJlbnQobm9kZS5pZCArIFwiLW5vdGVcIiwgbm9kZS5pZCArIFwiLWdyb3VwXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBncmFwaC5zZXROb2RlKG5vZGUuaWQsIG5vZGUpO1xuICAgIH1cbiAgfVxuICBsb2cuZGVidWcoXCJDb3VudD1cIiwgZ3JhcGgubm9kZUNvdW50KCksIGdyYXBoKTtcbiAgbGV0IGNudCA9IDA7XG4gIHJlbGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHJlbGF0aW9uKSB7XG4gICAgY250Kys7XG4gICAgbG9nLmRlYnVnKFwiU2V0dGluZyBlZGdlXCIsIHJlbGF0aW9uKTtcbiAgICBncmFwaC5zZXRFZGdlKFxuICAgICAgcmVsYXRpb24uaWQxLFxuICAgICAgcmVsYXRpb24uaWQyLFxuICAgICAge1xuICAgICAgICByZWxhdGlvbixcbiAgICAgICAgd2lkdGg6IGdldExhYmVsV2lkdGgocmVsYXRpb24udGl0bGUpLFxuICAgICAgICBoZWlnaHQ6IGNvbmYubGFiZWxIZWlnaHQgKiBjb21tb24uZ2V0Um93cyhyZWxhdGlvbi50aXRsZSkubGVuZ3RoLFxuICAgICAgICBsYWJlbHBvczogXCJjXCJcbiAgICAgIH0sXG4gICAgICBcImlkXCIgKyBjbnRcbiAgICApO1xuICB9KTtcbiAgbGF5b3V0KGdyYXBoKTtcbiAgbG9nLmRlYnVnKFwiR3JhcGggYWZ0ZXIgbGF5b3V0XCIsIGdyYXBoLm5vZGVzKCkpO1xuICBjb25zdCBzdmdFbGVtID0gZGlhZ3JhbTIubm9kZSgpO1xuICBncmFwaC5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICh2ICE9PSB2b2lkIDAgJiYgZ3JhcGgubm9kZSh2KSAhPT0gdm9pZCAwKSB7XG4gICAgICBsb2cud2FybihcIk5vZGUgXCIgKyB2ICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoZ3JhcGgubm9kZSh2KSkpO1xuICAgICAgcm9vdC5zZWxlY3QoXCIjXCIgKyBzdmdFbGVtLmlkICsgXCIgI1wiICsgdikuYXR0cihcbiAgICAgICAgXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgXCJ0cmFuc2xhdGUoXCIgKyAoZ3JhcGgubm9kZSh2KS54IC0gZ3JhcGgubm9kZSh2KS53aWR0aCAvIDIpICsgXCIsXCIgKyAoZ3JhcGgubm9kZSh2KS55ICsgKHRyYW5zZm9ybWF0aW9uTG9nW3ZdID8gdHJhbnNmb3JtYXRpb25Mb2dbdl0ueSA6IDApIC0gZ3JhcGgubm9kZSh2KS5oZWlnaHQgLyAyKSArIFwiIClcIlxuICAgICAgKTtcbiAgICAgIHJvb3Quc2VsZWN0KFwiI1wiICsgc3ZnRWxlbS5pZCArIFwiICNcIiArIHYpLmF0dHIoXCJkYXRhLXgtc2hpZnRcIiwgZ3JhcGgubm9kZSh2KS54IC0gZ3JhcGgubm9kZSh2KS53aWR0aCAvIDIpO1xuICAgICAgY29uc3QgZGl2aWRlcnMgPSBkb21Eb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI1wiICsgc3ZnRWxlbS5pZCArIFwiICNcIiArIHYgKyBcIiAuZGl2aWRlclwiKTtcbiAgICAgIGRpdmlkZXJzLmZvckVhY2goKGRpdmlkZXIpID0+IHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gZGl2aWRlci5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgcFdpZHRoID0gMDtcbiAgICAgICAgbGV0IHBTaGlmdCA9IDA7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICBpZiAocGFyZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHBXaWR0aCA9IHBhcmVudC5wYXJlbnRFbGVtZW50LmdldEJCb3goKS53aWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcFNoaWZ0ID0gcGFyc2VJbnQocGFyZW50LmdldEF0dHJpYnV0ZShcImRhdGEteC1zaGlmdFwiKSwgMTApO1xuICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4ocFNoaWZ0KSkge1xuICAgICAgICAgICAgcFNoaWZ0ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlci5zZXRBdHRyaWJ1dGUoXCJ4MVwiLCAwIC0gcFNoaWZ0ICsgOCk7XG4gICAgICAgIGRpdmlkZXIuc2V0QXR0cmlidXRlKFwieDJcIiwgcFdpZHRoIC0gcFNoaWZ0IC0gOCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKFwiTm8gTm9kZSBcIiArIHYgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShncmFwaC5ub2RlKHYpKSk7XG4gICAgfVxuICB9KTtcbiAgbGV0IHN0YXRlQm94ID0gc3ZnRWxlbS5nZXRCQm94KCk7XG4gIGdyYXBoLmVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgaWYgKGUgIT09IHZvaWQgMCAmJiBncmFwaC5lZGdlKGUpICE9PSB2b2lkIDApIHtcbiAgICAgIGxvZy5kZWJ1ZyhcIkVkZ2UgXCIgKyBlLnYgKyBcIiAtPiBcIiArIGUudyArIFwiOiBcIiArIEpTT04uc3RyaW5naWZ5KGdyYXBoLmVkZ2UoZSkpKTtcbiAgICAgIGRyYXdFZGdlKGRpYWdyYW0yLCBncmFwaC5lZGdlKGUpLCBncmFwaC5lZGdlKGUpLnJlbGF0aW9uKTtcbiAgICB9XG4gIH0pO1xuICBzdGF0ZUJveCA9IHN2Z0VsZW0uZ2V0QkJveCgpO1xuICBjb25zdCBzdGF0ZUluZm8gPSB7XG4gICAgaWQ6IHBhcmVudElkID8gcGFyZW50SWQgOiBcInJvb3RcIixcbiAgICBsYWJlbDogcGFyZW50SWQgPyBwYXJlbnRJZCA6IFwicm9vdFwiLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9O1xuICBzdGF0ZUluZm8ud2lkdGggPSBzdGF0ZUJveC53aWR0aCArIDIgKiBjb25mLnBhZGRpbmc7XG4gIHN0YXRlSW5mby5oZWlnaHQgPSBzdGF0ZUJveC5oZWlnaHQgKyAyICogY29uZi5wYWRkaW5nO1xuICBsb2cuZGVidWcoXCJEb2MgcmVuZGVyZWRcIiwgc3RhdGVJbmZvLCBncmFwaCk7XG4gIHJldHVybiBzdGF0ZUluZm87XG59O1xuY29uc3QgcmVuZGVyZXIgPSB7XG4gIHNldENvbmYsXG4gIGRyYXdcbn07XG5jb25zdCBkaWFncmFtID0ge1xuICBwYXJzZXIsXG4gIGRiLFxuICByZW5kZXJlcixcbiAgc3R5bGVzLFxuICBpbml0OiAoY25mKSA9PiB7XG4gICAgaWYgKCFjbmYuc3RhdGUpIHtcbiAgICAgIGNuZi5zdGF0ZSA9IHt9O1xuICAgIH1cbiAgICBjbmYuc3RhdGUuYXJyb3dNYXJrZXJBYnNvbHV0ZSA9IGNuZi5hcnJvd01hcmtlckFic29sdXRlO1xuICAgIGRiLmNsZWFyKCk7XG4gIH1cbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/stateDiagram-133e3642.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/stateDiagram-v2-6371a76b.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/stateDiagram-v2-6371a76b.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles-fa41df25.js */ \"../../../node_modules/mermaid/dist/styles-fa41df25.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _index_a92ac404_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index-a92ac404.js */ \"../../../node_modules/mermaid/dist/index-a92ac404.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3-es/src/dagre/index.js */ \"../../../node_modules/dagre-d3-es/src/dagre/index.js\");\n/* harmony import */ var dagre_d3_es_src_graphlib_json_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/json.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/json.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SHAPE_STATE = \"rect\";\nconst SHAPE_STATE_WITH_DESC = \"rectWithTitle\";\nconst SHAPE_START = \"start\";\nconst SHAPE_END = \"end\";\nconst SHAPE_DIVIDER = \"divider\";\nconst SHAPE_GROUP = \"roundedWithTitle\";\nconst SHAPE_NOTE = \"note\";\nconst SHAPE_NOTEGROUP = \"noteGroup\";\nconst CSS_DIAGRAM = \"statediagram\";\nconst CSS_STATE = \"state\";\nconst CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nconst CSS_EDGE = \"transition\";\nconst CSS_NOTE = \"note\";\nconst CSS_NOTE_EDGE = \"note-edge\";\nconst CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nconst CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nconst CSS_CLUSTER = \"cluster\";\nconst CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nconst CSS_CLUSTER_ALT = \"cluster-alt\";\nconst CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\nconst PARENT = \"parent\";\nconst NOTE = \"note\";\nconst DOMID_STATE = \"state\";\nconst DOMID_TYPE_SPACER = \"----\";\nconst NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nconst PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\nconst G_EDGE_STYLE = \"fill:none\";\nconst G_EDGE_ARROWHEADSTYLE = \"fill: #333\";\nconst G_EDGE_LABELPOS = \"c\";\nconst G_EDGE_LABELTYPE = \"text\";\nconst G_EDGE_THICKNESS = \"normal\";\nlet nodeDb = {};\nlet graphItemCount = 0;\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n cnf[key];\n }\n};\nconst getClasses = function(text, diagramObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.trace(\"Extracting classes\");\n diagramObj.db.clear();\n try {\n diagramObj.parser.parse(text);\n diagramObj.db.extract(diagramObj.db.getRootDocV2());\n return diagramObj.db.getClasses();\n } catch (e) {\n return e;\n }\n};\nfunction getClassesFromDbInfo(dbInfoItem) {\n if (dbInfoItem === void 0 || dbInfoItem === null) {\n return \"\";\n } else {\n if (dbInfoItem.classes) {\n return dbInfoItem.classes.join(\" \");\n } else {\n return \"\";\n }\n }\n}\nfunction stateDomId(itemId = \"\", counter = 0, type = \"\", typeSpacer = DOMID_TYPE_SPACER) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : \"\";\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\nconst setupNode = (g, parent, parsedItem, diagramStates, diagramDb, altFlag) => {\n const itemId = parsedItem.id;\n const classStr = getClassesFromDbInfo(diagramStates[itemId]);\n if (itemId !== \"root\") {\n let shape = SHAPE_STATE;\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n }\n if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.D) {\n shape = parsedItem.type;\n }\n if (!nodeDb[itemId]) {\n nodeDb[itemId] = {\n id: itemId,\n shape,\n description: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.sanitizeText(itemId, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)()),\n classes: `${classStr} ${CSS_DIAGRAM_STATE}`\n };\n }\n const newNode = nodeDb[itemId];\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description.length > 0) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.sanitizeTextOrArray(newNode.description, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)());\n }\n if (newNode.description.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n newNode.shape = SHAPE_STATE;\n }\n if (!newNode.type && parsedItem.doc) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"Setting cluster for \", itemId, getDir(parsedItem));\n newNode.type = \"group\";\n newNode.dir = getDir(parsedItem);\n newNode.shape = parsedItem.type === _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.a ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.classes = newNode.classes + \" \" + CSS_DIAGRAM_CLUSTER + \" \" + (altFlag ? CSS_DIAGRAM_CLUSTER_ALT : \"\");\n }\n const nodeData = {\n labelStyle: \"\",\n shape: newNode.shape,\n labelText: newNode.description,\n // typeof newNode.description === 'object'\n // ? newNode.description[0]\n // : newNode.description,\n classes: newNode.classes,\n style: \"\",\n //styles.style,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n nodeData.centerLabel = true;\n if (parsedItem.note) {\n const noteData = {\n labelStyle: \"\",\n shape: SHAPE_NOTE,\n labelText: parsedItem.note.text,\n classes: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n style: \"\",\n // styles.style,\n id: itemId + NOTE_ID + \"-\" + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: \"\",\n shape: SHAPE_NOTEGROUP,\n labelText: parsedItem.note.text,\n classes: newNode.classes,\n style: \"\",\n // styles.style,\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: \"group\",\n padding: 0\n //getConfig().flowchart.padding\n };\n graphItemCount++;\n const parentNodeId = itemId + PARENT_ID;\n g.setNode(parentNodeId, groupData);\n g.setNode(noteData.id, noteData);\n g.setNode(itemId, nodeData);\n g.setParent(itemId, parentNodeId);\n g.setParent(noteData.id, parentNodeId);\n let from = itemId;\n let to = noteData.id;\n if (parsedItem.note.position === \"left of\") {\n from = noteData.id;\n to = itemId;\n }\n g.setEdge(from, to, {\n arrowhead: \"none\",\n arrowType: \"\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS\n });\n } else {\n g.setNode(itemId, nodeData);\n }\n }\n if (parent && parent.id !== \"root\") {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.trace(\"Setting node \", itemId, \" to be child of its parent \", parent.id);\n g.setParent(itemId, parent.id);\n }\n if (parsedItem.doc) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.trace(\"Adding nodes children \");\n setupDoc(g, parsedItem, parsedItem.doc, diagramStates, diagramDb, !altFlag);\n }\n};\nconst setupDoc = (g, parentParsedItem, doc, diagramStates, diagramDb, altFlag) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.trace(\"items\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.b:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.D:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.S:\n {\n setupNode(g, parentParsedItem, item.state1, diagramStates, diagramDb, altFlag);\n setupNode(g, parentParsedItem, item.state2, diagramStates, diagramDb, altFlag);\n const edgeData = {\n id: \"edge\" + graphItemCount,\n arrowhead: \"normal\",\n arrowTypeEnd: \"arrow_barb\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n label: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.e.sanitizeText(item.description, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE\n };\n g.setEdge(item.state1.id, item.state2.id, edgeData, graphItemCount);\n graphItemCount++;\n }\n break;\n }\n });\n};\nconst getDir = (parsedItem, defaultDir = _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.c) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (let i = 0; i < parsedItem.doc.length; i++) {\n const parsedItemDoc = parsedItem.doc[i];\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n};\nconst draw = async function(text, id, _version, diag) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(\"Drawing state diagram (v2)\", id);\n nodeDb = {};\n diag.db.getDirection();\n const { securityLevel, state: conf } = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.c)();\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(diag.db.getRootDocV2());\n diag.db.extract(diag.db.getRootDocV2());\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.info(diag.db.getRootDocV2());\n const diagramStates = diag.db.getStates();\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: getDir(diag.db.getRootDocV2()),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n setupNode(g, void 0, diag.db.getRootDocV2(), diagramStates, diag.db, true);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await (0,_index_a92ac404_js__WEBPACK_IMPORTED_MODULE_10__.r)(element, g, [\"barb\"], CSS_DIAGRAM, id);\n const padding = 8;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.u.insertTitle(svg, \"statediagramTitleText\", conf.titleTopMargin, diag.db.getDiagramTitle());\n const bounds = svg.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n svg.attr(\"class\", CSS_DIAGRAM);\n const svgBounds = svg.node().getBBox();\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.i)(svg, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_8__.l.debug(`viewBox ${vBox}`);\n svg.attr(\"viewBox\", vBox);\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", SHAPE_STATE);\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n};\nconst renderer = {\n setConf,\n getClasses,\n draw\n};\nconst diagram = {\n parser: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.p,\n db: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.d,\n renderer,\n styles: _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.s,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _styles_fa41df25_js__WEBPACK_IMPORTED_MODULE_9__.d.clear();\n }\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdGF0ZURpYWdyYW0tdjItNjM3MWE3NmIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXVMO0FBQ3pIO0FBQ2xDO0FBQ3FGO0FBQy9EO0FBQy9CO0FBQ0o7QUFDa0I7QUFDZDtBQUNIO0FBQ2M7QUFDZDtBQUNjO0FBQ1U7QUFDRTtBQUNiO0FBQ0s7QUFDQTtBQUNIO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLFlBQVksR0FBRyxVQUFVO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixVQUFVLEVBQUUsY0FBYztBQUN4RCw0QkFBNEIsWUFBWSxHQUFHLFNBQVM7QUFDcEQ7QUFDQSwrQkFBK0IsWUFBWSxHQUFHLFlBQVk7QUFDMUQ7QUFDQSxtQ0FBbUMsWUFBWSxHQUFHLGdCQUFnQjtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrQkFBa0IsRUFBRSxLQUFLO0FBQzVDLHFCQUFxQixrQkFBa0IsRUFBRSxPQUFPO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELFdBQVcsRUFBRSxLQUFLO0FBQzFFLFlBQVksWUFBWSxHQUFHLE9BQU8sRUFBRSxRQUFRLEdBQUcsUUFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0RBQWtCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnRUFBbUIsU0FBUyx1REFBUztBQUMxRCxvQkFBb0IsVUFBVSxFQUFFLGtCQUFrQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHVFQUEwQixzQkFBc0IsdURBQVM7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sd0RBQVE7QUFDZDtBQUNBO0FBQ0EsMENBQTBDLGtEQUFZO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5REFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLElBQUkseURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0EsV0FBVyxrREFBVTtBQUNyQjtBQUNBO0FBQ0EsV0FBVyxrREFBa0I7QUFDN0I7QUFDQTtBQUNBLFdBQVcsa0RBQWE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdFQUFtQixtQkFBbUIsdURBQVM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHlDQUF5QyxrREFBc0I7QUFDL0Q7QUFDQTtBQUNBLG9CQUFvQiwyQkFBMkI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3REFBUTtBQUNWO0FBQ0E7QUFDQSxVQUFVLDZCQUE2QixFQUFFLHVEQUFTO0FBQ2xEO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQSxnQkFBZ0Isb0VBQWM7QUFDOUI7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwwQ0FBTTtBQUMzQjtBQUNBLDZDQUE2QywwQ0FBTSxtREFBbUQsMENBQU07QUFDNUcsa0NBQWtDLEdBQUc7QUFDckM7QUFDQSxRQUFRLHNEQUFNO0FBQ2Q7QUFDQSxFQUFFLCtEQUFpQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx1REFBZ0I7QUFDbEIsa0JBQWtCLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxPQUFPO0FBQ3BGLEVBQUUseURBQVMsWUFBWSxLQUFLO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUixJQUFJO0FBQ0o7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksd0RBQVE7QUFDWjtBQUNBO0FBR0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdGF0ZURpYWdyYW0tdjItNjM3MWE3NmIuanM/MTY0MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEIGFzIERFRkFVTFRfU1RBVEVfVFlQRSwgYSBhcyBESVZJREVSX1RZUEUsIFMgYXMgU1RNVF9SRUxBVElPTiwgYiBhcyBTVE1UX1NUQVRFLCBjIGFzIERFRkFVTFRfTkVTVEVEX0RPQ19ESVIsIHAgYXMgcGFyc2VyLCBkIGFzIGRiLCBzIGFzIHN0eWxlcyB9IGZyb20gXCIuL3N0eWxlcy1mYTQxZGYyNS5qc1wiO1xuaW1wb3J0ICogYXMgZ3JhcGhsaWIgZnJvbSBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSBcImQzXCI7XG5pbXBvcnQgeyBsIGFzIGxvZywgYyBhcyBnZXRDb25maWcsIHUgYXMgdXRpbHMsIGkgYXMgY29uZmlndXJlU3ZnU2l6ZSwgZSBhcyBjb21tb24gfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyByIGFzIHJlbmRlciB9IGZyb20gXCIuL2luZGV4LWE5MmFjNDA0LmpzXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJraHJvbWFcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9tZW1vaXplLmpzXCI7XG5pbXBvcnQgXCJzdHlsaXNcIjtcbmltcG9ydCBcImxvZGFzaC1lcy9pc0VtcHR5LmpzXCI7XG5pbXBvcnQgXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUvaW5kZXguanNcIjtcbmltcG9ydCBcImRhZ3JlLWQzLWVzL3NyYy9ncmFwaGxpYi9qc29uLmpzXCI7XG5pbXBvcnQgXCIuL2VkZ2VzLTQ5YWM0M2EyLmpzXCI7XG5pbXBvcnQgXCIuL2NyZWF0ZVRleHQtM2RmNjMwYjUuanNcIjtcbmltcG9ydCBcIm1kYXN0LXV0aWwtZnJvbS1tYXJrZG93blwiO1xuaW1wb3J0IFwiLi9zdmdEcmF3LTBmY2M4MTNkLmpzXCI7XG5jb25zdCBTSEFQRV9TVEFURSA9IFwicmVjdFwiO1xuY29uc3QgU0hBUEVfU1RBVEVfV0lUSF9ERVNDID0gXCJyZWN0V2l0aFRpdGxlXCI7XG5jb25zdCBTSEFQRV9TVEFSVCA9IFwic3RhcnRcIjtcbmNvbnN0IFNIQVBFX0VORCA9IFwiZW5kXCI7XG5jb25zdCBTSEFQRV9ESVZJREVSID0gXCJkaXZpZGVyXCI7XG5jb25zdCBTSEFQRV9HUk9VUCA9IFwicm91bmRlZFdpdGhUaXRsZVwiO1xuY29uc3QgU0hBUEVfTk9URSA9IFwibm90ZVwiO1xuY29uc3QgU0hBUEVfTk9URUdST1VQID0gXCJub3RlR3JvdXBcIjtcbmNvbnN0IENTU19ESUFHUkFNID0gXCJzdGF0ZWRpYWdyYW1cIjtcbmNvbnN0IENTU19TVEFURSA9IFwic3RhdGVcIjtcbmNvbnN0IENTU19ESUFHUkFNX1NUQVRFID0gYCR7Q1NTX0RJQUdSQU19LSR7Q1NTX1NUQVRFfWA7XG5jb25zdCBDU1NfRURHRSA9IFwidHJhbnNpdGlvblwiO1xuY29uc3QgQ1NTX05PVEUgPSBcIm5vdGVcIjtcbmNvbnN0IENTU19OT1RFX0VER0UgPSBcIm5vdGUtZWRnZVwiO1xuY29uc3QgQ1NTX0VER0VfTk9URV9FREdFID0gYCR7Q1NTX0VER0V9ICR7Q1NTX05PVEVfRURHRX1gO1xuY29uc3QgQ1NTX0RJQUdSQU1fTk9URSA9IGAke0NTU19ESUFHUkFNfS0ke0NTU19OT1RFfWA7XG5jb25zdCBDU1NfQ0xVU1RFUiA9IFwiY2x1c3RlclwiO1xuY29uc3QgQ1NTX0RJQUdSQU1fQ0xVU1RFUiA9IGAke0NTU19ESUFHUkFNfS0ke0NTU19DTFVTVEVSfWA7XG5jb25zdCBDU1NfQ0xVU1RFUl9BTFQgPSBcImNsdXN0ZXItYWx0XCI7XG5jb25zdCBDU1NfRElBR1JBTV9DTFVTVEVSX0FMVCA9IGAke0NTU19ESUFHUkFNfS0ke0NTU19DTFVTVEVSX0FMVH1gO1xuY29uc3QgUEFSRU5UID0gXCJwYXJlbnRcIjtcbmNvbnN0IE5PVEUgPSBcIm5vdGVcIjtcbmNvbnN0IERPTUlEX1NUQVRFID0gXCJzdGF0ZVwiO1xuY29uc3QgRE9NSURfVFlQRV9TUEFDRVIgPSBcIi0tLS1cIjtcbmNvbnN0IE5PVEVfSUQgPSBgJHtET01JRF9UWVBFX1NQQUNFUn0ke05PVEV9YDtcbmNvbnN0IFBBUkVOVF9JRCA9IGAke0RPTUlEX1RZUEVfU1BBQ0VSfSR7UEFSRU5UfWA7XG5jb25zdCBHX0VER0VfU1RZTEUgPSBcImZpbGw6bm9uZVwiO1xuY29uc3QgR19FREdFX0FSUk9XSEVBRFNUWUxFID0gXCJmaWxsOiAjMzMzXCI7XG5jb25zdCBHX0VER0VfTEFCRUxQT1MgPSBcImNcIjtcbmNvbnN0IEdfRURHRV9MQUJFTFRZUEUgPSBcInRleHRcIjtcbmNvbnN0IEdfRURHRV9USElDS05FU1MgPSBcIm5vcm1hbFwiO1xubGV0IG5vZGVEYiA9IHt9O1xubGV0IGdyYXBoSXRlbUNvdW50ID0gMDtcbmNvbnN0IHNldENvbmYgPSBmdW5jdGlvbihjbmYpIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNuZik7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjbmZba2V5XTtcbiAgfVxufTtcbmNvbnN0IGdldENsYXNzZXMgPSBmdW5jdGlvbih0ZXh0LCBkaWFncmFtT2JqKSB7XG4gIGxvZy50cmFjZShcIkV4dHJhY3RpbmcgY2xhc3Nlc1wiKTtcbiAgZGlhZ3JhbU9iai5kYi5jbGVhcigpO1xuICB0cnkge1xuICAgIGRpYWdyYW1PYmoucGFyc2VyLnBhcnNlKHRleHQpO1xuICAgIGRpYWdyYW1PYmouZGIuZXh0cmFjdChkaWFncmFtT2JqLmRiLmdldFJvb3REb2NWMigpKTtcbiAgICByZXR1cm4gZGlhZ3JhbU9iai5kYi5nZXRDbGFzc2VzKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZTtcbiAgfVxufTtcbmZ1bmN0aW9uIGdldENsYXNzZXNGcm9tRGJJbmZvKGRiSW5mb0l0ZW0pIHtcbiAgaWYgKGRiSW5mb0l0ZW0gPT09IHZvaWQgMCB8fCBkYkluZm9JdGVtID09PSBudWxsKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRiSW5mb0l0ZW0uY2xhc3Nlcykge1xuICAgICAgcmV0dXJuIGRiSW5mb0l0ZW0uY2xhc3Nlcy5qb2luKFwiIFwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzdGF0ZURvbUlkKGl0ZW1JZCA9IFwiXCIsIGNvdW50ZXIgPSAwLCB0eXBlID0gXCJcIiwgdHlwZVNwYWNlciA9IERPTUlEX1RZUEVfU1BBQ0VSKSB7XG4gIGNvbnN0IHR5cGVTdHIgPSB0eXBlICE9PSBudWxsICYmIHR5cGUubGVuZ3RoID4gMCA/IGAke3R5cGVTcGFjZXJ9JHt0eXBlfWAgOiBcIlwiO1xuICByZXR1cm4gYCR7RE9NSURfU1RBVEV9LSR7aXRlbUlkfSR7dHlwZVN0cn0tJHtjb3VudGVyfWA7XG59XG5jb25zdCBzZXR1cE5vZGUgPSAoZywgcGFyZW50LCBwYXJzZWRJdGVtLCBkaWFncmFtU3RhdGVzLCBkaWFncmFtRGIsIGFsdEZsYWcpID0+IHtcbiAgY29uc3QgaXRlbUlkID0gcGFyc2VkSXRlbS5pZDtcbiAgY29uc3QgY2xhc3NTdHIgPSBnZXRDbGFzc2VzRnJvbURiSW5mbyhkaWFncmFtU3RhdGVzW2l0ZW1JZF0pO1xuICBpZiAoaXRlbUlkICE9PSBcInJvb3RcIikge1xuICAgIGxldCBzaGFwZSA9IFNIQVBFX1NUQVRFO1xuICAgIGlmIChwYXJzZWRJdGVtLnN0YXJ0ID09PSB0cnVlKSB7XG4gICAgICBzaGFwZSA9IFNIQVBFX1NUQVJUO1xuICAgIH1cbiAgICBpZiAocGFyc2VkSXRlbS5zdGFydCA9PT0gZmFsc2UpIHtcbiAgICAgIHNoYXBlID0gU0hBUEVfRU5EO1xuICAgIH1cbiAgICBpZiAocGFyc2VkSXRlbS50eXBlICE9PSBERUZBVUxUX1NUQVRFX1RZUEUpIHtcbiAgICAgIHNoYXBlID0gcGFyc2VkSXRlbS50eXBlO1xuICAgIH1cbiAgICBpZiAoIW5vZGVEYltpdGVtSWRdKSB7XG4gICAgICBub2RlRGJbaXRlbUlkXSA9IHtcbiAgICAgICAgaWQ6IGl0ZW1JZCxcbiAgICAgICAgc2hhcGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBjb21tb24uc2FuaXRpemVUZXh0KGl0ZW1JZCwgZ2V0Q29uZmlnKCkpLFxuICAgICAgICBjbGFzc2VzOiBgJHtjbGFzc1N0cn0gJHtDU1NfRElBR1JBTV9TVEFURX1gXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBuZXdOb2RlID0gbm9kZURiW2l0ZW1JZF07XG4gICAgaWYgKHBhcnNlZEl0ZW0uZGVzY3JpcHRpb24pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld05vZGUuZGVzY3JpcHRpb24pKSB7XG4gICAgICAgIG5ld05vZGUuc2hhcGUgPSBTSEFQRV9TVEFURV9XSVRIX0RFU0M7XG4gICAgICAgIG5ld05vZGUuZGVzY3JpcHRpb24ucHVzaChwYXJzZWRJdGVtLmRlc2NyaXB0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdOb2RlLmRlc2NyaXB0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBuZXdOb2RlLnNoYXBlID0gU0hBUEVfU1RBVEVfV0lUSF9ERVNDO1xuICAgICAgICAgIGlmIChuZXdOb2RlLmRlc2NyaXB0aW9uID09PSBpdGVtSWQpIHtcbiAgICAgICAgICAgIG5ld05vZGUuZGVzY3JpcHRpb24gPSBbcGFyc2VkSXRlbS5kZXNjcmlwdGlvbl07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld05vZGUuZGVzY3JpcHRpb24gPSBbbmV3Tm9kZS5kZXNjcmlwdGlvbiwgcGFyc2VkSXRlbS5kZXNjcmlwdGlvbl07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld05vZGUuc2hhcGUgPSBTSEFQRV9TVEFURTtcbiAgICAgICAgICBuZXdOb2RlLmRlc2NyaXB0aW9uID0gcGFyc2VkSXRlbS5kZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV3Tm9kZS5kZXNjcmlwdGlvbiA9IGNvbW1vbi5zYW5pdGl6ZVRleHRPckFycmF5KG5ld05vZGUuZGVzY3JpcHRpb24sIGdldENvbmZpZygpKTtcbiAgICB9XG4gICAgaWYgKG5ld05vZGUuZGVzY3JpcHRpb24ubGVuZ3RoID09PSAxICYmIG5ld05vZGUuc2hhcGUgPT09IFNIQVBFX1NUQVRFX1dJVEhfREVTQykge1xuICAgICAgbmV3Tm9kZS5zaGFwZSA9IFNIQVBFX1NUQVRFO1xuICAgIH1cbiAgICBpZiAoIW5ld05vZGUudHlwZSAmJiBwYXJzZWRJdGVtLmRvYykge1xuICAgICAgbG9nLmluZm8oXCJTZXR0aW5nIGNsdXN0ZXIgZm9yIFwiLCBpdGVtSWQsIGdldERpcihwYXJzZWRJdGVtKSk7XG4gICAgICBuZXdOb2RlLnR5cGUgPSBcImdyb3VwXCI7XG4gICAgICBuZXdOb2RlLmRpciA9IGdldERpcihwYXJzZWRJdGVtKTtcbiAgICAgIG5ld05vZGUuc2hhcGUgPSBwYXJzZWRJdGVtLnR5cGUgPT09IERJVklERVJfVFlQRSA/IFNIQVBFX0RJVklERVIgOiBTSEFQRV9HUk9VUDtcbiAgICAgIG5ld05vZGUuY2xhc3NlcyA9IG5ld05vZGUuY2xhc3NlcyArIFwiIFwiICsgQ1NTX0RJQUdSQU1fQ0xVU1RFUiArIFwiIFwiICsgKGFsdEZsYWcgPyBDU1NfRElBR1JBTV9DTFVTVEVSX0FMVCA6IFwiXCIpO1xuICAgIH1cbiAgICBjb25zdCBub2RlRGF0YSA9IHtcbiAgICAgIGxhYmVsU3R5bGU6IFwiXCIsXG4gICAgICBzaGFwZTogbmV3Tm9kZS5zaGFwZSxcbiAgICAgIGxhYmVsVGV4dDogbmV3Tm9kZS5kZXNjcmlwdGlvbixcbiAgICAgIC8vIHR5cGVvZiBuZXdOb2RlLmRlc2NyaXB0aW9uID09PSAnb2JqZWN0J1xuICAgICAgLy8gICA/IG5ld05vZGUuZGVzY3JpcHRpb25bMF1cbiAgICAgIC8vICAgOiBuZXdOb2RlLmRlc2NyaXB0aW9uLFxuICAgICAgY2xhc3NlczogbmV3Tm9kZS5jbGFzc2VzLFxuICAgICAgc3R5bGU6IFwiXCIsXG4gICAgICAvL3N0eWxlcy5zdHlsZSxcbiAgICAgIGlkOiBpdGVtSWQsXG4gICAgICBkaXI6IG5ld05vZGUuZGlyLFxuICAgICAgZG9tSWQ6IHN0YXRlRG9tSWQoaXRlbUlkLCBncmFwaEl0ZW1Db3VudCksXG4gICAgICB0eXBlOiBuZXdOb2RlLnR5cGUsXG4gICAgICBwYWRkaW5nOiAxNVxuICAgICAgLy9nZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZ1xuICAgIH07XG4gICAgbm9kZURhdGEuY2VudGVyTGFiZWwgPSB0cnVlO1xuICAgIGlmIChwYXJzZWRJdGVtLm5vdGUpIHtcbiAgICAgIGNvbnN0IG5vdGVEYXRhID0ge1xuICAgICAgICBsYWJlbFN0eWxlOiBcIlwiLFxuICAgICAgICBzaGFwZTogU0hBUEVfTk9URSxcbiAgICAgICAgbGFiZWxUZXh0OiBwYXJzZWRJdGVtLm5vdGUudGV4dCxcbiAgICAgICAgY2xhc3NlczogQ1NTX0RJQUdSQU1fTk9URSxcbiAgICAgICAgLy8gdXNlSHRtbExhYmVsczogZmFsc2UsXG4gICAgICAgIHN0eWxlOiBcIlwiLFxuICAgICAgICAvLyBzdHlsZXMuc3R5bGUsXG4gICAgICAgIGlkOiBpdGVtSWQgKyBOT1RFX0lEICsgXCItXCIgKyBncmFwaEl0ZW1Db3VudCxcbiAgICAgICAgZG9tSWQ6IHN0YXRlRG9tSWQoaXRlbUlkLCBncmFwaEl0ZW1Db3VudCwgTk9URSksXG4gICAgICAgIHR5cGU6IG5ld05vZGUudHlwZSxcbiAgICAgICAgcGFkZGluZzogMTVcbiAgICAgICAgLy9nZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZ1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGdyb3VwRGF0YSA9IHtcbiAgICAgICAgbGFiZWxTdHlsZTogXCJcIixcbiAgICAgICAgc2hhcGU6IFNIQVBFX05PVEVHUk9VUCxcbiAgICAgICAgbGFiZWxUZXh0OiBwYXJzZWRJdGVtLm5vdGUudGV4dCxcbiAgICAgICAgY2xhc3NlczogbmV3Tm9kZS5jbGFzc2VzLFxuICAgICAgICBzdHlsZTogXCJcIixcbiAgICAgICAgLy8gc3R5bGVzLnN0eWxlLFxuICAgICAgICBpZDogaXRlbUlkICsgUEFSRU5UX0lELFxuICAgICAgICBkb21JZDogc3RhdGVEb21JZChpdGVtSWQsIGdyYXBoSXRlbUNvdW50LCBQQVJFTlQpLFxuICAgICAgICB0eXBlOiBcImdyb3VwXCIsXG4gICAgICAgIHBhZGRpbmc6IDBcbiAgICAgICAgLy9nZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZ1xuICAgICAgfTtcbiAgICAgIGdyYXBoSXRlbUNvdW50Kys7XG4gICAgICBjb25zdCBwYXJlbnROb2RlSWQgPSBpdGVtSWQgKyBQQVJFTlRfSUQ7XG4gICAgICBnLnNldE5vZGUocGFyZW50Tm9kZUlkLCBncm91cERhdGEpO1xuICAgICAgZy5zZXROb2RlKG5vdGVEYXRhLmlkLCBub3RlRGF0YSk7XG4gICAgICBnLnNldE5vZGUoaXRlbUlkLCBub2RlRGF0YSk7XG4gICAgICBnLnNldFBhcmVudChpdGVtSWQsIHBhcmVudE5vZGVJZCk7XG4gICAgICBnLnNldFBhcmVudChub3RlRGF0YS5pZCwgcGFyZW50Tm9kZUlkKTtcbiAgICAgIGxldCBmcm9tID0gaXRlbUlkO1xuICAgICAgbGV0IHRvID0gbm90ZURhdGEuaWQ7XG4gICAgICBpZiAocGFyc2VkSXRlbS5ub3RlLnBvc2l0aW9uID09PSBcImxlZnQgb2ZcIikge1xuICAgICAgICBmcm9tID0gbm90ZURhdGEuaWQ7XG4gICAgICAgIHRvID0gaXRlbUlkO1xuICAgICAgfVxuICAgICAgZy5zZXRFZGdlKGZyb20sIHRvLCB7XG4gICAgICAgIGFycm93aGVhZDogXCJub25lXCIsXG4gICAgICAgIGFycm93VHlwZTogXCJcIixcbiAgICAgICAgc3R5bGU6IEdfRURHRV9TVFlMRSxcbiAgICAgICAgbGFiZWxTdHlsZTogXCJcIixcbiAgICAgICAgY2xhc3NlczogQ1NTX0VER0VfTk9URV9FREdFLFxuICAgICAgICBhcnJvd2hlYWRTdHlsZTogR19FREdFX0FSUk9XSEVBRFNUWUxFLFxuICAgICAgICBsYWJlbHBvczogR19FREdFX0xBQkVMUE9TLFxuICAgICAgICBsYWJlbFR5cGU6IEdfRURHRV9MQUJFTFRZUEUsXG4gICAgICAgIHRoaWNrbmVzczogR19FREdFX1RISUNLTkVTU1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGcuc2V0Tm9kZShpdGVtSWQsIG5vZGVEYXRhKTtcbiAgICB9XG4gIH1cbiAgaWYgKHBhcmVudCAmJiBwYXJlbnQuaWQgIT09IFwicm9vdFwiKSB7XG4gICAgbG9nLnRyYWNlKFwiU2V0dGluZyBub2RlIFwiLCBpdGVtSWQsIFwiIHRvIGJlIGNoaWxkIG9mIGl0cyBwYXJlbnQgXCIsIHBhcmVudC5pZCk7XG4gICAgZy5zZXRQYXJlbnQoaXRlbUlkLCBwYXJlbnQuaWQpO1xuICB9XG4gIGlmIChwYXJzZWRJdGVtLmRvYykge1xuICAgIGxvZy50cmFjZShcIkFkZGluZyBub2RlcyBjaGlsZHJlbiBcIik7XG4gICAgc2V0dXBEb2MoZywgcGFyc2VkSXRlbSwgcGFyc2VkSXRlbS5kb2MsIGRpYWdyYW1TdGF0ZXMsIGRpYWdyYW1EYiwgIWFsdEZsYWcpO1xuICB9XG59O1xuY29uc3Qgc2V0dXBEb2MgPSAoZywgcGFyZW50UGFyc2VkSXRlbSwgZG9jLCBkaWFncmFtU3RhdGVzLCBkaWFncmFtRGIsIGFsdEZsYWcpID0+IHtcbiAgbG9nLnRyYWNlKFwiaXRlbXNcIiwgZG9jKTtcbiAgZG9jLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBzd2l0Y2ggKGl0ZW0uc3RtdCkge1xuICAgICAgY2FzZSBTVE1UX1NUQVRFOlxuICAgICAgICBzZXR1cE5vZGUoZywgcGFyZW50UGFyc2VkSXRlbSwgaXRlbSwgZGlhZ3JhbVN0YXRlcywgZGlhZ3JhbURiLCBhbHRGbGFnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERFRkFVTFRfU1RBVEVfVFlQRTpcbiAgICAgICAgc2V0dXBOb2RlKGcsIHBhcmVudFBhcnNlZEl0ZW0sIGl0ZW0sIGRpYWdyYW1TdGF0ZXMsIGRpYWdyYW1EYiwgYWx0RmxhZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTVE1UX1JFTEFUSU9OOlxuICAgICAgICB7XG4gICAgICAgICAgc2V0dXBOb2RlKGcsIHBhcmVudFBhcnNlZEl0ZW0sIGl0ZW0uc3RhdGUxLCBkaWFncmFtU3RhdGVzLCBkaWFncmFtRGIsIGFsdEZsYWcpO1xuICAgICAgICAgIHNldHVwTm9kZShnLCBwYXJlbnRQYXJzZWRJdGVtLCBpdGVtLnN0YXRlMiwgZGlhZ3JhbVN0YXRlcywgZGlhZ3JhbURiLCBhbHRGbGFnKTtcbiAgICAgICAgICBjb25zdCBlZGdlRGF0YSA9IHtcbiAgICAgICAgICAgIGlkOiBcImVkZ2VcIiArIGdyYXBoSXRlbUNvdW50LFxuICAgICAgICAgICAgYXJyb3doZWFkOiBcIm5vcm1hbFwiLFxuICAgICAgICAgICAgYXJyb3dUeXBlRW5kOiBcImFycm93X2JhcmJcIixcbiAgICAgICAgICAgIHN0eWxlOiBHX0VER0VfU1RZTEUsXG4gICAgICAgICAgICBsYWJlbFN0eWxlOiBcIlwiLFxuICAgICAgICAgICAgbGFiZWw6IGNvbW1vbi5zYW5pdGl6ZVRleHQoaXRlbS5kZXNjcmlwdGlvbiwgZ2V0Q29uZmlnKCkpLFxuICAgICAgICAgICAgYXJyb3doZWFkU3R5bGU6IEdfRURHRV9BUlJPV0hFQURTVFlMRSxcbiAgICAgICAgICAgIGxhYmVscG9zOiBHX0VER0VfTEFCRUxQT1MsXG4gICAgICAgICAgICBsYWJlbFR5cGU6IEdfRURHRV9MQUJFTFRZUEUsXG4gICAgICAgICAgICB0aGlja25lc3M6IEdfRURHRV9USElDS05FU1MsXG4gICAgICAgICAgICBjbGFzc2VzOiBDU1NfRURHRVxuICAgICAgICAgIH07XG4gICAgICAgICAgZy5zZXRFZGdlKGl0ZW0uc3RhdGUxLmlkLCBpdGVtLnN0YXRlMi5pZCwgZWRnZURhdGEsIGdyYXBoSXRlbUNvdW50KTtcbiAgICAgICAgICBncmFwaEl0ZW1Db3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSk7XG59O1xuY29uc3QgZ2V0RGlyID0gKHBhcnNlZEl0ZW0sIGRlZmF1bHREaXIgPSBERUZBVUxUX05FU1RFRF9ET0NfRElSKSA9PiB7XG4gIGxldCBkaXIgPSBkZWZhdWx0RGlyO1xuICBpZiAocGFyc2VkSXRlbS5kb2MpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnNlZEl0ZW0uZG9jLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwYXJzZWRJdGVtRG9jID0gcGFyc2VkSXRlbS5kb2NbaV07XG4gICAgICBpZiAocGFyc2VkSXRlbURvYy5zdG10ID09PSBcImRpclwiKSB7XG4gICAgICAgIGRpciA9IHBhcnNlZEl0ZW1Eb2MudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkaXI7XG59O1xuY29uc3QgZHJhdyA9IGFzeW5jIGZ1bmN0aW9uKHRleHQsIGlkLCBfdmVyc2lvbiwgZGlhZykge1xuICBsb2cuaW5mbyhcIkRyYXdpbmcgc3RhdGUgZGlhZ3JhbSAodjIpXCIsIGlkKTtcbiAgbm9kZURiID0ge307XG4gIGRpYWcuZGIuZ2V0RGlyZWN0aW9uKCk7XG4gIGNvbnN0IHsgc2VjdXJpdHlMZXZlbCwgc3RhdGU6IGNvbmYgfSA9IGdldENvbmZpZygpO1xuICBjb25zdCBub2RlU3BhY2luZyA9IGNvbmYubm9kZVNwYWNpbmcgfHwgNTA7XG4gIGNvbnN0IHJhbmtTcGFjaW5nID0gY29uZi5yYW5rU3BhY2luZyB8fCA1MDtcbiAgbG9nLmluZm8oZGlhZy5kYi5nZXRSb290RG9jVjIoKSk7XG4gIGRpYWcuZGIuZXh0cmFjdChkaWFnLmRiLmdldFJvb3REb2NWMigpKTtcbiAgbG9nLmluZm8oZGlhZy5kYi5nZXRSb290RG9jVjIoKSk7XG4gIGNvbnN0IGRpYWdyYW1TdGF0ZXMgPSBkaWFnLmRiLmdldFN0YXRlcygpO1xuICBjb25zdCBnID0gbmV3IGdyYXBobGliLkdyYXBoKHtcbiAgICBtdWx0aWdyYXBoOiB0cnVlLFxuICAgIGNvbXBvdW5kOiB0cnVlXG4gIH0pLnNldEdyYXBoKHtcbiAgICByYW5rZGlyOiBnZXREaXIoZGlhZy5kYi5nZXRSb290RG9jVjIoKSksXG4gICAgbm9kZXNlcDogbm9kZVNwYWNpbmcsXG4gICAgcmFua3NlcDogcmFua1NwYWNpbmcsXG4gICAgbWFyZ2lueDogOCxcbiAgICBtYXJnaW55OiA4XG4gIH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9KTtcbiAgc2V0dXBOb2RlKGcsIHZvaWQgMCwgZGlhZy5kYi5nZXRSb290RG9jVjIoKSwgZGlhZ3JhbVN0YXRlcywgZGlhZy5kYiwgdHJ1ZSk7XG4gIGxldCBzYW5kYm94RWxlbWVudDtcbiAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgc2FuZGJveEVsZW1lbnQgPSBzZWxlY3QoXCIjaVwiICsgaWQpO1xuICB9XG4gIGNvbnN0IHJvb3QgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNlbGVjdChzYW5kYm94RWxlbWVudC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSA6IHNlbGVjdChcImJvZHlcIik7XG4gIGNvbnN0IHN2ZyA9IHJvb3Quc2VsZWN0KGBbaWQ9XCIke2lkfVwiXWApO1xuICBjb25zdCBlbGVtZW50ID0gcm9vdC5zZWxlY3QoXCIjXCIgKyBpZCArIFwiIGdcIik7XG4gIGF3YWl0IHJlbmRlcihlbGVtZW50LCBnLCBbXCJiYXJiXCJdLCBDU1NfRElBR1JBTSwgaWQpO1xuICBjb25zdCBwYWRkaW5nID0gODtcbiAgdXRpbHMuaW5zZXJ0VGl0bGUoc3ZnLCBcInN0YXRlZGlhZ3JhbVRpdGxlVGV4dFwiLCBjb25mLnRpdGxlVG9wTWFyZ2luLCBkaWFnLmRiLmdldERpYWdyYW1UaXRsZSgpKTtcbiAgY29uc3QgYm91bmRzID0gc3ZnLm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IHdpZHRoID0gYm91bmRzLndpZHRoICsgcGFkZGluZyAqIDI7XG4gIGNvbnN0IGhlaWdodCA9IGJvdW5kcy5oZWlnaHQgKyBwYWRkaW5nICogMjtcbiAgc3ZnLmF0dHIoXCJjbGFzc1wiLCBDU1NfRElBR1JBTSk7XG4gIGNvbnN0IHN2Z0JvdW5kcyA9IHN2Zy5ub2RlKCkuZ2V0QkJveCgpO1xuICBjb25maWd1cmVTdmdTaXplKHN2ZywgaGVpZ2h0LCB3aWR0aCwgY29uZi51c2VNYXhXaWR0aCk7XG4gIGNvbnN0IHZCb3ggPSBgJHtzdmdCb3VuZHMueCAtIHBhZGRpbmd9ICR7c3ZnQm91bmRzLnkgLSBwYWRkaW5nfSAke3dpZHRofSAke2hlaWdodH1gO1xuICBsb2cuZGVidWcoYHZpZXdCb3ggJHt2Qm94fWApO1xuICBzdmcuYXR0cihcInZpZXdCb3hcIiwgdkJveCk7XG4gIGNvbnN0IGxhYmVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD1cIicgKyBpZCArICdcIl0gLmVkZ2VMYWJlbCAubGFiZWwnKTtcbiAgZm9yIChjb25zdCBsYWJlbCBvZiBsYWJlbHMpIHtcbiAgICBjb25zdCBkaW0gPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgY29uc3QgcmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFNIQVBFX1NUQVRFKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcInJ4XCIsIDApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwicnlcIiwgMCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBkaW0ud2lkdGgpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGRpbS5oZWlnaHQpO1xuICAgIGxhYmVsLmluc2VydEJlZm9yZShyZWN0LCBsYWJlbC5maXJzdENoaWxkKTtcbiAgfVxufTtcbmNvbnN0IHJlbmRlcmVyID0ge1xuICBzZXRDb25mLFxuICBnZXRDbGFzc2VzLFxuICBkcmF3XG59O1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgcGFyc2VyLFxuICBkYixcbiAgcmVuZGVyZXIsXG4gIHN0eWxlcyxcbiAgaW5pdDogKGNuZikgPT4ge1xuICAgIGlmICghY25mLnN0YXRlKSB7XG4gICAgICBjbmYuc3RhdGUgPSB7fTtcbiAgICB9XG4gICAgY25mLnN0YXRlLmFycm93TWFya2VyQWJzb2x1dGUgPSBjbmYuYXJyb3dNYXJrZXJBYnNvbHV0ZTtcbiAgICBkYi5jbGVhcigpO1xuICB9XG59O1xuZXhwb3J0IHtcbiAgZGlhZ3JhbVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/stateDiagram-v2-6371a76b.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/styles-5f89df53.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/styles-5f89df53.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"a\": () => (/* binding */ flowStyles),\n/* harmony export */ \"f\": () => (/* binding */ flowRendererV2)\n/* harmony export */ });\n/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3-es/src/graphlib/index.js */ \"../../../node_modules/dagre-d3-es/src/graphlib/index.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flowDb-6a57c1b4.js */ \"../../../node_modules/mermaid/dist/flowDb-6a57c1b4.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _index_a92ac404_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./index-a92ac404.js */ \"../../../node_modules/mermaid/dist/index-a92ac404.js\");\n/* harmony import */ var dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dagre-d3-es/src/dagre-js/label/add-html-label.js */ \"../../../node_modules/dagre-d3-es/src/dagre-js/label/add-html-label.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/channel.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/rgba.js\");\n\n\n\n\n\n\n\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, doc, diagObj) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.k)(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"vertex\", vertex, vertex.labelType);\n if (vertex.labelType === \"markdown\") {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"vertex\", vertex, vertex.labelType);\n } else {\n if ((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.n)((0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.c)().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = (0,dagre_d3_es_src_dagre_js_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_2__.addHtmlLabel)(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.e.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.c)().flowchart.padding\n });\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"setNode\", {\n labelStyle: styles.labelStyle,\n labelType: vertex.labelType,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: diagObj.db.lookUpDomId(vertex.id),\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n dir: vertex.dir,\n props: vertex.props,\n padding: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.c)().flowchart.padding\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"abc78 edges = \", edges);\n let cnt = 0;\n let linkIdCnt = {};\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.k)(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\n switch (edge.type) {\n case \"double_arrow_cross\":\n edgeData.arrowTypeStart = \"arrow_cross\";\n case \"arrow_cross\":\n edgeData.arrowTypeEnd = \"arrow_cross\";\n break;\n case \"double_arrow_point\":\n edgeData.arrowTypeStart = \"arrow_point\";\n case \"arrow_point\":\n edgeData.arrowTypeEnd = \"arrow_point\";\n break;\n case \"double_arrow_circle\":\n edgeData.arrowTypeStart = \"arrow_circle\";\n case \"arrow_circle\":\n edgeData.arrowTypeEnd = \"arrow_circle\";\n break;\n }\n let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"solid\";\n break;\n case \"dotted\":\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"dotted\";\n edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n case \"invisible\":\n edgeData.thickness = \"invisible\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 0;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.k)(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.o)(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.o)(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n } else {\n edgeData.curve = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.o)(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__.curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.e.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Extracting classes\");\n diagObj.db.clear();\n try {\n diagObj.parse(text);\n return diagObj.db.getClasses();\n } catch (e) {\n return;\n }\n};\nconst draw = async function(text, id, _version, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Drawing flowchart\");\n diagObj.db.clear();\n _flowDb_6a57c1b4_js__WEBPACK_IMPORTED_MODULE_4__.f.setGen(\"gen-2\");\n diagObj.parser.parse(text);\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const { securityLevel, flowchart: conf2 } = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.c)();\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_0__.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 0,\n marginy: 0\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Subgraphs - \", subGraphs);\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Subgraph - \", subG);\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const vert = diagObj.db.getVertices();\n const edges = diagObj.db.getEdges();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Edges\", edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n (0,d3__WEBPACK_IMPORTED_MODULE_1__.selectAll)(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.l.info(\"Setting up subgraphs\", subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g);\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await (0,_index_a92ac404_js__WEBPACK_IMPORTED_MODULE_5__.r)(element, g, [\"point\", \"circle\", \"cross\"], \"flowchart\", id);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.u.insertTitle(svg, \"flowchartTitleText\", conf2.titleTopMargin, diagObj.db.getDiagramTitle());\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_3__.p)(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n diagObj.db.indexNodes(\"subGraph\" + i);\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = (0,d3__WEBPACK_IMPORTED_MODULE_1__.select)(\"#\" + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRendererV2 = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst fade = (color, opacity) => {\n const channel = khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\n const r = channel(color, \"r\");\n const g = channel(color, \"g\");\n const b = channel(color, \"b\");\n return khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"](r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\nconst flowStyles = getStyles;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdHlsZXMtNWY4OWRmNTMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUE4RDtBQUNWO0FBQ0Q7QUFDZ0k7QUFDakk7QUFDOEI7QUFDL0M7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxNQUFNO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsdURBQWtCO0FBQ3JDO0FBQ0E7QUFDQSxJQUFJLHdEQUFRO0FBQ1o7QUFDQSxNQUFNLHdEQUFRO0FBQ2QsTUFBTTtBQUNOLFVBQVUsdURBQVEsQ0FBQyx1REFBUztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0JBQW9CO0FBQ3BEO0FBQ0E7QUFDQSxxQkFBcUIsOEZBQVk7QUFDakM7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLHNDQUFzQyxrRUFBcUI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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d2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L3N0eWxlcy01Zjg5ZGY1My5qcz82Y2I1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyYXBobGliIGZyb20gXCJkYWdyZS1kMy1lcy9zcmMvZ3JhcGhsaWIvaW5kZXguanNcIjtcbmltcG9ydCB7IGN1cnZlTGluZWFyLCBzZWxlY3QsIHNlbGVjdEFsbCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgZiBhcyBmbG93RGIgfSBmcm9tIFwiLi9mbG93RGItNmE1N2MxYjQuanNcIjtcbmltcG9ydCB7IGsgYXMgZ2V0U3R5bGVzRnJvbUFycmF5LCBsIGFzIGxvZywgbiBhcyBldmFsdWF0ZSwgYyBhcyBnZXRDb25maWcsIGUgYXMgY29tbW9uLCBvIGFzIGludGVycG9sYXRlVG9DdXJ2ZSwgdSBhcyB1dGlscywgcCBhcyBzZXR1cEdyYXBoVmlld2JveCB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbmltcG9ydCB7IHIgYXMgcmVuZGVyIH0gZnJvbSBcIi4vaW5kZXgtYTkyYWM0MDQuanNcIjtcbmltcG9ydCB7IGFkZEh0bWxMYWJlbCB9IGZyb20gXCJkYWdyZS1kMy1lcy9zcmMvZGFncmUtanMvbGFiZWwvYWRkLWh0bWwtbGFiZWwuanNcIjtcbmltcG9ydCAqIGFzIGtocm9tYSBmcm9tIFwia2hyb21hXCI7XG5jb25zdCBjb25mID0ge307XG5jb25zdCBzZXRDb25mID0gZnVuY3Rpb24oY25mKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjbmYpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uZltrZXldID0gY25mW2tleV07XG4gIH1cbn07XG5jb25zdCBhZGRWZXJ0aWNlcyA9IGZ1bmN0aW9uKHZlcnQsIGcsIHN2Z0lkLCByb290LCBkb2MsIGRpYWdPYmopIHtcbiAgY29uc3Qgc3ZnID0gcm9vdC5zZWxlY3QoYFtpZD1cIiR7c3ZnSWR9XCJdYCk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2ZXJ0KTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgY29uc3QgdmVydGV4ID0gdmVydFtpZF07XG4gICAgbGV0IGNsYXNzU3RyID0gXCJkZWZhdWx0XCI7XG4gICAgaWYgKHZlcnRleC5jbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNsYXNzU3RyID0gdmVydGV4LmNsYXNzZXMuam9pbihcIiBcIik7XG4gICAgfVxuICAgIGNsYXNzU3RyID0gY2xhc3NTdHIgKyBcIiBmbG93Y2hhcnQtbGFiZWxcIjtcbiAgICBjb25zdCBzdHlsZXMgPSBnZXRTdHlsZXNGcm9tQXJyYXkodmVydGV4LnN0eWxlcyk7XG4gICAgbGV0IHZlcnRleFRleHQgPSB2ZXJ0ZXgudGV4dCAhPT0gdm9pZCAwID8gdmVydGV4LnRleHQgOiB2ZXJ0ZXguaWQ7XG4gICAgbGV0IHZlcnRleE5vZGU7XG4gICAgbG9nLmluZm8oXCJ2ZXJ0ZXhcIiwgdmVydGV4LCB2ZXJ0ZXgubGFiZWxUeXBlKTtcbiAgICBpZiAodmVydGV4LmxhYmVsVHlwZSA9PT0gXCJtYXJrZG93blwiKSB7XG4gICAgICBsb2cuaW5mbyhcInZlcnRleFwiLCB2ZXJ0ZXgsIHZlcnRleC5sYWJlbFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXZhbHVhdGUoZ2V0Q29uZmlnKCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICAgICAgbGFiZWw6IHZlcnRleFRleHQucmVwbGFjZShcbiAgICAgICAgICAgIC9mYVtibHJzXT86ZmEtW1xcdy1dKy9nLFxuICAgICAgICAgICAgKHMpID0+IGA8aSBjbGFzcz0nJHtzLnJlcGxhY2UoXCI6XCIsIFwiIFwiKX0nPjwvaT5gXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAgICB2ZXJ0ZXhOb2RlID0gYWRkSHRtbExhYmVsKHN2Zywgbm9kZSkubm9kZSgpO1xuICAgICAgICB2ZXJ0ZXhOb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodmVydGV4Tm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBzdmdMYWJlbCA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRleHRcIik7XG4gICAgICAgIHN2Z0xhYmVsLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIHN0eWxlcy5sYWJlbFN0eWxlLnJlcGxhY2UoXCJjb2xvcjpcIiwgXCJmaWxsOlwiKSk7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB2ZXJ0ZXhUZXh0LnNwbGl0KGNvbW1vbi5saW5lQnJlYWtSZWdleCk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICBjb25zdCB0c3BhbiA9IGRvYy5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRzcGFuXCIpO1xuICAgICAgICAgIHRzcGFuLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsIFwieG1sOnNwYWNlXCIsIFwicHJlc2VydmVcIik7XG4gICAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwiZHlcIiwgXCIxZW1cIik7XG4gICAgICAgICAgdHNwYW4uc2V0QXR0cmlidXRlKFwieFwiLCBcIjFcIik7XG4gICAgICAgICAgdHNwYW4udGV4dENvbnRlbnQgPSByb3c7XG4gICAgICAgICAgc3ZnTGFiZWwuYXBwZW5kQ2hpbGQodHNwYW4pO1xuICAgICAgICB9XG4gICAgICAgIHZlcnRleE5vZGUgPSBzdmdMYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHJhZGlvdXMgPSAwO1xuICAgIGxldCBfc2hhcGUgPSBcIlwiO1xuICAgIHN3aXRjaCAodmVydGV4LnR5cGUpIHtcbiAgICAgIGNhc2UgXCJyb3VuZFwiOlxuICAgICAgICByYWRpb3VzID0gNTtcbiAgICAgICAgX3NoYXBlID0gXCJyZWN0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNxdWFyZVwiOlxuICAgICAgICBfc2hhcGUgPSBcInJlY3RcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgICAgICBfc2hhcGUgPSBcInF1ZXN0aW9uXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImhleGFnb25cIjpcbiAgICAgICAgX3NoYXBlID0gXCJoZXhhZ29uXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9kZFwiOlxuICAgICAgICBfc2hhcGUgPSBcInJlY3RfbGVmdF9pbnZfYXJyb3dcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibGVhbl9yaWdodFwiOlxuICAgICAgICBfc2hhcGUgPSBcImxlYW5fcmlnaHRcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibGVhbl9sZWZ0XCI6XG4gICAgICAgIF9zaGFwZSA9IFwibGVhbl9sZWZ0XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRyYXBlem9pZFwiOlxuICAgICAgICBfc2hhcGUgPSBcInRyYXBlem9pZFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnZfdHJhcGV6b2lkXCI6XG4gICAgICAgIF9zaGFwZSA9IFwiaW52X3RyYXBlem9pZFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJvZGRfcmlnaHRcIjpcbiAgICAgICAgX3NoYXBlID0gXCJyZWN0X2xlZnRfaW52X2Fycm93XCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImNpcmNsZVwiOlxuICAgICAgICBfc2hhcGUgPSBcImNpcmNsZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICAgIF9zaGFwZSA9IFwiZWxsaXBzZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzdGFkaXVtXCI6XG4gICAgICAgIF9zaGFwZSA9IFwic3RhZGl1bVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzdWJyb3V0aW5lXCI6XG4gICAgICAgIF9zaGFwZSA9IFwic3Vicm91dGluZVwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjeWxpbmRlclwiOlxuICAgICAgICBfc2hhcGUgPSBcImN5bGluZGVyXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdyb3VwXCI6XG4gICAgICAgIF9zaGFwZSA9IFwicmVjdFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkb3VibGVjaXJjbGVcIjpcbiAgICAgICAgX3NoYXBlID0gXCJkb3VibGVjaXJjbGVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBfc2hhcGUgPSBcInJlY3RcIjtcbiAgICB9XG4gICAgZy5zZXROb2RlKHZlcnRleC5pZCwge1xuICAgICAgbGFiZWxTdHlsZTogc3R5bGVzLmxhYmVsU3R5bGUsXG4gICAgICBzaGFwZTogX3NoYXBlLFxuICAgICAgbGFiZWxUZXh0OiB2ZXJ0ZXhUZXh0LFxuICAgICAgbGFiZWxUeXBlOiB2ZXJ0ZXgubGFiZWxUeXBlLFxuICAgICAgcng6IHJhZGlvdXMsXG4gICAgICByeTogcmFkaW91cyxcbiAgICAgIGNsYXNzOiBjbGFzc1N0cixcbiAgICAgIHN0eWxlOiBzdHlsZXMuc3R5bGUsXG4gICAgICBpZDogdmVydGV4LmlkLFxuICAgICAgbGluazogdmVydGV4LmxpbmssXG4gICAgICBsaW5rVGFyZ2V0OiB2ZXJ0ZXgubGlua1RhcmdldCxcbiAgICAgIHRvb2x0aXA6IGRpYWdPYmouZGIuZ2V0VG9vbHRpcCh2ZXJ0ZXguaWQpIHx8IFwiXCIsXG4gICAgICBkb21JZDogZGlhZ09iai5kYi5sb29rVXBEb21JZCh2ZXJ0ZXguaWQpLFxuICAgICAgaGF2ZUNhbGxiYWNrOiB2ZXJ0ZXguaGF2ZUNhbGxiYWNrLFxuICAgICAgd2lkdGg6IHZlcnRleC50eXBlID09PSBcImdyb3VwXCIgPyA1MDAgOiB2b2lkIDAsXG4gICAgICBkaXI6IHZlcnRleC5kaXIsXG4gICAgICB0eXBlOiB2ZXJ0ZXgudHlwZSxcbiAgICAgIHByb3BzOiB2ZXJ0ZXgucHJvcHMsXG4gICAgICBwYWRkaW5nOiBnZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZ1xuICAgIH0pO1xuICAgIGxvZy5pbmZvKFwic2V0Tm9kZVwiLCB7XG4gICAgICBsYWJlbFN0eWxlOiBzdHlsZXMubGFiZWxTdHlsZSxcbiAgICAgIGxhYmVsVHlwZTogdmVydGV4LmxhYmVsVHlwZSxcbiAgICAgIHNoYXBlOiBfc2hhcGUsXG4gICAgICBsYWJlbFRleHQ6IHZlcnRleFRleHQsXG4gICAgICByeDogcmFkaW91cyxcbiAgICAgIHJ5OiByYWRpb3VzLFxuICAgICAgY2xhc3M6IGNsYXNzU3RyLFxuICAgICAgc3R5bGU6IHN0eWxlcy5zdHlsZSxcbiAgICAgIGlkOiB2ZXJ0ZXguaWQsXG4gICAgICBkb21JZDogZGlhZ09iai5kYi5sb29rVXBEb21JZCh2ZXJ0ZXguaWQpLFxuICAgICAgd2lkdGg6IHZlcnRleC50eXBlID09PSBcImdyb3VwXCIgPyA1MDAgOiB2b2lkIDAsXG4gICAgICB0eXBlOiB2ZXJ0ZXgudHlwZSxcbiAgICAgIGRpcjogdmVydGV4LmRpcixcbiAgICAgIHByb3BzOiB2ZXJ0ZXgucHJvcHMsXG4gICAgICBwYWRkaW5nOiBnZXRDb25maWcoKS5mbG93Y2hhcnQucGFkZGluZ1xuICAgIH0pO1xuICB9KTtcbn07XG5jb25zdCBhZGRFZGdlcyA9IGZ1bmN0aW9uKGVkZ2VzLCBnLCBkaWFnT2JqKSB7XG4gIGxvZy5pbmZvKFwiYWJjNzggZWRnZXMgPSBcIiwgZWRnZXMpO1xuICBsZXQgY250ID0gMDtcbiAgbGV0IGxpbmtJZENudCA9IHt9O1xuICBsZXQgZGVmYXVsdFN0eWxlO1xuICBsZXQgZGVmYXVsdExhYmVsU3R5bGU7XG4gIGlmIChlZGdlcy5kZWZhdWx0U3R5bGUgIT09IHZvaWQgMCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdHlsZXMgPSBnZXRTdHlsZXNGcm9tQXJyYXkoZWRnZXMuZGVmYXVsdFN0eWxlKTtcbiAgICBkZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVzLnN0eWxlO1xuICAgIGRlZmF1bHRMYWJlbFN0eWxlID0gZGVmYXVsdFN0eWxlcy5sYWJlbFN0eWxlO1xuICB9XG4gIGVkZ2VzLmZvckVhY2goZnVuY3Rpb24oZWRnZSkge1xuICAgIGNudCsrO1xuICAgIGNvbnN0IGxpbmtJZEJhc2UgPSBcIkwtXCIgKyBlZGdlLnN0YXJ0ICsgXCItXCIgKyBlZGdlLmVuZDtcbiAgICBpZiAobGlua0lkQ250W2xpbmtJZEJhc2VdID09PSB2b2lkIDApIHtcbiAgICAgIGxpbmtJZENudFtsaW5rSWRCYXNlXSA9IDA7XG4gICAgICBsb2cuaW5mbyhcImFiYzc4IG5ldyBlbnRyeVwiLCBsaW5rSWRCYXNlLCBsaW5rSWRDbnRbbGlua0lkQmFzZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaW5rSWRDbnRbbGlua0lkQmFzZV0rKztcbiAgICAgIGxvZy5pbmZvKFwiYWJjNzggbmV3IGVudHJ5XCIsIGxpbmtJZEJhc2UsIGxpbmtJZENudFtsaW5rSWRCYXNlXSk7XG4gICAgfVxuICAgIGxldCBsaW5rSWQgPSBsaW5rSWRCYXNlICsgXCItXCIgKyBsaW5rSWRDbnRbbGlua0lkQmFzZV07XG4gICAgbG9nLmluZm8oXCJhYmM3OCBuZXcgbGluayBpZCB0byBiZSB1c2VkIGlzXCIsIGxpbmtJZEJhc2UsIGxpbmtJZCwgbGlua0lkQ250W2xpbmtJZEJhc2VdKTtcbiAgICBjb25zdCBsaW5rTmFtZVN0YXJ0ID0gXCJMUy1cIiArIGVkZ2Uuc3RhcnQ7XG4gICAgY29uc3QgbGlua05hbWVFbmQgPSBcIkxFLVwiICsgZWRnZS5lbmQ7XG4gICAgY29uc3QgZWRnZURhdGEgPSB7IHN0eWxlOiBcIlwiLCBsYWJlbFN0eWxlOiBcIlwiIH07XG4gICAgZWRnZURhdGEubWlubGVuID0gZWRnZS5sZW5ndGggfHwgMTtcbiAgICBpZiAoZWRnZS50eXBlID09PSBcImFycm93X29wZW5cIikge1xuICAgICAgZWRnZURhdGEuYXJyb3doZWFkID0gXCJub25lXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkZ2VEYXRhLmFycm93aGVhZCA9IFwibm9ybWFsXCI7XG4gICAgfVxuICAgIGVkZ2VEYXRhLmFycm93VHlwZVN0YXJ0ID0gXCJhcnJvd19vcGVuXCI7XG4gICAgZWRnZURhdGEuYXJyb3dUeXBlRW5kID0gXCJhcnJvd19vcGVuXCI7XG4gICAgc3dpdGNoIChlZGdlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJkb3VibGVfYXJyb3dfY3Jvc3NcIjpcbiAgICAgICAgZWRnZURhdGEuYXJyb3dUeXBlU3RhcnQgPSBcImFycm93X2Nyb3NzXCI7XG4gICAgICBjYXNlIFwiYXJyb3dfY3Jvc3NcIjpcbiAgICAgICAgZWRnZURhdGEuYXJyb3dUeXBlRW5kID0gXCJhcnJvd19jcm9zc1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkb3VibGVfYXJyb3dfcG9pbnRcIjpcbiAgICAgICAgZWRnZURhdGEuYXJyb3dUeXBlU3RhcnQgPSBcImFycm93X3BvaW50XCI7XG4gICAgICBjYXNlIFwiYXJyb3dfcG9pbnRcIjpcbiAgICAgICAgZWRnZURhdGEuYXJyb3dUeXBlRW5kID0gXCJhcnJvd19wb2ludFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkb3VibGVfYXJyb3dfY2lyY2xlXCI6XG4gICAgICAgIGVkZ2VEYXRhLmFycm93VHlwZVN0YXJ0ID0gXCJhcnJvd19jaXJjbGVcIjtcbiAgICAgIGNhc2UgXCJhcnJvd19jaXJjbGVcIjpcbiAgICAgICAgZWRnZURhdGEuYXJyb3dUeXBlRW5kID0gXCJhcnJvd19jaXJjbGVcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBzdHlsZSA9IFwiXCI7XG4gICAgbGV0IGxhYmVsU3R5bGUgPSBcIlwiO1xuICAgIHN3aXRjaCAoZWRnZS5zdHJva2UpIHtcbiAgICAgIGNhc2UgXCJub3JtYWxcIjpcbiAgICAgICAgc3R5bGUgPSBcImZpbGw6bm9uZTtcIjtcbiAgICAgICAgaWYgKGRlZmF1bHRTdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgc3R5bGUgPSBkZWZhdWx0U3R5bGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmF1bHRMYWJlbFN0eWxlICE9PSB2b2lkIDApIHtcbiAgICAgICAgICBsYWJlbFN0eWxlID0gZGVmYXVsdExhYmVsU3R5bGU7XG4gICAgICAgIH1cbiAgICAgICAgZWRnZURhdGEudGhpY2tuZXNzID0gXCJub3JtYWxcIjtcbiAgICAgICAgZWRnZURhdGEucGF0dGVybiA9IFwic29saWRcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZG90dGVkXCI6XG4gICAgICAgIGVkZ2VEYXRhLnRoaWNrbmVzcyA9IFwibm9ybWFsXCI7XG4gICAgICAgIGVkZ2VEYXRhLnBhdHRlcm4gPSBcImRvdHRlZFwiO1xuICAgICAgICBlZGdlRGF0YS5zdHlsZSA9IFwiZmlsbDpub25lO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWRhc2hhcnJheTozO1wiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0aGlja1wiOlxuICAgICAgICBlZGdlRGF0YS50aGlja25lc3MgPSBcInRoaWNrXCI7XG4gICAgICAgIGVkZ2VEYXRhLnBhdHRlcm4gPSBcInNvbGlkXCI7XG4gICAgICAgIGVkZ2VEYXRhLnN0eWxlID0gXCJzdHJva2Utd2lkdGg6IDMuNXB4O2ZpbGw6bm9uZTtcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW52aXNpYmxlXCI6XG4gICAgICAgIGVkZ2VEYXRhLnRoaWNrbmVzcyA9IFwiaW52aXNpYmxlXCI7XG4gICAgICAgIGVkZ2VEYXRhLnBhdHRlcm4gPSBcInNvbGlkXCI7XG4gICAgICAgIGVkZ2VEYXRhLnN0eWxlID0gXCJzdHJva2Utd2lkdGg6IDA7ZmlsbDpub25lO1wiO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKGVkZ2Uuc3R5bGUgIT09IHZvaWQgMCkge1xuICAgICAgY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzRnJvbUFycmF5KGVkZ2Uuc3R5bGUpO1xuICAgICAgc3R5bGUgPSBzdHlsZXMuc3R5bGU7XG4gICAgICBsYWJlbFN0eWxlID0gc3R5bGVzLmxhYmVsU3R5bGU7XG4gICAgfVxuICAgIGVkZ2VEYXRhLnN0eWxlID0gZWRnZURhdGEuc3R5bGUgKz0gc3R5bGU7XG4gICAgZWRnZURhdGEubGFiZWxTdHlsZSA9IGVkZ2VEYXRhLmxhYmVsU3R5bGUgKz0gbGFiZWxTdHlsZTtcbiAgICBpZiAoZWRnZS5pbnRlcnBvbGF0ZSAhPT0gdm9pZCAwKSB7XG4gICAgICBlZGdlRGF0YS5jdXJ2ZSA9IGludGVycG9sYXRlVG9DdXJ2ZShlZGdlLmludGVycG9sYXRlLCBjdXJ2ZUxpbmVhcik7XG4gICAgfSBlbHNlIGlmIChlZGdlcy5kZWZhdWx0SW50ZXJwb2xhdGUgIT09IHZvaWQgMCkge1xuICAgICAgZWRnZURhdGEuY3VydmUgPSBpbnRlcnBvbGF0ZVRvQ3VydmUoZWRnZXMuZGVmYXVsdEludGVycG9sYXRlLCBjdXJ2ZUxpbmVhcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkZ2VEYXRhLmN1cnZlID0gaW50ZXJwb2xhdGVUb0N1cnZlKGNvbmYuY3VydmUsIGN1cnZlTGluZWFyKTtcbiAgICB9XG4gICAgaWYgKGVkZ2UudGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgICBpZiAoZWRnZS5zdHlsZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgIGVkZ2VEYXRhLmFycm93aGVhZFN0eWxlID0gXCJmaWxsOiAjMzMzXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkZ2VEYXRhLmFycm93aGVhZFN0eWxlID0gXCJmaWxsOiAjMzMzXCI7XG4gICAgICBlZGdlRGF0YS5sYWJlbHBvcyA9IFwiY1wiO1xuICAgIH1cbiAgICBlZGdlRGF0YS5sYWJlbFR5cGUgPSBlZGdlLmxhYmVsVHlwZTtcbiAgICBlZGdlRGF0YS5sYWJlbCA9IGVkZ2UudGV4dC5yZXBsYWNlKGNvbW1vbi5saW5lQnJlYWtSZWdleCwgXCJcXG5cIik7XG4gICAgaWYgKGVkZ2Uuc3R5bGUgPT09IHZvaWQgMCkge1xuICAgICAgZWRnZURhdGEuc3R5bGUgPSBlZGdlRGF0YS5zdHlsZSB8fCBcInN0cm9rZTogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDtmaWxsOm5vbmU7XCI7XG4gICAgfVxuICAgIGVkZ2VEYXRhLmxhYmVsU3R5bGUgPSBlZGdlRGF0YS5sYWJlbFN0eWxlLnJlcGxhY2UoXCJjb2xvcjpcIiwgXCJmaWxsOlwiKTtcbiAgICBlZGdlRGF0YS5pZCA9IGxpbmtJZDtcbiAgICBlZGdlRGF0YS5jbGFzc2VzID0gXCJmbG93Y2hhcnQtbGluayBcIiArIGxpbmtOYW1lU3RhcnQgKyBcIiBcIiArIGxpbmtOYW1lRW5kO1xuICAgIGcuc2V0RWRnZShlZGdlLnN0YXJ0LCBlZGdlLmVuZCwgZWRnZURhdGEsIGNudCk7XG4gIH0pO1xufTtcbmNvbnN0IGdldENsYXNzZXMgPSBmdW5jdGlvbih0ZXh0LCBkaWFnT2JqKSB7XG4gIGxvZy5pbmZvKFwiRXh0cmFjdGluZyBjbGFzc2VzXCIpO1xuICBkaWFnT2JqLmRiLmNsZWFyKCk7XG4gIHRyeSB7XG4gICAgZGlhZ09iai5wYXJzZSh0ZXh0KTtcbiAgICByZXR1cm4gZGlhZ09iai5kYi5nZXRDbGFzc2VzKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm47XG4gIH1cbn07XG5jb25zdCBkcmF3ID0gYXN5bmMgZnVuY3Rpb24odGV4dCwgaWQsIF92ZXJzaW9uLCBkaWFnT2JqKSB7XG4gIGxvZy5pbmZvKFwiRHJhd2luZyBmbG93Y2hhcnRcIik7XG4gIGRpYWdPYmouZGIuY2xlYXIoKTtcbiAgZmxvd0RiLnNldEdlbihcImdlbi0yXCIpO1xuICBkaWFnT2JqLnBhcnNlci5wYXJzZSh0ZXh0KTtcbiAgbGV0IGRpciA9IGRpYWdPYmouZGIuZ2V0RGlyZWN0aW9uKCk7XG4gIGlmIChkaXIgPT09IHZvaWQgMCkge1xuICAgIGRpciA9IFwiVERcIjtcbiAgfVxuICBjb25zdCB7IHNlY3VyaXR5TGV2ZWwsIGZsb3djaGFydDogY29uZjIgfSA9IGdldENvbmZpZygpO1xuICBjb25zdCBub2RlU3BhY2luZyA9IGNvbmYyLm5vZGVTcGFjaW5nIHx8IDUwO1xuICBjb25zdCByYW5rU3BhY2luZyA9IGNvbmYyLnJhbmtTcGFjaW5nIHx8IDUwO1xuICBsZXQgc2FuZGJveEVsZW1lbnQ7XG4gIGlmIChzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIikge1xuICAgIHNhbmRib3hFbGVtZW50ID0gc2VsZWN0KFwiI2lcIiArIGlkKTtcbiAgfVxuICBjb25zdCByb290ID0gc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIgPyBzZWxlY3Qoc2FuZGJveEVsZW1lbnQubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keSkgOiBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBkb2MgPSBzZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIiA/IHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50IDogZG9jdW1lbnQ7XG4gIGNvbnN0IGcgPSBuZXcgZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSkuc2V0R3JhcGgoe1xuICAgIHJhbmtkaXI6IGRpcixcbiAgICBub2Rlc2VwOiBub2RlU3BhY2luZyxcbiAgICByYW5rc2VwOiByYW5rU3BhY2luZyxcbiAgICBtYXJnaW54OiAwLFxuICAgIG1hcmdpbnk6IDBcbiAgfSkuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge307XG4gIH0pO1xuICBsZXQgc3ViRztcbiAgY29uc3Qgc3ViR3JhcGhzID0gZGlhZ09iai5kYi5nZXRTdWJHcmFwaHMoKTtcbiAgbG9nLmluZm8oXCJTdWJncmFwaHMgLSBcIiwgc3ViR3JhcGhzKTtcbiAgZm9yIChsZXQgaTIgPSBzdWJHcmFwaHMubGVuZ3RoIC0gMTsgaTIgPj0gMDsgaTItLSkge1xuICAgIHN1YkcgPSBzdWJHcmFwaHNbaTJdO1xuICAgIGxvZy5pbmZvKFwiU3ViZ3JhcGggLSBcIiwgc3ViRyk7XG4gICAgZGlhZ09iai5kYi5hZGRWZXJ0ZXgoXG4gICAgICBzdWJHLmlkLFxuICAgICAgeyB0ZXh0OiBzdWJHLnRpdGxlLCB0eXBlOiBzdWJHLmxhYmVsVHlwZSB9LFxuICAgICAgXCJncm91cFwiLFxuICAgICAgdm9pZCAwLFxuICAgICAgc3ViRy5jbGFzc2VzLFxuICAgICAgc3ViRy5kaXJcbiAgICApO1xuICB9XG4gIGNvbnN0IHZlcnQgPSBkaWFnT2JqLmRiLmdldFZlcnRpY2VzKCk7XG4gIGNvbnN0IGVkZ2VzID0gZGlhZ09iai5kYi5nZXRFZGdlcygpO1xuICBsb2cuaW5mbyhcIkVkZ2VzXCIsIGVkZ2VzKTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKGkgPSBzdWJHcmFwaHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzdWJHID0gc3ViR3JhcGhzW2ldO1xuICAgIHNlbGVjdEFsbChcImNsdXN0ZXJcIikuYXBwZW5kKFwidGV4dFwiKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHN1Ykcubm9kZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxvZy5pbmZvKFwiU2V0dGluZyB1cCBzdWJncmFwaHNcIiwgc3ViRy5ub2Rlc1tqXSwgc3ViRy5pZCk7XG4gICAgICBnLnNldFBhcmVudChzdWJHLm5vZGVzW2pdLCBzdWJHLmlkKTtcbiAgICB9XG4gIH1cbiAgYWRkVmVydGljZXModmVydCwgZywgaWQsIHJvb3QsIGRvYywgZGlhZ09iaik7XG4gIGFkZEVkZ2VzKGVkZ2VzLCBnKTtcbiAgY29uc3Qgc3ZnID0gcm9vdC5zZWxlY3QoYFtpZD1cIiR7aWR9XCJdYCk7XG4gIGNvbnN0IGVsZW1lbnQgPSByb290LnNlbGVjdChcIiNcIiArIGlkICsgXCIgZ1wiKTtcbiAgYXdhaXQgcmVuZGVyKGVsZW1lbnQsIGcsIFtcInBvaW50XCIsIFwiY2lyY2xlXCIsIFwiY3Jvc3NcIl0sIFwiZmxvd2NoYXJ0XCIsIGlkKTtcbiAgdXRpbHMuaW5zZXJ0VGl0bGUoc3ZnLCBcImZsb3djaGFydFRpdGxlVGV4dFwiLCBjb25mMi50aXRsZVRvcE1hcmdpbiwgZGlhZ09iai5kYi5nZXREaWFncmFtVGl0bGUoKSk7XG4gIHNldHVwR3JhcGhWaWV3Ym94KGcsIHN2ZywgY29uZjIuZGlhZ3JhbVBhZGRpbmcsIGNvbmYyLnVzZU1heFdpZHRoKTtcbiAgZGlhZ09iai5kYi5pbmRleE5vZGVzKFwic3ViR3JhcGhcIiArIGkpO1xuICBpZiAoIWNvbmYyLmh0bWxMYWJlbHMpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgnW2lkPVwiJyArIGlkICsgJ1wiXSAuZWRnZUxhYmVsIC5sYWJlbCcpO1xuICAgIGZvciAoY29uc3QgbGFiZWwgb2YgbGFiZWxzKSB7XG4gICAgICBjb25zdCBkaW0gPSBsYWJlbC5nZXRCQm94KCk7XG4gICAgICBjb25zdCByZWN0ID0gZG9jLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwicmVjdFwiKTtcbiAgICAgIHJlY3Quc2V0QXR0cmlidXRlKFwicnhcIiwgMCk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZShcInJ5XCIsIDApO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBkaW0ud2lkdGgpO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgZGltLmhlaWdodCk7XG4gICAgICBsYWJlbC5pbnNlcnRCZWZvcmUocmVjdCwgbGFiZWwuZmlyc3RDaGlsZCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2ZXJ0KTtcbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGNvbnN0IHZlcnRleCA9IHZlcnRba2V5XTtcbiAgICBpZiAodmVydGV4LmxpbmspIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzZWxlY3QoXCIjXCIgKyBpZCArICcgW2lkPVwiJyArIGtleSArICdcIl0nKTtcbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2MuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJhXCIpO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJjbGFzc1wiLCB2ZXJ0ZXguY2xhc3Nlcy5qb2luKFwiIFwiKSk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcImhyZWZcIiwgdmVydGV4LmxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiwgXCJyZWxcIiwgXCJub29wZW5lclwiKTtcbiAgICAgICAgaWYgKHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiKSB7XG4gICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwidGFyZ2V0XCIsIFwiX3RvcFwiKTtcbiAgICAgICAgfSBlbHNlIGlmICh2ZXJ0ZXgubGlua1RhcmdldCkge1xuICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlTlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCBcInRhcmdldFwiLCB2ZXJ0ZXgubGlua1RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGlua05vZGUgPSBub2RlLmluc2VydChmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gbGluaztcbiAgICAgICAgfSwgXCI6Zmlyc3QtY2hpbGRcIik7XG4gICAgICAgIGNvbnN0IHNoYXBlID0gbm9kZS5zZWxlY3QoXCIubGFiZWwtY29udGFpbmVyXCIpO1xuICAgICAgICBpZiAoc2hhcGUpIHtcbiAgICAgICAgICBsaW5rTm9kZS5hcHBlbmQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gc2hhcGUubm9kZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhYmVsID0gbm9kZS5zZWxlY3QoXCIubGFiZWxcIik7XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgIGxpbmtOb2RlLmFwcGVuZChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBsYWJlbC5ub2RlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IGZsb3dSZW5kZXJlclYyID0ge1xuICBzZXRDb25mLFxuICBhZGRWZXJ0aWNlcyxcbiAgYWRkRWRnZXMsXG4gIGdldENsYXNzZXMsXG4gIGRyYXdcbn07XG5jb25zdCBmYWRlID0gKGNvbG9yLCBvcGFjaXR5KSA9PiB7XG4gIGNvbnN0IGNoYW5uZWwgPSBraHJvbWEuY2hhbm5lbDtcbiAgY29uc3QgciA9IGNoYW5uZWwoY29sb3IsIFwiclwiKTtcbiAgY29uc3QgZyA9IGNoYW5uZWwoY29sb3IsIFwiZ1wiKTtcbiAgY29uc3QgYiA9IGNoYW5uZWwoY29sb3IsIFwiYlwiKTtcbiAgcmV0dXJuIGtocm9tYS5yZ2JhKHIsIGcsIGIsIG9wYWNpdHkpO1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgLmxhYmVsIHtcbiAgICBmb250LWZhbWlseTogJHtvcHRpb25zLmZvbnRGYW1pbHl9O1xuICAgIGNvbG9yOiAke29wdGlvbnMubm9kZVRleHRDb2xvciB8fCBvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cbiAgLmNsdXN0ZXItbGFiZWwgdGV4dCB7XG4gICAgZmlsbDogJHtvcHRpb25zLnRpdGxlQ29sb3J9O1xuICB9XG4gIC5jbHVzdGVyLWxhYmVsIHNwYW4scCB7XG4gICAgY29sb3I6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuXG4gIC5sYWJlbCB0ZXh0LHNwYW4scCB7XG4gICAgZmlsbDogJHtvcHRpb25zLm5vZGVUZXh0Q29sb3IgfHwgb3B0aW9ucy50ZXh0Q29sb3J9O1xuICAgIGNvbG9yOiAke29wdGlvbnMubm9kZVRleHRDb2xvciB8fCBvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cblxuICAubm9kZSByZWN0LFxuICAubm9kZSBjaXJjbGUsXG4gIC5ub2RlIGVsbGlwc2UsXG4gIC5ub2RlIHBvbHlnb24sXG4gIC5ub2RlIHBhdGgge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuICAuZmxvd2NoYXJ0LWxhYmVsIHRleHQge1xuICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7XG4gIH1cbiAgLy8gLmZsb3djaGFydC1sYWJlbCAudGV4dC1vdXRlci10c3BhbiB7XG4gIC8vICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgLy8gfVxuICAvLyAuZmxvd2NoYXJ0LWxhYmVsIC50ZXh0LWlubmVyLXRzcGFuIHtcbiAgLy8gICB0ZXh0LWFuY2hvcjogc3RhcnQ7XG4gIC8vIH1cblxuICAubm9kZSAubGFiZWwge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuICAubm9kZS5jbGlja2FibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5hcnJvd2hlYWRQYXRoIHtcbiAgICBmaWxsOiAke29wdGlvbnMuYXJyb3doZWFkQ29sb3J9O1xuICB9XG5cbiAgLmVkZ2VQYXRoIC5wYXRoIHtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9O1xuICAgIHN0cm9rZS13aWR0aDogMi4wcHg7XG4gIH1cblxuICAuZmxvd2NoYXJ0LWxpbmsge1xuICAgIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn07XG4gICAgZmlsbDogbm9uZTtcbiAgfVxuXG4gIC5lZGdlTGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICByZWN0IHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICAgIGZpbGw6ICR7b3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kfTtcbiAgICB9XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgLyogRm9yIGh0bWwgbGFiZWxzIG9ubHkgKi9cbiAgLmxhYmVsQmtnIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2ZhZGUob3B0aW9ucy5lZGdlTGFiZWxCYWNrZ3JvdW5kLCAwLjUpfTtcbiAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiBcbiAgfVxuXG4gIC5jbHVzdGVyIHJlY3Qge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5jbHVzdGVyQmtnfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5jbHVzdGVyQm9yZGVyfTtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuXG4gIC5jbHVzdGVyIHRleHQge1xuICAgIGZpbGw6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuXG4gIC5jbHVzdGVyIHNwYW4scCB7XG4gICAgY29sb3I6ICR7b3B0aW9ucy50aXRsZUNvbG9yfTtcbiAgfVxuICAvKiAuY2x1c3RlciBkaXYge1xuICAgIGNvbG9yOiAke29wdGlvbnMudGl0bGVDb2xvcn07XG4gIH0gKi9cblxuICBkaXYubWVybWFpZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgZm9udC1mYW1pbHk6ICR7b3B0aW9ucy5mb250RmFtaWx5fTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgYmFja2dyb3VuZDogJHtvcHRpb25zLnRlcnRpYXJ5Q29sb3J9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7b3B0aW9ucy5ib3JkZXIyfTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTAwO1xuICB9XG5cbiAgLmZsb3djaGFydFRpdGxlVGV4dCB7XG4gICAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZmlsbDogJHtvcHRpb25zLnRleHRDb2xvcn07XG4gIH1cbmA7XG5jb25zdCBmbG93U3R5bGVzID0gZ2V0U3R5bGVzO1xuZXhwb3J0IHtcbiAgZmxvd1N0eWxlcyBhcyBhLFxuICBmbG93UmVuZGVyZXJWMiBhcyBmXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/styles-5f89df53.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/styles-aefe6593.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/styles-aefe6593.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"d\": () => (/* binding */ db),\n/* harmony export */ \"p\": () => (/* binding */ parser$1),\n/* harmony export */ \"s\": () => (/* binding */ styles)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 34], $V1 = [1, 35], $V2 = [1, 36], $V3 = [1, 37], $V4 = [1, 9], $V5 = [1, 8], $V6 = [1, 19], $V7 = [1, 20], $V8 = [1, 21], $V9 = [1, 40], $Va = [1, 41], $Vb = [1, 27], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 32], $Vf = [1, 33], $Vg = [1, 28], $Vh = [1, 29], $Vi = [1, 30], $Vj = [1, 31], $Vk = [1, 45], $Vl = [1, 42], $Vm = [1, 43], $Vn = [1, 44], $Vo = [1, 46], $Vp = [1, 24], $Vq = [1, 16, 24], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 62], $Vu = [1, 63], $Vv = [1, 64], $Vw = [1, 65], $Vx = [1, 66], $Vy = [1, 16, 24, 52], $Vz = [1, 77], $VA = [1, 16, 24, 27, 28, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81], $VB = [1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 59, 68, 69, 70, 71, 72, 73, 74, 79, 81, 94, 96, 97, 98, 99], $VC = [1, 86], $VD = [28, 94, 96, 97, 98, 99], $VE = [28, 73, 74, 94, 96, 97, 98, 99], $VF = [28, 68, 69, 70, 71, 72, 94, 96, 97, 98, 99], $VG = [1, 99], $VH = [1, 16, 24, 50, 52, 55], $VI = [1, 16, 24, 36], $VJ = [8, 9, 10, 11, 19, 23, 44, 46, 48, 53, 57, 58, 60, 61, 63, 65, 75, 76, 78, 82, 94, 96, 97, 98, 99];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"directive\": 5, \"statements\": 6, \"direction\": 7, \"direction_tb\": 8, \"direction_bt\": 9, \"direction_rl\": 10, \"direction_lr\": 11, \"graphConfig\": 12, \"openDirective\": 13, \"typeDirective\": 14, \"closeDirective\": 15, \"NEWLINE\": 16, \":\": 17, \"argDirective\": 18, \"open_directive\": 19, \"type_directive\": 20, \"arg_directive\": 21, \"close_directive\": 22, \"CLASS_DIAGRAM\": 23, \"EOF\": 24, \"statement\": 25, \"classLabel\": 26, \"SQS\": 27, \"STR\": 28, \"SQE\": 29, \"namespaceName\": 30, \"alphaNumToken\": 31, \"className\": 32, \"classLiteralName\": 33, \"GENERICTYPE\": 34, \"relationStatement\": 35, \"LABEL\": 36, \"namespaceStatement\": 37, \"classStatement\": 38, \"methodStatement\": 39, \"annotationStatement\": 40, \"clickStatement\": 41, \"cssClassStatement\": 42, \"noteStatement\": 43, \"acc_title\": 44, \"acc_title_value\": 45, \"acc_descr\": 46, \"acc_descr_value\": 47, \"acc_descr_multiline_value\": 48, \"namespaceIdentifier\": 49, \"STRUCT_START\": 50, \"classStatements\": 51, \"STRUCT_STOP\": 52, \"NAMESPACE\": 53, \"classIdentifier\": 54, \"STYLE_SEPARATOR\": 55, \"members\": 56, \"CLASS\": 57, \"ANNOTATION_START\": 58, \"ANNOTATION_END\": 59, \"MEMBER\": 60, \"SEPARATOR\": 61, \"relation\": 62, \"NOTE_FOR\": 63, \"noteText\": 64, \"NOTE\": 65, \"relationType\": 66, \"lineType\": 67, \"AGGREGATION\": 68, \"EXTENSION\": 69, \"COMPOSITION\": 70, \"DEPENDENCY\": 71, \"LOLLIPOP\": 72, \"LINE\": 73, \"DOTTED_LINE\": 74, \"CALLBACK\": 75, \"LINK\": 76, \"LINK_TARGET\": 77, \"CLICK\": 78, \"CALLBACK_NAME\": 79, \"CALLBACK_ARGS\": 80, \"HREF\": 81, \"CSSCLASS\": 82, \"commentToken\": 83, \"textToken\": 84, \"graphCodeTokens\": 85, \"textNoTagsToken\": 86, \"TAGSTART\": 87, \"TAGEND\": 88, \"==\": 89, \"--\": 90, \"PCT\": 91, \"DEFAULT\": 92, \"SPACE\": 93, \"MINUS\": 94, \"keywords\": 95, \"UNICODE_TEXT\": 96, \"NUM\": 97, \"ALPHA\": 98, \"BQUOTE_STR\": 99, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 8: \"direction_tb\", 9: \"direction_bt\", 10: \"direction_rl\", 11: \"direction_lr\", 16: \"NEWLINE\", 17: \":\", 19: \"open_directive\", 20: \"type_directive\", 21: \"arg_directive\", 22: \"close_directive\", 23: \"CLASS_DIAGRAM\", 24: \"EOF\", 27: \"SQS\", 28: \"STR\", 29: \"SQE\", 34: \"GENERICTYPE\", 36: \"LABEL\", 44: \"acc_title\", 45: \"acc_title_value\", 46: \"acc_descr\", 47: \"acc_descr_value\", 48: \"acc_descr_multiline_value\", 50: \"STRUCT_START\", 52: \"STRUCT_STOP\", 53: \"NAMESPACE\", 55: \"STYLE_SEPARATOR\", 57: \"CLASS\", 58: \"ANNOTATION_START\", 59: \"ANNOTATION_END\", 60: \"MEMBER\", 61: \"SEPARATOR\", 63: \"NOTE_FOR\", 65: \"NOTE\", 68: \"AGGREGATION\", 69: \"EXTENSION\", 70: \"COMPOSITION\", 71: \"DEPENDENCY\", 72: \"LOLLIPOP\", 73: \"LINE\", 74: \"DOTTED_LINE\", 75: \"CALLBACK\", 76: \"LINK\", 77: \"LINK_TARGET\", 78: \"CLICK\", 79: \"CALLBACK_NAME\", 80: \"CALLBACK_ARGS\", 81: \"HREF\", 82: \"CSSCLASS\", 85: \"graphCodeTokens\", 87: \"TAGSTART\", 88: \"TAGEND\", 89: \"==\", 90: \"--\", 91: \"PCT\", 92: \"DEFAULT\", 93: \"SPACE\", 94: \"MINUS\", 95: \"keywords\", 96: \"UNICODE_TEXT\", 97: \"NUM\", 98: \"ALPHA\", 99: \"BQUOTE_STR\" },\n productions_: [0, [3, 1], [3, 2], [3, 1], [7, 1], [7, 1], [7, 1], [7, 1], [4, 1], [5, 4], [5, 6], [13, 1], [14, 1], [18, 1], [15, 1], [12, 4], [6, 1], [6, 2], [6, 3], [26, 3], [30, 1], [30, 2], [32, 1], [32, 1], [32, 2], [32, 2], [32, 2], [25, 1], [25, 2], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 1], [25, 2], [25, 2], [25, 1], [37, 4], [37, 5], [49, 2], [51, 1], [51, 2], [51, 3], [38, 1], [38, 3], [38, 4], [38, 6], [54, 2], [54, 3], [40, 4], [56, 1], [56, 2], [39, 1], [39, 2], [39, 1], [39, 1], [35, 3], [35, 4], [35, 4], [35, 5], [43, 3], [43, 2], [62, 3], [62, 2], [62, 2], [62, 1], [66, 1], [66, 1], [66, 1], [66, 1], [66, 1], [67, 1], [67, 1], [41, 3], [41, 4], [41, 3], [41, 4], [41, 4], [41, 5], [41, 3], [41, 4], [41, 4], [41, 5], [41, 3], [41, 4], [41, 4], [41, 5], [42, 3], [83, 1], [83, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [84, 1], [86, 1], [86, 1], [86, 1], [86, 1], [31, 1], [31, 1], [31, 1], [31, 1], [33, 1], [64, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.setDirection(\"TB\");\n break;\n case 5:\n yy.setDirection(\"BT\");\n break;\n case 6:\n yy.setDirection(\"RL\");\n break;\n case 7:\n yy.setDirection(\"LR\");\n break;\n case 11:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 12:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 14:\n yy.parseDirective(\"}%%\", \"close_directive\", \"class\");\n break;\n case 19:\n this.$ = $$[$0 - 1];\n break;\n case 20:\n case 22:\n case 23:\n this.$ = $$[$0];\n break;\n case 21:\n case 24:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 25:\n case 26:\n this.$ = $$[$0 - 1] + \"~\" + $$[$0] + \"~\";\n break;\n case 27:\n yy.addRelation($$[$0]);\n break;\n case 28:\n $$[$0 - 1].title = yy.cleanupLabel($$[$0]);\n yy.addRelation($$[$0 - 1]);\n break;\n case 37:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 38:\n case 39:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 40:\n yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]);\n break;\n case 41:\n yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]);\n break;\n case 42:\n this.$ = $$[$0];\n yy.addNamespace($$[$0]);\n break;\n case 43:\n this.$ = [$$[$0]];\n break;\n case 44:\n this.$ = [$$[$0 - 1]];\n break;\n case 45:\n $$[$0].unshift($$[$0 - 2]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.setCssClass($$[$0 - 2], $$[$0]);\n break;\n case 48:\n yy.addMembers($$[$0 - 3], $$[$0 - 1]);\n break;\n case 49:\n yy.setCssClass($$[$0 - 5], $$[$0 - 3]);\n yy.addMembers($$[$0 - 5], $$[$0 - 1]);\n break;\n case 50:\n this.$ = $$[$0];\n yy.addClass($$[$0]);\n break;\n case 51:\n this.$ = $$[$0 - 1];\n yy.addClass($$[$0 - 1]);\n yy.setClassLabel($$[$0 - 1], $$[$0]);\n break;\n case 52:\n yy.addAnnotation($$[$0], $$[$0 - 2]);\n break;\n case 53:\n this.$ = [$$[$0]];\n break;\n case 54:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 55:\n break;\n case 56:\n yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0]));\n break;\n case 57:\n break;\n case 58:\n break;\n case 59:\n this.$ = { \"id1\": $$[$0 - 2], \"id2\": $$[$0], relation: $$[$0 - 1], relationTitle1: \"none\", relationTitle2: \"none\" };\n break;\n case 60:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: \"none\" };\n break;\n case 61:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: \"none\", relationTitle2: $$[$0 - 1] };\n break;\n case 62:\n this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };\n break;\n case 63:\n yy.addNote($$[$0], $$[$0 - 1]);\n break;\n case 64:\n yy.addNote($$[$0]);\n break;\n case 65:\n this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 66:\n this.$ = { type1: \"none\", type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 67:\n this.$ = { type1: $$[$0 - 1], type2: \"none\", lineType: $$[$0] };\n break;\n case 68:\n this.$ = { type1: \"none\", type2: \"none\", lineType: $$[$0] };\n break;\n case 69:\n this.$ = yy.relationType.AGGREGATION;\n break;\n case 70:\n this.$ = yy.relationType.EXTENSION;\n break;\n case 71:\n this.$ = yy.relationType.COMPOSITION;\n break;\n case 72:\n this.$ = yy.relationType.DEPENDENCY;\n break;\n case 73:\n this.$ = yy.relationType.LOLLIPOP;\n break;\n case 74:\n this.$ = yy.lineType.LINE;\n break;\n case 75:\n this.$ = yy.lineType.DOTTED_LINE;\n break;\n case 76:\n case 82:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 77:\n case 83:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 78:\n case 86:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 79:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 80:\n case 88:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 81:\n case 89:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 3], $$[$0 - 1]);\n break;\n case 84:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 85:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 87:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 90:\n yy.setCssClass($$[$0 - 1], $$[$0]);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: 18, 8: $V0, 9: $V1, 10: $V2, 11: $V3, 12: 5, 13: 6, 19: $V4, 23: $V5, 25: 7, 31: 38, 32: 22, 33: 39, 35: 10, 37: 11, 38: 12, 39: 13, 40: 14, 41: 15, 42: 16, 43: 17, 44: $V6, 46: $V7, 48: $V8, 49: 23, 53: $V9, 54: 24, 57: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 63: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 1: [3] }, { 1: [2, 1] }, { 3: 47, 4: 2, 5: 3, 6: 4, 7: 18, 8: $V0, 9: $V1, 10: $V2, 11: $V3, 12: 5, 13: 6, 19: $V4, 23: $V5, 25: 7, 31: 38, 32: 22, 33: 39, 35: 10, 37: 11, 38: 12, 39: 13, 40: 14, 41: 15, 42: 16, 43: 17, 44: $V6, 46: $V7, 48: $V8, 49: 23, 53: $V9, 54: 24, 57: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 63: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 1: [2, 3] }, { 1: [2, 8] }, { 14: 48, 20: [1, 49] }, o($Vp, [2, 16], { 16: [1, 50] }), { 16: [1, 51] }, { 20: [2, 11] }, o($Vq, [2, 27], { 36: [1, 52] }), o($Vq, [2, 29]), o($Vq, [2, 30]), o($Vq, [2, 31]), o($Vq, [2, 32]), o($Vq, [2, 33]), o($Vq, [2, 34]), o($Vq, [2, 35]), o($Vq, [2, 36]), { 45: [1, 53] }, { 47: [1, 54] }, o($Vq, [2, 39]), o($Vq, [2, 55], { 62: 55, 66: 58, 67: 59, 28: [1, 56], 36: [1, 57], 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv, 73: $Vw, 74: $Vx }), { 50: [1, 67] }, o($Vy, [2, 46], { 50: [1, 69], 55: [1, 68] }), o($Vq, [2, 57]), o($Vq, [2, 58]), { 31: 70, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn }, { 31: 38, 32: 71, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 31: 38, 32: 72, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 31: 38, 32: 73, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 28: [1, 74] }, { 31: 38, 32: 75, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 28: $Vz, 64: 76 }, o($Vq, [2, 4]), o($Vq, [2, 5]), o($Vq, [2, 6]), o($Vq, [2, 7]), o($VA, [2, 22], { 31: 38, 33: 39, 32: 78, 34: [1, 79], 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }), o($VA, [2, 23], { 34: [1, 80] }), { 30: 81, 31: 82, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn }, { 31: 38, 32: 83, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, o($VB, [2, 104]), o($VB, [2, 105]), o($VB, [2, 106]), o($VB, [2, 107]), o([1, 16, 24, 27, 28, 34, 36, 50, 52, 55, 68, 69, 70, 71, 72, 73, 74, 79, 81], [2, 108]), { 1: [2, 2] }, { 15: 84, 17: [1, 85], 22: $VC }, o([17, 22], [2, 12]), o($Vp, [2, 17], { 25: 7, 35: 10, 37: 11, 38: 12, 39: 13, 40: 14, 41: 15, 42: 16, 43: 17, 7: 18, 32: 22, 49: 23, 54: 24, 31: 38, 33: 39, 6: 87, 8: $V0, 9: $V1, 10: $V2, 11: $V3, 44: $V6, 46: $V7, 48: $V8, 53: $V9, 57: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 63: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }), { 6: 88, 7: 18, 8: $V0, 9: $V1, 10: $V2, 11: $V3, 25: 7, 31: 38, 32: 22, 33: 39, 35: 10, 37: 11, 38: 12, 39: 13, 40: 14, 41: 15, 42: 16, 43: 17, 44: $V6, 46: $V7, 48: $V8, 49: 23, 53: $V9, 54: 24, 57: $Va, 58: $Vb, 60: $Vc, 61: $Vd, 63: $Ve, 65: $Vf, 75: $Vg, 76: $Vh, 78: $Vi, 82: $Vj, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, o($Vq, [2, 28]), o($Vq, [2, 37]), o($Vq, [2, 38]), { 28: [1, 90], 31: 38, 32: 89, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 62: 91, 66: 58, 67: 59, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv, 73: $Vw, 74: $Vx }, o($Vq, [2, 56]), { 67: 92, 73: $Vw, 74: $Vx }, o($VD, [2, 68], { 66: 93, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv }), o($VE, [2, 69]), o($VE, [2, 70]), o($VE, [2, 71]), o($VE, [2, 72]), o($VE, [2, 73]), o($VF, [2, 74]), o($VF, [2, 75]), { 16: [1, 95], 38: 96, 51: 94, 54: 24, 57: $Va }, { 31: 97, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn }, { 56: 98, 60: $VG }, { 59: [1, 100] }, { 28: [1, 101] }, { 28: [1, 102] }, { 79: [1, 103], 81: [1, 104] }, { 31: 105, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn }, { 28: $Vz, 64: 106 }, o($Vq, [2, 64]), o($Vq, [2, 109]), o($VA, [2, 24]), o($VA, [2, 25]), o($VA, [2, 26]), { 50: [2, 42] }, { 30: 107, 31: 82, 50: [2, 20], 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn }, o($VH, [2, 50], { 26: 108, 27: [1, 109] }), { 16: [1, 110] }, { 18: 111, 21: [1, 112] }, { 16: [2, 14] }, o($Vp, [2, 18]), { 24: [1, 113] }, o($VI, [2, 59]), { 31: 38, 32: 114, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, { 28: [1, 116], 31: 38, 32: 115, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, o($VD, [2, 67], { 66: 117, 68: $Vr, 69: $Vs, 70: $Vt, 71: $Vu, 72: $Vv }), o($VD, [2, 66]), { 52: [1, 118] }, { 38: 96, 51: 119, 54: 24, 57: $Va }, { 16: [1, 120], 52: [2, 43] }, o($Vy, [2, 47], { 50: [1, 121] }), { 52: [1, 122] }, { 52: [2, 53], 56: 123, 60: $VG }, { 31: 38, 32: 124, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, o($Vq, [2, 76], { 28: [1, 125] }), o($Vq, [2, 78], { 28: [1, 127], 77: [1, 126] }), o($Vq, [2, 82], { 28: [1, 128], 80: [1, 129] }), o($Vq, [2, 86], { 28: [1, 131], 77: [1, 130] }), o($Vq, [2, 90]), o($Vq, [2, 63]), { 50: [2, 21] }, o($VH, [2, 51]), { 28: [1, 132] }, o($VJ, [2, 9]), { 15: 133, 22: $VC }, { 22: [2, 13] }, { 1: [2, 15] }, o($VI, [2, 61]), o($VI, [2, 60]), { 31: 38, 32: 134, 33: 39, 94: $Vk, 96: $Vl, 97: $Vm, 98: $Vn, 99: $Vo }, o($VD, [2, 65]), o($Vq, [2, 40]), { 52: [1, 135] }, { 38: 96, 51: 136, 52: [2, 44], 54: 24, 57: $Va }, { 56: 137, 60: $VG }, o($Vy, [2, 48]), { 52: [2, 54] }, o($Vq, [2, 52]), o($Vq, [2, 77]), o($Vq, [2, 79]), o($Vq, [2, 80], { 77: [1, 138] }), o($Vq, [2, 83]), o($Vq, [2, 84], { 28: [1, 139] }), o($Vq, [2, 87]), o($Vq, [2, 88], { 77: [1, 140] }), { 29: [1, 141] }, { 16: [1, 142] }, o($VI, [2, 62]), o($Vq, [2, 41]), { 52: [2, 45] }, { 52: [1, 143] }, o($Vq, [2, 81]), o($Vq, [2, 85]), o($Vq, [2, 89]), o($VH, [2, 19]), o($VJ, [2, 10]), o($Vy, [2, 49])],\n defaultActions: { 2: [2, 1], 4: [2, 3], 5: [2, 8], 9: [2, 11], 47: [2, 2], 81: [2, 42], 86: [2, 14], 107: [2, 21], 112: [2, 13], 113: [2, 15], 123: [2, 54], 136: [2, 45] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 19;\n case 1:\n return 8;\n case 2:\n return 9;\n case 3:\n return 10;\n case 4:\n return 11;\n case 5:\n this.begin(\"type_directive\");\n return 20;\n case 6:\n this.popState();\n this.begin(\"arg_directive\");\n return 17;\n case 7:\n this.popState();\n this.popState();\n return 22;\n case 8:\n return 21;\n case 9:\n break;\n case 10:\n break;\n case 11:\n this.begin(\"acc_title\");\n return 44;\n case 12:\n this.popState();\n return \"acc_title_value\";\n case 13:\n this.begin(\"acc_descr\");\n return 46;\n case 14:\n this.popState();\n return \"acc_descr_value\";\n case 15:\n this.begin(\"acc_descr_multiline\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return \"acc_descr_multiline_value\";\n case 18:\n return 16;\n case 19:\n break;\n case 20:\n return 23;\n case 21:\n return 23;\n case 22:\n return \"EDGE_STATE\";\n case 23:\n this.begin(\"namespace\");\n return 53;\n case 24:\n this.popState();\n return 16;\n case 25:\n break;\n case 26:\n this.begin(\"namespace-body\");\n return 50;\n case 27:\n this.popState();\n return 52;\n case 28:\n return \"EOF_IN_STRUCT\";\n case 29:\n return 16;\n case 30:\n break;\n case 31:\n return \"EDGE_STATE\";\n case 32:\n this.begin(\"class\");\n return 57;\n case 33:\n this.popState();\n return 16;\n case 34:\n break;\n case 35:\n this.popState();\n this.popState();\n return 52;\n case 36:\n this.begin(\"class-body\");\n return 50;\n case 37:\n this.popState();\n return 52;\n case 38:\n return \"EOF_IN_STRUCT\";\n case 39:\n return \"EDGE_STATE\";\n case 40:\n return \"OPEN_IN_STRUCT\";\n case 41:\n break;\n case 42:\n return \"MEMBER\";\n case 43:\n return 82;\n case 44:\n return 75;\n case 45:\n return 76;\n case 46:\n return 78;\n case 47:\n return 63;\n case 48:\n return 65;\n case 49:\n return 58;\n case 50:\n return 59;\n case 51:\n this.begin(\"href\");\n break;\n case 52:\n this.popState();\n break;\n case 53:\n return 81;\n case 54:\n this.begin(\"callback_name\");\n break;\n case 55:\n this.popState();\n break;\n case 56:\n this.popState();\n this.begin(\"callback_args\");\n break;\n case 57:\n return 79;\n case 58:\n this.popState();\n break;\n case 59:\n return 80;\n case 60:\n this.popState();\n break;\n case 61:\n return \"GENERICTYPE\";\n case 62:\n this.begin(\"generic\");\n break;\n case 63:\n this.popState();\n break;\n case 64:\n return \"STR\";\n case 65:\n this.begin(\"string\");\n break;\n case 66:\n this.popState();\n break;\n case 67:\n return \"BQUOTE_STR\";\n case 68:\n this.begin(\"bqstring\");\n break;\n case 69:\n return 77;\n case 70:\n return 77;\n case 71:\n return 77;\n case 72:\n return 77;\n case 73:\n return 69;\n case 74:\n return 69;\n case 75:\n return 71;\n case 76:\n return 71;\n case 77:\n return 70;\n case 78:\n return 68;\n case 79:\n return 72;\n case 80:\n return 73;\n case 81:\n return 74;\n case 82:\n return 36;\n case 83:\n return 55;\n case 84:\n return 94;\n case 85:\n return \"DOT\";\n case 86:\n return \"PLUS\";\n case 87:\n return 91;\n case 88:\n return \"EQUALS\";\n case 89:\n return \"EQUALS\";\n case 90:\n return 98;\n case 91:\n return 27;\n case 92:\n return 29;\n case 93:\n return \"PUNCTUATION\";\n case 94:\n return 97;\n case 95:\n return 96;\n case 96:\n return 93;\n case 97:\n return 24;\n }\n },\n rules: [/^(?:%%\\{)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:((?:(?!\\}%%)[^:.])*))/, /^(?::)/, /^(?:\\}%%)/, /^(?:((?:(?!\\}%%).|\\n)*))/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:classDiagram-v2\\b)/, /^(?:classDiagram\\b)/, /^(?:\\[\\*\\])/, /^(?:namespace\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:\\[\\*\\])/, /^(?:class\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\[\\*\\])/, /^(?:[{])/, /^(?:[\\n])/, /^(?:[^{}\\n]*)/, /^(?:cssClass\\b)/, /^(?:callback\\b)/, /^(?:link\\b)/, /^(?:click\\b)/, /^(?:note for\\b)/, /^(?:note\\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href[\\s]+[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:[~])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[\"])/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:\\s*<\\|)/, /^(?:\\s*\\|>)/, /^(?:\\s*>)/, /^(?:\\s*<)/, /^(?:\\s*\\*)/, /^(?:\\s*o\\b)/, /^(?:\\s*\\(\\))/, /^(?:--)/, /^(?:\\.\\.)/, /^(?::{1}[^:\\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\\.)/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\\w+)/, /^(?:\\[)/, /^(?:\\])/, /^(?:[!\"#$%&'*+,-.`?\\\\/])/, /^(?:[0-9]+)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"namespace-body\": { \"rules\": [27, 28, 29, 30, 31, 32, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"namespace\": { \"rules\": [23, 24, 25, 26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"class-body\": { \"rules\": [37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"class\": { \"rules\": [33, 34, 35, 36, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [16, 17, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"acc_descr\": { \"rules\": [14, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"acc_title\": { \"rules\": [12, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"arg_directive\": { \"rules\": [7, 8, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"type_directive\": { \"rules\": [6, 7, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"open_directive\": { \"rules\": [5, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"callback_args\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 58, 59, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"callback_name\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"href\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"struct\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"generic\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 60, 61, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"bqstring\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"string\": { \"rules\": [43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 18, 19, 20, 21, 22, 23, 32, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 62, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"classId-\";\nlet relations = [];\nlet classes = {};\nlet notes = [];\nlet classCounter = 0;\nlet namespaces = {};\nlet namespaceCounter = 0;\nlet functions = [];\nconst sanitizeText = (txt) => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.e.sanitizeText(txt, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)());\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.m.parseDirective(this, statement, context, type);\n};\nconst splitClassNameAndType = function(id) {\n let genericType = \"\";\n let className = id;\n if (id.indexOf(\"~\") > 0) {\n const split = id.split(\"~\");\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n return { className, type: genericType };\n};\nconst setClassLabel = function(id, label) {\n if (label) {\n label = sanitizeText(label);\n }\n const { className } = splitClassNameAndType(id);\n classes[className].label = label;\n};\nconst addClass = function(id) {\n const classId = splitClassNameAndType(id);\n if (classes[classId.className] !== void 0) {\n return;\n }\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n label: classId.className,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + \"-\" + classCounter\n };\n classCounter++;\n};\nconst lookUpDomId = function(id) {\n if (id in classes) {\n return classes[id].domId;\n }\n throw new Error(\"Class not found: \" + id);\n};\nconst clear = function() {\n relations = [];\n classes = {};\n notes = [];\n functions = [];\n functions.push(setupToolTips);\n namespaces = {};\n namespaceCounter = 0;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.v)();\n};\nconst getClass = function(id) {\n return classes[id];\n};\nconst getClasses = function() {\n return classes;\n};\nconst getRelations = function() {\n return relations;\n};\nconst getNotes = function() {\n return notes;\n};\nconst addRelation = function(relation) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"Adding relation: \" + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n relation.relationTitle1 = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.e.sanitizeText(\n relation.relationTitle1.trim(),\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)()\n );\n relation.relationTitle2 = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.e.sanitizeText(\n relation.relationTitle2.trim(),\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)()\n );\n relations.push(relation);\n};\nconst addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\nconst addMember = function(className, member) {\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n if (typeof member === \"string\") {\n const memberString = member.trim();\n if (memberString.startsWith(\"<<\") && memberString.endsWith(\">>\")) {\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(\")\") > 0) {\n theClass.methods.push(sanitizeText(memberString));\n } else if (memberString) {\n theClass.members.push(sanitizeText(memberString));\n }\n }\n};\nconst addMembers = function(className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\nconst addNote = function(text, className) {\n const note = {\n id: `note${notes.length}`,\n class: className,\n text\n };\n notes.push(note);\n};\nconst cleanupLabel = function(label) {\n if (label.startsWith(\":\")) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n};\nconst setCssClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].cssClasses.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n classes[id].tooltip = sanitizeText(tooltip);\n }\n });\n};\nconst getTooltip = function(id, namespace) {\n if (namespace) {\n return namespaces[namespace].classes[id].tooltip;\n }\n return classes[id].tooltip;\n};\nconst setLink = function(ids, linkStr, target) {\n const config = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)();\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].link = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.formatUrl(linkStr, config);\n if (config.securityLevel === \"sandbox\") {\n classes[id].linkTarget = \"_top\";\n } else if (typeof target === \"string\") {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = \"_blank\";\n }\n }\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickFunc = function(domId, functionName, functionArgs) {\n const config = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)();\n if (config.securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n const id = domId;\n if (classes[id] !== void 0) {\n const elemId = lookUpDomId(id);\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(elemId);\n }\n functions.push(function() {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst bindFunctions = function(element) {\n functions.forEach(function(fun) {\n fun(element);\n });\n};\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4\n};\nconst setupToolTips = function(element) {\n let tooltipElem = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(this);\n el.classed(\"hover\", false);\n });\n};\nfunctions.push(setupToolTips);\nlet direction = \"TB\";\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst addNamespace = function(id) {\n if (namespaces[id] !== void 0) {\n return;\n }\n namespaces[id] = {\n id,\n classes: {},\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n };\n namespaceCounter++;\n};\nconst getNamespace = function(name) {\n return namespaces[name];\n};\nconst getNamespaces = function() {\n return namespaces;\n};\nconst addClassesToNamespace = function(id, classNames) {\n if (namespaces[id] !== void 0) {\n classNames.map((className) => {\n namespaces[id].classes[className] = classes[className];\n delete classes[className];\n classCounter--;\n });\n }\n};\nconst db = {\n parseDirective,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.s,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.g,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.b,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.c)().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.t,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces\n};\nconst getStyles = (options) => `g.classGroup text {\n fill: ${options.nodeBorder};\n fill: ${options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdHlsZXMtYWVmZTY1OTMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBNEI7QUFDNk47QUFDelA7QUFDQTtBQUNBLHNCQUFzQixnQkFBZ0IsS0FBSztBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsVUFBVTtBQUNWLGdCQUFnQixpd0RBQWl3RDtBQUNqeEQsa0JBQWtCLHNpQ0FBc2lDO0FBQ3hqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7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QUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGtCQUFrQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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O0FBQy9CO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLG1CQUFtQjtBQUM3QixZQUFZLG1CQUFtQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0EsVUFBVSxtQkFBbUI7QUFDN0IsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTs7QUFFQTtBQUNBLFVBQVUsbUJBQW1CO0FBQzdCLFlBQVksbUJBQW1CO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLGlCQUFpQjtBQUMzQixZQUFZLG1CQUFtQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0IsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTs7QUFFQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCLFlBQVksbUJBQW1CO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLGlCQUFpQjtBQUMzQixZQUFZLG1CQUFtQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0IsWUFBWSxtQkFBbUI7QUFDL0I7QUFDQTs7QUFFQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCLFlBQVksbUJBQW1CO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFLRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L3N0eWxlcy1hZWZlNjU5My5qcz8wMjIxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlbGVjdCB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgcyBhcyBzZXRBY2NUaXRsZSwgZyBhcyBnZXRBY2NUaXRsZSwgYSBhcyBnZXRBY2NEZXNjcmlwdGlvbiwgYiBhcyBzZXRBY2NEZXNjcmlwdGlvbiwgYyBhcyBnZXRDb25maWcsIHIgYXMgc2V0RGlhZ3JhbVRpdGxlLCB0IGFzIGdldERpYWdyYW1UaXRsZSwgbSBhcyBtZXJtYWlkQVBJLCB2IGFzIGNsZWFyJDEsIGwgYXMgbG9nLCBlIGFzIGNvbW1vbiwgdSBhcyB1dGlscyB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCAzNF0sICRWMSA9IFsxLCAzNV0sICRWMiA9IFsxLCAzNl0sICRWMyA9IFsxLCAzN10sICRWNCA9IFsxLCA5XSwgJFY1ID0gWzEsIDhdLCAkVjYgPSBbMSwgMTldLCAkVjcgPSBbMSwgMjBdLCAkVjggPSBbMSwgMjFdLCAkVjkgPSBbMSwgNDBdLCAkVmEgPSBbMSwgNDFdLCAkVmIgPSBbMSwgMjddLCAkVmMgPSBbMSwgMjVdLCAkVmQgPSBbMSwgMjZdLCAkVmUgPSBbMSwgMzJdLCAkVmYgPSBbMSwgMzNdLCAkVmcgPSBbMSwgMjhdLCAkVmggPSBbMSwgMjldLCAkVmkgPSBbMSwgMzBdLCAkVmogPSBbMSwgMzFdLCAkVmsgPSBbMSwgNDVdLCAkVmwgPSBbMSwgNDJdLCAkVm0gPSBbMSwgNDNdLCAkVm4gPSBbMSwgNDRdLCAkVm8gPSBbMSwgNDZdLCAkVnAgPSBbMSwgMjRdLCAkVnEgPSBbMSwgMTYsIDI0XSwgJFZyID0gWzEsIDYwXSwgJFZzID0gWzEsIDYxXSwgJFZ0ID0gWzEsIDYyXSwgJFZ1ID0gWzEsIDYzXSwgJFZ2ID0gWzEsIDY0XSwgJFZ3ID0gWzEsIDY1XSwgJFZ4ID0gWzEsIDY2XSwgJFZ5ID0gWzEsIDE2LCAyNCwgNTJdLCAkVnogPSBbMSwgNzddLCAkVkEgPSBbMSwgMTYsIDI0LCAyNywgMjgsIDM2LCA1MCwgNTIsIDU1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzksIDgxXSwgJFZCID0gWzEsIDE2LCAyNCwgMjcsIDI4LCAzNCwgMzYsIDUwLCA1MiwgNTUsIDU5LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzksIDgxLCA5NCwgOTYsIDk3LCA5OCwgOTldLCAkVkMgPSBbMSwgODZdLCAkVkQgPSBbMjgsIDk0LCA5NiwgOTcsIDk4LCA5OV0sICRWRSA9IFsyOCwgNzMsIDc0LCA5NCwgOTYsIDk3LCA5OCwgOTldLCAkVkYgPSBbMjgsIDY4LCA2OSwgNzAsIDcxLCA3MiwgOTQsIDk2LCA5NywgOTgsIDk5XSwgJFZHID0gWzEsIDk5XSwgJFZIID0gWzEsIDE2LCAyNCwgNTAsIDUyLCA1NV0sICRWSSA9IFsxLCAxNiwgMjQsIDM2XSwgJFZKID0gWzgsIDksIDEwLCAxMSwgMTksIDIzLCA0NCwgNDYsIDQ4LCA1MywgNTcsIDU4LCA2MCwgNjEsIDYzLCA2NSwgNzUsIDc2LCA3OCwgODIsIDk0LCA5NiwgOTcsIDk4LCA5OV07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJtZXJtYWlkRG9jXCI6IDQsIFwiZGlyZWN0aXZlXCI6IDUsIFwic3RhdGVtZW50c1wiOiA2LCBcImRpcmVjdGlvblwiOiA3LCBcImRpcmVjdGlvbl90YlwiOiA4LCBcImRpcmVjdGlvbl9idFwiOiA5LCBcImRpcmVjdGlvbl9ybFwiOiAxMCwgXCJkaXJlY3Rpb25fbHJcIjogMTEsIFwiZ3JhcGhDb25maWdcIjogMTIsIFwib3BlbkRpcmVjdGl2ZVwiOiAxMywgXCJ0eXBlRGlyZWN0aXZlXCI6IDE0LCBcImNsb3NlRGlyZWN0aXZlXCI6IDE1LCBcIk5FV0xJTkVcIjogMTYsIFwiOlwiOiAxNywgXCJhcmdEaXJlY3RpdmVcIjogMTgsIFwib3Blbl9kaXJlY3RpdmVcIjogMTksIFwidHlwZV9kaXJlY3RpdmVcIjogMjAsIFwiYXJnX2RpcmVjdGl2ZVwiOiAyMSwgXCJjbG9zZV9kaXJlY3RpdmVcIjogMjIsIFwiQ0xBU1NfRElBR1JBTVwiOiAyMywgXCJFT0ZcIjogMjQsIFwic3RhdGVtZW50XCI6IDI1LCBcImNsYXNzTGFiZWxcIjogMjYsIFwiU1FTXCI6IDI3LCBcIlNUUlwiOiAyOCwgXCJTUUVcIjogMjksIFwibmFtZXNwYWNlTmFtZVwiOiAzMCwgXCJhbHBoYU51bVRva2VuXCI6IDMxLCBcImNsYXNzTmFtZVwiOiAzMiwgXCJjbGFzc0xpdGVyYWxOYW1lXCI6IDMzLCBcIkdFTkVSSUNUWVBFXCI6IDM0LCBcInJlbGF0aW9uU3RhdGVtZW50XCI6IDM1LCBcIkxBQkVMXCI6IDM2LCBcIm5hbWVzcGFjZVN0YXRlbWVudFwiOiAzNywgXCJjbGFzc1N0YXRlbWVudFwiOiAzOCwgXCJtZXRob2RTdGF0ZW1lbnRcIjogMzksIFwiYW5ub3RhdGlvblN0YXRlbWVudFwiOiA0MCwgXCJjbGlja1N0YXRlbWVudFwiOiA0MSwgXCJjc3NDbGFzc1N0YXRlbWVudFwiOiA0MiwgXCJub3RlU3RhdGVtZW50XCI6IDQzLCBcImFjY190aXRsZVwiOiA0NCwgXCJhY2NfdGl0bGVfdmFsdWVcIjogNDUsIFwiYWNjX2Rlc2NyXCI6IDQ2LCBcImFjY19kZXNjcl92YWx1ZVwiOiA0NywgXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI6IDQ4LCBcIm5hbWVzcGFjZUlkZW50aWZpZXJcIjogNDksIFwiU1RSVUNUX1NUQVJUXCI6IDUwLCBcImNsYXNzU3RhdGVtZW50c1wiOiA1MSwgXCJTVFJVQ1RfU1RPUFwiOiA1MiwgXCJOQU1FU1BBQ0VcIjogNTMsIFwiY2xhc3NJZGVudGlmaWVyXCI6IDU0LCBcIlNUWUxFX1NFUEFSQVRPUlwiOiA1NSwgXCJtZW1iZXJzXCI6IDU2LCBcIkNMQVNTXCI6IDU3LCBcIkFOTk9UQVRJT05fU1RBUlRcIjogNTgsIFwiQU5OT1RBVElPTl9FTkRcIjogNTksIFwiTUVNQkVSXCI6IDYwLCBcIlNFUEFSQVRPUlwiOiA2MSwgXCJyZWxhdGlvblwiOiA2MiwgXCJOT1RFX0ZPUlwiOiA2MywgXCJub3RlVGV4dFwiOiA2NCwgXCJOT1RFXCI6IDY1LCBcInJlbGF0aW9uVHlwZVwiOiA2NiwgXCJsaW5lVHlwZVwiOiA2NywgXCJBR0dSRUdBVElPTlwiOiA2OCwgXCJFWFRFTlNJT05cIjogNjksIFwiQ09NUE9TSVRJT05cIjogNzAsIFwiREVQRU5ERU5DWVwiOiA3MSwgXCJMT0xMSVBPUFwiOiA3MiwgXCJMSU5FXCI6IDczLCBcIkRPVFRFRF9MSU5FXCI6IDc0LCBcIkNBTExCQUNLXCI6IDc1LCBcIkxJTktcIjogNzYsIFwiTElOS19UQVJHRVRcIjogNzcsIFwiQ0xJQ0tcIjogNzgsIFwiQ0FMTEJBQ0tfTkFNRVwiOiA3OSwgXCJDQUxMQkFDS19BUkdTXCI6IDgwLCBcIkhSRUZcIjogODEsIFwiQ1NTQ0xBU1NcIjogODIsIFwiY29tbWVudFRva2VuXCI6IDgzLCBcInRleHRUb2tlblwiOiA4NCwgXCJncmFwaENvZGVUb2tlbnNcIjogODUsIFwidGV4dE5vVGFnc1Rva2VuXCI6IDg2LCBcIlRBR1NUQVJUXCI6IDg3LCBcIlRBR0VORFwiOiA4OCwgXCI9PVwiOiA4OSwgXCItLVwiOiA5MCwgXCJQQ1RcIjogOTEsIFwiREVGQVVMVFwiOiA5MiwgXCJTUEFDRVwiOiA5MywgXCJNSU5VU1wiOiA5NCwgXCJrZXl3b3Jkc1wiOiA5NSwgXCJVTklDT0RFX1RFWFRcIjogOTYsIFwiTlVNXCI6IDk3LCBcIkFMUEhBXCI6IDk4LCBcIkJRVU9URV9TVFJcIjogOTksIFwiJGFjY2VwdFwiOiAwLCBcIiRlbmRcIjogMSB9LFxuICAgIHRlcm1pbmFsc186IHsgMjogXCJlcnJvclwiLCA4OiBcImRpcmVjdGlvbl90YlwiLCA5OiBcImRpcmVjdGlvbl9idFwiLCAxMDogXCJkaXJlY3Rpb25fcmxcIiwgMTE6IFwiZGlyZWN0aW9uX2xyXCIsIDE2OiBcIk5FV0xJTkVcIiwgMTc6IFwiOlwiLCAxOTogXCJvcGVuX2RpcmVjdGl2ZVwiLCAyMDogXCJ0eXBlX2RpcmVjdGl2ZVwiLCAyMTogXCJhcmdfZGlyZWN0aXZlXCIsIDIyOiBcImNsb3NlX2RpcmVjdGl2ZVwiLCAyMzogXCJDTEFTU19ESUFHUkFNXCIsIDI0OiBcIkVPRlwiLCAyNzogXCJTUVNcIiwgMjg6IFwiU1RSXCIsIDI5OiBcIlNRRVwiLCAzNDogXCJHRU5FUklDVFlQRVwiLCAzNjogXCJMQUJFTFwiLCA0NDogXCJhY2NfdGl0bGVcIiwgNDU6IFwiYWNjX3RpdGxlX3ZhbHVlXCIsIDQ2OiBcImFjY19kZXNjclwiLCA0NzogXCJhY2NfZGVzY3JfdmFsdWVcIiwgNDg6IFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiLCA1MDogXCJTVFJVQ1RfU1RBUlRcIiwgNTI6IFwiU1RSVUNUX1NUT1BcIiwgNTM6IFwiTkFNRVNQQUNFXCIsIDU1OiBcIlNUWUxFX1NFUEFSQVRPUlwiLCA1NzogXCJDTEFTU1wiLCA1ODogXCJBTk5PVEFUSU9OX1NUQVJUXCIsIDU5OiBcIkFOTk9UQVRJT05fRU5EXCIsIDYwOiBcIk1FTUJFUlwiLCA2MTogXCJTRVBBUkFUT1JcIiwgNjM6IFwiTk9URV9GT1JcIiwgNjU6IFwiTk9URVwiLCA2ODogXCJBR0dSRUdBVElPTlwiLCA2OTogXCJFWFRFTlNJT05cIiwgNzA6IFwiQ09NUE9TSVRJT05cIiwgNzE6IFwiREVQRU5ERU5DWVwiLCA3MjogXCJMT0xMSVBPUFwiLCA3MzogXCJMSU5FXCIsIDc0OiBcIkRPVFRFRF9MSU5FXCIsIDc1OiBcIkNBTExCQUNLXCIsIDc2OiBcIkxJTktcIiwgNzc6IFwiTElOS19UQVJHRVRcIiwgNzg6IFwiQ0xJQ0tcIiwgNzk6IFwiQ0FMTEJBQ0tfTkFNRVwiLCA4MDogXCJDQUxMQkFDS19BUkdTXCIsIDgxOiBcIkhSRUZcIiwgODI6IFwiQ1NTQ0xBU1NcIiwgODU6IFwiZ3JhcGhDb2RlVG9rZW5zXCIsIDg3OiBcIlRBR1NUQVJUXCIsIDg4OiBcIlRBR0VORFwiLCA4OTogXCI9PVwiLCA5MDogXCItLVwiLCA5MTogXCJQQ1RcIiwgOTI6IFwiREVGQVVMVFwiLCA5MzogXCJTUEFDRVwiLCA5NDogXCJNSU5VU1wiLCA5NTogXCJrZXl3b3Jkc1wiLCA5NjogXCJVTklDT0RFX1RFWFRcIiwgOTc6IFwiTlVNXCIsIDk4OiBcIkFMUEhBXCIsIDk5OiBcIkJRVU9URV9TVFJcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAxXSwgWzMsIDJdLCBbMywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzQsIDFdLCBbNSwgNF0sIFs1LCA2XSwgWzEzLCAxXSwgWzE0LCAxXSwgWzE4LCAxXSwgWzE1LCAxXSwgWzEyLCA0XSwgWzYsIDFdLCBbNiwgMl0sIFs2LCAzXSwgWzI2LCAzXSwgWzMwLCAxXSwgWzMwLCAyXSwgWzMyLCAxXSwgWzMyLCAxXSwgWzMyLCAyXSwgWzMyLCAyXSwgWzMyLCAyXSwgWzI1LCAxXSwgWzI1LCAyXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAxXSwgWzI1LCAyXSwgWzI1LCAyXSwgWzI1LCAxXSwgWzM3LCA0XSwgWzM3LCA1XSwgWzQ5LCAyXSwgWzUxLCAxXSwgWzUxLCAyXSwgWzUxLCAzXSwgWzM4LCAxXSwgWzM4LCAzXSwgWzM4LCA0XSwgWzM4LCA2XSwgWzU0LCAyXSwgWzU0LCAzXSwgWzQwLCA0XSwgWzU2LCAxXSwgWzU2LCAyXSwgWzM5LCAxXSwgWzM5LCAyXSwgWzM5LCAxXSwgWzM5LCAxXSwgWzM1LCAzXSwgWzM1LCA0XSwgWzM1LCA0XSwgWzM1LCA1XSwgWzQzLCAzXSwgWzQzLCAyXSwgWzYyLCAzXSwgWzYyLCAyXSwgWzYyLCAyXSwgWzYyLCAxXSwgWzY2LCAxXSwgWzY2LCAxXSwgWzY2LCAxXSwgWzY2LCAxXSwgWzY2LCAxXSwgWzY3LCAxXSwgWzY3LCAxXSwgWzQxLCAzXSwgWzQxLCA0XSwgWzQxLCAzXSwgWzQxLCA0XSwgWzQxLCA0XSwgWzQxLCA1XSwgWzQxLCAzXSwgWzQxLCA0XSwgWzQxLCA0XSwgWzQxLCA1XSwgWzQxLCAzXSwgWzQxLCA0XSwgWzQxLCA0XSwgWzQxLCA1XSwgWzQyLCAzXSwgWzgzLCAxXSwgWzgzLCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg0LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzg2LCAxXSwgWzMxLCAxXSwgWzMxLCAxXSwgWzMxLCAxXSwgWzMxLCAxXSwgWzMzLCAxXSwgWzY0LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgeXkuc2V0RGlyZWN0aW9uKFwiVEJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJCVFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHl5LnNldERpcmVjdGlvbihcIlJMXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgeXkuc2V0RGlyZWN0aW9uKFwiTFJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCIlJXtcIiwgXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgJCRbJDBdID0gJCRbJDBdLnRyaW0oKS5yZXBsYWNlKC8nL2csICdcIicpO1xuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwifSUlXCIsIFwiY2xvc2VfZGlyZWN0aXZlXCIsIFwiY2xhc3NcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjE6XG4gICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXSArICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDFdICsgXCJ+XCIgKyAkJFskMF0gKyBcIn5cIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICB5eS5hZGRSZWxhdGlvbigkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI4OlxuICAgICAgICAgICQkWyQwIC0gMV0udGl0bGUgPSB5eS5jbGVhbnVwTGFiZWwoJCRbJDBdKTtcbiAgICAgICAgICB5eS5hZGRSZWxhdGlvbigkJFskMCAtIDFdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY1RpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgIHl5LmFkZENsYXNzZXNUb05hbWVzcGFjZSgkJFskMCAtIDNdLCAkJFskMCAtIDFdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICB5eS5hZGRDbGFzc2VzVG9OYW1lc3BhY2UoJCRbJDAgLSA0XSwgJCRbJDAgLSAxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIHl5LmFkZE5hbWVzcGFjZSgkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMCAtIDFdXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAkJFskMF0udW5zaGlmdCgkJFskMCAtIDJdKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgeXkuc2V0Q3NzQ2xhc3MoJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICB5eS5hZGRNZW1iZXJzKCQkWyQwIC0gM10sICQkWyQwIC0gMV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ5OlxuICAgICAgICAgIHl5LnNldENzc0NsYXNzKCQkWyQwIC0gNV0sICQkWyQwIC0gM10pO1xuICAgICAgICAgIHl5LmFkZE1lbWJlcnMoJCRbJDAgLSA1XSwgJCRbJDAgLSAxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIHl5LmFkZENsYXNzKCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAxXTtcbiAgICAgICAgICB5eS5hZGRDbGFzcygkJFskMCAtIDFdKTtcbiAgICAgICAgICB5eS5zZXRDbGFzc0xhYmVsKCQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTI6XG4gICAgICAgICAgeXkuYWRkQW5ub3RhdGlvbigkJFskMF0sICQkWyQwIC0gMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDUzOlxuICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU0OlxuICAgICAgICAgICQkWyQwXS5wdXNoKCQkWyQwIC0gMV0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1NjpcbiAgICAgICAgICB5eS5hZGRNZW1iZXIoJCRbJDAgLSAxXSwgeXkuY2xlYW51cExhYmVsKCQkWyQwXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU3OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgIHRoaXMuJCA9IHsgXCJpZDFcIjogJCRbJDAgLSAyXSwgXCJpZDJcIjogJCRbJDBdLCByZWxhdGlvbjogJCRbJDAgLSAxXSwgcmVsYXRpb25UaXRsZTE6IFwibm9uZVwiLCByZWxhdGlvblRpdGxlMjogXCJub25lXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2MDpcbiAgICAgICAgICB0aGlzLiQgPSB7IGlkMTogJCRbJDAgLSAzXSwgaWQyOiAkJFskMF0sIHJlbGF0aW9uOiAkJFskMCAtIDFdLCByZWxhdGlvblRpdGxlMTogJCRbJDAgLSAyXSwgcmVsYXRpb25UaXRsZTI6IFwibm9uZVwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgdGhpcy4kID0geyBpZDE6ICQkWyQwIC0gM10sIGlkMjogJCRbJDBdLCByZWxhdGlvbjogJCRbJDAgLSAyXSwgcmVsYXRpb25UaXRsZTE6IFwibm9uZVwiLCByZWxhdGlvblRpdGxlMjogJCRbJDAgLSAxXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYyOlxuICAgICAgICAgIHRoaXMuJCA9IHsgaWQxOiAkJFskMCAtIDRdLCBpZDI6ICQkWyQwXSwgcmVsYXRpb246ICQkWyQwIC0gMl0sIHJlbGF0aW9uVGl0bGUxOiAkJFskMCAtIDNdLCByZWxhdGlvblRpdGxlMjogJCRbJDAgLSAxXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDYzOlxuICAgICAgICAgIHl5LmFkZE5vdGUoJCRbJDBdLCAkJFskMCAtIDFdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NDpcbiAgICAgICAgICB5eS5hZGROb3RlKCQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjU6XG4gICAgICAgICAgdGhpcy4kID0geyB0eXBlMTogJCRbJDAgLSAyXSwgdHlwZTI6ICQkWyQwXSwgbGluZVR5cGU6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGUxOiBcIm5vbmVcIiwgdHlwZTI6ICQkWyQwXSwgbGluZVR5cGU6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGUxOiAkJFskMCAtIDFdLCB0eXBlMjogXCJub25lXCIsIGxpbmVUeXBlOiAkJFskMF0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2ODpcbiAgICAgICAgICB0aGlzLiQgPSB7IHR5cGUxOiBcIm5vbmVcIiwgdHlwZTI6IFwibm9uZVwiLCBsaW5lVHlwZTogJCRbJDBdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNjk6XG4gICAgICAgICAgdGhpcy4kID0geXkucmVsYXRpb25UeXBlLkFHR1JFR0FUSU9OO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgIHRoaXMuJCA9IHl5LnJlbGF0aW9uVHlwZS5FWFRFTlNJT047XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzE6XG4gICAgICAgICAgdGhpcy4kID0geXkucmVsYXRpb25UeXBlLkNPTVBPU0lUSU9OO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDcyOlxuICAgICAgICAgIHRoaXMuJCA9IHl5LnJlbGF0aW9uVHlwZS5ERVBFTkRFTkNZO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDczOlxuICAgICAgICAgIHRoaXMuJCA9IHl5LnJlbGF0aW9uVHlwZS5MT0xMSVBPUDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3NDpcbiAgICAgICAgICB0aGlzLiQgPSB5eS5saW5lVHlwZS5MSU5FO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc1OlxuICAgICAgICAgIHRoaXMuJCA9IHl5LmxpbmVUeXBlLkRPVFRFRF9MSU5FO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc2OlxuICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMl07XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDFdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc3OlxuICAgICAgICBjYXNlIDgzOlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDJdLCAkJFskMCAtIDFdKTtcbiAgICAgICAgICB5eS5zZXRUb29sdGlwKCQkWyQwIC0gMl0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzg6XG4gICAgICAgIGNhc2UgODY6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNzk6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODA6XG4gICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0pO1xuICAgICAgICAgIHl5LnNldFRvb2x0aXAoJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA4MTpcbiAgICAgICAgY2FzZSA4OTpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMCAtIDRdO1xuICAgICAgICAgIHl5LnNldExpbmsoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDBdKTtcbiAgICAgICAgICB5eS5zZXRUb29sdGlwKCQkWyQwIC0gM10sICQkWyQwIC0gMV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gM107XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDJdLCAkJFskMCAtIDFdLCAkJFskMF0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDg1OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gNF07XG4gICAgICAgICAgeXkuc2V0Q2xpY2tFdmVudCgkJFskMCAtIDNdLCAkJFskMCAtIDJdLCAkJFskMCAtIDFdKTtcbiAgICAgICAgICB5eS5zZXRUb29sdGlwKCQkWyQwIC0gM10sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDAgLSAzXTtcbiAgICAgICAgICB5eS5zZXRMaW5rKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgeXkuc2V0Q3NzQ2xhc3MoJCRbJDAgLSAxXSwgJCRbJDBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAyLCA1OiAzLCA2OiA0LCA3OiAxOCwgODogJFYwLCA5OiAkVjEsIDEwOiAkVjIsIDExOiAkVjMsIDEyOiA1LCAxMzogNiwgMTk6ICRWNCwgMjM6ICRWNSwgMjU6IDcsIDMxOiAzOCwgMzI6IDIyLCAzMzogMzksIDM1OiAxMCwgMzc6IDExLCAzODogMTIsIDM5OiAxMywgNDA6IDE0LCA0MTogMTUsIDQyOiAxNiwgNDM6IDE3LCA0NDogJFY2LCA0NjogJFY3LCA0ODogJFY4LCA0OTogMjMsIDUzOiAkVjksIDU0OiAyNCwgNTc6ICRWYSwgNTg6ICRWYiwgNjA6ICRWYywgNjE6ICRWZCwgNjM6ICRWZSwgNjU6ICRWZiwgNzU6ICRWZywgNzY6ICRWaCwgNzg6ICRWaSwgODI6ICRWaiwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCB7IDE6IFszXSB9LCB7IDE6IFsyLCAxXSB9LCB7IDM6IDQ3LCA0OiAyLCA1OiAzLCA2OiA0LCA3OiAxOCwgODogJFYwLCA5OiAkVjEsIDEwOiAkVjIsIDExOiAkVjMsIDEyOiA1LCAxMzogNiwgMTk6ICRWNCwgMjM6ICRWNSwgMjU6IDcsIDMxOiAzOCwgMzI6IDIyLCAzMzogMzksIDM1OiAxMCwgMzc6IDExLCAzODogMTIsIDM5OiAxMywgNDA6IDE0LCA0MTogMTUsIDQyOiAxNiwgNDM6IDE3LCA0NDogJFY2LCA0NjogJFY3LCA0ODogJFY4LCA0OTogMjMsIDUzOiAkVjksIDU0OiAyNCwgNTc6ICRWYSwgNTg6ICRWYiwgNjA6ICRWYywgNjE6ICRWZCwgNjM6ICRWZSwgNjU6ICRWZiwgNzU6ICRWZywgNzY6ICRWaCwgNzg6ICRWaSwgODI6ICRWaiwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCB7IDE6IFsyLCAzXSB9LCB7IDE6IFsyLCA4XSB9LCB7IDE0OiA0OCwgMjA6IFsxLCA0OV0gfSwgbygkVnAsIFsyLCAxNl0sIHsgMTY6IFsxLCA1MF0gfSksIHsgMTY6IFsxLCA1MV0gfSwgeyAyMDogWzIsIDExXSB9LCBvKCRWcSwgWzIsIDI3XSwgeyAzNjogWzEsIDUyXSB9KSwgbygkVnEsIFsyLCAyOV0pLCBvKCRWcSwgWzIsIDMwXSksIG8oJFZxLCBbMiwgMzFdKSwgbygkVnEsIFsyLCAzMl0pLCBvKCRWcSwgWzIsIDMzXSksIG8oJFZxLCBbMiwgMzRdKSwgbygkVnEsIFsyLCAzNV0pLCBvKCRWcSwgWzIsIDM2XSksIHsgNDU6IFsxLCA1M10gfSwgeyA0NzogWzEsIDU0XSB9LCBvKCRWcSwgWzIsIDM5XSksIG8oJFZxLCBbMiwgNTVdLCB7IDYyOiA1NSwgNjY6IDU4LCA2NzogNTksIDI4OiBbMSwgNTZdLCAzNjogWzEsIDU3XSwgNjg6ICRWciwgNjk6ICRWcywgNzA6ICRWdCwgNzE6ICRWdSwgNzI6ICRWdiwgNzM6ICRWdywgNzQ6ICRWeCB9KSwgeyA1MDogWzEsIDY3XSB9LCBvKCRWeSwgWzIsIDQ2XSwgeyA1MDogWzEsIDY5XSwgNTU6IFsxLCA2OF0gfSksIG8oJFZxLCBbMiwgNTddKSwgbygkVnEsIFsyLCA1OF0pLCB7IDMxOiA3MCwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiB9LCB7IDMxOiAzOCwgMzI6IDcxLCAzMzogMzksIDk0OiAkVmssIDk2OiAkVmwsIDk3OiAkVm0sIDk4OiAkVm4sIDk5OiAkVm8gfSwgeyAzMTogMzgsIDMyOiA3MiwgMzM6IDM5LCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuLCA5OTogJFZvIH0sIHsgMzE6IDM4LCAzMjogNzMsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCB7IDI4OiBbMSwgNzRdIH0sIHsgMzE6IDM4LCAzMjogNzUsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCB7IDI4OiAkVnosIDY0OiA3NiB9LCBvKCRWcSwgWzIsIDRdKSwgbygkVnEsIFsyLCA1XSksIG8oJFZxLCBbMiwgNl0pLCBvKCRWcSwgWzIsIDddKSwgbygkVkEsIFsyLCAyMl0sIHsgMzE6IDM4LCAzMzogMzksIDMyOiA3OCwgMzQ6IFsxLCA3OV0sIDk0OiAkVmssIDk2OiAkVmwsIDk3OiAkVm0sIDk4OiAkVm4sIDk5OiAkVm8gfSksIG8oJFZBLCBbMiwgMjNdLCB7IDM0OiBbMSwgODBdIH0pLCB7IDMwOiA4MSwgMzE6IDgyLCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuIH0sIHsgMzE6IDM4LCAzMjogODMsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCBvKCRWQiwgWzIsIDEwNF0pLCBvKCRWQiwgWzIsIDEwNV0pLCBvKCRWQiwgWzIsIDEwNl0pLCBvKCRWQiwgWzIsIDEwN10pLCBvKFsxLCAxNiwgMjQsIDI3LCAyOCwgMzQsIDM2LCA1MCwgNTIsIDU1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzksIDgxXSwgWzIsIDEwOF0pLCB7IDE6IFsyLCAyXSB9LCB7IDE1OiA4NCwgMTc6IFsxLCA4NV0sIDIyOiAkVkMgfSwgbyhbMTcsIDIyXSwgWzIsIDEyXSksIG8oJFZwLCBbMiwgMTddLCB7IDI1OiA3LCAzNTogMTAsIDM3OiAxMSwgMzg6IDEyLCAzOTogMTMsIDQwOiAxNCwgNDE6IDE1LCA0MjogMTYsIDQzOiAxNywgNzogMTgsIDMyOiAyMiwgNDk6IDIzLCA1NDogMjQsIDMxOiAzOCwgMzM6IDM5LCA2OiA4NywgODogJFYwLCA5OiAkVjEsIDEwOiAkVjIsIDExOiAkVjMsIDQ0OiAkVjYsIDQ2OiAkVjcsIDQ4OiAkVjgsIDUzOiAkVjksIDU3OiAkVmEsIDU4OiAkVmIsIDYwOiAkVmMsIDYxOiAkVmQsIDYzOiAkVmUsIDY1OiAkVmYsIDc1OiAkVmcsIDc2OiAkVmgsIDc4OiAkVmksIDgyOiAkVmosIDk0OiAkVmssIDk2OiAkVmwsIDk3OiAkVm0sIDk4OiAkVm4sIDk5OiAkVm8gfSksIHsgNjogODgsIDc6IDE4LCA4OiAkVjAsIDk6ICRWMSwgMTA6ICRWMiwgMTE6ICRWMywgMjU6IDcsIDMxOiAzOCwgMzI6IDIyLCAzMzogMzksIDM1OiAxMCwgMzc6IDExLCAzODogMTIsIDM5OiAxMywgNDA6IDE0LCA0MTogMTUsIDQyOiAxNiwgNDM6IDE3LCA0NDogJFY2LCA0NjogJFY3LCA0ODogJFY4LCA0OTogMjMsIDUzOiAkVjksIDU0OiAyNCwgNTc6ICRWYSwgNTg6ICRWYiwgNjA6ICRWYywgNjE6ICRWZCwgNjM6ICRWZSwgNjU6ICRWZiwgNzU6ICRWZywgNzY6ICRWaCwgNzg6ICRWaSwgODI6ICRWaiwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCBvKCRWcSwgWzIsIDI4XSksIG8oJFZxLCBbMiwgMzddKSwgbygkVnEsIFsyLCAzOF0pLCB7IDI4OiBbMSwgOTBdLCAzMTogMzgsIDMyOiA4OSwgMzM6IDM5LCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuLCA5OTogJFZvIH0sIHsgNjI6IDkxLCA2NjogNTgsIDY3OiA1OSwgNjg6ICRWciwgNjk6ICRWcywgNzA6ICRWdCwgNzE6ICRWdSwgNzI6ICRWdiwgNzM6ICRWdywgNzQ6ICRWeCB9LCBvKCRWcSwgWzIsIDU2XSksIHsgNjc6IDkyLCA3MzogJFZ3LCA3NDogJFZ4IH0sIG8oJFZELCBbMiwgNjhdLCB7IDY2OiA5MywgNjg6ICRWciwgNjk6ICRWcywgNzA6ICRWdCwgNzE6ICRWdSwgNzI6ICRWdiB9KSwgbygkVkUsIFsyLCA2OV0pLCBvKCRWRSwgWzIsIDcwXSksIG8oJFZFLCBbMiwgNzFdKSwgbygkVkUsIFsyLCA3Ml0pLCBvKCRWRSwgWzIsIDczXSksIG8oJFZGLCBbMiwgNzRdKSwgbygkVkYsIFsyLCA3NV0pLCB7IDE2OiBbMSwgOTVdLCAzODogOTYsIDUxOiA5NCwgNTQ6IDI0LCA1NzogJFZhIH0sIHsgMzE6IDk3LCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuIH0sIHsgNTY6IDk4LCA2MDogJFZHIH0sIHsgNTk6IFsxLCAxMDBdIH0sIHsgMjg6IFsxLCAxMDFdIH0sIHsgMjg6IFsxLCAxMDJdIH0sIHsgNzk6IFsxLCAxMDNdLCA4MTogWzEsIDEwNF0gfSwgeyAzMTogMTA1LCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuIH0sIHsgMjg6ICRWeiwgNjQ6IDEwNiB9LCBvKCRWcSwgWzIsIDY0XSksIG8oJFZxLCBbMiwgMTA5XSksIG8oJFZBLCBbMiwgMjRdKSwgbygkVkEsIFsyLCAyNV0pLCBvKCRWQSwgWzIsIDI2XSksIHsgNTA6IFsyLCA0Ml0gfSwgeyAzMDogMTA3LCAzMTogODIsIDUwOiBbMiwgMjBdLCA5NDogJFZrLCA5NjogJFZsLCA5NzogJFZtLCA5ODogJFZuIH0sIG8oJFZILCBbMiwgNTBdLCB7IDI2OiAxMDgsIDI3OiBbMSwgMTA5XSB9KSwgeyAxNjogWzEsIDExMF0gfSwgeyAxODogMTExLCAyMTogWzEsIDExMl0gfSwgeyAxNjogWzIsIDE0XSB9LCBvKCRWcCwgWzIsIDE4XSksIHsgMjQ6IFsxLCAxMTNdIH0sIG8oJFZJLCBbMiwgNTldKSwgeyAzMTogMzgsIDMyOiAxMTQsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCB7IDI4OiBbMSwgMTE2XSwgMzE6IDM4LCAzMjogMTE1LCAzMzogMzksIDk0OiAkVmssIDk2OiAkVmwsIDk3OiAkVm0sIDk4OiAkVm4sIDk5OiAkVm8gfSwgbygkVkQsIFsyLCA2N10sIHsgNjY6IDExNywgNjg6ICRWciwgNjk6ICRWcywgNzA6ICRWdCwgNzE6ICRWdSwgNzI6ICRWdiB9KSwgbygkVkQsIFsyLCA2Nl0pLCB7IDUyOiBbMSwgMTE4XSB9LCB7IDM4OiA5NiwgNTE6IDExOSwgNTQ6IDI0LCA1NzogJFZhIH0sIHsgMTY6IFsxLCAxMjBdLCA1MjogWzIsIDQzXSB9LCBvKCRWeSwgWzIsIDQ3XSwgeyA1MDogWzEsIDEyMV0gfSksIHsgNTI6IFsxLCAxMjJdIH0sIHsgNTI6IFsyLCA1M10sIDU2OiAxMjMsIDYwOiAkVkcgfSwgeyAzMTogMzgsIDMyOiAxMjQsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCBvKCRWcSwgWzIsIDc2XSwgeyAyODogWzEsIDEyNV0gfSksIG8oJFZxLCBbMiwgNzhdLCB7IDI4OiBbMSwgMTI3XSwgNzc6IFsxLCAxMjZdIH0pLCBvKCRWcSwgWzIsIDgyXSwgeyAyODogWzEsIDEyOF0sIDgwOiBbMSwgMTI5XSB9KSwgbygkVnEsIFsyLCA4Nl0sIHsgMjg6IFsxLCAxMzFdLCA3NzogWzEsIDEzMF0gfSksIG8oJFZxLCBbMiwgOTBdKSwgbygkVnEsIFsyLCA2M10pLCB7IDUwOiBbMiwgMjFdIH0sIG8oJFZILCBbMiwgNTFdKSwgeyAyODogWzEsIDEzMl0gfSwgbygkVkosIFsyLCA5XSksIHsgMTU6IDEzMywgMjI6ICRWQyB9LCB7IDIyOiBbMiwgMTNdIH0sIHsgMTogWzIsIDE1XSB9LCBvKCRWSSwgWzIsIDYxXSksIG8oJFZJLCBbMiwgNjBdKSwgeyAzMTogMzgsIDMyOiAxMzQsIDMzOiAzOSwgOTQ6ICRWaywgOTY6ICRWbCwgOTc6ICRWbSwgOTg6ICRWbiwgOTk6ICRWbyB9LCBvKCRWRCwgWzIsIDY1XSksIG8oJFZxLCBbMiwgNDBdKSwgeyA1MjogWzEsIDEzNV0gfSwgeyAzODogOTYsIDUxOiAxMzYsIDUyOiBbMiwgNDRdLCA1NDogMjQsIDU3OiAkVmEgfSwgeyA1NjogMTM3LCA2MDogJFZHIH0sIG8oJFZ5LCBbMiwgNDhdKSwgeyA1MjogWzIsIDU0XSB9LCBvKCRWcSwgWzIsIDUyXSksIG8oJFZxLCBbMiwgNzddKSwgbygkVnEsIFsyLCA3OV0pLCBvKCRWcSwgWzIsIDgwXSwgeyA3NzogWzEsIDEzOF0gfSksIG8oJFZxLCBbMiwgODNdKSwgbygkVnEsIFsyLCA4NF0sIHsgMjg6IFsxLCAxMzldIH0pLCBvKCRWcSwgWzIsIDg3XSksIG8oJFZxLCBbMiwgODhdLCB7IDc3OiBbMSwgMTQwXSB9KSwgeyAyOTogWzEsIDE0MV0gfSwgeyAxNjogWzEsIDE0Ml0gfSwgbygkVkksIFsyLCA2Ml0pLCBvKCRWcSwgWzIsIDQxXSksIHsgNTI6IFsyLCA0NV0gfSwgeyA1MjogWzEsIDE0M10gfSwgbygkVnEsIFsyLCA4MV0pLCBvKCRWcSwgWzIsIDg1XSksIG8oJFZxLCBbMiwgODldKSwgbygkVkgsIFsyLCAxOV0pLCBvKCRWSiwgWzIsIDEwXSksIG8oJFZ5LCBbMiwgNDldKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgMjogWzIsIDFdLCA0OiBbMiwgM10sIDU6IFsyLCA4XSwgOTogWzIsIDExXSwgNDc6IFsyLCAyXSwgODE6IFsyLCA0Ml0sIDg2OiBbMiwgMTRdLCAxMDc6IFsyLCAyMV0sIDExMjogWzIsIDEzXSwgMTEzOiBbMiwgMTVdLCAxMjM6IFsyLCA1NF0sIDEzNjogWzIsIDQ1XSB9LFxuICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICBpZiAoaGFzaC5yZWNvdmVyYWJsZSkge1xuICAgICAgICB0aGlzLnRyYWNlKHN0cik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgZXJyb3IuaGFzaCA9IGhhc2g7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGlucHV0KSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB0c3RhY2sgPSBbXSwgdnN0YWNrID0gW251bGxdLCBsc3RhY2sgPSBbXSwgdGFibGUgPSB0aGlzLnRhYmxlLCB5eXRleHQgPSBcIlwiLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgICB2YXIgYXJncyA9IGxzdGFjay5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICB2YXIgbGV4ZXIyID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKTtcbiAgICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgICBmb3IgKHZhciBrIGluIHRoaXMueXkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LCBrKSkge1xuICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV4ZXIyLnNldElucHV0KGlucHV0LCBzaGFyZWRTdGF0ZS55eSk7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5sZXhlciA9IGxleGVyMjtcbiAgICAgIHNoYXJlZFN0YXRlLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICBpZiAodHlwZW9mIGxleGVyMi55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBsZXhlcjIueXlsbG9jID0ge307XG4gICAgICB9XG4gICAgICB2YXIgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgbHN0YWNrLnB1c2goeXlsb2MpO1xuICAgICAgdmFyIHJhbmdlcyA9IGxleGVyMi5vcHRpb25zICYmIGxleGVyMi5vcHRpb25zLnJhbmdlcztcbiAgICAgIGlmICh0eXBlb2Ygc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3I7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHRva2VuO1xuICAgICAgICB0b2tlbiA9IHRzdGFjay5wb3AoKSB8fCBsZXhlcjIubGV4KCkgfHwgRU9GO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHRzdGFjayA9IHRva2VuO1xuICAgICAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgfVxuICAgICAgdmFyIHN5bWJvbCwgc3RhdGUsIGFjdGlvbiwgciwgeXl2YWwgPSB7fSwgcCwgbGVuLCBuZXdTdGF0ZSwgZXhwZWN0ZWQ7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjdGlvbiA9IHRhYmxlW3N0YXRlXSAmJiB0YWJsZVtzdGF0ZV1bc3ltYm9sXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgdmFyIGVyclN0ciA9IFwiXCI7XG4gICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiBURVJST1IpIHtcbiAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxleGVyMi5zaG93UG9zaXRpb24pIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyBsZXhlcjIuc2hvd1Bvc2l0aW9uKCkgKyBcIlxcbkV4cGVjdGluZyBcIiArIGV4cGVjdGVkLmpvaW4oXCIsIFwiKSArIFwiLCBnb3QgJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gRU9GID8gXCJlbmQgb2YgaW5wdXRcIiA6IFwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxleGVyMi5tYXRjaCxcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wsXG4gICAgICAgICAgICBsaW5lOiBsZXhlcjIueXlsaW5lbm8sXG4gICAgICAgICAgICBsb2M6IHl5bG9jLFxuICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uWzBdKSB7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2gobGV4ZXIyLnl5dGV4dCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaChsZXhlcjIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHl5bGVuZyA9IGxleGVyMi55eWxlbmc7XG4gICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyMi55eXRleHQ7XG4gICAgICAgICAgICAgIHl5bGluZW5vID0gbGV4ZXIyLnl5bGluZW5vO1xuICAgICAgICAgICAgICB5eWxvYyA9IGxleGVyMi55eWxsb2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBsZW4gPSB0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzFdO1xuICAgICAgICAgICAgeXl2YWwuJCA9IHZzdGFja1t2c3RhY2subGVuZ3RoIC0gbGVuXTtcbiAgICAgICAgICAgIHl5dmFsLl8kID0ge1xuICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICB5eXZhbC5fJC5yYW5nZSA9IFtcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgeXl0ZXh0LFxuICAgICAgICAgICAgICB5eWxlbmcsXG4gICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICBzaGFyZWRTdGF0ZS55eSxcbiAgICAgICAgICAgICAgYWN0aW9uWzFdLFxuICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgIGxzdGFja1xuICAgICAgICAgICAgXS5jb25jYXQoYXJncykpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgIGxzdGFjayA9IGxzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMF0pO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2goeXl2YWwuJCk7XG4gICAgICAgICAgICBsc3RhY2sucHVzaCh5eXZhbC5fJCk7XG4gICAgICAgICAgICBuZXdTdGF0ZSA9IHRhYmxlW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDJdXVtzdGFja1tzdGFjay5sZW5ndGggLSAxXV07XG4gICAgICAgICAgICBzdGFjay5wdXNoKG5ld1N0YXRlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHZhciBsZXhlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZXhlcjIgPSB7XG4gICAgICBFT0Y6IDEsXG4gICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICBpZiAodGhpcy55eS5wYXJzZXIpIHtcbiAgICAgICAgICB0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHN0ciwgaGFzaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uKGlucHV0LCB5eSkge1xuICAgICAgICB0aGlzLnl5ID0geXkgfHwgdGhpcy55eSB8fCB7fTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrID0gW1wiSU5JVElBTFwiXTtcbiAgICAgICAgdGhpcy55eWxsb2MgPSB7XG4gICAgICAgICAgZmlyc3RfbGluZTogMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgbGFzdF9saW5lOiAxLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiAwXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICAvLyBjb25zdW1lcyBhbmQgcmV0dXJucyBvbmUgY2hhciBmcm9tIHRoZSBpbnB1dFxuICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gY2g7XG4gICAgICAgIHRoaXMueXlsZW5nKys7XG4gICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gY2g7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBjaDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgICAgfSxcbiAgICAgIC8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbiAgICAgIHVucHV0OiBmdW5jdGlvbihjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbik7XG4gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG4gICAgICAgIGlmIChsaW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyAobGluZXMubGVuZ3RoID09PSBvbGRMaW5lcy5sZW5ndGggPyB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gOiAwKSArIG9sZExpbmVzW29sZExpbmVzLmxlbmd0aCAtIGxpbmVzLmxlbmd0aF0ubGVuZ3RoIC0gbGluZXNbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIGNhY2hlcyBtYXRjaGVkIHRleHQgYW5kIGFwcGVuZHMgaXQgb24gbmV4dCBhY3Rpb25cbiAgICAgIG1vcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSBhY3Rpb24sIHNpZ25hbHMgdGhlIGxleGVyIHRoYXQgdGhpcyBydWxlIGZhaWxzIHRvIG1hdGNoIHRoZSBpbnB1dCwgc28gdGhlIG5leHQgbWF0Y2hpbmcgcnVsZSAocmVnZXgpIHNob3VsZCBiZSB0ZXN0ZWQgaW5zdGVhZC5cbiAgICAgIHJlamVjdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gcmV0YWluIGZpcnN0IG4gY2hhcmFjdGVycyBvZiB0aGUgbWF0Y2hcbiAgICAgIGxlc3M6IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyBhbHJlYWR5IG1hdGNoZWQgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdXBjb21pbmcgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICB1cGNvbWluZ0lucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgIG5leHQgKz0gdGhpcy5faW5wdXQuc3Vic3RyKDAsIDIwIC0gbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyBcIi4uLlwiIDogXCJcIikpLnJlcGxhY2UoL1xcbi9nLCBcIlwiKTtcbiAgICAgIH0sXG4gICAgICAvLyBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdoZXJlIHRoZSBsZXhpbmcgZXJyb3Igb2NjdXJyZWQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG4gICAgICBzaG93UG9zaXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgICAgfSxcbiAgICAgIC8vIHRlc3QgdGhlIGxleGVkIHRva2VuOiByZXR1cm4gRkFMU0Ugd2hlbiBub3QgYSBtYXRjaCwgb3RoZXJ3aXNlIHJldHVybiB0b2tlblxuICAgICAgdGVzdF9tYXRjaDogZnVuY3Rpb24obWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sIGxpbmVzLCBiYWNrdXA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKSB7XG4gICAgICAgICAgYmFja3VwID0ge1xuICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICB5eWxsb2M6IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgIGxhc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICBtYXRjaDogdGhpcy5tYXRjaCxcbiAgICAgICAgICAgIG1hdGNoZXM6IHRoaXMubWF0Y2hlcyxcbiAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgIHl5bGVuZzogdGhpcy55eWxlbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IHRoaXMub2Zmc2V0LFxuICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICBfaW5wdXQ6IHRoaXMuX2lucHV0LFxuICAgICAgICAgICAgeXk6IHRoaXMueXksXG4gICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgIGRvbmU6IHRoaXMuZG9uZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMgPSBtYXRjaFswXS5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmxhc3RfbGluZSxcbiAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8gKyAxLFxuICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoIC0gbGluZXNbbGluZXMubGVuZ3RoIC0gMV0ubWF0Y2goL1xccj9cXG4/LylbMF0ubGVuZ3RoIDogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmddO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fYmFja3RyYWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIGluZGV4ZWRfcnVsZSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICBmb3IgKHZhciBrIGluIGJhY2t1cCkge1xuICAgICAgICAgICAgdGhpc1trXSA9IGJhY2t1cFtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCBpbiBpbnB1dFxuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRva2VuLCBtYXRjaCwgdGVtcE1hdGNoLCBpbmRleDtcbiAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7XG4gICAgICAgICAgdGhpcy55eXRleHQgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubWF0Y2ggPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgbWF0Y2ggPSB0ZW1wTWF0Y2g7XG4gICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHRva2VuID0gdGhpcy50ZXN0X21hdGNoKG1hdGNoLCBydWxlc1tpbmRleF0pO1xuICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKFwiTGV4aWNhbCBlcnJvciBvbiBsaW5lIFwiICsgKHRoaXMueXlsaW5lbm8gKyAxKSArIFwiLiBVbnJlY29nbml6ZWQgdGV4dC5cXG5cIiArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgICB0b2tlbjogbnVsbCxcbiAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiBuZXh0IG1hdGNoIHRoYXQgaGFzIGEgdG9rZW5cbiAgICAgIGxleDogZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAocikge1xuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYWN0aXZhdGVzIGEgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSAocHVzaGVzIHRoZSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9udG8gdGhlIGNvbmRpdGlvbiBzdGFjaylcbiAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgICB9LFxuICAgICAgLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbiAgICAgIHBvcFN0YXRlOiBmdW5jdGlvbiBwb3BTdGF0ZSgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrWzBdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcHJvZHVjZSB0aGUgbGV4ZXIgcnVsZSBzZXQgd2hpY2ggaXMgYWN0aXZlIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGVcbiAgICAgIF9jdXJyZW50UnVsZXM6IGZ1bmN0aW9uIF9jdXJyZW50UnVsZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAmJiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1tcIklOSVRJQUxcIl0ucnVsZXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlOyB3aGVuIGFuIGluZGV4IGFyZ3VtZW50IGlzIHByb3ZpZGVkIGl0IHByb2R1Y2VzIHRoZSBOLXRoIHByZXZpb3VzIGNvbmRpdGlvbiBzdGF0ZSwgaWYgYXZhaWxhYmxlXG4gICAgICB0b3BTdGF0ZTogZnVuY3Rpb24gdG9wU3RhdGUobikge1xuICAgICAgICBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxIC0gTWF0aC5hYnMobiB8fCAwKTtcbiAgICAgICAgaWYgKG4gPj0gMCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW25dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG4gICAgICBwdXNoU3RhdGU6IGZ1bmN0aW9uIHB1c2hTdGF0ZShjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG4gICAgICBzdGF0ZVN0YWNrU2l6ZTogZnVuY3Rpb24gc3RhdGVTdGFja1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aDtcbiAgICAgIH0sXG4gICAgICBvcHRpb25zOiB7fSxcbiAgICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuICAgICAgICBzd2l0Y2ggKCRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwib3Blbl9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTk7XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIDk7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIDEwO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAxMTtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTc7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDIyO1xuICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiAyMTtcbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY190aXRsZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQ2O1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICByZXR1cm4gMjM7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHJldHVybiBcIkVER0VfU1RBVEVcIjtcbiAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIm5hbWVzcGFjZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA1MztcbiAgICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIm5hbWVzcGFjZS1ib2R5XCIpO1xuICAgICAgICAgICAgcmV0dXJuIDUwO1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNTI7XG4gICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgIHJldHVybiBcIkVPRl9JTl9TVFJVQ1RcIjtcbiAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgcmV0dXJuIFwiRURHRV9TVEFURVwiO1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY2xhc3NcIik7XG4gICAgICAgICAgICByZXR1cm4gNTc7XG4gICAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiA1MjtcbiAgICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImNsYXNzLWJvZHlcIik7XG4gICAgICAgICAgICByZXR1cm4gNTA7XG4gICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiA1MjtcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgcmV0dXJuIFwiRU9GX0lOX1NUUlVDVFwiO1xuICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICByZXR1cm4gXCJFREdFX1NUQVRFXCI7XG4gICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgIHJldHVybiBcIk9QRU5fSU5fU1RSVUNUXCI7XG4gICAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICByZXR1cm4gXCJNRU1CRVJcIjtcbiAgICAgICAgICBjYXNlIDQzOlxuICAgICAgICAgICAgcmV0dXJuIDgyO1xuICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICByZXR1cm4gNzU7XG4gICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgIHJldHVybiA3NjtcbiAgICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgICAgcmV0dXJuIDc4O1xuICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICByZXR1cm4gNjM7XG4gICAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICAgIHJldHVybiA2NTtcbiAgICAgICAgICBjYXNlIDQ5OlxuICAgICAgICAgICAgcmV0dXJuIDU4O1xuICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICByZXR1cm4gNTk7XG4gICAgICAgICAgY2FzZSA1MTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJocmVmXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTM6XG4gICAgICAgICAgICByZXR1cm4gODE7XG4gICAgICAgICAgY2FzZSA1NDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJjYWxsYmFja19uYW1lXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA1NTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTY6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiY2FsbGJhY2tfYXJnc1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgICByZXR1cm4gNzk7XG4gICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICByZXR1cm4gODA7XG4gICAgICAgICAgY2FzZSA2MDpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgICByZXR1cm4gXCJHRU5FUklDVFlQRVwiO1xuICAgICAgICAgIGNhc2UgNjI6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiZ2VuZXJpY1wiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNjM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgICAgcmV0dXJuIFwiU1RSXCI7XG4gICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJzdHJpbmdcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgIHJldHVybiBcIkJRVU9URV9TVFJcIjtcbiAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImJxc3RyaW5nXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2OTpcbiAgICAgICAgICAgIHJldHVybiA3NztcbiAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgIGNhc2UgNzE6XG4gICAgICAgICAgICByZXR1cm4gNzc7XG4gICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgIHJldHVybiA3NztcbiAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgcmV0dXJuIDY5O1xuICAgICAgICAgIGNhc2UgNzQ6XG4gICAgICAgICAgICByZXR1cm4gNjk7XG4gICAgICAgICAgY2FzZSA3NTpcbiAgICAgICAgICAgIHJldHVybiA3MTtcbiAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgcmV0dXJuIDcxO1xuICAgICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgICByZXR1cm4gNzA7XG4gICAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICAgIHJldHVybiA2ODtcbiAgICAgICAgICBjYXNlIDc5OlxuICAgICAgICAgICAgcmV0dXJuIDcyO1xuICAgICAgICAgIGNhc2UgODA6XG4gICAgICAgICAgICByZXR1cm4gNzM7XG4gICAgICAgICAgY2FzZSA4MTpcbiAgICAgICAgICAgIHJldHVybiA3NDtcbiAgICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICAgcmV0dXJuIDM2O1xuICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICByZXR1cm4gNTU7XG4gICAgICAgICAgY2FzZSA4NDpcbiAgICAgICAgICAgIHJldHVybiA5NDtcbiAgICAgICAgICBjYXNlIDg1OlxuICAgICAgICAgICAgcmV0dXJuIFwiRE9UXCI7XG4gICAgICAgICAgY2FzZSA4NjpcbiAgICAgICAgICAgIHJldHVybiBcIlBMVVNcIjtcbiAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgcmV0dXJuIDkxO1xuICAgICAgICAgIGNhc2UgODg6XG4gICAgICAgICAgICByZXR1cm4gXCJFUVVBTFNcIjtcbiAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgcmV0dXJuIFwiRVFVQUxTXCI7XG4gICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgIHJldHVybiA5ODtcbiAgICAgICAgICBjYXNlIDkxOlxuICAgICAgICAgICAgcmV0dXJuIDI3O1xuICAgICAgICAgIGNhc2UgOTI6XG4gICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgY2FzZSA5MzpcbiAgICAgICAgICAgIHJldHVybiBcIlBVTkNUVUFUSU9OXCI7XG4gICAgICAgICAgY2FzZSA5NDpcbiAgICAgICAgICAgIHJldHVybiA5NztcbiAgICAgICAgICBjYXNlIDk1OlxuICAgICAgICAgICAgcmV0dXJuIDk2O1xuICAgICAgICAgIGNhc2UgOTY6XG4gICAgICAgICAgICByZXR1cm4gOTM7XG4gICAgICAgICAgY2FzZSA5NzpcbiAgICAgICAgICAgIHJldHVybiAyNDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiBbL14oPzolJVxceykvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1RCW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0JUW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1JMW15cXG5dKikvLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0xSW15cXG5dKikvLCAvXig/OigoPzooPyFcXH0lJSlbXjouXSkqKSkvLCAvXig/OjopLywgL14oPzpcXH0lJSkvLCAvXig/OigoPzooPyFcXH0lJSkufFxcbikqKSkvLCAvXig/OiUlKD8hXFx7KSpbXlxcbl0qKFxccj9cXG4/KSspLywgL14oPzolJVteXFxuXSooXFxyP1xcbikqKS8sIC9eKD86YWNjVGl0bGVcXHMqOlxccyopLywgL14oPzooPyFcXG58fCkqW15cXG5dKikvLCAvXig/OmFjY0Rlc2NyXFxzKjpcXHMqKS8sIC9eKD86KD8hXFxufHwpKlteXFxuXSopLywgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS8sIC9eKD86W1xcfV0pLywgL14oPzpbXlxcfV0qKS8sIC9eKD86XFxzKihcXHI/XFxuKSspLywgL14oPzpcXHMrKS8sIC9eKD86Y2xhc3NEaWFncmFtLXYyXFxiKS8sIC9eKD86Y2xhc3NEaWFncmFtXFxiKS8sIC9eKD86XFxbXFwqXFxdKS8sIC9eKD86bmFtZXNwYWNlXFxiKS8sIC9eKD86XFxzKihcXHI/XFxuKSspLywgL14oPzpcXHMrKS8sIC9eKD86W3tdKS8sIC9eKD86W31dKS8sIC9eKD86JCkvLCAvXig/OlxccyooXFxyP1xcbikrKS8sIC9eKD86XFxzKykvLCAvXig/OlxcW1xcKlxcXSkvLCAvXig/OmNsYXNzXFxiKS8sIC9eKD86XFxzKihcXHI/XFxuKSspLywgL14oPzpcXHMrKS8sIC9eKD86W31dKS8sIC9eKD86W3tdKS8sIC9eKD86W31dKS8sIC9eKD86JCkvLCAvXig/OlxcW1xcKlxcXSkvLCAvXig/Olt7XSkvLCAvXig/OltcXG5dKS8sIC9eKD86W157fVxcbl0qKS8sIC9eKD86Y3NzQ2xhc3NcXGIpLywgL14oPzpjYWxsYmFja1xcYikvLCAvXig/OmxpbmtcXGIpLywgL14oPzpjbGlja1xcYikvLCAvXig/Om5vdGUgZm9yXFxiKS8sIC9eKD86bm90ZVxcYikvLCAvXig/Ojw8KS8sIC9eKD86Pj4pLywgL14oPzpocmVmW1xcc10rW1wiXSkvLCAvXig/OltcIl0pLywgL14oPzpbXlwiXSopLywgL14oPzpjYWxsW1xcc10rKS8sIC9eKD86XFwoW1xcc10qXFwpKS8sIC9eKD86XFwoKS8sIC9eKD86W14oXSopLywgL14oPzpcXCkpLywgL14oPzpbXildKikvLCAvXig/Olt+XSkvLCAvXig/Oltefl0qKS8sIC9eKD86W35dKS8sIC9eKD86W1wiXSkvLCAvXig/OlteXCJdKikvLCAvXig/OltcIl0pLywgL14oPzpbYF0pLywgL14oPzpbXmBdKykvLCAvXig/OltgXSkvLCAvXig/Ol9zZWxmXFxiKS8sIC9eKD86X2JsYW5rXFxiKS8sIC9eKD86X3BhcmVudFxcYikvLCAvXig/Ol90b3BcXGIpLywgL14oPzpcXHMqPFxcfCkvLCAvXig/OlxccypcXHw+KS8sIC9eKD86XFxzKj4pLywgL14oPzpcXHMqPCkvLCAvXig/OlxccypcXCopLywgL14oPzpcXHMqb1xcYikvLCAvXig/OlxccypcXChcXCkpLywgL14oPzotLSkvLCAvXig/OlxcLlxcLikvLCAvXig/Ojp7MX1bXjpcXG47XSspLywgL14oPzo6ezN9KS8sIC9eKD86LSkvLCAvXig/OlxcLikvLCAvXig/OlxcKykvLCAvXig/OiUpLywgL14oPzo9KS8sIC9eKD86PSkvLCAvXig/OlxcdyspLywgL14oPzpcXFspLywgL14oPzpcXF0pLywgL14oPzpbIVwiIyQlJicqKywtLmA/XFxcXC9dKS8sIC9eKD86WzAtOV0rKS8sIC9eKD86W1xcdTAwQUFcXHUwMEI1XFx1MDBCQVxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNl18W1xcdTAwRjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzddfFtcXHUwMzdBLVxcdTAzN0RcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNV18W1xcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyN1xcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFdfFtcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVdfFtcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXXxbXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMF18W1xcdTA4QTItXFx1MDhBQ1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTc3XXxbXFx1MDk3OS1cXHUwOTdGXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXXxbXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXXxbXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzldfFtcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XXxbXFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXXxbXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXXxbXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OV18W1xcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBdfFtcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNEXXxbXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM118W1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMF18W1xcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFdfFtcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXXxbXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXXxbXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZdfFtcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXXxbXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MV18W1xcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RF18W1xcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBdfFtcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXXxbXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXXxbXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXXxbXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN118W1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXXxbXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XXxbXFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXXxbXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXXxbXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURdfFtcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RdfFtcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXXxbXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZdfFtcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhdfFtcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRdfFtcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM118W1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNl18W1xcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRV18W1xcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXXxbXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXXxbXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXXxbXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJdfFtcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OTdcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhdfFtcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVdfFtcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXXxbXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUFBMDAtXFx1QUEyOF18W1xcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTgwLVxcdUFBQUZcXHVBQUIxXFx1QUFCNV18W1xcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNF18W1xcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRV18W1xcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RF18W1xcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZdfFtcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRF18W1xcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ118W1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRl18W1xcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10pLywgL14oPzpcXHMpLywgL14oPzokKS9dLFxuICAgICAgY29uZGl0aW9uczogeyBcIm5hbWVzcGFjZS1ib2R5XCI6IHsgXCJydWxlc1wiOiBbMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTQsIDYyLCA2NSwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5N10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwibmFtZXNwYWNlXCI6IHsgXCJydWxlc1wiOiBbMjMsIDI0LCAyNSwgMjYsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNsYXNzLWJvZHlcIjogeyBcInJ1bGVzXCI6IFszNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjIsIDY1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjbGFzc1wiOiB7IFwicnVsZXNcIjogWzMzLCAzNCwgMzUsIDM2LCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjIsIDY1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lXCI6IHsgXCJydWxlc1wiOiBbMTYsIDE3LCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjIsIDY1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfZGVzY3JcIjogeyBcInJ1bGVzXCI6IFsxNCwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTQsIDYyLCA2NSwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5N10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX3RpdGxlXCI6IHsgXCJydWxlc1wiOiBbMTIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFyZ19kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFs3LCA4LCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjIsIDY1LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzYsIDcsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm9wZW5fZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbNSwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTQsIDYyLCA2NSwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5N10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2FsbGJhY2tfYXJnc1wiOiB7IFwicnVsZXNcIjogWzQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA1OCwgNTksIDYyLCA2NSwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5N10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiY2FsbGJhY2tfbmFtZVwiOiB7IFwicnVsZXNcIjogWzQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDU3LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImhyZWZcIjogeyBcInJ1bGVzXCI6IFs0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcInN0cnVjdFwiOiB7IFwicnVsZXNcIjogWzQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImdlbmVyaWNcIjogeyBcInJ1bGVzXCI6IFs0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjAsIDYxLCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImJxc3RyaW5nXCI6IHsgXCJydWxlc1wiOiBbNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTQsIDYyLCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJzdHJpbmdcIjogeyBcInJ1bGVzXCI6IFs0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1NCwgNjIsIDYzLCA2NCwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIklOSVRJQUxcIjogeyBcInJ1bGVzXCI6IFswLCAxLCAyLCAzLCA0LCA5LCAxMCwgMTEsIDEzLCAxNSwgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMzIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDU0LCA2MiwgNjUsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTddLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xuY29uc3QgTUVSTUFJRF9ET01fSURfUFJFRklYID0gXCJjbGFzc0lkLVwiO1xubGV0IHJlbGF0aW9ucyA9IFtdO1xubGV0IGNsYXNzZXMgPSB7fTtcbmxldCBub3RlcyA9IFtdO1xubGV0IGNsYXNzQ291bnRlciA9IDA7XG5sZXQgbmFtZXNwYWNlcyA9IHt9O1xubGV0IG5hbWVzcGFjZUNvdW50ZXIgPSAwO1xubGV0IGZ1bmN0aW9ucyA9IFtdO1xuY29uc3Qgc2FuaXRpemVUZXh0ID0gKHR4dCkgPT4gY29tbW9uLnNhbml0aXplVGV4dCh0eHQsIGdldENvbmZpZygpKTtcbmNvbnN0IHBhcnNlRGlyZWN0aXZlID0gZnVuY3Rpb24oc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKSB7XG4gIG1lcm1haWRBUEkucGFyc2VEaXJlY3RpdmUodGhpcywgc3RhdGVtZW50LCBjb250ZXh0LCB0eXBlKTtcbn07XG5jb25zdCBzcGxpdENsYXNzTmFtZUFuZFR5cGUgPSBmdW5jdGlvbihpZCkge1xuICBsZXQgZ2VuZXJpY1R5cGUgPSBcIlwiO1xuICBsZXQgY2xhc3NOYW1lID0gaWQ7XG4gIGlmIChpZC5pbmRleE9mKFwiflwiKSA+IDApIHtcbiAgICBjb25zdCBzcGxpdCA9IGlkLnNwbGl0KFwiflwiKTtcbiAgICBjbGFzc05hbWUgPSBzYW5pdGl6ZVRleHQoc3BsaXRbMF0pO1xuICAgIGdlbmVyaWNUeXBlID0gc2FuaXRpemVUZXh0KHNwbGl0WzFdKTtcbiAgfVxuICByZXR1cm4geyBjbGFzc05hbWUsIHR5cGU6IGdlbmVyaWNUeXBlIH07XG59O1xuY29uc3Qgc2V0Q2xhc3NMYWJlbCA9IGZ1bmN0aW9uKGlkLCBsYWJlbCkge1xuICBpZiAobGFiZWwpIHtcbiAgICBsYWJlbCA9IHNhbml0aXplVGV4dChsYWJlbCk7XG4gIH1cbiAgY29uc3QgeyBjbGFzc05hbWUgfSA9IHNwbGl0Q2xhc3NOYW1lQW5kVHlwZShpZCk7XG4gIGNsYXNzZXNbY2xhc3NOYW1lXS5sYWJlbCA9IGxhYmVsO1xufTtcbmNvbnN0IGFkZENsYXNzID0gZnVuY3Rpb24oaWQpIHtcbiAgY29uc3QgY2xhc3NJZCA9IHNwbGl0Q2xhc3NOYW1lQW5kVHlwZShpZCk7XG4gIGlmIChjbGFzc2VzW2NsYXNzSWQuY2xhc3NOYW1lXSAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNsYXNzZXNbY2xhc3NJZC5jbGFzc05hbWVdID0ge1xuICAgIGlkOiBjbGFzc0lkLmNsYXNzTmFtZSxcbiAgICB0eXBlOiBjbGFzc0lkLnR5cGUsXG4gICAgbGFiZWw6IGNsYXNzSWQuY2xhc3NOYW1lLFxuICAgIGNzc0NsYXNzZXM6IFtdLFxuICAgIG1ldGhvZHM6IFtdLFxuICAgIG1lbWJlcnM6IFtdLFxuICAgIGFubm90YXRpb25zOiBbXSxcbiAgICBkb21JZDogTUVSTUFJRF9ET01fSURfUFJFRklYICsgY2xhc3NJZC5jbGFzc05hbWUgKyBcIi1cIiArIGNsYXNzQ291bnRlclxuICB9O1xuICBjbGFzc0NvdW50ZXIrKztcbn07XG5jb25zdCBsb29rVXBEb21JZCA9IGZ1bmN0aW9uKGlkKSB7XG4gIGlmIChpZCBpbiBjbGFzc2VzKSB7XG4gICAgcmV0dXJuIGNsYXNzZXNbaWRdLmRvbUlkO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIkNsYXNzIG5vdCBmb3VuZDogXCIgKyBpZCk7XG59O1xuY29uc3QgY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgcmVsYXRpb25zID0gW107XG4gIGNsYXNzZXMgPSB7fTtcbiAgbm90ZXMgPSBbXTtcbiAgZnVuY3Rpb25zID0gW107XG4gIGZ1bmN0aW9ucy5wdXNoKHNldHVwVG9vbFRpcHMpO1xuICBuYW1lc3BhY2VzID0ge307XG4gIG5hbWVzcGFjZUNvdW50ZXIgPSAwO1xuICBjbGVhciQxKCk7XG59O1xuY29uc3QgZ2V0Q2xhc3MgPSBmdW5jdGlvbihpZCkge1xuICByZXR1cm4gY2xhc3Nlc1tpZF07XG59O1xuY29uc3QgZ2V0Q2xhc3NlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY2xhc3Nlcztcbn07XG5jb25zdCBnZXRSZWxhdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJlbGF0aW9ucztcbn07XG5jb25zdCBnZXROb3RlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbm90ZXM7XG59O1xuY29uc3QgYWRkUmVsYXRpb24gPSBmdW5jdGlvbihyZWxhdGlvbikge1xuICBsb2cuZGVidWcoXCJBZGRpbmcgcmVsYXRpb246IFwiICsgSlNPTi5zdHJpbmdpZnkocmVsYXRpb24pKTtcbiAgYWRkQ2xhc3MocmVsYXRpb24uaWQxKTtcbiAgYWRkQ2xhc3MocmVsYXRpb24uaWQyKTtcbiAgcmVsYXRpb24uaWQxID0gc3BsaXRDbGFzc05hbWVBbmRUeXBlKHJlbGF0aW9uLmlkMSkuY2xhc3NOYW1lO1xuICByZWxhdGlvbi5pZDIgPSBzcGxpdENsYXNzTmFtZUFuZFR5cGUocmVsYXRpb24uaWQyKS5jbGFzc05hbWU7XG4gIHJlbGF0aW9uLnJlbGF0aW9uVGl0bGUxID0gY29tbW9uLnNhbml0aXplVGV4dChcbiAgICByZWxhdGlvbi5yZWxhdGlvblRpdGxlMS50cmltKCksXG4gICAgZ2V0Q29uZmlnKClcbiAgKTtcbiAgcmVsYXRpb24ucmVsYXRpb25UaXRsZTIgPSBjb21tb24uc2FuaXRpemVUZXh0KFxuICAgIHJlbGF0aW9uLnJlbGF0aW9uVGl0bGUyLnRyaW0oKSxcbiAgICBnZXRDb25maWcoKVxuICApO1xuICByZWxhdGlvbnMucHVzaChyZWxhdGlvbik7XG59O1xuY29uc3QgYWRkQW5ub3RhdGlvbiA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgYW5ub3RhdGlvbikge1xuICBjb25zdCB2YWxpZGF0ZWRDbGFzc05hbWUgPSBzcGxpdENsYXNzTmFtZUFuZFR5cGUoY2xhc3NOYW1lKS5jbGFzc05hbWU7XG4gIGNsYXNzZXNbdmFsaWRhdGVkQ2xhc3NOYW1lXS5hbm5vdGF0aW9ucy5wdXNoKGFubm90YXRpb24pO1xufTtcbmNvbnN0IGFkZE1lbWJlciA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgbWVtYmVyKSB7XG4gIGNvbnN0IHZhbGlkYXRlZENsYXNzTmFtZSA9IHNwbGl0Q2xhc3NOYW1lQW5kVHlwZShjbGFzc05hbWUpLmNsYXNzTmFtZTtcbiAgY29uc3QgdGhlQ2xhc3MgPSBjbGFzc2VzW3ZhbGlkYXRlZENsYXNzTmFtZV07XG4gIGlmICh0eXBlb2YgbWVtYmVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgbWVtYmVyU3RyaW5nID0gbWVtYmVyLnRyaW0oKTtcbiAgICBpZiAobWVtYmVyU3RyaW5nLnN0YXJ0c1dpdGgoXCI8PFwiKSAmJiBtZW1iZXJTdHJpbmcuZW5kc1dpdGgoXCI+PlwiKSkge1xuICAgICAgdGhlQ2xhc3MuYW5ub3RhdGlvbnMucHVzaChzYW5pdGl6ZVRleHQobWVtYmVyU3RyaW5nLnN1YnN0cmluZygyLCBtZW1iZXJTdHJpbmcubGVuZ3RoIC0gMikpKTtcbiAgICB9IGVsc2UgaWYgKG1lbWJlclN0cmluZy5pbmRleE9mKFwiKVwiKSA+IDApIHtcbiAgICAgIHRoZUNsYXNzLm1ldGhvZHMucHVzaChzYW5pdGl6ZVRleHQobWVtYmVyU3RyaW5nKSk7XG4gICAgfSBlbHNlIGlmIChtZW1iZXJTdHJpbmcpIHtcbiAgICAgIHRoZUNsYXNzLm1lbWJlcnMucHVzaChzYW5pdGl6ZVRleHQobWVtYmVyU3RyaW5nKSk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgYWRkTWVtYmVycyA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgbWVtYmVycykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtZW1iZXJzKSkge1xuICAgIG1lbWJlcnMucmV2ZXJzZSgpO1xuICAgIG1lbWJlcnMuZm9yRWFjaCgobWVtYmVyKSA9PiBhZGRNZW1iZXIoY2xhc3NOYW1lLCBtZW1iZXIpKTtcbiAgfVxufTtcbmNvbnN0IGFkZE5vdGUgPSBmdW5jdGlvbih0ZXh0LCBjbGFzc05hbWUpIHtcbiAgY29uc3Qgbm90ZSA9IHtcbiAgICBpZDogYG5vdGUke25vdGVzLmxlbmd0aH1gLFxuICAgIGNsYXNzOiBjbGFzc05hbWUsXG4gICAgdGV4dFxuICB9O1xuICBub3Rlcy5wdXNoKG5vdGUpO1xufTtcbmNvbnN0IGNsZWFudXBMYWJlbCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIGlmIChsYWJlbC5zdGFydHNXaXRoKFwiOlwiKSkge1xuICAgIGxhYmVsID0gbGFiZWwuc3Vic3RyaW5nKDEpO1xuICB9XG4gIHJldHVybiBzYW5pdGl6ZVRleHQobGFiZWwudHJpbSgpKTtcbn07XG5jb25zdCBzZXRDc3NDbGFzcyA9IGZ1bmN0aW9uKGlkcywgY2xhc3NOYW1lKSB7XG4gIGlkcy5zcGxpdChcIixcIikuZm9yRWFjaChmdW5jdGlvbihfaWQpIHtcbiAgICBsZXQgaWQgPSBfaWQ7XG4gICAgaWYgKF9pZFswXS5tYXRjaCgvXFxkLykpIHtcbiAgICAgIGlkID0gTUVSTUFJRF9ET01fSURfUFJFRklYICsgaWQ7XG4gICAgfVxuICAgIGlmIChjbGFzc2VzW2lkXSAhPT0gdm9pZCAwKSB7XG4gICAgICBjbGFzc2VzW2lkXS5jc3NDbGFzc2VzLnB1c2goY2xhc3NOYW1lKTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IHNldFRvb2x0aXAgPSBmdW5jdGlvbihpZHMsIHRvb2x0aXApIHtcbiAgaWRzLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKSB7XG4gICAgaWYgKHRvb2x0aXAgIT09IHZvaWQgMCkge1xuICAgICAgY2xhc3Nlc1tpZF0udG9vbHRpcCA9IHNhbml0aXplVGV4dCh0b29sdGlwKTtcbiAgICB9XG4gIH0pO1xufTtcbmNvbnN0IGdldFRvb2x0aXAgPSBmdW5jdGlvbihpZCwgbmFtZXNwYWNlKSB7XG4gIGlmIChuYW1lc3BhY2UpIHtcbiAgICByZXR1cm4gbmFtZXNwYWNlc1tuYW1lc3BhY2VdLmNsYXNzZXNbaWRdLnRvb2x0aXA7XG4gIH1cbiAgcmV0dXJuIGNsYXNzZXNbaWRdLnRvb2x0aXA7XG59O1xuY29uc3Qgc2V0TGluayA9IGZ1bmN0aW9uKGlkcywgbGlua1N0ciwgdGFyZ2V0KSB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oX2lkKSB7XG4gICAgbGV0IGlkID0gX2lkO1xuICAgIGlmIChfaWRbMF0ubWF0Y2goL1xcZC8pKSB7XG4gICAgICBpZCA9IE1FUk1BSURfRE9NX0lEX1BSRUZJWCArIGlkO1xuICAgIH1cbiAgICBpZiAoY2xhc3Nlc1tpZF0gIT09IHZvaWQgMCkge1xuICAgICAgY2xhc3Nlc1tpZF0ubGluayA9IHV0aWxzLmZvcm1hdFVybChsaW5rU3RyLCBjb25maWcpO1xuICAgICAgaWYgKGNvbmZpZy5zZWN1cml0eUxldmVsID09PSBcInNhbmRib3hcIikge1xuICAgICAgICBjbGFzc2VzW2lkXS5saW5rVGFyZ2V0ID0gXCJfdG9wXCI7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY2xhc3Nlc1tpZF0ubGlua1RhcmdldCA9IHNhbml0aXplVGV4dCh0YXJnZXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xhc3Nlc1tpZF0ubGlua1RhcmdldCA9IFwiX2JsYW5rXCI7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgc2V0Q3NzQ2xhc3MoaWRzLCBcImNsaWNrYWJsZVwiKTtcbn07XG5jb25zdCBzZXRDbGlja0V2ZW50ID0gZnVuY3Rpb24oaWRzLCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQXJncykge1xuICBpZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBzZXRDbGlja0Z1bmMoaWQsIGZ1bmN0aW9uTmFtZSwgZnVuY3Rpb25BcmdzKTtcbiAgICBjbGFzc2VzW2lkXS5oYXZlQ2FsbGJhY2sgPSB0cnVlO1xuICB9KTtcbiAgc2V0Q3NzQ2xhc3MoaWRzLCBcImNsaWNrYWJsZVwiKTtcbn07XG5jb25zdCBzZXRDbGlja0Z1bmMgPSBmdW5jdGlvbihkb21JZCwgZnVuY3Rpb25OYW1lLCBmdW5jdGlvbkFyZ3MpIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gIGlmIChjb25maWcuc2VjdXJpdHlMZXZlbCAhPT0gXCJsb29zZVwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmdW5jdGlvbk5hbWUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBpZCA9IGRvbUlkO1xuICBpZiAoY2xhc3Nlc1tpZF0gIT09IHZvaWQgMCkge1xuICAgIGNvbnN0IGVsZW1JZCA9IGxvb2tVcERvbUlkKGlkKTtcbiAgICBsZXQgYXJnTGlzdCA9IFtdO1xuICAgIGlmICh0eXBlb2YgZnVuY3Rpb25BcmdzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBhcmdMaXN0ID0gZnVuY3Rpb25BcmdzLnNwbGl0KC8sKD89KD86KD86W15cIl0qXCIpezJ9KSpbXlwiXSokKS8pO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBpdGVtID0gYXJnTGlzdFtpXS50cmltKCk7XG4gICAgICAgIGlmIChpdGVtLmNoYXJBdCgwKSA9PT0gJ1wiJyAmJiBpdGVtLmNoYXJBdChpdGVtLmxlbmd0aCAtIDEpID09PSAnXCInKSB7XG4gICAgICAgICAgaXRlbSA9IGl0ZW0uc3Vic3RyKDEsIGl0ZW0ubGVuZ3RoIC0gMik7XG4gICAgICAgIH1cbiAgICAgICAgYXJnTGlzdFtpXSA9IGl0ZW07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhcmdMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgYXJnTGlzdC5wdXNoKGVsZW1JZCk7XG4gICAgfVxuICAgIGZ1bmN0aW9ucy5wdXNoKGZ1bmN0aW9uKCkge1xuICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD1cIiR7ZWxlbUlkfVwiXWApO1xuICAgICAgaWYgKGVsZW0gIT09IG51bGwpIHtcbiAgICAgICAgZWxlbS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIFwiY2xpY2tcIixcbiAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHV0aWxzLnJ1bkZ1bmMoZnVuY3Rpb25OYW1lLCAuLi5hcmdMaXN0KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5jb25zdCBiaW5kRnVuY3Rpb25zID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICBmdW5jdGlvbnMuZm9yRWFjaChmdW5jdGlvbihmdW4pIHtcbiAgICBmdW4oZWxlbWVudCk7XG4gIH0pO1xufTtcbmNvbnN0IGxpbmVUeXBlID0ge1xuICBMSU5FOiAwLFxuICBET1RURURfTElORTogMVxufTtcbmNvbnN0IHJlbGF0aW9uVHlwZSA9IHtcbiAgQUdHUkVHQVRJT046IDAsXG4gIEVYVEVOU0lPTjogMSxcbiAgQ09NUE9TSVRJT046IDIsXG4gIERFUEVOREVOQ1k6IDMsXG4gIExPTExJUE9QOiA0XG59O1xuY29uc3Qgc2V0dXBUb29sVGlwcyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgbGV0IHRvb2x0aXBFbGVtID0gc2VsZWN0KFwiLm1lcm1haWRUb29sdGlwXCIpO1xuICBpZiAoKHRvb2x0aXBFbGVtLl9ncm91cHMgfHwgdG9vbHRpcEVsZW0pWzBdWzBdID09PSBudWxsKSB7XG4gICAgdG9vbHRpcEVsZW0gPSBzZWxlY3QoXCJib2R5XCIpLmFwcGVuZChcImRpdlwiKS5hdHRyKFwiY2xhc3NcIiwgXCJtZXJtYWlkVG9vbHRpcFwiKS5zdHlsZShcIm9wYWNpdHlcIiwgMCk7XG4gIH1cbiAgY29uc3Qgc3ZnID0gc2VsZWN0KGVsZW1lbnQpLnNlbGVjdChcInN2Z1wiKTtcbiAgY29uc3Qgbm9kZXMgPSBzdmcuc2VsZWN0QWxsKFwiZy5ub2RlXCIpO1xuICBub2Rlcy5vbihcIm1vdXNlb3ZlclwiLCBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBlbCA9IHNlbGVjdCh0aGlzKTtcbiAgICBjb25zdCB0aXRsZSA9IGVsLmF0dHIoXCJ0aXRsZVwiKTtcbiAgICBpZiAodGl0bGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdG9vbHRpcEVsZW0udHJhbnNpdGlvbigpLmR1cmF0aW9uKDIwMCkuc3R5bGUoXCJvcGFjaXR5XCIsIFwiLjlcIik7XG4gICAgdG9vbHRpcEVsZW0udGV4dChlbC5hdHRyKFwidGl0bGVcIikpLnN0eWxlKFwibGVmdFwiLCB3aW5kb3cuc2Nyb2xsWCArIHJlY3QubGVmdCArIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSAvIDIgKyBcInB4XCIpLnN0eWxlKFwidG9wXCIsIHdpbmRvdy5zY3JvbGxZICsgcmVjdC50b3AgLSAxNCArIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wICsgXCJweFwiKTtcbiAgICB0b29sdGlwRWxlbS5odG1sKHRvb2x0aXBFbGVtLmh0bWwoKS5yZXBsYWNlKC8mbHQ7YnJcXC8mZ3Q7L2csIFwiPGJyLz5cIikpO1xuICAgIGVsLmNsYXNzZWQoXCJob3ZlclwiLCB0cnVlKTtcbiAgfSkub24oXCJtb3VzZW91dFwiLCBmdW5jdGlvbigpIHtcbiAgICB0b29sdGlwRWxlbS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5zdHlsZShcIm9wYWNpdHlcIiwgMCk7XG4gICAgY29uc3QgZWwgPSBzZWxlY3QodGhpcyk7XG4gICAgZWwuY2xhc3NlZChcImhvdmVyXCIsIGZhbHNlKTtcbiAgfSk7XG59O1xuZnVuY3Rpb25zLnB1c2goc2V0dXBUb29sVGlwcyk7XG5sZXQgZGlyZWN0aW9uID0gXCJUQlwiO1xuY29uc3QgZ2V0RGlyZWN0aW9uID0gKCkgPT4gZGlyZWN0aW9uO1xuY29uc3Qgc2V0RGlyZWN0aW9uID0gKGRpcikgPT4ge1xuICBkaXJlY3Rpb24gPSBkaXI7XG59O1xuY29uc3QgYWRkTmFtZXNwYWNlID0gZnVuY3Rpb24oaWQpIHtcbiAgaWYgKG5hbWVzcGFjZXNbaWRdICE9PSB2b2lkIDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbmFtZXNwYWNlc1tpZF0gPSB7XG4gICAgaWQsXG4gICAgY2xhc3Nlczoge30sXG4gICAgY2hpbGRyZW46IHt9LFxuICAgIGRvbUlkOiBNRVJNQUlEX0RPTV9JRF9QUkVGSVggKyBpZCArIFwiLVwiICsgbmFtZXNwYWNlQ291bnRlclxuICB9O1xuICBuYW1lc3BhY2VDb3VudGVyKys7XG59O1xuY29uc3QgZ2V0TmFtZXNwYWNlID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gbmFtZXNwYWNlc1tuYW1lXTtcbn07XG5jb25zdCBnZXROYW1lc3BhY2VzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuYW1lc3BhY2VzO1xufTtcbmNvbnN0IGFkZENsYXNzZXNUb05hbWVzcGFjZSA9IGZ1bmN0aW9uKGlkLCBjbGFzc05hbWVzKSB7XG4gIGlmIChuYW1lc3BhY2VzW2lkXSAhPT0gdm9pZCAwKSB7XG4gICAgY2xhc3NOYW1lcy5tYXAoKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgbmFtZXNwYWNlc1tpZF0uY2xhc3Nlc1tjbGFzc05hbWVdID0gY2xhc3Nlc1tjbGFzc05hbWVdO1xuICAgICAgZGVsZXRlIGNsYXNzZXNbY2xhc3NOYW1lXTtcbiAgICAgIGNsYXNzQ291bnRlci0tO1xuICAgIH0pO1xuICB9XG59O1xuY29uc3QgZGIgPSB7XG4gIHBhcnNlRGlyZWN0aXZlLFxuICBzZXRBY2NUaXRsZSxcbiAgZ2V0QWNjVGl0bGUsXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBzZXRBY2NEZXNjcmlwdGlvbixcbiAgZ2V0Q29uZmlnOiAoKSA9PiBnZXRDb25maWcoKS5jbGFzcyxcbiAgYWRkQ2xhc3MsXG4gIGJpbmRGdW5jdGlvbnMsXG4gIGNsZWFyLFxuICBnZXRDbGFzcyxcbiAgZ2V0Q2xhc3NlcyxcbiAgZ2V0Tm90ZXMsXG4gIGFkZEFubm90YXRpb24sXG4gIGFkZE5vdGUsXG4gIGdldFJlbGF0aW9ucyxcbiAgYWRkUmVsYXRpb24sXG4gIGdldERpcmVjdGlvbixcbiAgc2V0RGlyZWN0aW9uLFxuICBhZGRNZW1iZXIsXG4gIGFkZE1lbWJlcnMsXG4gIGNsZWFudXBMYWJlbCxcbiAgbGluZVR5cGUsXG4gIHJlbGF0aW9uVHlwZSxcbiAgc2V0Q2xpY2tFdmVudCxcbiAgc2V0Q3NzQ2xhc3MsXG4gIHNldExpbmssXG4gIGdldFRvb2x0aXAsXG4gIHNldFRvb2x0aXAsXG4gIGxvb2tVcERvbUlkLFxuICBzZXREaWFncmFtVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZSxcbiAgc2V0Q2xhc3NMYWJlbCxcbiAgYWRkTmFtZXNwYWNlLFxuICBhZGRDbGFzc2VzVG9OYW1lc3BhY2UsXG4gIGdldE5hbWVzcGFjZSxcbiAgZ2V0TmFtZXNwYWNlc1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgZy5jbGFzc0dyb3VwIHRleHQge1xuICBmaWxsOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gIGZpbGw6ICR7b3B0aW9ucy5jbGFzc1RleHR9O1xuICBzdHJva2U6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiAke29wdGlvbnMuZm9udEZhbWlseX07XG4gIGZvbnQtc2l6ZTogMTBweDtcblxuICAudGl0bGUge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cblxufVxuXG4ubm9kZUxhYmVsLCAuZWRnZUxhYmVsIHtcbiAgY29sb3I6ICR7b3B0aW9ucy5jbGFzc1RleHR9O1xufVxuLmVkZ2VMYWJlbCAubGFiZWwgcmVjdCB7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbn1cbi5sYWJlbCB0ZXh0IHtcbiAgZmlsbDogJHtvcHRpb25zLmNsYXNzVGV4dH07XG59XG4uZWRnZUxhYmVsIC5sYWJlbCBzcGFuIHtcbiAgYmFja2dyb3VuZDogJHtvcHRpb25zLm1haW5Ca2d9O1xufVxuXG4uY2xhc3NUaXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG4ubm9kZSByZWN0LFxuICAubm9kZSBjaXJjbGUsXG4gIC5ub2RlIGVsbGlwc2UsXG4gIC5ub2RlIHBvbHlnb24sXG4gIC5ub2RlIHBhdGgge1xuICAgIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbiAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgfVxuXG5cbi5kaXZpZGVyIHtcbiAgc3Ryb2tlOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuZy5jbGlja2FibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbmcuY2xhc3NHcm91cCByZWN0IHtcbiAgZmlsbDogJHtvcHRpb25zLm1haW5Ca2d9O1xuICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbn1cblxuZy5jbGFzc0dyb3VwIGxpbmUge1xuICBzdHJva2U6ICR7b3B0aW9ucy5ub2RlQm9yZGVyfTtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4uY2xhc3NMYWJlbCAuYm94IHtcbiAgc3Ryb2tlOiBub25lO1xuICBzdHJva2Utd2lkdGg6IDA7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4uY2xhc3NMYWJlbCAubGFiZWwge1xuICBmaWxsOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gIGZvbnQtc2l6ZTogMTBweDtcbn1cblxuLnJlbGF0aW9uIHtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfTtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xuICBmaWxsOiBub25lO1xufVxuXG4uZGFzaGVkLWxpbmV7XG4gIHN0cm9rZS1kYXNoYXJyYXk6IDM7XG59XG5cbi5kb3R0ZWQtbGluZXtcbiAgc3Ryb2tlLWRhc2hhcnJheTogMSAyO1xufVxuXG4jY29tcG9zaXRpb25TdGFydCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNjb21wb3NpdGlvbkVuZCwgLmNvbXBvc2l0aW9uIHtcbiAgZmlsbDogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHtcbiAgZmlsbDogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNleHRlbnNpb25TdGFydCwgLmV4dGVuc2lvbiB7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfSAhaW1wb3J0YW50O1xuICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuI2V4dGVuc2lvbkVuZCwgLmV4dGVuc2lvbiB7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfSAhaW1wb3J0YW50O1xuICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuI2FnZ3JlZ2F0aW9uU3RhcnQsIC5hZ2dyZWdhdGlvbiB7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfSAhaW1wb3J0YW50O1xuICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuI2FnZ3JlZ2F0aW9uRW5kLCAuYWdncmVnYXRpb24ge1xuICBmaWxsOiAke29wdGlvbnMubWFpbkJrZ30gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNsb2xsaXBvcFN0YXJ0LCAubG9sbGlwb3Age1xuICBmaWxsOiAke29wdGlvbnMubWFpbkJrZ30gIWltcG9ydGFudDtcbiAgc3Ryb2tlOiAke29wdGlvbnMubGluZUNvbG9yfSAhaW1wb3J0YW50O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbiNsb2xsaXBvcEVuZCwgLmxvbGxpcG9wIHtcbiAgZmlsbDogJHtvcHRpb25zLm1haW5Ca2d9ICFpbXBvcnRhbnQ7XG4gIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn0gIWltcG9ydGFudDtcbiAgc3Ryb2tlLXdpZHRoOiAxO1xufVxuXG4uZWRnZVRlcm1pbmFscyB7XG4gIGZvbnQtc2l6ZTogMTFweDtcbn1cblxuLmNsYXNzVGl0bGVUZXh0IHtcbiAgdGV4dC1hbmNob3I6IG1pZGRsZTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmaWxsOiAke29wdGlvbnMudGV4dENvbG9yfTtcbn1cbmA7XG5jb25zdCBzdHlsZXMgPSBnZXRTdHlsZXM7XG5leHBvcnQge1xuICBkYiBhcyBkLFxuICBwYXJzZXIkMSBhcyBwLFxuICBzdHlsZXMgYXMgc1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/styles-aefe6593.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/styles-fa41df25.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/styles-fa41df25.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"D\": () => (/* binding */ DEFAULT_STATE_TYPE),\n/* harmony export */ \"S\": () => (/* binding */ STMT_RELATION),\n/* harmony export */ \"a\": () => (/* binding */ DIVIDER_TYPE),\n/* harmony export */ \"b\": () => (/* binding */ STMT_STATE),\n/* harmony export */ \"c\": () => (/* binding */ DEFAULT_NESTED_DOC_DIR),\n/* harmony export */ \"d\": () => (/* binding */ db),\n/* harmony export */ \"p\": () => (/* binding */ parser$1),\n/* harmony export */ \"s\": () => (/* binding */ styles)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 7], $V4 = [2, 5], $V5 = [1, 15], $V6 = [1, 17], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 24], $Vb = [1, 37], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 32], $Vi = [1, 33], $Vj = [1, 34], $Vk = [1, 35], $Vl = [1, 36], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 38], $Vr = [1, 45], $Vs = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], $Vt = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], $Vu = [1, 4, 5, 7, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], $Vv = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NL\": 5, \"directive\": 6, \"SD\": 7, \"document\": 8, \"line\": 9, \"statement\": 10, \"classDefStatement\": 11, \"cssClassStatement\": 12, \"idStatement\": 13, \"DESCR\": 14, \"-->\": 15, \"HIDE_EMPTY\": 16, \"scale\": 17, \"WIDTH\": 18, \"COMPOSIT_STATE\": 19, \"STRUCT_START\": 20, \"STRUCT_STOP\": 21, \"STATE_DESCR\": 22, \"AS\": 23, \"ID\": 24, \"FORK\": 25, \"JOIN\": 26, \"CHOICE\": 27, \"CONCURRENT\": 28, \"note\": 29, \"notePosition\": 30, \"NOTE_TEXT\": 31, \"direction\": 32, \"acc_title\": 33, \"acc_title_value\": 34, \"acc_descr\": 35, \"acc_descr_value\": 36, \"acc_descr_multiline_value\": 37, \"classDef\": 38, \"CLASSDEF_ID\": 39, \"CLASSDEF_STYLEOPTS\": 40, \"DEFAULT\": 41, \"class\": 42, \"CLASSENTITY_IDS\": 43, \"STYLECLASS\": 44, \"openDirective\": 45, \"typeDirective\": 46, \"closeDirective\": 47, \":\": 48, \"argDirective\": 49, \"direction_tb\": 50, \"direction_bt\": 51, \"direction_rl\": 52, \"direction_lr\": 53, \"eol\": 54, \";\": 55, \"EDGE_STATE\": 56, \"STYLE_SEPARATOR\": 57, \"left_of\": 58, \"right_of\": 59, \"open_directive\": 60, \"type_directive\": 61, \"arg_directive\": 62, \"close_directive\": 63, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NL\", 7: \"SD\", 14: \"DESCR\", 15: \"-->\", 16: \"HIDE_EMPTY\", 17: \"scale\", 18: \"WIDTH\", 19: \"COMPOSIT_STATE\", 20: \"STRUCT_START\", 21: \"STRUCT_STOP\", 22: \"STATE_DESCR\", 23: \"AS\", 24: \"ID\", 25: \"FORK\", 26: \"JOIN\", 27: \"CHOICE\", 28: \"CONCURRENT\", 29: \"note\", 31: \"NOTE_TEXT\", 33: \"acc_title\", 34: \"acc_title_value\", 35: \"acc_descr\", 36: \"acc_descr_value\", 37: \"acc_descr_multiline_value\", 38: \"classDef\", 39: \"CLASSDEF_ID\", 40: \"CLASSDEF_STYLEOPTS\", 41: \"DEFAULT\", 42: \"class\", 43: \"CLASSENTITY_IDS\", 44: \"STYLECLASS\", 48: \":\", 50: \"direction_tb\", 51: \"direction_bt\", 52: \"direction_rl\", 53: \"direction_lr\", 55: \";\", 56: \"EDGE_STATE\", 57: \"STYLE_SEPARATOR\", 58: \"left_of\", 59: \"right_of\", 60: \"open_directive\", 61: \"type_directive\", 62: \"arg_directive\", 63: \"close_directive\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [3, 2], [8, 0], [8, 2], [9, 2], [9, 1], [9, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 3], [10, 4], [10, 1], [10, 2], [10, 1], [10, 4], [10, 3], [10, 6], [10, 1], [10, 1], [10, 1], [10, 1], [10, 4], [10, 4], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [11, 3], [11, 3], [12, 3], [6, 3], [6, 5], [32, 1], [32, 1], [32, 1], [32, 1], [54, 1], [54, 1], [13, 1], [13, 1], [13, 3], [13, 3], [30, 1], [30, 1], [45, 1], [46, 1], [49, 1], [47, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n yy.setRootDoc($$[$0]);\n return $$[$0];\n case 5:\n this.$ = [];\n break;\n case 6:\n if ($$[$0] != \"nl\") {\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n }\n break;\n case 7:\n case 8:\n this.$ = $$[$0];\n break;\n case 9:\n this.$ = \"nl\";\n break;\n case 12:\n this.$ = $$[$0];\n break;\n case 13:\n const stateStmt = $$[$0 - 1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n break;\n case 14:\n this.$ = { stmt: \"relation\", state1: $$[$0 - 2], state2: $$[$0] };\n break;\n case 15:\n const relDescription = yy.trimColon($$[$0]);\n this.$ = { stmt: \"relation\", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription };\n break;\n case 19:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: \"\", doc: $$[$0 - 1] };\n break;\n case 20:\n var id = $$[$0];\n var description = $$[$0 - 2].trim();\n if ($$[$0].match(\":\")) {\n var parts = $$[$0].split(\":\");\n id = parts[0];\n description = [description, parts[1]];\n }\n this.$ = { stmt: \"state\", id, type: \"default\", description };\n break;\n case 21:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: $$[$0 - 5], doc: $$[$0 - 1] };\n break;\n case 22:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"fork\" };\n break;\n case 23:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"join\" };\n break;\n case 24:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"choice\" };\n break;\n case 25:\n this.$ = { stmt: \"state\", id: yy.getDividerId(), type: \"divider\" };\n break;\n case 26:\n this.$ = { stmt: \"state\", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } };\n break;\n case 30:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 31:\n case 32:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 33:\n case 34:\n this.$ = { stmt: \"classDef\", id: $$[$0 - 1].trim(), classes: $$[$0].trim() };\n break;\n case 35:\n this.$ = { stmt: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 38:\n yy.setDirection(\"TB\");\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 39:\n yy.setDirection(\"BT\");\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 40:\n yy.setDirection(\"RL\");\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 41:\n yy.setDirection(\"LR\");\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n case 44:\n case 45:\n this.$ = { stmt: \"state\", id: $$[$0].trim(), type: \"default\", description: \"\" };\n break;\n case 46:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 47:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 50:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 51:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 52:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 53:\n yy.parseDirective(\"}%%\", \"close_directive\", \"state\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: 4, 7: $V2, 45: 6, 60: $V3 }, { 1: [3] }, { 3: 8, 4: $V0, 5: $V1, 6: 4, 7: $V2, 45: 6, 60: $V3 }, { 3: 9, 4: $V0, 5: $V1, 6: 4, 7: $V2, 45: 6, 60: $V3 }, { 3: 10, 4: $V0, 5: $V1, 6: 4, 7: $V2, 45: 6, 60: $V3 }, o([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 42, 50, 51, 52, 53, 56, 60], $V4, { 8: 11 }), { 46: 12, 61: [1, 13] }, { 61: [2, 50] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, { 1: [2, 4], 4: $V5, 5: $V6, 6: 30, 9: 14, 10: 16, 11: 18, 12: 19, 13: 20, 16: $V7, 17: $V8, 19: $V9, 22: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 29: $Vg, 32: 31, 33: $Vh, 35: $Vi, 37: $Vj, 38: $Vk, 42: $Vl, 45: 6, 50: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 56: $Vq, 60: $V3 }, { 47: 43, 48: [1, 44], 63: $Vr }, o([48, 63], [2, 51]), o($Vs, [2, 6]), { 6: 30, 10: 46, 11: 18, 12: 19, 13: 20, 16: $V7, 17: $V8, 19: $V9, 22: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 29: $Vg, 32: 31, 33: $Vh, 35: $Vi, 37: $Vj, 38: $Vk, 42: $Vl, 45: 6, 50: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 56: $Vq, 60: $V3 }, o($Vs, [2, 8]), o($Vs, [2, 9]), o($Vs, [2, 10]), o($Vs, [2, 11]), o($Vs, [2, 12], { 14: [1, 47], 15: [1, 48] }), o($Vs, [2, 16]), { 18: [1, 49] }, o($Vs, [2, 18], { 20: [1, 50] }), { 23: [1, 51] }, o($Vs, [2, 22]), o($Vs, [2, 23]), o($Vs, [2, 24]), o($Vs, [2, 25]), { 30: 52, 31: [1, 53], 58: [1, 54], 59: [1, 55] }, o($Vs, [2, 28]), o($Vs, [2, 29]), { 34: [1, 56] }, { 36: [1, 57] }, o($Vs, [2, 32]), { 39: [1, 58], 41: [1, 59] }, { 43: [1, 60] }, o($Vt, [2, 44], { 57: [1, 61] }), o($Vt, [2, 45], { 57: [1, 62] }), o($Vs, [2, 38]), o($Vs, [2, 39]), o($Vs, [2, 40]), o($Vs, [2, 41]), o($Vu, [2, 36]), { 49: 63, 62: [1, 64] }, o($Vu, [2, 53]), o($Vs, [2, 7]), o($Vs, [2, 13]), { 13: 65, 24: $Vb, 56: $Vq }, o($Vs, [2, 17]), o($Vv, $V4, { 8: 66 }), { 24: [1, 67] }, { 24: [1, 68] }, { 23: [1, 69] }, { 24: [2, 48] }, { 24: [2, 49] }, o($Vs, [2, 30]), o($Vs, [2, 31]), { 40: [1, 70] }, { 40: [1, 71] }, { 44: [1, 72] }, { 24: [1, 73] }, { 24: [1, 74] }, { 47: 75, 63: $Vr }, { 63: [2, 52] }, o($Vs, [2, 14], { 14: [1, 76] }), { 4: $V5, 5: $V6, 6: 30, 9: 14, 10: 16, 11: 18, 12: 19, 13: 20, 16: $V7, 17: $V8, 19: $V9, 21: [1, 77], 22: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 29: $Vg, 32: 31, 33: $Vh, 35: $Vi, 37: $Vj, 38: $Vk, 42: $Vl, 45: 6, 50: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 56: $Vq, 60: $V3 }, o($Vs, [2, 20], { 20: [1, 78] }), { 31: [1, 79] }, { 24: [1, 80] }, o($Vs, [2, 33]), o($Vs, [2, 34]), o($Vs, [2, 35]), o($Vt, [2, 46]), o($Vt, [2, 47]), o($Vu, [2, 37]), o($Vs, [2, 15]), o($Vs, [2, 19]), o($Vv, $V4, { 8: 81 }), o($Vs, [2, 26]), o($Vs, [2, 27]), { 4: $V5, 5: $V6, 6: 30, 9: 14, 10: 16, 11: 18, 12: 19, 13: 20, 16: $V7, 17: $V8, 19: $V9, 21: [1, 82], 22: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 29: $Vg, 32: 31, 33: $Vh, 35: $Vi, 37: $Vj, 38: $Vk, 42: $Vl, 45: 6, 50: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 56: $Vq, 60: $V3 }, o($Vs, [2, 21])],\n defaultActions: { 7: [2, 50], 8: [2, 1], 9: [2, 2], 10: [2, 3], 54: [2, 48], 55: [2, 49], 64: [2, 52] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 41;\n case 1:\n return 50;\n case 2:\n return 51;\n case 3:\n return 52;\n case 4:\n return 53;\n case 5:\n this.begin(\"open_directive\");\n return 60;\n case 6:\n this.begin(\"type_directive\");\n return 61;\n case 7:\n this.popState();\n this.begin(\"arg_directive\");\n return 48;\n case 8:\n this.popState();\n this.popState();\n return 63;\n case 9:\n return 62;\n case 10:\n break;\n case 11:\n break;\n case 12:\n return 5;\n case 13:\n break;\n case 14:\n break;\n case 15:\n break;\n case 16:\n break;\n case 17:\n this.pushState(\"SCALE\");\n return 17;\n case 18:\n return 18;\n case 19:\n this.popState();\n break;\n case 20:\n this.begin(\"acc_title\");\n return 33;\n case 21:\n this.popState();\n return \"acc_title_value\";\n case 22:\n this.begin(\"acc_descr\");\n return 35;\n case 23:\n this.popState();\n return \"acc_descr_value\";\n case 24:\n this.begin(\"acc_descr_multiline\");\n break;\n case 25:\n this.popState();\n break;\n case 26:\n return \"acc_descr_multiline_value\";\n case 27:\n this.pushState(\"CLASSDEF\");\n return 38;\n case 28:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n case 29:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 39;\n case 30:\n this.popState();\n return 40;\n case 31:\n this.pushState(\"CLASS\");\n return 42;\n case 32:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 43;\n case 33:\n this.popState();\n return 44;\n case 34:\n this.pushState(\"SCALE\");\n return 17;\n case 35:\n return 18;\n case 36:\n this.popState();\n break;\n case 37:\n this.pushState(\"STATE\");\n break;\n case 38:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 39:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 26;\n case 40:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 27;\n case 41:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 42:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 26;\n case 43:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 27;\n case 44:\n return 50;\n case 45:\n return 51;\n case 46:\n return 52;\n case 47:\n return 53;\n case 48:\n this.pushState(\"STATE_STRING\");\n break;\n case 49:\n this.pushState(\"STATE_ID\");\n return \"AS\";\n case 50:\n this.popState();\n return \"ID\";\n case 51:\n this.popState();\n break;\n case 52:\n return \"STATE_DESCR\";\n case 53:\n return 19;\n case 54:\n this.popState();\n break;\n case 55:\n this.popState();\n this.pushState(\"struct\");\n return 20;\n case 56:\n break;\n case 57:\n this.popState();\n return 21;\n case 58:\n break;\n case 59:\n this.begin(\"NOTE\");\n return 29;\n case 60:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 58;\n case 61:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 59;\n case 62:\n this.popState();\n this.pushState(\"FLOATING_NOTE\");\n break;\n case 63:\n this.popState();\n this.pushState(\"FLOATING_NOTE_ID\");\n return \"AS\";\n case 64:\n break;\n case 65:\n return \"NOTE_TEXT\";\n case 66:\n this.popState();\n return \"ID\";\n case 67:\n this.popState();\n this.pushState(\"NOTE_TEXT\");\n return 24;\n case 68:\n this.popState();\n yy_.yytext = yy_.yytext.substr(2).trim();\n return 31;\n case 69:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 31;\n case 70:\n return 7;\n case 71:\n return 7;\n case 72:\n return 16;\n case 73:\n return 56;\n case 74:\n return 24;\n case 75:\n yy_.yytext = yy_.yytext.trim();\n return 14;\n case 76:\n return 15;\n case 77:\n return 28;\n case 78:\n return 57;\n case 79:\n return 5;\n case 80:\n return \"INVALID\";\n }\n },\n rules: [/^(?:default\\b)/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:[\\s]+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:classDef\\s+)/i, /^(?:DEFAULT\\s+)/i, /^(?:\\w+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:class\\s+)/i, /^(?:(\\w+)+((,\\s*\\w+)*))/i, /^(?:[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:state\\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\\[\\[fork\\]\\])/i, /^(?:.*\\[\\[join\\]\\])/i, /^(?:.*\\[\\[choice\\]\\])/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:[\"])/i, /^(?:\\s*as\\s+)/i, /^(?:[^\\n\\{]*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n\\s\\{]+)/i, /^(?:\\n)/i, /^(?:\\{)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:\\})/i, /^(?:[\\n])/i, /^(?:note\\s+)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:\")/i, /^(?:\\s*as\\s*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n]*)/i, /^(?:\\s*[^:\\n\\s\\-]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:[\\s\\S]*?end note\\b)/i, /^(?:stateDiagram\\s+)/i, /^(?:stateDiagram-v2\\s+)/i, /^(?:hide empty description\\b)/i, /^(?:\\[\\*\\])/i, /^(?:[^:\\n\\s\\-\\{]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"LINE\": { \"rules\": [14, 15], \"inclusive\": false }, \"close_directive\": { \"rules\": [14, 15], \"inclusive\": false }, \"arg_directive\": { \"rules\": [8, 9, 14, 15], \"inclusive\": false }, \"type_directive\": { \"rules\": [7, 8, 14, 15], \"inclusive\": false }, \"open_directive\": { \"rules\": [6, 14, 15], \"inclusive\": false }, \"struct\": { \"rules\": [14, 15, 27, 31, 37, 44, 45, 46, 47, 56, 57, 58, 59, 73, 74, 75, 76, 77], \"inclusive\": false }, \"FLOATING_NOTE_ID\": { \"rules\": [66], \"inclusive\": false }, \"FLOATING_NOTE\": { \"rules\": [63, 64, 65], \"inclusive\": false }, \"NOTE_TEXT\": { \"rules\": [68, 69], \"inclusive\": false }, \"NOTE_ID\": { \"rules\": [67], \"inclusive\": false }, \"NOTE\": { \"rules\": [60, 61, 62], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [33], \"inclusive\": false }, \"CLASS\": { \"rules\": [32], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [30], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [28, 29], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [25, 26], \"inclusive\": false }, \"acc_descr\": { \"rules\": [23], \"inclusive\": false }, \"acc_title\": { \"rules\": [21], \"inclusive\": false }, \"SCALE\": { \"rules\": [18, 19, 35, 36], \"inclusive\": false }, \"ALIAS\": { \"rules\": [], \"inclusive\": false }, \"STATE_ID\": { \"rules\": [50], \"inclusive\": false }, \"STATE_STRING\": { \"rules\": [51, 52], \"inclusive\": false }, \"FORK_STATE\": { \"rules\": [], \"inclusive\": false }, \"STATE\": { \"rules\": [14, 15, 38, 39, 40, 41, 42, 43, 48, 49, 53, 54, 55], \"inclusive\": false }, \"ID\": { \"rules\": [14, 15], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 15, 16, 17, 20, 22, 24, 27, 31, 34, 37, 55, 59, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_DIAGRAM_DIRECTION = \"LR\";\nconst DEFAULT_NESTED_DOC_DIR = \"TB\";\nconst STMT_STATE = \"state\";\nconst STMT_RELATION = \"relation\";\nconst STMT_CLASSDEF = \"classDef\";\nconst STMT_APPLYCLASS = \"applyClass\";\nconst DEFAULT_STATE_TYPE = \"default\";\nconst DIVIDER_TYPE = \"divider\";\nconst START_NODE = \"[*]\";\nconst START_TYPE = \"start\";\nconst END_NODE = START_NODE;\nconst END_TYPE = \"end\";\nconst COLOR_KEYWORD = \"color\";\nconst FILL_KEYWORD = \"fill\";\nconst BG_FILL = \"bgFill\";\nconst STYLECLASS_SEP = \",\";\nfunction newClassesList() {\n return {};\n}\nlet direction = DEFAULT_DIAGRAM_DIRECTION;\nlet rootDoc = [];\nlet classes = newClassesList();\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\nlet documents = {\n root: newDoc()\n};\nlet currentDocument = documents.root;\nlet startEndCount = 0;\nlet dividerCnt = 0;\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\nconst clone = (o) => JSON.parse(JSON.stringify(o));\nconst parseDirective = function(statement, context, type) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.m.parseDirective(this, statement, context, type);\n};\nconst setRootDoc = (o) => {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Setting root doc\", o);\n rootDoc = o;\n};\nconst getRootDoc = () => rootDoc;\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === STMT_RELATION) {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === STMT_STATE) {\n if (node.id === \"[*]\") {\n node.id = first ? parent.id + \"_start\" : parent.id + \"_end\";\n node.start = first;\n } else {\n node.id = node.id.trim();\n }\n }\n if (node.doc) {\n const doc = [];\n let currentDoc = [];\n let i;\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === DIVIDER_TYPE) {\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.F)(),\n type: \"divider\",\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n node.doc.forEach((docNode) => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: \"root\" }, { id: \"root\", doc: rootDoc }, true);\n return { id: \"root\", doc: rootDoc };\n};\nconst extract = (_doc) => {\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(doc);\n clear(true);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Extract\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n addState(\n item.id.trim(),\n item.type,\n item.doc,\n item.description,\n item.note,\n item.classes,\n item.styles,\n item.textStyles\n );\n break;\n case STMT_RELATION:\n addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_APPLYCLASS:\n setCssClass(item.id.trim(), item.styleClass);\n break;\n }\n });\n};\nconst addState = function(id, type = DEFAULT_STATE_TYPE, doc = null, descr = null, note = null, classes2 = null, styles2 = null, textStyles = null) {\n const trimmedId = id == null ? void 0 : id.trim();\n if (currentDocument.states[trimmedId] === void 0) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Adding state \", trimmedId, descr);\n currentDocument.states[trimmedId] = {\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: []\n };\n } else {\n if (!currentDocument.states[trimmedId].doc) {\n currentDocument.states[trimmedId].doc = doc;\n }\n if (!currentDocument.states[trimmedId].type) {\n currentDocument.states[trimmedId].type = type;\n }\n }\n if (descr) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Setting state description\", trimmedId, descr);\n if (typeof descr === \"string\") {\n addDescription(trimmedId, descr.trim());\n }\n if (typeof descr === \"object\") {\n descr.forEach((des) => addDescription(trimmedId, des.trim()));\n }\n }\n if (note) {\n currentDocument.states[trimmedId].note = note;\n currentDocument.states[trimmedId].note.text = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.e.sanitizeText(\n currentDocument.states[trimmedId].note.text,\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.c)()\n );\n }\n if (classes2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Setting state classes\", trimmedId, classes2);\n const classesList = typeof classes2 === \"string\" ? [classes2] : classes2;\n classesList.forEach((klass) => setCssClass(trimmedId, klass.trim()));\n }\n if (styles2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Setting state styles\", trimmedId, styles2);\n const stylesList = typeof styles2 === \"string\" ? [styles2] : styles2;\n stylesList.forEach((style) => setStyle(trimmedId, style.trim()));\n }\n if (textStyles) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Setting state styles\", trimmedId, styles2);\n const textStylesList = typeof textStyles === \"string\" ? [textStyles] : textStyles;\n textStylesList.forEach((textStyle) => setTextStyle(trimmedId, textStyle.trim()));\n }\n};\nconst clear = function(saveCommon) {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n startEndCount = 0;\n classes = newClassesList();\n if (!saveCommon) {\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.v)();\n }\n};\nconst getState = function(id) {\n return currentDocument.states[id];\n};\nconst getStates = function() {\n return currentDocument.states;\n};\nconst logDocuments = function() {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.l.info(\"Documents = \", documents);\n};\nconst getRelations = function() {\n return currentDocument.relations;\n};\nfunction startIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === START_NODE) {\n startEndCount++;\n fixedId = `${START_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction startTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === START_NODE ? START_TYPE : type;\n}\nfunction endIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === END_NODE) {\n startEndCount++;\n fixedId = `${END_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction endTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === END_NODE ? END_TYPE : type;\n}\nfunction addRelationObjs(item1, item2, relationTitle) {\n let id1 = startIdIfNeeded(item1.id.trim());\n let type1 = startTypeIfNeeded(item1.id.trim(), item1.type);\n let id2 = startIdIfNeeded(item2.id.trim());\n let type2 = startTypeIfNeeded(item2.id.trim(), item2.type);\n addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n currentDocument.relations.push({\n id1,\n id2,\n relationTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.e.sanitizeText(relationTitle, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.c)())\n });\n}\nconst addRelation = function(item1, item2, title) {\n if (typeof item1 === \"object\") {\n addRelationObjs(item1, item2, title);\n } else {\n const id1 = startIdIfNeeded(item1.trim());\n const type1 = startTypeIfNeeded(item1);\n const id2 = endIdIfNeeded(item2.trim());\n const type2 = endTypeIfNeeded(item2);\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1,\n id2,\n title: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.e.sanitizeText(title, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.c)())\n });\n }\n};\nconst addDescription = function(id, descr) {\n const theState = currentDocument.states[id];\n const _descr = descr.startsWith(\":\") ? descr.replace(\":\", \"\").trim() : descr;\n theState.descriptions.push(_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.e.sanitizeText(_descr, (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.c)()));\n};\nconst cleanupLabel = function(label) {\n if (label.substring(0, 1) === \":\") {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\nconst getDividerId = () => {\n dividerCnt++;\n return \"divider-id-\" + dividerCnt;\n};\nconst addStyleClass = function(id, styleAttributes = \"\") {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n const foundClass = classes[id];\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (attrib.match(COLOR_KEYWORD)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\nconst getClasses = function() {\n return classes;\n};\nconst setCssClass = function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundState = getState(id);\n if (foundState === void 0) {\n const trimmedId = id.trim();\n addState(trimmedId);\n foundState = getState(trimmedId);\n }\n foundState.classes.push(cssClassName);\n });\n};\nconst setStyle = function(itemId, styleText) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(styleText);\n }\n};\nconst setTextStyle = function(itemId, cssClassName) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(cssClassName);\n }\n};\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst trimColon = (str) => str && str[0] === \":\" ? str.substr(1).trim() : str.trim();\nconst db = {\n parseDirective,\n getConfig: () => (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.c)().state,\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n setDirection,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon,\n getAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.g,\n setAccTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.s,\n getAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.a,\n setAccDescription: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.b,\n addStyleClass,\n setCssClass,\n addDescription,\n setDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.r,\n getDiagramTitle: _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_0__.t\n};\nconst getStyles = (options) => `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdHlsZXMtZmE0MWRmMjUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQThQO0FBQzlQO0FBQ0E7QUFDQSxzQkFBc0IsZ0JBQWdCLEtBQUs7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMLFVBQVU7QUFDVixnQkFBZ0IscTRCQUFxNEIsZ01BQWdNO0FBQ3JsQyxrQkFBa0IseW5CQUF5bkIsbUtBQW1LO0FBQzl5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQiw4Q0FBOEM7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLG9EQUFvRCxJQUFJLFFBQVEsSUFBSSxvREFBb0QsSUFBSSxvREFBb0QsSUFBSSxxREFBcUQsMEdBQTBHLE9BQU8sS0FBSyxxQkFBcUIsSUFBSSxhQUFhLElBQUksV0FBVyxJQUFJLFdBQVcsSUFBSSxXQUFXLElBQUkscVJBQXFSLElBQUksOEJBQThCLDBDQUEwQyxtUEFBbVAsc0ZBQXNGLDBCQUEwQixzQkFBc0IsYUFBYSxvQkFBb0IsYUFBYSxLQUFLLGFBQWEsd0VBQXdFLCtDQUErQyxzQ0FBc0MsYUFBYSxJQUFJLGFBQWEscUJBQXFCLDBCQUEwQixJQUFJLGFBQWEsb0JBQW9CLGFBQWEscUJBQXFCLGFBQWEsMEZBQTBGLHFCQUFxQixzREFBc0QsMEJBQTBCLGlDQUFpQyxPQUFPLEtBQUssYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEsc0NBQXNDLGFBQWEsSUFBSSxhQUFhLElBQUksYUFBYSxJQUFJLGFBQWEsSUFBSSxhQUFhLElBQUksaUJBQWlCLElBQUksYUFBYSxvQkFBb0IsYUFBYSxLQUFLLHVSQUF1UixvQkFBb0IsYUFBYSxLQUFLLGFBQWEsSUFBSSxhQUFhLHdKQUF3SixPQUFPLHVDQUF1Qyx1UkFBdVI7QUFDcDFGLHNCQUFzQixxRkFBcUY7QUFDM0c7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUCw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLGlCQUFpQiwwQkFBMEI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsWUFBWTtBQUNaOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1osVUFBVTs7QUFFVjtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsWUFBWTtBQUNaOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFlBQVk7QUFDWjs7QUFFQTtBQUNBLFVBQVU7QUFDVixZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGVBQWU7QUFDZjtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBLFVBQVU7QUFDVixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsY0FBYyxLQUFLO0FBQ25COztBQUVBO0FBQ0EsVUFBVTtBQUNWLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFVRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWVybWFpZC9kaXN0L3N0eWxlcy1mYTQxZGYyNS5qcz9jNjFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGMgYXMgZ2V0Q29uZmlnLCBnIGFzIGdldEFjY1RpdGxlLCBzIGFzIHNldEFjY1RpdGxlLCBhIGFzIGdldEFjY0Rlc2NyaXB0aW9uLCBiIGFzIHNldEFjY0Rlc2NyaXB0aW9uLCByIGFzIHNldERpYWdyYW1UaXRsZSwgdCBhcyBnZXREaWFncmFtVGl0bGUsIG0gYXMgbWVybWFpZEFQSSwgbCBhcyBsb2csIGUgYXMgY29tbW9uLCB2IGFzIGNsZWFyJDEsIEYgYXMgZ2VuZXJhdGVJZCB9IGZyb20gXCIuL21lcm1haWQtYjBhZDJkZTEuanNcIjtcbnZhciBwYXJzZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIG8gPSBmdW5jdGlvbihrLCB2LCBvMiwgbCkge1xuICAgIGZvciAobzIgPSBvMiB8fCB7fSwgbCA9IGsubGVuZ3RoOyBsLS07IG8yW2tbbF1dID0gdilcbiAgICAgIDtcbiAgICByZXR1cm4gbzI7XG4gIH0sICRWMCA9IFsxLCAyXSwgJFYxID0gWzEsIDNdLCAkVjIgPSBbMSwgNV0sICRWMyA9IFsxLCA3XSwgJFY0ID0gWzIsIDVdLCAkVjUgPSBbMSwgMTVdLCAkVjYgPSBbMSwgMTddLCAkVjcgPSBbMSwgMjFdLCAkVjggPSBbMSwgMjJdLCAkVjkgPSBbMSwgMjNdLCAkVmEgPSBbMSwgMjRdLCAkVmIgPSBbMSwgMzddLCAkVmMgPSBbMSwgMjVdLCAkVmQgPSBbMSwgMjZdLCAkVmUgPSBbMSwgMjddLCAkVmYgPSBbMSwgMjhdLCAkVmcgPSBbMSwgMjldLCAkVmggPSBbMSwgMzJdLCAkVmkgPSBbMSwgMzNdLCAkVmogPSBbMSwgMzRdLCAkVmsgPSBbMSwgMzVdLCAkVmwgPSBbMSwgMzZdLCAkVm0gPSBbMSwgMzldLCAkVm4gPSBbMSwgNDBdLCAkVm8gPSBbMSwgNDFdLCAkVnAgPSBbMSwgNDJdLCAkVnEgPSBbMSwgMzhdLCAkVnIgPSBbMSwgNDVdLCAkVnMgPSBbMSwgNCwgNSwgMTYsIDE3LCAxOSwgMjEsIDIyLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMywgMzUsIDM3LCAzOCwgNDIsIDUwLCA1MSwgNTIsIDUzLCA1NiwgNjBdLCAkVnQgPSBbMSwgNCwgNSwgMTQsIDE1LCAxNiwgMTcsIDE5LCAyMSwgMjIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMzLCAzNSwgMzcsIDM4LCA0MiwgNTAsIDUxLCA1MiwgNTMsIDU2LCA2MF0sICRWdSA9IFsxLCA0LCA1LCA3LCAxNiwgMTcsIDE5LCAyMSwgMjIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMzLCAzNSwgMzcsIDM4LCA0MiwgNTAsIDUxLCA1MiwgNTMsIDU2LCA2MF0sICRWdiA9IFs0LCA1LCAxNiwgMTcsIDE5LCAyMSwgMjIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMzLCAzNSwgMzcsIDM4LCA0MiwgNTAsIDUxLCA1MiwgNTMsIDU2LCA2MF07XG4gIHZhciBwYXJzZXIyID0ge1xuICAgIHRyYWNlOiBmdW5jdGlvbiB0cmFjZSgpIHtcbiAgICB9LFxuICAgIHl5OiB7fSxcbiAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwic3RhcnRcIjogMywgXCJTUEFDRVwiOiA0LCBcIk5MXCI6IDUsIFwiZGlyZWN0aXZlXCI6IDYsIFwiU0RcIjogNywgXCJkb2N1bWVudFwiOiA4LCBcImxpbmVcIjogOSwgXCJzdGF0ZW1lbnRcIjogMTAsIFwiY2xhc3NEZWZTdGF0ZW1lbnRcIjogMTEsIFwiY3NzQ2xhc3NTdGF0ZW1lbnRcIjogMTIsIFwiaWRTdGF0ZW1lbnRcIjogMTMsIFwiREVTQ1JcIjogMTQsIFwiLS0+XCI6IDE1LCBcIkhJREVfRU1QVFlcIjogMTYsIFwic2NhbGVcIjogMTcsIFwiV0lEVEhcIjogMTgsIFwiQ09NUE9TSVRfU1RBVEVcIjogMTksIFwiU1RSVUNUX1NUQVJUXCI6IDIwLCBcIlNUUlVDVF9TVE9QXCI6IDIxLCBcIlNUQVRFX0RFU0NSXCI6IDIyLCBcIkFTXCI6IDIzLCBcIklEXCI6IDI0LCBcIkZPUktcIjogMjUsIFwiSk9JTlwiOiAyNiwgXCJDSE9JQ0VcIjogMjcsIFwiQ09OQ1VSUkVOVFwiOiAyOCwgXCJub3RlXCI6IDI5LCBcIm5vdGVQb3NpdGlvblwiOiAzMCwgXCJOT1RFX1RFWFRcIjogMzEsIFwiZGlyZWN0aW9uXCI6IDMyLCBcImFjY190aXRsZVwiOiAzMywgXCJhY2NfdGl0bGVfdmFsdWVcIjogMzQsIFwiYWNjX2Rlc2NyXCI6IDM1LCBcImFjY19kZXNjcl92YWx1ZVwiOiAzNiwgXCJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlXCI6IDM3LCBcImNsYXNzRGVmXCI6IDM4LCBcIkNMQVNTREVGX0lEXCI6IDM5LCBcIkNMQVNTREVGX1NUWUxFT1BUU1wiOiA0MCwgXCJERUZBVUxUXCI6IDQxLCBcImNsYXNzXCI6IDQyLCBcIkNMQVNTRU5USVRZX0lEU1wiOiA0MywgXCJTVFlMRUNMQVNTXCI6IDQ0LCBcIm9wZW5EaXJlY3RpdmVcIjogNDUsIFwidHlwZURpcmVjdGl2ZVwiOiA0NiwgXCJjbG9zZURpcmVjdGl2ZVwiOiA0NywgXCI6XCI6IDQ4LCBcImFyZ0RpcmVjdGl2ZVwiOiA0OSwgXCJkaXJlY3Rpb25fdGJcIjogNTAsIFwiZGlyZWN0aW9uX2J0XCI6IDUxLCBcImRpcmVjdGlvbl9ybFwiOiA1MiwgXCJkaXJlY3Rpb25fbHJcIjogNTMsIFwiZW9sXCI6IDU0LCBcIjtcIjogNTUsIFwiRURHRV9TVEFURVwiOiA1NiwgXCJTVFlMRV9TRVBBUkFUT1JcIjogNTcsIFwibGVmdF9vZlwiOiA1OCwgXCJyaWdodF9vZlwiOiA1OSwgXCJvcGVuX2RpcmVjdGl2ZVwiOiA2MCwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiA2MSwgXCJhcmdfZGlyZWN0aXZlXCI6IDYyLCBcImNsb3NlX2RpcmVjdGl2ZVwiOiA2MywgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDQ6IFwiU1BBQ0VcIiwgNTogXCJOTFwiLCA3OiBcIlNEXCIsIDE0OiBcIkRFU0NSXCIsIDE1OiBcIi0tPlwiLCAxNjogXCJISURFX0VNUFRZXCIsIDE3OiBcInNjYWxlXCIsIDE4OiBcIldJRFRIXCIsIDE5OiBcIkNPTVBPU0lUX1NUQVRFXCIsIDIwOiBcIlNUUlVDVF9TVEFSVFwiLCAyMTogXCJTVFJVQ1RfU1RPUFwiLCAyMjogXCJTVEFURV9ERVNDUlwiLCAyMzogXCJBU1wiLCAyNDogXCJJRFwiLCAyNTogXCJGT1JLXCIsIDI2OiBcIkpPSU5cIiwgMjc6IFwiQ0hPSUNFXCIsIDI4OiBcIkNPTkNVUlJFTlRcIiwgMjk6IFwibm90ZVwiLCAzMTogXCJOT1RFX1RFWFRcIiwgMzM6IFwiYWNjX3RpdGxlXCIsIDM0OiBcImFjY190aXRsZV92YWx1ZVwiLCAzNTogXCJhY2NfZGVzY3JcIiwgMzY6IFwiYWNjX2Rlc2NyX3ZhbHVlXCIsIDM3OiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIiwgMzg6IFwiY2xhc3NEZWZcIiwgMzk6IFwiQ0xBU1NERUZfSURcIiwgNDA6IFwiQ0xBU1NERUZfU1RZTEVPUFRTXCIsIDQxOiBcIkRFRkFVTFRcIiwgNDI6IFwiY2xhc3NcIiwgNDM6IFwiQ0xBU1NFTlRJVFlfSURTXCIsIDQ0OiBcIlNUWUxFQ0xBU1NcIiwgNDg6IFwiOlwiLCA1MDogXCJkaXJlY3Rpb25fdGJcIiwgNTE6IFwiZGlyZWN0aW9uX2J0XCIsIDUyOiBcImRpcmVjdGlvbl9ybFwiLCA1MzogXCJkaXJlY3Rpb25fbHJcIiwgNTU6IFwiO1wiLCA1NjogXCJFREdFX1NUQVRFXCIsIDU3OiBcIlNUWUxFX1NFUEFSQVRPUlwiLCA1ODogXCJsZWZ0X29mXCIsIDU5OiBcInJpZ2h0X29mXCIsIDYwOiBcIm9wZW5fZGlyZWN0aXZlXCIsIDYxOiBcInR5cGVfZGlyZWN0aXZlXCIsIDYyOiBcImFyZ19kaXJlY3RpdmVcIiwgNjM6IFwiY2xvc2VfZGlyZWN0aXZlXCIgfSxcbiAgICBwcm9kdWN0aW9uc186IFswLCBbMywgMl0sIFszLCAyXSwgWzMsIDJdLCBbMywgMl0sIFs4LCAwXSwgWzgsIDJdLCBbOSwgMl0sIFs5LCAxXSwgWzksIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDNdLCBbMTAsIDRdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTAsIDRdLCBbMTAsIDNdLCBbMTAsIDZdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDRdLCBbMTAsIDRdLCBbMTAsIDFdLCBbMTAsIDFdLCBbMTAsIDJdLCBbMTAsIDJdLCBbMTAsIDFdLCBbMTEsIDNdLCBbMTEsIDNdLCBbMTIsIDNdLCBbNiwgM10sIFs2LCA1XSwgWzMyLCAxXSwgWzMyLCAxXSwgWzMyLCAxXSwgWzMyLCAxXSwgWzU0LCAxXSwgWzU0LCAxXSwgWzEzLCAxXSwgWzEzLCAxXSwgWzEzLCAzXSwgWzEzLCAzXSwgWzMwLCAxXSwgWzMwLCAxXSwgWzQ1LCAxXSwgWzQ2LCAxXSwgWzQ5LCAxXSwgWzQ3LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgeXkuc2V0Um9vdERvYygkJFskMF0pO1xuICAgICAgICAgIHJldHVybiAkJFskMF07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGlmICgkJFskMF0gIT0gXCJubFwiKSB7XG4gICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICB0aGlzLiQgPSBcIm5sXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIGNvbnN0IHN0YXRlU3RtdCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgc3RhdGVTdG10LmRlc2NyaXB0aW9uID0geXkudHJpbUNvbG9uKCQkWyQwXSk7XG4gICAgICAgICAgdGhpcy4kID0gc3RhdGVTdG10O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJyZWxhdGlvblwiLCBzdGF0ZTE6ICQkWyQwIC0gMl0sIHN0YXRlMjogJCRbJDBdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgY29uc3QgcmVsRGVzY3JpcHRpb24gPSB5eS50cmltQ29sb24oJCRbJDBdKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwicmVsYXRpb25cIiwgc3RhdGUxOiAkJFskMCAtIDNdLCBzdGF0ZTI6ICQkWyQwIC0gMV0sIGRlc2NyaXB0aW9uOiByZWxEZXNjcmlwdGlvbiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJzdGF0ZVwiLCBpZDogJCRbJDAgLSAzXSwgdHlwZTogXCJkZWZhdWx0XCIsIGRlc2NyaXB0aW9uOiBcIlwiLCBkb2M6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB2YXIgaWQgPSAkJFskMF07XG4gICAgICAgICAgdmFyIGRlc2NyaXB0aW9uID0gJCRbJDAgLSAyXS50cmltKCk7XG4gICAgICAgICAgaWYgKCQkWyQwXS5tYXRjaChcIjpcIikpIHtcbiAgICAgICAgICAgIHZhciBwYXJ0cyA9ICQkWyQwXS5zcGxpdChcIjpcIik7XG4gICAgICAgICAgICBpZCA9IHBhcnRzWzBdO1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBbZGVzY3JpcHRpb24sIHBhcnRzWzFdXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcInN0YXRlXCIsIGlkLCB0eXBlOiBcImRlZmF1bHRcIiwgZGVzY3JpcHRpb24gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwic3RhdGVcIiwgaWQ6ICQkWyQwIC0gM10sIHR5cGU6IFwiZGVmYXVsdFwiLCBkZXNjcmlwdGlvbjogJCRbJDAgLSA1XSwgZG9jOiAkJFskMCAtIDFdIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcInN0YXRlXCIsIGlkOiAkJFskMF0sIHR5cGU6IFwiZm9ya1wiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcInN0YXRlXCIsIGlkOiAkJFskMF0sIHR5cGU6IFwiam9pblwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcInN0YXRlXCIsIGlkOiAkJFskMF0sIHR5cGU6IFwiY2hvaWNlXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwic3RhdGVcIiwgaWQ6IHl5LmdldERpdmlkZXJJZCgpLCB0eXBlOiBcImRpdmlkZXJcIiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJzdGF0ZVwiLCBpZDogJCRbJDAgLSAxXS50cmltKCksIG5vdGU6IHsgcG9zaXRpb246ICQkWyQwIC0gMl0udHJpbSgpLCB0ZXh0OiAkJFskMF0udHJpbSgpIH0gfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzMDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LnNldEFjY1RpdGxlKHRoaXMuJCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzE6XG4gICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnRyaW0oKTtcbiAgICAgICAgICB5eS5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMzOlxuICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJjbGFzc0RlZlwiLCBpZDogJCRbJDAgLSAxXS50cmltKCksIGNsYXNzZXM6ICQkWyQwXS50cmltKCkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiYXBwbHlDbGFzc1wiLCBpZDogJCRbJDAgLSAxXS50cmltKCksIHN0eWxlQ2xhc3M6ICQkWyQwXS50cmltKCkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJUQlwiKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIlRCXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJCVFwiKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIkJUXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJSTFwiKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIlJMXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICB5eS5zZXREaXJlY3Rpb24oXCJMUlwiKTtcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwiZGlyXCIsIHZhbHVlOiBcIkxSXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0NDpcbiAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICB0aGlzLiQgPSB7IHN0bXQ6IFwic3RhdGVcIiwgaWQ6ICQkWyQwXS50cmltKCksIHR5cGU6IFwiZGVmYXVsdFwiLCBkZXNjcmlwdGlvbjogXCJcIiB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgIHRoaXMuJCA9IHsgc3RtdDogXCJzdGF0ZVwiLCBpZDogJCRbJDAgLSAyXS50cmltKCksIGNsYXNzZXM6IFskJFskMF0udHJpbSgpXSwgdHlwZTogXCJkZWZhdWx0XCIsIGRlc2NyaXB0aW9uOiBcIlwiIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgdGhpcy4kID0geyBzdG10OiBcInN0YXRlXCIsIGlkOiAkJFskMCAtIDJdLnRyaW0oKSwgY2xhc3NlczogWyQkWyQwXS50cmltKCldLCB0eXBlOiBcImRlZmF1bHRcIiwgZGVzY3JpcHRpb246IFwiXCIgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MDpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZShcIiUle1wiLCBcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDUxOlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJ0eXBlX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA1MjpcbiAgICAgICAgICAkJFskMF0gPSAkJFskMF0udHJpbSgpLnJlcGxhY2UoLycvZywgJ1wiJyk7XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoJCRbJDBdLCBcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTM6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCJ9JSVcIiwgXCJjbG9zZV9kaXJlY3RpdmVcIiwgXCJzdGF0ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlOiBbeyAzOiAxLCA0OiAkVjAsIDU6ICRWMSwgNjogNCwgNzogJFYyLCA0NTogNiwgNjA6ICRWMyB9LCB7IDE6IFszXSB9LCB7IDM6IDgsIDQ6ICRWMCwgNTogJFYxLCA2OiA0LCA3OiAkVjIsIDQ1OiA2LCA2MDogJFYzIH0sIHsgMzogOSwgNDogJFYwLCA1OiAkVjEsIDY6IDQsIDc6ICRWMiwgNDU6IDYsIDYwOiAkVjMgfSwgeyAzOiAxMCwgNDogJFYwLCA1OiAkVjEsIDY6IDQsIDc6ICRWMiwgNDU6IDYsIDYwOiAkVjMgfSwgbyhbMSwgNCwgNSwgMTYsIDE3LCAxOSwgMjIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMzLCAzNSwgMzcsIDM4LCA0MiwgNTAsIDUxLCA1MiwgNTMsIDU2LCA2MF0sICRWNCwgeyA4OiAxMSB9KSwgeyA0NjogMTIsIDYxOiBbMSwgMTNdIH0sIHsgNjE6IFsyLCA1MF0gfSwgeyAxOiBbMiwgMV0gfSwgeyAxOiBbMiwgMl0gfSwgeyAxOiBbMiwgM10gfSwgeyAxOiBbMiwgNF0sIDQ6ICRWNSwgNTogJFY2LCA2OiAzMCwgOTogMTQsIDEwOiAxNiwgMTE6IDE4LCAxMjogMTksIDEzOiAyMCwgMTY6ICRWNywgMTc6ICRWOCwgMTk6ICRWOSwgMjI6ICRWYSwgMjQ6ICRWYiwgMjU6ICRWYywgMjY6ICRWZCwgMjc6ICRWZSwgMjg6ICRWZiwgMjk6ICRWZywgMzI6IDMxLCAzMzogJFZoLCAzNTogJFZpLCAzNzogJFZqLCAzODogJFZrLCA0MjogJFZsLCA0NTogNiwgNTA6ICRWbSwgNTE6ICRWbiwgNTI6ICRWbywgNTM6ICRWcCwgNTY6ICRWcSwgNjA6ICRWMyB9LCB7IDQ3OiA0MywgNDg6IFsxLCA0NF0sIDYzOiAkVnIgfSwgbyhbNDgsIDYzXSwgWzIsIDUxXSksIG8oJFZzLCBbMiwgNl0pLCB7IDY6IDMwLCAxMDogNDYsIDExOiAxOCwgMTI6IDE5LCAxMzogMjAsIDE2OiAkVjcsIDE3OiAkVjgsIDE5OiAkVjksIDIyOiAkVmEsIDI0OiAkVmIsIDI1OiAkVmMsIDI2OiAkVmQsIDI3OiAkVmUsIDI4OiAkVmYsIDI5OiAkVmcsIDMyOiAzMSwgMzM6ICRWaCwgMzU6ICRWaSwgMzc6ICRWaiwgMzg6ICRWaywgNDI6ICRWbCwgNDU6IDYsIDUwOiAkVm0sIDUxOiAkVm4sIDUyOiAkVm8sIDUzOiAkVnAsIDU2OiAkVnEsIDYwOiAkVjMgfSwgbygkVnMsIFsyLCA4XSksIG8oJFZzLCBbMiwgOV0pLCBvKCRWcywgWzIsIDEwXSksIG8oJFZzLCBbMiwgMTFdKSwgbygkVnMsIFsyLCAxMl0sIHsgMTQ6IFsxLCA0N10sIDE1OiBbMSwgNDhdIH0pLCBvKCRWcywgWzIsIDE2XSksIHsgMTg6IFsxLCA0OV0gfSwgbygkVnMsIFsyLCAxOF0sIHsgMjA6IFsxLCA1MF0gfSksIHsgMjM6IFsxLCA1MV0gfSwgbygkVnMsIFsyLCAyMl0pLCBvKCRWcywgWzIsIDIzXSksIG8oJFZzLCBbMiwgMjRdKSwgbygkVnMsIFsyLCAyNV0pLCB7IDMwOiA1MiwgMzE6IFsxLCA1M10sIDU4OiBbMSwgNTRdLCA1OTogWzEsIDU1XSB9LCBvKCRWcywgWzIsIDI4XSksIG8oJFZzLCBbMiwgMjldKSwgeyAzNDogWzEsIDU2XSB9LCB7IDM2OiBbMSwgNTddIH0sIG8oJFZzLCBbMiwgMzJdKSwgeyAzOTogWzEsIDU4XSwgNDE6IFsxLCA1OV0gfSwgeyA0MzogWzEsIDYwXSB9LCBvKCRWdCwgWzIsIDQ0XSwgeyA1NzogWzEsIDYxXSB9KSwgbygkVnQsIFsyLCA0NV0sIHsgNTc6IFsxLCA2Ml0gfSksIG8oJFZzLCBbMiwgMzhdKSwgbygkVnMsIFsyLCAzOV0pLCBvKCRWcywgWzIsIDQwXSksIG8oJFZzLCBbMiwgNDFdKSwgbygkVnUsIFsyLCAzNl0pLCB7IDQ5OiA2MywgNjI6IFsxLCA2NF0gfSwgbygkVnUsIFsyLCA1M10pLCBvKCRWcywgWzIsIDddKSwgbygkVnMsIFsyLCAxM10pLCB7IDEzOiA2NSwgMjQ6ICRWYiwgNTY6ICRWcSB9LCBvKCRWcywgWzIsIDE3XSksIG8oJFZ2LCAkVjQsIHsgODogNjYgfSksIHsgMjQ6IFsxLCA2N10gfSwgeyAyNDogWzEsIDY4XSB9LCB7IDIzOiBbMSwgNjldIH0sIHsgMjQ6IFsyLCA0OF0gfSwgeyAyNDogWzIsIDQ5XSB9LCBvKCRWcywgWzIsIDMwXSksIG8oJFZzLCBbMiwgMzFdKSwgeyA0MDogWzEsIDcwXSB9LCB7IDQwOiBbMSwgNzFdIH0sIHsgNDQ6IFsxLCA3Ml0gfSwgeyAyNDogWzEsIDczXSB9LCB7IDI0OiBbMSwgNzRdIH0sIHsgNDc6IDc1LCA2MzogJFZyIH0sIHsgNjM6IFsyLCA1Ml0gfSwgbygkVnMsIFsyLCAxNF0sIHsgMTQ6IFsxLCA3Nl0gfSksIHsgNDogJFY1LCA1OiAkVjYsIDY6IDMwLCA5OiAxNCwgMTA6IDE2LCAxMTogMTgsIDEyOiAxOSwgMTM6IDIwLCAxNjogJFY3LCAxNzogJFY4LCAxOTogJFY5LCAyMTogWzEsIDc3XSwgMjI6ICRWYSwgMjQ6ICRWYiwgMjU6ICRWYywgMjY6ICRWZCwgMjc6ICRWZSwgMjg6ICRWZiwgMjk6ICRWZywgMzI6IDMxLCAzMzogJFZoLCAzNTogJFZpLCAzNzogJFZqLCAzODogJFZrLCA0MjogJFZsLCA0NTogNiwgNTA6ICRWbSwgNTE6ICRWbiwgNTI6ICRWbywgNTM6ICRWcCwgNTY6ICRWcSwgNjA6ICRWMyB9LCBvKCRWcywgWzIsIDIwXSwgeyAyMDogWzEsIDc4XSB9KSwgeyAzMTogWzEsIDc5XSB9LCB7IDI0OiBbMSwgODBdIH0sIG8oJFZzLCBbMiwgMzNdKSwgbygkVnMsIFsyLCAzNF0pLCBvKCRWcywgWzIsIDM1XSksIG8oJFZ0LCBbMiwgNDZdKSwgbygkVnQsIFsyLCA0N10pLCBvKCRWdSwgWzIsIDM3XSksIG8oJFZzLCBbMiwgMTVdKSwgbygkVnMsIFsyLCAxOV0pLCBvKCRWdiwgJFY0LCB7IDg6IDgxIH0pLCBvKCRWcywgWzIsIDI2XSksIG8oJFZzLCBbMiwgMjddKSwgeyA0OiAkVjUsIDU6ICRWNiwgNjogMzAsIDk6IDE0LCAxMDogMTYsIDExOiAxOCwgMTI6IDE5LCAxMzogMjAsIDE2OiAkVjcsIDE3OiAkVjgsIDE5OiAkVjksIDIxOiBbMSwgODJdLCAyMjogJFZhLCAyNDogJFZiLCAyNTogJFZjLCAyNjogJFZkLCAyNzogJFZlLCAyODogJFZmLCAyOTogJFZnLCAzMjogMzEsIDMzOiAkVmgsIDM1OiAkVmksIDM3OiAkVmosIDM4OiAkVmssIDQyOiAkVmwsIDQ1OiA2LCA1MDogJFZtLCA1MTogJFZuLCA1MjogJFZvLCA1MzogJFZwLCA1NjogJFZxLCA2MDogJFYzIH0sIG8oJFZzLCBbMiwgMjFdKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgNzogWzIsIDUwXSwgODogWzIsIDFdLCA5OiBbMiwgMl0sIDEwOiBbMiwgM10sIDU0OiBbMiwgNDhdLCA1NTogWzIsIDQ5XSwgNjQ6IFsyLCA1Ml0gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHJldHVybiA0MTtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICByZXR1cm4gNTA7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIDUxO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiA1MjtcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICByZXR1cm4gNTM7XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcIm9wZW5fZGlyZWN0aXZlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDYwO1xuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJ0eXBlX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA2MTtcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYXJnX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiA0ODtcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNjM7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgcmV0dXJuIDYyO1xuICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHJldHVybiA1O1xuICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgdGhpcy5wdXNoU3RhdGUoXCJTQ0FMRVwiKTtcbiAgICAgICAgICAgIHJldHVybiAxNztcbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgcmV0dXJuIDE4O1xuICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY190aXRsZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAzMztcbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX3RpdGxlX3ZhbHVlXCI7XG4gICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfZGVzY3JcIik7XG4gICAgICAgICAgICByZXR1cm4gMzU7XG4gICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyX211bHRpbGluZVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjU6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgcmV0dXJuIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIkNMQVNTREVGXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDM4O1xuICAgICAgICAgIGNhc2UgMjg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIkNMQVNTREVGSURcIik7XG4gICAgICAgICAgICByZXR1cm4gXCJERUZBVUxUX0NMQVNTREVGX0lEXCI7XG4gICAgICAgICAgY2FzZSAyOTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiQ0xBU1NERUZJRFwiKTtcbiAgICAgICAgICAgIHJldHVybiAzOTtcbiAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDQwO1xuICAgICAgICAgIGNhc2UgMzE6XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIkNMQVNTXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQyO1xuICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIkNMQVNTX1NUWUxFXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDQzO1xuICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gNDQ7XG4gICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiU0NBTEVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTc7XG4gICAgICAgICAgY2FzZSAzNTpcbiAgICAgICAgICAgIHJldHVybiAxODtcbiAgICAgICAgICBjYXNlIDM2OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiU1RBVEVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc2xpY2UoMCwgLTgpLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiAyNTtcbiAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc2xpY2UoMCwgLTgpLnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQuc2xpY2UoMCwgLTEwKS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4gMjc7XG4gICAgICAgICAgY2FzZSA0MTpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnNsaWNlKDAsIC04KS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4gMjU7XG4gICAgICAgICAgY2FzZSA0MjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnNsaWNlKDAsIC04KS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm4gMjY7XG4gICAgICAgICAgY2FzZSA0MzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnNsaWNlKDAsIC0xMCkudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIDI3O1xuICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICByZXR1cm4gNTA7XG4gICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgIHJldHVybiA1MTtcbiAgICAgICAgICBjYXNlIDQ2OlxuICAgICAgICAgICAgcmV0dXJuIDUyO1xuICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICByZXR1cm4gNTM7XG4gICAgICAgICAgY2FzZSA0ODpcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiU1RBVEVfU1RSSU5HXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA0OTpcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiU1RBVEVfSURcIik7XG4gICAgICAgICAgICByZXR1cm4gXCJBU1wiO1xuICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJJRFwiO1xuICAgICAgICAgIGNhc2UgNTE6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDUyOlxuICAgICAgICAgICAgcmV0dXJuIFwiU1RBVEVfREVTQ1JcIjtcbiAgICAgICAgICBjYXNlIDUzOlxuICAgICAgICAgICAgcmV0dXJuIDE5O1xuICAgICAgICAgIGNhc2UgNTQ6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDU1OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wdXNoU3RhdGUoXCJzdHJ1Y3RcIik7XG4gICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgY2FzZSA1NjpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTc6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gMjE7XG4gICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiTk9URVwiKTtcbiAgICAgICAgICAgIHJldHVybiAyOTtcbiAgICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wdXNoU3RhdGUoXCJOT1RFX0lEXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDU4O1xuICAgICAgICAgIGNhc2UgNjE6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIk5PVEVfSURcIik7XG4gICAgICAgICAgICByZXR1cm4gNTk7XG4gICAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiRkxPQVRJTkdfTk9URVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNjM6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnB1c2hTdGF0ZShcIkZMT0FUSU5HX05PVEVfSURcIik7XG4gICAgICAgICAgICByZXR1cm4gXCJBU1wiO1xuICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDY1OlxuICAgICAgICAgICAgcmV0dXJuIFwiTk9URV9URVhUXCI7XG4gICAgICAgICAgY2FzZSA2NjpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcIklEXCI7XG4gICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucHVzaFN0YXRlKFwiTk9URV9URVhUXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgICAgIGNhc2UgNjg6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHIoMikudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgNjk6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zbGljZSgwLCAtOCkudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgICAgcmV0dXJuIDc7XG4gICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgIHJldHVybiAxNjtcbiAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgcmV0dXJuIDU2O1xuICAgICAgICAgIGNhc2UgNzQ6XG4gICAgICAgICAgICByZXR1cm4gMjQ7XG4gICAgICAgICAgY2FzZSA3NTpcbiAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgIHJldHVybiAxNDtcbiAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgIGNhc2UgNzc6XG4gICAgICAgICAgICByZXR1cm4gMjg7XG4gICAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICAgIHJldHVybiA1NztcbiAgICAgICAgICBjYXNlIDc5OlxuICAgICAgICAgICAgcmV0dXJuIDU7XG4gICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgIHJldHVybiBcIklOVkFMSURcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiBbL14oPzpkZWZhdWx0XFxiKS9pLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1RCW15cXG5dKikvaSwgL14oPzouKmRpcmVjdGlvblxccytCVFteXFxuXSopL2ksIC9eKD86LipkaXJlY3Rpb25cXHMrUkxbXlxcbl0qKS9pLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0xSW15cXG5dKikvaSwgL14oPzolJVxceykvaSwgL14oPzooKD86KD8hXFx9JSUpW146Ll0pKikpL2ksIC9eKD86OikvaSwgL14oPzpcXH0lJSkvaSwgL14oPzooKD86KD8hXFx9JSUpLnxcXG4pKikpL2ksIC9eKD86JSUoPyFcXHspW15cXG5dKikvaSwgL14oPzpbXlxcfV0lJVteXFxuXSopL2ksIC9eKD86W1xcbl0rKS9pLCAvXig/OltcXHNdKykvaSwgL14oPzooKD8hXFxuKVxccykrKS9pLCAvXig/OiNbXlxcbl0qKS9pLCAvXig/OiVbXlxcbl0qKS9pLCAvXig/OnNjYWxlXFxzKykvaSwgL14oPzpcXGQrKS9pLCAvXig/Olxccyt3aWR0aFxcYikvaSwgL14oPzphY2NUaXRsZVxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS9pLCAvXig/OltcXH1dKS9pLCAvXig/OlteXFx9XSopL2ksIC9eKD86Y2xhc3NEZWZcXHMrKS9pLCAvXig/OkRFRkFVTFRcXHMrKS9pLCAvXig/OlxcdytcXHMrKS9pLCAvXig/OlteXFxuXSopL2ksIC9eKD86Y2xhc3NcXHMrKS9pLCAvXig/OihcXHcrKSsoKCxcXHMqXFx3KykqKSkvaSwgL14oPzpbXlxcbl0qKS9pLCAvXig/OnNjYWxlXFxzKykvaSwgL14oPzpcXGQrKS9pLCAvXig/Olxccyt3aWR0aFxcYikvaSwgL14oPzpzdGF0ZVxccyspL2ksIC9eKD86Lio8PGZvcms+PikvaSwgL14oPzouKjw8am9pbj4+KS9pLCAvXig/Oi4qPDxjaG9pY2U+PikvaSwgL14oPzouKlxcW1xcW2ZvcmtcXF1cXF0pL2ksIC9eKD86LipcXFtcXFtqb2luXFxdXFxdKS9pLCAvXig/Oi4qXFxbXFxbY2hvaWNlXFxdXFxdKS9pLCAvXig/Oi4qZGlyZWN0aW9uXFxzK1RCW15cXG5dKikvaSwgL14oPzouKmRpcmVjdGlvblxccytCVFteXFxuXSopL2ksIC9eKD86LipkaXJlY3Rpb25cXHMrUkxbXlxcbl0qKS9pLCAvXig/Oi4qZGlyZWN0aW9uXFxzK0xSW15cXG5dKikvaSwgL14oPzpbXCJdKS9pLCAvXig/Olxccyphc1xccyspL2ksIC9eKD86W15cXG5cXHtdKikvaSwgL14oPzpbXCJdKS9pLCAvXig/OlteXCJdKikvaSwgL14oPzpbXlxcblxcc1xce10rKS9pLCAvXig/OlxcbikvaSwgL14oPzpcXHspL2ksIC9eKD86JSUoPyFcXHspW15cXG5dKikvaSwgL14oPzpcXH0pL2ksIC9eKD86W1xcbl0pL2ksIC9eKD86bm90ZVxccyspL2ksIC9eKD86bGVmdCBvZlxcYikvaSwgL14oPzpyaWdodCBvZlxcYikvaSwgL14oPzpcIikvaSwgL14oPzpcXHMqYXNcXHMqKS9pLCAvXig/OltcIl0pL2ksIC9eKD86W15cIl0qKS9pLCAvXig/OlteXFxuXSopL2ksIC9eKD86XFxzKlteOlxcblxcc1xcLV0rKS9pLCAvXig/Olxccyo6W146XFxuO10rKS9pLCAvXig/OltcXHNcXFNdKj9lbmQgbm90ZVxcYikvaSwgL14oPzpzdGF0ZURpYWdyYW1cXHMrKS9pLCAvXig/OnN0YXRlRGlhZ3JhbS12MlxccyspL2ksIC9eKD86aGlkZSBlbXB0eSBkZXNjcmlwdGlvblxcYikvaSwgL14oPzpcXFtcXCpcXF0pL2ksIC9eKD86W146XFxuXFxzXFwtXFx7XSspL2ksIC9eKD86XFxzKjpbXjpcXG47XSspL2ksIC9eKD86LS0+KS9pLCAvXig/Oi0tKS9pLCAvXig/Ojo6OikvaSwgL14oPzokKS9pLCAvXig/Oi4pL2ldLFxuICAgICAgY29uZGl0aW9uczogeyBcIkxJTkVcIjogeyBcInJ1bGVzXCI6IFsxNCwgMTVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImNsb3NlX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzE0LCAxNV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYXJnX2RpcmVjdGl2ZVwiOiB7IFwicnVsZXNcIjogWzgsIDksIDE0LCAxNV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFs3LCA4LCAxNCwgMTVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIm9wZW5fZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbNiwgMTQsIDE1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJzdHJ1Y3RcIjogeyBcInJ1bGVzXCI6IFsxNCwgMTUsIDI3LCAzMSwgMzcsIDQ0LCA0NSwgNDYsIDQ3LCA1NiwgNTcsIDU4LCA1OSwgNzMsIDc0LCA3NSwgNzYsIDc3XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJGTE9BVElOR19OT1RFX0lEXCI6IHsgXCJydWxlc1wiOiBbNjZdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIkZMT0FUSU5HX05PVEVcIjogeyBcInJ1bGVzXCI6IFs2MywgNjQsIDY1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJOT1RFX1RFWFRcIjogeyBcInJ1bGVzXCI6IFs2OCwgNjldLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIk5PVEVfSURcIjogeyBcInJ1bGVzXCI6IFs2N10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiTk9URVwiOiB7IFwicnVsZXNcIjogWzYwLCA2MSwgNjJdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIkNMQVNTX1NUWUxFXCI6IHsgXCJydWxlc1wiOiBbMzNdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIkNMQVNTXCI6IHsgXCJydWxlc1wiOiBbMzJdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIkNMQVNTREVGSURcIjogeyBcInJ1bGVzXCI6IFszMF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiQ0xBU1NERUZcIjogeyBcInJ1bGVzXCI6IFsyOCwgMjldLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjcl9tdWx0aWxpbmVcIjogeyBcInJ1bGVzXCI6IFsyNSwgMjZdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY19kZXNjclwiOiB7IFwicnVsZXNcIjogWzIzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhY2NfdGl0bGVcIjogeyBcInJ1bGVzXCI6IFsyMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiU0NBTEVcIjogeyBcInJ1bGVzXCI6IFsxOCwgMTksIDM1LCAzNl0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiQUxJQVNcIjogeyBcInJ1bGVzXCI6IFtdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIlNUQVRFX0lEXCI6IHsgXCJydWxlc1wiOiBbNTBdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIlNUQVRFX1NUUklOR1wiOiB7IFwicnVsZXNcIjogWzUxLCA1Ml0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiRk9SS19TVEFURVwiOiB7IFwicnVsZXNcIjogW10sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiU1RBVEVcIjogeyBcInJ1bGVzXCI6IFsxNCwgMTUsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ4LCA0OSwgNTMsIDU0LCA1NV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiSURcIjogeyBcInJ1bGVzXCI6IFsxNCwgMTVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcIklOSVRJQUxcIjogeyBcInJ1bGVzXCI6IFswLCAxLCAyLCAzLCA0LCA1LCAxMCwgMTEsIDEyLCAxMywgMTUsIDE2LCAxNywgMjAsIDIyLCAyNCwgMjcsIDMxLCAzNCwgMzcsIDU1LCA1OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc4LCA3OSwgODBdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xuY29uc3QgREVGQVVMVF9ESUFHUkFNX0RJUkVDVElPTiA9IFwiTFJcIjtcbmNvbnN0IERFRkFVTFRfTkVTVEVEX0RPQ19ESVIgPSBcIlRCXCI7XG5jb25zdCBTVE1UX1NUQVRFID0gXCJzdGF0ZVwiO1xuY29uc3QgU1RNVF9SRUxBVElPTiA9IFwicmVsYXRpb25cIjtcbmNvbnN0IFNUTVRfQ0xBU1NERUYgPSBcImNsYXNzRGVmXCI7XG5jb25zdCBTVE1UX0FQUExZQ0xBU1MgPSBcImFwcGx5Q2xhc3NcIjtcbmNvbnN0IERFRkFVTFRfU1RBVEVfVFlQRSA9IFwiZGVmYXVsdFwiO1xuY29uc3QgRElWSURFUl9UWVBFID0gXCJkaXZpZGVyXCI7XG5jb25zdCBTVEFSVF9OT0RFID0gXCJbKl1cIjtcbmNvbnN0IFNUQVJUX1RZUEUgPSBcInN0YXJ0XCI7XG5jb25zdCBFTkRfTk9ERSA9IFNUQVJUX05PREU7XG5jb25zdCBFTkRfVFlQRSA9IFwiZW5kXCI7XG5jb25zdCBDT0xPUl9LRVlXT1JEID0gXCJjb2xvclwiO1xuY29uc3QgRklMTF9LRVlXT1JEID0gXCJmaWxsXCI7XG5jb25zdCBCR19GSUxMID0gXCJiZ0ZpbGxcIjtcbmNvbnN0IFNUWUxFQ0xBU1NfU0VQID0gXCIsXCI7XG5mdW5jdGlvbiBuZXdDbGFzc2VzTGlzdCgpIHtcbiAgcmV0dXJuIHt9O1xufVxubGV0IGRpcmVjdGlvbiA9IERFRkFVTFRfRElBR1JBTV9ESVJFQ1RJT047XG5sZXQgcm9vdERvYyA9IFtdO1xubGV0IGNsYXNzZXMgPSBuZXdDbGFzc2VzTGlzdCgpO1xuY29uc3QgbmV3RG9jID0gKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHJlbGF0aW9uczogW10sXG4gICAgc3RhdGVzOiB7fSxcbiAgICBkb2N1bWVudHM6IHt9XG4gIH07XG59O1xubGV0IGRvY3VtZW50cyA9IHtcbiAgcm9vdDogbmV3RG9jKClcbn07XG5sZXQgY3VycmVudERvY3VtZW50ID0gZG9jdW1lbnRzLnJvb3Q7XG5sZXQgc3RhcnRFbmRDb3VudCA9IDA7XG5sZXQgZGl2aWRlckNudCA9IDA7XG5jb25zdCBsaW5lVHlwZSA9IHtcbiAgTElORTogMCxcbiAgRE9UVEVEX0xJTkU6IDFcbn07XG5jb25zdCByZWxhdGlvblR5cGUgPSB7XG4gIEFHR1JFR0FUSU9OOiAwLFxuICBFWFRFTlNJT046IDEsXG4gIENPTVBPU0lUSU9OOiAyLFxuICBERVBFTkRFTkNZOiAzXG59O1xuY29uc3QgY2xvbmUgPSAobykgPT4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvKSk7XG5jb25zdCBwYXJzZURpcmVjdGl2ZSA9IGZ1bmN0aW9uKHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSkge1xuICBtZXJtYWlkQVBJLnBhcnNlRGlyZWN0aXZlKHRoaXMsIHN0YXRlbWVudCwgY29udGV4dCwgdHlwZSk7XG59O1xuY29uc3Qgc2V0Um9vdERvYyA9IChvKSA9PiB7XG4gIGxvZy5pbmZvKFwiU2V0dGluZyByb290IGRvY1wiLCBvKTtcbiAgcm9vdERvYyA9IG87XG59O1xuY29uc3QgZ2V0Um9vdERvYyA9ICgpID0+IHJvb3REb2M7XG5jb25zdCBkb2NUcmFuc2xhdG9yID0gKHBhcmVudCwgbm9kZSwgZmlyc3QpID0+IHtcbiAgaWYgKG5vZGUuc3RtdCA9PT0gU1RNVF9SRUxBVElPTikge1xuICAgIGRvY1RyYW5zbGF0b3IocGFyZW50LCBub2RlLnN0YXRlMSwgdHJ1ZSk7XG4gICAgZG9jVHJhbnNsYXRvcihwYXJlbnQsIG5vZGUuc3RhdGUyLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKG5vZGUuc3RtdCA9PT0gU1RNVF9TVEFURSkge1xuICAgICAgaWYgKG5vZGUuaWQgPT09IFwiWypdXCIpIHtcbiAgICAgICAgbm9kZS5pZCA9IGZpcnN0ID8gcGFyZW50LmlkICsgXCJfc3RhcnRcIiA6IHBhcmVudC5pZCArIFwiX2VuZFwiO1xuICAgICAgICBub2RlLnN0YXJ0ID0gZmlyc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmlkID0gbm9kZS5pZC50cmltKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChub2RlLmRvYykge1xuICAgICAgY29uc3QgZG9jID0gW107XG4gICAgICBsZXQgY3VycmVudERvYyA9IFtdO1xuICAgICAgbGV0IGk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZS5kb2MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG5vZGUuZG9jW2ldLnR5cGUgPT09IERJVklERVJfVFlQRSkge1xuICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBjbG9uZShub2RlLmRvY1tpXSk7XG4gICAgICAgICAgbmV3Tm9kZS5kb2MgPSBjbG9uZShjdXJyZW50RG9jKTtcbiAgICAgICAgICBkb2MucHVzaChuZXdOb2RlKTtcbiAgICAgICAgICBjdXJyZW50RG9jID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudERvYy5wdXNoKG5vZGUuZG9jW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGRvYy5sZW5ndGggPiAwICYmIGN1cnJlbnREb2MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0ge1xuICAgICAgICAgIHN0bXQ6IFNUTVRfU1RBVEUsXG4gICAgICAgICAgaWQ6IGdlbmVyYXRlSWQoKSxcbiAgICAgICAgICB0eXBlOiBcImRpdmlkZXJcIixcbiAgICAgICAgICBkb2M6IGNsb25lKGN1cnJlbnREb2MpXG4gICAgICAgIH07XG4gICAgICAgIGRvYy5wdXNoKGNsb25lKG5ld05vZGUpKTtcbiAgICAgICAgbm9kZS5kb2MgPSBkb2M7XG4gICAgICB9XG4gICAgICBub2RlLmRvYy5mb3JFYWNoKChkb2NOb2RlKSA9PiBkb2NUcmFuc2xhdG9yKG5vZGUsIGRvY05vZGUsIHRydWUpKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCBnZXRSb290RG9jVjIgPSAoKSA9PiB7XG4gIGRvY1RyYW5zbGF0b3IoeyBpZDogXCJyb290XCIgfSwgeyBpZDogXCJyb290XCIsIGRvYzogcm9vdERvYyB9LCB0cnVlKTtcbiAgcmV0dXJuIHsgaWQ6IFwicm9vdFwiLCBkb2M6IHJvb3REb2MgfTtcbn07XG5jb25zdCBleHRyYWN0ID0gKF9kb2MpID0+IHtcbiAgbGV0IGRvYztcbiAgaWYgKF9kb2MuZG9jKSB7XG4gICAgZG9jID0gX2RvYy5kb2M7XG4gIH0gZWxzZSB7XG4gICAgZG9jID0gX2RvYztcbiAgfVxuICBsb2cuaW5mbyhkb2MpO1xuICBjbGVhcih0cnVlKTtcbiAgbG9nLmluZm8oXCJFeHRyYWN0XCIsIGRvYyk7XG4gIGRvYy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgc3dpdGNoIChpdGVtLnN0bXQpIHtcbiAgICAgIGNhc2UgU1RNVF9TVEFURTpcbiAgICAgICAgYWRkU3RhdGUoXG4gICAgICAgICAgaXRlbS5pZC50cmltKCksXG4gICAgICAgICAgaXRlbS50eXBlLFxuICAgICAgICAgIGl0ZW0uZG9jLFxuICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sXG4gICAgICAgICAgaXRlbS5ub3RlLFxuICAgICAgICAgIGl0ZW0uY2xhc3NlcyxcbiAgICAgICAgICBpdGVtLnN0eWxlcyxcbiAgICAgICAgICBpdGVtLnRleHRTdHlsZXNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNUTVRfUkVMQVRJT046XG4gICAgICAgIGFkZFJlbGF0aW9uKGl0ZW0uc3RhdGUxLCBpdGVtLnN0YXRlMiwgaXRlbS5kZXNjcmlwdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTVE1UX0NMQVNTREVGOlxuICAgICAgICBhZGRTdHlsZUNsYXNzKGl0ZW0uaWQudHJpbSgpLCBpdGVtLmNsYXNzZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1RNVF9BUFBMWUNMQVNTOlxuICAgICAgICBzZXRDc3NDbGFzcyhpdGVtLmlkLnRyaW0oKSwgaXRlbS5zdHlsZUNsYXNzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbn07XG5jb25zdCBhZGRTdGF0ZSA9IGZ1bmN0aW9uKGlkLCB0eXBlID0gREVGQVVMVF9TVEFURV9UWVBFLCBkb2MgPSBudWxsLCBkZXNjciA9IG51bGwsIG5vdGUgPSBudWxsLCBjbGFzc2VzMiA9IG51bGwsIHN0eWxlczIgPSBudWxsLCB0ZXh0U3R5bGVzID0gbnVsbCkge1xuICBjb25zdCB0cmltbWVkSWQgPSBpZCA9PSBudWxsID8gdm9pZCAwIDogaWQudHJpbSgpO1xuICBpZiAoY3VycmVudERvY3VtZW50LnN0YXRlc1t0cmltbWVkSWRdID09PSB2b2lkIDApIHtcbiAgICBsb2cuaW5mbyhcIkFkZGluZyBzdGF0ZSBcIiwgdHJpbW1lZElkLCBkZXNjcik7XG4gICAgY3VycmVudERvY3VtZW50LnN0YXRlc1t0cmltbWVkSWRdID0ge1xuICAgICAgaWQ6IHRyaW1tZWRJZCxcbiAgICAgIGRlc2NyaXB0aW9uczogW10sXG4gICAgICB0eXBlLFxuICAgICAgZG9jLFxuICAgICAgbm90ZSxcbiAgICAgIGNsYXNzZXM6IFtdLFxuICAgICAgc3R5bGVzOiBbXSxcbiAgICAgIHRleHRTdHlsZXM6IFtdXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWN1cnJlbnREb2N1bWVudC5zdGF0ZXNbdHJpbW1lZElkXS5kb2MpIHtcbiAgICAgIGN1cnJlbnREb2N1bWVudC5zdGF0ZXNbdHJpbW1lZElkXS5kb2MgPSBkb2M7XG4gICAgfVxuICAgIGlmICghY3VycmVudERvY3VtZW50LnN0YXRlc1t0cmltbWVkSWRdLnR5cGUpIHtcbiAgICAgIGN1cnJlbnREb2N1bWVudC5zdGF0ZXNbdHJpbW1lZElkXS50eXBlID0gdHlwZTtcbiAgICB9XG4gIH1cbiAgaWYgKGRlc2NyKSB7XG4gICAgbG9nLmluZm8oXCJTZXR0aW5nIHN0YXRlIGRlc2NyaXB0aW9uXCIsIHRyaW1tZWRJZCwgZGVzY3IpO1xuICAgIGlmICh0eXBlb2YgZGVzY3IgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGFkZERlc2NyaXB0aW9uKHRyaW1tZWRJZCwgZGVzY3IudHJpbSgpKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBkZXNjciA9PT0gXCJvYmplY3RcIikge1xuICAgICAgZGVzY3IuZm9yRWFjaCgoZGVzKSA9PiBhZGREZXNjcmlwdGlvbih0cmltbWVkSWQsIGRlcy50cmltKCkpKTtcbiAgICB9XG4gIH1cbiAgaWYgKG5vdGUpIHtcbiAgICBjdXJyZW50RG9jdW1lbnQuc3RhdGVzW3RyaW1tZWRJZF0ubm90ZSA9IG5vdGU7XG4gICAgY3VycmVudERvY3VtZW50LnN0YXRlc1t0cmltbWVkSWRdLm5vdGUudGV4dCA9IGNvbW1vbi5zYW5pdGl6ZVRleHQoXG4gICAgICBjdXJyZW50RG9jdW1lbnQuc3RhdGVzW3RyaW1tZWRJZF0ubm90ZS50ZXh0LFxuICAgICAgZ2V0Q29uZmlnKClcbiAgICApO1xuICB9XG4gIGlmIChjbGFzc2VzMikge1xuICAgIGxvZy5pbmZvKFwiU2V0dGluZyBzdGF0ZSBjbGFzc2VzXCIsIHRyaW1tZWRJZCwgY2xhc3NlczIpO1xuICAgIGNvbnN0IGNsYXNzZXNMaXN0ID0gdHlwZW9mIGNsYXNzZXMyID09PSBcInN0cmluZ1wiID8gW2NsYXNzZXMyXSA6IGNsYXNzZXMyO1xuICAgIGNsYXNzZXNMaXN0LmZvckVhY2goKGtsYXNzKSA9PiBzZXRDc3NDbGFzcyh0cmltbWVkSWQsIGtsYXNzLnRyaW0oKSkpO1xuICB9XG4gIGlmIChzdHlsZXMyKSB7XG4gICAgbG9nLmluZm8oXCJTZXR0aW5nIHN0YXRlIHN0eWxlc1wiLCB0cmltbWVkSWQsIHN0eWxlczIpO1xuICAgIGNvbnN0IHN0eWxlc0xpc3QgPSB0eXBlb2Ygc3R5bGVzMiA9PT0gXCJzdHJpbmdcIiA/IFtzdHlsZXMyXSA6IHN0eWxlczI7XG4gICAgc3R5bGVzTGlzdC5mb3JFYWNoKChzdHlsZSkgPT4gc2V0U3R5bGUodHJpbW1lZElkLCBzdHlsZS50cmltKCkpKTtcbiAgfVxuICBpZiAodGV4dFN0eWxlcykge1xuICAgIGxvZy5pbmZvKFwiU2V0dGluZyBzdGF0ZSBzdHlsZXNcIiwgdHJpbW1lZElkLCBzdHlsZXMyKTtcbiAgICBjb25zdCB0ZXh0U3R5bGVzTGlzdCA9IHR5cGVvZiB0ZXh0U3R5bGVzID09PSBcInN0cmluZ1wiID8gW3RleHRTdHlsZXNdIDogdGV4dFN0eWxlcztcbiAgICB0ZXh0U3R5bGVzTGlzdC5mb3JFYWNoKCh0ZXh0U3R5bGUpID0+IHNldFRleHRTdHlsZSh0cmltbWVkSWQsIHRleHRTdHlsZS50cmltKCkpKTtcbiAgfVxufTtcbmNvbnN0IGNsZWFyID0gZnVuY3Rpb24oc2F2ZUNvbW1vbikge1xuICBkb2N1bWVudHMgPSB7XG4gICAgcm9vdDogbmV3RG9jKClcbiAgfTtcbiAgY3VycmVudERvY3VtZW50ID0gZG9jdW1lbnRzLnJvb3Q7XG4gIHN0YXJ0RW5kQ291bnQgPSAwO1xuICBjbGFzc2VzID0gbmV3Q2xhc3Nlc0xpc3QoKTtcbiAgaWYgKCFzYXZlQ29tbW9uKSB7XG4gICAgY2xlYXIkMSgpO1xuICB9XG59O1xuY29uc3QgZ2V0U3RhdGUgPSBmdW5jdGlvbihpZCkge1xuICByZXR1cm4gY3VycmVudERvY3VtZW50LnN0YXRlc1tpZF07XG59O1xuY29uc3QgZ2V0U3RhdGVzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjdXJyZW50RG9jdW1lbnQuc3RhdGVzO1xufTtcbmNvbnN0IGxvZ0RvY3VtZW50cyA9IGZ1bmN0aW9uKCkge1xuICBsb2cuaW5mbyhcIkRvY3VtZW50cyA9IFwiLCBkb2N1bWVudHMpO1xufTtcbmNvbnN0IGdldFJlbGF0aW9ucyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY3VycmVudERvY3VtZW50LnJlbGF0aW9ucztcbn07XG5mdW5jdGlvbiBzdGFydElkSWZOZWVkZWQoaWQgPSBcIlwiKSB7XG4gIGxldCBmaXhlZElkID0gaWQ7XG4gIGlmIChpZCA9PT0gU1RBUlRfTk9ERSkge1xuICAgIHN0YXJ0RW5kQ291bnQrKztcbiAgICBmaXhlZElkID0gYCR7U1RBUlRfVFlQRX0ke3N0YXJ0RW5kQ291bnR9YDtcbiAgfVxuICByZXR1cm4gZml4ZWRJZDtcbn1cbmZ1bmN0aW9uIHN0YXJ0VHlwZUlmTmVlZGVkKGlkID0gXCJcIiwgdHlwZSA9IERFRkFVTFRfU1RBVEVfVFlQRSkge1xuICByZXR1cm4gaWQgPT09IFNUQVJUX05PREUgPyBTVEFSVF9UWVBFIDogdHlwZTtcbn1cbmZ1bmN0aW9uIGVuZElkSWZOZWVkZWQoaWQgPSBcIlwiKSB7XG4gIGxldCBmaXhlZElkID0gaWQ7XG4gIGlmIChpZCA9PT0gRU5EX05PREUpIHtcbiAgICBzdGFydEVuZENvdW50Kys7XG4gICAgZml4ZWRJZCA9IGAke0VORF9UWVBFfSR7c3RhcnRFbmRDb3VudH1gO1xuICB9XG4gIHJldHVybiBmaXhlZElkO1xufVxuZnVuY3Rpb24gZW5kVHlwZUlmTmVlZGVkKGlkID0gXCJcIiwgdHlwZSA9IERFRkFVTFRfU1RBVEVfVFlQRSkge1xuICByZXR1cm4gaWQgPT09IEVORF9OT0RFID8gRU5EX1RZUEUgOiB0eXBlO1xufVxuZnVuY3Rpb24gYWRkUmVsYXRpb25PYmpzKGl0ZW0xLCBpdGVtMiwgcmVsYXRpb25UaXRsZSkge1xuICBsZXQgaWQxID0gc3RhcnRJZElmTmVlZGVkKGl0ZW0xLmlkLnRyaW0oKSk7XG4gIGxldCB0eXBlMSA9IHN0YXJ0VHlwZUlmTmVlZGVkKGl0ZW0xLmlkLnRyaW0oKSwgaXRlbTEudHlwZSk7XG4gIGxldCBpZDIgPSBzdGFydElkSWZOZWVkZWQoaXRlbTIuaWQudHJpbSgpKTtcbiAgbGV0IHR5cGUyID0gc3RhcnRUeXBlSWZOZWVkZWQoaXRlbTIuaWQudHJpbSgpLCBpdGVtMi50eXBlKTtcbiAgYWRkU3RhdGUoXG4gICAgaWQxLFxuICAgIHR5cGUxLFxuICAgIGl0ZW0xLmRvYyxcbiAgICBpdGVtMS5kZXNjcmlwdGlvbixcbiAgICBpdGVtMS5ub3RlLFxuICAgIGl0ZW0xLmNsYXNzZXMsXG4gICAgaXRlbTEuc3R5bGVzLFxuICAgIGl0ZW0xLnRleHRTdHlsZXNcbiAgKTtcbiAgYWRkU3RhdGUoXG4gICAgaWQyLFxuICAgIHR5cGUyLFxuICAgIGl0ZW0yLmRvYyxcbiAgICBpdGVtMi5kZXNjcmlwdGlvbixcbiAgICBpdGVtMi5ub3RlLFxuICAgIGl0ZW0yLmNsYXNzZXMsXG4gICAgaXRlbTIuc3R5bGVzLFxuICAgIGl0ZW0yLnRleHRTdHlsZXNcbiAgKTtcbiAgY3VycmVudERvY3VtZW50LnJlbGF0aW9ucy5wdXNoKHtcbiAgICBpZDEsXG4gICAgaWQyLFxuICAgIHJlbGF0aW9uVGl0bGU6IGNvbW1vbi5zYW5pdGl6ZVRleHQocmVsYXRpb25UaXRsZSwgZ2V0Q29uZmlnKCkpXG4gIH0pO1xufVxuY29uc3QgYWRkUmVsYXRpb24gPSBmdW5jdGlvbihpdGVtMSwgaXRlbTIsIHRpdGxlKSB7XG4gIGlmICh0eXBlb2YgaXRlbTEgPT09IFwib2JqZWN0XCIpIHtcbiAgICBhZGRSZWxhdGlvbk9ianMoaXRlbTEsIGl0ZW0yLCB0aXRsZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgaWQxID0gc3RhcnRJZElmTmVlZGVkKGl0ZW0xLnRyaW0oKSk7XG4gICAgY29uc3QgdHlwZTEgPSBzdGFydFR5cGVJZk5lZWRlZChpdGVtMSk7XG4gICAgY29uc3QgaWQyID0gZW5kSWRJZk5lZWRlZChpdGVtMi50cmltKCkpO1xuICAgIGNvbnN0IHR5cGUyID0gZW5kVHlwZUlmTmVlZGVkKGl0ZW0yKTtcbiAgICBhZGRTdGF0ZShpZDEsIHR5cGUxKTtcbiAgICBhZGRTdGF0ZShpZDIsIHR5cGUyKTtcbiAgICBjdXJyZW50RG9jdW1lbnQucmVsYXRpb25zLnB1c2goe1xuICAgICAgaWQxLFxuICAgICAgaWQyLFxuICAgICAgdGl0bGU6IGNvbW1vbi5zYW5pdGl6ZVRleHQodGl0bGUsIGdldENvbmZpZygpKVxuICAgIH0pO1xuICB9XG59O1xuY29uc3QgYWRkRGVzY3JpcHRpb24gPSBmdW5jdGlvbihpZCwgZGVzY3IpIHtcbiAgY29uc3QgdGhlU3RhdGUgPSBjdXJyZW50RG9jdW1lbnQuc3RhdGVzW2lkXTtcbiAgY29uc3QgX2Rlc2NyID0gZGVzY3Iuc3RhcnRzV2l0aChcIjpcIikgPyBkZXNjci5yZXBsYWNlKFwiOlwiLCBcIlwiKS50cmltKCkgOiBkZXNjcjtcbiAgdGhlU3RhdGUuZGVzY3JpcHRpb25zLnB1c2goY29tbW9uLnNhbml0aXplVGV4dChfZGVzY3IsIGdldENvbmZpZygpKSk7XG59O1xuY29uc3QgY2xlYW51cExhYmVsID0gZnVuY3Rpb24obGFiZWwpIHtcbiAgaWYgKGxhYmVsLnN1YnN0cmluZygwLCAxKSA9PT0gXCI6XCIpIHtcbiAgICByZXR1cm4gbGFiZWwuc3Vic3RyKDIpLnRyaW0oKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGFiZWwudHJpbSgpO1xuICB9XG59O1xuY29uc3QgZ2V0RGl2aWRlcklkID0gKCkgPT4ge1xuICBkaXZpZGVyQ250Kys7XG4gIHJldHVybiBcImRpdmlkZXItaWQtXCIgKyBkaXZpZGVyQ250O1xufTtcbmNvbnN0IGFkZFN0eWxlQ2xhc3MgPSBmdW5jdGlvbihpZCwgc3R5bGVBdHRyaWJ1dGVzID0gXCJcIikge1xuICBpZiAoY2xhc3Nlc1tpZF0gPT09IHZvaWQgMCkge1xuICAgIGNsYXNzZXNbaWRdID0geyBpZCwgc3R5bGVzOiBbXSwgdGV4dFN0eWxlczogW10gfTtcbiAgfVxuICBjb25zdCBmb3VuZENsYXNzID0gY2xhc3Nlc1tpZF07XG4gIGlmIChzdHlsZUF0dHJpYnV0ZXMgIT09IHZvaWQgMCAmJiBzdHlsZUF0dHJpYnV0ZXMgIT09IG51bGwpIHtcbiAgICBzdHlsZUF0dHJpYnV0ZXMuc3BsaXQoU1RZTEVDTEFTU19TRVApLmZvckVhY2goKGF0dHJpYikgPT4ge1xuICAgICAgY29uc3QgZml4ZWRBdHRyaWIgPSBhdHRyaWIucmVwbGFjZSgvKFteO10qKTsvLCBcIiQxXCIpLnRyaW0oKTtcbiAgICAgIGlmIChhdHRyaWIubWF0Y2goQ09MT1JfS0VZV09SRCkpIHtcbiAgICAgICAgY29uc3QgbmV3U3R5bGUxID0gZml4ZWRBdHRyaWIucmVwbGFjZShGSUxMX0tFWVdPUkQsIEJHX0ZJTEwpO1xuICAgICAgICBjb25zdCBuZXdTdHlsZTIgPSBuZXdTdHlsZTEucmVwbGFjZShDT0xPUl9LRVlXT1JELCBGSUxMX0tFWVdPUkQpO1xuICAgICAgICBmb3VuZENsYXNzLnRleHRTdHlsZXMucHVzaChuZXdTdHlsZTIpO1xuICAgICAgfVxuICAgICAgZm91bmRDbGFzcy5zdHlsZXMucHVzaChmaXhlZEF0dHJpYik7XG4gICAgfSk7XG4gIH1cbn07XG5jb25zdCBnZXRDbGFzc2VzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjbGFzc2VzO1xufTtcbmNvbnN0IHNldENzc0NsYXNzID0gZnVuY3Rpb24oaXRlbUlkcywgY3NzQ2xhc3NOYW1lKSB7XG4gIGl0ZW1JZHMuc3BsaXQoXCIsXCIpLmZvckVhY2goZnVuY3Rpb24oaWQpIHtcbiAgICBsZXQgZm91bmRTdGF0ZSA9IGdldFN0YXRlKGlkKTtcbiAgICBpZiAoZm91bmRTdGF0ZSA9PT0gdm9pZCAwKSB7XG4gICAgICBjb25zdCB0cmltbWVkSWQgPSBpZC50cmltKCk7XG4gICAgICBhZGRTdGF0ZSh0cmltbWVkSWQpO1xuICAgICAgZm91bmRTdGF0ZSA9IGdldFN0YXRlKHRyaW1tZWRJZCk7XG4gICAgfVxuICAgIGZvdW5kU3RhdGUuY2xhc3Nlcy5wdXNoKGNzc0NsYXNzTmFtZSk7XG4gIH0pO1xufTtcbmNvbnN0IHNldFN0eWxlID0gZnVuY3Rpb24oaXRlbUlkLCBzdHlsZVRleHQpIHtcbiAgY29uc3QgaXRlbSA9IGdldFN0YXRlKGl0ZW1JZCk7XG4gIGlmIChpdGVtICE9PSB2b2lkIDApIHtcbiAgICBpdGVtLnRleHRTdHlsZXMucHVzaChzdHlsZVRleHQpO1xuICB9XG59O1xuY29uc3Qgc2V0VGV4dFN0eWxlID0gZnVuY3Rpb24oaXRlbUlkLCBjc3NDbGFzc05hbWUpIHtcbiAgY29uc3QgaXRlbSA9IGdldFN0YXRlKGl0ZW1JZCk7XG4gIGlmIChpdGVtICE9PSB2b2lkIDApIHtcbiAgICBpdGVtLnRleHRTdHlsZXMucHVzaChjc3NDbGFzc05hbWUpO1xuICB9XG59O1xuY29uc3QgZ2V0RGlyZWN0aW9uID0gKCkgPT4gZGlyZWN0aW9uO1xuY29uc3Qgc2V0RGlyZWN0aW9uID0gKGRpcikgPT4ge1xuICBkaXJlY3Rpb24gPSBkaXI7XG59O1xuY29uc3QgdHJpbUNvbG9uID0gKHN0cikgPT4gc3RyICYmIHN0clswXSA9PT0gXCI6XCIgPyBzdHIuc3Vic3RyKDEpLnRyaW0oKSA6IHN0ci50cmltKCk7XG5jb25zdCBkYiA9IHtcbiAgcGFyc2VEaXJlY3RpdmUsXG4gIGdldENvbmZpZzogKCkgPT4gZ2V0Q29uZmlnKCkuc3RhdGUsXG4gIGFkZFN0YXRlLFxuICBjbGVhcixcbiAgZ2V0U3RhdGUsXG4gIGdldFN0YXRlcyxcbiAgZ2V0UmVsYXRpb25zLFxuICBnZXRDbGFzc2VzLFxuICBnZXREaXJlY3Rpb24sXG4gIGFkZFJlbGF0aW9uLFxuICBnZXREaXZpZGVySWQsXG4gIHNldERpcmVjdGlvbixcbiAgY2xlYW51cExhYmVsLFxuICBsaW5lVHlwZSxcbiAgcmVsYXRpb25UeXBlLFxuICBsb2dEb2N1bWVudHMsXG4gIGdldFJvb3REb2MsXG4gIHNldFJvb3REb2MsXG4gIGdldFJvb3REb2NWMixcbiAgZXh0cmFjdCxcbiAgdHJpbUNvbG9uLFxuICBnZXRBY2NUaXRsZSxcbiAgc2V0QWNjVGl0bGUsXG4gIGdldEFjY0Rlc2NyaXB0aW9uLFxuICBzZXRBY2NEZXNjcmlwdGlvbixcbiAgYWRkU3R5bGVDbGFzcyxcbiAgc2V0Q3NzQ2xhc3MsXG4gIGFkZERlc2NyaXB0aW9uLFxuICBzZXREaWFncmFtVGl0bGUsXG4gIGdldERpYWdyYW1UaXRsZVxufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgXG5kZWZzICNzdGF0ZWRpYWdyYW0tYmFyYkVuZCB7XG4gICAgZmlsbDogJHtvcHRpb25zLnRyYW5zaXRpb25Db2xvcn07XG4gICAgc3Ryb2tlOiAke29wdGlvbnMudHJhbnNpdGlvbkNvbG9yfTtcbiAgfVxuZy5zdGF0ZUdyb3VwIHRleHQge1xuICBmaWxsOiAke29wdGlvbnMubm9kZUJvcmRlcn07XG4gIHN0cm9rZTogbm9uZTtcbiAgZm9udC1zaXplOiAxMHB4O1xufVxuZy5zdGF0ZUdyb3VwIHRleHQge1xuICBmaWxsOiAke29wdGlvbnMudGV4dENvbG9yfTtcbiAgc3Ryb2tlOiBub25lO1xuICBmb250LXNpemU6IDEwcHg7XG5cbn1cbmcuc3RhdGVHcm91cCAuc3RhdGUtdGl0bGUge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xuICBmaWxsOiAke29wdGlvbnMuc3RhdGVMYWJlbENvbG9yfTtcbn1cblxuZy5zdGF0ZUdyb3VwIHJlY3Qge1xuICBmaWxsOiAke29wdGlvbnMubWFpbkJrZ307XG4gIHN0cm9rZTogJHtvcHRpb25zLm5vZGVCb3JkZXJ9O1xufVxuXG5nLnN0YXRlR3JvdXAgbGluZSB7XG4gIHN0cm9rZTogJHtvcHRpb25zLmxpbmVDb2xvcn07XG4gIHN0cm9rZS13aWR0aDogMTtcbn1cblxuLnRyYW5zaXRpb24ge1xuICBzdHJva2U6ICR7b3B0aW9ucy50cmFuc2l0aW9uQ29sb3J9O1xuICBzdHJva2Utd2lkdGg6IDE7XG4gIGZpbGw6IG5vbmU7XG59XG5cbi5zdGF0ZUdyb3VwIC5jb21wb3NpdCB7XG4gIGZpbGw6ICR7b3B0aW9ucy5iYWNrZ3JvdW5kfTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4XG59XG5cbi5zdGF0ZUdyb3VwIC5hbHQtY29tcG9zaXQge1xuICBmaWxsOiAjZTBlMGUwO1xuICBib3JkZXItYm90dG9tOiAxcHhcbn1cblxuLnN0YXRlLW5vdGUge1xuICBzdHJva2U6ICR7b3B0aW9ucy5ub3RlQm9yZGVyQ29sb3J9O1xuICBmaWxsOiAke29wdGlvbnMubm90ZUJrZ0NvbG9yfTtcblxuICB0ZXh0IHtcbiAgICBmaWxsOiAke29wdGlvbnMubm90ZVRleHRDb2xvcn07XG4gICAgc3Ryb2tlOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgfVxufVxuXG4uc3RhdGVMYWJlbCAuYm94IHtcbiAgc3Ryb2tlOiBub25lO1xuICBzdHJva2Utd2lkdGg6IDA7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgb3BhY2l0eTogMC41O1xufVxuXG4uZWRnZUxhYmVsIC5sYWJlbCByZWN0IHtcbiAgZmlsbDogJHtvcHRpb25zLmxhYmVsQmFja2dyb3VuZENvbG9yfTtcbiAgb3BhY2l0eTogMC41O1xufVxuLmVkZ2VMYWJlbCAubGFiZWwgdGV4dCB7XG4gIGZpbGw6ICR7b3B0aW9ucy50cmFuc2l0aW9uTGFiZWxDb2xvciB8fCBvcHRpb25zLnRlcnRpYXJ5VGV4dENvbG9yfTtcbn1cbi5sYWJlbCBkaXYgLmVkZ2VMYWJlbCB7XG4gIGNvbG9yOiAke29wdGlvbnMudHJhbnNpdGlvbkxhYmVsQ29sb3IgfHwgb3B0aW9ucy50ZXJ0aWFyeVRleHRDb2xvcn07XG59XG5cbi5zdGF0ZUxhYmVsIHRleHQge1xuICBmaWxsOiAke29wdGlvbnMuc3RhdGVMYWJlbENvbG9yfTtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm5vZGUgY2lyY2xlLnN0YXRlLXN0YXJ0IHtcbiAgZmlsbDogJHtvcHRpb25zLnNwZWNpYWxTdGF0ZUNvbG9yfTtcbiAgc3Ryb2tlOiAke29wdGlvbnMuc3BlY2lhbFN0YXRlQ29sb3J9O1xufVxuXG4ubm9kZSAuZm9yay1qb2luIHtcbiAgZmlsbDogJHtvcHRpb25zLnNwZWNpYWxTdGF0ZUNvbG9yfTtcbiAgc3Ryb2tlOiAke29wdGlvbnMuc3BlY2lhbFN0YXRlQ29sb3J9O1xufVxuXG4ubm9kZSBjaXJjbGUuc3RhdGUtZW5kIHtcbiAgZmlsbDogJHtvcHRpb25zLmlubmVyRW5kQmFja2dyb3VuZH07XG4gIHN0cm9rZTogJHtvcHRpb25zLmJhY2tncm91bmR9O1xuICBzdHJva2Utd2lkdGg6IDEuNVxufVxuLmVuZC1zdGF0ZS1pbm5lciB7XG4gIGZpbGw6ICR7b3B0aW9ucy5jb21wb3NpdGVCYWNrZ3JvdW5kIHx8IG9wdGlvbnMuYmFja2dyb3VuZH07XG4gIC8vIHN0cm9rZTogJHtvcHRpb25zLmJhY2tncm91bmR9O1xuICBzdHJva2Utd2lkdGg6IDEuNVxufVxuXG4ubm9kZSByZWN0IHtcbiAgZmlsbDogJHtvcHRpb25zLnN0YXRlQmtnIHx8IG9wdGlvbnMubWFpbkJrZ307XG4gIHN0cm9rZTogJHtvcHRpb25zLnN0YXRlQm9yZGVyIHx8IG9wdGlvbnMubm9kZUJvcmRlcn07XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuLm5vZGUgcG9seWdvbiB7XG4gIGZpbGw6ICR7b3B0aW9ucy5tYWluQmtnfTtcbiAgc3Ryb2tlOiAke29wdGlvbnMuc3RhdGVCb3JkZXIgfHwgb3B0aW9ucy5ub2RlQm9yZGVyfTs7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuI3N0YXRlZGlhZ3JhbS1iYXJiRW5kIHtcbiAgZmlsbDogJHtvcHRpb25zLmxpbmVDb2xvcn07XG59XG5cbi5zdGF0ZWRpYWdyYW0tY2x1c3RlciByZWN0IHtcbiAgZmlsbDogJHtvcHRpb25zLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZH07XG4gIHN0cm9rZTogJHtvcHRpb25zLnN0YXRlQm9yZGVyIHx8IG9wdGlvbnMubm9kZUJvcmRlcn07XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4uY2x1c3Rlci1sYWJlbCwgLm5vZGVMYWJlbCB7XG4gIGNvbG9yOiAke29wdGlvbnMuc3RhdGVMYWJlbENvbG9yfTtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3Qub3V0ZXIge1xuICByeDogNXB4O1xuICByeTogNXB4O1xufVxuLnN0YXRlZGlhZ3JhbS1zdGF0ZSAuZGl2aWRlciB7XG4gIHN0cm9rZTogJHtvcHRpb25zLnN0YXRlQm9yZGVyIHx8IG9wdGlvbnMubm9kZUJvcmRlcn07XG59XG5cbi5zdGF0ZWRpYWdyYW0tc3RhdGUgLnRpdGxlLXN0YXRlIHtcbiAgcng6IDVweDtcbiAgcnk6IDVweDtcbn1cbi5zdGF0ZWRpYWdyYW0tY2x1c3Rlci5zdGF0ZWRpYWdyYW0tY2x1c3RlciAuaW5uZXIge1xuICBmaWxsOiAke29wdGlvbnMuY29tcG9zaXRlQmFja2dyb3VuZCB8fCBvcHRpb25zLmJhY2tncm91bmR9O1xufVxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyLnN0YXRlZGlhZ3JhbS1jbHVzdGVyLWFsdCAuaW5uZXIge1xuICBmaWxsOiAke29wdGlvbnMuYWx0QmFja2dyb3VuZCA/IG9wdGlvbnMuYWx0QmFja2dyb3VuZCA6IFwiI2VmZWZlZlwifTtcbn1cblxuLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIC5pbm5lciB7XG4gIHJ4OjA7XG4gIHJ5OjA7XG59XG5cbi5zdGF0ZWRpYWdyYW0tc3RhdGUgcmVjdC5iYXNpYyB7XG4gIHJ4OiA1cHg7XG4gIHJ5OiA1cHg7XG59XG4uc3RhdGVkaWFncmFtLXN0YXRlIHJlY3QuZGl2aWRlciB7XG4gIHN0cm9rZS1kYXNoYXJyYXk6IDEwLDEwO1xuICBmaWxsOiAke29wdGlvbnMuYWx0QmFja2dyb3VuZCA/IG9wdGlvbnMuYWx0QmFja2dyb3VuZCA6IFwiI2VmZWZlZlwifTtcbn1cblxuLm5vdGUtZWRnZSB7XG4gIHN0cm9rZS1kYXNoYXJyYXk6IDU7XG59XG5cbi5zdGF0ZWRpYWdyYW0tbm90ZSByZWN0IHtcbiAgZmlsbDogJHtvcHRpb25zLm5vdGVCa2dDb2xvcn07XG4gIHN0cm9rZTogJHtvcHRpb25zLm5vdGVCb3JkZXJDb2xvcn07XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICByeDogMDtcbiAgcnk6IDA7XG59XG4uc3RhdGVkaWFncmFtLW5vdGUgcmVjdCB7XG4gIGZpbGw6ICR7b3B0aW9ucy5ub3RlQmtnQ29sb3J9O1xuICBzdHJva2U6ICR7b3B0aW9ucy5ub3RlQm9yZGVyQ29sb3J9O1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgcng6IDA7XG4gIHJ5OiAwO1xufVxuXG4uc3RhdGVkaWFncmFtLW5vdGUgdGV4dCB7XG4gIGZpbGw6ICR7b3B0aW9ucy5ub3RlVGV4dENvbG9yfTtcbn1cblxuLnN0YXRlZGlhZ3JhbS1ub3RlIC5ub2RlTGFiZWwge1xuICBjb2xvcjogJHtvcHRpb25zLm5vdGVUZXh0Q29sb3J9O1xufVxuLnN0YXRlZGlhZ3JhbSAuZWRnZUxhYmVsIHtcbiAgY29sb3I6IHJlZDsgLy8gJHtvcHRpb25zLm5vdGVUZXh0Q29sb3J9O1xufVxuXG4jZGVwZW5kZW5jeVN0YXJ0LCAjZGVwZW5kZW5jeUVuZCB7XG4gIGZpbGw6ICR7b3B0aW9ucy5saW5lQ29sb3J9O1xuICBzdHJva2U6ICR7b3B0aW9ucy5saW5lQ29sb3J9O1xuICBzdHJva2Utd2lkdGg6IDE7XG59XG5cbi5zdGF0ZWRpYWdyYW1UaXRsZVRleHQge1xuICB0ZXh0LWFuY2hvcjogbWlkZGxlO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZpbGw6ICR7b3B0aW9ucy50ZXh0Q29sb3J9O1xufVxuYDtcbmNvbnN0IHN0eWxlcyA9IGdldFN0eWxlcztcbmV4cG9ydCB7XG4gIERFRkFVTFRfU1RBVEVfVFlQRSBhcyBELFxuICBTVE1UX1JFTEFUSU9OIGFzIFMsXG4gIERJVklERVJfVFlQRSBhcyBhLFxuICBTVE1UX1NUQVRFIGFzIGIsXG4gIERFRkFVTFRfTkVTVEVEX0RPQ19ESVIgYXMgYyxcbiAgZGIgYXMgZCxcbiAgcGFyc2VyJDEgYXMgcCxcbiAgc3R5bGVzIGFzIHNcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/styles-fa41df25.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/svgDraw-0fcc813d.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/svgDraw-0fcc813d.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"p\": () => (/* binding */ parseMember),\n/* harmony export */ \"s\": () => (/* binding */ svgDraw)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n\n\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation, conf, diagObj) {\n const getRelationType = function(type) {\n switch (type) {\n case diagObj.db.relationType.AGGREGATION:\n return \"aggregation\";\n case diagObj.db.relationType.EXTENSION:\n return \"extension\";\n case diagObj.db.relationType.COMPOSITION:\n return \"composition\";\n case diagObj.db.relationType.DEPENDENCY:\n return \"dependency\";\n case diagObj.db.relationType.LOLLIPOP:\n return \"lollipop\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_0__.line)().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_0__.curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"relation\");\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n if (relation.relation.lineType == 1) {\n svgPath.attr(\"class\", \"relation dashed-line\");\n }\n if (relation.relation.lineType == 10) {\n svgPath.attr(\"class\", \"relation dotted-line\");\n }\n if (relation.relation.type1 !== \"none\") {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type1) + \"Start)\"\n );\n }\n if (relation.relation.type2 !== \"none\") {\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type2) + \"End)\"\n );\n }\n let x, y;\n const l = path.points.length;\n let labelPosition = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcCardinalityPosition(\n relation.relation.type1 !== \"none\",\n path.points,\n path.points[0]\n );\n let cardinality_2_point = _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.u.calcCardinalityPosition(\n relation.relation.type2 !== \"none\",\n path.points,\n path.points[l - 1]\n );\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"cardinality_1_point \" + JSON.stringify(cardinality_1_point));\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"cardinality_2_point \" + JSON.stringify(cardinality_2_point));\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n if (relation.title !== void 0) {\n const g = elem.append(\"g\").attr(\"class\", \"classLabel\");\n const label = g.append(\"text\").attr(\"class\", \"label\").attr(\"x\", x).attr(\"y\", y).attr(\"fill\", \"red\").attr(\"text-anchor\", \"middle\").text(relation.title);\n window.label = label;\n const bounds = label.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", bounds.x - conf.padding / 2).attr(\"y\", bounds.y - conf.padding / 2).attr(\"width\", bounds.width + conf.padding).attr(\"height\", bounds.height + conf.padding);\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.info(\"Rendering relation \" + JSON.stringify(relation));\n if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type1\").attr(\"x\", p1_card_x).attr(\"y\", p1_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle1);\n }\n if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type2\").attr(\"x\", p2_card_x).attr(\"y\", p2_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle2);\n }\n edgeCount++;\n};\nconst drawClass = function(elem, classDef, conf, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"Rendering class \", classDef, conf);\n const id = classDef.id;\n const classInfo = {\n id,\n label: classDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", diagObj.db.lookUpDomId(id)).attr(\"class\", \"classGroup\");\n let title;\n if (classDef.link) {\n title = g.append(\"svg:a\").attr(\"xlink:href\", classDef.link).attr(\"target\", classDef.linkTarget).append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n } else {\n title = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n }\n let isFirst = true;\n classDef.annotations.forEach(function(member) {\n const titleText2 = title.append(\"tspan\").text(\"«\" + member + \"»\");\n if (!isFirst) {\n titleText2.attr(\"dy\", conf.textHeight);\n }\n isFirst = false;\n });\n let classTitleString = getClassTitleString(classDef);\n const classTitle = title.append(\"tspan\").text(classTitleString).attr(\"class\", \"title\");\n if (!isFirst) {\n classTitle.attr(\"dy\", conf.textHeight);\n }\n const titleHeight = title.node().getBBox().height;\n const membersLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin / 2).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin / 2);\n const members = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + conf.dividerMargin + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.members.forEach(function(member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n const membersBox = members.node().getBBox();\n const methodsLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n const methods = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.methods.forEach(function(method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n const classBox = g.node().getBBox();\n var cssClassStr = \" \";\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(\" \");\n }\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", classBox.width + 2 * conf.padding).attr(\"height\", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr(\"class\", cssClassStr);\n const rectWidth = rect.node().getBBox().width;\n title.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n if (classDef.tooltip) {\n title.insert(\"title\").text(classDef.tooltip);\n }\n membersLine.attr(\"x2\", rectWidth);\n methodsLine.attr(\"x2\", rectWidth);\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n return classInfo;\n};\nconst getClassTitleString = function(classDef) {\n let classTitleString = classDef.id;\n if (classDef.type) {\n classTitleString += \"<\" + classDef.type + \">\";\n }\n return classTitleString;\n};\nconst drawNote = function(elem, note, conf, diagObj) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(\"Rendering note \", note, conf);\n const id = note.id;\n const noteInfo = {\n id,\n text: note.text,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"classGroup\");\n let text = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n const lines = JSON.parse(`\"${note.text}\"`).split(\"\\n\");\n lines.forEach(function(line2) {\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.l.debug(`Adding line: ${line2}`);\n text.append(\"tspan\").text(line2).attr(\"class\", \"title\").attr(\"dy\", conf.textHeight);\n });\n const noteBox = g.node().getBBox();\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", noteBox.width + 2 * conf.padding).attr(\n \"height\",\n noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin\n );\n const rectWidth = rect.node().getBBox().width;\n text.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n noteInfo.width = rectWidth;\n noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;\n return noteInfo;\n};\nconst parseMember = function(text) {\n let displayText = \"\";\n let cssStyle = \"\";\n let returnType = \"\";\n let visibility = \"\";\n let firstChar = text.substring(0, 1);\n let lastChar = text.substring(text.length - 1, text.length);\n if (firstChar.match(/[#+~-]/)) {\n visibility = firstChar;\n }\n let noClassifierRe = /[\\s\\w)~]/;\n if (!lastChar.match(noClassifierRe)) {\n cssStyle = parseClassifier(lastChar);\n }\n const startIndex = visibility === \"\" ? 0 : 1;\n let endIndex = cssStyle === \"\" ? text.length : text.length - 1;\n text = text.substring(startIndex, endIndex);\n const methodStart = text.indexOf(\"(\");\n const methodEnd = text.indexOf(\")\");\n const isMethod = methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length;\n if (isMethod) {\n let methodName = text.substring(0, methodStart).trim();\n const parameters = text.substring(methodStart + 1, methodEnd);\n displayText = visibility + methodName + \"(\" + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.x)(parameters.trim()) + \")\";\n if (methodEnd < text.length) {\n let potentialClassifier = text.substring(methodEnd + 1, methodEnd + 2);\n if (cssStyle === \"\" && !potentialClassifier.match(noClassifierRe)) {\n cssStyle = parseClassifier(potentialClassifier);\n returnType = text.substring(methodEnd + 2).trim();\n } else {\n returnType = text.substring(methodEnd + 1).trim();\n }\n if (returnType !== \"\") {\n if (returnType.charAt(0) === \":\") {\n returnType = returnType.substring(1).trim();\n }\n returnType = \" : \" + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.x)(returnType);\n displayText += returnType;\n }\n }\n } else {\n displayText = visibility + (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_1__.x)(text);\n }\n return {\n displayText,\n cssStyle\n };\n};\nconst addTspan = function(textEl, txt, isFirst, conf) {\n let member = parseMember(txt);\n const tSpan = textEl.append(\"tspan\").attr(\"x\", conf.padding).text(member.displayText);\n if (member.cssStyle !== \"\") {\n tSpan.attr(\"style\", member.cssStyle);\n }\n if (!isFirst) {\n tSpan.attr(\"dy\", conf.textHeight);\n }\n};\nconst parseClassifier = function(classifier) {\n switch (classifier) {\n case \"*\":\n return \"font-style:italic;\";\n case \"$\":\n return \"text-decoration:underline;\";\n default:\n return \"\";\n }\n};\nconst svgDraw = {\n getClassTitleString,\n drawClass,\n drawEdge,\n drawNote,\n parseMember\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdmdEcmF3LTBmY2M4MTNkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBc0M7QUFDK0M7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHdDQUFJO0FBQzNCO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRyxRQUFRLDBDQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxRUFBdUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwyRUFBNkI7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsMkVBQTZCO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx5REFBUztBQUNiLElBQUkseURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdEQUFRO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseURBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLFVBQVU7QUFDekM7QUFDQSxJQUFJLHlEQUFTLGlCQUFpQixNQUFNO0FBQ3BDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELHVEQUFpQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1REFBaUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLCtCQUErQix1REFBaUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3Qvc3ZnRHJhdy0wZmNjODEzZC5qcz9kNDViIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxpbmUsIGN1cnZlQmFzaXMgfSBmcm9tIFwiZDNcIjtcbmltcG9ydCB7IHUgYXMgdXRpbHMsIGwgYXMgbG9nLCB4IGFzIHBhcnNlR2VuZXJpY1R5cGVzIH0gZnJvbSBcIi4vbWVybWFpZC1iMGFkMmRlMS5qc1wiO1xubGV0IGVkZ2VDb3VudCA9IDA7XG5jb25zdCBkcmF3RWRnZSA9IGZ1bmN0aW9uKGVsZW0sIHBhdGgsIHJlbGF0aW9uLCBjb25mLCBkaWFnT2JqKSB7XG4gIGNvbnN0IGdldFJlbGF0aW9uVHlwZSA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgZGlhZ09iai5kYi5yZWxhdGlvblR5cGUuQUdHUkVHQVRJT046XG4gICAgICAgIHJldHVybiBcImFnZ3JlZ2F0aW9uXCI7XG4gICAgICBjYXNlIGRpYWdPYmouZGIucmVsYXRpb25UeXBlLkVYVEVOU0lPTjpcbiAgICAgICAgcmV0dXJuIFwiZXh0ZW5zaW9uXCI7XG4gICAgICBjYXNlIGRpYWdPYmouZGIucmVsYXRpb25UeXBlLkNPTVBPU0lUSU9OOlxuICAgICAgICByZXR1cm4gXCJjb21wb3NpdGlvblwiO1xuICAgICAgY2FzZSBkaWFnT2JqLmRiLnJlbGF0aW9uVHlwZS5ERVBFTkRFTkNZOlxuICAgICAgICByZXR1cm4gXCJkZXBlbmRlbmN5XCI7XG4gICAgICBjYXNlIGRpYWdPYmouZGIucmVsYXRpb25UeXBlLkxPTExJUE9QOlxuICAgICAgICByZXR1cm4gXCJsb2xsaXBvcFwiO1xuICAgIH1cbiAgfTtcbiAgcGF0aC5wb2ludHMgPSBwYXRoLnBvaW50cy5maWx0ZXIoKHApID0+ICFOdW1iZXIuaXNOYU4ocC55KSk7XG4gIGNvbnN0IGxpbmVEYXRhID0gcGF0aC5wb2ludHM7XG4gIGNvbnN0IGxpbmVGdW5jdGlvbiA9IGxpbmUoKS54KGZ1bmN0aW9uKGQpIHtcbiAgICByZXR1cm4gZC54O1xuICB9KS55KGZ1bmN0aW9uKGQpIHtcbiAgICByZXR1cm4gZC55O1xuICB9KS5jdXJ2ZShjdXJ2ZUJhc2lzKTtcbiAgY29uc3Qgc3ZnUGF0aCA9IGVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiZFwiLCBsaW5lRnVuY3Rpb24obGluZURhdGEpKS5hdHRyKFwiaWRcIiwgXCJlZGdlXCIgKyBlZGdlQ291bnQpLmF0dHIoXCJjbGFzc1wiLCBcInJlbGF0aW9uXCIpO1xuICBsZXQgdXJsID0gXCJcIjtcbiAgaWYgKGNvbmYuYXJyb3dNYXJrZXJBYnNvbHV0ZSkge1xuICAgIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgd2luZG93LmxvY2F0aW9uLnNlYXJjaDtcbiAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFwoL2csIFwiXFxcXChcIik7XG4gICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKS9nLCBcIlxcXFwpXCIpO1xuICB9XG4gIGlmIChyZWxhdGlvbi5yZWxhdGlvbi5saW5lVHlwZSA9PSAxKSB7XG4gICAgc3ZnUGF0aC5hdHRyKFwiY2xhc3NcIiwgXCJyZWxhdGlvbiBkYXNoZWQtbGluZVwiKTtcbiAgfVxuICBpZiAocmVsYXRpb24ucmVsYXRpb24ubGluZVR5cGUgPT0gMTApIHtcbiAgICBzdmdQYXRoLmF0dHIoXCJjbGFzc1wiLCBcInJlbGF0aW9uIGRvdHRlZC1saW5lXCIpO1xuICB9XG4gIGlmIChyZWxhdGlvbi5yZWxhdGlvbi50eXBlMSAhPT0gXCJub25lXCIpIHtcbiAgICBzdmdQYXRoLmF0dHIoXG4gICAgICBcIm1hcmtlci1zdGFydFwiLFxuICAgICAgXCJ1cmwoXCIgKyB1cmwgKyBcIiNcIiArIGdldFJlbGF0aW9uVHlwZShyZWxhdGlvbi5yZWxhdGlvbi50eXBlMSkgKyBcIlN0YXJ0KVwiXG4gICAgKTtcbiAgfVxuICBpZiAocmVsYXRpb24ucmVsYXRpb24udHlwZTIgIT09IFwibm9uZVwiKSB7XG4gICAgc3ZnUGF0aC5hdHRyKFxuICAgICAgXCJtYXJrZXItZW5kXCIsXG4gICAgICBcInVybChcIiArIHVybCArIFwiI1wiICsgZ2V0UmVsYXRpb25UeXBlKHJlbGF0aW9uLnJlbGF0aW9uLnR5cGUyKSArIFwiRW5kKVwiXG4gICAgKTtcbiAgfVxuICBsZXQgeCwgeTtcbiAgY29uc3QgbCA9IHBhdGgucG9pbnRzLmxlbmd0aDtcbiAgbGV0IGxhYmVsUG9zaXRpb24gPSB1dGlscy5jYWxjTGFiZWxQb3NpdGlvbihwYXRoLnBvaW50cyk7XG4gIHggPSBsYWJlbFBvc2l0aW9uLng7XG4gIHkgPSBsYWJlbFBvc2l0aW9uLnk7XG4gIGxldCBwMV9jYXJkX3gsIHAxX2NhcmRfeTtcbiAgbGV0IHAyX2NhcmRfeCwgcDJfY2FyZF95O1xuICBpZiAobCAlIDIgIT09IDAgJiYgbCA+IDEpIHtcbiAgICBsZXQgY2FyZGluYWxpdHlfMV9wb2ludCA9IHV0aWxzLmNhbGNDYXJkaW5hbGl0eVBvc2l0aW9uKFxuICAgICAgcmVsYXRpb24ucmVsYXRpb24udHlwZTEgIT09IFwibm9uZVwiLFxuICAgICAgcGF0aC5wb2ludHMsXG4gICAgICBwYXRoLnBvaW50c1swXVxuICAgICk7XG4gICAgbGV0IGNhcmRpbmFsaXR5XzJfcG9pbnQgPSB1dGlscy5jYWxjQ2FyZGluYWxpdHlQb3NpdGlvbihcbiAgICAgIHJlbGF0aW9uLnJlbGF0aW9uLnR5cGUyICE9PSBcIm5vbmVcIixcbiAgICAgIHBhdGgucG9pbnRzLFxuICAgICAgcGF0aC5wb2ludHNbbCAtIDFdXG4gICAgKTtcbiAgICBsb2cuZGVidWcoXCJjYXJkaW5hbGl0eV8xX3BvaW50IFwiICsgSlNPTi5zdHJpbmdpZnkoY2FyZGluYWxpdHlfMV9wb2ludCkpO1xuICAgIGxvZy5kZWJ1ZyhcImNhcmRpbmFsaXR5XzJfcG9pbnQgXCIgKyBKU09OLnN0cmluZ2lmeShjYXJkaW5hbGl0eV8yX3BvaW50KSk7XG4gICAgcDFfY2FyZF94ID0gY2FyZGluYWxpdHlfMV9wb2ludC54O1xuICAgIHAxX2NhcmRfeSA9IGNhcmRpbmFsaXR5XzFfcG9pbnQueTtcbiAgICBwMl9jYXJkX3ggPSBjYXJkaW5hbGl0eV8yX3BvaW50Lng7XG4gICAgcDJfY2FyZF95ID0gY2FyZGluYWxpdHlfMl9wb2ludC55O1xuICB9XG4gIGlmIChyZWxhdGlvbi50aXRsZSAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgZyA9IGVsZW0uYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJjbGFzc0xhYmVsXCIpO1xuICAgIGNvbnN0IGxhYmVsID0gZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJjbGFzc1wiLCBcImxhYmVsXCIpLmF0dHIoXCJ4XCIsIHgpLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJmaWxsXCIsIFwicmVkXCIpLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS50ZXh0KHJlbGF0aW9uLnRpdGxlKTtcbiAgICB3aW5kb3cubGFiZWwgPSBsYWJlbDtcbiAgICBjb25zdCBib3VuZHMgPSBsYWJlbC5ub2RlKCkuZ2V0QkJveCgpO1xuICAgIGcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJib3hcIikuYXR0cihcInhcIiwgYm91bmRzLnggLSBjb25mLnBhZGRpbmcgLyAyKS5hdHRyKFwieVwiLCBib3VuZHMueSAtIGNvbmYucGFkZGluZyAvIDIpLmF0dHIoXCJ3aWR0aFwiLCBib3VuZHMud2lkdGggKyBjb25mLnBhZGRpbmcpLmF0dHIoXCJoZWlnaHRcIiwgYm91bmRzLmhlaWdodCArIGNvbmYucGFkZGluZyk7XG4gIH1cbiAgbG9nLmluZm8oXCJSZW5kZXJpbmcgcmVsYXRpb24gXCIgKyBKU09OLnN0cmluZ2lmeShyZWxhdGlvbikpO1xuICBpZiAocmVsYXRpb24ucmVsYXRpb25UaXRsZTEgIT09IHZvaWQgMCAmJiByZWxhdGlvbi5yZWxhdGlvblRpdGxlMSAhPT0gXCJub25lXCIpIHtcbiAgICBjb25zdCBnID0gZWxlbS5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImNhcmRpbmFsaXR5XCIpO1xuICAgIGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0eXBlMVwiKS5hdHRyKFwieFwiLCBwMV9jYXJkX3gpLmF0dHIoXCJ5XCIsIHAxX2NhcmRfeSkuYXR0cihcImZpbGxcIiwgXCJibGFja1wiKS5hdHRyKFwiZm9udC1zaXplXCIsIFwiNlwiKS50ZXh0KHJlbGF0aW9uLnJlbGF0aW9uVGl0bGUxKTtcbiAgfVxuICBpZiAocmVsYXRpb24ucmVsYXRpb25UaXRsZTIgIT09IHZvaWQgMCAmJiByZWxhdGlvbi5yZWxhdGlvblRpdGxlMiAhPT0gXCJub25lXCIpIHtcbiAgICBjb25zdCBnID0gZWxlbS5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImNhcmRpbmFsaXR5XCIpO1xuICAgIGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0eXBlMlwiKS5hdHRyKFwieFwiLCBwMl9jYXJkX3gpLmF0dHIoXCJ5XCIsIHAyX2NhcmRfeSkuYXR0cihcImZpbGxcIiwgXCJibGFja1wiKS5hdHRyKFwiZm9udC1zaXplXCIsIFwiNlwiKS50ZXh0KHJlbGF0aW9uLnJlbGF0aW9uVGl0bGUyKTtcbiAgfVxuICBlZGdlQ291bnQrKztcbn07XG5jb25zdCBkcmF3Q2xhc3MgPSBmdW5jdGlvbihlbGVtLCBjbGFzc0RlZiwgY29uZiwgZGlhZ09iaikge1xuICBsb2cuZGVidWcoXCJSZW5kZXJpbmcgY2xhc3MgXCIsIGNsYXNzRGVmLCBjb25mKTtcbiAgY29uc3QgaWQgPSBjbGFzc0RlZi5pZDtcbiAgY29uc3QgY2xhc3NJbmZvID0ge1xuICAgIGlkLFxuICAgIGxhYmVsOiBjbGFzc0RlZi5pZCxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcbiAgY29uc3QgZyA9IGVsZW0uYXBwZW5kKFwiZ1wiKS5hdHRyKFwiaWRcIiwgZGlhZ09iai5kYi5sb29rVXBEb21JZChpZCkpLmF0dHIoXCJjbGFzc1wiLCBcImNsYXNzR3JvdXBcIik7XG4gIGxldCB0aXRsZTtcbiAgaWYgKGNsYXNzRGVmLmxpbmspIHtcbiAgICB0aXRsZSA9IGcuYXBwZW5kKFwic3ZnOmFcIikuYXR0cihcInhsaW5rOmhyZWZcIiwgY2xhc3NEZWYubGluaykuYXR0cihcInRhcmdldFwiLCBjbGFzc0RlZi5saW5rVGFyZ2V0KS5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ5XCIsIGNvbmYudGV4dEhlaWdodCArIGNvbmYucGFkZGluZykuYXR0cihcInhcIiwgMCk7XG4gIH0gZWxzZSB7XG4gICAgdGl0bGUgPSBnLmFwcGVuZChcInRleHRcIikuYXR0cihcInlcIiwgY29uZi50ZXh0SGVpZ2h0ICsgY29uZi5wYWRkaW5nKS5hdHRyKFwieFwiLCAwKTtcbiAgfVxuICBsZXQgaXNGaXJzdCA9IHRydWU7XG4gIGNsYXNzRGVmLmFubm90YXRpb25zLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKSB7XG4gICAgY29uc3QgdGl0bGVUZXh0MiA9IHRpdGxlLmFwcGVuZChcInRzcGFuXCIpLnRleHQoXCLCq1wiICsgbWVtYmVyICsgXCLCu1wiKTtcbiAgICBpZiAoIWlzRmlyc3QpIHtcbiAgICAgIHRpdGxlVGV4dDIuYXR0cihcImR5XCIsIGNvbmYudGV4dEhlaWdodCk7XG4gICAgfVxuICAgIGlzRmlyc3QgPSBmYWxzZTtcbiAgfSk7XG4gIGxldCBjbGFzc1RpdGxlU3RyaW5nID0gZ2V0Q2xhc3NUaXRsZVN0cmluZyhjbGFzc0RlZik7XG4gIGNvbnN0IGNsYXNzVGl0bGUgPSB0aXRsZS5hcHBlbmQoXCJ0c3BhblwiKS50ZXh0KGNsYXNzVGl0bGVTdHJpbmcpLmF0dHIoXCJjbGFzc1wiLCBcInRpdGxlXCIpO1xuICBpZiAoIWlzRmlyc3QpIHtcbiAgICBjbGFzc1RpdGxlLmF0dHIoXCJkeVwiLCBjb25mLnRleHRIZWlnaHQpO1xuICB9XG4gIGNvbnN0IHRpdGxlSGVpZ2h0ID0gdGl0bGUubm9kZSgpLmdldEJCb3goKS5oZWlnaHQ7XG4gIGNvbnN0IG1lbWJlcnNMaW5lID0gZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCAwKS5hdHRyKFwieTFcIiwgY29uZi5wYWRkaW5nICsgdGl0bGVIZWlnaHQgKyBjb25mLmRpdmlkZXJNYXJnaW4gLyAyKS5hdHRyKFwieTJcIiwgY29uZi5wYWRkaW5nICsgdGl0bGVIZWlnaHQgKyBjb25mLmRpdmlkZXJNYXJnaW4gLyAyKTtcbiAgY29uc3QgbWVtYmVycyA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCBjb25mLnBhZGRpbmcpLmF0dHIoXCJ5XCIsIHRpdGxlSGVpZ2h0ICsgY29uZi5kaXZpZGVyTWFyZ2luICsgY29uZi50ZXh0SGVpZ2h0KS5hdHRyKFwiZmlsbFwiLCBcIndoaXRlXCIpLmF0dHIoXCJjbGFzc1wiLCBcImNsYXNzVGV4dFwiKTtcbiAgaXNGaXJzdCA9IHRydWU7XG4gIGNsYXNzRGVmLm1lbWJlcnMuZm9yRWFjaChmdW5jdGlvbihtZW1iZXIpIHtcbiAgICBhZGRUc3BhbihtZW1iZXJzLCBtZW1iZXIsIGlzRmlyc3QsIGNvbmYpO1xuICAgIGlzRmlyc3QgPSBmYWxzZTtcbiAgfSk7XG4gIGNvbnN0IG1lbWJlcnNCb3ggPSBtZW1iZXJzLm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IG1ldGhvZHNMaW5lID0gZy5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJ4MVwiLCAwKS5hdHRyKFwieTFcIiwgY29uZi5wYWRkaW5nICsgdGl0bGVIZWlnaHQgKyBjb25mLmRpdmlkZXJNYXJnaW4gKyBtZW1iZXJzQm94LmhlaWdodCkuYXR0cihcInkyXCIsIGNvbmYucGFkZGluZyArIHRpdGxlSGVpZ2h0ICsgY29uZi5kaXZpZGVyTWFyZ2luICsgbWVtYmVyc0JveC5oZWlnaHQpO1xuICBjb25zdCBtZXRob2RzID0gZy5hcHBlbmQoXCJ0ZXh0XCIpLmF0dHIoXCJ4XCIsIGNvbmYucGFkZGluZykuYXR0cihcInlcIiwgdGl0bGVIZWlnaHQgKyAyICogY29uZi5kaXZpZGVyTWFyZ2luICsgbWVtYmVyc0JveC5oZWlnaHQgKyBjb25mLnRleHRIZWlnaHQpLmF0dHIoXCJmaWxsXCIsIFwid2hpdGVcIikuYXR0cihcImNsYXNzXCIsIFwiY2xhc3NUZXh0XCIpO1xuICBpc0ZpcnN0ID0gdHJ1ZTtcbiAgY2xhc3NEZWYubWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgIGFkZFRzcGFuKG1ldGhvZHMsIG1ldGhvZCwgaXNGaXJzdCwgY29uZik7XG4gICAgaXNGaXJzdCA9IGZhbHNlO1xuICB9KTtcbiAgY29uc3QgY2xhc3NCb3ggPSBnLm5vZGUoKS5nZXRCQm94KCk7XG4gIHZhciBjc3NDbGFzc1N0ciA9IFwiIFwiO1xuICBpZiAoY2xhc3NEZWYuY3NzQ2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgY3NzQ2xhc3NTdHIgPSBjc3NDbGFzc1N0ciArIGNsYXNzRGVmLmNzc0NsYXNzZXMuam9pbihcIiBcIik7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGcuaW5zZXJ0KFwicmVjdFwiLCBcIjpmaXJzdC1jaGlsZFwiKS5hdHRyKFwieFwiLCAwKS5hdHRyKFwieVwiLCAwKS5hdHRyKFwid2lkdGhcIiwgY2xhc3NCb3gud2lkdGggKyAyICogY29uZi5wYWRkaW5nKS5hdHRyKFwiaGVpZ2h0XCIsIGNsYXNzQm94LmhlaWdodCArIGNvbmYucGFkZGluZyArIDAuNSAqIGNvbmYuZGl2aWRlck1hcmdpbikuYXR0cihcImNsYXNzXCIsIGNzc0NsYXNzU3RyKTtcbiAgY29uc3QgcmVjdFdpZHRoID0gcmVjdC5ub2RlKCkuZ2V0QkJveCgpLndpZHRoO1xuICB0aXRsZS5ub2RlKCkuY2hpbGROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcbiAgICB4LnNldEF0dHJpYnV0ZShcInhcIiwgKHJlY3RXaWR0aCAtIHguZ2V0QkJveCgpLndpZHRoKSAvIDIpO1xuICB9KTtcbiAgaWYgKGNsYXNzRGVmLnRvb2x0aXApIHtcbiAgICB0aXRsZS5pbnNlcnQoXCJ0aXRsZVwiKS50ZXh0KGNsYXNzRGVmLnRvb2x0aXApO1xuICB9XG4gIG1lbWJlcnNMaW5lLmF0dHIoXCJ4MlwiLCByZWN0V2lkdGgpO1xuICBtZXRob2RzTGluZS5hdHRyKFwieDJcIiwgcmVjdFdpZHRoKTtcbiAgY2xhc3NJbmZvLndpZHRoID0gcmVjdFdpZHRoO1xuICBjbGFzc0luZm8uaGVpZ2h0ID0gY2xhc3NCb3guaGVpZ2h0ICsgY29uZi5wYWRkaW5nICsgMC41ICogY29uZi5kaXZpZGVyTWFyZ2luO1xuICByZXR1cm4gY2xhc3NJbmZvO1xufTtcbmNvbnN0IGdldENsYXNzVGl0bGVTdHJpbmcgPSBmdW5jdGlvbihjbGFzc0RlZikge1xuICBsZXQgY2xhc3NUaXRsZVN0cmluZyA9IGNsYXNzRGVmLmlkO1xuICBpZiAoY2xhc3NEZWYudHlwZSkge1xuICAgIGNsYXNzVGl0bGVTdHJpbmcgKz0gXCI8XCIgKyBjbGFzc0RlZi50eXBlICsgXCI+XCI7XG4gIH1cbiAgcmV0dXJuIGNsYXNzVGl0bGVTdHJpbmc7XG59O1xuY29uc3QgZHJhd05vdGUgPSBmdW5jdGlvbihlbGVtLCBub3RlLCBjb25mLCBkaWFnT2JqKSB7XG4gIGxvZy5kZWJ1ZyhcIlJlbmRlcmluZyBub3RlIFwiLCBub3RlLCBjb25mKTtcbiAgY29uc3QgaWQgPSBub3RlLmlkO1xuICBjb25zdCBub3RlSW5mbyA9IHtcbiAgICBpZCxcbiAgICB0ZXh0OiBub3RlLnRleHQsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH07XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIikuYXR0cihcImlkXCIsIGlkKS5hdHRyKFwiY2xhc3NcIiwgXCJjbGFzc0dyb3VwXCIpO1xuICBsZXQgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieVwiLCBjb25mLnRleHRIZWlnaHQgKyBjb25mLnBhZGRpbmcpLmF0dHIoXCJ4XCIsIDApO1xuICBjb25zdCBsaW5lcyA9IEpTT04ucGFyc2UoYFwiJHtub3RlLnRleHR9XCJgKS5zcGxpdChcIlxcblwiKTtcbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lMikge1xuICAgIGxvZy5kZWJ1ZyhgQWRkaW5nIGxpbmU6ICR7bGluZTJ9YCk7XG4gICAgdGV4dC5hcHBlbmQoXCJ0c3BhblwiKS50ZXh0KGxpbmUyKS5hdHRyKFwiY2xhc3NcIiwgXCJ0aXRsZVwiKS5hdHRyKFwiZHlcIiwgY29uZi50ZXh0SGVpZ2h0KTtcbiAgfSk7XG4gIGNvbnN0IG5vdGVCb3ggPSBnLm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IHJlY3QgPSBnLmluc2VydChcInJlY3RcIiwgXCI6Zmlyc3QtY2hpbGRcIikuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgMCkuYXR0cihcIndpZHRoXCIsIG5vdGVCb3gud2lkdGggKyAyICogY29uZi5wYWRkaW5nKS5hdHRyKFxuICAgIFwiaGVpZ2h0XCIsXG4gICAgbm90ZUJveC5oZWlnaHQgKyBsaW5lcy5sZW5ndGggKiBjb25mLnRleHRIZWlnaHQgKyBjb25mLnBhZGRpbmcgKyAwLjUgKiBjb25mLmRpdmlkZXJNYXJnaW5cbiAgKTtcbiAgY29uc3QgcmVjdFdpZHRoID0gcmVjdC5ub2RlKCkuZ2V0QkJveCgpLndpZHRoO1xuICB0ZXh0Lm5vZGUoKS5jaGlsZE5vZGVzLmZvckVhY2goZnVuY3Rpb24oeCkge1xuICAgIHguc2V0QXR0cmlidXRlKFwieFwiLCAocmVjdFdpZHRoIC0geC5nZXRCQm94KCkud2lkdGgpIC8gMik7XG4gIH0pO1xuICBub3RlSW5mby53aWR0aCA9IHJlY3RXaWR0aDtcbiAgbm90ZUluZm8uaGVpZ2h0ID0gbm90ZUJveC5oZWlnaHQgKyBsaW5lcy5sZW5ndGggKiBjb25mLnRleHRIZWlnaHQgKyBjb25mLnBhZGRpbmcgKyAwLjUgKiBjb25mLmRpdmlkZXJNYXJnaW47XG4gIHJldHVybiBub3RlSW5mbztcbn07XG5jb25zdCBwYXJzZU1lbWJlciA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgbGV0IGRpc3BsYXlUZXh0ID0gXCJcIjtcbiAgbGV0IGNzc1N0eWxlID0gXCJcIjtcbiAgbGV0IHJldHVyblR5cGUgPSBcIlwiO1xuICBsZXQgdmlzaWJpbGl0eSA9IFwiXCI7XG4gIGxldCBmaXJzdENoYXIgPSB0ZXh0LnN1YnN0cmluZygwLCAxKTtcbiAgbGV0IGxhc3RDaGFyID0gdGV4dC5zdWJzdHJpbmcodGV4dC5sZW5ndGggLSAxLCB0ZXh0Lmxlbmd0aCk7XG4gIGlmIChmaXJzdENoYXIubWF0Y2goL1sjK34tXS8pKSB7XG4gICAgdmlzaWJpbGl0eSA9IGZpcnN0Q2hhcjtcbiAgfVxuICBsZXQgbm9DbGFzc2lmaWVyUmUgPSAvW1xcc1xcdyl+XS87XG4gIGlmICghbGFzdENoYXIubWF0Y2gobm9DbGFzc2lmaWVyUmUpKSB7XG4gICAgY3NzU3R5bGUgPSBwYXJzZUNsYXNzaWZpZXIobGFzdENoYXIpO1xuICB9XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSB2aXNpYmlsaXR5ID09PSBcIlwiID8gMCA6IDE7XG4gIGxldCBlbmRJbmRleCA9IGNzc1N0eWxlID09PSBcIlwiID8gdGV4dC5sZW5ndGggOiB0ZXh0Lmxlbmd0aCAtIDE7XG4gIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gIGNvbnN0IG1ldGhvZFN0YXJ0ID0gdGV4dC5pbmRleE9mKFwiKFwiKTtcbiAgY29uc3QgbWV0aG9kRW5kID0gdGV4dC5pbmRleE9mKFwiKVwiKTtcbiAgY29uc3QgaXNNZXRob2QgPSBtZXRob2RTdGFydCA+IDEgJiYgbWV0aG9kRW5kID4gbWV0aG9kU3RhcnQgJiYgbWV0aG9kRW5kIDw9IHRleHQubGVuZ3RoO1xuICBpZiAoaXNNZXRob2QpIHtcbiAgICBsZXQgbWV0aG9kTmFtZSA9IHRleHQuc3Vic3RyaW5nKDAsIG1ldGhvZFN0YXJ0KS50cmltKCk7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRleHQuc3Vic3RyaW5nKG1ldGhvZFN0YXJ0ICsgMSwgbWV0aG9kRW5kKTtcbiAgICBkaXNwbGF5VGV4dCA9IHZpc2liaWxpdHkgKyBtZXRob2ROYW1lICsgXCIoXCIgKyBwYXJzZUdlbmVyaWNUeXBlcyhwYXJhbWV0ZXJzLnRyaW0oKSkgKyBcIilcIjtcbiAgICBpZiAobWV0aG9kRW5kIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgIGxldCBwb3RlbnRpYWxDbGFzc2lmaWVyID0gdGV4dC5zdWJzdHJpbmcobWV0aG9kRW5kICsgMSwgbWV0aG9kRW5kICsgMik7XG4gICAgICBpZiAoY3NzU3R5bGUgPT09IFwiXCIgJiYgIXBvdGVudGlhbENsYXNzaWZpZXIubWF0Y2gobm9DbGFzc2lmaWVyUmUpKSB7XG4gICAgICAgIGNzc1N0eWxlID0gcGFyc2VDbGFzc2lmaWVyKHBvdGVudGlhbENsYXNzaWZpZXIpO1xuICAgICAgICByZXR1cm5UeXBlID0gdGV4dC5zdWJzdHJpbmcobWV0aG9kRW5kICsgMikudHJpbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuVHlwZSA9IHRleHQuc3Vic3RyaW5nKG1ldGhvZEVuZCArIDEpLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXR1cm5UeXBlICE9PSBcIlwiKSB7XG4gICAgICAgIGlmIChyZXR1cm5UeXBlLmNoYXJBdCgwKSA9PT0gXCI6XCIpIHtcbiAgICAgICAgICByZXR1cm5UeXBlID0gcmV0dXJuVHlwZS5zdWJzdHJpbmcoMSkudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVyblR5cGUgPSBcIiA6IFwiICsgcGFyc2VHZW5lcmljVHlwZXMocmV0dXJuVHlwZSk7XG4gICAgICAgIGRpc3BsYXlUZXh0ICs9IHJldHVyblR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGRpc3BsYXlUZXh0ID0gdmlzaWJpbGl0eSArIHBhcnNlR2VuZXJpY1R5cGVzKHRleHQpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZGlzcGxheVRleHQsXG4gICAgY3NzU3R5bGVcbiAgfTtcbn07XG5jb25zdCBhZGRUc3BhbiA9IGZ1bmN0aW9uKHRleHRFbCwgdHh0LCBpc0ZpcnN0LCBjb25mKSB7XG4gIGxldCBtZW1iZXIgPSBwYXJzZU1lbWJlcih0eHQpO1xuICBjb25zdCB0U3BhbiA9IHRleHRFbC5hcHBlbmQoXCJ0c3BhblwiKS5hdHRyKFwieFwiLCBjb25mLnBhZGRpbmcpLnRleHQobWVtYmVyLmRpc3BsYXlUZXh0KTtcbiAgaWYgKG1lbWJlci5jc3NTdHlsZSAhPT0gXCJcIikge1xuICAgIHRTcGFuLmF0dHIoXCJzdHlsZVwiLCBtZW1iZXIuY3NzU3R5bGUpO1xuICB9XG4gIGlmICghaXNGaXJzdCkge1xuICAgIHRTcGFuLmF0dHIoXCJkeVwiLCBjb25mLnRleHRIZWlnaHQpO1xuICB9XG59O1xuY29uc3QgcGFyc2VDbGFzc2lmaWVyID0gZnVuY3Rpb24oY2xhc3NpZmllcikge1xuICBzd2l0Y2ggKGNsYXNzaWZpZXIpIHtcbiAgICBjYXNlIFwiKlwiOlxuICAgICAgcmV0dXJuIFwiZm9udC1zdHlsZTppdGFsaWM7XCI7XG4gICAgY2FzZSBcIiRcIjpcbiAgICAgIHJldHVybiBcInRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7XCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuY29uc3Qgc3ZnRHJhdyA9IHtcbiAgZ2V0Q2xhc3NUaXRsZVN0cmluZyxcbiAgZHJhd0NsYXNzLFxuICBkcmF3RWRnZSxcbiAgZHJhd05vdGUsXG4gIHBhcnNlTWVtYmVyXG59O1xuZXhwb3J0IHtcbiAgcGFyc2VNZW1iZXIgYXMgcCxcbiAgc3ZnRHJhdyBhcyBzXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/svgDraw-0fcc813d.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js": +/*!********************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js ***! + \********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"a\": () => (/* binding */ drawBackgroundRect),\n/* harmony export */ \"b\": () => (/* binding */ drawEmbeddedImage),\n/* harmony export */ \"c\": () => (/* binding */ drawImage),\n/* harmony export */ \"d\": () => (/* binding */ drawRect),\n/* harmony export */ \"e\": () => (/* binding */ getTextObj),\n/* harmony export */ \"f\": () => (/* binding */ drawText),\n/* harmony export */ \"g\": () => (/* binding */ getNoteRect)\n/* harmony export */ });\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n\nconst drawRect = function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.attrs !== \"undefined\" && rectData.attrs !== null) {\n for (let attrKey in rectData.attrs) {\n rectElem.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n if (rectData.class !== \"undefined\") {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n};\nconst drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n stroke: bounds.stroke,\n class: \"rect\"\n });\n rectElem.lower();\n};\nconst drawText = function(elem, textData) {\n const nText = textData.text.replace(//gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst drawImage = function(elem, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n var sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__.sanitizeUrl)(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = function(elem, x, y, link) {\n const imageElem = elem.append(\"use\");\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n const sanitizedLink = (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__.sanitizeUrl)(link);\n imageElem.attr(\"xlink:href\", \"#\" + sanitizedLink);\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: void 0,\n anchor: void 0,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: void 0\n };\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdmdEcmF3Q29tbW9uLWYyNmNhZDM5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG9FQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvRUFBVztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC9zdmdEcmF3Q29tbW9uLWYyNmNhZDM5LmpzPzE1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2FuaXRpemVVcmwgfSBmcm9tIFwiQGJyYWludHJlZS9zYW5pdGl6ZS11cmxcIjtcbmNvbnN0IGRyYXdSZWN0ID0gZnVuY3Rpb24oZWxlbSwgcmVjdERhdGEpIHtcbiAgY29uc3QgcmVjdEVsZW0gPSBlbGVtLmFwcGVuZChcInJlY3RcIik7XG4gIHJlY3RFbGVtLmF0dHIoXCJ4XCIsIHJlY3REYXRhLngpO1xuICByZWN0RWxlbS5hdHRyKFwieVwiLCByZWN0RGF0YS55KTtcbiAgcmVjdEVsZW0uYXR0cihcImZpbGxcIiwgcmVjdERhdGEuZmlsbCk7XG4gIHJlY3RFbGVtLmF0dHIoXCJzdHJva2VcIiwgcmVjdERhdGEuc3Ryb2tlKTtcbiAgcmVjdEVsZW0uYXR0cihcIndpZHRoXCIsIHJlY3REYXRhLndpZHRoKTtcbiAgcmVjdEVsZW0uYXR0cihcImhlaWdodFwiLCByZWN0RGF0YS5oZWlnaHQpO1xuICByZWN0RWxlbS5hdHRyKFwicnhcIiwgcmVjdERhdGEucngpO1xuICByZWN0RWxlbS5hdHRyKFwicnlcIiwgcmVjdERhdGEucnkpO1xuICBpZiAocmVjdERhdGEuYXR0cnMgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVjdERhdGEuYXR0cnMgIT09IG51bGwpIHtcbiAgICBmb3IgKGxldCBhdHRyS2V5IGluIHJlY3REYXRhLmF0dHJzKSB7XG4gICAgICByZWN0RWxlbS5hdHRyKGF0dHJLZXksIHJlY3REYXRhLmF0dHJzW2F0dHJLZXldKTtcbiAgICB9XG4gIH1cbiAgaWYgKHJlY3REYXRhLmNsYXNzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmVjdEVsZW0uYXR0cihcImNsYXNzXCIsIHJlY3REYXRhLmNsYXNzKTtcbiAgfVxuICByZXR1cm4gcmVjdEVsZW07XG59O1xuY29uc3QgZHJhd0JhY2tncm91bmRSZWN0ID0gZnVuY3Rpb24oZWxlbSwgYm91bmRzKSB7XG4gIGNvbnN0IHJlY3RFbGVtID0gZHJhd1JlY3QoZWxlbSwge1xuICAgIHg6IGJvdW5kcy5zdGFydHgsXG4gICAgeTogYm91bmRzLnN0YXJ0eSxcbiAgICB3aWR0aDogYm91bmRzLnN0b3B4IC0gYm91bmRzLnN0YXJ0eCxcbiAgICBoZWlnaHQ6IGJvdW5kcy5zdG9weSAtIGJvdW5kcy5zdGFydHksXG4gICAgZmlsbDogYm91bmRzLmZpbGwsXG4gICAgc3Ryb2tlOiBib3VuZHMuc3Ryb2tlLFxuICAgIGNsYXNzOiBcInJlY3RcIlxuICB9KTtcbiAgcmVjdEVsZW0ubG93ZXIoKTtcbn07XG5jb25zdCBkcmF3VGV4dCA9IGZ1bmN0aW9uKGVsZW0sIHRleHREYXRhKSB7XG4gIGNvbnN0IG5UZXh0ID0gdGV4dERhdGEudGV4dC5yZXBsYWNlKC88YnJcXHMqXFwvPz4vZ2ksIFwiIFwiKTtcbiAgY29uc3QgdGV4dEVsZW0gPSBlbGVtLmFwcGVuZChcInRleHRcIik7XG4gIHRleHRFbGVtLmF0dHIoXCJ4XCIsIHRleHREYXRhLngpO1xuICB0ZXh0RWxlbS5hdHRyKFwieVwiLCB0ZXh0RGF0YS55KTtcbiAgdGV4dEVsZW0uYXR0cihcImNsYXNzXCIsIFwibGVnZW5kXCIpO1xuICB0ZXh0RWxlbS5zdHlsZShcInRleHQtYW5jaG9yXCIsIHRleHREYXRhLmFuY2hvcik7XG4gIGlmICh0ZXh0RGF0YS5jbGFzcyAhPT0gdm9pZCAwKSB7XG4gICAgdGV4dEVsZW0uYXR0cihcImNsYXNzXCIsIHRleHREYXRhLmNsYXNzKTtcbiAgfVxuICBjb25zdCBzcGFuID0gdGV4dEVsZW0uYXBwZW5kKFwidHNwYW5cIik7XG4gIHNwYW4uYXR0cihcInhcIiwgdGV4dERhdGEueCArIHRleHREYXRhLnRleHRNYXJnaW4gKiAyKTtcbiAgc3Bhbi50ZXh0KG5UZXh0KTtcbiAgcmV0dXJuIHRleHRFbGVtO1xufTtcbmNvbnN0IGRyYXdJbWFnZSA9IGZ1bmN0aW9uKGVsZW0sIHgsIHksIGxpbmspIHtcbiAgY29uc3QgaW1hZ2VFbGVtID0gZWxlbS5hcHBlbmQoXCJpbWFnZVwiKTtcbiAgaW1hZ2VFbGVtLmF0dHIoXCJ4XCIsIHgpO1xuICBpbWFnZUVsZW0uYXR0cihcInlcIiwgeSk7XG4gIHZhciBzYW5pdGl6ZWRMaW5rID0gc2FuaXRpemVVcmwobGluayk7XG4gIGltYWdlRWxlbS5hdHRyKFwieGxpbms6aHJlZlwiLCBzYW5pdGl6ZWRMaW5rKTtcbn07XG5jb25zdCBkcmF3RW1iZWRkZWRJbWFnZSA9IGZ1bmN0aW9uKGVsZW0sIHgsIHksIGxpbmspIHtcbiAgY29uc3QgaW1hZ2VFbGVtID0gZWxlbS5hcHBlbmQoXCJ1c2VcIik7XG4gIGltYWdlRWxlbS5hdHRyKFwieFwiLCB4KTtcbiAgaW1hZ2VFbGVtLmF0dHIoXCJ5XCIsIHkpO1xuICBjb25zdCBzYW5pdGl6ZWRMaW5rID0gc2FuaXRpemVVcmwobGluayk7XG4gIGltYWdlRWxlbS5hdHRyKFwieGxpbms6aHJlZlwiLCBcIiNcIiArIHNhbml0aXplZExpbmspO1xufTtcbmNvbnN0IGdldE5vdGVSZWN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHdpZHRoOiAxMDAsXG4gICAgaGVpZ2h0OiAxMDAsXG4gICAgZmlsbDogXCIjRURGMkFFXCIsXG4gICAgc3Ryb2tlOiBcIiM2NjZcIixcbiAgICBhbmNob3I6IFwic3RhcnRcIixcbiAgICByeDogMCxcbiAgICByeTogMFxuICB9O1xufTtcbmNvbnN0IGdldFRleHRPYmogPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDEwMCxcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICBmaWxsOiB2b2lkIDAsXG4gICAgYW5jaG9yOiB2b2lkIDAsXG4gICAgXCJ0ZXh0LWFuY2hvclwiOiBcInN0YXJ0XCIsXG4gICAgc3R5bGU6IFwiIzY2NlwiLFxuICAgIHRleHRNYXJnaW46IDAsXG4gICAgcng6IDAsXG4gICAgcnk6IDAsXG4gICAgdHNwYW46IHRydWUsXG4gICAgdmFsaWduOiB2b2lkIDBcbiAgfTtcbn07XG5leHBvcnQge1xuICBkcmF3QmFja2dyb3VuZFJlY3QgYXMgYSxcbiAgZHJhd0VtYmVkZGVkSW1hZ2UgYXMgYixcbiAgZHJhd0ltYWdlIGFzIGMsXG4gIGRyYXdSZWN0IGFzIGQsXG4gIGdldFRleHRPYmogYXMgZSxcbiAgZHJhd1RleHQgYXMgZixcbiAgZ2V0Tm90ZVJlY3QgYXMgZ1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/svgDrawCommon-f26cad39.js\n"); + +/***/ }), + +/***/ "../../../node_modules/mermaid/dist/timeline-definition-5ed366f4.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/mermaid/dist/timeline-definition-5ed366f4.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"diagram\": () => (/* binding */ diagram)\n/* harmony export */ });\n/* harmony import */ var _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mermaid-b0ad2de1.js */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"../../../node_modules/d3/src/index.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/is_dark.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/lighten.js\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! khroma */ \"../../../node_modules/khroma/dist/methods/darken.js\");\n/* harmony import */ var ts_dedent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-dedent */ \"../../../node_modules/ts-dedent/esm/index.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"../../../node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @braintree/sanitize-url */ \"../../../node_modules/mermaid/node_modules/@braintree/sanitize-url/dist/index.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dompurify */ \"../../../node_modules/dompurify/dist/purify.js\");\n\n\n\n\n\n\n\n\n\n\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 5], $V2 = [6, 9, 11, 17, 18, 20, 22, 23, 26, 27, 28], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 17], $V6 = [1, 18], $V7 = [1, 19], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 27], $Vb = [4, 6, 9, 11, 17, 18, 20, 22, 23, 26, 27, 28];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"timeline\": 4, \"document\": 5, \"EOF\": 6, \"directive\": 7, \"line\": 8, \"SPACE\": 9, \"statement\": 10, \"NEWLINE\": 11, \"openDirective\": 12, \"typeDirective\": 13, \"closeDirective\": 14, \":\": 15, \"argDirective\": 16, \"title\": 17, \"acc_title\": 18, \"acc_title_value\": 19, \"acc_descr\": 20, \"acc_descr_value\": 21, \"acc_descr_multiline_value\": 22, \"section\": 23, \"period_statement\": 24, \"event_statement\": 25, \"period\": 26, \"event\": 27, \"open_directive\": 28, \"type_directive\": 29, \"arg_directive\": 30, \"close_directive\": 31, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"timeline\", 6: \"EOF\", 9: \"SPACE\", 11: \"NEWLINE\", 15: \":\", 17: \"title\", 18: \"acc_title\", 19: \"acc_title_value\", 20: \"acc_descr\", 21: \"acc_descr_value\", 22: \"acc_descr_multiline_value\", 23: \"section\", 26: \"period\", 27: \"event\", 28: \"open_directive\", 29: \"type_directive\", 30: \"arg_directive\", 31: \"close_directive\" },\n productions_: [0, [3, 3], [3, 2], [5, 0], [5, 2], [8, 2], [8, 1], [8, 1], [8, 1], [7, 4], [7, 6], [10, 1], [10, 2], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [24, 1], [25, 1], [12, 1], [13, 1], [16, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 3:\n this.$ = [];\n break;\n case 4:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 5:\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n case 8:\n this.$ = [];\n break;\n case 11:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 12:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 13:\n case 14:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 15:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 19:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 20:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n case 21:\n yy.parseDirective(\"%%{\", \"open_directive\");\n break;\n case 22:\n yy.parseDirective($$[$0], \"type_directive\");\n break;\n case 23:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"');\n yy.parseDirective($$[$0], \"arg_directive\");\n break;\n case 24:\n yy.parseDirective(\"}%%\", \"close_directive\", \"timeline\");\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 7: 3, 12: 4, 28: $V1 }, { 1: [3] }, o($V2, [2, 3], { 5: 6 }), { 3: 7, 4: $V0, 7: 3, 12: 4, 28: $V1 }, { 13: 8, 29: [1, 9] }, { 29: [2, 21] }, { 6: [1, 10], 7: 22, 8: 11, 9: [1, 12], 10: 13, 11: [1, 14], 12: 4, 17: $V3, 18: $V4, 20: $V5, 22: $V6, 23: $V7, 24: 20, 25: 21, 26: $V8, 27: $V9, 28: $V1 }, { 1: [2, 2] }, { 14: 25, 15: [1, 26], 31: $Va }, o([15, 31], [2, 22]), o($V2, [2, 8], { 1: [2, 1] }), o($V2, [2, 4]), { 7: 22, 10: 28, 12: 4, 17: $V3, 18: $V4, 20: $V5, 22: $V6, 23: $V7, 24: 20, 25: 21, 26: $V8, 27: $V9, 28: $V1 }, o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 11]), { 19: [1, 29] }, { 21: [1, 30] }, o($V2, [2, 14]), o($V2, [2, 15]), o($V2, [2, 16]), o($V2, [2, 17]), o($V2, [2, 18]), o($V2, [2, 19]), o($V2, [2, 20]), { 11: [1, 31] }, { 16: 32, 30: [1, 33] }, { 11: [2, 24] }, o($V2, [2, 5]), o($V2, [2, 12]), o($V2, [2, 13]), o($Vb, [2, 9]), { 14: 34, 31: $Va }, { 31: [2, 23] }, { 11: [1, 35] }, o($Vb, [2, 10])],\n defaultActions: { 5: [2, 21], 7: [2, 2], 27: [2, 24], 33: [2, 23] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return 28;\n case 1:\n this.begin(\"type_directive\");\n return 29;\n case 2:\n this.popState();\n this.begin(\"arg_directive\");\n return 15;\n case 3:\n this.popState();\n this.popState();\n return 31;\n case 4:\n return 30;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 11;\n case 8:\n break;\n case 9:\n break;\n case 10:\n return 4;\n case 11:\n return 17;\n case 12:\n this.begin(\"acc_title\");\n return 18;\n case 13:\n this.popState();\n return \"acc_title_value\";\n case 14:\n this.begin(\"acc_descr\");\n return 20;\n case 15:\n this.popState();\n return \"acc_descr_value\";\n case 16:\n this.begin(\"acc_descr_multiline\");\n break;\n case 17:\n this.popState();\n break;\n case 18:\n return \"acc_descr_multiline_value\";\n case 19:\n return 23;\n case 20:\n return 27;\n case 21:\n return 26;\n case 22:\n return 6;\n case 23:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:((?:(?!\\}%%)[^:.])*))/i, /^(?::)/i, /^(?:\\}%%)/i, /^(?:((?:(?!\\}%%).|\\n)*))/i, /^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:timeline\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?::\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"open_directive\": { \"rules\": [1], \"inclusive\": false }, \"type_directive\": { \"rules\": [2, 3], \"inclusive\": false }, \"arg_directive\": { \"rules\": [3, 4], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [17, 18], \"inclusive\": false }, \"acc_descr\": { \"rules\": [15], \"inclusive\": false }, \"acc_title\": { \"rules\": [13], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 19, 20, 21, 22, 23], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nlet currentTaskId = 0;\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst getCommonDb = () => _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.I;\nconst parseDirective = (statement, context, type) => {\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.J)(globalThis, statement, context, type);\n};\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.v)();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n};\nconst addTask = function(period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : []\n };\n rawTasks.push(rawTask);\n};\nconst addEvent = function(event) {\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n currentTask.events.push(event);\n};\nconst addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst timelineDb = {\n clear,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent,\n parseDirective\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addEvent,\n addSection,\n addTask,\n addTaskOrg,\n clear,\n default: timelineDb,\n getCommonDb,\n getSections,\n getTasks,\n parseDirective\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst drawRect = function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.class !== void 0) {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n};\nconst drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n const nText = textData.text.replace(//gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n task.x + 14;\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: \"rect\"\n });\n rectElem.lower();\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nfunction wrap(text, width) {\n text.each(function() {\n var text2 = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(this), words = text2.text().split(/(\\s+|
)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"
\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"
\") {\n line = [\"\"];\n } else {\n line = [word];\n }\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\nconst drawNode = function(elem, node, fullSection, conf) {\n const section = fullSection % MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\n \"class\",\n (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section)\n );\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n defaultBkg(bkgElem, node, section);\n return node;\n};\nconst getVirtualNodeHeight = function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight\n};\nconst draw = function(text, id, version, diagObj) {\n var _a, _b, _c, _d;\n const conf = (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.c)();\n const LEFT_MARGIN = conf.leftMargin ?? 50;\n (_b = (_a = diagObj.db).clear) == null ? void 0 : _b.call(_a);\n diagObj.parser.parse(text + \"\\n\");\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? (\n // @ts-ignore d3 types are wrong\n (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(sandboxElement.nodes()[0].contentDocument.body)\n ) : (0,d3__WEBPACK_IMPORTED_MODULE_0__.select)(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"task\", tasks2);\n svgDraw.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()) {\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for (let j = 0; j < task.events.length; j++) {\n const event = task.events[j];\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"maxSectionHeight before draw\", maxSectionHeight);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) {\n sections2.forEach((section) => {\n const tasksForSection = tasks2.filter((task) => task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n hasSections = false;\n drawTasks(\n svg,\n tasks2,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n const box = svg.node().getBBox();\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"bounds\", box);\n if (title) {\n svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n }\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n (0,_mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.p)(\n void 0,\n svg,\n ((_c = conf.timeline) == null ? void 0 : _c.padding) ?? 50,\n ((_d = conf.timeline) == null ? void 0 : _d.useMaxWidth) ?? false\n );\n};\nconst drawTasks = function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n var _a;\n for (const task of tasks2) {\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 190 / 2).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 190 / 2).attr(\n \"y2\",\n masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120\n ).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !((_a = conf.timeline) == null ? void 0 : _a.disableMulticolor)) {\n sectionColor++;\n }\n }\n masterY = masterY - 10;\n};\nconst drawEvents = function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events) {\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n _mermaid_b0ad2de1_js__WEBPACK_IMPORTED_MODULE_5__.l.debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n};\nconst renderer = {\n setConf: () => {\n },\n draw\n};\nconst genSections = (options) => {\n let sections2 = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if ((0,khroma__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = (0,khroma__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser: parser$1,\n styles\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21lcm1haWQvZGlzdC90aW1lbGluZS1kZWZpbml0aW9uLTVlZDM2NmY0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBNkk7QUFDNUc7QUFDZ0I7QUFDOUI7QUFDSjtBQUNrQjtBQUNkO0FBQ1c7QUFDZDtBQUNjO0FBQzlCO0FBQ0E7QUFDQSxzQkFBc0IsZ0JBQWdCLEtBQUs7QUFDM0M7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsS0FBSztBQUNMLFVBQVU7QUFDVixnQkFBZ0IsNGlCQUE0aUI7QUFDNWpCLGtCQUFrQix5VUFBeVU7QUFDM1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLG9DQUFvQyxJQUFJLFFBQVEsbUJBQW1CLE1BQU0sS0FBSyxvQ0FBb0MsSUFBSSxtQkFBbUIsSUFBSSxhQUFhLElBQUksMEpBQTBKLElBQUksV0FBVyxJQUFJLDhCQUE4Qix5Q0FBeUMsV0FBVyxxQkFBcUIsOEdBQThHLHFEQUFxRCxhQUFhLElBQUksYUFBYSwySEFBMkgsYUFBYSxJQUFJLHFCQUFxQixJQUFJLGFBQWEsc0VBQXNFLGlCQUFpQixJQUFJLGFBQWEsSUFBSSxhQUFhO0FBQzU2QixzQkFBc0IsaURBQWlEO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FB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O0FBQ0E7QUFDQSxrQkFBa0IsdUNBQUc7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sc0RBQXNEO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGVBQWU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtCQUErQjtBQUMzQztBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFD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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkseURBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxRQUFRLElBQUksUUFBUTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwrQkFBK0I7QUFDakQ7QUFDQSxRQUFRLGtEQUFNO0FBQ2QsaUNBQWlDLGtEQUFPO0FBQ3hDLE1BQU07QUFDTixpQ0FBaUMsa0RBQU07QUFDdkM7QUFDQTtBQUNBLGtCQUFrQiwrQkFBK0I7QUFDakQ7QUFDQTtBQUNBLGVBQWUsT0FBTyxpQkFBaUIsT0FBTyxpQkFBaUIsT0FBTyxtQkFBbUIsT0FBTztBQUNoRyxjQUFjO0FBQ2Q7QUFDQSxlQUFlLE9BQU87QUFDdEIsYUFBYTtBQUNiO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsZUFBZTtBQUNmO0FBQ0Esb0JBQW9CO0FBQ3BCLGdCQUFnQjtBQUNoQjtBQUNBLGtCQUFrQjtBQUNsQixzQkFBc0I7QUFDdEI7QUFDQSxlQUFlLE9BQU87QUFDdEIsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0I7QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9tZXJtYWlkL2Rpc3QvdGltZWxpbmUtZGVmaW5pdGlvbi01ZWQzNjZmNC5qcz9hMmJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEkgYXMgY29tbW9uRGIsIEogYXMgcGFyc2VEaXJlY3RpdmUkMSwgdiBhcyBjbGVhciQxLCBjIGFzIGdldENvbmZpZywgbCBhcyBsb2csIHAgYXMgc2V0dXBHcmFwaFZpZXdib3ggfSBmcm9tIFwiLi9tZXJtYWlkLWIwYWQyZGUxLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3QsIGFyYyB9IGZyb20gXCJkM1wiO1xuaW1wb3J0IHsgaXNEYXJrLCBsaWdodGVuLCBkYXJrZW4gfSBmcm9tIFwia2hyb21hXCI7XG5pbXBvcnQgXCJ0cy1kZWRlbnRcIjtcbmltcG9ydCBcImRheWpzXCI7XG5pbXBvcnQgXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuaW1wb3J0IFwiZG9tcHVyaWZ5XCI7XG5pbXBvcnQgXCJsb2Rhc2gtZXMvbWVtb2l6ZS5qc1wiO1xuaW1wb3J0IFwic3R5bGlzXCI7XG5pbXBvcnQgXCJsb2Rhc2gtZXMvaXNFbXB0eS5qc1wiO1xudmFyIHBhcnNlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgbyA9IGZ1bmN0aW9uKGssIHYsIG8yLCBsKSB7XG4gICAgZm9yIChvMiA9IG8yIHx8IHt9LCBsID0gay5sZW5ndGg7IGwtLTsgbzJba1tsXV0gPSB2KVxuICAgICAgO1xuICAgIHJldHVybiBvMjtcbiAgfSwgJFYwID0gWzEsIDJdLCAkVjEgPSBbMSwgNV0sICRWMiA9IFs2LCA5LCAxMSwgMTcsIDE4LCAyMCwgMjIsIDIzLCAyNiwgMjcsIDI4XSwgJFYzID0gWzEsIDE1XSwgJFY0ID0gWzEsIDE2XSwgJFY1ID0gWzEsIDE3XSwgJFY2ID0gWzEsIDE4XSwgJFY3ID0gWzEsIDE5XSwgJFY4ID0gWzEsIDIzXSwgJFY5ID0gWzEsIDI0XSwgJFZhID0gWzEsIDI3XSwgJFZiID0gWzQsIDYsIDksIDExLCAxNywgMTgsIDIwLCAyMiwgMjMsIDI2LCAyNywgMjhdO1xuICB2YXIgcGFyc2VyMiA9IHtcbiAgICB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7XG4gICAgfSxcbiAgICB5eToge30sXG4gICAgc3ltYm9sc186IHsgXCJlcnJvclwiOiAyLCBcInN0YXJ0XCI6IDMsIFwidGltZWxpbmVcIjogNCwgXCJkb2N1bWVudFwiOiA1LCBcIkVPRlwiOiA2LCBcImRpcmVjdGl2ZVwiOiA3LCBcImxpbmVcIjogOCwgXCJTUEFDRVwiOiA5LCBcInN0YXRlbWVudFwiOiAxMCwgXCJORVdMSU5FXCI6IDExLCBcIm9wZW5EaXJlY3RpdmVcIjogMTIsIFwidHlwZURpcmVjdGl2ZVwiOiAxMywgXCJjbG9zZURpcmVjdGl2ZVwiOiAxNCwgXCI6XCI6IDE1LCBcImFyZ0RpcmVjdGl2ZVwiOiAxNiwgXCJ0aXRsZVwiOiAxNywgXCJhY2NfdGl0bGVcIjogMTgsIFwiYWNjX3RpdGxlX3ZhbHVlXCI6IDE5LCBcImFjY19kZXNjclwiOiAyMCwgXCJhY2NfZGVzY3JfdmFsdWVcIjogMjEsIFwiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZVwiOiAyMiwgXCJzZWN0aW9uXCI6IDIzLCBcInBlcmlvZF9zdGF0ZW1lbnRcIjogMjQsIFwiZXZlbnRfc3RhdGVtZW50XCI6IDI1LCBcInBlcmlvZFwiOiAyNiwgXCJldmVudFwiOiAyNywgXCJvcGVuX2RpcmVjdGl2ZVwiOiAyOCwgXCJ0eXBlX2RpcmVjdGl2ZVwiOiAyOSwgXCJhcmdfZGlyZWN0aXZlXCI6IDMwLCBcImNsb3NlX2RpcmVjdGl2ZVwiOiAzMSwgXCIkYWNjZXB0XCI6IDAsIFwiJGVuZFwiOiAxIH0sXG4gICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDQ6IFwidGltZWxpbmVcIiwgNjogXCJFT0ZcIiwgOTogXCJTUEFDRVwiLCAxMTogXCJORVdMSU5FXCIsIDE1OiBcIjpcIiwgMTc6IFwidGl0bGVcIiwgMTg6IFwiYWNjX3RpdGxlXCIsIDE5OiBcImFjY190aXRsZV92YWx1ZVwiLCAyMDogXCJhY2NfZGVzY3JcIiwgMjE6IFwiYWNjX2Rlc2NyX3ZhbHVlXCIsIDIyOiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIiwgMjM6IFwic2VjdGlvblwiLCAyNjogXCJwZXJpb2RcIiwgMjc6IFwiZXZlbnRcIiwgMjg6IFwib3Blbl9kaXJlY3RpdmVcIiwgMjk6IFwidHlwZV9kaXJlY3RpdmVcIiwgMzA6IFwiYXJnX2RpcmVjdGl2ZVwiLCAzMTogXCJjbG9zZV9kaXJlY3RpdmVcIiB9LFxuICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAzXSwgWzMsIDJdLCBbNSwgMF0sIFs1LCAyXSwgWzgsIDJdLCBbOCwgMV0sIFs4LCAxXSwgWzgsIDFdLCBbNywgNF0sIFs3LCA2XSwgWzEwLCAxXSwgWzEwLCAyXSwgWzEwLCAyXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzEwLCAxXSwgWzI0LCAxXSwgWzI1LCAxXSwgWzEyLCAxXSwgWzEzLCAxXSwgWzE2LCAxXSwgWzE0LCAxXV0sXG4gICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUsICQkLCBfJCkge1xuICAgICAgdmFyICQwID0gJCQubGVuZ3RoIC0gMTtcbiAgICAgIHN3aXRjaCAoeXlzdGF0ZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuICQkWyQwIC0gMV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwIC0gMV07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgeXkuZ2V0Q29tbW9uRGIoKS5zZXREaWFncmFtVGl0bGUoJCRbJDBdLnN1YnN0cig2KSk7XG4gICAgICAgICAgdGhpcy4kID0gJCRbJDBdLnN1YnN0cig2KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LmdldENvbW1vbkRiKCkuc2V0QWNjVGl0bGUodGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF0udHJpbSgpO1xuICAgICAgICAgIHl5LmdldENvbW1vbkRiKCkuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICB5eS5hZGRTZWN0aW9uKCQkWyQwXS5zdWJzdHIoOCkpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXS5zdWJzdHIoOCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgeXkuYWRkVGFzaygkJFskMF0sIDAsIFwiXCIpO1xuICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICB5eS5hZGRFdmVudCgkJFskMF0uc3Vic3RyKDIpKTtcbiAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgeXkucGFyc2VEaXJlY3RpdmUoXCIlJXtcIiwgXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICB5eS5wYXJzZURpcmVjdGl2ZSgkJFskMF0sIFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgJCRbJDBdID0gJCRbJDBdLnRyaW0oKS5yZXBsYWNlKC8nL2csICdcIicpO1xuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKCQkWyQwXSwgXCJhcmdfZGlyZWN0aXZlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI0OlxuICAgICAgICAgIHl5LnBhcnNlRGlyZWN0aXZlKFwifSUlXCIsIFwiY2xvc2VfZGlyZWN0aXZlXCIsIFwidGltZWxpbmVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgICB0YWJsZTogW3sgMzogMSwgNDogJFYwLCA3OiAzLCAxMjogNCwgMjg6ICRWMSB9LCB7IDE6IFszXSB9LCBvKCRWMiwgWzIsIDNdLCB7IDU6IDYgfSksIHsgMzogNywgNDogJFYwLCA3OiAzLCAxMjogNCwgMjg6ICRWMSB9LCB7IDEzOiA4LCAyOTogWzEsIDldIH0sIHsgMjk6IFsyLCAyMV0gfSwgeyA2OiBbMSwgMTBdLCA3OiAyMiwgODogMTEsIDk6IFsxLCAxMl0sIDEwOiAxMywgMTE6IFsxLCAxNF0sIDEyOiA0LCAxNzogJFYzLCAxODogJFY0LCAyMDogJFY1LCAyMjogJFY2LCAyMzogJFY3LCAyNDogMjAsIDI1OiAyMSwgMjY6ICRWOCwgMjc6ICRWOSwgMjg6ICRWMSB9LCB7IDE6IFsyLCAyXSB9LCB7IDE0OiAyNSwgMTU6IFsxLCAyNl0sIDMxOiAkVmEgfSwgbyhbMTUsIDMxXSwgWzIsIDIyXSksIG8oJFYyLCBbMiwgOF0sIHsgMTogWzIsIDFdIH0pLCBvKCRWMiwgWzIsIDRdKSwgeyA3OiAyMiwgMTA6IDI4LCAxMjogNCwgMTc6ICRWMywgMTg6ICRWNCwgMjA6ICRWNSwgMjI6ICRWNiwgMjM6ICRWNywgMjQ6IDIwLCAyNTogMjEsIDI2OiAkVjgsIDI3OiAkVjksIDI4OiAkVjEgfSwgbygkVjIsIFsyLCA2XSksIG8oJFYyLCBbMiwgN10pLCBvKCRWMiwgWzIsIDExXSksIHsgMTk6IFsxLCAyOV0gfSwgeyAyMTogWzEsIDMwXSB9LCBvKCRWMiwgWzIsIDE0XSksIG8oJFYyLCBbMiwgMTVdKSwgbygkVjIsIFsyLCAxNl0pLCBvKCRWMiwgWzIsIDE3XSksIG8oJFYyLCBbMiwgMThdKSwgbygkVjIsIFsyLCAxOV0pLCBvKCRWMiwgWzIsIDIwXSksIHsgMTE6IFsxLCAzMV0gfSwgeyAxNjogMzIsIDMwOiBbMSwgMzNdIH0sIHsgMTE6IFsyLCAyNF0gfSwgbygkVjIsIFsyLCA1XSksIG8oJFYyLCBbMiwgMTJdKSwgbygkVjIsIFsyLCAxM10pLCBvKCRWYiwgWzIsIDldKSwgeyAxNDogMzQsIDMxOiAkVmEgfSwgeyAzMTogWzIsIDIzXSB9LCB7IDExOiBbMSwgMzVdIH0sIG8oJFZiLCBbMiwgMTBdKV0sXG4gICAgZGVmYXVsdEFjdGlvbnM6IHsgNTogWzIsIDIxXSwgNzogWzIsIDJdLCAyNzogWzIsIDI0XSwgMzM6IFsyLCAyM10gfSxcbiAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHN0cik7XG4gICAgICAgIGVycm9yLmhhc2ggPSBoYXNoO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9LFxuICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgdmFyIHNlbGYgPSB0aGlzLCBzdGFjayA9IFswXSwgdHN0YWNrID0gW10sIHZzdGFjayA9IFtudWxsXSwgbHN0YWNrID0gW10sIHRhYmxlID0gdGhpcy50YWJsZSwgeXl0ZXh0ID0gXCJcIiwgeXlsaW5lbm8gPSAwLCB5eWxlbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgICAgdmFyIGFyZ3MgPSBsc3RhY2suc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGxleGVyMiA9IE9iamVjdC5jcmVhdGUodGhpcy5sZXhlcik7XG4gICAgICB2YXIgc2hhcmVkU3RhdGUgPSB7IHl5OiB7fSB9O1xuICAgICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICBzaGFyZWRTdGF0ZS55eVtrXSA9IHRoaXMueXlba107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxleGVyMi5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgICAgc2hhcmVkU3RhdGUueXkubGV4ZXIgPSBsZXhlcjI7XG4gICAgICBzaGFyZWRTdGF0ZS55eS5wYXJzZXIgPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBsZXhlcjIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGV4ZXIyLnl5bGxvYyA9IHt9O1xuICAgICAgfVxuICAgICAgdmFyIHl5bG9jID0gbGV4ZXIyLnl5bGxvYztcbiAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgIHZhciByYW5nZXMgPSBsZXhlcjIub3B0aW9ucyAmJiBsZXhlcjIub3B0aW9ucy5yYW5nZXM7XG4gICAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBzaGFyZWRTdGF0ZS55eS5wYXJzZUVycm9yO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBsZXgoKSB7XG4gICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgdG9rZW4gPSB0c3RhY2sucG9wKCkgfHwgbGV4ZXIyLmxleCgpIHx8IEVPRjtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICB0c3RhY2sgPSB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gdHN0YWNrLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIHZhciBzeW1ib2wsIHN0YXRlLCBhY3Rpb24sIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdKSB7XG4gICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09IFwidW5kZWZpbmVkXCIgfHwgIWFjdGlvbi5sZW5ndGggfHwgIWFjdGlvblswXSkge1xuICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgZm9yIChwIGluIHRhYmxlW3N0YXRlXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVybWluYWxzX1twXSAmJiBwID4gVEVSUk9SKSB7XG4gICAgICAgICAgICAgIGV4cGVjdGVkLnB1c2goXCInXCIgKyB0aGlzLnRlcm1pbmFsc19bcF0gKyBcIidcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsZXhlcjIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBlcnJTdHIgPSBcIlBhcnNlIGVycm9yIG9uIGxpbmUgXCIgKyAoeXlsaW5lbm8gKyAxKSArIFwiOlxcblwiICsgbGV4ZXIyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IEVPRiA/IFwiZW5kIG9mIGlucHV0XCIgOiBcIidcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IoZXJyU3RyLCB7XG4gICAgICAgICAgICB0ZXh0OiBsZXhlcjIubWF0Y2gsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLFxuICAgICAgICAgICAgbGluZTogbGV4ZXIyLnl5bGluZW5vLFxuICAgICAgICAgICAgbG9jOiB5eWxvYyxcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblswXSBpbnN0YW5jZW9mIEFycmF5ICYmIGFjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6IFwiICsgc3RhdGUgKyBcIiwgdG9rZW46IFwiICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHN0YWNrLnB1c2goc3ltYm9sKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKGxleGVyMi55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIyLnl5bGxvYyk7XG4gICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB5eWxlbmcgPSBsZXhlcjIueXlsZW5nO1xuICAgICAgICAgICAgICB5eXRleHQgPSBsZXhlcjIueXl0ZXh0O1xuICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyMi55eWxpbmVubztcbiAgICAgICAgICAgICAgeXlsb2MgPSBsZXhlcjIueXlsbG9jO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLFxuICAgICAgICAgICAgICBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLFxuICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyYW5nZXMpIHtcbiAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbXG4gICAgICAgICAgICAgICAgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSxcbiAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHl5dmFsLCBbXG4gICAgICAgICAgICAgIHl5dGV4dCxcbiAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICB5eWxpbmVubyxcbiAgICAgICAgICAgICAgc2hhcmVkU3RhdGUueXksXG4gICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgdnN0YWNrLFxuICAgICAgICAgICAgICBsc3RhY2tcbiAgICAgICAgICAgIF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICB2c3RhY2sgPSB2c3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9O1xuICB2YXIgbGV4ZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGV4ZXIyID0ge1xuICAgICAgRU9GOiAxLFxuICAgICAgcGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvcihzdHIsIGhhc2gpIHtcbiAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmVzZXRzIHRoZSBsZXhlciwgc2V0cyBuZXcgaW5wdXRcbiAgICAgIHNldElucHV0OiBmdW5jdGlvbihpbnB1dCwgeXkpIHtcbiAgICAgICAgdGhpcy55eSA9IHl5IHx8IHRoaXMueXkgfHwge307XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9iYWNrdHJhY2sgPSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy55eWxpbmVubyA9IHRoaXMueXlsZW5nID0gMDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFtcIklOSVRJQUxcIl07XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiAwLFxuICAgICAgICAgIGxhc3RfbGluZTogMSxcbiAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsIDBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgICAgLy8gY29uc3VtZXMgYW5kIHJldHVybnMgb25lIGNoYXIgZnJvbSB0aGUgaW5wdXRcbiAgICAgIGlucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UoMSk7XG4gICAgICAgIHJldHVybiBjaDtcbiAgICAgIH0sXG4gICAgICAvLyB1bnNoaWZ0cyBvbmUgY2hhciAob3IgYSBzdHJpbmcpIGludG8gdGhlIGlucHV0XG4gICAgICB1bnB1dDogZnVuY3Rpb24oY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMueXl0ZXh0LnN1YnN0cigwLCB0aGlzLnl5dGV4dC5sZW5ndGggLSBsZW4pO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIDEpO1xuICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5maXJzdF9saW5lLFxuICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID8gKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3JbMF0sIHJbMF0gKyB0aGlzLnl5bGVuZyAtIGxlbl07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBjYWNoZXMgbWF0Y2hlZCB0ZXh0IGFuZCBhcHBlbmRzIGl0IG9uIG5leHQgYWN0aW9uXG4gICAgICBtb3JlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gYWN0aW9uLCBzaWduYWxzIHRoZSBsZXhlciB0aGF0IHRoaXMgcnVsZSBmYWlscyB0byBtYXRjaCB0aGUgaW5wdXQsIHNvIHRoZSBuZXh0IG1hdGNoaW5nIHJ1bGUgKHJlZ2V4KSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICByZWplY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLlxcblwiICsgdGhpcy5zaG93UG9zaXRpb24oKSwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgbGluZTogdGhpcy55eWxpbmVub1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIC8vIHJldGFpbiBmaXJzdCBuIGNoYXJhY3RlcnMgb2YgdGhlIG1hdGNoXG4gICAgICBsZXNzOiBmdW5jdGlvbihuKSB7XG4gICAgICAgIHRoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShuKSk7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgYWxyZWFkeSBtYXRjaGVkIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgcGFzdElucHV0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHBhc3QgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGggLSB0aGlzLm1hdGNoLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/IFwiLi4uXCIgOiBcIlwiKSArIHBhc3Quc3Vic3RyKC0yMCkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgfSxcbiAgICAgIC8vIGRpc3BsYXlzIHVwY29taW5nIGlucHV0LCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBuZXh0ID0gdGhpcy5tYXRjaDtcbiAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMCAtIG5leHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5leHQuc3Vic3RyKDAsIDIwKSArIChuZXh0Lmxlbmd0aCA+IDIwID8gXCIuLi5cIiA6IFwiXCIpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICB9LFxuICAgICAgLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuICAgICAgc2hvd1Bvc2l0aW9uOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICAgIH0sXG4gICAgICAvLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbiAgICAgIHRlc3RfbWF0Y2g6IGZ1bmN0aW9uKG1hdGNoLCBpbmRleGVkX3J1bGUpIHtcbiAgICAgICAgdmFyIHRva2VuLCBsaW5lcywgYmFja3VwO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgIGJhY2t1cCA9IHtcbiAgICAgICAgICAgIHl5bGluZW5vOiB0aGlzLnl5bGluZW5vLFxuICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB5eXRleHQ6IHRoaXMueXl0ZXh0LFxuICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVzOiB0aGlzLm1hdGNoZXMsXG4gICAgICAgICAgICBtYXRjaGVkOiB0aGlzLm1hdGNoZWQsXG4gICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgICAgICAgIF9tb3JlOiB0aGlzLl9tb3JlLFxuICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgIHl5OiB0aGlzLnl5LFxuICAgICAgICAgICAgY29uZGl0aW9uU3RhY2s6IHRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksXG4gICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICBiYWNrdXAueXlsbG9jLnJhbmdlID0gdGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICB0aGlzLnl5bGluZW5vICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICBmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uLFxuICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6IHRoaXMueXlsbG9jLmxhc3RfY29sdW1uICsgbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoICs9IG1hdGNoWzBdO1xuICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgdGhpcy55eWxlbmcgPSB0aGlzLnl5dGV4dC5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pbnB1dCA9IHRoaXMuX2lucHV0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgICAgIHRoaXMubWF0Y2hlZCArPSBtYXRjaFswXTtcbiAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBpbmRleGVkX3J1bGUsIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXSk7XG4gICAgICAgIGlmICh0aGlzLmRvbmUgJiYgdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgIHRoaXNba10gPSBiYWNrdXBba107XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIG5leHQgbWF0Y2ggaW4gaW5wdXRcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b2tlbiwgbWF0Y2gsIHRlbXBNYXRjaCwgaW5kZXg7XG4gICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgIHRoaXMueXl0ZXh0ID0gXCJcIjtcbiAgICAgICAgICB0aGlzLm1hdGNoID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcnVsZXMgPSB0aGlzLl9jdXJyZW50UnVsZXMoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2godGVtcE1hdGNoLCBydWxlc1tpXSk7XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYmFja3RyYWNrKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucy5mbGV4KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaChtYXRjaCwgcnVsZXNbaW5kZXhdKTtcbiAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcihcIkxleGljYWwgZXJyb3Igb24gbGluZSBcIiArICh0aGlzLnl5bGluZW5vICsgMSkgKyBcIi4gVW5yZWNvZ25pemVkIHRleHQuXFxuXCIgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7XG4gICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgdG9rZW46IG51bGwsXG4gICAgICAgICAgICBsaW5lOiB0aGlzLnl5bGluZW5vXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gbmV4dCBtYXRjaCB0aGF0IGhhcyBhIHRva2VuXG4gICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgdmFyIHIgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sZXgoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIGFjdGl2YXRlcyBhIG5ldyBsZXhlciBjb25kaXRpb24gc3RhdGUgKHB1c2hlcyB0aGUgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSBvbnRvIHRoZSBjb25kaXRpb24gc3RhY2spXG4gICAgICBiZWdpbjogZnVuY3Rpb24gYmVnaW4oY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uU3RhY2sucHVzaChjb25kaXRpb24pO1xuICAgICAgfSxcbiAgICAgIC8vIHBvcCB0aGUgcHJldmlvdXNseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9mZiB0aGUgY29uZGl0aW9uIHN0YWNrXG4gICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgIHZhciBuID0gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxO1xuICAgICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG4gICAgICBfY3VycmVudFJ1bGVzOiBmdW5jdGlvbiBfY3VycmVudFJ1bGVzKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV1dLnJ1bGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbXCJJTklUSUFMXCJdLnJ1bGVzO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gcmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIGxleGVyIGNvbmRpdGlvbiBzdGF0ZTsgd2hlbiBhbiBpbmRleCBhcmd1bWVudCBpcyBwcm92aWRlZCBpdCBwcm9kdWNlcyB0aGUgTi10aCBwcmV2aW91cyBjb25kaXRpb24gc3RhdGUsIGlmIGF2YWlsYWJsZVxuICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKG4pIHtcbiAgICAgICAgbiA9IHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMSAtIE1hdGguYWJzKG4gfHwgMCk7XG4gICAgICAgIGlmIChuID49IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gXCJJTklUSUFMXCI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBhbGlhcyBmb3IgYmVnaW4oY29uZGl0aW9uKVxuICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBwdXNoU3RhdGUoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICAgIH0sXG4gICAgICAvLyByZXR1cm4gdGhlIG51bWJlciBvZiBzdGF0ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFja1xuICAgICAgc3RhdGVTdGFja1NpemU6IGZ1bmN0aW9uIHN0YXRlU3RhY2tTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGg7XG4gICAgICB9LFxuICAgICAgb3B0aW9uczogeyBcImNhc2UtaW5zZW5zaXRpdmVcIjogdHJ1ZSB9LFxuICAgICAgcGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5LCB5eV8sICRhdm9pZGluZ19uYW1lX2NvbGxpc2lvbnMsIFlZX1NUQVJUKSB7XG4gICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJvcGVuX2RpcmVjdGl2ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiAyODtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwidHlwZV9kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFyZ19kaXJlY3RpdmVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIDMxO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHJldHVybiAzMDtcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gMTE7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICByZXR1cm4gMTc7XG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJhY2NfdGl0bGVcIik7XG4gICAgICAgICAgICByZXR1cm4gMTg7XG4gICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBcImFjY190aXRsZV92YWx1ZVwiO1xuICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICB0aGlzLmJlZ2luKFwiYWNjX2Rlc2NyXCIpO1xuICAgICAgICAgICAgcmV0dXJuIDIwO1xuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gXCJhY2NfZGVzY3JfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgdGhpcy5iZWdpbihcImFjY19kZXNjcl9tdWx0aWxpbmVcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgIHJldHVybiBcImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWVcIjtcbiAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgIGNhc2UgMjA6XG4gICAgICAgICAgICByZXR1cm4gMjc7XG4gICAgICAgICAgY2FzZSAyMTpcbiAgICAgICAgICAgIHJldHVybiAyNjtcbiAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgcmV0dXJuIDY7XG4gICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgIHJldHVybiBcIklOVkFMSURcIjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiBbL14oPzolJVxceykvaSwgL14oPzooKD86KD8hXFx9JSUpW146Ll0pKikpL2ksIC9eKD86OikvaSwgL14oPzpcXH0lJSkvaSwgL14oPzooKD86KD8hXFx9JSUpLnxcXG4pKikpL2ksIC9eKD86JSg/IVxceylbXlxcbl0qKS9pLCAvXig/OlteXFx9XSUlW15cXG5dKikvaSwgL14oPzpbXFxuXSspL2ksIC9eKD86XFxzKykvaSwgL14oPzojW15cXG5dKikvaSwgL14oPzp0aW1lbGluZVxcYikvaSwgL14oPzp0aXRsZVxcc1teI1xcbjtdKykvaSwgL14oPzphY2NUaXRsZVxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccyo6XFxzKikvaSwgL14oPzooPyFcXG58fCkqW15cXG5dKikvaSwgL14oPzphY2NEZXNjclxccypcXHtcXHMqKS9pLCAvXig/OltcXH1dKS9pLCAvXig/OlteXFx9XSopL2ksIC9eKD86c2VjdGlvblxcc1teIzpcXG47XSspL2ksIC9eKD86Olxcc1teIzpcXG47XSspL2ksIC9eKD86W14jOlxcbjtdKykvaSwgL14oPzokKS9pLCAvXig/Oi4pL2ldLFxuICAgICAgY29uZGl0aW9uczogeyBcIm9wZW5fZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMV0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwidHlwZV9kaXJlY3RpdmVcIjogeyBcInJ1bGVzXCI6IFsyLCAzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJhcmdfZGlyZWN0aXZlXCI6IHsgXCJydWxlc1wiOiBbMywgNF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX2Rlc2NyX211bHRpbGluZVwiOiB7IFwicnVsZXNcIjogWzE3LCAxOF0sIFwiaW5jbHVzaXZlXCI6IGZhbHNlIH0sIFwiYWNjX2Rlc2NyXCI6IHsgXCJydWxlc1wiOiBbMTVdLCBcImluY2x1c2l2ZVwiOiBmYWxzZSB9LCBcImFjY190aXRsZVwiOiB7IFwicnVsZXNcIjogWzEzXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTQsIDE2LCAxOSwgMjAsIDIxLCAyMiwgMjNdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfVxuICAgIH07XG4gICAgcmV0dXJuIGxleGVyMjtcbiAgfSgpO1xuICBwYXJzZXIyLmxleGVyID0gbGV4ZXI7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICB0aGlzLnl5ID0ge307XG4gIH1cbiAgUGFyc2VyLnByb3RvdHlwZSA9IHBhcnNlcjI7XG4gIHBhcnNlcjIuUGFyc2VyID0gUGFyc2VyO1xuICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSgpO1xucGFyc2VyLnBhcnNlciA9IHBhcnNlcjtcbmNvbnN0IHBhcnNlciQxID0gcGFyc2VyO1xubGV0IGN1cnJlbnRTZWN0aW9uID0gXCJcIjtcbmxldCBjdXJyZW50VGFza0lkID0gMDtcbmNvbnN0IHNlY3Rpb25zID0gW107XG5jb25zdCB0YXNrcyA9IFtdO1xuY29uc3QgcmF3VGFza3MgPSBbXTtcbmNvbnN0IGdldENvbW1vbkRiID0gKCkgPT4gY29tbW9uRGI7XG5jb25zdCBwYXJzZURpcmVjdGl2ZSA9IChzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpID0+IHtcbiAgcGFyc2VEaXJlY3RpdmUkMShnbG9iYWxUaGlzLCBzdGF0ZW1lbnQsIGNvbnRleHQsIHR5cGUpO1xufTtcbmNvbnN0IGNsZWFyID0gZnVuY3Rpb24oKSB7XG4gIHNlY3Rpb25zLmxlbmd0aCA9IDA7XG4gIHRhc2tzLmxlbmd0aCA9IDA7XG4gIGN1cnJlbnRTZWN0aW9uID0gXCJcIjtcbiAgcmF3VGFza3MubGVuZ3RoID0gMDtcbiAgY2xlYXIkMSgpO1xufTtcbmNvbnN0IGFkZFNlY3Rpb24gPSBmdW5jdGlvbih0eHQpIHtcbiAgY3VycmVudFNlY3Rpb24gPSB0eHQ7XG4gIHNlY3Rpb25zLnB1c2godHh0KTtcbn07XG5jb25zdCBnZXRTZWN0aW9ucyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gc2VjdGlvbnM7XG59O1xuY29uc3QgZ2V0VGFza3MgPSBmdW5jdGlvbigpIHtcbiAgbGV0IGFsbEl0ZW1zUHJvY2Vzc2VkID0gY29tcGlsZVRhc2tzKCk7XG4gIGNvbnN0IG1heERlcHRoID0gMTAwO1xuICBsZXQgaXRlcmF0aW9uQ291bnQgPSAwO1xuICB3aGlsZSAoIWFsbEl0ZW1zUHJvY2Vzc2VkICYmIGl0ZXJhdGlvbkNvdW50IDwgbWF4RGVwdGgpIHtcbiAgICBhbGxJdGVtc1Byb2Nlc3NlZCA9IGNvbXBpbGVUYXNrcygpO1xuICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gIH1cbiAgdGFza3MucHVzaCguLi5yYXdUYXNrcyk7XG4gIHJldHVybiB0YXNrcztcbn07XG5jb25zdCBhZGRUYXNrID0gZnVuY3Rpb24ocGVyaW9kLCBsZW5ndGgsIGV2ZW50KSB7XG4gIGNvbnN0IHJhd1Rhc2sgPSB7XG4gICAgaWQ6IGN1cnJlbnRUYXNrSWQrKyxcbiAgICBzZWN0aW9uOiBjdXJyZW50U2VjdGlvbixcbiAgICB0eXBlOiBjdXJyZW50U2VjdGlvbixcbiAgICB0YXNrOiBwZXJpb2QsXG4gICAgc2NvcmU6IGxlbmd0aCA/IGxlbmd0aCA6IDAsXG4gICAgLy9pZiBldmVudCBpcyBkZWZpbmVkLCB0aGVuIGFkZCBpdCB0aGUgZXZlbnRzIGFycmF5XG4gICAgZXZlbnRzOiBldmVudCA/IFtldmVudF0gOiBbXVxuICB9O1xuICByYXdUYXNrcy5wdXNoKHJhd1Rhc2spO1xufTtcbmNvbnN0IGFkZEV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgY29uc3QgY3VycmVudFRhc2sgPSByYXdUYXNrcy5maW5kKCh0YXNrKSA9PiB0YXNrLmlkID09PSBjdXJyZW50VGFza0lkIC0gMSk7XG4gIGN1cnJlbnRUYXNrLmV2ZW50cy5wdXNoKGV2ZW50KTtcbn07XG5jb25zdCBhZGRUYXNrT3JnID0gZnVuY3Rpb24oZGVzY3IpIHtcbiAgY29uc3QgbmV3VGFzayA9IHtcbiAgICBzZWN0aW9uOiBjdXJyZW50U2VjdGlvbixcbiAgICB0eXBlOiBjdXJyZW50U2VjdGlvbixcbiAgICBkZXNjcmlwdGlvbjogZGVzY3IsXG4gICAgdGFzazogZGVzY3IsXG4gICAgY2xhc3NlczogW11cbiAgfTtcbiAgdGFza3MucHVzaChuZXdUYXNrKTtcbn07XG5jb25zdCBjb21waWxlVGFza3MgPSBmdW5jdGlvbigpIHtcbiAgY29uc3QgY29tcGlsZVRhc2sgPSBmdW5jdGlvbihwb3MpIHtcbiAgICByZXR1cm4gcmF3VGFza3NbcG9zXS5wcm9jZXNzZWQ7XG4gIH07XG4gIGxldCBhbGxQcm9jZXNzZWQgPSB0cnVlO1xuICBmb3IgKGNvbnN0IFtpLCByYXdUYXNrXSBvZiByYXdUYXNrcy5lbnRyaWVzKCkpIHtcbiAgICBjb21waWxlVGFzayhpKTtcbiAgICBhbGxQcm9jZXNzZWQgPSBhbGxQcm9jZXNzZWQgJiYgcmF3VGFzay5wcm9jZXNzZWQ7XG4gIH1cbiAgcmV0dXJuIGFsbFByb2Nlc3NlZDtcbn07XG5jb25zdCB0aW1lbGluZURiID0ge1xuICBjbGVhcixcbiAgZ2V0Q29tbW9uRGIsXG4gIGFkZFNlY3Rpb24sXG4gIGdldFNlY3Rpb25zLFxuICBnZXRUYXNrcyxcbiAgYWRkVGFzayxcbiAgYWRkVGFza09yZyxcbiAgYWRkRXZlbnQsXG4gIHBhcnNlRGlyZWN0aXZlXG59O1xuY29uc3QgZGIgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBhZGRFdmVudCxcbiAgYWRkU2VjdGlvbixcbiAgYWRkVGFzayxcbiAgYWRkVGFza09yZyxcbiAgY2xlYXIsXG4gIGRlZmF1bHQ6IHRpbWVsaW5lRGIsXG4gIGdldENvbW1vbkRiLFxuICBnZXRTZWN0aW9ucyxcbiAgZ2V0VGFza3MsXG4gIHBhcnNlRGlyZWN0aXZlXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6IFwiTW9kdWxlXCIgfSkpO1xuY29uc3QgTUFYX1NFQ1RJT05TID0gMTI7XG5jb25zdCBkcmF3UmVjdCA9IGZ1bmN0aW9uKGVsZW0sIHJlY3REYXRhKSB7XG4gIGNvbnN0IHJlY3RFbGVtID0gZWxlbS5hcHBlbmQoXCJyZWN0XCIpO1xuICByZWN0RWxlbS5hdHRyKFwieFwiLCByZWN0RGF0YS54KTtcbiAgcmVjdEVsZW0uYXR0cihcInlcIiwgcmVjdERhdGEueSk7XG4gIHJlY3RFbGVtLmF0dHIoXCJmaWxsXCIsIHJlY3REYXRhLmZpbGwpO1xuICByZWN0RWxlbS5hdHRyKFwic3Ryb2tlXCIsIHJlY3REYXRhLnN0cm9rZSk7XG4gIHJlY3RFbGVtLmF0dHIoXCJ3aWR0aFwiLCByZWN0RGF0YS53aWR0aCk7XG4gIHJlY3RFbGVtLmF0dHIoXCJoZWlnaHRcIiwgcmVjdERhdGEuaGVpZ2h0KTtcbiAgcmVjdEVsZW0uYXR0cihcInJ4XCIsIHJlY3REYXRhLnJ4KTtcbiAgcmVjdEVsZW0uYXR0cihcInJ5XCIsIHJlY3REYXRhLnJ5KTtcbiAgaWYgKHJlY3REYXRhLmNsYXNzICE9PSB2b2lkIDApIHtcbiAgICByZWN0RWxlbS5hdHRyKFwiY2xhc3NcIiwgcmVjdERhdGEuY2xhc3MpO1xuICB9XG4gIHJldHVybiByZWN0RWxlbTtcbn07XG5jb25zdCBkcmF3RmFjZSA9IGZ1bmN0aW9uKGVsZW1lbnQsIGZhY2VEYXRhKSB7XG4gIGNvbnN0IHJhZGl1cyA9IDE1O1xuICBjb25zdCBjaXJjbGVFbGVtZW50ID0gZWxlbWVudC5hcHBlbmQoXCJjaXJjbGVcIikuYXR0cihcImN4XCIsIGZhY2VEYXRhLmN4KS5hdHRyKFwiY3lcIiwgZmFjZURhdGEuY3kpLmF0dHIoXCJjbGFzc1wiLCBcImZhY2VcIikuYXR0cihcInJcIiwgcmFkaXVzKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDIpLmF0dHIoXCJvdmVyZmxvd1wiLCBcInZpc2libGVcIik7XG4gIGNvbnN0IGZhY2UgPSBlbGVtZW50LmFwcGVuZChcImdcIik7XG4gIGZhY2UuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjeFwiLCBmYWNlRGF0YS5jeCAtIHJhZGl1cyAvIDMpLmF0dHIoXCJjeVwiLCBmYWNlRGF0YS5jeSAtIHJhZGl1cyAvIDMpLmF0dHIoXCJyXCIsIDEuNSkuYXR0cihcInN0cm9rZS13aWR0aFwiLCAyKS5hdHRyKFwiZmlsbFwiLCBcIiM2NjZcIikuYXR0cihcInN0cm9rZVwiLCBcIiM2NjZcIik7XG4gIGZhY2UuYXBwZW5kKFwiY2lyY2xlXCIpLmF0dHIoXCJjeFwiLCBmYWNlRGF0YS5jeCArIHJhZGl1cyAvIDMpLmF0dHIoXCJjeVwiLCBmYWNlRGF0YS5jeSAtIHJhZGl1cyAvIDMpLmF0dHIoXCJyXCIsIDEuNSkuYXR0cihcInN0cm9rZS13aWR0aFwiLCAyKS5hdHRyKFwiZmlsbFwiLCBcIiM2NjZcIikuYXR0cihcInN0cm9rZVwiLCBcIiM2NjZcIik7XG4gIGZ1bmN0aW9uIHNtaWxlKGZhY2UyKSB7XG4gICAgY29uc3QgYXJjJDEgPSBhcmMoKS5zdGFydEFuZ2xlKE1hdGguUEkgLyAyKS5lbmRBbmdsZSgzICogKE1hdGguUEkgLyAyKSkuaW5uZXJSYWRpdXMocmFkaXVzIC8gMikub3V0ZXJSYWRpdXMocmFkaXVzIC8gMi4yKTtcbiAgICBmYWNlMi5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm1vdXRoXCIpLmF0dHIoXCJkXCIsIGFyYyQxKS5hdHRyKFwidHJhbnNmb3JtXCIsIFwidHJhbnNsYXRlKFwiICsgZmFjZURhdGEuY3ggKyBcIixcIiArIChmYWNlRGF0YS5jeSArIDIpICsgXCIpXCIpO1xuICB9XG4gIGZ1bmN0aW9uIHNhZChmYWNlMikge1xuICAgIGNvbnN0IGFyYyQxID0gYXJjKCkuc3RhcnRBbmdsZSgzICogTWF0aC5QSSAvIDIpLmVuZEFuZ2xlKDUgKiAoTWF0aC5QSSAvIDIpKS5pbm5lclJhZGl1cyhyYWRpdXMgLyAyKS5vdXRlclJhZGl1cyhyYWRpdXMgLyAyLjIpO1xuICAgIGZhY2UyLmFwcGVuZChcInBhdGhcIikuYXR0cihcImNsYXNzXCIsIFwibW91dGhcIikuYXR0cihcImRcIiwgYXJjJDEpLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyBmYWNlRGF0YS5jeCArIFwiLFwiICsgKGZhY2VEYXRhLmN5ICsgNykgKyBcIilcIik7XG4gIH1cbiAgZnVuY3Rpb24gYW1iaXZhbGVudChmYWNlMikge1xuICAgIGZhY2UyLmFwcGVuZChcImxpbmVcIikuYXR0cihcImNsYXNzXCIsIFwibW91dGhcIikuYXR0cihcInN0cm9rZVwiLCAyKS5hdHRyKFwieDFcIiwgZmFjZURhdGEuY3ggLSA1KS5hdHRyKFwieTFcIiwgZmFjZURhdGEuY3kgKyA3KS5hdHRyKFwieDJcIiwgZmFjZURhdGEuY3ggKyA1KS5hdHRyKFwieTJcIiwgZmFjZURhdGEuY3kgKyA3KS5hdHRyKFwiY2xhc3NcIiwgXCJtb3V0aFwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMXB4XCIpLmF0dHIoXCJzdHJva2VcIiwgXCIjNjY2XCIpO1xuICB9XG4gIGlmIChmYWNlRGF0YS5zY29yZSA+IDMpIHtcbiAgICBzbWlsZShmYWNlKTtcbiAgfSBlbHNlIGlmIChmYWNlRGF0YS5zY29yZSA8IDMpIHtcbiAgICBzYWQoZmFjZSk7XG4gIH0gZWxzZSB7XG4gICAgYW1iaXZhbGVudChmYWNlKTtcbiAgfVxuICByZXR1cm4gY2lyY2xlRWxlbWVudDtcbn07XG5jb25zdCBkcmF3Q2lyY2xlID0gZnVuY3Rpb24oZWxlbWVudCwgY2lyY2xlRGF0YSkge1xuICBjb25zdCBjaXJjbGVFbGVtZW50ID0gZWxlbWVudC5hcHBlbmQoXCJjaXJjbGVcIik7XG4gIGNpcmNsZUVsZW1lbnQuYXR0cihcImN4XCIsIGNpcmNsZURhdGEuY3gpO1xuICBjaXJjbGVFbGVtZW50LmF0dHIoXCJjeVwiLCBjaXJjbGVEYXRhLmN5KTtcbiAgY2lyY2xlRWxlbWVudC5hdHRyKFwiY2xhc3NcIiwgXCJhY3Rvci1cIiArIGNpcmNsZURhdGEucG9zKTtcbiAgY2lyY2xlRWxlbWVudC5hdHRyKFwiZmlsbFwiLCBjaXJjbGVEYXRhLmZpbGwpO1xuICBjaXJjbGVFbGVtZW50LmF0dHIoXCJzdHJva2VcIiwgY2lyY2xlRGF0YS5zdHJva2UpO1xuICBjaXJjbGVFbGVtZW50LmF0dHIoXCJyXCIsIGNpcmNsZURhdGEucik7XG4gIGlmIChjaXJjbGVFbGVtZW50LmNsYXNzICE9PSB2b2lkIDApIHtcbiAgICBjaXJjbGVFbGVtZW50LmF0dHIoXCJjbGFzc1wiLCBjaXJjbGVFbGVtZW50LmNsYXNzKTtcbiAgfVxuICBpZiAoY2lyY2xlRGF0YS50aXRsZSAhPT0gdm9pZCAwKSB7XG4gICAgY2lyY2xlRWxlbWVudC5hcHBlbmQoXCJ0aXRsZVwiKS50ZXh0KGNpcmNsZURhdGEudGl0bGUpO1xuICB9XG4gIHJldHVybiBjaXJjbGVFbGVtZW50O1xufTtcbmNvbnN0IGRyYXdUZXh0ID0gZnVuY3Rpb24oZWxlbSwgdGV4dERhdGEpIHtcbiAgY29uc3QgblRleHQgPSB0ZXh0RGF0YS50ZXh0LnJlcGxhY2UoLzxiclxccypcXC8/Pi9naSwgXCIgXCIpO1xuICBjb25zdCB0ZXh0RWxlbSA9IGVsZW0uYXBwZW5kKFwidGV4dFwiKTtcbiAgdGV4dEVsZW0uYXR0cihcInhcIiwgdGV4dERhdGEueCk7XG4gIHRleHRFbGVtLmF0dHIoXCJ5XCIsIHRleHREYXRhLnkpO1xuICB0ZXh0RWxlbS5hdHRyKFwiY2xhc3NcIiwgXCJsZWdlbmRcIik7XG4gIHRleHRFbGVtLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgdGV4dERhdGEuYW5jaG9yKTtcbiAgaWYgKHRleHREYXRhLmNsYXNzICE9PSB2b2lkIDApIHtcbiAgICB0ZXh0RWxlbS5hdHRyKFwiY2xhc3NcIiwgdGV4dERhdGEuY2xhc3MpO1xuICB9XG4gIGNvbnN0IHNwYW4gPSB0ZXh0RWxlbS5hcHBlbmQoXCJ0c3BhblwiKTtcbiAgc3Bhbi5hdHRyKFwieFwiLCB0ZXh0RGF0YS54ICsgdGV4dERhdGEudGV4dE1hcmdpbiAqIDIpO1xuICBzcGFuLnRleHQoblRleHQpO1xuICByZXR1cm4gdGV4dEVsZW07XG59O1xuY29uc3QgZHJhd0xhYmVsID0gZnVuY3Rpb24oZWxlbSwgdHh0T2JqZWN0KSB7XG4gIGZ1bmN0aW9uIGdlblBvaW50cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBjdXQpIHtcbiAgICByZXR1cm4geCArIFwiLFwiICsgeSArIFwiIFwiICsgKHggKyB3aWR0aCkgKyBcIixcIiArIHkgKyBcIiBcIiArICh4ICsgd2lkdGgpICsgXCIsXCIgKyAoeSArIGhlaWdodCAtIGN1dCkgKyBcIiBcIiArICh4ICsgd2lkdGggLSBjdXQgKiAxLjIpICsgXCIsXCIgKyAoeSArIGhlaWdodCkgKyBcIiBcIiArIHggKyBcIixcIiArICh5ICsgaGVpZ2h0KTtcbiAgfVxuICBjb25zdCBwb2x5Z29uID0gZWxlbS5hcHBlbmQoXCJwb2x5Z29uXCIpO1xuICBwb2x5Z29uLmF0dHIoXCJwb2ludHNcIiwgZ2VuUG9pbnRzKHR4dE9iamVjdC54LCB0eHRPYmplY3QueSwgNTAsIDIwLCA3KSk7XG4gIHBvbHlnb24uYXR0cihcImNsYXNzXCIsIFwibGFiZWxCb3hcIik7XG4gIHR4dE9iamVjdC55ID0gdHh0T2JqZWN0LnkgKyB0eHRPYmplY3QubGFiZWxNYXJnaW47XG4gIHR4dE9iamVjdC54ID0gdHh0T2JqZWN0LnggKyAwLjUgKiB0eHRPYmplY3QubGFiZWxNYXJnaW47XG4gIGRyYXdUZXh0KGVsZW0sIHR4dE9iamVjdCk7XG59O1xuY29uc3QgZHJhd1NlY3Rpb24gPSBmdW5jdGlvbihlbGVtLCBzZWN0aW9uLCBjb25mKSB7XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IHJlY3QgPSBnZXROb3RlUmVjdCgpO1xuICByZWN0LnggPSBzZWN0aW9uLng7XG4gIHJlY3QueSA9IHNlY3Rpb24ueTtcbiAgcmVjdC5maWxsID0gc2VjdGlvbi5maWxsO1xuICByZWN0LndpZHRoID0gY29uZi53aWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBjb25mLmhlaWdodDtcbiAgcmVjdC5jbGFzcyA9IFwiam91cm5leS1zZWN0aW9uIHNlY3Rpb24tdHlwZS1cIiArIHNlY3Rpb24ubnVtO1xuICByZWN0LnJ4ID0gMztcbiAgcmVjdC5yeSA9IDM7XG4gIGRyYXdSZWN0KGcsIHJlY3QpO1xuICBfZHJhd1RleHRDYW5kaWRhdGVGdW5jKGNvbmYpKFxuICAgIHNlY3Rpb24udGV4dCxcbiAgICBnLFxuICAgIHJlY3QueCxcbiAgICByZWN0LnksXG4gICAgcmVjdC53aWR0aCxcbiAgICByZWN0LmhlaWdodCxcbiAgICB7IGNsYXNzOiBcImpvdXJuZXktc2VjdGlvbiBzZWN0aW9uLXR5cGUtXCIgKyBzZWN0aW9uLm51bSB9LFxuICAgIGNvbmYsXG4gICAgc2VjdGlvbi5jb2xvdXJcbiAgKTtcbn07XG5sZXQgdGFza0NvdW50ID0gLTE7XG5jb25zdCBkcmF3VGFzayA9IGZ1bmN0aW9uKGVsZW0sIHRhc2ssIGNvbmYpIHtcbiAgY29uc3QgY2VudGVyID0gdGFzay54ICsgY29uZi53aWR0aCAvIDI7XG4gIGNvbnN0IGcgPSBlbGVtLmFwcGVuZChcImdcIik7XG4gIHRhc2tDb3VudCsrO1xuICBjb25zdCBtYXhIZWlnaHQgPSAzMDAgKyA1ICogMzA7XG4gIGcuYXBwZW5kKFwibGluZVwiKS5hdHRyKFwiaWRcIiwgXCJ0YXNrXCIgKyB0YXNrQ291bnQpLmF0dHIoXCJ4MVwiLCBjZW50ZXIpLmF0dHIoXCJ5MVwiLCB0YXNrLnkpLmF0dHIoXCJ4MlwiLCBjZW50ZXIpLmF0dHIoXCJ5MlwiLCBtYXhIZWlnaHQpLmF0dHIoXCJjbGFzc1wiLCBcInRhc2stbGluZVwiKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIFwiMXB4XCIpLmF0dHIoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiNCAyXCIpLmF0dHIoXCJzdHJva2VcIiwgXCIjNjY2XCIpO1xuICBkcmF3RmFjZShnLCB7XG4gICAgY3g6IGNlbnRlcixcbiAgICBjeTogMzAwICsgKDUgLSB0YXNrLnNjb3JlKSAqIDMwLFxuICAgIHNjb3JlOiB0YXNrLnNjb3JlXG4gIH0pO1xuICBjb25zdCByZWN0ID0gZ2V0Tm90ZVJlY3QoKTtcbiAgcmVjdC54ID0gdGFzay54O1xuICByZWN0LnkgPSB0YXNrLnk7XG4gIHJlY3QuZmlsbCA9IHRhc2suZmlsbDtcbiAgcmVjdC53aWR0aCA9IGNvbmYud2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gY29uZi5oZWlnaHQ7XG4gIHJlY3QuY2xhc3MgPSBcInRhc2sgdGFzay10eXBlLVwiICsgdGFzay5udW07XG4gIHJlY3QucnggPSAzO1xuICByZWN0LnJ5ID0gMztcbiAgZHJhd1JlY3QoZywgcmVjdCk7XG4gIHRhc2sueCArIDE0O1xuICBfZHJhd1RleHRDYW5kaWRhdGVGdW5jKGNvbmYpKFxuICAgIHRhc2sudGFzayxcbiAgICBnLFxuICAgIHJlY3QueCxcbiAgICByZWN0LnksXG4gICAgcmVjdC53aWR0aCxcbiAgICByZWN0LmhlaWdodCxcbiAgICB7IGNsYXNzOiBcInRhc2tcIiB9LFxuICAgIGNvbmYsXG4gICAgdGFzay5jb2xvdXJcbiAgKTtcbn07XG5jb25zdCBkcmF3QmFja2dyb3VuZFJlY3QgPSBmdW5jdGlvbihlbGVtLCBib3VuZHMpIHtcbiAgY29uc3QgcmVjdEVsZW0gPSBkcmF3UmVjdChlbGVtLCB7XG4gICAgeDogYm91bmRzLnN0YXJ0eCxcbiAgICB5OiBib3VuZHMuc3RhcnR5LFxuICAgIHdpZHRoOiBib3VuZHMuc3RvcHggLSBib3VuZHMuc3RhcnR4LFxuICAgIGhlaWdodDogYm91bmRzLnN0b3B5IC0gYm91bmRzLnN0YXJ0eSxcbiAgICBmaWxsOiBib3VuZHMuZmlsbCxcbiAgICBjbGFzczogXCJyZWN0XCJcbiAgfSk7XG4gIHJlY3RFbGVtLmxvd2VyKCk7XG59O1xuY29uc3QgZ2V0VGV4dE9iaiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBmaWxsOiB2b2lkIDAsXG4gICAgXCJ0ZXh0LWFuY2hvclwiOiBcInN0YXJ0XCIsXG4gICAgd2lkdGg6IDEwMCxcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICB0ZXh0TWFyZ2luOiAwLFxuICAgIHJ4OiAwLFxuICAgIHJ5OiAwXG4gIH07XG59O1xuY29uc3QgZ2V0Tm90ZVJlY3QgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgd2lkdGg6IDEwMCxcbiAgICBhbmNob3I6IFwic3RhcnRcIixcbiAgICBoZWlnaHQ6IDEwMCxcbiAgICByeDogMCxcbiAgICByeTogMFxuICB9O1xufTtcbmNvbnN0IF9kcmF3VGV4dENhbmRpZGF0ZUZ1bmMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gYnlUZXh0KGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycywgY29sb3VyKSB7XG4gICAgY29uc3QgdGV4dCA9IGcuYXBwZW5kKFwidGV4dFwiKS5hdHRyKFwieFwiLCB4ICsgd2lkdGggLyAyKS5hdHRyKFwieVwiLCB5ICsgaGVpZ2h0IC8gMiArIDUpLnN0eWxlKFwiZm9udC1jb2xvclwiLCBjb2xvdXIpLnN0eWxlKFwidGV4dC1hbmNob3JcIiwgXCJtaWRkbGVcIikudGV4dChjb250ZW50KTtcbiAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gIH1cbiAgZnVuY3Rpb24gYnlUc3Bhbihjb250ZW50LCBnLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB0ZXh0QXR0cnMsIGNvbmYsIGNvbG91cikge1xuICAgIGNvbnN0IHsgdGFza0ZvbnRTaXplLCB0YXNrRm9udEZhbWlseSB9ID0gY29uZjtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoLzxiclxccypcXC8/Pi9naSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZHkgPSBpICogdGFza0ZvbnRTaXplIC0gdGFza0ZvbnRTaXplICogKGxpbmVzLmxlbmd0aCAtIDEpIC8gMjtcbiAgICAgIGNvbnN0IHRleHQgPSBnLmFwcGVuZChcInRleHRcIikuYXR0cihcInhcIiwgeCArIHdpZHRoIC8gMikuYXR0cihcInlcIiwgeSkuYXR0cihcImZpbGxcIiwgY29sb3VyKS5zdHlsZShcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLnN0eWxlKFwiZm9udC1zaXplXCIsIHRhc2tGb250U2l6ZSkuc3R5bGUoXCJmb250LWZhbWlseVwiLCB0YXNrRm9udEZhbWlseSk7XG4gICAgICB0ZXh0LmFwcGVuZChcInRzcGFuXCIpLmF0dHIoXCJ4XCIsIHggKyB3aWR0aCAvIDIpLmF0dHIoXCJkeVwiLCBkeSkudGV4dChsaW5lc1tpXSk7XG4gICAgICB0ZXh0LmF0dHIoXCJ5XCIsIHkgKyBoZWlnaHQgLyAyKS5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJjZW50cmFsXCIpLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJjZW50cmFsXCIpO1xuICAgICAgX3NldFRleHRBdHRycyh0ZXh0LCB0ZXh0QXR0cnMpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBieUZvKGNvbnRlbnQsIGcsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHRleHRBdHRycywgY29uZikge1xuICAgIGNvbnN0IGJvZHkgPSBnLmFwcGVuZChcInN3aXRjaFwiKTtcbiAgICBjb25zdCBmID0gYm9keS5hcHBlbmQoXCJmb3JlaWduT2JqZWN0XCIpLmF0dHIoXCJ4XCIsIHgpLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJ3aWR0aFwiLCB3aWR0aCkuYXR0cihcImhlaWdodFwiLCBoZWlnaHQpLmF0dHIoXCJwb3NpdGlvblwiLCBcImZpeGVkXCIpO1xuICAgIGNvbnN0IHRleHQgPSBmLmFwcGVuZChcInhodG1sOmRpdlwiKS5zdHlsZShcImRpc3BsYXlcIiwgXCJ0YWJsZVwiKS5zdHlsZShcImhlaWdodFwiLCBcIjEwMCVcIikuc3R5bGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgdGV4dC5hcHBlbmQoXCJkaXZcIikuYXR0cihcImNsYXNzXCIsIFwibGFiZWxcIikuc3R5bGUoXCJkaXNwbGF5XCIsIFwidGFibGUtY2VsbFwiKS5zdHlsZShcInRleHQtYWxpZ25cIiwgXCJjZW50ZXJcIikuc3R5bGUoXCJ2ZXJ0aWNhbC1hbGlnblwiLCBcIm1pZGRsZVwiKS50ZXh0KGNvbnRlbnQpO1xuICAgIGJ5VHNwYW4oY29udGVudCwgYm9keSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgdGV4dEF0dHJzLCBjb25mKTtcbiAgICBfc2V0VGV4dEF0dHJzKHRleHQsIHRleHRBdHRycyk7XG4gIH1cbiAgZnVuY3Rpb24gX3NldFRleHRBdHRycyh0b1RleHQsIGZyb21UZXh0QXR0cnNEaWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZnJvbVRleHRBdHRyc0RpY3QpIHtcbiAgICAgIGlmIChrZXkgaW4gZnJvbVRleHRBdHRyc0RpY3QpIHtcbiAgICAgICAgdG9UZXh0LmF0dHIoa2V5LCBmcm9tVGV4dEF0dHJzRGljdFtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKGNvbmYpIHtcbiAgICByZXR1cm4gY29uZi50ZXh0UGxhY2VtZW50ID09PSBcImZvXCIgPyBieUZvIDogY29uZi50ZXh0UGxhY2VtZW50ID09PSBcIm9sZFwiID8gYnlUZXh0IDogYnlUc3BhbjtcbiAgfTtcbn0oKTtcbmNvbnN0IGluaXRHcmFwaGljcyA9IGZ1bmN0aW9uKGdyYXBoaWNzKSB7XG4gIGdyYXBoaWNzLmFwcGVuZChcImRlZnNcIikuYXBwZW5kKFwibWFya2VyXCIpLmF0dHIoXCJpZFwiLCBcImFycm93aGVhZFwiKS5hdHRyKFwicmVmWFwiLCA1KS5hdHRyKFwicmVmWVwiLCAyKS5hdHRyKFwibWFya2VyV2lkdGhcIiwgNikuYXR0cihcIm1hcmtlckhlaWdodFwiLCA0KS5hdHRyKFwib3JpZW50XCIsIFwiYXV0b1wiKS5hcHBlbmQoXCJwYXRoXCIpLmF0dHIoXCJkXCIsIFwiTSAwLDAgViA0IEw2LDIgWlwiKTtcbn07XG5mdW5jdGlvbiB3cmFwKHRleHQsIHdpZHRoKSB7XG4gIHRleHQuZWFjaChmdW5jdGlvbigpIHtcbiAgICB2YXIgdGV4dDIgPSBzZWxlY3QodGhpcyksIHdvcmRzID0gdGV4dDIudGV4dCgpLnNwbGl0KC8oXFxzK3w8YnI+KS8pLnJldmVyc2UoKSwgd29yZCwgbGluZSA9IFtdLCBsaW5lSGVpZ2h0ID0gMS4xLCB5ID0gdGV4dDIuYXR0cihcInlcIiksIGR5ID0gcGFyc2VGbG9hdCh0ZXh0Mi5hdHRyKFwiZHlcIikpLCB0c3BhbiA9IHRleHQyLnRleHQobnVsbCkuYXBwZW5kKFwidHNwYW5cIikuYXR0cihcInhcIiwgMCkuYXR0cihcInlcIiwgeSkuYXR0cihcImR5XCIsIGR5ICsgXCJlbVwiKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzLmxlbmd0aDsgaisrKSB7XG4gICAgICB3b3JkID0gd29yZHNbd29yZHMubGVuZ3RoIC0gMSAtIGpdO1xuICAgICAgbGluZS5wdXNoKHdvcmQpO1xuICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oXCIgXCIpLnRyaW0oKSk7XG4gICAgICBpZiAodHNwYW4ubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpID4gd2lkdGggfHwgd29yZCA9PT0gXCI8YnI+XCIpIHtcbiAgICAgICAgbGluZS5wb3AoKTtcbiAgICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oXCIgXCIpLnRyaW0oKSk7XG4gICAgICAgIGlmICh3b3JkID09PSBcIjxicj5cIikge1xuICAgICAgICAgIGxpbmUgPSBbXCJcIl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZSA9IFt3b3JkXTtcbiAgICAgICAgfVxuICAgICAgICB0c3BhbiA9IHRleHQyLmFwcGVuZChcInRzcGFuXCIpLmF0dHIoXCJ4XCIsIDApLmF0dHIoXCJ5XCIsIHkpLmF0dHIoXCJkeVwiLCBsaW5lSGVpZ2h0ICsgXCJlbVwiKS50ZXh0KHdvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5jb25zdCBkcmF3Tm9kZSA9IGZ1bmN0aW9uKGVsZW0sIG5vZGUsIGZ1bGxTZWN0aW9uLCBjb25mKSB7XG4gIGNvbnN0IHNlY3Rpb24gPSBmdWxsU2VjdGlvbiAlIE1BWF9TRUNUSU9OUyAtIDE7XG4gIGNvbnN0IG5vZGVFbGVtID0gZWxlbS5hcHBlbmQoXCJnXCIpO1xuICBub2RlLnNlY3Rpb24gPSBzZWN0aW9uO1xuICBub2RlRWxlbS5hdHRyKFxuICAgIFwiY2xhc3NcIixcbiAgICAobm9kZS5jbGFzcyA/IG5vZGUuY2xhc3MgKyBcIiBcIiA6IFwiXCIpICsgXCJ0aW1lbGluZS1ub2RlIFwiICsgKFwic2VjdGlvbi1cIiArIHNlY3Rpb24pXG4gICk7XG4gIGNvbnN0IGJrZ0VsZW0gPSBub2RlRWxlbS5hcHBlbmQoXCJnXCIpO1xuICBjb25zdCB0ZXh0RWxlbSA9IG5vZGVFbGVtLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IHR4dCA9IHRleHRFbGVtLmFwcGVuZChcInRleHRcIikudGV4dChub2RlLmRlc2NyKS5hdHRyKFwiZHlcIiwgXCIxZW1cIikuYXR0cihcImFsaWdubWVudC1iYXNlbGluZVwiLCBcIm1pZGRsZVwiKS5hdHRyKFwiZG9taW5hbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuYXR0cihcInRleHQtYW5jaG9yXCIsIFwibWlkZGxlXCIpLmNhbGwod3JhcCwgbm9kZS53aWR0aCk7XG4gIGNvbnN0IGJib3ggPSB0eHQubm9kZSgpLmdldEJCb3goKTtcbiAgY29uc3QgZm9udFNpemUgPSBjb25mLmZvbnRTaXplICYmIGNvbmYuZm9udFNpemUucmVwbGFjZSA/IGNvbmYuZm9udFNpemUucmVwbGFjZShcInB4XCIsIFwiXCIpIDogY29uZi5mb250U2l6ZTtcbiAgbm9kZS5oZWlnaHQgPSBiYm94LmhlaWdodCArIGZvbnRTaXplICogMS4xICogMC41ICsgbm9kZS5wYWRkaW5nO1xuICBub2RlLmhlaWdodCA9IE1hdGgubWF4KG5vZGUuaGVpZ2h0LCBub2RlLm1heEhlaWdodCk7XG4gIG5vZGUud2lkdGggPSBub2RlLndpZHRoICsgMiAqIG5vZGUucGFkZGluZztcbiAgdGV4dEVsZW0uYXR0cihcInRyYW5zZm9ybVwiLCBcInRyYW5zbGF0ZShcIiArIG5vZGUud2lkdGggLyAyICsgXCIsIFwiICsgbm9kZS5wYWRkaW5nIC8gMiArIFwiKVwiKTtcbiAgZGVmYXVsdEJrZyhia2dFbGVtLCBub2RlLCBzZWN0aW9uKTtcbiAgcmV0dXJuIG5vZGU7XG59O1xuY29uc3QgZ2V0VmlydHVhbE5vZGVIZWlnaHQgPSBmdW5jdGlvbihlbGVtLCBub2RlLCBjb25mKSB7XG4gIGNvbnN0IHRleHRFbGVtID0gZWxlbS5hcHBlbmQoXCJnXCIpO1xuICBjb25zdCB0eHQgPSB0ZXh0RWxlbS5hcHBlbmQoXCJ0ZXh0XCIpLnRleHQobm9kZS5kZXNjcikuYXR0cihcImR5XCIsIFwiMWVtXCIpLmF0dHIoXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiwgXCJtaWRkbGVcIikuYXR0cihcImRvbWluYW50LWJhc2VsaW5lXCIsIFwibWlkZGxlXCIpLmF0dHIoXCJ0ZXh0LWFuY2hvclwiLCBcIm1pZGRsZVwiKS5jYWxsKHdyYXAsIG5vZGUud2lkdGgpO1xuICBjb25zdCBiYm94ID0gdHh0Lm5vZGUoKS5nZXRCQm94KCk7XG4gIGNvbnN0IGZvbnRTaXplID0gY29uZi5mb250U2l6ZSAmJiBjb25mLmZvbnRTaXplLnJlcGxhY2UgPyBjb25mLmZvbnRTaXplLnJlcGxhY2UoXCJweFwiLCBcIlwiKSA6IGNvbmYuZm9udFNpemU7XG4gIHRleHRFbGVtLnJlbW92ZSgpO1xuICByZXR1cm4gYmJveC5oZWlnaHQgKyBmb250U2l6ZSAqIDEuMSAqIDAuNSArIG5vZGUucGFkZGluZztcbn07XG5jb25zdCBkZWZhdWx0QmtnID0gZnVuY3Rpb24oZWxlbSwgbm9kZSwgc2VjdGlvbikge1xuICBjb25zdCByZCA9IDU7XG4gIGVsZW0uYXBwZW5kKFwicGF0aFwiKS5hdHRyKFwiaWRcIiwgXCJub2RlLVwiICsgbm9kZS5pZCkuYXR0cihcImNsYXNzXCIsIFwibm9kZS1ia2cgbm9kZS1cIiArIG5vZGUudHlwZSkuYXR0cihcbiAgICBcImRcIixcbiAgICBgTTAgJHtub2RlLmhlaWdodCAtIHJkfSB2JHstbm9kZS5oZWlnaHQgKyAyICogcmR9IHEwLC01IDUsLTUgaCR7bm9kZS53aWR0aCAtIDIgKiByZH0gcTUsMCA1LDUgdiR7bm9kZS5oZWlnaHQgLSByZH0gSDAgWmBcbiAgKTtcbiAgZWxlbS5hcHBlbmQoXCJsaW5lXCIpLmF0dHIoXCJjbGFzc1wiLCBcIm5vZGUtbGluZS1cIiArIHNlY3Rpb24pLmF0dHIoXCJ4MVwiLCAwKS5hdHRyKFwieTFcIiwgbm9kZS5oZWlnaHQpLmF0dHIoXCJ4MlwiLCBub2RlLndpZHRoKS5hdHRyKFwieTJcIiwgbm9kZS5oZWlnaHQpO1xufTtcbmNvbnN0IHN2Z0RyYXcgPSB7XG4gIGRyYXdSZWN0LFxuICBkcmF3Q2lyY2xlLFxuICBkcmF3U2VjdGlvbixcbiAgZHJhd1RleHQsXG4gIGRyYXdMYWJlbCxcbiAgZHJhd1Rhc2ssXG4gIGRyYXdCYWNrZ3JvdW5kUmVjdCxcbiAgZ2V0VGV4dE9iaixcbiAgZ2V0Tm90ZVJlY3QsXG4gIGluaXRHcmFwaGljcyxcbiAgZHJhd05vZGUsXG4gIGdldFZpcnR1YWxOb2RlSGVpZ2h0XG59O1xuY29uc3QgZHJhdyA9IGZ1bmN0aW9uKHRleHQsIGlkLCB2ZXJzaW9uLCBkaWFnT2JqKSB7XG4gIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgY29uc3QgY29uZiA9IGdldENvbmZpZygpO1xuICBjb25zdCBMRUZUX01BUkdJTiA9IGNvbmYubGVmdE1hcmdpbiA/PyA1MDtcbiAgKF9iID0gKF9hID0gZGlhZ09iai5kYikuY2xlYXIpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgZGlhZ09iai5wYXJzZXIucGFyc2UodGV4dCArIFwiXFxuXCIpO1xuICBsb2cuZGVidWcoXCJ0aW1lbGluZVwiLCBkaWFnT2JqLmRiKTtcbiAgY29uc3Qgc2VjdXJpdHlMZXZlbCA9IGNvbmYuc2VjdXJpdHlMZXZlbDtcbiAgbGV0IHNhbmRib3hFbGVtZW50O1xuICBpZiAoc2VjdXJpdHlMZXZlbCA9PT0gXCJzYW5kYm94XCIpIHtcbiAgICBzYW5kYm94RWxlbWVudCA9IHNlbGVjdChcIiNpXCIgKyBpZCk7XG4gIH1cbiAgY29uc3Qgcm9vdCA9IHNlY3VyaXR5TGV2ZWwgPT09IFwic2FuZGJveFwiID8gKFxuICAgIC8vIEB0cy1pZ25vcmUgZDMgdHlwZXMgYXJlIHdyb25nXG4gICAgc2VsZWN0KHNhbmRib3hFbGVtZW50Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpXG4gICkgOiBzZWxlY3QoXCJib2R5XCIpO1xuICBjb25zdCBzdmcgPSByb290LnNlbGVjdChcIiNcIiArIGlkKTtcbiAgc3ZnLmFwcGVuZChcImdcIik7XG4gIGNvbnN0IHRhc2tzMiA9IGRpYWdPYmouZGIuZ2V0VGFza3MoKTtcbiAgY29uc3QgdGl0bGUgPSBkaWFnT2JqLmRiLmdldENvbW1vbkRiKCkuZ2V0RGlhZ3JhbVRpdGxlKCk7XG4gIGxvZy5kZWJ1ZyhcInRhc2tcIiwgdGFza3MyKTtcbiAgc3ZnRHJhdy5pbml0R3JhcGhpY3Moc3ZnKTtcbiAgY29uc3Qgc2VjdGlvbnMyID0gZGlhZ09iai5kYi5nZXRTZWN0aW9ucygpO1xuICBsb2cuZGVidWcoXCJzZWN0aW9uc1wiLCBzZWN0aW9uczIpO1xuICBsZXQgbWF4U2VjdGlvbkhlaWdodCA9IDA7XG4gIGxldCBtYXhUYXNrSGVpZ2h0ID0gMDtcbiAgbGV0IGRlcHRoWSA9IDA7XG4gIGxldCBzZWN0aW9uQmVnaW5ZID0gMDtcbiAgbGV0IG1hc3RlclggPSA1MCArIExFRlRfTUFSR0lOO1xuICBsZXQgbWFzdGVyWSA9IDUwO1xuICBzZWN0aW9uQmVnaW5ZID0gNTA7XG4gIGxldCBzZWN0aW9uTnVtYmVyID0gMDtcbiAgbGV0IGhhc1NlY3Rpb25zID0gdHJ1ZTtcbiAgc2VjdGlvbnMyLmZvckVhY2goZnVuY3Rpb24oc2VjdGlvbikge1xuICAgIGNvbnN0IHNlY3Rpb25Ob2RlID0ge1xuICAgICAgbnVtYmVyOiBzZWN0aW9uTnVtYmVyLFxuICAgICAgZGVzY3I6IHNlY3Rpb24sXG4gICAgICBzZWN0aW9uOiBzZWN0aW9uTnVtYmVyLFxuICAgICAgd2lkdGg6IDE1MCxcbiAgICAgIHBhZGRpbmc6IDIwLFxuICAgICAgbWF4SGVpZ2h0OiBtYXhTZWN0aW9uSGVpZ2h0XG4gICAgfTtcbiAgICBjb25zdCBzZWN0aW9uSGVpZ2h0ID0gc3ZnRHJhdy5nZXRWaXJ0dWFsTm9kZUhlaWdodChzdmcsIHNlY3Rpb25Ob2RlLCBjb25mKTtcbiAgICBsb2cuZGVidWcoXCJzZWN0aW9uSGVpZ2h0IGJlZm9yZSBkcmF3XCIsIHNlY3Rpb25IZWlnaHQpO1xuICAgIG1heFNlY3Rpb25IZWlnaHQgPSBNYXRoLm1heChtYXhTZWN0aW9uSGVpZ2h0LCBzZWN0aW9uSGVpZ2h0ICsgMjApO1xuICB9KTtcbiAgbGV0IG1heEV2ZW50Q291bnQgPSAwO1xuICBsZXQgbWF4RXZlbnRMaW5lTGVuZ3RoID0gMDtcbiAgbG9nLmRlYnVnKFwidGFza3MubGVuZ3RoXCIsIHRhc2tzMi5sZW5ndGgpO1xuICBmb3IgKGNvbnN0IFtpLCB0YXNrXSBvZiB0YXNrczIuZW50cmllcygpKSB7XG4gICAgY29uc3QgdGFza05vZGUgPSB7XG4gICAgICBudW1iZXI6IGksXG4gICAgICBkZXNjcjogdGFzayxcbiAgICAgIHNlY3Rpb246IHRhc2suc2VjdGlvbixcbiAgICAgIHdpZHRoOiAxNTAsXG4gICAgICBwYWRkaW5nOiAyMCxcbiAgICAgIG1heEhlaWdodDogbWF4VGFza0hlaWdodFxuICAgIH07XG4gICAgY29uc3QgdGFza0hlaWdodCA9IHN2Z0RyYXcuZ2V0VmlydHVhbE5vZGVIZWlnaHQoc3ZnLCB0YXNrTm9kZSwgY29uZik7XG4gICAgbG9nLmRlYnVnKFwidGFza0hlaWdodCBiZWZvcmUgZHJhd1wiLCB0YXNrSGVpZ2h0KTtcbiAgICBtYXhUYXNrSGVpZ2h0ID0gTWF0aC5tYXgobWF4VGFza0hlaWdodCwgdGFza0hlaWdodCArIDIwKTtcbiAgICBtYXhFdmVudENvdW50ID0gTWF0aC5tYXgobWF4RXZlbnRDb3VudCwgdGFzay5ldmVudHMubGVuZ3RoKTtcbiAgICBsZXQgbWF4RXZlbnRMaW5lTGVuZ3RoVGVtcCA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0YXNrLmV2ZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3QgZXZlbnQgPSB0YXNrLmV2ZW50c1tqXTtcbiAgICAgIGNvbnN0IGV2ZW50Tm9kZSA9IHtcbiAgICAgICAgZGVzY3I6IGV2ZW50LFxuICAgICAgICBzZWN0aW9uOiB0YXNrLnNlY3Rpb24sXG4gICAgICAgIG51bWJlcjogdGFzay5zZWN0aW9uLFxuICAgICAgICB3aWR0aDogMTUwLFxuICAgICAgICBwYWRkaW5nOiAyMCxcbiAgICAgICAgbWF4SGVpZ2h0OiA1MFxuICAgICAgfTtcbiAgICAgIG1heEV2ZW50TGluZUxlbmd0aFRlbXAgKz0gc3ZnRHJhdy5nZXRWaXJ0dWFsTm9kZUhlaWdodChzdmcsIGV2ZW50Tm9kZSwgY29uZik7XG4gICAgfVxuICAgIG1heEV2ZW50TGluZUxlbmd0aCA9IE1hdGgubWF4KG1heEV2ZW50TGluZUxlbmd0aCwgbWF4RXZlbnRMaW5lTGVuZ3RoVGVtcCk7XG4gIH1cbiAgbG9nLmRlYnVnKFwibWF4U2VjdGlvbkhlaWdodCBiZWZvcmUgZHJhd1wiLCBtYXhTZWN0aW9uSGVpZ2h0KTtcbiAgbG9nLmRlYnVnKFwibWF4VGFza0hlaWdodCBiZWZvcmUgZHJhd1wiLCBtYXhUYXNrSGVpZ2h0KTtcbiAgaWYgKHNlY3Rpb25zMiAmJiBzZWN0aW9uczIubGVuZ3RoID4gMCkge1xuICAgIHNlY3Rpb25zMi5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCB0YXNrc0ZvclNlY3Rpb24gPSB0YXNrczIuZmlsdGVyKCh0YXNrKSA9PiB0YXNrLnNlY3Rpb24gPT09IHNlY3Rpb24pO1xuICAgICAgY29uc3Qgc2VjdGlvbk5vZGUgPSB7XG4gICAgICAgIG51bWJlcjogc2VjdGlvbk51bWJlcixcbiAgICAgICAgZGVzY3I6IHNlY3Rpb24sXG4gICAgICAgIHNlY3Rpb246IHNlY3Rpb25OdW1iZXIsXG4gICAgICAgIHdpZHRoOiAyMDAgKiBNYXRoLm1heCh0YXNrc0ZvclNlY3Rpb24ubGVuZ3RoLCAxKSAtIDUwLFxuICAgICAgICBwYWRkaW5nOiAyMCxcbiAgICAgICAgbWF4SGVpZ2h0OiBtYXhTZWN0aW9uSGVpZ2h0XG4gICAgICB9O1xuICAgICAgbG9nLmRlYnVnKFwic2VjdGlvbk5vZGVcIiwgc2VjdGlvbk5vZGUpO1xuICAgICAgY29uc3Qgc2VjdGlvbk5vZGVXcmFwcGVyID0gc3ZnLmFwcGVuZChcImdcIik7XG4gICAgICBjb25zdCBub2RlID0gc3ZnRHJhdy5kcmF3Tm9kZShzZWN0aW9uTm9kZVdyYXBwZXIsIHNlY3Rpb25Ob2RlLCBzZWN0aW9uTnVtYmVyLCBjb25mKTtcbiAgICAgIGxvZy5kZWJ1ZyhcInNlY3Rpb25Ob2RlIG91dHB1dFwiLCBub2RlKTtcbiAgICAgIHNlY3Rpb25Ob2RlV3JhcHBlci5hdHRyKFwidHJhbnNmb3JtXCIsIGB0cmFuc2xhdGUoJHttYXN0ZXJYfSwgJHtzZWN0aW9uQmVnaW5ZfSlgKTtcbiAgICAgIG1hc3RlclkgKz0gbWF4U2VjdGlvbkhlaWdodCArIDUwO1xuICAgICAgaWYgKHRhc2tzRm9yU2VjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRyYXdUYXNrcyhcbiAgICAgICAgICBzdmcsXG4gICAgICAgICAgdGFza3NGb3JTZWN0aW9uLFxuICAgICAgICAgIHNlY3Rpb25OdW1iZXIsXG4gICAgICAgICAgbWFzdGVyWCxcbiAgICAgICAgICBtYXN0ZXJZLFxuICAgICAgICAgIG1heFRhc2tIZWlnaHQsXG4gICAgICAgICAgY29uZixcbiAgICAgICAgICBtYXhFdmVudENvdW50LFxuICAgICAgICAgIG1heEV2ZW50TGluZUxlbmd0aCxcbiAgICAgICAgICBtYXhTZWN0aW9uSGVpZ2h0LFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBtYXN0ZXJYICs9IDIwMCAqIE1hdGgubWF4KHRhc2tzRm9yU2VjdGlvbi5sZW5ndGgsIDEpO1xuICAgICAgbWFzdGVyWSA9IHNlY3Rpb25CZWdpblk7XG4gICAgICBzZWN0aW9uTnVtYmVyKys7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaGFzU2VjdGlvbnMgPSBmYWxzZTtcbiAgICBkcmF3VGFza3MoXG4gICAgICBzdmcsXG4gICAgICB0YXNrczIsXG4gICAgICBzZWN0aW9uTnVtYmVyLFxuICAgICAgbWFzdGVyWCxcbiAgICAgIG1hc3RlclksXG4gICAgICBtYXhUYXNrSGVpZ2h0LFxuICAgICAgY29uZixcbiAgICAgIG1heEV2ZW50Q291bnQsXG4gICAgICBtYXhFdmVudExpbmVMZW5ndGgsXG4gICAgICBtYXhTZWN0aW9uSGVpZ2h0LFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cbiAgY29uc3QgYm94ID0gc3ZnLm5vZGUoKS5nZXRCQm94KCk7XG4gIGxvZy5kZWJ1ZyhcImJvdW5kc1wiLCBib3gpO1xuICBpZiAodGl0bGUpIHtcbiAgICBzdmcuYXBwZW5kKFwidGV4dFwiKS50ZXh0KHRpdGxlKS5hdHRyKFwieFwiLCBib3gud2lkdGggLyAyIC0gTEVGVF9NQVJHSU4pLmF0dHIoXCJmb250LXNpemVcIiwgXCI0ZXhcIikuYXR0cihcImZvbnQtd2VpZ2h0XCIsIFwiYm9sZFwiKS5hdHRyKFwieVwiLCAyMCk7XG4gIH1cbiAgZGVwdGhZID0gaGFzU2VjdGlvbnMgPyBtYXhTZWN0aW9uSGVpZ2h0ICsgbWF4VGFza0hlaWdodCArIDE1MCA6IG1heFRhc2tIZWlnaHQgKyAxMDA7XG4gIGNvbnN0IGxpbmVXcmFwcGVyID0gc3ZnLmFwcGVuZChcImdcIikuYXR0cihcImNsYXNzXCIsIFwibGluZVdyYXBwZXJcIik7XG4gIGxpbmVXcmFwcGVyLmFwcGVuZChcImxpbmVcIikuYXR0cihcIngxXCIsIExFRlRfTUFSR0lOKS5hdHRyKFwieTFcIiwgZGVwdGhZKS5hdHRyKFwieDJcIiwgYm94LndpZHRoICsgMyAqIExFRlRfTUFSR0lOKS5hdHRyKFwieTJcIiwgZGVwdGhZKS5hdHRyKFwic3Ryb2tlLXdpZHRoXCIsIDQpLmF0dHIoXCJzdHJva2VcIiwgXCJibGFja1wiKS5hdHRyKFwibWFya2VyLWVuZFwiLCBcInVybCgjYXJyb3doZWFkKVwiKTtcbiAgc2V0dXBHcmFwaFZpZXdib3goXG4gICAgdm9pZCAwLFxuICAgIHN2ZyxcbiAgICAoKF9jID0gY29uZi50aW1lbGluZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jLnBhZGRpbmcpID8/IDUwLFxuICAgICgoX2QgPSBjb25mLnRpbWVsaW5lKSA9PSBudWxsID8gdm9pZCAwIDogX2QudXNlTWF4V2lkdGgpID8/IGZhbHNlXG4gICk7XG59O1xuY29uc3QgZHJhd1Rhc2tzID0gZnVuY3Rpb24oZGlhZ3JhbTIsIHRhc2tzMiwgc2VjdGlvbkNvbG9yLCBtYXN0ZXJYLCBtYXN0ZXJZLCBtYXhUYXNrSGVpZ2h0LCBjb25mLCBtYXhFdmVudENvdW50LCBtYXhFdmVudExpbmVMZW5ndGgsIG1heFNlY3Rpb25IZWlnaHQsIGlzV2l0aG91dFNlY3Rpb25zKSB7XG4gIHZhciBfYTtcbiAgZm9yIChjb25zdCB0YXNrIG9mIHRhc2tzMikge1xuICAgIGNvbnN0IHRhc2tOb2RlID0ge1xuICAgICAgZGVzY3I6IHRhc2sudGFzayxcbiAgICAgIHNlY3Rpb246IHNlY3Rpb25Db2xvcixcbiAgICAgIG51bWJlcjogc2VjdGlvbkNvbG9yLFxuICAgICAgd2lkdGg6IDE1MCxcbiAgICAgIHBhZGRpbmc6IDIwLFxuICAgICAgbWF4SGVpZ2h0OiBtYXhUYXNrSGVpZ2h0XG4gICAgfTtcbiAgICBsb2cuZGVidWcoXCJ0YXNrTm9kZVwiLCB0YXNrTm9kZSk7XG4gICAgY29uc3QgdGFza1dyYXBwZXIgPSBkaWFncmFtMi5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcInRhc2tXcmFwcGVyXCIpO1xuICAgIGNvbnN0IG5vZGUgPSBzdmdEcmF3LmRyYXdOb2RlKHRhc2tXcmFwcGVyLCB0YXNrTm9kZSwgc2VjdGlvbkNvbG9yLCBjb25mKTtcbiAgICBjb25zdCB0YXNrSGVpZ2h0ID0gbm9kZS5oZWlnaHQ7XG4gICAgbG9nLmRlYnVnKFwidGFza0hlaWdodCBhZnRlciBkcmF3XCIsIHRhc2tIZWlnaHQpO1xuICAgIHRhc2tXcmFwcGVyLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke21hc3Rlclh9LCAke21hc3Rlcll9KWApO1xuICAgIG1heFRhc2tIZWlnaHQgPSBNYXRoLm1heChtYXhUYXNrSGVpZ2h0LCB0YXNrSGVpZ2h0KTtcbiAgICBpZiAodGFzay5ldmVudHMpIHtcbiAgICAgIGNvbnN0IGxpbmVXcmFwcGVyID0gZGlhZ3JhbTIuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJsaW5lV3JhcHBlclwiKTtcbiAgICAgIGxldCBsaW5lTGVuZ3RoID0gbWF4VGFza0hlaWdodDtcbiAgICAgIG1hc3RlclkgKz0gMTAwO1xuICAgICAgbGluZUxlbmd0aCA9IGxpbmVMZW5ndGggKyBkcmF3RXZlbnRzKGRpYWdyYW0yLCB0YXNrLmV2ZW50cywgc2VjdGlvbkNvbG9yLCBtYXN0ZXJYLCBtYXN0ZXJZLCBjb25mKTtcbiAgICAgIG1hc3RlclkgLT0gMTAwO1xuICAgICAgbGluZVdyYXBwZXIuYXBwZW5kKFwibGluZVwiKS5hdHRyKFwieDFcIiwgbWFzdGVyWCArIDE5MCAvIDIpLmF0dHIoXCJ5MVwiLCBtYXN0ZXJZICsgbWF4VGFza0hlaWdodCkuYXR0cihcIngyXCIsIG1hc3RlclggKyAxOTAgLyAyKS5hdHRyKFxuICAgICAgICBcInkyXCIsXG4gICAgICAgIG1hc3RlclkgKyBtYXhUYXNrSGVpZ2h0ICsgKGlzV2l0aG91dFNlY3Rpb25zID8gbWF4VGFza0hlaWdodCA6IG1heFNlY3Rpb25IZWlnaHQpICsgbWF4RXZlbnRMaW5lTGVuZ3RoICsgMTIwXG4gICAgICApLmF0dHIoXCJzdHJva2Utd2lkdGhcIiwgMikuYXR0cihcInN0cm9rZVwiLCBcImJsYWNrXCIpLmF0dHIoXCJtYXJrZXItZW5kXCIsIFwidXJsKCNhcnJvd2hlYWQpXCIpLmF0dHIoXCJzdHJva2UtZGFzaGFycmF5XCIsIFwiNSw1XCIpO1xuICAgIH1cbiAgICBtYXN0ZXJYID0gbWFzdGVyWCArIDIwMDtcbiAgICBpZiAoaXNXaXRob3V0U2VjdGlvbnMgJiYgISgoX2EgPSBjb25mLnRpbWVsaW5lKSA9PSBudWxsID8gdm9pZCAwIDogX2EuZGlzYWJsZU11bHRpY29sb3IpKSB7XG4gICAgICBzZWN0aW9uQ29sb3IrKztcbiAgICB9XG4gIH1cbiAgbWFzdGVyWSA9IG1hc3RlclkgLSAxMDtcbn07XG5jb25zdCBkcmF3RXZlbnRzID0gZnVuY3Rpb24oZGlhZ3JhbTIsIGV2ZW50cywgc2VjdGlvbkNvbG9yLCBtYXN0ZXJYLCBtYXN0ZXJZLCBjb25mKSB7XG4gIGxldCBtYXhFdmVudEhlaWdodCA9IDA7XG4gIGNvbnN0IGV2ZW50QmVnaW5ZID0gbWFzdGVyWTtcbiAgbWFzdGVyWSA9IG1hc3RlclkgKyAxMDA7XG4gIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgY29uc3QgZXZlbnROb2RlID0ge1xuICAgICAgZGVzY3I6IGV2ZW50LFxuICAgICAgc2VjdGlvbjogc2VjdGlvbkNvbG9yLFxuICAgICAgbnVtYmVyOiBzZWN0aW9uQ29sb3IsXG4gICAgICB3aWR0aDogMTUwLFxuICAgICAgcGFkZGluZzogMjAsXG4gICAgICBtYXhIZWlnaHQ6IDUwXG4gICAgfTtcbiAgICBsb2cuZGVidWcoXCJldmVudE5vZGVcIiwgZXZlbnROb2RlKTtcbiAgICBjb25zdCBldmVudFdyYXBwZXIgPSBkaWFncmFtMi5hcHBlbmQoXCJnXCIpLmF0dHIoXCJjbGFzc1wiLCBcImV2ZW50V3JhcHBlclwiKTtcbiAgICBjb25zdCBub2RlID0gc3ZnRHJhdy5kcmF3Tm9kZShldmVudFdyYXBwZXIsIGV2ZW50Tm9kZSwgc2VjdGlvbkNvbG9yLCBjb25mKTtcbiAgICBjb25zdCBldmVudEhlaWdodCA9IG5vZGUuaGVpZ2h0O1xuICAgIG1heEV2ZW50SGVpZ2h0ID0gbWF4RXZlbnRIZWlnaHQgKyBldmVudEhlaWdodDtcbiAgICBldmVudFdyYXBwZXIuYXR0cihcInRyYW5zZm9ybVwiLCBgdHJhbnNsYXRlKCR7bWFzdGVyWH0sICR7bWFzdGVyWX0pYCk7XG4gICAgbWFzdGVyWSA9IG1hc3RlclkgKyAxMCArIGV2ZW50SGVpZ2h0O1xuICB9XG4gIG1hc3RlclkgPSBldmVudEJlZ2luWTtcbiAgcmV0dXJuIG1heEV2ZW50SGVpZ2h0O1xufTtcbmNvbnN0IHJlbmRlcmVyID0ge1xuICBzZXRDb25mOiAoKSA9PiB7XG4gIH0sXG4gIGRyYXdcbn07XG5jb25zdCBnZW5TZWN0aW9ucyA9IChvcHRpb25zKSA9PiB7XG4gIGxldCBzZWN0aW9uczIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgIG9wdGlvbnNbXCJsaW5lQ29sb3JcIiArIGldID0gb3B0aW9uc1tcImxpbmVDb2xvclwiICsgaV0gfHwgb3B0aW9uc1tcImNTY2FsZUludlwiICsgaV07XG4gICAgaWYgKGlzRGFyayhvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSkpIHtcbiAgICAgIG9wdGlvbnNbXCJsaW5lQ29sb3JcIiArIGldID0gbGlnaHRlbihvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSwgMjApO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSA9IGRhcmtlbihvcHRpb25zW1wibGluZUNvbG9yXCIgKyBpXSwgMjApO1xuICAgIH1cbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMuVEhFTUVfQ09MT1JfTElNSVQ7IGkrKykge1xuICAgIGNvbnN0IHN3ID0gXCJcIiArICgxNyAtIDMgKiBpKTtcbiAgICBzZWN0aW9uczIgKz0gYFxuICAgIC5zZWN0aW9uLSR7aSAtIDF9IHJlY3QsIC5zZWN0aW9uLSR7aSAtIDF9IHBhdGgsIC5zZWN0aW9uLSR7aSAtIDF9IGNpcmNsZSwgLnNlY3Rpb24tJHtpIC0gMX0gcGF0aCAge1xuICAgICAgZmlsbDogJHtvcHRpb25zW1wiY1NjYWxlXCIgKyBpXX07XG4gICAgfVxuICAgIC5zZWN0aW9uLSR7aSAtIDF9IHRleHQge1xuICAgICBmaWxsOiAke29wdGlvbnNbXCJjU2NhbGVMYWJlbFwiICsgaV19O1xuICAgIH1cbiAgICAubm9kZS1pY29uLSR7aSAtIDF9IHtcbiAgICAgIGZvbnQtc2l6ZTogNDBweDtcbiAgICAgIGNvbG9yOiAke29wdGlvbnNbXCJjU2NhbGVMYWJlbFwiICsgaV19O1xuICAgIH1cbiAgICAuc2VjdGlvbi1lZGdlLSR7aSAtIDF9e1xuICAgICAgc3Ryb2tlOiAke29wdGlvbnNbXCJjU2NhbGVcIiArIGldfTtcbiAgICB9XG4gICAgLmVkZ2UtZGVwdGgtJHtpIC0gMX17XG4gICAgICBzdHJva2Utd2lkdGg6ICR7c3d9O1xuICAgIH1cbiAgICAuc2VjdGlvbi0ke2kgLSAxfSBsaW5lIHtcbiAgICAgIHN0cm9rZTogJHtvcHRpb25zW1wiY1NjYWxlSW52XCIgKyBpXX0gO1xuICAgICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgIH1cblxuICAgIC5saW5lV3JhcHBlciBsaW5le1xuICAgICAgc3Ryb2tlOiAke29wdGlvbnNbXCJjU2NhbGVMYWJlbFwiICsgaV19IDtcbiAgICB9XG5cbiAgICAuZGlzYWJsZWQsIC5kaXNhYmxlZCBjaXJjbGUsIC5kaXNhYmxlZCB0ZXh0IHtcbiAgICAgIGZpbGw6IGxpZ2h0Z3JheTtcbiAgICB9XG4gICAgLmRpc2FibGVkIHRleHQge1xuICAgICAgZmlsbDogI2VmZWZlZjtcbiAgICB9XG4gICAgYDtcbiAgfVxuICByZXR1cm4gc2VjdGlvbnMyO1xufTtcbmNvbnN0IGdldFN0eWxlcyA9IChvcHRpb25zKSA9PiBgXG4gIC5lZGdlIHtcbiAgICBzdHJva2Utd2lkdGg6IDM7XG4gIH1cbiAgJHtnZW5TZWN0aW9ucyhvcHRpb25zKX1cbiAgLnNlY3Rpb24tcm9vdCByZWN0LCAuc2VjdGlvbi1yb290IHBhdGgsIC5zZWN0aW9uLXJvb3QgY2lyY2xlICB7XG4gICAgZmlsbDogJHtvcHRpb25zLmdpdDB9O1xuICB9XG4gIC5zZWN0aW9uLXJvb3QgdGV4dCB7XG4gICAgZmlsbDogJHtvcHRpb25zLmdpdEJyYW5jaExhYmVsMH07XG4gIH1cbiAgLmljb24tY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6MTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmVkZ2Uge1xuICAgIGZpbGw6IG5vbmU7XG4gIH1cbiAgLmV2ZW50V3JhcHBlciAge1xuICAgZmlsdGVyOiBicmlnaHRuZXNzKDEyMCUpO1xuICB9XG5gO1xuY29uc3Qgc3R5bGVzID0gZ2V0U3R5bGVzO1xuY29uc3QgZGlhZ3JhbSA9IHtcbiAgZGIsXG4gIHJlbmRlcmVyLFxuICBwYXJzZXI6IHBhcnNlciQxLFxuICBzdHlsZXNcbn07XG5leHBvcnQge1xuICBkaWFncmFtXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/mermaid/dist/timeline-definition-5ed366f4.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/attention.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/attention.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attention\": () => (/* binding */ attention)\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-classify-character */ \"../../../node_modules/micromark-util-classify-character/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"../../../node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n\n openingSequence = {\n type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence,\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongSequence : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisSequence,\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strongText : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasisText,\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.strong : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.emphasis,\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n context.parser.constructs.insideSpan.null,\n 'expected `insideSpan` to be populated'\n )\n\n // Between.\n nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(\n nextEvents,\n (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open - 1, index - open + 3, nextEvents)\n\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(previous)\n\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.underscore,\n 'expected asterisk or underscore'\n )\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = (0,micromark_util_classify_character__WEBPACK_IMPORTED_MODULE_4__.classifyCharacter)(code)\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(attentionMarkers, 'expected `attentionMarkers` to be populated')\n\n const open =\n !after ||\n (after === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && before) ||\n attentionMarkers.includes(code)\n const close =\n !before ||\n (before === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_6__.constants.characterGroupPunctuation && after) ||\n attentionMarkers.includes(previous)\n\n token._open = Boolean(\n marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? open : open && (before || !close)\n )\n token._close = Boolean(\n marker === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.asterisk ? close : close && (after || !open)\n )\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9hdHRlbnRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVtRDtBQUNnQjtBQUNkO0FBQ0Q7QUFDUTtBQUNSO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGFBQWEsY0FBYztBQUMzQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QyxzQ0FBc0M7QUFDdEM7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixnRkFBb0IsR0FBRyxrRkFBc0I7QUFDekU7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLDRCQUE0QixnRkFBb0IsR0FBRyxrRkFBc0I7QUFDekUsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw0RUFBZ0IsR0FBRyw4RUFBa0I7QUFDakUsbUNBQW1DO0FBQ25DLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCLHdFQUFZLEdBQUcsMEVBQWM7QUFDekQsbUNBQW1DO0FBQ25DLGlDQUFpQztBQUNqQzs7QUFFQSxnREFBZ0Q7QUFDaEQsbURBQW1EOztBQUVuRDs7QUFFQTtBQUNBO0FBQ0EseUJBQXlCLDREQUFJO0FBQzdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLDREQUFJO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLCtDQUFNO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qiw0REFBSTtBQUMzQjtBQUNBLFlBQVksc0VBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qiw0REFBSTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qiw0REFBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQSxVQUFVLDhEQUFNOztBQUVoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9GQUFpQjs7QUFFbEMsYUFBYSxtQkFBbUI7QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWLGVBQWUsMEVBQWMsYUFBYSw0RUFBZ0I7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0JBQWtCLG9GQUFpQjs7QUFFbkM7QUFDQSxJQUFJLCtDQUFNOztBQUVWO0FBQ0E7QUFDQSxpQkFBaUIsbUdBQW1DO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixtR0FBbUM7QUFDckQ7O0FBRUE7QUFDQSxpQkFBaUIsMEVBQWM7QUFDL0I7QUFDQTtBQUNBLGlCQUFpQiwwRUFBYztBQUMvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9hdHRlbnRpb24uanM/MzIyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtwdXNoLCBzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge2NsYXNzaWZ5Q2hhcmFjdGVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1jbGFzc2lmeS1jaGFyYWN0ZXInXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgYXR0ZW50aW9uID0ge1xuICBuYW1lOiAnYXR0ZW50aW9uJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQXR0ZW50aW9uLFxuICByZXNvbHZlQWxsOiByZXNvbHZlQWxsQXR0ZW50aW9uXG59XG5cbi8qKlxuICogVGFrZSBhbGwgZXZlbnRzIGFuZCByZXNvbHZlIGF0dGVudGlvbiB0byBlbXBoYXNpcyBvciBzdHJvbmcuXG4gKlxuICogQHR5cGUge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiByZXNvbHZlQWxsQXR0ZW50aW9uKGV2ZW50cywgY29udGV4dCkge1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG9wZW5cbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGdyb3VwXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCB0ZXh0XG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBvcGVuaW5nU2VxdWVuY2VcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGNsb3NpbmdTZXF1ZW5jZVxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IHVzZVxuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IG5leHRFdmVudHNcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvZmZzZXRcblxuICAvLyBXYWxrIHRocm91Z2ggYWxsIGV2ZW50cy5cbiAgLy9cbiAgLy8gTm90ZTogcGVyZm9ybWFuY2Ugb2YgdGhpcyBpcyBmaW5lIG9uIGFuIG1iIG9mIG5vcm1hbCBtYXJrZG93biwgYnV0IGl04oCZc1xuICAvLyBhIGJvdHRsZW5lY2sgZm9yIG1hbGljaW91cyBzdHVmZi5cbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgLy8gRmluZCBhIHRva2VuIHRoYXQgY2FuIGNsb3NlLlxuICAgIGlmIChcbiAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2F0dGVudGlvblNlcXVlbmNlJyAmJlxuICAgICAgZXZlbnRzW2luZGV4XVsxXS5fY2xvc2VcbiAgICApIHtcbiAgICAgIG9wZW4gPSBpbmRleFxuXG4gICAgICAvLyBOb3cgd2FsayBiYWNrIHRvIGZpbmQgYW4gb3BlbmVyLlxuICAgICAgd2hpbGUgKG9wZW4tLSkge1xuICAgICAgICAvLyBGaW5kIGEgdG9rZW4gdGhhdCBjYW4gb3BlbiB0aGUgY2xvc2VyLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnRzW29wZW5dWzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICBldmVudHNbb3Blbl1bMV0udHlwZSA9PT0gJ2F0dGVudGlvblNlcXVlbmNlJyAmJlxuICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5fb3BlbiAmJlxuICAgICAgICAgIC8vIElmIHRoZSBtYXJrZXJzIGFyZSB0aGUgc2FtZTpcbiAgICAgICAgICBjb250ZXh0LnNsaWNlU2VyaWFsaXplKGV2ZW50c1tvcGVuXVsxXSkuY2hhckNvZGVBdCgwKSA9PT1cbiAgICAgICAgICAgIGNvbnRleHQuc2xpY2VTZXJpYWxpemUoZXZlbnRzW2luZGV4XVsxXSkuY2hhckNvZGVBdCgwKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBJZiB0aGUgb3BlbmluZyBjYW4gY2xvc2Ugb3IgdGhlIGNsb3NpbmcgY2FuIG9wZW4sXG4gICAgICAgICAgLy8gYW5kIHRoZSBjbG9zZSBzaXplICppcyBub3QqIGEgbXVsdGlwbGUgb2YgdGhyZWUsXG4gICAgICAgICAgLy8gYnV0IHRoZSBzdW0gb2YgdGhlIG9wZW5pbmcgYW5kIGNsb3Npbmcgc2l6ZSAqaXMqIG11bHRpcGxlIG9mIHRocmVlLFxuICAgICAgICAgIC8vIHRoZW4gZG9u4oCZdCBtYXRjaC5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZXZlbnRzW29wZW5dWzFdLl9jbG9zZSB8fCBldmVudHNbaW5kZXhdWzFdLl9vcGVuKSAmJlxuICAgICAgICAgICAgKGV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0KSAlIDMgJiZcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIChldmVudHNbb3Blbl1bMV0uZW5kLm9mZnNldCAtXG4gICAgICAgICAgICAgICAgZXZlbnRzW29wZW5dWzFdLnN0YXJ0Lm9mZnNldCArXG4gICAgICAgICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC1cbiAgICAgICAgICAgICAgICBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCkgJVxuICAgICAgICAgICAgICAzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE51bWJlciBvZiBtYXJrZXJzIHRvIHVzZSBmcm9tIHRoZSBzZXF1ZW5jZS5cbiAgICAgICAgICB1c2UgPVxuICAgICAgICAgICAgZXZlbnRzW29wZW5dWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbb3Blbl1bMV0uc3RhcnQub2Zmc2V0ID4gMSAmJlxuICAgICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQgPiAxXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDFcblxuICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLmVuZClcbiAgICAgICAgICBjb25zdCBlbmQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbaW5kZXhdWzFdLnN0YXJ0KVxuICAgICAgICAgIG1vdmVQb2ludChzdGFydCwgLXVzZSlcbiAgICAgICAgICBtb3ZlUG9pbnQoZW5kLCB1c2UpXG5cbiAgICAgICAgICBvcGVuaW5nU2VxdWVuY2UgPSB7XG4gICAgICAgICAgICB0eXBlOiB1c2UgPiAxID8gdHlwZXMuc3Ryb25nU2VxdWVuY2UgOiB0eXBlcy5lbXBoYXNpc1NlcXVlbmNlLFxuICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5lbmQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNsb3NpbmdTZXF1ZW5jZSA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyB0eXBlcy5zdHJvbmdTZXF1ZW5jZSA6IHR5cGVzLmVtcGhhc2lzU2VxdWVuY2UsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2luZGV4XVsxXS5zdGFydCksXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyB0eXBlcy5zdHJvbmdUZXh0IDogdHlwZXMuZW1waGFzaXNUZXh0LFxuICAgICAgICAgICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5lbmQpLFxuICAgICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbaW5kZXhdWzFdLnN0YXJ0KVxuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyB0eXBlcy5zdHJvbmcgOiB0eXBlcy5lbXBoYXNpcyxcbiAgICAgICAgICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBvcGVuaW5nU2VxdWVuY2Uuc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBjbG9zaW5nU2VxdWVuY2UuZW5kKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBvcGVuaW5nU2VxdWVuY2Uuc3RhcnQpXG4gICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydCA9IE9iamVjdC5hc3NpZ24oe30sIGNsb3NpbmdTZXF1ZW5jZS5lbmQpXG5cbiAgICAgICAgICBuZXh0RXZlbnRzID0gW11cblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIG1hcmtlcnMgaW4gdGhlIG9wZW5pbmcsIGFkZCB0aGVtIGJlZm9yZS5cbiAgICAgICAgICBpZiAoZXZlbnRzW29wZW5dWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbb3Blbl1bMV0uc3RhcnQub2Zmc2V0KSB7XG4gICAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChuZXh0RXZlbnRzLCBbXG4gICAgICAgICAgICAgIFsnZW50ZXInLCBldmVudHNbb3Blbl1bMV0sIGNvbnRleHRdLFxuICAgICAgICAgICAgICBbJ2V4aXQnLCBldmVudHNbb3Blbl1bMV0sIGNvbnRleHRdXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE9wZW5pbmcuXG4gICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgWydlbnRlcicsIGdyb3VwLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZW50ZXInLCBvcGVuaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0Jywgb3BlbmluZ1NlcXVlbmNlLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZW50ZXInLCB0ZXh0LCBjb250ZXh0XVxuICAgICAgICAgIF0pXG5cbiAgICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLFxuICAgICAgICAgICAgJ2V4cGVjdGVkIGBpbnNpZGVTcGFuYCB0byBiZSBwb3B1bGF0ZWQnXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgLy8gQmV0d2Vlbi5cbiAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChcbiAgICAgICAgICAgIG5leHRFdmVudHMsXG4gICAgICAgICAgICByZXNvbHZlQWxsKFxuICAgICAgICAgICAgICBjb250ZXh0LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbCxcbiAgICAgICAgICAgICAgZXZlbnRzLnNsaWNlKG9wZW4gKyAxLCBpbmRleCksXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBDbG9zaW5nLlxuICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKG5leHRFdmVudHMsIFtcbiAgICAgICAgICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydlbnRlcicsIGNsb3NpbmdTZXF1ZW5jZSwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2V4aXQnLCBjbG9zaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgZ3JvdXAsIGNvbnRleHRdXG4gICAgICAgICAgXSlcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIG1hcmtlcnMgaW4gdGhlIGNsb3NpbmcsIGFkZCB0aGVtIGFmdGVyLlxuICAgICAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMlxuICAgICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgICBbJ2VudGVyJywgZXZlbnRzW2luZGV4XVsxXSwgY29udGV4dF0sXG4gICAgICAgICAgICAgIFsnZXhpdCcsIGV2ZW50c1tpbmRleF1bMV0sIGNvbnRleHRdXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3BsaWNlKGV2ZW50cywgb3BlbiAtIDEsIGluZGV4IC0gb3BlbiArIDMsIG5leHRFdmVudHMpXG5cbiAgICAgICAgICBpbmRleCA9IG9wZW4gKyBuZXh0RXZlbnRzLmxlbmd0aCAtIG9mZnNldCAtIDJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIHJlbWFpbmluZyBzZXF1ZW5jZXMuXG4gIGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnYXR0ZW50aW9uU2VxdWVuY2UnKSB7XG4gICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPSAnZGF0YSdcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQXR0ZW50aW9uKGVmZmVjdHMsIG9rKSB7XG4gIGNvbnN0IGF0dGVudGlvbk1hcmtlcnMgPSB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmF0dGVudGlvbk1hcmtlcnMubnVsbFxuICBjb25zdCBwcmV2aW91cyA9IHRoaXMucHJldmlvdXNcbiAgY29uc3QgYmVmb3JlID0gY2xhc3NpZnlDaGFyYWN0ZXIocHJldmlvdXMpXG5cbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgYSBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gY29kZXMuYXN0ZXJpc2sgfHwgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSxcbiAgICAgICdleHBlY3RlZCBhc3RlcmlzayBvciB1bmRlcnNjb3JlJ1xuICAgIClcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgZWZmZWN0cy5lbnRlcignYXR0ZW50aW9uU2VxdWVuY2UnKVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKipcbiAgICogICAgIF5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gZWZmZWN0cy5leGl0KCdhdHRlbnRpb25TZXF1ZW5jZScpXG5cbiAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogbW92ZSB0aGlzIHRvIHJlc29sdmVyLCBqdXN0IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBjb25zdCBhZnRlciA9IGNsYXNzaWZ5Q2hhcmFjdGVyKGNvZGUpXG5cbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgIGFzc2VydChhdHRlbnRpb25NYXJrZXJzLCAnZXhwZWN0ZWQgYGF0dGVudGlvbk1hcmtlcnNgIHRvIGJlIHBvcHVsYXRlZCcpXG5cbiAgICBjb25zdCBvcGVuID1cbiAgICAgICFhZnRlciB8fFxuICAgICAgKGFmdGVyID09PSBjb25zdGFudHMuY2hhcmFjdGVyR3JvdXBQdW5jdHVhdGlvbiAmJiBiZWZvcmUpIHx8XG4gICAgICBhdHRlbnRpb25NYXJrZXJzLmluY2x1ZGVzKGNvZGUpXG4gICAgY29uc3QgY2xvc2UgPVxuICAgICAgIWJlZm9yZSB8fFxuICAgICAgKGJlZm9yZSA9PT0gY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb24gJiYgYWZ0ZXIpIHx8XG4gICAgICBhdHRlbnRpb25NYXJrZXJzLmluY2x1ZGVzKHByZXZpb3VzKVxuXG4gICAgdG9rZW4uX29wZW4gPSBCb29sZWFuKFxuICAgICAgbWFya2VyID09PSBjb2Rlcy5hc3RlcmlzayA/IG9wZW4gOiBvcGVuICYmIChiZWZvcmUgfHwgIWNsb3NlKVxuICAgIClcbiAgICB0b2tlbi5fY2xvc2UgPSBCb29sZWFuKFxuICAgICAgbWFya2VyID09PSBjb2Rlcy5hc3RlcmlzayA/IGNsb3NlIDogY2xvc2UgJiYgKGFmdGVyIHx8ICFvcGVuKVxuICAgIClcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIE1vdmUgYSBwb2ludCBhIGJpdC5cbiAqXG4gKiBOb3RlOiBgbW92ZWAgb25seSB3b3JrcyBpbnNpZGUgbGluZXMhIEl04oCZcyBub3QgcG9zc2libGUgdG8gbW92ZSBwYXN0IG90aGVyXG4gKiBjaHVua3MgKHJlcGxhY2VtZW50IGNoYXJhY3RlcnMsIHRhYnMsIG9yIGxpbmUgZW5kaW5ncykuXG4gKlxuICogQHBhcmFtIHtQb2ludH0gcG9pbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBtb3ZlUG9pbnQocG9pbnQsIG9mZnNldCkge1xuICBwb2ludC5jb2x1bW4gKz0gb2Zmc2V0XG4gIHBvaW50Lm9mZnNldCArPSBvZmZzZXRcbiAgcG9pbnQuX2J1ZmZlckluZGV4ICs9IG9mZnNldFxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/attention.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/autolink.js": +/*!***************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/autolink.js ***! + \***************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"autolink\": () => (/* binding */ autolink)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst autolink = {name: 'autolink', tokenize: tokenizeAutolink}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol)\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)\n ) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.plusSign ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) &&\n size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkSchemeSizeMax\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink)\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiControl)(code)\n ) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.atSign) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAtext)(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n // Exit, then change the token type.\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkProtocol).type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkEmail\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolinkMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.autolink)\n return ok\n }\n\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if (\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) &&\n size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.autolinkDomainSizeMax\n ) {\n const next = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9hdXRvbGluay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQU9pQztBQUNtQjtBQUNRO0FBQ1I7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Ysa0JBQWtCOztBQUV6QjtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLFVBQVUsMEVBQWM7QUFDbEMsa0JBQWtCLDBFQUFjO0FBQ2hDLGtCQUFrQixnRkFBb0I7QUFDdEM7QUFDQSxpQkFBaUIsZ0ZBQW9CO0FBQ3JDLGtCQUFrQixrRkFBc0I7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsUUFBUSxvRUFBVTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMEVBQWM7QUFDN0IsZUFBZSxzRUFBVTtBQUN6QixlQUFlLHFFQUFTO0FBQ3hCLE1BQU0sMkVBQWlCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHVFQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0IsMEVBQWM7QUFDOUIsaUJBQWlCLHNFQUFVO0FBQzNCLGlCQUFpQixxRUFBUztBQUMxQixRQUFRLDJFQUFpQjtBQUN6QixlQUFlLCtGQUErQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDZFQUFpQjtBQUNsQyxtQkFBbUIsa0ZBQXNCO0FBQ3pDLG9CQUFvQixnRkFBb0I7QUFDeEM7QUFDQSxtQkFBbUIsZ0ZBQW9CO0FBQ3ZDLG1CQUFtQiwwRUFBYztBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSwwRUFBYztBQUM3QixNQUFNLHNFQUFZO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHdFQUFZO0FBQzdCO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLG9FQUFVO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFdBQVcsMkVBQWlCO0FBQzVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsNkVBQWlCO0FBQ2xDO0FBQ0EsbUJBQW1CLGtGQUFzQixTQUFTLCtFQUFtQjtBQUNyRSxvQkFBb0IsZ0ZBQW9CO0FBQ3hDO0FBQ0EsbUJBQW1CLGdGQUFvQjtBQUN2QyxtQkFBbUIsMEVBQWM7QUFDakM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHNFQUFVLElBQUksMkVBQWlCO0FBQy9DLGVBQWUsK0ZBQStCO0FBQzlDO0FBQ0EsNEJBQTRCLHNFQUFVO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9hdXRvbGluay5qcz9kNDJjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge1xuICBhc2NpaUFscGhhLFxuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgYXNjaWlBdGV4dCxcbiAgYXNjaWlDb250cm9sXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGF1dG9saW5rID0ge25hbWU6ICdhdXRvbGluaycsIHRva2VuaXplOiB0b2tlbml6ZUF1dG9saW5rfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUF1dG9saW5rKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgbGV0IHNpemUgPSAwXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGFuIGF1dG9saW5rLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVzc1RoYW4sICdleHBlY3RlZCBgPGAnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuYXV0b2xpbmspXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5hdXRvbGlua01hcmtlcilcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMuYXV0b2xpbmtNYXJrZXIpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5hdXRvbGlua1Byb3RvY29sKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCBwcm90b2NvbCBvciBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzY2hlbWVPckVtYWlsQXRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gZW1haWxBdGV4dChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHNlY29uZCBieXRlIG9mIHByb3RvY29sIG9yIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzY2hlbWVPckVtYWlsQXRleHQoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpYyBhbmQgYCtgLCBgLWAsIGFuZCBgLmAuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMucGx1c1NpZ24gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmRhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmRvdCB8fFxuICAgICAgYXNjaWlBbHBoYW51bWVyaWMoY29kZSlcbiAgICApIHtcbiAgICAgIC8vIENvdW50IHRoZSBwcmV2aW91cyBhbHBoYWJldGljYWwgZnJvbSBgb3BlbmAgdG9vLlxuICAgICAgc2l6ZSA9IDFcbiAgICAgIHJldHVybiBzY2hlbWVJbnNpZGVPckVtYWlsQXRleHQoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gZW1haWxBdGV4dChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGFtYmlndW91cyBwcm90b2NvbCBvciBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2NoZW1lSW5zaWRlT3JFbWFpbEF0ZXh0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuY29sb24pIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSA9IDBcbiAgICAgIHJldHVybiB1cmxJbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWMgYW5kIGArYCwgYC1gLCBhbmQgYC5gLlxuICAgIGlmIChcbiAgICAgIChjb2RlID09PSBjb2Rlcy5wbHVzU2lnbiB8fFxuICAgICAgICBjb2RlID09PSBjb2Rlcy5kYXNoIHx8XG4gICAgICAgIGNvZGUgPT09IGNvZGVzLmRvdCB8fFxuICAgICAgICBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkgJiZcbiAgICAgIHNpemUrKyA8IGNvbnN0YW50cy5hdXRvbGlua1NjaGVtZVNpemVNYXhcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNjaGVtZUluc2lkZU9yRW1haWxBdGV4dFxuICAgIH1cblxuICAgIHNpemUgPSAwXG4gICAgcmV0dXJuIGVtYWlsQXRleHQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBwcm90b2NvbCwgaW4gVVJMLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdXJsSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5hdXRvbGlua1Byb3RvY29sKVxuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5hdXRvbGlua01hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmF1dG9saW5rTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmF1dG9saW5rKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCwgc3BhY2UsIG9yIGA8YC5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNwYWNlIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiB8fFxuICAgICAgYXNjaWlDb250cm9sKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHVybEluc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGVtYWlsIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxBdGV4dChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmF0U2lnbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW1haWxBdFNpZ25PckRvdFxuICAgIH1cblxuICAgIGlmIChhc2NpaUF0ZXh0KGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBlbWFpbEF0ZXh0XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBhZnRlciBhdC1zaWduIG9yIGRvdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgIF4gICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxBdFNpZ25PckRvdChjb2RlKSB7XG4gICAgcmV0dXJuIGFzY2lpQWxwaGFudW1lcmljKGNvZGUpID8gZW1haWxMYWJlbChjb2RlKSA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCB3aGVyZSBgLmAgYW5kIGA+YCBhcmUgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxMYWJlbChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRvdCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplID0gMFxuICAgICAgcmV0dXJuIGVtYWlsQXRTaWduT3JEb3RcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIC8vIEV4aXQsIHRoZW4gY2hhbmdlIHRoZSB0b2tlbiB0eXBlLlxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmF1dG9saW5rUHJvdG9jb2wpLnR5cGUgPSB0eXBlcy5hdXRvbGlua0VtYWlsXG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmF1dG9saW5rTWFya2VyKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYXV0b2xpbmtNYXJrZXIpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYXV0b2xpbmspXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG5cbiAgICByZXR1cm4gZW1haWxWYWx1ZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCB3aGVyZSBgLmAgYW5kIGA+YCBhcmUgKm5vdCogYWxsb3dlZC5cbiAgICpcbiAgICogVGhvdWdoLCB0aGlzIGlzIGFsc28gdXNlZCBpbiBgZW1haWxMYWJlbGAgdG8gcGFyc2Ugb3RoZXIgdmFsdWVzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXgtYW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVtYWlsVmFsdWUoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpYyBvciBgLWAuXG4gICAgaWYgKFxuICAgICAgKGNvZGUgPT09IGNvZGVzLmRhc2ggfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpICYmXG4gICAgICBzaXplKysgPCBjb25zdGFudHMuYXV0b2xpbmtEb21haW5TaXplTWF4XG4gICAgKSB7XG4gICAgICBjb25zdCBuZXh0ID0gY29kZSA9PT0gY29kZXMuZGFzaCA/IGVtYWlsVmFsdWUgOiBlbWFpbExhYmVsXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBuZXh0XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/autolink.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"blankLine\": () => (/* binding */ blankLine)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst blankLine = {tokenize: tokenizeBlankLine, partial: true}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_1__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code) ? ok(code) : nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9ibGFuay1saW5lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDc0I7QUFDdEI7QUFDQTs7QUFFcEQsV0FBVyxXQUFXO0FBQ2YsbUJBQW1COztBQUUxQjtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsV0FBVyx1RUFBYTtBQUN4QixRQUFRLHFFQUFZLGlCQUFpQiw0RUFBZ0I7QUFDckQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLG9CQUFvQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNuRDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2Rldi9saWIvYmxhbmstbGluZS5qcz85NmM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBibGFua0xpbmUgPSB7dG9rZW5pemU6IHRva2VuaXplQmxhbmtMaW5lLCBwYXJ0aWFsOiB0cnVlfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsYW5rTGluZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBibGFuayBsaW5lLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IGDikKBgIHJlcHJlc2VudHMgYSBzcGFjZSBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCDikKDikKDikIpcbiAgICogICAgIF5cbiAgICogPiB8IOKQilxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlciwgdHlwZXMubGluZVByZWZpeCkoY29kZSlcbiAgICAgIDogYWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBlb2YvZW9sLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IGDikKBgIHJlcHJlc2VudHMgYSBzcGFjZSBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCDikKDikKDikIpcbiAgICogICAgICAgXlxuICAgKiA+IHwg4pCKXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgPyBvayhjb2RlKSA6IG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/block-quote.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/block-quote.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"blockQuote\": () => (/* binding */ blockQuote)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {tokenize: tokenizeBlockQuoteContinuation},\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n const state = self.containerState\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(state, 'expected `containerState` to be defined in container')\n\n if (!state.open) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote, {_container: true})\n state.open = true\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuoteMarker)\n return after\n }\n\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefixWhitespace)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n return ok\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuotePrefix)\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(\n effects,\n contBefore,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n )(code)\n }\n\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.blockQuote)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9ibG9jay1xdW90ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHVDQUF1QztBQUNwRCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDRTtBQUNGO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQSxpQkFBaUIseUNBQXlDO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDOztBQUVBLE1BQU0sK0NBQU07O0FBRVo7QUFDQSxzQkFBc0IsNEVBQWdCLEdBQUcsaUJBQWlCO0FBQzFEO0FBQ0E7O0FBRUEsb0JBQW9CLGtGQUFzQjtBQUMxQyxvQkFBb0Isa0ZBQXNCO0FBQzFDO0FBQ0EsbUJBQW1CLGtGQUFzQjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsUUFBUSx1RUFBYTtBQUNyQixvQkFBb0IsNEZBQWdDO0FBQ3BEO0FBQ0EsbUJBQW1CLDRGQUFnQztBQUNuRCxtQkFBbUIsa0ZBQXNCO0FBQ3pDO0FBQ0E7O0FBRUEsaUJBQWlCLGtGQUFzQjtBQUN2QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsUUFBUSx1RUFBYTtBQUNyQjtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxxRUFBWTtBQUN6QjtBQUNBO0FBQ0EsUUFBUSw0RUFBZ0I7QUFDeEI7QUFDQTtBQUNBLFlBQVksaUZBQWlCO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsZUFBZSw0RUFBZ0I7QUFDL0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9ibG9jay1xdW90ZS5qcz9kNjQzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FeGl0ZXJ9IEV4aXRlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGJsb2NrUXVvdGUgPSB7XG4gIG5hbWU6ICdibG9ja1F1b3RlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQmxvY2tRdW90ZVN0YXJ0LFxuICBjb250aW51YXRpb246IHt0b2tlbml6ZTogdG9rZW5pemVCbG9ja1F1b3RlQ29udGludWF0aW9ufSxcbiAgZXhpdFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsb2NrUXVvdGVTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGJsb2NrIHF1b3RlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPiBhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHNlbGYuY29udGFpbmVyU3RhdGVcblxuICAgICAgYXNzZXJ0KHN0YXRlLCAnZXhwZWN0ZWQgYGNvbnRhaW5lclN0YXRlYCB0byBiZSBkZWZpbmVkIGluIGNvbnRhaW5lcicpXG5cbiAgICAgIGlmICghc3RhdGUub3Blbikge1xuICAgICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmJsb2NrUXVvdGUsIHtfY29udGFpbmVyOiB0cnVlfSlcbiAgICAgICAgc3RhdGUub3BlbiA9IHRydWVcbiAgICAgIH1cblxuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5ibG9ja1F1b3RlUHJlZml4KVxuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5ibG9ja1F1b3RlTWFya2VyKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYmxvY2tRdW90ZU1hcmtlcilcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPmAsIGJlZm9yZSBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPiBhXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYmxvY2tRdW90ZVByZWZpeClcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5ibG9ja1F1b3RlUHJlZml4KVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogU3RhcnQgb2YgYmxvY2sgcXVvdGUgY29udGludWF0aW9uLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiAgIHwgPiBhXG4gKiA+IHwgPiBiXG4gKiAgICAgXlxuICogYGBgXG4gKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQmxvY2tRdW90ZUNvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIGNvbnRTdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBibG9jayBxdW90ZSBjb250aW51YXRpb24uXG4gICAqXG4gICAqIEFsc28gdXNlZCB0byBwYXJzZSB0aGUgZmlyc3QgYmxvY2sgcXVvdGUgb3BlbmluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ID4gYVxuICAgKiA+IHwgPiBiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250U3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgYXNzZXJ0KFxuICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbCxcbiAgICAgICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgICAgIClcblxuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgY29udEJlZm9yZSxcbiAgICAgICAgdHlwZXMubGluZVByZWZpeCxcbiAgICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IGNvbnN0YW50cy50YWJTaXplXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRCZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBgPmAsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIEFsc28gdXNlZCB0byBwYXJzZSB0aGUgZmlyc3QgYmxvY2sgcXVvdGUgb3BlbmluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ID4gYVxuICAgKiA+IHwgPiBiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250QmVmb3JlKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGJsb2NrUXVvdGUsIG9rLCBub2spKGNvZGUpXG4gIH1cbn1cblxuLyoqIEB0eXBlIHtFeGl0ZXJ9ICovXG5mdW5jdGlvbiBleGl0KGVmZmVjdHMpIHtcbiAgZWZmZWN0cy5leGl0KHR5cGVzLmJsb2NrUXVvdGUpXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/block-quote.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/character-escape.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/character-escape.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"characterEscape\": () => (/* binding */ characterEscape)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\\\`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.escapeMarker)\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiPunctuation)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscapeValue)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterEscape)\n return ok\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jaGFyYWN0ZXItZXNjYXBlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFeUQ7QUFDTDtBQUNBO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLDJFQUFlO0FBQ25DLGtCQUFrQixpRkFBcUI7QUFDdkMsa0JBQWtCLDhFQUFrQjtBQUNwQztBQUNBLGlCQUFpQiw4RUFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMEVBQWdCO0FBQ3hCLG9CQUFvQixzRkFBMEI7QUFDOUM7QUFDQSxtQkFBbUIsc0ZBQTBCO0FBQzdDLG1CQUFtQixpRkFBcUI7QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jaGFyYWN0ZXItZXNjYXBlLmpzP2Y5MTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7YXNjaWlQdW5jdHVhdGlvbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckVzY2FwZSA9IHtcbiAgbmFtZTogJ2NoYXJhY3RlckVzY2FwZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNoYXJhY3RlckVzY2FwZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNoYXJhY3RlckVzY2FwZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjaGFyYWN0ZXIgZXNjYXBlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcKmJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmJhY2tzbGFzaCwgJ2V4cGVjdGVkIGBcXFxcYCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaGFyYWN0ZXJFc2NhcGUpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5lc2NhcGVNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmVzY2FwZU1hcmtlcilcbiAgICByZXR1cm4gaW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgcHVuY3R1YXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIC8vIEFTQ0lJIHB1bmN0dWF0aW9uLlxuICAgIGlmIChhc2NpaVB1bmN0dWF0aW9uKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlckVzY2FwZVZhbHVlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2hhcmFjdGVyRXNjYXBlVmFsdWUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2hhcmFjdGVyRXNjYXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/character-escape.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/character-reference.js": +/*!**************************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/character-reference.js ***! + \**************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"characterReference\": () => (/* binding */ characterReference)\n/* harmony export */ });\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! decode-named-character-reference */ \"../../../node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.ampersand, 'expected `&`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.numberSign) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerNumeric)\n return numeric\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceNamedSizeMax\n test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.uppercaseX || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lowercaseX) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarkerHexadecimal)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceHexadecimalSizeMax\n test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiHexDigit\n return value\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n max = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.characterReferenceDecimalSizeMax\n test = micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.semicolon && size) {\n const token = effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceValue)\n\n if (\n test === micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric &&\n !(0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_5__.decodeNamedCharacterReference)(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReferenceMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.characterReference)\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jaGFyYWN0ZXItcmVmZXJlbmNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUU4RTtBQUs3QztBQUNtQjtBQUNRO0FBQ1I7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLFVBQVUsMkVBQWU7QUFDbkMsa0JBQWtCLG9GQUF3QjtBQUMxQyxrQkFBa0IsMEZBQThCO0FBQ2hEO0FBQ0EsaUJBQWlCLDBGQUE4QjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNEVBQWdCO0FBQ2pDLG9CQUFvQixpR0FBcUM7QUFDekQ7QUFDQSxtQkFBbUIsaUdBQXFDO0FBQ3hEO0FBQ0E7O0FBRUEsa0JBQWtCLHlGQUE2QjtBQUMvQyxVQUFVLHdHQUF3QztBQUNsRCxXQUFXLHVFQUFpQjtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDRFQUFnQixhQUFhLDRFQUFnQjtBQUM5RCxvQkFBb0IscUdBQXlDO0FBQzdEO0FBQ0EsbUJBQW1CLHFHQUF5QztBQUM1RCxvQkFBb0IseUZBQTZCO0FBQ2pELFlBQVksOEdBQThDO0FBQzFELGFBQWEsbUVBQWE7QUFDMUI7QUFDQTs7QUFFQSxrQkFBa0IseUZBQTZCO0FBQy9DLFVBQVUsMEdBQTBDO0FBQ3BELFdBQVcsZ0VBQVU7QUFDckI7QUFDQTs7QUFFQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDJFQUFlO0FBQ2hDLGlDQUFpQyx5RkFBNkI7O0FBRTlEO0FBQ0EsaUJBQWlCLHVFQUFpQjtBQUNsQyxTQUFTLCtGQUE2QjtBQUN0QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQiwwRkFBOEI7QUFDbEQ7QUFDQSxtQkFBbUIsMEZBQThCO0FBQ2pELG1CQUFtQixvRkFBd0I7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jaGFyYWN0ZXItcmVmZXJlbmNlLmpzP2YzMDAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnZGVjb2RlLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge1xuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgYXNjaWlEaWdpdCxcbiAgYXNjaWlIZXhEaWdpdFxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjaGFyYWN0ZXJSZWZlcmVuY2UgPSB7XG4gIG5hbWU6ICdjaGFyYWN0ZXJSZWZlcmVuY2UnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDaGFyYWN0ZXJSZWZlcmVuY2Vcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDaGFyYWN0ZXJSZWZlcmVuY2UoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBtYXhcbiAgLyoqIEB0eXBlIHsoY29kZTogQ29kZSkgPT4gYm9vbGVhbn0gKi9cbiAgbGV0IHRlc3RcblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmYW1wO2JcbiAgICogICAgICBeXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgIF5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmFtcGVyc2FuZCwgJ2V4cGVjdGVkIGAmYCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2UpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZU1hcmtlcilcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAmYCwgYXQgYCNgIGZvciBudW1lcmljIHJlZmVyZW5jZXMgb3IgYWxwaGFudW1lcmljIGZvciBuYW1lZFxuICAgKiByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSZhbXA7YlxuICAgKiAgICAgICBeXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgICBeXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5udW1iZXJTaWduKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljKVxuICAgICAgcmV0dXJuIG51bWVyaWNcbiAgICB9XG5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZVZhbHVlKVxuICAgIG1heCA9IGNvbnN0YW50cy5jaGFyYWN0ZXJSZWZlcmVuY2VOYW1lZFNpemVNYXhcbiAgICB0ZXN0ID0gYXNjaWlBbHBoYW51bWVyaWNcbiAgICByZXR1cm4gdmFsdWUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgI2AsIGF0IGB4YCBmb3IgaGV4YWRlY2ltYWxzIG9yIGRpZ2l0IGZvciBkZWNpbWFscy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBudW1lcmljKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMudXBwZXJjYXNlWCB8fCBjb2RlID09PSBjb2Rlcy5sb3dlcmNhc2VYKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwpXG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZVZhbHVlKVxuICAgICAgbWF4ID0gY29uc3RhbnRzLmNoYXJhY3RlclJlZmVyZW5jZUhleGFkZWNpbWFsU2l6ZU1heFxuICAgICAgdGVzdCA9IGFzY2lpSGV4RGlnaXRcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUpXG4gICAgbWF4ID0gY29uc3RhbnRzLmNoYXJhY3RlclJlZmVyZW5jZURlY2ltYWxTaXplTWF4XG4gICAgdGVzdCA9IGFzY2lpRGlnaXRcbiAgICByZXR1cm4gdmFsdWUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBtYXJrZXJzIChgJiN4YCwgYCYjYCwgb3IgYCZgKSwgaW4gdmFsdWUsIGJlZm9yZSBgO2AuXG4gICAqXG4gICAqIFRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIGtpbmQgZGVmaW5lcyB3aGF0IGFuZCBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZVxuICAgKiBhbGxvd2VkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSZhbXA7YlxuICAgKiAgICAgICBeXl5cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgICBeXl5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB2YWx1ZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnNlbWljb2xvbiAmJiBzaXplKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZXhpdCh0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZSlcblxuICAgICAgaWYgKFxuICAgICAgICB0ZXN0ID09PSBhc2NpaUFscGhhbnVtZXJpYyAmJlxuICAgICAgICAhZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2Uoc2VsZi5zbGljZVNlcmlhbGl6ZSh0b2tlbikpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBkbzogYG1hcmtkb3duLXJzYCB1c2VzIGEgZGlmZmVyZW50IG5hbWU6XG4gICAgICAvLyBgQ2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyU2VtaWAuXG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZU1hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNoYXJhY3RlclJlZmVyZW5jZU1hcmtlcilcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaGFyYWN0ZXJSZWZlcmVuY2UpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG5cbiAgICBpZiAodGVzdChjb2RlKSAmJiBzaXplKysgPCBtYXgpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/character-reference.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"codeFenced\": () => (/* binding */ codeFenced)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nconst codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {tokenize: tokenizeCloseStart, partial: true}\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.tilde,\n 'expected `` ` `` or `~`'\n )\n\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n\n marker = code\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence)\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n\n if (sizeOpen < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.codeFencedSequenceSizeMin) {\n return nok(code)\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence)\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, infoBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence)\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo)\n return infoBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceInfo)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, metaBefore, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) {\n return nok(code)\n }\n\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n return infoBefore(code)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceMeta)\n return infoBefore(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent && code === marker) {\n return nok(code)\n }\n\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n effects,\n beforeContentChunk,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue)\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue)\n return beforeContentChunk(code)\n }\n\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFenced)\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n // To do: `enter` here or in next state?\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence)\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n effects,\n beforeSequenceClose,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.tabSize\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence)\n return sequenceClose(code)\n }\n\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n\n if (size >= sizeOpen) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFenceSequence)\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, sequenceCloseAfter, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.whitespace)(code)\n : sequenceCloseAfter(code)\n }\n\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFencedFence)\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected eol')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jb2RlLWZlbmNlZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDc0I7QUFDdEI7QUFDUTtBQUNSO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLFdBQVc7QUFDeEIsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsZUFBZSw2RUFBaUIsYUFBYSx1RUFBVztBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQkFBK0IsNEVBQWdCO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsNEVBQWdCO0FBQ2xDLGtCQUFrQixpRkFBcUI7QUFDdkMsa0JBQWtCLHlGQUE2QjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixtR0FBbUM7QUFDdEQ7QUFDQTs7QUFFQSxpQkFBaUIseUZBQTZCO0FBQzlDLFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWSxzQkFBc0IsNEVBQWdCO0FBQzFEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRCxtQkFBbUIsaUZBQXFCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixxRkFBeUI7QUFDM0Msa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hELG1CQUFtQiw2RUFBaUI7QUFDcEMsbUJBQW1CLHFGQUF5QjtBQUM1QztBQUNBOztBQUVBLFFBQVEsdUVBQWE7QUFDckIsbUJBQW1CLDZFQUFpQjtBQUNwQyxtQkFBbUIscUZBQXlCO0FBQzVDLGFBQWEscUVBQVksc0JBQXNCLDRFQUFnQjtBQUMvRDs7QUFFQSxpQkFBaUIsNkVBQWlCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVMsSUFBSSw0RUFBa0I7QUFDaEQ7QUFDQTs7QUFFQSxrQkFBa0IscUZBQXlCO0FBQzNDLGtCQUFrQiw2RUFBaUIsR0FBRyxhQUFhLDJGQUEyQixDQUFDO0FBQy9FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRCxtQkFBbUIsNkVBQWlCO0FBQ3BDLG1CQUFtQixxRkFBeUI7QUFDNUM7QUFDQTs7QUFFQSxpQkFBaUIsNkVBQWlCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU0sQ0FBQyw0RUFBa0I7QUFDN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSw4Q0FBTSxDQUFDLDRFQUFrQjtBQUM3QixrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxnQ0FBZ0MsdUVBQWE7QUFDN0MsUUFBUSxxRUFBWTtBQUNwQjtBQUNBO0FBQ0EsVUFBVSw0RUFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRDtBQUNBOztBQUVBLGtCQUFrQiwrRUFBbUI7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hELG1CQUFtQiwrRUFBbUI7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWixZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsTUFBTSwrQ0FBTSxDQUFDLDRFQUFrQjtBQUMvQixvQkFBb0IsNEVBQWdCO0FBQ3BDO0FBQ0EsbUJBQW1CLDRFQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsaUZBQXFCO0FBQ3pDLGFBQWEsdUVBQWE7QUFDMUIsVUFBVSxxRUFBWTtBQUN0QjtBQUNBO0FBQ0EsWUFBWSw0RUFBZ0I7QUFDNUI7QUFDQTtBQUNBLGdCQUFnQixpRkFBaUI7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix5RkFBNkI7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLHlGQUE2QjtBQUNsRCxlQUFlLHVFQUFhO0FBQzVCLFlBQVkscUVBQVksOEJBQThCLDRFQUFnQjtBQUN0RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLG1CQUFtQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNsRCxxQkFBcUIsaUZBQXFCO0FBQzFDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBOztBQUVBLElBQUksOENBQU0sQ0FBQyw0RUFBa0I7QUFDN0Isa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2NvZGUtZmVuY2VkLmpzP2YyNmYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3Qgbm9uTGF6eUNvbnRpbnVhdGlvbiA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplTm9uTGF6eUNvbnRpbnVhdGlvbixcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjb2RlRmVuY2VkID0ge1xuICBuYW1lOiAnY29kZUZlbmNlZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNvZGVGZW5jZWQsXG4gIGNvbmNyZXRlOiB0cnVlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29kZUZlbmNlZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuICBjb25zdCBjbG9zZVN0YXJ0ID0ge3Rva2VuaXplOiB0b2tlbml6ZUNsb3NlU3RhcnQsIHBhcnRpYWw6IHRydWV9XG4gIGxldCBpbml0aWFsUHJlZml4ID0gMFxuICBsZXQgc2l6ZU9wZW4gPSAwXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY29kZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIHdoaXRlc3BhY2UgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIHJldHVybiBiZWZvcmVTZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlLCBhZnRlciBwcmVmaXgsIGF0IHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZVNlcXVlbmNlT3Blbihjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQgfHwgY29kZSA9PT0gY29kZXMudGlsZGUsXG4gICAgICAnZXhwZWN0ZWQgYGAgYCBgYCBvciBgfmAnXG4gICAgKVxuXG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgaW5pdGlhbFByZWZpeCA9XG4gICAgICB0YWlsICYmIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGluZVByZWZpeFxuICAgICAgICA/IHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoXG4gICAgICAgIDogMFxuXG4gICAgbWFya2VyID0gY29kZVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY29kZUZlbmNlZClcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNvZGVGZW5jZWRGZW5jZSlcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlKVxuICAgIHJldHVybiBzZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIHNpemVPcGVuKytcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlT3BlblxuICAgIH1cblxuICAgIGlmIChzaXplT3BlbiA8IGNvbnN0YW50cy5jb2RlRmVuY2VkU2VxdWVuY2VTaXplTWluKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlKVxuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBpbmZvQmVmb3JlLCB0eXBlcy53aGl0ZXNwYWNlKShjb2RlKVxuICAgICAgOiBpbmZvQmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBmZW5jZSwgYWZ0ZXIgdGhlIHNlcXVlbmNlIChhbmQgb3B0aW9uYWwgd2hpdGVzcGFjZSksIGJlZm9yZSBpbmZvLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluZm9CZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZUZlbmNlZEZlbmNlKVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0XG4gICAgICAgID8gb2soY29kZSlcbiAgICAgICAgOiBlZmZlY3RzLmNoZWNrKG5vbkxhenlDb250aW51YXRpb24sIGF0Tm9uTGF6eUJyZWFrLCBhZnRlcikoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNvZGVGZW5jZWRGZW5jZUluZm8pXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua1N0cmluZywge2NvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVTdHJpbmd9KVxuICAgIHJldHVybiBpbmZvKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gaW5mby5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbmZvKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rU3RyaW5nKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNvZGVGZW5jZWRGZW5jZUluZm8pXG4gICAgICByZXR1cm4gaW5mb0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZUZlbmNlZEZlbmNlSW5mbylcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgbWV0YUJlZm9yZSwgdHlwZXMud2hpdGVzcGFjZSkoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQgJiYgY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGluZm9cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlLCBhZnRlciBpbmZvIGFuZCB3aGl0ZXNwYWNlLCBiZWZvcmUgbWV0YS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzIGV2YWxcbiAgICogICAgICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG1ldGFCZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gaW5mb0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY29kZUZlbmNlZEZlbmNlTWV0YSlcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNodW5rU3RyaW5nLCB7Y29udGVudFR5cGU6IGNvbnN0YW50cy5jb250ZW50VHlwZVN0cmluZ30pXG4gICAgcmV0dXJuIG1ldGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBtZXRhLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anMgZXZhbFxuICAgKiAgICAgICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbWV0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua1N0cmluZylcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jb2RlRmVuY2VkRmVuY2VNZXRhKVxuICAgICAgcmV0dXJuIGluZm9CZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQgJiYgY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG1ldGFcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBlb2wvZW9mIGluIGNvZGUsIGJlZm9yZSBhIG5vbi1sYXp5IGNsb3NpbmcgZmVuY2Ugb3IgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICAgICAgICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXROb25MYXp5QnJlYWsoY29kZSkge1xuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoY2xvc2VTdGFydCwgYWZ0ZXIsIGNvbnRlbnRCZWZvcmUpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIGNvZGUgY29udGVudCwgbm90IGEgY2xvc2luZyBmZW5jZSwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICAgICAgICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudEJlZm9yZShjb2RlKSB7XG4gICAgYXNzZXJ0KG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSwgJ2V4cGVjdGVkIGVvbCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBjb250ZW50U3RhcnRcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgY29kZSBjb250ZW50LCBub3QgYSBjbG9zaW5nIGZlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICBeXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRTdGFydChjb2RlKSB7XG4gICAgcmV0dXJuIGluaXRpYWxQcmVmaXggPiAwICYmIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgYmVmb3JlQ29udGVudENodW5rLFxuICAgICAgICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgICAgICAgaW5pdGlhbFByZWZpeCArIDFcbiAgICAgICAgKShjb2RlKVxuICAgICAgOiBiZWZvcmVDb250ZW50Q2h1bmsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgY29kZSBjb250ZW50LCBhZnRlciBvcHRpb25hbCBwcmVmaXguXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlQ29udGVudENodW5rKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuY2hlY2sobm9uTGF6eUNvbnRpbnVhdGlvbiwgYXROb25MYXp5QnJlYWssIGFmdGVyKShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY29kZUZsb3dWYWx1ZSlcbiAgICByZXR1cm4gY29udGVudENodW5rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29kZSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICBeXl5eXl5eXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50Q2h1bmsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZUZsb3dWYWx1ZSlcbiAgICAgIHJldHVybiBiZWZvcmVDb250ZW50Q2h1bmsoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGVudENodW5rXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgY29kZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiA+IHwgfn5+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNvZGVGZW5jZWQpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAgICogQHR5cGUge1Rva2VuaXplcn1cbiAgICovXG4gIGZ1bmN0aW9uIHRva2VuaXplQ2xvc2VTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gICAgbGV0IHNpemUgPSAwXG5cbiAgICByZXR1cm4gc3RhcnRCZWZvcmVcblxuICAgIC8qKlxuICAgICAqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRCZWZvcmUoY29kZSkge1xuICAgICAgYXNzZXJ0KG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSwgJ2V4cGVjdGVkIGVvbCcpXG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIGNsb3NpbmcgZmVuY2UsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG4gICAgICBhc3NlcnQoXG4gICAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICAgICAnZXhwZWN0ZWQgYGRpc2FibGUubnVsbGAgdG8gYmUgcG9wdWxhdGVkJ1xuICAgICAgKVxuXG4gICAgICAvLyBUbyBkbzogYGVudGVyYCBoZXJlIG9yIGluIG5leHQgc3RhdGU/XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNvZGVGZW5jZWRGZW5jZSlcbiAgICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICAgIGJlZm9yZVNlcXVlbmNlQ2xvc2UsXG4gICAgICAgICAgICB0eXBlcy5saW5lUHJlZml4LFxuICAgICAgICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgIDogY29uc3RhbnRzLnRhYlNpemVcbiAgICAgICAgICApKGNvZGUpXG4gICAgICAgIDogYmVmb3JlU2VxdWVuY2VDbG9zZShjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIGNsb3NpbmcgZmVuY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IHNlcXVlbmNlLlxuICAgICAqXG4gICAgICogYGBgbWFya2Rvd25cbiAgICAgKiAgIHwgfn5+anNcbiAgICAgKiAgIHwgYWxlcnQoMSlcbiAgICAgKiA+IHwgfn5+XG4gICAgICogICAgIF5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmVTZXF1ZW5jZUNsb3NlKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSlcbiAgICAgICAgcmV0dXJuIHNlcXVlbmNlQ2xvc2UoY29kZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIGNsb3NpbmcgZmVuY2Ugc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNlcXVlbmNlQ2xvc2UoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgICBzaXplKytcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlXG4gICAgICB9XG5cbiAgICAgIGlmIChzaXplID49IHNpemVPcGVuKSB7XG4gICAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZSlcbiAgICAgICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBzZXF1ZW5jZUNsb3NlQWZ0ZXIsIHR5cGVzLndoaXRlc3BhY2UpKGNvZGUpXG4gICAgICAgICAgOiBzZXF1ZW5jZUNsb3NlQWZ0ZXIoY29kZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFmdGVyIGNsb3NpbmcgZmVuY2Ugc2VxdWVuY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNlcXVlbmNlQ2xvc2VBZnRlcihjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZUZlbmNlZEZlbmNlKVxuICAgICAgICByZXR1cm4gb2soY29kZSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICByZXR1cm4gbGluZVN0YXJ0XG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZVN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID8gbm9rKGNvZGUpIDogb2soY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/code-indented.js": +/*!********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/code-indented.js ***! + \********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"codeIndented\": () => (/* binding */ codeIndented)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {tokenize: tokenizeFurtherStart, partial: true}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownSpace)(code))\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented)\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1\n )(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix &&\n tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n return after(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue)\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeFlowValue)\n return atBreak(code)\n }\n\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.codeIndented)\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize + 1\n )(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix &&\n tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n ? ok(code)\n : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)\n ? furtherStart(code)\n : nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jb2RlLWluZGVudGVkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVvRDtBQUNzQjtBQUN0QjtBQUNRO0FBQ1I7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLHNCQUFzQjs7QUFFdEI7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLENBQUMsdUVBQWE7QUFDeEIsa0JBQWtCLDhFQUFrQjtBQUNwQztBQUNBO0FBQ0EsV0FBVyxxRUFBWTtBQUN2QjtBQUNBO0FBQ0EsTUFBTSw0RUFBZ0I7QUFDdEIsTUFBTSxpRkFBaUI7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDRFQUFnQjtBQUN2QyxzREFBc0QsaUZBQWlCO0FBQ3ZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVM7QUFDMUI7QUFDQTs7QUFFQSxRQUFRLDRFQUFrQjtBQUMxQjtBQUNBOztBQUVBLGtCQUFrQiwrRUFBbUI7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVMsSUFBSSw0RUFBa0I7QUFDaEQsbUJBQW1CLCtFQUFtQjtBQUN0QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxpQkFBaUIsOEVBQWtCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDRFQUFrQjtBQUMxQixvQkFBb0IsNEVBQWdCO0FBQ3BDO0FBQ0EsbUJBQW1CLDRFQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUVBQVk7QUFDdkI7QUFDQTtBQUNBLE1BQU0sNEVBQWdCO0FBQ3RCLE1BQU0saUZBQWlCO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw0RUFBZ0I7QUFDdkMsc0RBQXNELGlGQUFpQjtBQUN2RTtBQUNBLFFBQVEsNEVBQWtCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2Rldi9saWIvY29kZS1pbmRlbnRlZC5qcz8zYjMwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29kZUluZGVudGVkID0ge1xuICBuYW1lOiAnY29kZUluZGVudGVkJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ29kZUluZGVudGVkXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgZnVydGhlclN0YXJ0ID0ge3Rva2VuaXplOiB0b2tlbml6ZUZ1cnRoZXJTdGFydCwgcGFydGlhbDogdHJ1ZX1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb2RlSW5kZW50ZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY29kZSAoaW5kZW50ZWQpLlxuICAgKlxuICAgKiA+ICoqUGFyc2luZyBub3RlKio6IGl0IGlzIG5vdCBuZWVkZWQgdG8gY2hlY2sgaWYgdGhpcyBmaXJzdCBsaW5lIGlzIGFcbiAgICogPiBmaWxsZWQgbGluZSAodGhhdCBpdCBoYXMgYSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIpLCBiZWNhdXNlIGJsYW5rIGxpbmVzXG4gICAqID4gYXJlIHBhcnNlZCBhbHJlYWR5LCBzbyB3ZSBuZXZlciBydW4gaW50byB0aGF0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBtYW51YWxseSBjaGVjayBpZiBpbnRlcnJ1cHRpbmcgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIGFzc2VydChtYXJrZG93blNwYWNlKGNvZGUpKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY29kZUluZGVudGVkKVxuICAgIC8vIFRvIGRvOiB1c2UgYW4gaW1wcm92ZWQgYHNwYWNlX29yX3RhYmAgZnVuY3Rpb24gbGlrZSBgbWFya2Rvd24tcnNgLFxuICAgIC8vIHNvIHRoYXQgd2UgY2FuIGRyb3AgdGhlIG5leHQgc3RhdGUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICBhZnRlclByZWZpeCxcbiAgICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgICBjb25zdGFudHMudGFiU2l6ZSArIDFcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc3RhcnQsIGFmdGVyIDEgb3IgNCBzcGFjZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09IHR5cGVzLmxpbmVQcmVmaXggJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID49IGNvbnN0YW50cy50YWJTaXplXG4gICAgICA/IGF0QnJlYWsoY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYSBicmVhay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gYWZ0ZXIoY29kZSlcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGZ1cnRoZXJTdGFydCwgYXRCcmVhaywgYWZ0ZXIpKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jb2RlRmxvd1ZhbHVlKVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb2RlIGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNvZGVGbG93VmFsdWUpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBpbnNpZGVcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZUluZGVudGVkKVxuICAgIC8vIFRvIGRvOiBhbGxvdyBpbnRlcnJ1cHRpbmcgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIC8vIEZlZWwgZnJlZSB0byBpbnRlcnJ1cHQuXG4gICAgLy8gdG9rZW5pemVyLmludGVycnVwdCA9IGZhbHNlXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVGdXJ0aGVyU3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIHJldHVybiBmdXJ0aGVyU3RhcnRcblxuICAvKipcbiAgICogQXQgZW9sLCB0cnlpbmcgdG8gcGFyc2UgYW5vdGhlciBpbmRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgICAgXlxuICAgKiAgIHwgICAgIGJiYlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZnVydGhlclN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogaW1wcm92ZSBgbGF6eWAgLyBgcGllcmNlYCBoYW5kbGluZy5cbiAgICAvLyBJZiB0aGlzIGlzIGEgbGF6eSBsaW5lLCBpdCBjYW7igJl0IGJlIGNvZGUuXG4gICAgaWYgKHNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICByZXR1cm4gZnVydGhlclN0YXJ0XG4gICAgfVxuXG4gICAgLy8gVG8gZG86IHRoZSBjb2RlIGhlcmUgaW4gYG1pY3JvbWFyay1qc2AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb21cbiAgICAvLyBgbWFya2Rvd24tcnNgIGJlY2F1c2UgdGhlcmUgaXQgY2FuIGF0dGVtcHQgc3BhY2VzLlxuICAgIC8vIFdlIGNhbuKAmXQgeWV0LlxuICAgIC8vXG4gICAgLy8gVG8gZG86IHVzZSBhbiBpbXByb3ZlZCBgc3BhY2Vfb3JfdGFiYCBmdW5jdGlvbiBsaWtlIGBtYXJrZG93bi1yc2AsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUgbmV4dCBzdGF0ZS5cbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGFmdGVyUHJlZml4LFxuICAgICAgdHlwZXMubGluZVByZWZpeCxcbiAgICAgIGNvbnN0YW50cy50YWJTaXplICsgMVxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCwgYWZ0ZXIgMSBvciA0IHNwYWNlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGluZVByZWZpeCAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPj0gY29uc3RhbnRzLnRhYlNpemVcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpXG4gICAgICA/IGZ1cnRoZXJTdGFydChjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/code-indented.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/code-text.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/code-text.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"codeText\": () => (/* binding */ codeText)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData) {\n // Then we have padding.\n events[headEnterIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding\n events[tailExitIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextPadding\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (\n index !== tailExitIndex &&\n events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n ) {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n ) {\n events[enter][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n this.events[this.events.length - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.characterEscape\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent, 'expected `` ` ``')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous.call(self, self.previous), 'expected correct previous')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n size = 0\n return sequenceClose(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return between\n }\n\n // Data.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData)\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData)\n return between(code)\n }\n\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextSequence)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeText)\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.codeTextData\n return data(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jb2RlLXRleHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUUyRDtBQUNQO0FBQ0E7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0MsNEVBQWdCO0FBQ3hEO0FBQ0EsdUNBQXVDLDRFQUFnQjtBQUN2RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQyw4RUFBa0I7QUFDdEQ7QUFDQSx5Q0FBeUMsaUZBQXFCO0FBQzlELHdDQUF3QyxpRkFBcUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyw0RUFBZ0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsZ0NBQWdDLDRFQUFnQjtBQUNoRDtBQUNBLDhCQUE4Qiw4RUFBa0I7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDZFQUFpQjtBQUM5QixvREFBb0QsaUZBQXFCO0FBQ3pFO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLFVBQVUsNkVBQWlCO0FBQ3JDLElBQUksK0NBQU07QUFDVixrQkFBa0IsMEVBQWM7QUFDaEMsa0JBQWtCLGtGQUFzQjtBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQiw2RUFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGtGQUFzQjtBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVFQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDLDRCQUE0QixrRkFBc0I7QUFDbEQ7QUFDQTtBQUNBOztBQUVBLFFBQVEsNEVBQWtCO0FBQzFCLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsOEVBQWtCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSw2RUFBaUI7QUFDaEMsTUFBTSw0RUFBa0I7QUFDeEI7QUFDQSxtQkFBbUIsOEVBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZFQUFpQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtGQUFzQjtBQUN6QyxtQkFBbUIsMEVBQWM7QUFDakM7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQiw4RUFBa0I7QUFDbkM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2Rldi9saWIvY29kZS10ZXh0LmpzPzA2NWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlByZXZpb3VzfSBQcmV2aW91c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29kZVRleHQgPSB7XG4gIG5hbWU6ICdjb2RlVGV4dCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNvZGVUZXh0LFxuICByZXNvbHZlOiByZXNvbHZlQ29kZVRleHQsXG4gIHByZXZpb3VzXG59XG5cbi8vIFRvIGRvOiBuZXh0IG1ham9yOiBkb27igJl0IHJlc29sdmUsIGxpa2UgYG1hcmtkb3duLXJzYC5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlQ29kZVRleHQoZXZlbnRzKSB7XG4gIGxldCB0YWlsRXhpdEluZGV4ID0gZXZlbnRzLmxlbmd0aCAtIDRcbiAgbGV0IGhlYWRFbnRlckluZGV4ID0gM1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGluZGV4XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZW50ZXJcblxuICAvLyBJZiB3ZSBzdGFydCBhbmQgZW5kIHdpdGggYW4gRU9MIG9yIGEgc3BhY2UuXG4gIGlmIChcbiAgICAoZXZlbnRzW2hlYWRFbnRlckluZGV4XVsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nIHx8XG4gICAgICBldmVudHNbaGVhZEVudGVySW5kZXhdWzFdLnR5cGUgPT09ICdzcGFjZScpICYmXG4gICAgKGV2ZW50c1t0YWlsRXhpdEluZGV4XVsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nIHx8XG4gICAgICBldmVudHNbdGFpbEV4aXRJbmRleF1bMV0udHlwZSA9PT0gJ3NwYWNlJylcbiAgKSB7XG4gICAgaW5kZXggPSBoZWFkRW50ZXJJbmRleFxuXG4gICAgLy8gQW5kIHdlIGhhdmUgZGF0YS5cbiAgICB3aGlsZSAoKytpbmRleCA8IHRhaWxFeGl0SW5kZXgpIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmNvZGVUZXh0RGF0YSkge1xuICAgICAgICAvLyBUaGVuIHdlIGhhdmUgcGFkZGluZy5cbiAgICAgICAgZXZlbnRzW2hlYWRFbnRlckluZGV4XVsxXS50eXBlID0gdHlwZXMuY29kZVRleHRQYWRkaW5nXG4gICAgICAgIGV2ZW50c1t0YWlsRXhpdEluZGV4XVsxXS50eXBlID0gdHlwZXMuY29kZVRleHRQYWRkaW5nXG4gICAgICAgIGhlYWRFbnRlckluZGV4ICs9IDJcbiAgICAgICAgdGFpbEV4aXRJbmRleCAtPSAyXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWVyZ2UgYWRqYWNlbnQgc3BhY2VzIGFuZCBkYXRhLlxuICBpbmRleCA9IGhlYWRFbnRlckluZGV4IC0gMVxuICB0YWlsRXhpdEluZGV4KytcblxuICB3aGlsZSAoKytpbmRleCA8PSB0YWlsRXhpdEluZGV4KSB7XG4gICAgaWYgKGVudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgaW5kZXggIT09IHRhaWxFeGl0SW5kZXggJiZcbiAgICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSB0eXBlcy5saW5lRW5kaW5nXG4gICAgICApIHtcbiAgICAgICAgZW50ZXIgPSBpbmRleFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBpbmRleCA9PT0gdGFpbEV4aXRJbmRleCB8fFxuICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nXG4gICAgKSB7XG4gICAgICBldmVudHNbZW50ZXJdWzFdLnR5cGUgPSB0eXBlcy5jb2RlVGV4dERhdGFcblxuICAgICAgaWYgKGluZGV4ICE9PSBlbnRlciArIDIpIHtcbiAgICAgICAgZXZlbnRzW2VudGVyXVsxXS5lbmQgPSBldmVudHNbaW5kZXggLSAxXVsxXS5lbmRcbiAgICAgICAgZXZlbnRzLnNwbGljZShlbnRlciArIDIsIGluZGV4IC0gZW50ZXIgLSAyKVxuICAgICAgICB0YWlsRXhpdEluZGV4IC09IGluZGV4IC0gZW50ZXIgLSAyXG4gICAgICAgIGluZGV4ID0gZW50ZXIgKyAyXG4gICAgICB9XG5cbiAgICAgIGVudGVyID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7UHJldmlvdXN9XG4gKi9cbmZ1bmN0aW9uIHByZXZpb3VzKGNvZGUpIHtcbiAgLy8gSWYgdGhlcmUgaXMgYSBwcmV2aW91cyBjb2RlLCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIHRhaWwuXG4gIHJldHVybiAoXG4gICAgY29kZSAhPT0gY29kZXMuZ3JhdmVBY2NlbnQgfHxcbiAgICB0aGlzLmV2ZW50c1t0aGlzLmV2ZW50cy5sZW5ndGggLSAxXVsxXS50eXBlID09PSB0eXBlcy5jaGFyYWN0ZXJFc2NhcGVcbiAgKVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvZGVUZXh0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IHNpemVPcGVuID0gMFxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IHNpemVcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRva2VuXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNvZGUgKHRleHQpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICBeXG4gICAqID4gfCBcXGBhYFxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQsICdleHBlY3RlZCBgYCBgIGBgJylcbiAgICBhc3NlcnQocHJldmlvdXMuY2FsbChzZWxmLCBzZWxmLnByZXZpb3VzKSwgJ2V4cGVjdGVkIGNvcnJlY3QgcHJldmlvdXMnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY29kZVRleHQpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jb2RlVGV4dFNlcXVlbmNlKVxuICAgIHJldHVybiBzZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplT3BlbisrXG4gICAgICByZXR1cm4gc2VxdWVuY2VPcGVuXG4gICAgfVxuXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNvZGVUZXh0U2VxdWVuY2UpXG4gICAgcmV0dXJuIGJldHdlZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZXR3ZWVuIHNvbWV0aGluZyBhbmQgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICBeXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmV0d2Vlbihjb2RlKSB7XG4gICAgLy8gRU9GLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZG9u4oCZdCBkbyBzcGFjZXMgaW4gcmVzb2x2ZSwgYnV0IHdoZW4gY29tcGlsaW5nLFxuICAgIC8vIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBUYWJzIGRvbuKAmXQgd29yaywgYW5kIHZpcnR1YWwgc3BhY2VzIGRvbuKAmXQgbWFrZSBzZW5zZS5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuc3BhY2UpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3NwYWNlJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdzcGFjZScpXG4gICAgICByZXR1cm4gYmV0d2VlblxuICAgIH1cblxuICAgIC8vIENsb3NpbmcgZmVuY2U/IENvdWxkIGFsc28gYmUgZGF0YS5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQpIHtcbiAgICAgIHRva2VuID0gZWZmZWN0cy5lbnRlcih0eXBlcy5jb2RlVGV4dFNlcXVlbmNlKVxuICAgICAgc2l6ZSA9IDBcbiAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICAgIHJldHVybiBiZXR3ZWVuXG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmNvZGVUZXh0RGF0YSlcbiAgICByZXR1cm4gZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRhdGEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkYXRhKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNwYWNlIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudCB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZVRleHREYXRhKVxuICAgICAgcmV0dXJuIGJldHdlZW4oY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3Npbmcgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VDbG9zZShjb2RlKSB7XG4gICAgLy8gTW9yZS5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSsrXG4gICAgICByZXR1cm4gc2VxdWVuY2VDbG9zZVxuICAgIH1cblxuICAgIC8vIERvbmUhXG4gICAgaWYgKHNpemUgPT09IHNpemVPcGVuKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY29kZVRleHRTZXF1ZW5jZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jb2RlVGV4dClcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cblxuICAgIC8vIE1vcmUgb3IgbGVzcyBhY2NlbnRzOiBtYXJrIGFzIGRhdGEuXG4gICAgdG9rZW4udHlwZSA9IHR5cGVzLmNvZGVUZXh0RGF0YVxuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/code-text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/content.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/content.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"content\": () => (/* binding */ content)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-subtokenize */ \"../../../node_modules/micromark-util-subtokenize/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nconst content = {tokenize: tokenizeContent, resolve: resolveContent}\n\n/** @type {Construct} */\nconst continuationConstruct = {tokenize: tokenizeContinuation, partial: true}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n ;(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_1__.subtokenize)(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code),\n 'expected no eof or eol'\n )\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content)\n previous = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.content)\n return ok(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol')\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(previous, 'expected previous token')\n previous.next = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeContent,\n previous\n })\n previous = previous.next\n return chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n\n return startLookahead\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected a line ending')\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkContent)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, prefixed, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix &&\n tail[2].sliceSerialize(tail[1], true).length >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jb250ZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDTztBQUNMO0FBQ0Y7QUFDUTtBQUNSO0FBQ2I7O0FBRXZDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDTyxpQkFBaUI7O0FBRXhCLFdBQVcsV0FBVztBQUN0QiwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxFQUFFLHdFQUFXO0FBQ2I7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBLGFBQWEsbUJBQW1CO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU07QUFDVixlQUFlLHFFQUFTLEtBQUssNEVBQWtCO0FBQy9DO0FBQ0E7O0FBRUEsa0JBQWtCLHlFQUFhO0FBQy9CLDZCQUE2Qiw4RUFBa0I7QUFDL0MsbUJBQW1CLDRGQUE0QjtBQUMvQyxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVM7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSw0RUFBa0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDhFQUFrQjtBQUNuQyxpQkFBaUIseUVBQWE7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU0sQ0FBQyw0RUFBa0I7QUFDN0I7QUFDQSxpQkFBaUIsOEVBQWtCO0FBQ25DLElBQUksK0NBQU07QUFDVixrQ0FBa0MsOEVBQWtCO0FBQ3BELG1CQUFtQiw0RkFBNEI7QUFDL0M7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU0sQ0FBQyw0RUFBa0I7QUFDN0IsaUJBQWlCLDhFQUFrQjtBQUNuQyxrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQyxXQUFXLHFFQUFZLG9CQUFvQiw0RUFBZ0I7QUFDM0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVMsSUFBSSw0RUFBa0I7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDRFQUFnQjtBQUN2QyxzREFBc0QsaUZBQWlCO0FBQ3ZFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9jb250ZW50LmpzP2U2YzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7c3VidG9rZW5pemV9IGZyb20gJ21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqXG4gKiBObyBuYW1lIGJlY2F1c2UgaXQgbXVzdCBub3QgYmUgdHVybmVkIG9mZi5cbiAqIEB0eXBlIHtDb25zdHJ1Y3R9XG4gKi9cbmV4cG9ydCBjb25zdCBjb250ZW50ID0ge3Rva2VuaXplOiB0b2tlbml6ZUNvbnRlbnQsIHJlc29sdmU6IHJlc29sdmVDb250ZW50fVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGNvbnRpbnVhdGlvbkNvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVDb250aW51YXRpb24sIHBhcnRpYWw6IHRydWV9XG5cbi8qKlxuICogQ29udGVudCBpcyB0cmFuc3BhcmVudDogaXTigJlzIHBhcnNlZCByaWdodCBub3cuIFRoYXQgd2F5LCBkZWZpbml0aW9ucyBhcmUgYWxzb1xuICogcGFyc2VkIHJpZ2h0IG5vdzogYmVmb3JlIHRleHQgaW4gcGFyYWdyYXBocyAoc3BlY2lmaWNhbGx5LCBtZWRpYSkgYXJlIHBhcnNlZC5cbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb250ZW50KGV2ZW50cykge1xuICBzdWJ0b2tlbml6ZShldmVudHMpXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250ZW50KGVmZmVjdHMsIG9rKSB7XG4gIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBwcmV2aW91c1xuXG4gIHJldHVybiBjaHVua1N0YXJ0XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBhIGNvbnRlbnQgY2h1bmsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYmNcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNodW5rU3RhcnQoY29kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGNvZGUgIT09IGNvZGVzLmVvZiAmJiAhbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpLFxuICAgICAgJ2V4cGVjdGVkIG5vIGVvZiBvciBlb2wnXG4gICAgKVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jb250ZW50KVxuICAgIHByZXZpb3VzID0gZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua0NvbnRlbnQsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVDb250ZW50XG4gICAgfSlcbiAgICByZXR1cm4gY2h1bmtJbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIGNvbnRlbnQgY2h1bmsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYmNcbiAgICogICAgIF5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2h1bmtJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIHJldHVybiBjb250ZW50RW5kKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gVG8gZG86IGluIGBtYXJrZG93bi1yc2AsIGVhY2ggbGluZSBpcyBwYXJzZWQgb24gaXRzIG93biwgYW5kIGV2ZXJ5dGhpbmdcbiAgICAvLyBpcyBzdGl0Y2hlZCB0b2dldGhlciByZXNvbHZpbmcuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICAgIGNvbnRpbnVhdGlvbkNvbnN0cnVjdCxcbiAgICAgICAgY29udGVudENvbnRpbnVlLFxuICAgICAgICBjb250ZW50RW5kXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY2h1bmtJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50RW5kKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtDb250ZW50KVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jb250ZW50KVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRDb250aW51ZShjb2RlKSB7XG4gICAgYXNzZXJ0KG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSwgJ2V4cGVjdGVkIGVvbCcpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rQ29udGVudClcbiAgICBhc3NlcnQocHJldmlvdXMsICdleHBlY3RlZCBwcmV2aW91cyB0b2tlbicpXG4gICAgcHJldmlvdXMubmV4dCA9IGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtDb250ZW50LCB7XG4gICAgICBjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlQ29udGVudCxcbiAgICAgIHByZXZpb3VzXG4gICAgfSlcbiAgICBwcmV2aW91cyA9IHByZXZpb3VzLm5leHRcbiAgICByZXR1cm4gY2h1bmtJbnNpZGVcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0TG9va2FoZWFkXG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0TG9va2FoZWFkKGNvZGUpIHtcbiAgICBhc3NlcnQobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpLCAnZXhwZWN0ZWQgYSBsaW5lIGVuZGluZycpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rQ29udGVudClcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBwcmVmaXhlZCwgdHlwZXMubGluZVByZWZpeClcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBwcmVmaXhlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgIGFzc2VydChcbiAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgICApXG5cbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cblxuICAgIGlmIChcbiAgICAgICFzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJykgJiZcbiAgICAgIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGluZVByZWZpeCAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPj0gY29uc3RhbnRzLnRhYlNpemVcbiAgICApIHtcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBlZmZlY3RzLmludGVycnVwdChzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmZsb3csIG5vaywgb2spKGNvZGUpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/content.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/definition.js": +/*!*****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/definition.js ***! + \*****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"definition\": () => (/* binding */ definition)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-destination */ \"../../../node_modules/micromark-factory-destination/dev/index.js\");\n/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-label */ \"../../../node_modules/micromark-factory-label/dev/index.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-factory-title */ \"../../../node_modules/micromark-factory-title/dev/index.js\");\n/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-whitespace */ \"../../../node_modules/micromark-factory-whitespace/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"../../../node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst definition = {name: 'definition', tokenize: tokenizeDefinition}\n\n/** @type {Construct} */\nconst titleBefore = {tokenize: tokenizeTitleBefore, partial: true}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition)\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`')\n return micromark_factory_label__WEBPACK_IMPORTED_MODULE_3__.factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabel,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionLabelString\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_4__.normalizeIdentifier)(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionMarker)\n return markerAfter\n }\n\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_7__.factoryDestination)(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestination,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteral,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationLiteralMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationRaw,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionDestinationString\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)(effects, afterWhitespace, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition)\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_6__.factoryWhitespace)(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_9__.factoryTitle)(\n effects,\n titleAfter,\n nok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitle,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definitionTitleString\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_8__.factorySpace)(\n effects,\n titleAfterOptionalWhitespace,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace\n )(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code) ? ok(code) : nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9kZWZpbml0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFZ0U7QUFDWjtBQUNBO0FBQ0E7QUFDVTtBQUs3QjtBQUNzQztBQUNuQjtBQUNBO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUNmLG9CQUFvQjs7QUFFM0IsV0FBVyxXQUFXO0FBQ3RCLHFCQUFxQjs7QUFFckI7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxJQUFJLDhDQUFNLFVBQVUsbUZBQXVCO0FBQzNDLFdBQVcsc0VBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlGQUFxQjtBQUMzQixNQUFNLHVGQUEyQjtBQUNqQyxNQUFNLHVGQUEyQjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQix3RkFBbUI7QUFDcEM7QUFDQTs7QUFFQSxpQkFBaUIsdUVBQVc7QUFDNUIsb0JBQW9CLGtGQUFzQjtBQUMxQztBQUNBLG1CQUFtQixrRkFBc0I7QUFDekM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtRkFBeUI7QUFDcEMsUUFBUSwrRUFBaUI7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxXQUFXLGlGQUFrQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdUZBQTJCO0FBQ2pDLE1BQU0sOEZBQWtDO0FBQ3hDLE1BQU0sb0dBQXdDO0FBQzlDLE1BQU0sMEZBQThCO0FBQ3BDLE1BQU0sNkZBQWlDO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsV0FBVyx1RUFBYTtBQUN4QixRQUFRLHFFQUFZLDJCQUEyQiw0RUFBZ0I7QUFDL0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksNEVBQWtCO0FBQ2hELG1CQUFtQiw0RUFBZ0I7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFdBQVcsbUZBQXlCO0FBQ3BDLFFBQVEsK0VBQWlCO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxXQUFXLHFFQUFZO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUZBQXFCO0FBQzNCLE1BQU0sdUZBQTJCO0FBQ2pDLE1BQU0sdUZBQTJCO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsV0FBVyx1RUFBYTtBQUN4QixRQUFRLHFFQUFZO0FBQ3BCO0FBQ0E7QUFDQSxVQUFVLDRFQUFnQjtBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0Esb0JBQW9CLHFFQUFTLElBQUksNEVBQWtCO0FBQ25EO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9kZWZpbml0aW9uLmpzP2JjMjMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeURlc3RpbmF0aW9ufSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1kZXN0aW5hdGlvbidcbmltcG9ydCB7ZmFjdG9yeUxhYmVsfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1sYWJlbCdcbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7ZmFjdG9yeVRpdGxlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS10aXRsZSdcbmltcG9ydCB7ZmFjdG9yeVdoaXRlc3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UnXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmcsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duU3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtub3JtYWxpemVJZGVudGlmaWVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBkZWZpbml0aW9uID0ge25hbWU6ICdkZWZpbml0aW9uJywgdG9rZW5pemU6IHRva2VuaXplRGVmaW5pdGlvbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCB0aXRsZUJlZm9yZSA9IHt0b2tlbml6ZTogdG9rZW5pemVUaXRsZUJlZm9yZSwgcGFydGlhbDogdHJ1ZX1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVEZWZpbml0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBpZGVudGlmaWVyXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IHN0YXJ0IG9mIGEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIERvIG5vdCBpbnRlcnJ1cHQgcGFyYWdyYXBocyAoYnV0IGRvIGZvbGxvdyBkZWZpbml0aW9ucykuXG4gICAgLy8gVG8gZG86IGRvIGBpbnRlcnJ1cHRgIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgIC8vIFRvIGRvOiBwYXJzZSB3aGl0ZXNwYWNlIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuZGVmaW5pdGlvbilcbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIC8vIFRvIGRvOiBwYXJzZSB3aGl0ZXNwYWNlIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgIGFzc2VydChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCwgJ2V4cGVjdGVkIGBbYCcpXG4gICAgcmV0dXJuIGZhY3RvcnlMYWJlbC5jYWxsKFxuICAgICAgc2VsZixcbiAgICAgIGVmZmVjdHMsXG4gICAgICBsYWJlbEFmdGVyLFxuICAgICAgLy8gTm90ZTogd2UgZG9u4oCZdCBuZWVkIHRvIHJlc2V0IHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgICAgbm9rLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvbkxhYmVsLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvbkxhYmVsTWFya2VyLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvbkxhYmVsU3RyaW5nXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGxhYmVsLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEFmdGVyKGNvZGUpIHtcbiAgICBpZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1bMV0pLnNsaWNlKDEsIC0xKVxuICAgIClcblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5jb2xvbikge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5kZWZpbml0aW9uTWFya2VyKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuZGVmaW5pdGlvbk1hcmtlcilcbiAgICAgIHJldHVybiBtYXJrZXJBZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBtYXJrZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBtYXJrZXJBZnRlcihjb2RlKSB7XG4gICAgLy8gTm90ZTogd2hpdGVzcGFjZSBpcyBvcHRpb25hbC5cbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCBkZXN0aW5hdGlvbkJlZm9yZSkoY29kZSlcbiAgICAgIDogZGVzdGluYXRpb25CZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVzdGluYXRpb25CZWZvcmUoY29kZSkge1xuICAgIHJldHVybiBmYWN0b3J5RGVzdGluYXRpb24oXG4gICAgICBlZmZlY3RzLFxuICAgICAgZGVzdGluYXRpb25BZnRlcixcbiAgICAgIC8vIE5vdGU6IHdlIGRvbuKAmXQgbmVlZCB0byByZXNldCB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cbiAgICAgIG5vayxcbiAgICAgIHR5cGVzLmRlZmluaXRpb25EZXN0aW5hdGlvbixcbiAgICAgIHR5cGVzLmRlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWwsXG4gICAgICB0eXBlcy5kZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3LFxuICAgICAgdHlwZXMuZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZXN0aW5hdGlvbkFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KHRpdGxlQmVmb3JlLCBhZnRlciwgYWZ0ZXIpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlcldoaXRlc3BhY2UsIHR5cGVzLndoaXRlc3BhY2UpKGNvZGUpXG4gICAgICA6IGFmdGVyV2hpdGVzcGFjZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlZmluaXRpb24sIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGJcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyV2hpdGVzcGFjZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5kZWZpbml0aW9uKVxuXG4gICAgICAvLyBOb3RlOiB3ZSBkb27igJl0IGNhcmUgYWJvdXQgdW5pcXVlbmVzcy5cbiAgICAgIC8vIEl04oCZcyBsaWtlbHkgdGhhdCB0aGF0IGRvZXNu4oCZdCBoYXBwZW4gdmVyeSBmcmVxdWVudGx5LlxuICAgICAgLy8gSXQgaXMgbW9yZSBsaWtlbHkgdGhhdCBpdCB3YXN0ZXMgcHJlY2lvdXMgdGltZS5cbiAgICAgIHNlbGYucGFyc2VyLmRlZmluZWQucHVzaChpZGVudGlmaWVyKVxuXG4gICAgICAvLyBUbyBkbzogYG1hcmtkb3duLXJzYCBpbnRlcnJ1cHQuXG4gICAgICAvLyAvLyBZb3XigJlkIGJlIGludGVycnVwdGluZy5cbiAgICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSB0cnVlXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVUaXRsZUJlZm9yZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiB0aXRsZUJlZm9yZVxuXG4gIC8qKlxuICAgKiBBZnRlciBkZXN0aW5hdGlvbiwgYXQgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0aXRsZUJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgYmVmb3JlTWFya2VyKShjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IFthXTogYlxuICAgKiA+IHwgXCJjXCJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZU1hcmtlcihjb2RlKSB7XG4gICAgcmV0dXJuIGZhY3RvcnlUaXRsZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICB0aXRsZUFmdGVyLFxuICAgICAgbm9rLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvblRpdGxlLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvblRpdGxlTWFya2VyLFxuICAgICAgdHlwZXMuZGVmaW5pdGlvblRpdGxlU3RyaW5nXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRpdGxlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGl0bGVBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZSxcbiAgICAgICAgICB0eXBlcy53aGl0ZXNwYWNlXG4gICAgICAgICkoY29kZSlcbiAgICAgIDogdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRpdGxlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZShjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgPyBvayhjb2RlKSA6IG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/definition.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"hardBreakEscape\": () => (/* binding */ hardBreakEscape)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash, 'expected `\\\\`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape)\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakEscape)\n return ok(code)\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9oYXJkLWJyZWFrLWVzY2FwZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRTJEO0FBQ1A7QUFDQTtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLDJFQUFlO0FBQ25DLGtCQUFrQixpRkFBcUI7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsUUFBUSw0RUFBa0I7QUFDMUIsbUJBQW1CLGlGQUFxQjtBQUN4QztBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2hhcmQtYnJlYWstZXNjYXBlLmpzPzY3ODMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaGFyZEJyZWFrRXNjYXBlID0ge1xuICBuYW1lOiAnaGFyZEJyZWFrRXNjYXBlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplSGFyZEJyZWFrRXNjYXBlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSGFyZEJyZWFrRXNjYXBlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGEgaGFyZCBicmVhayAoZXNjYXBlKS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXFxuICAgKiAgICAgIF5cbiAgICogICB8IGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMuYmFja3NsYXNoLCAnZXhwZWN0ZWQgYFxcXFxgJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmhhcmRCcmVha0VzY2FwZSlcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gYWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBlb2wuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFxcbiAgICogICAgICAgXlxuICAgKiAgIHwgYlxuICAgKiBgYGBcbiAgICpcbiAgICogIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuaGFyZEJyZWFrRXNjYXBlKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"headingAtx\": () => (/* binding */ headingAtx)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace) {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText,\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText,\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeText\n }\n\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading)\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign, 'expected `#`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign &&\n size++ < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.atxHeadingOpeningFenceSizeMax\n ) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n return atBreak(code)\n }\n\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n return sequenceFurther(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeading)\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownSpace)(code)) {\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText)\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign) {\n effects.consume(code)\n return sequenceFurther\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingSequence)\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.numberSign ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEndingOrSpace)(code)\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.atxHeadingText)\n return atBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9oZWFkaW5nLWF0eC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSx5Q0FBeUM7QUFDdEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBS25CO0FBQ1k7QUFDTztBQUNRO0FBQ1I7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCOztBQUVBO0FBQ0EsdUNBQXVDLDRFQUFnQjtBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw0RUFBZ0I7QUFDbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUNBQW1DLG9GQUF3QjtBQUMzRDtBQUNBO0FBQ0EsMkNBQTJDLDRFQUFnQjtBQUMzRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksZ0ZBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyRUFBZTtBQUMzQjtBQUNBO0FBQ0EsbUJBQW1CLHlGQUF5QjtBQUM1Qzs7QUFFQSxJQUFJLCtEQUFNO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw0RUFBZ0I7QUFDbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNLFVBQVUsNEVBQWdCO0FBQ3BDLGtCQUFrQixvRkFBd0I7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNEVBQWdCO0FBQy9CLGVBQWUsdUdBQXVDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLHFFQUFTLElBQUksbUZBQXlCO0FBQ3ZELG1CQUFtQixvRkFBd0I7QUFDM0M7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakMsb0JBQW9CLG9GQUF3QjtBQUM1QztBQUNBOztBQUVBLGlCQUFpQixxRUFBUyxJQUFJLDRFQUFrQjtBQUNoRCxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSx1RUFBYTtBQUNyQixhQUFhLHFFQUFZLG1CQUFtQiw0RUFBZ0I7QUFDNUQ7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixnRkFBb0I7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxRUFBUztBQUN4QixlQUFlLDRFQUFnQjtBQUMvQixNQUFNLG1GQUF5QjtBQUMvQjtBQUNBLG1CQUFtQixnRkFBb0I7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2hlYWRpbmctYXR4LmpzPzI1NzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtcbiAgbWFya2Rvd25MaW5lRW5kaW5nLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93blNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7c3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaGVhZGluZ0F0eCA9IHtcbiAgbmFtZTogJ2hlYWRpbmdBdHgnLFxuICB0b2tlbml6ZTogdG9rZW5pemVIZWFkaW5nQXR4LFxuICByZXNvbHZlOiByZXNvbHZlSGVhZGluZ0F0eFxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUhlYWRpbmdBdHgoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBjb250ZW50RW5kID0gZXZlbnRzLmxlbmd0aCAtIDJcbiAgbGV0IGNvbnRlbnRTdGFydCA9IDNcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGNvbnRlbnRcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRleHRcblxuICAvLyBQcmVmaXggd2hpdGVzcGFjZSwgcGFydCBvZiB0aGUgb3BlbmluZy5cbiAgaWYgKGV2ZW50c1tjb250ZW50U3RhcnRdWzFdLnR5cGUgPT09IHR5cGVzLndoaXRlc3BhY2UpIHtcbiAgICBjb250ZW50U3RhcnQgKz0gMlxuICB9XG5cbiAgLy8gU3VmZml4IHdoaXRlc3BhY2UsIHBhcnQgb2YgdGhlIGNsb3NpbmcuXG4gIGlmIChcbiAgICBjb250ZW50RW5kIC0gMiA+IGNvbnRlbnRTdGFydCAmJlxuICAgIGV2ZW50c1tjb250ZW50RW5kXVsxXS50eXBlID09PSB0eXBlcy53aGl0ZXNwYWNlXG4gICkge1xuICAgIGNvbnRlbnRFbmQgLT0gMlxuICB9XG5cbiAgaWYgKFxuICAgIGV2ZW50c1tjb250ZW50RW5kXVsxXS50eXBlID09PSB0eXBlcy5hdHhIZWFkaW5nU2VxdWVuY2UgJiZcbiAgICAoY29udGVudFN0YXJ0ID09PSBjb250ZW50RW5kIC0gMSB8fFxuICAgICAgKGNvbnRlbnRFbmQgLSA0ID4gY29udGVudFN0YXJ0ICYmXG4gICAgICAgIGV2ZW50c1tjb250ZW50RW5kIC0gMl1bMV0udHlwZSA9PT0gdHlwZXMud2hpdGVzcGFjZSkpXG4gICkge1xuICAgIGNvbnRlbnRFbmQgLT0gY29udGVudFN0YXJ0ICsgMSA9PT0gY29udGVudEVuZCA/IDIgOiA0XG4gIH1cblxuICBpZiAoY29udGVudEVuZCA+IGNvbnRlbnRTdGFydCkge1xuICAgIGNvbnRlbnQgPSB7XG4gICAgICB0eXBlOiB0eXBlcy5hdHhIZWFkaW5nVGV4dCxcbiAgICAgIHN0YXJ0OiBldmVudHNbY29udGVudFN0YXJ0XVsxXS5zdGFydCxcbiAgICAgIGVuZDogZXZlbnRzW2NvbnRlbnRFbmRdWzFdLmVuZFxuICAgIH1cbiAgICB0ZXh0ID0ge1xuICAgICAgdHlwZTogdHlwZXMuY2h1bmtUZXh0LFxuICAgICAgc3RhcnQ6IGV2ZW50c1tjb250ZW50U3RhcnRdWzFdLnN0YXJ0LFxuICAgICAgZW5kOiBldmVudHNbY29udGVudEVuZF1bMV0uZW5kLFxuICAgICAgY29udGVudFR5cGU6IGNvbnN0YW50cy5jb250ZW50VHlwZVRleHRcbiAgICB9XG5cbiAgICBzcGxpY2UoZXZlbnRzLCBjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQgLSBjb250ZW50U3RhcnQgKyAxLCBbXG4gICAgICBbJ2VudGVyJywgY29udGVudCwgY29udGV4dF0sXG4gICAgICBbJ2VudGVyJywgdGV4dCwgY29udGV4dF0sXG4gICAgICBbJ2V4aXQnLCB0ZXh0LCBjb250ZXh0XSxcbiAgICAgIFsnZXhpdCcsIGNvbnRlbnQsIGNvbnRleHRdXG4gICAgXSlcbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIZWFkaW5nQXR4KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgbGV0IHNpemUgPSAwXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGEgaGVhZGluZyAoYXR4KS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIGluZGVudCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5hdHhIZWFkaW5nKVxuICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBgI2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubnVtYmVyU2lnbiwgJ2V4cGVjdGVkIGAjYCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5hdHhIZWFkaW5nU2VxdWVuY2UpXG4gICAgcmV0dXJuIHNlcXVlbmNlT3Blbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VPcGVuKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5udW1iZXJTaWduICYmXG4gICAgICBzaXplKysgPCBjb25zdGFudHMuYXR4SGVhZGluZ09wZW5pbmdGZW5jZVNpemVNYXhcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlT3BlblxuICAgIH1cblxuICAgIC8vIEFsd2F5cyBhdCBsZWFzdCBvbmUgYCNgLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmF0eEhlYWRpbmdTZXF1ZW5jZSlcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNvbWV0aGluZywgYmVmb3JlIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLm51bWJlclNpZ24pIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuYXR4SGVhZGluZ1NlcXVlbmNlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlRnVydGhlcihjb2RlKVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuYXR4SGVhZGluZylcbiAgICAgIC8vIFRvIGRvOiBpbnRlcnJ1cHQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgICAgLy8gLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSBmYWxzZVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgdHlwZXMud2hpdGVzcGFjZSkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogZ2VuZXJhdGUgYGRhdGFgIHRva2VucywgYWRkIHRoZSBgdGV4dGAgdG9rZW4gbGF0ZXIuXG4gICAgLy8gTmVlZHMgZWRpdCBtYXAsIHNlZTogYG1hcmtkb3duLnJzYC5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmF0eEhlYWRpbmdUZXh0KVxuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZnVydGhlciBzZXF1ZW5jZSAoYWZ0ZXIgd2hpdGVzcGFjZSkuXG4gICAqXG4gICAqIENvdWxkIGJlIG5vcm1hbCDigJx2aXNpYmxl4oCdIGhhc2hlcyBpbiB0aGUgaGVhZGluZyBvciBhIGZpbmFsIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWEgIyNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlRnVydGhlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLm51bWJlclNpZ24pIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlRnVydGhlclxuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5hdHhIZWFkaW5nU2VxdWVuY2UpXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubnVtYmVyU2lnbiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmF0eEhlYWRpbmdUZXh0KVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlFlow\": () => (/* binding */ htmlFlow)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-html-tag-name */ \"../../../node_modules/micromark-util-html-tag-name/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {tokenize: tokenizeBlankLineBefore, partial: true}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow\n ) {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix) {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan, 'expected `<`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark) {\n effects.consume(code)\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n effects.consume(code)\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment\n return commentOpenInside\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) {\n effects.consume(code)\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n effects.consume(code)\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.cdataOpeningString\n\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n\n return cdataOpenInside\n }\n\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n ) {\n const slash = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash\n const name = buffer.toLowerCase()\n\n if (!slash && !closingTag && micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) {\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic\n\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n marker = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.colon ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlphanumeric)(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent\n ) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.graveAccent ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEndingOrSpace)(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lessThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRaw) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlDeclaration) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.questionMark && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlInstruction) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlCdata) {\n effects.consume(code)\n return continuationCdataInside\n }\n\n if (\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code) &&\n (marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlBasic || marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComplete)\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n return continuationStart(code)\n }\n\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code))\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n return continuationStart(code)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.slash) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n const name = buffer.toLowerCase()\n\n if (micromark_util_html_tag_name__WEBPACK_IMPORTED_MODULE_5__.htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.asciiAlpha)(code) && buffer.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlRawSizeMax) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightSquareBracket) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.greaterThan) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash && marker === micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.htmlComment) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlowData)\n return continuationAfter(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.htmlFlow)\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return after\n }\n\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code), 'expected a line ending')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n return effects.attempt(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, ok, nok)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLWZsb3cuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQVFpQztBQUN3QztBQUNyQjtBQUNRO0FBQ1I7QUFDYjtBQUNFOztBQUV6QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsMEVBQWM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaURBQWlELDRFQUFnQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQSxhQUFhLE1BQU07QUFDbkI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU0sVUFBVSwwRUFBYztBQUNsQyxrQkFBa0IsMEVBQWM7QUFDaEMsa0JBQWtCLDhFQUFrQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFD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QUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU0sQ0FBQyw0RUFBa0I7QUFDN0Isa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakMsMkJBQTJCLHFEQUFTO0FBQ3BDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLWZsb3cuanM/YzhmMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2h0bWxCbG9ja05hbWVzLCBodG1sUmF3TmFtZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaHRtbEZsb3cgPSB7XG4gIG5hbWU6ICdodG1sRmxvdycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUh0bWxGbG93LFxuICByZXNvbHZlVG86IHJlc29sdmVUb0h0bWxGbG93LFxuICBjb25jcmV0ZTogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGJsYW5rTGluZUJlZm9yZSA9IHt0b2tlbml6ZTogdG9rZW5pemVCbGFua0xpbmVCZWZvcmUsIHBhcnRpYWw6IHRydWV9XG5jb25zdCBub25MYXp5Q29udGludWF0aW9uU3RhcnQgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZVRvSHRtbEZsb3coZXZlbnRzKSB7XG4gIGxldCBpbmRleCA9IGV2ZW50cy5sZW5ndGhcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChcbiAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuaHRtbEZsb3dcbiAgICApIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGV4ID4gMSAmJiBldmVudHNbaW5kZXggLSAyXVsxXS50eXBlID09PSB0eXBlcy5saW5lUHJlZml4KSB7XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgdG9rZW4uXG4gICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgbGluZSB0b2tlbi5cbiAgICBldmVudHNbaW5kZXggKyAxXVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gUmVtb3ZlIHRoZSBsaW5lIHByZWZpeC5cbiAgICBldmVudHMuc3BsaWNlKGluZGV4IC0gMiwgMilcbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sRmxvdyhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbWFya2VyXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGNsb3NpbmdUYWdcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBidWZmZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge0NvZGV9ICovXG4gIGxldCBtYXJrZXJCXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIEhUTUwgKGZsb3cpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYDxgLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHggLz5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuLCAnZXhwZWN0ZWQgYDxgJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmh0bWxGbG93KVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCB0YWcgbmFtZSBvciBvdGhlciBzdHVmZi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4IC8+XG4gICAqICAgICAgXlxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZXhjbGFtYXRpb25NYXJrKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkZWNsYXJhdGlvbk9wZW5cbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgY2xvc2luZ1RhZyA9IHRydWVcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1ZXN0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSBjb25zdGFudHMuaHRtbEluc3RydWN0aW9uXG4gICAgICAvLyBUbyBkbzpcbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIC8vIFRvIGRvOiB1c2UgYG1hcmtkb3duLXJzYCBzdHlsZSBpbnRlcnJ1cHQuXG4gICAgICAvLyBXaGlsZSB3ZeKAmXJlIGluIGFuIGluc3RydWN0aW9uIGluc3RlYWQgb2YgYSBkZWNsYXJhdGlvbiwgd2XigJlyZSBvbiBhIGA/YFxuICAgICAgLy8gcmlnaHQgbm93LCBzbyB3ZSBkbyBuZWVkIHRvIHNlYXJjaCBmb3IgYD5gLCBzaW1pbGFyIHRvIGRlY2xhcmF0aW9ucy5cbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFgLCBhdCBkZWNsYXJhdGlvbiwgY29tbWVudCwgb3IgQ0RBVEEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgXlxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxDb21tZW50XG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxDZGF0YVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IGNvbnN0YW50cy5odG1sRGVjbGFyYXRpb25cbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IS1gLCBpbnNpZGUgYSBjb21tZW50LCBhdCBhbm90aGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW5zaWRlIENEQVRBLCBleHBlY3RpbmcgYENEQVRBW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgIF5eXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnN0YW50cy5jZGF0YU9wZW5pbmdTdHJpbmdcblxuICAgIGlmIChjb2RlID09PSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KyspKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcblxuICAgICAgaWYgKGluZGV4ID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L2AsIGluIGNsb3NpbmcgdGFnLCBhdCB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwveD5cbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2VTdGFydChjb2RlKSB7XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYj5cbiAgICogICAgICBeXlxuICAgKiA+IHwgPC9hYj5cbiAgICogICAgICAgXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ05hbWUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCBzbGFzaCA9IGNvZGUgPT09IGNvZGVzLnNsYXNoXG4gICAgICBjb25zdCBuYW1lID0gYnVmZmVyLnRvTG93ZXJDYXNlKClcblxuICAgICAgaWYgKCFzbGFzaCAmJiAhY2xvc2luZ1RhZyAmJiBodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgbWFya2VyID0gY29uc3RhbnRzLmh0bWxSYXdcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoaHRtbEJsb2NrTmFtZXMuaW5jbHVkZXMoYnVmZmVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgIG1hcmtlciA9IGNvbnN0YW50cy5odG1sQmFzaWNcblxuICAgICAgICBpZiAoc2xhc2gpIHtcbiAgICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgICByZXR1cm4gYmFzaWNTZWxmQ2xvc2luZ1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuXG4gICAgICBtYXJrZXIgPSBjb25zdGFudHMuaHRtbENvbXBsZXRlXG4gICAgICAvLyBEbyBub3Qgc3VwcG9ydCBjb21wbGV0ZSBIVE1MIHdoZW4gaW50ZXJydXB0aW5nLlxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ICYmICFzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV1cbiAgICAgICAgPyBub2soY29kZSlcbiAgICAgICAgOiBjbG9zaW5nVGFnXG4gICAgICAgID8gY29tcGxldGVDbG9zaW5nVGFnQWZ0ZXIoY29kZSlcbiAgICAgICAgOiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoIHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgYmFzaWMgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8ZGl2Lz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmFzaWNTZWxmQ2xvc2luZyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvblxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgY29tcGxldGUgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eC8+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUNsb3NpbmdUYWdBZnRlcihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQ2xvc2luZ1RhZ0FmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYW4gYXR0cmlidXRlIG5hbWUuXG4gICAqXG4gICAqIEF0IGZpcnN0LCB0aGlzIHN0YXRlIGlzIHVzZWQgYWZ0ZXIgYSBjb21wbGV0ZSB0YWcgbmFtZSwgYWZ0ZXIgd2hpdGVzcGFjZSxcbiAgICogd2hlcmUgaXQgZXhwZWN0cyBvcHRpb25hbCBhdHRyaWJ1dGVzIG9yIHRoZSBlbmQgb2YgdGhlIHRhZy5cbiAgICogSXQgaXMgYWxzbyByZXVzZWQgYWZ0ZXIgYXR0cmlidXRlcywgd2hlbiBleHBlY3RpbmcgbW9yZSBvcHRpb25hbFxuICAgKiBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgLz5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgX2I+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlRW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGA6YCBhbmQgYF9gLlxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5jb2xvbiB8fCBjb2RlID09PSBjb2Rlcy51bmRlcnNjb3JlIHx8IGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmVcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGVFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhdHRyaWJ1dGUgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIF9iPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI+XG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLCBgLmAsIGA6YCwgYW5kIGBfYC5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5kYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5kb3QgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmNvbG9uIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy51bmRlcnNjb3JlIHx8XG4gICAgICBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYXR0cmlidXRlIG5hbWUsIGF0IGFuIG9wdGlvbmFsIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSB1bnF1b3RlZCwgZG91YmxlIHF1b3RlZCwgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGFsbG93aW5nXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPWM+XG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVCZWZvcmUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JhdmVBY2NlbnRcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fCBjb2RlID09PSBjb2Rlcy5hcG9zdHJvcGhlKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBjb2RlXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCA8YSBiPSdjJz5cbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXJCKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBudWxsXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnF1b3RhdGlvbk1hcmsgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmFwb3N0cm9waGUgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZXF1YWxzVG8gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudCB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYmVmb3JlIHdoaXRlc3BhY2Ugb3IgdGhlXG4gICAqIGVuZCBvZiB0aGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXIoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgb2YgYSBjb21wbGV0ZSB0YWcgd2hlcmUgb25seSBhbiBgPmAgaXMgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQWZ0ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYD5gIGluIGEgY29tcGxldGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24gb2YgYW55IEhUTUwga2luZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQ29tbWVudCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ29tbWVudEluc2lkZVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sUmF3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25SYXdUYWdPcGVuXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxEZWNsYXJhdGlvbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVlc3Rpb25NYXJrICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxJbnN0cnVjdGlvbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0ICYmIG1hcmtlciA9PT0gY29uc3RhbnRzLmh0bWxDZGF0YSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2RhdGFJbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgJiZcbiAgICAgIChtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQmFzaWMgfHwgbWFya2VyID09PSBjb25zdGFudHMuaHRtbENvbXBsZXRlKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmh0bWxGbG93RGF0YSlcbiAgICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgICBibGFua0xpbmVCZWZvcmUsXG4gICAgICAgIGNvbnRpbnVhdGlvbkFmdGVyLFxuICAgICAgICBjb250aW51YXRpb25TdGFydFxuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqICAgfCBhc2RcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIG5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgICAgIGNvbnRpbnVhdGlvblN0YXJ0Tm9uTGF6eSxcbiAgICAgIGNvbnRpbnVhdGlvbkFmdGVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLCBiZWZvcmUgbm9uLWxhenkgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4PlxuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYXNkXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25TdGFydE5vbkxhenkoY29kZSkge1xuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBjb250aW51YXRpb25CZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24sIGJlZm9yZSBub24tbGF6eSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgPHg+XG4gICAqID4gfCBhc2RcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBjb250aW51YXRpb25TdGFydChjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbEZsb3dEYXRhKVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50IGNvbnRpbnVhdGlvbiwgYWZ0ZXIgb25lIGAtYCwgZXhwZWN0aW5nIGFub3RoZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNvbW1lbnRJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgY29udGludWF0aW9uLCBhZnRlciBgPGAsIGF0IGAvYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxzY3JpcHQ+Y29uc29sZS5sb2coMSk8L3NjcmlwdD5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uUmF3VGFnT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnNsYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciA9ICcnXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJhdyBjb250aW51YXRpb24sIGFmdGVyIGA8L2AsIGluIGEgcmF3IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHNjcmlwdD5jb25zb2xlLmxvZygxKTwvc2NyaXB0PlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25SYXdFbmRUYWcoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgY29uc3QgbmFtZSA9IGJ1ZmZlci50b0xvd2VyQ2FzZSgpXG5cbiAgICAgIGlmIChodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkgJiYgYnVmZmVyLmxlbmd0aCA8IGNvbnN0YW50cy5odG1sUmF3U2l6ZU1heCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBub3QgbnVsbC5cbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNkYXRhIGNvbnRpbnVhdGlvbiwgYWZ0ZXIgYF1gLCBleHBlY3RpbmcgYF0+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNkYXRhSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkZWNsYXJhdGlvbiBvciBpbnN0cnVjdGlvbiBjb250aW51YXRpb24sIGF0IGA+YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS0+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPD8+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhcT5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDwhLS1hYi0tPlxuICAgKiAgICAgICAgICAgICBeXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG5cbiAgICAvLyBNb3JlIGRhc2hlcy5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCAmJiBtYXJrZXIgPT09IGNvbnN0YW50cy5odG1sQ29tbWVudCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2xvc2VkIGNvbnRpbnVhdGlvbjogZXZlcnl0aGluZyB3ZSBnZXQgdW50aWwgdGhlIGVvbC9lb2YgaXMgcGFydCBvZiBpdC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25DbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5odG1sRmxvd0RhdGEpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQWZ0ZXIoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBEb25lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbEZsb3cpXG4gICAgLy8gLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gZmFsc2VcbiAgICAvLyAvLyBObyBsb25nZXIgY29uY3JldGUuXG4gICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gZmFsc2VcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IGVvbCwgYmVmb3JlIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICogYGBganNcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ICogYGBganNcbiAgICogPiB8IGJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID8gbm9rKGNvZGUpIDogb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsYW5rTGluZUJlZm9yZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgZW9sLCBleHBlY3RpbmcgYmxhbmsgbGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxkaXY+XG4gICAqICAgICAgICAgIF5cbiAgICogICB8XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSwgJ2V4cGVjdGVkIGEgbGluZSBlbmRpbmcnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGJsYW5rTGluZSwgb2ssIG5vaylcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlText\": () => (/* binding */ htmlText)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst htmlText = {name: 'htmlText', tokenize: tokenizeHtmlText}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan, 'expected `<`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.exclamationMark) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentOpenInside\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentEnd\n }\n\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash) {\n effects.consume(code)\n return commentEnd\n }\n\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan\n ? end(code)\n : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.cdataOpeningString\n\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n return end(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n return end(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.questionMark) {\n effects.consume(code)\n return instructionClose\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlpha)(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.dot ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.colon ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.underscore ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiAlphanumeric)(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n ) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return nok(code)\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.equalsTo ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.graveAccent\n ) {\n return nok(code)\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.slash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEndingOrSpace)(code)\n ) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.greaterThan) {\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlText)\n return ok\n }\n\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(returnState, 'expected return state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code), 'expected eol')\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(\n effects,\n lineEndingAfterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.htmlTextData)\n return returnState(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9odG1sLXRleHQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBT25CO0FBQ21CO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZixrQkFBa0I7O0FBRXpCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLCtCQUErQjtBQUM1QztBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBLGFBQWEsT0FBTztBQUNwQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLCtDQUFNLFVBQVUsMEVBQWM7QUFDbEMsa0JBQWtCLDBFQUFjO0FBQ2hDLGtCQUFrQiw4RUFBa0I7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLGlGQUFxQjtBQUN0QztBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHVFQUFXO0FBQzVCO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsOEVBQWtCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsb0VBQVU7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsc0VBQVU7QUFDM0I7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixt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RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDZFQUFpQjtBQUNsQztBQUNBLG1CQUFtQiw4RUFBa0I7QUFDckMsbUJBQW1CLDBFQUFjO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksOENBQU07QUFDVixJQUFJLCtDQUFNLENBQUMsNEVBQWtCO0FBQzdCLGlCQUFpQiw4RUFBa0I7QUFDbkMsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsSUFBSSw4Q0FBTTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWTtBQUNwQjtBQUNBO0FBQ0EsVUFBVSw0RUFBZ0I7QUFDMUI7QUFDQTtBQUNBLGNBQWMsaUZBQWlCO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGtCQUFrQiw4RUFBa0I7QUFDcEM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2Rldi9saWIvaHRtbC10ZXh0LmpzPzYyZDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBodG1sVGV4dCA9IHtuYW1lOiAnaHRtbFRleHQnLCB0b2tlbml6ZTogdG9rZW5pemVIdG1sVGV4dH1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sVGV4dChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtYXJrZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBsZXQgcmV0dXJuU3RhdGVcblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgSFRNTCAodGV4dCkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVzc1RoYW4sICdleHBlY3RlZCBgPGAnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuaHRtbFRleHQpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5odG1sVGV4dERhdGEpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IHRhZyBuYW1lIG9yIG90aGVyIHN0dWZmLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmV4Y2xhbWF0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZGVjbGFyYXRpb25PcGVuXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnNsYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1ZXN0aW9uTWFyaykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhYCwgYXQgZGVjbGFyYXRpb24sIGNvbW1lbnQsIG9yIENEQVRBLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb25PcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgY29tbWVudCwgYWZ0ZXIgYDwhLWAsIGF0IGFub3RoZXIgYC1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudEVuZFxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRDbG9zZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gY29tbWVudFxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tbWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQsIGFmdGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50Q2xvc2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5kYXNoKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50RW5kXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LCBhZnRlciBgLS1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50RW5kKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW5cbiAgICAgID8gZW5kKGNvZGUpXG4gICAgICA6IGNvZGUgPT09IGNvZGVzLmRhc2hcbiAgICAgID8gY29tbWVudENsb3NlKGNvZGUpXG4gICAgICA6IGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW4gQ0RBVEEsIGV4cGVjdGluZyBgQ0RBVEFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YU9wZW5JbnNpZGUoY29kZSkge1xuICAgIGNvbnN0IHZhbHVlID0gY29uc3RhbnRzLmNkYXRhT3BlbmluZ1N0cmluZ1xuXG4gICAgaWYgKGNvZGUgPT09IHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgrKykpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluZGV4ID09PSB2YWx1ZS5sZW5ndGggPyBjZGF0YSA6IGNkYXRhT3Blbkluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgICAgICAgXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNkYXRhQ2xvc2VcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGNkYXRhXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEluIENEQVRBLCBhZnRlciBgXWAsIGF0IGFub3RoZXIgYF1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFDbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY2RhdGFFbmRcbiAgICB9XG5cbiAgICByZXR1cm4gY2RhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQSwgYWZ0ZXIgYF1dYCwgYXQgYD5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjZGF0YUVuZFxuICAgIH1cblxuICAgIHJldHVybiBjZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRlY2xhcmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWI+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGRlY2xhcmF0aW9uXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkZWNsYXJhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGluc3RydWN0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8P2I/PiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zdHJ1Y3Rpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucXVlc3Rpb25NYXJrKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnN0cnVjdGlvbkNsb3NlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBpbnN0cnVjdGlvblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBpbnN0cnVjdGlvbiwgYWZ0ZXIgYD9gLCBhdCBgPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDw/Yj8+IGNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc3RydWN0aW9uQ2xvc2UoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiA/IGVuZChjb2RlKSA6IGluc3RydWN0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwvYCwgaW4gY2xvc2luZyB0YWcsIGF0IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZVN0YXJ0KGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L3hgLCBpbiBhIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2UoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2ggfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3NpbmcgdGFnLCBhZnRlciB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPC9iPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdDbG9zZUJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2VlblxuICAgIH1cblxuICAgIHJldHVybiBlbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPHhgLCBpbiBvcGVuaW5nIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW4oY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmRhc2ggfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5zbGFzaCB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHRhZywgYWZ0ZXIgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkJldHdlZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5zbGFzaCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsIGFuZCBgOmAgYW5kIGBfYC5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuY29sb24gfHwgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSB8fCBhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuXG4gICAgfVxuXG4gICAgcmV0dXJuIGVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGF0dHJpYnV0ZSBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPiBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwgYW5kIGAtYCwgYC5gLCBgOmAsIGFuZCBgX2AuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZGFzaCB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZG90IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5jb2xvbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSB8fFxuICAgICAgYXNjaWlBbHBoYW51bWVyaWMoY29kZSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBhdHRyaWJ1dGUgbmFtZSwgYmVmb3JlIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM+IGRcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lcXVhbHNUbykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIHVucXVvdGVkLCBkb3VibGUgcXVvdGVkLCBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYWxsb3dpbmdcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5lcXVhbHNUbyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyYXZlQWNjZW50XG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnF1b3RhdGlvbk1hcmsgfHwgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSBjb2RlXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1cImRcIj4gZVxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXJcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmF2ZUFjY2VudFxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLnNsYXNoIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBiZWZvcmUgd2hpdGVzcGFjZSBvciB0aGUgZW5kXG4gICAqIG9mIHRoZSB0YWcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlcihjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9mIGEgdGFnIHdoZXJlIG9ubHkgYW4gYD5gIGlzIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9XCJkXCI+IGVcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5ncmVhdGVyVGhhbikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuaHRtbFRleHREYXRhKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmh0bWxUZXh0KVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGVvbC5cbiAgICpcbiAgICogPiDwn5GJICoqTm90ZSoqOiB3ZSBjYW7igJl0IGhhdmUgYmxhbmsgbGluZXMgaW4gdGV4dCwgc28gbm8gbmVlZCB0byB3b3JyeSBhYm91dFxuICAgKiA+IGVtcHR5IHRva2Vucy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWFcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiLS0+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpIHtcbiAgICBhc3NlcnQocmV0dXJuU3RhdGUsICdleHBlY3RlZCByZXR1cm4gc3RhdGUnKVxuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5odG1sVGV4dERhdGEpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBsaW5lRW5kaW5nQWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBlb2wsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqID4g8J+RiSAqKk5vdGUqKjogd2UgY2Fu4oCZdCBoYXZlIGJsYW5rIGxpbmVzIGluIHRleHQsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXRcbiAgICogPiBlbXB0eSB0b2tlbnMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhIDwhLS1hXG4gICAqID4gfCBiLS0+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQWZ0ZXIoY29kZSkge1xuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgICAnZXhwZWN0ZWQgYGRpc2FibGUubnVsbGAgdG8gYmUgcG9wdWxhdGVkJ1xuICAgIClcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoXG4gICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICBsaW5lRW5kaW5nQWZ0ZXJQcmVmaXgsXG4gICAgICAgICAgdHlwZXMubGluZVByZWZpeCxcbiAgICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IGNvbnN0YW50cy50YWJTaXplXG4gICAgICAgICkoY29kZSlcbiAgICAgIDogbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZW9sLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IHdlIGNhbuKAmXQgaGF2ZSBibGFuayBsaW5lcyBpbiB0ZXh0LCBzbyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0XG4gICAqID4gZW1wdHkgdG9rZW5zLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYSA8IS0tYVxuICAgKiA+IHwgYi0tPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmh0bWxUZXh0RGF0YSlcbiAgICByZXR1cm4gcmV0dXJuU3RhdGUoY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelEnd\": () => (/* binding */ labelEnd)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-factory-destination */ \"../../../node_modules/micromark-factory-destination/dev/index.js\");\n/* harmony import */ var micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-factory-label */ \"../../../node_modules/micromark-factory-label/dev/index.js\");\n/* harmony import */ var micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-factory-title */ \"../../../node_modules/micromark-factory-title/dev/index.js\");\n/* harmony import */ var micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-whitespace */ \"../../../node_modules/micromark-factory-whitespace/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-normalize-identifier */ \"../../../node_modules/micromark-util-normalize-identifier/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-resolve-all */ \"../../../node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {tokenize: tokenizeResource}\n/** @type {Construct} */\nconst referenceFullConstruct = {tokenize: tokenizeReferenceFull}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {tokenize: tokenizeReferenceCollapsed}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n\n while (++index < events.length) {\n const token = events[index][1]\n\n if (\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ||\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ? 4 : 2)\n token.type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.data\n index++\n }\n }\n\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link ||\n (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage || token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) {\n offset = 2\n break\n }\n }\n } else if (token.type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd) {\n close = index\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(open !== undefined, '`open` is supposed to be found')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(close !== undefined, '`close` is supposed to be found')\n\n const group = {\n type: events[open][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.link : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.image,\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n const label = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.label,\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n\n const text = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelText,\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['enter', text, context]])\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n context.parser.constructs.insideSpan.null,\n 'expected `insideSpan.null` to be populated'\n )\n // Between.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(\n media,\n (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_3__.resolveAll)(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, events.slice(close + 1))\n\n // Media close.\n media = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.push)(media, [['exit', group, context]])\n\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, open, events.length, media)\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelImage ||\n self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelLink) &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket, 'expected `]`')\n\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n\n defined = self.parser.defined.includes(\n (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n self.sliceSerialize({start: labelStart.end, end: self.now()})\n )\n )\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.labelEnd)\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis, 'expected left paren')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n return resourceEnd(code)\n }\n\n return (0,micromark_factory_destination__WEBPACK_IMPORTED_MODULE_8__.factoryDestination)(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestination,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteral,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationLiteralMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationRaw,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceDestinationString,\n micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_9__.constants.linkResourceDestinationBalanceMax\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftParenthesis\n ) {\n return (0,micromark_factory_title__WEBPACK_IMPORTED_MODULE_10__.factoryTitle)(\n effects,\n resourceTitleAfter,\n nok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitle,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceTitleString\n )(code)\n }\n\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEndingOrSpace)(code)\n ? (0,micromark_factory_whitespace__WEBPACK_IMPORTED_MODULE_7__.factoryWhitespace)(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightParenthesis) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resourceMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.resource)\n return ok\n }\n\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n return micromark_factory_label__WEBPACK_IMPORTED_MODULE_11__.factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceString\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n (0,micromark_util_normalize_identifier__WEBPACK_IMPORTED_MODULE_5__.normalizeIdentifier)(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.leftSquareBracket, 'expected left bracket')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_4__.codes.rightSquareBracket) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.referenceMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.reference)\n return ok\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1lbmQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSx5Q0FBeUM7QUFDdEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRWdFO0FBQ1o7QUFDQTtBQUNVO0FBQ0k7QUFDZjtBQUNvQjtBQUNsQjtBQUNEO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLDJCQUEyQjtBQUMzQixXQUFXLFdBQVc7QUFDdEIsZ0NBQWdDO0FBQ2hDLFdBQVcsV0FBVztBQUN0QixxQ0FBcUM7O0FBRXJDLFdBQVcsVUFBVTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsNEVBQWdCO0FBQ3JDLHFCQUFxQiwyRUFBZTtBQUNwQyxxQkFBcUIsMEVBQWM7QUFDbkM7QUFDQTtBQUNBLDhDQUE4Qyw0RUFBZ0I7QUFDOUQsbUJBQW1CLHNFQUFVO0FBQzdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFdBQVcsVUFBVTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxhQUFhLG9CQUFvQjtBQUNqQztBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDO0FBQ0EsYUFBYSxjQUFjO0FBQzNCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsc0VBQVU7QUFDakMsd0JBQXdCLDJFQUFlO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseURBQXlELDJFQUFlO0FBQ3hFO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxpQkFBaUIsb0ZBQXdCO0FBQ3pDLG9CQUFvQixpRkFBcUI7QUFDekM7QUFDQSxtQkFBbUIsaUZBQXFCO0FBQ3hDLG1CQUFtQiwyRUFBZTtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLWVuZC5qcz8yMzUwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlEZXN0aW5hdGlvbn0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24nXG5pbXBvcnQge2ZhY3RvcnlMYWJlbH0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktbGFiZWwnXG5pbXBvcnQge2ZhY3RvcnlUaXRsZX0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktdGl0bGUnXG5pbXBvcnQge2ZhY3RvcnlXaGl0ZXNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxFbmQgPSB7XG4gIG5hbWU6ICdsYWJlbEVuZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsRW5kLFxuICByZXNvbHZlVG86IHJlc29sdmVUb0xhYmVsRW5kLFxuICByZXNvbHZlQWxsOiByZXNvbHZlQWxsTGFiZWxFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZXNvdXJjZUNvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVSZXNvdXJjZX1cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgcmVmZXJlbmNlRnVsbENvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVSZWZlcmVuY2VGdWxsfVxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QgPSB7dG9rZW5pemU6IHRva2VuaXplUmVmZXJlbmNlQ29sbGFwc2VkfVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFsbExhYmVsRW5kKGV2ZW50cykge1xuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIGNvbnN0IHRva2VuID0gZXZlbnRzW2luZGV4XVsxXVxuXG4gICAgaWYgKFxuICAgICAgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSB8fFxuICAgICAgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rIHx8XG4gICAgICB0b2tlbi50eXBlID09PSB0eXBlcy5sYWJlbEVuZFxuICAgICkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBtYXJrZXIuXG4gICAgICBldmVudHMuc3BsaWNlKGluZGV4ICsgMSwgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSA/IDQgOiAyKVxuICAgICAgdG9rZW4udHlwZSA9IHR5cGVzLmRhdGFcbiAgICAgIGluZGV4KytcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9MYWJlbEVuZChldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICBsZXQgb2Zmc2V0ID0gMFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdG9rZW5cbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBvcGVuXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2xvc2VcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBtZWRpYVxuXG4gIC8vIEZpbmQgYW4gb3BlbmluZy5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB0b2tlbiA9IGV2ZW50c1tpbmRleF1bMV1cblxuICAgIGlmIChvcGVuKSB7XG4gICAgICAvLyBJZiB3ZSBzZWUgYW5vdGhlciBsaW5rLCBvciBpbmFjdGl2ZSBsaW5rIGxhYmVsLCB3ZeKAmXZlIGJlZW4gaGVyZSBiZWZvcmUuXG4gICAgICBpZiAoXG4gICAgICAgIHRva2VuLnR5cGUgPT09IHR5cGVzLmxpbmsgfHxcbiAgICAgICAgKHRva2VuLnR5cGUgPT09IHR5cGVzLmxhYmVsTGluayAmJiB0b2tlbi5faW5hY3RpdmUpXG4gICAgICApIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgLy8gTWFyayBvdGhlciBsaW5rIG9wZW5pbmdzIGFzIGluYWN0aXZlLCBhcyB3ZSBjYW7igJl0IGhhdmUgbGlua3MgaW5cbiAgICAgIC8vIGxpbmtzLlxuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiYgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSB7XG4gICAgICAgIHRva2VuLl9pbmFjdGl2ZSA9IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNsb3NlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgICAgKHRva2VuLnR5cGUgPT09IHR5cGVzLmxhYmVsSW1hZ2UgfHwgdG9rZW4udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSAmJlxuICAgICAgICAhdG9rZW4uX2JhbGFuY2VkXG4gICAgICApIHtcbiAgICAgICAgb3BlbiA9IGluZGV4XG5cbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IHR5cGVzLmxhYmVsTGluaykge1xuICAgICAgICAgIG9mZnNldCA9IDJcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbi50eXBlID09PSB0eXBlcy5sYWJlbEVuZCkge1xuICAgICAgY2xvc2UgPSBpbmRleFxuICAgIH1cbiAgfVxuXG4gIGFzc2VydChvcGVuICE9PSB1bmRlZmluZWQsICdgb3BlbmAgaXMgc3VwcG9zZWQgdG8gYmUgZm91bmQnKVxuICBhc3NlcnQoY2xvc2UgIT09IHVuZGVmaW5lZCwgJ2BjbG9zZWAgaXMgc3VwcG9zZWQgdG8gYmUgZm91bmQnKVxuXG4gIGNvbnN0IGdyb3VwID0ge1xuICAgIHR5cGU6IGV2ZW50c1tvcGVuXVsxXS50eXBlID09PSB0eXBlcy5sYWJlbExpbmsgPyB0eXBlcy5saW5rIDogdHlwZXMuaW1hZ2UsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuXG4gIGNvbnN0IGxhYmVsID0ge1xuICAgIHR5cGU6IHR5cGVzLmxhYmVsLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uc3RhcnQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlXVsxXS5lbmQpXG4gIH1cblxuICBjb25zdCB0ZXh0ID0ge1xuICAgIHR5cGU6IHR5cGVzLmxhYmVsVGV4dCxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW4gKyBvZmZzZXQgKyAyXVsxXS5lbmQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2Nsb3NlIC0gMl1bMV0uc3RhcnQpXG4gIH1cblxuICBtZWRpYSA9IFtcbiAgICBbJ2VudGVyJywgZ3JvdXAsIGNvbnRleHRdLFxuICAgIFsnZW50ZXInLCBsYWJlbCwgY29udGV4dF1cbiAgXVxuXG4gIC8vIE9wZW5pbmcgbWFya2VyLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShvcGVuICsgMSwgb3BlbiArIG9mZnNldCArIDMpKVxuXG4gIC8vIFRleHQgb3Blbi5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBbWydlbnRlcicsIHRleHQsIGNvbnRleHRdXSlcblxuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICBhc3NlcnQoXG4gICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsXG4gICAgJ2V4cGVjdGVkIGBpbnNpZGVTcGFuLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgKVxuICAvLyBCZXR3ZWVuLlxuICBtZWRpYSA9IHB1c2goXG4gICAgbWVkaWEsXG4gICAgcmVzb2x2ZUFsbChcbiAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLFxuICAgICAgZXZlbnRzLnNsaWNlKG9wZW4gKyBvZmZzZXQgKyA0LCBjbG9zZSAtIDMpLFxuICAgICAgY29udGV4dFxuICAgIClcbiAgKVxuXG4gIC8vIFRleHQgY2xvc2UsIG1hcmtlciBjbG9zZSwgbGFiZWwgY2xvc2UuXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgW1xuICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDJdLFxuICAgIGV2ZW50c1tjbG9zZSAtIDFdLFxuICAgIFsnZXhpdCcsIGxhYmVsLCBjb250ZXh0XVxuICBdKVxuXG4gIC8vIFJlZmVyZW5jZSwgcmVzb3VyY2UsIG9yIHNvLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShjbG9zZSArIDEpKVxuXG4gIC8vIE1lZGlhIGNsb3NlLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIFtbJ2V4aXQnLCBncm91cCwgY29udGV4dF1dKVxuXG4gIHNwbGljZShldmVudHMsIG9wZW4sIGV2ZW50cy5sZW5ndGgsIG1lZGlhKVxuXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMYWJlbEVuZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgbGFiZWxTdGFydFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBkZWZpbmVkXG5cbiAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChcbiAgICAgIChzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMubGFiZWxJbWFnZSB8fFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMubGFiZWxMaW5rKSAmJlxuICAgICAgIXNlbGYuZXZlbnRzW2luZGV4XVsxXS5fYmFsYW5jZWRcbiAgICApIHtcbiAgICAgIGxhYmVsU3RhcnQgPSBzZWxmLmV2ZW50c1tpbmRleF1bMV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIGVuZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0LCAnZXhwZWN0ZWQgYF1gJylcblxuICAgIC8vIElmIHRoZXJlIGlzIG5vdCBhbiBva2F5IG9wZW5pbmcuXG4gICAgaWYgKCFsYWJlbFN0YXJ0KSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgbGFiZWwgKGxpbmspIHN0YXJ0IGlzIG1hcmtlZCBhcyBpbmFjdGl2ZSxcbiAgICAvLyBpdCBtZWFucyB3ZeKAmWQgYmUgd3JhcHBpbmcgYSBsaW5rLCBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyBgYGBtYXJrZG93blxuICAgIC8vID4gfCBhIFtiIFtjXShkKSBlXShmKSBnLlxuICAgIC8vICAgICAgICAgICAgICAgICAgXlxuICAgIC8vIGBgYFxuICAgIC8vXG4gICAgLy8gV2UgY2Fu4oCZdCBoYXZlIHRoYXQsIHNvIGl04oCZcyBqdXN0IGJhbGFuY2VkIGJyYWNrZXRzLlxuICAgIGlmIChsYWJlbFN0YXJ0Ll9pbmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIGxhYmVsRW5kTm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZGVmaW5lZCA9IHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHtzdGFydDogbGFiZWxTdGFydC5lbmQsIGVuZDogc2VsZi5ub3coKX0pXG4gICAgICApXG4gICAgKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxFbmQpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbE1hcmtlcilcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGFiZWxNYXJrZXIpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsRW5kKVxuICAgIHJldHVybiBhZnRlclxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIC8vIE5vdGU6IGBtYXJrZG93bi1yc2AgYWxzbyBwYXJzZXMgR0ZNIGZvb3Rub3RlcyBoZXJlLCB3aGljaCBmb3IgdXMgaXMgaW5cbiAgICAvLyBhbiBleHRlbnNpb24uXG5cbiAgICAvLyBSZXNvdXJjZSAoYFthc2RdKGZnaClgKT9cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICByZXNvdXJjZUNvbnN0cnVjdCxcbiAgICAgICAgbGFiZWxFbmRPayxcbiAgICAgICAgZGVmaW5lZCA/IGxhYmVsRW5kT2sgOiBsYWJlbEVuZE5va1xuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIEZ1bGwgKGBbYXNkXVtmZ2hdYCkgb3IgY29sbGFwc2VkIChgW2FzZF1bXWApIHJlZmVyZW5jZT9cbiAgICBpZiAoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIHJlZmVyZW5jZUZ1bGxDb25zdHJ1Y3QsXG4gICAgICAgIGxhYmVsRW5kT2ssXG4gICAgICAgIGRlZmluZWQgPyByZWZlcmVuY2VOb3RGdWxsIDogbGFiZWxFbmROb2tcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBTaG9ydGN1dCAoYFthc2RdYCkgcmVmZXJlbmNlP1xuICAgIHJldHVybiBkZWZpbmVkID8gbGFiZWxFbmRPayhjb2RlKSA6IGxhYmVsRW5kTm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYF1gLCBhdCBgW2AsIGJ1dCBub3QgYXQgYSBmdWxsIHJlZmVyZW5jZS5cbiAgICpcbiAgICogPiDwn5GJICoqTm90ZSoqOiB3ZSBvbmx5IGdldCBoZXJlIGlmIHRoZSBsYWJlbCBpcyBkZWZpbmVkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZU5vdEZ1bGwoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICByZWZlcmVuY2VDb2xsYXBzZWRDb25zdHJ1Y3QsXG4gICAgICBsYWJlbEVuZE9rLFxuICAgICAgbGFiZWxFbmROb2tcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogRG9uZSwgd2UgZm91bmQgc29tZXRoaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEVuZE9rKGNvZGUpIHtcbiAgICAvLyBOb3RlOiBgbWFya2Rvd24tcnNgIGRvZXMgYSBidW5jaCBvZiBzdHVmZiBoZXJlLlxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIERvbmUsIGl04oCZcyBub3RoaW5nLlxuICAgKlxuICAgKiBUaGVyZSB3YXMgYW4gb2theSBvcGVuaW5nLCBidXQgd2UgZGlkbuKAmXQgbWF0Y2ggYW55dGhpbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV1bYiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFbmROb2soY29kZSkge1xuICAgIGxhYmVsU3RhcnQuX2JhbGFuY2VkID0gdHJ1ZVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVJlc291cmNlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHJlc291cmNlU3RhcnRcblxuICAvKipcbiAgICogQXQgYSByZXNvdXJjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZVN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzLCAnZXhwZWN0ZWQgbGVmdCBwYXJlbicpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZXNvdXJjZSlcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLnJlc291cmNlTWFya2VyKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5yZXNvdXJjZU1hcmtlcilcbiAgICByZXR1cm4gcmVzb3VyY2VCZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgYChgLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZUJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VPcGVuKShjb2RlKVxuICAgICAgOiByZXNvdXJjZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYClgIG9yIGEgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLnJpZ2h0UGFyZW50aGVzaXMpIHtcbiAgICAgIHJldHVybiByZXNvdXJjZUVuZChjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBmYWN0b3J5RGVzdGluYXRpb24oXG4gICAgICBlZmZlY3RzLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbkFmdGVyLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uLFxuICAgICAgdHlwZXMucmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWwsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcixcbiAgICAgIHR5cGVzLnJlc291cmNlRGVzdGluYXRpb25SYXcsXG4gICAgICB0eXBlcy5yZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nLFxuICAgICAgY29uc3RhbnRzLmxpbmtSZXNvdXJjZURlc3RpbmF0aW9uQmFsYW5jZU1heFxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24sIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZURlc3RpbmF0aW9uQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIHJlc291cmNlQmV0d2VlbikoY29kZSlcbiAgICAgIDogcmVzb3VyY2VFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBpbnZhbGlkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKDw8KSBiXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcoY29kZSkge1xuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgZGVzdGluYXRpb24gYW5kIHdoaXRlc3BhY2UsIGF0IGAoYCBvciB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiICkgY1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VCZXR3ZWVuKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5xdW90YXRpb25NYXJrIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5hcG9zdHJvcGhlIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5sZWZ0UGFyZW50aGVzaXNcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWN0b3J5VGl0bGUoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIHJlc291cmNlVGl0bGVBZnRlcixcbiAgICAgICAgbm9rLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlTWFya2VyLFxuICAgICAgICB0eXBlcy5yZXNvdXJjZVRpdGxlU3RyaW5nXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIHRpdGxlLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIgXCJjXCIpIGRcbiAgICogICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlVGl0bGVBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VFbmQpKGNvZGUpXG4gICAgICA6IHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGF0IGApYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZXNvdXJjZU1hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlc291cmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlc291cmNlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplUmVmZXJlbmNlRnVsbChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHJlZmVyZW5jZUZ1bGxcblxuICAvKipcbiAgICogSW4gYSByZWZlcmVuY2UgKGZ1bGwpLCBhdCB0aGUgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW2JdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGwoY29kZSkge1xuICAgIGFzc2VydChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCwgJ2V4cGVjdGVkIGxlZnQgYnJhY2tldCcpXG4gICAgcmV0dXJuIGZhY3RvcnlMYWJlbC5jYWxsKFxuICAgICAgc2VsZixcbiAgICAgIGVmZmVjdHMsXG4gICAgICByZWZlcmVuY2VGdWxsQWZ0ZXIsXG4gICAgICByZWZlcmVuY2VGdWxsTWlzc2luZyxcbiAgICAgIHR5cGVzLnJlZmVyZW5jZSxcbiAgICAgIHR5cGVzLnJlZmVyZW5jZU1hcmtlcixcbiAgICAgIHR5cGVzLnJlZmVyZW5jZVN0cmluZ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIHJlZmVyZW5jZSAoZnVsbCksIGFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiXSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdWzFdKS5zbGljZSgxLCAtMSlcbiAgICAgIClcbiAgICApXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoZnVsbCkgdGhhdCB3YXMgbWlzc2luZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxNaXNzaW5nKGNvZGUpIHtcbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVSZWZlcmVuY2VDb2xsYXBzZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkU3RhcnRcblxuICAvKipcbiAgICogSW4gcmVmZXJlbmNlIChjb2xsYXBzZWQpLCBhdCBgW2AuXG4gICAqXG4gICAqID4g8J+RiSAqKk5vdGUqKjogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgbGFiZWwgaXMgZGVmaW5lZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZFN0YXJ0KGNvZGUpIHtcbiAgICAvLyBXZSBvbmx5IGF0dGVtcHQgYSBjb2xsYXBzZWQgbGFiZWwgaWYgdGhlcmXigJlzIGEgYFtgLlxuICAgIGFzc2VydChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCwgJ2V4cGVjdGVkIGxlZnQgYnJhY2tldCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZWZlcmVuY2UpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5yZWZlcmVuY2VNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlZmVyZW5jZU1hcmtlcilcbiAgICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkT3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoY29sbGFwc2VkKSwgYXQgYF1gLlxuICAgKlxuICAgKiA+IPCfkYkgKipOb3RlKio6IHdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlIGxhYmVsIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bXSBkXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZE9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMucmVmZXJlbmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMucmVmZXJlbmNlTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnJlZmVyZW5jZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js": +/*!************************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelStartImage\": () => (/* binding */ labelStartImage)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.exclamationMark, 'expected `!`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImageMarker)\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelImage)\n return after\n }\n\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1zdGFydC1pbWFnZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ0E7QUFDYjtBQUNBOztBQUV2QyxXQUFXLFdBQVc7QUFDZjtBQUNQO0FBQ0E7QUFDQSxjQUFjLDhEQUFtQjtBQUNqQzs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLElBQUksK0NBQU0sVUFBVSxpRkFBcUI7QUFDekMsa0JBQWtCLDRFQUFnQjtBQUNsQyxrQkFBa0Isa0ZBQXNCO0FBQ3hDO0FBQ0EsaUJBQWlCLGtGQUFzQjtBQUN2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGlCQUFpQixtRkFBdUI7QUFDeEMsb0JBQW9CLDZFQUFpQjtBQUNyQztBQUNBLG1CQUFtQiw2RUFBaUI7QUFDcEMsbUJBQW1CLDRFQUFnQjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUVBQVc7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLXN0YXJ0LWltYWdlLmpzP2Q3NTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtsYWJlbEVuZH0gZnJvbSAnLi9sYWJlbC1lbmQuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxhYmVsU3RhcnRJbWFnZSA9IHtcbiAgbmFtZTogJ2xhYmVsU3RhcnRJbWFnZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZSxcbiAgcmVzb2x2ZUFsbDogbGFiZWxFbmQucmVzb2x2ZUFsbFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIChpbWFnZSkgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhICFbYl0gY1xuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmV4Y2xhbWF0aW9uTWFyaywgJ2V4cGVjdGVkIGAhYCcpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbEltYWdlKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxJbWFnZU1hcmtlcilcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGFiZWxJbWFnZU1hcmtlcilcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAhYCwgYXQgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSAhW2JdIGNcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldCkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5sYWJlbE1hcmtlcilcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsTWFya2VyKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsSW1hZ2UpXG4gICAgICByZXR1cm4gYWZ0ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgIVtiXSBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBpcyBuZWVkZWQgaW4gYmVjYXVzZSwgd2hlbiBHRk0gZm9vdG5vdGVzIGFyZSBlbmFibGVkLCBpbWFnZXMgbmV2ZXJcbiAgICogZm9ybSB3aGVuIHN0YXJ0ZWQgd2l0aCBhIGBeYC5cbiAgICogSW5zdGVhZCwgbGlua3MgZm9ybTpcbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogIVteYV0oYilcbiAgICpcbiAgICogIVteYV1bYl1cbiAgICpcbiAgICogW2JdOiBjXG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGBodG1sXG4gICAqIDxwPiE8YSBocmVmPVxcXCJiXFxcIj5eYTwvYT48L3A+XG4gICAqIDxwPiE8YSBocmVmPVxcXCJjXFxcIj5eYTwvYT48L3A+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHVzZSBhIG5ldyBmaWVsZCB0byBkbyB0aGlzLCB0aGlzIGlzIHN0aWxsIG5lZWRlZCBmb3JcbiAgICAvLyBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLCBidXQgdGhlIGBsYWJlbC1zdGFydC1saW5rYFxuICAgIC8vIGJlaGF2aW9yIGlzbuKAmXQuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuY2FyZXQgJiZcbiAgICAgICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"labelStartLink\": () => (/* binding */ labelStartLink)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _label_end_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./label-end.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: _label_end_js__WEBPACK_IMPORTED_MODULE_1__.labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.leftSquareBracket, 'expected `[`')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelMarker)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.labelLink)\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.caret &&\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9sYWJlbC1zdGFydC1saW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDQTtBQUNiO0FBQ0E7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBLGNBQWMsOERBQW1CO0FBQ2pDOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLG1GQUF1QjtBQUMzQyxrQkFBa0IsMkVBQWU7QUFDakMsa0JBQWtCLDZFQUFpQjtBQUNuQztBQUNBLGlCQUFpQiw2RUFBaUI7QUFDbEMsaUJBQWlCLDJFQUFlO0FBQ2hDO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsdUVBQVc7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xhYmVsLXN0YXJ0LWxpbmsuanM/N2Q4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5pbXBvcnQge2xhYmVsRW5kfSBmcm9tICcuL2xhYmVsLWVuZC5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxTdGFydExpbmsgPSB7XG4gIG5hbWU6ICdsYWJlbFN0YXJ0TGluaycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRMaW5rLFxuICByZXNvbHZlQWxsOiBsYWJlbEVuZC5yZXNvbHZlQWxsXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGFiZWxTdGFydExpbmsoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbCAobGluaykgc3RhcnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIFtiXSBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBhc3NlcnQoY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQsICdleHBlY3RlZCBgW2AnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxMaW5rKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGFiZWxNYXJrZXIpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxhYmVsTWFya2VyKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5sYWJlbExpbmspXG4gICAgcmV0dXJuIGFmdGVyXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHRoaXMgaXNu4oCZdCBuZWVkZWQgaW4gYG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLWZvb3Rub3RlYCxcbiAgICAvLyByZW1vdmUuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuY2FyZXQgJiZcbiAgICAgICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"lineEnding\": () => (/* binding */ lineEnding)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst lineEnding = {name: 'lineEnding', tokenize: tokenizeLineEnding}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code), 'expected eol')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, ok, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saW5lLWVuZGluZy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ087QUFDUDtBQUNiOztBQUV2QyxXQUFXLFdBQVc7QUFDZixvQkFBb0I7O0FBRTNCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTSxDQUFDLDRFQUFrQjtBQUM3QixrQkFBa0IsNEVBQWdCO0FBQ2xDO0FBQ0EsaUJBQWlCLDRFQUFnQjtBQUNqQyxXQUFXLHFFQUFZLGNBQWMsNEVBQWdCO0FBQ3JEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saW5lLWVuZGluZy5qcz9hYTA4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxpbmVFbmRpbmcgPSB7bmFtZTogJ2xpbmVFbmRpbmcnLCB0b2tlbml6ZTogdG9rZW5pemVMaW5lRW5kaW5nfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpbmVFbmRpbmcoZWZmZWN0cywgb2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGFzc2VydChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksICdleHBlY3RlZCBlb2wnKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIG9rLCB0eXBlcy5saW5lUHJlZml4KVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/list.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/list.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"list\": () => (/* binding */ list)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/* harmony import */ var _blank_line_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blank-line.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var _thematic_break_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./thematic-break.js */ \"../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {tokenize: tokenizeListContinuation},\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {tokenize: tokenizeIndent, partial: true}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n\n return start\n\n /** @type {State} */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n const kind =\n self.containerState.type ||\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.plusSign || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listOrdered)\n\n if (\n kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered\n ? !self.containerState.marker || code === self.containerState.marker\n : (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {_container: true})\n }\n\n if (kind === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listUnordered) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash\n ? effects.check(_thematic_break_js__WEBPACK_IMPORTED_MODULE_4__.thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.digit1) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.asciiDigit)(code) && ++size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.listItemValueSizeMax) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.rightParenthesis || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dot)\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemValue)\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof, 'eof (`null`) is not a marker')\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemMarker)\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n _blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace)\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n self.containerState._closeFlow = undefined\n\n return effects.check(_blank_line_js__WEBPACK_IMPORTED_MODULE_6__.blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size')\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n ok,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n if (self.containerState.furtherBlankLines || !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n effects.attempt(list, ok, nok),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof self.containerState.size === 'number', 'expected size')\n\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent,\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(self.containerState, 'expected state')\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemIndent &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(this.containerState, 'expected state')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(typeof this.containerState.type === 'string', 'expected type')\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_7__.factorySpace)(\n effects,\n afterPrefix,\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace,\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.tabSize + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n\n return !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code) &&\n tail &&\n tail[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefixWhitespace\n ? ok(code)\n : nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9saXN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSwrQ0FBK0M7QUFDNUQsYUFBYSx1Q0FBdUM7QUFDcEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ2M7QUFDZDtBQUNRO0FBQ1I7QUFDYjtBQUNFO0FBQ1E7O0FBRWpELFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQixtQ0FBbUM7QUFDcEQ7QUFDQTs7QUFFQSxXQUFXLFdBQVc7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxXQUFXO0FBQ3RCLHlCQUF5Qjs7QUFFekI7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0RUFBZ0I7QUFDN0M7QUFDQTtBQUNBOztBQUVBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0EsZ0JBQWdCLDBFQUFjLGFBQWEsMEVBQWMsYUFBYSxzRUFBVTtBQUNoRixVQUFVLCtFQUFtQjtBQUM3QixVQUFVLDZFQUFpQjs7QUFFM0I7QUFDQSxlQUFlLCtFQUFtQjtBQUNsQztBQUNBLFVBQVUsb0VBQVU7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGlCQUFpQjtBQUM5Qzs7QUFFQSxtQkFBbUIsK0VBQW1CO0FBQ3RDLHNCQUFzQixnRkFBb0I7QUFDMUMsd0JBQXdCLDBFQUFjLGFBQWEsc0VBQVU7QUFDN0QsMEJBQTBCLDZEQUFhO0FBQ3ZDO0FBQ0E7O0FBRUEsc0NBQXNDLHdFQUFZO0FBQ2xELHNCQUFzQixnRkFBb0I7QUFDMUMsc0JBQXNCLCtFQUFtQjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsUUFBUSxvRUFBVSxtQkFBbUIsOEZBQThCO0FBQ25FO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrRkFBc0IsYUFBYSxxRUFBUztBQUMvRDtBQUNBLG1CQUFtQiwrRUFBbUI7QUFDdEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsSUFBSSwrQ0FBTSxVQUFVLHFFQUFTO0FBQzdCLGtCQUFrQixnRkFBb0I7QUFDdEM7QUFDQSxpQkFBaUIsZ0ZBQW9CO0FBQ3JDO0FBQ0E7QUFDQSxNQUFNLHFEQUFTO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxRQUFRLHVFQUFhO0FBQ3JCLG9CQUFvQiwwRkFBOEI7QUFDbEQ7QUFDQSxtQkFBbUIsMEZBQThCO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1Y7QUFDQTtBQUNBLHVDQUF1QyxnRkFBb0I7QUFDM0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUEsRUFBRSwrQ0FBTTtBQUNSOztBQUVBLHVCQUF1QixxREFBUzs7QUFFaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcscUVBQVk7QUFDdkI7QUFDQTtBQUNBLE1BQU0sZ0ZBQW9CO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1Ysa0RBQWtELHVFQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUVBQVk7QUFDdkI7QUFDQTtBQUNBLE1BQU0sNEVBQWdCO0FBQ3RCO0FBQ0E7QUFDQSxVQUFVLGlGQUFpQjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLCtDQUFNO0FBQ1IsRUFBRSwrQ0FBTTs7QUFFUixTQUFTLHFFQUFZO0FBQ3JCO0FBQ0E7QUFDQSxJQUFJLGdGQUFvQjtBQUN4QjtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBO0FBQ0EsdUJBQXVCLGdGQUFvQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0EsRUFBRSw4Q0FBTTtBQUNSLEVBQUUsK0NBQU07QUFDUjtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFLCtDQUFNO0FBQ1I7QUFDQTtBQUNBOztBQUVBLFNBQVMscUVBQVk7QUFDckI7QUFDQTtBQUNBLElBQUksMEZBQThCO0FBQ2xDO0FBQ0E7QUFDQSxRQUFRLGlGQUFpQjtBQUN6Qjs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQSxZQUFZLHVFQUFhO0FBQ3pCO0FBQ0EsdUJBQXVCLDBGQUE4QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL2xpc3QuanM/ZjMzYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db250YWluZXJTdGF0ZX0gQ29udGFpbmVyU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXhpdGVyfSBFeGl0ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHthc2NpaURpZ2l0LCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcbmltcG9ydCB7dGhlbWF0aWNCcmVha30gZnJvbSAnLi90aGVtYXRpYy1icmVhay5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGlzdCA9IHtcbiAgbmFtZTogJ2xpc3QnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMaXN0U3RhcnQsXG4gIGNvbnRpbnVhdGlvbjoge3Rva2VuaXplOiB0b2tlbml6ZUxpc3RDb250aW51YXRpb259LFxuICBleGl0OiB0b2tlbml6ZUxpc3RFbmRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2VDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGluZGVudENvbnN0cnVjdCA9IHt0b2tlbml6ZTogdG9rZW5pemVJbmRlbnQsIHBhcnRpYWw6IHRydWV9XG5cbi8vIFRvIGRvOiBgbWFya2Rvd24tcnNgIHBhcnNlcyBsaXN0IGl0ZW1zIG9uIHRoZWlyIG93biBhbmQgbGF0ZXIgc3RpdGNoZXMgdGhlbVxuLy8gdG9nZXRoZXIuXG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdFN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gIGxldCBpbml0aWFsU2l6ZSA9XG4gICAgdGFpbCAmJiB0YWlsWzFdLnR5cGUgPT09IHR5cGVzLmxpbmVQcmVmaXhcbiAgICAgID8gdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGhcbiAgICAgIDogMFxuICBsZXQgc2l6ZSA9IDBcblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgY29uc3Qga2luZCA9XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnR5cGUgfHxcbiAgICAgIChjb2RlID09PSBjb2Rlcy5hc3RlcmlzayB8fCBjb2RlID09PSBjb2Rlcy5wbHVzU2lnbiB8fCBjb2RlID09PSBjb2Rlcy5kYXNoXG4gICAgICAgID8gdHlwZXMubGlzdFVub3JkZXJlZFxuICAgICAgICA6IHR5cGVzLmxpc3RPcmRlcmVkKVxuXG4gICAgaWYgKFxuICAgICAga2luZCA9PT0gdHlwZXMubGlzdFVub3JkZXJlZFxuICAgICAgICA/ICFzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciB8fCBjb2RlID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA6IGFzY2lpRGlnaXQoY29kZSlcbiAgICApIHtcbiAgICAgIGlmICghc2VsZi5jb250YWluZXJTdGF0ZS50eXBlKSB7XG4gICAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUudHlwZSA9IGtpbmRcbiAgICAgICAgZWZmZWN0cy5lbnRlcihraW5kLCB7X2NvbnRhaW5lcjogdHJ1ZX0pXG4gICAgICB9XG5cbiAgICAgIGlmIChraW5kID09PSB0eXBlcy5saXN0VW5vcmRlcmVkKSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGlzdEl0ZW1QcmVmaXgpXG4gICAgICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5hc3RlcmlzayB8fCBjb2RlID09PSBjb2Rlcy5kYXNoXG4gICAgICAgICAgPyBlZmZlY3RzLmNoZWNrKHRoZW1hdGljQnJlYWssIG5vaywgYXRNYXJrZXIpKGNvZGUpXG4gICAgICAgICAgOiBhdE1hcmtlcihjb2RlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbGYuaW50ZXJydXB0IHx8IGNvZGUgPT09IGNvZGVzLmRpZ2l0MSkge1xuICAgICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtUHJlZml4KVxuICAgICAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtVmFsdWUpXG4gICAgICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGFzc2VydChzZWxmLmNvbnRhaW5lclN0YXRlLCAnZXhwZWN0ZWQgc3RhdGUnKVxuICAgIGlmIChhc2NpaURpZ2l0KGNvZGUpICYmICsrc2l6ZSA8IGNvbnN0YW50cy5saXN0SXRlbVZhbHVlU2l6ZU1heCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKCFzZWxmLmludGVycnVwdCB8fCBzaXplIDwgMikgJiZcbiAgICAgIChzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA/IGNvZGUgPT09IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyXG4gICAgICAgIDogY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fCBjb2RlID09PSBjb2Rlcy5kb3QpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGlzdEl0ZW1WYWx1ZSlcbiAgICAgIHJldHVybiBhdE1hcmtlcihjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqKi9cbiAgZnVuY3Rpb24gYXRNYXJrZXIoY29kZSkge1xuICAgIGFzc2VydChzZWxmLmNvbnRhaW5lclN0YXRlLCAnZXhwZWN0ZWQgc3RhdGUnKVxuICAgIGFzc2VydChjb2RlICE9PSBjb2Rlcy5lb2YsICdlb2YgKGBudWxsYCkgaXMgbm90IGEgbWFya2VyJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpc3RJdGVtTWFya2VyKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saXN0SXRlbU1hcmtlcilcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciA9IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyIHx8IGNvZGVcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGJsYW5rTGluZSxcbiAgICAgIC8vIENhbuKAmXQgYmUgZW1wdHkgd2hlbiBpbnRlcnJ1cHRpbmcuXG4gICAgICBzZWxmLmludGVycnVwdCA/IG5vayA6IG9uQmxhbmssXG4gICAgICBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIGxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZUNvbnN0cnVjdCxcbiAgICAgICAgZW5kT2ZQcmVmaXgsXG4gICAgICAgIG90aGVyUHJlZml4XG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gb25CbGFuayhjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdHJ1ZVxuICAgIGluaXRpYWxTaXplKytcbiAgICByZXR1cm4gZW5kT2ZQcmVmaXgoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG90aGVyUHJlZml4KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saXN0SXRlbVByZWZpeFdoaXRlc3BhY2UpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saXN0SXRlbVByZWZpeFdoaXRlc3BhY2UpXG4gICAgICByZXR1cm4gZW5kT2ZQcmVmaXhcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBlbmRPZlByZWZpeChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplID1cbiAgICAgIGluaXRpYWxTaXplICtcbiAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoZWZmZWN0cy5leGl0KHR5cGVzLmxpc3RJdGVtUHJlZml4KSwgdHJ1ZSkubGVuZ3RoXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0Q29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcblxuICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIGVmZmVjdHMuY2hlY2soYmxhbmtMaW5lLCBvbkJsYW5rLCBub3RCbGFuaylcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBvbkJsYW5rKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICBhc3NlcnQodHlwZW9mIHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZSA9PT0gJ251bWJlcicsICdleHBlY3RlZCBzaXplJylcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzID1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgfHxcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZVxuXG4gICAgLy8gV2UgaGF2ZSBhIGJsYW5rIGxpbmUuXG4gICAgLy8gU3RpbGwsIHRyeSB0byBjb25zdW1lIGF0IG1vc3QgdGhlIGl0ZW1zIHNpemUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICBvayxcbiAgICAgIHR5cGVzLmxpc3RJdGVtSW5kZW50LFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplICsgMVxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG5vdEJsYW5rKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICBpZiAoc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyB8fCAhbWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyA9IHVuZGVmaW5lZFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gbm90SW5DdXJyZW50SXRlbShjb2RlKVxuICAgIH1cblxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgPSB1bmRlZmluZWRcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGluZGVudENvbnN0cnVjdCwgb2ssIG5vdEluQ3VycmVudEl0ZW0pKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBub3RJbkN1cnJlbnRJdGVtKGNvZGUpIHtcbiAgICBhc3NlcnQoc2VsZi5jb250YWluZXJTdGF0ZSwgJ2V4cGVjdGVkIHN0YXRlJylcbiAgICAvLyBXaGlsZSB3ZSBkbyBjb250aW51ZSwgd2Ugc2lnbmFsIHRoYXQgdGhlIGZsb3cgc2hvdWxkIGJlIGNsb3NlZC5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB0cnVlXG4gICAgLy8gQXMgd2XigJlyZSBjbG9zaW5nIGZsb3csIHdl4oCZcmUgbm8gbG9uZ2VyIGludGVycnVwdGluZy5cbiAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgICAnZXhwZWN0ZWQgYGRpc2FibGUubnVsbGAgdG8gYmUgcG9wdWxhdGVkJ1xuICAgIClcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdHMuYXR0ZW1wdChsaXN0LCBvaywgbm9rKSxcbiAgICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBjb25zdGFudHMudGFiU2l6ZVxuICAgICkoY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUluZGVudChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gIGFzc2VydCh0eXBlb2Ygc2VsZi5jb250YWluZXJTdGF0ZS5zaXplID09PSAnbnVtYmVyJywgJ2V4cGVjdGVkIHNpemUnKVxuXG4gIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgZWZmZWN0cyxcbiAgICBhZnRlclByZWZpeCxcbiAgICB0eXBlcy5saXN0SXRlbUluZGVudCxcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemUgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgYXNzZXJ0KHNlbGYuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1JbmRlbnQgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemVcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7RXhpdGVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0RW5kKGVmZmVjdHMpIHtcbiAgYXNzZXJ0KHRoaXMuY29udGFpbmVyU3RhdGUsICdleHBlY3RlZCBzdGF0ZScpXG4gIGFzc2VydCh0eXBlb2YgdGhpcy5jb250YWluZXJTdGF0ZS50eXBlID09PSAnc3RyaW5nJywgJ2V4cGVjdGVkIHR5cGUnKVxuICBlZmZlY3RzLmV4aXQodGhpcy5jb250YWluZXJTdGF0ZS50eXBlKVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cbiAgYXNzZXJ0KFxuICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICdleHBlY3RlZCBgZGlzYWJsZS5udWxsYCB0byBiZSBwb3B1bGF0ZWQnXG4gIClcblxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgYWZ0ZXJQcmVmaXgsXG4gICAgdHlwZXMubGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlLFxuICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogY29uc3RhbnRzLnRhYlNpemUgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG5cbiAgICByZXR1cm4gIW1hcmtkb3duU3BhY2UoY29kZSkgJiZcbiAgICAgIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gdHlwZXMubGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/list.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js": +/*!***********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"setextUnderline\": () => (/* binding */ setextUnderline)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n content = index\n break\n }\n\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph) {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.definition) {\n definition = index\n }\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(text !== undefined, 'expected a `text` index to be found')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(content !== undefined, 'expected a `text` index to be found')\n\n const heading = {\n type: micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeading,\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingText\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.equalsTo,\n 'expected `=` or `-`'\n )\n\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding &&\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix &&\n self.events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n ) {\n paragraph = self.events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.paragraph\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n marker = code\n return before(code)\n }\n\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLineSequence)\n\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, after, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix)(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.setextHeadingLine)\n return ok(code)\n }\n\n return nok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi9zZXRleHQtdW5kZXJsaW5lLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQsYUFBYSwwQ0FBMEM7QUFDdkQsYUFBYSx5Q0FBeUM7QUFDdEQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0QsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRW9EO0FBQ3NCO0FBQ3RCO0FBQ0E7QUFDYjs7QUFFdkMsV0FBVyxXQUFXO0FBQ2Y7QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7QUFDQSxhQUFhLG9CQUFvQjtBQUNqQztBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLHlFQUFhO0FBQ2pEO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0MsMkVBQWU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx5RUFBYTtBQUNqRDtBQUNBO0FBQ0E7O0FBRUEsbURBQW1ELDRFQUFnQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLDhDQUFNO0FBQ1IsRUFBRSwrQ0FBTTs7QUFFUjtBQUNBLFVBQVUsK0VBQW1CO0FBQzdCLDJCQUEyQjtBQUMzQix5QkFBeUI7QUFDekI7O0FBRUE7QUFDQSx5QkFBeUIsbUZBQXVCOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsYUFBYSxtQkFBbUI7QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUJBQXFCO0FBQ3BDOztBQUVBLElBQUksK0NBQU07QUFDVixlQUFlLHNFQUFVLGFBQWEsMEVBQWM7QUFDcEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLDRFQUFnQjtBQUN2RCx1Q0FBdUMsNEVBQWdCO0FBQ3ZELHVDQUF1Qyx5RUFBYTtBQUNwRDtBQUNBLG1EQUFtRCwyRUFBZTtBQUNsRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1GQUF1QjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLGtCQUFrQiwyRkFBK0I7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiwyRkFBK0I7O0FBRWhELFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWSxpQkFBaUIsNEVBQWdCO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIscUVBQVMsSUFBSSw0RUFBa0I7QUFDaEQsbUJBQW1CLG1GQUF1QjtBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL3NldGV4dC11bmRlcmxpbmUuanM/YTlmNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBzZXRleHRVbmRlcmxpbmUgPSB7XG4gIG5hbWU6ICdzZXRleHRVbmRlcmxpbmUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVTZXRleHRVbmRlcmxpbmUsXG4gIHJlc29sdmVUbzogcmVzb2x2ZVRvU2V0ZXh0VW5kZXJsaW5lXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9TZXRleHRVbmRlcmxpbmUoZXZlbnRzLCBjb250ZXh0KSB7XG4gIC8vIFRvIGRvOiByZXNvbHZlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnRlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCB0ZXh0XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZGVmaW5pdGlvblxuXG4gIC8vIEZpbmQgdGhlIG9wZW5pbmcgb2YgdGhlIGNvbnRlbnQuXG4gIC8vIEl04oCZbGwgYWx3YXlzIGV4aXN0OiB3ZSBkb27igJl0IHRva2VuaXplIGlmIGl0IGlzbuKAmXQgdGhlcmUuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmNvbnRlbnQpIHtcbiAgICAgICAgY29udGVudCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLnBhcmFncmFwaCkge1xuICAgICAgICB0ZXh0ID0gaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdFxuICAgIGVsc2Uge1xuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuY29udGVudCkge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGNvbnRlbnQgZW5kIChpZiBuZWVkZWQgd2XigJlsbCBhZGQgaXQgbGF0ZXIpXG4gICAgICAgIGV2ZW50cy5zcGxpY2UoaW5kZXgsIDEpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGVmaW5pdGlvbiAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmRlZmluaXRpb24pIHtcbiAgICAgICAgZGVmaW5pdGlvbiA9IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXNzZXJ0KHRleHQgIT09IHVuZGVmaW5lZCwgJ2V4cGVjdGVkIGEgYHRleHRgIGluZGV4IHRvIGJlIGZvdW5kJylcbiAgYXNzZXJ0KGNvbnRlbnQgIT09IHVuZGVmaW5lZCwgJ2V4cGVjdGVkIGEgYHRleHRgIGluZGV4IHRvIGJlIGZvdW5kJylcblxuICBjb25zdCBoZWFkaW5nID0ge1xuICAgIHR5cGU6IHR5cGVzLnNldGV4dEhlYWRpbmcsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1t0ZXh0XVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgcGFyYWdyYXBoIHRvIHNldGV4dCBoZWFkaW5nIHRleHQuXG4gIGV2ZW50c1t0ZXh0XVsxXS50eXBlID0gdHlwZXMuc2V0ZXh0SGVhZGluZ1RleHRcblxuICAvLyBJZiB3ZSBoYXZlIGRlZmluaXRpb25zIGluIHRoZSBjb250ZW50LCB3ZeKAmWxsIGtlZXAgb24gaGF2aW5nIGNvbnRlbnQsXG4gIC8vIGJ1dCB3ZSBuZWVkIG1vdmUgaXQuXG4gIGlmIChkZWZpbml0aW9uKSB7XG4gICAgZXZlbnRzLnNwbGljZSh0ZXh0LCAwLCBbJ2VudGVyJywgaGVhZGluZywgY29udGV4dF0pXG4gICAgZXZlbnRzLnNwbGljZShkZWZpbml0aW9uICsgMSwgMCwgWydleGl0JywgZXZlbnRzW2NvbnRlbnRdWzFdLCBjb250ZXh0XSlcbiAgICBldmVudHNbY29udGVudF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2RlZmluaXRpb25dWzFdLmVuZClcbiAgfSBlbHNlIHtcbiAgICBldmVudHNbY29udGVudF1bMV0gPSBoZWFkaW5nXG4gIH1cblxuICAvLyBBZGQgdGhlIGhlYWRpbmcgZXhpdCBhdCB0aGUgZW5kLlxuICBldmVudHMucHVzaChbJ2V4aXQnLCBoZWFkaW5nLCBjb250ZXh0XSlcblxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplU2V0ZXh0VW5kZXJsaW5lKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCBvZiBoZWFkaW5nIChzZXRleHQpIHVuZGVybGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgcGFyYWdyYXBoXG5cbiAgICBhc3NlcnQoXG4gICAgICBjb2RlID09PSBjb2Rlcy5kYXNoIHx8IGNvZGUgPT09IGNvZGVzLmVxdWFsc1RvLFxuICAgICAgJ2V4cGVjdGVkIGA9YCBvciBgLWAnXG4gICAgKVxuXG4gICAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAvLyBTa2lwIGVudGVyL2V4aXQgb2YgbGluZSBlbmRpbmcsIGxpbmUgcHJlZml4LCBhbmQgY29udGVudC5cbiAgICAgIC8vIFdlIGNhbiBub3cgZWl0aGVyIGhhdmUgYSBkZWZpbml0aW9uIG9yIGEgcGFyYWdyYXBoLlxuICAgICAgaWYgKFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMubGluZUVuZGluZyAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMubGluZVByZWZpeCAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gdHlwZXMuY29udGVudFxuICAgICAgKSB7XG4gICAgICAgIHBhcmFncmFwaCA9IHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSB0eXBlcy5wYXJhZ3JhcGhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUbyBkbzogaGFuZGxlIGxhenkvcGllcmNlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBpZiAoIXNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSAmJiAoc2VsZi5pbnRlcnJ1cHQgfHwgcGFyYWdyYXBoKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5zZXRleHRIZWFkaW5nTGluZSlcbiAgICAgIG1hcmtlciA9IGNvZGVcbiAgICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYC1gIG9yIGA9YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLnNldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UpXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5zZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlKVxuXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyLCB0eXBlcy5saW5lU3VmZml4KShjb2RlKVxuICAgICAgOiBhZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHNlcXVlbmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnNldGV4dEhlYWRpbmdMaW5lKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js": +/*!*********************************************************************************!*\ + !*** ../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js ***! + \*********************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"thematicBreak\": () => (/* binding */ thematicBreak)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak)\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.asterisk ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.dash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.underscore,\n 'expected `*`, `-`, or `_`'\n )\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence)\n return sequence(code)\n }\n\n if (\n size >= micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.thematicBreakMarkerCountMin &&\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownLineEnding)(code))\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreak)\n return ok(code)\n }\n\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.thematicBreakSequence)\n return (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_4__.markdownSpace)(code)\n ? (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_5__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.whitespace)(code)\n : atBreak(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvZGV2L2xpYi90aGVtYXRpYy1icmVhay5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLDBDQUEwQztBQUN2RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RCxhQUFhLDBDQUEwQztBQUN2RDs7QUFFb0Q7QUFDc0I7QUFDdEI7QUFDUTtBQUNSO0FBQ2I7O0FBRXZDLFdBQVcsV0FBVztBQUNmO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxrQkFBa0IsK0VBQW1CO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsZUFBZSwwRUFBYztBQUM3QixpQkFBaUIsc0VBQVU7QUFDM0IsaUJBQWlCLDRFQUFnQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHVGQUEyQjtBQUMvQztBQUNBOztBQUVBO0FBQ0EsY0FBYyxxR0FBcUM7QUFDbkQsZ0JBQWdCLHFFQUFTLElBQUksNEVBQWtCO0FBQy9DO0FBQ0EsbUJBQW1CLCtFQUFtQjtBQUN0QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsdUZBQTJCO0FBQzVDLFdBQVcsdUVBQWE7QUFDeEIsUUFBUSxxRUFBWSxtQkFBbUIsNEVBQWdCO0FBQ3ZEO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9kZXYvbGliL3RoZW1hdGljLWJyZWFrLmpzPzcyZDAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IHRoZW1hdGljQnJlYWsgPSB7XG4gIG5hbWU6ICd0aGVtYXRpY0JyZWFrJyxcbiAgdG9rZW5pemU6IHRva2VuaXplVGhlbWF0aWNCcmVha1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVRoZW1hdGljQnJlYWsoZWZmZWN0cywgb2ssIG5vaykge1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aGVtYXRpYyBicmVhay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMudGhlbWF0aWNCcmVhaylcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmFzdGVyaXNrIHx8XG4gICAgICAgIGNvZGUgPT09IGNvZGVzLmRhc2ggfHxcbiAgICAgICAgY29kZSA9PT0gY29kZXMudW5kZXJzY29yZSxcbiAgICAgICdleHBlY3RlZCBgKmAsIGAtYCwgb3IgYF9gJ1xuICAgIClcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy50aGVtYXRpY0JyZWFrU2VxdWVuY2UpXG4gICAgICByZXR1cm4gc2VxdWVuY2UoY29kZSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzaXplID49IGNvbnN0YW50cy50aGVtYXRpY0JyZWFrTWFya2VyQ291bnRNaW4gJiZcbiAgICAgIChjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLnRoZW1hdGljQnJlYWspXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHNpemUrK1xuICAgICAgcmV0dXJuIHNlcXVlbmNlXG4gICAgfVxuXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLnRoZW1hdGljQnJlYWtTZXF1ZW5jZSlcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgdHlwZXMud2hpdGVzcGFjZSkoY29kZSlcbiAgICAgIDogYXRCcmVhayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-destination/dev/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/micromark-factory-destination/dev/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryDestination\": () => (/* binding */ factoryDestination)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)\n ) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.contentTypeString})\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)\n ) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n ) {\n effects.consume(code)\n return enclosed\n }\n\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code))\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (balance < limit && code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis) {\n effects.consume(code)\n balance++\n return raw\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.asciiControl)(code)\n ) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash\n ) {\n effects.consume(code)\n return raw\n }\n\n return raw(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSx3Q0FBd0M7QUFDckQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBTWlDO0FBQ21CO0FBQ1E7QUFDUjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsaUJBQWlCLDBFQUFjO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSxrRkFBc0I7QUFDckMsTUFBTSxzRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxpQkFBaUIsNkVBQWlCO0FBQ2xDLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxxRUFBUztBQUN4QixlQUFlLDBFQUFjO0FBQzdCLE1BQU0sNEVBQWtCO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBZTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUsMEVBQWM7QUFDN0IsZUFBZSw2RUFBaUI7QUFDaEMsZUFBZSwyRUFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscUVBQVM7QUFDekIsaUJBQWlCLGtGQUFzQjtBQUN2QyxRQUFRLG1GQUF5QjtBQUNqQztBQUNBLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQ0FBb0MsaUZBQXFCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrRkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUFTO0FBQ3hCLGVBQWUsdUVBQVc7QUFDMUIsZUFBZSxpRkFBcUI7QUFDcEMsTUFBTSxzRUFBWTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IsMkVBQWU7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUFxQjtBQUNwQyxlQUFlLGtGQUFzQjtBQUNyQyxlQUFlLDJFQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24vZGV2L2luZGV4LmpzPzFhOWIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlDb250cm9sLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93bkxpbmVFbmRpbmdcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2UgZGVzdGluYXRpb25zLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiA8YT5cbiAqIDxhXFw+Yj5cbiAqIDxhIGI+XG4gKiA8YSk+XG4gKiBhXG4gKiBhXFwpYlxuICogYShiKWNcbiAqIGEoYilcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtTdGF0ZX0gbm9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gdW5zdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSBmb3Igd2hvbGUgKGA8YT5gIG9yIGBiYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbFR5cGVcbiAqICAgVHlwZSB3aGVuIGVuY2xvc2VkIChgPGE+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbE1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgZW5jbG9zaW5nIChgPGAgYW5kIGA+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gcmF3VHlwZVxuICogICBUeXBlIHdoZW4gbm90IGVuY2xvc2VkIChgYmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIHZhbHVlIChgYWAgb3IgYGJgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBEZXB0aCBvZiBuZXN0ZWQgcGFyZW5zIChpbmNsdXNpdmUpLlxuICogQHJldHVybnMge1N0YXRlfVxuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5RGVzdGluYXRpb24oXG4gIGVmZmVjdHMsXG4gIG9rLFxuICBub2ssXG4gIHR5cGUsXG4gIGxpdGVyYWxUeXBlLFxuICBsaXRlcmFsTWFya2VyVHlwZSxcbiAgcmF3VHlwZSxcbiAgc3RyaW5nVHlwZSxcbiAgbWF4XG4pIHtcbiAgY29uc3QgbGltaXQgPSBtYXggfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG4gIGxldCBiYWxhbmNlID0gMFxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgIF5cbiAgICogPiB8IGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmxlc3NUaGFuKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKGxpdGVyYWxUeXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgcmV0dXJuIGVuY2xvc2VkQmVmb3JlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCwgc3BhY2UsIGNsb3NpbmcgcGFyZW4uXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5zcGFjZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fFxuICAgICAgYXNjaWlDb250cm9sKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgIGVmZmVjdHMuZW50ZXIocmF3VHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua1N0cmluZywge2NvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVTdHJpbmd9KVxuICAgIHJldHVybiByYXcoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IGFuIGVuY2xvc2VkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFhPlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4pIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtTdHJpbmcsIHtjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlU3RyaW5nfSlcbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBlbmNsb3NlZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmNsb3NlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmdyZWF0ZXJUaGFuKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIHJldHVybiBlbmNsb3NlZEJlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVzc1RoYW4gfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2ggPyBlbmNsb3NlZEVzY2FwZSA6IGVuY2xvc2VkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhXFwqYT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkRXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5sZXNzVGhhbiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuZ3JlYXRlclRoYW4gfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmJhY2tzbGFzaFxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5jbG9zZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmF3KGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICAhYmFsYW5jZSAmJlxuICAgICAgKGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgICBjb2RlID09PSBjb2Rlcy5yaWdodFBhcmVudGhlc2lzIHx8XG4gICAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChyYXdUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoYmFsYW5jZSA8IGxpbWl0ICYmIGNvZGUgPT09IGNvZGVzLmxlZnRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlKytcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlLS1cbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBjb250cm9sIChidXQgKm5vdCogYFxcMGApIGFuZCBzcGFjZSBhbmQgYChgLlxuICAgIC8vIE5vdGU6IGluIGBtYXJrZG93bi1yc2AsIGBcXDBgIGV4aXN0cyBpbiBjb2RlcywgaW4gYG1pY3JvbWFyay1qc2AgaXRcbiAgICAvLyBkb2VzbuKAmXQuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5zcGFjZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzIHx8XG4gICAgICBhc2NpaUNvbnRyb2woY29kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuYmFja3NsYXNoID8gcmF3RXNjYXBlIDogcmF3XG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYVxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByYXdFc2NhcGUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRQYXJlbnRoZXNpcyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMucmlnaHRQYXJlbnRoZXNpcyB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYmFja3NsYXNoXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICByZXR1cm4gcmF3KGNvZGUpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-destination/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-label/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-label/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryLabel\": () => (/* binding */ factoryLabel)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket, 'expected `[`')\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.caret &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n return atBreak\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.contentTypeString})\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownLineEnding)(code) ||\n size++ > micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.linkReferenceSizeMax\n ) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.chunkString)\n return atBreak(code)\n }\n\n effects.consume(code)\n if (!seen) seen = !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_3__.markdownSpace)(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.leftSquareBracket ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.backslash ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.rightSquareBracket\n ) {\n effects.consume(code)\n size++\n return labelInside\n }\n\n return labelInside(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWxhYmVsL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUUwRTtBQUN0QjtBQUNRO0FBQ1I7QUFDYjs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsSUFBSSwrQ0FBTSxVQUFVLG1GQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOEZBQThCO0FBQzNDLGVBQWUscUVBQVM7QUFDeEIsZUFBZSxtRkFBdUI7QUFDdEMsZ0JBQWdCLG9GQUF3QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVFQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLG9GQUF3QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsNEVBQWtCO0FBQzFCLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7O0FBRUEsa0JBQWtCLDZFQUFpQixHQUFHLGFBQWEsMkZBQTJCLENBQUM7QUFDL0U7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQVM7QUFDeEIsZUFBZSxtRkFBdUI7QUFDdEMsZUFBZSxvRkFBd0I7QUFDdkMsTUFBTSw0RUFBa0I7QUFDeEIsZUFBZSw4RkFBOEI7QUFDN0M7QUFDQSxtQkFBbUIsNkVBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQSx1QkFBdUIsdUVBQWE7QUFDcEMsb0JBQW9CLDJFQUFlO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRkFBdUI7QUFDdEMsZUFBZSwyRUFBZTtBQUM5QixlQUFlLG9GQUF3QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktbGFiZWwvZGV2L2luZGV4LmpzP2ZhMjgiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHt0eXBlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3R5cGVzLmpzJ1xuaW1wb3J0IHtvayBhcyBhc3NlcnR9IGZyb20gJ3V2dS9hc3NlcnQnXG5cbi8qKlxuICogUGFyc2UgbGFiZWxzLlxuICpcbiAqID4g8J+RiSAqKk5vdGUqKjogbGFiZWxzIGluIG1hcmtkb3duIGFyZSBjYXBwZWQgYXQgOTk5IGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZy5cbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGBtYXJrZG93blxuICogW2FdXG4gKiBbYVxuICogYl1cbiAqIFthXFxdYl1cbiAqIGBgYFxuICpcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiAgIFRva2VuaXplIGNvbnRleHQuXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIGxhYmVsIChgW2FdYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbWFya2VyVHlwZVxuICogICBUeXBlIGZvciB0aGUgbWFya2VycyAoYFtgIGFuZCBgXWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIGlkZW50aWZpZXIgKGBhYCkuXG4gKiBAcmV0dXJucyB7U3RhdGV9XG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlMYWJlbChlZmZlY3RzLCBvaywgbm9rLCB0eXBlLCBtYXJrZXJUeXBlLCBzdHJpbmdUeXBlKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBzaXplID0gMFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBzZWVuXG5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgYXNzZXJ0KGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0LCAnZXhwZWN0ZWQgYFtgJylcbiAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICByZXR1cm4gYXRCcmVha1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBhdCBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChcbiAgICAgIHNpemUgPiBjb25zdGFudHMubGlua1JlZmVyZW5jZVNpemVNYXggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFNxdWFyZUJyYWNrZXQgfHxcbiAgICAgIChjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQgJiYgIXNlZW4pIHx8XG4gICAgICAvLyBUbyBkbzogcmVtb3ZlIGluIHRoZSBmdXR1cmUgb25jZSB3ZeKAmXZlIHN3aXRjaGVkIGZyb21cbiAgICAgIC8vIGBtaWNyb21hcmstZXh0ZW5zaW9uLWZvb3Rub3RlYCB0byBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLFxuICAgICAgLy8gd2hpY2ggZG9lc27igJl0IG5lZWQgdGhpcy5cbiAgICAgIC8vIEhpZGRlbiBmb290bm90ZXMgaG9vay5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICAgIChjb2RlID09PSBjb2Rlcy5jYXJldCAmJlxuICAgICAgICAhc2l6ZSAmJlxuICAgICAgICAnX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCcgaW4gc2VsZi5wYXJzZXIuY29uc3RydWN0cylcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMucmlnaHRTcXVhcmVCcmFja2V0KSB7XG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIC8vIFRvIGRvOiBpbmRlbnQ/IExpbmsgY2h1bmtzIGFuZCBFT0xzIHRvZ2V0aGVyP1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICByZXR1cm4gYXRCcmVha1xuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtTdHJpbmcsIHtjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlU3RyaW5nfSlcbiAgICByZXR1cm4gbGFiZWxJbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgaW4gdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5yaWdodFNxdWFyZUJyYWNrZXQgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB8fFxuICAgICAgc2l6ZSsrID4gY29uc3RhbnRzLmxpbmtSZWZlcmVuY2VTaXplTWF4XG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMuY2h1bmtTdHJpbmcpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cblxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGlmICghc2Vlbikgc2VlbiA9ICFtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IGNvZGVzLmJhY2tzbGFzaCA/IGxhYmVsRXNjYXBlIDogbGFiZWxJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBhIHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FcXCphXVxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFc2NhcGUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmxlZnRTcXVhcmVCcmFja2V0IHx8XG4gICAgICBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2ggfHxcbiAgICAgIGNvZGUgPT09IGNvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldFxuICAgICkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplKytcbiAgICAgIHJldHVybiBsYWJlbEluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBsYWJlbEluc2lkZShjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-label/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-space/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-space/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factorySpace\": () => (/* binding */ factorySpace)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nfunction factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n\n return start\n\n /** @type {State} */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXNwYWNlL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsYUFBYSx3Q0FBd0M7QUFDckQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBRXNEOztBQUV0RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFdBQVc7QUFDdEI7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxRQUFRLHVFQUFhO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLFFBQVEsdUVBQWE7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1zcGFjZS9kZXYvaW5kZXguanM/N2YxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcblxuLy8gVG8gZG86IGltcGxlbWVudCBgc3BhY2VPclRhYmAsIGBzcGFjZU9yVGFiTWluTWF4YCwgYHNwYWNlT3JUYWJXaXRoT3B0aW9uc2AuXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgc3BhY2VzIGluIG1hcmtkb3duIGFyZSBvZnRlbiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSB0aGlzIGZhY3RvcnkgY2FuIGJlXG4gKiAgICAgdXNlZCBhbmQgYG9rYCB3aWxsIGJlIHN3aXRjaGVkIHRvIHdoZXRoZXIgc3BhY2VzIHdlcmUgZm91bmQgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoIGBtYXJrZG93blNwYWNlKGNvZGUpYCByaWdodFxuICogICAgIGJlZm9yZSB1c2luZyBgZmFjdG9yeVNwYWNlYFxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIFdoZXJlIGDikIlgIHJlcHJlc2VudHMgYSB0YWIgKHBsdXMgaG93IG11Y2ggaXQgZXhwYW5kcykgYW5kIGDikKBgIHJlcHJlc2VudHMgYVxuICogc2luZ2xlIHNwYWNlLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiDikIlcbiAqIOKQoOKQoOKQoOKQoFxuICog4pCJ4pCgXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgKGAnIFxcdCdgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBNYXggKGV4Y2x1c2l2ZSkuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBvaywgdHlwZSwgbWF4KSB7XG4gIGNvbnN0IGxpbWl0ID0gbWF4ID8gbWF4IC0gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICBsZXQgc2l6ZSA9IDBcblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICAgIHJldHVybiBwcmVmaXgoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHByZWZpeChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkgJiYgc2l6ZSsrIDwgbGltaXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHByZWZpeFxuICAgIH1cblxuICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-space/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-title/dev/index.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark-factory-title/dev/index.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryTitle\": () => (/* binding */ factoryTitle)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\n\n\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\n// eslint-disable-next-line max-params\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.quotationMark ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.apostrophe ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis\n ) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftParenthesis ? micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightParenthesis : code\n return begin\n }\n\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_3__.factorySpace)(effects, atBreak, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.linePrefix)\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString, {contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeString})\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEnding)(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.chunkString)\n return atBreak(code)\n }\n\n effects.consume(code)\n return code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash) {\n effects.consume(code)\n return inside\n }\n\n return inside(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXRpdGxlL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVvRDtBQUNPO0FBQ1A7QUFDUTtBQUNSOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLFdBQVcsV0FBVztBQUN0QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQLGFBQWEsbUJBQW1CO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsZUFBZSwrRUFBbUI7QUFDbEMsZUFBZSw0RUFBZ0I7QUFDL0IsZUFBZSxpRkFBcUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpRkFBcUIsR0FBRyxrRkFBc0I7QUFDdEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHFFQUFTO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDRFQUFrQjtBQUMxQjtBQUNBLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DLGFBQWEscUVBQVksbUJBQW1CLDRFQUFnQjtBQUM1RDs7QUFFQSxrQkFBa0IsNkVBQWlCLEdBQUcsYUFBYSwyRkFBMkIsQ0FBQztBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0Esb0NBQW9DLHFFQUFTLElBQUksNEVBQWtCO0FBQ25FLG1CQUFtQiw2RUFBaUI7QUFDcEM7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiwyRUFBZTtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxvQ0FBb0MsMkVBQWU7QUFDbkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktdGl0bGUvZGV2L2luZGV4LmpzPzBkNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2UgdGl0bGVzLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiBcImFcIlxuICogJ2InXG4gKiAoYylcbiAqIFwiYVxuICogYlwiXG4gKiAnYVxuICogICAgIGInXG4gKiAoYVxcKWIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIHRpdGxlIChgXCJhXCJgLCBgJ2InYCwgYChjKWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IG1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgdGhlIG1hcmtlcnMgKGBcImAsIGAnYCwgYChgLCBhbmQgYClgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBzdHJpbmdUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSB2YWx1ZSAoYGFgKS5cbiAqIEByZXR1cm5zIHtTdGF0ZX1cbiAqICAgU3RhcnQgc3RhdGUuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeVRpdGxlKGVmZmVjdHMsIG9rLCBub2ssIHR5cGUsIG1hcmtlclR5cGUsIHN0cmluZ1R5cGUpIHtcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVwiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gY29kZXMucXVvdGF0aW9uTWFyayB8fFxuICAgICAgY29kZSA9PT0gY29kZXMuYXBvc3Ryb3BoZSB8fFxuICAgICAgY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgICAgbWFya2VyID0gY29kZSA9PT0gY29kZXMubGVmdFBhcmVudGhlc2lzID8gY29kZXMucmlnaHRQYXJlbnRoZXNpcyA6IGNvZGVcbiAgICAgIHJldHVybiBiZWdpblxuICAgIH1cblxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcGVuaW5nIG1hcmtlci5cbiAgICpcbiAgICogVGhpcyBpcyBhbHNvIHVzZWQgYXQgdGhlIGNsb3NpbmcgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXCJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWdpbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgcmV0dXJuIGJlZ2luKG1hcmtlcilcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gTm90ZTogYmxhbmsgbGluZXMgY2Fu4oCZdCBleGlzdCBpbiBjb250ZW50LlxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIC8vIFRvIGRvOiB1c2UgYHNwYWNlX29yX3RhYl9lb2xfd2l0aF9vcHRpb25zYCwgY29ubmVjdC5cbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGF0QnJlYWssIHR5cGVzLmxpbmVQcmVmaXgpXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5jaHVua1N0cmluZywge2NvbnRlbnRUeXBlOiBjb25zdGFudHMuY29udGVudFR5cGVTdHJpbmd9KVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIgfHwgY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rU3RyaW5nKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gY29kZXMuYmFja3NsYXNoID8gZXNjYXBlIDogaW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVxcKmJcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlciB8fCBjb2RlID09PSBjb2Rlcy5iYWNrc2xhc2gpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cblxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-title/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-factory-whitespace/dev/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-factory-whitespace/dev/index.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"factoryWhitespace\": () => (/* binding */ factoryWhitespace)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nfunction factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n\n return start\n\n /** @type {State} */\n function start(code) {\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownLineEnding)(code)) {\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding)\n seen = true\n return start\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_0__.markdownSpace)(code)) {\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n effects,\n start,\n seen ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineSuffix\n )(code)\n }\n\n return ok(code)\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsc0NBQXNDO0FBQ25EOztBQUVvRDtBQUNzQjtBQUN0Qjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQjtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsYUFBYSxTQUFTO0FBQ3RCOztBQUVBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLFFBQVEsNEVBQWtCO0FBQzFCLG9CQUFvQiw0RUFBZ0I7QUFDcEM7QUFDQSxtQkFBbUIsNEVBQWdCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHVFQUFhO0FBQ3JCLGFBQWEscUVBQVk7QUFDekI7QUFDQTtBQUNBLGVBQWUsNEVBQWdCLEdBQUcsNEVBQWdCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlL2Rldi9pbmRleC5qcz9kYzJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgbGluZSBlbmRpbmdzIG9yIHNwYWNlcyBpbiBtYXJrZG93biBhcmUgb2Z0ZW4gb3B0aW9uYWwsIGluIHdoaWNoIGNhc2UgdGhpc1xuICogICAgIGZhY3RvcnkgY2FuIGJlIHVzZWQgYW5kIGBva2Agd2lsbCBiZSBzd2l0Y2hlZCB0byB3aGV0aGVyIHNwYWNlcyB3ZXJlIGZvdW5kXG4gKiAgICAgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoXG4gKiAgICAgYG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlgIHJpZ2h0IGJlZm9yZSB1c2luZyBgZmFjdG9yeVdoaXRlc3BhY2VgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIG9rKSB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IHNlZW5cblxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMubGluZUVuZGluZylcbiAgICAgIHNlZW4gPSB0cnVlXG4gICAgICByZXR1cm4gc3RhcnRcbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHNlZW4gPyB0eXBlcy5saW5lUHJlZml4IDogdHlwZXMubGluZVN1ZmZpeFxuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-factory-whitespace/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-character/dev/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark-util-character/dev/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"asciiAlpha\": () => (/* binding */ asciiAlpha),\n/* harmony export */ \"asciiAlphanumeric\": () => (/* binding */ asciiAlphanumeric),\n/* harmony export */ \"asciiAtext\": () => (/* binding */ asciiAtext),\n/* harmony export */ \"asciiControl\": () => (/* binding */ asciiControl),\n/* harmony export */ \"asciiDigit\": () => (/* binding */ asciiDigit),\n/* harmony export */ \"asciiHexDigit\": () => (/* binding */ asciiHexDigit),\n/* harmony export */ \"asciiPunctuation\": () => (/* binding */ asciiPunctuation),\n/* harmony export */ \"markdownLineEnding\": () => (/* binding */ markdownLineEnding),\n/* harmony export */ \"markdownLineEndingOrSpace\": () => (/* binding */ markdownLineEndingOrSpace),\n/* harmony export */ \"markdownSpace\": () => (/* binding */ markdownSpace),\n/* harmony export */ \"unicodePunctuation\": () => (/* binding */ unicodePunctuation),\n/* harmony export */ \"unicodeWhitespace\": () => (/* binding */ unicodeWhitespace)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/unicode-punctuation-regex.js */ \"../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.del)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownLineEnding(code) {\n return code !== null && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownLineEndingOrSpace(code) {\n return code !== null && (code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul || code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nfunction markdownSpace(code) {\n return (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space\n )\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst unicodePunctuation = regexCheck(_lib_unicode_punctuation_regex_js__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nconst unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEscUNBQXFDO0FBQ2xEOztBQUVvRDtBQUNzQjs7QUFFMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1RUFBVyxhQUFhLHFFQUFTO0FBQzlEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxnREFBZ0Q7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGlDQUFpQywrRUFBbUI7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1Asa0NBQWtDLHFFQUFTLGFBQWEsdUVBQVc7QUFDbkU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1A7QUFDQSxhQUFhLCtFQUFtQjtBQUNoQyxhQUFhLDhFQUFrQjtBQUMvQixhQUFhLHVFQUFXO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sc0NBQXNDLHNGQUF1Qjs7QUFFcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvaW5kZXguanM/YTY1NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICovXG5cbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dW5pY29kZVB1bmN0dWF0aW9uUmVnZXh9IGZyb20gJy4vbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMnXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhbHBoYSAoYGFgIHRocm91Z2ggYHpgLFxuICogY2FzZSBpbnNlbnNpdGl2ZSkuXG4gKlxuICogQW4gKipBU0NJSSBhbHBoYSoqIGlzIGFuIEFTQ0lJIHVwcGVyIGFscGhhIG9yIEFTQ0lJIGxvd2VyIGFscGhhLlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA0MSAoYEFgKVxuICogdG8gVSswMDVBIChgWmApLlxuICpcbiAqIEFuICoqQVNDSUkgbG93ZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA2MSAoYGFgKVxuICogdG8gVSswMDdBIChgemApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUFscGhhID0gcmVnZXhDaGVjaygvW0EtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChgYWBcbiAqIHRocm91Z2ggYHpgLCBjYXNlIGluc2Vuc2l0aXZlLCBvciBgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgYWxwaGFudW1lcmljKiogaXMgYW4gQVNDSUkgZGlnaXQgKHNlZSBgYXNjaWlEaWdpdGApIG9yIEFTQ0lJIGFscGhhXG4gKiAoc2VlIGBhc2NpaUFscGhhYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQWxwaGFudW1lcmljID0gcmVnZXhDaGVjaygvW1xcZEEtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYXRleHQuXG4gKlxuICogYXRleHQgaXMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChzZWUgYGFzY2lpQWxwaGFudW1lcmljYCksIG9yIGEgY2hhcmFjdGVyIGluXG4gKiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBVKzAwMjMgTlVNQkVSIFNJR04gKGAjYCkgdG8gVSswMDI3IEFQT1NUUk9QSEUgKGAnYCksXG4gKiBVKzAwMkEgQVNURVJJU0sgKGAqYCksIFUrMDAyQiBQTFVTIFNJR04gKGArYCksIFUrMDAyRCBEQVNIIChgLWApLCBVKzAwMkZcbiAqIFNMQVNIIChgL2ApLCBVKzAwM0QgRVFVQUxTIFRPIChgPWApLCBVKzAwM0YgUVVFU1RJT04gTUFSSyAoYD9gKSwgVSswMDVFXG4gKiBDQVJFVCAoYF5gKSB0byBVKzAwNjAgR1JBVkUgQUNDRU5UIChgYCBgIGBgKSwgb3IgVSswMDdCIExFRlQgQ1VSTFkgQlJBQ0VcbiAqIChge2ApIHRvIFUrMDA3RSBUSUxERSAoYH5gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1JGQzUzMjJdKio6XG4gKiBbSW50ZXJuZXQgTWVzc2FnZSBGb3JtYXRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyKS5cbiAqIFAuIFJlc25pY2suXG4gKiBJRVRGLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUF0ZXh0ID0gcmVnZXhDaGVjaygvWyMtJyorXFwtLTk9P0EtWl4tfl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhbiBBU0NJSSBjb250cm9sIGNoYXJhY3Rlci5cbiAqXG4gKiBBbiAqKkFTQ0lJIGNvbnRyb2wqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAwMCBOVUxMIChOVUwpXG4gKiB0byBVKzAwMUYgKFVTKSwgb3IgVSswMDdGIChERUwpLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzY2lpQ29udHJvbChjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgLy8gU3BlY2lhbCB3aGl0ZXNwYWNlIGNvZGVzICh3aGljaCBoYXZlIG5lZ2F0aXZlIHZhbHVlcyksIEMwIGFuZCBDb250cm9sXG4gICAgLy8gY2hhcmFjdGVyIERFTFxuICAgIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCBjb2Rlcy5zcGFjZSB8fCBjb2RlID09PSBjb2Rlcy5kZWwpXG4gIClcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGRpZ2l0IChgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAzMCAoYDBgKSB0b1xuICogVSswMDM5IChgOWApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaURpZ2l0ID0gcmVnZXhDaGVjaygvXFxkLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGhleCBkaWdpdCAoYGFgIHRocm91Z2hcbiAqIGBmYCwgY2FzZSBpbnNlbnNpdGl2ZSwgb3IgYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGhleCBkaWdpdCoqIGlzIGFuIEFTQ0lJIGRpZ2l0IChzZWUgYGFzY2lpRGlnaXRgKSwgQVNDSUkgdXBwZXIgaGV4XG4gKiBkaWdpdCwgb3IgYW4gQVNDSUkgbG93ZXIgaGV4IGRpZ2l0LlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgaGV4IGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNDFcbiAqIChgQWApIHRvIFUrMDA0NiAoYEZgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGxvd2VyIGhleCBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDYxXG4gKiAoYGFgKSB0byBVKzAwNjYgKGBmYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpSGV4RGlnaXQgPSByZWdleENoZWNrKC9bXFxkQS1GYS1mXS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBBU0NJSSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBbiAqKkFTQ0lJIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgVSswMDIxXG4gKiBFWENMQU1BVElPTiBNQVJLIChgIWApIHRvIFUrMDAyRiBTTEFTSCAoYC9gKSwgVSswMDNBIENPTE9OIChgOmApIHRvIFUrMDA0MCBBVFxuICogU0lHTiAoYEBgKSwgVSswMDVCIExFRlQgU1FVQVJFIEJSQUNLRVQgKGBbYCkgdG8gVSswMDYwIEdSQVZFIEFDQ0VOVFxuICogKGBgIGAgYGApLCBvciBVKzAwN0IgTEVGVCBDVVJMWSBCUkFDRSAoYHtgKSB0byBVKzAwN0UgVElMREUgKGB+YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpUHVuY3R1YXRpb24gPSByZWdleENoZWNrKC9bIS0vOi1AWy1gey1+XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcuXG4gKlxuICogQSAqKm1hcmtkb3duIGxpbmUgZW5kaW5nKiogaXMgdGhlIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDMgQ0FSUklBR0UgUkVUVVJOXG4gKiBMSU5FIEZFRUQgKENSTEYpLCBNLTAwMDQgTElORSBGRUVEIChMRikgYW5kIE0tMDAwNSBDQVJSSUFHRSBSRVRVUk4gKENSKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBhbmQgVSswMDBEIENBUlJJQUdFXG4gKiBSRVRVUk4gKENSKSBhcmUgcmVwbGFjZWQgYnkgdGhlc2UgdmlydHVhbCBjaGFyYWN0ZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyXG4gKiB0aGV5IG9jY3VycmVkIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIGNvZGUgPCBjb2Rlcy5ob3Jpem9udGFsVGFiXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcgKHNlZVxuICogYG1hcmtkb3duTGluZUVuZGluZ2ApIG9yIG1hcmtkb3duIHNwYWNlIChzZWUgYG1hcmtkb3duU3BhY2VgKS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCBjb2Rlcy5udWwgfHwgY29kZSA9PT0gY29kZXMuc3BhY2UpXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gc3BhY2UuXG4gKlxuICogQSAqKm1hcmtkb3duIHNwYWNlKiogaXMgdGhlIGNvbmNyZXRlIGNoYXJhY3RlciBVKzAwMjAgU1BBQ0UgKFNQKSBhbmQgdGhlXG4gKiB2aXJ0dWFsIGNoYXJhY3RlcnMgTS0wMDAxIFZJUlRVQUwgU1BBQ0UgKFZTKSBhbmQgTS0wMDAyIEhPUklaT05UQUwgVEFCIChIVCkuXG4gKlxuICogSW4gbWljcm9tYXJrLCB0aGUgYWN0dWFsIGNoYXJhY3RlciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSBpc1xuICogcmVwbGFjZWQgYnkgb25lIE0tMDAwMiBIT1JJWk9OVEFMIFRBQiAoSFQpIGFuZCBiZXR3ZWVuIDAgYW5kIDMgTS0wMDAxIFZJUlRVQUxcbiAqIFNQQUNFIChWUykgY2hhcmFjdGVycywgZGVwZW5kaW5nIG9uIHRoZSBjb2x1bW4gYXQgd2hpY2ggdGhlIHRhYiBvY2N1cnJlZC5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93blNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICBjb2RlID09PSBjb2Rlcy5ob3Jpem9udGFsVGFiIHx8XG4gICAgY29kZSA9PT0gY29kZXMudmlydHVhbFNwYWNlIHx8XG4gICAgY29kZSA9PT0gY29kZXMuc3BhY2VcbiAgKVxufVxuXG4vLyBTaXplIG5vdGU6IHJlbW92aW5nIEFTQ0lJIGZyb20gdGhlIHJlZ2V4IGFuZCB1c2luZyBgYXNjaWlQdW5jdHVhdGlvbmAgaGVyZVxuLy8gSW4gZmFjdCBhZGRzIHRvIHRoZSBidW5kbGUgc2l6ZS5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHB1bmN0dWF0aW9uLlxuICpcbiAqIEEgKipVbmljb2RlIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFBjYCAoUHVuY3R1YXRpb24sXG4gKiBDb25uZWN0b3IpLCBgUGRgIChQdW5jdHVhdGlvbiwgRGFzaCksIGBQZWAgKFB1bmN0dWF0aW9uLCBDbG9zZSksIGBQZmBcbiAqIChQdW5jdHVhdGlvbiwgRmluYWwgcXVvdGUpLCBgUGlgIChQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZSksIGBQb2BcbiAqIChQdW5jdHVhdGlvbiwgT3RoZXIpLCBvciBgUHNgIChQdW5jdHVhdGlvbiwgT3BlbikgY2F0ZWdvcmllcywgb3IgYW4gQVNDSUlcbiAqIHB1bmN0dWF0aW9uIChzZWUgYGFzY2lpUHVuY3R1YXRpb25gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvbiA9IHJlZ2V4Q2hlY2sodW5pY29kZVB1bmN0dWF0aW9uUmVnZXgpXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHdoaXRlc3BhY2UuXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZG9lcyBoYW5kbGUgbWljcm9tYXJrIHNwZWNpZmljIG1hcmtkb3duIHdoaXRlc3BhY2UgY2hhcmFjdGVycy5cbiAqIFNlZSBgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZWAgdG8gY2hlY2sgdGhhdC5cbiAqXG4gKiBBICoqVW5pY29kZSB3aGl0ZXNwYWNlKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFpzYCAoU2VwYXJhdG9yLFxuICogU3BhY2UpIGNhdGVnb3J5LCBvciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSwgVSswMDBBIExJTkUgRkVFRCAoTEYpLFxuICogVSswMDBDIChGRiksIG9yIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSAoKipcXFtVTklDT0RFXSoqKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVXaGl0ZXNwYWNlID0gcmVnZXhDaGVjaygvXFxzLylcblxuLyoqXG4gKiBDcmVhdGUgYSBjb2RlIGNoZWNrIGZyb20gYSByZWdleC5cbiAqXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhcbiAqIEByZXR1cm5zIHsoY29kZTogQ29kZSkgPT4gYm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gcmVnZXhDaGVjayhyZWdleCkge1xuICByZXR1cm4gY2hlY2tcblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGNvZGUgbWF0Y2hlcyB0aGUgYm91bmQgcmVnZXguXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiAgIENoYXJhY3RlciBjb2RlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogICBXaGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSBtYXRjaGVzIHRoZSBib3VuZCByZWdleC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiByZWdleC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-character/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js": +/*!*******************************************************************************************!*\ + !*** ../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js ***! + \*******************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"unicodePunctuationRegex\": () => (/* binding */ unicodePunctuationRegex)\n/* harmony export */ });\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nconst unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGNBQWMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9kZXYvbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanM/NmExMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgYnkgYHNjcmlwdC9gLlxuLy9cbi8vIENvbW1vbk1hcmsgaGFuZGxlcyBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpIG1hcmtlcnMgYmFzZWQgb24gd2hhdCBjb21lc1xuLy8gYmVmb3JlIG9yIGFmdGVyIHRoZW0uXG4vLyBPbmUgc3VjaCBkaWZmZXJlbmNlIGlzIGlmIHRob3NlIGNoYXJhY3RlcnMgYXJlIFVuaWNvZGUgcHVuY3R1YXRpb24uXG4vLyBUaGlzIHNjcmlwdCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgVW5pY29kZSBkYXRhLlxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgYSB1bmljb2RlIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4ID1cbiAgL1shLS86LUBbLWB7LX5cXHUwMEExXFx1MDBBN1xcdTAwQUJcXHUwMEI2XFx1MDBCN1xcdTAwQkJcXHUwMEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRC1cXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQjdEXFx1MUI3RVxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyLVxcdTJFNURcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XS9cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-character/dev/lib/unicode-punctuation-regex.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-chunked/dev/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/micromark-util-chunked/dev/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"push\": () => (/* binding */ push),\n/* harmony export */ \"splice\": () => (/* binding */ splice)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n\n\n/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nfunction splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(\n chunkStart,\n chunkStart + micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n )\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n\n chunkStart += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n start += micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_0__.constants.v8MaxSafeChunkSize\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nfunction push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNodW5rZWQvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLGdCQUFnQjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFCQUFxQiw0RkFBNEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0RkFBNEI7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLDRGQUE0QjtBQUNoRCxlQUFlLDRGQUE0QjtBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2h1bmtlZC9kZXYvaW5kZXguanM/ZjA2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcblxuLyoqXG4gKiBMaWtlIGBBcnJheSNzcGxpY2VgLCBidXQgc21hcnRlciBmb3IgZ2lhbnQgYXJyYXlzLlxuICpcbiAqIGBBcnJheSNzcGxpY2VgIHRha2VzIGFsbCBpdGVtcyB0byBiZSBpbnNlcnRlZCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50IHdoaWNoXG4gKiBjYXVzZXMgYSBzdGFjayBvdmVyZmxvdyBpbiBWOCB3aGVuIHRyeWluZyB0byBpbnNlcnQgMTAwayBpdGVtcyBmb3IgaW5zdGFuY2UuXG4gKlxuICogT3RoZXJ3aXNlLCB0aGlzIGRvZXMgbm90IHJldHVybiB0aGUgcmVtb3ZlZCBpdGVtcywgYW5kIHRha2VzIGBpdGVtc2AgYXMgYW5cbiAqIGFycmF5IGluc3RlYWQgb2YgcmVzdCBwYXJhbWV0ZXJzLlxuICpcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogICBJdGVtIHR5cGUuXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBsaXN0XG4gKiAgIExpc3QgdG8gb3BlcmF0ZSBvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydFxuICogICBJbmRleCB0byByZW1vdmUvaW5zZXJ0IGF0IChjYW4gYmUgbmVnYXRpdmUpLlxuICogQHBhcmFtIHtudW1iZXJ9IHJlbW92ZVxuICogICBOdW1iZXIgb2YgaXRlbXMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gaXRlbXNcbiAqICAgSXRlbXMgdG8gaW5qZWN0IGludG8gYGxpc3RgLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UobGlzdCwgc3RhcnQsIHJlbW92ZSwgaXRlbXMpIHtcbiAgY29uc3QgZW5kID0gbGlzdC5sZW5ndGhcbiAgbGV0IGNodW5rU3RhcnQgPSAwXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGxldCBwYXJhbWV0ZXJzXG5cbiAgLy8gTWFrZSBzdGFydCBiZXR3ZWVuIHplcm8gYW5kIGBlbmRgIChpbmNsdWRlZCkuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGVuZCA/IDAgOiBlbmQgKyBzdGFydFxuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gc3RhcnQgPiBlbmQgPyBlbmQgOiBzdGFydFxuICB9XG5cbiAgcmVtb3ZlID0gcmVtb3ZlID4gMCA/IHJlbW92ZSA6IDBcblxuICAvLyBObyBuZWVkIHRvIGNodW5rIHRoZSBpdGVtcyBpZiB0aGVyZeKAmXMgb25seSBhIGNvdXBsZSAoMTBrKSBpdGVtcy5cbiAgaWYgKGl0ZW1zLmxlbmd0aCA8IGNvbnN0YW50cy52OE1heFNhZmVDaHVua1NpemUpIHtcbiAgICBwYXJhbWV0ZXJzID0gQXJyYXkuZnJvbShpdGVtcylcbiAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIHJlbW92ZSlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl04oCZcyBmaW5lLlxuICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRGVsZXRlIGByZW1vdmVgIGl0ZW1zIHN0YXJ0aW5nIGZyb20gYHN0YXJ0YFxuICAgIGlmIChyZW1vdmUpIGxpc3Quc3BsaWNlKHN0YXJ0LCByZW1vdmUpXG5cbiAgICAvLyBJbnNlcnQgdGhlIGl0ZW1zIGluIGNodW5rcyB0byBub3QgY2F1c2Ugc3RhY2sgb3ZlcmZsb3dzLlxuICAgIHdoaWxlIChjaHVua1N0YXJ0IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gaXRlbXMuc2xpY2UoXG4gICAgICAgIGNodW5rU3RhcnQsXG4gICAgICAgIGNodW5rU3RhcnQgKyBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgICApXG4gICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIDApXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl04oCZcyBmaW5lLlxuICAgICAgbGlzdC5zcGxpY2UoLi4ucGFyYW1ldGVycylcblxuICAgICAgY2h1bmtTdGFydCArPSBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgICBzdGFydCArPSBjb25zdGFudHMudjhNYXhTYWZlQ2h1bmtTaXplXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXBwZW5kIGBpdGVtc2AgKGFuIGFycmF5KSBhdCB0aGUgZW5kIG9mIGBsaXN0YCAoYW5vdGhlciBhcnJheSkuXG4gKiBXaGVuIGBsaXN0YCB3YXMgZW1wdHksIHJldHVybnMgYGl0ZW1zYCBpbnN0ZWFkLlxuICpcbiAqIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWxseSBleHBlbnNpdmUgb3BlcmF0aW9uIHdoZW4gYGxpc3RgIGlzIGVtcHR5LFxuICogYW5kIGFkZHMgaXRlbXMgaW4gYmF0Y2hlcyB0byBwcmV2ZW50IFY4IGZyb20gaGFuZ2luZy5cbiAqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFRcbiAqICAgSXRlbSB0eXBlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gbGlzdFxuICogICBMaXN0IHRvIG9wZXJhdGUgb24uXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBpdGVtc1xuICogICBJdGVtcyB0byBhZGQgdG8gYGxpc3RgLlxuICogQHJldHVybnMge0FycmF5PFQ+fVxuICogICBFaXRoZXIgYGxpc3RgIG9yIGBpdGVtc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoKGxpc3QsIGl0ZW1zKSB7XG4gIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICBzcGxpY2UobGlzdCwgbGlzdC5sZW5ndGgsIDAsIGl0ZW1zKVxuICAgIHJldHVybiBsaXN0XG4gIH1cblxuICByZXR1cm4gaXRlbXNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-chunked/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-classify-character/dev/index.js": +/*!****************************************************************************!*\ + !*** ../../../node_modules/micromark-util-classify-character/dev/index.js ***! + \****************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"classifyCharacter\": () => (/* binding */ classifyCharacter)\n/* harmony export */ });\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n\n\n\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nfunction classifyCharacter(code) {\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.markdownLineEndingOrSpace)(code) ||\n (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodeWhitespace)(code)\n ) {\n return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupWhitespace\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_1__.unicodePunctuation)(code)) {\n return micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.characterGroupPunctuation\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNsYXNzaWZ5LWNoYXJhY3Rlci9kZXYvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxxQ0FBcUM7QUFDbEQ7O0FBTWlDO0FBQ21CO0FBQ1E7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDtBQUNBLGFBQWEscUVBQVM7QUFDdEIsSUFBSSxtRkFBeUI7QUFDN0IsSUFBSSwyRUFBaUI7QUFDckI7QUFDQSxXQUFXLGtHQUFrQztBQUM3Qzs7QUFFQSxNQUFNLDRFQUFrQjtBQUN4QixXQUFXLG1HQUFtQztBQUM5QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jbGFzc2lmeS1jaGFyYWN0ZXIvZGV2L2luZGV4LmpzPzQ1OTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqL1xuXG5pbXBvcnQge1xuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICB1bmljb2RlUHVuY3R1YXRpb24sXG4gIHVuaWNvZGVXaGl0ZXNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIENsYXNzaWZ5IHdoZXRoZXIgYSBjb2RlIHJlcHJlc2VudHMgd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIG9yIHNvbWV0aGluZ1xuICogZWxzZS5cbiAqXG4gKiBVc2VkIGZvciBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpLCB3aG9zZSBzZXF1ZW5jZXMgY2FuIG9wZW4gb3IgY2xvc2VcbiAqIGJhc2VkIG9uIHRoZSBjbGFzcyBvZiBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqID4g8J+RiSAqKk5vdGUqKjogZW9mIChgbnVsbGApIGlzIHNlZW4gYXMgd2hpdGVzcGFjZS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHt0eXBlb2YgY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwV2hpdGVzcGFjZSB8IHR5cGVvZiBjb25zdGFudHMuY2hhcmFjdGVyR3JvdXBQdW5jdHVhdGlvbiB8IHVuZGVmaW5lZH1cbiAqICAgR3JvdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUNoYXJhY3Rlcihjb2RlKSB7XG4gIGlmIChcbiAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHxcbiAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHx8XG4gICAgdW5pY29kZVdoaXRlc3BhY2UoY29kZSlcbiAgKSB7XG4gICAgcmV0dXJuIGNvbnN0YW50cy5jaGFyYWN0ZXJHcm91cFdoaXRlc3BhY2VcbiAgfVxuXG4gIGlmICh1bmljb2RlUHVuY3R1YXRpb24oY29kZSkpIHtcbiAgICByZXR1cm4gY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb25cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-classify-character/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-combine-extensions/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/micromark-util-combine-extensions/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"combineExtensions\": () => (/* binding */ combineExtensions),\n/* harmony export */ \"combineHtmlExtensions\": () => (/* binding */ combineHtmlExtensions)\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\n\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nfunction combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_0__.splice)(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nfunction combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNvbWJpbmUtZXh0ZW5zaW9ucy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsOENBQThDO0FBQzNELGFBQWEsb0RBQW9EO0FBQ2pFOztBQUU2Qzs7QUFFN0MseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtCQUFrQjtBQUM3QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUCxhQUFhLHFCQUFxQjtBQUNsQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhLGlCQUFpQjtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0EsZUFBZSx5QkFBeUI7QUFDeEMseUNBQXlDO0FBQ3pDLGVBQWUscUNBQXFDO0FBQ3BEO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsV0FBVyxnQkFBZ0I7QUFDM0IsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsRUFBRSw4REFBTTtBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsc0JBQXNCO0FBQ2pDO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGFBQWEsZUFBZTtBQUM1QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBLFdBQVcsZUFBZTtBQUMxQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBLGVBQWUsZUFBZTtBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMvaW5kZXguanM/YjNkZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSGFuZGxlc30gSGFuZGxlc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5IdG1sRXh0ZW5zaW9ufSBIdG1sRXh0ZW5zaW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLk5vcm1hbGl6ZWRFeHRlbnNpb259IE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcblxuY29uc3QgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgc3ludGF4IGV4dGVuc2lvbnMgaW50byBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFeHRlbnNpb24+fSBleHRlbnNpb25zXG4gKiAgIExpc3Qgb2Ygc3ludGF4IGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyB7Tm9ybWFsaXplZEV4dGVuc2lvbn1cbiAqICAgQSBzaW5nbGUgY29tYmluZWQgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUV4dGVuc2lvbnMoZXh0ZW5zaW9ucykge1xuICAvKiogQHR5cGUge05vcm1hbGl6ZWRFeHRlbnNpb259ICovXG4gIGNvbnN0IGFsbCA9IHt9XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBleHRlbnNpb25zLmxlbmd0aCkge1xuICAgIHN5bnRheEV4dGVuc2lvbihhbGwsIGV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGFsbFxufVxuXG4vKipcbiAqIE1lcmdlIGBleHRlbnNpb25gIGludG8gYGFsbGAuXG4gKlxuICogQHBhcmFtIHtOb3JtYWxpemVkRXh0ZW5zaW9ufSBhbGxcbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlIGludG8uXG4gKiBAcGFyYW0ge0V4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBzeW50YXhFeHRlbnNpb24oYWxsLCBleHRlbnNpb24pIHtcbiAgLyoqIEB0eXBlIHtrZXlvZiBFeHRlbnNpb259ICovXG4gIGxldCBob29rXG5cbiAgZm9yIChob29rIGluIGV4dGVuc2lvbikge1xuICAgIGNvbnN0IG1heWJlID0gaGFzT3duUHJvcGVydHkuY2FsbChhbGwsIGhvb2spID8gYWxsW2hvb2tdIDogdW5kZWZpbmVkXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi9cbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWR9ICovXG4gICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25baG9va11cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgY29kZVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBmb3IgKGNvZGUgaW4gcmlnaHQpIHtcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKGxlZnQsIGNvZGUpKSBsZWZ0W2NvZGVdID0gW11cbiAgICAgICAgY29uc3QgdmFsdWUgPSByaWdodFtjb2RlXVxuICAgICAgICBjb25zdHJ1Y3RzKFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhIGxpc3QuXG4gICAgICAgICAgbGVmdFtjb2RlXSxcbiAgICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyBbdmFsdWVdIDogW11cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIGBsaXN0YCBpbnRvIGBleGlzdGluZ2AgKGJvdGggbGlzdHMgb2YgY29uc3RydWN0cykuXG4gKiBNdXRhdGVzIGBleGlzdGluZ2AuXG4gKlxuICogQHBhcmFtIHtBcnJheTx1bmtub3duPn0gZXhpc3RpbmdcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IGxpc3RcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RzKGV4aXN0aW5nLCBsaXN0KSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGNvbnN0IGJlZm9yZSA9IFtdXG5cbiAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhbiBvYmplY3QuXG4gICAgOyhsaXN0W2luZGV4XS5hZGQgPT09ICdhZnRlcicgPyBleGlzdGluZyA6IGJlZm9yZSkucHVzaChsaXN0W2luZGV4XSlcbiAgfVxuXG4gIHNwbGljZShleGlzdGluZywgMCwgMCwgYmVmb3JlKVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgSFRNTCBleHRlbnNpb25zIGludG8gb25lLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8SHRtbEV4dGVuc2lvbj59IGh0bWxFeHRlbnNpb25zXG4gKiAgIExpc3Qgb2YgSFRNTCBleHRlbnNpb25zLlxuICogQHJldHVybnMge0h0bWxFeHRlbnNpb259XG4gKiAgIEEgc2luZ2xlIGNvbWJpbmVkIEhUTUwgZXh0ZW5zaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUh0bWxFeHRlbnNpb25zKGh0bWxFeHRlbnNpb25zKSB7XG4gIC8qKiBAdHlwZSB7SHRtbEV4dGVuc2lvbn0gKi9cbiAgY29uc3QgaGFuZGxlcnMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgaHRtbEV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgaHRtbEV4dGVuc2lvbihoYW5kbGVycywgaHRtbEV4dGVuc2lvbnNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGhhbmRsZXJzXG59XG5cbi8qKlxuICogTWVyZ2UgYGV4dGVuc2lvbmAgaW50byBgYWxsYC5cbiAqXG4gKiBAcGFyYW0ge0h0bWxFeHRlbnNpb259IGFsbFxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UgaW50by5cbiAqIEBwYXJhbSB7SHRtbEV4dGVuc2lvbn0gZXh0ZW5zaW9uXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBodG1sRXh0ZW5zaW9uKGFsbCwgZXh0ZW5zaW9uKSB7XG4gIC8qKiBAdHlwZSB7a2V5b2YgSHRtbEV4dGVuc2lvbn0gKi9cbiAgbGV0IGhvb2tcblxuICBmb3IgKGhvb2sgaW4gZXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgbWF5YmUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFsbCwgaG9vaykgPyBhbGxbaG9va10gOiB1bmRlZmluZWRcbiAgICBjb25zdCBsZWZ0ID0gbWF5YmUgfHwgKGFsbFtob29rXSA9IHt9KVxuICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2hvb2tdXG4gICAgLyoqIEB0eXBlIHtrZXlvZiBIYW5kbGVzfSAqL1xuICAgIGxldCB0eXBlXG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGZvciAodHlwZSBpbiByaWdodCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGFzc3VtZSBkb2N1bWVudCB2cyByZWd1bGFyIGhhbmRsZXIgYXJlIG1hbmFnZWQgY29ycmVjdGx5LlxuICAgICAgICBsZWZ0W3R5cGVdID0gcmlnaHRbdHlwZV1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-combine-extensions/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js": +/*!********************************************************************************************!*\ + !*** ../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js ***! + \********************************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeNumericCharacterReference\": () => (/* binding */ decodeNumericCharacterReference)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n\n\n\n/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nfunction decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht ||\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.vt ||\n (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.cr && code < micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) ||\n /* eslint-disable no-bitwise */\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 ||\n /* eslint-enable no-bitwise */\n // Out of range\n code > 1114111\n ) {\n return micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_1__.values.replacementCharacter\n }\n\n return String.fromCharCode(code)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFvRDtBQUNFOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxvRUFBUTtBQUNuQixhQUFhLG9FQUFRO0FBQ3JCLFlBQVksb0VBQVEsV0FBVyx1RUFBVztBQUMxQztBQUNBLFlBQVksdUVBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsd0ZBQTJCO0FBQ3RDOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UvZGV2L2luZGV4LmpzPzdhZjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHt2YWx1ZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC92YWx1ZXMuanMnXG5cbi8qKlxuICogVHVybiB0aGUgbnVtYmVyIChpbiBzdHJpbmcgZm9ybSBhcyBlaXRoZXIgaGV4YS0gb3IgcGxhaW4gZGVjaW1hbCkgY29taW5nIGZyb21cbiAqIGEgbnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGludG8gYSBjaGFyYWN0ZXIuXG4gKlxuICogU29ydCBvZiBsaWtlIGBTdHJpbmcuZnJvbUNoYXJDb2RlKE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSkpYCwgYnV0IG1ha2VzXG4gKiBub24tY2hhcmFjdGVycyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzIHNhZmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIFZhbHVlIHRvIGRlY29kZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlXG4gKiAgIE51bWVyaWMgYmFzZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIENoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UodmFsdWUsIGJhc2UpIHtcbiAgY29uc3QgY29kZSA9IE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSlcblxuICBpZiAoXG4gICAgLy8gQzAgZXhjZXB0IGZvciBIVCwgTEYsIEZGLCBDUiwgc3BhY2UuXG4gICAgY29kZSA8IGNvZGVzLmh0IHx8XG4gICAgY29kZSA9PT0gY29kZXMudnQgfHxcbiAgICAoY29kZSA+IGNvZGVzLmNyICYmIGNvZGUgPCBjb2Rlcy5zcGFjZSkgfHxcbiAgICAvLyBDb250cm9sIGNoYXJhY3RlciAoREVMKSBvZiBDMCwgYW5kIEMxIGNvbnRyb2xzLlxuICAgIChjb2RlID4gY29kZXMudGlsZGUgJiYgY29kZSA8IDE2MCkgfHxcbiAgICAvLyBMb25lIGhpZ2ggc3Vycm9nYXRlcyBhbmQgbG93IHN1cnJvZ2F0ZXMuXG4gICAgKGNvZGUgPiA1NTI5NSAmJiBjb2RlIDwgNTczNDQpIHx8XG4gICAgLy8gTm9uY2hhcmFjdGVycy5cbiAgICAoY29kZSA+IDY0OTc1ICYmIGNvZGUgPCA2NTAwOCkgfHxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM1IHx8XG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM0IHx8XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1iaXR3aXNlICovXG4gICAgLy8gT3V0IG9mIHJhbmdlXG4gICAgY29kZSA+IDExMTQxMTFcbiAgKSB7XG4gICAgcmV0dXJuIHZhbHVlcy5yZXBsYWNlbWVudENoYXJhY3RlclxuICB9XG5cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-decode-string/dev/index.js": +/*!***********************************************************************!*\ + !*** ../../../node_modules/micromark-util-decode-string/dev/index.js ***! + \***********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeString\": () => (/* binding */ decodeString)\n/* harmony export */ });\n/* harmony import */ var decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! decode-named-character-reference */ \"../../../node_modules/decode-named-character-reference/index.dom.js\");\n/* harmony import */ var micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-decode-numeric-character-reference */ \"../../../node_modules/micromark-util-decode-numeric-character-reference/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n\n\n\n\n\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nfunction decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n\n if (head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign) {\n const head = $2.charCodeAt(1)\n const hex = head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lowercaseX || head === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.uppercaseX\n return (0,micromark_util_decode_numeric_character_reference__WEBPACK_IMPORTED_MODULE_1__.decodeNumericCharacterReference)(\n $2.slice(hex ? 2 : 1),\n hex ? micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseHexadecimal : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_2__.constants.numericBaseDecimal\n )\n }\n\n return (0,decode_named_character_reference__WEBPACK_IMPORTED_MODULE_3__.decodeNamedCharacterReference)($2) || $0\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWRlY29kZS1zdHJpbmcvZGV2L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQThFO0FBQ21CO0FBQzdDO0FBQ1E7O0FBRTVEO0FBQ0EsaUJBQWlCLGNBQWMsSUFBSSxVQUFVLElBQUksVUFBVSxLQUFLLEVBQUU7O0FBRWxFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZUFBZSw0RUFBZ0I7QUFDL0I7QUFDQSx5QkFBeUIsNEVBQWdCLGFBQWEsNEVBQWdCO0FBQ3RFLFdBQVcsa0hBQStCO0FBQzFDO0FBQ0EsWUFBWSxnR0FBZ0MsR0FBRyw0RkFBNEI7QUFDM0U7QUFDQTs7QUFFQSxTQUFTLCtGQUE2QjtBQUN0QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZy9kZXYvaW5kZXguanM/OTBhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdkZWNvZGUtbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7ZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7Y29uc3RhbnRzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29uc3RhbnRzLmpzJ1xuXG5jb25zdCBjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSA9XG4gIC9cXFxcKFshLS86LUBbLWB7LX5dKXwmKCMoPzpcXGR7MSw3fXx4W1xcZGEtZl17MSw2fSl8W1xcZGEtel17MSwzMX0pOy9naVxuXG4vKipcbiAqIERlY29kZSBtYXJrZG93biBzdHJpbmdzICh3aGljaCBvY2N1ciBpbiBwbGFjZXMgc3VjaCBhcyBmZW5jZWQgY29kZSBpbmZvXG4gKiBzdHJpbmdzLCBkZXN0aW5hdGlvbnMsIGxhYmVscywgYW5kIHRpdGxlcykuXG4gKlxuICogVGhlIOKAnHN0cmluZ+KAnSBjb250ZW50IHR5cGUgYWxsb3dzIGNoYXJhY3RlciBlc2NhcGVzIGFuZCAtcmVmZXJlbmNlcy5cbiAqIFRoaXMgZGVjb2RlcyB0aG9zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgVmFsdWUgdG8gZGVjb2RlLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRGVjb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVN0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSwgZGVjb2RlKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMFxuICogQHBhcmFtIHtzdHJpbmd9ICQxXG4gKiBAcGFyYW0ge3N0cmluZ30gJDJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRlY29kZSgkMCwgJDEsICQyKSB7XG4gIGlmICgkMSkge1xuICAgIC8vIEVzY2FwZS5cbiAgICByZXR1cm4gJDFcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZS5cbiAgY29uc3QgaGVhZCA9ICQyLmNoYXJDb2RlQXQoMClcblxuICBpZiAoaGVhZCA9PT0gY29kZXMubnVtYmVyU2lnbikge1xuICAgIGNvbnN0IGhlYWQgPSAkMi5jaGFyQ29kZUF0KDEpXG4gICAgY29uc3QgaGV4ID0gaGVhZCA9PT0gY29kZXMubG93ZXJjYXNlWCB8fCBoZWFkID09PSBjb2Rlcy51cHBlcmNhc2VYXG4gICAgcmV0dXJuIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoXG4gICAgICAkMi5zbGljZShoZXggPyAyIDogMSksXG4gICAgICBoZXggPyBjb25zdGFudHMubnVtZXJpY0Jhc2VIZXhhZGVjaW1hbCA6IGNvbnN0YW50cy5udW1lcmljQmFzZURlY2ltYWxcbiAgICApXG4gIH1cblxuICByZXR1cm4gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoJDIpIHx8ICQwXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-decode-string/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-html-tag-name/index.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark-util-html-tag-name/index.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"htmlBlockNames\": () => (/* binding */ htmlBlockNames),\n/* harmony export */ \"htmlRawNames\": () => (/* binding */ htmlRawNames)\n/* harmony export */ });\n/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nconst htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nconst htmlRawNames = ['pre', 'script', 'style', 'textarea']\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtaHRtbC10YWctbmFtZS9pbmRleC5qcz9jOTExIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCDigJxibG9ja+KAnSB0YWcgbmFtZXMuXG4gKlxuICogVGhlIGxpc3QsIHdoZW4gcGFyc2luZyBIVE1MIChmbG93KSwgcmVzdWx0cyBpbiBtb3JlIHJlbGF4ZWQgcnVsZXMgKGNvbmRpdGlvblxuICogNikuXG4gKiBCZWNhdXNlIHRoZXkgYXJlIGtub3duIGJsb2NrcywgdGhlIEhUTUwtbGlrZSBzeW50YXggZG9lc27igJl0IGhhdmUgdG8gYmVcbiAqIHN0cmljdGx5IHBhcnNlZC5cbiAqIEZvciB0YWcgbmFtZXMgbm90IGluIHRoaXMgbGlzdCwgYSBtb3JlIHN0cmljdCBhbGdvcml0aG0gKGNvbmRpdGlvbiA3KSBpcyB1c2VkXG4gKiB0byBkZXRlY3Qgd2hldGhlciB0aGUgSFRNTC1saWtlIHN5bnRheCBpcyBzZWVuIGFzIEhUTUwgKGZsb3cpIG9yIG5vdC5cbiAqXG4gKiBUaGlzIGlzIGNvcGllZCBmcm9tOlxuICogPGh0dHBzOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjMwLyNodG1sLWJsb2Nrcz4uXG4gKlxuICogPiDwn5GJICoqTm90ZSoqOiBgc2VhcmNoYCB3YXMgYWRkZWQgaW4gYENvbW1vbk1hcmtAMC4zMWAuXG4gKi9cbmV4cG9ydCBjb25zdCBodG1sQmxvY2tOYW1lcyA9IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3NlYXJjaCcsXG4gICdzZWN0aW9uJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG5cbi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCDigJxyYXfigJ0gdGFnIG5hbWVzLlxuICpcbiAqIFRoZSBsaXN0LCB3aGVuIHBhcnNpbmcgSFRNTCAoZmxvdyksIHJlc3VsdHMgaW4gSFRNTCB0aGF0IGNhbiBpbmNsdWRlIGxpbmVzXG4gKiB3aXRob3V0IGV4aXRpbmcsIHVudGlsIGEgY2xvc2luZyB0YWcgYWxzbyBpbiB0aGlzIGxpc3QgaXMgZm91bmQgKGNvbmRpdGlvblxuICogMSkuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgY29waWVkIGZyb206XG4gKiA8aHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMzAvI2h0bWwtYmxvY2tzPi5cbiAqXG4gKiA+IPCfkYkgKipOb3RlKio6IGB0ZXh0YXJlYWAgd2FzIGFkZGVkIGluIGBDb21tb25NYXJrQDAuMzBgLlxuICovXG5leHBvcnQgY29uc3QgaHRtbFJhd05hbWVzID0gWydwcmUnLCAnc2NyaXB0JywgJ3N0eWxlJywgJ3RleHRhcmVhJ11cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-html-tag-name/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-normalize-identifier/dev/index.js": +/*!******************************************************************************!*\ + !*** ../../../node_modules/micromark-util-normalize-identifier/dev/index.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"normalizeIdentifier\": () => (/* binding */ normalizeIdentifier)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n\n\n/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nfunction normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_0__.values.space)\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseUVBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllci9kZXYvaW5kZXguanM/OGIwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3ZhbHVlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3ZhbHVlcy5qcydcblxuLyoqXG4gKiBOb3JtYWxpemUgYW4gaWRlbnRpZmllciAoYXMgZm91bmQgaW4gcmVmZXJlbmNlcywgZGVmaW5pdGlvbnMpLlxuICpcbiAqIENvbGxhcHNlcyBtYXJrZG93biB3aGl0ZXNwYWNlLCB0cmltLCBhbmQgdGhlbiBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAqXG4gKiBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQg4oCcdXBwZXJjYXNl4oCdLCBzdWNoIGFzIFUrMDNGNCAoYM+0YCksIGJ1dCBpZiB0aGVpclxuICogbG93ZXJjYXNlIGNvdW50ZXJwYXJ0IChVKzAzQjggKGDOuGApKSBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50XG4gKiB1cHBlcmNhc2UgY2hhcmFjdGVyIChVKzAzOTggKGDOmGApKS5cbiAqIFNvLCB0byBnZXQgYSBjYW5vbmljYWwgZm9ybSwgd2UgcGVyZm9ybSBib3RoIGxvd2VyLSBhbmQgdXBwZXJjYXNlLlxuICpcbiAqIFVzaW5nIHVwcGVyY2FzZSBsYXN0IG1ha2VzIHN1cmUga2V5cyB3aWxsIG5ldmVyIGludGVyYWN0IHdpdGggZGVmYXVsdFxuICogcHJvdG90eXBhbCB2YWx1ZXMgKHN1Y2ggYXMgYGNvbnN0cnVjdG9yYCk6IG5vdGhpbmcgaW4gdGhlIHByb3RvdHlwZSBvZlxuICogYE9iamVjdGAgaXMgdXBwZXJjYXNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogICBJZGVudGlmaWVyIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIE5vcm1hbGl6ZWQgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkZW50aWZpZXIodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZVxuICAgICAgLy8gQ29sbGFwc2UgbWFya2Rvd24gd2hpdGVzcGFjZS5cbiAgICAgIC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rL2csIHZhbHVlcy5zcGFjZSlcbiAgICAgIC8vIFRyaW0uXG4gICAgICAucmVwbGFjZSgvXiB8ICQvZywgJycpXG4gICAgICAvLyBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQg4oCcdXBwZXJjYXNl4oCdLCBidXQgaWYgdGhlaXIgbG93ZXJjYXNlXG4gICAgICAvLyBjb3VudGVycGFydCBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50IHVwcGVyY2FzZVxuICAgICAgLy8gY2hhcmFjdGVyLlxuICAgICAgLy8gSGVuY2UsIHRvIGdldCB0aGF0IGZvcm0sIHdlIHBlcmZvcm0gYm90aCBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAgICAgIC8vIFVwcGVyIGNhc2UgbWFrZXMgc3VyZSBrZXlzIHdpbGwgbm90IGludGVyYWN0IHdpdGggZGVmYXVsdCBwcm90b3R5cGFsXG4gICAgICAvLyBtZXRob2RzOiBubyBtZXRob2QgaXMgdXBwZXJjYXNlLlxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC50b1VwcGVyQ2FzZSgpXG4gIClcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-normalize-identifier/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-resolve-all/index.js": +/*!*****************************************************************!*\ + !*** ../../../node_modules/micromark-util-resolve-all/index.js ***! + \*****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resolveAll\": () => (/* binding */ resolveAll)\n/* harmony export */ });\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nfunction resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEseUNBQXlDO0FBQ3RELGFBQWEsZ0RBQWdEO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTyxrQ0FBa0MsR0FBRztBQUN2RDtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQLGFBQWEsaUJBQWlCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsL2luZGV4LmpzPzE1MDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG4vKipcbiAqIENhbGwgYWxsIGByZXNvbHZlQWxsYHMuXG4gKlxuICogQHBhcmFtIHtBcnJheTx7cmVzb2x2ZUFsbD86IFJlc29sdmVyIHwgdW5kZWZpbmVkfT59IGNvbnN0cnVjdHNcbiAqICAgTGlzdCBvZiBjb25zdHJ1Y3RzLCBvcHRpb25hbGx5IHdpdGggYHJlc29sdmVBbGxgcy5cbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqICAgTGlzdCBvZiBldmVudHMuXG4gKiBAcGFyYW0ge1Rva2VuaXplQ29udGV4dH0gY29udGV4dFxuICogICBDb250ZXh0IHVzZWQgYnkgYHRva2VuaXplYC5cbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKiAgIENoYW5nZWQgZXZlbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFsbChjb25zdHJ1Y3RzLCBldmVudHMsIGNvbnRleHQpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxSZXNvbHZlcj59ICovXG4gIGNvbnN0IGNhbGxlZCA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjb25zdHJ1Y3RzLmxlbmd0aCkge1xuICAgIGNvbnN0IHJlc29sdmUgPSBjb25zdHJ1Y3RzW2luZGV4XS5yZXNvbHZlQWxsXG5cbiAgICBpZiAocmVzb2x2ZSAmJiAhY2FsbGVkLmluY2x1ZGVzKHJlc29sdmUpKSB7XG4gICAgICBldmVudHMgPSByZXNvbHZlKGV2ZW50cywgY29udGV4dClcbiAgICAgIGNhbGxlZC5wdXNoKHJlc29sdmUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV2ZW50c1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-resolve-all/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-subtokenize/dev/index.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/micromark-util-subtokenize/dev/index.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"subtokenize\": () => (/* binding */ subtokenize)\n/* harmony export */ });\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n\n\n\n\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nfunction subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow &&\n events[index - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.listItemPrefix\n ) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(event[1]._tokenizer, 'expected `_tokenizer` on subtokens')\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.content) {\n break\n }\n\n if (subevents[otherIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkText) {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding ||\n otherEvent[1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEndingBlank\n }\n\n otherEvent[1].type = micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.lineEnding\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(token.contentType, 'expected `contentType` on subtokens')\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n !previous || current.previous === previous,\n 'expected previous to match'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!previous || previous.next === current, 'expected next to match')\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(current, 'expected a current token')\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(!current.next, 'expected no next token')\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(start !== undefined, 'expected a start position when splicing')\n jumps.unshift([start, start + slice.length - 1])\n ;(0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplL2Rldi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxzQ0FBc0M7QUFDbkQ7O0FBRTZDO0FBQ087QUFDQTtBQUNiOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNPO0FBQ1AsYUFBYSx3QkFBd0I7QUFDckM7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGFBQWEsb0JBQW9CO0FBQ2pDO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxxQkFBcUI7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkVBQWU7QUFDdkMsb0NBQW9DLGdGQUFvQjtBQUN4RDtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEMsaUZBQXFCO0FBQy9EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDLHlFQUFhO0FBQ3ZEO0FBQ0E7QUFDQSxnREFBZ0QseUVBQWE7QUFDN0Q7QUFDQTs7QUFFQSxnREFBZ0QsMkVBQWU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLDRFQUFnQjtBQUNqRCxpQ0FBaUMsaUZBQXFCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxpRkFBcUI7QUFDL0Q7O0FBRUEsaUNBQWlDLDRFQUFnQjtBQUNqRDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxRQUFRLCtEQUFNO0FBQ2Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsUUFBUTtBQUNuQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZUFBZTtBQUM1QjtBQUNBLEVBQUUsK0NBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QjtBQUN0QztBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0EsYUFBYSxjQUFjO0FBQzNCO0FBQ0EsYUFBYSxtQkFBbUI7QUFDaEM7QUFDQTtBQUNBLGFBQWEsbUJBQW1CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtDQUFNOztBQUVWOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IscUVBQVM7QUFDN0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sOENBQU07QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtDQUFNO0FBQ1YsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksK0NBQU07QUFDVjtBQUNBLElBQUksK0RBQU07QUFDVjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1zdWJ0b2tlbml6ZS9kZXYvaW5kZXguanM/MTIyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKipcbiAqIFRva2VuaXplIHN1YmNvbnRlbnQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogICBMaXN0IG9mIGV2ZW50cy5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIHN1YnRva2VucyB3ZXJlIGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidG9rZW5pemUoZXZlbnRzKSB7XG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgY29uc3QganVtcHMgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge0V2ZW50fSAqL1xuICBsZXQgZXZlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBsaW5lSW5kZXhcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvdGhlckluZGV4XG4gIC8qKiBAdHlwZSB7RXZlbnR9ICovXG4gIGxldCBvdGhlckV2ZW50XG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgcGFyYW1ldGVyc1xuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IHN1YmV2ZW50c1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtb3JlXG5cbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgd2hpbGUgKGluZGV4IGluIGp1bXBzKSB7XG4gICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgIH1cblxuICAgIGV2ZW50ID0gZXZlbnRzW2luZGV4XVxuXG4gICAgLy8gQWRkIGEgaG9vayBmb3IgdGhlIEdGTSB0YXNrbGlzdCBleHRlbnNpb24sIHdoaWNoIG5lZWRzIHRvIGtub3cgaWYgdGV4dFxuICAgIC8vIGlzIGluIHRoZSBmaXJzdCBjb250ZW50IG9mIGEgbGlzdCBpdGVtLlxuICAgIGlmIChcbiAgICAgIGluZGV4ICYmXG4gICAgICBldmVudFsxXS50eXBlID09PSB0eXBlcy5jaHVua0Zsb3cgJiZcbiAgICAgIGV2ZW50c1tpbmRleCAtIDFdWzFdLnR5cGUgPT09IHR5cGVzLmxpc3RJdGVtUHJlZml4XG4gICAgKSB7XG4gICAgICBhc3NlcnQoZXZlbnRbMV0uX3Rva2VuaXplciwgJ2V4cGVjdGVkIGBfdG9rZW5pemVyYCBvbiBzdWJ0b2tlbnMnKVxuICAgICAgc3ViZXZlbnRzID0gZXZlbnRbMV0uX3Rva2VuaXplci5ldmVudHNcbiAgICAgIG90aGVySW5kZXggPSAwXG5cbiAgICAgIGlmIChcbiAgICAgICAgb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGggJiZcbiAgICAgICAgc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmdCbGFua1xuICAgICAgKSB7XG4gICAgICAgIG90aGVySW5kZXggKz0gMlxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIG90aGVySW5kZXggPCBzdWJldmVudHMubGVuZ3RoICYmXG4gICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSB0eXBlcy5jb250ZW50XG4gICAgICApIHtcbiAgICAgICAgd2hpbGUgKCsrb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09IHR5cGVzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSB0eXBlcy5jaHVua1RleHQpIHtcbiAgICAgICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB0cnVlXG4gICAgICAgICAgICBvdGhlckluZGV4KytcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnRlci5cbiAgICBpZiAoZXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudFsxXS5jb250ZW50VHlwZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGp1bXBzLCBzdWJjb250ZW50KGV2ZW50cywgaW5kZXgpKVxuICAgICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgICAgICBtb3JlID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeGl0LlxuICAgIGVsc2UgaWYgKGV2ZW50WzFdLl9jb250YWluZXIpIHtcbiAgICAgIG90aGVySW5kZXggPSBpbmRleFxuICAgICAgbGluZUluZGV4ID0gdW5kZWZpbmVkXG5cbiAgICAgIHdoaWxlIChvdGhlckluZGV4LS0pIHtcbiAgICAgICAgb3RoZXJFdmVudCA9IGV2ZW50c1tvdGhlckluZGV4XVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmcgfHxcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09IHR5cGVzLmxpbmVFbmRpbmdCbGFua1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAob3RoZXJFdmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAgICAgICBldmVudHNbbGluZUluZGV4XVsxXS50eXBlID0gdHlwZXMubGluZUVuZGluZ0JsYW5rXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG90aGVyRXZlbnRbMV0udHlwZSA9IHR5cGVzLmxpbmVFbmRpbmdcbiAgICAgICAgICAgIGxpbmVJbmRleCA9IG90aGVySW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobGluZUluZGV4KSB7XG4gICAgICAgIC8vIEZpeCBwb3NpdGlvbi5cbiAgICAgICAgZXZlbnRbMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2xpbmVJbmRleF1bMV0uc3RhcnQpXG5cbiAgICAgICAgLy8gU3dpdGNoIGNvbnRhaW5lciBleGl0IHcvIGxpbmUgZW5kaW5ncy5cbiAgICAgICAgcGFyYW1ldGVycyA9IGV2ZW50cy5zbGljZShsaW5lSW5kZXgsIGluZGV4KVxuICAgICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoZXZlbnQpXG4gICAgICAgIHNwbGljZShldmVudHMsIGxpbmVJbmRleCwgaW5kZXggLSBsaW5lSW5kZXggKyAxLCBwYXJhbWV0ZXJzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhbW9yZVxufVxuXG4vKipcbiAqIFRva2VuaXplIGVtYmVkZGVkIHRva2Vucy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gZXZlbnRJbmRleFxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIG51bWJlcj59XG4gKi9cbmZ1bmN0aW9uIHN1YmNvbnRlbnQoZXZlbnRzLCBldmVudEluZGV4KSB7XG4gIGNvbnN0IHRva2VuID0gZXZlbnRzW2V2ZW50SW5kZXhdWzFdXG4gIGNvbnN0IGNvbnRleHQgPSBldmVudHNbZXZlbnRJbmRleF1bMl1cbiAgbGV0IHN0YXJ0UG9zaXRpb24gPSBldmVudEluZGV4IC0gMVxuICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovXG4gIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gW11cbiAgYXNzZXJ0KHRva2VuLmNvbnRlbnRUeXBlLCAnZXhwZWN0ZWQgYGNvbnRlbnRUeXBlYCBvbiBzdWJ0b2tlbnMnKVxuICBjb25zdCB0b2tlbml6ZXIgPVxuICAgIHRva2VuLl90b2tlbml6ZXIgfHwgY29udGV4dC5wYXJzZXJbdG9rZW4uY29udGVudFR5cGVdKHRva2VuLnN0YXJ0KVxuICBjb25zdCBjaGlsZEV2ZW50cyA9IHRva2VuaXplci5ldmVudHNcbiAgLyoqIEB0eXBlIHtBcnJheTxbbnVtYmVyLCBudW1iZXJdPn0gKi9cbiAgY29uc3QganVtcHMgPSBbXVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGdhcHMgPSB7fVxuICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgbGV0IHN0cmVhbVxuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgcHJldmlvdXNcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGN1cnJlbnQgPSB0b2tlblxuICBsZXQgYWRqdXN0ID0gMFxuICBsZXQgc3RhcnQgPSAwXG4gIGNvbnN0IGJyZWFrcyA9IFtzdGFydF1cblxuICAvLyBMb29wIGZvcndhcmQgdGhyb3VnaCB0aGUgbGlua2VkIHRva2VucyB0byBwYXNzIHRoZW0gaW4gb3JkZXIgdG8gdGhlXG4gIC8vIHN1YnRva2VuaXplci5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAvLyBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXZlbnQgZm9yIHRoaXMgdG9rZW4uXG4gICAgd2hpbGUgKGV2ZW50c1srK3N0YXJ0UG9zaXRpb25dWzFdICE9PSBjdXJyZW50KSB7XG4gICAgICAvLyBFbXB0eS5cbiAgICB9XG5cbiAgICBhc3NlcnQoXG4gICAgICAhcHJldmlvdXMgfHwgY3VycmVudC5wcmV2aW91cyA9PT0gcHJldmlvdXMsXG4gICAgICAnZXhwZWN0ZWQgcHJldmlvdXMgdG8gbWF0Y2gnXG4gICAgKVxuICAgIGFzc2VydCghcHJldmlvdXMgfHwgcHJldmlvdXMubmV4dCA9PT0gY3VycmVudCwgJ2V4cGVjdGVkIG5leHQgdG8gbWF0Y2gnKVxuXG4gICAgc3RhcnRQb3NpdGlvbnMucHVzaChzdGFydFBvc2l0aW9uKVxuXG4gICAgaWYgKCFjdXJyZW50Ll90b2tlbml6ZXIpIHtcbiAgICAgIHN0cmVhbSA9IGNvbnRleHQuc2xpY2VTdHJlYW0oY3VycmVudClcblxuICAgICAgaWYgKCFjdXJyZW50Lm5leHQpIHtcbiAgICAgICAgc3RyZWFtLnB1c2goY29kZXMuZW9mKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgdG9rZW5pemVyLmRlZmluZVNraXAoY3VycmVudC5zdGFydClcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnQuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtKSB7XG4gICAgICAgIHRva2VuaXplci5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICB0b2tlbml6ZXIud3JpdGUoc3RyZWFtKVxuXG4gICAgICBpZiAoY3VycmVudC5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0pIHtcbiAgICAgICAgdG9rZW5pemVyLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnJhdmVsIHRoZSBuZXh0IHRva2VuLlxuICAgIHByZXZpb3VzID0gY3VycmVudFxuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRcbiAgfVxuXG4gIC8vIE5vdywgbG9vcCBiYWNrIHRocm91Z2ggYWxsIGV2ZW50cyAoYW5kIGxpbmtlZCB0b2tlbnMpLCB0byBmaWd1cmUgb3V0IHdoaWNoXG4gIC8vIHBhcnRzIGJlbG9uZyB3aGVyZS5cbiAgY3VycmVudCA9IHRva2VuXG5cbiAgd2hpbGUgKCsraW5kZXggPCBjaGlsZEV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoXG4gICAgICAvLyBGaW5kIGEgdm9pZCB0b2tlbiB0aGF0IGluY2x1ZGVzIGEgYnJlYWsuXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleF1bMF0gPT09ICdleGl0JyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXggLSAxXVswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IGNoaWxkRXZlbnRzW2luZGV4IC0gMV1bMV0udHlwZSAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnN0YXJ0LmxpbmUgIT09IGNoaWxkRXZlbnRzW2luZGV4XVsxXS5lbmQubGluZVxuICAgICkge1xuICAgICAgYXNzZXJ0KGN1cnJlbnQsICdleHBlY3RlZCBhIGN1cnJlbnQgdG9rZW4nKVxuICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgIGJyZWFrcy5wdXNoKHN0YXJ0KVxuICAgICAgLy8gSGVscCBHQy5cbiAgICAgIGN1cnJlbnQuX3Rva2VuaXplciA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHAgR0MuXG4gIHRva2VuaXplci5ldmVudHMgPSBbXVxuXG4gIC8vIElmIHRoZXJl4oCZcyBvbmUgbW9yZSB0b2tlbiAod2hpY2ggaXMgdGhlIGNhc2VzIGZvciBsaW5lcyB0aGF0IGVuZCBpbiBhblxuICAvLyBFT0YpLCB0aGF04oCZcyBwZXJmZWN0OiB0aGUgbGFzdCBwb2ludCB3ZSBmb3VuZCBzdGFydHMgaXQuXG4gIC8vIElmIHRoZXJlIGlzbuKAmXQgdGhlbiBtYWtlIHN1cmUgYW55IHJlbWFpbmluZyBjb250ZW50IGlzIGFkZGVkIHRvIGl0LlxuICBpZiAoY3VycmVudCkge1xuICAgIC8vIEhlbHAgR0MuXG4gICAgY3VycmVudC5fdG9rZW5pemVyID0gdW5kZWZpbmVkXG4gICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgIGFzc2VydCghY3VycmVudC5uZXh0LCAnZXhwZWN0ZWQgbm8gbmV4dCB0b2tlbicpXG4gIH0gZWxzZSB7XG4gICAgYnJlYWtzLnBvcCgpXG4gIH1cblxuICAvLyBOb3cgc3BsaWNlIHRoZSBldmVudHMgZnJvbSB0aGUgc3VidG9rZW5pemVyIGludG8gdGhlIGN1cnJlbnQgZXZlbnRzLFxuICAvLyBtb3ZpbmcgYmFjayB0byBmcm9udCBzbyB0aGF0IHNwbGljZSBpbmRpY2VzIGFyZW7igJl0IGFmZmVjdGVkLlxuICBpbmRleCA9IGJyZWFrcy5sZW5ndGhcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGNvbnN0IHNsaWNlID0gY2hpbGRFdmVudHMuc2xpY2UoYnJlYWtzW2luZGV4XSwgYnJlYWtzW2luZGV4ICsgMV0pXG4gICAgY29uc3Qgc3RhcnQgPSBzdGFydFBvc2l0aW9ucy5wb3AoKVxuICAgIGFzc2VydChzdGFydCAhPT0gdW5kZWZpbmVkLCAnZXhwZWN0ZWQgYSBzdGFydCBwb3NpdGlvbiB3aGVuIHNwbGljaW5nJylcbiAgICBqdW1wcy51bnNoaWZ0KFtzdGFydCwgc3RhcnQgKyBzbGljZS5sZW5ndGggLSAxXSlcbiAgICBzcGxpY2UoZXZlbnRzLCBzdGFydCwgMiwgc2xpY2UpXG4gIH1cblxuICBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBqdW1wcy5sZW5ndGgpIHtcbiAgICBnYXBzW2FkanVzdCArIGp1bXBzW2luZGV4XVswXV0gPSBhZGp1c3QgKyBqdW1wc1tpbmRleF1bMV1cbiAgICBhZGp1c3QgKz0ganVtcHNbaW5kZXhdWzFdIC0ganVtcHNbaW5kZXhdWzBdIC0gMVxuICB9XG5cbiAgcmV0dXJuIGdhcHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-subtokenize/dev/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/codes.js": +/*!************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/codes.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"codes\": () => (/* binding */ codes)\n/* harmony export */ });\n/**\n * Character codes.\n *\n * This module is compiled away!\n *\n * micromark works based on character codes.\n * This module contains constants for the ASCII block and the replacement\n * character.\n * A couple of them are handled in a special way, such as the line endings\n * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal\n * tab) and its expansion based on what column it’s at (virtual space),\n * and the end-of-file (eof) character.\n * As values are preprocessed before handling them, the actual characters LF,\n * CR, HT, and NUL (which is present as the replacement character), are\n * guaranteed to not exist.\n *\n * Unicode basic latin block.\n */\nconst codes = /** @type {const} */ ({\n carriageReturn: -5,\n lineFeed: -4,\n carriageReturnLineFeed: -3,\n horizontalTab: -2,\n virtualSpace: -1,\n eof: null,\n nul: 0,\n soh: 1,\n stx: 2,\n etx: 3,\n eot: 4,\n enq: 5,\n ack: 6,\n bel: 7,\n bs: 8,\n ht: 9, // `\\t`\n lf: 10, // `\\n`\n vt: 11, // `\\v`\n ff: 12, // `\\f`\n cr: 13, // `\\r`\n so: 14,\n si: 15,\n dle: 16,\n dc1: 17,\n dc2: 18,\n dc3: 19,\n dc4: 20,\n nak: 21,\n syn: 22,\n etb: 23,\n can: 24,\n em: 25,\n sub: 26,\n esc: 27,\n fs: 28,\n gs: 29,\n rs: 30,\n us: 31,\n space: 32,\n exclamationMark: 33, // `!`\n quotationMark: 34, // `\"`\n numberSign: 35, // `#`\n dollarSign: 36, // `$`\n percentSign: 37, // `%`\n ampersand: 38, // `&`\n apostrophe: 39, // `'`\n leftParenthesis: 40, // `(`\n rightParenthesis: 41, // `)`\n asterisk: 42, // `*`\n plusSign: 43, // `+`\n comma: 44, // `,`\n dash: 45, // `-`\n dot: 46, // `.`\n slash: 47, // `/`\n digit0: 48, // `0`\n digit1: 49, // `1`\n digit2: 50, // `2`\n digit3: 51, // `3`\n digit4: 52, // `4`\n digit5: 53, // `5`\n digit6: 54, // `6`\n digit7: 55, // `7`\n digit8: 56, // `8`\n digit9: 57, // `9`\n colon: 58, // `:`\n semicolon: 59, // `;`\n lessThan: 60, // `<`\n equalsTo: 61, // `=`\n greaterThan: 62, // `>`\n questionMark: 63, // `?`\n atSign: 64, // `@`\n uppercaseA: 65, // `A`\n uppercaseB: 66, // `B`\n uppercaseC: 67, // `C`\n uppercaseD: 68, // `D`\n uppercaseE: 69, // `E`\n uppercaseF: 70, // `F`\n uppercaseG: 71, // `G`\n uppercaseH: 72, // `H`\n uppercaseI: 73, // `I`\n uppercaseJ: 74, // `J`\n uppercaseK: 75, // `K`\n uppercaseL: 76, // `L`\n uppercaseM: 77, // `M`\n uppercaseN: 78, // `N`\n uppercaseO: 79, // `O`\n uppercaseP: 80, // `P`\n uppercaseQ: 81, // `Q`\n uppercaseR: 82, // `R`\n uppercaseS: 83, // `S`\n uppercaseT: 84, // `T`\n uppercaseU: 85, // `U`\n uppercaseV: 86, // `V`\n uppercaseW: 87, // `W`\n uppercaseX: 88, // `X`\n uppercaseY: 89, // `Y`\n uppercaseZ: 90, // `Z`\n leftSquareBracket: 91, // `[`\n backslash: 92, // `\\`\n rightSquareBracket: 93, // `]`\n caret: 94, // `^`\n underscore: 95, // `_`\n graveAccent: 96, // `` ` ``\n lowercaseA: 97, // `a`\n lowercaseB: 98, // `b`\n lowercaseC: 99, // `c`\n lowercaseD: 100, // `d`\n lowercaseE: 101, // `e`\n lowercaseF: 102, // `f`\n lowercaseG: 103, // `g`\n lowercaseH: 104, // `h`\n lowercaseI: 105, // `i`\n lowercaseJ: 106, // `j`\n lowercaseK: 107, // `k`\n lowercaseL: 108, // `l`\n lowercaseM: 109, // `m`\n lowercaseN: 110, // `n`\n lowercaseO: 111, // `o`\n lowercaseP: 112, // `p`\n lowercaseQ: 113, // `q`\n lowercaseR: 114, // `r`\n lowercaseS: 115, // `s`\n lowercaseT: 116, // `t`\n lowercaseU: 117, // `u`\n lowercaseV: 118, // `v`\n lowercaseW: 119, // `w`\n lowercaseX: 120, // `x`\n lowercaseY: 121, // `y`\n lowercaseZ: 122, // `z`\n leftCurlyBrace: 123, // `{`\n verticalBar: 124, // `|`\n rightCurlyBrace: 125, // `}`\n tilde: 126, // `~`\n del: 127,\n // Unicode Specials block.\n byteOrderMarker: 65279,\n // Unicode Specials block.\n replacementCharacter: 65533 // `�`\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08seUJBQXlCLE9BQU87QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzPzY3YWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGFyYWN0ZXIgY29kZXMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgY29tcGlsZWQgYXdheSFcbiAqXG4gKiBtaWNyb21hcmsgd29ya3MgYmFzZWQgb24gY2hhcmFjdGVyIGNvZGVzLlxuICogVGhpcyBtb2R1bGUgY29udGFpbnMgY29uc3RhbnRzIGZvciB0aGUgQVNDSUkgYmxvY2sgYW5kIHRoZSByZXBsYWNlbWVudFxuICogY2hhcmFjdGVyLlxuICogQSBjb3VwbGUgb2YgdGhlbSBhcmUgaGFuZGxlZCBpbiBhIHNwZWNpYWwgd2F5LCBzdWNoIGFzIHRoZSBsaW5lIGVuZGluZ3NcbiAqIChDUiwgTEYsIGFuZCBDUitMRiwgY29tbW9ubHkga25vd24gYXMgZW5kLW9mLWxpbmU6IEVPTHMpLCB0aGUgdGFiIChob3Jpem9udGFsXG4gKiB0YWIpIGFuZCBpdHMgZXhwYW5zaW9uIGJhc2VkIG9uIHdoYXQgY29sdW1uIGl04oCZcyBhdCAodmlydHVhbCBzcGFjZSksXG4gKiBhbmQgdGhlIGVuZC1vZi1maWxlIChlb2YpIGNoYXJhY3Rlci5cbiAqIEFzIHZhbHVlcyBhcmUgcHJlcHJvY2Vzc2VkIGJlZm9yZSBoYW5kbGluZyB0aGVtLCB0aGUgYWN0dWFsIGNoYXJhY3RlcnMgTEYsXG4gKiBDUiwgSFQsIGFuZCBOVUwgKHdoaWNoIGlzIHByZXNlbnQgYXMgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciksIGFyZVxuICogZ3VhcmFudGVlZCB0byBub3QgZXhpc3QuXG4gKlxuICogVW5pY29kZSBiYXNpYyBsYXRpbiBibG9jay5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvZGVzID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgY2FycmlhZ2VSZXR1cm46IC01LFxuICBsaW5lRmVlZDogLTQsXG4gIGNhcnJpYWdlUmV0dXJuTGluZUZlZWQ6IC0zLFxuICBob3Jpem9udGFsVGFiOiAtMixcbiAgdmlydHVhbFNwYWNlOiAtMSxcbiAgZW9mOiBudWxsLFxuICBudWw6IDAsXG4gIHNvaDogMSxcbiAgc3R4OiAyLFxuICBldHg6IDMsXG4gIGVvdDogNCxcbiAgZW5xOiA1LFxuICBhY2s6IDYsXG4gIGJlbDogNyxcbiAgYnM6IDgsXG4gIGh0OiA5LCAvLyBgXFx0YFxuICBsZjogMTAsIC8vIGBcXG5gXG4gIHZ0OiAxMSwgLy8gYFxcdmBcbiAgZmY6IDEyLCAvLyBgXFxmYFxuICBjcjogMTMsIC8vIGBcXHJgXG4gIHNvOiAxNCxcbiAgc2k6IDE1LFxuICBkbGU6IDE2LFxuICBkYzE6IDE3LFxuICBkYzI6IDE4LFxuICBkYzM6IDE5LFxuICBkYzQ6IDIwLFxuICBuYWs6IDIxLFxuICBzeW46IDIyLFxuICBldGI6IDIzLFxuICBjYW46IDI0LFxuICBlbTogMjUsXG4gIHN1YjogMjYsXG4gIGVzYzogMjcsXG4gIGZzOiAyOCxcbiAgZ3M6IDI5LFxuICByczogMzAsXG4gIHVzOiAzMSxcbiAgc3BhY2U6IDMyLFxuICBleGNsYW1hdGlvbk1hcms6IDMzLCAvLyBgIWBcbiAgcXVvdGF0aW9uTWFyazogMzQsIC8vIGBcImBcbiAgbnVtYmVyU2lnbjogMzUsIC8vIGAjYFxuICBkb2xsYXJTaWduOiAzNiwgLy8gYCRgXG4gIHBlcmNlbnRTaWduOiAzNywgLy8gYCVgXG4gIGFtcGVyc2FuZDogMzgsIC8vIGAmYFxuICBhcG9zdHJvcGhlOiAzOSwgLy8gYCdgXG4gIGxlZnRQYXJlbnRoZXNpczogNDAsIC8vIGAoYFxuICByaWdodFBhcmVudGhlc2lzOiA0MSwgLy8gYClgXG4gIGFzdGVyaXNrOiA0MiwgLy8gYCpgXG4gIHBsdXNTaWduOiA0MywgLy8gYCtgXG4gIGNvbW1hOiA0NCwgLy8gYCxgXG4gIGRhc2g6IDQ1LCAvLyBgLWBcbiAgZG90OiA0NiwgLy8gYC5gXG4gIHNsYXNoOiA0NywgLy8gYC9gXG4gIGRpZ2l0MDogNDgsIC8vIGAwYFxuICBkaWdpdDE6IDQ5LCAvLyBgMWBcbiAgZGlnaXQyOiA1MCwgLy8gYDJgXG4gIGRpZ2l0MzogNTEsIC8vIGAzYFxuICBkaWdpdDQ6IDUyLCAvLyBgNGBcbiAgZGlnaXQ1OiA1MywgLy8gYDVgXG4gIGRpZ2l0NjogNTQsIC8vIGA2YFxuICBkaWdpdDc6IDU1LCAvLyBgN2BcbiAgZGlnaXQ4OiA1NiwgLy8gYDhgXG4gIGRpZ2l0OTogNTcsIC8vIGA5YFxuICBjb2xvbjogNTgsIC8vIGA6YFxuICBzZW1pY29sb246IDU5LCAvLyBgO2BcbiAgbGVzc1RoYW46IDYwLCAvLyBgPGBcbiAgZXF1YWxzVG86IDYxLCAvLyBgPWBcbiAgZ3JlYXRlclRoYW46IDYyLCAvLyBgPmBcbiAgcXVlc3Rpb25NYXJrOiA2MywgLy8gYD9gXG4gIGF0U2lnbjogNjQsIC8vIGBAYFxuICB1cHBlcmNhc2VBOiA2NSwgLy8gYEFgXG4gIHVwcGVyY2FzZUI6IDY2LCAvLyBgQmBcbiAgdXBwZXJjYXNlQzogNjcsIC8vIGBDYFxuICB1cHBlcmNhc2VEOiA2OCwgLy8gYERgXG4gIHVwcGVyY2FzZUU6IDY5LCAvLyBgRWBcbiAgdXBwZXJjYXNlRjogNzAsIC8vIGBGYFxuICB1cHBlcmNhc2VHOiA3MSwgLy8gYEdgXG4gIHVwcGVyY2FzZUg6IDcyLCAvLyBgSGBcbiAgdXBwZXJjYXNlSTogNzMsIC8vIGBJYFxuICB1cHBlcmNhc2VKOiA3NCwgLy8gYEpgXG4gIHVwcGVyY2FzZUs6IDc1LCAvLyBgS2BcbiAgdXBwZXJjYXNlTDogNzYsIC8vIGBMYFxuICB1cHBlcmNhc2VNOiA3NywgLy8gYE1gXG4gIHVwcGVyY2FzZU46IDc4LCAvLyBgTmBcbiAgdXBwZXJjYXNlTzogNzksIC8vIGBPYFxuICB1cHBlcmNhc2VQOiA4MCwgLy8gYFBgXG4gIHVwcGVyY2FzZVE6IDgxLCAvLyBgUWBcbiAgdXBwZXJjYXNlUjogODIsIC8vIGBSYFxuICB1cHBlcmNhc2VTOiA4MywgLy8gYFNgXG4gIHVwcGVyY2FzZVQ6IDg0LCAvLyBgVGBcbiAgdXBwZXJjYXNlVTogODUsIC8vIGBVYFxuICB1cHBlcmNhc2VWOiA4NiwgLy8gYFZgXG4gIHVwcGVyY2FzZVc6IDg3LCAvLyBgV2BcbiAgdXBwZXJjYXNlWDogODgsIC8vIGBYYFxuICB1cHBlcmNhc2VZOiA4OSwgLy8gYFlgXG4gIHVwcGVyY2FzZVo6IDkwLCAvLyBgWmBcbiAgbGVmdFNxdWFyZUJyYWNrZXQ6IDkxLCAvLyBgW2BcbiAgYmFja3NsYXNoOiA5MiwgLy8gYFxcYFxuICByaWdodFNxdWFyZUJyYWNrZXQ6IDkzLCAvLyBgXWBcbiAgY2FyZXQ6IDk0LCAvLyBgXmBcbiAgdW5kZXJzY29yZTogOTUsIC8vIGBfYFxuICBncmF2ZUFjY2VudDogOTYsIC8vIGBgIGAgYGBcbiAgbG93ZXJjYXNlQTogOTcsIC8vIGBhYFxuICBsb3dlcmNhc2VCOiA5OCwgLy8gYGJgXG4gIGxvd2VyY2FzZUM6IDk5LCAvLyBgY2BcbiAgbG93ZXJjYXNlRDogMTAwLCAvLyBgZGBcbiAgbG93ZXJjYXNlRTogMTAxLCAvLyBgZWBcbiAgbG93ZXJjYXNlRjogMTAyLCAvLyBgZmBcbiAgbG93ZXJjYXNlRzogMTAzLCAvLyBgZ2BcbiAgbG93ZXJjYXNlSDogMTA0LCAvLyBgaGBcbiAgbG93ZXJjYXNlSTogMTA1LCAvLyBgaWBcbiAgbG93ZXJjYXNlSjogMTA2LCAvLyBgamBcbiAgbG93ZXJjYXNlSzogMTA3LCAvLyBga2BcbiAgbG93ZXJjYXNlTDogMTA4LCAvLyBgbGBcbiAgbG93ZXJjYXNlTTogMTA5LCAvLyBgbWBcbiAgbG93ZXJjYXNlTjogMTEwLCAvLyBgbmBcbiAgbG93ZXJjYXNlTzogMTExLCAvLyBgb2BcbiAgbG93ZXJjYXNlUDogMTEyLCAvLyBgcGBcbiAgbG93ZXJjYXNlUTogMTEzLCAvLyBgcWBcbiAgbG93ZXJjYXNlUjogMTE0LCAvLyBgcmBcbiAgbG93ZXJjYXNlUzogMTE1LCAvLyBgc2BcbiAgbG93ZXJjYXNlVDogMTE2LCAvLyBgdGBcbiAgbG93ZXJjYXNlVTogMTE3LCAvLyBgdWBcbiAgbG93ZXJjYXNlVjogMTE4LCAvLyBgdmBcbiAgbG93ZXJjYXNlVzogMTE5LCAvLyBgd2BcbiAgbG93ZXJjYXNlWDogMTIwLCAvLyBgeGBcbiAgbG93ZXJjYXNlWTogMTIxLCAvLyBgeWBcbiAgbG93ZXJjYXNlWjogMTIyLCAvLyBgemBcbiAgbGVmdEN1cmx5QnJhY2U6IDEyMywgLy8gYHtgXG4gIHZlcnRpY2FsQmFyOiAxMjQsIC8vIGB8YFxuICByaWdodEN1cmx5QnJhY2U6IDEyNSwgLy8gYH1gXG4gIHRpbGRlOiAxMjYsIC8vIGB+YFxuICBkZWw6IDEyNyxcbiAgLy8gVW5pY29kZSBTcGVjaWFscyBibG9jay5cbiAgYnl0ZU9yZGVyTWFya2VyOiA2NTI3OSxcbiAgLy8gVW5pY29kZSBTcGVjaWFscyBibG9jay5cbiAgcmVwbGFjZW1lbnRDaGFyYWN0ZXI6IDY1NTMzIC8vIGDvv71gXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/codes.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/constants.js": +/*!****************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/constants.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"constants\": () => (/* binding */ constants)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Parsing markdown comes with a couple of constants, such as minimum or maximum\n * sizes of certain sequences.\n * Additionally, there are a couple symbols used inside micromark.\n * These are all defined here, but compiled away by scripts.\n */\nconst constants = /** @type {const} */ ({\n attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a`\n attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*`\n atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t.\n autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many.\n autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many.\n cdataOpeningString: 'CDATA[', // And preceded by ``\n htmlComment: 2, // Symbol for ``\n htmlInstruction: 3, // Symbol for ``\n htmlDeclaration: 4, // Symbol for ``\n htmlCdata: 5, // Symbol for ``\n htmlBasic: 6, // Symbol for ``\n htmlRawSizeMax: 8, // Length of `textarea`.\n linkResourceDestinationBalanceMax: 32, // See: , \n linkReferenceSizeMax: 999, // See: \n listItemValueSizeMax: 10, // See: \n numericBaseDecimal: 10,\n numericBaseHexadecimal: 0x10,\n tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark.\n thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed.\n v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyw2QkFBNkIsT0FBTztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JELHlEQUF5RDtBQUN6RCwyRUFBMkU7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanM/NDMwZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgbW9kdWxlIGlzIGNvbXBpbGVkIGF3YXkhXG4gKlxuICogUGFyc2luZyBtYXJrZG93biBjb21lcyB3aXRoIGEgY291cGxlIG9mIGNvbnN0YW50cywgc3VjaCBhcyBtaW5pbXVtIG9yIG1heGltdW1cbiAqIHNpemVzIG9mIGNlcnRhaW4gc2VxdWVuY2VzLlxuICogQWRkaXRpb25hbGx5LCB0aGVyZSBhcmUgYSBjb3VwbGUgc3ltYm9scyB1c2VkIGluc2lkZSBtaWNyb21hcmsuXG4gKiBUaGVzZSBhcmUgYWxsIGRlZmluZWQgaGVyZSwgYnV0IGNvbXBpbGVkIGF3YXkgYnkgc2NyaXB0cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnN0YW50cyA9IC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gIGF0dGVudGlvblNpZGVCZWZvcmU6IDEsIC8vIFN5bWJvbCB0byBtYXJrIGFuIGF0dGVudGlvbiBzZXF1ZW5jZSBhcyBiZWZvcmUgY29udGVudDogYCphYFxuICBhdHRlbnRpb25TaWRlQWZ0ZXI6IDIsIC8vIFN5bWJvbCB0byBtYXJrIGFuIGF0dGVudGlvbiBzZXF1ZW5jZSBhcyBhZnRlciBjb250ZW50OiBgYSpgXG4gIGF0eEhlYWRpbmdPcGVuaW5nRmVuY2VTaXplTWF4OiA2LCAvLyA2IG51bWJlciBzaWducyBpcyBmaW5lLCA3IGlzbuKAmXQuXG4gIGF1dG9saW5rRG9tYWluU2l6ZU1heDogNjMsIC8vIDYzIGNoYXJhY3RlcnMgaXMgZmluZSwgNjQgaXMgdG9vIG1hbnkuXG4gIGF1dG9saW5rU2NoZW1lU2l6ZU1heDogMzIsIC8vIDMyIGNoYXJhY3RlcnMgaXMgZmluZSwgMzMgaXMgdG9vIG1hbnkuXG4gIGNkYXRhT3BlbmluZ1N0cmluZzogJ0NEQVRBWycsIC8vIEFuZCBwcmVjZWRlZCBieSBgPCFbYC5cbiAgY2hhcmFjdGVyR3JvdXBXaGl0ZXNwYWNlOiAxLCAvLyBTeW1ib2wgdXNlZCB0byBpbmRpY2F0ZSBhIGNoYXJhY3RlciBpcyB3aGl0ZXNwYWNlXG4gIGNoYXJhY3Rlckdyb3VwUHVuY3R1YXRpb246IDIsIC8vIFN5bWJvbCB1c2VkIHRvIGluZGljYXRlIGEgY2hhcmFjdGVyIGlzIHB1bmN0dWF0aW9uXG4gIGNoYXJhY3RlclJlZmVyZW5jZURlY2ltYWxTaXplTWF4OiA3LCAvLyBgJiM5OTk5OTk5O2AuXG4gIGNoYXJhY3RlclJlZmVyZW5jZUhleGFkZWNpbWFsU2l6ZU1heDogNiwgLy8gYCYjeGZmOTk5OTtgLlxuICBjaGFyYWN0ZXJSZWZlcmVuY2VOYW1lZFNpemVNYXg6IDMxLCAvLyBgJkNvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7YC5cbiAgY29kZUZlbmNlZFNlcXVlbmNlU2l6ZU1pbjogMywgLy8gQXQgbGVhc3QgMyB0aWNrcyBvciB0aWxkZXMgYXJlIG5lZWRlZC5cbiAgY29udGVudFR5cGVEb2N1bWVudDogJ2RvY3VtZW50JyxcbiAgY29udGVudFR5cGVGbG93OiAnZmxvdycsXG4gIGNvbnRlbnRUeXBlQ29udGVudDogJ2NvbnRlbnQnLFxuICBjb250ZW50VHlwZVN0cmluZzogJ3N0cmluZycsXG4gIGNvbnRlbnRUeXBlVGV4dDogJ3RleHQnLFxuICBoYXJkQnJlYWtQcmVmaXhTaXplTWluOiAyLCAvLyBBdCBsZWFzdCAyIHRyYWlsaW5nIHNwYWNlcyBhcmUgbmVlZGVkLlxuICBodG1sUmF3OiAxLCAvLyBTeW1ib2wgZm9yIGA8c2NyaXB0PmBcbiAgaHRtbENvbW1lbnQ6IDIsIC8vIFN5bWJvbCBmb3IgYDwhLS0tLT5gXG4gIGh0bWxJbnN0cnVjdGlvbjogMywgLy8gU3ltYm9sIGZvciBgPD9waHA/PmBcbiAgaHRtbERlY2xhcmF0aW9uOiA0LCAvLyBTeW1ib2wgZm9yIGA8IWRvY3R5cGU+YFxuICBodG1sQ2RhdGE6IDUsIC8vIFN5bWJvbCBmb3IgYDwhW0NEQVRBW11dPmBcbiAgaHRtbEJhc2ljOiA2LCAvLyBTeW1ib2wgZm9yIGA8ZGl2YFxuICBodG1sQ29tcGxldGU6IDcsIC8vIFN5bWJvbCBmb3IgYDx4PmBcbiAgaHRtbFJhd1NpemVNYXg6IDgsIC8vIExlbmd0aCBvZiBgdGV4dGFyZWFgLlxuICBsaW5rUmVzb3VyY2VEZXN0aW5hdGlvbkJhbGFuY2VNYXg6IDMyLCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jbGluay1kZXN0aW5hdGlvbj4sIDxodHRwczovL2dpdGh1Yi5jb20vcmVtYXJranMvcmVhY3QtbWFya2Rvd24vaXNzdWVzLzY1OCNpc3N1ZWNvbW1lbnQtOTg0MzQ1NTc3PlxuICBsaW5rUmVmZXJlbmNlU2l6ZU1heDogOTk5LCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jbGluay1sYWJlbD5cbiAgbGlzdEl0ZW1WYWx1ZVNpemVNYXg6IDEwLCAvLyBTZWU6IDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jb3JkZXJlZC1saXN0LW1hcmtlcj5cbiAgbnVtZXJpY0Jhc2VEZWNpbWFsOiAxMCxcbiAgbnVtZXJpY0Jhc2VIZXhhZGVjaW1hbDogMHgxMCxcbiAgdGFiU2l6ZTogNCwgLy8gVGFicyBoYXZlIGEgaGFyZC1jb2RlZCBzaXplIG9mIDQsIHBlciBDb21tb25NYXJrLlxuICB0aGVtYXRpY0JyZWFrTWFya2VyQ291bnRNaW46IDMsIC8vIEF0IGxlYXN0IDMgYXN0ZXJpc2tzLCBkYXNoZXMsIG9yIHVuZGVyc2NvcmVzIGFyZSBuZWVkZWQuXG4gIHY4TWF4U2FmZUNodW5rU2l6ZTogMTAwMDAgLy8gVjggKGFuZCBwb3RlbnRpYWxseSBvdGhlcnMpIGhhdmUgcHJvYmxlbXMgaW5qZWN0aW5nIGdpYW50IGFycmF5cyBpbnRvIG90aGVyIGFycmF5cywgaGVuY2Ugd2Ugb3BlcmF0ZSBpbiBjaHVua3MuXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/constants.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/types.js": +/*!************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/types.js ***! + \************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"types\": () => (/* binding */ types)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * Here is the list of all types of tokens exposed by micromark, with a short\n * explanation of what they include and where they are found.\n * In picking names, generally, the rule is to be as explicit as possible\n * instead of reusing names.\n * For example, there is a `definitionDestination` and a `resourceDestination`,\n * instead of one shared name.\n */\n\n// Note: when changing the next record, you must also change `TokenTypeMap`\n// in `micromark-util-types/index.d.ts`.\nconst types = /** @type {const} */ ({\n // Generic type for data, such as in a title, a destination, etc.\n data: 'data',\n\n // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).\n // Such as, between a fenced code fence and an info string.\n whitespace: 'whitespace',\n\n // Generic type for line endings (line feed, carriage return, carriage return +\n // line feed).\n lineEnding: 'lineEnding',\n\n // A line ending, but ending a blank line.\n lineEndingBlank: 'lineEndingBlank',\n\n // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a\n // line.\n linePrefix: 'linePrefix',\n\n // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a\n // line.\n lineSuffix: 'lineSuffix',\n\n // Whole ATX heading:\n //\n // ```markdown\n // #\n // ## Alpha\n // ### Bravo ###\n // ```\n //\n // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.\n atxHeading: 'atxHeading',\n\n // Sequence of number signs in an ATX heading (`###`).\n atxHeadingSequence: 'atxHeadingSequence',\n\n // Content in an ATX heading (`alpha`).\n // Includes text.\n atxHeadingText: 'atxHeadingText',\n\n // Whole autolink (`` or ``)\n // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.\n autolink: 'autolink',\n\n // Email autolink w/o markers (`admin@example.com`)\n autolinkEmail: 'autolinkEmail',\n\n // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).\n autolinkMarker: 'autolinkMarker',\n\n // Protocol autolink w/o markers (`https://example.com`)\n autolinkProtocol: 'autolinkProtocol',\n\n // A whole character escape (`\\-`).\n // Includes `escapeMarker` and `characterEscapeValue`.\n characterEscape: 'characterEscape',\n\n // The escaped character (`-`).\n characterEscapeValue: 'characterEscapeValue',\n\n // A whole character reference (`&`, `≠`, or `𝌆`).\n // Includes `characterReferenceMarker`, an optional\n // `characterReferenceMarkerNumeric`, in which case an optional\n // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.\n characterReference: 'characterReference',\n\n // The start or end marker (`&` or `;`).\n characterReferenceMarker: 'characterReferenceMarker',\n\n // Mark reference as numeric (`#`).\n characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',\n\n // Mark reference as numeric (`x` or `X`).\n characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',\n\n // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).\n characterReferenceValue: 'characterReferenceValue',\n\n // Whole fenced code:\n //\n // ````markdown\n // ```js\n // alert(1)\n // ```\n // ````\n codeFenced: 'codeFenced',\n\n // A fenced code fence, including whitespace, sequence, info, and meta\n // (` ```js `).\n codeFencedFence: 'codeFencedFence',\n\n // Sequence of grave accent or tilde characters (` ``` `) in a fence.\n codeFencedFenceSequence: 'codeFencedFenceSequence',\n\n // Info word (`js`) in a fence.\n // Includes string.\n codeFencedFenceInfo: 'codeFencedFenceInfo',\n\n // Meta words (`highlight=\"1\"`) in a fence.\n // Includes string.\n codeFencedFenceMeta: 'codeFencedFenceMeta',\n\n // A line of code.\n codeFlowValue: 'codeFlowValue',\n\n // Whole indented code:\n //\n // ```markdown\n // alert(1)\n // ```\n //\n // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.\n codeIndented: 'codeIndented',\n\n // A text code (``` `alpha` ```).\n // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include\n // `codeTextPadding`.\n codeText: 'codeText',\n\n codeTextData: 'codeTextData',\n\n // A space or line ending right after or before a tick.\n codeTextPadding: 'codeTextPadding',\n\n // A text code fence (` `` `).\n codeTextSequence: 'codeTextSequence',\n\n // Whole content:\n //\n // ```markdown\n // [a]: b\n // c\n // =\n // d\n // ```\n //\n // Includes `paragraph` and `definition`.\n content: 'content',\n // Whole definition:\n //\n // ```markdown\n // [micromark]: https://github.com/micromark/micromark\n // ```\n //\n // Includes `definitionLabel`, `definitionMarker`, `whitespace`,\n // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.\n definition: 'definition',\n\n // Destination of a definition (`https://github.com/micromark/micromark` or\n // ``).\n // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.\n definitionDestination: 'definitionDestination',\n\n // Enclosed destination of a definition\n // (``).\n // Includes `definitionDestinationLiteralMarker` and optionally\n // `definitionDestinationString`.\n definitionDestinationLiteral: 'definitionDestinationLiteral',\n\n // Markers of an enclosed definition destination (`<` or `>`).\n definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',\n\n // Unenclosed destination of a definition\n // (`https://github.com/micromark/micromark`).\n // Includes `definitionDestinationString`.\n definitionDestinationRaw: 'definitionDestinationRaw',\n\n // Text in an destination (`https://github.com/micromark/micromark`).\n // Includes string.\n definitionDestinationString: 'definitionDestinationString',\n\n // Label of a definition (`[micromark]`).\n // Includes `definitionLabelMarker` and `definitionLabelString`.\n definitionLabel: 'definitionLabel',\n\n // Markers of a definition label (`[` or `]`).\n definitionLabelMarker: 'definitionLabelMarker',\n\n // Value of a definition label (`micromark`).\n // Includes string.\n definitionLabelString: 'definitionLabelString',\n\n // Marker between a label and a destination (`:`).\n definitionMarker: 'definitionMarker',\n\n // Title of a definition (`\"x\"`, `'y'`, or `(z)`).\n // Includes `definitionTitleMarker` and optionally `definitionTitleString`.\n definitionTitle: 'definitionTitle',\n\n // Marker around a title of a definition (`\"`, `'`, `(`, or `)`).\n definitionTitleMarker: 'definitionTitleMarker',\n\n // Data without markers in a title (`z`).\n // Includes string.\n definitionTitleString: 'definitionTitleString',\n\n // Emphasis (`*alpha*`).\n // Includes `emphasisSequence` and `emphasisText`.\n emphasis: 'emphasis',\n\n // Sequence of emphasis markers (`*` or `_`).\n emphasisSequence: 'emphasisSequence',\n\n // Emphasis text (`alpha`).\n // Includes text.\n emphasisText: 'emphasisText',\n\n // The character escape marker (`\\`).\n escapeMarker: 'escapeMarker',\n\n // A hard break created with a backslash (`\\\\n`).\n // Note: does not include the line ending.\n hardBreakEscape: 'hardBreakEscape',\n\n // A hard break created with trailing spaces (` \\n`).\n // Does not include the line ending.\n hardBreakTrailing: 'hardBreakTrailing',\n\n // Flow HTML:\n //\n // ```markdown\n // b`).\n // Includes `lineEnding`, `htmlTextData`.\n htmlText: 'htmlText',\n\n htmlTextData: 'htmlTextData',\n\n // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or\n // `![alpha]`).\n // Includes `label` and an optional `resource` or `reference`.\n image: 'image',\n\n // Whole link label (`[*alpha*]`).\n // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.\n label: 'label',\n\n // Text in an label (`*alpha*`).\n // Includes text.\n labelText: 'labelText',\n\n // Start a link label (`[`).\n // Includes a `labelMarker`.\n labelLink: 'labelLink',\n\n // Start an image label (`![`).\n // Includes `labelImageMarker` and `labelMarker`.\n labelImage: 'labelImage',\n\n // Marker of a label (`[` or `]`).\n labelMarker: 'labelMarker',\n\n // Marker to start an image (`!`).\n labelImageMarker: 'labelImageMarker',\n\n // End a label (`]`).\n // Includes `labelMarker`.\n labelEnd: 'labelEnd',\n\n // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).\n // Includes `label` and an optional `resource` or `reference`.\n link: 'link',\n\n // Whole paragraph:\n //\n // ```markdown\n // alpha\n // bravo.\n // ```\n //\n // Includes text.\n paragraph: 'paragraph',\n\n // A reference (`[alpha]` or `[]`).\n // Includes `referenceMarker` and an optional `referenceString`.\n reference: 'reference',\n\n // A reference marker (`[` or `]`).\n referenceMarker: 'referenceMarker',\n\n // Reference text (`alpha`).\n // Includes string.\n referenceString: 'referenceString',\n\n // A resource (`(https://example.com \"alpha\")`).\n // Includes `resourceMarker`, an optional `resourceDestination` with an optional\n // `whitespace` and `resourceTitle`.\n resource: 'resource',\n\n // A resource destination (`https://example.com`).\n // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.\n resourceDestination: 'resourceDestination',\n\n // A literal resource destination (``).\n // Includes `resourceDestinationLiteralMarker` and optionally\n // `resourceDestinationString`.\n resourceDestinationLiteral: 'resourceDestinationLiteral',\n\n // A resource destination marker (`<` or `>`).\n resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',\n\n // A raw resource destination (`https://example.com`).\n // Includes `resourceDestinationString`.\n resourceDestinationRaw: 'resourceDestinationRaw',\n\n // Resource destination text (`https://example.com`).\n // Includes string.\n resourceDestinationString: 'resourceDestinationString',\n\n // A resource marker (`(` or `)`).\n resourceMarker: 'resourceMarker',\n\n // A resource title (`\"alpha\"`, `'alpha'`, or `(alpha)`).\n // Includes `resourceTitleMarker` and optionally `resourceTitleString`.\n resourceTitle: 'resourceTitle',\n\n // A resource title marker (`\"`, `'`, `(`, or `)`).\n resourceTitleMarker: 'resourceTitleMarker',\n\n // Resource destination title (`alpha`).\n // Includes string.\n resourceTitleString: 'resourceTitleString',\n\n // Whole setext heading:\n //\n // ```markdown\n // alpha\n // bravo\n // =====\n // ```\n //\n // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and\n // `setextHeadingLine`.\n setextHeading: 'setextHeading',\n\n // Content in a setext heading (`alpha\\nbravo`).\n // Includes text.\n setextHeadingText: 'setextHeadingText',\n\n // Underline in a setext heading, including whitespace suffix (`==`).\n // Includes `setextHeadingLineSequence`.\n setextHeadingLine: 'setextHeadingLine',\n\n // Sequence of equals or dash characters in underline in a setext heading (`-`).\n setextHeadingLineSequence: 'setextHeadingLineSequence',\n\n // Strong (`**alpha**`).\n // Includes `strongSequence` and `strongText`.\n strong: 'strong',\n\n // Sequence of strong markers (`**` or `__`).\n strongSequence: 'strongSequence',\n\n // Strong text (`alpha`).\n // Includes text.\n strongText: 'strongText',\n\n // Whole thematic break:\n //\n // ```markdown\n // * * *\n // ```\n //\n // Includes `thematicBreakSequence` and `whitespace`.\n thematicBreak: 'thematicBreak',\n\n // A sequence of one or more thematic break markers (`***`).\n thematicBreakSequence: 'thematicBreakSequence',\n\n // Whole block quote:\n //\n // ```markdown\n // > a\n // >\n // > b\n // ```\n //\n // Includes `blockQuotePrefix` and flow.\n blockQuote: 'blockQuote',\n // The `>` or `> ` of a block quote.\n blockQuotePrefix: 'blockQuotePrefix',\n // The `>` of a block quote prefix.\n blockQuoteMarker: 'blockQuoteMarker',\n // The optional ` ` of a block quote prefix.\n blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',\n\n // Whole unordered list:\n //\n // ```markdown\n // - a\n // b\n // ```\n //\n // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further\n // lines.\n listOrdered: 'listOrdered',\n\n // Whole ordered list:\n //\n // ```markdown\n // 1. a\n // b\n // ```\n //\n // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further\n // lines.\n listUnordered: 'listUnordered',\n\n // The indent of further list item lines.\n listItemIndent: 'listItemIndent',\n\n // A marker, as in, `*`, `+`, `-`, `.`, or `)`.\n listItemMarker: 'listItemMarker',\n\n // The thing that starts a list item, such as `1. `.\n // Includes `listItemValue` if ordered, `listItemMarker`, and\n // `listItemPrefixWhitespace` (unless followed by a line ending).\n listItemPrefix: 'listItemPrefix',\n\n // The whitespace after a marker.\n listItemPrefixWhitespace: 'listItemPrefixWhitespace',\n\n // The numerical value of an ordered item.\n listItemValue: 'listItemValue',\n\n // Internal types used for subtokenizers, compiled away\n chunkDocument: 'chunkDocument',\n chunkContent: 'chunkContent',\n chunkFlow: 'chunkFlow',\n chunkText: 'chunkText',\n chunkString: 'chunkString'\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPLHlCQUF5QixPQUFPO0FBQ3ZDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdDQUF3QyxXQUFXLGdCQUFnQjtBQUNuRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcz8wZGVkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgaXMgY29tcGlsZWQgYXdheSFcbiAqXG4gKiBIZXJlIGlzIHRoZSBsaXN0IG9mIGFsbCB0eXBlcyBvZiB0b2tlbnMgZXhwb3NlZCBieSBtaWNyb21hcmssIHdpdGggYSBzaG9ydFxuICogZXhwbGFuYXRpb24gb2Ygd2hhdCB0aGV5IGluY2x1ZGUgYW5kIHdoZXJlIHRoZXkgYXJlIGZvdW5kLlxuICogSW4gcGlja2luZyBuYW1lcywgZ2VuZXJhbGx5LCB0aGUgcnVsZSBpcyB0byBiZSBhcyBleHBsaWNpdCBhcyBwb3NzaWJsZVxuICogaW5zdGVhZCBvZiByZXVzaW5nIG5hbWVzLlxuICogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIGEgYGRlZmluaXRpb25EZXN0aW5hdGlvbmAgYW5kIGEgYHJlc291cmNlRGVzdGluYXRpb25gLFxuICogaW5zdGVhZCBvZiBvbmUgc2hhcmVkIG5hbWUuXG4gKi9cblxuLy8gTm90ZTogd2hlbiBjaGFuZ2luZyB0aGUgbmV4dCByZWNvcmQsIHlvdSBtdXN0IGFsc28gY2hhbmdlIGBUb2tlblR5cGVNYXBgXG4vLyBpbiBgbWljcm9tYXJrLXV0aWwtdHlwZXMvaW5kZXguZC50c2AuXG5leHBvcnQgY29uc3QgdHlwZXMgPSAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAvLyBHZW5lcmljIHR5cGUgZm9yIGRhdGEsIHN1Y2ggYXMgaW4gYSB0aXRsZSwgYSBkZXN0aW5hdGlvbiwgZXRjLlxuICBkYXRhOiAnZGF0YScsXG5cbiAgLy8gR2VuZXJpYyB0eXBlIGZvciBzeW50YWN0aWMgd2hpdGVzcGFjZSAodGFicywgdmlydHVhbCBzcGFjZXMsIHNwYWNlcykuXG4gIC8vIFN1Y2ggYXMsIGJldHdlZW4gYSBmZW5jZWQgY29kZSBmZW5jZSBhbmQgYW4gaW5mbyBzdHJpbmcuXG4gIHdoaXRlc3BhY2U6ICd3aGl0ZXNwYWNlJyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIGxpbmUgZW5kaW5ncyAobGluZSBmZWVkLCBjYXJyaWFnZSByZXR1cm4sIGNhcnJpYWdlIHJldHVybiArXG4gIC8vIGxpbmUgZmVlZCkuXG4gIGxpbmVFbmRpbmc6ICdsaW5lRW5kaW5nJyxcblxuICAvLyBBIGxpbmUgZW5kaW5nLCBidXQgZW5kaW5nIGEgYmxhbmsgbGluZS5cbiAgbGluZUVuZGluZ0JsYW5rOiAnbGluZUVuZGluZ0JsYW5rJyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIHdoaXRlc3BhY2UgKHRhYnMsIHZpcnR1YWwgc3BhY2VzLCBzcGFjZXMpIGF0IHRoZSBzdGFydCBvZiBhXG4gIC8vIGxpbmUuXG4gIGxpbmVQcmVmaXg6ICdsaW5lUHJlZml4JyxcblxuICAvLyBHZW5lcmljIHR5cGUgZm9yIHdoaXRlc3BhY2UgKHRhYnMsIHZpcnR1YWwgc3BhY2VzLCBzcGFjZXMpIGF0IHRoZSBlbmQgb2YgYVxuICAvLyBsaW5lLlxuICBsaW5lU3VmZml4OiAnbGluZVN1ZmZpeCcsXG5cbiAgLy8gV2hvbGUgQVRYIGhlYWRpbmc6XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vICNcbiAgLy8gIyMgQWxwaGFcbiAgLy8gIyMjIEJyYXZvICMjI1xuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGF0eEhlYWRpbmdTZXF1ZW5jZWAsIGB3aGl0ZXNwYWNlYCwgYGF0eEhlYWRpbmdUZXh0YC5cbiAgYXR4SGVhZGluZzogJ2F0eEhlYWRpbmcnLFxuXG4gIC8vIFNlcXVlbmNlIG9mIG51bWJlciBzaWducyBpbiBhbiBBVFggaGVhZGluZyAoYCMjI2ApLlxuICBhdHhIZWFkaW5nU2VxdWVuY2U6ICdhdHhIZWFkaW5nU2VxdWVuY2UnLFxuXG4gIC8vIENvbnRlbnQgaW4gYW4gQVRYIGhlYWRpbmcgKGBhbHBoYWApLlxuICAvLyBJbmNsdWRlcyB0ZXh0LlxuICBhdHhIZWFkaW5nVGV4dDogJ2F0eEhlYWRpbmdUZXh0JyxcblxuICAvLyBXaG9sZSBhdXRvbGluayAoYDxodHRwczovL2V4YW1wbGUuY29tPmAgb3IgYDxhZG1pbkBleGFtcGxlLmNvbT5gKVxuICAvLyBJbmNsdWRlcyBgYXV0b2xpbmtNYXJrZXJgIGFuZCBgYXV0b2xpbmtQcm90b2NvbGAgb3IgYGF1dG9saW5rRW1haWxgLlxuICBhdXRvbGluazogJ2F1dG9saW5rJyxcblxuICAvLyBFbWFpbCBhdXRvbGluayB3L28gbWFya2VycyAoYGFkbWluQGV4YW1wbGUuY29tYClcbiAgYXV0b2xpbmtFbWFpbDogJ2F1dG9saW5rRW1haWwnLFxuXG4gIC8vIE1hcmtlciBhcm91bmQgYW4gYGF1dG9saW5rUHJvdG9jb2xgIG9yIGBhdXRvbGlua0VtYWlsYCAoYDxgIG9yIGA+YCkuXG4gIGF1dG9saW5rTWFya2VyOiAnYXV0b2xpbmtNYXJrZXInLFxuXG4gIC8vIFByb3RvY29sIGF1dG9saW5rIHcvbyBtYXJrZXJzIChgaHR0cHM6Ly9leGFtcGxlLmNvbWApXG4gIGF1dG9saW5rUHJvdG9jb2w6ICdhdXRvbGlua1Byb3RvY29sJyxcblxuICAvLyBBIHdob2xlIGNoYXJhY3RlciBlc2NhcGUgKGBcXC1gKS5cbiAgLy8gSW5jbHVkZXMgYGVzY2FwZU1hcmtlcmAgYW5kIGBjaGFyYWN0ZXJFc2NhcGVWYWx1ZWAuXG4gIGNoYXJhY3RlckVzY2FwZTogJ2NoYXJhY3RlckVzY2FwZScsXG5cbiAgLy8gVGhlIGVzY2FwZWQgY2hhcmFjdGVyIChgLWApLlxuICBjaGFyYWN0ZXJFc2NhcGVWYWx1ZTogJ2NoYXJhY3RlckVzY2FwZVZhbHVlJyxcblxuICAvLyBBIHdob2xlIGNoYXJhY3RlciByZWZlcmVuY2UgKGAmYW1wO2AsIGAmIzg4MDA7YCwgb3IgYCYjeDFEMzA2O2ApLlxuICAvLyBJbmNsdWRlcyBgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyYCwgYW4gb3B0aW9uYWxcbiAgLy8gYGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWNgLCBpbiB3aGljaCBjYXNlIGFuIG9wdGlvbmFsXG4gIC8vIGBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbGAsIGFuZCBhIGBjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZWAuXG4gIGNoYXJhY3RlclJlZmVyZW5jZTogJ2NoYXJhY3RlclJlZmVyZW5jZScsXG5cbiAgLy8gVGhlIHN0YXJ0IG9yIGVuZCBtYXJrZXIgKGAmYCBvciBgO2ApLlxuICBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXI6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInLFxuXG4gIC8vIE1hcmsgcmVmZXJlbmNlIGFzIG51bWVyaWMgKGAjYCkuXG4gIGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWM6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljJyxcblxuICAvLyBNYXJrIHJlZmVyZW5jZSBhcyBudW1lcmljIChgeGAgb3IgYFhgKS5cbiAgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCcsXG5cbiAgLy8gVmFsdWUgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZSB3L28gbWFya2VycyAoYGFtcGAsIGA4ODAwYCwgb3IgYDFEMzA2YCkuXG4gIGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOiAnY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnLFxuXG4gIC8vIFdob2xlIGZlbmNlZCBjb2RlOlxuICAvL1xuICAvLyBgYGBgbWFya2Rvd25cbiAgLy8gYGBganNcbiAgLy8gYWxlcnQoMSlcbiAgLy8gYGBgXG4gIC8vIGBgYGBcbiAgY29kZUZlbmNlZDogJ2NvZGVGZW5jZWQnLFxuXG4gIC8vIEEgZmVuY2VkIGNvZGUgZmVuY2UsIGluY2x1ZGluZyB3aGl0ZXNwYWNlLCBzZXF1ZW5jZSwgaW5mbywgYW5kIG1ldGFcbiAgLy8gKGAgYGBganMgYCkuXG4gIGNvZGVGZW5jZWRGZW5jZTogJ2NvZGVGZW5jZWRGZW5jZScsXG5cbiAgLy8gU2VxdWVuY2Ugb2YgZ3JhdmUgYWNjZW50IG9yIHRpbGRlIGNoYXJhY3RlcnMgKGAgYGBgIGApIGluIGEgZmVuY2UuXG4gIGNvZGVGZW5jZWRGZW5jZVNlcXVlbmNlOiAnY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnLFxuXG4gIC8vIEluZm8gd29yZCAoYGpzYCkgaW4gYSBmZW5jZS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICBjb2RlRmVuY2VkRmVuY2VJbmZvOiAnY29kZUZlbmNlZEZlbmNlSW5mbycsXG5cbiAgLy8gTWV0YSB3b3JkcyAoYGhpZ2hsaWdodD1cIjFcImApIGluIGEgZmVuY2UuXG4gIC8vIEluY2x1ZGVzIHN0cmluZy5cbiAgY29kZUZlbmNlZEZlbmNlTWV0YTogJ2NvZGVGZW5jZWRGZW5jZU1ldGEnLFxuXG4gIC8vIEEgbGluZSBvZiBjb2RlLlxuICBjb2RlRmxvd1ZhbHVlOiAnY29kZUZsb3dWYWx1ZScsXG5cbiAgLy8gV2hvbGUgaW5kZW50ZWQgY29kZTpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gICAgIGFsZXJ0KDEpXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgbGluZUVuZGluZ2AsIGBsaW5lUHJlZml4YCwgYW5kIGBjb2RlRmxvd1ZhbHVlYC5cbiAgY29kZUluZGVudGVkOiAnY29kZUluZGVudGVkJyxcblxuICAvLyBBIHRleHQgY29kZSAoYGBgIGBhbHBoYWAgYGBgKS5cbiAgLy8gSW5jbHVkZXMgYGNvZGVUZXh0U2VxdWVuY2VgLCBgY29kZVRleHREYXRhYCwgYGxpbmVFbmRpbmdgLCBhbmQgY2FuIGluY2x1ZGVcbiAgLy8gYGNvZGVUZXh0UGFkZGluZ2AuXG4gIGNvZGVUZXh0OiAnY29kZVRleHQnLFxuXG4gIGNvZGVUZXh0RGF0YTogJ2NvZGVUZXh0RGF0YScsXG5cbiAgLy8gQSBzcGFjZSBvciBsaW5lIGVuZGluZyByaWdodCBhZnRlciBvciBiZWZvcmUgYSB0aWNrLlxuICBjb2RlVGV4dFBhZGRpbmc6ICdjb2RlVGV4dFBhZGRpbmcnLFxuXG4gIC8vIEEgdGV4dCBjb2RlIGZlbmNlIChgIGBgIGApLlxuICBjb2RlVGV4dFNlcXVlbmNlOiAnY29kZVRleHRTZXF1ZW5jZScsXG5cbiAgLy8gV2hvbGUgY29udGVudDpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gW2FdOiBiXG4gIC8vIGNcbiAgLy8gPVxuICAvLyBkXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgcGFyYWdyYXBoYCBhbmQgYGRlZmluaXRpb25gLlxuICBjb250ZW50OiAnY29udGVudCcsXG4gIC8vIFdob2xlIGRlZmluaXRpb246XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vIFttaWNyb21hcmtdOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXJrL21pY3JvbWFya1xuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGRlZmluaXRpb25MYWJlbGAsIGBkZWZpbml0aW9uTWFya2VyYCwgYHdoaXRlc3BhY2VgLFxuICAvLyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uYCwgYW5kIG9wdGlvbmFsbHkgYGxpbmVFbmRpbmdgIGFuZCBgZGVmaW5pdGlvblRpdGxlYC5cbiAgZGVmaW5pdGlvbjogJ2RlZmluaXRpb24nLFxuXG4gIC8vIERlc3RpbmF0aW9uIG9mIGEgZGVmaW5pdGlvbiAoYGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrYCBvclxuICAvLyBgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrPmApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbGAgb3IgYGRlZmluaXRpb25EZXN0aW5hdGlvblJhd2AuXG4gIGRlZmluaXRpb25EZXN0aW5hdGlvbjogJ2RlZmluaXRpb25EZXN0aW5hdGlvbicsXG5cbiAgLy8gRW5jbG9zZWQgZGVzdGluYXRpb24gb2YgYSBkZWZpbml0aW9uXG4gIC8vIChgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hcmsvbWljcm9tYXJrPmApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcmAgYW5kIG9wdGlvbmFsbHlcbiAgLy8gYGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZ2AuXG4gIGRlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWw6ICdkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsJyxcblxuICAvLyBNYXJrZXJzIG9mIGFuIGVuY2xvc2VkIGRlZmluaXRpb24gZGVzdGluYXRpb24gKGA8YCBvciBgPmApLlxuICBkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyOiAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcicsXG5cbiAgLy8gVW5lbmNsb3NlZCBkZXN0aW5hdGlvbiBvZiBhIGRlZmluaXRpb25cbiAgLy8gKGBodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXJrL21pY3JvbWFya2ApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nYC5cbiAgZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3OiAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uUmF3JyxcblxuICAvLyBUZXh0IGluIGFuIGRlc3RpbmF0aW9uIChgaHR0cHM6Ly9naXRodWIuY29tL21pY3JvbWFyay9taWNyb21hcmtgKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICBkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6ICdkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmcnLFxuXG4gIC8vIExhYmVsIG9mIGEgZGVmaW5pdGlvbiAoYFttaWNyb21hcmtdYCkuXG4gIC8vIEluY2x1ZGVzIGBkZWZpbml0aW9uTGFiZWxNYXJrZXJgIGFuZCBgZGVmaW5pdGlvbkxhYmVsU3RyaW5nYC5cbiAgZGVmaW5pdGlvbkxhYmVsOiAnZGVmaW5pdGlvbkxhYmVsJyxcblxuICAvLyBNYXJrZXJzIG9mIGEgZGVmaW5pdGlvbiBsYWJlbCAoYFtgIG9yIGBdYCkuXG4gIGRlZmluaXRpb25MYWJlbE1hcmtlcjogJ2RlZmluaXRpb25MYWJlbE1hcmtlcicsXG5cbiAgLy8gVmFsdWUgb2YgYSBkZWZpbml0aW9uIGxhYmVsIChgbWljcm9tYXJrYCkuXG4gIC8vIEluY2x1ZGVzIHN0cmluZy5cbiAgZGVmaW5pdGlvbkxhYmVsU3RyaW5nOiAnZGVmaW5pdGlvbkxhYmVsU3RyaW5nJyxcblxuICAvLyBNYXJrZXIgYmV0d2VlbiBhIGxhYmVsIGFuZCBhIGRlc3RpbmF0aW9uIChgOmApLlxuICBkZWZpbml0aW9uTWFya2VyOiAnZGVmaW5pdGlvbk1hcmtlcicsXG5cbiAgLy8gVGl0bGUgb2YgYSBkZWZpbml0aW9uIChgXCJ4XCJgLCBgJ3knYCwgb3IgYCh6KWApLlxuICAvLyBJbmNsdWRlcyBgZGVmaW5pdGlvblRpdGxlTWFya2VyYCBhbmQgb3B0aW9uYWxseSBgZGVmaW5pdGlvblRpdGxlU3RyaW5nYC5cbiAgZGVmaW5pdGlvblRpdGxlOiAnZGVmaW5pdGlvblRpdGxlJyxcblxuICAvLyBNYXJrZXIgYXJvdW5kIGEgdGl0bGUgb2YgYSBkZWZpbml0aW9uIChgXCJgLCBgJ2AsIGAoYCwgb3IgYClgKS5cbiAgZGVmaW5pdGlvblRpdGxlTWFya2VyOiAnZGVmaW5pdGlvblRpdGxlTWFya2VyJyxcblxuICAvLyBEYXRhIHdpdGhvdXQgbWFya2VycyBpbiBhIHRpdGxlIChgemApLlxuICAvLyBJbmNsdWRlcyBzdHJpbmcuXG4gIGRlZmluaXRpb25UaXRsZVN0cmluZzogJ2RlZmluaXRpb25UaXRsZVN0cmluZycsXG5cbiAgLy8gRW1waGFzaXMgKGAqYWxwaGEqYCkuXG4gIC8vIEluY2x1ZGVzIGBlbXBoYXNpc1NlcXVlbmNlYCBhbmQgYGVtcGhhc2lzVGV4dGAuXG4gIGVtcGhhc2lzOiAnZW1waGFzaXMnLFxuXG4gIC8vIFNlcXVlbmNlIG9mIGVtcGhhc2lzIG1hcmtlcnMgKGAqYCBvciBgX2ApLlxuICBlbXBoYXNpc1NlcXVlbmNlOiAnZW1waGFzaXNTZXF1ZW5jZScsXG5cbiAgLy8gRW1waGFzaXMgdGV4dCAoYGFscGhhYCkuXG4gIC8vIEluY2x1ZGVzIHRleHQuXG4gIGVtcGhhc2lzVGV4dDogJ2VtcGhhc2lzVGV4dCcsXG5cbiAgLy8gVGhlIGNoYXJhY3RlciBlc2NhcGUgbWFya2VyIChgXFxgKS5cbiAgZXNjYXBlTWFya2VyOiAnZXNjYXBlTWFya2VyJyxcblxuICAvLyBBIGhhcmQgYnJlYWsgY3JlYXRlZCB3aXRoIGEgYmFja3NsYXNoIChgXFxcXG5gKS5cbiAgLy8gTm90ZTogZG9lcyBub3QgaW5jbHVkZSB0aGUgbGluZSBlbmRpbmcuXG4gIGhhcmRCcmVha0VzY2FwZTogJ2hhcmRCcmVha0VzY2FwZScsXG5cbiAgLy8gQSBoYXJkIGJyZWFrIGNyZWF0ZWQgd2l0aCB0cmFpbGluZyBzcGFjZXMgKGAgIFxcbmApLlxuICAvLyBEb2VzIG5vdCBpbmNsdWRlIHRoZSBsaW5lIGVuZGluZy5cbiAgaGFyZEJyZWFrVHJhaWxpbmc6ICdoYXJkQnJlYWtUcmFpbGluZycsXG5cbiAgLy8gRmxvdyBIVE1MOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyA8ZGl2XG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmxjdWRlcyBgbGluZUVuZGluZ2AsIGBodG1sRmxvd0RhdGFgLlxuICBodG1sRmxvdzogJ2h0bWxGbG93JyxcblxuICBodG1sRmxvd0RhdGE6ICdodG1sRmxvd0RhdGEnLFxuXG4gIC8vIEhUTUwgaW4gdGV4dCAodGhlIHRhZyBpbiBgYSA8aT4gYmApLlxuICAvLyBJbmNsdWRlcyBgbGluZUVuZGluZ2AsIGBodG1sVGV4dERhdGFgLlxuICBodG1sVGV4dDogJ2h0bWxUZXh0JyxcblxuICBodG1sVGV4dERhdGE6ICdodG1sVGV4dERhdGEnLFxuXG4gIC8vIFdob2xlIGltYWdlIChgIVthbHBoYV0oYnJhdm8pYCwgYCFbYWxwaGFdW2JyYXZvXWAsIGAhW2FscGhhXVtdYCwgb3JcbiAgLy8gYCFbYWxwaGFdYCkuXG4gIC8vIEluY2x1ZGVzIGBsYWJlbGAgYW5kIGFuIG9wdGlvbmFsIGByZXNvdXJjZWAgb3IgYHJlZmVyZW5jZWAuXG4gIGltYWdlOiAnaW1hZ2UnLFxuXG4gIC8vIFdob2xlIGxpbmsgbGFiZWwgKGBbKmFscGhhKl1gKS5cbiAgLy8gSW5jbHVkZXMgYGxhYmVsTGlua2Agb3IgYGxhYmVsSW1hZ2VgLCBgbGFiZWxUZXh0YCwgYW5kIGBsYWJlbEVuZGAuXG4gIGxhYmVsOiAnbGFiZWwnLFxuXG4gIC8vIFRleHQgaW4gYW4gbGFiZWwgKGAqYWxwaGEqYCkuXG4gIC8vIEluY2x1ZGVzIHRleHQuXG4gIGxhYmVsVGV4dDogJ2xhYmVsVGV4dCcsXG5cbiAgLy8gU3RhcnQgYSBsaW5rIGxhYmVsIChgW2ApLlxuICAvLyBJbmNsdWRlcyBhIGBsYWJlbE1hcmtlcmAuXG4gIGxhYmVsTGluazogJ2xhYmVsTGluaycsXG5cbiAgLy8gU3RhcnQgYW4gaW1hZ2UgbGFiZWwgKGAhW2ApLlxuICAvLyBJbmNsdWRlcyBgbGFiZWxJbWFnZU1hcmtlcmAgYW5kIGBsYWJlbE1hcmtlcmAuXG4gIGxhYmVsSW1hZ2U6ICdsYWJlbEltYWdlJyxcblxuICAvLyBNYXJrZXIgb2YgYSBsYWJlbCAoYFtgIG9yIGBdYCkuXG4gIGxhYmVsTWFya2VyOiAnbGFiZWxNYXJrZXInLFxuXG4gIC8vIE1hcmtlciB0byBzdGFydCBhbiBpbWFnZSAoYCFgKS5cbiAgbGFiZWxJbWFnZU1hcmtlcjogJ2xhYmVsSW1hZ2VNYXJrZXInLFxuXG4gIC8vIEVuZCBhIGxhYmVsIChgXWApLlxuICAvLyBJbmNsdWRlcyBgbGFiZWxNYXJrZXJgLlxuICBsYWJlbEVuZDogJ2xhYmVsRW5kJyxcblxuICAvLyBXaG9sZSBsaW5rIChgW2FscGhhXShicmF2bylgLCBgW2FscGhhXVticmF2b11gLCBgW2FscGhhXVtdYCwgb3IgYFthbHBoYV1gKS5cbiAgLy8gSW5jbHVkZXMgYGxhYmVsYCBhbmQgYW4gb3B0aW9uYWwgYHJlc291cmNlYCBvciBgcmVmZXJlbmNlYC5cbiAgbGluazogJ2xpbmsnLFxuXG4gIC8vIFdob2xlIHBhcmFncmFwaDpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gYWxwaGFcbiAgLy8gYnJhdm8uXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyB0ZXh0LlxuICBwYXJhZ3JhcGg6ICdwYXJhZ3JhcGgnLFxuXG4gIC8vIEEgcmVmZXJlbmNlIChgW2FscGhhXWAgb3IgYFtdYCkuXG4gIC8vIEluY2x1ZGVzIGByZWZlcmVuY2VNYXJrZXJgIGFuZCBhbiBvcHRpb25hbCBgcmVmZXJlbmNlU3RyaW5nYC5cbiAgcmVmZXJlbmNlOiAncmVmZXJlbmNlJyxcblxuICAvLyBBIHJlZmVyZW5jZSBtYXJrZXIgKGBbYCBvciBgXWApLlxuICByZWZlcmVuY2VNYXJrZXI6ICdyZWZlcmVuY2VNYXJrZXInLFxuXG4gIC8vIFJlZmVyZW5jZSB0ZXh0IChgYWxwaGFgKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICByZWZlcmVuY2VTdHJpbmc6ICdyZWZlcmVuY2VTdHJpbmcnLFxuXG4gIC8vIEEgcmVzb3VyY2UgKGAoaHR0cHM6Ly9leGFtcGxlLmNvbSBcImFscGhhXCIpYCkuXG4gIC8vIEluY2x1ZGVzIGByZXNvdXJjZU1hcmtlcmAsIGFuIG9wdGlvbmFsIGByZXNvdXJjZURlc3RpbmF0aW9uYCB3aXRoIGFuIG9wdGlvbmFsXG4gIC8vIGB3aGl0ZXNwYWNlYCBhbmQgYHJlc291cmNlVGl0bGVgLlxuICByZXNvdXJjZTogJ3Jlc291cmNlJyxcblxuICAvLyBBIHJlc291cmNlIGRlc3RpbmF0aW9uIChgaHR0cHM6Ly9leGFtcGxlLmNvbWApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxgIG9yIGByZXNvdXJjZURlc3RpbmF0aW9uUmF3YC5cbiAgcmVzb3VyY2VEZXN0aW5hdGlvbjogJ3Jlc291cmNlRGVzdGluYXRpb24nLFxuXG4gIC8vIEEgbGl0ZXJhbCByZXNvdXJjZSBkZXN0aW5hdGlvbiAoYDxodHRwczovL2V4YW1wbGUuY29tPmApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXJgIGFuZCBvcHRpb25hbGx5XG4gIC8vIGByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nYC5cbiAgcmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWw6ICdyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbCcsXG5cbiAgLy8gQSByZXNvdXJjZSBkZXN0aW5hdGlvbiBtYXJrZXIgKGA8YCBvciBgPmApLlxuICByZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbE1hcmtlcjogJ3Jlc291cmNlRGVzdGluYXRpb25MaXRlcmFsTWFya2VyJyxcblxuICAvLyBBIHJhdyByZXNvdXJjZSBkZXN0aW5hdGlvbiAoYGh0dHBzOi8vZXhhbXBsZS5jb21gKS5cbiAgLy8gSW5jbHVkZXMgYHJlc291cmNlRGVzdGluYXRpb25TdHJpbmdgLlxuICByZXNvdXJjZURlc3RpbmF0aW9uUmF3OiAncmVzb3VyY2VEZXN0aW5hdGlvblJhdycsXG5cbiAgLy8gUmVzb3VyY2UgZGVzdGluYXRpb24gdGV4dCAoYGh0dHBzOi8vZXhhbXBsZS5jb21gKS5cbiAgLy8gSW5jbHVkZXMgc3RyaW5nLlxuICByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOiAncmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZycsXG5cbiAgLy8gQSByZXNvdXJjZSBtYXJrZXIgKGAoYCBvciBgKWApLlxuICByZXNvdXJjZU1hcmtlcjogJ3Jlc291cmNlTWFya2VyJyxcblxuICAvLyBBIHJlc291cmNlIHRpdGxlIChgXCJhbHBoYVwiYCwgYCdhbHBoYSdgLCBvciBgKGFscGhhKWApLlxuICAvLyBJbmNsdWRlcyBgcmVzb3VyY2VUaXRsZU1hcmtlcmAgYW5kIG9wdGlvbmFsbHkgYHJlc291cmNlVGl0bGVTdHJpbmdgLlxuICByZXNvdXJjZVRpdGxlOiAncmVzb3VyY2VUaXRsZScsXG5cbiAgLy8gQSByZXNvdXJjZSB0aXRsZSBtYXJrZXIgKGBcImAsIGAnYCwgYChgLCBvciBgKWApLlxuICByZXNvdXJjZVRpdGxlTWFya2VyOiAncmVzb3VyY2VUaXRsZU1hcmtlcicsXG5cbiAgLy8gUmVzb3VyY2UgZGVzdGluYXRpb24gdGl0bGUgKGBhbHBoYWApLlxuICAvLyBJbmNsdWRlcyBzdHJpbmcuXG4gIHJlc291cmNlVGl0bGVTdHJpbmc6ICdyZXNvdXJjZVRpdGxlU3RyaW5nJyxcblxuICAvLyBXaG9sZSBzZXRleHQgaGVhZGluZzpcbiAgLy9cbiAgLy8gYGBgbWFya2Rvd25cbiAgLy8gYWxwaGFcbiAgLy8gYnJhdm9cbiAgLy8gPT09PT1cbiAgLy8gYGBgXG4gIC8vXG4gIC8vIEluY2x1ZGVzIGBzZXRleHRIZWFkaW5nVGV4dGAsIGBsaW5lRW5kaW5nYCwgYGxpbmVQcmVmaXhgLCBhbmRcbiAgLy8gYHNldGV4dEhlYWRpbmdMaW5lYC5cbiAgc2V0ZXh0SGVhZGluZzogJ3NldGV4dEhlYWRpbmcnLFxuXG4gIC8vIENvbnRlbnQgaW4gYSBzZXRleHQgaGVhZGluZyAoYGFscGhhXFxuYnJhdm9gKS5cbiAgLy8gSW5jbHVkZXMgdGV4dC5cbiAgc2V0ZXh0SGVhZGluZ1RleHQ6ICdzZXRleHRIZWFkaW5nVGV4dCcsXG5cbiAgLy8gVW5kZXJsaW5lIGluIGEgc2V0ZXh0IGhlYWRpbmcsIGluY2x1ZGluZyB3aGl0ZXNwYWNlIHN1ZmZpeCAoYD09YCkuXG4gIC8vIEluY2x1ZGVzIGBzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlYC5cbiAgc2V0ZXh0SGVhZGluZ0xpbmU6ICdzZXRleHRIZWFkaW5nTGluZScsXG5cbiAgLy8gU2VxdWVuY2Ugb2YgZXF1YWxzIG9yIGRhc2ggY2hhcmFjdGVycyBpbiB1bmRlcmxpbmUgaW4gYSBzZXRleHQgaGVhZGluZyAoYC1gKS5cbiAgc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZTogJ3NldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UnLFxuXG4gIC8vIFN0cm9uZyAoYCoqYWxwaGEqKmApLlxuICAvLyBJbmNsdWRlcyBgc3Ryb25nU2VxdWVuY2VgIGFuZCBgc3Ryb25nVGV4dGAuXG4gIHN0cm9uZzogJ3N0cm9uZycsXG5cbiAgLy8gU2VxdWVuY2Ugb2Ygc3Ryb25nIG1hcmtlcnMgKGAqKmAgb3IgYF9fYCkuXG4gIHN0cm9uZ1NlcXVlbmNlOiAnc3Ryb25nU2VxdWVuY2UnLFxuXG4gIC8vIFN0cm9uZyB0ZXh0IChgYWxwaGFgKS5cbiAgLy8gSW5jbHVkZXMgdGV4dC5cbiAgc3Ryb25nVGV4dDogJ3N0cm9uZ1RleHQnLFxuXG4gIC8vIFdob2xlIHRoZW1hdGljIGJyZWFrOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyAqICogKlxuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYHRoZW1hdGljQnJlYWtTZXF1ZW5jZWAgYW5kIGB3aGl0ZXNwYWNlYC5cbiAgdGhlbWF0aWNCcmVhazogJ3RoZW1hdGljQnJlYWsnLFxuXG4gIC8vIEEgc2VxdWVuY2Ugb2Ygb25lIG9yIG1vcmUgdGhlbWF0aWMgYnJlYWsgbWFya2VycyAoYCoqKmApLlxuICB0aGVtYXRpY0JyZWFrU2VxdWVuY2U6ICd0aGVtYXRpY0JyZWFrU2VxdWVuY2UnLFxuXG4gIC8vIFdob2xlIGJsb2NrIHF1b3RlOlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyA+IGFcbiAgLy8gPlxuICAvLyA+IGJcbiAgLy8gYGBgXG4gIC8vXG4gIC8vIEluY2x1ZGVzIGBibG9ja1F1b3RlUHJlZml4YCBhbmQgZmxvdy5cbiAgYmxvY2tRdW90ZTogJ2Jsb2NrUXVvdGUnLFxuICAvLyBUaGUgYD5gIG9yIGA+IGAgb2YgYSBibG9jayBxdW90ZS5cbiAgYmxvY2tRdW90ZVByZWZpeDogJ2Jsb2NrUXVvdGVQcmVmaXgnLFxuICAvLyBUaGUgYD5gIG9mIGEgYmxvY2sgcXVvdGUgcHJlZml4LlxuICBibG9ja1F1b3RlTWFya2VyOiAnYmxvY2tRdW90ZU1hcmtlcicsXG4gIC8vIFRoZSBvcHRpb25hbCBgIGAgb2YgYSBibG9jayBxdW90ZSBwcmVmaXguXG4gIGJsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlOiAnYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UnLFxuXG4gIC8vIFdob2xlIHVub3JkZXJlZCBsaXN0OlxuICAvL1xuICAvLyBgYGBtYXJrZG93blxuICAvLyAtIGFcbiAgLy8gICBiXG4gIC8vIGBgYFxuICAvL1xuICAvLyBJbmNsdWRlcyBgbGlzdEl0ZW1QcmVmaXhgLCBmbG93LCBhbmQgb3B0aW9uYWxseSAgYGxpc3RJdGVtSW5kZW50YCBvbiBmdXJ0aGVyXG4gIC8vIGxpbmVzLlxuICBsaXN0T3JkZXJlZDogJ2xpc3RPcmRlcmVkJyxcblxuICAvLyBXaG9sZSBvcmRlcmVkIGxpc3Q6XG4gIC8vXG4gIC8vIGBgYG1hcmtkb3duXG4gIC8vIDEuIGFcbiAgLy8gICAgYlxuICAvLyBgYGBcbiAgLy9cbiAgLy8gSW5jbHVkZXMgYGxpc3RJdGVtUHJlZml4YCwgZmxvdywgYW5kIG9wdGlvbmFsbHkgIGBsaXN0SXRlbUluZGVudGAgb24gZnVydGhlclxuICAvLyBsaW5lcy5cbiAgbGlzdFVub3JkZXJlZDogJ2xpc3RVbm9yZGVyZWQnLFxuXG4gIC8vIFRoZSBpbmRlbnQgb2YgZnVydGhlciBsaXN0IGl0ZW0gbGluZXMuXG4gIGxpc3RJdGVtSW5kZW50OiAnbGlzdEl0ZW1JbmRlbnQnLFxuXG4gIC8vIEEgbWFya2VyLCBhcyBpbiwgYCpgLCBgK2AsIGAtYCwgYC5gLCBvciBgKWAuXG4gIGxpc3RJdGVtTWFya2VyOiAnbGlzdEl0ZW1NYXJrZXInLFxuXG4gIC8vIFRoZSB0aGluZyB0aGF0IHN0YXJ0cyBhIGxpc3QgaXRlbSwgc3VjaCBhcyBgMS4gYC5cbiAgLy8gSW5jbHVkZXMgYGxpc3RJdGVtVmFsdWVgIGlmIG9yZGVyZWQsIGBsaXN0SXRlbU1hcmtlcmAsIGFuZFxuICAvLyBgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlYCAodW5sZXNzIGZvbGxvd2VkIGJ5IGEgbGluZSBlbmRpbmcpLlxuICBsaXN0SXRlbVByZWZpeDogJ2xpc3RJdGVtUHJlZml4JyxcblxuICAvLyBUaGUgd2hpdGVzcGFjZSBhZnRlciBhIG1hcmtlci5cbiAgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlOiAnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJyxcblxuICAvLyBUaGUgbnVtZXJpY2FsIHZhbHVlIG9mIGFuIG9yZGVyZWQgaXRlbS5cbiAgbGlzdEl0ZW1WYWx1ZTogJ2xpc3RJdGVtVmFsdWUnLFxuXG4gIC8vIEludGVybmFsIHR5cGVzIHVzZWQgZm9yIHN1YnRva2VuaXplcnMsIGNvbXBpbGVkIGF3YXlcbiAgY2h1bmtEb2N1bWVudDogJ2NodW5rRG9jdW1lbnQnLFxuICBjaHVua0NvbnRlbnQ6ICdjaHVua0NvbnRlbnQnLFxuICBjaHVua0Zsb3c6ICdjaHVua0Zsb3cnLFxuICBjaHVua1RleHQ6ICdjaHVua1RleHQnLFxuICBjaHVua1N0cmluZzogJ2NodW5rU3RyaW5nJ1xufSlcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/types.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark-util-symbol/values.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark-util-symbol/values.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"values\": () => (/* binding */ values)\n/* harmony export */ });\n/**\n * This module is compiled away!\n *\n * While micromark works based on character codes, this module includes the\n * string versions of ’em.\n * The C0 block, except for LF, CR, HT, and w/ the replacement character added,\n * are available here.\n */\nconst values = /** @type {const} */ ({\n ht: '\\t',\n lf: '\\n',\n cr: '\\r',\n space: ' ',\n exclamationMark: '!',\n quotationMark: '\"',\n numberSign: '#',\n dollarSign: '$',\n percentSign: '%',\n ampersand: '&',\n apostrophe: \"'\",\n leftParenthesis: '(',\n rightParenthesis: ')',\n asterisk: '*',\n plusSign: '+',\n comma: ',',\n dash: '-',\n dot: '.',\n slash: '/',\n digit0: '0',\n digit1: '1',\n digit2: '2',\n digit3: '3',\n digit4: '4',\n digit5: '5',\n digit6: '6',\n digit7: '7',\n digit8: '8',\n digit9: '9',\n colon: ':',\n semicolon: ';',\n lessThan: '<',\n equalsTo: '=',\n greaterThan: '>',\n questionMark: '?',\n atSign: '@',\n uppercaseA: 'A',\n uppercaseB: 'B',\n uppercaseC: 'C',\n uppercaseD: 'D',\n uppercaseE: 'E',\n uppercaseF: 'F',\n uppercaseG: 'G',\n uppercaseH: 'H',\n uppercaseI: 'I',\n uppercaseJ: 'J',\n uppercaseK: 'K',\n uppercaseL: 'L',\n uppercaseM: 'M',\n uppercaseN: 'N',\n uppercaseO: 'O',\n uppercaseP: 'P',\n uppercaseQ: 'Q',\n uppercaseR: 'R',\n uppercaseS: 'S',\n uppercaseT: 'T',\n uppercaseU: 'U',\n uppercaseV: 'V',\n uppercaseW: 'W',\n uppercaseX: 'X',\n uppercaseY: 'Y',\n uppercaseZ: 'Z',\n leftSquareBracket: '[',\n backslash: '\\\\',\n rightSquareBracket: ']',\n caret: '^',\n underscore: '_',\n graveAccent: '`',\n lowercaseA: 'a',\n lowercaseB: 'b',\n lowercaseC: 'c',\n lowercaseD: 'd',\n lowercaseE: 'e',\n lowercaseF: 'f',\n lowercaseG: 'g',\n lowercaseH: 'h',\n lowercaseI: 'i',\n lowercaseJ: 'j',\n lowercaseK: 'k',\n lowercaseL: 'l',\n lowercaseM: 'm',\n lowercaseN: 'n',\n lowercaseO: 'o',\n lowercaseP: 'p',\n lowercaseQ: 'q',\n lowercaseR: 'r',\n lowercaseS: 's',\n lowercaseT: 't',\n lowercaseU: 'u',\n lowercaseV: 'v',\n lowercaseW: 'w',\n lowercaseX: 'x',\n lowercaseY: 'y',\n lowercaseZ: 'z',\n leftCurlyBrace: '{',\n verticalBar: '|',\n rightCurlyBrace: '}',\n tilde: '~',\n replacementCharacter: '�'\n})\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLXN5bWJvbC92YWx1ZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTywwQkFBMEIsT0FBTztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1zeW1ib2wvdmFsdWVzLmpzPzBjNGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIG1vZHVsZSBpcyBjb21waWxlZCBhd2F5IVxuICpcbiAqIFdoaWxlIG1pY3JvbWFyayB3b3JrcyBiYXNlZCBvbiBjaGFyYWN0ZXIgY29kZXMsIHRoaXMgbW9kdWxlIGluY2x1ZGVzIHRoZVxuICogc3RyaW5nIHZlcnNpb25zIG9mIOKAmWVtLlxuICogVGhlIEMwIGJsb2NrLCBleGNlcHQgZm9yIExGLCBDUiwgSFQsIGFuZCB3LyB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGFkZGVkLFxuICogYXJlIGF2YWlsYWJsZSBoZXJlLlxuICovXG5leHBvcnQgY29uc3QgdmFsdWVzID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgaHQ6ICdcXHQnLFxuICBsZjogJ1xcbicsXG4gIGNyOiAnXFxyJyxcbiAgc3BhY2U6ICcgJyxcbiAgZXhjbGFtYXRpb25NYXJrOiAnIScsXG4gIHF1b3RhdGlvbk1hcms6ICdcIicsXG4gIG51bWJlclNpZ246ICcjJyxcbiAgZG9sbGFyU2lnbjogJyQnLFxuICBwZXJjZW50U2lnbjogJyUnLFxuICBhbXBlcnNhbmQ6ICcmJyxcbiAgYXBvc3Ryb3BoZTogXCInXCIsXG4gIGxlZnRQYXJlbnRoZXNpczogJygnLFxuICByaWdodFBhcmVudGhlc2lzOiAnKScsXG4gIGFzdGVyaXNrOiAnKicsXG4gIHBsdXNTaWduOiAnKycsXG4gIGNvbW1hOiAnLCcsXG4gIGRhc2g6ICctJyxcbiAgZG90OiAnLicsXG4gIHNsYXNoOiAnLycsXG4gIGRpZ2l0MDogJzAnLFxuICBkaWdpdDE6ICcxJyxcbiAgZGlnaXQyOiAnMicsXG4gIGRpZ2l0MzogJzMnLFxuICBkaWdpdDQ6ICc0JyxcbiAgZGlnaXQ1OiAnNScsXG4gIGRpZ2l0NjogJzYnLFxuICBkaWdpdDc6ICc3JyxcbiAgZGlnaXQ4OiAnOCcsXG4gIGRpZ2l0OTogJzknLFxuICBjb2xvbjogJzonLFxuICBzZW1pY29sb246ICc7JyxcbiAgbGVzc1RoYW46ICc8JyxcbiAgZXF1YWxzVG86ICc9JyxcbiAgZ3JlYXRlclRoYW46ICc+JyxcbiAgcXVlc3Rpb25NYXJrOiAnPycsXG4gIGF0U2lnbjogJ0AnLFxuICB1cHBlcmNhc2VBOiAnQScsXG4gIHVwcGVyY2FzZUI6ICdCJyxcbiAgdXBwZXJjYXNlQzogJ0MnLFxuICB1cHBlcmNhc2VEOiAnRCcsXG4gIHVwcGVyY2FzZUU6ICdFJyxcbiAgdXBwZXJjYXNlRjogJ0YnLFxuICB1cHBlcmNhc2VHOiAnRycsXG4gIHVwcGVyY2FzZUg6ICdIJyxcbiAgdXBwZXJjYXNlSTogJ0knLFxuICB1cHBlcmNhc2VKOiAnSicsXG4gIHVwcGVyY2FzZUs6ICdLJyxcbiAgdXBwZXJjYXNlTDogJ0wnLFxuICB1cHBlcmNhc2VNOiAnTScsXG4gIHVwcGVyY2FzZU46ICdOJyxcbiAgdXBwZXJjYXNlTzogJ08nLFxuICB1cHBlcmNhc2VQOiAnUCcsXG4gIHVwcGVyY2FzZVE6ICdRJyxcbiAgdXBwZXJjYXNlUjogJ1InLFxuICB1cHBlcmNhc2VTOiAnUycsXG4gIHVwcGVyY2FzZVQ6ICdUJyxcbiAgdXBwZXJjYXNlVTogJ1UnLFxuICB1cHBlcmNhc2VWOiAnVicsXG4gIHVwcGVyY2FzZVc6ICdXJyxcbiAgdXBwZXJjYXNlWDogJ1gnLFxuICB1cHBlcmNhc2VZOiAnWScsXG4gIHVwcGVyY2FzZVo6ICdaJyxcbiAgbGVmdFNxdWFyZUJyYWNrZXQ6ICdbJyxcbiAgYmFja3NsYXNoOiAnXFxcXCcsXG4gIHJpZ2h0U3F1YXJlQnJhY2tldDogJ10nLFxuICBjYXJldDogJ14nLFxuICB1bmRlcnNjb3JlOiAnXycsXG4gIGdyYXZlQWNjZW50OiAnYCcsXG4gIGxvd2VyY2FzZUE6ICdhJyxcbiAgbG93ZXJjYXNlQjogJ2InLFxuICBsb3dlcmNhc2VDOiAnYycsXG4gIGxvd2VyY2FzZUQ6ICdkJyxcbiAgbG93ZXJjYXNlRTogJ2UnLFxuICBsb3dlcmNhc2VGOiAnZicsXG4gIGxvd2VyY2FzZUc6ICdnJyxcbiAgbG93ZXJjYXNlSDogJ2gnLFxuICBsb3dlcmNhc2VJOiAnaScsXG4gIGxvd2VyY2FzZUo6ICdqJyxcbiAgbG93ZXJjYXNlSzogJ2snLFxuICBsb3dlcmNhc2VMOiAnbCcsXG4gIGxvd2VyY2FzZU06ICdtJyxcbiAgbG93ZXJjYXNlTjogJ24nLFxuICBsb3dlcmNhc2VPOiAnbycsXG4gIGxvd2VyY2FzZVA6ICdwJyxcbiAgbG93ZXJjYXNlUTogJ3EnLFxuICBsb3dlcmNhc2VSOiAncicsXG4gIGxvd2VyY2FzZVM6ICdzJyxcbiAgbG93ZXJjYXNlVDogJ3QnLFxuICBsb3dlcmNhc2VVOiAndScsXG4gIGxvd2VyY2FzZVY6ICd2JyxcbiAgbG93ZXJjYXNlVzogJ3cnLFxuICBsb3dlcmNhc2VYOiAneCcsXG4gIGxvd2VyY2FzZVk6ICd5JyxcbiAgbG93ZXJjYXNlWjogJ3onLFxuICBsZWZ0Q3VybHlCcmFjZTogJ3snLFxuICB2ZXJ0aWNhbEJhcjogJ3wnLFxuICByaWdodEN1cmx5QnJhY2U6ICd9JyxcbiAgdGlsZGU6ICd+JyxcbiAgcmVwbGFjZW1lbnRDaGFyYWN0ZXI6ICfvv70nXG59KVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark-util-symbol/values.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/constructs.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/constructs.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attentionMarkers\": () => (/* binding */ attentionMarkers),\n/* harmony export */ \"contentInitial\": () => (/* binding */ contentInitial),\n/* harmony export */ \"disable\": () => (/* binding */ disable),\n/* harmony export */ \"document\": () => (/* binding */ document),\n/* harmony export */ \"flow\": () => (/* binding */ flow),\n/* harmony export */ \"flowInitial\": () => (/* binding */ flowInitial),\n/* harmony export */ \"insideSpan\": () => (/* binding */ insideSpan),\n/* harmony export */ \"string\": () => (/* binding */ string),\n/* harmony export */ \"text\": () => (/* binding */ text)\n/* harmony export */ });\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/list.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/block-quote.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/definition.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-indented.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/heading-atx.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/thematic-break.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/setext-underline.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/html-flow.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-fenced.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/character-reference.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/character-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/line-ending.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-start-image.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/attention.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/autolink.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/html-text.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-start-link.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/label-end.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/code-text.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./initialize/text.js */ \"../../../node_modules/micromark/dev/lib/initialize/text.js\");\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n\n/** @satisfies {Extension['document']} */\nconst document = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.plusSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit0]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit1]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit2]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit3]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit4]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit5]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit6]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit7]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit8]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.digit9]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.list,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.greaterThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_2__.blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nconst contentInitial = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nconst flowInitial = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.space]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_4__.codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nconst flow = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.numberSign]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_5__.headingAtx,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.dash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_8__.htmlFlow,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.equalsTo]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_7__.setextUnderline,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_6__.thematicBreak,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.tilde]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_9__.codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nconst string = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nconst text = {\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_12__.lineEnding,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.exclamationMark]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_13__.labelStartImage,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ampersand]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_10__.characterReference,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lessThan]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_15__.autolink, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_16__.htmlText],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.leftSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_17__.labelStartLink,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.backslash]: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_18__.hardBreakEscape, micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_11__.characterEscape],\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.rightSquareBracket]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_19__.labelEnd,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention,\n [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.graveAccent]: micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_20__.codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nconst insideSpan = {null: [micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_14__.attention, _initialize_text_js__WEBPACK_IMPORTED_MODULE_21__.resolver]}\n\n/** @satisfies {Extension['attentionMarkers']} */\nconst attentionMarkers = {null: [micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.asterisk, micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.underscore]}\n\n/** @satisfies {Extension['disable']} */\nconst disable = {null: []}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NvbnN0cnVjdHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSwwQ0FBMEM7QUFDdkQ7O0FBdUJrQztBQUNrQjtBQUNROztBQUU1RCxnQkFBZ0IsdUJBQXVCO0FBQ2hDO0FBQ1AsR0FBRywwRUFBYyxHQUFHLDJEQUFJO0FBQ3hCLEdBQUcsMEVBQWMsR0FBRywyREFBSTtBQUN4QixHQUFHLHNFQUFVLEdBQUcsMkRBQUk7QUFDcEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsd0VBQVksR0FBRywyREFBSTtBQUN0QixHQUFHLHdFQUFZLEdBQUcsMkRBQUk7QUFDdEIsR0FBRyx3RUFBWSxHQUFHLDJEQUFJO0FBQ3RCLEdBQUcsNkVBQWlCLEdBQUcsaUVBQVU7QUFDakM7O0FBRUEsZ0JBQWdCLDZCQUE2QjtBQUN0QztBQUNQLEdBQUcsbUZBQXVCLEdBQUcsaUVBQVU7QUFDdkM7O0FBRUEsZ0JBQWdCLDBCQUEwQjtBQUNuQztBQUNQLEdBQUcsK0VBQW1CLEdBQUcsbUVBQVk7QUFDckMsR0FBRyw4RUFBa0IsR0FBRyxtRUFBWTtBQUNwQyxHQUFHLHVFQUFXLEdBQUcsbUVBQVk7QUFDN0I7O0FBRUEsZ0JBQWdCLG1CQUFtQjtBQUM1QjtBQUNQLEdBQUcsNEVBQWdCLEdBQUcsaUVBQVU7QUFDaEMsR0FBRywwRUFBYyxHQUFHLG9FQUFhO0FBQ2pDLEdBQUcsc0VBQVUsSUFBSSxzRUFBZSxFQUFFLG9FQUFhO0FBQy9DLEdBQUcsMEVBQWMsR0FBRywrREFBUTtBQUM1QixHQUFHLDBFQUFjLEdBQUcsc0VBQWU7QUFDbkMsR0FBRyw0RUFBZ0IsR0FBRyxvRUFBYTtBQUNuQyxHQUFHLDZFQUFpQixHQUFHLGlFQUFVO0FBQ2pDLEdBQUcsdUVBQVcsR0FBRyxpRUFBVTtBQUMzQjs7QUFFQSxnQkFBZ0IscUJBQXFCO0FBQzlCO0FBQ1AsR0FBRywyRUFBZSxHQUFHLDBFQUFrQjtBQUN2QyxHQUFHLDJFQUFlLEdBQUcsdUVBQWU7QUFDcEM7O0FBRUEsZ0JBQWdCLG1CQUFtQjtBQUM1QjtBQUNQLEdBQUcsZ0ZBQW9CLEdBQUcsa0VBQVU7QUFDcEMsR0FBRywwRUFBYyxHQUFHLGtFQUFVO0FBQzlCLEdBQUcsd0ZBQTRCLEdBQUcsa0VBQVU7QUFDNUMsR0FBRyxpRkFBcUIsR0FBRyx1RUFBZTtBQUMxQyxHQUFHLDJFQUFlLEdBQUcsMEVBQWtCO0FBQ3ZDLEdBQUcsMEVBQWMsR0FBRyxpRUFBUztBQUM3QixHQUFHLDBFQUFjLElBQUksZ0VBQVEsRUFBRSxnRUFBUTtBQUN2QyxHQUFHLG1GQUF1QixHQUFHLHNFQUFjO0FBQzNDLEdBQUcsMkVBQWUsSUFBSSx1RUFBZSxFQUFFLHVFQUFlO0FBQ3RELEdBQUcsb0ZBQXdCLEdBQUcsZ0VBQVE7QUFDdEMsR0FBRyw0RUFBZ0IsR0FBRyxpRUFBUztBQUMvQixHQUFHLDZFQUFpQixHQUFHLGdFQUFRO0FBQy9COztBQUVBLGdCQUFnQix5QkFBeUI7QUFDbEMsb0JBQW9CLE9BQU8saUVBQVMsRUFBRSwwREFBVzs7QUFFeEQsZ0JBQWdCLCtCQUErQjtBQUN4QywwQkFBMEIsT0FBTywwRUFBYyxFQUFFLDRFQUFnQjs7QUFFeEUsZ0JBQWdCLHNCQUFzQjtBQUMvQixpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NvbnN0cnVjdHMuanM/ZDdiMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXh0ZW5zaW9ufSBFeHRlbnNpb25cbiAqL1xuXG5pbXBvcnQge1xuICBhdHRlbnRpb24sXG4gIGF1dG9saW5rLFxuICBibG9ja1F1b3RlLFxuICBjaGFyYWN0ZXJFc2NhcGUsXG4gIGNoYXJhY3RlclJlZmVyZW5jZSxcbiAgY29kZUZlbmNlZCxcbiAgY29kZUluZGVudGVkLFxuICBjb2RlVGV4dCxcbiAgZGVmaW5pdGlvbixcbiAgaGFyZEJyZWFrRXNjYXBlLFxuICBoZWFkaW5nQXR4LFxuICBodG1sRmxvdyxcbiAgaHRtbFRleHQsXG4gIGxhYmVsRW5kLFxuICBsYWJlbFN0YXJ0SW1hZ2UsXG4gIGxhYmVsU3RhcnRMaW5rLFxuICBsaW5lRW5kaW5nLFxuICBsaXN0LFxuICBzZXRleHRVbmRlcmxpbmUsXG4gIHRoZW1hdGljQnJlYWtcbn0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7Y29kZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb2Rlcy5qcydcbmltcG9ydCB7cmVzb2x2ZXIgYXMgcmVzb2x2ZVRleHR9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkb2N1bWVudCddfSAqL1xuZXhwb3J0IGNvbnN0IGRvY3VtZW50ID0ge1xuICBbY29kZXMuYXN0ZXJpc2tdOiBsaXN0LFxuICBbY29kZXMucGx1c1NpZ25dOiBsaXN0LFxuICBbY29kZXMuZGFzaF06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDBdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQxXTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0Ml06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDNdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQ0XTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0NV06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDZdOiBsaXN0LFxuICBbY29kZXMuZGlnaXQ3XTogbGlzdCxcbiAgW2NvZGVzLmRpZ2l0OF06IGxpc3QsXG4gIFtjb2Rlcy5kaWdpdDldOiBsaXN0LFxuICBbY29kZXMuZ3JlYXRlclRoYW5dOiBibG9ja1F1b3RlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2NvbnRlbnRJbml0aWFsJ119ICovXG5leHBvcnQgY29uc3QgY29udGVudEluaXRpYWwgPSB7XG4gIFtjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldF06IGRlZmluaXRpb25cbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZmxvd0luaXRpYWwnXX0gKi9cbmV4cG9ydCBjb25zdCBmbG93SW5pdGlhbCA9IHtcbiAgW2NvZGVzLmhvcml6b250YWxUYWJdOiBjb2RlSW5kZW50ZWQsXG4gIFtjb2Rlcy52aXJ0dWFsU3BhY2VdOiBjb2RlSW5kZW50ZWQsXG4gIFtjb2Rlcy5zcGFjZV06IGNvZGVJbmRlbnRlZFxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydmbG93J119ICovXG5leHBvcnQgY29uc3QgZmxvdyA9IHtcbiAgW2NvZGVzLm51bWJlclNpZ25dOiBoZWFkaW5nQXR4LFxuICBbY29kZXMuYXN0ZXJpc2tdOiB0aGVtYXRpY0JyZWFrLFxuICBbY29kZXMuZGFzaF06IFtzZXRleHRVbmRlcmxpbmUsIHRoZW1hdGljQnJlYWtdLFxuICBbY29kZXMubGVzc1RoYW5dOiBodG1sRmxvdyxcbiAgW2NvZGVzLmVxdWFsc1RvXTogc2V0ZXh0VW5kZXJsaW5lLFxuICBbY29kZXMudW5kZXJzY29yZV06IHRoZW1hdGljQnJlYWssXG4gIFtjb2Rlcy5ncmF2ZUFjY2VudF06IGNvZGVGZW5jZWQsXG4gIFtjb2Rlcy50aWxkZV06IGNvZGVGZW5jZWRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnc3RyaW5nJ119ICovXG5leHBvcnQgY29uc3Qgc3RyaW5nID0ge1xuICBbY29kZXMuYW1wZXJzYW5kXTogY2hhcmFjdGVyUmVmZXJlbmNlLFxuICBbY29kZXMuYmFja3NsYXNoXTogY2hhcmFjdGVyRXNjYXBlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ3RleHQnXX0gKi9cbmV4cG9ydCBjb25zdCB0ZXh0ID0ge1xuICBbY29kZXMuY2FycmlhZ2VSZXR1cm5dOiBsaW5lRW5kaW5nLFxuICBbY29kZXMubGluZUZlZWRdOiBsaW5lRW5kaW5nLFxuICBbY29kZXMuY2FycmlhZ2VSZXR1cm5MaW5lRmVlZF06IGxpbmVFbmRpbmcsXG4gIFtjb2Rlcy5leGNsYW1hdGlvbk1hcmtdOiBsYWJlbFN0YXJ0SW1hZ2UsXG4gIFtjb2Rlcy5hbXBlcnNhbmRdOiBjaGFyYWN0ZXJSZWZlcmVuY2UsXG4gIFtjb2Rlcy5hc3Rlcmlza106IGF0dGVudGlvbixcbiAgW2NvZGVzLmxlc3NUaGFuXTogW2F1dG9saW5rLCBodG1sVGV4dF0sXG4gIFtjb2Rlcy5sZWZ0U3F1YXJlQnJhY2tldF06IGxhYmVsU3RhcnRMaW5rLFxuICBbY29kZXMuYmFja3NsYXNoXTogW2hhcmRCcmVha0VzY2FwZSwgY2hhcmFjdGVyRXNjYXBlXSxcbiAgW2NvZGVzLnJpZ2h0U3F1YXJlQnJhY2tldF06IGxhYmVsRW5kLFxuICBbY29kZXMudW5kZXJzY29yZV06IGF0dGVudGlvbixcbiAgW2NvZGVzLmdyYXZlQWNjZW50XTogY29kZVRleHRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnaW5zaWRlU3BhbiddfSAqL1xuZXhwb3J0IGNvbnN0IGluc2lkZVNwYW4gPSB7bnVsbDogW2F0dGVudGlvbiwgcmVzb2x2ZVRleHRdfVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydhdHRlbnRpb25NYXJrZXJzJ119ICovXG5leHBvcnQgY29uc3QgYXR0ZW50aW9uTWFya2VycyA9IHtudWxsOiBbY29kZXMuYXN0ZXJpc2ssIGNvZGVzLnVuZGVyc2NvcmVdfVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkaXNhYmxlJ119ICovXG5leHBvcnQgY29uc3QgZGlzYWJsZSA9IHtudWxsOiBbXX1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/constructs.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/create-tokenizer.js": +/*!*******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/create-tokenizer.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createTokenizer\": () => (/* binding */ createTokenizer)\n/* harmony export */ });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ \"../../../node_modules/debug/src/browser.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-resolve-all */ \"../../../node_modules/micromark-util-resolve-all/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-symbol/values.js */ \"../../../node_modules/micromark-util-symbol/values.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\n\n\n\n\n\n\n\n\nconst debug = debug__WEBPACK_IMPORTED_MODULE_0__('micromark')\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nfunction createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from ? Object.assign({}, from) : {line: 1, column: 1, offset: 0},\n {_index: 0, _bufferIndex: -1}\n )\n /** @type {Record} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {interrupt: true})\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n code: micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.push)(chunks, slice)\n\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.eof) {\n return []\n }\n\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = (0,micromark_util_resolve_all__WEBPACK_IMPORTED_MODULE_4__.resolveAll)(resolveAllConstructs, context.events, context)\n\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {line, column, offset, _index, _bufferIndex}\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n debug('position: define skip: `%j`', point)\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(consumed === true, 'expected character to be consumed')\n consumed = undefined\n debug('main: passing `%s` to %s', code, state && state.name)\n expectedCode = code\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof state === 'function', 'expected state')\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected given code to equal expected code')\n\n debug('consume: `%s`', code)\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n consumed === undefined,\n 'expected code to not have been consumed: this might be because `return x(code)` instead of `return x` was used'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n code === null\n ? context.events.length === 0 ||\n context.events[context.events.length - 1][0] === 'exit'\n : context.events[context.events.length - 1][0] === 'enter',\n 'expected last token to be open'\n )\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n point.line++\n point.column = 1\n point.offset += code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed ? 2 : 1\n accountForPotentialSkip()\n debug('position: after eol: `%j`', point)\n } else if (code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string')\n debug('enter: `%s`', type)\n\n context.events.push(['enter', token, context])\n\n stack.push(token)\n\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof type === 'string', 'expected string type')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type.length > 0, 'expected non-empty string')\n\n const token = stack.pop()\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(token, 'cannot close w/o open tokens')\n token.end = now()\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(type === token.type, 'expected exit token to match current token')\n\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n !(\n token.start._index === token.end._index &&\n token.start._bufferIndex === token.end._bufferIndex\n ),\n 'expected non-empty token (`' + type + '`)'\n )\n\n debug('exit: `%s`', token.type)\n context.events.push(['exit', token, context])\n\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(bogusState, 'expected `bogusState` to be given')\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n context.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code')\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(code === expectedCode, 'expected code')\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_3__.splice)(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(\n construct.partial ||\n context.events.length === 0 ||\n context.events[context.events.length - 1][0] === 'exit',\n 'expected last token to end'\n )\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n\n return {restore, from: startEventsIndex}\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n debug('position: restore: `%j`', point)\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n let view\n\n if (startIndex === endIndex) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(endBufferIndex > -1, 'expected non-negative end buffer index')\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex > -1, 'expected non-negative start buffer index')\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(startBufferIndex === 0, 'expected `startBufferIndex` to be `0`')\n view.shift()\n }\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturn: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.lineFeed: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.carriageReturnLineFeed: {\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.cr + micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.lf\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab: {\n value = expandTabs ? micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space : micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.ht\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.virtualSpace: {\n if (!expandTabs && atTab) continue\n value = micromark_util_symbol_values_js__WEBPACK_IMPORTED_MODULE_6__.values.space\n\n break\n }\n\n default: {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_1__.ok)(typeof chunk === 'number', 'expected number')\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_2__.codes.horizontalTab\n result.push(value)\n }\n\n return result.join('')\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NyZWF0ZS10b2tlbml6ZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEscUNBQXFDO0FBQ2xELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsd0NBQXdDO0FBQ3JELGFBQWEsaURBQWlEO0FBQzlELGFBQWEsNkNBQTZDO0FBQzFELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsZ0RBQWdEO0FBQzdEOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGNBQWMsU0FBUztBQUN2QixjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsTUFBTTtBQUNqQixhQUFhO0FBQ2I7O0FBRStCO0FBQzRCO0FBQ1I7QUFDRTtBQUNEO0FBQ0U7QUFDZjs7QUFFdkMsY0FBYyxrQ0FBVzs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsa0JBQWtCO0FBQzdCLFdBQVcsb0RBQW9EO0FBQy9ELGFBQWE7QUFDYjtBQUNPO0FBQ1AsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsMkJBQTJCLFdBQVcsOEJBQThCO0FBQ3BFLEtBQUs7QUFDTDtBQUNBLGFBQWEsd0JBQXdCO0FBQ3JDO0FBQ0EsYUFBYSxrQkFBa0I7QUFDL0I7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQSxhQUFhLGNBQWM7QUFDM0I7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsZ0JBQWdCO0FBQ3BFOztBQUVBO0FB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QjtBQUMvQjtBQUNBLGtCQUFrQix5RUFBWTs7QUFFOUI7QUFDQTs7QUFFQTtBQUNBLFVBQVUsOENBQU07QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLCtFQUFtQjtBQUN6QztBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2NyZWF0ZS10b2tlbml6ZXIuanM/YTMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0UmVjb3JkfSBDb25zdHJ1Y3RSZWNvcmRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlQ29udGV4dH0gUGFyc2VDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgUmVzdG9yZVxuICogQHJldHVybnMge3ZvaWR9XG4gKlxuICogQHR5cGVkZWYgSW5mb1xuICogQHByb3BlcnR5IHtSZXN0b3JlfSByZXN0b3JlXG4gKiBAcHJvcGVydHkge251bWJlcn0gZnJvbVxuICpcbiAqIEBjYWxsYmFjayBSZXR1cm5IYW5kbGVcbiAqICAgSGFuZGxlIGEgc3VjY2Vzc2Z1bCBydW4uXG4gKiBAcGFyYW0ge0NvbnN0cnVjdH0gY29uc3RydWN0XG4gKiBAcGFyYW0ge0luZm99IGluZm9cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbmltcG9ydCBjcmVhdGVEZWJ1ZyBmcm9tICdkZWJ1ZydcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7cmVzb2x2ZUFsbH0gZnJvbSAnbWljcm9tYXJrLXV0aWwtcmVzb2x2ZS1hbGwnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3ZhbHVlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL3ZhbHVlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG5jb25zdCBkZWJ1ZyA9IGNyZWF0ZURlYnVnKCdtaWNyb21hcmsnKVxuXG4vKipcbiAqIENyZWF0ZSBhIHRva2VuaXplci5cbiAqIFRva2VuaXplcnMgZGVhbCB3aXRoIG9uZSB0eXBlIG9mIGRhdGEgKGUuZy4sIGNvbnRhaW5lcnMsIGZsb3csIHRleHQpLlxuICogVGhlIHBhcnNlciBpcyB0aGUgb2JqZWN0IGRlYWxpbmcgd2l0aCBpdCBhbGwuXG4gKiBgaW5pdGlhbGl6ZWAgd29ya3MgbGlrZSBvdGhlciBjb25zdHJ1Y3RzLCBleGNlcHQgdGhhdCBvbmx5IGl0cyBgdG9rZW5pemVgXG4gKiBmdW5jdGlvbiBpcyB1c2VkLCBpbiB3aGljaCBjYXNlIGl0IGRvZXNu4oCZdCByZWNlaXZlIGFuIGBva2Agb3IgYG5va2AuXG4gKiBgZnJvbWAgY2FuIGJlIGdpdmVuIHRvIHNldCB0aGUgcG9pbnQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGFsdGhvdWdoXG4gKiB3aGVuIGZ1cnRoZXIgbGluZXMgYXJlIGluZGVudGVkLCB0aGV5IG11c3QgYmUgc2V0IHdpdGggYGRlZmluZVNraXBgLlxuICpcbiAqIEBwYXJhbSB7UGFyc2VDb250ZXh0fSBwYXJzZXJcbiAqIEBwYXJhbSB7SW5pdGlhbENvbnN0cnVjdH0gaW5pdGlhbGl6ZVxuICogQHBhcmFtIHtPbWl0PFBvaW50LCAnX2J1ZmZlckluZGV4JyB8ICdfaW5kZXgnPiB8IHVuZGVmaW5lZH0gW2Zyb21dXG4gKiBAcmV0dXJucyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbGl6ZSwgZnJvbSkge1xuICAvKiogQHR5cGUge1BvaW50fSAqL1xuICBsZXQgcG9pbnQgPSBPYmplY3QuYXNzaWduKFxuICAgIGZyb20gPyBPYmplY3QuYXNzaWduKHt9LCBmcm9tKSA6IHtsaW5lOiAxLCBjb2x1bW46IDEsIG9mZnNldDogMH0sXG4gICAge19pbmRleDogMCwgX2J1ZmZlckluZGV4OiAtMX1cbiAgKVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGNvbHVtblN0YXJ0ID0ge31cbiAgLyoqIEB0eXBlIHtBcnJheTxDb25zdHJ1Y3Q+fSAqL1xuICBjb25zdCByZXNvbHZlQWxsQ29uc3RydWN0cyA9IFtdXG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgY2h1bmtzID0gW11cbiAgLyoqIEB0eXBlIHtBcnJheTxUb2tlbj59ICovXG4gIGxldCBzdGFjayA9IFtdXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnN1bWVkID0gdHJ1ZVxuXG4gIC8qKlxuICAgKiBUb29scyB1c2VkIGZvciB0b2tlbml6aW5nLlxuICAgKlxuICAgKiBAdHlwZSB7RWZmZWN0c31cbiAgICovXG4gIGNvbnN0IGVmZmVjdHMgPSB7XG4gICAgY29uc3VtZSxcbiAgICBlbnRlcixcbiAgICBleGl0LFxuICAgIGF0dGVtcHQ6IGNvbnN0cnVjdEZhY3Rvcnkob25zdWNjZXNzZnVsY29uc3RydWN0KSxcbiAgICBjaGVjazogY29uc3RydWN0RmFjdG9yeShvbnN1Y2Nlc3NmdWxjaGVjayksXG4gICAgaW50ZXJydXB0OiBjb25zdHJ1Y3RGYWN0b3J5KG9uc3VjY2Vzc2Z1bGNoZWNrLCB7aW50ZXJydXB0OiB0cnVlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZSBhbmQgdG9vbHMgZm9yIHJlc29sdmluZyBhbmQgc2VyaWFsaXppbmcuXG4gICAqXG4gICAqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHR9XG4gICAqL1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHByZXZpb3VzOiBjb2Rlcy5lb2YsXG4gICAgY29kZTogY29kZXMuZW9mLFxuICAgIGNvbnRhaW5lclN0YXRlOiB7fSxcbiAgICBldmVudHM6IFtdLFxuICAgIHBhcnNlcixcbiAgICBzbGljZVN0cmVhbSxcbiAgICBzbGljZVNlcmlhbGl6ZSxcbiAgICBub3csXG4gICAgZGVmaW5lU2tpcCxcbiAgICB3cml0ZVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHR5cGUge1N0YXRlIHwgdm9pZH1cbiAgICovXG4gIGxldCBzdGF0ZSA9IGluaXRpYWxpemUudG9rZW5pemUuY2FsbChjb250ZXh0LCBlZmZlY3RzKVxuXG4gIC8qKlxuICAgKiBUcmFjayB3aGljaCBjaGFyYWN0ZXIgd2UgZXhwZWN0IHRvIGJlIGNvbnN1bWVkLCB0byBjYXRjaCBidWdzLlxuICAgKlxuICAgKiBAdHlwZSB7Q29kZX1cbiAgICovXG4gIGxldCBleHBlY3RlZENvZGVcblxuICBpZiAoaW5pdGlhbGl6ZS5yZXNvbHZlQWxsKSB7XG4gICAgcmVzb2x2ZUFsbENvbnN0cnVjdHMucHVzaChpbml0aWFsaXplKVxuICB9XG5cbiAgcmV0dXJuIGNvbnRleHRcblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnd3JpdGUnXX0gKi9cbiAgZnVuY3Rpb24gd3JpdGUoc2xpY2UpIHtcbiAgICBjaHVua3MgPSBwdXNoKGNodW5rcywgc2xpY2UpXG5cbiAgICBtYWluKClcblxuICAgIC8vIEV4aXQgaWYgd2XigJlyZSBub3QgZG9uZSwgcmVzb2x2ZSBtaWdodCBjaGFuZ2Ugc3R1ZmYuXG4gICAgaWYgKGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0gIT09IGNvZGVzLmVvZikge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgYWRkUmVzdWx0KGluaXRpYWxpemUsIDApXG5cbiAgICAvLyBPdGhlcndpc2UsIHJlc29sdmUsIGFuZCBleGl0LlxuICAgIGNvbnRleHQuZXZlbnRzID0gcmVzb2x2ZUFsbChyZXNvbHZlQWxsQ29uc3RydWN0cywgY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG5cbiAgICByZXR1cm4gY29udGV4dC5ldmVudHNcbiAgfVxuXG4gIC8vXG4gIC8vIFRvb2xzLlxuICAvL1xuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0WydzbGljZVNlcmlhbGl6ZSddfSAqL1xuICBmdW5jdGlvbiBzbGljZVNlcmlhbGl6ZSh0b2tlbiwgZXhwYW5kVGFicykge1xuICAgIHJldHVybiBzZXJpYWxpemVDaHVua3Moc2xpY2VTdHJlYW0odG9rZW4pLCBleHBhbmRUYWJzKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU3RyZWFtJ119ICovXG4gIGZ1bmN0aW9uIHNsaWNlU3RyZWFtKHRva2VuKSB7XG4gICAgcmV0dXJuIHNsaWNlQ2h1bmtzKGNodW5rcywgdG9rZW4pXG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnbm93J119ICovXG4gIGZ1bmN0aW9uIG5vdygpIHtcbiAgICAvLyBUaGlzIGlzIGEgaG90IHBhdGgsIHNvIHdlIGNsb25lIG1hbnVhbGx5IGluc3RlYWQgb2YgYE9iamVjdC5hc3NpZ24oe30sIHBvaW50KWBcbiAgICBjb25zdCB7bGluZSwgY29sdW1uLCBvZmZzZXQsIF9pbmRleCwgX2J1ZmZlckluZGV4fSA9IHBvaW50XG4gICAgcmV0dXJuIHtsaW5lLCBjb2x1bW4sIG9mZnNldCwgX2luZGV4LCBfYnVmZmVySW5kZXh9XG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnZGVmaW5lU2tpcCddfSAqL1xuICBmdW5jdGlvbiBkZWZpbmVTa2lwKHZhbHVlKSB7XG4gICAgY29sdW1uU3RhcnRbdmFsdWUubGluZV0gPSB2YWx1ZS5jb2x1bW5cbiAgICBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpXG4gICAgZGVidWcoJ3Bvc2l0aW9uOiBkZWZpbmUgc2tpcDogYCVqYCcsIHBvaW50KVxuICB9XG5cbiAgLy9cbiAgLy8gU3RhdGUgbWFuYWdlbWVudC5cbiAgLy9cblxuICAvKipcbiAgICogTWFpbiBsb29wIChub3RlIHRoYXQgYF9pbmRleGAgYW5kIGBfYnVmZmVySW5kZXhgIGluIGBwb2ludGAgYXJlIG1vZGlmaWVkIGJ5XG4gICAqIGBjb25zdW1lYCkuXG4gICAqIEhlcmUgaXMgd2hlcmUgd2Ugd2FsayB0aHJvdWdoIHRoZSBjaHVua3MsIHdoaWNoIGVpdGhlciBpbmNsdWRlIHN0cmluZ3Mgb2ZcbiAgICogc2V2ZXJhbCBjaGFyYWN0ZXJzLCBvciBudW1lcmljYWwgY2hhcmFjdGVyIGNvZGVzLlxuICAgKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaW4gYSBsb29wIGluc3RlYWQgb2YgYSBjYWxsIGlzIHNvIHRoZSBzdGFjayBjYW5cbiAgICogZHJhaW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gbWFpbigpIHtcbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgY2h1bmtJbmRleFxuXG4gICAgd2hpbGUgKHBvaW50Ll9pbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gY2h1bmtzW3BvaW50Ll9pbmRleF1cblxuICAgICAgLy8gSWYgd2XigJlyZSBpbiBhIGJ1ZmZlciBjaHVuaywgbG9vcCB0aHJvdWdoIGl0LlxuICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2h1bmtJbmRleCA9IHBvaW50Ll9pbmRleFxuXG4gICAgICAgIGlmIChwb2ludC5fYnVmZmVySW5kZXggPCAwKSB7XG4gICAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gMFxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgIHBvaW50Ll9pbmRleCA9PT0gY2h1bmtJbmRleCAmJlxuICAgICAgICAgIHBvaW50Ll9idWZmZXJJbmRleCA8IGNodW5rLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBnbyhjaHVuay5jaGFyQ29kZUF0KHBvaW50Ll9idWZmZXJJbmRleCkpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdvKGNodW5rKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFsIHdpdGggb25lIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdvKGNvZGUpIHtcbiAgICBhc3NlcnQoY29uc3VtZWQgPT09IHRydWUsICdleHBlY3RlZCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQnKVxuICAgIGNvbnN1bWVkID0gdW5kZWZpbmVkXG4gICAgZGVidWcoJ21haW46IHBhc3NpbmcgYCVzYCB0byAlcycsIGNvZGUsIHN0YXRlICYmIHN0YXRlLm5hbWUpXG4gICAgZXhwZWN0ZWRDb2RlID0gY29kZVxuICAgIGFzc2VydCh0eXBlb2Ygc3RhdGUgPT09ICdmdW5jdGlvbicsICdleHBlY3RlZCBzdGF0ZScpXG4gICAgc3RhdGUgPSBzdGF0ZShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydjb25zdW1lJ119ICovXG4gIGZ1bmN0aW9uIGNvbnN1bWUoY29kZSkge1xuICAgIGFzc2VydChjb2RlID09PSBleHBlY3RlZENvZGUsICdleHBlY3RlZCBnaXZlbiBjb2RlIHRvIGVxdWFsIGV4cGVjdGVkIGNvZGUnKVxuXG4gICAgZGVidWcoJ2NvbnN1bWU6IGAlc2AnLCBjb2RlKVxuXG4gICAgYXNzZXJ0KFxuICAgICAgY29uc3VtZWQgPT09IHVuZGVmaW5lZCxcbiAgICAgICdleHBlY3RlZCBjb2RlIHRvIG5vdCBoYXZlIGJlZW4gY29uc3VtZWQ6IHRoaXMgbWlnaHQgYmUgYmVjYXVzZSBgcmV0dXJuIHgoY29kZSlgIGluc3RlYWQgb2YgYHJldHVybiB4YCB3YXMgdXNlZCdcbiAgICApXG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gbnVsbFxuICAgICAgICA/IGNvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgY29udGV4dC5ldmVudHNbY29udGV4dC5ldmVudHMubGVuZ3RoIC0gMV1bMF0gPT09ICdleGl0J1xuICAgICAgICA6IGNvbnRleHQuZXZlbnRzW2NvbnRleHQuZXZlbnRzLmxlbmd0aCAtIDFdWzBdID09PSAnZW50ZXInLFxuICAgICAgJ2V4cGVjdGVkIGxhc3QgdG9rZW4gdG8gYmUgb3BlbidcbiAgICApXG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBwb2ludC5saW5lKytcbiAgICAgIHBvaW50LmNvbHVtbiA9IDFcbiAgICAgIHBvaW50Lm9mZnNldCArPSBjb2RlID09PSBjb2Rlcy5jYXJyaWFnZVJldHVybkxpbmVGZWVkID8gMiA6IDFcbiAgICAgIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKClcbiAgICAgIGRlYnVnKCdwb3NpdGlvbjogYWZ0ZXIgZW9sOiBgJWpgJywgcG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlICE9PSBjb2Rlcy52aXJ0dWFsU3BhY2UpIHtcbiAgICAgIHBvaW50LmNvbHVtbisrXG4gICAgICBwb2ludC5vZmZzZXQrK1xuICAgIH1cblxuICAgIC8vIE5vdCBpbiBhIHN0cmluZyBjaHVuay5cbiAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4IDwgMCkge1xuICAgICAgcG9pbnQuX2luZGV4KytcbiAgICB9IGVsc2Uge1xuICAgICAgcG9pbnQuX2J1ZmZlckluZGV4KytcblxuICAgICAgLy8gQXQgZW5kIG9mIHN0cmluZyBjaHVuay5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUG9pbnRzIHcvIG5vbi1uZWdhdGl2ZSBgX2J1ZmZlckluZGV4YCByZWZlcmVuY2VcbiAgICAgIC8vIHN0cmluZ3MuXG4gICAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4ID09PSBjaHVua3NbcG9pbnQuX2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gLTFcbiAgICAgICAgcG9pbnQuX2luZGV4KytcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci5cbiAgICBjb250ZXh0LnByZXZpb3VzID0gY29kZVxuXG4gICAgLy8gTWFyayBhcyBjb25zdW1lZC5cbiAgICBjb25zdW1lZCA9IHRydWVcbiAgfVxuXG4gIC8qKiBAdHlwZSB7RWZmZWN0c1snZW50ZXInXX0gKi9cbiAgZnVuY3Rpb24gZW50ZXIodHlwZSwgZmllbGRzKSB7XG4gICAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFBhdGNoIGluc3RlYWQgb2YgYXNzaWduIHJlcXVpcmVkIGZpZWxkcyB0byBoZWxwIEdDLlxuICAgIGNvbnN0IHRva2VuID0gZmllbGRzIHx8IHt9XG4gICAgdG9rZW4udHlwZSA9IHR5cGVcbiAgICB0b2tlbi5zdGFydCA9IG5vdygpXG5cbiAgICBhc3NlcnQodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnLCAnZXhwZWN0ZWQgc3RyaW5nIHR5cGUnKVxuICAgIGFzc2VydCh0eXBlLmxlbmd0aCA+IDAsICdleHBlY3RlZCBub24tZW1wdHkgc3RyaW5nJylcbiAgICBkZWJ1ZygnZW50ZXI6IGAlc2AnLCB0eXBlKVxuXG4gICAgY29udGV4dC5ldmVudHMucHVzaChbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdKVxuXG4gICAgc3RhY2sucHVzaCh0b2tlbilcblxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydleGl0J119ICovXG4gIGZ1bmN0aW9uIGV4aXQodHlwZSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsICdleHBlY3RlZCBzdHJpbmcgdHlwZScpXG4gICAgYXNzZXJ0KHR5cGUubGVuZ3RoID4gMCwgJ2V4cGVjdGVkIG5vbi1lbXB0eSBzdHJpbmcnKVxuXG4gICAgY29uc3QgdG9rZW4gPSBzdGFjay5wb3AoKVxuICAgIGFzc2VydCh0b2tlbiwgJ2Nhbm5vdCBjbG9zZSB3L28gb3BlbiB0b2tlbnMnKVxuICAgIHRva2VuLmVuZCA9IG5vdygpXG5cbiAgICBhc3NlcnQodHlwZSA9PT0gdG9rZW4udHlwZSwgJ2V4cGVjdGVkIGV4aXQgdG9rZW4gdG8gbWF0Y2ggY3VycmVudCB0b2tlbicpXG5cbiAgICBhc3NlcnQoXG4gICAgICAhKFxuICAgICAgICB0b2tlbi5zdGFydC5faW5kZXggPT09IHRva2VuLmVuZC5faW5kZXggJiZcbiAgICAgICAgdG9rZW4uc3RhcnQuX2J1ZmZlckluZGV4ID09PSB0b2tlbi5lbmQuX2J1ZmZlckluZGV4XG4gICAgICApLFxuICAgICAgJ2V4cGVjdGVkIG5vbi1lbXB0eSB0b2tlbiAoYCcgKyB0eXBlICsgJ2ApJ1xuICAgIClcblxuICAgIGRlYnVnKCdleGl0OiBgJXNgJywgdG9rZW4udHlwZSlcbiAgICBjb250ZXh0LmV2ZW50cy5wdXNoKFsnZXhpdCcsIHRva2VuLCBjb250ZXh0XSlcblxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSByZXN1bHRzLlxuICAgKlxuICAgKiBAdHlwZSB7UmV0dXJuSGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25zdWNjZXNzZnVsY29uc3RydWN0KGNvbnN0cnVjdCwgaW5mbykge1xuICAgIGFkZFJlc3VsdChjb25zdHJ1Y3QsIGluZm8uZnJvbSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjYXJkIHJlc3VsdHMuXG4gICAqXG4gICAqIEB0eXBlIHtSZXR1cm5IYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbnN1Y2Nlc3NmdWxjaGVjayhfLCBpbmZvKSB7XG4gICAgaW5mby5yZXN0b3JlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IHRvIGF0dGVtcHQvY2hlY2svaW50ZXJydXB0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JldHVybkhhbmRsZX0gb25yZXR1cm5cbiAgICogQHBhcmFtIHt7aW50ZXJydXB0PzogYm9vbGVhbiB8IHVuZGVmaW5lZH0gfCB1bmRlZmluZWR9IFtmaWVsZHNdXG4gICAqL1xuICBmdW5jdGlvbiBjb25zdHJ1Y3RGYWN0b3J5KG9ucmV0dXJuLCBmaWVsZHMpIHtcbiAgICByZXR1cm4gaG9va1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGVpdGhlciBhbiBvYmplY3QgbWFwcGluZyBjb2RlcyB0byBjb25zdHJ1Y3RzLCBhIGxpc3Qgb2ZcbiAgICAgKiBjb25zdHJ1Y3RzLCBvciBhIHNpbmdsZSBjb25zdHJ1Y3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD4gfCBDb25zdHJ1Y3QgfCBDb25zdHJ1Y3RSZWNvcmR9IGNvbnN0cnVjdHNcbiAgICAgKiBAcGFyYW0ge1N0YXRlfSByZXR1cm5TdGF0ZVxuICAgICAqIEBwYXJhbSB7U3RhdGUgfCB1bmRlZmluZWR9IFtib2d1c1N0YXRlXVxuICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBob29rKGNvbnN0cnVjdHMsIHJldHVyblN0YXRlLCBib2d1c1N0YXRlKSB7XG4gICAgICAvKiogQHR5cGUge0FycmF5PENvbnN0cnVjdD59ICovXG4gICAgICBsZXQgbGlzdE9mQ29uc3RydWN0c1xuICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgICBsZXQgY29uc3RydWN0SW5kZXhcbiAgICAgIC8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuICAgICAgbGV0IGN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIC8qKiBAdHlwZSB7SW5mb30gKi9cbiAgICAgIGxldCBpbmZvXG5cbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbnN0cnVjdHMpXG4gICAgICAgID8gLyogYzggaWdub3JlIG5leHQgMSAqL1xuICAgICAgICAgIGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMoY29uc3RydWN0cylcbiAgICAgICAgOiAndG9rZW5pemUnIGluIGNvbnN0cnVjdHNcbiAgICAgICAgPyAvLyBAdHMtZXhwZWN0LWVycm9yIExvb2tzIGxpa2UgYSBjb25zdHJ1Y3QuXG4gICAgICAgICAgaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhbY29uc3RydWN0c10pXG4gICAgICAgIDogaGFuZGxlTWFwT2ZDb25zdHJ1Y3RzKGNvbnN0cnVjdHMpXG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlIGEgbGlzdCBvZiBjb25zdHJ1Y3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtDb25zdHJ1Y3RSZWNvcmR9IG1hcFxuICAgICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBoYW5kbGVNYXBPZkNvbnN0cnVjdHMobWFwKSB7XG4gICAgICAgIHJldHVybiBzdGFydFxuXG4gICAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBjb2RlICE9PSBudWxsICYmIG1hcFtjb2RlXVxuICAgICAgICAgIGNvbnN0IGFsbCA9IGNvZGUgIT09IG51bGwgJiYgbWFwLm51bGxcbiAgICAgICAgICBjb25zdCBsaXN0ID0gW1xuICAgICAgICAgICAgLy8gVG8gZG86IGFkZCBtb3JlIGV4dGVuc2lvbiB0ZXN0cy5cbiAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDIgKi9cbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGRlZikgPyBkZWYgOiBkZWYgPyBbZGVmXSA6IFtdKSxcbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGFsbCkgPyBhbGwgOiBhbGwgPyBbYWxsXSA6IFtdKVxuICAgICAgICAgIF1cblxuICAgICAgICAgIHJldHVybiBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKGxpc3QpKGNvZGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBsaXN0IG9mIGNvbnN0cnVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD59IGxpc3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhsaXN0KSB7XG4gICAgICAgIGxpc3RPZkNvbnN0cnVjdHMgPSBsaXN0XG4gICAgICAgIGNvbnN0cnVjdEluZGV4ID0gMFxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGFzc2VydChib2d1c1N0YXRlLCAnZXhwZWN0ZWQgYGJvZ3VzU3RhdGVgIHRvIGJlIGdpdmVuJylcbiAgICAgICAgICByZXR1cm4gYm9ndXNTdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0W2NvbnN0cnVjdEluZGV4XSlcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBzaW5nbGUgY29uc3RydWN0LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlQ29uc3RydWN0KGNvbnN0cnVjdCkge1xuICAgICAgICByZXR1cm4gc3RhcnRcblxuICAgICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICAgICAgLy8gVG8gZG86IG5vdCBuZWVkZWQgdG8gc3RvcmUgaWYgdGhlcmUgaXMgbm8gYm9ndXMgc3RhdGUsIHByb2JhYmx5P1xuICAgICAgICAgIC8vIEN1cnJlbnRseSBkb2VzbuKAmXQgd29yayBiZWNhdXNlIGBpbnNwZWN0YCBpbiBkb2N1bWVudCBkb2VzIGEgY2hlY2tcbiAgICAgICAgICAvLyB3L28gYSBib2d1cywgd2hpY2ggZG9lc27igJl0IG1ha2Ugc2Vuc2UuIEJ1dCBpdCBkb2VzIHNlZW0gdG8gaGVscCBwZXJmXG4gICAgICAgICAgLy8gYnkgbm90IHN0b3JpbmcuXG4gICAgICAgICAgaW5mbyA9IHN0b3JlKClcbiAgICAgICAgICBjdXJyZW50Q29uc3RydWN0ID0gY29uc3RydWN0XG5cbiAgICAgICAgICBpZiAoIWNvbnN0cnVjdC5wYXJ0aWFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgICAgIGFzc2VydChcbiAgICAgICAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLFxuICAgICAgICAgICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25zdHJ1Y3QubmFtZSAmJlxuICAgICAgICAgICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoY29uc3RydWN0Lm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC50b2tlbml6ZS5jYWxsKFxuICAgICAgICAgICAgLy8gSWYgd2UgZG8gaGF2ZSBmaWVsZHMsIGNyZWF0ZSBhbiBvYmplY3Qgdy8gYGNvbnRleHRgIGFzIGl0c1xuICAgICAgICAgICAgLy8gcHJvdG90eXBlLlxuICAgICAgICAgICAgLy8gVGhpcyBhbGxvd3MgYSDigJxsaXZlIGJpbmRpbmfigJ0sIHdoaWNoIGlzIG5lZWRlZCBmb3IgYGludGVycnVwdGAuXG4gICAgICAgICAgICBmaWVsZHMgPyBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoY29udGV4dCksIGZpZWxkcykgOiBjb250ZXh0LFxuICAgICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICAgIG9rLFxuICAgICAgICAgICAgbm9rXG4gICAgICAgICAgKShjb2RlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICBmdW5jdGlvbiBvayhjb2RlKSB7XG4gICAgICAgIGFzc2VydChjb2RlID09PSBleHBlY3RlZENvZGUsICdleHBlY3RlZCBjb2RlJylcbiAgICAgICAgY29uc3VtZWQgPSB0cnVlXG4gICAgICAgIG9ucmV0dXJuKGN1cnJlbnRDb25zdHJ1Y3QsIGluZm8pXG4gICAgICAgIHJldHVybiByZXR1cm5TdGF0ZVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgZnVuY3Rpb24gbm9rKGNvZGUpIHtcbiAgICAgICAgYXNzZXJ0KGNvZGUgPT09IGV4cGVjdGVkQ29kZSwgJ2V4cGVjdGVkIGNvZGUnKVxuICAgICAgICBjb25zdW1lZCA9IHRydWVcbiAgICAgICAgaW5mby5yZXN0b3JlKClcblxuICAgICAgICBpZiAoKytjb25zdHJ1Y3RJbmRleCA8IGxpc3RPZkNvbnN0cnVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbnN0cnVjdChsaXN0T2ZDb25zdHJ1Y3RzW2NvbnN0cnVjdEluZGV4XSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBib2d1c1N0YXRlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBhZGRSZXN1bHQoY29uc3RydWN0LCBmcm9tKSB7XG4gICAgaWYgKGNvbnN0cnVjdC5yZXNvbHZlQWxsICYmICFyZXNvbHZlQWxsQ29uc3RydWN0cy5pbmNsdWRlcyhjb25zdHJ1Y3QpKSB7XG4gICAgICByZXNvbHZlQWxsQ29uc3RydWN0cy5wdXNoKGNvbnN0cnVjdClcbiAgICB9XG5cbiAgICBpZiAoY29uc3RydWN0LnJlc29sdmUpIHtcbiAgICAgIHNwbGljZShcbiAgICAgICAgY29udGV4dC5ldmVudHMsXG4gICAgICAgIGZyb20sXG4gICAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCAtIGZyb20sXG4gICAgICAgIGNvbnN0cnVjdC5yZXNvbHZlKGNvbnRleHQuZXZlbnRzLnNsaWNlKGZyb20pLCBjb250ZXh0KVxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChjb25zdHJ1Y3QucmVzb2x2ZVRvKSB7XG4gICAgICBjb250ZXh0LmV2ZW50cyA9IGNvbnN0cnVjdC5yZXNvbHZlVG8oY29udGV4dC5ldmVudHMsIGNvbnRleHQpXG4gICAgfVxuXG4gICAgYXNzZXJ0KFxuICAgICAgY29uc3RydWN0LnBhcnRpYWwgfHxcbiAgICAgICAgY29udGV4dC5ldmVudHMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgIGNvbnRleHQuZXZlbnRzW2NvbnRleHQuZXZlbnRzLmxlbmd0aCAtIDFdWzBdID09PSAnZXhpdCcsXG4gICAgICAnZXhwZWN0ZWQgbGFzdCB0b2tlbiB0byBlbmQnXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7SW5mb31cbiAgICovXG4gIGZ1bmN0aW9uIHN0b3JlKCkge1xuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBub3coKVxuICAgIGNvbnN0IHN0YXJ0UHJldmlvdXMgPSBjb250ZXh0LnByZXZpb3VzXG4gICAgY29uc3Qgc3RhcnRDdXJyZW50Q29uc3RydWN0ID0gY29udGV4dC5jdXJyZW50Q29uc3RydWN0XG4gICAgY29uc3Qgc3RhcnRFdmVudHNJbmRleCA9IGNvbnRleHQuZXZlbnRzLmxlbmd0aFxuICAgIGNvbnN0IHN0YXJ0U3RhY2sgPSBBcnJheS5mcm9tKHN0YWNrKVxuXG4gICAgcmV0dXJuIHtyZXN0b3JlLCBmcm9tOiBzdGFydEV2ZW50c0luZGV4fVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3RvcmUoKSB7XG4gICAgICBwb2ludCA9IHN0YXJ0UG9pbnRcbiAgICAgIGNvbnRleHQucHJldmlvdXMgPSBzdGFydFByZXZpb3VzXG4gICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBzdGFydEN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCA9IHN0YXJ0RXZlbnRzSW5kZXhcbiAgICAgIHN0YWNrID0gc3RhcnRTdGFja1xuICAgICAgYWNjb3VudEZvclBvdGVudGlhbFNraXAoKVxuICAgICAgZGVidWcoJ3Bvc2l0aW9uOiByZXN0b3JlOiBgJWpgJywgcG9pbnQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGN1cnJlbnQgcG9pbnQgYSBiaXQgZm9yd2FyZCBpbiB0aGUgbGluZSB3aGVuIGl04oCZcyBvbiBhIGNvbHVtblxuICAgKiBza2lwLlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKCkge1xuICAgIGlmIChwb2ludC5saW5lIGluIGNvbHVtblN0YXJ0ICYmIHBvaW50LmNvbHVtbiA8IDIpIHtcbiAgICAgIHBvaW50LmNvbHVtbiA9IGNvbHVtblN0YXJ0W3BvaW50LmxpbmVdXG4gICAgICBwb2ludC5vZmZzZXQgKz0gY29sdW1uU3RhcnRbcG9pbnQubGluZV0gLSAxXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjaHVua3MgZnJvbSBhIHNsaWNlIG9mIGNodW5rcyBpbiB0aGUgcmFuZ2Ugb2YgYSB0b2tlbi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PENodW5rPn0gY2h1bmtzXG4gKiBAcGFyYW0ge1BpY2s8VG9rZW4sICdlbmQnIHwgJ3N0YXJ0Jz59IHRva2VuXG4gKiBAcmV0dXJucyB7QXJyYXk8Q2h1bms+fVxuICovXG5mdW5jdGlvbiBzbGljZUNodW5rcyhjaHVua3MsIHRva2VuKSB7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSB0b2tlbi5zdGFydC5faW5kZXhcbiAgY29uc3Qgc3RhcnRCdWZmZXJJbmRleCA9IHRva2VuLnN0YXJ0Ll9idWZmZXJJbmRleFxuICBjb25zdCBlbmRJbmRleCA9IHRva2VuLmVuZC5faW5kZXhcbiAgY29uc3QgZW5kQnVmZmVySW5kZXggPSB0b2tlbi5lbmQuX2J1ZmZlckluZGV4XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgdmlld1xuXG4gIGlmIChzdGFydEluZGV4ID09PSBlbmRJbmRleCkge1xuICAgIGFzc2VydChlbmRCdWZmZXJJbmRleCA+IC0xLCAnZXhwZWN0ZWQgbm9uLW5lZ2F0aXZlIGVuZCBidWZmZXIgaW5kZXgnKVxuICAgIGFzc2VydChzdGFydEJ1ZmZlckluZGV4ID4gLTEsICdleHBlY3RlZCBub24tbmVnYXRpdmUgc3RhcnQgYnVmZmVyIGluZGV4JylcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICB2aWV3ID0gW2NodW5rc1tzdGFydEluZGV4XS5zbGljZShzdGFydEJ1ZmZlckluZGV4LCBlbmRCdWZmZXJJbmRleCldXG4gIH0gZWxzZSB7XG4gICAgdmlldyA9IGNodW5rcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcblxuICAgIGlmIChzdGFydEJ1ZmZlckluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGhlYWQgPSB2aWV3WzBdXG4gICAgICBpZiAodHlwZW9mIGhlYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZpZXdbMF0gPSBoZWFkLnNsaWNlKHN0YXJ0QnVmZmVySW5kZXgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3NlcnQoc3RhcnRCdWZmZXJJbmRleCA9PT0gMCwgJ2V4cGVjdGVkIGBzdGFydEJ1ZmZlckluZGV4YCB0byBiZSBgMGAnKVxuICAgICAgICB2aWV3LnNoaWZ0KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kQnVmZmVySW5kZXggPiAwKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICAgIHZpZXcucHVzaChjaHVua3NbZW5kSW5kZXhdLnNsaWNlKDAsIGVuZEJ1ZmZlckluZGV4KSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmlld1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgc2xpY2Ugb2YgY2h1bmtzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8Q2h1bms+fSBjaHVua3NcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2V4cGFuZFRhYnM9ZmFsc2VdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVDaHVua3MoY2h1bmtzLCBleHBhbmRUYWJzKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRUYWJcblxuICB3aGlsZSAoKytpbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICBjb25zdCBjaHVuayA9IGNodW5rc1tpbmRleF1cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgdmFsdWVcblxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IGNodW5rXG4gICAgfSBlbHNlXG4gICAgICBzd2l0Y2ggKGNodW5rKSB7XG4gICAgICAgIGNhc2UgY29kZXMuY2FycmlhZ2VSZXR1cm46IHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlcy5jclxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgY29kZXMubGluZUZlZWQ6IHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlcy5sZlxuXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgY29kZXMuY2FycmlhZ2VSZXR1cm5MaW5lRmVlZDoge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWVzLmNyICsgdmFsdWVzLmxmXG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBjb2Rlcy5ob3Jpem9udGFsVGFiOiB7XG4gICAgICAgICAgdmFsdWUgPSBleHBhbmRUYWJzID8gdmFsdWVzLnNwYWNlIDogdmFsdWVzLmh0XG5cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBjb2Rlcy52aXJ0dWFsU3BhY2U6IHtcbiAgICAgICAgICBpZiAoIWV4cGFuZFRhYnMgJiYgYXRUYWIpIGNvbnRpbnVlXG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZXMuc3BhY2VcblxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgYXNzZXJ0KHR5cGVvZiBjaHVuayA9PT0gJ251bWJlcicsICdleHBlY3RlZCBudW1iZXInKVxuICAgICAgICAgIC8vIEN1cnJlbnRseSBvbmx5IHJlcGxhY2VtZW50IGNoYXJhY3Rlci5cbiAgICAgICAgICB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2h1bmspXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIGF0VGFiID0gY2h1bmsgPT09IGNvZGVzLmhvcml6b250YWxUYWJcbiAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignJylcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/create-tokenizer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/content.js": +/*!*********************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/content.js ***! + \*********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"content\": () => (/* binding */ content)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst content = {tokenize: initializeContent}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.lineEnding)\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_4__.factorySpace)(effects, contentStart, micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.linePrefix)\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code !== micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof && !(0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code),\n 'expected anything other than a line ending or EOF'\n )\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_5__.constants.contentTypeText,\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.paragraph)\n effects.consume(code)\n return\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_2__.markdownLineEnding)(code)) {\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_3__.types.chunkText)\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvY29udGVudC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDRDQUE0QztBQUN6RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RDs7QUFFb0Q7QUFDTztBQUNQO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLGtCQUFrQjtBQUN0QixpQkFBaUI7O0FBRXhCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLCtDQUFNO0FBQ1YsZUFBZSxxRUFBUyxJQUFJLDRFQUFrQjtBQUM5QztBQUNBOztBQUVBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakMsV0FBVyxxRUFBWSx3QkFBd0IsNEVBQWdCO0FBQy9EOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVixlQUFlLHFFQUFTLEtBQUssNEVBQWtCO0FBQy9DO0FBQ0E7QUFDQSxrQkFBa0IsMkVBQWU7QUFDakM7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxnQ0FBZ0MsMkVBQWU7QUFDL0MsbUJBQW1CLHlGQUF5QjtBQUM1QztBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsaUJBQWlCLHFFQUFTO0FBQzFCLG1CQUFtQiwyRUFBZTtBQUNsQyxtQkFBbUIsMkVBQWU7QUFDbEM7QUFDQTtBQUNBOztBQUVBLFFBQVEsNEVBQWtCO0FBQzFCO0FBQ0EsbUJBQW1CLDJFQUFlO0FBQ2xDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvbWljcm9tYXJrL2Rldi9saWIvaW5pdGlhbGl6ZS9jb250ZW50LmpzPzljMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvbnRlbnQgPSB7dG9rZW5pemU6IGluaXRpYWxpemVDb250ZW50fVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVDb250ZW50KGVmZmVjdHMpIHtcbiAgY29uc3QgY29udGVudFN0YXJ0ID0gZWZmZWN0cy5hdHRlbXB0KFxuICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuY29udGVudEluaXRpYWwsXG4gICAgYWZ0ZXJDb250ZW50U3RhcnRDb25zdHJ1Y3QsXG4gICAgcGFyYWdyYXBoSW5pdGlhbFxuICApXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBwcmV2aW91c1xuXG4gIHJldHVybiBjb250ZW50U3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlckNvbnRlbnRTdGFydENvbnN0cnVjdChjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSA9PT0gY29kZXMuZW9mIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSxcbiAgICAgICdleHBlY3RlZCBlb2wgb3IgZW9mJ1xuICAgIClcblxuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5saW5lRW5kaW5nKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nKVxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgY29udGVudFN0YXJ0LCB0eXBlcy5saW5lUHJlZml4KVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gcGFyYWdyYXBoSW5pdGlhbChjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgY29kZSAhPT0gY29kZXMuZW9mICYmICFtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksXG4gICAgICAnZXhwZWN0ZWQgYW55dGhpbmcgb3RoZXIgdGhhbiBhIGxpbmUgZW5kaW5nIG9yIEVPRidcbiAgICApXG4gICAgZWZmZWN0cy5lbnRlcih0eXBlcy5wYXJhZ3JhcGgpXG4gICAgcmV0dXJuIGxpbmVTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gbGluZVN0YXJ0KGNvZGUpIHtcbiAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtUZXh0LCB7XG4gICAgICBjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlVGV4dCxcbiAgICAgIHByZXZpb3VzXG4gICAgfSlcblxuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgcHJldmlvdXMubmV4dCA9IHRva2VuXG4gICAgfVxuXG4gICAgcHJldmlvdXMgPSB0b2tlblxuXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua1RleHQpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZXMucGFyYWdyYXBoKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua1RleHQpXG4gICAgICByZXR1cm4gbGluZVN0YXJ0XG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/content.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/document.js": +/*!**********************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/document.js ***! + \**********************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"document\": () => (/* binding */ document)\n/* harmony export */ });\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-chunked */ \"../../../node_modules/micromark-util-chunked/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst document = {tokenize: initializeDocument}\n\n/** @type {Construct} */\nconst containerConstruct = {tokenize: tokenizeContainer}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n item[0].continuation,\n 'expected `continuation` to be defined on container construct'\n )\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined after continuation'\n )\n\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.currentConstruct,\n 'expected `currentConstruct` to be defined on tokenizer'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined on tokenizer'\n )\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow, {\n contentType: micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.contentTypeFlow,\n previous: childToken,\n _tokenizer: childFlow\n })\n\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof) {\n writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if ((0,micromark_util_character__WEBPACK_IMPORTED_MODULE_5__.markdownLineEnding)(code)) {\n effects.consume(code)\n writeToChild(effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when continuing')\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.chunkFlow\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(point, 'could not find previous flow chunk')\n\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n (0,micromark_util_chunked__WEBPACK_IMPORTED_MODULE_2__.splice)(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n entry[0].exit,\n 'expected `exit` to be defined on container construct'\n )\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n self.containerState,\n 'expected `containerState` to be defined when closing flow'\n )\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(childFlow, 'expected `childFlow` to be defined when closing it')\n childFlow.write([micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_3__.codes.eof])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n this.parser.constructs.disable.null,\n 'expected `disable.null` to be populated'\n )\n return (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_6__.factorySpace)(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_1__.types.linePrefix,\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_4__.constants.tabSize\n )\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZG9jdW1lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLGFBQWEsMENBQTBDO0FBQ3ZELGFBQWEsK0NBQStDO0FBQzVELGFBQWEsaURBQWlEO0FBQzlELGFBQWEsNENBQTRDO0FBQ3pELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsc0NBQXNDO0FBQ25ELGFBQWEsZ0RBQWdEO0FBQzdELGFBQWEsMENBQTBDO0FBQ3ZEOztBQUVBO0FBQ0EsYUFBYSw2QkFBNkI7QUFDMUM7O0FBRW9EO0FBQ087QUFDZDtBQUNPO0FBQ1E7QUFDUjtBQUNiOztBQUV2QyxXQUFXLGtCQUFrQjtBQUN0QixrQkFBa0I7O0FBRXpCLFdBQVcsV0FBVztBQUN0Qiw0QkFBNEI7O0FBRTVCO0FBQ0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0EsYUFBYSw2QkFBNkI7QUFDMUM7QUFDQSxhQUFhLG1CQUFtQjtBQUNoQztBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sK0NBQU07QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGFBQWEsT0FBTztBQUNwQjtBQUNBLElBQUksOENBQU07QUFDVjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELDJF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Q0EsVUFBVTtBQUNWLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxFQUFFLDhDQUFNO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsU0FBUyxxRUFBWTtBQUNyQjtBQUNBO0FBQ0EsSUFBSSw0RUFBZ0I7QUFDcEI7QUFDQTtBQUNBLFFBQVEsaUZBQWlCO0FBQ3pCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZG9jdW1lbnQuanM/OWIzZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29udGFpbmVyU3RhdGV9IENvbnRhaW5lclN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7W0NvbnN0cnVjdCwgQ29udGFpbmVyU3RhdGVdfSBTdGFja0l0ZW1cbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG4vKiogQHR5cGUge0luaXRpYWxDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgZG9jdW1lbnQgPSB7dG9rZW5pemU6IGluaXRpYWxpemVEb2N1bWVudH1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBjb250YWluZXJDb25zdHJ1Y3QgPSB7dG9rZW5pemU6IHRva2VuaXplQ29udGFpbmVyfVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVEb2N1bWVudChlZmZlY3RzKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7QXJyYXk8U3RhY2tJdGVtPn0gKi9cbiAgY29uc3Qgc3RhY2sgPSBbXVxuICBsZXQgY29udGludWVkID0gMFxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dCB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNoaWxkRmxvd1xuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2hpbGRUb2tlblxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGxpbmVTdGFydE9mZnNldFxuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBGaXJzdCB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIG9wZW4gYmxvY2tzLCBzdGFydGluZyB3aXRoIHRoZSByb290XG4gICAgLy8gZG9jdW1lbnQsIGFuZCBkZXNjZW5kaW5nIHRocm91Z2ggbGFzdCBjaGlsZHJlbiBkb3duIHRvIHRoZSBsYXN0IG9wZW5cbiAgICAvLyBibG9jay5cbiAgICAvLyBFYWNoIGJsb2NrIGltcG9zZXMgYSBjb25kaXRpb24gdGhhdCB0aGUgbGluZSBtdXN0IHNhdGlzZnkgaWYgdGhlIGJsb2NrIGlzXG4gICAgLy8gdG8gcmVtYWluIG9wZW4uXG4gICAgLy8gRm9yIGV4YW1wbGUsIGEgYmxvY2sgcXVvdGUgcmVxdWlyZXMgYSBgPmAgY2hhcmFjdGVyLlxuICAgIC8vIEEgcGFyYWdyYXBoIHJlcXVpcmVzIGEgbm9uLWJsYW5rIGxpbmUuXG4gICAgLy8gSW4gdGhpcyBwaGFzZSB3ZSBtYXkgbWF0Y2ggYWxsIG9yIGp1c3Qgc29tZSBvZiB0aGUgb3BlbiBibG9ja3MuXG4gICAgLy8gQnV0IHdlIGNhbm5vdCBjbG9zZSB1bm1hdGNoZWQgYmxvY2tzIHlldCwgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBhIGxhenlcbiAgICAvLyBjb250aW51YXRpb24gbGluZS5cbiAgICBpZiAoY29udGludWVkIDwgc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBpdGVtID0gc3RhY2tbY29udGludWVkXVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGl0ZW1bMV1cbiAgICAgIGFzc2VydChcbiAgICAgICAgaXRlbVswXS5jb250aW51YXRpb24sXG4gICAgICAgICdleHBlY3RlZCBgY29udGludWF0aW9uYCB0byBiZSBkZWZpbmVkIG9uIGNvbnRhaW5lciBjb25zdHJ1Y3QnXG4gICAgICApXG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICBpdGVtWzBdLmNvbnRpbnVhdGlvbixcbiAgICAgICAgZG9jdW1lbnRDb250aW51ZSxcbiAgICAgICAgY2hlY2tOZXdDb250YWluZXJzXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRG9uZS5cbiAgICByZXR1cm4gY2hlY2tOZXdDb250YWluZXJzKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBkb2N1bWVudENvbnRpbnVlKGNvZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLFxuICAgICAgJ2V4cGVjdGVkIGBjb250YWluZXJTdGF0ZWAgdG8gYmUgZGVmaW5lZCBhZnRlciBjb250aW51YXRpb24nXG4gICAgKVxuXG4gICAgY29udGludWVkKytcblxuICAgIC8vIE5vdGU6IHRoaXMgZmllbGQgaXMgY2FsbGVkIGBfY2xvc2VGbG93YCBidXQgaXQgYWxzbyBjbG9zZXMgY29udGFpbmVycy5cbiAgICAvLyBQZXJoYXBzIGEgZ29vZCBpZGVhIHRvIHJlbmFtZSBpdCBidXQgaXTigJlzIGFscmVhZHkgdXNlZCBpbiB0aGUgd2lsZCBieVxuICAgIC8vIGV4dGVuc2lvbnMuXG4gICAgaWYgKHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdykge1xuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG5cbiAgICAgIGlmIChjaGlsZEZsb3cpIHtcbiAgICAgICAgY2xvc2VGbG93KClcbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBkZWFsaW5nIHdpdGggbGF6eSBsaW5lcyBpbiBgd3JpdGVUb0NoaWxkYC5cbiAgICAgIGNvbnN0IGluZGV4QmVmb3JlRXhpdHMgPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgICAgIGxldCBpbmRleEJlZm9yZUZsb3cgPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZsb3cgY2h1bmsuXG4gICAgICB3aGlsZSAoaW5kZXhCZWZvcmVGbG93LS0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0udHlwZSA9PT0gdHlwZXMuY2h1bmtGbG93XG4gICAgICAgICkge1xuICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChwb2ludCwgJ2NvdWxkIG5vdCBmaW5kIHByZXZpb3VzIGZsb3cgY2h1bmsnKVxuXG4gICAgICBleGl0Q29udGFpbmVycyhjb250aW51ZWQpXG5cbiAgICAgIC8vIEZpeCBwb3NpdGlvbnMuXG4gICAgICBsZXQgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV54oCZcmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG5cbiAgICAgIHJldHVybiBjaGVja05ld0NvbnRhaW5lcnMoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhcnQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGNoZWNrTmV3Q29udGFpbmVycyhjb2RlKSB7XG4gICAgLy8gTmV4dCwgYWZ0ZXIgY29uc3VtaW5nIHRoZSBjb250aW51YXRpb24gbWFya2VycyBmb3IgZXhpc3RpbmcgYmxvY2tzLCB3ZVxuICAgIC8vIGxvb2sgZm9yIG5ldyBibG9jayBzdGFydHMgKGUuZy4gYD5gIGZvciBhIGJsb2NrIHF1b3RlKS5cbiAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBuZXcgYmxvY2sgc3RhcnQsIHdlIGNsb3NlIGFueSBibG9ja3MgdW5tYXRjaGVkIGluXG4gICAgLy8gc3RlcCAxIGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3IGJsb2NrIGFzIGEgY2hpbGQgb2YgdGhlIGxhc3QgbWF0Y2hlZFxuICAgIC8vIGJsb2NrLlxuICAgIGlmIChjb250aW51ZWQgPT09IHN0YWNrLmxlbmd0aCkge1xuICAgICAgLy8gTm8gbmVlZCB0byBgY2hlY2tgIHdoZXRoZXIgdGhlcmXigJlzIGEgY29udGFpbmVyLCBvZiBgZXhpdENvbnRhaW5lcnNgXG4gICAgICAvLyB3b3VsZCBiZSBtb290LlxuICAgICAgLy8gV2UgY2FuIGluc3RlYWQgaW1tZWRpYXRlbHkgYGF0dGVtcHRgIHRvIHBhcnNlIG9uZS5cbiAgICAgIGlmICghY2hpbGRGbG93KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGNvbmNyZXRlIGNvbnRlbnQsIHN1Y2ggYXMgYmxvY2sgSFRNTCBvciBmZW5jZWQgY29kZSxcbiAgICAgIC8vIHdlIGNhbuKAmXQgaGF2ZSBjb250YWluZXJzIOKAnHBpZXJjZeKAnSBpbnRvIHRoZW0sIHNvIHdlIGNhbiBpbW1lZGlhdGVseVxuICAgICAgLy8gc3RhcnQuXG4gICAgICBpZiAoY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QuY29uY3JldGUpIHtcbiAgICAgICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBkbyBoYXZlIGZsb3csIGl0IGNvdWxkIHN0aWxsIGJlIGEgYmxhbmsgbGluZSxcbiAgICAgIC8vIGJ1dCB3ZeKAmWQgYmUgaW50ZXJydXB0aW5nIGl0IHcvIGEgbmV3IGNvbnRhaW5lciBpZiB0aGVyZeKAmXMgYSBjdXJyZW50XG4gICAgICAvLyBjb25zdHJ1Y3QuXG4gICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogcmVtb3ZlIGBfZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja2AgKG5vIGxvbmdlclxuICAgICAgLy8gbmVlZGVkIGluIG1pY3JvbWFyay1leHRlbnNpb24tZ2ZtLXRhYmxlQDEuMC42KS5cbiAgICAgIHNlbGYuaW50ZXJydXB0ID0gQm9vbGVhbihcbiAgICAgICAgY2hpbGRGbG93LmN1cnJlbnRDb25zdHJ1Y3QgJiYgIWNoaWxkRmxvdy5fZ2ZtVGFibGVEeW5hbWljSW50ZXJydXB0SGFja1xuICAgICAgKVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIGEgbmV3IGNvbnRhaW5lci5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGNvbnRhaW5lckNvbnN0cnVjdCxcbiAgICAgIHRoZXJlSXNBTmV3Q29udGFpbmVyLFxuICAgICAgdGhlcmVJc05vTmV3Q29udGFpbmVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc0FOZXdDb250YWluZXIoY29kZSkge1xuICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuICAgIHJldHVybiBkb2N1bWVudENvbnRpbnVlZChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gdGhlcmVJc05vTmV3Q29udGFpbmVyKGNvZGUpIHtcbiAgICBzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gPSBjb250aW51ZWQgIT09IHN0YWNrLmxlbmd0aFxuICAgIGxpbmVTdGFydE9mZnNldCA9IHNlbGYubm93KCkub2Zmc2V0XG4gICAgcmV0dXJuIGZsb3dTdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZG9jdW1lbnRDb250aW51ZWQoY29kZSkge1xuICAgIC8vIFRyeSBuZXcgY29udGFpbmVycy5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0ge31cbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgY29udGFpbmVyQ29uc3RydWN0LFxuICAgICAgY29udGFpbmVyQ29udGludWUsXG4gICAgICBmbG93U3RhcnRcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBjb250YWluZXJDb250aW51ZShjb2RlKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5jdXJyZW50Q29uc3RydWN0LFxuICAgICAgJ2V4cGVjdGVkIGBjdXJyZW50Q29uc3RydWN0YCB0byBiZSBkZWZpbmVkIG9uIHRva2VuaXplcidcbiAgICApXG4gICAgYXNzZXJ0KFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSxcbiAgICAgICdleHBlY3RlZCBgY29udGFpbmVyU3RhdGVgIHRvIGJlIGRlZmluZWQgb24gdG9rZW5pemVyJ1xuICAgIClcbiAgICBjb250aW51ZWQrK1xuICAgIHN0YWNrLnB1c2goW3NlbGYuY3VycmVudENvbnN0cnVjdCwgc2VsZi5jb250YWluZXJTdGF0ZV0pXG4gICAgLy8gVHJ5IGFub3RoZXIuXG4gICAgcmV0dXJuIGRvY3VtZW50Q29udGludWVkKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBmbG93U3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBjb2Rlcy5lb2YpIHtcbiAgICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgICBleGl0Q29udGFpbmVycygwKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjaGlsZEZsb3cgPSBjaGlsZEZsb3cgfHwgc2VsZi5wYXJzZXIuZmxvdyhzZWxmLm5vdygpKVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuY2h1bmtGbG93LCB7XG4gICAgICBjb250ZW50VHlwZTogY29uc3RhbnRzLmNvbnRlbnRUeXBlRmxvdyxcbiAgICAgIHByZXZpb3VzOiBjaGlsZFRva2VuLFxuICAgICAgX3Rva2VuaXplcjogY2hpbGRGbG93XG4gICAgfSlcblxuICAgIHJldHVybiBmbG93Q29udGludWUoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGZsb3dDb250aW51ZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgd3JpdGVUb0NoaWxkKGVmZmVjdHMuZXhpdCh0eXBlcy5jaHVua0Zsb3cpLCB0cnVlKVxuICAgICAgZXhpdENvbnRhaW5lcnMoMClcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICB3cml0ZVRvQ2hpbGQoZWZmZWN0cy5leGl0KHR5cGVzLmNodW5rRmxvdykpXG4gICAgICAvLyBHZXQgcmVhZHkgZm9yIHRoZSBuZXh0IGxpbmUuXG4gICAgICBjb250aW51ZWQgPSAwXG4gICAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGZsb3dDb250aW51ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2VvZl1cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiB3cml0ZVRvQ2hpbGQodG9rZW4sIGVvZikge1xuICAgIGFzc2VydChjaGlsZEZsb3csICdleHBlY3RlZCBgY2hpbGRGbG93YCB0byBiZSBkZWZpbmVkIHdoZW4gY29udGludWluZycpXG4gICAgY29uc3Qgc3RyZWFtID0gc2VsZi5zbGljZVN0cmVhbSh0b2tlbilcbiAgICBpZiAoZW9mKSBzdHJlYW0ucHVzaChudWxsKVxuICAgIHRva2VuLnByZXZpb3VzID0gY2hpbGRUb2tlblxuICAgIGlmIChjaGlsZFRva2VuKSBjaGlsZFRva2VuLm5leHQgPSB0b2tlblxuICAgIGNoaWxkVG9rZW4gPSB0b2tlblxuICAgIGNoaWxkRmxvdy5kZWZpbmVTa2lwKHRva2VuLnN0YXJ0KVxuICAgIGNoaWxkRmxvdy53cml0ZShzdHJlYW0pXG5cbiAgICAvLyBBbHJpZ2h0LCBzbyB3ZSBqdXN0IGFkZGVkIGEgbGF6eSBsaW5lOlxuICAgIC8vXG4gICAgLy8gYGBgbWFya2Rvd25cbiAgICAvLyA+IGFcbiAgICAvLyBiLlxuICAgIC8vXG4gICAgLy8gT3I6XG4gICAgLy9cbiAgICAvLyA+IH5+fmNcbiAgICAvLyBkXG4gICAgLy9cbiAgICAvLyBPcjpcbiAgICAvL1xuICAgIC8vID4gfCBlIHxcbiAgICAvLyBmXG4gICAgLy8gYGBgXG4gICAgLy9cbiAgICAvLyBUaGUgY29uc3RydWN0IGluIHRoZSBzZWNvbmQgZXhhbXBsZSAoZmVuY2VkIGNvZGUpIGRvZXMgbm90IGFjY2VwdCBsYXp5XG4gICAgLy8gbGluZXMsIHNvIGl0IG1hcmtlZCBpdHNlbGYgYXMgZG9uZSBhdCB0aGUgZW5kIG9mIGl0cyBmaXJzdCBsaW5lLCBhbmRcbiAgICAvLyB0aGVuIHRoZSBjb250ZW50IGNvbnN0cnVjdCBwYXJzZXMgYGRgLlxuICAgIC8vIE1vc3QgY29uc3RydWN0cyBpbiBtYXJrZG93biBtYXRjaCBvbiB0aGUgZmlyc3QgbGluZTogaWYgdGhlIGZpcnN0IGxpbmVcbiAgICAvLyBmb3JtcyBhIGNvbnN0cnVjdCwgYSBub24tbGF6eSBsaW5lIGNhbuKAmXQg4oCcdW5tYWtl4oCdIGl0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvbnN0cnVjdCBpbiB0aGUgdGhpcmQgZXhhbXBsZSBpcyBwb3RlbnRpYWxseSBhIEdGTSB0YWJsZSwgYW5kXG4gICAgLy8gdGhvc2UgYXJlICp3ZWlyZCouXG4gICAgLy8gSXQgKmNvdWxkKiBiZSBhIHRhYmxlLCBmcm9tIHRoZSBmaXJzdCBsaW5lLCBpZiB0aGUgZm9sbG93aW5nIGxpbmVcbiAgICAvLyBtYXRjaGVzIGEgY29uZGl0aW9uLlxuICAgIC8vIEluIHRoaXMgY2FzZSwgdGhhdCBzZWNvbmQgbGluZSBpcyBsYXp5LCB3aGljaCDigJx1bm1ha2Vz4oCdIHRoZSBmaXJzdCBsaW5lXG4gICAgLy8gYW5kIHR1cm5zIHRoZSB3aG9sZSBpbnRvIG9uZSBjb250ZW50IGJsb2NrLlxuICAgIC8vXG4gICAgLy8gV2XigJl2ZSBub3cgcGFyc2VkIHRoZSBub24tbGF6eSBhbmQgdGhlIGxhenkgbGluZSwgYW5kIGNhbiBmaWd1cmUgb3V0XG4gICAgLy8gd2hldGhlciB0aGUgbGF6eSBsaW5lIHN0YXJ0ZWQgYSBuZXcgZmxvdyBibG9jay5cbiAgICAvLyBJZiBpdCBkaWQsIHdlIGV4aXQgdGhlIGN1cnJlbnQgY29udGFpbmVycyBiZXR3ZWVuIHRoZSB0d28gZmxvdyBibG9ja3MuXG4gICAgaWYgKHNlbGYucGFyc2VyLmxhenlbdG9rZW4uc3RhcnQubGluZV0pIHtcbiAgICAgIGxldCBpbmRleCA9IGNoaWxkRmxvdy5ldmVudHMubGVuZ3RoXG5cbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBUaGUgdG9rZW4gc3RhcnRzIGJlZm9yZSB0aGUgbGluZSBlbmRpbmfigKZcbiAgICAgICAgICBjaGlsZEZsb3cuZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQgPCBsaW5lU3RhcnRPZmZzZXQgJiZcbiAgICAgICAgICAvLyDigKZhbmQgZWl0aGVyIGlzIG5vdCBlbmRlZCB5ZXTigKZcbiAgICAgICAgICAoIWNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZCB8fFxuICAgICAgICAgICAgLy8g4oCmb3IgZW5kcyBhZnRlciBpdC5cbiAgICAgICAgICAgIGNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIEV4aXQ6IHRoZXJl4oCZcyBzdGlsbCBzb21ldGhpbmcgb3Blbiwgd2hpY2ggbWVhbnMgaXTigJlzIGEgbGF6eSBsaW5lXG4gICAgICAgICAgLy8gcGFydCBvZiBzb21ldGhpbmcuXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBjbG9zaW5nIGZsb3cgaW4gYGRvY3VtZW50Q29udGludWVgLlxuICAgICAgY29uc3QgaW5kZXhCZWZvcmVFeGl0cyA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgICAgbGV0IGluZGV4QmVmb3JlRmxvdyA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBzZWVuXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIHByZXZpb3VzIGNodW5rICh0aGUgb25lIGJlZm9yZSB0aGUgbGF6eSBsaW5lKS5cbiAgICAgIHdoaWxlIChpbmRleEJlZm9yZUZsb3ctLSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS50eXBlID09PSB0eXBlcy5jaHVua0Zsb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VlbiA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhc3NlcnQocG9pbnQsICdjb3VsZCBub3QgZmluZCBwcmV2aW91cyBmbG93IGNodW5rJylcblxuICAgICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuXG4gICAgICAvLyBGaXggcG9zaXRpb25zLlxuICAgICAgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG5cbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV54oCZcmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gZXhpdENvbnRhaW5lcnMoc2l6ZSkge1xuICAgIGxldCBpbmRleCA9IHN0YWNrLmxlbmd0aFxuXG4gICAgLy8gRXhpdCBvcGVuIGNvbnRhaW5lcnMuXG4gICAgd2hpbGUgKGluZGV4LS0gPiBzaXplKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrW2luZGV4XVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGVudHJ5WzFdXG4gICAgICBhc3NlcnQoXG4gICAgICAgIGVudHJ5WzBdLmV4aXQsXG4gICAgICAgICdleHBlY3RlZCBgZXhpdGAgdG8gYmUgZGVmaW5lZCBvbiBjb250YWluZXIgY29uc3RydWN0J1xuICAgICAgKVxuICAgICAgZW50cnlbMF0uZXhpdC5jYWxsKHNlbGYsIGVmZmVjdHMpXG4gICAgfVxuXG4gICAgc3RhY2subGVuZ3RoID0gc2l6ZVxuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VGbG93KCkge1xuICAgIGFzc2VydChcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUsXG4gICAgICAnZXhwZWN0ZWQgYGNvbnRhaW5lclN0YXRlYCB0byBiZSBkZWZpbmVkIHdoZW4gY2xvc2luZyBmbG93J1xuICAgIClcbiAgICBhc3NlcnQoY2hpbGRGbG93LCAnZXhwZWN0ZWQgYGNoaWxkRmxvd2AgdG8gYmUgZGVmaW5lZCB3aGVuIGNsb3NpbmcgaXQnKVxuICAgIGNoaWxkRmxvdy53cml0ZShbY29kZXMuZW9mXSlcbiAgICBjaGlsZFRva2VuID0gdW5kZWZpbmVkXG4gICAgY2hpbGRGbG93ID0gdW5kZWZpbmVkXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250YWluZXIoZWZmZWN0cywgb2ssIG5vaykge1xuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICBhc3NlcnQoXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwsXG4gICAgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCdcbiAgKVxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgZWZmZWN0cy5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZG9jdW1lbnQsIG9rLCBub2spLFxuICAgIHR5cGVzLmxpbmVQcmVmaXgsXG4gICAgdGhpcy5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiBjb25zdGFudHMudGFiU2l6ZVxuICApXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/document.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/flow.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/flow.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"flow\": () => (/* binding */ flow)\n/* harmony export */ });\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/blank-line.js\");\n/* harmony import */ var micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-core-commonmark */ \"../../../node_modules/micromark-core-commonmark/dev/lib/content.js\");\n/* harmony import */ var micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-factory-space */ \"../../../node_modules/micromark-factory-space/dev/index.js\");\n/* harmony import */ var micromark_util_character__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! micromark-util-character */ \"../../../node_modules/micromark-util-character/dev/index.js\");\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\n\n\n/** @type {InitialConstruct} */\nconst flow = {tokenize: initializeFlow}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_1__.blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n (0,micromark_factory_space__WEBPACK_IMPORTED_MODULE_2__.factorySpace)(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(micromark_core_commonmark__WEBPACK_IMPORTED_MODULE_3__.content, afterConstruct)\n ),\n micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.linePrefix\n )\n )\n )\n\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n ;(0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEndingBlank)\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof || (0,micromark_util_character__WEBPACK_IMPORTED_MODULE_6__.markdownLineEnding)(code),\n 'expected eol or eof'\n )\n\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_5__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n effects.consume(code)\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_4__.types.lineEnding)\n self.currentConstruct = undefined\n return initial\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZmxvdy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0EsYUFBYSxpREFBaUQ7QUFDOUQsYUFBYSw0Q0FBNEM7QUFDekQsYUFBYSxzQ0FBc0M7QUFDbkQsYUFBYSxnREFBZ0Q7QUFDN0Q7O0FBRTREO0FBQ1I7QUFDTztBQUNQO0FBQ0E7QUFDYjs7QUFFdkMsV0FBVyxrQkFBa0I7QUFDdEIsY0FBYzs7QUFFckI7QUFDQSxVQUFVO0FBQ1YsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUVBQVk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsOERBQU87QUFDakM7QUFDQSxRQUFRLDRFQUFnQjtBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCO0FBQ0EsSUFBSSwrQ0FBTTtBQUNWLGVBQWUscUVBQVMsSUFBSSw0RUFBa0I7QUFDOUM7QUFDQTs7QUFFQSxpQkFBaUIscUVBQVM7QUFDMUI7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixpRkFBcUI7QUFDdkM7QUFDQSxpQkFBaUIsaUZBQXFCO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLE9BQU87QUFDcEI7QUFDQSxJQUFJLDhDQUFNO0FBQ1YsZUFBZSxxRUFBUyxJQUFJLDRFQUFrQjtBQUM5QztBQUNBOztBQUVBLGlCQUFpQixxRUFBUztBQUMxQjtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLDRFQUFnQjtBQUNsQztBQUNBLGlCQUFpQiw0RUFBZ0I7QUFDakM7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvZmxvdy5qcz9hZjM5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2JsYW5rTGluZSwgY29udGVudH0gZnJvbSAnbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyaydcbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge3R5cGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvdHlwZXMuanMnXG5pbXBvcnQge29rIGFzIGFzc2VydH0gZnJvbSAndXZ1L2Fzc2VydCdcblxuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGZsb3cgPSB7dG9rZW5pemU6IGluaXRpYWxpemVGbG93fVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVGbG93KGVmZmVjdHMpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgaW5pdGlhbCA9IGVmZmVjdHMuYXR0ZW1wdChcbiAgICAvLyBUcnkgdG8gcGFyc2UgYSBibGFuayBsaW5lLlxuICAgIGJsYW5rTGluZSxcbiAgICBhdEJsYW5rRW5kaW5nLFxuICAgIC8vIFRyeSB0byBwYXJzZSBpbml0aWFsIGZsb3cgKGVzc2VudGlhbGx5LCBvbmx5IGNvZGUpLlxuICAgIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvd0luaXRpYWwsXG4gICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxcbiAgICAgICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgICAgICBlZmZlY3RzLmF0dGVtcHQoY29udGVudCwgYWZ0ZXJDb25zdHJ1Y3QpXG4gICAgICAgICksXG4gICAgICAgIHR5cGVzLmxpbmVQcmVmaXhcbiAgICAgIClcbiAgICApXG4gIClcblxuICByZXR1cm4gaW5pdGlhbFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGF0QmxhbmtFbmRpbmcoY29kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGNvZGUgPT09IGNvZGVzLmVvZiB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSksXG4gICAgICAnZXhwZWN0ZWQgZW9sIG9yIGVvZidcbiAgICApXG5cbiAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGVmZmVjdHMuZW50ZXIodHlwZXMubGluZUVuZGluZ0JsYW5rKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlcy5saW5lRW5kaW5nQmxhbmspXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyQ29uc3RydWN0KGNvZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBjb2RlID09PSBjb2Rlcy5lb2YgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpLFxuICAgICAgJ2V4cGVjdGVkIGVvbCBvciBlb2YnXG4gICAgKVxuXG4gICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBlZmZlY3RzLmVudGVyKHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KHR5cGVzLmxpbmVFbmRpbmcpXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/flow.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/initialize/text.js": +/*!******************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/initialize/text.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"resolver\": () => (/* binding */ resolver),\n/* harmony export */ \"string\": () => (/* binding */ string),\n/* harmony export */ \"text\": () => (/* binding */ text)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/* harmony import */ var micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! micromark-util-symbol/types.js */ \"../../../node_modules/micromark-util-symbol/types.js\");\n/* harmony import */ var uvu_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uvu/assert */ \"../../../node_modules/uvu/assert/index.mjs\");\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n\n\nconst resolver = {resolveAll: createResolver()}\nconst string = initializeFactory('string')\nconst text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n effects.consume(code)\n return\n }\n\n effects.enter(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data)\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data)\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.eof) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n // Always populated by defaults.\n (0,uvu_assert__WEBPACK_IMPORTED_MODULE_0__.ok)(Array.isArray(list), 'expected `disable.null` to be populated')\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data) {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineEnding) &&\n events[eventIndex - 1][1].type === micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.data\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.space) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.horizontalTab) {\n tabs = true\n size++\n } else if (chunk === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_1__.codes.virtualSpace) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length ||\n tabs ||\n size < micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_3__.constants.hardBreakPrefixSizeMin\n ? micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.lineSuffix\n : micromark_util_symbol_types_js__WEBPACK_IMPORTED_MODULE_2__.types.hardBreakTrailing,\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvdGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDRDQUE0QztBQUN6RCxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLGdEQUFnRDtBQUM3RDs7QUFFb0Q7QUFDUTtBQUNSO0FBQ2I7O0FBRWhDLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVQO0FBQ0EsV0FBVyxtQkFBbUI7QUFDOUIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1osWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLE9BQU87QUFDdEI7QUFDQSxtQkFBbUIscUVBQVM7QUFDNUI7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixzRUFBVTtBQUM5QjtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxPQUFPO0FBQ3RCO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQVU7QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsTUFBTTtBQUNyQixpQkFBaUI7QUFDakI7QUFDQTtBQUNBLG1CQUFtQixxRUFBUztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVEsOENBQU07O0FBRWQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNCQUFzQjtBQUNqQyxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBLGFBQWEsVUFBVTtBQUN2QjtBQUNBO0FBQ0EsZUFBZSxvQkFBb0I7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQsc0VBQVU7QUFDakU7QUFDQTtBQUNBO0FBQ0EsUUFBUSxxREFBcUQsc0VBQVU7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsNEVBQWdCO0FBQ3ZELHlDQUF5QyxzRUFBVTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx1REFBdUQsdUVBQVc7QUFDbEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLCtFQUFtQjtBQUM5QztBQUNBO0FBQ0EsVUFBVSxtQkFBbUIsOEVBQWtCO0FBQy9DO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnR0FBZ0M7QUFDbkQsZ0JBQWdCLDRFQUFnQjtBQUNoQyxnQkFBZ0IsbUZBQXVCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsK0JBQStCO0FBQy9COztBQUVBLG1DQUFtQzs7QUFFbkM7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL2luaXRpYWxpemUvdGV4dC5qcz8xM2I5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2NvZGVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1zeW1ib2wvY29kZXMuanMnXG5pbXBvcnQge2NvbnN0YW50c30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvbnN0YW50cy5qcydcbmltcG9ydCB7dHlwZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC90eXBlcy5qcydcbmltcG9ydCB7b2sgYXMgYXNzZXJ0fSBmcm9tICd1dnUvYXNzZXJ0J1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZXIgPSB7cmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoKX1cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSBpbml0aWFsaXplRmFjdG9yeSgnc3RyaW5nJylcbmV4cG9ydCBjb25zdCB0ZXh0ID0gaW5pdGlhbGl6ZUZhY3RvcnkoJ3RleHQnKVxuXG4vKipcbiAqIEBwYXJhbSB7J3N0cmluZycgfCAndGV4dCd9IGZpZWxkXG4gKiBAcmV0dXJucyB7SW5pdGlhbENvbnN0cnVjdH1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZUZhY3RvcnkoZmllbGQpIHtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbml6ZTogaW5pdGlhbGl6ZVRleHQsXG4gICAgcmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoXG4gICAgICBmaWVsZCA9PT0gJ3RleHQnID8gcmVzb2x2ZUFsbExpbmVTdWZmaXhlcyA6IHVuZGVmaW5lZFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICAgKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiBpbml0aWFsaXplVGV4dChlZmZlY3RzKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgICBjb25zdCBjb25zdHJ1Y3RzID0gdGhpcy5wYXJzZXIuY29uc3RydWN0c1tmaWVsZF1cbiAgICBjb25zdCB0ZXh0ID0gZWZmZWN0cy5hdHRlbXB0KGNvbnN0cnVjdHMsIHN0YXJ0LCBub3RUZXh0KVxuXG4gICAgcmV0dXJuIHN0YXJ0XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpID8gdGV4dChjb2RlKSA6IG5vdFRleHQoY29kZSlcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIG5vdFRleHQoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IGNvZGVzLmVvZikge1xuICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZXMuZGF0YSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgICAgaWYgKGF0QnJlYWsoY29kZSkpIHtcbiAgICAgICAgZWZmZWN0cy5leGl0KHR5cGVzLmRhdGEpXG4gICAgICAgIHJldHVybiB0ZXh0KGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIERhdGEuXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gY29kZXMuZW9mKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpc3QgPSBjb25zdHJ1Y3RzW2NvZGVdXG4gICAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgICBpZiAobGlzdCkge1xuICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuICAgICAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShsaXN0KSwgJ2V4cGVjdGVkIGBkaXNhYmxlLm51bGxgIHRvIGJlIHBvcHVsYXRlZCcpXG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2luZGV4XVxuICAgICAgICAgIGlmICghaXRlbS5wcmV2aW91cyB8fCBpdGVtLnByZXZpb3VzLmNhbGwoc2VsZiwgc2VsZi5wcmV2aW91cykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVzb2x2ZXIgfCB1bmRlZmluZWR9IFtleHRyYVJlc29sdmVyXVxuICogQHJldHVybnMge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiBjcmVhdGVSZXNvbHZlcihleHRyYVJlc29sdmVyKSB7XG4gIHJldHVybiByZXNvbHZlQWxsVGV4dFxuXG4gIC8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG4gIGZ1bmN0aW9uIHJlc29sdmVBbGxUZXh0KGV2ZW50cywgY29udGV4dCkge1xuICAgIGxldCBpbmRleCA9IC0xXG4gICAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGVudGVyXG5cbiAgICAvLyBBIHJhdGhlciBib3JpbmcgY29tcHV0YXRpb24gKHRvIG1lcmdlIGFkamFjZW50IGBkYXRhYCBldmVudHMpIHdoaWNoXG4gICAgLy8gaW1wcm92ZXMgbW0gcGVyZm9ybWFuY2UgYnkgMjklLlxuICAgIHdoaWxlICgrK2luZGV4IDw9IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIGlmIChlbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChldmVudHNbaW5kZXhdICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gdHlwZXMuZGF0YSkge1xuICAgICAgICAgIGVudGVyID0gaW5kZXhcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWV2ZW50c1tpbmRleF0gfHwgZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSB0eXBlcy5kYXRhKSB7XG4gICAgICAgIC8vIERvbuKAmXQgZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgb25lIGRhdGEgdG9rZW4uXG4gICAgICAgIGlmIChpbmRleCAhPT0gZW50ZXIgKyAyKSB7XG4gICAgICAgICAgZXZlbnRzW2VudGVyXVsxXS5lbmQgPSBldmVudHNbaW5kZXggLSAxXVsxXS5lbmRcbiAgICAgICAgICBldmVudHMuc3BsaWNlKGVudGVyICsgMiwgaW5kZXggLSBlbnRlciAtIDIpXG4gICAgICAgICAgaW5kZXggPSBlbnRlciArIDJcbiAgICAgICAgfVxuXG4gICAgICAgIGVudGVyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dHJhUmVzb2x2ZXIgPyBleHRyYVJlc29sdmVyKGV2ZW50cywgY29udGV4dCkgOiBldmVudHNcbiAgfVxufVxuXG4vKipcbiAqIEEgcmF0aGVyIHVnbHkgc2V0IG9mIGluc3RydWN0aW9ucyB3aGljaCBhZ2FpbiBsb29rcyBhdCBjaHVua3MgaW4gdGhlIGlucHV0XG4gKiBzdHJlYW0uXG4gKiBUaGUgcmVhc29uIHRvIGRvIHRoaXMgaGVyZSBpcyB0aGF0IGl0IGlzICptdWNoKiBmYXN0ZXIgdG8gcGFyc2UgaW4gcmV2ZXJzZS5cbiAqIEFuZCB0aGF0IHdlIGNhbuKAmXQgaG9vayBpbnRvIGBudWxsYCB0byBzcGxpdCB0aGUgbGluZSBzdWZmaXggYmVmb3JlIGFuIEVPRi5cbiAqIFRvIGRvOiBmaWd1cmUgb3V0IGlmIHdlIGNhbiBtYWtlIHRoaXMgaW50byBhIGNsZWFuIHV0aWxpdHksIG9yIGV2ZW4gaW4gY29yZS5cbiAqIEFzIGl0IHdpbGwgYmUgdXNlZnVsIGZvciBHRk1zIGxpdGVyYWwgYXV0b2xpbmsgZXh0ZW5zaW9uIChhbmQgbWF5YmUgZXZlblxuICogdGFibGVzPylcbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxMaW5lU3VmZml4ZXMoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBldmVudEluZGV4ID0gMCAvLyBTa2lwIGZpcnN0LlxuXG4gIHdoaWxlICgrK2V2ZW50SW5kZXggPD0gZXZlbnRzLmxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIChldmVudEluZGV4ID09PSBldmVudHMubGVuZ3RoIHx8XG4gICAgICAgIGV2ZW50c1tldmVudEluZGV4XVsxXS50eXBlID09PSB0eXBlcy5saW5lRW5kaW5nKSAmJlxuICAgICAgZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXS50eXBlID09PSB0eXBlcy5kYXRhXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXVxuICAgICAgY29uc3QgY2h1bmtzID0gY29udGV4dC5zbGljZVN0cmVhbShkYXRhKVxuICAgICAgbGV0IGluZGV4ID0gY2h1bmtzLmxlbmd0aFxuICAgICAgbGV0IGJ1ZmZlckluZGV4ID0gLTFcbiAgICAgIGxldCBzaXplID0gMFxuICAgICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHRhYnNcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBjaHVua3NbaW5kZXhdXG5cbiAgICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IGNodW5rLmxlbmd0aFxuXG4gICAgICAgICAgd2hpbGUgKGNodW5rLmNoYXJDb2RlQXQoYnVmZmVySW5kZXggLSAxKSA9PT0gY29kZXMuc3BhY2UpIHtcbiAgICAgICAgICAgIHNpemUrK1xuICAgICAgICAgICAgYnVmZmVySW5kZXgtLVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChidWZmZXJJbmRleCkgYnJlYWtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IC0xXG4gICAgICAgIH1cbiAgICAgICAgLy8gTnVtYmVyXG4gICAgICAgIGVsc2UgaWYgKGNodW5rID09PSBjb2Rlcy5ob3Jpem9udGFsVGFiKSB7XG4gICAgICAgICAgdGFicyA9IHRydWVcbiAgICAgICAgICBzaXplKytcbiAgICAgICAgfSBlbHNlIGlmIChjaHVuayA9PT0gY29kZXMudmlydHVhbFNwYWNlKSB7XG4gICAgICAgICAgLy8gRW1wdHlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXBsYWNlbWVudCBjaGFyYWN0ZXIsIGV4aXQuXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNpemUpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB7XG4gICAgICAgICAgdHlwZTpcbiAgICAgICAgICAgIGV2ZW50SW5kZXggPT09IGV2ZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgIHRhYnMgfHxcbiAgICAgICAgICAgIHNpemUgPCBjb25zdGFudHMuaGFyZEJyZWFrUHJlZml4U2l6ZU1pblxuICAgICAgICAgICAgICA/IHR5cGVzLmxpbmVTdWZmaXhcbiAgICAgICAgICAgICAgOiB0eXBlcy5oYXJkQnJlYWtUcmFpbGluZyxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgbGluZTogZGF0YS5lbmQubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogZGF0YS5lbmQuY29sdW1uIC0gc2l6ZSxcbiAgICAgICAgICAgIG9mZnNldDogZGF0YS5lbmQub2Zmc2V0IC0gc2l6ZSxcbiAgICAgICAgICAgIF9pbmRleDogZGF0YS5zdGFydC5faW5kZXggKyBpbmRleCxcbiAgICAgICAgICAgIF9idWZmZXJJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgPyBidWZmZXJJbmRleFxuICAgICAgICAgICAgICA6IGRhdGEuc3RhcnQuX2J1ZmZlckluZGV4ICsgYnVmZmVySW5kZXhcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZGF0YS5lbmQpXG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIHRva2VuLnN0YXJ0KVxuXG4gICAgICAgIGlmIChkYXRhLnN0YXJ0Lm9mZnNldCA9PT0gZGF0YS5lbmQub2Zmc2V0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCB0b2tlbilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBldmVudHMuc3BsaWNlKFxuICAgICAgICAgICAgZXZlbnRJbmRleCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBbJ2VudGVyJywgdG9rZW4sIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgdG9rZW4sIGNvbnRleHRdXG4gICAgICAgICAgKVxuICAgICAgICAgIGV2ZW50SW5kZXggKz0gMlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV2ZW50SW5kZXgrK1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/initialize/text.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/parse.js": +/*!********************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/parse.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parse\": () => (/* binding */ parse)\n/* harmony export */ });\n/* harmony import */ var micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-combine-extensions */ \"../../../node_modules/micromark-util-combine-extensions/index.js\");\n/* harmony import */ var _initialize_content_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./initialize/content.js */ \"../../../node_modules/micromark/dev/lib/initialize/content.js\");\n/* harmony import */ var _initialize_document_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialize/document.js */ \"../../../node_modules/micromark/dev/lib/initialize/document.js\");\n/* harmony import */ var _initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./initialize/flow.js */ \"../../../node_modules/micromark/dev/lib/initialize/flow.js\");\n/* harmony import */ var _initialize_text_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./initialize/text.js */ \"../../../node_modules/micromark/dev/lib/initialize/text.js\");\n/* harmony import */ var _create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-tokenizer.js */ \"../../../node_modules/micromark/dev/lib/create-tokenizer.js\");\n/* harmony import */ var _constructs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructs.js */ \"../../../node_modules/micromark/dev/lib/constructs.js\");\n/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nfunction parse(options) {\n const settings = options || {}\n const constructs = /** @type {FullNormalizedExtension} */ (\n (0,micromark_util_combine_extensions__WEBPACK_IMPORTED_MODULE_0__.combineExtensions)([_constructs_js__WEBPACK_IMPORTED_MODULE_1__, ...(settings.extensions || [])])\n )\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(_initialize_content_js__WEBPACK_IMPORTED_MODULE_2__.content),\n document: create(_initialize_document_js__WEBPACK_IMPORTED_MODULE_3__.document),\n flow: create(_initialize_flow_js__WEBPACK_IMPORTED_MODULE_4__.flow),\n string: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.string),\n text: create(_initialize_text_js__WEBPACK_IMPORTED_MODULE_5__.text)\n }\n\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return (0,_create_tokenizer_js__WEBPACK_IMPORTED_MODULE_6__.createTokenizer)(parser, initial, from)\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3BhcnNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxhQUFhLHVDQUF1QztBQUNwRCxhQUFhLHdEQUF3RDtBQUNyRSxhQUFhLGlEQUFpRDtBQUM5RCxhQUFhLDZDQUE2QztBQUMxRCxhQUFhLDZDQUE2QztBQUMxRDs7QUFFbUU7QUFDcEI7QUFDRTtBQUNSO0FBQ1E7QUFDSTtBQUNEOztBQUVwRDtBQUNBLFdBQVcsaUNBQWlDO0FBQzVDLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MseUJBQXlCO0FBQ3pELElBQUksb0ZBQWlCLEVBQUUsMkNBQWlCO0FBQ3hDOztBQUVBLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0Esb0JBQW9CLDJEQUFPO0FBQzNCLHFCQUFxQiw2REFBUTtBQUM3QixpQkFBaUIscURBQUk7QUFDckIsbUJBQW1CLHVEQUFNO0FBQ3pCLGlCQUFpQixxREFBSTtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBLGFBQWEscUVBQWU7QUFDNUI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmsvZGV2L2xpYi9wYXJzZS5qcz9iMzVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DcmVhdGV9IENyZWF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5GdWxsTm9ybWFsaXplZEV4dGVuc2lvbn0gRnVsbE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZUNvbnRleHR9IFBhcnNlQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZU9wdGlvbnN9IFBhcnNlT3B0aW9uc1xuICovXG5cbmltcG9ydCB7Y29tYmluZUV4dGVuc2lvbnN9IGZyb20gJ21pY3JvbWFyay11dGlsLWNvbWJpbmUtZXh0ZW5zaW9ucydcbmltcG9ydCB7Y29udGVudH0gZnJvbSAnLi9pbml0aWFsaXplL2NvbnRlbnQuanMnXG5pbXBvcnQge2RvY3VtZW50fSBmcm9tICcuL2luaXRpYWxpemUvZG9jdW1lbnQuanMnXG5pbXBvcnQge2Zsb3d9IGZyb20gJy4vaW5pdGlhbGl6ZS9mbG93LmpzJ1xuaW1wb3J0IHt0ZXh0LCBzdHJpbmd9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuaW1wb3J0IHtjcmVhdGVUb2tlbml6ZXJ9IGZyb20gJy4vY3JlYXRlLXRva2VuaXplci5qcydcbmltcG9ydCAqIGFzIGRlZmF1bHRDb25zdHJ1Y3RzIGZyb20gJy4vY29uc3RydWN0cy5qcydcblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICogQHJldHVybnMge1BhcnNlQ29udGV4dH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IGNvbnN0cnVjdHMgPSAvKiogQHR5cGUge0Z1bGxOb3JtYWxpemVkRXh0ZW5zaW9ufSAqLyAoXG4gICAgY29tYmluZUV4dGVuc2lvbnMoW2RlZmF1bHRDb25zdHJ1Y3RzLCAuLi4oc2V0dGluZ3MuZXh0ZW5zaW9ucyB8fCBbXSldKVxuICApXG5cbiAgLyoqIEB0eXBlIHtQYXJzZUNvbnRleHR9ICovXG4gIGNvbnN0IHBhcnNlciA9IHtcbiAgICBkZWZpbmVkOiBbXSxcbiAgICBsYXp5OiB7fSxcbiAgICBjb25zdHJ1Y3RzLFxuICAgIGNvbnRlbnQ6IGNyZWF0ZShjb250ZW50KSxcbiAgICBkb2N1bWVudDogY3JlYXRlKGRvY3VtZW50KSxcbiAgICBmbG93OiBjcmVhdGUoZmxvdyksXG4gICAgc3RyaW5nOiBjcmVhdGUoc3RyaW5nKSxcbiAgICB0ZXh0OiBjcmVhdGUodGV4dClcbiAgfVxuXG4gIHJldHVybiBwYXJzZXJcblxuICAvKipcbiAgICogQHBhcmFtIHtJbml0aWFsQ29uc3RydWN0fSBpbml0aWFsXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGUoaW5pdGlhbCkge1xuICAgIHJldHVybiBjcmVhdG9yXG4gICAgLyoqIEB0eXBlIHtDcmVhdGV9ICovXG4gICAgZnVuY3Rpb24gY3JlYXRvcihmcm9tKSB7XG4gICAgICByZXR1cm4gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbCwgZnJvbSlcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/parse.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/postprocess.js": +/*!**************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/postprocess.js ***! + \**************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"postprocess\": () => (/* binding */ postprocess)\n/* harmony export */ });\n/* harmony import */ var micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-subtokenize */ \"../../../node_modules/micromark-util-subtokenize/dev/index.js\");\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nfunction postprocess(events) {\n while (!(0,micromark_util_subtokenize__WEBPACK_IMPORTED_MODULE_0__.subtokenize)(events)) {\n // Empty\n }\n\n return events\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3Bvc3Rwcm9jZXNzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQSxhQUFhLHNDQUFzQztBQUNuRDs7QUFFc0Q7O0FBRXREO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLGFBQWE7QUFDYjtBQUNPO0FBQ1AsVUFBVSx1RUFBVztBQUNyQjtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3Bvc3Rwcm9jZXNzLmpzPzEyOGMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICovXG5cbmltcG9ydCB7c3VidG9rZW5pemV9IGZyb20gJ21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplJ1xuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqIEByZXR1cm5zIHtBcnJheTxFdmVudD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3N0cHJvY2VzcyhldmVudHMpIHtcbiAgd2hpbGUgKCFzdWJ0b2tlbml6ZShldmVudHMpKSB7XG4gICAgLy8gRW1wdHlcbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/postprocess.js\n"); + +/***/ }), + +/***/ "../../../node_modules/micromark/dev/lib/preprocess.js": +/*!*************************************************************!*\ + !*** ../../../node_modules/micromark/dev/lib/preprocess.js ***! + \*************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"preprocess\": () => (/* binding */ preprocess)\n/* harmony export */ });\n/* harmony import */ var micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! micromark-util-symbol/codes.js */ \"../../../node_modules/micromark-util-symbol/codes.js\");\n/* harmony import */ var micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! micromark-util-symbol/constants.js */ \"../../../node_modules/micromark-util-symbol/constants.js\");\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\n\n\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nfunction preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.byteOrderMarker) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (\n code === micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf &&\n startPosition === endPosition &&\n atCarriageReturn\n ) {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturnLineFeed)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.nul: {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.replacementCharacter)\n column++\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.ht: {\n next = Math.ceil(column / micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize) * micromark_util_symbol_constants_js__WEBPACK_IMPORTED_MODULE_1__.constants.tabSize\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.horizontalTab)\n while (column++ < next) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.virtualSpace)\n\n break\n }\n\n case micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lf: {\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.lineFeed)\n column = 1\n\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.carriageReturn)\n if (buffer) chunks.push(buffer)\n chunks.push(micromark_util_symbol_codes_js__WEBPACK_IMPORTED_MODULE_0__.codes.eof)\n }\n\n return chunks\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL21pY3JvbWFyay9kZXYvbGliL3ByZXByb2Nlc3MuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxhQUFhLHNDQUFzQztBQUNuRCxhQUFhLHFDQUFxQztBQUNsRCxhQUFhLHlDQUF5QztBQUN0RCxhQUFhLHNDQUFzQztBQUNuRDs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsNkJBQTZCO0FBQ3hDLFdBQVcsNEJBQTRCO0FBQ3ZDLGFBQWE7QUFDYjs7QUFFb0Q7QUFDUTs7QUFFNUQ7O0FBRUE7QUFDQSxhQUFhO0FBQ2I7QUFDTztBQUNQO0FBQ0E7QUFDQSxhQUFhLHFCQUFxQjtBQUNsQztBQUNBLGFBQWEscUJBQXFCO0FBQ2xDOztBQUVBOztBQUVBLGFBQWEsY0FBYztBQUMzQjtBQUNBLGVBQWUsY0FBYztBQUM3QjtBQUNBLGVBQWUseUJBQXlCO0FBQ3hDO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsZUFBZSxNQUFNO0FBQ3JCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0MsaUZBQXFCO0FBQ3ZEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsb0VBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHdGQUE0QjtBQUNoRDtBQUNBLFFBQVE7QUFDUjtBQUNBLHNCQUFzQixnRkFBb0I7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUscUVBQVM7QUFDeEIsd0JBQXdCLHNGQUEwQjtBQUNsRDs7QUFFQTtBQUNBOztBQUVBLGVBQWUsb0VBQVE7QUFDdkIsc0NBQXNDLGlGQUFpQixJQUFJLGlGQUFpQjtBQUM1RSx3QkFBd0IsK0VBQW1CO0FBQzNDLGdEQUFnRCw4RUFBa0I7O0FBRWxFO0FBQ0E7O0FBRUEsZUFBZSxvRUFBUTtBQUN2Qix3QkFBd0IsMEVBQWM7QUFDdEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHdDQUF3QyxnRkFBb0I7QUFDNUQ7QUFDQSxrQkFBa0IscUVBQVM7QUFDM0I7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9taWNyb21hcmsvZGV2L2xpYi9wcmVwcm9jZXNzLmpzP2YwMDUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNodW5rfSBDaHVua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVuY29kaW5nfSBFbmNvZGluZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5WYWx1ZX0gVmFsdWVcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBQcmVwcm9jZXNzb3JcbiAqIEBwYXJhbSB7VmFsdWV9IHZhbHVlXG4gKiBAcGFyYW0ge0VuY29kaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuY29kaW5nXVxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZD1mYWxzZV1cbiAqIEByZXR1cm5zIHtBcnJheTxDaHVuaz59XG4gKi9cblxuaW1wb3J0IHtjb2Rlc30gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3ltYm9sL2NvZGVzLmpzJ1xuaW1wb3J0IHtjb25zdGFudHN9IGZyb20gJ21pY3JvbWFyay11dGlsLXN5bWJvbC9jb25zdGFudHMuanMnXG5cbmNvbnN0IHNlYXJjaCA9IC9bXFwwXFx0XFxuXFxyXS9nXG5cbi8qKlxuICogQHJldHVybnMge1ByZXByb2Nlc3Nvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoKSB7XG4gIGxldCBjb2x1bW4gPSAxXG4gIGxldCBidWZmZXIgPSAnJ1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBzdGFydCA9IHRydWVcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRDYXJyaWFnZVJldHVyblxuXG4gIHJldHVybiBwcmVwcm9jZXNzb3JcblxuICAvKiogQHR5cGUge1ByZXByb2Nlc3Nvcn0gKi9cbiAgZnVuY3Rpb24gcHJlcHJvY2Vzc29yKHZhbHVlLCBlbmNvZGluZywgZW5kKSB7XG4gICAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gICAgY29uc3QgY2h1bmtzID0gW11cbiAgICAvKiogQHR5cGUge1JlZ0V4cE1hdGNoQXJyYXkgfCBudWxsfSAqL1xuICAgIGxldCBtYXRjaFxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBuZXh0XG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IHN0YXJ0UG9zaXRpb25cbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgZW5kUG9zaXRpb25cbiAgICAvKiogQHR5cGUge0NvZGV9ICovXG4gICAgbGV0IGNvZGVcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYEJ1ZmZlcmAgZG9lcyBhbGxvdyBhbiBlbmNvZGluZy5cbiAgICB2YWx1ZSA9IGJ1ZmZlciArIHZhbHVlLnRvU3RyaW5nKGVuY29kaW5nKVxuICAgIHN0YXJ0UG9zaXRpb24gPSAwXG4gICAgYnVmZmVyID0gJydcblxuICAgIGlmIChzdGFydCkge1xuICAgICAgLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgYWN0dWFsbHkgcGFyc2VzIEJPTXMgKGJ5dGUgb3JkZXIgbWFyaykuXG4gICAgICBpZiAodmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gY29kZXMuYnl0ZU9yZGVyTWFya2VyKSB7XG4gICAgICAgIHN0YXJ0UG9zaXRpb24rK1xuICAgICAgfVxuXG4gICAgICBzdGFydCA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHdoaWxlIChzdGFydFBvc2l0aW9uIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBzZWFyY2gubGFzdEluZGV4ID0gc3RhcnRQb3NpdGlvblxuICAgICAgbWF0Y2ggPSBzZWFyY2guZXhlYyh2YWx1ZSlcbiAgICAgIGVuZFBvc2l0aW9uID1cbiAgICAgICAgbWF0Y2ggJiYgbWF0Y2guaW5kZXggIT09IHVuZGVmaW5lZCA/IG1hdGNoLmluZGV4IDogdmFsdWUubGVuZ3RoXG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChlbmRQb3NpdGlvbilcblxuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBidWZmZXIgPSB2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvZGUgPT09IGNvZGVzLmxmICYmXG4gICAgICAgIHN0YXJ0UG9zaXRpb24gPT09IGVuZFBvc2l0aW9uICYmXG4gICAgICAgIGF0Q2FycmlhZ2VSZXR1cm5cbiAgICAgICkge1xuICAgICAgICBjaHVua3MucHVzaChjb2Rlcy5jYXJyaWFnZVJldHVybkxpbmVGZWVkKVxuICAgICAgICBhdENhcnJpYWdlUmV0dXJuID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikge1xuICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLmNhcnJpYWdlUmV0dXJuKVxuICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGFydFBvc2l0aW9uIDwgZW5kUG9zaXRpb24pIHtcbiAgICAgICAgICBjaHVua3MucHVzaCh2YWx1ZS5zbGljZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbikpXG4gICAgICAgICAgY29sdW1uICs9IGVuZFBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvblxuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgY2FzZSBjb2Rlcy5udWw6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLnJlcGxhY2VtZW50Q2hhcmFjdGVyKVxuICAgICAgICAgICAgY29sdW1uKytcblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIGNvZGVzLmh0OiB7XG4gICAgICAgICAgICBuZXh0ID0gTWF0aC5jZWlsKGNvbHVtbiAvIGNvbnN0YW50cy50YWJTaXplKSAqIGNvbnN0YW50cy50YWJTaXplXG4gICAgICAgICAgICBjaHVua3MucHVzaChjb2Rlcy5ob3Jpem9udGFsVGFiKVxuICAgICAgICAgICAgd2hpbGUgKGNvbHVtbisrIDwgbmV4dCkgY2h1bmtzLnB1c2goY29kZXMudmlydHVhbFNwYWNlKVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgY29kZXMubGY6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKGNvZGVzLmxpbmVGZWVkKVxuICAgICAgICAgICAgY29sdW1uID0gMVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB0cnVlXG4gICAgICAgICAgICBjb2x1bW4gPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0YXJ0UG9zaXRpb24gPSBlbmRQb3NpdGlvbiArIDFcbiAgICB9XG5cbiAgICBpZiAoZW5kKSB7XG4gICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikgY2h1bmtzLnB1c2goY29kZXMuY2FycmlhZ2VSZXR1cm4pXG4gICAgICBpZiAoYnVmZmVyKSBjaHVua3MucHVzaChidWZmZXIpXG4gICAgICBjaHVua3MucHVzaChjb2Rlcy5lb2YpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rc1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/micromark/dev/lib/preprocess.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/incircle.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/incircle.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"incircle\": () => (/* binding */ incircle),\n/* harmony export */ \"incirclefast\": () => (/* binding */ incirclefast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst iccerrboundA = (10 + 96 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst iccerrboundB = (4 + 48 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst iccerrboundC = (44 + 576 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst aa = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst cc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst v = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst axtbc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst aytbc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bxtca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bytca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cxtab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cytab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst bct = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cat = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abtt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bctt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst catt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _16b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _16c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _32 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(32);\nconst _32b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(32);\nconst _48 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _64 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(64);\n\nlet fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nlet fin2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\n\nfunction finadd(finlen, a, alen) {\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(finlen, fin, a, alen, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n let abtlen, bctlen, catlen;\n let abttlen, bcttlen, cattlen;\n let n1, n0;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n s1 = bdx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adx, _8), _8, adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdx, _8), _8, bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdx, _8), _8, cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n\n errbound = iccerrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n\n if (adxtail !== 0) {\n axtbclen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(axtbclen, axtbc, 2 * adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adytail, aytbc);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(aytbclen, aytbc, 2 * ady, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bxtcalen, bxtca, 2 * bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdytail, bytca);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bytcalen, bytca, 2 * bdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cxtablen, cxtab, 2 * cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdytail, cytab);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cytablen, cytab, 2 * cdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(axtbclen, axtbc, adxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * adx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, adxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n if (bdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(aytbclen, aytbc, adytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * ady, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, adytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bxtcalen, bxtca, bdxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * bdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, bdxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n if (cdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bytcalen, bytca, bdytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * bdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, bdytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cxtablen, cxtab, cdxtail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * cdx, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, cdxtail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n if (adytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(cytablen, cytab, cdytail, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n const len2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, 2 * cdy, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len2, _8, cdytail, _16b), _16b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n\n return fin[finlen - 1];\n}\n\nfunction incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n const alift = adx * adx + ady * ady;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n const blift = bdx * bdx + bdy * bdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n const clift = cdx * cdx + cdy * cdy;\n\n const det =\n alift * (bdxcdy - cdxbdy) +\n blift * (cdxady - adxcdy) +\n clift * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n const errbound = iccerrboundA * permanent;\n\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nfunction incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const ady = ay - dy;\n const bdx = bx - dx;\n const bdy = by - dy;\n const cdx = cx - dx;\n const cdy = cy - dy;\n\n const abdet = adx * bdy - bdx * ady;\n const bcdet = bdx * cdy - cdx * bdy;\n const cadet = cdx * ady - adx * cdy;\n const alift = adx * adx + ady * ady;\n const blift = bdx * bdx + bdy * bdy;\n const clift = cdx * cdx + cdy * cdy;\n\n return alift * bcdet + blift * cadet + clift * abdet;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbmNpcmNsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBa0c7O0FBRWxHLGdDQUFnQyw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2xELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTdELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFVBQVUsNkNBQUc7QUFDYixVQUFVLDZDQUFHO0FBQ2IsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7O0FBRWhCLFdBQVcsNkNBQUc7QUFDZCxZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHOztBQUVmLFVBQVUsNkNBQUc7QUFDYixXQUFXLDZDQUFHOztBQUVkO0FBQ0EsYUFBYSw2Q0FBRztBQUNoQixxQkFBcUIsWUFBWTtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBRXJCLHlCQUF5QiwrQ0FBSztBQUM5QixvQ0FBb0MsbURBQVM7QUFDN0MsZ0JBQWdCLCtDQUFLO0FBQ3JCLGdCQUFnQiwrQ0FBSztBQUNyQixnQkFBZ0IsK0NBQUs7QUFDckI7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbmNpcmNsZS5qcz84ZjBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXBzaWxvbiwgc3BsaXR0ZXIsIHJlc3VsdGVycmJvdW5kLCBlc3RpbWF0ZSwgdmVjLCBzdW0sIHN1bV90aHJlZSwgc2NhbGV9IGZyb20gJy4vdXRpbC5qcyc7XG5cbmNvbnN0IGljY2VycmJvdW5kQSA9ICgxMCArIDk2ICogZXBzaWxvbikgKiBlcHNpbG9uO1xuY29uc3QgaWNjZXJyYm91bmRCID0gKDQgKyA0OCAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGljY2VycmJvdW5kQyA9ICg0NCArIDU3NiAqIGVwc2lsb24pICogZXBzaWxvbiAqIGVwc2lsb247XG5cbmNvbnN0IGJjID0gdmVjKDQpO1xuY29uc3QgY2EgPSB2ZWMoNCk7XG5jb25zdCBhYiA9IHZlYyg0KTtcbmNvbnN0IGFhID0gdmVjKDQpO1xuY29uc3QgYmIgPSB2ZWMoNCk7XG5jb25zdCBjYyA9IHZlYyg0KTtcbmNvbnN0IHUgPSB2ZWMoNCk7XG5jb25zdCB2ID0gdmVjKDQpO1xuY29uc3QgYXh0YmMgPSB2ZWMoOCk7XG5jb25zdCBheXRiYyA9IHZlYyg4KTtcbmNvbnN0IGJ4dGNhID0gdmVjKDgpO1xuY29uc3QgYnl0Y2EgPSB2ZWMoOCk7XG5jb25zdCBjeHRhYiA9IHZlYyg4KTtcbmNvbnN0IGN5dGFiID0gdmVjKDgpO1xuY29uc3QgYWJ0ID0gdmVjKDgpO1xuY29uc3QgYmN0ID0gdmVjKDgpO1xuY29uc3QgY2F0ID0gdmVjKDgpO1xuY29uc3QgYWJ0dCA9IHZlYyg0KTtcbmNvbnN0IGJjdHQgPSB2ZWMoNCk7XG5jb25zdCBjYXR0ID0gdmVjKDQpO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYygxNik7XG5jb25zdCBfMTZiID0gdmVjKDE2KTtcbmNvbnN0IF8xNmMgPSB2ZWMoMTYpO1xuY29uc3QgXzMyID0gdmVjKDMyKTtcbmNvbnN0IF8zMmIgPSB2ZWMoMzIpO1xuY29uc3QgXzQ4ID0gdmVjKDQ4KTtcbmNvbnN0IF82NCA9IHZlYyg2NCk7XG5cbmxldCBmaW4gPSB2ZWMoMTE1Mik7XG5sZXQgZmluMiA9IHZlYygxMTUyKTtcblxuZnVuY3Rpb24gZmluYWRkKGZpbmxlbiwgYSwgYWxlbikge1xuICAgIGZpbmxlbiA9IHN1bShmaW5sZW4sIGZpbiwgYSwgYWxlbiwgZmluMik7XG4gICAgY29uc3QgdG1wID0gZmluOyBmaW4gPSBmaW4yOyBmaW4yID0gdG1wO1xuICAgIHJldHVybiBmaW5sZW47XG59XG5cbmZ1bmN0aW9uIGluY2lyY2xlYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZHgsIGR5LCBwZXJtYW5lbnQpIHtcbiAgICBsZXQgZmlubGVuO1xuICAgIGxldCBhZHh0YWlsLCBiZHh0YWlsLCBjZHh0YWlsLCBhZHl0YWlsLCBiZHl0YWlsLCBjZHl0YWlsO1xuICAgIGxldCBheHRiY2xlbiwgYXl0YmNsZW4sIGJ4dGNhbGVuLCBieXRjYWxlbiwgY3h0YWJsZW4sIGN5dGFibGVuO1xuICAgIGxldCBhYnRsZW4sIGJjdGxlbiwgY2F0bGVuO1xuICAgIGxldCBhYnR0bGVuLCBiY3R0bGVuLCBjYXR0bGVuO1xuICAgIGxldCBuMSwgbjA7XG5cbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfMCwgczEsIHMwLCB0MSwgdDAsIHUzO1xuXG4gICAgY29uc3QgYWR4ID0gYXggLSBkeDtcbiAgICBjb25zdCBiZHggPSBieCAtIGR4O1xuICAgIGNvbnN0IGNkeCA9IGN4IC0gZHg7XG4gICAgY29uc3QgYWR5ID0gYXkgLSBkeTtcbiAgICBjb25zdCBiZHkgPSBieSAtIGR5O1xuICAgIGNvbnN0IGNkeSA9IGN5IC0gZHk7XG5cbiAgICBzMSA9IGJkeCAqIGNkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICBhbG8gPSBiZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgYmxvID0gY2R5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNkeCAqIGJkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICBhbG8gPSBjZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgYmxvID0gYmR5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGJjWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSB1MztcbiAgICBzMSA9IGNkeCAqIGFkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICBhbG8gPSBjZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgYmxvID0gYWR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFkeCAqIGNkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYWR4KTtcbiAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgYmxvID0gY2R5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGNhWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgY2FbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGNhWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgY2FbM10gPSB1MztcbiAgICBzMSA9IGFkeCAqIGJkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYWR4KTtcbiAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgYmxvID0gYmR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJkeCAqIGFkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICBhbG8gPSBiZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgYmxvID0gYWR5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGFiWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYWJbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGFiWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYWJbM10gPSB1MztcblxuICAgIGZpbmxlbiA9IHN1bShcbiAgICAgICAgc3VtKFxuICAgICAgICAgICAgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJjLCBhZHgsIF84KSwgXzgsIGFkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJjLCBhZHksIF84KSwgXzgsIGFkeSwgXzE2YiksIF8xNmIsIF8zMiksIF8zMixcbiAgICAgICAgICAgIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYSwgYmR4LCBfOCksIF84LCBiZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYSwgYmR5LCBfOCksIF84LCBiZHksIF8xNmIpLCBfMTZiLCBfMzJiKSwgXzMyYiwgXzY0KSwgXzY0LFxuICAgICAgICBzdW0oXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBhYiwgY2R4LCBfOCksIF84LCBjZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFiLCBjZHksIF84KSwgXzgsIGNkeSwgXzE2YiksIF8xNmIsIF8zMiksIF8zMiwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gaWNjZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZHg7XG4gICAgYWR4dGFpbCA9IGF4IC0gKGFkeCArIGJ2aXJ0KSArIChidmlydCAtIGR4KTtcbiAgICBidmlydCA9IGF5IC0gYWR5O1xuICAgIGFkeXRhaWwgPSBheSAtIChhZHkgKyBidmlydCkgKyAoYnZpcnQgLSBkeSk7XG4gICAgYnZpcnQgPSBieCAtIGJkeDtcbiAgICBiZHh0YWlsID0gYnggLSAoYmR4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHgpO1xuICAgIGJ2aXJ0ID0gYnkgLSBiZHk7XG4gICAgYmR5dGFpbCA9IGJ5IC0gKGJkeSArIGJ2aXJ0KSArIChidmlydCAtIGR5KTtcbiAgICBidmlydCA9IGN4IC0gY2R4O1xuICAgIGNkeHRhaWwgPSBjeCAtIChjZHggKyBidmlydCkgKyAoYnZpcnQgLSBkeCk7XG4gICAgYnZpcnQgPSBjeSAtIGNkeTtcbiAgICBjZHl0YWlsID0gY3kgLSAoY2R5ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHkpO1xuICAgIGlmIChhZHh0YWlsID09PSAwICYmIGJkeHRhaWwgPT09IDAgJiYgY2R4dGFpbCA9PT0gMCAmJiBhZHl0YWlsID09PSAwICYmIGJkeXRhaWwgPT09IDAgJiYgY2R5dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gaWNjZXJyYm91bmRDICogcGVybWFuZW50ICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuICAgIGRldCArPSAoKGFkeCAqIGFkeCArIGFkeSAqIGFkeSkgKiAoKGJkeCAqIGNkeXRhaWwgKyBjZHkgKiBiZHh0YWlsKSAtIChiZHkgKiBjZHh0YWlsICsgY2R4ICogYmR5dGFpbCkpICtcbiAgICAgICAgMiAqIChhZHggKiBhZHh0YWlsICsgYWR5ICogYWR5dGFpbCkgKiAoYmR4ICogY2R5IC0gYmR5ICogY2R4KSkgK1xuICAgICAgICAoKGJkeCAqIGJkeCArIGJkeSAqIGJkeSkgKiAoKGNkeCAqIGFkeXRhaWwgKyBhZHkgKiBjZHh0YWlsKSAtIChjZHkgKiBhZHh0YWlsICsgYWR4ICogY2R5dGFpbCkpICtcbiAgICAgICAgMiAqIChiZHggKiBiZHh0YWlsICsgYmR5ICogYmR5dGFpbCkgKiAoY2R4ICogYWR5IC0gY2R5ICogYWR4KSkgK1xuICAgICAgICAoKGNkeCAqIGNkeCArIGNkeSAqIGNkeSkgKiAoKGFkeCAqIGJkeXRhaWwgKyBiZHkgKiBhZHh0YWlsKSAtIChhZHkgKiBiZHh0YWlsICsgYmR4ICogYWR5dGFpbCkpICtcbiAgICAgICAgMiAqIChjZHggKiBjZHh0YWlsICsgY2R5ICogY2R5dGFpbCkgKiAoYWR4ICogYmR5IC0gYWR5ICogYmR4KSk7XG5cbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBpZiAoYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwIHx8IGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICBzMSA9IGFkeCAqIGFkeDtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICBhbG8gPSBhZHggLSBhaGk7XG4gICAgICAgIHMwID0gYWxvICogYWxvIC0gKHMxIC0gYWhpICogYWhpIC0gKGFoaSArIGFoaSkgKiBhbG8pO1xuICAgICAgICB0MSA9IGFkeSAqIGFkeTtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5O1xuICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgICAgICBhbG8gPSBhZHkgLSBhaGk7XG4gICAgICAgIHQwID0gYWxvICogYWxvIC0gKHQxIC0gYWhpICogYWhpIC0gKGFoaSArIGFoaSkgKiBhbG8pO1xuICAgICAgICBfaSA9IHMwICsgdDA7XG4gICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgYWFbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgX2ogPSBzMSArIF9pO1xuICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgIF9pID0gXzAgKyB0MTtcbiAgICAgICAgYnZpcnQgPSBfaSAtIF8wO1xuICAgICAgICBhYVsxXSA9IF8wIC0gKF9pIC0gYnZpcnQpICsgKHQxIC0gYnZpcnQpO1xuICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICAgICAgYWFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgYWFbM10gPSB1MztcbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCB8fCBhZHh0YWlsICE9PSAwIHx8IGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgczEgPSBiZHggKiBiZHg7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeDtcbiAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4KTtcbiAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICBzMCA9IGFsbyAqIGFsbyAtIChzMSAtIGFoaSAqIGFoaSAtIChhaGkgKyBhaGkpICogYWxvKTtcbiAgICAgICAgdDEgPSBiZHkgKiBiZHk7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICAgICAgYWhpID0gYyAtIChjIC0gYmR5KTtcbiAgICAgICAgYWxvID0gYmR5IC0gYWhpO1xuICAgICAgICB0MCA9IGFsbyAqIGFsbyAtICh0MSAtIGFoaSAqIGFoaSAtIChhaGkgKyBhaGkpICogYWxvKTtcbiAgICAgICAgX2kgPSBzMCArIHQwO1xuICAgICAgICBidmlydCA9IF9pIC0gczA7XG4gICAgICAgIGJiWzBdID0gczAgLSAoX2kgLSBidmlydCkgKyAodDAgLSBidmlydCk7XG4gICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgIGJ2aXJ0ID0gX2kgLSBfMDtcbiAgICAgICAgYmJbMV0gPSBfMCAtIChfaSAtIGJ2aXJ0KSArICh0MSAtIGJ2aXJ0KTtcbiAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgIGJiWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgIGJiWzNdID0gdTM7XG4gICAgfVxuICAgIGlmIChhZHh0YWlsICE9PSAwIHx8IGFkeXRhaWwgIT09IDAgfHwgYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgIHMxID0gY2R4ICogY2R4O1xuICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgICAgIGFsbyA9IGNkeCAtIGFoaTtcbiAgICAgICAgczAgPSBhbG8gKiBhbG8gLSAoczEgLSBhaGkgKiBhaGkgLSAoYWhpICsgYWhpKSAqIGFsbyk7XG4gICAgICAgIHQxID0gY2R5ICogY2R5O1xuICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHk7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgICAgIGFsbyA9IGNkeSAtIGFoaTtcbiAgICAgICAgdDAgPSBhbG8gKiBhbG8gLSAodDEgLSBhaGkgKiBhaGkgLSAoYWhpICsgYWhpKSAqIGFsbyk7XG4gICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgYnZpcnQgPSBfaSAtIHMwO1xuICAgICAgICBjY1swXSA9IHMwIC0gKF9pIC0gYnZpcnQpICsgKHQwIC0gYnZpcnQpO1xuICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgX2kgPSBfMCArIHQxO1xuICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgIGNjWzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgIHUzID0gX2ogKyBfaTtcbiAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICBjY1syXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICBjY1szXSA9IHUzO1xuICAgIH1cblxuICAgIGlmIChhZHh0YWlsICE9PSAwKSB7XG4gICAgICAgIGF4dGJjbGVuID0gc2NhbGUoNCwgYmMsIGFkeHRhaWwsIGF4dGJjKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgc2NhbGUoYXh0YmNsZW4sIGF4dGJjLCAyICogYWR4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYWR4dGFpbCwgXzgpLCBfOCwgYmR5LCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGJiLCBhZHh0YWlsLCBfOCksIF84LCAtY2R5LCBfMTZjKSwgXzE2YywgXzMyLCBfNDgpLCBfNDgpO1xuICAgIH1cbiAgICBpZiAoYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICBheXRiY2xlbiA9IHNjYWxlKDQsIGJjLCBhZHl0YWlsLCBheXRiYyk7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgIHNjYWxlKGF5dGJjbGVuLCBheXRiYywgMiAqIGFkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGFkeXRhaWwsIF84KSwgXzgsIGNkeCwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYWR5dGFpbCwgXzgpLCBfOCwgLWJkeCwgXzE2YyksIF8xNmMsIF8zMiwgXzQ4KSwgXzQ4KTtcbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDApIHtcbiAgICAgICAgYnh0Y2FsZW4gPSBzY2FsZSg0LCBjYSwgYmR4dGFpbCwgYnh0Y2EpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICBzY2FsZShieHRjYWxlbiwgYnh0Y2EsIDIgKiBiZHgsIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHh0YWlsLCBfOCksIF84LCBjZHksIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgY2MsIGJkeHRhaWwsIF84KSwgXzgsIC1hZHksIF8xNmMpLCBfMTZjLCBfMzIsIF80OCksIF80OCk7XG4gICAgfVxuICAgIGlmIChiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgIGJ5dGNhbGVuID0gc2NhbGUoNCwgY2EsIGJkeXRhaWwsIGJ5dGNhKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgc2NhbGUoYnl0Y2FsZW4sIGJ5dGNhLCAyICogYmR5LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBjYywgYmR5dGFpbCwgXzgpLCBfOCwgYWR4LCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHl0YWlsLCBfOCksIF84LCAtY2R4LCBfMTZjKSwgXzE2YywgXzMyLCBfNDgpLCBfNDgpO1xuICAgIH1cbiAgICBpZiAoY2R4dGFpbCAhPT0gMCkge1xuICAgICAgICBjeHRhYmxlbiA9IHNjYWxlKDQsIGFiLCBjZHh0YWlsLCBjeHRhYik7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgIHNjYWxlKGN4dGFibGVuLCBjeHRhYiwgMiAqIGNkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGNkeHRhaWwsIF84KSwgXzgsIGFkeSwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICBzY2FsZShzY2FsZSg0LCBhYSwgY2R4dGFpbCwgXzgpLCBfOCwgLWJkeSwgXzE2YyksIF8xNmMsIF8zMiwgXzQ4KSwgXzQ4KTtcbiAgICB9XG4gICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgY3l0YWJsZW4gPSBzY2FsZSg0LCBhYiwgY2R5dGFpbCwgY3l0YWIpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICBzY2FsZShjeXRhYmxlbiwgY3l0YWIsIDIgKiBjZHksIF8xNiksIF8xNixcbiAgICAgICAgICAgIHNjYWxlKHNjYWxlKDQsIGFhLCBjZHl0YWlsLCBfOCksIF84LCBiZHgsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgc2NhbGUoc2NhbGUoNCwgYmIsIGNkeXRhaWwsIF84KSwgXzgsIC1hZHgsIF8xNmMpLCBfMTZjLCBfMzIsIF80OCksIF80OCk7XG4gICAgfVxuXG4gICAgaWYgKGFkeHRhaWwgIT09IDAgfHwgYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoYmR4dGFpbCAhPT0gMCB8fCBiZHl0YWlsICE9PSAwIHx8IGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBiZHh0YWlsICogY2R5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGJkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYmR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeSk7XG4gICAgICAgICAgICBibG8gPSBjZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGJkeCAqIGNkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBiZHgpO1xuICAgICAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gY2R5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBzMSA9IGNkeHRhaWwgKiAtYmR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIC1iZHk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSAtYmR5KTtcbiAgICAgICAgICAgIGJsbyA9IC1iZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeCAqIC1iZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gY2R4KTtcbiAgICAgICAgICAgIGFsbyA9IGNkeCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIC1iZHl0YWlsO1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gLWJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gLWJkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwICsgdDA7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gczA7XG4gICAgICAgICAgICB2WzBdID0gczAgLSAoX2kgLSBidmlydCkgKyAodDAgLSBidmlydCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCArIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfaSAtIF8wO1xuICAgICAgICAgICAgdlsxXSA9IF8wIC0gKF9pIC0gYnZpcnQpICsgKHQxIC0gYnZpcnQpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgdlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgdlszXSA9IHUzO1xuICAgICAgICAgICAgYmN0bGVuID0gc3VtKDQsIHUsIDQsIHYsIGJjdCk7XG4gICAgICAgICAgICBzMSA9IGJkeHRhaWwgKiBjZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGJkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYmR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGNkeXRhaWw7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBjZHl0YWlsKTtcbiAgICAgICAgICAgIGJsbyA9IGNkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeHRhaWwgKiBiZHl0YWlsO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeXRhaWw7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBiZHl0YWlsKTtcbiAgICAgICAgICAgIGJsbyA9IGJkeXRhaWwgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwIC0gdDA7XG4gICAgICAgICAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgICAgICAgICBiY3R0WzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCAtIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgICAgICAgICAgYmN0dFsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgYmN0dFsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgYmN0dFszXSA9IHUzO1xuICAgICAgICAgICAgYmN0dGxlbiA9IDQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiY3RbMF0gPSAwO1xuICAgICAgICAgICAgYmN0bGVuID0gMTtcbiAgICAgICAgICAgIGJjdHRbMF0gPSAwO1xuICAgICAgICAgICAgYmN0dGxlbiA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkeHRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGJjdGxlbiwgYmN0LCBhZHh0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShheHRiY2xlbiwgYXh0YmMsIGFkeHRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBhZHgsIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGJjdHRsZW4sIGJjdHQsIGFkeHRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGFkeCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBhZHh0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGFkeHRhaWwsIF8zMiksIF8zMiwgXzMyYiwgXzY0KSwgXzY0KTtcblxuICAgICAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBjYywgYWR4dGFpbCwgXzgpLCBfOCwgYmR5dGFpbCwgXzE2KSwgXzE2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoc2NhbGUoNCwgYmIsIC1hZHh0YWlsLCBfOCksIF84LCBjZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSBzY2FsZShiY3RsZW4sIGJjdCwgYWR5dGFpbCwgXzE2Yyk7XG4gICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW0oXG4gICAgICAgICAgICAgICAgc2NhbGUoYXl0YmNsZW4sIGF5dGJjLCBhZHl0YWlsLCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuLCBfMTZjLCAyICogYWR5LCBfMzIpLCBfMzIsIF80OCksIF80OCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxlbjIgPSBzY2FsZShiY3R0bGVuLCBiY3R0LCBhZHl0YWlsLCBfOCk7XG4gICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzdW1fdGhyZWUoXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIDIgKiBhZHksIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgYWR5dGFpbCwgXzE2YiksIF8xNmIsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuLCBfMTZjLCBhZHl0YWlsLCBfMzIpLCBfMzIsIF8zMmIsIF82NCksIF82NCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDAgfHwgYmR5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoY2R4dGFpbCAhPT0gMCB8fCBjZHl0YWlsICE9PSAwIHx8IGFkeHRhaWwgIT09IDAgfHwgYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBjZHh0YWlsICogYWR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGNkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gY2R4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeSk7XG4gICAgICAgICAgICBibG8gPSBhZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGNkeCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBjZHgpO1xuICAgICAgICAgICAgYWxvID0gY2R4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBuMSA9IC1jZHk7XG4gICAgICAgICAgICBuMCA9IC1jZHl0YWlsO1xuICAgICAgICAgICAgczEgPSBhZHh0YWlsICogbjE7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjE7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMSk7XG4gICAgICAgICAgICBibG8gPSBuMSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYWR4ICogbjA7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICAgICAgYWxvID0gYWR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjA7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMCk7XG4gICAgICAgICAgICBibG8gPSBuMCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHZbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB2WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB2WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB2WzNdID0gdTM7XG4gICAgICAgICAgICBjYXRsZW4gPSBzdW0oNCwgdSwgNCwgdiwgY2F0KTtcbiAgICAgICAgICAgIHMxID0gY2R4dGFpbCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBjZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gY2R4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBjZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYWR4dGFpbCAqIGNkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogY2R5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGNkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gY2R5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgLSB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICAgICAgICAgIGNhdHRbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wIC0gdDE7XG4gICAgICAgICAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgICAgICAgICBjYXR0WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICBjYXR0WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBjYXR0WzNdID0gdTM7XG4gICAgICAgICAgICBjYXR0bGVuID0gNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhdFswXSA9IDA7XG4gICAgICAgICAgICBjYXRsZW4gPSAxO1xuICAgICAgICAgICAgY2F0dFswXSA9IDA7XG4gICAgICAgICAgICBjYXR0bGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmR4dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gc2NhbGUoY2F0bGVuLCBjYXQsIGJkeHRhaWwsIF8xNmMpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKGJ4dGNhbGVuLCBieHRjYSwgYmR4dGFpbCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgMiAqIGJkeCwgXzMyKSwgXzMyLCBfNDgpLCBfNDgpO1xuXG4gICAgICAgICAgICBjb25zdCBsZW4yID0gc2NhbGUoY2F0dGxlbiwgY2F0dCwgYmR4dGFpbCwgXzgpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCAyICogYmR4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIGJkeHRhaWwsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgYmR4dGFpbCwgXzMyKSwgXzMyLCBfMzJiLCBfNjQpLCBfNjQpO1xuXG4gICAgICAgICAgICBpZiAoY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKHNjYWxlKDQsIGFhLCBiZHh0YWlsLCBfOCksIF84LCBjZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBjYywgLWJkeHRhaWwsIF84KSwgXzgsIGFkeXRhaWwsIF8xNiksIF8xNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGNhdGxlbiwgY2F0LCBiZHl0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShieXRjYWxlbiwgYnl0Y2EsIGJkeXRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBiZHksIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGNhdHRsZW4sIGNhdHQsIGJkeXRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGJkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBiZHl0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGJkeXRhaWwsIF8zMiksIF8zMiwgIF8zMmIsIF82NCksIF82NCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDAgfHwgY2R5dGFpbCAhPT0gMCkge1xuICAgICAgICBpZiAoYWR4dGFpbCAhPT0gMCB8fCBhZHl0YWlsICE9PSAwIHx8IGJkeHRhaWwgIT09IDAgfHwgYmR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgczEgPSBhZHh0YWlsICogYmR5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIGFkeHRhaWwpO1xuICAgICAgICAgICAgYWxvID0gYWR4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeSk7XG4gICAgICAgICAgICBibG8gPSBiZHkgLSBiaGk7XG4gICAgICAgICAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICB0MSA9IGFkeCAqIGJkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBhZHgpO1xuICAgICAgICAgICAgYWxvID0gYWR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYmR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHVbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB1WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB1WzNdID0gdTM7XG4gICAgICAgICAgICBuMSA9IC1hZHk7XG4gICAgICAgICAgICBuMCA9IC1hZHl0YWlsO1xuICAgICAgICAgICAgczEgPSBiZHh0YWlsICogbjE7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBiZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjE7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMSk7XG4gICAgICAgICAgICBibG8gPSBuMSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYmR4ICogbjA7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHg7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBiZHgpO1xuICAgICAgICAgICAgYWxvID0gYmR4IC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbjA7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBuMCk7XG4gICAgICAgICAgICBibG8gPSBuMCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgKyB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2kgLSBzMDtcbiAgICAgICAgICAgIHZbMF0gPSBzMCAtIChfaSAtIGJ2aXJ0KSArICh0MCAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wICsgdDE7XG4gICAgICAgICAgICBidmlydCA9IF9pIC0gXzA7XG4gICAgICAgICAgICB2WzFdID0gXzAgLSAoX2kgLSBidmlydCkgKyAodDEgLSBidmlydCk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICB2WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICB2WzNdID0gdTM7XG4gICAgICAgICAgICBhYnRsZW4gPSBzdW0oNCwgdSwgNCwgdiwgYWJ0KTtcbiAgICAgICAgICAgIHMxID0gYWR4dGFpbCAqIGJkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBhZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYWR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBhZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYmR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYmR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0gYmR4dGFpbCAqIGFkeXRhaWw7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBiZHh0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gYmR4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSBiZHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYWR5dGFpbDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGFkeXRhaWwpO1xuICAgICAgICAgICAgYmxvID0gYWR5dGFpbCAtIGJoaTtcbiAgICAgICAgICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIF9pID0gczAgLSB0MDtcbiAgICAgICAgICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICAgICAgICAgIGFidHRbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICAgICAgICAgIF9qID0gczEgKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICAgICAgICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBfaSA9IF8wIC0gdDE7XG4gICAgICAgICAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgICAgICAgICBhYnR0WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgICAgICAgICB1MyA9IF9qICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgICAgICAgICBhYnR0WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgICAgICAgICBhYnR0WzNdID0gdTM7XG4gICAgICAgICAgICBhYnR0bGVuID0gNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFidFswXSA9IDA7XG4gICAgICAgICAgICBhYnRsZW4gPSAxO1xuICAgICAgICAgICAgYWJ0dFswXSA9IDA7XG4gICAgICAgICAgICBhYnR0bGVuID0gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2R4dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgY29uc3QgbGVuID0gc2NhbGUoYWJ0bGVuLCBhYnQsIGNkeHRhaWwsIF8xNmMpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtKFxuICAgICAgICAgICAgICAgIHNjYWxlKGN4dGFibGVuLCBjeHRhYiwgY2R4dGFpbCwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgMiAqIGNkeCwgXzMyKSwgXzMyLCBfNDgpLCBfNDgpO1xuXG4gICAgICAgICAgICBjb25zdCBsZW4yID0gc2NhbGUoYWJ0dGxlbiwgYWJ0dCwgY2R4dGFpbCwgXzgpO1xuICAgICAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc3VtX3RocmVlKFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCAyICogY2R4LCBfMTYpLCBfMTYsXG4gICAgICAgICAgICAgICAgc2NhbGUobGVuMiwgXzgsIGNkeHRhaWwsIF8xNmIpLCBfMTZiLFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbiwgXzE2YywgY2R4dGFpbCwgXzMyKSwgXzMyLCBfMzJiLCBfNjQpLCBfNjQpO1xuXG4gICAgICAgICAgICBpZiAoYWR5dGFpbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKHNjYWxlKDQsIGJiLCBjZHh0YWlsLCBfOCksIF84LCBhZHl0YWlsLCBfMTYpLCBfMTYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShzY2FsZSg0LCBhYSwgLWNkeHRhaWwsIF84KSwgXzgsIGJkeXRhaWwsIF8xNiksIF8xNik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHNjYWxlKGFidGxlbiwgYWJ0LCBjZHl0YWlsLCBfMTZjKTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bShcbiAgICAgICAgICAgICAgICBzY2FsZShjeXRhYmxlbiwgY3l0YWIsIGNkeXRhaWwsIF8xNiksIF8xNixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIDIgKiBjZHksIF8zMiksIF8zMiwgXzQ4KSwgXzQ4KTtcblxuICAgICAgICAgICAgY29uc3QgbGVuMiA9IHNjYWxlKGFidHRsZW4sIGFidHQsIGNkeXRhaWwsIF84KTtcbiAgICAgICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHN1bV90aHJlZShcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4yLCBfOCwgMiAqIGNkeSwgXzE2KSwgXzE2LFxuICAgICAgICAgICAgICAgIHNjYWxlKGxlbjIsIF84LCBjZHl0YWlsLCBfMTZiKSwgXzE2YixcbiAgICAgICAgICAgICAgICBzY2FsZShsZW4sIF8xNmMsIGNkeXRhaWwsIF8zMiksIF8zMiwgXzMyYiwgXzY0KSwgXzY0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaW5bZmlubGVuIC0gMV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNpcmNsZShheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBkeCwgZHkpIHtcbiAgICBjb25zdCBhZHggPSBheCAtIGR4O1xuICAgIGNvbnN0IGJkeCA9IGJ4IC0gZHg7XG4gICAgY29uc3QgY2R4ID0gY3ggLSBkeDtcbiAgICBjb25zdCBhZHkgPSBheSAtIGR5O1xuICAgIGNvbnN0IGJkeSA9IGJ5IC0gZHk7XG4gICAgY29uc3QgY2R5ID0gY3kgLSBkeTtcblxuICAgIGNvbnN0IGJkeGNkeSA9IGJkeCAqIGNkeTtcbiAgICBjb25zdCBjZHhiZHkgPSBjZHggKiBiZHk7XG4gICAgY29uc3QgYWxpZnQgPSBhZHggKiBhZHggKyBhZHkgKiBhZHk7XG5cbiAgICBjb25zdCBjZHhhZHkgPSBjZHggKiBhZHk7XG4gICAgY29uc3QgYWR4Y2R5ID0gYWR4ICogY2R5O1xuICAgIGNvbnN0IGJsaWZ0ID0gYmR4ICogYmR4ICsgYmR5ICogYmR5O1xuXG4gICAgY29uc3QgYWR4YmR5ID0gYWR4ICogYmR5O1xuICAgIGNvbnN0IGJkeGFkeSA9IGJkeCAqIGFkeTtcbiAgICBjb25zdCBjbGlmdCA9IGNkeCAqIGNkeCArIGNkeSAqIGNkeTtcblxuICAgIGNvbnN0IGRldCA9XG4gICAgICAgIGFsaWZ0ICogKGJkeGNkeSAtIGNkeGJkeSkgK1xuICAgICAgICBibGlmdCAqIChjZHhhZHkgLSBhZHhjZHkpICtcbiAgICAgICAgY2xpZnQgKiAoYWR4YmR5IC0gYmR4YWR5KTtcblxuICAgIGNvbnN0IHBlcm1hbmVudCA9XG4gICAgICAgIChNYXRoLmFicyhiZHhjZHkpICsgTWF0aC5hYnMoY2R4YmR5KSkgKiBhbGlmdCArXG4gICAgICAgIChNYXRoLmFicyhjZHhhZHkpICsgTWF0aC5hYnMoYWR4Y2R5KSkgKiBibGlmdCArXG4gICAgICAgIChNYXRoLmFicyhhZHhiZHkpICsgTWF0aC5hYnMoYmR4YWR5KSkgKiBjbGlmdDtcblxuICAgIGNvbnN0IGVycmJvdW5kID0gaWNjZXJyYm91bmRBICogcGVybWFuZW50O1xuXG4gICAgaWYgKGRldCA+IGVycmJvdW5kIHx8IC1kZXQgPiBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cbiAgICByZXR1cm4gaW5jaXJjbGVhZGFwdChheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBkeCwgZHksIHBlcm1hbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmNpcmNsZWZhc3QoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZHgsIGR5KSB7XG4gICAgY29uc3QgYWR4ID0gYXggLSBkeDtcbiAgICBjb25zdCBhZHkgPSBheSAtIGR5O1xuICAgIGNvbnN0IGJkeCA9IGJ4IC0gZHg7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGNkeSA9IGN5IC0gZHk7XG5cbiAgICBjb25zdCBhYmRldCA9IGFkeCAqIGJkeSAtIGJkeCAqIGFkeTtcbiAgICBjb25zdCBiY2RldCA9IGJkeCAqIGNkeSAtIGNkeCAqIGJkeTtcbiAgICBjb25zdCBjYWRldCA9IGNkeCAqIGFkeSAtIGFkeCAqIGNkeTtcbiAgICBjb25zdCBhbGlmdCA9IGFkeCAqIGFkeCArIGFkeSAqIGFkeTtcbiAgICBjb25zdCBibGlmdCA9IGJkeCAqIGJkeCArIGJkeSAqIGJkeTtcbiAgICBjb25zdCBjbGlmdCA9IGNkeCAqIGNkeCArIGNkeSAqIGNkeTtcblxuICAgIHJldHVybiBhbGlmdCAqIGJjZGV0ICsgYmxpZnQgKiBjYWRldCArIGNsaWZ0ICogYWJkZXQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/incircle.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/insphere.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/insphere.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"insphere\": () => (/* binding */ insphere),\n/* harmony export */ \"inspherefast\": () => (/* binding */ inspherefast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst isperrboundA = (16 + 224 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst isperrboundB = (5 + 72 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst isperrboundC = (71 + 1408 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst cd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst de = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ea = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ac = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ce = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst da = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst eb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst abc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst bcd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst cde = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst dea = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst eab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst abd = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst bce = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst cda = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst deb = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst eac = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\n\nconst adet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst bdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst cdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst ddet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst edet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\nconst abdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(2304);\nconst cddet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(2304);\nconst cdedet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(3456);\nconst deter = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(5760);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst _24 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(24);\nconst _48 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _48b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(48);\nconst _96 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst _192 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\nconst _384x = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _384y = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _384z = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(384);\nconst _768 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, a, az, _8), _8,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, b, bz, _8b), _8b,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n const len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(alen, a, blen, b, _48), _48,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, x, _192), _192, x, _384x), _384x,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, y, _192), _192, y, _384y), _384y,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n s1 = ax * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n\n const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n const deterlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n return deter[deterlen - 1];\n}\n\nconst xdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst ydet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst zdet = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(96);\nconst fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum_three)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, x, _48), _48, x, xdet), xdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, y, _48), _48, y, ydet), ydet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n let ab3, bc3, cd3, da3, ac3, bd3;\n\n let aextail, bextail, cextail, dextail;\n let aeytail, beytail, ceytail, deytail;\n let aeztail, beztail, ceztail, deztail;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n s1 = aex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n\n const finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.negate)(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n bextail === 0 && beytail === 0 && beztail === 0 &&\n cextail === 0 && ceytail === 0 && ceztail === 0 &&\n dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n\n errbound = isperrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n\n const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n det +=\n (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n 2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nfunction insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n const aexbey = aex * bey;\n const bexaey = bex * aey;\n const ab = aexbey - bexaey;\n const bexcey = bex * cey;\n const cexbey = cex * bey;\n const bc = bexcey - cexbey;\n const cexdey = cex * dey;\n const dexcey = dex * cey;\n const cd = cexdey - dexcey;\n const dexaey = dex * aey;\n const aexdey = aex * dey;\n const da = dexaey - aexdey;\n const aexcey = aex * cey;\n const cexaey = cex * aey;\n const ac = aexcey - cexaey;\n const bexdey = bex * dey;\n const dexbey = dex * bey;\n const bd = bexdey - dexbey;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n const det =\n (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n const aezplus = Math.abs(aez);\n const bezplus = Math.abs(bez);\n const cezplus = Math.abs(cez);\n const dezplus = Math.abs(dez);\n const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n const permanent =\n (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n const errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nfunction inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n const aex = pax - pex;\n const bex = pbx - pex;\n const cex = pcx - pex;\n const dex = pdx - pex;\n const aey = pay - pey;\n const bey = pby - pey;\n const cey = pcy - pey;\n const dey = pdy - pey;\n const aez = paz - pez;\n const bez = pbz - pez;\n const cez = pcz - pez;\n const dez = pdz - pez;\n\n const ab = aex * bey - bex * aey;\n const bc = bex * cey - cex * bey;\n const cd = cex * dey - dex * cey;\n const da = dex * aey - aex * dey;\n const ac = aex * cey - cex * aey;\n const bd = bex * dey - dex * bey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9pbnNwaGVyZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEc7O0FBRTFHLGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPO0FBQ25ELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGtDQUFrQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTlELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFdBQVcsNkNBQUc7O0FBRWQsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRzs7QUFFZixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsY0FBYyw2Q0FBRztBQUNqQixjQUFjLDZDQUFHO0FBQ2pCLGVBQWUsNkNBQUc7QUFDbEIsY0FBYyw2Q0FBRzs7QUFFakIsV0FBVyw2Q0FBRztBQUNkLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixZQUFZLDZDQUFHO0FBQ2YsYUFBYSw2Q0FBRztBQUNoQixjQUFjLDZDQUFHO0FBQ2pCLGNBQWMsNkNBQUc7QUFDakIsY0FBYyw2Q0FBRztBQUNqQixhQUFhLDZDQUFHOztBQUVoQjtBQUNBLFdBQVcsbURBQVM7QUFDcEIsUUFBUSwrQ0FBSztBQUNiLFFBQVEsK0NBQUs7QUFDYixRQUFRLCtDQUFLO0FBQ2I7O0FBRUE7QUFDQSxnQkFBZ0IsNkNBQUc7QUFDbkIsUUFBUSw2Q0FBRztBQUNYLFFBQVEsZ0RBQU0sQ0FBQyw2Q0FBRzs7QUFFbEIsV0FBVyxtREFBUztBQUNwQixRQUFRLCtDQUFLLENBQUMsK0NBQUs7QUFDbkIsUUFBUSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ25CLFFBQVEsK0NBQUssQ0FBQywrQ0FBSztBQUNuQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLG1EQUFTO0FBQzlCO0FBQ0E7QUFDQSxRQUFRLG1EQUFTO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7O0FBRWY7QUFDQTtBQUNBLFdBQVcsbURBQVM7QUFDcEIsUUFBUSwrQ0FBSyxDQUFDLCtDQUFLO0FBQ25CLFFBQVEsK0NBQUssQ0FBQywrQ0FBSztBQUNuQixRQUFRLCtDQUFLLENBQUMsK0NBQUs7QUFDbkI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsNkNBQUc7QUFDdEIsUUFBUSw2Q0FBRztBQUNYLFlBQVksZ0RBQU07QUFDbEI7QUFDQSxRQUFRLDZDQUFHO0FBQ1gsWUFBWSxnREFBTTtBQUNsQjs7QUFFQSxjQUFjLGtEQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBMEMsb0RBQWM7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vaW5zcGhlcmUuanM/NWYzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtLCBzdW1fdGhyZWUsIHNjYWxlLCBuZWdhdGV9IGZyb20gJy4vdXRpbC5qcyc7XG5cbmNvbnN0IGlzcGVycmJvdW5kQSA9ICgxNiArIDIyNCAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGlzcGVycmJvdW5kQiA9ICg1ICsgNzIgKiBlcHNpbG9uKSAqIGVwc2lsb247XG5jb25zdCBpc3BlcnJib3VuZEMgPSAoNzEgKyAxNDA4ICogZXBzaWxvbikgKiBlcHNpbG9uICogZXBzaWxvbjtcblxuY29uc3QgYWIgPSB2ZWMoNCk7XG5jb25zdCBiYyA9IHZlYyg0KTtcbmNvbnN0IGNkID0gdmVjKDQpO1xuY29uc3QgZGUgPSB2ZWMoNCk7XG5jb25zdCBlYSA9IHZlYyg0KTtcbmNvbnN0IGFjID0gdmVjKDQpO1xuY29uc3QgYmQgPSB2ZWMoNCk7XG5jb25zdCBjZSA9IHZlYyg0KTtcbmNvbnN0IGRhID0gdmVjKDQpO1xuY29uc3QgZWIgPSB2ZWMoNCk7XG5cbmNvbnN0IGFiYyA9IHZlYygyNCk7XG5jb25zdCBiY2QgPSB2ZWMoMjQpO1xuY29uc3QgY2RlID0gdmVjKDI0KTtcbmNvbnN0IGRlYSA9IHZlYygyNCk7XG5jb25zdCBlYWIgPSB2ZWMoMjQpO1xuY29uc3QgYWJkID0gdmVjKDI0KTtcbmNvbnN0IGJjZSA9IHZlYygyNCk7XG5jb25zdCBjZGEgPSB2ZWMoMjQpO1xuY29uc3QgZGViID0gdmVjKDI0KTtcbmNvbnN0IGVhYyA9IHZlYygyNCk7XG5cbmNvbnN0IGFkZXQgPSB2ZWMoMTE1Mik7XG5jb25zdCBiZGV0ID0gdmVjKDExNTIpO1xuY29uc3QgY2RldCA9IHZlYygxMTUyKTtcbmNvbnN0IGRkZXQgPSB2ZWMoMTE1Mik7XG5jb25zdCBlZGV0ID0gdmVjKDExNTIpO1xuY29uc3QgYWJkZXQgPSB2ZWMoMjMwNCk7XG5jb25zdCBjZGRldCA9IHZlYygyMzA0KTtcbmNvbnN0IGNkZWRldCA9IHZlYygzNDU2KTtcbmNvbnN0IGRldGVyID0gdmVjKDU3NjApO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF84YiA9IHZlYyg4KTtcbmNvbnN0IF84YyA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYygxNik7XG5jb25zdCBfMjQgPSB2ZWMoMjQpO1xuY29uc3QgXzQ4ID0gdmVjKDQ4KTtcbmNvbnN0IF80OGIgPSB2ZWMoNDgpO1xuY29uc3QgXzk2ID0gdmVjKDk2KTtcbmNvbnN0IF8xOTIgPSB2ZWMoMTkyKTtcbmNvbnN0IF8zODR4ID0gdmVjKDM4NCk7XG5jb25zdCBfMzg0eSA9IHZlYygzODQpO1xuY29uc3QgXzM4NHogPSB2ZWMoMzg0KTtcbmNvbnN0IF83NjggPSB2ZWMoNzY4KTtcblxuZnVuY3Rpb24gc3VtX3RocmVlX3NjYWxlKGEsIGIsIGMsIGF6LCBieiwgY3osIG91dCkge1xuICAgIHJldHVybiBzdW1fdGhyZWUoXG4gICAgICAgIHNjYWxlKDQsIGEsIGF6LCBfOCksIF84LFxuICAgICAgICBzY2FsZSg0LCBiLCBieiwgXzhiKSwgXzhiLFxuICAgICAgICBzY2FsZSg0LCBjLCBjeiwgXzhjKSwgXzhjLCBfMTYsIG91dCk7XG59XG5cbmZ1bmN0aW9uIGxpZnRleGFjdChhbGVuLCBhLCBibGVuLCBiLCBjbGVuLCBjLCBkbGVuLCBkLCB4LCB5LCB6LCBvdXQpIHtcbiAgICBjb25zdCBsZW4gPSBzdW0oXG4gICAgICAgIHN1bShhbGVuLCBhLCBibGVuLCBiLCBfNDgpLCBfNDgsXG4gICAgICAgIG5lZ2F0ZShzdW0oY2xlbiwgYywgZGxlbiwgZCwgXzQ4YiksIF80OGIpLCBfNDhiLCBfOTYpO1xuXG4gICAgcmV0dXJuIHN1bV90aHJlZShcbiAgICAgICAgc2NhbGUoc2NhbGUobGVuLCBfOTYsIHgsIF8xOTIpLCBfMTkyLCB4LCBfMzg0eCksIF8zODR4LFxuICAgICAgICBzY2FsZShzY2FsZShsZW4sIF85NiwgeSwgXzE5MiksIF8xOTIsIHksIF8zODR5KSwgXzM4NHksXG4gICAgICAgIHNjYWxlKHNjYWxlKGxlbiwgXzk2LCB6LCBfMTkyKSwgXzE5MiwgeiwgXzM4NHopLCBfMzg0eiwgXzc2OCwgb3V0KTtcbn1cblxuZnVuY3Rpb24gaW5zcGhlcmVleGFjdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6KSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIHMxID0gYXggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICBhaGkgPSBjIC0gKGMgLSBheCk7XG4gICAgYWxvID0gYXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJ4ICogYXk7XG4gICAgYyA9IHNwbGl0dGVyICogYng7XG4gICAgYWhpID0gYyAtIChjIC0gYngpO1xuICAgIGFsbyA9IGJ4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGF5KTtcbiAgICBibG8gPSBheSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBhYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGFiWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGFiWzNdID0gdTM7XG4gICAgczEgPSBieCAqIGN5O1xuICAgIGMgPSBzcGxpdHRlciAqIGJ4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICBhbG8gPSBieCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjeSk7XG4gICAgYmxvID0gY3kgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gY3ggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBjeCk7XG4gICAgYWxvID0gY3ggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGJjWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSB1MztcbiAgICBzMSA9IGN4ICogZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY3g7XG4gICAgYWhpID0gYyAtIChjIC0gY3gpO1xuICAgIGFsbyA9IGN4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGR5KTtcbiAgICBibG8gPSBkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkeCAqIGN5O1xuICAgIGMgPSBzcGxpdHRlciAqIGR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGR4KTtcbiAgICBhbG8gPSBkeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjeSk7XG4gICAgYmxvID0gY3kgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgY2RbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBjZFsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgY2RbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBjZFszXSA9IHUzO1xuICAgIHMxID0gZHggKiBleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBkeCk7XG4gICAgYWxvID0gZHggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZXkpO1xuICAgIGJsbyA9IGV5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGV4ICogZHk7XG4gICAgYyA9IHNwbGl0dGVyICogZXg7XG4gICAgYWhpID0gYyAtIChjIC0gZXgpO1xuICAgIGFsbyA9IGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGR5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGR5KTtcbiAgICBibG8gPSBkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBkZVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGRlWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBkZVsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGRlWzNdID0gdTM7XG4gICAgczEgPSBleCAqIGF5O1xuICAgIGMgPSBzcGxpdHRlciAqIGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGV4KTtcbiAgICBhbG8gPSBleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheTtcbiAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgYmxvID0gYXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYXggKiBleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICBhaGkgPSBjIC0gKGMgLSBheCk7XG4gICAgYWxvID0gYXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZXkpO1xuICAgIGJsbyA9IGV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGVhWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgZWFbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGVhWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgZWFbM10gPSB1MztcbiAgICBzMSA9IGF4ICogY3k7XG4gICAgYyA9IHNwbGl0dGVyICogYXg7XG4gICAgYWhpID0gYyAtIChjIC0gYXgpO1xuICAgIGFsbyA9IGF4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGN5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGN5KTtcbiAgICBibG8gPSBjeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBjeCAqIGF5O1xuICAgIGMgPSBzcGxpdHRlciAqIGN4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGN4KTtcbiAgICBhbG8gPSBjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBheTtcbiAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgYmxvID0gYXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgYWNbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBhY1sxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgYWNbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBhY1szXSA9IHUzO1xuICAgIHMxID0gYnggKiBkeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICBhaGkgPSBjIC0gKGMgLSBieCk7XG4gICAgYWxvID0gYnggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogZHk7XG4gICAgYmhpID0gYyAtIChjIC0gZHkpO1xuICAgIGJsbyA9IGR5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGR4ICogYnk7XG4gICAgYyA9IHNwbGl0dGVyICogZHg7XG4gICAgYWhpID0gYyAtIChjIC0gZHgpO1xuICAgIGFsbyA9IGR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJ5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJ5KTtcbiAgICBibG8gPSBieSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBiZFsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJkWzNdID0gdTM7XG4gICAgczEgPSBjeCAqIGV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGN4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGN4KTtcbiAgICBhbG8gPSBjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBleSk7XG4gICAgYmxvID0gZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gZXggKiBjeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBleCk7XG4gICAgYWxvID0gZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY3k7XG4gICAgYmhpID0gYyAtIChjIC0gY3kpO1xuICAgIGJsbyA9IGN5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGNlWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgY2VbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIGNlWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgY2VbM10gPSB1MztcbiAgICBzMSA9IGR4ICogYXk7XG4gICAgYyA9IHNwbGl0dGVyICogZHg7XG4gICAgYWhpID0gYyAtIChjIC0gZHgpO1xuICAgIGFsbyA9IGR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGF5KTtcbiAgICBibG8gPSBheSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBheCAqIGR5O1xuICAgIGMgPSBzcGxpdHRlciAqIGF4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGF4KTtcbiAgICBhbG8gPSBheCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkeSk7XG4gICAgYmxvID0gZHkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgZGFbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBkYVsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIHUzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IHUzIC0gX2o7XG4gICAgZGFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBkYVszXSA9IHUzO1xuICAgIHMxID0gZXggKiBieTtcbiAgICBjID0gc3BsaXR0ZXIgKiBleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBleCk7XG4gICAgYWxvID0gZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgIGJsbyA9IGJ5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGJ4ICogZXk7XG4gICAgYyA9IHNwbGl0dGVyICogYng7XG4gICAgYWhpID0gYyAtIChjIC0gYngpO1xuICAgIGFsbyA9IGJ4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGV5KTtcbiAgICBibG8gPSBleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBlYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGViWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBlYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGViWzNdID0gdTM7XG5cbiAgICBjb25zdCBhYmNsZW4gPSBzdW1fdGhyZWVfc2NhbGUoYWIsIGJjLCBhYywgY3osIGF6LCAtYnosIGFiYyk7XG4gICAgY29uc3QgYmNkbGVuID0gc3VtX3RocmVlX3NjYWxlKGJjLCBjZCwgYmQsIGR6LCBieiwgLWN6LCBiY2QpO1xuICAgIGNvbnN0IGNkZWxlbiA9IHN1bV90aHJlZV9zY2FsZShjZCwgZGUsIGNlLCBleiwgY3osIC1keiwgY2RlKTtcbiAgICBjb25zdCBkZWFsZW4gPSBzdW1fdGhyZWVfc2NhbGUoZGUsIGVhLCBkYSwgYXosIGR6LCAtZXosIGRlYSk7XG4gICAgY29uc3QgZWFibGVuID0gc3VtX3RocmVlX3NjYWxlKGVhLCBhYiwgZWIsIGJ6LCBleiwgLWF6LCBlYWIpO1xuICAgIGNvbnN0IGFiZGxlbiA9IHN1bV90aHJlZV9zY2FsZShhYiwgYmQsIGRhLCBkeiwgYXosIGJ6LCBhYmQpO1xuICAgIGNvbnN0IGJjZWxlbiA9IHN1bV90aHJlZV9zY2FsZShiYywgY2UsIGViLCBleiwgYnosIGN6LCBiY2UpO1xuICAgIGNvbnN0IGNkYWxlbiA9IHN1bV90aHJlZV9zY2FsZShjZCwgZGEsIGFjLCBheiwgY3osIGR6LCBjZGEpO1xuICAgIGNvbnN0IGRlYmxlbiA9IHN1bV90aHJlZV9zY2FsZShkZSwgZWIsIGJkLCBieiwgZHosIGV6LCBkZWIpO1xuICAgIGNvbnN0IGVhY2xlbiA9IHN1bV90aHJlZV9zY2FsZShlYSwgYWMsIGNlLCBjeiwgZXosIGF6LCBlYWMpO1xuXG4gICAgY29uc3QgZGV0ZXJsZW4gPSBzdW1fdGhyZWUoXG4gICAgICAgIGxpZnRleGFjdChjZGVsZW4sIGNkZSwgYmNlbGVuLCBiY2UsIGRlYmxlbiwgZGViLCBiY2RsZW4sIGJjZCwgYXgsIGF5LCBheiwgYWRldCksIGFkZXQsXG4gICAgICAgIGxpZnRleGFjdChkZWFsZW4sIGRlYSwgY2RhbGVuLCBjZGEsIGVhY2xlbiwgZWFjLCBjZGVsZW4sIGNkZSwgYngsIGJ5LCBieiwgYmRldCksIGJkZXQsXG4gICAgICAgIHN1bV90aHJlZShcbiAgICAgICAgICAgIGxpZnRleGFjdChlYWJsZW4sIGVhYiwgZGVibGVuLCBkZWIsIGFiZGxlbiwgYWJkLCBkZWFsZW4sIGRlYSwgY3gsIGN5LCBjeiwgY2RldCksIGNkZXQsXG4gICAgICAgICAgICBsaWZ0ZXhhY3QoYWJjbGVuLCBhYmMsIGVhY2xlbiwgZWFjLCBiY2VsZW4sIGJjZSwgZWFibGVuLCBlYWIsIGR4LCBkeSwgZHosIGRkZXQpLCBkZGV0LFxuICAgICAgICAgICAgbGlmdGV4YWN0KGJjZGxlbiwgYmNkLCBhYmRsZW4sIGFiZCwgY2RhbGVuLCBjZGEsIGFiY2xlbiwgYWJjLCBleCwgZXksIGV6LCBlZGV0KSwgZWRldCwgY2RkZXQsIGNkZWRldCksIGNkZWRldCwgYWJkZXQsIGRldGVyKTtcblxuICAgIHJldHVybiBkZXRlcltkZXRlcmxlbiAtIDFdO1xufVxuXG5jb25zdCB4ZGV0ID0gdmVjKDk2KTtcbmNvbnN0IHlkZXQgPSB2ZWMoOTYpO1xuY29uc3QgemRldCA9IHZlYyg5Nik7XG5jb25zdCBmaW4gPSB2ZWMoMTE1Mik7XG5cbmZ1bmN0aW9uIGxpZnRhZGFwdChhLCBiLCBjLCBheiwgYnosIGN6LCB4LCB5LCB6LCBvdXQpIHtcbiAgICBjb25zdCBsZW4gPSBzdW1fdGhyZWVfc2NhbGUoYSwgYiwgYywgYXosIGJ6LCBjeiwgXzI0KTtcbiAgICByZXR1cm4gc3VtX3RocmVlKFxuICAgICAgICBzY2FsZShzY2FsZShsZW4sIF8yNCwgeCwgXzQ4KSwgXzQ4LCB4LCB4ZGV0KSwgeGRldCxcbiAgICAgICAgc2NhbGUoc2NhbGUobGVuLCBfMjQsIHksIF80OCksIF80OCwgeSwgeWRldCksIHlkZXQsXG4gICAgICAgIHNjYWxlKHNjYWxlKGxlbiwgXzI0LCB6LCBfNDgpLCBfNDgsIHosIHpkZXQpLCB6ZGV0LCBfMTkyLCBvdXQpO1xufVxuXG5mdW5jdGlvbiBpbnNwaGVyZWFkYXB0KGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIGV4LCBleSwgZXosIHBlcm1hbmVudCkge1xuICAgIGxldCBhYjMsIGJjMywgY2QzLCBkYTMsIGFjMywgYmQzO1xuXG4gICAgbGV0IGFleHRhaWwsIGJleHRhaWwsIGNleHRhaWwsIGRleHRhaWw7XG4gICAgbGV0IGFleXRhaWwsIGJleXRhaWwsIGNleXRhaWwsIGRleXRhaWw7XG4gICAgbGV0IGFlenRhaWwsIGJlenRhaWwsIGNlenRhaWwsIGRlenRhaWw7XG5cbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfMCwgczEsIHMwLCB0MSwgdDA7XG5cbiAgICBjb25zdCBhZXggPSBheCAtIGV4O1xuICAgIGNvbnN0IGJleCA9IGJ4IC0gZXg7XG4gICAgY29uc3QgY2V4ID0gY3ggLSBleDtcbiAgICBjb25zdCBkZXggPSBkeCAtIGV4O1xuICAgIGNvbnN0IGFleSA9IGF5IC0gZXk7XG4gICAgY29uc3QgYmV5ID0gYnkgLSBleTtcbiAgICBjb25zdCBjZXkgPSBjeSAtIGV5O1xuICAgIGNvbnN0IGRleSA9IGR5IC0gZXk7XG4gICAgY29uc3QgYWV6ID0gYXogLSBlejtcbiAgICBjb25zdCBiZXogPSBieiAtIGV6O1xuICAgIGNvbnN0IGNleiA9IGN6IC0gZXo7XG4gICAgY29uc3QgZGV6ID0gZHogLSBlejtcblxuICAgIHMxID0gYWV4ICogYmV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGFleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhZXgpO1xuICAgIGFsbyA9IGFleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYmV5KTtcbiAgICBibG8gPSBiZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYmV4ICogYWV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGJleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBiZXgpO1xuICAgIGFsbyA9IGJleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYWV5KTtcbiAgICBibG8gPSBhZXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgYWJbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBhYlsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIGFiMyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSBhYjMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKGFiMyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBhYlszXSA9IGFiMztcbiAgICBzMSA9IGJleCAqIGNleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiZXg7XG4gICAgYWhpID0gYyAtIChjIC0gYmV4KTtcbiAgICBhbG8gPSBiZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNleSk7XG4gICAgYmxvID0gY2V5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNleCAqIGJleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZXg7XG4gICAgYWhpID0gYyAtIChjIC0gY2V4KTtcbiAgICBhbG8gPSBjZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJleSk7XG4gICAgYmxvID0gYmV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGJjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYmNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICBiYzMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gYmMzIC0gX2o7XG4gICAgYmNbMl0gPSBfaiAtIChiYzMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYmNbM10gPSBiYzM7XG4gICAgczEgPSBjZXggKiBkZXk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNleCk7XG4gICAgYWxvID0gY2V4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGRleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkZXkpO1xuICAgIGJsbyA9IGRleSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkZXggKiBjZXk7XG4gICAgYyA9IHNwbGl0dGVyICogZGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGRleCk7XG4gICAgYWxvID0gZGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZXkpO1xuICAgIGJsbyA9IGNleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBjZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGNkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgY2QzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IGNkMyAtIF9qO1xuICAgIGNkWzJdID0gX2ogLSAoY2QzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGNkWzNdID0gY2QzO1xuICAgIHMxID0gZGV4ICogYWV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGRleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBkZXgpO1xuICAgIGFsbyA9IGRleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXk7XG4gICAgYmhpID0gYyAtIChjIC0gYWV5KTtcbiAgICBibG8gPSBhZXkgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYWV4ICogZGV5O1xuICAgIGMgPSBzcGxpdHRlciAqIGFleDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhZXgpO1xuICAgIGFsbyA9IGFleCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBkZXk7XG4gICAgYmhpID0gYyAtIChjIC0gZGV5KTtcbiAgICBibG8gPSBkZXkgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgZGFbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBkYVsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgIGRhMyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSBkYTMgLSBfajtcbiAgICBkYVsyXSA9IF9qIC0gKGRhMyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBkYVszXSA9IGRhMztcbiAgICBzMSA9IGFleCAqIGNleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhZXg7XG4gICAgYWhpID0gYyAtIChjIC0gYWV4KTtcbiAgICBhbG8gPSBhZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogY2V5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGNleSk7XG4gICAgYmxvID0gY2V5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGNleCAqIGFleTtcbiAgICBjID0gc3BsaXR0ZXIgKiBjZXg7XG4gICAgYWhpID0gYyAtIChjIC0gY2V4KTtcbiAgICBhbG8gPSBjZXggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYWV5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGFleSk7XG4gICAgYmxvID0gYWV5IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIGFjWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgX2ogPSBzMSArIF9pO1xuICAgIGJ2aXJ0ID0gX2ogLSBzMTtcbiAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIF9pID0gXzAgLSB0MTtcbiAgICBidmlydCA9IF8wIC0gX2k7XG4gICAgYWNbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICBhYzMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gYWMzIC0gX2o7XG4gICAgYWNbMl0gPSBfaiAtIChhYzMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgYWNbM10gPSBhYzM7XG4gICAgczEgPSBiZXggKiBkZXk7XG4gICAgYyA9IHNwbGl0dGVyICogYmV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJleCk7XG4gICAgYWxvID0gYmV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGRleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBkZXkpO1xuICAgIGJsbyA9IGRleSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBkZXggKiBiZXk7XG4gICAgYyA9IHNwbGl0dGVyICogZGV4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGRleCk7XG4gICAgYWxvID0gZGV4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJleTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZXkpO1xuICAgIGJsbyA9IGJleSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiZFswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJkWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgYmQzID0gX2ogKyBfaTtcbiAgICBidmlydCA9IGJkMyAtIF9qO1xuICAgIGJkWzJdID0gX2ogLSAoYmQzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJkWzNdID0gYmQzO1xuXG4gICAgY29uc3QgZmlubGVuID0gc3VtKFxuICAgICAgICBzdW0oXG4gICAgICAgICAgICBuZWdhdGUobGlmdGFkYXB0KGJjLCBjZCwgYmQsIGRleiwgYmV6LCAtY2V6LCBhZXgsIGFleSwgYWV6LCBhZGV0KSwgYWRldCksIGFkZXQsXG4gICAgICAgICAgICBsaWZ0YWRhcHQoY2QsIGRhLCBhYywgYWV6LCBjZXosIGRleiwgYmV4LCBiZXksIGJleiwgYmRldCksIGJkZXQsIGFiZGV0KSwgYWJkZXQsXG4gICAgICAgIHN1bShcbiAgICAgICAgICAgIG5lZ2F0ZShsaWZ0YWRhcHQoZGEsIGFiLCBiZCwgYmV6LCBkZXosIGFleiwgY2V4LCBjZXksIGNleiwgY2RldCksIGNkZXQpLCBjZGV0LFxuICAgICAgICAgICAgbGlmdGFkYXB0KGFiLCBiYywgYWMsIGNleiwgYWV6LCAtYmV6LCBkZXgsIGRleSwgZGV6LCBkZGV0KSwgZGRldCwgY2RkZXQpLCBjZGRldCwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gaXNwZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZXg7XG4gICAgYWV4dGFpbCA9IGF4IC0gKGFleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGF5IC0gYWV5O1xuICAgIGFleXRhaWwgPSBheSAtIChhZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBheiAtIGFlejtcbiAgICBhZXp0YWlsID0gYXogLSAoYWV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gYnggLSBiZXg7XG4gICAgYmV4dGFpbCA9IGJ4IC0gKGJleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGJ5IC0gYmV5O1xuICAgIGJleXRhaWwgPSBieSAtIChiZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBieiAtIGJlejtcbiAgICBiZXp0YWlsID0gYnogLSAoYmV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gY3ggLSBjZXg7XG4gICAgY2V4dGFpbCA9IGN4IC0gKGNleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGN5IC0gY2V5O1xuICAgIGNleXRhaWwgPSBjeSAtIChjZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBjeiAtIGNlejtcbiAgICBjZXp0YWlsID0gY3ogLSAoY2V6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGJ2aXJ0ID0gZHggLSBkZXg7XG4gICAgZGV4dGFpbCA9IGR4IC0gKGRleCArIGJ2aXJ0KSArIChidmlydCAtIGV4KTtcbiAgICBidmlydCA9IGR5IC0gZGV5O1xuICAgIGRleXRhaWwgPSBkeSAtIChkZXkgKyBidmlydCkgKyAoYnZpcnQgLSBleSk7XG4gICAgYnZpcnQgPSBkeiAtIGRlejtcbiAgICBkZXp0YWlsID0gZHogLSAoZGV6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZXopO1xuICAgIGlmIChhZXh0YWlsID09PSAwICYmIGFleXRhaWwgPT09IDAgJiYgYWV6dGFpbCA9PT0gMCAmJlxuICAgICAgICBiZXh0YWlsID09PSAwICYmIGJleXRhaWwgPT09IDAgJiYgYmV6dGFpbCA9PT0gMCAmJlxuICAgICAgICBjZXh0YWlsID09PSAwICYmIGNleXRhaWwgPT09IDAgJiYgY2V6dGFpbCA9PT0gMCAmJlxuICAgICAgICBkZXh0YWlsID09PSAwICYmIGRleXRhaWwgPT09IDAgJiYgZGV6dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gaXNwZXJyYm91bmRDICogcGVybWFuZW50ICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuXG4gICAgY29uc3QgYWJlcHMgPSAoYWV4ICogYmV5dGFpbCArIGJleSAqIGFleHRhaWwpIC0gKGFleSAqIGJleHRhaWwgKyBiZXggKiBhZXl0YWlsKTtcbiAgICBjb25zdCBiY2VwcyA9IChiZXggKiBjZXl0YWlsICsgY2V5ICogYmV4dGFpbCkgLSAoYmV5ICogY2V4dGFpbCArIGNleCAqIGJleXRhaWwpO1xuICAgIGNvbnN0IGNkZXBzID0gKGNleCAqIGRleXRhaWwgKyBkZXkgKiBjZXh0YWlsKSAtIChjZXkgKiBkZXh0YWlsICsgZGV4ICogY2V5dGFpbCk7XG4gICAgY29uc3QgZGFlcHMgPSAoZGV4ICogYWV5dGFpbCArIGFleSAqIGRleHRhaWwpIC0gKGRleSAqIGFleHRhaWwgKyBhZXggKiBkZXl0YWlsKTtcbiAgICBjb25zdCBhY2VwcyA9IChhZXggKiBjZXl0YWlsICsgY2V5ICogYWV4dGFpbCkgLSAoYWV5ICogY2V4dGFpbCArIGNleCAqIGFleXRhaWwpO1xuICAgIGNvbnN0IGJkZXBzID0gKGJleCAqIGRleXRhaWwgKyBkZXkgKiBiZXh0YWlsKSAtIChiZXkgKiBkZXh0YWlsICsgZGV4ICogYmV5dGFpbCk7XG4gICAgZGV0ICs9XG4gICAgICAgICgoKGJleCAqIGJleCArIGJleSAqIGJleSArIGJleiAqIGJleikgKiAoKGNleiAqIGRhZXBzICsgZGV6ICogYWNlcHMgKyBhZXogKiBjZGVwcykgK1xuICAgICAgICAoY2V6dGFpbCAqIGRhMyArIGRlenRhaWwgKiBhYzMgKyBhZXp0YWlsICogY2QzKSkgKyAoZGV4ICogZGV4ICsgZGV5ICogZGV5ICsgZGV6ICogZGV6KSAqXG4gICAgICAgICgoYWV6ICogYmNlcHMgLSBiZXogKiBhY2VwcyArIGNleiAqIGFiZXBzKSArIChhZXp0YWlsICogYmMzIC0gYmV6dGFpbCAqIGFjMyArIGNlenRhaWwgKiBhYjMpKSkgLVxuICAgICAgICAoKGFleCAqIGFleCArIGFleSAqIGFleSArIGFleiAqIGFleikgKiAoKGJleiAqIGNkZXBzIC0gY2V6ICogYmRlcHMgKyBkZXogKiBiY2VwcykgK1xuICAgICAgICAoYmV6dGFpbCAqIGNkMyAtIGNlenRhaWwgKiBiZDMgKyBkZXp0YWlsICogYmMzKSkgKyAoY2V4ICogY2V4ICsgY2V5ICogY2V5ICsgY2V6ICogY2V6KSAqXG4gICAgICAgICgoZGV6ICogYWJlcHMgKyBhZXogKiBiZGVwcyArIGJleiAqIGRhZXBzKSArIChkZXp0YWlsICogYWIzICsgYWV6dGFpbCAqIGJkMyArIGJlenRhaWwgKiBkYTMpKSkpICtcbiAgICAgICAgMiAqICgoKGJleCAqIGJleHRhaWwgKyBiZXkgKiBiZXl0YWlsICsgYmV6ICogYmV6dGFpbCkgKiAoY2V6ICogZGEzICsgZGV6ICogYWMzICsgYWV6ICogY2QzKSArXG4gICAgICAgIChkZXggKiBkZXh0YWlsICsgZGV5ICogZGV5dGFpbCArIGRleiAqIGRlenRhaWwpICogKGFleiAqIGJjMyAtIGJleiAqIGFjMyArIGNleiAqIGFiMykpIC1cbiAgICAgICAgKChhZXggKiBhZXh0YWlsICsgYWV5ICogYWV5dGFpbCArIGFleiAqIGFlenRhaWwpICogKGJleiAqIGNkMyAtIGNleiAqIGJkMyArIGRleiAqIGJjMykgK1xuICAgICAgICAoY2V4ICogY2V4dGFpbCArIGNleSAqIGNleXRhaWwgKyBjZXogKiBjZXp0YWlsKSAqIChkZXogKiBhYjMgKyBhZXogKiBiZDMgKyBiZXogKiBkYTMpKSk7XG5cbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zcGhlcmVleGFjdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BoZXJlKGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIGV4LCBleSwgZXopIHtcbiAgICBjb25zdCBhZXggPSBheCAtIGV4O1xuICAgIGNvbnN0IGJleCA9IGJ4IC0gZXg7XG4gICAgY29uc3QgY2V4ID0gY3ggLSBleDtcbiAgICBjb25zdCBkZXggPSBkeCAtIGV4O1xuICAgIGNvbnN0IGFleSA9IGF5IC0gZXk7XG4gICAgY29uc3QgYmV5ID0gYnkgLSBleTtcbiAgICBjb25zdCBjZXkgPSBjeSAtIGV5O1xuICAgIGNvbnN0IGRleSA9IGR5IC0gZXk7XG4gICAgY29uc3QgYWV6ID0gYXogLSBlejtcbiAgICBjb25zdCBiZXogPSBieiAtIGV6O1xuICAgIGNvbnN0IGNleiA9IGN6IC0gZXo7XG4gICAgY29uc3QgZGV6ID0gZHogLSBlejtcblxuICAgIGNvbnN0IGFleGJleSA9IGFleCAqIGJleTtcbiAgICBjb25zdCBiZXhhZXkgPSBiZXggKiBhZXk7XG4gICAgY29uc3QgYWIgPSBhZXhiZXkgLSBiZXhhZXk7XG4gICAgY29uc3QgYmV4Y2V5ID0gYmV4ICogY2V5O1xuICAgIGNvbnN0IGNleGJleSA9IGNleCAqIGJleTtcbiAgICBjb25zdCBiYyA9IGJleGNleSAtIGNleGJleTtcbiAgICBjb25zdCBjZXhkZXkgPSBjZXggKiBkZXk7XG4gICAgY29uc3QgZGV4Y2V5ID0gZGV4ICogY2V5O1xuICAgIGNvbnN0IGNkID0gY2V4ZGV5IC0gZGV4Y2V5O1xuICAgIGNvbnN0IGRleGFleSA9IGRleCAqIGFleTtcbiAgICBjb25zdCBhZXhkZXkgPSBhZXggKiBkZXk7XG4gICAgY29uc3QgZGEgPSBkZXhhZXkgLSBhZXhkZXk7XG4gICAgY29uc3QgYWV4Y2V5ID0gYWV4ICogY2V5O1xuICAgIGNvbnN0IGNleGFleSA9IGNleCAqIGFleTtcbiAgICBjb25zdCBhYyA9IGFleGNleSAtIGNleGFleTtcbiAgICBjb25zdCBiZXhkZXkgPSBiZXggKiBkZXk7XG4gICAgY29uc3QgZGV4YmV5ID0gZGV4ICogYmV5O1xuICAgIGNvbnN0IGJkID0gYmV4ZGV5IC0gZGV4YmV5O1xuXG4gICAgY29uc3QgYWxpZnQgPSBhZXggKiBhZXggKyBhZXkgKiBhZXkgKyBhZXogKiBhZXo7XG4gICAgY29uc3QgYmxpZnQgPSBiZXggKiBiZXggKyBiZXkgKiBiZXkgKyBiZXogKiBiZXo7XG4gICAgY29uc3QgY2xpZnQgPSBjZXggKiBjZXggKyBjZXkgKiBjZXkgKyBjZXogKiBjZXo7XG4gICAgY29uc3QgZGxpZnQgPSBkZXggKiBkZXggKyBkZXkgKiBkZXkgKyBkZXogKiBkZXo7XG5cbiAgICBjb25zdCBkZXQgPVxuICAgICAgICAoY2xpZnQgKiAoZGV6ICogYWIgKyBhZXogKiBiZCArIGJleiAqIGRhKSAtIGRsaWZ0ICogKGFleiAqIGJjIC0gYmV6ICogYWMgKyBjZXogKiBhYikpICtcbiAgICAgICAgKGFsaWZ0ICogKGJleiAqIGNkIC0gY2V6ICogYmQgKyBkZXogKiBiYykgLSBibGlmdCAqIChjZXogKiBkYSArIGRleiAqIGFjICsgYWV6ICogY2QpKTtcblxuICAgIGNvbnN0IGFlenBsdXMgPSBNYXRoLmFicyhhZXopO1xuICAgIGNvbnN0IGJlenBsdXMgPSBNYXRoLmFicyhiZXopO1xuICAgIGNvbnN0IGNlenBsdXMgPSBNYXRoLmFicyhjZXopO1xuICAgIGNvbnN0IGRlenBsdXMgPSBNYXRoLmFicyhkZXopO1xuICAgIGNvbnN0IGFleGJleXBsdXMgPSBNYXRoLmFicyhhZXhiZXkpICsgTWF0aC5hYnMoYmV4YWV5KTtcbiAgICBjb25zdCBiZXhjZXlwbHVzID0gTWF0aC5hYnMoYmV4Y2V5KSArIE1hdGguYWJzKGNleGJleSk7XG4gICAgY29uc3QgY2V4ZGV5cGx1cyA9IE1hdGguYWJzKGNleGRleSkgKyBNYXRoLmFicyhkZXhjZXkpO1xuICAgIGNvbnN0IGRleGFleXBsdXMgPSBNYXRoLmFicyhkZXhhZXkpICsgTWF0aC5hYnMoYWV4ZGV5KTtcbiAgICBjb25zdCBhZXhjZXlwbHVzID0gTWF0aC5hYnMoYWV4Y2V5KSArIE1hdGguYWJzKGNleGFleSk7XG4gICAgY29uc3QgYmV4ZGV5cGx1cyA9IE1hdGguYWJzKGJleGRleSkgKyBNYXRoLmFicyhkZXhiZXkpO1xuICAgIGNvbnN0IHBlcm1hbmVudCA9XG4gICAgICAgIChjZXhkZXlwbHVzICogYmV6cGx1cyArIGJleGRleXBsdXMgKiBjZXpwbHVzICsgYmV4Y2V5cGx1cyAqIGRlenBsdXMpICogYWxpZnQgK1xuICAgICAgICAoZGV4YWV5cGx1cyAqIGNlenBsdXMgKyBhZXhjZXlwbHVzICogZGV6cGx1cyArIGNleGRleXBsdXMgKiBhZXpwbHVzKSAqIGJsaWZ0ICtcbiAgICAgICAgKGFleGJleXBsdXMgKiBkZXpwbHVzICsgYmV4ZGV5cGx1cyAqIGFlenBsdXMgKyBkZXhhZXlwbHVzICogYmV6cGx1cykgKiBjbGlmdCArXG4gICAgICAgIChiZXhjZXlwbHVzICogYWV6cGx1cyArIGFleGNleXBsdXMgKiBiZXpwbHVzICsgYWV4YmV5cGx1cyAqIGNlenBsdXMpICogZGxpZnQ7XG5cbiAgICBjb25zdCBlcnJib3VuZCA9IGlzcGVycmJvdW5kQSAqIHBlcm1hbmVudDtcbiAgICBpZiAoZGV0ID4gZXJyYm91bmQgfHwgLWRldCA+IGVycmJvdW5kKSB7XG4gICAgICAgIHJldHVybiBkZXQ7XG4gICAgfVxuICAgIHJldHVybiAtaW5zcGhlcmVhZGFwdChheCwgYXksIGF6LCBieCwgYnksIGJ6LCBjeCwgY3ksIGN6LCBkeCwgZHksIGR6LCBleCwgZXksIGV6LCBwZXJtYW5lbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGhlcmVmYXN0KHBheCwgcGF5LCBwYXosIHBieCwgcGJ5LCBwYnosIHBjeCwgcGN5LCBwY3osIHBkeCwgcGR5LCBwZHosIHBleCwgcGV5LCBwZXopIHtcbiAgICBjb25zdCBhZXggPSBwYXggLSBwZXg7XG4gICAgY29uc3QgYmV4ID0gcGJ4IC0gcGV4O1xuICAgIGNvbnN0IGNleCA9IHBjeCAtIHBleDtcbiAgICBjb25zdCBkZXggPSBwZHggLSBwZXg7XG4gICAgY29uc3QgYWV5ID0gcGF5IC0gcGV5O1xuICAgIGNvbnN0IGJleSA9IHBieSAtIHBleTtcbiAgICBjb25zdCBjZXkgPSBwY3kgLSBwZXk7XG4gICAgY29uc3QgZGV5ID0gcGR5IC0gcGV5O1xuICAgIGNvbnN0IGFleiA9IHBheiAtIHBlejtcbiAgICBjb25zdCBiZXogPSBwYnogLSBwZXo7XG4gICAgY29uc3QgY2V6ID0gcGN6IC0gcGV6O1xuICAgIGNvbnN0IGRleiA9IHBkeiAtIHBlejtcblxuICAgIGNvbnN0IGFiID0gYWV4ICogYmV5IC0gYmV4ICogYWV5O1xuICAgIGNvbnN0IGJjID0gYmV4ICogY2V5IC0gY2V4ICogYmV5O1xuICAgIGNvbnN0IGNkID0gY2V4ICogZGV5IC0gZGV4ICogY2V5O1xuICAgIGNvbnN0IGRhID0gZGV4ICogYWV5IC0gYWV4ICogZGV5O1xuICAgIGNvbnN0IGFjID0gYWV4ICogY2V5IC0gY2V4ICogYWV5O1xuICAgIGNvbnN0IGJkID0gYmV4ICogZGV5IC0gZGV4ICogYmV5O1xuXG4gICAgY29uc3QgYWJjID0gYWV6ICogYmMgLSBiZXogKiBhYyArIGNleiAqIGFiO1xuICAgIGNvbnN0IGJjZCA9IGJleiAqIGNkIC0gY2V6ICogYmQgKyBkZXogKiBiYztcbiAgICBjb25zdCBjZGEgPSBjZXogKiBkYSArIGRleiAqIGFjICsgYWV6ICogY2Q7XG4gICAgY29uc3QgZGFiID0gZGV6ICogYWIgKyBhZXogKiBiZCArIGJleiAqIGRhO1xuXG4gICAgY29uc3QgYWxpZnQgPSBhZXggKiBhZXggKyBhZXkgKiBhZXkgKyBhZXogKiBhZXo7XG4gICAgY29uc3QgYmxpZnQgPSBiZXggKiBiZXggKyBiZXkgKiBiZXkgKyBiZXogKiBiZXo7XG4gICAgY29uc3QgY2xpZnQgPSBjZXggKiBjZXggKyBjZXkgKiBjZXkgKyBjZXogKiBjZXo7XG4gICAgY29uc3QgZGxpZnQgPSBkZXggKiBkZXggKyBkZXkgKiBkZXkgKyBkZXogKiBkZXo7XG5cbiAgICByZXR1cm4gKGNsaWZ0ICogZGFiIC0gZGxpZnQgKiBhYmMpICsgKGFsaWZ0ICogYmNkIC0gYmxpZnQgKiBjZGEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/insphere.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/orient2d.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/orient2d.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"orient2d\": () => (/* binding */ orient2d),\n/* harmony export */ \"orient2dfast\": () => (/* binding */ orient2dfast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst ccwerrboundA = (3 + 16 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst ccwerrboundB = (2 + 12 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst ccwerrboundC = (9 + 64 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst B = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst C1 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst C2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(12);\nconst D = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(16);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nfunction orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nfunction orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9vcmllbnQyZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0Y7O0FBRWhGLCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTNELFVBQVUsNkNBQUc7QUFDYixXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLFVBQVUsNkNBQUc7QUFDYixVQUFVLDZDQUFHOztBQUViO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBLFFBQVEsOENBQVE7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGNBQWMsa0RBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDLG9EQUFjO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBRzs7QUFFckI7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiw2Q0FBRzs7QUFFckI7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQSxRQUFRLDhDQUFRO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0EsUUFBUSw4Q0FBUTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2Q0FBRzs7QUFFcEI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vb3JpZW50MmQuanM/OGM1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtfSBmcm9tICcuL3V0aWwuanMnO1xuXG5jb25zdCBjY3dlcnJib3VuZEEgPSAoMyArIDE2ICogZXBzaWxvbikgKiBlcHNpbG9uO1xuY29uc3QgY2N3ZXJyYm91bmRCID0gKDIgKyAxMiAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IGNjd2VycmJvdW5kQyA9ICg5ICsgNjQgKiBlcHNpbG9uKSAqIGVwc2lsb24gKiBlcHNpbG9uO1xuXG5jb25zdCBCID0gdmVjKDQpO1xuY29uc3QgQzEgPSB2ZWMoOCk7XG5jb25zdCBDMiA9IHZlYygxMik7XG5jb25zdCBEID0gdmVjKDE2KTtcbmNvbnN0IHUgPSB2ZWMoNCk7XG5cbmZ1bmN0aW9uIG9yaWVudDJkYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZGV0c3VtKSB7XG4gICAgbGV0IGFjeHRhaWwsIGFjeXRhaWwsIGJjeHRhaWwsIGJjeXRhaWw7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIGNvbnN0IGFjeCA9IGF4IC0gY3g7XG4gICAgY29uc3QgYmN4ID0gYnggLSBjeDtcbiAgICBjb25zdCBhY3kgPSBheSAtIGN5O1xuICAgIGNvbnN0IGJjeSA9IGJ5IC0gY3k7XG5cbiAgICBzMSA9IGFjeCAqIGJjeTtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3g7XG4gICAgYWhpID0gYyAtIChjIC0gYWN4KTtcbiAgICBhbG8gPSBhY3ggLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN5O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeSk7XG4gICAgYmxvID0gYmN5IC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFjeSAqIGJjeDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3k7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5KTtcbiAgICBhbG8gPSBhY3kgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN4O1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeCk7XG4gICAgYmxvID0gYmN4IC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIEJbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICBCWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBCWzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgQlszXSA9IHUzO1xuXG4gICAgbGV0IGRldCA9IGVzdGltYXRlKDQsIEIpO1xuICAgIGxldCBlcnJib3VuZCA9IGNjd2VycmJvdW5kQiAqIGRldHN1bTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBidmlydCA9IGF4IC0gYWN4O1xuICAgIGFjeHRhaWwgPSBheCAtIChhY3ggKyBidmlydCkgKyAoYnZpcnQgLSBjeCk7XG4gICAgYnZpcnQgPSBieCAtIGJjeDtcbiAgICBiY3h0YWlsID0gYnggLSAoYmN4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gY3gpO1xuICAgIGJ2aXJ0ID0gYXkgLSBhY3k7XG4gICAgYWN5dGFpbCA9IGF5IC0gKGFjeSArIGJ2aXJ0KSArIChidmlydCAtIGN5KTtcbiAgICBidmlydCA9IGJ5IC0gYmN5O1xuICAgIGJjeXRhaWwgPSBieSAtIChiY3kgKyBidmlydCkgKyAoYnZpcnQgLSBjeSk7XG5cbiAgICBpZiAoYWN4dGFpbCA9PT0gMCAmJiBhY3l0YWlsID09PSAwICYmIGJjeHRhaWwgPT09IDAgJiYgYmN5dGFpbCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGVycmJvdW5kID0gY2N3ZXJyYm91bmRDICogZGV0c3VtICsgcmVzdWx0ZXJyYm91bmQgKiBNYXRoLmFicyhkZXQpO1xuICAgIGRldCArPSAoYWN4ICogYmN5dGFpbCArIGJjeSAqIGFjeHRhaWwpIC0gKGFjeSAqIGJjeHRhaWwgKyBiY3ggKiBhY3l0YWlsKTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHJldHVybiBkZXQ7XG5cbiAgICBzMSA9IGFjeHRhaWwgKiBiY3k7XG4gICAgYyA9IHNwbGl0dGVyICogYWN4dGFpbDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhY3h0YWlsKTtcbiAgICBhbG8gPSBhY3h0YWlsIC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJjeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3kpO1xuICAgIGJsbyA9IGJjeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBhY3l0YWlsICogYmN4O1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeXRhaWw7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5dGFpbCk7XG4gICAgYWxvID0gYWN5dGFpbCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3g7XG4gICAgYmhpID0gYyAtIChjIC0gYmN4KTtcbiAgICBibG8gPSBiY3ggLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgdVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIHVbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIHVbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICB1WzNdID0gdTM7XG4gICAgY29uc3QgQzFsZW4gPSBzdW0oNCwgQiwgNCwgdSwgQzEpO1xuXG4gICAgczEgPSBhY3ggKiBiY3l0YWlsO1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeDtcbiAgICBhaGkgPSBjIC0gKGMgLSBhY3gpO1xuICAgIGFsbyA9IGFjeCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3l0YWlsO1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeXRhaWwpO1xuICAgIGJsbyA9IGJjeXRhaWwgLSBiaGk7XG4gICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIHQxID0gYWN5ICogYmN4dGFpbDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3k7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5KTtcbiAgICBhbG8gPSBhY3kgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN4dGFpbDtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3h0YWlsKTtcbiAgICBibG8gPSBiY3h0YWlsIC0gYmhpO1xuICAgIHQwID0gYWxvICogYmxvIC0gKHQxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaSA9IHMwIC0gdDA7XG4gICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgIHVbMF0gPSBzMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQwKTtcbiAgICBfaiA9IHMxICsgX2k7XG4gICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgIF8wID0gczEgLSAoX2ogLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgX2kgPSBfMCAtIHQxO1xuICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICB1WzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICB1WzJdID0gX2ogLSAodTMgLSBidmlydCkgKyAoX2kgLSBidmlydCk7XG4gICAgdVszXSA9IHUzO1xuICAgIGNvbnN0IEMybGVuID0gc3VtKEMxbGVuLCBDMSwgNCwgdSwgQzIpO1xuXG4gICAgczEgPSBhY3h0YWlsICogYmN5dGFpbDtcbiAgICBjID0gc3BsaXR0ZXIgKiBhY3h0YWlsO1xuICAgIGFoaSA9IGMgLSAoYyAtIGFjeHRhaWwpO1xuICAgIGFsbyA9IGFjeHRhaWwgLSBhaGk7XG4gICAgYyA9IHNwbGl0dGVyICogYmN5dGFpbDtcbiAgICBiaGkgPSBjIC0gKGMgLSBiY3l0YWlsKTtcbiAgICBibG8gPSBiY3l0YWlsIC0gYmhpO1xuICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICB0MSA9IGFjeXRhaWwgKiBiY3h0YWlsO1xuICAgIGMgPSBzcGxpdHRlciAqIGFjeXRhaWw7XG4gICAgYWhpID0gYyAtIChjIC0gYWN5dGFpbCk7XG4gICAgYWxvID0gYWN5dGFpbCAtIGFoaTtcbiAgICBjID0gc3BsaXR0ZXIgKiBiY3h0YWlsO1xuICAgIGJoaSA9IGMgLSAoYyAtIGJjeHRhaWwpO1xuICAgIGJsbyA9IGJjeHRhaWwgLSBiaGk7XG4gICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9pID0gczAgLSB0MDtcbiAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgdVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIHVbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICB1MyA9IF9qICsgX2k7XG4gICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgIHVbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICB1WzNdID0gdTM7XG4gICAgY29uc3QgRGxlbiA9IHN1bShDMmxlbiwgQzIsIDQsIHUsIEQpO1xuXG4gICAgcmV0dXJuIERbRGxlbiAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JpZW50MmQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSkge1xuICAgIGNvbnN0IGRldGxlZnQgPSAoYXkgLSBjeSkgKiAoYnggLSBjeCk7XG4gICAgY29uc3QgZGV0cmlnaHQgPSAoYXggLSBjeCkgKiAoYnkgLSBjeSk7XG4gICAgY29uc3QgZGV0ID0gZGV0bGVmdCAtIGRldHJpZ2h0O1xuXG4gICAgY29uc3QgZGV0c3VtID0gTWF0aC5hYnMoZGV0bGVmdCArIGRldHJpZ2h0KTtcbiAgICBpZiAoTWF0aC5hYnMoZGV0KSA+PSBjY3dlcnJib3VuZEEgKiBkZXRzdW0pIHJldHVybiBkZXQ7XG5cbiAgICByZXR1cm4gLW9yaWVudDJkYWRhcHQoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgZGV0c3VtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9yaWVudDJkZmFzdChheCwgYXksIGJ4LCBieSwgY3gsIGN5KSB7XG4gICAgcmV0dXJuIChheSAtIGN5KSAqIChieCAtIGN4KSAtIChheCAtIGN4KSAqIChieSAtIGN5KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/orient2d.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/orient3d.js": +/*!***************************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/orient3d.js ***! + \***************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"orient3d\": () => (/* binding */ orient3d),\n/* harmony export */ \"orient3dfast\": () => (/* binding */ orient3dfast)\n/* harmony export */ });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"../../../node_modules/robust-predicates/esm/util.js\");\n\n\nconst o3derrboundA = (7 + 56 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst o3derrboundB = (3 + 28 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\nconst o3derrboundC = (26 + 288 * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon) * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon * _util_js__WEBPACK_IMPORTED_MODULE_0__.epsilon;\n\nconst bc = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ca = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ab = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst at_b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst at_c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bt_c = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bt_a = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ct_a = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst ct_b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\nconst bct = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst cat = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst abt = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst u = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(4);\n\nconst _8 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _8b = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _16 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(8);\nconst _12 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(12);\n\nlet fin = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\nlet fin2 = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.vec)(192);\n\nfunction finadd(finlen, alen, a) {\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(finlen, fin, alen, a, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail;\n let adytail, bdytail, cdytail;\n let adztail, bdztail, cdztail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n s1 = bdx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = _util_js__WEBPACK_IMPORTED_MODULE_0__.splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adz, _8), _8,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdz, _8b), _8b, _16), _16,\n (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdz, _8), _8, fin);\n\n let det = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.estimate)(finlen, fin);\n let errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n adytail === 0 && bdytail === 0 && cdytail === 0 &&\n adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n\n errbound = o3derrboundC * permanent + _util_js__WEBPACK_IMPORTED_MODULE_0__.resulterrbound * Math.abs(det);\n det +=\n adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n const bctlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adz, _16), _16);\n\n const catlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdz, _16), _16);\n\n const abtlen = (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.sum)(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdz, _16), _16);\n\n if (adztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.scale)(abtlen, abt, cdztail, _16), _16);\n }\n\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n\n return fin[finlen - 1];\n}\n\nfunction orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n\n const det =\n adz * (bdxcdy - cdxbdy) +\n bdz * (cdxady - adxcdy) +\n cdz * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n const errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nfunction orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n return adx * (bdy * cdz - bdz * cdy) +\n bdx * (cdy * adz - cdz * ady) +\n cdx * (ady * bdz - adz * bdy);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS9vcmllbnQzZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBdUY7O0FBRXZGLCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELCtCQUErQiw2Q0FBTyxJQUFJLDZDQUFPO0FBQ2pELGlDQUFpQyw2Q0FBTyxJQUFJLDZDQUFPLEdBQUcsNkNBQU87O0FBRTdELFdBQVcsNkNBQUc7QUFDZCxXQUFXLDZDQUFHO0FBQ2QsV0FBVyw2Q0FBRztBQUNkLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLGFBQWEsNkNBQUc7QUFDaEIsYUFBYSw2Q0FBRztBQUNoQixhQUFhLDZDQUFHO0FBQ2hCLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRztBQUNmLFVBQVUsNkNBQUc7O0FBRWIsV0FBVyw2Q0FBRztBQUNkLFlBQVksNkNBQUc7QUFDZixZQUFZLDZDQUFHO0FBQ2YsWUFBWSw2Q0FBRzs7QUFFZixVQUFVLDZDQUFHO0FBQ2IsV0FBVyw2Q0FBRzs7QUFFZDtBQUNBLGFBQWEsNkNBQUc7QUFDaEIscUJBQXFCLFlBQVk7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw4Q0FBUTtBQUN4QjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hCO0FBQ0E7QUFDQSxnQkFBZ0IsOENBQVE7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDhDQUFRO0FBQ3hC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O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDLG1CQUFtQiw2Q0FBRztBQUN0Qiw0QkFBNEIsK0NBQUs7O0FBRWpDO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQztBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQztBQUNBO0FBQ0EsZ0NBQWdDLCtDQUFLO0FBQ3JDLGdDQUFnQywrQ0FBSztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vb3JpZW50M2QuanM/NGZmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Vwc2lsb24sIHNwbGl0dGVyLCByZXN1bHRlcnJib3VuZCwgZXN0aW1hdGUsIHZlYywgc3VtLCBzY2FsZX0gZnJvbSAnLi91dGlsLmpzJztcblxuY29uc3QgbzNkZXJyYm91bmRBID0gKDcgKyA1NiAqIGVwc2lsb24pICogZXBzaWxvbjtcbmNvbnN0IG8zZGVycmJvdW5kQiA9ICgzICsgMjggKiBlcHNpbG9uKSAqIGVwc2lsb247XG5jb25zdCBvM2RlcnJib3VuZEMgPSAoMjYgKyAyODggKiBlcHNpbG9uKSAqIGVwc2lsb24gKiBlcHNpbG9uO1xuXG5jb25zdCBiYyA9IHZlYyg0KTtcbmNvbnN0IGNhID0gdmVjKDQpO1xuY29uc3QgYWIgPSB2ZWMoNCk7XG5jb25zdCBhdF9iID0gdmVjKDQpO1xuY29uc3QgYXRfYyA9IHZlYyg0KTtcbmNvbnN0IGJ0X2MgPSB2ZWMoNCk7XG5jb25zdCBidF9hID0gdmVjKDQpO1xuY29uc3QgY3RfYSA9IHZlYyg0KTtcbmNvbnN0IGN0X2IgPSB2ZWMoNCk7XG5jb25zdCBiY3QgPSB2ZWMoOCk7XG5jb25zdCBjYXQgPSB2ZWMoOCk7XG5jb25zdCBhYnQgPSB2ZWMoOCk7XG5jb25zdCB1ID0gdmVjKDQpO1xuXG5jb25zdCBfOCA9IHZlYyg4KTtcbmNvbnN0IF84YiA9IHZlYyg4KTtcbmNvbnN0IF8xNiA9IHZlYyg4KTtcbmNvbnN0IF8xMiA9IHZlYygxMik7XG5cbmxldCBmaW4gPSB2ZWMoMTkyKTtcbmxldCBmaW4yID0gdmVjKDE5Mik7XG5cbmZ1bmN0aW9uIGZpbmFkZChmaW5sZW4sIGFsZW4sIGEpIHtcbiAgICBmaW5sZW4gPSBzdW0oZmlubGVuLCBmaW4sIGFsZW4sIGEsIGZpbjIpO1xuICAgIGNvbnN0IHRtcCA9IGZpbjsgZmluID0gZmluMjsgZmluMiA9IHRtcDtcbiAgICByZXR1cm4gZmlubGVuO1xufVxuXG5mdW5jdGlvbiB0YWlsaW5pdCh4dGFpbCwgeXRhaWwsIGF4LCBheSwgYngsIGJ5LCBhLCBiKSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgX2ssIF8wLCBzMSwgczAsIHQxLCB0MCwgdTMsIG5lZ2F0ZTtcbiAgICBpZiAoeHRhaWwgPT09IDApIHtcbiAgICAgICAgaWYgKHl0YWlsID09PSAwKSB7XG4gICAgICAgICAgICBhWzBdID0gMDtcbiAgICAgICAgICAgIGJbMF0gPSAwO1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZWdhdGUgPSAteXRhaWw7XG4gICAgICAgICAgICBzMSA9IG5lZ2F0ZSAqIGF4O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogbmVnYXRlO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0gbmVnYXRlKTtcbiAgICAgICAgICAgIGFsbyA9IG5lZ2F0ZSAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGF4O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYXgpO1xuICAgICAgICAgICAgYmxvID0gYXggLSBiaGk7XG4gICAgICAgICAgICBhWzBdID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIGFbMV0gPSBzMTtcbiAgICAgICAgICAgIHMxID0geXRhaWwgKiBieDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICAgICAgICAgIGJsbyA9IGJ4IC0gYmhpO1xuICAgICAgICAgICAgYlswXSA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBiWzFdID0gczE7XG4gICAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh5dGFpbCA9PT0gMCkge1xuICAgICAgICAgICAgczEgPSB4dGFpbCAqIGF5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogeHRhaWw7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSB4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSB4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGF5O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYXkpO1xuICAgICAgICAgICAgYmxvID0gYXkgLSBiaGk7XG4gICAgICAgICAgICBhWzBdID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIGFbMV0gPSBzMTtcbiAgICAgICAgICAgIG5lZ2F0ZSA9IC14dGFpbDtcbiAgICAgICAgICAgIHMxID0gbmVnYXRlICogYnk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBuZWdhdGU7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSBuZWdhdGUpO1xuICAgICAgICAgICAgYWxvID0gbmVnYXRlIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYnk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBieSk7XG4gICAgICAgICAgICBibG8gPSBieSAtIGJoaTtcbiAgICAgICAgICAgIGJbMF0gPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgYlsxXSA9IHMxO1xuICAgICAgICAgICAgcmV0dXJuIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHh0YWlsICogYXk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiB4dGFpbDtcbiAgICAgICAgICAgIGFoaSA9IGMgLSAoYyAtIHh0YWlsKTtcbiAgICAgICAgICAgIGFsbyA9IHh0YWlsIC0gYWhpO1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogYXk7XG4gICAgICAgICAgICBiaGkgPSBjIC0gKGMgLSBheSk7XG4gICAgICAgICAgICBibG8gPSBheSAtIGJoaTtcbiAgICAgICAgICAgIHMwID0gYWxvICogYmxvIC0gKHMxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgICAgIHQxID0geXRhaWwgKiBheDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBheDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGF4KTtcbiAgICAgICAgICAgIGJsbyA9IGF4IC0gYmhpO1xuICAgICAgICAgICAgdDAgPSBhbG8gKiBibG8gLSAodDEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgX2kgPSBzMCAtIHQwO1xuICAgICAgICAgICAgYnZpcnQgPSBzMCAtIF9pO1xuICAgICAgICAgICAgYVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgICAgICAgICAgX2ogPSBzMSArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSBfaiAtIHMxO1xuICAgICAgICAgICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIF9pID0gXzAgLSB0MTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gXzAgLSBfaTtcbiAgICAgICAgICAgIGFbMV0gPSBfMCAtIChfaSArIGJ2aXJ0KSArIChidmlydCAtIHQxKTtcbiAgICAgICAgICAgIHUzID0gX2ogKyBfaTtcbiAgICAgICAgICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICAgICAgICAgIGFbMl0gPSBfaiAtICh1MyAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICAgICAgICAgIGFbM10gPSB1MztcbiAgICAgICAgICAgIHMxID0geXRhaWwgKiBieDtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIHl0YWlsO1xuICAgICAgICAgICAgYWhpID0gYyAtIChjIC0geXRhaWwpO1xuICAgICAgICAgICAgYWxvID0geXRhaWwgLSBhaGk7XG4gICAgICAgICAgICBjID0gc3BsaXR0ZXIgKiBieDtcbiAgICAgICAgICAgIGJoaSA9IGMgLSAoYyAtIGJ4KTtcbiAgICAgICAgICAgIGJsbyA9IGJ4IC0gYmhpO1xuICAgICAgICAgICAgczAgPSBhbG8gKiBibG8gLSAoczEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICAgICAgdDEgPSB4dGFpbCAqIGJ5O1xuICAgICAgICAgICAgYyA9IHNwbGl0dGVyICogeHRhaWw7XG4gICAgICAgICAgICBhaGkgPSBjIC0gKGMgLSB4dGFpbCk7XG4gICAgICAgICAgICBhbG8gPSB4dGFpbCAtIGFoaTtcbiAgICAgICAgICAgIGMgPSBzcGxpdHRlciAqIGJ5O1xuICAgICAgICAgICAgYmhpID0gYyAtIChjIC0gYnkpO1xuICAgICAgICAgICAgYmxvID0gYnkgLSBiaGk7XG4gICAgICAgICAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgICAgICAgICBfaSA9IHMwIC0gdDA7XG4gICAgICAgICAgICBidmlydCA9IHMwIC0gX2k7XG4gICAgICAgICAgICBiWzBdID0gczAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MCk7XG4gICAgICAgICAgICBfaiA9IHMxICsgX2k7XG4gICAgICAgICAgICBidmlydCA9IF9qIC0gczE7XG4gICAgICAgICAgICBfMCA9IHMxIC0gKF9qIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgX2kgPSBfMCAtIHQxO1xuICAgICAgICAgICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgICAgICAgICAgYlsxXSA9IF8wIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDEpO1xuICAgICAgICAgICAgdTMgPSBfaiArIF9pO1xuICAgICAgICAgICAgYnZpcnQgPSB1MyAtIF9qO1xuICAgICAgICAgICAgYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgICAgICAgICAgYlszXSA9IHUzO1xuICAgICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRhaWxhZGQoZmlubGVuLCBhLCBiLCBrLCB6KSB7XG4gICAgbGV0IGJ2aXJ0LCBjLCBhaGksIGFsbywgYmhpLCBibG8sIF9pLCBfaiwgX2ssIF8wLCBzMSwgczAsIHUzO1xuICAgIHMxID0gYSAqIGI7XG4gICAgYyA9IHNwbGl0dGVyICogYTtcbiAgICBhaGkgPSBjIC0gKGMgLSBhKTtcbiAgICBhbG8gPSBhIC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGI7XG4gICAgYmhpID0gYyAtIChjIC0gYik7XG4gICAgYmxvID0gYiAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgYyA9IHNwbGl0dGVyICogaztcbiAgICBiaGkgPSBjIC0gKGMgLSBrKTtcbiAgICBibG8gPSBrIC0gYmhpO1xuICAgIF9pID0gczAgKiBrO1xuICAgIGMgPSBzcGxpdHRlciAqIHMwO1xuICAgIGFoaSA9IGMgLSAoYyAtIHMwKTtcbiAgICBhbG8gPSBzMCAtIGFoaTtcbiAgICB1WzBdID0gYWxvICogYmxvIC0gKF9pIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICBfaiA9IHMxICogaztcbiAgICBjID0gc3BsaXR0ZXIgKiBzMTtcbiAgICBhaGkgPSBjIC0gKGMgLSBzMSk7XG4gICAgYWxvID0gczEgLSBhaGk7XG4gICAgXzAgPSBhbG8gKiBibG8gLSAoX2ogLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIF9rID0gX2kgKyBfMDtcbiAgICBidmlydCA9IF9rIC0gX2k7XG4gICAgdVsxXSA9IF9pIC0gKF9rIC0gYnZpcnQpICsgKF8wIC0gYnZpcnQpO1xuICAgIHUzID0gX2ogKyBfaztcbiAgICB1WzJdID0gX2sgLSAodTMgLSBfaik7XG4gICAgdVszXSA9IHUzO1xuICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIDQsIHUpO1xuICAgIGlmICh6ICE9PSAwKSB7XG4gICAgICAgIGMgPSBzcGxpdHRlciAqIHo7XG4gICAgICAgIGJoaSA9IGMgLSAoYyAtIHopO1xuICAgICAgICBibG8gPSB6IC0gYmhpO1xuICAgICAgICBfaSA9IHMwICogejtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogczA7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIHMwKTtcbiAgICAgICAgYWxvID0gczAgLSBhaGk7XG4gICAgICAgIHVbMF0gPSBhbG8gKiBibG8gLSAoX2kgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgICAgICBfaiA9IHMxICogejtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogczE7XG4gICAgICAgIGFoaSA9IGMgLSAoYyAtIHMxKTtcbiAgICAgICAgYWxvID0gczEgLSBhaGk7XG4gICAgICAgIF8wID0gYWxvICogYmxvIC0gKF9qIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgX2sgPSBfaSArIF8wO1xuICAgICAgICBidmlydCA9IF9rIC0gX2k7XG4gICAgICAgIHVbMV0gPSBfaSAtIChfayAtIGJ2aXJ0KSArIChfMCAtIGJ2aXJ0KTtcbiAgICAgICAgdTMgPSBfaiArIF9rO1xuICAgICAgICB1WzJdID0gX2sgLSAodTMgLSBfaik7XG4gICAgICAgIHVbM10gPSB1MztcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgNCwgdSk7XG4gICAgfVxuICAgIHJldHVybiBmaW5sZW47XG59XG5cbmZ1bmN0aW9uIG9yaWVudDNkYWRhcHQoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeiwgcGVybWFuZW50KSB7XG4gICAgbGV0IGZpbmxlbjtcbiAgICBsZXQgYWR4dGFpbCwgYmR4dGFpbCwgY2R4dGFpbDtcbiAgICBsZXQgYWR5dGFpbCwgYmR5dGFpbCwgY2R5dGFpbDtcbiAgICBsZXQgYWR6dGFpbCwgYmR6dGFpbCwgY2R6dGFpbDtcbiAgICBsZXQgYnZpcnQsIGMsIGFoaSwgYWxvLCBiaGksIGJsbywgX2ksIF9qLCBfaywgXzAsIHMxLCBzMCwgdDEsIHQwLCB1MztcblxuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgczEgPSBiZHggKiBjZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJkeCk7XG4gICAgYWxvID0gYmR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZHkpO1xuICAgIGJsbyA9IGNkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBjZHggKiBiZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgYWxvID0gY2R4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZHkpO1xuICAgIGJsbyA9IGJkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBiY1swXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGJjWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBiY1syXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGJjWzNdID0gdTM7XG4gICAgczEgPSBjZHggKiBhZHk7XG4gICAgYyA9IHNwbGl0dGVyICogY2R4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGNkeCk7XG4gICAgYWxvID0gY2R4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgIGJsbyA9IGFkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBhZHggKiBjZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGFkeCk7XG4gICAgYWxvID0gYWR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGNkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBjZHkpO1xuICAgIGJsbyA9IGNkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBjYVswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGNhWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBjYVsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGNhWzNdID0gdTM7XG4gICAgczEgPSBhZHggKiBiZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYWR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGFkeCk7XG4gICAgYWxvID0gYWR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGJkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBiZHkpO1xuICAgIGJsbyA9IGJkeSAtIGJoaTtcbiAgICBzMCA9IGFsbyAqIGJsbyAtIChzMSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgdDEgPSBiZHggKiBhZHk7XG4gICAgYyA9IHNwbGl0dGVyICogYmR4O1xuICAgIGFoaSA9IGMgLSAoYyAtIGJkeCk7XG4gICAgYWxvID0gYmR4IC0gYWhpO1xuICAgIGMgPSBzcGxpdHRlciAqIGFkeTtcbiAgICBiaGkgPSBjIC0gKGMgLSBhZHkpO1xuICAgIGJsbyA9IGFkeSAtIGJoaTtcbiAgICB0MCA9IGFsbyAqIGJsbyAtICh0MSAtIGFoaSAqIGJoaSAtIGFsbyAqIGJoaSAtIGFoaSAqIGJsbyk7XG4gICAgX2kgPSBzMCAtIHQwO1xuICAgIGJ2aXJ0ID0gczAgLSBfaTtcbiAgICBhYlswXSA9IHMwIC0gKF9pICsgYnZpcnQpICsgKGJ2aXJ0IC0gdDApO1xuICAgIF9qID0gczEgKyBfaTtcbiAgICBidmlydCA9IF9qIC0gczE7XG4gICAgXzAgPSBzMSAtIChfaiAtIGJ2aXJ0KSArIChfaSAtIGJ2aXJ0KTtcbiAgICBfaSA9IF8wIC0gdDE7XG4gICAgYnZpcnQgPSBfMCAtIF9pO1xuICAgIGFiWzFdID0gXzAgLSAoX2kgKyBidmlydCkgKyAoYnZpcnQgLSB0MSk7XG4gICAgdTMgPSBfaiArIF9pO1xuICAgIGJ2aXJ0ID0gdTMgLSBfajtcbiAgICBhYlsyXSA9IF9qIC0gKHUzIC0gYnZpcnQpICsgKF9pIC0gYnZpcnQpO1xuICAgIGFiWzNdID0gdTM7XG5cbiAgICBmaW5sZW4gPSBzdW0oXG4gICAgICAgIHN1bShcbiAgICAgICAgICAgIHNjYWxlKDQsIGJjLCBhZHosIF84KSwgXzgsXG4gICAgICAgICAgICBzY2FsZSg0LCBjYSwgYmR6LCBfOGIpLCBfOGIsIF8xNiksIF8xNixcbiAgICAgICAgc2NhbGUoNCwgYWIsIGNkeiwgXzgpLCBfOCwgZmluKTtcblxuICAgIGxldCBkZXQgPSBlc3RpbWF0ZShmaW5sZW4sIGZpbik7XG4gICAgbGV0IGVycmJvdW5kID0gbzNkZXJyYm91bmRCICogcGVybWFuZW50O1xuICAgIGlmIChkZXQgPj0gZXJyYm91bmQgfHwgLWRldCA+PSBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIGJ2aXJ0ID0gYXggLSBhZHg7XG4gICAgYWR4dGFpbCA9IGF4IC0gKGFkeCArIGJ2aXJ0KSArIChidmlydCAtIGR4KTtcbiAgICBidmlydCA9IGJ4IC0gYmR4O1xuICAgIGJkeHRhaWwgPSBieCAtIChiZHggKyBidmlydCkgKyAoYnZpcnQgLSBkeCk7XG4gICAgYnZpcnQgPSBjeCAtIGNkeDtcbiAgICBjZHh0YWlsID0gY3ggLSAoY2R4ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHgpO1xuICAgIGJ2aXJ0ID0gYXkgLSBhZHk7XG4gICAgYWR5dGFpbCA9IGF5IC0gKGFkeSArIGJ2aXJ0KSArIChidmlydCAtIGR5KTtcbiAgICBidmlydCA9IGJ5IC0gYmR5O1xuICAgIGJkeXRhaWwgPSBieSAtIChiZHkgKyBidmlydCkgKyAoYnZpcnQgLSBkeSk7XG4gICAgYnZpcnQgPSBjeSAtIGNkeTtcbiAgICBjZHl0YWlsID0gY3kgLSAoY2R5ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHkpO1xuICAgIGJ2aXJ0ID0gYXogLSBhZHo7XG4gICAgYWR6dGFpbCA9IGF6IC0gKGFkeiArIGJ2aXJ0KSArIChidmlydCAtIGR6KTtcbiAgICBidmlydCA9IGJ6IC0gYmR6O1xuICAgIGJkenRhaWwgPSBieiAtIChiZHogKyBidmlydCkgKyAoYnZpcnQgLSBkeik7XG4gICAgYnZpcnQgPSBjeiAtIGNkejtcbiAgICBjZHp0YWlsID0gY3ogLSAoY2R6ICsgYnZpcnQpICsgKGJ2aXJ0IC0gZHopO1xuXG4gICAgaWYgKGFkeHRhaWwgPT09IDAgJiYgYmR4dGFpbCA9PT0gMCAmJiBjZHh0YWlsID09PSAwICYmXG4gICAgICAgIGFkeXRhaWwgPT09IDAgJiYgYmR5dGFpbCA9PT0gMCAmJiBjZHl0YWlsID09PSAwICYmXG4gICAgICAgIGFkenRhaWwgPT09IDAgJiYgYmR6dGFpbCA9PT0gMCAmJiBjZHp0YWlsID09PSAwKSB7XG4gICAgICAgIHJldHVybiBkZXQ7XG4gICAgfVxuXG4gICAgZXJyYm91bmQgPSBvM2RlcnJib3VuZEMgKiBwZXJtYW5lbnQgKyByZXN1bHRlcnJib3VuZCAqIE1hdGguYWJzKGRldCk7XG4gICAgZGV0ICs9XG4gICAgICAgIGFkeiAqIChiZHggKiBjZHl0YWlsICsgY2R5ICogYmR4dGFpbCAtIChiZHkgKiBjZHh0YWlsICsgY2R4ICogYmR5dGFpbCkpICsgYWR6dGFpbCAqIChiZHggKiBjZHkgLSBiZHkgKiBjZHgpICtcbiAgICAgICAgYmR6ICogKGNkeCAqIGFkeXRhaWwgKyBhZHkgKiBjZHh0YWlsIC0gKGNkeSAqIGFkeHRhaWwgKyBhZHggKiBjZHl0YWlsKSkgKyBiZHp0YWlsICogKGNkeCAqIGFkeSAtIGNkeSAqIGFkeCkgK1xuICAgICAgICBjZHogKiAoYWR4ICogYmR5dGFpbCArIGJkeSAqIGFkeHRhaWwgLSAoYWR5ICogYmR4dGFpbCArIGJkeCAqIGFkeXRhaWwpKSArIGNkenRhaWwgKiAoYWR4ICogYmR5IC0gYWR5ICogYmR4KTtcbiAgICBpZiAoZGV0ID49IGVycmJvdW5kIHx8IC1kZXQgPj0gZXJyYm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGRldDtcbiAgICB9XG5cbiAgICBjb25zdCBhdF9sZW4gPSB0YWlsaW5pdChhZHh0YWlsLCBhZHl0YWlsLCBiZHgsIGJkeSwgY2R4LCBjZHksIGF0X2IsIGF0X2MpO1xuICAgIGNvbnN0IGJ0X2xlbiA9IHRhaWxpbml0KGJkeHRhaWwsIGJkeXRhaWwsIGNkeCwgY2R5LCBhZHgsIGFkeSwgYnRfYywgYnRfYSk7XG4gICAgY29uc3QgY3RfbGVuID0gdGFpbGluaXQoY2R4dGFpbCwgY2R5dGFpbCwgYWR4LCBhZHksIGJkeCwgYmR5LCBjdF9hLCBjdF9iKTtcblxuICAgIGNvbnN0IGJjdGxlbiA9IHN1bShidF9sZW4sIGJ0X2MsIGN0X2xlbiwgY3RfYiwgYmN0KTtcbiAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShiY3RsZW4sIGJjdCwgYWR6LCBfMTYpLCBfMTYpO1xuXG4gICAgY29uc3QgY2F0bGVuID0gc3VtKGN0X2xlbiwgY3RfYSwgYXRfbGVuLCBhdF9jLCBjYXQpO1xuICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKGNhdGxlbiwgY2F0LCBiZHosIF8xNiksIF8xNik7XG5cbiAgICBjb25zdCBhYnRsZW4gPSBzdW0oYXRfbGVuLCBhdF9iLCBidF9sZW4sIGJ0X2EsIGFidCk7XG4gICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoYWJ0bGVuLCBhYnQsIGNkeiwgXzE2KSwgXzE2KTtcblxuICAgIGlmIChhZHp0YWlsICE9PSAwKSB7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKDQsIGJjLCBhZHp0YWlsLCBfMTIpLCBfMTIpO1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZShiY3RsZW4sIGJjdCwgYWR6dGFpbCwgXzE2KSwgXzE2KTtcbiAgICB9XG4gICAgaWYgKGJkenRhaWwgIT09IDApIHtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoNCwgY2EsIGJkenRhaWwsIF8xMiksIF8xMik7XG4gICAgICAgIGZpbmxlbiA9IGZpbmFkZChmaW5sZW4sIHNjYWxlKGNhdGxlbiwgY2F0LCBiZHp0YWlsLCBfMTYpLCBfMTYpO1xuICAgIH1cbiAgICBpZiAoY2R6dGFpbCAhPT0gMCkge1xuICAgICAgICBmaW5sZW4gPSBmaW5hZGQoZmlubGVuLCBzY2FsZSg0LCBhYiwgY2R6dGFpbCwgXzEyKSwgXzEyKTtcbiAgICAgICAgZmlubGVuID0gZmluYWRkKGZpbmxlbiwgc2NhbGUoYWJ0bGVuLCBhYnQsIGNkenRhaWwsIF8xNiksIF8xNik7XG4gICAgfVxuXG4gICAgaWYgKGFkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGJkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBhZHh0YWlsLCBiZHl0YWlsLCBjZHosIGNkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWFkeHRhaWwsIGNkeXRhaWwsIGJkeiwgYmR6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGNkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBiZHh0YWlsLCBjZHl0YWlsLCBhZHosIGFkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWJkeHRhaWwsIGFkeXRhaWwsIGNkeiwgY2R6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNkeHRhaWwgIT09IDApIHtcbiAgICAgICAgaWYgKGFkeXRhaWwgIT09IDApIHtcbiAgICAgICAgICAgIGZpbmxlbiA9IHRhaWxhZGQoZmlubGVuLCBjZHh0YWlsLCBhZHl0YWlsLCBiZHosIGJkenRhaWwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiZHl0YWlsICE9PSAwKSB7XG4gICAgICAgICAgICBmaW5sZW4gPSB0YWlsYWRkKGZpbmxlbiwgLWNkeHRhaWwsIGJkeXRhaWwsIGFkeiwgYWR6dGFpbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluW2ZpbmxlbiAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb3JpZW50M2QoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeikge1xuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgY29uc3QgYmR4Y2R5ID0gYmR4ICogY2R5O1xuICAgIGNvbnN0IGNkeGJkeSA9IGNkeCAqIGJkeTtcblxuICAgIGNvbnN0IGNkeGFkeSA9IGNkeCAqIGFkeTtcbiAgICBjb25zdCBhZHhjZHkgPSBhZHggKiBjZHk7XG5cbiAgICBjb25zdCBhZHhiZHkgPSBhZHggKiBiZHk7XG4gICAgY29uc3QgYmR4YWR5ID0gYmR4ICogYWR5O1xuXG4gICAgY29uc3QgZGV0ID1cbiAgICAgICAgYWR6ICogKGJkeGNkeSAtIGNkeGJkeSkgK1xuICAgICAgICBiZHogKiAoY2R4YWR5IC0gYWR4Y2R5KSArXG4gICAgICAgIGNkeiAqIChhZHhiZHkgLSBiZHhhZHkpO1xuXG4gICAgY29uc3QgcGVybWFuZW50ID1cbiAgICAgICAgKE1hdGguYWJzKGJkeGNkeSkgKyBNYXRoLmFicyhjZHhiZHkpKSAqIE1hdGguYWJzKGFkeikgK1xuICAgICAgICAoTWF0aC5hYnMoY2R4YWR5KSArIE1hdGguYWJzKGFkeGNkeSkpICogTWF0aC5hYnMoYmR6KSArXG4gICAgICAgIChNYXRoLmFicyhhZHhiZHkpICsgTWF0aC5hYnMoYmR4YWR5KSkgKiBNYXRoLmFicyhjZHopO1xuXG4gICAgY29uc3QgZXJyYm91bmQgPSBvM2RlcnJib3VuZEEgKiBwZXJtYW5lbnQ7XG4gICAgaWYgKGRldCA+IGVycmJvdW5kIHx8IC1kZXQgPiBlcnJib3VuZCkge1xuICAgICAgICByZXR1cm4gZGV0O1xuICAgIH1cblxuICAgIHJldHVybiBvcmllbnQzZGFkYXB0KGF4LCBheSwgYXosIGJ4LCBieSwgYnosIGN4LCBjeSwgY3osIGR4LCBkeSwgZHosIHBlcm1hbmVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmllbnQzZGZhc3QoYXgsIGF5LCBheiwgYngsIGJ5LCBieiwgY3gsIGN5LCBjeiwgZHgsIGR5LCBkeikge1xuICAgIGNvbnN0IGFkeCA9IGF4IC0gZHg7XG4gICAgY29uc3QgYmR4ID0gYnggLSBkeDtcbiAgICBjb25zdCBjZHggPSBjeCAtIGR4O1xuICAgIGNvbnN0IGFkeSA9IGF5IC0gZHk7XG4gICAgY29uc3QgYmR5ID0gYnkgLSBkeTtcbiAgICBjb25zdCBjZHkgPSBjeSAtIGR5O1xuICAgIGNvbnN0IGFkeiA9IGF6IC0gZHo7XG4gICAgY29uc3QgYmR6ID0gYnogLSBkejtcbiAgICBjb25zdCBjZHogPSBjeiAtIGR6O1xuXG4gICAgcmV0dXJuIGFkeCAqIChiZHkgKiBjZHogLSBiZHogKiBjZHkpICtcbiAgICAgICAgYmR4ICogKGNkeSAqIGFkeiAtIGNkeiAqIGFkeSkgK1xuICAgICAgICBjZHggKiAoYWR5ICogYmR6IC0gYWR6ICogYmR5KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/orient3d.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/esm/util.js": +/*!***********************************************************!*\ + !*** ../../../node_modules/robust-predicates/esm/util.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"epsilon\": () => (/* binding */ epsilon),\n/* harmony export */ \"estimate\": () => (/* binding */ estimate),\n/* harmony export */ \"negate\": () => (/* binding */ negate),\n/* harmony export */ \"resulterrbound\": () => (/* binding */ resulterrbound),\n/* harmony export */ \"scale\": () => (/* binding */ scale),\n/* harmony export */ \"splitter\": () => (/* binding */ splitter),\n/* harmony export */ \"sum\": () => (/* binding */ sum),\n/* harmony export */ \"sum_three\": () => (/* binding */ sum_three),\n/* harmony export */ \"vec\": () => (/* binding */ vec)\n/* harmony export */ });\nconst epsilon = 1.1102230246251565e-16;\nconst splitter = 134217729;\nconst resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nfunction sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nfunction sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nfunction scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nfunction negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nfunction estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nfunction vec(n) {\n return new Float64Array(n);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2VzbS91dGlsLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFPO0FBQ0E7QUFDQTs7QUFFUDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7O0FBRU87QUFDUDtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7O0FBRU87QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb2J1c3QtcHJlZGljYXRlcy9lc20vdXRpbC5qcz9iMTA2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlcHNpbG9uID0gMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNjtcbmV4cG9ydCBjb25zdCBzcGxpdHRlciA9IDEzNDIxNzcyOTtcbmV4cG9ydCBjb25zdCByZXN1bHRlcnJib3VuZCA9ICgzICsgOCAqIGVwc2lsb24pICogZXBzaWxvbjtcblxuLy8gZmFzdF9leHBhbnNpb25fc3VtX3plcm9lbGltIHJvdXRpbmUgZnJvbSBvcml0aW5hbCBjb2RlXG5leHBvcnQgZnVuY3Rpb24gc3VtKGVsZW4sIGUsIGZsZW4sIGYsIGgpIHtcbiAgICBsZXQgUSwgUW5ldywgaGgsIGJ2aXJ0O1xuICAgIGxldCBlbm93ID0gZVswXTtcbiAgICBsZXQgZm5vdyA9IGZbMF07XG4gICAgbGV0IGVpbmRleCA9IDA7XG4gICAgbGV0IGZpbmRleCA9IDA7XG4gICAgaWYgKChmbm93ID4gZW5vdykgPT09IChmbm93ID4gLWVub3cpKSB7XG4gICAgICAgIFEgPSBlbm93O1xuICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgUSA9IGZub3c7XG4gICAgICAgIGZub3cgPSBmWysrZmluZGV4XTtcbiAgICB9XG4gICAgbGV0IGhpbmRleCA9IDA7XG4gICAgaWYgKGVpbmRleCA8IGVsZW4gJiYgZmluZGV4IDwgZmxlbikge1xuICAgICAgICBpZiAoKGZub3cgPiBlbm93KSA9PT0gKGZub3cgPiAtZW5vdykpIHtcbiAgICAgICAgICAgIFFuZXcgPSBlbm93ICsgUTtcbiAgICAgICAgICAgIGhoID0gUSAtIChRbmV3IC0gZW5vdyk7XG4gICAgICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBRbmV3ID0gZm5vdyArIFE7XG4gICAgICAgICAgICBoaCA9IFEgLSAoUW5ldyAtIGZub3cpO1xuICAgICAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIFEgPSBRbmV3O1xuICAgICAgICBpZiAoaGggIT09IDApIHtcbiAgICAgICAgICAgIGhbaGluZGV4KytdID0gaGg7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGVpbmRleCA8IGVsZW4gJiYgZmluZGV4IDwgZmxlbikge1xuICAgICAgICAgICAgaWYgKChmbm93ID4gZW5vdykgPT09IChmbm93ID4gLWVub3cpKSB7XG4gICAgICAgICAgICAgICAgUW5ldyA9IFEgKyBlbm93O1xuICAgICAgICAgICAgICAgIGJ2aXJ0ID0gUW5ldyAtIFE7XG4gICAgICAgICAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZW5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgICAgICAgICBlbm93ID0gZVsrK2VpbmRleF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFFuZXcgPSBRICsgZm5vdztcbiAgICAgICAgICAgICAgICBidmlydCA9IFFuZXcgLSBRO1xuICAgICAgICAgICAgICAgIGhoID0gUSAtIChRbmV3IC0gYnZpcnQpICsgKGZub3cgLSBidmlydCk7XG4gICAgICAgICAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUSA9IFFuZXc7XG4gICAgICAgICAgICBpZiAoaGggIT09IDApIHtcbiAgICAgICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChlaW5kZXggPCBlbGVuKSB7XG4gICAgICAgIFFuZXcgPSBRICsgZW5vdztcbiAgICAgICAgYnZpcnQgPSBRbmV3IC0gUTtcbiAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZW5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgZW5vdyA9IGVbKytlaW5kZXhdO1xuICAgICAgICBRID0gUW5ldztcbiAgICAgICAgaWYgKGhoICE9PSAwKSB7XG4gICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlIChmaW5kZXggPCBmbGVuKSB7XG4gICAgICAgIFFuZXcgPSBRICsgZm5vdztcbiAgICAgICAgYnZpcnQgPSBRbmV3IC0gUTtcbiAgICAgICAgaGggPSBRIC0gKFFuZXcgLSBidmlydCkgKyAoZm5vdyAtIGJ2aXJ0KTtcbiAgICAgICAgZm5vdyA9IGZbKytmaW5kZXhdO1xuICAgICAgICBRID0gUW5ldztcbiAgICAgICAgaWYgKGhoICE9PSAwKSB7XG4gICAgICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChRICE9PSAwIHx8IGhpbmRleCA9PT0gMCkge1xuICAgICAgICBoW2hpbmRleCsrXSA9IFE7XG4gICAgfVxuICAgIHJldHVybiBoaW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1fdGhyZWUoYWxlbiwgYSwgYmxlbiwgYiwgY2xlbiwgYywgdG1wLCBvdXQpIHtcbiAgICByZXR1cm4gc3VtKHN1bShhbGVuLCBhLCBibGVuLCBiLCB0bXApLCB0bXAsIGNsZW4sIGMsIG91dCk7XG59XG5cbi8vIHNjYWxlX2V4cGFuc2lvbl96ZXJvZWxpbSByb3V0aW5lIGZyb20gb3JpdGluYWwgY29kZVxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlKGVsZW4sIGUsIGIsIGgpIHtcbiAgICBsZXQgUSwgc3VtLCBoaCwgcHJvZHVjdDEsIHByb2R1Y3QwO1xuICAgIGxldCBidmlydCwgYywgYWhpLCBhbG8sIGJoaSwgYmxvO1xuXG4gICAgYyA9IHNwbGl0dGVyICogYjtcbiAgICBiaGkgPSBjIC0gKGMgLSBiKTtcbiAgICBibG8gPSBiIC0gYmhpO1xuICAgIGxldCBlbm93ID0gZVswXTtcbiAgICBRID0gZW5vdyAqIGI7XG4gICAgYyA9IHNwbGl0dGVyICogZW5vdztcbiAgICBhaGkgPSBjIC0gKGMgLSBlbm93KTtcbiAgICBhbG8gPSBlbm93IC0gYWhpO1xuICAgIGhoID0gYWxvICogYmxvIC0gKFEgLSBhaGkgKiBiaGkgLSBhbG8gKiBiaGkgLSBhaGkgKiBibG8pO1xuICAgIGxldCBoaW5kZXggPSAwO1xuICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICBoW2hpbmRleCsrXSA9IGhoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW47IGkrKykge1xuICAgICAgICBlbm93ID0gZVtpXTtcbiAgICAgICAgcHJvZHVjdDEgPSBlbm93ICogYjtcbiAgICAgICAgYyA9IHNwbGl0dGVyICogZW5vdztcbiAgICAgICAgYWhpID0gYyAtIChjIC0gZW5vdyk7XG4gICAgICAgIGFsbyA9IGVub3cgLSBhaGk7XG4gICAgICAgIHByb2R1Y3QwID0gYWxvICogYmxvIC0gKHByb2R1Y3QxIC0gYWhpICogYmhpIC0gYWxvICogYmhpIC0gYWhpICogYmxvKTtcbiAgICAgICAgc3VtID0gUSArIHByb2R1Y3QwO1xuICAgICAgICBidmlydCA9IHN1bSAtIFE7XG4gICAgICAgIGhoID0gUSAtIChzdW0gLSBidmlydCkgKyAocHJvZHVjdDAgLSBidmlydCk7XG4gICAgICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICAgICAgaFtoaW5kZXgrK10gPSBoaDtcbiAgICAgICAgfVxuICAgICAgICBRID0gcHJvZHVjdDEgKyBzdW07XG4gICAgICAgIGhoID0gc3VtIC0gKFEgLSBwcm9kdWN0MSk7XG4gICAgICAgIGlmIChoaCAhPT0gMCkge1xuICAgICAgICAgICAgaFtoaW5kZXgrK10gPSBoaDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoUSAhPT0gMCB8fCBoaW5kZXggPT09IDApIHtcbiAgICAgICAgaFtoaW5kZXgrK10gPSBRO1xuICAgIH1cbiAgICByZXR1cm4gaGluZGV4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlKGVsZW4sIGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW47IGkrKykgZVtpXSA9IC1lW2ldO1xuICAgIHJldHVybiBlbGVuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGUoZWxlbiwgZSkge1xuICAgIGxldCBRID0gZVswXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGVsZW47IGkrKykgUSArPSBlW2ldO1xuICAgIHJldHVybiBRO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVjKG4pIHtcbiAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShuKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/esm/util.js\n"); + +/***/ }), + +/***/ "../../../node_modules/robust-predicates/index.js": +/*!********************************************************!*\ + !*** ../../../node_modules/robust-predicates/index.js ***! + \********************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"incircle\": () => (/* reexport safe */ _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__.incircle),\n/* harmony export */ \"incirclefast\": () => (/* reexport safe */ _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__.incirclefast),\n/* harmony export */ \"insphere\": () => (/* reexport safe */ _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__.insphere),\n/* harmony export */ \"inspherefast\": () => (/* reexport safe */ _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__.inspherefast),\n/* harmony export */ \"orient2d\": () => (/* reexport safe */ _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__.orient2d),\n/* harmony export */ \"orient2dfast\": () => (/* reexport safe */ _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__.orient2dfast),\n/* harmony export */ \"orient3d\": () => (/* reexport safe */ _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__.orient3d),\n/* harmony export */ \"orient3dfast\": () => (/* reexport safe */ _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__.orient3dfast)\n/* harmony export */ });\n/* harmony import */ var _esm_orient2d_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./esm/orient2d.js */ \"../../../node_modules/robust-predicates/esm/orient2d.js\");\n/* harmony import */ var _esm_orient3d_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./esm/orient3d.js */ \"../../../node_modules/robust-predicates/esm/orient3d.js\");\n/* harmony import */ var _esm_incircle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./esm/incircle.js */ \"../../../node_modules/robust-predicates/esm/incircle.js\");\n/* harmony import */ var _esm_insphere_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./esm/insphere.js */ \"../../../node_modules/robust-predicates/esm/insphere.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDeUQ7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvYnVzdC1wcmVkaWNhdGVzL2luZGV4LmpzP2FjNTAiXSwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQge29yaWVudDJkLCBvcmllbnQyZGZhc3R9IGZyb20gJy4vZXNtL29yaWVudDJkLmpzJztcbmV4cG9ydCB7b3JpZW50M2QsIG9yaWVudDNkZmFzdH0gZnJvbSAnLi9lc20vb3JpZW50M2QuanMnO1xuZXhwb3J0IHtpbmNpcmNsZSwgaW5jaXJjbGVmYXN0fSBmcm9tICcuL2VzbS9pbmNpcmNsZS5qcyc7XG5leHBvcnQge2luc3BoZXJlLCBpbnNwaGVyZWZhc3R9IGZyb20gJy4vZXNtL2luc3BoZXJlLmpzJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/robust-predicates/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Enum.js": +/*!************************************************!*\ + !*** ../../../node_modules/stylis/src/Enum.js ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CHARSET\": () => (/* binding */ CHARSET),\n/* harmony export */ \"COMMENT\": () => (/* binding */ COMMENT),\n/* harmony export */ \"COUNTER_STYLE\": () => (/* binding */ COUNTER_STYLE),\n/* harmony export */ \"DECLARATION\": () => (/* binding */ DECLARATION),\n/* harmony export */ \"DOCUMENT\": () => (/* binding */ DOCUMENT),\n/* harmony export */ \"FONT_FACE\": () => (/* binding */ FONT_FACE),\n/* harmony export */ \"FONT_FEATURE_VALUES\": () => (/* binding */ FONT_FEATURE_VALUES),\n/* harmony export */ \"IMPORT\": () => (/* binding */ IMPORT),\n/* harmony export */ \"KEYFRAMES\": () => (/* binding */ KEYFRAMES),\n/* harmony export */ \"LAYER\": () => (/* binding */ LAYER),\n/* harmony export */ \"MEDIA\": () => (/* binding */ MEDIA),\n/* harmony export */ \"MOZ\": () => (/* binding */ MOZ),\n/* harmony export */ \"MS\": () => (/* binding */ MS),\n/* harmony export */ \"NAMESPACE\": () => (/* binding */ NAMESPACE),\n/* harmony export */ \"PAGE\": () => (/* binding */ PAGE),\n/* harmony export */ \"RULESET\": () => (/* binding */ RULESET),\n/* harmony export */ \"SUPPORTS\": () => (/* binding */ SUPPORTS),\n/* harmony export */ \"VIEWPORT\": () => (/* binding */ VIEWPORT),\n/* harmony export */ \"WEBKIT\": () => (/* binding */ WEBKIT)\n/* harmony export */ });\nvar MS = '-ms-'\nvar MOZ = '-moz-'\nvar WEBKIT = '-webkit-'\n\nvar COMMENT = 'comm'\nvar RULESET = 'rule'\nvar DECLARATION = 'decl'\n\nvar PAGE = '@page'\nvar MEDIA = '@media'\nvar IMPORT = '@import'\nvar CHARSET = '@charset'\nvar VIEWPORT = '@viewport'\nvar SUPPORTS = '@supports'\nvar DOCUMENT = '@document'\nvar NAMESPACE = '@namespace'\nvar KEYFRAMES = '@keyframes'\nvar FONT_FACE = '@font-face'\nvar COUNTER_STYLE = '@counter-style'\nvar FONT_FEATURE_VALUES = '@font-feature-values'\nvar LAYER = '@layer'\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvRW51bS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU87QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9FbnVtLmpzPzQ1MzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Enum.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Parser.js": +/*!**************************************************!*\ + !*** ../../../node_modules/stylis/src/Parser.js ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"comment\": () => (/* binding */ comment),\n/* harmony export */ \"compile\": () => (/* binding */ compile),\n/* harmony export */ \"declaration\": () => (/* binding */ declaration),\n/* harmony export */ \"parse\": () => (/* binding */ parse),\n/* harmony export */ \"ruleset\": () => (/* binding */ ruleset)\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Enum.js */ \"../../../node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n/* harmony import */ var _Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tokenizer.js */ \"../../../node_modules/stylis/src/Tokenizer.js\");\n\n\n\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nfunction compile (value) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.dealloc)(parse('', null, null, null, [''], value = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.alloc)(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nfunction parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, length - 1) == 58) {\n\t\t\t\t\tif ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.indexof)(characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.whitespace)(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.escaping)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(comment((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.commenter)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)(), (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)()), root, parent, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - length))\n\t\t\t\t\t\t\t(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.charat)(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.append)(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.prev)() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = ((0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif ((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)() === 45)\n\t\t\t\t\t\t\tcharacters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.delimit)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.next)())\n\n\t\t\t\t\t\tatrule = (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.peek)(), offset = length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(type = characters += (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.identifier)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.caret)())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nfunction ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.sizeof)(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, post + 1, post = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.abs)(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.trim)(j > 0 ? rule[x] + ' ' + y : (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.replace)(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, offset === 0 ? _Enum_js__WEBPACK_IMPORTED_MODULE_2__.RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nfunction comment (value, root, parent, siblings) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.COMMENT, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.from)((0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.char)()), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nfunction declaration (value, root, parent, length, siblings) {\n\treturn (0,_Tokenizer_js__WEBPACK_IMPORTED_MODULE_0__.node)(value, root, parent, _Enum_js__WEBPACK_IMPORTED_MODULE_2__.DECLARATION, (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, 0, length), (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.substr)(value, length + 1, -1), length, siblings)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvUGFyc2VyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXVEO0FBQytDO0FBQ2tDOztBQUV4STtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQLFFBQVEsc0RBQU8sMkNBQTJDLG9EQUFLO0FBQy9EOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsbURBQUk7QUFDaEQ7QUFDQTtBQUNBLDJCQUEyQixtREFBTTtBQUNqQyxTQUFTLG9EQUFPLGVBQWUsb0RBQU8sQ0FBQyxzREFBTztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFPO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQix5REFBVTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsdURBQVEsQ0FBQyxvREFBSztBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZLG1EQUFJO0FBQ2hCO0FBQ0EsTUFBTSxvREFBTSxTQUFTLHdEQUFTLENBQUMsbURBQUksSUFBSSxvREFBSztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtREFBTTtBQUM1QixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxvREFBTztBQUNoRSwyQkFBMkIsbURBQU07QUFDakMsT0FBTyxtREFBTSw0Q0FBNEMseURBQXlELG9EQUFPLDBCQUEwQjtBQUNuSjtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLFVBQVU7QUFDVjtBQUNBLE1BQU0sb0RBQU07O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsbURBQU07QUFDdkM7QUFDQTtBQUNBLHFEQUFxRCxtREFBTTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1EQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELG1EQUFJO0FBQ3pEOztBQUVBLDBCQUEwQixpREFBSTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbURBQU07QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLG1EQUFJO0FBQ2QscUJBQXFCLHNEQUFPLENBQUMsbURBQUk7O0FBRWpDLGVBQWUsbURBQUksc0JBQXNCLG1EQUFNLHNCQUFzQix5REFBVSxDQUFDLG9EQUFLO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixtREFBTTtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBLFlBQVksbURBQU07O0FBRWxCLCtCQUErQixXQUFXO0FBQzFDLHNCQUFzQixtREFBTSx5QkFBeUIsZ0RBQUcsNkJBQTZCLFVBQVU7QUFDL0YsV0FBVyxpREFBSSw2QkFBNkIsb0RBQU87QUFDbkQ7O0FBRUEsUUFBUSxtREFBSSxxQ0FBcUMsNkNBQU87QUFDeEQ7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFJLHNCQUFzQiw2Q0FBTyxFQUFFLGlEQUFJLENBQUMsbURBQUksS0FBSyxtREFBTTtBQUMvRDs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFJLHNCQUFzQixpREFBVyxFQUFFLG1EQUFNLG9CQUFvQixtREFBTTtBQUMvRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QYXJzZXIuanM/ZGRmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2FicywgY2hhcmF0LCB0cmltLCBmcm9tLCBzaXplb2YsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIHJlcGxhY2UsIGluZGV4b2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7bm9kZSwgY2hhciwgcHJldiwgbmV4dCwgcGVlaywgY2FyZXQsIGFsbG9jLCBkZWFsbG9jLCBkZWxpbWl0LCB3aGl0ZXNwYWNlLCBlc2NhcGluZywgaWRlbnRpZmllciwgY29tbWVudGVyfSBmcm9tICcuL1Rva2VuaXplci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2MocGFyc2UoJycsIG51bGwsIG51bGwsIG51bGwsIFsnJ10sIHZhbHVlID0gYWxsb2ModmFsdWUpLCAwLCBbMF0sIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzZXRzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwc2V1ZG9cbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmdbXX0gZGVjbGFyYXRpb25zXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgcnVsZSwgcnVsZXMsIHJ1bGVzZXRzLCBwc2V1ZG8sIHBvaW50cywgZGVjbGFyYXRpb25zKSB7XG5cdHZhciBpbmRleCA9IDBcblx0dmFyIG9mZnNldCA9IDBcblx0dmFyIGxlbmd0aCA9IHBzZXVkb1xuXHR2YXIgYXRydWxlID0gMFxuXHR2YXIgcHJvcGVydHkgPSAwXG5cdHZhciBwcmV2aW91cyA9IDBcblx0dmFyIHZhcmlhYmxlID0gMVxuXHR2YXIgc2Nhbm5pbmcgPSAxXG5cdHZhciBhbXBlcnNhbmQgPSAxXG5cdHZhciBjaGFyYWN0ZXIgPSAwXG5cdHZhciB0eXBlID0gJydcblx0dmFyIHByb3BzID0gcnVsZXNcblx0dmFyIGNoaWxkcmVuID0gcnVsZXNldHNcblx0dmFyIHJlZmVyZW5jZSA9IHJ1bGVcblx0dmFyIGNoYXJhY3RlcnMgPSB0eXBlXG5cblx0d2hpbGUgKHNjYW5uaW5nKVxuXHRcdHN3aXRjaCAocHJldmlvdXMgPSBjaGFyYWN0ZXIsIGNoYXJhY3RlciA9IG5leHQoKSkge1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHByZXZpb3VzICE9IDEwOCAmJiBjaGFyYXQoY2hhcmFjdGVycywgbGVuZ3RoIC0gMSkgPT0gNTgpIHtcblx0XHRcdFx0XHRpZiAoaW5kZXhvZihjaGFyYWN0ZXJzICs9IHJlcGxhY2UoZGVsaW1pdChjaGFyYWN0ZXIpLCAnJicsICcmXFxmJyksICcmXFxmJykgIT0gLTEpXG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSAtMVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdC8vIFwiICcgW1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA5MTpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcdCBcXG4gXFxyIFxcc1xuXHRcdFx0Y2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IHdoaXRlc3BhY2UocHJldmlvdXMpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBlc2NhcGluZyhjYXJldCgpIC0gMSwgNylcblx0XHRcdFx0Y29udGludWVcblx0XHRcdC8vIC9cblx0XHRcdGNhc2UgNDc6XG5cdFx0XHRcdHN3aXRjaCAocGVlaygpKSB7XG5cdFx0XHRcdFx0Y2FzZSA0MjogY2FzZSA0Nzpcblx0XHRcdFx0XHRcdGFwcGVuZChjb21tZW50KGNvbW1lbnRlcihuZXh0KCksIGNhcmV0KCkpLCByb290LCBwYXJlbnQsIGRlY2xhcmF0aW9ucyksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gJy8nXG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIHtcblx0XHRcdGNhc2UgMTIzICogdmFyaWFibGU6XG5cdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IHN0cmxlbihjaGFyYWN0ZXJzKSAqIGFtcGVyc2FuZFxuXHRcdFx0Ly8gfSA7IFxcMFxuXHRcdFx0Y2FzZSAxMjUgKiB2YXJpYWJsZTogY2FzZSA1OTogY2FzZSAwOlxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0XHRcdC8vIFxcMCB9XG5cdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDEyNTogc2Nhbm5pbmcgPSAwXG5cdFx0XHRcdFx0Ly8gO1xuXHRcdFx0XHRcdGNhc2UgNTkgKyBvZmZzZXQ6IGlmIChhbXBlcnNhbmQgPT0gLTEpIGNoYXJhY3RlcnMgPSByZXBsYWNlKGNoYXJhY3RlcnMsIC9cXGYvZywgJycpXG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHkgPiAwICYmIChzdHJsZW4oY2hhcmFjdGVycykgLSBsZW5ndGgpKVxuXHRcdFx0XHRcdFx0XHRhcHBlbmQocHJvcGVydHkgPiAzMiA/IGRlY2xhcmF0aW9uKGNoYXJhY3RlcnMgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMSwgZGVjbGFyYXRpb25zKSA6IGRlY2xhcmF0aW9uKHJlcGxhY2UoY2hhcmFjdGVycywgJyAnLCAnJykgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMiwgZGVjbGFyYXRpb25zKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAIDtcblx0XHRcdFx0XHRjYXNlIDU5OiBjaGFyYWN0ZXJzICs9ICc7J1xuXHRcdFx0XHRcdC8vIHsgcnVsZS9hdC1ydWxlXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGFwcGVuZChyZWZlcmVuY2UgPSBydWxlc2V0KGNoYXJhY3RlcnMsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMgPSBbXSwgY2hpbGRyZW4gPSBbXSwgbGVuZ3RoLCBydWxlc2V0cyksIHJ1bGVzZXRzKVxuXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSAxMjMpXG5cdFx0XHRcdFx0XHRcdGlmIChvZmZzZXQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcm9vdCwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHByb3BzLCBydWxlc2V0cywgbGVuZ3RoLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChhdHJ1bGUgPT09IDk5ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCAzKSA9PT0gMTEwID8gMTAwIDogYXRydWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBkIGwgbSBzXG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwMDogY2FzZSAxMDg6IGNhc2UgMTA5OiBjYXNlIDExNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBydWxlICYmIGFwcGVuZChydWxlc2V0KHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgMCwgMCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcnVsZXMsIHByb3BzID0gW10sIGxlbmd0aCwgY2hpbGRyZW4pLCBjaGlsZHJlbiksIHJ1bGVzLCBjaGlsZHJlbiwgbGVuZ3RoLCBwb2ludHMsIHJ1bGUgPyBwcm9wcyA6IGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgWycnXSwgY2hpbGRyZW4sIDAsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5kZXggPSBvZmZzZXQgPSBwcm9wZXJ0eSA9IDAsIHZhcmlhYmxlID0gYW1wZXJzYW5kID0gMSwgdHlwZSA9IGNoYXJhY3RlcnMgPSAnJywgbGVuZ3RoID0gcHNldWRvXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyA6XG5cdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRsZW5ndGggPSAxICsgc3RybGVuKGNoYXJhY3RlcnMpLCBwcm9wZXJ0eSA9IHByZXZpb3VzXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZiAodmFyaWFibGUgPCAxKVxuXHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT0gMTIzKVxuXHRcdFx0XHRcdFx0LS12YXJpYWJsZVxuXHRcdFx0XHRcdGVsc2UgaWYgKGNoYXJhY3RlciA9PSAxMjUgJiYgdmFyaWFibGUrKyA9PSAwICYmIHByZXYoKSA9PSAxMjUpXG5cdFx0XHRcdFx0XHRjb250aW51ZVxuXG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVycyArPSBmcm9tKGNoYXJhY3RlciksIGNoYXJhY3RlciAqIHZhcmlhYmxlKSB7XG5cdFx0XHRcdFx0Ly8gJlxuXHRcdFx0XHRcdGNhc2UgMzg6XG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSBvZmZzZXQgPiAwID8gMSA6IChjaGFyYWN0ZXJzICs9ICdcXGYnLCAtMSlcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLFxuXHRcdFx0XHRcdGNhc2UgNDQ6XG5cdFx0XHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSAoc3RybGVuKGNoYXJhY3RlcnMpIC0gMSkgKiBhbXBlcnNhbmQsIGFtcGVyc2FuZCA9IDFcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQFxuXHRcdFx0XHRcdGNhc2UgNjQ6XG5cdFx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0XHRpZiAocGVlaygpID09PSA0NSlcblx0XHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KG5leHQoKSlcblxuXHRcdFx0XHRcdFx0YXRydWxlID0gcGVlaygpLCBvZmZzZXQgPSBsZW5ndGggPSBzdHJsZW4odHlwZSA9IGNoYXJhY3RlcnMgKz0gaWRlbnRpZmllcihjYXJldCgpKSksIGNoYXJhY3RlcisrXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRjYXNlIDQ1OlxuXHRcdFx0XHRcdFx0aWYgKHByZXZpb3VzID09PSA0NSAmJiBzdHJsZW4oY2hhcmFjdGVycykgPT0gMilcblx0XHRcdFx0XHRcdFx0dmFyaWFibGUgPSAwXG5cdFx0XHRcdH1cblx0XHR9XG5cblx0cmV0dXJuIHJ1bGVzZXRzXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzZXQgKHZhbHVlLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoLCBzaWJsaW5ncykge1xuXHR2YXIgcG9zdCA9IG9mZnNldCAtIDFcblx0dmFyIHJ1bGUgPSBvZmZzZXQgPT09IDAgPyBydWxlcyA6IFsnJ11cblx0dmFyIHNpemUgPSBzaXplb2YocnVsZSlcblxuXHRmb3IgKHZhciBpID0gMCwgaiA9IDAsIGsgPSAwOyBpIDwgaW5kZXg7ICsraSlcblx0XHRmb3IgKHZhciB4ID0gMCwgeSA9IHN1YnN0cih2YWx1ZSwgcG9zdCArIDEsIHBvc3QgPSBhYnMoaiA9IHBvaW50c1tpXSkpLCB6ID0gdmFsdWU7IHggPCBzaXplOyArK3gpXG5cdFx0XHRpZiAoeiA9IHRyaW0oaiA+IDAgPyBydWxlW3hdICsgJyAnICsgeSA6IHJlcGxhY2UoeSwgLyZcXGYvZywgcnVsZVt4XSkpKVxuXHRcdFx0XHRwcm9wc1trKytdID0gelxuXG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIG9mZnNldCA9PT0gMCA/IFJVTEVTRVQgOiB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCwgc2libGluZ3MpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7b2JqZWN0W119IHNpYmxpbmdzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBzaWJsaW5ncykge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBDT01NRU5ULCBmcm9tKGNoYXIoKSksIHN1YnN0cih2YWx1ZSwgMiwgLTIpLCAwLCBzaWJsaW5ncylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtvYmplY3RbXX0gc2libGluZ3NcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIERFQ0xBUkFUSU9OLCBzdWJzdHIodmFsdWUsIDAsIGxlbmd0aCksIHN1YnN0cih2YWx1ZSwgbGVuZ3RoICsgMSwgLTEpLCBsZW5ndGgsIHNpYmxpbmdzKVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Parser.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Serializer.js": +/*!******************************************************!*\ + !*** ../../../node_modules/stylis/src/Serializer.js ***! + \******************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"serialize\": () => (/* binding */ serialize),\n/* harmony export */ \"stringify\": () => (/* binding */ stringify)\n/* harmony export */ });\n/* harmony import */ var _Enum_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Enum.js */ \"../../../node_modules/stylis/src/Enum.js\");\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n\n\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.LAYER: if (element.children.length) break\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.IMPORT: case _Enum_js__WEBPACK_IMPORTED_MODULE_0__.DECLARATION: return element.return = element.return || element.value\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.COMMENT: return ''\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase _Enum_js__WEBPACK_IMPORTED_MODULE_0__.RULESET: if (!(0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_1__.strlen)(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWlGO0FBQzlDOztBQUVuQztBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDs7QUFFQSxpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBLE9BQU8sMkNBQUs7QUFDWixPQUFPLDRDQUFNLE9BQU8saURBQVc7QUFDL0IsT0FBTyw2Q0FBTztBQUNkLE9BQU8sK0NBQVMsNENBQTRDLDhDQUE4QztBQUMxRyxPQUFPLDZDQUFPLE9BQU8sbURBQU07QUFDM0I7O0FBRUEsUUFBUSxtREFBTSx3RkFBd0YsaUJBQWlCO0FBQ3ZIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1NlcmlhbGl6ZXIuanM/OGFiMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUgKGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHR2YXIgb3V0cHV0ID0gJydcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuXHRcdG91dHB1dCArPSBjYWxsYmFjayhjaGlsZHJlbltpXSwgaSwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdGNhc2UgTEFZRVI6IGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkgYnJlYWtcblx0XHRjYXNlIElNUE9SVDogY2FzZSBERUNMQVJBVElPTjogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC5yZXR1cm4gfHwgZWxlbWVudC52YWx1ZVxuXHRcdGNhc2UgQ09NTUVOVDogcmV0dXJuICcnXG5cdFx0Y2FzZSBLRVlGUkFNRVM6IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spICsgJ30nXG5cdFx0Y2FzZSBSVUxFU0VUOiBpZiAoIXN0cmxlbihlbGVtZW50LnZhbHVlID0gZWxlbWVudC5wcm9wcy5qb2luKCcsJykpKSByZXR1cm4gJydcblx0fVxuXG5cdHJldHVybiBzdHJsZW4oY2hpbGRyZW4gPSBzZXJpYWxpemUoZWxlbWVudC5jaGlsZHJlbiwgY2FsbGJhY2spKSA/IGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIGNoaWxkcmVuICsgJ30nIDogJydcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Serializer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Tokenizer.js": +/*!*****************************************************!*\ + !*** ../../../node_modules/stylis/src/Tokenizer.js ***! + \*****************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"alloc\": () => (/* binding */ alloc),\n/* harmony export */ \"caret\": () => (/* binding */ caret),\n/* harmony export */ \"char\": () => (/* binding */ char),\n/* harmony export */ \"character\": () => (/* binding */ character),\n/* harmony export */ \"characters\": () => (/* binding */ characters),\n/* harmony export */ \"column\": () => (/* binding */ column),\n/* harmony export */ \"commenter\": () => (/* binding */ commenter),\n/* harmony export */ \"copy\": () => (/* binding */ copy),\n/* harmony export */ \"dealloc\": () => (/* binding */ dealloc),\n/* harmony export */ \"delimit\": () => (/* binding */ delimit),\n/* harmony export */ \"delimiter\": () => (/* binding */ delimiter),\n/* harmony export */ \"escaping\": () => (/* binding */ escaping),\n/* harmony export */ \"identifier\": () => (/* binding */ identifier),\n/* harmony export */ \"length\": () => (/* binding */ length),\n/* harmony export */ \"lift\": () => (/* binding */ lift),\n/* harmony export */ \"line\": () => (/* binding */ line),\n/* harmony export */ \"next\": () => (/* binding */ next),\n/* harmony export */ \"node\": () => (/* binding */ node),\n/* harmony export */ \"peek\": () => (/* binding */ peek),\n/* harmony export */ \"position\": () => (/* binding */ position),\n/* harmony export */ \"prev\": () => (/* binding */ prev),\n/* harmony export */ \"slice\": () => (/* binding */ slice),\n/* harmony export */ \"token\": () => (/* binding */ token),\n/* harmony export */ \"tokenize\": () => (/* binding */ tokenize),\n/* harmony export */ \"tokenizer\": () => (/* binding */ tokenizer),\n/* harmony export */ \"whitespace\": () => (/* binding */ whitespace)\n/* harmony export */ });\n/* harmony import */ var _Utility_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Utility.js */ \"../../../node_modules/stylis/src/Utility.js\");\n\n\nvar line = 1\nvar column = 1\nvar length = 0\nvar position = 0\nvar character = 0\nvar characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nfunction node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nfunction copy (root, props) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.assign)(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nfunction lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\t;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nfunction char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction prev () {\n\tcharacter = position > 0 ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction next () {\n\tcharacter = position < length ? (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction peek () {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.charat)(characters, position)\n}\n\n/**\n * @return {number}\n */\nfunction caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction slice (begin, end) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.substr)(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nfunction alloc (value) {\n\treturn line = column = 1, length = (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.strlen)(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nfunction dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction delimit (type) {\n\treturn (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.trim)(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nfunction tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nfunction tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: ;(0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.append)((0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nfunction escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nfunction commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + (0,_Utility_js__WEBPACK_IMPORTED_MODULE_0__.from)(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nfunction identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErRTs7QUFFeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVQO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsZUFBZTtBQUMxQixXQUFXLGVBQWU7QUFDMUIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsbUJBQW1CO0FBQzlCLFdBQVcsbUJBQW1CO0FBQzlCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQLFNBQVM7QUFDVDs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFNLGdFQUFnRSxxQkFBcUI7QUFDbkc7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDTztBQUNQO0FBQ0EsMEJBQTBCLGlCQUFpQjs7QUFFM0MsQ0FBQyxvREFBTTtBQUNQOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsWUFBWTtBQUNaO0FBQ087QUFDUCw0QkFBNEIsbURBQU07O0FBRWxDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1AsaUNBQWlDLG1EQUFNOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDTztBQUNQLFFBQVEsbURBQU07QUFDZDs7QUFFQTtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxRQUFRLG1EQUFNO0FBQ2Q7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUCxvQ0FBb0MsbURBQU07QUFDMUM7O0FBRUE7QUFDQSxXQUFXLEtBQUs7QUFDaEIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1AsUUFBUSxpREFBSTtBQUNaOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQSxXQUFXLG1EQUFNO0FBQ2pCO0FBQ0EsV0FBVyxvREFBTTtBQUNqQjtBQUNBLFlBQVksb0RBQU0sQ0FBQyxpREFBSTtBQUN2Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0RBQWtELGlEQUFJO0FBQ3REOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1Rva2VuaXplci5qcz9kMDBjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZnJvbSwgdHJpbSwgY2hhcmF0LCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCBhc3NpZ259IGZyb20gJy4vVXRpbGl0eS5qcydcblxuZXhwb3J0IHZhciBsaW5lID0gMVxuZXhwb3J0IHZhciBjb2x1bW4gPSAxXG5leHBvcnQgdmFyIGxlbmd0aCA9IDBcbmV4cG9ydCB2YXIgcG9zaXRpb24gPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlciA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVycyA9ICcnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcGFyZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gcHJvcHNcbiAqIEBwYXJhbSB7b2JqZWN0W10gfCBzdHJpbmd9IGNoaWxkcmVuXG4gKiBAcGFyYW0ge29iamVjdFtdfSBzaWJsaW5nc1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgsIHNpYmxpbmdzKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJywgc2libGluZ3M6IHNpYmxpbmdzfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDAsIHJvb3Quc2libGluZ3MpLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdCAocm9vdCkge1xuXHR3aGlsZSAocm9vdC5yb290KVxuXHRcdHJvb3QgPSBjb3B5KHJvb3Qucm9vdCwge2NoaWxkcmVuOiBbcm9vdF19KVxuXG5cdGFwcGVuZChyb290LCByb290LnNpYmxpbmdzKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXIgKCkge1xuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldiAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uID4gMCA/IGNoYXJhdChjaGFyYWN0ZXJzLCAtLXBvc2l0aW9uKSA6IDBcblxuXHRpZiAoY29sdW1uLS0sIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZS0tXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHQgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA8IGxlbmd0aCA/IGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbisrKSA6IDBcblxuXHRpZiAoY29sdW1uKyssIGNoYXJhY3RlciA9PT0gMTApXG5cdFx0Y29sdW1uID0gMSwgbGluZSsrXG5cblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlZWsgKCkge1xuXHRyZXR1cm4gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKVxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhcmV0ICgpIHtcblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGljZSAoYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gc3Vic3RyKGNoYXJhY3RlcnMsIGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuICh0eXBlKSB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdC8vIFxcMCBcXHQgXFxuIFxcciBcXHMgd2hpdGVzcGFjZSB0b2tlblxuXHRcdGNhc2UgMDogY2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0cmV0dXJuIDVcblx0XHQvLyAhICsgLCAvID4gQCB+IGlzb2xhdGUgdG9rZW5cblx0XHRjYXNlIDMzOiBjYXNlIDQzOiBjYXNlIDQ0OiBjYXNlIDQ3OiBjYXNlIDYyOiBjYXNlIDY0OiBjYXNlIDEyNjpcblx0XHQvLyA7IHsgfSBicmVha3BvaW50IHRva2VuXG5cdFx0Y2FzZSA1OTogY2FzZSAxMjM6IGNhc2UgMTI1OlxuXHRcdFx0cmV0dXJuIDRcblx0XHQvLyA6IGFjY29tcGFuaWVkIHRva2VuXG5cdFx0Y2FzZSA1ODpcblx0XHRcdHJldHVybiAzXG5cdFx0Ly8gXCIgJyAoIFsgb3BlbmluZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA0MDogY2FzZSA5MTpcblx0XHRcdHJldHVybiAyXG5cdFx0Ly8gKSBdIGNsb3NpbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgNDE6IGNhc2UgOTM6XG5cdFx0XHRyZXR1cm4gMVxuXHR9XG5cblx0cmV0dXJuIDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBsaW5lID0gY29sdW1uID0gMSwgbGVuZ3RoID0gc3RybGVuKGNoYXJhY3RlcnMgPSB2YWx1ZSksIHBvc2l0aW9uID0gMCwgW11cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlYWxsb2MgKHZhbHVlKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJzID0gJycsIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXQgKHR5cGUpIHtcblx0cmV0dXJuIHRyaW0oc2xpY2UocG9zaXRpb24gLSAxLCBkZWxpbWl0ZXIodHlwZSA9PT0gOTEgPyB0eXBlICsgMiA6IHR5cGUgPT09IDQwID8gdHlwZSArIDEgOiB0eXBlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplICh2YWx1ZSkge1xuXHRyZXR1cm4gZGVhbGxvYyh0b2tlbml6ZXIoYWxsb2ModmFsdWUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2hpdGVzcGFjZSAodHlwZSkge1xuXHR3aGlsZSAoY2hhcmFjdGVyID0gcGVlaygpKVxuXHRcdGlmIChjaGFyYWN0ZXIgPCAzMylcblx0XHRcdG5leHQoKVxuXHRcdGVsc2Vcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHRva2VuKHR5cGUpID4gMiB8fCB0b2tlbihjaGFyYWN0ZXIpID4gMyA/ICcnIDogJyAnXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemVyIChjaGlsZHJlbikge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAodG9rZW4oY2hhcmFjdGVyKSkge1xuXHRcdFx0Y2FzZSAwOiBhcHBlbmQoaWRlbnRpZmllcihwb3NpdGlvbiAtIDEpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGNhc2UgMjogYXBwZW5kKGRlbGltaXQoY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRkZWZhdWx0OiBhcHBlbmQoZnJvbShjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHR9XG5cblx0cmV0dXJuIGNoaWxkcmVuXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gY291bnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwaW5nIChpbmRleCwgY291bnQpIHtcblx0d2hpbGUgKC0tY291bnQgJiYgbmV4dCgpKVxuXHRcdC8vIG5vdCAwLTkgQS1GIGEtZlxuXHRcdGlmIChjaGFyYWN0ZXIgPCA0OCB8fCBjaGFyYWN0ZXIgPiAxMDIgfHwgKGNoYXJhY3RlciA+IDU3ICYmIGNoYXJhY3RlciA8IDY1KSB8fCAoY2hhcmFjdGVyID4gNzAgJiYgY2hhcmFjdGVyIDwgOTcpKVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIGNhcmV0KCkgKyAoY291bnQgPCA2ICYmIHBlZWsoKSA9PSAzMiAmJiBuZXh0KCkgPT0gMzIpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIgKHR5cGUpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKGNoYXJhY3Rlcikge1xuXHRcdFx0Ly8gXSApIFwiICdcblx0XHRcdGNhc2UgdHlwZTpcblx0XHRcdFx0cmV0dXJuIHBvc2l0aW9uXG5cdFx0XHQvLyBcIiAnXG5cdFx0XHRjYXNlIDM0OiBjYXNlIDM5OlxuXHRcdFx0XHRpZiAodHlwZSAhPT0gMzQgJiYgdHlwZSAhPT0gMzkpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmICh0eXBlID09PSA0MSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIodHlwZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcXG5cdFx0XHRjYXNlIDkyOlxuXHRcdFx0XHRuZXh0KClcblx0XHRcdFx0YnJlYWtcblx0XHR9XG5cblx0cmV0dXJuIHBvc2l0aW9uXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudGVyICh0eXBlLCBpbmRleCkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdC8vIC8vXG5cdFx0aWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQ3ICsgMTApXG5cdFx0XHRicmVha1xuXHRcdC8vIC8qXG5cdFx0ZWxzZSBpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDIgKyA0MiAmJiBwZWVrKCkgPT09IDQ3KVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gJy8qJyArIHNsaWNlKGluZGV4LCBwb3NpdGlvbiAtIDEpICsgJyonICsgZnJvbSh0eXBlID09PSA0NyA/IHR5cGUgOiBuZXh0KCkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyIChpbmRleCkge1xuXHR3aGlsZSAoIXRva2VuKHBlZWsoKSkpXG5cdFx0bmV4dCgpXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBwb3NpdGlvbilcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Tokenizer.js\n"); + +/***/ }), + +/***/ "../../../node_modules/stylis/src/Utility.js": +/*!***************************************************!*\ + !*** ../../../node_modules/stylis/src/Utility.js ***! + \***************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"abs\": () => (/* binding */ abs),\n/* harmony export */ \"append\": () => (/* binding */ append),\n/* harmony export */ \"assign\": () => (/* binding */ assign),\n/* harmony export */ \"charat\": () => (/* binding */ charat),\n/* harmony export */ \"combine\": () => (/* binding */ combine),\n/* harmony export */ \"filter\": () => (/* binding */ filter),\n/* harmony export */ \"from\": () => (/* binding */ from),\n/* harmony export */ \"hash\": () => (/* binding */ hash),\n/* harmony export */ \"indexof\": () => (/* binding */ indexof),\n/* harmony export */ \"match\": () => (/* binding */ match),\n/* harmony export */ \"replace\": () => (/* binding */ replace),\n/* harmony export */ \"sizeof\": () => (/* binding */ sizeof),\n/* harmony export */ \"strlen\": () => (/* binding */ strlen),\n/* harmony export */ \"substr\": () => (/* binding */ substr),\n/* harmony export */ \"trim\": () => (/* binding */ trim)\n/* harmony export */ });\n/**\n * @param {number}\n * @return {number}\n */\nvar abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nvar from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nvar assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nfunction hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nfunction trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nfunction match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nfunction replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nfunction indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nfunction charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nfunction strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nfunction sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nfunction append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nfunction combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nfunction filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVc7QUFDWCxZQUFZO0FBQ1o7QUFDTzs7QUFFUDtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsaUJBQWlCO0FBQzVCLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFdBQVcsVUFBVTtBQUNyQixXQUFXLFVBQVU7QUFDckIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQLHdDQUF3QywrQkFBK0I7QUFDdkUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVXRpbGl0eS5qcz84MTc3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCB2YXIgYWJzID0gTWF0aC5hYnNcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IHZhciBmcm9tID0gU3RyaW5nLmZyb21DaGFyQ29kZVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fVxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgdmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ25cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc2ggKHZhbHVlLCBsZW5ndGgpIHtcblx0cmV0dXJuIGNoYXJhdCh2YWx1ZSwgMCkgXiA0NSA/ICgoKCgoKChsZW5ndGggPDwgMikgXiBjaGFyYXQodmFsdWUsIDApKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMSkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAyKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDMpIDogMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbSAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZz99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaCAodmFsdWUsIHBhdHRlcm4pIHtcblx0cmV0dXJuICh2YWx1ZSA9IHBhdHRlcm4uZXhlYyh2YWx1ZSkpID8gdmFsdWVbMF0gOiB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHsoc3RyaW5nfFJlZ0V4cCl9IHBhdHRlcm5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZSAodmFsdWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50KSB7XG5cdHJldHVybiB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhvZiAodmFsdWUsIHNlYXJjaCkge1xuXHRyZXR1cm4gdmFsdWUuaW5kZXhPZihzZWFyY2gpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYXJhdCAodmFsdWUsIGluZGV4KSB7XG5cdHJldHVybiB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KSB8IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RyICh2YWx1ZSwgYmVnaW4sIGVuZCkge1xuXHRyZXR1cm4gdmFsdWUuc2xpY2UoYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmxlbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaXplb2YgKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWVcbiAqIEBwYXJhbSB7YW55W119IGFycmF5XG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQgKHZhbHVlLCBhcnJheSkge1xuXHRyZXR1cm4gYXJyYXkucHVzaCh2YWx1ZSksIHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJyYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lIChhcnJheSwgY2FsbGJhY2spIHtcblx0cmV0dXJuIGFycmF5Lm1hcChjYWxsYmFjaykuam9pbignJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyIChhcnJheSwgcGF0dGVybikge1xuXHRyZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gIW1hdGNoKHZhbHVlLCBwYXR0ZXJuKSB9KVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/stylis/src/Utility.js\n"); + +/***/ }), + +/***/ "../../../node_modules/unist-util-stringify-position/lib/index.js": +/*!************************************************************************!*\ + !*** ../../../node_modules/unist-util-stringify-position/lib/index.js ***! + \************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"stringifyPosition\": () => (/* binding */ stringifyPosition)\n/* harmony export */ });\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nfunction stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uL2xpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxhQUFhLHNCQUFzQjtBQUNuQyxhQUFhLHVCQUF1QjtBQUNwQyxhQUFhLDBCQUEwQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsaUNBQWlDO0FBQy9DO0FBQ0E7QUFDQSxjQUFjLDhCQUE4QjtBQUM1QyxjQUFjLDhCQUE4QjtBQUM1QztBQUNBO0FBQ0EsY0FBYywyQkFBMkI7QUFDekMsY0FBYywyQkFBMkI7QUFDekMsY0FBYywyQkFBMkI7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtGQUFrRjtBQUM3RjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNDQUFzQztBQUNqRCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDRDQUE0QztBQUN2RCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDJCQUEyQjtBQUN0QyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uL2xpYi9pbmRleC5qcz81YzA3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb3NpdGlvbn0gUG9zaXRpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIE5vZGVMaWtlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICogQHByb3BlcnR5IHtQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbcG9zaXRpb25dXG4gKlxuICogQHR5cGVkZWYgUG9zaXRpb25MaWtlXG4gKiBAcHJvcGVydHkge1BvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFtzdGFydF1cbiAqIEBwcm9wZXJ0eSB7UG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZF1cbiAqXG4gKiBAdHlwZWRlZiBQb2ludExpa2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2xpbmVdXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtjb2x1bW5dXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtvZmZzZXRdXG4gKi9cblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIHBvc2l0aW9uYWwgaW5mbyBvZiBhIHBvaW50LCBwb3NpdGlvbiAoc3RhcnQgYW5kIGVuZCBwb2ludHMpLFxuICogb3Igbm9kZS5cbiAqXG4gKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9zaXRpb25MaWtlIHwgUG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbdmFsdWVdXG4gKiAgIE5vZGUsIHBvc2l0aW9uLCBvciBwb2ludC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFByZXR0eSBwcmludGVkIHBvc2l0aW9uYWwgaW5mbyBvZiBhIG5vZGUgKGBzdHJpbmdgKS5cbiAqXG4gKiAgIEluIHRoZSBmb3JtYXQgb2YgYSByYW5nZSBgbHM6Y3MtbGU6Y2VgICh3aGVuIGdpdmVuIGBub2RlYCBvciBgcG9zaXRpb25gKVxuICogICBvciBhIHBvaW50IGBsOmNgICh3aGVuIGdpdmVuIGBwb2ludGApLCB3aGVyZSBgbGAgc3RhbmRzIGZvciBsaW5lLCBgY2AgZm9yXG4gKiAgIGNvbHVtbiwgYHNgIGZvciBgc3RhcnRgLCBhbmQgYGVgIGZvciBlbmQuXG4gKiAgIEFuIGVtcHR5IHN0cmluZyAoYCcnYCkgaXMgcmV0dXJuZWQgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIG5laXRoZXIgYG5vZGVgLFxuICogICBgcG9zaXRpb25gLCBub3IgYHBvaW50YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVBvc2l0aW9uKHZhbHVlKSB7XG4gIC8vIE5vdGhpbmcuXG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gTm9kZS5cbiAgaWYgKCdwb3NpdGlvbicgaW4gdmFsdWUgfHwgJ3R5cGUnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmICgnc3RhcnQnIGluIHZhbHVlIHx8ICdlbmQnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlKVxuICB9XG5cbiAgLy8gUG9pbnQuXG4gIGlmICgnbGluZScgaW4gdmFsdWUgfHwgJ2NvbHVtbicgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gcG9pbnQodmFsdWUpXG4gIH1cblxuICAvLyA/XG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb2ludFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcG9pbnQocG9pbnQpIHtcbiAgcmV0dXJuIGluZGV4KHBvaW50ICYmIHBvaW50LmxpbmUpICsgJzonICsgaW5kZXgocG9pbnQgJiYgcG9pbnQuY29sdW1uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9zaXRpb24gfCBQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb3NcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvc2l0aW9uKHBvcykge1xuICByZXR1cm4gcG9pbnQocG9zICYmIHBvcy5zdGFydCkgKyAnLScgKyBwb2ludChwb3MgJiYgcG9zLmVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBpbmRleCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogMVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/unist-util-stringify-position/lib/index.js\n"); + +/***/ }), + +/***/ "../../../node_modules/uvu/assert/index.mjs": +/*!**************************************************!*\ + !*** ../../../node_modules/uvu/assert/index.mjs ***! + \**************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Assertion\": () => (/* binding */ Assertion),\n/* harmony export */ \"equal\": () => (/* binding */ equal),\n/* harmony export */ \"fixture\": () => (/* binding */ fixture),\n/* harmony export */ \"instance\": () => (/* binding */ instance),\n/* harmony export */ \"is\": () => (/* binding */ is),\n/* harmony export */ \"match\": () => (/* binding */ match),\n/* harmony export */ \"not\": () => (/* binding */ not),\n/* harmony export */ \"ok\": () => (/* binding */ ok),\n/* harmony export */ \"snapshot\": () => (/* binding */ snapshot),\n/* harmony export */ \"throws\": () => (/* binding */ throws),\n/* harmony export */ \"type\": () => (/* binding */ type),\n/* harmony export */ \"unreachable\": () => (/* binding */ unreachable)\n/* harmony export */ });\n/* harmony import */ var dequal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dequal */ \"../../../node_modules/dequal/dist/index.mjs\");\n/* harmony import */ var uvu_diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uvu/diff */ \"../../../node_modules/uvu/diff/index.mjs\");\n\n\n\nfunction dedent(str) {\n\tstr = str.replace(/\\r?\\n/g, '\\n');\n let arr = str.match(/^[ \\t]*(?=\\S)/gm);\n let i = 0, min = 1/0, len = (arr||[]).length;\n for (; i < len; i++) min = Math.min(min, arr[i].length);\n return len && min ? str.replace(new RegExp(`^[ \\\\t]{${min}}`, 'gm'), '') : str;\n}\n\nclass Assertion extends Error {\n\tconstructor(opts={}) {\n\t\tsuper(opts.message);\n\t\tthis.name = 'Assertion';\n\t\tthis.code = 'ERR_ASSERTION';\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t\tthis.details = opts.details || false;\n\t\tthis.generated = !!opts.generated;\n\t\tthis.operator = opts.operator;\n\t\tthis.expects = opts.expects;\n\t\tthis.actual = opts.actual;\n\t}\n}\n\nfunction assert(bool, actual, expects, operator, detailer, backup, msg) {\n\tif (bool) return;\n\tlet message = msg || backup;\n\tif (msg instanceof Error) throw msg;\n\tlet details = detailer && detailer(actual, expects);\n\tthrow new Assertion({ actual, expects, operator, message, details, generated: !msg });\n}\n\nfunction ok(val, msg) {\n\tassert(!!val, false, true, 'ok', false, 'Expected value to be truthy', msg);\n}\n\nfunction is(val, exp, msg) {\n\tassert(val === exp, val, exp, 'is', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be strictly equal:', msg);\n}\n\nfunction equal(val, exp, msg) {\n\tassert((0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'equal', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.compare, 'Expected values to be deeply equal:', msg);\n}\n\nfunction unreachable(msg) {\n\tassert(false, true, false, 'unreachable', false, 'Expected not to be reached!', msg);\n}\n\nfunction type(val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp === exp, tmp, exp, 'type', false, `Expected \"${tmp}\" to be \"${exp}\"`, msg);\n}\n\nfunction instance(val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(val instanceof exp, val, exp, 'instance', false, `Expected value to be an instance of ${name}`, msg);\n}\n\nfunction match(val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(val.includes(exp), val, exp, 'match', false, `Expected value to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(exp.test(val), val, exp, 'match', false, `Expected value to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nfunction snapshot(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'snapshot', uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines, 'Expected value to match snapshot:', msg);\n}\n\nconst lineNums = (x, y) => (0,uvu_diff__WEBPACK_IMPORTED_MODULE_1__.lines)(x, y, 1);\nfunction fixture(val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val === exp, val, exp, 'fixture', lineNums, 'Expected value to match fixture:', msg);\n}\n\nfunction throws(blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t\tassert(false, false, true, 'throws', false, 'Expected function to throw', msg);\n\t} catch (err) {\n\t\tif (err instanceof Assertion) throw err;\n\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(exp(err), false, true, 'throws', false, 'Expected function to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(exp.test(err.message), false, true, 'throws', false, `Expected function to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t}\n\t}\n}\n\n// ---\n\nfunction not(val, msg) {\n\tassert(!val, true, false, 'not', false, 'Expected value to be falsey', msg);\n}\n\nnot.ok = not;\n\nis.not = function (val, exp, msg) {\n\tassert(val !== exp, val, exp, 'is.not', false, 'Expected values not to be strictly equal', msg);\n}\n\nnot.equal = function (val, exp, msg) {\n\tassert(!(0,dequal__WEBPACK_IMPORTED_MODULE_0__.dequal)(val, exp), val, exp, 'not.equal', false, 'Expected values not to be deeply equal', msg);\n}\n\nnot.type = function (val, exp, msg) {\n\tlet tmp = typeof val;\n\tassert(tmp !== exp, tmp, exp, 'not.type', false, `Expected \"${tmp}\" not to be \"${exp}\"`, msg);\n}\n\nnot.instance = function (val, exp, msg) {\n\tlet name = '`' + (exp.name || exp.constructor.name) + '`';\n\tassert(!(val instanceof exp), val, exp, 'not.instance', false, `Expected value not to be an instance of ${name}`, msg);\n}\n\nnot.snapshot = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.snapshot', false, 'Expected value not to match snapshot', msg);\n}\n\nnot.fixture = function (val, exp, msg) {\n\tval=dedent(val); exp=dedent(exp);\n\tassert(val !== exp, val, exp, 'not.fixture', false, 'Expected value not to match fixture', msg);\n}\n\nnot.match = function (val, exp, msg) {\n\tif (typeof exp === 'string') {\n\t\tassert(!val.includes(exp), val, exp, 'not.match', false, `Expected value not to include \"${exp}\" substring`, msg);\n\t} else {\n\t\tassert(!exp.test(val), val, exp, 'not.match', false, `Expected value not to match \\`${String(exp)}\\` pattern`, msg);\n\t}\n}\n\nnot.throws = function (blk, exp, msg) {\n\tif (!msg && typeof exp === 'string') {\n\t\tmsg = exp; exp = null;\n\t}\n\n\ttry {\n\t\tblk();\n\t} catch (err) {\n\t\tif (typeof exp === 'function') {\n\t\t\tassert(!exp(err), true, false, 'not.throws', false, 'Expected function not to throw matching exception', msg);\n\t\t} else if (exp instanceof RegExp) {\n\t\t\tassert(!exp.test(err.message), true, false, 'not.throws', false, `Expected function not to throw exception matching \\`${String(exp)}\\` pattern`, msg);\n\t\t} else if (!exp) {\n\t\t\tassert(false, true, false, 'not.throws', false, 'Expected function not to throw', msg);\n\t\t}\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V2dS9hc3NlcnQvaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ1U7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxTQUFTO0FBQ2xCLHNEQUFzRCxFQUFFLEtBQUs7QUFDN0Q7O0FBRU87QUFDUCxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw4REFBOEQ7QUFDckY7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1AscUNBQXFDLDZDQUFPO0FBQzVDOztBQUVPO0FBQ1AsUUFBUSw4Q0FBTSwrQkFBK0IsNkNBQU87QUFDcEQ7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQSwyREFBMkQsSUFBSSxXQUFXLElBQUk7QUFDOUU7O0FBRU87QUFDUDtBQUNBLGdHQUFnRyxLQUFLO0FBQ3JHOztBQUVPO0FBQ1A7QUFDQSxvRkFBb0YsSUFBSTtBQUN4RixHQUFHO0FBQ0gsK0VBQStFLFlBQVk7QUFDM0Y7QUFDQTs7QUFFTztBQUNQLGtCQUFrQjtBQUNsQiwyQ0FBMkMsMkNBQUs7QUFDaEQ7O0FBRUEsMkJBQTJCLCtDQUFLO0FBQ3pCO0FBQ1Asa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixrSEFBa0gsWUFBWTtBQUM5SDtBQUNBO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsOENBQU07QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0RBQStELElBQUksZUFBZSxJQUFJO0FBQ3RGOztBQUVBO0FBQ0E7QUFDQSwyR0FBMkcsS0FBSztBQUNoSDs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZGQUE2RixJQUFJO0FBQ2pHLEdBQUc7QUFDSCx3RkFBd0YsWUFBWTtBQUNwRztBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsSUFBSTtBQUNKLDJIQUEySCxZQUFZO0FBQ3ZJLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXZ1L2Fzc2VydC9pbmRleC5tanM/NWVmMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXF1YWzCoH0gZnJvbSAnZGVxdWFsJztcbmltcG9ydCB7IGNvbXBhcmUsIGxpbmVzIH0gZnJvbSAndXZ1L2RpZmYnO1xuXG5mdW5jdGlvbiBkZWRlbnQoc3RyKSB7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC9cXHI/XFxuL2csICdcXG4nKTtcbiAgbGV0IGFyciA9IHN0ci5tYXRjaCgvXlsgXFx0XSooPz1cXFMpL2dtKTtcbiAgbGV0IGkgPSAwLCBtaW4gPSAxLzAsIGxlbiA9IChhcnJ8fFtdKS5sZW5ndGg7XG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIG1pbiA9IE1hdGgubWluKG1pbiwgYXJyW2ldLmxlbmd0aCk7XG4gIHJldHVybiBsZW4gJiYgbWluID8gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChgXlsgXFxcXHRdeyR7bWlufX1gLCAnZ20nKSwgJycpIDogc3RyO1xufVxuXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uIGV4dGVuZHMgRXJyb3Ige1xuXHRjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG5cdFx0c3VwZXIob3B0cy5tZXNzYWdlKTtcblx0XHR0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uJztcblx0XHR0aGlzLmNvZGUgPSAnRVJSX0FTU0VSVElPTic7XG5cdFx0aWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG5cdFx0XHRFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcblx0XHR9XG5cdFx0dGhpcy5kZXRhaWxzID0gb3B0cy5kZXRhaWxzIHx8IGZhbHNlO1xuXHRcdHRoaXMuZ2VuZXJhdGVkID0gISFvcHRzLmdlbmVyYXRlZDtcblx0XHR0aGlzLm9wZXJhdG9yID0gb3B0cy5vcGVyYXRvcjtcblx0XHR0aGlzLmV4cGVjdHMgPSBvcHRzLmV4cGVjdHM7XG5cdFx0dGhpcy5hY3R1YWwgPSBvcHRzLmFjdHVhbDtcblx0fVxufVxuXG5mdW5jdGlvbiBhc3NlcnQoYm9vbCwgYWN0dWFsLCBleHBlY3RzLCBvcGVyYXRvciwgZGV0YWlsZXIsIGJhY2t1cCwgbXNnKSB7XG5cdGlmIChib29sKSByZXR1cm47XG5cdGxldCBtZXNzYWdlID0gbXNnIHx8IGJhY2t1cDtcblx0aWYgKG1zZyBpbnN0YW5jZW9mIEVycm9yKSB0aHJvdyBtc2c7XG5cdGxldCBkZXRhaWxzID0gZGV0YWlsZXIgJiYgZGV0YWlsZXIoYWN0dWFsLCBleHBlY3RzKTtcblx0dGhyb3cgbmV3IEFzc2VydGlvbih7IGFjdHVhbCwgZXhwZWN0cywgb3BlcmF0b3IsIG1lc3NhZ2UsIGRldGFpbHMsIGdlbmVyYXRlZDogIW1zZyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9rKHZhbCwgbXNnKSB7XG5cdGFzc2VydCghIXZhbCwgZmFsc2UsIHRydWUsICdvaycsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWUgdG8gYmUgdHJ1dGh5JywgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzKHZhbCwgZXhwLCBtc2cpIHtcblx0YXNzZXJ0KHZhbCA9PT0gZXhwLCB2YWwsIGV4cCwgJ2lzJywgY29tcGFyZSwgJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBlcXVhbDonLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWwodmFsLCBleHAsIG1zZykge1xuXHRhc3NlcnQoZGVxdWFsKHZhbCwgZXhwKSwgdmFsLCBleHAsICdlcXVhbCcsIGNvbXBhcmUsICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgZGVlcGx5IGVxdWFsOicsIG1zZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZShtc2cpIHtcblx0YXNzZXJ0KGZhbHNlLCB0cnVlLCBmYWxzZSwgJ3VucmVhY2hhYmxlJywgZmFsc2UsICdFeHBlY3RlZCBub3QgdG8gYmUgcmVhY2hlZCEnLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZSh2YWwsIGV4cCwgbXNnKSB7XG5cdGxldCB0bXAgPSB0eXBlb2YgdmFsO1xuXHRhc3NlcnQodG1wID09PSBleHAsIHRtcCwgZXhwLCAndHlwZScsIGZhbHNlLCBgRXhwZWN0ZWQgXCIke3RtcH1cIiB0byBiZSBcIiR7ZXhwfVwiYCwgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbmNlKHZhbCwgZXhwLCBtc2cpIHtcblx0bGV0IG5hbWUgPSAnYCcgKyAoZXhwLm5hbWUgfHwgZXhwLmNvbnN0cnVjdG9yLm5hbWUpICsgJ2AnO1xuXHRhc3NlcnQodmFsIGluc3RhbmNlb2YgZXhwLCB2YWwsIGV4cCwgJ2luc3RhbmNlJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBhbiBpbnN0YW5jZSBvZiAke25hbWV9YCwgbXNnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKHZhbCwgZXhwLCBtc2cpIHtcblx0aWYgKHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0YXNzZXJ0KHZhbC5pbmNsdWRlcyhleHApLCB2YWwsIGV4cCwgJ21hdGNoJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSB0byBpbmNsdWRlIFwiJHtleHB9XCIgc3Vic3RyaW5nYCwgbXNnKTtcblx0fSBlbHNlIHtcblx0XHRhc3NlcnQoZXhwLnRlc3QodmFsKSwgdmFsLCBleHAsICdtYXRjaCcsIGZhbHNlLCBgRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNuYXBzaG90KHZhbCwgZXhwLCBtc2cpIHtcblx0dmFsPWRlZGVudCh2YWwpOyBleHA9ZGVkZW50KGV4cCk7XG5cdGFzc2VydCh2YWwgPT09IGV4cCwgdmFsLCBleHAsICdzbmFwc2hvdCcsIGxpbmVzLCAnRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggc25hcHNob3Q6JywgbXNnKTtcbn1cblxuY29uc3QgbGluZU51bXMgPSAoeCwgeSkgPT4gbGluZXMoeCwgeSwgMSk7XG5leHBvcnQgZnVuY3Rpb24gZml4dHVyZSh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsID09PSBleHAsIHZhbCwgZXhwLCAnZml4dHVyZScsIGxpbmVOdW1zLCAnRXhwZWN0ZWQgdmFsdWUgdG8gbWF0Y2ggZml4dHVyZTonLCBtc2cpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dzKGJsaywgZXhwLCBtc2cpIHtcblx0aWYgKCFtc2cgJiYgdHlwZW9mIGV4cCA9PT0gJ3N0cmluZycpIHtcblx0XHRtc2cgPSBleHA7IGV4cCA9IG51bGw7XG5cdH1cblxuXHR0cnkge1xuXHRcdGJsaygpO1xuXHRcdGFzc2VydChmYWxzZSwgZmFsc2UsIHRydWUsICd0aHJvd3MnLCBmYWxzZSwgJ0V4cGVjdGVkIGZ1bmN0aW9uIHRvIHRocm93JywgbXNnKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVyciBpbnN0YW5jZW9mIEFzc2VydGlvbikgdGhyb3cgZXJyO1xuXG5cdFx0aWYgKHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGFzc2VydChleHAoZXJyKSwgZmFsc2UsIHRydWUsICd0aHJvd3MnLCBmYWxzZSwgJ0V4cGVjdGVkIGZ1bmN0aW9uIHRvIHRocm93IG1hdGNoaW5nIGV4Y2VwdGlvbicsIG1zZyk7XG5cdFx0fSBlbHNlIGlmIChleHAgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdGFzc2VydChleHAudGVzdChlcnIubWVzc2FnZSksIGZhbHNlLCB0cnVlLCAndGhyb3dzJywgZmFsc2UsIGBFeHBlY3RlZCBmdW5jdGlvbiB0byB0aHJvdyBleGNlcHRpb24gbWF0Y2hpbmcgXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdFx0fVxuXHR9XG59XG5cbi8vIC0tLVxuXG5leHBvcnQgZnVuY3Rpb24gbm90KHZhbCwgbXNnKSB7XG5cdGFzc2VydCghdmFsLCB0cnVlLCBmYWxzZSwgJ25vdCcsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWUgdG8gYmUgZmFsc2V5JywgbXNnKTtcbn1cblxubm90Lm9rID0gbm90O1xuXG5pcy5ub3QgPSBmdW5jdGlvbiAodmFsLCBleHAsIG1zZykge1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnaXMubm90JywgZmFsc2UsICdFeHBlY3RlZCB2YWx1ZXMgbm90IHRvIGJlIHN0cmljdGx5IGVxdWFsJywgbXNnKTtcbn1cblxubm90LmVxdWFsID0gZnVuY3Rpb24gKHZhbCwgZXhwLCBtc2cpIHtcblx0YXNzZXJ0KCFkZXF1YWwodmFsLCBleHApLCB2YWwsIGV4cCwgJ25vdC5lcXVhbCcsIGZhbHNlLCAnRXhwZWN0ZWQgdmFsdWVzIG5vdCB0byBiZSBkZWVwbHkgZXF1YWwnLCBtc2cpO1xufVxuXG5ub3QudHlwZSA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdGxldCB0bXAgPSB0eXBlb2YgdmFsO1xuXHRhc3NlcnQodG1wICE9PSBleHAsIHRtcCwgZXhwLCAnbm90LnR5cGUnLCBmYWxzZSwgYEV4cGVjdGVkIFwiJHt0bXB9XCIgbm90IHRvIGJlIFwiJHtleHB9XCJgLCBtc2cpO1xufVxuXG5ub3QuaW5zdGFuY2UgPSBmdW5jdGlvbiAodmFsLCBleHAsIG1zZykge1xuXHRsZXQgbmFtZSA9ICdgJyArIChleHAubmFtZSB8fCBleHAuY29uc3RydWN0b3IubmFtZSkgKyAnYCc7XG5cdGFzc2VydCghKHZhbCBpbnN0YW5jZW9mIGV4cCksIHZhbCwgZXhwLCAnbm90Lmluc3RhbmNlJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSBub3QgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgJHtuYW1lfWAsIG1zZyk7XG59XG5cbm5vdC5zbmFwc2hvdCA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnbm90LnNuYXBzaG90JywgZmFsc2UsICdFeHBlY3RlZCB2YWx1ZSBub3QgdG8gbWF0Y2ggc25hcHNob3QnLCBtc2cpO1xufVxuXG5ub3QuZml4dHVyZSA9IGZ1bmN0aW9uICh2YWwsIGV4cCwgbXNnKSB7XG5cdHZhbD1kZWRlbnQodmFsKTsgZXhwPWRlZGVudChleHApO1xuXHRhc3NlcnQodmFsICE9PSBleHAsIHZhbCwgZXhwLCAnbm90LmZpeHR1cmUnLCBmYWxzZSwgJ0V4cGVjdGVkIHZhbHVlIG5vdCB0byBtYXRjaCBmaXh0dXJlJywgbXNnKTtcbn1cblxubm90Lm1hdGNoID0gZnVuY3Rpb24gKHZhbCwgZXhwLCBtc2cpIHtcblx0aWYgKHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0YXNzZXJ0KCF2YWwuaW5jbHVkZXMoZXhwKSwgdmFsLCBleHAsICdub3QubWF0Y2gnLCBmYWxzZSwgYEV4cGVjdGVkIHZhbHVlIG5vdCB0byBpbmNsdWRlIFwiJHtleHB9XCIgc3Vic3RyaW5nYCwgbXNnKTtcblx0fSBlbHNlIHtcblx0XHRhc3NlcnQoIWV4cC50ZXN0KHZhbCksIHZhbCwgZXhwLCAnbm90Lm1hdGNoJywgZmFsc2UsIGBFeHBlY3RlZCB2YWx1ZSBub3QgdG8gbWF0Y2ggXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdH1cbn1cblxubm90LnRocm93cyA9IGZ1bmN0aW9uIChibGssIGV4cCwgbXNnKSB7XG5cdGlmICghbXNnICYmIHR5cGVvZiBleHAgPT09ICdzdHJpbmcnKSB7XG5cdFx0bXNnID0gZXhwOyBleHAgPSBudWxsO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRibGsoKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGFzc2VydCghZXhwKGVyciksIHRydWUsIGZhbHNlLCAnbm90LnRocm93cycsIGZhbHNlLCAnRXhwZWN0ZWQgZnVuY3Rpb24gbm90IHRvIHRocm93IG1hdGNoaW5nIGV4Y2VwdGlvbicsIG1zZyk7XG5cdFx0fSBlbHNlIGlmIChleHAgaW5zdGFuY2VvZiBSZWdFeHApIHtcblx0XHRcdGFzc2VydCghZXhwLnRlc3QoZXJyLm1lc3NhZ2UpLCB0cnVlLCBmYWxzZSwgJ25vdC50aHJvd3MnLCBmYWxzZSwgYEV4cGVjdGVkIGZ1bmN0aW9uIG5vdCB0byB0aHJvdyBleGNlcHRpb24gbWF0Y2hpbmcgXFxgJHtTdHJpbmcoZXhwKX1cXGAgcGF0dGVybmAsIG1zZyk7XG5cdFx0fSBlbHNlIGlmICghZXhwKSB7XG5cdFx0XHRhc3NlcnQoZmFsc2UsIHRydWUsIGZhbHNlLCAnbm90LnRocm93cycsIGZhbHNlLCAnRXhwZWN0ZWQgZnVuY3Rpb24gbm90IHRvIHRocm93JywgbXNnKTtcblx0XHR9XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uvu/assert/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/uvu/diff/index.mjs": +/*!************************************************!*\ + !*** ../../../node_modules/uvu/diff/index.mjs ***! + \************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"arrays\": () => (/* binding */ arrays),\n/* harmony export */ \"chars\": () => (/* binding */ chars),\n/* harmony export */ \"circular\": () => (/* binding */ circular),\n/* harmony export */ \"compare\": () => (/* binding */ compare),\n/* harmony export */ \"direct\": () => (/* binding */ direct),\n/* harmony export */ \"lines\": () => (/* binding */ lines),\n/* harmony export */ \"sort\": () => (/* binding */ sort),\n/* harmony export */ \"stringify\": () => (/* binding */ stringify)\n/* harmony export */ });\n/* harmony import */ var kleur__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! kleur */ \"../../../node_modules/kleur/index.mjs\");\n/* harmony import */ var diff__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! diff */ \"../../../node_modules/diff/lib/index.mjs\");\n\n\n\nconst colors = {\n\t'--': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red,\n\t'··': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].grey,\n\t'++': kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].green,\n};\n\nconst TITLE = kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim().italic;\nconst TAB=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('→'), SPACE=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('·'), NL=kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('↵');\nconst LOG = (sym, str) => colors[sym](sym + PRETTY(str)) + '\\n';\nconst LINE = (num, x) => kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim('L' + String(num).padStart(x, '0') + ' ');\nconst PRETTY = str => str.replace(/[ ]/g, SPACE).replace(/\\t/g, TAB).replace(/(\\r?\\n)/g, NL);\n\nfunction line(obj, prev, pad) {\n\tlet char = obj.removed ? '--' : obj.added ? '++' : '··';\n\tlet arr = obj.value.replace(/\\r?\\n$/, '').split('\\n');\n\tlet i=0, tmp, out='';\n\n\tif (obj.added) out += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\telse if (obj.removed) out += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tif (tmp != null) {\n\t\t\tif (prev) out += LINE(prev + i, pad);\n\t\t\tout += LOG(char, tmp || '\\n');\n\t\t}\n\t}\n\n\treturn out;\n}\n\n// TODO: want better diffing\n//~> complex items bail outright\nfunction arrays(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffArrays(input, expect);\n\tlet i=0, j=0, k=0, tmp, val, char, isObj, str;\n\tlet out = LOG('··', '[');\n\n\tfor (; i < arr.length; i++) {\n\t\tchar = (tmp = arr[i]).removed ? '--' : tmp.added ? '++' : '··';\n\n\t\tif (tmp.added) {\n\t\t\tout += colors[char]().underline(TITLE('Expected:')) + '\\n';\n\t\t} else if (tmp.removed) {\n\t\t\tout += colors[char]().underline(TITLE('Actual:')) + '\\n';\n\t\t}\n\n\t\tfor (j=0; j < tmp.value.length; j++) {\n\t\t\tisObj = (tmp.value[j] && typeof tmp.value[j] === 'object');\n\t\t\tval = stringify(tmp.value[j]).split(/\\r?\\n/g);\n\t\t\tfor (k=0; k < val.length;) {\n\t\t\t\tstr = ' ' + val[k++] + (isObj ? '' : ',');\n\t\t\t\tif (isObj && k === val.length && (j + 1) < tmp.value.length) str += ',';\n\t\t\t\tout += LOG(char, str);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out + LOG('··', ']');\n}\n\nfunction lines(input, expect, linenum = 0) {\n\tlet i=0, tmp, output='';\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffLines(input, expect);\n\tlet pad = String(expect.split(/\\r?\\n/g).length - linenum).length;\n\n\tfor (; i < arr.length; i++) {\n\t\toutput += line(tmp = arr[i], linenum, pad);\n\t\tif (linenum && !tmp.removed) linenum += tmp.count;\n\t}\n\n\treturn output;\n}\n\nfunction chars(input, expect) {\n\tlet arr = diff__WEBPACK_IMPORTED_MODULE_1__.diffChars(input, expect);\n\tlet i=0, output='', tmp;\n\n\tlet l1 = input.length;\n\tlet l2 = expect.length;\n\n\tlet p1 = PRETTY(input);\n\tlet p2 = PRETTY(expect);\n\n\ttmp = arr[i];\n\n\tif (l1 === l2) {\n\t\t// no length offsets\n\t} else if (tmp.removed && arr[i + 1]) {\n\t\tlet del = tmp.count - arr[i + 1].count;\n\t\tif (del == 0) {\n\t\t\t// wash~\n\t\t} else if (del > 0) {\n\t\t\texpect = ' '.repeat(del) + expect;\n\t\t\tp2 = ' '.repeat(del) + p2;\n\t\t\tl2 += del;\n\t\t} else if (del < 0) {\n\t\t\tinput = ' '.repeat(-del) + input;\n\t\t\tp1 = ' '.repeat(-del) + p1;\n\t\t\tl1 += -del;\n\t\t}\n\t}\n\n\toutput += direct(p1, p2, l1, l2);\n\n\tif (l1 === l2) {\n\t\tfor (tmp=' '; i < l1; i++) {\n\t\t\ttmp += input[i] === expect[i] ? ' ' : '^';\n\t\t}\n\t} else {\n\t\tfor (tmp=' '; i < arr.length; i++) {\n\t\t\ttmp += ((arr[i].added || arr[i].removed) ? '^' : ' ').repeat(Math.max(arr[i].count, 0));\n\t\t\tif (i + 1 < arr.length && ((arr[i].added && arr[i+1].removed) || (arr[i].removed && arr[i+1].added))) {\n\t\t\t\tarr[i + 1].count -= arr[i].count;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].red(tmp);\n}\n\nfunction direct(input, expect, lenA = String(input).length, lenB = String(expect).length) {\n\tlet gutter = 4;\n\tlet lenC = Math.max(lenA, lenB);\n\tlet typeA=typeof input, typeB=typeof expect;\n\n\tif (typeA !== typeB) {\n\t\tgutter = 2;\n\n\t\tlet delA = gutter + lenC - lenA;\n\t\tlet delB = gutter + lenC - lenB;\n\n\t\tinput += ' '.repeat(delA) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeA}]`);\n\t\texpect += ' '.repeat(delB) + kleur__WEBPACK_IMPORTED_MODULE_0__[\"default\"].dim(`[${typeB}]`);\n\n\t\tlenA += delA + typeA.length + 2;\n\t\tlenB += delB + typeB.length + 2;\n\t\tlenC = Math.max(lenA, lenB);\n\t}\n\n\tlet output = colors['++']('++' + expect + ' '.repeat(gutter + lenC - lenB) + TITLE('(Expected)')) + '\\n';\n\treturn output + colors['--']('--' + input + ' '.repeat(gutter + lenC - lenA) + TITLE('(Actual)')) + '\\n';\n}\n\nfunction sort(input, expect) {\n\tvar k, i=0, tmp, isArr = Array.isArray(input);\n\tvar keys=[], out=isArr ? Array(input.length) : {};\n\n\tif (isArr) {\n\t\tfor (i=0; i < out.length; i++) {\n\t\t\ttmp = input[i];\n\t\t\tif (!tmp || typeof tmp !== 'object') out[i] = tmp;\n\t\t\telse out[i] = sort(tmp, expect[i]); // might not be right\n\t\t}\n\t} else {\n\t\tfor (k in expect)\n\t\t\tkeys.push(k);\n\n\t\tfor (; i < keys.length; i++) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(input, k = keys[i])) {\n\t\t\t\tif (!(tmp = input[k]) || typeof tmp !== 'object') out[k] = tmp;\n\t\t\t\telse out[k] = sort(tmp, expect[k]);\n\t\t\t}\n\t\t}\n\n\t\tfor (k in input) {\n\t\t\tif (!out.hasOwnProperty(k)) {\n\t\t\t\tout[k] = input[k]; // expect didnt have\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out;\n}\n\nfunction circular() {\n\tvar cache = new Set;\n\treturn function print(key, val) {\n\t\tif (val === void 0) return '[__VOID__]';\n\t\tif (typeof val === 'number' && val !== val) return '[__NAN__]';\n\t\tif (typeof val === 'bigint') return val.toString();\n\t\tif (!val || typeof val !== 'object') return val;\n\t\tif (cache.has(val)) return '[Circular]';\n\t\tcache.add(val); return val;\n\t}\n}\n\nfunction stringify(input) {\n\treturn JSON.stringify(input, circular(), 2).replace(/\"\\[__NAN__\\]\"/g, 'NaN').replace(/\"\\[__VOID__\\]\"/g, 'undefined');\n}\n\nfunction compare(input, expect) {\n\tif (Array.isArray(expect) && Array.isArray(input)) return arrays(input, expect);\n\tif (expect instanceof RegExp) return chars(''+input, ''+expect);\n\n\tlet isA = input && typeof input == 'object';\n\tlet isB = expect && typeof expect == 'object';\n\n\tif (isA && isB) input = sort(input, expect);\n\tif (isB) expect = stringify(expect);\n\tif (isA) input = stringify(input);\n\n\tif (expect && typeof expect == 'object') {\n\t\tinput = stringify(sort(input, expect));\n\t\texpect = stringify(expect);\n\t}\n\n\tisA = typeof input == 'string';\n\tisB = typeof expect == 'string';\n\n\tif (isA && /\\r?\\n/.test(input)) return lines(input, ''+expect);\n\tif (isB && /\\r?\\n/.test(expect)) return lines(''+input, expect);\n\tif (isA && isB) return chars(input, expect);\n\n\treturn direct(input, expect);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3V2dS9kaWZmL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQTBCO0FBQ0c7O0FBRTdCO0FBQ0EsT0FBTyxpREFBUztBQUNoQixPQUFPLGtEQUFVO0FBQ2pCLE9BQU8sbURBQVc7QUFDbEI7O0FBRUEsY0FBYyxpREFBUztBQUN2QixVQUFVLGlEQUFTLGFBQWEsaURBQVMsVUFBVSxpREFBUztBQUM1RDtBQUNBLHlCQUF5QixpREFBUztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFFBQVEsZ0JBQWdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQLFdBQVcsNENBQWU7QUFDMUI7QUFDQTs7QUFFQSxRQUFRLGdCQUFnQjtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUEsWUFBWSxzQkFBc0I7QUFDbEM7QUFDQTtBQUNBLGFBQWEsZUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQO0FBQ0EsV0FBVywyQ0FBYztBQUN6Qjs7QUFFQSxRQUFRLGdCQUFnQjtBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFTztBQUNQLFdBQVcsMkNBQWM7QUFDekI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7QUFDQTtBQUNBLEdBQUc7QUFDSCxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsaURBQVM7QUFDMUI7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhCQUE4QixpREFBUyxLQUFLLE1BQU07QUFDbEQsK0JBQStCLGlEQUFTLEtBQUssTUFBTTs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBLFlBQVksZ0JBQWdCO0FBQzVCO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSxTQUFTLGlCQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXZ1L2RpZmYvaW5kZXgubWpzPzQwYTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGtsZXVyIGZyb20gJ2tsZXVyJztcbmltcG9ydCAqIGFzIGRpZmYgZnJvbSAnZGlmZic7XG5cbmNvbnN0IGNvbG9ycyA9IHtcblx0Jy0tJzoga2xldXIucmVkLFxuXHQnwrfCtyc6IGtsZXVyLmdyZXksXG5cdCcrKyc6IGtsZXVyLmdyZWVuLFxufTtcblxuY29uc3QgVElUTEUgPSBrbGV1ci5kaW0oKS5pdGFsaWM7XG5jb25zdCBUQUI9a2xldXIuZGltKCfihpInKSwgU1BBQ0U9a2xldXIuZGltKCfCtycpLCBOTD1rbGV1ci5kaW0oJ+KGtScpO1xuY29uc3QgTE9HID0gKHN5bSwgc3RyKSA9PiBjb2xvcnNbc3ltXShzeW0gKyBQUkVUVFkoc3RyKSkgKyAnXFxuJztcbmNvbnN0IExJTkUgPSAobnVtLCB4KSA9PiBrbGV1ci5kaW0oJ0wnICsgU3RyaW5nKG51bSkucGFkU3RhcnQoeCwgJzAnKSArICcgJyk7XG5jb25zdCBQUkVUVFkgPSBzdHIgPT4gc3RyLnJlcGxhY2UoL1sgXS9nLCBTUEFDRSkucmVwbGFjZSgvXFx0L2csIFRBQikucmVwbGFjZSgvKFxccj9cXG4pL2csIE5MKTtcblxuZnVuY3Rpb24gbGluZShvYmosIHByZXYsIHBhZCkge1xuXHRsZXQgY2hhciA9IG9iai5yZW1vdmVkID8gJy0tJyA6IG9iai5hZGRlZCA/ICcrKycgOiAnwrfCtyc7XG5cdGxldCBhcnIgPSBvYmoudmFsdWUucmVwbGFjZSgvXFxyP1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuXHRsZXQgaT0wLCB0bXAsIG91dD0nJztcblxuXHRpZiAob2JqLmFkZGVkKSBvdXQgKz0gY29sb3JzW2NoYXJdKCkudW5kZXJsaW5lKFRJVExFKCdFeHBlY3RlZDonKSkgKyAnXFxuJztcblx0ZWxzZSBpZiAob2JqLnJlbW92ZWQpIG91dCArPSBjb2xvcnNbY2hhcl0oKS51bmRlcmxpbmUoVElUTEUoJ0FjdHVhbDonKSkgKyAnXFxuJztcblxuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdHRtcCA9IGFycltpXTtcblx0XHRpZiAodG1wICE9IG51bGwpIHtcblx0XHRcdGlmIChwcmV2KSBvdXQgKz0gTElORShwcmV2ICsgaSwgcGFkKTtcblx0XHRcdG91dCArPSBMT0coY2hhciwgdG1wIHx8ICdcXG4nKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0O1xufVxuXG4vLyBUT0RPOiB3YW50IGJldHRlciBkaWZmaW5nXG4vL34+IGNvbXBsZXggaXRlbXMgYmFpbCBvdXRyaWdodFxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5cyhpbnB1dCwgZXhwZWN0KSB7XG5cdGxldCBhcnIgPSBkaWZmLmRpZmZBcnJheXMoaW5wdXQsIGV4cGVjdCk7XG5cdGxldCBpPTAsIGo9MCwgaz0wLCB0bXAsIHZhbCwgY2hhciwgaXNPYmosIHN0cjtcblx0bGV0IG91dCA9IExPRygnwrfCtycsICdbJyk7XG5cblx0Zm9yICg7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblx0XHRjaGFyID0gKHRtcCA9IGFycltpXSkucmVtb3ZlZCA/ICctLScgOiB0bXAuYWRkZWQgPyAnKysnIDogJ8K3wrcnO1xuXG5cdFx0aWYgKHRtcC5hZGRlZCkge1xuXHRcdFx0b3V0ICs9IGNvbG9yc1tjaGFyXSgpLnVuZGVybGluZShUSVRMRSgnRXhwZWN0ZWQ6JykpICsgJ1xcbic7XG5cdFx0fSBlbHNlIGlmICh0bXAucmVtb3ZlZCkge1xuXHRcdFx0b3V0ICs9IGNvbG9yc1tjaGFyXSgpLnVuZGVybGluZShUSVRMRSgnQWN0dWFsOicpKSArICdcXG4nO1xuXHRcdH1cblxuXHRcdGZvciAoaj0wOyBqIDwgdG1wLnZhbHVlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpc09iaiA9ICh0bXAudmFsdWVbal0gJiYgdHlwZW9mIHRtcC52YWx1ZVtqXSA9PT0gJ29iamVjdCcpO1xuXHRcdFx0dmFsID0gc3RyaW5naWZ5KHRtcC52YWx1ZVtqXSkuc3BsaXQoL1xccj9cXG4vZyk7XG5cdFx0XHRmb3IgKGs9MDsgayA8IHZhbC5sZW5ndGg7KSB7XG5cdFx0XHRcdHN0ciA9ICcgICcgKyB2YWxbaysrXSArIChpc09iaiA/ICcnIDogJywnKTtcblx0XHRcdFx0aWYgKGlzT2JqICYmIGsgPT09IHZhbC5sZW5ndGggJiYgKGogKyAxKSA8IHRtcC52YWx1ZS5sZW5ndGgpIHN0ciArPSAnLCc7XG5cdFx0XHRcdG91dCArPSBMT0coY2hhciwgc3RyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0ICsgTE9HKCfCt8K3JywgJ10nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmVzKGlucHV0LCBleHBlY3QsIGxpbmVudW0gPSAwKSB7XG5cdGxldCBpPTAsIHRtcCwgb3V0cHV0PScnO1xuXHRsZXQgYXJyID0gZGlmZi5kaWZmTGluZXMoaW5wdXQsIGV4cGVjdCk7XG5cdGxldCBwYWQgPSBTdHJpbmcoZXhwZWN0LnNwbGl0KC9cXHI/XFxuL2cpLmxlbmd0aCAtIGxpbmVudW0pLmxlbmd0aDtcblxuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdG91dHB1dCArPSBsaW5lKHRtcCA9IGFycltpXSwgbGluZW51bSwgcGFkKTtcblx0XHRpZiAobGluZW51bSAmJiAhdG1wLnJlbW92ZWQpIGxpbmVudW0gKz0gdG1wLmNvdW50O1xuXHR9XG5cblx0cmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYXJzKGlucHV0LCBleHBlY3QpIHtcblx0bGV0IGFyciA9IGRpZmYuZGlmZkNoYXJzKGlucHV0LCBleHBlY3QpO1xuXHRsZXQgaT0wLCBvdXRwdXQ9JycsIHRtcDtcblxuXHRsZXQgbDEgPSBpbnB1dC5sZW5ndGg7XG5cdGxldCBsMiA9IGV4cGVjdC5sZW5ndGg7XG5cblx0bGV0IHAxID0gUFJFVFRZKGlucHV0KTtcblx0bGV0IHAyID0gUFJFVFRZKGV4cGVjdCk7XG5cblx0dG1wID0gYXJyW2ldO1xuXG5cdGlmIChsMSA9PT0gbDIpIHtcblx0XHQvLyBubyBsZW5ndGggb2Zmc2V0c1xuXHR9IGVsc2UgaWYgKHRtcC5yZW1vdmVkICYmIGFycltpICsgMV0pIHtcblx0XHRsZXQgZGVsID0gdG1wLmNvdW50IC0gYXJyW2kgKyAxXS5jb3VudDtcblx0XHRpZiAoZGVsID09IDApIHtcblx0XHRcdC8vIHdhc2h+XG5cdFx0fSBlbHNlIGlmIChkZWwgPiAwKSB7XG5cdFx0XHRleHBlY3QgPSAnICcucmVwZWF0KGRlbCkgKyBleHBlY3Q7XG5cdFx0XHRwMiA9ICcgJy5yZXBlYXQoZGVsKSArIHAyO1xuXHRcdFx0bDIgKz0gZGVsO1xuXHRcdH0gZWxzZSBpZiAoZGVsIDwgMCkge1xuXHRcdFx0aW5wdXQgPSAnICcucmVwZWF0KC1kZWwpICsgaW5wdXQ7XG5cdFx0XHRwMSA9ICcgJy5yZXBlYXQoLWRlbCkgKyBwMTtcblx0XHRcdGwxICs9IC1kZWw7XG5cdFx0fVxuXHR9XG5cblx0b3V0cHV0ICs9IGRpcmVjdChwMSwgcDIsIGwxLCBsMik7XG5cblx0aWYgKGwxID09PSBsMikge1xuXHRcdGZvciAodG1wPScgICc7IGkgPCBsMTsgaSsrKSB7XG5cdFx0XHR0bXAgKz0gaW5wdXRbaV0gPT09IGV4cGVjdFtpXSA/ICcgJyA6ICdeJztcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Zm9yICh0bXA9JyAgJzsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdFx0dG1wICs9ICgoYXJyW2ldLmFkZGVkIHx8IGFycltpXS5yZW1vdmVkKSA/ICdeJyA6ICcgJykucmVwZWF0KE1hdGgubWF4KGFycltpXS5jb3VudCwgMCkpO1xuXHRcdFx0aWYgKGkgKyAxIDwgYXJyLmxlbmd0aCAmJiAoKGFycltpXS5hZGRlZCAmJiBhcnJbaSsxXS5yZW1vdmVkKSB8fCAoYXJyW2ldLnJlbW92ZWQgJiYgYXJyW2krMV0uYWRkZWQpKSkge1xuXHRcdFx0XHRhcnJbaSArIDFdLmNvdW50IC09IGFycltpXS5jb3VudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0cHV0ICsga2xldXIucmVkKHRtcCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXJlY3QoaW5wdXQsIGV4cGVjdCwgbGVuQSA9IFN0cmluZyhpbnB1dCkubGVuZ3RoLCBsZW5CID0gU3RyaW5nKGV4cGVjdCkubGVuZ3RoKSB7XG5cdGxldCBndXR0ZXIgPSA0O1xuXHRsZXQgbGVuQyA9IE1hdGgubWF4KGxlbkEsIGxlbkIpO1xuXHRsZXQgdHlwZUE9dHlwZW9mIGlucHV0LCB0eXBlQj10eXBlb2YgZXhwZWN0O1xuXG5cdGlmICh0eXBlQSAhPT0gdHlwZUIpIHtcblx0XHRndXR0ZXIgPSAyO1xuXG5cdFx0bGV0IGRlbEEgPSBndXR0ZXIgKyBsZW5DIC0gbGVuQTtcblx0XHRsZXQgZGVsQiA9IGd1dHRlciArIGxlbkMgLSBsZW5CO1xuXG5cdFx0aW5wdXQgKz0gJyAnLnJlcGVhdChkZWxBKSArIGtsZXVyLmRpbShgWyR7dHlwZUF9XWApO1xuXHRcdGV4cGVjdCArPSAnICcucmVwZWF0KGRlbEIpICsga2xldXIuZGltKGBbJHt0eXBlQn1dYCk7XG5cblx0XHRsZW5BICs9IGRlbEEgKyB0eXBlQS5sZW5ndGggKyAyO1xuXHRcdGxlbkIgKz0gZGVsQiArIHR5cGVCLmxlbmd0aCArIDI7XG5cdFx0bGVuQyA9IE1hdGgubWF4KGxlbkEsIGxlbkIpO1xuXHR9XG5cblx0bGV0IG91dHB1dCA9IGNvbG9yc1snKysnXSgnKysnICsgZXhwZWN0ICsgJyAnLnJlcGVhdChndXR0ZXIgKyBsZW5DIC0gbGVuQikgKyBUSVRMRSgnKEV4cGVjdGVkKScpKSArICdcXG4nO1xuXHRyZXR1cm4gb3V0cHV0ICsgY29sb3JzWyctLSddKCctLScgKyBpbnB1dCArICcgJy5yZXBlYXQoZ3V0dGVyICsgbGVuQyAtIGxlbkEpICsgVElUTEUoJyhBY3R1YWwpJykpICsgJ1xcbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0KGlucHV0LCBleHBlY3QpIHtcblx0dmFyIGssIGk9MCwgdG1wLCBpc0FyciA9IEFycmF5LmlzQXJyYXkoaW5wdXQpO1xuXHR2YXIga2V5cz1bXSwgb3V0PWlzQXJyID8gQXJyYXkoaW5wdXQubGVuZ3RoKSA6IHt9O1xuXG5cdGlmIChpc0Fycikge1xuXHRcdGZvciAoaT0wOyBpIDwgb3V0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR0bXAgPSBpbnB1dFtpXTtcblx0XHRcdGlmICghdG1wIHx8IHR5cGVvZiB0bXAgIT09ICdvYmplY3QnKSBvdXRbaV0gPSB0bXA7XG5cdFx0XHRlbHNlIG91dFtpXSA9IHNvcnQodG1wLCBleHBlY3RbaV0pOyAvLyBtaWdodCBub3QgYmUgcmlnaHRcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0Zm9yIChrIGluIGV4cGVjdClcblx0XHRcdGtleXMucHVzaChrKTtcblxuXHRcdGZvciAoOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpbnB1dCwgayA9IGtleXNbaV0pKSB7XG5cdFx0XHRcdGlmICghKHRtcCA9IGlucHV0W2tdKSB8fCB0eXBlb2YgdG1wICE9PSAnb2JqZWN0Jykgb3V0W2tdID0gdG1wO1xuXHRcdFx0XHRlbHNlIG91dFtrXSA9IHNvcnQodG1wLCBleHBlY3Rba10pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZvciAoayBpbiBpbnB1dCkge1xuXHRcdFx0aWYgKCFvdXQuaGFzT3duUHJvcGVydHkoaykpIHtcblx0XHRcdFx0b3V0W2tdID0gaW5wdXRba107IC8vIGV4cGVjdCBkaWRudCBoYXZlXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNpcmN1bGFyKCkge1xuXHR2YXIgY2FjaGUgPSBuZXcgU2V0O1xuXHRyZXR1cm4gZnVuY3Rpb24gcHJpbnQoa2V5LCB2YWwpIHtcblx0XHRpZiAodmFsID09PSB2b2lkIDApIHJldHVybiAnW19fVk9JRF9fXSc7XG5cdFx0aWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInICYmIHZhbCAhPT0gdmFsKSByZXR1cm4gJ1tfX05BTl9fXSc7XG5cdFx0aWYgKHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSByZXR1cm4gdmFsLnRvU3RyaW5nKCk7XG5cdFx0aWYgKCF2YWwgfHwgdHlwZW9mIHZhbCAhPT0gJ29iamVjdCcpIHJldHVybiB2YWw7XG5cdFx0aWYgKGNhY2hlLmhhcyh2YWwpKSByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuXHRcdGNhY2hlLmFkZCh2YWwpOyByZXR1cm4gdmFsO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkoaW5wdXQpIHtcblx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0LCBjaXJjdWxhcigpLCAyKS5yZXBsYWNlKC9cIlxcW19fTkFOX19cXF1cIi9nLCAnTmFOJykucmVwbGFjZSgvXCJcXFtfX1ZPSURfX1xcXVwiL2csICd1bmRlZmluZWQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmUoaW5wdXQsIGV4cGVjdCkge1xuXHRpZiAoQXJyYXkuaXNBcnJheShleHBlY3QpICYmIEFycmF5LmlzQXJyYXkoaW5wdXQpKSByZXR1cm4gYXJyYXlzKGlucHV0LCBleHBlY3QpO1xuXHRpZiAoZXhwZWN0IGluc3RhbmNlb2YgUmVnRXhwKSByZXR1cm4gY2hhcnMoJycraW5wdXQsICcnK2V4cGVjdCk7XG5cblx0bGV0IGlzQSA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PSAnb2JqZWN0Jztcblx0bGV0IGlzQiA9IGV4cGVjdCAmJiB0eXBlb2YgZXhwZWN0ID09ICdvYmplY3QnO1xuXG5cdGlmIChpc0EgJiYgaXNCKSBpbnB1dCA9IHNvcnQoaW5wdXQsIGV4cGVjdCk7XG5cdGlmIChpc0IpIGV4cGVjdCA9IHN0cmluZ2lmeShleHBlY3QpO1xuXHRpZiAoaXNBKSBpbnB1dCA9IHN0cmluZ2lmeShpbnB1dCk7XG5cblx0aWYgKGV4cGVjdCAmJiB0eXBlb2YgZXhwZWN0ID09ICdvYmplY3QnKSB7XG5cdFx0aW5wdXQgPSBzdHJpbmdpZnkoc29ydChpbnB1dCwgZXhwZWN0KSk7XG5cdFx0ZXhwZWN0ID0gc3RyaW5naWZ5KGV4cGVjdCk7XG5cdH1cblxuXHRpc0EgPSB0eXBlb2YgaW5wdXQgPT0gJ3N0cmluZyc7XG5cdGlzQiA9IHR5cGVvZiBleHBlY3QgPT0gJ3N0cmluZyc7XG5cblx0aWYgKGlzQSAmJiAvXFxyP1xcbi8udGVzdChpbnB1dCkpIHJldHVybiBsaW5lcyhpbnB1dCwgJycrZXhwZWN0KTtcblx0aWYgKGlzQiAmJiAvXFxyP1xcbi8udGVzdChleHBlY3QpKSByZXR1cm4gbGluZXMoJycraW5wdXQsIGV4cGVjdCk7XG5cdGlmIChpc0EgJiYgaXNCKSByZXR1cm4gY2hhcnMoaW5wdXQsIGV4cGVjdCk7XG5cblx0cmV0dXJuIGRpcmVjdChpbnB1dCwgZXhwZWN0KTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/uvu/diff/index.mjs\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/directory-open-01563666.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/directory-open-01563666.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n return Array.isArray(e) || (e = [e]), e[0].recursive = e[0].recursive || !1, new Promise((t, r) => {\n const i = document.createElement(\"input\");\n i.type = \"file\", i.webkitdirectory = !0;\n\n const c = e => {\n \"function\" == typeof a && a(), t(e);\n },\n a = e[0].legacySetup && e[0].legacySetup(c, () => a(r), i);\n\n i.addEventListener(\"change\", () => {\n let t = Array.from(i.files);\n e[0].recursive ? e[0].recursive && e[0].skipDirectory && (t = t.filter(t => t.webkitRelativePath.split(\"/\").every(t => !e[0].skipDirectory({\n name: t,\n kind: \"directory\"\n })))) : t = t.filter(e => 2 === e.webkitRelativePath.split(\"/\").length), c(t);\n }), i.click();\n });\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZGlyZWN0b3J5LW9wZW4tMDE1NjM2NjYuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9kaXJlY3Rvcnktb3Blbi0wMTU2MzY2Ni5qcz85YmIzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbnZhciBlID0gKGUgPSBbe31dKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZSkgfHwgKGUgPSBbZV0pLCBlWzBdLnJlY3Vyc2l2ZSA9IGVbMF0ucmVjdXJzaXZlIHx8ICExLCBuZXcgUHJvbWlzZSgodCwgcikgPT4ge1xuICAgIGNvbnN0IGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgaS50eXBlID0gXCJmaWxlXCIsIGkud2Via2l0ZGlyZWN0b3J5ID0gITA7XG5cbiAgICBjb25zdCBjID0gZSA9PiB7XG4gICAgICBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGEgJiYgYSgpLCB0KGUpO1xuICAgIH0sXG4gICAgICAgICAgYSA9IGVbMF0ubGVnYWN5U2V0dXAgJiYgZVswXS5sZWdhY3lTZXR1cChjLCAoKSA9PiBhKHIpLCBpKTtcblxuICAgIGkuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBsZXQgdCA9IEFycmF5LmZyb20oaS5maWxlcyk7XG4gICAgICBlWzBdLnJlY3Vyc2l2ZSA/IGVbMF0ucmVjdXJzaXZlICYmIGVbMF0uc2tpcERpcmVjdG9yeSAmJiAodCA9IHQuZmlsdGVyKHQgPT4gdC53ZWJraXRSZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpLmV2ZXJ5KHQgPT4gIWVbMF0uc2tpcERpcmVjdG9yeSh7XG4gICAgICAgIG5hbWU6IHQsXG4gICAgICAgIGtpbmQ6IFwiZGlyZWN0b3J5XCJcbiAgICAgIH0pKSkpIDogdCA9IHQuZmlsdGVyKGUgPT4gMiA9PT0gZS53ZWJraXRSZWxhdGl2ZVBhdGguc3BsaXQoXCIvXCIpLmxlbmd0aCksIGModCk7XG4gICAgfSksIGkuY2xpY2soKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/directory-open-01563666.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js": +/*!*******************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js ***! + \*******************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ t)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nfunction e(r) {\n function t(e) {\n if (Object(e) !== e) return Promise.reject(new TypeError(e + \" is not an object.\"));\n var r = e.done;\n return Promise.resolve(e.value).then(function (e) {\n return {\n value: e,\n done: r\n };\n });\n }\n\n return e = function (e) {\n this.s = e, this.n = e.next;\n }, e.prototype = {\n s: null,\n n: null,\n next: function () {\n return t(this.n.apply(this.s, arguments));\n },\n return: function (e) {\n var r = this.s.return;\n return void 0 === r ? Promise.resolve({\n value: e,\n done: !0\n }) : t(r.apply(this.s, arguments));\n },\n throw: function (e) {\n var r = this.s.return;\n return void 0 === r ? Promise.reject(e) : t(r.apply(this.s, arguments));\n }\n }, new e(r);\n}\n\nconst r = (t, n, i = t.name, a) => __awaiter(void 0, void 0, void 0, function* () {\n const o = [],\n l = [];\n var s,\n u = !1,\n c = !1;\n\n try {\n for (var y, f = function (r) {\n var t,\n n,\n i,\n a = 2;\n\n for (\"undefined\" != typeof Symbol && (n = Symbol.asyncIterator, i = Symbol.iterator); a--;) {\n if (n && null != (t = r[n])) return t.call(r);\n if (i && null != (t = r[i])) return new e(t.call(r));\n n = \"@@asyncIterator\", i = \"@@iterator\";\n }\n\n throw new TypeError(\"Object is not async iterable\");\n }(t.values()); u = !(y = yield f.next()).done; u = !1) {\n const e = y.value,\n s = `${i}/${e.name}`;\n \"file\" === e.kind ? l.push(e.getFile().then(r => (r.directoryHandle = t, r.handle = e, Object.defineProperty(r, \"webkitRelativePath\", {\n configurable: !0,\n enumerable: !0,\n get: () => s\n })))) : \"directory\" !== e.kind || !n || a && a(e) || o.push(r(e, n, s, a));\n }\n } catch (e) {\n c = !0, s = e;\n } finally {\n try {\n u && null != f.return && (yield f.return());\n } finally {\n if (c) throw s;\n }\n }\n\n return [...(yield Promise.all(o)).flat(), ...(yield Promise.all(l))];\n});\n\nvar t = (e = {}) => __awaiter(void 0, void 0, void 0, function* () {\n e.recursive = e.recursive || !1;\n const t = yield window.showDirectoryPicker({\n id: e.id,\n startIn: e.startIn\n });\n return r(t, e.recursive, void 0, e.skipDirectory);\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZGlyZWN0b3J5LW9wZW4tNGVkMTE4ZDAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGdCQUFnQixTQUFJLElBQUksU0FBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEZBQTRGLElBQUk7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLLGNBQWMsZ0NBQWdDO0FBQ25EO0FBQ0EsbUJBQW1CLEVBQUUsR0FBRyxPQUFPO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRCxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9icm93c2VyLWZzLWFjY2Vzcy9kaXN0L2RpcmVjdG9yeS1vcGVuLTRlZDExOGQwLmpzPzNlYzIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZShyKSB7XG4gIGZ1bmN0aW9uIHQoZSkge1xuICAgIGlmIChPYmplY3QoZSkgIT09IGUpIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKGUgKyBcIiBpcyBub3QgYW4gb2JqZWN0LlwiKSk7XG4gICAgdmFyIHIgPSBlLmRvbmU7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlLnZhbHVlKS50aGVuKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogZSxcbiAgICAgICAgZG9uZTogclxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBlID0gZnVuY3Rpb24gKGUpIHtcbiAgICB0aGlzLnMgPSBlLCB0aGlzLm4gPSBlLm5leHQ7XG4gIH0sIGUucHJvdG90eXBlID0ge1xuICAgIHM6IG51bGwsXG4gICAgbjogbnVsbCxcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdCh0aGlzLm4uYXBwbHkodGhpcy5zLCBhcmd1bWVudHMpKTtcbiAgICB9LFxuICAgIHJldHVybjogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciByID0gdGhpcy5zLnJldHVybjtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IHIgPyBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICB2YWx1ZTogZSxcbiAgICAgICAgZG9uZTogITBcbiAgICAgIH0pIDogdChyLmFwcGx5KHRoaXMucywgYXJndW1lbnRzKSk7XG4gICAgfSxcbiAgICB0aHJvdzogZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciByID0gdGhpcy5zLnJldHVybjtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IHIgPyBQcm9taXNlLnJlamVjdChlKSA6IHQoci5hcHBseSh0aGlzLnMsIGFyZ3VtZW50cykpO1xuICAgIH1cbiAgfSwgbmV3IGUocik7XG59XG5cbmNvbnN0IHIgPSAodCwgbiwgaSA9IHQubmFtZSwgYSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIGNvbnN0IG8gPSBbXSxcbiAgICAgICAgbCA9IFtdO1xuICB2YXIgcyxcbiAgICAgIHUgPSAhMSxcbiAgICAgIGMgPSAhMTtcblxuICB0cnkge1xuICAgIGZvciAodmFyIHksIGYgPSBmdW5jdGlvbiAocikge1xuICAgICAgdmFyIHQsXG4gICAgICAgICAgbixcbiAgICAgICAgICBpLFxuICAgICAgICAgIGEgPSAyO1xuXG4gICAgICBmb3IgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiAobiA9IFN5bWJvbC5hc3luY0l0ZXJhdG9yLCBpID0gU3ltYm9sLml0ZXJhdG9yKTsgYS0tOykge1xuICAgICAgICBpZiAobiAmJiBudWxsICE9ICh0ID0gcltuXSkpIHJldHVybiB0LmNhbGwocik7XG4gICAgICAgIGlmIChpICYmIG51bGwgIT0gKHQgPSByW2ldKSkgcmV0dXJuIG5ldyBlKHQuY2FsbChyKSk7XG4gICAgICAgIG4gPSBcIkBAYXN5bmNJdGVyYXRvclwiLCBpID0gXCJAQGl0ZXJhdG9yXCI7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgaXMgbm90IGFzeW5jIGl0ZXJhYmxlXCIpO1xuICAgIH0odC52YWx1ZXMoKSk7IHUgPSAhKHkgPSB5aWVsZCBmLm5leHQoKSkuZG9uZTsgdSA9ICExKSB7XG4gICAgICBjb25zdCBlID0geS52YWx1ZSxcbiAgICAgICAgICAgIHMgPSBgJHtpfS8ke2UubmFtZX1gO1xuICAgICAgXCJmaWxlXCIgPT09IGUua2luZCA/IGwucHVzaChlLmdldEZpbGUoKS50aGVuKHIgPT4gKHIuZGlyZWN0b3J5SGFuZGxlID0gdCwgci5oYW5kbGUgPSBlLCBPYmplY3QuZGVmaW5lUHJvcGVydHkociwgXCJ3ZWJraXRSZWxhdGl2ZVBhdGhcIiwge1xuICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgICAgZ2V0OiAoKSA9PiBzXG4gICAgICB9KSkpKSA6IFwiZGlyZWN0b3J5XCIgIT09IGUua2luZCB8fCAhbiB8fCBhICYmIGEoZSkgfHwgby5wdXNoKHIoZSwgbiwgcywgYSkpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGMgPSAhMCwgcyA9IGU7XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIHUgJiYgbnVsbCAhPSBmLnJldHVybiAmJiAoeWllbGQgZi5yZXR1cm4oKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChjKSB0aHJvdyBzO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbLi4uKHlpZWxkIFByb21pc2UuYWxsKG8pKS5mbGF0KCksIC4uLih5aWVsZCBQcm9taXNlLmFsbChsKSldO1xufSk7XG5cbnZhciB0ID0gKGUgPSB7fSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIGUucmVjdXJzaXZlID0gZS5yZWN1cnNpdmUgfHwgITE7XG4gIGNvbnN0IHQgPSB5aWVsZCB3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcih7XG4gICAgaWQ6IGUuaWQsXG4gICAgc3RhcnRJbjogZS5zdGFydEluXG4gIH0pO1xuICByZXR1cm4gcih0LCBlLnJlY3Vyc2l2ZSwgdm9pZCAwLCBlLnNraXBEaXJlY3RvcnkpO1xufSk7XG5cbmV4cG9ydCB7IHQgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-open-002ab408.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-open-002ab408.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ t)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nconst e = e => __awaiter(void 0, void 0, void 0, function* () {\n const t = yield e.getFile();\n return t.handle = e, t;\n});\n\nvar t = (t = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) || (t = [t]);\n const i = [];\n t.forEach((e, t) => {\n i[t] = {\n description: e.description || \"\",\n accept: {}\n }, e.mimeTypes ? e.mimeTypes.map(a => {\n i[t].accept[a] = e.extensions || [];\n }) : i[t].accept[\"*/*\"] = e.extensions || [];\n });\n const a = yield window.showOpenFilePicker({\n id: t[0].id,\n startIn: t[0].startIn,\n types: i,\n multiple: t[0].multiple || !1,\n excludeAcceptAllOption: t[0].excludeAcceptAllOption || !1\n }),\n c = yield Promise.all(a.map(e));\n return t[0].multiple ? c : c[0];\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTAwMmFiNDA4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9maWxlLW9wZW4tMDAyYWI0MDguanM/M2JjNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBlID0gZSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgY29uc3QgdCA9IHlpZWxkIGUuZ2V0RmlsZSgpO1xuICByZXR1cm4gdC5oYW5kbGUgPSBlLCB0O1xufSk7XG5cbnZhciB0ID0gKHQgPSBbe31dKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSk7XG4gIGNvbnN0IGkgPSBbXTtcbiAgdC5mb3JFYWNoKChlLCB0KSA9PiB7XG4gICAgaVt0XSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBhY2NlcHQ6IHt9XG4gICAgfSwgZS5taW1lVHlwZXMgPyBlLm1pbWVUeXBlcy5tYXAoYSA9PiB7XG4gICAgICBpW3RdLmFjY2VwdFthXSA9IGUuZXh0ZW5zaW9ucyB8fCBbXTtcbiAgICB9KSA6IGlbdF0uYWNjZXB0W1wiKi8qXCJdID0gZS5leHRlbnNpb25zIHx8IFtdO1xuICB9KTtcbiAgY29uc3QgYSA9IHlpZWxkIHdpbmRvdy5zaG93T3BlbkZpbGVQaWNrZXIoe1xuICAgIGlkOiB0WzBdLmlkLFxuICAgIHN0YXJ0SW46IHRbMF0uc3RhcnRJbixcbiAgICB0eXBlczogaSxcbiAgICBtdWx0aXBsZTogdFswXS5tdWx0aXBsZSB8fCAhMSxcbiAgICBleGNsdWRlQWNjZXB0QWxsT3B0aW9uOiB0WzBdLmV4Y2x1ZGVBY2NlcHRBbGxPcHRpb24gfHwgITFcbiAgfSksXG4gICAgICAgIGMgPSB5aWVsZCBQcm9taXNlLmFsbChhLm1hcChlKSk7XG4gIHJldHVybiB0WzBdLm11bHRpcGxlID8gYyA6IGNbMF07XG59KTtcblxuZXhwb3J0IHsgdCBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-open-002ab408.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-open-7c801643.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-open-7c801643.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e = [{}]) => __awaiter(void 0, void 0, void 0, function* () {\n return Array.isArray(e) || (e = [e]), new Promise((t, n) => {\n const a = document.createElement(\"input\");\n a.type = \"file\";\n const i = [...e.map(e => e.mimeTypes || []), ...e.map(e => e.extensions || [])].join();\n a.multiple = e[0].multiple || !1, a.accept = i || \"\";\n\n const c = e => {\n \"function\" == typeof l && l(), t(e);\n },\n l = e[0].legacySetup && e[0].legacySetup(c, () => l(n), a);\n\n a.addEventListener(\"change\", () => {\n c(a.multiple ? Array.from(a.files) : a.files[0]);\n }), a.click();\n });\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTdjODAxNjQzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1vcGVuLTdjODAxNjQzLmpzPzU3OGIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSA9IFt7fV0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKSB8fCAoZSA9IFtlXSksIG5ldyBQcm9taXNlKCh0LCBuKSA9PiB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBhLnR5cGUgPSBcImZpbGVcIjtcbiAgICBjb25zdCBpID0gWy4uLmUubWFwKGUgPT4gZS5taW1lVHlwZXMgfHwgW10pLCAuLi5lLm1hcChlID0+IGUuZXh0ZW5zaW9ucyB8fCBbXSldLmpvaW4oKTtcbiAgICBhLm11bHRpcGxlID0gZVswXS5tdWx0aXBsZSB8fCAhMSwgYS5hY2NlcHQgPSBpIHx8IFwiXCI7XG5cbiAgICBjb25zdCBjID0gZSA9PiB7XG4gICAgICBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGwgJiYgbCgpLCB0KGUpO1xuICAgIH0sXG4gICAgICAgICAgbCA9IGVbMF0ubGVnYWN5U2V0dXAgJiYgZVswXS5sZWdhY3lTZXR1cChjLCAoKSA9PiBsKG4pLCBhKTtcblxuICAgIGEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoKSA9PiB7XG4gICAgICBjKGEubXVsdGlwbGUgPyBBcnJheS5mcm9tKGEuZmlsZXMpIDogYS5maWxlc1swXSk7XG4gICAgfSksIGEuY2xpY2soKTtcbiAgfSk7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-open-7c801643.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-save-3189631c.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-save-3189631c.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e, t = {}) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) && (t = t[0]);\n const n = document.createElement(\"a\");\n let a = e;\n \"body\" in e && (a = yield function (e, t) {\n return __awaiter(this, void 0, void 0, function* () {\n const n = e.getReader(),\n a = new ReadableStream({\n start: e => function t() {\n return __awaiter(this, void 0, void 0, function* () {\n return n.read().then(({\n done: n,\n value: a\n }) => {\n if (!n) return e.enqueue(a), t();\n e.close();\n });\n });\n }()\n }),\n r = new Response(a),\n c = yield r.blob();\n return n.releaseLock(), new Blob([c], {\n type: t\n });\n });\n }(e.body, e.headers.get(\"content-type\"))), n.download = t.fileName || \"Untitled\", n.href = URL.createObjectURL(yield a);\n\n const r = () => {\n \"function\" == typeof c && c();\n },\n c = t.legacySetup && t.legacySetup(r, () => c(reject), n);\n\n return n.addEventListener(\"click\", () => {\n setTimeout(() => URL.revokeObjectURL(n.href), 3e4), r();\n }), n.click(), null;\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTMxODk2MzFjLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTMxODk2MzFjLmpzPzU0MGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSwgdCA9IHt9KSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSAmJiAodCA9IHRbMF0pO1xuICBjb25zdCBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gIGxldCBhID0gZTtcbiAgXCJib2R5XCIgaW4gZSAmJiAoYSA9IHlpZWxkIGZ1bmN0aW9uIChlLCB0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgIGNvbnN0IG4gPSBlLmdldFJlYWRlcigpLFxuICAgICAgICAgICAgYSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHN0YXJ0OiBlID0+IGZ1bmN0aW9uIHQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHJldHVybiBuLnJlYWQoKS50aGVuKCh7XG4gICAgICAgICAgICAgIGRvbmU6IG4sXG4gICAgICAgICAgICAgIHZhbHVlOiBhXG4gICAgICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbikgcmV0dXJuIGUuZW5xdWV1ZShhKSwgdCgpO1xuICAgICAgICAgICAgICBlLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSgpXG4gICAgICB9KSxcbiAgICAgICAgICAgIHIgPSBuZXcgUmVzcG9uc2UoYSksXG4gICAgICAgICAgICBjID0geWllbGQgci5ibG9iKCk7XG4gICAgICByZXR1cm4gbi5yZWxlYXNlTG9jaygpLCBuZXcgQmxvYihbY10sIHtcbiAgICAgICAgdHlwZTogdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0oZS5ib2R5LCBlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpKSksIG4uZG93bmxvYWQgPSB0LmZpbGVOYW1lIHx8IFwiVW50aXRsZWRcIiwgbi5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTCh5aWVsZCBhKTtcblxuICBjb25zdCByID0gKCkgPT4ge1xuICAgIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgYyAmJiBjKCk7XG4gIH0sXG4gICAgICAgIGMgPSB0LmxlZ2FjeVNldHVwICYmIHQubGVnYWN5U2V0dXAociwgKCkgPT4gYyhyZWplY3QpLCBuKTtcblxuICByZXR1cm4gbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpLCAzZTQpLCByKCk7XG4gIH0pLCBuLmNsaWNrKCksIG51bGw7XG59KTtcblxuZXhwb3J0IHsgZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-save-3189631c.js\n"); + +/***/ }), + +/***/ "../../../node_modules/browser-fs-access/dist/file-save-745eba88.js": +/*!**************************************************************************!*\ + !*** ../../../node_modules/browser-fs-access/dist/file-save-745eba88.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar e = (e, t = [{}], a = null, i = !1, n = null) => __awaiter(void 0, void 0, void 0, function* () {\n Array.isArray(t) || (t = [t]), t[0].fileName = t[0].fileName || \"Untitled\";\n const s = [];\n let c = null;\n if (e instanceof Blob && e.type ? c = e.type : e.headers && e.headers.get(\"content-type\") && (c = e.headers.get(\"content-type\")), t.forEach((e, t) => {\n s[t] = {\n description: e.description || \"\",\n accept: {}\n }, e.mimeTypes ? (0 === t && c && e.mimeTypes.push(c), e.mimeTypes.map(a => {\n s[t].accept[a] = e.extensions || [];\n })) : c && (s[t].accept[c] = e.extensions || []);\n }), a) try {\n yield a.getFile();\n } catch (e) {\n if (a = null, i) throw e;\n }\n const r = a || (yield window.showSaveFilePicker({\n suggestedName: t[0].fileName,\n id: t[0].id,\n startIn: t[0].startIn,\n types: s,\n excludeAcceptAllOption: t[0].excludeAcceptAllOption || !1\n }));\n !a && n && n();\n const l = yield r.createWritable();\n\n if (\"stream\" in e) {\n const t = e.stream();\n return yield t.pipeTo(l), r;\n }\n\n return \"body\" in e ? (yield e.body.pipeTo(l), r) : (yield l.write(yield e), yield l.close(), r);\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTc0NWViYTg4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvZmlsZS1zYXZlLTc0NWViYTg4LmpzPzIzYTgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxudmFyIGUgPSAoZSwgdCA9IFt7fV0sIGEgPSBudWxsLCBpID0gITEsIG4gPSBudWxsKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgQXJyYXkuaXNBcnJheSh0KSB8fCAodCA9IFt0XSksIHRbMF0uZmlsZU5hbWUgPSB0WzBdLmZpbGVOYW1lIHx8IFwiVW50aXRsZWRcIjtcbiAgY29uc3QgcyA9IFtdO1xuICBsZXQgYyA9IG51bGw7XG4gIGlmIChlIGluc3RhbmNlb2YgQmxvYiAmJiBlLnR5cGUgPyBjID0gZS50eXBlIDogZS5oZWFkZXJzICYmIGUuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIikgJiYgKGMgPSBlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpKSwgdC5mb3JFYWNoKChlLCB0KSA9PiB7XG4gICAgc1t0XSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICBhY2NlcHQ6IHt9XG4gICAgfSwgZS5taW1lVHlwZXMgPyAoMCA9PT0gdCAmJiBjICYmIGUubWltZVR5cGVzLnB1c2goYyksIGUubWltZVR5cGVzLm1hcChhID0+IHtcbiAgICAgIHNbdF0uYWNjZXB0W2FdID0gZS5leHRlbnNpb25zIHx8IFtdO1xuICAgIH0pKSA6IGMgJiYgKHNbdF0uYWNjZXB0W2NdID0gZS5leHRlbnNpb25zIHx8IFtdKTtcbiAgfSksIGEpIHRyeSB7XG4gICAgeWllbGQgYS5nZXRGaWxlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoYSA9IG51bGwsIGkpIHRocm93IGU7XG4gIH1cbiAgY29uc3QgciA9IGEgfHwgKHlpZWxkIHdpbmRvdy5zaG93U2F2ZUZpbGVQaWNrZXIoe1xuICAgIHN1Z2dlc3RlZE5hbWU6IHRbMF0uZmlsZU5hbWUsXG4gICAgaWQ6IHRbMF0uaWQsXG4gICAgc3RhcnRJbjogdFswXS5zdGFydEluLFxuICAgIHR5cGVzOiBzLFxuICAgIGV4Y2x1ZGVBY2NlcHRBbGxPcHRpb246IHRbMF0uZXhjbHVkZUFjY2VwdEFsbE9wdGlvbiB8fCAhMVxuICB9KSk7XG4gICFhICYmIG4gJiYgbigpO1xuICBjb25zdCBsID0geWllbGQgci5jcmVhdGVXcml0YWJsZSgpO1xuXG4gIGlmIChcInN0cmVhbVwiIGluIGUpIHtcbiAgICBjb25zdCB0ID0gZS5zdHJlYW0oKTtcbiAgICByZXR1cm4geWllbGQgdC5waXBlVG8obCksIHI7XG4gIH1cblxuICByZXR1cm4gXCJib2R5XCIgaW4gZSA/ICh5aWVsZCBlLmJvZHkucGlwZVRvKGwpLCByKSA6ICh5aWVsZCBsLndyaXRlKHlpZWxkIGUpLCB5aWVsZCBsLmNsb3NlKCksIHIpO1xufSk7XG5cbmV4cG9ydCB7IGUgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/file-save-745eba88.js\n"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 new file mode 100644 index 0000000..751ba1c Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Bold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 new file mode 100644 index 0000000..d5d809a Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Medium.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 b/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 new file mode 100644 index 0000000..e17d6ec Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-Regular.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 b/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 new file mode 100644 index 0000000..d17aa74 Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Assistant-SemiBold.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Cascadia.woff2 b/public/excalidraw/excalidraw-assets/Cascadia.woff2 new file mode 100644 index 0000000..b2eae9f Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Cascadia.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/Virgil.woff2 b/public/excalidraw/excalidraw-assets/Virgil.woff2 new file mode 100644 index 0000000..cb22225 Binary files /dev/null and b/public/excalidraw/excalidraw-assets/Virgil.woff2 differ diff --git a/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js b/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js new file mode 100644 index 0000000..0d382d9 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ar-SA-json-db7c644ccbeb85d54a47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2091],{7822:function(e){e.exports=JSON.parse('{"labels":{"paste":"لصق","pasteAsPlaintext":"اللصق كنص عادي","pasteCharts":"لصق الرسوم البيانية","selectAll":"تحديد الكل","multiSelect":"إضافة عنصر للتحديد","moveCanvas":"نقل لوح الرسم","cut":"قص","copy":"نسخ","copyAsPng":"نسخ إلى الحافظة بصيغة PNG","copyAsSvg":"نسخ إلى الحافظة بصيغة SVG","copyText":"نسخ إلى الحافظة كنص","bringForward":"جلب للأمام","sendToBack":"أرسل للخلف","bringToFront":"أحضر للأمام","sendBackward":"أرسل للخلف","delete":"حذف","copyStyles":"نسخ الأنماط","pasteStyles":"لصق الأنماط","stroke":"الخط","background":"الخلفية","fill":"التعبئة","strokeWidth":"سُمك الخط","strokeStyle":"نمط الخط","strokeStyle_solid":"متصل","strokeStyle_dashed":"متقطع","strokeStyle_dotted":"منقط","sloppiness":"الإمالة","opacity":"الشفافية","textAlign":"محاذاة النص","edges":"الحواف","sharp":"حادة","round":"دائرية","arrowheads":"رؤوس الأسهم","arrowhead_none":"لا شيء","arrowhead_arrow":"سهم","arrowhead_bar":"شريط","arrowhead_dot":"نقطة","arrowhead_triangle":"مثلث","fontSize":"حجم الخط","fontFamily":"نوع الخط","addWatermark":"إضافة \\"مصنوعة بواسطة Excalidraw\\"","handDrawn":"رسم باليد","normal":"عادي","code":"رمز","small":"صغير","medium":"متوسط","large":"كبير","veryLarge":"كبير جدا","solid":"كامل","hachure":"خطوط","zigzag":"متعرج","crossHatch":"خطوط متقطعة","thin":"نحيف","bold":"داكن","left":"الـيسار","center":"وسط","right":"يمين","extraBold":"عريض","architect":"معماري","artist":"رسام","cartoonist":"كرتوني","fileTitle":"إسم الملف","colorPicker":"منتقي اللون","canvasColors":"تستخدم على القماش","canvasBackground":"خلفية اللوحة","drawingCanvas":"لوحة الرسم","layers":"الطبقات","actions":"الإجراءات","language":"اللغة","liveCollaboration":"التعاون المباشر...","duplicateSelection":"تكرار","untitled":"غير معنون","name":"الاسم","yourName":"اسمك","madeWithExcalidraw":"مصنوعة بواسطة Excalidraw","group":"تحديد مجموعة","ungroup":"إلغاء تحديد مجموعة","collaborators":"المتعاونون","showGrid":"إظهار الشبكة","addToLibrary":"أضف إلى المكتبة","removeFromLibrary":"حذف من المكتبة","libraryLoadingMessage":"جارٍ تحميل المكتبة…","libraries":"تصفح المكتبات","loadingScene":"جاري تحميل المشهد…","align":"محاذاة","alignTop":"محاذاة إلى اﻷعلى","alignBottom":"محاذاة إلى اﻷسفل","alignLeft":"محاذاة إلى اليسار","alignRight":"محاذاة إلى اليمين","centerVertically":"توسيط عمودي","centerHorizontally":"توسيط أفقي","distributeHorizontally":"التوزيع الأفقي","distributeVertically":"التوزيع عمودياً","flipHorizontal":"قلب عامودي","flipVertical":"قلب أفقي","viewMode":"نمط العرض","share":"مشاركة","showStroke":"إظهار منتقي لون الخط","showBackground":"إظهار منتقي لون الخلفية","toggleTheme":"غير النمط","personalLib":"المكتبة الشخصية","excalidrawLib":"مكتبتنا","decreaseFontSize":"تصغير حجم الخط","increaseFontSize":"تكبير حجم الخط","unbindText":"فك ربط النص","bindText":"ربط النص بالحاوية","createContainerFromText":"نص مغلف في حاوية","link":{"edit":"تعديل الرابط","editEmbed":"تحرير الرابط وإدراجه","create":"إنشاء رابط","createEmbed":"إنشاء رابط و إدراجه","label":"رابط","labelEmbed":"رابط و إدراج","empty":"لم يتم تعيين رابط"},"lineEditor":{"edit":"تحرير السطر","exit":"الخروج من المُحرر"},"elementLock":{"lock":"قفل","unlock":"فتح","lockAll":"قفل الكل","unlockAll":"فتح الكل"},"statusPublished":"نُشر","sidebarLock":"إبقاء الشريط الجانبي مفتوح","selectAllElementsInFrame":"تحديد جميع العناصر في الإطار","removeAllElementsFromFrame":"إزالة جميع العناصر من الإطار","eyeDropper":"اختيار اللون من القماش"},"library":{"noItems":"لا توجد عناصر أضيفت بعد...","hint_emptyLibrary":"حدد عنصر على القماش لإضافته هنا، أو تثبيت مكتبة من المستودع العام أدناه.","hint_emptyPrivateLibrary":"حدد عنصر على القماش لإضافته هنا."},"buttons":{"clearReset":"إعادة تعيين اللوحة","exportJSON":"صدر الملف","exportImage":"تصدير الصورة...","export":"حفظ إلى...","copyToClipboard":"نسخ إلى الحافظة","save":"احفظ للملف الحالي","saveAs":"حفظ كـ","load":"فتح","getShareableLink":"احصل على رابط المشاركة","close":"غلق","selectLanguage":"اختر اللغة","scrollBackToContent":"الرجوع إلى المحتوى","zoomIn":"تكبير","zoomOut":"تصغير","resetZoom":"إعادة تعيين الشاشة","menu":"القائمة","done":"تم","edit":"تعديل","undo":"تراجع","redo":"إعادة تنفيذ","resetLibrary":"إعادة ضبط المكتبة","createNewRoom":"إنشاء غرفة جديدة","fullScreen":"شاشة كاملة","darkMode":"الوضع المظلم","lightMode":"الوضع المضيء","zenMode":"وضع التأمل","objectsSnapMode":"التقط إلى العناصر","exitZenMode":"إلغاء الوضع الليلى","cancel":"إلغاء","clear":"مسح","remove":"إزالة","embed":"تبديل الإدراج","publishLibrary":"انشر","submit":"أرسل","confirm":"تأكيد","embeddableInteractionButton":"اضغط للتفاعل"},"alerts":{"clearReset":"هذا سيُزيل كامل اللوحة. هل أنت متأكد؟","couldNotCreateShareableLink":"تعذر إنشاء رابطة المشاركة.","couldNotCreateShareableLinkTooBig":"تعذر إنشاء رابط قابل للمشاركة: المشهد كبير جدًا","couldNotLoadInvalidFile":"تعذر التحميل، الملف غير صالح","importBackendFailed":"فشل الاستيراد من الخادوم.","cannotExportEmptyCanvas":"لا يمكن تصدير لوحة فارغة.","couldNotCopyToClipboard":"تعذر النسخ إلى الحافظة.","decryptFailed":"تعذر فك تشفير البيانات.","uploadedSecurly":"تم تأمين التحميل بتشفير النهاية إلى النهاية، مما يعني أن خادوم Excalidraw والأطراف الثالثة لا يمكنها قراءة المحتوى.","loadSceneOverridePrompt":"تحميل الرسم الخارجي سيحل محل المحتوى الموجود لديك. هل ترغب في المتابعة؟","collabStopOverridePrompt":"إيقاف الجلسة سيؤدي إلى الكتابة فوق رسومك السابقة المخزنة داخليا. هل أنت متأكد؟\\n\\n(إذا كنت ترغب في الاحتفاظ برسمك المخزن داخليا، ببساطة أغلق علامة تبويب المتصفح بدلاً من ذلك.)","errorAddingToLibrary":"تعذر إضافة العنصر للمكتبة","errorRemovingFromLibrary":"تعذر إزالة العنصر من المكتبة","confirmAddLibrary":"هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟","imageDoesNotContainScene":"يبدو أن هذه الصورة لا تحتوي على أي بيانات مشهد. هل قمت بتمكين تضمين المشهد أثناء التصدير؟","cannotRestoreFromImage":"تعذر استعادة المشهد من ملف الصورة","invalidSceneUrl":"تعذر استيراد المشهد من عنوان URL المتوفر. إما أنها مشوهة، أو لا تحتوي على بيانات Excalidraw JSON صالحة.","resetLibrary":"هذا سوف يمسح مكتبتك. هل أنت متأكد؟","removeItemsFromsLibrary":"حذف {{count}} عنصر (عناصر) من المكتبة؟","invalidEncryptionKey":"مفتاح التشفير يجب أن يكون من 22 حرفاً. التعاون المباشر معطل.","collabOfflineWarning":"لا يوجد اتصال بالانترنت.\\nلن يتم حفظ التغييرات التي قمت بها!"},"errors":{"unsupportedFileType":"نوع الملف غير مدعوم.","imageInsertError":"تعذر إدراج الصورة. حاول مرة أخرى لاحقاً...","fileTooBig":"الملف كبير جداً. الحد الأقصى المسموح به للحجم هو {{maxSize}}.","svgImageInsertError":"تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.","failedToFetchImage":"","invalidSVGString":"SVG غير صالح.","cannotResolveCollabServer":"تعذر الاتصال بخادم التعاون. الرجاء إعادة تحميل الصفحة والمحاولة مرة أخرى.","importLibraryError":"تعذر تحميل المكتبة","collabSaveFailed":"تعذر الحفظ في قاعدة البيانات. إذا استمرت المشاكل، يفضل أن تحفظ ملفك محليا كي لا تفقد عملك.","collabSaveFailed_sizeExceeded":"تعذر الحفظ في قاعدة البيانات، يبدو أن القماش كبير للغاية، يفضّل حفظ الملف محليا كي لا تفقد عملك.","brave_measure_text_error":{"line1":"يبدو أنك تستخدم متصفح Brave مع إعداد حظر صارم لتتبع البصمة.","line2":"قد يؤدي هذا إلى كسر عناصر النص في الرسومات الخاصة بك.","line3":"من المستحسن إلغاء تفعيل هذا الإعداد. يمكنك اتباع هذه الخطوات لفعل ذلك.","line4":"إذا لم يصلح تعطيل هذا الإعداد طريقة عرض النصوص، الرجاء كتابة بلاغ على حسابنا في GitHub، أو راسلنا على Discord"},"libraryElementTypeError":{"embeddable":"لا يمكن إضافة العناصر القابلة للتضمين في المكتبة.","image":"سوف يتم دعم إضافة صور إلى المكتبة قريباً!"}},"toolBar":{"selection":"تحديد","image":"إدراج صورة","rectangle":"مستطيل","diamond":"مضلع","ellipse":"دائرة","arrow":"سهم","line":"خط","freedraw":"رسم","text":"نص","library":"مكتبة","lock":"الحفاظ على أداة التحديد نشطة بعد الرسم","penMode":"وضع القلم - امنع اللمس","link":"إضافة/تحديث الرابط للشكل المحدد","eraser":"ممحاة","frame":"أداة الإطار","embeddable":"تضمين ويب","laser":"مؤشر ليزر","hand":"يد (أداة الإزاحة)","extraTools":"المزيد من أﻷدوات"},"headings":{"canvasActions":"إجراءات اللوحة","selectedShapeActions":"إجراءات الشكل المحدد","shapes":"الأشكال"},"hints":{"canvasPanning":"لتحريك القماش، اضغط على عجلة الفأرة أو مفتاح المسافة أثناء السحب، أو استخدم أداة اليد","linearElement":"انقر لبدء نقاط متعددة، اسحب لخط واحد","freeDraw":"انقر واسحب، افرج عند الانتهاء","text":"نصيحة: يمكنك أيضًا إضافة نص بالنقر المزدوج في أي مكان بأداة الاختيار","embeddable":"اضغط مع السحب لإنشاء موقع ويب مضمّن","text_selected":"انقر نقراً مزدوجاً أو اضغط ادخال لتعديل النص","text_editing":"اضغط على Esc أو (Ctrl أو Cmd) + Enter لإنهاء التعديل","linearElementMulti":"انقر فوق النقطة الأخيرة أو اضغط على Esc أو Enter للإنهاء","lockAngle":"يمكنك تقييد الزاوية بالضغط على SHIFT","resize":"يمكنك تقييد النسب بالضغط على SHIFT أثناء تغيير الحجم،\\nاضغط على ALT لتغيير الحجم من المركز","resizeImage":"يمكنك تغيير الحجم بحرية بالضغط بأستمرار على SHIFT،\\nاضغط بأستمرار على ALT أيضا لتغيير الحجم من المركز","rotate":"يمكنك تقييد الزوايا من خلال الضغط على SHIFT أثناء الدوران","lineEditor_info":"اضغط على مفتاح (Ctrl أو Cmd) و انقر بشكل مزدوج، أو اضغط على مفتاحي (Ctrl أو Cmd) و (Enter) لتعديل النقاط","lineEditor_pointSelected":"اضغط على حذف لإزالة النقطة (النِّقَاط)، Ctrl/Cmd+D للتكرار، أو اسحب للانتقال","lineEditor_nothingSelected":"اختر نقطة لتعديلها (اضغط على SHIFT لتحديد عدة نِقَاط),\\nأو اضغط على ALT و انقر بالفأرة لإضافة نِقَاط جديدة","placeImage":"انقر لوضع الصورة، أو انقر واسحب لتعيين حجمها يدوياً","publishLibrary":"نشر مكتبتك","bindTextToElement":"اضغط على إدخال لإضافة نص","deepBoxSelect":"اضغط على Ctrl\\\\Cmd للاختيار العميق، ولمنع السحب","eraserRevert":"اضغط على Alt لاستعادة العناصر المعلَّمة للحذف","firefox_clipboard_write":"يمكن على الأرجح تمكين هذه الميزة عن طريق تعيين علم \\"dom.events.asyncClipboard.clipboardItem\\" إلى \\"true\\". لتغيير أعلام المتصفح في Firefox، قم بزيارة صفحة \\"about:config\\".","disableSnapping":"اضغط على Ctrl أو Cmd لتعطيل الالتقاط"},"canvasError":{"cannotShowPreview":"تعذر عرض المعاينة","canvasTooBig":"قد تكون اللوحة كبيرة جداً.","canvasTooBigTip":"نصيحة: حاول تحريك العناصر البعيدة بشكل أقرب قليلاً."},"errorSplash":{"headingMain":"حدث خطأ. حاول .","clearCanvasMessage":"إذا لم تعمل إعادة التحميل، حاول مرة أخرى ","clearCanvasCaveat":" هذا سيؤدي إلى فقدان العمل ","trackedToSentry":"تم تتبع الخطأ في المعرف {{eventId}} على نظامنا.","openIssueMessage":"حرصنا على عدم إضافة معلومات المشهد في بلاغ الخطأ. في حال كون مشهدك لا يحمل أي معلومات خاصة نرجو المتابعة على . نرجو إضافة المعلومات أدناه بنسخها ولصقها في محتوى البلاغ على GitHub.","sceneContent":"محتوى المشهد:"},"roomDialog":{"desc_intro":"يمكنك دعوة الآخرين لمشاركتك نفس الجلسة التي تعمل عليها.","desc_privacy":"لا تقلق، الجلسة تستخدم التشفير من النهاية إلى النهاية، لذلك فإن أي شيء ترسمه سيبقى خاصاً. لن يتمكن حتى الخادوم الخاص بنا من رؤية ما توصلت إليه.","button_startSession":"بدء الجلسة","button_stopSession":"إيقاف الجلسة","desc_inProgressIntro":"تجري الآن المشاركة الحية.","desc_shareLink":"شارك هذا الرابط مع أي شخص تريده أن يشاركك الجلسة:","desc_exitSession":"إيقاف الجلسة سيؤدي إلى قطع الاتصال الخاص بك من الغرفة، ولكن ستتمكن من مواصلة العمل مع المشهد، محليا. لاحظ أن هذا لن يؤثر على الأشخاص الآخرين، و سيظلون قادرين على التعاون في إصدارهم.","shareTitle":"الانضمام إلى جلسة تعاون حية على Excalidraw"},"errorDialog":{"title":"خطأ"},"exportDialog":{"disk_title":"حفظ الملف للجهاز","disk_details":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً.","disk_button":"إحفظ لملف","link_title":"رابط قابل للمشاركة","link_details":"صدر الملف للمشاهدة فقط.","link_button":"التصدير كرابط","excalidrawplus_description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك.","excalidrawplus_button":"تصدير","excalidrawplus_exportError":"تعذر التصدير إلى +Excalidraw في الوقت الحالي..."},"helpDialog":{"blog":"اقرأ مدونتنا","click":"انقر","deepSelect":"تحديد عميق","deepBoxSelect":"تحديد عميق داخل المربع، ومنع السحب","curvedArrow":"سهم مائل","curvedLine":"خط مائل","documentation":"دليل الاستخدام","doubleClick":"انقر مرتين","drag":"اسحب","editor":"المحرر","editLineArrowPoints":"تحرير سطر/نقاط سهم","editText":"تعديل النص / إضافة تسمية","github":"عثرت على مشكلة؟ إرسال","howto":"اتبع التعليمات","or":"أو","preventBinding":"منع ارتبط السهم","tools":"الأدوات","shortcuts":"اختصارات لوحة المفاتيح","textFinish":"إنهاء التعديل (محرر النص)","textNewLine":"أضف سطر جديد (محرر نص)","title":"المساعدة","view":"عرض","zoomToFit":"تكبير للملائمة","zoomToSelection":"تكبير للعنصر المحدد","toggleElementLock":"إغلاق/فتح المحدد","movePageUpDown":"نقل الصفحة أعلى/أسفل","movePageLeftRight":"نقل الصفحة يسار/يمين"},"clearCanvasDialog":{"title":"مسح اللوحة"},"publishDialog":{"title":"نشر المكتبة","itemName":"إسم العنصر","authorName":"إسم المؤلف","githubUsername":"اسم المستخدم في جيت هب","twitterUsername":"اسم المستخدم في تويتر","libraryName":"اسم المكتبة","libraryDesc":"وصف المكتبة","website":"الموقع","placeholder":{"authorName":"اسمك أو اسم المستخدم","libraryName":"اسم مكتبتك","libraryDesc":"وصف مكتبتك لمساعدة الناس على فهم استخدامها","githubHandle":"معالج GitHub (اختياري)، حتى تتمكن من تحرير المكتبة عند إرسالها للمراجعة","twitterHandle":"اسم مستخدم تويتر (اختياري)، حتى نعرف من الذي سيتم الإشارة إليه عند الترويج عبر تويتر","website":"رابط إلى موقعك الشخصي أو في مكان آخر (اختياري)"},"errors":{"required":"مطلوب","website":"أدخل عنوان URL صالح"},"noteDescription":"تقديم مكتبتك لتضمينها في مستودع المكتبة العامة لأشخاص آخرين لاستخدامها في رسومهم.","noteGuidelines":"تحتاج المكتبة إلى الموافقة أولا. يرجى قراءة المعايير قبل تقديمها. سوف تحتاج إلى حساب GitHub للتواصل وإجراء التغييرات عند الطلب، ولكن ليس مطلوبا بشكل صارم.","noteLicense":"تقديمك يعني موافقتك على نشر المكتبة المقدمة تحت MIT ترخيص، ما يعني أن لأي أحد الحق في استخدامها دون قيود.","noteItems":"يجب أن يكون لكل عنصر مكتبة اسمه الخاص حتى يكون قابلاً للتصفية. سيتم تضمين عناصر المكتبة التالية:","atleastOneLibItem":"يرجى تحديد عنصر مكتبة واحد على الأقل للبدء","republishWarning":"ملاحظة: بعض العناصر المحددة معينة على أنه نشرها أو تقديمها من قبل. يجب عليك فقط إعادة إرسال العناصر عند تحديث مكتبة موجودة أو إرسالها."},"publishSuccessDialog":{"title":"تم إرسال المكتبة","content":"شكرا لك {{authorName}}. لقد تم إرسال مكتبتك للمراجعة. يمكنك تتبع الحالة"},"confirmDialog":{"resetLibrary":"إعادة ضبط المكتبة","removeItemsFromLib":"إزالة العناصر المحددة من المكتبة"},"imageExportDialog":{"header":"تصدير الصورة","label":{"withBackground":"الخلفية","onlySelected":"المحدد فقط","darkMode":"الوضع الداكن","embedScene":"تضمين المشهد","scale":"الحجم","padding":"الهوامش"},"tooltip":{"embedScene":"سيتم حفظ بيانات المشهد في ملف PNG/SVG المصدّر بحيث يمكن استعادة المشهد منه.\\nسيزيد حجم الملف المصدر."},"title":{"exportToPng":"تصدير بصيغة PNG","exportToSvg":"تصدير بصيغة SVG","copyPngToClipboard":"نسخ الـ PNG إلى الحافظة"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"نسخ إلى الحافظة"}},"encrypted":{"tooltip":"رسوماتك مشفرة من النهاية إلى النهاية حتى أن خوادم Excalidraw لن تراها أبدا.","link":"مشاركة المدونة في التشفير من النهاية إلى النهاية في Excalidraw"},"stats":{"angle":"الزاوية","element":"عنصر","elements":"العناصر","height":"الارتفاع","scene":"المشهد","selected":"المحدد","storage":"التخزين","title":"إحصائيات للمهووسين","total":"المجموع","version":"الإصدار","versionCopy":"انقر للنسخ","versionNotAvailable":"الإصدار غير متوفر","width":"العرض"},"toast":{"addedToLibrary":"تمت الاضافة الى المكتبة!","copyStyles":"نسخت الانماط.","copyToClipboard":"نسخ إلى الحافظة.","copyToClipboardAsPng":"تم نسخ {{exportSelection}} إلى الحافظة بصيغة PNG\\n({{exportColorScheme}})","fileSaved":"تم حفظ الملف.","fileSavedToFilename":"حفظ باسم {filename}","canvas":"لوحة الرسم","selection":"العنصر المحدد","pasteAsSingleElement":"استخدم {{shortcut}} للصق كعنصر واحد،\\nأو لصق في محرر نص موجود","unableToEmbed":"تضمين هذا الرابط غير مسموح حاليًا. افتح بلاغاً على GitHub لطلب عنوان Url القائمة البيضاء","unrecognizedLinkFormat":"الرابط الذي ضمنته لا يتطابق مع التنسيق المتوقع. الرجاء محاولة لصق النص \'المضمن\' المُزوَد من موقع المصدر"},"colors":{"transparent":"شفاف","black":"أسود","white":"أبيض","red":"أحمر","pink":"وردي","grape":"عنبي","violet":"بنفسجي","gray":"رمادي","blue":"أزرق","cyan":"سماوي","teal":"أزرق مخضر","green":"أخضر","yellow":"أصفر","orange":"برتقالي","bronze":"برونزي"},"welcomeScreen":{"app":{"center_heading":"جميع بياناتك محفوظة محليا في المتصفح الخاص بك.","center_heading_plus":"هل تريد الذهاب إلى Excalidraw+ بدلاً من ذلك؟","menuHint":"التصدير والتفضيلات واللغات ..."},"defaults":{"menuHint":"التصدير والتفضيلات وغيرها...","center_heading":"الرسم البياني التصويري. بشكل مبسط.","toolbarHint":"اختر أداة و ابدأ الرسم!","helpHint":"الاختصارات و المساعدة"}},"colorPicker":{"mostUsedCustomColors":"الألوان المخصصة الأكثر استخداما","colors":"الألوان","shades":"الدرجات","hexCode":"رمز Hex","noShades":"لا تتوفر درجات لهذا اللون"},"overwriteConfirm":{"action":{"exportToImage":{"title":"تصدير كصورة","button":"تصدير كصورة","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"saveToDisk":{"title":"حفظ الملف للجهاز","button":"حفظ الملف للجهاز","description":"تصدير بيانات المشهد إلى ملف يمكنك الاستيراد منه لاحقاً."},"excalidrawPlus":{"title":"Excalidraw+","button":"تصدير إلى Excalidraw+","description":"حفظ المشهد إلى مساحة العمل +Excalidraw الخاصة بك."}},"modal":{"loadFromFile":{"title":"تحميل من ملف","button":"تحميل من ملف","description":"سيتم التحميل من الملف استبدال المحتوى الموجود.

يمكنك النسخ الاحتياطي لرسمك أولاً باستخدام أحد الخيارات أدناه."},"shareableLink":{"title":"تحميل من رابط","button":"استبدال محتواي","description":"سيتسبب تحميل رسمة خارجية باستبدال محتواك الموجود حالياً.

بإمكانك إجراء النسخ الاحتياطي لرسمتك الحالية باستخدام أحد الخيارات أدناه."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js b/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js new file mode 100644 index 0000000..4a6f2aa --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/az-AZ-json-08a6de50238dbb21926c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4568],{9753:function(e){e.exports=JSON.parse('{"labels":{"paste":"Yapışdır","pasteAsPlaintext":"Düz mətn kimi yapışdırın","pasteCharts":"Diaqramları yapışdırın","selectAll":"Hamısını seç","multiSelect":"Seçimə element əlavə edin","moveCanvas":"Kanvası köçürün","cut":"Kəs","copy":"Kopyala","copyAsPng":"PNG olaraq panoya kopyala","copyAsSvg":"SVG olaraq panoya kopyala","copyText":"Mətn olaraq panoya kopyala","bringForward":"Önə daşı","sendToBack":"Geriyə göndərin","bringToFront":"Önə gətirin","sendBackward":"Geriyə göndərin","delete":"Sil","copyStyles":"Stilləri kopyalayın","pasteStyles":"Stilləri yapışdırın","stroke":"Strok rəngi","background":"Arxa fon","fill":"Doldur","strokeWidth":"Strok eni","strokeStyle":"Strok stili","strokeStyle_solid":"Solid","strokeStyle_dashed":"Kəsik","strokeStyle_dotted":"Nöqtəli","sloppiness":"Səliqəsizlik","opacity":"Şəffaflıq","textAlign":"Mətni uyğunlaşdır","edges":"Kənarlar","sharp":"Kəskin","round":"Dəyirmi","arrowheads":"Ox ucları","arrowhead_none":"Heç biri","arrowhead_arrow":"Ox","arrowhead_bar":"Çubuq","arrowhead_dot":"Nöqtə","arrowhead_triangle":"Üçbucaq","fontSize":"Şrift ölçüsü","fontFamily":"Şrift qrupu","addWatermark":"\\"Made with Excalidraw\\" əlavə et","handDrawn":"Əllə çəkilmiş","normal":"Normal","code":"Kod","small":"Kiçik","medium":"Orta","large":"Böyük","veryLarge":"Çox böyük","solid":"Solid","hachure":"Ştrix","zigzag":"Ziqzaq","crossHatch":"Çarpaz dəlik","thin":"İncə","bold":"Qalın","left":"Sol","center":"Mərkəz","right":"Sağ","extraBold":"Ekstra qalın","architect":"Memar","artist":"Rəssam","cartoonist":"Karikaturaçı","fileTitle":"Fayl adı","colorPicker":"Rəng seçən","canvasColors":"Kanvas üzərində istifadə olunur","canvasBackground":"Kanvas arxa fonu","drawingCanvas":"Kanvas çəkmək","layers":"Qatlar","actions":"Hərəkətlər","language":"Dil","liveCollaboration":"Canlı əməkdaşlıq...","duplicateSelection":"Dublikat","untitled":"Başlıqsız","name":"Ad","yourName":"Adınız","madeWithExcalidraw":"Excalidraw ilə hazırlanmışdır","group":"Qrup şəklində seçim","ungroup":"Qrupsuz seçim","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js b/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js new file mode 100644 index 0000000..f44684c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/bg-BG-json-42fb0378311f3ade2627.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1628],{1203:function(e){e.exports=JSON.parse('{"labels":{"paste":"Постави","pasteAsPlaintext":"Постави като обикновен текст","pasteCharts":"Постави графики","selectAll":"Маркирай всичко","multiSelect":"Добави елемент към селекция","moveCanvas":"Премести платно","cut":"Изрежи","copy":"Копирай","copyAsPng":"Копиране в клипборда","copyAsSvg":"Копирано в клипборда като SVG","copyText":"","bringForward":"Преместване напред","sendToBack":"Изнасяне назад","bringToFront":"Изнасяне отпред","sendBackward":"Изпрати отзад","delete":"Изтрий","copyStyles":"Копирайте стилове","pasteStyles":"Постави стилове","stroke":"Щрих","background":"Фон","fill":"Наситеност","strokeWidth":"Ширина на щриха","strokeStyle":"Стил на линия","strokeStyle_solid":"Плътен","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Пунктирано","sloppiness":"Небрежност","opacity":"Прозрачност","textAlign":"Подравняване на текста","edges":"Крайща","sharp":"Остър","round":"Закръглено","arrowheads":"Стрелки","arrowhead_none":"Без","arrowhead_arrow":"Стрелка","arrowhead_bar":"Връх на стрелката","arrowhead_dot":"Точка","arrowhead_triangle":"Триъгълник","fontSize":"Размер на шрифта","fontFamily":"Семейство шрифтове","addWatermark":"Добави \\"Направено с Excalidraw\\"","handDrawn":"Нарисувано на ръка","normal":"Нормален","code":"Код","small":"Малък","medium":"Среден","large":"Голям","veryLarge":"Много голям","solid":"Солиден","hachure":"Хералдика","zigzag":"Зигзаг","crossHatch":"Двойно-пресечено","thin":"Тънък","bold":"Ясно очертан","left":"Ляво","center":"Център","right":"Дясно","extraBold":"Много ясно очертан","architect":"Архитект","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Име на файл","colorPicker":"Избор на цвят","canvasColors":"Използван на платно","canvasBackground":"Фон на платно","drawingCanvas":"Платно за рисуване","layers":"Слоеве","actions":"Действия","language":"Език","liveCollaboration":"","duplicateSelection":"Дублирай","untitled":"Неозаглавено","name":"Име","yourName":"Вашето име","madeWithExcalidraw":"Направено с Excalidraw","group":"Групирай селекцията","ungroup":"Спри групирането на селекцията","collaborators":"Сътрудници","showGrid":"Показване на мрежа","addToLibrary":"Добавяне към библиотеката","removeFromLibrary":"Премахване от библиотеката","libraryLoadingMessage":"Зареждане на библиотеката…","libraries":"Разглеждане на библиотеките","loadingScene":"Зареждане на сцена…","align":"Подравняване","alignTop":"Подравняване отгоре","alignBottom":"Подравняване отдолу","alignLeft":"Подравняване отляво","alignRight":"Подравняване отдясно","centerVertically":"Центрирай вертикално","centerHorizontally":"Центрирай хоризонтално","distributeHorizontally":"Разпредели хоризонтално","distributeVertically":"Разпредели вертикално","flipHorizontal":"Хоризонтално обръщане","flipVertical":"Вертикално обръщане","viewMode":"Изглед","share":"Сподели","showStroke":"","showBackground":"","toggleTheme":"Включи тема","personalLib":"Лична Библиотека","excalidrawLib":"Excalidraw Библиотека","decreaseFontSize":"Намали размера на шрифта","increaseFontSize":"Увеличи размера на шрифта","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Редактирай линк","editEmbed":"","create":"","createEmbed":"","label":"Линк","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Заключи","unlock":"Отключи","lockAll":"Заключи всички","unlockAll":"Отключи всички"},"statusPublished":"Публикувани","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Избери цвят от платното"},"library":{"noItems":"Няма добавени неща все още...","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Нулиране на платно","exportJSON":"","exportImage":"","export":"Запази на...","copyToClipboard":"Копиране в клипборда","save":"Запази към текущ файл","saveAs":"Запиши като","load":"Отвори","getShareableLink":"Получаване на връзка за споделяне","close":"Затвори","selectLanguage":"Избор на език","scrollBackToContent":"Превъртете обратно към съдържанието","zoomIn":"Приближаване","zoomOut":"Отдалечаване","resetZoom":"Стандартен мащаб","menu":"Меню","done":"Завършено","edit":"Редактиране","undo":"Отмяна","redo":"Повтори","resetLibrary":"Нулиране на библиотеката","createNewRoom":"Създай нова стая","fullScreen":"На цял екран","darkMode":"Тъмен режим","lightMode":"Светъл режим","zenMode":"Режим Zen","objectsSnapMode":"","exitZenMode":"Спиране на Zen режим","cancel":"Отмени","clear":"Изчисти","remove":"Премахване","embed":"","publishLibrary":"Публикувай","submit":"Изпрати","confirm":"Потвърждаване","embeddableInteractionButton":""},"alerts":{"clearReset":"Това ще изчисти цялото платно. Сигурни ли сте?","couldNotCreateShareableLink":"Връзката не може да бъде създадена.","couldNotCreateShareableLinkTooBig":"Не може да се създаде връзка за споделяне: сцената е твърде голяма","couldNotLoadInvalidFile":"Невалиден файл не може да се зареди","importBackendFailed":"Импортирането от бекенд не беше успешно.","cannotExportEmptyCanvas":"Не може да се експортира празно платно.","couldNotCopyToClipboard":"Не можем да копираме в клипбоарда.","decryptFailed":"Данните не можаха да се дешифрират.","uploadedSecurly":"Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.","loadSceneOverridePrompt":"Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?","collabStopOverridePrompt":"Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?\\n\\n(Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)","errorAddingToLibrary":"Не можем да заредим от библиотеката","errorRemovingFromLibrary":"Не можем да премахнем елемент от библиотеката","confirmAddLibrary":"Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?","imageDoesNotContainScene":"","cannotRestoreFromImage":"Не може да бъде възстановена сцена от този файл","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Изтрий {{count}} елемент(а) от библиотеката?","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Този файлов формат не се поддържа.","imageInsertError":"","fileTooBig":"Файлът е твърде голям. Максималния допустим размер е {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Невалиден SVG.","cannotResolveCollabServer":"","importLibraryError":"Не можем да заредим библиотеката","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"Силно препоръчваме да изключите тази настройка. Можете да следвате тези стъпки за това как да го направите.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Селекция","image":"Вмъкване на изображение","rectangle":"Правоъгълник","diamond":"Диамант","ellipse":"Елипс","arrow":"Стрелка","line":"Линия","freedraw":"Рисуване","text":"Текст","library":"Библиотека","lock":"Поддържайте избрания инструмент активен след рисуване","penMode":"","link":"","eraser":"Гума","frame":"","embeddable":"","laser":"","hand":"","extraTools":"Още инструменти"},"headings":{"canvasActions":"Действия по платното","selectedShapeActions":"Избрани действия","shapes":"Фигури"},"hints":{"canvasPanning":"","linearElement":"Кликнете, за да стартирате няколко точки, плъзнете за една линия","freeDraw":"Натиснете и влачете, пуснете като сте готови","text":"Подсказка: Можете също да добавите текст като натиснете някъде два път с инструмента за селекция","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"Кликнете върху последната точка или натиснете Escape или Enter, за да завършите","lockAngle":"Можете да ограничите ъгъла, като задържите SHIFT","resize":"Може да ограничите при преоразмеряване като задържите SHIFT,\\nзадръжте ALT за преоразмерите през центъра","resizeImage":"","rotate":"Можете да ограничите ъглите, като държите SHIFT, докато се въртите","lineEditor_info":"","lineEditor_pointSelected":"Натиснете Delete за да изтриете точка(и), CtrlOrCmd+D за дуплициране, или извлачете за да преместите","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Натиснете Enter, за да добавите","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Невъзможност за показване на preview","canvasTooBig":"Платното е твърде голямо.","canvasTooBigTip":"Подсказка: пробвайте да приближите далечните елементи по-близко."},"errorSplash":{"headingMain":"Среща грешка. Опитайте ","clearCanvasMessage":"Ако презареждането не работи, опитайте ","clearCanvasCaveat":" Това ще доведе до загуба на работа ","trackedToSentry":"Грешката с идентификатор {{eventId}} беше проследен в нашата система.","openIssueMessage":"Бяхме много предпазливи да не включите информацията за вашата сцена при грешката. Ако сцената ви не е частна, моля, помислете за последващи действия на нашата Моля, включете информация по-долу, като я копирате и добавите в GitHub.","sceneContent":"Съдържание на сцената:"},"roomDialog":{"desc_intro":"Можете да поканите хора на текущата си сцена да си сътрудничат с вас.","desc_privacy":"Не се притеснявайте, сесията използва криптиране от край до край, така че каквото нарисувате ще остане частно. Дори нашият сървър няма да може да види какво предлагате.","button_startSession":"Стартирайте сесията","button_stopSession":"Стоп на сесията","desc_inProgressIntro":"Сесията за сътрудничество на живо е в ход.","desc_shareLink":"Споделете тази връзка с всеки, с когото искате да си сътрудничите:","desc_exitSession":"Спирането на сесията ще ви изключи от стаята, но ще можете да продължите да работите със сцената, локално. Имайте предвид, че това няма да засегне други хора и те все още ще могат да си сътрудничат с тяхната версия.","shareTitle":""},"errorDialog":{"title":"Грешка"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Експорт","excalidrawplus_exportError":""},"helpDialog":{"blog":"Прочетете нашия блог","click":"клик","deepSelect":"","deepBoxSelect":"","curvedArrow":"Извита стрелка","curvedLine":"Извита линия","documentation":"Документация","doubleClick":"двойно-щракване","drag":"плъзнете","editor":"Редактор","editLineArrowPoints":"","editText":"","github":"Намерихте проблем? Изпратете","howto":"Следвайте нашите ръководства","or":"или","preventBinding":"Спри прилепяне на стрелките","tools":"Инструменти","shortcuts":"Клавиши за бърз достъп","textFinish":"Завърши редактиране (текстов редактор)","textNewLine":"Добави нова линия (текстов редактор)","title":"Помощ","view":"Преглед","zoomToFit":"Приближи докато се виждат всички елементи","zoomToSelection":"Приближи селекцията","toggleElementLock":"Заключи/Отключи селекция","movePageUpDown":"Премести страница нагоре/надолу","movePageLeftRight":"Премести страница наляво/надясно"},"clearCanvasDialog":{"title":"Изчисти платното"},"publishDialog":{"title":"Публикувай библиотека","itemName":"Име","authorName":"Авторско име","githubUsername":"GitHub потребителско име","twitterUsername":"Twitter потребителско име","libraryName":"Име на библиотеката","libraryDesc":"Описание на библиотеката","website":"Уебсайт","placeholder":{"authorName":"Името или потребителското Ви име","libraryName":"Име на библиотеката Ви","libraryDesc":"Описание на библиотеката ви, за да помогнете на хората да разберат приложенията ѝ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Задължително","website":"Въведете валиден URL адрес"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Нулирай библиотека","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"Фон","onlySelected":"Само избраното","darkMode":"Тъмен режим","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Изнасяне в PNG","exportToSvg":"Изнасяне в SVG","copyPngToClipboard":"Копирай PNG в клипборда"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копиране в клипборда"}},"encrypted":{"tooltip":"Вашите рисунки са криптирани от край до край, така че сървърите на Excalidraw няма да могат да ги виждат.","link":""},"stats":{"angle":"Ъгъл","element":"Елемент","elements":"Елементи","height":"Височина","scene":"Сцена","selected":"Селектирано","storage":"Съхранение на данни","title":"Статистика за хакери","total":"Общо","version":"Версия","versionCopy":"Настисни за да копираш","versionNotAvailable":"Версията не е налична","width":"Широчина"},"toast":{"addedToLibrary":"Добавена към библиотеката","copyStyles":"Копирани стилове.","copyToClipboard":"Копирано в клипборда.","copyToClipboardAsPng":"Копира {{exportSelection}} в клипборда като PNG\\n({{exportColorScheme}})","fileSaved":"Файлът е запазен.","fileSavedToFilename":"Запазен към {filename}","canvas":"платно","selection":"селекция","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачен","black":"Черен","white":"Бял","red":"Червен","pink":"Розов","grape":"Грозде","violet":"Виолетово","gray":"Сив","blue":"Син","cyan":"Синьозелено","teal":"Тъмно синьо-зелено","green":"Зелено","yellow":"Жълто","orange":"Оранжево","bronze":"Бронзово"},"welcomeScreen":{"app":{"center_heading":"Всичките Ви данни са запазени локално в браузъра Ви.","center_heading_plus":"","menuHint":"Експорт, предпочитания, езици, ..."},"defaults":{"menuHint":"Експорт, предпочитания, и още...","center_heading":"Диаграми. Направени. Просто.","toolbarHint":"Изберете инструмент & Започнете да рисувате!","helpHint":"Преки пътища & помощ"}},"colorPicker":{"mostUsedCustomColors":"Най-често използвани цветове","colors":"Цветове","shades":"Нюанси","hexCode":"Шестнадесетичен код","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Изнеси като изображение","button":"Изнеси като изображение","description":""},"saveToDisk":{"title":"Запази към диск","button":"Запази към диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортирай към Excalidraw+","description":"Запази сцената към Excalidraw+ работното място."}},"modal":{"loadFromFile":{"title":"Зареди от файл","button":"Зареди от файл","description":""},"shareableLink":{"title":"Зареди от линк","button":"Замени моето съдържание","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js b/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js new file mode 100644 index 0000000..f838bb6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/bn-BD-json-9ad9e5ae95c4c66297b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7429],{8525:function(e){e.exports=JSON.parse('{"labels":{"paste":"পেস্ট করুন","pasteAsPlaintext":"প্লেইনটেক্সট হিসাবে পেস্ট করুন","pasteCharts":"চার্ট পেস্ট করুন","selectAll":"সবটা সিলেক্ট করুন","multiSelect":"একাধিক সিলেক্ট করুন","moveCanvas":"ক্যানভাস সরান","cut":"কাট করুন","copy":"কপি করুন","copyAsPng":"পীএনজী ছবির মতন কপি করুন","copyAsSvg":"এসভীজী ছবির মতন কপি করুন","copyText":"লিখিত তথ্যের মতন কপি করুন","bringForward":"অধিকতর সামনে আনুন","sendToBack":"অধিকতর পিছনে নিয়ে যান","bringToFront":"সবার সামনে আনুন","sendBackward":"সবার পিছনে নিয়ে যান","delete":"মুছা","copyStyles":"ডিজাইন কপি করুন","pasteStyles":"ডিজাইন পেস্ট করুন","stroke":"রেখাংশ","background":"পটভূমি","fill":"রং","strokeWidth":"রেখাংশের বেধ","strokeStyle":"রেখাংশের ডিজাইন","strokeStyle_solid":"পুরু","strokeStyle_dashed":"পাতলা","strokeStyle_dotted":"বিন্দুবিন্দু","sloppiness":"ভ্রান্তি","opacity":"দৃশ্যমানতা","textAlign":"লেখ অনুভূমি","edges":"কোণ","sharp":"তীক্ষ্ণ","round":"গোল","arrowheads":"তীরের শীর্ষভাগ","arrowhead_none":"কিছু না","arrowhead_arrow":"তীর","arrowhead_bar":"রেখাংশ","arrowhead_dot":"বিন্দু","arrowhead_triangle":"ত্রিভূজ","fontSize":"লেখনীর মাত্রা","fontFamily":"লেখনীর হরফ","addWatermark":"এক্সক্যালিড্র দ্বারা প্রস্তুত","handDrawn":"হাতে আঁকা","normal":"স্বাভাবিক","code":"কোড","small":"ছোট","medium":"মাঝারি","large":"বড়","veryLarge":"অনেক বড়","solid":"দৃঢ়","hachure":"ভ্রুলেখা","zigzag":"আঁকাবাঁকা","crossHatch":"ক্রস হ্যাচ","thin":"পাতলা","bold":"পুরু","left":"বাম","center":"কেন্দ্র","right":"ডান","extraBold":"অতি পুরু","architect":"স্থপতি","artist":"শিল্পী","cartoonist":"চিত্রকার","fileTitle":"ফাইলের নাম","colorPicker":"রং পছন্দ করুন","canvasColors":"ক্যানভাসের রং","canvasBackground":"ক্যানভাসের পটভূমি","drawingCanvas":"ব্যবহৃত ক্যানভাস","layers":"মাত্রা","actions":"ক্রিয়া","language":"ভাষা","liveCollaboration":"সরাসরি পারস্পরিক সহযোগিতা...","duplicateSelection":"সদৃশ সিলেক্ট","untitled":"অনামী","name":"নাম","yourName":"আপনার নাম","madeWithExcalidraw":"এক্সক্যালিড্র দ্বারা তৈরি","group":"দল গঠন করুন","ungroup":"দল বিভেদ করুন","collaborators":"সহযোগী","showGrid":"গ্রিড দেখান","addToLibrary":"সংগ্রহে যোগ করুন","removeFromLibrary":"সংগ্রহ থেকে বের করুন","libraryLoadingMessage":"সংগ্রহ তৈরি হচ্ছে","libraries":"সংগ্রহ দেখুন","loadingScene":"দৃশ্য তৈরি হচ্ছে","align":"পংক্তিবিন্যাস","alignTop":"উপর পংক্তি","alignBottom":"নিম্ন পংক্তি","alignLeft":"বাম পংক্তি","alignRight":"ডান পংক্তি","centerVertically":"উলম্ব কেন্দ্রিত","centerHorizontally":"অনুভূমিক কেন্দ্রিত","distributeHorizontally":"অনুভূমিকভাবে বিতরণ করুন","distributeVertically":"উল্লম্বভাবে বিতরণ করুন","flipHorizontal":"অনুভূমিক আবর্তন","flipVertical":"উলম্ব আবর্তন","viewMode":"দৃশ্য","share":"ভাগ করুন","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"লেখনীর মাত্রা কমান","increaseFontSize":"লেখনীর মাত্রা বাড়ান","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"লিঙ্ক সংশোধন","editEmbed":"","create":"লিঙ্ক তৈরী","createEmbed":"","label":"লিঙ্ক নামকরণ","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"আবদ্ধ করুন","unlock":"বিচ্ছিন্ন করুন","lockAll":"সব আবদ্ধ করুন","unlockAll":"সব বিচ্ছিন্ন করুন"},"statusPublished":"প্রকাশিত","sidebarLock":"লক","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"সংগ্রহে কিছু যোগ করা হয়নি","hint_emptyLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন, অথবা নীচে, প্রকাশ্য সংগ্রহশালা থেকে একটি সংগ্রহ ইনস্টল করুন৷","hint_emptyPrivateLibrary":"এখানে যোগ করার জন্য ক্যানভাসে একটি বস্তু নির্বাচন করুন"},"buttons":{"clearReset":"ক্যানভাস সাফ করুন","exportJSON":"জেসন নিবদ্ধ করুন","exportImage":"","export":"","copyToClipboard":"ক্লিপবোর্ডে কপি করুন","save":"জমা করুন","saveAs":"অন্যভাবে জমা করুন","load":"","getShareableLink":"ভাগযোগ্য লিঙ্ক পান","close":"বন্ধ করুন","selectLanguage":"ভাষা চিহ্নিত করুন","scrollBackToContent":"বিষয়বস্তুতে ফেরত যান","zoomIn":"বড় করুন","zoomOut":"ছোট করুন","resetZoom":"স্বাভাবিক করুন","menu":"তালিকা","done":"সম্পন্ন","edit":"সংশোধন করুন","undo":"ফেরত যান","redo":"পুনরায় করুন","resetLibrary":"সংগ্রহ সাফ করুন","createNewRoom":"নতুন রুম বানান","fullScreen":"পূর্ণস্ক্রীন","darkMode":"ডার্ক মোড","lightMode":"লাইট মোড","zenMode":"জেন মোড","objectsSnapMode":"","exitZenMode":"জেন মোড বন্ধ করুন","cancel":"বাতিল","clear":"সাফ","remove":"বিয়োগ","embed":"","publishLibrary":"সংগ্রহ প্রকাশ করুন","submit":"জমা করুন","confirm":"নিশ্চিত করুন","embeddableInteractionButton":""},"alerts":{"clearReset":"এটি পুরো ক্যানভাস সাফ করবে। আপনি কি নিশ্চিত?","couldNotCreateShareableLink":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি।","couldNotCreateShareableLinkTooBig":"ভাগ করা যায় এমন লিঙ্ক তৈরি করা যায়নি: দৃশ্যটি খুব বড়","couldNotLoadInvalidFile":"অবৈধ ফাইল লোড করা যায়নি","importBackendFailed":"ব্যাকেন্ড থেকে আপলোড ব্যর্থ হয়েছে।","cannotExportEmptyCanvas":"খালি ক্যানভাস নিবদ্ধ করা যাবে না।","couldNotCopyToClipboard":"ক্লিপবোর্ডে কপি করা যায়নি।","decryptFailed":"তথ্য ডিক্রিপ্ট করা যায়নি।","uploadedSecurly":"আপলোডটি এন্ড-টু-এন্ড এনক্রিপশনের মাধ্যমে সুরক্ষিত করা হয়েছে, যার অর্থ হল এক্সক্যালিড্র সার্ভার এবং তৃতীয় পক্ষের দ্বারা পড়তে পারা সম্ভব নয়।","loadSceneOverridePrompt":"বাহ্যিক অঙ্কন লোড করা আপনার বিদ্যমান দৃশ্য প্রতিস্থাপন করবে। আপনি কি অবিরত করতে চান?","collabStopOverridePrompt":"অধিবেশন বন্ধ করা আপনার পূর্ববর্তী, স্থানীয়ভাবে সঞ্চিত অঙ্কন ওভাররাইট করবে। আপনি কি নিশ্চিত?\\n\\n(যদি আপনি আপনার স্থানীয় অঙ্কন রাখতে চান, তাহলে শুধু ব্রাউজার ট্যাবটি বন্ধ করুন।)","errorAddingToLibrary":"বস্তুটি সংগ্রহে যোগ করা যায়নি","errorRemovingFromLibrary":"বস্তুটি সংগ্রহ থেকে বিয়োগ করা যায়নি","confirmAddLibrary":"এটি আপনার সংগ্রহে {{numShapes}} আকার(গুলি) যোগ করবে। আপনি কি নিশ্চিত?","imageDoesNotContainScene":"এই ছবিতে কোনো দৃশ্যের তথ্য আছে বলে মনে হয় না৷ আপনি কি নিবদ্ধ করার সময় দৃশ্য এমবেডিং করতে সক্ষম?","cannotRestoreFromImage":"এই ফাইল থেকে দৃশ্য পুনরুদ্ধার করা যায়নি","invalidSceneUrl":"সরবরাহ করা লিঙ্ক থেকে দৃশ্য লোড করা যায়নি৷ এটি হয় বিকৃত, অথবা বৈধ এক্সক্যালিড্র জেসন তথ্য নেই৷","resetLibrary":"এটি আপনার সংগ্রহ পরিষ্কার করবে। আপনি কি নিশ্চিত?","removeItemsFromsLibrary":"সংগ্রহ থেকে {{count}} বস্তু বিয়োগ করা হবে। আপনি কি নিশ্চিত?","invalidEncryptionKey":"অবৈধ এনক্রীপশন কী।","collabOfflineWarning":""},"errors":{"unsupportedFileType":"অসমর্থিত ফাইল।","imageInsertError":"ছবি সন্নিবেশ করা যায়নি। পরে আবার চেষ্টা করুন...","fileTooBig":"ফাইলটি খুব বড়। সর্বাধিক অনুমোদিত আকার হল {{maxSize}}৷","svgImageInsertError":"এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","failedToFetchImage":"","invalidSVGString":"এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷","cannotResolveCollabServer":"কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।","importLibraryError":"সংগ্রহ লোড করা যায়নি","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"বাছাই","image":"চিত্র সন্নিবেশ","rectangle":"আয়তক্ষেত্র","diamond":"রুহিতন","ellipse":"উপবৃত্ত","arrow":"তীর","line":"রেখা","freedraw":"কলম","text":"লেখা","library":"সংগ্রহ","lock":"আঁকার পরে নির্বাচিত টুল সক্রিয় রাখুন","penMode":"","link":"একটি নির্বাচিত আকৃতির জন্য লিঙ্ক যোগ বা আপডেট করুন","eraser":"ঝাড়ন","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ক্যানভাস কার্যকলাপ","selectedShapeActions":"বাছাই করা আকার(গুলি)র কার্যকলাপ","shapes":"আকার(গুলি)"},"hints":{"canvasPanning":"","linearElement":"একাধিক বিন্দু শুরু করতে ক্লিক করুন, একক লাইনের জন্য টেনে আনুন","freeDraw":"ক্লিক করুন এবং টেনে আনুন, আপনার কাজ শেষ হলে ছেড়ে দিন","text":"বিশেষ্য: আপনি নির্বাচন টুলের সাথে যে কোনো জায়গায় ডাবল-ক্লিক করে পাঠ্য যোগ করতে পারেন","embeddable":"","text_selected":"লেখা সম্পাদনা করতে ডাবল-ক্লিক করুন বা এন্টার টিপুন","text_editing":"লেখা সম্পাদনা শেষ করতে এসকেপ বা কন্ট্রোল/কম্যান্ড যোগে এন্টার টিপুন","linearElementMulti":"শেষ বিন্দুতে ক্লিক করুন অথবা শেষ করতে এসকেপ বা এন্টার টিপুন","lockAngle":"ঘোরানোর সময় আপনি শিফ্ট ধরে রেখে কোণ সীমাবদ্ধ করতে পারেন","resize":"আপনি আকার পরিবর্তন করার সময় শিফ্ট ধরে রেখে অনুপাতকে সীমাবদ্ধ করতে পারেন,\\nকেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরে রাখুন","resizeImage":"আপনি শিফ্ট ধরে রেখে অবাধে আকার পরিবর্তন করতে পারেন, কেন্দ্র থেকে আকার পরিবর্তন করতে অল্ট ধরুন","rotate":"আপনি ঘোরানোর সময় শিফ্ট ধরে রেখে কোণগুলিকে সীমাবদ্ধ করতে পারেন","lineEditor_info":"","lineEditor_pointSelected":"বিন্দু(গুলি) মুছতে ডিলিট টিপুন, কন্ট্রোল/কম্যান্ড যোগে ডি টিপুন নকল করতে অথবা সরানোর জন্য টানুন","lineEditor_nothingSelected":"সম্পাদনা করার জন্য একটি বিন্দু নির্বাচন করুন (একাধিক নির্বাচন করতে শিফ্ট ধরে রাখুন),\\nঅথবা অল্ট ধরে রাখুন এবং নতুন বিন্দু যোগ করতে ক্লিক করুন","placeImage":"ছবিটি স্থাপন করতে ক্লিক করুন, অথবা নিজে আকার সেট করতে ক্লিক করুন এবং টেনে আনুন","publishLibrary":"আপনার নিজস্ব সংগ্রহ প্রকাশ করুন","bindTextToElement":"লেখা যোগ করতে এন্টার টিপুন","deepBoxSelect":"","eraserRevert":"মুছে ফেলার জন্য চিহ্নিত উপাদানগুলিকে ফিরিয়ে আনতে অল্ট ধরে রাখুন","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"প্রিভিউ দেখাতে অপারগ","canvasTooBig":"ক্যানভাস অনেক বড়।","canvasTooBigTip":"বিশেষ্য: দূরতম উপাদানগুলোকে একটু কাছাকাছি নিয়ে যাওয়ার চেষ্টা করুন।"},"errorSplash":{"headingMain":"একটি ত্রুটির সম্মুখীন হয়েছে৷ চেষ্টা করুন ","clearCanvasMessage":"যদি পুনরায় লোড করা কাজ না করে, চেষ্টা করুন ","clearCanvasCaveat":" এর ফলে কাজের ক্ষতি হবে ","trackedToSentry":"ত্রুটি {{eventId}} আমাদের সিস্টেমে ট্র্যাক করা হয়েছিল।","openIssueMessage":"আমরা ত্রুটিতে আপনার দৃশ্যের তথ্য অন্তর্ভুক্ত না করার জন্য খুব সতর্ক ছিলাম। আপনার দৃশ্য ব্যক্তিগত না হলে, আমাদের অনুসরণ করার কথা বিবেচনা করুন অনুগ্রহ করে GitHub ইস্যুতে অনুলিপি এবং পেস্ট করে নীচের তথ্য অন্তর্ভুক্ত করুন।","sceneContent":"দৃশ্য বিষয়বস্তু:"},"roomDialog":{"desc_intro":"আপনি আপনার সাথে সহযোগিতা করার জন্য আপনার বর্তমান দৃশ্যে লোকেদের আমন্ত্রণ জানাতে পারেন৷","desc_privacy":"চিন্তা করবেন না, সেশনটি এন্ড-টু-এন্ড এনক্রিপশন ব্যবহার করে, তাই আপনি যা আঁকবেন তা গোপন থাকবে। এমনকি আমাদের সার্ভার আপনি যা নিয়ে এসেছেন তা দেখতে সক্ষম হবে না।","button_startSession":"সেশন শুরু করুন","button_stopSession":"সেশন বন্ধ করুন","desc_inProgressIntro":"লাইভ-সহযোগীতার সেশন এখন চলছে।","desc_shareLink":"আপনি যার সাথে সহযোগিতা করতে চান তাদের সাথে এই লিঙ্কটি ভাগ করুন: ","desc_exitSession":"অধিবেশন বন্ধ করা আপনাকে রুম থেকে সংযোগ বিচ্ছিন্ন করবে, কিন্তু আপনি স্থানীয়ভাবে দৃশ্যের সাথে কাজ চালিয়ে যেতে সক্ষম হবেন। মনে রাখবেন যে এটি অন্য লোকেদের প্রভাবিত করবে না এবং তারা এখনও তাদের সংস্করণে সহযোগিতা করতে সক্ষম হবে।","shareTitle":"এক্সক্যালিড্র লাইভ সহযোগিতা সেশনে যোগ দিন"},"errorDialog":{"title":"ত্রুটি"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"নিবদ্ধ","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"ক্লিক","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"অথবা","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"কোণ","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"প্রস্থ"},"toast":{"addedToLibrary":"সংগ্রহশালায় যুক্ত হয়েছে","copyStyles":"","copyToClipboard":"ক্লিপবোর্ডে কপি করা হয়েছে।","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"বাছাই","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js b/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js new file mode 100644 index 0000000..4b2c0d2 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ca-ES-json-a6b2c18f7e85cfd11599.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5130],{510:function(e){e.exports=JSON.parse('{"labels":{"paste":"Enganxa","pasteAsPlaintext":"Enganxar com a text pla","pasteCharts":"Enganxa els diagrames","selectAll":"Selecciona-ho tot","multiSelect":"Afegeix un element a la selecció","moveCanvas":"Mou el llenç","cut":"Retalla","copy":"Copia","copyAsPng":"Copia al porta-retalls com a PNG","copyAsSvg":"Copia al porta-retalls com a SVG","copyText":"Copia al porta-retalls com a text","bringForward":"Porta endavant","sendToBack":"Envia enrere","bringToFront":"Porta al davant","sendBackward":"Envia al fons","delete":"Elimina","copyStyles":"Copia els estils","pasteStyles":"Enganxa els estils","stroke":"Color del traç","background":"Color del fons","fill":"Estil del fons","strokeWidth":"Amplada del traç","strokeStyle":"Estil del traç","strokeStyle_solid":"Sòlid","strokeStyle_dashed":"Guions","strokeStyle_dotted":"Punts","sloppiness":"Estil del traç","opacity":"Opacitat","textAlign":"Alineació del text","edges":"Vores","sharp":"Agut","round":"Arrodonit","arrowheads":"Puntes de fletxa","arrowhead_none":"Cap","arrowhead_arrow":"Fletxa","arrowhead_bar":"Barra","arrowhead_dot":"Punt","arrowhead_triangle":"Triangle","fontSize":"Mida de lletra","fontFamily":"Tipus de lletra","addWatermark":"Afegeix-hi «Fet amb Excalidraw»","handDrawn":"Dibuixat a mà","normal":"Normal","code":"Codi","small":"Petit","medium":"Mitjà","large":"Gran","veryLarge":"Molt gran","solid":"Sòlid","hachure":"Ratlletes","zigzag":"","crossHatch":"Ratlletes creuades","thin":"Fi","bold":"Negreta","left":"Esquerra","center":"Centre","right":"Dreta","extraBold":"Extra negreta","architect":"Arquitecte","artist":"Artista","cartoonist":"Dibuixant","fileTitle":"Nom del fitxer","colorPicker":"Selector de colors","canvasColors":"Usat al llenç","canvasBackground":"Fons del llenç","drawingCanvas":"Llenç de dibuix","layers":"Capes","actions":"Accions","language":"Llengua","liveCollaboration":"Col·laboració en directe...","duplicateSelection":"Duplica","untitled":"Sense títol","name":"Nom","yourName":"El vostre nom","madeWithExcalidraw":"Fet amb Excalidraw","group":"Agrupa la selecció","ungroup":"Desagrupa la selecció","collaborators":"Col·laboradors","showGrid":"Mostra la graella","addToLibrary":"Afegir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"S\'està carregant la biblioteca…","libraries":"Explora les biblioteques","loadingScene":"S\'està carregant l\'escena…","align":"Alinea","alignTop":"Alinea a la part superior","alignBottom":"Alinea a la part inferior","alignLeft":"Alinea a l’esquerra","alignRight":"Alinea a la dreta","centerVertically":"Centra verticalment","centerHorizontally":"Centra horitzontalment","distributeHorizontally":"Distribueix horitzontalment","distributeVertically":"Distribueix verticalment","flipHorizontal":"Capgira horitzontalment","flipVertical":"Capgira verticalment","viewMode":"Mode de visualització","share":"Comparteix","showStroke":"Mostra el selector de color del traç","showBackground":"Mostra el selector de color de fons","toggleTheme":"Activa o desactiva el tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca d\'Excalidraw","decreaseFontSize":"Redueix la mida de la lletra","increaseFontSize":"Augmenta la mida de la lletra","unbindText":"Desvincular el text","bindText":"Ajusta el text al contenidor","createContainerFromText":"","link":{"edit":"Edita l\'enllaç","editEmbed":"","create":"Crea un enllaç","createEmbed":"","label":"Enllaç","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar línia","exit":"Sortir de l\'editor de línia"},"elementLock":{"lock":"Bloca","unlock":"Desbloca","lockAll":"Bloca-ho tot","unlockAll":"Desbloca-ho tot"},"statusPublished":"Publicat","sidebarLock":"Manté la barra lateral oberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Encara no s\'hi han afegit elements...","hint_emptyLibrary":"Trieu un element o un llenç per a afegir-lo aquí, o instal·leu una biblioteca del repositori públic, més avall.","hint_emptyPrivateLibrary":"Trieu un element o un llenç per a afegir-lo aquí."},"buttons":{"clearReset":"Neteja el llenç","exportJSON":"Exporta a un fitxer","exportImage":"Exporta la imatge...","export":"Guardar a...","copyToClipboard":"Copia al porta-retalls","save":"Desa al fitxer actual","saveAs":"Anomena i desa","load":"Obrir","getShareableLink":"Obté l\'enllaç per a compartir","close":"Tanca","selectLanguage":"Trieu la llengua","scrollBackToContent":"Torna al contingut","zoomIn":"Apropa\'t","zoomOut":"Allunya\'t","resetZoom":"Restableix el zoom","menu":"Menú","done":"Fet","edit":"Edita","undo":"Desfés","redo":"Refés","resetLibrary":"Restableix la biblioteca","createNewRoom":"Crea una sala nova","fullScreen":"Pantalla completa","darkMode":"Mode fosc","lightMode":"Mode clar","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Surt de mode zen","cancel":"Cancel·la","clear":"Neteja","remove":"Suprimeix","embed":"","publishLibrary":"Publica","submit":"Envia","confirm":"Confirma","embeddableInteractionButton":""},"alerts":{"clearReset":"S\'esborrarà tot el llenç. N\'esteu segur?","couldNotCreateShareableLink":"No s\'ha pogut crear un enllaç per a compartir.","couldNotCreateShareableLinkTooBig":"No s’ha pogut crear un enllaç per a compartir: l’escena és massa gran","couldNotLoadInvalidFile":"No s\'ha pogut carregar un fitxer no vàlid","importBackendFailed":"Importació fallida.","cannotExportEmptyCanvas":"No es pot exportar un llenç buit.","couldNotCopyToClipboard":"No s\'ha pogut copiar al porta-retalls.","decryptFailed":"No s\'ha pogut desencriptar.","uploadedSecurly":"La càrrega s\'ha assegurat amb xifratge punta a punta, cosa que significa que el servidor Excalidraw i tercers no poden llegir el contingut.","loadSceneOverridePrompt":"Si carregas aquest dibuix extern, substituirá el que tens. Vols continuar?","collabStopOverridePrompt":"Aturar la sessió provocarà la sobreescriptura del dibuix previ, que hi ha desat en l\'emmagatzematge local. N\'esteu segur?\\n\\n(Si voleu conservar el dibuix local, tanqueu la pentanya del navegador en comptes d\'aturar la sessió).","errorAddingToLibrary":"No s\'ha pogut afegir l\'element a la biblioteca","errorRemovingFromLibrary":"No s\'ha pogut eliminar l\'element de la biblioteca","confirmAddLibrary":"Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?","imageDoesNotContainScene":"Aquesta imatge no sembla contenir cap dada d\'escena. Heu activat l\'incrustació de l\'escena durant l\'exportació?","cannotRestoreFromImage":"L’escena no s’ha pogut restaurar des d’aquest fitxer d’imatge","invalidSceneUrl":"No s\'ha pogut importar l\'escena des de l\'adreça URL proporcionada. Està malformada o no conté dades Excalidraw JSON vàlides.","resetLibrary":"Això buidarà la biblioteca. N\'esteu segur?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la biblioteca?","invalidEncryptionKey":"La clau d\'encriptació ha de tenir 22 caràcters. La col·laboració en directe està desactivada.","collabOfflineWarning":"Sense connexió a internet disponible.\\nEls vostres canvis no seran guardats!"},"errors":{"unsupportedFileType":"Tipus de fitxer no suportat.","imageInsertError":"No s\'ha pogut insertar la imatge, torneu-ho a provar més tard...","fileTooBig":"El fitxer és massa gros. La mida màxima permesa és {{maxSize}}.","svgImageInsertError":"No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.","failedToFetchImage":"","invalidSVGString":"SVG no vàlid.","cannotResolveCollabServer":"No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.","importLibraryError":"No s\'ha pogut carregar la biblioteca","collabSaveFailed":"No s\'ha pogut desar a la base de dades de fons. Si els problemes persisteixen, hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","collabSaveFailed_sizeExceeded":"No s\'ha pogut desar a la base de dades de fons, sembla que el llenç és massa gran. Hauríeu de desar el fitxer localment per assegurar-vos que no perdeu el vostre treball.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selecció","image":"Insereix imatge","rectangle":"Rectangle","diamond":"Rombe","ellipse":"El·lipse","arrow":"Fletxa","line":"Línia","freedraw":"Dibuix","text":"Text","library":"Biblioteca","lock":"Mantenir activa l\'eina seleccionada desprès de dibuixar","penMode":"Mode de llapis - evita tocar","link":"Afegeix / actualitza l\'enllaç per a la forma seleccionada","eraser":"Esborrador","frame":"","embeddable":"","laser":"","hand":"Mà (eina de desplaçament)","extraTools":""},"headings":{"canvasActions":"Accions del llenç","selectedShapeActions":"Accions per a les formes seleccionades","shapes":"Formes"},"hints":{"canvasPanning":"Per moure el llenç, manteniu premuda la roda del ratolí o la barra espaiadora mentre arrossegueu o utilitzeu l\'eina manual","linearElement":"Feu clic per a dibuixar múltiples punts; arrossegueu per a una sola línia","freeDraw":"Feu clic i arrossegueu, deixeu anar per a finalitzar","text":"Consell: també podeu afegir text fent doble clic en qualsevol lloc amb l\'eina de selecció","embeddable":"","text_selected":"Feu doble clic o premeu Retorn per a editar el text","text_editing":"Premeu Escapada o Ctrl+Retorn (o Ordre+Retorn) per a finalitzar l\'edició","linearElementMulti":"Feu clic a l\'ultim punt, o pitgeu Esc o Retorn per a finalitzar","lockAngle":"Per restringir els angles, mantenir premut el majúscul (SHIFT)","resize":"Per restringir les proporcions mentres es canvia la mida, mantenir premut el majúscul (SHIFT); per canviar la mida des del centre, mantenir premut ALT","resizeImage":"Podeu redimensionar lliurement prement MAJÚSCULA;\\nper a redimensionar des del centre, premeu ALT","rotate":"Per restringir els angles mentre gira, mantenir premut el majúscul (SHIFT)","lineEditor_info":"Mantingueu premut Ctrl o Cmd i feu doble clic o premeu Ctrl o Cmd + Retorn per editar els punts","lineEditor_pointSelected":"Premeu Suprimir per a eliminar el(s) punt(s), CtrlOrCmd+D per a duplicar-lo, o arrossegueu-lo per a moure\'l","lineEditor_nothingSelected":"Seleccioneu un punt per a editar-lo (premeu SHIFT si voleu\\nselecció múltiple), o manteniu Alt i feu clic per a afegir més punts","placeImage":"Feu clic per a col·locar la imatge o clic i arrossegar per a establir-ne la mida manualment","publishLibrary":"Publiqueu la vostra pròpia llibreria","bindTextToElement":"Premeu enter per a afegir-hi text","deepBoxSelect":"Manteniu CtrlOrCmd per a selecció profunda, i per a evitar l\'arrossegament","eraserRevert":"Mantingueu premuda Alt per a revertir els elements seleccionats per a esborrar","firefox_clipboard_write":"És probable que aquesta funció es pugui activar posant la marca \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Per canviar les marques del navegador al Firefox, visiteu la pàgina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"No es pot mostrar la previsualització","canvasTooBig":"Pot ser que el llenç sigui massa gran.","canvasTooBigTip":"Consell: proveu d’acostar una mica els elements més allunyats."},"errorSplash":{"headingMain":"S\'ha produït un error. Proveu ","clearCanvasMessage":"Si la recàrrega no funciona, proveu ","clearCanvasCaveat":" Això resultarà en la pèrdua de feina ","trackedToSentry":"L\'error amb l\'identificador {{eventId}} s\'ha rastrejat en el nostre sistema.","openIssueMessage":"Anàvem amb molta cura de no incloure la informació de la vostra escena en l\'error. Si l\'escena no és privada, podeu fer-ne el seguiment al nostre Incloeu la informació a continuació copiant i enganxant a GitHub Issues.","sceneContent":"Contingut de l\'escena:"},"roomDialog":{"desc_intro":"Podeu convidar persones a la vostra escena actual a col·laborar amb vós.","desc_privacy":"No us preocupeu, la sessió utilitza el xifratge de punta a punta, de manera que qualsevol cosa que dibuixeu romandrà privada. Ni tan sols el nostre servidor podrà veure què feu.","button_startSession":"Inicia la sessió","button_stopSession":"Atura la sessió","desc_inProgressIntro":"La sessió de col·laboració en directe està en marxa.","desc_shareLink":"Comparteix aquest enllaç amb qualsevol persona amb qui vulgueu col·laborar:","desc_exitSession":"Si atureu la sessió, us desconectareu de la sala, però podreu continuar treballant amb el dibuix localment. Tingues en compte que això no afectarà a altres persones, i encara podran col·laborar en la seva versió.","shareTitle":"Uniu-vos a una sessió de col·laboració en directe a Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Desa al disc","disk_details":"Exporta les dades de l\'escena a un fitxer que després podreu importar.","disk_button":"Desa en un fitxer","link_title":"Enllaç per a compartir","link_details":"Exporta com a un enllaç de només lectura.","link_button":"Exporta a un enllaç","excalidrawplus_description":"Desa l\'escena en el vostre espai de treball Excalidraw+.","excalidrawplus_button":"Exporta","excalidrawplus_exportError":"No és possible exportar a Excalidraw+ ara mateix..."},"helpDialog":{"blog":"Llegiu el nostre blog","click":"clic","deepSelect":"Selecció profunda","deepBoxSelect":"Seleccioneu profundament dins del quadre i eviteu arrossegar","curvedArrow":"Fletxa corba","curvedLine":"Línia corba","documentation":"Documentació","doubleClick":"doble clic","drag":"arrossega","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Hi heu trobat un problema? Informeu-ne","howto":"Seguiu les nostres guies","or":"o","preventBinding":"Prevenir vinculació de la fletxa","tools":"Eines","shortcuts":"Dreceres de teclat","textFinish":"Finalitza l\'edició (editor de text)","textNewLine":"Afegeix una línia nova (editor de text)","title":"Ajuda","view":"Visualització","zoomToFit":"Zoom per veure tots els elements","zoomToSelection":"Zoom per veure la selecció","toggleElementLock":"Blocar/desblocar la selecció","movePageUpDown":"Mou la pàgina cap amunt/a baix","movePageLeftRight":"Mou la pàgina cap a l\'esquerra/dreta"},"clearCanvasDialog":{"title":"Neteja el llenç"},"publishDialog":{"title":"Publica la biblioteca","itemName":"Nom de l\'element","authorName":"Nom de l\'autor/a","githubUsername":"Nom d\'usuari de GitHub","twitterUsername":"Nom d\'usuari de Twitter","libraryName":"Nom de la biblioteca","libraryDesc":"Descripció de la biblioteca","website":"Lloc web","placeholder":{"authorName":"Nom o usuari","libraryName":"Nom de la vostra biblioteca","libraryDesc":"Descripció de la biblioteca per a ajudar a la gent a entendre\'n el funcionament","githubHandle":"Identificador de GitHub (opcional), per tal que pugueu editar la biblioteca una vegada enviada per a ser revisada","twitterHandle":"Usuari de twitter (opcional), per tal que puguem donar-vos crèdit quan fem la promoció a Twitter","website":"Enllaç al vostre lloc web personal o a qualsevol altre (opcional)"},"errors":{"required":"Requerit","website":"Introduïu una URL vàlida"},"noteDescription":"Envieu la vostra biblioteca perquè sigui inclosa al repositori públicper tal que altres persones puguin fer-ne ús en els seus dibuixos.","noteGuidelines":"La biblioteca ha de ser aprovada manualment. Si us plau, llegiu les directrius abans d\'enviar-hi res. Necessitareu un compte de GitHub per a comunicar i fer-hi canvis si cal, però no és requisit imprescindible.","noteLicense":"Quan l\'envieu, accepteu que la biblioteca sigui publicada sota la llicència MIT, que, en resum, vol dir que qualsevol persona pot fer-ne ús sense restriccions.","noteItems":"Cada element de la biblioteca ha de tenir el seu propi nom per tal que sigui filtrable. S\'hi inclouran els elements següents:","atleastOneLibItem":"Si us plau, seleccioneu si més no un element de la biblioteca per a començar","republishWarning":"Nota: alguns dels elements seleccionats s\'han marcat com a publicats/enviats. Només hauríeu de reenviar elements quan actualitzeu una biblioteca existent."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gràcies, {{authorName}}. La vostra biblioteca ha estat enviada per a ser revisada. Podeu comprovar-ne l\'estataquí"},"confirmDialog":{"resetLibrary":"Restableix la biblioteca","removeItemsFromLib":"Suprimeix els elements seleccionats de la llibreria"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Els vostres dibuixos estan xifrats de punta a punta de manera que els servidors d’Excalidraw no els veuran mai.","link":"Article del blog sobre encriptació d\'extrem a extrem a Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Altura","scene":"Escena","selected":"Seleccionat","storage":"Emmagatzematge","title":"Estadístiques per nerds","total":"Total","version":"Versió","versionCopy":"Feu clic per a copiar","versionNotAvailable":"Versió no disponible","width":"Amplada"},"toast":{"addedToLibrary":"Afegit a la biblioteca","copyStyles":"S\'han copiat els estils.","copyToClipboard":"S\'ha copiat al porta-retalls.","copyToClipboardAsPng":"S\'ha copiat {{exportSelection}} al porta-retalls en format PNG\\n({{exportColorScheme}})","fileSaved":"S\'ha desat el fitxer.","fileSavedToFilename":"S\'ha desat a {filename}","canvas":"el llenç","selection":"la selecció","pasteAsSingleElement":"Fer servir {{shortcut}} per enganxar com un sol element,\\no enganxeu-lo en un editor de text existent","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparent","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totes les vostres dades es guarden localment al vostre navegador.","center_heading_plus":"Vols anar a Excalidraw+ en comptes?","menuHint":"Exportar, preferències, llenguatges..."},"defaults":{"menuHint":"Exportar, preferències i més...","center_heading":"Diagrames. Fer. Simple.","toolbarHint":"Selecciona una eina i comença a dibuixar!","helpHint":"Dreceres i ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js b/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js new file mode 100644 index 0000000..b34efc0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/cs-CZ-json-ea03835d73f9b921f7c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6265],{7605:function(e){e.exports=JSON.parse('{"labels":{"paste":"Vložit","pasteAsPlaintext":"Vložit jako prostý text","pasteCharts":"Vložit grafy","selectAll":"Vybrat vše","multiSelect":"Přidat prvek do výběru","moveCanvas":"Posunout plátno","cut":"Vyjmout","copy":"Kopírovat","copyAsPng":"Zkopírovat do schránky jako PNG","copyAsSvg":"Zkopírovat do schránky jako SVG","copyText":"Zkopírovat do schránky jako text","bringForward":"Přenést blíž","sendToBack":"Přenést do pozadí","bringToFront":"Přenést do popředí","sendBackward":"Přenést dál","delete":"Smazat","copyStyles":"Kopírovat styly","pasteStyles":"Vložit styly","stroke":"Obrys","background":"Pozadí","fill":"Výplň","strokeWidth":"Tloušťka tahu","strokeStyle":"Styl tahu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čárkovaný","strokeStyle_dotted":"Tečkovaný","sloppiness":"Stylizace","opacity":"Průhlednost","textAlign":"Zarovnání textu","edges":"Hrany","sharp":"Ostré","round":"Zaoblené","arrowheads":"Styl šipky","arrowhead_none":"Žádný","arrowhead_arrow":"Šipka","arrowhead_bar":"Kóta","arrowhead_dot":"Tečka","arrowhead_triangle":"Trojúhelník","fontSize":"Velikost písma","fontFamily":"Písmo","addWatermark":"Přidat \\"Vyrobeno s Excalidraw\\"","handDrawn":"Od ruky","normal":"Normální","code":"Kód","small":"Malé","medium":"Střední","large":"Velké","veryLarge":"Velmi velké","solid":"Plný","hachure":"Hachure","zigzag":"Klikatě","crossHatch":"Křížový šrafování","thin":"Tenký","bold":"Tlustý","left":"Vlevo","center":"Na střed","right":"Vpravo","extraBold":"Extra tlustý","architect":"Architekt","artist":"Umělec","cartoonist":"Kartoonista","fileTitle":"Název souboru","colorPicker":"Výběr barvy","canvasColors":"Použito na plátně","canvasBackground":"Pozadí plátna","drawingCanvas":"Kreslicí plátno","layers":"Vrstvy","actions":"Akce","language":"Jazyk","liveCollaboration":"Živá spolupráce...","duplicateSelection":"Duplikovat","untitled":"Bez názvu","name":"Název","yourName":"Vaše jméno","madeWithExcalidraw":"Vytvořeno v Excalidraw","group":"Sloučit výběr do skupiny","ungroup":"Zrušit sloučení skupiny","collaborators":"Spolupracovníci","showGrid":"Zobrazit mřížku","addToLibrary":"Přidat do knihovny","removeFromLibrary":"Odebrat z knihovny","libraryLoadingMessage":"Načítání knihovny…","libraries":"Procházet knihovny","loadingScene":"Načítání scény…","align":"Zarovnání","alignTop":"Zarovnat nahoru","alignBottom":"Zarovnat dolů","alignLeft":"Zarovnat vlevo","alignRight":"Zarovnejte vpravo","centerVertically":"Vycentrovat svisle","centerHorizontally":"Vycentrovat vodorovně","distributeHorizontally":"Rozložit horizontálně","distributeVertically":"Rozložit svisle","flipHorizontal":"Převrátit vodorovně","flipVertical":"Převrátit svisle","viewMode":"Náhled","share":"Sdílet","showStroke":"Zobrazit výběr barvy","showBackground":"Zobrazit výběr barev pozadí","toggleTheme":"Přepnout tmavý řežim","personalLib":"Osobní knihovna","excalidrawLib":"Exkalidraw knihovna","decreaseFontSize":"Zmenšit písmo","increaseFontSize":"Zvětšit písmo","unbindText":"Zrušit vazbu textu","bindText":"Vázat text s kontejnerem","createContainerFromText":"Zabalit text do kontejneru","link":{"edit":"Upravit odkaz","editEmbed":"","create":"Vytvořit odkaz","createEmbed":"","label":"Odkaz","labelEmbed":"","empty":""},"lineEditor":{"edit":"Upravit čáru","exit":"Ukončit editor řádků"},"elementLock":{"lock":"Uzamknout","unlock":"Odemknout","lockAll":"Uzamknout vše","unlockAll":"Odemknout vše"},"statusPublished":"Zveřejněno","sidebarLock":"Ponechat postranní panel otevřený","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Vyberte barvu z plátna"},"library":{"noItems":"Dosud neexistují žádné položky...","hint_emptyLibrary":"Vyberte položku na plátně a přidejte ji sem nebo nainstalujte knihovnu z veřejného úložiště níže.","hint_emptyPrivateLibrary":"Vyberte položku na plátně a přidejte ji sem."},"buttons":{"clearReset":"Resetovat plátno","exportJSON":"Exportovat do souboru","exportImage":"Exportovat obrázek...","export":"Uložit jako...","copyToClipboard":"Kopírovat do schránky","save":"Uložit do aktuálního souboru","saveAs":"Uložit jako","load":"Otevřít","getShareableLink":"Získat odkaz pro sdílení","close":"Zavřít","selectLanguage":"Zvolit jazyk","scrollBackToContent":"Přejít zpět na obsah","zoomIn":"Přiblížit","zoomOut":"Oddálit","resetZoom":"Resetovat přiblížení","menu":"Menu","done":"Hotovo","edit":"Upravit","undo":"Zpět","redo":"Znovu","resetLibrary":"Obnovit knihovnu","createNewRoom":"Vytvořit novou místnost","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Světlý režim","zenMode":"Zen mód","objectsSnapMode":"","exitZenMode":"Opustit zen mód","cancel":"Zrušit","clear":"Vyčistit","remove":"Odstranit","embed":"","publishLibrary":"Zveřejnit","submit":"Odeslat","confirm":"Potvrdit","embeddableInteractionButton":""},"alerts":{"clearReset":"Toto vymaže celé plátno. Jste si jisti?","couldNotCreateShareableLink":"Nepodařilo se vytvořit sdílitelný odkaz.","couldNotCreateShareableLinkTooBig":"Nepodařilo se vytvořit sdílený odkaz: scéna je příliš velká","couldNotLoadInvalidFile":"Nepodařilo se načíst neplatný soubor","importBackendFailed":"Import z backendu se nezdařil.","cannotExportEmptyCanvas":"Nelze exportovat prázdné plátno.","couldNotCopyToClipboard":"Nelze zkopírovat do schránky.","decryptFailed":"Nelze dešifrovat data.","uploadedSecurly":"Nahrávání je zabezpečeno koncovým šifrováním, což znamená, že server Excalidraw ani třetí strany nemohou obsah přečíst.","loadSceneOverridePrompt":"Načítání externího výkresu nahradí váš existující obsah. Přejete si pokračovat?","collabStopOverridePrompt":"Zastavení relace přepíše vaše předchozí, lokálně uložené kresby. Jste si jisti?\\n\\n(Pokud chcete zachovat místní kresbu, jednoduše zavřete kartu prohlížeče)","errorAddingToLibrary":"Položku nelze přidat do knihovny","errorRemovingFromLibrary":"Položku nelze odstranit z knihovny","confirmAddLibrary":"Tímto přidáte {{numShapes}} tvarů do tvé knihovny. Jste si jisti?","imageDoesNotContainScene":"Zdá se, že tento obrázek neobsahuje žádná data o scéně. Zapnuli jste při exportu vkládání scény?","cannotRestoreFromImage":"Scénu nelze obnovit z tohoto souboru obrázku","invalidSceneUrl":"Nelze importovat scénu z zadané URL. Je buď poškozená, nebo neobsahuje platná JSON data Excalidraw.","resetLibrary":"Tímto vymažete vaši knihovnu. Jste si jisti?","removeItemsFromsLibrary":"Smazat {{count}} položek z knihovny?","invalidEncryptionKey":"Šifrovací klíč musí mít 22 znaků. Live spolupráce je zakázána.","collabOfflineWarning":"Není k dispozici žádné internetové připojení.\\nVaše změny nebudou uloženy!"},"errors":{"unsupportedFileType":"Nepodporovaný typ souboru.","imageInsertError":"Nelze vložit obrázek. Zkuste to později...","fileTooBig":"Soubor je příliš velký. Maximální povolená velikost je {{maxSize}}.","svgImageInsertError":"Nelze vložit SVG obrázek. Značení SVG je neplatné.","failedToFetchImage":"","invalidSVGString":"Neplatný SVG.","cannotResolveCollabServer":"Nelze se připojit ke sdílenému serveru. Prosím obnovte stránku a zkuste to znovu.","importLibraryError":"Nelze načíst knihovnu","collabSaveFailed":"Nelze uložit do databáze na serveru. Pokud problémy přetrvávají, měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","collabSaveFailed_sizeExceeded":"Nelze uložit do databáze na serveru, plátno se zdá být příliš velké. Měli byste uložit soubor lokálně, abyste se ujistili, že neztratíte svou práci.","brave_measure_text_error":{"line1":"Vypadá to, že používáte Brave prohlížeč s povoleným nastavením Aggressively Block Fingerprinting.","line2":"To by mohlo vést k narušení Textových elementů ve vašich výkresech.","line3":"Důrazně doporučujeme zakázat toto nastavení. Můžete sledovat tyto kroky jak to udělat.","line4":"Pokud vypnutí tohoto nastavení neopravuje zobrazení textových prvků, prosím, otevřete problém na našem GitHubu, nebo nám napište na Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Výběr","image":"Vložit obrázek","rectangle":"Obdélník","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šipka","line":"Čára","freedraw":"Kreslení","text":"Text","library":"Knihovna","lock":"Po kreslení ponechat vybraný nástroj aktivní","penMode":"Režim Pera - zabránit dotyku","link":"Přidat/aktualizovat odkaz pro vybraný tvar","eraser":"Guma","frame":"","embeddable":"","laser":"","hand":"Ruka (nástroj pro posouvání)","extraTools":""},"headings":{"canvasActions":"Akce plátna","selectedShapeActions":"Akce vybraného tvaru","shapes":"Tvary"},"hints":{"canvasPanning":"Chcete-li přesunout plátno, podržte kolečko nebo mezerník při tažení nebo použijte nástroj Ruka","linearElement":"Kliknutím pro více bodů, táhnutím pro jednu čáru","freeDraw":"Klikněte a táhněte, pro ukončení pusťte","text":"Tip: Text můžete také přidat dvojitým kliknutím kdekoli pomocí nástroje pro výběr","embeddable":"","text_selected":"Dvojklikem nebo stisknutím klávesy ENTER upravíte text","text_editing":"Stiskněte Escape nebo Ctrl/Cmd+ENTER pro dokončení úprav","linearElementMulti":"Klikněte na poslední bod nebo stiskněte Escape anebo Enter pro dokončení","lockAngle":"Úhel můžete omezit podržením SHIFT","resize":"Můžete omezit proporce podržením SHIFT při změně velikosti,\\npodržte ALT pro změnu velikosti od středu","resizeImage":"Můžete volně změnit velikost podržením SHIFT,\\npodržením klávesy ALT změníte velikosti od středu","rotate":"Úhly můžete omezit podržením SHIFT při otáčení","lineEditor_info":"Podržte Ctrl/Cmd a dvakrát klikněte nebo stiskněte Ctrl/Cmd + Enter pro úpravu bodů","lineEditor_pointSelected":"Stisknutím tlačítka Delete odstraňte bod(y),\\nCtrl/Cmd+D pro duplicitu nebo táhnutím pro přesun","lineEditor_nothingSelected":"Vyberte bod, který chcete upravit (podržením klávesy SHIFT vyberete více položek),\\nnebo podržením klávesy Alt a kliknutím přidáte nové body","placeImage":"Kliknutím umístěte obrázek, nebo klepnutím a přetažením ručně nastavíte jeho velikost","publishLibrary":"Publikovat vlastní knihovnu","bindTextToElement":"Stiskněte Enter pro přidání textu","deepBoxSelect":"Podržte Ctrl/Cmd pro hluboký výběr a pro zabránění táhnutí","eraserRevert":"Podržením klávesy Alt vrátíte prvky označené pro smazání","firefox_clipboard_write":"Tato funkce může být povolena nastavením vlajky \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Chcete-li změnit vlajky prohlížeče ve Firefoxu, navštivte stránku \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Náhled nelze zobrazit","canvasTooBig":"Plátno je možná příliš velké.","canvasTooBigTip":"Tip: zkus posunout nejvzdálenější prvky trochu blíže k sobě."},"errorSplash":{"headingMain":"Chyba. Zkuste .","clearCanvasMessage":"Pokud opětovné načtení nefunguje, zkuste .","clearCanvasCaveat":" To povede ke ztrátě dat ","trackedToSentry":"Chyba identifikátoru {{eventId}} byl zaznamenán v našem systému.","openIssueMessage":"Byli jsme velmi opatrní, abychom neuváděli informace o Vaší scéně. Pokud vaše scéna není soukromá, zvažte prosím sledování na našem . Uveďte prosím níže uvedené informace kopírováním a vložením do problému na GitHubu.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Můžete pozvat lidi na vaši aktuální scénu ke spolupráci s vámi.","desc_privacy":"Nebojte se, relace používá end-to-end šifrování, takže cokoliv nakreslíte zůstane soukromé. Ani náš server nebude schopen vidět, s čím budete pracovat.","button_startSession":"Zahájit relaci","button_stopSession":"Ukončit relaci","desc_inProgressIntro":"Živá spolupráce právě probíhá.","desc_shareLink":"Sdílejte tento odkaz s každým, s kým chcete spolupracovat:","desc_exitSession":"Zastavením relace se odpojíte od místnosti, ale budete moci pokračovat v práci s touto scénou lokálně. Všimněte si, že to nebude mít vliv na ostatní lidi a budou stále moci spolupracovat na jejich verzi.","shareTitle":"Připojte se k aktivní spolupráci na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložit na disk","disk_details":"Exportovat data scény do souboru, ze kterého můžete importovat později.","disk_button":"Uložit do souboru","link_title":"Odkaz pro sdílení","link_details":"Exportovat jako odkaz pouze pro čtení.","link_button":"Exportovat do odkazu","excalidrawplus_description":"Uložit scénu do vašeho pracovního prostoru Excalidraw+.","excalidrawplus_button":"Exportovat","excalidrawplus_exportError":"Export do Excalidraw+ se v tuto chvíli nezdařil..."},"helpDialog":{"blog":"Přečtěte si náš blog","click":"kliknutí","deepSelect":"Hluboký výběr","deepBoxSelect":"Hluboký výběr uvnitř boxu a zabránění táhnnutí","curvedArrow":"Zakřivená šipka","curvedLine":"Zakřivená čára","documentation":"Dokumentace","doubleClick":"dvojklik","drag":"tažení","editor":"Editor","editLineArrowPoints":"Upravit body linií/šipek","editText":"Upravit text / přidat popis","github":"Našel jsi problém? Nahlaš ho","howto":"Sledujte naše návody","or":"nebo","preventBinding":"Zabránit vázání šipky","tools":"Nástroje","shortcuts":"Klávesové zkratky","textFinish":"Dokončit úpravy (textový editor)","textNewLine":"Přidat nový řádek (textový editor)","title":"Nápověda","view":"Zobrazení","zoomToFit":"Přiblížit na zobrazení všech prvků","zoomToSelection":"Přiblížit na výběr","toggleElementLock":"Zamknout/odemknout výběr","movePageUpDown":"Posunout stránku nahoru/dolů","movePageLeftRight":"Přesunout stránku doleva/doprava"},"clearCanvasDialog":{"title":"Vymazat plátno"},"publishDialog":{"title":"Publikovat knihovnu","itemName":"Název položky","authorName":"Jméno autora","githubUsername":"GitHub uživatelské jméno","twitterUsername":"Twitter uživatelské jméno","libraryName":"Název knihovny","libraryDesc":"Popis knihovny","website":"Webová stránka","placeholder":{"authorName":"Jméno nebo uživatelské jméno","libraryName":"Název vaší knihovny","libraryDesc":"Popis Vaší knihovny, který pomůže lidem pochopit její využití","githubHandle":"Github uživatelské jméno (nepovinné), abyste mohli upravovat knihovnu poté co je odeslána ke kontrole","twitterHandle":"Twitter uživatelské jméno (nepovinné), abychom věděli koho označit při propagaci na Twitteru","website":"Odkaz na Vaši osobní webovou stránku nebo jinam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadejte platnou URL adresu"},"noteDescription":"Odešlete svou knihovnu, pro zařazení do veřejného úložiště knihoven, odkud ji budou moci při kreslení využít i ostatní uživatelé.","noteGuidelines":"Knihovna musí být nejdříve ručně schválena. Přečtěte si prosím pokyny","noteLicense":"Odesláním souhlasíte s tím, že knihovna bude zveřejněna pod MIT licencí, stručně řečeno, kdokoli ji může používat bez omezení.","noteItems":"Každá položka knihovny musí mít svůj vlastní název, aby byla filtrovatelná. Následující položky knihovny budou zahrnuty:","atleastOneLibItem":"Vyberte alespoň jednu položku knihovny, kterou chcete začít","republishWarning":"Poznámka: některé z vybraných položek jsou označeny jako již zveřejněné/odeslané. Položky byste měli znovu odeslat pouze při aktualizaci existující knihovny nebo podání."},"publishSuccessDialog":{"title":"Knihovna byla odeslána","content":"Děkujeme vám {{authorName}}. Vaše knihovna byla odeslána k posouzení. Stav můžete sledovat zde"},"confirmDialog":{"resetLibrary":"Resetovat knihovnu","removeItemsFromLib":"Odstranit vybrané položky z knihovny"},"imageExportDialog":{"header":"Exportovat obrázek","label":{"withBackground":"Pozadí","onlySelected":"Pouze vybrané","darkMode":"Tmavý režim","embedScene":"Vložit scénu","scale":"Měřítko","padding":"Odsazení"},"tooltip":{"embedScene":"Data scény budou uložena do exportovaného souboru PNG/SVG tak, aby z něj mohla být scéna obnovena.\\nZvýší se velikost exportovaného souboru."},"title":{"exportToPng":"Exportovat do PNG","exportToSvg":"Exportovat do SVG","copyPngToClipboard":"Kopírovat PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovat do schránky"}},"encrypted":{"tooltip":"Vaše kresby jsou end-to-end šifrované, takže servery Excalidraw je nikdy neuvidí.","link":"Blog příspěvek na end-to-end šifrování v Excalidraw"},"stats":{"angle":"Úhel","element":"Prvek","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybráno","storage":"Úložiště","title":"Statistika pro nerdy","total":"Celkem","version":"Verze","versionCopy":"Kliknutím zkopírujete","versionNotAvailable":"Verze není k dispozici","width":"Šířka"},"toast":{"addedToLibrary":"Přidáno do knihovny","copyStyles":"Styly byly zkopírovány.","copyToClipboard":"Zkopírováno do schránky.","copyToClipboardAsPng":"{{exportSelection}} zkopírován do schránky jako PNG\\n({{exportColorScheme}})","fileSaved":"Soubor byl uložen.","fileSavedToFilename":"Uloženo do {filename}","canvas":"plátno","selection":"výběr","pasteAsSingleElement":"Pomocí {{shortcut}} vložte jako jeden prvek,\\nnebo vložte do existujícího textového editoru","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Průhledná","black":"Černá","white":"Bílá","red":"Červená","pink":"Růžová","grape":"Vínová","violet":"Fialová","gray":"Šedá","blue":"Modrá","cyan":"Azurová","teal":"Modrozelená","green":"Zelená","yellow":"Žlutá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všechna vaše data jsou uložena lokálně ve vašem prohlížeči.","center_heading_plus":"Chcete místo toho přejít na Excalidraw+?","menuHint":"Export, nastavení, jazyky, ..."},"defaults":{"menuHint":"Export, nastavení a další...","center_heading":"Diagramy. Vytvořeny. Jednoduše.","toolbarHint":"Vyberte nástroj a začněte kreslit!","helpHint":"Zkratky a pomoc"}},"colorPicker":{"mostUsedCustomColors":"Nejpoužívanější vlastní barvy","colors":"Barvy","shades":"Stíny","hexCode":"Hex kód","noShades":"Pro tuto barvu nejsou k dispozici žádné odstíny"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js b/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js new file mode 100644 index 0000000..3eeba35 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/da-DK-json-a94944ac6fa9756d2fac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1790],{2392:function(e){e.exports=JSON.parse('{"labels":{"paste":"Indsæt","pasteAsPlaintext":"Indsæt som klartekst","pasteCharts":"Indsæt diagrammer","selectAll":"Marker alle","multiSelect":"Tilføj element til markering","moveCanvas":"Flyt lærred","cut":"Klip","copy":"Kopier","copyAsPng":"Kopier til klippebord som PNG","copyAsSvg":"Kopier til klippebord som SVG","copyText":"Kopiér til udklipsholder som tekst","bringForward":"Flyt fremad","sendToBack":"Placer bagest","bringToFront":"Placer forrest","sendBackward":"Send bagud","delete":"Fjern","copyStyles":"Kopier stil","pasteStyles":"Indsæt stil","stroke":"Linje","background":"Baggrund","fill":"Udfyld","strokeWidth":"Linjebredde","strokeStyle":"Linjeform","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Sjuskethed","opacity":"Gennemsigtighed","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilehoveder","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Bjælke","arrowhead_dot":"Prik","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Skrifttypefamilie","addWatermark":"Tilføj \\"Lavet med Excalidraw\\"","handDrawn":"Hånd-tegnet","normal":"Normal","code":"Kode","small":"Lille","medium":"Mellem","large":"Stor","veryLarge":"Meget stor","solid":"Solid","hachure":"Skravering","zigzag":"Zigzag","crossHatch":"Krydsskravering","thin":"Tynd","bold":"Fed","left":"Venstre","center":"Centrere","right":"Højre","extraBold":"Extra fed","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegneserietegner","fileTitle":"Filnavn","colorPicker":"Farvevælger","canvasColors":"Brugt på lærred","canvasBackground":"Lærredsbaggrund","drawingCanvas":"Tegnelærred","layers":"Lag","actions":"Handlinger","language":"Sprog","liveCollaboration":"Live samarbejde...","duplicateSelection":"Duplikér","untitled":"Unavngivet","name":"Navn","yourName":"Dit navn","madeWithExcalidraw":"Fremstillet med Excalidraw","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"Del","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"Kopier til klippebord","save":"","saveAs":"Gem som","load":"","getShareableLink":"Lav et delbart link","close":"Luk","selectLanguage":"Vælg sprog","scrollBackToContent":"Scroll tilbage til indhold","zoomIn":"Zoom ind","zoomOut":"Zoom ud","resetZoom":"Nulstil zoom","menu":"Menu","done":"Færdig","edit":"Rediger","undo":"Fortryd","redo":"Gendan","resetLibrary":"Nulstil bibliotek","createNewRoom":"Opret nyt rum","fullScreen":"Fuld skærm","darkMode":"Mørk tilstand","lightMode":"Lys baggrund","zenMode":"Zentilstand","objectsSnapMode":"","exitZenMode":"Stop zentilstand","cancel":"Annuller","clear":"Ryd","remove":"Fjern","embed":"","publishLibrary":"Publicér","submit":"Gem","confirm":"Bekræft","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil rydde hele lærredet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke oprette delbart link.","couldNotCreateShareableLinkTooBig":"Kunne ikke oprette delbart link: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke indlæse ugyldig fil","importBackendFailed":"Import fra backend mislykkedes.","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"Klik og træk, slip når du er færdig","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":" Kopiere og indsæt venligst oplysningerne nedenfor i et GitHub problem.","sceneContent":"Scene indhold:"},"roomDialog":{"desc_intro":"Du kan invitere folk til din nuværende scene, så de kan samarbejde med dig.","desc_privacy":"Bare rolig, sessionen bruger end-to-end kryptering, så uanset hvad du tegner vil det forblive privat. Ikke engang vores server vil kunne se, hvad du kommer op med.","button_startSession":"Start session","button_stopSession":"Stop session","desc_inProgressIntro":"Live-samarbejde session er nu begyndt.","desc_shareLink":"Del dette link med enhver, du ønsker at samarbejde med:","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Fejl"},"exportDialog":{"disk_title":"Gem til disk","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"Læs vores blog","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"Statistik for nørder","total":"","version":"","versionCopy":"Klik for at kopiere","versionNotAvailable":"","width":"Bredde"},"toast":{"addedToLibrary":"","copyStyles":"Kopieret stilarter.","copyToClipboard":"Kopieret til klippebord.","copyToClipboardAsPng":"Kopieret {{exportSelection}} til klippebord som PNG\\n({{exportColorScheme}})","fileSaved":"Fil gemt.","fileSavedToFilename":"Gemt som {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js b/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js new file mode 100644 index 0000000..5f02009 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/de-DE-json-d82053ab52357510811b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3082],{2853:function(e){e.exports=JSON.parse('{"labels":{"paste":"Einfügen","pasteAsPlaintext":"Als reinen Text einfügen","pasteCharts":"Diagramme einfügen","selectAll":"Alle auswählen","multiSelect":"Element zur Auswahl hinzufügen","moveCanvas":"Leinwand verschieben","cut":"Ausschneiden","copy":"Kopieren","copyAsPng":"In Zwischenablage kopieren (PNG)","copyAsSvg":"In Zwischenablage kopieren (SVG)","copyText":"In die Zwischenablage als Text kopieren","bringForward":"Nach vorne","sendToBack":"In den Hintergrund","bringToFront":"In den Vordergrund","sendBackward":"Nach hinten","delete":"Löschen","copyStyles":"Formatierung kopieren","pasteStyles":"Formatierung übernehmen","stroke":"Strich","background":"Hintergrund","fill":"Füllung","strokeWidth":"Strichstärke","strokeStyle":"Konturstil","strokeStyle_solid":"Durchgezogen","strokeStyle_dashed":"Gestrichelt","strokeStyle_dotted":"Gepunktet","sloppiness":"Sauberkeit","opacity":"Deckkraft","textAlign":"Textausrichtung","edges":"Kanten","sharp":"Scharf","round":"Rund","arrowheads":"Pfeilspitzen","arrowhead_none":"Keine","arrowhead_arrow":"Pfeil","arrowhead_bar":"Balken","arrowhead_dot":"Punkt","arrowhead_triangle":"Dreieck","fontSize":"Schriftgröße","fontFamily":"Schriftfamilie","addWatermark":"\\"Made with Excalidraw\\" hinzufügen","handDrawn":"Handgezeichnet","normal":"Normal","code":"Code","small":"Klein","medium":"Mittel","large":"Groß","veryLarge":"Sehr groß","solid":"Deckend","hachure":"Schraffiert","zigzag":"Zickzack","crossHatch":"Kreuzschraffiert","thin":"Dünn","bold":"Fett","left":"Links","center":"Zentriert","right":"Rechts","extraBold":"Extra Fett","architect":"Architekt","artist":"Künstler","cartoonist":"Karikaturist","fileTitle":"Dateiname","colorPicker":"Farbauswähler","canvasColors":"Auf Leinwand verwendet","canvasBackground":"Zeichenflächenhintergrund","drawingCanvas":"Leinwand","layers":"Ebenen","actions":"Aktionen","language":"Sprache","liveCollaboration":"Live-Zusammenarbeit...","duplicateSelection":"Duplizieren","untitled":"Unbenannt","name":"Name","yourName":"Dein Name","madeWithExcalidraw":"Made with Excalidraw","group":"Auswahl gruppieren","ungroup":"Gruppierung aufheben","collaborators":"Mitarbeitende","showGrid":"Raster anzeigen","addToLibrary":"Zur Bibliothek hinzufügen","removeFromLibrary":"Aus Bibliothek entfernen","libraryLoadingMessage":"Lade Bibliothek…","libraries":"Bibliotheken durchsuchen","loadingScene":"Lade Zeichnung…","align":"Ausrichten","alignTop":"Obere Kanten","alignBottom":"Untere Kanten","alignLeft":"Linke Kanten","alignRight":"Rechte Kanten","centerVertically":"Vertikal zentrieren","centerHorizontally":"Horizontal zentrieren","distributeHorizontally":"Horizontal verteilen","distributeVertically":"Vertikal verteilen","flipHorizontal":"Horizontal spiegeln","flipVertical":"Vertikal spiegeln","viewMode":"Ansichtsmodus","share":"Teilen","showStroke":"Auswahl für Strichfarbe anzeigen","showBackground":"Hintergrundfarbe auswählen","toggleTheme":"Design umschalten","personalLib":"Persönliche Bibliothek","excalidrawLib":"Excalidraw Bibliothek","decreaseFontSize":"Schriftgröße verkleinern","increaseFontSize":"Schrift vergrößern","unbindText":"Text lösen","bindText":"Text an Container binden","createContainerFromText":"Text in Container einbetten","link":{"edit":"Link bearbeiten","editEmbed":"Link bearbeiten & einbetten","create":"Link erstellen","createEmbed":"Link erstellen & einbetten","label":"Link","labelEmbed":"Verlinken & einbetten","empty":"Kein Link festgelegt"},"lineEditor":{"edit":"Linie bearbeiten","exit":"Linieneditor verlassen"},"elementLock":{"lock":"Sperren","unlock":"Entsperren","lockAll":"Alle sperren","unlockAll":"Alle entsperren"},"statusPublished":"Veröffentlicht","sidebarLock":"Seitenleiste offen lassen","selectAllElementsInFrame":"Alle Elemente im Rahmen auswählen","removeAllElementsFromFrame":"Alle Elemente aus dem Rahmen entfernen","eyeDropper":"Farbe von der Zeichenfläche auswählen"},"library":{"noItems":"Noch keine Elemente hinzugefügt...","hint_emptyLibrary":"Wähle ein Element auf der Zeichenfläche, um es hier hinzuzufügen. Oder installiere eine Bibliothek aus dem öffentlichen Verzeichnis.","hint_emptyPrivateLibrary":"Wähle ein Element von der Zeichenfläche, um es hier hinzuzufügen."},"buttons":{"clearReset":"Zeichenfläche löschen & Hintergrundfarbe zurücksetzen","exportJSON":"In Datei exportieren","exportImage":"Exportiere Bild...","export":"Speichern als...","copyToClipboard":"In Zwischenablage kopieren","save":"In aktueller Datei speichern","saveAs":"Speichern unter","load":"Öffnen","getShareableLink":"Teilbaren Link erhalten","close":"Schließen","selectLanguage":"Sprache auswählen","scrollBackToContent":"Zurück zum Inhalt","zoomIn":"Vergrößern","zoomOut":"Verkleinern","resetZoom":"Zoom zurücksetzen","menu":"Menü","done":"Fertig","edit":"Bearbeiten","undo":"Rückgängig machen","redo":"Wiederholen","resetLibrary":"Bibliothek zurücksetzen","createNewRoom":"Neuen Raum erstellen","fullScreen":"Vollbildanzeige","darkMode":"Dunkles Design","lightMode":"Helles Design","zenMode":"Zen-Modus","objectsSnapMode":"Einrasten an Objekten","exitZenMode":"Zen-Modus verlassen","cancel":"Abbrechen","clear":"Löschen","remove":"Entfernen","embed":"Einbettung umschalten","publishLibrary":"Veröffentlichen","submit":"Absenden","confirm":"Bestätigen","embeddableInteractionButton":"Klicken, um zu interagieren"},"alerts":{"clearReset":"Dies wird die ganze Zeichenfläche löschen. Bist du dir sicher?","couldNotCreateShareableLink":"Konnte keinen teilbaren Link erstellen.","couldNotCreateShareableLinkTooBig":"Konnte keinen teilbaren Link erstellen: Die Zeichnung ist zu groß","couldNotLoadInvalidFile":"Ungültige Datei konnte nicht geladen werden","importBackendFailed":"Import vom Server ist fehlgeschlagen.","cannotExportEmptyCanvas":"Leere Zeichenfläche kann nicht exportiert werden.","couldNotCopyToClipboard":"Kopieren in die Zwischenablage fehlgeschlagen.","decryptFailed":"Daten konnten nicht entschlüsselt werden.","uploadedSecurly":"Der Upload wurde mit Ende-zu-Ende-Verschlüsselung gespeichert. Weder Excalidraw noch Dritte können den Inhalt einsehen.","loadSceneOverridePrompt":"Das Laden einer externen Zeichnung ersetzt den vorhandenen Inhalt. Möchtest du fortfahren?","collabStopOverridePrompt":"Das Stoppen der Sitzung wird deine vorherige, lokal gespeicherte Zeichnung überschreiben. Bist du dir sicher?\\n\\n(Wenn du deine lokale Zeichnung behalten möchtest, schließe stattdessen den Browser-Tab.)","errorAddingToLibrary":"Das Element konnte nicht zur Bibliothek hinzugefügt werden","errorRemovingFromLibrary":"Das Element konnte nicht aus der Bibliothek entfernt werden","confirmAddLibrary":"Dies fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du dir sicher?","imageDoesNotContainScene":"Dieses Bild scheint keine Szenendaten zu enthalten. Hast Du das Einbetten der Szene während des Exports aktiviert?","cannotRestoreFromImage":"Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden","invalidSceneUrl":"Die Szene konnte nicht von der angegebenen URL importiert werden. Sie ist entweder fehlerhaft oder enthält keine gültigen Excalidraw JSON-Daten.","resetLibrary":"Dieses löscht deine Bibliothek. Bist du sicher?","removeItemsFromsLibrary":"{{count}} Element(e) aus der Bibliothek löschen?","invalidEncryptionKey":"Verschlüsselungsschlüssel muss 22 Zeichen lang sein. Die Live-Zusammenarbeit ist deaktiviert.","collabOfflineWarning":"Keine Internetverbindung verfügbar.\\nDeine Änderungen werden nicht gespeichert!"},"errors":{"unsupportedFileType":"Nicht unterstützter Dateityp.","imageInsertError":"Das Bild konnte nicht eingefügt werden. Versuche es später erneut...","fileTooBig":"Die Datei ist zu groß. Die maximal zulässige Größe ist {{maxSize}}.","svgImageInsertError":"SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.","failedToFetchImage":"Bild konnte nicht abgerufen werden.","invalidSVGString":"Ungültige SVG.","cannotResolveCollabServer":"Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.","importLibraryError":"Bibliothek konnte nicht geladen werden","collabSaveFailed":"Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","collabSaveFailed_sizeExceeded":"Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.","brave_measure_text_error":{"line1":"Sieht so aus, als ob Du den Brave-Browser verwendest und die aggressive Blockierung von Fingerabdrücken aktiviert hast.","line2":"Dies könnte dazu führen, dass die Textelemente in Ihren Zeichnungen zerstört werden.","line3":"Wir empfehlen dringend, diese Einstellung zu deaktivieren. Dazu kannst Du diesen Schritten folgen.","line4":"Wenn die Deaktivierung dieser Einstellung die fehlerhafte Anzeige von Textelementen nicht behebt, öffne bitte ein Ticket auf unserem GitHub oder schreibe uns auf Discord"},"libraryElementTypeError":{"embeddable":"Einbettbare Elemente können der Bibliothek nicht hinzugefügt werden.","image":"Unterstützung für das Hinzufügen von Bildern in die Bibliothek kommt bald!"}},"toolBar":{"selection":"Auswahl","image":"Bild einfügen","rectangle":"Rechteck","diamond":"Raute","ellipse":"Ellipse","arrow":"Pfeil","line":"Linie","freedraw":"Zeichnen","text":"Text","library":"Bibliothek","lock":"Ausgewähltes Werkzeug nach Zeichnen aktiv lassen","penMode":"Stift-Modus - Berührung verhindern","link":"Link für ausgewählte Form hinzufügen / aktualisieren","eraser":"Radierer","frame":"Rahmenwerkzeug","embeddable":"Web-Einbettung","laser":"Laserpointer","hand":"Hand (Schwenkwerkzeug)","extraTools":"Weitere Werkzeuge"},"headings":{"canvasActions":"Aktionen für Zeichenfläche","selectedShapeActions":"Aktionen für Auswahl","shapes":"Formen"},"hints":{"canvasPanning":"Um die Zeichenfläche zu verschieben, halte das Mausrad oder die Leertaste während des Ziehens, oder verwende das Hand-Werkzeug","linearElement":"Klicken für Linie mit mehreren Punkten, Ziehen für einzelne Linie","freeDraw":"Klicke und ziehe. Lass los, wenn du fertig bist","text":"Tipp: Du kannst auch Text hinzufügen, indem du mit dem Auswahlwerkzeug auf eine beliebige Stelle doppelklickst","embeddable":"Klicken und ziehen, um eine Webseiten-Einbettung zu erstellen","text_selected":"Doppelklicken oder Eingabetaste drücken, um Text zu bearbeiten","text_editing":"Drücke Escape oder CtrlOrCmd+Eingabetaste, um die Bearbeitung abzuschließen","linearElementMulti":"Zum Beenden auf den letzten Punkt klicken oder Escape oder Eingabe drücken","lockAngle":"Du kannst Winkel einschränken, indem du SHIFT gedrückt hältst","resize":"Du kannst die Proportionen einschränken, indem du SHIFT während der Größenänderung gedrückt hältst. Halte ALT gedrückt, um die Größe vom Zentrum aus zu ändern","resizeImage":"Du kannst die Größe frei ändern, indem du SHIFT gedrückt hältst; halte ALT, um die Größe vom Zentrum aus zu ändern","rotate":"Du kannst Winkel einschränken, indem du SHIFT während der Drehung gedrückt hältst","lineEditor_info":"CtrlOrCmd halten und Doppelklick oder CtrlOrCmd + Eingabe drücken, um Punkte zu bearbeiten","lineEditor_pointSelected":"Drücke Löschen, um Punkt(e) zu entfernen, CtrlOrCmd+D zum Duplizieren oder ziehe zum Verschieben","lineEditor_nothingSelected":"Wähle einen zu bearbeitenden Punkt (halte SHIFT gedrückt um mehrere Punkte auszuwählen),\\noder halte Alt gedrückt und klicke um neue Punkte hinzuzufügen","placeImage":"Klicken, um das Bild zu platzieren oder klicken und ziehen um seine Größe manuell zu setzen","publishLibrary":"Veröffentliche deine eigene Bibliothek","bindTextToElement":"Zum Hinzufügen Eingabetaste drücken","deepBoxSelect":"Halte CtrlOrCmd gedrückt, um innerhalb der Gruppe auszuwählen, und um Ziehen zu vermeiden","eraserRevert":"Halte Alt gedrückt, um die zum Löschen markierten Elemente zurückzusetzen","firefox_clipboard_write":"Diese Funktion kann wahrscheinlich aktiviert werden, indem die Einstellung \\"dom.events.asyncClipboard.clipboardItem\\" auf \\"true\\" gesetzt wird. Um die Browsereinstellungen in Firefox zu ändern, besuche die Seite \\"about:config\\".","disableSnapping":"Halte CtrlOrCmd gedrückt, um das Einrasten zu deaktivieren"},"canvasError":{"cannotShowPreview":"Vorschau kann nicht angezeigt werden","canvasTooBig":"Die Leinwand ist möglicherweise zu groß.","canvasTooBigTip":"Tipp: Schiebe die am weitesten entfernten Elemente ein wenig näher zusammen."},"errorSplash":{"headingMain":"Es ist ein Fehler aufgetreten. Versuche ","clearCanvasMessage":"Wenn das Neuladen nicht funktioniert, versuche ","clearCanvasCaveat":" Dies wird zum Verlust von Daten führen ","trackedToSentry":"Der Fehler mit der Kennung {{eventId}} wurde in unserem System registriert.","openIssueMessage":"Wir waren sehr vorsichtig und haben deine Zeichnungsinformationen nicht in die Fehlerinformationen aufgenommen. Wenn deine Zeichnung nicht privat ist, unterstütze uns bitte über unseren . Bitte teile die unten stehenden Informationen mit uns im GitHub Issue (Kopieren und Einfügen).","sceneContent":"Zeichnungsinhalt:"},"roomDialog":{"desc_intro":"Du kannst Leute zu deiner aktuellen Zeichnung einladen um mit ihnen zusammenzuarbeiten.","desc_privacy":"Keine Sorge, die Sitzung nutzt eine Ende-zu-Ende-Verschlüsselung. Alles was du zeichnest, bleibt privat. Auch unser Server sieht nicht, was du dir einfallen lässt.","button_startSession":"Sitzung starten","button_stopSession":"Sitzung beenden","desc_inProgressIntro":"Die Live-Sitzung wird nun ausgeführt.","desc_shareLink":"Teile diesen Link mit allen, mit denen du zusammenarbeiten möchtest:","desc_exitSession":"Wenn du die Sitzung beendest, wird deine Verbindung zum Raum getrennt. Du kannst jedoch lokal weiter an der Zeichnung arbeiten. Beachte, dass dies keine Auswirkungen auf andere hat und diese weiterhin gemeinsam an ihrer Version arbeiten können.","shareTitle":"An einer Live-Kollaborationssitzung auf Excalidraw teilnehmen"},"errorDialog":{"title":"Fehler"},"exportDialog":{"disk_title":"Auf Festplatte speichern","disk_details":"Exportiere die Zeichnungsdaten in eine Datei, die Du später importieren kannst.","disk_button":"Als Datei speichern","link_title":"Teilbarer Link","link_details":"Als schreibgeschützten Link exportieren.","link_button":"Als Link exportieren","excalidrawplus_description":"Speichere die Szene in deinem Excalidraw+ Arbeitsbereich.","excalidrawplus_button":"Exportieren","excalidrawplus_exportError":"Konnte nicht nach Excalidraw+ exportieren..."},"helpDialog":{"blog":"Lies unseren Blog","click":"klicken","deepSelect":"Auswahl innerhalb der Gruppe","deepBoxSelect":"Auswahl innerhalb der Gruppe, und Ziehen vermeiden","curvedArrow":"Gebogener Pfeil","curvedLine":"Gebogene Linie","documentation":"Dokumentation","doubleClick":"doppelklicken","drag":"ziehen","editor":"Editor","editLineArrowPoints":"Linien-/Pfeil-Punkte bearbeiten","editText":"Text bearbeiten / Label hinzufügen","github":"Ein Problem gefunden? Informiere uns","howto":"Folge unseren Anleitungen","or":"oder","preventBinding":"Pfeil-Bindung verhindern","tools":"Werkzeuge","shortcuts":"Tastaturkürzel","textFinish":"Bearbeitung beenden (Texteditor)","textNewLine":"Neue Zeile hinzufügen (Texteditor)","title":"Hilfe","view":"Ansicht","zoomToFit":"Zoomen um alle Elemente einzupassen","zoomToSelection":"Auf Auswahl zoomen","toggleElementLock":"Auswahl sperren/entsperren","movePageUpDown":"Seite nach oben/unten verschieben","movePageLeftRight":"Seite nach links/rechts verschieben"},"clearCanvasDialog":{"title":"Zeichenfläche löschen"},"publishDialog":{"title":"Bibliothek veröffentlichen","itemName":"Elementname","authorName":"Name des Autors","githubUsername":"GitHub-Benutzername","twitterUsername":"Twitter-Benutzername","libraryName":"Name der Bibliothek","libraryDesc":"Beschreibung der Bibliothek","website":"Webseite","placeholder":{"authorName":"Dein Name oder Benutzername","libraryName":"Name deiner Bibliothek","libraryDesc":"Beschreibung deiner Bibliothek, um anderen Nutzern bei der Verwendung zu helfen","githubHandle":"GitHub-Handle (optional), damit du die Bibliothek bearbeiten kannst, wenn sie zur Überprüfung eingereicht wurde","twitterHandle":"Twitter-Benutzername (optional), damit wir wissen, wen wir bei Werbung über Twitter nennen können","website":"Link zu deiner persönlichen Webseite oder zu anderer Seite (optional)"},"errors":{"required":"Erforderlich","website":"Gültige URL eingeben"},"noteDescription":"Sende deine Bibliothek ein, um in die öffentliche Bibliotheks-Repository aufgenommen zu werdendamit andere Nutzer sie in ihren Zeichnungen verwenden können.","noteGuidelines":"Die Bibliothek muss zuerst manuell freigegeben werden. Bitte lies die Richtlinien vor dem Absenden. Du benötigst ein GitHub-Konto, um zu kommunizieren und Änderungen vorzunehmen, falls erforderlich, aber es ist nicht unbedingt erforderlich.","noteLicense":"Mit dem Absenden stimmst du zu, dass die Bibliothek unter der MIT-Lizenz, die zusammengefasst beinhaltet, dass jeder sie ohne Einschränkungen nutzen kann.","noteItems":"Jedes Bibliothekselement muss einen eigenen Namen haben, damit es gefiltert werden kann. Die folgenden Bibliothekselemente werden hinzugefügt:","atleastOneLibItem":"Bitte wähle mindestens ein Bibliothekselement aus, um zu beginnen","republishWarning":"Hinweis: Einige der ausgewählten Elemente sind bereits als veröffentlicht/eingereicht markiert. Du solltest Elemente nur erneut einreichen, wenn Du eine existierende Bibliothek oder Einreichung aktualisierst."},"publishSuccessDialog":{"title":"Bibliothek übermittelt","content":"Vielen Dank {{authorName}}. Deine Bibliothek wurde zur Überprüfung eingereicht. Du kannst den Status verfolgenhier"},"confirmDialog":{"resetLibrary":"Bibliothek zurücksetzen","removeItemsFromLib":"Ausgewählte Elemente aus der Bibliothek entfernen"},"imageExportDialog":{"header":"Bild exportieren","label":{"withBackground":"Hintergrund","onlySelected":"Nur ausgewählte","darkMode":"Dunkler Modus","embedScene":"Szene einbetten","scale":"Skalierung","padding":"Abstand"},"tooltip":{"embedScene":"Die Zeichnungsdaten werden in der exportierten PNG/SVG-Datei gespeichert, sodass das Dokument später weiter bearbeitet werden kann. \\nDieses wird die exportierte Datei vergrößern."},"title":{"exportToPng":"Als PNG exportieren","exportToSvg":"Als SVG exportieren","copyPngToClipboard":"PNG in die Zwischenablage kopieren"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"In Zwischenablage kopieren"}},"encrypted":{"tooltip":"Da deine Zeichnungen Ende-zu-Ende verschlüsselt werden, sehen auch unsere Excalidraw-Server sie niemals.","link":"Blogbeitrag über Ende-zu-Ende-Verschlüsselung in Excalidraw"},"stats":{"angle":"Winkel","element":"Element","elements":"Elemente","height":"Höhe","scene":"Zeichnung","selected":"Ausgewählt","storage":"Speicher","title":"Statistiken für Nerds","total":"Gesamt","version":"Version","versionCopy":"Zum Kopieren klicken","versionNotAvailable":"Version nicht verfügbar","width":"Breite"},"toast":{"addedToLibrary":"Zur Bibliothek hinzugefügt","copyStyles":"Formatierungen kopiert.","copyToClipboard":"In die Zwischenablage kopiert.","copyToClipboardAsPng":"{{exportSelection}} als PNG in die Zwischenablage kopiert\\n({{exportColorScheme}})","fileSaved":"Datei gespeichert.","fileSavedToFilename":"Als {filename} gespeichert","canvas":"Zeichenfläche","selection":"Auswahl","pasteAsSingleElement":"Verwende {{shortcut}} , um als einzelnes Element\\neinzufügen oder in einen existierenden Texteditor einzufügen","unableToEmbed":"Einbetten dieser URL ist derzeit nicht zulässig. Erstelle einen Issue auf GitHub, um die URL freigeben zu lassen","unrecognizedLinkFormat":"Der Link, den Du eingebettet hast, stimmt nicht mit dem erwarteten Format überein. Bitte versuche den \'embed\' String einzufügen, der von der Quellseite zur Verfügung gestellt wird"},"colors":{"transparent":"Transparent","black":"Schwarz","white":"Weiß","red":"Rot","pink":"Pink","grape":"Traube","violet":"Violett","gray":"Grau","blue":"Blau","cyan":"Cyan","teal":"Blaugrün","green":"Grün","yellow":"Gelb","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Alle Daten werden lokal in Deinem Browser gespeichert.","center_heading_plus":"Möchtest du stattdessen zu Excalidraw+ gehen?","menuHint":"Exportieren, Einstellungen, Sprachen, ..."},"defaults":{"menuHint":"Exportieren, Einstellungen und mehr...","center_heading":"Diagramme. Einfach. Gemacht.","toolbarHint":"Wähle ein Werkzeug & beginne zu zeichnen!","helpHint":"Kurzbefehle & Hilfe"}},"colorPicker":{"mostUsedCustomColors":"Beliebteste benutzerdefinierte Farben","colors":"Farben","shades":"Schattierungen","hexCode":"Hex-Code","noShades":"Keine Schattierungen für diese Farbe verfügbar"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Als Bild exportieren","button":"Als Bild exportieren","description":"Exportiere die Zeichnungsdaten als ein Bild, von dem Du später importieren kannst."},"saveToDisk":{"title":"Auf Festplatte speichern","button":"Auf Festplatte speichern","description":"Exportiere die Zeichnungsdaten in eine Datei, von der Du später importieren kannst."},"excalidrawPlus":{"title":"Excalidraw+","button":"Export nach Excalidraw+","description":"Speichere die Szene in deinem Excalidraw+-Arbeitsbereich."}},"modal":{"loadFromFile":{"title":"Aus Datei laden","button":"Aus Datei laden","description":"Das Laden aus einer Datei wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."},"shareableLink":{"title":"Aus Link laden","button":"Meinen Inhalt ersetzen","description":"Das Laden einer externen Zeichnung wird Deinen vorhandenen Inhalt ersetzen.

Du kannst Deine Zeichnung zuerst mit einer der folgenden Optionen sichern."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js b/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js new file mode 100644 index 0000000..bbdd42b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/el-GR-json-4cbc2dbda5a5df636ee1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1513],{9876:function(e){e.exports=JSON.parse('{"labels":{"paste":"Επικόλληση","pasteAsPlaintext":"Επικόλληση ως απλό κείμενο","pasteCharts":"Επικόλληση γραφημάτων","selectAll":"Επιλογή όλων","multiSelect":"Προσθέστε το στοιχείο στην επιλογή","moveCanvas":"Μετακίνηση καμβά","cut":"Αποκοπή","copy":"Αντιγραφή","copyAsPng":"Αντιγραφή στο πρόχειρο ως PNG","copyAsSvg":"Αντιγραφή στο πρόχειρο ως SVG","copyText":"Αντιγραφή στο πρόχειρο ως κείμενο","bringForward":"Στο προσκήνιο","sendToBack":"Ένα επίπεδο πίσω","bringToFront":"Ένα επίπεδο μπροστά","sendBackward":"Στο παρασκήνιο","delete":"Διαγραφή","copyStyles":"Αντιγραφή εμφάνισης","pasteStyles":"Επικόλληση εμφάνισης","stroke":"Μολυβιά","background":"Φόντο","fill":"Γέμισμα","strokeWidth":"Πάχος μολυβιάς","strokeStyle":"Στυλ περιγράμματος","strokeStyle_solid":"Συμπαγής","strokeStyle_dashed":"Διακεκομμένη με παύλες","strokeStyle_dotted":"Διακεκομμένη με τελείες","sloppiness":"Ακαταστασία","opacity":"Διαφάνεια","textAlign":"Στοίχιση κειμένου","edges":"Άκρες","sharp":"Οξύ","round":"Στρογγυλό","arrowheads":"Σύμβολα βελών","arrowhead_none":"Κανένα","arrowhead_arrow":"Βέλος","arrowhead_bar":"Μπάρα","arrowhead_dot":"Τελεία","arrowhead_triangle":"Τρίγωνο","fontSize":"Μέγεθος γραμματοσειράς","fontFamily":"Γραμματοσειρά","addWatermark":"Προσθήκη \\"Φτιαγμένο με Excalidraw\\"","handDrawn":"Σχεδιασμένο στο χέρι","normal":"Κανονική","code":"Κώδικας","small":"Μικρό","medium":"Μεσαίο","large":"Μεγάλο","veryLarge":"Πολύ μεγάλο","solid":"Συμπαγής","hachure":"Εκκόλαψη","zigzag":"","crossHatch":"Διασταυρούμενη εκκόλαψη","thin":"Λεπτή","bold":"Έντονη","left":"Αριστερά","center":"Κέντρο","right":"Δεξιά","extraBold":"Πολύ έντονη","architect":"Αρχιτέκτονας","artist":"Καλλιτέχνης","cartoonist":"Σκιτσογράφος","fileTitle":"Όνομα αρχείου","colorPicker":"Επιλογή Χρώματος","canvasColors":"Χρησιμοποείται στον καμβά","canvasBackground":"Φόντο καμβά","drawingCanvas":"Σχεδίαση καμβά","layers":"Στρώματα","actions":"Ενέργειες","language":"Γλώσσα","liveCollaboration":"Live συνεργασία...","duplicateSelection":"Δημιουργία αντιγράφου","untitled":"Χωρίς τίτλο","name":"Όνομα","yourName":"Το όνομά σου","madeWithExcalidraw":"Φτιαγμένο με Excalidraw","group":"Δημιουργία ομάδας από επιλογή","ungroup":"Κατάργηση ομάδας από επιλογή","collaborators":"Συνεργάτες","showGrid":"Προβολή πλέγματος","addToLibrary":"Προσθήκη στη βιβλιοθήκη","removeFromLibrary":"Αφαίρεση από τη βιβλιοθήκη","libraryLoadingMessage":"Φόρτωση βιβλιοθήκης…","libraries":"Άλλες βιβλιοθήκες","loadingScene":"Φόρτωση σκηνής…","align":"Στοίχιση","alignTop":"Στοίχιση πάνω","alignBottom":"Στοίχιση κάτω","alignLeft":"Στοίχιση αριστερά","alignRight":"Στοίχιση δεξιά","centerVertically":"Κέντρο κάθετα","centerHorizontally":"Κέντρο οριζόντια","distributeHorizontally":"Οριζόντια κατανομή","distributeVertically":"Κατακόρυφη κατανομή","flipHorizontal":"Οριζόντια αναστροφή","flipVertical":"Κατακόρυφη αναστροφή","viewMode":"Λειτουργία προβολής","share":"Κοινοποίηση","showStroke":"Εμφάνιση επιλογέα χρωμάτων πινελιάς","showBackground":"Εμφάνιση επιλογέα χρώματος φόντου","toggleTheme":"Εναλλαγή θέματος","personalLib":"Προσωπική Βιβλιοθήκη","excalidrawLib":"Βιβλιοθήκη Excalidraw","decreaseFontSize":"Μείωση μεγέθους γραμματοσειράς","increaseFontSize":"Αύξηση μεγέθους γραμματοσειράς","unbindText":"Αποσύνδεση κειμένου","bindText":"Δέσμευση κειμένου στο δοχείο","createContainerFromText":"","link":{"edit":"Επεξεργασία συνδέσμου","editEmbed":"","create":"Δημιουργία συνδέσμου","createEmbed":"","label":"Σύνδεσμος","labelEmbed":"","empty":""},"lineEditor":{"edit":"Επεξεργασία γραμμής","exit":"Έξοδος επεξεργαστή κειμένου"},"elementLock":{"lock":"Κλείδωμα","unlock":"Ξεκλείδωμα","lockAll":"Κλείδωμα όλων","unlockAll":"Ξεκλείδωμα όλων"},"statusPublished":"Δημοσιευμένο","sidebarLock":"Κρατήστε την πλαϊνή μπάρα ανοιχτή","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Δεν έχουν προστεθεί αντικείμενα ακόμη...","hint_emptyLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ, ή εγκαταστήστε μια βιβλιοθήκη από το δημόσιο αποθετήριο, παρακάτω.","hint_emptyPrivateLibrary":"Επιλέξτε ένα στοιχείο στον καμβά για να το προσθέσετε εδώ."},"buttons":{"clearReset":"Επαναφορά του καμβά","exportJSON":"Εξαγωγή σε αρχείο","exportImage":"Εξαγωγή εικόνας...","export":"Αποθήκευση ως...","copyToClipboard":"Αντιγραφή στο πρόχειρο","save":"Αποθήκευση στο τρέχον αρχείο","saveAs":"Αποθήκευση ως","load":"Άνοιγμα","getShareableLink":"Δημόσιος σύνδεσμος","close":"Κλείσιμο","selectLanguage":"Επιλογή γλώσσας","scrollBackToContent":"Μετακινηθείτε πίσω στο περιεχόμενο","zoomIn":"Μεγέθυνση","zoomOut":"Σμίκρυνση","resetZoom":"Επαναφορά μεγέθυνσης","menu":"Μενού","done":"Τέλος","edit":"Επεξεργασία","undo":"Αναίρεση","redo":"Επαναφορά","resetLibrary":"Καθαρισμός βιβλιοθήκης","createNewRoom":"Δημιουργία νέου χώρου","fullScreen":"Πλήρης οθόνη","darkMode":"Σκοτεινή λειτουργία","lightMode":"Φωτεινή λειτουργία","zenMode":"Λειτουργία Zεν","objectsSnapMode":"","exitZenMode":"Έξοδος από την λειτουργία Zen","cancel":"Ακύρωση","clear":"Καθαρισμός","remove":"Κατάργηση","embed":"","publishLibrary":"Δημοσίευση","submit":"Υποβολή","confirm":"Επιβεβαίωση","embeddableInteractionButton":""},"alerts":{"clearReset":"Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;","couldNotCreateShareableLink":"Δεν ήταν δυνατή η δημιουργία συνδέσμου κοινής χρήσης.","couldNotCreateShareableLinkTooBig":"Δεν ήταν δυνατή η δημιουργία κοινόχρηστου συνδέσμου: η σκηνή είναι πολύ μεγάλη","couldNotLoadInvalidFile":"Δεν μπόρεσε να ανοίξει εσφαλμένο αρχείο","importBackendFailed":"Η εισαγωγή από το backend απέτυχε.","cannotExportEmptyCanvas":"Δεν είναι δυνατή η εξαγωγή κενού καμβά.","couldNotCopyToClipboard":"Αδυναμία αντιγραφής στο πρόχειρο.","decryptFailed":"Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.","uploadedSecurly":"Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.","loadSceneOverridePrompt":"Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;","collabStopOverridePrompt":"Η διακοπή της συνεδρίας θα αντικαταστήσει το προηγούμενο, τοπικά αποθηκευμένο σχέδιο. Είστε σίγουροι?\\n\\n(Αν θέλετε να διατηρήσετε το τοπικό σας σχέδιο, απλά κλείστε την καρτέλα του προγράμματος περιήγησης.)","errorAddingToLibrary":"Αδυναμία προσθήκης αντικειμένου στη βιβλιοθήκη","errorRemovingFromLibrary":"Αδυναμία αφαίρεσης αντικειμένου από τη βιβλιοθήκη","confirmAddLibrary":"Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβλιοθήκη σας. Είστε σίγουροι;","imageDoesNotContainScene":"Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει την ενσωμάτωση σκηνής κατά την εξαγωγή;","cannotRestoreFromImage":"Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας","invalidSceneUrl":"Δεν ήταν δυνατή η εισαγωγή σκηνής από το URL που δώσατε. Είτε έχει λάθος μορφή, είτε δεν περιέχει έγκυρα δεδομένα JSON Excalidraw.","resetLibrary":"Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;","removeItemsFromsLibrary":"Διαγραφή {{count}} αντικειμένου(ων) από τη βιβλιοθήκη;","invalidEncryptionKey":"Το κλειδί κρυπτογράφησης πρέπει να είναι 22 χαρακτήρες. Η ζωντανή συνεργασία είναι απενεργοποιημένη.","collabOfflineWarning":"Δεν υπάρχει διαθέσιμη σύνδεση στο internet.\\nΟι αλλαγές σας δεν θα αποθηκευτούν!"},"errors":{"unsupportedFileType":"Μη υποστηριζόμενος τύπος αρχείου.","imageInsertError":"Αδυναμία εισαγωγής εικόνας. Προσπαθήστε ξανά αργότερα...","fileTooBig":"Το αρχείο είναι πολύ μεγάλο. Το μέγιστο επιτρεπόμενο μέγεθος είναι {{maxSize}}.","svgImageInsertError":"Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.","failedToFetchImage":"","invalidSVGString":"Μη έγκυρο SVG.","cannotResolveCollabServer":"Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.","importLibraryError":"Αδυναμία φόρτωσης βιβλιοθήκης","collabSaveFailed":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή. Αν το προβλήματα παραμείνει, θα πρέπει να αποθηκεύσετε το αρχείο σας τοπικά για να βεβαιωθείτε ότι δεν χάνετε την εργασία σας.","collabSaveFailed_sizeExceeded":"Η αποθήκευση στη βάση δεδομένων δεν ήταν δυνατή, ο καμβάς φαίνεται να είναι πολύ μεγάλος. Θα πρέπει να αποθηκεύσετε το αρχείο τοπικά για να βεβαιωθείτε ότι δεν θα χάσετε την εργασία σας.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Επιλογή","image":"Εισαγωγή εικόνας","rectangle":"Ορθογώνιο","diamond":"Ρόμβος","ellipse":"Έλλειψη","arrow":"Βέλος","line":"Γραμμή","freedraw":"Σχεδίαση","text":"Κείμενο","library":"Βιβλιοθήκη","lock":"Κράτησε επιλεγμένο το εργαλείο μετά το σχέδιο","penMode":"Λειτουργία μολυβιού - αποτροπή αφής","link":"Προσθήκη/ Ενημέρωση συνδέσμου για ένα επιλεγμένο σχήμα","eraser":"Γόμα","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Ενέργειες καμβά","selectedShapeActions":"Επιλεγμένες ενέργειες σχήματος","shapes":"Σχήματα"},"hints":{"canvasPanning":"","linearElement":"Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή","freeDraw":"Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει","text":"Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών","embeddable":"","text_selected":"Κάντε διπλό κλικ ή πατήστε ENTER για να επεξεργαστείτε το κείμενο","text_editing":"Πατήστε Escape ή CtrlOrCmd+ENTER για να ολοκληρώσετε την επεξεργασία","linearElementMulti":"Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις","lockAngle":"Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT","resize":"Μπορείς να περιορίσεις τις αναλογίες κρατώντας το SHIFT ενώ αλλάζεις μέγεθος,\\nκράτησε πατημένο το ALT για αλλαγή μεγέθους από το κέντρο","resizeImage":"Μπορείτε να αλλάξετε το μέγεθος ελεύθερα κρατώντας πατημένο το SHIFT,\\nκρατήστε πατημένο το ALT για να αλλάξετε το μέγεθος από το κέντρο","rotate":"Μπορείς να περιορίσεις τις γωνίες κρατώντας πατημένο το πλήκτρο SHIFT κατά την περιστροφή","lineEditor_info":"Κρατήστε πατημένο Ctrl ή Cmd και πατήστε το πλήκτρο Ctrl ή Cmd + Enter για επεξεργασία σημείων","lineEditor_pointSelected":"Πατήστε Διαγραφή για αφαίρεση σημείου(ων),\\nCtrlOrCmd+D για αντιγραφή, ή σύρετε για μετακίνηση","lineEditor_nothingSelected":"Επιλέξτε ένα σημείο για να επεξεργαστείτε (κρατήστε πατημένο το SHIFT για να επιλέξετε πολλαπλά),\\nή κρατήστε πατημένο το Alt και κάντε κλικ για να προσθέσετε νέα σημεία","placeImage":"Κάντε κλικ για να τοποθετήσετε την εικόνα ή κάντε κλικ και σύρετε για να ορίσετε το μέγεθός της χειροκίνητα","publishLibrary":"Δημοσιεύστε τη δική σας βιβλιοθήκη","bindTextToElement":"Πατήστε Enter για προσθήκη κειμένου","deepBoxSelect":"Κρατήστε πατημένο το CtrlOrCmd για να επιλέξετε βαθιά, και να αποτρέψετε τη μεταφορά","eraserRevert":"Κρατήστε πατημένο το Alt για να επαναφέρετε τα στοιχεία που σημειώθηκαν για διαγραφή","firefox_clipboard_write":"Αυτή η επιλογή μπορεί πιθανώς να ενεργοποιηθεί αλλάζοντας την ρύθμιση \\"dom.events.asyncClipboard.clipboardItem\\" σε \\"true\\". Για να αλλάξετε τις ρυθμίσεις του προγράμματος περιήγησης στο Firefox, επισκεφθείτε τη σελίδα \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Αδυναμία εμφάνισης προεπισκόπησης","canvasTooBig":"Ο καμβάς μπορεί να είναι μεγάλος.","canvasTooBigTip":"Συμβουλή: προσπαθήστε να μετακινήσετε τα πιο απομακρυσμένα στοιχεία λίγο πιο κοντά μαζί."},"errorSplash":{"headingMain":"Συνέβη κάποιο σφάλμα. Προσπάθησε ","clearCanvasMessage":"Εάν το παραπάνω δεν δουλέψει, προσπάθησε ","clearCanvasCaveat":" Αυτό θα προκαλέσει απώλεια της δουλειάς σου ","trackedToSentry":"Το σφάλμα με αναγνωριστικό {{eventId}} παρακολουθήθηκε στο σύστημά μας.","openIssueMessage":"Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.","sceneContent":"Περιεχόμενο σκηνής:"},"roomDialog":{"desc_intro":"Μπορείς να προσκαλέσεις άλλους να δουλέψουν μαζί σου.","desc_privacy":"Μην ανησυχείς, η συνεδρία χρησιμοποιεί κρυπτογράφηση από σημείο σε σημείο, άρα οτιδήποτε κάνεις θα παραμείνει ανοιχτό μόνο σε εσένα. Ούτε οι μηχανές μας μπορούν να δουν τι κάνεις.","button_startSession":"Έναρξη Συνεδρίας","button_stopSession":"Τερματισμός Συνεδρίας","desc_inProgressIntro":"Η ζωντανή συνεργασία με άλλους είναι σε ενεργή.","desc_shareLink":"Μοιραστείτε τον σύνδεσμο με όποιον θέλετε να δουλέψετε μαζί:","desc_exitSession":"Η διακοπή θα σας αποσυνδέσει από το δωμάτιο, αλλά θα μπορείτε να συνεχίσετε να δουλεύετε στον πίνακα, τοπικά. Σημειώσατε ότι αυτό δεν θα επηρεάσει τον πίνακα άλλων, και θα μπορούν ακόμα να συνεισφέρουν στην δική τους έκδοση.","shareTitle":"Συμμετάσχετε σε μια ζωντανή συνεδρία συνεργασίας για το Excalidraw"},"errorDialog":{"title":"Σφάλμα"},"exportDialog":{"disk_title":"Αποθήκευση στο δίσκο","disk_details":"Εξαγωγή δεδομένων σκηνής σε ένα αρχείο από το οποίο μπορείτε να εισάγετε αργότερα.","disk_button":"Αποθήκευση σε αρχείο","link_title":"Κοινόχρηστος σύνδεσμος","link_details":"Εξαγωγή ως σύνδεσμο μόνο για ανάγνωση.","link_button":"Εξαγωγή σε Σύνδεση","excalidrawplus_description":"Αποθηκεύστε τη σκηνή στο χώρο εργασίας σας Excalidraw+.","excalidrawplus_button":"Εξαγωγή","excalidrawplus_exportError":"Δεν ήταν δυνατή η εξαγωγή στο Excalidraw+ αυτή τη στιγμή..."},"helpDialog":{"blog":"Διαβάστε το Blog μας","click":"κλικ","deepSelect":"Βαθιά επιλογή","deepBoxSelect":"Βαθιά επιλογή μέσα στο πλαίσιο και αποτροπή συρσίματος","curvedArrow":"Κυρτό βέλος","curvedLine":"Κυρτή γραμμή","documentation":"Εγχειρίδιο","doubleClick":"διπλό κλικ","drag":"σύρε","editor":"Επεξεργαστής","editLineArrowPoints":"","editText":"","github":"Βρήκατε πρόβλημα; Υποβάλετε το","howto":"Ακολουθήστε τους οδηγούς μας","or":"ή","preventBinding":"Αποτροπή δέσμευσης βέλων","tools":"Εργαλεία","shortcuts":"Συντομεύσεις πληκτρολογίου","textFinish":"Ολοκλήρωση επεξεργασίας (επεξεργαστής κειμένου)","textNewLine":"Προσθήκη νέας γραμμής (επεξεργαστής κειμένου)","title":"Βοήθεια","view":"Προβολή","zoomToFit":"Zoom ώστε να χωρέσουν όλα τα στοιχεία","zoomToSelection":"Ζουμ στην επιλογή","toggleElementLock":"Κλείδωμα/Ξεκλείδωμα επιλογής","movePageUpDown":"Μετακίνηση σελίδας πάνω/κάτω","movePageLeftRight":"Μετακίνηση σελίδας αριστερά/δεξιά"},"clearCanvasDialog":{"title":"Καθαρισμός καμβά"},"publishDialog":{"title":"Δημοσίευση βιβλιοθήκης","itemName":"Όνομα αντικειμένου","authorName":"Όνομα δημιουργού","githubUsername":"GitHub username","twitterUsername":"Twitter username","libraryName":"Όνομα βιβλιοθήκης","libraryDesc":"Περιγραφή βιβλιοθήκης","website":"Ιστοσελίδα","placeholder":{"authorName":"Όνομα ή όνομα χρήστη","libraryName":"Όνομα της βιβλιοθήκης σας","libraryDesc":"Περιγραφή της βιβλιοθήκης σας ώστε να βοηθήσει το κοινό να κατανοήσει τη χρήση της","githubHandle":"Όνομα χρήστη στο GitHub (προαιρετικό), ώστε να μπορείτε να επεξεργαστείτε τη βιβλιοθήκη αφού υποβληθεί για αξιολόγηση","twitterHandle":"Όνομα χρήστη Twitter (προαιρετικό), ώστε να γνωρίζουμε σε ποιον/η να δώσουμε εύσημα κατά την προώθηση μέσω Twitter","website":"Σύνδεσμος για την προσωπική σας ιστοσελίδα ή αλλού (προαιρετικό)"},"errors":{"required":"Απαιτείται","website":"Εισάγετε μια έγκυρη διεύθυνση URL"},"noteDescription":"Υποβάλετε τη βιβλιοθήκη σας για να συμπεριληφθεί στο δημόσιο αποθετήριο βιβλιοθήκηςώστε να χρησιμοποιηθεί από άλλα άτομα στα σχέδιά τους.","noteGuidelines":"Η βιβλιοθήκη πρέπει πρώτα να εγκριθεί χειροκίνητα. Παρακαλώ διαβάστε τους οδηγίες πριν την υποβολή. Θα χρειαστείτε έναν λογαριασμό GitHub για την επικοινωνία και για να προβείτε σε αλλαγές εφ\' όσον χρειαστεί, αλλά δεν είναι αυστηρή απαίτηση.","noteLicense":"Με την υποβολή, συμφωνείτε ότι η βιβλιοθήκη θα δημοσιευθεί υπό την Άδεια MIT, που εν συντομία σημαίνει ότι ο καθένας μπορεί να τα χρησιμοποιήσει χωρίς περιορισμούς.","noteItems":"Κάθε αντικείμενο της βιβλιοθήκης πρέπει να έχει το δικό του όνομα ώστε να μπορεί να φιλτραριστεί. Θα συμπεριληφθούν τα ακόλουθα αντικείμενα βιβλιοθήκης:","atleastOneLibItem":"Παρακαλώ επιλέξτε τουλάχιστον ένα αντικείμενο βιβλιοθήκης για να ξεκινήσετε","republishWarning":"Σημείωση: μερικά από τα επιλεγμένα αντικέιμενα έχουν ήδη επισημανθεί ως δημοσιευμένα/υποβεβλημένα. Θα πρέπει να υποβάλετε αντικείμενα εκ νέου μόνο για να ενημερώσετε μία ήδη υπάρχουσα βιβλιοθήκη ή υποβολή."},"publishSuccessDialog":{"title":"Η βιβλιοθήκη υποβλήθηκε","content":"Ευχαριστούμε {{authorName}}. Η βιβλιοθήκη σας έχει υποβληθεί για αξιολόγηση. Μπορείτε να παρακολουθείτε τη διαδικασίαεδώ"},"confirmDialog":{"resetLibrary":"Καθαρισμός βιβλιοθήκης","removeItemsFromLib":"Αφαίρεση επιλεγμένων αντικειμένων από τη βιβλιοθήκη"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα είναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw.","link":"Blog post στην κρυπτογράφηση end-to-end στο Excalidraw"},"stats":{"angle":"Γωνία","element":"Στοιχείο","elements":"Στοιχεία","height":"Ύψος","scene":"Σκηνή","selected":"Επιλεγμένα","storage":"Χώρος","title":"Στατιστικά για σπασίκλες","total":"Σύνολο ","version":"Έκδοση","versionCopy":"Κάνε κλικ για αντιγραφή","versionNotAvailable":"Έκδοση μη διαθέσιμη","width":"Πλάτος"},"toast":{"addedToLibrary":"Προστέθηκε στη βιβλιοθήκη","copyStyles":"Αντιγράφηκαν στυλ.","copyToClipboard":"Αντιγράφηκε στο πρόχειρο.","copyToClipboardAsPng":"Αντιγράφηκε {{exportSelection}} στο πρόχειρο ως PNG\\n({{exportColorScheme}})","fileSaved":"Το αρχείο αποθηκεύτηκε.","fileSavedToFilename":"Αποθηκεύτηκε στο {filename}","canvas":"καμβάς","selection":"επιλογή","pasteAsSingleElement":"Χρησιμοποίησε το {{shortcut}} για να επικολλήσεις ως ένα μόνο στοιχείο,\\nή να επικολλήσεις σε έναν υπάρχοντα επεξεργαστή κειμένου","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Διαφανές","black":"Μαύρο","white":"Λευκό","red":"Κόκκινο","pink":"Ροζ","grape":"Σταφυλί","violet":"Βιολετί","gray":"Γκρι","blue":"Μπλε","cyan":"Κυανό","teal":"Τιρκουάζ","green":"Πράσινο","yellow":"Κίτρινο","orange":"Πορτοκαλί","bronze":"Χαλκινο"},"welcomeScreen":{"app":{"center_heading":"Όλα τα δεδομένα σας αποθηκεύονται τοπικά στο πρόγραμμα περιήγησης.","center_heading_plus":"Μήπως θέλατε να πάτε στο Excalidraw+;","menuHint":"Εξαγωγή, προτιμήσεις, γλώσσες, ..."},"defaults":{"menuHint":"Εξαγωγή, προτιμήσεις και άλλες επιλογές...","center_heading":"Διαγράμματα. Εύκολα. Γρήγορα.","toolbarHint":"Επιλέξτε ένα εργαλείο και ξεκινήστε να σχεδιάζεται!","helpHint":"Συντομεύσεις και βοήθεια"}},"colorPicker":{"mostUsedCustomColors":"Πιο χρησιμοποιούμενα χρώματα","colors":"Χρώματα","shades":"Αποχρώσεις","hexCode":"Κωδικός Hex","noShades":"Δεν υπάρχουν διαθέσιμες αποχρώσεις για αυτό το χρώμα"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js b/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js new file mode 100644 index 0000000..2536f69 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/es-ES-json-7afb66536ee40d852fa2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8759],{2264:function(e){e.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar como texto sin formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Añadir elemento a la selección","moveCanvas":"Mover el lienzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar al portapapeles como PNG","copyAsSvg":"Copiar al portapapeles como SVG","copyText":"Copiar al portapapeles como texto","bringForward":"Traer hacia delante","sendToBack":"Enviar al fondo","bringToFront":"Traer al frente","sendBackward":"Enviar atrás","delete":"Borrar","copyStyles":"Copiar estilos","pasteStyles":"Pegar estilos","stroke":"Trazo","background":"Fondo","fill":"Rellenar","strokeWidth":"Grosor del trazo","strokeStyle":"Estilo del trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Discontinua","strokeStyle_dotted":"Punteado","sloppiness":"Estilo de trazo","opacity":"Opacidad","textAlign":"Alineado de texto","edges":"Bordes","sharp":"Afilado","round":"Redondo","arrowheads":"Puntas de flecha","arrowhead_none":"Ninguna","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño de la fuente","fontFamily":"Tipo de fuente","addWatermark":"Agregar \\"Hecho con Excalidraw\\"","handDrawn":"Dibujado a mano","normal":"Normal","code":"Código","small":"Pequeña","medium":"Mediana","large":"Grande","veryLarge":"Muy grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Rayado transversal","thin":"Fino","bold":"Grueso","left":"Izquierda","center":"Centrado","right":"Derecha","extraBold":"Extra negrita","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nombre del archivo","colorPicker":"Selector de color","canvasColors":"Usado en lienzo","canvasBackground":"Fondo del lienzo","drawingCanvas":"Lienzo de dibujo","layers":"Capas","actions":"Acciones","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sin título","name":"Nombre","yourName":"Tu nombre","madeWithExcalidraw":"Hecho con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Añadir a la biblioteca","removeFromLibrary":"Eliminar de la biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Alinear","alignTop":"Alineación superior","alignBottom":"Alineación inferior","alignLeft":"Alinear a la izquierda","alignRight":"Alinear a la derecha","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Girar horizontalmente","flipVertical":"Girar verticalmente","viewMode":"Modo presentación","share":"Compartir","showStroke":"Mostrar selector de color de trazo","showBackground":"Mostrar el selector de color de fondo","toggleTheme":"Cambiar tema","personalLib":"Biblioteca personal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Disminuir tamaño de letra","increaseFontSize":"Aumentar el tamaño de letra","unbindText":"Desvincular texto","bindText":"Vincular texto al contenedor","createContainerFromText":"Envolver el texto en un contenedor","link":{"edit":"Editar enlace","editEmbed":"Editar enlace e incrustar","create":"Crear enlace","createEmbed":"Crear enlace e incrustar","label":"Enlace","labelEmbed":"Enlazar e incrustar","empty":"No se ha establecido un enlace"},"lineEditor":{"edit":"Editar línea","exit":"Salir del editor en línea"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Mantener barra lateral abierta","selectAllElementsInFrame":"Seleccionar todos los elementos en el marco","removeAllElementsFromFrame":"Eliminar todos los elementos del marco","eyeDropper":"Seleccionar un color del lienzo"},"library":{"noItems":"No hay elementos añadidos todavía...","hint_emptyLibrary":"Seleccione un elemento en el lienzo para añadirlo aquí, o instale una biblioteca del repositorio público, a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento del lienzo para añadirlo aquí."},"buttons":{"clearReset":"Limpiar lienzo y reiniciar el color de fondo","exportJSON":"Exportar a archivo","exportImage":"Exportar imagen...","export":"Guardar en...","copyToClipboard":"Copiar al portapapeles","save":"Guardar en archivo actual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obtener enlace para compartir","close":"Cerrar","selectLanguage":"Elegir idioma","scrollBackToContent":"Volver al contenido","zoomIn":"Acercarse","zoomOut":"Alejarse","resetZoom":"Restablecer zoom","menu":"Menú","done":"Hecho","edit":"Editar","undo":"Deshacer","redo":"Rehacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nueva sala","fullScreen":"Pantalla completa","darkMode":"Modo oscuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"Ajustar a los objetos","exitZenMode":"Salir del modo Zen","cancel":"Cancelar","clear":"Borrar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Pulsa para interactuar"},"alerts":{"clearReset":"Esto limpiará todo el lienzo. Estás seguro?","couldNotCreateShareableLink":"No se pudo crear un enlace para compartir.","couldNotCreateShareableLinkTooBig":"No se pudo crear el enlace para compartir: la escena es demasiado grande","couldNotLoadInvalidFile":"No se pudo cargar el archivo no válido","importBackendFailed":"La importación falló.","cannotExportEmptyCanvas":"No se puede exportar un lienzo vació","couldNotCopyToClipboard":"No se pudo copiar al portapapeles.","decryptFailed":"No se pudieron descifrar los datos.","uploadedSecurly":"La carga ha sido asegurada con cifrado de principio a fin, lo que significa que el servidor de Excalidraw y terceros no pueden leer el contenido.","loadSceneOverridePrompt":"Si carga este dibujo externo, reemplazará el que tiene. ¿Desea continuar?","collabStopOverridePrompt":"Detener la sesión sobrescribirá su dibujo anterior almacenado localmente. ¿Está seguro?\\n\\n(Si desea mantener su dibujo local, simplemente cierre la pestaña del navegador.)","errorAddingToLibrary":"No se pudo agregar el elemento a la biblioteca","errorRemovingFromLibrary":"No se pudo quitar el elemento de la biblioteca","confirmAddLibrary":"Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?","imageDoesNotContainScene":"Esta imagen no parece contener datos de escena. ¿Ha habilitado la inserción de la escena durante la exportación?","cannotRestoreFromImage":"No se pudo restaurar la escena desde este archivo de imagen","invalidSceneUrl":"No se ha podido importar la escena desde la URL proporcionada. Está mal formada, o no contiene datos de Excalidraw JSON válidos.","resetLibrary":"Esto borrará tu biblioteca. ¿Estás seguro?","removeItemsFromsLibrary":"¿Eliminar {{count}} elemento(s) de la biblioteca?","invalidEncryptionKey":"La clave de cifrado debe tener 22 caracteres. La colaboración en vivo está deshabilitada.","collabOfflineWarning":"No hay conexión a internet disponible.\\n¡No se guardarán los cambios!"},"errors":{"unsupportedFileType":"Tipo de archivo no admitido.","imageInsertError":"No se pudo insertar la imagen. Inténtelo de nuevo más tarde...","fileTooBig":"Archivo demasiado grande. El tamaño máximo permitido es {{maxSize}}.","svgImageInsertError":"No se pudo insertar la imagen SVG. El código SVG parece inválido.","failedToFetchImage":"","invalidSVGString":"SVG no válido.","cannotResolveCollabServer":"No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.","importLibraryError":"No se pudo cargar la librería","collabSaveFailed":"No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.","collabSaveFailed_sizeExceeded":"No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo.","brave_measure_text_error":{"line1":"Parece que estás usando el navegador Brave con el ajuste Forzar el bloqueo de huellas digitales habilitado.","line2":"Esto podría resultar en errores en los Elementos de Texto en tus dibujos.","line3":"Recomendamos fuertemente deshabilitar esta configuración. Puedes seguir estos pasos sobre cómo hacerlo.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Insertar imagen","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Flecha","line":"Línea","freedraw":"Dibujar","text":"Texto","library":"Biblioteca","lock":"Mantener la herramienta seleccionada activa después de dibujar","penMode":"Modo Lápiz - previene toque","link":"Añadir/Actualizar enlace para una forma seleccionada","eraser":"Borrar","frame":"","embeddable":"Incrustar Web","laser":"Puntero láser","hand":"Mano (herramienta de panoramización)","extraTools":"Más herramientas"},"headings":{"canvasActions":"Acciones del lienzo","selectedShapeActions":"Acciones de la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover el lienzo, mantenga la rueda del ratón o la barra espaciadora mientras arrastra o utilice la herramienta de mano","linearElement":"Haz clic para dibujar múltiples puntos, arrastrar para solo una línea","freeDraw":"Haz clic y arrastra, suelta al terminar","text":"Consejo: también puedes añadir texto haciendo doble clic en cualquier lugar con la herramienta de selección","embeddable":"Haga clic y arrastre para crear un sitio web incrustado","text_selected":"Doble clic o pulse ENTER para editar el texto","text_editing":"Pulse Escape o Ctrl/Cmd + ENTER para terminar de editar","linearElementMulti":"Haz clic en el último punto o presiona Escape o Enter para finalizar","lockAngle":"Puedes restringir el ángulo manteniendo presionado el botón SHIFT","resize":"Para mantener las proporciones mantén SHIFT presionado mientras modificas el tamaño, \\nmantén presionado ALT para modificar el tamaño desde el centro","resizeImage":"Puede redimensionar libremente pulsando SHIFT,\\npulse ALT para redimensionar desde el centro","rotate":"Puedes restringir los ángulos manteniendo presionado SHIFT mientras giras","lineEditor_info":"Mantenga pulsado CtrlOrCmd y haga doble click o presione CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Presione Suprimir para eliminar el/los punto(s), CtrlOrCmd+D para duplicarlo, o arrástrelo para moverlo","lineEditor_nothingSelected":"Seleccione un punto a editar (mantenga MAYÚSCULAS para seleccionar múltiples),\\no mantenga pulsado Alt y haga click para añadir nuevos puntos","placeImage":"Haga clic para colocar la imagen o haga click y arrastre para establecer su tamaño manualmente","publishLibrary":"Publica tu propia biblioteca","bindTextToElement":"Presione Entrar para agregar","deepBoxSelect":"Mantén CtrlOrCmd para seleccionar en profundidad, y para evitar arrastrar","eraserRevert":"Mantenga pulsado Alt para revertir los elementos marcados para su eliminación","firefox_clipboard_write":"Esta característica puede ser habilitada estableciendo la bandera \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar las banderas del navegador en Firefox, visite la página \\"about:config\\".","disableSnapping":"Mantén pulsado CtrlOrCmd para desactivar el ajuste"},"canvasError":{"cannotShowPreview":"No se puede mostrar la vista previa","canvasTooBig":"El lienzo podría ser demasiado grande.","canvasTooBigTip":"Sugerencia: intenta acercar un poco más los elementos más lejanos."},"errorSplash":{"headingMain":"Se encontró un error. Intente ","clearCanvasMessage":"Si la recarga no funciona, intente ","clearCanvasCaveat":" Esto provocará la pérdida de su trabajo ","trackedToSentry":"El error con el identificador {{eventId}} fue rastreado en nuestro sistema.","openIssueMessage":"Fuimos muy cautelosos de no incluir la información de tu escena en el error. Si tu escena no es privada, por favor considera seguir nuestro Por favor, incluya la siguiente información copiándola y pegándola en el issue de GitHub.","sceneContent":"Contenido de la escena:"},"roomDialog":{"desc_intro":"Puede invitar a otras personas a tu actual escena para que colaboren contigo.","desc_privacy":"No te preocupes, la sesión usa encriptación de punta a punta, por lo que todo lo que se dibuje se mantendrá privadamente. Ni siquiera nuestro servidor podrá ver lo que haces.","button_startSession":"Iniciar sesión","button_stopSession":"Detener sesión","desc_inProgressIntro":"La sesión de colaboración en vivo está ahora en progreso.","desc_shareLink":"Comparte este enlace con cualquier persona con quien quieras colaborar:","desc_exitSession":"Detener la sesión te desconectará de la sala, pero podrás seguir trabajando con la escena en su computadora, esto es de modo local. Ten en cuenta que esto no afectará a otras personas, y que las mismas seguirán siendo capaces de colaborar en tu escena.","shareTitle":"Únase a una sesión colaborativa en vivo en Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Guardar en disco","disk_details":"Exportar los datos de la escena a un archivo desde el cual pueda importar más tarde.","disk_button":"Guardar en archivo","link_title":"Enlace para compartir","link_details":"Exportar como enlace de sólo lectura.","link_button":"Exportar a Link","excalidrawplus_description":"Guarde la escena en su espacio de trabajo de Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"No se pudo exportar a Excalidraw+ en este momento..."},"helpDialog":{"blog":"Lea nuestro blog","click":"click","deepSelect":"Selección profunda","deepBoxSelect":"Seleccione en profundidad dentro de la caja, y evite arrastrar","curvedArrow":"Flecha curva","curvedLine":"Línea curva","documentation":"Documentación","doubleClick":"doble clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"Editar puntos de línea/flecha","editText":"Editar texto / añadir etiqueta","github":"¿Ha encontrado un problema? Envíelo","howto":"Siga nuestras guías","or":"o","preventBinding":"Evitar enlace de flechas","tools":"Herramientas","shortcuts":"Atajos del teclado","textFinish":"Finalizar edición (editor de texto)","textNewLine":"Añadir nueva linea (editor de texto)","title":"Ayuda","view":"Vista","zoomToFit":"Ajustar la vista para mostrar todos los elementos","zoomToSelection":"Ampliar selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover página hacia arriba/abajo","movePageLeftRight":"Mover página hacia la izquierda/derecha"},"clearCanvasDialog":{"title":"Borrar lienzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nombre del artículo","authorName":"Nombre del autor","githubUsername":"Nombre de usuario de GitHub","twitterUsername":"Nombre de usuario de Twitter","libraryName":"Nombre de la biblioteca","libraryDesc":"Descripción de la biblioteca","website":"Sitio Web","placeholder":{"authorName":"Nombre o nombre de usuario","libraryName":"Nombre de tu biblioteca","libraryDesc":"Descripción de su biblioteca para ayudar a la gente a entender su uso","githubHandle":"Nombre de usuario de GitHub (opcional), así podrá editar la biblioteca una vez enviada para su revisión","twitterHandle":"Nombre de usuario de Twitter (opcional), así sabemos a quién acreditar cuando se promociona en Twitter","website":"Enlace a su sitio web personal o en cualquier otro lugar (opcional)"},"errors":{"required":"Requerido","website":"Introduce una URL válida"},"noteDescription":"Envía tu biblioteca para ser incluida en el repositorio de librería públicapara que otras personas utilicen en sus dibujos.","noteGuidelines":"La biblioteca debe ser aprobada manualmente primero. Por favor, lea la pautas antes de enviar. Necesitará una cuenta de GitHub para comunicarse y hacer cambios si se solicita, pero no es estrictamente necesario.","noteLicense":"Al enviar, usted acepta que la biblioteca se publicará bajo el Licencia MIT que en breve significa que cualquiera puede utilizarlos sin restricciones.","noteItems":"Cada elemento de la biblioteca debe tener su propio nombre para que sea filtrable. Los siguientes elementos de la biblioteca serán incluidos:","atleastOneLibItem":"Por favor, seleccione al menos un elemento de la biblioteca para empezar","republishWarning":"Nota: algunos de los elementos seleccionados están marcados como ya publicados/enviados. Sólo debería volver a enviar elementos cuando se actualice una biblioteca o envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Gracias {{authorName}}. Su biblioteca ha sido enviada para ser revisada. Puede seguir el estadoaquí"},"confirmDialog":{"resetLibrary":"Reiniciar biblioteca","removeItemsFromLib":"Eliminar elementos seleccionados de la biblioteca"},"imageExportDialog":{"header":"Exportar imagen","label":{"withBackground":"Fondo","onlySelected":"Sólo seleccionados","darkMode":"Modo oscuro","embedScene":"Incrustar escena","scale":"Escalar","padding":"Espaciado"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG al portapapeles"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar al portapapeles"}},"encrypted":{"tooltip":"Tus dibujos están cifrados de punto a punto, por lo que los servidores de Excalidraw nunca los verán.","link":"Entrada en el blog sobre cifrado de extremo a extremo"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamiento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Click para copiar","versionNotAvailable":"Versión no disponible","width":"Ancho"},"toast":{"addedToLibrary":"Añadido a la biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado en el portapapeles.","copyToClipboardAsPng":"Copiado {{exportSelection}} al portapapeles como PNG\\n({{exportColorScheme}})","fileSaved":"Archivo guardado.","fileSavedToFilename":"Guardado en {filename}","canvas":"lienzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un solo elemento,\\no pegar en un editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Blanco","red":"Rojo","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"Cian","teal":"Turquesa","green":"Verde","yellow":"Amarillo","orange":"Naranja","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda su información es guardada localmente en su navegador.","center_heading_plus":"¿Quieres ir a Excalidraw+?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias y más...","center_heading":"Diagramas. Hecho. Simplemente.","toolbarHint":"¡Elige una herramienta y empieza a dibujar!","helpHint":"Atajos y ayuda"}},"colorPicker":{"mostUsedCustomColors":"Colores personalizados más utilizados","colors":"Colores","shades":"","hexCode":"Código Hexadecimal","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagen","button":"Exportar como imagen","description":""},"saveToDisk":{"title":"Guardar en el disco","button":"Guardar en el disco","description":"Exporta los datos de la escena a un archivo desde el cual podrás importar más tarde."},"excalidrawPlus":{"title":"","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar desde un archivo","button":"Cargar desde un archivo","description":""},"shareableLink":{"title":"Cargar desde un enlace","button":"Reemplazar mi contenido","description":"Cargar un dibujo externo reemplazará tu contenido existente.

Puedes primero hacer una copia de seguridad de tu dibujo usando una de las opciones de abajo."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js b/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js new file mode 100644 index 0000000..06af677 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/eu-ES-json-671a4afcfce7b0a7660b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8081],{5658:function(a){a.exports=JSON.parse('{"labels":{"paste":"Itsatsi","pasteAsPlaintext":"Itsatsi testu arrunt gisa","pasteCharts":"Itsatsi grafikoak","selectAll":"Hautatu dena","multiSelect":"Gehitu elementua hautapenera","moveCanvas":"Mugitu oihala","cut":"Ebaki","copy":"Kopiatu","copyAsPng":"Kopiatu arbelera PNG gisa","copyAsSvg":"Kopiatu arbelera SVG gisa","copyText":"Kopiatu arbelera testu gisa","bringForward":"Ekarri aurrerago","sendToBack":"Eraman atzera","bringToFront":"Ekarri aurrera","sendBackward":"Eraman atzerago","delete":"Ezabatu","copyStyles":"Kopiatu estiloak","pasteStyles":"Itsatsi estiloak","stroke":"Marra","background":"Atzeko planoa","fill":"Bete","strokeWidth":"Marraren zabalera","strokeStyle":"Marraren estiloa","strokeStyle_solid":"Solidoa","strokeStyle_dashed":"Marratua","strokeStyle_dotted":"Puntukatua","sloppiness":"Marraren trazoa","opacity":"Opakotasuna","textAlign":"Testuaren lerrokapena","edges":"Ertzak","sharp":"Ertz bizia","round":"Borobildua","arrowheads":"Gezi-puntak","arrowhead_none":"Bat ere ez","arrowhead_arrow":"Gezia","arrowhead_bar":"Barra","arrowhead_dot":"Puntua","arrowhead_triangle":"Hirukia","fontSize":"Letra-tamaina","fontFamily":"Letra-tipoa","addWatermark":"Gehitu \\"Excalidraw bidez egina\\"","handDrawn":"Eskuz marraztua","normal":"Normala","code":"Kodea","small":"Txikia","medium":"Ertaina","large":"Handia","veryLarge":"Oso handia","solid":"Solidoa","hachure":"Itzalduna","zigzag":"Sigi-saga","crossHatch":"Marraduna","thin":"Mehea","bold":"Lodia","left":"Ezkerrean","center":"Erdian","right":"Eskuinean","extraBold":"Oso lodia","architect":"Arkitektoa","artist":"Artista","cartoonist":"Marrazkilaria","fileTitle":"Fitxategi izena","colorPicker":"Kolore-hautatzailea","canvasColors":"Oihalean erabilita","canvasBackground":"Oihalaren atzeko planoa","drawingCanvas":"Marrazteko oihala","layers":"Geruzak","actions":"Ekintzak","language":"Hizkuntza","liveCollaboration":"Zuzeneko elkarlana...","duplicateSelection":"Bikoiztu","untitled":"Izengabea","name":"Izena","yourName":"Zure izena","madeWithExcalidraw":"Excalidraw bidez egina","group":"Hautapena taldea bihurtu","ungroup":"Desegin hautapenaren taldea","collaborators":"Kolaboratzaileak","showGrid":"Erakutsi sareta","addToLibrary":"Gehitu liburutegira","removeFromLibrary":"Kendu liburutegitik","libraryLoadingMessage":"Liburutegia kargatzen…","libraries":"Arakatu liburutegiak","loadingScene":"Eszena kargatzen…","align":"Lerrokatu","alignTop":"Lerrokatu goian","alignBottom":"Lerrokatu behean","alignLeft":"Lerrokatu ezkerrean","alignRight":"Lerrokatu eskuinean","centerVertically":"Erdiratu bertikalki","centerHorizontally":"Erdiratu horizontalki","distributeHorizontally":"Banandu horizontalki","distributeVertically":"Banandu bertikalki","flipHorizontal":"Irauli horizontalki","flipVertical":"Irauli bertikalki","viewMode":"Ikuspegia","share":"Partekatu","showStroke":"Erakutsi marraren kolore-hautatzailea","showBackground":"Erakutsi atzeko planoaren kolore-hautatzailea","toggleTheme":"Aldatu gaia","personalLib":"Liburutegi pertsonala","excalidrawLib":"Excalidraw liburutegia","decreaseFontSize":"Txikitu letra tamaina","increaseFontSize":"Handitu letra tamaina","unbindText":"Askatu testua","bindText":"Lotu testua edukiontziari","createContainerFromText":"Bilatu testua edukiontzi batean","link":{"edit":"Editatu esteka","editEmbed":"Editatu esteka eta kapsulatu","create":"Sortu esteka","createEmbed":"Sortu esteka eta kapsulatu","label":"Esteka","labelEmbed":"Esteka eta kapsula","empty":"Ez da estekarik ezarri"},"lineEditor":{"edit":"Editatu lerroa","exit":"Irten lerro-editoretik"},"elementLock":{"lock":"Blokeatu","unlock":"Desblokeatu","lockAll":"Blokeatu guztiak","unlockAll":"Desblokeatu guztiak"},"statusPublished":"Argitaratua","sidebarLock":"Mantendu alboko barra irekita","selectAllElementsInFrame":"Hautatu markoko elementu guztiak","removeAllElementsFromFrame":"Kendu markoko elementu guztiak","eyeDropper":"Aukeratu kolorea oihaletik"},"library":{"noItems":"Oraindik ez da elementurik gehitu...","hint_emptyLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko, edo instalatu liburutegi bat beheko biltegi publikotik.","hint_emptyPrivateLibrary":"Hautatu oihaleko elementu bat hemen gehitzeko."},"buttons":{"clearReset":"Garbitu oihala","exportJSON":"Esportatu fitxategira","exportImage":"Esportatu irudia...","export":"Gorde hemen...","copyToClipboard":"Kopiatu arbelera","save":"Gorde uneko fitxategian","saveAs":"Gorde honela","load":"Ireki","getShareableLink":"Lortu partekatzeko esteka","close":"Itxi","selectLanguage":"Hautatu hizkuntza","scrollBackToContent":"Joan atzera edukira","zoomIn":"Handiagotu","zoomOut":"Txikiagotu","resetZoom":"Leheneratu zooma","menu":"Menua","done":"Egina","edit":"Editatu","undo":"Desegin","redo":"Berregin","resetLibrary":"Leheneratu liburutegia","createNewRoom":"Sortu gela berria","fullScreen":"Pantaila osoa","darkMode":"Modu iluna","lightMode":"Modu argia","zenMode":"Zen modua","objectsSnapMode":"Atxiki objektuei","exitZenMode":"Irten Zen modutik","cancel":"Utzi","clear":"Garbitu","remove":"Kendu","embed":"Aldatu kapsulatzea","publishLibrary":"Argitaratu","submit":"Bidali","confirm":"Bai","embeddableInteractionButton":"Egin klik elkar eragiteko"},"alerts":{"clearReset":"Honek oihal osoa garbituko du. Ziur zaude?","couldNotCreateShareableLink":"Ezin izan da partekatzeko estekarik sortu.","couldNotCreateShareableLinkTooBig":"Ezin izan da partekatzeko estekarik sortu: eszena handiegia da","couldNotLoadInvalidFile":"Ezin izan da kargatu, fitxategiak ez du balio","importBackendFailed":"Inportazioak huts egin du.","cannotExportEmptyCanvas":"Ezin izan da oihal hutsa esportatu.","couldNotCopyToClipboard":"Ezin izan da arbelean kopiatu.","decryptFailed":"Ezin izan da deszifratu.","uploadedSecurly":"Kargatzea muturretik muturrerako zifratze bidez ziurtatu da, hau da, Excalidraw zerbitzariak eta hirugarrenek ezin dutela edukia irakurri.","loadSceneOverridePrompt":"Kanpoko marrazkia kargatzeak lehendik duzun edukia ordezkatuko du. Jarraitu nahi duzu?","collabStopOverridePrompt":"Saioa gelditzeak lokalean gordetako zure aurreko marrazkia gainidatziko du. Ziur zaude?\\n\\n(Zure marrazki lokala mantendu nahi baduzu, itxi arakatzailearen fitxa.)","errorAddingToLibrary":"Ezin izan da elementua liburutegian gehitu","errorRemovingFromLibrary":"Ezin izan da elementua liburutegitik kendu","confirmAddLibrary":"Honek {{numShapes}} forma gehituko ditu zure liburutegian. Ziur zaude?","imageDoesNotContainScene":"Irudi honek ez dirudi eszena daturik duenik. Eszena kapsulatzea gaitu al duzu esportazioan?","cannotRestoreFromImage":"Ezin izan da eszena leheneratu irudi fitxategi honetatik","invalidSceneUrl":"Ezin izan da eszena inportatu emandako URLtik. Gaizki eratuta dago edo ez du baliozko Excalidraw JSON daturik.","resetLibrary":"Honek zure liburutegia garbituko du. Ziur zaude?","removeItemsFromsLibrary":"Liburutegitik {{count}} elementu ezabatu?","invalidEncryptionKey":"Enkriptazio-gakoak 22 karaktere izan behar ditu. Zuzeneko lankidetza desgaituta dago.","collabOfflineWarning":"Ez dago Interneteko konexiorik.\\nZure aldaketak ez dira gordeko!"},"errors":{"unsupportedFileType":"Onartu gabeko fitxategi mota.","imageInsertError":"Ezin izan da irudia txertatu. Saiatu berriro geroago...","fileTooBig":"Fitxategia handiegia da. Onartutako gehienezko tamaina {{maxSize}} da.","svgImageInsertError":"Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.","failedToFetchImage":"","invalidSVGString":"SVG baliogabea.","cannotResolveCollabServer":"Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.","importLibraryError":"Ezin izan da liburutegia kargatu","collabSaveFailed":"Ezin izan da backend datu-basean gorde. Arazoak jarraitzen badu, zure fitxategia lokalean gorde beharko zenuke zure lana ez duzula galtzen ziurtatzeko.","collabSaveFailed_sizeExceeded":"Ezin izan da backend datu-basean gorde, ohiala handiegia dela dirudi. Fitxategia lokalean gorde beharko zenuke zure lana galtzen ez duzula ziurtatzeko.","brave_measure_text_error":{"line1":"Brave arakatzailea erabiltzen ari zarela dirudi Blokeatu hatz-markak erasokorki ezarpena gaituta.","line2":"Honek zure marrazkietako Testu-elementuak hautsi ditzake.","line3":"Ezarpen hau desgaitzea gomendatzen dugu. urrats hauek jarrai ditzakezu hori nola egin jakiteko.","line4":"Ezarpen hau desgaituz gero, testu-elementuen bistaratzea konpontzen ez bada, ireki arazo gure GitHub-en edo idatzi iezaguzu Discord helbidera"},"libraryElementTypeError":{"embeddable":"Kapsulatutako elementuak ezin dira liburutegira gehitu.","image":"Laster egongo da irudiak liburutegian gehitzeko laguntza!"}},"toolBar":{"selection":"Hautapena","image":"Txertatu irudia","rectangle":"Laukizuzena","diamond":"Diamantea","ellipse":"Elipsea","arrow":"Gezia","line":"Lerroa","freedraw":"Marraztu","text":"Testua","library":"Liburutegia","lock":"Mantendu aktibo hautatutako tresna marraztu ondoren","penMode":"Luma modua - ukipena saihestu","link":"Gehitu / Eguneratu esteka hautatutako forma baterako","eraser":"Borragoma","frame":"Marko tresna","embeddable":"Web kapsulatzea","laser":"Laser punteroa","hand":"Eskua (panoratze tresna)","extraTools":"Tresna gehiago"},"headings":{"canvasActions":"Canvas ekintzak","selectedShapeActions":"Hautatutako formaren ekintzak","shapes":"Formak"},"hints":{"canvasPanning":"Oihala mugitzeko, eutsi saguaren gurpila edo zuriune-barra arrastatzean, edo erabili esku tresna","linearElement":"Egin klik hainbat puntu hasteko, arrastatu lerro bakarrerako","freeDraw":"Egin klik eta arrastatu, askatu amaitutakoan","text":"Aholkua: testua gehitu dezakezu edozein lekutan klik bikoitza eginez hautapen tresnarekin","embeddable":"Egin klik eta arrastatu webgunea kapsulatzeko","text_selected":"Egin klik bikoitza edo sakatu SARTU testua editatzeko","text_editing":"Sakatu Esc edo Ctrl+SARTU editatzen amaitzeko","linearElementMulti":"Egin klik azken puntuan edo sakatu Esc edo Sartu amaitzeko","lockAngle":"SHIFT sakatuta angelua mantendu dezakezu","resize":"Proportzioak mantendu ditzakezu SHIFT sakatuta tamaina aldatzen duzun bitartean.\\nsakatu ALT erditik tamaina aldatzeko","resizeImage":"Tamaina libreki alda dezakezu SHIFT sakatuta,\\nsakatu ALT erditik tamaina aldatzeko","rotate":"Angeluak mantendu ditzakezu SHIFT sakatuta biratzen duzun bitartean","lineEditor_info":"Eutsi sakatuta Ctrl edo Cmd eta egin klik bikoitza edo sakatu Ctrl edo Cmd + Sartu puntuak editatzeko","lineEditor_pointSelected":"Sakatu Ezabatu puntuak kentzeko,\\nKtrl+D bikoizteko, edo arrastatu mugitzeko","lineEditor_nothingSelected":"Hautatu editatzeko puntu bat (SHIFT sakatuta anitz hautatzeko),\\nedo eduki Alt sakatuta eta egin klik puntu berriak gehitzeko","placeImage":"Egin klik irudia kokatzeko, edo egin klik eta arrastatu bere tamaina eskuz ezartzeko","publishLibrary":"Argitaratu zure liburutegia","bindTextToElement":"Sakatu Sartu testua gehitzeko","deepBoxSelect":"Eutsi Ctrl edo Cmd sakatuta aukeraketa sakona egiteko eta arrastatzea saihesteko","eraserRevert":"Eduki Alt sakatuta ezabatzeko markatutako elementuak leheneratzeko","firefox_clipboard_write":"Ezaugarri hau \\"dom.events.asyncClipboard.clipboardItem\\" marka \\"true\\" gisa ezarrita gaitu daiteke. Firefox-en arakatzailearen banderak aldatzeko, bisitatu \\"about:config\\" orrialdera.","disableSnapping":"Eduki sakatuta Ctrl edo Cmd tekla atxikipena desgaitzeko"},"canvasError":{"cannotShowPreview":"Ezin da oihala aurreikusi","canvasTooBig":"Agian oihala handiegia da.","canvasTooBigTip":"Aholkua: saiatu urrunen dauden elementuak pixka bat hurbiltzen."},"errorSplash":{"headingMain":"Errore bat aurkitu da. Saiatu ","clearCanvasMessage":"Birkargatzea ez bada burutzen, saiatu ","clearCanvasCaveat":" Honen ondorioz lana galduko da ","trackedToSentry":"Identifikatzailearen errorea {{eventId}} gure sistemak behatu du.","openIssueMessage":"Oso kontuz ibili gara zure eszenaren informazioa errorean ez sartzeko. Zure eszena pribatua ez bada, kontuan hartu gure Sartu beheko informazioa kopiatu eta itsatsi bidez GitHub issue-n.","sceneContent":"Eszenaren edukia:"},"roomDialog":{"desc_intro":"Jendea zure uneko eszenara gonbida dezakezu zurekin elkarlanean aritzeko.","desc_privacy":"Ez kezkatu, saioak muturretik muturrerako enkriptatzea erabiltzen du, beraz, marrazten duzuna pribatua izango da. Gure zerbitzariak ere ezingo du ikusi zer egiten duzun.","button_startSession":"Hasi saioa","button_stopSession":"Itxi saioa","desc_inProgressIntro":"Zuzeneko lankidetza saioa abian da.","desc_shareLink":"Partekatu esteka hau elkarlanean aritu nahi duzun edonorekin:","desc_exitSession":"Saioa ixteak aretotik deskonektatuko zaitu, baina eszenarekin lanean jarraitu ahal izango duzu lokalean. Kontuan izan honek ez diela beste pertsonei eragingo, eta euren bertsioan elkarlanean aritu ahal izango dira.","shareTitle":"Sartu Excalidraw-en zuzeneko lankidetza-saio batean"},"errorDialog":{"title":"Errorea"},"exportDialog":{"disk_title":"Gorde diskoan","disk_details":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan.","disk_button":"Gorde fitxategian","link_title":"Partekatzeko esteka","link_details":"Esportatu irakurtzeko soilik moduko esteka.","link_button":"Esportatu esteka","excalidrawplus_description":"Gorde eszena zure Excalidraw+ laneko areara.","excalidrawplus_button":"Esportatu","excalidrawplus_exportError":"Une honetan ezin izan da esportatu Excalidraw+era..."},"helpDialog":{"blog":"Irakurri gure bloga","click":"sakatu","deepSelect":"Hautapen sakona","deepBoxSelect":"Hautapen sakona egin laukizuzen bidez, eta saihestu arrastatzea","curvedArrow":"Gezi kurbatua","curvedLine":"Lerro kurbatua","documentation":"Dokumentazioa","doubleClick":"klik bikoitza","drag":"arrastatu","editor":"Editorea","editLineArrowPoints":"Editatu lerroak/gezi-puntuak","editText":"Editatu testua / gehitu etiketa","github":"Arazorik izan al duzu? Eman horren berri","howto":"Jarraitu gure gidak","or":"edo","preventBinding":"Saihestu gezien gainjartzea","tools":"Tresnak","shortcuts":"Laster-teklak","textFinish":"Bukatu edizioa (testu editorea)","textNewLine":"Gehitu lerro berri bat (testu editorea)","title":"Laguntza","view":"Bistaratu","zoomToFit":"Egin zoom elementu guztiak ikusteko","zoomToSelection":"Zooma hautapenera","toggleElementLock":"Blokeatu/desbloketatu hautapena","movePageUpDown":"Mugitu orria gora/behera","movePageLeftRight":"Mugitu orria ezker/eskuin"},"clearCanvasDialog":{"title":"Garbitu oihala"},"publishDialog":{"title":"Argitaratu liburutegia","itemName":"Elementuaren izena","authorName":"Egilearen izena","githubUsername":"GitHub-eko erabiltzaile-izena","twitterUsername":"Twitter-eko erabiltzaile-izena","libraryName":"Liburutegiaren izena","libraryDesc":"Liburutegiaren deskripzioa","website":"Webgunea","placeholder":{"authorName":"Zure izena edo erabiltzaile-izena","libraryName":"Zure liburutegiaren izena","libraryDesc":"Zure liburutegiaren deskripzioa laguntzeko jendeari ulertzen haren erabilpena","githubHandle":"GitHub heldulekua (aukerakoa), liburutegia editatu ahal izateko berrikustera bidalitakoan","twitterHandle":"Twitter-eko erabiltzaile-izena (aukerakoa), badakigu nori kreditatu behar dugun Twitter bidez sustatzeko","website":"Estekatu zure webgunera edo nahi duzun tokira (aukerakoa)"},"errors":{"required":"Beharrezkoa","website":"Sartu baliozko URL bat"},"noteDescription":"Bidali zure liburutegira sartu ahal izateko zure liburutegiko biltegianbeste jendeak bere marrazkietan erabili ahal izateko.","noteGuidelines":"Liburutegia eskuz onartu behar da. Irakurri gidalerroak bidali aurretik. GitHub kontu bat edukitzea komeni da komunikatzeko eta aldaketak egin ahal izateko, baina ez da guztiz beharrezkoa.","noteLicense":"Bidaltzen baduzu, onartzen duzu liburutegia MIT lizentziarekin argitaratuko dela, zeinak, laburbilduz, esan nahi du edozeinek erabiltzen ahal duela murrizketarik gabe.","noteItems":"Liburutegiko elementu bakoitzak bere izena eduki behar du iragazi ahal izateko. Liburutegiko hurrengo elementuak barne daude:","atleastOneLibItem":"Hautatu gutxienez liburutegiko elementu bat gutxienez hasi ahal izateko","republishWarning":"Oharra: hautatutako elementu batzuk dagoeneko argitaratuta/bidalita bezala markatuta daude. Elementuak berriro bidali behar dituzu lehendik dagoen liburutegi edo bidalketa eguneratzen duzunean."},"publishSuccessDialog":{"title":"Liburutegia bidali da","content":"Eskerrik asko {{authorName}}. Zure liburutegia bidali da berrikustera. Jarraitu dezakezu haren egoerahemen"},"confirmDialog":{"resetLibrary":"Leheneratu liburutegia","removeItemsFromLib":"Kendu hautatutako elementuak liburutegitik"},"imageExportDialog":{"header":"Esportatu irudia","label":{"withBackground":"Atzeko planoa","onlySelected":"Hautapena soilik","darkMode":"Modu iluna","embedScene":"Txertatu eszena","scale":"Eskala","padding":"Betegarria"},"tooltip":{"embedScene":"Eszenaren datuak esportatutako PNG/SVG fitxategian gordeko dira, eszena bertatik berrezartzeko.\\nEsportatutako fitxategien tamaina handituko da."},"title":{"exportToPng":"Esportatu PNG gisa","exportToSvg":"Esportatu SVG gisa","copyPngToClipboard":"Kopiatu PNG arbelera"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiatu arbelean"}},"encrypted":{"tooltip":"Zure marrazkiak muturretik muturrera enkriptatu dira, beraz Excalidraw-ren zerbitzariek ezingo dituzte ikusi.","link":"Excalidraw-ren muturretik muturrerako enkriptatzearen gaineko mezua blogean"},"stats":{"angle":"Angelua","element":"Elementua","elements":"Elementuak","height":"Altuera","scene":"Eszena","selected":"Hautatua","storage":"Biltegia","title":"Datuak","total":"Guztira","version":"Bertsioa","versionCopy":"Klikatu kopiatzeko","versionNotAvailable":"Bertsio ez eskuragarria","width":"Zabalera"},"toast":{"addedToLibrary":"Liburutegira gehitu da","copyStyles":"Estiloak kopiatu dira.","copyToClipboard":"Arbelean kopiatu da.","copyToClipboardAsPng":"{{exportSelection}} kopiatu da arbelean PNG gisa\\n({{exportColorScheme}})","fileSaved":"Fitxategia gorde da.","fileSavedToFilename":"{filename}-n gorde da","canvas":"oihala","selection":"hautapena","pasteAsSingleElement":"Erabili {{shortcut}} elementu bakar gisa itsasteko,\\nedo itsatsi lehendik dagoen testu-editore batean","unableToEmbed":"Url hau txertatzea ez da une honetan onartzen. Sortu issue bat GitHub-en Urla zerrenda zurian sartzea eskatzeko","unrecognizedLinkFormat":"Kapsulatu duzun esteka ez dator bat espero den formatuarekin. Mesedez, saiatu iturburu-guneak emandako \'kapsulatu\' katea itsasten"},"colors":{"transparent":"Gardena","black":"Beltza","white":"Zuria","red":"Gorria","pink":"Arrosa","grape":"Mahats kolorea","violet":"Bioleta","gray":"Grisa","blue":"Urdina","cyan":"Ziana","teal":"Berde urdinxka","green":"Berdea","yellow":"Horia","orange":"Laranja","bronze":"Brontzea"},"welcomeScreen":{"app":{"center_heading":"Zure datu guztiak lokalean gordetzen dira zure nabigatzailean.","center_heading_plus":"Horren ordez Excalidraw+-era joan nahi al zenuen?","menuHint":"Esportatu, hobespenak, hizkuntzak..."},"defaults":{"menuHint":"Esportatu, hobespenak eta gehiago...","center_heading":"Diagramak. Egina. Sinplea.","toolbarHint":"Aukeratu tresna bat eta hasi marrazten!","helpHint":"Lasterbideak eta laguntza"}},"colorPicker":{"mostUsedCustomColors":"Gehien erabilitako kolore pertsonalizatuak","colors":"Koloreak","shades":"Ñabardurak","hexCode":"Hez kodea","noShades":"Kolore honetarako ez dago ñabardurarik eskuragarri"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esportatu irudi gisa","button":"Esportatu irudi gisa","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun irudi gisa."},"saveToDisk":{"title":"Gorde diskoan","button":"Gorde diskoan","description":"Esportatu eszenaren datuak geroago inportatu ahal izango duzun fitxategi batan."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esportatu Excalidraw+ra","description":"Gorde eszena zure Excalidraw+ laneko areara."}},"modal":{"loadFromFile":{"title":"Fitxategitik kargatu","button":"Fitxategitik kargatu","description":"Fitxategi batetik kargatzeak lehendik duzun edukia ordezkatuko du.

Lehenengo marrazkiaren babeskopia egin dezakezu beheko aukeretako bat erabiliz."},"shareableLink":{"title":"Estekatik kargatu","button":"Ordeztu nire edukia","description":"Kanpoko irudi bat kargatzeak lehendik duzun edukia ordezkatuko du.

. Zure marrazkiaren babeskopia egin dezakezu lehenik beheko aukeretako bat erabiliz."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js b/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js new file mode 100644 index 0000000..e989813 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fa-IR-json-76b039039b043cc4280c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5330],{3747:function(e){e.exports=JSON.parse('{"labels":{"paste":"جای گذاری","pasteAsPlaintext":"جای‌گذاری به عنوان متن ساده","pasteCharts":"قراردادن نمودارها","selectAll":"انتخاب همه","multiSelect":"یک ایتم به انتخاب شده ها اضافه کنید.","moveCanvas":"جابجایی بوم","cut":"بریدن","copy":"کپی","copyAsPng":"کپی در حافطه موقت به صورت PNG","copyAsSvg":"کپی در حافطه موقت به صورت SVG","copyText":"کپی در حافطه موقت به صورت متن","bringForward":"جلو آوردن","sendToBack":"پس فرستادن","bringToFront":"جلو آوردن","sendBackward":"پس فرستادن","delete":"حذف","copyStyles":"کپی سبک","pasteStyles":"جای گذاری سبک","stroke":"حاشیه","background":"پس زمینه","fill":"رنگ آمیزی","strokeWidth":"ضخامت حاشیه","strokeStyle":"استایل حاشیه","strokeStyle_solid":"یکدست","strokeStyle_dashed":"خط چین","strokeStyle_dotted":"نقطه چین","sloppiness":"دقت","opacity":"شفافیت","textAlign":"چیدمان متن","edges":"لبه ها","sharp":"تیز","round":"دور","arrowheads":"سر پیکان","arrowhead_none":"هیچ کدام","arrowhead_arrow":"پیکان","arrowhead_bar":"میله ای","arrowhead_dot":"نقطه","arrowhead_triangle":"مثلث","fontSize":"اندازه قلم","fontFamily":"نوع قلم","addWatermark":"\\"ساخته شده با Excalidraw\\" را اضافه کن","handDrawn":"دست نویس","normal":"عادی","code":"کد","small":"کوچک","medium":"متوسط","large":"بزرگ","veryLarge":"بسیار بزرگ","solid":"توپر","hachure":"هاشور","zigzag":"زیگزاگ","crossHatch":"هاشور متقاطع","thin":"نازک","bold":"ضخیم","left":"چپ","center":"وسط","right":"راست","extraBold":"خیلی ضخیم","architect":"معمار","artist":"هنرمند","cartoonist":"کارتونیست","fileTitle":"نام فایل","colorPicker":"انتخابگر رنگ","canvasColors":"رنگ های بوم","canvasBackground":"بوم","drawingCanvas":"بوم نقاشی","layers":"لایه ها","actions":"عملیات","language":"زبان","liveCollaboration":"همکاری آنلاین...","duplicateSelection":"تکرار","untitled":"بدون عنوان","name":"نام","yourName":"نام شما","madeWithExcalidraw":"ساخته شده با Excalidraw","group":"گروهبندی انتخابها","ungroup":"حذف گروهبندی انتخابها","collaborators":"همکاران","showGrid":"نمایش گرید","addToLibrary":"افزودن به کتابخانه","removeFromLibrary":"حذف از کتابخانه","libraryLoadingMessage":"بارگذاری کتابخانه…","libraries":"مرور کردن کتابخانه ها","loadingScene":"باگذاری صحنه…","align":"تراز","alignTop":"تراز به بالا","alignBottom":"تراز به پایین","alignLeft":"تراز به چپ","alignRight":"تراز به راست","centerVertically":"وسط قرار دادن به صورت عمودی","centerHorizontally":"وسط قرار دادن به صورت افقی","distributeHorizontally":"توزیع کردن به صورت افقی","distributeVertically":"توزیع کردن به صورت عمودی","flipHorizontal":"چرخش افقی","flipVertical":"چرخش عمودی","viewMode":"حالت نمایش","share":"اشتراک‌گذاری","showStroke":"نمایش انتخاب کننده رنگ حاشیه","showBackground":"نمایش انتخاب کننده رنگ پس زمینه","toggleTheme":"تغییر تم","personalLib":"کتابخانه شخصی","excalidrawLib":"کتابخانه","decreaseFontSize":"کاهش اندازه فونت","increaseFontSize":"افزایش دادن اندازه فونت","unbindText":"بازکردن نوشته","bindText":"بستن نوشته","createContainerFromText":"متن را در یک جایگاه بپیچید","link":{"edit":"ویرایش لینک","editEmbed":"","create":"ایجاد پیوند","createEmbed":"","label":"لینک","labelEmbed":"","empty":""},"lineEditor":{"edit":"ویرایش لینک","exit":"خروج از ویرایشگر"},"elementLock":{"lock":"قفل","unlock":"باز کردن","lockAll":"قفل همه","unlockAll":"باز کردن قفل همه"},"statusPublished":"منتشر شده","sidebarLock":"باز نگه داشتن سایدبار","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"انتخاب رنگ از کرباس"},"library":{"noItems":"آیتمی به اینجا اضافه نشده...","hint_emptyLibrary":"یک آیتم روی بوم را برای اضافه شده به اینجا انتخاب کنید، یا یک کتابخانه از مخزن عمومی در بخش پایین را نصب کنید.","hint_emptyPrivateLibrary":"یک آیتم روی بوم را برای اضافه شدن به اینجا انتخاب کنید."},"buttons":{"clearReset":"پاکسازی بوم نقاشی","exportJSON":"خروجی در فایل","exportImage":"خروجی گرفتن از تصویر...","export":"ذخیره در...","copyToClipboard":"کپی در حافظه موقت","save":"ذخیره در همین فایل","saveAs":"ذخیره با نام","load":"باز کردن","getShareableLink":"دریافت لینک قابل اشتراک","close":"بستن","selectLanguage":"انتخاب زبان","scrollBackToContent":"به محتوا بروید","zoomIn":"بزرگ نمایی","zoomOut":"کوچک نمایی","resetZoom":"اندازه اصلی","menu":"فهرست","done":"انجام شد","edit":"ویرایش","undo":"بازگرد","redo":"از سر","resetLibrary":"تنظیم مجدد کتابخانه","createNewRoom":"ایجاد یک اتاق جدید","fullScreen":"تمام‌صفحه","darkMode":"حالت تیره","lightMode":"حالت روشن","zenMode":"حالت ذن","objectsSnapMode":"","exitZenMode":"خروج از حالت تمرکز","cancel":"لغو","clear":"پاک کردن","remove":"پاک کردن","embed":"","publishLibrary":"انتشار","submit":"ارسال","confirm":"تایید","embeddableInteractionButton":""},"alerts":{"clearReset":"این کار کل صفحه را پاک میکند. آیا مطمئنید؟","couldNotCreateShareableLink":"عدم توانایی در ساخت یک لینک قابل اشتراک.","couldNotCreateShareableLinkTooBig":"لینک قابل اشتراک گذاری ایجاد نشد: محتوای صحنه بسیار بزرگ است","couldNotLoadInvalidFile":"عدم توانایی در بازگذاری فایل نامعتبر","importBackendFailed":"بارگیری از پشت صحنه با شکست مواجه شد.","cannotExportEmptyCanvas":"بوم خالی قابل تبدیل نیست.","couldNotCopyToClipboard":"به کلیپ بورد کپی نشد.","decryptFailed":"رمزگشایی داده ها امکان پذیر نیست.","uploadedSecurly":"آپلود با رمزگذاری دو طرفه انجام میشود، به این معنی که سرور Excalidraw و اشخاص ثالث نمی توانند مطالب شما را بخوانند.","loadSceneOverridePrompt":"بارگزاری یک طرح خارجی محتوای فعلی رو از بین میبرد. آیا میخواهید ادامه دهید؟","collabStopOverridePrompt":"با توقف بوم نقاشی، نقشه قبلی و ذخیره شده محلی شما را بازنویسی می کند. مطمئنی؟\\n\\n(اگر می خواهید نقاشی محلی خود را حفظ کنید، به سادگی برگه مرورگر را ببندید.)","errorAddingToLibrary":"مورد به کتابخانه اضافه نشد","errorRemovingFromLibrary":"مورد از کتابخانه حذف نشد","confirmAddLibrary":"{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟","imageDoesNotContainScene":"به نظر نمی رسد این تصویر حاوی داده های بوم نقاشی باشد. آیا جاسازی صحنه را در حین خروجی فعال کرده اید?","cannotRestoreFromImage":"صحنه را نمی توان از این فایل تصویری بازیابی کرد","invalidSceneUrl":"بوم نقاشی از آدرس ارائه شده وارد نشد. این یا نادرست است، یا حاوی داده Excalidraw JSON معتبر نیست.","resetLibrary":"ین کار کل صفحه را پاک میکند. آیا مطمئنید?","removeItemsFromsLibrary":"حذف {{count}} آیتم(ها) از کتابخانه?","invalidEncryptionKey":"کلید رمزگذاری باید 22 کاراکتر باشد. همکاری زنده غیرفعال است.","collabOfflineWarning":"اتصال به اینترنت در دسترس نیست.\\nتغییرات شما ذخیره نمی شود!"},"errors":{"unsupportedFileType":"نوع فایل پشتیبانی نشده.","imageInsertError":"عکس ارسال نشد. بعداً دوباره تلاش کنید...","fileTooBig":"فایل خیلی بزرگ است حداکثر اندازه مجاز {{maxSize}}.","svgImageInsertError":"تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.","failedToFetchImage":"","invalidSVGString":"SVG نادرست.","cannotResolveCollabServer":"به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.","importLibraryError":"داده‌ها بارگذاری نشدند","collabSaveFailed":"در پایگاه داده باطن ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","collabSaveFailed_sizeExceeded":"در پایگاه داده بکند ذخیره نشد. اگر مشکلات همچنان ادامه داشت، باید فایل خود را به صورت محلی ذخیره کنید تا مطمئن شوید کار خود را از دست نمی دهید.","brave_measure_text_error":{"line1":"به نظر می‌رسد از مرورگر Brave با تنظیم مسدود کردن شدید اثرانگشت استفاده می‌کنید.","line2":"این می تواند منجر به شکستن عناصر متن در نقاشی های شما شود.","line3":"اکیداً توصیه می کنیم این تنظیم را غیرفعال کنید. برای نحوه انجام این کار می‌توانید این مراحل را دنبال کنید.","line4":"اگر غیرفعال کردن این تنظیم نمایش عناصر متنی را برطرف نکرد، لطفاً یک مشکل را در GitHub ما باز کنید یا برای ما در Discord بنویسید."},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"گزینش","image":"وارد کردن تصویر","rectangle":"مستطیل","diamond":"لوزی","ellipse":"بیضی","arrow":"پیکان","line":"خط","freedraw":"کشیدن","text":"متن","library":"کتابخانه","lock":"ابزار انتخاب شده را بعد از کشیدن نگه دار","penMode":"حالت قلم - جلوگیری از تماس","link":"افزودن/به‌روزرسانی پیوند برای شکل انتخابی","eraser":"پاک کن","frame":"","embeddable":"","laser":"","hand":"دست (ابزار پانینگ)","extraTools":"ابزارهای بیشتر"},"headings":{"canvasActions":"عملیات روی بوم","selectedShapeActions":"عملیات روی شکل انتخاب شده","shapes":"شکل‌ها"},"hints":{"canvasPanning":"برای حرکت دادن بوم، چرخ ماوس یا فاصله را در حین کشیدن نگه دارید یا از ابزار دستی استفاده کنید","linearElement":"برای چند نقطه کلیک و برای یک خط بکشید","freeDraw":"کلیک کنید و بکشید و وقتی کار تمام شد رها کنید","text":"نکته: با برنامه انتخاب شده شما میتوانید با دوبار کلیک کردن هرکجا میخواید متن اظاف کنید","embeddable":"","text_selected":"دوبار کلیک کنید یا Enter را فشار دهید تا نقاط را ویرایش کنید","text_editing":"Escape یا CtrlOrCmd+ENTER را فشار دهید تا ویرایش تمام شود","linearElementMulti":"روی آخرین نقطه کلیک کنید یا کلید ESC را بزنید یا کلید Enter را بزنید برای اتمام کار","lockAngle":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","resize":"می توانید با نگه داشتن SHIFT در هنگام تغییر اندازه، نسبت ها را محدود کنید،ALT را برای تغییر اندازه از مرکز نگه دارید","resizeImage":"با نگه داشتن SHIFT می توانید آزادانه اندازه را تغییر دهید،\\nبرای تغییر اندازه از مرکز، ALT را نگه دارید","rotate":"با نگه داشتن SHIFT هنگام چرخش می توانید زاویه ها را محدود کنید","lineEditor_info":"CtrlOrCmd را نگه دارید و دوبار کلیک کنید یا CtrlOrCmd + Enter را فشار دهید تا نقاط را ویرایش کنید.","lineEditor_pointSelected":"برای حذف نقطه Delete برای کپی زدن Ctrl یا Cmd+D را بزنید و یا برای جابجایی بکشید","lineEditor_nothingSelected":"یک نقطه را برای ویرایش انتخاب کنید (SHIFT را برای انتخاب چندگانه نگه دارید)،\\nیا Alt را نگه دارید و برای افزودن نقاط جدید کلیک کنید","placeImage":"برای قرار دادن تصویر کلیک کنید، یا کلیک کنید و بکشید تا اندازه آن به صورت دستی تنظیم شود","publishLibrary":"کتابخانه خود را منتشر کنید","bindTextToElement":"برای افزودن اینتر را بزنید","deepBoxSelect":"CtrlOrCmd را برای انتخاب عمیق و جلوگیری از کشیدن نگه دارید","eraserRevert":"Alt را نگه دارید تا عناصر علامت گذاری شده برای حذف برگردند","firefox_clipboard_write":"احتمالاً می‌توان این ویژگی را با تنظیم پرچم «dom.events.asyncClipboard.clipboardItem» روی «true» فعال کرد. برای تغییر پرچم های مرورگر در فایرفاکس، از صفحه \\"about:config\\" دیدن کنید.","disableSnapping":""},"canvasError":{"cannotShowPreview":"پیش نمایش نشان داده نمی شود","canvasTooBig":"بوم نقاشی بسیار بزرگ است.","canvasTooBigTip":"نکته: سعی کنید دورترین عناصر را کمی به همدیگر نزدیک کنید."},"errorSplash":{"headingMain":"","clearCanvasMessage":"اگر بازنشانی صفحه مشکل را حل نکرد این را امتحان کنید ","clearCanvasCaveat":" این باعث میشود کارهای شما ذخیره نشود ","trackedToSentry":"","openIssueMessage":"","sceneContent":"محتوای صحنه:"},"roomDialog":{"desc_intro":"می توانید افرادی را به صحنه فعلی خود دعوت کنید تا با شما همکاری کنند.","desc_privacy":"نگران نباشید، این جلسه از رمزگذاری دوطرفه استفاده می کند، پس هر چیزی بکشید خصوصی خواهد ماند. حتی سرور ما نمیتواند ببیند چیزی که شما طراحی میکنید.","button_startSession":"شروع جلسه","button_stopSession":"پایان جلسه","desc_inProgressIntro":"جلسه همکاری آنلاین در حال انجام است.","desc_shareLink":"این لینک را با هر کسی که می خواهید با او همکاری کنید به اشتراک بگذارید:","desc_exitSession":"با پایان دادن جلسه، شما از اتاق حذف میکند، اما می توانید به صورت محلی کار خود را با بوم ادامه دهید. توجه داشته باشید که این مورد بر سایر افراد تأثیر نمی گذارد و همچنان می توانند در نسخه خود همکاری کنند.","shareTitle":"به یک جلسه همکاری زنده در Excalidraw بپیوندید"},"errorDialog":{"title":"خطا"},"exportDialog":{"disk_title":"ذخیره در دیسک","disk_details":"داده های صحنه را به فایلی که بعداً می توانید از آن وارد کنید صادر کنید.","disk_button":"ذخیره در فایل","link_title":"لینک قابل اشتراک‌گذاری","link_details":"خروجی به عنوان یک پیوند فقط خواندنی.","link_button":"خروجی در فایل","excalidrawplus_description":"صحنه را در فضای کاری Excalidraw+ خود ذخیره کنید.","excalidrawplus_button":"خروجی گرفتن","excalidrawplus_exportError":"در حال حاضر نمی‌توان به Excalidraw+ صادر کرد..."},"helpDialog":{"blog":"بلاگ ما را بخوانید","click":"کلیک","deepSelect":"انتخاب عمیق","deepBoxSelect":"انتخاب عمیق در کادر، و جلوگیری از کشیدن","curvedArrow":"فلش خمیده","curvedLine":"منحنی","documentation":"مستندات","doubleClick":"دابل کلیک","drag":"کشیدن","editor":"ویرایشگر","editLineArrowPoints":"نقاط خط/پیکان را ویرایش کنید","editText":"ویرایش متن / افزودن برچسب","github":"اشکالی می بینید؟ گزارش دهید","howto":"راهنمای ما را دنبال کنید","or":"یا","preventBinding":"مانع شدن از چسبیدن فلش ها","tools":"ابزار","shortcuts":"میانبرهای صفحه کلید","textFinish":"پایان ویرایش (ویرایشگر متن)","textNewLine":"افزودن خط جدید (ویرایشگر متن)","title":"راهنما","view":"مشاهده","zoomToFit":"بزرگنمایی برای دیدن تمام آیتم ها","zoomToSelection":"بزرگنمایی قسمت انتخاب شده","toggleElementLock":"قفل/بازکردن انتخاب شده ها","movePageUpDown":"حرکت صفحه به بالا/پایین","movePageLeftRight":"حرکت صفحه به چپ/راست"},"clearCanvasDialog":{"title":"پاک کردن بوم"},"publishDialog":{"title":"انتشار کتابخانه","itemName":"نام آیتم","authorName":"نام نویسنده","githubUsername":"نام کاربری گیت هاب","twitterUsername":"نام کاربری توییتر","libraryName":"نام کتابخانه","libraryDesc":"توضیحات کتابخانه","website":"تارنما","placeholder":{"authorName":"نام یا نام کاربری شما","libraryName":"اسم کتابخانه","libraryDesc":"شرحی از کتابخانه شما برای کمک به مردم برای درک استفاده از آن","githubHandle":"دسته GitHub (اختیاری)، بنابراین می توانید پس از ارسال برای بررسی، کتابخانه را ویرایش کنید","twitterHandle":"نام کاربری توییتر (اختیاری)، بنابراین می دانیم هنگام تبلیغ در توییتر به چه کسی اعتبار دهیم","website":"پیوند به وب سایت شخصی شما یا هر جای دیگر (اختیاری)"},"errors":{"required":"لازم","website":"وارد کردن آدرس درست"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"هر مورد کتابخانه باید نام خاص خود را داشته باشد تا قابل فیلتر باشد. اقلام کتابخانه زیر شامل خواهد شد:","atleastOneLibItem":"لطفاً حداقل یک مورد از کتابخانه را برای شروع انتخاب کنید","republishWarning":"توجه: برخی از موارد انتخاب شده به عنوان قبلاً منتشر شده/ارسال شده علامت گذاری شده اند. شما فقط باید هنگام به‌روزرسانی یک کتابخانه موجود یا ارسال، موارد را دوباره ارسال کنید."},"publishSuccessDialog":{"title":"کتابخانه ارسال شد","content":"تشکر از شما {{authorName}}. کتابخانه شما برای بررسی ارسال شده است. می توانید وضعیت را پیگیری کنید"},"confirmDialog":{"resetLibrary":"تنظیم مجدد کتابخانه","removeItemsFromLib":"موارد انتخاب شده از موارد پسندیده حذف شوند"},"imageExportDialog":{"header":"","label":{"withBackground":"پس زمینه","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"شما در یک محیط رمزگزاری شده دو طرفه در حال طراحی هستید پس Excalidraw هرگز طرح های شما را نمیبند.","link":"پست وبلاگ در مورد رمزگذاری سرتاسر در Excalidraw"},"stats":{"angle":"زاویه","element":"اِلمان","elements":"اِلمان ها","height":"ارتفاع","scene":"صحنه","selected":"انتخاب شده","storage":"حافظه","title":"آمار برای نردها","total":"مجموع","version":"نسخه","versionCopy":"برای کپی کردن کلیک کنید","versionNotAvailable":"نسخه غیرقابل دسترس","width":"عرض"},"toast":{"addedToLibrary":"به مجموعه اضافه شد","copyStyles":"کپی سبک.","copyToClipboard":"در کلیپ‌بورد کپی شد.","copyToClipboardAsPng":"کپی {{exportSelection}} در کلیپبورد به عنوان PNG\\n({{exportColorScheme}})","fileSaved":"فایل ذخیره شد.","fileSavedToFilename":"ذخیره در {filename}","canvas":"بوم","selection":"انتخاب","pasteAsSingleElement":"از {{shortcut}} برای چسباندن به عنوان یک عنصر استفاده کنید،\\nیا در یک ویرایشگر متن موجود جایگذاری کنید","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"شفاف","black":"سیاه","white":"سفید","red":"قرمز","pink":"صورتی","grape":"یاقوتی","violet":"بنفش","gray":"خاکستری","blue":"آبی","cyan":"فیروزه‌ای","teal":"سبزآبی","green":"سبز","yellow":"زرد","orange":"نارنجی","bronze":"برنزی"},"welcomeScreen":{"app":{"center_heading":"تمام داده های شما به صورت محلی در مرورگر شما ذخیره می شود.","center_heading_plus":"آیا می‌خواهید به جای آن به Excalidraw+ بروید؟","menuHint":"خروجی، ترجیحات، زبان ها، ..."},"defaults":{"menuHint":"خروجی، ترجیحات، وبیشتر ...","center_heading":"نمودارها .ساخته شده. ساده.","toolbarHint":"ابزاری را انتخاب کنید و نقاشی را شروع کنید!","helpHint":"میانبرها و راهنما"}},"colorPicker":{"mostUsedCustomColors":"","colors":"رنگ‌ها","shades":"جلوه‌ها","hexCode":"کدِ هگز","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"ذخیره در دیسک","button":"ذخیره در دیسک","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"بارگذاری از فایل","button":"بارگذاری از فایل","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js b/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js new file mode 100644 index 0000000..6dc0890 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fi-FI-json-64c8902f10425e1b2e81.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3512],{9490:function(i){i.exports=JSON.parse('{"labels":{"paste":"Liitä","pasteAsPlaintext":"Liitä pelkkänä tekstinä","pasteCharts":"Liitä kaaviot","selectAll":"Valitse kaikki","multiSelect":"Lisää kohde valintaan","moveCanvas":"Siirrä piirtoaluetta","cut":"Leikkaa","copy":"Kopioi","copyAsPng":"Kopioi leikepöydälle PNG-tiedostona","copyAsSvg":"Kopioi leikepöydälle SVG-tiedostona","copyText":"Kopioi tekstinä","bringForward":"Tuo eteenpäin","sendToBack":"Vie taakse","bringToFront":"Tuo eteen","sendBackward":"Vie taaksepäin","delete":"Poista","copyStyles":"Kopioi tyyli","pasteStyles":"Liitä tyyli","stroke":"Piirto","background":"Tausta","fill":"Täyttö","strokeWidth":"Viivan leveys","strokeStyle":"Viivan tyyli","strokeStyle_solid":"Yhtenäinen","strokeStyle_dashed":"Katkoviiva","strokeStyle_dotted":"Pisteviiva","sloppiness":"Viivan tarkkuus","opacity":"Peittävyys","textAlign":"Tekstin tasaus","edges":"Reunat","sharp":"Terävä","round":"Pyöristetty","arrowheads":"Nuolenkärjet","arrowhead_none":"Ei mitään","arrowhead_arrow":"Nuoli","arrowhead_bar":"Tasapää","arrowhead_dot":"Piste","arrowhead_triangle":"Kolmio","fontSize":"Kirjasinkoko","fontFamily":"Kirjasintyyppi","addWatermark":"Lisää \\"Tehty Excalidrawilla\\"","handDrawn":"Käsinpiirretty","normal":"Tavallinen","code":"Koodi","small":"Pieni","medium":"Keskikoko","large":"Suuri","veryLarge":"Erittäin suuri","solid":"Yhtenäinen","hachure":"Vinoviivoitus","zigzag":"","crossHatch":"Ristiviivoitus","thin":"Ohut","bold":"Lihavoitu","left":"Vasen","center":"Keskitä","right":"Oikea","extraBold":"Erittäin lihavoitu","architect":"Arkkitehti","artist":"Taiteilija","cartoonist":"Sarjakuva","fileTitle":"Tiedostonimi","colorPicker":"Värin valinta","canvasColors":"Käytössä piirtoalueella","canvasBackground":"Piirtoalueen tausta","drawingCanvas":"Piirtoalue","layers":"Tasot","actions":"Toiminnot","language":"Kieli","liveCollaboration":"Live Yhteistyö...","duplicateSelection":"Monista","untitled":"Nimetön","name":"Nimi","yourName":"Nimesi","madeWithExcalidraw":"Tehty Excalidrawilla","group":"Ryhmitä valinta","ungroup":"Pura valittu ryhmä","collaborators":"Yhteistyökumppanit","showGrid":"Näytä ruudukko","addToLibrary":"Lisää kirjastoon","removeFromLibrary":"Poista kirjastosta","libraryLoadingMessage":"Ladataan kirjastoa…","libraries":"Selaa kirjastoja","loadingScene":"Ladataan työtä…","align":"Tasaa","alignTop":"Tasaa ylös","alignBottom":"Tasaa alas","alignLeft":"Tasaa vasemmalle","alignRight":"Tasaa oikealle","centerVertically":"Keskitä pystysuunnassa","centerHorizontally":"Keskitä vaakasuunnassa","distributeHorizontally":"Jaa vaakasuunnassa","distributeVertically":"Jaa pystysuunnassa","flipHorizontal":"Käännä vaakasuunnassa","flipVertical":"Käännä pystysuunnassa","viewMode":"Katselutila","share":"Jaa","showStroke":"Näytä viivan värin valitsin","showBackground":"Näytä taustavärin valitsin","toggleTheme":"Vaihda teema","personalLib":"Oma kirjasto","excalidrawLib":"Excalidraw kirjasto","decreaseFontSize":"Pienennä kirjasinkokoa","increaseFontSize":"Kasvata kirjasinkokoa","unbindText":"Irroita teksti","bindText":"Kiinnitä teksti säiliöön","createContainerFromText":"","link":{"edit":"Muokkaa linkkiä","editEmbed":"","create":"Luo linkki","createEmbed":"","label":"Linkki","labelEmbed":"","empty":""},"lineEditor":{"edit":"Muokkaa riviä","exit":"Poistu rivieditorista"},"elementLock":{"lock":"Lukitse","unlock":"Poista lukitus","lockAll":"Lukitse kaikki","unlockAll":"Poista lukitus kaikista"},"statusPublished":"Julkaistu","sidebarLock":"Pidä sivupalkki avoinna","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Kirjastossa ei ole vielä yhtään kohdetta...","hint_emptyLibrary":"Valitse lisättävä kohde piirtoalueelta, tai asenna alta julkinen kirjasto.","hint_emptyPrivateLibrary":"Valitse lisättävä kohde piirtoalueelta."},"buttons":{"clearReset":"Tyhjennä piirtoalue","exportJSON":"Vie tiedostoon","exportImage":"Vie kuva...","export":"Tallenna nimellä...","copyToClipboard":"Kopioi leikepöydälle","save":"Tallenna nykyiseen tiedostoon","saveAs":"Tallenna nimellä","load":"Avaa","getShareableLink":"Hae jaettava linkki","close":"Sulje","selectLanguage":"Valitse kieli","scrollBackToContent":"Näytä sisältö","zoomIn":"Lähennä","zoomOut":"Loitonna","resetZoom":"Nollaa suurennuksen taso","menu":"Valikko","done":"Valmis","edit":"Muokkaa","undo":"Kumoa","redo":"Tee uudelleen","resetLibrary":"Tyhjennä kirjasto","createNewRoom":"Luo huone","fullScreen":"Koko näyttö","darkMode":"Tumma tila","lightMode":"Vaalea tila","zenMode":"Zen-tila","objectsSnapMode":"","exitZenMode":"Poistu zen-tilasta","cancel":"Peruuta","clear":"Pyyhi","remove":"Poista","embed":"","publishLibrary":"Julkaise","submit":"Lähetä","confirm":"Vahvista","embeddableInteractionButton":""},"alerts":{"clearReset":"Tämä tyhjentää koko piirtoalueen. Jatketaanko?","couldNotCreateShareableLink":"Jaettavan linkin luominen epäonnistui.","couldNotCreateShareableLinkTooBig":"Jaettavaa linkkiä ei voitu luoda: teos on liian suuri","couldNotLoadInvalidFile":"Virheellistä tiedostoa ei voitu avata","importBackendFailed":"Palvelimelta tuonti epäonnistui.","cannotExportEmptyCanvas":"Tyhjää piirtoaluetta ei voi viedä.","couldNotCopyToClipboard":"Leikepöydälle vieminen epäonnistui.","decryptFailed":"Salauksen purkaminen epäonnistui.","uploadedSecurly":"Lähetys on turvattu päästä-päähän-salauksella. Excalidrawin palvelin ja kolmannet osapuolet eivät voi lukea sisältöä.","loadSceneOverridePrompt":"Ulkopuolisen piirroksen lataaminen korvaa nykyisen sisältösi. Jatketaanko?","collabStopOverridePrompt":"Istunnon lopettaminen korvaa aiemman, paikallisesti tallennetun piirustuksen. Jatketaanko?\\n\\n(Jos haluat säilyttää paikallisesti tallennetun piirustuksen, sulje selaimen välilehti lopettamisen sijaan.)","errorAddingToLibrary":"Kohdetta ei voitu lisätä kirjastoon","errorRemovingFromLibrary":"Kohdetta ei voitu poistaa kirjastosta","confirmAddLibrary":"Tämä lisää {{numShapes}} muotoa kirjastoosi. Jatketaanko?","imageDoesNotContainScene":"Tämä kuva ei näytä sisältävän piirrostietoja. Oletko ottanut käyttöön piirroksen tallennuksen viennin aikana?","cannotRestoreFromImage":"Teosta ei voitu palauttaa tästä kuvatiedostosta","invalidSceneUrl":"Teosta ei voitu tuoda annetusta URL-osoitteesta. Tallenne on vioittunut, tai osoitteessa ei ole Excalidraw JSON-dataa.","resetLibrary":"Tämä tyhjentää kirjastosi. Jatketaanko?","removeItemsFromsLibrary":"Poista {{count}} kohdetta kirjastosta?","invalidEncryptionKey":"Salausavaimen on oltava 22 merkkiä pitkä. Live-yhteistyö ei ole käytössä.","collabOfflineWarning":"Internet-yhteyttä ei ole saatavilla.\\nMuutoksiasi ei tallenneta!"},"errors":{"unsupportedFileType":"Tiedostotyyppiä ei tueta.","imageInsertError":"Kuvan lisääminen epäonnistui. Yritä myöhemmin uudelleen...","fileTooBig":"Tiedosto on liian suuri. Suurin sallittu koko on {{maxSize}}.","svgImageInsertError":"SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.","failedToFetchImage":"","invalidSVGString":"Virheellinen SVG.","cannotResolveCollabServer":"Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.","importLibraryError":"Kokoelman lataaminen epäonnistui","collabSaveFailed":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","collabSaveFailed_sizeExceeded":"Ei voitu tallentaan palvelimen tietokantaan. Jos ongelmia esiintyy, sinun kannatta tallentaa tallentaa tiedosto paikallisesti varmistaaksesi, että et menetä työtäsi.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Valinta","image":"Lisää kuva","rectangle":"Suorakulmio","diamond":"Vinoneliö","ellipse":"Soikio","arrow":"Nuoli","line":"Viiva","freedraw":"Piirrä","text":"Teksti","library":"Kirjasto","lock":"Pidä valittu työkalu aktiivisena piirron jälkeen","penMode":"Kynätila - estä kosketus","link":"Lisää/päivitä linkki valitulle muodolle","eraser":"Poistotyökalu","frame":"","embeddable":"","laser":"","hand":"Käsi (panning-työkalu)","extraTools":""},"headings":{"canvasActions":"Piirtoalueen toiminnot","selectedShapeActions":"Valitun muodon toiminnot","shapes":"Muodot"},"hints":{"canvasPanning":"Piirtoalueen liikuttamiseksi pidä hiiren pyörää tai välilyöntiä pohjassa tai käytä käsityökalua","linearElement":"Klikkaa piirtääksesi useampi piste, raahaa piirtääksesi yksittäinen viiva","freeDraw":"Paina ja raahaa, päästä irti kun olet valmis","text":"Vinkki: voit myös lisätä tekstiä kaksoisnapsauttamalla mihin tahansa valintatyökalulla","embeddable":"","text_selected":"Kaksoisnapsauta tai paina ENTER muokataksesi tekstiä","text_editing":"Paina Escape tai CtrlOrCmd+ENTER lopettaaksesi muokkaamisen","linearElementMulti":"Lopeta klikkaamalla viimeistä pistettä, painamalla Escape- tai Enter-näppäintä","lockAngle":"Voit rajoittaa kulmaa pitämällä SHIFT-näppäintä alaspainettuna","resize":"Voit rajoittaa mittasuhteet pitämällä SHIFT-näppäintä alaspainettuna kun muutat kokoa, pidä ALT-näppäintä alaspainettuna muuttaaksesi kokoa keskipisteen suhteen","resizeImage":"Voit muuttaa kokoa vapaasti pitämällä SHIFTiä pohjassa, pidä ALT pohjassa muuttaaksesi kokoa keskipisteen ympäri","rotate":"Voit rajoittaa kulman pitämällä SHIFT pohjassa pyörittäessäsi","lineEditor_info":"Pidä CtrlOrCmd pohjassa ja kaksoisnapsauta tai paina CtrlOrCmd + Enter muokataksesi pisteitä","lineEditor_pointSelected":"Poista piste(et) painamalla delete, monista painamalla CtrlOrCmd+D, tai liikuta raahaamalla","lineEditor_nothingSelected":"Valitse muokattava piste (monivalinta pitämällä SHIFT pohjassa), tai paina Alt ja klikkaa lisätäksesi uusia pisteitä","placeImage":"Klikkaa asettaaksesi kuvan, tai klikkaa ja raahaa asettaaksesi sen koon manuaalisesti","publishLibrary":"Julkaise oma kirjasto","bindTextToElement":"Lisää tekstiä painamalla enter","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus painamalla CtrlOrCmd","eraserRevert":"Pidä Alt alaspainettuna, kumotaksesi merkittyjen elementtien poistamisen","firefox_clipboard_write":"Tämä ominaisuus voidaan todennäköisesti ottaa käyttöön asettamalla \\"dom.events.asyncClipboard.clipboardItem\\" kohta \\"true\\":ksi. Vaihtaaksesi selaimen kohdan Firefoxissa, käy \\"about:config\\" sivulla.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Esikatselua ei voitu näyttää","canvasTooBig":"Piirtoalue saattaa olla liian suuri.","canvasTooBigTip":"Vinkki: yritä siirtää kaukaisimpia elementtejä hieman lähemmäs toisiaan."},"errorSplash":{"headingMain":"Tapahtui virhe. Yritä ","clearCanvasMessage":"Mikäli sivun lataaminen uudelleen ei auta, yritä ","clearCanvasCaveat":" Tämä johtaa työn menetykseen ","trackedToSentry":"Virhe tunnisteella {{eventId}} tallennettiin järjestelmäämme.","openIssueMessage":"Olimme varovaisia emmekä sisällyttäneet tietoa piirroksestasi virheeseen. Mikäli piirroksesi ei ole yksityinen, harkitsethan kertovasi meille Sisällytä alla olevat tiedot kopioimalla ne GitHub-ongelmaan.","sceneContent":"Piirroksen tiedot:"},"roomDialog":{"desc_intro":"Voit kutsua ihmisiä piirrokseesi tekemään yhteistyötä kanssasi.","desc_privacy":"Älä huoli, istunto käyttää päästä-päähän-salausta, joten mitä tahansa piirrätkin, se pysyy salassa. Edes palvelimemme eivät näe mitä keksit.","button_startSession":"Aloita istunto","button_stopSession":"Lopeta istunto","desc_inProgressIntro":"Jaettu istunto on nyt käynnissä.","desc_shareLink":"Jaa tämä linkki kenelle tahansa, jonka kanssa haluat tehdä yhteistyötä:","desc_exitSession":"Istunnon pysäyttäminen katkaisee yhteyden huoneeseen, mutta voit vielä jatkaa työskentelyä paikallisesti. Huomaa, että tämä ei vaikuta muihin käyttäjiin ja he voivat jatkaa oman versionsa parissa työskentelyä.","shareTitle":"Liity Excalidraw live-yhteistyöistuntoon"},"errorDialog":{"title":"Virhe"},"exportDialog":{"disk_title":"Tallenna levylle","disk_details":"Vie työn tiedot tiedostoon, josta sen voi tuoda myöhemmin.","disk_button":"Tallenna tiedostoon","link_title":"Jaettava linkki","link_details":"Vie vain luku -linkkinä.","link_button":"Vie linkkinä","excalidrawplus_description":"Tallenna teos Excalidraw+ tilaan.","excalidrawplus_button":"Vie","excalidrawplus_exportError":"Ei voitu viedä Excalidraw+-palveluun tällä hetkellä..."},"helpDialog":{"blog":"Lue blogiamme","click":"klikkaa","deepSelect":"Syvävalinta","deepBoxSelect":"Käytä syvävalintaa ja estä raahaus","curvedArrow":"Kaareva nuoli","curvedLine":"Kaareva viiva","documentation":"Käyttöohjeet","doubleClick":"kaksoisnapsautus","drag":"vedä","editor":"Muokkausohjelma","editLineArrowPoints":"","editText":"","github":"Löysitkö ongelman? Kerro meille","howto":"Seuraa oppaitamme","or":"tai","preventBinding":"Estä nuolten kiinnitys","tools":"Työkalut","shortcuts":"Pikanäppäimet","textFinish":"Lopeta muokkaus (tekstieditori)","textNewLine":"Lisää uusi rivi (tekstieditori)","title":"Ohjeet","view":"Näkymä","zoomToFit":"Näytä kaikki elementit","zoomToSelection":"Näytä valinta","toggleElementLock":"Lukitse / poista lukitus valinta","movePageUpDown":"Siirrä sivua ylös/alas","movePageLeftRight":"Siirrä sivua vasemmalle/oikealle"},"clearCanvasDialog":{"title":"Pyyhi piirtoalue"},"publishDialog":{"title":"Julkaise kirjasto","itemName":"Kohteen nimi","authorName":"Tekijän nimi","githubUsername":"GitHub-käyttäjätunnus","twitterUsername":"Twitter-käyttäjätunnus","libraryName":"Kirjaston nimi","libraryDesc":"Kirjaston kuvaus","website":"Verkkosivu","placeholder":{"authorName":"Nimesi tai käyttäjänimesi","libraryName":"Kirjastosi nimi","libraryDesc":"Kirjaston kuvaus, joka auttaa ihmisiä ymmärtämään sen käyttötarkoitukset","githubHandle":"GitHub-tunnuksesi (valinnainen), jotta voit muokata kirjastoa sen jälkeen kun se on lähetetty tarkastettavaksi","twitterHandle":"Twitter-tunnus (valinnainen), jotta tiedämme ketä kiittää kun viestimme Twitterissä","website":"Linkki henkilökohtaiselle verkkosivustollesi tai muualle (valinnainen)"},"errors":{"required":"Pakollinen","website":"Syötä oikeamuotoinen URL-osoite"},"noteDescription":"Lähetä kirjastosi, jotta se voidaan sisällyttää julkisessa kirjastolistauksessamuiden käyttöön omissa piirrustuksissaan.","noteGuidelines":"Kirjasto on ensin hyväksyttävä manuaalisesti. Ole hyvä ja lue ohjeet ennen lähettämistä. Tarvitset GitHub-tilin, jotta voit viestiä ja tehdä muutoksia pyydettäessä, mutta se ei ole ehdottoman välttämätöntä.","noteLicense":"Lähettämällä hyväksyt että kirjasto julkaistaan MIT-lisenssin alla, mikä lyhyesti antaa muiden käyttää sitä ilman rajoituksia.","noteItems":"Jokaisella kirjaston kohteella on oltava oma nimensä suodatusta varten. Seuraavat kirjaston kohteet sisältyvät:","atleastOneLibItem":"Valitse vähintään yksi kirjaston kohde aloittaaksesi","republishWarning":"Huom! Osa valituista kohteista on merkitty jo julkaistu/lähetetyiksi. Lähetä kohteita uudelleen vain päivitettäessä olemassa olevaa kirjastoa tai ehdotusta."},"publishSuccessDialog":{"title":"Kirjasto lähetetty","content":"Kiitos {{authorName}}. Kirjastosi on lähetetty tarkistettavaksi. Voit seurata sen tilaatäällä"},"confirmDialog":{"resetLibrary":"Tyhjennä kirjasto","removeItemsFromLib":"Poista valitut kohteet kirjastosta"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Piirroksesi ovat päästä-päähän-salattuja, joten Excalidrawin palvelimet eivät koskaan näe niitä.","link":"Blogiartikkeli päästä päähän -salauksesta Excalidraw:ssa"},"stats":{"angle":"Kulma","element":"Elementti","elements":"Elementit","height":"Korkeus","scene":"Teos","selected":"Valitut","storage":"Tallennustila","title":"Tilastoja nörteille","total":"Yhteensä","version":"Versio","versionCopy":"Klikkaa kopioidaksesi","versionNotAvailable":"Versio ei saatavilla","width":"Leveys"},"toast":{"addedToLibrary":"Lisätty kirjastoon","copyStyles":"Tyylit kopioitiin.","copyToClipboard":"Kopioitiin leikepöydälle.","copyToClipboardAsPng":"Kopioitiin {{exportSelection}} leikepöydälle PNG:nä\\n({{exportColorScheme}})","fileSaved":"Tiedosto tallennettu.","fileSavedToFilename":"Tallennettiin kohteeseen {filename}","canvas":"piirtoalue","selection":"valinta","pasteAsSingleElement":"Käytä {{shortcut}} liittääksesi yhtenä elementtinä,\\ntai liittääksesi olemassa olevaan tekstieditoriin","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Läpinäkyvä","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Kaikki tietosi on tallennettu paikallisesti selaimellesi.","center_heading_plus":"Haluatko sen sijaan mennä Excalidraw+:aan?","menuHint":"Vie, asetukset, kielet, ..."},"defaults":{"menuHint":"Vie, asetukset ja lisää...","center_heading":"Kaaviot. Tehty. Yksinkertaiseksi.","toolbarHint":"Valitse työkalu ja aloita piirtäminen!","helpHint":"Pikanäppäimet & ohje"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js b/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js new file mode 100644 index 0000000..bb54d91 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/fr-FR-json-d16a471290ba26a6c66a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3682],{7830:function(e){e.exports=JSON.parse('{"labels":{"paste":"Coller","pasteAsPlaintext":"Coller comme texte brut","pasteCharts":"Coller les graphiques","selectAll":"Tout sélectionner","multiSelect":"Ajouter l\'élément à la sélection","moveCanvas":"Déplacer le canevas","cut":"Couper","copy":"Copier","copyAsPng":"Copier dans le presse-papier en PNG","copyAsSvg":"Copier dans le presse-papier en SVG","copyText":"Copier dans le presse-papier en tant que texte","bringForward":"Envoyer vers l\'avant","sendToBack":"Déplacer à l\'arrière-plan","bringToFront":"Mettre au premier plan","sendBackward":"Reculer d\'un plan","delete":"Supprimer","copyStyles":"Copier les styles","pasteStyles":"Coller les styles","stroke":"Trait","background":"Arrière-plan","fill":"Remplissage","strokeWidth":"Largeur du contour","strokeStyle":"Style du trait","strokeStyle_solid":"Continu","strokeStyle_dashed":"Tirets","strokeStyle_dotted":"Pointillés","sloppiness":"Style de tracé","opacity":"Transparence","textAlign":"Alignement du texte","edges":"Angles","sharp":"Pointus","round":"Arrondis","arrowheads":"Extrémités","arrowhead_none":"Sans","arrowhead_arrow":"Flèche","arrowhead_bar":"Barre","arrowhead_dot":"Point","arrowhead_triangle":"Triangle","fontSize":"Taille de la police","fontFamily":"Police","addWatermark":"Ajouter \\"Réalisé avec Excalidraw\\"","handDrawn":"À main levée","normal":"Normale","code":"Code","small":"Petite","medium":"Moyenne","large":"Grande","veryLarge":"Très grande","solid":"Solide","hachure":"Hachures","zigzag":"Zigzag","crossHatch":"Hachures croisées","thin":"Fine","bold":"Épaisse","left":"À gauche","center":"Au centre","right":"À droite","extraBold":"Très épaisse","architect":"Architecte","artist":"Artiste","cartoonist":"Caricaturiste","fileTitle":"Nom du fichier","colorPicker":"Sélecteur de couleur","canvasColors":"Utilisé sur la zone de dessin","canvasBackground":"Arrière-plan du canevas","drawingCanvas":"Zone de dessin","layers":"Disposition","actions":"Actions","language":"Langue","liveCollaboration":"Collaboration en direct...","duplicateSelection":"Dupliquer","untitled":"Sans-titre","name":"Nom","yourName":"Votre nom","madeWithExcalidraw":"Fait avec Excalidraw","group":"Grouper la sélection","ungroup":"Dégrouper la sélection","collaborators":"Collaborateurs","showGrid":"Afficher la grille","addToLibrary":"Ajouter à la bibliothèque","removeFromLibrary":"Supprimer de la bibliothèque","libraryLoadingMessage":"Chargement de la bibliothèque…","libraries":"Parcourir les bibliothèques","loadingScene":"Chargement de la scène…","align":"Alignement","alignTop":"Aligner en haut","alignBottom":"Aligner en bas","alignLeft":"Aligner à gauche","alignRight":"Aligner à droite","centerVertically":"Centrer verticalement","centerHorizontally":"Centrer horizontalement","distributeHorizontally":"Répartir horizontalement","distributeVertically":"Répartir verticalement","flipHorizontal":"Retourner horizontalement","flipVertical":"Retourner verticalement","viewMode":"Mode présentation","share":"Partager","showStroke":"Afficher le sélecteur de couleur de trait","showBackground":"Afficher le sélecteur de couleur de fond","toggleTheme":"Changer le thème","personalLib":"Bibliothèque personnelle","excalidrawLib":"Bibliothèque Excalidraw","decreaseFontSize":"Diminuer la taille de police","increaseFontSize":"Augmenter la taille de la police","unbindText":"Dissocier le texte","bindText":"Associer le texte au conteneur","createContainerFromText":"Encadrer le texte dans un conteneur","link":{"edit":"Modifier le lien","editEmbed":"Éditer le lien & intégrer","create":"Ajouter un lien","createEmbed":"Créer un lien & intégrer","label":"Lien","labelEmbed":"","empty":"Aucun lien défini"},"lineEditor":{"edit":"Modifier la ligne","exit":"Quitter l\'éditeur de ligne"},"elementLock":{"lock":"Verrouiller","unlock":"Déverrouiller","lockAll":"Tout verrouiller","unlockAll":"Tout déverrouiller"},"statusPublished":"Publié","sidebarLock":"Maintenir la barre latérale ouverte","selectAllElementsInFrame":"Sélectionner tous les éléments du cadre","removeAllElementsFromFrame":"Supprimer tous les éléments du cadre","eyeDropper":""},"library":{"noItems":"Aucun élément n\'a encore été ajouté ...","hint_emptyLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici ou installez une bibliothèque depuis le dépôt public, ci-dessous.","hint_emptyPrivateLibrary":"Sélectionnez un élément sur le canevas pour l\'ajouter ici."},"buttons":{"clearReset":"Réinitialiser le canevas","exportJSON":"Exporter comme fichier","exportImage":"Exporter l\'image...","export":"Enregistrer sous...","copyToClipboard":"Copier dans le presse-papier","save":"Enregistrer dans le fichier actuel","saveAs":"Enregistrer sous","load":"Ouvrir","getShareableLink":"Obtenir un lien de partage","close":"Fermer","selectLanguage":"Choisir une langue","scrollBackToContent":"Revenir au contenu","zoomIn":"Zoomer","zoomOut":"Dézoomer","resetZoom":"Réinitialiser le zoom","menu":"Menu","done":"Terminé","edit":"Modifier","undo":"Annuler","redo":"Rétablir","resetLibrary":"Réinitialiser la bibliothèque","createNewRoom":"Créer une nouvelle salle","fullScreen":"Plein écran","darkMode":"Mode sombre","lightMode":"Mode clair","zenMode":"Mode zen","objectsSnapMode":"Aimanter aux objets","exitZenMode":"Quitter le mode zen","cancel":"Annuler","clear":"Effacer","remove":"Supprimer","embed":"Activer/Désactiver l\'intégration","publishLibrary":"Publier","submit":"Envoyer","confirm":"Confirmer","embeddableInteractionButton":"Cliquez pour interagir"},"alerts":{"clearReset":"L\'intégralité du canevas va être effacée. Êtes-vous sûr ?","couldNotCreateShareableLink":"Impossible de créer un lien de partage.","couldNotCreateShareableLinkTooBig":"Impossible de créer un lien de partage : la scène est trop volumineuse","couldNotLoadInvalidFile":"Impossible de charger un fichier invalide","importBackendFailed":"L\'importation depuis le serveur a échoué.","cannotExportEmptyCanvas":"Impossible d\'exporter un canevas vide.","couldNotCopyToClipboard":"Impossible de copier dans le presse-papiers.","decryptFailed":"Les données n\'ont pas pu être déchiffrées.","uploadedSecurly":"Le téléchargement a été sécurisé avec un chiffrement de bout en bout, ce qui signifie que ni Excalidraw ni personne d\'autre ne peut en lire le contenu.","loadSceneOverridePrompt":"Le chargement d\'un dessin externe remplacera votre contenu actuel. Souhaitez-vous continuer ?","collabStopOverridePrompt":"Arrêter la session écrasera votre précédent dessin stocké localement. Êtes-vous sûr·e ?\\n\\n(Si vous voulez garder votre dessin local, fermez simplement l\'onglet du navigateur à la place.)","errorAddingToLibrary":"Impossible d\'ajouter l\'élément à la bibliothèque","errorRemovingFromLibrary":"Impossible de retirer l\'élément de la bibliothèque","confirmAddLibrary":"Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?","imageDoesNotContainScene":"Cette image ne semble pas contenir de données de scène. Avez-vous activé l\'intégration de scène lors de l\'exportation ?","cannotRestoreFromImage":"Impossible de restaurer la scène depuis ce fichier image","invalidSceneUrl":"Impossible d\'importer la scène depuis l\'URL fournie. Elle est soit incorrecte, soit ne contient pas de données JSON Excalidraw valides.","resetLibrary":"Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?","removeItemsFromsLibrary":"Supprimer {{count}} élément(s) de la bibliothèque ?","invalidEncryptionKey":"La clé de chiffrement doit comporter 22 caractères. La collaboration en direct est désactivée.","collabOfflineWarning":"Aucune connexion internet disponible.\\nVos modifications ne seront pas enregistrées !"},"errors":{"unsupportedFileType":"Type de fichier non supporté.","imageInsertError":"Impossible d\'insérer l\'image. Réessayez plus tard...","fileTooBig":"Le fichier est trop volumineux. La taille maximale autorisée est de {{maxSize}}.","svgImageInsertError":"Impossible d\'insérer l\'image SVG. Le balisage SVG semble invalide.","failedToFetchImage":"","invalidSVGString":"SVG invalide.","cannotResolveCollabServer":"Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.","importLibraryError":"Impossible de charger la bibliothèque","collabSaveFailed":"Impossible d\'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.","collabSaveFailed_sizeExceeded":"Impossible d\'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail.","brave_measure_text_error":{"line1":"On dirait que vous utilisez le navigateur Brave avec l\'option Bloquer agressivement le fichage activée.","line2":"Cela pourrait entraîner des problèmes avec les Éléments Textuels dans vos dessins.","line3":"Nous recommandons fortement de désactiver cette option. Vous pouvez suivre ces instructions pour savoir comment faire.","line4":"Si désactiver cette option de résout pas le problème d\'affichage des éléments textuels, veuillez ouvrir un ticket sur notre GitHub, ou écrivez-nous sur notre Discord"},"libraryElementTypeError":{"embeddable":"Les éléments intégrés ne peuvent pas être ajoutés à la librairie.","image":"Le support pour l\'ajout d\'images à la librairie arrive bientôt !"}},"toolBar":{"selection":"Sélection","image":"Insérer une image","rectangle":"Rectangle","diamond":"Losange","ellipse":"Ellipse","arrow":"Flèche","line":"Ligne","freedraw":"Dessiner","text":"Texte","library":"Bibliothèque","lock":"Garder l\'outil sélectionné actif après le dessin","penMode":"Mode stylo - évite le toucher","link":"Ajouter/mettre à jour le lien pour une forme sélectionnée","eraser":"Gomme","frame":"Outil de cadre","embeddable":"Intégration Web","laser":"","hand":"Mains (outil de déplacement de la vue)","extraTools":"Plus d\'outils"},"headings":{"canvasActions":"Actions du canevas","selectedShapeActions":"Actions pour la forme sélectionnée","shapes":"Formes"},"hints":{"canvasPanning":"Pour déplacer la zone de dessin, maintenez la molette de la souris enfoncée ou la barre d\'espace tout en faisant glisser, ou utiliser l\'outil main.","linearElement":"Cliquez pour démarrer plusieurs points, faites glisser pour une seule ligne","freeDraw":"Cliquez et faites glissez, relâchez quand vous avez terminé","text":"Astuce : vous pouvez aussi ajouter du texte en double-cliquant n\'importe où avec l\'outil de sélection","embeddable":"Cliquez et glissez pour créer une intégration de site web","text_selected":"Double-cliquez ou appuyez sur ENTRÉE pour modifier le texte","text_editing":"Appuyez sur ÉCHAP ou Ctrl/Cmd+ENTRÉE pour terminer l\'édition","linearElementMulti":"Cliquez sur le dernier point ou appuyez sur Échap ou Entrée pour terminer","lockAngle":"Vous pouvez restreindre l\'angle en maintenant MAJ","resize":"Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre","resizeImage":"Vous pouvez redimensionner librement en maintenant SHIFT,\\nmaintenez ALT pour redimensionner depuis le centre","rotate":"Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation","lineEditor_info":"Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points","lineEditor_pointSelected":"Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer","lineEditor_nothingSelected":"Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),\\nou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points","placeImage":"Cliquez pour placer l\'image, ou cliquez et faites glisser pour définir sa taille manuellement","publishLibrary":"Publier votre propre bibliothèque","bindTextToElement":"Appuyer sur Entrée pour ajouter du texte","deepBoxSelect":"Maintenir Ctrl ou Cmd pour sélectionner dans les groupes et empêcher le déplacement","eraserRevert":"Maintenez Alt enfoncé pour annuler les éléments marqués pour suppression","firefox_clipboard_write":"Cette fonctionnalité devrait pouvoir être activée en définissant l\'option \\"dom.events.asyncClipboard.clipboard.clipboardItem\\" à \\"true\\". Pour modifier les paramètres du navigateur dans Firefox, visitez la page \\"about:config\\".","disableSnapping":"Maintenez CtrlOuCmd pour désactiver l\'aimantation"},"canvasError":{"cannotShowPreview":"Impossible d’afficher l’aperçu","canvasTooBig":"Le canevas est peut-être trop grand.","canvasTooBigTip":"Astuce : essayez de rapprocher un peu les éléments les plus éloignés."},"errorSplash":{"headingMain":"Une erreur est survenue. Essayez ","clearCanvasMessage":"Si le rechargement ne résout pas l\'erreur, essayez ","clearCanvasCaveat":" Cela entraînera une perte du travail ","trackedToSentry":"L\'erreur avec l\'identifiant {{eventId}} a été enregistrée dans notre système.","openIssueMessage":"Nous avons fait très attention à ne pas inclure les informations de votre scène dans l\'erreur. Si votre scène n\'est pas privée, veuillez envisager de poursuivre sur notre Veuillez inclure les informations ci-dessous en les copiant-collant dans le ticket GitHub.","sceneContent":"Contenu de la scène :"},"roomDialog":{"desc_intro":"Vous pouvez inviter des personnes à collaborer avec vous sur votre scène actuelle.","desc_privacy":"Pas d\'inquiétude, la session utilise le chiffrement de bout en bout, donc tout ce que vous dessinez restera privé. Même notre serveur ne pourra voir ce que vous faites.","button_startSession":"Démarrer la session","button_stopSession":"Arrêter la session","desc_inProgressIntro":"La session de collaboration en direct est maintenant en cours.","desc_shareLink":"Partagez ce lien avec les personnes avec lesquelles vous souhaitez collaborer :","desc_exitSession":"Arrêter la session vous déconnectera de la salle, mais vous pourrez continuer à travailler avec la scène, localement. Notez que cela n\'affectera pas les autres personnes, et ils pourront toujours collaborer sur leur version.","shareTitle":"Rejoindre une session de collaboration en direct sur Excalidraw"},"errorDialog":{"title":"Erreur"},"exportDialog":{"disk_title":"Enregistrer sur le disque","disk_details":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement.","disk_button":"Enregistrer comme fichier","link_title":"Lien partageable","link_details":"Exporter comme un lien en lecture seule.","link_button":"Exporter comme lien","excalidrawplus_description":"Enregistrer la scène dans votre espace de travail Excalidraw+.","excalidrawplus_button":"Exporter","excalidrawplus_exportError":"Impossible d\'exporter vers Excalidraw+ pour le moment..."},"helpDialog":{"blog":"Lire notre blog","click":"clic","deepSelect":"Sélection dans les groupes","deepBoxSelect":"Sélectionner dans les groupes, et empêcher le déplacement","curvedArrow":"Flèche courbée","curvedLine":"Ligne courbée","documentation":"Documentation","doubleClick":"double-clic","drag":"glisser","editor":"Éditeur","editLineArrowPoints":"Modifier les points de ligne/flèche","editText":"Modifier le texte / ajouter un libellé","github":"Problème trouvé ? Soumettre","howto":"Suivez nos guides","or":"ou","preventBinding":"Empêcher la liaison de flèche","tools":"Outils","shortcuts":"Raccourcis clavier","textFinish":"Terminer l\'édition (éditeur de texte)","textNewLine":"Ajouter une nouvelle ligne (éditeur de texte)","title":"Aide","view":"Affichage","zoomToFit":"Zoomer pour voir tous les éléments","zoomToSelection":"Zoomer sur la sélection","toggleElementLock":"Verrouiller/déverrouiller la sélection","movePageUpDown":"Déplacer la page vers le haut/bas","movePageLeftRight":"Déplacer la page vers la gauche/droite"},"clearCanvasDialog":{"title":"Effacer la zone de dessin"},"publishDialog":{"title":"Publier la bibliothèque","itemName":"Nom de l’élément","authorName":"Nom de l\'auteur","githubUsername":"Nom d\'utilisateur GitHub","twitterUsername":"Nom d\'utilisateur Twitter","libraryName":"Nom de la bibliothèque","libraryDesc":"Description de la bibliothèque","website":"Site web","placeholder":{"authorName":"Votre nom ou nom d\'utilisateur","libraryName":"Nom de votre bibliothèque","libraryDesc":"Description de votre bibliothèque pour aider les gens à comprendre son usage","githubHandle":"Nom d\'utilisateur GitHub (optionnel), pour que tu puisses modifier la bibliothèque une fois soumise pour vérification","twitterHandle":"Nom d\'utilisateur Twitter (optionnel), pour savoir qui créditer lors de la promotion sur Twitter","website":"Lien vers votre site web personnel ou autre (optionnel)"},"errors":{"required":"Requis","website":"Entrer une URL valide"},"noteDescription":"Soumets ta bibliothèque pour l\'inclure au dépôt de bibliothèque publiquepour permettre son utilisation par autrui dans leurs dessins.","noteGuidelines":"La bibliothèque doit d\'abord être approuvée manuellement. Veuillez lire les lignes directrices avant de la soumettre. Vous aurez besoin d\'un compte GitHub pour communiquer et apporter des modifications si demandé, mais ce n\'est pas obligatoire.","noteLicense":"En soumettant, vous acceptez que la bibliothèque soit publiée sous la Licence MIT, ce qui en gros signifie que tout le monde peut l\'utiliser sans restrictions.","noteItems":"Chaque élément de la bibliothèque doit avoir son propre nom afin qu\'il soit filtrable. Les éléments de bibliothèque suivants seront inclus :","atleastOneLibItem":"Veuillez sélectionner au moins un élément de bibliothèque pour commencer","republishWarning":"Remarque : certains des éléments sélectionnés sont marqués comme étant déjà publiés/soumis. Vous devez uniquement resoumettre des éléments lors de la mise à jour d\'une bibliothèque ou d\'une soumission existante."},"publishSuccessDialog":{"title":"Bibliothèque soumise","content":"Merci {{authorName}}. Votre bibliothèque a été soumise pour examen. Vous pouvez suivre le statutici"},"confirmDialog":{"resetLibrary":"Réinitialiser la bibliothèque","removeItemsFromLib":"Enlever les éléments sélectionnés de la bibliothèque"},"imageExportDialog":{"header":"Exporter l\'image","label":{"withBackground":"Fond","onlySelected":"Uniquement la sélection","darkMode":"Mode sombre","embedScene":"Intégrer la scène","scale":"Échelle","padding":""},"tooltip":{"embedScene":"Les données de la scène seront sauvegardées dans le fichier PNG/SVG exporté afin que la scène puisse être restaurée depuis celui-ci.\\nCela augmentera la taille du fichier exporté."},"title":{"exportToPng":"Exporter en PNG","exportToSvg":"Exporter en SVG","copyPngToClipboard":"Copier le PNG dans le presse-papier"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copier dans le presse-papier"}},"encrypted":{"tooltip":"Vos dessins sont chiffrés de bout en bout, les serveurs d\'Excalidraw ne les verront jamais.","link":"Article de blog sur le chiffrement de bout en bout dans Excalidraw"},"stats":{"angle":"Angle","element":"Élément","elements":"Éléments","height":"Hauteur","scene":"Scène","selected":"Sélection","storage":"Stockage","title":"Stats pour les nerds","total":"Total","version":"Version","versionCopy":"Cliquer pour copier","versionNotAvailable":"Version non disponible","width":"Largeur"},"toast":{"addedToLibrary":"Ajouté à la bibliothèque","copyStyles":"Styles copiés.","copyToClipboard":"Copié dans le presse-papier.","copyToClipboardAsPng":"{{exportSelection}} copié dans le presse-papier en PNG\\n({{exportColorScheme}})","fileSaved":"Fichier enregistré.","fileSavedToFilename":"Enregistré sous {filename}","canvas":"canevas","selection":"sélection","pasteAsSingleElement":"Utiliser {{shortcut}} pour coller comme un seul élément,\\nou coller dans un éditeur de texte existant","unableToEmbed":"Intégrer cet URL n\'est actuellement pas autorisé. Ouvrez un ticket sur GitHub pour demander son ajout à la liste blanche","unrecognizedLinkFormat":"Le lien que vous avez intégré ne correspond pas au format attendu. Veuillez essayer de coller la chaîne d\'intégration fournie par le site source"},"colors":{"transparent":"Transparent","black":"Noir","white":"Blanc","red":"Rouge","pink":"Rose","grape":"Mauve","violet":"Violet","gray":"Gris","blue":"Bleu","cyan":"Cyan","teal":"Turquoise","green":"Vert","yellow":"Jaune","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Toutes vos données sont sauvegardées en local dans votre navigateur.","center_heading_plus":"Vouliez-vous plutôt aller à Excalidraw+ à la place ?","menuHint":"Exportation, préférences, langues, ..."},"defaults":{"menuHint":"Exportation, préférences et plus...","center_heading":"Diagrammes. Rendus. Simples.","toolbarHint":"Choisissez un outil et commencez à dessiner !","helpHint":"Raccourcis et aide"}},"colorPicker":{"mostUsedCustomColors":"Couleurs personnalisées les plus fréquemment utilisées","colors":"Couleurs","shades":"Nuances","hexCode":"Code hex","noShades":"Aucune nuance disponible pour cette couleur"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exporter en image","button":"Exporter en image","description":"Exporter les données de la scène comme une image que vous pourrez importer ultérieurement."},"saveToDisk":{"title":"Sauvegarder sur le disque","button":"Sauvegarder sur le disque","description":"Exporter les données de la scène comme un fichier que vous pourrez importer ultérieurement."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exporter vers Excalidraw+","description":"Enregistrer la scène dans votre espace de travail Excalidraw+."}},"modal":{"loadFromFile":{"title":"Charger depuis un fichier","button":"Charger depuis un fichier","description":"Charger depuis un fichier va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."},"shareableLink":{"title":"Charger depuis un lien","button":"Remplacer mon contenu","description":"Charger un dessin externe va remplacer votre contenu existant.

Vous pouvez d\'abord sauvegarder votre dessin en utilisant l\'une des options ci-dessous."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js b/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js new file mode 100644 index 0000000..6ed57c0 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/gl-ES-json-d11c7966c3c2f95756e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2943],{5199:function(e){e.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar coma texto sen formato","pasteCharts":"Pegar gráficos","selectAll":"Seleccionar todo","multiSelect":"Engadir elemento á selección","moveCanvas":"Mover o lenzo","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar no portapapeis como PNG","copyAsSvg":"Copiar no portapapeis como SVG","copyText":"Copia no portapapeis como texto","bringForward":"Traer cara adiante","sendToBack":"Enviar cara atrás","bringToFront":"Traer á fronte","sendBackward":"Enviar ao fondo","delete":"Borrar","copyStyles":"Copiar estilo","pasteStyles":"Pegar estilo","stroke":"Trazo","background":"Fondo","fill":"Recheo","strokeWidth":"Largo do trazo","strokeStyle":"Estilo do trazo","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Liña de trazos","strokeStyle_dotted":"Liña de puntos","sloppiness":"Estilo de trazo","opacity":"Opacidade","textAlign":"Aliñar texto","edges":"Bordos","sharp":"Agudo","round":"Redondo","arrowheads":"Puntas de frecha","arrowhead_none":"Ningunha","arrowhead_arrow":"Frecha","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triángulo","fontSize":"Tamaño da fonte","fontFamily":"Tipo de fonte","addWatermark":"Engadir \\"Feito con Excalidraw\\"","handDrawn":"Debuxado a man","normal":"Normal","code":"Código","small":"Pequeno","medium":"Mediano","large":"Grande","veryLarge":"Moi grande","solid":"Sólido","hachure":"Folleto","zigzag":"Zigzag","crossHatch":"Raiado transversal","thin":"Estreito","bold":"Groso","left":"Esquerda","center":"Centrado","right":"Dereita","extraBold":"Moi groso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricatura","fileTitle":"Nome do arquivo","colorPicker":"Selector de cor","canvasColors":"Usado en lenzo","canvasBackground":"Fondo do lenzo","drawingCanvas":"Lenzo de debuxo","layers":"Capas","actions":"Accións","language":"Idioma","liveCollaboration":"Colaboración en directo...","duplicateSelection":"Duplicar","untitled":"Sen título","name":"Nome","yourName":"O teu nome","madeWithExcalidraw":"Feito con Excalidraw","group":"Agrupar selección","ungroup":"Desagrupar selección","collaborators":"Colaboradores","showGrid":"Mostrar cuadrícula","addToLibrary":"Engadir á biblioteca","removeFromLibrary":"Eliminar da biblioteca","libraryLoadingMessage":"Cargando biblioteca…","libraries":"Explorar bibliotecas","loadingScene":"Cargando escena…","align":"Aliñamento","alignTop":"Aliñamento superior","alignBottom":"Aliñamento inferior","alignLeft":"Aliñar a esquerda","alignRight":"Aliñar a dereita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuír horizontalmente","distributeVertically":"Distribuír verticalmente","flipHorizontal":"Virar horizontalmente","flipVertical":"Virar verticalmente","viewMode":"Modo de visualización","share":"Compartir","showStroke":"Mostrar selector de cores do trazo","showBackground":"Mostrar selector de cores do fondo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Persoal","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Diminuír tamaño da fonte","increaseFontSize":"Aumentar o tamaño da fonte","unbindText":"Desvincular texto","bindText":"Ligar o texto ao contedor","createContainerFromText":"Envolver o texto nun contedor","link":{"edit":"Editar ligazón","editEmbed":"","create":"Crear ligazón","createEmbed":"","label":"Ligazón","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar liña","exit":"Saír do editor de liñas"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todo","unlockAll":"Desbloquear todo"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Aínda non hai elementos engadidos...","hint_emptyLibrary":"Seleccione un elemento no lenzo para engadilo aquí, ou instale unha biblioteca dende o repositorio público, como se detalla a continuación.","hint_emptyPrivateLibrary":"Seleccione un elemento do lenzo para engadilo aquí."},"buttons":{"clearReset":"Limpar o lenzo","exportJSON":"Exportar a arquivo","exportImage":"Exportar imaxe...","export":"Gardar en...","copyToClipboard":"Copiar ao portapapeis","save":"Gardar no ficheiro actual","saveAs":"Gardar como","load":"Abrir","getShareableLink":"Obter unha ligazón que se poida compartir","close":"Pechar","selectLanguage":"Seleccionar idioma","scrollBackToContent":"Volver ao contido","zoomIn":"Ampliar","zoomOut":"Reducir","resetZoom":"Reiniciar zoom","menu":"Menú","done":"Feito","edit":"Editar","undo":"Desfacer","redo":"Refacer","resetLibrary":"Reiniciar biblioteca","createNewRoom":"Crear nova sala","fullScreen":"Pantalla completa","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Saír do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Eliminar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":"Faga clic para interactuar"},"alerts":{"clearReset":"Isto limpará todo o lenzo. Estás seguro?","couldNotCreateShareableLink":"Non se puido crear unha ligazón para compartir.","couldNotCreateShareableLinkTooBig":"Non se puido crear a ligazón para compartir: a escena é demasiado grande","couldNotLoadInvalidFile":"Non se puido cargar o ficheiro non válido","importBackendFailed":"A importación dende o backend fallou.","cannotExportEmptyCanvas":"Non se pode exportar un lenzo baleiro.","couldNotCopyToClipboard":"Non se puido copiar ao portapapeis.","decryptFailed":"Non se poideron descifrar os datos.","uploadedSecurly":"A carga foi asegurada con cifrado de extremo a extremo, o que significa que o servidor de Excalidraw e terceiros non poden ler o contido.","loadSceneOverridePrompt":"A carga dun debuxo externo substituirá o contido existente. Desexa continuar?","collabStopOverridePrompt":"Deter a sesión, sobrescribirá o seu debuxo local previamente almacenado. Está seguro?\\n\\n(Se quere manter o seu debuxo local, simplemente peche a lapela do navegador.)","errorAddingToLibrary":"Non se puido engadir o elemento á biblioteca","errorRemovingFromLibrary":"Non se puido eliminar o elemento da biblioteca","confirmAddLibrary":"Isto engadirá {{numShapes}} forma(s) a túa biblioteca. Estás seguro?","imageDoesNotContainScene":"Esta imaxe non parece conter ningún dato da escena. Activou a inserción de escenas durante a exportación?","cannotRestoreFromImage":"Non se puido restaurar a escena dende este arquivo de imaxe","invalidSceneUrl":"Non se puido importar a escena dende a URL proporcionada. Ou ben está malformada ou non contén un JSON con información válida para Excalidraw.","resetLibrary":"Isto limpará a súa biblioteca. Está seguro?","removeItemsFromsLibrary":"Eliminar {{count}} elemento(s) da biblioteca?","invalidEncryptionKey":"A clave de cifrado debe ter 22 caracteres. A colaboración en directo está desactivada.","collabOfflineWarning":"Non hai conexión a Internet dispoñible.\\nOs teus cambios non serán gardados!"},"errors":{"unsupportedFileType":"Tipo de ficheiro non soportado.","imageInsertError":"Non se puido inserir a imaxe. Probe de novo máis tarde...","fileTooBig":"O ficheiro é demasiado grande. O tamaño máximo permitido é {{maxSize}}.","svgImageInsertError":"Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.","importLibraryError":"Non se puido cargar a biblioteca","collabSaveFailed":"Non se puido gardar na base de datos. Se o problema persiste, deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","collabSaveFailed_sizeExceeded":"Non se puido gardar na base de datos, o lenzo semella demasiado grande. Deberías gardar o teu arquivo de maneira local para asegurarte de non perdelo teu traballo.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Selección","image":"Inserir imaxe","rectangle":"Rectángulo","diamond":"Diamante","ellipse":"Elipse","arrow":"Frecha","line":"Liña","freedraw":"Debuxar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta seleccionada activa despois de debuxar","penMode":"Modo lapis - evitar o contacto","link":"Engadir/ Actualizar ligazón para a forma seleccionada","eraser":"Goma de borrar","frame":"","embeddable":"Inserir na web","laser":"Punteiro láser","hand":"Man (ferramenta de desprazamento)","extraTools":"Máis ferramentas"},"headings":{"canvasActions":"Accións do lenzo","selectedShapeActions":"Accións da forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"Para mover o lenzo, manteña pulsada a roda do rato ou a barra de espazo mentres arrastra, ou utilice a ferramenta da man","linearElement":"Faga clic para iniciar varios puntos, arrastre para unha sola liña","freeDraw":"Fai clic e arrastra, solta cando acabes","text":"Consello: tamén podes engadir texto facendo dobre-clic en calquera lugar coa ferramenta de selección","embeddable":"Faga clic e arrastre para crear un sitio web embebido","text_selected":"Dobre-clic ou prema ENTER para editar o texto","text_editing":"Prema Escape ou CtrlOrCmd+ENTER para finalizar a edición","linearElementMulti":"Faga clic no último punto ou prema Escape ou Enter para rematar","lockAngle":"Pode reducir o ángulo mantendo SHIFT","resize":"Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\\nmanteña ALT para axustalo dende o centro","resizeImage":"Pode axustar o tamaño libremente mantendo SHIFT,\\nmanteña ALT para axustalo dende o centro","rotate":"Podes reducir os ángulos mantendo SHIFT mentres os rotas","lineEditor_info":"Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos","lineEditor_pointSelected":"Prema Suprimir para eliminar o(s) punto(s)\\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos","lineEditor_nothingSelected":"Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),\\nou manteña pulsado Alt e faga clic para engadir novos puntos","placeImage":"Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente","publishLibrary":"Publica a túa propia biblioteca","bindTextToElement":"Prema a tecla enter para engadir texto","deepBoxSelect":"Manteña pulsado CtrlOrCmd para seleccionar en profundidade e evitar o arrastre","eraserRevert":"Manteña pulsado Alt para reverter os elementos marcados para a súa eliminación","firefox_clipboard_write":"Esta función pódese activar establecendo a opción \\"dom.events.asyncClipboard.clipboardItem\\" a \\"true\\". Para cambiar as opcións do navegador en Firefox, visita a páxina \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Non se pode mostrar a vista previa","canvasTooBig":"Pode que o lenzo sexa demasiado grande.","canvasTooBigTip":"Consello: Probe a acercar un pouco os elementos máis afastados."},"errorSplash":{"headingMain":"Atopouse un erro. Probe ","clearCanvasMessage":"Se recargar non funcionou, probe ","clearCanvasCaveat":" Isto resultará nunha perda do seu traballo ","trackedToSentry":"O erro con identificador {{eventId}} foi rastrexado no noso sistema.","openIssueMessage":"Fomos moi cautelosos de non incluír a información da súa escena no erro. Se a súa escena non é privada, por favor, considere o seguimento do noso Por favor inclúa a seguinte información copiándoa e pegándoa na issue de Github.","sceneContent":"Contido da escena:"},"roomDialog":{"desc_intro":"Podes invitar xente a colaborar contigo na túa escena actual.","desc_privacy":"Non te preocupes, a sesión usa cifrado de punto a punto, polo que calquera cousa que debuxes mantense privada. Nin tan sequera o noso servidor será capaz de ver o que fas.","button_startSession":"Comezar sesión","button_stopSession":"Rematar sesión","desc_inProgressIntro":"A sesión de colaboración en directo está agora en progreso.","desc_shareLink":"Comparte esta ligazón con calquera que queiras colaborar:","desc_exitSession":"Deter a sesión desconectarao da sala, pero poderá seguir traballando coa escena de maneira local. Teña en conta que isto non afectará a outras persoas, que poderán seguir colaborando na súa versión.","shareTitle":"Únase a unha sesión de colaboración en directo en Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Gardar no disco","disk_details":"Exporte os datos da escena a un ficheiro que poderás importar máis tarde.","disk_button":"Gardar nun ficheiro","link_title":"Ligazón para compartir","link_details":"Exportar como unha ligazón de só lectura.","link_button":"Exportar a unha ligazón","excalidrawplus_description":"Garde a escena no seu espazo de traballo en Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Non se puido exportar a Excalidraw+ neste momento..."},"helpDialog":{"blog":"Le o noso blog","click":"clic","deepSelect":"Selección en profundidade","deepBoxSelect":"Selección en profundidade dentro da caixa, evitando o arrastre","curvedArrow":"Frecha curva","curvedLine":"Liña curva","documentation":"Documentación","doubleClick":"dobre-clic","drag":"arrastrar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Encontrou un problema? Envíeo","howto":"Sigue as nosas normas","or":"ou","preventBinding":"Evitar a unión de frechas","tools":"Ferramentas","shortcuts":"Atallos de teclado","textFinish":"Rematar de editar (editor de texto)","textNewLine":"Engadir unha nova liña (editor de texto)","title":"Axuda","view":"Vista","zoomToFit":"Zoom que se axuste a todos os elementos","zoomToSelection":"Zoom á selección","toggleElementLock":"Bloquear/desbloquear selección","movePageUpDown":"Mover páxina cara enriba/abaixo","movePageLeftRight":"Mover páxina cara a esquerda/dereita"},"clearCanvasDialog":{"title":"Limpar lenzo"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do elemento","authorName":"Nome do autor","githubUsername":"Nome de usuario en Github","twitterUsername":"Nome de usuario en Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrición da biblioteca","website":"Páxina web","placeholder":{"authorName":"O seu nome ou nome de usuario","libraryName":"Nome da súa biblioteca","libraryDesc":"Descrición da súa biblioteca para axudar a xente a entender o seu uso","githubHandle":"Nome de usuario de GitHub (opcional), así poderás editar a biblioteca unha vez enviada para a súa revisión","twitterHandle":"Nome de usuario en Twitter(opcional), así sabemos a quen darlle crédito cando se lle de promoción a través de Twitter","website":"Ligazón ao teu sitio web persoal ou a outro sitio (opcional)"},"errors":{"required":"Obrigatorio","website":"Introduza unha URL válida"},"noteDescription":"Envíe a súa biblioteca para que sexa incluída no repositorio público de bibliotecaspara que outra xente a poida usar nos seus debuxos.","noteGuidelines":"A biblioteca necesita ser aprobada manualmente primeiro. Por favor, lea as normas antes de ser enviado. Necesitarás unha conta de GitHub para comunicarte ou facer cambios se se solicitan, pero non é estritamente necesario.","noteLicense":"Ao enviar, estás de acordo con que a biblioteca sexa publicada baixo a Licenza MIT, o cal significa que, en resumo, calquera pode usalo sen restricións.","noteItems":"Cada elemento da biblioteca debe ter o seu nome propio para que se poida filtrar. Os seguintes elementos da biblioteca serán incluídos:","atleastOneLibItem":"Por favor seleccione polo menos un elemento da biblioteca para comezar","republishWarning":"Nota: algúns dos elementos seleccionados están marcados como xa publicados/enviados. Só deberías reenviar elementos cando se actualice unha biblioteca ou envío."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Grazas {{authorName}}. A súa biblioteca foi enviada para ser revisada. Pode seguir o estadoaquí"},"confirmDialog":{"resetLibrary":"Restablecer biblioteca","removeItemsFromLib":"Eliminar os elementos seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imaxe","label":{"withBackground":"Fondo","onlySelected":"","darkMode":"Modo escuro","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar a PNG","exportToSvg":"Exportar a SVG","copyPngToClipboard":"Copiar PNG ao portapapeis"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar ao portapapeis"}},"encrypted":{"tooltip":"Os teus debuxos están cifrados de punto a punto, polo que os servidores de Excalidraw nunca os verán.","link":"Entrada do blog acerca do cifrado de punto a punto en Excalidraw"},"stats":{"angle":"Ángulo","element":"Elemento","elements":"Elementos","height":"Alto","scene":"Escena","selected":"Seleccionado","storage":"Almacenamento","title":"Estadísticas para nerds","total":"Total","version":"Versión","versionCopy":"Faga clic para copiar","versionNotAvailable":"Versión non dispoñible","width":"Ancho"},"toast":{"addedToLibrary":"Engadido á biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado ao portapapeis.","copyToClipboardAsPng":"Copiar {{exportSelection}} ao portapapeis como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro gardado.","fileSavedToFilename":"Gardado en {filename}","canvas":"lenzo","selection":"selección","pasteAsSingleElement":"Usa {{shortcut}} para pegar como un único elemento\\nou pega nun editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Negro","white":"Branco","red":"Vermello","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Gris","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Marelo","orange":"Laranxa","bronze":"Bronce"},"welcomeScreen":{"app":{"center_heading":"Toda a información é gardada de maneira local no seu navegador.","center_heading_plus":"Queres ir a Excalidraw+ no seu lugar?","menuHint":"Exportar, preferencias, idiomas, ..."},"defaults":{"menuHint":"Exportar, preferencias, e máis...","center_heading":"Diagramas. Feito. Sinxelo.","toolbarHint":"Escolle unha ferramenta & Comeza a debuxar!","helpHint":"Atallos & axuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imaxe","button":"Exportar como imaxe","description":""},"saveToDisk":{"title":"Gardar no disco","button":"Gardar no disco","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar a Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Cargar dende arquivo","button":"Cargar dende arquivo","description":""},"shareableLink":{"title":"Cargar dende un enlace","button":"Substituír o meu contido","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js b/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js new file mode 100644 index 0000000..2732af7 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/he-IL-json-a7bc2a673875b2e655e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2312],{1994:function(e){e.exports=JSON.parse('{"labels":{"paste":"הדבק","pasteAsPlaintext":"הדבק ללא עיצוב","pasteCharts":"הדבק גרפים","selectAll":"בחר הכל","multiSelect":"הוסף רכיב לבחירה","moveCanvas":"הזז את הקנבס","cut":"גזור","copy":"העתק","copyAsPng":"העתק ללוח כ PNG","copyAsSvg":"העתק ללוח כ SVG","copyText":"העתק ללוח כטקסט","bringForward":"הבא שכבה קדימה","sendToBack":"שלח אחורה","bringToFront":"העבר לחזית","sendBackward":"העבר שכבה אחורה","delete":"מחק","copyStyles":"העתק סגנון","pasteStyles":"הדבק סגנון","stroke":"קו מתאר","background":"רקע","fill":"מילוי","strokeWidth":"עובי קו מתאר","strokeStyle":"סגנון קו המתאר","strokeStyle_solid":"מלא","strokeStyle_dashed":"מקווקו","strokeStyle_dotted":"מנוקד","sloppiness":"רישול","opacity":"אטימות","textAlign":"יישור טקסט","edges":"קצוות","sharp":"חד","round":"עגול","arrowheads":"ראשי חצים","arrowhead_none":"ללא","arrowhead_arrow":"חץ","arrowhead_bar":"קצה אנכי","arrowhead_dot":"נקודה","arrowhead_triangle":"משולש","fontSize":"גודל גופן","fontFamily":"גופן","addWatermark":"הוסף \\"נוצר באמצעות Excalidraw\\"","handDrawn":"ציור יד","normal":"רגיל","code":"קוד","small":"קטן","medium":"בינוני","large":"גדול","veryLarge":"גדול מאוד","solid":"מוצק","hachure":"קווים מקבילים קצרים להצגת כיוון וחדות שיפוע במפה","zigzag":"זיגזג","crossHatch":"קווים מוצלבים שתי וערב","thin":"דק","bold":"מודגש","left":"שמאל","center":"מרכז","right":"ימין","extraBold":"מודגש במיוחד","architect":"ארכיטקט","artist":"אמן","cartoonist":"קריקטוריסט","fileTitle":"שם קובץ","colorPicker":"בוחר צבעים","canvasColors":"בשימוש בקנבס","canvasBackground":"רקע קנבס","drawingCanvas":"קנבס ציור","layers":"שכבות","actions":"פעולות","language":"שפה","liveCollaboration":"התחל שיתוף חי...","duplicateSelection":"שכפל","untitled":"ללא כותרת","name":"שם","yourName":"שמך","madeWithExcalidraw":"נוצר באמצעות Excalidraw","group":"קבץ","ungroup":"פרק קבוצה","collaborators":"שותפים","showGrid":"הצג רשת","addToLibrary":"הוסף לספריה","removeFromLibrary":"הסר מספריה","libraryLoadingMessage":"טוען ספריה…","libraries":"עיין בספריות","loadingScene":"טוען תצוגה…","align":"יישר","alignTop":"יישר למעלה","alignBottom":"יישר למטה","alignLeft":"יישר לשמאל","alignRight":"יישר לימין","centerVertically":"מרכז אנכית","centerHorizontally":"מרכז אופקית","distributeHorizontally":"חלוקה אופקית","distributeVertically":"חלוקה אנכית","flipHorizontal":"הפוך אופקית","flipVertical":"הפוך אנכית","viewMode":"מצב תצוגה","share":"שתף","showStroke":"הצג בוחר צבע מברשת","showBackground":"הצג בוחר צבע רקע","toggleTheme":"שינוי ערכת העיצוב","personalLib":"ספריה פרטית","excalidrawLib":"הספריה של Excalidraw","decreaseFontSize":"הקטן את גודל הגופן","increaseFontSize":"הגדל את גודל הגופן","unbindText":"ביטול קיבוע הטקסט","bindText":"קיבוע הטקסט למיכל","createContainerFromText":"ארוז טקסט במיכל","link":{"edit":"עריכת קישור","editEmbed":"ערוך קישור ושבץ","create":"יצירת קישור","createEmbed":"צור קישור ושבץ","label":"קישור","labelEmbed":"קשר ושבץ","empty":"לא נקבע קישור"},"lineEditor":{"edit":"ערוך קו","exit":"צא מעורך הקו"},"elementLock":{"lock":"נעילה","unlock":"ביטול נעילה","lockAll":"לנעול הכל","unlockAll":"שחרור הכול"},"statusPublished":"פורסם","sidebarLock":"שמור את סרגל הצד פתוח","selectAllElementsInFrame":"בחר את כל האלמנטים במסגרת","removeAllElementsFromFrame":"הסר את כל האלמנטים שבמסגרת","eyeDropper":""},"library":{"noItems":"עוד לא הוספת דברים...","hint_emptyLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן, או שתתקין ספריה מהספריה הציבורית מטה.","hint_emptyPrivateLibrary":"בחר משהו בקנבס כדי להוסיף אותו לכאן."},"buttons":{"clearReset":"אפס את הקנבאס","exportJSON":"ייצא לקובץ","exportImage":"ייצוא התמונה...","export":"שמור ל...","copyToClipboard":"העתק ללוח","save":"שמור לקובץ נוכחי","saveAs":"שמירה בשם","load":"פתח","getShareableLink":"קבל קישור לשיתוף","close":"סגור","selectLanguage":"בחר שפה","scrollBackToContent":"גלול בחזרה לתוכן","zoomIn":"הגדל","zoomOut":"הקטן","resetZoom":"איפוס זום","menu":"תפריט","done":"בוצע","edit":"ערוך","undo":"בטל","redo":"בצע מחדש","resetLibrary":"איפוס ספריה","createNewRoom":"צור חדר חדש","fullScreen":"מסך מלא","darkMode":"מצב כהה","lightMode":"מצב בהיר","zenMode":"מצב זן","objectsSnapMode":"","exitZenMode":"צא ממצב זן","cancel":"ביטול","clear":"ניקוי","remove":"הסר","embed":"","publishLibrary":"פרסום","submit":"שליחה","confirm":"אשר","embeddableInteractionButton":""},"alerts":{"clearReset":"פעולה זו תנקה את כל הקנבס. אתה בטוח?","couldNotCreateShareableLink":"יצירת קישור לשיתוף נכשל.","couldNotCreateShareableLinkTooBig":"יצירת קישור לשיתוף נכשל: התצוגה גדולה מדי","couldNotLoadInvalidFile":"טעינת קובץ לא תקין נכשלה","importBackendFailed":"ייבוא מהשרת נכשל.","cannotExportEmptyCanvas":"לא ניתן לייצא קנבאס ריק.","couldNotCopyToClipboard":"לא ניתן היה להעתיק ללוח.","decryptFailed":"פיענוח ההצפנה של המידע נכשל.","uploadedSecurly":"ההעלאה אובטחה באמצעות הצפנה מקצה לקצה, פירוש הדבר שהשרת של Excalidraw וגורמי צד ג׳ לא יכולים לקרוא את התוכן.","loadSceneOverridePrompt":"טעינה של ציור חיצוני תחליף את התוכן הקיים שלך. האם תרצה להמשיך?","collabStopOverridePrompt":"עצירת השיתוף תוביל למחיקת הציור הקודם ששמור מקומית בדפדפן. האם אתה בטוח?\\n\\n(אם תרצה לשמור את הציור המקומי, סגור את הטאב של הדפדפן במקום.)","errorAddingToLibrary":"לא ניתן להוסיף פריט לספרייה","errorRemovingFromLibrary":"לא ניתן להסיר פריט מהספריה","confirmAddLibrary":"זה יוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?","imageDoesNotContainScene":"נראה שהתמונה לא מכילה מידע על הסצינה. האם אפשרת הטמעת מידע הסצינה בעת השמירה?","cannotRestoreFromImage":"לא הצלחנו לשחזר את הסצנה מקובץ התמונה","invalidSceneUrl":"ייבוא מידע סצנה מהקישור שסופק כשל. או שהוא משובש, או שאינו מכיל מידע של Excalidraw בפורמט JSON.","resetLibrary":"פעולה זו תנקה את כל הספריה שלך. אתה בטוח?","removeItemsFromsLibrary":"מחק {{count}} פריט(ים) מהספריה?","invalidEncryptionKey":"מפתח ההצפנה חייב להיות בן 22 תוים. השיתוף החי מנוטרל.","collabOfflineWarning":"אין חיבור זמין לאינטרנט.\\nהשינויים שלך לא ישמרו!"},"errors":{"unsupportedFileType":"סוג הקובץ אינו נתמך.","imageInsertError":"לא ניתן היה להוסיף את התמונה. אנא נסה שוב מאוחר יותר...","fileTooBig":"הקובץ גדול מדי. הגודל המירבי המותר הינו {{maxSize}}.","svgImageInsertError":"לא ניתן היה להוסיף את תמונת ה-SVG. הסימונים בתוך קובץ ה-SVG עשויים להיות שגויים.","failedToFetchImage":"","invalidSVGString":"SVG שגוי.","cannotResolveCollabServer":"לא הצלחתי להתחבר לשרת השיתוף. אנא רענן את הדף ונסה שוב.","importLibraryError":"לא ניתן היה לטעון את הספריה","collabSaveFailed":"לא הצלחתי להתחבר למסד הנתונים האחורי. אם הבעיה ממשיכה, כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","collabSaveFailed_sizeExceeded":"לא הצלחתי לשמור למסד הנתונים האחורי, נראה שהקנבס שלך גדול מדי. כדאי שתשמור את הקובץ מקומית כדי לוודא שלא תאבד את העבודה שלך.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"בחירה","image":"הוספת תמונה","rectangle":"מלבן","diamond":"יהלום","ellipse":"אליפסה","arrow":"חץ","line":"קו","freedraw":"צייר","text":"טקסט","library":"ספריה","lock":"השאר את הכלי הנבחר פעיל גם לאחר סיום הציור","penMode":"מצב עט - מנע נגיעה","link":"הוספה/עדכון קישור של הצורה שנבחרה","eraser":"מחק","frame":"","embeddable":"","laser":"","hand":"יד (כלי הזזה)","extraTools":""},"headings":{"canvasActions":"פעולות קנבאס","selectedShapeActions":"פעולות על הצורות שנבחרו","shapes":"צורות"},"hints":{"canvasPanning":"כדי להזיז את הקנבס, החזק את גלגל העכבר לחוץ או את מקש הרווח לחוץ תוך כדי גרירה, או השתמש בכלי היד","linearElement":"לחץ להתחלת מספר נקודות, גרור לקו יחיד","freeDraw":"לחץ וגרור, שחרר כשסיימת","text":"טיפ: אפשר להוסיף טקסט על ידי לחיצה כפולה בכל מקום עם כלי הבחירה","embeddable":"","text_selected":"לחץ לחיצה כפולה או הקש על אנטר לעריכת הטקסט","text_editing":"כדי לסיים את העריכה לחץ על מקש Escape או על Ctrl (Cmd במחשבי אפל) ומקש Enter","linearElementMulti":"הקלק על הנקודה האחרונה או הקש Escape או Enter לסיום","lockAngle":"ניתן להגביל את הזוויות על ידי החזקה של מקש ה- SHIFT","resize":"ניתן להגביל פרופורציות על ידי לחיצה על SHIFT תוך כדי שינוי גודל,\\nהחזק ALT בשביל לשנות גודל ביחס למרכז","resizeImage":"אתה יכול לשנות את הגודל בחופשיות על ידי החזקת מקש SHIFT,\\nהחזק את מקש ALT כדי לבצע שינוי גודל מהמרכז","rotate":"ניתן להגביל זוויות על ידי לחיצה על SHIFT תוך כדי סיבוב","lineEditor_info":"החזק Ctrl / Cmd ובצע לחיצה כפולה או לחץ Ctrl / Cmd + Enter לעריכת נקודות","lineEditor_pointSelected":"לחץ Delete למחיקת נקודה/ות,\\nCtrl / Cmd + D לשכפול, או גרור להזזה","lineEditor_nothingSelected":"בחר נקודה כדי לערוך (החזק SHIFT לבחירת כמה),\\nאו החזק Alt והקלק להוספת נקודות חדשות","placeImage":"הקלק להנחת התמונה, או הקלק וגרור להגדרת הגודל שלו ידנית","publishLibrary":"פרסם ספריה משלך","bindTextToElement":"הקש Enter כדי להוספת טקסט","deepBoxSelect":"החזק Ctrl / Cmd לבחירה עמוקה ולמניעת גרירה","eraserRevert":"החזק Alt להחזרת רכיבים מסומנים למחיקה","firefox_clipboard_write":"יכולות זה ניתנת להפעלה על ידי שינוי הדגל של \\"dom.events.asyncClipboard.clipboardItem\\" למצב \\"true\\". כדי לשנות את הדגל בדפדפן Firefox, בקר בעמוד ״about:config״.","disableSnapping":""},"canvasError":{"cannotShowPreview":"לא ניתן להראות תצוגה מקדימה","canvasTooBig":"הקנבס עלול להיות גדול מדי.","canvasTooBigTip":"טיפ: נסה להזיז את הרכיבים הרחוקים ביותר מעט קרוב יותר האחד לשני."},"errorSplash":{"headingMain":"","clearCanvasMessage":"אם טעינה מחדש לא עובדת, נסה ","clearCanvasCaveat":" זה יגרום לאובדן העבודה ","trackedToSentry":"","openIssueMessage":"","sceneContent":"תוכן הקנבאס:"},"roomDialog":{"desc_intro":"אתה יכול להזמין אנשים לקנבאס הנוכחי שלך לעבודה משותפת.","desc_privacy":"אל דאגה, השיתוף מוצפן מקצה לקצה, כך שכל מה שתצייר ישאר פרטי. אפילו השרתים שלנו לא יוכלו לראות את מה שאתה ממציא.","button_startSession":"התחל שיתוף","button_stopSession":"הפסק שיתוף","desc_inProgressIntro":"שיתוף חי פעיל כרגע.","desc_shareLink":"שתף את הקישור עם כל מי שאתה מעוניין לעבוד אתו:","desc_exitSession":"עצירת השיתוף תנתק אותך מהחדר, אבל עדיין תוכל להמשיך לעבוד על הקנבאס, מקומית. שים לב שזה לא ישפיע על אנשים אחרים, והם עדיין יוכלו לבצע שיתוף עם הגרסה שלהם.","shareTitle":"הצטרף לשיתוף לעבודה משותפת חיה, בזמן אמת, על גבי Excalidraw"},"errorDialog":{"title":"שגיאה"},"exportDialog":{"disk_title":"שמור לכונן","disk_details":"ייצא מידע של הקנבאס לקובץ שתוכל לייבא אחר כך.","disk_button":"שמירה לקובץ","link_title":"קבל קישור לשיתוף","link_details":"ייצוא כקישור לקריאה בלבד.","link_button":"ייצוא לקישור","excalidrawplus_description":"שמור את הקנבאס לסביבת העבודה שלך ב- +Excalidraw.","excalidrawplus_button":"ייצוא","excalidrawplus_exportError":"לא הצלחתי לייצא ל- +Excalidraw כרגע..."},"helpDialog":{"blog":"קרא את הבלוג שלנו","click":"קליק","deepSelect":"בחירה עמוקה","deepBoxSelect":"בחירה עמוקה בתוך קופסה ומניעת גרירה","curvedArrow":"חץ מעוגל","curvedLine":"קו מעוגל","documentation":"תיעוד","doubleClick":"לחיצה כפולה","drag":"גרור","editor":"עורך","editLineArrowPoints":"","editText":"","github":"מצאת בעיה? דווח","howto":"עקוב אחר המדריכים שלנו","or":"או","preventBinding":"למנוע נעיצת חיצים","tools":"כלים","shortcuts":"קיצורי מקלדת","textFinish":"סיים עריכה (עורך טקסט)","textNewLine":"הוסף שורה חדשה (עורך טקסט)","title":"עזרה","view":"תצוגה","zoomToFit":"זום להתאמת כל האלמנטים למסך","zoomToSelection":"התמקד בבחירה","toggleElementLock":"נעילה/ביטול הנעילה של הרכיבים הנבחרים","movePageUpDown":"זוז עמוד למעלה/למטה","movePageLeftRight":"זוז עמוד שמאלה/ימינה"},"clearCanvasDialog":{"title":"ניקוי הקנבס"},"publishDialog":{"title":"פרסם ספריה","itemName":"שם הפריט","authorName":"שם היוצר","githubUsername":"שם המשתמש שלך ב-GitHub","twitterUsername":"שם המשתמש שלך ב-Twitter","libraryName":"שם הספריה","libraryDesc":"תיאור הספריה","website":"אתר","placeholder":{"authorName":"שמך או שם המשתמש שלך","libraryName":"תנו שם לספריה","libraryDesc":"תיאור של הספריה שלך כדי לסייע למשתמשים להבין את השימוש בה","githubHandle":"כינוי GitHub (לא חובה), כדי שתוכל לערוך את הספרית לאחר שנשלחה לבדיקה","twitterHandle":"שם משתמש טוויטר (לא חובה), כדי שנדע למי לתת קרדיט כשאנחנו מפרסמים בטוויטר","website":"קישור לאתר הפרטי שלך או לכל מקום אחר (אופציונאלי)"},"errors":{"required":"נדרש","website":"הזינו כתובת URL תקינה"},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"לכל פריט בסיפריה חייב להיות שם כדי שאפשר יהיה לסנן. הפריטי סיפריה הבאים יהיו כלולים:","atleastOneLibItem":"אנא בחר לפחות פריט אחד מספריה כדי להתחיל","republishWarning":"הערה: חלק מהפריטים שבחרת מסומנים ככאלו שכבר פורסמו/נשלחו. אתה צריך לשלוח פריטים מחדש כאשר אתה מעדכן ספריה או הגשה קיימים."},"publishSuccessDialog":{"title":"הספריה הוגשה","content":"תודה {{authorName}}. הספריה שלך נשלחה לבחינה. תוכל לעקוב אחרי סטטוס הפרסום"},"confirmDialog":{"resetLibrary":"איפוס ספריה","removeItemsFromLib":"הסר את הפריטים הנבחרים מהספריה"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"הציורים שלך מוצפנים מקצה לקצה כך שהשרתים של Excalidraw לא יראו אותם לעולם.","link":"פוסט בבלוג על הצפנה מקצה לקצב ב-Excalidraw"},"stats":{"angle":"זווית","element":"רכיב","elements":"רכיבים","height":"גובה","scene":"תצוגה","selected":"נבחר","storage":"אחסון","title":"סטטיסטיקות לחנונים","total":"סה״כ","version":"גרסה","versionCopy":"לחץ להעתקה","versionNotAvailable":"הגרסה אינה זמינה","width":"רוחב"},"toast":{"addedToLibrary":"נוסף לספריה","copyStyles":"סגנונות הועתקו.","copyToClipboard":"הועתק ללוח.","copyToClipboardAsPng":"{{exportSelection}} הועתקה ללוח כ-PNG\\n({{exportColorScheme}})","fileSaved":"קובץ נשמר.","fileSavedToFilename":"נשמר לקובץ {filename}","canvas":"קנבאס","selection":"בחירה","pasteAsSingleElement":"השתמש ב- {{shortcut}} כדי להדביק כפריט יחיד,\\nאו הדבק לתוך עורך טקסט קיים","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"שקוף","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"כל המידע שלח נשמר מקומית בדפדפן.","center_heading_plus":"אתה רוצה ללכת אל Excalidraw+ במקום?","menuHint":"ייצוא, העדפות, שפות, ..."},"defaults":{"menuHint":"ייצוא, העדפות, ועוד...","center_heading":"איורים. נעשים. פשוטים.","toolbarHint":"בחר כלי & והתחל לצייר!","helpHint":"קיצורים & עזרה"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js b/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js new file mode 100644 index 0000000..feded68 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/hi-IN-json-4947c9dace32cc3c6eef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[9828],{4646:function(e){e.exports=JSON.parse('{"labels":{"paste":"चिपकाएँ","pasteAsPlaintext":"सादे पाठ के रूप में चिपकाएं","pasteCharts":"चार्ट चिपकाएँ","selectAll":"सभी चुनें","multiSelect":"आकार को चयन में जोड़ें","moveCanvas":"कैनवास को स्थानांतरित करें","cut":"काटें","copy":"प्रतिलिपि","copyAsPng":"क्लिपबोर्ड पर कॉपी करें ,पीएनजी के रूप में","copyAsSvg":"क्लिपबोर्ड पर कॉपी करें,एसवीजी के रूप में","copyText":"लेखन के रूप में पटल पर कॉपी करें","bringForward":"सामने लाएं","sendToBack":"पीछे भेजें","bringToFront":"सामने लाएँ","sendBackward":"पीचे भीजे","delete":"मिटाए","copyStyles":"कॉपी स्टाइल","pasteStyles":"स्टाइल पेस्ट करें","stroke":"रेखा","background":"पृष्ठभूमि","fill":"भरें","strokeWidth":"रेखा की चौड़ाई","strokeStyle":"स्ट्रोक का आकार","strokeStyle_solid":"ठोस","strokeStyle_dashed":"डैश","strokeStyle_dotted":"बिंदीदार","sloppiness":"बेढ़ंगापन","opacity":"अपारदर्शिता","textAlign":"टेक्स्ट संरेखन","edges":"किनारा","sharp":"नुकीला","round":"गोल","arrowheads":"तीर शीर्ष","arrowhead_none":"कोई भी नहीं","arrowhead_arrow":"तीर","arrowhead_bar":"बार","arrowhead_dot":"बिंदु","arrowhead_triangle":"त्रिकोण","fontSize":"फ़ॉन्ट का आकार","fontFamily":"फ़ॉन्ट का परिवार","addWatermark":"ऐड \\"मेड विथ एक्सकैलिडराव\\"","handDrawn":"हाथ से बनाया हुआ","normal":"साधारण","code":"कोड","small":"छोटा","medium":"मध्यम","large":"बड़ा","veryLarge":"बहुत बड़ा","solid":"दृढ़","hachure":"हैशूर","zigzag":"तेढ़ी मेढ़ी","crossHatch":"क्रॉस हैच","thin":"पतला","bold":"मोटा","left":"बाएं","center":"मध्य","right":"दाएँ","extraBold":"बहुत मोटा","architect":"वास्तुकार","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फ़ाइल का नाम","colorPicker":"रंग चयन","canvasColors":"कॅनवास पर प्रयोगित","canvasBackground":"कैनवास बैकग्राउंड","drawingCanvas":"कैनवास बना रहे हैं","layers":"परतें","actions":"कार्रवाई","language":"भाषा","liveCollaboration":"जीवंत सहयोग...","duplicateSelection":"डुप्लिकेट","untitled":"अशीर्षित","name":"नाम","yourName":"आपका नाम","madeWithExcalidraw":"मेड विथ एक्सकैलिडराव","group":"समूह चयन","ungroup":"समूह चयन असमूहीकृत करें","collaborators":"सहयोगी","showGrid":"ग्रिड दिखाएं","addToLibrary":"लाइब्रेरी से जोड़ें","removeFromLibrary":"लाइब्रेरी से निकालें","libraryLoadingMessage":"लाइब्रेरी खुल रही है","libraries":"लाइब्रेरी ब्राउज़ करें","loadingScene":"दृश्य खुल रहा है","align":"संरेखित करें","alignTop":"ऊपर संरेखित करें","alignBottom":"नीचे संरेखित करें","alignLeft":"बायें संरेखित करें","alignRight":"दायें संरेखित करें","centerVertically":"लंबवत केन्द्रित","centerHorizontally":"क्षैतिज केन्द्रित","distributeHorizontally":"क्षैतिज रूप से वितरित करें","distributeVertically":"खड़ी रूप से वितरित करें","flipHorizontal":"दायें बायें पलटे","flipVertical":"ऊपर नीचे पलटे","viewMode":"अलग अलग देखें","share":"शेयर करें","showStroke":"","showBackground":"पृष्ठभूमि रंग वरक़ दिखाये","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"आकार घटाइऐ","increaseFontSize":"फ़ॉन्ट आकार बढ़ाएँ","unbindText":"","bindText":"लेखन को कोश से जोड़े","createContainerFromText":"मूलपाठ कंटेनर में मोड के दिखाए","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेखा संपादित करे","exit":"रेखा संपादक के बाहर"},"elementLock":{"lock":"ताले में रखें","unlock":"ताले से बाहर","lockAll":"सब ताले के अंदर रखे","unlockAll":"सब ताले के बाहर निकाले"},"statusPublished":"प्रकाशित","sidebarLock":"साइडबार खुला रखे.","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलक से रंग चुने"},"library":{"noItems":"अभी तक कोई आइटम जोडा नहीं गया.","hint_emptyLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने, अथवा जन कोष से एक संग्रह नीचे स्थापित करें.","hint_emptyPrivateLibrary":"यहाँ जोड़ने के लिए पटल से एक वस्तु चुने."},"buttons":{"clearReset":"कैनवास रीसेट करें","exportJSON":"","exportImage":"प्रतिमा निर्यात करे...","export":"यंहा सुरक्षित करे...","copyToClipboard":"क्लिपबोर्ड पर प्रतिलिपि बनाएँ","save":"","saveAs":"सेव करे इस तरह","load":"खोलें","getShareableLink":"साझा करने योग्य लिंक प्राप्त करें","close":"बंद करें","selectLanguage":"भाषा चुनें","scrollBackToContent":"सामग्री पर वापस स्क्रॉल करें","zoomIn":"बड़ा करें","zoomOut":"छोटा करें","resetZoom":"ज़ूम रीसेट करें","menu":"मेन्यू","done":"समाप्त","edit":"संशोधन करें","undo":"पूर्ववत् करें","redo":"फिर से करें","resetLibrary":"","createNewRoom":"एक नया कमरा बनाएं","fullScreen":"पूरी स्क्रीन","darkMode":"डार्क मोड","lightMode":"लाइट मोड","zenMode":"ज़ेन मोड","objectsSnapMode":"वस्तुओं से पकड़े","exitZenMode":"जेन मोड से बाहर निकलें","cancel":"","clear":"साफ़ करे","remove":"हटाएं","embed":"","publishLibrary":"प्रकाशित करें","submit":"प्रस्तुत करे","confirm":"पुष्टि करें","embeddableInteractionButton":""},"alerts":{"clearReset":"इससे पूरा कैनवास साफ हो जाएगा। क्या आपको यकीन है?","couldNotCreateShareableLink":"साझा करने योग्य लिंक नहीं बनाया जा सका।","couldNotCreateShareableLinkTooBig":"लिंक शेयर नहीं कर सकता: दृश्य बहुत बड़ा","couldNotLoadInvalidFile":"अमान्य फ़ाइल लोड नहीं की जा सकी","importBackendFailed":"बैकएंड से आयात करना विफल रहा।","cannotExportEmptyCanvas":"खाली कैनवास निर्यात नहीं कर सकता।","couldNotCopyToClipboard":"क्लिपबोर्ड पर कॉपी नहीं किया जा सका","decryptFailed":"डेटा को डिक्रिप्ट नहीं किया जा सका।","uploadedSecurly":"अपलोड को एंड-टू-एंड एन्क्रिप्शन के साथ सुरक्षित किया गया है, जिसका मतलब है कि एक्सक्लूसिव सर्वर और थर्ड पार्टी कंटेंट नहीं पढ़ सकते हैं।","loadSceneOverridePrompt":"लोड हो रहा है बाहरी ड्राइंग आपके मौजूदा सामग्री को बदल देगा। क्या आप जारी रखना चाहते हैं?","collabStopOverridePrompt":"चालू सत्र समाप्ति से आपका संग्रहित पूर्व स्थानीय अधिलेखन नष्ट होकर पुनः अधिलेखित होगा, क्या आपको यक़ीन हैं? ( यदी आपको पूर्व स्थापित अधिलेखन सुरक्षित चाहिये तो बस ब्राउज़र टैब बंद करे)","errorAddingToLibrary":"संग्रह में जोडा न जा सका","errorRemovingFromLibrary":"संग्रह से हटाया नहीं जा सका","confirmAddLibrary":"लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या","imageDoesNotContainScene":"ऐसा लगता है कि इस छवि में कोई दृश्य डेटा नहीं है। क्या आपने निर्यात के दौरान दृश्य एम्बेडिंग अनुमतित की है?","cannotRestoreFromImage":"छवि फ़ाइल बहाल दृश्य नहीं है","invalidSceneUrl":"दिये गये युआरेल से दृश्य आयात नहीं किया जा सका. यह या तो अनुचित है, या इसमें उचित Excalidraw JSON डेटा नहीं है।","resetLibrary":"यह पूरा संग्रह रिक्त करेगा. क्या आपको यक़ीन हैं?","removeItemsFromsLibrary":"{{count}} वस्तु(यें) संग्रह से हटायें?","invalidEncryptionKey":"कूटलेखन कुंजी 22 अक्षरों की होनी चाहिये, इसलिये जीवंत सहयोग अक्षम हैं","collabOfflineWarning":"कोई इंटरनेट कनेक्शन उपलब्ध नहीं है।\\nआपके बदलाव सहेजे नहीं जाएंगे!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार","imageInsertError":"छवि सम्मिलित नहीं की जा सकी. पुनः प्रयत्न करे...","fileTooBig":"फ़ाइल ज़रूरत से ज़्यादा बड़ी हैं. अधिकतम अनुमित परिमाण {{maxSize}} हैं","svgImageInsertError":"एसवीजी छवि सम्मिलित नहीं कर सके, एसवीजी रचना अनुचित हैं","failedToFetchImage":"","invalidSVGString":"अनुचित SVG","cannotResolveCollabServer":"कॉलेब सर्वर से कनेक्शन नहीं हो पा रहा. कृपया पृष्ठ को पुनः लाने का प्रयास करे.","importLibraryError":"संग्रह प्रतिष्ठापित नहीं किया जा सका","collabSaveFailed":"किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।","brave_measure_text_error":{"line1":"लगता है कि आप Brave ब्राउज़र का उपयोग कर रहे और साथ में आक्रामक उँगलियो के छाप का चयन किया हुवा है","line2":"यह आपके चित्रों के पाठ तत्वोंको खंडित कर सकता हैं","line3":"हमें आपसे ठोस आग्रह है की आप सेट्टिंग में इस विकल्प का चयन ना करे. इस अनुक्रम का पालन करके इसका पता लगा सकते हैं","line4":"यदि इस सेटिंग्स को अक्षम करने पर भी पृष्ठ ठीक नहीं दिखता हो तो, हमारे GitHub पर एक मुद्दा प्रस्तुत करे, या हमें डिस्कोर्ड पर लिखित सम्पर्क करें"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"चयन","image":"छवि सम्मिलित करें","rectangle":"आयात","diamond":"तिर्यग्वर्ग","ellipse":"दीर्घवृत्त","arrow":"तीर","line":"रेखा","freedraw":"चित्रांतित करे","text":"पाठ","library":"लाइब्रेरी","lock":"ड्राइंग के बाद चयनित टूल को सक्रिय रखें","penMode":"पेन का मोड - स्पर्श टाले","link":"","eraser":"रबड़","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हाथ ( खिसकाने का औज़ार)","extraTools":""},"headings":{"canvasActions":"कैनवास क्रिया","selectedShapeActions":"चयनित आकृति क्रियाएं","shapes":"आकृतियाँ"},"hints":{"canvasPanning":"कैनवास को सरकाने के लिए, ड्रैग करते समय माउस व्हील को पकड़े रखे या स्पेसबार को दबाए रखे, अथवा हाथ वाले औज़ार का उपयोग करें","linearElement":"कई बिंदुओं को शुरू करने के लिए क्लिक करें, सिंगल लाइन के लिए खींचें","freeDraw":"क्लिक करें और खींचें। समाप्त करने के लिए, छोड़ो","text":"आप चयन टूल से कहीं भी डबल-क्लिक करके टेक्स्ट जोड़ सकते हैं","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"अंतिम बिंदु पर क्लिक करें या समाप्त होने के लिए एस्केप या एंटर दबाएं","lockAngle":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को मोड़ सकते हैं","resize":"आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,\\nकेंद्र से आकार बदलने के लिए ALT दबाए रखें","resizeImage":"","rotate":"आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं","lineEditor_info":"बिंदुओं को सम्पादित करने के लिए CtrlOrCmd को दबायें रखते हुये डबल क्लिक करे, अथवा CtrlOrCmd + Enter साथ दबाये","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"मिटाने के लिए चुने हुए चीजों को ना चुनने के लिए Alt साथ में दबाए","firefox_clipboard_write":"\\"dom.events.asyncClipboard.clipboardItem\\" फ़्लैग को \\"true\\" पर सेट करके इस सुविधा को संभवतः सक्षम किया जा सकता है। Firefox में ब्राउज़र फ़्लैग बदलने के लिए, \\"about:config\\" पृष्ठ पर जाएँ।","disableSnapping":"स्नैपिंग को निष्क्रिय करने के लिए CtrlOrCmd दबाए रखें"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन नहीं दिखा सकते हैं","canvasTooBig":"कैनवास बहुत बड़ा","canvasTooBigTip":"कैनवास बहुत बड़ा टिप"},"errorSplash":{"headingMain":"एक त्रुटि का सामना करना पड़ा। प्रयत्न ","clearCanvasMessage":"यदि पुनः लोड करना काम नहीं करता है, तो प्रयास करें ","clearCanvasCaveat":" इससे काम का नुकसान होगा ","trackedToSentry":"पहचानकर्ता के साथ त्रुटि {{eventId}} हमारे सिस्टम पर नज़र रखी गई थी।","openIssueMessage":"हम बहुत सतर्क थे कि त्रुटि पर आपकी दृश्य जानकारी शामिल न करें। यदि आपका दृश्य निजी नहीं है, तो कृपया हमारे बारे में विचार करें कृपया GitHub मुद्दे को कॉपी और पेस्ट करके नीचे दी गई जानकारी शामिल करें।","sceneContent":"दृश्य सामग्री:"},"roomDialog":{"desc_intro":"आप अपने वर्तमान दृश्य के लोगों को अपने साथ सहयोग करने के लिए आमंत्रित कर सकते हैं।","desc_privacy":"चिंता न करें, सत्र अंत-से-अंत एन्क्रिप्शन का उपयोग करता है, इसलिए आप जो भी ड्रा करेंगे वह निजी रहेगा। यहां तक कि हमारा सर्वर भी नहीं देख पाएगा कि आप क्या कर रहे हैं।","button_startSession":"सत्र प्रारंभ करें","button_stopSession":"सत्र रुकें","desc_inProgressIntro":"लाइव सहयोग सत्र अब जारी है।","desc_shareLink":"इस लिंक को आप जिस किसी के साथ भी सहयोग करना चाहते हैं, उसके साथ साझा करें","desc_exitSession":"सत्र रोकना आपको रूम से बाहर कर देगा, लेकिन आप स्थानीय स्तर पर दृश्य के साथ काम करना जारी रख पाएंगे। ध्यान दें कि यह अन्य लोगों को प्रभावित नहीं करेगा, और वे अभी भी अपने संस्करण पर सहयोग करने में सक्षम होंगे।","shareTitle":""},"errorDialog":{"title":"गलती"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"हमारा ब्लॉग पढे","click":"क्लिक करें","deepSelect":"","deepBoxSelect":"","curvedArrow":"वक्र तीर","curvedLine":"वक्र रेखा","documentation":"","doubleClick":"","drag":"खींचें","editor":"संपादक","editLineArrowPoints":"रेखा/तीर बिंदु सम्पादित करे","editText":"पाठ्य सम्पादित करे/ लेबल जोड़े","github":"मुद्दा मिला? प्रस्तुत करें","howto":"हमारे गाइड का पालन करें","or":"या","preventBinding":"तीर बंधन रोकें","tools":"औज़ार","shortcuts":"कीबोर्ड के शॉर्टकट्स","textFinish":"","textNewLine":"","title":"मदद","view":"दृश्य","zoomToFit":"सभी तत्वों को फिट करने के लिए ज़ूम करें","zoomToSelection":"चयन तक ज़ूम करे","toggleElementLock":"ताले के अंदर/बाहर चुनाव","movePageUpDown":"पृष्ठ ऊपर/नीचे करे","movePageLeftRight":"पृष्ठ बायी/दायी तरफ करे"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":"मान्य URL प्रविष्ट करें"},"noteDescription":"संग्रह सम्मिलित करने हेतु प्रस्तुत करें सार्वजनिक संग्रहालयअन्य वक्तियों को उनके चित्रकारी में उपयोग के लिये","noteGuidelines":"संग्रह को पहले स्वीकृति आवश्यक कृपया यह पढ़ें दिशा-निर्देश","noteLicense":"जमा करके, आप सहमत हैं कि संग्रहण को MIT लाइसेंस के तहत प्रकाशित किया जाएगा, जिसका संक्षिप्त अर्थ है कि कोई भी बिना किसी प्रतिबंध के उनका उपयोग कर सकता है।","noteItems":"","atleastOneLibItem":"","republishWarning":"टिप्पणी: कुछ चुने हुवे आइटम पहले ही प्रकाशित/प्रस्तुत किए जा चुके हैं। किसी प्रकाशित संग्रह को अद्यतन करते समय या पहले से प्रस्तुत आइटम को पुन्हा प्रस्तुत करते समय, आप बस उसे केवल अद्यतन करें ।"},"publishSuccessDialog":{"title":"","content":"{{authorName}} धन्यवाद. आपका संग्रहण समीक्षा के लिए दर्ज हो चुका है. समीक्षा स्थिति यहाँजान सकते हैं."},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"आपके चित्र अंत-से-अंत एन्क्रिप्टेड हैं, इसलिए एक्सक्लूसिव्रॉव के सर्वर उन्हें कभी नहीं देखेंगे।","link":""},"stats":{"angle":"कोण","element":"एलिमेंट","elements":"एलिमेंट","height":"ऊंचाई","scene":"दृश्य","selected":"चयनित","storage":"संग्रह","title":"बेवकूफ के लिए आँकड़े","total":"कुल","version":"संस्करण","versionCopy":"काॅपी करने के लिए क्लिक करें","versionNotAvailable":"संस्करण उपलब्ध नहीं है","width":"चौड़ाई"},"toast":{"addedToLibrary":"","copyStyles":"काॅपी कीए स्टाइल","copyToClipboard":"क्लिपबोर्ड में कॉपी कीए","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"एक अवयव के रूप में चिपकाने के लिए {{shortcut}} का उपयोग करें,\\nया किसी मौजूदा पाठ संपादक में चिपकायें","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"काला","white":"सफ़ेद","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जामुनी","gray":"गहरा","blue":"नीला","cyan":"आसमानी","teal":"हरा-नीला","green":"हरा","yellow":"पीला","orange":"नारंगी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"आपका सर्व डेटा ब्राउज़र के भीतर स्थानिक जगह पे सुरक्षित किया गया.","center_heading_plus":"बजाय आपको Excalidraw+ पर जाना है?","menuHint":"निर्यात, पसंद, भाषायें, ..."},"defaults":{"menuHint":"निर्यात, पसंद, और भी...","center_heading":"चित्रांकन। बनाया गया। सरल।","toolbarHint":"एक औजार चुने और चित्रकारी प्रारंभ करे!","helpHint":"शॉर्ट्कट और सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"अधिकांश उपयोगित रंग","colors":"रंग","shades":"छाया","hexCode":"हेक्स कोड","noShades":"इस रंग की कोई छाया उपलब्ध नहीं हैं"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूप में निर्यात करे","button":"छवि स्वरूप निर्यात करे","description":"दृष्य डेटा छवि स्वरूप में निर्यात करे, उस स्वरूप से आप उसे पुनः आयात कर सकते हो"},"saveToDisk":{"title":"डिस्क में सम्हाले","button":"डिस्क में सम्हाले","description":"दृष्य डेटा बाहरी फ़ाइल में निर्यात करे, जहाँसे आप उसे पुनः आयात कर सकते हो"},"excalidrawPlus":{"title":"एक्षकालीड्रॉ+","button":"एक्षकालीड्रॉ+ में निर्यात करे","description":"दृष्य को आपके एक्षकालीड्रॉ+ के कर्यस्थल में सम्हाले"}},"modal":{"loadFromFile":{"title":"फ़ाइल से लोड करें:","button":"फ़ाइल से लोड करें:","description":"फ़ाइल से लोड करने पर यह आपके कार्य की जगह लेलेगा

आपकी ड्रॉइंग निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हैं"},"shareableLink":{"title":"लिंक से लोड करें:","button":"इस जगह प्रतिस्थापित करे","description":"बाहर का चित्र लोड करने पर यह आपके कार्य की जगह लेलेगा

आप आपकी ड्रॉइंग पहले निम्न दर्शित विकल्पो में से एक चुनके और उपयोग करके सम्हाल सकते हों."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js b/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js new file mode 100644 index 0000000..a89bc4a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/hu-HU-json-0419027d32efac73d518.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7368],{6373:function(e){e.exports=JSON.parse('{"labels":{"paste":"Beillesztés","pasteAsPlaintext":"","pasteCharts":"Grafikon beillesztése","selectAll":"Összes kijelölése","multiSelect":"Elem hozzáadása a kijelöléshez","moveCanvas":"Vászon mozgatása","cut":"Kivágás","copy":"Másolás","copyAsPng":"Vágólapra másolás mint PNG","copyAsSvg":"Vágólapra másolás mint SVG","copyText":"","bringForward":"Előrébb hozás","sendToBack":"Hátraküldés","bringToFront":"Előrehozás","sendBackward":"Hátrébb küldés","delete":"Törlés","copyStyles":"Stílus másolása","pasteStyles":"Stílus beillesztése","stroke":"Körvonal","background":"Háttér","fill":"Kitöltés","strokeWidth":"Körvonal vastagsága","strokeStyle":"Körvonal stílusa","strokeStyle_solid":"Kitöltött","strokeStyle_dashed":"Szaggatott","strokeStyle_dotted":"Pontozott","sloppiness":"Stílus","opacity":"Áttetszőség","textAlign":"Szöveg igazítása","edges":"Szélek","sharp":"Éles","round":"Kerek","arrowheads":"Nyílhegyek","arrowhead_none":"Nincs","arrowhead_arrow":"Nyíl","arrowhead_bar":"Oszlop","arrowhead_dot":"Pont","arrowhead_triangle":"Háromszög","fontSize":"Betűméret","fontFamily":"Betűkészlet család","addWatermark":"Add hozzá, hogy \\"Excalidraw-val készült\\"","handDrawn":"Kézzel rajzolt","normal":"Normál","code":"Kód","small":"Kicsi","medium":"Közepes","large":"Nagy","veryLarge":"Nagyon nagy","solid":"Kitöltött","hachure":"Vonalkázott","zigzag":"","crossHatch":"Keresztcsíkozott","thin":"Vékony","bold":"Félkövér","left":"Bal","center":"Közép","right":"Jobb","extraBold":"Extra Félkövér","architect":"Tervezői","artist":"Művészi","cartoonist":"Karikatúrás","fileTitle":"Fájlnév","colorPicker":"Színválasztó","canvasColors":"Rajzvászonon használt","canvasBackground":"Vászon háttérszíne","drawingCanvas":"Rajzvászon","layers":"Rétegek","actions":"Műveletek","language":"Nyelv","liveCollaboration":"","duplicateSelection":"Duplikálás","untitled":"Névtelen","name":"Név","yourName":"Neved","madeWithExcalidraw":"Excalidraw-val készült","group":"Csoportosítás","ungroup":"Csoportbontás","collaborators":"Közreműködők","showGrid":"Rács megjelenítése","addToLibrary":"Hozzáadás a könyvtárhoz","removeFromLibrary":"Eltávólítás a könyvtárból","libraryLoadingMessage":"Könyvtár betöltése…","libraries":"Könyvtárak böngészése","loadingScene":"Jelenet betöltése…","align":"Igazítás","alignTop":"Felülre igazítás","alignBottom":"Alulra igazítás","alignLeft":"Balra igazítás","alignRight":"Jobbra igazítás","centerVertically":"Függőlegesen középre igazított","centerHorizontally":"Vízszintesen középre igazított","distributeHorizontally":"Vízszintes elosztás","distributeVertically":"Függőleges elosztás","flipHorizontal":"Vízszintes tükrözés","flipVertical":"Függőleges tükrözés","viewMode":"Nézet","share":"Megosztás","showStroke":"Körvonal színválasztó megjelenítése","showBackground":"Háttérszín-választó megjelenítése","toggleTheme":"Téma váltása","personalLib":"Személyes könyvtár","excalidrawLib":"Excalidraw könyvtár","decreaseFontSize":"Betűméret csökkentése","increaseFontSize":"Betűméret növelése","unbindText":"Szövegkötés feloldása","bindText":"","createContainerFromText":"","link":{"edit":"Hivatkozás szerkesztése","editEmbed":"","create":"Hivatkozás létrehozása","createEmbed":"","label":"Hivatkozás","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Vászon törlése","exportJSON":"Exportálás fájlba","exportImage":"","export":"","copyToClipboard":"Vágólapra másolás","save":"Mentés az aktuális fájlba","saveAs":"Mentés másként","load":"","getShareableLink":"Megosztható link létrehozása","close":"Bezárás","selectLanguage":"Nyelv kiválasztása","scrollBackToContent":"Visszagörgetés a tartalomhoz","zoomIn":"Nagyítás","zoomOut":"Kicsinyítés","resetZoom":"Nagyítás alaphelyzetbe","menu":"Menü","done":"Kész","edit":"Szerkesztés","undo":"Vissza","redo":"Újra","resetLibrary":"Könyvtár alaphelyzetbe állítása","createNewRoom":"Új szoba létrehozása","fullScreen":"Teljes képernyő","darkMode":"Sötét mód","lightMode":"Világos mód","zenMode":"Letisztult mód","objectsSnapMode":"","exitZenMode":"Kilépés a letisztult módból","cancel":"Mégsem","clear":"Kiűrítés","remove":"Eltávolítás","embed":"","publishLibrary":"Közzététel","submit":"Elküldés","confirm":"Megerősítés","embeddableInteractionButton":""},"alerts":{"clearReset":"Ez a művelet törli a vászont. Biztos benne?","couldNotCreateShareableLink":"Nem sikerült megosztható linket létrehozni.","couldNotCreateShareableLinkTooBig":"Nem sikerült megosztható linket látrehozni: túl nagy a jelenet","couldNotLoadInvalidFile":"Nem sikerült betölteni a helytelen fájlt","importBackendFailed":"Nem sikerült betölteni a szerverről.","cannotExportEmptyCanvas":"Üres vászont nem lehet exportálni.","couldNotCopyToClipboard":"","decryptFailed":"Nem sikerült visszafejteni a titkosított adatot.","uploadedSecurly":"A feltöltést végpontok közötti titkosítással biztosítottuk, ami azt jelenti, hogy egy harmadik fél nem tudja megnézni a tartalmát, beleértve az Excalidraw szervereit is.","loadSceneOverridePrompt":"A betöltött külső rajz felül fogja írnia meglévőt. Szeretnéd folytatni?","collabStopOverridePrompt":"A munkamenet leállítása felül fogja írni az előzőleg helyben tárolt rajzot. Biztosan ezt akarod?\\n(Ha meg akarod tartani a helyben tárolt rajzot, egyszerűen csak zárd be a böngésző fület)","errorAddingToLibrary":"A tétel nem addható hozzá a könyvtárhoz","errorRemovingFromLibrary":"A tétel nem távolítható el a könyvtárból","confirmAddLibrary":"Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?","imageDoesNotContainScene":"Úgy tűnik, hogy ez a kép nem tartalmaz jelenetadatokat. Engedélyezted a jelenetbeágyazást az exportálás során?","cannotRestoreFromImage":"A jelenet visszaállítása nem sikerült ebből a kép fájlból","invalidSceneUrl":"Nem sikerült importálni a jelenetet a megadott URL-ről. Rossz formátumú, vagy nem tartalmaz érvényes Excalidraw JSON-adatokat.","resetLibrary":"Ezzel törlöd a könyvtárát. biztos vagy ebben?","removeItemsFromsLibrary":"{{count}} elemet törölsz a könyvtárból?","invalidEncryptionKey":"A titkosítási kulcsnak 22 karakterből kell állnia. Az élő együttműködés le van tiltva.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nem támogatott fájltípus.","imageInsertError":"Nem sikerült beszúrni a képet. Próbáld újra később...","fileTooBig":"A fájl túl nagy. A megengedett maximális méret {{maxSize}}.","svgImageInsertError":"Nem sikerült beszúrni az SVG-képet. Az SVG szintaktika érvénytelennek tűnik.","failedToFetchImage":"","invalidSVGString":"Érvénytelen SVG.","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Kijelölés","image":"Kép beszúrása","rectangle":"Téglalap","diamond":"Rombusz","ellipse":"Ellipszis","arrow":"Nyíl","line":"Vonal","freedraw":"Rajzolás","text":"Szöveg","library":"Könyvtár","lock":"Rajzolás után az aktív eszközt tartsa kijelölve","penMode":"","link":"Hivatkozás hozzáadása/frissítése a kiválasztott alakzathoz","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Vászon műveletek","selectedShapeActions":"Kijelölt forma műveletei","shapes":"Alakzatok"},"hints":{"canvasPanning":"","linearElement":"Kattintással görbe, az eger húzásával pedig egyenes nyilat rajzolhatsz","freeDraw":"Kattints és húzd, majd engedd el, amikor végeztél","text":"Tipp: A kijelölés eszközzel a dupla kattintás új szöveget hoz létre","embeddable":"","text_selected":"Kattints duplán, vagy nyomj entert a szöveg szerkesztéséhez","text_editing":"Nyomjd meg az Escape vagy a Ctrl/Cmd+ENTER billentyűkombinációt a szerkesztés befejezéséhez","linearElementMulti":"Kattints a következő ív pozíciójára, vagy fejezd be a nyilat az Escape vagy Enter megnyomásával","lockAngle":"A SHIFT billentyű lenyomva tartásával korlátozhatja forgatás szögét","resize":"A SHIFT billentyű lenyomva tartásával az átméretezés megtartja az arányokat,\\naz ALT lenyomva tartásával pedig a középpont egy helyben marad","resizeImage":"A SHIFT billentyű lenyomva tartásával szabadon átméretezheted,\\ntartsd lenyomva az ALT billentyűt a középről való átméretezéshez","rotate":"A SHIFT billentyű lenyomva tartásával korlátozhatja a szögek illesztését","lineEditor_info":"","lineEditor_pointSelected":"Nyomd meg a Törlés gombot a pont(ok) eltávolításához,\\nA Ctrl/Cmd+D a többszörözéshez, vagy húzással mozgathatja","lineEditor_nothingSelected":"Válaszd ki a szerkeszteni kívánt pontot (több kijelöléséhez tartsd lenyomva a SHIFT billentyűt),\\nvagy Alt, és kattintson az új pontok hozzáadásához","placeImage":"Kattints a kép elhelyezéséhez, vagy kattints és méretezd manuálisan","publishLibrary":"Tedd közzé saját könyvtáradat","bindTextToElement":"Nyomd meg az Entert szöveg hozzáadáshoz","deepBoxSelect":"Tartsd lenyomva a Ctrl/Cmd billentyűt a mély kijelöléshez és a húzás megakadályozásához","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Előnézet nem jeleníthető meg","canvasTooBig":"A vászon talán túl nagy.","canvasTooBigTip":"Tipp: próbáld meg a legtávolabbi elemeket közelebb hozni egy máshoz."},"errorSplash":{"headingMain":"Hiba történt. Próbáld ","clearCanvasMessage":"Ha az újratöltés nem működik, próbáld ","clearCanvasCaveat":" Ezzel az eddigi munka elveszik ","trackedToSentry":"A hibakód azonosítóval {{eventId}} nyomon van követve a rendszerünkben.","openIssueMessage":"Vigyáztunk arra, hogy a jelenthez tartozó információ ne jelenjen meg a hibaüzenetben. Ha a jeleneted nem bizalmas, kérjük add hozzá a Kérjük, másolja be az alábbi információkat a GitHub problémába.","sceneContent":"Jelenet tartalma:"},"roomDialog":{"desc_intro":"Meghívhat embereket a jelenlegi jelenetbe, hogy együttműködjenek önnel.","desc_privacy":"Ne aggódj, a munkamenet végpontok közötti titkosítást használ, tehát bármit rajzolsz, privát marad. Még a szerverünkről se lehet belenézni.","button_startSession":"Munkamenet indítása","button_stopSession":"Munkamenet leállítása","desc_inProgressIntro":"Az élő együttműködési munkamenet folyamatban van.","desc_shareLink":"Ossza meg ezt a linket bárkivel, akivel együtt szeretne működni:","desc_exitSession":"Az munkamenet leállítása kilépteti önt a szobából, de folytathatja a munkát a saját gépén. Vegye figyelembe, hogy ez nem érinti más emberek munkáját és ők továbbra is együttműködhetnek a saját változatukon.","shareTitle":"Csatlakozás egy élő együttműködési munkamenethez az Excalidraw-ban"},"errorDialog":{"title":"Hiba"},"exportDialog":{"disk_title":"Mentés lemezre","disk_details":"Exportálja a jelenetadatokat egy fájlba, amelyből később importálhatja.","disk_button":"Mentés fájlba","link_title":"Megosztható hivatkozás","link_details":"Exportálás csak olvasható hivatkozásként.","link_button":"Exportálás hivatkozásba","excalidrawplus_description":"Mentse el a jelenetet az Excalidraw+ munkaterületére.","excalidrawplus_button":"Exportálás","excalidrawplus_exportError":"Jelenleg nem lehet exportálni az Excalidraw+-ba..."},"helpDialog":{"blog":"Olvasd a blogunkat","click":"kattintás","deepSelect":"Mély kijelölés","deepBoxSelect":"Mély kijelölés a dobozon belül, és a húzás megakadályozása","curvedArrow":"Ívelt nyíl","curvedLine":"Ívelt vonal","documentation":"Dokumentáció","doubleClick":"dupla kattintás","drag":"vonszolás","editor":"Szerkesztő","editLineArrowPoints":"","editText":"","github":"Hibát találtál? Küld be","howto":"Kövesd az útmutatóinkat","or":"vagy","preventBinding":"A nyíl ne ragadjon","tools":"","shortcuts":"Gyorsbillentyűk","textFinish":"Szerkesztés befejezése (szöveg)","textNewLine":"Új sor hozzáadása (szöveg)","title":"Segítség","view":"Nézet","zoomToFit":"Az összes elem látótérbe hozása","zoomToSelection":"Kijelölésre nagyítás","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Rajzvászon alaphelyzetbe"},"publishDialog":{"title":"Könyvtár közzététele","itemName":"Tétel neve","authorName":"Szerző neve","githubUsername":"GitHub felhasználónév","twitterUsername":"Twitter felhasználónév","libraryName":"Könyvtár neve","libraryDesc":"Könyvtár leírása","website":"Weboldal","placeholder":{"authorName":"Neved vagy felhasználóneved","libraryName":"A könyvtárad neve","libraryDesc":"A könyvtárad használatát segítő leírás","githubHandle":"GitHub-handle(opcionális), így szerkesztheted a könyvtárat, miután elküldted ellenőrzésre","twitterHandle":"Twitter-felhasználónév (opcionális), így tudjuk, kinek kell jóváírni a Twitteren keresztüli reklámozást","website":"Hivatkozás személyes webhelyedre vagy máshová (nem kötelező)"},"errors":{"required":"Kötelező","website":"Adj meg egy érvényes URL-t"},"noteDescription":"Küld be könyvtáradat, hogy bekerüljön a nyilvános könyvtár tárolóbahogy mások is felhasználhassák a rajzaikban.","noteGuidelines":"A könyvtárat először manuálisan kell jóváhagyni. Kérjük, olvassa el a segédletet benyújtása előtt. Szüksége lesz egy GitHub-fiókra a kommunikációhoz és a módosításokhoz, ha kérik, de ez nem feltétlenül szükséges.","noteLicense":"A beküldéssel elfogadja, hogy a könyvtár a következő alatt kerül közzétételre MIT Licensz ami röviden azt jelenti, hogy bárki korlátozás nélkül használhatja őket.","noteItems":"Minden könyvtárelemnek saját nevével kell rendelkeznie, hogy szűrhető legyen. A következő könyvtári tételek kerülnek bele:","atleastOneLibItem":"A kezdéshez válassz ki legalább egy könyvtári elemet","republishWarning":""},"publishSuccessDialog":{"title":"A könyvtár beküldve","content":"Köszönjük {{authorName}}. Könyvtáradat elküldtük felülvizsgálatra. Nyomon követheted az állapototitt"},"confirmDialog":{"resetLibrary":"Könyvtár alaphelyzetbe állítása","removeItemsFromLib":"A kiválasztott elemek eltávolítása a könyvtárból"},"imageExportDialog":{"header":"Kép exportálása","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"A rajzaidat végpontok közötti titkosítással tároljuk, tehát az Excalidraw szervereiről se tud más belenézni.","link":"Blogbejegyzés a végpontok közötti titkosításról az Excalidraw-ban"},"stats":{"angle":"Szög","element":"Elem","elements":"Elemek","height":"Magasság","scene":"Jelenet","selected":"Kijelölt","storage":"Tárhely","title":"Statisztikák","total":"Összesen","version":"Verzió","versionCopy":"Kattints a másoláshoz","versionNotAvailable":"A verzió nem elérhető","width":"Szélesség"},"toast":{"addedToLibrary":"Könyvtárhoz adva","copyStyles":"Másolt stílusok.","copyToClipboard":"Vágólapra másolva.","copyToClipboardAsPng":"Az {{exportSelection}} PNG formátumban a vágólapra másolva \\n({{exportColorScheme}})","fileSaved":"Fájl elmentve.","fileSavedToFilename":"Mentve mint {filename}","canvas":"rajzvászon","selection":"kijelölés","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Átlátszó","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js b/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js new file mode 100644 index 0000000..267fccc --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/id-ID-json-6542dd92ab54a2c1c48e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3808],{3247:function(a){a.exports=JSON.parse('{"labels":{"paste":"Tempel","pasteAsPlaintext":"Tempel sebagai teks biasa","pasteCharts":"Tempel diagram","selectAll":"Pilih semua","multiSelect":"Tambahkan elemen ke pilihan","moveCanvas":"Pindahkan kanvas","cut":"Potong","copy":"Salin","copyAsPng":"Salin ke papan klip sebagai PNG","copyAsSvg":"Salin ke papan klip sebagai SVG","copyText":"Salin ke papan klip sebagai teks","bringForward":"Bawa maju","sendToBack":"Kirim ke belakang","bringToFront":"Bawa ke depan","sendBackward":"Kirim mundur","delete":"Hapus","copyStyles":"Salin gaya","pasteStyles":"Tempelkan gaya","stroke":"Guratan","background":"Latar","fill":"Isian","strokeWidth":"Lebar guratan","strokeStyle":"Gaya guratan","strokeStyle_solid":"Padat","strokeStyle_dashed":"Putus-putus","strokeStyle_dotted":"Titik-titik","sloppiness":"Kecerobohan","opacity":"Keburaman","textAlign":"Perataan teks","edges":"Tepi","sharp":"Tajam","round":"Bulat","arrowheads":"Mata panah","arrowhead_none":"Tidak ada","arrowhead_arrow":"Panah","arrowhead_bar":"Batang","arrowhead_dot":"Titik","arrowhead_triangle":"Segitiga","fontSize":"Ukuran font","fontFamily":"Jenis font","addWatermark":"Tambahkan \\"Dibuat dengan Excalidraw\\"","handDrawn":"Tulisan tangan","normal":"Normal","code":"Kode","small":"Kecil","medium":"Sedang","large":"Besar","veryLarge":"Sangat besar","solid":"Padat","hachure":"Garis-garis","zigzag":"Zigzag","crossHatch":"Asiran silang","thin":"Lembut","bold":"Tebal","left":"Kiri","center":"Tengah","right":"Kanan","extraBold":"Sangat tebal","architect":"Arsitek","artist":"Artis","cartoonist":"Kartunis","fileTitle":"Nama file","colorPicker":"Pilihan Warna","canvasColors":"Digunakan di kanvas","canvasBackground":"Latar Kanvas","drawingCanvas":"Kanvas","layers":"Lapisan","actions":"Aksi","language":"Bahasa","liveCollaboration":"Kolaborasi langsung...","duplicateSelection":"Duplikat","untitled":"Tanpa judul","name":"Nama","yourName":"Nama Anda","madeWithExcalidraw":"Dibuat dengan Excalidraw","group":"Kelompokan pilihan","ungroup":"Pisahkan pilihan","collaborators":"Kolaborator","showGrid":"Tampilkan grid","addToLibrary":"Tambahkan ke pustaka","removeFromLibrary":"Hapus dari pustaka","libraryLoadingMessage":"Memuat pustaka…","libraries":"Telusur pustaka","loadingScene":"Memuat pemandangan…","align":"Perataan","alignTop":"Rata atas","alignBottom":"Rata bawah","alignLeft":"Rata kiri","alignRight":"Rata kanan","centerVertically":"Pusatkan secara vertikal","centerHorizontally":"Pusatkan secara horizontal","distributeHorizontally":"Distribusikan horizontal","distributeVertically":"Distribusikan vertikal","flipHorizontal":"Balikkan horizontal","flipVertical":"Balikkan vertikal","viewMode":"Mode tampilan","share":"Bagikan","showStroke":"Tampilkan garis pengambil warna","showBackground":"Tampilkan latar pengambil warna","toggleTheme":"Ubah tema","personalLib":"Pustaka Pribadi","excalidrawLib":"Pustaka Excalidraw","decreaseFontSize":"Kecilkan ukuran font","increaseFontSize":"Besarkan ukuran font","unbindText":"Lepas teks","bindText":"Kunci teks ke kontainer","createContainerFromText":"Bungkus teks dalam kontainer","link":{"edit":"Edit tautan","editEmbed":"","create":"Buat tautan","createEmbed":"","label":"Tautan","labelEmbed":"","empty":""},"lineEditor":{"edit":"Edit tautan","exit":"Keluar editor garis"},"elementLock":{"lock":"Kunci","unlock":"Lepas","lockAll":"Kunci semua","unlockAll":"Lepas semua"},"statusPublished":"Telah terbit","sidebarLock":"Biarkan sidebar tetap terbuka","selectAllElementsInFrame":"Pilih semua elemen di bingkai","removeAllElementsFromFrame":"Hapus semua elemen dari bingkai","eyeDropper":"Ambil warna dari kanvas"},"library":{"noItems":"Belum ada item yang ditambahkan...","hint_emptyLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini, atau pasang pustaka dari gudang di bawah ini.","hint_emptyPrivateLibrary":"Pilih item pada kanvas untuk menambahkan nya di sini."},"buttons":{"clearReset":"Setel Ulang Kanvas","exportJSON":"Ekspor ke file","exportImage":"Ekspor gambar...","export":"Simpan ke...","copyToClipboard":"Salin ke Papan Klip","save":"Simpan ke file sekarang","saveAs":"Simpan sebagai","load":"Buka","getShareableLink":"Buat Tautan yang Bisa Dibagian","close":"Tutup","selectLanguage":"Pilih bahasa","scrollBackToContent":"Gulir kembali ke konten","zoomIn":"Besarkan","zoomOut":"Kecilkan","resetZoom":"Reset Pembesaran","menu":"Menu","done":"Selesai","edit":"Edit","undo":"Urungkan","redo":"Ulangi","resetLibrary":"Reset pustaka","createNewRoom":"Buat ruang baru","fullScreen":"Layar penuh","darkMode":"Mode gelap","lightMode":"Mode terang","zenMode":"Mode zen","objectsSnapMode":"","exitZenMode":"Keluar dari mode zen","cancel":"Batal","clear":"Hapus","remove":"Hapus","embed":"","publishLibrary":"Terbitkan","submit":"Kirimkan","confirm":"Konfirmasi","embeddableInteractionButton":""},"alerts":{"clearReset":"Ini akan menghapus semua yang ada dikanvas. Apakah kamu yakin ?","couldNotCreateShareableLink":"Tidak bisa membuat tautan yang bisa dibagikan","couldNotCreateShareableLinkTooBig":"Tidak dapat membuat tautan yang dapat dibagikan: pemandangan terlalu besar","couldNotLoadInvalidFile":"Tidak dapat memuat berkas yang tidak valid","importBackendFailed":"Gagal mengimpor dari backend","cannotExportEmptyCanvas":"Tidak bisa mengekspor kanvas kosong","couldNotCopyToClipboard":"Tidak bisa menyalin ke papan klip.","decryptFailed":"Tidak dapat mengdekripsi data.","uploadedSecurly":"Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya","loadSceneOverridePrompt":"Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?","collabStopOverridePrompt":"Menghentikan sesi akan menimpa gambar Anda yang tersimpan secara lokal. Anda yakin?\\n\\n(Jika Anda ingin menyimpan gambar lokal Anda, gantinya cukup tutup tab browser.)","errorAddingToLibrary":"Tidak dapat menambahkan item ke pustaka","errorRemovingFromLibrary":"Tidak dapat membuang item dari pustaka","confirmAddLibrary":"Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?","imageDoesNotContainScene":"Gambar ini sepertinya tidak terdapat data pemandangan. Sudahkah Anda mengaktifkan penyematan pemandangan ketika ekspor?","cannotRestoreFromImage":"Pemandangan tidak dapat dipulihkan dari file gambar ini","invalidSceneUrl":"Tidak dapat impor pemandangan dari URL. Kemungkinan URL itu rusak atau tidak berisi data JSON Excalidraw yang valid.","resetLibrary":"Ini akan menghapus pustaka Anda. Anda yakin?","removeItemsFromsLibrary":"Hapus {{count}} item dari pustaka?","invalidEncryptionKey":"Sandi enkripsi harus 22 karakter. Kolaborasi langsung dinonaktifkan.","collabOfflineWarning":"Tidak ada koneksi internet.\\nPerubahan tidak akan disimpan!"},"errors":{"unsupportedFileType":"Tipe file tidak didukung.","imageInsertError":"Tidak dapat menyisipkan gambar. Coba lagi nanti...","fileTooBig":"File terlalu besar. Ukuran maksimum yang dibolehkan {{maxSize}}.","svgImageInsertError":"Tidak dapat menyisipkan gambar SVG. Markup SVG sepertinya tidak valid.","failedToFetchImage":"","invalidSVGString":"SVG tidak valid.","cannotResolveCollabServer":"Tidak dapat terhubung ke server kolab. Muat ulang laman dan coba lagi.","importLibraryError":"Tidak dapat memuat pustaka","collabSaveFailed":"Tidak dapat menyimpan ke dalam basis data server. Jika masih berlanjut, Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","collabSaveFailed_sizeExceeded":"Tidak dapat menyimpan ke dalam basis data server, tampaknya ukuran kanvas terlalu besar. Anda sebaiknya simpan berkas Anda secara lokal untuk memastikan pekerjaan Anda tidak hilang.","brave_measure_text_error":{"line1":"Sepertinya Anda menggunkan peramban Brave dengan pengaturan Blokir Fingerprinting yang Agresif diaktifkan.","line2":"Ini dapat membuat Elemen Teks dalam gambar mu.","line3":"Kami sangat menyarankan mematikan pengaturan ini. Anda dapat mengikuti langkah-langkah ini untuk melakukannya.","line4":"Jika mematikan pengaturan ini tidak membenarkan tampilan elemen teks, mohon buka\\nisu di GitHub kami, atau chat kami di Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Pilihan","image":"Sisipkan gambar","rectangle":"Persegi","diamond":"Berlian","ellipse":"Elips","arrow":"Panah","line":"Garis","freedraw":"Gambar","text":"Teks","library":"Pustaka","lock":"Biarkan alat yang dipilih aktif setelah menggambar","penMode":"Mode pena - mencegah sentuhan","link":"Tambah/Perbarui tautan untuk bentuk yang dipilih","eraser":"Penghapus","frame":"Alat bingkai","embeddable":"","laser":"","hand":"Tangan (alat panning)","extraTools":"Alat-alat lain"},"headings":{"canvasActions":"Opsi Kanvas","selectedShapeActions":"Opsi bentuk yang dipilih","shapes":"Bentuk"},"hints":{"canvasPanning":"Untuk memindahkan kanvas, tekan roda mouse atau spacebar sambil menyeret, atau menggunakan alat tangan","linearElement":"Klik untuk memulai banyak poin, seret untuk satu baris","freeDraw":"Klik dan seret, lepaskan jika Anda selesai","text":"Tip: Anda juga dapat menambahkan teks dengan klik ganda di mana saja dengan alat pemilihan","embeddable":"","text_selected":"Klik ganda atau tekan ENTER untuk edit teks","text_editing":"Tekan Escape atau CtrlAtauCmd+ENTER untuk selesai mengedit","linearElementMulti":"Klik pada titik akhir atau tekan Escape atau Enter untuk menyelesaikan","lockAngle":"Anda dapat menjaga sudut dengan menahan SHIFT","resize":"Anda dapat menjaga proposi dengan menekan SHIFT sambil mengubah ukuran,\\ntekan AlT untuk mengubah ukuran dari tengah","resizeImage":"Anda dapat mengubah secara bebas dengan menekan SHIFT,\\nTekan ALT untuk mengubah dari tengah","rotate":"Anda dapat menjaga sudut dengan menahan SHIFT sambil memutar","lineEditor_info":"Tekan Ctrl/Cmd dan Dobel-klik atau tekan Ctrl/Cmd +Enter untuk mengedit poin","lineEditor_pointSelected":"Tekan Delete untuk menghapus titik, Ctrl/Cmd + D untuk menduplikasi, atau seret untuk memindahkan","lineEditor_nothingSelected":"Pilih titik untuk mengedit (tekan SHIFT untuk pilih banyak), atau tekan Alt dan klik untuk tambahkan titik baru","placeImage":"Klik untuk tempatkan gambar, atau klik dan jatuhkan untuk tetapkan ukuran secara manual","publishLibrary":"Terbitkan pustaka Anda","bindTextToElement":"Tekan enter untuk tambahkan teks","deepBoxSelect":"Tekan Ctrl atau Cmd untuk memilih yang di dalam, dan mencegah penggeseran","eraserRevert":"Tahan Alt untuk mengembalikan elemen yang ditandai untuk dihapus","firefox_clipboard_write":"Fitur ini dapat diaktifkan melalui pengaturan flag \\"dom.events.asyncClipboard.clipboardItem\\" ke \\"true\\". Untuk mengganti flag di Firefox, pergi ke laman \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Tidak dapat menampilkan pratinjau","canvasTooBig":"Kanvas mungkin terlalu besar.","canvasTooBigTip":"Tip: coba pindahkan elemen-terjauh lebih dekat bersama."},"errorSplash":{"headingMain":"Mengalami sebuah kesalahan. Cobalah ","clearCanvasMessage":"Jika memuat ulang tidak bekerja, cobalah ","clearCanvasCaveat":" Ini akan menghasilkan hilangnya pekerjaan ","trackedToSentry":"Kesalahan dengan pengidentifikasi {{eventId}} dilacak di sistem kami.","openIssueMessage":"Kami sangat berhati-hati untuk tidak menyertakan informasi pemandangan Anda pada kesalahan. Jika pemandangan Anda tidak bersifat pribadi, mohon pertimbangkan menindak lanjut pada Mohon sertakan informasi dibawah ini dengan menyalin dan menempelkan di Github issue.","sceneContent":"Pemandangan konten:"},"roomDialog":{"desc_intro":"Anda dapat mengundang orang ke pemandangan Anda saat ini untuk berkolaborasi dengan Anda.","desc_privacy":"Jangan khawatir, sesi menggunakan enkripsi end-to-end, sehingga apa pun yang Anda gambar akan tetap bersifat pribadi. Bahkan server kami tidak dapat melihat apa yang Anda lakukan.","button_startSession":"Mulai sesi","button_stopSession":"Hentikan sesi","desc_inProgressIntro":"Sesi kolaborasi sedang berlangsung sekarang.","desc_shareLink":"Bagikan tautan ini dengan siapa pun yang Anda inginkan untuk kolaborasi bersama:","desc_exitSession":"Menghentikan sesi akan memutuskan hubungan Anda dari ruangan, tetapi Anda dapat melanjutkan bekerja dengan pemandangan Anda secara lokal. Perhatikan bahwa ini tidak memengaruhi orang lain, dan mereka masih dapat berkolaborasi pada versi mereka.","shareTitle":"Gabung sesi kolaborasi langsung di Excalidraw"},"errorDialog":{"title":"Kesalahan"},"exportDialog":{"disk_title":"Simpan ke disk","disk_details":"Ekspor data pemandangan ke file yang mana Anda dapat impor nanti.","disk_button":"Simpan ke file","link_title":"Tautan","link_details":"Ekspor sebagai tautan yang hanya dibaca.","link_button":"Ekspor ke tautan","excalidrawplus_description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda.","excalidrawplus_button":"Ekspor","excalidrawplus_exportError":"Tidak dapat ekspor ke Excalidraw+ saat ini..."},"helpDialog":{"blog":"Baca blog kami","click":"klik","deepSelect":"Pilih dalam","deepBoxSelect":"Pilih dalam kotak, dan cegah penggeseran","curvedArrow":"Panah lengkung","curvedLine":"Garis lengkung","documentation":"Dokumentasi","doubleClick":"klik-ganda","drag":"seret","editor":"Editor","editLineArrowPoints":"Edit titik garis/panah","editText":"Edit teks / tambah label","github":"Menemukan masalah? Kirimkan","howto":"Ikuti panduan kami","or":"atau","preventBinding":"Cegah pengikatan panah","tools":"Alat","shortcuts":"Pintasan keyboard","textFinish":"Selesai mengedit (editor teks)","textNewLine":"Tambahkan garis baru (editor teks)","title":"Bantuan","view":"Tampilan","zoomToFit":"Perbesar agar sesuai dengan semua elemen","zoomToSelection":"Perbesar ke seleksi","toggleElementLock":"Kunci/lepas seleksi","movePageUpDown":"Pindah halaman keatas/kebawah","movePageLeftRight":"Pindah halaman kebawah/keatas"},"clearCanvasDialog":{"title":"Hapus kanvas"},"publishDialog":{"title":"Terbitkan pustaka","itemName":"Nama item","authorName":"Nama pembuat","githubUsername":"Nama pengguna github","twitterUsername":"Nama pengguna Twitter","libraryName":"Nama Pustaka","libraryDesc":"Deskripsi pustaka","website":"Situs Web","placeholder":{"authorName":"Nama atau nama pengguna Anda","libraryName":"Nama dari pustaka Anda","libraryDesc":"Deskripsi pustaka Anda untuk membantu orang mengerti penggunaannya","githubHandle":"Akun GitHub (opsional), jadi Anda dapat mengubah pustaka ketika diserahkan untuk review","twitterHandle":"Nama pengguna Twitter (opsional), jadi kami tahu siapa dipuji ketika mempromosikannya melalui Twitter","website":"Hubungkan ke situs personal Anda atau lainnya (opsional)"},"errors":{"required":"Dibutuhkan","website":"Masukkan URL valid"},"noteDescription":"Kirimkan pustaka Anda untuk disertakan di repositori pustaka publikuntuk orang lain menggunakannya dalam gambar mereka.","noteGuidelines":"Pustaka butuh disetujui secara manual terlebih dahulu. Baca pedoman sebelum mengirim. Anda butuh akun GitHub untuk berkomunikasi dan membuat perubahan jika dibutuhkan, tetapi tidak wajib dibutukan.","noteLicense":"Dengan mengkirimkannya, Anda setuju pustaka akan diterbitkan dibawah Lisensi MIT, yang artinya siapa pun dapat menggunakannya tanpa batasan.","noteItems":"Setiap item pustaka harus memiliki nama, sehingga bisa disortir. Item pustaka di bawah ini akan dimasukan:","atleastOneLibItem":"Pilih setidaknya satu item pustaka untuk mulai","republishWarning":"Catatan: beberapa item yang dipilih telah ditandai sebagai sudah dipublikasikan/diserahkan. Anda hanya dapat menyerahkan kembali item-item ketika memperbarui pustaka atau pengumpulan."},"publishSuccessDialog":{"title":"Pustaka telah dikirm","content":"Terima kasih {{authorName}}. pustaka Anda telah diserahkan untuk ditinjau ulang. Anda dapat cek statusnyadi sini"},"confirmDialog":{"resetLibrary":"Reset pustaka","removeItemsFromLib":"Hapus item yang dipilih dari pustaka"},"imageExportDialog":{"header":"Ekspor gambar","label":{"withBackground":"Latar","onlySelected":"Hanya yang dipilih","darkMode":"Mode gelap","embedScene":"Sematkan pemandangan","scale":"Skala","padding":"Lapisan"},"tooltip":{"embedScene":"Data pemandangan akan disimpan dalam file PNG/SVG yang diekspor sehingga pemandangan itu dapat dipulihkan darinya.\\nAkan membesarkan ukuran file yang diekspor."},"title":{"exportToPng":"Ekspor ke PNG","exportToSvg":"Ekspor ke SVG","copyPngToClipboard":"Salin PNG ke papan klip"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Salin ke papan klip"}},"encrypted":{"tooltip":"Gambar anda terenkripsi end-to-end sehingga server Excalidraw tidak akan pernah dapat melihatnya.","link":"Pos blog tentang enkripsi ujung ke ujung di Excalidraw"},"stats":{"angle":"Sudut","element":"Elemen","elements":"Elemen","height":"Tinggi","scene":"Pemandangan","selected":"Terpilih","storage":"Penyimpanan","title":"Statistik untuk nerd","total":"Total","version":"Versi","versionCopy":"Klik untuk salin","versionNotAvailable":"Versi tidak tersedia","width":"Lebar"},"toast":{"addedToLibrary":"Tambahkan ke pustaka","copyStyles":"Gaya tersalin.","copyToClipboard":"Tersalin ke papan klip.","copyToClipboardAsPng":"Tersalin {{exportSelection}} ke clipboard sebagai PNG\\n({{exportColorScheme}})","fileSaved":"File tersimpan.","fileSavedToFilename":"Disimpan ke {filename}","canvas":"kanvas","selection":"pilihan","pasteAsSingleElement":"Gunakan {{shortcut}} untuk menempelkan sebagai satu elemen,\\natau tempelkan ke teks editor yang ada","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparan","black":"Hitam","white":"Putih","red":"Merah","pink":"Pink","grape":"Ungu","violet":"Violet","gray":"Abu-abu","blue":"Biru","cyan":"Cyan","teal":"Teal","green":"Hijau","yellow":"Kuning","orange":"Jingga","bronze":"Tembaga"},"welcomeScreen":{"app":{"center_heading":"Semua data Anda disimpan secara lokal di peramban Anda.","center_heading_plus":"Apa Anda ingin berpindah ke Excalidraw+?","menuHint":"Ekspor, preferensi, bahasa, ..."},"defaults":{"menuHint":"Ekspor, preferensi, dan selebihnya...","center_heading":"Diagram. Menjadi. Mudah.","toolbarHint":"Pilih alat & mulai menggambar!","helpHint":"Pintasan & bantuan"}},"colorPicker":{"mostUsedCustomColors":"Warna yang sering dipakai","colors":"Warna","shades":"Nuansa","hexCode":"Kode hexa","noShades":"Tidak ada nuansa untuk warna ini"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Ekspor sebagai gambar","button":"Ekspor sebagai gambar","description":"Ekspor data pemandangan sebagai gambar yang dapat anda impor nanti."},"saveToDisk":{"title":"Simpan ke disk","button":"Simpan ke disk","description":"Ekspor data pemandangan ke file yang dapat Anda dapat impor nanti."},"excalidrawPlus":{"title":"Excalidraw+","button":"Ekspor ke Excalidraw+","description":"Simpan pemandangan ke ruang kerja Excalidraw+ Anda."}},"modal":{"loadFromFile":{"title":"Muat dari file","button":"Muat dari file","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."},"shareableLink":{"title":"Muat dari link","button":"Ganti konten saya","description":"Memuat dari file yang akan menggantikan konten Anda sekarang.

Anda dapat mencadangkan gambar anda dulu menggunakan opsi-opsi ini."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js b/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js new file mode 100644 index 0000000..fd63513 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/it-IT-json-ab410570df07304cb0ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6239],{3257:function(e){e.exports=JSON.parse('{"labels":{"paste":"Incolla","pasteAsPlaintext":"Incolla come testo normale","pasteCharts":"Incolla grafici","selectAll":"Seleziona tutto","multiSelect":"Aggiungi elemento alla selezione","moveCanvas":"Sposta tela","cut":"Taglia","copy":"Copia","copyAsPng":"Copia negli appunti come PNG","copyAsSvg":"Copia negli appunti come SVG","copyText":"Copia negli appunti come testo","bringForward":"Porta avanti","sendToBack":"Manda in fondo","bringToFront":"Porta in cima","sendBackward":"Manda dietro","delete":"Elimina","copyStyles":"Copia stili","pasteStyles":"Incolla stili","stroke":"Tratto","background":"Sfondo","fill":"Riempimento","strokeWidth":"Spessore del tratto","strokeStyle":"Stile del tratto","strokeStyle_solid":"Pieno","strokeStyle_dashed":"Tratteggiato","strokeStyle_dotted":"Punteggiato","sloppiness":"Imprecisione","opacity":"Opacità","textAlign":"Allineamento del testo","edges":"Bordi","sharp":"Acuto","round":"Rotondo","arrowheads":"Punta della freccia","arrowhead_none":"Nessuno","arrowhead_arrow":"Freccia","arrowhead_bar":"Barra","arrowhead_dot":"Punto","arrowhead_triangle":"Triangolo","fontSize":"Dimensione carattere","fontFamily":"Carattere","addWatermark":"Aggiungi \\"Creato con Excalidraw\\"","handDrawn":"A mano libera","normal":"Normale","code":"Codice","small":"Piccolo","medium":"Medio","large":"Grande","veryLarge":"Molto grande","solid":"Pieno","hachure":"Tratteggio obliquo","zigzag":"Zig zag","crossHatch":"Tratteggio incrociato","thin":"Sottile","bold":"Grassetto","left":"Sinistra","center":"Centro","right":"Destra","extraBold":"Extra Grassetto","architect":"Architetto","artist":"Artista","cartoonist":"Fumettista","fileTitle":"Nome del file","colorPicker":"Selettore colore","canvasColors":"Usato su tela","canvasBackground":"Sfondo tela","drawingCanvas":"Area di disegno","layers":"Livelli","actions":"Azioni","language":"Lingua","liveCollaboration":"Collaborazione dal vivo...","duplicateSelection":"Duplica","untitled":"Senza titolo","name":"Nome","yourName":"Il vostro nome","madeWithExcalidraw":"Creato con Excalidraw","group":"Crea gruppo da selezione","ungroup":"Dividi gruppo da selezione","collaborators":"Collaboratori","showGrid":"Visualizza griglia","addToLibrary":"Aggiungi alla libreria","removeFromLibrary":"Rimuovi dalla libreria","libraryLoadingMessage":"Caricamento libreria…","libraries":"Sfoglia librerie","loadingScene":"Caricamento della scena…","align":"Allinea","alignTop":"Allinea in alto","alignBottom":"Allinea in basso","alignLeft":"Allinea a sinistra","alignRight":"Allinea a destra","centerVertically":"Centra Verticalmente","centerHorizontally":"Centra orizzontalmente","distributeHorizontally":"Distribuisci orizzontalmente","distributeVertically":"Distribuisci verticalmente","flipHorizontal":"Capovolgi orizzontalmente","flipVertical":"Capovolgi verticalmente","viewMode":"Modalità visualizzazione","share":"Condividi","showStroke":"Mostra selettore colore del tratto","showBackground":"Mostra selettore colore di sfondo","toggleTheme":"Cambia tema","personalLib":"Libreria Personale","excalidrawLib":"Libreria di Excalidraw","decreaseFontSize":"Riduci dimensione dei caratteri","increaseFontSize":"Aumenta la dimensione dei caratteri","unbindText":"Scollega testo","bindText":"Associa il testo al container","createContainerFromText":"Avvolgi il testo in un container","link":{"edit":"Modifica link","editEmbed":"Modifica collegamento e incorpora","create":"Crea link","createEmbed":"Crea collegamento e incorpora","label":"Link","labelEmbed":"Collega & incorpora","empty":"Nessun collegamento impostato"},"lineEditor":{"edit":"Modifica linea","exit":"Esci dall\'editor di linea"},"elementLock":{"lock":"Blocca","unlock":"Sblocca","lockAll":"Blocca tutto","unlockAll":"Sblocca tutto"},"statusPublished":"Pubblicato","sidebarLock":"Mantieni aperta la barra laterale","selectAllElementsInFrame":"Seleziona tutti gli elementi nel riquadro","removeAllElementsFromFrame":"Rimuovi tutti gli elementi dal riquadro","eyeDropper":"Scegli il colore della tela"},"library":{"noItems":"Nessun elemento ancora aggiunto...","hint_emptyLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui, o installa una libreria dal repository pubblico qui sotto.","hint_emptyPrivateLibrary":"Seleziona un elemento sulla tela per aggiungerlo qui."},"buttons":{"clearReset":"Svuota la tela","exportJSON":"Esporta su file","exportImage":"Esporta immagine...","export":"Salva in...","copyToClipboard":"Copia negli appunti","save":"Salva sul file corrente","saveAs":"Salva con nome","load":"Apri","getShareableLink":"Ottieni link condivisibile","close":"Chiudi","selectLanguage":"Seleziona lingua","scrollBackToContent":"Scorri indietro fino al contenuto","zoomIn":"Aumenta ingrandimento","zoomOut":"Riduci ingrandimento","resetZoom":"Ripristina ingrandimento","menu":"Menù","done":"Fatto","edit":"Modifica","undo":"Annulla","redo":"Ripeti","resetLibrary":"Ripristina libreria","createNewRoom":"Crea nuova stanza","fullScreen":"Schermo intero","darkMode":"Tema scuro","lightMode":"Tema chiaro","zenMode":"Modalità Zen","objectsSnapMode":"Aggancia agli oggetti","exitZenMode":"Uscire dalla modalità zen","cancel":"Annulla","clear":"Cancella","remove":"Rimuovi","embed":"Attiva/disattiva incorporamento","publishLibrary":"Pubblica","submit":"Invia","confirm":"Conferma","embeddableInteractionButton":"Clicca per interagire"},"alerts":{"clearReset":"Questa azione cancellerà l\'intera tela. Sei sicuro?","couldNotCreateShareableLink":"Non riesco a creare un link condivisibile.","couldNotCreateShareableLinkTooBig":"Impossibile creare il link condivisibile: la scena è troppo grande","couldNotLoadInvalidFile":"Impossibile caricare un file no valido","importBackendFailed":"Importazione dal server fallita.","cannotExportEmptyCanvas":"Non è possibile esportare una tela vuota.","couldNotCopyToClipboard":"Impossibile copiare negli appunti.","decryptFailed":"Impossibile decriptare i dati.","uploadedSecurly":"L\'upload è stato protetto con la crittografia end-to-end, il che significa che il server Excalidraw e terze parti non possono leggere il contenuto.","loadSceneOverridePrompt":"Se carichi questo disegno esterno, sostituirà quello che hai. Vuoi continuare?","collabStopOverridePrompt":"Interrompere la sessione sovrascriverà il precedente disegno memorizzato localmente. Sei sicuro?\\n\\n(Se vuoi mantenere il tuo disegno locale, chiudi semplicemente la scheda del browser.)","errorAddingToLibrary":"Impossibile aggiungere l\'elemento alla libreria","errorRemovingFromLibrary":"Impossibile rimuovere l\'elemento dalla libreria","confirmAddLibrary":"Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?","imageDoesNotContainScene":"Questa immagine pare non contenere alcuna scena. Avevi incluso la scena durante l\'esportazione?","cannotRestoreFromImage":"Impossibile ripristinare la scena da questo file immagine","invalidSceneUrl":"Impossibile importare la scena dall\'URL fornito. Potrebbe essere malformato o non contenere dati JSON Excalidraw validi.","resetLibrary":"Questa azione cancellerà l\'intera libreria. Sei sicuro?","removeItemsFromsLibrary":"Eliminare {{count}} elementi dalla libreria?","invalidEncryptionKey":"La chiave di cifratura deve essere composta da 22 caratteri. La collaborazione live è disabilitata.","collabOfflineWarning":"Nessuna connessione internet disponibile.\\nLe tue modifiche non verranno salvate!"},"errors":{"unsupportedFileType":"Tipo di file non supportato.","imageInsertError":"Non è stato possibile inserire l\'immagine. Riprova più tardi...","fileTooBig":"Il file è troppo grande. La dimensione massima consentita è {{maxSize}}.","svgImageInsertError":"Impossibile inserire l\'immagine SVG. Il markup SVG non sembra corretto.","failedToFetchImage":"","invalidSVGString":"SVG non valido.","cannotResolveCollabServer":"Impossibile connettersi al server di collab. Ricarica la pagina e riprova.","importLibraryError":"Impossibile caricare la libreria","collabSaveFailed":"Impossibile salvare nel database di backend. Se i problemi persistono, dovresti salvare il tuo file localmente per assicurarti di non perdere il tuo lavoro.","collabSaveFailed_sizeExceeded":"Impossibile salvare nel database di backend, la tela sembra essere troppo grande. Dovresti salvare il file localmente per assicurarti di non perdere il tuo lavoro.","brave_measure_text_error":{"line1":"Sembra che tu stia utilizzando il browser Brave con l\'impostazione Blocco aggressivo delle impronte digitali abilitata.","line2":"Ciò potrebbe causare la rottura degli Elementi di testo nei tuoi disegni.","line3":"Consigliamo vivamente di disabilitare questa impostazione. Puoi seguire questi passaggi su come farlo.","line4":"Se la disattivazione di questa impostazione non risolve la visualizzazione degli elementi di testo, apri un problema sul nostro GitHub o scrivici su Discord"},"libraryElementTypeError":{"embeddable":"Gli elementi incorporabili non possono essere aggiunti alla libreria.","image":"Il supporto per l\'aggiunta d\'immagini alla libreria verrà aggiunto a breve!"}},"toolBar":{"selection":"Selezione","image":"Inserisci immagine","rectangle":"Rettangolo","diamond":"Rombo","ellipse":"Ellisse","arrow":"Freccia","line":"Linea","freedraw":"Disegno","text":"Testo","library":"Libreria","lock":"Mantieni lo strumento selezionato attivo dopo aver disegnato","penMode":"Modalità penna - previene il tocco","link":"Aggiungi/ aggiorna il link per una forma selezionata","eraser":"Gomma","frame":"Strumento riquadro","embeddable":"Incorporamento Web","laser":"Puntatore laser","hand":"Mano (strumento di panoramica)","extraTools":"Altri strumenti"},"headings":{"canvasActions":"Azioni sulla Tela","selectedShapeActions":"Impostazioni della forma selezionata","shapes":"Forme"},"hints":{"canvasPanning":"Per spostare la tela, tieni premuta la rotellina del mouse o la barra spaziatrice mentre trascini oppure usa lo strumento mano","linearElement":"Clicca per iniziare una linea in più punti, trascina per singola linea","freeDraw":"Clicca e trascina, rilascia quando avrai finito","text":"Suggerimento: puoi anche aggiungere del testo facendo doppio clic ovunque con lo strumento di selezione","embeddable":"Fare click e trascina per creare un incorporamento web","text_selected":"Fai doppio click o premi INVIO per modificare il testo","text_editing":"Premi ESC o CtrlOCmd+INVIO per completare le modifiche","linearElementMulti":"Clicca sull\'ultimo punto o premi Esc o Invio per finire","lockAngle":"Puoi limitare l\'angolo tenendo premuto SHIFT","resize":"Per vincolare le proporzioni, tieni premuto MAIUSC durante il ridimensionamento;\\nper ridimensionare dal centro, tieni premuto ALT","resizeImage":"Puoi ridimensionare liberamente tenendo premuto SHIFT,\\ntieni premuto ALT per ridimensionare dal centro","rotate":"Puoi mantenere gli angoli tenendo premuto SHIFT durante la rotazione","lineEditor_info":"Tieni premuto Ctrl o Cmd e doppio clic oppure premi Ctrl o Cmd + Invio per modificare i punti","lineEditor_pointSelected":"Premi Elimina per rimuovere il punto(i),\\nCtrlOCmd+D per duplicare o trascinare per spostare","lineEditor_nothingSelected":"Seleziona un punto da modificare (tieni premuto MAIUSC per selezionare più punti),\\noppure tieni premuto Alt e fai clic per aggiungere nuovi punti","placeImage":"Fai click per posizionare l\'immagine, o click e trascina per impostarne la dimensione manualmente","publishLibrary":"Pubblica la tua libreria","bindTextToElement":"Premi invio per aggiungere il testo","deepBoxSelect":"Tieni premuto CtrlOCmd per selezionare in profondità e per impedire il trascinamento","eraserRevert":"Tieni premuto Alt per ripristinare gli elementi contrassegnati per l\'eliminazione","firefox_clipboard_write":"Questa funzione può essere abilitata impostando il flag \\"dom.events.asyncClipboard.clipboardItem\\" su \\"true\\". Per modificare i flag del browser in Firefox, visitare la pagina \\"about:config\\".","disableSnapping":"Tieni premuto Ctrl o Cmd per disabilitare lo snap"},"canvasError":{"cannotShowPreview":"Impossibile visualizzare l\'anteprima","canvasTooBig":"La tela potrebbe essere troppo grande.","canvasTooBigTip":"Suggerimento: prova a spostare gli elementi più lontani più vicini tra loro."},"errorSplash":{"headingMain":"Si è verificato un errore. Provare ","clearCanvasMessage":"Se ricaricare non funziona, prova ","clearCanvasCaveat":" Questo risulterà nella perdita del lavoro ","trackedToSentry":"L\'errore con identificativo {{eventId}} è stato tracciato nel nostro sistema.","openIssueMessage":"Siamo stati molto cauti nel non includere informazioni della scena nell\'errore. Se la tua scena non è privata, ti preghiamo di considerare la sua inclusione nel nostro Per favore includi le informazioni riportate qui sotto copiandole e incollandole nella issue di GitHub.","sceneContent":"Contenuto della scena:"},"roomDialog":{"desc_intro":"Puoi invitare persone nella tua scena attuale per collaborare con te.","desc_privacy":"Non preoccuparti, la sessione utilizza la crittografia end-to-end, quindi qualsiasi cosa disegni rimarrà privata. Nemmeno il nostro server sarà in grado di vedere cosa hai creato.","button_startSession":"Avvia sessione","button_stopSession":"Termina sessione","desc_inProgressIntro":"La sessione di collaborazione è attualmente in corso.","desc_shareLink":"Condividi questo link con chiunque desideri collaborare:","desc_exitSession":"Interrompere la sessione scollegherà la tua stanza ma potrai continuare a lavorare con la scena, localmente. Tieni presente che questo non influirà sulle altre persone, e che saranno ancora in grado di collaborare alla loro versione.","shareTitle":"Partecipa a una sessione di collaborazione live su Excalidraw"},"errorDialog":{"title":"Errore"},"exportDialog":{"disk_title":"Salva su disco","disk_details":"Esporta i dati della scena su file, dal quale potrai importare in seguito.","disk_button":"Salva su file","link_title":"Link condivisibile","link_details":"Esporta come link di sola lettura.","link_button":"Esporta come Link","excalidrawplus_description":"Salva la scena nel tuo spazio di lavoro Excalidraw+.","excalidrawplus_button":"Esporta","excalidrawplus_exportError":"Non è stato possibile esportare su Excalidraw+ al questo momento..."},"helpDialog":{"blog":"Leggi il nostro blog","click":"click","deepSelect":"Selezione profonda","deepBoxSelect":"Seleziona in profondità all\'interno della casella e previene il trascinamento","curvedArrow":"Freccia curva","curvedLine":"Linea curva","documentation":"Documentazione","doubleClick":"doppio-click","drag":"trascina","editor":"Editor","editLineArrowPoints":"Modifica punti linea/freccia","editText":"Modifica testo / aggiungi etichetta","github":"Trovato un problema? Segnalalo","howto":"Segui le nostre guide","or":"oppure","preventBinding":"Impedisci legame della freccia","tools":"Stumenti","shortcuts":"Scorciatoie da tastiera","textFinish":"Completa la modifica (editor di testo)","textNewLine":"Aggiungi nuova riga (editor di testo)","title":"Guida","view":"Vista","zoomToFit":"Adatta zoom per mostrare tutti gli elementi","zoomToSelection":"Zoom alla selezione","toggleElementLock":"Blocca/sblocca selezione","movePageUpDown":"Sposta la pagina su/giù","movePageLeftRight":"Sposta la pagina a sinistra/destra"},"clearCanvasDialog":{"title":"Svuota la tela"},"publishDialog":{"title":"Pubblica la libreria","itemName":"Nome dell\'elemento","authorName":"Nome dell\'autore","githubUsername":"Nome utente di GitHub","twitterUsername":"Nome utente di Twitter","libraryName":"Nome della libreria","libraryDesc":"Descrizione della libreria","website":"Sito Web","placeholder":{"authorName":"Il tuo nome o nome utente","libraryName":"Nome della tua libreria","libraryDesc":"Descrizione della tua libreria per aiutare le persone a comprenderne lo scopo","githubHandle":"Handle di GitHub (opzionale), così che tu possa modificare la libreria una volta inviata per la revisione","twitterHandle":"Nome utente di Twitter (opzionale), così che sappiamo chi accreditare promuovendo su Twitter","website":"Link al tuo sito web personale o altro (opzionale)"},"errors":{"required":"Obbligatorio","website":"Inserisci un URL valido"},"noteDescription":"Invia la tua libreria da includere nella repository della libreria pubblicaperché sia usata da altri nei loro disegni.","noteGuidelines":"La libreria dev\'esser prima approvata manualmente. Sei pregato di leggere le linee guida prima di inviarla. Necessiterai di un profilo di GitHub per comunicare ed effettuare modifiche se richiesto, ma non è strettamente necessario.","noteLicense":"Inviando, acconsenti che la libreria sarà pubblicata sotto la Licenza MIT, che in breve significa che chiunque possa usarla senza restrizioni.","noteItems":"Ogni elemento della libreria deve avere il proprio nome, così che sia filtrabile. Gli elementi della seguente libreria saranno inclusi:","atleastOneLibItem":"Sei pregato di selezionare almeno un elemento della libreria per iniziare","republishWarning":"Nota: alcuni degli elementi selezionati sono contrassegnati come già pubblicati/presentati. È necessario reinviare gli elementi solo quando si aggiorna una libreria o una presentazione esistente."},"publishSuccessDialog":{"title":"Libreria inviata","content":"Grazie {{authorName}}. La tua libreria è stata inviata per la revisione. Puoi monitorarne lo statoqui"},"confirmDialog":{"resetLibrary":"Ripristina la libreria","removeItemsFromLib":"Rimuovi gli elementi selezionati dalla libreria"},"imageExportDialog":{"header":"Esporta immagine","label":{"withBackground":"Sfondo","onlySelected":"Solo selezionato","darkMode":"Tema scuro","embedScene":"Includi scena","scale":"Scala","padding":"Rientro"},"tooltip":{"embedScene":"I dati della scena saranno salvati nel file PNG/SVG esportato in modo che la scena possa essere ripristinata da esso.\\nQuesto aumenterà la dimensione del file esportato."},"title":{"exportToPng":"Esporta come PNG","exportToSvg":"Esporta come SVG","copyPngToClipboard":"Copia PNG negli appunti"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copia negli appunti"}},"encrypted":{"tooltip":"I tuoi disegni sono crittografati end-to-end in modo che i server di Excalidraw non li possano mai vedere.","link":"Articolo del blog sulla crittografia end-to-end di Excalidraw"},"stats":{"angle":"Angolo","element":"Elemento","elements":"Elementi","height":"Altezza","scene":"Scena","selected":"Selezionato","storage":"Memoria","title":"Statistiche per nerd","total":"Totale","version":"Versione","versionCopy":"Clicca per copiare","versionNotAvailable":"Versione non disponibile","width":"Larghezza"},"toast":{"addedToLibrary":"Aggiunto alla libreria","copyStyles":"Stili copiati.","copyToClipboard":"Copiato negli appunti.","copyToClipboardAsPng":"{{exportSelection}} copiato negli appunti come PNG\\n({{exportColorScheme}})","fileSaved":"File salvato.","fileSavedToFilename":"Salvato in {filename}","canvas":"tela","selection":"selezione","pasteAsSingleElement":"Usa {{shortcut}} per incollare come un singolo elemento,\\no incollare in un editor di testo esistente","unableToEmbed":"Incorporare questo url non è permesso. Crea una issue su GitHub per richiedere che l\'url sia autorizzato","unrecognizedLinkFormat":"Il link che hai incorporato non corrisponde al formato previsto. Prova a incollare la stringa \'embed\' fornita dal sito di origine"},"colors":{"transparent":"Trasparente","black":"Nero","white":"Bianco","red":"Rosso","pink":"Rosa","grape":"Uva","violet":"Viola","gray":"Grigio","blue":"Blu","cyan":"Ciano","teal":"Verde acqua","green":"Verde","yellow":"Giallo","orange":"Arancio","bronze":"Bronzo"},"welcomeScreen":{"app":{"center_heading":"Tutti i tuoi dati sono salvati localmente nel browser.","center_heading_plus":"Volevi invece andare su Excalidraw+?","menuHint":"Esporta, preferenze, lingue, ..."},"defaults":{"menuHint":"Esporta, preferenze, e altro...","center_heading":"Diagrammi. Fatto. Semplice.","toolbarHint":"Scegli uno strumento & Inizia a disegnare!","helpHint":"Scorciatoie & aiuto"}},"colorPicker":{"mostUsedCustomColors":"Colori personalizzati più utilizzati","colors":"Colori","shades":"Sfumature","hexCode":"Codice esadecimale","noShades":"Nessuna sfumatura disponibile per questo colore"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Esporta come immagine","button":"Esporta come immagine","description":"Esporta i dati della scena come immagine, che potrai importare in seguito."},"saveToDisk":{"title":"Salva su disco","button":"Salva su disco","description":"Esporta i dati della scena su file, che potrai importare in seguito."},"excalidrawPlus":{"title":"Excalidraw+","button":"Esporta su Excalidraw+","description":"Salva la scena sul tuo spazio di lavoro Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carica da file","button":"Carica da file","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."},"shareableLink":{"title":"Carica da link","button":"Sostituisci il mio contenuto","description":"Il caricamento da file sostituirà il contenuto esistente.

Puoi salvare il tuo disegno prima usando una delle opzioni qui sotto."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js b/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js new file mode 100644 index 0000000..def14ed --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ja-JP-json-2cb067da0fb518e73564.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1204],{198:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼り付け","pasteAsPlaintext":"書式なしテキストとして貼り付け","pasteCharts":"チャートの貼り付け","selectAll":"すべて選択","multiSelect":"複数選択","moveCanvas":"キャンバスを移動","cut":"切り取り","copy":"コピー","copyAsPng":"PNGとしてクリップボードへコピー","copyAsSvg":"SVGとしてクリップボードへコピー","copyText":"テキストとしてクリップボードにコピー","bringForward":"前面に移動","sendToBack":"最背面に移動","bringToFront":"最前面に移動","sendBackward":"背面に移動","delete":"削除","copyStyles":"スタイルのコピー","pasteStyles":"スタイルの貼り付け","stroke":"線","background":"背景","fill":"塗りつぶし","strokeWidth":"線の太さ","strokeStyle":"線の種類","strokeStyle_solid":"実線","strokeStyle_dashed":"破線","strokeStyle_dotted":"点線","sloppiness":"ばらつき加減","opacity":"透明度","textAlign":"文字の配置","edges":"角","sharp":"四角","round":"丸","arrowheads":"線の終点","arrowhead_none":"なし","arrowhead_arrow":"矢印","arrowhead_bar":"バー","arrowhead_dot":"ドット","arrowhead_triangle":"三角","fontSize":"フォントの大きさ","fontFamily":"フォントの種類","addWatermark":"\\"Made with Excalidraw\\"と表示","handDrawn":"手描き風","normal":"普通","code":"コード","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"ベタ塗り","hachure":"斜線","zigzag":"ジグザグ","crossHatch":"網掛け","thin":"細","bold":"太字","left":"左寄せ","center":"中央寄せ","right":"右寄せ","extraBold":"極太","architect":"正確","artist":"アート","cartoonist":"漫画風","fileTitle":"ファイル名","colorPicker":"色選択","canvasColors":"キャンバス上で使用","canvasBackground":"キャンバスの背景","drawingCanvas":"キャンバスの描画","layers":"レイヤー","actions":"操作","language":"言語","liveCollaboration":"共同編集...","duplicateSelection":"複製","untitled":"無題","name":"名前","yourName":"あなたの名前","madeWithExcalidraw":"Excalidrawで作成","group":"グループ化","ungroup":"グループ化を解除","collaborators":"共同編集者","showGrid":"グリッドを表示","addToLibrary":"ライブラリに追加","removeFromLibrary":"ライブラリから削除","libraryLoadingMessage":"ライブラリを読み込み中…","libraries":"ライブラリを参照する","loadingScene":"シーンを読み込み中…","align":"配置","alignTop":"上揃え","alignBottom":"下揃え","alignLeft":"左揃え","alignRight":"右揃え","centerVertically":"縦方向に中央揃え","centerHorizontally":"横方向に中央揃え","distributeHorizontally":"水平方向に分散配置","distributeVertically":"垂直方向に分散配置","flipHorizontal":"水平方向に反転","flipVertical":"垂直方向に反転","viewMode":"閲覧モード","share":"共有","showStroke":"ストロークカラーピッカーを表示","showBackground":"背景色ピッカーを表示","toggleTheme":"テーマの切り替え","personalLib":"個人ライブラリ","excalidrawLib":"Excalidrawライブラリ","decreaseFontSize":"フォントサイズを縮小","increaseFontSize":"フォントサイズを拡大","unbindText":"テキストのバインド解除","bindText":"テキストをコンテナにバインド","createContainerFromText":"コンテナ内でテキストを折り返す","link":{"edit":"リンクを編集","editEmbed":"リンクの編集と埋め込み","create":"リンクを作成","createEmbed":"リンクの作成と埋め込み","label":"リンク","labelEmbed":"リンクと埋め込み","empty":"リンクが設定されていません"},"lineEditor":{"edit":"行を編集","exit":"行エディタを終了"},"elementLock":{"lock":"ロック","unlock":"ロック解除","lockAll":"すべてロック","unlockAll":"すべてのロックを解除"},"statusPublished":"公開済み","sidebarLock":"サイドバーを開いたままにする","selectAllElementsInFrame":"フレーム内のすべての要素を選択","removeAllElementsFromFrame":"フレーム内のすべての要素を削除","eyeDropper":"キャンバスから色を選択"},"library":{"noItems":"まだアイテムが追加されていません…","hint_emptyLibrary":"キャンバス上のアイテムを選択してここに追加するか、以下の公開リポジトリからライブラリをインストールしてください。","hint_emptyPrivateLibrary":"キャンバス上のアイテムを選択すると、ここに追加されます。"},"buttons":{"clearReset":"キャンバスのリセット","exportJSON":"ファイルへエクスポート","exportImage":"画像のエクスポート...","export":"名前を付けて保存...","copyToClipboard":"クリップボードにコピー","save":"現在のファイルに保存","saveAs":"名前を付けて保存","load":"開く","getShareableLink":"共有URLの取得","close":"閉じる","selectLanguage":"言語の選択","scrollBackToContent":"コンテンツまでスクロールで戻る","zoomIn":"拡大","zoomOut":"縮小","resetZoom":"拡大/縮小をリセット","menu":"メニュー","done":"完了","edit":"編集","undo":"元に戻す","redo":"やり直し","resetLibrary":"ライブラリをリセット","createNewRoom":"新しい部屋を作成する","fullScreen":"フルスクリーン","darkMode":"ダークモード","lightMode":"ライトモード","zenMode":"Zenモード","objectsSnapMode":"","exitZenMode":"集中モードをやめる","cancel":"キャンセル","clear":"消去","remove":"削除","embed":"埋め込みの切り替え","publishLibrary":"公開","submit":"送信","confirm":"確認","embeddableInteractionButton":""},"alerts":{"clearReset":"この操作によってキャンバス全体が消えます。よろしいですか?","couldNotCreateShareableLink":"共有URLを作成できませんでした。","couldNotCreateShareableLinkTooBig":"共有可能なリンクを作成できませんでした: シーンが大きすぎます","couldNotLoadInvalidFile":"無効なファイルを読み込めませんでした。","importBackendFailed":"サーバーからの読み込みに失敗しました。","cannotExportEmptyCanvas":"空のキャンバスはエクスポートできません。","couldNotCopyToClipboard":"クリップボードにコピーできませんでした。","decryptFailed":"データを復号できませんでした。","uploadedSecurly":"データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。","loadSceneOverridePrompt":"外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか?","collabStopOverridePrompt":"セッションを停止すると、ローカルに保存されている図が上書きされます。 本当によろしいですか?\\n\\n(ローカルの図を保持したい場合は、セッションを停止せずにブラウザタブを閉じてください。)","errorAddingToLibrary":"アイテムをライブラリに追加できませんでした","errorRemovingFromLibrary":"ライブラリからアイテムを削除できませんでした","confirmAddLibrary":"{{numShapes}} 個の図形をライブラリに追加します。よろしいですか?","imageDoesNotContainScene":"この画像にはシーンデータが含まれていないようです。エクスポート時にシーンの埋め込みを有効にしましたか?","cannotRestoreFromImage":"このイメージファイルからシーンを復元できませんでした","invalidSceneUrl":"指定された URL からシーンをインポートできませんでした。不正な形式であるか、有効な Excalidraw JSON データが含まれていません。","resetLibrary":"ライブラリを消去します。本当によろしいですか?","removeItemsFromsLibrary":"{{count}} 個のアイテムをライブラリから削除しますか?","invalidEncryptionKey":"暗号化キーは22文字でなければなりません。ライブコラボレーションは無効化されています。","collabOfflineWarning":"インターネットに接続されていません。\\n変更は保存されません!"},"errors":{"unsupportedFileType":"サポートされていないファイル形式です。","imageInsertError":"画像を挿入できませんでした。後でもう一度お試しください...","fileTooBig":"ファイルが大きすぎます。許可される最大サイズは {{maxSize}} です。","svgImageInsertError":"SVGイメージを挿入できませんでした。SVGマークアップは無効に見えます。","failedToFetchImage":"","invalidSVGString":"無効なSVGです。","cannotResolveCollabServer":"コラボレーションサーバに接続できませんでした。ページを再読み込みして、もう一度お試しください。","importLibraryError":"ライブラリを読み込めませんでした。","collabSaveFailed":"バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","collabSaveFailed_sizeExceeded":"キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。","brave_measure_text_error":{"line1":"Aggressly Block Fingerprinting の設定が有効なBraveブラウザを使用しているようです。","line2":"これにより、図面の テキスト要素 が壊れる可能性があります。","line3":"この設定を無効にすることを強く推奨します。 設定手順 をこちらから確認できます。","line4":"この設定を無効にすると、テキスト要素の表示が修正されません。 GitHub で Issue を開くか、 Discord にご記入ください"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"選択","image":"画像を挿入","rectangle":"矩形","diamond":"ひし形","ellipse":"楕円","arrow":"矢印","line":"直線","freedraw":"描画","text":"テキスト","library":"ライブラリ","lock":"描画後も使用中のツールを選択したままにする","penMode":"ペンモード - タッチ防止","link":"選択した図形のリンクを追加/更新","eraser":"消しゴム","frame":"フレームツール","embeddable":"Web埋め込み","laser":"","hand":"手 (パンニングツール)","extraTools":"その他のツール"},"headings":{"canvasActions":"キャンバス操作","selectedShapeActions":"選択された図形に対する操作","shapes":"図形"},"hints":{"canvasPanning":"キャンバスを移動するには、マウスホイールまたはスペースバーを押しながらドラッグするか、手ツールを使用します","linearElement":"クリックすると複数の頂点からなる曲線を開始、ドラッグすると直線","freeDraw":"クリックしてドラッグします。離すと終了します","text":"ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます","embeddable":"","text_selected":"テキストを編集するには、ダブルクリックまたはEnterキーを押します","text_editing":"Esc キーまたは CtrlOrCmd+ENTER キーを押して編集を終了します","linearElementMulti":"最後のポイントをクリックするか、エスケープまたはEnterを押して終了します","lockAngle":"SHIFTを押したままにすると、角度を制限することができます","resize":"サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます","resizeImage":"SHIFTを長押しすると自由にサイズを変更できます。\\n中央からサイズを変更するにはALTを長押しします","rotate":"回転中にSHIFT キーを押すと角度を制限することができます","lineEditor_info":"CtrlOrCmd を押したままダブルクリックするか、CtrlOrCmd + Enter を押して点を編集します","lineEditor_pointSelected":"Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動","lineEditor_nothingSelected":"編集する点を選択(SHIFTを押したままで複数選択)、\\nAltキーを押しながらクリックすると新しい点を追加","placeImage":"クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します","publishLibrary":"自分のライブラリを公開","bindTextToElement":"Enterを押してテキストを追加","deepBoxSelect":"CtrlOrCmd を押し続けることでドラッグを抑止し、深い選択を行います","eraserRevert":"Alt を押し続けることで削除マークされた要素を元に戻す","firefox_clipboard_write":"この機能は、\\"dom.events.asyncClipboard.clipboardItem\\" フラグを \\"true\\" に設定することで有効になる可能性があります。Firefox でブラウザーの設定を変更するには、\\"about:config\\" ページを参照してください。","disableSnapping":""},"canvasError":{"cannotShowPreview":"プレビューを表示できません","canvasTooBig":"キャンバスが大きすぎます。","canvasTooBigTip":"ヒント: 最も遠い要素をもう少し近づけてみてください。"},"errorSplash":{"headingMain":"エラーが発生しました。もう一度やり直してください。 ","clearCanvasMessage":"再読み込みがうまくいかない場合は、 ","clearCanvasCaveat":" これにより作業が失われます ","trackedToSentry":"識別子のエラー {{eventId}} が我々のシステムで追跡されました。","openIssueMessage":"エラーに関するシーン情報を含めないように非常に慎重に設定しました。もしあなたのシーンがプライベートでない場合は、私たちのフォローアップを検討してください。 GitHub のIssueに以下の情報をコピーして貼り付けてください。","sceneContent":"シーンの内容:"},"roomDialog":{"desc_intro":"他の人を編集中のあなたの画面に招待して共同編集することができます。","desc_privacy":"このセッションはエンドツーエンド暗号化されており、描画内容は保護されています。運営サーバーからも内容は見えません。","button_startSession":"セッションを開始する","button_stopSession":"セッションを終了する","desc_inProgressIntro":"共同編集セッションが有効になっています。","desc_shareLink":"下記URLを共同編集したい人に共有してください:","desc_exitSession":"セッションを終了するとあなたはルームから切断されますが、ローカルで作業を続けることができます。セッションを終了しても他のメンバには影響はなく、引き続き共同作業を行うことができます。","shareTitle":"Excalidrawの共同編集セッションに参加する"},"errorDialog":{"title":"エラー"},"exportDialog":{"disk_title":"ディスクに保存","disk_details":"シーンデータを後からインポートできるファイルにエクスポートします。","disk_button":"ファイルへ保存","link_title":"共有可能なリンク","link_details":"読み取り専用リンクとしてエクスポート","link_button":"リンクとしてエクスポート","excalidrawplus_description":"Excalidraw+ ワークスペースにシーンを保存します。","excalidrawplus_button":"エクスポート","excalidrawplus_exportError":"Excalidraw+ にエクスポートできませんでした..."},"helpDialog":{"blog":"公式ブログを読む","click":"クリック","deepSelect":"深い選択","deepBoxSelect":"ボックス内の深い選択、およびドラッグの抑止","curvedArrow":"カーブした矢印","curvedLine":"曲線","documentation":"ドキュメント","doubleClick":"ダブルクリック","drag":"ドラッグ","editor":"エディタ","editLineArrowPoints":"","editText":"テキストの編集 / ラベルの追加","github":"不具合報告はこちら","howto":"ヘルプ・マニュアル","or":"または","preventBinding":"矢印を結合しない","tools":"ツール","shortcuts":"キーボードショートカット","textFinish":"編集を終了 (テキストエディタ)","textNewLine":"新しい行を追加 (テキスト)","title":"ヘルプ","view":"表示","zoomToFit":"すべての要素が収まるようにズーム","zoomToSelection":"選択要素にズーム","toggleElementLock":"選択したアイテムをロック/ロック解除","movePageUpDown":"ページを上下に移動","movePageLeftRight":"ページを左右に移動"},"clearCanvasDialog":{"title":"キャンバスを消去"},"publishDialog":{"title":"ライブラリを公開","itemName":"アイテム名","authorName":"作成者名","githubUsername":"GitHub ユーザ名","twitterUsername":"Twitter ユーザ名","libraryName":"ライブラリ名","libraryDesc":"ライブラリの説明","website":"Webサイト","placeholder":{"authorName":"お名前またはユーザー名","libraryName":"あなたのライブラリ名","libraryDesc":"ライブラリの使い方を理解するための説明","githubHandle":"GitHubハンドル(任意)。一度レビューのために送信されると、ライブラリを編集できます","twitterHandle":"Twitterのユーザー名 (任意)。Twitterでプロモーションする際にクレジットする人を知っておくためのものです","website":"個人のウェブサイトまたは他のサイトへのリンク (任意)"},"errors":{"required":"必須項目","website":"有効な URL を入力してください"},"noteDescription":"以下に含めるライブラリを提出してください 公開ライブラリのリポジトリ他の人が作図に使えるようにするためです","noteGuidelines":"最初にライブラリを手動で承認する必要があります。次をお読みください ガイドライン 送信する前に、GitHubアカウントが必要になりますが、必須ではありません。","noteLicense":"提出することにより、ライブラリが次の下で公開されることに同意します: MIT ライセンス つまり誰でも制限なく使えるということです","noteItems":"各ライブラリ項目は、フィルタリングのために独自の名前を持つ必要があります。以下のライブラリアイテムが含まれます:","atleastOneLibItem":"開始するには少なくとも1つのライブラリ項目を選択してください","republishWarning":"注意: 選択された項目の中には、すでに公開/投稿済みと表示されているものがあります。既存のライブラリや投稿を更新する場合のみ、アイテムを再投稿してください。"},"publishSuccessDialog":{"title":"ライブラリを送信しました","content":"{{authorName}} さん、ありがとうございます。あなたのライブラリはレビューのために提出されました。状況を追跡できます。こちら"},"confirmDialog":{"resetLibrary":"ライブラリをリセット","removeItemsFromLib":"選択したアイテムをライブラリから削除"},"imageExportDialog":{"header":"画像をエクスポート","label":{"withBackground":"背景","onlySelected":"","darkMode":"ダークモード","embedScene":"","scale":"スケール","padding":"余白"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG にエクスポート","exportToSvg":"SVG にエクスポート","copyPngToClipboard":"クリップボードにPNGをコピー"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"クリップボードにコピー"}},"encrypted":{"tooltip":"描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。","link":"Excalidrawのエンドツーエンド暗号化に関するブログ記事"},"stats":{"angle":"角度","element":"要素","elements":"要素","height":"高さ","scene":"シーン","selected":"選択済み","storage":"ストレージ","title":"詳細統計情報","total":"合計","version":"バージョン","versionCopy":"クリックしてコピー","versionNotAvailable":"利用できないバージョン","width":"幅"},"toast":{"addedToLibrary":"ライブラリに追加しました","copyStyles":"スタイルをコピーしました。","copyToClipboard":"クリップボードにコピー","copyToClipboardAsPng":"{{exportSelection}} を PNG 形式でクリップボードにコピーしました\\n({{exportColorScheme}})","fileSaved":"ファイルを保存しました","fileSavedToFilename":"{filename} に保存しました","canvas":"キャンバス","selection":"選択","pasteAsSingleElement":"{{shortcut}} を使用して単一の要素として貼り付けるか、\\n既存のテキストエディタに貼り付け","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"透明","black":"黒","white":"白","red":"赤","pink":"ピンク","grape":"グレープ","violet":"バイオレット","gray":"灰色","blue":"青","cyan":"シアン","teal":"ティール","green":"緑","yellow":"黄","orange":"オレンジ","bronze":"ブロンズ"},"welcomeScreen":{"app":{"center_heading":"すべてのデータはブラウザにローカル保存されます。","center_heading_plus":"代わりにExcalidraw+を開きますか?","menuHint":"エクスポート、設定、言語..."},"defaults":{"menuHint":"エクスポート、設定、その他...","center_heading":"ダイアグラムを簡単に。","toolbarHint":"ツールを選んで描き始めよう!","helpHint":"ショートカットとヘルプ"}},"colorPicker":{"mostUsedCustomColors":"最も使用されているカスタム色","colors":"色","shades":"影","hexCode":"Hexコード","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"画像としてエクスポート","button":"画像としてエクスポート","description":""},"saveToDisk":{"title":"ディスクに保存","button":"ディスクに保存","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+にエクスポート","description":"Excalidraw+ ワークスペースにシーンを保存します。"}},"modal":{"loadFromFile":{"title":"ファイルからロード","button":"ファイルからロード","description":""},"shareableLink":{"title":"リンクからロード","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js b/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js new file mode 100644 index 0000000..edbd34d --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kaa-json-4d0a4868835d0334a549.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[663],{7941:function(e){e.exports=JSON.parse('{"labels":{"paste":"Qoyıw","pasteAsPlaintext":"Ápiwayı tekst retinde qoyıw","pasteCharts":"Diagrammalardı qoyıw","selectAll":"Barlıǵın tańlaw","multiSelect":"","moveCanvas":"","cut":"Qıyıw","copy":"Kóshirip alıw","copyAsPng":"Almasıw buferine PNG retinde kóshirip alıw","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Óshiriw","copyStyles":"","pasteStyles":"","stroke":"Jiyek","background":"Fon","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"Qırlar","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"Jebe","arrowhead_bar":"","arrowhead_dot":"Noqat","arrowhead_triangle":"","fontSize":"Shrift ólshemi","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"Kod","small":"","medium":"","large":"Úlken","veryLarge":"Júdá úlken","solid":"","hachure":"","zigzag":"Zigzag","crossHatch":"","thin":"Jińishke","bold":"Qalıń","left":"","center":"","right":"","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Fayl ataması","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"Háreketler","language":"Til","liveCollaboration":"","duplicateSelection":"Nusqa","untitled":"Atamasız","name":"Ataması","yourName":"Atıńız","madeWithExcalidraw":"Excalidraw járdeminde islengen","group":"","ungroup":"","collaborators":"Qatnasıwshılar","showGrid":"","addToLibrary":"Kitapxanaǵa qosıw","removeFromLibrary":"Kitapxanadan alıp taslaw","libraryLoadingMessage":"Kitapxana júklenbekte…","libraries":"Kitapxanalardı kóriw","loadingScene":"Saxna júklenbekte…","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"Kóriw rejimi","share":"Bólisiw","showStroke":"","showBackground":"","toggleTheme":"Temanı ózgertiw","personalLib":"Jeke kitapxana","excalidrawLib":"Excalidraw kitapxanası","decreaseFontSize":"Shrift ólshemin kishireytiw","increaseFontSize":"Shrift ólshemin úlkeytiw","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Siltemeni ózgertiw","editEmbed":"","create":"Siltemeni jaratıw","createEmbed":"","label":"Silteme","labelEmbed":"","empty":""},"lineEditor":{"edit":"Qatardı ózgertiw","exit":"Qatardı ózgertiw redaktorınan shıǵıw"},"elementLock":{"lock":"Qulıplaw","unlock":"Qulıptan shıǵarıw","lockAll":"Barlıǵın qulıplaw","unlockAll":"Barlıǵın qulıptan shıǵarıw"},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"Súwretti eksportlaw...","export":"Retinde saqlaw...","copyToClipboard":"Almasıw buferine kóshirip alındı","save":"Ámeldegi faylǵa saqlaw","saveAs":"Retinde saqlaw","load":"Ashıw","getShareableLink":"","close":"Jabıw","selectLanguage":"Tildi tańlaw","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Menyu","done":"Tayın","edit":"Ózgertiw","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"Tolıq ekran","darkMode":"Qarańǵı tema","lightMode":"Jaqtı tema","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"Biykarlaw","clear":"Tazalaw","remove":"Óshiriw","embed":"","publishLibrary":"","submit":"Jiberiw","confirm":"Tastıyıqlaw","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"Almasıw buferine kóshirip alıw ámelge aspadı.","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"Jaramsız SVG.","cannotResolveCollabServer":"","importLibraryError":"Kitapxananı júklew ámelge aspadı","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Súwret qoyıw","rectangle":"Tórt múyeshlik","diamond":"","ellipse":"","arrow":"","line":"Sızıq","freedraw":"Sızıw","text":"Tekst","library":"Kitapxana","lock":"","penMode":"","link":"","eraser":"Óshirgish","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"Figuralar"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"Tekst qosıw ushın Enter túymesin basıń","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Qátelik"},"exportDialog":{"disk_title":"Diskke saqlaw","disk_details":"","disk_button":"Faylǵa saqlaw","link_title":"","link_details":"","link_button":"Siltemege eksportlaw","excalidrawplus_description":"","excalidrawplus_button":"Eksportlaw","excalidrawplus_exportError":""},"helpDialog":{"blog":"Biziń blogtı oqıń","click":"basıw","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"Hújjetshilik","doubleClick":"","drag":"","editor":"Redaktor","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"yamasa","preventBinding":"","tools":"Ásbaplar","shortcuts":"","textFinish":"","textNewLine":"","title":"Járdem","view":"Kóriw","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"Avtor atı","githubUsername":"GitHub paydalanıwshı atı","twitterUsername":"Twitter paydalanıwshı atı","libraryName":"Kitapxana ataması","libraryDesc":"","website":"Veb-sayt","placeholder":{"authorName":"Atıńız yamasa paydalanıwshı atı","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"Kitapxananı qayta ornatıw","removeItemsFromLib":""},"imageExportDialog":{"header":"Súwretti eksportlaw","label":{"withBackground":"Fon","onlySelected":"","darkMode":"Qarańǵı tema","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Almasıw buferine kóshirip alıw"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Element","elements":"Elementler","height":"","scene":"Saxna","selected":"Tańlandı","storage":"","title":"","total":"","version":"Versiya","versionCopy":"Kóshirip alıw ushın basıń","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"Kitapxanaǵa qosıldı","copyStyles":"","copyToClipboard":"Almasıw buferine kóshirip alındı.","copyToClipboardAsPng":"","fileSaved":"Fayl saqlandı.","fileSavedToFilename":"{filename} saqlandı","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"Qara","white":"Aq","red":"Qızıl","pink":"Qızǵılt","grape":"","violet":"Qızǵılt kók","gray":"","blue":"Kók","cyan":"Kók aspan","teal":"Piruza","green":"Jasıl","yellow":"Sarı","orange":"Qızǵılt sarı","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":"Eksportlaw, sazlawlar, tiller, ..."},"defaults":{"menuHint":"Eksportlaw, sazlawlar hám basqa...","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"Reńler","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"Súwret retinde eksportlaw","button":"Súwret retinde eksportlaw","description":""},"saveToDisk":{"title":"Diskke saqlaw","button":"Diskke saqlaw","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"","description":""}},"modal":{"loadFromFile":{"title":"Fayldan júklew","button":"Fayldan júklew","description":""},"shareableLink":{"title":"Siltemeden júklew","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js b/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js new file mode 100644 index 0000000..a23e37c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kab-KAB-json-0d400ba2836cc0752cd6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[9551],{228:function(e){e.exports=JSON.parse('{"labels":{"paste":"Senṭeḍ","pasteAsPlaintext":"","pasteCharts":"Senṭeḍ udlifen","selectAll":"Fren akk","multiSelect":"Rnu aferdis ɣer tefrayt","moveCanvas":"Smutti taɣzut n usuneɣ","cut":"Gzem","copy":"Nɣel","copyAsPng":"Nɣel ɣer tecfawit am PNG","copyAsSvg":"Nɣel ɣer tecfawit am SVG","copyText":"Nɣel ɣer tecfawit am uḍris","bringForward":"Awi ɣer sdat","sendToBack":"Awi s agilal","bringToFront":"Err ɣer deffir","sendBackward":"Awi ɣer deffir","delete":"Kkes","copyStyles":"Nɣel iɣunab","pasteStyles":"Senṭeḍ iɣunab","stroke":"Azizdew","background":"Agilal","fill":"Taččart","strokeWidth":"Tehri n yizirig","strokeStyle":"Aɣanib n tizirig","strokeStyle_solid":"Aččuran","strokeStyle_dashed":"S tjerriḍin","strokeStyle_dotted":"S tenqiḍin","sloppiness":"Astehzi","opacity":"Tiḍullest","textAlign":"Areyyec n uḍris","edges":"Leryuf","sharp":"Yemsed","round":"Imdewer","arrowheads":"Ixfawen n tenccabt","arrowhead_none":"Ulac","arrowhead_arrow":"Taneccabt","arrowhead_bar":"Afeggag","arrowhead_dot":"Tanqiḍt","arrowhead_triangle":"Akerdis","fontSize":"Tiddi n tsefsit","fontFamily":"Tawacult n tsefsiyin","addWatermark":"Seddu \\"Yettwaxdem s Excalidraw\\"","handDrawn":"Asuneɣ s ufus","normal":"Amagnu","code":"Tangalt","small":"Meẓẓi","medium":"Alemmas","large":"Ameqran","veryLarge":"Meqqer aṭas","solid":"Aččuran","hachure":"Azerreg","zigzag":"","crossHatch":"Azerreg anmidag","thin":"Arqaq","bold":"Azuran","left":"Azelmaḍ","center":"Talemmast","right":"Ayfus","extraBold":"Azuran aṭas","architect":"Amasdag","artist":"Anaẓur","cartoonist":"Amefɣul","fileTitle":"Isem n ufaylu","colorPicker":"Amafran n yini","canvasColors":"Yettwaseqdec di teɣzut n usuneɣ","canvasBackground":"Agilal n teɣzut n usuneɣ","drawingCanvas":"Taɣzut n usuneɣ","layers":"Tissiyin","actions":"Tigawin","language":"Tutlayt","liveCollaboration":"Amɛiwen s srid...","duplicateSelection":"Sisleg","untitled":"War azwel","name":"Isem","yourName":"Isem-ik (im)","madeWithExcalidraw":"Yettwaxdem s Excalidraw","group":"Segrew tafrayt","ungroup":"Kkess asegrew i tefrayt","collaborators":"Imɛiwnen","showGrid":"Beqqeḍ aferrug","addToLibrary":"Rnu ɣer temkarḍit","removeFromLibrary":"Kkes si temkarḍit","libraryLoadingMessage":"Asali n temkarḍit…","libraries":"Snirem timkarḍiyin","loadingScene":"Asali n usayes…","align":"Reyyec","alignTop":"Areyyec uksawen","alignBottom":"Areyyec ukessar","alignLeft":"Reyyec s azelmaḍ","alignRight":"Areyyec s ayfus","centerVertically":"Di tlemmast s ibeddi","centerHorizontally":"Di tlemmast s uglawi","distributeHorizontally":"Freq s uglawi","distributeVertically":"Freq s yibeddi","flipHorizontal":"Tuttya taglawant","flipVertical":"Tuttya tubdidt","viewMode":"Askar n tmuɣli","share":"Bḍu","showStroke":"Beqqeḍ amelqaḍ n yini n yizirig","showBackground":"Beqqeḍ amelqaḍ n yini n ugilal","toggleTheme":"Snifel asentel","personalLib":"Tamkarḍit tudmawant","excalidrawLib":"Tamkarḍit n Excalidraw","decreaseFontSize":"Senqes tiddi n tsefsit","increaseFontSize":"Sali tiddi n tsefsit","unbindText":"Serreḥ iweḍris","bindText":"Arez aḍris s anagbar","createContainerFromText":"","link":{"edit":"Ẓreg aseɣwen","editEmbed":"","create":"Snulfu-d aseɣwen","createEmbed":"","label":"Aseɣwen","labelEmbed":"","empty":""},"lineEditor":{"edit":"Ẓreg izirig","exit":"Ffeɣ seg umaẓrag n yizirig"},"elementLock":{"lock":"Sekkeṛ","unlock":"Serreḥ","lockAll":"Sekkeṛ akk","unlockAll":"Serreḥ akk"},"statusPublished":"Yeffeɣ-d","sidebarLock":"Eǧǧ afeggag n yidis yeldi","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ulac iferdisen yettwarnan yakan...","hint_emptyLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi, neɣ sbedd tamkarḍit seg usarsay azayez, ukessar-agi.","hint_emptyPrivateLibrary":"Fren aferdis di teɣzut nusuneɣ akken at-ternuḍ dagi."},"buttons":{"clearReset":"Ales awennez n teɣzut n usuneɣ","exportJSON":"Sifeḍ afaylu","exportImage":"Sifeḍ tugna...","export":"Sekles di...","copyToClipboard":"Nɣel ɣer tecfawit","save":"Sekles deg ufaylu amiran","saveAs":"Sekles am","load":"Ldi","getShareableLink":"Awi-d aseɣwen n beṭṭu","close":"Mdel","selectLanguage":"Fren tutlayt","scrollBackToContent":"Uɣal s agbur","zoomIn":"Simɣur","zoomOut":"Simẓi","resetZoom":"Ales awennez n usemɣer","menu":"Umuɣ","done":"Ifukk","edit":"Ẓreg","undo":"Sefsex","redo":"Err-d","resetLibrary":"Ales awennez n temkarḍit","createNewRoom":"Snulfu-d taxxamt tamaynutt","fullScreen":"Agdil aččuran","darkMode":"Askar imsulles","lightMode":"Askar afaw","zenMode":"Askar Zen","objectsSnapMode":"","exitZenMode":"Ffeɣ seg uskar Zen","cancel":"Sefsex","clear":"Sfeḍ","remove":"Kkes","embed":"","publishLibrary":"Ẓreg","submit":"Azen","confirm":"Sentem","embeddableInteractionButton":""},"alerts":{"clearReset":"Ayagi ad isfeḍ akk taɣzut n usuneɣ. Tetḥeqqeḍ?","couldNotCreateShareableLink":"D awezɣi asnulfu n useɣwen n beṭṭu.","couldNotCreateShareableLinkTooBig":"D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas","couldNotLoadInvalidFile":"D awezɣi asali n ufaylu armeɣtu","importBackendFailed":"Takterḍ seg uɣawas n deffir ur teddi ara.","cannotExportEmptyCanvas":"D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.","couldNotCopyToClipboard":"Ulamek anɣal ɣer tecfawit.","decryptFailed":"D awezɣi tukksa n uwgelhen i yisefka.","uploadedSecurly":"Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.","loadSceneOverridePrompt":"Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?","collabStopOverridePrompt":"Aḥbas n tɣimit ad yesefsex unuɣ-inek (m) yettwaḥerzen yakan s wudem adigan. Tetḥeqqeḍ?\\n(Ma tebɣiḍ ad teǧǧeḍ unuɣ-inek (m) adigan, mdel iccer n yiminig, deg umḍiq.)","errorAddingToLibrary":"Ulamek ara yettwarnu uferdis ɣer temkarḍit","errorRemovingFromLibrary":"Ulamek ara yettwakkes uferdis si temkarḍit","confirmAddLibrary":"Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?","imageDoesNotContainScene":"Tugna-agi tettban-d ur tesɛi ara isefka n usayes. Tesremdeḍ aseddu n usayes deg usifeḍ?","cannotRestoreFromImage":"Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna","invalidSceneUrl":"Ulamek taktert n usayes seg URL i d-ittunefken. Ahat mačči d tameɣtut neɣ ur tegbir ara isefka JSON n Excalidraw.","resetLibrary":"Ayagi ad isfeḍ tamkarḍit-inek•m. Tetḥeqqeḍ?","removeItemsFromsLibrary":"Ad tekkseḍ {{count}} n uferdis (en) si temkarḍit?","invalidEncryptionKey":"Tasarut n uwgelhen isefk ad tesɛu 22 n yiekkilen. Amɛiwen srid yensa.","collabOfflineWarning":"Ulac tuqqna n internet.\\nIbedilen-ik ur ttwaklasen ara!"},"errors":{"unsupportedFileType":"Anaw n ufaylu ur yettwasefrak ara.","imageInsertError":"D awezɣi tugra n tugna. Eɛreḍ tikkelt-nniḍen ardeqqal...","fileTooBig":"Afaylu meqqer aṭas. Tiddi tafellayt yurgen d {{maxSize}}.","svgImageInsertError":"D awezɣi tugra n tugna SVG. Acraḍ SVG yettban-d d armeɣtu.","failedToFetchImage":"","invalidSVGString":"SVG armeɣtu.","cannotResolveCollabServer":"Ulamek tuqqna s aqeddac n umyalel. Ma ulac uɣilif ales asali n usebter sakin eɛreḍ tikkelt-nniḍen.","importLibraryError":"Ur d-ssalay ara tamkarḍit","collabSaveFailed":"Ulamek asekles deg uzadur n yisefka deg ugilal. Ma ikemmel wugur, isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","collabSaveFailed_sizeExceeded":"Ulamek asekles deg uzadur n yisefka deg ugilal, taɣzut n usuneɣ tettban-d temqer aṭas. Isefk ad teskelseḍ afaylu s wudem adigan akken ad tetḥeqqeḍ ur tesruḥuyeḍ ara amahil-inek•inem.","brave_measure_text_error":{"line1":"","line2":"Ayagi yezmer ad d-iglu s truẓi nIferdisen n uḍrisdeg wunuɣen-inek.","line3":"Ad k-nsemter ad tsexsiḍ aɣewwar-agi. Tzemreḍ ad tḍefreḍisurifen-agi ɣef wamek ara txedmeḍ.","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Tafrayt","image":"Ger tugna","rectangle":"Asrem","diamond":"Ameɣṛun","ellipse":"Taglayt","arrow":"Taneccabt","line":"Izirig","freedraw":"Suneɣ","text":"Aḍris","library":"Tamkarḍit","lock":"Eǧǧ afecku n tefrayt yermed mbaɛd asuneɣ","penMode":"Askar n yimru - gdel tanalit","link":"Rnu/leqqem aseɣwen i talɣa yettwafernen","eraser":"Sfeḍ","frame":"","embeddable":"","laser":"","hand":"Afus (afecku n usmutti n tmuɣli)","extraTools":""},"headings":{"canvasActions":"Tigawin n teɣzut n usuneɣ","selectedShapeActions":"Tigawin n talɣa yettwafernen","shapes":"Talɣiwin"},"hints":{"canvasPanning":"Akken ad tesmuttiḍ taɣzut n usuneɣ, ṭṭef ṛṛuda n umumed, neɣ seqdec afecku Afus","linearElement":"Ssit akken ad tebduḍ aṭas n tenqiḍin, zuɣer i yiwen n yizirig","freeDraw":"Ssit yerna zuɣer, serreḥ ticki tfukeḍ","text":"Tixidest: tzemreḍ daɣen ad ternuḍ aḍris s usiti snat n tikkal anida tebɣiḍ s ufecku n tefrayt","embeddable":"","text_selected":"Ssit snat n tikkal neɣ ssed taqeffalt Kcem akken ad tẓergeḍ aḍris","text_editing":"Ssit Escape neɣ CtrlOrCmd+ENTER akken ad tfakkeḍ asiẓreg","linearElementMulti":"Ssit ɣef tenqiḍt taneggarut neɣ ssed taqeffalt Escape neɣ taqeffalt Kcem akken ad tfakkeḍ","lockAngle":"Tzemreḍ ad tḥettmeḍ tiɣmert s tuṭṭfa n tqeffalt SHIFT","resize":"Tzemreḍ ad tḥettemeḍ assaɣ s tuṭṭfa n tqeffalt SHIFT mi ara tettbeddileḍ tiddi,\\nma teṭṭfeḍ ALT abeddel n tiddi ad yili si tlemmast","resizeImage":"Tzemreḍ ad talseḍ tiddi s tilelli s tuṭṭfa n SHIFT,\\nṭṭef ALT akken ad talseḍ tiddi si tlemmast","rotate":"Tzemreḍ ad tḥettemeḍ tiɣemmar s tuṭṭfa n SHIFT di tuzzya","lineEditor_info":"Ssed ɣef CtrlOrCmd yerna ssit snat n tikkal neɣ ssed ɣef CtrlOrCmd + Kcem akken ad tẓergeḍ tineqqiḍin","lineEditor_pointSelected":"Ssed taqeffalt kkes akken ad tekkseḍ tanqiḍ (tinqiḍin),\\nCtrlOrCmd+D akken ad tsiselgeḍ, neɣ zuɣer akken ad tesmuttiḍ","lineEditor_nothingSelected":"Fren tanqiḍt akken ad tẓergeḍ (ṭṭef SHIFT akken ad tferneḍ aṭas),\\nneɣ ṭṭef Alt akken ad ternuḍ tinqiḍin timaynutin","placeImage":"Ssit akken ad tserseḍ tugna, neɣ ssit u zuɣer akken ad tesbaduḍ tiddi-ines s ufus","publishLibrary":"Siẓreg tamkarḍit-inek•inem","bindTextToElement":"Ssed ɣef kcem akken ad ternuḍ aḍris","deepBoxSelect":"Ṭṭef CtrlOrCmd akken ad tferneḍ s telqey, yerna ad trewleḍ i uzuɣer","eraserRevert":"Ssed Alt akken ad tsefsxeḍ iferdisen yettwacerḍen i tukksa","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Ulamek abeqqeḍ n teskant","canvasTooBig":"Taɣzut n usuneɣ tezmer ad tili temeqqer aṭas.","canvasTooBigTip":"Tixidest: eɛreḍ ad tesqerbeḍ ciṭ iferdisen yembaɛaden."},"errorSplash":{"headingMain":"Teḍra-d tuccḍa. Eɛreḍ ","clearCanvasMessage":"Ma yella tulsa n usali ur tefri ara ugur, eɛreḍ ","clearCanvasCaveat":" Ayagi ad d-iglu s usṛuḥu n umahil ","trackedToSentry":"Tuccḍa akked umesmagi {{eventId}} tettwasekles deg unagraw-nneɣ.","openIssueMessage":"Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.","sceneContent":"Agbur n usayes:"},"roomDialog":{"desc_intro":"Tzemreḍ ad d-teɛerḍeḍ medden ɣer usayes-inek (m) amiran akken ad ttekkin yid-k.","desc_privacy":"Ur tqelliq ara, tiɣimit tsseqdac awgelhen ixef s ixef, dɣa ayen ara tsunɣeḍ ad iqqim d amaẓlay. Ula d aqeddac-nneɣ ur yezmir ara ad iwali acu txeddemeḍ.","button_startSession":"Bdu tiɣimit","button_stopSession":"Ḥbes tiɣimit","desc_inProgressIntro":"Tiɣimit n umɛawen s srid tetteddu akka tura.","desc_shareLink":"Bḍu aseɣwen-agi akked medden ukud tebɣiḍ ad temɛawaneḍ:","desc_exitSession":"Aḥbas n tɣimit ad k (m) yesenser si texxamt, maca ad tizmireḍ ad tkemmeleḍ amahil s usayes, s wudem adigan. Ẓer belli ayagi ur yettḥaz ara imdanen-nniḍen, yerna ad izmiren ad kemmelen ad mɛawanen di tsuffeɣt-nnsen.","shareTitle":"Rnu ɣer tɣimit n umɛiwen s srid n Excalidraw"},"errorDialog":{"title":"Tuccḍa"},"exportDialog":{"disk_title":"Sekles deg uḍebsi","disk_details":"Sekles isefka n usayes deg ufaylu ansi ara tizmireḍ ad d-tketreḍ areḍqal.","disk_button":"Sekles deg ufaylu","link_title":"Aseɣwen n beṭṭu","link_details":"Sifeḍ am useɣwen n tɣuri kan.","link_button":"Sifeḍ deg useɣwen","excalidrawplus_description":"Sekles asayes-inek•inem di tallunt n umahil Excalidraw+.","excalidrawplus_button":"Sifeḍ","excalidrawplus_exportError":"Ulamek asifeḍ ɣer Excalidraw+ akka tura..."},"helpDialog":{"blog":"Ɣeṛ ablug-nneɣ","click":"ssit","deepSelect":"Afran s telqey","deepBoxSelect":"Afran s telqey s tnaka, yerna ad tyrewleḍ i uzuɣer","curvedArrow":"Taneccabt izelgen","curvedLine":"Izirig izelgen","documentation":"Tasemlit","doubleClick":"ssit snat n tikkal","drag":"zuɣer","editor":"Amaẓrag","editLineArrowPoints":"Ẓreg tinqiḍin n yizirig/taneccabt","editText":"Ẓreg aḍris/rnu tabzimt","github":"Tufiḍ-d ugur? Azen-aɣ-d","howto":"Ḍfer imniren-nneɣ","or":"neɣ","preventBinding":"Seḥbes tuqqna n tneccabin","tools":"Ifecka","shortcuts":"Inegzumen n unasiw","textFinish":"Fak asiẓreg (amaẓrag n uḍris)","textNewLine":"Rnu ajerriḍ amaynut (amaẓrag n uḍris)","title":"Tallelt","view":"Tamuɣli","zoomToFit":"Simɣur akken ad twliḍ akk iferdisen","zoomToSelection":"Simɣur ɣer tefrayt","toggleElementLock":"Sekkeṛ/kkes asekker i tefrayt","movePageUpDown":"Smutti asebter d asawen/akessar","movePageLeftRight":"Smutti asebter s azelmaḍ/ayfus"},"clearCanvasDialog":{"title":"Sfeḍ taɣzut n usuneɣ"},"publishDialog":{"title":"Suffeɣ-d tamkarḍit","itemName":"Isem n uferdis","authorName":"Isem n umeskar","githubUsername":"Isem n useqdac n GitHub","twitterUsername":"Isem n useqdac n Twitter","libraryName":"Isem n temkarḍit","libraryDesc":"Aglam n temkarḍit","website":"Asmel n web","placeholder":{"authorName":"Isem neɣ isem n useqdac inek•inem","libraryName":"Isem n temkarḍit-inek•inem","libraryDesc":"Aglam n temkarḍit-inek•inem akken ad tɛiwneḍ medden ad fehmen aseqdec-inec","githubHandle":"Isem n useqdac n GitHub ( d anefrunan) akken ad tizmireḍ ad tisẓrigeḍ tamkarḍit ticki tuzneḍ-tt i uselken","twitterHandle":"Isem n useqdac n Twitter (d anefrunan) akken ad nẓer anwa ara nsenmer deg udellel di Twitter","website":"Aseɣwen ɣer usmel-inek•inem neɣ wayeḍ (d anefrunan)"},"errors":{"required":"Yettwasra","website":"Sekcem URL ameɣtu"},"noteDescription":"Azen tamkarḍit-inek•inem akken ad teddu di akaram azayez n temkarḍiti yimdanen-nniḍen ara isqedcen deg wunuɣen-nnsen.","noteGuidelines":"Tamkarḍit teḥwaǧ ad tettwaqbel s ufus qbel. Ma ulac uɣilif ɣer iwellihen send ad tazneḍ. Tesriḍ amiḍan n GitHub akken ad tmmeslayeḍ yerna ad tgeḍ ibeddilen ma yelaq, maca mačči d ayen yettwaḥetmen.","noteLicense":"Mi tuzneḍ ad tqebleḍ akken tamkarḍit ad d-teffeɣ s Turagt MIT, ayen yebɣan ad d-yini belli yal yiwen izmer ad ten-iseqdec war tilist.","noteItems":"Yal aferdis n temkarḍit isefk ad isɛu isem-is i yiman-is akken ad yili wamek ara yettusizdeg. Iferdisen-agi n temkarḍit ad ddun:","atleastOneLibItem":"Ma ulac uɣilif fern ma drus yiwen n uferdis n temkarḍit akken ad tebduḍ","republishWarning":"Tamawt: kra n yiferdisen yettwafernen ttwacerḍen ffeɣen-d/ttwaznen. Isefk ad talseḍ tuzzna n yiferdisen anagar mi ara tleqqemeḍ tamkarḍit neɣ tuzzna yellan."},"publishSuccessDialog":{"title":"Tamkarḍit tettwazen","content":"Tanemmirt-ik•im {{authorName}}. Tamkarḍit-inek•inem tettwazen i weselken. Tzemreḍ ad tḍefreḍ aẓayerdagi"},"confirmDialog":{"resetLibrary":"Ales awennez n temkarḍit","removeItemsFromLib":"Kkes iferdisen yettafernen si temkarḍit"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Unuɣen-inek (m) ttuwgelhnen seg yixef s ixef dɣa iqeddacen n Excalidraw werǧin ad ten-walin. ","link":"Amagrad ɣef uwgelhen ixef s ixef di Excalidraw"},"stats":{"angle":"Tiɣmeṛt","element":"Aferdis","elements":"Iferdisen","height":"Tattayt","scene":"Asayes","selected":"Yettwafren","storage":"Aḥraz","title":"","total":"Aɣrud","version":"Alqem","versionCopy":"Sit ad tneɣleḍ","versionNotAvailable":"Ur inuḥ ulqem","width":"Tehri"},"toast":{"addedToLibrary":"Yettwarna ɣer temkarḍit","copyStyles":"Iɣunab yettwaneɣlen.","copyToClipboard":"Yettwaɣel ɣer tecfawit.","copyToClipboardAsPng":"{{exportSelection}} yettwanɣel ɣer tecfawit am PNG\\n({{exportColorScheme}})","fileSaved":"Afaylu yettwasekles.","fileSavedToFilename":"Yettwasekles di {filename}","canvas":"taɣzut n usuneɣ","selection":"tafrayt","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Afrawan","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Akk isefka-inek•inem ttwakelsen s wudem adigan deg yiminig-inek•inem.","center_heading_plus":"Tebɣiḍ ad tedduḍ ɣer Excalidraw+ deg umḍiq?","menuHint":"Asifeḍ, ismenyifen, tutlayin, ..."},"defaults":{"menuHint":"Asifeḍ, ismenyifen, d wayen-nniḍen...","center_heading":"","toolbarHint":"Fren afecku tebduḍ asuneɣ!","helpHint":"Inegzumen akked tallelt"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js b/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js new file mode 100644 index 0000000..e1a7259 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/kk-KZ-json-2224f237cc93465f126f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[22],{8972:function(e){e.exports=JSON.parse('{"labels":{"paste":"Қою","pasteAsPlaintext":"","pasteCharts":"Диаграммаларды қою","selectAll":"Бәрін таңдау","multiSelect":"","moveCanvas":"","cut":"Қию","copy":"Көшіру","copyAsPng":"","copyAsSvg":"","copyText":"","bringForward":"","sendToBack":"","bringToFront":"","sendBackward":"","delete":"Жою","copyStyles":"Стильдерді көшіру","pasteStyles":"Стильдерді қою","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"Нұсқар ұштары","arrowhead_none":"Жоқ","arrowhead_arrow":"Нұсқар","arrowhead_bar":"Тосқауыл","arrowhead_dot":"Нүкте","arrowhead_triangle":"","fontSize":"Қаріп өлшемі","fontFamily":"Қаріп тобы","addWatermark":"","handDrawn":"","normal":"Қалыпты","code":"","small":"Кіші","medium":"Орта","large":"Үлкен","veryLarge":"Өте үлкен","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"","bold":"","left":"Солға","center":"Ортаға","right":"Оңға","extraBold":"","architect":"","artist":"","cartoonist":"","fileTitle":"Файл атауы","colorPicker":"","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"","language":"Тіл","liveCollaboration":"","duplicateSelection":"Көшірме","untitled":"Атауысыз","name":"","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"Жабу","selectLanguage":"Тілді таңдау","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"Mәзір","done":"Дайын","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"Суретті жүктеу мүмкін болмады. Кейінірек қайталап көріңіз...","fileTooBig":"Файл өте үлкен. Максималды рұқсат етілген көлем {{maxSize}}.","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"Суретті қою","rectangle":"","diamond":"","ellipse":"","arrow":"Нұсқар","line":"","freedraw":"","text":"Мәтін","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Қате"},"exportDialog":{"disk_title":"","disk_details":"Сахна деректерін кейін қайта импорттауға болатын файлға экспорттаңыз.","disk_button":"Файлға сақтау","link_title":"Ортақ сілтеме","link_details":"Тек оқуға арналған сілтеме ретінде экспорттау.","link_button":"Сілтемеге экспорттау","excalidrawplus_description":"Сахнаны өзіңіздің Excalidraw+ жұмыс кеңістігінде сақтаңыз.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Қазіргі уақытта Excalidraw+ үшін экспорттау мүмкін емес..."},"helpDialog":{"blog":"Біздің блогты оқу","click":"шерту","deepSelect":"","deepBoxSelect":"","curvedArrow":"Майысқан нұсқар","curvedLine":"Майысқан сызық","documentation":"Құжаттама","doubleClick":"қос шерту","drag":"апару","editor":"Өңдеу","editLineArrowPoints":"","editText":"","github":"Қате таптыңыз ба? Жолдаңыз","howto":"Біздің нұсқаулықтарды орындаңыз","or":"немесе","preventBinding":"Нұсқарды байланыстыруға жол бермеу","tools":"","shortcuts":"Пернетақта пәрмендері","textFinish":"Өңдеуді аяқтау (мәтіндік редактор)","textNewLine":"Жаңа жолға көшу (мәтіндік редактор)","title":"Көмек","view":"Көру","zoomToFit":"Барлық элементтердің көлеміне сәйкес үлкейту","zoomToSelection":"Таңдалғанды үлкейту","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Сіздің сызбаларыңыз өтпелі шифрлеу арқылы шифрланған, сондықтан Excalidraw серверлері оларды ешқашан көрмейді.","link":"Excalidraw қолданатын өтпелі шифрлеу туралы блог жазбасы"},"stats":{"angle":"Бұрыш","element":"Элемент","elements":"Элементтер","height":"Биіктігі","scene":"Сахна","selected":"Таңдалды","storage":"Сақтау көлемі","title":"","total":"Барлығы","version":"Нұсқа","versionCopy":"Көшіру үшін басыңыз","versionNotAvailable":"Бұл нұсқа қолжетімсіз","width":"Ені"},"toast":{"addedToLibrary":"","copyStyles":"Стильдер көшірілді.","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"Файл сақталды.","fileSavedToFilename":"{filename} сақталды","canvas":"","selection":"таңдау","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js b/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js new file mode 100644 index 0000000..6a5f763 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/km-KH-json-cbe8e2e8d26d30a3175c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6566],{5845:function(e){e.exports=JSON.parse('{"labels":{"paste":"បិទភ្ជាប់","pasteAsPlaintext":"បិទភ្ជាប់ជាអត្ថបទធម្មតា","pasteCharts":"បិទភ្ជាប់តារាង","selectAll":"ជ្រើសរើស​ទាំងអស់","multiSelect":"បន្ថែមធាតុទៅលើការជ្រើសរើស","moveCanvas":"ផ្លាស់ទីបាវ","cut":"កាត់","copy":"ចម្លង","copyAsPng":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ PNG","copyAsSvg":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​ SVG","copyText":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់ជា​អត្ថបទ","bringForward":"នាំយកទៅលើ","sendToBack":"នាំយកទៅក្រោយបង្អស់","bringToFront":"នាំយកទៅលើបង្អស់","sendBackward":"នាំយកទៅក្រោយ","delete":"លុប","copyStyles":"ចម្លងរចនាប័ទ្ម","pasteStyles":"បិទភ្ជាប់រចនាប័ទ្ម","stroke":"ខ្វាច់","background":"ផ្ទៃខាងក្រោយ","fill":"បំពេញ","strokeWidth":"ទទឹងខ្វាច់","strokeStyle":"រចនាប័ទ្មរបស់ខ្វាច់","strokeStyle_solid":"តាន់","strokeStyle_dashed":"ដាច់ៗ","strokeStyle_dotted":"ចំណុចៗ","sloppiness":"រចនាប័ទ្មបន្ទាត់","opacity":"ភាពច្បាស់","textAlign":"តម្រឹមអត្ថបទ","edges":"គែម","sharp":"មុត","round":"រាងមូល","arrowheads":"ក្បាលព្រួញ","arrowhead_none":"គ្មាន","arrowhead_arrow":"ព្រួញ","arrowhead_bar":"របារ","arrowhead_dot":"ចំណុច","arrowhead_triangle":"ត្រីកោណ","fontSize":"ទំហំពុម្ពអក្សរ","fontFamily":"ក្រុម​ពុម្ពអក្សរ","addWatermark":"បន្ថែមវ៉ាត់ធើម៉ាក \\"Made with Excalidraw\\"","handDrawn":"គូរដោយដៃ","normal":"ធម្មតា","code":"កូដ","small":"តូច","medium":"មធ្យម","large":"ធំ","veryLarge":"ធំខ្លាំង","solid":"តាន់","hachure":"Hachure","zigzag":"Zigzag","crossHatch":"បន្ទាត់ឆ្នូតៗ","thin":"ស្តើង","bold":"ដឹត","left":"ខាងឆ្វេង","center":"កណ្ដាល","right":"នៅខាងស្ដាំ","extraBold":"ដិតបន្ថែម","architect":"ស្ថាបត្យករ","artist":"សិល្បៈករ","cartoonist":"អ្នកគំនូរជីវចល","fileTitle":"ឈ្មោះ​ឯកសារ","colorPicker":"ឧបករណ៍​ជ្រើស​ពណ៌","canvasColors":"ប្រើលើបាវ","canvasBackground":"ផ្ទៃខាងក្រោយបាវ","drawingCanvas":"តំបន់គំនូរ","layers":"ស្រទាប់","actions":"សកម្មភាព","language":"ភាសា","liveCollaboration":"សហការគ្នាផ្ទាល់...","duplicateSelection":"ចម្លង","untitled":"គ្មានឈ្មោះ","name":"ឈ្មោះ","yourName":"ឈ្មោះ​របស់​អ្នក","madeWithExcalidraw":"បង្កើតជាមួយ Excalidraw","group":"ការជ្រើសរើសជាក្រុម","ungroup":"បំបែកក្រុមការជ្រើសរើសជាក្រុម","collaborators":"អ្នកសហការ","showGrid":"បង្ហាញក្រឡាចត្រង្គ","addToLibrary":"បន្ថែមទៅបណ្ណាល័យ","removeFromLibrary":"លុបចេញពីបណ្ណាល័យ","libraryLoadingMessage":"កំពុងផ្ទុកបណ្ណាល័យ...","libraries":"រកមើលបណ្ណាល័យ","loadingScene":"កំពុង​ផ្ទុក​ស៊ីន...","align":"តម្រឹម","alignTop":"តម្រឹមផ្នែកខាងលើ","alignBottom":"តម្រឹមផ្នែកខាងក្រោម","alignLeft":"​តម្រឹម​ឆ្វេង","alignRight":"តម្រឹម​ស្តាំ","centerVertically":"កណ្តាល​បញ្ឈរ","centerHorizontally":"កណ្តាល​ផ្ដេក","distributeHorizontally":"ចែកចាយផ្ដេក","distributeVertically":"ចែកចាយបញ្ឈរ","flipHorizontal":"ត្រឡប់​ដោយ​ផ្ដេក","flipVertical":"ត្រឡប់​ដោយ​បញ្ឈរ","viewMode":"ម៉ូដ​បង្ហាញ","share":"ចែករំលែក","showStroke":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ខ្វាច់","showBackground":"បង្ហាញឧបករណ៍ជ្រើសរើសពណ៌ផ្ទៃខាងក្រោយ","toggleTheme":"បិទ/បើកប្រធានបទ","personalLib":"បណ្ណាល័យផ្ទាល់ខ្លួន","excalidrawLib":"បណ្ណាល័យ Excalidraw","decreaseFontSize":"បន្ថយទំហំពុម្ពអក្សរ","increaseFontSize":"បង្កើនទំហំពុម្ពអក្សរ","unbindText":"ស្រាយអត្ថបទ","bindText":"ភ្ជាប់អត្ថបទទៅប្រអប់","createContainerFromText":"រុំអត្ថបទក្នុងប្រអប់មួយ","link":{"edit":"កែតំណភ្ជាប់","editEmbed":"","create":"បង្កើតតំណភ្ជាប់","createEmbed":"","label":"តំណ","labelEmbed":"","empty":""},"lineEditor":{"edit":"កែសម្រួលបន្ទាត់","exit":"ចាកចេញពីការកែសម្រួលបន្ទាត់"},"elementLock":{"lock":"ចាក់សោ","unlock":"ដោះសោ","lockAll":"ចាក់សោទាំងអស់","unlockAll":"ដោះសោទាំងអស់"},"statusPublished":"ត្រូវបានបោះពុម្ពផ្សាយ","sidebarLock":"ទុករបារចំហៀងបើក","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"មិនទាន់មានធាតុបន្ថែមទេ...","hint_emptyLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ ឬដំឡើងបណ្ណាល័យពីឃ្លាំងសាធារណៈខាងក្រោម។","hint_emptyPrivateLibrary":"ជ្រើសរើសធាតុនៅលើបាវដើម្បីបន្ថែមវានៅទីនេះ"},"buttons":{"clearReset":"កំណត់បាវឡើងវិញ","exportJSON":"នាំចេញជាឯកសារ","exportImage":"នាំរូបភាពចេញ","export":"រក្សាទុក​នៅ...","copyToClipboard":"ចម្លងទៅក្តារតម្បៀតខ្ទាស់","save":"រក្សាទុកទៅឯកសារបច្ចុប្បន្ន","saveAs":"រក្សាទុក​ជា","load":"បើក","getShareableLink":"យកតំណដែលអាចចែករំលែកបាន","close":"បិទ","selectLanguage":"រើសភាសា","scrollBackToContent":"រំកិលត្រឡប់ទៅមាតិកាវិញ","zoomIn":"ពង្រីក","zoomOut":"បង្រួម","resetZoom":"កំណត់ការពង្រីកឡើងវិញ","menu":"ម៉ឺនុយ","done":"រួចរាល់","edit":"កែ","undo":"ត្រឡប់វិញ","redo":"ធ្វើ​វិញ","resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","createNewRoom":"បង្កើតបន្ទប់ថ្មី","fullScreen":"ពេញ​អេក្រង់","darkMode":"ម៉ូដងងឹត","lightMode":"ម៉ូដភ្លឺ","zenMode":"ម៉ូត Zen","objectsSnapMode":"","exitZenMode":"ចេញពី zen​ ម៉ូត","cancel":"បោះបង់","clear":"សម្អាត","remove":"ដកចេញ","embed":"","publishLibrary":"បោះពុម្ពផ្សាយ","submit":"ដាក់​ស្នើ","confirm":"បញ្ជាក់","embeddableInteractionButton":""},"alerts":{"clearReset":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","couldNotCreateShareableLink":"មិនអាចបង្កើតតំណដែលអាចចែករំលែកបានទេ។","couldNotCreateShareableLinkTooBig":"មិន​អាច​បង្កើត​តំណ​ដែល​អាច​ចែក​រំលែក​បាន៖ ស៊ីន​ធំ​ពេក","couldNotLoadInvalidFile":"មិនអាចផ្ទុកឯកសារមិនត្រឹមត្រូវបានទេ។","importBackendFailed":"ការនាំចូលពីម៉ាស៊ីនមេបានបរាជ័យ។","cannotExportEmptyCanvas":"មិនអាចនាំចេញបាវទទេបានទេ។","couldNotCopyToClipboard":"មិនអាចចម្លងទៅក្ដារតម្បៀតខ្ទាស់បានទេ។","decryptFailed":"មិនអាចឌិគ្រីបទិន្នន័យបានទេ។","uploadedSecurly":"ការបង្ហោះត្រូវបានការពារដោយការអ៊ិនគ្រីបពីចុងដល់ចប់ មានន័យថា ទាំងម៉ាស៊ីនមេរបស់ Excalidraw ឬភាគីទីបីមិនអាចអានខ្លឹមសារបានទេ។","loadSceneOverridePrompt":"ការផ្ទុកគំនូរខាងក្រៅនឹងជំនួសមាតិកាដែលមានស្រាប់របស់អ្នក។ តើអ្នកចង់បន្តទេ?","collabStopOverridePrompt":"ការបញ្ឈប់សម័យនឹងសរសេរជាន់លើគំនូរដែលបានរក្សាទុកនៅលើកុំព្យូទ័ររបស់អ្នកពីមុន។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?\\n\\n(ប្រសិនបើអ្នកចង់រក្សាគំនូរដែលនៅលើកុំព្យូទ័ររបស់អ្នក គ្រាន់តែបិទផ្ទាំងកម្មវិធីរុករក។)","errorAddingToLibrary":"មិនអាចបន្ថែមធាតុទៅបណ្ណាល័យបានទេ","errorRemovingFromLibrary":"មិនអាចលុបធាតុចេញពីបណ្ណាល័យបានទេ","confirmAddLibrary":"វានឹងបន្ថែមរូបរាង {{numShapes}} ទៅបណ្ណាល័យរបស់អ្នក។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","imageDoesNotContainScene":"រូបភាពនេះហាក់ដូចជាមិនមានទិន្នន័យស៊ីនណាមួយទេ។ តើអ្នកបានបើកការបង្កប់ស៊ីននៅពេលនាំចេញទេ?","cannotRestoreFromImage":"មិនអាចស្ដារស៊ីនពីឯកសាររូបភាពនេះបានទេ","invalidSceneUrl":"មិន​អាច​នាំចូល​ស៊ីន​ពី URL ដែល​បាន​ផ្តល់​ឱ្យ​ទេ។ វាមានទម្រង់ខុស ឬមិនមានទិន្នន័យ Excalidraw JSON ដែលត្រឹមត្រូវ។","resetLibrary":"វានឹងសម្អាតបាវទាំងមូល។ តើ​អ្នក​ប្រាកដ​ឬ​អត់?","removeItemsFromsLibrary":"តើអ្នកប្រាកដថាចង់លុប {{count}} ធាតុចេញពីបណ្ណាល័យទេ?","invalidEncryptionKey":"សោអ៊ីនគ្រីបត្រូវតែមាន 22 តួអក្សរ។ ការសហការផ្ទាល់ត្រូវបានបិទ។","collabOfflineWarning":"គ្មានការតភ្ជាប់អ៊ីនធឺណិត។\\nការផ្លាស់ប្តូររបស់អ្នកនឹងមិនត្រូវបានរក្សាទុកទេ!"},"errors":{"unsupportedFileType":"ប្រភេទឯកសារមិនត្រូវបានគាំទ្រទេ។","imageInsertError":"មិនអាចបញ្ចូលរូបភាពបានទេ។ សូម​ព្យាយាម​ម្តង​ទៀត​នៅ​ពេល​ក្រោយ……","fileTooBig":"ឯកសារធំពេក។ ទំហំអតិបរមាដែលអនុញ្ញាតគឺ {{maxSize}}។","svgImageInsertError":"មិនអាចបញ្ចូលរូបភាព SVG បានទេ។ ស្លាក SVG ហាក់ដូចជាមិនត្រឹមត្រូវ។","failedToFetchImage":"","invalidSVGString":"SVG មិន​ត្រឹមត្រូវ។","cannotResolveCollabServer":"មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេសហការផ្ទាល់បានទេ។ សូមផ្ទុកទំព័រឡើងវិញ ហើយព្យាយាមម្តងទៀត។","importLibraryError":"មិនអាចផ្ទុកបណ្ណាល័យបានទេ។","collabSaveFailed":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ។ ប្រសិនបើបញ្ហានៅតែបន្តកើតមាន​ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","collabSaveFailed_sizeExceeded":"មិនអាចរក្សាទុកទៅម៉ាស៊ីនមេបានទេ, ផ្ទាំងបាវហាក់ដូចជាធំពេក។ អ្នកគួរតែរក្សាទុកឯកសាររបស់អ្នកនៅលើកុំព្យូទ័ររបស់អ្នកសិន ដើម្បីធានាថាការងាររបស់អ្នកមិនបាត់បង់។","brave_measure_text_error":{"line1":"អ្នកហាក់ដូចជាកំពុងប្រើប្រាស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត Brave ជាមួយនឹងការកំណត់ ការពារស្នាមម្រាមដៃយ៉ាងធ្ងន់ធ្ងរ ត្រូវបានបើក។","line2":"វាអាចបណ្តាលឱ្យមានការបំបែក ធាតុអត្ថបទ នៅក្នុងគំនូររបស់អ្នក។","line3":"យើងណែនាំយ៉ាងមុតមាំឱ្យបិទការកំណត់នេះ។ អ្នកអាចអនុវត្តតាម ជំហានទាំងនេះ ដើម្បីបិទការកំណត់នេះ។","line4":"ប្រសិនបើការបិទការកំណត់នេះមិនបានជួសជុលការបង្ហាញធាតុអត្ថបទទេ សូមដាក់ issue នៅលើ GitHub ឬរាយការណ៍នៅលើ Discord របស់យើង"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ការជ្រើសរើស","image":"បញ្ចូលរូបភាព","rectangle":"ចតុ​កោណ​កែង​","diamond":"ពេជ្រ","ellipse":"ពងក្រពើ","arrow":"ព្រួញ","line":"បន្ទាត់","freedraw":"គូរ","text":"អត្ថបទ","library":"បណ្ណាល័យ","lock":"រក្សារឧបករណ៍ដែលបានជ្រើសរើសបន្ទាប់ពីគូររួច","penMode":"របៀបប៊ិច - ជៀសវាងការប៉ះ","link":"បន្ថែម/ធ្វើបច្ចុប្បន្នភាពតំណភ្ជាប់សម្រាប់រូបរាងដែលបានជ្រើសរើស","eraser":"ជ័រលុប","frame":"","embeddable":"","laser":"","hand":"ដៃ (panning tool)","extraTools":""},"headings":{"canvasActions":"សកម្មភាពបាវ","selectedShapeActions":"សកម្មភាពរបស់រាងដែលបានជ្រើសរើស","shapes":"រាង"},"hints":{"canvasPanning":"ដើម្បីផ្លាស់ទីបាវ សូមសង្កត់កង់កណ្ដុរឬគ្រាប់ចុចspacebarខណៈពេលកំពុងអូស ឬប្រើឧបករណ៍ដៃ។","linearElement":"ចុចដើម្បីបង្កើតចំណុចច្រើន អូសដើម្បីបង្កើតបន្ទាត់មួយ","freeDraw":"ចុច​ហើយ​អូស លែង​ពេល​រួចរាល់","text":"គន្លឹះ៖ អ្នកក៏អាចបន្ថែមអត្ថបទដោយចុចពីរដងនៅកន្លែងណាមួយដោយប្រើឧបករណ៍ជ្រើសរើស","embeddable":"","text_selected":"ចុចពីរដង ឬចុច ENTER ដើម្បីកែសម្រួលអត្ថបទ","text_editing":"ចុច Escape ឬ CtrlOrCmd +ENTER ដើម្បីបញ្ចប់ការកែសម្រួល","linearElementMulti":"ចុចលើចំណុចចុងក្រោយ ឬចុច Esc/Enter ដើម្បីបញ្ចប់","lockAngle":"អ្នកអាចសង្កត់ Shift ដើម្បីកំណត់មុំ","resize":"អ្នកអាចសង្កត់ SHIFT ដើម្បីបងំ្ខឲមានសមាមាត្រ ខណៈពេលដែលប្តូរទំហំ\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","resizeImage":"អ្នកអាចប្តូរទំហំរូបភាពដោយសេរីដោយសង្កត់ SHIFT,\\nសង្កត់ ALT ដើម្បីប្តូរទំហំពីកណ្តាល","rotate":"អ្នកអាចសង្កត់ Shift ខណៈពេលកំពុងបង្វិល ដើម្បីកម្រិតមុំ","lineEditor_info":"សង្កត់ CtrlOrCmd ហើយចុចពីរដង ឬចុច CtrlOrCmd + Enter ដើម្បីកែសម្រួលចំណុច","lineEditor_pointSelected":"ចុច Delete ដើម្បីលុបចំណុច(ច្រើន)\\nCtrlOrCmd+D ដើម្បីចម្លង, ឬអូសដើម្បីផ្លាស់ទី","lineEditor_nothingSelected":"ជ្រើសរើសចំណុចដែលត្រូវកែសម្រួល (សង្កត់ SHIFT ដើម្បីជ្រើសរើសច្រើនចំណុច)\\nឬ សង្កត់ Alt ហើយចុចដើម្បីបន្ថែមចំណុចថ្មី។","placeImage":"ចុចដើម្បីដាក់រូបភាព ឬចុចហើយអូសដើម្បីកំណត់ទំហំរបស់រូបភាពដោយដៃ","publishLibrary":"បោះពុម្ពផ្សាយបណ្ណាល័យផ្ទាល់ខ្លួនរបស់អ្នក","bindTextToElement":"ចុច Enter ដើម្បីបន្ថែមអត្ថបទ","deepBoxSelect":"សង្កត់ CtrlOrCmd ដើម្បីជ្រើសរើសយ៉ាងជ្រៅ និងជៀសវាងការអូស","eraserRevert":"សង្កត់ Alt ដើម្បីដកការជ្រើសរើសធាតុដែលត្រូវបានសម្គាល់សម្រាប់ការលុប","firefox_clipboard_write":"បើកមុខងារនេះដោយកំណត់ទង់ \\"dom.events.asyncClipboard.clipboardItem\\" ទៅ \\"true\\" \\nដើម្បីផ្លាស់ប្តូរទង់កម្មវិធីរុករកនៅក្នុង Firefox សូមចូលទៅកាន់ទំព័រ \\"about:config\\"។","disableSnapping":""},"canvasError":{"cannotShowPreview":"មិនអាចបង្ហាញការមើលជាមុនបាន","canvasTooBig":"បាវអាចមានទំហំធំពេក។","canvasTooBigTip":"គន្លឹះ៖ ព្យាយាមផ្លាស់ទីធាតុដែលឆ្ងាយបំផុតឱ្យទៅជិតគ្នាបន្តិច។"},"errorSplash":{"headingMain":"បានជួបប្រទះកំហុសមួយ។ សូមព្យាយាម ។","clearCanvasMessage":"ប្រសិនបើការផ្ទុកឡើងវិញមិនអាចដោះស្រាយកំហុសបានទេ សូមសាកល្បង ","clearCanvasCaveat":" នេះនឹងបណ្តាលឱ្យបាត់បង់ការងារ ","trackedToSentry":"កំហុសជាមួយលេខសម្គាល់ {{eventId}} ត្រូវបានតាមដាននៅលើប្រព័ន្ធរបស់យើង។","openIssueMessage":"យើងមានការប្រុងប្រយ័ត្នខ្លាំងណាស់ក្នុងការមិនបញ្ចូលព័ត៌មានរបស់ស៊ីនរបស់អ្នកទៅលើកំហុស។ ប្រសិនបើស៊ីនរបស់អ្នកមិនមានលក្ខណៈឯកជនទេ សូមពិចារណាបន្តទៅកាន់ សូមបញ្ចូលព័ត៌មានខាងក្រោមដោយចម្លង និងបិទភ្ជាប់វាទៅក្នុងបញ្ហារបស់ GitHub។","sceneContent":"មាតិកាបាវ៖"},"roomDialog":{"desc_intro":"អ្នកអាចអញ្ជើញអ្នកដទៃឱ្យសហការជាមួយអ្នកនៅលើស៊ីនបច្ចុប្បន្ន។","desc_privacy":"កុំបារម្ភ វគ្គប្រើការអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះអ្វីដែលអ្នកគូរនឹងនៅតែជាឯកជន។ សូម្បីតែម៉ាស៊ីនមេរបស់យើងក៏នឹងមិនអាចមើលឃើញអ្វីដែលអ្នកកំពុងធ្វើដែរ។","button_startSession":"ចាប់ផ្តើមវគ្គ","button_stopSession":"បញ្ឈប់វគ្គ","desc_inProgressIntro":"វគ្គសហការផ្ទាល់ឥឡូវនេះកំពុងដំណើរការ។","desc_shareLink":"ចែករំលែកតំណនេះជាមួយអ្នកដែលអ្នកចង់សហការជាមួយ៖","desc_exitSession":"ការបញ្ឈប់វគ្គនេះនឹងផ្តាច់អ្នកចេញពីបន្ទប់ ប៉ុន្តែអ្នកនឹងនៅតែអាចបន្តប្រើបាវនៅលើកុំព្យូទ័ររបស់អ្នក។ សូមចំណាំថាវានឹងមិនប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតទេ​ ហើយពួកគេនឹងនៅតែអាចបន្តសហការលើកំណែរបស់ពួកគេ។","shareTitle":"ចូលរួមវគ្គសហការផ្ទាល់នៅលើ Excalidraw"},"errorDialog":{"title":"មានកំហុស"},"exportDialog":{"disk_title":"រក្សាទុកទៅថាស","disk_details":"នាំចេញទិន្នន័យរបស់ស៊ីនជាឯកសារដែលអ្នកអាចនាំចូលនៅពេលក្រោយ។","disk_button":"រក្សាទុកក្នុងឯកសារ","link_title":"តំណដែលអាចចែករំលែកបាន","link_details":"នាំចេញជាតំណបានតែមើលឬអាន។","link_button":"នាំចេញជាតំណ","excalidrawplus_description":"រក្សាទុកស៊ីនទៅកន្លែងធ្វើការ Excalidraw+ របស់អ្នក។","excalidrawplus_button":"នាំចេញ","excalidrawplus_exportError":"មិនអាចនាំចេញទៅ Excalidraw+ បានទេនៅពេលនេះ..."},"helpDialog":{"blog":"អានប្លក់របស់យើង","click":"ចុច","deepSelect":"ការជ្រើសរើសជាក្រុម","deepBoxSelect":"ជ្រើសរើសជាក្រុម និង ជៀសវាងការអូសទាញផ្លាស់ទី","curvedArrow":"ព្រួញកោង","curvedLine":"ព្រួញកោង","documentation":"ឯកសារ","doubleClick":"ចុច​ពីរ​ដង","drag":"អូស","editor":"កម្មវិធីនិពន្ធ","editLineArrowPoints":"កែសម្រួលចំណុចនៃបន្ទាត់ ឬព្រួញ","editText":"បន្ថែម ឬកែសម្រួលអត្ថបទ","github":"រកឃើញបញ្ហា? ដាក់ស្នើ","howto":"ឯកសារជំនួយ","or":"ឬ","preventBinding":"ទប់ស្កាត់ការចងព្រួញ","tools":"ឧបករណ៍","shortcuts":"ផ្លូវកាត់ក្តារចុច","textFinish":"បញ្ចប់ការកែសម្រួល (កម្មវិធីនិពន្ធអត្ថបទ)","textNewLine":"ចុះបន្ទាត់ (កម្មវិធីនិពន្ធអត្ថបទ)","title":"ជំនួយ","view":"បង្ហាញ","zoomToFit":"ធ្វើមាត្រដ្ឋានឱ្យសមនឹងធាតុទាំងអស់។","zoomToSelection":"ពង្រីកទៅការជ្រើសរើស","toggleElementLock":"ចាក់សោ/ដោះសោការជ្រើសរើស","movePageUpDown":"ផ្លាស់ទីទំព័រឡើងលើ/ចុះក្រោម","movePageLeftRight":"ផ្លាស់ទីទំព័រទៅឆ្វេង/ស្ដាំ"},"clearCanvasDialog":{"title":"សម្អាតបាវ"},"publishDialog":{"title":"បោះពុម្ពបណ្ណាល័យ","itemName":"ឈ្មោះ​ធាតុ","authorName":"ឈ្មោះអ្នកនិពន្ធ","githubUsername":"ឈ្មោះអ្នកប្រើ GitHub","twitterUsername":"ឈ្មោះអ្នកប្រើ Twitter","libraryName":"ឈ្មោះបណ្ណាល័យ","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យ","website":"គេហទំព័រ","placeholder":{"authorName":"ឈ្មោះរបស់អ្នក ឬឈ្មោះអ្នកប្រើប្រាស់","libraryName":"ឈ្មោះបណ្ណាល័យរបស់អ្នក","libraryDesc":"ការពិពណ៌នាអំពីបណ្ណាល័យរបស់អ្នក នឹងអនុញ្ញាតឱ្យអ្នក​ផ្សេងយល់ពីការប្រើប្រាស់របស់វា។","githubHandle":"ឈ្មោះអ្នកប្រើ GitHub (ជាជម្រើស) ដូច្នេះអ្នកអាចកែសម្រួលបណ្ណាល័យបាននៅពេលដាក់ស្នើសម្រាប់ការពិនិត្យ","twitterHandle":"ឈ្មោះអ្នកប្រើប្រាស់ Twitter (ជាជម្រើស) ដូច្នេះយើងដឹងថាអ្នកណាដែលត្រូវផ្តល់ក្រេឌីតនៅពេលផ្សព្វផ្សាយតាម Twitter","website":"ភ្ជាប់ទៅគេហទំព័រផ្ទាល់ខ្លួនរបស់អ្នក ឬគេហទំព័រផ្សេងទៀត (ជាជម្រើស)"},"errors":{"required":"ត្រូវបានទាមទារ","website":"សូមវាយបញ្ចូល URL ​ដែលត្រឹមត្រូវ"},"noteDescription":"ដាក់ស្នើបណ្ណាល័យរបស់អ្នកដើម្បីដាក់បញ្ចូលក្នុង ឃ្លាំងបណ្ណាល័យសាធារណៈ សម្រាប់ឲ្យអ្នកផ្សេងប្រើក្នុងគំនូររបស់ពួកគេ។","noteGuidelines":"បណ្ណាល័យត្រូវតែអនុម័តដោយដៃជាមុនសិន។ សូមអាន ការណែនាំ មុនពេលដាក់ស្នើ។ ការប្រាស្រ័យទាក់ទងជាបន្តបន្ទាប់ និងការផ្លាស់ប្តូរបណ្ណាល័យទាមទារឱ្យអ្នកមានគណនី GitHub ប៉ុន្តែមិនត្រូវបានទាមទារយ៉ាងតឹងរ៉ឹងទេ។","noteLicense":"តាមរយៈការដាក់ស្នើ អ្នកយល់ព្រមថាបណ្ណាល័យនឹងត្រូវបានបោះពុម្ពផ្សាយក្រោម អាជ្ញាប័ណ្ណ MIT ដែលមានន័យយ៉ាងខ្លី អ្នកណាក៏អាចប្រើប្រាស់វាបានដោយគ្មានការរឹតត្បិត។","noteItems":"ធាតុនីមួយៗនៅក្នុងបណ្ណាល័យត្រូវតែមានឈ្មោះផ្ទាល់ខ្លួនដើម្បីយើងអាចត្រងវាបាន។ ធាតុខាងក្រោមនឹងត្រូវបានរួមបញ្ចូល:","atleastOneLibItem":"សូមជ្រើសរើសយ៉ាងហោចណាស់ធាតុបណ្ណាល័យមួយដើម្បីចាប់ផ្តើម","republishWarning":"ចំណាំ៖ ធាតុដែលត្រូវបានជ្រើសរើសមួយចំនួនត្រូវបានសម្គាល់ថាបានបោះពុម្ព/បញ្ជូនរួចរាល់ហើយ។ អ្នកគួរតែបញ្ជូនធាតុឡើងវិញនៅពេលដែលធ្វើបច្ចុប្បន្នភាពបណ្ណាល័យដែលមានស្រាប់ ឬការបញ្ជូន។"},"publishSuccessDialog":{"title":"បណ្ណាល័យត្រូវបានដាក់ស្នើ","content":"សូមអរគុណ {{authorName}}។ បណ្ណាល័យរបស់អ្នកត្រូវបានបញ្ជូនមកពិនិត្យ។ សូមចុច ទីនេះ ដើម្បីតាមដានស្ថានភាពនៃការដាក់ស្នើនេះ។"},"confirmDialog":{"resetLibrary":"កំណត់បណ្ណាល័យឡើងវិញ","removeItemsFromLib":"លុបធាតុដែលបានជ្រើសរើសចេញពីបណ្ណាល័យ"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"គំនូររបស់អ្នកត្រូវបានអ៊ិនគ្រីបពីចុងដល់ចប់ ដូច្នេះម៉ាស៊ីនមេរបស់ Excalidraw នឹងមិនឃើញពួកវាទេ។","link":"ប្លក់ផុសលើការអ៊ិនគ្រីបពីចុងដល់ចុងក្នុង Excalidraw"},"stats":{"angle":"មុំ","element":"ធាតុ","elements":"ធាតុច្រើន","height":"កម្ពស់","scene":"ស៊ីន","selected":"បានជ្រើសរើស","storage":"ការផ្ទុក","title":"ស្ថិតិសម្រាប់ nerds","total":"សរុប","version":"ជំនាន់:","versionCopy":"ចុចដើម្បីចម្លង","versionNotAvailable":"កំណែមិនអាចប្រើបាន","width":"ទទឹង​"},"toast":{"addedToLibrary":"បានបន្ថែមទៅបណ្ណាល័យ","copyStyles":"រចនាប័ទ្មត្រូវបានចម្លង។","copyToClipboard":"បានចម្លងទៅក្ដារតម្បៀតខ្ទាស់។","copyToClipboardAsPng":"បានចម្លង {{exportSelection}} ទៅក្ដារតម្បៀតខ្ទាស់ជា PNG\\n({{exportColorScheme}})","fileSaved":"ឯកសារត្រូវបានរក្សាទុក។","fileSavedToFilename":"បានរក្សាទុកនៅក្នុង {filename}","canvas":"តំបន់គំនូរ","selection":"ការជ្រើសរើស","pasteAsSingleElement":"ប្រើ {{shortcut}} ដើម្បីបិទភ្ជាប់ជាធាតុតែមួយ,\\nឬបិទភ្ជាប់ទៅក្នុងកម្មវិធីនិពន្ធអត្ថបទដែលមានស្រាប់","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ថ្លាមើលធ្លុះ","black":"ពណ៍ខ្មៅ","white":"ពណ៌ស","red":"ពណ៌ក្រហម","pink":"ពណ៌ផ្កាឈូក","grape":"ពណ៌ទំពាំងបាយជូរ","violet":"ពណ៌ស្វាយ","gray":"ពណ៌ប្រផេះ","blue":"ពណ៌ខៀវ","cyan":"ពណ៌ផ្ទៃមេឃ","teal":"ពណ៌​ខៀវបៃតង","green":"ពណ៌បៃតង","yellow":"ពណ៌លឿង","orange":"ពណ៌ទឹកក្រូច","bronze":"ពណ៌សំរិទ្ធ"},"welcomeScreen":{"app":{"center_heading":"ទិន្នន័យទាំងអស់របស់អ្នក ត្រូវបានរក្សាទុកនៅក្នុង browser របស់អ្នក ។","center_heading_plus":"តើ​អ្នក​ចង់​ទៅ Excalidraw+ ​វិញ ឬ មែន?","menuHint":"នាំចេញ ចំណូលចិត្ត ភាសា ..."},"defaults":{"menuHint":"ការនាំចេញ ចំណូលចិត្ត និង ច្រើនទៀត...","center_heading":"ងាយស្រួល ។ ធ្វើ ។​ ដ្យាក្រាម ។","toolbarHint":"ជ្រើសរើសឧបករណ៍មួយ និង ចាប់ផ្តើមគូរ!","helpHint":"ផ្លូវកាត់ &​ ជំនួយ"}},"colorPicker":{"mostUsedCustomColors":"ពណ៌ផ្ទាល់ខ្លួនដែលប្រើច្រើនបំផុត","colors":"ពណ៌","shades":"ស្រមោល","hexCode":"លេខកូដ hex","noShades":"មិនមានស្រមោលសម្រាប់ពណ៌នេះទេ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js b/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js new file mode 100644 index 0000000..ea7c316 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ko-KR-json-c2387972637d47f15765.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6844],{7596:function(e){e.exports=JSON.parse('{"labels":{"paste":"붙여넣기","pasteAsPlaintext":"일반 텍스트로 붙여넣기","pasteCharts":"차트 붙여넣기","selectAll":"전체 선택","multiSelect":"선택 영역에 추가하기","moveCanvas":"캔버스 이동","cut":"잘라내기","copy":"복사","copyAsPng":"클립보드로 PNG 이미지 복사","copyAsSvg":"클립보드로 SVG 이미지 복사","copyText":"클립보드로 텍스트 복사","bringForward":"앞으로 가져오기","sendToBack":"맨 뒤로 보내기","bringToFront":"맨 앞으로 가져오기","sendBackward":"뒤로 보내기","delete":"삭제","copyStyles":"스타일 복사하기","pasteStyles":"스타일 붙여넣기","stroke":"선 색상","background":"배경색","fill":"채우기","strokeWidth":"선 굵기","strokeStyle":"선","strokeStyle_solid":"실선","strokeStyle_dashed":"파선","strokeStyle_dotted":"점선","sloppiness":"대충 긋기","opacity":"불투명도","textAlign":"텍스트 정렬","edges":"가장자리","sharp":"뾰족하게","round":"둥글게","arrowheads":"화살촉","arrowhead_none":"없음","arrowhead_arrow":"화살표","arrowhead_bar":"막대","arrowhead_dot":"점","arrowhead_triangle":"삼각형","fontSize":"글자 크기","fontFamily":"글꼴","addWatermark":"\\"Made with Excalidraw\\" 추가","handDrawn":"손글씨","normal":"일반","code":"코드","small":"작게","medium":"보통","large":"크게","veryLarge":"매우 크게","solid":"단색","hachure":"평행선","zigzag":"지그재그","crossHatch":"교차선","thin":"얇게","bold":"굵게","left":"왼쪽","center":"가운데","right":"오른쪽","extraBold":"매우 굵게","architect":"건축가","artist":"예술가","cartoonist":"만화가","fileTitle":"파일 이름","colorPicker":"색상 선택기","canvasColors":"캔버스에서 사용되었음","canvasBackground":"캔버스 배경","drawingCanvas":"캔버스 그리기","layers":"레이어","actions":"동작","language":"언어","liveCollaboration":"실시간 협업...","duplicateSelection":"복제","untitled":"제목 없음","name":"이름","yourName":"이름 입력","madeWithExcalidraw":"Made with Excalidraw","group":"그룹 생성","ungroup":"그룹 해제","collaborators":"공동 작업자","showGrid":"그리드 보기","addToLibrary":"라이브러리에 추가","removeFromLibrary":"라이브러리에서 제거","libraryLoadingMessage":"라이브러리 불러오는 중…","libraries":"라이브러리 찾기","loadingScene":"화면 불러오는 중…","align":"정렬","alignTop":"상단 정렬","alignBottom":"하단 정렬","alignLeft":"왼쪽 정렬","alignRight":"오른쪽 정렬","centerVertically":"수직으로 중앙 정렬","centerHorizontally":"수평으로 중앙 정렬","distributeHorizontally":"수평으로 분배","distributeVertically":"수직으로 분배","flipHorizontal":"좌우반전","flipVertical":"상하반전","viewMode":"보기 모드","share":"공유","showStroke":"윤곽선 색상 선택기 열기","showBackground":"배경 색상 선택기 열기","toggleTheme":"테마 전환","personalLib":"개인 라이브러리","excalidrawLib":"Excalidraw 라이브러리","decreaseFontSize":"폰트 사이즈 줄이기","increaseFontSize":"폰트 사이즈 키우기","unbindText":"텍스트 분리","bindText":"텍스트를 컨테이너에 결합","createContainerFromText":"텍스트를 컨테이너에 담기","link":{"edit":"링크 수정하기","editEmbed":"링크 & 임베드 수정하기","create":"링크 만들기","createEmbed":"링크 & 임베드 만들기","label":"링크","labelEmbed":"링크 & 임베드","empty":"링크를 지정하지 않았습니다"},"lineEditor":{"edit":"선 수정하기","exit":"선 편집기 종료"},"elementLock":{"lock":"잠금","unlock":"잠금 해제","lockAll":"모두 잠금","unlockAll":"모두 잠금 해제"},"statusPublished":"게시됨","sidebarLock":"사이드바 유지","selectAllElementsInFrame":"프레임의 모든 요소 선택","removeAllElementsFromFrame":"프레임의 모든 요소 삭제","eyeDropper":"캔버스에서 색상 고르기"},"library":{"noItems":"추가된 아이템 없음","hint_emptyLibrary":"캔버스 위에서 아이템을 선택하여 여기에 추가를 하거나, 아래의 공용 저장소에서 라이브러리를 설치하세요.","hint_emptyPrivateLibrary":"캔버스 위에서 아이템을 선택하여 여기 추가하세요."},"buttons":{"clearReset":"캔버스 초기화","exportJSON":"파일로 내보내기","exportImage":"이미지 내보내기","export":"다른 이름으로 저장...","copyToClipboard":"클립보드로 복사","save":"현재 파일에 저장","saveAs":"다른 이름으로 저장","load":"열기","getShareableLink":"공유 가능한 링크 생성","close":"닫기","selectLanguage":"언어 선택","scrollBackToContent":"콘텐츠 영역으로 스크롤하기","zoomIn":"확대","zoomOut":"축소","resetZoom":"확대/축소 초기화","menu":"메뉴","done":"완료","edit":"수정","undo":"실행 취소","redo":"다시 실행","resetLibrary":"라이브러리 리셋","createNewRoom":"방 만들기","fullScreen":"전체화면","darkMode":"다크 모드","lightMode":"밝은 모드","zenMode":"젠 모드","objectsSnapMode":"다른 요소들에 정렬시키기","exitZenMode":"젠 모드 종료하기","cancel":"취소","clear":"지우기","remove":"삭제","embed":"임베딩 토글","publishLibrary":"게시하기","submit":"제출","confirm":"확인","embeddableInteractionButton":"클릭하여 상호작용"},"alerts":{"clearReset":"모든 작업 내용이 초기화됩니다. 계속하시겠습니까?","couldNotCreateShareableLink":"공유 가능한 링크를 생성할 수 없습니다.","couldNotCreateShareableLinkTooBig":"공유 가능한 링크를 생성할 수 없습니다: 화면이 너무 큽니다.","couldNotLoadInvalidFile":"유효하지 않은 파일입니다.","importBackendFailed":"서버로부터 불러 오지 못했습니다.","cannotExportEmptyCanvas":"빈 캔버스를 내보낼 수 없습니다.","couldNotCopyToClipboard":"클립보드로 복사하지 못했습니다.","decryptFailed":"데이터를 복호화하지 못했습니다.","uploadedSecurly":"업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.","loadSceneOverridePrompt":"외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?","collabStopOverridePrompt":"협업 세션을 종료하면 로컬 저장소에 있는 그림이 협업 세션의 그림으로 대체됩니다. 진행하겠습니까?\\n\\n(로컬 저장소에 있는 그림을 유지하려면 현재 브라우저 탭을 닫아주세요.)","errorAddingToLibrary":"아이템을 라이브러리에 추가 할수 없습니다","errorRemovingFromLibrary":"라이브러리에서 아이템을 삭제할수 없습니다","confirmAddLibrary":"{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?","imageDoesNotContainScene":"이 이미지는 화면 데이터를 포함하고 있지 않은 것 같습니다. 내보낼 때 화면을 첨부하도록 설정하셨나요?","cannotRestoreFromImage":"이미지 파일에서 화면을 복구할 수 없었습니다","invalidSceneUrl":"제공된 URL에서 화면을 가져오는데 실패했습니다. 주소가 잘못되거나, 유효한 Excalidraw JSON 데이터를 포함하고 있지 않은 것일 수 있습니다.","resetLibrary":"당신의 라이브러리를 초기화 합니다. 계속하시겠습니까?","removeItemsFromsLibrary":"{{count}}개의 아이템을 라이브러리에서 삭제하시겠습니까?","invalidEncryptionKey":"암호화 키는 반드시 22글자여야 합니다. 실시간 협업이 비활성화됩니다.","collabOfflineWarning":"인터넷에 연결되어 있지 않습니다.\\n변경 사항들이 저장되지 않습니다!"},"errors":{"unsupportedFileType":"지원하지 않는 파일 형식 입니다.","imageInsertError":"이미지를 삽입할 수 없습니다. 나중에 다시 시도 하십시오","fileTooBig":"파일이 너무 큽니다. 최대 크기는 {{maxSize}} 입니다.","svgImageInsertError":"SVG 이미지를 삽입하지 못했습니다. SVG 문법이 유효하지 않은 것 같습니다.","failedToFetchImage":"이미지를 가져오는데 실패했습니다.","invalidSVGString":"유효하지 않은 SVG입니다.","cannotResolveCollabServer":"협업 서버에 접속하는데 실패했습니다. 페이지를 새로고침하고 다시 시도해보세요.","importLibraryError":"라이브러리를 불러오지 못했습니다.","collabSaveFailed":"데이터베이스에 저장하지 못했습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","collabSaveFailed_sizeExceeded":"데이터베이스에 저장하지 못했습니다. 캔버스가 너무 큰 거 같습니다. 문제가 계속 된다면, 작업 내용을 잃지 않도록 로컬 저장소에 저장해 주세요.","brave_measure_text_error":{"line1":"귀하께서는 강력한 지문 차단 설정이 활성화된 Brave browser를 사용하고 계신 것 같습니다.","line2":"이 기능으로 인해 화이트보드의 텍스트 요소들이 손상될 수 있습니다.","line3":"저희는 해당 기능을 비활성화하는 것을 강력히 권장 드립니다. 비활성화 방법에 대해서는 이 게시글을 참고해주세요.","line4":"만약 이 설정을 껐음에도 텍스트 요소들이 올바르게 표시되지 않는다면, 저희 Github에 이슈를 올려주시거나 Discord로 알려주세요."},"libraryElementTypeError":{"embeddable":"임베드 요소들은 라이브러리에 추가할 수 없습니다.","image":"라이브러리에 이미지 삽입 기능은 곧 지원될 예정입니다!"}},"toolBar":{"selection":"선택","image":"이미지 삽입","rectangle":"사각형","diamond":"다이아몬드","ellipse":"타원","arrow":"화살표","line":"선","freedraw":"그리기","text":"텍스트","library":"라이브러리","lock":"선택된 도구 유지하기","penMode":"펜 모드 - 터치 방지","link":"선택한 도형에 대해서 링크를 추가/업데이트","eraser":"지우개","frame":"프레임 도구","embeddable":"웹 임베드","laser":"레이저 포인터","hand":"손 (패닝 도구)","extraTools":"다른 도구"},"headings":{"canvasActions":"캔버스 동작","selectedShapeActions":"선택된 모양 동작","shapes":"모양"},"hints":{"canvasPanning":"캔버스를 옮기려면 마우스 휠이나 스페이스바를 누르고 드래그하거나, 손 도구를 사용하기","linearElement":"여러 점을 연결하려면 클릭하고, 직선을 그리려면 바로 드래그하세요.","freeDraw":"클릭 후 드래그하세요. 완료되면 놓으세요.","text":"팁: 선택 툴로 아무 곳이나 더블 클릭해 텍스트를 추가할 수도 있습니다.","embeddable":"클릭 및 드래그하여 웹사이트 임베드 만들기","text_selected":"더블 클릭 또는 ENTER를 눌러서 텍스트 수정","text_editing":"ESC나 CtrlOrCmd+ENTER를 눌러서 수정을 종료하기","linearElementMulti":"마지막 지점을 클릭하거나 Esc 또는 Enter 키를 눌러 완료하세요.","lockAngle":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","resize":"SHIFT 키를 누르면서 조정하면 크기의 비율이 제한됩니다.\\nALT를 누르면서 조정하면 중앙을 기준으로 크기를 조정합니다.","resizeImage":"SHIFT를 눌러서 자유롭게 크기를 변경하거나,\\nALT를 눌러서 중앙을 고정하고 크기를 변경하기","rotate":"SHIFT 키를 누르면서 회전하면 각도를 제한할 수 있습니다.","lineEditor_info":"꼭짓점을 수정하려면 CtrlOrCmd 키를 누르고 더블 클릭을 하거나 CtrlOrCmd + Enter를 누르세요.","lineEditor_pointSelected":"Delete 키로 꼭짓점을 제거하거나,\\nCtrlOrCmd+D 로 복제하거나, 드래그 해서 이동시키기","lineEditor_nothingSelected":"꼭짓점을 선택해서 수정하거나 (SHIFT를 눌러서 여러개 선택),\\nAlt를 누르고 클릭해서 새로운 꼭짓점 추가하기","placeImage":"클릭해서 이미지를 배치하거나, 클릭하고 드래그해서 사이즈를 조정하기","publishLibrary":"당신만의 라이브러리를 게시하기","bindTextToElement":"Enter 키를 눌러서 텍스트 추가하기","deepBoxSelect":"CtrlOrCmd 키를 눌러서 깊게 선택하고, 드래그하지 않도록 하기","eraserRevert":"Alt를 눌러서 삭제하도록 지정된 요소를 되돌리기","firefox_clipboard_write":"이 기능은 설정에서 \\"dom.events.asyncClipboard.clipboardItem\\" 플래그를 \\"true\\"로 설정하여 활성화할 수 있습니다. Firefox에서 브라우저 플래그를 수정하려면, \\"about:config\\" 페이지에 접속하세요.","disableSnapping":"CtrlOrCmd 키를 눌러서 다른 요소와의 정렬 무시하기"},"canvasError":{"cannotShowPreview":"미리보기를 볼 수 없습니다","canvasTooBig":"캔버스가 너무 큽니다.","canvasTooBigTip":"팁: 멀리 있는 요소들을 좀 더 가까이로 붙여 보세요."},"errorSplash":{"headingMain":"오류가 발생했습니다. ","clearCanvasMessage":"새로고침으로 해결되지 않을 경우, ","clearCanvasCaveat":" 작업 내용을 잃게 됩니다 ","trackedToSentry":"오류 {{eventId}} 가 시스템에서 발견되었습니다.","openIssueMessage":"저희는 화면 정보를 오류에 포함하지 않도록 매우 주의하고 있습니다. 혹시 화면에 민감한 내용이 없다면 이곳에 업로드를 고려해주세요. 아래 정보를 GitHub 이슈에 복사 및 붙여넣기해 주세요.","sceneContent":"화면 내용:"},"roomDialog":{"desc_intro":"현재 화면에 공동 작업자를 초대해 협업할 수 있습니다.","desc_privacy":"안심하세요, 세션은 종단 간 암호화를 사용하므로 당신의 작업은 비공개로 유지되며 서버조차도 작업 내용을 알 수 없습니다.","button_startSession":"세션 시작","button_stopSession":"세션 중단","desc_inProgressIntro":"실시간 협업 세션이 진행 중입니다.","desc_shareLink":"공동 작업자에게 이 링크를 공유하세요.","desc_exitSession":"세션을 중단하면 연결은 끊어지나 작업을 이어갈 수 있습니다. 이 작업은 다른 작업자에게 영향을 미치지 않으며 각자의 공동 작업은 계속 유지됩니다.","shareTitle":"Excalidraw의 실시간 협업 세션에 참가하기"},"errorDialog":{"title":"오류"},"exportDialog":{"disk_title":"디스크에 저장","disk_details":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다.","disk_button":"파일로 저장","link_title":"공유 가능한 링크 생성","link_details":"읽기 전용 링크로 내보냅니다.","link_button":"링크로 내보내기","excalidrawplus_description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다.","excalidrawplus_button":"내보내기","excalidrawplus_exportError":"지금은 Excalidraw+로 내보낼 수 없습니다..."},"helpDialog":{"blog":"블로그 읽어보기","click":"클릭","deepSelect":"깊게 선택","deepBoxSelect":"영역을 깊게 선택하고, 드래그하지 않도록 하기","curvedArrow":"곡선 화살표","curvedLine":"곡선","documentation":"설명서","doubleClick":"더블 클릭","drag":"드래그","editor":"에디터","editLineArrowPoints":"직선 / 화살표 꼭짓점 수정","editText":"텍스트 수정 / 라벨 추가","github":"문제 제보하기","howto":"가이드 참고하기","or":"또는","preventBinding":"화살표가 붙지 않게 하기","tools":"도구","shortcuts":"키보드 단축키","textFinish":"편집 완료 (텍스트 에디터)","textNewLine":"줄바꿈(텍스트 에디터)","title":"도움말","view":"보기","zoomToFit":"모든 요소가 보이도록 확대/축소","zoomToSelection":"선택 영역으로 확대/축소","toggleElementLock":"선택한 항목을 잠금/잠금 해제","movePageUpDown":"페이지 움직이기 위/아래","movePageLeftRight":"페이지 움직이기 좌/우"},"clearCanvasDialog":{"title":"캔버스 지우기"},"publishDialog":{"title":"라이브러리 게시하기","itemName":"아이템 이름","authorName":"저자명","githubUsername":"깃허브 사용자이름","twitterUsername":"트위터 사용자이름","libraryName":"라이브러리 이름","libraryDesc":"라이브러리 설명","website":"웹사이트","placeholder":{"authorName":"이름 또는 사용자명","libraryName":"당신의 라이브러리 이름","libraryDesc":"사람들에게 라이브러리의 용도를 알기 쉽게 설명해주세요","githubHandle":"GitHub 사용자명 (선택), 제출한 뒤에도 심사를 위해서 라이브러리를 수정할 때 사용됩니다","twitterHandle":"Twitter 사용자명 (선택), Twitter를 통해서 홍보할 때 제작자를 밝히기 위해 사용됩니다","website":"개인 웹사이트나 다른 어딘가의 링크 (선택)"},"errors":{"required":"필수사항","website":"유효한 URL을 입력하세요"},"noteDescription":"당신의 라이브러리를 제출하여 공개 라이브러리 저장소에서 다른 사람들의 그림에 사용할 수 있도록 하세요.","noteGuidelines":"라이브러리는 먼저 수동으로 승인되어야 합니다. 제출하기 전에 가이드라인을 먼저 읽어보세요. 의견을 공유하거나 변경사항을 만들기 위해선 GitHub 계정이 필요하지만, 반드시 필요하진 않습니다.","noteLicense":"제출함으로써, 당신은 라이브러리가 MIT 라이선스 하에 배포됨을, 즉 아무나 제약 없이 사용할 수 있음에 동의합니다.","noteItems":"각각의 라이브러리는 분류할 수 있도록 고유한 이름을 가져야 합니다. 다음의 라이브러리 항목이 포함됩니다:","atleastOneLibItem":"최소한 하나의 라이브러리를 선택해주세요","republishWarning":"참고: 선택된 항목의 일부는 이미 제출/게시되었습니다. 기존의 라이브러리나 제출물을 업데이트하는 경우에만 제출하세요."},"publishSuccessDialog":{"title":"라이브러리 제출됨","content":"{{authorName}}님 감사합니다. 당신의 라이브러리가 심사를 위해 제출되었습니다. 진행 상황을여기에서 확인하실 수 있습니다."},"confirmDialog":{"resetLibrary":"라이브러리 리셋","removeItemsFromLib":"선택한 항목을 라이브러리에서 제거"},"imageExportDialog":{"header":"이미지 내보내기","label":{"withBackground":"배경","onlySelected":"선택한 항목만","darkMode":"다크 모드","embedScene":"화면을 담기","scale":"크기","padding":"여백"},"tooltip":{"embedScene":"화면 정보가 내보내는 PNG/SVG 파일에 저장되어 이후에 파일에서 화면을 복구할 수 있습니다. 파일 크기가 증가합니다."},"title":{"exportToPng":"PNG로 내보내기","exportToSvg":"SVG로 내보내기","copyPngToClipboard":"클립보드로 PNG 복사"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"클립보드로 복사"}},"encrypted":{"tooltip":"그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다.","link":"Excalidraw의 종단 간 암호화에 대한 블로그 포스트"},"stats":{"angle":"각도","element":"요소","elements":"요소","height":"높이","scene":"화면","selected":"선택됨","storage":"저장공간","title":"덕후들을 위한 통계","total":"합계","version":"버전","versionCopy":"복사하려면 클릭","versionNotAvailable":"해당 버전 사용 불가능","width":"너비"},"toast":{"addedToLibrary":"라이브러리에 추가되었습니다","copyStyles":"스타일 복사.","copyToClipboard":"클립보드로 복사.","copyToClipboardAsPng":"{{exportSelection}}를 클립보드에 PNG로 복사했습니다\\n({{exportColorScheme}})","fileSaved":"파일이 저장되었습니다.","fileSavedToFilename":"{filename} 로 저장되었습니다","canvas":"캔버스","selection":"선택한 요소","pasteAsSingleElement":"단일 요소로 붙여넣거나, 기존 텍스트 에디터에 붙여넣으려면 {{shortcut}} 을 사용하세요.","unableToEmbed":"이 URL의 임베딩이 허용되지 않았습니다. GitHub에 이슈를 남겨서 이 URL이 화이트리스트에 등재될 수 있도록 요청하세요","unrecognizedLinkFormat":"임베딩하려는 링크의 형식이 잘못된 것 같습니다. 원본 사이트에서 제공하는 \\"임베딩\\" 텍스트를 그대로 붙여 넣어 주세요"},"colors":{"transparent":"투명","black":"블랙","white":"화이트","red":"레드","pink":"핑크","grape":"그레이프","violet":"바이올렛","gray":"그레이","blue":"블루","cyan":"시안","teal":"틸","green":"그린","yellow":"옐로우","orange":"오렌지","bronze":"브론즈"},"welcomeScreen":{"app":{"center_heading":"모든 데이터는 브라우저에 안전하게 저장됩니다.","center_heading_plus":"대신 Excalidraw+로 이동하시겠습니까?","menuHint":"내보내기, 설정, 언어, ..."},"defaults":{"menuHint":"내보내기, 설정, 등등...","center_heading":"간단하게 만드는 다이어그램.","toolbarHint":"도구를 선택하고, 그리세요!","helpHint":"단축키 & 도움말"}},"colorPicker":{"mostUsedCustomColors":"가장 많이 사용된 색상들","colors":"색상","shades":"색조","hexCode":"Hex 코드","noShades":"사용할 수 있는 색조가 없음"},"overwriteConfirm":{"action":{"exportToImage":{"title":"이미지로 내보내기","button":"이미지로 내보내기","description":"나중에 다시 불러올 수 있도록 화면 데이터를 이미지로 내보냅니다."},"saveToDisk":{"title":"디스크에 저장","button":"디스크에 저장","description":"나중에 다시 불러올 수 있도록 화면 데이터를 내보냅니다."},"excalidrawPlus":{"title":"Excalidraw+","button":"Excalidraw+로 내보내기","description":"화면을 당신의 Excalidraw+ 작업 공간으로 저장합니다."}},"modal":{"loadFromFile":{"title":"파일에서 불러오기","button":"파일에서 불러오기","description":"파일을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."},"shareableLink":{"title":"주소에서 불러오기","button":"컨텐츠를 덮어쓰기","description":"외부 작업물을 불러오면 현재 작성된 데이터를 덮어쓰게 됩니다.

다음 옵션 중 하나를 선택하여 작업물을 백업해 둘 수 있습니다."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js b/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js new file mode 100644 index 0000000..5a5864b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ku-TR-json-bafa8865ed7002bb249e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3031],{2508:function(e){e.exports=JSON.parse('{"labels":{"paste":"دانانەوە","pasteAsPlaintext":"دایبنێ وەک دەقی سادە","pasteCharts":"دانانەوەی خشتەکان","selectAll":"دیاریکردنی هەموو","multiSelect":"زیادکردنی بۆ دیاریکراوەکان","moveCanvas":"تابلۆ بجوڵێنە","cut":"بڕین","copy":"لەبەرگرتنەوە","copyAsPng":"PNGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyAsSvg":"SVGلەبەرگرتنەوە بۆ تەختەنووس وەک","copyText":"لەبەرگرتنەوە بۆ تەختەنووس وەک نوسین","bringForward":"بهێنە پێشتر","sendToBack":"بنێرە دواوە","bringToFront":"بهێنە پێشەوە","sendBackward":"بنێرە دواتر","delete":"سڕینەوە","copyStyles":"لەبەرگرتنەوەی ستایل","pasteStyles":"دانانەوەی ستایل","stroke":"هێڵکار","background":"پاشبنەما","fill":"پڕکردنەوە","strokeWidth":"پانی هێڵکاری","strokeStyle":"ستایلی هێڵکاری","strokeStyle_solid":"سادە","strokeStyle_dashed":"پچڕ پچڕ","strokeStyle_dotted":"خاڵدار","sloppiness":"لێژی","opacity":"ڕوونی","textAlign":"ڕێکخستنی دەق","edges":"لێوارەکان","sharp":"تیژ","round":"چەماوە","arrowheads":"سەرەتیر","arrowhead_none":"هیچیان","arrowhead_arrow":"تیر","arrowhead_bar":"هێڵ","arrowhead_dot":"خاڵ","arrowhead_triangle":"سێگۆشە","fontSize":"قەبارەی فۆنت","fontFamily":"خێزانی فۆنت","addWatermark":"زیادبکە \\"Made with Excalidraw\\"","handDrawn":"دەست کێشراو","normal":"ئاسایی","code":"کۆد","small":"بچووک","medium":"ناوەند","large":"گه‌وره‌","veryLarge":"زۆر گه‌وره‌","solid":"سادە","hachure":"هاچور","zigzag":"زیگزاگ","crossHatch":"کرۆس هاتچ","thin":"تەنک","bold":"تۆخ","left":"چەپ","center":"ناوه‌ند","right":"ڕاست","extraBold":"زۆر تۆخ","architect":"تەلارساز","artist":"هونەرمەند","cartoonist":"کارتۆنی","fileTitle":"ناوی فایل","colorPicker":"ڕەنگ هەڵگر","canvasColors":"بەکارهاتووە لەسەر تابلۆ","canvasBackground":"پاشبنەمای تابلۆ","drawingCanvas":"کێشانی تابلۆ","layers":"چینەکان","actions":"کردارەکان","language":"زمان","liveCollaboration":"هاوکاریکردنی زیندو...","duplicateSelection":"لەبەرگرتنەوە","untitled":"بێ ناونیشان","name":"ناو","yourName":"ناوەکەت","madeWithExcalidraw":"دروستکراوە بە Excalidraw","group":"دیاریکردنی گروپ","ungroup":"گروپی دیاریکراوەکان لابەرە","collaborators":"هاوکارەکان","showGrid":"گرید نیشانبدە","addToLibrary":"زیادکردن بۆ کتێبخانە","removeFromLibrary":"لابردن لە کتێبخانە","libraryLoadingMessage":"...بارکردنی کتێبخانە","libraries":"گەڕانی کتێبخانە","loadingScene":"...بارکردنی دیمەنەکە","align":"لاچەنکردن","alignTop":"لاچەنکردن بۆ سەرەوە","alignBottom":"لاچەنکردن بۆ خوارەوە","alignLeft":"لاچەنکردن بۆ چەپ","alignRight":"لاچەنکردن بۆ ڕاست","centerVertically":"بە ستونی ناوەند بکە","centerHorizontally":"بە ئاسۆی ناوەند بکە","distributeHorizontally":"بە ئاسۆی دابەشی بکە","distributeVertically":"بە ستونی دابەشی بکە","flipHorizontal":"هەڵگەڕانەوەی ئاسۆیی","flipVertical":"هەڵگەڕانەوەی ستونی","viewMode":"دۆخی بینین","share":"هاوبەشی پێکردن","showStroke":"ڕەنگهەڵگری هێڵکار نیشانبدە","showBackground":"ڕەنگهەڵگری باکگراوند نیشانبدە","toggleTheme":"دۆخی ڕوکار بگۆڕە","personalLib":"کتێبخانەی کەسی","excalidrawLib":"کتێبخانەی Excalidraw","decreaseFontSize":"کەمکردنەوەی قەبارەی فۆنت","increaseFontSize":"زایدکردنی قەبارەی فۆنت","unbindText":"دەقەکە جیابکەرەوە","bindText":"دەقەکە ببەستەوە بە کۆنتەینەرەکەوە","createContainerFromText":"دەق لە چوارچێوەیەکدا بپێچە","link":{"edit":"دەستکاریکردنی بەستەر","editEmbed":"","create":"دروستکردنی بەستەر","createEmbed":"","label":"بەستەر","labelEmbed":"","empty":""},"lineEditor":{"edit":"دەستکاری کردنی دێڕ","exit":"دەرچوون لە دەستکاریکەری دێڕ"},"elementLock":{"lock":"قفڵکردن","unlock":"کردنەوە","lockAll":"قفڵکردنی هەموو","unlockAll":"کردنەوەی قفلی هەمووی"},"statusPublished":"بڵاوکراوەتەوە","sidebarLock":"هێشتنەوەی شریتی لا بە کراوەیی","selectAllElementsInFrame":"هەموو توخمەکانی ناو چوارچێوەکە دیاری بکە","removeAllElementsFromFrame":"هەموو توخمەکانی ناو چوارچێوەکە لابەرە","eyeDropper":"ڕەنگێک لەسەر تابلۆکە هەڵبژێرە"},"library":{"noItems":"هێشتا هیچ بڕگەیەک زیاد نەکراوە...","hint_emptyLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت، یان کتێبخانەیەک لە کۆگا گشتیەکەوە دابمەزرێنە، لە خوارەوە.","hint_emptyPrivateLibrary":"شتێک لەسەر تابلۆ هەڵبژێرە بۆ ئەوەی لێرە زیادی بکەیت."},"buttons":{"clearReset":"تابلۆکە وەک سەرەتا لێبکەوە","exportJSON":"هەناردەکردن بۆ فایل","exportImage":"وێنە هەناردە بکە...","export":"پاشەکەوت بکە بۆ...","copyToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس","save":"پاشەکەوت بکە بۆ فایلی بەردەست","saveAs":"پاشەکەوتکردن وەک","load":"بکەرەوە","getShareableLink":"بەستەری هاوبەشیپێکردن بەدەستبهێنە","close":"داخستن","selectLanguage":"دیاریکردنی زمان","scrollBackToContent":"گەڕاندنەوە بۆ ناوەڕۆک","zoomIn":"نزیک خستنەوە","zoomOut":"دوورخستنەوە","resetZoom":"ڕێستکردنی زووم","menu":"پێڕست","done":"تەواو","edit":"دەستکاری کردن","undo":"گه‌ڕانه‌وه‌ بۆ پێشوو","redo":"گه‌ڕانه‌وه‌ بۆ داهاتوو","resetLibrary":"ڕێکخستنەوەی کتێبخانە","createNewRoom":"ژوورێکی نوێ دروست بکە","fullScreen":"پڕ بە شاشە","darkMode":"دۆخی تاریک","lightMode":"دۆخی ڕووناک","zenMode":"دۆخی زێن","objectsSnapMode":"","exitZenMode":"بەجێهێشتنی دۆخی زێن","cancel":"هەڵوەشاندنەوە","clear":"خاوێنکردنەوە","remove":"لابردن","embed":"","publishLibrary":"بڵاوکردنەوە","submit":"پێشکەشکردن","confirm":"دوپاتکردنەوە","embeddableInteractionButton":""},"alerts":{"clearReset":"ئەمە هەموو تابلۆکە خاوێن دەکاتەوە، دڵنیایت؟","couldNotCreateShareableLink":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت","couldNotCreateShareableLinkTooBig":"نەتوانرا بەستەری هاوبەشیپێکردن دروستبکرێت: دیمەنەکە زۆر گەورەیە","couldNotLoadInvalidFile":"ناتوانرا باربکرێت، فایلەکە دروستنییە","importBackendFailed":"هاوردەکردن لە پاشکۆکە سەرکەوتوو نەبوو.","cannotExportEmptyCanvas":"ناتوانرێت تابلۆی بەتاڵ هەناردەبکرێت.","couldNotCopyToClipboard":"ناتوانرا لەبەربگیرێتەوە بۆ تەختەنوس","decryptFailed":"ناتوانرا داتاکان شیبکرێتەوە","uploadedSecurly":"بارکردنەکە بە کۆدکردنی کۆتایی بۆ کۆتایی پارێزراوە، ئەمەش واتە سێرڤەری Excalidraw و لایەنی سێیەم ناتوانن ناوەڕۆکەکە بخوێننەوە.","loadSceneOverridePrompt":"بارکردنی وێنەکێشانی دەرەکی جێگەی ناوەڕۆکی بەردەستت دەگرێتەوە. دەتەوێت بەردەوام بیت؟","collabStopOverridePrompt":"وەستاندنی دانیشتنەکە وێنەکێشانی پێشووت دەنووسێتەوە کە لە ناوخۆدا هەڵگیراوە. ئایا دڵنیایت?\\n\\n(ئەگەر دەتەوێت وێنەکێشانی ناوخۆیی خۆت بهێڵیتەوە، لەبری ئەوە تەنها تابی وێبگەڕەکە دابخە).","errorAddingToLibrary":"نەیتوانی بڕگە زیاد بکات بۆ کتێبخانە","errorRemovingFromLibrary":"نەیتوانی بڕگە لە کتێبخانە بسڕێتەوە","confirmAddLibrary":"ئەمە {{numShapes}} شێوە(ەکان) زیاد دەکات بۆ کتێبخانەکەت. ئایا دڵنیایت?","imageDoesNotContainScene":"وادیارە ئەم وێنەیە هیچ داتایەکی دیمەنی تێدا نییە. ئایا دیمەنی چەسپاندنت لە کاتی هەناردەدا چالاک کردووە؟","cannotRestoreFromImage":"ناتوانرێت دیمەنەکە بگەڕێندرێتەوە لەم فایلە وێنەیە","invalidSceneUrl":"ناتوانێت دیمەنەکە هاوردە بکات لە URL ی دابینکراو. یان نادروستە، یان داتای \\"ئێکسکالیدراو\\" JSON ی دروستی تێدا نییە.","resetLibrary":"ئەمە کتێبخانەکەت خاوێن دەکاتەوە. ئایا دڵنیایت?","removeItemsFromsLibrary":"سڕینەوەی {{count}} ئایتم(ەکان) لە کتێبخانە؟","invalidEncryptionKey":"کلیلی رەمزاندن دەبێت لە 22 پیت بێت. هاوکاری ڕاستەوخۆ لە کارخراوە.","collabOfflineWarning":"هێڵی ئینتەرنێت بەردەست نییە.\\n گۆڕانکارییەکانت سەیڤ ناکرێن!"},"errors":{"unsupportedFileType":"جۆری فایلی پشتگیری نەکراو.","imageInsertError":"نەیتوانی وێنە داخڵ بکات. دواتر هەوڵ بدە","fileTooBig":"فایلەکە زۆر گەورەیە. زۆرترین قەبارەی ڕێگەپێدراو {{maxSize}}}.","svgImageInsertError":"نەیتوانی وێنەی SVG داخڵ بکات. نیشانەی ئێس ڤی جی نادروست دیارە.","failedToFetchImage":"","invalidSVGString":"ئێس ڤی جی نادروستە.","cannotResolveCollabServer":"ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.","importLibraryError":"نەیتوانی کتێبخانە بار بکات","collabSaveFailed":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت. ئەگەر کێشەکان بەردەوام بوون، پێویستە فایلەکەت لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","collabSaveFailed_sizeExceeded":"نەتوانرا لە بنکەدراوەی ڕاژەدا پاشەکەوت بکرێت، پێدەچێت تابلۆکە زۆر گەورە بێت. پێویستە فایلەکە لە ناوخۆدا هەڵبگریت بۆ ئەوەی دڵنیا بیت کە کارەکانت لەدەست نادەیت.","brave_measure_text_error":{"line1":"وادیارە وێبگەڕی Brave بەکاردەهێنیت و ڕێکخستنی Aggressively Block Fingerprinting ـت چالاک کردووە.","line2":"ئەمە ئەکرێ ببێتە هۆی تێکدانی دانە دەقییەکان لە وێنەکێشانەکانتدا.","line3":"ئێمە بە توندی پێشنیاری لەکارخستنی ئەم ڕێکخستنە دەکەین. بۆ لە کارخستنی دەتوانیت بەم هەنگاوانەدا بڕۆیت.","line4":"ئەگەر لەکارخستنی ئەم ڕێکخستنە نەبوە هۆی چاککردنەوەی پێشاندانی دانە دەقییەکان، تکایە کێشەیەک بکەرەوە لەسەر گیتهەبەکەمان، یان بۆمان بنوسە لەسەر دیسکۆرد"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"دەستنیشانکردن","image":"داخڵکردنی وێنە","rectangle":"لاکێشە","diamond":"ئەڵماس","ellipse":"هێلکەیی","arrow":"تیر","line":"هێڵ","freedraw":"کێشان","text":"دەق","library":"کتێبخانە","lock":"ئامێرە دیاریکراوەکان چالاک بهێڵەوە دوای وێنەکێشان","penMode":"شێوازی قەڵەم - دەست لێدان ڕابگرە","link":"زیادکردن/ نوێکردنەوەی لینک بۆ شێوەی دیاریکراو","eraser":"سڕەر","frame":"ئامرازی چوارچێوە","embeddable":"","laser":"","hand":"دەست (ئامرازی پانکردن)","extraTools":"ئامرازی زیاتر"},"headings":{"canvasActions":"کردارەکانی تابلۆ","selectedShapeActions":"کردارەکانی شێوەی دەستنیشانکراو","shapes":"شێوەکان"},"hints":{"canvasPanning":"بۆ جوڵاندنی تابلۆ، ویلی ماوسەکەت یان دوگمەی سپەیس بگرە لەکاتی ڕاکێشاندە، یانیش ئامرازی دەستەکە بەکاربهێنە","linearElement":"کرتە بکە بۆ دەستپێکردنی چەند خاڵێک، ڕایبکێشە بۆ یەک هێڵ","freeDraw":"کرتە بکە و ڕایبکێشە، کاتێک تەواو بوویت دەست هەڵگرە","text":"زانیاری: هەروەها دەتوانیت دەق زیادبکەیت بە دوو کرتەکردن لە هەر شوێنێک لەگەڵ ئامڕازی دەستنیشانکردن","embeddable":"","text_selected":"دووجار کلیک بکە یان ENTER بکە بۆ دەستکاریکردنی دەق","text_editing":"بۆ تەواوکردنی دەستکاریکردنەکە Escape یان Ctrl/Cmd+ENTER بکە","linearElementMulti":"کلیک لەسەر کۆتا خاڵ بکە یان Escape یان Enter بکە بۆ تەواوکردن","lockAngle":"دەتوانیت گۆشە سنووردار بکەیت بە ڕاگرتنی SHIFT","resize":"دەتوانیت ڕێژەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی گۆڕینی قەبارەدا،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","resizeImage":"دەتوانیت بە ئازادی قەبارە بگۆڕیت بە ڕاگرتنی SHIFT،\\nALT ڕابگرە بۆ گۆڕینی قەبارە لە ناوەندەوە","rotate":"دەتوانیت گۆشەکان سنووردار بکەیت بە ڕاگرتنی SHIFT لەکاتی سوڕانەوەدا","lineEditor_info":"یان Ctrl یان Cmd بگرە و دوانە کلیک بکە یانیش پەنجە بنێ بە Ctrl یان Cmd + ئینتەر بۆ دەستکاریکردنی خاڵەکان","lineEditor_pointSelected":"بۆ لابردنی خاڵەکان Delete دابگرە، Ctrl Cmd+D بکە بۆ لەبەرگرتنەوە، یان بۆ جووڵە ڕاکێشان بکە","lineEditor_nothingSelected":"خاڵێک هەڵبژێرە بۆ دەستکاریکردن (SHIFT ڕابگرە بۆ هەڵبژاردنی چەندین)،\\nیان Alt ڕابگرە و کلیک بکە بۆ زیادکردنی خاڵە نوێیەکان","placeImage":"کلیک بکە بۆ دانانی وێنەکە، یان کلیک بکە و ڕایبکێشە بۆ ئەوەی قەبارەکەی بە دەستی دابنێیت","publishLibrary":"کتێبخانەی تایبەت بە خۆت بڵاوبکەرەوە","bindTextToElement":"بۆ زیادکردنی دەق enter بکە","deepBoxSelect":"CtrlOrCmd ڕابگرە بۆ هەڵبژاردنی قووڵ، و بۆ ڕێگریکردن لە ڕاکێشان","eraserRevert":"بۆ گەڕاندنەوەی ئەو توخمانەی کە بۆ سڕینەوە نیشانە کراون، Alt ڕابگرە","firefox_clipboard_write":"ئەم تایبەتمەندییە بە ئەگەرێکی زۆرەوە دەتوانرێت چالاک بکرێت بە ڕێکخستنی ئاڵای \\"dom.events.asyncClipboard.clipboardItem\\" بۆ \\"true\\". بۆ گۆڕینی ئاڵاکانی وێبگەڕ لە فایەرفۆکسدا، سەردانی لاپەڕەی \\"about:config\\" بکە.","disableSnapping":""},"canvasError":{"cannotShowPreview":"ناتوانرێ پێشبینین پیشان بدرێت","canvasTooBig":"تابلۆکە لەوانەیە زۆر گەورەبێت.","canvasTooBigTip":"زانیاری: هەوڵ بدە دوورترین توخمەکان کەمێک لە یەکتر نزیک بکەوە."},"errorSplash":{"headingMain":"تووشی هەڵەیەک بوو. هەوڵ بدە ","clearCanvasMessage":"ئەگەر دووبارە بارکردنەوە کار ناکات، هەوڵبدە ","clearCanvasCaveat":" ئەمە دەبێتە هۆی لەدەستدانی ئەوەی کە کردوتە ","trackedToSentry":"هەڵەکە لەگەڵ ناسێنەری {{eventId}} لەسەر سیستەمەکەمان بەدواداچوونی بۆ کرا.","openIssueMessage":"ئێمە زۆر وریا بووین کە زانیارییەکانی دیمەنەکەت لەسەر هەڵەکە نەخەینەڕوو. ئەگەر دیمەنەکەت تایبەت نییە، تکایە بیر لە بەدواداچوون بکەنەوە بۆ ئێمە تکایە ئەم زانیارییانەی خوارەوە کۆپی بکە و لە بەشی کێشەکانی Github دایبنێ.","sceneContent":"پێکهاتەی ناو دیمەنەکە:"},"roomDialog":{"desc_intro":"دەتوانیت خەڵک بانگهێشت بکەیت بۆ دیمەنی ئێستات بۆ هاوکاری کردن لەگەڵت.","desc_privacy":"نیگەران مەبە، دانیشتنەکە کۆدکردنی کۆتایی بە کۆتایی بەکاردەهێنێت، بۆیە هەرچییەک بکێشیت بە تایبەتی دەمێنێتەوە. تەنانەت سێرڤەرەکەمان ناتوانێت بزانێت کە تۆ چیت دروستکردووە.","button_startSession":"دەستپێکردنی دانیشتن","button_stopSession":"وەستاندنی دانیشتن","desc_inProgressIntro":"دانیشتنی هاوکاری ڕاستەوخۆ ئێستا لە ئارادایە.","desc_shareLink":"هاوبەشکردنی ئەم لینکە لەگەڵ هەر کەسێک کە دەتەوێت هاوکاری بکەیت لەگەڵ:","desc_exitSession":"وەستاندنی دانیشتنەکە پەیوەندیت لەگەڵ ژوورەکە دەپچڕێنێت، بەڵام تۆ دەتوانیت بەردەوام بیت لە کارکردن لەگەڵ دیمەنەکە، لە ناوخۆدا. تێبینی بکە کە ئەمە کاریگەری لەسەر کەسانی تر نابێت، وە ئەوان هێشتا دەتوانن هاوکاری بکەن لەسەر وەشانەکەیان.","shareTitle":"بەشداری بکە لە دانیشتنی هاریکاری ڕاستەوخۆ لە ئێکسکالیدراو"},"errorDialog":{"title":"هه‌ڵه‌ ڕوویدا"},"exportDialog":{"disk_title":"پاشەکەوت بکە لە دیسک","disk_details":"هەناردەکردنی داتای دیمەنەکە بۆ فایلێک کە دواتر دەتوانیت لێی هاوردە بکەیت.","disk_button":"پاشەکەوت بکە بۆ فایل","link_title":"بەستەری هاوبەشیپێکردن","link_details":"ناردن وەک بەستەری تەنها-خوێندنەوە.","link_button":"هەناردەکردن بۆ بەستەر","excalidrawplus_description":"دیمەنەکە لە شوێنی کارکردنی Excalidraw+ هەڵبگرە.","excalidrawplus_button":"هەناردەکردن","excalidrawplus_exportError":"لەم ساتەدا نەتوانرا هەناردە بکرێت بۆ Excalidrow+..."},"helpDialog":{"blog":"بلۆگەکەمان بخوێنەوە","click":"گرتە","deepSelect":"دەستنیشانکردنی قوڵ","deepBoxSelect":"لەناو بۆکسەکەدا بە قووڵی هەڵبژێرە، و ڕێگری لە ڕاکێشان بکە","curvedArrow":"تیری نوشتاوە","curvedLine":"هێڵی نوشتاوە","documentation":"دۆکیومێنتەیشن","doubleClick":"دوو گرتە","drag":"راکێشان","editor":"دەستکاریکەر","editLineArrowPoints":"دەستکاری خاڵەکانی هێڵ/تیر بکە","editText":"دەستکاری دەق بکە / لەیبڵێک زیاد بکە","github":"کێشەیەکت دۆزیەوە؟ پێشکەشکردن","howto":"شوێن ڕینماییەکانمان بکەوە","or":"یان","preventBinding":"ڕێگریبکە لە نوشتاناوەی تیر","tools":"ئامرازەکان","shortcuts":"کورتکراوەکانی تەختەکلیل","textFinish":"تەواوکردنی دەستکاریکردن (دەستکاریکەری دەق)","textNewLine":"زیادکردنی دێڕی نوێ (دەستکاریکەری دەق)","title":"یارماتی","view":"دیمەن","zoomToFit":"زووم بکە بۆ ئەوەی لەگەڵ هەموو توخمەکاندا بگونجێت","zoomToSelection":"زووم بکە بۆ دەستنیشانکراوەکان","toggleElementLock":"قفڵ/کردنەوەی دەستنیشانکراوەکان","movePageUpDown":"لاپەڕەکە بجوڵێنە بۆ سەرەوە/خوارەوە","movePageLeftRight":"لاپەڕەکە بجوڵێنە بۆ چەپ/ڕاست"},"clearCanvasDialog":{"title":"تابلۆکە خاوێن بکەرەوە"},"publishDialog":{"title":"پێشکەشکردنی کتێبخانە","itemName":"ناوی بڕگە","authorName":"ناوی نوسەر","githubUsername":"ناوی بەکارهێنەری Github","twitterUsername":"ناوی بەکارهێنەری Twitter","libraryName":"ناوی کتێبخانە","libraryDesc":"وەسفی کتێبخانە","website":"ماڵپەڕ","placeholder":{"authorName":"ناوەکات یاخود ناوی بەکارهێنەر","libraryName":"ناوی کتێبخانەکەت","libraryDesc":"وەسفی کتێبخانەکەت بۆ یارمەتیدانی خەڵک بۆ تێگەیشتن لە بەکارهێنانی","githubHandle":"ناوی GitHub (ئارەزوومەندانە)، بۆیە دەتوانیت دەستکاری کتێبخانەکە بکەیت کاتێک پێشکەش دەکرێت بۆ پێداچوونەوە","twitterHandle":"ناوی بەکارهێنەری تویتەر (ئارەزوومەندانە)، بۆیە بزانین لەکاتی بانگەشەکردن لە ڕێگەی تویتەرەوە کریدت بۆ کێ بکەین","website":"لینکی ماڵپەڕی تایبەتی خۆت یان شوێنێکی تر (ئارەزومەندانە)"},"errors":{"required":"داواکراوە","website":"URLێکی دروست تێبنووسە"},"noteDescription":"کتێبخانەکەت بنێرە بۆ ئەوەی بخرێتە ناو کۆگای کتێبخانەی گشتیبۆ ئەوەی کەسانی تر لە وێنەکێشانەکانیاندا بەکاری بهێنن.","noteGuidelines":"کتێبخانەکە پێویستە سەرەتا بە دەست پەسەند بکرێت. تکایە بفەرمو بە خوێندنەوەی ڕێنماییەکان پێش پێشکەشکردن. پێویستت بە ئەژمێری GitHub دەبێت بۆ پەیوەندیکردن و گۆڕانکاری ئەگەر داوای لێکرا، بەڵام بە توندی پێویست نییە.","noteLicense":"بە پێشکەشکردن، تۆ ڕەزامەندیت لەسەر بڵاوکردنەوەی کتێبخانەکە بەپێی مۆڵەتی MIT، کە بە کورتی مانای ئەوەیە کە هەرکەسێک دەتوانێت بە بێ سنوور بەکاری بهێنێت","noteItems":"هەر شتێکی کتێبخانە دەبێت ناوی تایبەتی خۆی هەبێت بۆ ئەوەی بتوانرێت فلتەر بکرێت. ئەم بابەتانەی کتێبخانانەی خوارەوە لەخۆدەگرێت:","atleastOneLibItem":"تکایە بەلایەنی کەمەوە یەک بڕگەی کتێبخانە دیاریبکە بۆ دەستپێکردن","republishWarning":"تێبینی: هەندێک لە ئایتمە دیاریکراوەکان نیشانکراون وەک ئەوەی پێشتر بڵاوکراونەتەوە/نێردراون. تەنها پێویستە شتەکان دووبارە پێشکەش بکەیتەوە لە کاتی نوێکردنەوەی کتێبخانەیەکی هەبوو یان پێشکەشکردن."},"publishSuccessDialog":{"title":"کتێبخانە پێشکەش کرا","content":"سوپاس {{authorName}}. کتێبخانەکەت پێشکەش کراوە بۆ پێداچوونەوە. دەتوانیت بەدواداچوون بۆ دۆخەکە بکەیتلێرە"},"confirmDialog":{"resetLibrary":"ڕێکخستنەوەی کتێبخانە","removeItemsFromLib":"لابردنی ئایتمە دیاریکراوەکان لە کتێبخانە"},"imageExportDialog":{"header":"وێنە هەناردە بکە","label":{"withBackground":"پاشبنەما","onlySelected":"تەنها دیاریکراوەکان","darkMode":"دۆخی تاریک","embedScene":"دیمەنەکە بەکاربهێنەرەوە","scale":"قەبارە","padding":"بۆشایی"},"tooltip":{"embedScene":"داتاکانی دیمەنەکە لە فایلە هەناردەکراوەکەی PNG/SVG هەڵدەگیرێن بۆ ئەوەی دیمەنەکە لێیەوە بگەڕێتەوە.\\nقەبارەی پەڕگەی هەناردەکراو زیاد دەکات."},"title":{"exportToPng":"هەناردە بکە وەک PNG","exportToSvg":"هەناردە بکە وەک SVG","copyPngToClipboard":"لەبەربگرەوە بۆ سەر تەختەنوس"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"له‌به‌ری بگره‌وه‌ بۆ ته‌خته‌نووس"}},"encrypted":{"tooltip":"وێنەکێشانەکانت لە کۆتاییەوە بۆ کۆتایی کۆد کراون بۆیە سێرڤەرەکانی ئێکسکالیدرا هەرگیز نایانبینن.","link":"بلۆگ پۆست لەسەر کۆدکردنی کۆتای بۆ کۆتای لە ئێکسکالیدرەو"},"stats":{"angle":"گۆشە","element":"توخم","elements":"توخمەکان","height":"بەرزی","scene":"دیمەنەکە","selected":"دەستنیشانکراوەکان","storage":"بیرگە","title":"ئامار بۆ نێردەکان","total":"گشتی","version":"وەشان","versionCopy":"کلیک بۆ لەبەرگرتنەوە","versionNotAvailable":"وەشان بەردەست نییە","width":"پانی"},"toast":{"addedToLibrary":"زیادکرا بۆ کتێبخانە","copyStyles":"ستایلی کۆپیکراو.","copyToClipboard":"لەبەرگیرایەوە بۆ تەختەنوس.","copyToClipboardAsPng":"کۆپی کراوە {{exportSelection}} بۆ کلیپبۆرد وەک PNG\\n({{exportColorScheme}})","fileSaved":"فایل هەڵگیرا.","fileSavedToFilename":"هەڵگیراوە بۆ {filename}","canvas":"تابلۆ","selection":"دەستنیشانکراوەکان","pasteAsSingleElement":"بۆ دانانەوە وەکو یەک توخم یان دانانەوە بۆ نێو دەسکاریکەرێکی دەق کە بوونی هەیە {{shortcut}} بەکاربهێنە","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ڕوون","black":"ڕەش","white":"سپی","red":"سور","pink":"پەمەیی","grape":"مێوژی","violet":"مۆری کاڵ","gray":"خۆڵەمێشی","blue":"شین","cyan":"شینی ئاسمانی","teal":"شەدری","green":"سه‌وز","yellow":"زەرد","orange":"پرتەقاڵی","bronze":"برۆنزی"},"welcomeScreen":{"app":{"center_heading":"هەموو داتاکانت لە ناوخۆی وێنگەڕەکەتدا پاشەکەوت کراوە.","center_heading_plus":"ویستت بڕۆیت بۆ Excalidraw+?","menuHint":"هەناردەکردن، ڕێکخستنەکان، زمانەکان، ..."},"defaults":{"menuHint":"هەناردەکردن، ڕێکخستنەکان، و زیاتر...","center_heading":"دایاگرامەکان. ئاسان. کراون.","toolbarHint":"ئامرازێک هەڵبگرە و دەستبکە بە کێشان!","helpHint":"قەدبڕەکان و یارمەتی"}},"colorPicker":{"mostUsedCustomColors":"زۆرترین ڕەنگە باوە بەکارهاتووەکان","colors":"ڕەنگەکان","shades":"سێبەرەکان","hexCode":"کۆدی هێکس","noShades":"هیچ سێبەرێک بۆ ئەم ڕەنگە بەردەست نییە"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js b/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js new file mode 100644 index 0000000..530041c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/lt-LT-json-9b7e91a51b90ee551cad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8340],{3755:function(i){i.exports=JSON.parse('{"labels":{"paste":"Įklijuoti","pasteAsPlaintext":"Įklijuoti kaip paprastą tekstą","pasteCharts":"Įklijuoti diagramas","selectAll":"Pažymėti viską","multiSelect":"Pridėkite elementą prie pasirinktų","moveCanvas":"Judinti drobę","cut":"Iškirpti","copy":"Kopijuoti","copyAsPng":"Kopijuoti į iškarpinę kaip PNG","copyAsSvg":"Kopijuoti į iškarpinę kaip SVG","copyText":"Kopijuoti į iškarpinę kaip tekstą","bringForward":"Kelti priekio link","sendToBack":"Nustumti į užnugarį","bringToFront":"Iškelti į priekį","sendBackward":"Nustumti link užnugario","delete":"Ištrinti","copyStyles":"Kopijuoti stilius","pasteStyles":"Įklijuoti stilius","stroke":"Linija","background":"Fonas","fill":"Užpildymas","strokeWidth":"Linijos storis","strokeStyle":"Linijos stilius","strokeStyle_solid":"Ištisinė","strokeStyle_dashed":"Brūkšniuota","strokeStyle_dotted":"Taškuota","sloppiness":"Netvarkingumas","opacity":"Nepermatomumas","textAlign":"Teksto lygiavimas","edges":"Kraštai","sharp":"Aštrus","round":"Užapvalintas","arrowheads":"Rodyklės viršūnės","arrowhead_none":"Jokios","arrowhead_arrow":"Rodyklė","arrowhead_bar":"Brukšnys","arrowhead_dot":"Taškas","arrowhead_triangle":"Trikampis","fontSize":"Šrifto dydis","fontFamily":"Šriftas","addWatermark":"Sukurta su Excalidraw","handDrawn":"Ranka rašytas","normal":"Normalus","code":"Kodas","small":"Mažas","medium":"Vidutinis","large":"Didelis","veryLarge":"Labai didelis","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"Plonas","bold":"Pastorintas","left":"Kairėje","center":"Centre","right":"Dešinėje","extraBold":"Labiau pastorintas","architect":"Architektas","artist":"Menininkas","cartoonist":"Karikatūristas","fileTitle":"Failo pavadinimas","colorPicker":"Spalvos parinkiklis","canvasColors":"","canvasBackground":"Drobės fonas","drawingCanvas":"","layers":"Sluoksniai","actions":"Veiksmai","language":"Kalba","liveCollaboration":"Bendradarbiavimas gyvai...","duplicateSelection":"","untitled":"","name":"","yourName":"Jūsų vardas","madeWithExcalidraw":"Sukurta su Excalidraw","group":"Grupuoti pasirinkimą","ungroup":"Išgrupuoti pasirinkimą","collaborators":"Bendradarbiautojai","showGrid":"Rodyti tinklelį","addToLibrary":"Pridėti į biblioteką","removeFromLibrary":"Pašalinti iš bibliotekos","libraryLoadingMessage":"","libraries":"Naršyti bibliotekas","loadingScene":"","align":"Lygiuoti","alignTop":"Lygiuoti viršuje","alignBottom":"Lygiuoti apačioje","alignLeft":"Lygiuoti kairėje","alignRight":"Lygiuoti dešinėje","centerVertically":"Centruoti vertikaliai","centerHorizontally":"Centruoti horizontaliai","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"Apversti horizontaliai","flipVertical":"Apversti vertikaliai","viewMode":"","share":"Dalintis","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"Asmeninė biblioteka","excalidrawLib":"Exaclidraw biblioteka","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Redeguoti nuorodą","editEmbed":"","create":"Sukurti nuorodą","createEmbed":"","label":"Nuoroda","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"Užrakinti","unlock":"Atrakinti","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"Eksportuoti į failą","exportImage":"","export":"","copyToClipboard":"Kopijuoti į iškarpinę","save":"","saveAs":"Išsaugoti kaip","load":"","getShareableLink":"Gauti nuorodą dalinimuisi","close":"Uždaryti","selectLanguage":"Pasirinkite kalbą","scrollBackToContent":"","zoomIn":"Priartinti","zoomOut":"Nutolinti","resetZoom":"","menu":"Meniu","done":"","edit":"Redaguoti","undo":"Anuliuoti","redo":"","resetLibrary":"Atstatyti biblioteką","createNewRoom":"Sukurti naują kambarį","fullScreen":"Visas ekranas","darkMode":"Tamsus režimas","lightMode":"Šviesus režimas","zenMode":"„Zen“ režimas","objectsSnapMode":"","exitZenMode":"Išeiti iš „Zen“ režimo","cancel":"Atšaukti","clear":"Išvalyti","remove":"Pašalinti","embed":"","publishLibrary":"Paskelbti","submit":"Pateikti","confirm":"Patvirtinti","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Sesijos nutraukimas perrašys ankstesnį, lokaliai išsaugotą piešinį. Ar tikrai to nori?\\n\\n(Jei nori išlaikyti lokalų piešinį, tiesiog uždaryk naršyklės skirtuką.)","errorAddingToLibrary":"Nepavyko įtraukti elemento į biblioteką","errorRemovingFromLibrary":"Nepavyko pašalinti elemento iš bibliotekos","confirmAddLibrary":"Tai įtrauks {{numShapes}} figūrą/-as į tavo biblioteką. Ar tikrai to nori?","imageDoesNotContainScene":"Panašu, jog šis paveiksliukas neturi scenos duomenų. Ar yra įjuntas scenos įtraukimas ekportavimo metu?","cannotRestoreFromImage":"Nepavyko atstatyti scenos iš šio nuotraukos failo","invalidSceneUrl":"Nepavyko suimportuoti scenos iš pateiktos nuorodos (URL). Ji arba blogai suformatuota, arba savyje neturi teisingų Excalidraw JSON duomenų.","resetLibrary":"Tai išvalys tavo biblioteką. Ar tikrai to nori?","removeItemsFromsLibrary":"Ištrinti {{count}} elementą/-us iš bibliotekos?","invalidEncryptionKey":"Šifravimo raktas turi būti iš 22 simbolių. Redagavimas gyvai yra išjungtas.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Nepalaikomas failo tipas.","imageInsertError":"Nepyko įkelti paveiksliuko. Pabandyk vėliau...","fileTooBig":"Per didelis failas. Didžiausias leidžiamas dydis yra {{maxSize}}.","svgImageInsertError":"Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.","failedToFetchImage":"","invalidSVGString":"Nevalidus SVG.","cannotResolveCollabServer":"Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.","importLibraryError":"Nepavyko įkelti bibliotekos","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Žymėjimas","image":"Įkelti paveiksliuką","rectangle":"Stačiakampis","diamond":"Deimantas","ellipse":"Elipsė","arrow":"Rodyklė","line":"Linija","freedraw":"Piešti","text":"Tekstas","library":"Biblioteka","lock":"Baigus piešti, išlaikyti pasirinktą įrankį","penMode":"Rašyklio režimas - neleisti prisilietimų","link":"Pridėti / Atnaujinti pasirinktos figūros nuorodą","eraser":"Trintukas","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Veiksmai su drobe","selectedShapeActions":"Veiksmai su pasirinkta figūra","shapes":"Figūros"},"hints":{"canvasPanning":"","linearElement":"Paspaudimai sukurs papildomus taškus, nepertraukiamas tempimas sukurs liniją","freeDraw":"Spausk ir tempk, paleisk kai norėsi pabaigti","text":"Užuomina: tekstą taip pat galima pridėti bet kur su dvigubu pelės paspaudimu, kol parinkas žymėjimo įrankis","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"Pradėti seansą","button_stopSession":"Sustabdyti seansą","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":"Klaida"},"exportDialog":{"disk_title":"Įrašyti į diską","disk_details":"","disk_button":"Įrašyti į failą","link_title":"Nuoroda dalinimuisi","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"Eksportuoti","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"paspaudimas","deepSelect":"","deepBoxSelect":"","curvedArrow":"Banguota rodyklė","curvedLine":"Banguota linija","documentation":"Dokumentacija","doubleClick":"dvigubas paspaudimas","drag":"vilkti","editor":"Redaktorius","editLineArrowPoints":"","editText":"","github":"Radai klaidą? Pateik","howto":"Vadovaukis mūsų gidu","or":"arba","preventBinding":"","tools":"Įrankiai","shortcuts":"Spartieji klavišai","textFinish":"Baigti redagavimą (teksto redaktoriuje)","textNewLine":"Pridėti naują eilutę (tekto redaktoriuje)","title":"Pagalba","view":"","zoomToFit":"","zoomToSelection":"Priartinti iki pažymėtos vietos","toggleElementLock":"","movePageUpDown":"Pajudinti puslapį aukštyn/žemyn","movePageLeftRight":"Pajudinti puslapį kairėn/dešinėn"},"clearCanvasDialog":{"title":"Išvalyti drobę"},"publishDialog":{"title":"Paviešinti biblioteką","itemName":"Elemento pavadinimas","authorName":"Autoriaus vardas","githubUsername":"Github spalyvardis","twitterUsername":"Twitter slapyvardis","libraryName":"Bibliotekos pavadinimas","libraryDesc":"Bibliotekos aprašas","website":"Tinklalapis","placeholder":{"authorName":"Tavo vardas arba spalyvardis","libraryName":"Tavo bibliotekos pavadinimas","libraryDesc":"Tavo bibliotekos aprašas, padėti žmonėms geriau suprasti jos paskirtį","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"Privalomas","website":"Įveskite teisingą nuorodą (URL)"},"noteDescription":"Pateik savo biblioteką, jog ji galėtų būti įtraukta į jog kiti žmonės galėtų tai naudoti savo piešiniuose.","noteGuidelines":"Visų pirma, biblioteka turi būti rankiniu būdu patvirtinta. Prašome paskaityti gairės","noteLicense":"MIT licencija, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Biblioteka pateikta","content":"Ačiū {{authorName}}. Tavo biblioteka buvo pateikta peržiūrai. Gali sekti būsenąčia"},"confirmDialog":{"resetLibrary":"Atstatyti biblioteką","removeItemsFromLib":"Pašalinti pasirinktus elementus iš bibliotekos"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"Elementas","elements":"Elementai","height":"Aukštis","scene":"Scena","selected":"Pasirinkta","storage":"Saugykla","title":"Informacija moksliukams","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":"Plotis"},"toast":{"addedToLibrary":"Pridėta į biblioteką","copyStyles":"","copyToClipboard":"Nukopijuota į iškarpinę.","copyToClipboardAsPng":"","fileSaved":"Failas išsaugotas.","fileSavedToFilename":"Išsaugota į {filename}","canvas":"drobė","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Permatoma","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js b/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js new file mode 100644 index 0000000..231ba0c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/lv-LV-json-f7f9363e42ee2e3a7c67.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6768],{2327:function(t){t.exports=JSON.parse('{"labels":{"paste":"Ielīmēt","pasteAsPlaintext":"Ielīmēt kā vienkāršu tekstu","pasteCharts":"Ielīmēt grafikus","selectAll":"Atlasīt visu","multiSelect":"Pievienot elementu atlasei","moveCanvas":"Pārvietot tāfeli","cut":"Izgriezt","copy":"Kopēt","copyAsPng":"Kopēt starpliktuvē kā PNG","copyAsSvg":"Kopēt starpliktuvē kā SVG","copyText":"Kopēt starpliktuvē kā tekstu","bringForward":"Pārvietot vienu slāni augstāk","sendToBack":"Pārvietot uz zemāko slāni","bringToFront":"Pārvietot uz virsējo slāni","sendBackward":"Pārvietot par vienu slāni zemāk","delete":"Dzēst","copyStyles":"Kopēt stilus","pasteStyles":"Ielīmēt stilus","stroke":"Svītras krāsa","background":"Fona krāsa","fill":"Aizpildījums","strokeWidth":"Svītras platums","strokeStyle":"Svītras stils","strokeStyle_solid":"Vienlaidu","strokeStyle_dashed":"Raustīta līnija","strokeStyle_dotted":"Punktota līnija","sloppiness":"Precizitāte","opacity":"Necaurspīdīgums","textAlign":"Teksta līdzināšana","edges":"Malas","sharp":"Asas","round":"Apaļas","arrowheads":"Bultas","arrowhead_none":"Nekādas","arrowhead_arrow":"Bulta","arrowhead_bar":"Svītra","arrowhead_dot":"Punkts","arrowhead_triangle":"Trijstūris","fontSize":"Teksta lielums","fontFamily":"Fontu saime","addWatermark":"Pievienot \\"Radīts ar Excalidraw\\"","handDrawn":"Rokraksts","normal":"Parasts","code":"Kods","small":"Mazs","medium":"Vidējs","large":"Liels","veryLarge":"Ļoti liels","solid":"Pilns","hachure":"Svītrots","zigzag":"Zigzaglīnija","crossHatch":"Šķērssvītrots","thin":"Šaurs","bold":"Trekns","left":"Pa kreisi","center":"Vidū","right":"Pa labi","extraBold":"Īpaši trekns","architect":"Arhitekts","artist":"Mākslinieks","cartoonist":"Karikatūrists","fileTitle":"Datnes nosaukums","colorPicker":"Krāsu atlasītājs","canvasColors":"Izmantots tāfelei","canvasBackground":"Ainas fons","drawingCanvas":"Tāfele","layers":"Slāņi","actions":"Darbības","language":"Valoda","liveCollaboration":"Sadarbība tiešsaistē...","duplicateSelection":"Izveidot kopiju","untitled":"Bez nosaukuma","name":"Vārds","yourName":"Jūsu vārds","madeWithExcalidraw":"Radīts ar Excalidraw","group":"Grupēt atlasīto","ungroup":"Atgrupēt atlasīto","collaborators":"Dalībnieki","showGrid":"Rādīt režģi","addToLibrary":"Pievienot bibliotēkai","removeFromLibrary":"Izņemt no bibliotēkas","libraryLoadingMessage":"Ielādē bibliotēku…","libraries":"Apskatīt bibliotēkas","loadingScene":"Ielādē ainu…","align":"Līdzināt","alignTop":"Līdzināt augšpusē","alignBottom":"Līdzināt lejā","alignLeft":"Līdzināt pa kreisi","alignRight":"Līdzināt pa labi","centerVertically":"Centrēt vertikāli","centerHorizontally":"Centrēt horizontāli","distributeHorizontally":"Izdalīt horizontāli","distributeVertically":"Izdalīt vertikāli","flipHorizontal":"Apmest horizontāli","flipVertical":"Apmest vertikāli","viewMode":"Skata režīms","share":"Kopīgot","showStroke":"Rādīt svītras krāsas atlasītāju","showBackground":"Rādīt fona krāsas atlasītāju","toggleTheme":"Pārslēgt krāsu tēmu","personalLib":"Personīgā bibliotēka","excalidrawLib":"Excalidraw bibliotēka","decreaseFontSize":"Samazināt fonta izmēru","increaseFontSize":"Palielināt fonta izmēru","unbindText":"Atdalīt tekstu","bindText":"Piesaistīt tekstu figūrai","createContainerFromText":"Ietilpināt tekstu figurā","link":{"edit":"Rediģēt saiti","editEmbed":"","create":"Izveidot saiti","createEmbed":"","label":"Saite","labelEmbed":"","empty":""},"lineEditor":{"edit":"Rediģēt līniju","exit":"Aizvērt līnijas redaktoru"},"elementLock":{"lock":"Fiksēt","unlock":"Atbrīvot","lockAll":"Fiksēt visu","unlockAll":"Atbrīvot visu"},"statusPublished":"Publicēts","sidebarLock":"Paturēt atvērtu sānjoslu","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Neviena vienība vēl nav pievienota...","hint_emptyLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu, vai pievienojiet publisku bibliotēku zemāk.","hint_emptyPrivateLibrary":"Atlasiet objektu tāfelē, lai to šeit pievienotu."},"buttons":{"clearReset":"Atiestatīt tāfeli","exportJSON":"Eksportēt kā failu","exportImage":"Eksportēt attēlu...","export":"Saglabāt uz...","copyToClipboard":"Kopēt starpliktuvē","save":"Saglabāt pašreizējo datni","saveAs":"Saglabāt kā","load":"Atvērt","getShareableLink":"Iegūt kopīgošanas saiti","close":"Aizvērt","selectLanguage":"Izvēlieties valodu","scrollBackToContent":"Atgriezties pie satura","zoomIn":"Tuvināt","zoomOut":"Tālināt","resetZoom":"Atiestatīt tuvinājumu","menu":"Izvēlne","done":"Gatavs","edit":"Rediģēt","undo":"Atsaukt","redo":"Atcelt atsaukšanu","resetLibrary":"Atiestatīt bibliotēku","createNewRoom":"Izveidot jaunu telpu","fullScreen":"Pilnekrāna režīms","darkMode":"Tumšais režīms","lightMode":"Gaišais režīms","zenMode":"Zen režīms","objectsSnapMode":"","exitZenMode":"Pamest Zen režīmu","cancel":"Atcelt","clear":"Notīrīt","remove":"Noņemt","embed":"","publishLibrary":"Publicēt","submit":"Iesniegt","confirm":"Apstiprināt","embeddableInteractionButton":""},"alerts":{"clearReset":"Šī funkcija notīrīs visu tāfeli. Vai turpināt?","couldNotCreateShareableLink":"Nevarēja izveidot kopīgojamo saiti.","couldNotCreateShareableLinkTooBig":"Nevarēja izveidot kopīgojamo saiti – aina ir par lielu","couldNotLoadInvalidFile":"Nevarēja ielādēt nederīgu datni","importBackendFailed":"Ielāde no krātuves neizdevās.","cannotExportEmptyCanvas":"Nevar eksportēt tukšu tāfeli.","couldNotCopyToClipboard":"Nevarēja nokopēt starpliktuvē.","decryptFailed":"Nevarēja atšifrēt datus.","uploadedSecurly":"Augšuplāde nodrošināta ar šifrēšanu no gala līdz galam, kas nozīmē, ka Excalidraw serveri un trešās puses nevar lasīt saturu.","loadSceneOverridePrompt":"Ārēja satura ielāde aizstās jūsu pašreizējo saturu. Vai vēlaties turpināt?","collabStopOverridePrompt":"Sesijas pārtraukšana pārrakstīs jūsu iepriekšējo zīmējumu, kas saglabāts jūsu pārlūkā. Vai turpināt?\\n\\n(Ja vēlaties paturēt zīmējumu, kas saglabāts jūsu pārlūkā, vienkārši aizveriet pārlūka cilni.)","errorAddingToLibrary":"Nevarēja pievienot vienumu bibliotēkai","errorRemovingFromLibrary":"Nevarēja izņemt vienumu no bibliotēkas","confirmAddLibrary":"Šī funkcija pievienos {{numShapes}} formu(-as) jūsu bibliotēkai. Vai turpināt?","imageDoesNotContainScene":"Šķiet, ka attēls nesatur ainas datus. Vai iespējojāt ainas iegulšanu, kad eksportējāt?","cannotRestoreFromImage":"Ainu nevarēja atgūt no attēla datnes","invalidSceneUrl":"Nevarēja importēt ainu no norādītā URL. Vai nu tas ir nederīgs, vai nesatur derīgus Excalidraw JSON datus.","resetLibrary":"Šī funkcija iztukšos bibliotēku. Vai turpināt?","removeItemsFromsLibrary":"Vai izņemt {{count}} vienumu(s) no bibliotēkas?","invalidEncryptionKey":"Šifrēšanas atslēgai jābūt 22 simbolus garai. Tiešsaistes sadarbība ir izslēgta.","collabOfflineWarning":"Nav pieejams interneta pieslēgums.\\nJūsu izmaiņas netiks saglabātas!"},"errors":{"unsupportedFileType":"Neatbalstīts datnes veids.","imageInsertError":"Nevarēja ievietot attēlu. Mēģiniet vēlāk...","fileTooBig":"Datne ir par lielu. Lielākais atļautais izmērs ir {{maxSize}}.","svgImageInsertError":"Nevarēja ievietot SVG attēlu. Šķiet, ka SVG marķējums nav derīgs.","failedToFetchImage":"","invalidSVGString":"Nederīgs SVG.","cannotResolveCollabServer":"Nevarēja savienoties ar sadarbošanās serveri. Lūdzu, pārlādējiet lapu un mēģiniet vēlreiz.","importLibraryError":"Nevarēja ielādēt bibliotēku","collabSaveFailed":"Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","collabSaveFailed_sizeExceeded":"Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Atlase","image":"Ievietot attēlu","rectangle":"Taisnstūris","diamond":"Rombs","ellipse":"Elipse","arrow":"Bulta","line":"Līnija","freedraw":"Zīmēt","text":"Teksts","library":"Bibliotēka","lock":"Paturēt izvēlēto rīku pēc darbības","penMode":"Pildspalvas režīms – novērst pieskaršanos","link":"Pievienot/rediģēt atlasītās figūras saiti","eraser":"Dzēšgumija","frame":"","embeddable":"","laser":"","hand":"Roka (panoramēšanas rīks)","extraTools":""},"headings":{"canvasActions":"Tāfeles darbības","selectedShapeActions":"Izvēlētās formas darbības","shapes":"Formas"},"hints":{"canvasPanning":"Lai bīdītu tāfeli, turiet nospiestu ritināšanas vai atstarpes taustiņu, vai izmanto rokas rīku","linearElement":"Klikšķiniet, lai sāktu zīmēt vairākus punktus; velciet, lai zīmētu līniju","freeDraw":"Spiediet un velciet; atlaidiet, kad pabeidzat","text":"Ieteikums: lai pievienotu tekstu, varat arī jebkur dubultklikšķināt ar atlases rīku","embeddable":"","text_selected":"Dubultklikšķiniet vai spiediet ievades taustiņu, lai rediģētu tekstu","text_editing":"Spiediet iziešanas taustiņu vai CtrlOrCmd+ENTER, lai beigtu rediģēt","linearElementMulti":"Klikšķiniet uz pēdējā punkta vai spiediet izejas vai ievades taustiņu, lai pabeigtu","lockAngle":"Varat ierobežot leņķi, turot nospiestu SHIFT","resize":"Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,\\nvai arī ALT, lai mainītu izmēru ap centru","resizeImage":"Varat brīvi mainīt izmēru, turot nospiestu SHIFT;\\nturiet nospiestu ALT, lai mainītu izmēru ap centru","rotate":"Rotējot varat ierobežot leņķi, turot nospiestu SHIFT","lineEditor_info":"Turiet CtrlOrCmd un dubultklikšķiniet, vai spiediet CtrlOrCmd + Enter, lai rediģētu punktus","lineEditor_pointSelected":"Spiediet dzēšanas taustiņu, lai noņemtu punktus, – CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu","lineEditor_nothingSelected":"Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),\\nvai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus","placeImage":"Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru","publishLibrary":"Publicēt savu bibliotēku","bindTextToElement":"Spiediet ievades taustiņu, lai pievienotu tekstu","deepBoxSelect":"Turient nospiestu Ctrl vai Cmd, lai atlasītu dziļumā un lai nepieļautu objektu pavilkšanu","eraserRevert":"Turiet Alt, lai noņemtu elementus no dzēsšanas atlases","firefox_clipboard_write":"Šis iestatījums var tikt ieslēgts ar \\"dom.events.asyncClipboard.clipboardItem\\" marķieri pārslēgtu uz \\"true\\". Lai mainītu pārlūka marķierus Firefox, apmeklē \\"about:config\\" lapu.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Nevar rādīt priekšskatījumu","canvasTooBig":"Iespējams, tāfele ir par lielu.","canvasTooBigTip":"Ieteikums: mēģiniet satuvināt pašus tālākos elementus."},"errorSplash":{"headingMain":"Notikusi kļūda. Mēģiniet ","clearCanvasMessage":"Ja pārlādēšana nestrādā, mēģiniet ","clearCanvasCaveat":" Tas novedīs pie darba zaudēšanas ","trackedToSentry":"Kļūda ar kodu {{eventId}} tika noteikta mūsu sistēmā.","openIssueMessage":"Mēs uzmanījāmies, lai neiekļautu jūsu ainas informāciju šajā kļūdā. Ja jūsu aina nav privāta, lūdzu ziņojiet par šo kļūdu mūsu Lūdzu, miniet sekojošo informāciju to kopējot un ielīmējot jūsu ziņojumā platformā GitHub.","sceneContent":"Ainas saturs:"},"roomDialog":{"desc_intro":"Varat ielūgt cilvēkus pašreizējajā ainā, lai sadarbotos ar tiem.","desc_privacy":"Neuztraucieties, sesija izmanto šifrēšanu no gala līdz galam, tātad jūsu zīmējums paliks privāts. Pat mūsu serveri nevarēs redzēt, ar ko esat nācis klajā.","button_startSession":"Sākt sesiju","button_stopSession":"Beigt sesiju","desc_inProgressIntro":"Notiek tiešsaistes sadarbības sesija.","desc_shareLink":"Dalieties ar šo saiti ar jebkuru, ar ko vēlaties sadarboties:","desc_exitSession":"Sesijas beigšana jūs atvienos no sadarbošanās, bet jūs vēl joprojām varēsiet strādāt ar ainu savā datorā. Ievērojiet, ka šis neietekmēs citus dalībniekus, un viņi vēl joprojām varēs sadarboties savā ainas versijā.","shareTitle":"Pievienoties tiešsaistes sadarbībai programmā Excalidraw"},"errorDialog":{"title":"Kļūda"},"exportDialog":{"disk_title":"Saglabāt diskā","disk_details":"Eksportēt ainas datus datnē, ko vēlāk varēsiet importēt.","disk_button":"Saglabāt datnē","link_title":"Kopīgošanas saite","link_details":"Eksportēt kā tikai lasāmu saiti.","link_button":"Eksportēt kā saiti","excalidrawplus_description":"Saglabāt ainu savā Excalidraw+ darbvietā.","excalidrawplus_button":"Eksportēt","excalidrawplus_exportError":"Pašreiz nevarēja eksportēt uz Excalidraw+..."},"helpDialog":{"blog":"Lasīt mūsu blogu","click":"klikšķis","deepSelect":"Atlasīt dziļumā","deepBoxSelect":"Atlasīt dziļumā kastes ietvaros, un nepieļaut pavilkšanu","curvedArrow":"Liekta bulta","curvedLine":"Liekta līnija","documentation":"Dokumentācija","doubleClick":"dubultklikšķis","drag":"vilkt","editor":"Redaktors","editLineArrowPoints":"Rediģēt līniju/bultu punktus","editText":"Rediģēt tekstu/pievienot birku","github":"Sastapāt kļūdu? Ziņot","howto":"Sekojiet mūsu instrukcijām","or":"vai","preventBinding":"Novērst bultu piesaistīšanos","tools":"Rīki","shortcuts":"Tastatūras saīsnes","textFinish":"Pabeigt rediģēšanu (teksta redaktorā)","textNewLine":"Nākamā rindiņa (teksta redaktorā)","title":"Palīdzība","view":"Skatīt","zoomToFit":"Iestatīt mērogu, kas iekļauj visus elementus","zoomToSelection":"Iestatīt mērogu, lai rādītu atlasi","toggleElementLock":"Fiksēt/atbrīvot atlasīto","movePageUpDown":"Pārvietot lapu augšup/lejup","movePageLeftRight":"Pārvietot lapu pa labi/kreisi"},"clearCanvasDialog":{"title":"Notīrīt tāfeli"},"publishDialog":{"title":"Publicēt bibliotēku","itemName":"Vienuma nosaukums","authorName":"Autora vārds","githubUsername":"GitHub lietotājvārds","twitterUsername":"Twitter lietotājvārds","libraryName":"Bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts","website":"Mājaslapa","placeholder":{"authorName":"Jūsu vārds vai lietotājvārds","libraryName":"Jūsu bibliotēkas nosaukums","libraryDesc":"Bibliotēkas apraksts, kas palīdzēs citiem saprast tās pielietojumu","githubHandle":"GitHub lietotājvārds (neobligāts), lai jūs varētu rediģēt bibliotēku pēc tās iesniegšanas izskatīšanai","twitterHandle":"Twitter lietotājvārds (neobligāts), lai mēs varētu jūs pieminēt kā autoru, kad reklamēsim bibliotēku platformā Twitter","website":"Saikne uz jūsu personīgo mājaslapu vai kādu citu lapu (neobligāta)"},"errors":{"required":"Obligāts","website":"Ievadiet derīgu URL"},"noteDescription":"Iesniegt savu bibliotēku iekļaušanai publiskajā bibliotēku datubāzē, lai citi to varētu izmantot savos zīmējumos.","noteGuidelines":"Šai bibliotēkai vispirms jātiek manuāli apstiprinātai. Lūdzu, izlasiet norādījumus pirms iesniegšanas. Jums vajadzēs GitHub kontu, lai sazinātos un veiktu izmaiņas, ja tādas būs pieprasītas, bet tas nav absolūti nepieciešams.","noteLicense":"Iesniedzot bibliotēku, jūs piekrītat tās publicēšanai saskaņā ar MIT Licenci, kas īsumā nozīmē, ka jebkurš to varēs izmantot bez ierobežojumiem.","noteItems":"Katram bibliotēkas vienumam jābūt savam nosaukumam, lai to varētu atrast filtrējot. Tiks iekļauti sekojošie bibliotēkas vienumi:","atleastOneLibItem":"Lūdzu, atlasiet vismaz vienu bibliotēkas vienumu, lai sāktu darbu","republishWarning":"Ievēro: daži no atzīmētajiem objektiem jau atzīmēti kā publicēti vai iesniegti publicēšanai. Tos vajadzētu atkārtoti iesniegt tikai tad, ja vēlies labot esošo bibliotēku."},"publishSuccessDialog":{"title":"Bibliotēka iesniegta","content":"Paldies, {{authorName}}! Jūsu bibliotēka iesniegta izskatīšanai. Jūs varat izsekot iesnieguma statusamšeit"},"confirmDialog":{"resetLibrary":"Atiestatīt bibliotēku","removeItemsFromLib":"Noņemt atlasītos vienumus no bibliotēkas"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Jūsu zīmējumi ir šifrēti no gala līdz galam; līdz ar to Excalidraw serveri tos nekad neredzēs.","link":"Ieraksts par šifrēšanu no gala līdz galam Excalidraw blogā"},"stats":{"angle":"Leņķis","element":"Elements","elements":"Elementi","height":"Augstums","scene":"Aina","selected":"Atlasīti","storage":"Krātuve","title":"Statistika entuziastiem","total":"Kopā","version":"Versija","versionCopy":"Klikšķiniet, lai nokopētu","versionNotAvailable":"Versija nav pieejama","width":"Platums"},"toast":{"addedToLibrary":"Pievienots bibliotēkai","copyStyles":"Nokopēja stilus.","copyToClipboard":"Nokopēja starpliktuvē.","copyToClipboardAsPng":"Nokopēja {{exportSelection}} starpliktuvē kā PNG ({{exportColorScheme}})","fileSaved":"Datne saglabāta.","fileSavedToFilename":"Saglabāts kā {filename}","canvas":"tāfeli","selection":"atlasi","pasteAsSingleElement":"Izmantojiet {{shortcut}}, lai ielīmētu kā jaunu elementu, vai ielīmētu esošā teksta lauciņā","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Caurspīdīgs","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Visi jūsu dati tiek glabāti uz vietas jūsu pārlūkā.","center_heading_plus":"Vai tā vietā vēlies doties uz Excalidraw+?","menuHint":"Eksportēšana, iestatījumi, valodas..."},"defaults":{"menuHint":"Eksportēšana, iestatījumi un vēl...","center_heading":"Diagrammas. Izveidotas. Vienkārši.","toolbarHint":"Izvēlies rīku un sāc zīmēt!","helpHint":"Īsceļi un palīdzība"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js b/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js new file mode 100644 index 0000000..c496548 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/mr-IN-json-ad1359c30c334d05eee0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3397],{5297:function(e){e.exports=JSON.parse('{"labels":{"paste":"चिटकवा","pasteAsPlaintext":"साधा मजकूर च्या रुपात पेस्ट करा","pasteCharts":"चार्ट चिकटवा","selectAll":"समस्त निवडा","multiSelect":"निवडित तत्व जोडा","moveCanvas":"पटल हलवा","cut":"कापा","copy":"प्रतिलिपी","copyAsPng":"PNG रूपे फळी वर कॉपी करा","copyAsSvg":"SVG रूपे फळी वर कॉपी करा","copyText":"लिखित रूपे फळी वर कॉपी करा","bringForward":"पुढे पुढे आणा","sendToBack":"सर्वात मागे करा","bringToFront":"सर्वात पुढे आणा","sendBackward":"मागे मागे करा","delete":"हटवा","copyStyles":"शैली कॉपी करा","pasteStyles":"कॉपी केलेली शैली वापरा","stroke":"रेघे चा रंग","background":"पार्श्वभूमी","fill":"भरा","strokeWidth":"रेघ रुंदी","strokeStyle":"रेघ शैली","strokeStyle_solid":"भरीव","strokeStyle_dashed":"तुटित तुटित","strokeStyle_dotted":"ठिपके ठिपके","sloppiness":"गबाळेपणा","opacity":"अपारदर्शक्ता","textAlign":"मजकूर संरेखन","edges":"किनारी","sharp":"टोचरं","round":"गोलाकार","arrowheads":"बाण टोक","arrowhead_none":"कुठलाहि नाही","arrowhead_arrow":"बाण","arrowhead_bar":"दांडुक","arrowhead_dot":"ठिपका","arrowhead_triangle":"त्रिकोण","fontSize":"अक्षर आकार","fontFamily":"अक्षर समूह","addWatermark":"\\"एक्सकेलीड्रॉ ने बनवलेलं\\" जोडा","handDrawn":"हातानी बनवलेलं","normal":"सामान्य","code":"सांकेतिक लिपि","small":"छोटे","medium":"मध्यम","large":"मोठं","veryLarge":"फार मोठं","solid":"भरीव","hachure":"हैशूर रेखांकन","zigzag":"वाकडी तिकड़ी","crossHatch":"आडव्या रेघा","thin":"पातळ","bold":"जाड","left":"डावं","center":"मधे","right":"उजवं","extraBold":"जास्त जाड","architect":"वास्तुविद्याविशारद","artist":"कलाकार","cartoonist":"व्यंग्य चित्रकार","fileTitle":"फाईलचे नाव","colorPicker":"रंग निवडक","canvasColors":"कॅनवास वर वापरलेले","canvasBackground":"पटल पार्श्वभूमि","drawingCanvas":"चित्र पटल","layers":"स्तर","actions":"क्रिया","language":"भाषा","liveCollaboration":"ज्वलंत सहयोग...","duplicateSelection":"प्रतिलिपि","untitled":"अशीर्षकांकित","name":"नाव","yourName":"तुमचे नाव","madeWithExcalidraw":"एक्सकेलीड्रॉ ने बनवलेलं","group":"समूह निवड","ungroup":"समूह निवड ला रद्द करा","collaborators":"Sahayog","showGrid":"ग्रिड दाखवा","addToLibrary":"संग्रह मधे सम्मिलित करा","removeFromLibrary":"संग्रहातून काढ़ा","libraryLoadingMessage":"संग्रह लोड होत आहे…","libraries":"संग्रह देखे","loadingScene":"दृश्य लोड होत आहे…","align":"संरेखित करा","alignTop":"वर संरेखित करा","alignBottom":"खाली संरेखित करा","alignLeft":"डावा बाजूला संरेखित करा","alignRight":"उजव्या बाजूला संरेखित करा","centerVertically":"मधल्या मधे उभं संरेखित करा","centerHorizontally":"मधल्या मधे आडवं संरेखित करा","distributeHorizontally":"आडवं वितरित करा","distributeVertically":"उभं वितरित करा","flipHorizontal":"आडवं फ्लिप करा","flipVertical":"उभं फ्लिप करा","viewMode":"पहायची पद्धत","share":"सामायिक करा","showStroke":"रेघ रंग निवड यंत्र दाखवा","showBackground":"पार्श्वभूमि: रंग निवड यंत्र दाखवा","toggleTheme":"शैली बदला","personalLib":"वैयक्तिक संग्रह","excalidrawLib":"एक्सकेलीड्रॉ संग्रह","decreaseFontSize":"अक्षर आकार छोटा करा","increaseFontSize":"अक्षर आकार मोठा करा","unbindText":"लेखन संबंध संपवा","bindText":"शब्द समूह ला पात्रात घ्या","createContainerFromText":"मजकूर कंटेनर मधे मोडून दाखवा","link":{"edit":"दुवा संपादन","editEmbed":"","create":"दुवा तयार करा","createEmbed":"","label":"दुवा","labelEmbed":"","empty":""},"lineEditor":{"edit":"रेघ संपादन","exit":"रेघ संपादकाबाहेर"},"elementLock":{"lock":"कुलूपात ठेवा","unlock":"कुलूपातून बाहेर","lockAll":"सर्व कुलूपात ठेवा","unlockAll":"सर्व कुलूपातून बाहेर"},"statusPublished":"प्रकाशित करा","sidebarLock":"साइडबार उघडं ठेवा","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"चित्रफलकातून रंग निवडा"},"library":{"noItems":"अजून कोणतेही आइटम जोडलेले नाही...","hint_emptyLibrary":"पटल वर एक वस्तु निवडुन एथे जोडा, किव्हा एक संग्रह जन कोष कडुन खाली स्थापित करा.","hint_emptyPrivateLibrary":"ईथे जोडण्या साठी पटल वरून एक वस्तु निवडा."},"buttons":{"clearReset":"पटल पुसा","exportJSON":"फ़ाइलमधे बाहेर ठेवा","exportImage":"प्रतिमा निर्यात करा...","export":"येथे सुरक्षित करा...","copyToClipboard":"फळी वर कॉपी करा","save":"वर्तमान फ़ाइल मधे जतन करा","saveAs":"ह्या नावाने जतन करा","load":"उघडा","getShareableLink":"सामायिके साठी दुवा प्राप्त करा","close":"बंद करा","selectLanguage":"भाषा निवड करा","scrollBackToContent":"पहलेचा मजकुर वर मागे स्क्रॉल करा","zoomIn":"मोठं करून पहा","zoomOut":"छोटं करून पहा","resetZoom":"छोटं मोठं करणं बंद करा","menu":"यादि","done":"झालं","edit":"संपादित करा","undo":"पूर्ववत करा","redo":"पुन्हा करा(&R)","resetLibrary":"संग्रह पुनर्स्थित करा","createNewRoom":"एक नवी खोली बनवा","fullScreen":"पूर्ण दृश्यपटल","darkMode":"अंधार स्थिथि","lightMode":"उजेड स्थिति","zenMode":"ध्यानग्र स्थिति","objectsSnapMode":"वस्तूंपासून पकड़ा","exitZenMode":"ध्यानग्र स्थितितून बाहेर","cancel":"रद्द","clear":"स्वछ","remove":"हटवा","embed":"","publishLibrary":"प्रकाशित करा","submit":"जमा करा","confirm":"पुष्टि करा","embeddableInteractionButton":""},"alerts":{"clearReset":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","couldNotCreateShareableLink":"सामायी करण करण्या योग्य दुवा नाही बनवता आला.","couldNotCreateShareableLinkTooBig":"सामायी करण करण्या योग्य दुवा नाही बनवता आला: दृश्य फार मोठं आहे","couldNotLoadInvalidFile":"अवैध फ़ाइल लोड करता आली नाही","importBackendFailed":"बैकएंड हून मागवणे विफल झाले.","cannotExportEmptyCanvas":"रिकामा पटल जतन करता येत नाही.","couldNotCopyToClipboard":"पटल वर कॉपी नाही झाली.","decryptFailed":"डीक्रिप्ट करता आले नाही.","uploadedSecurly":"अपलोड या टोकापासून त्या टोकापर्यंत कूटबद्धित करून सुरक्षित केले गेले आहे, हयाचा अर्थ असा की एक्सकेलीड्रॉ सर्व्हर आणि तृतीय पक्ष मजकूर वाचू शकत नाहीत.","loadSceneOverridePrompt":"बाह्य रेखाचित्र लोड केल्याने तुमची तुमचा विद्यमान मजकूर बदलेल. हे काम तुम्हाला चालू ठेवायचे आहे का?","collabStopOverridePrompt":"सत्र थांबवल्याने तुमचे पूर्वीचे, स्थानिकरित्या संग्रहित रेखाचित्र अधिलिखित होईल. तुला खात्री आहे?\\n\\n(तुम्हाला तुमचे स्थानिक रेखाचित्र ठेवायचे असल्यास, त्याऐवजी फक्त ब्राउझर टॅब बंद करा.)","errorAddingToLibrary":"संग्रहात तत्व जोडू शकलो नाही","errorRemovingFromLibrary":"संग्रहातून तत्व काढू शकलो नाही","confirmAddLibrary":"हे तुमच्या संग्राहात {{numShapes}} आकार (एक किव्हा अनेक) जोडेल. तुला खात्री आहे?","imageDoesNotContainScene":"या प्रतिमेमध्ये कोणताही दृश्य डेटा असल्याचे दिसत नाही. बाहेर जतन करताना तुम्ही दृश्य रुतवले होते का?","cannotRestoreFromImage":"प्रतिमा फ़ाइल पासून दृश्य पुनः रचित नाही झाला","invalidSceneUrl":"दिलेल्या यू-आर-एल पासून दृश्य आणू शकलो नाही. तो एकतर बरोबार नाही आहे किंवा त्यात वैध एक्सकेलीड्रॉ जेसन डेटा नाही.","resetLibrary":"पटल स्वच्छ होणार, तुम्हाला खात्री आहे का?","removeItemsFromsLibrary":"संग्रहातून {{count}} तत्व (एक किव्हा अनेक) काढू?","invalidEncryptionKey":"कूटबद्धन कुंजी 22 अक्षरांची असणे आवश्यक आहे. थेट सहयोग अक्षम केले आहे.","collabOfflineWarning":"इंटरनेट कनेक्शन उपलब्ध नाही.\\nतुमचे बदल जतन केले जाणार नाहीत!"},"errors":{"unsupportedFileType":"असमर्थित फाइल प्रकार.","imageInsertError":"प्रतिमा आत घालता येत नाही. नंतर पुन्हा प्रयत्न करा...","fileTooBig":"फाइल फार मोठी आहे. आकाराची कमाल परवानगी {{maxSize}} आहे.","svgImageInsertError":"एस-वी-जी प्रतिमा आत घालवू शकलो नाही. एस-वी-जी-मार्क-अप यंत्र अयोग्य आहे.","failedToFetchImage":"","invalidSVGString":"अयोग्य एस-वी-जी.","cannotResolveCollabServer":"कॉलेब-सर्वर हे पोहोचत नाही आहे. पान परत लोड करायचा प्रयत्न करावे.","importLibraryError":"संग्रह प्रतिस्थापित नाही करता आला","collabSaveFailed":"काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.","collabSaveFailed_sizeExceeded":"लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।\\n\\nबॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी.","brave_measure_text_error":{"line1":"असं वाटते की तुम्हीं Brave ब्राउज़र वापरतात आहात आणि त्या बरोबार आक्रामक पद्धति चें बोटांचे ठसे हां सेटिंग्स चा विकल्प चयन केलेला आहे.","line2":"हे तुमच्या चित्रांच्या पाठ तत्वांनां खंडित करू शकतात.","line3":"तुम्हाला आमच्या कड़ून खूप आग्रह आहे की हे सेटिंग्स मधले चयन नका करु. हे अनुक्रम हे कसे करावे हे दाखवु शकते.","line4":"ही सेटिंग अक्षम करूनही पृष्ठ योग्यरित्या प्रदर्शित होत नसल्यास, आमच्या GitHub वर समस्या सबमिट करा, किव्हा डिस्कॉर्ड वर आम्हाला लिहा"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"निवड","image":"प्रतिमा आत घाला","rectangle":"आयत","diamond":"चौकोन आकाराचा","ellipse":"अंडाकार","arrow":"बाण","line":"रेखा","freedraw":"रेखांकित करा","text":"टेक्स्ट","library":"संग्रह","lock":"निवडलेले यंत्र चित्रकरण झाल्या नंतर ही सक्रिय ठेवा","penMode":"पेन चा मोड - स्पर्श टाळा","link":"निवडलेल्या आकारासाठी दुवा जोडा/बदल करा","eraser":"खोड रबर","frame":"","embeddable":"","laser":"लेसर टॉर्च","hand":"हात ( सरकवण्या चे उपकरण)","extraTools":""},"headings":{"canvasActions":"पटल क्रिया","selectedShapeActions":"निवडित आकार क्रिया","shapes":"आकार"},"hints":{"canvasPanning":"कॅनव्हास सरकवण्या साठी, ड्रॅग करताना माउस व्हील धरा किंवा स्पेसबार दाबून ठेवा अथवा हात वालं उपकरण वापरा","linearElement":"अनेक बिंदु साठी क्लिक करा, रेघे साठी ड्रैग करा","freeDraw":"क्लिक आणि ड्रैग करा, झालं तेव्हा सोडा","text":"टीप: तुम्हीं निवड यंत्रानी कोठेही दुहेरी क्लिक करून टेक्स्ट जोडू शकता","embeddable":"","text_selected":"लेखन संपादन साठी दुहेरी क्लिक करा किव्हा एंटर दाबा","text_editing":"संपादन संपवायचं असल्यास एस्केप दाबा किव्हा कंट्रोल या कम्मांड बरोबार एंटर दाबा","linearElementMulti":"शेवटच्या बिंदु वर क्लिक करा किव्हा एस्केप या एंटर दाबा","lockAngle":"शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","resize":"आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, \\nकेंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा","resizeImage":"SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,\\nकेंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा","rotate":"फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता","lineEditor_info":"पॉइंट संपादित करण्यासाठी CtrlOrCmd दाबून ठेवुन डबल-क्लिक करा किंवा CtrlOrCmd + Enter बरोबर दाबा","lineEditor_pointSelected":"बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,\\nCtrlOrCmd बरोबार D प्रति साठी,\\nकिव्हा ड्रेग हलवण्या साठी","lineEditor_nothingSelected":"संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),\\nकिंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा","placeImage":"प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा","publishLibrary":"आपला खाजगी संग्रह प्रकाशित करा","bindTextToElement":"मजकूर जोडण्यासाठी एंटर की दाबा","deepBoxSelect":"खोल निवड ह्या साठी कंट्रोल किव्हा कमांड दाबून ठेवा, आणि बाहेर खेचणे वाचवण्या साठी पण","eraserRevert":"खोडण्या साठी घेतलेल्या वस्तु ना घेण्या साठी Alt दाबून ठेवावे","firefox_clipboard_write":"हे वैशिष्ट्य \\"dom.events.asyncClipboard.clipboardItem\\" फ्लॅग \\"सत्य\\" वर सेट करून शक्यतो सक्षम केले जाऊ शकते. Firefox मध्ये ब्राउझर फ्लॅग बदलण्यासाठी, \\"about:config\\" पृष्ठावर जा.","disableSnapping":"स्नैपिंग अक्षम करण्या साठी CtrlOrCmd दाबून ठेवा"},"canvasError":{"cannotShowPreview":"पूर्वावलोकन दाखवू शकत नाही","canvasTooBig":"पटल खूप जास्त मोठा असू शकतो.","canvasTooBigTip":"टीप: दूर चा तत्व थोडं जवळ आणण्याचा प्रयत्न करावा."},"errorSplash":{"headingMain":"त्रुटि आली. परत प्रयत्न करा ","clearCanvasMessage":"रीलोडिंग होत नसल्यास, परत प्रयत्न करा ","clearCanvasCaveat":" त्यामुळे केलेल्या कामाचे नुकसान होईल ","trackedToSentry":"त्रुटि क्रमांक के साथ त्रुटि {{eventId}} आमच्या प्रणाली नी निरीक्षण केले होते.","openIssueMessage":"त्रुटीत तुमची दृश्य माहिती समाविष्ट न करण्यासाठी आम्ही खूप सावध होतो. तुमचा सीन खाजगी नसल्यास, कृपया आम्हाला पुढ च्या कारवाई साठी सम्पर्क साधा कृपया गिटहब समस्येमध्ये कॉपी आणि पेस्ट करून खालिल माहिती समाविष्ट करा.","sceneContent":"दृश्य विषय:"},"roomDialog":{"desc_intro":"तुम्‍ही तुमच्‍या सध्‍याच्‍या दृश्यासाठी लोकांना आपल्‍यासह सहयोग करण्‍यासाठी आमंत्रित करू शकता.","desc_privacy":"काळजी करू नका, सत्र या टोकापासून त्या टोकापर्यंत कूटबद्धता वापरते, त्यामुळे तुम्ही जे काही काढाल ते खाजगी राहील. तुम्ही काय घेऊन आला आहात हे आमचा सर्व्हर ही देखील पाहू शकत नाही.","button_startSession":"सत्र सुरु करा","button_stopSession":"सत्र थाम्बवा","desc_inProgressIntro":"थेट सहयोग सत्र चालू आहे.","desc_shareLink":"तुम्ही ज्यांच्याशी सहयोग करू इच्छिता त्यांच्याशी ही दुवा सामायिक करा:","desc_exitSession":"सत्र थांबवल्याने तुम्हीं खोली तून बाहेर याल, तरिही तुम्ही स्थानिक पातळीवर दृश्यासह काम करु शकाल. लक्षात ठेवा की याचा इतर लोकांवर परिणाम होणार नाही आणि ते त्यांच्या आवृत्तीवर सहयोग करित राहातील.","shareTitle":"एक्सकेलीड्रॉ वर थेट सहयोग सत्रात सामील व्हा"},"errorDialog":{"title":"त्रुटि"},"exportDialog":{"disk_title":"डिस्क मधे जतन करा","disk_details":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुम तो डेटा नंतर परत आणु शकता.","disk_button":"फ़ाइल मधे जतन करा","link_title":"सामायिके साठी दुवा","link_details":"नुसतं वाचु देणारा दुवा चा स्वरूपे बाहेर ठेवा.","link_button":"दुवा स्वरूपे बाहेर ठेवा","excalidrawplus_description":"दृश्य तुमच्या एक्सकेलीड्रॉ कार्यक्षेत्र मधे जतन करा.","excalidrawplus_button":"बाहेर ठेवा","excalidrawplus_exportError":"एक्सकेलीड्रॉ मधे बाहेर ठेवता नाही येत..."},"helpDialog":{"blog":"आमचा ब्लॉग वाचा","click":"क्लिक करा","deepSelect":"खोल निवड","deepBoxSelect":"चौकट मधे खोल निवड करा आणि बाहेर ओढणे वाचवा","curvedArrow":"वक्र बाण","curvedLine":"वक्र रेघ","documentation":"कागदपत्रे","doubleClick":"दुहेरी क्लिक","drag":"ओढा","editor":"संपादक","editLineArrowPoints":"रेघ/तीर बिंदु सम्पादित करा","editText":"पाठ्य सम्पादित करा/ लेबल जोडा","github":"समस्या मिळाली? प्रस्तुत करा","howto":"आमच्या मार्गदर्शकाचे अनुसरण करा","or":"किंवा","preventBinding":"बाण बंधन होणं टाळा","tools":"अवजार","shortcuts":"कीबोर्ड शॉर्टकट","textFinish":"संपादन संपले (मजकूर संपादन)","textNewLine":"नवी ओळ जोडा (मजकूर संपादक)","title":"मदत","view":"दृश्य","zoomToFit":"सर्व तत्व दिसतील असे दृश्यरूप आकार करा","zoomToSelection":"निवडी प्रयंत दृश्यरूप आकार करा","toggleElementLock":"कुलूपातून आत/बाहेर निवड","movePageUpDown":"पान वर/खाली करा","movePageLeftRight":"पान डावी/उजवी कडे करा"},"clearCanvasDialog":{"title":"पटल स्वच्छ करा"},"publishDialog":{"title":"संग्रह प्रकाशित करा","itemName":"वस्तु चे नाव","authorName":"लेखक चे नाव","githubUsername":"गिटहब वापरकर्तानाव","twitterUsername":"ट्विटर वापरकर्तानाव","libraryName":"संग्रहाचे नाव","libraryDesc":"संग्रहाचे वर्णन","website":"वेबसाइट","placeholder":{"authorName":"तुमचे नाव किव्हा वापरकर्तानाव","libraryName":"तुमचा संग्रहाचे नाव","libraryDesc":"तुमचा संग्रहाचे वर्णन लोकांना संग्रहा बद्दल जाणकारी देतील","githubHandle":"गिटहब हैंडल (वैकल्पिक), एकदा संग्रह पुनरावलोकना साठी जमा केल्या नंतर ही तुम्हीं सम्पादित करु शकता","twitterHandle":"ट्विटर वापरकार्यक नाव (वैकल्पिक), त्यामुळे ट्विटर वर ज़हीरांति साठी कोणाला गुण द्यायचे हे आम्हाला समजेल","website":"दुवा तुमच्या वैयक्तिक वेब-साइट किव्हा कुठे दूसरिकडे (ऐच्छिक) करावा"},"errors":{"required":"आवश्यक आहे","website":"वैध यू-आर-एल द्या"},"noteDescription":"समाविष्ट करण्या साठी तुमचा संग्रह ह्याचात जमा करा सार्वजनिक संग्रहाचे कोठारइतर लोकांना त्यांच्या रेखाचित्रांमधे वापरण्यासाठी.","noteGuidelines":"संग्रहाला आधी स्वहस्ते स्वीकृती मिळणे आवश्यक आहे. कृपया हे वाचा मार्गदर्शक तत्त्वे जमा करण्या पूर्वी, तुमच्या जवळ एक गिटहब खाते असणे आवश्यक आहे जे संवादा साठी आणिक बदल करण्या साठी लागेल, तरी हे सर्व अगदी आवश्यक नाही आहे.","noteLicense":"जमा करताना तुम्हीं सहमति दाखवतात आहे की संग्रह ह्याचा खाली प्रकाशित होईल एम-आइ-टी परवाना, ज्याचा थोडक्यात अर्थ कोणीही निर्बंधांशिवाय वापरू शकतो.","noteItems":"प्रतैक संग्रहाचे नाव, नीट शोधनासाठी, असणे आवश्यक आहे. खाली दिलेल्या वस्तु समाविष्ट केल्या जातील:","atleastOneLibItem":"सुरु करण्यासाठी, कृपया करून, कमित कमी एक वस्तु तरी निवडा","republishWarning":"टीप: काही निवडक आयटम आधीच प्रकाशित/प्रस्तुत केलेले आहेत. विद्यमान लायब्ररी किंवा प्रस्तुतित आयटम अद्यावित करताना तुम्ही फक्त तो पुन्हा प्रस्तुत करा."},"publishSuccessDialog":{"title":"संग्रह जमा केला","content":"धन्यवाद {{authorName}}. आपला संग्रह पुनरावलोकना साठी जमा झाला आहे. तुम्हीं स्थिति सारखी तपासू सकताइकडे"},"confirmDialog":{"resetLibrary":"संग्रह पुनर्स्थित करा","removeItemsFromLib":"निवडलेले आयटम्स संग्रहातून काढा"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"तुमचे चित्रे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत, त्या कारणांनी ऐक्सकैलिड्रॉ सर्वर्स ह्यानां ते पहाणं कधीच जमणार नाही.","link":"ब्लॉग पोस्ट ऐक्सकैलिड्रॉ मधे या टोकापासून त्या टोकापर्यंत कूटबद्धतित आहेत"},"stats":{"angle":"कोण","element":"वस्तु","elements":"वस्तु","height":"उंची","scene":"दृश्य","selected":"निवडलेले","storage":"साठवण","title":"अभ्यासू लोगो के लिये आंकडे","total":"योग","version":"आवृत्ती","versionCopy":"कॉपी करायला क्लिक करा","versionNotAvailable":"आवृति उपलब्ध नाही","width":"रुंदी"},"toast":{"addedToLibrary":"संग्रह मधे सम्मिलित","copyStyles":"कॉपी केलेली शैली.","copyToClipboard":"फळी वर कॉपी झाली.","copyToClipboardAsPng":"{{exportSelection}} फळी वर पी-एन-जी स्वरूपात कॉपी झाली\\n({{exportColorScheme}})","fileSaved":"फ़ाइल जतन झाली.","fileSavedToFilename":"{filename} मधे जतन झाली","canvas":"पटल","selection":"निवड","pasteAsSingleElement":"एक घटक म्हणून चिपकावण्या साठी {{shortcut}} वापरा,\\nकिंवा विद्यमान मजकूर संपादकात चिपकवा","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"पारदर्शक","black":"काळा","white":"पांढरा","red":"लाल","pink":"गुलाबी","grape":"अंगूरी","violet":"जांभळा","gray":"राखाडी","blue":"निळा","cyan":"आकाशी","teal":"हिरवट निळा","green":"हिरवा","yellow":"पिवळा","orange":"केशरी","bronze":"कांस्य"},"welcomeScreen":{"app":{"center_heading":"तुमचा सर्व डेटा तुमच्या ब्राउझरमध्ये स्थानिक पातळीवर जतन केला जातो.","center_heading_plus":"त्याऐवजी तुम्हाला Excalidraw+ वर जायचे आहे का?","menuHint":"निर्यात, आवड़ी-निवडी, भाषा, ..."},"defaults":{"menuHint":"निर्यात, आवड़ी निवडी आणि आणकिही...","center_heading":"आकृत्या. काढणे. सोपे.","toolbarHint":"एक साधन निवडा आणि चित्रीकरण सुरु करा!","helpHint":"शॉर्टकट आणि सहाय्य"}},"colorPicker":{"mostUsedCustomColors":"सर्वात जास्त वापरणीस रंग","colors":"रंग","shades":"रंगछटा","hexCode":"हेक्स कोड","noShades":"ह्या रंगाच्या छटा उपलब्ध नाहित"},"overwriteConfirm":{"action":{"exportToImage":{"title":"छवि स्वरूपे निर्यात करा","button":"छवि स्वरूपे निर्यात करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"saveToDisk":{"title":"डिस्क मधे जतन करा","button":"डिस्क मधे जतन करा","description":"सीन डेटा बाहेर एक फ़ाइल मधे जतन करा, त्या फ़ाइल मधुन तो डेटा नंतर परत आणु शकता."},"excalidrawPlus":{"title":"एक्षकालीड्रॉ +","button":"एक्षकाली ड्रॉ+ मधे निर्यात करा","description":"दृष्य तुमच्या एक्षकालीड्रॉ+ चा कार्यस्थल मधे जतन करा."}},"modal":{"loadFromFile":{"title":"फ़ाइल मधुन लोड करा","button":"फ़ाइल मधुन लोड करा","description":"फ़ाइल मधुन लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."},"shareableLink":{"title":"लिंक पासून लोड करा","button":"माझ सध्याचे कार्य बदला","description":"बाहरी चित्र लोड केल्या वर ते तुमचा सध्याचा कामा ठिकाणि एईल

तुम्हीं तुमचं चित्र एकाधं खाली दिलेलं विकल्प निवडुन पहले सुरक्षीत करु शकता."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js b/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js new file mode 100644 index 0000000..df59cae --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/my-MM-json-3ba296b6fcf2a2197a7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1477],{7704:function(e){e.exports=JSON.parse('{"labels":{"paste":"ထား","pasteAsPlaintext":"","pasteCharts":"","selectAll":"အကုန်ရွေး","multiSelect":"ရွေးထားသည့်ထဲပုံထည့်","moveCanvas":"ကားချပ်ရွှေ့","cut":"","copy":"ကူး","copyAsPng":"PNG အနေဖြင့်ကူး","copyAsSvg":"SVG အနေဖြင့်ကူး","copyText":"","bringForward":"ရှေ့ပို့","sendToBack":"နောက်ဆုံးထား","bringToFront":"ရှေ့ဆုံးထား","sendBackward":"နောက်ပို့","delete":"ဖျက်","copyStyles":"ပုံစံကူး","pasteStyles":"ပုံစံထား","stroke":"မျဉ်း","background":"နောက်ခံ","fill":"ဖြည့်","strokeWidth":"မျဉ်းအထူ","strokeStyle":"မျဉ်းပုံစံ","strokeStyle_solid":"အပြည့်","strokeStyle_dashed":"မျဉ်းပြတ်","strokeStyle_dotted":"မျဉ်းစက်","sloppiness":"သေသပ်မှု","opacity":"ထင်ရှားမှု","textAlign":"စာသားညှိ","edges":"အစွန်း","sharp":"ထောင့်ချွန်","round":"ထောင့်ဝိုင်း","arrowheads":"မြှားခေါင်း","arrowhead_none":"ဘာမျှမရှိ","arrowhead_arrow":"မြှား","arrowhead_bar":"","arrowhead_dot":"အစက်","arrowhead_triangle":"","fontSize":"စာလုံးအရွယ်","fontFamily":"စာလုံးပုံစံ","addWatermark":"\\"Excalidraw ဖြင့်ဖန်တီးသည်။\\" စာသားထည့်","handDrawn":"လက်ရေး","normal":"ပုံမှန်","code":"ကုဒ်","small":"အသေး","medium":"အလတ်","large":"အကြီး","veryLarge":"ပိုကြီး","solid":"အပြည့်","hachure":"မျဉ်းစောင်း","zigzag":"","crossHatch":"ဇကာကွက်","thin":"ပါး","bold":"ထူ","left":"ဘယ်","center":"အလယ်","right":"ညာ","extraBold":"ပိုထူ","architect":"ဗိသုကာ","artist":"ပန်းချီ","cartoonist":"ကာတွန်း","fileTitle":"","colorPicker":"အရောင်ရွေး","canvasColors":"","canvasBackground":"ကားချပ်နောက်ခံ","drawingCanvas":"ပုံဆွဲကားချပ်","layers":"အလွှာများ","actions":"လုပ်ဆောင်ချက်များ","language":"ဘာသာစကား","liveCollaboration":"","duplicateSelection":"ပွား","untitled":"အမည်မရှိ","name":"အမည်","yourName":"သင့်အမည်","madeWithExcalidraw":"Excalidraw ဖြင့်ဖန်တီးသည်။","group":"အုပ်စုဖွဲ့","ungroup":"အုပ်စုဖျက်သိမ်း","collaborators":"ပူးပေါင်းပါဝင်သူများ","showGrid":"","addToLibrary":"မှတ်တမ်းတင်","removeFromLibrary":"မှတ်တမ်းမှထုတ်","libraryLoadingMessage":"မှတ်တမ်းအား တင်သွင်းနေသည်…","libraries":"စာကြည့်တိုက်တွင်ရှာဖွေပါ","loadingScene":"မြင်ကွင်းဖော်နေသည်…","align":"ချိန်ညှိ","alignTop":"ထိပ်ညှိ","alignBottom":"အခြေညှိ","alignLeft":"ဘယ်ညှိ","alignRight":"ညာညှိ","centerVertically":"ဒေါင်လိုက်အလယ်ညှိ","centerHorizontally":"အလျားလိုက်အလယ်ညှိ","distributeHorizontally":"အလျားလိုက်","distributeVertically":"ထောင်လိုက်","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"ကားချပ်ရှင်းလင်း","exportJSON":"","exportImage":"","export":"","copyToClipboard":"ကူးယူ","save":"","saveAs":"ပြောင်းသိမ်း","load":"","getShareableLink":"မျှဝေရန် လင့်ခ်ရယူ","close":"ပိတ်","selectLanguage":"ဘာသာစကားရွေးပါ","scrollBackToContent":"ကားချပ်ပြန်တည်","zoomIn":"ချဲ့","zoomOut":"ချုံ့","resetZoom":"ပုံမှန်ပြန်ထား","menu":"မီနူး","done":"ပြီးပြီ","edit":"ပြင်ဆင်","undo":"ပြန်ထား","redo":"ထပ်လုပ်","resetLibrary":"","createNewRoom":"အခန်းသစ်ဖွဲ့","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"ဇင်မြင်ကွင်းမှထွက်","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"ကားချပ်တစ်ခုလုံးရှင်းလင်းပါတော့မည်။ အတည်ပြုပါ။","couldNotCreateShareableLink":"မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotCreateShareableLinkTooBig":"မြင်ကွင်းအရမ်းကြီးနေသဖြင့် မျှဝေရန် လင့်ခ်မရယူနိုင်သေးပါ။","couldNotLoadInvalidFile":"လွဲမှားနေသောဖိုင်အား တင်၍မရပါ။","importBackendFailed":"Backend မှမလုပ်ဆောင်နိုင်သေးပါ။","cannotExportEmptyCanvas":"ကားချပ်အလွတ်အားထုတ်ယူ၍မရပါ။","couldNotCopyToClipboard":"","decryptFailed":"အချက်အလက်ဖော်ယူ၍မရပါ။","uploadedSecurly":"တင်သွင်းအချက်အလက်များအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်စနစ်အသုံးပြု၍လုံခြုံစွာထိန်းသိမ်းထားပါသဖြင့် Excalidraw ဆာဗာနှင့်ဆက်စပ်အဖွဲ့အစည်းများပင်လျှင်မဖတ်ရှုနိုင်ပါ။","loadSceneOverridePrompt":"လက်ရှိရေးဆွဲထားသမျှအား ပြင်ပမှတင်သွင်းသောပုံနှင့်အစားထိုးပါမည်။ ဆက်လက်ဆောင်ရွက်လိုပါသလား။","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။","imageDoesNotContainScene":"","cannotRestoreFromImage":"ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ရွေးချယ်","image":"","rectangle":"စတုဂံ","diamond":"စိန်","ellipse":"အဝိုင်း","arrow":"မြှား","line":"မျဉ်း","freedraw":"","text":"စာသား","library":"မှတ်တမ်း","lock":"ရွေးချယ်ထားသောကိရိယာကိုသာဆက်သုံး","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ကားချပ်လုပ်ဆောင်ချက်","selectedShapeActions":"ပုံသဏ္ဌာန်လုပ်ဆောင်ချက်","shapes":"ပုံသဏ္ဌာန်များ"},"hints":{"canvasPanning":"","linearElement":"အမှတ်များချမှတ်ရေးဆွဲရန်ကလစ်နှိပ်ပါ၊ မျဉ်းတစ်ကြောင်းတည်းအတွက် တရွတ်ဆွဲပါ။","freeDraw":"ကလစ်နှိပ်၍ တရွတ်ဆွဲပါ၊ ပြီးလျှင်လွှတ်ပါ။","text":"မှတ်ချက်။ ။မည်သည့်ကိရိယာရွေးထားသည်ဖြစ်စေ ကလစ်နှစ်ချက်နှိပ်၍စာသားထည့်နိုင်သည်","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"နောက်ဆုံးအမှတ်ပေါ်တွင်ကလစ်နှိပ်ခြင်း၊ Escape (သို့) Enter နှိပ်ခြင်းတို့ဖြင့်အဆုံးသတ်နိုင်","lockAngle":"","resize":"အချိုးအစားကန့်သတ်ရန် Shift နှင့် ဗဟိုမှချိန်ညှိရန် Alt တို့ကိုနှိပ်ထားနိုင်သည်","resizeImage":"","rotate":"Shift ကိုနှိပ်ထားခြင်းဖြင့် ထောင့်အလိုက်လှည့်နိုင်သည်","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"နမူနာမပြသနိုင်ပါ","canvasTooBig":"ကားချပ်အလွန်ကြီးကောင်းကြီးနေနိုင်သည်။","canvasTooBigTip":"မှတ်ချက်။ ။ဝေးကွာနေသော ပုံများ၊ စာများအား ပိုမိုနီးကပ်အောင်ရွှေ့ကြည့်ပါ။"},"errorSplash":{"headingMain":"ချို့ယွင်းမှုဖြစ်ပေါ်ခဲ့သဖြင့် ထပ်မံကြိုးစားကြည့်ရန် ","clearCanvasMessage":"အသစ်ပြန်လည်မရယူနိုင်ပါက ထပ်မံကြိုးစားကြည့်ရန်","clearCanvasCaveat":" ရေးဆွဲထားသည်များ ဆုံးရှုံးနိုင်သည် ","trackedToSentry":"ချို့ယွင်းမှုသတ်မှတ်ချက် {{eventId}} အားစနစ်အတွင်းခြေရာကောက်ပြီးပါပြီ။","openIssueMessage":"ချို့ယွင်းမှုမှတ်တမ်းတွင် အရေးကြီးအချက်အလက်များပါဝင်မှုမရှိစေရန်အထူးသတိပြုပါသည်။ မပါဝင်ပါက ဆက်လက်ဆောင်ရွက်ရန် အောက်ပါအချက်အလက်များအား Github တွင် Issue အနေဖြင့်ဖြည့်သွင်းဖော်ပြပေးပါ။","sceneContent":"မြင်ကွင်းပါအချက်အလက်။ ။"},"roomDialog":{"desc_intro":"လက်ရှိမြင်ကွင်းတွင်ပူးပေါင်းရေးဆွဲရန် အခြားသူများအား ဖိတ်ကြားနိုင်သည်။","desc_privacy":"နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့်ရေးဆွဲသမျှအား ဆာဗာပေါ်မှပင်လျှင်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ။ မစိုးရိမ်ပါနှင့်။","button_startSession":"ပူးပေါင်းမှုစတင်","button_stopSession":"ပူးပေါင်းမှုအဆုံးသတ်","desc_inProgressIntro":"တိုက်ရိုက်ပူးပေါင်းရေးဆွဲမှုများပြုလုပ်နေပါသည်။","desc_shareLink":"ဤလင့်ခ်အား ပူးပေါင်းရေးဆွဲလိုသူများထံပေးပို့ပါ။ ။ ","desc_exitSession":"ပူးပေါင်းမှုရပ်တန့်ပါက အဖွဲ့အတွင်းမှထွက်ခွာသွားမည်ဖြစ်သော်လည်း မိမိမြင်ကွင်းတွင်ဆက်လက်ရေးဆွဲနိုင်ပါမည်။ အဖွဲ့အတွင်းကျန်ရှိနေခဲ့သောအခြားပါဝင်သူများသည်လည်း ဆက်လက်ပူးပေါင်းရေးဆွဲနေနိုင်ပါလိမ့်မည်။","shareTitle":""},"errorDialog":{"title":"ချို့ယွင်းချက်"},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"ရေးဆွဲထားသောပုံများအား နှစ်ဘက်စွန်းတိုင်လျှို့ဝှက်ထားသဖြင့် Excalidraw ၏ဆာဗာများပင်လျှင်မြင်တွေ့ရမည်မဟုတ်ပါ။","link":""},"stats":{"angle":"ထောင့်","element":"","elements":"","height":"အမြင့်","scene":"မြင်ကွင်း","selected":"ရွေးချယ်သည်","storage":"သိုလှောင်ခန်း","title":"အက္ခရာများအတွက်အချက်အလက်များ","total":"စုစုပေါင်း","version":"","versionCopy":"","versionNotAvailable":"","width":"အကျယ်"},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js b/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js new file mode 100644 index 0000000..8db1bfd --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nb-NO-json-798d785698d467e76fcf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2359],{1167:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"Lim inn som klartekst","pasteCharts":"Lim inn diagrammer","selectAll":"Velg alt","multiSelect":"Legg til element i utvalg","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til PNG","copyAsSvg":"Kopier til utklippstavlen som SVG","copyText":"Kopier til utklippstavlen som tekst","bringForward":"Flytt framover","sendToBack":"Send bakerst","bringToFront":"Flytt forrest","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stiler","pasteStyles":"Lim inn stiler","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strektykkelse","strokeStyle":"Strekstil","strokeStyle_solid":"Heltrukket","strokeStyle_dashed":"Stiplet","strokeStyle_dotted":"Prikket","sloppiness":"Ujevnhet","opacity":"Synlighet","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilspisser","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Søyle","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstørrelse","fontFamily":"Fontfamilie","addWatermark":"Legg til \\"Laget med Excalidraw\\"","handDrawn":"Håndtegnet","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Helfarge","hachure":"Skravert","zigzag":"Sikk-sakk","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tykk","left":"Venstre","center":"Midtstill","right":"Høyre","extraBold":"Ekstra tykk","architect":"Arkitekt","artist":"Kunstner","cartoonist":"Tegner","fileTitle":"Filnavn","colorPicker":"Fargevelger","canvasColors":"Brukes på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlinger","language":"Språk","liveCollaboration":"Sanntids-samarbeid...","duplicateSelection":"Dupliser","untitled":"Uten navn","name":"Navn","yourName":"Ditt navn","madeWithExcalidraw":"Laget med Excalidraw","group":"Gruppér utvalg","ungroup":"Avgruppér utvalg","collaborators":"Samarbeidspartnere","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern fra bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Bla gjennom biblioteker","loadingScene":"Laster inn scene…","align":"Juster","alignTop":"Juster øverst","alignBottom":"Juster nederst","alignLeft":"Juster venstre","alignRight":"Juster høyre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Distribuer horisontalt","distributeVertically":"Distribuer vertikalt","flipHorizontal":"Snu horisontalt","flipVertical":"Snu vertikalt","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargevelger for kantfarge","showBackground":"Vis fargevelger for bakgrunnsfarge","toggleTheme":"Veksle tema","personalLib":"Personlig bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Reduser skriftstørrelse","increaseFontSize":"Øk skriftstørrelse","unbindText":"Avbind tekst","bindText":"Bind tekst til beholderen","createContainerFromText":"La tekst flyte i en beholder","link":{"edit":"Rediger lenke","editEmbed":"Rediger lenke og bygg inn","create":"Opprett lenke","createEmbed":"Opprett lenke og bygg inn","label":"Lenke","labelEmbed":"Lenk & bygg inn","empty":"Ingen lenke er valgt"},"lineEditor":{"edit":"Rediger linje","exit":"Avslutt linjeredigering"},"elementLock":{"lock":"Lås","unlock":"Lås opp","lockAll":"Lås alle","unlockAll":"Lås opp alle"},"statusPublished":"Publisert","sidebarLock":"Holde sidemenyen åpen","selectAllElementsInFrame":"Velg alle elementene i rammen","removeAllElementsFromFrame":"Fjern alle elementer fra rammen","eyeDropper":"Velg farge fra lerretet"},"library":{"noItems":"Ingen elementer lagt til ennå...","hint_emptyLibrary":"Velg et objekt på lerretet for å legge det til her, eller installer et bibliotek fra den offentlige samlingen under.","hint_emptyPrivateLibrary":"Velg et objekt på lerretet for å legge det til her."},"buttons":{"clearReset":"Tøm lerretet og tilbakestill bakgrunnsfargen","exportJSON":"Eksporter til fil","exportImage":"Eksporter bilde...","export":"Lagre som...","copyToClipboard":"Kopier til utklippstavle","save":"Lagre til aktiv fil","saveAs":"Lagre som","load":"Åpne","getShareableLink":"Få delingslenke","close":"Lukk","selectLanguage":"Velg språk","scrollBackToContent":"Skroll tilbake til innhold","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjør om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Opprett et nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"Slå av/på innebygging","publishLibrary":"Publiser","submit":"Send inn","confirm":"Bekreft","embeddableInteractionButton":"Klikk for å samhandle"},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikke lage delbar lenke.","couldNotCreateShareableLinkTooBig":"Kunne ikke opprette lenke til deling: scenen er for stor","couldNotLoadInvalidFile":"Kunne ikke laste inn ugyldig fil","importBackendFailed":"Importering av backend feilet.","cannotExportEmptyCanvas":"Kan ikke eksportere et tomt lerret.","couldNotCopyToClipboard":"Kunne ikke kopiere til utklippstavlen.","decryptFailed":"Kunne ikke dekryptere data.","uploadedSecurly":"Opplastingen er kryptert og kan ikke leses av Excalidraw-serveren eller tredjeparter.","loadSceneOverridePrompt":"Å laste inn ekstern tegning vil erstatte det eksisterende innholdet. Ønsker du å fortsette?","collabStopOverridePrompt":"Hvis du slutter økten, overskrives din forrige, lokalt lagrede tegning. Er du sikker?\\n\\n(Hvis du ønsker å beholde din lokale tegning, bare lukk nettleserfanen i stedet.)","errorAddingToLibrary":"Kunne ikke legge element i biblioteket","errorRemovingFromLibrary":"Kunne ikke fjerne element fra biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Det ser ikke ut til at dette bildet inneholder noen scenedata. Har du aktivert innebygging av scene under eksporten?","cannotRestoreFromImage":"Scenen kunne ikke gjenopprettes fra denne bildefilen","invalidSceneUrl":"Kunne ikke importere scene fra den oppgitte URL-en. Den er enten ødelagt, eller inneholder ikke gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil tømme biblioteket ditt. Er du sikker?","removeItemsFromsLibrary":"Slett {{count}} element(er) fra biblioteket?","invalidEncryptionKey":"Krypteringsnøkkel må ha 22 tegn. Live-samarbeid er deaktivert.","collabOfflineWarning":"Ingen Internett-tilkobling tilgjengelig.\\nEndringer dine vil ikke bli lagret!"},"errors":{"unsupportedFileType":"Filtypen støttes ikke.","imageInsertError":"Kunne ikke sette inn bildet. Prøv igjen senere...","fileTooBig":"Filen er for stor. Maksimal tillatt størrelse er {{maxSize}}.","svgImageInsertError":"Kunne ikke sette inn SVG-bilde. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikke koble til samarbeidsserveren. Vennligst oppdater siden og prøv på nytt.","importLibraryError":"Kunne ikke laste bibliotek","collabSaveFailed":"Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.","collabSaveFailed_sizeExceeded":"Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt.","brave_measure_text_error":{"line1":"Ser ut som om du bruker Brave nettleser med Aggressivt Block Finger -innstillingen aktivert.","line2":"Dette kan resultere i å bryte tekst-elementene i tegningene.","line3":"Vi anbefaler på det sterkeste å deaktivere denne innstillingen. Du kan følge disse trinnene om hvordan du gjør det.","line4":"Hvis deaktivering av denne innstillingen ikke fikser visningen av tekstelementer, vennligst åpne en sak på vår GitHub, eller skriv oss på Discord"},"libraryElementTypeError":{"embeddable":"Innebygde elementer kan ikke legges til i biblioteket.","image":"Støtte for å legge til bilder i biblioteket kommer snart!"}},"toolBar":{"selection":"Velg","image":"Sett inn bilde","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Tegn","text":"Tekst","library":"Bibliotek","lock":"Behold merket verktøy som aktivt","penMode":"Pennemodus - forhindre berøring","link":"Legg til / oppdater link for en valgt figur","eraser":"Viskelær","frame":"Rammeverktøy","embeddable":"Nettinnbygging","laser":"","hand":"Hånd (panoreringsverktøy)","extraTools":"Flere verktøy"},"headings":{"canvasActions":"Handlinger: lerret","selectedShapeActions":"Handlinger: valgt objekt","shapes":"Former"},"hints":{"canvasPanning":"For å flytte lerretet, hold musehjulet eller mellomromstasten mens du drar, eller bruk hånd-verktøyet","linearElement":"Klikk for å starte linje med flere punkter, eller dra for en enkel linje","freeDraw":"Klikk og dra, slipp når du er ferdig","text":"Tips: du kan også legge til tekst ved å dobbeltklikke hvor som helst med utvalgsverktøyet","embeddable":"Klikk og dra for å opprette en nettside innebygd","text_selected":"Dobbeltklikk eller trykk ENTER for å redigere tekst","text_editing":"Trykk Escape eller Ctrl/Cmd+Enter for å fullføre redigering","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan låse vinkelen ved å holde nede SHIFT","resize":"Du kan beholde forholdet ved å trykke SHIFT mens du endrer størrelse,\\ntrykk ALT for å endre størrelsen fra midten","resizeImage":"Du kan endre størrelse fritt ved å holde SHIFT,\\nhold ALT for å endre størrelse fra midten","rotate":"Du kan låse vinklene ved å holde SHIFT mens du roterer","lineEditor_info":"Hold Ctrl/Cmd og dobbelklikk eller trykk Ctrl/Cmd + Enter for å endre punkter","lineEditor_pointSelected":"Trykk på Slett for å fjerne punktet, Ctrl / Cmd+D for å duplisere, eller dra for å flytte","lineEditor_nothingSelected":"Velg et punkt å redigere (hold SHIFT for å velge flere),\\neller hold Alt og klikk for å legge til nye punkter","placeImage":"Klikk for å plassere bildet, eller klikk og dra for å angi størrelsen manuelt","publishLibrary":"Publiser ditt eget bibliotek","bindTextToElement":"Trykk Enter for å legge til tekst","deepBoxSelect":"Hold CTRL/CMD for å markere dypt og forhindre flytting","eraserRevert":"Hold Alt for å reversere elementene merket for sletting","firefox_clipboard_write":"Denne funksjonen kan sannsynligvis aktiveres ved å sette \\"dom.events.asyncClipboard.clipboardItem\\" flagget til \\"true\\". For å endre nettleserens flagg i Firefox, besøk \\"about:config\\"-siden.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikke vise forhåndsvisning","canvasTooBig":"Lerretet kan være for stort.","canvasTooBigTip":"Tips: Prøv å flytte de ytterste elementene litt tettere sammen."},"errorSplash":{"headingMain":"En feil oppsto. Prøv ","clearCanvasMessage":"Om ny sidelasting ikke fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} ble logget i vårt system.","openIssueMessage":"Vi er veldig nøye med å ikke inkludere dine scene-opplysninger i feilen. Hvis din scene ikke er privat, vurder å følge opp i vårt Ta med opplysningene nedenfor ved å kopiere og lime inn i GitHub-saken.","sceneContent":"Scene-innhold:"},"roomDialog":{"desc_intro":"Du kan invitere personer til scenen din for å samarbeide med deg.","desc_privacy":"Ta det med ro, sesjonen bruker ende-til-ende-kryptering, så alt du tegner forblir privat. Ikke en gang serveren vår kan se hva du lager.","button_startSession":"Start økt","button_stopSession":"Stopp sesjon","desc_inProgressIntro":"Sanntids-samarbeidsøkt er nå i gang.","desc_shareLink":"Del denne linken med de du vil samarbeide med:","desc_exitSession":"Dersom du avslutter sesjonen blir du frakoblet rommet, men du kan fortsette å arbeide med scenen lokalt. Vær oppmerksom på at dette ikke vil påvirke andre personer, og de vil fortsatt ha mulighet til å samarbeide på deres versjon.","shareTitle":"Bli med i en live samarbeidsøkt på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scene-dataene til en fil som du kan importere fra senere.","disk_button":"Lagre til fil","link_title":"Delbar lenke","link_details":"Eksporter som en skrivebeskyttet lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scenen til ditt Excalidraw+ arbeidsområde.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikke eksportere til Excalidraw+ for øyeblikket..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker dypt","deepBoxSelect":"Marker dypt innad i boks og forhindre flytting","curvedArrow":"Buet pil","curvedLine":"Buet linje","documentation":"Dokumentasjon","doubleClick":"dobbeltklikk","drag":"dra","editor":"Redigeringsvisning","editLineArrowPoints":"Rediger linje/pilpunkter","editText":"Rediger tekst / legg til etikett","github":"Funnet et problem? Send inn","howto":"Følg våre veiledninger","or":"eller","preventBinding":"Forhindre pilbinding","tools":"Verktøy","shortcuts":"Tastatursnarveier","textFinish":"Fullfør redigering (teksteditor)","textNewLine":"Legg til ny linje (teksteditor)","title":"Hjelp","view":"Vis","zoomToFit":"Zoom for å se alle elementer","zoomToSelection":"Zoom til utvalg","toggleElementLock":"Lås/lås opp utvalg","movePageUpDown":"Flytt side opp/ned","movePageLeftRight":"Flytt siden til venstre/høyre"},"clearCanvasDialog":{"title":"Tøm lerret"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnavn","authorName":"Forfatterens navn","githubUsername":"GitHub-brukernavnet","twitterUsername":"Twitter-brukernavn","libraryName":"Biblioteknavn","libraryDesc":"Beskrivelse av bibliotek","website":"Nettsted","placeholder":{"authorName":"Ditt navn eller brukernavn","libraryName":"Navnet på biblioteket ditt","libraryDesc":"Beskrivelse av biblioteket ditt for å hjelpe folk med å forstå bruken","githubHandle":"Github-brukernavn (valgfritt), slik at du kan redigere biblioteket når du har sendt inn for gjennomgang","twitterHandle":"Twitter-brukernavn (valgfritt), slik at vi vet hvem vi skal kreditere når promotert på Twitter","website":"Lenke til din personlige nettside eller et annet sted (valgfritt)"},"errors":{"required":"Påkrevd","website":"Angi en gyldig nettadresse"},"noteDescription":"Send inn biblioteket ditt som skal inkluderes i kildekode for offentlig bibliotekfor andre å bruke dem i tegninger.","noteGuidelines":"Biblioteket må godkjennes manuelt først. Les retningslinjene før innsending. Du vil trenge en GitHub-konto for å kommunisere og gjøre endringer hvis ønsket, men det er ikke påkrevd.","noteLicense":"Ved å sende inn godtar du at biblioteket blir publisert under MIT-lisens, som kortfattet betyr at andre kan bruke dem uten begrensninger.","noteItems":"Hvert bibliotek må ha sitt eget navn, så det er filtrerbart. Følgende bibliotekselementer vil bli inkludert:","atleastOneLibItem":"Vennligst velg minst ett bibliotek for å komme i gang","republishWarning":"Merk: noen av de valgte elementene er merket som allerede publisert/sendt. Du bør kun sende inn elementer på nytt når du oppdaterer et eksisterende bibliotek eller innlevering."},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Takk {{authorName}}. Ditt bibliotek har blitt sendt inn for gjennomgang. Du kan spore statusenher"},"confirmDialog":{"resetLibrary":"Nullstill bibliotek","removeItemsFromLib":"Fjern valgte elementer fra bibliotek"},"imageExportDialog":{"header":"Eksporter bilde","label":{"withBackground":"Bakgrunn","onlySelected":"Kun valgte","darkMode":"Mørk modus","embedScene":"Bygg inn scene","scale":"Skalering","padding":"Avstand"},"tooltip":{"embedScene":"Scenedata vil bli lagret i den eksporterte PNG/SVG-filen, slik at scenen kan gjenopprettes fra den.\\nDet vil øke den eksporterte filstørrelsen."},"title":{"exportToPng":"Eksporter til PNG","exportToSvg":"Eksporter til SVG","copyPngToClipboard":"Kopier PNG til utklippstavlen"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopier til utklippstavle"}},"encrypted":{"tooltip":"Dine tegninger er ende-til-ende-krypterte slik at Excalidraw sine servere aldri vil se dem.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Elementer","height":"Høyde","scene":"Scene","selected":"Valgt","storage":"Lagring","title":"Statistikk for nerder","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjon ikke tilgjengelig","width":"Bredde"},"toast":{"addedToLibrary":"Lagt til i biblioteket","copyStyles":"Kopierte stiler.","copyToClipboard":"Kopiert til utklippstavlen.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavlen som PNG\\n({{exportColorScheme}})","fileSaved":"Fil lagret.","fileSavedToFilename":"Lagret til {filename}","canvas":"lerret","selection":"utvalg","pasteAsSingleElement":"Bruk {{shortcut}} for å lime inn som ett enkelt element,\\neller lim inn i en eksisterende tekstbehandler","unableToEmbed":"Innbygging av denne nettadressen er ikke tillatt. Oppret en sak på GitHub for å be om url-hvitelisting","unrecognizedLinkFormat":"Linken du bygget inn samsvarer ikke med det forventede formatet. Prøv å lime inn \\"bygg inn\\"-strengen fra kildesiden"},"colors":{"transparent":"Gjennomsiktig","black":"Svart","white":"Hvit","red":"Rød","pink":"Rosa","grape":"Drue","violet":"Fiolett","gray":"Grå","blue":"Blå","cyan":"Turkis","teal":"Blågrønn","green":"Grønn","yellow":"Gul","orange":"Oransje","bronze":"Bronse"},"welcomeScreen":{"app":{"center_heading":"Alle dine data lagres lokalt i din nettleser.","center_heading_plus":"Ønsker du å gå til Excalidraw+ i stedet?","menuHint":"Eksporter, innstillinger, språk, ..."},"defaults":{"menuHint":"Eksporter, innstillinger og mer...","center_heading":"Diagrammer. Gjort. Enkelt.","toolbarHint":"Velg et verktøy og start å tegne!","helpHint":"Snarveier & hjelp"}},"colorPicker":{"mostUsedCustomColors":"Mest brukte egendefinerte farger","colors":"Farger","shades":"Toner","hexCode":"Heksadesimal kode","noShades":"Ingen toner tilgjengelig for denne fargen"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksporter som bilde","button":"Eksporter som bilde","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"saveToDisk":{"title":"Lagre til disk","button":"Lagre til disk","description":"Eksporter scene-dataene til en fil som du kan importere fra senere."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksporter til Excalidraw+","description":"Lagre scenen til ditt Excalidraw+-arbeidsområde."}},"modal":{"loadFromFile":{"title":"Last inn fra fil","button":"Last inn fra fil","description":"Å laste fra en fil vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene under."},"shareableLink":{"title":"Last inn fra lenke","button":"Erstatt innholdet mitt","description":"Lasting av ekstern tegning vil erstatte ditt eksisterende innhold.

Du kan sikkerhetskopiere tegningen din først ved å bruke en av valgene nedenfor."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js b/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js new file mode 100644 index 0000000..b196e54 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nl-NL-json-2cf913fe2f491c5d7075.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3024],{290:function(e){e.exports=JSON.parse('{"labels":{"paste":"Plakken","pasteAsPlaintext":"Plakken als platte tekst","pasteCharts":"Plak grafieken","selectAll":"Alles selecteren","multiSelect":"Voeg element toe aan selectie","moveCanvas":"Canvas verplaatsen","cut":"Knip","copy":"Kopiëren","copyAsPng":"Kopieer als PNG","copyAsSvg":"Kopieer naar klembord als SVG","copyText":"Kopieer naar klembord als tekst","bringForward":"Breng naar voren","sendToBack":"Stuur naar achtergrond","bringToFront":"Breng naar voorgrond","sendBackward":"Breng naar achter","delete":"Verwijderen","copyStyles":"Kopieer opmaak","pasteStyles":"Plak opmaak","stroke":"Lijn","background":"Achtergrond","fill":"Invulling","strokeWidth":"Lijnbreedte","strokeStyle":"Lijnstijl","strokeStyle_solid":"Ononderbroken","strokeStyle_dashed":"Gestreept","strokeStyle_dotted":"Gestippeld","sloppiness":"Slordigheid","opacity":"Doorzichtigheid","textAlign":"Uitlijning","edges":"Randen","sharp":"Hoekig","round":"Rond","arrowheads":"Pijlpunten","arrowhead_none":"Geen","arrowhead_arrow":"Pijl","arrowhead_bar":"Balk","arrowhead_dot":"Punt","arrowhead_triangle":"Driehoek","fontSize":"Tekstgrootte","fontFamily":"Lettertype","addWatermark":"Voeg \\"Gemaakt met Excalidraw\\" toe","handDrawn":"Handgetekend","normal":"Normaal","code":"Code","small":"Klein","medium":"Medium","large":"Groot","veryLarge":"Zeer groot","solid":"Ingekleurd","hachure":"Arcering","zigzag":"","crossHatch":"Tweemaal gearceerd","thin":"Dun","bold":"Vet","left":"Links","center":"Midden","right":"Rechts","extraBold":"Zwaar","architect":"Architect","artist":"Artiest","cartoonist":"Cartoonist","fileTitle":"Bestandsnaam","colorPicker":"Kleurenkiezer","canvasColors":"Gebruikt op canvas","canvasBackground":"Canvas achtergrond","drawingCanvas":"Canvas","layers":"Lagen","actions":"Acties","language":"Taal","liveCollaboration":"Live Samenwerking...","duplicateSelection":"Dupliceer","untitled":"Naamloos","name":"Naam","yourName":"Jouw naam","madeWithExcalidraw":"Gemaakt met Excalidraw","group":"Groeperen","ungroup":"Groep opheffen","collaborators":"Deelnemers","showGrid":"Raster weergeven","addToLibrary":"Voeg toe aan bibliotheek","removeFromLibrary":"Verwijder uit bibliotheek","libraryLoadingMessage":"Bibliotheek laden…","libraries":"Blader door bibliotheken","loadingScene":"Scène laden…","align":"Uitlijnen","alignTop":"Boven uitlijnen","alignBottom":"Onder uitlijnen","alignLeft":"Links uitlijnen","alignRight":"Rechts uitlijnen","centerVertically":"Verticaal Centreren","centerHorizontally":"Horizontaal Centreren","distributeHorizontally":"Horizontaal verspreiden","distributeVertically":"Verticaal distribueren","flipHorizontal":"Horizontaal spiegelen","flipVertical":"Verticaal spiegelen","viewMode":"Weergavemodus","share":"Deel","showStroke":"Toon lijn kleur kiezer","showBackground":"Toon achtergrondkleur kiezer","toggleTheme":"Thema aan/uit","personalLib":"Persoonlijke bibliotheek","excalidrawLib":"Excalidraw bibliotheek","decreaseFontSize":"Letters verkleinen","increaseFontSize":"Letters vergroten","unbindText":"Ontkoppel tekst","bindText":"Koppel tekst aan de container","createContainerFromText":"","link":{"edit":"Wijzig link","editEmbed":"Link bewerken & insluiten","create":"Maak link","createEmbed":"Link maken en insluiten","label":"Link","labelEmbed":"Link toevoegen & insluiten","empty":"Er is geen link ingesteld"},"lineEditor":{"edit":"Bewerk regel","exit":"Verlaat regel-editor"},"elementLock":{"lock":"Vergrendel","unlock":"Ontgrendel","lockAll":"Vergrendel alles","unlockAll":"Ontgrendel alles"},"statusPublished":"Gepubliceerd","sidebarLock":"Zijbalk open houden","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Nog geen items toegevoegd...","hint_emptyLibrary":"Selecteer een item op het canvas om het hier toe te voegen of installeer een bibliotheek uit de openbare repository, hieronder.","hint_emptyPrivateLibrary":"Selecteer een item op het canvas om het hier toe te voegen."},"buttons":{"clearReset":"Canvas opnieuw instellen","exportJSON":"Exporteren naar bestand","exportImage":"Exporteer afbeelding...","export":"Sla op...","copyToClipboard":"Kopieer","save":"Opslaan naar huidige bestand","saveAs":"Opslaan als","load":"Open","getShareableLink":"Maak een deelbare link","close":"Sluiten","selectLanguage":"Taal selecteren","scrollBackToContent":"Scroll terug naar inhoud","zoomIn":"Inzoomen","zoomOut":"Uitzoomen","resetZoom":"Zoom terugzetten","menu":"Menu","done":"Klaar","edit":"Bewerken","undo":"Ongedaan maken","redo":"Herstel ongedaan maken","resetLibrary":"Bibliotheek Resetten","createNewRoom":"Creëer live-samenwerkingssessie","fullScreen":"Volledig scherm","darkMode":"Donkere modus","lightMode":"Lichte modus","zenMode":"Zen modus","objectsSnapMode":"","exitZenMode":"Verlaat zen modus","cancel":"Annuleren","clear":"Wissen","remove":"Verwijderen","embed":"Insluiten in-/uitschakelen","publishLibrary":"Publiceren","submit":"Versturen","confirm":"Bevestigen","embeddableInteractionButton":"Klik voor interactie"},"alerts":{"clearReset":"Dit zal het hele canvas verwijderen. Weet je het zeker?","couldNotCreateShareableLink":"Kon geen deelbare link aanmaken.","couldNotCreateShareableLinkTooBig":"Kan geen deelbare link aanmaken: de scène is te groot","couldNotLoadInvalidFile":"Kan ongeldig bestand niet laden","importBackendFailed":"Importeren vanuit backend mislukt.","cannotExportEmptyCanvas":"Kan geen leeg canvas exporteren.","couldNotCopyToClipboard":"Kon niet naar klembord kopiëren.","decryptFailed":"Kan gegevens niet decoderen.","uploadedSecurly":"De upload is beveiligd met end-to-end encryptie, wat betekent dat de Excalidraw server en derden de inhoud niet kunnen lezen.","loadSceneOverridePrompt":"Het inladen van een externe tekening zal je bestaande inhoud vervangen. Wil je verdergaan?","collabStopOverridePrompt":"Wanneer de sessie wordt gestopt, overschrijft u de eerdere, lokaal opgeslagen tekening. Weet je het zeker?\\n\\n(Als je de lokale tekening wilt behouden, sluit je in plaats daarvan het browsertabblad)","errorAddingToLibrary":"Kan item niet toevoegen aan de bibliotheek","errorRemovingFromLibrary":"Kan item niet uit de bibliotheek verwijderen","confirmAddLibrary":"Dit zal {{numShapes}} vorm(en) toevoegen aan je bibliotheek. Weet je het zeker?","imageDoesNotContainScene":"Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je scène embedding tijdens het exporteren ingeschakeld?","cannotRestoreFromImage":"Scène kan niet worden hersteld vanuit dit afbeeldingsbestand","invalidSceneUrl":"Kan scène niet importeren vanuit de opgegeven URL. Het is onjuist of bevat geen geldige Excalidraw JSON-gegevens.","resetLibrary":"Dit zal je bibliotheek wissen. Weet je het zeker?","removeItemsFromsLibrary":"Verwijder {{count}} item(s) uit bibliotheek?","invalidEncryptionKey":"Encryptiesleutel moet 22 tekens zijn. Live samenwerking is uitgeschakeld.","collabOfflineWarning":"Geen internetverbinding beschikbaar.\\nJe wijzigingen worden niet opgeslagen!"},"errors":{"unsupportedFileType":"Niet-ondersteund bestandstype.","imageInsertError":"Afbeelding invoegen mislukt. Probeer het later opnieuw...","fileTooBig":"Bestand is te groot. Maximale grootte is {{maxSize}}.","svgImageInsertError":"Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.","failedToFetchImage":"","invalidSVGString":"Ongeldige SVG.","cannotResolveCollabServer":"Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.","importLibraryError":"Kon bibliotheek niet laden","collabSaveFailed":"Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","collabSaveFailed_sizeExceeded":"Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"Ingesloten elementen kunnen niet worden toegevoegd aan de bibliotheek.","image":"Ondersteuning voor het toevoegen van afbeeldingen aan de bibliotheek komt binnenkort!"}},"toolBar":{"selection":"Selectie","image":"Voeg afbeelding in","rectangle":"Rechthoek","diamond":"Ruit","ellipse":"Ovaal","arrow":"Pijl","line":"Lijn","freedraw":"Teken","text":"Tekst","library":"Bibliotheek","lock":"Geselecteerde tool actief houden na tekenen","penMode":"Pen modus - Blokkeer aanraken","link":"Link toevoegen / bijwerken voor een geselecteerde vorm","eraser":"Gum","frame":"","embeddable":"Web insluiten","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Canvasacties","selectedShapeActions":"Acties van geselecteerde vorm","shapes":"Vormen"},"hints":{"canvasPanning":"Om de canvas te verplaatsen, houd muiswiel of spatiebalk ingedrukt tijdens slepen, of gebruik het handgereedschap","linearElement":"Klik om meerdere punten te starten, sleep voor één lijn","freeDraw":"Klik en sleep, laat los als je klaar bent","text":"Tip: je kunt tekst toevoegen door ergens dubbel te klikken met de selectietool","embeddable":"Klink-sleep om een website-insluiting te maken","text_selected":"Dubbelklik of druk op ENTER om tekst te bewerken","text_editing":"Druk op Escape of CtrlOrCmd+ENTER om het bewerken te voltooien","linearElementMulti":"Klik op het laatste punt of druk op Escape of Enter om te stoppen","lockAngle":"Je kunt de hoek beperken door SHIFT ingedrukt te houden","resize":"Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,\\ngebruik ALT om vanuit het midden te vergroten/verkleinen","resizeImage":"","rotate":"Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait","lineEditor_info":"Houd CtrlOrCmd en Dubbelklik of druk op CtrlOrCmd + Enter om punten te bewerken","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"Publiceer je eigen bibliotheek","bindTextToElement":"Druk op enter om tekst toe te voegen","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan voorbeeld niet tonen","canvasTooBig":"Het canvas is mogelijk te groot.","canvasTooBigTip":"Tip: beweeg de verste elementen iets dichter bij elkaar."},"errorSplash":{"headingMain":"Fout opgetreden. Probeer ","clearCanvasMessage":"Als herladen niet werkt, probeer ","clearCanvasCaveat":" Dit zal leiden tot verlies van je werk ","trackedToSentry":"De fout met ID {{eventId}} was gevolgd op ons systeem.","openIssueMessage":"We waren voorzichtig om je scène-informatie niet in de fout toe te voegen. Als je scène niet privé is, overweeg dan alstublieft het opvolgen op onze Kopieer de informatie hieronder naar de GitHub issue.","sceneContent":"Scène-inhoud:"},"roomDialog":{"desc_intro":"Je kunt mensen uitnodigen om met je samen te werken.","desc_privacy":"Geen zorgen, de sessie gebruikt end-to-end encryptie, dus wat je tekent blijft privé. Zelfs onze server zal niet kunnen zien wat je tekent.","button_startSession":"Start sessie","button_stopSession":"Stop sessie","desc_inProgressIntro":"De live-samenwerkingssessie is nu gestart.","desc_shareLink":"Deel deze link met iedereen waarmee je wil samenwerken:","desc_exitSession":"Het stoppen van de sessie zal je loskoppelen van de kamer, maar je kunt lokaal doorwerken met de scène.\\nPas op: dit heeft geen invloed op andere mensen en dat zij nog steeds in staat zullen zijn om samen te werken aan hun versie.","shareTitle":"Neem deel aan een live samenwerkingssessie op Excalidraw"},"errorDialog":{"title":"Fout"},"exportDialog":{"disk_title":"Opslaan op schijf","disk_details":"De scènegegevens exporteren naar een bestand waaruit u later kunt importeren.","disk_button":"Opslaan naar bestand","link_title":"Deelbare link","link_details":"Exporteren als een alleen-lezen link.","link_button":"Exporteer naar link","excalidrawplus_description":"Sla de scène op in je Excalidraw+ werkruimte.","excalidrawplus_button":"Exporteer","excalidrawplus_exportError":"Kan op dit moment niet exporteren naar Excalidraw+..."},"helpDialog":{"blog":"Lees onze blog","click":"klik","deepSelect":"Deep selecteer","deepBoxSelect":"","curvedArrow":"Gebogen pijl","curvedLine":"Kromme lijn","documentation":"Documentatie","doubleClick":"dubbelklikken","drag":"slepen","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Probleem gevonden? Verzenden","howto":"Volg onze handleidingen","or":"of","preventBinding":"Pijlbinding voorkomen","tools":"Tools","shortcuts":"Sneltoetsen","textFinish":"Voltooi het bewerken (teksteditor)","textNewLine":"Nieuwe regel toevoegen (teksteditor)","title":"Help","view":"Weergave","zoomToFit":"Zoom in op alle elementen","zoomToSelection":"Inzoomen op selectie","toggleElementLock":"","movePageUpDown":"Pagina omhoog/omlaag","movePageLeftRight":"Verplaats pagina links/rechts"},"clearCanvasDialog":{"title":"Wis canvas"},"publishDialog":{"title":"Publiceer bibliotheek","itemName":"Itemnaam","authorName":"Naam auteur","githubUsername":"GitHub gebruikersnaam","twitterUsername":"Twitter gebruikersnaam","libraryName":"Naam bibliotheek","libraryDesc":"Beschrijving van de bibliotheek","website":"Website","placeholder":{"authorName":"Je naam of gebruikersnaam","libraryName":"Naam van je bibliotheek","libraryDesc":"Beschrijving van je bibliotheek om mensen te helpen het gebruik ervan te begrijpen","githubHandle":"","twitterHandle":"","website":"Link naar je persoonlijke website of elders (optioneel)"},"errors":{"required":"Vereist","website":"Vul een geldige URL in"},"noteDescription":"openbare repository","noteGuidelines":"richtlijnen","noteLicense":"MIT-licentie, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotheek ingediend","content":"Hier"},"confirmDialog":{"resetLibrary":"Reset bibliotheek","removeItemsFromLib":"Verwijder geselecteerde items uit bibliotheek"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Je tekeningen zijn beveiligd met end-to-end encryptie, dus Excalidraw\'s servers zullen nooit zien wat je tekent.","link":"Blog post over end-to-end versleuteling in Excalidraw"},"stats":{"angle":"Hoek","element":"Element","elements":"Elementen","height":"Hoogte","scene":"Scene","selected":"Geselecteerd","storage":"Opslag","title":"Statistieken voor nerds","total":"Totaal","version":"Versie","versionCopy":"Klik om te kopiëren","versionNotAvailable":"Versie niet beschikbaar","width":"Breedte"},"toast":{"addedToLibrary":"Toegevoegd aan bibliotheek","copyStyles":"Stijlen gekopieerd.","copyToClipboard":"Gekopieerd naar het klembord.","copyToClipboardAsPng":"{{exportSelection}} naar klembord gekopieerd als PNG\\n({{exportColorScheme}})","fileSaved":"Bestand opgeslagen.","fileSavedToFilename":"Opgeslagen als {filename}","canvas":"canvas","selection":"selectie","pasteAsSingleElement":"Gebruik {{shortcut}} om te plakken als een enkel element,\\nof plak in een bestaande teksteditor","unableToEmbed":"Het insluiten van deze url is momenteel niet toegestaan. Zet een probleem op GitHub om de URL op de whitelist te zetten","unrecognizedLinkFormat":"De link die u hebt ingesloten komt niet overeen met het verwachte formaat. Probeer de \'embed\' string van de bronsite te plakken"},"colors":{"transparent":"Transparant","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"Exporteren, voorkeuren en meer...","center_heading":"Diagrammen. Eenvoudig. Gemaakt.","toolbarHint":"Kies een tool & begin met tekenen!","helpHint":"Snelkoppelingen en hulp"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js b/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js new file mode 100644 index 0000000..64ee86b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/nn-NO-json-aa607835ad9408789c5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3885],{4481:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lim inn","pasteAsPlaintext":"","pasteCharts":"Lim inn diagram","selectAll":"Vel alt","multiSelect":"Legg til element i utval","moveCanvas":"Flytt lerretet","cut":"Klipp ut","copy":"Kopier","copyAsPng":"Kopier til utklippstavla som PNG","copyAsSvg":"Kopier til utklippstavla som SVG","copyText":"","bringForward":"Flytt framover","sendToBack":"Send heilt bak","bringToFront":"Flytt heilt fram","sendBackward":"Send bakover","delete":"Slett","copyStyles":"Kopier stilar","pasteStyles":"Lim inn stilar","stroke":"Strek","background":"Bakgrunn","fill":"Fyll","strokeWidth":"Strekbreidd","strokeStyle":"Strekstil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Stipla","strokeStyle_dotted":"Prikka","sloppiness":"Ujamnheit","opacity":"Synlegheit","textAlign":"Tekstjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhovud","arrowhead_none":"Ingen","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Prikk","arrowhead_triangle":"Trekant","fontSize":"Skriftstorleik","fontFamily":"Skrifttype","addWatermark":"Legg til «Laga med Excalidraw»","handDrawn":"Handteikna","normal":"Normal","code":"Kode","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Svært stor","solid":"Solid","hachure":"Skravert","zigzag":"","crossHatch":"Krysskravert","thin":"Tynn","bold":"Tjukk","left":"Venstre","center":"Midstill","right":"Høgre","extraBold":"Ekstra tjukk","architect":"Arkitekt","artist":"Kunstnar","cartoonist":"Teiknar","fileTitle":"Filnamn","colorPicker":"Fargeveljar","canvasColors":"Brukt på lerretet","canvasBackground":"Lerretsbakgrunn","drawingCanvas":"Lerret","layers":"Lag","actions":"Handlingar","language":"Språk","liveCollaboration":"","duplicateSelection":"Dupliser","untitled":"Utan namn","name":"Namn","yourName":"Namnet ditt","madeWithExcalidraw":"Laga med Excalidraw","group":"Grupper utval","ungroup":"Avgrupper utval","collaborators":"Samarbeidarar","showGrid":"Vis rutenett","addToLibrary":"Legg til i bibliotek","removeFromLibrary":"Fjern frå bibliotek","libraryLoadingMessage":"Laster bibliotek…","libraries":"Blad gjennom bibliotek","loadingScene":"Laster scene…","align":"Juster","alignTop":"Juster til topp","alignBottom":"Juster til botn","alignLeft":"Juster til venstre","alignRight":"Juster til høgre","centerVertically":"Midtstill vertikalt","centerHorizontally":"Midtstill horisontalt","distributeHorizontally":"Sprei horisontalt","distributeVertically":"Sprei vertikalt","flipHorizontal":"Vipp vassrett","flipVertical":"Vipp loddrett","viewMode":"Visningsmodus","share":"Del","showStroke":"Vis fargeveljar for linjer","showBackground":"Vis fargeveljar for bakgrunn","toggleTheme":"Veksle tema","personalLib":"Personleg bibliotek","excalidrawLib":"Excalidraw-bibliotek","decreaseFontSize":"Gjer skriftstorleik mindre","increaseFontSize":"Gjer skriftstorleik større","unbindText":"Avbind tekst","bindText":"","createContainerFromText":"","link":{"edit":"Rediger lenke","editEmbed":"","create":"Lag lenke","createEmbed":"","label":"Lenke","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"Tilbakestill lerretet","exportJSON":"Eksporter til fil","exportImage":"","export":"","copyToClipboard":"Kopier til utklippstavla","save":"Lagre til noverande fil","saveAs":"Lagre som","load":"","getShareableLink":"Hent delingslenke","close":"Lukk","selectLanguage":"Vel språk","scrollBackToContent":"Skroll tilbake til innhald","zoomIn":"Zoom inn","zoomOut":"Zoom ut","resetZoom":"Nullstill zoom","menu":"Meny","done":"Ferdig","edit":"Rediger","undo":"Angre","redo":"Gjer om","resetLibrary":"Nullstill bibliotek","createNewRoom":"Lag nytt rom","fullScreen":"Fullskjerm","darkMode":"Mørk modus","lightMode":"Lys modus","zenMode":"Zen-modus","objectsSnapMode":"","exitZenMode":"Avslutt zen-modus","cancel":"Avbryt","clear":"Tøm","remove":"Fjern","embed":"","publishLibrary":"Publiser","submit":"Send inn","confirm":"Stadfest","embeddableInteractionButton":""},"alerts":{"clearReset":"Dette vil tømme lerretet. Er du sikker?","couldNotCreateShareableLink":"Kunne ikkje lage delingslenke.","couldNotCreateShareableLinkTooBig":"Kunne ikkje opprette deleleg lenke: scena er for stor","couldNotLoadInvalidFile":"Kunne ikkje laste inn ugyldig fil","importBackendFailed":"Importering av backend feila.","cannotExportEmptyCanvas":"Kan ikkje eksportere eit tomt lerret.","couldNotCopyToClipboard":"","decryptFailed":"Kunne ikkje dekryptere data.","uploadedSecurly":"Opplastinga er kryptert og er ikkje mogleg å lese av Excalidraw-serveren eller tredjepartar.","loadSceneOverridePrompt":"Innlasting av ekstern teikning erstattar ditt eksisterande innhald. Ynskjer du å fortsette?","collabStopOverridePrompt":"Viss du avsluttar økta overskriv du den førre, lokalt lagra teikninga di. Er du sikker?\\n\\n(Ønsker du å halde fram med denne? Då er det berre å lukke denne fana.)","errorAddingToLibrary":"Kunne ikkje legge elementet i biblioteket","errorRemovingFromLibrary":"Kunne ikkje fjerne elementet frå biblioteket","confirmAddLibrary":"Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?","imageDoesNotContainScene":"Dette biletet ser ikkje ut til å ha noko scenedata. Har du skrutt på innbygging av scene medan eksporteringa heldt på?","cannotRestoreFromImage":"Scena kunne ikkje gjenopprettast frå denne biletfila","invalidSceneUrl":"Kunne ikkje hente noko scene frå den URL-en. Ho er anten øydelagd eller inneheld ikkje gyldig Excalidraw JSON-data.","resetLibrary":"Dette vil fjerne alt innhald frå biblioteket. Er du sikker?","removeItemsFromsLibrary":"Slette {{count}} element frå biblioteket?","invalidEncryptionKey":"Krypteringsnøkkelen må ha 22 teikn. Sanntidssamarbeid er deaktivert.","collabOfflineWarning":""},"errors":{"unsupportedFileType":"Filtypen er ikkje støtta.","imageInsertError":"Kunne ikkje sette inn biletet. Prøv igjen seinare...","fileTooBig":"Fila er for stor. Maksimal tillate storleik er {{maxSize}}.","svgImageInsertError":"Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.","failedToFetchImage":"","invalidSVGString":"Ugyldig SVG.","cannotResolveCollabServer":"Kunne ikkje kople til samarbeidsserveren. Ver vennleg å oppdatere inn sida og prøv på nytt.","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Vel","image":"Sett in bilete","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellipse","arrow":"Pil","line":"Linje","freedraw":"Teikn","text":"Tekst","library":"Bibliotek","lock":"Hald fram med valt verktøy","penMode":"","link":"Legg til/ oppdater lenke til valt figur","eraser":"Viskelêr","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"Handlingar: lerret","selectedShapeActions":"Handlingar: valt objekt","shapes":"Formar"},"hints":{"canvasPanning":"","linearElement":"Klikk for å starte linje med fleire punkt, eller drag for ei enkel linje","freeDraw":"Klikk og drag, slepp når du er ferdig","text":"Tips: du kan òg leggje til tekst ved å dobbeltklikke kor som helst med utvalgsverktyet","embeddable":"","text_selected":"Dobbelklikk eller trykk ENTER for å redigere teksta","text_editing":"Trykk Escape eller CtrlOrCmd+ENTER for å fullføre redigeringa","linearElementMulti":"Klikk på siste punkt eller trykk Escape eller Enter for å fullføre","lockAngle":"Du kan begrense vinkelen ved å holde nede SKIFT","resize":"Du kan halde fram med forholdet ved å trykke SHIFT medan du endrar storleik,\\ntrykk ALT for å endre storleiken frå midten","resizeImage":"Du kan endre storleiken fritt ved å halde inne SHIFT,\\nhald ALT for å endre storleik frå sentrum","rotate":"Du kan låse vinklane ved å halde SHIFT medan du roterer","lineEditor_info":"","lineEditor_pointSelected":"Trykk på Slett for å fjerne punkt(a),\\nCtrl / Cmd+D for å duplisere, eller drag for å flytte","lineEditor_nothingSelected":"Vel eit punkt å redigere (hald inne SHIFT for å velje fleire),\\neller hald inne Alt og klikk for å legge til nye punkt","placeImage":"Klikk for å plassere biletet, eller klikk og drag for å velje storleik manuelt","publishLibrary":"Publiser ditt eige bibliotek","bindTextToElement":"Trykk på enter for å legge til tekst","deepBoxSelect":"Hald inne Ctrl / Cmd for å velje djupt, og forhindre flytting","eraserRevert":"Hald inne Alt for å reversere markering av element for sletting","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Kan ikkje vise førehandsvising","canvasTooBig":"Lerretet er mogleg for stort.","canvasTooBigTip":"Tips: prøv å flytte elementa som er lengst frå kvarandre, litt nærare kvarandre."},"errorSplash":{"headingMain":"Ein feil oppstod. Prøv ","clearCanvasMessage":"Om ny sidelasting ikkje fungerer, prøv ","clearCanvasCaveat":" Dette vil føre til tap av arbeid ","trackedToSentry":"Feilen med identifikator {{eventId}} vart logga i systemet vårt.","openIssueMessage":"Vi er veldig nøye med å ikkje inkludere scene-opplysingane dine i feilmeldinga. Viss scena di ikkje er privat kan du vurdere å følge opp i Ta med opplysingane nedanfor ved å kopiere og lime inn i GitHub-saka.","sceneContent":"Scene-innhald:"},"roomDialog":{"desc_intro":"Du kan invitere personar til scena di for å samarbeide med deg.","desc_privacy":"Ta det med ro; økta brukar ende-til-ende-kryptering, så alt du teiknar held fram med å vere privat. Ikkje ein gong serveren vår kan sjå kva du lagar.","button_startSession":"Start økt","button_stopSession":"Stopp økt","desc_inProgressIntro":"Sanntids-samarbeidsøkt er no i gang.","desc_shareLink":"Del denne lenka med dei du vil samarbeide med:","desc_exitSession":"Dersom du avsluttar økta blir du kopla frå rommet, men du kan halde fram med å arbeide med scena lokalt. Ver merksam på at dette ikkje vil påverke andre personar, og desse vil framleis ha moglegheit til å samarbeide på deira eigen versjon.","shareTitle":"Bli med på eit sanntidssamarbeid på Excalidraw"},"errorDialog":{"title":"Feil"},"exportDialog":{"disk_title":"Lagre til disk","disk_details":"Eksporter scenedataa til ei fil du kan importere seinare.","disk_button":"Lagre til fil","link_title":"Deleleg lenke","link_details":"Eksporter som skrivebeskytta lenke.","link_button":"Eksporter til lenke","excalidrawplus_description":"Lagre scena til Excalidraw+-arbeidsområdet ditt.","excalidrawplus_button":"Eksporter","excalidrawplus_exportError":"Kunne ikkje eksportere til Excalidraw+ akkurat no..."},"helpDialog":{"blog":"Les bloggen vår","click":"klikk","deepSelect":"Marker djupt","deepBoxSelect":"Marker djupt inni boksen og forhindr flytting","curvedArrow":"Boga pil","curvedLine":"Boga linje","documentation":"Dokumentasjon","doubleClick":"dobbelklikk","drag":"drag","editor":"Redigering","editLineArrowPoints":"","editText":"","github":"Funne eit problem? Send inn","howto":"Følg vegleiinga vår","or":"eller","preventBinding":"Hindre pilkopling","tools":"","shortcuts":"Tastatursnarvegar","textFinish":"Fullfør redigering (teksthandsamar)","textNewLine":"Legg til ny linje (teksthandsamar)","title":"Hjelp","view":"Vising","zoomToFit":"Zoom for å sjå alle elementa","zoomToSelection":"Zoom til utval","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Tøm lerretet"},"publishDialog":{"title":"Publiser bibliotek","itemName":"Elementnamn","authorName":"Eigaren sitt namn","githubUsername":"GitHub-brukarnamn","twitterUsername":"Twitter-brukarnamn","libraryName":"Biblioteknamn","libraryDesc":"Bibliotekskildring","website":"Nettstad","placeholder":{"authorName":"Namnet eller brukarnamnet ditt","libraryName":"Namnet på biblioteket ditt","libraryDesc":"Skildring av biblioteket ditt sånn at andre forstår bruken av det","githubHandle":"GitHub-brukarnamn (valfritt), slik at du kan redigere bibiloteket når det er sendt inn til vurdering","twitterHandle":"Twitter-brukarnamn (valfritt), så vi veit kven vi skal kreditere på Twitter","website":"Lenke til den personlege nettstaden din eller ein anna stad (valfritt)"},"errors":{"required":"Kravt","website":"Fyll inn ein gyldig URL"},"noteDescription":"Send inn biblioteket ditt til inkludering i den offentlege bibliotek-kjeldekodaslik at andre kan bruke det i teikningane deira.","noteGuidelines":"Biblioteket må godkjennast manuelt fyrst. Ver vennleg å lese retningslinjene før du sender inn. Du kjem til å trenge ein GitHub-konto for å kommunisere og gjere endringar dersom kravt, men det er ikkje strengt naudsynt.","noteLicense":"Ved å sende inn godkjenner du at biblioteket vert publisert under MIT-lisensen, som kort sagt betyr at kven som helst kan bruke det utan avgrensingar.","noteItems":"Kvart bibliotekselement må ha eit eige namn, slik at det er mogleg å filtrere. Dei følgande bibliotekselementa blir inkludert:","atleastOneLibItem":"Ver vennleg å markere minst eitt bibliotekselement for å starte","republishWarning":""},"publishSuccessDialog":{"title":"Bibliotek innsendt","content":"Tusen takk {{authorName}}! Biblioteket ditt har blitt sendt inn til gjennomgang. Du kan halde styr på statusher"},"confirmDialog":{"resetLibrary":"Tilbakestill bibliotek","removeItemsFromLib":"Fjern valde element frå biblioteket"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Teikningane dine er ende-til-ende-krypterte slik at Excalidraw sine serverar aldri får sjå dei.","link":"Blogginnlegg om ende-til-ende-kryptering i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Høgde","scene":"Scene","selected":"Valde","storage":"Lagring","title":"Statistikk for nerdar","total":"Totalt","version":"Versjon","versionCopy":"Klikk for å kopiere","versionNotAvailable":"Versjonen er ikkje tilgjengeleg","width":"Breidde"},"toast":{"addedToLibrary":"Lagt til i bibliotek","copyStyles":"Kopierte stilane.","copyToClipboard":"Kopiert til utklippstavla.","copyToClipboardAsPng":"Kopierte {{exportSelection}} til utklippstavla som PNG\\n({{exportColorScheme}})","fileSaved":"Fila er lagra.","fileSavedToFilename":"Lagra som {filename}","canvas":"lerret","selection":"val","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Gjennomsiktig","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js b/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js new file mode 100644 index 0000000..8c35c88 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/oc-FR-json-644a5eaa1311f70cb697.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1690],{2284:function(a){a.exports=JSON.parse('{"labels":{"paste":"Pegar","pasteAsPlaintext":"Pegar en tèxt brut","pasteCharts":"Pegar los grafics","selectAll":"Tot seleccionar","multiSelect":"Apondre un element a la seleccion","moveCanvas":"Desplaçar lo canabàs","cut":"Talhar","copy":"Copiar","copyAsPng":"Copiar al quichapapièrs coma PNG","copyAsSvg":"Copiar al quichapapièrs coma SVG","copyText":"Copiar al quichapapièrs coma tèxt","bringForward":"En avant","sendToBack":"En arrièr","bringToFront":"A l’endavant","sendBackward":"Endarrièr","delete":"Suprimir","copyStyles":"Copiar los estiles","pasteStyles":"Pegar los estils","stroke":"Contorn","background":"Rèireplan","fill":"Empliment","strokeWidth":"Largor de contorn","strokeStyle":"Estil de contorn","strokeStyle_solid":"Solide","strokeStyle_dashed":"Tiret","strokeStyle_dotted":"Puntilhat","sloppiness":"Estil de traça","opacity":"Opacitat","textAlign":"Alinhament tèxt","edges":"Angles","sharp":"Ponchut","round":"Arredonit","arrowheads":"Cap de la flècha","arrowhead_none":"Cap","arrowhead_arrow":"Sageta","arrowhead_bar":"Barra","arrowhead_dot":"Ponch","arrowhead_triangle":"Triangle","fontSize":"Talha polissa","fontFamily":"Familha de polissa","addWatermark":"Apondre « Fabricat amb Excalidraw »","handDrawn":"A la man levada","normal":"Normala","code":"Còdi","small":"Pichona","medium":"Mejana","large":"Granda","veryLarge":"Gradassa","solid":"Solide","hachure":"Raia","zigzag":"","crossHatch":"Raia crosada","thin":"Fin","bold":"Espés","left":"Esquèrra","center":"Centre","right":"Drecha","extraBold":"Espesàs","architect":"Arquitècte","artist":"Artista","cartoonist":"Dessenhaire","fileTitle":"Nom del fichièr","colorPicker":"Selector de color","canvasColors":"Utilizada suls canabassses","canvasBackground":"Rèireplan del canabàs","drawingCanvas":"Zòna de dessenh","layers":"Calques","actions":"Accions","language":"Lenga","liveCollaboration":"Collaboracion en dirèct...","duplicateSelection":"Duplicar","untitled":"Sens títol","name":"Nom","yourName":"Vòstre nom","madeWithExcalidraw":"Fabricat amb Excalidraw","group":"Gropar la seleccion","ungroup":"Desunir la seleccion","collaborators":"Collaborators","showGrid":"Afichar la gresilha","addToLibrary":"Apondre a la bibliotèca","removeFromLibrary":"Suprimir de la bibliotèca","libraryLoadingMessage":"Cargament de la bibliotèca…","libraries":"Percórrer las bibliotècas","loadingScene":"Cargament de la scèna…","align":"Alinhament","alignTop":"Alinhar ennaut","alignBottom":"Alinhar enbàs","alignLeft":"Alinhar a esquèrra","alignRight":"Alinhar a drecha","centerVertically":"Centrar verticalament","centerHorizontally":"Centrar orizontalament","distributeHorizontally":"Distribuir orizontalament","distributeVertically":"Distribuir verticalament","flipHorizontal":"Virar orizontalament","flipVertical":"Virar verticalament","viewMode":"Mòde de vista","share":"Partejar","showStroke":"Mostrar lo selector de color de contorn","showBackground":"Mostrar lo selector de color de fons","toggleTheme":"Alternar tèma","personalLib":"Bibliotèca personala","excalidrawLib":"Bibliotèca Excalidraw","decreaseFontSize":"Reduire talha polissa","increaseFontSize":"Aumentar talha polissa","unbindText":"Dessociar lo tèxte","bindText":"Ligar lo tèxt al contenidor","createContainerFromText":"","link":{"edit":"Modificar lo ligam","editEmbed":"","create":"Crear un ligam","createEmbed":"","label":"Ligam","labelEmbed":"","empty":""},"lineEditor":{"edit":"Modificar la linha","exit":"Sortir de l’editor de linha"},"elementLock":{"lock":"Verrolhar","unlock":"Desverrolhar","lockAll":"Tot verrolhar","unlockAll":"Tot desverrolhar"},"statusPublished":"Publicat","sidebarLock":"Gardar la barra laterala dobèrta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Cap d’element pas encara apondut...","hint_emptyLibrary":"Seleccionatz un element d’apondre aquí, o installatz una bibliotèca del depaus public, çai-jos.","hint_emptyPrivateLibrary":"Seleccionatz un element d’apondre aquí pel canabàs."},"buttons":{"clearReset":"Reïnicializar lo canabàs","exportJSON":"Exportar en fichièr","exportImage":"Exportar imatges...","export":"Enregistrar dins...","copyToClipboard":"Copiar al quichapapièrs","save":"Salvar al fichièr actual","saveAs":"Enregistrar jos","load":"Dobrir","getShareableLink":"Obténer lo ligam de partatge","close":"Tampar","selectLanguage":"Causir una lenga","scrollBackToContent":"Tornar al contengut","zoomIn":"Zoom avant","zoomOut":"Zoom arrièr","resetZoom":"Tirar lo zoom","menu":"Menú","done":"Acabat","edit":"Modificar","undo":"Anullar","redo":"Restablir","resetLibrary":"Reïnicializar la bibliotèca","createNewRoom":"Crear sala novèla","fullScreen":"Ecran complèt","darkMode":"Mòde escur","lightMode":"Mòde clar","zenMode":"Mòde escur","objectsSnapMode":"","exitZenMode":"Sortir del mòde zen","cancel":"Anullar","clear":"Escafar","remove":"Tirar","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Aquò suprimirà lo canabàs complèt. O volètz vertadièrament ?","couldNotCreateShareableLink":"Creacion impossibla del ligam de partatge.","couldNotCreateShareableLinkTooBig":"Creacion impossibla del ligam de partatge : la scèna es tròp granda","couldNotLoadInvalidFile":"Cargament impossible d’un fichièr invalid","importBackendFailed":"Importacion fracassada.","cannotExportEmptyCanvas":"Impossible d’exportar los canabasses voids.","couldNotCopyToClipboard":"Còpia impossibla al quichapapièrs.","decryptFailed":"Deschiframent impossible de las donadas.","uploadedSecurly":"Lo telecargament es estat securizat amb un chiframent del cap a la fin, significa que los servidors d’Excalidraw o que quina tèrça part que siá pòdon pas legir lo contengut.","loadSceneOverridePrompt":"Cargar un dessenh extèrn remplaçarà vòstre contengut existent. Volètz contunhar ?","collabStopOverridePrompt":"Arrestar la session remplaçarà vòstre precedent dessenh gardat localament. O volètz vertadièrament ?\\n\\n(Se volètz gardar vòstre dessenh local, tampatz simplament l’onglet del navegador a la plaça)","errorAddingToLibrary":"Apondon impossible de l’element a la bibliotèca","errorRemovingFromLibrary":"Supression impossibla de l’element a la bibliotèca","confirmAddLibrary":"Apondrà {{numShapes}} forma(s) a vòstra bibliotèca. Confirmatz ?","imageDoesNotContainScene":"Aqueste imatge sembla pas conténer cap de donadas de scèna. Avètz activat l’integracion de scèna pendent l’exportacion ?","cannotRestoreFromImage":"Restauracion impossibla de la scèna a partir del fichièr imatge","invalidSceneUrl":"Importacion impossibla de la scèna a partir de l’URL provesida. Es siá mal formatada o siá conten pas cap de donada JSON Excalidraw valida.","resetLibrary":"Aquò suprimirà vòstra bibliotèca. O volètz vertadièrament ?","removeItemsFromsLibrary":"Suprimir {{count}} element(s) de la bibliotèca ?","invalidEncryptionKey":"La clau de chiframent deu conténer 22 caractèrs. La collaboracion en dirèct es desactivada.","collabOfflineWarning":"Cap de connexion pas disponibla.\\nVòstras modificacions seràn pas salvadas !"},"errors":{"unsupportedFileType":"Tipe de fichièr pas pres en carga.","imageInsertError":"Insercion d’imatge impossibla. Tornatz ensajar mai tard...","fileTooBig":"Fichièr tròp pesuc. La talha maximala autorizada es {{maxSize}}.","svgImageInsertError":"Insercion d’imatge SVG impossibla. Las balisas SVG semblan invalidas.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Connexion impossibla al servidor collab. Mercés de recargar la pagina e tornar ensajar.","importLibraryError":"Impossible de cargar la bibliotèca","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleccion","image":"Inserir imatge","rectangle":"Rectangle","diamond":"Lausange","ellipse":"Ellipsa","arrow":"Sageta","line":"Linha","freedraw":"Dessenhar","text":"Tèxt","library":"Bibliotèca","lock":"Mantenir activa l’aisina aprèp dessenhar","penMode":"Mòde estilo - empachar lo contact","link":"Apondre/Actualizar lo ligam per una fòrma seleccionada","eraser":"Goma","frame":"","embeddable":"","laser":"","hand":"Man (aisina de desplaçament de la vista)","extraTools":""},"headings":{"canvasActions":"Accions del canabàs","selectedShapeActions":"Accions per la forma seleccionada","shapes":"Formas"},"hints":{"canvasPanning":"","linearElement":"Clicatz per començar mantun punt, lisatz per una sola linha","freeDraw":"Clicatz e lisatz, relargatz un còp acabat","text":"Astúcia : podètz tanben apondre de tèxt en doble clicant ont que siá amb l’aisina de seleccion","embeddable":"","text_selected":"Clicatz dos còps o quichatz ENTRADA per modificar lo tèxt","text_editing":"Quichatz ESCAPAR o CtrlOrCmd+ENTRADA per acabar la modificacion","linearElementMulti":"Clicatz sul darrièr punt o quichatz Ecap o Entrada per acabar","lockAngle":"Podètz restrénger l’angle en mantenent MAJ","resize":"Podètz servar las proporcions en mantenent la tòca MAJ pendent lo redimensionament,\\nmantenètz la tòca ALT per redimensionar a partir del centre","resizeImage":"Podètz retalhar liurament en quichant CTRL,\\nquichatz ALT per retalhar a partir del centre","rotate":"Podètz restrénger los angles en mantenent MAJ pendent la rotacion","lineEditor_info":"Tenètz quichat Ctrl o Cmd e doble clic o quichatz Ctrl o Cmd + Entrada per modificar los ponches","lineEditor_pointSelected":"Quichar Suprimir per tirar lo(s) punt(s),\\nCtrlOCmd+D per duplicar, o lisatz per desplaçar","lineEditor_nothingSelected":"Seleccionar un punt d’editar (manténer Maj. per ne seleccionar mantun),\\no manténer Alt e clicar per n’apondre de novèls","placeImage":"Clicatz per plaçar l’imatge, o clicatz e lisatz per definir sa talha manualament","publishLibrary":"Publicar vòstra pròpria bibliotèca","bindTextToElement":"Quichatz Entrada per apondre de tèxte","deepBoxSelect":"Gardar CtrlOCmd per una seleccion gropada e empachar lo desplaçament","eraserRevert":"Tenètz quichat Alt per anullar los elements marcats per supression","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Afichatge impossible de l’apercebut","canvasTooBig":"Lo canabàs pòt èsser tròp grand.","canvasTooBigTip":"Astúcia : ensajatz de sarrar los elements mai alonhats."},"errorSplash":{"headingMain":"Una error s’es producha. Ensajatz ","clearCanvasMessage":"Se recargar fonciona pas, ensajatz ","clearCanvasCaveat":" Menarà a una pèrda del trabalh ","trackedToSentry":"Error amb l’identificant {{eventId}} es estada enregistrada sus nòstre sistèma.","openIssueMessage":"Èrem plan prudents per inclure pas d’informacions de la scèna vòstra sus l’error. Se vòstra scèna es pas privada, volgatz considerar de perseguir sus nòstre Volgatz inclure las informacions çai-jos en las copiant e pegant a l’issue GitHub.","sceneContent":"Contengut de la scèna :"},"roomDialog":{"desc_intro":"Podètz convidar lo monde a vòstra scèna actuala per participar amb vos.","desc_privacy":"Vos en fagatz pas, la session utiliza lo chiframent del cap a la fin, çò que dessenetz demorarà privat. Mai nòstres servidors poiràn pas veire vòstra creacion.","button_startSession":"Començar la session","button_stopSession":"Arrestar la session","desc_inProgressIntro":"La session de collaboracion es ara en cors.","desc_shareLink":"Partejatz aqueste ligam amb lo monde amb qui volètz collaborar :","desc_exitSession":"Arrestar la session vos desconnectarà de la sala, mas poiretz contunhar de trabalhar a la scèna, en local. Notatz qu’aquò afectarà pas los autres, e poiràn collaborar a lor version.","shareTitle":"Rejonhètz una session collaborativa sus Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Salvar al disc","disk_details":"Exportar las donadas de la scèna cap a un fichièr que podètz importar mai tard.","disk_button":"Salvar al fichièr","link_title":"Ligam de partejar","link_details":"Exportar coma un ligam de lectura sola.","link_button":"Exportar en ligam","excalidrawplus_description":"Enregistrar la scèna dins vòstre espaci de trabalh Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Export impossibla cap a Excalidraw+ pel moment..."},"helpDialog":{"blog":"Legir nòstre blog","click":"clic","deepSelect":"Seleccion prigonda","deepBoxSelect":"Seleccionar demest un grop e empacha lo desplaçament","curvedArrow":"Sageta corba","curvedLine":"Linha corba","documentation":"Documentacion","doubleClick":"doble clic","drag":"lisar","editor":"Editor","editLineArrowPoints":"","editText":"","github":"Problèma trobat ? Senhalatz-lo","howto":"Seguissètz nòstras guidas","or":"o","preventBinding":"Empachar la fixacion de sagetas","tools":"Aisinas","shortcuts":"Acorchis clavièr","textFinish":"Terminar l’edicion (editor de tèxt)","textNewLine":"Apondre linha novèl (editor de tèxt)","title":"Ajuda","view":"Vista","zoomToFit":"Zoomar per veire totes los elements","zoomToSelection":"Zoomar la seleccion","toggleElementLock":"Verrolhar/Desverrolhar la seleccion","movePageUpDown":"Desplaçar la pagina ennaut/enbàs","movePageLeftRight":"Desplaçar la pagina a esquèrra/drecha"},"clearCanvasDialog":{"title":"Escafar canabàs"},"publishDialog":{"title":"Publicar la bibliotèca","itemName":"Nom de l’element","authorName":"Nom de l’autor","githubUsername":"Nom d’utilizaire GitHub","twitterUsername":"Nom d’utilizaire Twitter","libraryName":"Nom de la bibliotèca","libraryDesc":"Descripcion de la bibliotèca","website":"Site web","placeholder":{"authorName":"Vòstre nom o nom d’utilizaire","libraryName":"Nom de vòstra bibliotèca","libraryDesc":"Descripcion de vòstra bibliotèca per ajudar lo monde a comprendre son utilizacion","githubHandle":"GitHub handle(opcional), per poder modificar la bibliotèca un còp enviada per repassa","twitterHandle":"Nom d’utilizaire Twitter (opcional), per saber qual mercejar quand ne parlam sus Twitter","website":"Ligam cap a vòstre site web personal o endacòm mai (opcional)"},"errors":{"required":"Requerit","website":"Picatz una URL valida"},"noteDescription":"Enviatz vòstra bibliotèca per èsser compresa al repertòri public de bibliotècaper que los autres l’utilizen dins lor dessenhs.","noteGuidelines":"Qualqu’un deu aprovar la bibliotèca manualament per començar. Volgatz legir las linhas directrises abans de sometre. Vos farà mestièr un compte GitHub per comunicar e realizar de modificacions se demandadas, mas es pas complètament obligatòri.","noteLicense":"En sometent, acceptatz que la bibliotèca siá publicada sota la Licéncia MIT, que significa en brèu que qual que siá pòt l’utilizar sens cap de restriccion.","noteItems":"Cada element de bibliotèca deu aver un nom pròpri per èsser filtrable. Los elements de bibliotèca seguentas seràn incluses :","atleastOneLibItem":"Volgatz seleccionar almens un element de bibliotèca per començar","republishWarning":"Nòta : d’unes elements seleccionats son marcats ja coma publicats/enviats. Deuriatz sonque tornar enviar los elements pendent l’actualizacion d’una bibliotèca existenta o un mandadís."},"publishSuccessDialog":{"title":"Bibliotèca somesa","content":"Mercés {{authorName}}. Vòstre bibliotèca es estada somesa per repassa. Podètz seguir l’avançamentaquí"},"confirmDialog":{"resetLibrary":"Reïnicializar la bibliotèca","removeItemsFromLib":"Tirar los elements seleccionats de la bibliotèca"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"Vòstres dessenhs son chifrats del cap a la fin en consequéncia los servidors d’Excalidraw los veiràn pas jamai.","link":"Article de blòg sul chiframent del cap a la fin dins Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Nautor","scene":"Scèna","selected":"Seleccionat","storage":"Emmagazinatge","title":"Estatisticas pels nerds","total":"Total","version":"Version","versionCopy":"Clicar per copiar","versionNotAvailable":"Version pas disponibla","width":"Largor"},"toast":{"addedToLibrary":"Apondut a la bibliotèca","copyStyles":"Estiles copiats.","copyToClipboard":"Copiats al quichapapièrs.","copyToClipboardAsPng":"{{exportSelection}} copiat coma PNG ({{exportColorScheme}})","fileSaved":"Fichièr enregistrat.","fileSavedToFilename":"Enregistrat jos {filename}","canvas":"canabàs","selection":"seleccion","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparéncia","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"Totas las donadas son enregistradas dins vòstre navegador.","center_heading_plus":"Voliatz puslèu utilizar Excalidraw+ a la plaça ?","menuHint":"Exportar, preferéncias, lengas, ..."},"defaults":{"menuHint":"Exportar, preferéncias, e mai...","center_heading":"Diagram. Tot. Simplament.","toolbarHint":"Prenètz un esplech e començatz de dessenhar !","helpHint":"Acorchis e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js b/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js new file mode 100644 index 0000000..d36b381 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pa-IN-json-165c5c2760688033b2cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3162],{6773:function(e){e.exports=JSON.parse('{"labels":{"paste":"ਪੇਸਟ ਕਰੋ","pasteAsPlaintext":"ਸਾਦੇ ਪਾਠ ਵਜੋਂ ਪੇਸਟ ਕਰੋ","pasteCharts":"ਚਾਰਟ ਪੇਸਟ ਕਰੋ","selectAll":"ਸਾਰੇ ਚੁਣੋ","multiSelect":"ਐਲੀਮੈਂਟ ਨੂੰ ਚੋਣ ਵਿੱਚ ਜੋੜੋ","moveCanvas":"ਕੈਨਵਸ ਹਿਲਾਓ","cut":"ਕੱਟੋ","copy":"ਕਾਪੀ ਕਰੋ","copyAsPng":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyAsSvg":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ SVG ਵਜੋਂ ਕਾਪੀ ਕਰੋ","copyText":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਪਾਠ ਵਜੋਂ ਕਾਪੀ ਕਰੋ","bringForward":"ਅੱਗੇ ਲਿਆਓ","sendToBack":"ਸਭ ਤੋਂ ਪਿੱਛੇ ਭੇਜੋ","bringToFront":"ਸਭ ਤੋਂ ਅੱਗੇ ਲਿਆਓ","sendBackward":"ਪਿੱਛੇ ਭੇਜੋ","delete":"ਮਿਟਾਓ","copyStyles":"ਸਟਾਇਲ ਕਾਪੀ ਕਰੋ","pasteStyles":"ਸਟਾਇਲ ਪੇਸਟ ਕਰੋ","stroke":"ਰੇਖਾ","background":"ਬੈਕਗਰਾਉਂਡ","fill":"ਭਰਨਾ","strokeWidth":"ਰੇਖਾ ਦੀ ਚੌੜਾਈ","strokeStyle":"ਰੇਖਾ ਦਾ ਸਟਾਇਲ","strokeStyle_solid":"ਠੋਸ","strokeStyle_dashed":"ਡੈਸ਼ ਵਾਲੀ","strokeStyle_dotted":"ਬਿੰਦੀਆਂ ਵਾਲੀ","sloppiness":"ਬੇਤਰਤੀਬੀ","opacity":"ਅਪਾਰਦਰਸ਼ਤਾ","textAlign":"ਲਿਖਤ ਇਕਸਾਰਤਾ","edges":"ਕਿਨਾਰੇ","sharp":"ਤਿੱਖੇ","round":"ਗੋਲ","arrowheads":"ਤੀਰ ਦੇ ਸਿਰੇ","arrowhead_none":"ਕੋਈ ਨਹੀਂ","arrowhead_arrow":"ਤੀਰ","arrowhead_bar":"ਡੰਡੀ","arrowhead_dot":"ਬਿੰਦੀ","arrowhead_triangle":"ਤਿਕੋਣ","fontSize":"ਫੌਂਟ ਅਕਾਰ","fontFamily":"ਫੌਂਟ ਪਰਿਵਾਰ","addWatermark":"\\"Excalidraw ਨਾਲ ਬਣਾਇਆ\\" ਜੋੜੋ","handDrawn":"ਹੱਥਲਿਖਤ","normal":"ਆਮ","code":"ਕੋਡ","small":"ਛੋਟਾ","medium":"ਮੱਧਮ","large":"ਵੱਡਾ","veryLarge":"ਬਹੁਤ ਵੱਡਾ","solid":"ਠੋਸ","hachure":"ਤਿਰਛੀਆਂ ਗਰਿੱਲਾਂ","zigzag":"ਵਿੰਗ-ਤੜਿੰਗ","crossHatch":"ਜਾਲੀ","thin":"ਪਤਲੀ","bold":"ਮੋਟੀ","left":"ਖੱਬੇ","center":"ਵਿਚਕਾਰ","right":"ਸੱਜੇ","extraBold":"ਬਹੁਤ ਮੋਟੀ","architect":"ਭਵਨ ਨਿਰਮਾਣਕਾਰੀ","artist":"ਕਲਾਕਾਰ","cartoonist":"ਕਾਰਟੂਨਿਸਟ","fileTitle":"ਫਾਈਲ ਦਾ ਨਾਂ","colorPicker":"ਰੰਗ ਚੋਣਕਾਰ","canvasColors":"ਕੈਨਵਸ \'ਤੇ ਵਰਤਿਆ","canvasBackground":"ਕੈਨਵਸ ਦਾ ਬੈਕਗਰਾਉਂਡ","drawingCanvas":"ਡਰਾਇੰਗ ਕੈਨਵਸ","layers":"ਪਰਤਾਂ","actions":"ਕਾਰਵਾਈਆਂ","language":"ਭਾਸ਼ਾ","liveCollaboration":"ਲਾਇਵ ਸਹਿਯੋਗ...","duplicateSelection":"ਡੁਪਲੀਕੇਟ ਬਣਾਓ","untitled":"ਬੇ-ਸਿਰਨਾਵਾਂ","name":"ਨਾਂ","yourName":"ਤੁਹਾਡਾ ਨਾਂ","madeWithExcalidraw":"Excalidraw ਨਾਲ ਬਣਾਇਆ","group":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ","ungroup":"ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ","collaborators":"ਸਹਿਯੋਗੀ","showGrid":"ਜਾਲੀ ਦਿਖਾਓ","addToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ","removeFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ \'ਚੋਂ ਹਟਾਓ","libraryLoadingMessage":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…","libraries":"ਲਾਇਬ੍ਰੇਰੀਆਂ ਬਰਾਉਜ਼ ਕਰੋ","loadingScene":"ਦ੍ਰਿਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…","align":"ਇਕਸਾਰ","alignTop":"ਉੱਪਰ ਇਕਸਾਰ ਕਰੋ","alignBottom":"ਹੇਠਾਂ ਇਕਸਾਰ ਕਰੋ","alignLeft":"ਖੱਬੇ ਇਕਸਾਰ ਕਰੋ","alignRight":"ਸੱਜੇ ਇਕਸਾਰ ਕਰੋ","centerVertically":"ਲੇਟਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","centerHorizontally":"ਖੜ੍ਹਵੇਂ ਵਿਚਕਾਰ ਕਰੋ","distributeHorizontally":"ਖੜ੍ਹਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","distributeVertically":"ਲੇਟਵੇਂ ਇਕਸਾਰ ਵੰਡੋ","flipHorizontal":"ਲੇਟਵੇਂ ਪਾਸੇ ਪਲਟੋ","flipVertical":"ਖੜ੍ਹਵੇਂ ਪਾਸੇ ਪਲਟੋ","viewMode":"ਦੇਖਣ ਵਾਲਾ ਮੋਡ","share":"ਸਾਂਝਾ ਕਰੋ","showStroke":"ਰੇਖਾ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","showBackground":"ਬੈਕਗਰਾਉਂਡ ਦਾ ਰੰਗ ਚੋਣਕਾਰ ਦਿਖਾਓ","toggleTheme":"ਥੀਮ ਬਦਲੋ","personalLib":"ਨਿੱਜੀ ਲਾਇਬ੍ਰੇਰੀ","excalidrawLib":"ਐਕਸਕਲੀਡਰਾਅ ਲਾਇਬ੍ਰੇਰੀ","decreaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਘਟਾਓ","increaseFontSize":"ਫੌਂਟ ਦਾ ਅਕਾਰ ਵਧਾਓ","unbindText":"ਪਾਠ ਨੂੰ ਵੱਖ ਕਰੋ","bindText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਨਾਲ ਬੰਨ੍ਹੋ","createContainerFromText":"ਪਾਠ ਨੂੰ ਕੰਟੇਨਰ ਵਿੱਚ ਇਕੱਠਾ ਕਰੋ","link":{"edit":"ਕੜੀ ਸੋਧੋ","editEmbed":"","create":"ਕੜੀ ਬਣਾਓ","createEmbed":"","label":"ਕੜੀ","labelEmbed":"","empty":""},"lineEditor":{"edit":"ਪੰਕਤੀ ਸੋਧੋ","exit":"ਪੰਕਤੀ ਸੋਧਕ \'ਤੋਂ ਬਾਹਰ ਨਿਕਲੋ"},"elementLock":{"lock":"ਲਾਕ ਕਰੋ","unlock":"ਅਨਲਾਕ ਕਰੋ","lockAll":"ਸਭ ਲਾਕ ਕਰੋ","unlockAll":"ਸਭ ਅਨਲਾਕ ਕਰੋ"},"statusPublished":"ਪ੍ਰਕਾਸ਼ਤ ਹੈ","sidebarLock":"ਸਾਈਡਬਾਰ ਨੂੰ ਖੁੱਲ੍ਹਾ ਰੱਖੋ","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ਹਾਲੇ ਤੱਕ ਕੋਈ ਚੀਜ ਜੋੜੀ ਨਹੀਂ ਗਈ...","hint_emptyLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ, ਜਾਂ ਹੇਠਾਂ ਪਬਲਿਕ ਰਿਪਾਜ਼ੀਟਰੀ ‘ਚੋਂ ਲਾਇਬ੍ਰੇਰੀ ਸਥਾਪਤ ਕਰੋ।","hint_emptyPrivateLibrary":"ਇੱਥੇ ਆਈਟਮ ਜੋੜਨ ਲਈ ਉਸਨੂੰ ਕੈਨਵਸ ‘ਤੇ ਚੁਣੋ।"},"buttons":{"clearReset":"ਕੈਨਵਸ ਰੀਸੈੱਟ ਕਰੋ","exportJSON":"ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportImage":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ...","export":"ਇਸ ਵਿੱਚ ਸਾਂਭੋ...","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕਰੋ","save":"ਮੌਜੂਦਾ ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","saveAs":"ਇਸ ਵਜੋਂ ਸਾਂਭੋ","load":"ਖੋਲ੍ਹੋ","getShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਲਵੋ","close":"ਬੰਦ ਕਰੋ","selectLanguage":"ਭਾਸ਼ਾ ਚੁਣੋ","scrollBackToContent":"ਸਮੱਗਰੀ \'ਤੇ ਵਾਪਸ ਸਕਰੋਲ ਕਰੋ","zoomIn":"ਜ਼ੂਮ ਵਧਾਓ","zoomOut":"ਜ਼ੂਮ ਘਟਾਓ","resetZoom":"ਜ਼ੂਮ ਰੀਸੈੱਟ ਕਰੋ","menu":"ਮੇਨੂ","done":"ਹੋ ਗਿਆ","edit":"ਸੋਧੋ","undo":"ਅਣਕੀਤਾ ਕਰੋ","redo":"ਮੁੜ-ਕਰੋ","resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","createNewRoom":"ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ","fullScreen":"ਪੂਰੀ ਸਕਰੀਨ","darkMode":"ਡਾਰਕ ਮੋਡ","lightMode":"ਲਾਇਟ ਮੋਡ","zenMode":"ਜ਼ੈੱਨ ਮੋਡ","objectsSnapMode":"","exitZenMode":"ਜ਼ੈੱਨ ਮੋਡ \'ਚੋਂ ਬਾਹਰ ਨਿਕਲੋ","cancel":"ਰੱਦ ਕਰੋ","clear":"ਸਾਫ਼ ਕਰੋ","remove":"ਹਟਾਓ","embed":"","publishLibrary":"ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","submit":"ਜਮ੍ਹਾ ਕਰਵਾਓ","confirm":"ਪੁਸ਼ਟੀ ਕਰੋ","embeddableInteractionButton":""},"alerts":{"clearReset":"ਇਹ ਸਾਰਾ ਕੈਨਵਸ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","couldNotCreateShareableLink":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ।","couldNotCreateShareableLinkTooBig":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ ਨਹੀਂ ਬਣਾ ਸਕੇ: ਦ੍ਰਿਸ਼ ਬਹੁਤ ਵੱਡਾ ਹੈ","couldNotLoadInvalidFile":"ਨਜਾਇਜ਼ ਫਾਈਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕੇ","importBackendFailed":"ਬੈਕਐੱਨਡ ਤੋਂ ਆਯਾਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।","cannotExportEmptyCanvas":"ਖਾਲੀ ਕੈਨਵਸ ਨੂੰ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ।","couldNotCopyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।","decryptFailed":"ਡਾਟਾ ਡੀਕਰਿਪਟ ਨਹੀਂ ਕਰ ਸਕੇ।","uploadedSecurly":"ਅੱਪਲੋਡ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਨਾਲ ਸੁਰੱਖਿਅਤ ਕੀਤੀ ਹੋਈ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ Excalidraw ਸਰਵਰ ਅਤੇ ਤੀਜੀ ਧਿਰ ਦੇ ਬੰਦੇ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੇ।","loadSceneOverridePrompt":"ਬਾਹਰੀ ਡਰਾਇੰਗ ਨੂੰ ਲੋਡ ਕਰਨਾ ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਸਮੱਗਰੀ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?","collabStopOverridePrompt":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਪਿਛਲੀ ਲੋਕਲ ਸਾਂਭੀ ਡਰਾਇੰਗ ਦੀ ਥਾਂ ਲੈ ਲਵੇਗਾ। ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?\\n\\n(ਜੇ ਤੁਸੀਂ ਆਪਣੀ ਲੋਕਲ ਡਰਾਇੰਗ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਇਹ ਕਰਨ ਦੀ ਬਜਾਏ ਬੱਸ ਆਪਣਾ ਟੈਬ ਬੰਦ ਕਰ ਦਿਉ।)","errorAddingToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸਮੱਗਰੀ ਨਹੀਂ ਜੋੜ ਸਕੇ","errorRemovingFromLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਸਮੱਗਰੀ ਨਹੀਂ ਹਟਾ ਸਕੇ","confirmAddLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","imageDoesNotContainScene":"ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਤੁਸੀਂ ਨਿਰਯਾਤ ਕਰਦੇ ਸਮੇਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਮੜ੍ਹਣਾ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?","cannotRestoreFromImage":"ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ","invalidSceneUrl":"ਦਿੱਤੀ ਗਈ URL \'ਚੋਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ। ਇਹ ਜਾਂ ਤਾਂ ਖਰਾਬ ਹੈ, ਜਾਂ ਇਸ ਵਿੱਚ ਜਾਇਜ਼ Excalidraw JSON ਡਾਟਾ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।","resetLibrary":"ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਾਫ ਕਰ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?","removeItemsFromsLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ {{count}} ਚੀਜ਼(-ਜ਼ਾਂ) ਮਿਟਾਉਣੀਆਂ ਹਨ?","invalidEncryptionKey":"ਇਨਕਰਿਪਸ਼ਨ ਕੁੰਜੀ ‌‌22 ਅੱਖਰਾਂ ਦੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਲਾਇਵ ਸਹਿਯੋਗ ਬੰਦ ਹੈ।","collabOfflineWarning":"ਕੋਈ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੈ\\nਤੁਹਾਡੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੀਆਂ ਨਹੀਂ ਜਾਣਗੀਆਂ।"},"errors":{"unsupportedFileType":"ਫਾਈਲ ਦੀ ਕਿਸਮ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ।","imageInsertError":"ਚਿੱਤਰ ਸ਼ਾਮਲ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ...","fileTooBig":"ਫਾਈਲ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ। ਵੱਧ-ਤੋਂ-ਵੱਧ ਪ੍ਰਵਾਨਤ ਅਕਾਰ {{maxSize}} ਹੈ।","svgImageInsertError":"SVG ਤਸਵੀਰ ਸ਼ਾਮਲ ਨਹੀਂ ਕਰ ਸਕੇ। SVG ਮਾਰਕ-ਅੱਪ ਨਜਾਇਜ਼ ਲੱਗ ਰਿਹਾ ਹੈ।","failedToFetchImage":"","invalidSVGString":"SVG ਨਜਾਇਜ਼ ਹੈ।","cannotResolveCollabServer":"","importLibraryError":"ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"ਚੋਣਕਾਰ","image":"ਤਸਵੀਰ ਸ਼ਾਮਲ ਕਰੋ","rectangle":"ਆਇਤ","diamond":"ਹੀਰਾ","ellipse":"ਅੰਡਾਕਾਰ","arrow":"ਤੀਰ","line":"ਲਕੀਰ","freedraw":"ਵਾਹੋ","text":"ਪਾਠ","library":"ਲਾਇਬ੍ਰੇਰੀ","lock":"ਡਰਾਇੰਗ ਤੋਂ ਬਾਅਦ ਵੀ ਚੁਣੇ ਹੋਏ ਸੰਦ ਨੂੰ ਸਰਗਰਮ ਰੱਖੋ ","penMode":"ਪੈੱਨ ਮੋਡ - ਟੱਚ ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ","link":"","eraser":"ਰਬੜ","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"ਕੈਨਵਸ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","selectedShapeActions":"ਚੁਣੀ ਆਕ੍ਰਿਤੀ ਦੀਆਂ ਕਾਰਵਾਈਆਂ","shapes":"ਆਕ੍ਰਿਤੀਆਂ"},"hints":{"canvasPanning":"","linearElement":"ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਬਿੰਦੂਆਂ ਲਈ ਕਲਿੱਕ ਕਰਕੇ ਸ਼ੁਰੂਆਤ ਕਰੋ, ਇਕਹਿਰੀ ਲਕੀਰ ਲਈ ਘਸੀਟੋ","freeDraw":"ਕਲਿੱਕ ਕਰਕੇ ਘਸੀਟੋ, ਪੂਰਾ ਹੋਣ \'ਤੇ ਛੱਡ ਦਿਉ","text":"ਨੁਸਖਾ: ਤੁਸੀਂ ਚੋਣਕਾਰ ਸੰਦ ਰਾਹੀਂ ਕਿਤੇ ਵੀ ਡਬਲ-ਕਲਿੱਕ ਕਰਕੇ ਵੀ ਪਾਠ ਜੋੜ ਸਕਦੇ ਹੋ","embeddable":"","text_selected":"ਪਾਠ ਨੂੰ ਸੋਧਣ ਲਈ ਡਬਲ-ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","text_editing":"ਸੋਧ ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਐਸਕੇਪ (Esc) ਜਾਂ Ctrl-ਜਾਂ-Cmd+ਐਂਟਰ (enter) ਦਬਾਓ","linearElementMulti":"ਮੁਕੰਮਲ ਕਰਨ ਲਈ ਆਖਰੀ ਬਿੰਦੂ \'ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਇਸਕੇਪ ਜਾਂ ਐਂਟਰ ਦਬਾਓ","lockAngle":"ਤੁਸੀਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","resize":"ਤੁਸੀਂ ਅਕਾਰ ਬਦਲਦੇ ਸਮੇਂ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਅਨੁਪਾਤ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ, ਵਿਚਕਾਰ ਤੋਂ ਅਕਾਰ ਬਦਲਣ ਲਈ ALT ਦਬਾਓ","resizeImage":"","rotate":"ਤੁਸੀਂ ਘੁਮਾਉਂਦੇ ਹੋਏ SHIFT ਦਬਾਈ ਰੱਖ ਕੇ ਕੋਣਾਂ ਨੂੰ ਕਾਬੂ ਕਰ ਸਕਦੇ ਹੋ","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ","bindTextToElement":"ਪਾਠ ਜੋੜਨ ਲਈ ਐੰਟਰ ਦਬਾਓ","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"ਝਲਕ ਨਹੀਂ ਦਿਖਾ ਸਕਦੇ","canvasTooBig":"ਸ਼ਾਇਦ ਕੈਨਵਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡਾ ਹੈ।","canvasTooBigTip":"ਨੁਸਖਾ: ਸਭ ਤੋਂ ਦੂਰ ਸਥਿੱਤ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਥੋੜ੍ਹਾ ਜਿਹਾ ਨੇੜੇ ਲਿਆ ਕੇ ਦੇਖੋ।"},"errorSplash":{"headingMain":"ਕੋਈ ਸਮੱਸਿਆ ਖੜ੍ਹੀ ਹੋਈ। ਕਰਕੇ ਦੇਖੋ।","clearCanvasMessage":"ਜੇ ਮੁੜ-ਲੋਡ ਕਰਨਾ ਕੰਮ ਨਾ ਕਰੇ, ਤਾਂ ਇਹ ਕਰਕੇ ਦੇਖੋ ","clearCanvasCaveat":" ਇਹ ਸਾਰਾ ਕੰਮ ਗਵਾ ਦੇਵੇਗਾ ","trackedToSentry":"ਸੂਚਕ {{eventId}} ਵਾਲੀ ਸਮੱਸਿਆ ਸਾਡੇ ਸਿਸਟਮ \'ਤੇ ਟਰੈਕ ਕੀਤੀ ਗਈ ਸੀ।","openIssueMessage":"ਅਸੀਂ ਬੜੇ ਸਾਵਧਾਨ ਸੀ ਕਿ ਗਲਤੀ ਵਿੱਚ ਤੁਹਾਡੇ ਦ੍ਰਿਸ਼ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਨਾ ਕਰੀਏ। ਜੇ ਤੁਹਾਡਾ ਦ੍ਰਿਸ਼ ਨਿੱਜੀ ਨਹੀਂ ਹੈ ਤਾਂ ਇਸ \'ਤੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਜੀ ਹੇਠਾਂ ਦਿੱਤੀ ਜਾਣਕਾਰੀ ਨੂੰ ਕਾਪੀ ਕਰਕੇ ਗਿੱਟਹੱਬ ਮੁੱਦੇ ਵਿੱਚ ਪੇਸਟ ਕਰਕੇ ਸ਼ਾਮਲ ਕਰੋ ਜੀ।","sceneContent":"ਦ੍ਰਿਸ਼ ਦੀ ਸਮੱਗਰੀ:"},"roomDialog":{"desc_intro":"ਤੁਸੀਂ ਲੋਕਾਂ ਨੂੰ ਆਪਣੇ ਨਾਲ ਮੌਜੂਦਾ ਦ੍ਰਿਸ਼ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਲਈ ਸੱਦਾ ਭੇਜ ਸਕਦੇ ਹੋ।","desc_privacy":"ਫਿਕਰ ਨਾ ਕਰੋ, ਇਜਲਾਸ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਸ਼ਨ ਵਰਤਦਾ ਹੈ, ਸੋ ਜੋ ਕੁਝ ਵੀ ਤੁਸੀਂ ਵਾਹੁੰਦੇ ਹੋ ਉਹ ਨਿੱਜੀ ਹੀ ਰਹਿੰਦਾ ਹੈ। ਇੱਥੋਂ ਤੱਕ ਕਿ ਸਾਡੇ ਸਰਵਰ ਵੀ ਨਹੀਂ ਜਾਣ ਸਕਣਗੇ ਕਿ ਤੁਸੀਂ ਕੀ ਬਣਾਇਆ ਹੈ।","button_startSession":"ਇਜਲਾਸ ਸ਼ੁਰੂ ਕਰੋ","button_stopSession":"ਇਜਲਾਸ ਰੋਕੋ","desc_inProgressIntro":"ਲਾਇਵ ਸਹਿਯੋਗ ਇਜਲਾਸ ਹੁਣ ਚੱਲ ਰਿਹਾ ਹੈ।","desc_shareLink":"ਇਸ ਲਿੰਕ ਨੂੰ ਉਹਨਾਂ ਨਾਲ ਸਾਂਝਾ ਕਰੋ ਜਿਹਨਾਂ ਨਾਲ ਤੁਸੀਂ ਸਹਿਯੋਗ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ:","desc_exitSession":"ਇਜਲਾਸ ਨੂੰ ਰੋਕਣਾ ਤੁਹਾਡਾ ਕਮਰੇ ਨਾਲੋਂ ਨਾਤਾ ਤੋੜ ਦੇਵੇਗਾ, ਪਰ ਤੁਸੀਂ ਸਥਾਨਕ ਪੱਧਰ \'ਤੇ ਦ੍ਰਿਸ਼ ਨਾਲ ਕੰਮ ਕਰਨਾ ਜਾਰੀ ਰੱਖ ਸਕੋਗੇ। ਇਹ ਧਿਆਨ \'ਚ ਰੱਖੋ ਕਿ ਇਹ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਕਰੇਗਾ , ਅਤੇ ਉਹ ਹਾਲੇ ਵੀ ਆਪਣੇ ਸੰਸਕਰਨ \'ਤੇ ਸਹਿਯੋਗ ਕਰਨ ਦੇ ਕਾਬਲ ਹੋਣਗੇ।","shareTitle":"Excalidraw \'ਤੇ ਲਾਈਵ ਇਜਲਾਸ ਦਾ ਹਿੱਸਾ ਬਣੋ"},"errorDialog":{"title":"ਗਲਤੀ"},"exportDialog":{"disk_title":"ਡਿਸਕ ਵਿੱਚ ਸਾਂਭੋ","disk_details":"ਦ੍ਰਿਸ਼ ਦਾ ਡਾਟਾ ਫਾਈਲ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ ਜਿੱਥੋਂ ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ ਆਯਾਤ ਕਰ ਸਕਦੇ ਹੋ।","disk_button":"ਫਾਈਲ ਵਿੱਚ ਸਾਂਭੋ","link_title":"ਸਾਂਝੀ ਕਰਨ ਵਾਲੀ ਲਿੰਕ","link_details":"ਸਿਰਫ ਦੇਖੇ-ਜਾਣ ਵਾਲੀ ਲਿੰਕ ਵਜੋਂ ਨਿਰਯਾਤ ਕਰੋ।","link_button":"ਲਿੰਕ ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_description":"ਆਪਣੇ ਦ੍ਰਿਸ਼ ਦੇ ਡਾਟੇ ਨੂੰ Excalidraw+ ਵਰਕਸਪੇਸ ਵਿੱਚ ਸਾਂਭੋ।","excalidrawplus_button":"ਨਿਰਯਾਤ ਕਰੋ","excalidrawplus_exportError":"ਇਸ ਸਮੇਂ Excalidraw+ ਵਿੱਚ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕੇ..."},"helpDialog":{"blog":"ਸਾਡਾ ਬਲੌਗ ਪੜ੍ਹੋ","click":"ਕਲਿੱਕ","deepSelect":"","deepBoxSelect":"","curvedArrow":"ਵਿੰਗਾ ਤੀਰ","curvedLine":"ਵਿੰਗੀ ਲਕੀਰ","documentation":"ਕਾਗਜ਼ਾਤ","doubleClick":"ਡਬਲ-ਕਲਿੱਕ","drag":"ਘਸੀਟੋ","editor":"ਸੋਧਕ","editLineArrowPoints":"","editText":"","github":"ਕੋਈ ਸਮੱਸਿਆ ਲੱਭੀ? ਜਮ੍ਹਾਂ ਕਰਵਾਓ","howto":"ਸਾਡੀਆਂ ਗਾਈਡਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ","or":"ਜਾਂ","preventBinding":"ਤੀਰ ਬੱਝਣਾ ਰੋਕੋ","tools":"ਟੂਲ","shortcuts":"ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ","textFinish":"ਸੋਧਣਾ ਮੁਕੰਮਲ ਕਰੋ (ਪਾਠ ਸੋਧਕ)","textNewLine":"ਨਵੀਂ ਪੰਕਤੀ ਜੋੜੋ (ਪਾਠ ਸੋਧਕ)","title":"ਮਦਦ","view":"ਦਿੱਖ","zoomToFit":"ਸਾਰੇ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ","zoomToSelection":"ਚੋਣ ਤੱਕ ਜ਼ੂਮ ਕਰੋ","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"ਕੈਨਵਸ ਨੂੰ ਸਾਫ਼ ਕਰੋ"},"publishDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਪ੍ਰਕਾਸ਼ਤ ਕਰੋ","itemName":"ਚੀਜ਼ ਦਾ ਨਾਂ","authorName":"ਲੇਖਕ ਦਾ ਨਾਂ","githubUsername":"ਗਿੱਟਹੱਬ ਵਰਤੋਂਕਾਰ ਨਾਂ","twitterUsername":"ਟਵਿੱਟਰ ਦਾ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ","website":"ਵੈੱਬਸਾਇਟ","placeholder":{"authorName":"ਤੁਹਾਡਾ ਨਾਂ ਜਾਂ ਵਰਤੋਂਕਾਰ-ਨਾਂ","libraryName":"ਤੁਹਾਡੀ ਲਾਇਬਰ੍ਰੀ ਦਾ ਨਾਂ","libraryDesc":"ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਵੇਰਵਾ ਤਾਂ ਜੋ ਲੋਕਾਂ ਨੂੰ ਇਸ ਤੋੰਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨ ਸਬੰਧੀ ਮਦਦ ਮਿਲ ਸਕੇ","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"ਲੋੜੀਂਦਾ","website":"ਜਾਇਜ਼ URL ਭਰੋ"},"noteDescription":"ਹੋਰ ਲੋਕਾਂ ਵੱਲੋਂ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਵਰਤਣ ਲਈ ਸਕਣ ਇਸ ਲਈਜਨਤਕ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਰਿਪਾਜ਼ੀਟਰੀ ਵਿੱਚ ਆਪਣੀ ਲਾਇਬ੍ਰੇਰੀ ਸ਼ਾਮਲ ਕਰਵਾਉਣ ਲਈ ਜਮ੍ਹਾ ਕਰਵਾਓ","noteGuidelines":"ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼","noteLicense":"MIT ਲਾਇਸੈਂਸ, ","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"ਲਾਇਬ੍ਰੇਰੀ ਜਮ੍ਹਾਂ ਕਰਵਾਈ","content":"ਧੰਨਵਾਦ {{authorName}} ਜੀਉ। ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਸਮੀਖਿਆ ਲਈ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਉਸਦੀ ਸਥਿਤੀ ਇੱਥੇ ਦੇਖ ਸਕਦੇ ਹੋ।"},"confirmDialog":{"resetLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਰੀਸੈੱਟ ਕਰੋ","removeItemsFromLib":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚੋਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਆਈਟਮਾਂ ਹਟਾਓ"},"imageExportDialog":{"header":"ਤਸਵੀਰ ਨਿਰਯਾਤ ਕਰੋ","label":{"withBackground":"ਪਿਛੋਕੜ","onlySelected":"ਸਿਰਫ ਚੁਣੇ ਹੋਏ","darkMode":"ਡਾਰਕ ਮੋਡ","embedScene":"ਦ੍ਰਿਸ਼ ਮੜ੍ਹੋ","scale":"ਸਕੇਲ","padding":"ਪੈਡਿੰਗ"},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","exportToSvg":"SVG ਵਿੱਚ ਨਿਰਯਾਤ ਕਰੋ","copyPngToClipboard":"PNG ਨੂੰ ਕਲਿੱਪੋਬਰਡ ‘ਤੇ ਕਾਪੀ ਕਰੋ"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"ਗੱਤੇ \'ਤੇ ਕਾਪੀ ਕਰੋ"}},"encrypted":{"tooltip":"ਤੁਹਾਡੀ ਡਰਾਇੰਗਾਂ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕਰਿਪਟ ਕੀਤੀਆਂ ਹੋਈਆਂ ਹਨ, ਇਸ ਲਈ Excalidraw ਦੇ ਸਰਵਰ ਉਹਨਾਂ ਨੂੰ ਕਦੇ ਵੀ ਨਹੀਂ ਦੇਖਣਗੇ।","link":"Excalidraw ਵਿੱਚ ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇਨਕ੍ਰਿਪਸ਼ਨ \'ਤੇ ਬਲੌਗ ਸੰਪਾਦਨਾ"},"stats":{"angle":"ਕੋਣ","element":"ਐਲੀਮੈਂਟ","elements":"ਐਲੀਮੈਂਟ","height":"ਉਚਾਈ","scene":"ਦ੍ਰਿਸ਼","selected":"ਚੁਣੇ","storage":"ਸਟੋਰੇਜ","title":"ਪੜਾਕੂਆਂ ਲਈ ਅੰਕੜੇ","total":"ਕੁੱਲ","version":"ਸੰਸਕਰਨ","versionCopy":"ਕਾਪੀ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ","versionNotAvailable":"ਸੰਸਕਰਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ","width":"ਚੌੜਾਈ"},"toast":{"addedToLibrary":"ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜਿਆ","copyStyles":"ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।","copyToClipboard":"ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕੀਤਾ।","copyToClipboardAsPng":"{{exportSelection}} ਨੂੰ ਕਲਿੱਪਬੋਰਡ \'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ ({{exportColorScheme}})","fileSaved":"ਫਾਈਲ ਸਾਂਭੀ ਗਈ।","fileSavedToFilename":"{filename} ਵਿੱਚ ਸਾਂਭੀ","canvas":"ਕੈਨਵਸ","selection":"ਚੋਣ","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ਪਾਰਦਰਸ਼ੀ","black":"ਕਾਲੀ","white":"ਸਫ਼ੈਦ","red":"ਲਾਲ","pink":"ਗੁਲਾਬੀ","grape":"ਅੰਗੂਰੀ","violet":"ਜਾਮਣੀ","gray":"ਸੁਰਮਈ","blue":"ਨੀਲਾ","cyan":"ਫਿਰੋਜੀ","teal":"ਟੀਲ","green":"ਹਰਾ","yellow":"ਪੀਲਾ","orange":"ਸੰਤਰੀ","bronze":"ਕਾਂਸੇਰੰਗਾ"},"welcomeScreen":{"app":{"center_heading":"ਤੁਹਾਡਾ ਸਾਰਾ ਡਾਟਾ ਤੁਹਾਡੇ ਲੋਕਲ ਬਰਾਉਜ਼ਰ ਵਿੱਚ ਸਾਂਭਿਆ ਹੋਇਆ ਹੈ।","center_heading_plus":"","menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਭਾਸ਼ਾਵਾਂ, …"},"defaults":{"menuHint":"ਨਿਰਯਾਤ, ਤਰਜੀਹਾਂ, ਅਤੇ ਹੋਰ ਵੀ ਬਹੁਤ ਕੁਝ…","center_heading":"ਡਾਇਆਗ੍ਰਾਮਾਂ। ਕੀਤੀਆਂ। ਸੁਖਾਲੀਆਂ।","toolbarHint":"","helpHint":"ਸ਼ਾਰਟਕੱਟ ਤੇ ਮਦਦ"}},"colorPicker":{"mostUsedCustomColors":"ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਕਸਟਮ ਰੰਗ","colors":"ਰੰਗ","shades":"ਸ਼ੇਡਾਂ","hexCode":"ਹੈਕਸ ਕੋਡ","noShades":"ਇਸ ਰੰਗ ਦੀ ਕੋਈ ਸ਼ੇਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js b/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js new file mode 100644 index 0000000..95a0f42 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pl-PL-json-35c1f168f53af24b657a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3674],{3661:function(e){e.exports=JSON.parse('{"labels":{"paste":"Wklej","pasteAsPlaintext":"Wklej jako zwykły tekst","pasteCharts":"Wklej wykresy","selectAll":"Zaznacz wszystko","multiSelect":"Dodaj element do zaznaczenia","moveCanvas":"Przesuń obszar roboczy","cut":"Wytnij","copy":"Kopiuj","copyAsPng":"Skopiuj do schowka jako plik PNG","copyAsSvg":"Skopiuj do schowka jako plik SVG","copyText":"Skopiuj do schowka jako tekst","bringForward":"Przenieś wyżej","sendToBack":"Przenieś na spód","bringToFront":"Przenieś na wierzch","sendBackward":"Przenieś niżej","delete":"Usuń","copyStyles":"Kopiuj style","pasteStyles":"Wklej style","stroke":"Kolor obramowania","background":"Kolor wypełnienia","fill":"Wypełnienie","strokeWidth":"Grubość obramowania","strokeStyle":"Styl obrysu","strokeStyle_solid":"Pełny","strokeStyle_dashed":"Kreskowany","strokeStyle_dotted":"Kropkowany","sloppiness":"Styl kreski","opacity":"Przeźroczystość","textAlign":"Wyrównanie tekstu","edges":"Krawędzie","sharp":"Ostry","round":"Zaokrąglij","arrowheads":"Groty","arrowhead_none":"Brak","arrowhead_arrow":"Strzałka","arrowhead_bar":"Kreska","arrowhead_dot":"Kropka","arrowhead_triangle":"Trójkąt","fontSize":"Rozmiar tekstu","fontFamily":"Krój pisma","addWatermark":"Dodaj \\"Zrobione w Excalidraw\\"","handDrawn":"Odręczny","normal":"Normalny","code":"Kod","small":"Mały","medium":"Średni","large":"Duży","veryLarge":"Bardzo duży","solid":"Pełne","hachure":"Linie","zigzag":"Zygzak","crossHatch":"Zakreślone","thin":"Cienkie","bold":"Pogrubione","left":"Do lewej","center":"Do środka","right":"Do prawej","extraBold":"Ekstra pogrubione","architect":"Dokładny","artist":"Artystyczny","cartoonist":"Rysunkowy","fileTitle":"Nazwa pliku","colorPicker":"Paleta kolorów","canvasColors":"Używane na płótnie","canvasBackground":"Kolor dokumentu","drawingCanvas":"Obszar roboczy","layers":"Warstwy","actions":"Akcje","language":"Język","liveCollaboration":"Współpraca w czasie rzeczywistym...","duplicateSelection":"Powiel","untitled":"Bez tytułu","name":"Nazwa","yourName":"Twoje imię","madeWithExcalidraw":"Zrobione w Excalidraw","group":"Zgrupuj wybrane","ungroup":"Rozgrupuj wybrane","collaborators":"Współtwórcy","showGrid":"Pokaż siatkę","addToLibrary":"Dodaj do biblioteki","removeFromLibrary":"Usuń z biblioteki","libraryLoadingMessage":"Wczytywanie biblioteki…","libraries":"Przeglądaj biblioteki","loadingScene":"Wczytywanie sceny…","align":"Wyrównaj","alignTop":"Wyrównaj do góry","alignBottom":"Wyrównaj do dołu","alignLeft":"Wyrównaj do lewej","alignRight":"Wyrównaj do prawej","centerVertically":"Wyśrodkuj w pionie","centerHorizontally":"Wyśrodkuj w poziomie","distributeHorizontally":"Rozłóż poziomo","distributeVertically":"Rozłóż pionowo","flipHorizontal":"Odwróć w poziomie","flipVertical":"Odwróć w pionie","viewMode":"Tryb widoku","share":"Udostępnij","showStroke":"Pokaż próbnik kolorów obrysu","showBackground":"Pokaż próbnik koloru tła","toggleTheme":"Przełącz motyw","personalLib":"Biblioteka prywatna","excalidrawLib":"Biblioteka Excalidraw","decreaseFontSize":"Zmniejsz rozmiar czcionki","increaseFontSize":"Zwiększ rozmiar czcionki","unbindText":"Odłącz tekst od kontenera","bindText":"Połącz tekst z kontenerem","createContainerFromText":"Zawijaj tekst w kontenerze","link":{"edit":"Edytuj łącze","editEmbed":"Edytuj i osadź link","create":"Utwórz łącze","createEmbed":"Stwórz i osadź link","label":"Łącze","labelEmbed":"Podlinkuj i osadź","empty":"Brakujący link"},"lineEditor":{"edit":"Edytuj linię","exit":"Wyjdź z edytora linii"},"elementLock":{"lock":"Zablokuj","unlock":"Odblokuj","lockAll":"Zablokuj wszystko","unlockAll":"Odblokuj wszystko"},"statusPublished":"Opublikowano","sidebarLock":"Panel boczny zawsze otwarty","selectAllElementsInFrame":"Zaznacz wszystkie elementy w ramce","removeAllElementsFromFrame":"Usuń wszystkie elementy z ramki","eyeDropper":"Wybierz kolor z płótna"},"library":{"noItems":"Nie dodano jeszcze żadnych elementów...","hint_emptyLibrary":"Wybierz element na płótnie, aby go tutaj dodać, lub zainstaluj bibliotekę z poniższego publicznego repozytorium.","hint_emptyPrivateLibrary":"Wybierz element, aby dodać go tutaj."},"buttons":{"clearReset":"Wyczyść dokument i zresetuj kolor dokumentu","exportJSON":"Eksportuj do pliku","exportImage":"Eksportuj obraz...","export":"Zapisz jako...","copyToClipboard":"Skopiuj do schowka","save":"Zapisz do bieżącego pliku","saveAs":"Zapisz jako","load":"Otwórz","getShareableLink":"Udostępnij","close":"Zamknij","selectLanguage":"Wybierz język","scrollBackToContent":"Wróć do obszaru roboczego","zoomIn":"Powiększ","zoomOut":"Pomniejsz","resetZoom":"Zresetuj powiększenie","menu":"Menu","done":"Gotowe","edit":"Edytuj","undo":"Cofnij","redo":"Przywróć","resetLibrary":"Resetuj bibliotekę","createNewRoom":"Utwórz nowy pokój","fullScreen":"Pełny ekran","darkMode":"Ciemny motyw","lightMode":"Jasny motyw","zenMode":"Tryb Zen","objectsSnapMode":"Przyciąganie do obiektów","exitZenMode":"Wyjdź z trybu Zen","cancel":"Anuluj","clear":"Wyczyść","remove":"Usuń","embed":"Przełącz osadzenie","publishLibrary":"Opublikuj","submit":"Prześlij","confirm":"Zatwierdź","embeddableInteractionButton":"Kliknij, aby wejść w interakcję"},"alerts":{"clearReset":"To spowoduje usunięcie wszystkiego z dokumentu. Czy chcesz kontynuować?","couldNotCreateShareableLink":"Wystąpił błąd przy generowaniu linka do udostępniania.","couldNotCreateShareableLinkTooBig":"Nie można utworzyć linku do udostępnienia: scena jest za duża","couldNotLoadInvalidFile":"Nie udało się otworzyć pliku. Wybrany plik jest nieprawidłowy.","importBackendFailed":"Wystąpił błąd podczas importowania pliku.","cannotExportEmptyCanvas":"Najpierw musisz coś narysować, aby zapisać dokument.","couldNotCopyToClipboard":"Nie udało się skopiować do schowka.","decryptFailed":"Nie udało się odszyfrować danych.","uploadedSecurly":"By zapewnić Ci prywatność, udostępnianie projektu jest zabezpieczone szyfrowaniem end-to-end, co oznacza, że poza tobą i osobą z którą podzielisz się linkiem, nikt nie ma dostępu do tego co udostępniasz.","loadSceneOverridePrompt":"Wczytanie zewnętrznego rysunku zastąpi istniejącą zawartość. Czy chcesz kontynuować?","collabStopOverridePrompt":"Zatrzymanie sesji nadpisze poprzedni, zapisany lokalnie rysunek. Czy jesteś pewien?\\n\\n(Jeśli chcesz zachować swój lokalny rysunek, po prostu zamknij zakładkę przeglądarki.)","errorAddingToLibrary":"Nie udało się dodać elementu do biblioteki","errorRemovingFromLibrary":"Nie udało się usunąć elementu z biblioteki","confirmAddLibrary":"To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?","imageDoesNotContainScene":"Ten obraz nie zawiera żadnych informacji o scenie. Czy włączyłeś osadzanie sceny podczas eksportu?","cannotRestoreFromImage":"Scena nie mogła zostać przywrócona z pliku obrazu","invalidSceneUrl":"Nie udało się zaimportować sceny z podanego adresu URL. Jest ona wadliwa lub nie zawiera poprawnych danych Excalidraw w formacie JSON.","resetLibrary":"To wyczyści twoją bibliotekę. Jesteś pewien?","removeItemsFromsLibrary":"Usunąć {{count}} element(ów) z biblioteki?","invalidEncryptionKey":"Klucz szyfrowania musi składać się z 22 znaków. Współpraca na żywo jest wyłączona.","collabOfflineWarning":"Brak połączenia z Internetem.\\nTwoje zmiany nie zostaną zapisane!"},"errors":{"unsupportedFileType":"Nieobsługiwany typ pliku.","imageInsertError":"Nie udało się wstawić obrazu. Spróbuj ponownie później...","fileTooBig":"Plik jest zbyt duży. Maksymalny dozwolony rozmiar to {{maxSize}}.","svgImageInsertError":"Nie udało się wstawić obrazu SVG. Znacznik SVG wygląda na nieprawidłowy.","failedToFetchImage":"Nie udało się załadować obrazu.","invalidSVGString":"Nieprawidłowy SVG.","cannotResolveCollabServer":"Nie można połączyć się z serwerem współpracy w czasie rzeczywistym. Proszę odświeżyć stronę i spróbować ponownie.","importLibraryError":"Wystąpił błąd w trakcie ładowania biblioteki","collabSaveFailed":"Nie udało się zapisać w bazie danych. Jeśli problemy nie ustąpią, zapisz plik lokalnie, aby nie utracić swojej pracy.","collabSaveFailed_sizeExceeded":"Nie udało się zapisać w bazie danych — dokument jest za duży. Zapisz plik lokalnie, aby nie utracić swojej pracy.","brave_measure_text_error":{"line1":"Wygląda na to, że używasz przeglądarki Brave z włączonym ustawieniem Agressively Block Fingerprinting.","line2":"Może to doprowadzić do złamania elementów tekstu na rysunkach.","line3":"Zdecydowanie zalecamy wyłączenie tego ustawienia. Możesz wykonać te kroki, aby to zrobić.","line4":"Jeśli wyłączenie tego ustawienia nie naprawia wyświetlania elementów tekstowych, zgłoś problem na naszym GitHubie lub napisz do nas na Discordzie"},"libraryElementTypeError":{"embeddable":"Elementy osadzone nie mogą zostać dodane do biblioteki.","image":"Dodawania obrazów do biblioteki nadejdzie wkrótce!"}},"toolBar":{"selection":"Zaznaczenie","image":"Wstaw obraz","rectangle":"Prostokąt","diamond":"Romb","ellipse":"Elipsa","arrow":"Strzałka","line":"Linia","freedraw":"Rysuj","text":"Tekst","library":"Biblioteka","lock":"Zablokuj wybrane narzędzie","penMode":"Tryb pióra — zapobiegaj dotknięciom","link":"Dodaj/aktualizuj link dla wybranego kształtu","eraser":"Gumka","frame":"Ramka","embeddable":"Osadzenie z internetu","laser":"Wskaźnik laserowy","hand":"Ręka (narzędzie do przesuwania)","extraTools":"Więcej narzędzi"},"headings":{"canvasActions":"Narzędzia","selectedShapeActions":"Wybrane narzędzie","shapes":"Kształty"},"hints":{"canvasPanning":"Aby przesunąć płótno, przytrzymaj kółko myszy lub spację podczas przeciągania, albo użyj narzędzia ręki","linearElement":"Naciśnij, aby zrobić punkt, przeciągnij, aby narysować linię","freeDraw":"Naciśnij i przeciągnij by rysować, puść kiedy skończysz","text":"Wskazówka: możesz również dodać tekst klikając dwukrotnie gdziekolwiek za pomocą narzędzia zaznaczania","embeddable":"Kliknij i przeciągnij, aby stworzyć osadzenie strony","text_selected":"Kliknij dwukrotnie lub naciśnij ENTER, aby edytować tekst","text_editing":"Naciśnij Escape lub Ctrl (Cmd w macOS) + ENTER, aby zakończyć edycję","linearElementMulti":"Aby zakończyć krzywą, ponownie kliknij w ostatni punkt, bądź naciśnij Esc albo Enter","lockAngle":"Możesz ograniczyć kąt trzymając SHIFT","resize":"Możesz zachować proporcję trzymająć wcisnięty SHIFT, przytrzymaj ALT by zmienić rozmiar względem środka","resizeImage":"Możesz zmienić rozmiar swobodnie trzymając SHIFT,\\nprzytrzymaj ALT, aby przeskalować względem środka obiektu","rotate":"Możesz obracać element w równych odstępach trzymając wciśnięty SHIFT","lineEditor_info":"Przytrzymaj CtrlOrCmd i kliknij dwukrotnie lub naciśnij CtrlOrCmd + Enter, aby edytować punkty","lineEditor_pointSelected":"Naciśnij przycisk Delete, aby usunąć punkt. Ctrl/Cmd+D, aby go zduplikować. Przeciągnij, aby go przenieść","lineEditor_nothingSelected":"Wybierz punkt do edycji (przytrzymaj SHIFT, aby wybrać wiele),\\nlub przytrzymaj Alt i kliknij, aby dodać nowe punkty","placeImage":"Kliknij, aby umieścić obraz, lub kliknij i przeciągnij, aby ustawić jego rozmiar ręcznie","publishLibrary":"Opublikuj własną bibliotekę","bindTextToElement":"Wciśnij enter, aby dodać tekst","deepBoxSelect":"Przytrzymaj CtrlOrCmd, aby wybrać w obrębie grupy i uniknąć przeciągania","eraserRevert":"Przytrzymaj Alt, aby przywrócić elementy oznaczone do usunięcia","firefox_clipboard_write":"Ta funkcja może być włączona poprzez ustawienie flagi \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Aby zmienić flagi przeglądarki w Firefox, odwiedź stronę \\"about:config\\".","disableSnapping":"Przytrzymaj Ctrl lub Cmd, aby wyłączyć przyciąganie"},"canvasError":{"cannotShowPreview":"Nie można wyświetlić podglądu","canvasTooBig":"Obszar roboczy może być za duży.","canvasTooBigTip":"Wskazówka: spróbuj nieco zbliżyć najdalej wysunięte elementy."},"errorSplash":{"headingMain":"Wystąpił błąd. Spróbuj ","clearCanvasMessage":"Jeśli odświeżenie strony nie zadziałało, spróbuj ","clearCanvasCaveat":" Pamiętaj tylko, że spowoduje to utratę całej twojej pracy ","trackedToSentry":"Błąd o identyfikatorze {{eventId}} został zaraportowany w naszym systemie.","openIssueMessage":"Szanujemy twoją prywatność i raport nie zawierał żadnych danych dotyczących tego nad czym pracowałeś, natomiast jeżeli jesteś w stanie podzielić się tym nad czym pracowałeś, prosimy o dodatkowy raport poprzez Prosimy o dołączenie poniższej informacji poprzez skopiowanie jej i umieszczenie jej w zgłoszeniu na portalu GitHub.","sceneContent":"Zawartość dokumentu:"},"roomDialog":{"desc_intro":"Będziesz w stanie pracować wraz z osobami które zaprosisz do współpracy.","desc_privacy":"By zapewnić Ci prywatność, sesja współpracy na żywo jest zabezpieczona szyfrowaniem end-to-end, co oznacza, że poza tobą i osobami z którymi podzielisz się linkiem, nikt nie ma dostępu do tego co będziecie tworzyć.","button_startSession":"Rozpocznij sesję","button_stopSession":"Zakończ sesję","desc_inProgressIntro":"Sesja współpracy na żywo właśnie się rozpoczęła.","desc_shareLink":"Udostępnij ten link osobom, z którymi chcesz współpracować:","desc_exitSession":"Zakończenie sesji spowoduje odłączenie ciebie od pokoju, ale nadal będziesz mógł lokalnie kontynuować pracę. Zauważ, że osoby z którymi współpracowałeś nadal będą mogły współpracować.","shareTitle":"Dołącz do sesji współpracy na żywo w Excalidraw"},"errorDialog":{"title":"Wystąpił błąd"},"exportDialog":{"disk_title":"Zapisz na dysku","disk_details":"Eksportuj dane sceny do pliku, z którego możesz importować później.","disk_button":"Zapisz do pliku","link_title":"Link do udostępnienia","link_details":"Eksportuj jako link tylko do odczytu.","link_button":"Wygeneruj link","excalidrawplus_description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+.","excalidrawplus_button":"Eksportuj","excalidrawplus_exportError":"W tej chwili nie można wyeksportować do Excalidraw+..."},"helpDialog":{"blog":"Przeczytaj na naszym blogu","click":"kliknięcie","deepSelect":"Wybór w obrębie grupy","deepBoxSelect":"Wybór w obrębie grupy i unikanie przeciągania","curvedArrow":"Zakrzywiona strzałka","curvedLine":"Zakrzywiona linia","documentation":"Dokumentacja","doubleClick":"podwójne kliknięcie","drag":"przeciągnij","editor":"Edytor","editLineArrowPoints":"Edytuj punkty linii/strzałki","editText":"Edytuj tekst/dodaj etykietę","github":"Znalazłeś problem? Prześlij","howto":"Skorzystaj z instrukcji","or":"lub","preventBinding":"Zapobiegaj wiązaniu strzałek","tools":"Narzędzia","shortcuts":"Skróty klawiszowe","textFinish":"Zakończ edycję (edytor tekstu)","textNewLine":"Dodaj nowy wiersz (edytor tekstu)","title":"Pomoc","view":"Widok","zoomToFit":"Powiększ, aby wyświetlić wszystkie elementy","zoomToSelection":"Przybliż do zaznaczenia","toggleElementLock":"Zablokuj/odblokuj zaznaczenie","movePageUpDown":"Przesuń stronę w górę/w dół","movePageLeftRight":"Przenieś stronę w lewo/prawo"},"clearCanvasDialog":{"title":"Wyczyść płótno"},"publishDialog":{"title":"Opublikuj bibliotekę","itemName":"Nazwa elementu","authorName":"Nazwa autora","githubUsername":"Nazwa użytkownika na GitHubie","twitterUsername":"Nazwa użytkownika Twitter","libraryName":"Nazwa biblioteki","libraryDesc":"Opis biblioteki","website":"Strona internetowa","placeholder":{"authorName":"Twoje imię lub nazwa użytkownika","libraryName":"Nazwa twojej biblioteki","libraryDesc":"Opis twojej biblioteki, aby pomóc innym zrozumieć jej działanie","githubHandle":"Uchwyt GitHub (opcjonalny), dzięki czemu możesz edytować bibliotekę po przesłaniu do sprawdzenia","twitterHandle":"Nazwa użytkownika w serwisie Twitter (opcjonalna), aby wiedzieć kogo oznaczyć przy promowaniu na Twitterze","website":"Link do Twojej osobistej strony internetowej lub gdzie indziej (opcjonalnie)"},"errors":{"required":"Wymagane","website":"Wprowadź prawidłowy adres URL"},"noteDescription":"dla innych osób do wykorzystania w swoich rysunkach.","noteGuidelines":"Biblioteka musi być najpierw zatwierdzona ręcznie. Przeczytaj wytyczne","noteLicense":"Wysyłając zgadzasz się, że biblioteka zostanie opublikowana pod Licencja MIT, w skrócie, każdy może z nich korzystać bez ograniczeń.","noteItems":"Każdy element biblioteki musi mieć własną nazwę, aby był filtrowalny. Uwzględnione zostaną następujące elementy biblioteki:","atleastOneLibItem":"Proszę wybrać co najmniej jeden element biblioteki, by rozpocząć","republishWarning":"Uwaga: niektóre z wybranych elementów są oznaczone jako już opublikowane/wysłane. Powinieneś ponownie przesłać elementy tylko wtedy, gdy aktualizujesz istniejącą bibliotekę lub zgłoszenie."},"publishSuccessDialog":{"title":"Biblioteka została przesłana","content":"Dziękujemy {{authorName}}. Twoja biblioteka została przesłana do sprawdzenia. Możesz śledzić jej stantutaj"},"confirmDialog":{"resetLibrary":"Zresetuj Bibliotekę","removeItemsFromLib":"Usuń wybrane elementy z biblioteki"},"imageExportDialog":{"header":"Eksportuj obraz","label":{"withBackground":"Tło","onlySelected":"Tylko wybrane","darkMode":"Tryb ciemny","embedScene":"Osadź scenę","scale":"Skala","padding":"Dopełnienie"},"tooltip":{"embedScene":"Dane sceny zostaną zapisane w eksportowanym pliku PNG/SVG tak, aby scena mogła zostać z niego przywrócona.\\nZwiększy to rozmiar eksportowanego pliku."},"title":{"exportToPng":"Zapisz jako PNG","exportToSvg":"Zapisz jako SVG","copyPngToClipboard":"Skopiuj do schowka jako PNG"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Skopiuj do schowka"}},"encrypted":{"tooltip":"Twoje rysunki są zabezpieczone szyfrowaniem end-to-end, tak więc nawet w Excalidraw nie jesteśmy w stanie zobaczyć tego co tworzysz.","link":"Wpis na blogu dotyczący szyfrowania end-to-end w Excalidraw"},"stats":{"angle":"Kąt","element":"Element","elements":"Elementy","height":"Wysokość","scene":"Scena","selected":"Zaznaczenie","storage":"Pamięć","title":"Statystyki dla nerdów","total":"Łącznie","version":"Wersja","versionCopy":"Kliknij, aby skopiować","versionNotAvailable":"Wersja niedostępna","width":"Szerokość"},"toast":{"addedToLibrary":"Dodano do biblioteki","copyStyles":"Skopiowano style.","copyToClipboard":"Skopiowano do schowka.","copyToClipboardAsPng":"Skopiowano {{exportSelection}} do schowka jako PNG\\n({{exportColorScheme}})","fileSaved":"Zapisano plik.","fileSavedToFilename":"Zapisano jako {filename}","canvas":"płótno","selection":"zaznaczenie","pasteAsSingleElement":"Użyj {{shortcut}}, aby wkleić jako pojedynczy element,\\nlub wklej do istniejącego edytora tekstu","unableToEmbed":"Osadzenie tego linku jest obecnie niedozwolone. Zgłoś propozycję na portalu GitHub, aby dodać go do listy dozwolonych wyjątków","unrecognizedLinkFormat":"Osadzony link ma niewłaściwy format. Spróbuj wkleić całą zawartość pola \\"embed\\" z oryginalnej strony."},"colors":{"transparent":"Przezroczysty","black":"Czarny","white":"Biały","red":"Czerwony","pink":"Różowy","grape":"Winogronowy","violet":"Fioletowy","gray":"Szary","blue":"Niebieski","cyan":"Cyjanowy","teal":"Turkusowy","green":"Zielony","yellow":"Żółty","orange":"Pomarańczowy","bronze":"Brązowy"},"welcomeScreen":{"app":{"center_heading":"Wszystkie dane są zapisywane lokalnie w przeglądarce.","center_heading_plus":"Czy zamiast tego chcesz przejść do Excalidraw+?","menuHint":"Eksportuj, preferencje, języki..."},"defaults":{"menuHint":"Eksportuj, preferencje i więcej...","center_heading":"Schematy uproszczone.","toolbarHint":"Wybierz narzędzie i zacznij rysować!","helpHint":"Skróty klawiaturowe i pomoc"}},"colorPicker":{"mostUsedCustomColors":"Najczęściej używane kolory","colors":"Kolory","shades":"Odcienie","hexCode":"Kod HEX","noShades":"Brak dostępnych odcieni dla tego koloru"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Eksportuj jako obraz","button":"Eksportuj jako obraz","description":"Eksportuj zawartość sceny jako obraz z możliwością importowania."},"saveToDisk":{"title":"Zapisz na dysku","button":"Zapisz na dysku","description":"Eksportuj zawartość sceny jako plik z możliwością importowania."},"excalidrawPlus":{"title":"Excalidraw+","button":"Eksportuj do Excalidraw+","description":"Zapisz scenę do swojego obszaru roboczego Excalidraw+."}},"modal":{"loadFromFile":{"title":"Wczytaj z pliku","button":"Wczytaj z pliku","description":"Wczytanie z pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."},"shareableLink":{"title":"Wczytaj z linku","button":"Nadpisz moją zawartość","description":"Wczytanie zewnętrznego pliku nadpisze istniejącą zawartość.

Możesz najpierw utworzyć kopię zapasową swojego rysunku, używając jednej z poniższych opcji."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js b/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js new file mode 100644 index 0000000..ca38d8c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pt-BR-json-370215dc506c58ee3217.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3721],{8881:function(e){e.exports=JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto sem formatação","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Recortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para área de transferência como texto","bringForward":"Trazer para a frente","sendToBack":"Enviar para o fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contorno","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Precisão do traço","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Pontudo","round":"Arredondado","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Flecha","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fonte","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Hachura","zigzag":"Zigue-zague","crossHatch":"Hachura cruzada","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquiteto","artist":"Artista","cartoonist":"Cartunista","fileTitle":"Nome do arquivo","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da tela","drawingCanvas":"Tela de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"Seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grade","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"Carregando biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"Carregando cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar embaixo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centralizar verticalmente","centerHorizontally":"Centralizar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Compartilhar","showStroke":"Exibir seletor de cores do traço","showBackground":"Exibir seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca Pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Diminuir o tamanho da fonte","increaseFontSize":"Aumentar o tamanho da fonte","unbindText":"Desvincular texto","bindText":"Vincular texto ao contêiner","createContainerFromText":"Envolver texto em um contêiner","link":{"edit":"Editar link","editEmbed":"","create":"Criar link","createEmbed":"","label":"Link","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear tudo","unlockAll":"Desbloquear tudo"},"statusPublished":"Publicado","sidebarLock":"Manter barra lateral aberta","selectAllElementsInFrame":"Selecionar todos os elementos no quadro","removeAllElementsFromFrame":"Remover todos os elementos do quadro","eyeDropper":"Escolher cor da tela"},"library":{"noItems":"Nenhum item adicionado ainda...","hint_emptyLibrary":"Selecione um item na tela para adicioná-lo aqui, ou instale uma biblioteca do repositório público, abaixo.","hint_emptyPrivateLibrary":"Selecione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar o canvas e redefinir a cor de fundo","exportJSON":"Exportar arquivo","exportImage":"Exportar imagem...","export":"Salvar como...","copyToClipboard":"Copiar para o clipboard","save":"Salvar para o arquivo atual","saveAs":"Salvar como","load":"Abrir","getShareableLink":"Obter um link de compartilhamento","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar para o conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Redefinir biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Tela cheia","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo Zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a tela. Você tem certeza?","couldNotCreateShareableLink":"Não foi possível criar um link de compartilhamento.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link compartilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o arquivo inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar um canvas vazio.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível descriptografar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Carregar um desenho externo substituirá o seu conteúdo existente. Deseja continuar?","collabStopOverridePrompt":"Ao interromper a sessão, você substituirá seu desenho anterior, armazenado localmente. Você tem certeza?\\n\\n(Se você deseja manter seu desenho local, simplesmente feche a aba do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Você ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste arquivo de imagem","invalidSceneUrl":"Não foi possível importar a cena da URL fornecida. Ela está incompleta ou não contém dados JSON válidos do Excalidraw.","resetLibrary":"Isto limpará a sua biblioteca. Você tem certeza?","removeItemsFromsLibrary":"Excluir {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"A chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desabilitada.","collabOfflineWarning":"Sem conexão com a internet disponível.\\nSuas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de arquivo não suportado.","imageInsertError":"Não foi possível inserir imagem. Tente novamente mais tarde...","fileTooBig":"O arquivo é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG Inválido.","cannotResolveCollabServer":"Não foi possível conectar-se ao servidor colaborativo. Por favor, recarregue a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.","brave_measure_text_error":{"line1":"Parece que você está usando o navegador Brave com a configuração Bloquear Impressões Digitais no modo agressivo.","line2":"Isso pode acabar quebrando Elementos de Texto em seus desenhos.","line3":"Recomendamos fortemente desativar essa configuração. Você pode acessar o passo a passo sobre como fazer isso.","line4":"Se desativar essa configuração não corrigir a exibição de elementos de texto, por favor abra uma issue em nosso GitHub, ou mande uma mensagem em nosso Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter ativa a ferramenta selecionada após desenhar","penMode":"Modo caneta — impede o toque","link":"Adicionar/Atualizar link para uma forma selecionada","eraser":"Borracha","frame":"Ferramenta de quadro","embeddable":"","laser":"","hand":"Mão (ferramenta de rolagem)","extraTools":"Mais ferramentas"},"headings":{"canvasActions":"Ações da tela","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, segure a roda do mouse ou a barra de espaço enquanto arrasta ou use a ferramenta de mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Toque e arraste, solte quando terminar","text":"Dica: você também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duplo ou tecle ENTER para editar o texto","text_editing":"Pressione Esc ou Ctrl/Cmd+ENTER para encerrar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Você pode restringir o ângulo segurando o SHIFT","resize":"Você pode restringir proporções segurando SHIFT enquanto redimensiona,\\nsegure ALT para redimensionar do centro","resizeImage":"Você pode redimensionar livremente segurando SHIFT,\\nsegure ALT para redimensionar a partir do centro","rotate":"Você pode restringir os ângulos segurando SHIFT enquanto gira","lineEditor_info":"Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos","lineEditor_pointSelected":"Pressione Delete para remover o(s) ponto(s),\\nCtrl/Cmd+D para duplicar ou arraste para mover","lineEditor_nothingSelected":"Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos","placeImage":"Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho","publishLibrary":"Publicar sua própria biblioteca","bindTextToElement":"Pressione Enter para adicionar o texto","deepBoxSelect":"Segure Ctrl/Cmd para seleção profunda e para evitar arrastar","eraserRevert":"Segure a tecla Alt para inverter os elementos marcados para exclusão","firefox_clipboard_write":"Esse recurso pode ser ativado configurando a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar pré-visualização","canvasTooBig":"A tela pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se recarregar a página não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando para a issue do GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Você pode convidar pessoas para sua cena atual para colaborar com você.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta a ponta; portanto, o que você desenhar permanecerá privado. Nem mesmo nosso servidor poderá ver o que você cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Compartilhe este link com qualquer pessoa com quem você queira colaborar:","desc_exitSession":"Interrompendo a sessão você irá se desconectar da sala, mas você poderá continuar trabalhando com a cena localmente. Observe que isso não afetará outras pessoas, e elas ainda poderão colaborar em suas versões.","shareTitle":"Participe de uma sessão ao vivo de colaboração no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Salvar no computador","disk_details":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde.","disk_button":"Salvar em um arquivo","link_title":"Link compartilhável","link_details":"Exportar como link de apenas leitura.","link_button":"Exportar link","excalidrawplus_description":"Salvar a cena na sua área de trabalho Excalidraw+.","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não é possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blog","click":"clicar","deepSelect":"Seleção profunda","deepBoxSelect":"Use a seleção profunda dentro da caixa para previnir arrastar","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar linha/ponta da seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Nos informe","howto":"Siga nossos guias","or":"ou","preventBinding":"Evitar fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Encerrar edição (editor de texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajudar","view":"Visualizar","zoomToFit":"Ampliar para encaixar todos os elementos","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Bloquear/desbloquear seleção","movePageUpDown":"Mover a página para cima/baixo","movePageLeftRight":"Mover a página para esquerda/direita"},"clearCanvasDialog":{"title":"Limpar a tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de usuário do GitHub","twitterUsername":"Nome de usuário do Twitter","libraryName":"Nome da Biblioteca","libraryDesc":"Descrição da biblioteca","website":"Site","placeholder":{"authorName":"Seu nome ou nome de usuário","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição para ajudar as pessoas a entenderem o uso da sua da sua biblioteca","githubHandle":"Identificador do GitHub (opcional), para que você possa editar a biblioteca depois de enviar para revisão","twitterHandle":"Nome de usuário do Twitter (opcional), para que saibamos quem deve ser creditado se promovermos no Twitter","website":"Link para o seu site pessoal ou outro lugar (opcional)"},"errors":{"required":"Obrigatório","website":"Informe uma URL válida"},"noteDescription":"Envie sua biblioteca para ser incluída no repositório de biblioteca públicapara outras pessoas usarem em seus desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor leia o orientações antes de enviar. Você precisará de uma conta do GitHub para se comunicar e fazer alterações quando solicitado, mas não é estritamente necessário.","noteLicense":"Ao enviar, você concorda que a biblioteca será publicada sob a Licença MIT, o que, em suma, significa que qualquer pessoa pode utilizá-los sem restrições.","noteItems":"Cada item da biblioteca deve ter seu próprio nome para que seja filtrável. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, selecione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens selecionados estão marcados como já publicado/enviado. Você só deve reenviar itens ao atualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. Sua biblioteca foi enviada para análise. Você pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Redefinir biblioteca","removeItemsFromLib":"Remover itens selecionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"Fundo","onlySelected":"Somente selecionados","darkMode":"Modo escuro","embedScene":"Incorporar cena","scale":"Escala","padding":"Margem interna"},"tooltip":{"embedScene":"Os dados da cena serão salvos no arquivo PNG/SVG exportado para que a cena possa ser restaurada a partir dele.\\nIsso aumentará o tamanho do arquivo exportado."},"title":{"exportToPng":"Exportar como PNG","exportToSvg":"Exportar como SVG","copyPngToClipboard":"Copiar PNG para área de transferência"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiar para a área de transferência"}},"encrypted":{"tooltip":"Seus desenhos são criptografados de ponta a ponta, então os servidores do Excalidraw nunca os verão.","link":"Publicação de blog com criptografia de ponta a ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Adicionado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG ({{exportColorScheme}})","fileSaved":"Arquivo salvo.","fileSavedToFilename":"Salvo em {filename}","canvas":"tela","selection":"seleção","pasteAsSingleElement":"Use {{shortcut}} para colar como um único elemento,\\nou cole em um editor de texto já existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"Ciano","teal":"Verde-azulado","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são salvos localmente no seu navegador.","center_heading_plus":"Você queria ir para o Excalidraw+ em vez disso?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e mais...","center_heading":"Diagramas, Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"Cores personalizadas mais usadas","colors":"Cores","shades":"Tons","hexCode":"Código hexadecimal","noShades":"Sem tons disponíveis para essa cor"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportar como imagem","button":"Exportar como imagem","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"saveToDisk":{"title":"Salvar no computador","button":"Salvar no computador","description":"Exportar os dados da cena para um arquivo que você poderá importar mais tarde."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportar para Excalidraw+","description":"Salvar a cena na sua área de trabalho Excalidraw+."}},"modal":{"loadFromFile":{"title":"Carregar de arquivo","button":"Carregar de arquivo","description":"Carregar de um arquivo irá substituir o conteúdo existente.

Você pode salvar seu desenho primeiro usando uma das opções abaixo."},"shareableLink":{"title":"Carregar de um link","button":"Substituir meu conteúdo","description":"Carregar um desenho externo irá substituir seu conteúdo existente.

Você pode salvar seu desenho antes utilizando uma das opções abaixo."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js b/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js new file mode 100644 index 0000000..1388a63 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/pt-PT-json-6f3d80656622a222b4e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5395],{125:function(e){e.exports=JSON.parse('{"labels":{"paste":"Colar","pasteAsPlaintext":"Colar como texto simples","pasteCharts":"Colar gráficos","selectAll":"Selecionar tudo","multiSelect":"Adicionar elemento à seleção","moveCanvas":"Mover tela","cut":"Cortar","copy":"Copiar","copyAsPng":"Copiar para a área de transferência como PNG","copyAsSvg":"Copiar para a área de transferência como SVG","copyText":"Copiar para Área de Transferência como texto","bringForward":"Trazer para o primeiro plano","sendToBack":"Enviar para o plano de fundo","bringToFront":"Trazer para o primeiro plano","sendBackward":"Enviar para trás","delete":"Apagar","copyStyles":"Copiar os estilos","pasteStyles":"Colar os estilos","stroke":"Contornos","background":"Fundo","fill":"Preenchimento","strokeWidth":"Espessura do traço","strokeStyle":"Estilo de traço","strokeStyle_solid":"Sólido","strokeStyle_dashed":"Tracejado","strokeStyle_dotted":"Pontilhado","sloppiness":"Desleixo","opacity":"Opacidade","textAlign":"Alinhamento do texto","edges":"Arestas","sharp":"Aguçado","round":"Redondo","arrowheads":"Pontas","arrowhead_none":"Nenhuma","arrowhead_arrow":"Seta","arrowhead_bar":"Barra","arrowhead_dot":"Ponto","arrowhead_triangle":"Triângulo","fontSize":"Tamanho da fonte","fontFamily":"Família da fontes","addWatermark":"Adicionar \\"Feito com Excalidraw\\"","handDrawn":"Manuscrito","normal":"Normal","code":"Código","small":"Pequeno","medium":"Médio","large":"Grande","veryLarge":"Muito grande","solid":"Sólido","hachure":"Eclosão","zigzag":"ziguezague","crossHatch":"Sombreado","thin":"Fino","bold":"Espesso","left":"Esquerda","center":"Centralizar","right":"Direita","extraBold":"Muito espesso","architect":"Arquitecto","artist":"Artista","cartoonist":"Caricaturista","fileTitle":"Nome do ficheiro","colorPicker":"Seletor de cores","canvasColors":"Usado na tela","canvasBackground":"Fundo da área de desenho","drawingCanvas":"Área de desenho","layers":"Camadas","actions":"Ações","language":"Idioma","liveCollaboration":"Colaboração ao vivo...","duplicateSelection":"Duplicar","untitled":"Sem título","name":"Nome","yourName":"O seu nome","madeWithExcalidraw":"Feito com Excalidraw","group":"Agrupar seleção","ungroup":"Desagrupar seleção","collaborators":"Colaboradores","showGrid":"Mostrar grelha","addToLibrary":"Adicionar à biblioteca","removeFromLibrary":"Remover da biblioteca","libraryLoadingMessage":"A carregar a biblioteca…","libraries":"Procurar bibliotecas","loadingScene":"A carregar a cena…","align":"Alinhamento","alignTop":"Alinhar ao topo","alignBottom":"Alinhar ao fundo","alignLeft":"Alinhar à esquerda","alignRight":"Alinhar à direita","centerVertically":"Centrar verticalmente","centerHorizontally":"Centrar horizontalmente","distributeHorizontally":"Distribuir horizontalmente","distributeVertically":"Distribuir verticalmente","flipHorizontal":"Inverter horizontalmente","flipVertical":"Inverter verticalmente","viewMode":"Modo de visualização","share":"Partilhar","showStroke":"Mostrar seletor de cores do traço","showBackground":"Mostrar seletor de cores do fundo","toggleTheme":"Alternar tema","personalLib":"Biblioteca pessoal","excalidrawLib":"Biblioteca do Excalidraw","decreaseFontSize":"Reduzir o tamanho do tipo de letra","increaseFontSize":"Aumentar o tamanho do tipo de letra","unbindText":"Desvincular texto","bindText":"Ligar texto ao recipiente","createContainerFromText":"Envolver texto num recipiente","link":{"edit":"Editar ligação","editEmbed":"","create":"Criar ligação","createEmbed":"","label":"Ligação","labelEmbed":"","empty":""},"lineEditor":{"edit":"Editar linha","exit":"Sair do editor de linha"},"elementLock":{"lock":"Bloquear","unlock":"Desbloquear","lockAll":"Bloquear todos","unlockAll":"Desbloquear todos"},"statusPublished":"Publicado","sidebarLock":"Manter a barra lateral aberta","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Ainda não foram adicionados nenhuns itens...","hint_emptyLibrary":"Seleccione um item na tela para adicioná-lo aqui, ou então instale uma biblioteca do repositório público abaixo.","hint_emptyPrivateLibrary":"Seleccione um item na tela para adicioná-lo aqui."},"buttons":{"clearReset":"Limpar a área de desenho e redefinir a cor de fundo","exportJSON":"Exportar para ficheiro","exportImage":"Exportar imagem...","export":"Guardar para...","copyToClipboard":"Copiar para o clipboard","save":"Guardar no ficheiro atual","saveAs":"Guardar como","load":"Abrir","getShareableLink":"Obter um link de partilha","close":"Fechar","selectLanguage":"Selecionar idioma","scrollBackToContent":"Voltar ao conteúdo","zoomIn":"Aumentar zoom","zoomOut":"Diminuir zoom","resetZoom":"Redefinir zoom","menu":"Menu","done":"Concluído","edit":"Editar","undo":"Desfazer","redo":"Refazer","resetLibrary":"Repor a biblioteca","createNewRoom":"Criar nova sala","fullScreen":"Ecrã inteiro","darkMode":"Modo escuro","lightMode":"Modo claro","zenMode":"Modo zen","objectsSnapMode":"","exitZenMode":"Sair do modo zen","cancel":"Cancelar","clear":"Limpar","remove":"Remover","embed":"","publishLibrary":"Publicar","submit":"Enviar","confirm":"Confirmar","embeddableInteractionButton":""},"alerts":{"clearReset":"Isto irá limpar toda a área de desenho. Tem a certeza?","couldNotCreateShareableLink":"Não foi possível criar um link partilhável.","couldNotCreateShareableLinkTooBig":"Não foi possível criar um link partilhável: a cena é muito grande","couldNotLoadInvalidFile":"Não foi possível carregar o ficheiro inválido","importBackendFailed":"A importação do servidor falhou.","cannotExportEmptyCanvas":"Não é possível exportar uma área de desenho vazia.","couldNotCopyToClipboard":"Não foi possível copiar para a área de transferência.","decryptFailed":"Não foi possível desencriptar os dados.","uploadedSecurly":"O upload foi protegido com criptografia de ponta a ponta, o que significa que o servidor do Excalidraw e terceiros não podem ler o conteúdo.","loadSceneOverridePrompt":"Se carregar um desenho externo substituirá o conteúdo existente. Quer continuar?","collabStopOverridePrompt":"Ao interromper a sessão irá substituir o último desenho guardado. Tem a certeza?\\n\\n(Caso queira manter o último desenho, simplesmente feche a janela do navegador.)","errorAddingToLibrary":"Não foi possível adicionar o item à biblioteca","errorRemovingFromLibrary":"Não foi possível remover o item da biblioteca","confirmAddLibrary":"Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem a certeza?","imageDoesNotContainScene":"Esta imagem parece não conter dados de cenas. Ativou a incorporação da cena durante a exportação?","cannotRestoreFromImage":"Não foi possível restaurar a cena deste ficheiro de imagem","invalidSceneUrl":"Não foi possível importar a cena a partir do URL fornecido. Ou está mal formado ou não contém dados JSON do Excalidraw válidos.","resetLibrary":"Isto irá limpar a sua biblioteca. Tem a certeza?","removeItemsFromsLibrary":"Apagar {{count}} item(ns) da biblioteca?","invalidEncryptionKey":"Chave de encriptação deve ter 22 caracteres. A colaboração ao vivo está desativada.","collabOfflineWarning":"Sem ligação à internet disponível.\\nAs suas alterações não serão salvas!"},"errors":{"unsupportedFileType":"Tipo de ficheiro não suportado.","imageInsertError":"Não foi possível inserir a imagem, tente novamente mais tarde...","fileTooBig":"O ficheiro é muito grande. O tamanho máximo permitido é {{maxSize}}.","svgImageInsertError":"Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.","failedToFetchImage":"","invalidSVGString":"SVG inválido.","cannotResolveCollabServer":"Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.","importLibraryError":"Não foi possível carregar a biblioteca","collabSaveFailed":"Não foi possível guardar na base de dados de backend. Se os problemas persistirem, guarde o ficheiro localmente para garantir que não perde o seu trabalho.","collabSaveFailed_sizeExceeded":"Não foi possível guardar na base de dados de backend, o ecrã parece estar muito grande. Deve guardar o ficheiro localmente para garantir que não perde o seu trabalho.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Seleção","image":"Inserir imagem","rectangle":"Retângulo","diamond":"Losango","ellipse":"Elipse","arrow":"Flecha","line":"Linha","freedraw":"Desenhar","text":"Texto","library":"Biblioteca","lock":"Manter a ferramenta selecionada ativa após desenhar","penMode":"Modo caneta - impedir toque","link":"Acrescentar/ Adicionar ligação para uma forma seleccionada","eraser":"Borracha","frame":"","embeddable":"","laser":"","hand":"Mão (ferramenta de movimento da tela)","extraTools":""},"headings":{"canvasActions":"Ações da área de desenho","selectedShapeActions":"Ações das formas selecionadas","shapes":"Formas"},"hints":{"canvasPanning":"Para mover a tela, carregue na roda do rato ou na barra de espaço enquanto arrasta, ou use a ferramenta da mão","linearElement":"Clique para iniciar vários pontos, arraste para uma única linha","freeDraw":"Clique e arraste, large quando terminar","text":"Dica: também pode adicionar texto clicando duas vezes em qualquer lugar com a ferramenta de seleção","embeddable":"","text_selected":"Clique duas vezes ou pressione a tecla Enter para editar o texto","text_editing":"Pressione a tecla Escape ou CtrlOrCmd+ENTER para terminar a edição","linearElementMulti":"Clique no último ponto ou pressione Escape ou Enter para terminar","lockAngle":"Pode restringir o ângulo mantendo premida a tecla SHIFT","resize":"Pode restringir as proporções mantendo a tecla SHIFT premida enquanto redimensiona,\\nmantenha a tecla ALT premida para redimensionar a partir do centro","resizeImage":"Pode redimensionar livremente mantendo pressionada a tecla SHIFT,\\nmantenha pressionada a tecla ALT para redimensionar do centro","rotate":"Pode restringir os ângulos mantendo a tecla SHIFT premida enquanto roda","lineEditor_info":"Pressione CtrlOrCmd e faça um duplo-clique ou pressione CtrlOrCmd + Enter para editar pontos","lineEditor_pointSelected":"Carregue na tecla Delete para remover o(s) ponto(s), CtrlOuCmd+D para duplicar, ou arraste para mover","lineEditor_nothingSelected":"Seleccione um ponto para editar (carregue em SHIFT para seleccionar vários),\\nou carregue em Alt e clique para acrescentar novos pontos","placeImage":"Clique para colocar a imagem ou clique e arraste para definir o seu tamanho manualmente","publishLibrary":"Publique a sua própria biblioteca","bindTextToElement":"Carregue Enter para acrescentar texto","deepBoxSelect":"Mantenha a tecla CtrlOrCmd carregada para selecção profunda, impedindo o arrastamento","eraserRevert":"Carregue também em Alt para reverter os elementos marcados para serem apagados","firefox_clipboard_write":"Esta função pode provavelmente ser ativada definindo a opção \\"dom.events.asyncClipboard.clipboardItem\\" como \\"true\\". Para alterar os sinalizadores do navegador no Firefox, visite a página \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Não é possível mostrar uma pré-visualização","canvasTooBig":"A área de desenho pode ser muito grande.","canvasTooBigTip":"Dica: tente aproximar um pouco os elementos mais distantes."},"errorSplash":{"headingMain":"Foi encontrado um erro. Tente ","clearCanvasMessage":"Se a recarga não funcionar, tente ","clearCanvasCaveat":" Isso resultará em perda de trabalho ","trackedToSentry":"O erro com o identificador {{eventId}} foi rastreado no nosso sistema.","openIssueMessage":"Fomos muito cautelosos para não incluir suas informações de cena no erro. Se sua cena não for privada, por favor, considere seguir nosso Por favor, inclua informações abaixo, copiando e colando no relatório de erros no GitHub.","sceneContent":"Conteúdo da cena:"},"roomDialog":{"desc_intro":"Pode convidar pessoas para colaborarem na sua cena atual.","desc_privacy":"Não se preocupe, a sessão usa criptografia de ponta-a-ponta, por isso o que desenhar permanecerá privado. Nem mesmo o nosso servidor poderá ver o que cria.","button_startSession":"Iniciar sessão","button_stopSession":"Parar sessão","desc_inProgressIntro":"A sessão de colaboração ao vivo está agora em andamento.","desc_shareLink":"Partilhe este link com qualquer pessoa com quem queira colaborar:","desc_exitSession":"Interrompendo a sessão irá desconectar-se da sala, mas poderá continuar a trabalhar com a cena localmente. Note que isso não afetará outras pessoas e elas ainda poderão colaborar nas versões deles.","shareTitle":"Participe numa sessão de colaboração ao vivo no Excalidraw"},"errorDialog":{"title":"Erro"},"exportDialog":{"disk_title":"Guardar no disco","disk_details":"Exportar os dados da cena para um ficheiro do qual poderá importar mais tarde.","disk_button":"Guardar num ficheiro","link_title":"Link partilhável","link_details":"Exportar como um link de apenas leitura.","link_button":"Exportar para link","excalidrawplus_description":"Guardar a cena no seu espaço de trabalho Excalidraw+","excalidrawplus_button":"Exportar","excalidrawplus_exportError":"Não foi possível exportar para o Excalidraw+ neste momento..."},"helpDialog":{"blog":"Leia o nosso blogue","click":"clicar","deepSelect":"Selecção profunda","deepBoxSelect":"Selecção profunda dentro da caixa, impedindo que seja arrastada","curvedArrow":"Seta curva","curvedLine":"Linha curva","documentation":"Documentação","doubleClick":"clique duplo","drag":"arrastar","editor":"Editor","editLineArrowPoints":"Editar pontos de linha/seta","editText":"Editar texto / adicionar etiqueta","github":"Encontrou algum problema? Informe-nos","howto":"Siga os nossos guias","or":"ou","preventBinding":"Prevenir fixação de seta","tools":"Ferramentas","shortcuts":"Atalhos de teclado","textFinish":"Finalizar edição (editor texto)","textNewLine":"Adicionar nova linha (editor de texto)","title":"Ajuda","view":"Visualizar","zoomToFit":"Ajustar para todos os elementos caberem","zoomToSelection":"Ampliar a seleção","toggleElementLock":"Trancar/destrancar selecção","movePageUpDown":"Mover página para cima / baixo","movePageLeftRight":"Mover página para esquerda / direita"},"clearCanvasDialog":{"title":"Apagar tela"},"publishDialog":{"title":"Publicar biblioteca","itemName":"Nome do item","authorName":"Nome do autor","githubUsername":"Nome de utilizador do GitHub","twitterUsername":"Nome de utilizador no Twitter","libraryName":"Nome da biblioteca","libraryDesc":"Descrição da biblioteca","website":"Página web","placeholder":{"authorName":"Introduza o seu nome ou nome de utilizador","libraryName":"Nome da sua biblioteca","libraryDesc":"Descrição da sua biblioteca para ajudar as pessoas a entender a utilização dela","githubHandle":"Identificador do GitHub (opcional), para que possa editar a biblioteca depois desta ser enviada para revisão","twitterHandle":"Nome do Twitter (opcional), para que saibamos quem merece os créditos na promoção via Twitter","website":"Ligação para a sua página pessoal ou qualquer outra (opcional)"},"errors":{"required":"Obrigatório","website":"Introduza um URL válido"},"noteDescription":"Envie a sua biblioteca para ser incluída no repositório de bibliotecas públicaspara outras pessoas a poderem usar nos seus próprios desenhos.","noteGuidelines":"A biblioteca precisa ser aprovada manualmente primeiro. Por favor, leia orientações antes de enviar. Vai precisar de uma conta no GitHub para comunicar e fazer alterações se solicitado, mas não é estritamente necessária.","noteLicense":"Ao enviar, concorda que a biblioteca será publicada sob a Licença MIT, o que significa, de forma resumida, que qualquer pessoa pode utilizá-la sem restrições.","noteItems":"Cada item da biblioteca deve ter o seu próprio nome para que este seja pesquisável com filtros. Os seguintes itens da biblioteca serão incluídos:","atleastOneLibItem":"Por favor, seleccione pelo menos um item da biblioteca para começar","republishWarning":"Nota: alguns dos itens seleccionados estão marcados como já publicados/enviados. Só deve reenviar itens ao actualizar uma biblioteca existente ou submissão."},"publishSuccessDialog":{"title":"Biblioteca enviada","content":"Obrigado {{authorName}}. A sua biblioteca foi enviada para análise. Pode acompanhar o statusaqui"},"confirmDialog":{"resetLibrary":"Repor a biblioteca","removeItemsFromLib":"Remover os itens seleccionados da biblioteca"},"imageExportDialog":{"header":"Exportar imagem","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"Cena embutida","scale":"","padding":"Espaçamento"},"tooltip":{"embedScene":""},"title":{"exportToPng":"Exportar em PNG","exportToSvg":"Exportar em SVG","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"Os seus desenhos são encriptados de ponta-a-ponta, por isso os servidores do Excalidraw nunca os verão.","link":"Publicação de blogue na encriptação ponta-a-ponta no Excalidraw"},"stats":{"angle":"Ângulo","element":"Elemento","elements":"Elementos","height":"Altura","scene":"Cena","selected":"Selecionado","storage":"Armazenamento","title":"Estatísticas para nerds","total":"Total","version":"Versão","versionCopy":"Clique para copiar","versionNotAvailable":"Versão não disponível","width":"Largura"},"toast":{"addedToLibrary":"Acrescentado à biblioteca","copyStyles":"Estilos copiados.","copyToClipboard":"Copiado para a área de transferência.","copyToClipboardAsPng":"{{exportSelection}} copiado para a área de transferência como PNG\\n({{exportColorScheme}})","fileSaved":"Ficheiro guardado.","fileSavedToFilename":"Guardado como {filename}","canvas":"área de desenho","selection":"seleção","pasteAsSingleElement":"Usar {{shortcut}} para colar como um único elemento,\\nou colar num editor de texto existente","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Transparente","black":"Preto","white":"Branco","red":"Vermelho","pink":"Rosa","grape":"Uva","violet":"Violeta","gray":"Cinza","blue":"Azul","cyan":"","teal":"","green":"Verde","yellow":"Amarelo","orange":"Laranja","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"Todos os dados são guardados no seu navegador local.","center_heading_plus":"Queria antes ir para o Excalidraw+?","menuHint":"Exportar, preferências, idiomas..."},"defaults":{"menuHint":"Exportar, preferências e outros...","center_heading":"Diagramas. Feito. Simples.","toolbarHint":"Escolha uma ferramenta e comece a desenhar!","helpHint":"Atalhos e ajuda"}},"colorPicker":{"mostUsedCustomColors":"","colors":"Cores","shades":"Tons","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"Guardar no disco","button":"Guardar no disco","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"Carregar a partir de ficheiro","button":"Carregar a partir de ficheiro","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js b/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js new file mode 100644 index 0000000..9347769 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ro-RO-json-3c32b962880e225d3416.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[5089],{2013:function(e){e.exports=JSON.parse('{"labels":{"paste":"Lipire","pasteAsPlaintext":"Inserare ca text simplu","pasteCharts":"Lipire diagrame","selectAll":"Selectare totală","multiSelect":"Adaugă element la selecție","moveCanvas":"Mutare pânză","cut":"Decupare","copy":"Copiere","copyAsPng":"Copiere în memoria temporară ca PNG","copyAsSvg":"Copiere în memoria temporară ca SVG","copyText":"Copiere în memoria temporară ca text","bringForward":"Aducere în plan apropiat","sendToBack":"Trimitere în ultimul plan","bringToFront":"Aducere în prim plan","sendBackward":"Trimitere în plan secundar","delete":"Ștergere","copyStyles":"Copiere stiluri","pasteStyles":"Lipire stiluri","stroke":"Contur","background":"Fundal","fill":"Umplere","strokeWidth":"Lățimea conturului","strokeStyle":"Stilul conturului","strokeStyle_solid":"Neîntrerupt","strokeStyle_dashed":"Liniuțe","strokeStyle_dotted":"Punctat","sloppiness":"Aspectul trasării","opacity":"Opacitate","textAlign":"Alinierea textului","edges":"Margini","sharp":"Ascuțite","round":"Rotunde","arrowheads":"Vârfuri de săgeată","arrowhead_none":"Niciunul","arrowhead_arrow":"Săgeată","arrowhead_bar":"Bară","arrowhead_dot":"Bulină","arrowhead_triangle":"Triunghi","fontSize":"Dimensiune font","fontFamily":"Familia de fonturi","addWatermark":"Adaugă „Realizat cu Excalidraw”","handDrawn":"Scris de mână","normal":"Normal","code":"Cod","small":"Mică","medium":"Medie","large":"Mare","veryLarge":"Foarte mare","solid":"Plină","hachure":"Hașură","zigzag":"Zigzag","crossHatch":"Hașură transversală","thin":"Subțire","bold":"Îngroșată","left":"Stânga","center":"Centru","right":"Dreapta","extraBold":"Extra îngroșată","architect":"Arhitect","artist":"Artist","cartoonist":"Caricaturist","fileTitle":"Nume de fișier","colorPicker":"Selector de culoare","canvasColors":"Folosite pe pânză","canvasBackground":"Fundalul pânzei","drawingCanvas":"Pânză pentru desenat","layers":"Straturi","actions":"Acțiuni","language":"Limbă","liveCollaboration":"Colaborare în direct...","duplicateSelection":"Duplicare","untitled":"Nedenumit","name":"Nume","yourName":"Numele tău","madeWithExcalidraw":"Realizat cu Excalidraw","group":"Grupare selecție","ungroup":"Degrupare selecție","collaborators":"Colaboratori","showGrid":"Afișare grilă","addToLibrary":"Adăugare la bibliotecă","removeFromLibrary":"Eliminare din bibliotecă","libraryLoadingMessage":"Se încarcă biblioteca…","libraries":"Răsfoiește bibliotecile","loadingScene":"Se încarcă scena…","align":"Aliniere","alignTop":"Aliniere sus","alignBottom":"Aliniere jos","alignLeft":"Aliniere la stânga","alignRight":"Aliniere la dreapta","centerVertically":"Centrare verticală","centerHorizontally":"Centrare orizontală","distributeHorizontally":"Distribuie orizontal","distributeVertically":"Distribuie vertical","flipHorizontal":"Răsturnare orizontală","flipVertical":"Răsturnare verticală","viewMode":"Mod de vizualizare","share":"Distribuie","showStroke":"Afișare selector culoare contur","showBackground":"Afișare selector culoare fundal","toggleTheme":"Comutare temă","personalLib":"Biblioteca personală","excalidrawLib":"Biblioteca Excalidraw","decreaseFontSize":"Micșorează dimensiunea fontului","increaseFontSize":"Mărește dimensiunea fontului","unbindText":"Deconectare text","bindText":"Legare text de container","createContainerFromText":"Încadrare text într-un container","link":{"edit":"Editare URL","editEmbed":"Editare URL și încorporare","create":"Creare URL","createEmbed":"Creare URL și încorporare","label":"URL","labelEmbed":"URL și încorporare","empty":"Nu este setat niciun URL"},"lineEditor":{"edit":"Editare linie","exit":"Părăsire editor de linii"},"elementLock":{"lock":"Blocare","unlock":"Deblocare","lockAll":"Blocare toate","unlockAll":"Deblocare toate"},"statusPublished":"Publicat","sidebarLock":"Păstrează deschisă bara laterală","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Alegere culoare din pânză"},"library":{"noItems":"Niciun element adăugat încă...","hint_emptyLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici sau instalează o bibliotecă din depozitul public, de mai jos.","hint_emptyPrivateLibrary":"Selectează un element de pe pânză pentru a-l adăuga aici."},"buttons":{"clearReset":"Resetare pânză","exportJSON":"Exportare la fișiere","exportImage":"Exportare imagine...","export":"Salvare în...","copyToClipboard":"Copiere în memoria temporară","save":"Salvare în fișierul curent","saveAs":"Salvare ca","load":"Deschidere","getShareableLink":"Obține URL partajabil","close":"Închidere","selectLanguage":"Selectare limbă","scrollBackToContent":"Derulare înapoi la conținut","zoomIn":"Apropiere","zoomOut":"Depărtare","resetZoom":"Resetare transfocare","menu":"Meniu","done":"Efectuat","edit":"Edit","undo":"Anulare","redo":"Refacere","resetLibrary":"Resetare bibliotecă","createNewRoom":"Creare cameră nouă","fullScreen":"Ecran complet","darkMode":"Mod întunecat","lightMode":"Mod luminos","zenMode":"Mod zen","objectsSnapMode":"Ancorare la obiecte","exitZenMode":"Ieșire din modul zen","cancel":"Anulare","clear":"Ștergere","remove":"Eliminare","embed":"Comutare încorporare","publishLibrary":"Publicare","submit":"Trimitere","confirm":"Confirmare","embeddableInteractionButton":"Clic pentru interacționare"},"alerts":{"clearReset":"Această opțiune va șterge întreaga pânză. Confirmi?","couldNotCreateShareableLink":"Nu s-a putut crea un URL partajabil.","couldNotCreateShareableLinkTooBig":"Nu s-a putut crea un URL partajabil: scena este prea mare","couldNotLoadInvalidFile":"Fișierul invalid nu a putut fi încărcat","importBackendFailed":"Importarea de la nivel de server a eșuat.","cannotExportEmptyCanvas":"Nu se poate exporta pânza goală.","couldNotCopyToClipboard":"Nu s-a putut copia în memoria temporară.","decryptFailed":"Datele nu au putut fi decriptate.","uploadedSecurly":"Încărcarea a fost securizată prin criptare integrală, însemnând că serverul Excalidraw și terții nu pot citi conținutul.","loadSceneOverridePrompt":"Încărcarea desenului extern va înlocui conținutul existent. Dorești să continui?","collabStopOverridePrompt":"Oprirea sesiunii va suprascrie desenul anterior stocat local. Confirmi alegerea?\\n\\n(Dacă vrei să păstrezi desenul local, pur și simplu închide fila navigatorului în schimb.)","errorAddingToLibrary":"Elementul nu a putut fi adăugat în bibliotecă","errorRemovingFromLibrary":"Elementul nu a putut fi eliminat din bibliotecă","confirmAddLibrary":"Această acțiune va adăuga {{numShapes}} formă(e) la biblioteca ta. Confirmi?","imageDoesNotContainScene":"Această imagine nu pare să conțină date de scenă. Ai activat încorporarea scenei în timpul exportului?","cannotRestoreFromImage":"Scena nu a putut fi restaurată din acest fișier de imagine","invalidSceneUrl":"Scena nu a putut fi importată din URL-ul furnizat. Este fie incorect formată, fie nu conține date JSON Excalidraw valide.","resetLibrary":"Această opțiune va elimina conținutul din bibliotecă. Confirmi?","removeItemsFromsLibrary":"Ștergi {{count}} element(e) din bibliotecă?","invalidEncryptionKey":"Cheia de criptare trebuie să aibă 22 de caractere. Colaborarea în direct este dezactivată.","collabOfflineWarning":"Nu este disponibilă nicio conexiune la internet.\\nModificările nu vor fi salvate!"},"errors":{"unsupportedFileType":"Tip de fișier neacceptat.","imageInsertError":"Imaginea nu a putut fi introdusă. Reîncearcă mai târziu...","fileTooBig":"Fișierul este prea mare. Dimensiunea maximă permisă este de {{maxSize}}.","svgImageInsertError":"Imaginea SVG nu a putut fi introdus. Marcajul SVG pare invalid.","failedToFetchImage":"","invalidSVGString":"SVG invalid.","cannotResolveCollabServer":"Nu a putut fi realizată conexiunea la serverul de colaborare. Reîncarcă pagina și încearcă din nou.","importLibraryError":"Biblioteca nu a putut fi încărcată","collabSaveFailed":"Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","collabSaveFailed_sizeExceeded":"Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.","brave_measure_text_error":{"line1":"Se pare că folosești navigatorul Brave cu opțiunea strictă pentru blocarea amprentării.","line2":"Acest lucru poate duce la întreruperea elementelor text din desene.","line3":"Îți recomandăm ferm să dezactivezi această setare. Poți urma acești pași pentru a face acest lucru.","line4":"Dacă dezactivarea acestei setări nu duce la remedierea afișării elementelor text, deschide un tichet de problemă pe pagina noastră de GitHub sau scrie-ne pe Discord"},"libraryElementTypeError":{"embeddable":"Elementele încorporabile nu pot fi adăugate la bibliotecă.","image":"În curând vor putea fi adăugate imagini în bibliotecă!"}},"toolBar":{"selection":"Selecție","image":"Introducere imagine","rectangle":"Dreptunghi","diamond":"Romb","ellipse":"Elipsă","arrow":"Săgeată","line":"Linie","freedraw":"Desenare","text":"Text","library":"Bibliotecă","lock":"Menține activ instrumentul selectat după desenare","penMode":"Mod stilou – împiedică atingerea","link":"Adăugare/actualizare URL pentru forma selectată","eraser":"Radieră","frame":"","embeddable":"Încorporare web","laser":"Indicator laser","hand":"Mână (instrument de panoramare)","extraTools":""},"headings":{"canvasActions":"Acțiuni pentru pânză","selectedShapeActions":"Acțiuni pentru forma selectată","shapes":"Forme"},"hints":{"canvasPanning":"Pentru a muta pânză, ține apăsată rotița mausului sau bara de spațiu sau folosește instrumentul în formă de mână","linearElement":"Dă clic pentru a crea mai multe puncte, glisează pentru a forma o singură linie","freeDraw":"Dă clic pe pânză și glisează cursorul, apoi eliberează-l când ai terminat","text":"Sfat: poți adăuga text și dând dublu clic oriunde cu instrumentul de selecție","embeddable":"Dă clic și trage pentru a crea un cod de încorporare de pagină web","text_selected":"Dă dublu clic sau apasă tasta Enter pentru a edita textul","text_editing":"Apasă tasta Escape sau Ctrl sau Cmd + Enter pentru a finaliza editarea","linearElementMulti":"Dă clic pe ultimul punct sau apasă tasta Escape sau tasta Enter pentru a termina","lockAngle":"Poți constrânge unghiul prin ținerea apăsată a tastei SHIFT","resize":"Poți constrânge proporțiile, ținând apăsată tasta SHIFT în timp ce redimensionezi,\\nține apăsată tasta ALT pentru a redimensiona de la centru","resizeImage":"Poți redimensiona liber ținând apăsată tasta SHIFT,\\nține apăsată tasta ALT pentru a redimensiona din centru","rotate":"Poți constrânge unghiurile, ținând apăsată tasta SHIFT în timp ce rotești","lineEditor_info":"Ține apăsată tasta Ctrl sau Cmd și dă dublu clic sau apasă tasta Ctrl sau Cmd + Enter pentru a edita puncte","lineEditor_pointSelected":"Apasă tasta Delete pentru a elimina punctele,\\ncombinația de taste Ctrl sau Cmd + D pentru a le duplica sau glisează-le pentru a le schimba poziția","lineEditor_nothingSelected":"Selectează un punct pentru a-l edita (ține apăsată tasta SHIFT pentru a selecta mai multe),\\nsau ține apăsată tasta Alt și dă clic pentru a adăuga puncte noi","placeImage":"Dă clic pentru a poziționa imaginea sau dă clic și glisează pentru a seta manual dimensiunea imaginii","publishLibrary":"Publică propria bibliotecă","bindTextToElement":"Apasă tasta Enter pentru a adăuga text","deepBoxSelect":"Ține apăsată tasta Ctrl sau Cmd pentru a efectua selectarea de adâncime și pentru a preveni glisarea","eraserRevert":"Ține apăsată tasta Alt pentru a anula elementele marcate pentru ștergere","firefox_clipboard_write":"Această caracteristică poate fi probabil activată prin setarea preferinței „dom.events.asyncClipboard.clipboardItem” ca „true”. Pentru a schimba preferințele navigatorului în Firefox, accesează pagina „about:config”.","disableSnapping":"Ține apăsat CtrlOrCmd pentru a dezactiva ancorarea"},"canvasError":{"cannotShowPreview":"Nu se poate afișa previzualizarea","canvasTooBig":"Pânza poate fi prea mare.","canvasTooBigTip":"Sfat: încearcă să apropii puțin mai mult elementele cele mai îndepărtate."},"errorSplash":{"headingMain":"A apărut o eroare. Încearcă .","clearCanvasMessage":"Dacă reîncărcarea nu funcționează, încearcă .","clearCanvasCaveat":" Acest lucru va duce la pierderea progresului ","trackedToSentry":"Eroarea cu identificatorul {{eventId}} a fost urmărită în sistemul nostru.","openIssueMessage":"Am luat măsuri de precauție pentru a nu include informații despre scenă în eroare. Dacă scena nu este privată, oferă-ne mai multe informații în . Include informațiile de mai jos copiindu-le și lipindu-le în tichetul cu problemă de pe GitHub.","sceneContent":"Conținutul scenei:"},"roomDialog":{"desc_intro":"Poți invita alte persoane pentru a colabora la scena actuală.","desc_privacy":"Nu te îngrijora. Sesiunea utilizează criptarea integrală, astfel încât orice desenezi va rămâne privat. Nici măcar serverul nostru nu va putea vedea pe ce ai lucrat.","button_startSession":"Pornire sesiune","button_stopSession":"Oprire sesiune","desc_inProgressIntro":"Sesiunea de colaborare în direct este în curs de desfășurare.","desc_shareLink":"Distribuie acest URL persoanelor cu care dorești să colaborezi:","desc_exitSession":"Oprirea sesiunii te va deconecta de la sală, însă vei putea lucra în continuare, pe plan local, cu scena. Reține că această opțiune nu va afecta alte persoane, iar acestea vor putea să colaboreze în continuare pe versiunea lor.","shareTitle":"Alătură-te unei sesiuni de colaborare în direct pe Excalidraw"},"errorDialog":{"title":"Eroare"},"exportDialog":{"disk_title":"Salvare pe disc","disk_details":"Exportă datele scenei pe un fișier din care poți importa mai târziu.","disk_button":"Salvare în fișier","link_title":"URL partajabil","link_details":"Exportă ca URL doar în citire.","link_button":"Exportare în URL","excalidrawplus_description":"Salvează scena în spațiul de lucru Excalidraw+.","excalidrawplus_button":"Exportare","excalidrawplus_exportError":"Excalidraw+ nu a putut fi exportat în acest moment..."},"helpDialog":{"blog":"Citește blogul nostru","click":"clic","deepSelect":"Selectare de adâncime","deepBoxSelect":"Selectare de adâncime în casetă și prevenire glisare","curvedArrow":"Săgeată curbată","curvedLine":"Linie curbată","documentation":"Documentație","doubleClick":"dublu clic","drag":"glisare","editor":"Editor","editLineArrowPoints":"Editare puncte de săgeată/rând","editText":"Editare text/adăugare etichetă","github":"Ai întâmpinat o problemă? Trimite un raport","howto":"Urmărește ghidurile noastre","or":"sau","preventBinding":"Împiedică legarea săgeții","tools":"Instrumente","shortcuts":"Comenzi rapide de la tastatură","textFinish":"Finalizează editarea (editor de text)","textNewLine":"Adaugă o linie nouă (editor de text)","title":"Ajutor","view":"Vizualizare","zoomToFit":"Transfocare pentru a cuprinde totul","zoomToSelection":"Transfocare la selecție","toggleElementLock":"Blocare/deblocare selecție","movePageUpDown":"Deplasare pagină sus/jos","movePageLeftRight":"Deplasare pagină stânga/dreapta"},"clearCanvasDialog":{"title":"Ștergere pânză"},"publishDialog":{"title":"Publicare bibliotecă","itemName":"Denumirea elementului","authorName":"Numele autorului","githubUsername":"Numele de utilizator GitHub","twitterUsername":"Numele de utilizator Twitter","libraryName":"Denumirea bibliotecii","libraryDesc":"Descrierea bibliotecii","website":"Pagină de internet","placeholder":{"authorName":"Numele sau numele tău de utilizator","libraryName":"Numele bibliotecii tale","libraryDesc":"Descrierea bibliotecii tale pentru a ajuta oamenii să înțeleagă utilizarea acesteia","githubHandle":"Numele de utilizator GitHub (opțional), pentru a putea edita biblioteca odată ce este trimisă spre revizuire","twitterHandle":"Numele de utilizator Twitter (opțional), pentru a indica sursa la promovarea pe Twitter","website":"Trimitere către pagina ta personală de internet sau altundeva (opțional)"},"errors":{"required":"Obligatoriu","website":"Introdu un URL valid"},"noteDescription":"Trimite-ți biblioteca pentru a fi inclusă în depozitul de biblioteci publice în vederea utilizării de către alte persoane în desenele lor.","noteGuidelines":"Biblioteca trebuie aprobată manual mai întâi. Citește orientările înainte de trimitere. Vei avea nevoie de un cont GitHub pentru a comunica și efectua modificări, dacă este cazul, însă nu este strict necesar.","noteLicense":"Prin trimiterea bibliotecii, ești de acord că aceasta va fi publicată sub Licența MIT, care, pe scurt, înseamnă că oricine o poate folosi fără restricții.","noteItems":"Fiecare element din bibliotecă trebuie să aibă propriul nume astfel încât să fie filtrabil. Următoarele elemente din bibliotecă vor fi incluse:","atleastOneLibItem":"Selectează cel puțin un element din bibliotecă pentru a începe","republishWarning":"Observație: unele dintre elementele selectate sunt marcate ca fiind deja publicate/trimise. Ar trebui să retrimiți elemente numai atunci când actualizezi o trimitere sau o bibliotecă existentă."},"publishSuccessDialog":{"title":"Bibliotecă trimisă","content":"Îți mulțumim, {{authorName}}. Biblioteca a fost trimisă spre revizuire. Poți urmări starea aici"},"confirmDialog":{"resetLibrary":"Resetare bibliotecă","removeItemsFromLib":"Elimină elementele selectate din bibliotecă"},"imageExportDialog":{"header":"Exportare imagine","label":{"withBackground":"Fundal","onlySelected":"Numai selecția","darkMode":"Mod întunecat","embedScene":"Încorporare scenă","scale":"Scală","padding":"Spațiere"},"tooltip":{"embedScene":"Datele scenei vor fi salvate în fișierul PNG/SVG exportat, astfel că scena va putea fi restaurată din acesta.\\nVa crește dimensiunea fișierului exportat."},"title":{"exportToPng":"Exportare ca PNG","exportToSvg":"Exportare ca SVG","copyPngToClipboard":"Copiere PNG în memoria temporară"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copiere în memoria temporară"}},"encrypted":{"tooltip":"Desenele tale sunt criptate integral, astfel că serverele Excalidraw nu le vor vedea niciodată.","link":"Articol de blog pe criptarea integrală din Excalidraw"},"stats":{"angle":"Unghi","element":"Element","elements":"Elemente","height":"Înălțime","scene":"Scenă","selected":"Selectate","storage":"Stocare","title":"Statistici pentru pasionați","total":"Total","version":"Versiune","versionCopy":"Clic pentru copiere","versionNotAvailable":"Versiune indisponibilă","width":"Lățime"},"toast":{"addedToLibrary":"Adăugat în bibliotecă","copyStyles":"Stiluri copiate.","copyToClipboard":"Copiat în memoria temporară.","copyToClipboardAsPng":"S-a copiat {{exportSelection}} în memoria temporară sub formă de PNG\\n({{exportColorScheme}})","fileSaved":"Fișier salvat.","fileSavedToFilename":"Salvat în {filename}","canvas":"pânza","selection":"selecția","pasteAsSingleElement":"Folosește {{shortcut}} pentru a insera ca un singur element\\nsau insera într-un editor de text existent","unableToEmbed":"Încorporarea acestui URL nu este permisă momentan. Deschideți un tichet cu probleme pe GitHub pentru a solicita adăugarea acestui URL în lista albă","unrecognizedLinkFormat":"URL-ul pe care l-ai încorporat nu coincide cu formatul așteptat. Încearcă să lipești șirul „de încorporat” furnizat de pagina sursă"},"colors":{"transparent":"Transparent","black":"Negru","white":"Alb","red":"Roșu","pink":"Roz","grape":"Struguriu","violet":"Violet","gray":"Gri","blue":"Albastru","cyan":"Cyan","teal":"Cyan-verde","green":"Verde","yellow":"Galben","orange":"Portocaliu","bronze":"Bronz"},"welcomeScreen":{"app":{"center_heading":"Toate datele tale sunt salvate local în navigatorul tău.","center_heading_plus":"Ai vrut să mergi în schimb la Excalidraw+?","menuHint":"Exportare, preferințe, limbi, ..."},"defaults":{"menuHint":"Exportare, preferințe și mai multe...","center_heading":"Diagrame. Făcute. Simple.","toolbarHint":"Alege un instrument și începe să desenezi!","helpHint":"Comenzi rapide și ajutor"}},"colorPicker":{"mostUsedCustomColors":"Cele mai utilizate culori personalizate","colors":"Culori","shades":"Nuanțe","hexCode":"Cod hexa","noShades":"Nu este disponibilă nicio nuanță pentru această culoare"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportare ca imagine","button":"Exportare ca imagine","description":"Exportă datele scenei ca fișier din care poți importa mai târziu."},"saveToDisk":{"title":"Salvare pe disc","button":"Salvare pe disc","description":"Exportă datele scenei pe un fișier din care poți importa mai târziu."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportare în Excalidraw+","description":"Salvează scena în spațiul de lucru Excalidraw+."}},"modal":{"loadFromFile":{"title":"Încărcare din fișier","button":"Încărcare din fișier","description":"Încărcarea dintr-un fișier va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."},"shareableLink":{"title":"Încărcare din lnk","button":"Înlocuiește conținutul meu","description":"Încărcarea unui desen extern va înlocui conținutul existent.

Poți face mai întâi o copie de rezervă a desenului folosind una dintre opțiunile de mai jos."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js b/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js new file mode 100644 index 0000000..c66bc7a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ru-RU-json-e1f4ed9d2d074f778304.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8124],{2253:function(e){e.exports=JSON.parse('{"labels":{"paste":"Вставить","pasteAsPlaintext":"Вставить как обычный текст","pasteCharts":"Вставить диаграммы","selectAll":"Выбрать всё","multiSelect":"Добавить элемент в выделенный фрагмент","moveCanvas":"Переместить холст","cut":"Вырезать","copy":"Копировать","copyAsPng":"Скопировать в буфер обмена как PNG","copyAsSvg":"Скопировать в буфер обмена как SVG","copyText":"Скопировать в буфер обмена как текст","bringForward":"Переместить вперед","sendToBack":"На задний план","bringToFront":"На передний план","sendBackward":"Переместить назад","delete":"Удалить","copyStyles":"Скопировать стили","pasteStyles":"Вставить стили","stroke":"Обводка","background":"Фон","fill":"Заливка","strokeWidth":"Толщина штриха","strokeStyle":"Стиль обводки","strokeStyle_solid":"Сплошная","strokeStyle_dashed":"Пунктирная","strokeStyle_dotted":"Точечная","sloppiness":"Стиль обводки","opacity":"Непрозрачность","textAlign":"Выравнивание текста","edges":"Края","sharp":"Острые","round":"Скругленные","arrowheads":"Стрелка","arrowhead_none":"Нет","arrowhead_arrow":"Cтрелка","arrowhead_bar":"Черта","arrowhead_dot":"Точка","arrowhead_triangle":"Треугольник","fontSize":"Размер шрифта","fontFamily":"Семейство шрифтов","addWatermark":"Добавить «Создано в Excalidraw»","handDrawn":"От руки","normal":"Обычный","code":"Код","small":"Малый","medium":"Средний","large":"Большой","veryLarge":"Очень большой","solid":"Однотонная","hachure":"Штрихованная","zigzag":"Зигзаг","crossHatch":"Перекрестная","thin":"Тонкая","bold":"Жирная","left":"Слева","center":"Центр","right":"Справа","extraBold":"Очень жирная","architect":"Архитектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Имя файла","colorPicker":"Выбор цвета","canvasColors":"Используется на холсте","canvasBackground":"Фон холста","drawingCanvas":"Полотно","layers":"Слои","actions":"Действия","language":"Язык","liveCollaboration":"Онлайн взаимодействие...","duplicateSelection":"Дубликат","untitled":"Безымянный","name":"Имя","yourName":"Ваше имя","madeWithExcalidraw":"Сделано в Excalidraw","group":"Сгруппировать выделение","ungroup":"Разделить выделение","collaborators":"Участники","showGrid":"Показать сетку","addToLibrary":"Добавить в библиотеку","removeFromLibrary":"Удалить из библиотеки","libraryLoadingMessage":"Загрузка библиотеки…","libraries":"Просмотреть библиотеки","loadingScene":"Загрузка сцены…","align":"Выровнять","alignTop":"Выровнять по верхнему краю","alignBottom":"Выровнять по нижнему краю","alignLeft":"Выровнять по левому краю","alignRight":"Выровнять по правому краю","centerVertically":"Центрировать по вертикали","centerHorizontally":"Центрировать по горизонтали","distributeHorizontally":"Распределить по горизонтали","distributeVertically":"Распределить по вертикали","flipHorizontal":"Переворот по горизонтали","flipVertical":"Переворот по вертикали","viewMode":"Вид","share":"Поделиться","showStroke":"Показать выбор цвета обводки","showBackground":"Показать выбор цвета фона","toggleTheme":"Переключить тему","personalLib":"Личная библиотека","excalidrawLib":"Библиотека Excalidraw","decreaseFontSize":"Уменьшить шрифт","increaseFontSize":"Увеличить шрифт","unbindText":"Отвязать текст","bindText":"Привязать текст к контейнеру","createContainerFromText":"Поместить текст в контейнер","link":{"edit":"Редактировать ссылку","editEmbed":"","create":"Создать ссылку","createEmbed":"","label":"Ссылка","labelEmbed":"","empty":""},"lineEditor":{"edit":"Редактирование строки","exit":"Выход из редактора строки"},"elementLock":{"lock":"Блокировать","unlock":"Разблокировать","lockAll":"Заблокировать все","unlockAll":"Разблокировать все"},"statusPublished":"Опубликовано","sidebarLock":"Держать боковую панель открытой","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"Взять образец цвета с холста"},"library":{"noItems":"Пока ничего не добавлено...","hint_emptyLibrary":"Выберите объект на холсте, чтобы добавить его сюда, или установите библиотеку из публичного репозитория ниже.","hint_emptyPrivateLibrary":"Выберите объект на холсте, чтобы добавить его сюда."},"buttons":{"clearReset":"Очистить холст и сбросить цвет фона","exportJSON":"Сохранить в","exportImage":"Экспортировать изображение...","export":"Сохранить как...","copyToClipboard":"Скопировать в буфер обмена","save":"Сохранить в текущий файл","saveAs":"Сохранить как","load":"Открыть","getShareableLink":"Получить доступ по ссылке","close":"Закрыть","selectLanguage":"Выбрать язык","scrollBackToContent":"Вернуться к содержимому","zoomIn":"Увеличить","zoomOut":"Уменьшить","resetZoom":"Сбросить масштаб","menu":"Меню","done":"Готово","edit":"Изменить","undo":"Шаг назад","redo":"Шаг вперед","resetLibrary":"Сброс библиотеки","createNewRoom":"Создать новую комнату","fullScreen":"Полный экран","darkMode":"Темная тема","lightMode":"Светлая тема","zenMode":"Режим Дзен","objectsSnapMode":"Привязка к объектам","exitZenMode":"Выключить режим концентрации внимания","cancel":"Отменить","clear":"Очистить","remove":"Удалить","embed":"","publishLibrary":"Опубликовать","submit":"Отправить","confirm":"Подтвердить","embeddableInteractionButton":""},"alerts":{"clearReset":"Это очистит весь холст. Вы уверены?","couldNotCreateShareableLink":"Не удалось создать общедоступную ссылку.","couldNotCreateShareableLinkTooBig":"Нельзя создать ссылку, чтобы поделиться. Сцена слишком большая","couldNotLoadInvalidFile":"Не удалось загрузить недопустимый файл","importBackendFailed":"Не удалось импортировать из бэкэнда.","cannotExportEmptyCanvas":"Не может экспортировать пустой холст.","couldNotCopyToClipboard":"Не удалось скопировать в буфер обмена.","decryptFailed":"Не удалось расшифровать данные.","uploadedSecurly":"Загружаемые данные защищена сквозным шифрованием, что означает, что сервер Excalidraw и третьи стороны не могут прочитать содержимое.","loadSceneOverridePrompt":"Загрузка рисунка приведёт к замене имеющегося содержимого. Вы хотите продолжить?","collabStopOverridePrompt":"Остановка сессии перезапишет ваш предыдущий, локально сохранённый рисунок. Вы уверены? \\n\\n(Если вы хотите оставить ваш локальный рисунок, просто закройте вкладку браузера)","errorAddingToLibrary":"Не удалось добавить объект в библиотеку","errorRemovingFromLibrary":"Не удалось удалить объект из библиотеки","confirmAddLibrary":"Будет добавлено {{numShapes}} фигур в вашу библиотеку. Продолжить?","imageDoesNotContainScene":"Это изображение не содержит данных сцены. Вы включили встраивание сцены во время экспорта?","cannotRestoreFromImage":"Сцена не может быть восстановлена из этого изображения","invalidSceneUrl":"Невозможно импортировать сцену с предоставленного URL. Неверный формат, или не содержит верных Excalidraw JSON данных.","resetLibrary":"Это очистит вашу библиотеку. Вы уверены?","removeItemsFromsLibrary":"Удалить {{count}} объект(ов) из библиотеки?","invalidEncryptionKey":"Ключ шифрования должен состоять из 22 символов. Одновременное редактирование отключено.","collabOfflineWarning":"Отсутствует интернет-соединение.\\nВаши изменения не будут сохранены!"},"errors":{"unsupportedFileType":"Неподдерживаемый тип файла.","imageInsertError":"Не удалось вставить изображение. Попробуйте позже...","fileTooBig":"Очень большой файл. Максимально разрешенный размер {{maxSize}}.","svgImageInsertError":"Не удалось вставить изображение SVG. Разметка SVG выглядит недействительной.","failedToFetchImage":"Не удалось получить изображение.","invalidSVGString":"Некорректный SVG.","cannotResolveCollabServer":"Не удалось подключиться к серверу совместного редактирования. Перезагрузите страницу и повторите попытку.","importLibraryError":"Не удалось загрузить библиотеку","collabSaveFailed":"Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","collabSaveFailed_sizeExceeded":"Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.","brave_measure_text_error":{"line1":"Похоже, вы используете браузер Brave с включенной опцией Агрессивно блокировать отслеживание.","line2":"Это может привести к поломке Текстовых объектов на рисунке.","line3":"Мы настоятельно рекомендуем отключить эту настройку. Для этого нужно выполнить эти шаги.","line4":"Если отключение этой настройки не исправит отображение текстовых объектов, создайте issue на нашем GitHub или напишите нам в Discord"},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Выделение области","image":"Вставить изображение","rectangle":"Прямоугольник","diamond":"Ромб","ellipse":"Эллипс","arrow":"Cтрелка","line":"Линия","freedraw":"Чертить","text":"Текст","library":"Библиотека","lock":"Сохранять выбранный инструмент активным после рисования","penMode":"Режим пера - предотвращение касания","link":"Добавить/обновить ссылку для выбранной фигуры","eraser":"Ластик","frame":"","embeddable":"","laser":"Лазерная указка","hand":"Рука (перемещение холста)","extraTools":""},"headings":{"canvasActions":"Операции холста","selectedShapeActions":"Операции выбранной фигуры","shapes":"Фигуры"},"hints":{"canvasPanning":"Чтобы двигать холст, удерживайте колесо мыши или пробел во время перетаскивания, или используйте инструмент \\"Рука\\"","linearElement":"Нажмите, чтобы начать несколько точек, перетащите для одной линии","freeDraw":"Нажмите и перетаскивайте, отпустите по завершении","text":"Совет: при выбранном инструменте выделения дважды щёлкните в любом месте, чтобы добавить текст","embeddable":"","text_selected":"Дважды щелкните мышью или нажмите ENTER, чтобы редактировать текст","text_editing":"Нажмите Escape либо Ctrl или Cmd + ENTER для завершения редактирования","linearElementMulti":"Кликните на последней точке или нажмите Escape или Enter чтобы закончить","lockAngle":"Вы можете ограничить угол удерживая SHIFT","resize":"Вы можете ограничить пропорции, удерживая SHIFT во время изменения размеров,\\nудерживайте ALT чтобы изменить размер из центра","resizeImage":"Вы можете свободно изменять размеры, удерживая кнопку SHIFT,\\nудерживайте кнопку ALT, чтобы изменять размер относительно центра","rotate":"Вы можете ограничить углы, удерживая SHIFT во время вращения","lineEditor_info":"Удерживайте CtrlOrCmd и дважды кликните или нажмите CtrlOrCmd + Enter для редактирования точек","lineEditor_pointSelected":"Нажмите Delete для удаления точки (точек),\\nCtrl+D или Cmd+D для дублирования, перетащите для перемещения","lineEditor_nothingSelected":"Выберите точку для редактирования (удерживайте SHIFT выбора нескольких точек),\\nили удерживайте Alt и кликните для добавления новых точек","placeImage":"Щелкните, чтобы разместить изображение, или нажмите и перетащите, чтобы установить его размер вручную","publishLibrary":"Опубликовать свою собственную библиотеку","bindTextToElement":"Нажмите Enter для добавления текста","deepBoxSelect":"Удерживайте Ctrl или Cmd для глубокого выделения, чтобы предотвратить перетаскивание","eraserRevert":"Удерживайте Alt, чтобы вернуть элементы, отмеченные для удаления","firefox_clipboard_write":"Эта функция может быть включена при изменении значения флага \\"dom.events.asyncClipboard.clipboardItem\\" на \\"true\\". Чтобы изменить флаги браузера в Firefox, посетите страницу \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не удается отобразить предпросмотр","canvasTooBig":"Сцена слишком большая.","canvasTooBigTip":"Совет: попробуйте сблизить элементы рисунка."},"errorSplash":{"headingMain":"Возникла ошибка. Попробуйте ","clearCanvasMessage":"Если перезагрузка страницы не помогла, попробуйте ","clearCanvasCaveat":" Текущая работа будет утеряна ","trackedToSentry":"Ошибка с идентификатором {{eventId}} отслеживается в нашей системе.","openIssueMessage":"Для безопасности информация о вашей сцене не включена в ошибку. Если в сцене нет ничего конфиденциального, пожалуйста следуйте нашим Пожалуйста, приложите информацию ниже, скопировав и вставив её, в issue GitHub.","sceneContent":"Содержание сцены:"},"roomDialog":{"desc_intro":"Вы можете пригласить людей в текущую сцену для совместной работы.","desc_privacy":"Не беспокойтесь — во время сеанса используется сквозное шифрование. Всё, что вы нарисуете, останется конфиденциальным и не будет доступно даже нашему серверу.","button_startSession":"Начать сеанс","button_stopSession":"Завершить сеанс","desc_inProgressIntro":"Сеанс совместной работы запущен.","desc_shareLink":"Поделитесь этой ссылкой со всеми участниками:","desc_exitSession":"Завершив сеанс, вы выйдете из комнаты, но сможете продолжить работать с документом локально. Это не повлияет на работу других пользователей — они смогут продолжить совместную работу с их версией документа.","shareTitle":"Присоединиться к активной совместной сессии на Excalidraw"},"errorDialog":{"title":"Ошибка"},"exportDialog":{"disk_title":"Сохранить на диск","disk_details":"Экспортировать данные сцены в файл, из которого можно импортировать позже.","disk_button":"Сохранить в файл","link_title":"Поделитесь ссылкой","link_details":"Экспорт ссылки только для чтения.","link_button":"Экспорт в ссылку","excalidrawplus_description":"Сохраните сцену в ваше рабочее пространство Excalidraw+.","excalidrawplus_button":"Экспорт","excalidrawplus_exportError":"Не удалось экспортировать в Excalidraw+ на данный момент..."},"helpDialog":{"blog":"Прочитайте наш блог","click":"нажать","deepSelect":"Глубокое выделение","deepBoxSelect":"Глубокое выделение рамкой, и предотвращение перетаскивания","curvedArrow":"Изогнутая стрелка","curvedLine":"Изогнутая линия","documentation":"Документация","doubleClick":"двойной клик","drag":"перетащить","editor":"Редактор","editLineArrowPoints":"Редактировать концы линий/стрелок","editText":"Редактировать текст / добавить метку","github":"Нашли проблему? Отправьте","howto":"Следуйте нашим инструкциям","or":"или","preventBinding":"Предотвращать привязку стрелок","tools":"Инструменты","shortcuts":"Горячие клавиши","textFinish":"Закончить редактирование (текстовый редактор)","textNewLine":"Добавить новую строку (текстовый редактор)","title":"Помощь","view":"Просмотр","zoomToFit":"Отмастштабировать, чтобы поместились все элементы","zoomToSelection":"Увеличить до выделенного","toggleElementLock":"Заблокировать/разблокировать выделение","movePageUpDown":"Сдвинуть страницу вверх/вниз","movePageLeftRight":"Сдвинуть страницу вправо/влево"},"clearCanvasDialog":{"title":"Очистить холст"},"publishDialog":{"title":"Опубликовать библиотеку","itemName":"Название объекта","authorName":"Имя автора","githubUsername":"Имя пользователя GitHub","twitterUsername":"Имя пользователя в Twitter","libraryName":"Название библиотеки","libraryDesc":"Описание библиотеки","website":"Веб-сайт","placeholder":{"authorName":"Ваше имя или имя пользователя","libraryName":"Название вашей библиотеки","libraryDesc":"Описание вашей библиотеки, которое поможет людям понять её назначение","githubHandle":"Имя пользователя GitHub (необязательно), чтобы вы смогли редактировать библиотеку после её отправки на проверку","twitterHandle":"Имя пользователя в Twitter (необязательно), чтобы мы знали, кого упомянуть при продвижении в Twitter","website":"Ссылка на ваш личный или какой-то другой сайт (необязательно)"},"errors":{"required":"Обязательно","website":"Введите допустимый URL-адрес"},"noteDescription":"Отправить вашу библиотеку для включения в хранилище публичных библиотек, чтобы другие люди могли использовать объекты из вашей библиотеки в своих рисунках.","noteGuidelines":"Библиотека должна быть подтверждена вручную. Пожалуйста, прочтите рекомендации перед отправкой. Вам понадобится учетная запись GitHub, чтобы общаться и вносить изменения при необходимости, но это не обязательно.","noteLicense":"Выполняя отправку, вы соглашаетесь с тем, что библиотека будет опубликована под лицензией MIT, , что, вкратце, означает, что каждый может использовать её без ограничений.","noteItems":"Каждый объект в библиотеке должен иметь свое собственное имя, чтобы по нему можно было фильтровать. Следующие объекты библиотеки будут включены:","atleastOneLibItem":"Пожалуйста, выберите хотя бы один объект в библиотеке, чтобы начать","republishWarning":"Примечание: некоторые из выбранных элементов помечены как уже опубликованные/отправленные. Вы должны повторно отправить элементы только при обновлении существующей библиотеки или сдаче работы."},"publishSuccessDialog":{"title":"Библиотека отправлена","content":"Благодарим вас, {{authorName}}. Ваша библиотека была отправлена на проверку. Вы можете отслеживать статусздесь"},"confirmDialog":{"resetLibrary":"Сброс библиотеки","removeItemsFromLib":"Удалить выбранные объекты из библиотеки"},"imageExportDialog":{"header":"Экспортировать изображение","label":{"withBackground":"Фон","onlySelected":"Только выделенное","darkMode":"Темная тема","embedScene":"Встроить сцену","scale":"Масштаб","padding":"Отступ"},"tooltip":{"embedScene":"Сцена будет сохранена в PNG/SVG файл так, чтобы всю сцену можно будет восстановить из этого файла. Это увеличит размер файла."},"title":{"exportToPng":"Экспорт в PNG","exportToSvg":"Экспорт в SVG","copyPngToClipboard":"Скопировать PNG в буфер обмена"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Скопировать в буфер обмена"}},"encrypted":{"tooltip":"Ваши данные защищены сквозным (End-to-end) шифрованием. Серверы Excalidraw никогда не получат доступ к ним.","link":"Запись блога о сквозном шифровании в Excalidraw"},"stats":{"angle":"Угол","element":"Элемент","elements":"Элементы","height":"Высота","scene":"Сцены","selected":"Выбран","storage":"Хранилище","title":"Статистика для ботаников","total":"Всего","version":"Версия","versionCopy":"Копировать","versionNotAvailable":"Версия не доступна","width":"Ширина"},"toast":{"addedToLibrary":"Добавлено в библиотеку","copyStyles":"Скопированы стили.","copyToClipboard":"Скопировано в буфер обмена.","copyToClipboardAsPng":"{{exportSelection}} скопировано как PNG ({{exportColorScheme}})","fileSaved":"Файл сохранён.","fileSavedToFilename":"Сохранено в {filename}","canvas":"холст","selection":"выделение","pasteAsSingleElement":"Используйте {{shortcut}}, чтобы вставить один объект,\\nили вставьте в существующий текстовый редактор","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Прозрачный","black":"Чёрный","white":"Белый","red":"Красный","pink":"Розовый","grape":"Виноградный","violet":"Фиолетовый","gray":"Серый","blue":"Синий","cyan":"Голубой","teal":"Бирюзовый","green":"Зелёный","yellow":"Жёлтый","orange":"Оранжевый","bronze":"Бронзовый"},"welcomeScreen":{"app":{"center_heading":"Все ваши данные сохраняются локально в вашем браузере.","center_heading_plus":"Хотите перейти на Excalidraw+?","menuHint":"Экспорт, настройки, языки, ..."},"defaults":{"menuHint":"Экспорт, настройки и другое...","center_heading":"Диаграммы. Просто.","toolbarHint":"Выберите инструмент и начните рисовать!","helpHint":"Сочетания клавиш и помощь"}},"colorPicker":{"mostUsedCustomColors":"Часто используемые пользовательские цвета","colors":"Цвета","shades":"Оттенки","hexCode":"Шестнадцатеричный код","noShades":"Нет доступных оттенков для этого цвета"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Экспортировать как изображение","button":"Экспортировать как изображение","description":""},"saveToDisk":{"title":"Сохранить на диск","button":"Сохранить на диск","description":""},"excalidrawPlus":{"title":"Excalidraw+","button":"Экспорт в Excalidraw+","description":""}},"modal":{"loadFromFile":{"title":"Загрузить из файла","button":"Загрузить из файла","description":""},"shareableLink":{"title":"Загрузить по ссылке","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js b/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js new file mode 100644 index 0000000..909d7e6 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/si-LK-json-4921d4298abfa256fe6f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[1302],{5497:function(e){e.exports=JSON.parse('{"labels":{"paste":"අලවන්න","pasteAsPlaintext":"","pasteCharts":"ප්‍රස්ථාරය","selectAll":"සියල්ලම","multiSelect":"තෝරා ගැනීමට අංගය එකතු කරන්න","moveCanvas":"කැන්වසය චලනය කරන්න","cut":"කපන්න","copy":"පිටපත් කරන්න","copyAsPng":"PNG ලෙස පිටපත් කරන්න","copyAsSvg":"SVG ලෙස පිටපත් කරන්න","copyText":"","bringForward":"ඉදිරියට ගෙන්න","sendToBack":"පසුපසටම ගෙනියන්න","bringToFront":"ඉදිරියටම ගෙන්න","sendBackward":"පසුපසට ගෙනියන්න","delete":"මකන්න","copyStyles":"","pasteStyles":"","stroke":"","background":"","fill":"","strokeWidth":"","strokeStyle":"","strokeStyle_solid":"","strokeStyle_dashed":"","strokeStyle_dotted":"","sloppiness":"","opacity":"","textAlign":"","edges":"","sharp":"","round":"","arrowheads":"","arrowhead_none":"","arrowhead_arrow":"","arrowhead_bar":"","arrowhead_dot":"","arrowhead_triangle":"","fontSize":"","fontFamily":"","addWatermark":"","handDrawn":"","normal":"","code":"","small":"","medium":"","large":"","veryLarge":"ඉතා විශාල","solid":"විශාල","hachure":"මධ්‍යම","zigzag":"","crossHatch":"","thin":"කෙට්ටු","bold":"තද","left":"වම","center":"මැද","right":"දකුණ","extraBold":"ඉතා තද","architect":"වාස්තුවේදීයා","artist":"කලාකරු","cartoonist":"සැකිලිරූකරු","fileTitle":"ගොනු නාමය","colorPicker":"පාට තෝරකය","canvasColors":"","canvasBackground":"කැන්වස පසුබිම","drawingCanvas":"චිත්‍රක කැන්වසය","layers":"ලේයර","actions":"ක්‍රියාකාරකම","language":"භාෂාව ","liveCollaboration":"","duplicateSelection":"","untitled":"","name":"නම","yourName":"","madeWithExcalidraw":"","group":"","ungroup":"","collaborators":"","showGrid":"","addToLibrary":"","removeFromLibrary":"","libraryLoadingMessage":"","libraries":"","loadingScene":"","align":"","alignTop":"","alignBottom":"","alignLeft":"","alignRight":"","centerVertically":"","centerHorizontally":"","distributeHorizontally":"","distributeVertically":"","flipHorizontal":"","flipVertical":"","viewMode":"","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js b/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js new file mode 100644 index 0000000..3580f10 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sk-SK-json-27b59d7e026675f929c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8750],{4570:function(e){e.exports=JSON.parse('{"labels":{"paste":"Vložiť","pasteAsPlaintext":"Vložiť ako obyčajný text","pasteCharts":"Vložiť grafy","selectAll":"Vybrať všetko","multiSelect":"Pridať prvok do výberu","moveCanvas":"Pohyb plátna","cut":"Vystrihnúť","copy":"Kopírovať","copyAsPng":"Kopírovať do schránky ako PNG","copyAsSvg":"Kopírovať do schránky ako SVG","copyText":"Kopírovať do schránky ako text","bringForward":"Presunúť o úroveň dopredu","sendToBack":"Presunúť dozadu","bringToFront":"Presunúť dopredu","sendBackward":"Presunúť o úroveň dozadu","delete":"Vymazať","copyStyles":"Kopírovať štýly","pasteStyles":"Vložiť štýly","stroke":"Obrys","background":"Pozadie","fill":"Výplň","strokeWidth":"Hrúbka obrysu","strokeStyle":"Štýl obrysu","strokeStyle_solid":"Plný","strokeStyle_dashed":"Čiarkovaný","strokeStyle_dotted":"Bodkovaný","sloppiness":"Štylizácia","opacity":"Priehľadnosť","textAlign":"Zarovnanie textu","edges":"Okraje","sharp":"Ostré","round":"Zaokrúhlené","arrowheads":"Zakončenie šípky","arrowhead_none":"Žiadne","arrowhead_arrow":"Šípka","arrowhead_bar":"Čiara","arrowhead_dot":"Bod","arrowhead_triangle":"Trojuholník","fontSize":"Veľkosť písma","fontFamily":"Písmo","addWatermark":"Pridať \\"Vytvorené s Excalidraw\\"","handDrawn":"Ručne písané","normal":"Normálne","code":"Kód","small":"Malé","medium":"Stredné","large":"Veľké","veryLarge":"Veľmi veľké","solid":"Plná","hachure":"Šrafovaná","zigzag":"Cik-cak","crossHatch":"Mriežkovaná","thin":"Tenká","bold":"Hrubá","left":"Doľava","center":"Na stred","right":"Doprava","extraBold":"Veľmi hrubá","architect":"Architekt","artist":"Umelec","cartoonist":"Ilustrátor","fileTitle":"Názov súboru","colorPicker":"Výber farby","canvasColors":"Použité na plátne","canvasBackground":"Pozadie plátna","drawingCanvas":"Kresliace plátno","layers":"Vrstvy","actions":"Akcie","language":"Jazyk","liveCollaboration":"Živá spolupráca...","duplicateSelection":"Duplikovať","untitled":"Bez názvu","name":"Meno","yourName":"Vaše meno","madeWithExcalidraw":"Vytvorené s Excalidraw","group":"Zoskupiť","ungroup":"Zrušiť zoskupenie","collaborators":"Spolupracovníci","showGrid":"Zobraziť mriežku","addToLibrary":"Pridať do knižnice","removeFromLibrary":"Odstrániť z knižnice","libraryLoadingMessage":"Načítavanie knižnice…","libraries":"Prehliadať knižnice","loadingScene":"Načítavanie scény…","align":"Zarovnanie","alignTop":"Zarovnať nahor","alignBottom":"Zarovnať nadol","alignLeft":"Zarovnať doľava","alignRight":"Zarovnať doprava","centerVertically":"Zarovnať zvislo na stred","centerHorizontally":"Zarovnať vodorovne na stred","distributeHorizontally":"Rozmiestniť vodorovne","distributeVertically":"Rozmiestniť zvisle","flipHorizontal":"Prevrátiť vodorovne","flipVertical":"Prevrátiť zvislo","viewMode":"Režim zobrazenia","share":"Zdieľať","showStroke":"Zobraziť výber farby pre obrys","showBackground":"Zobraziť výber farby pre pozadie","toggleTheme":"Prepnúť tému","personalLib":"Moja knižnica","excalidrawLib":"Excalidraw knižnica","decreaseFontSize":"Zmenšiť veľkosť písma","increaseFontSize":"Zväčšiť veľkosť písma","unbindText":"Zrušiť previazanie textu","bindText":"Previazať text s kontajnerom","createContainerFromText":"Zabaliť text do kontajneru","link":{"edit":"Upraviť odkaz","editEmbed":"Editovať a zapustiť odkaz","create":"Vytvoriť odkaz","createEmbed":"Vytvoriť a zapustiť odkaz","label":"Odkaz","labelEmbed":"Zapustiť odkaz","empty":"Nie je nastavený žiaden odkaz"},"lineEditor":{"edit":"Upraviť čiaru","exit":"Ukončiť editovanie čiary"},"elementLock":{"lock":"Zamknúť","unlock":"Odomknúť","lockAll":"Zamknúť všetko","unlockAll":"Odomknúť všetko"},"statusPublished":"Zverejnené","sidebarLock":"Nechať bočný panel otvorený","selectAllElementsInFrame":"Vybrať všetky prvky v ráme","removeAllElementsFromFrame":"Odstrániť všetky prvky z rámu","eyeDropper":"Vybrať farbu z plátna"},"library":{"noItems":"Zatiaľ neboli pridané žiadne položky...","hint_emptyLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice alebo použite knižnicu z verejného zoznamu knižníc nižšie.","hint_emptyPrivateLibrary":"Vyberte položku z plátna pre jej pridanie do knižnice."},"buttons":{"clearReset":"Obnoviť plátno","exportJSON":"Exportovať do súboru","exportImage":"Exportovať obrázok...","export":"Uložiť do...","copyToClipboard":"Kopírovať do schránky","save":"Uložiť do aktuálneho súboru","saveAs":"Uložiť ako","load":"Otvoriť","getShareableLink":"Získať odkaz na zdieľanie","close":"Zavrieť","selectLanguage":"Zvoliť jazyk","scrollBackToContent":"Vrátiť sa späť na obsah","zoomIn":"Priblížiť","zoomOut":"Oddialiť","resetZoom":"Obnoviť priblíženie","menu":"Ponuka","done":"Hotovo","edit":"Upraviť","undo":"Späť","redo":"Znova","resetLibrary":"Obnoviť knižnicu","createNewRoom":"Vytvoriť novú miestnosť","fullScreen":"Celá obrazovka","darkMode":"Tmavý režim","lightMode":"Svetlý režim","zenMode":"Režim zen","objectsSnapMode":"Prichytiť k objektom","exitZenMode":"Zrušiť režim zen","cancel":"Zrušiť","clear":"Vymazať","remove":"Odstrániť","embed":"Prepnúť zapustenie","publishLibrary":"Uverejniť","submit":"Potvrdiť","confirm":"Potvrdiť","embeddableInteractionButton":"Kliknite pre interakciu"},"alerts":{"clearReset":"Týmto sa vyčistí celé plátno. Ste si istí?","couldNotCreateShareableLink":"Nepodarilo sa vytvoriť odkaz na zdieľanie.","couldNotCreateShareableLinkTooBig":"Nepodarilo sa vytvoriť odkaz na zdieľanie: scéna je príliš veľká","couldNotLoadInvalidFile":"Nepodarilo sa načítať nevalidný súbor","importBackendFailed":"Nepdarilo sa importovanie zo serveru.","cannotExportEmptyCanvas":"Nie je možné exportovať prázdne plátno.","couldNotCopyToClipboard":"Kopírovanie do schránky sa nepodarilo.","decryptFailed":"Nepodarilo sa rozšifrovať údaje.","uploadedSecurly":"Nahratie je zabezpečené end-to-end šifrovaním, takže Excalidraw server a tretie strany nedokážu prečítať jeho obsah.","loadSceneOverridePrompt":"Nahratie externej kresby nahradí existujúci obsah. Prajete si pokračovať?","collabStopOverridePrompt":"Ukončenie schôdze nahradí vašu predchádzajúcu lokálne uloženú scénu. Ste si istý?\\n\\n(Ak si chcete ponechať lokálnu scénu, jednoducho iba zavrite kartu prehliadača.)","errorAddingToLibrary":"Nepodarilo sa pridať položku do knižnice","errorRemovingFromLibrary":"Nepodarilo sa odstrániť položku z knižnice","confirmAddLibrary":"Týmto sa pridá {{numShapes}} tvar(ov) do vašej knižnice. Ste si istí?","imageDoesNotContainScene":"Tento obrázok neobsahuje žiadne údaje scény. Zvolili ste možnosť zahrnúť scénu počas exportu?","cannotRestoreFromImage":"Nepodarilo sa obnoviť scénu z tohto obrázkového súboru","invalidSceneUrl":"Nepodarilo sa načítať scénu z poskytnutej URL. Je nevalidná alebo neobsahuje žiadne validné Excalidraw JSON dáta.","resetLibrary":"Týmto vyprázdnite vašu knižnicu. Ste si istý?","removeItemsFromsLibrary":"Odstrániť {{count}} položiek z knižnice?","invalidEncryptionKey":"Šifrovací kľúč musí mať 22 znakov. Živá spolupráca je vypnutá.","collabOfflineWarning":"Internetové pripojenie nie je dostupné.\\nVaše zmeny nebudú uložené!"},"errors":{"unsupportedFileType":"Nepodporovaný typ súboru.","imageInsertError":"Nepodarilo sa vložiť obrázok. Skúste to znova neskôr...","fileTooBig":"Súbor je príliš veľký. Maximálna povolená veľkosť je {{maxSize}}.","svgImageInsertError":"Nepodarilo sa vložiť SVG obrázok. SVG formát je pravdepodobne nevalidný.","failedToFetchImage":"","invalidSVGString":"Nevalidné SVG.","cannotResolveCollabServer":"Nepodarilo sa pripojiť ku kolaboračnému serveru. Prosím obnovte stránku a skúste to znovu.","importLibraryError":"Nepodarilo sa načítať knižnicu","collabSaveFailed":"Uloženie do databázy sa nepodarilo. Ak tento problém pretrváva uložte si váš súbor lokálne aby ste nestratili vašu prácu.","collabSaveFailed_sizeExceeded":"Uloženie do databázy sa nepodarilo, pretože veľkosť plátna je príliš veľká. Uložte si váš súbor lokálne aby ste nestratili vašu prácu.","brave_measure_text_error":{"line1":"Vyzerá to, že používate prehliadač Brave so zapnutým nastavením pre agresívne blokovanie.","line2":"To môže spôsobiť nesprávne zobrazenie textových prvkov vo vašej kresbe.","line3":"Dôrazne odporúčame vypnutie toho nastavenia. Môžete tak spraviť vykonaním týchto krokov.","line4":"Ak vypnutie toho nastavenia nevyrieši problém so zobrazením textových prvkov, prosím ohláste problém na našom GitHub-e alebo nám napíšte na náš Discord"},"libraryElementTypeError":{"embeddable":"Zapustené prvky nie je možné pridať do knižnice.","image":"Podpora pre pridávanie obrázkov do knižnice bude dostupná už čoskoro!"}},"toolBar":{"selection":"Výber","image":"Vložiť obrázok","rectangle":"Obdĺžnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Šípka","line":"Čiara","freedraw":"Kresliť","text":"Text","library":"Knižnica","lock":"Nechať zvolený nástroj aktívny po skončení kreslenia","penMode":"Režim pera – zabrániť dotyku","link":"Pridať/ Upraviť odkaz pre vybraný tvar","eraser":"Guma","frame":"Nástroj rám","embeddable":"Web Embed","laser":"","hand":"Ruka (nástroj pre pohyb plátna)","extraTools":"Ďalšie nástroje"},"headings":{"canvasActions":"Akcie plátna","selectedShapeActions":"Akcie tvarov z výberu","shapes":"Tvary"},"hints":{"canvasPanning":"Pre pohyb plátna podržte koliesko myši alebo medzerník počas ťahania, alebo použite nástroj ruka","linearElement":"Kliknite na vloženie viacerých bodov, potiahnite na vytvorenie jednej priamky","freeDraw":"Kliknite a ťahajte, pustite na ukončenie","text":"Tip: text môžete pridať aj dvojklikom kdekoľvek, ak je zvolený nástroj výber","embeddable":"Kliknite a ťahajte pre zapustenie webovej stránky","text_selected":"Použite dvojklik alebo stlačte Enter na editáciu textu","text_editing":"Stlačte Escape alebo CtrlOrCmd+ENTER na ukončenie editovania","linearElementMulti":"Kliknite na počiatočný bod alebo stlačte Escape alebo Enter na ukončenie","lockAngle":"Počas rotácie obmedzíte uhol podržaním SHIFT","resize":"Počas zmeny veľkosti zachováte proporcie podržaním SHIFT,\\\\npodržaním ALT meníte veľkosť so zachovaním stredu","resizeImage":"Podržte SHIFT pre voľnú zmenu veľkosti, podržte ALT pre zmenu veľkosti od stredu","rotate":"Počas rotácie obmedzíte uhol podržaním SHIFT","lineEditor_info":"Podržte CtrlOrCmd a kliknite dva krát alebo stlačte CtrlOrCmd + Enter pre editáciu bodov","lineEditor_pointSelected":"Stačte Delete na vymazanie bodu (bodov), CtrlOrCmd+D na duplikovanie, alebo potiahnite na presunutie","lineEditor_nothingSelected":"Zvoľte bod na upravovanie (podržte SHIFT pre zvolenie viacerých bodov) alebo podržte Alt a kliknite na pridanie nového bodu","placeImage":"Kliknite pre umiestnenie obrázka alebo kliknite a ťahajte pre zmenu jeho veľkosti","publishLibrary":"Uverejniť vašu knižnicu","bindTextToElement":"Stlačte enter na pridanie textu","deepBoxSelect":"Podržte CtrlOrCmd na výber v skupine alebo zamedzeniu poťiahnutia","eraserRevert":"Podržte Alt pre prehodenie položiek určených na vymazanie","firefox_clipboard_write":"Táto sa funkcionalita sa dá zapnúť nastavením \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Pre zmenu nastavení vo Firefox-e otvorte stránku \\"about:config\\".","disableSnapping":"Podržte CtrlOrCmd pre vypnutie prichytávania"},"canvasError":{"cannotShowPreview":"Nie je možné zobraziť náhľad plátna","canvasTooBig":"Plátno je možno príliš veľké.","canvasTooBigTip":"Tip: skúste presunúť najvzdialenejšie prvky bližšie k sebe."},"errorSplash":{"headingMain":"Nastala chyba. Vyskúšajte ","clearCanvasMessage":"Ak obnovenie stránky nepomáha, vyskúšajte ","clearCanvasCaveat":" To bude mať za následok stratu práce ","trackedToSentry":"Chyba s identifikátorom {{eventId}} bola zaznamenaná v našom systéme.","openIssueMessage":"Boli sme veľmi opatrní, aby informácie vašej scény neboli v chybe zaznamenané. Ak vaša scéna nie je súkromná, prosím zvážte pokračovanie na naše Prosím zahrňte informácie nižšie pomocou kopírovania a prilepenia do GitHub issue.","sceneContent":"Obsah scény:"},"roomDialog":{"desc_intro":"Pozvite niekoho do svojej aktuálnej scény a pracujte spoločne.","desc_privacy":"Nemajte obavy, schôdza používa end-to-end šifrovanie, takže všetko čo nakreslíte je súkromné. Dokonca, ani náš server dedokáže prečítať, čo ste vytvorili.","button_startSession":"Začať schôdzu","button_stopSession":"Ukončiť schôdzu","desc_inProgressIntro":"Práve prebieha živá schôdza.","desc_shareLink":"Zdieľajte tento odkaz s osobou, s ktorou chcete spolupracovať:","desc_exitSession":"Ukončenie schôdze vás odpojí z miestnosti, avšak naďalej budete môcť pokračovať v práci na scéne lokálne. Toto neovplyvní ostatných spolupracovníkov a stále budú môcť spolupracovať na ich verzii.","shareTitle":"Pripojiť sa k živej schôdzi na Excalidraw"},"errorDialog":{"title":"Chyba"},"exportDialog":{"disk_title":"Uložiť na disk","disk_details":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované.","disk_button":"Uložiť do súboru","link_title":"Odkaz na zdieľanie","link_details":"Exportovať ako odkaz iba na čítanie.","link_button":"Exportovať ako odkaz","excalidrawplus_description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru.","excalidrawplus_button":"Exportovať","excalidrawplus_exportError":"Nepodarilo sa vykonať export do Excalidraw+..."},"helpDialog":{"blog":"Prečítajte si náš blog","click":"kliknutie","deepSelect":"Výber v skupine","deepBoxSelect":"Výber v skupine alebo zamedzenie poťiahnutia","curvedArrow":"Zakrivená šípka","curvedLine":"Zakrivená čiara","documentation":"Dokumentácia","doubleClick":"dvojklik","drag":"potiahnutie","editor":"Editovanie","editLineArrowPoints":"Editácia bodov čiary/šípky","editText":"Editácia textu / pridanie štítku","github":"Objavili ste problém? Nahláste ho","howto":"Postupujte podľa naších návodov","or":"alebo","preventBinding":"Zakázať pripájanie šípky","tools":"Nástroje","shortcuts":"Klávesové skratky","textFinish":"Ukončenie editovania (text editor)","textNewLine":"Vložiť nový riadok (text editor)","title":"Pomocník","view":"Zobrazenie","zoomToFit":"Priblížiť aby boli zahrnuté všetky prvky","zoomToSelection":"Priblížiť na výber","toggleElementLock":"Zamknúť/odomknúť vybrané","movePageUpDown":"Posunúť stranu hore/dole","movePageLeftRight":"Posunúť stranu doľava/doprava"},"clearCanvasDialog":{"title":"Vyčistiť plátno"},"publishDialog":{"title":"Uverejniť knižnicu","itemName":"Názov položky","authorName":"Meno autora","githubUsername":"Github užívateľské meno","twitterUsername":"Twitter užívateľské meno","libraryName":"Názov knižnice","libraryDesc":"Popis knižnice","website":"Webová stránka","placeholder":{"authorName":"Vaše meno alebo užívateľské meno","libraryName":"Názov vašej knižnice","libraryDesc":"Popis vašej knižnice, ktorý ostatným pomôže porozumieť jej vhodnému použitiu","githubHandle":"GitHub užívateľské meno (nepovinné), aby ste mohli robiť úpravy po tom, čo bude knižnica uverejnená na schválenie","twitterHandle":"Twitter užívateľské meno (nepovinné), aby sme vedeli komu pripísať zásluhu pri propagovaní cez Twitter","website":"Odkaz na vašu osobnú webovú stránku alebo niekam inam (nepovinné)"},"errors":{"required":"Povinné","website":"Zadajte platnú adresu URL"},"noteDescription":"Uverejnite vašu knižnicu vo verejnom zozname knižnícaby ju aj ostatní mohli použiť v ich náčrtoch.","noteGuidelines":"Knižnica musí byť najprv manuálne schválená. Prosím prečítajte si pokyny pred uverejnením. Budete potrebovať Github účet na komunikáciu a vykonanie zmien, ak budú potrebné, avšak nie je to úplne povinné.","noteLicense":"Potvrdením súhlasíte, že knižnica bude zverejnená s MIT licenciou, čo v skratke znamená, že ju môže použiť hocikto bez obmedzení.","noteItems":"Každá položka v knižnici musí mať svoje vlastné meno, aby sa dala vyhľadať. Súčasťou knižnice budú nasledujúce položky:","atleastOneLibItem":"Začnite prosím zvolením aspoň jednej položky z knižnice","republishWarning":"Poznámka: Niektoré z vybraných položiek sú už označené ako zverejnené. Ich znovu uverejnenie by ste mali vykovať iba vtedy ak aktualizujete už existujúcu knižnicu alebo požiadavku na uverejnenie."},"publishSuccessDialog":{"title":"Knižnica uverejnená","content":"Ďakujeme vám {{authorName}}. Vaša knižnica bola uverejnená na posúdenie. Stav môžete skontrolovaťtu"},"confirmDialog":{"resetLibrary":"Obnoviť knižnicu","removeItemsFromLib":"Odstrániť zvolené položky z knižnice"},"imageExportDialog":{"header":"Exportovať obrázok","label":{"withBackground":"Pozadie","onlySelected":"Iba vybrané","darkMode":"Tmavý režim","embedScene":"Zahrnúť scénu","scale":"Mierka","padding":"Odsadenie"},"tooltip":{"embedScene":"Údaje scény budú uložené do exportovaného PNG/SVG súboru, takže scéna z neho môže byť opäť obnovená.\\nBude to mať za následok zvýšenie veľkosti súboru."},"title":{"exportToPng":"Exportovať do PNG","exportToSvg":"Exportovať do SVG","copyPngToClipboard":"Kopírovať PNG do schránky"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopírovať do schránky"}},"encrypted":{"tooltip":"Vaše kresby používajú end-to-end šifrovanie, takže ich Excalidraw server nedokáže prečítať.","link":"Blog o end-to-end šifrovaní v Excalidraw"},"stats":{"angle":"Uhol","element":"Prvok","elements":"Prvky","height":"Výška","scene":"Scéna","selected":"Vybrané","storage":"Úložisko","title":"Štatistiky","total":"Celkom","version":"Verzia","versionCopy":"Kliknutím skopírujete","versionNotAvailable":"Verzia nie je k dispozícii","width":"Šírka"},"toast":{"addedToLibrary":"Pridané do knižnice","copyStyles":"Štýly skopírované.","copyToClipboard":"Skopírované do schránky.","copyToClipboardAsPng":"Kopírovanie {{exportSelection}} do schránky ako PNG prebehlo úspešne\\n({{exportColorScheme}})","fileSaved":"Súbor uložený.","fileSavedToFilename":"Uložený ako {filename}","canvas":"plátna","selection":"výberu","pasteAsSingleElement":"Použitím {{shortcut}} vložte ako samostatný prvok alebo vložte do existujúceho editovaného textu","unableToEmbed":"Zapustenie tejto URL nie je povolené. Vytvorte issue na GitHub-e a požiadajte povolenie tejto URL","unrecognizedLinkFormat":"Odkaz, ktorý sa snažíte zapustiť nie je v očakávanom formáte. Prosím skúste vložiť \'odkaz na zdieľanie\' poskytnutý zdrojovou webovou stránkou"},"colors":{"transparent":"Priehľadná","black":"Čierna","white":"Biela","red":"Červená","pink":"Ružová","grape":"Hroznová fialová","violet":"Fialová","gray":"Sivá","blue":"Modrá","cyan":"Azúrová","teal":"Modrozelená","green":"Zelená","yellow":"Žltá","orange":"Oranžová","bronze":"Bronzová"},"welcomeScreen":{"app":{"center_heading":"Všetky vaše dáta sú uložené lokálne vo vašom prehliadači.","center_heading_plus":"Chceli ste namiesto toho prejsť do Excalidraw+?","menuHint":"Exportovanie, nastavenia, jazyky, ..."},"defaults":{"menuHint":"Exportovanie, nastavenia a ďalšie...","center_heading":"Diagramy. Jednoducho.","toolbarHint":"Zvoľte nástroj a začnite kresliť!","helpHint":"Klávesové skratky a pomocník"}},"colorPicker":{"mostUsedCustomColors":"Najpoužívanejšie vlastné farby","colors":"Farby","shades":"Odtiene","hexCode":"Hex kód","noShades":"Pre túto farbu nie sú dostupné žiadne odtiene"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportovať ako obrázok","button":"Exportovať ako obrázok","description":"Exportovať údaje scény ako obrázok, z ktorého môžu byť neskôr importované."},"saveToDisk":{"title":"Uložiť na disk","button":"Uložiť na disk","description":"Exportovať údaje scény do súboru, z ktorého môžu byť neskôr importované."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportovať ako Excalidraw+","description":"Uložiť scénu do vášho Excalidraw+ pracovného priestoru."}},"modal":{"loadFromFile":{"title":"Načítať zo súboru","button":"Načítať zo súboru","description":"Načítanie zo súboru nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."},"shareableLink":{"title":"Načítať z odkazu","button":"Nahradiť môj obsah","description":"Načítanie externej kresby nahradí váš existujúci obsah.

Vašu kresbu môžete zálohovať jednou z nižšie uvedených možností."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js b/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js new file mode 100644 index 0000000..f9fd04f --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sl-SI-json-efb839ef0456f5c72e6e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[6071],{1984:function(e){e.exports=JSON.parse('{"labels":{"paste":"Prilepi","pasteAsPlaintext":"Prilepi kot navadno besedilo","pasteCharts":"Prilepi grafikone","selectAll":"Izberi vse","multiSelect":"Dodaj element v izbor","moveCanvas":"Premakni platno","cut":"Izreži","copy":"Kopiraj","copyAsPng":"Kopiraj v odložišče kot PNG","copyAsSvg":"Kopiraj v odložišče kot SVG","copyText":"Kopiraj v odložišče kot besedilo","bringForward":"Postavi naprej","sendToBack":"Pomakni v ozadje","bringToFront":"Pomakni v ospredje","sendBackward":"Pošlji nazaj","delete":"Izbriši","copyStyles":"Kopiraj slog","pasteStyles":"Prilepi slog","stroke":"Poteza","background":"Ozadje","fill":"Polnilo","strokeWidth":"Debelina poteze","strokeStyle":"Slog poteze","strokeStyle_solid":"Polna","strokeStyle_dashed":"Črtkana","strokeStyle_dotted":"Pikasta","sloppiness":"Površnost","opacity":"Prekrivnost","textAlign":"Poravnava besedila","edges":"Robovi","sharp":"Ostri","round":"Okrogli","arrowheads":"Puščice","arrowhead_none":"Brez","arrowhead_arrow":"Puščica","arrowhead_bar":"Palica","arrowhead_dot":"Pika","arrowhead_triangle":"Trikotnik","fontSize":"Velikost pisave","fontFamily":"Družina pisave","addWatermark":"Dodaj \\"Izdelano z Excalidraw\\"","handDrawn":"Ročno narisano","normal":"Običajno","code":"Koda","small":"Majhna","medium":"Srednja","large":"Velika","veryLarge":"Zelo velika","solid":"Polno","hachure":"Šrafura","zigzag":"Cikcak","crossHatch":"Križno","thin":"Tanko","bold":"Krepko","left":"Levo","center":"Sredina","right":"Desno","extraBold":"Ekstra krepko","architect":"Arhitekt","artist":"Umetnik","cartoonist":"Risar","fileTitle":"Ime datoteke","colorPicker":"Izbor barve","canvasColors":"Uporabljeno na platnu","canvasBackground":"Ozadje platna","drawingCanvas":"Platno za risanje","layers":"Plasti","actions":"Dejanja","language":"Jezik","liveCollaboration":"Sodelovanje v živo...","duplicateSelection":"Podvoji","untitled":"Neimenovana","name":"Ime","yourName":"Vaše ime","madeWithExcalidraw":"Izdelano z Excalidraw","group":"Združi izbor","ungroup":"Razdruži izbor","collaborators":"Sodelavci","showGrid":"Prikaži mrežo","addToLibrary":"Dodaj v knjižnico","removeFromLibrary":"Odstrani iz knjižnice","libraryLoadingMessage":"Nalaganje knjižnice ...","libraries":"Brskaj po knjižnicah","loadingScene":"Nalaganje scene...","align":"Poravnava","alignTop":"Poravnaj na vrh","alignBottom":"Poravnaj na dno","alignLeft":"Poravnaj levo","alignRight":"Poravnaj desno","centerVertically":"Navpično na sredini","centerHorizontally":"Vodoravno na sredini","distributeHorizontally":"Porazdeli vodoravno","distributeVertically":"Porazdeli navpično","flipHorizontal":"Obrni vodoravno","flipVertical":"Obrni navpično","viewMode":"Način ogleda","share":"Deli","showStroke":"Prikaži izbirnik barv poteze","showBackground":"Prikaži izbirnik barv ozadja","toggleTheme":"Obrni temo","personalLib":"Osebna knjižnica","excalidrawLib":"Knjižnica Excalidraw","decreaseFontSize":"Zmanjšaj velikost pisave","increaseFontSize":"Povečaj velikost pisave","unbindText":"Veži besedilo","bindText":"Veži besedilo na element","createContainerFromText":"Zavij besedilo v vsebnik","link":{"edit":"Uredi povezavo","editEmbed":"Uredi povezavo in vdelaj","create":"Ustvari povezavo","createEmbed":"Ustvari povezavo in vdelaj","label":"Povezava","labelEmbed":"Povezava in vdelovanje","empty":"Povezava ni nastavljena"},"lineEditor":{"edit":"Uredi črto","exit":"Zapri urejanje črte"},"elementLock":{"lock":"Zakleni","unlock":"Odkleni","lockAll":"Zakleni vse","unlockAll":"Odkleni vse"},"statusPublished":"Objavljeno","sidebarLock":"Obdrži stransko vrstico odprto","selectAllElementsInFrame":"Izberi vse elemente v okvirju","removeAllElementsFromFrame":"Izbriši vse elemente v okvirju","eyeDropper":"Izberi barvo s platna"},"library":{"noItems":"Dodan še ni noben element...","hint_emptyLibrary":"Izberite element na platnu, da ga dodate sem, ali namestite knjižnico iz javnega skladišča spodaj.","hint_emptyPrivateLibrary":"Izberite element na platnu, da ga dodate sem."},"buttons":{"clearReset":"Ponastavi platno","exportJSON":"Izvozi v datoteko","exportImage":"Izvozi sliko...","export":"Shrani v...","copyToClipboard":"Kopiraj v odložišče","save":"Shrani v trenutno datoteko","saveAs":"Shrani kot","load":"Odpri","getShareableLink":"Pridobi povezavo za deljenje","close":"Zapri","selectLanguage":"Izberi jezik","scrollBackToContent":"Pomakni se nazaj na vsebino","zoomIn":"Povečaj","zoomOut":"Pomanjšaj","resetZoom":"Ponastavi povečavo","menu":"Meni","done":"Končano","edit":"Uredi","undo":"Razveljavi","redo":"Ponovi","resetLibrary":"Ponastavi knjižnico","createNewRoom":"Ustvari novo sobo","fullScreen":"Celozaslonski način","darkMode":"Temni način","lightMode":"Svetli način","zenMode":"Način Zen","objectsSnapMode":"Pripenjanje na predmete","exitZenMode":"Zapri način Zen","cancel":"Prekliči","clear":"Počisti","remove":"Odstrani","embed":"Preklopi vdelavo","publishLibrary":"Objavi","submit":"Pošlji","confirm":"Potrdi","embeddableInteractionButton":"Kliknite za interakcijo"},"alerts":{"clearReset":"To bo počistilo celotno platno. Ali ste prepričani?","couldNotCreateShareableLink":"Povezave za deljenje ni bilo mogoče ustvariti.","couldNotCreateShareableLinkTooBig":"Povezave za deljenje ni bilo mogoče ustvariti: scena je prevelika","couldNotLoadInvalidFile":"Neveljavne datoteke ni bilo mogoče naložiti","importBackendFailed":"Uvoz iz zaledja ni uspel.","cannotExportEmptyCanvas":"Izvoz prazne scene ni mogoč.","couldNotCopyToClipboard":"Kopiranje v odložišče ni uspelo.","decryptFailed":"Dešifriranje podatkov ni uspelo.","uploadedSecurly":"Nalaganje je bilo zaščiteno s šifriranjem od konca do konca, kar pomeni, da strežnik Excalidraw in tretje osebe ne morejo brati vsebine.","loadSceneOverridePrompt":"Nalaganje zunanje risbe bo nadomestilo vašo obstoječo vsebino. Ali želite nadaljevati?","collabStopOverridePrompt":"Ustavitev seje bo prepisala vašo prejšnjo, lokalno shranjeno risbo. Ali ste prepričani?\\n\\n(Če želite obdržati lokalno risbo, preprosto zaprite zavihek brskalnika.)","errorAddingToLibrary":"Elementa ni bilo mogoče dodati v knjižnico","errorRemovingFromLibrary":"Elementa ni bilo mogoče izbrisati iz knjižnice","confirmAddLibrary":"S tem boste v vašo knjižnico dodali oblike ({{numShapes}}). Ali ste prepričani?","imageDoesNotContainScene":"Zdi se, da ta slika ne vsebuje podatkov o sceni. Ali ste med izvozom omogočili vdelavo scene?","cannotRestoreFromImage":"Scene ni bilo mogoče obnoviti iz te slikovne datoteke","invalidSceneUrl":"S priloženega URL-ja ni bilo mogoče uvoziti scene. Je napačno oblikovana ali pa ne vsebuje veljavnih podatkov Excalidraw JSON.","resetLibrary":"To bo počistilo vašo knjižnico. Ali ste prepričani?","removeItemsFromsLibrary":"Izbriši elemente ({{count}}) iz knjižnice?","invalidEncryptionKey":"Ključ za šifriranje mora vsebovati 22 znakov. Sodelovanje v živo je onemogočeno.","collabOfflineWarning":"Internetna povezava ni na voljo.\\nVaše spremembe ne bodo shranjene!"},"errors":{"unsupportedFileType":"Nepodprt tip datoteke.","imageInsertError":"Vstavljanje slike ni bilo uspešno. Poskusite ponovno kasneje...","fileTooBig":"Datoteka je prevelika. Največja dovoljena velikost je {{maxSize}}.","svgImageInsertError":"Vstavljanje slike SVG ni uspelo. Oznake SVG so videti neveljavne.","failedToFetchImage":"Pridobivanje slike ni uspelo.","invalidSVGString":"Neveljaven SVG.","cannotResolveCollabServer":"Povezave s strežnikom za sodelovanje ni bilo mogoče vzpostaviti. Ponovno naložite stran in poskusite znova.","importLibraryError":"Nalaganje knjižnice ni uspelo","collabSaveFailed":"Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.","collabSaveFailed_sizeExceeded":"Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela.","brave_measure_text_error":{"line1":"Videti je, da uporabljate brskalnik Brave z omogočeno nastavitvijo Agresivno blokiranje prstnih odtisov.","line2":"To bi lahko povzročilo motnje v obnašanju besedilnih elementov v vaših risbah.","line3":"Močno priporočamo, da onemogočite to nastavitev. Sledite tem korakom, kako to storiti.","line4":"Če onemogočanje te nastavitve ne popravi prikaza besedilnih elementov, odprite vprašanje na našem GitHubu ali nam pišite na Discord"},"libraryElementTypeError":{"embeddable":"Vdelani elementi ne morejo biti dodani v knjižnico.","image":"Podpora za dodajanje slik v knjižnico prihaja kmalu!"}},"toolBar":{"selection":"Izbor","image":"Vstavi sliko","rectangle":"Pravokotnik","diamond":"Diamant","ellipse":"Elipsa","arrow":"Puščica","line":"Črta","freedraw":"Risanje","text":"Besedilo","library":"Knjižnica","lock":"Ohrani izbrano orodje aktivno po risanju","penMode":"Način peresa - prepreči dotik","link":"Dodaj/posodobi povezavo za izbrano obliko","eraser":"Radirka","frame":"Okvir","embeddable":"Spletna vdelava","laser":"Laserski kazalec","hand":"Roka (orodje za premikanje)","extraTools":"Več orodij"},"headings":{"canvasActions":"Dejanja za platno","selectedShapeActions":"Dejanja za izbrane oblike","shapes":"Oblike"},"hints":{"canvasPanning":"Za premikanje platna med vlečenjem držite kolesce miške ali preslednico ali uporabite orodje roka","linearElement":"Kliknite za začetek več točk, povlecite za posamezno črto","freeDraw":"Kliknite in povlecite, spustite, ko končate","text":"Namig: besedilo lahko dodate tudi z dvoklikom kjer koli z orodjem za izbiro","embeddable":"Kliknite in povlecite, da ustvarite spletno vdelavo","text_selected":"Dvokliknite ali pritisnite tipko Enter, da uredite besedilo","text_editing":"Pritisnite tipko Escape ali CtrlOrCmd+Enter za zaključek urejanja","linearElementMulti":"Kliknite zadnjo točko ali pritisnite Escape ali Enter, da končate","lockAngle":"Kot lahko omejite tako, da držite tipko Shift","resize":"Razmerja lahko omejite tako, da držite tipko Shift med spreminjanjem velikosti. Držite tipko Alt, da spremenite velikost od središča","resizeImage":"Velikost lahko prosto spreminjate tako, da držite tipko Shift. Držite tipko Alt, da spremenite velikost od središča","rotate":"Kote lahko omejite tako, da med vrtenjem držite tipko Shift","lineEditor_info":"Držite CtrlOrCmd in dvokliknite ali pritisnite CtrlOrCmd + Enter za urejanje točk","lineEditor_pointSelected":"Pritisnite tipko Delete, da odstranite točko(e), CtrlOrCmd+D za podvojitev ali povlecite za premikanje","lineEditor_nothingSelected":"Izberite točko za urejanje (pridržite tipko Shift za izbiro več točk), ali držite tipko Alt in kliknite za dodajanje novih točk","placeImage":"Kliknite, da postavite sliko, ali kliknite in povlecite, da ročno nastavite njeno velikost","publishLibrary":"Objavi svojo knjižnico","bindTextToElement":"Pritisnite tipko Enter za dodajanje besedila","deepBoxSelect":"Držite tipko CtrlOrCmd za globoko izbiro in preprečitev vlečenja","eraserRevert":"Pridržite tipko Alt, da razveljavite elemente, označene za brisanje","firefox_clipboard_write":"To funkcijo lahko verjetno omogočite z nastavitvijo zastavice \\"dom.events.asyncClipboard.clipboardItem\\" na \\"true\\". Če želite spremeniti zastavice brskalnika v Firefoxu, obiščite stran \\"about:config\\".","disableSnapping":"Držite CtrlOrCmd, da onemogočite pripenjanje"},"canvasError":{"cannotShowPreview":"Predogleda ni bilo mogoče prikazati","canvasTooBig":"Morda je platno preveliko.","canvasTooBigTip":"Nasvet: poskusite premakniti najbolj oddaljene elemente nekoliko bližje skupaj."},"errorSplash":{"headingMain":"Prišlo je do napake. Poskusite ","clearCanvasMessage":"Če ponovno nalaganje ne deluje, poskusite ","clearCanvasCaveat":" To bo povzročilo izgubo dela ","trackedToSentry":"Napaka z identifikatorjem {{eventId}} smo zabeležili v naš sistem.","openIssueMessage":"Zelo smo bili previdni, da v podatke o napaki nismo vključili vaših podatkov o sceni. Če vaša scena ni zasebna, vas prosimo, da napišete več podrobnosti na našem Prosimo, vključite spodnje informacije tako, da jih kopirate in prilepite v GitHub vprašanje.","sceneContent":"Vsebina scene:"},"roomDialog":{"desc_intro":"Na vašo trenutno sceno lahko povabite osebe, ki bodo sodelovale z vami.","desc_privacy":"Brez skrbi. Seja uporablja šifriranje od konca do konca, tako da bo vse, kar narišete, ostalo zasebno. Niti naš strežnik ne bo mogel videti, kaj si izmislite.","button_startSession":"Začni sejo","button_stopSession":"Ustavi sejo","desc_inProgressIntro":"Seja sodelovanja v živo je v teku.","desc_shareLink":"Delite to povezavo z vsemi, s katerimi želite sodelovati:","desc_exitSession":"Ustavitev seje vas bo odklopila od sobe, vendar boste lahko lokalno nadaljevali delo s sceno. To pa ne bo vplivalo na druge osebe. Druge osebe bodo še vedno lahko sodelovale v svoji različici.","shareTitle":"Pridruži se seji sodelovanja v živo na Excalidraw"},"errorDialog":{"title":"Napaka"},"exportDialog":{"disk_title":"Shrani na disk","disk_details":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite.","disk_button":"Shrani v datoteko","link_title":"Povezava za deljenje","link_details":"Izvoz kot povezava samo za branje.","link_button":"Izvoz kot povezava","excalidrawplus_description":"Shrani sceno v svoj delovni prostor Excalidraw+.","excalidrawplus_button":"Izvoz","excalidrawplus_exportError":"Trenutno ni bilo mogoče izvoziti v Excalidraw+..."},"helpDialog":{"blog":"Preberite naš blog","click":"klik","deepSelect":"Globoka izbira","deepBoxSelect":"Globoka izbira znotraj polja in preprečitev vlečenja","curvedArrow":"Ukrivljena puščica","curvedLine":"Ukrivljena črta","documentation":"Dokumentacija","doubleClick":"dvojni klik","drag":"vleci","editor":"Urejevalnik","editLineArrowPoints":"Uredi črto/točke puščice","editText":"Uredi besedilo / dodaj oznako","github":"Ste našli težavo? Pošljite","howto":"Sledite našim vodičem","or":"ali","preventBinding":"Prepreči vezanje puščice","tools":"Orodja","shortcuts":"Bližnjice na tipkovnici","textFinish":"Zaključi urejanje (urejevalnik besedila)","textNewLine":"Dodaj novo vrstico (urejevalnik besedila)","title":"Pomoč","view":"Pogled","zoomToFit":"Približaj na vse elemente","zoomToSelection":"Približaj na izbor","toggleElementLock":"Zakleni/odkleni izbor","movePageUpDown":"Premakni stran gor/dol","movePageLeftRight":"Premakni stran levo/desno"},"clearCanvasDialog":{"title":"Počisti platno"},"publishDialog":{"title":"Objavi knjižnico","itemName":"Ime elementa","authorName":"Ime avtorja","githubUsername":"GitHub uporabniško ime","twitterUsername":"Twitter uporabniško ime","libraryName":"Ime knjižnice","libraryDesc":"Opis knijžnice","website":"Spletna stran","placeholder":{"authorName":"Vaše ime ali uporabniško ime","libraryName":"Ime vaše knjižnice","libraryDesc":"Opis vaše knjižnice, da bodo ljudje lažje razumeli njeno uporabo","githubHandle":"GitHub uporabniško ime (neobvezno), tako da lahko urejate knjižnico potem, ko jo pošljete v pregled","twitterHandle":"Twitter uporabniško ime (neobvezno), tako da vemo, koga omeniti pri promociji prek Twitterja","website":"Povezava na vašo osebno spletno stran ali drugam (neobvezno)"},"errors":{"required":"Obvezno","website":"Vnesite veljaven URL"},"noteDescription":"Predložite svojo knjižnico, da bo vključena v javno skladišče knjižnic,da jih drugi lahko uporabljajo v svojih risbah.","noteGuidelines":"Knjižnica mora biti najprej ročno odobrena. Prosimo vas, da pred oddajanjem preberete naše smernice.Za komunikacijo in spreminjanje po potrebi boste potrebovali račun GitHub, vendar to ni obvezno.","noteLicense":"Z oddajo se strinjate, da bo knjižnica objavljena pod licenco MIT, kar na kratko pomeni, da jo lahko kdorkoli uporablja brez omejitev.","noteItems":"Vsak element knjižnice mora imeti svoje ime, tako da ga je mogoče filtrirati. Vključeni bodo naslednji elementi knjižnice:","atleastOneLibItem":"Za začetek izberite vsaj en element knjižnice","republishWarning":"Opomba: nekateri izbrani predmeti so označeni kot že objavljeni/oddani. Elemente lahko znova oddate samo, ko posodabljate obstoječo knjižnico ali oddajo."},"publishSuccessDialog":{"title":"Knjižnica oddana","content":"{{authorName}}, hvala. Vaša knjižnica je bila poslana v pregled. Stanje lahko spremljatetukaj"},"confirmDialog":{"resetLibrary":"Ponastavi knjižnico","removeItemsFromLib":"Odstran izbrane elemente iz knjižnice"},"imageExportDialog":{"header":"Izvozi sliko","label":{"withBackground":"Ozadje","onlySelected":"Samo izbor","darkMode":"Temni način","embedScene":"Vdelaj sceno","scale":"Povečava","padding":"Odmik"},"tooltip":{"embedScene":"Podatki o sceni bodo shranjeni v izvoženo datoteko PNG/SVG, tako da bo sceno mogoče obnoviti iz nje.\\nTo bo povečalo velikost izvožene datoteke."},"title":{"exportToPng":"Izvozi v PNG","exportToSvg":"Izvozi v SVG","copyPngToClipboard":"Kopiraj PNG v odložišče"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiraj v odložišče"}},"encrypted":{"tooltip":"Vaše risbe so šifrirane od konca do konca, tako da jih strežniki Excalidraw nikoli ne bodo videli.","link":"Blog objava o šifriranju od konca do konca v Excalidraw"},"stats":{"angle":"Kot","element":"Element","elements":"Elementi","height":"Višina","scene":"Scena","selected":"Izbrano","storage":"Shramba","title":"Statistika za napredne uporabnike","total":"Skupaj","version":"Različica","versionCopy":"Kliknite za kopiranje","versionNotAvailable":"Različica ni na voljo","width":"Širina"},"toast":{"addedToLibrary":"Dodano v knjižnico","copyStyles":"Slogi kopirani.","copyToClipboard":"Kopirano v odložišče.","copyToClipboardAsPng":"Kopirano v odložišče kot PNG ({{exportSelection}}, {{exportColorScheme}})","fileSaved":"Datoteka shranjena.","fileSavedToFilename":"Shranjeno v {filename}","canvas":"platno","selection":"izbor","pasteAsSingleElement":"Uporabite {{shortcut}}, da prilepite kot en element,\\n ali prilepite v obstoječ urejevalnik besedil","unableToEmbed":"Vdelava tega URL-ja trenutno ni dovoljena. Ustvarite vprašanje na GitHub-u in prosite za vmestitev URL-ja na seznam dovoljenih","unrecognizedLinkFormat":"Povezava, ki ste jo vdelali, se ne ujema s pričakovano obliko. Poskusite prilepiti niz za vdelavo, ki ste ga prejeli na izvorni strani"},"colors":{"transparent":"Prosojno","black":"Črna","white":"Bela","red":"Rdeča","pink":"Roza","grape":"Grozdje","violet":"Vijolična","gray":"Siva","blue":"Modra","cyan":"Cijan","teal":"Turkizna","green":"Zelena","yellow":"Rumena","orange":"Oranžna","bronze":"Bronasta"},"welcomeScreen":{"app":{"center_heading":"Vsi vaši podatki so shranjeni lokalno v vašem brskalniku.","center_heading_plus":"Ste namesto tega želeli odpreti Excalidraw+?","menuHint":"Izvoz, nastavitve, jeziki, ..."},"defaults":{"menuHint":"Izvoz, nastavitve in več ...","center_heading":"Diagrami. Enostavno.","toolbarHint":"Izberi orodje in začni z risanjem!","helpHint":"Bližnjice in pomoč"}},"colorPicker":{"mostUsedCustomColors":"Najpogosteje uporabljene barve po meri","colors":"Barve","shades":"Odtenki","hexCode":"Hex koda","noShades":"Odtenki za to barvo niso na voljo"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Izvozi kot sliko","button":"Izvozi kot sliko","description":"Izvozite podatke scene kot sliko, iz katere jo lahko pozneje uvozite."},"saveToDisk":{"title":"Shrani na disk","button":"Shrani na disk","description":"Izvozite podatke scene v datoteko, iz katere jo lahko pozneje uvozite."},"excalidrawPlus":{"title":"Excalidraw+","button":"Izvozi v Excalidraw+","description":"Shrani sceno v svoj delovni prostor Excalidraw+."}},"modal":{"loadFromFile":{"title":"Naloži iz datoteke","button":"Naloži iz datoteke","description":"Nalaganje iz datoteke bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."},"shareableLink":{"title":"Naloži iz povezave","button":"Zamenjaj mojo vsebino","description":"Nalaganje zunanje risbe bo prepisalo vašo obstoječo vsebino.

Svojo risbo lahko najprej varnostno kopirate z eno od spodnjih možnosti."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js b/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js new file mode 100644 index 0000000..d77174f --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/sv-SE-json-cfab3adbd37dd273c61e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[8534],{976:function(e){e.exports=JSON.parse('{"labels":{"paste":"Klistra in","pasteAsPlaintext":"Klistra som oformaterad text","pasteCharts":"Klistra in diagram","selectAll":"Markera alla","multiSelect":"Lägg till element till markering","moveCanvas":"Flytta canvas","cut":"Klipp ut","copy":"Kopiera","copyAsPng":"Kopiera till urklipp som PNG","copyAsSvg":"Kopiera till urklipp som SVG","copyText":"Kopiera till urklipp som text","bringForward":"Flytta framåt","sendToBack":"Flytta underst","bringToFront":"Flytta främst","sendBackward":"Skicka bakåt","delete":"Ta bort","copyStyles":"Kopiera stil","pasteStyles":"Klistra in stil","stroke":"Linje","background":"Bakgrund","fill":"Fyllnad","strokeWidth":"Linjebredd","strokeStyle":"Linjestil","strokeStyle_solid":"Solid","strokeStyle_dashed":"Streckad","strokeStyle_dotted":"Punktad","sloppiness":"Slarvighet","opacity":"Genomskinlighet","textAlign":"Textjustering","edges":"Kanter","sharp":"Skarp","round":"Rund","arrowheads":"Pilhuvuden","arrowhead_none":"Inga","arrowhead_arrow":"Pil","arrowhead_bar":"Stolpe","arrowhead_dot":"Punkt","arrowhead_triangle":"Triangel","fontSize":"Teckenstorlek","fontFamily":"Teckensnitt","addWatermark":"Lägg till \\"Skapad med Excalidraw\\"","handDrawn":"Handritad","normal":"Normal","code":"Kod","small":"Liten","medium":"Medium","large":"Stor","veryLarge":"Mycket stor","solid":"Solid","hachure":"Skraffering","zigzag":"Sicksack","crossHatch":"Skraffera med kors","thin":"Tunn","bold":"Fet","left":"Vänster","center":"Centrera","right":"Höger","extraBold":"Extra fet","architect":"Arkitekt","artist":"Artist","cartoonist":"Serietecknare","fileTitle":"Filnamn","colorPicker":"Färgväljare","canvasColors":"Används på canvas","canvasBackground":"Canvas-bakgrund","drawingCanvas":"Ritar canvas","layers":"Lager","actions":"Åtgärder","language":"Språk","liveCollaboration":"Samarbeta live...","duplicateSelection":"Duplicera","untitled":"Namnlös","name":"Namn","yourName":"Ditt namn","madeWithExcalidraw":"Skapad med Excalidraw","group":"Gruppera markering","ungroup":"Avgruppera markering","collaborators":"Medarbetare","showGrid":"Visa rutnät","addToLibrary":"Lägg till i biblioteket","removeFromLibrary":"Ta bort från bibliotek","libraryLoadingMessage":"Laddar bibliotek…","libraries":"Bläddra i bibliotek","loadingScene":"Laddar skiss…","align":"Justera","alignTop":"Justera överkant","alignBottom":"Justera underkant","alignLeft":"Justera vänster","alignRight":"Justera höger","centerVertically":"Centrera vertikalt","centerHorizontally":"Centrera horisontellt","distributeHorizontally":"Fördela horisontellt","distributeVertically":"Fördela vertikalt","flipHorizontal":"Vänd horisontellt","flipVertical":"Vänd vertikalt","viewMode":"Visningsläge","share":"Dela","showStroke":"Visa färgväljare för linjefärg","showBackground":"Visa färgväljare för bakgrundsfärg","toggleTheme":"Växla tema","personalLib":"Personligt bibliotek","excalidrawLib":"Excalidraw bibliotek","decreaseFontSize":"Minska fontstorleken","increaseFontSize":"Öka fontstorleken","unbindText":"Koppla bort text","bindText":"Bind texten till behållaren","createContainerFromText":"Radbryt text i en avgränsad yta","link":{"edit":"Redigera länk","editEmbed":"Redigera länk & bädda in","create":"Skapa länk","createEmbed":"Skapa länk & bädda in","label":"Länk","labelEmbed":"Länka & bädda in","empty":"Ingen länk är angiven"},"lineEditor":{"edit":"Redigera linje","exit":"Avsluta linjeredigerare"},"elementLock":{"lock":"Lås","unlock":"Lås upp","lockAll":"Lås alla","unlockAll":"Lås upp alla"},"statusPublished":"Publicerad","sidebarLock":"Håll sidofältet öppet","selectAllElementsInFrame":"Markera alla element i rutan","removeAllElementsFromFrame":"Ta bort alla element från rutan","eyeDropper":"Välj färg från canvas"},"library":{"noItems":"Inga objekt tillagda ännu...","hint_emptyLibrary":"Välj ett objekt på canvasen för att lägga till det här, eller installera ett bibliotek från det publika arkivet, nedan.","hint_emptyPrivateLibrary":"Välj ett objekt på canvasen för att lägga till det här."},"buttons":{"clearReset":"Återställ canvasen","exportJSON":"Exportera till fil","exportImage":"Exportera bild...","export":"Spara till...","copyToClipboard":"Kopiera till urklipp","save":"Spara till aktuell fil","saveAs":"Spara som","load":"Öppna","getShareableLink":"Hämta delbar länk","close":"Stäng","selectLanguage":"Välj språk","scrollBackToContent":"Bläddra tillbaka till innehållet","zoomIn":"Zooma in","zoomOut":"Zooma ut","resetZoom":"Återställ zoom","menu":"Meny","done":"Klart","edit":"Redigera","undo":"Ångra","redo":"Gör om","resetLibrary":"Återställ bibliotek","createNewRoom":"Skapa ett nytt rum","fullScreen":"Helskärm","darkMode":"Mörkt läge","lightMode":"Ljust läge","zenMode":"Zen-läge","objectsSnapMode":"Fäst mot objekt","exitZenMode":"Gå ur zen-läge","cancel":"Avbryt","clear":"Rensa","remove":"Ta bort","embed":"Växla inbäddning","publishLibrary":"Publicera","submit":"Skicka","confirm":"Bekräfta","embeddableInteractionButton":"Klicka för att interagera"},"alerts":{"clearReset":"Detta rensar hela canvasen. Är du säker?","couldNotCreateShareableLink":"Kunde inte skapa delbar länk.","couldNotCreateShareableLinkTooBig":"Kunde inte skapa delbar länk: skissen är för stor","couldNotLoadInvalidFile":"Kunde inte ladda ogiltig fil","importBackendFailed":"Importering från backend misslyckades.","cannotExportEmptyCanvas":"Kan inte exportera tom canvas.","couldNotCopyToClipboard":"Kunde inte kopiera till urklipp.","decryptFailed":"Kunde inte avkryptera data.","uploadedSecurly":"Uppladdning har säkrats med kryptering från ände till ände. vilket innebär att Excalidraw server och tredje part inte kan läsa innehållet.","loadSceneOverridePrompt":"Laddning av extern skiss kommer att ersätta ditt befintliga innehåll. Vill du fortsätta?","collabStopOverridePrompt":"Att stoppa sessionen kommer att skriva över din föregående, lokalt lagrade skiss. Är du säker?\\n\\n(Om du vill behålla din lokala skiss, stäng bara webbläsarfliken istället.)","errorAddingToLibrary":"Kunde inte lägga till objekt i biblioteket","errorRemovingFromLibrary":"Kunde inte ta bort objekt från biblioteket","confirmAddLibrary":"Detta kommer att lägga till {{numShapes}} form(er) till ditt bibliotek. Är du säker?","imageDoesNotContainScene":"Den här bilden verkar inte innehålla någon skissdata. Har du aktiverat inbäddning av skiss under export?","cannotRestoreFromImage":"Skiss kunde inte återställas från denna bildfil","invalidSceneUrl":"Det gick inte att importera skiss från den angivna webbadressen. Antingen har den fel format, eller så innehåller den ingen giltig Excalidraw JSON data.","resetLibrary":"Detta kommer att rensa ditt bibliotek. Är du säker?","removeItemsFromsLibrary":"Ta bort {{count}} objekt från biblioteket?","invalidEncryptionKey":"Krypteringsnyckeln måste vara 22 tecken. Livesamarbetet är inaktiverat.","collabOfflineWarning":"Ingen internetanslutning tillgänglig.\\nDina ändringar kommer inte att sparas!"},"errors":{"unsupportedFileType":"Filtypen stöds inte.","imageInsertError":"Kunde inte infoga bild. Försök igen senare...","fileTooBig":"Filen är för stor. Maximal tillåten storlek är {{maxSize}}.","svgImageInsertError":"Kunde inte infoga SVG-bild. SVG-koden ser ogiltig ut.","failedToFetchImage":"Kunde inte hämta bilden.","invalidSVGString":"Ogiltig SVG.","cannotResolveCollabServer":"Det gick inte att ansluta till samarbets-servern. Ladda om sidan och försök igen.","importLibraryError":"Kunde inte ladda bibliotek","collabSaveFailed":"Det gick inte att spara i backend-databasen. Om problemen kvarstår bör du spara filen lokalt för att se till att du inte förlorar ditt arbete.","collabSaveFailed_sizeExceeded":"Det gick inte att spara till backend-databasen, whiteboarden verkar vara för stor. Du bör spara filen lokalt för att du inte ska förlora ditt arbete.","brave_measure_text_error":{"line1":"Det ser ut som om du använder Brave-webbläsaren med Aggressivt Blockera fingeravtryck inställningen aktiverad.","line2":"Detta kan resultera i trasiga Textelement i dina ritningar.","line3":"Vi rekommenderar starkt att du inaktiverar den här inställningen. Du kan följa dessa steg för att inaktivera den.","line4":"Om inaktivering av denna inställning inte åtgärdar visningen av textelement, öppna ett ärende på vår GitHub, eller skriv till oss på Discord"},"libraryElementTypeError":{"embeddable":"Inbäddbara element kan inte läggas till i biblioteket.","image":"Stöd för att lägga till bilder till biblioteket kommer snart!"}},"toolBar":{"selection":"Markering","image":"Infoga bild","rectangle":"Rektangel","diamond":"Diamant","ellipse":"Ellips","arrow":"Pil","line":"Linje","freedraw":"Rita","text":"Text","library":"Bibliotek","lock":"Håll valt verktyg aktivt efter ritande","penMode":"Pennläge - förhindra touch","link":"Lägg till / Uppdatera länk för en vald form","eraser":"Radergummi","frame":"Rutverktyg","embeddable":"Bädda in (web)","laser":"Laserpekare","hand":"Hand (panoreringsverktyg)","extraTools":"Fler verktyg"},"headings":{"canvasActions":"Canvas-åtgärder","selectedShapeActions":"Valda formåtgärder","shapes":"Former"},"hints":{"canvasPanning":"För att flytta whiteboarden, håll mushjulet eller mellanslagstangenten medan du drar eller använd handverktyget","linearElement":"Klicka för att starta flera punkter, dra för en linje","freeDraw":"Klicka och dra, släpp när du är klar","text":"Tips: du kan också lägga till text genom att dubbelklicka var som helst med markeringsverktyget","embeddable":"Klicka-dra för att skapa en webbplats-inbäddning","text_selected":"Dubbelklicka eller tryck ENTER för att redigera text","text_editing":"Tryck Escape eller CtrlOrCmd + ENTER för att slutföra redigeringen","linearElementMulti":"Klicka på sista punkten eller tryck Escape eller Enter för att avsluta","lockAngle":"Du kan begränsa vinkeln genom att hålla SKIFT","resize":"Du kan behålla proportioner genom att hålla SHIFT medan du ändrar storlek,\\nhåller du ALT ändras storlek relativt mitten","resizeImage":"Du kan ändra storlek fritt genom att hålla SHIFT,\\nhåll ALT för att ändra storlek från mitten","rotate":"Du kan begränsa vinklar genom att hålla SHIFT medan du roterar","lineEditor_info":"Håll Ctrl/Cmd och dubbelklicka eller tryck på Ctrl/Cmd + Enter för att redigera punkter","lineEditor_pointSelected":"Tryck på Ta bort för att ta bort punkt(er), Ctrl + D eller Cmd + D för att duplicera, eller dra för att flytta","lineEditor_nothingSelected":"Välj en punkt att redigera (håll SHIFT för att välja flera),\\neller håll ned Alt och klicka för att lägga till nya punkter","placeImage":"Klicka för att placera bilden, eller klicka och dra för att ställa in dess storlek manuellt","publishLibrary":"Publicera ditt eget bibliotek","bindTextToElement":"Tryck på Enter för att lägga till text","deepBoxSelect":"Håll Ctrl eller Cmd för att djupvälja, och för att förhindra att dra","eraserRevert":"Håll Alt för att återställa de element som är markerade för borttagning","firefox_clipboard_write":"Denna funktion kan sannolikt aktiveras genom att ställa in \\"dom.events.asyncClipboard.clipboardItem\\" flaggan till \\"true\\". För att ändra webbläsarens flaggor i Firefox, besök \\"about:config\\" sidan.","disableSnapping":"Håll Ctrl eller Cmd för att inaktivera fästning"},"canvasError":{"cannotShowPreview":"Kan inte visa förhandsgranskning","canvasTooBig":"Canvasen kan vara för stor.","canvasTooBigTip":"Tips: prova att flytta de mest avlägsna elementen lite närmare varandra."},"errorSplash":{"headingMain":"Ett fel uppstod. Försök ","clearCanvasMessage":"Om omladdning inte fungerar, försök ","clearCanvasCaveat":" Detta kommer att leda till förlust av arbete ","trackedToSentry":"Felet med identifieraren {{eventId}} spårades på vårt system.","openIssueMessage":"Vi var mycket försiktiga med att inte inkludera din skissinformation om felet. Om din skiss inte är privat, vänligen överväga att följa upp på vår Vänligen inkludera information nedan genom att kopiera och klistra in i GitHub-problemet.","sceneContent":"Skissinnehåll:"},"roomDialog":{"desc_intro":"Du kan bjuda in personer till din nuvarande skiss för att samarbeta med dig.","desc_privacy":"Oroa dig inte, sessionen använder kryptering från ände till ände, så vad du än ritar kommer att förbli privat. Inte ens vår server kommer att kunna se vad du skissar.","button_startSession":"Starta sessionen","button_stopSession":"Stoppa session","desc_inProgressIntro":"Nu pågår en live-samarbetssession.","desc_shareLink":"Dela denna länk med någon du vill samarbeta med:","desc_exitSession":"Att avbryta sessionen kommer att koppla bort dig från rummet, men du kommer att kunna fortsätta arbeta med skissen, lokalt. Observera att detta inte påverkar andra människor, och de kommer fortfarande att kunna samarbeta på deras version.","shareTitle":"Delta i en live-samarbetssession på Excalidraw"},"errorDialog":{"title":"Fel"},"exportDialog":{"disk_title":"Spara till disk","disk_details":"Exportera skissdata till en fil som du kan importera från senare.","disk_button":"Spara till fil","link_title":"Delbar länk","link_details":"Exportera som en skrivskyddad länk.","link_button":"Exportera till länk","excalidrawplus_description":"Spara skissen till din Excalidraw+ arbetsyta.","excalidrawplus_button":"Exportera","excalidrawplus_exportError":"Det gick inte att exportera till Excalidraw+ just nu..."},"helpDialog":{"blog":"Läs vår blogg","click":"klicka","deepSelect":"Djupval","deepBoxSelect":"Djupval inom boxen, och förhindra att dra","curvedArrow":"Böjd pil","curvedLine":"Böjd linje","documentation":"Dokumentation","doubleClick":"dubbelklicka","drag":"dra","editor":"Redigerare","editLineArrowPoints":"Redigera linje-/pilpunkter","editText":"Redigera text / lägg till etikett","github":"Hittat ett problem? Rapportera","howto":"Följ våra guider","or":"eller","preventBinding":"Förhindra pilbindning","tools":"Verktyg","shortcuts":"Tangentbordsgenvägar","textFinish":"Slutför redigering (text)","textNewLine":"Lägg till ny rad (text)","title":"Hjälp","view":"Visa","zoomToFit":"Zooma för att rymma alla element","zoomToSelection":"Zooma till markering","toggleElementLock":"Lås/Lås upp valda","movePageUpDown":"Flytta sida upp/ner","movePageLeftRight":"Flytta sida vänster/höger"},"clearCanvasDialog":{"title":"Rensa canvas"},"publishDialog":{"title":"Publicera bibliotek","itemName":"Objektnamn","authorName":"Upphovsmannens namn","githubUsername":"GitHub-användarnamn","twitterUsername":"Twitter-användarnamn","libraryName":"Biblioteksnamn","libraryDesc":"Biblioteksbeskrivning","website":"Webbplats","placeholder":{"authorName":"Ditt namn eller användarnamn","libraryName":"Namn på ditt bibliotek","libraryDesc":"Beskrivning av ditt bibliotek för att hjälpa människor att förstå dess användning","githubHandle":"Github-användarnamn (valfritt), så att du kan redigera biblioteket när du har skickat in det för granskning","twitterHandle":"Twitter-användarnamn (valfritt), så vi vet vem att kreditera när du marknadsför på Twitter","website":"Länk till din personliga webbplats eller någon annan (valfritt)"},"errors":{"required":"Obligatoriskt","website":"Ange en giltig URL"},"noteDescription":"Skicka ditt bibliotek för att inkluderas i det offentliga bibliotekets arkivför andra människor att använda i sina skisser.","noteGuidelines":"Biblioteket måste godkännas manuellt först. Vänligen läs riktlinjerna innan du skickar in. Du behöver ett GitHub-konto för att kommunicera och göra ändringar om så önskas, men det krävs inte.","noteLicense":"Genom att skicka in godkänner du att biblioteket kommer att publiceras under MIT-licens, vilket kort sagt betyder att vem som helst kan använda det utan restriktioner.","noteItems":"Varje objekt måste ha sitt eget namn så att det är filtrerbart. Följande objekt kommer att inkluderas:","atleastOneLibItem":"Välj minst ett biblioteksobjekt för att komma igång","republishWarning":"Obs: några av de markerade objekten är redan markerade som publicerade/skickade. Du bör endast skicka objekt igen när du uppdaterar ett befintligt bibliotek eller inlämning."},"publishSuccessDialog":{"title":"Bibliotek inskickat","content":"Tack {{authorName}}. Ditt bibliotek har skickats för granskning. Du kan följa statushär"},"confirmDialog":{"resetLibrary":"Återställ bibliotek","removeItemsFromLib":"Ta bort markerade objekt från biblioteket"},"imageExportDialog":{"header":"Exportera bild","label":{"withBackground":"Bakgrund","onlySelected":"Endast markerade","darkMode":"Mörkt läge","embedScene":"Bädda in skiss","scale":"Skala","padding":"Utfyllnad"},"tooltip":{"embedScene":"Skissdata kommer att sparas i den exporterade PNG/SVG-filen så att skissen kan återställas från den.\\nKommer att öka exporterad filstorlek."},"title":{"exportToPng":"Exportera till PNG","exportToSvg":"Exportera till SVG","copyPngToClipboard":"Kopiera PNG till urklipp"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Kopiera till urklipp"}},"encrypted":{"tooltip":"Dina skisser är krypterade från ände till ände så Excalidraws servrar kommer aldrig att se dem.","link":"Blogginlägg om kryptering från ände till ände i Excalidraw"},"stats":{"angle":"Vinkel","element":"Element","elements":"Element","height":"Höjd","scene":"Skiss","selected":"Valda","storage":"Lagring","title":"Statistik för nördar","total":"Totalt","version":"Version","versionCopy":"Klicka för att kopiera","versionNotAvailable":"Versionen är inte tillgänglig","width":"Bredd"},"toast":{"addedToLibrary":"Tillagd i biblioteket","copyStyles":"Kopierade stilar.","copyToClipboard":"Kopierad till urklipp.","copyToClipboardAsPng":"Kopierade {{exportSelection}} till urklipp som PNG\\n({{exportColorScheme}})","fileSaved":"Fil sparad.","fileSavedToFilename":"Sparad till {filename}","canvas":"canvas","selection":"markering","pasteAsSingleElement":"Använd {{shortcut}} för att klistra in som ett enda element,\\neller klistra in i en befintlig textredigerare","unableToEmbed":"Att bädda in denna webbadress är för närvarande inte tillåtet. Skapa en problemrapport på GitHub för att begära att webbadressen vitlistas.","unrecognizedLinkFormat":"Länken du bäddade in matchar inte det förväntade formatet. Försök klistra in \'embed\'-strängen som tillhandahålls av källwebbplatsen"},"colors":{"transparent":"Genomskinlig","black":"Svart","white":"Vit","red":"Röd","pink":"Rosa","grape":"Lila","violet":"Violett","gray":"Grå","blue":"Blå","cyan":"Turkos","teal":"Blågrön","green":"Grön","yellow":"Gul","orange":"Orange","bronze":"Brons"},"welcomeScreen":{"app":{"center_heading":"All data sparas lokalt i din webbläsare.","center_heading_plus":"Ville du gå till Excalidraw+ istället?","menuHint":"Exportera, inställningar, språk, ..."},"defaults":{"menuHint":"Exportera, inställningar och mer...","center_heading":"Förenklade. Diagram.","toolbarHint":"Välj ett verktyg & börja rita!","helpHint":"Genvägar & hjälp"}},"colorPicker":{"mostUsedCustomColors":"Mest frekvent använda anpassade färger","colors":"Färger","shades":"Nyanser","hexCode":"Hex-kod","noShades":"Inga nyanser tillgängliga för denna färg"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Exportera som bild","button":"Exportera som bild","description":"Exportera scendata som en bild från vilken du kan importera senare."},"saveToDisk":{"title":"Spara till disk","button":"Spara till disk","description":"Exportera scendata till en fil från vilken du kan importera senare."},"excalidrawPlus":{"title":"Excalidraw+","button":"Exportera till Excalidraw+","description":"Spara skissen till din Excalidraw+ arbetsyta."}},"modal":{"loadFromFile":{"title":"Läs in från fil","button":"Läs in från fil","description":"Laddar från en fil kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först med hjälp av ett av alternativen nedan."},"shareableLink":{"title":"Läs in från länk","button":"Ersätt mitt innehåll","description":"Inläsning av en extern ritning kommer ersätta ditt befintliga innehåll.

Du kan säkerhetskopiera din ritning först genom att använda ett av alternativen nedan."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js b/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js new file mode 100644 index 0000000..8e70eea --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/ta-IN-json-2fa1854af68381c61913.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[2404],{3952:function(e){e.exports=JSON.parse('{"labels":{"paste":"ஒட்டு","pasteAsPlaintext":"அலங்காரமின்றி ஒட்டு","pasteCharts":"விளக்கப்படங்களை ஒட்டு","selectAll":"எல்லாம் தேர்ந்தெடு","multiSelect":"உறுப்பைத் தெரிவில் சேர்","moveCanvas":"கித்தானை நகர்த்து","cut":"வெட்டு","copy":"நகலெடு","copyAsPng":"நகலகத்திற்கு PNG ஆக நகலெடு","copyAsSvg":"நகலகத்திற்கு SVG ஆக நகலெடு","copyText":"நகலகத்திற்கு உரையாக நகலெடு","bringForward":"முன்நோக்கி கொண்டுவா","sendToBack":"பின்னே அனுப்பு","bringToFront":"முன்னே கொண்டுவா","sendBackward":"பின்நோக்கி அனுப்பு","delete":"அழி","copyStyles":"ஒயில்களை நகலெடு","pasteStyles":"ஒயில்களை ஒட்டு","stroke":"கீறல்","background":"பின்புலம்","fill":"நிரப்பல்","strokeWidth":"கீறல் அகலம்","strokeStyle":"கீறல் ஒயில்","strokeStyle_solid":"திடமான","strokeStyle_dashed":"கோடிட்ட","strokeStyle_dotted":"புள்ளியிட்ட","sloppiness":"அசட்டுத்தனம்","opacity":"ஒளிபுகாவியல்பு","textAlign":"உரைச் சீரமைப்பு","edges":"விளிம்புகள்","sharp":"கூர்மை","round":"வட்டம்","arrowheads":"அம்புத்தலைகள்","arrowhead_none":"ஏதுமில்லை","arrowhead_arrow":"அம்பு","arrowhead_bar":"பட்டை","arrowhead_dot":"புள்ளி","arrowhead_triangle":"முக்கோணம்","fontSize":"எழுத்துரு அளவு","fontFamily":"எழுத்துரு குடும்பம்","addWatermark":"\\"எக்ஸ்கேலிட்ரா கொண்டு ஆனது\\"-ஐச் சேர்","handDrawn":"கையால்-வரைந்த","normal":"இயல்பு","code":"குறியீடு","small":"சிறிய","medium":"நடுத்தரமான","large":"பெரிய","veryLarge":"மிகப் பெரிய","solid":"திடமான","hachure":"மலைக்குறிக்கோடு","zigzag":"கோணல்மாணல்","crossHatch":"குறுக்குகதவு","thin":"மெல்லிய","bold":"பட்டை","left":"இடது","center":"மையம்","right":"வலது","extraBold":"கூடுதல் பட்டை","architect":"கட்டடக்கலைஞர்","artist":"கலைஞர்","cartoonist":"கேலிச்சித்திர ஓவியர்","fileTitle":"கோப்புப் பெயர்","colorPicker":"நிறத் தேர்வி","canvasColors":"கித்தானில் பயன்படுத்தப்பட்டது","canvasBackground":"கித்தான் பின்னணி","drawingCanvas":"கித்தான் வரைகிறது","layers":"அடுக்குகள்","actions":"செயல்கள்","language":"மொழி","liveCollaboration":"நேரடி கூட்டுப்பணி...","duplicateSelection":"நகலாக்கு","untitled":"தலைப்பற்றது","name":"பெயர்","yourName":"உங்கள் பெயர்","madeWithExcalidraw":"எக்ஸ்கேலிட்ரா கொண்டு ஆனது","group":"தேர்ந்ததை ஒன்றிணை","ungroup":"தேர்ந்ததைப் பிரி","collaborators":"கூட்டுப்பணியினர்","showGrid":"கட்டதைக் காட்டு","addToLibrary":"நூலகத்தில் சேர்","removeFromLibrary":"நூலகத்திலிருந்து நீக்கு","libraryLoadingMessage":"நூலகத்தை ஏற்றுகிறது…","libraries":"நூலகங்களை உலாவு","loadingScene":"காட்சியை ஏற்றுகிறது…","align":"சீரமை","alignTop":"மேலே சீரமை","alignBottom":"கீழே சீரமை","alignLeft":"இடதில் சீரமை","alignRight":"வலதில் சீரமை","centerVertically":"செங்குத்தாக மையப்படுத்து","centerHorizontally":"கிடைமட்டமாக மையப்படுத்து","distributeHorizontally":"கிடைமட்டமாக விநியோகி","distributeVertically":"செங்குத்தாக விநியோகி","flipHorizontal":"கிடைமட்டமாக புரட்டு","flipVertical":"செங்குத்தாக புரட்டு","viewMode":"பார்வை பயன்முறை","share":"பகிர்","showStroke":"கீறல் நிற எடுப்பானைக் காட்டு","showBackground":"பின்னணி நிற எடுப்பானைக் காட்டு","toggleTheme":"தோற்றத்தை நிலைமாற்று","personalLib":"தனக்குரிய நூலகம்","excalidrawLib":"எக்ஸ்கேலிட்ரா நூலகம்","decreaseFontSize":"எழுத்துரு அளவைக் குறை","increaseFontSize":"எழுத்துரு அளவை அதிகரி","unbindText":"உரையைப் பிணைவவிழ்","bindText":"உரையைக் கொள்கலனுக்குப் பிணை","createContainerFromText":"உரையைக் கொள்கலனுள் சுருட்டு","link":{"edit":"தொடுப்பைத் திருத்து","editEmbed":"","create":"தொடுப்பைப் படை","createEmbed":"","label":"தொடுப்பு","labelEmbed":"","empty":""},"lineEditor":{"edit":"தொடுப்பைத் திருத்து","exit":"வரி திருத்தியிலிருந்து வெளியேறு"},"elementLock":{"lock":"பூட்டு","unlock":"பூட்டவிழ்","lockAll":"எல்லாம் பூட்டு","unlockAll":"எல்லாம் பூட்டவிழ்"},"statusPublished":"வெளியிடப்பட்டது","sidebarLock":"பக்கப்பட்டையைத் திறந்தே வை","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":"கித்தானிலிருந்து நிறம் தேர்ந்தெடு"},"library":{"noItems":"இதுவரை உருப்படிகள் சேரக்கப்படவில்லை...","hint_emptyLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு, அல்லது கீழுள்ள பொது களஞ்சியத்திலிருந்து நூலகத்தை நிறுவு.","hint_emptyPrivateLibrary":"கித்தானிலுள்ள உருப்படியை இங்குச் சேர்க்க தேர்ந்தெடு."},"buttons":{"clearReset":"கித்தானை அகரமாக்கு","exportJSON":"கோப்புக்கு ஏற்றுமதிசெய்","exportImage":"படத்தை ஏற்றுமதிசெய்...","export":"இதில் சேமி...","copyToClipboard":"நகலகத்திற்கு நகலெடு","save":"தற்போதைய கோப்புக்குச் சேமி","saveAs":"இப்படி சேமி","load":"திற","getShareableLink":"பகிரக்கூடிய தொடுப்பைப் பெறு","close":"மூடு","selectLanguage":"மொழியைத் தேர்ந்தெடு","scrollBackToContent":"உருட்டி உள்ளடக்கத்துக்குத் திரும்பு","zoomIn":"பெரிதாக்கு","zoomOut":"சிறிதாக்கு","resetZoom":"உருவளவை அகரமாக்கு","menu":"சிறுபட்டி","done":"முடிந்தது","edit":"திருத்து","undo":"செயல்தவிர்","redo":"மீண்டும்செய்","resetLibrary":"நூலகத்தை அகரமாக்கு","createNewRoom":"புதிய அறையை உருவாக்கு","fullScreen":"முழுத் திரை","darkMode":"கருமை பயன்முறை","lightMode":"வெளிர்ந்த பயன்முறை","zenMode":"ஜென் பயன்முறை","objectsSnapMode":"","exitZenMode":"ஜென் பயன்முறையை விலகு","cancel":"ரத்துசெய்","clear":"துடை","remove":"நீக்கு","embed":"","publishLibrary":"பிரசுரி","submit":"சமர்ப்பி","confirm":"உறுதிசெய்","embeddableInteractionButton":""},"alerts":{"clearReset":"இது முழு கித்தானையும் துடைக்கும். நீங்கள் உறுதியா?","couldNotCreateShareableLink":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை.","couldNotCreateShareableLinkTooBig":"பகிரக்கூடிய தொடுப்பை உருவாக்க முடியவில்லை: காட்சி மிகப்பெரிதாக உள்ளது","couldNotLoadInvalidFile":"செல்லாத கோப்பை ஏற்ற முடியவில்லை","importBackendFailed":"தேகத்திலிருந்து இறக்குமதி தோல்வி.","cannotExportEmptyCanvas":"காலியான கித்தானை ஏற்றுமதிசெய்ய முடியாது.","couldNotCopyToClipboard":"நகலகத்திற்கு நகலெடுக்க முடியவில்லை.","decryptFailed":"தரவை மறைநீக்க முடியவில்லை.","uploadedSecurly":"பதிவேற்றம் இருமுனை மறையாகத்தால் பாதுகாக்கப்பட்டுள்ளது, எனவே எக்ஸ்கேலிட்ரா சேவையகமும் மூன்றாம் தரப்பினரும் உள்ளடக்கத்தை வாசிக்கமுடியாது.","loadSceneOverridePrompt":"வெளிப்புறச்சித்திரமேற்றல் இருக்கிற உள்ளடக்கத்தை இடங்கொள்ளும். தொடர விருப்பமா?","collabStopOverridePrompt":"அமர்வை நிறுத்துதல் முன்னர் அகமாக தேக்கிய உம் சித்திரத்தை மேலெழுதும். நீங்கள் உறுதியா?\\n\\n(உம் அக சித்திரத்தை வைக்கவேண்டுமெனில், சும்மா உலாவி தாவலை மூடுக அதற்குபதிலாக.)","errorAddingToLibrary":"உருப்படியை நூலகத்தில் சேர்க்க இயலா","errorRemovingFromLibrary":"உருப்படியை நூலகத்திலிருந்து நீக்க இயலா","confirmAddLibrary":"இதனால் {{numShapes}} வடிவம்(கள்) உம் நூலகத்தில் சேரும். நீங்கள் உறுதியா?","imageDoesNotContainScene":"இப்படத்தில் காட்சி தரவு ஏதும் இருப்பதுபோல் தெரியவில்லை. ஏற்றுமதியின்போது காட்சி உட்பதிதலை இயக்கினீரா?","cannotRestoreFromImage":"இப்படக்கோப்பிலிருந்து காட்சி மீட்டெடுக்கப்பட முடியாது","invalidSceneUrl":"வழங்கப்பட்ட உரலியிலிருந்து காட்சியை இறக்கவியலா. இது தவறான வடிவத்தில் உள்ளது, அ செல்லத்தக்க எக்ஸ்கேலிட்ரா JSON தரவைக் கொண்டில்லை.","resetLibrary":"இது உங்கள் நுலகத்தைத் துடைக்கும். நீங்கள் உறுதியா?","removeItemsFromsLibrary":"{{count}} உருப்படி(கள்)-ஐ உம் நூலகத்திலிருந்து அழிக்கவா?","invalidEncryptionKey":"மறையாக்க விசை 22 வரியுருக்கள் கொண்டிருக்கவேண்டும். நேரடி கூட்டுப்பணி முடக்கப்பட்டது.","collabOfflineWarning":"இணைய இணைப்பு இல்லை.\\nஉமது மாற்றங்கள் சேமிக்கப்படா!"},"errors":{"unsupportedFileType":"ஆதரிக்கப்படா கோப்பு வகை.","imageInsertError":"படத்தைப் புகுத்தவியலா. பிறகு மீண்டும் முயலவும்...","fileTooBig":"கோப்பு மிகப்பெரிது. அனுமதிக்கப்பட்ட அதிகபட்ச அளவு {{maxSize}}.","svgImageInsertError":"எஸ்விஜி படத்தைப் புகுத்தவியலா. எஸ்விஜியின் மார்க்அப் செல்லாததாக தெரிகிறது.","failedToFetchImage":"","invalidSVGString":"செல்லாத SVG.","cannotResolveCollabServer":"கூட்டுப்பணிச் சேவையகத்துடன் இணைக்க முடியவில்லை. பக்கத்தை மீளேற்றி மீண்டும் முயலவும்.","importLibraryError":"நூலகத்தை ஏற்ற முடியவில்லை","collabSaveFailed":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை. சிக்கல்கள் நீடித்தால், உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","collabSaveFailed_sizeExceeded":"பின்முனை தரவுத்தளத்தில் சேமிக்க முடியவில்லை, கித்தான் மிகப்பெரிதாகத் தெரிகிறது. உமது வேலைகளை இழக்காமலிருப்பதை உறுதிசெய்ய உமது கோப்பை உள்ளகத்தில் சேமிக்க வேண்டும்.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"தெரிவு","image":"படத்தைப் புகுத்து","rectangle":"செவ்வகம்","diamond":"வைரம்","ellipse":"நீள்வட்டம்","arrow":"அம்பு","line":"வரி","freedraw":"வரை","text":"உரை","library":"நூலகம்","lock":"தேர்ந்த கருவியை வரைந்த பின்பும் வைத்திரு","penMode":"பேனா - தடுப்பு தொடுதல்","link":"தேர்தெடுத்த வடிவத்திற்குத் தொடுப்பைச் சேர்/ புதுப்பி","eraser":"அழிப்பி","frame":"சட்டகம் கருவி","embeddable":"","laser":"","hand":"கை (பார்வை நகர்கும் கருவி)","extraTools":"மற்ற கருவிகள்"},"headings":{"canvasActions":"கித்தான் செயல்கள்","selectedShapeActions":"தேர்ந்த வடிவம் செயல்கள்","shapes":"வடிவங்கள்"},"hints":{"canvasPanning":"","linearElement":"பல புள்ளிகளைத் துவக்க சொடுக்கு, ஒற்றை வரிக்கு பிடித்திழு","freeDraw":"சொடுக்கி பிடித்திழு, முடித்ததும் விடுவி","text":"துணுக்குதவி: தெரிவு கருவி கொண்டு எங்காவது இரு-சொடுக்கி உரையைச் சேர்க்கலாம்","embeddable":"","text_selected":"உரையைத் திருத்த இரு-சொடுக்கு அ ENTERஐ அழுத்து","text_editing":"திருத்துவதை முடிக்க Escape அ CtrlOrCmd+ENTERஐ அழுத்து","linearElementMulti":"கடைசி புள்ளியில் சொடுக்கு அ முடிக்க Escape அ Enter அழுத்து","lockAngle":"SHIFTஐ அழுத்திப்பிடித்து கோணத்தை வற்புறுத்தலாம்","resize":"மறுஅளவிடுகையில் SHIFTஐ அழுத்திப்பிடித்து விகிதசமத்தை வற்புறுத்தலாம்,\\nமையத்திலிருந்து மறுஅளவிட ALTஐ அழுத்திப்பிடி","resizeImage":"SHIFTஐ நீண்டழுத்தி கட்டற்று அளவுமாற்றலாம்,\\nமையத்திலிருந்து அளவுமாற்ற ALTஐ நீண்டழுத்துக","rotate":"சுழற்றுகையில் SHIFTஐ அழுத்திப்பிடித்து கோணங்களை வற்புறுத்தலாம்","lineEditor_info":"","lineEditor_pointSelected":"புள்ளி(கள்)ஐ நீக்க Deleteஐ அழுத்து,\\nநகலாக்க CtrlOrCmd+D, அ நகர்த்த பிடித்திழு","lineEditor_nothingSelected":"திருத்த புள்ளியைத் தேர்ந்தெடு (பலவற்றை தேர SHIFTஐ அழுத்திப்பிடி),\\nஅ புதிய புள்ளிகளைச் சேர்க்க Altஐ அழுத்திப்பிடித்துச் சொடுக்கு","placeImage":"படத்தை வைக்கச் சொடுக்கு, அ கைமுறையாக அளவு அமைக்க சொடுக்கி பிடித்திழு","publishLibrary":"உம் சொந்த நூலகத்தைப் பிரசுரி","bindTextToElement":"உரையைச் சேர்க்க enterஐ அழுத்து","deepBoxSelect":"ஆழ்ந்துத் தேரவும் பிடித்திழுத்தலைத் தவிர்க்கவும் CtrlOrCmdஐ அழுத்திப்பிடி","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"முன்னோட்டம் காட்ட இயலவில்லை","canvasTooBig":"கித்தான் மிகப்பெரிதாக இருக்கலாம்.","canvasTooBigTip":"துணுக்குதவி: தூரத்திலுள்ள உறுப்புகளைப் நெருக்கமாக நகர்த்தப்பார்."},"errorSplash":{"headingMain":"பிழையைச் சந்தித்தீரா. முயலவும் ","clearCanvasMessage":"மீண்டுமேற்றல் வேலைசெய்யவிட்டால், முயற்சி ","clearCanvasCaveat":" இது வேலையை இழக்கக்கூடும் ","trackedToSentry":"இனங்காணியில் பிழை {{eventId}} எங்கள் இயங்குதளத்தில் தடமறியப்பட்டது.","openIssueMessage":"பிழையில் உம் காட்சி தகவலை உள்ளடக்காமலிருக்க நாங்கள் மிக எச்சரிக்கையாக இருந்தோம். உம் காட்சி தனிப்பட்டதில்லையெனில், பின்தொடர்வதற்கு பரிசீலிக்கவும் எங்கள் கீழுள்ள தகவலை நகலெடுத்து ஒட்டி GitHub சிக்கலுள் உள்ளடக்கவும்.","sceneContent":"காட்சி உள்ளடக்கம்:"},"roomDialog":{"desc_intro":"உம்முடன் கூட்டுப்பணிசெய்ய மக்களை தற்போதைய காட்சிக்கு அழைப்பிடலாம்.","desc_privacy":"வருந்தாதீர், அமர்வு இருமுனை மறையகத்தைப் பயன்படுத்துகிறது, ஆக நீங்கள் வரைவது எதுவும் தனிப்பட்டதாக இருக்கும். எங்கள் சேவையகத்தால் கூட நீங்கள் என்ன செய்ததைப் பார்க்கவியலாது.","button_startSession":"அமர்வைத் துவக்கு","button_stopSession":"அமர்வை நிறுத்து","desc_inProgressIntro":"நேரடி-கூட்டுப்பணி அமர்வு தற்போது செயலிலுள்ளது.","desc_shareLink":"கூட்டுப்பணிபுரிய விரும்பும் எவருனும் இத்தொடுப்பைப் பகிர்க:","desc_exitSession":"அமர்வை நிறுத்தல் உம்மை அறையிலிருந்து துண்டிக்கும், ஆனால் காட்சியுடன் தொடர்ந்து பணிபுரிய உம்மாலியலும், அகமாக. இது பிற மக்களைப் பாதிக்காதென்பதைக் குறி, மற்றும் அவர்களாலவர்களுடைய பதிப்பில் இன்னும் கூட்டுப்பணிபுரியவியலும்.","shareTitle":"எக்ஸ்கேலிட்ராவில் நேரடி கூட்டுப்பணி அமர்வில் சேர்"},"errorDialog":{"title":"பிழை"},"exportDialog":{"disk_title":"வட்டில் சேமி","disk_details":"காட்சித் தரவை நீங்கள் பின்னர் இறக்குமதி செய்யக்கூடிய ஒரு கோப்பிற்கு ஏற்றுமதிசெய்க.","disk_button":"கோப்பில் சேமி","link_title":"பகிரக்கூடிய தொடுப்பு","link_details":"வாசிக்க-மட்டும் தொடுப்பாக ஏற்றுமதிசெய்.","link_button":"தொடுப்புக்கு ஏற்றுமதிசெய்","excalidrawplus_description":"காட்சியை உன் எக்ஸ்கேலிட்ரா பணியிடத்தில் சேமி.","excalidrawplus_button":"ஏற்றுமதி","excalidrawplus_exportError":"இத்தருணத்தில் எக்ஸ்கேலிட்ரா+ க்கு ஏற்றுமதிசெய்ய முடியவில்லை..."},"helpDialog":{"blog":"எமது வலைப்பூவை வாசி","click":"சொடுக்கு","deepSelect":"ஆழ்ந்துத் தேர்","deepBoxSelect":"பெட்டியினுள் ஆழ்ந்துத் தேர், மற்றும் பிடித்திழுத்தலைத் தவிர்","curvedArrow":"வளைந்த அம்பு","curvedLine":"வளைந்த வரி","documentation":"ஆவணமாக்கல்","doubleClick":"இரு-சொடுக்கு","drag":"பிடித்திழு","editor":"திருத்தி","editLineArrowPoints":"","editText":"","github":"சிக்கலைக் கண்டீரா? சமர்ப்பி","howto":"எங்கள் கையேடுகளைப் பின்பற்றுக","or":"அ","preventBinding":"அம்பு பிணைதலைத் தவிர்","tools":"கருவிகள்","shortcuts":"விசைப்பலகை குறுக்குவழிகள்","textFinish":"திருத்துதலை முடி (உரை திருத்தி)","textNewLine":"புதிய வரியைச் சேர் (உரை திருத்தி)","title":"உதவி","view":"பார்","zoomToFit":"அனைத்துறுப்புகளும் பொருந்தும்படி விரிவாக்கு","zoomToSelection":"தெரிவுக்கு விரிவாக்கு","toggleElementLock":"தேர்ந்தெடுப்பைப் பூட்டு/பூட்டவிழ்","movePageUpDown":"மேலே/கீழே நகர்த்தவும்","movePageLeftRight":"இடது/வலது பக்கம் நகர்த்தவும்"},"clearCanvasDialog":{"title":"கித்தானைத் துடை"},"publishDialog":{"title":"நூலகத்தைப் பிரசுரி","itemName":"உருப்படியின் பெயர்","authorName":"ஆசிரியர் பெயர்","githubUsername":"GitHub பயனர்பெயர்","twitterUsername":"டுவிட்டர் பயனர்பெயர்","libraryName":"நூலக பெயர்","libraryDesc":"நூலக விவரிப்பு","website":"வலைத்தளம்","placeholder":{"authorName":"உம் பெயர் அ பயனர்பெயர்","libraryName":"உம் நூலகத்தின் பெயர்","libraryDesc":"உம் நூலகத்தின் விவரிப்பு இதன் பயன்பாட்டை மக்கள் புரிந்துகொள்ளவுதவ","githubHandle":"GitHub கைப்பிடி (விரும்பினால்), ஆதலால் நீங்கள் நூலகத்தை மதிப்பாய்விற்காக சமர்ப்பித்தவுடன் திருத்தமுடியும்","twitterHandle":"டுவிட்டர் பயனர்பெயர் (விரும்பினால்), ஆதலால் டுவிட்டரில் முன்னிறுத்தும்போது யாமெவரைப் புகழ்வதென்றறிவோம்","website":"உமக்குரிய வலைத்தளத்திற்கு அ வேறெங்கிற்குமான தொடுப்பு (விரும்பினால்)"},"errors":{"required":"தேவைப்டுகிறது","website":"செல்லத்தக்க உரலியை உள்ளிடு"},"noteDescription":"உம் நூலகத்தைச் சமர்ப்பி உள்ளடக்குவதற்கு பொது நூலக களஞ்சியத்தில்பிற மக்களவர்களின் சித்திரங்களில் பயன்படுத்த.","noteGuidelines":"நூலகம் முதலில் கைமுறையாக ஒப்புக்கொள்ளப்படவேண்டும். வாசிக்கவும் வழிகாட்டுதல்களைச் சமர்ப்பிக்கும் முன்பு. கோரப்பட்டால் தொடர்புகொள்ள மற்றும் மாற்றங்கள் செய்ய உமக்கொரு GitHub கணக்கு தேவை, ஆனால் அது கண்டிப்பாக தேவையல்ல.","noteLicense":"சமர்ப்பிப்பதனால், நூலகம் இதனடியில் பிரசரிக்கப்பட ஏற்கிறீர்கள் MIT உரிமம், சுருக்கமாக எவருமிதைப் வரையறையின்றி பயன்படுத்தலாமென குறிக்கிறது.","noteItems":"வடிக்கட்டக்கூடியதாகவிருக்க ஒவ்வொரு நூலகவுருப்படிக்கும் சொந்த பெயர் இருக்கவேண்டும். பின்வரும் நூலகவுருப்படிகள் உள்ளடக்கப்படும்:","atleastOneLibItem":"ஆரம்பிக்க ஒரு நூலக உருப்படியையாவது தேர்ந்தெடுக்கவும்","republishWarning":""},"publishSuccessDialog":{"title":"நூலகம் சமர்ப்பிக்கப்பட்டது","content":"நன்றி {{authorName}}. உமது நூலகம் மதிப்பாய்விற்காக சமர்ப்பிக்கப்பட்டது. நிலையை நீங்கள் தடமறியலாம்இங்கே"},"confirmDialog":{"resetLibrary":"நூலகத்தை அகரமாக்கு","removeItemsFromLib":"நூலகத்திலிருந்து தேர்ந்தெடுத்த உருப்படிகளை நீக்கு"},"imageExportDialog":{"header":"படத்தை ஏற்றுமதிதல","label":{"withBackground":"பின்னணி","onlySelected":"தேர்ந்ததை மட்டும்","darkMode":"இருள் பயன்முறை","embedScene":"காட்சியை உட்பொதி","scale":"அளவுகோல்","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"PNGக்கு ஏற்றுமதிசெய்","exportToSvg":"SVGக்கு ஏற்றுமதிசெய்","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":""}},"encrypted":{"tooltip":"உம் சித்திரங்கள் இருமுனை மறையாக்கம் செய்யப்பட்டவையாதலால் எக்ஸ்கேலிட்ராவின் சேவையகங்கள் அவற்றை ஒருபோதும் பார்க்கா.","link":"எக்ஸ்கேலிட்ராவில் இருமுனை மறையாக்கம் மீதான வலைப்பூ இடுகை"},"stats":{"angle":"கோணம்","element":"உறுப்பு","elements":"உறுப்புகள்","height":"உயரம்","scene":"காட்சி","selected":"தேர்ந்தவை","storage":"சேமிப்பகம்","title":"மேதாவிகளுக்கான புள்ளிவிவரங்கள்","total":"மொத்தம்","version":"பதிப்பு","versionCopy":"நகலெடுக்க சொடுக்கு","versionNotAvailable":"பதிப்பு கிடைக்கவில்லை","width":"அகலம்"},"toast":{"addedToLibrary":"நூலகத்தில் சேர்க்கப்பட்டது","copyStyles":"ஒயில்கள் நகலெடுக்கப்பட்டன.","copyToClipboard":"நகலகத்திற்கு நகலெடுக்கப்பட்டது.","copyToClipboardAsPng":"{{exportSelection}}-ஐ நகலகத்திற்கு PNG ஆக நகலெடுத்தது\\n({{exportColorScheme}})","fileSaved":"கோப்பு சேமிக்கப்பட்டது.","fileSavedToFilename":"{filename}-க்கு சேமிக்கப்பட்டது","canvas":"கித்தான்","selection":"தெரிவு","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"ஒளிபுகுத்தன்மை","black":"கருப்பு","white":"வெள்ளை","red":"சிவப்பு","pink":"இளஞ்சிவப்பு","grape":"திராட்சை","violet":"ஊதா","gray":"சாம்பல்","blue":"நீலம்","cyan":"மயில்நிறம்","teal":"டீல்","green":"பச்சை","yellow":"மஞ்சள்","orange":"ஆரஞ்சு","bronze":"வெண்கலம்"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"எளிமையாக வரைபடங்கள் உருவாக்க!","toolbarHint":"கருவியைத் தேர்ந்தெடு & வரை!","helpHint":"குறுக்குவழிகள் & உதவி"}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js b/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js new file mode 100644 index 0000000..db32fa1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/th-TH-json-9a390d3cc7a7a6226b63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[537],{2596:function(e){e.exports=JSON.parse('{"labels":{"paste":"วาง","pasteAsPlaintext":"วางโดยไม่มีการจัดรูปแบบ","pasteCharts":"วางแผนภูมิ","selectAll":"เลือกทั้งหมด","multiSelect":"","moveCanvas":"","cut":"ตัด","copy":"คัดลอก","copyAsPng":"คัดลองไปยังคลิปบอร์ดเป็น PNG","copyAsSvg":"คัดลองไปยังคลิปบอร์ดเป็น SVG","copyText":"คัดลองไปยังคลิปบอร์ดเป็นข้อความ","bringForward":"นำขึ้นข้างบน","sendToBack":"ย้ายไปข้างล่าง","bringToFront":"นำขึ้นข้างหน้า","sendBackward":"ย้ายไปข้างหลัง","delete":"ลบ","copyStyles":"คัดลอกรูปแบบ","pasteStyles":"วางรูปแบบ","stroke":"เส้นขอบ","background":"พื้นหลัง","fill":"เติมสี","strokeWidth":"น้ำหนักเส้นขอบ","strokeStyle":"รูปแบบเส้น","strokeStyle_solid":"เส้นทึบ","strokeStyle_dashed":"เส้นประ","strokeStyle_dotted":"จุด","sloppiness":"ความเลอะเทอะ","opacity":"ความทึบแสง","textAlign":"จัดข้อความ","edges":"ขอบ","sharp":"","round":"","arrowheads":"หัวลูกศร","arrowhead_none":"ไม่มี","arrowhead_arrow":"ลูกศร","arrowhead_bar":"แถบ","arrowhead_dot":"จุด","arrowhead_triangle":"สามเหลี่ยม","fontSize":"ขนาดตัวอักษร","fontFamily":"แบบตัวอักษร","addWatermark":"เพิ่มลายน้ำ \\"สร้างด้วย Excalidraw\\"","handDrawn":"ลายมือ","normal":"ปกติ","code":"โค้ด","small":"เล็ก","medium":"กลาง","large":"ใหญ่","veryLarge":"ใหญ่มาก","solid":"","hachure":"","zigzag":"","crossHatch":"","thin":"บาง","bold":"หนา","left":"ซ้าย","center":"กลาง","right":"ขวา","extraBold":"หนาพิเศษ","architect":"","artist":"ศิลปิน","cartoonist":"","fileTitle":"ชื่อไฟล์","colorPicker":"เลือกสีที่กำหนดเอง","canvasColors":"","canvasBackground":"","drawingCanvas":"","layers":"","actions":"การกระทำ","language":"ภาษา","liveCollaboration":"","duplicateSelection":"ทำสำเนา","untitled":"ไม่มีชื่อ","name":"ชื่อ","yourName":"ชื่อของคุณ","madeWithExcalidraw":"","group":"จัดกลุ่ม","ungroup":"ยกเลิกการจัดกลุ่ม","collaborators":"","showGrid":"แสดงเส้นตาราง","addToLibrary":"เพิ่มไปในคลัง","removeFromLibrary":"นำออกจากคลัง","libraryLoadingMessage":"กำลังโหลดคลัง...","libraries":"","loadingScene":"กำลังโหลดฉาก","align":"จัดตำแหน่ง","alignTop":"จัดชิดด้านบน","alignBottom":"จัดชิดด้านล่าง","alignLeft":"จัดชิดซ้าย","alignRight":"จัดชิดขวา","centerVertically":"กึ่งกลางแนวตั้ง","centerHorizontally":"กึ่งกลางแนวนอน","distributeHorizontally":"กระจายแนวนอน","distributeVertically":"กระจายแนวตั้ง","flipHorizontal":"พลิกแนวนอน","flipVertical":"พลิกแนวตั้ง","viewMode":"โหมดมุมมอง","share":"แชร์","showStroke":"","showBackground":"","toggleTheme":"สลับธีม","personalLib":"คลังของฉัน","excalidrawLib":"คลังของ Excalidraw","decreaseFontSize":"ลดขนาดตัวอักษร","increaseFontSize":"เพิ่มขนาดตัวอักษร","unbindText":"ยกเลิกการผูกติด","bindText":"","createContainerFromText":"","link":{"edit":"แก้ไขลิงก์","editEmbed":"แก้ไขลิงค์และการฝัง","create":"สร้างลิงค์","createEmbed":"สร้างลิงค์และการฝัง","label":"ลิงค์","labelEmbed":"ลิงค์และการฝัง","empty":"ไม่ได้ใส่ลิงค์"},"lineEditor":{"edit":"แก้ไขเส้น","exit":""},"elementLock":{"lock":"ล็อก","unlock":"ปลดล็อก","lockAll":"ล็อกทั้งหมด","unlockAll":"ปลดล็อกทั้งหมด"},"statusPublished":"เผยแพร่","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"ยังไม่มีรายการที่เพิ่มเข้าไปได้","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"รีเซ็ทผืนผ้าใบ","exportJSON":"ส่งออกไปยังไฟล์","exportImage":"ส่งออกเป็นรูปภาพ","export":"บันทึกไปยัง","copyToClipboard":"คัดลอกไปยังคลิปบอร์ด","save":"บันทึกเป็นไฟล์ปัจจุบัน","saveAs":"บันทึกเป็น","load":"เปิด","getShareableLink":"สร้างลิงค์ที่แชร์ได้","close":"ปิด","selectLanguage":"เลือกภาษา","scrollBackToContent":"เลื่อนกลับไปด้านบน","zoomIn":"ซูมเข้า","zoomOut":"ซูมออก","resetZoom":"รีเซ็ตการซูม","menu":"เมนู","done":"เสร็จสิ้น","edit":"แก้ไข","undo":"เลิกทำ","redo":"ทำซ้ำ","resetLibrary":"รีเซ็ตคลัง","createNewRoom":"สร้างห้องใหม่","fullScreen":"เต็มหน้าจอ","darkMode":"โหมดกลางคืน","lightMode":"โหมดกลางวัน","zenMode":"โหมด Zen","objectsSnapMode":"","exitZenMode":"ออกจากโหมด Zen","cancel":"ยกเลิก","clear":"เคลียร์","remove":"ลบ","embed":"สลับการฝัง","publishLibrary":"เผยแพร่","submit":"ตกลง","confirm":"ยืนยัน","embeddableInteractionButton":"คลิกเพื่อปฏิสัมพันธ์"},"alerts":{"clearReset":"","couldNotCreateShareableLink":"ไม่สามารถสร้างลิงค์ได้","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"ไม่สามารถโหลดไฟล์ที่ผิดพลาดได้","importBackendFailed":"เกิดข้อผิดพลาดจากการนำเข้าจากระบบหลังบ้าน","cannotExportEmptyCanvas":"ไม่สามารถนำออกจากผืนผ้าใบที่ว่างเปล่าได้","couldNotCopyToClipboard":"ไม่สามารถคัดลอกไปยังคลิปบอร์ดได้","decryptFailed":"ไม่สามารถถอดรหัสข้อมูลได้","uploadedSecurly":"การอัพโหลดได้ถูกเข้ารหัสแบบ end-to-end หมายความว่าเซิร์ฟเวอร์ของ Excalidraw และบุคคลอื่นไม่สามารถอ่านข้อมูลได้","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"ไม่สามารถเพิ่มรายการเข้าไปในคลังได้","errorRemovingFromLibrary":"ไม่สามารถลบรายการนี้ออกจากคลังได้","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"ไม่รองรับชนิดของไฟล์นี้","imageInsertError":"ไม่สามารถเพิ่มรูปภาพได้ ลองอีกครั้งในภายหลัง","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"ไฟล์ SVG ผิดพลาด","cannotResolveCollabServer":"ไม่สามารถเชื่อต่อกับ collab เซิร์ฟเวอร์ได้ โปรดลองโหลดหน้านี้ใหม่และลองอีกครั้ง","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"การเพิ่มองค์ประกอบที่ฝังยังไม่สามารถเพิ่มเข้าไปในไลบลารีได้","image":"การสนับสนุนสำหรับเพิ่มรูปภาพลงในไลบลารีจะมาในเร็ว ๆ นี้"}},"toolBar":{"selection":"","image":"","rectangle":"สี่เหลี่ยมผืนผ้า","diamond":"","ellipse":"วงรี","arrow":"ลูกศร","line":"","freedraw":"","text":"ข้อความ","library":"คลัง","lock":"","penMode":"","link":"","eraser":"ยางลบ","frame":"","embeddable":"ฝังเว็บ","laser":"","hand":"","extraTools":"เครื่องมืออื่นๆ"},"headings":{"canvasActions":"","selectedShapeActions":"","shapes":"รูปร่าง"},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"คลิกและลากเพื่อสร้างการฝังสำหรับเว็บไซต์","text_selected":"คลิกสองครั้งหรือกด ENTER เพื่อแก้ไขข้อความ","text_editing":"กดปุ่ม Esc หรือกด Ctrl, Cmd + Enter เพื่อเสร็จการแก้ไข","linearElementMulti":"คลิกที่จุดสุดท้ายหรือกด Escape หรือ Enter เพื่อเสร็จสิ้น","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"กดปุ่ม Delete เพื่อลบจุด\\nกด Ctrl หรือ Cmd + D เพื่อทำซ้ำหรือลากเพื่อเคลื่อนย้าย","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"","canvasTooBig":"","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"ถ้าโหลดไม่ได้ ให้ลอง ","clearCanvasCaveat":"","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"เริ่มเซสชัน","button_stopSession":"หยุดเซสชัน","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":"ไม่สามารถส่งออกไปที่ Excalidraw+ ได้ในขณะนี้"},"helpDialog":{"blog":"อ่านบล็อกของพวกเรา","click":"คลิก","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"ดับเบิลคลิก","drag":"ลาก","editor":"","editLineArrowPoints":"","editText":"แก้ไขข้อความ / เพิ่มข้อความ","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"ช่วยเหลือ","view":"ดู","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":"ย้ายหน้าไปด้าน ซ้าย/ขวา"},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"ชื่อเจ้าของ","githubUsername":"ชื่อผู้ใช้ GitHub","twitterUsername":"ชื่อผู้ใช้ Twitter","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"โหมดกลางคืน","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"ส่งออกไปเป็น SVG","exportToSvg":"ส่งออกไปเป็น SVG","copyPngToClipboard":"คัดลอก PNG ไปยังคลิปบอร์ด"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"คัดลอกไปยังคลิปบอร์ด"}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"ฟ้าน้ำทะเล","green":"เขียว","yellow":"เหลือง","orange":"ส้ม","bronze":"ทองแดง"},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js b/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js new file mode 100644 index 0000000..7e7473a --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/tr-TR-json-fc9b16e9dc2be2660439.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4977],{7315:function(e){e.exports=JSON.parse('{"labels":{"paste":"Yapıştır","pasteAsPlaintext":"Düz metin olarak yapıştır","pasteCharts":"Grafikleri yapıştır","selectAll":"Tümünü seç","multiSelect":"Seçime öge ekle","moveCanvas":"Tuvali taşı","cut":"Kes","copy":"Kopyala","copyAsPng":"Panoya PNG olarak kopyala","copyAsSvg":"Panoya SVG olarak kopyala","copyText":"Panoya metin olarak kopyala","bringForward":"Bir öne getir","sendToBack":"Arkaya gönder","bringToFront":"En öne getir","sendBackward":"Bir geriye gönder","delete":"Sil","copyStyles":"Stilleri kopyala","pasteStyles":"Stilleri yapıştır","stroke":"Vurgu","background":"Arka plan","fill":"Doldur","strokeWidth":"Kontur genişliği","strokeStyle":"Kontur stili","strokeStyle_solid":"Dolu","strokeStyle_dashed":"Kesik çizgili","strokeStyle_dotted":"Noktalı","sloppiness":"Üstün körülük","opacity":"Opaklık","textAlign":"Metin hizala","edges":"Kenarlar","sharp":"Keskin","round":"Yuvarlak","arrowheads":"Ok uçları","arrowhead_none":"Yok","arrowhead_arrow":"Ok","arrowhead_bar":"Çizgi","arrowhead_dot":"Nokta","arrowhead_triangle":"Üçgen","fontSize":"Yazı tipi boyutu","fontFamily":"Yazı tipi ailesi","addWatermark":"\\"Excalidraw ile yapıldı\\" yazısını ekle","handDrawn":"El-yazısı","normal":"Normal","code":"Kod","small":"Küçük","medium":"Orta","large":"Büyük","veryLarge":"Çok geniş","solid":"Dolu","hachure":"Taralı","zigzag":"Zikzak","crossHatch":"Çapraz-taralı","thin":"İnce","bold":"Kalın","left":"Sol","center":"Ortala","right":"Sağ","extraBold":"Ekstra kalın","architect":"Mimar","artist":"Sanatçı","cartoonist":"Karikatürist","fileTitle":"Dosya adı","colorPicker":"Renk seçici","canvasColors":"Tuvalin üzerinde kullanıldı","canvasBackground":"Tuval arka planı","drawingCanvas":"Çizim tuvali","layers":"Katmanlar","actions":"Eylemler","language":"Dil","liveCollaboration":"Canlı ortak çalışma alanı...","duplicateSelection":"Çoğalt","untitled":"Adsız","name":"İsim","yourName":"İsminiz","madeWithExcalidraw":"Excalidraw ile yapıldı","group":"Seçimi grup yap","ungroup":"Seçilen grubu dağıt","collaborators":"Ortaklar","showGrid":"Izgarayı göster","addToLibrary":"Kütüphaneye ekle","removeFromLibrary":"Kütüphaneden kaldır","libraryLoadingMessage":"Kütüphane yükleniyor…","libraries":"Kütüphanelere gözat","loadingScene":"Sahne yükleniyor…","align":"Hizala","alignTop":"Yukarı hizala","alignBottom":"Aşağı hizala","alignLeft":"Sola hizala","alignRight":"Sağa hizala","centerVertically":"Dikeyde ortala","centerHorizontally":"Yatayda ortala","distributeHorizontally":"Yatay dağıt","distributeVertically":"Dikey dağıt","flipHorizontal":"Yatay döndür","flipVertical":"Dikey döndür","viewMode":"Görünüm modu","share":"Paylaş","showStroke":"Kontur için renk seçiciyi göster","showBackground":"Arkaplan için renk seçiciyi göster","toggleTheme":"Temayı etkinleştir/devre dışı bırak","personalLib":"Kişisel Kitaplık","excalidrawLib":"Excalidraw Kitaplığı","decreaseFontSize":"Yazı Tipi Boyutunu Küçült","increaseFontSize":"Yazı Tipi Boyutunu Büyült","unbindText":"Metni çöz","bindText":"Metni taşıyıcıya bağla","createContainerFromText":"Metni bileşen içinde sar","link":{"edit":"Bağlantıyı düzenle","editEmbed":"Bağlantıyı düzenle & yerleştir","create":"Bağlantı oluştur","createEmbed":"Bağlantı oluştur & yerleştir","label":"Bağlantı","labelEmbed":"Bağlantı & yerleştirme","empty":"Herhangi bir bağlantı oluşturulmadı"},"lineEditor":{"edit":"Çizgiyi düzenle","exit":"Çizgi düzenlemeden çık"},"elementLock":{"lock":"Kilitle","unlock":"Kilidi Kaldır","lockAll":"Hepsini kilitle","unlockAll":"Hepsinin kilidini kaldır"},"statusPublished":"Yayınlandı","sidebarLock":"Kenar çubuğu açık kalsın","selectAllElementsInFrame":"Çerçevedeki tüm bileşenleri seç","removeAllElementsFromFrame":"Çerçevedeki tüm bileşenleri sil","eyeDropper":"Tuvalden renk seç"},"library":{"noItems":"Öğe eklenmedi...","hint_emptyLibrary":"Öğelerden birini eklemek için öğeyi seçiniz veya aşağıdaki genel kütüphaneden öğeleri ekleyin.","hint_emptyPrivateLibrary":"Tuvalden bir eleman seçerek sayfaya ekleyin."},"buttons":{"clearReset":"Tuvali sıfırla","exportJSON":"Dosyaya aktar","exportImage":"Resimleri dışa aktar...","export":"Şuraya kaydet...","copyToClipboard":"Panoya kopyala","save":"Geçerli dosyaya kaydet","saveAs":"Farklı kaydet","load":"Aç","getShareableLink":"Paylaşılabilir bağlantı al","close":"Kapat","selectLanguage":"Dil seçin","scrollBackToContent":"İçeriğe geri dön","zoomIn":"Yakınlaştır","zoomOut":"Uzaklaştır","resetZoom":"Yakınlaştırmayı sıfırla","menu":"Menü","done":"Tamam","edit":"Düzenle","undo":"Geri Al","redo":"Yeniden yap","resetLibrary":"Kütüphaneyi sıfırla","createNewRoom":"Yeni oda oluştur","fullScreen":"Tam ekran","darkMode":"Koyu tema","lightMode":"Açık tema","zenMode":"Zen modu","objectsSnapMode":"Nesnelere hizala","exitZenMode":"Zen modundan çık","cancel":"İptal","clear":"Temizle","remove":"Kaldır","embed":"","publishLibrary":"Yayınla","submit":"Gönder","confirm":"Onayla","embeddableInteractionButton":"Etkileşime girmek için tıkla"},"alerts":{"clearReset":"Tuvalin tamamı temizlenecek. Emin misiniz?","couldNotCreateShareableLink":"Paylaşılabilir bağlantı oluşturulamadı.","couldNotCreateShareableLinkTooBig":"Paylaşılabilir bağlantı oluşturulamadı: sahne çok büyük","couldNotLoadInvalidFile":"Bilinmeyen dosya yüklenemiyor","importBackendFailed":"Sunucudan içe aktarma başarısız.","cannotExportEmptyCanvas":"Boş tuval dışarıya aktarılamaz.","couldNotCopyToClipboard":"Panoya kopyalanamıyor.","decryptFailed":"Şifrelenmiş veri çözümlenemedi.","uploadedSecurly":"Yükleme uçtan uca şifreleme ile korunmaktadır. Excalidraw sunucusu ve üçüncül şahıslar içeriği okuyamayacaktır.","loadSceneOverridePrompt":"Harici çizimler yüklemek mevcut olan içeriği değiştirecektir. Devam etmek istiyor musunuz?","collabStopOverridePrompt":"Oturumu sonlandırmak daha önceki, yerel olarak kaydedilmiş çizimin üzerine kaydedilmesine sebep olacak. Emin misiniz?\\n\\n(Yerel çiziminizi kaybetmemek için tarayıcı sekmesini kapatabilirsiniz.)","errorAddingToLibrary":"Öğe kütüphaneye eklenemedi","errorRemovingFromLibrary":"Öğe kütüphaneden silinemedi","confirmAddLibrary":"Bu, kitaplığınıza {{numShapes}} tane şekil ekleyecek. Emin misiniz?","imageDoesNotContainScene":"Bu görüntü herhangi bir sahne verisi içermiyor gibi görünüyor. Dışa aktarma sırasında sahne yerleştirmeyi etkinleştirdiniz mi?","cannotRestoreFromImage":"Sahne bu resim dosyasından geri yüklenemedi","invalidSceneUrl":"Verilen bağlantıdan çalışma alanı yüklenemedi. Dosya bozuk olabilir veya geçerli bir Excalidraw JSON verisi bulundurmuyor olabilir.","resetLibrary":"Bu işlem kütüphanenizi sıfırlayacak. Emin misiniz?","removeItemsFromsLibrary":"{{count}} öğe(ler) kitaplıktan kaldırılsın mı?","invalidEncryptionKey":"Şifreleme anahtarı 22 karakter olmalı. Canlı işbirliği devre dışı bırakıldı.","collabOfflineWarning":"İnternet bağlantısı bulunamadı. Değişiklikleriniz kaydedilmeyecek!"},"errors":{"unsupportedFileType":"Desteklenmeyen dosya türü.","imageInsertError":"Görsel eklenemedi. Daha sonra tekrar deneyin...","fileTooBig":"Dosya çok büyük. İzin verilen maksimum boyut {{maxSize}}.","svgImageInsertError":"SVG resmi eklenemedi. SVG işaretlemesi geçersiz görünüyor.","failedToFetchImage":"","invalidSVGString":"Geçersiz SVG.","cannotResolveCollabServer":"İş birliği sunucusuna bağlanılamıyor. Lütfen sayfayı yenileyip tekrar deneyin.","importLibraryError":"Kütüphane yüklenemedi","collabSaveFailed":"Backend veritabanına kaydedilemedi. Eğer problem devam ederse, çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","collabSaveFailed_sizeExceeded":"Backend veritabanına kaydedilemedi; tuval çok büyük. Çalışmanızı korumak için dosyayı yerel olarak kaydetmelisiniz.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":"Resimleri kütüphaneye ekleme desteği yakında geliyor!"}},"toolBar":{"selection":"Seçme","image":"Görsel ekle","rectangle":"Dikdörtgen","diamond":"Elmas","ellipse":"Elips","arrow":"Ok","line":"Çizgi","freedraw":"Çiz","text":"Yazı","library":"Kütüphane","lock":"Seçilen aracı çizimden sonra aktif tut","penMode":"Kalem modu - dokunmayı engelle","link":"Seçilen şekil için bağlantı Ekle/Güncelle","eraser":"Silgi","frame":"Çerçeve aracı","embeddable":"Web Yerleştirme","laser":"Lazer işaretçisi","hand":"","extraTools":"Daha fazla araç"},"headings":{"canvasActions":"Tuval eylemleri","selectedShapeActions":"Seçilen şekil aksiyonları","shapes":"Şekiller"},"hints":{"canvasPanning":"","linearElement":"Birden fazla nokta için tıklayın, tek çizgi için sürükleyin","freeDraw":"Tıkla ve sürükle, bitirdiğinde serbest bırak","text":"İpucu: seçme aracıyla herhangi bir yere çift tıklayarak da yazı ekleyebilirsin","embeddable":"Web sitesi yerleştirmek için sürükle bırak","text_selected":"Metni düzenlemek için çift tıklayın veya ENTER\'a basın","text_editing":"Düzenlemeyi bitirmek için ESC veya Ctrl/Cmd+ENTER tuşlarına basın","linearElementMulti":"Bitirmek için son noktaya tıklayın ya da Escape veya Enter tuşuna basın","lockAngle":"SHIFT tuşuna basılı tutarak açıyı koruyabilirsiniz","resize":"Yeniden boyutlandırırken SHIFT tuşunu basılı tutarak oranları sınırlayabilirsiniz,\\nmerkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","resizeImage":"SHIFT\'e basılı tutarak serbestçe yeniden boyutlandırabilirsiniz, merkezden yeniden boyutlandırmak için ALT tuşunu basılı tutun","rotate":"Döndürürken SHIFT tuşuna basılı tutarak açıları koruyabilirsiniz","lineEditor_info":"Puanları düzenlemek için ctrl veya cmd tuşuna basılı tutup çift tıklayın veya enter tuşuna basın","lineEditor_pointSelected":"Sil tuşuna basarak noktaları silin,\\nCtrl/Cmd + D ile çoğaltın, ya da sürükleyerek taşıyın","lineEditor_nothingSelected":"Düzenlemek için bir nokta seçin (birden fazla seçmek için SHIFT tuşunu basılı tutun),\\nveya Alt tuşunu basılı tutun ve yeni noktalar eklemek için tıklayın","placeImage":"Resmi yerleştirmek için tıklayın ya da boyutunu manuel olarak ayarlamak için tıklayıp sürükleyin","publishLibrary":"Kendi kitaplığınızı yayınlayın","bindTextToElement":"Enter tuşuna basarak metin ekleyin","deepBoxSelect":"Ctrl/Cmd tuşuna basılı tutarak derin seçim yapın ya da sürüklemeyi engelleyin","eraserRevert":"Alt tuşuna basılı tutarak silinme için işaretlenmiş ögeleri tersine çevirin","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"Önizleme gösterilemiyor","canvasTooBig":"Kanvas çok büyük olabilir.","canvasTooBigTip":"İpucu: En uzaktaki elemanları birbirine yakınlaştırmayı deneyin."},"errorSplash":{"headingMain":"Hata oluştu. Lütfen ","clearCanvasMessage":"Yenileme sonrası sorun devam ediyorsa, lütfen ","clearCanvasCaveat":" Bu, yaptığınız değişiklikleri sıfırlayacak ","trackedToSentry":"Tanımlayıcı ile ilgili hata {{eventId}} sistemimize yakalandı.","openIssueMessage":"Sahne bilginizi hata mesajına yansıtmamak için oldukça dikkatli davrandık. Eğer sahneniz gizli değilse hatayı lütfen şuradan takip edin Lütfen aşağıya GitHub sorununa kopyalayarak ve yapıştırarak bilgi ekleyin.","sceneContent":"Sahne içeriği:"},"roomDialog":{"desc_intro":"Çalışma alanınıza, sizinle birlikte çalışabilmeleri için başkalarını da ekleyebilirsiniz.","desc_privacy":"Çalışma ortamında yaptıklarınız ve çizimleriniz uçtan uca şifrelemeyle saklanmaktadır. Sunucularımız dahi bu verileri şifrelenmemiş haliyle göremez.","button_startSession":"Oturumu başlat","button_stopSession":"Oturumu sonlandır","desc_inProgressIntro":"Ortak çalışma ortamı oluşturuldu.","desc_shareLink":"Bu bağlantıyı birlikte çalışacağınız kişilerle paylaşabilirsiniz:","desc_exitSession":"Çalışma ortamını kapattığınızda ortak çalışmadan ayrılmış olursunuz ancak kendi versiyonunuzda çalışmaya devam edebilirsiniz. Bu durumda ortak çalıştığınız diğer kişiler etkilenmeyecek, çalışma ortamındaki versiyon üzerinden çalışmaya devam edebilecekler.","shareTitle":"Excalidraw\'da canlı ortak calışma oturumuna katıl"},"errorDialog":{"title":"Hata"},"exportDialog":{"disk_title":"Belleğe kaydet","disk_details":"Sahne verilerini daha sonra içe aktarabileceğiniz bir dosyaya aktarın.","disk_button":"Dosyaya kaydet","link_title":"Paylaşılabilir bağlantı","link_details":"Salt okunur bir bağlantı olarak dışa aktarın.","link_button":"Bağlantı olarak dışa aktar","excalidrawplus_description":"Sahneyi Excalidraw+ çalışma alanınıza kaydedin.","excalidrawplus_button":"Dışa aktar","excalidrawplus_exportError":"Şu anda Excalidraw+\'a aktarılamadı..."},"helpDialog":{"blog":"Blog\'umuzu okuyun","click":"tıkla","deepSelect":"Derin seçim","deepBoxSelect":"Kutu içerisinde derin seçim yapın, sürüklemeyi engelleyin","curvedArrow":"Eğri ok","curvedLine":"Eğri çizgi","documentation":"Dokümantasyon","doubleClick":"çift-tıklama","drag":"sürükle","editor":"Düzenleyici","editLineArrowPoints":"Çizgi/ok noktalarını düzenle","editText":"Etiket / metin düzenle","github":"Bir hata mı buldun? Bildir","howto":"Rehberlerimizi takip edin","or":"veya","preventBinding":"Ok bağlamayı önleyin","tools":"Araçlar","shortcuts":"Klavye kısayolları","textFinish":"Düzenlemeyi bitir (metin düzenleyici)","textNewLine":"Yeni satır ekle (metin düzenleyici)","title":"Yardım","view":"Görünüm","zoomToFit":"Tüm öğeleri sığdırmak için yakınlaştır","zoomToSelection":"Seçime yakınlaş","toggleElementLock":"Seçimi Kilitle/çöz","movePageUpDown":"Sayfayı yukarı/aşağı kaydır","movePageLeftRight":"Sayfayı sola/sağa kaydır"},"clearCanvasDialog":{"title":"Tuvali temizle"},"publishDialog":{"title":"Kitaplığı yayınla","itemName":"Öğe adı","authorName":"Yazar adı","githubUsername":"GıtHub kullanıcı adı","twitterUsername":"Twitter kullanıcı adı","libraryName":"Kitaplık adı","libraryDesc":"Kitaplık açıklaması","website":"Web sitesi","placeholder":{"authorName":"Adınız ya da kullanıcı adınız","libraryName":"Kitaplığınızın adı","libraryDesc":"İnsanların kullanımını anlamasına yardımcı olmak için kitaplığınızın açıklaması","githubHandle":"Github bağlantısı ( tercihe bağlı), kütüphane gözden geçirme için onaylandığında düzenleyebiliesiniz diye","twitterHandle":"Twitter kullanıcı adı ( tercihe bağlı), bu sayede Twitter üzerinde paylaşıren çalışmanızı size atfedebiliriz","website":"Kişisel web sayfanızı ya da başka bir yeri bağlayın (tercihe bağlı)"},"errors":{"required":"Gerekli","website":"Geçerli bir URL girin"},"noteDescription":"Submit your library to be included in the genel kütüphane reposudiğer insanlar çizimlerinde kullanabilsin diye.","noteGuidelines":"Önce kütüphane elle onaylanmalı. şunu okuyun yönergeler onaylamadan önce. gerekli olması halinde iletişim kurmak için ve değişiklik için Github hesabı gerekli, ama çok da illaki olmalı değil.","noteLicense":"Bunu onaylayarak, kütüğhanenin şu lisansla yayınlanmasını onaylıyorsunuz MIT Lisans, ki bu kısaca herkesin onu kısıtlama olmaksızın kullanabileceği anlamına gelmektedir.","noteItems":"Her kütüphane kendi ismine sahip olmalı ki tarama yapabilelim. Şu kütüphane ögeleri dahil edilecek:","atleastOneLibItem":"Lütfen başlamak için en az bir tane kütüphane ögesi seçin","republishWarning":"Not: seçilen ögelerden bir kısmı zaten yayınlanmış/gönderilmiş. Yalnızca mevcut kütüphane ve gönderileri güncellerken yeniden gönderme işlemi yapmalısınız."},"publishSuccessDialog":{"title":"Kütüphane gönderildi","content":"Teşekkürler {{authorName}}. Kütüphaneniz gözden geçirme için alındı. Durumu takip edebilirsinizburada"},"confirmDialog":{"resetLibrary":"Kütüphaneyi sıfırla","removeItemsFromLib":"Seçilen ögeleri kütüphaneden kaldır"},"imageExportDialog":{"header":"Resmi dışa aktar","label":{"withBackground":"Arka plan","onlySelected":"Sadece seçilen","darkMode":"Karanlık mod","embedScene":"Sahne yerleştir","scale":"Ölçeklendir","padding":"Dış boşluk"},"tooltip":{"embedScene":"Sahne verisi, sahnenin geri yüklenebilmesi için dışarı aktarılan PNG/SVG dosyasına kaydedilecektir. Bu, dışa aktarılan dosya boyutunu arttıracaktır."},"title":{"exportToPng":"PNG olarak dışa aktar","exportToSvg":"SVG olarak dışa aktar","copyPngToClipboard":""},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Panoya kopyala"}},"encrypted":{"tooltip":"Çizimleriniz uçtan-uca şifrelenmiştir, Excalidraw\'ın sunucuları bile onları göremez.","link":"Excalidraw\'da uçtan uca şifreleme hakkında blog yazısı"},"stats":{"angle":"Açı","element":"Bileşen","elements":"Bileşenler","height":"Yükseklik","scene":"Sahne","selected":"Seçili","storage":"Depolama","title":"İnekler için istatistikler","total":"Toplam","version":"Sürüm","versionCopy":"Kopyalamak için tıkla","versionNotAvailable":"Sürüm mevcut değil","width":"Genişlik"},"toast":{"addedToLibrary":"Kütüphaneye eklendi","copyStyles":"Stiller kopyalandı.","copyToClipboard":"Panoya kopyalandı.","copyToClipboardAsPng":"{{exportSelection}} panoya PNG olarak\\n({{exportColorScheme}}) kopyalandı","fileSaved":"Dosya kaydedildi.","fileSavedToFilename":"{filename} kaydedildi","canvas":"tuval","selection":"seçim","pasteAsSingleElement":"Tekil obje olarak yapıştırmak için veya var olan bir metin editörüne yapıştırmak için {{shortcut}} kullanın","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"Şeffaf","black":"Siyah","white":"Beyaz","red":"Kırmızı","pink":"Pembe","grape":"Koyu Mor","violet":"Menekşe rengi","gray":"Gri","blue":"Mavi","cyan":"Camgöbeği","teal":"Deniz mavisi","green":"Yeşil","yellow":"Sarı","orange":"Turuncu","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"Ecalidraw+\'a mı gitmek istediniz?","menuHint":"Dışa aktar, seçenekler, diller, ..."},"defaults":{"menuHint":"Dışa aktar, seçenekler, ve daha fazlası...","center_heading":"","toolbarHint":"Bir araç seçin ve çizime başlayın!","helpHint":"Kısayollar & yardım"}},"colorPicker":{"mostUsedCustomColors":"En çok kullanılan özel renkler","colors":"Renkler","shades":"","hexCode":"Hex kodu","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"Diske Kaydet","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js b/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js new file mode 100644 index 0000000..452d457 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/uk-UA-json-82753e98dced302ac187.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7759],{3458:function(e){e.exports=JSON.parse('{"labels":{"paste":"Вставити","pasteAsPlaintext":"Вставити як простий текст","pasteCharts":"Вставити діаграми","selectAll":"Вибрати все","multiSelect":"Додати елемент до вибраного","moveCanvas":"Перемістити полотно","cut":"Вирізати","copy":"Копіювати","copyAsPng":"Копіювати як PNG","copyAsSvg":"Копіювати як SVG","copyText":"Копіювати в буфер обміну як текст","bringForward":"Перемістити вперед","sendToBack":"На задній план","bringToFront":"На передній план","sendBackward":"Перемістити назад","delete":"Видалити","copyStyles":"Копіювати стилі","pasteStyles":"Вставити стилі","stroke":"Контур","background":"Тло","fill":"Заповнити","strokeWidth":"Товщина контуру","strokeStyle":"Стиль контуру","strokeStyle_solid":"Суцільний","strokeStyle_dashed":"Пунктир","strokeStyle_dotted":"Крапки","sloppiness":"Охайність","opacity":"Прозорість","textAlign":"Вирівнювання тексту","edges":"Краї","sharp":"Гострі","round":"Круглі","arrowheads":"Закінчення стрілки","arrowhead_none":"Жоден","arrowhead_arrow":"Стрілка","arrowhead_bar":"Колона","arrowhead_dot":"Точка","arrowhead_triangle":"Трикутник","fontSize":"Розмір шрифту","fontFamily":"Шрифт","addWatermark":"Додати «Накреслене в Excalidraw»","handDrawn":"Ручний апарат","normal":"Звичайний","code":"Код","small":"Малий","medium":"Середній","large":"Великий","veryLarge":"Дуже великий","solid":"Суцільна","hachure":"Штриховка","zigzag":"Зиґзаґ","crossHatch":"Перехресна штриховка","thin":"Тонкий","bold":"Жирний","left":"Зліва","center":"По центру","right":"Справа","extraBold":"Товстий","architect":"Архітектор","artist":"Художник","cartoonist":"Карикатурист","fileTitle":"Назва файла","colorPicker":"Палітра кольорів","canvasColors":"Використовується на полотні","canvasBackground":"Тло полотна","drawingCanvas":"Полотно","layers":"Шари","actions":"Дії","language":"Мова","liveCollaboration":"Спільна робота наживо...","duplicateSelection":"Дублювати","untitled":"Без назви","name":"Ім’я","yourName":"Ваше ім’я","madeWithExcalidraw":"Накреслене в Excalidraw","group":"Групувати виділене","ungroup":"Розгрупувати виділене","collaborators":"Співавтори","showGrid":"Показати сітку","addToLibrary":"Додати до бібліотеки","removeFromLibrary":"Видалити з бібліотеки","libraryLoadingMessage":"Завантажити бібліотеку…","libraries":"Всі бібліотеки","loadingScene":"Завантаження сцени…","align":"Вирівнювання","alignTop":"Вирівняти по верхньому краю","alignBottom":"Вирівняти по нижньому краю","alignLeft":"Вирівняти по лівому краю","alignRight":"Вирівнювання по правому краю","centerVertically":"Центрувати по вертикалі","centerHorizontally":"Центрувати по горизонталі","distributeHorizontally":"Розподілити по горизонталі","distributeVertically":"Розподілити вертикально","flipHorizontal":"Віддзеркалити горизонтально","flipVertical":"Віддзеркалити вертикально","viewMode":"Режим перегляду","share":"Поділитися","showStroke":"Показати палітру для контура","showBackground":"Показати палітру для фону","toggleTheme":"Перемкнути тему","personalLib":"Персональна бібліотека","excalidrawLib":"Бібліотека Excalidraw","decreaseFontSize":"Зменшити розмір шрифту","increaseFontSize":"Збільшити розмір шрифту","unbindText":"Відв\'язати текст","bindText":"Прив’язати текст до контейнера","createContainerFromText":"Огорнути текст у контейнер","link":{"edit":"Редагування посилання","editEmbed":"Редагування посилання і вкладення","create":"Створити посилання","createEmbed":"Створити посилання і вкладення","label":"Посилання","labelEmbed":"Посилання і вкладення","empty":"Посилання відсутнє"},"lineEditor":{"edit":"Редагувати лінію","exit":"Закінчити редагування лінії"},"elementLock":{"lock":"Блокувати","unlock":"Розблокувати","lockAll":"Заблокувати все","unlockAll":"Розблокувати все"},"statusPublished":"Опубліковано","sidebarLock":"Не закривати бокове меню","selectAllElementsInFrame":"Обрати всі елементи у фреймі","removeAllElementsFromFrame":"Видалити всі елементи з фрейму","eyeDropper":"Вибрати колір з полотна"},"library":{"noItems":"Тут поки пусто...","hint_emptyLibrary":"Виберіть об\'єкт на полотні, щоб додати його сюди або встановіть бібліотеку з публічного репозиторію, що нижче.","hint_emptyPrivateLibrary":"Виберіть елемент на полотні, щоб додати його сюди."},"buttons":{"clearReset":"Очистити полотно","exportJSON":"Експорт у файл","exportImage":"Експорт зображення...","export":"Зберегти як...","copyToClipboard":"Скопіювати до буферу обміну","save":"Зберегти до поточного файлу","saveAs":"Зберегти як","load":"Відкрити","getShareableLink":"Отримати посилання","close":"Закрити","selectLanguage":"Обрати мову","scrollBackToContent":"Повернутися до вмісту","zoomIn":"Збільшити","zoomOut":"Зменшити","resetZoom":"Скинути масштаб","menu":"Меню","done":"Готово","edit":"Редагувати","undo":"Відмінити","redo":"Повторити","resetLibrary":"Очистити бібліотеку","createNewRoom":"Створити нову кімнату","fullScreen":"Повноекранний режим","darkMode":"Темна тема","lightMode":"Світла тема","zenMode":"Режим Дзен","objectsSnapMode":"","exitZenMode":"Вийти з дзен-режиму","cancel":"Скасувати","clear":"Очистити","remove":"Видалити","embed":"Перемкнути вкладення","publishLibrary":"Опублікувати","submit":"Надіслати","confirm":"Підтвердити","embeddableInteractionButton":"Натисніть для взаємодії"},"alerts":{"clearReset":"Це очистить все полотно. Впевнені?","couldNotCreateShareableLink":"Не вдалося створити посилання.","couldNotCreateShareableLinkTooBig":"Не вдалося створити посилання для обміну: сцена занадто велика","couldNotLoadInvalidFile":"Файл з помилками не відкрився","importBackendFailed":"Імпортування невдале.","cannotExportEmptyCanvas":"Не вийшло експортувати пусте полотно.","couldNotCopyToClipboard":"Не вдалося скопіювати до буфера обміну.","decryptFailed":"Не вдалося розшифрувати дані.","uploadedSecurly":"Це завантаження було захищене наскрізним шифруванням, а це означає що сервер Excalidraw та інші не зможуть прочитати вміст.","loadSceneOverridePrompt":"Завантаження зовнішнього креслення замінить ваш наявний контент. Продовжити?","collabStopOverridePrompt":"Зупинка сесії перезапише ваш попередній, локально збережений малюнок. Ви впевнені?\\n\\n(Якщо ви хочете зберегти локальний малюнок, просто закрийте замість нього вкладку браузера.)","errorAddingToLibrary":"Не вдалося додати елемент до бібліотеки","errorRemovingFromLibrary":"Не вдалося видалити елемент з бібліотеки","confirmAddLibrary":"Це призведе до додавання {{numShapes}} фігур до вашої бібліотеки. Ви впевнені?","imageDoesNotContainScene":"Виглядає ніби зображення не містить корисної інформації. Ви увімкнули вбудовування сцени при експорті?","cannotRestoreFromImage":"Сцена не може бути відновлена з цього файлу зображення","invalidSceneUrl":"Не вдалося імпортувати сцену з наданого URL. Він або недоформований, або не містить дійсних даних Excalidraw JSON.","resetLibrary":"Це призведе до очищення бібліотеки. Ви впевнені?","removeItemsFromsLibrary":"Видалити {{count}} елемент(ів) з бібліотеки?","invalidEncryptionKey":"Ключ шифрування повинен бути довжиною до 22 символів. Спільну роботу вимкнено.","collabOfflineWarning":"Немає підключення до Інтернету.\\nВаші зміни не будуть збережені!"},"errors":{"unsupportedFileType":"Непідтримуваний тип файлу.","imageInsertError":"Не вдалося вставити зображення. Повторіть спробу пізніше...","fileTooBig":"Занадто великий розмір файлу, максимальний розмір файлу {{maxSize}}.","svgImageInsertError":"Не вдалося вставити SVG-зображення. Помилка розмітки SVG.","failedToFetchImage":"","invalidSVGString":"Недійсний SVG.","cannotResolveCollabServer":"Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.","importLibraryError":"Не вдалося завантажити бібліотеку","collabSaveFailed":"Не вдалося зберегти у базу даних сервера. Якщо проблеми не зникнуть, Вам слід зберегти файл локально, щоб не втратити роботу.","collabSaveFailed_sizeExceeded":"Полотно завелике! Не вдалося зберегти у базу даних сервера. Вам слід зберегти файл локально, щоб не втратити свою роботу.","brave_measure_text_error":{"line1":"Ви використовуєте браузер Brave з увімкненим налаштуванням Агресивного Блокування Розпізнавання Пристрою.","line2":"Це може нашкодити текстовим елементам у ваших малюнках.","line3":"Ми наполегливо рекомендуємо вимкнути це налаштування. Виконайте наступні кроки, щоб виправити це.","line4":"Якщо вимкнення цього параметра не вирішує показ текстових елементів, тоді створіть, будь ласка, запит на розв\'язання проблеми на нашому GitHub або напишіть нам у Discord"},"libraryElementTypeError":{"embeddable":"Вбудовані елементи не можна додати в бібліотеку.","image":"Підтримка додавання зображень в бібліотеку найближчим часом!"}},"toolBar":{"selection":"Виділення","image":"Вставити зображення","rectangle":"Прямокутник","diamond":"Ромб","ellipse":"Еліпс","arrow":"Стрілка","line":"Лінія","freedraw":"Малювати","text":"Текст","library":"Бібліотека","lock":"Залишити обраний інструмент після креслення","penMode":"Режим пера - запобігання дотику","link":"Додати/Оновити посилання для вибраної форми","eraser":"Очищувач","frame":"Інструмент фрейму","embeddable":"Веб вкладення","laser":"","hand":"Рука (інструмент для панорамування)","extraTools":"Інші інструменти"},"headings":{"canvasActions":"Дії з полотном","selectedShapeActions":"Вибрані дії з фігурою","shapes":"Фігури"},"hints":{"canvasPanning":"Щоб перемістити полотно, утримуйте коліщатко миші або пробіл під час перетягування, або скористайтеся інструментом Рука","linearElement":"Натисніть щоб додати кілька точок. Перетягніть щоб намалювати одну лінію","freeDraw":"Натисніть і потягніть, відпустіть коли завершите","text":"Порада: можна також додати текст, двічі клацнувши по будь-якому місці інструментом вибору","embeddable":"Клікніть та перетягніть для створення вбудованого вебсайту","text_selected":"Подвійний клік або натисніть клавішу ENTER, щоб редагувати текст","text_editing":"Натисніть клавішу Escape або Ctrl/Cmd+ENTER, щоб завершити редагування","linearElementMulti":"Натисніть на останню точку, клацніть Esc або Enter щоб завершити","lockAngle":"Ви можете обмежити кут, утримуюючи SHIFT","resize":"Ви можете зберегти пропорції, утримуючи SHIFT під час зміни розміру,\\nутримуйте ALT для змінення розміру від центру","resizeImage":"Ви можете змінювати розміри утримуючи клавішу SHIFT, втримуйте клавішу ALT щоб змінювати розмір відносно центру","rotate":"Ви можете обмежити кути, утримуючи SHIFT під час обертання","lineEditor_info":"Утримуйте CtrlOrCmd і двічі клацніть або натисніть CtrlOrCmd + Enter, щоб редагувати цятки","lineEditor_pointSelected":"Натисніть Delete для видалення точку (точок), або Ctrl/Cmd+D для дублювання, перетаскування працює як звично","lineEditor_nothingSelected":"Виберіть точку для редагування (втримуйте клавішу SHIFT для вибору кількох точок), або клавішу Alt для додавання нових точок","placeImage":"Клацніть, щоб розмістити зображення, або натисніть та потягніть щоб змінити його розмір","publishLibrary":"Опублікувати свою власну бібліотеку","bindTextToElement":"Натисніть Enter, щоб додати текст","deepBoxSelect":"Втримуйте Ctrl/Cmd для глибокого виділення та щоб попередити перетягування","eraserRevert":"Втримуйте клавішу Alt, щоб повернути елементи позначені для видалення","firefox_clipboard_write":"Цю функцію можна ввімкнути, встановивши значення \\"true\\" для налаштування \\"dom.events.asyncClipboard.clipboardItem\\". Перейдіть на сторінку «about:config», щоб змінити налаштування браузера у Firefox.","disableSnapping":""},"canvasError":{"cannotShowPreview":"Не вдається показати попередній перегляд","canvasTooBig":"Полотно може бути завеликим.","canvasTooBigTip":"Порада: спробуйте підсунути найвіддаленіші елементи ближче один до одного."},"errorSplash":{"headingMain":"Сталася помилка. Спробуйте ","clearCanvasMessage":"Якщо перезавантаження не допоможе, спробуйте ","clearCanvasCaveat":" Це призведе до втрати роботи ","trackedToSentry":"Помилка з ідентифікатором {{eventId}} було відслідковано в нашій системі.","openIssueMessage":"Ми були дуже обережні, щоб не включати інформацію про ваші сцени в текст помилки. Якщо ваша сцена не була приватна, будь ласка, розгляньте можливість продовження на нашому Будь ласка, додайте інформацію нижче, скопіюючи і вставляючи у GitHub issue.","sceneContent":"Вміст сцени:"},"roomDialog":{"desc_intro":"Ви можете запросити людей для спільної роботи.","desc_privacy":"Не хвилюйтеся, сесія захищена наскрізним шифруванням, тому ваше креслення залишиться приватним. Навіть наш сервер не побачить вашу роботу.","button_startSession":"Почати сесію","button_stopSession":"Закрити сесію","desc_inProgressIntro":"Сесія спільної роботи над кресленням триває.","desc_shareLink":"Поділіться цим посиланням з будь-ким для спільної роботи:","desc_exitSession":"Зупинка сесії відключить вас від кімнати, але ви зможете продовжити роботу з полотном локально. Зверніть увагу, що це не вплине на інших людей, і вони все одно зможуть працювати над їх версією.","shareTitle":"Приєднатися до сеансу спільної роботи на Excalidraw"},"errorDialog":{"title":"Помилка"},"exportDialog":{"disk_title":"Зберегти на диск","disk_details":"Експорт даних сцени в файл, з якого можна імпортувати пізніше.","disk_button":"Зберегти до файлу","link_title":"Доступ за посиланням","link_details":"Експортувати як посилання тільки для читання.","link_button":"Експортувати у посилання","excalidrawplus_description":"Збережіть сцену у вашому обліковому записі Excalidraw+.","excalidrawplus_button":"Експортувати","excalidrawplus_exportError":"Не вдалося експортувати у Excalidraw+..."},"helpDialog":{"blog":"Наш блог","click":"натиснути","deepSelect":"Глибокий вибір","deepBoxSelect":"Глибоке виділення в межах рамки, та обмеження перетягування","curvedArrow":"Крива стрілка","curvedLine":"Крива лінія","documentation":"Документація","doubleClick":"подвійний клік","drag":"перетягнути","editor":"Редактор","editLineArrowPoints":"Редагувати лінію/стрілки","editText":"Редагувати текст / додати позначку","github":"Знайшли помилку? Повідомте","howto":"Дотримуйтесь наших інструкцій","or":"або","preventBinding":"Запобігти зв\'язування зі стрілками","tools":"Інструменти","shortcuts":"Гарячі клавіші","textFinish":"Завершити редагування (текстовий редактор)","textNewLine":"Додати новий рядок (текстовий редактор)","title":"Допомога","view":"Вигляд","zoomToFit":"Збільшити щоб умістити всі елементи","zoomToSelection":"Наблизити вибране","toggleElementLock":"Заблокувати/розблокувати вибране","movePageUpDown":"Пересунути сторінку вгору/вниз","movePageLeftRight":"Пересунути сторінку вліво/вправо"},"clearCanvasDialog":{"title":"Очистити полотно"},"publishDialog":{"title":"Опублікувати бібліотеку","itemName":"Назва елементу","authorName":"Ім\'я автора","githubUsername":"Ім\'я користувача Github","twitterUsername":"Ім\'я користувача Твитер","libraryName":"Назва бібліотеки","libraryDesc":"Опис бібліотеки","website":"Вебсайт","placeholder":{"authorName":"Ваше ім\'я або ім\'я користувача","libraryName":"Назва вашої бібліотеки","libraryDesc":"Опис вашої бібліотеки, щоб допомогти людям зрозуміти її використання","githubHandle":"Ім\'я користувача в GitHub (необов\'язково), щоб ви могли редагувати бібліотеку під час перевірки","twitterHandle":"Ім\'я користувача у Twitter (необов\'язково), щоб ми могли згадати вас під час промоції у Twitter","website":"Посилання на ваш особистий сайт або інший сайт (опціонально)"},"errors":{"required":"Обов’язково","website":"Введіть дійсну URL-адресу"},"noteDescription":"Подати бібліотеку, щоб вона була включена до публічного репозиторія бібліотекдля інших людей, для використання у їхніх полотнах.","noteGuidelines":"Спочатку бібліотека повинна бути підтверджена. Будь ласка, прочитайте настанови перед відправкою. Вам знадобиться обліковий запис на GitHub, щоб колаборувати та вносити зміни, але це не обов\'язково.","noteLicense":"Публікуючи, ви погоджуєтеся, що бібліотека буде опублікована під Ліцензія MIT, , простими словами, це означає що нею зможе користуватися будь-хто без обмежень.","noteItems":"Кожен об\'єкт в бібліотеці повинен мати назву, це потрібно для пошуку та фільтрування. Наступні об\'єкти бібліотеки будуть включені:","atleastOneLibItem":"Будь ласка, виберіть принаймні один елемент бібліотеки, щоб почати","republishWarning":"Зауважте, деякі з вибраних елементів позначені як вже опубліковані/надіслані. Ви повинні повторно надсилати елементи тільки при оновленні вже опублікованої бібліотеки чи при публікації бібліотеки."},"publishSuccessDialog":{"title":"Бібліотека відправлена","content":"Дякуємо, {{authorName}}. Ваша бібліотека була відправлена для розгляду. Ви можете відстежувати статустут"},"confirmDialog":{"resetLibrary":"Очистити бібліотеку","removeItemsFromLib":"Видалити вибрані елементи з бібліотеки"},"imageExportDialog":{"header":"Експортувати зображення","label":{"withBackground":"Тло","onlySelected":"Тільки вибране","darkMode":"Темний режим","embedScene":"Вбудована сцена","scale":"Масштабування","padding":"Відступ"},"tooltip":{"embedScene":"Дані сцени будуть збережені в експортований файл PNG/SVG. Ця сцена може бути відновлена з нього, однак це збільшить розмір експортованого файлу."},"title":{"exportToPng":"Експортувати в PNG","exportToSvg":"Експортувати у SVG","copyPngToClipboard":"Скопіювати PNG в буфер обміну"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Копіювати в буфер обміну"}},"encrypted":{"tooltip":"Ваші креслення захищені наскрізним шифруванням — сервери Excalidraw ніколи їх не побачать.","link":"Допис у блозі на наскрізному шифруванні в Excalidraw"},"stats":{"angle":"Кут","element":"Елемент","elements":"Елементи","height":"Висота","scene":"Сцена","selected":"Обрано","storage":"Сховище","title":"Статистика","total":"Всього","version":"Версія","versionCopy":"Натисніть, щоб скопіювати","versionNotAvailable":"Версія недоступна","width":"Ширина"},"toast":{"addedToLibrary":"Додано до бібліотеки","copyStyles":"Скопійовані стилі.","copyToClipboard":"Скопіювати до буферу обміну.","copyToClipboardAsPng":"Скопійовано {{exportSelection}} до буфера обміну як PNG\\n({{exportColorScheme}})","fileSaved":"Файл збережено.","fileSavedToFilename":"Збережено в {filename}","canvas":"полотно","selection":"виділення","pasteAsSingleElement":"Використайте {{shortcut}} для вставки самостійного зразка або використайте в текстовому редакторі","unableToEmbed":"Вбудування цієї url на даний час не допускається. Підніміть питання на GitHub, щоб попросити внести URL-адресу до білого списку","unrecognizedLinkFormat":"Посилання, яке ви вставили, не відповідає очікуваному формату. Будь ласка, спробуйте вставити рядок \\"embed\\", наданий сайтом-джерелом"},"colors":{"transparent":"Прозорий","black":"Чорний","white":"Білий","red":"Червоний","pink":"Рожевий","grape":"Виноградний","violet":"Фіолетовий","gray":"Сірий","blue":"Синій","cyan":"Ціан","teal":"Бірюзовий","green":"Зелений","yellow":"Жовтий","orange":"Помаранчевий","bronze":"Бронзовий"},"welcomeScreen":{"app":{"center_heading":"Всі ваші дані збережено локально у Вашому браузері.","center_heading_plus":"Чи бажаєте перейти до Excalidraw+?","menuHint":"Експорт, налаштування, мови, ..."},"defaults":{"menuHint":"Експорт, налаштування та багато іншого...","center_heading":"Діаграми. Робити. Просто.","toolbarHint":"Оберіть інструмент і почніть малювати!","helpHint":"Гарячі клавіші і допомога"}},"colorPicker":{"mostUsedCustomColors":"Найбільш використовувані користувацькі кольори","colors":"Кольори","shades":"Тіні","hexCode":"Hex-код","noShades":"Немає доступних відтінків цього кольору"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Експортувати як зображення","button":"Експортувати як зображення","description":"Експорт даних сцени у вигляді зображення, з якого можна імпортувати пізніше."},"saveToDisk":{"title":"Зберегти на диск","button":"Зберегти на диск","description":"Експорт даних сцени в файл, з якого можна імпортувати пізніше."},"excalidrawPlus":{"title":"Excalidraw+","button":"Експортувати до Excalidraw+","description":"Зберегти сцену до робочого простору Excalidraw+."}},"modal":{"loadFromFile":{"title":"Завантажити з файлу","button":"Завантажити з файлу","description":"Завантаження з файлу замінить наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."},"shareableLink":{"title":"Завантажити з посилання","button":"Замінити мій контент","description":"Завантаження зовнішнього малюнка замінить ваш наявний вміст.

Ви можете спочатку створити резервну копію малюнка, скориставшись одним із наведених нижче способів."}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js b/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js new file mode 100644 index 0000000..f4f8288 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/vi-VN-json-9c1c2a9fa9d6b5a58223.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4e3],{456:function(n){n.exports=JSON.parse('{"labels":{"paste":"Dán","pasteAsPlaintext":"Dán kiểu văn bản thuần","pasteCharts":"Dán biểu đồ","selectAll":"Chọn tất cả","multiSelect":"Thêm mới vào Select","moveCanvas":"Di chuyển canvas","cut":"Cắt","copy":"Sao chép","copyAsPng":"Sao chép vào bộ nhớ tạm dưới dạng PNG","copyAsSvg":"Sao chép vào bộ nhớ tạm dưới dạng SVG","copyText":"Sao chép vào bộ nhớ tạm dưới dạng chữ","bringForward":"Đưa ra trước","sendToBack":"Hạ xuống dưới","bringToFront":"Đưa ra đầu tiên","sendBackward":"Hạ xuống cuối","delete":"Xóa","copyStyles":"Sao chép định dạng","pasteStyles":"Dán định dạng","stroke":"Nét","background":"Nền","fill":"Fill","strokeWidth":"Độ dày nét","strokeStyle":"Kiểu nét","strokeStyle_solid":"Khối","strokeStyle_dashed":"Gạch ngang","strokeStyle_dotted":"Nhiều chấm","sloppiness":"Hoa văn nét","opacity":"Độ trong suốt","textAlign":"Căn chỉnh văn bản","edges":"Cạnh","sharp":"Nhọn","round":"Tròn","arrowheads":"Đầu mũi tên","arrowhead_none":"Không","arrowhead_arrow":"Mũi tên","arrowhead_bar":"Thanh","arrowhead_dot":"Chấm","arrowhead_triangle":"Tam giác","fontSize":"Cỡ chữ","fontFamily":"Phông chữ","addWatermark":"Làm với Excalidraw\\"","handDrawn":"Vẽ tay","normal":"Bình thường","code":"Mã","small":"Nhỏ","medium":"Vừa","large":"Lớn","veryLarge":"Rất lớn","solid":"Đặc","hachure":"Nét gạch gạch","zigzag":"Zigzag","crossHatch":"Nét gạch chéo","thin":"Mỏng","bold":"In đậm","left":"Trái","center":"Giữa","right":"Phải","extraBold":"Nét siêu đậm","architect":"Kiến trúc sư","artist":"Nghệ sỹ","cartoonist":"Hoạt hình","fileTitle":"Tên tập tin","colorPicker":"Chọn màu","canvasColors":"Đã dùng trên canvas","canvasBackground":"Nền canvas","drawingCanvas":"Canvas vẽ","layers":"Lớp","actions":"Chức năng","language":"Ngôn ngữ","liveCollaboration":"Hợp tác trực tiếp...","duplicateSelection":"Tạo bản sao","untitled":"Không có tiêu đề","name":"Tên","yourName":"Tên của bạn","madeWithExcalidraw":"Làm với Excalidraw","group":"Gộp nhóm lại lựa chọn","ungroup":"Tách nhóm lựa chọn","collaborators":"Cộng tác viên","showGrid":"Hiển thị lưới","addToLibrary":"Thêm vào thư viện","removeFromLibrary":"Xóa khỏi thư viện","libraryLoadingMessage":"Đang tải thư viện…","libraries":"Xem thư viện","loadingScene":"Đang tải về…","align":"Căn chỉnh","alignTop":"Căn trên","alignBottom":"Căn dưới","alignLeft":"Canh trái","alignRight":"Canh phải","centerVertically":"Giữa theo chiều dọc","centerHorizontally":"Giữa theo chiều ngang","distributeHorizontally":"Phân bố theo chiều ngang","distributeVertically":"Phân bố theo chiều dọc","flipHorizontal":"Lật ngang","flipVertical":"Lật dọc","viewMode":"Chế độ xem","share":"Chia sẻ","showStroke":"Hiển thị chọn màu","showBackground":"Hiện thị chọn màu nền","toggleTheme":"","personalLib":"Thư viện cá nhân","excalidrawLib":"Thư viện Excalidraw","decreaseFontSize":"Giảm cỡ chữ","increaseFontSize":"Tăng cỡ chữ","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"Sửa liên kết","editEmbed":"","create":"Tạo liên kết","createEmbed":"","label":"Liên kết","labelEmbed":"","empty":""},"lineEditor":{"edit":"Điều chỉnh nét","exit":"Thoát chỉnh nét"},"elementLock":{"lock":"Khoá","unlock":"Mở khoá","lockAll":"Khóa tất cả","unlockAll":"Mở khóa tất cả"},"statusPublished":"Đã đăng tải","sidebarLock":"Giữ thanh bên luôn mở","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"Chưa có món nào...","hint_emptyLibrary":"Chọn một món trên canvas để thêm nó vào đây, hoặc cài đặt thư viện từ kho lưu trữ công cộng, ở bên dưới.","hint_emptyPrivateLibrary":"Chọn một món trên canvas để thêm nó vào đây."},"buttons":{"clearReset":"Reset canvas","exportJSON":"Xuất ra tập tin","exportImage":"Xuất file ảnh...","export":"Lưu vào...","copyToClipboard":"Sao chép vào bộ nhớ tạm","save":"Lưu vào tập tin hiện tại","saveAs":"Lưu thành","load":"Mở","getShareableLink":"Tạo liên kết để chia sẻ","close":"Đóng","selectLanguage":"Chọn ngôn ngữ","scrollBackToContent":"Cuộn về nội dung chính","zoomIn":"Phóng to","zoomOut":"Thu nhỏ","resetZoom":"Đặt lại thu phóng","menu":"Bảng chọn","done":"Xong","edit":"Chỉnh sửa","undo":"Hoàn tác","redo":"Làm lại","resetLibrary":"","createNewRoom":"Tạo phòng mới","fullScreen":"Toàn màn hình","darkMode":"Chế độ tối","lightMode":"Chế độ sáng","zenMode":"Chế độ zen","objectsSnapMode":"","exitZenMode":"Thoát chể độ zen","cancel":"Hủy","clear":"Làm sạch","remove":"Xóa","embed":"","publishLibrary":"Đăng tải","submit":"Gửi","confirm":"Xác nhận","embeddableInteractionButton":""},"alerts":{"clearReset":"Điều này sẽ dọn hết canvas. Bạn có chắc không?","couldNotCreateShareableLink":"Không thể tạo đường dẫn chia sẻ.","couldNotCreateShareableLinkTooBig":"Không thể tạo đường dẫn chia sẻ: bản vẽ quá lớn","couldNotLoadInvalidFile":"Không thể load tập tin không hợp lệ","importBackendFailed":"","cannotExportEmptyCanvas":"Không thể xuất canvas trống.","couldNotCopyToClipboard":"","decryptFailed":"Không thể giải mã dữ liệu.","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"Dừng phiên sẽ ghi đè lên bản vẽ được lưu trữ cục bộ trước đó của bạn. Bạn có chắc không?\\n\\n(Nếu bạn muốn giữ bản vẽ cục bộ của mình, chỉ cần đóng tab trình duyệt.)","errorAddingToLibrary":"Không thể thêm món vào thư viện","errorRemovingFromLibrary":"Không thể xoá món khỏi thư viện","confirmAddLibrary":"Hình {{numShapes}} sẽ được thêm vào thư viện. Bạn chắc chứ?","imageDoesNotContainScene":"Hình ảnh này dường như không chứa bất kỳ dữ liệu cảnh nào. Bạn đã bật tính năng nhúng cảnh khi xuất chưa?","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"Xoá {{count}} món từ thư viện?","invalidEncryptionKey":"Khóa mã hóa phải có 22 ký tự. Hợp tác trực tiếp bị vô hiệu hóa.","collabOfflineWarning":"Không có kết nối internet.\\nThay đổi của bạn sẽ không được lưu!"},"errors":{"unsupportedFileType":"Loại tập tin không được hỗ trợ.","imageInsertError":"Không thể thêm ảnh. Hãy thử lại sau...","fileTooBig":"Tệp tin quá lớn. Dung lượng tối đa cho phép là {{maxSize}}.","svgImageInsertError":"Không thể thêm ảnh SVG. Mã SVG có vẻ sai.","failedToFetchImage":"","invalidSVGString":"SVG không hợp lệ.","cannotResolveCollabServer":"Không thể kết nối với máy chủ hợp tác. Hãy tải lại trang và thử lại.","importLibraryError":"Không thể tải thư viện","collabSaveFailed":"Không thể lưu vào cơ sở dữ liệu. Nếu vấn đề tiếp tục xảy ra, bạn nên lưu tệp vào máy để đảm bảo bạn không bị mất công việc.","collabSaveFailed_sizeExceeded":"Không thể lưu vào cơ sở dữ liệu, canvas có vẻ quá lớn. Bạn nên lưu tệp cục bộ để đảm bảo bạn không bị mất công việc.","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"Lựa chọn","image":"Chèn ảnh","rectangle":"Hình chữ nhật","diamond":"Kim cương","ellipse":"Hình elíp","arrow":"Mũi tên","line":"Đường kẻ","freedraw":"Vẽ","text":"Văn bản","library":"Thư viện","lock":"Giữ dụng cũ hiện tại sau khi vẽ","penMode":"Chế độ bút vẽ - ngăn ngừa chạm nhầm","link":"Thêm/ Chỉnh sửa liên kết cho hình được chọn","eraser":"Xóa","frame":"","embeddable":"","laser":"","hand":"Tay kéo","extraTools":""},"headings":{"canvasActions":"Hành động canvas","selectedShapeActions":"Các hành động cho hình dạng đã chọn","shapes":"Các hình khối"},"hints":{"canvasPanning":"Để di chuyển canvas, giữ con lăn chuột hoặc phím cách trong khi kéo, hoặc sử dụng công cụ cầm tay","linearElement":"Ấn để bắt đầu nhiểm điểm vẽ, kéo để vẽ một đường thẳng","freeDraw":"Ấn bà kéo, thả khi bạn xong","text":"Mẹo: bạn có thể thêm văn bản tại bất cứ đâu bằng cách ấn hai lần bằng tool lựa chọn","embeddable":"","text_selected":"Ấn 2 lần hoặc nhấn ENTER để chỉnh văn bản","text_editing":"Nhấn Escape hoặc Ctrl/Cmd+ENTER để hoàn thành chỉnh sửa","linearElementMulti":"Nhấn vào điểm cuối hoặc nhấn Escape hoặc Enter để kết thúc","lockAngle":"Bạn có thể chỉnh lại góc bằng cách giữ phím SHIFT","resize":"Bạn có thể chỉnh tỷ lệ bằng cách giữ SHIFT khi chỉnh kích cỡ,\\ngiữ ALT để chỉnh kích cỡ từ trung tâm","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"Tính năng này có thể được bật bằng cách đặt cờ \\"dom.events.asyncClipboard.clipboardItem\\" thành \\"true\\". Để thay đổi cờ trình duyệt trong Firefox, hãy truy cập trang \\"about:config\\".","disableSnapping":""},"canvasError":{"cannotShowPreview":"Không thể xem trước","canvasTooBig":"Canvas này có thể hơi lớn.","canvasTooBigTip":"Mẹo: hãy thử di chuyển các elements nhất lại gần nhau hơn một chút."},"errorSplash":{"headingMain":"","clearCanvasMessage":"Nếu không tải lại được, hãy thử ","clearCanvasCaveat":" Điều này sẽ dẫn đến mất dữ liệu bạn đã làm ","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":"Dọn canvas"},"publishDialog":{"title":"","itemName":"Tên món","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"Từng món trong thư viện phải có tên riêng để có thể lọc. Các món thư viện sau đây sẽ thêm:","atleastOneLibItem":"Vui lòng chọn ít nhất một món thư viện để bắt đầu","republishWarning":"Lưu ý: một số món đã chọn được đánh dấu là đã xuất bản/đã gửi. Bạn chỉ nên gửi lại các món khi cập nhật thư viện hiện có hoặc gửi."},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":"Xóa món đã chọn khỏi thư viện"},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"canvas","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js b/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js new file mode 100644 index 0000000..2399766 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-CN-json-069c304b5011429be615.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4680],{1037:function(e){e.exports=JSON.parse('{"labels":{"paste":"粘贴","pasteAsPlaintext":"粘贴为纯文本","pasteCharts":"粘贴图表","selectAll":"全部选中","multiSelect":"添加元素到选区","moveCanvas":"移动画布","cut":"剪切","copy":"拷贝","copyAsPng":"复制为 PNG 到剪贴板","copyAsSvg":"复制为 SVG 到剪贴板","copyText":"复制文本到剪贴板","bringForward":"上移一层","sendToBack":"置于底层","bringToFront":"置于顶层","sendBackward":"下移一层","delete":"删除","copyStyles":"拷贝样式","pasteStyles":"粘贴样式","stroke":"描边","background":"背景","fill":"填充","strokeWidth":"描边宽度","strokeStyle":"边框样式","strokeStyle_solid":"实线","strokeStyle_dashed":"虚线","strokeStyle_dotted":"点虚线","sloppiness":"线条风格","opacity":"透明度","textAlign":"文本对齐","edges":"边角","sharp":"尖锐","round":"圆润","arrowheads":"端点","arrowhead_none":"无","arrowhead_arrow":"箭头","arrowhead_bar":"条状","arrowhead_dot":"圆点","arrowhead_triangle":"三角箭头","fontSize":"字体大小","fontFamily":"字体","addWatermark":"添加 “使用 Excalidraw 创建” 水印","handDrawn":"手写","normal":"普通","code":"代码","small":"小","medium":"中","large":"大","veryLarge":"加大","solid":"实心","hachure":"线条","zigzag":"之字形折线","crossHatch":"交叉线条","thin":"细","bold":"粗","left":"左对齐","center":"居中","right":"右对齐","extraBold":"特粗","architect":"朴素","artist":"艺术","cartoonist":"漫画家","fileTitle":"文件名","colorPicker":"取色器","canvasColors":"画布上的","canvasBackground":"画布背景","drawingCanvas":"绘制 Canvas","layers":"图层","actions":"操作","language":"语言","liveCollaboration":"实时协作...","duplicateSelection":"复制","untitled":"无标题","name":"名字","yourName":"您的姓名","madeWithExcalidraw":"使用 Excalidraw 创建","group":"编组","ungroup":"解除编组","collaborators":"协作者","showGrid":"显示网格","addToLibrary":"添加到素材库中","removeFromLibrary":"从素材库中移除","libraryLoadingMessage":"正在加载素材库…","libraries":"浏览素材库","loadingScene":"正在加载绘图…","align":"对齐","alignTop":"顶部对齐","alignBottom":"底端对齐","alignLeft":"左对齐","alignRight":"右对齐","centerVertically":"垂直居中","centerHorizontally":"水平居中","distributeHorizontally":"水平等距分布","distributeVertically":"垂直等距分布","flipHorizontal":"水平翻转","flipVertical":"垂直翻转","viewMode":"查看模式","share":"分享","showStroke":"显示描边颜色选择器","showBackground":"显示背景颜色选择器","toggleTheme":"切换主题","personalLib":"个人素材库","excalidrawLib":"Excalidraw 素材库","decreaseFontSize":"缩小字体大小","increaseFontSize":"放大字体大小","unbindText":"取消文本绑定","bindText":"将文本绑定到容器","createContainerFromText":"将文本包围在容器中","link":{"edit":"编辑链接","editEmbed":"编辑链接与嵌入","create":"新建链接","createEmbed":"创建链接与嵌入","label":"链接","labelEmbed":"链接与嵌入","empty":"未设定链接"},"lineEditor":{"edit":"编辑线条","exit":"退出线条编辑"},"elementLock":{"lock":"锁定","unlock":"解除锁定","lockAll":"全部锁定","unlockAll":"全部解锁"},"statusPublished":"已发布","sidebarLock":"侧边栏常驻","selectAllElementsInFrame":"选择画框中的所有元素","removeAllElementsFromFrame":"分离出画框中的所有元素","eyeDropper":"从画布上取色"},"library":{"noItems":"尚未添加任何项目……","hint_emptyLibrary":"选中画布上的项目添加到此处,或从下方的公共素材库中导入。","hint_emptyPrivateLibrary":"选中画布上的项目添加到此处。"},"buttons":{"clearReset":"重置画布","exportJSON":"导出为文件","exportImage":"导出图片...","export":"保存到...","copyToClipboard":"复制到剪贴板","save":"保存至当前文件","saveAs":"保存为","load":"打开","getShareableLink":"获取共享链接","close":"关闭","selectLanguage":"选择语言","scrollBackToContent":"滚动回到内容","zoomIn":"放大","zoomOut":"缩小","resetZoom":"重置缩放","menu":"菜单","done":"完成","edit":"编辑","undo":"撤销","redo":"重做","resetLibrary":"重置素材库","createNewRoom":"新建会议室","fullScreen":"全屏","darkMode":"深色模式","lightMode":"浅色模式","zenMode":"禅模式","objectsSnapMode":"吸附至对象","exitZenMode":"退出禅模式","cancel":"取消","clear":"清除","remove":"删除","embed":"切换嵌入","publishLibrary":"发布","submit":"提交","confirm":"确定","embeddableInteractionButton":"点击以开始交互"},"alerts":{"clearReset":"这将会清除整个画布。您是否要继续?","couldNotCreateShareableLink":"无法创建共享链接","couldNotCreateShareableLinkTooBig":"无法创建可共享链接:画布过大","couldNotLoadInvalidFile":"无法加载无效的文件","importBackendFailed":"从后端导入失败。","cannotExportEmptyCanvas":"无法导出空白画布。","couldNotCopyToClipboard":"无法复制到剪贴板。","decryptFailed":"无法解密数据。","uploadedSecurly":"上传已被端到端加密保护,这意味着 Excalidraw 的服务器和第三方都无法读取内容。","loadSceneOverridePrompt":"加载外部绘图将取代您现有的内容。您想要继续吗?","collabStopOverridePrompt":"停止会话将覆盖您先前本地存储的绘图。 您确定吗?\\n\\n(如果您想保持本地绘图,只需关闭浏览器选项卡。)","errorAddingToLibrary":"无法将项目添加到素材库中","errorRemovingFromLibrary":"无法从素材库中移除项目","confirmAddLibrary":"这将添加 {{numShapes}} 个形状到您的素材库中。您确定吗?","imageDoesNotContainScene":"此图像似乎不包含任何画布数据。您是否在导出时启用了画布嵌入功能?","cannotRestoreFromImage":"无法从此图像文件恢复画布","invalidSceneUrl":"无法从提供的 URL 导入场景。它或者格式不正确,或者不包含有效的 Excalidraw JSON 数据。","resetLibrary":"这将会清除你的素材库。你确定要这么做吗?","removeItemsFromsLibrary":"确定要从素材库中删除 {{count}} 个项目吗?","invalidEncryptionKey":"密钥必须包含22个字符。实时协作已被禁用。","collabOfflineWarning":"无网络连接。\\n您的改动将不会被保存!"},"errors":{"unsupportedFileType":"不支持的文件格式。","imageInsertError":"无法插入图像。请稍后再试……","fileTooBig":"文件过大。最大允许的大小为 {{maxSize}}。","svgImageInsertError":"无法插入 SVG 图像。该 SVG 标记似乎是无效的。","failedToFetchImage":"","invalidSVGString":"无效的 SVG。","cannotResolveCollabServer":"无法连接到实时协作服务器。请重新加载页面并重试。","importLibraryError":"无法加载素材库","collabSaveFailed":"无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。","collabSaveFailed_sizeExceeded":"无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。","brave_measure_text_error":{"line1":"您似乎正在使用 Brave 浏览器并启用了积极阻止指纹识别的设置。","line2":"这可能会破坏绘图中的 文本元素。","line3":"我们强烈建议禁用此设置。您可以按照这些步骤来设置。","line4":"如果禁用此设置无法修复文本元素的显示,请在 GitHub 上提交一个 issue ,或者在 Discord 上反馈"},"libraryElementTypeError":{"embeddable":"嵌入元素不能添加到素材库。","image":"我们不久将支持添加图片到素材库"}},"toolBar":{"selection":"选择","image":"插入图像","rectangle":"矩形","diamond":"菱形","ellipse":"椭圆","arrow":"箭头","line":"线条","freedraw":"自由书写","text":"文字","library":"素材库","lock":"绘制后保持所选的工具栏状态","penMode":"笔模式 – 避免误触","link":"为选中的形状添加/更新链接","eraser":"橡皮","frame":"画框工具","embeddable":"嵌入网页","laser":"激光笔","hand":"抓手(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"画布动作","selectedShapeActions":"选定形状操作","shapes":"形状"},"hints":{"canvasPanning":"要移动画布,请按住鼠标滚轮或空格键同时拖拽鼠标,或使用抓手工具。","linearElement":"点击创建多个点 拖动创建直线","freeDraw":"点击并拖动,完成时松开","text":"提示:您也可以使用选择工具双击任意位置来添加文字","embeddable":"点击并拖动以创建嵌入网页","text_selected":"双击或按回车键以编辑文本","text_editing":"按下 Escape 或 CtrlOrCmd+ENTER 完成编辑","linearElementMulti":"点击最后一个点或按下 Esc/Enter 来完成","lockAngle":"可以按住 Shift 来约束角度","resize":"您可以按住SHIFT来限制比例大小,\\n按住ALT来调整中心大小","resizeImage":"按住SHIFT可以自由缩放,\\n按住ALT可以从中间缩放","rotate":"旋转时可以按住 Shift 来约束角度","lineEditor_info":"按住 CtrlOrCmd 并双击或按 CtrlOrCmd + Enter 来编辑点","lineEditor_pointSelected":"按下 Delete 移除点,CtrlOrCmd+D 以复制,拖动以移动","lineEditor_nothingSelected":"选择要编辑的点 (按住 SHIFT 选择多个),\\n或按住 Alt 并点击以添加新点","placeImage":"点击放置图像,或者点击并拖动以手动设置图像大小","publishLibrary":"发布您自己的素材库","bindTextToElement":"按下 Enter 以添加文本","deepBoxSelect":"按住 CtrlOrCmd 以深度选择,并避免拖拽","eraserRevert":"按住 Alt 以反选被标记删除的元素","firefox_clipboard_write":"将高级配置首选项“dom.events.asyncClipboard.clipboardItem”设置为“true”可以启用此功能。要更改 Firefox 的高级配置首选项,请前往“about:config”页面。","disableSnapping":"按住 CtrlOrCmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"无法显示预览","canvasTooBig":"画布可能过大。","canvasTooBigTip":"提示:尝试将最远的元素移动到和其它元素更近一些。"},"errorSplash":{"headingMain":"遇到异常。请尝试。","clearCanvasMessage":"如果重新加载页面无效,请尝试。","clearCanvasCaveat":"这会造成当前工作丢失","trackedToSentry":"标识符为{{eventId}}的错误已在我们的系统中被记录","openIssueMessage":"我们非常谨慎地处理错误信息,您的画布内容不会被包含在错误报告中。如果您的画布内容不需要保持私密,请考虑在我们的 上提供更多信息。请复制粘贴以下信息到 GitHub Issue 中。","sceneContent":"画布内容:"},"roomDialog":{"desc_intro":"你可以邀请其他人到目前的画面中与你协作。","desc_privacy":"别担心,该会话使用端到端加密,无论绘制什么都将保持私密,甚至连我们的服务器也无法查看。","button_startSession":"开始会话","button_stopSession":"结束会话","desc_inProgressIntro":"实时协作会话进行中。","desc_shareLink":"分享此链接给你要协作的用户","desc_exitSession":"停止会话将中断您与房间的连接,但您依然可以在本地继续使用画布。请注意,这不会影响到其他用户,他们仍可以在他们的版本上继续协作。","shareTitle":"加入 Excalidraw 实时协作会话"},"errorDialog":{"title":"错误"},"exportDialog":{"disk_title":"保存到本地","disk_details":"将画布数据导出为文件,以便以后导入","disk_button":"保存为文件","link_title":"分享链接","link_details":"导出为只读链接。","link_button":"导出链接","excalidrawplus_description":"将画布保存到您的 Excalidraw+ 工作区。","excalidrawplus_button":"导出","excalidrawplus_exportError":"暂时无法导出到 Excalidraw+ ..."},"helpDialog":{"blog":"浏览我们的博客","click":"单击","deepSelect":"深度选择","deepBoxSelect":"在方框内深度选择并避免拖拽","curvedArrow":"曲线箭头","curvedLine":"曲线","documentation":"文档","doubleClick":"双击","drag":"拖动","editor":"编辑器","editLineArrowPoints":"编辑线条或箭头的点","editText":"添加或编辑文本","github":"提交问题","howto":"帮助文档","or":"或","preventBinding":"禁用箭头吸附","tools":"工具","shortcuts":"快捷键列表","textFinish":"完成编辑 (文本编辑器)","textNewLine":"添加新行(文本编辑器)","title":"帮助","view":"视图","zoomToFit":"缩放以适应所有元素","zoomToSelection":"缩放到选区","toggleElementLock":"锁定/解锁","movePageUpDown":"上下移动页面","movePageLeftRight":"左右移动页面"},"clearCanvasDialog":{"title":"清除画布"},"publishDialog":{"title":"发布素材库","itemName":"项目名称","authorName":"作者名","githubUsername":"GitHub 用户名","twitterUsername":"Twitter 用户名","libraryName":"名称","libraryDesc":"简介","website":"网址","placeholder":{"authorName":"您的名字或用户名","libraryName":"素材库名称","libraryDesc":"介绍您的素材库,让人们了解其用途","githubHandle":"GitHub 用户名(可选),填写后,您可以编辑已提交待审的素材库","twitterHandle":"Twitter 用户名(可选),填写后,当我们在Twitter发布推广信息时便可提及您","website":"您个人网站的或任意的链接(可选)"},"errors":{"required":"必填","website":"输入一个有效的URL"},"noteDescription":"提交后,您的素材库将被包含在公共素材库广场以供其他人在绘图中使用。","noteGuidelines":"提交的素材库需先经人工审核。在提交之前,请先阅读指南 。后续沟通和对库的修改需要 GitHub 账号,但这不是必须的。","noteLicense":"提交即表明您已同意素材库将遵循 MIT 许可证,简而言之,任何人都可以不受限制地使用它们。","noteItems":"素材库中每个项目都有各自的名称以供筛选。以下项目将被包含:","atleastOneLibItem":"请选择至少一个素材库以开始","republishWarning":"注意:部分选中的项目已经发布或提交。请仅在更新已有或已提交的素材库时重复提交项目。"},"publishSuccessDialog":{"title":"素材库已提交","content":"谢谢你 {{authorName}}。您的素材库已被提交审核。请点击此处跟进此次提交的状态"},"confirmDialog":{"resetLibrary":"重置素材库","removeItemsFromLib":"从素材库中删除选中的项目"},"imageExportDialog":{"header":"导出图片","label":{"withBackground":"背景","onlySelected":"仅选中","darkMode":"深色模式","embedScene":"包含画布数据","scale":"缩放比例","padding":"内边距"},"tooltip":{"embedScene":"画布数据将被保存到导出的 PNG/SVG 文件,以便恢复。\\n将会增加导出文件的大小。"},"title":{"exportToPng":"导出为 PNG","exportToSvg":"导出为 SVG","copyPngToClipboard":"复制 PNG 到剪切板"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"复制到剪贴板"}},"encrypted":{"tooltip":"您的绘图采用端到端加密,其内容对于 Excalidraw 服务器是不可见的。","link":"Excalidraw 中关于端到端加密的博客"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"画布","selected":"选中","storage":"存储","title":"详细统计信息","total":"总计","version":"版本","versionCopy":"点击复制","versionNotAvailable":"版本不可用","width":"宽度"},"toast":{"addedToLibrary":"添加到素材库中","copyStyles":"样式已拷贝。","copyToClipboard":"已复制到剪切板。","copyToClipboardAsPng":"已将 {{exportSelection}} 作为 PNG 复制到剪贴板\\n({{exportColorScheme}})","fileSaved":"文件已保存。","fileSavedToFilename":"保存到 {filename}","canvas":"画布","selection":"所选项","pasteAsSingleElement":"使用 {{shortcut}} 粘贴为单个元素,\\n或粘贴到现有的文本编辑器里","unableToEmbed":"目前不允许嵌入此网址。请在 GitHub 上提 issue 请求将此网址加入白名单","unrecognizedLinkFormat":"您嵌入的链接不符合格式要求。请尝试粘贴源网站提供的“嵌入 (embed)”字符串"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"红","pink":"粉红","grape":"紫红","violet":"蓝紫","gray":"灰","blue":"蓝","cyan":"青","teal":"蓝绿","green":"绿","yellow":"黄","orange":"橙","bronze":"古铜"},"welcomeScreen":{"app":{"center_heading":"您的所有数据都储存在浏览器本地。","center_heading_plus":"是否前往 Excalidraw+ ?","menuHint":"导出、首选项、语言……"},"defaults":{"menuHint":"导出、首选项……","center_heading":"图,化繁为简。","toolbarHint":"选择工具并开始绘图!","helpHint":"快捷键和帮助"}},"colorPicker":{"mostUsedCustomColors":"常用自定义颜色","colors":"颜色","shades":"色调明暗","hexCode":"十六进制值","noShades":"此颜色没有可用的明暗变化"},"overwriteConfirm":{"action":{"exportToImage":{"title":"导出为图片","button":"导出为图片","description":"将画布数据导出为图片,以便以后导入。"},"saveToDisk":{"title":"保存到本地","button":"保存到本地","description":"将画布数据导出为文件,以便以后导入。"},"excalidrawPlus":{"title":"Excalidraw+","button":"导出到 Excalidraw+","description":"将画布保存到您的 Excalidraw+ 工作区。"}},"modal":{"loadFromFile":{"title":"从文件加载","button":"从文件加载","description":"从文件加载将替换您现有的内容

您可以先使用下列方式备份您的绘图。"},"shareableLink":{"title":"从链接加载","button":"替换我的内容","description":"加载外部绘图将替换您现有的内容

您可以先使用下列方式备份您的绘图。"}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js b/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js new file mode 100644 index 0000000..81c186c --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-HK-json-d9bf1e4e2d1f8650c680.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[7920],{5334:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"多重選取","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以 PNG 格式複製","copyAsSvg":"以 SVG 格式複製","copyText":"","bringForward":"往上一層移動","sendToBack":"移到最底層","bringToFront":"移到最上層","sendBackward":"往下一層移動","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"套用樣式","stroke":"筆跡顏色","background":"填充顏色","fill":"背景樣式","strokeWidth":"筆跡寬度","strokeStyle":"筆跡線條","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線(較密)","strokeStyle_dotted":"虛線(較疏)","sloppiness":"筆跡風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊角樣式","sharp":"銳角","round":"圓角","arrowheads":"箭嘴","arrowhead_none":"無箭嘴","arrowhead_arrow":"普通箭嘴","arrowhead_bar":"平頭條狀","arrowhead_dot":"圓點","arrowhead_triangle":"三角箭嘴","fontSize":"字型大小","fontFamily":"字體","addWatermark":"加入「使用 Excalidraw 製圖」水印","handDrawn":"手繪體","normal":"電腦字體","code":"等寬體","small":"細","medium":"中","large":"大","veryLarge":"勁大","solid":"實心","hachure":"斜線","zigzag":"","crossHatch":"交叉格仔","thin":"幼","bold":"粗","left":"靠左對齊","center":"置中對齊","right":"靠右對齊","extraBold":"勁粗","architect":"手繪風格","artist":"藝術家風格","cartoonist":"卡通風格","fileTitle":"檔案名稱","colorPicker":"","canvasColors":"","canvasBackground":"畫布背景顏色","drawingCanvas":"畫布","layers":"圖層","actions":"動作","language":"🌏 語言","liveCollaboration":"","duplicateSelection":"製作副本","untitled":"未命名的作品","name":"","yourName":"你的名稱","madeWithExcalidraw":"使用 Excalidraw 製圖","group":"建立物件群組","ungroup":"取消物件群組","collaborators":"已連線的協作者","showGrid":"顯示網格","addToLibrary":"加入作品庫","removeFromLibrary":"從作品庫中移除","libraryLoadingMessage":"正在載入作品庫…","libraries":"瀏覽作品庫","loadingScene":"載入畫布中…","align":"物件對齊","alignTop":"水平置頂","alignBottom":"水平置底","alignLeft":"垂直靠左對齊","alignRight":"垂直靠右對齊","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"左右等距","distributeVertically":"上下等距","flipHorizontal":"左右反轉","flipVertical":"上下反轉","viewMode":"唯讀模式","share":"","showStroke":"","showBackground":"","toggleTheme":"","personalLib":"","excalidrawLib":"","decreaseFontSize":"","increaseFontSize":"","unbindText":"","bindText":"","createContainerFromText":"","link":{"edit":"","editEmbed":"","create":"","createEmbed":"","label":"","labelEmbed":"","empty":""},"lineEditor":{"edit":"","exit":""},"elementLock":{"lock":"","unlock":"","lockAll":"","unlockAll":""},"statusPublished":"","sidebarLock":"","selectAllElementsInFrame":"","removeAllElementsFromFrame":"","eyeDropper":""},"library":{"noItems":"","hint_emptyLibrary":"","hint_emptyPrivateLibrary":""},"buttons":{"clearReset":"清空畫布","exportJSON":"","exportImage":"","export":"","copyToClipboard":"","save":"","saveAs":"","load":"","getShareableLink":"","close":"","selectLanguage":"","scrollBackToContent":"","zoomIn":"","zoomOut":"","resetZoom":"","menu":"","done":"","edit":"","undo":"","redo":"","resetLibrary":"","createNewRoom":"","fullScreen":"","darkMode":"","lightMode":"","zenMode":"","objectsSnapMode":"","exitZenMode":"","cancel":"","clear":"","remove":"","embed":"","publishLibrary":"","submit":"","confirm":"","embeddableInteractionButton":""},"alerts":{"clearReset":"【‼️ 警告 ‼️ 無法復原的動作】你確定要清空呢塊畫布嗎?","couldNotCreateShareableLink":"","couldNotCreateShareableLinkTooBig":"","couldNotLoadInvalidFile":"","importBackendFailed":"","cannotExportEmptyCanvas":"無嘢可以匯出喎~畫吓嘢先?","couldNotCopyToClipboard":"","decryptFailed":"","uploadedSecurly":"","loadSceneOverridePrompt":"","collabStopOverridePrompt":"","errorAddingToLibrary":"","errorRemovingFromLibrary":"","confirmAddLibrary":"","imageDoesNotContainScene":"","cannotRestoreFromImage":"","invalidSceneUrl":"","resetLibrary":"","removeItemsFromsLibrary":"","invalidEncryptionKey":"","collabOfflineWarning":""},"errors":{"unsupportedFileType":"","imageInsertError":"","fileTooBig":"","svgImageInsertError":"","failedToFetchImage":"","invalidSVGString":"","cannotResolveCollabServer":"","importLibraryError":"","collabSaveFailed":"","collabSaveFailed_sizeExceeded":"","brave_measure_text_error":{"line1":"","line2":"","line3":"","line4":""},"libraryElementTypeError":{"embeddable":"","image":""}},"toolBar":{"selection":"","image":"","rectangle":"","diamond":"","ellipse":"","arrow":"","line":"","freedraw":"","text":"","library":"","lock":"","penMode":"","link":"","eraser":"","frame":"","embeddable":"","laser":"","hand":"","extraTools":""},"headings":{"canvasActions":"畫布動作","selectedShapeActions":"","shapes":""},"hints":{"canvasPanning":"","linearElement":"","freeDraw":"","text":"","embeddable":"","text_selected":"","text_editing":"","linearElementMulti":"","lockAngle":"","resize":"","resizeImage":"","rotate":"","lineEditor_info":"","lineEditor_pointSelected":"","lineEditor_nothingSelected":"","placeImage":"","publishLibrary":"","bindTextToElement":"","deepBoxSelect":"","eraserRevert":"","firefox_clipboard_write":"","disableSnapping":""},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"塊畫布太大啦,縮細啲先啦?","canvasTooBigTip":""},"errorSplash":{"headingMain":"","clearCanvasMessage":"如果重新整理頁面都係睇唔到,你可以","clearCanvasCaveat":"(注意:呢個動作會直接丟棄你嘅作品,並且無法復原)","trackedToSentry":"","openIssueMessage":"","sceneContent":""},"roomDialog":{"desc_intro":"","desc_privacy":"","button_startSession":"","button_stopSession":"","desc_inProgressIntro":"","desc_shareLink":"","desc_exitSession":"","shareTitle":""},"errorDialog":{"title":""},"exportDialog":{"disk_title":"","disk_details":"","disk_button":"","link_title":"","link_details":"","link_button":"","excalidrawplus_description":"","excalidrawplus_button":"","excalidrawplus_exportError":""},"helpDialog":{"blog":"","click":"","deepSelect":"","deepBoxSelect":"","curvedArrow":"","curvedLine":"","documentation":"","doubleClick":"","drag":"","editor":"","editLineArrowPoints":"","editText":"","github":"","howto":"","or":"","preventBinding":"","tools":"","shortcuts":"","textFinish":"","textNewLine":"","title":"","view":"","zoomToFit":"","zoomToSelection":"","toggleElementLock":"","movePageUpDown":"","movePageLeftRight":""},"clearCanvasDialog":{"title":""},"publishDialog":{"title":"","itemName":"","authorName":"","githubUsername":"","twitterUsername":"","libraryName":"","libraryDesc":"","website":"","placeholder":{"authorName":"","libraryName":"","libraryDesc":"","githubHandle":"","twitterHandle":"","website":""},"errors":{"required":"","website":""},"noteDescription":"","noteGuidelines":"","noteLicense":"","noteItems":"","atleastOneLibItem":"","republishWarning":""},"publishSuccessDialog":{"title":"","content":""},"confirmDialog":{"resetLibrary":"","removeItemsFromLib":""},"imageExportDialog":{"header":"","label":{"withBackground":"","onlySelected":"","darkMode":"","embedScene":"","scale":"","padding":""},"tooltip":{"embedScene":""},"title":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""},"button":{"exportToPng":"","exportToSvg":"","copyPngToClipboard":""}},"encrypted":{"tooltip":"","link":""},"stats":{"angle":"","element":"","elements":"","height":"","scene":"","selected":"","storage":"","title":"","total":"","version":"","versionCopy":"","versionNotAvailable":"","width":""},"toast":{"addedToLibrary":"","copyStyles":"","copyToClipboard":"","copyToClipboardAsPng":"","fileSaved":"","fileSavedToFilename":"","canvas":"畫布","selection":"","pasteAsSingleElement":"","unableToEmbed":"","unrecognizedLinkFormat":""},"colors":{"transparent":"","black":"","white":"","red":"","pink":"","grape":"","violet":"","gray":"","blue":"","cyan":"","teal":"","green":"","yellow":"","orange":"","bronze":""},"welcomeScreen":{"app":{"center_heading":"","center_heading_plus":"","menuHint":""},"defaults":{"menuHint":"","center_heading":"","toolbarHint":"","helpHint":""}},"colorPicker":{"mostUsedCustomColors":"","colors":"","shades":"","hexCode":"","noShades":""},"overwriteConfirm":{"action":{"exportToImage":{"title":"","button":"","description":""},"saveToDisk":{"title":"","button":"","description":""},"excalidrawPlus":{"title":"","button":"","description":""}},"modal":{"loadFromFile":{"title":"","button":"","description":""},"shareableLink":{"title":"","button":"","description":""}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js b/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js new file mode 100644 index 0000000..4922c6b --- /dev/null +++ b/public/excalidraw/excalidraw-assets/locales/zh-TW-json-5a3fa7cacfa83c411d89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[3421],{931:function(e){e.exports=JSON.parse('{"labels":{"paste":"貼上","pasteAsPlaintext":"以純文字貼上","pasteCharts":"貼上圖表","selectAll":"全選","multiSelect":"將物件加入選取範圍","moveCanvas":"移動畫布","cut":"剪下","copy":"複製","copyAsPng":"以PNG格式儲存到剪貼板","copyAsSvg":"以SVG格式複製到剪貼板","copyText":"以文字格式複製至剪貼簿","bringForward":"上移一層","sendToBack":"移到最底層","bringToFront":"置於最頂層","sendBackward":"往後移一層","delete":"刪除","copyStyles":"複製樣式","pasteStyles":"貼上樣式","stroke":"筆畫","background":"背景","fill":"填滿","strokeWidth":"筆跡寬度","strokeStyle":"筆畫樣式","strokeStyle_solid":"實線","strokeStyle_dashed":"虛線","strokeStyle_dotted":"點線","sloppiness":"線條風格","opacity":"透明度","textAlign":"文字對齊","edges":"邊緣","sharp":"尖銳","round":"平滑","arrowheads":"箭頭","arrowhead_none":"無","arrowhead_arrow":"箭頭","arrowhead_bar":"條狀箭頭","arrowhead_dot":"點箭頭","arrowhead_triangle":"三角形","fontSize":"字型大小","fontFamily":"字體集","addWatermark":"加上 \\"Made with Excalidraw\\" 浮水印","handDrawn":"手寫","normal":"一般","code":"代碼","small":"小","medium":"中","large":"大","veryLarge":"特大","solid":"實心","hachure":"斜線筆觸","zigzag":"Z字形","crossHatch":"交叉筆觸","thin":"細","bold":"粗","left":"左側","center":"置中","right":"右側","extraBold":"極粗","architect":"精確","artist":"藝術","cartoonist":"卡通","fileTitle":"檔案名稱","colorPicker":"色彩選擇工具","canvasColors":"使用於畫布","canvasBackground":"Canvas 背景","drawingCanvas":"繪圖 canvas","layers":"圖層","actions":"動作","language":"語言","liveCollaboration":"即時協作...","duplicateSelection":"複製","untitled":"無標題","name":"名稱","yourName":"你的名稱","madeWithExcalidraw":"以 Excalidraw 製作","group":"建立群組","ungroup":"取消群組","collaborators":"協作者","showGrid":"顯示格線","addToLibrary":"加入資料庫","removeFromLibrary":"從資料庫中移除","libraryLoadingMessage":"資料庫讀取中…","libraries":"瀏覽資料庫","loadingScene":"場景讀取中…","align":"對齊","alignTop":"對齊頂部","alignBottom":"對齊底部","alignLeft":"對齊左側","alignRight":"對齊右側","centerVertically":"垂直置中","centerHorizontally":"水平置中","distributeHorizontally":"水平分布","distributeVertically":"垂直分布","flipHorizontal":"水平翻轉","flipVertical":"垂直翻轉","viewMode":"檢視模式","share":"共享","showStroke":"顯示線條檢色器","showBackground":"顯示背景檢色器","toggleTheme":"切換主題","personalLib":"個人資料庫","excalidrawLib":"Excalidraw 資料庫","decreaseFontSize":"縮小文字","increaseFontSize":"放大文字","unbindText":"取消綁定文字","bindText":"結合文字至容器","createContainerFromText":"將文字包於容器中","link":{"edit":"編輯連結","editEmbed":"編輯連結&嵌入","create":"建立連結","createEmbed":"建立連結&嵌入","label":"連結","labelEmbed":"連結&嵌入","empty":"未設定連結"},"lineEditor":{"edit":"編輯線條","exit":"結束線條編輯"},"elementLock":{"lock":"鎖定","unlock":"解鎖","lockAll":"全部鎖定","unlockAll":"全部解鎖"},"statusPublished":"已發布","sidebarLock":"側欄維持開啟","selectAllElementsInFrame":"選取框架內的所有元素","removeAllElementsFromFrame":"從框架內移除所有元素","eyeDropper":"從畫布中選取顏色"},"library":{"noItems":"尚未加入任何物件...","hint_emptyLibrary":"選取畫布上的物件以加入,或從下方的公開 repository 中安裝資料庫","hint_emptyPrivateLibrary":"選擇畫布上的物件以在此加入"},"buttons":{"clearReset":"重置 canvas","exportJSON":"匯出至檔案","exportImage":"匯出圖片","export":"儲存至...","copyToClipboard":"複製至剪貼簿","save":"儲存目前檔案","saveAs":"儲存為","load":"開啟","getShareableLink":"取得共享連結","close":"關閉","selectLanguage":"選擇語言","scrollBackToContent":"捲動回到內容","zoomIn":"放大","zoomOut":"縮小","resetZoom":"重設縮放","menu":"選單","done":"完成","edit":"編輯","undo":"復原","redo":"重做","resetLibrary":"重設資料庫","createNewRoom":"建立新協作會議室","fullScreen":"全螢幕","darkMode":"深色模式","lightMode":"淺色模式","zenMode":"專注模式","objectsSnapMode":"吸附至物件","exitZenMode":"離開專注模式","cancel":"取消","clear":"清除","remove":"刪除","embed":"切換嵌入","publishLibrary":"發布","submit":"送出","confirm":"確認","embeddableInteractionButton":"點擊以互動"},"alerts":{"clearReset":"這將會清除整個 canvas。你確定嗎?","couldNotCreateShareableLink":"無法建立共享連結。","couldNotCreateShareableLinkTooBig":"無法建立共享連結:場景太大","couldNotLoadInvalidFile":"無法讀取失效的檔案。","importBackendFailed":"後端讀取失敗。","cannotExportEmptyCanvas":"無法輸出空白的 canvas。","couldNotCopyToClipboard":"無法複製到剪貼簿","decryptFailed":"無法解密資料。","uploadedSecurly":"上傳已通過 end-to-end 加密,Excalidraw 伺服器和第三方無法皆讀取其內容。","loadSceneOverridePrompt":"讀取外部圖樣將取代目前的內容。是否要繼續?","collabStopOverridePrompt":"停止連線將覆蓋您先前於本機儲存的繪圖進度,是否確認?\\n\\n(如要保留原有的本機繪圖進度,直接關閉瀏覽器分頁即可。)","errorAddingToLibrary":"無法於此資料庫加入項目","errorRemovingFromLibrary":"無法由此資料庫移除項目","confirmAddLibrary":"這將會將 {{numShapes}} 個圖形加入你的資料庫,你確定嗎?","imageDoesNotContainScene":"此圖檔中未包含場景資料。輸出檔案時是否有包含場景資料?","cannotRestoreFromImage":"無法由此檔案回復場景。","invalidSceneUrl":"無法由提供的 URL 匯入場景。可能是發生異常,或未包含有效的 Excalidraw JSON 資料。","resetLibrary":"這會清除您的資料庫,是否確定?","removeItemsFromsLibrary":"從資料庫刪除 {{count}} 項?","invalidEncryptionKey":"加密鍵必須為22字元。即時協作已停用。","collabOfflineWarning":"沒有可用的網路連線。\\n變更無法儲存!"},"errors":{"unsupportedFileType":"不支援的檔案類型。","imageInsertError":"無法插入圖片。請稍後再試…","fileTooBig":"檔案過大。可接受的最大尺寸為 {{maxSize}} 。","svgImageInsertError":"無法插入 SVG 圖片。此 SVG 檔案有問題。","failedToFetchImage":"無法獲取圖片。","invalidSVGString":"無效的 SVG。","cannotResolveCollabServer":"無法連結至 collab 伺服器。請重新整理後再試一次。","importLibraryError":"無法載入資料庫","collabSaveFailed":"無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。","collabSaveFailed_sizeExceeded":"無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。","brave_measure_text_error":{"line1":"看起來您開啟了 Brave 瀏覽器的 Aggressively Block Fingerprinting 設定。","line2":"這可能造成您畫布中 文字元素 的異常。","line3":"我們強烈建議您關閉此設定。您可以依照 這些步驟 來進行。","line4":"若關閉此設定並未修復文字元素的顯示問題,請回報於我們 GitHub 上的 issue,或在 Discord 上告訴我們。"},"libraryElementTypeError":{"embeddable":"可嵌入元素無法加入資料庫","image":"即將支援加入圖片至資料庫!"}},"toolBar":{"selection":"選取","image":"插入圖片","rectangle":"長方形","diamond":"菱形","ellipse":"橢圓","arrow":"箭頭","line":"線條","freedraw":"繪圖","text":"文字","library":"資料庫","lock":"可連續使用選取的工具","penMode":"筆模式 - 避免觸摸","link":"為所選的形狀增加\\b/更新連結","eraser":"橡皮擦","frame":"框架工具","embeddable":"嵌入網站","laser":"雷射筆","hand":"手形(平移工具)","extraTools":"更多工具"},"headings":{"canvasActions":"canvas 動作","selectedShapeActions":"選取圖形動作","shapes":"形狀"},"hints":{"canvasPanning":"若要移動畫布,請在拖曳時按住滑鼠滾輪或空白鍵,或使用手形工具","linearElement":"點擊以繪製多點曲線;或拖曳以繪製直線","freeDraw":"點擊並拖曳來繪圖,放開即結束","text":"提示:亦可使用選取工具在任何地方雙擊來加入文字","embeddable":"點擊並拖移以建立嵌入網站","text_selected":"雙擊滑鼠或按 Enter 以編輯文字","text_editing":"按跳脫鍵或 Ctrl 或 Cmd + Enter 以結束編輯","linearElementMulti":"按下 Escape 或 Enter 以結束繪製","lockAngle":"按住 SHIFT 可限制旋轉角度","resize":"縮放時按住 Shift 可保持原比例縮放;\\\\n按住 Alt 可由中心點進行縮放","resizeImage":"按住 SHIFT 可任意縮放,按住 ALT 可由中央縮放。","rotate":"旋轉時按住 Shift 可限制旋轉角度","lineEditor_info":"按住 Ctrl 或 Cmd 並雙擊或按住 Ctrl 或 Cmd + Enter 來編輯控制點","lineEditor_pointSelected":"按下 Delete 可移除錨點;Ctrl 或 Cmd + D 可複製;或可拖曳來移動","lineEditor_nothingSelected":"選擇要編輯的錨點(按住 SHIFT 可多選),\\n或按住 Alt 並點擊以增加新錨點。","placeImage":"點擊以放置圖片,或點擊並拖曳以手動調整其尺寸。","publishLibrary":"發布個人資料庫","bindTextToElement":"按下 Enter 以加入文字。","deepBoxSelect":"按住 Ctrl 或 Cmd 以深度選取並避免拖曳","eraserRevert":"按住 Alt 以反選取已標記待刪除的元素","firefox_clipboard_write":"此功能有機會透過將 \\"dom.events.asyncClipboard.clipboardItem\\" 設定為 \\"true\\" 來開啟。\\n若要變更 Firefox 瀏覽器的此設定值,請至 \\"about:config\\" 頁面。","disableSnapping":"按住 Ctrl 或 Cmd 以禁用吸附"},"canvasError":{"cannotShowPreview":"無法顯示預覽","canvasTooBig":"畫布可能過大","canvasTooBigTip":"提示:可嘗試將最遠的元素移動至較集中的位置"},"errorSplash":{"headingMain":"發生錯誤,嘗試","clearCanvasMessage":"若重新載入仍無法解決問題,嘗試","clearCanvasCaveat":"此動作將造成目前的作品被移除。","trackedToSentry":"此錯誤與其識別碼{{eventId}}將由系統記錄。","openIssueMessage":"我們將謹慎處理,你的作品內容不會被包含在錯誤報告中。若你的作品不需保持私密,請考慮使用我們的請將下列資訊複製貼上至 GitHub issue 中。","sceneContent":"作品內容:"},"roomDialog":{"desc_intro":"你可以邀請其他人一起協作目前的作品。","desc_privacy":"連線使用 end-to-end 加密故無須擔心作品的安全性。即使是我們的伺服器也無法取得其內容。","button_startSession":"開始連線","button_stopSession":"停止連線","desc_inProgressIntro":"即時協作連線正在進行中。","desc_shareLink":"將此連結分享給欲協作的對象:","desc_exitSession":"停止連線將中斷你與協作會議室的連結,但你仍可於本機編輯此作品。意指停止連線後你的編輯不會被先前共同協作的人看見,且他們可繼續共同協作另一個版本。","shareTitle":"加入 Excalidraw 上的即時協作會議室"},"errorDialog":{"title":"錯誤"},"exportDialog":{"disk_title":"儲存至硬碟","disk_details":"將場景匯出為可供匯入之檔案","disk_button":"儲存至檔案","link_title":"可共享連結","link_details":"匯出為唯讀連結","link_button":"匯出為連結","excalidrawplus_description":"將此場景儲存至你的 Excalidraw+ 工作區","excalidrawplus_button":"輸出","excalidrawplus_exportError":"目前無法輸出至 Excalidraw+"},"helpDialog":{"blog":"閱讀部落格","click":"點擊","deepSelect":"深度選取","deepBoxSelect":"在容器內深度選取並避免拖曳","curvedArrow":"曲箭頭","curvedLine":"曲線","documentation":"文件","doubleClick":"雙擊","drag":"拖曳","editor":"編輯器","editLineArrowPoints":"編輯線/箭頭控制點","editText":"編輯文字/增加標籤","github":"發現異常?回報問題","howto":"參照我們的說明","or":"或","preventBinding":"避免箭號連結","tools":"工具","shortcuts":"鍵盤快速鍵","textFinish":"完成編輯(文字編輯器)","textNewLine":"換行(文字編輯器)","title":"說明","view":"檢視","zoomToFit":"放大至填滿畫面","zoomToSelection":"縮放至選取區","toggleElementLock":"鎖定/解鎖已選的項目","movePageUpDown":"向上/下移動頁面","movePageLeftRight":"向左/右移動頁面"},"clearCanvasDialog":{"title":"清除畫布"},"publishDialog":{"title":"發布資料庫","itemName":"項目名稱","authorName":"作者名稱","githubUsername":"GitHub 帳號","twitterUsername":"Twitter 帳號","libraryName":"資料庫名稱","libraryDesc":"資料庫說明","website":"網站","placeholder":{"authorName":"您的名稱或帳號","libraryName":"您的資料庫名稱","libraryDesc":"提供您的資料庫說明以利他人理解其用途","githubHandle":"Github handle(選填),填寫後您可編輯已送出待審查的資料庫","twitterHandle":"Twitter 帳號(選填),填寫後若我們在 Twitter 推廣時可提及您","website":"您個人網站或其他網站的連結(選填)"},"errors":{"required":"必填","website":"請輸入有效的 URL"},"noteDescription":"送出您的資料庫後將被包含於公開資料庫 repository以利他人在其繪圖中使用。","noteGuidelines":"資料庫需先經人工審查。請閱讀說明文件再送出。若需溝通與修改時要透過 GitHub 帳號來進行,但並非強制需求。","noteLicense":"送出即代表您同意此資料庫將發布時使用 MIT 授權,簡單來說是指任何人都能不受限制的使用。","noteItems":"每個資料庫項目都有獨立的名稱故可篩選。會包含下列資料庫項目:","atleastOneLibItem":"請選擇至少一項資料庫項目","republishWarning":"注意:部分選取中的物件先前已發布/送出過。建議僅在要更新現存資料庫或已送出的物件時才重新送出這些物件。"},"publishSuccessDialog":{"title":"資料庫已送出","content":"感謝 {{authorName}} 。您的資料庫已送出待審查。您可查看目前狀態在此"},"confirmDialog":{"resetLibrary":"重設資料庫","removeItemsFromLib":"從資料庫移除所選的項目"},"imageExportDialog":{"header":"匯出圖片","label":{"withBackground":"背景","onlySelected":"僅選取物件","darkMode":"深色模式","embedScene":"嵌入場景","scale":"縮放比例","padding":"內間距"},"tooltip":{"embedScene":"用於回復場景的場景資料會被包含在輸出的 PNG/SVG 檔案中。\\n會增加輸出的檔案大小。"},"title":{"exportToPng":"輸出成 PNG","exportToSvg":"輸出成 SVG","copyPngToClipboard":"複製 PNG 至剪貼簿"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"複製至剪貼簿"}},"encrypted":{"tooltip":"你的作品已使用 end-to-end 方式加密,Excalidraw 的伺服器也無法取得其內容。","link":"Excalidraw 端到端加密的相關部落格文章"},"stats":{"angle":"角度","element":"元素","elements":"元素","height":"高度","scene":"場景","selected":"已選","storage":"儲存","title":"詳細統計","total":"合計","version":"版本","versionCopy":"點擊複製","versionNotAvailable":"無法取得版本","width":"寬度"},"toast":{"addedToLibrary":"加入資料庫","copyStyles":"已複製樣式","copyToClipboard":"複製至剪貼簿。","copyToClipboardAsPng":"以 PNG 格式將 {{exportSelection}} 複製至剪貼簿\\n({{exportColorScheme}})","fileSaved":"已儲存檔案。","fileSavedToFilename":"儲存為 {filename}","canvas":"畫布","selection":"已選項目","pasteAsSingleElement":"使用 {{shortcut}} 以做為單一物件貼上,\\n或貼上至現有的文字編輯器","unableToEmbed":"目前不允許嵌入此網址。您可至 GitHub 提出 issue 以要求將此網址加入合格名單。","unrecognizedLinkFormat":"您嵌入的連結格式不符。請嘗試貼入原網站所提供的「嵌入」字串。"},"colors":{"transparent":"透明","black":"黑","white":"白","red":"紅","pink":"粉紅","grape":"深紫","violet":"藍紫","gray":"灰","blue":"藍","cyan":"青","teal":"藍綠","green":"綠","yellow":"黃","orange":"橘","bronze":"銅"},"welcomeScreen":{"app":{"center_heading":"所有資料皆已在瀏覽器中儲存於本機","center_heading_plus":"您是否是要前往 Excalidraw+ ?","menuHint":"輸出、偏好設定、語言..."},"defaults":{"menuHint":"輸出、偏好設定及其他...","center_heading":"圖表。製作。超簡單。","toolbarHint":"選個工具開始畫圖吧!","helpHint":"快速鍵與說明"}},"colorPicker":{"mostUsedCustomColors":"最常使用的自訂顏色","colors":"顏色","shades":"漸變色","hexCode":"Hex 碼","noShades":"沒有此顏色的漸變色"},"overwriteConfirm":{"action":{"exportToImage":{"title":"匯出為圖片","button":"匯出為圖片","description":"將場景匯出為可供匯入的圖片檔案"},"saveToDisk":{"title":"儲存至硬碟","button":"儲存至硬碟","description":"將場景匯出為可供匯入的檔案"},"excalidrawPlus":{"title":"Excalidraw+","button":"匯出至 Excalidraw+","description":"將此場景儲存至您的 Excalidraw+ 工作區"}},"modal":{"loadFromFile":{"title":"從檔案載入","button":"從檔案載入","description":"從檔案載入將取代您目前的內容

可先使用下方的選項備份您的繪圖。"},"shareableLink":{"title":"從連結載入","button":"取代我的內容","description":"載入外部繪圖將取代您目前的內容

可先使用下方的選項備份您的繪圖。"}}}}')}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js new file mode 100644 index 0000000..e83c037 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js @@ -0,0 +1,2 @@ +/*! For license information please see vendor-677e88ca78c86bddf13d.js.LICENSE.txt */ +(self.webpackChunkExcalidrawLib=self.webpackChunkExcalidrawLib||[]).push([[4736],{5030:function(t,e){"use strict";e.K=void 0;e.K=function(t,e){void 0===e&&(e={listUnicodeChar:""}),(e=e||{}).listUnicodeChar=!!e.hasOwnProperty("listUnicodeChar")&&e.listUnicodeChar,e.stripListLeaders=!e.hasOwnProperty("stripListLeaders")||e.stripListLeaders,e.gfm=!e.hasOwnProperty("gfm")||e.gfm,e.useImgAltText=!e.hasOwnProperty("useImgAltText")||e.useImgAltText,e.preserveLinks=!!e.hasOwnProperty("preserveLinks")&&e.preserveLinks;var n=t||"";n=n.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*$/gm,"");try{e.stripListLeaders&&(n=e.listUnicodeChar?n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,e.listUnicodeChar+" $1"):n.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,"$1")),e.gfm&&(n=n.replace(/\n={2,}/g,"\n").replace(/~{3}.*\n/g,"").replace(/~~/g,"").replace(/`{3}.*\n/g,"")),e.preserveLinks&&(n=n.replace(/\[(.*?)\][\[\(](.*?)[\]\)]/g,"$1 ($2)")),n=n.replace(/<[^>]*>/g,"").replace(/^[=\-]{2,}\s*$/g,"").replace(/\[\^.+?\](\: .*?$)?/g,"").replace(/\s{0,2}\[.*?\]: .*?$/g,"").replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g,e.useImgAltText?"$1":"").replace(/\[(.*?)\][\[\(].*?[\]\)]/g,"$1").replace(/^\s{0,3}>\s?/g,"").replace(/(^|\n)\s{0,3}>\s?/g,"\n\n").replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g,"").replace(/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/gm,"$1$2$3").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/(`{3,})(.*?)\1/gm,"$2").replace(/`(.+?)`/g,"$1").replace(/\n{2,}/g,"\n\n")}catch(e){return console.error(e),t}return n}},7122:function(t,e,n){var i;i=function(t){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=7)}([function(e,n){e.exports=t},function(t,e,n){"use strict";var i=n(0).FDLayoutConstants;function r(){}for(var a in i)r[a]=i[a];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=r},function(t,e,n){"use strict";var i=n(0).FDLayoutEdge;function r(t,e,n){i.call(this,t,e,n)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).LGraph;function r(t,e,n){i.call(this,t,e,n)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).LGraphManager;function r(t){i.call(this,t)}for(var a in r.prototype=Object.create(i.prototype),i)r[a]=i[a];t.exports=r},function(t,e,n){"use strict";var i=n(0).FDLayoutNode,r=n(0).IMath;function a(t,e,n,r){i.call(this,t,e,n,r)}for(var o in a.prototype=Object.create(i.prototype),i)a[o]=i[o];a.prototype.move=function(){var t=this.graphManager.getLayout();this.displacementX=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},a.prototype.propogateDisplacementToChildren=function(t,e){for(var n,i=this.getChild().getNodes(),r=0;r0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter((function(t){return e.has(t)}));this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},m.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%u.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter((function(e){return t.has(e)}));this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,i=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,i),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},m.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},n=0;n1)for(s=0;si&&(i=Math.floor(o.y)),a=Math.floor(o.x+c.DEFAULT_COMPONENT_SEPERATION)}this.transform(new f(l.WORLD_CENTER_X-o.x/2,l.WORLD_CENTER_Y-o.y/2))},m.radialLayout=function(t,e,n){var i=Math.max(this.maxDiagonalInTree(t),c.DEFAULT_RADIAL_SEPARATION);m.branchRadialLayout(e,null,0,359,0,i);var r=b.calculateBounds(t),a=new w;a.setDeviceOrgX(r.getMinX()),a.setDeviceOrgY(r.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var w=b[0];b.splice(0,1);var y=l.indexOf(w);y>=0&&l.splice(y,1),g--,h--}f=null!=e?(l.indexOf(b[0])+1)%g:0;for(var v=Math.abs(i-n)/h,x=f;d!=h;x=++x%g){var k=l[x].getOtherEnd(t);if(k!=e){var _=(n+d*v)%360,A=(_+v)%360;m.branchRadialLayout(k,t,_,A,r+a,a),d++}}},m.maxDiagonalInTree=function(t){for(var e=g.MIN_VALUE,n=0;ne&&(e=i)}return e},m.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},m.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var n=[],i=this.graphManager.getAllNodes(),r=0;r1){var i="DummyCompound_"+n;t.memberGroups[i]=e[n];var r=e[n][0].getParent(),a=new o(t.graphManager);a.id=i,a.paddingLeft=r.paddingLeft||0,a.paddingRight=r.paddingRight||0,a.paddingBottom=r.paddingBottom||0,a.paddingTop=r.paddingTop||0,t.idToDummyNode[i]=a;var s=t.getGraphManager().add(t.newGraph(),a),c=r.getChild();c.add(a);for(var u=0;u=0;t--){var e=this.compoundOrder[t],n=e.id,i=e.paddingLeft,r=e.paddingTop;this.adjustLocations(this.tiledMemberPack[n],e.rect.x,e.rect.y,i,r)}},m.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach((function(n){var i=t.idToDummyNode[n],r=i.paddingLeft,a=i.paddingTop;t.adjustLocations(e[n],i.rect.x,i.rect.y,r,a)}))},m.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var n=t.getChild();if(null==n)return this.toBeTiled[e]=!1,!1;for(var i=n.getNodes(),r=0;r0)return this.toBeTiled[e]=!1,!1;if(null!=a.getChild()){if(!this.getToBeTiled(a))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[a.id]=!1}return this.toBeTiled[e]=!0,!0},m.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),n=0,i=0;ic&&(c=l.rect.height)}n+=c+t.verticalPadding}},m.prototype.tileCompoundMembers=function(t,e){var n=this;this.tiledMemberPack=[],Object.keys(t).forEach((function(i){var r=e[i];n.tiledMemberPack[i]=n.tileNodes(t[i],r.paddingLeft+r.paddingRight),r.rect.width=n.tiledMemberPack[i].width,r.rect.height=n.tiledMemberPack[i].height}))},m.prototype.tileNodes=function(t,e){var n={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:c.TILING_PADDING_VERTICAL,horizontalPadding:c.TILING_PADDING_HORIZONTAL};t.sort((function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height0&&(a+=t.horizontalPadding),t.rowWidth[n]=a,t.width0&&(o+=t.verticalPadding);var s=0;o>t.rowHeight[n]&&(s=t.rowHeight[n],t.rowHeight[n]=o,s=t.rowHeight[n]-s),t.height+=s,t.rows[n].push(e)},m.prototype.getShortestRowIndex=function(t){for(var e=-1,n=Number.MAX_VALUE,i=0;in&&(e=i,n=t.rowWidth[i]);return e},m.prototype.canAddHorizontal=function(t,e,n){var i=this.getShortestRowIndex(t);if(i<0)return!0;var r=t.rowWidth[i];if(r+t.horizontalPadding+e<=t.width)return!0;var a,o,s=0;return t.rowHeight[i]0&&(s=n+t.verticalPadding-t.rowHeight[i]),a=t.width-r>=e+t.horizontalPadding?(t.height+s)/(r+e+t.horizontalPadding):(t.height+s)/t.width,s=n+t.verticalPadding,(o=t.widtha&&e!=n){i.splice(-1,1),t.rows[n].push(r),t.rowWidth[e]=t.rowWidth[e]-a,t.rowWidth[n]=t.rowWidth[n]+a,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var o=Number.MIN_VALUE,s=0;so&&(o=i[s].height);e>0&&(o+=t.verticalPadding);var c=t.rowHeight[e]+t.rowHeight[n];t.rowHeight[e]=o,t.rowHeight[n]0)for(var l=r;l<=a;l++)c[0]+=this.grid[l][o-1].length+this.grid[l][o].length-1;if(a0)for(l=o;l<=s;l++)c[3]+=this.grid[r-1][l].length+this.grid[r][l].length-1;for(var h,f,d=g.MAX_VALUE,p=0;p0&&(o=n.getGraphManager().add(n.newGraph(),a),this.processChildrenList(o,h,n))}},h.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",h)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=i(n(7122))},87:function(t,e,n){t.exports=function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);ne?1:0},V=function(t,e){return-1*X(t,e)},Q=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments,n=1;n1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}var l=new RegExp("^"+Y+"$").exec(t);if(l){if((n=parseInt(l[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(i=parseFloat(l[2]))<0||i>100)return;if(i/=100,(r=parseFloat(l[3]))<0||r>100)return;if(r/=100,void 0!==(a=l[4])&&((a=parseFloat(a))<0||a>1))return;if(0===i)o=s=c=Math.round(255*r);else{var h=r<.5?r*(1+i):r+i-r*i,f=2*r-h;o=Math.round(255*u(f,h,n+1/3)),s=Math.round(255*u(f,h,n)),c=Math.round(255*u(f,h,n-1/3))}e=[o,s,c,a]}return e},et=function(t){var e,n=new RegExp("^"+U+"$").exec(t);if(n){e=[];for(var i=[],r=1;r<=3;r++){var a=n[r];if("%"===a[a.length-1]&&(i[r]=!0),a=parseFloat(a),i[r]&&(a=a/100*255),a<0||a>255)return;e.push(Math.floor(a))}var o=i[1]||i[2]||i[3],s=i[1]&&i[2]&&i[3];if(o&&!s)return;var c=n[4];if(void 0!==c){if((c=parseFloat(c))<0||c>1)return;e.push(c)}}return e},nt=function(t){return rt[t.toLowerCase()]},it=function(t){return(x(t)?t:null)||nt(t)||J(t)||et(t)||tt(t)},rt={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},at=function(t){for(var e=t.map,n=t.keys,i=n.length,r=0;r=e||n<0||h&&t-u>=a}function w(){var t=gt();if(b(t))return m(t);s=setTimeout(w,p(t))}function m(t){return s=void 0,f&&i?d(t):(i=r=void 0,o)}function y(){void 0!==s&&clearTimeout(s),u=0,i=c=r=s=void 0}function v(){return void 0===s?o:m(gt())}function x(){var t=gt(),n=b(t);if(i=arguments,r=this,c=t,n){if(void 0===s)return g(c);if(h)return clearTimeout(s),s=setTimeout(w,e),d(c)}return void 0===s&&(s=setTimeout(w,e)),o}return e=Zt(e)||0,ct(n)&&(l=!!n.leading,a=(h="maxWait"in n)?Kt(Zt(n.maxWait)||0,e):a,f="trailing"in n?!!n.trailing:f),x.cancel=y,x.flush=v,x}var Qt=Vt,Jt=f?f.performance:null,te=Jt&&Jt.now?function(){return Jt.now()}:function(){return Date.now()},ee=function(){if(f){if(f.requestAnimationFrame)return function(t){f.requestAnimationFrame(t)};if(f.mozRequestAnimationFrame)return function(t){f.mozRequestAnimationFrame(t)};if(f.webkitRequestAnimationFrame)return function(t){f.webkitRequestAnimationFrame(t)};if(f.msRequestAnimationFrame)return function(t){f.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout((function(){t(te())}),1e3/60)}}(),ne=function(t){return ee(t)},ie=te,re=9261,ae=65599,oe=5381,se=function(t){for(var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:re;!(e=t.next()).done;)n=n*ae+e.value|0;return n},ce=function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:re)*ae+t|0},ue=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe;return(e<<5)+e+t|0},le=function(t,e){return 2097152*t+e},he=function(t){return 2097152*t[0]+t[1]},fe=function(t,e){return[ce(t[0],e[0]),ue(t[1],e[1])]},de=function(t,e){var n={value:0,done:!1},i=0,r=t.length;return se({next:function(){return i=0&&(t[i]!==e||(t.splice(i,1),!n));i--);},Be=function(t){t.splice(0,t.length)},Fe=function(t,e){for(var n=0;n2&&void 0!==arguments[2])||arguments[2];if(void 0!==t&&void 0!==e&&M(t)){var i=e.group;if(null==i&&(i=e.data&&null!=e.data.source&&null!=e.data.target?"edges":"nodes"),"nodes"===i||"edges"===i){this.length=1,this[0]=this;var r=this._private={cy:t,single:!0,data:e.data||{},position:e.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!e.selected,selectable:void 0===e.selectable||!!e.selectable,locked:!!e.locked,grabbed:!1,grabbable:void 0===e.grabbable||!!e.grabbable,pannable:void 0===e.pannable?"edges"===i:!!e.pannable,active:!1,classes:new Ue,animation:{current:[],queue:[]},rscratch:{},scratch:e.scratch||{},edges:[],children:[],parent:e.parent&&e.parent.isNode()?e.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==r.position.x&&(r.position.x=0),null==r.position.y&&(r.position.y=0),e.renderedPosition){var a=e.renderedPosition,o=t.pan(),s=t.zoom();r.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}var c=[];x(e.classes)?c=e.classes:y(e.classes)&&(c=e.classes.split(/\s+/));for(var u=0,l=c.length;ue?1:0},u=function(t,e,r,a,o){var s;if(null==r&&(r=0),null==o&&(o=n),r<0)throw new Error("lo must be non-negative");for(null==a&&(a=t.length);rn;0<=n?e++:e--)u.push(e);return u}.apply(this).reverse()).length;ap;0<=p?++f:--f)b.push(a(t,i));return b},g=function(t,e,i,r){var a,o,s;for(null==r&&(r=n),a=t[i];i>e&&r(a,o=t[s=i-1>>1])<0;)t[i]=o,i=s;return t[i]=a},p=function(t,e,i){var r,a,o,s,c;for(null==i&&(i=n),a=t.length,c=e,o=t[e],r=2*e+1;r0;){var _=w.pop(),A=p(_),E=_.id();if(h[E]=A,A!==1/0)for(var T=_.neighborhood().intersect(d),C=0;C0)for(n.unshift(e);l[r];){var a=l[r];n.unshift(a.edge),n.unshift(a.node),r=(i=a.node).id()}return o.spawn(n)}}}},Qe={kruskal:function(t){t=t||function(t){return 1};for(var e=this.byGroup(),n=e.nodes,i=e.edges,r=n.length,a=new Array(r),o=n,s=function(t){for(var e=0;e0;){if(v(),k++,u===h){for(var _=[],A=r,E=h,T=m[E];_.unshift(A),null!=T&&_.unshift(T),null!=(A=w[E]);)T=m[E=A.id()];return{found:!0,distance:f[u],path:this.spawn(_),steps:k}}g[u]=!0;for(var C=c._private.edges,S=0;SC&&(d[T]=C,w[T]=E,m[T]=x),!r){var S=E*u+A;!r&&d[S]>C&&(d[S]=C,w[S]=A,m[S]=x)}}}for(var I=0;I1&&void 0!==arguments[1]?arguments[1]:a,i=[],r=m(t);;){if(null==r)return e.spawn();var o=w(r),c=o.edge,u=o.pred;if(i.unshift(r[0]),r.same(n)&&i.length>0)break;null!=c&&i.unshift(c),r=u}return s.spawn(i)},k=0;k=0;u--){var l=c[u],h=l[1],f=l[2];(e[h]===o&&e[f]===s||e[h]===s&&e[f]===o)&&c.splice(u,1)}for(var d=0;di;){var r=Math.floor(Math.random()*e.length);e=sn(r,t,e),n--}return e},un={kargerStein:function(){var t=this,e=this.byGroup(),n=e.nodes,i=e.edges;i.unmergeBy((function(t){return t.isLoop()}));var r=n.length,a=i.length,o=Math.ceil(Math.pow(Math.log(r)/Math.LN2,2)),s=Math.floor(r/on);if(!(r<2)){for(var c=[],u=0;u1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=1/0,r=e;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=-1/0,r=e;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=0,r=0,a=e;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&t.splice(0,e)):t=t.slice(e,n);for(var a=0,o=t.length-1;o>=0;o--){var s=t[o];r?isFinite(s)||(t[o]=-1/0,a++):t.splice(o,1)}i&&t.sort((function(t,e){return t-e}));var c=t.length,u=Math.floor(c/2);return c%2!=0?t[u+1+a]:(t[u-1+a]+t[u+a])/2},mn=function(t){return Math.PI*t/180},yn=function(t,e){return Math.atan2(e,t)-Math.PI/2},vn=Math.log2||function(t){return Math.log(t)/Math.log(2)},xn=function(t){return t>0?1:t<0?-1:0},kn=function(t,e){return Math.sqrt(_n(t,e))},_n=function(t,e){var n=e.x-t.x,i=e.y-t.y;return n*n+i*i},An=function(t){for(var e=t.length,n=0,i=0;i=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(null!=t.w&&null!=t.h&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},Mn=function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},Dn=function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},On=function(t,e){t.x1=Math.min(t.x1,e.x1),t.x2=Math.max(t.x2,e.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,e.y1),t.y2=Math.max(t.y2,e.y2),t.h=t.y2-t.y1},Ln=function(t,e,n){t.x1=Math.min(t.x1,e),t.x2=Math.max(t.x2,e),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,n),t.y2=Math.max(t.y2,n),t.h=t.y2-t.y1},Nn=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.x1-=e,t.x2+=e,t.y1-=e,t.y2+=e,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},Pn=function(t){var e,n,i,r,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===a.length)e=n=i=r=a[0];else if(2===a.length)e=i=a[0],r=n=a[1];else if(4===a.length){var s=o(a,4);e=s[0],n=s[1],i=s[2],r=s[3]}return t.x1-=r,t.x2+=n,t.y1-=e,t.y2+=i,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},Bn=function(t,e){t.x1=e.x1,t.y1=e.y1,t.x2=e.x2,t.y2=e.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},Fn=function(t,e){return!(t.x1>e.x2||e.x1>t.x2||t.x2e.y2||e.y1>t.y2)},Rn=function(t,e,n){return t.x1<=e&&e<=t.x2&&t.y1<=n&&n<=t.y2},jn=function(t,e){return Rn(t,e.x,e.y)},$n=function(t,e){return Rn(t,e.x1,e.y1)&&Rn(t,e.x2,e.y2)},zn=function(t,e,n,i,r,a,o){var s,c=li(r,a),u=r/2,l=a/2,h=i-l-o;if((s=ii(t,e,n,i,n-u+c-o,h,n+u-c+o,h,!1)).length>0)return s;var f=n+u+o;if((s=ii(t,e,n,i,f,i-l+c-o,f,i+l-c+o,!1)).length>0)return s;var d=i+l+o;if((s=ii(t,e,n,i,n-u+c-o,d,n+u-c+o,d,!1)).length>0)return s;var g,p=n-u-o;if((s=ii(t,e,n,i,p,i-l+c-o,p,i+l-c+o,!1)).length>0)return s;var b=n-u+c,w=i-l+c;if((g=ei(t,e,n,i,b,w,c+o)).length>0&&g[0]<=b&&g[1]<=w)return[g[0],g[1]];var m=n+u-c,y=i-l+c;if((g=ei(t,e,n,i,m,y,c+o)).length>0&&g[0]>=m&&g[1]<=y)return[g[0],g[1]];var v=n+u-c,x=i+l-c;if((g=ei(t,e,n,i,v,x,c+o)).length>0&&g[0]>=v&&g[1]>=x)return[g[0],g[1]];var k=n-u+c,_=i+l-c;return(g=ei(t,e,n,i,k,_,c+o)).length>0&&g[0]<=k&&g[1]>=_?[g[0],g[1]]:[]},qn=function(t,e,n,i,r,a,o){var s=o,c=Math.min(n,r),u=Math.max(n,r),l=Math.min(i,a),h=Math.max(i,a);return c-s<=t&&t<=u+s&&l-s<=e&&e<=h+s},Hn=function(t,e,n,i,r,a,o,s,c){var u={x1:Math.min(n,o,r)-c,x2:Math.max(n,o,r)+c,y1:Math.min(i,s,a)-c,y2:Math.max(i,s,a)+c};return!(tu.x2||eu.y2)},Un=function(t,e,n,i){var r=e*e-4*t*(n-=i);if(r<0)return[];var a=Math.sqrt(r),o=2*t;return[(-e+a)/o,(-e-a)/o]},Gn=function(t,e,n,i,r){var a,o,s,c,u,l,h,f;return 0===t&&(t=1e-5),s=-27*(i/=t)+(e/=t)*(9*(n/=t)-e*e*2),a=(o=(3*n-e*e)/9)*o*o+(s/=54)*s,r[1]=0,h=e/3,a>0?(u=(u=s+Math.sqrt(a))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),l=(l=s-Math.sqrt(a))<0?-Math.pow(-l,1/3):Math.pow(l,1/3),r[0]=-h+u+l,h+=(u+l)/2,r[4]=r[2]=-h,h=Math.sqrt(3)*(-l+u)/2,r[3]=h,void(r[5]=-h)):(r[5]=r[3]=0,0===a?(f=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),r[0]=2*f-h,void(r[4]=r[2]=-(f+h))):(c=(o=-o)*o*o,c=Math.acos(s/Math.sqrt(c)),f=2*Math.sqrt(o),r[0]=-h+f*Math.cos(c/3),r[2]=-h+f*Math.cos((c+2*Math.PI)/3),void(r[4]=-h+f*Math.cos((c+4*Math.PI)/3))))},Yn=function(t,e,n,i,r,a,o,s){var c=[];Gn(1*n*n-4*n*r+2*n*o+4*r*r-4*r*o+o*o+i*i-4*i*a+2*i*s+4*a*a-4*a*s+s*s,9*n*r-3*n*n-3*n*o-6*r*r+3*r*o+9*i*a-3*i*i-3*i*s-6*a*a+3*a*s,3*n*n-6*n*r+n*o-n*t+2*r*r+2*r*t-o*t+3*i*i-6*i*a+i*s-i*e+2*a*a+2*a*e-s*e,1*n*r-n*n+n*t-r*t+i*a-i*i+i*e-a*e,c);for(var u=1e-7,l=[],h=0;h<6;h+=2)Math.abs(c[h+1])=0&&c[h]<=1&&l.push(c[h]);l.push(1),l.push(0);for(var f,d,g,p=-1,b=0;b=0?gc?(t-r)*(t-r)+(e-a)*(e-a):u-h},Wn=function(t,e,n){for(var i,r,a,o,s=0,c=0;c=t&&t>=a||i<=t&&t<=a))continue;(t-i)/(a-i)*(o-r)+r>e&&s++}return s%2!=0},Kn=function(t,e,n,i,r,a,o,s,c){var u,l=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var h,f=Math.cos(-u),d=Math.sin(-u),g=0;g0){var p=Qn(l,-c);h=Vn(p)}else h=l;return Wn(t,e,h)},Xn=function(t,e,n,i,r,a,o){for(var s=new Array(n.length),c=a/2,u=o/2,l=hi(a,o),h=l*l,f=0;f=0&&g<=1&&b.push(g),p>=0&&p<=1&&b.push(p),0===b.length)return[];var w=b[0]*s[0]+t,m=b[0]*s[1]+e;return b.length>1?b[0]==b[1]?[w,m]:[w,m,b[1]*s[0]+t,b[1]*s[1]+e]:[w,m]},ni=function(t,e,n){return e<=t&&t<=n||n<=t&&t<=e?t:t<=e&&e<=n||n<=e&&e<=t?e:n},ii=function(t,e,n,i,r,a,o,s,c){var u=t-r,l=n-t,h=o-r,f=e-a,d=i-e,g=s-a,p=h*f-g*u,b=l*f-d*u,w=g*l-h*d;if(0!==w){var m=p/w,y=b/w,v=.001,x=0-v,k=1+v;return x<=m&&m<=k&&x<=y&&y<=k||c?[t+m*l,e+m*d]:[]}return 0===p||0===b?ni(t,n,o)===o?[o,s]:ni(t,n,r)===r?[r,a]:ni(r,o,n)===n?[n,i]:[]:[]},ri=function(t,e,n,i,r,a,o,s){var c,u,l,h,f,d,g=[],p=new Array(n.length),b=!0;if(null==a&&(b=!1),b){for(var w=0;w0){var m=Qn(p,-s);u=Vn(m)}else u=p}else u=n;for(var y=0;y2){for(var S=[u[0],u[1]],I=Math.pow(S[0]-t,2)+Math.pow(S[1]-e,2),M=1;Mu&&(u=e)},get:function(t){return c[t]}},h=0;h0?m.edgesTo(w)[0]:w.edgesTo(m)[0];var v=i(y);w=w.id(),h[w]>h[p]+v&&(h[w]=h[p]+v,f.nodes.indexOf(w)<0?f.push(w):f.updateItem(w),u[w]=0,c[w]=[]),h[w]==h[p]+v&&(u[w]=u[w]+u[p],c[w].push(p))}else for(var x=0;x0;){for(var E=n.pop(),T=0;T0&&o.push(n[s]);0!==o.length&&r.push(i.collection(o))}return r},Li=function(t,e){for(var n=0;n5&&void 0!==arguments[5]?arguments[5]:Fi,o=i,s=0;s=2?Hi(t,e,n,0,$i,zi):Hi(t,e,n,0,ji)},squaredEuclidean:function(t,e,n){return Hi(t,e,n,0,$i)},manhattan:function(t,e,n){return Hi(t,e,n,0,ji)},max:function(t,e,n){return Hi(t,e,n,-1/0,qi)}};function Gi(t,e,n,i,r,a){var o;return o=v(t)?t:Ui[t]||Ui.euclidean,0===e&&v(t)?o(r,a):o(e,n,i,r,a)}Ui["squared-euclidean"]=Ui.squaredEuclidean,Ui.squaredeuclidean=Ui.squaredEuclidean;var Yi=Ne({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),Zi=function(t){return Yi(t)},Wi=function(t,e,n,i,r){var a="kMedoids"!==r?function(t){return n[t]}:function(t){return i[t](n)},o=function(t){return i[t](e)},s=n,c=e;return Gi(t,i.length,a,o,s,c)},Ki=function(t,e,n){for(var i=n.length,r=new Array(i),a=new Array(i),o=new Array(e),s=null,c=0;cn)return!1;return!0},tr=function(t,e,n){for(var i=0;ir&&(r=e[c][u],a=u);o[a].push(t[c])}for(var l=0;l=r.threshold||"dendrogram"===r.mode&&1===t.length)return!1;var d,g=e[o],p=e[i[o]];d="dendrogram"===r.mode?{left:g,right:p,key:g.key}:{value:g.value.concat(p.value),key:g.key},t[g.index]=d,t.splice(p.index,1),e[g.key]=d;for(var b=0;bn[p.key][w.key]&&(a=n[p.key][w.key])):"max"===r.linkage?(a=n[g.key][w.key],n[g.key][w.key]0&&i.push(r);return i},_r=function(t,e,n){for(var i=[],r=0;ro&&(a=c,o=e[r*t+c])}a>0&&i.push(a)}for(var u=0;uc&&(s=u,c=l)}n[r]=a[s]}return i=_r(t,e,n)},Er=function(t){for(var e,n,i,r,a,o,s=this.cy(),c=this.nodes(),u=yr(t),l={},h=0;h=T?(C=T,T=I,S=M):I>C&&(C=I);for(var D=0;D0?1:0;_[k%u.minIterations*e+F]=R,B+=R}if(B>0&&(k>=u.minIterations-1||k==u.maxIterations-1)){for(var j=0,$=0;$1||o>1)&&(u=!0),l[e]=[],t.outgoers().forEach((function(t){t.isEdge()&&l[e].push(t.id())}))}else h[e]=[void 0,t.target().id()]})):c.forEach((function(t){var e=t.id();t.isNode()?(t.degree(!0)%2&&(n?i?u=!0:i=e:n=e),l[e]=[],t.connectedEdges().forEach((function(t){return l[e].push(t.id())}))):h[e]=[t.source().id(),t.target().id()]}));var f={found:!1,trail:void 0};if(u)return f;if(i&&n)if(s){if(r&&i!=r)return f;r=i}else{if(r&&i!=r&&n!=r)return f;r||(r=i)}else r||(r=c[0].id());var d=function(t){for(var e,n,i,r=t,a=[t];l[r].length;)e=l[r].shift(),n=h[e][0],r!=(i=h[e][1])?(l[i]=l[i].filter((function(t){return t!=e})),r=i):s||r==n||(l[n]=l[n].filter((function(t){return t!=e})),r=n),a.unshift(e),a.unshift(r);return a},g=[],p=[];for(p=d(r);1!=p.length;)0==l[p[0]].length?(g.unshift(c.getElementById(p.shift())),g.unshift(c.getElementById(p.shift()))):p=d(p.shift()).concat(p);for(var b in g.unshift(c.getElementById(p.shift())),l)if(l[b].length)return f;return f.found=!0,f.trail=this.spawn(g,!0),f}},Ir=function(){var t=this,e={},n=0,i=0,r=[],a=[],o={},s=function(n,i){for(var o=a.length-1,s=[],c=t.spawn();a[o].x!=n||a[o].y!=i;)s.push(a.pop().edge),o--;s.push(a.pop().edge),s.forEach((function(n){var i=n.connectedNodes().intersection(t);c.merge(n),i.forEach((function(n){var i=n.id(),r=n.connectedEdges().intersection(t);c.merge(n),e[i].cutVertex?c.merge(r.filter((function(t){return t.isLoop()}))):c.merge(r)}))})),r.push(c)},c=function c(u,l,h){u===h&&(i+=1),e[l]={id:n,low:n++,cutVertex:!1};var f,d,g,p,b=t.getElementById(l).connectedEdges().intersection(t);0===b.size()?r.push(t.spawn(t.getElementById(l))):b.forEach((function(t){f=t.source().id(),d=t.target().id(),(g=f===l?d:f)!==h&&(p=t.id(),o[p]||(o[p]=!0,a.push({x:l,y:g,edge:t})),g in e?e[l].low=Math.min(e[l].low,e[g].id):(c(u,g,l),e[l].low=Math.min(e[l].low,e[g].low),e[l].id<=e[g].low&&(e[l].cutVertex=!0,s(l,g))))}))};t.forEach((function(t){if(t.isNode()){var n=t.id();n in e||(i=0,c(n,n),e[n].cutVertex=i>1)}}));var u=Object.keys(e).filter((function(t){return e[t].cutVertex})).map((function(e){return t.getElementById(e)}));return{cut:t.spawn(u),components:r}},Mr=function(){var t=this,e={},n=0,i=[],r=[],a=t.spawn(t),o=function o(s){if(r.push(s),e[s]={index:n,low:n++,explored:!1},t.getElementById(s).connectedEdges().intersection(t).forEach((function(t){var n=t.target().id();n!==s&&(n in e||o(n),e[n].explored||(e[s].low=Math.min(e[s].low,e[n].low)))})),e[s].index===e[s].low){for(var c=t.spawn();;){var u=r.pop();if(c.merge(t.getElementById(u)),e[u].low=e[s].index,e[u].explored=!0,u===s)break}var l=c.edgesWith(c),h=c.merge(l);i.push(h),a=a.difference(h)}};return t.forEach((function(t){if(t.isNode()){var n=t.id();n in e||o(n)}})),{cut:a,components:i}},Dr={};[Ze,Ve,Qe,tn,nn,an,un,bi,mi,vi,ki,Bi,cr,wr,Tr,Sr,{hopcroftTarjanBiconnected:Ir,htbc:Ir,htb:Ir,hopcroftTarjanBiconnectedComponents:Ir},{tarjanStronglyConnected:Mr,tsc:Mr,tscc:Mr,tarjanStronglyConnectedComponents:Mr}].forEach((function(t){Q(Dr,t)}));var Or=0,Lr=1,Nr=2,Pr=function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Or,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Pr.prototype={fulfill:function(t){return Br(this,Lr,"fulfillValue",t)},reject:function(t){return Br(this,Nr,"rejectReason",t)},then:function(t,e){var n=this,i=new Pr;return n.onFulfilled.push(jr(t,i,"fulfill")),n.onRejected.push(jr(e,i,"reject")),Fr(n),i.proxy}};var Br=function(t,e,n,i){return t.state===Or&&(t.state=e,t[n]=i,Fr(t)),t},Fr=function(t){t.state===Lr?Rr(t,"onFulfilled",t.fulfillValue):t.state===Nr&&Rr(t,"onRejected",t.rejectReason)},Rr=function(t,e,n){if(0!==t[e].length){var i=t[e];t[e]=[];var r=function(){for(var t=0;t0:void 0}},clearQueue:function(){return function(){var t=this,e=void 0!==t.length?t:[t];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}var Qa=Va;function Ja(t,e){var n=this.__data__,i=Ga(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this}var to=Ja;function eo(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t0&&this.spawn(i).updateStyle().emit("class"),e},addClass:function(t){return this.toggleClass(t,!0)},hasClass:function(t){var e=this[0];return null!=e&&e._private.classes.has(t)},toggleClass:function(t,e){x(t)||(t=t.match(/\S+/g)||[]);for(var n=this,i=void 0===e,r=[],a=0,o=n.length;a0&&this.spawn(r).updateStyle().emit("class"),n},removeClass:function(t){return this.toggleClass(t,!1)},flashClass:function(t,e){var n=this;if(null==e)e=250;else if(0===e)return n;return n.addClass(t),setTimeout((function(){n.removeClass(t)}),e),n}};bs.className=bs.classNames=bs.classes;var ws={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:H,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ws.variable="(?:[\\w-.]|(?:\\\\"+ws.metaChar+"))+",ws.className="(?:[\\w-]|(?:\\\\"+ws.metaChar+"))+",ws.value=ws.string+"|"+ws.number,ws.id=ws.variable,function(){var t,e,n;for(t=ws.comparatorOp.split("|"),n=0;n=0||"="!==e&&(ws.comparatorOp+="|\\!"+e)}();var ms=function(){return{checks:[]}},ys={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},vs=[{selector:":selected",matches:function(t){return t.selected()}},{selector:":unselected",matches:function(t){return!t.selected()}},{selector:":selectable",matches:function(t){return t.selectable()}},{selector:":unselectable",matches:function(t){return!t.selectable()}},{selector:":locked",matches:function(t){return t.locked()}},{selector:":unlocked",matches:function(t){return!t.locked()}},{selector:":visible",matches:function(t){return t.visible()}},{selector:":hidden",matches:function(t){return!t.visible()}},{selector:":transparent",matches:function(t){return t.transparent()}},{selector:":grabbed",matches:function(t){return t.grabbed()}},{selector:":free",matches:function(t){return!t.grabbed()}},{selector:":removed",matches:function(t){return t.removed()}},{selector:":inside",matches:function(t){return!t.removed()}},{selector:":grabbable",matches:function(t){return t.grabbable()}},{selector:":ungrabbable",matches:function(t){return!t.grabbable()}},{selector:":animated",matches:function(t){return t.animated()}},{selector:":unanimated",matches:function(t){return!t.animated()}},{selector:":parent",matches:function(t){return t.isParent()}},{selector:":childless",matches:function(t){return t.isChildless()}},{selector:":child",matches:function(t){return t.isChild()}},{selector:":orphan",matches:function(t){return t.isOrphan()}},{selector:":nonorphan",matches:function(t){return t.isChild()}},{selector:":compound",matches:function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()}},{selector:":loop",matches:function(t){return t.isLoop()}},{selector:":simple",matches:function(t){return t.isSimple()}},{selector:":active",matches:function(t){return t.active()}},{selector:":inactive",matches:function(t){return!t.active()}},{selector:":backgrounding",matches:function(t){return t.backgrounding()}},{selector:":nonbackgrounding",matches:function(t){return!t.backgrounding()}}].sort((function(t,e){return V(t.selector,e.selector)})),xs=function(){for(var t,e={},n=0;n0&&u.edgeCount>0)return Ce("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return Ce("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&Ce("The selector `"+t+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Ms=function(){if(null!=this.toStringCache)return this.toStringCache;for(var t=function(t){return null==t?"":t},e=function(e){return y(e)?'"'+e+'"':t(e)},n=function(t){return" "+t+" "},i=function(i,a){var o=i.type,s=i.value;switch(o){case ys.GROUP:var c=t(s);return c.substring(0,c.length-1);case ys.DATA_COMPARE:var u=i.field,l=i.operator;return"["+u+n(t(l))+e(s)+"]";case ys.DATA_BOOL:var h=i.operator,f=i.field;return"["+t(h)+f+"]";case ys.DATA_EXIST:return"["+i.field+"]";case ys.META_COMPARE:var d=i.operator;return"[["+i.field+n(t(d))+e(s)+"]]";case ys.STATE:return s;case ys.ID:return"#"+s;case ys.CLASS:return"."+s;case ys.PARENT:case ys.CHILD:return r(i.parent,a)+n(">")+r(i.child,a);case ys.ANCESTOR:case ys.DESCENDANT:return r(i.ancestor,a)+" "+r(i.descendant,a);case ys.COMPOUND_SPLIT:var g=r(i.left,a),p=r(i.subject,a),b=r(i.right,a);return g+(g.length>0?" ":"")+p+b;case ys.TRUE:return""}},r=function(t,e){return t.checks.reduce((function(n,r,a){return n+(e===t&&0===a?"$":"")+i(r,e)}),"")},a="",o=0;o1&&o=0&&(e=e.replace("!",""),l=!0),e.indexOf("@")>=0&&(e=e.replace("@",""),u=!0),(o||c||u)&&(r=o||s?""+t:"",a=""+n),u&&(t=r=r.toLowerCase(),n=a=a.toLowerCase()),e){case"*=":i=r.indexOf(a)>=0;break;case"$=":i=r.indexOf(a,r.length-a.length)>=0;break;case"^=":i=0===r.indexOf(a);break;case"=":i=t===n;break;case">":h=!0,i=t>n;break;case">=":h=!0,i=t>=n;break;case"<":h=!0,i=t0;){var u=r.shift();e(u),a.add(u.id()),o&&i(r,a,u)}return t}function Ks(t,e,n){if(n.isParent())for(var i=n._private.children,r=0;r1&&void 0!==arguments[1])||arguments[1],Ks)},Zs.forEachUp=function(t){return Ws(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Xs)},Zs.forEachUpAndDown=function(t){return Ws(this,t,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],Vs)},Zs.ancestors=Zs.parents,(Us=Gs={data:gs.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:gs.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:gs.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:gs.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:gs.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:gs.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var t=this[0];if(t)return t._private.data.id}}).attr=Us.data,Us.removeAttr=Us.removeData;var Qs,Js,tc=Gs,ec={};function nc(t){return function(e){var n=this;if(void 0===e&&(e=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var i=0,r=n[0],a=r._private.edges,o=0;oe})),minIndegree:ic("indegree",(function(t,e){return te})),minOutdegree:ic("outdegree",(function(t,e){return te}))}),Q(ec,{totalDegree:function(t){for(var e=0,n=this.nodes(),i=0;i0,l=u;u&&(c=c[0]);var h=l?c.position():{x:0,y:0};return r={x:s.x-h.x,y:s.y-h.y},void 0===t?r:r[t]}for(var f=0;f0,b=p;p&&(g=g[0]);var w=b?g.position():{x:0,y:0};void 0!==e?d.position(t,e+w[t]):void 0!==r&&d.position({x:r.x+w.x,y:r.y+w.y})}}else if(!a)return;return this}},Qs.modelPosition=Qs.point=Qs.position,Qs.modelPositions=Qs.points=Qs.positions,Qs.renderedPoint=Qs.renderedPosition,Qs.relativePoint=Qs.relativePosition;var oc,sc,cc=Js;oc=sc={},sc.renderedBoundingBox=function(t){var e=this.boundingBox(t),n=this.cy(),i=n.zoom(),r=n.pan(),a=e.x1*i+r.x,o=e.x2*i+r.x,s=e.y1*i+r.y,c=e.y2*i+r.y;return{x1:a,x2:o,y1:s,y2:c,w:o-a,h:c-s}},sc.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.cy();return e.styleEnabled()&&e.hasCompoundNodes()?(this.forEachUp((function(e){if(e.isParent()){var n=e._private;n.compoundBoundsClean=!1,n.bbCache=null,t||e.emitAndNotify("bounds")}})),this):this},sc.updateCompoundBounds=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function n(t){if(t.isParent()){var e=t._private,n=t.children(),i="include"===t.pstyle("compound-sizing-wrt-labels").value,r={width:{val:t.pstyle("min-width").pfValue,left:t.pstyle("min-width-bias-left"),right:t.pstyle("min-width-bias-right")},height:{val:t.pstyle("min-height").pfValue,top:t.pstyle("min-height-bias-top"),bottom:t.pstyle("min-height-bias-bottom")}},a=n.boundingBox({includeLabels:i,includeOverlays:!1,useCache:!1}),o=e.position;0!==a.w&&0!==a.h||((a={w:t.pstyle("width").pfValue,h:t.pstyle("height").pfValue}).x1=o.x-a.w/2,a.x2=o.x+a.w/2,a.y1=o.y-a.h/2,a.y2=o.y+a.h/2);var s=r.width.left.value;"px"===r.width.left.units&&r.width.val>0&&(s=100*s/r.width.val);var c=r.width.right.value;"px"===r.width.right.units&&r.width.val>0&&(c=100*c/r.width.val);var u=r.height.top.value;"px"===r.height.top.units&&r.height.val>0&&(u=100*u/r.height.val);var l=r.height.bottom.value;"px"===r.height.bottom.units&&r.height.val>0&&(l=100*l/r.height.val);var h=w(r.width.val-a.w,s,c),f=h.biasDiff,d=h.biasComplementDiff,g=w(r.height.val-a.h,u,l),p=g.biasDiff,b=g.biasComplementDiff;e.autoPadding=m(a.w,a.h,t.pstyle("padding"),t.pstyle("padding-relative-to").value),e.autoWidth=Math.max(a.w,r.width.val),o.x=(-f+a.x1+a.x2+d)/2,e.autoHeight=Math.max(a.h,r.height.val),o.y=(-p+a.y1+a.y2+b)/2}function w(t,e,n){var i=0,r=0,a=e+n;return t>0&&a>0&&(i=e/a*t,r=n/a*t),{biasDiff:i,biasComplementDiff:r}}function m(t,e,n,i){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(i){case"width":return t>0?n.pfValue*t:0;case"height":return e>0?n.pfValue*e:0;case"average":return t>0&&e>0?n.pfValue*(t+e)/2:0;case"min":return t>0&&e>0?t>e?n.pfValue*e:n.pfValue*t:0;case"max":return t>0&&e>0?t>e?n.pfValue*t:n.pfValue*e:0;default:return 0}}}for(var i=0;it.x2?i:t.x2,t.y1=nt.y2?r:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},hc=function(t,e){return null==e?t:lc(t,e.x1,e.y1,e.x2,e.y2)},fc=function(t,e,n){return Re(t,e,n)},dc=function(t,e,n){if(!e.cy().headless()){var i,r,a=e._private,o=a.rstyle,s=o.arrowWidth/2;if("none"!==e.pstyle(n+"-arrow-shape").value){"source"===n?(i=o.srcX,r=o.srcY):"target"===n?(i=o.tgtX,r=o.tgtY):(i=o.midX,r=o.midY);var c=a.arrowBounds=a.arrowBounds||{},u=c[n]=c[n]||{};u.x1=i-s,u.y1=r-s,u.x2=i+s,u.y2=r+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,Nn(u,1),lc(t,u.x1,u.y1,u.x2,u.y2)}}},gc=function(t,e,n){if(!e.cy().headless()){var i;i=n?n+"-":"";var r=e._private,a=r.rstyle;if(e.pstyle(i+"label").strValue){var o,s,c,u,l=e.pstyle("text-halign"),h=e.pstyle("text-valign"),f=fc(a,"labelWidth",n),d=fc(a,"labelHeight",n),g=fc(a,"labelX",n),p=fc(a,"labelY",n),b=e.pstyle(i+"text-margin-x").pfValue,w=e.pstyle(i+"text-margin-y").pfValue,m=e.isEdge(),y=e.pstyle(i+"text-rotation"),v=e.pstyle("text-outline-width").pfValue,x=e.pstyle("text-border-width").pfValue/2,k=e.pstyle("text-background-padding").pfValue,_=2,A=d,E=f,T=E/2,C=A/2;if(m)o=g-T,s=g+T,c=p-C,u=p+C;else{switch(l.value){case"left":o=g-E,s=g;break;case"center":o=g-T,s=g+T;break;case"right":o=g,s=g+E}switch(h.value){case"top":c=p-A,u=p;break;case"center":c=p-C,u=p+C;break;case"bottom":c=p,u=p+A}}o+=b-Math.max(v,x)-k-_,s+=b+Math.max(v,x)+k+_,c+=w-Math.max(v,x)-k-_,u+=w+Math.max(v,x)+k+_;var S=n||"main",I=r.labelBounds,M=I[S]=I[S]||{};M.x1=o,M.y1=c,M.x2=s,M.y2=u,M.w=s-o,M.h=u-c;var D=m&&"autorotate"===y.strValue,O=null!=y.pfValue&&0!==y.pfValue;if(D||O){var L=D?fc(r.rstyle,"labelAngle",n):y.pfValue,N=Math.cos(L),P=Math.sin(L),B=(o+s)/2,F=(c+u)/2;if(!m){switch(l.value){case"left":B=s;break;case"right":B=o}switch(h.value){case"top":F=u;break;case"bottom":F=c}}var R=function(t,e){return{x:(t-=B)*N-(e-=F)*P+B,y:t*P+e*N+F}},j=R(o,c),$=R(o,u),z=R(s,c),q=R(s,u);o=Math.min(j.x,$.x,z.x,q.x),s=Math.max(j.x,$.x,z.x,q.x),c=Math.min(j.y,$.y,z.y,q.y),u=Math.max(j.y,$.y,z.y,q.y)}var H=S+"Rot",U=I[H]=I[H]||{};U.x1=o,U.y1=c,U.x2=s,U.y2=u,U.w=s-o,U.h=u-c,lc(t,o,c,s,u),lc(r.labelBounds.all,o,c,s,u)}return t}},pc=function(t,e){var n,i,r,a,o,s,c=t._private.cy,u=c.styleEnabled(),l=c.headless(),h=In(),f=t._private,d=t.isNode(),g=t.isEdge(),p=f.rstyle,b=d&&u?t.pstyle("bounds-expansion").pfValue:[0],w=function(t){return"none"!==t.pstyle("display").value},m=!u||w(t)&&(!g||w(t.source())&&w(t.target()));if(m){var y=0;u&&e.includeOverlays&&0!==t.pstyle("overlay-opacity").value&&(y=t.pstyle("overlay-padding").value);var v=0;u&&e.includeUnderlays&&0!==t.pstyle("underlay-opacity").value&&(v=t.pstyle("underlay-padding").value);var x=Math.max(y,v),k=0;if(u&&(k=t.pstyle("width").pfValue/2),d&&e.includeNodes){var _=t.position();o=_.x,s=_.y;var A=t.outerWidth()/2,E=t.outerHeight()/2;lc(h,n=o-A,r=s-E,i=o+A,a=s+E)}else if(g&&e.includeEdges)if(u&&!l){var T=t.pstyle("curve-style").strValue;if(n=Math.min(p.srcX,p.midX,p.tgtX),i=Math.max(p.srcX,p.midX,p.tgtX),r=Math.min(p.srcY,p.midY,p.tgtY),a=Math.max(p.srcY,p.midY,p.tgtY),lc(h,n-=k,r-=k,i+=k,a+=k),"haystack"===T){var C=p.haystackPts;if(C&&2===C.length){if(n=C[0].x,r=C[0].y,n>(i=C[1].x)){var S=n;n=i,i=S}if(r>(a=C[1].y)){var I=r;r=a,a=I}lc(h,n-k,r-k,i+k,a+k)}}else if("bezier"===T||"unbundled-bezier"===T||"segments"===T||"taxi"===T){var M;switch(T){case"bezier":case"unbundled-bezier":M=p.bezierPts;break;case"segments":case"taxi":M=p.linePts}if(null!=M)for(var D=0;D(i=N.x)){var P=n;n=i,i=P}if((r=L.y)>(a=N.y)){var B=r;r=a,a=B}lc(h,n-=k,r-=k,i+=k,a+=k)}if(u&&e.includeEdges&&g&&(dc(h,t,"mid-source"),dc(h,t,"mid-target"),dc(h,t,"source"),dc(h,t,"target")),u&&"yes"===t.pstyle("ghost").value){var F=t.pstyle("ghost-offset-x").pfValue,R=t.pstyle("ghost-offset-y").pfValue;lc(h,h.x1+F,h.y1+R,h.x2+F,h.y2+R)}var j=f.bodyBounds=f.bodyBounds||{};Bn(j,h),Pn(j,b),Nn(j,1),u&&(n=h.x1,i=h.x2,r=h.y1,a=h.y2,lc(h,n-x,r-x,i+x,a+x));var $=f.overlayBounds=f.overlayBounds||{};Bn($,h),Pn($,b),Nn($,1);var z=f.labelBounds=f.labelBounds||{};null!=z.all?Dn(z.all):z.all=In(),u&&e.includeLabels&&(e.includeMainLabels&&gc(h,t,null),g&&(e.includeSourceLabels&&gc(h,t,"source"),e.includeTargetLabels&&gc(h,t,"target")))}return h.x1=uc(h.x1),h.y1=uc(h.y1),h.x2=uc(h.x2),h.y2=uc(h.y2),h.w=uc(h.x2-h.x1),h.h=uc(h.y2-h.y1),h.w>0&&h.h>0&&m&&(Pn(h,b),Nn(h,1)),h},bc=function(t){var e=0,n=function(t){return(t?1:0)<0&&void 0!==arguments[0]?arguments[0]:zc,e=arguments.length>1?arguments[1]:void 0,n=0;n<$c.length;n++){var i=$c[n];this[i]=t[i]||jc[i]}this.context=e||this.context,this.listeners=[],this.emitting=0}var Hc=qc.prototype,Uc=function(t,e,n,i,r,a,o){v(i)&&(r=i,i=null),o&&(a=null==a?o:Q({},a,o));for(var s=x(n)?n:n.split(/\s+/),c=0;c=0;s--)o(s);return this},Hc.removeAllListeners=function(){return this.removeListener("*")},Hc.emit=Hc.trigger=function(t,e,n){var i=this.listeners,r=i.length;return this.emitting++,x(e)||(e=[e]),Yc(this,(function(t,a){null!=n&&(i=[{event:a.event,type:a.type,namespace:a.namespace,callback:n}],r=i.length);for(var o=function(n){var r=i[n];if(r.type===a.type&&(!r.namespace||r.namespace===a.namespace||r.namespace===Rc)&&t.eventMatches(t.context,r,a)){var o=[a];null!=e&&Fe(o,e),t.beforeEmit(t.context,r,a),r.conf&&r.conf.one&&(t.listeners=t.listeners.filter((function(t){return t!==r})));var s=t.callbackContext(t.context,r,a),c=r.callback.apply(s,o);t.afterEmit(t.context,r,a),!1===c&&(a.stopPropagation(),a.preventDefault())}},s=0;s1&&!i){var r=this.length-1,a=this[r],o=a._private.data.id;this[r]=void 0,this[t]=a,n.set(o,{ele:a,index:t})}return this.length--,this},unmergeOne:function(t){t=t[0];var e=this._private,n=t._private.data.id,i=e.map.get(n);if(!i)return this;var r=i.index;return this.unmergeAt(r),this},unmerge:function(t){var e=this._private.cy;if(!t)return this;if(t&&y(t)){var n=t;t=e.mutableElements().filter(n)}for(var i=0;i=0;e--)t(this[e])&&this.unmergeAt(e);return this},map:function(t,e){for(var n=[],i=this,r=0;ri&&(i=s,n=o)}return{value:i,ele:n}},min:function(t,e){for(var n,i=1/0,r=this,a=0;a=0&&r1&&void 0!==arguments[1])||arguments[1],n=this[0],i=n.cy();if(i.styleEnabled()&&n){this.cleanStyle();var r=n._private.style[t];return null!=r?r:e?i.style().getDefaultProperty(t):null}},numericStyle:function(t){var e=this[0];if(e.cy().styleEnabled()&&e){var n=e.pstyle(t);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(t){var e=this[0];if(e.cy().styleEnabled())return e?e.pstyle(t).units:void 0},renderedStyle:function(t){var e=this.cy();if(!e.styleEnabled())return this;var n=this[0];return n?e.style().getRenderedStyle(n,t):void 0},style:function(t,e){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,r=n.style();if(k(t)){var a=t;r.applyBypass(this,a,i),this.emitAndNotify("style")}else if(y(t)){if(void 0===e){var o=this[0];return o?r.getStylePropertyValue(o,t):void 0}r.applyBypass(this,t,e,i),this.emitAndNotify("style")}else if(void 0===t){var s=this[0];return s?r.getRawStyle(s):void 0}return this},removeStyle:function(t){var e=this.cy();if(!e.styleEnabled())return this;var n=!1,i=e.style(),r=this;if(void 0===t)for(var a=0;a0&&e.push(l[0]),e.push(s[0])}return this.spawn(e,!0).filter(t)}),"neighborhood"),closedNeighborhood:function(t){return this.neighborhood().add(this).filter(t)},openNeighborhood:function(t){return this.neighborhood(t)}}),mu.neighbourhood=mu.neighborhood,mu.closedNeighbourhood=mu.closedNeighborhood,mu.openNeighbourhood=mu.openNeighborhood,Q(mu,{source:Ys((function(t){var e,n=this[0];return n&&(e=n._private.source||n.cy().collection()),e&&t?e.filter(t):e}),"source"),target:Ys((function(t){var e,n=this[0];return n&&(e=n._private.target||n.cy().collection()),e&&t?e.filter(t):e}),"target"),sources:ku({attr:"source"}),targets:ku({attr:"target"})}),Q(mu,{edgesWith:Ys(_u(),"edgesWith"),edgesTo:Ys(_u({thisIsSrc:!0}),"edgesTo")}),Q(mu,{connectedEdges:Ys((function(t){for(var e=[],n=this,i=0;i0);return a},component:function(){var t=this[0];return t.cy().mutableElements().components(t)[0]}}),mu.componentsOf=mu.components;var Eu=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==t){var r=new ze,a=!1;if(e){if(e.length>0&&k(e[0])&&!S(e[0])){a=!0;for(var o=[],s=new Ue,c=0,u=e.length;c0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this,a=r.cy(),o=a._private,s=[],c=[],u=0,l=r.length;u0){for(var F=t.length===r.length?r:new Eu(a,t),R=0;R0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,i=[],r={},a=n._private.cy;function o(t){for(var e=t._private.edges,n=0;n0&&(t?E.emitAndNotify("remove"):e&&E.emit("remove"));for(var T=0;T0?r=c:i=c}while(Math.abs(a)>o&&++u=a?m(e,s):0===l?s:v(e,i,i+u)}var k=!1;function _(){k=!0,t===e&&n===i||y()}var A=function(r){return k||_(),t===e&&n===i?r:0===r?0:1===r?1:b(x(r),e,i)};A.getControlPoints=function(){return[{x:t,y:e},{x:n,y:i}]};var E="generateBezier("+[t,e,n,i]+")";return A.toString=function(){return E},A}var Iu=function(){function t(t){return-t.tension*t.x-t.friction*t.v}function e(e,n,i){var r={x:e.x+i.dx*n,v:e.v+i.dv*n,tension:e.tension,friction:e.friction};return{dx:r.v,dv:t(r)}}function n(n,i){var r={dx:n.v,dv:t(n)},a=e(n,.5*i,r),o=e(n,.5*i,a),s=e(n,i,o),c=1/6*(r.dx+2*(a.dx+o.dx)+s.dx),u=1/6*(r.dv+2*(a.dv+o.dv)+s.dv);return n.x=n.x+c*i,n.v=n.v+u*i,n}return function t(e,i,r){var a,o,s,c={x:-1,v:0,tension:null,friction:null},u=[0],l=0,h=1e-4,f=.016;for(e=parseFloat(e)||500,i=parseFloat(i)||20,r=r||null,c.tension=e,c.friction=i,o=(a=null!==r)?(l=t(e,i))/r*f:f;s=n(s||c,o),u.push(1+s.x),l+=16,Math.abs(s.x)>h&&Math.abs(s.v)>h;);return a?function(t){return u[t*(u.length-1)|0]}:l}}(),Mu=function(t,e,n,i){var r=Su(t,e,n,i);return function(t,e,n){return t+(e-t)*r(n)}},Du={linear:function(t,e,n){return t+(e-t)*n},ease:Mu(.25,.1,.25,1),"ease-in":Mu(.42,0,1,1),"ease-out":Mu(0,0,.58,1),"ease-in-out":Mu(.42,0,.58,1),"ease-in-sine":Mu(.47,0,.745,.715),"ease-out-sine":Mu(.39,.575,.565,1),"ease-in-out-sine":Mu(.445,.05,.55,.95),"ease-in-quad":Mu(.55,.085,.68,.53),"ease-out-quad":Mu(.25,.46,.45,.94),"ease-in-out-quad":Mu(.455,.03,.515,.955),"ease-in-cubic":Mu(.55,.055,.675,.19),"ease-out-cubic":Mu(.215,.61,.355,1),"ease-in-out-cubic":Mu(.645,.045,.355,1),"ease-in-quart":Mu(.895,.03,.685,.22),"ease-out-quart":Mu(.165,.84,.44,1),"ease-in-out-quart":Mu(.77,0,.175,1),"ease-in-quint":Mu(.755,.05,.855,.06),"ease-out-quint":Mu(.23,1,.32,1),"ease-in-out-quint":Mu(.86,0,.07,1),"ease-in-expo":Mu(.95,.05,.795,.035),"ease-out-expo":Mu(.19,1,.22,1),"ease-in-out-expo":Mu(1,0,0,1),"ease-in-circ":Mu(.6,.04,.98,.335),"ease-out-circ":Mu(.075,.82,.165,1),"ease-in-out-circ":Mu(.785,.135,.15,.86),spring:function(t,e,n){if(0===n)return Du.linear;var i=Iu(t,e,n);return function(t,e,n){return t+(e-t)*i(n)}},"cubic-bezier":Mu};function Ou(t,e,n,i,r){if(1===i)return n;if(e===n)return n;var a=r(e,n,i);return null==t||((t.roundValue||t.color)&&(a=Math.round(a)),void 0!==t.min&&(a=Math.max(a,t.min)),void 0!==t.max&&(a=Math.min(a,t.max))),a}function Lu(t,e){return null!=t.pfValue||null!=t.value?null==t.pfValue||null!=e&&"%"===e.type.units?t.value:t.pfValue:t}function Nu(t,e,n,i,r){var a=null!=r?r.type:null;n<0?n=0:n>1&&(n=1);var o=Lu(t,r),s=Lu(e,r);if(A(o)&&A(s))return Ou(a,o,s,n,i);if(x(o)&&x(s)){for(var c=[],u=0;u0?("spring"===h&&f.push(o.duration),o.easingImpl=Du[h].apply(null,f)):o.easingImpl=Du[h]}var d,g=o.easingImpl;if(d=0===o.duration?1:(n-c)/o.duration,o.applying&&(d=o.progress),d<0?d=0:d>1&&(d=1),null==o.delay){var p=o.startPosition,b=o.position;if(b&&r&&!t.locked()){var w={};Bu(p.x,b.x)&&(w.x=Nu(p.x,b.x,d,g)),Bu(p.y,b.y)&&(w.y=Nu(p.y,b.y,d,g)),t.position(w)}var m=o.startPan,v=o.pan,x=a.pan,k=null!=v&&i;k&&(Bu(m.x,v.x)&&(x.x=Nu(m.x,v.x,d,g)),Bu(m.y,v.y)&&(x.y=Nu(m.y,v.y,d,g)),t.emit("pan"));var _=o.startZoom,A=o.zoom,E=null!=A&&i;E&&(Bu(_,A)&&(a.zoom=Sn(a.minZoom,Nu(_,A,d,g),a.maxZoom)),t.emit("zoom")),(k||E)&&t.emit("viewport");var T=o.style;if(T&&T.length>0&&r){for(var C=0;C=0;e--)(0,t[e])();t.splice(0,t.length)},l=a.length-1;l>=0;l--){var h=a[l],f=h._private;f.stopped?(a.splice(l,1),f.hooked=!1,f.playing=!1,f.started=!1,u(f.frames)):(f.playing||f.applying)&&(f.playing&&f.applying&&(f.applying=!1),f.started||Fu(e,h,t),Pu(e,h,t,n),f.applying&&(f.applying=!1),u(f.frames),null!=f.step&&f.step(t),h.completed()&&(a.splice(l,1),f.hooked=!1,f.playing=!1,f.started=!1,u(f.completes)),s=!0)}return n||0!==a.length||0!==o.length||i.push(e),s}for(var a=!1,o=0;o0?e.notify("draw",n):e.notify("draw")),n.unmerge(i),e.emit("step")}var ju={animate:gs.animate(),animation:gs.animation(),animated:gs.animated(),clearQueue:gs.clearQueue(),delay:gs.delay(),delayAnimation:gs.delayAnimation(),stop:gs.stop(),addToAnimationPool:function(t){var e=this;e.styleEnabled()&&e._private.aniEles.merge(t)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var t=this;if(t._private.animationsRunning=!0,t.styleEnabled()){var e=t.renderer();e&&e.beforeRender?e.beforeRender((function(e,n){Ru(n,t)}),e.beforeRenderPriorities.animations):n()}function n(){t._private.animationsRunning&&ne((function(e){Ru(e,t),n()}))}}},$u={qualifierCompare:function(t,e){return null==t||null==e?null==t&&null==e:t.sameText(e)},eventMatches:function(t,e,n){var i=e.qualifier;return null==i||t!==n.target&&S(n.target)&&i.matches(n.target)},addEventFields:function(t,e){e.cy=t,e.target=t},callbackContext:function(t,e,n){return null!=e.qualifier?n.target:t}},zu=function(t){return y(t)?new zs(t):t},qu={createEmitter:function(){var t=this._private;return t.emitter||(t.emitter=new qc($u,this)),this},emitter:function(){return this._private.emitter},on:function(t,e,n){return this.emitter().on(t,zu(e),n),this},removeListener:function(t,e,n){return this.emitter().removeListener(t,zu(e),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(t,e,n){return this.emitter().one(t,zu(e),n),this},once:function(t,e,n){return this.emitter().one(t,zu(e),n),this},emit:function(t,e){return this.emitter().emit(t,e),this},emitAndNotify:function(t,e){return this.emit(t),this.notify(t,e),this}};gs.eventAliasesOn(qu);var Hu={png:function(t){return t=t||{},this._private.renderer.png(t)},jpg:function(t){var e=this._private.renderer;return(t=t||{}).bg=t.bg||"#fff",e.jpg(t)}};Hu.jpeg=Hu.jpg;var Uu={layout:function(t){var e=this;if(null!=t)if(null!=t.name){var n=t.name,i=e.extension("layout",n);if(null!=i){var r;r=y(t.eles)?e.$(t.eles):null!=t.eles?t.eles:e.$();var a=new i(Q({},t,{cy:e,eles:r}));return a}Ee("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ee("A `name` must be specified to make a layout");else Ee("Layout options must be specified to make a layout")}};Uu.createLayout=Uu.makeLayout=Uu.layout;var Gu={notify:function(t,e){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[t]=n.batchNotifications[t]||this.collection();null!=e&&i.merge(e)}else if(n.notificationsEnabled){var r=this.renderer();!this.destroyed()&&r&&r.notify(t,e)}},notifications:function(t){var e=this._private;return void 0===t?e.notificationsEnabled:(e.notificationsEnabled=!!t,this)},noNotifications:function(t){this.notifications(!1),t(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var t=this._private;return null==t.batchCount&&(t.batchCount=0),0===t.batchCount&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},endBatch:function(){var t=this._private;if(0===t.batchCount)return this;if(t.batchCount--,0===t.batchCount){t.batchStyleEles.updateStyle();var e=this.renderer();Object.keys(t.batchNotifications).forEach((function(n){var i=t.batchNotifications[n];i.empty()?e.notify(n):e.notify(n,i)}))}return this},batch:function(t){return this.startBatch(),t(),this.endBatch(),this},batchData:function(t){var e=this;return this.batch((function(){for(var n=Object.keys(t),i=0;i0;)e.removeChild(e.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach((function(t){var e=t._private;e.rscratch={},e.rstyle={},e.animation.current=[],e.animation.queue=[]}))},onRender:function(t){return this.on("render",t)},offRender:function(t){return this.off("render",t)}};Zu.invalidateDimensions=Zu.resize;var Wu={collection:function(t,e){return y(t)?this.$(t):C(t)?t.collection():x(t)?(e||(e={}),new Eu(this,t,e.unique,e.removed)):new Eu(this)},nodes:function(t){var e=this.$((function(t){return t.isNode()}));return t?e.filter(t):e},edges:function(t){var e=this.$((function(t){return t.isEdge()}));return t?e.filter(t):e},$:function(t){var e=this._private.elements;return t?e.filter(t):e.spawnSelf()},mutableElements:function(){return this._private.elements}};Wu.elements=Wu.filter=Wu.$;var Ku={},Xu="t",Vu="f";Ku.apply=function(t){for(var e=this,n=e._private.cy.collection(),i=0;i0;if(f||h&&d){var g=void 0;f&&d||f?g=u.properties:d&&(g=u.mappedProperties);for(var p=0;p1&&(b=1),s.color){var x=r.valueMin[0],k=r.valueMax[0],_=r.valueMin[1],E=r.valueMax[1],T=r.valueMin[2],C=r.valueMax[2],S=null==r.valueMin[3]?1:r.valueMin[3],I=null==r.valueMax[3]?1:r.valueMax[3],M=[Math.round(x+(k-x)*b),Math.round(_+(E-_)*b),Math.round(T+(C-T)*b),Math.round(S+(I-S)*b)];n={bypass:r.bypass,name:r.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else{if(!s.number)return!1;var D=r.valueMin+(r.valueMax-r.valueMin)*b;n=this.parse(r.name,D,r.bypass,f)}if(!n)return p(),!1;n.mapping=r,r=n;break;case o.data:for(var O=r.field.split("."),L=h.data,N=0;N0&&a>0){for(var s={},c=!1,u=0;u0?t.delayAnimation(o).play().promise().then(e):e()})).then((function(){return t.animation({style:s,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(t,r),t.emitAndNotify("style"),i.transitioning=!1}))}else i.transitioning&&(this.removeBypasses(t,r),t.emitAndNotify("style"),i.transitioning=!1)},Ku.checkTrigger=function(t,e,n,i,r,a){var o=this.properties[e],s=r(o);null!=s&&s(n,i)&&a(o)},Ku.checkZOrderTrigger=function(t,e,n,i){var r=this;this.checkTrigger(t,e,n,i,(function(t){return t.triggersZOrder}),(function(){r._private.cy.notify("zorder",t)}))},Ku.checkBoundsTrigger=function(t,e,n,i){this.checkTrigger(t,e,n,i,(function(t){return t.triggersBounds}),(function(r){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),!r.triggersBoundsOfParallelBeziers||("curve-style"!==e||"bezier"!==n&&"bezier"!==i)&&("display"!==e||"none"!==n&&"none"!==i)||t.parallelEdges().forEach((function(t){t.isBundledBezier()&&t.dirtyBoundingBoxCache()}))}))},Ku.checkTriggers=function(t,e,n,i){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,n,i),this.checkBoundsTrigger(t,e,n,i)};var Qu={applyBypass:function(t,e,n,i){var r=this,a=[],o=!0;if("*"===e||"**"===e){if(void 0!==n)for(var s=0;se.length?o.substr(e.length):""}function c(){n=n.length>i.length?n.substr(i.length):""}for(o=o.replace(/[/][*](\s|.)+?[*][/]/g,"");!o.match(/^\s*$/);){var u=o.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!u){Ce("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+o);break}e=u[0];var l=u[1];if("core"!==l&&new zs(l).invalid)Ce("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),s();else{var h=u[2],f=!1;n=h;for(var d=[];!n.match(/^\s*$/);){var g=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){Ce("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+h),f=!0;break}i=g[0];var p=g[1],b=g[2];r.properties[p]?a.parse(p,b)?(d.push({name:p,val:b}),c()):(Ce("Skipping property: Invalid property definition in: "+i),c()):(Ce("Skipping property: Invalid property name in: "+i),c())}if(f){s();break}a.selector(l);for(var w=0;w=7&&"d"===e[0]&&(u=new RegExp(s.data.regex).exec(e))){if(n)return!1;var f=s.data;return{name:t,value:u,strValue:""+e,mapped:f,field:u[1],bypass:n}}if(e.length>=10&&"m"===e[0]&&(l=new RegExp(s.mapData.regex).exec(e))){if(n)return!1;if(h.multiple)return!1;var d=s.mapData;if(!h.color&&!h.number)return!1;var g=this.parse(t,l[4]);if(!g||g.mapped)return!1;var p=this.parse(t,l[5]);if(!p||p.mapped)return!1;if(g.pfValue===p.pfValue||g.strValue===p.strValue)return Ce("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var b=g.value,w=p.value;if(!(b[0]!==w[0]||b[1]!==w[1]||b[2]!==w[2]||b[3]!==w[3]&&(null!=b[3]&&1!==b[3]||null!=w[3]&&1!==w[3])))return!1}return{name:t,value:l,strValue:""+e,mapped:d,field:l[1],fieldMin:parseFloat(l[2]),fieldMax:parseFloat(l[3]),valueMin:g.value,valueMax:p.value,bypass:n}}}if(h.multiple&&"multiple"!==i){var m;if(m=c?e.split(/\s+/):x(e)?e:[e],h.evenMultiple&&m.length%2!=0)return null;for(var k=[],_=[],A=[],T="",C=!1,S=0;S0?" ":"")+I.strValue}return h.validate&&!h.validate(k,_)?null:h.singleEnum&&C?1===k.length&&y(k[0])?{name:t,value:k[0],strValue:k[0],bypass:n}:null:{name:t,value:k,pfValue:A,strValue:T,bypass:n,units:_}}var M=function(){for(var i=0;ih.max||h.strictMax&&e===h.max))return null;var P={name:t,value:e,strValue:""+e+(D||""),units:D,bypass:n};return h.unitless||"px"!==D&&"em"!==D?P.pfValue=e:P.pfValue="px"!==D&&D?this.getEmSizeInPixels()*e:e,"ms"!==D&&"s"!==D||(P.pfValue="ms"===D?e:1e3*e),"deg"!==D&&"rad"!==D||(P.pfValue="rad"===D?e:mn(e)),"%"===D&&(P.pfValue=e/100),P}if(h.propList){var B=[],F=""+e;if("none"===F);else{for(var R=F.split(/\s*,\s*|\s+/),$=0;$0&&s>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:a=(a=(a=Math.min((o-2*e)/n.w,(s-2*e)/n.h))>this._private.maxZoom?this._private.maxZoom:a)=n.minZoom&&(n.maxZoom=e),this},minZoom:function(t){return void 0===t?this._private.minZoom:this.zoomRange({min:t})},maxZoom:function(t){return void 0===t?this._private.maxZoom:this.zoomRange({max:t})},getZoomedViewport:function(t){var e,n,i=this._private,r=i.pan,a=i.zoom,o=!1;if(i.zoomingEnabled||(o=!0),A(t)?n=t:k(t)&&(n=t.level,null!=t.position?e=hn(t.position,a,r):null!=t.renderedPosition&&(e=t.renderedPosition),null==e||i.panningEnabled||(o=!0)),n=(n=n>i.maxZoom?i.maxZoom:n)e.maxZoom||!e.zoomingEnabled?a=!0:(e.zoom=s,r.push("zoom"))}if(i&&(!a||!t.cancelOnFailedZoom)&&e.panningEnabled){var c=t.pan;A(c.x)&&(e.pan.x=c.x,o=!1),A(c.y)&&(e.pan.y=c.y,o=!1),o||r.push("pan")}return r.length>0&&(r.push("viewport"),this.emit(r.join(" ")),this.notify("viewport")),this},center:function(t){var e=this.getCenterPan(t);return e&&(this._private.pan=e,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(t,e){if(this._private.panningEnabled){if(y(t)){var n=t;t=this.mutableElements().filter(n)}else C(t)||(t=this.mutableElements());if(0!==t.length){var i=t.boundingBox(),r=this.width(),a=this.height();return{x:(r-(e=void 0===e?this._private.zoom:e)*(i.x1+i.x2))/2,y:(a-e*(i.y1+i.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var t,e,n=this._private,i=n.container,r=this;return n.sizeCache=n.sizeCache||(i?(t=r.window().getComputedStyle(i),e=function(e){return parseFloat(t.getPropertyValue(e))},{width:i.clientWidth-e("padding-left")-e("padding-right"),height:i.clientHeight-e("padding-top")-e("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var t=this._private.pan,e=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-t.x)/e,x2:(n.x2-t.x)/e,y1:(n.y1-t.y)/e,y2:(n.y2-t.y)/e};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},renderedExtent:function(){var t=this.width(),e=this.height();return{x1:0,y1:0,x2:t,y2:e,w:t,h:e}},multiClickDebounceTime:function(t){return t?(this._private.multiClickDebounceTime=t,this):this._private.multiClickDebounceTime}};ul.centre=ul.center,ul.autolockNodes=ul.autolock,ul.autoungrabifyNodes=ul.autoungrabify;var ll={data:gs.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:gs.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:gs.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:gs.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ll.attr=ll.data,ll.removeAttr=ll.removeData;var hl=function(t){var e=this,n=(t=Q({},t)).container;n&&!T(n)&&T(n[0])&&(n=n[0]);var i=n?n._cyreg:null;(i=i||{})&&i.cy&&(i.cy.destroy(),i={});var r=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=e;var a=void 0!==f&&void 0!==n&&!t.headless,o=t;o.layout=Q({name:a?"grid":"null"},o.layout),o.renderer=Q({name:a?"canvas":"null"},o.renderer);var s=function(t,e,n){return void 0!==e?e:void 0!==n?n:t},c=this._private={container:n,ready:!1,options:o,elements:new Eu(this),listeners:[],aniEles:new Eu(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?a:o.styleEnabled,zoom:A(o.zoom)?o.zoom:1,pan:{x:k(o.pan)&&A(o.pan.x)?o.pan.x:0,y:k(o.pan)&&A(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var u=function(t,e){if(t.some(B))return zr.all(t).then(e);e(t)};c.styleEnabled&&e.setStyle([]);var l=Q({},o,o.renderer);e.initRenderer(l);var h=function(t,n,i){e.notifications(!1);var r=e.mutableElements();r.length>0&&r.remove(),null!=t&&(k(t)||x(t))&&e.add(t),e.one("layoutready",(function(t){e.notifications(!0),e.emit(t),e.one("load",n),e.emitAndNotify("load")})).one("layoutstop",(function(){e.one("done",i),e.emit("done")}));var a=Q({},e._private.options.layout);a.eles=e.elements(),e.layout(a).run()};u([o.style,o.elements],(function(t){var n=t[0],a=t[1];c.styleEnabled&&e.style().append(n),h(a,(function(){e.startAnimationLoop(),c.ready=!0,v(o.ready)&&e.on("ready",o.ready);for(var t=0;t0,u=In(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()});if(C(n.roots))t=n.roots;else if(x(n.roots)){for(var l=[],h=0;h0;){var N=L(),P=I(N,D);if(P)N.outgoers().filter((function(t){return t.isNode()&&r.has(t)})).forEach(O);else if(null===P){Ce("Detected double maximal shift for node `"+N.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}S();var B=0;if(n.avoidOverlap)for(var F=0;F0&&w[0].length<=3?c/2:0),h=2*Math.PI/w[i].length*r;return 0===i&&1===w[0].length&&(l=1),{x:K.x+l*Math.cos(h),y:K.y+l*Math.sin(h)}}return{x:K.x+(r+1-(a+1)/2)*o,y:(i+1)*s}};return r.nodes().layoutPositions(this,n,Q),this};var ml={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function yl(t){this.options=Q({},ml,t)}yl.prototype.run=function(){var t=this.options,e=t,n=t.cy,i=e.eles,r=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,a=i.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var o,s=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),c={x:s.x1+s.w/2,y:s.y1+s.h/2},u=(void 0===e.sweep?2*Math.PI-2*Math.PI/a.length:e.sweep)/Math.max(1,a.length-1),l=0,h=0;h1&&e.avoidOverlap){l*=1.75;var p=Math.cos(u)-Math.cos(0),b=Math.sin(u)-Math.sin(0),w=Math.sqrt(l*l/(p*p+b*b));o=Math.max(w,o)}var m=function(t,n){var i=e.startAngle+n*u*(r?1:-1),a=o*Math.cos(i),s=o*Math.sin(i);return{x:c.x+a,y:c.y+s}};return i.nodes().layoutPositions(this,e,m),this};var vl,xl={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(t){return t.degree()},levelWidth:function(t){return t.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function kl(t){this.options=Q({},xl,t)}kl.prototype.run=function(){for(var t=this.options,e=t,n=void 0!==e.counterclockwise?!e.counterclockwise:e.clockwise,i=t.cy,r=e.eles,a=r.nodes().not(":parent"),o=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:i.width(),h:i.height()}),s={x:o.x1+o.w/2,y:o.y1+o.h/2},c=[],u=0,l=0;l0&&Math.abs(w[0].value-y.value)>=p&&(w=[],b.push(w)),w.push(y)}var v=u+e.minNodeSpacing;if(!e.avoidOverlap){var x=b.length>0&&b[0].length>1,k=(Math.min(o.w,o.h)/2-v)/(b.length+x?1:0);v=Math.min(v,k)}for(var _=0,A=0;A1&&e.avoidOverlap){var S=Math.cos(C)-Math.cos(0),I=Math.sin(C)-Math.sin(0),M=Math.sqrt(v*v/(S*S+I*I));_=Math.max(M,_)}E.r=_,_+=v}if(e.equidistant){for(var D=0,O=0,L=0;L=t.numIter||(Ol(i,t),i.temperature=i.temperature*t.coolingFactor,i.temperature=t.animationThreshold&&a(),ne(e)):(Ul(i,t),s())}();else{for(;u;)u=o(c),c++;Ul(i,t),s()}return this},Al.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Al.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var El,Tl=function(t,e,n){for(var i=n.eles.edges(),r=n.eles.nodes(),a=In(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),o={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:r.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:a.w,clientHeight:a.h,boundingBox:a},s=n.eles.components(),c={},u=0;u0)for(o.graphSet.push(k),u=0;ui.count?0:i.graph},Sl=function t(e,n,i,r){var a=r.graphSet[i];if(-10)var c=(l=i.nodeOverlap*s)*r/(b=Math.sqrt(r*r+a*a)),u=l*a/b;else{var l,h=Fl(t,r,a),f=Fl(e,-1*r,-1*a),d=f.x-h.x,g=f.y-h.y,p=d*d+g*g,b=Math.sqrt(p);c=(l=(t.nodeRepulsion+e.nodeRepulsion)/p)*d/b,u=l*g/b}t.isLocked||(t.offsetX-=c,t.offsetY-=u),e.isLocked||(e.offsetX+=c,e.offsetY+=u)}},Bl=function(t,e,n,i){if(n>0)var r=t.maxX-e.minX;else r=e.maxX-t.minX;if(i>0)var a=t.maxY-e.minY;else a=e.maxY-t.minY;return r>=0&&a>=0?Math.sqrt(r*r+a*a):0},Fl=function(t,e,n){var i=t.positionX,r=t.positionY,a=t.height||1,o=t.width||1,s=n/e,c=a/o,u={};return 0===e&&0n?(u.x=i,u.y=r+a/2,u):0e&&-1*c<=s&&s<=c?(u.x=i-o/2,u.y=r-o*n/2/e,u):0=c)?(u.x=i+a*e/2/n,u.y=r+a/2,u):0>n&&(s<=-1*c||s>=c)?(u.x=i-a*e/2/n,u.y=r-a/2,u):u},Rl=function(t,e){for(var n=0;nn){var p=e.gravity*f/g,b=e.gravity*d/g;h.offsetX+=p,h.offsetY+=b}}}}},$l=function(t,e){var n=[],i=0,r=-1;for(n.push.apply(n,t.graphSet[0]),r+=t.graphSet[0].length;i<=r;){var a=n[i++],o=t.idToIndex[a],s=t.layoutNodes[o],c=s.children;if(0n)var r={x:n*t/i,y:n*e/i};else r={x:t,y:e};return r},Hl=function t(e,n){var i=e.parentId;if(null!=i){var r=n.layoutNodes[n.idToIndex[i]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopg&&(h+=d+e.componentSpacing,l=0,f=0,d=0)}}},Gl={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(t){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(t,e){return!0},ready:void 0,stop:void 0,transform:function(t,e){return e}};function Yl(t){this.options=Q({},Gl,t)}Yl.prototype.run=function(){var t=this.options,e=t,n=t.cy,i=e.eles,r=i.nodes().not(":parent");e.sort&&(r=r.sort(e.sort));var a=In(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===a.h||0===a.w)i.nodes().layoutPositions(this,e,(function(t){return{x:a.x1,y:a.y1}}));else{var o=r.size(),s=Math.sqrt(o*a.h/a.w),c=Math.round(s),u=Math.round(a.w/a.h*s),l=function(t){if(null==t)return Math.min(c,u);Math.min(c,u)==c?c=t:u=t},h=function(t){if(null==t)return Math.max(c,u);Math.max(c,u)==c?c=t:u=t},f=e.rows,d=null!=e.cols?e.cols:e.columns;if(null!=f&&null!=d)c=f,u=d;else if(null!=f&&null==d)c=f,u=Math.ceil(o/c);else if(null==f&&null!=d)u=d,c=Math.ceil(o/u);else if(u*c>o){var g=l(),p=h();(g-1)*p>=o?l(g-1):(p-1)*g>=o&&h(p-1)}else for(;u*c=o?h(w+1):l(b+1)}var m=a.w/u,y=a.h/c;if(e.condense&&(m=0,y=0),e.avoidOverlap)for(var v=0;v=u&&(D=0,M++)},L={},N=0;N(i=Zn(t,e,v[x],v[x+1],v[x+2],v[x+3])))return b(n,i),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(v=a.allpts,x=0;x+5(i=Yn(t,e,v[x],v[x+1],v[x+2],v[x+3],v[x+4],v[x+5])))return b(n,i),!0;m=m||r.source,y=y||r.target;var k=o.getArrowWidth(c,l),_=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(x=0;x<_.length;x++){var A=_[x],E=s.arrowShapes[n.pstyle(A.name+"-arrow-shape").value],T=n.pstyle("width").pfValue;if(E.roughCollide(t,e,k,A.angle,{x:A.x,y:A.y},T,f)&&E.collide(t,e,k,A.angle,{x:A.x,y:A.y},T,f))return b(n),!0}h&&u.length>0&&(w(m),w(y))}function y(t,e,n){return Re(t,e,n)}function v(n,i){var r,a=n._private,o=g;r=i?i+"-":"",n.boundingBox();var s=a.labelBounds[i||"main"],c=n.pstyle(r+"label").value;if("yes"===n.pstyle("text-events").strValue&&c){var u=y(a.rscratch,"labelX",i),l=y(a.rscratch,"labelY",i),h=y(a.rscratch,"labelAngle",i),f=n.pstyle(r+"text-margin-x").pfValue,d=n.pstyle(r+"text-margin-y").pfValue,p=s.x1-o-f,w=s.x2+o-f,m=s.y1-o-d,v=s.y2+o-d;if(h){var x=Math.cos(h),k=Math.sin(h),_=function(t,e){return{x:(t-=u)*x-(e-=l)*k+u,y:t*k+e*x+l}},A=_(p,m),E=_(p,v),T=_(w,m),C=_(w,v),S=[A.x+f,A.y+d,T.x+f,T.y+d,C.x+f,C.y+d,E.x+f,E.y+d];if(Wn(t,e,S))return b(n),!0}else if(Rn(s,t,e))return b(n),!0}}n&&(c=c.interactive);for(var x=c.length-1;x>=0;x--){var k=c[x];k.isNode()?w(k)||v(k):m(k)||v(k)||v(k,"source")||v(k,"target")}return u},getAllInBox:function(t,e,n,i){for(var r=this.getCachedZSortedEles().interactive,a=[],o=Math.min(t,n),s=Math.max(t,n),c=Math.min(e,i),u=Math.max(e,i),l=In({x1:t=o,y1:e=c,x2:n=s,y2:i=u}),h=0;h0?Math.max(t-e,0):Math.min(t+e,0)},S=C(E,_),I=C(T,A),M=!1;w===u?b=Math.abs(S)>Math.abs(I)?r:i:w===c||w===s?(b=i,M=!0):w!==a&&w!==o||(b=r,M=!0);var D,O=b===i,L=O?I:S,N=O?T:E,P=xn(N),B=!1;M&&(y||x)||!(w===s&&N<0||w===c&&N>0||w===a&&N>0||w===o&&N<0)||(L=(P*=-1)*Math.abs(L),B=!0);var F=function(t){return Math.abs(t)=Math.abs(L)},R=F(D=y?(v<0?1+v:v)*L:(v<0?L:0)+v*P),j=F(Math.abs(L)-Math.abs(D));if(!R&&!j||B)if(O){var $=l.y1+D+(p?f/2*P:0),z=l.x1,q=l.x2;n.segpts=[z,$,q,$]}else{var H=l.x1+D+(p?h/2*P:0),U=l.y1,G=l.y2;n.segpts=[H,U,H,G]}else if(O){var Y=Math.abs(N)<=f/2,Z=Math.abs(E)<=d/2;if(Y){var W=(l.x1+l.x2)/2,K=l.y1,X=l.y2;n.segpts=[W,K,W,X]}else if(Z){var V=(l.y1+l.y2)/2,Q=l.x1,J=l.x2;n.segpts=[Q,V,J,V]}else n.segpts=[l.x1,l.y2]}else{var tt=Math.abs(N)<=h/2,et=Math.abs(T)<=g/2;if(tt){var nt=(l.y1+l.y2)/2,it=l.x1,rt=l.x2;n.segpts=[it,nt,rt,nt]}else if(et){var at=(l.x1+l.x2)/2,ot=l.y1,st=l.y2;n.segpts=[at,ot,at,st]}else n.segpts=[l.x2,l.y1]}},oh.tryToCorrectInvalidPoints=function(t,e){var n=t._private.rscratch;if("bezier"===n.edgeType){var i=e.srcPos,r=e.tgtPos,a=e.srcW,o=e.srcH,s=e.tgtW,c=e.tgtH,u=e.srcShape,l=e.tgtShape,h=!A(n.startX)||!A(n.startY),f=!A(n.arrowStartX)||!A(n.arrowStartY),d=!A(n.endX)||!A(n.endY),g=!A(n.arrowEndX)||!A(n.arrowEndY),p=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth*3,b=kn({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=bf.poolIndex()){var d=h;h=f,f=d}var g=s.srcPos=h.position(),p=s.tgtPos=f.position(),b=s.srcW=h.outerWidth(),w=s.srcH=h.outerHeight(),m=s.tgtW=f.outerWidth(),y=s.tgtH=f.outerHeight(),v=s.srcShape=n.nodeShapes[e.getNodeShape(h)],x=s.tgtShape=n.nodeShapes[e.getNodeShape(f)];s.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var k=0;k0){var q=u,H=_n(q,dn(e)),U=_n(q,dn(z)),G=H;U2&&_n(q,{x:z[2],y:z[3]})0){var rt=l,at=_n(rt,dn(e)),ot=_n(rt,dn(it)),st=at;ot2&&_n(rt,{x:it[2],y:it[3]})=u||m){l={cp:p,segment:w};break}}if(l)break}var y=l.cp,v=l.segment,x=(u-f)/v.length,k=v.t1-v.t0,_=s?v.t0+k*x:v.t1-k*x;_=Sn(0,_,1),e=Tn(y.p0,y.p1,y.p2,_),r=gh(y.p0,y.p1,y.p2,_);break;case"straight":case"segments":case"haystack":for(var A,E,T,C,S=0,I=i.allpts.length,M=0;M+3=u));M+=2);var D=(u-E)/A;D=Sn(0,D,1),e=Cn(T,C,D),r=dh(T,C)}o("labelX",n,e.x),o("labelY",n,e.y),o("labelAutoAngle",n,r)}};u("source"),u("target"),this.applyLabelDimensions(t)}},hh.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},hh.applyPrefixedLabelDimensions=function(t,e){var n=t._private,i=this.getLabelText(t,e),r=this.calculateLabelDimensions(t,i),a=t.pstyle("line-height").pfValue,o=t.pstyle("text-wrap").strValue,s=Re(n.rscratch,"labelWrapCachedLines",e)||[],c="wrap"!==o?1:Math.max(s.length,1),u=r.height/c,l=u*a,h=r.width,f=r.height+(c-1)*(a-1)*u;je(n.rstyle,"labelWidth",e,h),je(n.rscratch,"labelWidth",e,h),je(n.rstyle,"labelHeight",e,f),je(n.rscratch,"labelHeight",e,f),je(n.rscratch,"labelLineHeight",e,l)},hh.getLabelText=function(t,e){var n=t._private,i=e?e+"-":"",r=t.pstyle(i+"label").strValue,a=t.pstyle("text-transform").value,o=function(t,i){return i?(je(n.rscratch,t,e,i),i):Re(n.rscratch,t,e)};if(!r)return"";"none"==a||("uppercase"==a?r=r.toUpperCase():"lowercase"==a&&(r=r.toLowerCase()));var s=t.pstyle("text-wrap").value;if("wrap"===s){var c=o("labelKey");if(null!=c&&o("labelWrapKey")===c)return o("labelWrapCachedText");for(var u="​",l=r.split("\n"),h=t.pstyle("text-max-width").pfValue,f="anywhere"===t.pstyle("text-overflow-wrap").value,d=[],g=/[\s\u200b]+/,p=f?"":" ",b=0;bh){for(var v=w.split(g),x="",k=0;kE);I++)T+=r[I],I===r.length-1&&(S=!0);return S||(T+=C),T}return r},hh.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,n=t.pstyle("text-halign").strValue;if("auto"!==e)return e;if(!t.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},hh.calculateLabelDimensions=function(t,e){var n=this,i=ge(e,t._private.labelDimsKey),r=n.labelDimCache||(n.labelDimCache=[]),a=r[i];if(null!=a)return a;var o=0,s=t.pstyle("font-style").strValue,c=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,l=t.pstyle("font-weight").strValue,h=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=document.createElement("canvas"),f=this.labelCalcCanvasContext=h.getContext("2d");var d=h.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}f.font="".concat(s," ").concat(l," ").concat(c,"px ").concat(u);for(var g=0,p=0,b=e.split("\n"),w=0;w1&&void 0!==arguments[1])||arguments[1];if(e.merge(t),n)for(var i=0;i=t.desktopTapThreshold2}var T=r(e);p&&(t.hoverData.tapholdCancelled=!0);var C=function(){var e=t.hoverData.dragDelta=t.hoverData.dragDelta||[];0===e.length?(e.push(y[0]),e.push(y[1])):(e[0]+=y[0],e[1]+=y[1])};n=!0,i(d,["mousemove","vmousemove","tapdrag"],e,{x:u[0],y:u[1]});var S=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||o.emit({originalEvent:e,type:"boxstart",position:{x:u[0],y:u[1]}}),f[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(3===t.hoverData.which){if(p){var M={originalEvent:e,type:"cxtdrag",position:{x:u[0],y:u[1]}};m?m.emit(M):o.emit(M),t.hoverData.cxtDragged=!0,t.hoverData.cxtOver&&d===t.hoverData.cxtOver||(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:e,type:"cxtdragout",position:{x:u[0],y:u[1]}}),t.hoverData.cxtOver=d,d&&d.emit({originalEvent:e,type:"cxtdragover",position:{x:u[0],y:u[1]}}))}}else if(t.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var D;if(t.hoverData.justStartedPan){var O=t.hoverData.mdownPos;D={x:(u[0]-O[0])*s,y:(u[1]-O[1])*s},t.hoverData.justStartedPan=!1}else D={x:y[0]*s,y:y[1]*s};o.panBy(D),o.emit("dragpan"),t.hoverData.dragged=!0}u=t.projectIntoViewport(e.clientX,e.clientY)}else if(1!=f[4]||null!=m&&!m.pannable()){if(m&&m.pannable()&&m.active()&&m.unactivate(),m&&m.grabbed()||d==w||(w&&i(w,["mouseout","tapdragout"],e,{x:u[0],y:u[1]}),d&&i(d,["mouseover","tapdragover"],e,{x:u[0],y:u[1]}),t.hoverData.last=d),m)if(p){if(o.boxSelectionEnabled()&&T)m&&m.grabbed()&&(b(v),m.emit("freeon"),v.emit("free"),t.dragData.didDrag&&(m.emit("dragfreeon"),v.emit("dragfree"))),S();else if(m&&m.grabbed()&&t.nodeIsDraggable(m)){var L=!t.dragData.didDrag;L&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||g(v,{inDragLayer:!0});var N={x:0,y:0};if(A(y[0])&&A(y[1])&&(N.x+=y[0],N.y+=y[1],L)){var P=t.hoverData.dragDelta;P&&A(P[0])&&A(P[1])&&(N.x+=P[0],N.y+=P[1])}t.hoverData.draggingEles=!0,v.silentShift(N).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else C();n=!0}else p&&(t.hoverData.dragging||!o.boxSelectionEnabled()||!T&&o.panningEnabled()&&o.userPanningEnabled()?!t.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()&&a(m,t.hoverData.downs)&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,f[4]=0,t.data.bgActivePosistion=dn(l),t.redrawHint("select",!0),t.redraw()):S(),m&&m.pannable()&&m.active()&&m.unactivate());return f[2]=u[0],f[3]=u[1],n?(e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),!1):void 0}}),!1),t.registerBinding(e,"mouseup",(function(e){if(t.hoverData.capture){t.hoverData.capture=!1;var a=t.cy,o=t.projectIntoViewport(e.clientX,e.clientY),s=t.selection,c=t.findNearestElement(o[0],o[1],!0,!1),u=t.dragData.possibleDragElements,l=t.hoverData.down,h=r(e);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,l&&l.unactivate(),3===t.hoverData.which){var f={originalEvent:e,type:"cxttapend",position:{x:o[0],y:o[1]}};if(l?l.emit(f):a.emit(f),!t.hoverData.cxtDragged){var d={originalEvent:e,type:"cxttap",position:{x:o[0],y:o[1]}};l?l.emit(d):a.emit(d)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(1===t.hoverData.which){if(i(c,["mouseup","tapend","vmouseup"],e,{x:o[0],y:o[1]}),t.dragData.didDrag||t.hoverData.dragged||t.hoverData.selecting||t.hoverData.isOverThresholdDrag||(i(l,["click","tap","vclick"],e,{x:o[0],y:o[1]}),T=!1,e.timeStamp-C<=a.multiClickDebounceTime()?(E&&clearTimeout(E),T=!0,C=null,i(l,["dblclick","dbltap","vdblclick"],e,{x:o[0],y:o[1]})):(E=setTimeout((function(){T||i(l,["oneclick","onetap","voneclick"],e,{x:o[0],y:o[1]})}),a.multiClickDebounceTime()),C=e.timeStamp)),null!=l||t.dragData.didDrag||t.hoverData.selecting||t.hoverData.dragged||r(e)||(a.$(n).unselect(["tapunselect"]),u.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=u=a.collection()),c!=l||t.dragData.didDrag||t.hoverData.selecting||null!=c&&c._private.selectable&&(t.hoverData.dragging||("additive"===a.selectionType()||h?c.selected()?c.unselect(["tapunselect"]):c.select(["tapselect"]):h||(a.$(n).unmerge(c).unselect(["tapunselect"]),c.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var g=a.collection(t.getAllInBox(s[0],s[1],s[2],s[3]));t.redrawHint("select",!0),g.length>0&&t.redrawHint("eles",!0),a.emit({type:"boxend",originalEvent:e,position:{x:o[0],y:o[1]}});var p=function(t){return t.selectable()&&!t.selected()};"additive"===a.selectionType()||h||a.$(n).unmerge(g).unselect(),g.emit("box").stdFilter(p).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!s[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var w=l&&l.grabbed();b(u),w&&(l.emit("freeon"),u.emit("free"),t.dragData.didDrag&&(l.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}}),!1);var M,D,O,L,N,P,B,F,R,j,$,z,q,H=function(e){if(!t.scrollingPage){var n=t.cy,i=n.zoom(),r=n.pan(),a=t.projectIntoViewport(e.clientX,e.clientY),o=[a[0]*i+r.x,a[1]*i+r.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||S())e.preventDefault();else if(n.panningEnabled()&&n.userPanningEnabled()&&n.zoomingEnabled()&&n.userZoomingEnabled()){var s;e.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout((function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()}),150),s=null!=e.deltaY?e.deltaY/-250:null!=e.wheelDeltaY?e.wheelDeltaY/1e3:e.wheelDelta/1e3,s*=t.wheelSensitivity,1===e.deltaMode&&(s*=33);var c=n.zoom()*Math.pow(10,s);"gesturechange"===e.type&&(c=t.gestureStartZoom*e.scale),n.zoom({level:c,renderedPosition:{x:o[0],y:o[1]}}),n.emit("gesturechange"===e.type?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",H,!0),t.registerBinding(e,"scroll",(function(e){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout((function(){t.scrollingPage=!1}),250)}),!0),t.registerBinding(t.container,"gesturestart",(function(e){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||e.preventDefault()}),!0),t.registerBinding(t.container,"gesturechange",(function(e){t.hasTouchStarted||H(e)}),!0),t.registerBinding(t.container,"mouseout",(function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),t.registerBinding(t.container,"mouseover",(function(e){var n=t.projectIntoViewport(e.clientX,e.clientY);t.cy.emit({originalEvent:e,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var U,G,Y,Z,W,K,X,V=function(t,e,n,i){return Math.sqrt((n-t)*(n-t)+(i-e)*(i-e))},Q=function(t,e,n,i){return(n-t)*(n-t)+(i-e)*(i-e)};if(t.registerBinding(t.container,"touchstart",U=function(e){if(t.hasTouchStarted=!0,I(e)){m(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var n=t.cy,r=t.touchData.now,a=t.touchData.earlier;if(e.touches[0]){var o=t.projectIntoViewport(e.touches[0].clientX,e.touches[0].clientY);r[0]=o[0],r[1]=o[1]}if(e.touches[1]&&(o=t.projectIntoViewport(e.touches[1].clientX,e.touches[1].clientY),r[2]=o[0],r[3]=o[1]),e.touches[2]&&(o=t.projectIntoViewport(e.touches[2].clientX,e.touches[2].clientY),r[4]=o[0],r[5]=o[1]),e.touches[1]){t.touchData.singleTouchMoved=!0,b(t.dragData.touchDragEles);var s=t.findContainerClientCoords();R=s[0],j=s[1],$=s[2],z=s[3],M=e.touches[0].clientX-R,D=e.touches[0].clientY-j,O=e.touches[1].clientX-R,L=e.touches[1].clientY-j,q=0<=M&&M<=$&&0<=O&&O<=$&&0<=D&&D<=z&&0<=L&&L<=z;var c=n.pan(),u=n.zoom();N=V(M,D,O,L),P=Q(M,D,O,L),F=[((B=[(M+O)/2,(D+L)/2])[0]-c.x)/u,(B[1]-c.y)/u];var h=200;if(P=1){for(var _=t.touchData.startPosition=[null,null,null,null,null,null],A=0;A=t.touchTapThreshold2}if(n&&t.touchData.cxt){e.preventDefault();var v=e.touches[0].clientX-R,x=e.touches[0].clientY-j,k=e.touches[1].clientX-R,_=e.touches[1].clientY-j,E=Q(v,x,k,_),T=150,C=1.5;if(E/P>=C*C||E>=T*T){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var S={originalEvent:e,type:"cxttapend",position:{x:s[0],y:s[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(S),t.touchData.start=null):o.emit(S)}}if(n&&t.touchData.cxt){S={originalEvent:e,type:"cxtdrag",position:{x:s[0],y:s[1]}},t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(S):o.emit(S),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var B=t.findNearestElement(s[0],s[1],!0,!0);t.touchData.cxtOver&&B===t.touchData.cxtOver||(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:e,type:"cxtdragout",position:{x:s[0],y:s[1]}}),t.touchData.cxtOver=B,B&&B.emit({originalEvent:e,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(n&&e.touches[2]&&o.boxSelectionEnabled())e.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||o.emit({originalEvent:e,type:"boxstart",position:{x:s[0],y:s[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,r[4]=1,r&&0!==r.length&&void 0!==r[0]?(r[2]=(s[0]+s[2]+s[4])/3,r[3]=(s[1]+s[3]+s[5])/3):(r[0]=(s[0]+s[2]+s[4])/3,r[1]=(s[1]+s[3]+s[5])/3,r[2]=(s[0]+s[2]+s[4])/3+1,r[3]=(s[1]+s[3]+s[5])/3+1),t.redrawHint("select",!0),t.redraw();else if(n&&e.touches[1]&&!t.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(e.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),nt=t.dragData.touchDragEles){t.redrawHint("drag",!0);for(var $=0;$0&&!t.hoverData.draggingEles&&!t.swipePanning&&null!=t.data.bgActivePosistion&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1),t.registerBinding(e,"touchcancel",Y=function(e){var n=t.touchData.start;t.touchData.capture=!1,n&&n.unactivate()}),t.registerBinding(e,"touchend",Z=function(e){var r=t.touchData.start;if(t.touchData.capture){0===e.touches.length&&(t.touchData.capture=!1),e.preventDefault();var a=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var o,s=t.cy,c=s.zoom(),u=t.touchData.now,l=t.touchData.earlier;if(e.touches[0]){var h=t.projectIntoViewport(e.touches[0].clientX,e.touches[0].clientY);u[0]=h[0],u[1]=h[1]}if(e.touches[1]&&(h=t.projectIntoViewport(e.touches[1].clientX,e.touches[1].clientY),u[2]=h[0],u[3]=h[1]),e.touches[2]&&(h=t.projectIntoViewport(e.touches[2].clientX,e.touches[2].clientY),u[4]=h[0],u[5]=h[1]),r&&r.unactivate(),t.touchData.cxt){if(o={originalEvent:e,type:"cxttapend",position:{x:u[0],y:u[1]}},r?r.emit(o):s.emit(o),!t.touchData.cxtDragged){var f={originalEvent:e,type:"cxttap",position:{x:u[0],y:u[1]}};r?r.emit(f):s.emit(f)}return t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,void t.redraw()}if(!e.touches[2]&&s.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var d=s.collection(t.getAllInBox(a[0],a[1],a[2],a[3]));a[0]=void 0,a[1]=void 0,a[2]=void 0,a[3]=void 0,a[4]=0,t.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:e,position:{x:u[0],y:u[1]}});var g=function(t){return t.selectable()&&!t.selected()};d.emit("box").stdFilter(g).select().emit("boxselect"),d.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(null!=r&&r.unactivate(),e.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(e.touches[1]);else if(e.touches[0]);else if(!e.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var p=t.dragData.touchDragEles;if(null!=r){var w=r._private.grabbed;b(p),t.redrawHint("drag",!0),t.redrawHint("eles",!0),w&&(r.emit("freeon"),p.emit("free"),t.dragData.didDrag&&(r.emit("dragfreeon"),p.emit("dragfree"))),i(r,["touchend","tapend","vmouseup","tapdragout"],e,{x:u[0],y:u[1]}),r.unactivate(),t.touchData.start=null}else{var m=t.findNearestElement(u[0],u[1],!0,!0);i(m,["touchend","tapend","vmouseup","tapdragout"],e,{x:u[0],y:u[1]})}var y=t.touchData.startPosition[0]-u[0],v=y*y,x=t.touchData.startPosition[1]-u[1],k=(v+x*x)*c*c;t.touchData.singleTouchMoved||(r||s.$(":selected").unselect(["tapunselect"]),i(r,["tap","vclick"],e,{x:u[0],y:u[1]}),W=!1,e.timeStamp-X<=s.multiClickDebounceTime()?(K&&clearTimeout(K),W=!0,X=null,i(r,["dbltap","vdblclick"],e,{x:u[0],y:u[1]})):(K=setTimeout((function(){W||i(r,["onetap","voneclick"],e,{x:u[0],y:u[1]})}),s.multiClickDebounceTime()),X=e.timeStamp)),null!=r&&!t.dragData.didDrag&&r._private.selectable&&k0)return d[0]}return null},f=Object.keys(l),d=0;d0?c:zn(r,a,t,e,n,i,o)},checkPoint:function(t,e,n,i,r,a,o){var s=li(i,r),c=2*s;if(Kn(t,e,this.points,a,o,i,r-c,[0,-1],n))return!0;if(Kn(t,e,this.points,a,o,i-c,r,[0,-1],n))return!0;var u=i/2+2*n,l=r/2+2*n;return!!Wn(t,e,[a-u,o-l,a-u,o,a+u,o,a+u,o-l])||!!ti(t,e,c,c,a+i/2-s,o+r/2-s,n)||!!ti(t,e,c,c,a-i/2+s,o+r/2-s,n)}}},registerNodeShapes:function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",si(3,0)),this.generateRoundPolygon("round-triangle",si(3,0)),this.generatePolygon("rectangle",si(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",si(5,0)),this.generateRoundPolygon("round-pentagon",si(5,0)),this.generatePolygon("hexagon",si(6,0)),this.generateRoundPolygon("round-hexagon",si(6,0)),this.generatePolygon("heptagon",si(7,0)),this.generateRoundPolygon("round-heptagon",si(7,0)),this.generatePolygon("octagon",si(8,0)),this.generateRoundPolygon("round-octagon",si(8,0));var i=new Array(20),r=ui(5,0),a=ui(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=t.deqFastCost*p)break}else if(r){if(d>=t.deqCost*c||d>=t.deqAvgCost*s)break}else if(g>=t.deqNoDrawCost*Sh)break;var b=t.deq(e,h,l);if(!(b.length>0))break;for(var w=0;w0&&(t.onDeqd(e,u),!r&&t.shouldRedraw(e,u,h,l)&&i())},a=t.priority||Ae;n.beforeRender(r,a(e))}}}},Mh=function(){function t(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ke;e(this,t),this.idsByKey=new ze,this.keyForId=new ze,this.cachesByLvl=new ze,this.lvls=[],this.getKey=n,this.doesEleInvalidateKey=i}return r(t,[{key:"getIdsFor",value:function(t){null==t&&Ee("Can not get id list for null key");var e=this.idsByKey,n=this.idsByKey.get(t);return n||(n=new Ue,e.set(t,n)),n}},{key:"addIdForKey",value:function(t,e){null!=t&&this.getIdsFor(t).add(e)}},{key:"deleteIdForKey",value:function(t,e){null!=t&&this.getIdsFor(t).delete(e)}},{key:"getNumberOfIdsForKey",value:function(t){return null==t?0:this.getIdsFor(t).size}},{key:"updateKeyMappingFor",value:function(t){var e=t.id(),n=this.keyForId.get(e),i=this.getKey(t);this.deleteIdForKey(n,e),this.addIdForKey(i,e),this.keyForId.set(e,i)}},{key:"deleteKeyMappingFor",value:function(t){var e=t.id(),n=this.keyForId.get(e);this.deleteIdForKey(n,e),this.keyForId.delete(e)}},{key:"keyHasChangedFor",value:function(t){var e=t.id();return this.keyForId.get(e)!==this.getKey(t)}},{key:"isInvalid",value:function(t){return this.keyHasChangedFor(t)||this.doesEleInvalidateKey(t)}},{key:"getCachesAt",value:function(t){var e=this.cachesByLvl,n=this.lvls,i=e.get(t);return i||(i=new ze,e.set(t,i),n.push(t)),i}},{key:"getCache",value:function(t,e){return this.getCachesAt(e).get(t)}},{key:"get",value:function(t,e){var n=this.getKey(t),i=this.getCache(n,e);return null!=i&&this.updateKeyMappingFor(t),i}},{key:"getForCachedKey",value:function(t,e){var n=this.keyForId.get(t.id());return this.getCache(n,e)}},{key:"hasCache",value:function(t,e){return this.getCachesAt(e).has(t)}},{key:"has",value:function(t,e){var n=this.getKey(t);return this.hasCache(n,e)}},{key:"setCache",value:function(t,e,n){n.key=t,this.getCachesAt(e).set(t,n)}},{key:"set",value:function(t,e,n){var i=this.getKey(t);this.setCache(i,e,n),this.updateKeyMappingFor(t)}},{key:"deleteCache",value:function(t,e){this.getCachesAt(e).delete(t)}},{key:"delete",value:function(t,e){var n=this.getKey(t);this.deleteCache(n,e)}},{key:"invalidateKey",value:function(t){var e=this;this.lvls.forEach((function(n){return e.deleteCache(t,n)}))}},{key:"invalidate",value:function(t){var e=t.id(),n=this.keyForId.get(e);this.deleteKeyMappingFor(t);var i=this.doesEleInvalidateKey(t);return i&&this.invalidateKey(n),i||0===this.getNumberOfIdsForKey(n)}}]),t}(),Dh=25,Oh=50,Lh=-4,Nh=3,Ph=7.99,Bh=8,Fh=1024,Rh=1024,jh=1024,$h=.2,zh=.8,qh=10,Hh=.15,Uh=.1,Gh=.9,Yh=.9,Zh=100,Wh=1,Kh={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Xh=Ne({getKey:null,doesEleInvalidateKey:ke,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:xe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Vh=function(t,e){var n=this;n.renderer=t,n.onDequeues=[];var i=Xh(e);Q(n,i),n.lookup=new Mh(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},Qh=Vh.prototype;Qh.reasons=Kh,Qh.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},Qh.getRetiredTextureQueue=function(t){var e=this,n=e.eleImgCaches.retired=e.eleImgCaches.retired||{};return n[t]=n[t]||[]},Qh.getElementQueue=function(){var t=this;return t.eleCacheQueue=t.eleCacheQueue||new Ke((function(t,e){return e.reqs-t.reqs}))},Qh.getElementKeyToQueue=function(){var t=this;return t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{}},Qh.getElement=function(t,e,n,i,r){var a=this,o=this.renderer,s=o.cy.zoom(),c=this.lookup;if(!e||0===e.w||0===e.h||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed())return null;if(!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(null==i&&(i=Math.ceil(vn(s*n))),i=Ph||i>Nh)return null;var u=Math.pow(2,i),l=e.h*u,h=e.w*u,f=o.eleTextBiggerThanMin(t,u);if(!this.isVisible(t,f))return null;var d,g=c.get(t,i);if(g&&g.invalidated&&(g.invalidated=!1,g.texture.invalidatedWidth-=g.width),g)return g;if(d=l<=Dh?Dh:l<=Oh?Oh:Math.ceil(l/Oh)*Oh,l>jh||h>Rh)return null;var p=a.getTextureQueue(d),b=p[p.length-2],w=function(){return a.recycleTexture(d,h)||a.addTexture(d,h)};b||(b=p[p.length-1]),b||(b=w()),b.width-b.usedWidthi;C--)E=a.getElement(t,e,n,C,Kh.downscale);T()}else{var S;if(!v&&!x&&!k)for(var I=i-1;I>=Lh;I--){var M=c.get(t,I);if(M){S=M;break}}if(y(S))return a.queueElement(t,i),S;b.context.translate(b.usedWidth,0),b.context.scale(u,u),this.drawElement(b.context,t,e,f,!1),b.context.scale(1/u,1/u),b.context.translate(-b.usedWidth,0)}return g={x:b.usedWidth,texture:b,level:i,scale:u,width:h,height:l,scaledLabelShown:f},b.usedWidth+=Math.ceil(h+Bh),b.eleCaches.push(g),c.set(t,i,g),a.checkTextureFullness(b),g},Qh.invalidateElements=function(t){for(var e=0;e=$h*t.width&&this.retireTexture(t)},Qh.checkTextureFullness=function(t){var e=this.getTextureQueue(t.height);t.usedWidth/t.width>zh&&t.fullnessChecks>=qh?Pe(e,t):t.fullnessChecks++},Qh.retireTexture=function(t){var e=this,n=t.height,i=e.getTextureQueue(n),r=this.lookup;Pe(i,t),t.retired=!0;for(var a=t.eleCaches,o=0;o=e)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,Be(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),Pe(r,o),i.push(o),o}},Qh.queueElement=function(t,e){var n=this,i=n.getElementQueue(),r=n.getElementKeyToQueue(),a=this.getKey(t),o=r[a];if(o)o.level=Math.max(o.level,e),o.eles.merge(t),o.reqs++,i.updateItem(o);else{var s={eles:t.spawn().merge(t),level:e,reqs:1,key:a};i.push(s),r[a]=s}},Qh.dequeue=function(t){for(var e=this,n=e.getElementQueue(),i=e.getElementKeyToQueue(),r=[],a=e.lookup,o=0;o0;o++){var s=n.pop(),c=s.key,u=s.eles[0],l=a.hasCache(u,s.level);if(i[c]=null,!l){r.push(s);var h=e.getBoundingBox(u);e.getElement(u,h,t,s.level,Kh.dequeue)}}return r},Qh.removeFromQueue=function(t){var e=this,n=e.getElementQueue(),i=e.getElementKeyToQueue(),r=this.getKey(t),a=i[r];null!=a&&(1===a.eles.length?(a.reqs=ve,n.updateItem(a),n.pop(),i[r]=null):a.eles.unmerge(t))},Qh.onDequeue=function(t){this.onDequeues.push(t)},Qh.offDequeue=function(t){Pe(this.onDequeues,t)},Qh.setupDequeueing=Ih.setupDequeueing({deqRedrawThreshold:Zh,deqCost:Hh,deqAvgCost:Uh,deqNoDrawCost:Gh,deqFastCost:Yh,deq:function(t,e,n){return t.dequeue(e,n)},onDeqd:function(t,e){for(var n=0;n=nf||n>ef)return null;i.validateLayersElesOrdering(n,t);var o,s,c=i.layersByLevel,u=Math.pow(2,n),l=c[n]=c[n]||[],h=function(){var e=function(e){if(i.validateLayersElesOrdering(e,t),i.levelIsComplete(e,t))return s=c[e],!0},r=function(t){if(!s)for(var i=n+t;tf<=i&&i<=ef&&!e(i);i+=t);};r(1),r(-1);for(var a=l.length-1;a>=0;a--){var o=l[a];o.invalid&&Pe(l,o)}};if(i.levelIsComplete(n,t))return l;h();var f=function(){if(!o){o=In();for(var e=0;eff)return null;var r=i.makeLayer(o,n);if(null!=e){var a=l.indexOf(e)+1;l.splice(a,0,r)}else(void 0===t.insert||t.insert)&&l.unshift(r);return r};if(i.skipping&&!a)return null;for(var g=null,p=t.length/Jh,b=!a,w=0;w=p||!$n(g.bb,m.boundingBox()))&&!(g=d({insert:!0,after:g})))return null;s||b?i.queueLayer(g,m):i.drawEleInLayer(g,m,n,e),g.eles.push(m),v[n]=g}}return s||(b?null:l)},pf.getEleLevelForLayerLevel=function(t,e){return t},pf.drawEleInLayer=function(t,e,n,i){var r=this,a=this.renderer,o=t.context,s=e.boundingBox();0!==s.w&&0!==s.h&&e.visible()&&(n=r.getEleLevelForLayerLevel(n,i),a.setImgSmoothing(o,!1),a.drawCachedElement(o,e,null,null,n,df),a.setImgSmoothing(o,!0))},pf.levelIsComplete=function(t,e){var n=this.layersByLevel[t];if(!n||0===n.length)return!1;for(var i=0,r=0;r0)return!1;if(a.invalid)return!1;i+=a.eles.length}return i===e.length},pf.validateLayersElesOrdering=function(t,e){var n=this.layersByLevel[t];if(n)for(var i=0;i0){e=!0;break}}return e},pf.invalidateElements=function(t){var e=this;0!==t.length&&(e.lastInvalidationTime=ie(),0!==t.length&&e.haveLayers()&&e.updateElementsInLayers(t,(function(t,n,i){e.invalidateLayer(t)})))},pf.invalidateLayer=function(t){if(this.lastInvalidationTime=ie(),!t.invalid){var e=t.level,n=t.eles,i=this.layersByLevel[e];Pe(i,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var r=0;r3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=e._private.rscratch;if((!a||e.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var c;n&&(c=n,t.translate(-c.x1,-c.y1));var u=a?e.pstyle("opacity").value:1,l=a?e.pstyle("line-opacity").value:1,h=e.pstyle("curve-style").value,f=e.pstyle("line-style").value,d=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,p=u*l,b=u*l,w=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p;"straight-triangle"===h?(o.eleStrokeStyle(t,e,n),o.drawEdgeTrianglePath(e,t,s.allpts)):(t.lineWidth=d,t.lineCap=g,o.eleStrokeStyle(t,e,n),o.drawEdgePath(e,t,s.allpts,f),t.lineCap="butt")},m=function(){r&&o.drawEdgeOverlay(t,e)},y=function(){r&&o.drawEdgeUnderlay(t,e)},v=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:b;o.drawArrowheads(t,e,n)},x=function(){o.drawElementText(t,e,null,i)};if(t.lineJoin="round","yes"===e.pstyle("ghost").value){var k=e.pstyle("ghost-offset-x").pfValue,_=e.pstyle("ghost-offset-y").pfValue,A=e.pstyle("ghost-opacity").value,E=p*A;t.translate(k,_),w(E),v(E),t.translate(-k,-_)}y(),w(),v(),m(),x(),n&&t.translate(c.x1,c.y1)}}},Lf=function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(e,n){if(n.visible()){var i=n.pstyle("".concat(t,"-opacity")).value;if(0!==i){var r=this,a=r.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(t,"-padding")).pfValue,c=n.pstyle("".concat(t,"-color")).value;e.lineWidth=s,"self"!==o.edgeType||a?e.lineCap="round":e.lineCap="butt",r.colorStrokeStyle(e,c[0],c[1],c[2],i),r.drawEdgePath(n,e,o.allpts,"solid")}}}};Of.drawEdgeOverlay=Lf("overlay"),Of.drawEdgeUnderlay=Lf("underlay"),Of.drawEdgePath=function(t,e,n,i){var r,a=t._private.rscratch,o=e,s=!1,c=this.usePaths(),u=t.pstyle("line-dash-pattern").pfValue,l=t.pstyle("line-dash-offset").pfValue;if(c){var h=n.join("$");a.pathCacheKey&&a.pathCacheKey===h?(r=e=a.pathCache,s=!0):(r=e=new Path2D,a.pathCacheKey=h,a.pathCache=r)}if(o.setLineDash)switch(i){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash(u),o.lineDashOffset=l;break;case"solid":o.setLineDash([])}if(!s&&!a.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(n[0],n[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5;t.beginPath(),t.moveTo(e+a,n),t.lineTo(e+i-a,n),t.quadraticCurveTo(e+i,n,e+i,n+a),t.lineTo(e+i,n+r-a),t.quadraticCurveTo(e+i,n+r,e+i-a,n+r),t.lineTo(e+a,n+r),t.quadraticCurveTo(e,n+r,e,n+r-a),t.lineTo(e,n+a),t.quadraticCurveTo(e,n,e+a,n),t.closePath(),t.fill()}Pf.eleTextBiggerThanMin=function(t,e){if(!e){var n=t.cy().zoom(),i=this.getPixelRatio(),r=Math.ceil(vn(n*i));e=Math.pow(2,r)}return!(t.pstyle("font-size").pfValue*e5&&void 0!==arguments[5])||arguments[5],o=this;if(null==i){if(a&&!o.eleTextBiggerThanMin(e))return}else if(!1===i)return;if(e.isNode()){var s=e.pstyle("label");if(!s||!s.value)return;var c=o.getLabelJustification(e);t.textAlign=c,t.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,l=e.pstyle("label"),h=e.pstyle("source-label"),f=e.pstyle("target-label");if(u||(!l||!l.value)&&(!h||!h.value)&&(!f||!f.value))return;t.textAlign="center",t.textBaseline="bottom"}var d,g=!n;n&&(d=n,t.translate(-d.x1,-d.y1)),null==r?(o.drawText(t,e,null,g,a),e.isEdge()&&(o.drawText(t,e,"source",g,a),o.drawText(t,e,"target",g,a))):o.drawText(t,e,r,g,a),n&&t.translate(d.x1,d.y1)},Pf.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],i=e.pstyle("font-style").strValue,r=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=n?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,c=e.pstyle("text-outline-opacity").value*s,u=e.pstyle("color").value,l=e.pstyle("text-outline-color").value;t.font=i+" "+o+" "+r+" "+a,t.lineJoin="round",this.colorFillStyle(t,u[0],u[1],u[2],s),this.colorStrokeStyle(t,l[0],l[1],l[2],c)},Pf.getTextAngle=function(t,e){var n=t._private.rscratch,i=e?e+"-":"",r=t.pstyle(i+"text-rotation"),a=Re(n,"labelAngle",e);return"autorotate"===r.strValue?t.isEdge()?a:0:"none"===r.strValue?0:r.pfValue},Pf.drawText=function(t,e,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=e._private.rscratch,o=r?e.effectiveOpacity():1;if(!r||0!==o&&0!==e.pstyle("text-opacity").value){"main"===n&&(n=null);var s,c,u=Re(a,"labelX",n),l=Re(a,"labelY",n),h=this.getLabelText(e,n);if(null!=h&&""!==h&&!isNaN(u)&&!isNaN(l)){this.setupTextStyle(t,e,r);var f,d=n?n+"-":"",g=Re(a,"labelWidth",n),p=Re(a,"labelHeight",n),b=e.pstyle(d+"text-margin-x").pfValue,w=e.pstyle(d+"text-margin-y").pfValue,m=e.isEdge(),y=e.pstyle("text-halign").value,v=e.pstyle("text-valign").value;switch(m&&(y="center",v="center"),u+=b,l+=w,0!==(f=i?this.getTextAngle(e,n):0)&&(s=u,c=l,t.translate(s,c),t.rotate(f),u=0,l=0),v){case"top":break;case"center":l+=p/2;break;case"bottom":l+=p}var x=e.pstyle("text-background-opacity").value,k=e.pstyle("text-border-opacity").value,_=e.pstyle("text-border-width").pfValue,A=e.pstyle("text-background-padding").pfValue;if(x>0||_>0&&k>0){var E=u-A;switch(y){case"left":E-=g;break;case"center":E-=g/2}var T=l-p-A,C=g+2*A,S=p+2*A;if(x>0){var I=t.fillStyle,M=e.pstyle("text-background-color").value;t.fillStyle="rgba("+M[0]+","+M[1]+","+M[2]+","+x*o+")",0===e.pstyle("text-background-shape").strValue.indexOf("round")?Bf(t,E,T,C,S,2):t.fillRect(E,T,C,S),t.fillStyle=I}if(_>0&&k>0){var D=t.strokeStyle,O=t.lineWidth,L=e.pstyle("text-border-color").value,N=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+k*o+")",t.lineWidth=_,t.setLineDash)switch(N){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=_/4,t.setLineDash([]);break;case"solid":t.setLineDash([])}if(t.strokeRect(E,T,C,S),"double"===N){var P=_/2;t.strokeRect(E+P,T+P,C-2*P,S-2*P)}t.setLineDash&&t.setLineDash([]),t.lineWidth=O,t.strokeStyle=D}}var B=2*e.pstyle("text-outline-width").pfValue;if(B>0&&(t.lineWidth=B),"wrap"===e.pstyle("text-wrap").value){var F=Re(a,"labelWrapCachedLines",n),R=Re(a,"labelLineHeight",n),j=g/2,$=this.getLabelJustification(e);switch("auto"===$||("left"===y?"left"===$?u+=-g:"center"===$&&(u+=-j):"center"===y?"left"===$?u+=-j:"right"===$&&(u+=j):"right"===y&&("center"===$?u+=j:"right"===$&&(u+=g))),v){case"top":case"center":case"bottom":l-=(F.length-1)*R}for(var z=0;z0&&t.strokeText(F[z],u,l),t.fillText(F[z],u,l),l+=R}else B>0&&t.strokeText(h,u,l),t.fillText(h,u,l);0!==f&&(t.rotate(-f),t.translate(-s,-c))}}};var Ff={drawNode:function(t,e,n){var i,r,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],c=this,u=e._private,l=u.rscratch,h=e.position();if(A(h.x)&&A(h.y)&&(!s||e.visible())){var f,d,g=s?e.effectiveOpacity():1,p=c.usePaths(),b=!1,w=e.padding();i=e.width()+2*w,r=e.height()+2*w,n&&(d=n,t.translate(-d.x1,-d.y1));for(var m=e.pstyle("background-image").value,y=new Array(m.length),v=new Array(m.length),x=0,k=0;k0&&void 0!==arguments[0]?arguments[0]:S;c.eleFillStyle(t,e,n)},L=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:D;c.colorStrokeStyle(t,I[0],I[1],I[2],e)},N=e.pstyle("shape").strValue,P=e.pstyle("shape-polygon-points").pfValue;if(p){t.translate(h.x,h.y);var B=c.nodePathCache=c.nodePathCache||[],F=pe("polygon"===N?N+","+P.join(","):N,""+r,""+i),R=B[F];null!=R?(f=R,b=!0,l.pathCache=f):(f=new Path2D,B[F]=l.pathCache=f)}var j=function(){if(!b){var n=h;p&&(n={x:0,y:0}),c.nodeShapes[c.getNodeShape(e)].draw(f||t,n.x,n.y,i,r)}p?t.fill(f):t.fill()},$=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=u.backgrounding,a=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g;c.hasPie(e)&&(c.drawPie(t,e,a),n&&(p||c.nodeShapes[c.getNodeShape(e)].draw(t,h.x,h.y,i,r)))},q=function(){var e=(T>0?T:-T)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g),n=T>0?0:255;0!==T&&(c.colorFillStyle(t,n,n,n,e),p?t.fill(f):t.fill())},H=function(){if(C>0){if(t.lineWidth=C,t.lineCap="butt",t.setLineDash)switch(M){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([])}if(p?t.stroke(f):t.stroke(),"double"===M){t.lineWidth=C/3;var e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",p?t.stroke(f):t.stroke(),t.globalCompositeOperation=e}t.setLineDash&&t.setLineDash([])}},U=function(){o&&c.drawNodeOverlay(t,e,h,i,r)},G=function(){o&&c.drawNodeUnderlay(t,e,h,i,r)},Y=function(){c.drawElementText(t,e,null,a)};if("yes"===e.pstyle("ghost").value){var Z=e.pstyle("ghost-offset-x").pfValue,W=e.pstyle("ghost-offset-y").pfValue,K=e.pstyle("ghost-opacity").value,X=K*g;t.translate(Z,W),O(K*S),j(),$(X,!0),L(K*D),H(),z(0!==T||0!==C),$(X,!1),q(X),t.translate(-Z,-W)}p&&t.translate(-h.x,-h.y),G(),p&&t.translate(h.x,h.y),O(),j(),$(g,!0),L(),H(),z(0!==T||0!==C),$(g,!1),q(),p&&t.translate(-h.x,-h.y),Y(),U(),n&&t.translate(d.x1,d.y1)}}},Rf=function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(e,n,i,r,a){var o=this;if(n.visible()){var s=n.pstyle("".concat(t,"-padding")).pfValue,c=n.pstyle("".concat(t,"-opacity")).value,u=n.pstyle("".concat(t,"-color")).value,l=n.pstyle("".concat(t,"-shape")).value;if(c>0){if(i=i||n.position(),null==r||null==a){var h=n.padding();r=n.width()+2*h,a=n.height()+2*h}o.colorFillStyle(e,u[0],u[1],u[2],c),o.nodeShapes[l].draw(e,i.x,i.y,r+2*s,a+2*s),e.fill()}}}};Ff.drawNodeOverlay=Rf("overlay"),Ff.drawNodeUnderlay=Rf("underlay"),Ff.hasPie=function(t){return(t=t[0])._private.hasPie},Ff.drawPie=function(t,e,n,i){e=e[0],i=i||e.position();var r=e.cy().style(),a=e.pstyle("pie-size"),o=i.x,s=i.y,c=e.width(),u=e.height(),l=Math.min(c,u)/2,h=0;this.usePaths()&&(o=0,s=0),"%"===a.units?l*=a.pfValue:void 0!==a.pfValue&&(l=a.pfValue/2);for(var f=1;f<=r.pieBackgroundN;f++){var d=e.pstyle("pie-"+f+"-background-size").value,g=e.pstyle("pie-"+f+"-background-color").value,p=e.pstyle("pie-"+f+"-background-opacity").value*n,b=d/100;b+h>1&&(b=1-h);var w=1.5*Math.PI+2*Math.PI*h,m=w+2*Math.PI*b;0===d||h>=1||h+b>1||(t.beginPath(),t.moveTo(o,s),t.arc(o,s,l,w,m),t.closePath(),this.colorFillStyle(t,g[0],g[1],g[2],p),t.fill(),h+=b)}};var jf={},$f=100;jf.getPixelRatio=function(){var t=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},jf.paintCache=function(t){for(var e,n=this.paintCaches=this.paintCaches||[],i=!0,r=0;ro.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!h&&(l[o.NODE]=!0,l[o.SELECT_BOX]=!0);var m=c.style(),y=c.zoom(),v=void 0!==r?r:y,x=c.pan(),k={x:x.x,y:x.y},_={zoom:y,pan:{x:x.x,y:x.y}},A=o.prevViewport;void 0===A||_.zoom!==A.zoom||_.pan.x!==A.pan.x||_.pan.y!==A.pan.y||p&&!g||(o.motionBlurPxRatio=1),a&&(k=a),v*=s,k.x*=s,k.y*=s;var E=o.getCachedZSortedEles();function T(t,e,n,i,r){var a=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",o.colorFillStyle(t,255,255,255,o.motionBlurTransparency),t.fillRect(e,n,i,r),t.globalCompositeOperation=a}function C(t,i){var s,c,l,h;o.clearingMotionBlur||t!==u.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]&&t!==u.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]?(s=k,c=v,l=o.canvasWidth,h=o.canvasHeight):(s={x:x.x*d,y:x.y*d},c=y*d,l=o.canvasWidth*d,h=o.canvasHeight*d),t.setTransform(1,0,0,1,0,0),"motionBlur"===i?T(t,0,0,l,h):e||void 0!==i&&!i||t.clearRect(0,0,l,h),n||(t.translate(s.x,s.y),t.scale(c,c)),a&&t.translate(a.x,a.y),r&&t.scale(r,r)}if(h||(o.textureDrawLastFrame=!1),h){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=c.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var S=o.data.bufferContexts[o.TEXTURE_BUFFER];S.setTransform(1,0,0,1,0,0),S.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:S,drawOnlyNodeLayer:!0,forcedPxRatio:s*o.textureMult}),(_=o.textureCache.viewport={zoom:c.zoom(),pan:c.pan(),width:o.canvasWidth,height:o.canvasHeight}).mpan={x:(0-_.pan.x)/_.zoom,y:(0-_.pan.y)/_.zoom}}l[o.DRAG]=!1,l[o.NODE]=!1;var I=u.contexts[o.NODE],M=o.textureCache.texture;_=o.textureCache.viewport,I.setTransform(1,0,0,1,0,0),f?T(I,0,0,_.width,_.height):I.clearRect(0,0,_.width,_.height);var D=m.core("outside-texture-bg-color").value,O=m.core("outside-texture-bg-opacity").value;o.colorFillStyle(I,D[0],D[1],D[2],O),I.fillRect(0,0,_.width,_.height),y=c.zoom(),C(I,!1),I.clearRect(_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s),I.drawImage(M,_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s)}else o.textureOnViewport&&!e&&(o.textureCache=null);var L=c.extent(),N=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),P=o.hideEdgesOnViewport&&N,B=[];if(B[o.NODE]=!l[o.NODE]&&f&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,B[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),B[o.DRAG]=!l[o.DRAG]&&f&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,B[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),l[o.NODE]||n||i||B[o.NODE]){var F=f&&!B[o.NODE]&&1!==d;C(I=e||(F?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:u.contexts[o.NODE]),f&&!F?"motionBlur":void 0),P?o.drawCachedNodes(I,E.nondrag,s,L):o.drawLayeredElements(I,E.nondrag,s,L),o.debug&&o.drawDebugPoints(I,E.nondrag),n||f||(l[o.NODE]=!1)}if(!i&&(l[o.DRAG]||n||B[o.DRAG])&&(F=f&&!B[o.DRAG]&&1!==d,C(I=e||(F?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:u.contexts[o.DRAG]),f&&!F?"motionBlur":void 0),P?o.drawCachedNodes(I,E.drag,s,L):o.drawCachedElements(I,E.drag,s,L),o.debug&&o.drawDebugPoints(I,E.drag),n||f||(l[o.DRAG]=!1)),o.showFps||!i&&l[o.SELECT_BOX]&&!n){if(C(I=e||u.contexts[o.SELECT_BOX]),1==o.selection[4]&&(o.hoverData.selecting||o.touchData.selecting)){y=o.cy.zoom();var R=m.core("selection-box-border-width").value/y;I.lineWidth=R,I.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",I.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),R>0&&(I.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",I.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(u.bgActivePosistion&&!o.hoverData.selecting){y=o.cy.zoom();var j=u.bgActivePosistion;I.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",I.beginPath(),I.arc(j.x,j.y,m.core("active-bg-size").pfValue/y,0,2*Math.PI),I.fill()}var $=o.lastRedrawTime;if(o.showFps&&$){$=Math.round($);var z=Math.round(1e3/$);I.setTransform(1,0,0,1,0,0),I.fillStyle="rgba(255, 0, 0, 0.75)",I.strokeStyle="rgba(255, 0, 0, 0.75)",I.lineWidth=1,I.fillText("1 frame = "+$+" ms = "+z+" fps",0,20);var q=60;I.strokeRect(0,30,250,20),I.fillRect(0,30,250*Math.min(z/q,1),20)}n||(l[o.SELECT_BOX]=!1)}if(f&&1!==d){var H=u.contexts[o.NODE],U=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],G=u.contexts[o.DRAG],Y=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],Z=function(t,e,n){t.setTransform(1,0,0,1,0,0),n||!w?t.clearRect(0,0,o.canvasWidth,o.canvasHeight):T(t,0,0,o.canvasWidth,o.canvasHeight);var i=d;t.drawImage(e,0,0,o.canvasWidth*i,o.canvasHeight*i,0,0,o.canvasWidth,o.canvasHeight)};(l[o.NODE]||B[o.NODE])&&(Z(H,U,B[o.NODE]),l[o.NODE]=!1),(l[o.DRAG]||B[o.DRAG])&&(Z(G,Y,B[o.DRAG]),l[o.DRAG]=!1)}o.prevViewport=_,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),f&&(o.motionBlurTimeout=setTimeout((function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!h,o.mbFrames=0,l[o.NODE]=!0,l[o.DRAG]=!0,o.redraw()}),$f)),e||c.emit("render")};for(var zf={drawPolygonPath:function(t,e,n,i,r,a){var o=i/2,s=r/2;t.beginPath&&t.beginPath(),t.moveTo(e+o*a[0],n+s*a[1]);for(var c=1;c0&&a>0){f.clearRect(0,0,r,a),f.globalCompositeOperation="source-over";var d=this.getCachedZSortedEles();if(t.full)f.translate(-n.x1*c,-n.y1*c),f.scale(c,c),this.drawElements(f,d),f.scale(1/c,1/c),f.translate(n.x1*c,n.y1*c);else{var g=e.pan(),p={x:g.x*c,y:g.y*c};c*=e.zoom(),f.translate(p.x,p.y),f.scale(c,c),this.drawElements(f,d),f.scale(1/c,1/c),f.translate(-p.x,-p.y)}t.bg&&(f.globalCompositeOperation="destination-over",f.fillStyle=t.bg,f.rect(0,0,r,a),f.fill())}return h},Wf.png=function(t){return Vf(t,this.bufferCanvasImage(t),"image/png")},Wf.jpg=function(t){return Vf(t,this.bufferCanvasImage(t),"image/jpeg")};var Qf={nodeShapeImpl:function(t,e,n,i,r,a,o){switch(t){case"ellipse":return this.drawEllipsePath(e,n,i,r,a);case"polygon":return this.drawPolygonPath(e,n,i,r,a,o);case"round-polygon":return this.drawRoundPolygonPath(e,n,i,r,a,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,n,i,r,a);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,n,i,r,a);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,n,i,r,a);case"barrel":return this.drawBarrelPath(e,n,i,r,a)}}},Jf=ed,td=ed.prototype;function ed(t){var e=this;e.data={canvases:new Array(td.CANVAS_LAYERS),contexts:new Array(td.CANVAS_LAYERS),canvasNeedsRedraw:new Array(td.CANVAS_LAYERS),bufferCanvases:new Array(td.BUFFER_COUNT),bufferContexts:new Array(td.CANVAS_LAYERS)};var n="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";e.data.canvasContainer=document.createElement("div");var r=e.data.canvasContainer.style;e.data.canvasContainer.style[n]=i,r.position="relative",r.zIndex="0",r.overflow="hidden";var a=t.cy.container();a.appendChild(e.data.canvasContainer),a.style[n]=i;var o={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};F()&&(o["-ms-touch-action"]="none",o["touch-action"]="none");for(var s=0;s=e?t:""+Array(e+1-i.length).join(n)+t},m={s:w,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),i=Math.floor(n/60),r=n%60;return(e<=0?"+":"-")+w(i,2,"0")+":"+w(r,2,"0")},m:function t(e,n){if(e.date()1)return t(o[0])}else{var s=e.name;v[s]=e,r=s}return!i&&r&&(y=r),r||!i&&y},_=function(t,e){if(x(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new E(n)},A=m;A.l=k,A.i=x,A.w=function(t,e){return _(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var E=function(){function b(t){this.$L=k(t.locale,null,!0),this.parse(t)}var w=b.prototype;return w.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(A.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(g);if(i){var r=i[2]-1||0,a=(i[7]||"0").substring(0,3);return n?new Date(Date.UTC(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],r,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},w.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},w.$utils=function(){return A},w.isValid=function(){return!(this.$d.toString()===d)},w.isSame=function(t,e){var n=_(t);return this.startOf(e)<=n&&n<=this.endOf(e)},w.isAfter=function(t,e){return _(t)68?1900:2e3)},s=function(t){return function(e){this[t]=+e}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],u=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},l=function(t,e){var n,i=a.meridiem;if(i){for(var r=1;r<=24;r+=1)if(t.indexOf(i(r,0,e))>-1){n=r>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=l(t,!1)}],a:[r,function(t){this.afternoon=l(t,!0)}],S:[/\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[i,s("seconds")],ss:[i,s("seconds")],m:[i,s("minutes")],mm:[i,s("minutes")],H:[i,s("hours")],h:[i,s("hours")],HH:[i,s("hours")],hh:[i,s("hours")],D:[i,s("day")],DD:[n,s("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],M:[i,s("month")],MM:[n,s("month")],MMM:[r,function(t){var e=u("months"),n=(u("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=u("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,s("year")],YY:[n,function(t){this.year=o(t)}],YYYY:[/\d{4}/,s("year")],Z:c,ZZ:c};function f(n){var i,r;i=n,r=a&&a.formats;for(var o=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,i){var a=i&&i.toUpperCase();return n||r[i]||t[i]||r[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),s=o.length,c=0;c-1)return new Date(("X"===e?1e3:1)*t);var i=f(e)(t),r=i.year,a=i.month,o=i.day,s=i.hours,c=i.minutes,u=i.seconds,l=i.milliseconds,h=i.zone,d=new Date,g=o||(r||a?1:d.getDate()),p=r||d.getFullYear(),b=0;r&&!a||(b=a>0?a-1:d.getMonth());var w=s||0,m=c||0,y=u||0,v=l||0;return h?new Date(Date.UTC(p,b,g,w,m,y,v+60*h.offset*1e3)):n?new Date(Date.UTC(p,b,g,w,m,y,v)):new Date(p,b,g,w,m,y,v)}catch(t){return new Date("")}}(e,s,i),this.init(),h&&!0!==h&&(this.$L=this.locale(h).$L),l&&e!=this.format(s)&&(this.$d=new Date("")),a={}}else if(s instanceof Array)for(var d=s.length,g=1;g<=d;g+=1){o[1]=s[g-1];var p=n.apply(this,o);if(p.isValid()){this.$d=p.$d,this.$L=p.$L,this.init();break}g===d&&(this.$d=new Date(""))}else r.call(this,t)}}}()},7547:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var r=function(e){return e.add(4-e.isoWeekday(),t)},a=n.prototype;a.isoWeekYear=function(){return r(this).year()},a.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,a,o,s=r(this),c=(n=this.isoWeekYear(),o=4-(a=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),a.isoWeekday()>4&&(o+=7),a.add(o,t));return s.diff(c,"week")+1},a.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var o=a.startOf;a.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):o.bind(this)(t,e)}}}()},6951:function(t){t.exports=function(){"use strict";const{entries:t,setPrototypeOf:e,isFrozen:n,getPrototypeOf:i,getOwnPropertyDescriptor:r}=Object;let{freeze:a,seal:o,create:s}=Object,{apply:c,construct:u}="undefined"!=typeof Reflect&&Reflect;c||(c=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),o||(o=function(t){return t}),u||(u=function(t,e){return new t(...e)});const l=x(Array.prototype.forEach),h=x(Array.prototype.pop),f=x(Array.prototype.push),d=x(String.prototype.toLowerCase),g=x(String.prototype.toString),p=x(String.prototype.match),b=x(String.prototype.replace),w=x(String.prototype.indexOf),m=x(String.prototype.trim),y=x(RegExp.prototype.test),v=k(TypeError);function x(t){return function(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r/gm),j=o(/\${[\w\W]*}/gm),$=o(/^data-[\-\w.\u00B7-\uFFFF]/),z=o(/^aria-[\-\w]+$/),q=o(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),H=o(/^(?:\w+script|data):/i),U=o(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),G=o(/^html$/i);var Y=Object.freeze({__proto__:null,MUSTACHE_EXPR:F,ERB_EXPR:R,TMPLIT_EXPR:j,DATA_ATTR:$,ARIA_ATTR:z,IS_ALLOWED_URI:q,IS_SCRIPT_OR_DATA:H,ATTR_WHITESPACE:U,DOCTYPE_NAME:G});const Z=()=>"undefined"==typeof window?null:window,W=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let n=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(n=e.getAttribute(i));const r="dompurify"+(n?"#"+n:"");try{return t.createPolicy(r,{createHTML:t=>t,createScriptURL:t=>t})}catch(t){return console.warn("TrustedTypes policy "+r+" could not be created."),null}};function K(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Z();const n=t=>K(t);if(n.version="3.0.3",n.removed=[],!e||!e.document||9!==e.document.nodeType)return n.isSupported=!1,n;const i=e.document,r=i.currentScript;let{document:o}=e;const{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:x,NodeFilter:k,NamedNodeMap:F=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:R,DOMParser:j,trustedTypes:$}=e,z=x.prototype,H=E(z,"cloneNode"),U=E(z,"nextSibling"),X=E(z,"childNodes"),V=E(z,"parentNode");if("function"==typeof c){const t=o.createElement("template");t.content&&t.content.ownerDocument&&(o=t.content.ownerDocument)}let Q,J="";const{implementation:tt,createNodeIterator:et,createDocumentFragment:nt,getElementsByTagName:it}=o,{importNode:rt}=i;let at={};n.isSupported="function"==typeof t&&"function"==typeof V&&tt&&void 0!==tt.createHTMLDocument;const{MUSTACHE_EXPR:ot,ERB_EXPR:st,TMPLIT_EXPR:ct,DATA_ATTR:ut,ARIA_ATTR:lt,IS_SCRIPT_OR_DATA:ht,ATTR_WHITESPACE:ft}=Y;let{IS_ALLOWED_URI:dt}=Y,gt=null;const pt=_({},[...T,...C,...S,...M,...O]);let bt=null;const wt=_({},[...L,...N,...P,...B]);let mt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),yt=null,vt=null,xt=!0,kt=!0,_t=!1,At=!0,Et=!1,Tt=!1,Ct=!1,St=!1,It=!1,Mt=!1,Dt=!1,Ot=!0,Lt=!1;const Nt="user-content-";let Pt=!0,Bt=!1,Ft={},Rt=null;const jt=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $t=null;const zt=_({},["audio","video","img","source","image","track"]);let qt=null;const Ht=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ut="http://www.w3.org/1998/Math/MathML",Gt="http://www.w3.org/2000/svg",Yt="http://www.w3.org/1999/xhtml";let Zt=Yt,Wt=!1,Kt=null;const Xt=_({},[Ut,Gt,Yt],g);let Vt;const Qt=["application/xhtml+xml","text/html"],Jt="text/html";let te,ee=null;const ne=o.createElement("form"),ie=function(t){return t instanceof RegExp||t instanceof Function},re=function(t){if(!ee||ee!==t){if(t&&"object"==typeof t||(t={}),t=A(t),Vt=Vt=-1===Qt.indexOf(t.PARSER_MEDIA_TYPE)?Jt:t.PARSER_MEDIA_TYPE,te="application/xhtml+xml"===Vt?g:d,gt="ALLOWED_TAGS"in t?_({},t.ALLOWED_TAGS,te):pt,bt="ALLOWED_ATTR"in t?_({},t.ALLOWED_ATTR,te):wt,Kt="ALLOWED_NAMESPACES"in t?_({},t.ALLOWED_NAMESPACES,g):Xt,qt="ADD_URI_SAFE_ATTR"in t?_(A(Ht),t.ADD_URI_SAFE_ATTR,te):Ht,$t="ADD_DATA_URI_TAGS"in t?_(A(zt),t.ADD_DATA_URI_TAGS,te):zt,Rt="FORBID_CONTENTS"in t?_({},t.FORBID_CONTENTS,te):jt,yt="FORBID_TAGS"in t?_({},t.FORBID_TAGS,te):{},vt="FORBID_ATTR"in t?_({},t.FORBID_ATTR,te):{},Ft="USE_PROFILES"in t&&t.USE_PROFILES,xt=!1!==t.ALLOW_ARIA_ATTR,kt=!1!==t.ALLOW_DATA_ATTR,_t=t.ALLOW_UNKNOWN_PROTOCOLS||!1,At=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Et=t.SAFE_FOR_TEMPLATES||!1,Tt=t.WHOLE_DOCUMENT||!1,It=t.RETURN_DOM||!1,Mt=t.RETURN_DOM_FRAGMENT||!1,Dt=t.RETURN_TRUSTED_TYPE||!1,St=t.FORCE_BODY||!1,Ot=!1!==t.SANITIZE_DOM,Lt=t.SANITIZE_NAMED_PROPS||!1,Pt=!1!==t.KEEP_CONTENT,Bt=t.IN_PLACE||!1,dt=t.ALLOWED_URI_REGEXP||q,Zt=t.NAMESPACE||Yt,mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ie(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Et&&(kt=!1),Mt&&(It=!0),Ft&&(gt=_({},[...O]),bt=[],!0===Ft.html&&(_(gt,T),_(bt,L)),!0===Ft.svg&&(_(gt,C),_(bt,N),_(bt,B)),!0===Ft.svgFilters&&(_(gt,S),_(bt,N),_(bt,B)),!0===Ft.mathMl&&(_(gt,M),_(bt,P),_(bt,B))),t.ADD_TAGS&&(gt===pt&&(gt=A(gt)),_(gt,t.ADD_TAGS,te)),t.ADD_ATTR&&(bt===wt&&(bt=A(bt)),_(bt,t.ADD_ATTR,te)),t.ADD_URI_SAFE_ATTR&&_(qt,t.ADD_URI_SAFE_ATTR,te),t.FORBID_CONTENTS&&(Rt===jt&&(Rt=A(Rt)),_(Rt,t.FORBID_CONTENTS,te)),Pt&&(gt["#text"]=!0),Tt&&_(gt,["html","head","body"]),gt.table&&(_(gt,["tbody"]),delete yt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw v('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw v('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Q=t.TRUSTED_TYPES_POLICY,J=Q.createHTML("")}else void 0===Q&&(Q=W($,r)),null!==Q&&"string"==typeof J&&(J=Q.createHTML(""));a&&a(t),ee=t}},ae=_({},["mi","mo","mn","ms","mtext"]),oe=_({},["foreignobject","desc","title","annotation-xml"]),se=_({},["title","style","font","a","script"]),ce=_({},C);_(ce,S),_(ce,I);const ue=_({},M);_(ue,D);const le=function(t){let e=V(t);e&&e.tagName||(e={namespaceURI:Zt,tagName:"template"});const n=d(t.tagName),i=d(e.tagName);return!!Kt[t.namespaceURI]&&(t.namespaceURI===Gt?e.namespaceURI===Yt?"svg"===n:e.namespaceURI===Ut?"svg"===n&&("annotation-xml"===i||ae[i]):Boolean(ce[n]):t.namespaceURI===Ut?e.namespaceURI===Yt?"math"===n:e.namespaceURI===Gt?"math"===n&&oe[i]:Boolean(ue[n]):t.namespaceURI===Yt?!(e.namespaceURI===Gt&&!oe[i])&&!(e.namespaceURI===Ut&&!ae[i])&&!ue[n]&&(se[n]||!ce[n]):!("application/xhtml+xml"!==Vt||!Kt[t.namespaceURI]))},he=function(t){f(n.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){t.remove()}},fe=function(t,e){try{f(n.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){f(n.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!bt[t])if(It||Mt)try{he(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},de=function(t){let e,n;if(St)t=""+t;else{const e=p(t,/^[\r\n\t ]+/);n=e&&e[0]}"application/xhtml+xml"===Vt&&Zt===Yt&&(t=''+t+"");const i=Q?Q.createHTML(t):t;if(Zt===Yt)try{e=(new j).parseFromString(i,Vt)}catch(t){}if(!e||!e.documentElement){e=tt.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=Wt?J:i}catch(t){}}const r=e.body||e.documentElement;return t&&n&&r.insertBefore(o.createTextNode(n),r.childNodes[0]||null),Zt===Yt?it.call(e,Tt?"html":"body")[0]:Tt?e.documentElement:r},ge=function(t){return et.call(t.ownerDocument||t,t,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT,null,!1)},pe=function(t){return t instanceof R&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof F)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},be=function(t){return"object"==typeof u?t instanceof u:t&&"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},we=function(t,e,i){at[t]&&l(at[t],(t=>{t.call(n,e,i,ee)}))},me=function(t){let e;if(we("beforeSanitizeElements",t,null),pe(t))return he(t),!0;const i=te(t.nodeName);if(we("uponSanitizeElement",t,{tagName:i,allowedTags:gt}),t.hasChildNodes()&&!be(t.firstElementChild)&&(!be(t.content)||!be(t.content.firstElementChild))&&y(/<[/\w]/g,t.innerHTML)&&y(/<[/\w]/g,t.textContent))return he(t),!0;if(!gt[i]||yt[i]){if(!yt[i]&&ve(i)){if(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,i))return!1;if(mt.tagNameCheck instanceof Function&&mt.tagNameCheck(i))return!1}if(Pt&&!Rt[i]){const e=V(t)||t.parentNode,n=X(t)||t.childNodes;if(n&&e)for(let i=n.length-1;i>=0;--i)e.insertBefore(H(n[i],!0),U(t))}return he(t),!0}return t instanceof x&&!le(t)?(he(t),!0):"noscript"!==i&&"noembed"!==i||!y(/<\/no(script|embed)/i,t.innerHTML)?(Et&&3===t.nodeType&&(e=t.textContent,e=b(e,ot," "),e=b(e,st," "),e=b(e,ct," "),t.textContent!==e&&(f(n.removed,{element:t.cloneNode()}),t.textContent=e)),we("afterSanitizeElements",t,null),!1):(he(t),!0)},ye=function(t,e,n){if(Ot&&("id"===e||"name"===e)&&(n in o||n in ne))return!1;if(kt&&!vt[e]&&y(ut,e));else if(xt&&y(lt,e));else if(!bt[e]||vt[e]){if(!(ve(t)&&(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,t)||mt.tagNameCheck instanceof Function&&mt.tagNameCheck(t))&&(mt.attributeNameCheck instanceof RegExp&&y(mt.attributeNameCheck,e)||mt.attributeNameCheck instanceof Function&&mt.attributeNameCheck(e))||"is"===e&&mt.allowCustomizedBuiltInElements&&(mt.tagNameCheck instanceof RegExp&&y(mt.tagNameCheck,n)||mt.tagNameCheck instanceof Function&&mt.tagNameCheck(n))))return!1}else if(qt[e]);else if(y(dt,b(n,ft,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==w(n,"data:")||!$t[t])if(_t&&!y(ht,b(n,ft,"")));else if(n)return!1;return!0},ve=function(t){return t.indexOf("-")>0},xe=function(t){let e,i,r,a;we("beforeSanitizeAttributes",t,null);const{attributes:o}=t;if(!o)return;const s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:bt};for(a=o.length;a--;){e=o[a];const{name:c,namespaceURI:u}=e;if(i="value"===c?e.value:m(e.value),r=te(c),s.attrName=r,s.attrValue=i,s.keepAttr=!0,s.forceKeepAttr=void 0,we("uponSanitizeAttribute",t,s),i=s.attrValue,s.forceKeepAttr)continue;if(fe(c,t),!s.keepAttr)continue;if(!At&&y(/\/>/i,i)){fe(c,t);continue}Et&&(i=b(i,ot," "),i=b(i,st," "),i=b(i,ct," "));const l=te(t.nodeName);if(ye(l,r,i)){if(!Lt||"id"!==r&&"name"!==r||(fe(c,t),i=Nt+i),Q&&"object"==typeof $&&"function"==typeof $.getAttributeType)if(u);else switch($.getAttributeType(l,r)){case"TrustedHTML":i=Q.createHTML(i);break;case"TrustedScriptURL":i=Q.createScriptURL(i)}try{u?t.setAttributeNS(u,c,i):t.setAttribute(c,i),h(n.removed)}catch(t){}}}we("afterSanitizeAttributes",t,null)},ke=function t(e){let n;const i=ge(e);for(we("beforeSanitizeShadowDOM",e,null);n=i.nextNode();)we("uponSanitizeShadowNode",n,null),me(n)||(n.content instanceof s&&t(n.content),xe(n));we("afterSanitizeShadowDOM",e,null)};return n.sanitize=function(t){let e,r,a,o,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Wt=!t,Wt&&(t="\x3c!--\x3e"),"string"!=typeof t&&!be(t)){if("function"!=typeof t.toString)throw v("toString is not a function");if("string"!=typeof(t=t.toString()))throw v("dirty is not a string, aborting")}if(!n.isSupported)return t;if(Ct||re(c),n.removed=[],"string"==typeof t&&(Bt=!1),Bt){if(t.nodeName){const e=te(t.nodeName);if(!gt[e]||yt[e])throw v("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)e=de("\x3c!----\x3e"),r=e.ownerDocument.importNode(t,!0),1===r.nodeType&&"BODY"===r.nodeName||"HTML"===r.nodeName?e=r:e.appendChild(r);else{if(!It&&!Et&&!Tt&&-1===t.indexOf("<"))return Q&&Dt?Q.createHTML(t):t;if(e=de(t),!e)return It?null:Dt?J:""}e&&St&&he(e.firstChild);const l=ge(Bt?t:e);for(;a=l.nextNode();)me(a)||(a.content instanceof s&&ke(a.content),xe(a));if(Bt)return t;if(It){if(Mt)for(o=nt.call(e.ownerDocument);e.firstChild;)o.appendChild(e.firstChild);else o=e;return(bt.shadowroot||bt.shadowrootmod)&&(o=rt.call(i,o,!0)),o}let h=Tt?e.outerHTML:e.innerHTML;return Tt&>["!doctype"]&&e.ownerDocument&&e.ownerDocument.doctype&&e.ownerDocument.doctype.name&&y(G,e.ownerDocument.doctype.name)&&(h="\n"+h),Et&&(h=b(h,ot," "),h=b(h,st," "),h=b(h,ct," ")),Q&&Dt?Q.createHTML(h):h},n.setConfig=function(t){re(t),Ct=!0},n.clearConfig=function(){ee=null,Ct=!1},n.isValidAttribute=function(t,e,n){ee||re({});const i=te(t),r=te(e);return ye(i,r,n)},n.addHook=function(t,e){"function"==typeof e&&(at[t]=at[t]||[],f(at[t],e))},n.removeHook=function(t){if(at[t])return h(at[t])},n.removeHooks=function(t){at[t]&&(at[t]=[])},n.removeAllHooks=function(){at={}},n}return K()}()},7697:function(t,e,n){t.exports=function(){function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,(function(t){return r(e[o][1][t]||t)}),u,u.exports,t,e,n,i)}return n[o].exports}for(var a=void 0,o=0;o0&&void 0!==arguments[0]?arguments[0]:{},i=n.defaultLayoutOptions,a=void 0===i?{}:i,s=n.algorithms,c=void 0===s?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:s,u=n.workerFactory,l=n.workerUrl;if(r(this,t),this.defaultLayoutOptions=a,this.initialized=!1,void 0===l&&void 0===u)throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var h=u;void 0!==l&&void 0===u&&(h=function(t){return new Worker(t)});var f=h(l);if("function"!=typeof f.postMessage)throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new o(f),this.worker.postMessage({cmd:"register",algorithms:c}).then((function(t){return e.initialized=!0})).catch(console.err)}return i(t,[{key:"layout",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.layoutOptions,i=void 0===n?this.defaultLayoutOptions:n,r=e.logging,a=void 0!==r&&r,o=e.measureExecutionTime,s=void 0!==o&&o;return t?this.worker.postMessage({cmd:"layout",graph:t,layoutOptions:i,options:{logging:a,measureExecutionTime:s}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),t}();n.default=a;var o=function(){function t(e){var n=this;if(r(this,t),void 0===e)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=e,this.worker.onmessage=function(t){setTimeout((function(){n.receive(n,t)}),0)}}return i(t,[{key:"postMessage",value:function(t){var e=this.id||0;this.id=e+1,t.id=e;var n=this;return new Promise((function(i,r){n.resolvers[e]=function(t,e){t?(n.convertGwtStyleError(t),r(t)):i(e)},n.worker.postMessage(t)}))}},{key:"receive",value:function(t,e){var n=e.data,i=t.resolvers[n.id];i&&(delete t.resolvers[n.id],n.error?i(n.error):i(null,n.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(t){if(t){var e=t.__java$exception;e&&(e.cause&&e.cause.backingJsObject&&(t.cause=e.cause.backingJsObject,this.convertGwtStyleError(t.cause)),delete t.__java$exception)}}}]),t}()},{}],2:[function(t,e,i){(function(t){(function(){"use strict";var n;function r(){}function a(){}function o(){}function s(){}function c(){}function u(){}function l(){}function h(){}function f(){}function d(){}function g(){}function p(){}function b(){}function w(){}function m(){}function y(){}function v(){}function x(){}function k(){}function _(){}function A(){}function E(){}function T(){}function C(){}function S(){}function I(){}function M(){}function D(){}function O(){}function L(){}function N(){}function P(){}function B(){}function F(){}function R(){}function j(){}function $(){}function z(){}function q(){}function H(){}function U(){}function G(){}function Y(){}function Z(){}function W(){}function K(){}function X(){}function V(){}function Q(){}function J(){}function tt(){}function et(){}function nt(){}function it(){}function rt(){}function at(){}function ot(){}function st(){}function ct(){}function ut(){}function lt(){}function ht(){}function ft(){}function dt(){}function gt(){}function pt(){}function bt(){}function wt(){}function mt(){}function yt(){}function vt(){}function xt(){}function kt(){}function _t(){}function At(){}function Et(){}function Tt(){}function Ct(){}function St(){}function It(){}function Mt(){}function Dt(){}function Ot(){}function Lt(){}function Nt(){}function Pt(){}function Bt(){}function Ft(){}function Rt(){}function jt(){}function $t(){}function zt(){}function qt(){}function Ht(){}function Ut(){}function Gt(){}function Yt(){}function Zt(){}function Wt(){}function Kt(){}function Xt(){}function Vt(){}function Qt(){}function Jt(){}function te(){}function ee(){}function ne(){}function ie(){}function re(){}function ae(){}function oe(){}function se(){}function ce(){}function ue(){}function le(){}function he(){}function fe(){}function de(){}function ge(){}function pe(){}function be(){}function we(){}function me(){}function ye(){}function ve(){}function xe(){}function ke(){}function _e(){}function Ae(){}function Ee(){}function Te(){}function Ce(){}function Se(){}function Ie(){}function Me(){}function De(){}function Oe(){}function Le(){}function Ne(){}function Pe(){}function Be(){}function Fe(){}function Re(){}function je(){}function $e(){}function ze(){}function qe(){}function He(){}function Ue(){}function Ge(){}function Ye(){}function Ze(){}function We(){}function Ke(){}function Xe(){}function Ve(){}function Qe(){}function Je(){}function tn(){}function en(){}function nn(){}function rn(){}function an(){}function on(){}function sn(){}function cn(){}function un(){}function ln(){}function hn(){}function fn(){}function dn(){}function gn(){}function pn(){}function bn(){}function wn(){}function mn(){}function yn(){}function vn(){}function xn(){}function kn(){}function _n(){}function An(){}function En(){}function Tn(){}function Cn(){}function Sn(){}function In(){}function Mn(){}function Dn(){}function On(){}function Ln(){}function Nn(){}function Pn(){}function Bn(){}function Fn(){}function Rn(){}function jn(){}function $n(){}function zn(){}function qn(){}function Hn(){}function Un(){}function Gn(){}function Yn(){}function Zn(){}function Wn(){}function Kn(){}function Xn(){}function Vn(){}function Qn(){}function Jn(){}function ti(){}function ei(){}function ni(){}function ii(){}function ri(){}function ai(){}function oi(){}function si(){}function ci(){}function ui(){}function li(){}function hi(){}function fi(){}function di(){}function gi(){}function pi(){}function bi(){}function wi(){}function mi(){}function yi(){}function vi(){}function xi(){}function ki(){}function _i(){}function Ai(){}function Ei(){}function Ti(){}function Ci(){}function Si(){}function Ii(){}function Mi(){}function Di(){}function Oi(){}function Li(){}function Ni(){}function Pi(){}function Bi(){}function Fi(){}function Ri(){}function ji(){}function $i(){}function zi(){}function qi(){}function Hi(){}function Ui(){}function Gi(){}function Yi(){}function Zi(){}function Wi(){}function Ki(){}function Xi(){}function Vi(){}function Qi(){}function Ji(){}function tr(){}function er(){}function nr(){}function ir(){}function rr(){}function ar(){}function or(){}function sr(){}function cr(){}function ur(){}function lr(){}function hr(){}function fr(){}function dr(){}function gr(){}function pr(){}function br(){}function wr(){}function mr(){}function yr(){}function vr(){}function xr(){}function kr(){}function _r(){}function Ar(){}function Er(){}function Tr(){}function Cr(){}function Sr(){}function Ir(){}function Mr(){}function Dr(){}function Or(){}function Lr(){}function Nr(){}function Pr(){}function Br(){}function Fr(){}function Rr(){}function jr(){}function $r(){}function zr(){}function qr(){}function Hr(){}function Ur(){}function Gr(){}function Yr(){}function Zr(){}function Wr(){}function Kr(){}function Xr(){}function Vr(){}function Qr(){}function Jr(){}function ta(){}function ea(){}function na(){}function ia(){}function ra(){}function aa(){}function oa(){}function sa(){}function ca(){}function ua(){}function la(){}function ha(){}function fa(){}function da(){}function ga(){}function pa(){}function ba(){}function wa(){}function ma(){}function ya(){}function va(){}function xa(){}function ka(){}function _a(){}function Aa(){}function Ea(){}function Ta(){}function Ca(){}function Sa(){}function Ia(){}function Ma(){}function Da(){}function Oa(){}function La(){}function Na(){}function Pa(){}function Ba(){}function Fa(){}function Ra(){}function ja(){}function $a(){}function za(){}function qa(){}function Ha(){}function Ua(){}function Ga(){}function Ya(){}function Za(){}function Wa(){}function Ka(){}function Xa(){}function Va(){}function Qa(){}function Ja(){}function to(){}function eo(){}function no(){}function io(){}function ro(){}function ao(){}function oo(){}function so(){}function co(){}function uo(){}function lo(){}function ho(){}function fo(){}function go(){}function po(){}function bo(){}function wo(){}function mo(){}function yo(){}function vo(){}function xo(){}function ko(){}function _o(){}function Ao(){}function Eo(){}function To(){}function Co(){}function So(){}function Io(){}function Mo(){}function Do(){}function Oo(){}function Lo(){}function No(){}function Po(){}function Bo(){}function Fo(){}function Ro(){}function jo(){}function $o(){}function zo(){}function qo(){}function Ho(){}function Uo(){}function Go(){}function Yo(){}function Zo(){}function Wo(){}function Ko(){}function Xo(){}function Vo(){}function Qo(){}function Jo(){}function ts(){}function es(){}function ns(){}function is(){}function rs(){}function as(){}function os(){}function ss(){}function cs(){}function us(){}function ls(){}function hs(){}function fs(){}function ds(){}function gs(){}function ps(){}function bs(){}function ws(){}function ms(){}function ys(){}function vs(){}function xs(){}function ks(){}function _s(){}function As(){}function Es(){}function Ts(){}function Cs(){}function Ss(){}function Is(){}function Ms(){}function Ds(){}function Os(){}function Ls(){}function Ns(){}function Ps(){}function Bs(){}function Fs(){}function Rs(){}function js(){}function $s(){}function zs(){}function qs(){}function Hs(){}function Us(){}function Gs(){}function Ys(){}function Zs(){}function Ws(){}function Ks(){}function Xs(){}function Vs(){}function Qs(){}function Js(){}function tc(){}function ec(){}function nc(){}function ic(){}function rc(){}function ac(){}function oc(){}function sc(){}function cc(){}function uc(){}function lc(){}function hc(){}function fc(){}function dc(){}function gc(){}function pc(){}function bc(){}function wc(){}function mc(){}function yc(){}function vc(){}function xc(){}function kc(){}function _c(){}function Ac(){}function Ec(){}function Tc(){}function Cc(){}function Sc(){}function Ic(){}function Mc(){}function Dc(){}function Oc(){}function Lc(){}function Nc(){}function Pc(){}function Bc(){}function Fc(){}function Rc(){}function jc(){}function $c(){}function zc(){}function qc(){}function Hc(){}function Uc(){}function Gc(){}function Yc(){}function Zc(){}function Wc(){}function Kc(){}function Xc(){}function Vc(){}function Qc(){}function Jc(){}function tu(){}function eu(){}function nu(){}function iu(){}function ru(){}function au(){}function ou(){}function su(){}function cu(){}function uu(){}function lu(){}function hu(){}function fu(){}function du(){}function gu(){}function pu(){}function bu(){}function wu(){}function mu(){}function yu(){}function vu(){}function xu(){}function ku(){}function _u(){}function Au(){}function Eu(){}function Tu(){}function Cu(){}function Su(){}function Iu(){}function Mu(){}function Du(){}function Ou(){}function Lu(){}function Nu(){}function Pu(){}function Bu(){}function Fu(){}function Ru(){}function ju(){}function $u(){}function zu(){}function qu(){}function Hu(){}function Uu(){}function Gu(){}function Yu(){}function Zu(){}function Wu(){}function Ku(){}function Xu(){}function Vu(){}function Qu(){}function Ju(){}function tl(){}function el(){}function nl(){}function il(){}function rl(){}function al(){}function ol(){}function sl(){}function cl(){}function ul(){}function ll(){}function hl(){}function fl(){}function dl(){}function gl(){}function pl(){}function bl(){}function wl(){}function ml(){}function yl(){}function vl(){}function xl(){}function kl(){}function _l(){}function Al(){}function El(){}function Tl(){}function Cl(){}function Sl(){}function Il(){}function Ml(){}function Dl(){}function Ol(){}function Ll(){}function Nl(){}function Pl(){}function Bl(){}function Fl(){}function Rl(){}function jl(t){}function $l(t){}function zl(){iv()}function ql(){Gut()}function Hl(){Awt()}function Ul(){$xt()}function Gl(){_Tt()}function Yl(){fFt()}function Zl(){jvt()}function Wl(){axt()}function Kl(){_E()}function Xl(){yE()}function Vl(){Hj()}function Ql(){AE()}function Jl(){Mrt()}function th(){TE()}function eh(){I6()}function nh(){Sit()}function ih(){X8()}function rh(){jJ()}function ah(){Yut()}function oh(){$Et()}function sh(){Iit()}function ch(){Y2()}function uh(){fWt()}function lh(){Gvt()}function hh(){$J()}function fh(){HZt()}function dh(){FJ()}function gh(){Mit()}function ph(){Qst()}function bh(){UJ()}function wh(){S7()}function mh(){CE()}function yh(){jDt()}function vh(){Zvt()}function xh(){zat()}function kh(){TEt()}function _h(){gFt()}function Ah(){qmt()}function Eh(){IDt()}function Th(){Rot()}function Ch(){qJ()}function Sh(){ljt()}function Ih(){LDt()}function Mh(){KOt()}function Dh(){P7()}function Oh(){CEt()}function Lh(){lWt()}function Nh(){Wut()}function Ph(){ypt()}function Bh(){Uzt()}function Fh(){sj()}function Rh(){pat()}function jh(){f$t()}function $h(t){xW(t)}function zh(t){this.a=t}function qh(t){this.a=t}function Hh(t){this.a=t}function Uh(t){this.a=t}function Gh(t){this.a=t}function Yh(t){this.a=t}function Zh(t){this.a=t}function Wh(t){this.a=t}function Kh(t){this.a=t}function Xh(t){this.a=t}function Vh(t){this.a=t}function Qh(t){this.a=t}function Jh(t){this.a=t}function tf(t){this.a=t}function ef(t){this.a=t}function nf(t){this.a=t}function rf(t){this.a=t}function af(t){this.a=t}function of(t){this.a=t}function sf(t){this.a=t}function cf(t){this.a=t}function uf(t){this.b=t}function lf(t){this.c=t}function hf(t){this.a=t}function ff(t){this.a=t}function df(t){this.a=t}function gf(t){this.a=t}function pf(t){this.a=t}function bf(t){this.a=t}function wf(t){this.a=t}function mf(t){this.a=t}function yf(t){this.a=t}function vf(t){this.a=t}function xf(t){this.a=t}function kf(t){this.a=t}function _f(t){this.a=t}function Af(t){this.a=t}function Ef(t){this.a=t}function Tf(t){this.a=t}function Cf(t){this.a=t}function Sf(){this.a=[]}function If(t,e){t.a=e}function Mf(t,e){t.a=e}function Df(t,e){t.b=e}function Of(t,e){t.b=e}function Lf(t,e){t.b=e}function Nf(t,e){t.j=e}function Pf(t,e){t.g=e}function Bf(t,e){t.i=e}function Ff(t,e){t.c=e}function Rf(t,e){t.d=e}function jf(t,e){t.d=e}function $f(t,e){t.c=e}function zf(t,e){t.k=e}function qf(t,e){t.c=e}function Hf(t,e){t.c=e}function Uf(t,e){t.a=e}function Gf(t,e){t.a=e}function Yf(t,e){t.f=e}function Zf(t,e){t.a=e}function Wf(t,e){t.b=e}function Kf(t,e){t.d=e}function Xf(t,e){t.i=e}function Vf(t,e){t.o=e}function Qf(t,e){t.r=e}function Jf(t,e){t.a=e}function td(t,e){t.b=e}function ed(t,e){t.e=e}function nd(t,e){t.f=e}function id(t,e){t.g=e}function rd(t,e){t.e=e}function ad(t,e){t.f=e}function od(t,e){t.f=e}function sd(t,e){t.n=e}function cd(t,e){t.a=e}function ud(t,e){t.a=e}function ld(t,e){t.c=e}function hd(t,e){t.c=e}function fd(t,e){t.d=e}function dd(t,e){t.e=e}function gd(t,e){t.g=e}function pd(t,e){t.a=e}function bd(t,e){t.c=e}function wd(t,e){t.d=e}function md(t,e){t.e=e}function yd(t,e){t.f=e}function vd(t,e){t.j=e}function xd(t,e){t.a=e}function kd(t,e){t.b=e}function _d(t,e){t.a=e}function Ad(t){t.b=t.a}function Ed(t){t.c=t.d.d}function Td(t){this.d=t}function Cd(t){this.a=t}function Sd(t){this.a=t}function Id(t){this.a=t}function Md(t){this.a=t}function Dd(t){this.a=t}function Od(t){this.a=t}function Ld(t){this.a=t}function Nd(t){this.a=t}function Pd(t){this.a=t}function Bd(t){this.a=t}function Fd(t){this.a=t}function Rd(t){this.a=t}function jd(t){this.a=t}function $d(t){this.a=t}function zd(t){this.b=t}function qd(t){this.b=t}function Hd(t){this.b=t}function Ud(t){this.a=t}function Gd(t){this.a=t}function Yd(t){this.a=t}function Zd(t){this.c=t}function Wd(t){this.c=t}function Kd(t){this.c=t}function Xd(t){this.a=t}function Vd(t){this.a=t}function Qd(t){this.a=t}function Jd(t){this.a=t}function tg(t){this.a=t}function eg(t){this.a=t}function ng(t){this.a=t}function ig(t){this.a=t}function rg(t){this.a=t}function ag(t){this.a=t}function og(t){this.a=t}function sg(t){this.a=t}function cg(t){this.a=t}function ug(t){this.a=t}function lg(t){this.a=t}function hg(t){this.a=t}function fg(t){this.a=t}function dg(t){this.a=t}function gg(t){this.a=t}function pg(t){this.a=t}function bg(t){this.a=t}function wg(t){this.a=t}function mg(t){this.a=t}function yg(t){this.a=t}function vg(t){this.a=t}function xg(t){this.a=t}function kg(t){this.a=t}function _g(t){this.a=t}function Ag(t){this.a=t}function Eg(t){this.a=t}function Tg(t){this.a=t}function Cg(t){this.a=t}function Sg(t){this.a=t}function Ig(t){this.a=t}function Mg(t){this.a=t}function Dg(t){this.a=t}function Og(t){this.a=t}function Lg(t){this.a=t}function Ng(t){this.a=t}function Pg(t){this.a=t}function Bg(t){this.a=t}function Fg(t){this.a=t}function Rg(t){this.a=t}function jg(t){this.a=t}function $g(t){this.a=t}function zg(t){this.e=t}function qg(t){this.a=t}function Hg(t){this.a=t}function Ug(t){this.a=t}function Gg(t){this.a=t}function Yg(t){this.a=t}function Zg(t){this.a=t}function Wg(t){this.a=t}function Kg(t){this.a=t}function Xg(t){this.a=t}function Vg(t){this.a=t}function Qg(t){this.a=t}function Jg(t){this.a=t}function tp(t){this.a=t}function ep(t){this.a=t}function np(t){this.a=t}function ip(t){this.a=t}function rp(t){this.a=t}function ap(t){this.a=t}function op(t){this.a=t}function sp(t){this.a=t}function cp(t){this.a=t}function up(t){this.a=t}function lp(t){this.a=t}function hp(t){this.a=t}function fp(t){this.a=t}function dp(t){this.a=t}function gp(t){this.a=t}function pp(t){this.a=t}function bp(t){this.a=t}function wp(t){this.a=t}function mp(t){this.a=t}function yp(t){this.a=t}function vp(t){this.a=t}function xp(t){this.a=t}function kp(t){this.a=t}function _p(t){this.a=t}function Ap(t){this.a=t}function Ep(t){this.a=t}function Tp(t){this.a=t}function Cp(t){this.a=t}function Sp(t){this.a=t}function Ip(t){this.a=t}function Mp(t){this.a=t}function Dp(t){this.a=t}function Op(t){this.a=t}function Lp(t){this.a=t}function Np(t){this.a=t}function Pp(t){this.a=t}function Bp(t){this.a=t}function Fp(t){this.a=t}function Rp(t){this.a=t}function jp(t){this.a=t}function $p(t){this.a=t}function zp(t){this.c=t}function qp(t){this.b=t}function Hp(t){this.a=t}function Up(t){this.a=t}function Gp(t){this.a=t}function Yp(t){this.a=t}function Zp(t){this.a=t}function Wp(t){this.a=t}function Kp(t){this.a=t}function Xp(t){this.a=t}function Vp(t){this.a=t}function Qp(t){this.a=t}function Jp(t){this.a=t}function tb(t){this.a=t}function eb(t){this.a=t}function nb(t){this.a=t}function ib(t){this.a=t}function rb(t){this.a=t}function ab(t){this.a=t}function ob(t){this.a=t}function sb(t){this.a=t}function cb(t){this.a=t}function ub(t){this.a=t}function lb(t){this.a=t}function hb(t){this.a=t}function fb(t){this.a=t}function db(t){this.a=t}function gb(t){this.a=t}function pb(t){this.a=t}function bb(t){this.a=t}function wb(t){this.a=t}function mb(t){this.a=t}function yb(t){this.a=t}function vb(t){this.a=t}function xb(t){this.a=t}function kb(t){this.a=t}function _b(t){this.a=t}function Ab(t){this.a=t}function Eb(t){this.a=t}function Tb(t){this.a=t}function Cb(t){this.a=t}function Sb(t){this.a=t}function Ib(t){this.a=t}function Mb(t){this.a=t}function Db(t){this.a=t}function Ob(t){this.a=t}function Lb(t){this.a=t}function Nb(t){this.a=t}function Pb(t){this.a=t}function Bb(t){this.a=t}function Fb(t){this.a=t}function Rb(t){this.a=t}function jb(t){this.a=t}function $b(t){this.a=t}function zb(t){this.a=t}function qb(t){this.a=t}function Hb(t){this.a=t}function Ub(t){this.a=t}function Gb(t){this.a=t}function Yb(t){this.a=t}function Zb(t){this.a=t}function Wb(t){this.a=t}function Kb(t){this.a=t}function Xb(t){this.a=t}function Vb(t){this.a=t}function Qb(t){this.a=t}function Jb(t){this.a=t}function tw(t){this.a=t}function ew(t){this.a=t}function nw(t){this.a=t}function iw(t){this.a=t}function rw(t){this.a=t}function aw(t){this.a=t}function ow(t){this.a=t}function sw(t){this.b=t}function cw(t){this.f=t}function uw(t){this.a=t}function lw(t){this.a=t}function hw(t){this.a=t}function fw(t){this.a=t}function dw(t){this.a=t}function gw(t){this.a=t}function pw(t){this.a=t}function bw(t){this.a=t}function ww(t){this.a=t}function mw(t){this.a=t}function yw(t){this.a=t}function vw(t){this.b=t}function xw(t){this.c=t}function kw(t){this.e=t}function _w(t){this.a=t}function Aw(t){this.a=t}function Ew(t){this.a=t}function Tw(t){this.a=t}function Cw(t){this.a=t}function Sw(t){this.d=t}function Iw(t){this.a=t}function Mw(t){this.a=t}function Dw(t){this.e=t}function Ow(){this.a=0}function Lw(){BD(this)}function Nw(){PD(this)}function Pw(){OY(this)}function Bw(){gK(this)}function Fw(){jl(this)}function Rw(){this.c=LOe}function jw(t,e){e.Wb(t)}function $w(t,e){t.b+=e}function zw(t){t.b=new cx}function qw(t){return t.e}function Hw(t){return t.a}function Uw(t){return t.a}function Gw(t){return t.a}function Yw(t){return t.a}function Zw(t){return t.a}function Ww(){return null}function Kw(){return null}function Xw(){o_(),bZt()}function Vw(t){t.b.tf(t.e)}function Qw(t,e){t.b=e-t.b}function Jw(t,e){t.a=e-t.a}function tm(t,e){e.ad(t.a)}function em(t,e){USt(e,t)}function nm(t,e,n){t.Od(n,e)}function im(t,e){t.e=e,e.b=t}function rm(t){uj(),this.a=t}function am(t){uj(),this.a=t}function om(t){uj(),this.a=t}function sm(t){WZ(),this.a=t}function cm(t){CV(),iee.be(t)}function um(){bN.call(this)}function lm(){bN.call(this)}function hm(){um.call(this)}function fm(){um.call(this)}function dm(){um.call(this)}function gm(){um.call(this)}function pm(){um.call(this)}function bm(){um.call(this)}function wm(){um.call(this)}function mm(){um.call(this)}function ym(){um.call(this)}function vm(){um.call(this)}function xm(){um.call(this)}function km(){this.a=this}function _m(){this.Bb|=256}function Am(){this.b=new CM}function Em(){Em=M,new Pw}function Tm(){hm.call(this)}function Cm(t,e){t.length=e}function Sm(t,e){Wz(t.a,e)}function Im(t,e){ZTt(t.c,e)}function Mm(t,e){AY(t.b,e)}function Dm(t,e){Mmt(t.a,e)}function Om(t,e){Dft(t.a,e)}function Lm(t,e){got(t.e,e)}function Nm(t){OMt(t.c,t.b)}function Pm(t,e){t.kc().Nb(e)}function Bm(t){this.a=wdt(t)}function Fm(){this.a=new Pw}function Rm(){this.a=new Pw}function jm(){this.a=new Nw}function $m(){this.a=new Nw}function zm(){this.a=new Nw}function qm(){this.a=new vt}function Hm(){this.a=new x6}function Um(){this.a=new fe}function Gm(){this.a=new WA}function Ym(){this.a=new B0}function Zm(){this.a=new aJ}function Wm(){this.a=new DF}function Km(){this.a=new Nw}function Xm(){this.a=new Nw}function Vm(){this.a=new Nw}function Qm(){this.a=new Nw}function Jm(){this.d=new Nw}function ty(){this.a=new Fm}function ey(){this.a=new Pw}function ny(){this.b=new Pw}function iy(){this.b=new Nw}function ry(){this.e=new Nw}function ay(){this.d=new Nw}function oy(){this.a=new oh}function sy(){Nw.call(this)}function cy(){jm.call(this)}function uy(){NF.call(this)}function ly(){Xm.call(this)}function hy(){fy.call(this)}function fy(){Fw.call(this)}function dy(){Fw.call(this)}function gy(){dy.call(this)}function py(){pV.call(this)}function by(){pV.call(this)}function wy(){Wy.call(this)}function my(){Wy.call(this)}function yy(){Wy.call(this)}function vy(){Ky.call(this)}function xy(){VA.call(this)}function ky(){ic.call(this)}function _y(){ic.call(this)}function Ay(){tv.call(this)}function Ey(){tv.call(this)}function Ty(){Pw.call(this)}function Cy(){Pw.call(this)}function Sy(){Pw.call(this)}function Iy(){Fm.call(this)}function My(){_it.call(this)}function Dy(){_m.call(this)}function Oy(){ML.call(this)}function Ly(){ML.call(this)}function Ny(){Pw.call(this)}function Py(){Pw.call(this)}function By(){Pw.call(this)}function Fy(){vc.call(this)}function Ry(){vc.call(this)}function jy(){Fy.call(this)}function $y(){Bl.call(this)}function zy(t){bet.call(this,t)}function qy(t){bet.call(this,t)}function Hy(t){Kh.call(this,t)}function Uy(t){EA.call(this,t)}function Gy(t){Uy.call(this,t)}function Yy(t){EA.call(this,t)}function Zy(){this.a=new VA}function Wy(){this.a=new Fm}function Ky(){this.a=new Pw}function Xy(){this.a=new Nw}function Vy(){this.j=new Nw}function Qy(){this.a=new Wo}function Jy(){this.a=new L_}function tv(){this.a=new yc}function ev(){ev=M,$te=new Px}function nv(){nv=M,jte=new Nx}function iv(){iv=M,Dte=new a}function rv(){rv=M,Yte=new aN}function av(t){Uy.call(this,t)}function ov(t){Uy.call(this,t)}function sv(t){p4.call(this,t)}function cv(t){p4.call(this,t)}function uv(t){KR.call(this,t)}function lv(t){xTt.call(this,t)}function hv(t){SA.call(this,t)}function fv(t){MA.call(this,t)}function dv(t){MA.call(this,t)}function gv(t){MA.call(this,t)}function pv(t){hG.call(this,t)}function bv(t){pv.call(this,t)}function wv(){Cf.call(this,{})}function mv(t){SL(),this.a=t}function yv(t){t.b=null,t.c=0}function vv(t,e){t.e=e,IPt(t,e)}function xv(t,e){t.a=e,sSt(t)}function kv(t,e,n){t.a[e.g]=n}function _v(t,e,n){pkt(n,t,e)}function Av(t,e){JF(e.i,t.n)}function Ev(t,e){lut(t).td(e)}function Tv(t,e){return t*t/e}function Cv(t,e){return t.g-e.g}function Sv(t){return new Tf(t)}function Iv(t){return new UZ(t)}function Mv(t){pv.call(this,t)}function Dv(t){pv.call(this,t)}function Ov(t){pv.call(this,t)}function Lv(t){hG.call(this,t)}function Nv(t){$at(),this.a=t}function Pv(t){oj(),this.a=t}function Bv(t){$U(),this.f=t}function Fv(t){$U(),this.f=t}function Rv(t){pv.call(this,t)}function jv(t){pv.call(this,t)}function $v(t){pv.call(this,t)}function zv(t){pv.call(this,t)}function qv(t){pv.call(this,t)}function Hv(t){return xW(t),t}function Uv(t){return xW(t),t}function Gv(t){return xW(t),t}function Yv(t){return xW(t),t}function Zv(t){return xW(t),t}function Wv(t){return t.b==t.c}function Kv(t){return!!t&&t.b}function Xv(t){return!!t&&t.k}function Vv(t){return!!t&&t.j}function Qv(t){xW(t),this.a=t}function Jv(t){return tut(t),t}function tx(t){mY(t,t.length)}function ex(t){pv.call(this,t)}function nx(t){pv.call(this,t)}function ix(t){pv.call(this,t)}function rx(t){pv.call(this,t)}function ax(t){pv.call(this,t)}function ox(t){pv.call(this,t)}function sx(t){JN.call(this,t,0)}function cx(){c1.call(this,12,3)}function ux(){ux=M,nee=new k}function lx(){lx=M,Qte=new r}function hx(){hx=M,aee=new b}function fx(){fx=M,hee=new m}function dx(){throw qw(new wm)}function gx(){throw qw(new wm)}function px(){throw qw(new wm)}function bx(){throw qw(new wm)}function wx(){throw qw(new wm)}function mx(){throw qw(new wm)}function yx(){this.a=TB(vZ(zWt))}function vx(t){uj(),this.a=vZ(t)}function xx(t,e){t.Td(e),e.Sd(t)}function kx(t,e){t.a.ec().Mc(e)}function _x(t,e,n){t.c.lf(e,n)}function Ax(t){Dv.call(this,t)}function Ex(t){jv.call(this,t)}function Tx(){Dd.call(this,"")}function Cx(){Dd.call(this,"")}function Sx(){Dd.call(this,"")}function Ix(){Dd.call(this,"")}function Mx(t){Dv.call(this,t)}function Dx(t){qd.call(this,t)}function Ox(t){dN.call(this,t)}function Lx(t){Dx.call(this,t)}function Nx(){tf.call(this,null)}function Px(){tf.call(this,null)}function Bx(){Bx=M,CV()}function Fx(){Fx=M,xne=v_t()}function Rx(t){return t.a?t.b:0}function jx(t){return t.a?t.b:0}function $x(t,e){return t.a-e.a}function zx(t,e){return t.a-e.a}function qx(t,e){return t.a-e.a}function Hx(t,e){return y9(t,e)}function Ux(t,e){return bJ(t,e)}function Gx(t,e){return e in t.a}function Yx(t,e){return t.f=e,t}function Zx(t,e){return t.b=e,t}function Wx(t,e){return t.c=e,t}function Kx(t,e){return t.g=e,t}function Xx(t,e){return t.a=e,t}function Vx(t,e){return t.f=e,t}function Qx(t,e){return t.k=e,t}function Jx(t,e){return t.a=e,t}function tk(t,e){return t.e=e,t}function ek(t,e){return t.e=e,t}function nk(t,e){return t.f=e,t}function ik(t,e){t.b=!0,t.d=e}function rk(t,e){t.b=new gD(e)}function ak(t,e,n){e.td(t.a[n])}function ok(t,e,n){e.we(t.a[n])}function sk(t,e){return t.b-e.b}function ck(t,e){return t.g-e.g}function uk(t,e){return t.s-e.s}function lk(t,e){return t?0:e-1}function hk(t,e){return t?0:e-1}function fk(t,e){return t?e-1:0}function dk(t,e){return e.Yf(t)}function gk(t,e){return t.b=e,t}function pk(t,e){return t.a=e,t}function bk(t,e){return t.c=e,t}function wk(t,e){return t.d=e,t}function mk(t,e){return t.e=e,t}function yk(t,e){return t.f=e,t}function vk(t,e){return t.a=e,t}function xk(t,e){return t.b=e,t}function kk(t,e){return t.c=e,t}function _k(t,e){return t.c=e,t}function Ak(t,e){return t.b=e,t}function Ek(t,e){return t.d=e,t}function Tk(t,e){return t.e=e,t}function Ck(t,e){return t.f=e,t}function Sk(t,e){return t.g=e,t}function Ik(t,e){return t.a=e,t}function Mk(t,e){return t.i=e,t}function Dk(t,e){return t.j=e,t}function Ok(t,e){return t.k=e,t}function Lk(t,e){return t.j=e,t}function Nk(t,e){$Et(),SJ(e,t)}function Pk(t,e,n){UU(t.a,e,n)}function Bk(t){zK.call(this,t)}function Fk(t){zK.call(this,t)}function Rk(t){tj.call(this,t)}function jk(t){Udt.call(this,t)}function $k(t){wet.call(this,t)}function zk(t){wX.call(this,t)}function qk(t){wX.call(this,t)}function Hk(){MO.call(this,"")}function Uk(){this.a=0,this.b=0}function Gk(){this.b=0,this.a=0}function Yk(t,e){t.b=0,Pnt(t,e)}function Zk(t,e){t.c=e,t.b=!0}function Wk(t,e){return t.c._b(e)}function Kk(t){return t.e&&t.e()}function Xk(t){return t?t.d:null}function Vk(t,e){return wht(t.b,e)}function Qk(t){return t?t.g:null}function Jk(t){return t?t.i:null}function t_(t){return _B(t),t.o}function e_(){e_=M,pMe=Wxt()}function n_(){n_=M,bMe=uAt()}function i_(){i_=M,tOe=Xxt()}function r_(){r_=M,pLe=Kxt()}function a_(){a_=M,bLe=rSt()}function o_(){o_=M,fDe=oit()}function s_(){throw qw(new wm)}function c_(){throw qw(new wm)}function u_(){throw qw(new wm)}function l_(){throw qw(new wm)}function h_(){throw qw(new wm)}function f_(){throw qw(new wm)}function d_(t){this.a=new ZA(t)}function g_(t){dYt(),FZt(this,t)}function p_(t){this.a=new WG(t)}function b_(t,e){for(;t.ye(e););}function w_(t,e){for(;t.sd(e););}function m_(t,e){return t.a+=e,t}function y_(t,e){return t.a+=e,t}function v_(t,e){return t.a+=e,t}function x_(t,e){return t.a+=e,t}function k_(t){return _W(t),t.a}function __(t){return t.b!=t.d.c}function A_(t){return t.l|t.m<<22}function E_(t,e){return t.d[e.p]}function T_(t,e){return CPt(t,e)}function C_(t,e,n){t.splice(e,n)}function S_(t){t.c?PBt(t):BBt(t)}function I_(t){this.a=0,this.b=t}function M_(){this.a=new INt(ike)}function D_(){this.b=new INt(Hve)}function O_(){this.b=new INt(W_e)}function L_(){this.b=new INt(W_e)}function N_(){throw qw(new wm)}function P_(){throw qw(new wm)}function B_(){throw qw(new wm)}function F_(){throw qw(new wm)}function R_(){throw qw(new wm)}function j_(){throw qw(new wm)}function $_(){throw qw(new wm)}function z_(){throw qw(new wm)}function q_(){throw qw(new wm)}function H_(){throw qw(new wm)}function U_(){throw qw(new vm)}function G_(){throw qw(new vm)}function Y_(t){this.a=new Z_(t)}function Z_(t){Git(this,t,D_t())}function W_(t){return!t||wW(t)}function K_(t){return-1!=WLe[t]}function X_(){0!=oee&&(oee=0),cee=-1}function V_(){null==SWt&&(SWt=[])}function Q_(t,e){nDt(XX(t.a),e)}function J_(t,e){nDt(XX(t.a),e)}function tA(t,e){qL.call(this,t,e)}function eA(t,e){tA.call(this,t,e)}function nA(t,e){this.b=t,this.c=e}function iA(t,e){this.b=t,this.a=e}function rA(t,e){this.a=t,this.b=e}function aA(t,e){this.a=t,this.b=e}function oA(t,e){this.a=t,this.b=e}function sA(t,e){this.a=t,this.b=e}function cA(t,e){this.a=t,this.b=e}function uA(t,e){this.a=t,this.b=e}function lA(t,e){this.a=t,this.b=e}function hA(t,e){this.a=t,this.b=e}function fA(t,e){this.b=t,this.a=e}function dA(t,e){this.b=t,this.a=e}function gA(t,e){this.b=t,this.a=e}function pA(t,e){this.b=t,this.a=e}function bA(t,e){this.f=t,this.g=e}function wA(t,e){this.e=t,this.d=e}function mA(t,e){this.g=t,this.i=e}function yA(t,e){this.a=t,this.b=e}function vA(t,e){this.a=t,this.f=e}function xA(t,e){this.b=t,this.c=e}function kA(t,e){this.a=t,this.b=e}function _A(t,e){this.a=t,this.b=e}function AA(t,e){this.a=t,this.b=e}function EA(t){oN(t.dc()),this.c=t}function TA(t){this.b=zz(vZ(t),83)}function CA(t){this.a=zz(vZ(t),83)}function SA(t){this.a=zz(vZ(t),15)}function IA(t){this.a=zz(vZ(t),15)}function MA(t){this.b=zz(vZ(t),47)}function DA(){this.q=new n.Date}function OA(){OA=M,qee=new D}function LA(){LA=M,dne=new C}function NA(t){return t.f.c+t.g.c}function PA(t,e){return t.b.Hc(e)}function BA(t,e){return t.b.Ic(e)}function FA(t,e){return t.b.Qc(e)}function RA(t,e){return t.b.Hc(e)}function jA(t,e){return t.c.uc(e)}function $A(t,e){return t.a._b(e)}function zA(t,e){return Pht(t.c,e)}function qA(t,e){return lY(t.b,e)}function HA(t,e){return t>e&&e0}function uT(t,e){return Xlt(t,e)<0}function lT(t,e){return t.a.get(e)}function hT(t,e){return e.split(t)}function fT(t,e){return lY(t.e,e)}function dT(t){return xW(t),!1}function gT(t){g1.call(this,t,21)}function pT(t,e){jQ.call(this,t,e)}function bT(t,e){bA.call(this,t,e)}function wT(t,e){bA.call(this,t,e)}function mT(t){KZ(),KR.call(this,t)}function yT(t,e){kU(t,t.length,e)}function vT(t,e){XY(t,t.length,e)}function xT(t,e,n){e.ud(t.a.Ge(n))}function kT(t,e,n){e.we(t.a.Fe(n))}function _T(t,e,n){e.td(t.a.Kb(n))}function AT(t,e,n){t.Mb(n)&&e.td(n)}function ET(t,e,n){t.splice(e,0,n)}function TT(t,e){return TN(t.e,e)}function CT(t,e){this.d=t,this.e=e}function ST(t,e){this.b=t,this.a=e}function IT(t,e){this.b=t,this.a=e}function MT(t,e){this.b=t,this.a=e}function DT(t,e){this.a=t,this.b=e}function OT(t,e){this.a=t,this.b=e}function LT(t,e){this.a=t,this.b=e}function NT(t,e){this.a=t,this.b=e}function PT(t,e){this.a=t,this.b=e}function BT(t,e){this.b=t,this.a=e}function FT(t,e){this.b=t,this.a=e}function RT(t,e){bA.call(this,t,e)}function jT(t,e){bA.call(this,t,e)}function $T(t,e){bA.call(this,t,e)}function zT(t,e){bA.call(this,t,e)}function qT(t,e){bA.call(this,t,e)}function HT(t,e){bA.call(this,t,e)}function UT(t,e){bA.call(this,t,e)}function GT(t,e){bA.call(this,t,e)}function YT(t,e){bA.call(this,t,e)}function ZT(t,e){bA.call(this,t,e)}function WT(t,e){bA.call(this,t,e)}function KT(t,e){bA.call(this,t,e)}function XT(t,e){bA.call(this,t,e)}function VT(t,e){bA.call(this,t,e)}function QT(t,e){bA.call(this,t,e)}function JT(t,e){bA.call(this,t,e)}function tC(t,e){bA.call(this,t,e)}function eC(t,e){bA.call(this,t,e)}function nC(t,e){this.a=t,this.b=e}function iC(t,e){this.a=t,this.b=e}function rC(t,e){this.a=t,this.b=e}function aC(t,e){this.a=t,this.b=e}function oC(t,e){this.a=t,this.b=e}function sC(t,e){this.a=t,this.b=e}function cC(t,e){this.a=t,this.b=e}function uC(t,e){this.a=t,this.b=e}function lC(t,e){this.a=t,this.b=e}function hC(t,e){this.b=t,this.a=e}function fC(t,e){this.b=t,this.a=e}function dC(t,e){this.b=t,this.a=e}function gC(t,e){this.b=t,this.a=e}function pC(t,e){this.c=t,this.d=e}function bC(t,e){this.e=t,this.d=e}function wC(t,e){this.a=t,this.b=e}function mC(t,e){this.b=e,this.c=t}function yC(t,e){bA.call(this,t,e)}function vC(t,e){bA.call(this,t,e)}function xC(t,e){bA.call(this,t,e)}function kC(t,e){bA.call(this,t,e)}function _C(t,e){bA.call(this,t,e)}function AC(t,e){bA.call(this,t,e)}function EC(t,e){bA.call(this,t,e)}function TC(t,e){bA.call(this,t,e)}function CC(t,e){bA.call(this,t,e)}function SC(t,e){bA.call(this,t,e)}function IC(t,e){bA.call(this,t,e)}function MC(t,e){bA.call(this,t,e)}function DC(t,e){bA.call(this,t,e)}function OC(t,e){bA.call(this,t,e)}function LC(t,e){bA.call(this,t,e)}function NC(t,e){bA.call(this,t,e)}function PC(t,e){bA.call(this,t,e)}function BC(t,e){bA.call(this,t,e)}function FC(t,e){bA.call(this,t,e)}function RC(t,e){bA.call(this,t,e)}function jC(t,e){bA.call(this,t,e)}function $C(t,e){bA.call(this,t,e)}function zC(t,e){bA.call(this,t,e)}function qC(t,e){bA.call(this,t,e)}function HC(t,e){bA.call(this,t,e)}function UC(t,e){bA.call(this,t,e)}function GC(t,e){bA.call(this,t,e)}function YC(t,e){bA.call(this,t,e)}function ZC(t,e){bA.call(this,t,e)}function WC(t,e){bA.call(this,t,e)}function KC(t,e){bA.call(this,t,e)}function XC(t,e){bA.call(this,t,e)}function VC(t,e){bA.call(this,t,e)}function QC(t,e){bA.call(this,t,e)}function JC(t,e){this.b=t,this.a=e}function tS(t,e){this.a=t,this.b=e}function eS(t,e){this.a=t,this.b=e}function nS(t,e){this.a=t,this.b=e}function iS(t,e){this.a=t,this.b=e}function rS(t,e){bA.call(this,t,e)}function aS(t,e){bA.call(this,t,e)}function oS(t,e){this.b=t,this.d=e}function sS(t,e){bA.call(this,t,e)}function cS(t,e){bA.call(this,t,e)}function uS(t,e){this.a=t,this.b=e}function lS(t,e){this.a=t,this.b=e}function hS(t,e){bA.call(this,t,e)}function fS(t,e){bA.call(this,t,e)}function dS(t,e){bA.call(this,t,e)}function gS(t,e){bA.call(this,t,e)}function pS(t,e){bA.call(this,t,e)}function bS(t,e){bA.call(this,t,e)}function wS(t,e){bA.call(this,t,e)}function mS(t,e){bA.call(this,t,e)}function yS(t,e){bA.call(this,t,e)}function vS(t,e){bA.call(this,t,e)}function xS(t,e){bA.call(this,t,e)}function kS(t,e){bA.call(this,t,e)}function _S(t,e){bA.call(this,t,e)}function AS(t,e){bA.call(this,t,e)}function ES(t,e){bA.call(this,t,e)}function TS(t,e){bA.call(this,t,e)}function CS(t,e){return TN(t.c,e)}function SS(t,e){return TN(e.b,t)}function IS(t,e){return-t.b.Je(e)}function MS(t,e){return TN(t.g,e)}function DS(t,e){bA.call(this,t,e)}function OS(t,e){bA.call(this,t,e)}function LS(t,e){this.a=t,this.b=e}function NS(t,e){this.a=t,this.b=e}function PS(t,e){this.a=t,this.b=e}function BS(t,e){bA.call(this,t,e)}function FS(t,e){bA.call(this,t,e)}function RS(t,e){bA.call(this,t,e)}function jS(t,e){bA.call(this,t,e)}function $S(t,e){bA.call(this,t,e)}function zS(t,e){bA.call(this,t,e)}function qS(t,e){bA.call(this,t,e)}function HS(t,e){bA.call(this,t,e)}function US(t,e){bA.call(this,t,e)}function GS(t,e){bA.call(this,t,e)}function YS(t,e){bA.call(this,t,e)}function ZS(t,e){bA.call(this,t,e)}function WS(t,e){bA.call(this,t,e)}function KS(t,e){bA.call(this,t,e)}function XS(t,e){bA.call(this,t,e)}function VS(t,e){bA.call(this,t,e)}function QS(t,e){this.a=t,this.b=e}function JS(t,e){this.a=t,this.b=e}function tI(t,e){this.a=t,this.b=e}function eI(t,e){this.a=t,this.b=e}function nI(t,e){this.a=t,this.b=e}function iI(t,e){this.a=t,this.b=e}function rI(t,e){this.a=t,this.b=e}function aI(t,e){bA.call(this,t,e)}function oI(t,e){this.a=t,this.b=e}function sI(t,e){this.a=t,this.b=e}function cI(t,e){this.a=t,this.b=e}function uI(t,e){this.a=t,this.b=e}function lI(t,e){this.a=t,this.b=e}function hI(t,e){this.a=t,this.b=e}function fI(t,e){this.b=t,this.a=e}function dI(t,e){this.b=t,this.a=e}function gI(t,e){this.b=t,this.a=e}function pI(t,e){this.b=t,this.a=e}function bI(t,e){this.a=t,this.b=e}function wI(t,e){this.a=t,this.b=e}function mI(t,e){JLt(t.a,zz(e,56))}function yI(t,e){m9(t.a,zz(e,11))}function vI(t,e){return lq(),e!=t}function xI(){return Fx(),new xne}function kI(){HJ(),this.b=new Fm}function _I(){bPt(),this.a=new Fm}function AI(){RJ(),RU.call(this)}function EI(t,e){bA.call(this,t,e)}function TI(t,e){this.a=t,this.b=e}function CI(t,e){this.a=t,this.b=e}function SI(t,e){this.a=t,this.b=e}function II(t,e){this.a=t,this.b=e}function MI(t,e){this.a=t,this.b=e}function DI(t,e){this.a=t,this.b=e}function OI(t,e){this.d=t,this.b=e}function LI(t,e){this.d=t,this.e=e}function NI(t,e){this.f=t,this.c=e}function PI(t,e){this.b=t,this.c=e}function BI(t,e){this.i=t,this.g=e}function FI(t,e){this.e=t,this.a=e}function RI(t,e){this.a=t,this.b=e}function jI(t,e){t.i=null,srt(t,e)}function $I(t,e){t&&KW(lDe,t,e)}function zI(t,e){return apt(t.a,e)}function qI(t){return spt(t.c,t.b)}function HI(t){return t?t.dd():null}function UI(t){return null==t?null:t}function GI(t){return typeof t===LWt}function YI(t){return typeof t===NWt}function ZI(t){return typeof t===PWt}function WI(t,e){return t.Hd().Xb(e)}function KI(t,e){return Vat(t.Kc(),e)}function XI(t,e){return 0==Xlt(t,e)}function VI(t,e){return Xlt(t,e)>=0}function QI(t,e){return 0!=Xlt(t,e)}function JI(t){return""+(xW(t),t)}function tM(t,e){return t.substr(e)}function eM(t){return Ydt(t),t.d.gc()}function nM(t){return YMt(t,t.c),t}function iM(t){return Qq(null==t),t}function rM(t,e){return t.a+=""+e,t}function aM(t,e){return t.a+=""+e,t}function oM(t,e){return t.a+=""+e,t}function sM(t,e){return t.a+=""+e,t}function cM(t,e){return t.a+=""+e,t}function uM(t,e){return t.a+=""+e,t}function lM(t,e){r5(t,e,t.a,t.a.a)}function hM(t,e){r5(t,e,t.c.b,t.c)}function fM(t,e,n){jkt(e,RCt(t,n))}function dM(t,e,n){jkt(e,RCt(t,n))}function gM(t,e){Att(new DL(t),e)}function pM(t,e){t.q.setTime(k2(e))}function bM(t,e){GG.call(this,t,e)}function wM(t,e){GG.call(this,t,e)}function mM(t,e){GG.call(this,t,e)}function yM(t){OY(this),Eat(this,t)}function vM(t){return f1(t,0),null}function xM(t){return t.a=0,t.b=0,t}function kM(t,e){return t.a=e.g+1,t}function _M(t,e){return 2==t.j[e.p]}function AM(t){return uZ(zz(t,79))}function EM(){EM=M,Dre=dlt(nwt())}function TM(){TM=M,Jce=dlt(ANt())}function CM(){this.b=new ZA(net(12))}function SM(){this.b=0,this.a=!1}function IM(){this.b=0,this.a=!1}function MM(t){this.a=t,zl.call(this)}function DM(t){this.a=t,zl.call(this)}function OM(t,e){iF.call(this,t,e)}function LM(t,e){eR.call(this,t,e)}function NM(t,e){BI.call(this,t,e)}function PM(t,e){Oot.call(this,t,e)}function BM(t,e){XN.call(this,t,e)}function FM(t,e){tT(),KW(yDe,t,e)}function RM(t,e){return hP(t.a,0,e)}function jM(t,e){return t.a.a.a.cc(e)}function $M(t,e){return UI(t)===UI(e)}function zM(t,e){return Sft(t.a,e.a)}function qM(t,e){return _O(t.a,e.a)}function HM(t,e){return $Y(t.a,e.a)}function UM(t,e){return t.indexOf(e)}function GM(t,e){return t==e?0:t?1:-1}function YM(t){return t<10?"0"+t:""+t}function ZM(t){return vZ(t),new MM(t)}function WM(t){return EO(t.l,t.m,t.h)}function KM(t){return SQ((xW(t),t))}function XM(t){return SQ((xW(t),t))}function VM(t,e){return _O(t.g,e.g)}function QM(t){return typeof t===NWt}function JM(t){return t==Joe||t==nse}function tD(t){return t==Joe||t==tse}function eD(t){return _9(t.b.b,t,0)}function nD(t){this.a=xI(),this.b=t}function iD(t){this.a=xI(),this.b=t}function rD(t,e){return Wz(t.a,e),e}function aD(t,e){return Wz(t.c,e),t}function oD(t,e){return Jat(t.a,e),t}function sD(t,e){return Uj(),e.a+=t}function cD(t,e){return Uj(),e.a+=t}function uD(t,e){return Uj(),e.c+=t}function lD(t,e){G7(t,0,t.length,e)}function hD(){ng.call(this,new m4)}function fD(){sU.call(this,0,0,0,0)}function dD(){YK.call(this,0,0,0,0)}function gD(t){this.a=t.a,this.b=t.b}function pD(t){return t==jCe||t==$Ce}function bD(t){return t==qCe||t==RCe}function wD(t){return t==hme||t==lme}function mD(t){return t!=XSe&&t!=VSe}function yD(t){return t.Lg()&&t.Mg()}function vD(t){return yK(zz(t,118))}function xD(t){return Jat(new z2,t)}function kD(t,e){return new Oot(e,t)}function _D(t,e){return new Oot(e,t)}function AD(t,e,n){_nt(t,e),Ant(t,n)}function ED(t,e,n){Cnt(t,e),Tnt(t,n)}function TD(t,e,n){Snt(t,e),Int(t,n)}function CD(t,e,n){Ent(t,e),Dnt(t,n)}function SD(t,e,n){Mnt(t,e),Ont(t,n)}function ID(t,e){Fut(t,e),Bnt(t,t.D)}function MD(t){NI.call(this,t,!0)}function DD(t,e,n){NB.call(this,t,e,n)}function OD(t){DBt(),lot.call(this,t)}function LD(){bT.call(this,"Head",1)}function ND(){bT.call(this,"Tail",3)}function PD(t){t.c=P8(Ote,HWt,1,0,5,1)}function BD(t){t.a=P8(Ote,HWt,1,8,5,1)}function FD(t){Det(t.xf(),new Tg(t))}function RD(t){return null!=t?eut(t):0}function jD(t,e){return Iet(e,WQ(t))}function $D(t,e){return Iet(e,WQ(t))}function zD(t,e){return t[t.length]=e}function qD(t,e){return t[t.length]=e}function HD(t){return $z(t.b.Kc(),t.a)}function UD(t,e){return Zit(CZ(t.d),e)}function GD(t,e){return Zit(CZ(t.g),e)}function YD(t,e){return Zit(CZ(t.j),e)}function ZD(t,e){iF.call(this,t.b,e)}function WD(t){sU.call(this,t,t,t,t)}function KD(t){return t.b&&Xzt(t),t.a}function XD(t){return t.b&&Xzt(t),t.c}function VD(t,e){Xne||(t.b=e)}function QD(t,e,n){return OZ(t,e,n),n}function JD(t,e,n){OZ(t.c[e.g],e.g,n)}function tO(t,e,n){zz(t.c,69).Xh(e,n)}function eO(t,e,n){TD(n,n.i+t,n.j+e)}function nO(t,e){h7(o4(t.a),n1(e))}function iO(t,e){h7(q9(t.a),i1(e))}function rO(t){pWt(),Dw.call(this,t)}function aO(t){return null==t?0:eut(t)}function oO(){oO=M,uve=new Hdt(cSe)}function sO(){sO=M,new cO,new Nw}function cO(){new Pw,new Pw,new Pw}function uO(){uO=M,Em(),ree=new Pw}function lO(){lO=M,n.Math.log(2)}function hO(){hO=M,GE(),FOe=SMe}function fO(){throw qw(new ex(Ete))}function dO(){throw qw(new ex(Ete))}function gO(){throw qw(new ex(Tte))}function pO(){throw qw(new ex(Tte))}function bO(t){this.a=t,Xz.call(this,t)}function wO(t){this.a=t,TA.call(this,t)}function mO(t){this.a=t,TA.call(this,t)}function yO(t,e){vU(t.c,t.c.length,e)}function vO(t){return t.ae?1:0}function AO(t,e){return Xlt(t,e)>0?t:e}function EO(t,e,n){return{l:t,m:e,h:n}}function TO(t,e){null!=t.a&&yI(e,t.a)}function CO(t){t.a=new O,t.c=new O}function SO(t){this.b=t,this.a=new Nw}function IO(t){this.b=new ee,this.a=t}function MO(t){LF.call(this),this.a=t}function DO(){bT.call(this,"Range",2)}function OO(){nkt(),this.a=new INt(Yoe)}function LO(t,e){vZ(e),_K(t).Jc(new d)}function NO(t,e){return zJ(),e.n.b+=t}function PO(t,e,n){return KW(t.g,n,e)}function BO(t,e,n){return KW(t.k,n,e)}function FO(t,e){return KW(t.a,e.a,e)}function RO(t,e,n){return Mpt(e,n,t.c)}function jO(t){return new PS(t.c,t.d)}function $O(t){return new PS(t.c,t.d)}function zO(t){return new PS(t.a,t.b)}function qO(t,e){return nGt(t.a,e,null)}function HO(t){TJ(t,null),EJ(t,null)}function UO(t){WJ(t,null),KJ(t,null)}function GO(){XN.call(this,null,null)}function YO(){VN.call(this,null,null)}function ZO(t){this.a=t,Pw.call(this)}function WO(t){this.b=(TX(),new Zd(t))}function KO(t){t.j=P8(zee,lKt,310,0,0,1)}function XO(t,e,n){t.c.Vc(e,zz(n,133))}function VO(t,e,n){t.c.ji(e,zz(n,133))}function QO(t,e){lHt(t),t.Gc(zz(e,15))}function JO(t,e){return qHt(t.c,t.b,e)}function tL(t,e){return new wN(t.Kc(),e)}function eL(t,e){return-1!=zst(t.Kc(),e)}function nL(t,e){return null!=t.a.Bc(e)}function iL(t){return t.Ob()?t.Pb():null}function rL(t){return qpt(t,0,t.length)}function aL(t,e){return null!=t&&Vwt(t,e)}function oL(t,e){t.q.setHours(e),dzt(t,e)}function sL(t,e){t.c&&(Fq(e),xQ(e))}function cL(t,e,n){zz(t.Kb(n),164).Nb(e)}function uL(t,e,n){return HUt(t,e,n),n}function lL(t,e,n){t.a=1502^e,t.b=n^sVt}function hL(t,e,n){return t.a[e.g][n.g]}function fL(t,e){return t.a[e.c.p][e.p]}function dL(t,e){return t.e[e.c.p][e.p]}function gL(t,e){return t.c[e.c.p][e.p]}function pL(t,e){return t.j[e.p]=mLt(e)}function bL(t,e){return h6(t.f,e.tg())}function wL(t,e){return h6(t.b,e.tg())}function mL(t,e){return t.a0?e*e/t:e*e*100}function PP(t,e){return t>0?e/(t*t):100*e}function BP(t,e,n){return Wz(e,ugt(t,n))}function FP(t,e,n){P7(),t.Xe(e)&&n.td(t)}function RP(t,e,n){t.Zc(e).Rb(n)}function jP(t,e,n){return t.a+=e,t.b+=n,t}function $P(t,e,n){return t.a*=e,t.b*=n,t}function zP(t,e,n){return t.a-=e,t.b-=n,t}function qP(t,e){return t.a=e.a,t.b=e.b,t}function HP(t){return t.a=-t.a,t.b=-t.b,t}function UP(t){this.c=t,this.a=1,this.b=1}function GP(t){this.c=t,Snt(t,0),Int(t,0)}function YP(t){VA.call(this),eit(this,t)}function ZP(t){RZt(),zw(this),this.mf(t)}function WP(t,e){XE(),XN.call(this,t,e)}function KP(t,e){VE(),VN.call(this,t,e)}function XP(t,e){VE(),VN.call(this,t,e)}function VP(t,e){VE(),KP.call(this,t,e)}function QP(t,e,n){v7.call(this,t,e,n,2)}function JP(t,e){hO(),aU.call(this,t,e)}function tB(t,e){hO(),JP.call(this,t,e)}function eB(t,e){hO(),JP.call(this,t,e)}function nB(t,e){hO(),eB.call(this,t,e)}function iB(t,e){hO(),aU.call(this,t,e)}function rB(t,e){hO(),iB.call(this,t,e)}function aB(t,e){hO(),aU.call(this,t,e)}function oB(t,e){return t.c.Fc(zz(e,133))}function sB(t,e,n){return Pqt($9(t,e),n)}function cB(t,e,n){return e.Qk(t.e,t.c,n)}function uB(t,e,n){return e.Rk(t.e,t.c,n)}function lB(t,e){return nht(t.e,zz(e,49))}function hB(t,e,n){lft(q9(t.a),e,i1(n))}function fB(t,e,n){lft(o4(t.a),e,n1(n))}function dB(t,e){e.$modCount=t.$modCount}function gB(){gB=M,Kxe=new sw("root")}function pB(){pB=M,wDe=new Ay,new Ey}function bB(){this.a=new wQ,this.b=new wQ}function wB(){_it.call(this),this.Bb|=qXt}function mB(){bA.call(this,"GROW_TREE",0)}function yB(t){return null==t?null:pYt(t)}function vB(t){return null==t?null:NTt(t)}function xB(t){return null==t?null:qdt(t)}function kB(t){return null==t?null:qdt(t)}function _B(t){null==t.o&&wOt(t)}function AB(t){return Qq(null==t||GI(t)),t}function EB(t){return Qq(null==t||YI(t)),t}function TB(t){return Qq(null==t||ZI(t)),t}function CB(t){this.q=new n.Date(k2(t))}function SB(t,e){this.c=t,wA.call(this,t,e)}function IB(t,e){this.a=t,SB.call(this,t,e)}function MB(t,e){this.d=t,Ed(this),this.b=e}function DB(t,e){z8.call(this,t),this.a=e}function OB(t,e){z8.call(this,t),this.a=e}function LB(t){Ugt.call(this,0,0),this.f=t}function NB(t,e,n){W6.call(this,t,e,n,null)}function PB(t,e,n){W6.call(this,t,e,n,null)}function BB(t,e,n){return t.ue(e,n)<=0?n:e}function FB(t,e,n){return t.ue(e,n)<=0?e:n}function RB(t,e){return zz(ftt(t.b,e),149)}function jB(t,e){return zz(ftt(t.c,e),229)}function $B(t){return zz(PH(t.a,t.b),287)}function zB(t){return new PS(t.c,t.d+t.a)}function qB(t){return zJ(),wD(zz(t,197))}function HB(){HB=M,Ore=edt((vpt(),jIe))}function UB(t,e){e.a?zPt(t,e):EN(t.a,e.b)}function GB(t,e){Xne||Wz(t.a,e)}function YB(t,e){return yE(),pot(e.d.i,t)}function ZB(t,e){return Mrt(),new oRt(e,t)}function WB(t,e){return MV(e,cQt),t.f=e,t}function KB(t,e,n){return n=Ejt(t,e,3,n)}function XB(t,e,n){return n=Ejt(t,e,6,n)}function VB(t,e,n){return n=Ejt(t,e,9,n)}function QB(t,e,n){++t.j,t.Ki(),L8(t,e,n)}function JB(t,e,n){++t.j,t.Hi(e,t.oi(e,n))}function tF(t,e,n){t.Zc(e).Rb(n)}function eF(t,e,n){return tqt(t.c,t.b,e,n)}function nF(t,e){return(e&FWt)%t.d.length}function iF(t,e){sw.call(this,t),this.a=e}function rF(t,e){xw.call(this,t),this.a=e}function aF(t,e){xw.call(this,t),this.a=e}function oF(t,e){this.c=t,wet.call(this,e)}function sF(t,e){this.a=t,vw.call(this,e)}function cF(t,e){this.a=t,vw.call(this,e)}function uF(t){this.a=(dit(t,OKt),new Q6(t))}function lF(t){this.a=(dit(t,OKt),new Q6(t))}function hF(t){return!t.a&&(t.a=new g),t.a}function fF(t){return t>8?0:t+1}function dF(t,e){return lN(),t==e?0:t?1:-1}function gF(t,e,n){return yU(t,zz(e,22),n)}function pF(t,e,n){return t.apply(e,n)}function bF(t,e,n){return t.a+=qpt(e,0,n),t}function wF(t,e){var n;return n=t.e,t.e=e,n}function mF(t,e){t[rVt].call(t,e)}function yF(t,e){t[rVt].call(t,e)}function vF(t,e){t.a.Vc(t.b,e),++t.b,t.c=-1}function xF(t){OY(t.e),t.d.b=t.d,t.d.a=t.d}function kF(t){t.b?kF(t.b):t.f.c.zc(t.e,t.d)}function _F(t,e,n){pE(),If(t,e.Ce(t.a,n))}function AF(t,e){return Xk(Tpt(t.a,e,!0))}function EF(t,e){return Xk(Cpt(t.a,e,!0))}function TF(t,e){return Hx(new Array(e),t)}function CF(t){return String.fromCharCode(t)}function SF(t){return null==t?null:t.message}function IF(){this.a=new Nw,this.b=new Nw}function MF(){this.a=new fe,this.b=new Am}function DF(){this.b=new Uk,this.c=new Nw}function OF(){this.d=new Uk,this.e=new Uk}function LF(){this.n=new Uk,this.o=new Uk}function NF(){this.n=new dy,this.i=new dD}function PF(){this.a=new th,this.b=new sa}function BF(){this.a=new Nw,this.d=new Nw}function FF(){this.b=new Fm,this.a=new Fm}function RF(){this.b=new Pw,this.a=new Pw}function jF(){this.b=new D_,this.a=new bo}function $F(){NF.call(this),this.a=new Uk}function zF(t){Dot.call(this,t,(J7(),Nne))}function qF(t,e,n,i){sU.call(this,t,e,n,i)}function HF(t,e,n){null!=n&&Nit(e,Oyt(t,n))}function UF(t,e,n){null!=n&&Pit(e,Oyt(t,n))}function GF(t,e,n){return n=Ejt(t,e,11,n)}function YF(t,e){return t.a+=e.a,t.b+=e.b,t}function ZF(t,e){return t.a-=e.a,t.b-=e.b,t}function WF(t,e){return t.n.a=(xW(e),e+10)}function KF(t,e){return t.n.a=(xW(e),e+10)}function XF(t,e){return e==t||Ckt(ILt(e),t)}function VF(t,e){return null==KW(t.a,e,"")}function QF(t,e){return yE(),!pot(e.d.i,t)}function JF(t,e){pD(t.f)?oOt(t,e):MAt(t,e)}function tR(t,e){return e.Hh(t.a)}function eR(t,e){Dv.call(this,i7t+t+u8t+e)}function nR(t,e,n,i){nY.call(this,t,e,n,i)}function iR(t,e,n,i){nY.call(this,t,e,n,i)}function rR(t,e,n,i){iR.call(this,t,e,n,i)}function aR(t,e,n,i){iY.call(this,t,e,n,i)}function oR(t,e,n,i){iY.call(this,t,e,n,i)}function sR(t,e,n,i){iY.call(this,t,e,n,i)}function cR(t,e,n,i){oR.call(this,t,e,n,i)}function uR(t,e,n,i){oR.call(this,t,e,n,i)}function lR(t,e,n,i){sR.call(this,t,e,n,i)}function hR(t,e,n,i){uR.call(this,t,e,n,i)}function fR(t,e,n,i){JG.call(this,t,e,n,i)}function dR(t,e,n){this.a=t,JN.call(this,e,n)}function gR(t,e,n){this.c=e,this.b=n,this.a=t}function pR(t,e,n){return t.d=zz(e.Kb(n),164)}function bR(t,e){return t.Aj().Nh().Kh(t,e)}function wR(t,e){return t.Aj().Nh().Ih(t,e)}function mR(t,e){return xW(t),UI(t)===UI(e)}function yR(t,e){return xW(t),UI(t)===UI(e)}function vR(t,e){return Xk(Tpt(t.a,e,!1))}function xR(t,e){return Xk(Cpt(t.a,e,!1))}function kR(t,e){return t.b.sd(new OT(t,e))}function _R(t,e){return t.b.sd(new LT(t,e))}function AR(t,e){return t.b.sd(new NT(t,e))}function ER(t,e,n){return t.lastIndexOf(e,n)}function TR(t,e,n){return Sft(t[e.b],t[n.b])}function CR(t,e){return hct(e,(HZt(),Fpe),t)}function SR(t,e){return _O(e.a.d.p,t.a.d.p)}function IR(t,e){return _O(t.a.d.p,e.a.d.p)}function MR(t,e){return Sft(t.c-t.s,e.c-e.s)}function DR(t){return t.c?_9(t.c.a,t,0):-1}function OR(t){return t<100?null:new $k(t)}function LR(t){return t==YSe||t==WSe||t==ZSe}function NR(t,e){return aL(e,15)&&VBt(t.c,e)}function PR(t,e){Xne||e&&(t.d=e)}function BR(t,e){return!!dut(t,e)}function FR(t,e){this.c=t,UY.call(this,t,e)}function RR(t){this.c=t,mM.call(this,gKt,0)}function jR(t,e){Qz.call(this,t,t.length,e)}function $R(t,e,n){return zz(t.c,69).lk(e,n)}function zR(t,e,n){return zz(t.c,69).mk(e,n)}function qR(t,e,n){return cB(t,zz(e,332),n)}function HR(t,e,n){return uB(t,zz(e,332),n)}function UR(t,e,n){return M_t(t,zz(e,332),n)}function GR(t,e,n){return VAt(t,zz(e,332),n)}function YR(t,e){return null==e?null:dht(t.b,e)}function ZR(t){return YI(t)?(xW(t),t):t.ke()}function WR(t){return!isNaN(t)&&!isFinite(t)}function KR(t){uj(),this.a=(TX(),new Dx(t))}function XR(t){lq(),this.d=t,this.a=new Lw}function VR(t,e,n){this.a=t,this.b=e,this.c=n}function QR(t,e,n){this.a=t,this.b=e,this.c=n}function JR(t,e,n){this.d=t,this.b=n,this.a=e}function tj(t){CO(this),vX(this),zrt(this,t)}function ej(t){PD(this),eq(this.c,0,t.Pc())}function nj(t){hW(t.a),G8(t.c,t.b),t.b=null}function ij(t){this.a=t,OA(),fot(Date.now())}function rj(){rj=M,iie=new r,rie=new r}function aj(){aj=M,Ane=new L,Ene=new N}function oj(){oj=M,gDe=P8(Ote,HWt,1,0,5,1)}function sj(){sj=M,EOe=P8(Ote,HWt,1,0,5,1)}function cj(){cj=M,TOe=P8(Ote,HWt,1,0,5,1)}function uj(){uj=M,new rm((TX(),TX(),lne))}function lj(t){return J7(),Stt((t9(),jne),t)}function hj(t){return Uut(),Stt((n8(),Jne),t)}function fj(t){return hwt(),Stt((I4(),wie),t)}function dj(t){return Ftt(),Stt((M4(),xie),t)}function gj(t){return nFt(),Stt((Bot(),$ie),t)}function pj(t){return Fet(),Stt((J6(),Wie),t)}function bj(t){return Q7(),Stt((t8(),ere),t)}function wj(t){return U9(),Stt((e8(),sre),t)}function mj(t){return bWt(),Stt((EM(),Dre),t)}function yj(t){return Fot(),Stt((n9(),jre),t)}function vj(t){return Hwt(),Stt((i9(),Gre),t)}function xj(t){return Uwt(),Stt((r9(),iae),t)}function kj(t){return gE(),Stt((X2(),oae),t)}function _j(t){return Rtt(),Stt((D4(),jae),t)}function Aj(t){return H9(),Stt((i8(),Loe),t)}function Ej(t){return xEt(),Stt((Ztt(),Hoe),t)}function Tj(t){return Ost(),Stt((e9(),rse),t)}function Cj(t){return qht(),Stt((r8(),bse),t)}function Sj(t,e){if(!t)throw qw(new jv(e))}function Ij(t){return cTt(),Stt((hnt(),Dse),t)}function Mj(t){sU.call(this,t.d,t.c,t.a,t.b)}function Dj(t){sU.call(this,t.d,t.c,t.a,t.b)}function Oj(t,e,n){this.b=t,this.c=e,this.a=n}function Lj(t,e,n){this.b=t,this.a=e,this.c=n}function Nj(t,e,n){this.a=t,this.b=e,this.c=n}function Pj(t,e,n){this.a=t,this.b=e,this.c=n}function Bj(t,e,n){this.a=t,this.b=e,this.c=n}function Fj(t,e,n){this.a=t,this.b=e,this.c=n}function Rj(t,e,n){this.b=t,this.a=e,this.c=n}function jj(t,e,n){this.e=e,this.b=t,this.d=n}function $j(t,e,n){return pE(),t.a.Od(e,n),e}function zj(t){var e;return(e=new xt).e=t,e}function qj(t){var e;return(e=new Jm).b=t,e}function Hj(){Hj=M,Yse=new Nn,Zse=new Pn}function Uj(){Uj=M,pue=new mr,bue=new yr}function Gj(t){return Mst(),Stt((o9(),cue),t)}function Yj(t){return Dst(),Stt((c9(),_ue),t)}function Zj(t){return kBt(),Stt((Gat(),Kue),t)}function Wj(t){return LCt(),Stt((gnt(),rle),t)}function Kj(t){return K8(),Stt((F4(),cle),t)}function Xj(t){return Dit(),Stt((a8(),dle),t)}function Vj(t){return N_t(),Stt((qtt(),Mue),t)}function Qj(t){return Irt(),Stt((c8(),jue),t)}function Jj(t){return cit(),Stt((o8(),mle),t)}function t$(t){return Xmt(),Stt(($tt(),Ele),t)}function e$(t){return jtt(),Stt((L4(),Ile),t)}function n$(t){return Jst(),Stt((s8(),Nle),t)}function i$(t){return wTt(),Stt((mnt(),qle),t)}function r$(t){return b9(),Stt((N4(),Yle),t)}function a$(t){return qkt(),Stt((bnt(),the),t)}function o$(t){return JEt(),Stt((pnt(),che),t)}function s$(t){return gBt(),Stt((Xst(),vhe),t)}function c$(t){return jot(),Stt((l8(),Ehe),t)}function u$(t){return G9(),Stt((u8(),Mhe),t)}function l$(t){return G2(),Stt((R4(),Nhe),t)}function h$(t){return Edt(),Stt((Htt(),Gfe),t)}function f$(t){return EAt(),Stt((wnt(),rme),t)}function d$(t){return Tlt(),Stt((h8(),ume),t)}function g$(t){return gmt(),Stt((u9(),pme),t)}function p$(t){return sit(),Stt((g8(),Yme),t)}function b$(t){return lNt(),Stt((Uat(),Ome),t)}function w$(t){return vct(),Stt((d8(),Fme),t)}function m$(t){return Y9(),Stt((B4(),zme),t)}function y$(t){return Hat(),Stt((f8(),Vme),t)}function v$(t){return Pmt(),Stt((ztt(),kme),t)}function x$(t){return D6(),Stt((P4(),eye),t)}function k$(t){return Zut(),Stt((b8(),oye),t)}function _$(t){return bat(),Stt((w8(),hye),t)}function A$(t){return Lst(),Stt((p8(),bye),t)}function E$(t){return uit(),Stt((m8(),Nye),t)}function T$(t){return X4(),Stt(($4(),Uye),t)}function C$(t){return bQ(),Stt((z4(),ive),t)}function S$(t){return cJ(),Stt((q4(),sve),t)}function I$(t){return M6(),Stt((j4(),Cve),t)}function M$(t){return pQ(),Stt((H4(),Bve),t)}function D$(t){return Yvt(),Stt((a9(),qve),t)}function O$(t){return FCt(),Stt((ynt(),Qve),t)}function L$(t){return uJ(),Stt((Y4(),$xe),t)}function N$(t){return Srt(),Stt((G4(),Jxe),t)}function P$(t){return z0(),Stt((U4(),Uxe),t)}function B$(t){return Idt(),Stt((y8(),rke),t)}function F$(t){return B7(),Stt((Z4(),cke),t)}function R$(t){return Hut(),Stt((v8(),dke),t)}function j$(t){return Dyt(),Stt((s9(),Gke),t)}function $$(t){return qat(),Stt((k8(),Xke),t)}function z$(t){return Cdt(),Stt((x8(),n_e),t)}function q$(t){return QLt(),Stt((Ytt(),z_e),t)}function H$(t){return Sdt(),Stt((_8(),Y_e),t)}function U$(t){return SE(),Stt((W2(),K_e),t)}function G$(t){return IE(),Stt((Z2(),Q_e),t)}function Y$(t){return O6(),Stt((K4(),nAe),t)}function Z$(t){return LTt(),Stt((Utt(),uAe),t)}function W$(t){return ME(),Stt((K2(),YAe),t)}function K$(t){return Nst(),Stt((W4(),XAe),t)}function X$(t){return awt(),Stt((Gtt(),dEe),t)}function V$(t){return SCt(),Stt((Yat(),_Ee),t)}function Q$(t){return pmt(),Stt((dnt(),PEe),t)}function J$(t){return p_t(),Stt((fnt(),eTe),t)}function tz(t){return dWt(),Stt((TM(),Jce),t)}function ez(t){return Crt(),Stt((O4(),Gse),t)}function nz(t){return zht(),Stt((Wtt(),UCe),t)}function iz(t){return Ret(),Stt((E8(),KCe),t)}function rz(t){return Tdt(),Stt((f9(),eSe),t)}function az(t){return eEt(),Stt((xnt(),uSe),t)}function oz(t){return cht(),Stt((A8(),xSe),t)}function sz(t){return Wvt(),Stt((h9(),CSe),t)}function cz(t){return eOt(),Stt((Pot(),RSe),t)}function uz(t){return owt(),Stt((Ktt(),GSe),t)}function lz(t){return V_t(),Stt((Het(),JSe),t)}function hz(t){return dIt(),Stt((vnt(),sIe),t)}function fz(t){return vpt(),Stt((g9(),zIe),t)}function dz(t){return ejt(),Stt((Vst(),QIe),t)}function gz(t){return kYt(),Stt((Xtt(),MIe),t)}function pz(t){return zgt(),Stt((d9(),rMe),t)}function bz(t){return qut(),Stt((l9(),hMe),t)}function wz(t){return hDt(),Stt((Zat(),aDe),t)}function mz(t,e){return xW(t),t+(xW(e),e)}function yz(t,e){return OA(),h7(XX(t.a),e)}function vz(t,e){return OA(),h7(XX(t.a),e)}function xz(t,e){this.c=t,this.a=e,this.b=e-t}function kz(t,e,n){this.a=t,this.b=e,this.c=n}function _z(t,e,n){this.a=t,this.b=e,this.c=n}function Az(t,e,n){this.a=t,this.b=e,this.c=n}function Ez(t,e,n){this.a=t,this.b=e,this.c=n}function Tz(t,e,n){this.a=t,this.b=e,this.c=n}function Cz(t,e,n){this.e=t,this.a=e,this.c=n}function Sz(t,e,n){hO(),yQ.call(this,t,e,n)}function Iz(t,e,n){hO(),rW.call(this,t,e,n)}function Mz(t,e,n){hO(),rW.call(this,t,e,n)}function Dz(t,e,n){hO(),rW.call(this,t,e,n)}function Oz(t,e,n){hO(),Iz.call(this,t,e,n)}function Lz(t,e,n){hO(),Iz.call(this,t,e,n)}function Nz(t,e,n){hO(),Lz.call(this,t,e,n)}function Pz(t,e,n){hO(),Mz.call(this,t,e,n)}function Bz(t,e,n){hO(),Dz.call(this,t,e,n)}function Fz(t,e){return vZ(t),vZ(e),new lA(t,e)}function Rz(t,e){return vZ(t),vZ(e),new jq(t,e)}function jz(t,e){return vZ(t),vZ(e),new $q(t,e)}function $z(t,e){return vZ(t),vZ(e),new fA(t,e)}function zz(t,e){return Qq(null==t||Vwt(t,e)),t}function qz(t){var e;return htt(e=new Nw,t),e}function Hz(t){var e;return htt(e=new Fm,t),e}function Uz(t){var e;return Urt(e=new Gm,t),e}function Gz(t){var e;return Urt(e=new VA,t),e}function Yz(t){return!t.e&&(t.e=new Nw),t.e}function Zz(t){return!t.c&&(t.c=new zc),t.c}function Wz(t,e){return t.c[t.c.length]=e,!0}function Kz(t,e){this.c=t,this.b=e,this.a=!1}function Xz(t){this.d=t,Ed(this),this.b=rG(t.d)}function Vz(){this.a=";,;",this.b="",this.c=""}function Qz(t,e,n){YG.call(this,e,n),this.a=t}function Jz(t,e,n){this.b=t,bM.call(this,e,n)}function tq(t,e,n){this.c=t,CT.call(this,e,n)}function eq(t,e,n){$St(n,0,t,e,n.length,!1)}function nq(t,e,n,i,r){t.b=e,t.c=n,t.d=i,t.a=r}function iq(t,e){e&&(t.b=e,t.a=(_W(e),e.a))}function rq(t,e,n,i,r){t.d=e,t.c=n,t.a=i,t.b=r}function aq(t){var e,n;e=t.b,n=t.c,t.b=n,t.c=e}function oq(t){var e,n;n=t.d,e=t.a,t.d=e,t.a=n}function sq(t){return cot(PY(QM(t)?Sot(t):t))}function cq(t,e){return _O(cH(t.d),cH(e.d))}function uq(t,e){return e==(kYt(),SIe)?t.c:t.d}function lq(){lq=M,kYt(),Fye=SIe,Rye=cIe}function hq(){this.b=Uv(EB(vwt((fFt(),ooe))))}function fq(t){return pE(),P8(Ote,HWt,1,t,5,1)}function dq(t){return new PS(t.c+t.b,t.d+t.a)}function gq(t,e){return TE(),_O(t.d.p,e.d.p)}function pq(t){return CP(0!=t.b),Oet(t,t.a.a)}function bq(t){return CP(0!=t.b),Oet(t,t.c.b)}function wq(t,e){if(!t)throw qw(new Ov(e))}function mq(t,e){if(!t)throw qw(new jv(e))}function yq(t,e,n){pC.call(this,t,e),this.b=n}function vq(t,e,n){LI.call(this,t,e),this.c=n}function xq(t,e,n){get.call(this,e,n),this.d=t}function kq(t){cj(),vc.call(this),this.th(t)}function _q(t,e,n){this.a=t,NM.call(this,e,n)}function Aq(t,e,n){this.a=t,NM.call(this,e,n)}function Eq(t,e,n){LI.call(this,t,e),this.c=n}function Tq(){F5(),cW.call(this,(WE(),GDe))}function Cq(t){return null!=t&&!Wdt(t,LDe,NDe)}function Sq(t,e){return(Kht(t)<<4|Kht(e))&VKt}function Iq(t,e){return tK(),Ymt(t,e),new UW(t,e)}function Mq(t,e){var n;t.n&&(n=e,Wz(t.f,n))}function Dq(t,e,n){ret(t,e,new UZ(n))}function Oq(t,e){var n;return n=t.c,jit(t,e),n}function Lq(t,e){return t.g=e<0?-1:e,t}function Nq(t,e){return Yet(t),t.a*=e,t.b*=e,t}function Pq(t,e,n,i,r){t.c=e,t.d=n,t.b=i,t.a=r}function Bq(t,e){return r5(t,e,t.c.b,t.c),!0}function Fq(t){t.a.b=t.b,t.b.a=t.a,t.a=t.b=null}function Rq(t){this.b=t,this.a=fG(this.b.a).Ed()}function jq(t,e){this.b=t,this.a=e,zl.call(this)}function $q(t,e){this.a=t,this.b=e,zl.call(this)}function zq(t,e){YG.call(this,e,1040),this.a=t}function qq(t){return 0==t||isNaN(t)?t:t<0?-1:1}function Hq(t){return EX(),SEt(t)==QQ(DEt(t))}function Uq(t){return EX(),DEt(t)==QQ(SEt(t))}function Gq(t,e){return Qkt(t,new pC(e.a,e.b))}function Yq(t){return!d5(t)&&t.c.i.c==t.d.i.c}function Zq(t){var e;return e=t.n,t.a.b+e.d+e.a}function Wq(t){var e;return e=t.n,t.e.b+e.d+e.a}function Kq(t){var e;return e=t.n,t.e.a+e.b+e.c}function Xq(t){return pWt(),new cU(0,t)}function Vq(t){return t.a?t.a:nX(t)}function Qq(t){if(!t)throw qw(new Rv(null))}function Jq(){Jq=M,TX(),sLe=new Ud(S9t)}function tH(){tH=M,new lmt((ev(),$te),(nv(),jte))}function eH(){eH=M,Mee=P8(Oee,lKt,19,256,0,1)}function nH(t,e,n,i){sgt.call(this,t,e,n,i,0,0)}function iH(t,e,n){return KW(t.b,zz(n.b,17),e)}function rH(t,e,n){return KW(t.b,zz(n.b,17),e)}function aH(t,e){return Wz(t,new PS(e.a,e.b))}function oH(t,e){return t.c=e)throw qw(new Tm)}function jG(t,e,n){return OZ(e,0,qH(e[0],n[0])),e}function $G(t,e,n){e.Ye(n,Uv(EB(FZ(t.b,n)))*t.a)}function zG(t,e,n){return _Bt(),Fat(t,e)&&Fat(t,n)}function qG(t){return dIt(),!t.Hc(nIe)&&!t.Hc(rIe)}function HG(t){return new PS(t.c+t.b/2,t.d+t.a/2)}function UG(t,e){return e.kh()?nht(t.b,zz(e,49)):e}function GG(t,e){this.e=t,this.d=0!=(64&e)?e|hKt:e}function YG(t,e){this.c=0,this.d=t,this.b=64|e|hKt}function ZG(t){this.b=new Q6(11),this.a=(CX(),t)}function WG(t){this.b=null,this.a=(CX(),t||gne)}function KG(t){this.a=amt(t.a),this.b=new ej(t.b)}function XG(t){this.b=t,aP.call(this,t),EL(this)}function VG(t){this.b=t,sP.call(this,t),TL(this)}function QG(t,e,n){this.a=t,nR.call(this,e,n,5,6)}function JG(t,e,n,i){this.b=t,OL.call(this,e,n,i)}function tY(t,e,n,i,r){x7.call(this,t,e,n,i,r,-1)}function eY(t,e,n,i,r){k7.call(this,t,e,n,i,r,-1)}function nY(t,e,n,i){OL.call(this,t,e,n),this.b=i}function iY(t,e,n,i){vq.call(this,t,e,n),this.b=i}function rY(t){NI.call(this,t,!1),this.a=!1}function aY(t,e){this.b=t,lf.call(this,t.b),this.a=e}function oY(t,e){WZ(),kA.call(this,t,lht(new Qv(e)))}function sY(t,e){return pWt(),new aW(t,e,0)}function cY(t,e){return pWt(),new aW(6,t,e)}function uY(t,e){return yR(t.substr(0,e.length),e)}function lY(t,e){return ZI(e)?nV(t,e):!!DV(t.f,e)}function hY(t,e){for(xW(e);t.Ob();)e.td(t.Pb())}function fY(t,e,n){DBt(),this.e=t,this.d=e,this.a=n}function dY(t,e,n,i){var r;(r=t.i).i=e,r.a=n,r.b=i}function gY(t){var e;for(e=t;e.f;)e=e.f;return e}function pY(t){var e;return CP(null!=(e=Act(t))),e}function bY(t){var e;return CP(null!=(e=vft(t))),e}function wY(t,e){var n;return g6(e,n=t.a.gc()),n-e}function mY(t,e){var n;for(n=0;n0?n.Math.log(t/e):-100}function $Y(t,e){return Xlt(t,e)<0?-1:Xlt(t,e)>0?1:0}function zY(t,e,n){return Cqt(t,zz(e,46),zz(n,167))}function qY(t,e){return zz(gG(fG(t.a)).Xb(e),42).cd()}function HY(t,e){return met(e,t.length),new zq(t,e)}function UY(t,e){this.d=t,DL.call(this,t),this.e=e}function GY(t){this.d=(xW(t),t),this.a=0,this.c=gKt}function YY(t,e){Dw.call(this,1),this.a=t,this.b=e}function ZY(t,e){return t.c?ZY(t.c,e):Wz(t.b,e),t}function WY(t,e,n){var i;return i=ptt(t,e),r4(t,e,n),i}function KY(t,e){return y9(t.slice(0,e),t)}function XY(t,e,n){var i;for(i=0;i=t.g}function JZ(t,e,n){return PFt(t,xrt(t,e,n))}function tW(t,e){var n;ptt(t,n=t.a.length),r4(t,n,e)}function eW(t,e){console[t].call(console,e)}function nW(t,e){var n;++t.j,n=t.Vi(),t.Ii(t.oi(n,e))}function iW(t,e,n){zz(e.b,65),Det(e.a,new _z(t,n,e))}function rW(t,e,n){kw.call(this,e),this.a=t,this.b=n}function aW(t,e,n){Dw.call(this,t),this.a=e,this.b=n}function oW(t,e,n){this.a=t,xw.call(this,e),this.b=n}function sW(t,e,n){this.a=t,q2.call(this,8,e,null,n)}function cW(t){this.a=(xW($7t),$7t),this.b=t,new Ny}function uW(t){this.c=t,this.b=this.c.a,this.a=this.c.e}function lW(t){this.c=t,this.b=t.a.d.a,dB(t.a.e,this)}function hW(t){EP(-1!=t.c),t.d.$c(t.c),t.b=t.c,t.c=-1}function fW(t){return n.Math.sqrt(t.a*t.a+t.b*t.b)}function dW(t,e){return RG(e,t.a.c.length),PH(t.a,e)}function gW(t,e){return UI(t)===UI(e)||null!=t&&Pht(t,e)}function pW(t){return 0>=t?new KA:Kit(t-1)}function bW(t){return!!TNe&&nV(TNe,t)}function wW(t){return t?t.dc():!t.Kc().Ob()}function mW(t){return!t.a&&t.c?t.c.b:t.a}function yW(t){return!t.a&&(t.a=new OL(LMe,t,4)),t.a}function vW(t){return!t.d&&(t.d=new OL(KDe,t,1)),t.d}function xW(t){if(null==t)throw qw(new bm);return t}function kW(t){t.c?t.c.He():(t.d=!0,VNt(t))}function _W(t){t.c?_W(t.c):(Vft(t),t.d=!0)}function AW(t){AK(t.a),t.b=P8(Ote,HWt,1,t.b.length,5,1)}function EW(t,e){return _O(e.j.c.length,t.j.c.length)}function TW(t,e){t.c<0||t.b.b=0?t.Bh(n):oIt(t,e)}function SW(t){return t.c.i.c==t.d.i.c}function IW(t){if(4!=t.p)throw qw(new pm);return t.e}function MW(t){if(3!=t.p)throw qw(new pm);return t.e}function DW(t){if(6!=t.p)throw qw(new pm);return t.f}function OW(t){if(6!=t.p)throw qw(new pm);return t.k}function LW(t){if(3!=t.p)throw qw(new pm);return t.j}function NW(t){if(4!=t.p)throw qw(new pm);return t.j}function PW(t){return!t.b&&(t.b=new Aw(new Py)),t.b}function BW(t){return-2==t.c&&bd(t,cEt(t.g,t.b)),t.c}function FW(t,e){var n;return(n=yZ("",t)).n=e,n.i=1,n}function RW(t,e){LU(zz(e.b,65),t),Det(e.a,new Dg(t))}function jW(t,e){h7((!t.a&&(t.a=new cF(t,t)),t.a),e)}function $W(t,e){this.b=t,UY.call(this,t,e),EL(this)}function zW(t,e){this.b=t,FR.call(this,t,e),TL(this)}function qW(t,e,n,i){mA.call(this,t,e),this.d=n,this.a=i}function HW(t,e,n,i){mA.call(this,t,n),this.a=e,this.f=i}function UW(t,e){WO.call(this,Xit(vZ(t),vZ(e))),this.a=e}function GW(){bEt.call(this,C9t,(r_(),pLe)),KHt(this)}function YW(){bEt.call(this,X7t,(i_(),tOe)),Dqt(this)}function ZW(){bA.call(this,"DELAUNAY_TRIANGULATION",0)}function WW(t){return String.fromCharCode.apply(null,t)}function KW(t,e,n){return ZI(e)?yJ(t,e,n):_St(t.f,e,n)}function XW(t){return TX(),t?t.ve():(CX(),CX(),bne)}function VW(t,e,n){return Pst(),n.pg(t,zz(e.cd(),146))}function QW(t,e){return tH(),new lmt(new rN(t),new iN(e))}function JW(t){return dit(t,PKt),eet(adt(adt(5,t),t/10|0))}function tK(){tK=M,qte=new lv(Sst(Ux(Hte,1),kKt,42,0,[]))}function eK(t){return!t.d&&(t.d=new qd(t.c.Cc())),t.d}function nK(t){return!t.a&&(t.a=new Lx(t.c.vc())),t.a}function iK(t){return!t.b&&(t.b=new Dx(t.c.ec())),t.b}function rK(t,e){for(;e-- >0;)t=t<<1|(t<0?1:0);return t}function aK(t,e){return UI(t)===UI(e)||null!=t&&Pht(t,e)}function oK(t,e){return lN(),zz(e.b,19).a(i=SQ(n))&&++i,i}function JK(t){var e;return ont(e=new Rw,t),e}function tX(t){var e;return FEt(e=new Rw,t),e}function eX(t,e){return jat(e,FZ(t.f,e)),null}function nX(t){return Qit(t)||null}function iX(t){return!t.b&&(t.b=new nY(jMe,t,12,3)),t.b}function rX(t){return null!=t&&PA(kDe,t.toLowerCase())}function aX(t,e){return Sft(iU(t)*nU(t),iU(e)*nU(e))}function oX(t,e){return Sft(iU(t)*nU(t),iU(e)*nU(e))}function sX(t,e){return Sft(t.d.c+t.d.b/2,e.d.c+e.d.b/2)}function cX(t,e){return Sft(t.g.c+t.g.b/2,e.g.c+e.g.b/2)}function uX(t,e,n){n.a?Int(t,e.b-t.f/2):Snt(t,e.a-t.g/2)}function lX(t,e,n,i){this.a=t,this.b=e,this.c=n,this.d=i}function hX(t,e,n,i){this.a=t,this.b=e,this.c=n,this.d=i}function fX(t,e,n,i){this.e=t,this.a=e,this.c=n,this.d=i}function dX(t,e,n,i){this.a=t,this.c=e,this.d=n,this.b=i}function gX(t,e,n,i){hO(),n6.call(this,e,n,i),this.a=t}function pX(t,e,n,i){hO(),n6.call(this,e,n,i),this.a=t}function bX(t,e){this.a=t,MB.call(this,t,zz(t.d,15).Zc(e))}function wX(t){this.f=t,this.c=this.f.e,t.f>0&&ckt(this)}function mX(t,e,n,i){this.b=t,this.c=i,mM.call(this,e,n)}function yX(t){return CP(t.b=0&&yR(t.substr(n,e.length),e)}function LV(t,e,n,i,r,a,o){return new d4(t.e,e,n,i,r,a,o)}function NV(t,e,n,i,r,a){this.a=t,kit.call(this,e,n,i,r,a)}function PV(t,e,n,i,r,a){this.a=t,kit.call(this,e,n,i,r,a)}function BV(t,e){this.g=t,this.d=Sst(Ux(Mse,1),s1t,10,0,[e])}function FV(t,e){this.e=t,this.a=Ote,this.b=OFt(e),this.c=e}function RV(t,e){NF.call(this),Bet(this),this.a=t,this.c=e}function jV(t,e,n,i){OZ(t.c[e.g],n.g,i),OZ(t.c[n.g],e.g,i)}function $V(t,e,n,i){OZ(t.c[e.g],e.g,n),OZ(t.b[e.g],e.g,i)}function zV(){return D6(),Sst(Ux(aye,1),LKt,376,0,[Jme,Qme])}function qV(){return b9(),Sst(Ux(Jle,1),LKt,479,0,[Ule,Hle])}function HV(){return jtt(),Sst(Ux(Lle,1),LKt,419,0,[Tle,Cle])}function UV(){return K8(),Sst(Ux(fle,1),LKt,422,0,[ale,ole])}function GV(){return G2(),Sst(Ux(Ufe,1),LKt,420,0,[Dhe,Ohe])}function YV(){return Y9(),Sst(Ux(Gme,1),LKt,421,0,[Rme,jme])}function ZV(){return X4(),Sst(Ux(Kye,1),LKt,523,0,[qye,zye])}function WV(){return M6(),Sst(Ux(Pve,1),LKt,520,0,[Eve,Ave])}function KV(){return bQ(),Sst(Ux(ove,1),LKt,516,0,[eve,tve])}function XV(){return cJ(),Sst(Ux(Tve,1),LKt,515,0,[rve,ave])}function VV(){return pQ(),Sst(Ux(zve,1),LKt,455,0,[Lve,Nve])}function QV(){return z0(),Sst(Ux(Qxe,1),LKt,425,0,[qxe,zxe])}function JV(){return uJ(),Sst(Ux(Hxe,1),LKt,480,0,[Fxe,Rxe])}function tQ(){return Srt(),Sst(Ux(ike,1),LKt,495,0,[Xxe,Vxe])}function eQ(){return B7(),Sst(Ux(fke,1),LKt,426,0,[ake,oke])}function nQ(){return Nst(),Sst(Ux(VAe,1),LKt,429,0,[WAe,ZAe])}function iQ(){return O6(),Sst(Ux(cAe,1),LKt,430,0,[tAe,J_e])}function rQ(){return hwt(),Sst(Ux(vie,1),LKt,428,0,[pie,gie])}function aQ(){return Ftt(),Sst(Ux(Rie,1),LKt,427,0,[mie,yie])}function oQ(){return Rtt(),Sst(Ux(Ooe,1),LKt,424,0,[Bae,Fae])}function sQ(){return Crt(),Sst(Ux(Wse,1),LKt,511,0,[Hse,qse])}function cQ(t,e,n,i){return n>=0?t.jh(e,n,i):t.Sg(null,n,i)}function uQ(t){return 0==t.b.b?t.a.$e():pq(t.b)}function lQ(t){if(5!=t.p)throw qw(new pm);return pU(t.f)}function hQ(t){if(5!=t.p)throw qw(new pm);return pU(t.k)}function fQ(t){return UI(t.a)===UI((pat(),IOe))&&RHt(t),t.a}function dQ(t){this.a=zz(vZ(t),271),this.b=(TX(),new pN(t))}function gQ(t,e){Jf(this,new PS(t.a,t.b)),td(this,Gz(e))}function pQ(){pQ=M,Lve=new cS(oQt,0),Nve=new cS(sQt,1)}function bQ(){bQ=M,eve=new aS(sQt,0),tve=new aS(oQt,1)}function wQ(){ov.call(this,new ZA(net(12))),oN(!0),this.a=2}function mQ(t,e,n){pWt(),Dw.call(this,t),this.b=e,this.a=n}function yQ(t,e,n){hO(),kw.call(this,e),this.a=t,this.b=n}function vQ(t){NF.call(this),Bet(this),this.a=t,this.c=!0}function xQ(t){var e;e=t.c.d.b,t.b=e,t.a=t.c.d,e.a=t.c.d.b=t}function kQ(t){mit(t.a),FD(t.a),ngt(new Cg(t.a))}function _Q(t,e){uFt(t,!0),Det(t.e.wf(),new Oj(t,!0,e))}function AQ(t,e){return a4(e),Qnt(t,P8(DNe,hXt,25,e,15,1),e)}function EQ(t,e){return EX(),t==QQ(SEt(e))||t==QQ(DEt(e))}function TQ(t,e){return null==e?HI(DV(t.f,null)):lT(t.g,e)}function CQ(t){return 0==t.b?null:(CP(0!=t.b),Oet(t,t.a.a))}function SQ(t){return 0|Math.max(Math.min(t,FWt),-2147483648)}function IQ(t,e){var n=tee[t.charCodeAt(0)];return null==n?t:n}function MQ(t,e){return WX(t,"set1"),WX(e,"set2"),new _A(t,e)}function DQ(t,e){return YF(HP(ent(t.f,e)),t.f.d)}function OQ(t,e){var n;return QUt(t,e,n=new H),n.d}function LQ(t,e,n,i){var r;r=new $F,e.a[n.g]=r,yU(t.b,i,r)}function NQ(t,e,n){var i;(i=t.Yg(e))>=0?t.sh(i,n):ELt(t,e,n)}function PQ(t,e,n){lJ(),t&&KW(hDe,t,e),t&&KW(lDe,t,n)}function BQ(t,e,n){this.i=new Nw,this.b=t,this.g=e,this.a=n}function FQ(t,e,n){this.c=new Nw,this.e=t,this.f=e,this.b=n}function RQ(t,e,n){this.a=new Nw,this.e=t,this.f=e,this.c=n}function jQ(t,e){KO(this),this.f=e,this.g=t,kX(this),this._d()}function $Q(t,e){var n;n=t.q.getHours(),t.q.setDate(e),dzt(t,n)}function zQ(t,e){var n;for(vZ(e),n=t.a;n;n=n.c)e.Od(n.g,n.i)}function qQ(t){var e;return Lct(e=new d_(net(t.length)),t),e}function HQ(t){function e(){}return e.prototype=t||{},new e}function UQ(t,e){return!!pst(t,e)&&(iit(t),!0)}function GQ(t,e){if(null==e)throw qw(new bm);return cbt(t,e)}function YQ(t){if(t.qe())return null;var e=t.n;return CWt[e]}function ZQ(t){return t.Db>>16!=3?null:zz(t.Cb,33)}function WQ(t){return t.Db>>16!=9?null:zz(t.Cb,33)}function KQ(t){return t.Db>>16!=6?null:zz(t.Cb,79)}function XQ(t){return t.Db>>16!=7?null:zz(t.Cb,235)}function VQ(t){return t.Db>>16!=7?null:zz(t.Cb,160)}function QQ(t){return t.Db>>16!=11?null:zz(t.Cb,33)}function JQ(t,e){var n;return(n=t.Yg(e))>=0?t.lh(n):UIt(t,e)}function tJ(t,e){var n;return uEt(n=new LH(e),t),new ej(n)}function eJ(t){var e;return e=t.d,e=t.si(t.f),h7(t,e),e.Ob()}function nJ(t,e){return t.b+=e.b,t.c+=e.c,t.d+=e.d,t.a+=e.a,t}function iJ(t,e){return n.Math.abs(t)0}function aJ(){this.a=new hD,this.e=new Fm,this.g=0,this.i=0}function oJ(t){this.a=t,this.b=P8(jye,lKt,1944,t.e.length,0,2)}function sJ(t,e,n){var i;i=Pct(t,e,n),t.b=new vrt(i.c.length)}function cJ(){cJ=M,rve=new rS(mQt,0),ave=new rS("UP",1)}function uJ(){uJ=M,Fxe=new dS(Z3t,0),Rxe=new dS("FAN",1)}function lJ(){lJ=M,hDe=new Pw,lDe=new Pw,$I(vne,new pc)}function hJ(t){if(0!=t.p)throw qw(new pm);return QI(t.f,0)}function fJ(t){if(0!=t.p)throw qw(new pm);return QI(t.k,0)}function dJ(t){return t.Db>>16!=3?null:zz(t.Cb,147)}function gJ(t){return t.Db>>16!=6?null:zz(t.Cb,235)}function pJ(t){return t.Db>>16!=17?null:zz(t.Cb,26)}function bJ(t,e){var n=t.a=t.a||[];return n[e]||(n[e]=t.le(e))}function wJ(t,e){var n;return null==(n=t.a.get(e))?new Array:n}function mJ(t,e){var n;n=t.q.getHours(),t.q.setMonth(e),dzt(t,n)}function yJ(t,e,n){return null==e?_St(t.f,null,n):cdt(t.g,e,n)}function vJ(t,e,n,i,r,a){return new N9(t.e,e,t.aj(),n,i,r,a)}function xJ(t,e,n){return t.a=hP(t.a,0,e)+""+n+tM(t.a,e),t}function kJ(t,e,n){return Wz(t.a,(tK(),Ymt(e,n),new mA(e,n))),t}function _J(t){return cN(t.c),t.e=t.a=t.c,t.c=t.c.c,++t.d,t.a.f}function AJ(t){return cN(t.e),t.c=t.a=t.e,t.e=t.e.e,--t.d,t.a.f}function EJ(t,e){t.d&&v9(t.d.e,t),t.d=e,t.d&&Wz(t.d.e,t)}function TJ(t,e){t.c&&v9(t.c.g,t),t.c=e,t.c&&Wz(t.c.g,t)}function CJ(t,e){t.c&&v9(t.c.a,t),t.c=e,t.c&&Wz(t.c.a,t)}function SJ(t,e){t.i&&v9(t.i.j,t),t.i=e,t.i&&Wz(t.i.j,t)}function IJ(t,e,n){this.a=e,this.c=t,this.b=(vZ(n),new ej(n))}function MJ(t,e,n){this.a=e,this.c=t,this.b=(vZ(n),new ej(n))}function DJ(t,e){this.a=t,this.c=zO(this.a),this.b=new bV(e)}function OJ(t){return Vft(t),DK(t,new mg(new Fm))}function LJ(t,e){if(t<0||t>e)throw qw(new Dv(_Vt+t+AVt+e))}function NJ(t,e){return IU(t.a,e)?_Y(t,zz(e,22).g,null):null}function PJ(t){return Clt(),lN(),0!=zz(t.a,81).d.e}function BJ(){BJ=M,Wte=dlt((rv(),Sst(Ux(Kte,1),LKt,538,0,[Yte])))}function FJ(){FJ=M,wye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function RJ(){RJ=M,mye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function jJ(){jJ=M,vye=WU(new z2,(xEt(),zoe),(dWt(),Hce))}function $J(){$J=M,Gye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function zJ(){zJ=M,Xye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function qJ(){qJ=M,Jye=pH(new z2,(xEt(),zoe),(dWt(),pce))}function HJ(){HJ=M,cve=pH(new z2,(xEt(),zoe),(dWt(),pce))}function UJ(){UJ=M,Gxe=WU(new z2,(Yvt(),$ve),(FCt(),Gve))}function GJ(t,e,n,i){this.c=t,this.d=i,WJ(this,e),KJ(this,n)}function YJ(t){this.c=new VA,this.b=t.b,this.d=t.c,this.a=t.a}function ZJ(t){this.a=n.Math.cos(t),this.b=n.Math.sin(t)}function WJ(t,e){t.a&&v9(t.a.k,t),t.a=e,t.a&&Wz(t.a.k,t)}function KJ(t,e){t.b&&v9(t.b.f,t),t.b=e,t.b&&Wz(t.b.f,t)}function XJ(t,e){iW(t,t.b,t.c),zz(t.b.b,65),e&&zz(e.b,65).b}function VJ(t,e){Yft(t,e),aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),2)}function QJ(t,e){aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),4),Prt(t,e)}function JJ(t,e){aL(t.Cb,179)&&(zz(t.Cb,179).tb=null),Prt(t,e)}function t1(t,e){return JE(),ltt(e)?new fH(e,t):new PI(e,t)}function e1(t,e){null!=e.c&&tW(t,new UZ(e.c))}function n1(t){var e;return i_(),ont(e=new Rw,t),e}function i1(t){var e;return i_(),ont(e=new Rw,t),e}function r1(t,e){var n;return n=new qZ(t),e.c[e.c.length]=n,n}function a1(t,e){var n;return(n=zz(dht(MX(t.a),e),14))?n.gc():0}function o1(t){return Vft(t),CX(),CX(),xet(t,pne)}function s1(t){for(var e;;)if(e=t.Pb(),!t.Ob())return e}function c1(t,e){Yy.call(this,new ZA(net(t))),dit(e,uKt),this.a=e}function u1(t,e,n){Hht(e,n,t.gc()),this.c=t,this.a=e,this.b=n-e}function l1(t,e,n){var i;Hht(e,n,t.c.length),i=n-e,C_(t.c,e,i)}function h1(t,e){lL(t,pU(n0(xG(e,24),lVt)),pU(n0(e,lVt)))}function f1(t,e){if(t<0||t>=e)throw qw(new Dv(_Vt+t+AVt+e))}function d1(t,e){if(t<0||t>=e)throw qw(new Mx(_Vt+t+AVt+e))}function g1(t,e){this.b=(xW(t),t),this.a=0==(e&$Xt)?64|e|hKt:e}function p1(t){BD(this),Cm(this.a,kct(n.Math.max(8,t))<<1)}function b1(t){return Oct(Sst(Ux(CEe,1),lKt,8,0,[t.i.n,t.n,t.a]))}function w1(){return Uut(),Sst(Ux(tie,1),LKt,132,0,[Gne,Yne,Zne])}function m1(){return Fet(),Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])}function y1(){return Q7(),Sst(Ux(nre,1),LKt,461,0,[Vie,Xie,Qie])}function v1(){return U9(),Sst(Ux(Mre,1),LKt,462,0,[are,rre,ire])}function x1(){return qht(),Sst(Ux(yse,1),LKt,423,0,[gse,dse,fse])}function k1(){return H9(),Sst(Ux(qoe,1),LKt,379,0,[Moe,Ioe,Doe])}function _1(){return Tlt(),Sst(Ux(gme,1),LKt,378,0,[ame,ome,sme])}function A1(){return Dit(),Sst(Ux(wle,1),LKt,314,0,[lle,ule,hle])}function E1(){return cit(),Sst(Ux(Ale,1),LKt,337,0,[gle,ble,ple])}function T1(){return Jst(),Sst(Ux(zle,1),LKt,450,0,[Dle,Mle,Ole])}function C1(){return Irt(),Sst(Ux(Wue,1),LKt,361,0,[Fue,Bue,Pue])}function S1(){return G9(),Sst(Ux(Lhe,1),LKt,303,0,[Che,She,The])}function I1(){return jot(),Sst(Ux(Ihe,1),LKt,292,0,[khe,_he,xhe])}function M1(){return sit(),Sst(Ux(Xme,1),LKt,452,0,[Ume,qme,Hme])}function D1(){return vct(),Sst(Ux($me,1),LKt,339,0,[Nme,Lme,Pme])}function O1(){return Hat(),Sst(Ux(tye,1),LKt,375,0,[Zme,Wme,Kme])}function L1(){return Lst(),Sst(Ux(Tye,1),LKt,377,0,[dye,gye,fye])}function N1(){return Zut(),Sst(Ux(lye,1),LKt,336,0,[nye,iye,rye])}function P1(){return bat(),Sst(Ux(pye,1),LKt,338,0,[uye,sye,cye])}function B1(){return uit(),Sst(Ux(Pye,1),LKt,454,0,[Mye,Dye,Oye])}function F1(){return Idt(),Sst(Ux(ske,1),LKt,442,0,[nke,tke,eke])}function R1(){return Hut(),Sst(Ux(Uke,1),LKt,380,0,[uke,lke,hke])}function j1(){return Cdt(),Sst(Ux(N_e,1),LKt,381,0,[Jke,t_e,Qke])}function $1(){return qat(),Sst(Ux(Vke,1),LKt,293,0,[Zke,Wke,Yke])}function z1(){return Sdt(),Sst(Ux(W_e,1),LKt,437,0,[q_e,H_e,U_e])}function q1(){return cht(),Sst(Ux(TSe,1),LKt,334,0,[mSe,wSe,ySe])}function H1(){return Ret(),Sst(Ux(tSe,1),LKt,272,0,[GCe,YCe,ZCe])}function U1(t,e){return kOt(t,e,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function G1(t,e,n){var i;return(i=oqt(t,e,!1)).b<=e&&i.a<=n}function Y1(t,e,n){var i;(i=new ao).b=e,i.a=n,++e.b,Wz(t.d,i)}function Z1(t,e){var n;return AP(!!(n=(xW(t),t).g)),xW(e),n(e)}function W1(t,e){var n,i;return i=wY(t,e),n=t.a.Zc(i),new xA(t,n)}function K1(t){return t.Db>>16!=6?null:zz(oDt(t),235)}function X1(t){if(2!=t.p)throw qw(new pm);return pU(t.f)&VKt}function V1(t){if(2!=t.p)throw qw(new pm);return pU(t.k)&VKt}function Q1(t){return t.a==(F5(),nLe)&&pd(t,iLt(t.g,t.b)),t.a}function J1(t){return t.d==(F5(),nLe)&&wd(t,PRt(t.g,t.b)),t.d}function t0(t){return CP(t.ai?1:0}function g0(t,e){var n;return n=T9(e),zz(FZ(t.c,n),19).a}function p0(t,e){var n;for(n=t+"";n.length0&&0==t.a[--t.d];);0==t.a[t.d++]&&(t.e=0)}function W0(t){return t.a?0==t.e.length?t.a.a:t.a.a+""+t.e:t.c}function K0(t){return!(!t.a||0==q9(t.a.a).i||t.b&&jmt(t.b))}function X0(t){return!(!t.u||0==o4(t.u.a).i||t.n&&Rmt(t.n))}function V0(t){return vH(t.e.Hd().gc()*t.c.Hd().gc(),16,new Uh(t))}function Q0(t,e){return $Y(fot(t.q.getTime()),fot(e.q.getTime()))}function J0(t){return zz(Vbt(t,P8(vse,o1t,17,t.c.length,0,1)),474)}function t2(t){return zz(Vbt(t,P8(Mse,s1t,10,t.c.length,0,1)),193)}function e2(t){return zJ(),!(d5(t)||!d5(t)&&t.c.i.c==t.d.i.c)}function n2(t,e,n){vZ(t),Bvt(new IJ(new ej(t),e,n))}function i2(t,e,n){vZ(t),Fvt(new MJ(new ej(t),e,n))}function r2(t,e){var n;return n=1-e,t.a[n]=prt(t.a[n],n),prt(t,e)}function a2(t,e){var n;t.e=new Qy,yO(n=pBt(e),t.c),MBt(t,n,0)}function o2(t,e,n,i){var r;(r=new ys).a=e,r.b=n,r.c=i,Bq(t.a,r)}function s2(t,e,n,i){var r;(r=new ys).a=e,r.b=n,r.c=i,Bq(t.b,r)}function c2(t){var e,n;return n=njt(e=new fZ,t),xGt(e),n}function u2(){var t,e;return t=new Rw,Wz(KOe,e=t),e}function l2(t){return t.j.c=P8(Ote,HWt,1,0,5,1),AK(t.c),bK(t.a),t}function h2(t){return EE(),aL(t.g,10)?zz(t.g,10):null}function f2(t){return!_K(t).dc()&&(LO(t,new y),!0)}function d2(t){if(!("stack"in t))try{throw t}catch(t){}return t}function g2(t,e){if(t<0||t>=e)throw qw(new Dv(NSt(t,e)));return t}function p2(t,e,n){if(t<0||en)throw qw(new Dv(uCt(t,e,n)))}function b2(t,e){if(AY(t.a,e),e.d)throw qw(new pv(MVt));e.d=t}function w2(t,e){if(e.$modCount!=t.$modCount)throw qw(new mm)}function m2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function y2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function v2(t,e){return!!aL(e,42)&&Tyt(t.a,zz(e,42))}function x2(t,e){return t.a<=t.b&&(e.ud(t.a++),!0)}function k2(t){var e;return QM(t)?-0==(e=t)?0:e:wtt(t)}function _2(t){var e;return _W(t),e=new $,b_(t.a,new bg(e)),e}function A2(t){var e;return _W(t),e=new j,b_(t.a,new pg(e)),e}function E2(t,e){this.a=t,Td.call(this,t),LJ(e,t.gc()),this.b=e}function T2(t){this.e=t,this.b=this.e.a.entries(),this.a=new Array}function C2(t){return vH(t.e.Hd().gc()*t.c.Hd().gc(),273,new Hh(t))}function S2(t){return new Q6((dit(t,PKt),eet(adt(adt(5,t),t/10|0))))}function I2(t){return zz(Vbt(t,P8(Use,c1t,11,t.c.length,0,1)),1943)}function M2(t,e,n){return n.f.c.length>0?zY(t.a,e,n):zY(t.b,e,n)}function D2(t,e,n){t.d&&v9(t.d.e,t),t.d=e,t.d&&xU(t.d.e,n,t)}function O2(t,e){yZt(e,t),oq(t.d),oq(zz(vEt(t,(HZt(),Dbe)),207))}function L2(t,e){mZt(e,t),aq(t.d),aq(zz(vEt(t,(HZt(),Dbe)),207))}function N2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=n.fe()),i}function P2(t,e){var n,i;return i=null,(n=ptt(t,e))&&(i=n.ie()),i}function B2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=n.ie()),i}function F2(t,e){var n,i;return i=null,(n=GQ(t,e))&&(i=xCt(n)),i}function R2(t,e,n){var i;return i=Vpt(n),pRt(t.g,i,e),pRt(t.i,e,n),e}function j2(t,e,n){var i;i=Npt();try{return pF(t,e,n)}finally{v3(i)}}function $2(t){var e;e=t.Wg(),this.a=aL(e,69)?zz(e,69).Zh():e.Kc()}function z2(){Vy.call(this),this.j.c=P8(Ote,HWt,1,0,5,1),this.a=-1}function q2(t,e,n,i){this.d=t,this.n=e,this.g=n,this.o=i,this.p=-1}function H2(t,e,n,i){this.e=i,this.d=null,this.c=t,this.a=e,this.b=n}function U2(t,e,n){this.d=new $p(this),this.e=t,this.i=e,this.f=n}function G2(){G2=M,Dhe=new BC(iQt,0),Ohe=new BC("TOP_LEFT",1)}function Y2(){Y2=M,Aye=QW(rft(1),rft(4)),_ye=QW(rft(1),rft(2))}function Z2(){Z2=M,Q_e=dlt((IE(),Sst(Ux(eAe,1),LKt,551,0,[X_e])))}function W2(){W2=M,K_e=dlt((SE(),Sst(Ux(V_e,1),LKt,482,0,[Z_e])))}function K2(){K2=M,YAe=dlt((ME(),Sst(Ux(KAe,1),LKt,530,0,[UAe])))}function X2(){X2=M,oae=dlt((gE(),Sst(Ux(Cae,1),LKt,481,0,[rae])))}function V2(){return Fot(),Sst(Ux(Ure,1),LKt,406,0,[Fre,Nre,Pre,Bre])}function Q2(){return J7(),Sst(Ux($ne,1),LKt,297,0,[Nne,Pne,Bne,Fne])}function J2(){return Uwt(),Sst(Ux(aae,1),LKt,394,0,[Jre,Qre,tae,eae])}function t3(){return Hwt(),Sst(Ux(Yre,1),LKt,323,0,[zre,$re,qre,Hre])}function e3(){return Ost(),Sst(Ux(pse,1),LKt,405,0,[Joe,nse,tse,ese])}function n3(){return Mst(),Sst(Ux(wue,1),LKt,360,0,[oue,rue,aue,iue])}function i3(t,e,n,i){return aL(n,54)?new MP(t,e,n,i):new uG(t,e,n,i)}function r3(){return Dst(),Sst(Ux(Iue,1),LKt,411,0,[mue,yue,vue,xue])}function a3(t){return t.j==(kYt(),TIe)&&TN(ZMt(t),cIe)}function o3(t,e){var n;TJ(n=e.a,e.c.d),EJ(n,e.d.d),tnt(n.a,t.n)}function s3(t,e){return zz(ON(IG(zz(l6(t.k,e),15).Oc(),Xue)),113)}function c3(t,e){return zz(ON(MG(zz(l6(t.k,e),15).Oc(),Xue)),113)}function u3(t){return new g1(nat(zz(t.a.dd(),14).gc(),t.a.cd()),16)}function l3(t){return aL(t,14)?zz(t,14).dc():!t.Kc().Ob()}function h3(t){return EE(),aL(t.g,145)?zz(t.g,145):null}function f3(t){if(t.e.g!=t.b)throw qw(new mm);return!!t.c&&t.d>0}function d3(t){return CP(t.b!=t.d.c),t.c=t.b,t.b=t.b.a,++t.a,t.c.c}function g3(t,e){xW(e),OZ(t.a,t.c,e),t.c=t.c+1&t.a.length-1,pvt(t)}function p3(t,e){xW(e),t.b=t.b-1&t.a.length-1,OZ(t.a,t.b,e),pvt(t)}function b3(t,e){var n;for(n=t.j.c.length;n0&&sqt(t.g,0,e,0,t.i),e}function P3(t,e){var n;return tT(),!(n=zz(FZ(yDe,t),55))||n.wj(e)}function B3(t){if(1!=t.p)throw qw(new pm);return pU(t.f)<<24>>24}function F3(t){if(1!=t.p)throw qw(new pm);return pU(t.k)<<24>>24}function R3(t){if(7!=t.p)throw qw(new pm);return pU(t.k)<<16>>16}function j3(t){if(7!=t.p)throw qw(new pm);return pU(t.f)<<16>>16}function $3(t){var e;for(e=0;t.Ob();)t.Pb(),e=adt(e,1);return eet(e)}function z3(t,e){var n;return n=new Ix,t.xd(n),n.a+="..",e.yd(n),n.a}function q3(t,e,n){var i;i=zz(FZ(t.g,n),57),Wz(t.a.c,new rI(e,i))}function H3(t,e,n){return AG(EB(HI(DV(t.f,e))),EB(HI(DV(t.f,n))))}function U3(t,e,n){return Z$t(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function G3(t,e,n){return mzt(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function Y3(t,e,n){return BOt(t,e,n,aL(e,99)&&0!=(zz(e,18).Bb&qXt))}function Z3(t,e){return t==(cTt(),Sse)&&e==Sse?4:t==Sse||e==Sse?8:32}function W3(t,e){return UI(e)===UI(t)?"(this Map)":null==e?YWt:qdt(e)}function K3(t,e){return zz(null==e?HI(DV(t.f,null)):lT(t.g,e),281)}function X3(t,e,n){var i;return i=Vpt(n),KW(t.b,i,e),KW(t.c,e,n),e}function V3(t,e){var n;for(n=e;n;)jP(t,n.i,n.j),n=QQ(n);return t}function Q3(t,e){var n;return n=rV(qz(new S9(t,e))),SH(new S9(t,e)),n}function J3(t,e){var n;return JE(),ETt(n=zz(t,66).Mj(),e),n.Ok(e)}function t4(t,e,n,i,r){Wz(e,vSt(r,WOt(r,n,i))),ZEt(t,r,e)}function e4(t,e,n){t.i=0,t.e=0,e!=n&&(Kct(t,e,n),Wct(t,e,n))}function n4(t,e){var n;n=t.q.getHours(),t.q.setFullYear(e+lXt),dzt(t,n)}function i4(t,e,n){if(n){var i=n.ee();t.a[e]=i(n)}else delete t.a[e]}function r4(t,e,n){if(n){var i=n.ee();n=i(n)}else n=void 0;t.a[e]=n}function a4(t){if(t<0)throw qw(new zv("Negative array size: "+t))}function o4(t){return t.n||(C5(t),t.n=new VU(t,KDe,t),xV(t)),t.n}function s4(t){return CP(t.a=0&&t.a[n]===e[n];n--);return n<0}function A4(t,e){var n;return Yut(),0!=(n=t.j.g-e.j.g)?n:0}function E4(t,e){return xW(e),null!=t.a?CU(e.Kb(t.a)):Tne}function T4(t){var e;return t?new LH(t):(Urt(e=new hD,t),e)}function C4(t,e){return e.b.Kb(A9(t,e.c.Ee(),new vg(e)))}function S4(t){xAt(),lL(this,pU(n0(xG(t,24),lVt)),pU(n0(t,lVt)))}function I4(){I4=M,wie=dlt((hwt(),Sst(Ux(vie,1),LKt,428,0,[pie,gie])))}function M4(){M4=M,xie=dlt((Ftt(),Sst(Ux(Rie,1),LKt,427,0,[mie,yie])))}function D4(){D4=M,jae=dlt((Rtt(),Sst(Ux(Ooe,1),LKt,424,0,[Bae,Fae])))}function O4(){O4=M,Gse=dlt((Crt(),Sst(Ux(Wse,1),LKt,511,0,[Hse,qse])))}function L4(){L4=M,Ile=dlt((jtt(),Sst(Ux(Lle,1),LKt,419,0,[Tle,Cle])))}function N4(){N4=M,Yle=dlt((b9(),Sst(Ux(Jle,1),LKt,479,0,[Ule,Hle])))}function P4(){P4=M,eye=dlt((D6(),Sst(Ux(aye,1),LKt,376,0,[Jme,Qme])))}function B4(){B4=M,zme=dlt((Y9(),Sst(Ux(Gme,1),LKt,421,0,[Rme,jme])))}function F4(){F4=M,cle=dlt((K8(),Sst(Ux(fle,1),LKt,422,0,[ale,ole])))}function R4(){R4=M,Nhe=dlt((G2(),Sst(Ux(Ufe,1),LKt,420,0,[Dhe,Ohe])))}function j4(){j4=M,Cve=dlt((M6(),Sst(Ux(Pve,1),LKt,520,0,[Eve,Ave])))}function $4(){$4=M,Uye=dlt((X4(),Sst(Ux(Kye,1),LKt,523,0,[qye,zye])))}function z4(){z4=M,ive=dlt((bQ(),Sst(Ux(ove,1),LKt,516,0,[eve,tve])))}function q4(){q4=M,sve=dlt((cJ(),Sst(Ux(Tve,1),LKt,515,0,[rve,ave])))}function H4(){H4=M,Bve=dlt((pQ(),Sst(Ux(zve,1),LKt,455,0,[Lve,Nve])))}function U4(){U4=M,Uxe=dlt((z0(),Sst(Ux(Qxe,1),LKt,425,0,[qxe,zxe])))}function G4(){G4=M,Jxe=dlt((Srt(),Sst(Ux(ike,1),LKt,495,0,[Xxe,Vxe])))}function Y4(){Y4=M,$xe=dlt((uJ(),Sst(Ux(Hxe,1),LKt,480,0,[Fxe,Rxe])))}function Z4(){Z4=M,cke=dlt((B7(),Sst(Ux(fke,1),LKt,426,0,[ake,oke])))}function W4(){W4=M,XAe=dlt((Nst(),Sst(Ux(VAe,1),LKt,429,0,[WAe,ZAe])))}function K4(){K4=M,nAe=dlt((O6(),Sst(Ux(cAe,1),LKt,430,0,[tAe,J_e])))}function X4(){X4=M,qye=new QC("UPPER",0),zye=new QC("LOWER",1)}function V4(t,e){var n;HX(n=new wv,"x",e.a),HX(n,"y",e.b),tW(t,n)}function Q4(t,e){var n;HX(n=new wv,"x",e.a),HX(n,"y",e.b),tW(t,n)}function J4(t,e){var n,i;i=!1;do{i|=n=gct(t,e)}while(n);return i}function t5(t,e){var n,i;for(n=e,i=0;n>0;)i+=t.a[n],n-=n&-n;return i}function e5(t,e){var n;for(n=e;n;)jP(t,-n.i,-n.j),n=QQ(n);return t}function n5(t,e){var n,i;for(xW(e),i=t.Kc();i.Ob();)n=i.Pb(),e.td(n)}function i5(t,e){var n;return new mA(n=e.cd(),t.e.pc(n,zz(e.dd(),14)))}function r5(t,e,n,i){var r;(r=new O).c=e,r.b=n,r.a=i,i.b=n.a=r,++t.b}function a5(t,e,n){var i;return f1(e,t.c.length),i=t.c[e],t.c[e]=n,i}function o5(t,e,n){return zz(null==e?_St(t.f,null,n):cdt(t.g,e,n),281)}function s5(t){return t.c&&t.d?w0(t.c)+"->"+w0(t.d):"e_"+CN(t)}function c5(t,e){return(Vft(t),k_(new FH(t,new X7(e,t.a)))).sd(eie)}function u5(){return xEt(),Sst(Ux(Yoe,1),LKt,356,0,[Foe,Roe,joe,$oe,zoe])}function l5(){return kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])}function h5(t){return Bx(),function(){return j2(t,this,arguments)}}function f5(){return Date.now?Date.now():(new Date).getTime()}function d5(t){return!(!t.c||!t.d||!t.c.i||t.c.i!=t.d.i)}function g5(t){if(!t.c.Sb())throw qw(new vm);return t.a=!0,t.c.Ub()}function p5(t){t.i=0,vT(t.b,null),vT(t.c,null),t.a=null,t.e=null,++t.g}function b5(t){pT.call(this,null==t?YWt:qdt(t),aL(t,78)?zz(t,78):null)}function w5(t){iWt(),zw(this),this.a=new VA,but(this,t),Bq(this.a,t)}function m5(){PD(this),this.b=new PS(RXt,RXt),this.a=new PS(jXt,jXt)}function y5(t,e){this.c=0,this.b=e,wM.call(this,t,17493),this.a=this.c}function v5(t){x5(),Xne||(this.c=t,this.e=!0,this.a=new Nw)}function x5(){x5=M,Xne=!0,Wne=!1,Kne=!1,Qne=!1,Vne=!1}function k5(t,e){return!!aL(e,149)&&yR(t.c,zz(e,149).c)}function _5(t,e){var n;return n=0,t&&(n+=t.f.a/2),e&&(n+=e.f.a/2),n}function A5(t,e){return zz(ftt(t.d,e),23)||zz(ftt(t.e,e),23)}function E5(t){this.b=t,DL.call(this,t),this.a=zz(xot(this.b.a,4),126)}function T5(t){this.b=t,oP.call(this,t),this.a=zz(xot(this.b.a,4),126)}function C5(t){return t.t||(t.t=new pw(t),lft(new Pv(t),0,t.t)),t.t}function S5(){return zht(),Sst(Ux(WCe,1),LKt,103,0,[zCe,$Ce,jCe,RCe,qCe])}function I5(){return owt(),Sst(Ux(QSe,1),LKt,249,0,[zSe,HSe,jSe,$Se,qSe])}function M5(){return awt(),Sst(Ux(kEe,1),LKt,175,0,[lEe,uEe,sEe,hEe,cEe])}function D5(){return LTt(),Sst(Ux(GAe,1),LKt,316,0,[iAe,rAe,sAe,aAe,oAe])}function O5(){return Pmt(),Sst(Ux(Dme,1),LKt,315,0,[vme,wme,mme,bme,yme])}function L5(){return Xmt(),Sst(Ux(Sle,1),LKt,335,0,[vle,yle,kle,_le,xle])}function N5(){return QLt(),Sst(Ux(G_e,1),LKt,355,0,[B_e,P_e,R_e,F_e,j_e])}function P5(){return N_t(),Sst(Ux(Rue,1),LKt,363,0,[Eue,Cue,Sue,Tue,Aue])}function B5(){return Edt(),Sst(Ux(ime,1),LKt,163,0,[Hfe,jfe,$fe,zfe,qfe])}function F5(){var t,e;F5=M,i_(),e=new _m,eLe=e,t=new My,nLe=t}function R5(t){var e;return t.c||aL(e=t.r,88)&&(t.c=zz(e,26)),t.c}function j5(t){return t.e=3,t.d=t.Yb(),2!=t.e&&(t.e=0,!0)}function $5(t){return EO(t&CXt,t>>22&CXt,t<0?SXt:0)}function z5(t){var e,n,i;for(n=0,i=(e=t).length;n0?Apt(t,e):MPt(t,-e)}function G5(t,e){return 0==e||0==t.e?t:e>0?MPt(t,e):Apt(t,-e)}function Y5(t){if(bDt(t))return t.c=t.a,t.a.Pb();throw qw(new vm)}function Z5(t){var e,n;return e=t.c.i,n=t.d.i,e.k==(cTt(),Ese)&&n.k==Ese}function W5(t){var e;return Uot(e=new gV,t),hct(e,(HZt(),mbe),null),e}function K5(t,e,n){var i;return(i=t.Yg(e))>=0?t._g(i,n,!0):oMt(t,e,n)}function X5(t,e,n,i){var r;for(r=0;re)throw qw(new Dv(bSt(t,e,"index")));return t}function p6(t,e,n,i){var r;return yAt(r=P8(DNe,hXt,25,e,15,1),t,e,n,i),r}function b6(t,e){var n;n=t.q.getHours()+(e/60|0),t.q.setMinutes(e),dzt(t,n)}function w6(t,e){return n.Math.min(W8(e.a,t.d.d.c),W8(e.b,t.d.d.c))}function m6(t,e){return ZI(e)?null==e?wDt(t.f,null):Got(t.g,e):wDt(t.f,e)}function y6(t){this.c=t,this.a=new Wd(this.c.a),this.b=new Wd(this.c.b)}function v6(){this.e=new Nw,this.c=new Nw,this.d=new Nw,this.b=new Nw}function x6(){this.g=new zm,this.b=new zm,this.a=new Nw,this.k=new Nw}function k6(t,e,n){this.a=t,this.c=e,this.d=n,Wz(e.e,this),Wz(n.b,this)}function _6(t,e){bM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function A6(t,e){wM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function E6(t,e){mM.call(this,e.rd(),-6&e.qd()),xW(t),this.a=t,this.b=e}function T6(t,e,n){this.a=t,this.b=e,this.c=n,Wz(t.t,this),Wz(e.i,this)}function C6(){this.b=new VA,this.a=new VA,this.b=new VA,this.a=new VA}function S6(){S6=M,AEe=new sw("org.eclipse.elk.labels.labelManager")}function I6(){I6=M,nue=new iF("separateLayerConnections",(Mst(),oue))}function M6(){M6=M,Eve=new sS("REGULAR",0),Ave=new sS("CRITICAL",1)}function D6(){D6=M,Jme=new ZC("STACKED",0),Qme=new ZC("SEQUENCED",1)}function O6(){O6=M,tAe=new AS("FIXED",0),J_e=new AS("CENTER_NODE",1)}function L6(t,e){var n;return n=BUt(t,e),t.b=new vrt(n.c.length),xHt(t,n)}function N6(t,e,n){return++t.e,--t.f,zz(t.d[e].$c(n),133).dd()}function P6(t){var e;return t.a||aL(e=t.r,148)&&(t.a=zz(e,148)),t.a}function B6(t){return t.a?t.e?B6(t.e):null:t}function F6(t,e){return t.pe.p?-1:0}function R6(t,e){return xW(e),t.c=0,"Initial capacity must not be negative")}function J6(){J6=M,Wie=dlt((Fet(),Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])))}function t8(){t8=M,ere=dlt((Q7(),Sst(Ux(nre,1),LKt,461,0,[Vie,Xie,Qie])))}function e8(){e8=M,sre=dlt((U9(),Sst(Ux(Mre,1),LKt,462,0,[are,rre,ire])))}function n8(){n8=M,Jne=dlt((Uut(),Sst(Ux(tie,1),LKt,132,0,[Gne,Yne,Zne])))}function i8(){i8=M,Loe=dlt((H9(),Sst(Ux(qoe,1),LKt,379,0,[Moe,Ioe,Doe])))}function r8(){r8=M,bse=dlt((qht(),Sst(Ux(yse,1),LKt,423,0,[gse,dse,fse])))}function a8(){a8=M,dle=dlt((Dit(),Sst(Ux(wle,1),LKt,314,0,[lle,ule,hle])))}function o8(){o8=M,mle=dlt((cit(),Sst(Ux(Ale,1),LKt,337,0,[gle,ble,ple])))}function s8(){s8=M,Nle=dlt((Jst(),Sst(Ux(zle,1),LKt,450,0,[Dle,Mle,Ole])))}function c8(){c8=M,jue=dlt((Irt(),Sst(Ux(Wue,1),LKt,361,0,[Fue,Bue,Pue])))}function u8(){u8=M,Mhe=dlt((G9(),Sst(Ux(Lhe,1),LKt,303,0,[Che,She,The])))}function l8(){l8=M,Ehe=dlt((jot(),Sst(Ux(Ihe,1),LKt,292,0,[khe,_he,xhe])))}function h8(){h8=M,ume=dlt((Tlt(),Sst(Ux(gme,1),LKt,378,0,[ame,ome,sme])))}function f8(){f8=M,Vme=dlt((Hat(),Sst(Ux(tye,1),LKt,375,0,[Zme,Wme,Kme])))}function d8(){d8=M,Fme=dlt((vct(),Sst(Ux($me,1),LKt,339,0,[Nme,Lme,Pme])))}function g8(){g8=M,Yme=dlt((sit(),Sst(Ux(Xme,1),LKt,452,0,[Ume,qme,Hme])))}function p8(){p8=M,bye=dlt((Lst(),Sst(Ux(Tye,1),LKt,377,0,[dye,gye,fye])))}function b8(){b8=M,oye=dlt((Zut(),Sst(Ux(lye,1),LKt,336,0,[nye,iye,rye])))}function w8(){w8=M,hye=dlt((bat(),Sst(Ux(pye,1),LKt,338,0,[uye,sye,cye])))}function m8(){m8=M,Nye=dlt((uit(),Sst(Ux(Pye,1),LKt,454,0,[Mye,Dye,Oye])))}function y8(){y8=M,rke=dlt((Idt(),Sst(Ux(ske,1),LKt,442,0,[nke,tke,eke])))}function v8(){v8=M,dke=dlt((Hut(),Sst(Ux(Uke,1),LKt,380,0,[uke,lke,hke])))}function x8(){x8=M,n_e=dlt((Cdt(),Sst(Ux(N_e,1),LKt,381,0,[Jke,t_e,Qke])))}function k8(){k8=M,Xke=dlt((qat(),Sst(Ux(Vke,1),LKt,293,0,[Zke,Wke,Yke])))}function _8(){_8=M,Y_e=dlt((Sdt(),Sst(Ux(W_e,1),LKt,437,0,[q_e,H_e,U_e])))}function A8(){A8=M,xSe=dlt((cht(),Sst(Ux(TSe,1),LKt,334,0,[mSe,wSe,ySe])))}function E8(){E8=M,KCe=dlt((Ret(),Sst(Ux(tSe,1),LKt,272,0,[GCe,YCe,ZCe])))}function T8(){return V_t(),Sst(Ux(oIe,1),LKt,98,0,[VSe,XSe,KSe,YSe,WSe,ZSe])}function C8(t,e){return!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),apt(t.o,e)}function S8(t){return!t.g&&(t.g=new uc),!t.g.d&&(t.g.d=new fw(t)),t.g.d}function I8(t){return!t.g&&(t.g=new uc),!t.g.a&&(t.g.a=new dw(t)),t.g.a}function M8(t){return!t.g&&(t.g=new uc),!t.g.b&&(t.g.b=new hw(t)),t.g.b}function D8(t){return!t.g&&(t.g=new uc),!t.g.c&&(t.g.c=new gw(t)),t.g.c}function O8(t,e,n){var i,r;for(r=new Oot(e,t),i=0;in||e=0?t._g(n,!0,!0):oMt(t,e,!0)}function C7(t,e){return Sft(Uv(EB(vEt(t,(hWt(),Afe)))),Uv(EB(vEt(e,Afe))))}function S7(){S7=M,Yxe=ubt(ubt($E(new z2,(Yvt(),Rve)),(FCt(),Xve)),Yve)}function I7(t,e,n){var i;return i=Pct(t,e,n),t.b=new vrt(i.c.length),lBt(t,i)}function M7(t){if(t.b<=0)throw qw(new vm);return--t.b,t.a-=t.c.c,rft(t.a)}function D7(t){var e;if(!t.a)throw qw(new fK);return e=t.a,t.a=QQ(t.a),e}function O7(t){for(;!t.a;)if(!AR(t.c,new wg(t)))return!1;return!0}function L7(t){return vZ(t),aL(t,198)?zz(t,198):new cf(t)}function N7(t){P7(),zz(t.We((lWt(),hCe)),174).Fc((dIt(),iIe)),t.Ye(lCe,null)}function P7(){P7=M,eEe=new gs,iEe=new ps,nEe=yut((lWt(),lCe),eEe,HTe,iEe)}function B7(){B7=M,ake=new wS("LEAF_NUMBER",0),oke=new wS("NODE_SIZE",1)}function F7(t,e,n){t.a=e,t.c=n,t.b.a.$b(),vX(t.d),t.e.a.c=P8(Ote,HWt,1,0,5,1)}function R7(t){t.a=P8(DNe,hXt,25,t.b+1,15,1),t.c=P8(DNe,hXt,25,t.b,15,1),t.d=0}function j7(t,e){t.a.ue(e.d,t.b)>0&&(Wz(t.c,new yq(e.c,e.d,t.d)),t.b=e.d)}function $7(t,e){if(null==t.g||e>=t.i)throw qw(new LM(e,t.i));return t.g[e]}function z7(t,e,n){if(But(t,n),null!=n&&!t.wj(n))throw qw(new fm);return n}function q7(t){var e;if(t.Ek())for(e=t.i-1;e>=0;--e)Ket(t,e);return N3(t)}function H7(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[0];)n=e;return n}function U7(t,e){var n;return a4(e),(n=y9(t.slice(0,e),t)).length=e,n}function G7(t,e,n,i){CX(),i=i||gne,wSt(t.slice(e,n),t,e,n,-e,i)}function Y7(t,e,n,i,r){return e<0?oMt(t,n,i):zz(n,66).Nj().Pj(t,t.yh(),e,i,r)}function Z7(t){return aL(t,172)?""+zz(t,172).a:null==t?null:qdt(t)}function W7(t){return aL(t,172)?""+zz(t,172).a:null==t?null:qdt(t)}function K7(t,e){if(e.a)throw qw(new pv(MVt));AY(t.a,e),e.a=t,!t.j&&(t.j=e)}function X7(t,e){mM.call(this,e.rd(),-16449&e.qd()),xW(t),this.a=t,this.c=e}function V7(t,e){var n,i;return i=e/t.c.Hd().gc()|0,n=e%t.c.Hd().gc(),Y6(t,i,n)}function Q7(){Q7=M,Vie=new UT(oQt,0),Xie=new UT(iQt,1),Qie=new UT(sQt,2)}function J7(){J7=M,Nne=new bT("All",0),Pne=new LD,Bne=new DO,Fne=new ND}function t9(){t9=M,jne=dlt((J7(),Sst(Ux($ne,1),LKt,297,0,[Nne,Pne,Bne,Fne])))}function e9(){e9=M,rse=dlt((Ost(),Sst(Ux(pse,1),LKt,405,0,[Joe,nse,tse,ese])))}function n9(){n9=M,jre=dlt((Fot(),Sst(Ux(Ure,1),LKt,406,0,[Fre,Nre,Pre,Bre])))}function i9(){i9=M,Gre=dlt((Hwt(),Sst(Ux(Yre,1),LKt,323,0,[zre,$re,qre,Hre])))}function r9(){r9=M,iae=dlt((Uwt(),Sst(Ux(aae,1),LKt,394,0,[Jre,Qre,tae,eae])))}function a9(){a9=M,qve=dlt((Yvt(),Sst(Ux(Hve,1),LKt,393,0,[Fve,Rve,jve,$ve])))}function o9(){o9=M,cue=dlt((Mst(),Sst(Ux(wue,1),LKt,360,0,[oue,rue,aue,iue])))}function s9(){s9=M,Gke=dlt((Dyt(),Sst(Ux(Kke,1),LKt,340,0,[Hke,zke,qke,$ke])))}function c9(){c9=M,_ue=dlt((Dst(),Sst(Ux(Iue,1),LKt,411,0,[mue,yue,vue,xue])))}function u9(){u9=M,pme=dlt((gmt(),Sst(Ux(xme,1),LKt,197,0,[fme,dme,hme,lme])))}function l9(){l9=M,hMe=dlt((qut(),Sst(Ux(gMe,1),LKt,396,0,[sMe,cMe,oMe,uMe])))}function h9(){h9=M,CSe=dlt((Wvt(),Sst(Ux(FSe,1),LKt,285,0,[ESe,kSe,_Se,ASe])))}function f9(){f9=M,eSe=dlt((Tdt(),Sst(Ux(cSe,1),LKt,218,0,[JCe,VCe,XCe,QCe])))}function d9(){d9=M,rMe=dlt((zgt(),Sst(Ux(aMe,1),LKt,311,0,[nMe,JIe,eMe,tMe])))}function g9(){g9=M,zIe=dlt((vpt(),Sst(Ux(VIe,1),LKt,374,0,[RIe,jIe,FIe,BIe])))}function p9(){p9=M,Uzt(),qLe=RXt,zLe=jXt,ULe=new Nd(RXt),HLe=new Nd(jXt)}function b9(){b9=M,Ule=new MC(VJt,0),Hle=new MC("IMPROVE_STRAIGHTNESS",1)}function w9(t,e){return lq(),Wz(t,new rI(e,rft(e.e.c.length+e.g.c.length)))}function m9(t,e){return lq(),Wz(t,new rI(e,rft(e.e.c.length+e.g.c.length)))}function y9(t,e){return 10!=mtt(e)&&Sst(nut(e),e.hm,e.__elementTypeId$,mtt(e),t),t}function v9(t,e){var n;return-1!=(n=_9(t,e,0))&&(u6(t,n),!0)}function x9(t,e){var n;return(n=zz(m6(t.e,e),387))?(Fq(n),n.e):null}function k9(t){var e;return QM(t)&&(e=0-t,!isNaN(e))?e:cot(sct(t))}function _9(t,e,n){for(;n=0?tmt(t,n,!0,!0):oMt(t,e,!0)}function J9(t,e){var n,i;return EE(),n=h3(t),i=h3(e),!!n&&!!i&&!jwt(n.k,i.k)}function ttt(t,e){Snt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function ett(t,e){Int(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function ntt(t,e){Cnt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function itt(t,e){Tnt(t,null==e||WR((xW(e),e))||isNaN((xW(e),e))?0:(xW(e),e))}function rtt(t){(this.q?this.q:(TX(),TX(),hne)).Ac(t.q?t.q:(TX(),TX(),hne))}function att(t,e){return aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t)}function ott(t,e){return aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t)}function stt(t,e){Kre=new ne,nae=e,zz((Wre=t).b,65),R8(Wre,Kre,null),cHt(Wre)}function ctt(t,e,n){var i;return i=t.g[e],kL(t,e,t.oi(e,n)),t.gi(e,n,i),t.ci(),i}function utt(t,e){var n;return(n=t.Xc(e))>=0&&(t.$c(n),!0)}function ltt(t){var e;return t.d!=t.r&&(e=Mxt(t),t.e=!!e&&e.Cj()==A7t,t.d=e),t.e}function htt(t,e){var n;for(vZ(t),vZ(e),n=!1;e.Ob();)n|=t.Fc(e.Pb());return n}function ftt(t,e){var n;return(n=zz(FZ(t.e,e),387))?(sL(t,n),n.e):null}function dtt(t){var e,n;return e=t/60|0,0==(n=t%60)?""+e:e+":"+n}function gtt(t,e){return Vft(t),new FH(t,new RR(new E6(e,t.a)))}function ptt(t,e){var n=t.a[e],i=(tct(),fee)[typeof n];return i?i(n):klt(typeof n)}function btt(t){switch(t.g){case 0:return FWt;case 1:return-1;default:return 0}}function wtt(t){return jxt(t,(Z9(),wee))<0?-SN(sct(t)):t.l+t.m*MXt+t.h*DXt}function mtt(t){return null==t.__elementTypeCategory$?10:t.__elementTypeCategory$}function ytt(t){var e;return null!=(e=0==t.b.c.length?null:PH(t.b,0))&&hrt(t,0),e}function vtt(t,e){for(;e[0]=0;)++e[0]}function xtt(t,e){this.e=e,this.a=Xot(t),this.a<54?this.f=k2(t):this.c=ewt(t)}function ktt(t,e,n,i){pWt(),Dw.call(this,26),this.c=t,this.a=e,this.d=n,this.b=i}function _tt(t,e,n){var i,r;for(i=10,r=0;rt.a[i]&&(i=n);return i}function Ltt(t,e){var n;return 0==(n=Mdt(t.e.c,e.e.c))?Sft(t.e.d,e.e.d):n}function Ntt(t,e){return 0==e.e||0==t.e?ine:(LMt(),ONt(t,e))}function Ptt(t,e){if(!t)throw qw(new jv(QNt("Enum constant undefined: %s",e)))}function Btt(){Btt=M,sse=new Ee,cse=new _e,ase=new Me,ose=new De,use=new Oe}function Ftt(){Ftt=M,mie=new zT("BY_SIZE",0),yie=new zT("BY_SIZE_AND_SHAPE",1)}function Rtt(){Rtt=M,Bae=new ZT("EADES",0),Fae=new ZT("FRUCHTERMAN_REINGOLD",1)}function jtt(){jtt=M,Tle=new CC("READING_DIRECTION",0),Cle=new CC("ROTATION",1)}function $tt(){$tt=M,Ele=dlt((Xmt(),Sst(Ux(Sle,1),LKt,335,0,[vle,yle,kle,_le,xle])))}function ztt(){ztt=M,kme=dlt((Pmt(),Sst(Ux(Dme,1),LKt,315,0,[vme,wme,mme,bme,yme])))}function qtt(){qtt=M,Mue=dlt((N_t(),Sst(Ux(Rue,1),LKt,363,0,[Eue,Cue,Sue,Tue,Aue])))}function Htt(){Htt=M,Gfe=dlt((Edt(),Sst(Ux(ime,1),LKt,163,0,[Hfe,jfe,$fe,zfe,qfe])))}function Utt(){Utt=M,uAe=dlt((LTt(),Sst(Ux(GAe,1),LKt,316,0,[iAe,rAe,sAe,aAe,oAe])))}function Gtt(){Gtt=M,dEe=dlt((awt(),Sst(Ux(kEe,1),LKt,175,0,[lEe,uEe,sEe,hEe,cEe])))}function Ytt(){Ytt=M,z_e=dlt((QLt(),Sst(Ux(G_e,1),LKt,355,0,[B_e,P_e,R_e,F_e,j_e])))}function Ztt(){Ztt=M,Hoe=dlt((xEt(),Sst(Ux(Yoe,1),LKt,356,0,[Foe,Roe,joe,$oe,zoe])))}function Wtt(){Wtt=M,UCe=dlt((zht(),Sst(Ux(WCe,1),LKt,103,0,[zCe,$Ce,jCe,RCe,qCe])))}function Ktt(){Ktt=M,GSe=dlt((owt(),Sst(Ux(QSe,1),LKt,249,0,[zSe,HSe,jSe,$Se,qSe])))}function Xtt(){Xtt=M,MIe=dlt((kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])))}function Vtt(t,e){var n;return(n=zz(FZ(t.a,e),134))||(n=new Qt,KW(t.a,e,n)),n}function Qtt(t){var e;return!!(e=zz(vEt(t,(hWt(),Fhe)),305))&&e.a==t}function Jtt(t){var e;return!!(e=zz(vEt(t,(hWt(),Fhe)),305))&&e.i==t}function tet(t,e){return xW(e),BG(t),!!t.d.Ob()&&(e.td(t.d.Pb()),!0)}function eet(t){return Xlt(t,FWt)>0?FWt:Xlt(t,$Kt)<0?$Kt:pU(t)}function net(t){return t<3?(dit(t,MKt),t+1):t=0&&e=-.01&&t.a<=fQt&&(t.a=0),t.b>=-.01&&t.b<=fQt&&(t.b=0),t}function oet(t,e){return e==(aj(),aj(),Ene)?t.toLocaleLowerCase():t.toLowerCase()}function set(t){return(0!=(2&t.i)?"interface ":0!=(1&t.i)?"":"class ")+(_B(t),t.o)}function cet(t){var e;e=new Oy,h7((!t.q&&(t.q=new nY(XDe,t,11,10)),t.q),e)}function uet(t,e){var n;return n=e>0?e-1:e,Ok(Lk(znt(Lq(new Zy,n),t.n),t.j),t.k)}function het(t,e,n,i){t.j=-1,UMt(t,ACt(t,e,n),(JE(),zz(e,66).Mj().Ok(i)))}function fet(t){this.g=t,this.f=new Nw,this.a=n.Math.min(this.g.c.c,this.g.d.c)}function det(t){this.b=new Nw,this.a=new Nw,this.c=new Nw,this.d=new Nw,this.e=t}function get(t,e){this.a=new Pw,this.e=new Pw,this.b=(Tlt(),sme),this.c=t,this.b=e}function pet(t,e,n){NF.call(this),Bet(this),this.a=t,this.c=n,this.b=e.d,this.f=e.e}function bet(t){this.d=t,this.c=t.c.vc().Kc(),this.b=null,this.a=null,this.e=(rv(),Yte)}function wet(t){if(t<0)throw qw(new jv("Illegal Capacity: "+t));this.g=this.ri(t)}function met(t,e){if(0>t||t>e)throw qw(new Ax("fromIndex: 0, toIndex: "+t+hVt+e))}function yet(t){var e;if(t.a==t.b.a)throw qw(new vm);return e=t.a,t.c=e,t.a=t.a.e,e}function vet(t){var e;EP(!!t.c),e=t.c.a,Oet(t.d,t.c),t.b==t.c?t.b=e:--t.a,t.c=null}function xet(t,e){var n;return Vft(t),n=new mX(t,t.a.rd(),4|t.a.qd(),e),new FH(t,n)}function ket(t,e){var n,i;return(n=zz(dht(t.d,e),14))?(i=e,t.e.pc(i,n)):null}function _et(t,e){var n;for(n=t.Kc();n.Ob();)hct(zz(n.Pb(),70),(hWt(),sfe),e)}function Aet(t){var e;return(e=Uv(EB(vEt(t,(HZt(),obe)))))<0&&hct(t,obe,e=0),e}function Eet(t,e,i){var r;zxt(i,r=n.Math.max(0,t.b/2-.5),1),Wz(e,new iC(i,r))}function Tet(t,e,n){return SQ(qq(t.a.e[zz(e.a,10).p]-t.a.e[zz(n.a,10).p]))}function Cet(t,e,n,i,r,a){var o;TJ(o=W5(i),r),EJ(o,a),JIt(t.a,i,new Lj(o,e,n.f))}function Set(t,e){var n;if(!(n=PNt(t.Tg(),e)))throw qw(new jv(a6t+e+c6t));return n}function Iet(t,e){var n;for(n=t;QQ(n);)if((n=QQ(n))==e)return!0;return!1}function Met(t,e){var n,i,r;for(i=e.a.cd(),n=zz(e.a.dd(),14).gc(),r=0;r0&&(t.a/=e,t.b/=e),t}function Zet(t){var e;return t.w?t.w:((e=K1(t))&&!e.kh()&&(t.w=e),e)}function Wet(t){var e;return null==t?null:XAt(e=zz(t,190),e.length)}function Ket(t,e){if(null==t.g||e>=t.i)throw qw(new LM(e,t.i));return t.li(e,t.g[e])}function Xet(t){var e,n;for(e=t.a.d.j,n=t.c.d.j;e!=n;)urt(t.b,e),e=Tft(e);urt(t.b,e)}function Vet(t){var e;for(e=0;e=14&&e<=16)),t}function rnt(t,e,n){var i=function(){return t.apply(i,arguments)};return e.apply(i,n),i}function ant(t,e,n){var i,r;i=e;do{r=Uv(t.p[i.p])+n,t.p[i.p]=r,i=t.a[i.p]}while(i!=e)}function ont(t,e){var n,i;i=t.a,n=Vht(t,e,null),i!=e&&!t.e&&(n=sGt(t,e,n)),n&&n.Fi()}function snt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)}function cnt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)}function unt(t,e){return $Et(),_O(t.b.c.length-t.e.c.length,e.b.c.length-e.e.c.length)}function lnt(t,e){return Jk(Jrt(t,e,pU(odt(CKt,rK(pU(odt(null==e?0:eut(e),SKt)),15)))))}function hnt(){hnt=M,Dse=dlt((cTt(),Sst(Ux(Ose,1),LKt,267,0,[Sse,Cse,Ese,Ise,Tse,Ase])))}function fnt(){fnt=M,eTe=dlt((p_t(),Sst(Ux(HCe,1),LKt,291,0,[JEe,QEe,VEe,KEe,WEe,XEe])))}function dnt(){dnt=M,PEe=dlt((pmt(),Sst(Ux(tTe,1),LKt,248,0,[SEe,DEe,OEe,LEe,IEe,MEe])))}function gnt(){gnt=M,rle=dlt((LCt(),Sst(Ux(sle,1),LKt,227,0,[Jue,ele,Que,tle,nle,Vue])))}function pnt(){pnt=M,che=dlt((JEt(),Sst(Ux(yhe,1),LKt,275,0,[ahe,nhe,ohe,rhe,ihe,ehe])))}function bnt(){bnt=M,the=dlt((qkt(),Sst(Ux(she,1),LKt,274,0,[Xle,Kle,Qle,Wle,Vle,Zle])))}function wnt(){wnt=M,rme=dlt((EAt(),Sst(Ux(cme,1),LKt,313,0,[eme,Jwe,Vwe,Qwe,nme,tme])))}function mnt(){mnt=M,qle=dlt((wTt(),Sst(Ux(Gle,1),LKt,276,0,[Ble,Ple,Rle,Fle,$le,jle])))}function ynt(){ynt=M,Qve=dlt((FCt(),Sst(Ux(jxe,1),LKt,327,0,[Xve,Yve,Wve,Zve,Kve,Gve])))}function vnt(){vnt=M,sIe=dlt((dIt(),Sst(Ux(IIe,1),LKt,273,0,[rIe,nIe,iIe,eIe,tIe,aIe])))}function xnt(){xnt=M,uSe=dlt((eEt(),Sst(Ux(vSe,1),LKt,312,0,[oSe,rSe,sSe,nSe,aSe,iSe])))}function knt(){return eOt(),Sst(Ux(USe,1),LKt,93,0,[ISe,SSe,DSe,BSe,PSe,NSe,OSe,LSe,MSe])}function _nt(t,e){var n;n=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,0,n,t.a))}function Ant(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,1,n,t.b))}function Ent(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,3,n,t.b))}function Tnt(t,e){var n;n=t.f,t.f=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,3,n,t.f))}function Cnt(t,e){var n;n=t.g,t.g=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,4,n,t.g))}function Snt(t,e){var n;n=t.i,t.i=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,5,n,t.i))}function Int(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,6,n,t.j))}function Mnt(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,1,n,t.j))}function Dnt(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,4,n,t.c))}function Ont(t,e){var n;n=t.k,t.k=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new h4(t,2,n,t.k))}function Lnt(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,2,n,t.d))}function Nnt(t,e){var n;n=t.s,t.s=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,4,n,t.s))}function Pnt(t,e){var n;n=t.t,t.t=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new f4(t,5,n,t.t))}function Bnt(t,e){var n;n=t.F,t.F=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,5,n,e))}function Fnt(t,e){var n;return(n=zz(FZ((tT(),yDe),t),55))?n.xj(e):P8(Ote,HWt,1,e,5,1)}function Rnt(t,e){var n;return e in t.a&&(n=GQ(t,e).he())?n.a:null}function jnt(t,e){var n,i;return e_(),i=new cc,!!e&&MNt(i,e),Bit(n=i,t),n}function $nt(t,e,n){if(But(t,n),!t.Bk()&&null!=n&&!t.wj(n))throw qw(new fm);return n}function znt(t,e){return t.n=e,t.n?(t.f=new Nw,t.e=new Nw):(t.f=null,t.e=null),t}function qnt(t,e,n,i,r,a){var o;return Vnt(n,o=yZ(t,e)),o.i=r?8:0,o.f=i,o.e=r,o.g=a,o}function Hnt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=1,this.c=t,this.a=n}function Unt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=2,this.c=t,this.a=n}function Gnt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=6,this.c=t,this.a=n}function Ynt(t,e,n,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=7,this.c=t,this.a=n}function Znt(t,e,n,i,r){this.d=e,this.j=i,this.e=r,this.o=-1,this.p=4,this.c=t,this.a=n}function Wnt(t,e){var n,i,r,a;for(r=0,a=(i=e).length;r=0),abt(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1}function rit(t){return t.a<54?t.f<0?-1:t.f>0?1:0:(!t.c&&(t.c=xlt(t.f)),t.c).e}function ait(t){if(!(t>=0))throw qw(new jv("tolerance ("+t+") must be >= 0"));return t}function oit(){return aEe||kut(aEe=new DFt,Sst(Ux(jie,1),HWt,130,0,[new Lh])),aEe}function sit(){sit=M,Ume=new GC(hQt,0),qme=new GC("INPUT",1),Hme=new GC("OUTPUT",2)}function cit(){cit=M,gle=new EC("ARD",0),ble=new EC("MSD",1),ple=new EC("MANUAL",2)}function uit(){uit=M,Mye=new VC("BARYCENTER",0),Dye=new VC(A1t,1),Oye=new VC(E1t,2)}function lit(t,e){var n;if(n=t.gc(),e<0||e>n)throw qw(new eR(e,n));return new FR(t,e)}function hit(t,e){var n;return aL(e,42)?t.c.Mc(e):(n=apt(t,e),Kpt(t,e),n)}function fit(t,e,n){return Mlt(t,e),Prt(t,n),Nnt(t,0),Pnt(t,1),eft(t,!0),Qht(t,!0),t}function dit(t,e){if(t<0)throw qw(new jv(e+" cannot be negative but was: "+t));return t}function git(t,e){var n,i;for(n=0,i=t.gc();n0?zz(PH(n.a,i-1),10):null}function Lit(t,e){var n;n=t.k,t.k=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,2,n,t.k))}function Nit(t,e){var n;n=t.f,t.f=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,8,n,t.f))}function Pit(t,e){var n;n=t.i,t.i=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,7,n,t.i))}function Bit(t,e){var n;n=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,8,n,t.a))}function Fit(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,n,t.b))}function Rit(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,n,t.b))}function jit(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.c))}function $it(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.c))}function zit(t,e){var n;n=t.c,t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,4,n,t.c))}function qit(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,1,n,t.d))}function Hit(t,e){var n;n=t.D,t.D=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,2,n,t.D))}function Uit(t,e){t.r>0&&t.c0&&0!=t.g&&Uit(t.i,e/t.r*t.i.d))}function Git(t,e,n){var i;t.b=e,t.a=n,i=512==(512&t.a)?new $y:new Bl,t.c=TBt(i,t.b,t.a)}function Yit(t,e){return LPt(t.e,e)?(JE(),ltt(e)?new fH(e,t):new PI(e,t)):new RI(e,t)}function Zit(t,e){return Qk(tat(t.a,e,pU(odt(CKt,rK(pU(odt(null==e?0:eut(e),SKt)),15)))))}function Wit(t,e,n){return P9(t,new hg(e),new ot,new fg(n),Sst(Ux(tie,1),LKt,132,0,[]))}function Kit(t){return 0>t?new KA:new OB(null,new y5(t+1,t))}function Xit(t,e){var n;return TX(),n=new ZA(1),ZI(t)?yJ(n,t,e):_St(n.f,t,e),new Zd(n)}function Vit(t,e){var n,i;return(n=t.o+t.p)<(i=e.o+e.p)?-1:n==i?0:1}function Qit(t){var e;return aL(e=vEt(t,(hWt(),pfe)),160)?vgt(zz(e,160)):null}function Jit(t){var e;return(t=n.Math.max(t,2))>(e=kct(t))?(e<<=1)>0?e:DKt:e}function trt(t){switch(sN(3!=t.e),t.e){case 2:return!1;case 0:return!0}return j5(t)}function ert(t,e){var n;return!!aL(e,8)&&(n=zz(e,8),t.a==n.a&&t.b==n.b)}function nrt(t,e,n){var i,r;return r=e>>5,i=31&e,n0(kG(t.n[n][r],pU(vG(i,1))),3)}function irt(t,e){var n,i;for(i=e.vc().Kc();i.Ob();)ykt(t,(n=zz(i.Pb(),42)).cd(),n.dd())}function rrt(t,e){var n;n=new ne,zz(e.b,65),zz(e.b,65),zz(e.b,65),Det(e.a,new Az(t,n,e))}function art(t,e){var n;n=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,21,n,t.b))}function ort(t,e){var n;n=t.d,t.d=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,11,n,t.d))}function srt(t,e){var n;n=t.j,t.j=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,13,n,t.j))}function crt(t,e,n){var i,r,a;for(a=t.a.length-1,r=t.b,i=0;i>>31;0!=i&&(t[n]=i)}function nat(t,e){var n,i;for(TX(),i=new Nw,n=0;n0&&(this.g=this.ri(this.i+(this.i/8|0)+1),t.Qc(this.g))}function Aat(t,e){Eq.call(this,WOe,t,e),this.b=this,this.a=sPt(t.Tg(),iet(this.e.Tg(),this.c))}function Eat(t,e){var n,i;for(xW(e),i=e.vc().Kc();i.Ob();)n=zz(i.Pb(),42),t.zc(n.cd(),n.dd())}function Tat(t,e,n){var i;for(i=n.Kc();i.Ob();)if(!U3(t,e,i.Pb()))return!1;return!0}function Cat(t,e,n,i,r){var a;return n&&(a=Ogt(e.Tg(),t.c),r=n.gh(e,-1-(-1==a?i:a),null,r)),r}function Sat(t,e,n,i,r){var a;return n&&(a=Ogt(e.Tg(),t.c),r=n.ih(e,-1-(-1==a?i:a),null,r)),r}function Iat(t){var e;if(-2==t.b){if(0==t.e)e=-1;else for(e=0;0==t.a[e];e++);t.b=e}return t.b}function Mat(t){switch(t.g){case 2:return kYt(),SIe;case 4:return kYt(),cIe;default:return t}}function Dat(t){switch(t.g){case 1:return kYt(),TIe;case 3:return kYt(),uIe;default:return t}}function Oat(t){var e,n,i;return t.j==(kYt(),uIe)&&(n=TN(e=ZMt(t),cIe),(i=TN(e,SIe))||i&&n)}function Lat(t){var e;return new VR(e=zz(t.e&&t.e(),9),zz(KY(e,e.length),9),e.length)}function Nat(t,e){DAt(e,k1t,1),ngt(uE(new Cg((bE(),new qK(t,!1,!1,new je))))),HTt(e)}function Pat(t,e){return lN(),ZI(t)?h6(t,TB(e)):YI(t)?AG(t,EB(e)):GI(t)?_G(t,AB(e)):t.wd(e)}function Bat(t,e){e.q=t,t.d=n.Math.max(t.d,e.r),t.b+=e.d+(0==t.a.c.length?0:t.c),Wz(t.a,e)}function Fat(t,e){var n,i,r,a;return r=t.c,n=t.c+t.b,a=t.d,i=t.d+t.a,e.a>r&&e.aa&&e.b1||t.Ob())return++t.a,t.g=0,e=t.i,t.Ob(),e;throw qw(new vm)}function Cot(t){var e;return oO(),sT(uve,t)||((e=new so).a=t,gF(uve,t,e)),zz(cK(uve,t),635)}function Sot(t){var e,n,i;return n=0,(i=t)<0&&(i+=DXt,n=SXt),e=SQ(i/MXt),EO(SQ(i-e*MXt),e,n)}function Iot(t){var e,n,i;for(i=0,n=new XA(t.a);n.a>22),r=t.h+e.h+(i>>22),EO(n&CXt,i&CXt,r&SXt)}function hst(t,e){var n,i,r;return n=t.l-e.l,i=t.m-e.m+(n>>22),r=t.h-e.h+(i>>22),EO(n&CXt,i&CXt,r&SXt)}function fst(t){var e;return t<128?(!(e=(EH(),Tee)[t])&&(e=Tee[t]=new Ld(t)),e):new Ld(t)}function dst(t){var e;return aL(t,78)?t:((e=t&&t.__java$exception)||cm(e=new _lt(t)),e)}function gst(t){if(aL(t,186))return zz(t,118);if(t)return null;throw qw(new qv(i8t))}function pst(t,e){if(null==e)return!1;for(;t.a!=t.b;)if(Pht(e,$lt(t)))return!0;return!1}function bst(t){return!!t.a.Ob()||t.a==t.d&&(t.a=new T2(t.e.f),t.a.Ob())}function wst(t,e){var n;return 0!=(n=e.Pc()).length&&(eq(t.c,t.c.length,n),!0)}function mst(t,e,n){var i,r;for(r=e.vc().Kc();r.Ob();)i=zz(r.Pb(),42),t.yc(i.cd(),i.dd(),n);return t}function yst(t,e){var n;for(n=new Wd(t.b);n.a=0,"Negative initial capacity"),mq(e>=0,"Non-positive load factor"),OY(this)}function nct(t,e,n){return!(t>=128)&&QI(t<64?n0(vG(1,t),n):n0(vG(1,t-64),e),0)}function ict(t,e){return!(!t||!e||t==e)&&Mdt(t.b.c,e.b.c+e.b.b)<0&&Mdt(e.b.c,t.b.c+t.b.b)<0}function rct(t){var e,n,i;return n=t.n,i=t.o,e=t.d,new YK(n.a-e.b,n.b-e.d,i.a+(e.b+e.c),i.b+(e.d+e.a))}function act(t){var e,n,i,r;for(i=0,r=(n=t.a).length;i(i=t.gc()))throw qw(new eR(e,i));return t.hi()&&(n=tJ(t,n)),t.Vh(e,n)}function lct(t,e,n){return null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n)),t}function hct(t,e,n){return null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n)),t}function fct(t){var e,n;return Uot(n=new v6,t),hct(n,(Trt(),uoe),t),izt(t,n,e=new Pw),CGt(t,n,e),n}function dct(t){var e,n,i;for(_Bt(),n=P8(CEe,lKt,8,2,0,1),i=0,e=0;e<2;e++)i+=.5,n[e]=dyt(i,t);return n}function gct(t,e){var n,i,r;for(n=!1,i=t.a[e].length,r=0;r>=1);return e}function _ct(t){var e,n;return 32==(n=tMt(t.h))?32==(e=tMt(t.m))?tMt(t.l)+32:e+20-10:n-12}function Act(t){var e;return null==(e=t.a[t.b])?null:(OZ(t.a,t.b,null),t.b=t.b+1&t.a.length-1,e)}function Ect(t){var e,n;return e=t.t-t.k[t.o.p]*t.d+t.j[t.o.p]>t.f,n=t.u+t.e[t.o.p]*t.d>t.f*t.s*t.d,e||n}function Tct(t,e,n){var i,r;return i=new q8(e,n),r=new H,t.b=KPt(t,t.b,i,r),r.b||++t.c,t.b.b=!1,r.d}function Cct(t,e,n){var i,r,a;for(a=0,r=Nht(e,n).Kc();r.Ob();)i=zz(r.Pb(),11),KW(t.c,i,rft(a++))}function Sct(t){var e,n;for(n=new Wd(t.a.b);n.an&&(n=t[e]);return n}function Pct(t,e,n){var i;return _Pt(t,e,i=new Nw,(kYt(),cIe),!0,!1),_Pt(t,n,i,SIe,!1,!1),i}function Bct(t,e,n){var i,r;return r=N2(e,"labels"),WDt((i=new bI(t,n)).a,i.b,r),r}function Fct(t,e,n,i){var r;return(r=vOt(t,e,n,i))||!(r=sft(t,n,i))||zHt(t,e,r)?r:null}function Rct(t,e,n,i){var r;return(r=xOt(t,e,n,i))||!(r=cft(t,n,i))||zHt(t,e,r)?r:null}function jct(t,e){var n;for(n=0;n1||e>=0&&t.b<3)}function Jct(t){var e,n;for(e=new xy,n=lwt(t,0);n.b!=n.d.c;)RP(e,0,new gD(zz(d3(n),8)));return e}function tut(t){var e;for(e=new Wd(t.a.b);e.ai?1:0}function but(t,e){return!!gNt(t,e)&&(JIt(t.b,zz(vEt(e,(hWt(),Zhe)),21),e),Bq(t.a,e),!0)}function wut(t){var e,n;(e=zz(vEt(t,(hWt(),_fe)),10))&&(v9((n=e.c).a,e),0==n.a.c.length&&v9(mW(e).b,n))}function mut(t){return Xne?P8(Une,bVt,572,0,0,1):zz(Vbt(t.a,P8(Une,bVt,572,t.a.c.length,0,1)),842)}function yut(t,e,n,i){return tK(),new lv(Sst(Ux(Hte,1),kKt,42,0,[(Ymt(t,e),new mA(t,e)),(Ymt(n,i),new mA(n,i))]))}function vut(t,e,n){var i;return fit(i=new Oy,e,n),h7((!t.q&&(t.q=new nY(XDe,t,11,10)),t.q),i),i}function xut(t){var e,n,i,r;for(n=(r=hT(DMe,t)).length,i=P8(Vee,lKt,2,n,6,1),e=0;e=t.b.c.length||(Aut(t,2*e+1),(n=2*e+2)=0&&t[i]===e[i];i--);return i<0?0:uT(n0(t[i],ZXt),n0(e[i],ZXt))?-1:1}function Cut(t,e){var n,i;for(i=lwt(t,0);i.b!=i.d.c;)(n=zz(d3(i),214)).e.length>0&&(e.td(n),n.i&&mft(n))}function Sut(t,e){var n,i;return i=zz(xot(t.a,4),126),n=P8(pDe,r7t,415,e,0,1),null!=i&&sqt(i,0,n,0,i.length),n}function Iut(t,e){var n;return n=new aFt(0!=(256&t.f),t.i,t.a,t.d,0!=(16&t.f),t.j,t.g,e),null!=t.e||(n.c=t),n}function Mut(t,e){var n;for(n=t.Zb().Cc().Kc();n.Ob();)if(zz(n.Pb(),14).Hc(e))return!0;return!1}function Dut(t,e,n,i,r){var a,o;for(o=n;o<=r;o++)for(a=e;a<=i;a++)if(yyt(t,a,o))return!0;return!1}function Out(t,e,n){var i,r,a,o;for(xW(n),o=!1,a=t.Zc(e),r=n.Kc();r.Ob();)i=r.Pb(),a.Rb(i),o=!0;return o}function Lut(t,e){var n;return t===e||!!aL(e,83)&&(n=zz(e,83),YTt(fG(t),n.vc()))}function Nut(t,e,n){var i,r;for(r=n.Kc();r.Ob();)if(i=zz(r.Pb(),42),t.re(e,i.dd()))return!0;return!1}function Put(t,e,n){return t.d[e.p][n.p]||(rmt(t,e,n),t.d[e.p][n.p]=!0,t.d[n.p][e.p]=!0),t.a[e.p][n.p]}function But(t,e){if(!t.ai()&&null==e)throw qw(new jv("The 'no null' constraint is violated"));return e}function Fut(t,e){null==t.D&&null!=t.B&&(t.D=t.B,t.B=null),Hit(t,null==e?null:(xW(e),e)),t.C&&t.yk(null)}function Rut(t,e){return!(!t||t==e||!LP(e,(hWt(),rfe)))&&zz(vEt(e,(hWt(),rfe)),10)!=t}function jut(t){switch(t.i){case 2:return!0;case 1:return!1;case-1:++t.c;default:return t.pl()}}function $ut(t){switch(t.i){case-2:return!0;case-1:return!1;case 1:--t.c;default:return t.ql()}}function zut(t){jQ.call(this,"The given string does not match the expected format for individual spacings.",t)}function qut(){qut=M,sMe=new aI("ELK",0),cMe=new aI("JSON",1),oMe=new aI("DOT",2),uMe=new aI("SVG",3)}function Hut(){Hut=M,uke=new mS(VJt,0),lke=new mS("RADIAL_COMPACTION",1),hke=new mS("WEDGE_COMPACTION",2)}function Uut(){Uut=M,Gne=new wT("CONCURRENT",0),Yne=new wT("IDENTITY_FINISH",1),Zne=new wT("UNORDERED",2)}function Gut(){Gut=M,gE(),cae=new OM(qQt,uae=rae),sae=new sw(HQt),lae=new sw(UQt),hae=new sw(GQt)}function Yut(){Yut=M,fue=new ki,due=new _i,hue=new Ai,lue=new Ei,xW(new Ti),uue=new B}function Zut(){Zut=M,nye=new WC("CONSERVATIVE",0),iye=new WC("CONSERVATIVE_SOFT",1),rye=new WC("SLOPPY",2)}function Wut(){Wut=M,pSe=new WD(15),gSe=new ZD((lWt(),ZTe),pSe),bSe=bCe,lSe=oTe,hSe=RTe,dSe=zTe,fSe=$Te}function Kut(t,e,n){var i,r;for(i=new VA,r=lwt(n,0);r.b!=r.d.c;)Bq(i,new gD(zz(d3(r),8)));Out(t,e,i)}function Xut(t){var e,n,i;for(e=0,i=P8(CEe,lKt,8,t.b,0,1),n=lwt(t,0);n.b!=n.d.c;)i[e++]=zz(d3(n),8);return i}function Vut(t){var e;return!t.a&&(t.a=new nY(WDe,t,9,5)),0!=(e=t.a).i?qE(zz(Ket(e,0),678)):null}function Qut(t,e){var n;return n=adt(t,e),uT(r0(t,e),0)|VI(r0(t,n),0)?n:adt(gKt,r0(kG(n,63),1))}function Jut(t,e){var n;n=null!=vwt((Rgt(),Kwe))&&null!=e.wg()?Uv(EB(e.wg()))/Uv(EB(vwt(Kwe))):1,KW(t.b,e,n)}function tlt(t,e){var n,i;return(n=zz(t.d.Bc(e),14))?((i=t.e.hc()).Gc(n),t.e.d-=n.gc(),n.$b(),i):null}function elt(t,e){var n,i;if(0!=(i=t.c[e]))for(t.c[e]=0,t.d-=i,n=e+1;n0)return RG(e-1,t.a.c.length),u6(t.a,e-1);throw qw(new ym)}function ilt(t,e,n){if(e<0)throw qw(new Dv(e5t+e));ee)throw qw(new jv(vVt+t+xVt+e));if(t<0||e>n)throw qw(new Ax(vVt+t+kVt+e+hVt+n))}function alt(t){if(!t.a||0==(8&t.a.i))throw qw(new $v("Enumeration class expected for layout option "+t.f))}function olt(t){var e;++t.j,0==t.i?t.g=null:t.i$3t?t-i>$3t:i-t>$3t)}function ylt(t,e){return t?e&&!t.j||aL(t,124)&&0==zz(t,124).a.b?0:t.Re():0}function vlt(t,e){return t?e&&!t.k||aL(t,124)&&0==zz(t,124).a.a?0:t.Se():0}function xlt(t){return DBt(),t<0?-1!=t?new Rwt(-1,-t):Qee:t<=10?tne[SQ(t)]:new Rwt(1,t)}function klt(t){throw tct(),qw(new bv("Unexpected typeof result '"+t+"'; please report this bug to the GWT team"))}function _lt(t){lx(),KO(this),kX(this),this.e=t,IPt(this,t),this.g=null==t?YWt:qdt(t),this.a="",this.b=t,this.a=""}function Alt(){this.a=new es,this.f=new pb(this),this.b=new bb(this),this.i=new wb(this),this.e=new mb(this)}function Elt(){av.call(this,new H8(net(16))),dit(2,uKt),this.b=2,this.a=new qW(null,null,0,null),im(this.a,this.a)}function Tlt(){Tlt=M,ame=new RC("DUMMY_NODE_OVER",0),ome=new RC("DUMMY_NODE_UNDER",1),sme=new RC("EQUAL",2)}function Clt(){Clt=M,Zoe=qQ(Sst(Ux(WCe,1),LKt,103,0,[(zht(),jCe),$Ce])),Woe=qQ(Sst(Ux(WCe,1),LKt,103,0,[qCe,RCe]))}function Slt(t){return(kYt(),vIe).Hc(t.j)?Uv(EB(vEt(t,(hWt(),Lfe)))):Oct(Sst(Ux(CEe,1),lKt,8,0,[t.i.n,t.n,t.a])).b}function Ilt(t){var e,n;for(e=t.b.a.a.ec().Kc();e.Ob();)n=new VOt(zz(e.Pb(),561),t.e,t.f),Wz(t.g,n)}function Mlt(t,e){var n,i;n=t.nk(e,null),i=null,e&&(i_(),ont(i=new Rw,t.r)),(n=HAt(t,i,n))&&n.Fi()}function Dlt(t,e){var n,i;for(i=0!=HOt(t.d,1),n=!0;n;)n=!1,n=e.c.Tf(e.e,i),n|=FNt(t,e,i,!1),i=!i;Lrt(t)}function Olt(t,e){var n,i,r;return i=!1,n=e.q.d,e.dr&&(s_t(e.q,r),i=n!=e.q.d)),i}function Llt(t,e){var i,r,a,o,s;return o=e.i,s=e.j,r=o-(i=t.f).i,a=s-i.j,n.Math.sqrt(r*r+a*a)}function Nlt(t,e){var n;return(n=Qpt(t))||(!OMe&&(OMe=new Mc),Rqt(),h7((n=new Sw(QCt(e))).Vk(),t)),n}function Plt(t,e){var n,i;return(n=zz(t.c.Bc(e),14))?((i=t.hc()).Gc(n),t.d-=n.gc(),n.$b(),t.mc(i)):t.jc()}function Blt(t,e){var n;for(n=0;n=t.c.b:t.a<=t.c.b))throw qw(new vm);return e=t.a,t.a+=t.c.c,++t.b,rft(e)}function qlt(t){var e;return e=new fet(t),i2(t.a,use,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[e]))),e.d&&Wz(e.f,e.d),e.f}function Hlt(t){var e;return Uot(e=new MO(t.a),t),hct(e,(hWt(),pfe),t),e.o.a=t.g,e.o.b=t.f,e.n.a=t.i,e.n.b=t.j,e}function Ult(t,e,n,i){var r,a;for(a=t.Kc();a.Ob();)(r=zz(a.Pb(),70)).n.a=e.a+(i.a-r.o.a)/2,r.n.b=e.b,e.b+=r.o.b+n}function Glt(t,e,n){var i;for(i=e.a.a.ec().Kc();i.Ob();)if(aV(t,zz(i.Pb(),57),n))return!0;return!1}function Ylt(t){var e,n;for(n=new Wd(t.r);n.a=0?e:-e;i>0;)i%2==0?(n*=n,i=i/2|0):(r*=n,i-=1);return e<0?1/r:r}function rht(t,e){var n,i,r;for(r=1,n=t,i=e>=0?e:-e;i>0;)i%2==0?(n*=n,i=i/2|0):(r*=n,i-=1);return e<0?1/r:r}function aht(t){var e,n,i,r;if(null!=t)for(n=0;n0&&but(zz(PH(t.a,t.a.c.length-1),570),e)||Wz(t.a,new w5(e))}function yht(t){var e,n;Uj(),e=t.d.c-t.e.c,Det((n=zz(t.g,145)).b,new kp(e)),Det(n.c,new _p(e)),n5(n.i,new Ap(e))}function vht(t){var e;return(e=new Sx).a+="VerticalSegment ",sM(e,t.e),e.a+=" ",cM(e,QL(new yx,new Wd(t.k))),e.a}function xht(t){var e;return(e=zz(ftt(t.c.c,""),229))||(e=new YJ(kk(xk(new ms,""),"Other")),Jbt(t.c.c,"",e)),e}function kht(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (name: ",aM(e,t.zb),e.a+=")",e.a)}function _ht(t,e,n){var i,r;return r=t.sb,t.sb=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,4,r,e),n?n.Ei(i):n=i),n}function Aht(t,e){var n,i;for(n=0,i=sdt(t,e).Kc();i.Ob();)n+=null!=vEt(zz(i.Pb(),11),(hWt(),_fe))?1:0;return n}function Eht(t,e,n){var i,r,a;for(i=0,a=lwt(t,0);a.b!=a.d.c&&!((r=Uv(EB(d3(a))))>n);)r>=e&&++i;return i}function Tht(t,e,n){var i;return i=new N9(t.e,3,13,null,e.c||(wWt(),fOe),cmt(t,e),!1),n?n.Ei(i):n=i,n}function Cht(t,e,n){var i;return i=new N9(t.e,4,13,e.c||(wWt(),fOe),null,cmt(t,e),!1),n?n.Ei(i):n=i,n}function Sht(t,e,n){var i,r;return r=t.r,t.r=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,8,r,t.r),n?n.Ei(i):n=i),n}function Iht(t,e){var n,i;return!(i=(n=zz(e,676)).vk())&&n.wk(i=aL(e,88)?new OI(t,zz(e,26)):new j0(t,zz(e,148))),i}function Mht(t,e,n){var i;t.qi(t.i+1),i=t.oi(e,n),e!=t.i&&sqt(t.g,e,t.g,e+1,t.i-e),OZ(t.g,e,i),++t.i,t.bi(e,n),t.ci()}function Dht(t,e){var n;return e.a&&(n=e.a.a.length,t.a?cM(t.a,t.b):t.a=new fN(t.d),U0(t.a,e.a,e.d.length,n)),t}function Oht(t,e){var n,i,r;if(e.vi(t.a),null!=(r=zz(xot(t.a,8),1936)))for(n=0,i=r.length;nn)throw qw(new Dv(vVt+t+kVt+e+", size: "+n));if(t>e)throw qw(new jv(vVt+t+xVt+e))}function Uht(t,e,n){if(e<0)oIt(t,n);else{if(!n.Ij())throw qw(new jv(a6t+n.ne()+o6t));zz(n,66).Nj().Vj(t,t.yh(),e)}}function Ght(t,e,n,i,r,a,o,s){var c;for(c=n;a=i||e=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t>=48&&t<=57?t-48:0}function Xht(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (source: ",aM(e,t.d),e.a+=")",e.a)}function Vht(t,e,n){var i,r;return r=t.a,t.a=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,5,r,t.a),n?j_t(n,i):n=i),n}function Qht(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,2,n,e))}function Jht(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,8,n,e))}function tft(t,e){var n;n=0!=(256&t.Bb),e?t.Bb|=256:t.Bb&=-257,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,8,n,e))}function eft(t,e){var n;n=0!=(512&t.Bb),e?t.Bb|=512:t.Bb&=-513,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,3,n,e))}function nft(t,e){var n;n=0!=(512&t.Bb),e?t.Bb|=512:t.Bb&=-513,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,9,n,e))}function ift(t,e){var n;return-1==t.b&&t.a&&(n=t.a.Gj(),t.b=n?t.c.Xg(t.a.aj(),n):Ogt(t.c.Tg(),t.a)),t.c.Og(t.b,e)}function rft(t){var e,n;return t>-129&&t<128?(e=t+128,!(n=(eH(),Mee)[e])&&(n=Mee[e]=new Pd(t)),n):new Pd(t)}function aft(t){var e,n;return t>-129&&t<128?(e=t+128,!(n=(AH(),jee)[e])&&(n=jee[e]=new Fd(t)),n):new Fd(t)}function oft(t){var e;return t.k==(cTt(),Ese)&&((e=zz(vEt(t,(hWt(),Xhe)),61))==(kYt(),uIe)||e==TIe)}function sft(t,e,n){var i,r;return(r=LOt(t.b,e))&&(i=zz(Pqt($9(t,r),""),26))?vOt(t,i,e,n):null}function cft(t,e,n){var i,r;return(r=LOt(t.b,e))&&(i=zz(Pqt($9(t,r),""),26))?xOt(t,i,e,n):null}function uft(t,e){var n,i;for(i=new DL(t);i.e!=i.i.gc();)if(n=zz(kwt(i),138),UI(e)===UI(n))return!0;return!1}function lft(t,e,n){var i;if(e>(i=t.gc()))throw qw(new eR(e,i));if(t.hi()&&t.Hc(n))throw qw(new jv(s8t));t.Xh(e,n)}function hft(t,e){var n;if(null==(n=lnt(t.i,e)))throw qw(new nx("Node did not exist in input."));return jat(e,n),null}function fft(t,e){var n;if(aL(n=PNt(t,e),322))return zz(n,34);throw qw(new jv(a6t+e+"' is not a valid attribute"))}function dft(t,e,n){var i,r;for(r=aL(e,99)&&0!=(zz(e,18).Bb&qXt)?new PM(e,t):new Oot(e,t),i=0;ie?1:t==e?0==t?Sft(1/t,1/e):0:isNaN(t)?isNaN(e)?0:1:-1}function Ift(t,e){DAt(e,"Sort end labels",1),QA(DK(gtt(new FH(null,new g1(t.b,16)),new gn),new pn),new bn),HTt(e)}function Mft(t,e,n){var i,r;return t.ej()?(r=t.fj(),i=QIt(t,e,n),t.$i(t.Zi(7,rft(n),i,e,r)),i):QIt(t,e,n)}function Dft(t,e){var n,i,r;null==t.d?(++t.e,--t.f):(r=e.cd(),N6(t,i=((n=e.Sh())&FWt)%t.d.length,OOt(t,i,n,r)))}function Oft(t,e){var n;n=0!=(t.Bb&k6t),e?t.Bb|=k6t:t.Bb&=-1025,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,10,n,e))}function Lft(t,e){var n;n=0!=(t.Bb&$Xt),e?t.Bb|=$Xt:t.Bb&=-4097,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,12,n,e))}function Nft(t,e){var n;n=0!=(t.Bb&E7t),e?t.Bb|=E7t:t.Bb&=-8193,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,15,n,e))}function Pft(t,e){var n;n=0!=(t.Bb&T7t),e?t.Bb|=T7t:t.Bb&=-2049,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new e6(t,1,11,n,e))}function Bft(t,e){var n;return 0!=(n=Sft(t.b.c,e.b.c))||0!=(n=Sft(t.a.a,e.a.a))?n:Sft(t.a.b,e.a.b)}function Fft(t,e){var n;if(null==(n=FZ(t.k,e)))throw qw(new nx("Port did not exist in input."));return jat(e,n),null}function Rft(t){var e,n;for(n=GOt(Zet(t)).Kc();n.Ob();)if(Pjt(t,e=TB(n.Pb())))return v4((YE(),FDe),e);return null}function jft(t,e){var n,i,r,a,o;for(o=sPt(t.e.Tg(),e),a=0,n=zz(t.g,119),r=0;r>10)+HXt&VKt,e[1]=56320+(1023&t)&VKt,qpt(e,0,e.length)}function Kft(t){var e;return(e=zz(vEt(t,(HZt(),Ype)),103))==(zht(),zCe)?Uv(EB(vEt(t,_pe)))>=1?$Ce:RCe:e}function Xft(t){switch(zz(vEt(t,(HZt(),Jpe)),218).g){case 1:return new ia;case 3:return new ca;default:return new na}}function Vft(t){if(t.c)Vft(t.c);else if(t.d)throw qw(new $v("Stream already terminated, can't be modified or used"))}function Qft(t){var e;return 0!=(64&t.Db)?SOt(t):((e=new hN(SOt(t))).a+=" (identifier: ",aM(e,t.k),e.a+=")",e.a)}function Jft(t,e,n){var i;return e_(),_nt(i=new ac,e),Ant(i,n),t&&h7((!t.a&&(t.a=new OL(PMe,t,5)),t.a),i),i}function tdt(t,e,n,i){var r,a;return xW(i),xW(n),null==(a=null==(r=t.xc(e))?n:JA(zz(r,15),zz(n,14)))?t.Bc(e):t.zc(e,a),a}function edt(t){var e,n,i,r;return urt(n=new VR(e=zz(Kk((r=(i=t.gm).f)==Zte?i:r),9),zz(TF(e,e.length),9),0),t),n}function ndt(t,e,n){var i,r;for(r=t.a.ec().Kc();r.Ob();)if(i=zz(r.Pb(),10),ust(n,zz(PH(e,i.p),14)))return i;return null}function idt(t,e,n){try{$ct(t,e,n)}catch(t){throw aL(t=dst(t),597)?qw(new b5(t)):qw(t)}return e}function rdt(t,e){var n;return QM(t)&&QM(e)&&LXt<(n=t-e)&&n>1,t.k=i-1>>1}function ldt(){var t,e,i;xAt(),i=Lne+++Date.now(),t=SQ(n.Math.floor(i*cVt))&lVt,e=SQ(i-t*uVt),this.a=1502^t,this.b=e^sVt}function hdt(t){var e,n;for(e=new Nw,n=new Wd(t.j);n.a34028234663852886e22?RXt:e<-34028234663852886e22?jXt:e}function mdt(t){return t=((t=((t-=t>>1&1431655765)>>2&858993459)+(858993459&t))>>4)+t&252645135,t+=t>>8,63&(t+=t>>16)}function ydt(t){var e,n,i;for(e=new lF(t.Hd().gc()),i=0,n=L7(t.Hd().Kc());n.Ob();)kJ(e,n.Pb(),rft(i++));return PTt(e.a)}function vdt(t,e){var n,i,r;for(r=new Pw,i=e.vc().Kc();i.Ob();)KW(r,(n=zz(i.Pb(),42)).cd(),dot(t,zz(n.dd(),15)));return r}function xdt(t,e){0==t.n.c.length&&Wz(t.n,new FQ(t.s,t.t,t.i)),Wz(t.b,e),lyt(zz(PH(t.n,t.n.c.length-1),211),e),q$t(t,e)}function kdt(t){return t.c==t.b.b&&t.i==t.g.b||(t.a.c=P8(Ote,HWt,1,0,5,1),wst(t.a,t.b),wst(t.a,t.g),t.c=t.b.b,t.i=t.g.b),t.a}function _dt(t,e){var n,i;for(i=0,n=zz(e.Kb(t),20).Kc();n.Ob();)Hv(AB(vEt(zz(n.Pb(),17),(hWt(),Sfe))))||++i;return i}function Adt(t,e){var i,r;r=Uv(EB(ipt(h2(e),(HZt(),vwe)))),zxt(e,i=n.Math.max(0,r/2-.5),1),Wz(t,new fC(e,i))}function Edt(){Edt=M,Hfe=new zC(VJt,0),jfe=new zC("FIRST",1),$fe=new zC(I1t,2),zfe=new zC("LAST",3),qfe=new zC(M1t,4)}function Tdt(){Tdt=M,JCe=new $S(hQt,0),VCe=new $S("POLYLINE",1),XCe=new $S("ORTHOGONAL",2),QCe=new $S("SPLINES",3)}function Cdt(){Cdt=M,Jke=new xS("ASPECT_RATIO_DRIVEN",0),t_e=new xS("MAX_SCALE_DRIVEN",1),Qke=new xS("AREA_DRIVEN",2)}function Sdt(){Sdt=M,q_e=new _S("P1_STRUCTURE",0),H_e=new _S("P2_PROCESSING_ORDER",1),U_e=new _S("P3_EXECUTION",2)}function Idt(){Idt=M,nke=new bS("OVERLAP_REMOVAL",0),tke=new bS("COMPACTION",1),eke=new bS("GRAPH_SIZE_CALCULATION",2)}function Mdt(t,e){return lO(),ait(jKt),n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e))}function Ddt(t,e){var n,i;for(n=lwt(t,0);n.b!=n.d.c;){if((i=Gv(EB(d3(n))))==e)return;if(i>e){Y0(n);break}}tZ(n,e)}function Odt(t,e){var n,i,r,a,o;if(n=e.f,Jbt(t.c.d,n,e),null!=e.g)for(a=0,o=(r=e.g).length;ae&&i.ue(t[a-1],t[a])>0;--a)o=t[a],OZ(t,a,t[a-1]),OZ(t,a-1,o)}function Ndt(t,e,n,i){if(e<0)ELt(t,n,i);else{if(!n.Ij())throw qw(new jv(a6t+n.ne()+o6t));zz(n,66).Nj().Tj(t,t.yh(),e,i)}}function Pdt(t,e){if(e==t.d)return t.e;if(e==t.e)return t.d;throw qw(new jv("Node "+e+" not part of edge "+t))}function Bdt(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function Fdt(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function Rdt(t,e,n,i){switch(e){case 3:return t.f;case 4:return t.g;case 5:return t.i;case 6:return t.j}return $ht(t,e,n,i)}function jdt(t){return t.k==(cTt(),Sse)&&c5(new FH(null,new GY(new cG(JL(ddt(t).a.Kc(),new l)))),new Hr)}function $dt(t){return null==t.e?t:(!t.c&&(t.c=new aFt(0!=(256&t.f),t.i,t.a,t.d,0!=(16&t.f),t.j,t.g,null)),t.c)}function zdt(t,e){return t.h==IXt&&0==t.m&&0==t.l?(e&&(dee=EO(0,0,0)),WM((Z9(),bee))):(e&&(dee=EO(t.l,t.m,t.h)),EO(0,0,0))}function qdt(t){return Array.isArray(t)&&t.im===I?t_(nut(t))+"@"+(eut(t)>>>0).toString(16):t.toString()}function Hdt(t){var e;this.a=new VR(e=zz(t.e&&t.e(),9),zz(TF(e,e.length),9),0),this.b=P8(Ote,HWt,1,this.a.a.length,5,1)}function Udt(t){var e,n,i;for(this.a=new hD,i=new Wd(t);i.a0&&(d1(e-1,t.length),58==t.charCodeAt(e-1))&&!Wdt(t,LDe,NDe)}function Wdt(t,e,n){var i,r;for(i=0,r=t.length;i=r)return e.c+n;return e.c+e.b.gc()}function Vdt(t,e){var n,i,r,a;for(pB(),r=e,G7(i=q7(t),0,i.length,r),n=0;n0&&(i+=r,++n);return n>1&&(i+=t.d*(n-1)),i}function Jdt(t){var e,n,i;for((i=new Tx).a+="[",e=0,n=t.gc();e0&&this.b>0&&VH(this.c,this.b,this.a)}function cgt(t){Rgt(),this.c=s6(Sst(Ux(rEe,1),HWt,831,0,[Wwe])),this.b=new Pw,this.a=t,KW(this.b,Kwe,1),Det(Xwe,new Cb(this))}function ugt(t,e){var n;return t.d?lY(t.b,e)?zz(FZ(t.b,e),51):(n=e.Kf(),KW(t.b,e,n),n):e.Kf()}function lgt(t,e){var n;return UI(t)===UI(e)||!!aL(e,91)&&(n=zz(e,91),t.e==n.e&&t.d==n.d&&_4(t,n.a))}function hgt(t){switch(kYt(),t.g){case 4:return uIe;case 1:return cIe;case 3:return TIe;case 2:return SIe;default:return CIe}}function fgt(t,e){switch(e){case 3:return 0!=t.f;case 4:return 0!=t.g;case 5:return 0!=t.i;case 6:return 0!=t.j}return Aot(t,e)}function dgt(t){switch(t.g){case 0:return new Go;case 1:return new Yo;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function ggt(t){switch(t.g){case 0:return new Uo;case 1:return new Zo;default:throw qw(new jv(T1t+(null!=t.f?t.f:""+t.g)))}}function pgt(t){switch(t.g){case 0:return new Ky;case 1:return new vy;default:throw qw(new jv(P4t+(null!=t.f?t.f:""+t.g)))}}function bgt(t){switch(t.g){case 1:return new Ro;case 2:return new bB;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function wgt(t){var e,n;if(t.b)return t.b;for(n=Xne?null:t.d;n;){if(e=Xne?null:n.b)return e;n=Xne?null:n.d}return fE(),qne}function mgt(t){var e,n;return 0==t.e?0:(e=t.d<<5,n=t.a[t.d-1],t.e<0&&Iat(t)==t.d-1&&(--n,n|=0),e-=tMt(n))}function ygt(t){var e,n,i;return t>5),15,1))[n]=1<3;)r*=10,--a;t=(t+(r>>1))/r|0}return i.i=t,!0}function Agt(t){return Clt(),lN(),!!(Fdt(zz(t.a,81).j,zz(t.b,103))||0!=zz(t.a,81).d.e&&Fdt(zz(t.a,81).j,zz(t.b,103)))}function Egt(t){P7(),zz(t.We((lWt(),HTe)),174).Hc((ejt(),KIe))&&(zz(t.We(hCe),174).Fc((dIt(),aIe)),zz(t.We(HTe),174).Mc(KIe))}function Tgt(t,e){var n;if(e){for(n=0;n=0;--i)for(e=n[i],r=0;r>1,this.k=e-1>>1}function Ggt(t,e){DAt(e,"End label post-processing",1),QA(DK(gtt(new FH(null,new g1(t.b,16)),new on),new sn),new cn),HTt(e)}function Ygt(t,e,n){var i;return i=Uv(t.p[e.i.p])+Uv(t.d[e.i.p])+e.n.b+e.a.b,Uv(t.p[n.i.p])+Uv(t.d[n.i.p])+n.n.b+n.a.b-i}function Zgt(t,e,n){var i,r;for(i=n0(n,ZXt),r=0;0!=Xlt(i,0)&&r0&&(d1(0,e.length),43==e.charCodeAt(0))?e.substr(1):e)}function Xgt(t){var e;return null==t?null:new OD((e=zzt(t,!0)).length>0&&(d1(0,e.length),43==e.charCodeAt(0))?e.substr(1):e)}function Vgt(t,e){return t.i>0&&(e.lengtht.i&&OZ(e,t.i,null),e}function Qgt(t,e,n){var i,r,a;return t.ej()?(i=t.i,a=t.fj(),Mht(t,i,e),r=t.Zi(3,null,e,i,a),n?n.Ei(r):n=r):Mht(t,t.i,e),n}function Jgt(t,e,n){var i,r;return i=new N9(t.e,4,10,aL(r=e.c,88)?zz(r,26):(wWt(),pOe),null,cmt(t,e),!1),n?n.Ei(i):n=i,n}function tpt(t,e,n){var i,r;return i=new N9(t.e,3,10,null,aL(r=e.c,88)?zz(r,26):(wWt(),pOe),cmt(t,e),!1),n?n.Ei(i):n=i,n}function ept(t){var e;return HB(),e=new gD(zz(t.e.We((lWt(),zTe)),8)),t.B.Hc((ejt(),UIe))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function npt(t){return gmt(),(t.q?t.q:(TX(),TX(),hne))._b((HZt(),Fbe))?zz(vEt(t,Fbe),197):zz(vEt(mW(t),Rbe),197)}function ipt(t,e){var n,i;return i=null,LP(t,(HZt(),Ewe))&&(n=zz(vEt(t,Ewe),94)).Xe(e)&&(i=n.We(e)),null==i&&(i=vEt(mW(t),e)),i}function rpt(t,e){var n,i,r;return!!aL(e,42)&&(i=(n=zz(e,42)).cd(),gW(r=dht(t.Rc(),i),n.dd())&&(null!=r||t.Rc()._b(i)))}function apt(t,e){var n;return t.f>0&&(t.qj(),-1!=OOt(t,((n=null==e?0:eut(e))&FWt)%t.d.length,n,e))}function opt(t,e){var n,i;return t.f>0&&(t.qj(),n=sMt(t,((i=null==e?0:eut(e))&FWt)%t.d.length,i,e))?n.dd():null}function spt(t,e){var n,i,r,a;for(a=sPt(t.e.Tg(),e),n=zz(t.g,119),r=0;r1?i0(vG(e.a[1],32),n0(e.a[0],ZXt)):n0(e.a[0],ZXt),k2(odt(e.e,n))))}function dpt(t,e){var n;return QM(t)&&QM(e)&&LXt<(n=t%e)&&n>5,e&=31,r=t.d+n+(0==e?0:1),BAt(i=P8(DNe,hXt,25,r,15,1),t.a,n,e),Z0(a=new fY(t.e,r,i)),a}function Ept(t,e,n){var i,r;i=zz(TQ(iNe,e),117),r=zz(TQ(rNe,e),117),n?(yJ(iNe,t,i),yJ(rNe,t,r)):(yJ(rNe,t,i),yJ(iNe,t,r))}function Tpt(t,e,n){var i,r,a;for(r=null,a=t.b;a;){if(i=t.a.ue(e,a.d),n&&0==i)return a;i>=0?a=a.a[1]:(r=a,a=a.a[0])}return r}function Cpt(t,e,n){var i,r,a;for(r=null,a=t.b;a;){if(i=t.a.ue(e,a.d),n&&0==i)return a;i<=0?a=a.a[0]:(r=a,a=a.a[1])}return r}function Spt(t,e,n,i){var r,a,o;return r=!1,NUt(t.f,n,i)&&(Bbt(t.f,t.a[e][n],t.a[e][i]),o=(a=t.a[e])[i],a[i]=a[n],a[n]=o,r=!0),r}function Ipt(t,e,n,i,r){var a,o,s;for(o=r;e.b!=e.c;)a=zz(pY(e),10),s=zz(sdt(a,i).Xb(0),11),t.d[s.p]=o++,n.c[n.c.length]=s;return o}function Mpt(t,e,i){var r,a,o,s,c;return s=t.k,c=e.k,a=EB(ipt(t,r=i[s.g][c.g])),o=EB(ipt(e,r)),n.Math.max((xW(a),a),(xW(o),o))}function Dpt(t,e,n){var i,r,a,o;for(i=n/t.c.length,r=0,o=new Wd(t);o.a2e3&&(see=t,cee=n.setTimeout(X_,10)),0==oee++&&(Mtt((ux(),nee)),!0)}function Ppt(t,e){var n;for(n=new cG(JL(ddt(t).a.Kc(),new l));bDt(n);)if(zz(Y5(n),17).d.i.c==e)return!1;return!0}function Bpt(t,e){var n;if(aL(e,245)){n=zz(e,245);try{return 0==t.vd(n)}catch(t){if(!aL(t=dst(t),205))throw qw(t)}}return!1}function Fpt(){return Error.stackTraceLimit>0?(n.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function Rpt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))>0}function jpt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))<0}function $pt(t,e){return lO(),lO(),ait(jKt),(n.Math.abs(t-e)<=jKt||t==e||isNaN(t)&&isNaN(e)?0:te?1:GM(isNaN(t),isNaN(e)))<=0}function zpt(t,e){for(var n=0;!e[n]||""==e[n];)n++;for(var i=e[n++];nGXt)return n.fh();if((i=n.Zg())||n==t)break}return i}function Jpt(t){return lJ(),aL(t,156)?zz(FZ(lDe,vne),288).vg(t):lY(lDe,nut(t))?zz(FZ(lDe,nut(t)),288).vg(t):null}function tbt(t){if(vbt(s5t,t))return lN(),yee;if(vbt(c5t,t))return lN(),mee;throw qw(new jv("Expecting true or false"))}function ebt(t,e){if(e.c==t)return e.d;if(e.d==t)return e.c;throw qw(new jv("Input edge is not connected to the input port."))}function nbt(t,e){return t.e>e.e?1:t.ee.d?t.e:t.d=48&&t<48+n.Math.min(10,10)?t-48:t>=97&&t<97?t-97+10:t>=65&&t<65?t-65+10:-1}function rbt(t,e){var n;return UI(e)===UI(t)||!!aL(e,21)&&(n=zz(e,21)).gc()==t.gc()&&t.Ic(n)}function abt(t,e){var n,i,r;return i=t.a.length-1,n=e-t.b&i,r=t.c-e&i,_P(n<(t.c-t.b&i)),n>=r?(slt(t,e),-1):(clt(t,e),1)}function obt(t,e){var n,i;for(d1(e,t.length),n=t.charCodeAt(e),i=e+1;ie.e?1:t.fe.f?1:eut(t)-eut(e)}function vbt(t,e){return xW(t),null!=e&&(!!yR(t,e)||t.length==e.length&&yR(t.toLowerCase(),e.toLowerCase()))}function xbt(t,e){var n,i,r,a;for(i=0,r=e.gc();i0&&Xlt(t,128)<0?(e=pU(t)+128,!(n=(_H(),Lee)[e])&&(n=Lee[e]=new Bd(t)),n):new Bd(t)}function Abt(t,e){var n,i;return(n=e.Hh(t.a))&&null!=(i=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),n8t)))?i:e.ne()}function Ebt(t,e){var n,i;return(n=e.Hh(t.a))&&null!=(i=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),n8t)))?i:e.ne()}function Tbt(t,e){var n,i;for(HJ(),i=new cG(JL(hdt(t).a.Kc(),new l));bDt(i);)if((n=zz(Y5(i),17)).d.i==e||n.c.i==e)return n;return null}function Cbt(t,e,n){this.c=t,this.f=new Nw,this.e=new Uk,this.j=new TH,this.n=new TH,this.b=e,this.g=new YK(e.c,e.d,e.b,e.a),this.a=n}function Sbt(t){var e,n,i,r;for(this.a=new hD,this.d=new Fm,this.e=0,i=0,r=(n=t).length;i0)}function Pbt(t){var e;UI(tOt(t,(lWt(),_Te)))===UI((cht(),mSe))&&(QQ(t)?(e=zz(tOt(QQ(t),_Te),334),Qwt(t,_Te,e)):Qwt(t,_Te,ySe))}function Bbt(t,e,n){var i,r;fEt(t.e,e,n,(kYt(),SIe)),fEt(t.i,e,n,cIe),t.a&&(r=zz(vEt(e,(hWt(),pfe)),11),i=zz(vEt(n,pfe),11),x0(t.g,r,i))}function Fbt(t,e,n){var i,r,a;i=e.c.p,a=e.p,t.b[i][a]=new BV(t,e),n&&(t.a[i][a]=new zp(e),(r=zz(vEt(e,(hWt(),rfe)),10))&&JIt(t.d,r,e))}function Rbt(t,e){var n,i,r;if(Wz(Tae,t),e.Fc(t),n=zz(FZ(Eae,t),21))for(r=n.Kc();r.Ob();)i=zz(r.Pb(),33),-1!=_9(Tae,i,0)||Rbt(i,e)}function jbt(t,e,n){var i;(Wne?(wgt(t),1):Kne||Qne?(fE(),1):Vne&&(fE(),0))&&((i=new ij(e)).b=n,sTt(t,i))}function $bt(t,e){var n;n=!t.A.Hc((vpt(),jIe))||t.q==(V_t(),ZSe),t.u.Hc((dIt(),nIe))?n?PYt(t,e):sYt(t,e):t.u.Hc(rIe)&&(n?OGt(t,e):JYt(t,e))}function zbt(t,e){var n,i;++t.j,null!=e&&uMt(e,n=aL(i=t.a.Cb,97)?zz(i,97).Jg():null)?hbt(t.a,4,n):hbt(t.a,4,zz(e,126))}function qbt(t,e,i){return new YK(n.Math.min(t.a,e.a)-i/2,n.Math.min(t.b,e.b)-i/2,n.Math.abs(t.a-e.a)+i,n.Math.abs(t.b-e.b)+i)}function Hbt(t,e){var n,i;return 0!=(n=_O(t.a.c.p,e.a.c.p))?n:0!=(i=_O(t.a.d.i.p,e.a.d.i.p))?i:_O(e.a.d.p,t.a.d.p)}function Ubt(t,e,n){var i,r,a,o;return(a=e.j)!=(o=n.j)?a.g-o.g:(i=t.f[e.p],r=t.f[n.p],0==i&&0==r?0:0==i?-1:0==r?1:Sft(i,r))}function Gbt(t,e,n){var i;if(!n[e.d])for(n[e.d]=!0,i=new Wd(kdt(e));i.a=(r=t.length))return r;for(e=e>0?e:0;ei&&OZ(e,i,null),e}function Qbt(t,e){var n,i;for(i=t.a.length,e.lengthi&&OZ(e,i,null),e}function Jbt(t,e,n){var i,r,a;return(r=zz(FZ(t.e,e),387))?(a=wF(r,n),sL(t,r),a):(i=new tq(t,e,n),KW(t.e,e,i),xQ(i),null)}function twt(t){var e;if(null==t)return null;if(null==(e=NOt(zzt(t,!0))))throw qw(new ix("Invalid hexBinary value: '"+t+"'"));return e}function ewt(t){return DBt(),Xlt(t,0)<0?0!=Xlt(t,-1)?new y_t(-1,k9(t)):Qee:Xlt(t,10)<=0?tne[pU(t)]:new y_t(1,t)}function nwt(){return bWt(),Sst(Ux(Rre,1),LKt,159,0,[Cre,Tre,Sre,mre,wre,yre,kre,xre,vre,Ere,Are,_re,pre,gre,bre,fre,hre,dre,ure,cre,lre,Ire])}function iwt(t){var e;this.d=new Nw,this.j=new Uk,this.g=new Uk,e=t.g.b,this.f=zz(vEt(mW(e),(HZt(),Ype)),103),this.e=Uv(EB(wwt(e,Twe)))}function rwt(t){this.b=new Nw,this.e=new Nw,this.d=t,this.a=!k_(DK(new FH(null,new GY(new y6(t.b))),new og(new Ur))).sd((pE(),eie))}function awt(){awt=M,lEe=new DS("PARENTS",0),uEe=new DS("NODES",1),sEe=new DS("EDGES",2),hEe=new DS("PORTS",3),cEe=new DS("LABELS",4)}function owt(){owt=M,zSe=new GS("DISTRIBUTED",0),HSe=new GS("JUSTIFIED",1),jSe=new GS("BEGIN",2),$Se=new GS(iQt,3),qSe=new GS("END",4)}function swt(t){switch(t.yi(null)){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function cwt(t){switch(t.g){case 1:return zht(),qCe;case 4:return zht(),jCe;case 2:return zht(),$Ce;case 3:return zht(),RCe}return zht(),zCe}function uwt(t,e,n){var i;switch((i=n.q.getFullYear()-lXt+lXt)<0&&(i=-i),e){case 1:t.a+=i;break;case 2:_tt(t,i%100,2);break;default:_tt(t,i,e)}}function lwt(t,e){var n,i;if(LJ(e,t.b),e>=t.b>>1)for(i=t.c,n=t.b;n>e;--n)i=i.b;else for(i=t.a.a,n=0;n=64&&e<128&&(r=i0(r,vG(1,e-64)));return r}function wwt(t,e){var n,i;return i=null,LP(t,(lWt(),SCe))&&(n=zz(vEt(t,SCe),94)).Xe(e)&&(i=n.We(e)),null==i&&mW(t)&&(i=vEt(mW(t),e)),i}function mwt(t,e){var n,i,r;(i=(r=e.d.i).k)!=(cTt(),Sse)&&i!=Ase&&bDt(n=new cG(JL(ddt(r).a.Kc(),new l)))&&KW(t.k,e,zz(Y5(n),17))}function ywt(t,e){var n,i,r;return i=iet(t.Tg(),e),(n=e-t.Ah())<0?(r=t.Yg(i))>=0?t.lh(r):UIt(t,i):n<0?UIt(t,i):zz(i,66).Nj().Sj(t,t.yh(),n)}function vwt(t){var e;if(aL(t.a,4)){if(null==(e=Jpt(t.a)))throw qw(new $v(u5t+t.b+"'. "+a5t+(_B(dDe),dDe.k)+o5t));return e}return t.a}function xwt(t){var e;if(null==t)return null;if(null==(e=ZYt(zzt(t,!0))))throw qw(new ix("Invalid base64Binary value: '"+t+"'"));return e}function kwt(t){var e;try{return e=t.i.Xb(t.e),t.mj(),t.g=t.e++,e}catch(e){throw aL(e=dst(e),73)?(t.mj(),qw(new vm)):qw(e)}}function _wt(t){var e;try{return e=t.c.ki(t.e),t.mj(),t.g=t.e++,e}catch(e){throw aL(e=dst(e),73)?(t.mj(),qw(new vm)):qw(e)}}function Awt(){Awt=M,lWt(),_ae=ACe,wae=vTe,fae=aTe,mae=ZTe,$xt(),xae=Eie,vae=_ie,kae=Cie,yae=kie,Gut(),gae=cae,dae=sae,pae=lae,bae=hae}function Ewt(t){switch(kE(),this.c=new Nw,this.d=t,t.g){case 0:case 2:this.a=XW(lse),this.b=RXt;break;case 3:case 1:this.a=lse,this.b=jXt}}function Twt(t,e,n){var i;if(t.c)Snt(t.c,t.c.i+e),Int(t.c,t.c.j+n);else for(i=new Wd(t.b);i.a0&&(Wz(t.b,new Kz(e.a,n)),0<(i=e.a.length)?e.a=e.a.substr(0,0):0>i&&(e.a+=rL(P8(MNe,KKt,25,-i,15,1))))}function Iwt(t,e){var n,i,r;for(n=t.o,r=zz(zz(l6(t.r,e),21),84).Kc();r.Ob();)(i=zz(r.Pb(),111)).e.a=bvt(i,n.a),i.e.b=n.b*Uv(EB(i.b.We(Lre)))}function Mwt(t,e){var n,i,r,a;return r=t.k,n=Uv(EB(vEt(t,(hWt(),Afe)))),a=e.k,i=Uv(EB(vEt(e,Afe))),a!=(cTt(),Ese)?-1:r!=Ese?1:n==i?0:n=0?t.hh(e,n,i):(t.eh()&&(i=(r=t.Vg())>=0?t.Qg(i):t.eh().ih(t,-1-r,null,i)),t.Sg(e,n,i))}function Bwt(t,e){switch(e){case 7:return!t.e&&(t.e=new lR(jMe,t,7,4)),void lHt(t.e);case 8:return!t.d&&(t.d=new lR(jMe,t,8,5)),void lHt(t.d)}Fgt(t,e)}function Fwt(t,e){var n;n=t.Zc(e);try{return n.Pb()}catch(t){throw aL(t=dst(t),109)?qw(new Dv("Can't get element "+e)):qw(t)}}function Rwt(t,e){this.e=t,e=0&&(n.d=t.t);break;case 3:t.t>=0&&(n.a=t.t)}t.C&&(n.b=t.C.b,n.c=t.C.c)}function Hwt(){Hwt=M,zre=new jT(vQt,0),$re=new jT(xQt,1),qre=new jT(kQt,2),Hre=new jT(_Qt,3),zre.a=!1,$re.a=!0,qre.a=!1,Hre.a=!0}function Uwt(){Uwt=M,Jre=new RT(vQt,0),Qre=new RT(xQt,1),tae=new RT(kQt,2),eae=new RT(_Qt,3),Jre.a=!1,Qre.a=!0,tae.a=!1,eae.a=!0}function Gwt(t){var e;e=t.a;do{(e=zz(Y5(new cG(JL(fdt(e).a.Kc(),new l))),17).c.i).k==(cTt(),Cse)&&t.b.Fc(e)}while(e.k==(cTt(),Cse));t.b=iot(t.b)}function Ywt(t){var e,n,i;for(i=t.c.a,t.p=(vZ(i),new ej(i)),n=new Wd(i);n.an.b)return!0}return!1}function Vwt(t,e){return ZI(t)?!!DWt[e]:t.hm?!!t.hm[e]:YI(t)?!!MWt[e]:!!GI(t)&&!!IWt[e]}function Qwt(t,e,n){return null==n?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),Kpt(t.o,e)):(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),ykt(t.o,e,n)),t}function Jwt(t,e,n,i){var r;(r=Wht(e.Xe((lWt(),BTe))?zz(e.We(BTe),21):t.j))!=(bWt(),Ire)&&(n&&!sbt(r)||ZTt(POt(t,r,i),e))}function tmt(t,e,n,i){var r,a,o;return a=iet(t.Tg(),e),(r=e-t.Ah())<0?(o=t.Yg(a))>=0?t._g(o,n,!0):oMt(t,a,n):zz(a,66).Nj().Pj(t,t.yh(),r,n,i)}function emt(t,e,n,i){var r,a;n.mh(e)&&(JE(),ltt(e)?xbt(t,zz(n.ah(e),153)):(r=(a=e)?zz(i,49).xh(a):null)&&jw(n.ah(e),r))}function nmt(t){switch(t.g){case 1:return Fot(),Fre;case 3:return Fot(),Nre;case 2:return Fot(),Bre;case 4:return Fot(),Pre;default:return null}}function imt(t){switch(typeof t){case PWt:return ymt(t);case NWt:return SQ(t);case LWt:return lN(),t?1231:1237;default:return null==t?0:CN(t)}}function rmt(t,e,n){if(t.e)switch(t.b){case 1:zX(t.c,e,n);break;case 0:qX(t.c,e,n)}else e4(t.c,e,n);t.a[e.p][n.p]=t.c.i,t.a[n.p][e.p]=t.c.e}function amt(t){var e,n;if(null==t)return null;for(n=P8(Mse,lKt,193,t.length,0,2),e=0;e=0)return i;if(t.Fk())for(n=0;n=(r=t.gc()))throw qw(new eR(e,r));if(t.hi()&&(i=t.Xc(n))>=0&&i!=e)throw qw(new jv(s8t));return t.mi(e,n)}function lmt(t,e){if(this.a=zz(vZ(t),245),this.b=zz(vZ(e),245),t.vd(e)>0||t==(nv(),jte)||e==(ev(),$te))throw qw(new jv("Invalid range: "+z3(t,e)))}function hmt(t){var e,n;for(this.b=new Nw,this.c=t,this.a=!1,n=new Wd(t.a);n.a0),(e&-e)==e)return SQ(e*HOt(t,31)*4.656612873077393e-10);do{i=(n=HOt(t,31))%e}while(n-i+(e-1)<0);return SQ(i)}function ymt(t){var e,n,i;return rj(),null!=(i=rie[n=":"+t])?SQ((xW(i),i)):(e=null==(i=iie[n])?JNt(t):SQ((xW(i),i)),IX(),rie[n]=e,e)}function vmt(t,e,n){DAt(n,"Compound graph preprocessor",1),t.a=new wQ,PGt(t,e,null),Gqt(t,e),nNt(t),hct(e,(hWt(),qhe),t.a),t.a=null,OY(t.b),HTt(n)}function xmt(t,e,n){switch(n.g){case 1:t.a=e.a/2,t.b=0;break;case 2:t.a=e.a,t.b=e.b/2;break;case 3:t.a=e.a/2,t.b=e.b;break;case 4:t.a=0,t.b=e.b/2}}function kmt(t){var e,n,i;for(i=zz(l6(t.a,(N_t(),Cue)),15).Kc();i.Ob();)iZ(t,n=zz(i.Pb(),101),(e=Hvt(n))[0],(Irt(),Pue),0),iZ(t,n,e[1],Fue,1)}function _mt(t){var e,n,i;for(i=zz(l6(t.a,(N_t(),Sue)),15).Kc();i.Ob();)iZ(t,n=zz(i.Pb(),101),(e=Hvt(n))[0],(Irt(),Pue),0),iZ(t,n,e[1],Fue,1)}function Amt(t){switch(t.g){case 0:return null;case 1:return new Ort;case 2:return new Qy;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function Emt(t,e,n){var i,r;for(vst(t,e-t.s,n-t.t),r=new Wd(t.n);r.a1&&(r=fmt(t,e)),r}function Cmt(t){var e;return t.f&&t.f.kh()&&(e=zz(t.f,49),t.f=zz(nht(t,e),82),t.f!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,8,e,t.f))),t.f}function Smt(t){var e;return t.i&&t.i.kh()&&(e=zz(t.i,49),t.i=zz(nht(t,e),82),t.i!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,7,e,t.i))),t.i}function Imt(t){var e;return t.b&&0!=(64&t.b.Db)&&(e=t.b,t.b=zz(nht(t,e),18),t.b!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,21,e,t.b))),t.b}function Mmt(t,e){var n,i,r;null==t.d?(++t.e,++t.f):(i=e.Sh(),fNt(t,t.f+1),r=(i&FWt)%t.d.length,!(n=t.d[r])&&(n=t.d[r]=t.uj()),n.Fc(e),++t.f)}function Dmt(t,e,n){var i;return!e.Kj()&&(-2!=e.Zj()?null==(i=e.zj())?null==n:Pht(i,n):e.Hj()==t.e.Tg()&&null==n)}function Omt(){var t;dit(16,MKt),t=Jit(16),this.b=P8(Gte,IKt,317,t,0,1),this.c=P8(Gte,IKt,317,t,0,1),this.a=null,this.e=null,this.i=0,this.f=t-1,this.g=0}function Lmt(t){LF.call(this),this.k=(cTt(),Sse),this.j=(dit(6,OKt),new Q6(6)),this.b=(dit(2,OKt),new Q6(2)),this.d=new hy,this.f=new gy,this.a=t}function Nmt(t){var e,n;t.c.length<=1||(bCt(t,zz((e=ABt(t,(kYt(),TIe))).a,19).a,zz(e.b,19).a),bCt(t,zz((n=ABt(t,SIe)).a,19).a,zz(n.b,19).a))}function Pmt(){Pmt=M,vme=new $C("SIMPLE",0),wme=new $C(q1t,1),mme=new $C("LINEAR_SEGMENTS",2),bme=new $C("BRANDES_KOEPF",3),yme=new $C(_3t,4)}function Bmt(t,e,n){LR(zz(vEt(e,(HZt(),nwe)),98))||(W9(t,e,FTt(e,n)),W9(t,e,FTt(e,(kYt(),TIe))),W9(t,e,FTt(e,uIe)),TX(),yO(e.j,new jp(t)))}function Fmt(t,e,n,i){var r;for(r=zz(l6(i?t.a:t.b,e),21).Kc();r.Ob();)if($Bt(t,n,zz(r.Pb(),33)))return!0;return!1}function Rmt(t){var e,n;for(n=new DL(t);n.e!=n.i.gc();)if((e=zz(kwt(n),87)).e||0!=(!e.d&&(e.d=new OL(KDe,e,1)),e.d).i)return!0;return!1}function jmt(t){var e,n;for(n=new DL(t);n.e!=n.i.gc();)if((e=zz(kwt(n),87)).e||0!=(!e.d&&(e.d=new OL(KDe,e,1)),e.d).i)return!0;return!1}function $mt(t){var e,n;for(e=0,n=new Wd(t.c.a);n.a102?-1:t<=57?t-48:t<65?-1:t<=70?t-65+10:t<97?-1:t-97+10}function Ymt(t,e){if(null==t)throw qw(new qv("null key in entry: null="+e));if(null==e)throw qw(new qv("null value in entry: "+t+"=null"))}function Zmt(t,e){for(var n,i;t.Ob();){if(!e.Ob())return!1;if(n=t.Pb(),i=e.Pb(),!(UI(n)===UI(i)||null!=n&&Pht(n,i)))return!1}return!e.Ob()}function Wmt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[ylt(t.a[0],e),ylt(t.a[1],e),ylt(t.a[2],e)]),t.d&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Kmt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[vlt(t.a[0],e),vlt(t.a[1],e),vlt(t.a[2],e)]),t.d&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Xmt(){Xmt=M,vle=new TC("GREEDY",0),yle=new TC(H1t,1),kle=new TC(q1t,2),_le=new TC("MODEL_ORDER",3),xle=new TC("GREEDY_MODEL_ORDER",4)}function Vmt(t,e){var n,i,r;for(t.b[e.g]=1,i=lwt(e.d,0);i.b!=i.d.c;)r=(n=zz(d3(i),188)).c,1==t.b[r.g]?Bq(t.a,n):2==t.b[r.g]?t.b[r.g]=1:Vmt(t,r)}function Qmt(t,e){var n,i,r;for(r=new Q6(e.gc()),i=e.Kc();i.Ob();)(n=zz(i.Pb(),286)).c==n.f?hCt(t,n,n.c):aCt(t,n)||(r.c[r.c.length]=n);return r}function Jmt(t,e,n){var i,r,a,o;for(o=t.r+e,t.r+=e,t.d+=n,i=n/t.n.c.length,r=0,a=new Wd(t.n);a.aa&&OZ(e,a,null),e}function Eyt(t,e){var n,i;if(i=t.gc(),null==e){for(n=0;n0&&(c+=r),u[l]=o,o+=s*(c+i)}function Fyt(t){var e,n,i;for(i=t.f,t.n=P8(PNe,UXt,25,i,15,1),t.d=P8(PNe,UXt,25,i,15,1),e=0;e0?t.c:0),++a;t.b=r,t.d=o}function Yyt(t,e){var i,r,a,o,s;for(r=0,a=0,i=0,s=new Wd(e);s.a0?t.g:0),++i;t.c=a,t.d=r}function Zyt(t,e){var i;return i=Sst(Ux(PNe,1),UXt,25,15,[wmt(t,(Fet(),Uie),e),wmt(t,Gie,e),wmt(t,Yie,e)]),t.f&&(i[0]=n.Math.max(i[0],i[2]),i[2]=i[0]),i}function Wyt(t,e,n){try{zFt(t,e+t.j,n+t.k,!1,!0)}catch(t){throw aL(t=dst(t),73)?qw(new Dv(t.g+IQt+e+zWt+n+").")):qw(t)}}function Kyt(t,e,n){try{zFt(t,e+t.j,n+t.k,!0,!1)}catch(t){throw aL(t=dst(t),73)?qw(new Dv(t.g+IQt+e+zWt+n+").")):qw(t)}}function Xyt(t){var e;LP(t,(HZt(),Obe))&&((e=zz(vEt(t,Obe),21)).Hc((eOt(),ISe))?(e.Mc(ISe),e.Fc(DSe)):e.Hc(DSe)&&(e.Mc(DSe),e.Fc(ISe)))}function Vyt(t){var e;LP(t,(HZt(),Obe))&&((e=zz(vEt(t,Obe),21)).Hc((eOt(),BSe))?(e.Mc(BSe),e.Fc(NSe)):e.Hc(NSe)&&(e.Mc(NSe),e.Fc(BSe)))}function Qyt(t,e,n){DAt(n,"Self-Loop ordering",1),QA(OK(DK(DK(gtt(new FH(null,new g1(e.b,16)),new Ii),new Mi),new Di),new Oi),new dp(t)),HTt(n)}function Jyt(t,e,n,i){var r,a;for(r=e;r0&&(a.b+=e),a}function cvt(t,e){var i,r,a;for(a=new Uk,r=t.Kc();r.Ob();)tRt(i=zz(r.Pb(),37),0,a.b),a.b+=i.f.b+e,a.a=n.Math.max(a.a,i.f.a);return a.a>0&&(a.a+=e),a}function uvt(t){var e,i,r;for(r=FWt,i=new Wd(t.a);i.a>16==6?t.Cb.ih(t,5,UMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||t.zh(),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function dvt(t){CV();var e=t.e;if(e&&e.stack){var n=e.stack,i=e+"\n";return n.substring(0,i.length)==i&&(n=n.substring(i.length)),n.split("\n")}return[]}function gvt(t){var e;return Tit(),(e=Dee)[t>>>28]|e[t>>24&15]<<4|e[t>>20&15]<<8|e[t>>16&15]<<12|e[t>>12&15]<<16|e[t>>8&15]<<20|e[t>>4&15]<<24|e[15&t]<<28}function pvt(t){var e,i,r;t.b==t.c&&(r=t.a.length,i=kct(n.Math.max(8,r))<<1,0!=t.b?(crt(t,e=TF(t.a,i),r),t.a=e,t.b=0):Cm(t.a,i),t.c=r)}function bvt(t,e){var n;return(n=t.b).Xe((lWt(),oCe))?n.Hf()==(kYt(),SIe)?-n.rf().a-Uv(EB(n.We(oCe))):e+Uv(EB(n.We(oCe))):n.Hf()==(kYt(),SIe)?-n.rf().a:e}function wvt(t){var e;return 0!=t.b.c.length&&zz(PH(t.b,0),70).a?zz(PH(t.b,0),70).a:null!=(e=nX(t))?e:""+(t.c?_9(t.c.a,t,0):-1)}function mvt(t){var e;return 0!=t.f.c.length&&zz(PH(t.f,0),70).a?zz(PH(t.f,0),70).a:null!=(e=nX(t))?e:""+(t.i?_9(t.i.j,t,0):-1)}function yvt(t,e){var n,i;if(e<0||e>=t.gc())return null;for(n=e;n0?t.c:0),a=n.Math.max(a,e.d),++r;t.e=o,t.b=a}function kvt(t){var e,n;if(!t.b)for(t.b=S2(zz(t.f,118).Ag().i),n=new DL(zz(t.f,118).Ag());n.e!=n.i.gc();)e=zz(kwt(n),137),Wz(t.b,new Fv(e));return t.b}function _vt(t,e){var n,i,r;if(e.dc())return pB(),pB(),wDe;for(n=new oF(t,e.gc()),r=new DL(t);r.e!=r.i.gc();)i=kwt(r),e.Hc(i)&&h7(n,i);return n}function Avt(t,e,n,i){return 0==e?i?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),t.o):(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),D8(t.o)):tmt(t,e,n,i)}function Evt(t){var e,n;if(t.rb)for(e=0,n=t.rb.i;e>22))>>22)<0||(t.l=n&CXt,t.m=i&CXt,t.h=r&SXt,0)))}function Mvt(t,e,n,i,r,a,o){var s,c;return!(e.Ae()&&(c=t.a.ue(n,i),c<0||!r&&0==c)||e.Be()&&(s=t.a.ue(n,a),s>0||!o&&0==s))}function Dvt(t,e){if(Yut(),0!=t.j.g-e.j.g)return 0;switch(t.j.g){case 2:return _dt(e,due)-_dt(t,due);case 4:return _dt(t,fue)-_dt(e,fue)}return 0}function Ovt(t){switch(t.g){case 0:return Ple;case 1:return Ble;case 2:return Fle;case 3:return Rle;case 4:return jle;case 5:return $le;default:return null}}function Lvt(t,e,n){var i,r;return Mlt(r=new Ly,e),Prt(r,n),h7((!t.c&&(t.c=new nY(VDe,t,12,10)),t.c),r),Nnt(i=r,0),Pnt(i,1),eft(i,!0),Qht(i,!0),i}function Nvt(t,e){var n,i;if(e>=t.i)throw qw(new LM(e,t.i));return++t.j,n=t.g[e],(i=t.i-e-1)>0&&sqt(t.g,e+1,t.g,e,i),OZ(t.g,--t.i,null),t.fi(e,n),t.ci(),n}function Pvt(t,e){var n;return t.Db>>16==17?t.Cb.ih(t,21,HDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||t.zh(),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Bvt(t){var e,n,i;for(TX(),yO(t.c,t.a),i=new Wd(t.c);i.an.a.c.length))throw qw(new jv("index must be >= 0 and <= layer node count"));t.c&&v9(t.c.a,t),t.c=n,n&&xU(n.a,e,t)}function Qvt(t,e){var n,i,r;for(i=new cG(JL(hdt(t).a.Kc(),new l));bDt(i);)return n=zz(Y5(i),17),new qh(vZ((r=zz(e.Kb(n),10)).n.b+r.o.b/2));return iv(),iv(),Dte}function Jvt(t,e){this.c=new Pw,this.a=t,this.b=e,this.d=zz(vEt(t,(hWt(),Dfe)),304),UI(vEt(t,(HZt(),Lbe)))===UI((b9(),Hle))?this.e=new by:this.e=new py}function txt(t,e){var i,r,a;for(a=0,r=new Wd(t);r.a>16==6?t.Cb.ih(t,6,jMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),vMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function hxt(t,e){var n;return t.Db>>16==7?t.Cb.ih(t,1,BMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),kMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function fxt(t,e){var n;return t.Db>>16==9?t.Cb.ih(t,9,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),AMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function dxt(t,e){var n;return t.Db>>16==5?t.Cb.ih(t,9,ZDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),uOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function gxt(t,e){var n;return t.Db>>16==3?t.Cb.ih(t,0,zMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),nOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function pxt(t,e){var n;return t.Db>>16==7?t.Cb.ih(t,6,UMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),mOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function bxt(){this.a=new dc,this.g=new Omt,this.j=new Omt,this.b=new Pw,this.d=new Omt,this.i=new Omt,this.k=new Pw,this.c=new Pw,this.e=new Pw,this.f=new Pw}function wxt(t,e,n){var i,r,a;for(n<0&&(n=0),a=t.i,r=n;rGXt)return yxt(t,i);if(i==t)return!0}}return!1}function vxt(t){switch(BN(),t.q.g){case 5:yIt(t,(kYt(),uIe)),yIt(t,TIe);break;case 4:YOt(t,(kYt(),uIe)),YOt(t,TIe);break;default:yYt(t,(kYt(),uIe)),yYt(t,TIe)}}function xxt(t){switch(BN(),t.q.g){case 5:CMt(t,(kYt(),cIe)),CMt(t,SIe);break;case 4:Iwt(t,(kYt(),cIe)),Iwt(t,SIe);break;default:vYt(t,(kYt(),cIe)),vYt(t,SIe)}}function kxt(t){var e,n;(e=zz(vEt(t,(fFt(),toe)),19))?(n=e.a,hct(t,(Trt(),loe),0==n?new ldt:new S4(n))):hct(t,(Trt(),loe),new S4(1))}function _xt(t,e){var n;switch(n=t.i,e.g){case 1:return-(t.n.b+t.o.b);case 2:return t.n.a-n.o.a;case 3:return t.n.b-n.o.b;case 4:return-(t.n.a+t.o.a)}return 0}function Axt(t,e){switch(t.g){case 0:return e==(Edt(),$fe)?rue:aue;case 1:return e==(Edt(),$fe)?rue:iue;case 2:return e==(Edt(),$fe)?iue:aue;default:return iue}}function Ext(t,e){var i,r,a;for(v9(t.a,e),t.e-=e.r+(0==t.a.c.length?0:t.c),a=e4t,r=new Wd(t.a);r.a>16==3?t.Cb.ih(t,12,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),yMe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Cxt(t,e){var n;return t.Db>>16==11?t.Cb.ih(t,10,YMe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(IZt(),_Me),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Sxt(t,e){var n;return t.Db>>16==10?t.Cb.ih(t,11,HDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),bOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Ixt(t,e){var n;return t.Db>>16==10?t.Cb.ih(t,12,XDe,e):(n=Imt(zz(iet(zz(xot(t,16),26)||(wWt(),yOe),t.Db>>16),18)),t.Cb.ih(t,n.n,n.f,e))}function Mxt(t){var e;return 0==(1&t.Bb)&&t.r&&t.r.kh()&&(e=zz(t.r,49),t.r=zz(nht(t,e),138),t.r!=e&&0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,9,8,e,t.r))),t.r}function Dxt(t,e,i){var r;return r=Sst(Ux(PNe,1),UXt,25,15,[rEt(t,(Fet(),Uie),e,i),rEt(t,Gie,e,i),rEt(t,Yie,e,i)]),t.f&&(r[0]=n.Math.max(r[0],r[2]),r[2]=r[0]),r}function Oxt(t,e){var n,i,r;if(0!=(r=Qmt(t,e)).c.length)for(yO(r,new ei),n=r.c.length,i=0;i>19)!=(s=e.h>>19)?s-o:(i=t.h)!=(a=e.h)?i-a:(n=t.m)!=(r=e.m)?n-r:t.l-e.l}function $xt(){$xt=M,nFt(),Cie=new OM(ZVt,Sie=Pie),Ftt(),Eie=new OM(WVt,Tie=yie),hwt(),_ie=new OM(KVt,Aie=pie),kie=new OM(XVt,(lN(),!0))}function zxt(t,e,n){var i,r;i=e*n,aL(t.g,145)?(r=h3(t)).f.d?r.f.a||(t.d.a+=i+fQt):(t.d.d-=i+fQt,t.d.a+=i+fQt):aL(t.g,10)&&(t.d.d-=i,t.d.a+=2*i)}function qxt(t,e,i){var r,a,o,s,c;for(a=t[i.g],c=new Wd(e.d);c.a0?t.g:0),++i;e.b=r,e.e=a}function Uxt(t){var e,n,i;if(i=t.b,HA(t.i,i.length)){for(n=2*i.length,t.b=P8(Gte,IKt,317,n,0,1),t.c=P8(Gte,IKt,317,n,0,1),t.f=n-1,t.i=0,e=t.a;e;e=e.c)QSt(t,e,e);++t.g}}function Gxt(t,e,n,i){var r,a,o,s;for(r=0;rs&&(c=s/r),(a=n.Math.abs(t.b))>o&&(u=o/a),xL(t,n.Math.min(c,u)),t}function Wxt(){var t,e;Uzt();try{if(e=zz(Wkt((WE(),GDe),x6t),2014))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new sc}function Kxt(){var t,e;p9();try{if(e=zz(Wkt((WE(),GDe),C9t),2024))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new Bu}function Xxt(){var t,e;Uzt();try{if(e=zz(Wkt((WE(),GDe),X7t),1941))return e}catch(e){if(!aL(e=dst(e),102))throw qw(e);t=e,sG((sO(),t))}return new Hc}function Vxt(t,e,n){var i,r;return r=t.e,t.e=e,0!=(4&t.Db)&&0==(1&t.Db)&&(i=new tY(t,1,4,r,e),n?n.Ei(i):n=i),r!=e&&(n=sGt(t,e?kLt(t,e):t.a,n)),n}function Qxt(){DA.call(this),this.e=-1,this.a=!1,this.p=$Kt,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=$Kt}function Jxt(t,e){var n,i,r;if(i=t.b.d.d,t.a||(i+=t.b.d.a),r=e.b.d.d,e.a||(r+=e.b.d.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function tkt(t,e){var n,i,r;if(i=t.b.b.d,t.a||(i+=t.b.b.a),r=e.b.b.d,e.a||(r+=e.b.b.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function ekt(t,e){var n,i,r;if(i=t.b.g.d,t.a||(i+=t.b.g.a),r=e.b.g.d,e.a||(r+=e.b.g.a),0==(n=Sft(i,r))){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function nkt(){nkt=M,Noe=WU(pH(pH(pH(new z2,(xEt(),$oe),(dWt(),vce)),$oe,Ace),zoe,Dce),zoe,cce),Boe=pH(pH(new z2,$oe,Qse),$oe,uce),Poe=WU(new z2,zoe,hce)}function ikt(t){var e,n,i,r,a;for(e=zz(vEt(t,(hWt(),Ghe)),83),a=t.n,i=e.Cc().Kc();i.Ob();)(r=(n=zz(i.Pb(),306)).i).c+=a.a,r.d+=a.b,n.c?PBt(n):BBt(n);hct(t,Ghe,null)}function rkt(t,e,n){var i,r;switch(i=(r=t.b).d,e.g){case 1:return-i.d-n;case 2:return r.o.a+i.c+n;case 3:return r.o.b+i.a+n;case 4:return-i.b-n;default:return-1}}function akt(t){var e,n,i,r,a;if(i=0,r=tJt,t.b)for(e=0;e<360;e++)n=.017453292519943295*e,ZRt(t,t.d,0,0,t4t,n),(a=t.b.ig(t.d))0&&(r=sMt(t,(a&FWt)%t.d.length,a,e))?r.ed(n):(i=t.tj(a,e,n),t.c.Fc(i),null)}function vkt(t,e){var n,i,r,a;switch(Iht(t,e)._k()){case 3:case 2:for(r=0,a=(n=Qzt(e)).i;r=0;r--)if(yR(t[r].d,e)||yR(t[r].d,i)){t.length>=r+1&&t.splice(0,r+1);break}return t}function Dkt(t,e){var i;return QM(t)&&QM(e)&&LXt<(i=t/e)&&i0&&(t.b+=2,t.a+=r):(t.b+=1,t.a+=n.Math.min(r,a))}function jkt(t,e){var n;if(n=!1,ZI(e)&&(n=!0,tW(t,new UZ(TB(e)))),n||aL(e,236)&&(n=!0,tW(t,new Tf(ZR(zz(e,236))))),!n)throw qw(new Lv(H6t))}function $kt(t,e,n,i){var r,a,o;return r=new N9(t.e,1,10,aL(o=e.c,88)?zz(o,26):(wWt(),pOe),aL(a=n.c,88)?zz(a,26):(wWt(),pOe),cmt(t,e),!1),i?i.Ei(r):i=r,i}function zkt(t){var e,n;switch(zz(vEt(mW(t),(HZt(),wbe)),420).g){case 0:return e=t.n,n=t.o,new PS(e.a+n.a/2,e.b+n.b/2);case 1:return new gD(t.n);default:return null}}function qkt(){qkt=M,Xle=new DC(VJt,0),Kle=new DC("LEFTUP",1),Qle=new DC("RIGHTUP",2),Wle=new DC("LEFTDOWN",3),Vle=new DC("RIGHTDOWN",4),Zle=new DC("BALANCED",5)}function Hkt(t,e,n){var i,r,a;if(0==(i=Sft(t.a[e.p],t.a[n.p]))){if(r=zz(vEt(e,(hWt(),afe)),15),a=zz(vEt(n,afe),15),r.Hc(n))return-1;if(a.Hc(e))return 1}return i}function Ukt(t){switch(t.g){case 1:return new $o;case 2:return new zo;case 3:return new jo;case 0:return null;default:throw qw(new jv(o4t+(null!=t.f?t.f:""+t.g)))}}function Gkt(t,e,n){switch(e){case 1:return!t.n&&(t.n=new nY(GMe,t,1,7)),lHt(t.n),!t.n&&(t.n=new nY(GMe,t,1,7)),void wZ(t.n,zz(n,14));case 2:return void Lit(t,TB(n))}aut(t,e,n)}function Ykt(t,e,n){switch(e){case 3:return void Tnt(t,Uv(EB(n)));case 4:return void Cnt(t,Uv(EB(n)));case 5:return void Snt(t,Uv(EB(n)));case 6:return void Int(t,Uv(EB(n)))}Gkt(t,e,n)}function Zkt(t,e,n){var i,r;(i=HAt(r=new Ly,e,null))&&i.Fi(),Prt(r,n),h7((!t.c&&(t.c=new nY(VDe,t,12,10)),t.c),r),Nnt(r,0),Pnt(r,1),eft(r,!0),Qht(r,!0)}function Wkt(t,e){var n,i;return aL(n=lT(t.g,e),235)?((i=zz(n,235)).Qh(),i.Nh()):aL(n,498)?i=zz(n,1938).b:null}function Kkt(t,e,n,i){var r,a;return vZ(e),vZ(n),F9(!!(a=zz(YR(t.d,e),19)),"Row %s not in %s",e,t.e),F9(!!(r=zz(YR(t.b,n),19)),"Column %s not in %s",n,t.c),Cst(t,a.a,r.a,i)}function Xkt(t,e,n,i,r,a,o){var s,c,u,l,h;if(h=qyt(s=(u=a==o-1)?i:0,l=r[a]),10!=i&&Sst(Ux(t,o-a),e[a],n[a],s,h),!u)for(++a,c=0;c1||-1==s?(a=zz(c,15),r.Wb(Wpt(t,a))):r.Wb(njt(t,zz(c,56))))}function h_t(t,e,n,i){V_();var r=SWt;function a(){for(var t=0;tF3t)return n;i>-1e-6&&++n}return n}function k_t(t,e){var n;e!=t.b?(n=null,t.b&&(n=cQ(t.b,t,-4,n)),e&&(n=Pwt(e,t,-4,n)),(n=tht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function __t(t,e){var n;e!=t.f?(n=null,t.f&&(n=cQ(t.f,t,-1,n)),e&&(n=Pwt(e,t,-1,n)),(n=eht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,0,e,e))}function A_t(t){var e,n,i;if(null==t)return null;if((n=zz(t,15)).dc())return"";for(i=new Tx,e=n.Kc();e.Ob();)aM(i,(ZHt(),TB(e.Pb()))),i.a+=" ";return RM(i,i.a.length-1)}function E_t(t){var e,n,i;if(null==t)return null;if((n=zz(t,15)).dc())return"";for(i=new Tx,e=n.Kc();e.Ob();)aM(i,(ZHt(),TB(e.Pb()))),i.a+=" ";return RM(i,i.a.length-1)}function T_t(t,e,n){var i,r;return i=t.c[e.c.p][e.p],r=t.c[n.c.p][n.p],null!=i.a&&null!=r.a?AG(i.a,r.a):null!=i.a?-1:null!=r.a?1:0}function C_t(t,e){var n,i,r;if(e)for(r=((n=new lG(e.a.length)).b-n.a)*n.c<0?(nT(),ENe):new ZL(n);r.Ob();)i=P2(e,zz(r.Pb(),19).a),MK(new zb(t).a,i)}function S_t(t,e){var n,i,r;if(e)for(r=((n=new lG(e.a.length)).b-n.a)*n.c<0?(nT(),ENe):new ZL(n);r.Ob();)i=P2(e,zz(r.Pb(),19).a),IK(new Ob(t).a,i)}function I_t(t){if(null!=t&&t.length>0&&33==hK(t,t.length-1))try{return null==QCt(hP(t,0,t.length-1)).e}catch(t){if(!aL(t=dst(t),32))throw qw(t)}return!1}function M_t(t,e,n){var i,r,a;return i=e.ak(),a=e.dd(),r=i.$j()?LV(t,3,i,null,a,mzt(t,i,a,aL(i,99)&&0!=(zz(i,18).Bb&qXt)),!0):LV(t,1,i,i.zj(),a,-1,!0),n?n.Ei(r):n=r,n}function D_t(){var t,e,n;for(e=0,t=0;t<"X".length;t++){if(0==(n=VMt((d1(t,"X".length),"X".charCodeAt(t)))))throw qw(new ox("Unknown Option: "+"X".substr(t)));e|=n}return e}function O_t(t,e,n){var i,r;switch(i=Kft(mW(e)),SJ(r=new ITt,e),n.g){case 1:USt(r,Eft(hgt(i)));break;case 2:USt(r,hgt(i))}return hct(r,(HZt(),ewe),EB(vEt(t,ewe))),r}function L_t(t){var e,n;return e=zz(Y5(new cG(JL(fdt(t.a).a.Kc(),new l))),17),n=zz(Y5(new cG(JL(ddt(t.a).a.Kc(),new l))),17),Hv(AB(vEt(e,(hWt(),Sfe))))||Hv(AB(vEt(n,Sfe)))}function N_t(){N_t=M,Eue=new vC("ONE_SIDE",0),Cue=new vC("TWO_SIDES_CORNER",1),Sue=new vC("TWO_SIDES_OPPOSING",2),Tue=new vC("THREE_SIDES",3),Aue=new vC("FOUR_SIDES",4)}function P_t(t,e,n,i,r){var a,o;a=zz(C4(DK(e.Oc(),new Jr),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),o=zz(wot(t.b,n,i),15),0==r?o.Wc(0,a):o.Gc(a)}function B_t(t,e){var n,i,r;for(i=new Wd(e.a);i.a0&&$vt(this,this.c-1,(kYt(),cIe)),this.c0&&t[0].length>0&&(this.c=Hv(AB(vEt(mW(t[0][0]),(hWt(),ofe))))),this.a=P8(Cye,lKt,2018,t.length,0,2),this.b=P8(Lye,lKt,2019,t.length,0,2),this.d=new Elt}function W_t(t){return 0!=t.c.length&&((f1(0,t.c.length),zz(t.c[0],17)).c.i.k==(cTt(),Cse)||c5(OK(new FH(null,new g1(t,16)),new Ra),new ja))}function K_t(t,e,n){return DAt(n,"Tree layout",1),l2(t.b),SY(t.b,(Yvt(),Fve),Fve),SY(t.b,Rve,Rve),SY(t.b,jve,jve),SY(t.b,$ve,$ve),t.a=LHt(t.b,e),dPt(t,e,vat(n,1)),HTt(n),e}function X_t(t,e){var i,r,a,o,s,c;for(s=pBt(e),a=e.f,c=e.g,o=n.Math.sqrt(a*a+c*c),r=0,i=new Wd(s);i.a=0?(n=Dkt(t,OXt),i=dpt(t,OXt)):(n=Dkt(e=kG(t,1),5e8),i=adt(vG(i=dpt(e,5e8),1),n0(t,1))),i0(vG(i,32),n0(n,ZXt))}function dAt(t,e,n){var i;switch(CP(0!=e.b),i=zz(Oet(e,e.a.a),8),n.g){case 0:i.b=0;break;case 2:i.b=t.f;break;case 3:i.a=0;break;default:i.a=t.g}return tZ(lwt(e,0),i),e}function gAt(t,e,n,i){var r,a,o,s,c;switch(c=t.b,s=Ybt(o=(a=e.d).j,c.d[o.g],n),r=YF(zO(a.n),a.a),a.j.g){case 1:case 3:s.a+=r.a;break;case 2:case 4:s.b+=r.b}r5(i,s,i.c.b,i.c)}function pAt(t,e,n){var i,r,a,o;for(o=_9(t.e,e,0),(a=new ry).b=n,i=new E2(t.e,o);i.b1;e>>=1)0!=(1&e)&&(i=Ntt(i,n)),n=1==n.d?Ntt(n,n):new Ibt(Mjt(n.a,n.d,P8(DNe,hXt,25,n.d<<1,15,1)));return i=Ntt(i,n)}function xAt(){var t,e,n,i;for(xAt=M,Mne=P8(PNe,UXt,25,25,15,1),Dne=P8(PNe,UXt,25,33,15,1),i=152587890625e-16,e=32;e>=0;e--)Dne[e]=i,i*=.5;for(n=1,t=24;t>=0;t--)Mne[t]=n,n*=.5}function kAt(t){var e,n;if(Hv(AB(tOt(t,(HZt(),gbe)))))for(n=new cG(JL(bLt(t).a.Kc(),new l));bDt(n);)if(VIt(e=zz(Y5(n),79))&&Hv(AB(tOt(e,pbe))))return!0;return!1}function _At(t,e){var n,i,r;AY(t.f,e)&&(e.b=t,i=e.c,-1!=_9(t.j,i,0)||Wz(t.j,i),r=e.d,-1!=_9(t.j,r,0)||Wz(t.j,r),0!=(n=e.a.b).c.length&&(!t.i&&(t.i=new iwt(t)),yot(t.i,n)))}function AAt(t){var e,n,i,r;return(n=(e=t.c.d).j)==(r=(i=t.d.d).j)?e.p=0&&yR(t.substr(e,"GMT".length),"GMT")||e>=0&&yR(t.substr(e,"UTC".length),"UTC")?(n[0]=e+3,xjt(t,n,i)):xjt(t,n,i)}function MAt(t,e){var n,i,r,a,o;for(a=t.g.a,o=t.g.b,i=new Wd(t.d);i.an;a--)t[a]|=e[a-n-1]>>>o,t[a-1]=e[a-n-1]<=t.f)break;a.c[a.c.length]=n}return a}function $At(t){var e,n,i,r;for(e=null,r=new Wd(t.wf());r.a0&&sqt(t.g,e,t.g,e+i,s),o=n.Kc(),t.i+=i,r=0;ra&&uY(u,oet(n[s],Ane))&&(r=s,a=c);return r>=0&&(i[0]=e+a),r}function ZAt(t,e){var n;if(0!=(n=VM(t.b.Hf(),e.b.Hf())))return n;switch(t.b.Hf().g){case 1:case 2:return _O(t.b.sf(),e.b.sf());case 3:case 4:return _O(e.b.sf(),t.b.sf())}return 0}function WAt(t){var e,n,i;for(i=t.e.c.length,t.a=xH(DNe,[lKt,hXt],[48,25],15,[i,i],2),n=new Wd(t.c);n.a>4&15,a=15&t[i],o[r++]=MMe[n],o[r++]=MMe[a];return qpt(o,0,o.length)}function VAt(t,e,n){var i,r,a;return i=e.ak(),a=e.dd(),r=i.$j()?LV(t,4,i,a,null,mzt(t,i,a,aL(i,99)&&0!=(zz(i,18).Bb&qXt)),!0):LV(t,i.Kj()?2:1,i,a,i.zj(),-1,!0),n?n.Ei(r):n=r,n}function QAt(t){var e,n;return t>=qXt?(e=HXt+(t-qXt>>10&1023)&VKt,n=56320+(t-qXt&1023)&VKt,String.fromCharCode(e)+""+String.fromCharCode(n)):String.fromCharCode(t&VKt)}function JAt(t,e){var n,i,r,a;return HB(),(r=zz(zz(l6(t.r,e),21),84)).gc()>=2&&(i=zz(r.Kc().Pb(),111),n=t.u.Hc((dIt(),eIe)),a=t.u.Hc(aIe),!i.a&&!n&&(2==r.gc()||a))}function tEt(t,e,n,i,r){var a,o,s;for(a=iBt(t,e,n,i,r),s=!1;!a;)AOt(t,r,!0),s=!0,a=iBt(t,e,n,i,r);s&&AOt(t,r,!1),0!=(o=Fst(r)).c.length&&(t.d&&t.d.lg(o),tEt(t,r,n,i,o))}function eEt(){eEt=M,oSe=new zS(VJt,0),rSe=new zS("DIRECTED",1),sSe=new zS("UNDIRECTED",2),nSe=new zS("ASSOCIATION",3),aSe=new zS("GENERALIZATION",4),iSe=new zS("DEPENDENCY",5)}function nEt(t,e){var n;if(!WQ(t))throw qw(new $v(z5t));switch(n=WQ(t),e.g){case 1:return-(t.j+t.f);case 2:return t.i-n.g;case 3:return t.j-n.f;case 4:return-(t.i+t.g)}return 0}function iEt(t,e){var n,i;for(xW(e),i=t.b.c.length,Wz(t.b,e);i>0;){if(n=i,i=(i-1)/2|0,t.a.ue(PH(t.b,i),e)<=0)return a5(t.b,n,e),!0;a5(t.b,n,PH(t.b,i))}return a5(t.b,i,e),!0}function rEt(t,e,i,r){var a,o;if(a=0,i)a=vlt(t.a[i.g][e.g],r);else for(o=0;o=o)}function oEt(t,e,n,i){var r;if(r=!1,ZI(i)&&(r=!0,Dq(e,n,TB(i))),r||GI(i)&&(r=!0,oEt(t,e,n,i)),r||aL(i,236)&&(r=!0,HX(e,n,zz(i,236))),!r)throw qw(new Lv(H6t))}function sEt(t,e){var n,i,r;if((n=e.Hh(t.a))&&null!=(r=opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),z7t)))for(i=1;i<(MCt(),VOe).length;++i)if(yR(VOe[i],r))return i;return 0}function cEt(t,e){var n,i,r;if((n=e.Hh(t.a))&&null!=(r=opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),z7t)))for(i=1;i<(MCt(),QOe).length;++i)if(yR(QOe[i],r))return i;return 0}function uEt(t,e){var n,i,r,a;if(xW(e),(a=t.a.gc())0?1:0;a.a[r]!=n;)a=a.a[r],r=t.a.ue(n.d,a.d)>0?1:0;a.a[r]=i,i.b=n.b,i.a[0]=n.a[0],i.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function pEt(t){return dIt(),!(Iot(MQ(_U(nIe,Sst(Ux(IIe,1),LKt,273,0,[rIe])),t))>1||Iot(MQ(_U(eIe,Sst(Ux(IIe,1),LKt,273,0,[tIe,aIe])),t))>1)}function bEt(t,e){aL(TQ((WE(),GDe),t),498)?yJ(GDe,t,new MI(this,e)):yJ(GDe,t,this),rTt(this,e),e==(i_(),tOe)?(this.wb=zz(this,1939),zz(e,1941)):this.wb=(XZ(),eOe)}function wEt(t){var e,n;if(null==t)return null;for(e=null,n=0;n=XKt?"error":i>=900?"warn":i>=800?"info":"log",t.a),t.b&&BNt(e,n,t.b,"Exception: ",!0))}function vEt(t,e){var n,i;return!t.q&&(t.q=new Pw),null!=(i=FZ(t.q,e))?i:(aL(n=e.wg(),4)&&(null==n?(!t.q&&(t.q=new Pw),m6(t.q,e)):(!t.q&&(t.q=new Pw),KW(t.q,e,n))),n)}function xEt(){xEt=M,Foe=new KT("P1_CYCLE_BREAKING",0),Roe=new KT("P2_LAYERING",1),joe=new KT("P3_NODE_ORDERING",2),$oe=new KT("P4_NODE_PLACEMENT",3),zoe=new KT("P5_EDGE_ROUTING",4)}function kEt(t,e){var n,i,r,a;for(i=(1==e?Woe:Zoe).a.ec().Kc();i.Ob();)for(n=zz(i.Pb(),103),a=zz(l6(t.f.c,n),21).Kc();a.Ob();)r=zz(a.Pb(),46),v9(t.b.b,r.b),v9(t.b.a,zz(r.b,81).d)}function _Et(t,e){var n;if(Btt(),t.c==e.c){if(t.b==e.b||hat(t.b,e.b)){if(n=JM(t.b)?1:-1,t.a&&!e.a)return n;if(!t.a&&e.a)return-n}return _O(t.b.g,e.b.g)}return Sft(t.c,e.c)}function AEt(t,e){var n;DAt(e,"Hierarchical port position processing",1),(n=t.b).c.length>0&&rjt((f1(0,n.c.length),zz(n.c[0],29)),t),n.c.length>1&&rjt(zz(PH(n,n.c.length-1),29),t),HTt(e)}function EEt(t,e){var n,i;if(PEt(t,e))return!0;for(i=new Wd(e);i.a=(r=t.Vi())||e<0)throw qw(new Dv(c8t+e+u8t+r));if(n>=r||n<0)throw qw(new Dv(l8t+n+u8t+r));return e!=n?(a=t.Ti(n),t.Hi(e,a),i=a):i=t.Oi(n),i}function LEt(t){var e,n,i;if(i=t,t)for(e=0,n=t.Ug();n;n=n.Ug()){if(++e>GXt)return LEt(n);if(i=n,n==t)throw qw(new $v("There is a cycle in the containment hierarchy of "+t))}return i}function NEt(t){var e,n,i;for(i=new Lot(zWt,"[","]"),n=t.Kc();n.Ob();)d6(i,UI(e=n.Pb())===UI(t)?"(this Collection)":null==e?YWt:qdt(e));return i.a?0==i.e.length?i.a.a:i.a.a+""+i.e:i.c}function PEt(t,e){var n,i;if(i=!1,e.gc()<2)return!1;for(n=0;ni&&(d1(e-1,t.length),t.charCodeAt(e-1)<=32);)--e;return i>0||e1&&(t.j.b+=t.e)):(t.j.a+=i.a,t.j.b=n.Math.max(t.j.b,i.b),t.d.c.length>1&&(t.j.a+=t.e))}function $Et(){$Et=M,Oue=Sst(Ux($Ie,1),QJt,61,0,[(kYt(),uIe),cIe,TIe]),Due=Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe,SIe]),Lue=Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe,uIe]),Nue=Sst(Ux($Ie,1),QJt,61,0,[SIe,uIe,cIe])}function zEt(t,e,n,i){var r,a,o,s,c;if(a=t.c.d,o=t.d.d,a.j!=o.j)for(c=t.b,r=a.j,s=null;r!=o.j;)s=0==e?Tft(r):Aft(r),Bq(i,YF(Ybt(r,c.d[r.g],n),Ybt(s,c.d[s.g],n))),r=s}function qEt(t,e,n,i){var r,a,o,s,c;return s=zz((o=Uvt(t.a,e,n)).a,19).a,a=zz(o.b,19).a,i&&(c=zz(vEt(e,(hWt(),_fe)),10),r=zz(vEt(n,_fe),10),c&&r&&(e4(t.b,c,r),s+=t.b.i,a+=t.b.e)),s>a}function HEt(t){var e,n,i,r,a,o,s,c;for(this.a=amt(t),this.b=new Nw,i=0,r=(n=t).length;i$B(t.d).c?(t.i+=t.g.c,wpt(t.d)):$B(t.d).c>$B(t.g).c?(t.e+=t.d.c,wpt(t.g)):(t.i+=HH(t.g),t.e+=HH(t.d),wpt(t.g),wpt(t.d))}function ZEt(t,e,n){var i,r,a,o;for(a=e.q,o=e.r,new GJ((M6(),Ave),e,a,1),new GJ(Ave,a,o,1),r=new Wd(n);r.ac&&(u=c/r),(a=n.Math.abs(e.b-t.b))>o&&(l=o/a),s=n.Math.min(u,l),t.a+=s*(e.a-t.a),t.b+=s*(e.b-t.b)}function eTt(t,e,n,i,r){var a,o;for(o=!1,a=zz(PH(n.b,0),33);hzt(t,e,a,i,r)&&(o=!0,o_t(n,a),0!=n.b.c.length);)a=zz(PH(n.b,0),33);return 0==n.b.c.length&&Ext(n.j,n),o&&Gyt(e.q),o}function nTt(t,e){var n,i,r,a;if(_Bt(),e.b<2)return!1;for(i=n=zz(d3(a=lwt(e,0)),8);a.b!=a.d.c;){if(oNt(t,i,r=zz(d3(a),8)))return!0;i=r}return!!oNt(t,i,n)}function iTt(t,e,n,i){return 0==n?(!t.o&&(t.o=new v7((IZt(),EMe),rDe,t,0)),zR(t.o,e,i)):zz(iet(zz(xot(t,16),26)||t.zh(),n),66).Nj().Rj(t,fbt(t),n-dZ(t.zh()),e,i)}function rTt(t,e){var n;e!=t.sb?(n=null,t.sb&&(n=zz(t.sb,49).ih(t,1,qMe,n)),e&&(n=zz(e,49).gh(t,1,qMe,n)),(n=_ht(t,e,n))&&n.Fi()):0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,4,e,e))}function aTt(t,e){var n,i;if(!e)throw qw(new nx("All edge sections need an end point."));n=Rnt(e,"x"),Ent(new Rb(t).a,(xW(n),n)),i=Rnt(e,"y"),Dnt(new jb(t).a,(xW(i),i))}function oTt(t,e){var n,i;if(!e)throw qw(new nx("All edge sections need a start point."));n=Rnt(e,"x"),Mnt(new Pb(t).a,(xW(n),n)),i=Rnt(e,"y"),Ont(new Bb(t).a,(xW(i),i))}function sTt(t,e){var n,i,r,a,o;for(i=0,a=mut(t).length;i>22-e,r=t.h<>22-e):e<44?(n=0,i=t.l<>44-e):(n=0,i=0,r=t.l<t)throw qw(new jv("k must be smaller than n"));return 0==e||e==t?1:0==t?0:Tkt(t)/(Tkt(e)*Tkt(t-e))}function yTt(t,e){var n,i,r,a;for(n=new MD(t);null!=n.g||n.c?null==n.g||0!=n.i&&zz(n.g[n.i-1],47).Ob():eJ(n);)if(aL(a=zz(sLt(n),56),160))for(i=zz(a,160),r=0;r>4],e[2*n+1]=VLe[15&r];return qpt(e,0,e.length)}function PTt(t){var e;switch(tK(),t.c.length){case 0:return qte;case 1:return Iq((e=zz(JSt(new Wd(t)),42)).cd(),e.dd());default:return new lv(zz(Vbt(t,P8(Hte,kKt,42,t.c.length,0,1)),165))}}function BTt(t){var e,n,i,r,a;for(e=new Lw,n=new Lw,p3(e,t),p3(n,t);n.b!=n.c;)for(a=new Wd(zz(pY(n),37).a);a.a0&&cRt(t,n,e),r):MMt(t,e,n)}function $Tt(t,e,n){var i,r,a,o;if(0!=e.b){for(i=new VA,o=lwt(e,0);o.b!=o.d.c;)zrt(i,Bst(a=zz(d3(o),86))),(r=a.e).a=zz(vEt(a,(UHt(),bxe)),19).a,r.b=zz(vEt(a,wxe),19).a;$Tt(t,i,vat(n,i.b/t.a|0))}}function zTt(t,e){var n,i,r,a,o;if(t.e<=e)return t.g;if(G1(t,t.g,e))return t.g;for(a=t.r,i=t.g,o=t.r,r=(a-i)/2+i;i+11&&(t.e.b+=t.a)):(t.e.a+=i.a,t.e.b=n.Math.max(t.e.b,i.b),t.d.c.length>1&&(t.e.a+=t.a))}function WTt(t){var e,n,i,r;switch(e=(r=t.i).b,i=r.j,n=r.g,r.a.g){case 0:n.a=(t.g.b.o.a-i.a)/2;break;case 1:n.a=e.d.n.a+e.d.a.a;break;case 2:n.a=e.d.n.a+e.d.a.a-i.a;break;case 3:n.b=e.d.n.b+e.d.a.b}}function KTt(t,e,n,i,r){if(ii&&(t.a=i),t.br&&(t.b=r),t}function XTt(t){if(aL(t,149))return TNt(zz(t,149));if(aL(t,229))return tgt(zz(t,229));if(aL(t,23))return hTt(zz(t,23));throw qw(new jv(Y6t+NEt(new Qv(Sst(Ux(Ote,1),HWt,1,5,[t])))))}function VTt(t,e,n,i,r){var a,o,s;for(a=!0,o=0;o>>r|n[o+i+1]<>>r,++o}return a}function QTt(t,e,n,i){var r,a;if(e.k==(cTt(),Cse))for(a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)if((r=zz(Y5(a),17)).c.i.k==Cse&&t.c.a[r.c.i.c.p]==i&&t.c.a[e.c.p]==n)return!0;return!1}function JTt(t,e){var n,i,r,a;return e&=63,n=t.h&SXt,e<22?(a=n>>>e,r=t.m>>e|n<<22-e,i=t.l>>e|t.m<<22-e):e<44?(a=0,r=n>>>e-22,i=t.m>>e-22|t.h<<44-e):(a=0,r=0,i=n>>>e-44),EO(i&CXt,r&CXt,a&SXt)}function tCt(t,e,n,i){var r;this.b=i,this.e=t==(uit(),Dye),r=e[n],this.d=xH(ONe,[lKt,tQt],[177,25],16,[r.length,r.length],2),this.a=xH(DNe,[lKt,hXt],[48,25],15,[r.length,r.length],2),this.c=new Y_t(e,n)}function eCt(t){var e,n,i;for(t.k=new c1((kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])).length,t.j.c.length),i=new Wd(t.j);i.a=n)return hCt(t,e,i.p),!0;return!1}function oCt(t){var e;return 0!=(64&t.Db)?vTt(t):(e=new fN(t6t),!t.a||cM(cM((e.a+=' "',e),t.a),'"'),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function sCt(t,e,n){var i,r,a,o,s;for(s=sPt(t.e.Tg(),e),r=zz(t.g,119),i=0,o=0;on?bSt(t,n,"start index"):e<0||e>n?bSt(e,n,"end index"):LFt("end index (%s) must not be less than start index (%s)",Sst(Ux(Ote,1),HWt,1,5,[rft(e),rft(t)]))}function lCt(t,e){var n,i,r,a;for(i=0,r=t.length;i0&&dCt(t,a,n));e.p=0}function gCt(t){var e;this.c=new VA,this.f=t.e,this.e=t.d,this.i=t.g,this.d=t.c,this.b=t.b,this.k=t.j,this.a=t.a,t.i?this.j=t.i:this.j=new VR(e=zz(Kk(kEe),9),zz(TF(e,e.length),9),0),this.g=t.f}function pCt(t){var e,n,i,r;for(e=PZ(cM(new fN("Predicates."),"and"),40),n=!0,r=new Td(t);r.b0?s[o-1]:P8(Mse,s1t,10,0,0,1),r=s[o],u=o=0?t.Bh(r):oIt(t,i)}else Uht(t,n,i)}function xCt(t){var e,n;if(n=null,e=!1,aL(t,204)&&(e=!0,n=zz(t,204).a),e||aL(t,258)&&(e=!0,n=""+zz(t,258).a),e||aL(t,483)&&(e=!0,n=""+zz(t,483).a),!e)throw qw(new Lv(H6t));return n}function kCt(t,e){var n,i;if(t.f){for(;e.Ob();)if(aL(i=(n=zz(e.Pb(),72)).ak(),99)&&0!=(zz(i,18).Bb&h6t)&&(!t.e||i.Gj()!=NMe||0!=i.aj())&&null!=n.dd())return e.Ub(),!0;return!1}return e.Ob()}function _Ct(t,e){var n,i;if(t.f){for(;e.Sb();)if(aL(i=(n=zz(e.Ub(),72)).ak(),99)&&0!=(zz(i,18).Bb&h6t)&&(!t.e||i.Gj()!=NMe||0!=i.aj())&&null!=n.dd())return e.Pb(),!0;return!1}return e.Sb()}function ACt(t,e,n){var i,r,a,o,s,c;for(c=sPt(t.e.Tg(),e),i=0,s=t.i,r=zz(t.g,119),o=0;o1&&(e.c[e.c.length]=a)}function CCt(t){var e,n,i;for(zrt(n=new VA,t.o),i=new cy;0!=n.b;)KYt(t,e=zz(0==n.b?null:(CP(0!=n.b),Oet(n,n.a.a)),508),!0)&&Wz(i.a,e);for(;0!=i.a.c.length;)KYt(t,e=zz(nlt(i),508),!1)}function SCt(){SCt=M,xEe=new OS(hQt,0),gEe=new OS("BOOLEAN",1),mEe=new OS("INT",2),vEe=new OS("STRING",3),pEe=new OS("DOUBLE",4),bEe=new OS("ENUM",5),wEe=new OS("ENUMSET",6),yEe=new OS("OBJECT",7)}function ICt(t,e){var i,r,a,o,s;r=n.Math.min(t.c,e.c),o=n.Math.min(t.d,e.d),(a=n.Math.max(t.c+t.b,e.c+e.b))=(r/2|0))for(this.e=i?i.c:null,this.d=r;n++0;)_J(this);this.b=e,this.a=null}function $Ct(t,e){var n,i;e.a?YNt(t,e):(!!(n=zz(xR(t.b,e.b),57))&&n==t.a[e.b.f]&&!!n.a&&n.a!=e.b.a&&n.c.Fc(e.b),!!(i=zz(vR(t.b,e.b),57))&&t.a[i.f]==e.b&&!!i.a&&i.a!=e.b.a&&e.b.c.Fc(i),EN(t.b,e.b))}function zCt(t,e){var n,i;if(n=zz(cK(t.b,e),124),zz(zz(l6(t.r,e),21),84).dc())return n.n.b=0,void(n.n.c=0);n.n.b=t.C.b,n.n.c=t.C.c,t.A.Hc((vpt(),jIe))&&xFt(t,e),i=Wwt(t,e),SBt(t,e)==(owt(),zSe)&&(i+=2*t.w),n.a.a=i}function qCt(t,e){var n,i;if(n=zz(cK(t.b,e),124),zz(zz(l6(t.r,e),21),84).dc())return n.n.d=0,void(n.n.a=0);n.n.d=t.C.d,n.n.a=t.C.a,t.A.Hc((vpt(),jIe))&&kFt(t,e),i=Kwt(t,e),SBt(t,e)==(owt(),zSe)&&(i+=2*t.w),n.a.b=i}function HCt(t,e){var n,i,r,a;for(a=new Nw,i=new Wd(e);i.an.a&&(i.Hc((p_t(),WEe))?r=(e.a-n.a)/2:i.Hc(XEe)&&(r=e.a-n.a)),e.b>n.b&&(i.Hc((p_t(),QEe))?a=(e.b-n.b)/2:i.Hc(VEe)&&(a=e.b-n.b)),dEt(t,r,a)}function gSt(t,e,n,i,r,a,o,s,c,u,l,h,f){aL(t.Cb,88)&&OSt(C5(zz(t.Cb,88)),4),Prt(t,n),t.f=o,Lft(t,s),Pft(t,c),Oft(t,u),Nft(t,l),eft(t,h),Uft(t,f),Qht(t,!0),Nnt(t,r),t.ok(a),Mlt(t,e),null!=i&&(t.i=null,srt(t,i))}function pSt(t){var e,n;if(t.f){for(;t.n>0;){if(aL(n=(e=zz(t.k.Xb(t.n-1),72)).ak(),99)&&0!=(zz(n,18).Bb&h6t)&&(!t.e||n.Gj()!=NMe||0!=n.aj())&&null!=e.dd())return!0;--t.n}return!1}return t.n>0}function bSt(t,e,n){if(t<0)return LFt(qWt,Sst(Ux(Ote,1),HWt,1,5,[n,rft(t)]));if(e<0)throw qw(new jv(UWt+e));return LFt("%s (%s) must not be greater than size (%s)",Sst(Ux(Ote,1),HWt,1,5,[n,rft(t),rft(e)]))}function wSt(t,e,n,i,r,a){var o,s,c;if(i-n<7)Ldt(e,n,i,a);else if(wSt(e,t,s=n+r,c=s+((o=i+r)-s>>1),-r,a),wSt(e,t,c,o,-r,a),a.ue(t[c-1],t[c])<=0)for(;n=0?t.sh(a,n):ELt(t,r,n)}else Ndt(t,i,r,n)}function kSt(t){var e,n,i,r;if(n=zz(t,49).qh())try{if(i=null,(e=LOt((WE(),GDe),Tjt($dt(n))))&&(r=e.rh())&&(i=r.Wk(Zv(n.e))),i&&i!=t)return kSt(i)}catch(t){if(!aL(t=dst(t),60))throw qw(t)}return t}function _St(t,e,n){var i,r,a,o;if(o=null==e?0:t.b.se(e),0==(r=null==(i=t.a.get(o))?new Array:i).length)t.a.set(o,r);else if(a=hlt(t,e,r))return a.ed(n);return OZ(r,r.length,new CT(e,n)),++t.c,cV(t.b),null}function ASt(t,e){var n;return l2(t.a),SY(t.a,(Srt(),Xxe),Xxe),SY(t.a,Vxe,Vxe),pH(n=new z2,Vxe,(Idt(),nke)),UI(tOt(e,(Zvt(),Tke)))!==UI((Hut(),uke))&&pH(n,Vxe,tke),pH(n,Vxe,eke),oD(t.a,n),LHt(t.a,e)}function ESt(t){if(!t)return fx(),hee;var e=t.valueOf?t.valueOf():t;if(e!==t){var i=fee[typeof e];return i?i(e):klt(typeof e)}return t instanceof Array||t instanceof n.Array?new Af(t):new Cf(t)}function TSt(t,e,i){var r,a,o;switch(o=t.o,(a=(r=zz(cK(t.p,i),244)).i).b=CIt(r),a.a=TIt(r),a.b=n.Math.max(a.b,o.a),a.b>o.a&&!e&&(a.b=o.a),a.c=-(a.b-o.a)/2,i.g){case 1:a.d=-a.a;break;case 3:a.d=o.b}$$t(r),G$t(r)}function CSt(t,e,i){var r,a,o;switch(o=t.o,(a=(r=zz(cK(t.p,i),244)).i).b=CIt(r),a.a=TIt(r),a.a=n.Math.max(a.a,o.b),a.a>o.b&&!e&&(a.a=o.b),a.d=-(a.a-o.b)/2,i.g){case 4:a.c=-a.b;break;case 2:a.c=o.a}$$t(r),G$t(r)}function SSt(t,e){var n,i,r,a,o;if(!e.dc())if(r=zz(e.Xb(0),128),1!=e.gc())for(n=1;n0)try{i=djt(e,$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}return!t.a&&(t.a=new Tw(t)),i<(n=t.a).i&&i>=0?zz(Ket(n,i),56):null}function NSt(t,e){if(t<0)return LFt(qWt,Sst(Ux(Ote,1),HWt,1,5,["index",rft(t)]));if(e<0)throw qw(new jv(UWt+e));return LFt("%s (%s) must be less than size (%s)",Sst(Ux(Ote,1),HWt,1,5,["index",rft(t),rft(e)]))}function PSt(t){var e,n,i,r,a;if(null==t)return YWt;for(a=new Lot(zWt,"[","]"),i=0,r=(n=t).length;i0)for(o=t.c.d,r=xL(ZF(new PS((s=t.d.d).a,s.b),o),1/(i+1)),a=new PS(o.a,o.b),n=new Wd(t.a);n.a=0?t._g(n,!0,!0):oMt(t,r,!0),153),zz(i,215).ol(e)}function sIt(t){var e,i;return t>-0x800000000000&&t<0x800000000000?0==t?0:((e=t<0)&&(t=-t),i=SQ(n.Math.floor(n.Math.log(t)/.6931471805599453)),(!e||t!=n.Math.pow(2,i))&&++i,i):Xot(fot(t))}function cIt(t){var e,n,i,r,a,o,s;for(a=new hD,n=new Wd(t);n.a2&&s.e.b+s.j.b<=2&&(r=s,i=o),a.a.zc(r,a),r.q=i);return a}function uIt(t,e){var n,i,r;return Uot(i=new Lmt(t),e),hct(i,(hWt(),Khe),e),hct(i,(HZt(),nwe),(V_t(),ZSe)),hct(i,xpe,(pmt(),MEe)),zf(i,(cTt(),Ese)),SJ(n=new ITt,i),USt(n,(kYt(),SIe)),SJ(r=new ITt,i),USt(r,cIe),i}function lIt(t){switch(t.g){case 0:return new Nv((uit(),Mye));case 1:return new gh;case 2:return new xh;default:throw qw(new jv("No implementation is available for the crossing minimizer "+(null!=t.f?t.f:""+t.g)))}}function hIt(t,e){var n,i,r,a;for(t.c[e.p]=!0,Wz(t.a,e),a=new Wd(e.j);a.a=(a=o.gc()))o.$b();else for(r=o.Kc(),i=0;i0?gx():a<0&&AIt(t,e,-a),!0)}function TIt(t){var e,n,i,r,a,o;if(o=0,0==t.b){for(e=0,r=0,a=(i=Wmt(t,!0)).length;r0&&(o+=n,++e);e>1&&(o+=t.c*(e-1))}else o=Rx(iat(LK(DK(LY(t.a),new At),new Et)));return o>0?o+t.n.d+t.n.a:0}function CIt(t){var e,n,i,r,a,o;if(o=0,0==t.b)o=Rx(iat(LK(DK(LY(t.a),new kt),new _t)));else{for(e=0,r=0,a=(i=Kmt(t,!0)).length;r0&&(o+=n,++e);e>1&&(o+=t.c*(e-1))}return o>0?o+t.n.b+t.n.c:0}function SIt(t,e){var i,r,a,o;for(i=(o=zz(cK(t.b,e),124)).a,a=zz(zz(l6(t.r,e),21),84).Kc();a.Ob();)(r=zz(a.Pb(),111)).c&&(i.a=n.Math.max(i.a,Kq(r.c)));if(i.a>0)switch(e.g){case 2:o.n.c=t.s;break;case 4:o.n.b=t.s}}function IIt(t,e){var n,i,r;return 0==(n=zz(vEt(e,(fFt(),Jae)),19).a-zz(vEt(t,Jae),19).a)?(i=ZF(zO(zz(vEt(t,(Trt(),soe)),8)),zz(vEt(t,coe),8)),r=ZF(zO(zz(vEt(e,soe),8)),zz(vEt(e,coe),8)),Sft(i.a*i.b,r.a*r.b)):n}function MIt(t,e){var n,i,r;return 0==(n=zz(vEt(e,(IDt(),Oxe)),19).a-zz(vEt(t,Oxe),19).a)?(i=ZF(zO(zz(vEt(t,(UHt(),Jve)),8)),zz(vEt(t,txe),8)),r=ZF(zO(zz(vEt(e,Jve),8)),zz(vEt(e,txe),8)),Sft(i.a*i.b,r.a*r.b)):n}function DIt(t){var e,n;return(n=new Sx).a+="e_",null!=(e=Wot(t))&&(n.a+=""+e),t.c&&t.d&&(cM((n.a+=" ",n),mvt(t.c)),cM(sM((n.a+="[",n),t.c.i),"]"),cM((n.a+=i1t,n),mvt(t.d)),cM(sM((n.a+="[",n),t.d.i),"]")),n.a}function OIt(t){switch(t.g){case 0:return new bh;case 1:return new wh;case 2:return new ph;case 3:return new mh;default:throw qw(new jv("No implementation is available for the layout phase "+(null!=t.f?t.f:""+t.g)))}}function LIt(t,e,i,r,a){var o;switch(o=0,a.g){case 1:o=n.Math.max(0,e.b+t.b-(i.b+r));break;case 3:o=n.Math.max(0,-t.b-r);break;case 2:o=n.Math.max(0,-t.a-r);break;case 4:o=n.Math.max(0,e.a+t.a-(i.a+r))}return o}function NIt(t,e,n){var i,r,a;if(n)for(a=((i=new lG(n.a.length)).b-i.a)*i.c<0?(nT(),ENe):new ZL(i);a.Ob();)r=P2(n,zz(a.Pb(),19).a),N6t in r.a||P6t in r.a?lRt(t,r,e):AZt(t,r,e),CL(zz(FZ(t.b,Vpt(r)),79))}function PIt(t){var e,n;switch(t.b){case-1:return!0;case 0:return(n=t.t)>1||-1==n||(e=Mxt(t))&&(JE(),e.Cj()==A7t)?(t.b=-1,!0):(t.b=1,!1);default:return!1}}function BIt(t,e){var n,i,r,a,o;for(!e.s&&(e.s=new nY($De,e,21,17)),a=null,r=0,o=(i=e.s).i;r=0&&i=0?t._g(n,!0,!0):oMt(t,r,!0),153),zz(i,215).ll(e);throw qw(new jv(a6t+e.ne()+c6t))}function GIt(){var t;return eT(),XOe?zz(LOt((WE(),GDe),X7t),1939):(FM(Hte,new Su),eGt(),t=zz(aL(TQ((WE(),GDe),X7t),547)?TQ(GDe,X7t):new YW,547),XOe=!0,uWt(t),EWt(t),KW((KE(),JDe),t,new Uc),yJ(GDe,X7t,t),t)}function YIt(t,e){var n,i,r,a;t.j=-1,yD(t.e)?(n=t.i,a=0!=t.i,a6(t,e),i=new N9(t.e,3,t.c,null,e,n,a),r=e.Qk(t.e,t.c,null),(r=M_t(t,e,r))?(r.Ei(i),r.Fi()):got(t.e,i)):(a6(t,e),(r=e.Qk(t.e,t.c,null))&&r.Fi())}function ZIt(t,e){var n,i,r;if(r=0,(i=e[0])>=t.length)return-1;for(d1(i,t.length),n=t.charCodeAt(i);n>=48&&n<=57&&(r=10*r+(n-48),!(++i>=t.length));)d1(i,t.length),n=t.charCodeAt(i);return i>e[0]?e[0]=i:r=-1,r}function WIt(t){var e,i,r,a,o;return i=a=zz(t.a,19).a,r=o=zz(t.b,19).a,e=n.Math.max(n.Math.abs(a),n.Math.abs(o)),a<=0&&a==o?(i=0,r=o-1):a==-e&&o!=e?(i=o,r=a,o>=0&&++i):(i=-o,r=a),new rI(rft(i),rft(r))}function KIt(t,e,n,i){var r,a,o,s,c,u;for(r=0;r=0&&u>=0&&c=t.i)throw qw(new Dv(c8t+e+u8t+t.i));if(n>=t.i)throw qw(new Dv(l8t+n+u8t+t.i));return i=t.g[n],e!=n&&(e>16))>>16&16),n+=e=(i=(t>>=e)-256)>>16&8,n+=e=(i=(t<<=e)-$Xt)>>16&4,(n+=e=(i=(t<<=e)-hKt)>>16&2)+2-(e=(i=(t<<=e)>>14)&~(i>>1)))}function eMt(t){var e,n,i,r;for(EX(),Tae=new Nw,Eae=new Pw,Aae=new Nw,!t.a&&(t.a=new nY(YMe,t,10,11)),BYt(e=t.a),r=new DL(e);r.e!=r.i.gc();)i=zz(kwt(r),33),-1==_9(Tae,i,0)&&(n=new Nw,Wz(Aae,n),Rbt(i,n));return Aae}function nMt(t,e,n){var i,r,a,o;t.a=n.b.d,aL(e,352)?(n5(a=UTt(r=oBt(zz(e,79),!1,!1)),i=new Ng(t)),X$t(a,r),null!=e.We((lWt(),MTe))&&n5(zz(e.We(MTe),74),i)):((o=zz(e,470)).Hg(o.Dg()+t.a.a),o.Ig(o.Eg()+t.a.b))}function iMt(t,e){var i,r,a,o,s,c,u,l;for(l=Uv(EB(vEt(e,(HZt(),Nwe)))),u=t[0].n.a+t[0].o.a+t[0].d.c+l,c=1;c=0?n:(s=fW(ZF(new PS(o.c+o.b/2,o.d+o.a/2),new PS(a.c+a.b/2,a.d+a.a/2))),-(Qjt(a,o)-1)*s)}function aMt(t,e,n){var i;QA(new FH(null,(!n.a&&(n.a=new nY($Me,n,6,6)),new g1(n.a,16))),new nI(t,e)),QA(new FH(null,(!n.n&&(n.n=new nY(GMe,n,1,7)),new g1(n.n,16))),new iI(t,e)),(i=zz(tOt(n,(lWt(),MTe)),74))&&Qrt(i,t,e)}function oMt(t,e,n){var i,r,a;if(a=zHt((MCt(),JOe),t.Tg(),e))return JE(),zz(a,66).Oj()||(a=J1(z9(JOe,a))),r=zz((i=t.Yg(a))>=0?t._g(i,!0,!0):oMt(t,a,!0),153),zz(r,215).hl(e,n);throw qw(new jv(a6t+e.ne()+c6t))}function sMt(t,e,n,i){var r,a,o,s,c;if(r=t.d[e])if(a=r.g,c=r.i,null!=i){for(s=0;s=n&&(i=e,a=(c=(s.c+s.a)/2)-n,s.c<=c-n&&xU(t,i++,new xz(s.c,a)),(o=c+n)<=s.a&&(r=new xz(o,s.a),LJ(i,t.c.length),ET(t.c,i,r)))}function gMt(t){var e;if(t.c||null!=t.g){if(null==t.g)return!0;if(0==t.i)return!1;e=zz(t.g[t.i-1],47)}else t.d=t.si(t.f),h7(t,t.d),e=t.d;return e==t.b&&null.km>=null.jm()?(sLt(t),gMt(t)):e.Ob()}function pMt(t,e,n){var i,r,a,o;if(!(o=n)&&(o=Lq(new Zy,0)),DAt(o,UJt,1),LUt(t.c,e),1==(a=RUt(t.a,e)).gc())Xqt(zz(a.Xb(0),37),o);else for(r=1/a.gc(),i=a.Kc();i.Ob();)Xqt(zz(i.Pb(),37),vat(o,r));_x(t.a,a,e),zBt(e),HTt(o)}function bMt(t){if(this.a=t,t.c.i.k==(cTt(),Ese))this.c=t.c,this.d=zz(vEt(t.c.i,(hWt(),Xhe)),61);else{if(t.d.i.k!=Ese)throw qw(new jv("Edge "+t+" is not an external edge."));this.c=t.d,this.d=zz(vEt(t.d.i,(hWt(),Xhe)),61)}}function wMt(t,e){var n,i,r;r=t.b,t.b=e,0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,r,t.b)),e?e!=t&&(Prt(t,e.zb),Lnt(t,e.d),zit(t,null==(n=null==(i=e.c)?e.zb:i)||yR(n,e.zb)?null:n)):(Prt(t,null),Lnt(t,0),zit(t,null))}function mMt(t){var e,n;if(t.f){for(;t.n=(o=null==(n=zz(xot(t.a,4),126))?0:n.length))throw qw(new eR(e,o));return r=n[e],1==o?i=null:(sqt(n,0,i=P8(pDe,r7t,415,o-1,0,1),0,e),(a=o-e-1)>0&&sqt(n,e+1,i,e,a)),zbt(t,i),iSt(t,e,r),r}function EMt(){EMt=M,fLe=zz(Ket(XX((a_(),bLe).qb),6),34),uLe=zz(Ket(XX(bLe.qb),3),34),lLe=zz(Ket(XX(bLe.qb),4),34),hLe=zz(Ket(XX(bLe.qb),5),18),u_t(fLe),u_t(uLe),u_t(lLe),u_t(hLe),dLe=new Qv(Sst(Ux($De,1),P7t,170,0,[fLe,uLe]))}function TMt(t,e){var n;this.d=new fy,this.b=e,this.e=new gD(e.qf()),n=t.u.Hc((dIt(),iIe)),t.u.Hc(nIe)?t.D?this.a=n&&!e.If():this.a=!0:t.u.Hc(rIe)?this.a=!!n&&!(e.zf().Kc().Ob()||e.Bf().Kc().Ob()):this.a=!1}function CMt(t,e){var n,i,r,a;for(n=t.o.a,a=zz(zz(l6(t.r,e),21),84).Kc();a.Ob();)(r=zz(a.Pb(),111)).e.a=(i=r.b).Xe((lWt(),oCe))?i.Hf()==(kYt(),SIe)?-i.rf().a-Uv(EB(i.We(oCe))):n+Uv(EB(i.We(oCe))):i.Hf()==(kYt(),SIe)?-i.rf().a:n}function SMt(t,e){var n,i,r;n=zz(vEt(t,(HZt(),Ype)),103),r=zz(tOt(e,swe),61),(i=zz(vEt(t,nwe),98))!=(V_t(),XSe)&&i!=VSe?r==(kYt(),CIe)&&(r=D$t(e,n))==CIe&&(r=hgt(n)):r=Wqt(e)>0?hgt(n):Eft(hgt(n)),Qwt(e,swe,r)}function IMt(t,e){var n,i,r,a,o;for(o=t.j,e.a!=e.b&&yO(o,new Yr),r=o.c.length/2|0,i=0;i0&&cRt(t,n,e),a):null!=i.a?(cRt(t,e,n),-1):null!=r.a?(cRt(t,n,e),1):0}function DMt(t,e){var n,i,r,a;t.ej()?(n=t.Vi(),a=t.fj(),++t.j,t.Hi(n,t.oi(n,e)),i=t.Zi(3,null,e,n,a),t.bj()&&(r=t.cj(e,null))?(r.Ei(i),r.Fi()):t.$i(i)):(nW(t,e),t.bj()&&(r=t.cj(e,null))&&r.Fi())}function OMt(t,e){var n,i,r,a,o;for(o=sPt(t.e.Tg(),e),r=new bc,n=zz(t.g,119),a=t.i;--a>=0;)i=n[a],o.rl(i.ak())&&h7(r,i);!sZt(t,r)&&yD(t.e)&&Lm(t,e.$j()?LV(t,6,e,(TX(),lne),null,-1,!1):LV(t,e.Kj()?2:1,e,null,null,-1,!1))}function LMt(){var t,e;for(LMt=M,sne=P8(une,lKt,91,32,0,1),cne=P8(une,lKt,91,32,0,1),t=1,e=0;e<=18;e++)sne[e]=ewt(t),cne[e]=ewt(vG(t,e)),t=odt(t,5);for(;ea)||e.q&&(a=(i=e.C).c.c.a-i.o.a/2,i.n.a-n>a)))}function PMt(t,e){DAt(e,"Partition preprocessing",1),QA(zz(C4(DK(gtt(DK(new FH(null,new g1(t.a,16)),new mi),new yi),new vi),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15).Oc(),new xi),HTt(e)}function BMt(t){var e,n,i,r,a,o;for(HJ(),n=new m4,i=new Wd(t.e.b);i.a1?t.e*=Uv(t.a):t.f/=Uv(t.a),Ilt(t),wbt(t),EFt(t),hct(t.b,(Awt(),bae),t.g)}function HMt(t,e,n){var i,r,a,o,s;for(i=0,s=n,e||(i=n*(t.c.length-1),s*=-1),a=new Wd(t);a.a=0?(e||(e=new Cx,i>0&&aM(e,t.substr(0,i))),e.a+="\\",NZ(e,n&VKt)):e&&NZ(e,n&VKt);return e?e.a:t}function aDt(t){var e;if(!t.a)throw qw(new $v("IDataType class expected for layout option "+t.f));if(null==(e=I3(t.a)))throw qw(new $v("Couldn't create new instance of property '"+t.f+"'. "+a5t+(_B(dDe),dDe.k)+o5t));return zz(e,414)}function oDt(t){var e,n,i,r,a;return(a=t.eh())&&a.kh()&&(r=nht(t,a))!=a?(n=t.Vg(),i=(e=t.Vg())>=0?t.Qg(null):t.eh().ih(t,-1-e,null,null),t.Rg(zz(r,49),n),i&&i.Fi(),t.Lg()&&t.Mg()&&n>-1&&got(t,new tY(t,9,n,a,r)),r):a}function sDt(t){var e,n,i,r,a,o,s;for(a=0,r=t.f.e,n=0;n>5)>=t.d)return t.e<0;if(n=t.a[r],e=1<<(31&e),t.e<0){if(r<(i=Iat(t)))return!1;n=i==r?-n:~n}return 0!=(n&e)}function dDt(t,e,n,i){var r;zz(n.b,65),zz(n.b,65),zz(i.b,65),zz(i.b,65),Nq(r=ZF(zO(zz(n.b,65).c),zz(i.b,65).c),HSt(zz(n.b,65),zz(i.b,65),r)),zz(i.b,65),zz(i.b,65),zz(i.b,65).c.a,r.a,zz(i.b,65).c.b,r.b,zz(i.b,65),Det(i.a,new Az(t,e,i))}function gDt(t,e){var n,i,r,a,o,s,c;if(a=e.e)for(n=oDt(a),i=zz(t.g,674),o=0;o>16)),15).Xc(a))0&&((!pD(t.a.c)||!e.n.d)&&(!bD(t.a.c)||!e.n.b)&&(e.g.d+=n.Math.max(0,r/2-.5)),(!pD(t.a.c)||!e.n.a)&&(!bD(t.a.c)||!e.n.c)&&(e.g.a-=r-1))}function vDt(t){var e,i,r,a,o;if(o=jjt(t,a=new Nw),e=zz(vEt(t,(hWt(),_fe)),10))for(r=new Wd(e.j);r.a>e,a=t.m>>e|n<<22-e,r=t.l>>e|t.m<<22-e):e<44?(o=i?SXt:0,a=n>>e-22,r=t.m>>e-22|n<<44-e):(o=i?SXt:0,a=i?CXt:0,r=n>>e-44),EO(r&CXt,a&CXt,o&SXt)}function ADt(t){var e,i,r,a,o,s;for(this.c=new Nw,this.d=t,r=RXt,a=RXt,e=jXt,i=jXt,s=lwt(t,0);s.b!=s.d.c;)o=zz(d3(s),8),r=n.Math.min(r,o.a),a=n.Math.min(a,o.b),e=n.Math.max(e,o.a),i=n.Math.max(i,o.b);this.a=new YK(r,a,e-r,i-a)}function EDt(t,e){var n,i,r,a;for(i=new Wd(t.b);i.a0&&aL(e,42)&&(t.a.qj(),a=null==(c=(u=zz(e,42)).cd())?0:eut(c),o=nF(t.a,a),n=t.a.d[o]))for(i=zz(n.g,367),l=n.i,s=0;s=2)for(e=EB((i=a.Kc()).Pb());i.Ob();)o=e,e=EB(i.Pb()),r=n.Math.min(r,(xW(e),e-(xW(o),o)));return r}function HDt(t,e){var n,i,r,a,o;r5(i=new VA,e,i.c.b,i.c);do{for(CP(0!=i.b),n=zz(Oet(i,i.a.a),86),t.b[n.g]=1,a=lwt(n.d,0);a.b!=a.d.c;)o=(r=zz(d3(a),188)).c,1==t.b[o.g]?Bq(t.a,r):2==t.b[o.g]?t.b[o.g]=1:r5(i,o,i.c.b,i.c)}while(0!=i.b)}function UDt(t,e){var n,i,r;if(UI(e)===UI(vZ(t)))return!0;if(!aL(e,15))return!1;if(i=zz(e,15),(r=t.gc())!=i.gc())return!1;if(aL(i,54)){for(n=0;n0&&(r=n),o=new Wd(t.f.e);o.a0?(e-=1,n-=1):i>=0&&r<0?(e+=1,n+=1):i>0&&r>=0?(e-=1,n+=1):(e+=1,n-=1),new rI(rft(e),rft(n))}function dOt(t,e){return t.ce.c?1:t.be.b?1:t.a!=e.a?eut(t.a)-eut(e.a):t.d==(X4(),qye)&&e.d==zye?-1:t.d==zye&&e.d==qye?1:0}function gOt(t,e){var n,i,r,a,o;return o=(a=e.a).c.i==e.b?a.d:a.c,i=a.c.i==e.b?a.c:a.d,(r=Ygt(t.a,o,i))>0&&r0):r<0&&-r0)}function pOt(t,e,n,i){var r,a,o,s,c,u;for(r=(e-t.d)/t.c.c.length,a=0,t.a+=n,t.d=e,u=new Wd(t.c);u.a>24;return o}function wOt(t){if(t.pe()){var e=t.c;return e.qe()?t.o="["+e.n:e.pe()?t.o="["+e.ne():t.o="[L"+e.ne()+";",t.b=e.me()+"[]",void(t.k=e.oe()+"[]")}var n=t.j,i=t.d;i=i.split("/"),t.o=zpt(".",[n,zpt("$",i)]),t.b=zpt(".",[n,zpt(".",i)]),t.k=i[i.length-1]}function mOt(t,e){var n,i,r,a,o;for(o=null,a=new Wd(t.e.a);a.a=0;e-=2)for(n=0;n<=e;n+=2)(t.b[n]>t.b[n+2]||t.b[n]===t.b[n+2]&&t.b[n+1]>t.b[n+3])&&(i=t.b[n+2],t.b[n+2]=t.b[n],t.b[n]=i,i=t.b[n+3],t.b[n+3]=t.b[n+1],t.b[n+1]=i);t.c=!0}}function TOt(t,e){var n,i,r,a,o,s;for(a=(1==e?Woe:Zoe).a.ec().Kc();a.Ob();)for(r=zz(a.Pb(),103),s=zz(l6(t.f.c,r),21).Kc();s.Ob();)switch(o=zz(s.Pb(),46),i=zz(o.b,81),n=zz(o.a,189).c,r.g){case 2:case 1:i.g.d+=n;break;case 4:case 3:i.g.c+=n}}function COt(t,e){var n,i,r,a,o,s,c,u,l;for(u=-1,l=0,s=0,c=(o=t).length;s0&&++l;++u}return l}function SOt(t){var e;return(e=new fN(t_(t.gm))).a+="@",cM(e,(eut(t)>>>0).toString(16)),t.kh()?(e.a+=" (eProxyURI: ",sM(e,t.qh()),t.$g()&&(e.a+=" eClass: ",sM(e,t.$g())),e.a+=")"):t.$g()&&(e.a+=" (eClass: ",sM(e,t.$g()),e.a+=")"),e.a}function IOt(t){var e,n,i;if(t.e)throw qw(new $v((_B(bie),OVt+bie.k+LVt)));for(t.d==(zht(),zCe)&&EGt(t,jCe),n=new Wd(t.a.a);n.a>24}return n}function POt(t,e,n){var i,r,a;if(!(r=zz(cK(t.i,e),306)))if(r=new pet(t.d,e,n),yU(t.i,e,r),sbt(e))_L(t.a,e.c,e.b,r);else switch(a=NCt(e),i=zz(cK(t.p,a),244),a.g){case 1:case 3:r.j=!0,kv(i,e.b,r);break;case 4:case 2:r.k=!0,kv(i,e.c,r)}return r}function BOt(t,e,n,i){var r,a,o,s,c,u;if(s=new bc,c=sPt(t.e.Tg(),e),r=zz(t.g,119),JE(),zz(e,66).Oj())for(o=0;o=0)return r;for(a=1,o=new Wd(e.j);o.a0&&e.ue((f1(r-1,t.c.length),zz(t.c[r-1],10)),a)>0;)a5(t,r,(f1(r-1,t.c.length),zz(t.c[r-1],10))),--r;f1(r,t.c.length),t.c[r]=a}n.a=new Pw,n.b=new Pw}function jOt(t,e,n){var i,r,a,o,s,c,u;for(u=new VR(i=zz(e.e&&e.e(),9),zz(TF(i,i.length),9),0),o=0,s=(a=kRt(n,"[\\[\\]\\s,]+")).length;o0&&((!pD(t.a.c)||!e.n.d)&&(!bD(t.a.c)||!e.n.b)&&(e.g.d-=n.Math.max(0,r/2-.5)),(!pD(t.a.c)||!e.n.a)&&(!bD(t.a.c)||!e.n.c)&&(e.g.a+=n.Math.max(0,r-1)))}function zOt(t,e,n){var i;if(2==(t.c-t.b&t.a.length-1))e==(kYt(),uIe)||e==cIe?(_et(zz(Act(t),15),(Wvt(),kSe)),_et(zz(Act(t),15),_Se)):(_et(zz(Act(t),15),(Wvt(),_Se)),_et(zz(Act(t),15),kSe));else for(i=new dK(t);i.a!=i.b;)_et(zz($lt(i),15),n)}function qOt(t,e){var n,i,r,a,o,s;for(o=new E2(i=qz(new uw(t)),i.c.length),s=new E2(r=qz(new uw(e)),r.c.length),a=null;o.b>0&&s.b>0&&(CP(o.b>0),n=zz(o.a.Xb(o.c=--o.b),33),CP(s.b>0),n==zz(s.a.Xb(s.c=--s.b),33));)a=n;return a}function HOt(t,e){var i,r,a,o;return a=t.a*sVt+1502*t.b,o=t.b*sVt+11,a+=i=n.Math.floor(o*cVt),o-=i*uVt,a%=uVt,t.a=a,t.b=o,e<=24?n.Math.floor(t.a*Mne[e]):((r=t.a*(1<=2147483648&&(r-=WXt),r)}function UOt(t,e,n){var i,r,a,o;g0(t,e)>g0(t,n)?(i=sdt(n,(kYt(),cIe)),t.d=i.dc()?0:sH(zz(i.Xb(0),11)),o=sdt(e,SIe),t.b=o.dc()?0:sH(zz(o.Xb(0),11))):(r=sdt(n,(kYt(),SIe)),t.d=r.dc()?0:sH(zz(r.Xb(0),11)),a=sdt(e,cIe),t.b=a.dc()?0:sH(zz(a.Xb(0),11)))}function GOt(t){var e,n,i,r,a,o,s;if(t&&(e=t.Hh(X7t))&&null!=(o=TB(opt((!e.b&&(e.b=new QP((wWt(),xOe),ZOe,e)),e.b),"conversionDelegates")))){for(s=new Nw,r=0,a=(i=kRt(o,"\\w+")).length;rt.c));o++)r.a>=t.s&&(a<0&&(a=o),s=o);return c=(t.s+t.c)/2,a>=0&&(c=HE((f1(i=QFt(t,e,a,s),e.c.length),zz(e.c[i],329))),dMt(e,i,n)),c}function KOt(){KOt=M,f_e=new ZD((lWt(),aTe),1.3),b_e=kTe,I_e=new WD(15),S_e=new ZD(ZTe,I_e),O_e=new ZD(LCe,15),d_e=lTe,k_e=RTe,__e=zTe,A_e=HTe,x_e=BTe,E_e=YTe,M_e=hCe,LDt(),C_e=c_e,v_e=o_e,T_e=s_e,D_e=l_e,w_e=a_e,m_e=STe,y_e=ITe,p_e=r_e,g_e=i_e,L_e=h_e}function XOt(t,e,n){var i,r,a,o,s;for(qit(r=new kc,(xW(e),e)),!r.b&&(r.b=new QP((wWt(),xOe),ZOe,r)),s=r.b,o=1;o0&&BHt(this,r)}function QOt(t,e,n,i,r,a){var o,s,c;if(!r[e.b]){for(r[e.b]=!0,!(o=i)&&(o=new v6),Wz(o.e,e),c=a[e.b].Kc();c.Ob();)(s=zz(c.Pb(),282)).d!=n&&s.c!=n&&(s.c!=e&&QOt(t,s.c,e,o,r,a),s.d!=e&&QOt(t,s.d,e,o,r,a),Wz(o.c,s),wst(o.d,s.b));return o}return null}function JOt(t){var e,n,i;for(e=0,n=new Wd(t.e);n.a=2}function tLt(t,e){var n,i,r,a;for(DAt(e,"Self-Loop pre-processing",1),i=new Wd(t.a);i.a1||Iot(MQ(_U(ISe,Sst(Ux(USe,1),LKt,93,0,[SSe,DSe])),t))>1||Iot(MQ(_U(BSe,Sst(Ux(USe,1),LKt,93,0,[PSe,NSe])),t))>1)}function iLt(t,e){var n,i,r;return(n=e.Hh(t.a))&&null!=(r=TB(opt((!n.b&&(n.b=new QP((wWt(),xOe),ZOe,n)),n.b),"affiliation")))?-1==(i=yN(r,QAt(35)))?cft(t,oG(t,Zet(e.Hj())),r):0==i?cft(t,null,r.substr(1)):cft(t,r.substr(0,i),r.substr(i+1)):null}function rLt(t){var e,n;try{return null==t?YWt:qdt(t)}catch(i){if(aL(i=dst(i),102))return e=i,n=t_(nut(t))+"@"+(OA(),(imt(t)>>>0).toString(16)),jbt(_st(),(fE(),"Exception during lenientFormat for "+n),e),"<"+n+" threw "+t_(e.gm)+">";throw qw(i)}}function aLt(t){switch(t.g){case 0:return new sh;case 1:return new nh;case 2:return new OE;case 3:return new Ia;case 4:return new FF;case 5:return new ch;default:throw qw(new jv("No implementation is available for the layerer "+(null!=t.f?t.f:""+t.g)))}}function oLt(t,e,n){var i,r,a;for(a=new Wd(t.t);a.a0&&(i.b.n-=i.c,i.b.n<=0&&i.b.u>0&&Bq(e,i.b));for(r=new Wd(t.i);r.a0&&(i.a.u-=i.c,i.a.u<=0&&i.a.n>0&&Bq(n,i.a))}function sLt(t){var e,n,i;if(null==t.g&&(t.d=t.si(t.f),h7(t,t.d),t.c))return t.f;if(i=(e=zz(t.g[t.i-1],47)).Pb(),t.e=e,(n=t.si(i)).Ob())t.d=n,h7(t,n);else for(t.d=null;!e.Ob()&&(OZ(t.g,--t.i,null),0!=t.i);)e=zz(t.g[t.i-1],47);return i}function cLt(t,e){var n,i,r,a,o,s;if(r=(i=e).ak(),LPt(t.e,r)){if(r.hi()&&U3(t,r,i.dd()))return!1}else for(s=sPt(t.e.Tg(),r),n=zz(t.g,119),a=0;a1||n>1)return 2;return e+n==1?2:0}function yLt(t,e,n){var i,r,a,o;for(DAt(n,"ELK Force",1),Hv(AB(tOt(e,(fFt(),Wae))))||kQ(new Ag((UE(),new Bv(e)))),kxt(o=fct(e)),Yct(t,zz(vEt(o,Uae),424)),r=(a=H$t(t.a,o)).Kc();r.Ob();)i=zz(r.Pb(),231),SRt(t.b,i,vat(n,1/a.gc()));CYt(o=GYt(a)),HTt(n)}function vLt(t,e){var n,i,r;if(DAt(e,"Breaking Point Processor",1),DGt(t),Hv(AB(vEt(t,(HZt(),Uwe))))){for(i=new Wd(t.b);i.a=0?t._g(i,!0,!0):oMt(t,a,!0),153),zz(r,215).ml(e,n)}function TLt(t,e){var n,i,r,a,o;for(n=new Nw,r=gtt(new FH(null,new g1(t,16)),new Ao),a=gtt(new FH(null,new g1(t,16)),new Eo),o=E9(q6(LK(CNt(Sst(Ux(nie,1),HWt,833,0,[r,a])),new To))),i=1;i=2*e&&Wz(n,new xz(o[i-1]+e,o[i]-e));return n}function CLt(t,e,n){DAt(n,"Eades radial",1),n.n&&e&&v0(n,c2(e),(qut(),sMe)),t.d=zz(tOt(e,(gB(),Kxe)),33),t.c=Uv(EB(tOt(e,(Zvt(),Bke)))),t.e=Amt(zz(tOt(e,Fke),293)),t.a=dgt(zz(tOt(e,jke),426)),t.b=Ukt(zz(tOt(e,Oke),340)),akt(t),n.n&&e&&v0(n,c2(e),(qut(),sMe))}function SLt(t,e,n){var i,r,a,o,s;if(n)for(a=((i=new lG(n.a.length)).b-i.a)*i.c<0?(nT(),ENe):new ZL(i);a.Ob();)(r=P2(n,zz(a.Pb(),19).a))&&(Lit(o=O3(t,(e_(),s=new _y,!!e&&qLt(s,e),s),r),F2(r,U6t)),CAt(r,o),DSt(r,o),Bct(t,r,o))}function ILt(t){var e,n,i,r;if(!t.j){if(r=new Ic,null==(e=COe).a.zc(t,e)){for(i=new DL(xV(t));i.e!=i.i.gc();)wZ(r,ILt(n=zz(kwt(i),26))),h7(r,n);e.a.Bc(t)}olt(r),t.j=new NM((zz(Ket(XX((XZ(),eOe).o),11),18),r.i),r.g),C5(t).b&=-33}return t.j}function MLt(t){var e,n,i,r;if(null==t)return null;if(i=zzt(t,!0),r=B9t.length,yR(i.substr(i.length-r,r),B9t))if(4==(n=i.length)){if(d1(0,i.length),43==(e=i.charCodeAt(0)))return ULe;if(45==e)return HLe}else if(3==n)return ULe;return new Bm(i)}function DLt(t){var e,n,i;return 0!=((n=t.l)&n-1)||0!=((i=t.m)&i-1)||0!=((e=t.h)&e-1)||0==e&&0==i&&0==n?-1:0==e&&0==i&&0!=n?wit(n):0==e&&0!=i&&0==n?wit(i)+22:0!=e&&0==i&&0==n?wit(e)+44:-1}function OLt(t,e){var n,i,r,a;for(DAt(e,"Edge joining",1),n=Hv(AB(vEt(t,(HZt(),Bwe)))),i=new Wd(t.b);i.a1)for(i=new Wd(t.a);i.a0),a.a.Xb(a.c=--a.b),vF(a,r),CP(a.b3&&_tt(t,0,e-3))}function jLt(t){var e,n,i,r;return UI(vEt(t,(HZt(),ube)))===UI((cht(),wSe))?!t.e&&UI(vEt(t,Fpe))!==UI((jot(),xhe)):(i=zz(vEt(t,Rpe),292),r=Hv(AB(vEt(t,qpe)))||UI(vEt(t,Hpe))===UI((Dit(),ule)),e=zz(vEt(t,Bpe),19).a,n=t.a.c.length,!r&&i!=(jot(),xhe)&&(0==e||e>n))}function $Lt(t){var e,n;for(n=0;n0);n++);if(n>0&&n0);e++);return e>0&&n>16!=6&&e){if(yxt(t,e))throw qw(new jv(p6t+RMt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?lxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,6,i)),(i=XB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,6,e,e))}function qLt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=9&&e){if(yxt(t,e))throw qw(new jv(p6t+ZFt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?fxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,9,i)),(i=VB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,9,e,e))}function HLt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=3&&e){if(yxt(t,e))throw qw(new jv(p6t+dqt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?Txt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,12,i)),(i=KB(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function ULt(t){var e,n,i,r,a;if(i=Mxt(t),null==(a=t.j)&&i)return t.$j()?null:i.zj();if(aL(i,148)){if((n=i.Aj())&&(r=n.Nh())!=t.i){if((e=zz(i,148)).Ej())try{t.g=r.Kh(e,a)}catch(e){if(!aL(e=dst(e),78))throw qw(e);t.g=null}t.i=r}return t.g}return null}function GLt(t){var e;return Wz(e=new Nw,new PT(new PS(t.c,t.d),new PS(t.c+t.b,t.d))),Wz(e,new PT(new PS(t.c,t.d),new PS(t.c,t.d+t.a))),Wz(e,new PT(new PS(t.c+t.b,t.d+t.a),new PS(t.c+t.b,t.d))),Wz(e,new PT(new PS(t.c+t.b,t.d+t.a),new PS(t.c,t.d+t.a))),e}function YLt(t,e,n,i){var r,a,o;if(o=Okt(e,n),i.c[i.c.length]=e,-1==t.j[o.p]||2==t.j[o.p]||t.a[e.p])return i;for(t.j[o.p]=-1,a=new cG(JL(hdt(o).a.Kc(),new l));bDt(a);)if(!d5(r=zz(Y5(a),17))&&(d5(r)||r.c.i.c!=r.d.i.c)&&r!=e)return YLt(t,r,o,i);return i}function ZLt(t,e,n){var i,r;for(r=e.a.ec().Kc();r.Ob();)i=zz(r.Pb(),79),!zz(FZ(t.b,i),266)&&(QQ(SEt(i))==QQ(DEt(i))?nBt(t,i,n):SEt(i)==QQ(DEt(i))?null==FZ(t.c,i)&&null!=FZ(t.b,DEt(i))&&aGt(t,i,n,!1):null==FZ(t.d,i)&&null!=FZ(t.b,SEt(i))&&aGt(t,i,n,!0))}function WLt(t,e){var n,i,r,a,o,s,c;for(r=t.Kc();r.Ob();)for(i=zz(r.Pb(),10),SJ(s=new ITt,i),USt(s,(kYt(),cIe)),hct(s,(hWt(),kfe),(lN(),!0)),o=e.Kc();o.Ob();)a=zz(o.Pb(),10),SJ(c=new ITt,a),USt(c,SIe),hct(c,kfe,!0),hct(n=new gV,kfe,!0),TJ(n,s),EJ(n,c)}function KLt(t,e,n,i){var r,a,o,s;r=Opt(t,e,n),a=Opt(t,n,e),o=zz(FZ(t.c,e),112),s=zz(FZ(t.c,n),112),ri.b.g&&(a.c[a.c.length]=i);return a}function QLt(){QLt=M,B_e=new kS("CANDIDATE_POSITION_LAST_PLACED_RIGHT",0),P_e=new kS("CANDIDATE_POSITION_LAST_PLACED_BELOW",1),R_e=new kS("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT",2),F_e=new kS("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW",3),j_e=new kS("WHOLE_DRAWING",4)}function JLt(t,e){if(aL(e,239))return hft(t,zz(e,33));if(aL(e,186))return Fft(t,zz(e,118));if(aL(e,354))return eX(t,zz(e,137));if(aL(e,352))return J$t(t,zz(e,79));if(e)return null;throw qw(new jv(Y6t+NEt(new Qv(Sst(Ux(Ote,1),HWt,1,5,[e])))))}function tNt(t){var e,n,i,r,a,o,s;for(a=new VA,r=new Wd(t.d.a);r.a1)for(e=DN((n=new Hm,++t.b,n),t.d),s=lwt(a,0);s.b!=s.d.c;)o=zz(d3(s),121),ZNt(oE(aE(sE(rE(new qm,1),0),e),o))}function eNt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=11&&e){if(yxt(t,e))throw qw(new jv(p6t+YFt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?Cxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=Pwt(e,t,10,i)),(i=GF(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,11,e,e))}function nNt(t){var e,n,i,r;for(i=new cut(new Cd(t.b).a);i.b;)r=zz((n=nnt(i)).cd(),11),hct(e=zz(n.dd(),10),(hWt(),pfe),r),hct(r,_fe,e),hct(r,nfe,(lN(),!0)),USt(r,zz(vEt(e,Xhe),61)),vEt(e,Xhe),hct(r.i,(HZt(),nwe),(V_t(),KSe)),zz(vEt(mW(r.i),Jhe),21).Fc((gBt(),phe))}function iNt(t,e,n){var i,r,a;if(i=0,r=0,t.c)for(a=new Wd(t.d.i.j);a.aa.a)return-1;if(r.a(c=null==t.d?0:t.d.length)){for(l=t.d,t.d=P8(cDe,o7t,63,2*c+4,0,1),a=0;a=0x8000000000000000?(Z9(),gee):(i=!1,t<0&&(i=!0,t=-t),n=0,t>=DXt&&(t-=(n=SQ(t/DXt))*DXt),e=0,t>=MXt&&(t-=(e=SQ(t/MXt))*MXt),r=EO(SQ(t),e,n),i&&Dct(r),r)}function mNt(t,e){var n,i,r,a;for(n=!e||!t.u.Hc((dIt(),nIe)),a=0,r=new Wd(t.e.Cf());r.a=-e&&r==e?new rI(rft(i-1),rft(r)):new rI(rft(i),rft(r-1))}function ANt(){return dWt(),Sst(Ux(sue,1),LKt,77,0,[rce,ece,ace,xce,$ce,Ece,Yce,Mce,Rce,bce,Nce,Ice,jce,fce,Wce,Kse,Lce,qce,kce,zce,Xce,Bce,Xse,Fce,Vce,Uce,Kce,_ce,uce,Ace,vce,Zce,Jse,sce,Cce,Qse,Sce,mce,dce,Dce,pce,nce,tce,yce,gce,Oce,Gce,Vse,Pce,wce,Tce,lce,cce,Hce,oce,hce,ice])}function ENt(t,e,n){t.d=0,t.b=0,e.k==(cTt(),Ise)&&n.k==Ise&&zz(vEt(e,(hWt(),pfe)),10)==zz(vEt(n,pfe),10)&&(T9(e).j==(kYt(),uIe)?UOt(t,e,n):UOt(t,n,e)),e.k==Ise&&n.k==Cse?T9(e).j==(kYt(),uIe)?t.d=1:t.b=1:n.k==Ise&&e.k==Cse&&(T9(n).j==(kYt(),uIe)?t.b=1:t.d=1),cyt(t,e,n)}function TNt(t){var e,n,i,r,a;return a=OAt(t),null!=t.a&&Dq(a,"category",t.a),!W_(new Sd(t.d))&&(ret(a,"knownOptions",i=new Sf),e=new nw(i),n5(new Sd(t.d),e)),!W_(t.g)&&(ret(a,"supportedFeatures",r=new Sf),n=new iw(r),n5(t.g,n)),a}function CNt(t){var e,n,i,r,a,o,s,c;for(e=336,n=0,r=new uF(t.length),s=0,c=(o=t).length;s>16!=7&&e){if(yxt(t,e))throw qw(new jv(p6t+oCt(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?hxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=zz(e,49).gh(t,1,BMe,i)),(i=KU(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,7,e,e))}function DNt(t,e){var n,i;if(e!=t.Cb||t.Db>>16!=3&&e){if(yxt(t,e))throw qw(new jv(p6t+Xht(t)));i=null,t.Cb&&(i=(n=t.Db>>16)>=0?gxt(t,i):t.Cb.ih(t,-1-n,null,i)),e&&(i=zz(e,49).gh(t,0,zMe,i)),(i=XU(t,e,i))&&i.Fi()}else 0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,3,e,e))}function ONt(t,e){var n,i,r,a,o,s,c,u,l;return LMt(),e.d>t.d&&(s=t,t=e,e=s),e.d<63?WPt(t,e):(u=G5(t,o=(-2&t.d)<<4),l=G5(e,o),i=czt(t,U5(u,o)),r=czt(e,U5(l,o)),c=ONt(u,l),n=ONt(i,r),a=U5(a=Lqt(Lqt(a=ONt(czt(u,i),czt(r,l)),c),n),o),Lqt(Lqt(c=U5(c,o<<1),a),n))}function LNt(t,e,n){var i,r,a,o,s;for(o=Nht(t,n),s=P8(Mse,s1t,10,e.length,0,1),i=0,a=o.Kc();a.Ob();)Hv(AB(vEt(r=zz(a.Pb(),11),(hWt(),nfe))))&&(s[i++]=zz(vEt(r,_fe),10));if(i=0;r+=n?1:-1)a|=e.c.Sf(s,r,n,i&&!Hv(AB(vEt(e.j,(hWt(),Qhe))))&&!Hv(AB(vEt(e.j,(hWt(),Ife))))),a|=e.q._f(s,r,n),a|=wFt(t,s[r],n,i);return AY(t.c,e),a}function RNt(t,e,n){var i,r,a,o,s,c,u,l;for(u=0,l=(c=I2(t.j)).length;u1&&(t.a=!0),NU(zz(n.b,65),YF(zO(zz(e.b,65).c),xL(ZF(zO(zz(n.b,65).a),zz(e.b,65).a),r))),XJ(t,e),zNt(t,n)}function qNt(t){var e,n,i,r,a,o;for(r=new Wd(t.a.a);r.a0&&a>0?e++:i>0?n++:a>0?r++:n++}TX(),yO(t.j,new di)}function UNt(t){var e,n;n=null,e=zz(PH(t.g,0),17);do{if(LP(n=e.d.i,(hWt(),hfe)))return zz(vEt(n,hfe),11).i;if(n.k!=(cTt(),Sse)&&bDt(new cG(JL(ddt(n).a.Kc(),new l))))e=zz(Y5(new cG(JL(ddt(n).a.Kc(),new l))),17);else if(n.k!=Sse)return null}while(n&&n.k!=(cTt(),Sse));return n}function GNt(t,e){var n,i,r,a,o,s,c,u,l;for(s=e.j,o=e.g,c=zz(PH(s,s.c.length-1),113),f1(0,s.c.length),u=tvt(t,o,c,l=zz(s.c[0],113)),a=1;au&&(c=n,l=r,u=i);e.a=l,e.c=c}function YNt(t,e){var n;if(!JY(t.b,e.b))throw qw(new $v("Invalid hitboxes for scanline constraint calculation."));(kst(e.b,zz(EF(t.b,e.b),57))||kst(e.b,zz(AF(t.b,e.b),57)))&&(OA(),e.b),t.a[e.b.f]=zz(xR(t.b,e.b),57),(n=zz(vR(t.b,e.b),57))&&(t.a[n.f]=e.b)}function ZNt(t){if(!t.a.d||!t.a.e)throw qw(new $v((_B(qie),qie.k+" must have a source and target "+(_B(Hie),Hie.k+" specified."))));if(t.a.d==t.a.e)throw qw(new $v("Network simplex does not support self-loops: "+t.a+" "+t.a.d+" "+t.a.e));return FN(t.a.d.g,t.a),FN(t.a.e.b,t.a),t.a}function WNt(t,e,n){var i,r,a,o,s,c,u;for(u=new p_(new Qp(t)),s=0,c=(o=Sst(Ux(Use,1),c1t,11,0,[e,n])).length;sc-t.b&&sc-t.a&&s0&&++f;++h}return f}function oPt(t,e){var n,i,r,a,o;for(o=zz(vEt(e,(IDt(),Lxe)),425),a=lwt(e.b,0);a.b!=a.d.c;)if(r=zz(d3(a),86),0==t.b[r.g]){switch(o.g){case 0:Vmt(t,r);break;case 1:HDt(t,r)}t.b[r.g]=2}for(i=lwt(t.a,0);i.b!=i.d.c;)xgt((n=zz(d3(i),188)).b.d,n,!0),xgt(n.c.b,n,!0);hct(e,(UHt(),fxe),t.a)}function sPt(t,e){var n,i,r,a;return JE(),e?e==(ZHt(),RLe)||(e==vLe||e==mLe||e==yLe)&&t!=wLe?new oYt(t,e):((n=(i=zz(e,677)).pk())||(xK(z9((MCt(),JOe),e)),n=i.pk()),!n.i&&(n.i=new Pw),!(r=zz(HI(DV((a=n.i).f,t)),1942))&&KW(a,t,r=new oYt(t,e)),r):oLe}function cPt(t,e){var n,i,r,a,o,s,c,u;for(s=zz(vEt(t,(hWt(),pfe)),11),c=Oct(Sst(Ux(CEe,1),lKt,8,0,[s.i.n,s.n,s.a])).a,u=t.i.n.b,r=0,a=(i=J0(t.e)).length;r0?a.a?n>(s=a.b.rf().a)&&(r=(n-s)/2,a.d.b=r,a.d.c=r):a.d.c=t.s+n:qG(t.u)&&((i=$At(a.b)).c<0&&(a.d.b=-i.c),i.c+i.b>a.b.rf().a&&(a.d.c=i.c+i.b-a.b.rf().a))}function fPt(t,e){var n,i;for(DAt(e,"Semi-Interactive Crossing Minimization Processor",1),n=!1,i=new Wd(t.b);i.a=0){if(e==i)return new rI(rft(-e-1),rft(-e-1));if(e==-i)return new rI(rft(-e),rft(i+1))}return n.Math.abs(e)>n.Math.abs(i)?new rI(rft(-e),rft(e<0?i:i+1)):new rI(rft(e+1),rft(i))}function pPt(t){var e,n;n=zz(vEt(t,(HZt(),xbe)),163),e=zz(vEt(t,(hWt(),ife)),303),n==(Edt(),$fe)?(hct(t,xbe,Hfe),hct(t,ife,(G9(),She))):n==qfe?(hct(t,xbe,Hfe),hct(t,ife,(G9(),The))):e==(G9(),She)?(hct(t,xbe,$fe),hct(t,ife,Che)):e==The&&(hct(t,xbe,qfe),hct(t,ife,Che))}function bPt(){bPt=M,kve=new co,mve=pH(new z2,(xEt(),joe),(dWt(),kce)),xve=WU(pH(new z2,joe,Bce),zoe,Pce),_ve=ubt(ubt($E(WU(pH(new z2,Foe,Yce),zoe,Gce),$oe),Uce),Zce),yve=WU(pH(pH(pH(new z2,Roe,Ece),$oe,Cce),$oe,Sce),zoe,Tce),vve=WU(pH(pH(new z2,$oe,Sce),$oe,sce),zoe,oce)}function wPt(){wPt=M,Sve=pH(WU(new z2,(xEt(),zoe),(dWt(),lce)),joe,kce),Ove=ubt(ubt($E(WU(pH(new z2,Foe,Yce),zoe,Gce),$oe),Uce),Zce),Ive=WU(pH(pH(pH(new z2,Roe,Ece),$oe,Cce),$oe,Sce),zoe,Tce),Dve=pH(pH(new z2,joe,Bce),zoe,Pce),Mve=WU(pH(pH(new z2,$oe,Sce),$oe,sce),zoe,oce)}function mPt(t,e,n,i,r){var a,o;(d5(e)||e.c.i.c!=e.d.i.c)&&ert(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])),n)||d5(e)||(e.c==r?RP(e.a,0,new gD(n)):Bq(e.a,new gD(n)),i&&!$A(t.a,n)&&((o=zz(vEt(e,(HZt(),mbe)),74))||(o=new xy,hct(e,mbe,o)),r5(o,a=new gD(n),o.c.b,o.c),AY(t.a,a)))}function yPt(t){var e;for(e=new cG(JL(fdt(t).a.Kc(),new l));bDt(e);)if(zz(Y5(e),17).c.i.k!=(cTt(),Tse))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function vPt(t,e,n){var i,r,a,o,s,c;if(0==(r=mdt(254&t.Db)))t.Eb=n;else{if(1==r)o=P8(Ote,HWt,1,2,5,1),0==Ryt(t,e)?(o[0]=n,o[1]=t.Eb):(o[0]=t.Eb,o[1]=n);else for(o=P8(Ote,HWt,1,r+1,5,1),a=int(t.Eb),i=2,s=0,c=0;i<=128;i<<=1)i==e?o[c++]=n:0!=(t.Db&i)&&(o[c++]=a[s++]);t.Eb=o}t.Db|=e}function xPt(t,e,i){var r,a,o,s;for(this.b=new Nw,a=0,r=0,s=new Wd(t);s.a0&&(a+=(o=zz(PH(this.b,0),167)).o,r+=o.p),a*=2,r*=2,e>1?a=SQ(n.Math.ceil(a*e)):r=SQ(n.Math.ceil(r/e)),this.a=new Ugt(a,r)}function kPt(t,e,i,r,a,o){var s,c,u,l,h,f,d,g,p,b;for(l=r,e.j&&e.o?(p=(d=zz(FZ(t.f,e.A),57)).d.c+d.d.b,--l):p=e.a.c+e.a.b,h=a,i.q&&i.o?(u=(d=zz(FZ(t.f,i.C),57)).d.c,++h):u=i.a.c,g=p+(c=(u-p)/n.Math.max(2,h-l)),f=l;f=0;o+=r?1:-1){for(s=e[o],c=i==(kYt(),cIe)?r?sdt(s,i):iot(sdt(s,i)):r?iot(sdt(s,i)):sdt(s,i),a&&(t.c[s.p]=c.gc()),h=c.Kc();h.Ob();)l=zz(h.Pb(),11),t.d[l.p]=u++;wst(n,c)}}function APt(t,e,n){var i,r,a,o,s,c,u,l;for(a=Uv(EB(t.b.Kc().Pb())),u=Uv(EB(Kot(e.b))),i=xL(zO(t.a),u-n),r=xL(zO(e.a),n-a),xL(l=YF(i,r),1/(u-a)),this.a=l,this.b=new Nw,s=!0,(o=t.b.Kc()).Pb();o.Ob();)c=Uv(EB(o.Pb())),s&&c-n>F3t&&(this.b.Fc(n),s=!1),this.b.Fc(c);s&&this.b.Fc(n)}function EPt(t){var e,n,i,r;if(hRt(t,t.n),t.d.c.length>0){for(tx(t.c);mDt(t,zz(t0(new Wd(t.e.a)),121))>5,e&=31,i>=t.d)return t.e<0?(DBt(),Qee):(DBt(),ine);if(a=t.d-i,VTt(r=P8(DNe,hXt,25,a+1,15,1),a,t.a,i,e),t.e<0){for(n=0;n0&&t.a[n]<<32-e!=0){for(n=0;n=0)&&(!(n=zHt((MCt(),JOe),r,e))||((i=n.Zj())>1||-1==i)&&3!=BW(z9(JOe,n))))}function NPt(t,e,n,i){var r,a,o,s,c;return s=SAt(zz(Ket((!e.b&&(e.b=new lR(RMe,e,4,7)),e.b),0),82)),c=SAt(zz(Ket((!e.c&&(e.c=new lR(RMe,e,5,8)),e.c),0),82)),QQ(s)==QQ(c)||Iet(c,s)?null:(o=ZQ(e))==n?i:(a=zz(FZ(t.a,o),10))&&(r=a.e)?r:null}function PPt(t,e){var n;switch(DAt(e,"Label side selection ("+(n=zz(vEt(t,(HZt(),Qpe)),276))+")",1),n.g){case 0:EDt(t,(Wvt(),kSe));break;case 1:EDt(t,(Wvt(),_Se));break;case 2:lzt(t,(Wvt(),kSe));break;case 3:lzt(t,(Wvt(),_Se));break;case 4:cBt(t,(Wvt(),kSe));break;case 5:cBt(t,(Wvt(),_Se))}HTt(e)}function BPt(t,e,n){var i,r,a,o,s;if((a=t[fk(n,t.length)])[0].k==(cTt(),Ese))for(r=hk(n,a.length),s=e.j,i=0;i0&&(i[0]+=t.d,s-=i[0]),i[2]>0&&(i[2]+=t.d,s-=i[2]),o=n.Math.max(0,s),i[1]=n.Math.max(i[1],s),V5(t,Gie,a.c+r.b+i[0]-(i[1]-s)/2,i),e==Gie&&(t.c.b=o,t.c.c=a.c+r.b+(o-s)/2)}function VPt(){this.c=P8(PNe,UXt,25,(kYt(),Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe])).length,15,1),this.b=P8(PNe,UXt,25,Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe]).length,15,1),this.a=P8(PNe,UXt,25,Sst(Ux($Ie,1),QJt,61,0,[CIe,uIe,cIe,TIe,SIe]).length,15,1),yT(this.c,RXt),yT(this.b,jXt),yT(this.a,jXt)}function QPt(t,e,n){var i,r,a,o;if(e<=n?(r=e,a=n):(r=n,a=e),i=0,null==t.b)t.b=P8(DNe,hXt,25,2,15,1),t.b[0]=r,t.b[1]=a,t.c=!0;else{if(i=t.b.length,t.b[i-1]+1==r)return void(t.b[i-1]=a);o=P8(DNe,hXt,25,i+2,15,1),sqt(t.b,0,o,0,i),t.b=o,t.b[i-1]>=r&&(t.c=!1,t.a=!1),t.b[i++]=r,t.b[i]=a,t.c||EOt(t)}}function JPt(t,e,n){var i,r,a,o,s,c,u;for(u=e.d,t.a=new Q6(u.c.length),t.c=new Pw,s=new Wd(u);s.a=0?t._g(u,!1,!0):oMt(t,n,!1),58).Kc();a.Ob();){for(r=zz(a.Pb(),56),l=0;l1;)fBt(r,r.i-1);return i}function sBt(t,e){var n,i,r,a,o,s,c;for(DAt(e,"Comment post-processing",1),a=new Wd(t.b);a.at.d[o.p]&&(n+=t5(t.b,a),p3(t.a,rft(a)));for(;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function hBt(t,e,n){var i,r,a,o;for(a=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,r=new DL((!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));r.e!=r.i.gc();)0==(!(i=zz(kwt(r),33)).a&&(i.a=new nY(YMe,i,10,11)),i.a).i||(a+=hBt(t,i,!1));if(n)for(o=QQ(e);o;)a+=(!o.a&&(o.a=new nY(YMe,o,10,11)),o.a).i,o=QQ(o);return a}function fBt(t,e){var n,i,r,a;return t.ej()?(i=null,r=t.fj(),t.ij()&&(i=t.kj(t.pi(e),null)),n=t.Zi(4,a=Nvt(t,e),null,e,r),t.bj()&&null!=a?(i=t.dj(a,i))?(i.Ei(n),i.Fi()):t.$i(n):i?(i.Ei(n),i.Fi()):t.$i(n),a):(a=Nvt(t,e),t.bj()&&null!=a&&(i=t.dj(a,null))&&i.Fi(),a)}function dBt(t){var e,i,r,a,o,s,c,u,l,h;for(l=t.a,e=new Fm,u=0,r=new Wd(t.d);r.ac.d&&(h=c.d+c.a+l));i.c.d=h,e.a.zc(i,e),u=n.Math.max(u,i.c.d+i.c.a)}return u}function gBt(){gBt=M,lhe=new LC("COMMENTS",0),fhe=new LC("EXTERNAL_PORTS",1),dhe=new LC("HYPEREDGES",2),ghe=new LC("HYPERNODES",3),phe=new LC("NON_FREE_PORTS",4),bhe=new LC("NORTH_SOUTH_PORTS",5),mhe=new LC(G1t,6),uhe=new LC("CENTER_LABELS",7),hhe=new LC("END_LABELS",8),whe=new LC("PARTITIONS",9)}function pBt(t){var e,n,i,r,a;for(r=new Nw,e=new OH((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),i=new cG(JL(bLt(t).a.Kc(),new l));bDt(i);)aL(Ket((!(n=zz(Y5(i),79)).b&&(n.b=new lR(RMe,n,4,7)),n.b),0),186)||(a=SAt(zz(Ket((!n.c&&(n.c=new lR(RMe,n,5,8)),n.c),0),82)),e.a._b(a)||(r.c[r.c.length]=a));return r}function bBt(t){var e,n,i,r,a;for(r=new Fm,e=new OH((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),i=new cG(JL(bLt(t).a.Kc(),new l));bDt(i);)aL(Ket((!(n=zz(Y5(i),79)).b&&(n.b=new lR(RMe,n,4,7)),n.b),0),186)||(a=SAt(zz(Ket((!n.c&&(n.c=new lR(RMe,n,5,8)),n.c),0),82)),e.a._b(a)||r.a.zc(a,r));return r}function wBt(t,e,n,i,r){return i<0?((i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt]),e))<0&&(i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),!(i<0||(n.k=i,0))):i>0&&(n.k=i-1,!0)}function mBt(t,e,n,i,r){return i<0?((i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt]),e))<0&&(i=YAt(t,r,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),!(i<0||(n.k=i,0))):i>0&&(n.k=i-1,!0)}function yBt(t,e,n,i,r,a){var o,s,c;if(s=32,i<0){if(e[0]>=t.length)return!1;if(43!=(s=hK(t,e[0]))&&45!=s)return!1;if(++e[0],(i=ZIt(t,e))<0)return!1;45==s&&(i=-i)}return 32==s&&e[0]-n==2&&2==r.b&&(o=(c=(new DA).q.getFullYear()-lXt+lXt-80)%100,a.a=i==o,i+=100*(c/100|0)+(i=l&&(u=r);u&&(h=n.Math.max(h,u.a.o.a)),h>d&&(f=l,d=h)}return f}function TBt(t,e,n){var i,r,a;if(t.e=n,t.d=0,t.b=0,t.f=1,t.i=e,16==(16&t.e)&&(t.i=mRt(t.i)),t.j=t.i.length,VZt(t),a=Xpt(t),t.d!=t.j)throw qw(new ox(kWt((sO(),p8t))));if(t.g){for(i=0;im4t?yO(u,t.b):r<=m4t&&r>y4t?yO(u,t.d):r<=y4t&&r>v4t?yO(u,t.c):r<=v4t&&yO(u,t.a),o=MBt(t,u,o);return a}function DBt(){var t;for(DBt=M,Jee=new Z6(1,1),ene=new Z6(1,10),ine=new Z6(0,0),Qee=new Z6(-1,1),tne=Sst(Ux(une,1),lKt,91,0,[ine,Jee,new Z6(1,2),new Z6(1,3),new Z6(1,4),new Z6(1,5),new Z6(1,6),new Z6(1,7),new Z6(1,8),new Z6(1,9),ene]),nne=P8(une,lKt,91,32,0,1),t=0;t1&&(i=new PS(r,n.b),Bq(e.a,i)),eit(e.a,Sst(Ux(CEe,1),lKt,8,0,[h,l]))}function RBt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,$5t),"ELK Randomizer"),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new Vs))),s2(t,$5t,VQt,LIe),s2(t,$5t,yJt,15),s2(t,$5t,xJt,rft(0)),s2(t,$5t,XQt,bJt)}function jBt(){var t,e,n,i,r,a;for(jBt=M,XLe=P8(NNe,y6t,25,255,15,1),VLe=P8(MNe,KKt,25,16,15,1),e=0;e<255;e++)XLe[e]=-1;for(n=57;n>=48;n--)XLe[n]=n-48<<24>>24;for(i=70;i>=65;i--)XLe[i]=i-65+10<<24>>24;for(r=102;r>=97;r--)XLe[r]=r-97+10<<24>>24;for(a=0;a<10;a++)VLe[a]=48+a&VKt;for(t=10;t<=15;t++)VLe[t]=65+t-10&VKt}function $Bt(t,e,n){var i,r,a,o,s,c,u,l;return s=e.i-t.g/2,c=n.i-t.g/2,u=e.j-t.g/2,l=n.j-t.g/2,a=e.g+t.g/2,o=n.g+t.g/2,i=e.f+t.g/2,r=n.f+t.g/2,s>19!=0)return"-"+GBt(sct(t));for(n=t,i="";0!=n.l||0!=n.m||0!=n.h;){if(n=OHt(n,$5(OXt),!0),e=""+A_(dee),0!=n.l||0!=n.m||0!=n.h)for(r=9-e.length;r>0;r--)e="0"+e;i=e+i}return i}function YBt(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var t="__proto__",e=Object.create(null);return void 0===e[t]&&0==Object.getOwnPropertyNames(e).length&&(e[t]=42,42===e[t]&&0!=Object.getOwnPropertyNames(e).length)}function ZBt(t){var e,n,i,r,a,o,s;for(e=!1,n=0,r=new Wd(t.d.b);r.a=t.a)return-1;if(!iAt(e,i))return-1;if(l3(zz(r.Kb(e),20)))return 1;for(a=0,s=zz(r.Kb(e),20).Kc();s.Ob();){if(-1==(c=XBt(t,(o=zz(s.Pb(),17)).c.i==e?o.d.i:o.c.i,i,r)))return-1;if((a=n.Math.max(a,c))>t.c-1)return-1}return a+1}function VBt(t,e){var n,i,r,a,o,s;if(UI(e)===UI(t))return!0;if(!aL(e,15))return!1;if(i=zz(e,15),s=t.gc(),i.gc()!=s)return!1;if(o=i.Kc(),t.ni()){for(n=0;n0)if(t.qj(),null!=e){for(a=0;a>24;case 97:case 98:case 99:case 100:case 101:case 102:return t-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return t-65+10<<24>>24;default:throw qw(new Ex("Invalid hexadecimal"))}}function eFt(t,e,n){var i,r,a,o;for(DAt(n,"Processor order nodes",2),t.a=Uv(EB(vEt(e,(IDt(),Pxe)))),r=new VA,o=lwt(e.b,0);o.b!=o.d.c;)Hv(AB(vEt(a=zz(d3(o),86),(UHt(),pxe))))&&r5(r,a,r.c.b,r.c);CP(0!=r.b),jqt(t,i=zz(r.a.a.c,86)),!n.b&&Uit(n,1),qFt(t,i,0-Uv(EB(vEt(i,(UHt(),sxe))))/2,0),!n.b&&Uit(n,1),HTt(n)}function nFt(){nFt=M,Fie=new qT("SPIRAL",0),Oie=new qT("LINE_BY_LINE",1),Lie=new qT("MANHATTAN",2),Die=new qT("JITTER",3),Pie=new qT("QUADRANTS_LINE_BY_LINE",4),Bie=new qT("QUADRANTS_MANHATTAN",5),Nie=new qT("QUADRANTS_JITTER",6),Mie=new qT("COMBINE_LINE_BY_LINE_MANHATTAN",7),Iie=new qT("COMBINE_JITTER_MANHATTAN",8)}function iFt(t,e,n,i){var r,a,o,s,c,u;for(c=Pkt(t,n),u=Pkt(e,n),r=!1;c&&u&&(i||vvt(c,u,n));)o=Pkt(c,n),s=Pkt(u,n),D9(e),D9(t),a=c.c,aUt(c,!1),aUt(u,!1),n?(Vvt(e,u.p,a),e.p=u.p,Vvt(t,c.p+1,a),t.p=c.p):(Vvt(t,c.p,a),t.p=c.p,Vvt(e,u.p+1,a),e.p=u.p),CJ(c,null),CJ(u,null),c=o,u=s,r=!0;return r}function rFt(t,e,n,i){var r,a,o,s,c;for(r=!1,a=!1,s=new Wd(i.j);s.a=e.length)throw qw(new Dv("Greedy SwitchDecider: Free layer not in graph."));this.c=e[t],this.e=new XR(i),xrt(this.e,this.c,(kYt(),SIe)),this.i=new XR(i),xrt(this.i,this.c,cIe),this.f=new fU(this.c),this.a=!a&&r.i&&!r.s&&this.c[0].k==(cTt(),Ese),this.a&&wCt(this,t,e.length)}function uFt(t,e){var n,i,r,a,o,s;a=!t.B.Hc((ejt(),qIe)),o=t.B.Hc(GIe),t.a=new Hgt(o,a,t.c),t.n&&xX(t.a.n,t.n),kv(t.g,(Fet(),Gie),t.a),e||((i=new Mbt(1,a,t.c)).n.a=t.k,yU(t.p,(kYt(),uIe),i),(r=new Mbt(1,a,t.c)).n.d=t.k,yU(t.p,TIe,r),(s=new Mbt(0,a,t.c)).n.c=t.k,yU(t.p,SIe,s),(n=new Mbt(0,a,t.c)).n.b=t.k,yU(t.p,cIe,n))}function lFt(t){var e,n,i;switch((e=zz(vEt(t.d,(HZt(),Jpe)),218)).g){case 2:n=TZt(t);break;case 3:i=new Nw,QA(DK(OK(gtt(gtt(new FH(null,new g1(t.d.b,16)),new Mr),new Dr),new Or),new wr),new Sp(i)),n=i;break;default:throw qw(new $v("Compaction not supported for "+e+" edges."))}wHt(t,n),n5(new Sd(t.g),new Tp(t))}function hFt(t,e){var n;return n=new Qt,e&&Uot(n,zz(FZ(t.a,BMe),94)),aL(e,470)&&Uot(n,zz(FZ(t.a,FMe),94)),aL(e,354)?(Uot(n,zz(FZ(t.a,GMe),94)),n):(aL(e,82)&&Uot(n,zz(FZ(t.a,RMe),94)),aL(e,239)?(Uot(n,zz(FZ(t.a,YMe),94)),n):aL(e,186)?(Uot(n,zz(FZ(t.a,ZMe),94)),n):(aL(e,352)&&Uot(n,zz(FZ(t.a,jMe),94)),n))}function fFt(){fFt=M,Jae=new ZD((lWt(),wCe),rft(1)),aoe=new ZD(LCe,80),roe=new ZD(TCe,5),$ae=new ZD(aTe,bJt),toe=new ZD(mCe,rft(1)),ioe=new ZD(xCe,(lN(),!0)),Xae=new WD(50),Kae=new ZD(ZTe,Xae),qae=STe,Vae=sCe,zae=new ZD(pTe,!1),Wae=YTe,Zae=HTe,Yae=RTe,Gae=BTe,Qae=hCe,_Tt(),Uae=Iae,ooe=Nae,Hae=Sae,eoe=Dae,noe=Lae}function dFt(t){var e,n,i,r,a,o,s;for(s=new m5,o=new Wd(t.a);o.a0&&e=0)return!1;if(e.p=n.b,Wz(n.e,e),i==(cTt(),Cse)||i==Ise)for(r=new Wd(e.j);r.a1||-1==o)&&(a|=16),0!=(r.Bb&h6t)&&(a|=64)),0!=(n.Bb&qXt)&&(a|=T7t),a|=k6t):aL(e,457)?a|=512:(i=e.Bj())&&0!=(1&i.i)&&(a|=256),0!=(512&t.Bb)&&(a|=128),a}function LFt(t,e){var n,i,r,a,o;for(t=null==t?YWt:(xW(t),t),r=0;rt.d[s.p]&&(n+=t5(t.b,a),p3(t.a,rft(a))):++o;for(n+=t.b.d*o;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function BFt(t,e){var n;return t.f==sLe?(n=BW(z9((MCt(),JOe),e)),t.e?4==n&&e!=(EMt(),fLe)&&e!=(EMt(),uLe)&&e!=(EMt(),lLe)&&e!=(EMt(),hLe):2==n):!(!t.d||!(t.d.Hc(e)||t.d.Hc(J1(z9((MCt(),JOe),e)))||t.d.Hc(zHt((MCt(),JOe),t.b,e))))||!(!t.f||!sNt((MCt(),t.f),kK(z9(JOe,e))))&&(n=BW(z9(JOe,e)),t.e?4==n:2==n)}function FFt(t,e,i,r){var a,o,s,c,u,l,h,f;return u=(s=zz(tOt(i,(lWt(),bCe)),8)).a,h=s.b+t,(a=n.Math.atan2(h,u))<0&&(a+=t4t),(a+=e)>t4t&&(a-=t4t),l=(c=zz(tOt(r,bCe),8)).a,f=c.b+t,(o=n.Math.atan2(f,l))<0&&(o+=t4t),(o+=e)>t4t&&(o-=t4t),lO(),ait(1e-10),n.Math.abs(a-o)<=1e-10||a==o||isNaN(a)&&isNaN(o)?0:ao?1:GM(isNaN(a),isNaN(o))}function RFt(t){var e,n,i,r,a,o,s;for(s=new Pw,i=new Wd(t.a.b);i.a=t.o)throw qw(new Tm);o=e>>5,a=vG(1,pU(vG(31&e,1))),t.n[n][o]=r?i0(t.n[n][o],a):n0(t.n[n][o],sq(a)),a=vG(a,1),t.n[n][o]=i?i0(t.n[n][o],a):n0(t.n[n][o],sq(a))}catch(i){throw aL(i=dst(i),320)?qw(new Dv(TQt+t.o+"*"+t.p+CQt+e+zWt+n+SQt)):qw(i)}}function qFt(t,e,i,r){var a,o;e&&(a=Uv(EB(vEt(e,(UHt(),hxe))))+r,o=i+Uv(EB(vEt(e,sxe)))/2,hct(e,bxe,rft(pU(fot(n.Math.round(a))))),hct(e,wxe,rft(pU(fot(n.Math.round(o))))),0==e.d.b||qFt(t,zz(iL(new gb(lwt(new db(e).a.d,0))),86),i+Uv(EB(vEt(e,sxe)))+t.a,r+Uv(EB(vEt(e,cxe)))),null!=vEt(e,gxe)&&qFt(t,zz(vEt(e,gxe),86),i,r))}function HFt(t,e){var i,r,a,o,s,c,u,l,h,f,d;for(a=2*Uv(EB(vEt(u=mW(e.a),(HZt(),Awe)))),h=Uv(EB(vEt(u,Dwe))),l=n.Math.max(a,h),o=P8(PNe,UXt,25,e.f-e.c+1,15,1),r=-l,i=0,c=e.b.Kc();c.Ob();)s=zz(c.Pb(),10),r+=t.a[s.c.p]+l,o[i++]=r;for(r+=t.a[e.a.c.p]+l,o[i++]=r,d=new Wd(e.e);d.a0&&(!(i=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),i),'"'))),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function ZFt(t){var e,n,i;return 0!=(64&t.Db)?vTt(t):(e=new fN(n6t),(n=t.k)?cM(cM((e.a+=' "',e),n),'"'):(!t.n&&(t.n=new nY(GMe,t,1,7)),t.n.i>0&&(!(i=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),i),'"'))),cM(x_(cM(x_(cM(x_(cM(x_((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function WFt(t,e){var n,i,r,a,o,s;if(null==e||0==e.length)return null;if(!(r=zz(TQ(t.a,e),149))){for(i=new Rd(new Md(t.b).a.vc().Kc());i.a.Ob();)if(a=zz(i.a.Pb(),42),o=(n=zz(a.dd(),149)).c,s=e.length,yR(o.substr(o.length-s,s),e)&&(e.length==o.length||46==hK(o,o.length-e.length-1))){if(r)return null;r=n}r&&yJ(t.a,e,r)}return r}function KFt(t,e){var n,i,r;return n=new Nt,(i=zz(C4(OK(new FH(null,new g1(t.f,16)),n),P9(new X,new V,new rt,new at,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Zne),Yne]))),21).gc())<(r=zz(C4(OK(new FH(null,new g1(e.f,16)),n),P9(new X,new V,new rt,new at,Sst(Ux(tie,1),LKt,132,0,[Zne,Yne]))),21).gc())?-1:i==r?0:1}function XFt(t){var e,n,i;LP(t,(HZt(),Obe))&&((i=zz(vEt(t,Obe),21)).dc()||(n=new VR(e=zz(Kk(USe),9),zz(TF(e,e.length),9),0),i.Hc((eOt(),OSe))?urt(n,OSe):urt(n,LSe),i.Hc(MSe)||urt(n,MSe),i.Hc(ISe)?urt(n,BSe):i.Hc(SSe)?urt(n,PSe):i.Hc(DSe)&&urt(n,NSe),i.Hc(BSe)?urt(n,ISe):i.Hc(PSe)?urt(n,SSe):i.Hc(NSe)&&urt(n,DSe),hct(t,Obe,n)))}function VFt(t){var e,n,i,r,a,o,s;for(r=zz(vEt(t,(hWt(),rfe)),10),f1(0,(i=t.j).c.length),n=zz(i.c[0],11),o=new Wd(r.j);o.ar.p?(USt(a,TIe),a.d&&(s=a.o.b,e=a.a.b,a.a.b=s-e)):a.j==TIe&&r.p>t.p&&(USt(a,uIe),a.d&&(s=a.o.b,e=a.a.b,a.a.b=-(s-e)));break}return r}function QFt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g;if(a=n,n1&&(i=new PS(r,n.b),Bq(e.a,i)),eit(e.a,Sst(Ux(CEe,1),lKt,8,0,[h,l]))}function wRt(t,e,n){var i,r,a,o,s,c;if(e){if(n<=-1){if(aL(i=iet(e.Tg(),-1-n),99))return zz(i,18);for(s=0,c=(o=zz(e.ah(i),153)).gc();s0){for(r=c.length;r>0&&""==c[r-1];)--r;r=40)&&A$t(t),qqt(t),EPt(t),n=xft(t),i=0;n&&i0&&Bq(t.f,a)):(t.c[o]-=u+1,t.c[o]<=0&&t.a[o]>0&&Bq(t.e,a))))}function QRt(t){var e,n,i,r,a,o,s;for(a=new p_(zz(vZ(new Bt),62)),s=jXt,n=new Wd(t.d);n.a=0&&cn?e:n;u<=h;++u)u==n?s=i++:(a=r[u],l=g.rl(a.ak()),u==e&&(c=u!=h||l?i:i-1),l&&++i);return f=zz(Mft(t,e,n),72),s!=c&&Lm(t,new k7(t.e,7,o,rft(s),d.dd(),c)),f}return zz(Mft(t,e,n),72)}function cjt(t,e){var n,i,r,a,o,s;for(DAt(e,"Port order processing",1),s=zz(vEt(t,(HZt(),cwe)),421),n=new Wd(t.b);n.a=0&&(!Ivt(t,o)||(c<22?s.l|=1<>>1,o.m=u>>>1|(1&l)<<21,o.l=h>>>1|(1&u)<<21,--c;return n&&Dct(s),a&&(i?(dee=sct(t),r&&(dee=hst(dee,(Z9(),bee)))):dee=EO(t.l,t.m,t.h)),s}function fjt(t,e){var n,i,r,a,o,s,c,u,l,h;for(u=t.e[e.c.p][e.p]+1,c=e.c.a.c.length+1,s=new Wd(t.a);s.a0&&(d1(0,t.length),45==t.charCodeAt(0)||(d1(0,t.length),43==t.charCodeAt(0)))?1:0;in)throw qw(new Ex(FXt+t+'"'));return o}function gjt(t){var e,i,r,a,o,s;for(o=new VA,a=new Wd(t.a);a.a1)&&1==e&&zz(t.a[t.b],10).k==(cTt(),Tse)?h$t(zz(t.a[t.b],10),(Wvt(),kSe)):i&&(!n||(t.c-t.b&t.a.length-1)>1)&&1==e&&zz(t.a[t.c-1&t.a.length-1],10).k==(cTt(),Tse)?h$t(zz(t.a[t.c-1&t.a.length-1],10),(Wvt(),_Se)):2==(t.c-t.b&t.a.length-1)?(h$t(zz(Act(t),10),(Wvt(),kSe)),h$t(zz(Act(t),10),_Se)):lLt(t,r),c4(t)}function yjt(t,e,i){var r,a,o,s,c;for(o=0,a=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));a.e!=a.i.gc();)s="",0==(!(r=zz(kwt(a),33)).n&&(r.n=new nY(GMe,r,1,7)),r.n).i||(s=zz(Ket((!r.n&&(r.n=new nY(GMe,r,1,7)),r.n),0),137).a),Uot(c=new out(o++,e,s),r),hct(c,(UHt(),uxe),r),c.e.b=r.j+r.f/2,c.f.a=n.Math.max(r.g,1),c.e.a=r.i+r.g/2,c.f.b=n.Math.max(r.f,1),Bq(e.b,c),_St(i.f,r,c)}function vjt(t){var e,n,i,r,a;i=zz(vEt(t,(hWt(),pfe)),33),a=zz(tOt(i,(HZt(),$be)),174).Hc((vpt(),jIe)),t.e||(r=zz(vEt(t,Jhe),21),e=new PS(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),r.Hc((gBt(),fhe))?(Qwt(i,nwe,(V_t(),ZSe)),jYt(i,e.a,e.b,!1,!0)):Hv(AB(tOt(i,zbe)))||jYt(i,e.a,e.b,!0,!0)),Qwt(i,$be,a?edt(jIe):new VR(n=zz(Kk(VIe),9),zz(TF(n,n.length),9),0))}function xjt(t,e,n){var i,r,a,o;if(e[0]>=t.length)return n.o=0,!0;switch(hK(t,e[0])){case 43:r=1;break;case 45:r=-1;break;default:return n.o=0,!0}if(++e[0],a=e[0],0==(o=ZIt(t,e))&&e[0]==a)return!1;if(e[0]=0&&s!=n&&(a=new tY(t,1,s,o,null),i?i.Ei(a):i=a),n>=0&&(a=new tY(t,1,n,s==n?o:null,e),i?i.Ei(a):i=a)),i}function Tjt(t){var e,n,i;if(null==t.b){if(i=new Tx,null!=t.i&&(aM(i,t.i),i.a+=":"),0!=(256&t.f)){for(0!=(256&t.f)&&null!=t.a&&(rX(t.i)||(i.a+="//"),aM(i,t.a)),null!=t.d&&(i.a+="/",aM(i,t.d)),0!=(16&t.f)&&(i.a+="/"),e=0,n=t.j.length;eu)&&(c+s+oqt(i,u,!1).a<=e.b&&(w7(n,a-n.s),n.c=!0,w7(i,a-n.s),Emt(i,n.s,n.t+n.d+s),i.k=!0,Bat(n.q,i),l=!0,r&&(nit(e,i),i.j=e,t.c.length>o&&(Ext((f1(o,t.c.length),zz(t.c[o],200)),i),0==(f1(o,t.c.length),zz(t.c[o],200)).a.c.length&&u6(t,o)))),l)}function Ljt(t,e){var n,i,r,a,o;if(DAt(e,"Partition midprocessing",1),r=new wQ,QA(DK(new FH(null,new g1(t.a,16)),new pi),new fp(r)),0!=r.d){for(o=zz(C4(o1(new FH(null,(r.i||(r.i=new qL(r,r.c))).Nc())),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),n=zz((i=o.Kc()).Pb(),19);i.Ob();)a=zz(i.Pb(),19),WLt(zz(l6(r,n),21),zz(l6(r,a),21)),n=a;HTt(e)}}function Njt(t,e,n){var i,r,a,o,s;if(0==e.p){for(e.p=1,(r=n)||(r=new rI(new Nw,new VR(i=zz(Kk($Ie),9),zz(TF(i,i.length),9),0))),zz(r.a,15).Fc(e),e.k==(cTt(),Ese)&&zz(r.b,21).Fc(zz(vEt(e,(hWt(),Xhe)),61)),o=new Wd(e.j);o.a0)if(r=zz(t.Ab.g,1934),null==e){for(a=0;a1)for(i=new Wd(r);i.ai.s&&co&&(o=r,u.c=P8(Ote,HWt,1,0,5,1)),r==o&&Wz(u,new rI(n.c.i,n)));TX(),yO(u,t.c),xU(t.b,s.p,u)}}function Ujt(t,e){var n,i,r,a,o,s,c,u;for(a=new Wd(e.b);a.ao&&(o=r,u.c=P8(Ote,HWt,1,0,5,1)),r==o&&Wz(u,new rI(n.d.i,n)));TX(),yO(u,t.c),xU(t.f,s.p,u)}}function Gjt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,d5t),"ELK Box"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges."),new Bs))),s2(t,d5t,VQt,GEe),s2(t,d5t,yJt,15),s2(t,d5t,mJt,rft(0)),s2(t,d5t,O4t,vwt(jEe)),s2(t,d5t,SJt,vwt(zEe)),s2(t,d5t,CJt,vwt(HEe)),s2(t,d5t,XQt,f5t),s2(t,d5t,_Jt,vwt($Ee)),s2(t,d5t,qJt,vwt(qEe)),s2(t,d5t,g5t,vwt(FEe)),s2(t,d5t,c3t,vwt(REe))}function Yjt(t,e){var n,i,r,a,o,s,c,u,l;if(o=(r=t.i).o.a,a=r.o.b,o<=0&&a<=0)return kYt(),CIe;switch(u=t.n.a,l=t.n.b,s=t.o.a,n=t.o.b,e.g){case 2:case 1:if(u<0)return kYt(),SIe;if(u+s>o)return kYt(),cIe;break;case 4:case 3:if(l<0)return kYt(),uIe;if(l+n>a)return kYt(),TIe}return(c=(u+s/2)/o)+(i=(l+n/2)/a)<=1&&c-i<=0?(kYt(),SIe):c+i>=1&&c-i>=0?(kYt(),cIe):i<.5?(kYt(),uIe):(kYt(),TIe)}function Zjt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d;for(n=!1,c=Uv(EB(vEt(e,(HZt(),Mwe)))),f=jKt*c,r=new Wd(e.b);r.ao.n.b-o.d.d+l.a+f&&(d=u.g+l.g,l.a=(l.g*l.a+u.g*u.a)/d,l.g=d,u.f=l,n=!0)),a=o,u=l;return n}function Wjt(t,e,n,i,r,a,o){var s,c,u,l,h;for(h=new dD,c=e.Kc();c.Ob();)for(l=new Wd(zz(c.Pb(),839).wf());l.a0?s.a?r>(u=s.b.rf().b)&&(t.v||1==s.c.d.c.length?(o=(r-u)/2,s.d.d=o,s.d.a=o):(i=(zz(PH(s.c.d,0),181).rf().b-u)/2,s.d.d=n.Math.max(0,i),s.d.a=r-i-u)):s.d.a=t.t+r:qG(t.u)&&((a=$At(s.b)).d<0&&(s.d.d=-a.d),a.d+a.a>s.b.rf().b&&(s.d.a=a.d+a.a-s.b.rf().b))}function Vjt(t,e){var n;switch(mtt(t)){case 6:return ZI(e);case 7:return YI(e);case 8:return GI(e);case 3:return Array.isArray(e)&&!((n=mtt(e))>=14&&n<=16);case 11:return null!=e&&typeof e===BWt;case 12:return null!=e&&(typeof e===OWt||typeof e==BWt);case 0:return Vwt(e,t.__elementTypeId$);case 2:return BY(e)&&!(e.im===I);case 1:return BY(e)&&!(e.im===I)||Vwt(e,t.__elementTypeId$);default:return!0}}function Qjt(t,e){var i,r,a,o;return r=n.Math.min(n.Math.abs(t.c-(e.c+e.b)),n.Math.abs(t.c+t.b-e.c)),o=n.Math.min(n.Math.abs(t.d-(e.d+e.a)),n.Math.abs(t.d+t.a-e.d)),(i=n.Math.abs(t.c+t.b/2-(e.c+e.b/2)))>t.b/2+e.b/2||(a=n.Math.abs(t.d+t.a/2-(e.d+e.a/2)))>t.a/2+e.a/2?1:0==i&&0==a?0:0==i?o/a+1:0==a?r/i+1:n.Math.min(r/i,o/a)+1}function Jjt(t,e){var i,r,a,o,s,c;return(a=rit(t))==(c=rit(e))?t.e==e.e&&t.a<54&&e.a<54?t.fe.f?1:0:(r=t.e-e.e,(i=(t.d>0?t.d:n.Math.floor((t.a-1)*YXt)+1)-(e.d>0?e.d:n.Math.floor((e.a-1)*YXt)+1))>r+1?a:i0&&(s=Ntt(s,kzt(r))),nbt(o,s))):a0&&t.d!=(H9(),Doe)&&(s+=o*(i.d.a+t.a[e.b][i.b]*(e.d.a-i.d.a)/n)),n>0&&t.d!=(H9(),Ioe)&&(c+=o*(i.d.b+t.a[e.b][i.b]*(e.d.b-i.d.b)/n)));switch(t.d.g){case 1:return new PS(s/a,e.d.b);case 2:return new PS(e.d.a,c/a);default:return new PS(s/a,c/a)}}function e$t(t,e){var n,i,r,a;if(Yut(),a=zz(vEt(t.i,(HZt(),nwe)),98),0!=t.j.g-e.j.g||a!=(V_t(),YSe)&&a!=WSe&&a!=ZSe)return 0;if(a==(V_t(),YSe)&&(n=zz(vEt(t,iwe),19),i=zz(vEt(e,iwe),19),n&&i&&0!=(r=n.a-i.a)))return r;switch(t.j.g){case 1:return Sft(t.n.a,e.n.a);case 2:return Sft(t.n.b,e.n.b);case 3:return Sft(e.n.a,t.n.a);case 4:return Sft(e.n.b,t.n.b);default:throw qw(new $v(a1t))}}function n$t(t){var e,n,i,r,a;for(Wz(a=new Q6((!t.a&&(t.a=new OL(PMe,t,5)),t.a).i+2),new PS(t.j,t.k)),QA(new FH(null,(!t.a&&(t.a=new OL(PMe,t,5)),new g1(t.a,16))),new Ib(a)),Wz(a,new PS(t.b,t.c)),e=1;e0&&(Zst(c,!1,(zht(),jCe)),Zst(c,!0,$Ce)),Det(e.g,new uC(t,n)),KW(t.g,e,n)}function r$t(){var t;for(r$t=M,Nee=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),Pee=P8(DNe,hXt,25,37,15,1),Bee=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),Fee=P8(LNe,zXt,25,37,14,1),t=2;t<=36;t++)Pee[t]=SQ(n.Math.pow(t,Nee[t])),Fee[t]=Dkt(gKt,Pee[t])}function a$t(t){var e;if(1!=(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i)throw qw(new jv(q5t+(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i));return e=new xy,gst(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82))&&zrt(e,YZt(t,gst(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82)),!1)),gst(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82))&&zrt(e,YZt(t,gst(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82)),!0)),e}function o$t(t,e){var n,i,r;for(r=!1,i=new cG(JL((e.d?t.a.c==(bQ(),eve)?fdt(e.b):ddt(e.b):t.a.c==(bQ(),tve)?fdt(e.b):ddt(e.b)).a.Kc(),new l));bDt(i);)if(n=zz(Y5(i),17),(Hv(t.a.f[t.a.g[e.b.p].p])||d5(n)||n.c.i.c!=n.d.i.c)&&!Hv(t.a.n[t.a.g[e.b.p].p])&&!Hv(t.a.n[t.a.g[e.b.p].p])&&(r=!0,$A(t.b,t.a.g[Nyt(n,e.b).p])))return e.c=!0,e.a=n,e;return e.c=r,e.a=null,e}function s$t(t,e,n,i,r){var a,o,s,c,u,l,h;for(TX(),yO(t,new Ws),s=new E2(t,0),h=new Nw,a=0;s.b2*a?(l=new Get(h),u=iU(o)/nU(o),c=xZt(l,e,new dy,n,i,r,u),YF(xM(l.e),c),h.c=P8(Ote,HWt,1,0,5,1),a=0,h.c[h.c.length]=l,h.c[h.c.length]=o,a=iU(l)*nU(l)+iU(o)*nU(o)):(h.c[h.c.length]=o,a+=iU(o)*nU(o));return h}function c$t(t,e,n){var i,r,a,o,s,c,u;if(0==(i=n.gc()))return!1;if(t.ej())if(c=t.fj(),kgt(t,e,n),o=1==i?t.Zi(3,null,n.Kc().Pb(),e,c):t.Zi(5,null,n,e,c),t.bj()){for(s=i<100?null:new $k(i),a=e+i,r=e;r0){for(s=0;s>16==-15&&t.Cb.nh()&&O9(new x7(t.Cb,9,13,n,t.c,cmt(q9(zz(t.Cb,59)),t))):aL(t.Cb,88)&&t.Db>>16==-23&&t.Cb.nh()&&(aL(e=t.c,88)||(wWt(),e=pOe),aL(n,88)||(wWt(),n=pOe),O9(new x7(t.Cb,9,10,n,e,cmt(o4(zz(t.Cb,26)),t)))))),t.c}function g$t(t,e){var n,i,r,a,o,s,c,u;for(DAt(e,"Hypernodes processing",1),i=new Wd(t.b);i.an);return r}function m$t(t,e){var n,i,r;i=0!=HOt(t.d,1),!Hv(AB(vEt(e.j,(hWt(),Qhe))))&&!Hv(AB(vEt(e.j,Ife)))||UI(vEt(e.j,(HZt(),Lpe)))===UI((vct(),Nme))?e.c.Tf(e.e,i):i=Hv(AB(vEt(e.j,Qhe))),FNt(t,e,i,!0),Hv(AB(vEt(e.j,Ife)))&&hct(e.j,Ife,(lN(),!1)),Hv(AB(vEt(e.j,Qhe)))&&(hct(e.j,Qhe,(lN(),!1)),hct(e.j,Ife,!0)),n=eSt(t,e);do{if(Lrt(t),0==n)return 0;r=n,FNt(t,e,i=!i,!1),n=eSt(t,e)}while(r>n);return r}function y$t(t,e,n){var i,r,a,o,s,c,u;if(e==n)return!0;if(e=gDt(t,e),n=gDt(t,n),i=Umt(e)){if((c=Umt(n))!=i)return!!c&&(o=i.Dj())==c.Dj()&&null!=o;if(!e.d&&(e.d=new OL(KDe,e,1)),r=(a=e.d).i,!n.d&&(n.d=new OL(KDe,n,1)),r==(u=n.d).i)for(s=0;s0,s=Pdt(e,a),RN(n?s.b:s.g,e),1==kdt(s).c.length&&r5(i,s,i.c.b,i.c),r=new rI(a,e),p3(t.o,r),v9(t.e.a,a))}function E$t(t,e){var i,r,a,o;return r=n.Math.abs(HG(t.b).a-HG(e.b).a),o=n.Math.abs(HG(t.b).b-HG(e.b).b),i=1,a=1,r>t.b.b/2+e.b.b/2&&(i=1-n.Math.min(n.Math.abs(t.b.c-(e.b.c+e.b.b)),n.Math.abs(t.b.c+t.b.b-e.b.c))/r),o>t.b.a/2+e.b.a/2&&(a=1-n.Math.min(n.Math.abs(t.b.d-(e.b.d+e.b.a)),n.Math.abs(t.b.d+t.b.a-e.b.d))/o),(1-n.Math.min(i,a))*n.Math.sqrt(r*r+o*o)}function T$t(t){var e,n,i;for(eYt(t,t.e,t.f,(pQ(),Lve),!0,t.c,t.i),eYt(t,t.e,t.f,Lve,!1,t.c,t.i),eYt(t,t.e,t.f,Nve,!0,t.c,t.i),eYt(t,t.e,t.f,Nve,!1,t.c,t.i),M$t(t,t.c,t.e,t.f,t.i),n=new E2(t.i,0);n.b=65;n--)WLe[n]=n-65<<24>>24;for(i=122;i>=97;i--)WLe[i]=i-97+26<<24>>24;for(r=57;r>=48;r--)WLe[r]=r-48+52<<24>>24;for(WLe[43]=62,WLe[47]=63,a=0;a<=25;a++)KLe[a]=65+a&VKt;for(o=26,c=0;o<=51;++o,c++)KLe[o]=97+c&VKt;for(t=52,s=0;t<=61;++t,s++)KLe[t]=48+s&VKt;KLe[62]=43,KLe[63]=47}function I$t(t,e){var i,r,a,o,s,c,u,l,h,f,d;if(t.dc())return new Uk;for(u=0,h=0,r=t.Kc();r.Ob();)a=zz(r.Pb(),37).f,u=n.Math.max(u,a.a),h+=a.a*a.b;for(u=n.Math.max(u,n.Math.sqrt(h)*Uv(EB(vEt(zz(t.Kc().Pb(),37),(HZt(),_pe))))),f=0,d=0,c=0,i=e,s=t.Kc();s.Ob();)f+(l=(o=zz(s.Pb(),37)).f).a>u&&(f=0,d+=c+e,c=0),tRt(o,f,d),i=n.Math.max(i,f+l.a),c=n.Math.max(c,l.b),f+=l.a+e;return new PS(i+e,d+c+e)}function M$t(t,e,n,i,r){var a,o,s,c,u,l,h;for(o=new Wd(e);o.aa)return kYt(),cIe;break;case 4:case 3:if(c<0)return kYt(),uIe;if(c+t.f>r)return kYt(),TIe}return(o=(s+t.g/2)/a)+(n=(c+t.f/2)/r)<=1&&o-n<=0?(kYt(),SIe):o+n>=1&&o-n>=0?(kYt(),cIe):n<.5?(kYt(),uIe):(kYt(),TIe)}function O$t(t,e,n,i,r){var a,o;if(a=adt(n0(e[0],ZXt),n0(i[0],ZXt)),t[0]=pU(a),a=xG(a,32),n>=r){for(o=1;o0&&(r.b[o++]=0,r.b[o++]=a.b[0]-1),e=1;e0&&(Kf(c,c.d-r.d),r.c==(M6(),Ave)&&Zf(c,c.a-r.d),c.d<=0&&c.i>0&&r5(e,c,e.c.b,e.c));for(a=new Wd(t.f);a.a0&&(Xf(s,s.i-r.d),r.c==(M6(),Ave)&&Wf(s,s.b-r.d),s.i<=0&&s.d>0&&r5(n,s,n.c.b,n.c))}function B$t(t,e,n){var i,r,a,o,s,c,u,l;for(DAt(n,"Processor compute fanout",1),OY(t.b),OY(t.a),s=null,a=lwt(e.b,0);!s&&a.b!=a.d.c;)Hv(AB(vEt(u=zz(d3(a),86),(UHt(),pxe))))&&(s=u);for(r5(c=new VA,s,c.c.b,c.c),_Yt(t,c),l=lwt(e.b,0);l.b!=l.d.c;)o=TB(vEt(u=zz(d3(l),86),(UHt(),rxe))),r=null!=TQ(t.b,o)?zz(TQ(t.b,o),19).a:0,hct(u,ixe,rft(r)),i=1+(null!=TQ(t.a,o)?zz(TQ(t.a,o),19).a:0),hct(u,exe,rft(i));HTt(n)}function F$t(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;for(h=x_t(t,n),s=0;s0),i.a.Xb(i.c=--i.b),l>h+s&&hW(i);for(a=new Wd(f);a.a0),i.a.Xb(i.c=--i.b)}}function R$t(){var t,e,n,i,r,a;if(pWt(),SNe)return SNe;for(lqt(t=new E0(4),tZt(mte,!0)),KUt(t,tZt("M",!0)),KUt(t,tZt("C",!0)),a=new E0(4),i=0;i<11;i++)QPt(a,i,i);return lqt(e=new E0(4),tZt("M",!0)),QPt(e,4448,4607),QPt(e,65438,65439),nHt(r=new rO(2),t),nHt(r,uNe),(n=new rO(2)).$l(bU(a,tZt("L",!0))),n.$l(e),n=new l4(3,n),n=new YY(r,n),SNe=n}function j$t(t){var e,n;if(!Qat(e=TB(tOt(t,(lWt(),nTe))),t)&&!C8(t,yCe)&&(0!=(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i||Hv(AB(tOt(t,TTe))))){if(null!=e&&0!=REt(e).length)throw wGt(t,n=cM(cM(new fN("Layout algorithm '"),e),"' not found for ")),qw(new rx(n.a));if(!Qat(p1t,t))throw wGt(t,n=cM(cM(new fN("Unable to load default layout algorithm "),p1t)," for unconfigured node ")),qw(new rx(n.a))}}function $$t(t){var e,i,r,a,o,s,c,u,l,h,f,d,g;if(i=t.i,e=t.n,0==t.b)for(g=i.c+e.b,d=i.b-e.b-e.c,u=0,h=(s=t.a).length;u0&&(f-=r[0]+t.c,r[0]+=t.c),r[2]>0&&(f-=r[2]+t.c),r[1]=n.Math.max(r[1],f),YU(t.a[1],i.c+e.b+r[0]-(r[1]-f)/2,r[1]);for(c=0,l=(o=t.a).length;c0?(t.n.c.length-1)*t.i:0,i=new Wd(t.n);i.a1)for(i=lwt(r,0);i.b!=i.d.c;)for(a=0,s=new Wd((n=zz(d3(i),231)).e);s.a0&&(e[0]+=t.c,f-=e[0]),e[2]>0&&(f-=e[2]+t.c),e[1]=n.Math.max(e[1],f),ZU(t.a[1],r.d+i.d+e[0]-(e[1]-f)/2,e[1]);else for(g=r.d+i.d,d=r.a-i.d-i.a,u=0,h=(s=t.a).length;u=0&&a!=n)throw qw(new jv(s8t));for(r=0,c=0;c0||0==Mdt(a.b.d,t.b.d+t.b.a)&&r.b<0||0==Mdt(a.b.d+a.b.a,t.b.d)&&r.b>0){c=0;break}}else c=n.Math.min(c,HSt(t,a,r));c=n.Math.min(c,K$t(t,o,c,r))}return c}function X$t(t,e){var n,i,r,a,o,s;if(t.b<2)throw qw(new jv("The vector chain must contain at least a source and a target point."));for(CP(0!=t.b),SD(e,(i=zz(t.a.a.c,8)).a,i.b),s=new aP((!e.a&&(e.a=new OL(PMe,e,5)),e.a)),a=lwt(t,1);a.aUv(fL(o.g,o.d[0]).a)?(CP(c.b>0),c.a.Xb(c.c=--c.b),vF(c,o),r=!0):s.e&&s.e.gc()>0&&(a=(!s.e&&(s.e=new Nw),s.e).Mc(e),u=(!s.e&&(s.e=new Nw),s.e).Mc(n),(a||u)&&((!s.e&&(s.e=new Nw),s.e).Fc(o),++o.c));r||(i.c[i.c.length]=o)}function ozt(t){var e,n,i;if(mD(zz(vEt(t,(HZt(),nwe)),98)))for(n=new Wd(t.j);n.a>>0).toString(16),e.length-2,e.length):t>=qXt?"\\v"+hP(e="0"+(t>>>0).toString(16),e.length-6,e.length):""+String.fromCharCode(t&VKt)}return n}function czt(t,e){var n,i,r,a,o,s,c,u,l,h;if(o=t.e,0==(c=e.e))return t;if(0==o)return 0==e.e?e:new fY(-e.e,e.d,e.a);if((a=t.d)+(s=e.d)==2)return n=n0(t.a[0],ZXt),i=n0(e.a[0],ZXt),o<0&&(n=k9(n)),c<0&&(i=k9(i)),ewt(rdt(n,i));if(-1==(r=a!=s?a>s?1:-1:Tut(t.a,e.a,a)))h=-c,l=o==c?p6(e.a,s,t.a,a):N8(e.a,s,t.a,a);else if(h=o,o==c){if(0==r)return DBt(),ine;l=p6(t.a,a,e.a,s)}else l=N8(t.a,a,e.a,s);return Z0(u=new fY(h,l.length,l)),u}function uzt(t){var e,n,i,r,a,o;for(this.e=new Nw,this.a=new Nw,n=t.b-1;n<3;n++)RP(t,0,zz(Fwt(t,0),8));if(t.b<4)throw qw(new jv("At (least dimension + 1) control points are necessary!"));for(this.b=3,this.d=!0,this.c=!1,MOt(this,t.b+this.b-1),o=new Nw,a=new Wd(this.e),e=0;e=e.o&&n.f<=e.f||.5*e.a<=n.f&&1.5*e.a>=n.f){if((a=zz(PH(e.n,e.n.c.length-1),211)).e+a.d+n.g+r<=i&&(zz(PH(e.n,e.n.c.length-1),211).f-t.f+n.f<=t.b||1==t.a.c.length))return xdt(e,n),!0;if(e.s+n.g<=i&&(e.t+e.d+n.f+r<=t.b||1==t.a.c.length))return Wz(e.b,n),o=zz(PH(e.n,e.n.c.length-1),211),Wz(e.n,new FQ(e.s,o.f+o.a+e.i,e.i)),lyt(zz(PH(e.n,e.n.c.length-1),211),n),q$t(e,n),!0}return!1}function fzt(t,e,n){var i,r,a,o;return t.ej()?(r=null,a=t.fj(),i=t.Zi(1,o=ctt(t,e,n),n,e,a),t.bj()&&!(t.ni()&&null!=o?Pht(o,n):UI(o)===UI(n))?(null!=o&&(r=t.dj(o,r)),r=t.cj(n,r),t.ij()&&(r=t.lj(o,n,r)),r?(r.Ei(i),r.Fi()):t.$i(i)):(t.ij()&&(r=t.lj(o,n,r)),r?(r.Ei(i),r.Fi()):t.$i(i)),o):(o=ctt(t,e,n),t.bj()&&!(t.ni()&&null!=o?Pht(o,n):UI(o)===UI(n))&&(r=null,null!=o&&(r=t.dj(o,null)),(r=t.cj(n,r))&&r.Fi()),o)}function dzt(t,e){var i,r,a,o,s,c,u;e%=24,t.q.getHours()!=e&&((i=new n.Date(t.q.getTime())).setDate(i.getDate()+1),(s=t.q.getTimezoneOffset()-i.getTimezoneOffset())>0&&(c=s/60|0,u=s%60,r=t.q.getDate(),t.q.getHours()+c>=24&&++r,a=new n.Date(t.q.getFullYear(),t.q.getMonth(),r,e+c,t.q.getMinutes()+u,t.q.getSeconds(),t.q.getMilliseconds()),t.q.setTime(a.getTime()))),o=t.q.getTime(),t.q.setTime(o+36e5),t.q.getHours()!=e&&t.q.setTime(o)}function gzt(t,e){var n,i,r,a;if(DAt(e,"Path-Like Graph Wrapping",1),0!=t.b.c.length)if(null==(r=new TDt(t)).i&&(r.i=Krt(r,new xa)),n=Uv(r.i)*r.f/(null==r.i&&(r.i=Krt(r,new xa)),Uv(r.i)),r.b>n)HTt(e);else{switch(zz(vEt(t,(HZt(),zwe)),337).g){case 2:a=new Aa;break;case 0:a=new ga;break;default:a=new Ea}if(i=a.Vf(t,r),!a.Wf())switch(zz(vEt(t,Zwe),338).g){case 2:i=WSt(r,i);break;case 1:i=jAt(r,i)}rHt(t,r,i),HTt(e)}else HTt(e)}function pzt(t,e){var n,i,r,a;if(h1(t.d,t.e),t.c.a.$b(),0!=Uv(EB(vEt(e.j,(HZt(),Ipe))))||0!=Uv(EB(vEt(e.j,Ipe))))for(n=tJt,UI(vEt(e.j,Lpe))!==UI((vct(),Nme))&&hct(e.j,(hWt(),Qhe),(lN(),!0)),a=zz(vEt(e.j,Pwe),19).a,r=0;r(f1(a+1,e.c.length),zz(e.c[a+1],19)).a-i&&++s,Wz(r,(f1(a+s,e.c.length),zz(e.c[a+s],19))),o+=(f1(a+s,e.c.length),zz(e.c[a+s],19)).a-i,++n;n1&&(c>iU(s)*nU(s)/2||0==o.b)&&(h=new Get(f),l=iU(s)/nU(s),u=xZt(h,e,new dy,n,i,r,l),YF(xM(h.e),u),s=h,d.c[d.c.length]=h,c=0,f.c=P8(Ote,HWt,1,0,5,1)));return wst(d,f),d}function vzt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p;if(n.mh(e)&&(l=(d=e)?zz(i,49).xh(d):null))if(p=n.bh(e,t.a),(g=e.t)>1||-1==g)if(h=zz(p,69),f=zz(l,69),h.dc())f.$b();else for(o=!!Imt(e),a=0,s=t.a?h.Kc():h.Zh();s.Ob();)u=zz(s.Pb(),56),(r=zz(ftt(t,u),56))?(o?-1==(c=f.Xc(r))?f.Xh(a,r):a!=c&&f.ji(a,r):f.Xh(a,r),++a):t.b&&!o&&(f.Xh(a,u),++a);else null==p?l.Wb(null):null==(r=ftt(t,p))?t.b&&!Imt(e)&&l.Wb(p):l.Wb(r)}function xzt(t,e){var i,r,a,o,s,c,u,h;for(i=new Ln,a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)if(!d5(r=zz(Y5(a),17))&&iAt(c=r.c.i,Zse)){if(-1==(h=XBt(t,c,Zse,Yse)))continue;i.b=n.Math.max(i.b,h),!i.a&&(i.a=new Nw),Wz(i.a,c)}for(s=new cG(JL(ddt(e).a.Kc(),new l));bDt(s);)if(!d5(o=zz(Y5(s),17))&&iAt(u=o.d.i,Yse)){if(-1==(h=XBt(t,u,Yse,Zse)))continue;i.d=n.Math.max(i.d,h),!i.c&&(i.c=new Nw),Wz(i.c,u)}return i}function kzt(t){var e,n,i,r;if(LMt(),e=SQ(t),t1e6)throw qw(new Mv("power of ten too big"));if(t<=FWt)return U5(cMt(sne[1],e),e);for(r=i=cMt(sne[1],FWt),n=fot(t-FWt),e=SQ(t%FWt);Xlt(n,FWt)>0;)r=Ntt(r,i),n=rdt(n,FWt);for(r=U5(r=Ntt(r,cMt(sne[1],e)),FWt),n=fot(t-FWt);Xlt(n,FWt)>0;)r=U5(r,FWt),n=rdt(n,FWt);return r=U5(r,e)}function _zt(t,e){var n,i,r,a,o,s,c,u;for(DAt(e,"Hierarchical port dummy size processing",1),s=new Nw,u=new Nw,n=2*Uv(EB(vEt(t,(HZt(),xwe)))),r=new Wd(t.b);r.au&&i>u)){r=!1,n.n&&Mq(n,"bk node placement breaks on "+s+" which should have been after "+l);break}l=s,u=Uv(e.p[s.p])+Uv(e.d[s.p])+s.o.b+s.d.a}if(!r)break}return n.n&&Mq(n,e+" is feasible: "+r),r}function Dzt(t,e,n,i){var r,a,o,s,c,u,l;for(s=-1,l=new Wd(t);l.a=b&&t.e[u.p]>g*t.b||y>=i*b)&&(f.c[f.c.length]=c,c=new Nw,zrt(s,o),o.a.$b(),l-=h,d=n.Math.max(d,l*t.b+p),l+=y,m=y,y=0,h=0,p=0);return new rI(d,f)}function Pzt(t){var e,n,i,r,a,o,s,c,u,l,h,f;for(n=new Rd(new Md(t.c.b).a.vc().Kc());n.a.Ob();)s=zz(n.a.Pb(),42),null==(r=(e=zz(s.dd(),149)).a)&&(r=""),!(i=jB(t.c,r))&&0==r.length&&(i=xht(t)),i&&!xgt(i.c,e,!1)&&Bq(i.c,e);for(o=lwt(t.a,0);o.b!=o.d.c;)a=zz(d3(o),478),u=A5(t.c,a.a),f=A5(t.c,a.b),u&&f&&Bq(u.c,new rI(f,a.c));for(vX(t.a),h=lwt(t.b,0);h.b!=h.d.c;)l=zz(d3(h),478),e=RB(t.c,l.a),c=A5(t.c,l.b),e&&c&&BE(e,c,l.c);vX(t.b)}function Bzt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;a=new Cf(t),p5((o=new bxt).g),p5(o.j),OY(o.b),p5(o.d),p5(o.i),OY(o.k),OY(o.c),OY(o.e),d=gIt(o,a,null),DOt(o,a),r=d,e&&(s=iqt(u=new Cf(e)),yTt(r,Sst(Ux(tEe,1),HWt,527,0,[s]))),f=!1,h=!1,n&&(u=new Cf(n),d8t in u.a&&(f=GQ(u,d8t).ge().a),g8t in u.a&&(h=GQ(u,g8t).ge().a)),l=Ok(znt(new Zy,f),h),qTt(new ls,r,l),d8t in a.a&&ret(a,d8t,null),(f||h)&&(ezt(l,c=new wv,f,h),ret(a,d8t,c)),i=new Zb(o),Zct(new MD(r),i)}function Fzt(t,e,n){var i,r,a,o,s,c,u,l,h;for(o=new Qxt,u=Sst(Ux(DNe,1),hXt,25,15,[0]),r=-1,a=0,i=0,c=0;c0)){if(r=-1,32==hK(l.c,0)){if(h=u[0],vtt(e,u),u[0]>h)continue}else if(OV(e,l.c,u[0])){u[0]+=l.c.length;continue}return 0}if(r<0&&l.a&&(r=c,a=u[0],i=0),r>=0){if(s=l.b,c==r&&0==(s-=i++))return 0;if(!NYt(e,u,l,s,o)){c=r-1,u[0]=a;continue}}else if(r=-1,!NYt(e,u,l,0,o))return 0}return bYt(o,n)?u[0]:0}function Rzt(t){var e,n,i,r,a,o;if(!t.f){if(o=new Ec,a=new Ec,null==(e=COe).a.zc(t,e)){for(r=new DL(xV(t));r.e!=r.i.gc();)wZ(o,Rzt(zz(kwt(r),26)));e.a.Bc(t),e.a.gc()}for(!t.s&&(t.s=new nY($De,t,21,17)),i=new DL(t.s);i.e!=i.i.gc();)aL(n=zz(kwt(i),170),99)&&h7(a,zz(n,18));olt(a),t.r=new Aq(t,(zz(Ket(XX((XZ(),eOe).o),6),18),a.i),a.g),wZ(o,t.r),olt(o),t.f=new NM((zz(Ket(XX(eOe.o),5),18),o.i),o.g),C5(t).b&=-3}return t.f}function jzt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g;for(o=t.o,i=P8(DNe,hXt,25,o,15,1),r=P8(DNe,hXt,25,o,15,1),n=t.p,e=P8(DNe,hXt,25,n,15,1),a=P8(DNe,hXt,25,n,15,1),u=0;u=0&&!yyt(t,l,h);)--h;r[l]=h}for(d=0;d=0&&!yyt(t,s,g);)--s;a[g]=s}for(c=0;ce[f]&&fi[c]&&zFt(t,c,f,!1,!0)}function $zt(t){var e,n,i,r,a,o,s,c;n=Hv(AB(vEt(t,(fFt(),zae)))),a=t.a.c.d,s=t.a.d.d,n?(o=xL(ZF(new PS(s.a,s.b),a),.5),c=xL(zO(t.e),.5),e=ZF(YF(new PS(a.a,a.b),o),c),qP(t.d,e)):(r=Uv(EB(vEt(t.a,roe))),i=t.d,a.a>=s.a?a.b>=s.b?(i.a=s.a+(a.a-s.a)/2+r,i.b=s.b+(a.b-s.b)/2-r-t.e.b):(i.a=s.a+(a.a-s.a)/2+r,i.b=a.b+(s.b-a.b)/2+r):a.b>=s.b?(i.a=a.a+(s.a-a.a)/2+r,i.b=s.b+(a.b-s.b)/2+r):(i.a=a.a+(s.a-a.a)/2+r,i.b=a.b+(s.b-a.b)/2-r-t.e.b))}function zzt(t,e){var n,i,r,a,o,s,c;if(null==t)return null;if(0==(a=t.length))return"";for(c=P8(MNe,KKt,25,a,15,1),j8(0,a,t.length),j8(0,a,c.length),VY(t,0,a,c,0),n=null,s=e,r=0,o=0;r0?hP(n.a,0,a-1):"":t.substr(0,a-1):n?n.a:t}function qzt(t){NE(t,new TAt(mk(gk(wk(bk(new bs,ZQt),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new ae))),s2(t,ZQt,WQt,vwt(_ae)),s2(t,ZQt,KQt,vwt(wae)),s2(t,ZQt,XQt,vwt(fae)),s2(t,ZQt,VQt,vwt(mae)),s2(t,ZQt,WVt,vwt(xae)),s2(t,ZQt,KVt,vwt(vae)),s2(t,ZQt,ZVt,vwt(kae)),s2(t,ZQt,XVt,vwt(yae)),s2(t,ZQt,qQt,vwt(gae)),s2(t,ZQt,HQt,vwt(dae)),s2(t,ZQt,UQt,vwt(pae)),s2(t,ZQt,GQt,vwt(bae))}function Hzt(t,e,n,i){var r,a,o,s,c,u,l;if(zf(a=new Lmt(t),(cTt(),Ise)),hct(a,(HZt(),nwe),(V_t(),ZSe)),r=0,e){for(hct(o=new ITt,(hWt(),pfe),e),hct(a,pfe,e.i),USt(o,(kYt(),SIe)),SJ(o,a),u=0,l=(c=J0(e.e)).length;u0)if((i-=r.length-e)>=0){for(a.a+="0.";i>Uee.length;i-=Uee.length)NH(a,Uee);bF(a,Uee,SQ(i)),cM(a,r.substr(e))}else cM(a,hP(r,e,SQ(i=e-i))),a.a+=".",cM(a,tM(r,SQ(i)));else{for(cM(a,r.substr(e));i<-Uee.length;i+=Uee.length)NH(a,Uee);bF(a,Uee,SQ(-i))}return a.a}function Yzt(t,e,i,r){var a,o,s,c,u,l,h,f,d;return l=(u=ZF(new PS(i.a,i.b),t)).a*e.b-u.b*e.a,h=e.a*r.b-e.b*r.a,f=(u.a*r.b-u.b*r.a)/h,d=l/h,0==h?0==l?(o=W8(t,a=YF(new PS(i.a,i.b),xL(new PS(r.a,r.b),.5))),s=W8(YF(new PS(t.a,t.b),e),a),c=.5*n.Math.sqrt(r.a*r.a+r.b*r.b),o=0&&f<=1&&d>=0&&d<=1?YF(new PS(t.a,t.b),xL(new PS(e.a,e.b),f)):null}function Zzt(t,e,n){var i,r,a,o,s;if(i=zz(vEt(t,(HZt(),Npe)),21),n.a>e.a&&(i.Hc((p_t(),WEe))?t.c.a+=(n.a-e.a)/2:i.Hc(XEe)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(i.Hc((p_t(),QEe))?t.c.b+=(n.b-e.b)/2:i.Hc(VEe)&&(t.c.b+=n.b-e.b)),zz(vEt(t,(hWt(),Jhe)),21).Hc((gBt(),fhe))&&(n.a>e.a||n.b>e.b))for(s=new Wd(t.a);s.ae.a&&(i.Hc((p_t(),WEe))?t.c.a+=(n.a-e.a)/2:i.Hc(XEe)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(i.Hc((p_t(),QEe))?t.c.b+=(n.b-e.b)/2:i.Hc(VEe)&&(t.c.b+=n.b-e.b)),zz(vEt(t,(hWt(),Jhe)),21).Hc((gBt(),fhe))&&(n.a>e.a||n.b>e.b))for(o=new Wd(t.a);o.ae&&(r=0,a+=u.b+n,l.c[l.c.length]=u,nit(u=new P0(a,n),i=new sut(0,u.f,u,n)),r=0),0==i.b.c.length||s.f>=i.o&&s.f<=i.f||.5*i.a<=s.f&&1.5*i.a>=s.f?xdt(i,s):(nit(u,o=new sut(i.s+i.r+n,u.f,u,n)),xdt(o,s)),r=s.i+s.g;return l.c[l.c.length]=u,l}function Qzt(t){var e,n,i,r,a,o;if(!t.a){if(t.o=null,o=new bw(t),e=new Tc,null==(n=COe).a.zc(t,n)){for(a=new DL(xV(t));a.e!=a.i.gc();)wZ(o,Qzt(zz(kwt(a),26)));n.a.Bc(t),n.a.gc()}for(!t.s&&(t.s=new nY($De,t,21,17)),r=new DL(t.s);r.e!=r.i.gc();)aL(i=zz(kwt(r),170),322)&&h7(e,zz(i,34));olt(e),t.k=new _q(t,(zz(Ket(XX((XZ(),eOe).o),7),18),e.i),e.g),wZ(o,t.k),olt(o),t.a=new NM((zz(Ket(XX(eOe.o),4),18),o.i),o.g),C5(t).b&=-2}return t.a}function Jzt(t,e,n,i,r,a,o){var s,c,u,l,h;return l=!1,s=bNt(n.q,e.f+e.b-n.q.f),!((h=r-(n.q.e+s-o))=(f1(a,t.c.length),zz(t.c[a],200)).e,!((u=oqt(i,h,!1).a)>e.b&&!c)&&((c||u<=e.b)&&(c&&u>e.b?(n.d=u,w7(n,zTt(n,u))):(s_t(n.q,s),n.c=!0),w7(i,r-(n.s+n.r)),Emt(i,n.q.e+n.q.d,e.f),nit(e,i),t.c.length>a&&(Ext((f1(a,t.c.length),zz(t.c[a],200)),i),0==(f1(a,t.c.length),zz(t.c[a],200)).a.c.length&&u6(t,a)),l=!0),l))}function tqt(t,e,n,i){var r,a,o,s,c,u,l;if(l=sPt(t.e.Tg(),e),r=0,a=zz(t.g,119),c=null,JE(),zz(e,66).Oj()){for(s=0;st.o.a&&(h=(u-t.o.a)/2,c.b=n.Math.max(c.b,h),c.c=n.Math.max(c.c,h))}}function iqt(t){var e,n,i,r,a,o;for(aD(r=new F0,(Pst(),QAe)),i=new Td(new Qv(new AA(t,_rt(t,P8(Vee,lKt,2,0,6,1))).b));i.b0?t.i:0)>e&&u>0&&(o=0,s+=u+t.i,a=n.Math.max(a,d),r+=u+t.i,u=0,d=0,i&&(++f,Wz(t.n,new FQ(t.s,s,t.i))),c=0),d+=l.g+(c>0?t.i:0),u=n.Math.max(u,l.f),i&&lyt(zz(PH(t.n,f),211),l),o+=l.g+(c>0?t.i:0),++c;return a=n.Math.max(a,d),r+=u,i&&(t.r=a,t.d=r,xvt(t.j)),new YK(t.s,t.t,a,r)}function sqt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;if(OA(),TY(t,"src"),TY(n,"dest"),f=nut(t),c=nut(n),wq(0!=(4&f.i),"srcType is not an array"),wq(0!=(4&c.i),"destType is not an array"),h=f.c,o=c.c,wq(0!=(1&h.i)?h==o:0==(1&o.i),"Array types don't match"),d=t.length,u=n.length,e<0||i<0||r<0||e+r>d||i+r>u)throw qw(new hm);if(0==(1&h.i)&&f!=c)if(l=int(t),a=int(n),UI(t)===UI(n)&&ei;)OZ(a,s,l[--e]);else for(s=i+r;i0&&$St(t,e,n,i,r,!0)}function cqt(){cqt=M,ane=Sst(Ux(DNe,1),hXt,25,15,[$Kt,1162261467,DKt,1220703125,362797056,1977326743,DKt,387420489,OXt,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,DKt,1291467969,1544804416,1838265625,60466176]),one=Sst(Ux(DNe,1),hXt,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}function uqt(t){var e,n,i,r,a,o,s;for(i=new Wd(t.b);i.a=t.b.length?(a[r++]=o.b[i++],a[r++]=o.b[i++]):i>=o.b.length?(a[r++]=t.b[n++],a[r++]=t.b[n++]):o.b[i]0?t.i:0)),++e;for(egt(t.n,u),t.d=i,t.r=r,t.g=0,t.f=0,t.e=0,t.o=RXt,t.p=RXt,o=new Wd(t.b);o.a0&&(!(r=(!t.n&&(t.n=new nY(GMe,t,1,7)),zz(Ket(t.n,0),137)).a)||cM(cM((e.a+=' "',e),r),'"'))),!t.b&&(t.b=new lR(RMe,t,4,7)),n=!(t.b.i<=1&&(!t.c&&(t.c=new lR(RMe,t,5,8)),t.c.i<=1)),e.a+=n?" [":" ",cM(e,QL(new yx,new DL(t.b))),n&&(e.a+="]"),e.a+=i1t,n&&(e.a+="["),cM(e,QL(new yx,new DL(t.c))),n&&(e.a+="]"),e.a)}function gqt(t,e){var n,i,r,a,o,s,c;if(t.a){if(c=null,null!=(s=t.a.ne())?e.a+=""+s:null!=(o=t.a.Dj())&&(-1!=(a=UM(o,QAt(91)))?(c=o.substr(a),e.a+=""+hP(null==o?YWt:(xW(o),o),0,a)):e.a+=""+o),t.d&&0!=t.d.i){for(r=!0,e.a+="<",i=new DL(t.d);i.e!=i.i.gc();)n=zz(kwt(i),87),r?r=!1:e.a+=zWt,gqt(n,e);e.a+=">"}null!=c&&(e.a+=""+c)}else t.e?null!=(s=t.e.zb)&&(e.a+=""+s):(e.a+="?",t.b?(e.a+=" super ",gqt(t.b,e)):t.f&&(e.a+=" extends ",gqt(t.f,e)))}function pqt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E;for(v=t.c,x=e.c,n=_9(v.a,t,0),i=_9(x.a,e,0),m=zz(Bgt(t,(sit(),qme)).Kc().Pb(),11),A=zz(Bgt(t,Hme).Kc().Pb(),11),y=zz(Bgt(e,qme).Kc().Pb(),11),E=zz(Bgt(e,Hme).Kc().Pb(),11),b=J0(m.e),k=J0(A.g),w=J0(y.e),_=J0(E.g),Vvt(t,i,x),u=0,d=(a=w).length;ul?new GJ((M6(),Eve),i,e,u-l):u>0&&l>0&&(new GJ((M6(),Eve),e,i,0),new GJ(Eve,i,e,0))),o)}function mqt(t,e){var i,r,a,o,s;for(s=new cut(new Cd(t.f.b).a);s.b;){if(a=zz((o=nnt(s)).cd(),594),1==e){if(a.gf()!=(zht(),qCe)&&a.gf()!=RCe)continue}else if(a.gf()!=(zht(),jCe)&&a.gf()!=$Ce)continue;switch(r=zz(zz(o.dd(),46).b,81),i=zz(zz(o.dd(),46).a,189).c,a.gf().g){case 2:r.g.c=t.e.a,r.g.b=n.Math.max(1,r.g.b+i);break;case 1:r.g.c=r.g.c+i,r.g.b=n.Math.max(1,r.g.b-i);break;case 4:r.g.d=t.e.b,r.g.a=n.Math.max(1,r.g.a+i);break;case 3:r.g.d=r.g.d+i,r.g.a=n.Math.max(1,r.g.a-i)}}}function yqt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(c=P8(DNe,hXt,25,e.b.c.length,15,1),l=P8(Ose,LKt,267,e.b.c.length,0,1),u=P8(Mse,s1t,10,e.b.c.length,0,1),d=0,g=(f=t.a).length;d0&&u[r]&&(p=RO(t.b,u[r],a)),b=n.Math.max(b,a.c.c.b+p);for(o=new Wd(h.e);o.a1)throw qw(new jv(M9t));c||(a=J3(e,i.Kc().Pb()),o.Fc(a))}return uct(t,ACt(t,e,n),o)}function Aqt(t,e){var n,i,r,a;for(Vet(e.b.j),QA(OK(new FH(null,new g1(e.d,16)),new aa),new oa),a=new Wd(e.d);a.at.o.b)return!1;if(n=sdt(t,cIe),e.d+e.a+(n.gc()-1)*r>t.o.b)return!1}return!0}function Lqt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;if(o=t.e,c=e.e,0==o)return e;if(0==c)return t;if((a=t.d)+(s=e.d)==2)return n=n0(t.a[0],ZXt),i=n0(e.a[0],ZXt),o==c?(g=pU(l=adt(n,i)),0==(d=pU(kG(l,32)))?new Z6(o,g):new fY(o,2,Sst(Ux(DNe,1),hXt,25,15,[g,d]))):ewt(o<0?rdt(i,n):rdt(n,i));if(o==c)f=o,h=a>=s?N8(t.a,a,e.a,s):N8(e.a,s,t.a,a);else{if(0==(r=a!=s?a>s?1:-1:Tut(t.a,e.a,a)))return DBt(),ine;1==r?(f=o,h=p6(t.a,a,e.a,s)):(f=c,h=p6(e.a,s,t.a,a))}return Z0(u=new fY(f,h.length,h)),u}function Nqt(t,e,i,r,a,o,s){var c,u,l,h,f,d,g;return f=Hv(AB(vEt(e,(HZt(),Mbe)))),d=null,o==(sit(),qme)&&r.c.i==i?d=r.c:o==Hme&&r.d.i==i&&(d=r.d),(l=s)&&f&&!d?(Wz(l.e,r),g=n.Math.max(Uv(EB(vEt(l.d,obe))),Uv(EB(vEt(r,obe)))),hct(l.d,obe,g)):(kYt(),h=CIe,d?h=d.j:mD(zz(vEt(i,nwe),98))&&(h=o==qme?SIe:cIe),u=Bqt(t,e,i,o,h,r),c=W5((mW(i),r)),o==qme?(TJ(c,zz(PH(u.j,0),11)),EJ(c,a)):(TJ(c,a),EJ(c,zz(PH(u.j,0),11))),l=new Yht(r,c,u,zz(vEt(u,(hWt(),pfe)),11),o,!d)),JIt(t.a,r,new Lj(l.d,e,o)),l}function Pqt(t,e){var n,i,r,a,o,s,c,u,l,h;if(l=null,t.d&&(l=zz(TQ(t.d,e),138)),!l){if(h=(a=t.a.Mh()).i,!t.d||NA(t.d)!=h){for(c=new Pw,t.d&&Eat(c,t.d),s=u=c.f.c+c.g.c;s0?(d=(g-1)*n,s&&(d+=i),l&&(d+=i),d=t.b[r+1])r+=2;else{if(!(n0)for(i=new ej(zz(l6(t.a,a),21)),TX(),yO(i,new jg(e)),r=new E2(a.b,0);r.bx)?(u=2,s=FWt):0==u?(u=1,s=_):(u=0,s=_):(d=_>=s||s-_0?1:GM(isNaN(r),isNaN(0)))>=0^(ait(O3t),(n.Math.abs(c)<=O3t||0==c||isNaN(c)&&isNaN(0)?0:c<0?-1:c>0?1:GM(isNaN(c),isNaN(0)))>=0)?n.Math.max(c,r):(ait(O3t),(n.Math.abs(r)<=O3t||0==r||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:GM(isNaN(r),isNaN(0)))>0?n.Math.sqrt(c*c+r*r):-n.Math.sqrt(c*c+r*r))}function nHt(t,e){var n,i,r,a,o;if(e)if(!t.a&&(t.a=new jm),2!=t.e)if(1!=e.e)0!=(o=t.a.a.c.length)?0!=(a=zz(dW(t.a,o-1),117)).e&&10!=a.e||0!=e.e&&10!=e.e?Sm(t.a,e):(0==e.e||e.bm().length,0==a.e?(n=new Cx,(i=a._l())>=qXt?aM(n,Wft(i)):NZ(n,i&VKt),a=new mQ(10,null,0),xY(t.a,a,o-1)):(a.bm().length,aM(n=new Cx,a.bm())),0==e.e?(i=e._l())>=qXt?aM(n,Wft(i)):NZ(n,i&VKt):aM(n,e.bm()),zz(a,521).b=n.a):Sm(t.a,e);else for(r=0;r0&&i>=-6?i>=0?xJ(a,n-SQ(t.e),String.fromCharCode(46)):(a.a=hP(a.a,0,e-1)+"0."+tM(a.a,e-1),xJ(a,e+1,qpt(Uee,0,-SQ(i)-1))):(n-e>=1&&(xJ(a,e,String.fromCharCode(46)),++n),xJ(a,n,String.fromCharCode(69)),i>0&&xJ(a,++n,String.fromCharCode(43)),xJ(a,++n,""+mG(fot(i)))),t.g=a.a,t.g))}function rHt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(!n.dc()){for(o=0,l=0,f=zz((i=n.Kc()).Pb(),19).a;o1&&(c=u.mg(c,t.a,s));return 1==c.c.length?zz(PH(c,c.c.length-1),220):2==c.c.length?zqt((f1(0,c.c.length),zz(c.c[0],220)),(f1(1,c.c.length),zz(c.c[1],220)),o,a):null}function cHt(t){var e,i,r,a,o,s;for(Det(t.a,new Jt),i=new Wd(t.a);i.a=n.Math.abs(r.b)?(r.b=0,o.d+o.a>s.d&&o.ds.c&&o.c0){if(e=new BI(t.i,t.g),a=(n=t.i)<100?null:new $k(n),t.ij())for(i=0;i0){for(s=t.g,u=t.i,o6(t),a=u<100?null:new $k(u),i=0;i>13|(15&t.m)<<9,r=t.m>>4&8191,a=t.m>>17|(255&t.h)<<5,o=(1048320&t.h)>>8,b=i*(s=8191&e.l),w=r*s,m=a*s,y=o*s,0!=(c=e.l>>13|(15&e.m)<<9)&&(b+=n*c,w+=i*c,m+=r*c,y+=a*c),0!=(u=e.m>>4&8191)&&(w+=n*u,m+=i*u,y+=r*u),0!=(l=e.m>>17|(255&e.h)<<5)&&(m+=n*l,y+=i*l),0!=(h=(1048320&e.h)>>8)&&(y+=n*h),d=((p=n*s)>>22)+(b>>9)+((262143&w)<<4)+((31&m)<<17),g=(w>>18)+(m>>5)+((4095&y)<<8),g+=(d+=(f=(p&CXt)+((511&b)<<13))>>22)>>22,EO(f&=CXt,d&=CXt,g&=SXt)}function dHt(t){var e,i,r,a,o,s,c;if(0!=(c=zz(PH(t.j,0),11)).g.c.length&&0!=c.e.c.length)throw qw(new $v("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(0!=c.g.c.length){for(o=RXt,i=new Wd(c.g);i.a4){if(!t.wj(e))return!1;if(t.rk()){if(s=(n=(i=zz(e,49)).Ug())==t.e&&(t.Dk()?i.Og(i.Vg(),t.zk())==t.Ak():-1-i.Vg()==t.aj()),t.Ek()&&!s&&!n&&i.Zg())for(r=0;r0&&(u=t.n.a/a);break;case 2:case 4:(r=t.i.o.b)>0&&(u=t.n.b/r)}hct(t,(hWt(),Afe),u)}if(c=t.o,o=t.a,i)o.a=i.a,o.b=i.b,t.d=!0;else if(e!=XSe&&e!=VSe&&s!=CIe)switch(s.g){case 1:o.a=c.a/2;break;case 2:o.a=c.a,o.b=c.b/2;break;case 3:o.a=c.a/2,o.b=c.b;break;case 4:o.b=c.b/2}else o.a=c.a/2,o.b=c.b/2}function yHt(t){var e,n,i,r,a,o,s,c,u,l;if(t.ej())if(l=t.Vi(),c=t.fj(),l>0)if(e=new _at(t.Gi()),a=(n=l)<100?null:new $k(n),QB(t,n,e.g),r=1==n?t.Zi(4,Ket(e,0),null,0,c):t.Zi(6,e,null,-1,c),t.bj()){for(i=new DL(e);i.e!=i.i.gc();)a=t.dj(kwt(i),a);a?(a.Ei(r),a.Fi()):t.$i(r)}else a?(a.Ei(r),a.Fi()):t.$i(r);else QB(t,t.Vi(),t.Wi()),t.$i(t.Zi(6,(TX(),lne),null,-1,c));else if(t.bj())if((l=t.Vi())>0){for(s=t.Wi(),u=l,QB(t,l,s),a=u<100?null:new $k(u),i=0;it.d[r.p]&&(n+=t5(t.b,i)*zz(o.b,19).a,p3(t.a,rft(i)));for(;!Wv(t.a);)Ett(t.b,zz(pY(t.a),19).a)}return n}function kHt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g;for((h=new gD(zz(tOt(t,(CEt(),qEe)),8))).a=n.Math.max(h.a-i.b-i.c,0),h.b=n.Math.max(h.b-i.d-i.a,0),(null==(a=EB(tOt(t,BEe)))||(xW(a),a<=0))&&(a=1.3),s=new Nw,f=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));f.e!=f.i.gc();)o=new GP(zz(kwt(f),33)),s.c[s.c.length]=o;switch(zz(tOt(t,FEe),311).g){case 3:g=s$t(s,e,h.a,h.b,(u=r,xW(a),u));break;case 1:g=yzt(s,e,h.a,h.b,(l=r,xW(a),l));break;default:g=THt(s,e,h.a,h.b,(c=r,xW(a),c))}jYt(t,(d=xZt(new Get(g),e,i,h.a,h.b,r,(xW(a),a))).a,d.b,!1,!0)}function _Ht(t,e){var n,i,r,a;a=new ej((n=e.b).j),r=0,(i=n.j).c=P8(Ote,HWt,1,0,5,1),nZ(zz(wot(t.b,(kYt(),uIe),(Irt(),Fue)),15),n),r=Jyt(a,r,new Pr,i),nZ(zz(wot(t.b,uIe,Bue),15),n),r=Jyt(a,r,new Nr,i),nZ(zz(wot(t.b,uIe,Pue),15),n),nZ(zz(wot(t.b,cIe,Fue),15),n),nZ(zz(wot(t.b,cIe,Bue),15),n),r=Jyt(a,r,new Br,i),nZ(zz(wot(t.b,cIe,Pue),15),n),nZ(zz(wot(t.b,TIe,Fue),15),n),r=Jyt(a,r,new Fr,i),nZ(zz(wot(t.b,TIe,Bue),15),n),r=Jyt(a,r,new Rr,i),nZ(zz(wot(t.b,TIe,Pue),15),n),nZ(zz(wot(t.b,SIe,Fue),15),n),r=Jyt(a,r,new Xr,i),nZ(zz(wot(t.b,SIe,Bue),15),n),nZ(zz(wot(t.b,SIe,Pue),15),n)}function AHt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(DAt(e,"Layer size calculation",1),h=RXt,l=jXt,a=!1,c=new Wd(t.b);c.a.5?w-=2*o*(g-.5):g<.5&&(w+=2*a*(.5-g)),w<(r=s.d.b)&&(w=r),p=s.d.c,w>b.a-p-l&&(w=b.a-p-l),s.n.a=e+w}}function THt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d;for(s=P8(PNe,UXt,25,t.c.length,15,1),rxt(f=new ZG(new Zs),t),u=0,d=new Nw;0!=f.b.c.length;)if(o=zz(0==f.b.c.length?null:PH(f.b,0),157),u>1&&iU(o)*nU(o)/2>s[0]){for(a=0;as[a];)++a;h=new Get(new u1(d,0,a+1)),l=iU(o)/nU(o),c=xZt(h,e,new dy,n,i,r,l),YF(xM(h.e),c),$8(iEt(f,h)),rxt(f,new u1(d,a+1,d.c.length)),d.c=P8(Ote,HWt,1,0,5,1),u=0,kU(s,s.length,0)}else null!=(0==f.b.c.length?null:PH(f.b,0))&&hrt(f,0),u>0&&(s[u]=s[u-1]),s[u]+=iU(o)*nU(o),++u,d.c[d.c.length]=o;return d}function CHt(t){var e,n,i;if((n=zz(vEt(t,(HZt(),xbe)),163))==(Edt(),$fe)){for(e=new cG(JL(fdt(t).a.Kc(),new l));bDt(e);)if(!Z5(zz(Y5(e),17)))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(n==qfe)for(i=new cG(JL(ddt(t).a.Kc(),new l));bDt(i);)if(!Z5(zz(Y5(i),17)))throw qw(new rx(S1t+wvt(t)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}function SHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d;for(DAt(e,"Label dummy removal",1),i=Uv(EB(vEt(t,(HZt(),kwe)))),r=Uv(EB(vEt(t,Twe))),c=zz(vEt(t,Ype),103),s=new Wd(t.b);s.a0&&dCt(t,s,l);for(r=new Wd(l);r.a>19!=0&&(e=sct(e),c=!c),o=DLt(e),a=!1,r=!1,i=!1,t.h==IXt&&0==t.m&&0==t.l){if(r=!0,a=!0,-1!=o)return s=_Dt(t,o),c&&Dct(s),n&&(dee=EO(0,0,0)),s;t=WM((Z9(),gee)),i=!0,c=!c}else t.h>>19!=0&&(a=!0,t=sct(t),i=!0,c=!c);return-1!=o?qct(t,o,c,a,n):jxt(t,e)<0?(n&&(dee=a?sct(t):EO(t.l,t.m,t.h)),EO(0,0,0)):hjt(i?t:EO(t.l,t.m,t.h),e,c,a,r,n)}function LHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;if(t.e&&t.c.ce.f||e.g>t.f)){for(n=0,i=0,o=t.w.a.ec().Kc();o.Ob();)r=zz(o.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&++n;for(s=t.r.a.ec().Kc();s.Ob();)r=zz(s.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&--n;for(c=e.w.a.ec().Kc();c.Ob();)r=zz(c.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,t.g,t.f)&&++i;for(a=e.r.a.ec().Kc();a.Ob();)r=zz(a.Pb(),11),mlt(Oct(Sst(Ux(CEe,1),lKt,8,0,[r.i.n,r.n,r.a])).b,t.g,t.f)&&--i;n=0)return r=bdt(t,e.substr(1,a-1)),QYt(t,e.substr(a+1,s-(a+1)),r)}else{if(n=-1,null==Aee&&(Aee=new RegExp("\\d")),Aee.test(String.fromCharCode(o))&&(n=ER(e,QAt(46),s-1))>=0){i=zz(K5(t,Set(t,e.substr(1,n-1)),!1),58),c=0;try{c=djt(e.substr(n+1),$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}if(c=0)return n;switch(BW(z9(t,n))){case 2:if(yR("",Iht(t,n.Hj()).ne())){if(c=vOt(t,e,s=kK(z9(t,n)),xK(z9(t,n))))return c;for(o=0,u=(r=_Rt(t,e)).gc();o1)throw qw(new jv(M9t));for(l=sPt(t.e.Tg(),e),i=zz(t.g,119),o=0;o1,l=new y6(d.b);vO(l.a)||vO(l.b);)f=(u=zz(vO(l.a)?t0(l.a):t0(l.b),17)).c==d?u.d:u.c,n.Math.abs(Oct(Sst(Ux(CEe,1),lKt,8,0,[f.i.n,f.n,f.a])).b-s.b)>1&&mPt(t,u,s,o,d)}}function YHt(t){var e,i,r,a,o,s;if(a=new E2(t.e,0),r=new E2(t.a,0),t.d)for(i=0;iF3t;){for(o=e,s=0;n.Math.abs(e-o)0),a.a.Xb(a.c=--a.b),F$t(t,t.b-s,o,r,a),CP(a.b0),r.a.Xb(r.c=--r.b)}if(!t.d)for(i=0;i0?(t.f[u.p]=f/(u.e.c.length+u.g.c.length),t.c=n.Math.min(t.c,t.f[u.p]),t.b=n.Math.max(t.b,t.f[u.p])):s&&(t.f[u.p]=f)}}function KHt(t){t.b=null,t.bb=null,t.fb=null,t.qb=null,t.a=null,t.c=null,t.d=null,t.e=null,t.f=null,t.n=null,t.M=null,t.L=null,t.Q=null,t.R=null,t.K=null,t.db=null,t.eb=null,t.g=null,t.i=null,t.j=null,t.k=null,t.gb=null,t.o=null,t.p=null,t.q=null,t.r=null,t.$=null,t.ib=null,t.S=null,t.T=null,t.t=null,t.s=null,t.u=null,t.v=null,t.w=null,t.B=null,t.A=null,t.C=null,t.D=null,t.F=null,t.G=null,t.H=null,t.I=null,t.J=null,t.P=null,t.Z=null,t.U=null,t.V=null,t.W=null,t.X=null,t.Y=null,t._=null,t.ab=null,t.cb=null,t.hb=null,t.nb=null,t.lb=null,t.mb=null,t.ob=null,t.pb=null,t.jb=null,t.kb=null,t.N=!1,t.O=!1}function XHt(t,e,n){var i,r;for(DAt(n,"Graph transformation ("+t.a+")",1),r=o0(e.a),i=new Wd(e.b);i.a0&&(t.a=s+(f-1)*r,e.c.b+=t.a,e.f.b+=t.a),0!=d.a.gc()&&(f=OUt(new hZ(1,r),e,d,g,e.f.b+s-e.c.b))>0&&(e.f.b+=s+(f-1)*r)}function QHt(t,e){var n,i,r,a;a=t.F,null==e?(t.F=null,Fut(t,null)):(t.F=(xW(e),e),-1!=(i=UM(e,QAt(60)))?(r=e.substr(0,i),-1==UM(e,QAt(46))&&!yR(r,LWt)&&!yR(r,C7t)&&!yR(r,S7t)&&!yR(r,I7t)&&!yR(r,M7t)&&!yR(r,D7t)&&!yR(r,O7t)&&!yR(r,L7t)&&(r=N7t),-1!=(n=yN(e,QAt(62)))&&(r+=""+e.substr(n+1)),Fut(t,r)):(r=e,-1==UM(e,QAt(46))&&(-1!=(i=UM(e,QAt(91)))&&(r=e.substr(0,i)),yR(r,LWt)||yR(r,C7t)||yR(r,S7t)||yR(r,I7t)||yR(r,M7t)||yR(r,D7t)||yR(r,O7t)||yR(r,L7t)?r=e:(r=N7t,-1!=i&&(r+=""+e.substr(i)))),Fut(t,r),r==e&&(t.F=t.D))),0!=(4&t.Db)&&0==(1&t.Db)&&got(t,new tY(t,1,5,a,e))}function JHt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;if(!((p=e.b.c.length)<3)){for(d=P8(DNe,hXt,25,p,15,1),h=0,l=new Wd(e.b);l.ao)&&AY(t.b,zz(b.b,17));++s}a=o}}}function tUt(t,e){var n;if(null==e||yR(e,YWt))return null;if(0==e.length&&t.k!=(SCt(),wEe))return null;switch(t.k.g){case 1:return vbt(e,s5t)?(lN(),yee):vbt(e,c5t)?(lN(),mee):null;case 2:try{return rft(djt(e,$Kt,FWt))}catch(t){if(aL(t=dst(t),127))return null;throw qw(t)}case 4:try{return gTt(e)}catch(t){if(aL(t=dst(t),127))return null;throw qw(t)}case 3:return e;case 5:return alt(t),HIt(t,e);case 6:return alt(t),jOt(t,t.a,e);case 7:try{return(n=aDt(t)).Jf(e),n}catch(t){if(aL(t=dst(t),32))return null;throw qw(t)}default:throw qw(new $v("Invalid type set for this layout option."))}}function eUt(t){var e,n,i,r,a,o,s;for(Btt(),s=new Km,n=new Wd(t);n.a=s.b.c)&&(s.b=e),(!s.c||e.c<=s.c.c)&&(s.d=s.c,s.c=e),(!s.e||e.d>=s.e.d)&&(s.e=e),(!s.f||e.d<=s.f.d)&&(s.f=e);return i=new Ewt((Ost(),Joe)),i2(t,cse,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[i]))),o=new Ewt(nse),i2(t,sse,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[o]))),r=new Ewt(tse),i2(t,ose,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[r]))),a=new Ewt(ese),i2(t,ase,new Qv(Sst(Ux(Qoe,1),HWt,369,0,[a]))),BLt(i.c,Joe),BLt(r.c,tse),BLt(a.c,ese),BLt(o.c,nse),s.a.c=P8(Ote,HWt,1,0,5,1),wst(s.a,i.c),wst(s.a,iot(r.c)),wst(s.a,a.c),wst(s.a,iot(o.c)),s}function nUt(t){var e;switch(t.d){case 1:if(t.hj())return-2!=t.o;break;case 2:if(t.hj())return-2==t.o;break;case 3:case 5:case 4:case 6:case 7:return t.o>-2;default:return!1}switch(e=t.gj(),t.p){case 0:return null!=e&&Hv(AB(e))!=QI(t.k,0);case 1:return null!=e&&zz(e,217).a!=pU(t.k)<<24>>24;case 2:return null!=e&&zz(e,172).a!=(pU(t.k)&VKt);case 6:return null!=e&&QI(zz(e,162).a,t.k);case 5:return null!=e&&zz(e,19).a!=pU(t.k);case 7:return null!=e&&zz(e,184).a!=pU(t.k)<<16>>16;case 3:return null!=e&&Uv(EB(e))!=t.j;case 4:return null!=e&&zz(e,155).a!=t.j;default:return null==e?null!=t.n:!Pht(e,t.n)}}function iUt(t,e,n){var i,r,a,o;return t.Fk()&&t.Ek()&&UI(o=UG(t,zz(n,56)))!==UI(n)?(t.Oi(e),t.Ui(e,z7(t,e,o)),t.rk()&&(r=zz(n,49),a=t.Dk()?t.Bk()?r.ih(t.b,Imt(zz(iet(kV(t.b),t.aj()),18)).n,zz(iet(kV(t.b),t.aj()).Yj(),26).Bj(),null):r.ih(t.b,Ogt(r.Tg(),Imt(zz(iet(kV(t.b),t.aj()),18))),null,null):r.ih(t.b,-1-t.aj(),null,null),!zz(o,49).eh()&&(i=zz(o,49),a=t.Dk()?t.Bk()?i.gh(t.b,Imt(zz(iet(kV(t.b),t.aj()),18)).n,zz(iet(kV(t.b),t.aj()).Yj(),26).Bj(),a):i.gh(t.b,Ogt(i.Tg(),Imt(zz(iet(kV(t.b),t.aj()),18))),null,a):i.gh(t.b,-1-t.aj(),null,a)),a&&a.Fi()),yD(t.b)&&t.$i(t.Zi(9,n,o,e,!1)),o):n}function rUt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(h=Uv(EB(vEt(t,(HZt(),_we)))),r=Uv(EB(vEt(t,Fwe))),hct(d=new Qs,_we,h+r),m=(l=e).d,b=l.c.i,y=l.d.i,w=eD(b.c),v=eD(y.c),a=new Nw,f=w;f<=v;f++)zf(c=new Lmt(t),(cTt(),Cse)),hct(c,(hWt(),pfe),l),hct(c,nwe,(V_t(),ZSe)),hct(c,Ewe,d),g=zz(PH(t.b,f),29),f==w?Vvt(c,g.a.c.length-i,g):CJ(c,g),(x=Uv(EB(vEt(l,obe))))<0&&hct(l,obe,x=0),c.o.b=x,p=n.Math.floor(x/2),USt(s=new ITt,(kYt(),SIe)),SJ(s,c),s.n.b=p,USt(u=new ITt,cIe),SJ(u,c),u.n.b=p,EJ(l,s),Uot(o=new gV,l),hct(o,mbe,null),TJ(o,u),EJ(o,m),Yxt(c,l,o),a.c[a.c.length]=o,l=o;return a}function aUt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(s=zz(FTt(t,(kYt(),SIe)).Kc().Pb(),11).e,h=zz(FTt(t,cIe).Kc().Pb(),11).g,o=s.c.length,b=b1(zz(PH(t.j,0),11));o-- >0;){for(f1(0,s.c.length),d=zz(s.c[0],17),f1(0,h.c.length),r=_9((i=zz(h.c[0],17)).d.e,i,0),D2(d,i.d,r),TJ(i,null),EJ(i,null),f=d.a,e&&Bq(f,new gD(b)),n=lwt(i.a,0);n.b!=n.d.c;)Bq(f,new gD(zz(d3(n),8)));for(p=d.b,l=new Wd(i.b);l.a0&&(s=n.Math.max(s,dat(t.C.b+r.d.b,a))),h=r,f=a,d=o;t.C&&t.C.c>0&&(g=d+t.C.c,l&&(g+=h.d.c),s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(f-1)<=fQt||1==f||isNaN(f)&&isNaN(1)?0:g/(1-f)))),i.n.b=0,i.a.a=s}function sUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g;if(i=zz(cK(t.b,e),124),(u=zz(zz(l6(t.r,e),21),84)).dc())return i.n.d=0,void(i.n.a=0);for(l=t.u.Hc((dIt(),nIe)),s=0,t.A.Hc((vpt(),jIe))&&kFt(t,e),c=u.Kc(),h=null,d=0,f=0;c.Ob();)o=Uv(EB((r=zz(c.Pb(),111)).b.We((BN(),Lre)))),a=r.b.rf().b,h?(g=f+h.d.a+t.w+r.d.d,s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(d-o)<=fQt||d==o||isNaN(d)&&isNaN(o)?0:g/(o-d)))):t.C&&t.C.d>0&&(s=n.Math.max(s,dat(t.C.d+r.d.d,o))),h=r,d=o,f=a;t.C&&t.C.a>0&&(g=f+t.C.a,l&&(g+=h.d.a),s=n.Math.max(s,(lO(),ait(fQt),n.Math.abs(d-1)<=fQt||1==d||isNaN(d)&&isNaN(1)?0:g/(1-d)))),i.n.d=0,i.a.b=s}function cUt(t,e,n){var i,r,a,o,s,c;for(this.g=t,s=e.d.length,c=n.d.length,this.d=P8(Mse,s1t,10,s+c,0,1),o=0;o0?Jet(this,this.f/this.a):null!=fL(e.g,e.d[0]).a&&null!=fL(n.g,n.d[0]).a?Jet(this,(Uv(fL(e.g,e.d[0]).a)+Uv(fL(n.g,n.d[0]).a))/2):null!=fL(e.g,e.d[0]).a?Jet(this,fL(e.g,e.d[0]).a):null!=fL(n.g,n.d[0]).a&&Jet(this,fL(n.g,n.d[0]).a)}function uUt(t,e){var n,i,r,a,o,s,c,u,l;for(t.a=new zZ(Lat(WCe)),i=new Wd(e.a);i.a=1&&(b-o>0&&h>=0?(c.n.a+=p,c.n.b+=a*o):b-o<0&&l>=0&&(c.n.a+=p*b,c.n.b+=a));t.o.a=e.a,t.o.b=e.b,hct(t,(HZt(),$be),(vpt(),new VR(i=zz(Kk(VIe),9),zz(TF(i,i.length),9),0)))}function pUt(t,e,n,i,r,a){if(null!=e&&Wdt(e,DDe,ODe))throw qw(new jv("invalid scheme: "+e));if(!(t||null!=n&&-1==UM(n,QAt(35))&&n.length>0&&(d1(0,n.length),47!=n.charCodeAt(0))))throw qw(new jv("invalid opaquePart: "+n));if(t&&(null==e||!PA(kDe,e.toLowerCase()))&&null!=n&&Wdt(n,LDe,NDe))throw qw(new jv(u7t+n));if(t&&null!=e&&PA(kDe,e.toLowerCase())&&!I_t(n))throw qw(new jv(u7t+n));if(!Zdt(i))throw qw(new jv("invalid device: "+i));if(!Rlt(r))throw qw(new jv(null==r?"invalid segments: null":"invalid segment: "+llt(r)));if(null!=a&&-1!=UM(a,QAt(35)))throw qw(new jv("invalid query: "+a))}function bUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;for(DAt(e,"Calculate Graph Size",1),e.n&&t&&v0(e,c2(t),(qut(),sMe)),c=tJt,u=tJt,o=e4t,s=e4t,f=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));f.e!=f.i.gc();)p=(l=zz(kwt(f),33)).i,b=l.j,m=l.g,r=l.f,a=zz(tOt(l,(lWt(),OTe)),142),c=n.Math.min(c,p-a.b),u=n.Math.min(u,b-a.d),o=n.Math.max(o,p+m+a.c),s=n.Math.max(s,b+r+a.a);for(d=new PS(c-(g=zz(tOt(t,(lWt(),ZTe)),116)).b,u-g.d),h=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));h.e!=h.i.gc();)Snt(l=zz(kwt(h),33),l.i-d.a),Int(l,l.j-d.b);w=o-c+(g.b+g.c),i=s-u+(g.d+g.a),Cnt(t,w),Tnt(t,i),e.n&&t&&v0(e,c2(t),(qut(),sMe))}function wUt(t){var e,n,i,r,a,o,s,c,u,l;for(i=new Nw,o=new Wd(t.e.a);o.a0?(Swt(t,n,0),n.a+=String.fromCharCode(i),Swt(t,n,r=obt(e,a)),a+=r-1):39==i?a+11)for(p=P8(DNe,hXt,25,t.b.b.c.length,15,1),h=0,l=new Wd(t.b.b);l.a=s&&r<=c)s<=r&&a<=c?(n[l++]=r,n[l++]=a,i+=2):s<=r?(n[l++]=r,n[l++]=c,t.b[i]=c+1,o+=2):a<=c?(n[l++]=s,n[l++]=a,i+=2):(n[l++]=s,n[l++]=c,t.b[i]=c+1);else{if(!(cjKt)&&c<10);ek(t.c,new ke),xUt(t),IY(t.c),fUt(t.f)}function AUt(t,e,n){var i,r,a,o,s,c,u,l,h,f;if(Hv(AB(vEt(n,(HZt(),gbe)))))for(r=new Wd(n.j);r.a=2){for(o=zz(d3(c=lwt(n,0)),8),s=zz(d3(c),8);s.a0&&Zst(c,!0,(zht(),$Ce)),o.k==(cTt(),Ese)&&gK(c),KW(t.f,o,e)):((u=(i=zz(iV(hdt(o)),17)).c.i)==o&&(u=i.d.i),h=new rI(u,ZF(zO(o.n),u.n)),KW(t.b,o,h))}function SUt(t,e,i){var r,a,o,s,c,u,l,h;switch(DAt(i,"Node promotion heuristic",1),t.g=e,xYt(t),t.q=zz(vEt(e,(HZt(),Tbe)),260),h=zz(vEt(t.g,Ebe),19).a,o=new li,t.q.g){case 2:case 1:default:$qt(t,o);break;case 3:for(t.q=(lNt(),Mme),$qt(t,o),u=0,c=new Wd(t.a);c.at.j&&(t.q=Ame,$qt(t,o));break;case 4:for(t.q=(lNt(),Mme),$qt(t,o),l=0,a=new Wd(t.b);a.at.k&&(t.q=Cme,$qt(t,o));break;case 6:$qt(t,new cp(SQ(n.Math.ceil(t.f.length*h/100))));break;case 5:$qt(t,new up(SQ(n.Math.ceil(t.d*h/100))))}uBt(t,e),HTt(i)}function IUt(t,e,n){var i,r,a,o;this.j=t,this.e=U_t(t),this.o=this.j.e,this.i=!!this.o,this.p=this.i?zz(PH(n,mW(this.o).p),214):null,r=zz(vEt(t,(hWt(),Jhe)),21),this.g=r.Hc((gBt(),fhe)),this.b=new Nw,this.d=new ppt(this.e),o=zz(vEt(this.j,Tfe),230),this.q=Hot(e,o,this.e),this.k=new oJ(this),a=s6(Sst(Ux(kue,1),HWt,225,0,[this,this.d,this.k,this.q])),e!=(uit(),Mye)||Hv(AB(vEt(t,(HZt(),Ppe))))?e==Mye&&Hv(AB(vEt(t,(HZt(),Ppe))))?(i=new Z_t(this.e),a.c[a.c.length]=i,this.c=new mrt(i,o,zz(this.q,402))):this.c=new mC(e,this):(i=new Z_t(this.e),a.c[a.c.length]=i,this.c=new U2(i,o,zz(this.q,402))),Wz(a,this.c),Iqt(a,this.e),this.s=pZt(this.k)}function MUt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;for(f=(u=zz(iL(new gb(lwt(new db(e).a.d,0))),86))?zz(vEt(u,(UHt(),axe)),86):null,r=1;u&&f;){for(o=0,m=0,n=u,i=f,a=0;a=t.i?(++t.i,Wz(t.a,rft(1)),Wz(t.b,u)):(i=t.c[e.p][1],a5(t.a,c,rft(zz(PH(t.a,c),19).a+1-i)),a5(t.b,c,Uv(EB(PH(t.b,c)))+u-i*t.e)),(t.q==(lNt(),Ame)&&(zz(PH(t.a,c),19).a>t.j||zz(PH(t.a,c-1),19).a>t.j)||t.q==Cme&&(Uv(EB(PH(t.b,c)))>t.k||Uv(EB(PH(t.b,c-1)))>t.k))&&(s=!1),a=new cG(JL(fdt(e).a.Kc(),new l));bDt(a);)o=zz(Y5(a),17).c.i,t.f[o.p]==c&&(r+=zz((h=DUt(t,o)).a,19).a,s=s&&Hv(AB(h.b)));return t.f[e.p]=c,new rI(rft(r+=t.c[e.p][0]),(lN(),!!s))}function OUt(t,e,i,r,a){var o,s,c,u,l,h,f,d,g,p,b,w,m;for(f=new Pw,s=new Nw,aIt(t,i,t.d.fg(),s,f),aIt(t,r,t.d.gg(),s,f),t.b=.2*(b=qDt(gtt(new FH(null,new g1(s,16)),new Co)),w=qDt(gtt(new FH(null,new g1(s,16)),new So)),n.Math.min(b,w)),o=0,c=0;c=2&&(m=VLt(s,!0,d),!t.e&&(t.e=new fb(t)),lbt(t.e,m,s,t.b)),rAt(s,d),oGt(s),g=-1,h=new Wd(s);h.as)}function PUt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(i=zz(vEt(t,(HZt(),nwe)),98),s=t.f,o=t.d,c=s.a+o.b+o.c,u=0-o.d-t.c.b,h=s.b+o.d+o.a-t.c.b,l=new Nw,f=new Nw,a=new Wd(e);a.a0),a=zz(u.a.Xb(u.c=--u.b),17);a!=i&&u.b>0;)t.a[a.p]=!0,t.a[i.p]=!0,CP(u.b>0),a=zz(u.a.Xb(u.c=--u.b),17);u.b>0&&hW(u)}}function UUt(t,e,n){var i,r,a,o,s,c,u,l,h;if(t.a!=e.Aj())throw qw(new jv(b6t+e.ne()+w6t));if(i=Iht((MCt(),JOe),e).$k())return i.Aj().Nh().Ih(i,n);if(o=Iht(JOe,e).al()){if(null==n)return null;if((s=zz(n,15)).dc())return"";for(h=new Tx,a=s.Kc();a.Ob();)r=a.Pb(),aM(h,o.Aj().Nh().Ih(o,r)),h.a+=" ";return RM(h,h.a.length-1)}if(!(l=Iht(JOe,e).bl()).dc()){for(u=l.Kc();u.Ob();)if((c=zz(u.Pb(),148)).wj(n))try{if(null!=(h=c.Aj().Nh().Ih(c,n)))return h}catch(t){if(!aL(t=dst(t),102))throw qw(t)}throw qw(new jv("Invalid value: '"+n+"' for datatype :"+e.ne()))}return zz(e,834).Fj(),null==n?null:aL(n,172)?""+zz(n,172).a:nut(n)==vee?qO(IMe[0],zz(n,199)):qdt(n)}function GUt(t){var e,i,r,a,o,s,c,u,l;for(u=new VA,s=new VA,a=new Wd(t);a.a-1){for(r=lwt(s,0);r.b!=r.d.c;)(i=zz(d3(r),128)).v=o;for(;0!=s.b;)for(e=new Wd((i=zz(nxt(s,0),128)).i);e.a0&&(n+=c.n.a+c.o.a/2,++h),d=new Wd(c.j);d.a0&&(n/=h),b=P8(PNe,UXt,25,i.a.c.length,15,1),s=0,u=new Wd(i.a);u.a=s&&r<=c)s<=r&&a<=c?i+=2:s<=r?(t.b[i]=c+1,o+=2):a<=c?(n[l++]=r,n[l++]=s-1,i+=2):(n[l++]=r,n[l++]=s-1,t.b[i]=c+1,o+=2);else{if(!(c0?r-=864e5:r+=864e5,c=new CB(adt(fot(e.q.getTime()),r))),l=new Ix,u=t.a.length,a=0;a=97&&i<=122||i>=65&&i<=90){for(o=a+1;o=u)throw qw(new jv("Missing trailing '"));o+10&&0==n.c&&(!e&&(e=new Nw),e.c[e.c.length]=n);if(e)for(;0!=e.c.length;){if((n=zz(u6(e,0),233)).b&&n.b.c.length>0)for(!n.b&&(n.b=new Nw),a=new Wd(n.b);a.a_9(t,n,0))return new rI(r,n)}else if(Uv(fL(r.g,r.d[0]).a)>Uv(fL(n.g,n.d[0]).a))return new rI(r,n);for(s=(!n.e&&(n.e=new Nw),n.e).Kc();s.Ob();)!(o=zz(s.Pb(),233)).b&&(o.b=new Nw),LJ(0,(c=o.b).c.length),ET(c.c,0,n),o.c==c.c.length&&(e.c[e.c.length]=o)}return null}function rGt(t,e){var n,i,r,a,o,s;if(null==t)return YWt;if(null!=e.a.zc(t,e))return"[...]";for(n=new Lot(zWt,"[","]"),a=0,o=(r=t).length;a=14&&s<=16?aL(i,177)?d6(n,RSt(zz(i,177))):aL(i,190)?d6(n,J_t(zz(i,190))):aL(i,195)?d6(n,kTt(zz(i,195))):aL(i,2012)?d6(n,tAt(zz(i,2012))):aL(i,48)?d6(n,FSt(zz(i,48))):aL(i,364)?d6(n,wIt(zz(i,364))):aL(i,832)?d6(n,BSt(zz(i,832))):aL(i,104)&&d6(n,PSt(zz(i,104))):e.a._b(i)?(n.a?cM(n.a,n.b):n.a=new fN(n.d),oM(n.a,"[...]")):d6(n,rGt(int(i),new OH(e))):d6(n,null==i?YWt:qdt(i));return n.a?0==n.e.length?n.a.a:n.a.a+""+n.e:n.c}function aGt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g,p,b;for(g=UTt(oBt(e,!1,!1)),r&&(g=Jct(g)),b=Uv(EB(tOt(e,(Awt(),wae)))),CP(0!=g.b),d=zz(g.a.a.c,8),l=zz(Fwt(g,1),8),g.b>2?(wst(u=new Nw,new u1(g,1,g.b)),Uot(p=new ADt(WZt(u,b+t.a)),e),i.c[i.c.length]=p):p=zz(FZ(t.b,r?SEt(e):DEt(e)),266),s=SEt(e),r&&(s=DEt(e)),o=rCt(d,s),c=b+t.a,o.a?(c+=n.Math.abs(d.b-l.b),f=new PS(l.a,(l.b+d.b)/2)):(c+=n.Math.abs(d.a-l.a),f=new PS((l.a+d.a)/2,l.b)),KW(r?t.d:t.c,e,new Myt(p,o,f,c)),KW(t.b,e,p),!e.n&&(e.n=new nY(GMe,e,1,7)),h=new DL(e.n);h.e!=h.i.gc();)a=JFt(t,zz(kwt(h),137),!0,0,0),i.c[i.c.length]=a}function oGt(t){var e,i,r,a,o,s,c,u,l;for(u=new Nw,s=new Nw,o=new Wd(t);o.a-1){for(a=new Wd(s);a.a0||(Vf(c,n.Math.min(c.o,r.o-1)),Xf(c,c.i-1),0==c.i&&(s.c[s.c.length]=c))}}function sGt(t,e,n){var i,r,a,o,s;if(s=t.c,!e&&(e=LOe),t.c=e,0!=(4&t.Db)&&0==(1&t.Db)&&(o=new tY(t,1,2,s,t.c),n?n.Ei(o):n=o),s!=e)if(aL(t.Cb,284))t.Db>>16==-10?n=zz(t.Cb,284).nk(e,n):t.Db>>16==-15&&(!e&&(wWt(),e=fOe),!s&&(wWt(),s=fOe),t.Cb.nh()&&(o=new N9(t.Cb,1,13,s,e,cmt(q9(zz(t.Cb,59)),t),!1),n?n.Ei(o):n=o));else if(aL(t.Cb,88))t.Db>>16==-23&&(aL(e,88)||(wWt(),e=pOe),aL(s,88)||(wWt(),s=pOe),t.Cb.nh()&&(o=new N9(t.Cb,1,10,s,e,cmt(o4(zz(t.Cb,26)),t),!1),n?n.Ei(o):n=o));else if(aL(t.Cb,444))for(!(a=zz(t.Cb,836)).b&&(a.b=new Aw(new Py)),r=new Ew(new cut(new Cd(a.b.a).a));r.a.b;)n=sGt(i=zz(nnt(r.a).cd(),87),kLt(i,a),n);return n}function cGt(t,e){var n,i,r,a,o,s,c,u,l,h,f;for(o=Hv(AB(tOt(t,(HZt(),gbe)))),f=zz(tOt(t,awe),21),c=!1,u=!1,h=new DL((!t.c&&(t.c=new nY(ZMe,t,9,9)),t.c));!(h.e==h.i.gc()||c&&u);){for(a=zz(kwt(h),118),s=0,r=NY(Knt(Sst(Ux(Bte,1),HWt,20,0,[(!a.d&&(a.d=new lR(jMe,a,8,5)),a.d),(!a.e&&(a.e=new lR(jMe,a,7,4)),a.e)])));bDt(r)&&(i=zz(Y5(r),79),l=o&&VIt(i)&&Hv(AB(tOt(i,pbe))),n=gHt((!i.b&&(i.b=new lR(RMe,i,4,7)),i.b),a)?t==QQ(SAt(zz(Ket((!i.c&&(i.c=new lR(RMe,i,5,8)),i.c),0),82))):t==QQ(SAt(zz(Ket((!i.b&&(i.b=new lR(RMe,i,4,7)),i.b),0),82))),!((l||n)&&++s>1)););(s>0||f.Hc((dIt(),nIe))&&(!a.n&&(a.n=new nY(GMe,a,1,7)),a.n).i>0)&&(c=!0),s>1&&(u=!0)}c&&e.Fc((gBt(),fhe)),u&&e.Fc((gBt(),dhe))}function uGt(t){var e,i,r,a,o,s,c,u,l,h,f,d;if((d=zz(tOt(t,(lWt(),RTe)),21)).dc())return null;if(c=0,s=0,d.Hc((vpt(),RIe))){for(h=zz(tOt(t,sCe),98),r=2,i=2,a=2,o=2,e=QQ(t)?zz(tOt(QQ(t),dTe),103):zz(tOt(t,dTe),103),l=new DL((!t.c&&(t.c=new nY(ZMe,t,9,9)),t.c));l.e!=l.i.gc();)if(u=zz(kwt(l),118),(f=zz(tOt(u,gCe),61))==(kYt(),CIe)&&(f=D$t(u,e),Qwt(u,gCe,f)),h==(V_t(),ZSe))switch(f.g){case 1:r=n.Math.max(r,u.i+u.g);break;case 2:i=n.Math.max(i,u.j+u.f);break;case 3:a=n.Math.max(a,u.i+u.g);break;case 4:o=n.Math.max(o,u.j+u.f)}else switch(f.g){case 1:r+=u.g+2;break;case 2:i+=u.f+2;break;case 3:a+=u.g+2;break;case 4:o+=u.f+2}c=n.Math.max(r,a),s=n.Math.max(i,o)}return jYt(t,c,s,!0,!0)}function lGt(t,e,i,r,a){var o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(y=zz(C4(xet(DK(new FH(null,new g1(e.d,16)),new Op(i)),new Lp(i)),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)]))),15),f=FWt,h=$Kt,u=new Wd(e.b.j);u.a0)?u&&(l=p.p,o?++l:--l,h=!(oNt(i=rct(zz(PH(p.c.a,l),10)),v,n[0])||zG(i,v,n[0]))):h=!0),f=!1,(y=e.D.i)&&y.c&&s.e&&(o&&y.p>0||!o&&y.p0&&(e.a+=zWt),wGt(zz(kwt(o),160),e);for(e.a+=i1t,s=new aP((!i.c&&(i.c=new lR(RMe,i,5,8)),i.c));s.e!=s.i.gc();)s.e>0&&(e.a+=zWt),wGt(zz(kwt(s),160),e);e.a+=")"}}}function mGt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(a=zz(vEt(t,(hWt(),pfe)),79)){for(i=t.a,YF(r=new gD(n),Lkt(t)),pot(t.d.i,t.c.i)?(f=t.c,ZF(h=Oct(Sst(Ux(CEe,1),lKt,8,0,[f.n,f.a])),n)):h=b1(t.c),r5(i,h,i.a,i.a.a),d=b1(t.d),null!=vEt(t,Ffe)&&YF(d,zz(vEt(t,Ffe),8)),r5(i,d,i.c.b,i.c),tnt(i,r),Nit(o=oBt(a,!0,!0),zz(Ket((!a.b&&(a.b=new lR(RMe,a,4,7)),a.b),0),82)),Pit(o,zz(Ket((!a.c&&(a.c=new lR(RMe,a,5,8)),a.c),0),82)),X$t(i,o),l=new Wd(t.b);l.a=0){for(c=null,s=new E2(l.a,u+1);s.bo?1:GM(isNaN(0),isNaN(o)))<0&&(ait(O3t),(n.Math.abs(o-1)<=O3t||1==o||isNaN(o)&&isNaN(1)?0:o<1?-1:o>1?1:GM(isNaN(o),isNaN(1)))<0)&&(ait(O3t),(n.Math.abs(0-s)<=O3t||0==s||isNaN(0)&&isNaN(s)?0:0s?1:GM(isNaN(0),isNaN(s)))<0)&&(ait(O3t),(n.Math.abs(s-1)<=O3t||1==s||isNaN(s)&&isNaN(1)?0:s<1?-1:s>1?1:GM(isNaN(s),isNaN(1)))<0))}function xGt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k;for(h=new lW(new ig(t));h.b!=h.c.a.d;)for(s=zz((l=u7(h)).d,56),e=zz(l.e,56),p=0,v=(null==(o=s.Tg()).i&&U$t(o),o.i).length;p=0&&p=u.c.c.length?Z3((cTt(),Sse),Cse):Z3((cTt(),Cse),Cse),l*=2,a=i.a.g,i.a.g=n.Math.max(a,a+(l-a)),o=i.b.g,i.b.g=n.Math.max(o,o+(l-o)),r=e}else YDt(s),Oqt((f1(0,s.c.length),zz(s.c[0],17)).d.i)||Wz(t.o,s)}function AGt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;for(y=Uz(t),c=new Nw,u=(a=t.c.length)-1,l=a+1;0!=y.a.c;){for(;0!=n.b;)CP(0!=n.b),w=zz(Oet(n,n.a.a),112),OQ(y.a,w),w.g=u--,P$t(w,e,n,i);for(;0!=e.b;)CP(0!=e.b),m=zz(Oet(e,e.a.a),112),OQ(y.a,m),m.g=l++,P$t(m,e,n,i);for(s=$Kt,p=new $d(new zF(new PN(new jd(y.a).a).b));oT(p.a.a);){if(g=zz(yP(p.a).cd(),112),!i&&g.b>0&&g.a<=0){c.c=P8(Ote,HWt,1,0,5,1),c.c[c.c.length]=g;break}(d=g.i-g.d)>=s&&(d>s&&(c.c=P8(Ote,HWt,1,0,5,1),s=d),c.c[c.c.length]=g)}0!=c.c.length&&(o=zz(PH(c,mmt(r,c.c.length)),112),OQ(y.a,o),o.g=l++,P$t(o,e,n,i),c.c=P8(Ote,HWt,1,0,5,1))}for(b=t.c.length+1,f=new Wd(t);f.a0&&(d.d+=h.n.d,d.d+=h.d),d.a>0&&(d.a+=h.n.a,d.a+=h.d),d.b>0&&(d.b+=h.n.b,d.b+=h.d),d.c>0&&(d.c+=h.n.c,d.c+=h.d),d}function IGt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p;for(d=i.d,f=i.c,s=(o=new PS(i.f.a+i.d.b+i.d.c,i.f.b+i.d.d+i.d.a)).b,l=new Wd(t.a);l.a0&&(t.c[e.c.p][e.p].d+=HOt(t.i,24)*cVt*.07000000029802322-.03500000014901161,t.c[e.c.p][e.p].a=t.c[e.c.p][e.p].d/t.c[e.c.p][e.p].b)}}function FGt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g;for(f=new Wd(t);f.ar.d,r.d=n.Math.max(r.d,e),c&&i&&(r.d=n.Math.max(r.d,r.a),r.a=r.d+a);break;case 3:i=e>r.a,r.a=n.Math.max(r.a,e),c&&i&&(r.a=n.Math.max(r.a,r.d),r.d=r.a+a);break;case 2:i=e>r.c,r.c=n.Math.max(r.c,e),c&&i&&(r.c=n.Math.max(r.b,r.c),r.b=r.c+a);break;case 4:i=e>r.b,r.b=n.Math.max(r.b,e),c&&i&&(r.b=n.Math.max(r.b,r.c),r.c=r.b+a)}}}function zGt(t){var e,n,i,r,a,o,s,c,u,l,h;for(u=new Wd(t);u.a0||l.j==SIe&&l.e.c.length-l.g.c.length<0)){e=!1;break}for(r=new Wd(l.g);r.a=l&&k>=w&&(d+=p.n.b+b.n.b+b.a.b-x,++c));if(i)for(s=new Wd(y.e);s.a=l&&k>=w&&(d+=p.n.b+b.n.b+b.a.b-x,++c))}c>0&&(_+=d/c,++g)}g>0?(e.a=a*_/g,e.g=g):(e.a=0,e.g=0)}function HGt(t,e){var n,i,r,a,o,s,c,u,l,h;for(i=new Wd(t.a.b);i.ajXt||e.o==rve&&u0&&Snt(w,v*k),x>0&&Int(w,x*_);for(eot(t.b,new he),e=new Nw,s=new cut(new Cd(t.c).a);s.b;)i=zz((o=nnt(s)).cd(),79),n=zz(o.dd(),395).a,r=oBt(i,!1,!1),X$t(h=dAt(SEt(i),UTt(r),n),r),(y=IEt(i))&&-1==_9(e,y,0)&&(e.c[e.c.length]=y,uX(y,(CP(0!=h.b),zz(h.a.a.c,8)),n));for(b=new cut(new Cd(t.d).a);b.b;)i=zz((p=nnt(b)).cd(),79),n=zz(p.dd(),395).a,r=oBt(i,!1,!1),h=dAt(DEt(i),Jct(UTt(r)),n),X$t(h=Jct(h),r),(y=MEt(i))&&-1==_9(e,y,0)&&(e.c[e.c.length]=y,uX(y,(CP(0!=h.b),zz(h.c.b.c,8)),n))}function WGt(t,e,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_;if(0!=i.c.length){for(g=new Nw,d=new Wd(i);d.a1)for(n5(y,new uS(t,d=new hHt(g,y,r))),s.c[s.c.length]=d,h=y.a.ec().Kc();h.Ob();)v9(o,zz(h.Pb(),46).b);if(c.a.gc()>1)for(n5(c,new lS(t,d=new hHt(g,c,r))),s.c[s.c.length]=d,h=c.a.ec().Kc();h.Ob();)v9(o,zz(h.Pb(),46).b)}}function nYt(t){NE(t,new TAt(pk(mk(gk(wk(bk(new bs,p4t),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new Ho),p4t))),s2(t,p4t,w3t,vwt(Pke)),s2(t,p4t,yJt,vwt(Rke)),s2(t,p4t,SJt,vwt(Ske)),s2(t,p4t,qJt,vwt(Ike)),s2(t,p4t,CJt,vwt(Mke)),s2(t,p4t,IJt,vwt(Cke)),s2(t,p4t,TJt,vwt(Dke)),s2(t,p4t,MJt,vwt(Nke)),s2(t,p4t,h4t,vwt(Eke)),s2(t,p4t,l4t,vwt(Tke)),s2(t,p4t,g4t,vwt(Oke)),s2(t,p4t,c4t,vwt(Lke)),s2(t,p4t,u4t,vwt(Bke)),s2(t,p4t,f4t,vwt(Fke)),s2(t,p4t,d4t,vwt(jke))}function iYt(t){var e;if(this.r=PK(new Tt,new Ct),this.b=new Hdt(zz(vZ($Ie),290)),this.p=new Hdt(zz(vZ($Ie),290)),this.i=new Hdt(zz(vZ(Rre),290)),this.e=t,this.o=new gD(t.rf()),this.D=t.Df()||Hv(AB(t.We((lWt(),TTe)))),this.A=zz(t.We((lWt(),RTe)),21),this.B=zz(t.We(HTe),21),this.q=zz(t.We(sCe),98),this.u=zz(t.We(hCe),21),!pEt(this.u))throw qw(new rx("Invalid port label placement: "+this.u));if(this.v=Hv(AB(t.We(dCe))),this.j=zz(t.We(BTe),21),!nLt(this.j))throw qw(new rx("Invalid node label placement: "+this.j));this.n=zz(ext(t,NTe),116),this.k=Uv(EB(ext(t,MCe))),this.d=Uv(EB(ext(t,ICe))),this.w=Uv(EB(ext(t,FCe))),this.s=Uv(EB(ext(t,DCe))),this.t=Uv(EB(ext(t,OCe))),this.C=zz(ext(t,PCe),142),this.c=2*this.d,e=!this.B.Hc((ejt(),qIe)),this.f=new Mbt(0,e,0),this.g=new Mbt(1,e,0),kv(this.f,(Fet(),Gie),this.g)}function rYt(t,e,i,r,a){var o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T;for(v=0,b=0,p=0,g=1,y=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));y.e!=y.i.gc();)g+=$3(new cG(JL(bLt(w=zz(kwt(y),33)).a.Kc(),new l))),A=w.g,b=n.Math.max(b,A),d=w.f,p=n.Math.max(p,d),v+=A*d;for(s=v+2*r*r*g*(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i,o=n.Math.sqrt(s),u=n.Math.max(o*i,b),c=n.Math.max(o/i,p),m=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));m.e!=m.i.gc();)w=zz(kwt(m),33),E=a.b+(HOt(e,26)*aVt+HOt(e,27)*oVt)*(u-w.g),T=a.b+(HOt(e,26)*aVt+HOt(e,27)*oVt)*(c-w.f),Snt(w,E),Int(w,T);for(_=u+(a.b+a.c),k=c+(a.d+a.a),x=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));x.e!=x.i.gc();)for(f=new cG(JL(bLt(zz(kwt(x),33)).a.Kc(),new l));bDt(f);)eDt(h=zz(Y5(f),79))||qZt(h,e,_,k);jYt(t,_+=a.b+a.c,k+=a.d+a.a,!1,!0)}function aYt(t){var e,n,i,r,a,o,s,c,u,l,h;if(null==t)throw qw(new Ex(YWt));if(u=t,c=!1,(a=t.length)>0&&(d1(0,t.length),45!=(e=t.charCodeAt(0))&&43!=e||(t=t.substr(1),--a,c=45==e)),0==a)throw qw(new Ex(FXt+u+'"'));for(;t.length>0&&(d1(0,t.length),48==t.charCodeAt(0));)t=t.substr(1),--a;if(a>(r$t(),Bee)[10])throw qw(new Ex(FXt+u+'"'));for(r=0;r0&&(h=-parseInt(t.substr(0,i),10),t=t.substr(i),a-=i,n=!1);a>=o;){if(i=parseInt(t.substr(0,o),10),t=t.substr(o),a-=o,n)n=!1;else{if(Xlt(h,s)<0)throw qw(new Ex(FXt+u+'"'));h=odt(h,l)}h=rdt(h,i)}if(Xlt(h,0)>0)throw qw(new Ex(FXt+u+'"'));if(!c&&Xlt(h=k9(h),0)<0)throw qw(new Ex(FXt+u+'"'));return h}function oYt(t,e){var n,i,r,a,o,s,c;if(Jq(),this.a=new ZO(this),this.b=t,this.c=e,this.f=MY(z9((MCt(),JOe),e)),this.f.dc())if((s=vkt(JOe,t))==e)for(this.e=!0,this.d=new Nw,this.f=new fc,this.f.Fc(C9t),zz(Pqt($9(JOe,Zet(t)),""),26)==t&&this.f.Fc(oG(JOe,Zet(t))),r=ARt(JOe,t).Kc();r.Ob();)switch(i=zz(r.Pb(),170),BW(z9(JOe,i))){case 4:this.d.Fc(i);break;case 5:this.f.Gc(MY(z9(JOe,i)))}else if(JE(),zz(e,66).Oj())for(this.e=!0,this.f=null,this.d=new Nw,o=0,c=(null==t.i&&U$t(t),t.i).length;o=0&&o0&&(zz(cK(t.b,e),124).a.b=i)}function cYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(DAt(e,"Comment pre-processing",1),n=0,c=new Wd(t.a);c.a0&&(d1(0,e.length),64!=(s=e.charCodeAt(0)))){if(37==s&&(c=!1,0!=(l=e.lastIndexOf("%"))&&(l==h-1||(d1(l+1,e.length),c=46==e.charCodeAt(l+1))))){if(m=yR("%",o=e.substr(1,l-1))?null:LYt(o),i=0,c)try{i=djt(e.substr(l+2),$Kt,FWt)}catch(t){throw aL(t=dst(t),127)?qw(new L9(t)):qw(t)}for(p=Art(t.Wg());p.Ob();)if(aL(d=Tot(p),510)&&(w=(r=zz(d,590)).d,(null==m?null==w:yR(m,w))&&0==i--))return r;return null}if(f=-1==(u=e.lastIndexOf("."))?e:e.substr(0,u),n=0,-1!=u)try{n=djt(e.substr(u+1),$Kt,FWt)}catch(t){if(!aL(t=dst(t),127))throw qw(t);f=e}for(f=yR("%",f)?null:LYt(f),g=Art(t.Wg());g.Ob();)if(aL(d=Tot(g),191)&&(b=(a=zz(d,191)).ne(),(null==f?null==b:yR(f,b))&&0==n--))return a;return null}return $Ht(t,e)}function fYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A;for(y=new Nw,h=new Wd(t.b);h.a=t.length)return{done:!0};var i=t[n++];return{value:[i,e.get(i)],done:!1}}}},YBt()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(t){return this.obj[":"+t]},t.prototype.set=function(t,e){this.obj[":"+t]=e},t.prototype[rVt]=function(t){delete this.obj[":"+t]},t.prototype.keys=function(){var t=[];for(var e in this.obj)58==e.charCodeAt(0)&&t.push(e.substring(1));return t}),t}function pYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p;if(S$t(),null==t)return null;if(0==(h=8*t.length))return"";for(f=h/24|0,a=null,a=P8(MNe,KKt,25,4*(0!=(s=h%24)?f+1:f),15,1),u=0,l=0,e=0,n=0,i=0,o=0,r=0,c=0;c>24,u=(3&e)<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,g=0==(-128&n)?n>>4<<24>>24:(n>>4^240)<<24>>24,p=0==(-128&(i=t[r++]))?i>>6<<24>>24:(i>>6^252)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[g|u<<4],a[o++]=KLe[l<<2|p],a[o++]=KLe[63&i];return 8==s?(u=(3&(e=t[r]))<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[u<<4],a[o++]=61,a[o++]=61):16==s&&(e=t[r],l=(15&(n=t[r+1]))<<24>>24,u=(3&e)<<24>>24,d=0==(-128&e)?e>>2<<24>>24:(e>>2^192)<<24>>24,g=0==(-128&n)?n>>4<<24>>24:(n>>4^240)<<24>>24,a[o++]=KLe[d],a[o++]=KLe[g|u<<4],a[o++]=KLe[l<<2],a[o++]=61),qpt(a,0,a.length)}function bYt(t,e){var i,r,a,o,s,c;if(0==t.e&&t.p>0&&(t.p=-(t.p-1)),t.p>$Kt&&n4(e,t.p-lXt),s=e.q.getDate(),$Q(e,1),t.k>=0&&mJ(e,t.k),t.c>=0?$Q(e,t.c):t.k>=0?(r=35-new yct(e.q.getFullYear()-lXt,e.q.getMonth(),35).q.getDate(),$Q(e,n.Math.min(r,s))):$Q(e,s),t.f<0&&(t.f=e.q.getHours()),t.b>0&&t.f<12&&(t.f+=12),oL(e,24==t.f&&t.g?0:t.f),t.j>=0&&b6(e,t.j),t.n>=0&&Y8(e,t.n),t.i>=0&&pM(e,adt(odt(Dkt(fot(e.q.getTime()),XKt),XKt),t.i)),t.a&&(n4(a=new DA,a.q.getFullYear()-lXt-80),uT(fot(e.q.getTime()),fot(a.q.getTime()))&&n4(e,a.q.getFullYear()-lXt+100)),t.d>=0)if(-1==t.c)(i=(7+t.d-e.q.getDay())%7)>3&&(i-=7),c=e.q.getMonth(),$Q(e,e.q.getDate()+i),e.q.getMonth()!=c&&$Q(e,e.q.getDate()+(i>0?-7:7));else if(e.q.getDay()!=t.d)return!1;return t.o>$Kt&&(o=e.q.getTimezoneOffset(),pM(e,adt(fot(e.q.getTime()),60*(t.o-o)*XKt))),!0}function wYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;if(aL(r=vEt(e,(hWt(),pfe)),239)){for(d=zz(r,33),g=e.e,h=new gD(e.c),a=e.d,h.a+=a.b,h.b+=a.d,TN(zz(tOt(d,(HZt(),Hbe)),174),(ejt(),HIe))&&(Mf(f=zz(tOt(d,Gbe),116),a.a),jf(f,a.d),Df(f,a.b),$f(f,a.c)),n=new Nw,u=new Wd(e.a);u.a0&&Wz(t.p,f),Wz(t.o,f);p=u+(e-=r),h+=e*t.e,a5(t.a,c,rft(p)),a5(t.b,c,h),t.j=n.Math.max(t.j,p),t.k=n.Math.max(t.k,h),t.d+=e,e+=w}}function kYt(){var t;kYt=M,CIe=new WS(hQt,0),uIe=new WS(vQt,1),cIe=new WS(xQt,2),TIe=new WS(kQt,3),SIe=new WS(_Qt,4),TX(),gIe=new Dx(new VR(t=zz(Kk($Ie),9),zz(TF(t,t.length),9),0)),pIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[]))),lIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[]))),_Ie=fht(_U(TIe,Sst(Ux($Ie,1),QJt,61,0,[]))),EIe=fht(_U(SIe,Sst(Ux($Ie,1),QJt,61,0,[]))),vIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[TIe]))),dIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),kIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),bIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe]))),AIe=fht(_U(TIe,Sst(Ux($Ie,1),QJt,61,0,[SIe]))),hIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[TIe]))),yIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,SIe]))),fIe=fht(_U(cIe,Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe]))),xIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[TIe,SIe]))),wIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe]))),mIe=fht(_U(uIe,Sst(Ux($Ie,1),QJt,61,0,[cIe,TIe,SIe])))}function _Yt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;if(0!=e.b){for(f=new VA,o=null,d=null,i=SQ(n.Math.floor(n.Math.log(e.b)*n.Math.LOG10E)+1),s=0,m=lwt(e,0);m.b!=m.d.c;)for(b=zz(d3(m),86),UI(d)!==UI(vEt(b,(UHt(),rxe)))&&(d=TB(vEt(b,rxe)),s=0),o=null!=d?d+p0(s++,i):p0(s++,i),hct(b,rxe,o),p=new gb(lwt(new db(b).a.d,0));__(p.a);)r5(f,g=zz(d3(p.a),188).c,f.c.b,f.c),hct(g,rxe,o);for(h=new Pw,a=0;a=u){CP(m.b>0),m.a.Xb(m.c=--m.b);break}b.a>l&&(a?(wst(a.b,b.b),a.a=n.Math.max(a.a,b.a),hW(m)):(Wz(b.b,f),b.c=n.Math.min(b.c,l),b.a=n.Math.max(b.a,u),a=b))}a||((a=new iy).c=l,a.a=u,vF(m,a),Wz(a.b,f))}for(c=e.b,h=0,w=new Wd(r);w.as?1:0:(t.b&&(t.b._b(a)&&(r=zz(t.b.xc(a),19).a),t.b._b(c)&&(s=zz(t.b.xc(c),19).a)),rs?1:0)):0!=e.e.c.length&&0!=n.g.c.length?1:-1}function TYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(DAt(e,D1t,1),g=new Nw,v=new Nw,u=new Wd(t.b);u.a0&&(x-=p),EHt(s,x),f=0,g=new Wd(s.a);g.a0),c.a.Xb(c.c=--c.b)),u=.4*r*f,!o&&c.be.d.c){if((d=t.c[e.a.d])==(b=t.c[h.a.d]))continue;ZNt(oE(aE(sE(rE(new qm,1),100),d),b))}}}function LYt(t){var e,n,i,r,a,o,s,c;if(Rqt(),null==t)return null;if((r=UM(t,QAt(37)))<0)return t;for(c=new fN(t.substr(0,r)),e=P8(NNe,y6t,25,4,15,1),s=0,i=0,o=t.length;rr+2&&nct((d1(r+1,t.length),t.charCodeAt(r+1)),IDe,MDe)&&nct((d1(r+2,t.length),t.charCodeAt(r+2)),IDe,MDe))if(n=Sq((d1(r+1,t.length),t.charCodeAt(r+1)),(d1(r+2,t.length),t.charCodeAt(r+2))),r+=2,i>0?128==(192&n)?e[s++]=n<<24>>24:i=0:n>=128&&(192==(224&n)?(e[s++]=n<<24>>24,i=2):224==(240&n)?(e[s++]=n<<24>>24,i=3):240==(248&n)&&(e[s++]=n<<24>>24,i=4)),i>0){if(s==i){switch(s){case 2:PZ(c,((31&e[0])<<6|63&e[1])&VKt);break;case 3:PZ(c,((15&e[0])<<12|(63&e[1])<<6|63&e[2])&VKt)}s=0,i=0}}else{for(a=0;a0){if(o+i>t.length)return!1;s=ZIt(t.substr(0,o+i),e)}else s=ZIt(t,e);switch(a){case 71:return s=YAt(t,o,Sst(Ux(Vee,1),lKt,2,6,[fXt,dXt]),e),r.e=s,!0;case 77:return wBt(t,e,r,s,o);case 76:return mBt(t,e,r,s,o);case 69:return aSt(t,e,o,r);case 99:return oSt(t,e,o,r);case 97:return s=YAt(t,o,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"]),e),r.b=s,!0;case 121:return yBt(t,e,o,s,n,r);case 100:return!(s<=0||(r.c=s,0));case 83:return!(s<0)&&_gt(s,o,e[0],r);case 104:12==s&&(s=0);case 75:case 72:return!(s<0||(r.f=s,r.g=!1,0));case 107:return!(s<0||(r.f=s,r.g=!0,0));case 109:return!(s<0||(r.j=s,0));case 115:return!(s<0||(r.n=s,0));case 90:if(o_&&(p.c=_-p.b),Wz(s.d,new PU(p,kft(s,p))),y=e==uIe?n.Math.max(y,b.b+l.b.rf().b):n.Math.min(y,b.b));for(y+=e==uIe?t.t:-t.t,(v=Sgt((s.e=y,s)))>0&&(zz(cK(t.b,e),124).a.b=v),h=d.Kc();h.Ob();)!(l=zz(h.Pb(),111)).c||l.c.d.c.length<=0||((p=l.c.i).c-=l.e.a,p.d-=l.e.b)}else sYt(t,e)}function BYt(t){var e,n,i,r,a,o,s,c,u,h;for(e=new Pw,o=new DL(t);o.e!=o.i.gc();){for(a=zz(kwt(o),33),n=new Fm,KW(Eae,a,n),h=new oe,i=zz(C4(new FH(null,new GY(new cG(JL(pLt(a).a.Kc(),new l)))),TU(h,y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[(Uut(),Yne)])))),83),Jnt(n,zz(i.xc((lN(),!0)),14),new se),r=zz(C4(DK(zz(i.xc(!1),15).Lc(),new ce),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne]))),15).Kc();r.Ob();)(u=IEt(zz(r.Pb(),79)))&&((s=zz(HI(DV(e.f,u)),21))||(s=DPt(u),_St(e.f,u,s)),zrt(n,s));for(i=zz(C4(new FH(null,new GY(new cG(JL(bLt(a).a.Kc(),new l)))),TU(h,y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne])))),83),Jnt(n,zz(i.xc(!0),14),new ue),c=zz(C4(DK(zz(i.xc(!1),15).Lc(),new le),y7(new q,new z,new it,Sst(Ux(tie,1),LKt,132,0,[Yne]))),15).Kc();c.Ob();)(u=MEt(zz(c.Pb(),79)))&&((s=zz(HI(DV(e.f,u)),21))||(s=DPt(u),_St(e.f,u,s)),zrt(n,s))}}function FYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p;if(cqt(),(c=Xlt(t,0)<0)&&(t=k9(t)),0==Xlt(t,0))switch(e){case 0:return"0";case 1:return KXt;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return(d=new Sx).a+=e<0?"0E+":"0E",d.a+=e==$Kt?"2147483648":""+-e,d.a}h=P8(MNe,KKt,25,1+(l=18),15,1),n=l,p=t;do{u=p,p=Dkt(p,10),h[--n]=pU(adt(48,rdt(u,odt(p,10))))&VKt}while(0!=Xlt(p,0));if(r=rdt(rdt(rdt(l,n),e),1),0==e)return c&&(h[--n]=45),qpt(h,n,l-n);if(e>0&&Xlt(r,-6)>=0){if(Xlt(r,0)>=0){for(a=n+pU(r),s=l-1;s>=a;s--)h[s+1]=h[s];return h[++a]=46,c&&(h[--n]=45),qpt(h,n,l-n+1)}for(o=2;uT(o,adt(k9(r),1));o++)h[--n]=48;return h[--n]=46,h[--n]=48,c&&(h[--n]=45),qpt(h,n,l-n)}return g=n+1,i=l,f=new Ix,c&&(f.a+="-"),i-g>=1?(PZ(f,h[n]),f.a+=".",f.a+=qpt(h,n+1,l-n-1)):f.a+=qpt(h,n,l-n),f.a+="E",Xlt(r,0)>0&&(f.a+="+"),f.a+=""+mG(r),f.a}function RYt(t,e,n){var i,r,a,o,s,c,u,l,h,f;if(t.e.a.$b(),t.f.a.$b(),t.c.c=P8(Ote,HWt,1,0,5,1),t.i.c=P8(Ote,HWt,1,0,5,1),t.g.a.$b(),e)for(o=new Wd(e.a);o.a=1&&(k-l>0&&p>=0?(Snt(f,f.i+x),Int(f,f.j+u*l)):k-l<0&&g>=0&&(Snt(f,f.i+x*k),Int(f,f.j+u)));return Qwt(t,(lWt(),RTe),(vpt(),new VR(o=zz(Kk(VIe),9),zz(TF(o,o.length),9),0))),new PS(_,h)}function $Yt(t){var e,i,r,a,o,s,c,u,l,h,f;if(h=QQ(SAt(zz(Ket((!t.b&&(t.b=new lR(RMe,t,4,7)),t.b),0),82)))==QQ(SAt(zz(Ket((!t.c&&(t.c=new lR(RMe,t,5,8)),t.c),0),82))),s=new Uk,(e=zz(tOt(t,(Wut(),lSe)),74))&&e.b>=2){if(0==(!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i)e_(),i=new oc,h7((!t.a&&(t.a=new nY($Me,t,6,6)),t.a),i);else if((!t.a&&(t.a=new nY($Me,t,6,6)),t.a).i>1)for(f=new aP((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));f.e!=f.i.gc();)Vkt(f);X$t(e,zz(Ket((!t.a&&(t.a=new nY($Me,t,6,6)),t.a),0),202))}if(h)for(r=new DL((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));r.e!=r.i.gc();)for(u=new DL((!(i=zz(kwt(r),202)).a&&(i.a=new OL(PMe,i,5)),i.a));u.e!=u.i.gc();)c=zz(kwt(u),469),s.a=n.Math.max(s.a,c.a),s.b=n.Math.max(s.b,c.b);for(o=new DL((!t.n&&(t.n=new nY(GMe,t,1,7)),t.n));o.e!=o.i.gc();)a=zz(kwt(o),137),(l=zz(tOt(a,bSe),8))&&TD(a,l.a,l.b),h&&(s.a=n.Math.max(s.a,a.i+a.g),s.b=n.Math.max(s.b,a.j+a.f));return s}function zYt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_;for(m=e.c.length,a=new URt(t.a,i,null,null),_=P8(PNe,UXt,25,m,15,1),g=P8(PNe,UXt,25,m,15,1),d=P8(PNe,UXt,25,m,15,1),p=0,c=0;c_[u]&&(p=u),h=new Wd(t.a.b);h.ag&&(o&&(hM(k,d),hM(A,rft(l.b-1))),I=i.b,M+=d+e,d=0,h=n.Math.max(h,i.b+i.c+S)),Snt(c,I),Int(c,M),h=n.Math.max(h,I+S+i.c),d=n.Math.max(d,f),I+=S+e;if(h=n.Math.max(h,r),(C=M+d+i.a)dJt,T=n.Math.abs(d.b-p.b)>dJt,(!i&&E&&T||i&&(E||T))&&Bq(w.a,x)),zrt(w.a,r),0==r.b?d=x:(CP(0!=r.b),d=zz(r.c.b.c,8)),Qot(g,f,b),sat(a)==A&&(mW(A.i)!=a.a&&DCt(b=new Uk,mW(A.i),y),hct(w,Ffe,b)),TTt(g,w,y),h.a.zc(g,h);TJ(w,k),EJ(w,A)}for(l=h.a.ec().Kc();l.Ob();)TJ(u=zz(l.Pb(),17),null),EJ(u,null);HTt(e)}function GYt(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;if(1==t.gc())return zz(t.Xb(0),231);if(t.gc()<=0)return new v6;for(a=t.Kc();a.Ob();){for(i=zz(a.Pb(),231),p=0,h=FWt,f=FWt,u=$Kt,l=$Kt,g=new Wd(i.e);g.ac&&(v=0,x+=s+m,s=0),XRt(b,i,v,x),e=n.Math.max(e,v+w.a),s=n.Math.max(s,w.b),v+=w.a+m;return b}function YYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g;switch(l=new xy,t.a.g){case 3:f=zz(vEt(e.e,(hWt(),Nfe)),15),d=zz(vEt(e.j,Nfe),15),g=zz(vEt(e.f,Nfe),15),n=zz(vEt(e.e,Ofe),15),i=zz(vEt(e.j,Ofe),15),r=zz(vEt(e.f,Ofe),15),wst(o=new Nw,f),d.Jc(new va),wst(o,aL(d,152)?c6(zz(d,152)):aL(d,131)?zz(d,131).a:aL(d,54)?new hv(d):new SA(d)),wst(o,g),wst(a=new Nw,n),wst(a,aL(i,152)?c6(zz(i,152)):aL(i,131)?zz(i,131).a:aL(i,54)?new hv(i):new SA(i)),wst(a,r),hct(e.f,Nfe,o),hct(e.f,Ofe,a),hct(e.f,Pfe,e.f),hct(e.e,Nfe,null),hct(e.e,Ofe,null),hct(e.j,Nfe,null),hct(e.j,Ofe,null);break;case 1:zrt(l,e.e.a),Bq(l,e.i.n),zrt(l,iot(e.j.a)),Bq(l,e.a.n),zrt(l,e.f.a);break;default:zrt(l,e.e.a),zrt(l,iot(e.j.a)),zrt(l,e.f.a)}vX(e.f.a),zrt(e.f.a,l),TJ(e.f,e.e.c),s=zz(vEt(e.e,(HZt(),mbe)),74),u=zz(vEt(e.j,mbe),74),c=zz(vEt(e.f,mbe),74),(s||u||c)&&(CY(h=new xy,c),CY(h,u),CY(h,s),hct(e.f,mbe,h)),TJ(e.j,null),EJ(e.j,null),TJ(e.e,null),EJ(e.e,null),CJ(e.a,null),CJ(e.i,null),e.g&&YYt(t,e.g)}function ZYt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d,g,p,b;if(S$t(),null==t)return null;if((g=gft(a=K9(t)))%4!=0)return null;if(0==(p=g/4|0))return P8(NNe,y6t,25,0,15,1);for(h=null,e=0,n=0,i=0,r=0,o=0,s=0,c=0,u=0,d=0,f=0,l=0,h=P8(NNe,y6t,25,3*p,15,1);d>4)<<24>>24,h[f++]=((15&n)<<4|i>>2&15)<<24>>24,h[f++]=(i<<6|r)<<24>>24}return K_(o=a[l++])&&K_(s=a[l++])?(e=WLe[o],n=WLe[s],c=a[l++],u=a[l++],-1==WLe[c]||-1==WLe[u]?61==c&&61==u?0!=(15&n)?null:(sqt(h,0,b=P8(NNe,y6t,25,3*d+1,15,1),0,3*d),b[f]=(e<<2|n>>4)<<24>>24,b):61!=c&&61==u?0!=(3&(i=WLe[c]))?null:(sqt(h,0,b=P8(NNe,y6t,25,3*d+2,15,1),0,3*d),b[f++]=(e<<2|n>>4)<<24>>24,b[f]=((15&n)<<4|i>>2&15)<<24>>24,b):null:(i=WLe[c],r=WLe[u],h[f++]=(e<<2|n>>4)<<24>>24,h[f++]=((15&n)<<4|i>>2&15)<<24>>24,h[f++]=(i<<6|r)<<24>>24,h)):null}function WYt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y;for(DAt(e,D1t,1),f=zz(vEt(t,(HZt(),Jpe)),218),i=new Wd(t.b);i.a=2){for(d=!0,n=zz(t0(l=new Wd(r.j)),11),h=null;l.a0&&(a=zz(PH(w.c.a,_-1),10),s=t.i[a.p],E=n.Math.ceil(RO(t.n,a,w)),o=k.a.e-w.d.d-(s.a.e+a.o.b+a.d.a)-E),l=RXt,_0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)<0,p=v.a.e.e-v.a.a-(v.b.e.e-v.b.a)<0&&A.a.e.e-A.a.a-(A.b.e.e-A.b.a)>0,g=v.a.e.e+v.b.aA.b.e.e+A.a.a,x=0,!b&&!p&&(d?o+f>0?x=f:l-r>0&&(x=r):g&&(o+c>0?x=c:l-y>0&&(x=y))),k.a.e+=x,k.b&&(k.d.e+=x),1)))}function XYt(t,e,i){var r,a,o,s,c,u,l,h,f,d;if(r=new YK(e.qf().a,e.qf().b,e.rf().a,e.rf().b),a=new dD,t.c)for(s=new Wd(e.wf());s.au&&(i.a+=rL(P8(MNe,KKt,25,-u,15,1))),i.a+="Is",UM(c,QAt(32))>=0)for(r=0;r=i.o.b/2}w?(b=zz(vEt(i,(hWt(),Rfe)),15))?f?a=b:(r=zz(vEt(i,Bhe),15))?a=b.gc()<=r.gc()?b:r:(a=new Nw,hct(i,Bhe,a)):(a=new Nw,hct(i,Rfe,a)):(r=zz(vEt(i,(hWt(),Bhe)),15))?h?a=r:(b=zz(vEt(i,Rfe),15))?a=r.gc()<=b.gc()?r:b:(a=new Nw,hct(i,Rfe,a)):(a=new Nw,hct(i,Bhe,a)),a.Fc(t),hct(t,(hWt(),Rhe),n),e.d==n?(EJ(e,null),n.e.c.length+n.g.c.length==0&&SJ(n,null),wut(n)):(TJ(e,null),n.e.c.length+n.g.c.length==0&&SJ(n,null)),vX(e.a)}function nZt(t,e){var n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I;for(m=new E2(t.b,0),p=0,u=zz((h=e.Kc()).Pb(),19).a,x=0,n=new Fm,_=new hD;m.b=t.a&&(r=xzt(t,m),f=n.Math.max(f,r.b),v=n.Math.max(v,r.d),Wz(c,new rI(m,r)));for(_=new Nw,h=0;h0),b.a.Xb(b.c=--b.b),vF(b,A=new qZ(t.b)),CP(b.b0?(l=0,w&&(l+=c),l+=(E-1)*s,y&&(l+=c),A&&y&&(l=n.Math.max(l,ePt(y,s,m,_))),l0){for(f=l<100?null:new $k(l),g=(u=new _at(e)).g,b=P8(DNe,hXt,25,l,15,1),i=0,y=new wet(l),r=0;r=0;)if(null!=d?Pht(d,g[c]):UI(d)===UI(g[c])){b.length<=i&&sqt(b,0,b=P8(DNe,hXt,25,2*b.length,15,1),0,i),b[i++]=r,h7(y,g[c]);break t}if(UI(d)===UI(s))break}}if(u=y,g=y.g,l=i,i>b.length&&sqt(b,0,b=P8(DNe,hXt,25,i,15,1),0,i),i>0){for(m=!0,a=0;a=0;)Nvt(t,b[o]);if(i!=l){for(r=l;--r>=i;)Nvt(u,r);sqt(b,0,b=P8(DNe,hXt,25,i,15,1),0,i)}e=u}}}else for(e=_vt(t,e),r=t.i;--r>=0;)e.Hc(t.g[r])&&(Nvt(t,r),m=!0);if(m){if(null!=b){for(h=1==(n=e.gc())?vJ(t,4,e.Kc().Pb(),null,b[0],p):vJ(t,6,e,b,b[0],p),f=n<100?null:new $k(n),r=e.Kc();r.Ob();)f=HR(t,zz(d=r.Pb(),72),f);f?(f.Ei(h),f.Fi()):got(t.e,h)}else{for(f=OR(e.gc()),r=e.Kc();r.Ob();)f=HR(t,zz(d=r.Pb(),72),f);f&&f.Fi()}return!0}return!1}function cZt(t,e){var n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y;for((n=new hmt(e)).a||wjt(e),u=dFt(e),c=new wQ,b=new VPt,p=new Wd(e.a);p.a0||i.o==ave&&a0?(h=zz(PH(f.c.a,o-1),10),A=RO(t.b,f,h),b=f.n.b-f.d.d-(h.n.b+h.o.b+h.d.a+A)):b=f.n.b-f.d.d,u=n.Math.min(b,u),o(o=r_t(t,n))?sRt(t,e,n):sRt(t,n,e),ro?1:0}return(i=zz(vEt(e,(hWt(),gfe)),19).a)>(a=zz(vEt(n,gfe),19).a)?sRt(t,e,n):sRt(t,n,e),ia?1:0}function dZt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p;if(Hv(AB(tOt(e,(lWt(),GTe)))))return TX(),TX(),lne;if(c=0!=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,u=!(l=xIt(e)).dc(),c||u){if(!(r=zz(tOt(e,yCe),149)))throw qw(new rx("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout."));if(p=MS(r,(hDt(),tDe)),Pbt(e),!c&&u&&!p)return TX(),TX(),lne;if(s=new Nw,UI(tOt(e,_Te))===UI((cht(),wSe))&&(MS(r,VMe)||MS(r,XMe)))for(f=mFt(t,e),zrt(d=new VA,(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));0!=d.b;)Pbt(h=zz(0==d.b?null:(CP(0!=d.b),Oet(d,d.a.a)),33)),UI(tOt(h,_Te))===UI(ySe)||C8(h,nTe)&&!k5(r,tOt(h,yCe))?(wst(s,dZt(t,h,n,i)),Qwt(h,_Te,ySe),jRt(h)):zrt(d,(!h.a&&(h.a=new nY(YMe,h,10,11)),h.a));else for(f=(!e.a&&(e.a=new nY(YMe,e,10,11)),e.a).i,o=new DL((!e.a&&(e.a=new nY(YMe,e,10,11)),e.a));o.e!=o.i.gc();)wst(s,dZt(t,a=zz(kwt(o),33),n,i)),jRt(a);for(g=new Wd(s);g.a=0?hgt(s):Eft(hgt(s)),t.Ye(swe,d)),u=new Uk,f=!1,t.Xe(twe)?(qP(u,zz(t.We(twe),8)),f=!0):vL(u,o.a/2,o.b/2),d.g){case 4:hct(l,xbe,(Edt(),$fe)),hct(l,Uhe,(Jst(),Ole)),l.o.b=o.b,p<0&&(l.o.a=-p),USt(h,(kYt(),cIe)),f||(u.a=o.a),u.a-=o.a;break;case 2:hct(l,xbe,(Edt(),qfe)),hct(l,Uhe,(Jst(),Mle)),l.o.b=o.b,p<0&&(l.o.a=-p),USt(h,(kYt(),SIe)),f||(u.a=0);break;case 1:hct(l,ife,(G9(),She)),l.o.a=o.a,p<0&&(l.o.b=-p),USt(h,(kYt(),TIe)),f||(u.b=o.b),u.b-=o.b;break;case 3:hct(l,ife,(G9(),The)),l.o.a=o.a,p<0&&(l.o.b=-p),USt(h,(kYt(),uIe)),f||(u.b=0)}if(qP(h.n,u),hct(l,twe,u),e==YSe||e==WSe||e==ZSe){if(g=0,e==YSe&&t.Xe(iwe))switch(d.g){case 1:case 2:g=zz(t.We(iwe),19).a;break;case 3:case 4:g=-zz(t.We(iwe),19).a}else switch(d.g){case 4:case 2:g=a.b,e==WSe&&(g/=r.b);break;case 1:case 3:g=a.a,e==WSe&&(g/=r.a)}hct(l,Afe,g)}return hct(l,Xhe,d),l}function pZt(t){var e,n,i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_;if((n=Uv(EB(vEt(t.a.j,(HZt(),jpe)))))<-1||!t.a.i||LR(zz(vEt(t.a.o,nwe),98))||sdt(t.a.o,(kYt(),cIe)).gc()<2&&sdt(t.a.o,SIe).gc()<2)return!0;if(t.a.c.Rf())return!1;for(v=0,y=0,m=new Nw,c=0,u=(s=t.a.e).length;c=n}function bZt(){function t(t){var e=this;this.dispatch=function(e){var n=e.data;switch(n.cmd){case"algorithms":var i=Cgt((TX(),new qd(new Md(fDe.b))));t.postMessage({id:n.id,data:i});break;case"categories":var r=Cgt((TX(),new qd(new Md(fDe.c))));t.postMessage({id:n.id,data:r});break;case"options":var a=Cgt((TX(),new qd(new Md(fDe.d))));t.postMessage({id:n.id,data:a});break;case"register":dUt(n.algorithms),t.postMessage({id:n.id});break;case"layout":Bzt(n.graph,n.layoutOptions||{},n.options||{}),t.postMessage({id:n.id,data:n.graph})}},this.saveDispatch=function(n){try{e.dispatch(n)}catch(e){t.postMessage({id:n.data.id,error:e})}}}function n(e){var n=this;this.dispatcher=new t({postMessage:function(t){n.onmessage({data:t})}}),this.postMessage=function(t){setTimeout((function(){n.dispatcher.saveDispatch({data:t})}),0)}}if(o_(),typeof document===wVt&&typeof self!==wVt){var r=new t(self);self.onmessage=r.saveDispatch}else typeof e!==wVt&&e.exports&&(Object.defineProperty(i,"__esModule",{value:!0}),e.exports={default:n,Worker:n})}function wZt(t){t.N||(t.N=!0,t.b=kot(t,0),Rrt(t.b,0),Rrt(t.b,1),Rrt(t.b,2),t.bb=kot(t,1),Rrt(t.bb,0),Rrt(t.bb,1),t.fb=kot(t,2),Rrt(t.fb,3),Rrt(t.fb,4),jrt(t.fb,5),t.qb=kot(t,3),Rrt(t.qb,0),jrt(t.qb,1),jrt(t.qb,2),Rrt(t.qb,3),Rrt(t.qb,4),jrt(t.qb,5),Rrt(t.qb,6),t.a=_ot(t,4),t.c=_ot(t,5),t.d=_ot(t,6),t.e=_ot(t,7),t.f=_ot(t,8),t.g=_ot(t,9),t.i=_ot(t,10),t.j=_ot(t,11),t.k=_ot(t,12),t.n=_ot(t,13),t.o=_ot(t,14),t.p=_ot(t,15),t.q=_ot(t,16),t.s=_ot(t,17),t.r=_ot(t,18),t.t=_ot(t,19),t.u=_ot(t,20),t.v=_ot(t,21),t.w=_ot(t,22),t.B=_ot(t,23),t.A=_ot(t,24),t.C=_ot(t,25),t.D=_ot(t,26),t.F=_ot(t,27),t.G=_ot(t,28),t.H=_ot(t,29),t.J=_ot(t,30),t.I=_ot(t,31),t.K=_ot(t,32),t.M=_ot(t,33),t.L=_ot(t,34),t.P=_ot(t,35),t.Q=_ot(t,36),t.R=_ot(t,37),t.S=_ot(t,38),t.T=_ot(t,39),t.U=_ot(t,40),t.V=_ot(t,41),t.X=_ot(t,42),t.W=_ot(t,43),t.Y=_ot(t,44),t.Z=_ot(t,45),t.$=_ot(t,46),t._=_ot(t,47),t.ab=_ot(t,48),t.cb=_ot(t,49),t.db=_ot(t,50),t.eb=_ot(t,51),t.gb=_ot(t,52),t.hb=_ot(t,53),t.ib=_ot(t,54),t.jb=_ot(t,55),t.kb=_ot(t,56),t.lb=_ot(t,57),t.mb=_ot(t,58),t.nb=_ot(t,59),t.ob=_ot(t,60),t.pb=_ot(t,61))}function mZt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;if(y=0,0==e.f.a)for(w=new Wd(t);w.au&&0==(f1(u,e.c.length),zz(e.c[u],200)).a.c.length;)v9(e,(f1(u,e.c.length),e.c[u]));if(!c){--a;continue}if(Ojt(e,l,r,c,f,n,u,i)){h=!0;continue}if(f){if(Jzt(e,l,r,c,n,u,i)){h=!0;continue}if(Olt(l,r)){r.c=!0,h=!0;continue}}else if(Olt(l,r)){r.c=!0,h=!0;continue}if(h)continue}Olt(l,r)?(r.c=!0,h=!0,c&&(c.k=!1)):Gyt(r.q)}else OA(),Ext(l,r),--a,h=!0;return h}function xZt(t,e,i,r,a,o,s){var c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D;for(b=0,C=0,l=new Wd(t.b);l.ab&&(o&&(hM(_,g),hM(E,rft(h.b-1)),Wz(t.d,p),c.c=P8(Ote,HWt,1,0,5,1)),M=i.b,D+=g+e,g=0,f=n.Math.max(f,i.b+i.c+I)),c.c[c.c.length]=u,Twt(u,M,D),f=n.Math.max(f,M+I+i.c),g=n.Math.max(g,d),M+=I+e,p=u;if(wst(t.a,c),Wz(t.d,zz(PH(c,c.c.length-1),157)),f=n.Math.max(f,r),(S=D+g+i.a)1&&(s=n.Math.min(s,n.Math.abs(zz(Fwt(c.a,1),8).b-h.b)))));else for(p=new Wd(e.j);p.aa&&(o=d.a-a,s=FWt,r.c=P8(Ote,HWt,1,0,5,1),a=d.a),d.a>=a&&(r.c[r.c.length]=c,c.a.b>1&&(s=n.Math.min(s,n.Math.abs(zz(Fwt(c.a,c.a.b-2),8).b-d.b)))));if(0!=r.c.length&&o>e.o.a/2&&s>e.o.b/2){for(SJ(g=new ITt,e),USt(g,(kYt(),uIe)),g.n.a=e.o.a/2,SJ(b=new ITt,e),USt(b,TIe),b.n.a=e.o.a/2,b.n.b=e.o.b,u=new Wd(r);u.a=l.b?TJ(c,b):TJ(c,g)):(l=zz(bq(c.a),8),(0==c.a.b?b1(c.c):zz(wP(c.a),8)).b>=l.b?EJ(c,b):EJ(c,g)),(f=zz(vEt(c,(HZt(),mbe)),74))&&xgt(f,l,!0);e.n.a=a-e.o.a/2}}function AZt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;if(u=e,Lit(c=X3(t,L3(n),u),F2(u,U6t)),l=zz(lnt(t.g,kIt(GQ(u,E6t))),33),i=null,(o=GQ(u,"sourcePort"))&&(i=kIt(o)),h=zz(lnt(t.j,i),118),!l)throw qw(new nx("An edge must have a source node (edge id: '"+Vpt(u)+K6t));if(h&&!gW(WQ(h),l))throw qw(new nx("The source port of an edge must be a port of the edge's source node (edge id: '"+F2(u,U6t)+K6t));if(!c.b&&(c.b=new lR(RMe,c,4,7)),h7(c.b,h||l),f=zz(lnt(t.g,kIt(GQ(u,Q6t))),33),r=null,(s=GQ(u,"targetPort"))&&(r=kIt(s)),d=zz(lnt(t.j,r),118),!f)throw qw(new nx("An edge must have a target node (edge id: '"+Vpt(u)+K6t));if(d&&!gW(WQ(d),f))throw qw(new nx("The target port of an edge must be a port of the edge's target node (edge id: '"+F2(u,U6t)+K6t));if(!c.c&&(c.c=new lR(RMe,c,5,8)),h7(c.c,d||f),0==(!c.b&&(c.b=new lR(RMe,c,4,7)),c.b).i||0==(!c.c&&(c.c=new lR(RMe,c,5,8)),c.c).i)throw a=F2(u,U6t),qw(new nx(W6t+a+K6t));return CAt(u,c),lOt(u,c),Bct(t,u,c)}function EZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T;return h=I$t(qN(t,(kYt(),gIe)),e),g=svt(qN(t,pIe),e),v=svt(qN(t,_Ie),e),A=cvt(qN(t,EIe),e),f=cvt(qN(t,lIe),e),m=svt(qN(t,kIe),e),p=svt(qN(t,bIe),e),k=svt(qN(t,AIe),e),x=svt(qN(t,hIe),e),E=cvt(qN(t,dIe),e),w=svt(qN(t,vIe),e),y=svt(qN(t,yIe),e),_=svt(qN(t,fIe),e),T=cvt(qN(t,xIe),e),d=cvt(qN(t,wIe),e),b=svt(qN(t,mIe),e),n=Nct(Sst(Ux(PNe,1),UXt,25,15,[m.a,A.a,k.a,T.a])),i=Nct(Sst(Ux(PNe,1),UXt,25,15,[g.a,h.a,v.a,b.a])),r=w.a,a=Nct(Sst(Ux(PNe,1),UXt,25,15,[p.a,f.a,x.a,d.a])),u=Nct(Sst(Ux(PNe,1),UXt,25,15,[m.b,g.b,p.b,y.b])),c=Nct(Sst(Ux(PNe,1),UXt,25,15,[A.b,h.b,f.b,b.b])),l=E.b,s=Nct(Sst(Ux(PNe,1),UXt,25,15,[k.b,v.b,x.b,_.b])),g7(qN(t,gIe),n+r,u+l),g7(qN(t,mIe),n+r,u+l),g7(qN(t,pIe),n+r,0),g7(qN(t,_Ie),n+r,u+l+c),g7(qN(t,EIe),0,u+l),g7(qN(t,lIe),n+r+i,u+l),g7(qN(t,bIe),n+r+i,0),g7(qN(t,AIe),0,u+l+c),g7(qN(t,hIe),n+r+i,u+l+c),g7(qN(t,dIe),0,u),g7(qN(t,vIe),n,0),g7(qN(t,fIe),0,u+l+c),g7(qN(t,wIe),n+r+i,0),(o=new Uk).a=Nct(Sst(Ux(PNe,1),UXt,25,15,[n+i+r+a,E.a,y.a,_.a])),o.b=Nct(Sst(Ux(PNe,1),UXt,25,15,[u+c+l+s,w.b,T.b,d.b])),o}function TZt(t){var e,n,i,r,a,o,s,c,u,h,f,d,g,p,b;for(p=new Nw,f=new Wd(t.d.b);f.ar.d.d+r.d.a?h.f.d=!0:(h.f.d=!0,h.f.a=!0))),i.b!=i.d.c&&(e=n);h&&(a=zz(FZ(t.f,o.d.i),57),e.ba.d.d+a.d.a?h.f.d=!0:(h.f.d=!0,h.f.a=!0))}for(s=new cG(JL(fdt(d).a.Kc(),new l));bDt(s);)0!=(o=zz(Y5(s),17)).a.b&&(e=zz(wP(o.a),8),o.d.j==(kYt(),uIe)&&((b=new Szt(e,new PS(e.a,r.d.d),r,o)).f.a=!0,b.a=o.d,p.c[p.c.length]=b),o.d.j==TIe&&((b=new Szt(e,new PS(e.a,r.d.d+r.d.a),r,o)).f.d=!0,b.a=o.d,p.c[p.c.length]=b))}return p}function CZt(t,e,n){var i,r,a,o,s,c,u;if(DAt(n,"Network simplex node placement",1),t.e=e,t.n=zz(vEt(e,(hWt(),Dfe)),304),uHt(t),R_t(t),QA(gtt(new FH(null,new g1(t.e.b,16)),new qa),new ab(t)),QA(DK(gtt(DK(gtt(new FH(null,new g1(t.e.b,16)),new eo),new no),new io),new ro),new rb(t)),Hv(AB(vEt(t.e,(HZt(),Pbe))))&&(DAt(a=vat(n,1),"Straight Edges Pre-Processing",1),_Gt(t),HTt(a)),Tmt(t.f),r=zz(vEt(e,Pwe),19).a*t.f.a.c.length,KRt(Xx(Vx(zj(t.f),r),!1),vat(n,1)),0!=t.d.a.gc()){for(DAt(a=vat(n,1),"Flexible Where Space Processing",1),o=zz(ON(MG(OK(new FH(null,new g1(t.f.a,16)),new Ha),new Ba)),19).a,s=zz(ON(IG(OK(new FH(null,new g1(t.f.a,16)),new Ua),new Fa)),19).a-o,c=DN(new Hm,t.f),u=DN(new Hm,t.f),ZNt(oE(aE(rE(sE(new qm,2e4),s),c),u)),QA(DK(DK(LY(t.i),new Ga),new Ya),new GK(o,c,s,u)),i=t.d.a.ec().Kc();i.Ob();)zz(i.Pb(),213).g=1;KRt(Xx(Vx(zj(t.f),r),!1),vat(a,1)),HTt(a)}Hv(AB(vEt(e,Pbe)))&&(DAt(a=vat(n,1),"Straight Edges Post-Processing",1),CCt(t),HTt(a)),VUt(t),t.e=null,t.f=null,t.i=null,t.c=null,OY(t.k),t.j=null,t.a=null,t.o=null,t.d.a.$b(),HTt(n)}function SZt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;for(s=new Wd(t.a.b);s.a0)if(r=h.gc(),u=SQ(n.Math.floor((r+1)/2))-1,a=SQ(n.Math.ceil((r+1)/2))-1,e.o==ave)for(l=a;l>=u;l--)e.a[v.p]==v&&(p=zz(h.Xb(l),46),g=zz(p.a,10),!$A(i,p.b)&&d>t.b.e[g.p]&&(e.a[g.p]=v,e.g[v.p]=e.g[g.p],e.a[v.p]=e.g[v.p],e.f[e.g[v.p].p]=(lN(),!!(Hv(e.f[e.g[v.p].p])&v.k==(cTt(),Cse))),d=t.b.e[g.p]));else for(l=u;l<=a;l++)e.a[v.p]==v&&(w=zz(h.Xb(l),46),b=zz(w.a,10),!$A(i,w.b)&&d=g&&(m>g&&(d.c=P8(Ote,HWt,1,0,5,1),g=m),d.c[d.c.length]=o);0!=d.c.length&&(f=zz(PH(d,mmt(e,d.c.length)),128),C.a.Bc(f),f.s=p++,oLt(f,E,k),d.c=P8(Ote,HWt,1,0,5,1))}for(v=t.c.length+1,s=new Wd(t);s.aT.s&&(hW(n),v9(T.i,i),i.c>0&&(i.a=T,Wz(T.t,i),i.b=_,Wz(_.i,i)))}function DZt(t){var e,n,i,r,a;switch(e=t.c){case 11:return t.Ml();case 12:return t.Ol();case 14:return t.Ql();case 15:return t.Tl();case 16:return t.Rl();case 17:return t.Ul();case 21:return VZt(t),pWt(),pWt(),uNe;case 10:switch(t.a){case 65:return t.yl();case 90:return t.Dl();case 122:return t.Kl();case 98:return t.El();case 66:return t.zl();case 60:return t.Jl();case 62:return t.Hl()}}switch(a=kZt(t),e=t.c){case 3:return t.Zl(a);case 4:return t.Xl(a);case 5:return t.Yl(a);case 0:if(123==t.a&&t.d=48&&e<=57))throw qw(new ox(kWt((sO(),W8t))));for(i=e-48;r=48&&e<=57;)if((i=10*i+e-48)<0)throw qw(new ox(kWt((sO(),Q8t))));if(n=i,44==e){if(r>=t.j)throw qw(new ox(kWt((sO(),X8t))));if((e=hK(t.i,r++))>=48&&e<=57){for(n=e-48;r=48&&e<=57;)if((n=10*n+e-48)<0)throw qw(new ox(kWt((sO(),Q8t))));if(i>n)throw qw(new ox(kWt((sO(),V8t))))}else n=-1}if(125!=e)throw qw(new ox(kWt((sO(),K8t))));t.sl(r)?(pWt(),pWt(),a=new l4(9,a),t.d=r+1):(pWt(),pWt(),a=new l4(3,a),t.d=r),a.dm(i),a.cm(n),VZt(t)}}return a}function OZt(t,e,n,i,r){var a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E;for(g=new Q6(e.b),m=new Q6(e.b),f=new Q6(e.b),k=new Q6(e.b),p=new Q6(e.b),x=lwt(e,0);x.b!=x.d.c;)for(s=new Wd((y=zz(d3(x),11)).g);s.a0,b=y.g.c.length>0,u&&b?f.c[f.c.length]=y:u?g.c[g.c.length]=y:b&&(m.c[m.c.length]=y);for(d=new Wd(g);d.a1)for(d=new aP((!t.a&&(t.a=new nY($Me,t,6,6)),t.a));d.e!=d.i.gc();)Vkt(d);for(p=S,S>v+y?p=v+y:Sx+g?b=x+g:Iv-y&&px-g&&bS+C?_=S+C:vI+k?A=I+k:xS-C&&_I-k&&Ai&&(h=i-1),(f=L+HOt(e,24)*cVt*l-l/2)<0?f=1:f>r&&(f=r-1),e_(),_nt(a=new ac,h),Ant(a,f),h7((!s.a&&(s.a=new OL(PMe,s,5)),s.a),a)}function HZt(){HZt=M,lWt(),wwe=kCe,mwe=_Ce,ywe=ACe,vwe=ECe,kwe=TCe,_we=CCe,Twe=ICe,Swe=DCe,Iwe=OCe,Cwe=MCe,Mwe=LCe,Owe=NCe,Nwe=FCe,Ewe=SCe,fWt(),bwe=jge,xwe=$ge,Awe=zge,Dwe=qge,lwe=new ZD(wCe,rft(0)),hwe=Bge,fwe=Fge,dwe=Rge,Gwe=fpe,Fwe=Gge,Rwe=Wge,zwe=npe,jwe=Vge,$we=Jge,Zwe=wpe,Ywe=gpe,Hwe=cpe,qwe=ope,Uwe=lpe,Fbe=Cge,Rbe=Sge,rbe=Rde,abe=zde,Ybe=new WD(12),Gbe=new ZD(ZTe,Ybe),Tdt(),Jpe=new ZD(mTe,tbe=XCe),ewe=new ZD(oCe,0),gwe=new ZD(mCe,rft(1)),_pe=new ZD(aTe,bJt),Ube=GTe,nwe=sCe,swe=gCe,Gpe=fTe,xpe=iTe,ube=_Te,pwe=new ZD(xCe,(lN(),!0)),gbe=TTe,pbe=CTe,$be=RTe,Hbe=HTe,zbe=$Te,zht(),Ype=new ZD(dTe,Wpe=zCe),Obe=BTe,Dbe=NTe,awe=hCe,rwe=lCe,owe=dCe,owt(),new ZD(JTe,Kbe=HSe),Vbe=nCe,Qbe=iCe,Jbe=rCe,Xbe=eCe,Bwe=Uge,Cbe=fge,Tbe=lge,Pwe=Hge,xbe=nge,Upe=Ade,Hpe=kde,Ppe=sde,Bpe=cde,Rpe=dde,Fpe=ude,qpe=vde,Ibe=gge,Mbe=pge,wbe=Kde,jbe=Oge,Nbe=yge,sbe=Ude,Bbe=Ege,nbe=Nde,ibe=Bde,Npe=lTe,Lbe=bge,Cpe=Xfe,Tpe=Wfe,Epe=Zfe,hbe=Zde,lbe=Yde,fbe=Wde,qbe=zTe,mbe=MTe,obe=vTe,Vpe=bTe,Xpe=pTe,jpe=bde,iwe=uCe,Ape=uTe,dbe=ETe,twe=aCe,Zbe=KTe,Wbe=VTe,_be=age,Abe=sge,uwe=bCe,kpe=Yfe,Ebe=uge,Qpe=Mde,Kpe=Sde,Sbe=OTe,ybe=Jde,Pbe=kge,Lwe=PCe,Zpe=Tde,cwe=Nge,ebe=Ode,vbe=ege,$pe=mde,bbe=ITe,kbe=rge,zpe=yde,Lpe=ade,Dpe=nde,Ipe=tde,Mpe=ede,Ope=rde,Spe=Qfe,cbe=Gde}function UZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(cqt(),A=t.e,g=t.d,r=t.a,0==A)switch(e){case 0:return"0";case 1:return KXt;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return(k=new Sx).a+=e<0?"0E+":"0E",k.a+=-e,k.a}if(v=P8(MNe,KKt,25,1+(y=10*g+1+7),15,1),n=y,1==g)if((s=r[0])<0){S=n0(s,ZXt);do{p=S,S=Dkt(S,10),v[--n]=48+pU(rdt(p,odt(S,10)))&VKt}while(0!=Xlt(S,0))}else{S=s;do{p=S,S=S/10|0,v[--n]=p-10*S+48&VKt}while(0!=S)}else{sqt(r,0,T=P8(DNe,hXt,25,g,15,1),0,C=g);t:for(;;){for(_=0,u=C-1;u>=0;u--)w=fAt(adt(vG(_,32),n0(T[u],ZXt))),T[u]=pU(w),_=pU(xG(w,32));m=pU(_),b=n;do{v[--n]=48+m%10&VKt}while(0!=(m=m/10|0)&&0!=n);for(i=9-b+n,c=0;c0;c++)v[--n]=48;for(h=C-1;0==T[h];h--)if(0==h)break t;C=h+1}for(;48==v[n];)++n}if(d=A<0,o=y-n-e-1,0==e)return d&&(v[--n]=45),qpt(v,n,y-n);if(e>0&&o>=-6){if(o>=0){for(l=n+o,f=y-1;f>=l;f--)v[f+1]=v[f];return v[++l]=46,d&&(v[--n]=45),qpt(v,n,y-n+1)}for(h=2;h<1-o;h++)v[--n]=48;return v[--n]=46,v[--n]=48,d&&(v[--n]=45),qpt(v,n,y-n)}return E=n+1,a=y,x=new Ix,d&&(x.a+="-"),a-E>=1?(PZ(x,v[n]),x.a+=".",x.a+=qpt(v,n+1,y-n-1)):x.a+=qpt(v,n,y-n),x.a+="E",o>0&&(x.a+="+"),x.a+=""+o,x.a}function GZt(t,e){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x;switch(t.c=e,t.g=new Pw,UE(),ngt(new Cg(new Bv(t.c))),m=TB(tOt(t.c,(TEt(),pAe))),s=zz(tOt(t.c,wAe),316),v=zz(tOt(t.c,mAe),429),a=zz(tOt(t.c,lAe),482),y=zz(tOt(t.c,bAe),430),t.j=Uv(EB(tOt(t.c,yAe))),o=t.a,s.g){case 0:o=t.a;break;case 1:o=t.b;break;case 2:o=t.i;break;case 3:o=t.e;break;case 4:o=t.f;break;default:throw qw(new jv(P4t+(null!=s.f?s.f:""+s.g)))}if(t.d=new BQ(o,v,a),hct(t.d,(Wat(),Xre),AB(tOt(t.c,fAe))),t.d.c=Hv(AB(tOt(t.c,hAe))),0==VX(t.c).i)return t.d;for(l=new DL(VX(t.c));l.e!=l.i.gc();){for(f=(u=zz(kwt(l),33)).g/2,h=u.f/2,x=new PS(u.i+f,u.j+h);lY(t.g,x);)jP(x,(n.Math.random()-.5)*dJt,(n.Math.random()-.5)*dJt);g=zz(tOt(u,(lWt(),OTe)),142),p=new DJ(x,new YK(x.a-f-t.j/2-g.b,x.b-h-t.j/2-g.d,u.g+t.j+(g.b+g.c),u.f+t.j+(g.d+g.a))),Wz(t.d.i,p),KW(t.g,x,new rI(p,u))}switch(y.g){case 0:if(null==m)t.d.d=zz(PH(t.d.i,0),65);else for(w=new Wd(t.d.i);w.a1&&r5(h,m,h.c.b,h.c),vet(a)));m=y}return h}function ZZt(t,e,n){var i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D;for(DAt(n,"Greedy cycle removal",1),D=(y=e.a).c.length,t.a=P8(DNe,hXt,25,D,15,1),t.c=P8(DNe,hXt,25,D,15,1),t.b=P8(DNe,hXt,25,D,15,1),u=0,w=new Wd(y);w.a0?T+1:1);for(o=new Wd(x.g);o.a0?T+1:1)}0==t.c[u]?Bq(t.e,p):0==t.a[u]&&Bq(t.f,p),++u}for(g=-1,d=1,h=new Nw,t.d=zz(vEt(e,(hWt(),Tfe)),230);D>0;){for(;0!=t.e.b;)S=zz(pq(t.e),10),t.b[S.p]=g--,VRt(t,S),--D;for(;0!=t.f.b;)I=zz(pq(t.f),10),t.b[I.p]=d++,VRt(t,I),--D;if(D>0){for(f=$Kt,m=new Wd(y);m.a=f&&(v>f&&(h.c=P8(Ote,HWt,1,0,5,1),f=v),h.c[h.c.length]=p);l=t.Zf(h),t.b[l.p]=d++,VRt(t,l),--D}}for(C=y.c.length+1,u=0;ut.b[M]&&(nzt(i,!0),hct(e,Hhe,(lN(),!0)));t.a=null,t.c=null,t.b=null,vX(t.f),vX(t.e),HTt(n)}function WZt(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;for(i=new Nw,s=new Nw,b=e/2,d=t.gc(),r=zz(t.Xb(0),8),w=zz(t.Xb(1),8),Wz(i,(f1(0,(g=VDt(r.a,r.b,w.a,w.b,b)).c.length),zz(g.c[0],8))),Wz(s,(f1(1,g.c.length),zz(g.c[1],8))),u=2;u=0;c--)Bq(n,(f1(c,o.c.length),zz(o.c[c],8)));return n}function KZt(t){var e,n,i,r,a,o,s,c,u,l,h,f,d;if(o=!0,h=null,i=null,r=null,e=!1,d=xDe,u=null,a=null,(c=Xbt(t,s=0,DDe,ODe))=0&&yR(t.substr(s,"//".length),"//")?(c=Xbt(t,s+=2,LDe,NDe),i=t.substr(s,c-s),s=c):null==h||s!=t.length&&(d1(s,t.length),47==t.charCodeAt(s))||(o=!1,-1==(c=vN(t,QAt(35),s))&&(c=t.length),i=t.substr(s,c-s),s=c);if(!n&&s0&&58==hK(l,l.length-1)&&(r=l,s=c)),s=t.j)return t.a=-1,void(t.c=1);if(e=hK(t.i,t.d++),t.a=e,1!=t.b){switch(e){case 124:i=2;break;case 42:i=3;break;case 43:i=4;break;case 63:i=5;break;case 41:i=7;break;case 46:i=8;break;case 91:i=9;break;case 94:i=11;break;case 36:i=12;break;case 40:if(i=6,t.d>=t.j)break;if(63!=hK(t.i,t.d))break;if(++t.d>=t.j)throw qw(new ox(kWt((sO(),m8t))));switch(e=hK(t.i,t.d++)){case 58:i=13;break;case 61:i=14;break;case 33:i=15;break;case 91:i=19;break;case 62:i=18;break;case 60:if(t.d>=t.j)throw qw(new ox(kWt((sO(),m8t))));if(61==(e=hK(t.i,t.d++)))i=16;else{if(33!=e)throw qw(new ox(kWt((sO(),y8t))));i=17}break;case 35:for(;t.d=t.j)throw qw(new ox(kWt((sO(),w8t))));t.a=hK(t.i,t.d++);break;default:i=0}t.c=i}else{switch(e){case 92:if(i=10,t.d>=t.j)throw qw(new ox(kWt((sO(),w8t))));t.a=hK(t.i,t.d++);break;case 45:512==(512&t.e)&&t.d=k||!Ppt(m,i))&&(i=r1(e,h)),CJ(m,i),a=new cG(JL(fdt(m).a.Kc(),new l));bDt(a);)r=zz(Y5(a),17),t.a[r.p]||(b=r.c.i,--t.e[b.p],0==t.e[b.p]&&$8(iEt(g,b)));for(u=h.c.length-1;u>=0;--u)Wz(e.b,(f1(u,h.c.length),zz(h.c[u],29)));e.a.c=P8(Ote,HWt,1,0,5,1),HTt(n)}else HTt(n)}function tWt(t){var e,n,i,r,a,o,s,c;for(t.b=1,VZt(t),e=null,0==t.c&&94==t.a?(VZt(t),pWt(),pWt(),QPt(e=new E0(4),0,cte),o=new E0(4)):(pWt(),pWt(),o=new E0(4)),r=!0;1!=(c=t.c);){if(0==c&&93==t.a&&!r){e&&(KUt(e,o),o=e);break}if(n=t.a,i=!1,10==c)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:lqt(o,bjt(n)),i=!0;break;case 105:case 73:case 99:case 67:lqt(o,bjt(n)),(n=-1)<0&&(i=!0);break;case 112:case 80:if(!(s=FIt(t,n)))throw qw(new ox(kWt((sO(),D8t))));lqt(o,s),i=!0;break;default:n=UBt(t)}else if(24==c&&!r){if(e&&(KUt(e,o),o=e),KUt(o,tWt(t)),0!=t.c||93!=t.a)throw qw(new ox(kWt((sO(),P8t))));break}if(VZt(t),!i){if(0==c){if(91==n)throw qw(new ox(kWt((sO(),B8t))));if(93==n)throw qw(new ox(kWt((sO(),F8t))));if(45==n&&!r&&93!=t.a)throw qw(new ox(kWt((sO(),R8t))))}if(0!=t.c||45!=t.a||45==n&&r)QPt(o,n,n);else{if(VZt(t),1==(c=t.c))throw qw(new ox(kWt((sO(),L8t))));if(0==c&&93==t.a)QPt(o,n,n),QPt(o,45,45);else{if(0==c&&93==t.a||24==c)throw qw(new ox(kWt((sO(),R8t))));if(a=t.a,0==c){if(91==a)throw qw(new ox(kWt((sO(),B8t))));if(93==a)throw qw(new ox(kWt((sO(),F8t))));if(45==a)throw qw(new ox(kWt((sO(),R8t))))}else 10==c&&(a=UBt(t));if(VZt(t),n>a)throw qw(new ox(kWt((sO(),z8t))));QPt(o,n,a)}}}r=!1}if(1==t.c)throw qw(new ox(kWt((sO(),L8t))));return EOt(o),Uqt(o),t.b=0,VZt(t),o}function eWt(t){XOt(t.c,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#decimal"])),XOt(t.d,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#integer"])),XOt(t.e,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#boolean"])),XOt(t.f,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EBoolean",n8t,"EBoolean:Object"])),XOt(t.i,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#byte"])),XOt(t.g,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#hexBinary"])),XOt(t.j,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EByte",n8t,"EByte:Object"])),XOt(t.n,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EChar",n8t,"EChar:Object"])),XOt(t.t,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#double"])),XOt(t.u,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EDouble",n8t,"EDouble:Object"])),XOt(t.F,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#float"])),XOt(t.G,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EFloat",n8t,"EFloat:Object"])),XOt(t.I,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#int"])),XOt(t.J,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EInt",n8t,"EInt:Object"])),XOt(t.N,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#long"])),XOt(t.O,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"ELong",n8t,"ELong:Object"])),XOt(t.Z,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#short"])),XOt(t.$,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"EShort",n8t,"EShort:Object"])),XOt(t._,$7t,Sst(Ux(Vee,1),lKt,2,6,[J7t,"http://www.w3.org/2001/XMLSchema#string"]))}function nWt(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(1==t.c.length)return f1(0,t.c.length),zz(t.c[0],135);if(t.c.length<=0)return new C6;for(u=new Wd(t);u.af&&(C=0,S+=h+_,h=0),ALt(x,s,C,S),e=n.Math.max(e,C+k.a),h=n.Math.max(h,k.b),C+=k.a+_;for(v=new Pw,i=new Pw,E=new Wd(t);E.ayOt(a))&&(h=a);for(!h&&(f1(0,p.c.length),h=zz(p.c[0],180)),g=new Wd(e.b);g.a=-1900?1:0,cM(t,n>=4?Sst(Ux(Vee,1),lKt,2,6,[fXt,dXt])[o]:Sst(Ux(Vee,1),lKt,2,6,["BC","AD"])[o]);break;case 121:uwt(t,n,i);break;case 77:WRt(t,n,i);break;case 107:_tt(t,0==(s=r.q.getHours())?24:s,n);break;case 83:RLt(t,n,r);break;case 69:c=i.q.getDay(),cM(t,5==n?Sst(Ux(Vee,1),lKt,2,6,["S","M","T","W","T","F","S"])[c]:4==n?Sst(Ux(Vee,1),lKt,2,6,[gXt,pXt,bXt,wXt,mXt,yXt,vXt])[c]:Sst(Ux(Vee,1),lKt,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[c]);break;case 97:r.q.getHours()>=12&&r.q.getHours()<24?cM(t,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"])[1]):cM(t,Sst(Ux(Vee,1),lKt,2,6,["AM","PM"])[0]);break;case 104:_tt(t,0==(u=r.q.getHours()%12)?12:u,n);break;case 75:_tt(t,r.q.getHours()%12,n);break;case 72:_tt(t,r.q.getHours(),n);break;case 99:l=i.q.getDay(),5==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["S","M","T","W","T","F","S"])[l]):4==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,[gXt,pXt,bXt,wXt,mXt,yXt,vXt])[l]):3==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[l]):_tt(t,l,1);break;case 76:h=i.q.getMonth(),5==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[h]):4==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,[QKt,JKt,tXt,eXt,nXt,iXt,rXt,aXt,oXt,sXt,cXt,uXt])[h]):3==n?cM(t,Sst(Ux(Vee,1),lKt,2,6,["Jan","Feb","Mar","Apr",nXt,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[h]):_tt(t,h+1,n);break;case 81:f=i.q.getMonth()/3|0,cM(t,n<4?Sst(Ux(Vee,1),lKt,2,6,["Q1","Q2","Q3","Q4"])[f]:Sst(Ux(Vee,1),lKt,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[f]);break;case 100:_tt(t,i.q.getDate(),n);break;case 109:_tt(t,r.q.getMinutes(),n);break;case 115:_tt(t,r.q.getSeconds(),n);break;case 122:cM(t,n<4?a.c[0]:a.c[1]);break;case 118:cM(t,a.b);break;case 90:cM(t,n<3?eIt(a):3==n?pIt(a):bIt(a.a));break;default:return!1}return!0}function cWt(t,e,n,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S;if(nRt(e),c=zz(Ket((!e.b&&(e.b=new lR(RMe,e,4,7)),e.b),0),82),l=zz(Ket((!e.c&&(e.c=new lR(RMe,e,5,8)),e.c),0),82),s=SAt(c),u=SAt(l),o=0==(!e.a&&(e.a=new nY($Me,e,6,6)),e.a).i?null:zz(Ket((!e.a&&(e.a=new nY($Me,e,6,6)),e.a),0),202),k=zz(FZ(t.a,s),10),T=zz(FZ(t.a,u),10),_=null,C=null,aL(c,186)&&(aL(x=zz(FZ(t.a,c),299),11)?_=zz(x,11):aL(x,10)&&(k=zz(x,10),_=zz(PH(k.j,0),11))),aL(l,186)&&(aL(E=zz(FZ(t.a,l),299),11)?C=zz(E,11):aL(E,10)&&(T=zz(E,10),C=zz(PH(T.j,0),11))),!k||!T)throw qw(new ax("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(Uot(p=new gV,e),hct(p,(hWt(),pfe),e),hct(p,(HZt(),mbe),null),d=zz(vEt(i,Jhe),21),k==T&&d.Fc((gBt(),mhe)),_||(sit(),v=Hme,A=null,o&&mD(zz(vEt(k,nwe),98))&&(V3(A=new PS(o.j,o.k),ZQ(e)),e5(A,n),Iet(u,s)&&(v=qme,YF(A,k.n))),_=bqt(k,A,v,i)),C||(sit(),v=qme,S=null,o&&mD(zz(vEt(T,nwe),98))&&(V3(S=new PS(o.b,o.c),ZQ(e)),e5(S,n)),C=bqt(T,S,v,mW(T))),TJ(p,_),EJ(p,C),(_.e.c.length>1||_.g.c.length>1||C.e.c.length>1||C.g.c.length>1)&&d.Fc((gBt(),dhe)),f=new DL((!e.n&&(e.n=new nY(GMe,e,1,7)),e.n));f.e!=f.i.gc();)if(!Hv(AB(tOt(h=zz(kwt(f),137),Ube)))&&h.a)switch(b=Hlt(h),Wz(p.b,b),zz(vEt(b,Vpe),272).g){case 1:case 2:d.Fc((gBt(),hhe));break;case 0:d.Fc((gBt(),uhe)),hct(b,Vpe,(Ret(),GCe))}if(a=zz(vEt(i,Hpe),314),w=zz(vEt(i,jbe),315),r=a==(Dit(),ule)||w==(Pmt(),wme),o&&0!=(!o.a&&(o.a=new OL(PMe,o,5)),o.a).i&&r){for(m=UTt(o),g=new xy,y=lwt(m,0);y.b!=y.d.c;)Bq(g,new gD(zz(d3(y),8)));hct(p,bfe,g)}return p}function uWt(t){t.gb||(t.gb=!0,t.b=kot(t,0),Rrt(t.b,18),jrt(t.b,19),t.a=kot(t,1),Rrt(t.a,1),jrt(t.a,2),jrt(t.a,3),jrt(t.a,4),jrt(t.a,5),t.o=kot(t,2),Rrt(t.o,8),Rrt(t.o,9),jrt(t.o,10),jrt(t.o,11),jrt(t.o,12),jrt(t.o,13),jrt(t.o,14),jrt(t.o,15),jrt(t.o,16),jrt(t.o,17),jrt(t.o,18),jrt(t.o,19),jrt(t.o,20),jrt(t.o,21),jrt(t.o,22),jrt(t.o,23),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),cet(t.o),t.p=kot(t,3),Rrt(t.p,2),Rrt(t.p,3),Rrt(t.p,4),Rrt(t.p,5),jrt(t.p,6),jrt(t.p,7),cet(t.p),cet(t.p),t.q=kot(t,4),Rrt(t.q,8),t.v=kot(t,5),jrt(t.v,9),cet(t.v),cet(t.v),cet(t.v),t.w=kot(t,6),Rrt(t.w,2),Rrt(t.w,3),Rrt(t.w,4),jrt(t.w,5),t.B=kot(t,7),jrt(t.B,1),cet(t.B),cet(t.B),cet(t.B),t.Q=kot(t,8),jrt(t.Q,0),cet(t.Q),t.R=kot(t,9),Rrt(t.R,1),t.S=kot(t,10),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),cet(t.S),t.T=kot(t,11),jrt(t.T,10),jrt(t.T,11),jrt(t.T,12),jrt(t.T,13),jrt(t.T,14),cet(t.T),cet(t.T),t.U=kot(t,12),Rrt(t.U,2),Rrt(t.U,3),jrt(t.U,4),jrt(t.U,5),jrt(t.U,6),jrt(t.U,7),cet(t.U),t.V=kot(t,13),jrt(t.V,10),t.W=kot(t,14),Rrt(t.W,18),Rrt(t.W,19),Rrt(t.W,20),jrt(t.W,21),jrt(t.W,22),jrt(t.W,23),t.bb=kot(t,15),Rrt(t.bb,10),Rrt(t.bb,11),Rrt(t.bb,12),Rrt(t.bb,13),Rrt(t.bb,14),Rrt(t.bb,15),Rrt(t.bb,16),jrt(t.bb,17),cet(t.bb),cet(t.bb),t.eb=kot(t,16),Rrt(t.eb,2),Rrt(t.eb,3),Rrt(t.eb,4),Rrt(t.eb,5),Rrt(t.eb,6),Rrt(t.eb,7),jrt(t.eb,8),jrt(t.eb,9),t.ab=kot(t,17),Rrt(t.ab,0),Rrt(t.ab,1),t.H=kot(t,18),jrt(t.H,0),jrt(t.H,1),jrt(t.H,2),jrt(t.H,3),jrt(t.H,4),jrt(t.H,5),cet(t.H),t.db=kot(t,19),jrt(t.db,2),t.c=_ot(t,20),t.d=_ot(t,21),t.e=_ot(t,22),t.f=_ot(t,23),t.i=_ot(t,24),t.g=_ot(t,25),t.j=_ot(t,26),t.k=_ot(t,27),t.n=_ot(t,28),t.r=_ot(t,29),t.s=_ot(t,30),t.t=_ot(t,31),t.u=_ot(t,32),t.fb=_ot(t,33),t.A=_ot(t,34),t.C=_ot(t,35),t.D=_ot(t,36),t.F=_ot(t,37),t.G=_ot(t,38),t.I=_ot(t,39),t.J=_ot(t,40),t.L=_ot(t,41),t.M=_ot(t,42),t.N=_ot(t,43),t.O=_ot(t,44),t.P=_ot(t,45),t.X=_ot(t,46),t.Y=_ot(t,47),t.Z=_ot(t,48),t.$=_ot(t,49),t._=_ot(t,50),t.cb=_ot(t,51),t.K=_ot(t,52))}function lWt(){var t,e;lWt=M,nTe=new sw(p5t),yCe=new sw(b5t),pmt(),iTe=new OM(K2t,rTe=SEe),new Ow,aTe=new OM(XQt,null),oTe=new sw(w5t),p_t(),hTe=_U(JEe,Sst(Ux(HCe,1),LKt,291,0,[KEe])),lTe=new OM(c3t,hTe),fTe=new OM(W2t,(lN(),!1)),zht(),dTe=new OM(J2t,gTe=zCe),Tdt(),mTe=new OM(x2t,yTe=JCe),kTe=new OM(O4t,!1),cht(),_Te=new OM(b2t,ATe=mSe),WTe=new WD(12),ZTe=new OM(VQt,WTe),STe=new OM(_Jt,!1),ITe=new OM(v3t,!1),YTe=new OM(TJt,!1),V_t(),sCe=new OM(AJt,cCe=VSe),bCe=new sw(w3t),wCe=new sw(mJt),mCe=new sw(xJt),xCe=new sw(kJt),DTe=new xy,MTe=new OM(u3t,DTe),uTe=new OM(f3t,!1),ETe=new OM(d3t,!1),new sw(m5t),LTe=new fy,OTe=new OM(m3t,LTe),GTe=new OM(Y2t,!1),new Ow,vCe=new OM(y5t,1),new OM(v5t,!0),rft(0),new OM(x5t,rft(100)),new OM(k5t,!1),rft(0),new OM(_5t,rft(4e3)),rft(0),new OM(A5t,rft(400)),new OM(E5t,!1),new OM(T5t,!1),new OM(C5t,!0),new OM(S5t,!1),zgt(),sTe=new OM(g5t,cTe=nMe),kCe=new OM(N2t,10),_Ce=new OM(P2t,10),ACe=new OM(WQt,20),ECe=new OM(B2t,10),TCe=new OM(vJt,2),CCe=new OM(F2t,10),ICe=new OM(R2t,0),MCe=new OM(z2t,5),DCe=new OM(j2t,1),OCe=new OM($2t,1),LCe=new OM(yJt,20),NCe=new OM(q2t,10),FCe=new OM(H2t,10),SCe=new sw(U2t),BCe=new fD,PCe=new OM(y3t,BCe),VTe=new sw(b3t),KTe=new OM(p3t,XTe=!1),PTe=new WD(5),NTe=new OM(t3t,PTe),eOt(),e=zz(Kk(USe),9),FTe=new VR(e,zz(TF(e,e.length),9),0),BTe=new OM(IJt,FTe),owt(),JTe=new OM(i3t,tCe=zSe),nCe=new sw(r3t),iCe=new sw(a3t),rCe=new sw(o3t),eCe=new sw(s3t),t=zz(Kk(VIe),9),jTe=new VR(t,zz(TF(t,t.length),9),0),RTe=new OM(SJt,jTe),UTe=edt((ejt(),UIe)),HTe=new OM(CJt,UTe),qTe=new PS(0,0),zTe=new OM(qJt,qTe),$Te=new OM(Q2t,!1),Ret(),bTe=new OM(l3t,wTe=GCe),pTe=new OM(EJt,!1),new sw(I5t),rft(1),new OM(M5t,null),aCe=new sw(g3t),uCe=new sw(h3t),kYt(),gCe=new OM(Z2t,pCe=CIe),oCe=new sw(G2t),dIt(),fCe=edt(rIe),hCe=new OM(MJt,fCe),lCe=new OM(e3t,!1),dCe=new OM(n3t,!0),TTe=new OM(X2t,!1),CTe=new OM(V2t,!1),vTe=new OM(KQt,1),eEt(),new OM(D5t,xTe=oSe),QTe=!0}function hWt(){var t,e;hWt=M,pfe=new sw(DJt),$he=new sw("coordinateOrigin"),Efe=new sw("processors"),jhe=new iF("compoundNode",(lN(),!1)),nfe=new iF("insideConnections",!1),bfe=new sw("originalBendpoints"),wfe=new sw("originalDummyNodePosition"),mfe=new sw("originalLabelEdge"),Cfe=new sw("representedLabels"),Ghe=new sw("endLabels"),Yhe=new sw("endLabel.origin"),sfe=new iF("labelSide",(Wvt(),ESe)),dfe=new iF("maxEdgeThickness",0),Sfe=new iF("reversed",!1),Tfe=new sw(OJt),lfe=new iF("longEdgeSource",null),hfe=new iF("longEdgeTarget",null),ufe=new iF("longEdgeHasLabelDummies",!1),cfe=new iF("longEdgeBeforeLabelDummy",!1),Uhe=new iF("edgeConstraint",(Jst(),Dle)),rfe=new sw("inLayerLayoutUnit"),ife=new iF("inLayerConstraint",(G9(),Che)),afe=new iF("inLayerSuccessorConstraint",new Nw),ofe=new iF("inLayerSuccessorConstraintBetweenNonDummies",!1),_fe=new sw("portDummy"),zhe=new iF("crossingHint",rft(0)),Jhe=new iF("graphProperties",new VR(e=zz(Kk(Ahe),9),zz(TF(e,e.length),9),0)),Xhe=new iF("externalPortSide",(kYt(),CIe)),Vhe=new iF("externalPortSize",new Uk),Whe=new sw("externalPortReplacedDummies"),Khe=new sw("externalPortReplacedDummy"),Zhe=new iF("externalPortConnections",new VR(t=zz(Kk($Ie),9),zz(TF(t,t.length),9),0)),Afe=new iF(bQt,0),Phe=new sw("barycenterAssociates"),Rfe=new sw("TopSideComments"),Bhe=new sw("BottomSideComments"),Rhe=new sw("CommentConnectionPort"),efe=new iF("inputCollect",!1),xfe=new iF("outputCollect",!1),Hhe=new iF("cyclic",!1),qhe=new sw("crossHierarchyMap"),Ffe=new sw("targetOffset"),new iF("splineLabelSize",new Uk),Dfe=new sw("spacings"),kfe=new iF("partitionConstraint",!1),Fhe=new sw("breakingPoint.info"),Pfe=new sw("splines.survivingEdge"),Nfe=new sw("splines.route.start"),Ofe=new sw("splines.edgeChain"),vfe=new sw("originalPortConstraints"),Mfe=new sw("selfLoopHolder"),Lfe=new sw("splines.nsPortY"),gfe=new sw("modelOrder"),ffe=new sw("longEdgeTargetNode"),Qhe=new iF(Y1t,!1),Ife=new iF(Y1t,!1),tfe=new sw("layerConstraints.hiddenNodes"),yfe=new sw("layerConstraints.opposidePort"),Bfe=new sw("targetNode.modelOrder")}function fWt(){fWt=M,jtt(),Tde=new OM(Z1t,Cde=Tle),Ude=new OM(W1t,(lN(),!1)),G2(),Kde=new OM(K1t,Xde=Dhe),gge=new OM(X1t,!1),pge=new OM(V1t,!0),Yfe=new OM(Q1t,!1),Y9(),Nge=new OM(J1t,Pge=Rme),rft(1),Hge=new OM(t0t,rft(7)),Uge=new OM(e0t,!1),Gde=new OM(n0t,!1),Xmt(),Ade=new OM(i0t,Ede=vle),EAt(),fge=new OM(r0t,dge=eme),Edt(),nge=new OM(a0t,ige=Hfe),rft(-1),ege=new OM(o0t,rft(-1)),rft(-1),rge=new OM(s0t,rft(-1)),rft(-1),age=new OM(c0t,rft(4)),rft(-1),sge=new OM(u0t,rft(2)),lNt(),lge=new OM(l0t,hge=Ime),rft(0),uge=new OM(h0t,rft(0)),Jde=new OM(f0t,rft(FWt)),Dit(),kde=new OM(d0t,_de=lle),sde=new OM(g0t,!1),bde=new OM(p0t,.1),vde=new OM(b0t,!1),rft(-1),mde=new OM(w0t,rft(-1)),rft(-1),yde=new OM(m0t,rft(-1)),rft(0),cde=new OM(y0t,rft(40)),jot(),dde=new OM(v0t,gde=_he),ude=new OM(x0t,lde=xhe),Pmt(),Oge=new OM(k0t,Lge=bme),kge=new sw(_0t),b9(),bge=new OM(A0t,wge=Hle),qkt(),yge=new OM(E0t,vge=Xle),new Ow,Ege=new OM(T0t,.3),Cge=new sw(C0t),gmt(),Sge=new OM(S0t,Ige=fme),Hat(),Nde=new OM(I0t,Pde=Wme),D6(),Bde=new OM(M0t,Fde=Jme),Zut(),Rde=new OM(D0t,jde=rye),zde=new OM(O0t,.2),Ode=new OM(L0t,2),jge=new OM(N0t,null),zge=new OM(P0t,10),$ge=new OM(B0t,10),qge=new OM(F0t,20),rft(0),Bge=new OM(R0t,rft(0)),rft(0),Fge=new OM(j0t,rft(0)),rft(0),Rge=new OM($0t,rft(0)),Zfe=new OM(z0t,!1),JEt(),Xfe=new OM(q0t,Vfe=ahe),K8(),Wfe=new OM(H0t,Kfe=ole),Zde=new OM(U0t,!1),rft(0),Yde=new OM(G0t,rft(16)),rft(0),Wde=new OM(Y0t,rft(5)),Lst(),fpe=new OM(Z0t,dpe=dye),Gge=new OM(W0t,10),Wge=new OM(K0t,1),cit(),npe=new OM(X0t,ipe=ble),Vge=new sw(V0t),tpe=rft(1),rft(0),Jge=new OM(Q0t,tpe),bat(),wpe=new OM(J0t,mpe=sye),gpe=new sw(t2t),cpe=new OM(e2t,!0),ope=new OM(n2t,2),lpe=new OM(i2t,!0),wTt(),Mde=new OM(r2t,Dde=jle),LCt(),Sde=new OM(a2t,Ide=Jue),vct(),ade=new OM(o2t,ode=Nme),rde=new OM(s2t,!1),qht(),Qfe=new OM(c2t,Jfe=gse),Tlt(),nde=new OM(u2t,ide=ame),tde=new OM(l2t,0),ede=new OM(h2t,0),Qde=kle,Vde=ule,oge=tme,cge=tme,tge=Vwe,cht(),wde=wSe,xde=lle,pde=lle,hde=lle,fde=wSe,_ge=yme,Age=bme,mge=bme,xge=bme,Tge=mme,Dge=yme,Mge=yme,Tdt(),$de=QCe,qde=QCe,Hde=rye,Lde=VCe,Yge=gye,Zge=fye,Kge=gye,Xge=fye,rpe=gye,ape=fye,Qge=ple,epe=ble,ype=gye,vpe=fye,ppe=gye,bpe=fye,upe=fye,spe=fye,hpe=fye}function dWt(){dWt=M,rce=new tC("DIRECTION_PREPROCESSOR",0),ece=new tC("COMMENT_PREPROCESSOR",1),ace=new tC("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),xce=new tC("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),$ce=new tC("PARTITION_PREPROCESSOR",4),Ece=new tC("LABEL_DUMMY_INSERTER",5),Yce=new tC("SELF_LOOP_PREPROCESSOR",6),Mce=new tC("LAYER_CONSTRAINT_PREPROCESSOR",7),Rce=new tC("PARTITION_MIDPROCESSOR",8),bce=new tC("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),Nce=new tC("NODE_PROMOTION",10),Ice=new tC("LAYER_CONSTRAINT_POSTPROCESSOR",11),jce=new tC("PARTITION_POSTPROCESSOR",12),fce=new tC("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),Wce=new tC("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),Kse=new tC("BREAKING_POINT_INSERTER",15),Lce=new tC("LONG_EDGE_SPLITTER",16),qce=new tC("PORT_SIDE_PROCESSOR",17),kce=new tC("INVERTED_PORT_PROCESSOR",18),zce=new tC("PORT_LIST_SORTER",19),Xce=new tC("SORT_BY_INPUT_ORDER_OF_MODEL",20),Bce=new tC("NORTH_SOUTH_PORT_PREPROCESSOR",21),Xse=new tC("BREAKING_POINT_PROCESSOR",22),Fce=new tC(A1t,23),Vce=new tC(E1t,24),Uce=new tC("SELF_LOOP_PORT_RESTORER",25),Kce=new tC("SINGLE_EDGE_GRAPH_WRAPPER",26),_ce=new tC("IN_LAYER_CONSTRAINT_PROCESSOR",27),uce=new tC("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),Ace=new tC("LABEL_AND_NODE_SIZE_PROCESSOR",29),vce=new tC("INNERMOST_NODE_MARGIN_CALCULATOR",30),Zce=new tC("SELF_LOOP_ROUTER",31),Jse=new tC("COMMENT_NODE_MARGIN_CALCULATOR",32),sce=new tC("END_LABEL_PREPROCESSOR",33),Cce=new tC("LABEL_DUMMY_SWITCHER",34),Qse=new tC("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),Sce=new tC("LABEL_SIDE_SELECTOR",36),mce=new tC("HYPEREDGE_DUMMY_MERGER",37),dce=new tC("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),Dce=new tC("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),pce=new tC("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),nce=new tC("CONSTRAINTS_POSTPROCESSOR",41),tce=new tC("COMMENT_POSTPROCESSOR",42),yce=new tC("HYPERNODE_PROCESSOR",43),gce=new tC("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),Oce=new tC("LONG_EDGE_JOINER",45),Gce=new tC("SELF_LOOP_POSTPROCESSOR",46),Vse=new tC("BREAKING_POINT_REMOVER",47),Pce=new tC("NORTH_SOUTH_PORT_POSTPROCESSOR",48),wce=new tC("HORIZONTAL_COMPACTOR",49),Tce=new tC("LABEL_DUMMY_REMOVER",50),lce=new tC("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),cce=new tC("END_LABEL_SORTER",52),Hce=new tC("REVERSED_EDGE_RESTORER",53),oce=new tC("END_LABEL_POSTPROCESSOR",54),hce=new tC("HIERARCHICAL_NODE_RESIZER",55),ice=new tC("DIRECTION_POSTPROCESSOR",56)}function gWt(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b,w,m,y,v,x,k,_,A,E,T,C,S,I,M,D,O,L,N,P,B,F,R,j,$,z,q,H,U,G,Y,Z,W,K,X,V,Q,J,tt,et,nt,it,rt,at,ot,st;for(Q=0,L=0,B=(M=e).length;L0&&(t.a[H.p]=Q++)}for(it=0,N=0,F=(D=i).length;N0;){for(CP(Z.b>0),Y=0,c=new Wd((H=zz(Z.a.Xb(Z.c=--Z.b),11)).e);c.a0&&(H.j==(kYt(),uIe)?(t.a[H.p]=it,++it):(t.a[H.p]=it+R+$,++$))}it+=$}for(G=new Pw,p=new hD,O=0,P=(I=e).length;Ol.b&&(l.b=W)):H.i.c==V&&(Wl.c&&(l.c=W));for(G7(b,0,b.length,null),nt=P8(DNe,hXt,25,b.length,15,1),r=P8(DNe,hXt,25,it+1,15,1),m=0;m0;)A%2>0&&(a+=ot[A+1]),++ot[A=(A-1)/2|0];for(T=P8(Hye,HWt,362,2*b.length,0,1),x=0;x'?":yR(y8t,t)?"'(?<' or '(? toIndex: ",kVt=", toIndex: ",_Vt="Index: ",AVt=", Size: ",EVt="org.eclipse.elk.alg.common",TVt={62:1},CVt="org.eclipse.elk.alg.common.compaction",SVt="Scanline/EventHandler",IVt="org.eclipse.elk.alg.common.compaction.oned",MVt="CNode belongs to another CGroup.",DVt="ISpacingsHandler/1",OVt="The ",LVt=" instance has been finished already.",NVt="The direction ",PVt=" is not supported by the CGraph instance.",BVt="OneDimensionalCompactor",FVt="OneDimensionalCompactor/lambda$0$Type",RVt="Quadruplet",jVt="ScanlineConstraintCalculator",$Vt="ScanlineConstraintCalculator/ConstraintsScanlineHandler",zVt="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",qVt="ScanlineConstraintCalculator/Timestamp",HVt="ScanlineConstraintCalculator/lambda$0$Type",UVt={169:1,45:1},GVt="org.eclipse.elk.alg.common.compaction.options",YVt="org.eclipse.elk.core.data",ZVt="org.eclipse.elk.polyomino.traversalStrategy",WVt="org.eclipse.elk.polyomino.lowLevelSort",KVt="org.eclipse.elk.polyomino.highLevelSort",XVt="org.eclipse.elk.polyomino.fill",VVt={130:1},QVt="polyomino",JVt="org.eclipse.elk.alg.common.networksimplex",tQt={177:1,3:1,4:1},eQt="org.eclipse.elk.alg.common.nodespacing",nQt="org.eclipse.elk.alg.common.nodespacing.cellsystem",iQt="CENTER",rQt={212:1,326:1},aQt={3:1,4:1,5:1,595:1},oQt="LEFT",sQt="RIGHT",cQt="Vertical alignment cannot be null",uQt="BOTTOM",lQt="org.eclipse.elk.alg.common.nodespacing.internal",hQt="UNDEFINED",fQt=.01,dQt="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",gQt="LabelPlacer/lambda$0$Type",pQt="LabelPlacer/lambda$1$Type",bQt="portRatioOrPosition",wQt="org.eclipse.elk.alg.common.overlaps",mQt="DOWN",yQt="org.eclipse.elk.alg.common.polyomino",vQt="NORTH",xQt="EAST",kQt="SOUTH",_Qt="WEST",AQt="org.eclipse.elk.alg.common.polyomino.structures",EQt="Direction",TQt="Grid is only of size ",CQt=". Requested point (",SQt=") is out of bounds.",IQt=" Given center based coordinates were (",MQt="org.eclipse.elk.graph.properties",DQt="IPropertyHolder",OQt={3:1,94:1,134:1},LQt="org.eclipse.elk.alg.common.spore",NQt="org.eclipse.elk.alg.common.utils",PQt={209:1},BQt="org.eclipse.elk.core",FQt="Connected Components Compaction",RQt="org.eclipse.elk.alg.disco",jQt="org.eclipse.elk.alg.disco.graph",$Qt="org.eclipse.elk.alg.disco.options",zQt="CompactionStrategy",qQt="org.eclipse.elk.disco.componentCompaction.strategy",HQt="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",UQt="org.eclipse.elk.disco.debug.discoGraph",GQt="org.eclipse.elk.disco.debug.discoPolys",YQt="componentCompaction",ZQt="org.eclipse.elk.disco",WQt="org.eclipse.elk.spacing.componentComponent",KQt="org.eclipse.elk.edge.thickness",XQt="org.eclipse.elk.aspectRatio",VQt="org.eclipse.elk.padding",QQt="org.eclipse.elk.alg.disco.transform",JQt=1.5707963267948966,tJt=17976931348623157e292,eJt={3:1,4:1,5:1,192:1},nJt={3:1,6:1,4:1,5:1,106:1,120:1},iJt="org.eclipse.elk.alg.force",rJt="ComponentsProcessor",aJt="ComponentsProcessor/1",oJt="org.eclipse.elk.alg.force.graph",sJt="Component Layout",cJt="org.eclipse.elk.alg.force.model",uJt="org.eclipse.elk.force.model",lJt="org.eclipse.elk.force.iterations",hJt="org.eclipse.elk.force.repulsivePower",fJt="org.eclipse.elk.force.temperature",dJt=.001,gJt="org.eclipse.elk.force.repulsion",pJt="org.eclipse.elk.alg.force.options",bJt=1.600000023841858,wJt="org.eclipse.elk.force",mJt="org.eclipse.elk.priority",yJt="org.eclipse.elk.spacing.nodeNode",vJt="org.eclipse.elk.spacing.edgeLabel",xJt="org.eclipse.elk.randomSeed",kJt="org.eclipse.elk.separateConnectedComponents",_Jt="org.eclipse.elk.interactive",AJt="org.eclipse.elk.portConstraints",EJt="org.eclipse.elk.edgeLabels.inline",TJt="org.eclipse.elk.omitNodeMicroLayout",CJt="org.eclipse.elk.nodeSize.options",SJt="org.eclipse.elk.nodeSize.constraints",IJt="org.eclipse.elk.nodeLabels.placement",MJt="org.eclipse.elk.portLabels.placement",DJt="origin",OJt="random",LJt="boundingBox.upLeft",NJt="boundingBox.lowRight",PJt="org.eclipse.elk.stress.fixed",BJt="org.eclipse.elk.stress.desiredEdgeLength",FJt="org.eclipse.elk.stress.dimension",RJt="org.eclipse.elk.stress.epsilon",jJt="org.eclipse.elk.stress.iterationLimit",$Jt="org.eclipse.elk.stress",zJt="ELK Stress",qJt="org.eclipse.elk.nodeSize.minimum",HJt="org.eclipse.elk.alg.force.stress",UJt="Layered layout",GJt="org.eclipse.elk.alg.layered",YJt="org.eclipse.elk.alg.layered.compaction.components",ZJt="org.eclipse.elk.alg.layered.compaction.oned",WJt="org.eclipse.elk.alg.layered.compaction.oned.algs",KJt="org.eclipse.elk.alg.layered.compaction.recthull",XJt="org.eclipse.elk.alg.layered.components",VJt="NONE",QJt={3:1,6:1,4:1,9:1,5:1,122:1},JJt={3:1,6:1,4:1,5:1,141:1,106:1,120:1},t1t="org.eclipse.elk.alg.layered.compound",e1t={51:1},n1t="org.eclipse.elk.alg.layered.graph",i1t=" -> ",r1t="Not supported by LGraph",a1t="Port side is undefined",o1t={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},s1t={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},c1t={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},u1t="([{\"' \t\r\n",l1t=")]}\"' \t\r\n",h1t="The given string contains parts that cannot be parsed as numbers.",f1t="org.eclipse.elk.core.math",d1t={3:1,4:1,142:1,207:1,414:1},g1t={3:1,4:1,116:1,207:1,414:1},p1t="org.eclipse.elk.layered",b1t="org.eclipse.elk.alg.layered.graph.transform",w1t="ElkGraphImporter",m1t="ElkGraphImporter/lambda$0$Type",y1t="ElkGraphImporter/lambda$1$Type",v1t="ElkGraphImporter/lambda$2$Type",x1t="ElkGraphImporter/lambda$4$Type",k1t="Node margin calculation",_1t="org.eclipse.elk.alg.layered.intermediate",A1t="ONE_SIDED_GREEDY_SWITCH",E1t="TWO_SIDED_GREEDY_SWITCH",T1t="No implementation is available for the layout processor ",C1t="IntermediateProcessorStrategy",S1t="Node '",I1t="FIRST_SEPARATE",M1t="LAST_SEPARATE",D1t="Odd port side processing",O1t="org.eclipse.elk.alg.layered.intermediate.compaction",L1t="org.eclipse.elk.alg.layered.intermediate.greedyswitch",N1t="org.eclipse.elk.alg.layered.p3order.counting",P1t={225:1},B1t="org.eclipse.elk.alg.layered.intermediate.loops",F1t="org.eclipse.elk.alg.layered.intermediate.loops.ordering",R1t="org.eclipse.elk.alg.layered.intermediate.loops.routing",j1t="org.eclipse.elk.alg.layered.intermediate.preserveorder",$1t="org.eclipse.elk.alg.layered.intermediate.wrapping",z1t="org.eclipse.elk.alg.layered.options",q1t="INTERACTIVE",H1t="DEPTH_FIRST",U1t="EDGE_LENGTH",G1t="SELF_LOOPS",Y1t="firstTryWithInitialOrder",Z1t="org.eclipse.elk.layered.directionCongruency",W1t="org.eclipse.elk.layered.feedbackEdges",K1t="org.eclipse.elk.layered.interactiveReferencePoint",X1t="org.eclipse.elk.layered.mergeEdges",V1t="org.eclipse.elk.layered.mergeHierarchyEdges",Q1t="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",J1t="org.eclipse.elk.layered.portSortingStrategy",t0t="org.eclipse.elk.layered.thoroughness",e0t="org.eclipse.elk.layered.unnecessaryBendpoints",n0t="org.eclipse.elk.layered.generatePositionAndLayerIds",i0t="org.eclipse.elk.layered.cycleBreaking.strategy",r0t="org.eclipse.elk.layered.layering.strategy",a0t="org.eclipse.elk.layered.layering.layerConstraint",o0t="org.eclipse.elk.layered.layering.layerChoiceConstraint",s0t="org.eclipse.elk.layered.layering.layerId",c0t="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",u0t="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",l0t="org.eclipse.elk.layered.layering.nodePromotion.strategy",h0t="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",f0t="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",d0t="org.eclipse.elk.layered.crossingMinimization.strategy",g0t="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",p0t="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",b0t="org.eclipse.elk.layered.crossingMinimization.semiInteractive",w0t="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",m0t="org.eclipse.elk.layered.crossingMinimization.positionId",y0t="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",v0t="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",x0t="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",k0t="org.eclipse.elk.layered.nodePlacement.strategy",_0t="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",A0t="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",E0t="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",T0t="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",C0t="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",S0t="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",I0t="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",M0t="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",D0t="org.eclipse.elk.layered.edgeRouting.splines.mode",O0t="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",L0t="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",N0t="org.eclipse.elk.layered.spacing.baseValue",P0t="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",B0t="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",F0t="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",R0t="org.eclipse.elk.layered.priority.direction",j0t="org.eclipse.elk.layered.priority.shortness",$0t="org.eclipse.elk.layered.priority.straightness",z0t="org.eclipse.elk.layered.compaction.connectedComponents",q0t="org.eclipse.elk.layered.compaction.postCompaction.strategy",H0t="org.eclipse.elk.layered.compaction.postCompaction.constraints",U0t="org.eclipse.elk.layered.highDegreeNodes.treatment",G0t="org.eclipse.elk.layered.highDegreeNodes.threshold",Y0t="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Z0t="org.eclipse.elk.layered.wrapping.strategy",W0t="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",K0t="org.eclipse.elk.layered.wrapping.correctionFactor",X0t="org.eclipse.elk.layered.wrapping.cutting.strategy",V0t="org.eclipse.elk.layered.wrapping.cutting.cuts",Q0t="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",J0t="org.eclipse.elk.layered.wrapping.validify.strategy",t2t="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",e2t="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",n2t="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",i2t="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",r2t="org.eclipse.elk.layered.edgeLabels.sideSelection",a2t="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",o2t="org.eclipse.elk.layered.considerModelOrder.strategy",s2t="org.eclipse.elk.layered.considerModelOrder.noModelOrder",c2t="org.eclipse.elk.layered.considerModelOrder.components",u2t="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",l2t="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",h2t="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",f2t="layering",d2t="layering.minWidth",g2t="layering.nodePromotion",p2t="crossingMinimization",b2t="org.eclipse.elk.hierarchyHandling",w2t="crossingMinimization.greedySwitch",m2t="nodePlacement",y2t="nodePlacement.bk",v2t="edgeRouting",x2t="org.eclipse.elk.edgeRouting",k2t="spacing",_2t="priority",A2t="compaction",E2t="compaction.postCompaction",T2t="Specifies whether and how post-process compaction is applied.",C2t="highDegreeNodes",S2t="wrapping",I2t="wrapping.cutting",M2t="wrapping.validify",D2t="wrapping.multiEdge",O2t="edgeLabels",L2t="considerModelOrder",N2t="org.eclipse.elk.spacing.commentComment",P2t="org.eclipse.elk.spacing.commentNode",B2t="org.eclipse.elk.spacing.edgeEdge",F2t="org.eclipse.elk.spacing.edgeNode",R2t="org.eclipse.elk.spacing.labelLabel",j2t="org.eclipse.elk.spacing.labelPortHorizontal",$2t="org.eclipse.elk.spacing.labelPortVertical",z2t="org.eclipse.elk.spacing.labelNode",q2t="org.eclipse.elk.spacing.nodeSelfLoop",H2t="org.eclipse.elk.spacing.portPort",U2t="org.eclipse.elk.spacing.individual",G2t="org.eclipse.elk.port.borderOffset",Y2t="org.eclipse.elk.noLayout",Z2t="org.eclipse.elk.port.side",W2t="org.eclipse.elk.debugMode",K2t="org.eclipse.elk.alignment",X2t="org.eclipse.elk.insideSelfLoops.activate",V2t="org.eclipse.elk.insideSelfLoops.yo",Q2t="org.eclipse.elk.nodeSize.fixedGraphSize",J2t="org.eclipse.elk.direction",t3t="org.eclipse.elk.nodeLabels.padding",e3t="org.eclipse.elk.portLabels.nextToPortIfPossible",n3t="org.eclipse.elk.portLabels.treatAsGroup",i3t="org.eclipse.elk.portAlignment.default",r3t="org.eclipse.elk.portAlignment.north",a3t="org.eclipse.elk.portAlignment.south",o3t="org.eclipse.elk.portAlignment.west",s3t="org.eclipse.elk.portAlignment.east",c3t="org.eclipse.elk.contentAlignment",u3t="org.eclipse.elk.junctionPoints",l3t="org.eclipse.elk.edgeLabels.placement",h3t="org.eclipse.elk.port.index",f3t="org.eclipse.elk.commentBox",d3t="org.eclipse.elk.hypernode",g3t="org.eclipse.elk.port.anchor",p3t="org.eclipse.elk.partitioning.activate",b3t="org.eclipse.elk.partitioning.partition",w3t="org.eclipse.elk.position",m3t="org.eclipse.elk.margins",y3t="org.eclipse.elk.spacing.portsSurrounding",v3t="org.eclipse.elk.interactiveLayout",x3t="org.eclipse.elk.core.util",k3t={3:1,4:1,5:1,593:1},_3t="NETWORK_SIMPLEX",A3t={123:1,51:1},E3t="org.eclipse.elk.alg.layered.p1cycles",T3t="org.eclipse.elk.alg.layered.p2layers",C3t={402:1,225:1},S3t={832:1,3:1,4:1},I3t="org.eclipse.elk.alg.layered.p3order",M3t="org.eclipse.elk.alg.layered.p4nodes",D3t={3:1,4:1,5:1,840:1},O3t=1e-5,L3t="org.eclipse.elk.alg.layered.p4nodes.bk",N3t="org.eclipse.elk.alg.layered.p5edges",P3t="org.eclipse.elk.alg.layered.p5edges.orthogonal",B3t="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",F3t=1e-6,R3t="org.eclipse.elk.alg.layered.p5edges.splines",j3t=.09999999999999998,$3t=1e-8,z3t=4.71238898038469,q3t=3.141592653589793,H3t="org.eclipse.elk.alg.mrtree",U3t="org.eclipse.elk.alg.mrtree.graph",G3t="org.eclipse.elk.alg.mrtree.intermediate",Y3t="Set neighbors in level",Z3t="DESCENDANTS",W3t="org.eclipse.elk.mrtree.weighting",K3t="org.eclipse.elk.mrtree.searchOrder",X3t="org.eclipse.elk.alg.mrtree.options",V3t="org.eclipse.elk.mrtree",Q3t="org.eclipse.elk.tree",J3t="org.eclipse.elk.alg.radial",t4t=6.283185307179586,e4t=5e-324,n4t="org.eclipse.elk.alg.radial.intermediate",i4t="org.eclipse.elk.alg.radial.intermediate.compaction",r4t={3:1,4:1,5:1,106:1},a4t="org.eclipse.elk.alg.radial.intermediate.optimization",o4t="No implementation is available for the layout option ",s4t="org.eclipse.elk.alg.radial.options",c4t="org.eclipse.elk.radial.orderId",u4t="org.eclipse.elk.radial.radius",l4t="org.eclipse.elk.radial.compactor",h4t="org.eclipse.elk.radial.compactionStepSize",f4t="org.eclipse.elk.radial.sorter",d4t="org.eclipse.elk.radial.wedgeCriteria",g4t="org.eclipse.elk.radial.optimizationCriteria",p4t="org.eclipse.elk.radial",b4t="org.eclipse.elk.alg.radial.p1position.wedge",w4t="org.eclipse.elk.alg.radial.sorting",m4t=5.497787143782138,y4t=3.9269908169872414,v4t=2.356194490192345,x4t="org.eclipse.elk.alg.rectpacking",k4t="org.eclipse.elk.alg.rectpacking.firstiteration",_4t="org.eclipse.elk.alg.rectpacking.options",A4t="org.eclipse.elk.rectpacking.optimizationGoal",E4t="org.eclipse.elk.rectpacking.lastPlaceShift",T4t="org.eclipse.elk.rectpacking.currentPosition",C4t="org.eclipse.elk.rectpacking.desiredPosition",S4t="org.eclipse.elk.rectpacking.onlyFirstIteration",I4t="org.eclipse.elk.rectpacking.rowCompaction",M4t="org.eclipse.elk.rectpacking.expandToAspectRatio",D4t="org.eclipse.elk.rectpacking.targetWidth",O4t="org.eclipse.elk.expandNodes",L4t="org.eclipse.elk.rectpacking",N4t="org.eclipse.elk.alg.rectpacking.util",P4t="No implementation available for ",B4t="org.eclipse.elk.alg.spore",F4t="org.eclipse.elk.alg.spore.options",R4t="org.eclipse.elk.sporeCompaction",j4t="org.eclipse.elk.underlyingLayoutAlgorithm",$4t="org.eclipse.elk.processingOrder.treeConstruction",z4t="org.eclipse.elk.processingOrder.spanningTreeCostFunction",q4t="org.eclipse.elk.processingOrder.preferredRoot",H4t="org.eclipse.elk.processingOrder.rootSelection",U4t="org.eclipse.elk.structure.structureExtractionStrategy",G4t="org.eclipse.elk.compaction.compactionStrategy",Y4t="org.eclipse.elk.compaction.orthogonal",Z4t="org.eclipse.elk.overlapRemoval.maxIterations",W4t="org.eclipse.elk.overlapRemoval.runScanline",K4t="processingOrder",X4t="overlapRemoval",V4t="org.eclipse.elk.sporeOverlap",Q4t="org.eclipse.elk.alg.spore.p1structure",J4t="org.eclipse.elk.alg.spore.p2processingorder",t5t="org.eclipse.elk.alg.spore.p3execution",e5t="Invalid index: ",n5t="org.eclipse.elk.core.alg",i5t={331:1},r5t={288:1},a5t="Make sure its type is registered with the ",o5t=" utility class.",s5t="true",c5t="false",u5t="Couldn't clone property '",l5t=.05,h5t="org.eclipse.elk.core.options",f5t=1.2999999523162842,d5t="org.eclipse.elk.box",g5t="org.eclipse.elk.box.packingMode",p5t="org.eclipse.elk.algorithm",b5t="org.eclipse.elk.resolvedAlgorithm",w5t="org.eclipse.elk.bendPoints",m5t="org.eclipse.elk.labelManager",y5t="org.eclipse.elk.scaleFactor",v5t="org.eclipse.elk.animate",x5t="org.eclipse.elk.animTimeFactor",k5t="org.eclipse.elk.layoutAncestors",_5t="org.eclipse.elk.maxAnimTime",A5t="org.eclipse.elk.minAnimTime",E5t="org.eclipse.elk.progressBar",T5t="org.eclipse.elk.validateGraph",C5t="org.eclipse.elk.validateOptions",S5t="org.eclipse.elk.zoomToFit",I5t="org.eclipse.elk.font.name",M5t="org.eclipse.elk.font.size",D5t="org.eclipse.elk.edge.type",O5t="partitioning",L5t="nodeLabels",N5t="portAlignment",P5t="nodeSize",B5t="port",F5t="portLabels",R5t="insideSelfLoops",j5t="org.eclipse.elk.fixed",$5t="org.eclipse.elk.random",z5t="port must have a parent node to calculate the port side",q5t="The edge needs to have exactly one edge section. Found: ",H5t="org.eclipse.elk.core.util.adapters",U5t="org.eclipse.emf.ecore",G5t="org.eclipse.elk.graph",Y5t="EMapPropertyHolder",Z5t="ElkBendPoint",W5t="ElkGraphElement",K5t="ElkConnectableShape",X5t="ElkEdge",V5t="ElkEdgeSection",Q5t="EModelElement",J5t="ENamedElement",t6t="ElkLabel",e6t="ElkNode",n6t="ElkPort",i6t={92:1,90:1},r6t="org.eclipse.emf.common.notify.impl",a6t="The feature '",o6t="' is not a valid changeable feature",s6t="Expecting null",c6t="' is not a valid feature",u6t="The feature ID",l6t=" is not a valid feature ID",h6t=32768,f6t={105:1,92:1,90:1,56:1,49:1,97:1},d6t="org.eclipse.emf.ecore.impl",g6t="org.eclipse.elk.graph.impl",p6t="Recursive containment not allowed for ",b6t="The datatype '",w6t="' is not a valid classifier",m6t="The value '",y6t={190:1,3:1,4:1},v6t="The class '",x6t="http://www.eclipse.org/elk/ElkGraph",k6t=1024,_6t="property",A6t="value",E6t="source",T6t="properties",C6t="identifier",S6t="height",I6t="width",M6t="parent",D6t="text",O6t="children",L6t="hierarchical",N6t="sources",P6t="targets",B6t="sections",F6t="bendPoints",R6t="outgoingShape",j6t="incomingShape",$6t="outgoingSections",z6t="incomingSections",q6t="org.eclipse.emf.common.util",H6t="Severe implementation error in the Json to ElkGraph importer.",U6t="id",G6t="org.eclipse.elk.graph.json",Y6t="Unhandled parameter types: ",Z6t="startPoint",W6t="An edge must have at least one source and one target (edge id: '",K6t="').",X6t="Referenced edge section does not exist: ",V6t=" (edge id: '",Q6t="target",J6t="sourcePoint",t8t="targetPoint",e8t="group",n8t="name",i8t="connectableShape cannot be null",r8t="edge cannot be null",a8t="Passed edge is not 'simple'.",o8t="org.eclipse.elk.graph.util",s8t="The 'no duplicates' constraint is violated",c8t="targetIndex=",u8t=", size=",l8t="sourceIndex=",h8t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},f8t={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},d8t="logging",g8t="measureExecutionTime",p8t="parser.parse.1",b8t="parser.parse.2",w8t="parser.next.1",m8t="parser.next.2",y8t="parser.next.3",v8t="parser.next.4",x8t="parser.factor.1",k8t="parser.factor.2",_8t="parser.factor.3",A8t="parser.factor.4",E8t="parser.factor.5",T8t="parser.factor.6",C8t="parser.atom.1",S8t="parser.atom.2",I8t="parser.atom.3",M8t="parser.atom.4",D8t="parser.atom.5",O8t="parser.cc.1",L8t="parser.cc.2",N8t="parser.cc.3",P8t="parser.cc.5",B8t="parser.cc.6",F8t="parser.cc.7",R8t="parser.cc.8",j8t="parser.ope.1",$8t="parser.ope.2",z8t="parser.ope.3",q8t="parser.descape.1",H8t="parser.descape.2",U8t="parser.descape.3",G8t="parser.descape.4",Y8t="parser.descape.5",Z8t="parser.process.1",W8t="parser.quantifier.1",K8t="parser.quantifier.2",X8t="parser.quantifier.3",V8t="parser.quantifier.4",Q8t="parser.quantifier.5",J8t="org.eclipse.emf.common.notify",t7t={415:1,672:1},e7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},n7t={366:1,143:1},i7t="index=",r7t={3:1,4:1,5:1,126:1},a7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},o7t={3:1,6:1,4:1,5:1,192:1},s7t={3:1,4:1,5:1,165:1,367:1},c7t=";/?:@&=+$,",u7t="invalid authority: ",l7t="EAnnotation",h7t="ETypedElement",f7t="EStructuralFeature",d7t="EAttribute",g7t="EClassifier",p7t="EEnumLiteral",b7t="EGenericType",w7t="EOperation",m7t="EParameter",y7t="EReference",v7t="ETypeParameter",x7t="org.eclipse.emf.ecore.util",k7t={76:1},_7t={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},A7t="org.eclipse.emf.ecore.util.FeatureMap$Entry",E7t=8192,T7t=2048,C7t="byte",S7t="char",I7t="double",M7t="float",D7t="int",O7t="long",L7t="short",N7t="java.lang.Object",P7t={3:1,4:1,5:1,247:1},B7t={3:1,4:1,5:1,673:1},F7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},R7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},j7t="mixed",$7t="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",z7t="kind",q7t={3:1,4:1,5:1,674:1},H7t={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},U7t={20:1,28:1,52:1,14:1,15:1,58:1,69:1},G7t={47:1,125:1,279:1},Y7t={72:1,332:1},Z7t="The value of type '",W7t="' must be of type '",K7t=1316,X7t="http://www.eclipse.org/emf/2002/Ecore",V7t=-32768,Q7t="constraints",J7t="baseType",t9t="getEStructuralFeature",e9t="getFeatureID",n9t="feature",i9t="getOperationID",r9t="operation",a9t="defaultValue",o9t="eTypeParameters",s9t="isInstance",c9t="getEEnumLiteral",u9t="eContainingClass",l9t={55:1},h9t={3:1,4:1,5:1,119:1},f9t="org.eclipse.emf.ecore.resource",d9t={92:1,90:1,591:1,1935:1},g9t="org.eclipse.emf.ecore.resource.impl",p9t="unspecified",b9t="simple",w9t="attribute",m9t="attributeWildcard",y9t="element",v9t="elementWildcard",x9t="collapse",k9t="itemType",_9t="namespace",A9t="##targetNamespace",E9t="whiteSpace",T9t="wildcards",C9t="http://www.eclipse.org/emf/2003/XMLType",S9t="##any",I9t="uninitialized",M9t="The multiplicity constraint is violated",D9t="org.eclipse.emf.ecore.xml.type",O9t="ProcessingInstruction",L9t="SimpleAnyType",N9t="XMLTypeDocumentRoot",P9t="org.eclipse.emf.ecore.xml.type.impl",B9t="INF",F9t="processing",R9t="ENTITIES_._base",j9t="minLength",$9t="ENTITY",z9t="NCName",q9t="IDREFS_._base",H9t="integer",U9t="token",G9t="pattern",Y9t="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",Z9t="\\i\\c*",W9t="[\\i-[:]][\\c-[:]]*",K9t="nonPositiveInteger",X9t="maxInclusive",V9t="NMTOKEN",Q9t="NMTOKENS_._base",J9t="nonNegativeInteger",tte="minInclusive",ete="normalizedString",nte="unsignedByte",ite="unsignedInt",rte="18446744073709551615",ate="unsignedShort",ote="processingInstruction",ste="org.eclipse.emf.ecore.xml.type.internal",cte=1114111,ute="Internal Error: shorthands: \\u",lte="xml:isDigit",hte="xml:isWord",fte="xml:isSpace",dte="xml:isNameChar",gte="xml:isInitialNameChar",pte="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",bte="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",wte="Private Use",mte="ASSIGNED",yte="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\ufeff\ufeff＀￯",vte="UNASSIGNED",xte={3:1,117:1},kte="org.eclipse.emf.ecore.xml.type.util",_te={3:1,4:1,5:1,368:1},Ate="org.eclipse.xtext.xbase.lib",Ete="Cannot add elements to a Range",Tte="Cannot set elements in a Range",Cte="Cannot remove elements from a Range",Ste="locale",Ite="default",Mte="user.agent";n.goog=n.goog||{},n.goog.global=n.goog.global||n,KEt(),pDt(1,null,{},r),TWt.Fb=function(t){return $M(this,t)},TWt.Gb=function(){return this.gm},TWt.Hb=function(){return CN(this)},TWt.Ib=function(){return t_(nut(this))+"@"+(eut(this)>>>0).toString(16)},TWt.equals=function(t){return this.Fb(t)},TWt.hashCode=function(){return this.Hb()},TWt.toString=function(){return this.Ib()},pDt(290,1,{290:1,2026:1},mct),TWt.le=function(t){var e;return(e=new mct).i=4,e.c=t>1?bJ(this,t-1):this,e},TWt.me=function(){return _B(this),this.b},TWt.ne=function(){return t_(this)},TWt.oe=function(){return _B(this),this.k},TWt.pe=function(){return 0!=(4&this.i)},TWt.qe=function(){return 0!=(1&this.i)},TWt.Ib=function(){return set(this)},TWt.i=0;var Dte,Ote=mZ(RWt,"Object",1),Lte=mZ(RWt,"Class",290);pDt(1998,1,jWt),mZ($Wt,"Optional",1998),pDt(1170,1998,jWt,a),TWt.Fb=function(t){return t===this},TWt.Hb=function(){return 2040732332},TWt.Ib=function(){return"Optional.absent()"},TWt.Jb=function(t){return vZ(t),iv(),Dte},mZ($Wt,"Absent",1170),pDt(628,1,{},yx),mZ($Wt,"Joiner",628);var Nte=dH($Wt,"Predicate");pDt(582,1,{169:1,582:1,3:1,45:1},zh),TWt.Mb=function(t){return jct(this,t)},TWt.Lb=function(t){return jct(this,t)},TWt.Fb=function(t){var e;return!!aL(t,582)&&(e=zz(t,582),PDt(this.a,e.a))},TWt.Hb=function(){return zct(this.a)+306654252},TWt.Ib=function(){return pCt(this.a)},mZ($Wt,"Predicates/AndPredicate",582),pDt(408,1998,{408:1,3:1},qh),TWt.Fb=function(t){var e;return!!aL(t,408)&&(e=zz(t,408),Pht(this.a,e.a))},TWt.Hb=function(){return 1502476572+eut(this.a)},TWt.Ib=function(){return GWt+this.a+")"},TWt.Jb=function(t){return new qh(WX(t.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},mZ($Wt,"Present",408),pDt(198,1,ZWt),TWt.Nb=function(t){hY(this,t)},TWt.Qb=function(){dx()},mZ(WWt,"UnmodifiableIterator",198),pDt(1978,198,KWt),TWt.Qb=function(){dx()},TWt.Rb=function(t){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(WWt,"UnmodifiableListIterator",1978),pDt(386,1978,KWt),TWt.Ob=function(){return this.c0},TWt.Pb=function(){if(this.c>=this.d)throw qw(new vm);return this.Xb(this.c++)},TWt.Tb=function(){return this.c},TWt.Ub=function(){if(this.c<=0)throw qw(new vm);return this.Xb(--this.c)},TWt.Vb=function(){return this.c-1},TWt.c=0,TWt.d=0,mZ(WWt,"AbstractIndexedListIterator",386),pDt(699,198,ZWt),TWt.Ob=function(){return trt(this)},TWt.Pb=function(){return C9(this)},TWt.e=1,mZ(WWt,"AbstractIterator",699),pDt(1986,1,{224:1}),TWt.Zb=function(){return this.f||(this.f=this.ac())},TWt.Fb=function(t){return _ut(this,t)},TWt.Hb=function(){return eut(this.Zb())},TWt.dc=function(){return 0==this.gc()},TWt.ec=function(){return bG(this)},TWt.Ib=function(){return qdt(this.Zb())},mZ(WWt,"AbstractMultimap",1986),pDt(726,1986,XWt),TWt.$b=function(){pit(this)},TWt._b=function(t){return Wk(this,t)},TWt.ac=function(){return new wA(this,this.c)},TWt.ic=function(t){return this.hc()},TWt.bc=function(){return new qL(this,this.c)},TWt.jc=function(){return this.mc(this.hc())},TWt.kc=function(){return new qy(this)},TWt.lc=function(){return UAt(this.c.vc().Nc(),new s,64,this.d)},TWt.cc=function(t){return l6(this,t)},TWt.fc=function(t){return Plt(this,t)},TWt.gc=function(){return this.d},TWt.mc=function(t){return TX(),new qd(t)},TWt.nc=function(){return new zy(this)},TWt.oc=function(){return UAt(this.c.Cc().Nc(),new o,64,this.d)},TWt.pc=function(t,e){return new W6(this,t,e,null)},TWt.d=0,mZ(WWt,"AbstractMapBasedMultimap",726),pDt(1631,726,XWt),TWt.hc=function(){return new Q6(this.a)},TWt.jc=function(){return TX(),TX(),lne},TWt.cc=function(t){return zz(l6(this,t),15)},TWt.fc=function(t){return zz(Plt(this,t),15)},TWt.Zb=function(){return MX(this)},TWt.Fb=function(t){return _ut(this,t)},TWt.qc=function(t){return zz(l6(this,t),15)},TWt.rc=function(t){return zz(Plt(this,t),15)},TWt.mc=function(t){return rV(zz(t,15))},TWt.pc=function(t,e){return i3(this,t,zz(e,15),null)},mZ(WWt,"AbstractListMultimap",1631),pDt(732,1,VWt),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.c.Ob()||this.e.Ob()},TWt.Pb=function(){var t;return this.e.Ob()||(t=zz(this.c.Pb(),42),this.b=t.cd(),this.a=zz(t.dd(),14),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},TWt.Qb=function(){this.e.Qb(),this.a.dc()&&this.c.Qb(),--this.d.d},mZ(WWt,"AbstractMapBasedMultimap/Itr",732),pDt(1099,732,VWt,zy),TWt.sc=function(t,e){return e},mZ(WWt,"AbstractMapBasedMultimap/1",1099),pDt(1100,1,{},o),TWt.Kb=function(t){return zz(t,14).Nc()},mZ(WWt,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1100),pDt(1101,732,VWt,qy),TWt.sc=function(t,e){return new mA(t,e)},mZ(WWt,"AbstractMapBasedMultimap/2",1101);var Pte=dH(QWt,"Map");pDt(1967,1,JWt),TWt.wc=function(t){eot(this,t)},TWt.yc=function(t,e,n){return tdt(this,t,e,n)},TWt.$b=function(){this.vc().$b()},TWt.tc=function(t){return Tyt(this,t)},TWt._b=function(t){return!!z_t(this,t,!1)},TWt.uc=function(t){var e,n;for(e=this.vc().Kc();e.Ob();)if(n=zz(e.Pb(),42).dd(),UI(t)===UI(n)||null!=t&&Pht(t,n))return!0;return!1},TWt.Fb=function(t){var e,n,i;if(t===this)return!0;if(!aL(t,83))return!1;if(i=zz(t,83),this.gc()!=i.gc())return!1;for(n=i.vc().Kc();n.Ob();)if(e=zz(n.Pb(),42),!this.tc(e))return!1;return!0},TWt.xc=function(t){return HI(z_t(this,t,!1))},TWt.Hb=function(){return Hst(this.vc())},TWt.dc=function(){return 0==this.gc()},TWt.ec=function(){return new Sd(this)},TWt.zc=function(t,e){throw qw(new ex("Put not supported on this map"))},TWt.Ac=function(t){Eat(this,t)},TWt.Bc=function(t){return HI(z_t(this,t,!0))},TWt.gc=function(){return this.vc().gc()},TWt.Ib=function(){return eAt(this)},TWt.Cc=function(){return new Md(this)},mZ(QWt,"AbstractMap",1967),pDt(1987,1967,JWt),TWt.bc=function(){return new TA(this)},TWt.vc=function(){return pG(this)},TWt.ec=function(){return this.g||(this.g=this.bc())},TWt.Cc=function(){return this.i||(this.i=new CA(this))},mZ(WWt,"Maps/ViewCachingAbstractMap",1987),pDt(389,1987,JWt,wA),TWt.xc=function(t){return ket(this,t)},TWt.Bc=function(t){return tlt(this,t)},TWt.$b=function(){this.d==this.e.c?this.e.$b():SH(new MH(this))},TWt._b=function(t){return wht(this.d,t)},TWt.Ec=function(){return new Yh(this)},TWt.Dc=function(){return this.Ec()},TWt.Fb=function(t){return this===t||Pht(this.d,t)},TWt.Hb=function(){return eut(this.d)},TWt.ec=function(){return this.e.ec()},TWt.gc=function(){return this.d.gc()},TWt.Ib=function(){return qdt(this.d)},mZ(WWt,"AbstractMapBasedMultimap/AsMap",389);var Bte=dH(RWt,"Iterable");pDt(28,1,tKt),TWt.Jc=function(t){n5(this,t)},TWt.Lc=function(){return this.Oc()},TWt.Nc=function(){return new g1(this,0)},TWt.Oc=function(){return new FH(null,this.Nc())},TWt.Fc=function(t){throw qw(new ex("Add not supported on this collection"))},TWt.Gc=function(t){return zrt(this,t)},TWt.$b=function(){AK(this)},TWt.Hc=function(t){return xgt(this,t,!1)},TWt.Ic=function(t){return ust(this,t)},TWt.dc=function(){return 0==this.gc()},TWt.Mc=function(t){return xgt(this,t,!0)},TWt.Pc=function(){return aG(this)},TWt.Qc=function(t){return Ayt(this,t)},TWt.Ib=function(){return NEt(this)},mZ(QWt,"AbstractCollection",28);var Fte=dH(QWt,"Set");pDt(eKt,28,nKt),TWt.Nc=function(){return new g1(this,1)},TWt.Fb=function(t){return rbt(this,t)},TWt.Hb=function(){return Hst(this)},mZ(QWt,"AbstractSet",eKt),pDt(1970,eKt,nKt),mZ(WWt,"Sets/ImprovedAbstractSet",1970),pDt(1971,1970,nKt),TWt.$b=function(){this.Rc().$b()},TWt.Hc=function(t){return rpt(this,t)},TWt.dc=function(){return this.Rc().dc()},TWt.Mc=function(t){var e;return!!this.Hc(t)&&(e=zz(t,42),this.Rc().ec().Mc(e.cd()))},TWt.gc=function(){return this.Rc().gc()},mZ(WWt,"Maps/EntrySet",1971),pDt(1097,1971,nKt,Yh),TWt.Hc=function(t){return pht(this.a.d.vc(),t)},TWt.Kc=function(){return new MH(this.a)},TWt.Rc=function(){return this.a},TWt.Mc=function(t){var e;return!!pht(this.a.d.vc(),t)&&(e=zz(t,42),q5(this.a.e,e.cd()),!0)},TWt.Nc=function(){return Fz(this.a.d.vc().Nc(),new Zh(this.a))},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1097),pDt(1098,1,{},Zh),TWt.Kb=function(t){return i5(this.a,zz(t,42))},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1098),pDt(730,1,VWt,MH),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){var t;return t=zz(this.b.Pb(),42),this.a=zz(t.dd(),14),i5(this.c,t)},TWt.Ob=function(){return this.b.Ob()},TWt.Qb=function(){hot(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},mZ(WWt,"AbstractMapBasedMultimap/AsMap/AsMapIterator",730),pDt(532,1970,nKt,TA),TWt.$b=function(){this.b.$b()},TWt.Hc=function(t){return this.b._b(t)},TWt.Jc=function(t){vZ(t),this.b.wc(new mf(t))},TWt.dc=function(){return this.b.dc()},TWt.Kc=function(){return new fv(this.b.vc().Kc())},TWt.Mc=function(t){return!!this.b._b(t)&&(this.b.Bc(t),!0)},TWt.gc=function(){return this.b.gc()},mZ(WWt,"Maps/KeySet",532),pDt(318,532,nKt,qL),TWt.$b=function(){SH(new nA(this,this.b.vc().Kc()))},TWt.Ic=function(t){return this.b.ec().Ic(t)},TWt.Fb=function(t){return this===t||Pht(this.b.ec(),t)},TWt.Hb=function(){return eut(this.b.ec())},TWt.Kc=function(){return new nA(this,this.b.vc().Kc())},TWt.Mc=function(t){var e,n;return n=0,(e=zz(this.b.Bc(t),14))&&(n=e.gc(),e.$b(),this.a.d-=n),n>0},TWt.Nc=function(){return this.b.ec().Nc()},mZ(WWt,"AbstractMapBasedMultimap/KeySet",318),pDt(731,1,VWt,nA),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.c.Ob()},TWt.Pb=function(){return this.a=zz(this.c.Pb(),42),this.a.cd()},TWt.Qb=function(){var t;hot(!!this.a),t=zz(this.a.dd(),14),this.c.Qb(),this.b.a.d-=t.gc(),t.$b(),this.a=null},mZ(WWt,"AbstractMapBasedMultimap/KeySet/1",731),pDt(491,389,{83:1,161:1},SB),TWt.bc=function(){return this.Sc()},TWt.ec=function(){return this.Tc()},TWt.Sc=function(){return new tA(this.c,this.Uc())},TWt.Tc=function(){return this.b||(this.b=this.Sc())},TWt.Uc=function(){return zz(this.d,161)},mZ(WWt,"AbstractMapBasedMultimap/SortedAsMap",491),pDt(542,491,iKt,IB),TWt.bc=function(){return new eA(this.a,zz(zz(this.d,161),171))},TWt.Sc=function(){return new eA(this.a,zz(zz(this.d,161),171))},TWt.ec=function(){return zz(this.b||(this.b=new eA(this.a,zz(zz(this.d,161),171))),271)},TWt.Tc=function(){return zz(this.b||(this.b=new eA(this.a,zz(zz(this.d,161),171))),271)},TWt.Uc=function(){return zz(zz(this.d,161),171)},mZ(WWt,"AbstractMapBasedMultimap/NavigableAsMap",542),pDt(490,318,rKt,tA),TWt.Nc=function(){return this.b.ec().Nc()},mZ(WWt,"AbstractMapBasedMultimap/SortedKeySet",490),pDt(388,490,aKt,eA),mZ(WWt,"AbstractMapBasedMultimap/NavigableKeySet",388),pDt(541,28,tKt,W6),TWt.Fc=function(t){var e,n;return Ydt(this),n=this.d.dc(),(e=this.d.Fc(t))&&(++this.f.d,n&&kF(this)),e},TWt.Gc=function(t){var e,n,i;return!t.dc()&&(Ydt(this),i=this.d.gc(),(e=this.d.Gc(t))&&(n=this.d.gc(),this.f.d+=n-i,0==i&&kF(this)),e)},TWt.$b=function(){var t;Ydt(this),0!=(t=this.d.gc())&&(this.d.$b(),this.f.d-=t,OU(this))},TWt.Hc=function(t){return Ydt(this),this.d.Hc(t)},TWt.Ic=function(t){return Ydt(this),this.d.Ic(t)},TWt.Fb=function(t){return t===this||(Ydt(this),Pht(this.d,t))},TWt.Hb=function(){return Ydt(this),eut(this.d)},TWt.Kc=function(){return Ydt(this),new Xz(this)},TWt.Mc=function(t){var e;return Ydt(this),(e=this.d.Mc(t))&&(--this.f.d,OU(this)),e},TWt.gc=function(){return eM(this)},TWt.Nc=function(){return Ydt(this),this.d.Nc()},TWt.Ib=function(){return Ydt(this),qdt(this.d)},mZ(WWt,"AbstractMapBasedMultimap/WrappedCollection",541);var Rte=dH(QWt,"List");pDt(728,541,{20:1,28:1,14:1,15:1},uG),TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return Ydt(this),this.d.Nc()},TWt.Vc=function(t,e){var n;Ydt(this),n=this.d.dc(),zz(this.d,15).Vc(t,e),++this.a.d,n&&kF(this)},TWt.Wc=function(t,e){var n,i,r;return!e.dc()&&(Ydt(this),r=this.d.gc(),(n=zz(this.d,15).Wc(t,e))&&(i=this.d.gc(),this.a.d+=i-r,0==r&&kF(this)),n)},TWt.Xb=function(t){return Ydt(this),zz(this.d,15).Xb(t)},TWt.Xc=function(t){return Ydt(this),zz(this.d,15).Xc(t)},TWt.Yc=function(){return Ydt(this),new bO(this)},TWt.Zc=function(t){return Ydt(this),new bX(this,t)},TWt.$c=function(t){var e;return Ydt(this),e=zz(this.d,15).$c(t),--this.a.d,OU(this),e},TWt._c=function(t,e){return Ydt(this),zz(this.d,15)._c(t,e)},TWt.bd=function(t,e){return Ydt(this),i3(this.a,this.e,zz(this.d,15).bd(t,e),this.b?this.b:this)},mZ(WWt,"AbstractMapBasedMultimap/WrappedList",728),pDt(1096,728,{20:1,28:1,14:1,15:1,54:1},MP),mZ(WWt,"AbstractMapBasedMultimap/RandomAccessWrappedList",1096),pDt(620,1,VWt,Xz),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return EK(this),this.b.Ob()},TWt.Pb=function(){return EK(this),this.b.Pb()},TWt.Qb=function(){nN(this)},mZ(WWt,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",620),pDt(729,620,oKt,bO,bX),TWt.Qb=function(){nN(this)},TWt.Rb=function(t){var e;e=0==eM(this.a),(EK(this),zz(this.b,125)).Rb(t),++this.a.a.d,e&&kF(this.a)},TWt.Sb=function(){return(EK(this),zz(this.b,125)).Sb()},TWt.Tb=function(){return(EK(this),zz(this.b,125)).Tb()},TWt.Ub=function(){return(EK(this),zz(this.b,125)).Ub()},TWt.Vb=function(){return(EK(this),zz(this.b,125)).Vb()},TWt.Wb=function(t){(EK(this),zz(this.b,125)).Wb(t)},mZ(WWt,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",729),pDt(727,541,rKt,NB),TWt.Nc=function(){return Ydt(this),this.d.Nc()},mZ(WWt,"AbstractMapBasedMultimap/WrappedSortedSet",727),pDt(1095,727,aKt,DD),mZ(WWt,"AbstractMapBasedMultimap/WrappedNavigableSet",1095),pDt(1094,541,nKt,PB),TWt.Nc=function(){return Ydt(this),this.d.Nc()},mZ(WWt,"AbstractMapBasedMultimap/WrappedSet",1094),pDt(1103,1,{},s),TWt.Kb=function(t){return $6(zz(t,42))},mZ(WWt,"AbstractMapBasedMultimap/lambda$1$Type",1103),pDt(1102,1,{},Wh),TWt.Kb=function(t){return new mA(this.a,t)},mZ(WWt,"AbstractMapBasedMultimap/lambda$2$Type",1102);var jte,$te,zte,qte,Hte=dH(QWt,"Map/Entry");pDt(345,1,sKt),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),gW(this.cd(),e.cd())&&gW(this.dd(),e.dd()))},TWt.Hb=function(){var t,e;return t=this.cd(),e=this.dd(),(null==t?0:eut(t))^(null==e?0:eut(e))},TWt.ed=function(t){throw qw(new wm)},TWt.Ib=function(){return this.cd()+"="+this.dd()},mZ(WWt,cKt,345),pDt(1988,28,tKt),TWt.$b=function(){this.fd().$b()},TWt.Hc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),q0(this.fd(),e.cd(),e.dd()))},TWt.Mc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),H0(this.fd(),e.cd(),e.dd()))},TWt.gc=function(){return this.fd().d},mZ(WWt,"Multimaps/Entries",1988),pDt(733,1988,tKt,Kh),TWt.Kc=function(){return this.a.kc()},TWt.fd=function(){return this.a},TWt.Nc=function(){return this.a.lc()},mZ(WWt,"AbstractMultimap/Entries",733),pDt(734,733,nKt,Hy),TWt.Nc=function(){return this.a.lc()},TWt.Fb=function(t){return YTt(this,t)},TWt.Hb=function(){return qrt(this)},mZ(WWt,"AbstractMultimap/EntrySet",734),pDt(735,28,tKt,Xh),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return Mut(this.a,t)},TWt.Kc=function(){return this.a.nc()},TWt.gc=function(){return this.a.d},TWt.Nc=function(){return this.a.oc()},mZ(WWt,"AbstractMultimap/Values",735),pDt(1989,28,{835:1,20:1,28:1,14:1}),TWt.Jc=function(t){vZ(t),_K(this).Jc(new wf(t))},TWt.Nc=function(){var t;return UAt(t=_K(this).Nc(),new v,64|1296&t.qd(),this.a.d)},TWt.Fc=function(t){return gx(),!0},TWt.Gc=function(t){return vZ(this),vZ(t),aL(t,543)?f2(zz(t,835)):!t.dc()&&htt(this,t.Kc())},TWt.Hc=function(t){var e;return((e=zz(dht(MX(this.a),t),14))?e.gc():0)>0},TWt.Fb=function(t){return hOt(this,t)},TWt.Hb=function(){return eut(_K(this))},TWt.dc=function(){return _K(this).dc()},TWt.Mc=function(t){return AIt(this,t,1)>0},TWt.Ib=function(){return qdt(_K(this))},mZ(WWt,"AbstractMultiset",1989),pDt(1991,1970,nKt),TWt.$b=function(){pit(this.a.a)},TWt.Hc=function(t){var e;return!(!aL(t,492)||(e=zz(t,416),zz(e.a.dd(),14).gc()<=0||a1(this.a,e.a.cd())!=zz(e.a.dd(),14).gc()))},TWt.Mc=function(t){var e,n,i;return!(!aL(t,492)||(e=(n=zz(t,416)).a.cd(),0==(i=zz(n.a.dd(),14).gc())))&&EIt(this.a,e,i)},mZ(WWt,"Multisets/EntrySet",1991),pDt(1109,1991,nKt,Vh),TWt.Kc=function(){return new gv(pG(MX(this.a.a)).Kc())},TWt.gc=function(){return MX(this.a.a).gc()},mZ(WWt,"AbstractMultiset/EntrySet",1109),pDt(619,726,XWt),TWt.hc=function(){return this.gd()},TWt.jc=function(){return this.hd()},TWt.cc=function(t){return this.jd(t)},TWt.fc=function(t){return this.kd(t)},TWt.Zb=function(){return this.f||(this.f=this.ac())},TWt.hd=function(){return TX(),TX(),fne},TWt.Fb=function(t){return _ut(this,t)},TWt.jd=function(t){return zz(l6(this,t),21)},TWt.kd=function(t){return zz(Plt(this,t),21)},TWt.mc=function(t){return TX(),new Dx(zz(t,21))},TWt.pc=function(t,e){return new PB(this,t,zz(e,21))},mZ(WWt,"AbstractSetMultimap",619),pDt(1657,619,XWt),TWt.hc=function(){return new p_(this.b)},TWt.gd=function(){return new p_(this.b)},TWt.jc=function(){return IZ(new p_(this.b))},TWt.hd=function(){return IZ(new p_(this.b))},TWt.cc=function(t){return zz(zz(l6(this,t),21),84)},TWt.jd=function(t){return zz(zz(l6(this,t),21),84)},TWt.fc=function(t){return zz(zz(Plt(this,t),21),84)},TWt.kd=function(t){return zz(zz(Plt(this,t),21),84)},TWt.mc=function(t){return aL(t,271)?IZ(zz(t,271)):(TX(),new pN(zz(t,84)))},TWt.Zb=function(){return this.f||(this.f=aL(this.c,171)?new IB(this,zz(this.c,171)):aL(this.c,161)?new SB(this,zz(this.c,161)):new wA(this,this.c))},TWt.pc=function(t,e){return aL(e,271)?new DD(this,t,zz(e,271)):new NB(this,t,zz(e,84))},mZ(WWt,"AbstractSortedSetMultimap",1657),pDt(1658,1657,XWt),TWt.Zb=function(){return zz(zz(this.f||(this.f=aL(this.c,171)?new IB(this,zz(this.c,171)):aL(this.c,161)?new SB(this,zz(this.c,161)):new wA(this,this.c)),161),171)},TWt.ec=function(){return zz(zz(this.i||(this.i=aL(this.c,171)?new eA(this,zz(this.c,171)):aL(this.c,161)?new tA(this,zz(this.c,161)):new qL(this,this.c)),84),271)},TWt.bc=function(){return aL(this.c,171)?new eA(this,zz(this.c,171)):aL(this.c,161)?new tA(this,zz(this.c,161)):new qL(this,this.c)},mZ(WWt,"AbstractSortedKeySortedSetMultimap",1658),pDt(2010,1,{1947:1}),TWt.Fb=function(t){return Ikt(this,t)},TWt.Hb=function(){return Hst(this.g||(this.g=new Qh(this)))},TWt.Ib=function(){return eAt(this.f||(this.f=new YL(this)))},mZ(WWt,"AbstractTable",2010),pDt(665,eKt,nKt,Qh),TWt.$b=function(){px()},TWt.Hc=function(t){var e,n;return!!aL(t,468)&&(e=zz(t,682),!!(n=zz(dht(kZ(this.a),WI(e.c.e,e.b)),83))&&pht(n.vc(),new mA(WI(e.c.c,e.a),Y6(e.c,e.b,e.a))))},TWt.Kc=function(){return JX(this.a)},TWt.Mc=function(t){var e,n;return!!aL(t,468)&&(e=zz(t,682),!!(n=zz(dht(kZ(this.a),WI(e.c.e,e.b)),83))&&bht(n.vc(),new mA(WI(e.c.c,e.a),Y6(e.c,e.b,e.a))))},TWt.gc=function(){return GH(this.a)},TWt.Nc=function(){return C2(this.a)},mZ(WWt,"AbstractTable/CellSet",665),pDt(1928,28,tKt,Jh),TWt.$b=function(){px()},TWt.Hc=function(t){return hAt(this.a,t)},TWt.Kc=function(){return tV(this.a)},TWt.gc=function(){return GH(this.a)},TWt.Nc=function(){return V0(this.a)},mZ(WWt,"AbstractTable/Values",1928),pDt(1632,1631,XWt),mZ(WWt,"ArrayListMultimapGwtSerializationDependencies",1632),pDt(513,1632,XWt,cx,c1),TWt.hc=function(){return new Q6(this.a)},TWt.a=0,mZ(WWt,"ArrayListMultimap",513),pDt(664,2010,{664:1,1947:1,3:1},yMt),mZ(WWt,"ArrayTable",664),pDt(1924,386,KWt,HL),TWt.Xb=function(t){return new wct(this.a,t)},mZ(WWt,"ArrayTable/1",1924),pDt(1925,1,{},Hh),TWt.ld=function(t){return new wct(this.a,t)},mZ(WWt,"ArrayTable/1methodref$getCell$Type",1925),pDt(2011,1,{682:1}),TWt.Fb=function(t){var e;return t===this||!!aL(t,468)&&(e=zz(t,682),gW(WI(this.c.e,this.b),WI(e.c.e,e.b))&&gW(WI(this.c.c,this.a),WI(e.c.c,e.a))&&gW(Y6(this.c,this.b,this.a),Y6(e.c,e.b,e.a)))},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[WI(this.c.e,this.b),WI(this.c.c,this.a),Y6(this.c,this.b,this.a)]))},TWt.Ib=function(){return"("+WI(this.c.e,this.b)+","+WI(this.c.c,this.a)+")="+Y6(this.c,this.b,this.a)},mZ(WWt,"Tables/AbstractCell",2011),pDt(468,2011,{468:1,682:1},wct),TWt.a=0,TWt.b=0,TWt.d=0,mZ(WWt,"ArrayTable/2",468),pDt(1927,1,{},Uh),TWt.ld=function(t){return V7(this.a,t)},mZ(WWt,"ArrayTable/2methodref$getValue$Type",1927),pDt(1926,386,KWt,UL),TWt.Xb=function(t){return V7(this.a,t)},mZ(WWt,"ArrayTable/3",1926),pDt(1979,1967,JWt),TWt.$b=function(){SH(this.kc())},TWt.vc=function(){return new yf(this)},TWt.lc=function(){return new SK(this.kc(),this.gc())},mZ(WWt,"Maps/IteratorBasedAbstractMap",1979),pDt(828,1979,JWt),TWt.$b=function(){throw qw(new wm)},TWt._b=function(t){return Vk(this.c,t)},TWt.kc=function(){return new GL(this,this.c.b.c.gc())},TWt.lc=function(){return vH(this.c.b.c.gc(),16,new Gh(this))},TWt.xc=function(t){var e;return(e=zz(YR(this.c,t),19))?this.nd(e.a):null},TWt.dc=function(){return this.c.b.c.dc()},TWt.ec=function(){return dG(this.c)},TWt.zc=function(t,e){var n;if(!(n=zz(YR(this.c,t),19)))throw qw(new jv(this.md()+" "+t+" not in "+dG(this.c)));return this.od(n.a,e)},TWt.Bc=function(t){throw qw(new wm)},TWt.gc=function(){return this.c.b.c.gc()},mZ(WWt,"ArrayTable/ArrayMap",828),pDt(1923,1,{},Gh),TWt.ld=function(t){return MZ(this.a,t)},mZ(WWt,"ArrayTable/ArrayMap/0methodref$getEntry$Type",1923),pDt(1921,345,sKt,uA),TWt.cd=function(){return VL(this.a,this.b)},TWt.dd=function(){return this.a.nd(this.b)},TWt.ed=function(t){return this.a.od(this.b,t)},TWt.b=0,mZ(WWt,"ArrayTable/ArrayMap/1",1921),pDt(1922,386,KWt,GL),TWt.Xb=function(t){return MZ(this.a,t)},mZ(WWt,"ArrayTable/ArrayMap/2",1922),pDt(1920,828,JWt,aY),TWt.md=function(){return"Column"},TWt.nd=function(t){return Y6(this.b,this.a,t)},TWt.od=function(t,e){return Cst(this.b,this.a,t,e)},TWt.a=0,mZ(WWt,"ArrayTable/Row",1920),pDt(829,828,JWt,YL),TWt.nd=function(t){return new aY(this.a,t)},TWt.zc=function(t,e){return zz(e,83),bx()},TWt.od=function(t,e){return zz(e,83),wx()},TWt.md=function(){return"Row"},mZ(WWt,"ArrayTable/RowMap",829),pDt(1120,1,fKt,lA),TWt.qd=function(){return-262&this.a.qd()},TWt.rd=function(){return this.a.rd()},TWt.Nb=function(t){this.a.Nb(new aA(t,this.b))},TWt.sd=function(t){return this.a.sd(new rA(t,this.b))},mZ(WWt,"CollectSpliterators/1",1120),pDt(1121,1,dKt,rA),TWt.td=function(t){this.a.td(this.b.Kb(t))},mZ(WWt,"CollectSpliterators/1/lambda$0$Type",1121),pDt(1122,1,dKt,aA),TWt.td=function(t){this.a.td(this.b.Kb(t))},mZ(WWt,"CollectSpliterators/1/lambda$1$Type",1122),pDt(1123,1,fKt,H2),TWt.qd=function(){return this.a},TWt.rd=function(){return this.d&&(this.b=AO(this.b,this.d.rd())),AO(this.b,0)},TWt.Nb=function(t){this.d&&(this.d.Nb(t),this.d=null),this.c.Nb(new iA(this.e,t)),this.b=0},TWt.sd=function(t){for(;;){if(this.d&&this.d.sd(t))return QI(this.b,gKt)&&(this.b=rdt(this.b,1)),!0;if(this.d=null,!this.c.sd(new oA(this,this.e)))return!1}},TWt.a=0,TWt.b=0,mZ(WWt,"CollectSpliterators/1FlatMapSpliterator",1123),pDt(1124,1,dKt,oA),TWt.td=function(t){pR(this.a,this.b,t)},mZ(WWt,"CollectSpliterators/1FlatMapSpliterator/lambda$0$Type",1124),pDt(1125,1,dKt,iA),TWt.td=function(t){cL(this.b,this.a,t)},mZ(WWt,"CollectSpliterators/1FlatMapSpliterator/lambda$1$Type",1125),pDt(1117,1,fKt,gR),TWt.qd=function(){return 16464|this.b},TWt.rd=function(){return this.a.rd()},TWt.Nb=function(t){this.a.xe(new cA(t,this.c))},TWt.sd=function(t){return this.a.ye(new sA(t,this.c))},TWt.b=0,mZ(WWt,"CollectSpliterators/1WithCharacteristics",1117),pDt(1118,1,pKt,sA),TWt.ud=function(t){this.a.td(this.b.ld(t))},mZ(WWt,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1118),pDt(1119,1,pKt,cA),TWt.ud=function(t){this.a.td(this.b.ld(t))},mZ(WWt,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1119),pDt(245,1,bKt),TWt.wd=function(t){return this.vd(zz(t,245))},TWt.vd=function(t){var e;return t==(ev(),$te)?1:t==(nv(),jte)?-1:(tH(),0!=(e=Pat(this.a,t.a))?e:aL(this,519)==aL(t,519)?0:aL(this,519)?1:-1)},TWt.zd=function(){return this.a},TWt.Fb=function(t){return Bpt(this,t)},mZ(WWt,"Cut",245),pDt(1761,245,bKt,Nx),TWt.vd=function(t){return t==this?0:1},TWt.xd=function(t){throw qw(new lm)},TWt.yd=function(t){t.a+="+∞)"},TWt.zd=function(){throw qw(new $v(wKt))},TWt.Hb=function(){return OA(),imt(this)},TWt.Ad=function(t){return!1},TWt.Ib=function(){return"+∞"},mZ(WWt,"Cut/AboveAll",1761),pDt(519,245,{245:1,519:1,3:1,35:1},iN),TWt.xd=function(t){sM((t.a+="(",t),this.a)},TWt.yd=function(t){PZ(sM(t,this.a),93)},TWt.Hb=function(){return~eut(this.a)},TWt.Ad=function(t){return tH(),Pat(this.a,t)<0},TWt.Ib=function(){return"/"+this.a+"\\"},mZ(WWt,"Cut/AboveValue",519),pDt(1760,245,bKt,Px),TWt.vd=function(t){return t==this?0:-1},TWt.xd=function(t){t.a+="(-∞"},TWt.yd=function(t){throw qw(new lm)},TWt.zd=function(){throw qw(new $v(wKt))},TWt.Hb=function(){return OA(),imt(this)},TWt.Ad=function(t){return!0},TWt.Ib=function(){return"-∞"},mZ(WWt,"Cut/BelowAll",1760),pDt(1762,245,bKt,rN),TWt.xd=function(t){sM((t.a+="[",t),this.a)},TWt.yd=function(t){PZ(sM(t,this.a),41)},TWt.Hb=function(){return eut(this.a)},TWt.Ad=function(t){return tH(),Pat(this.a,t)<=0},TWt.Ib=function(){return"\\"+this.a+"/"},mZ(WWt,"Cut/BelowValue",1762),pDt(537,1,mKt),TWt.Jc=function(t){n5(this,t)},TWt.Ib=function(){return Hft(zz(WX(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},mZ(WWt,"FluentIterable",537),pDt(433,537,mKt,MM),TWt.Kc=function(){return new cG(JL(this.a.Kc(),new l))},mZ(WWt,"FluentIterable/2",433),pDt(1046,537,mKt,DM),TWt.Kc=function(){return NY(this)},mZ(WWt,"FluentIterable/3",1046),pDt(708,386,KWt,WL),TWt.Xb=function(t){return this.a[t].Kc()},mZ(WWt,"FluentIterable/3/1",708),pDt(1972,1,{}),TWt.Ib=function(){return qdt(this.Bd().b)},mZ(WWt,"ForwardingObject",1972),pDt(1973,1972,yKt),TWt.Bd=function(){return this.Cd()},TWt.Jc=function(t){n5(this,t)},TWt.Lc=function(){return this.Oc()},TWt.Nc=function(){return new g1(this,0)},TWt.Oc=function(){return new FH(null,this.Nc())},TWt.Fc=function(t){return this.Cd(),c_()},TWt.Gc=function(t){return this.Cd(),u_()},TWt.$b=function(){this.Cd(),l_()},TWt.Hc=function(t){return this.Cd().Hc(t)},TWt.Ic=function(t){return this.Cd().Ic(t)},TWt.dc=function(){return this.Cd().b.dc()},TWt.Kc=function(){return this.Cd().Kc()},TWt.Mc=function(t){return this.Cd(),h_()},TWt.gc=function(){return this.Cd().b.gc()},TWt.Pc=function(){return this.Cd().Pc()},TWt.Qc=function(t){return this.Cd().Qc(t)},mZ(WWt,"ForwardingCollection",1973),pDt(1980,28,vKt),TWt.Kc=function(){return this.Ed()},TWt.Fc=function(t){throw qw(new wm)},TWt.Gc=function(t){throw qw(new wm)},TWt.$b=function(){throw qw(new wm)},TWt.Hc=function(t){return null!=t&&xgt(this,t,!1)},TWt.Dd=function(){switch(this.gc()){case 0:return WZ(),WZ(),zte;case 1:return WZ(),new CH(vZ(this.Ed().Pb()));default:return new oY(this,this.Pc())}},TWt.Mc=function(t){throw qw(new wm)},mZ(WWt,"ImmutableCollection",1980),pDt(712,1980,vKt,rm),TWt.Kc=function(){return L7(this.a.Kc())},TWt.Hc=function(t){return null!=t&&this.a.Hc(t)},TWt.Ic=function(t){return this.a.Ic(t)},TWt.dc=function(){return this.a.dc()},TWt.Ed=function(){return L7(this.a.Kc())},TWt.gc=function(){return this.a.gc()},TWt.Pc=function(){return this.a.Pc()},TWt.Qc=function(t){return this.a.Qc(t)},TWt.Ib=function(){return qdt(this.a)},mZ(WWt,"ForwardingImmutableCollection",712),pDt(152,1980,xKt),TWt.Kc=function(){return this.Ed()},TWt.Yc=function(){return this.Fd(0)},TWt.Zc=function(t){return this.Fd(t)},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.bd=function(t,e){return this.Gd(t,e)},TWt.Vc=function(t,e){throw qw(new wm)},TWt.Wc=function(t,e){throw qw(new wm)},TWt.Fb=function(t){return UDt(this,t)},TWt.Hb=function(){return Mot(this)},TWt.Xc=function(t){return null==t?-1:Eyt(this,t)},TWt.Ed=function(){return this.Fd(0)},TWt.Fd=function(t){return iP(this,t)},TWt.$c=function(t){throw qw(new wm)},TWt._c=function(t,e){throw qw(new wm)},TWt.Gd=function(t,e){return lht(new u1(new IA(this),t,e))},mZ(WWt,"ImmutableList",152),pDt(2006,152,xKt),TWt.Kc=function(){return L7(this.Hd().Kc())},TWt.bd=function(t,e){return lht(this.Hd().bd(t,e))},TWt.Hc=function(t){return null!=t&&this.Hd().Hc(t)},TWt.Ic=function(t){return this.Hd().Ic(t)},TWt.Fb=function(t){return Pht(this.Hd(),t)},TWt.Xb=function(t){return WI(this,t)},TWt.Hb=function(){return eut(this.Hd())},TWt.Xc=function(t){return this.Hd().Xc(t)},TWt.dc=function(){return this.Hd().dc()},TWt.Ed=function(){return L7(this.Hd().Kc())},TWt.gc=function(){return this.Hd().gc()},TWt.Gd=function(t,e){return lht(this.Hd().bd(t,e))},TWt.Pc=function(){return this.Hd().Qc(P8(Ote,HWt,1,this.Hd().gc(),5,1))},TWt.Qc=function(t){return this.Hd().Qc(t)},TWt.Ib=function(){return qdt(this.Hd())},mZ(WWt,"ForwardingImmutableList",2006),pDt(714,1,_Kt),TWt.vc=function(){return fG(this)},TWt.wc=function(t){eot(this,t)},TWt.ec=function(){return dG(this)},TWt.yc=function(t,e,n){return tdt(this,t,e,n)},TWt.Cc=function(){return this.Ld()},TWt.$b=function(){throw qw(new wm)},TWt._b=function(t){return null!=this.xc(t)},TWt.uc=function(t){return this.Ld().Hc(t)},TWt.Jd=function(){return new am(this)},TWt.Kd=function(){return new om(this)},TWt.Fb=function(t){return Lut(this,t)},TWt.Hb=function(){return fG(this).Hb()},TWt.dc=function(){return 0==this.gc()},TWt.zc=function(t,e){return mx()},TWt.Bc=function(t){throw qw(new wm)},TWt.Ib=function(){return fTt(this)},TWt.Ld=function(){return this.e?this.e:this.e=this.Kd()},TWt.c=null,TWt.d=null,TWt.e=null,mZ(WWt,"ImmutableMap",714),pDt(715,714,_Kt),TWt._b=function(t){return Vk(this,t)},TWt.uc=function(t){return jA(this.b,t)},TWt.Id=function(){return hht(new ef(this))},TWt.Jd=function(){return hht(iK(this.b))},TWt.Kd=function(){return uj(),new rm(eK(this.b))},TWt.Fb=function(t){return zA(this.b,t)},TWt.xc=function(t){return YR(this,t)},TWt.Hb=function(){return eut(this.b.c)},TWt.dc=function(){return this.b.c.dc()},TWt.gc=function(){return this.b.c.gc()},TWt.Ib=function(){return qdt(this.b.c)},mZ(WWt,"ForwardingImmutableMap",715),pDt(1974,1973,AKt),TWt.Bd=function(){return this.Md()},TWt.Cd=function(){return this.Md()},TWt.Nc=function(){return new g1(this,1)},TWt.Fb=function(t){return t===this||this.Md().Fb(t)},TWt.Hb=function(){return this.Md().Hb()},mZ(WWt,"ForwardingSet",1974),pDt(1069,1974,AKt,ef),TWt.Bd=function(){return nK(this.a.b)},TWt.Cd=function(){return nK(this.a.b)},TWt.Hc=function(t){if(aL(t,42)&&null==zz(t,42).cd())return!1;try{return RA(nK(this.a.b),t)}catch(t){if(aL(t=dst(t),205))return!1;throw qw(t)}},TWt.Md=function(){return nK(this.a.b)},TWt.Qc=function(t){var e;return e=IV(nK(this.a.b),t),nK(this.a.b).b.gc()=0?"+":"")+(i/60|0),e=YM(n.Math.abs(i)%60),(mEt(),wne)[this.q.getDay()]+" "+mne[this.q.getMonth()]+" "+YM(this.q.getDate())+" "+YM(this.q.getHours())+":"+YM(this.q.getMinutes())+":"+YM(this.q.getSeconds())+" GMT"+t+e+" "+this.q.getFullYear()};var uee,lee,hee,fee,dee,gee,pee,bee,wee,mee,yee,vee=mZ(QWt,"Date",199);pDt(1915,199,EXt,Qxt),TWt.a=!1,TWt.b=0,TWt.c=0,TWt.d=0,TWt.e=0,TWt.f=0,TWt.g=!1,TWt.i=0,TWt.j=0,TWt.k=0,TWt.n=0,TWt.o=0,TWt.p=0,mZ("com.google.gwt.i18n.shared.impl","DateRecord",1915),pDt(1966,1,{}),TWt.fe=function(){return null},TWt.ge=function(){return null},TWt.he=function(){return null},TWt.ie=function(){return null},TWt.je=function(){return null},mZ(TXt,"JSONValue",1966),pDt(216,1966,{216:1},Sf,Af),TWt.Fb=function(t){return!!aL(t,216)&&m0(this.a,zz(t,216).a)},TWt.ee=function(){return Hw},TWt.Hb=function(){return eV(this.a)},TWt.fe=function(){return this},TWt.Ib=function(){var t,e,n;for(n=new fN("["),e=0,t=this.a.length;e0&&(n.a+=","),sM(n,ptt(this,e));return n.a+="]",n.a},mZ(TXt,"JSONArray",216),pDt(483,1966,{483:1},Ef),TWt.ee=function(){return Uw},TWt.ge=function(){return this},TWt.Ib=function(){return lN(),""+this.a},TWt.a=!1,mZ(TXt,"JSONBoolean",483),pDt(985,60,qKt,bv),mZ(TXt,"JSONException",985),pDt(1023,1966,{},m),TWt.ee=function(){return Kw},TWt.Ib=function(){return YWt},mZ(TXt,"JSONNull",1023),pDt(258,1966,{258:1},Tf),TWt.Fb=function(t){return!!aL(t,258)&&this.a==zz(t,258).a},TWt.ee=function(){return Gw},TWt.Hb=function(){return KM(this.a)},TWt.he=function(){return this},TWt.Ib=function(){return this.a+""},TWt.a=0,mZ(TXt,"JSONNumber",258),pDt(183,1966,{183:1},wv,Cf),TWt.Fb=function(t){return!!aL(t,183)&&m0(this.a,zz(t,183).a)},TWt.ee=function(){return Yw},TWt.Hb=function(){return eV(this.a)},TWt.ie=function(){return this},TWt.Ib=function(){var t,e,n,i,r,a;for(a=new fN("{"),t=!0,i=0,r=(n=_rt(this,P8(Vee,lKt,2,0,6,1))).length;i=0?":"+this.c:"")+")"},TWt.c=0;var zee=mZ(RWt,"StackTraceElement",310);DWt={3:1,475:1,35:1,2:1};var qee,Hee,Uee,Gee,Yee,Zee,Wee,Kee,Xee,Vee=mZ(RWt,UKt,2);pDt(107,418,{475:1},Tx,Cx,hN),mZ(RWt,"StringBuffer",107),pDt(100,418,{475:1},Sx,Ix,fN),mZ(RWt,"StringBuilder",100),pDt(687,73,PXt,Mx),mZ(RWt,"StringIndexOutOfBoundsException",687),pDt(2043,1,{}),pDt(844,1,{},P),TWt.Kb=function(t){return zz(t,78).e},mZ(RWt,"Throwable/lambda$0$Type",844),pDt(41,60,{3:1,102:1,60:1,78:1,41:1},wm,ex),mZ(RWt,"UnsupportedOperationException",41),pDt(240,236,{3:1,35:1,236:1,240:1},xtt,g_),TWt.wd=function(t){return Jjt(this,zz(t,240))},TWt.ke=function(){return gTt(iHt(this))},TWt.Fb=function(t){var e;return this===t||!!aL(t,240)&&(e=zz(t,240),this.e==e.e&&0==Jjt(this,e))},TWt.Hb=function(){var t;return 0!=this.b?this.b:this.a<54?(t=fot(this.f),this.b=pU(n0(t,-1)),this.b=33*this.b+pU(n0(xG(t,32),-1)),this.b=17*this.b+SQ(this.e),this.b):(this.b=17*jlt(this.c)+SQ(this.e),this.b)},TWt.Ib=function(){return iHt(this)},TWt.a=0,TWt.b=0,TWt.d=0,TWt.e=0,TWt.f=0;var Qee,Jee,tne,ene,nne,ine,rne=mZ("java.math","BigDecimal",240);pDt(91,236,{3:1,35:1,236:1,91:1},Rwt,Z6,fY,y_t,Ibt,OD),TWt.wd=function(t){return nbt(this,zz(t,91))},TWt.ke=function(){return gTt(UZt(this,0))},TWt.Fb=function(t){return lgt(this,t)},TWt.Hb=function(){return jlt(this)},TWt.Ib=function(){return UZt(this,0)},TWt.b=-2,TWt.c=0,TWt.d=0,TWt.e=0;var ane,one,sne,cne,une=mZ("java.math","BigInteger",91);pDt(488,1967,JWt),TWt.$b=function(){OY(this)},TWt._b=function(t){return lY(this,t)},TWt.uc=function(t){return Nut(this,t,this.g)||Nut(this,t,this.f)},TWt.vc=function(){return new Cd(this)},TWt.xc=function(t){return FZ(this,t)},TWt.zc=function(t,e){return KW(this,t,e)},TWt.Bc=function(t){return m6(this,t)},TWt.gc=function(){return NA(this)},mZ(QWt,"AbstractHashMap",488),pDt(261,eKt,nKt,Cd),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return y2(this,t)},TWt.Kc=function(){return new cut(this.a)},TWt.Mc=function(t){var e;return!!y2(this,t)&&(e=zz(t,42).cd(),this.a.Bc(e),!0)},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractHashMap/EntrySet",261),pDt(262,1,VWt,cut),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return nnt(this)},TWt.Ob=function(){return this.b},TWt.Qb=function(){c7(this)},TWt.b=!1,mZ(QWt,"AbstractHashMap/EntrySetIterator",262),pDt(417,1,VWt,Td),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return oT(this)},TWt.Pb=function(){return yX(this)},TWt.Qb=function(){hW(this)},TWt.b=0,TWt.c=-1,mZ(QWt,"AbstractList/IteratorImpl",417),pDt(96,417,oKt,E2),TWt.Qb=function(){hW(this)},TWt.Rb=function(t){vF(this,t)},TWt.Sb=function(){return this.b>0},TWt.Tb=function(){return this.b},TWt.Ub=function(){return CP(this.b>0),this.a.Xb(this.c=--this.b)},TWt.Vb=function(){return this.b-1},TWt.Wb=function(t){EP(-1!=this.c),this.a._c(this.c,t)},mZ(QWt,"AbstractList/ListIteratorImpl",96),pDt(219,52,NKt,u1),TWt.Vc=function(t,e){LJ(t,this.b),this.c.Vc(this.a+t,e),++this.b},TWt.Xb=function(t){return f1(t,this.b),this.c.Xb(this.a+t)},TWt.$c=function(t){var e;return f1(t,this.b),e=this.c.$c(this.a+t),--this.b,e},TWt._c=function(t,e){return f1(t,this.b),this.c._c(this.a+t,e)},TWt.gc=function(){return this.b},TWt.a=0,TWt.b=0,mZ(QWt,"AbstractList/SubList",219),pDt(384,eKt,nKt,Sd),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return this.a._b(t)},TWt.Kc=function(){return new Id(this.a.vc().Kc())},TWt.Mc=function(t){return!!this.a._b(t)&&(this.a.Bc(t),!0)},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractMap/1",384),pDt(691,1,VWt,Id),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a.Ob()},TWt.Pb=function(){return zz(this.a.Pb(),42).cd()},TWt.Qb=function(){this.a.Qb()},mZ(QWt,"AbstractMap/1/1",691),pDt(226,28,tKt,Md),TWt.$b=function(){this.a.$b()},TWt.Hc=function(t){return this.a.uc(t)},TWt.Kc=function(){return new Rd(this.a.vc().Kc())},TWt.gc=function(){return this.a.gc()},mZ(QWt,"AbstractMap/2",226),pDt(294,1,VWt,Rd),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a.Ob()},TWt.Pb=function(){return zz(this.a.Pb(),42).dd()},TWt.Qb=function(){this.a.Qb()},mZ(QWt,"AbstractMap/2/1",294),pDt(484,1,{484:1,42:1}),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),aK(this.d,e.cd())&&aK(this.e,e.dd()))},TWt.cd=function(){return this.d},TWt.dd=function(){return this.e},TWt.Hb=function(){return RD(this.d)^RD(this.e)},TWt.ed=function(t){return wF(this,t)},TWt.Ib=function(){return this.d+"="+this.e},mZ(QWt,"AbstractMap/AbstractEntry",484),pDt(383,484,{484:1,383:1,42:1},CT),mZ(QWt,"AbstractMap/SimpleEntry",383),pDt(1984,1,XXt),TWt.Fb=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),aK(this.cd(),e.cd())&&aK(this.dd(),e.dd()))},TWt.Hb=function(){return RD(this.cd())^RD(this.dd())},TWt.Ib=function(){return this.cd()+"="+this.dd()},mZ(QWt,cKt,1984),pDt(1992,1967,iKt),TWt.tc=function(t){return H5(this,t)},TWt._b=function(t){return BR(this,t)},TWt.vc=function(){return new zd(this)},TWt.xc=function(t){return HI(dut(this,t))},TWt.ec=function(){return new jd(this)},mZ(QWt,"AbstractNavigableMap",1992),pDt(739,eKt,nKt,zd),TWt.Hc=function(t){return aL(t,42)&&H5(this.b,zz(t,42))},TWt.Kc=function(){return new zF(this.b)},TWt.Mc=function(t){var e;return!!aL(t,42)&&(e=zz(t,42),G8(this.b,e))},TWt.gc=function(){return this.b.c},mZ(QWt,"AbstractNavigableMap/EntrySet",739),pDt(493,eKt,aKt,jd),TWt.Nc=function(){return new gT(this)},TWt.$b=function(){yv(this.a)},TWt.Hc=function(t){return BR(this.a,t)},TWt.Kc=function(){return new $d(new zF(new PN(this.a).b))},TWt.Mc=function(t){return!!BR(this.a,t)&&(OQ(this.a,t),!0)},TWt.gc=function(){return this.a.c},mZ(QWt,"AbstractNavigableMap/NavigableKeySet",493),pDt(494,1,VWt,$d),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return oT(this.a.a)},TWt.Pb=function(){return yP(this.a).cd()},TWt.Qb=function(){nj(this.a)},mZ(QWt,"AbstractNavigableMap/NavigableKeySet/1",494),pDt(2004,28,tKt),TWt.Fc=function(t){return $8(iEt(this,t)),!0},TWt.Gc=function(t){return xW(t),mq(t!=this,"Can't add a queue to itself"),zrt(this,t)},TWt.$b=function(){for(;null!=ytt(this););},mZ(QWt,"AbstractQueue",2004),pDt(302,28,{4:1,20:1,28:1,14:1},Lw,p1),TWt.Fc=function(t){return g3(this,t),!0},TWt.$b=function(){c4(this)},TWt.Hc=function(t){return pst(new dK(this),t)},TWt.dc=function(){return Wv(this)},TWt.Kc=function(){return new dK(this)},TWt.Mc=function(t){return UQ(new dK(this),t)},TWt.gc=function(){return this.c-this.b&this.a.length-1},TWt.Nc=function(){return new g1(this,272)},TWt.Qc=function(t){var e;return e=this.c-this.b&this.a.length-1,t.lengthe&&OZ(t,e,null),t},TWt.b=0,TWt.c=0,mZ(QWt,"ArrayDeque",302),pDt(446,1,VWt,dK),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return this.a!=this.b},TWt.Pb=function(){return $lt(this)},TWt.Qb=function(){iit(this)},TWt.a=0,TWt.b=0,TWt.c=-1,mZ(QWt,"ArrayDeque/IteratorImpl",446),pDt(12,52,VXt,Nw,Q6,ej),TWt.Vc=function(t,e){xU(this,t,e)},TWt.Fc=function(t){return Wz(this,t)},TWt.Wc=function(t,e){return ult(this,t,e)},TWt.Gc=function(t){return wst(this,t)},TWt.$b=function(){this.c=P8(Ote,HWt,1,0,5,1)},TWt.Hc=function(t){return-1!=_9(this,t,0)},TWt.Jc=function(t){Det(this,t)},TWt.Xb=function(t){return PH(this,t)},TWt.Xc=function(t){return _9(this,t,0)},TWt.dc=function(){return 0==this.c.length},TWt.Kc=function(){return new Wd(this)},TWt.$c=function(t){return u6(this,t)},TWt.Mc=function(t){return v9(this,t)},TWt.Ud=function(t,e){l1(this,t,e)},TWt._c=function(t,e){return a5(this,t,e)},TWt.gc=function(){return this.c.length},TWt.ad=function(t){yO(this,t)},TWt.Pc=function(){return dP(this)},TWt.Qc=function(t){return Vbt(this,t)};var lne,hne,fne,dne,gne,pne,bne,wne,mne,yne=mZ(QWt,"ArrayList",12);pDt(7,1,VWt,Wd),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return vO(this)},TWt.Pb=function(){return t0(this)},TWt.Qb=function(){DY(this)},TWt.a=0,TWt.b=-1,mZ(QWt,"ArrayList/1",7),pDt(2013,n.Function,{},A),TWt.te=function(t,e){return Sft(t,e)},pDt(154,52,QXt,Qv),TWt.Hc=function(t){return-1!=git(this,t)},TWt.Jc=function(t){var e,n,i,r;for(xW(t),i=0,r=(n=this.a).length;i>>0).toString(16))},TWt.f=0,TWt.i=jXt;var uie,lie,hie,fie,die=mZ(IVt,"CNode",57);pDt(814,1,{},Wm),mZ(IVt,"CNode/CNodeBuilder",814),pDt(1525,1,{},gt),TWt.Oe=function(t,e){return 0},TWt.Pe=function(t,e){return 0},mZ(IVt,DVt,1525),pDt(1790,1,{},pt),TWt.Le=function(t){var e,i,r,a,o,s,c,u,l,h,f,d,g,p,b;for(l=RXt,r=new Wd(t.a.b);r.an.d.c||n.d.c==r.d.c&&n.d.b0?t+this.n.d+this.n.a:0},TWt.Se=function(){var t,e,i,r,a;if(a=0,this.e)this.b?a=this.b.a:this.a[1][1]&&(a=this.a[1][1].Se());else if(this.g)a=Qdt(this,Dxt(this,null,!0));else for(Fet(),i=0,r=(e=Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])).length;i0?a+this.n.b+this.n.c:0},TWt.Te=function(){var t,e,n,i,r;if(this.g)for(t=Dxt(this,null,!1),Fet(),i=0,r=(n=Sst(Ux(Kie,1),LKt,232,0,[Uie,Gie,Yie])).length;i0&&(r[0]+=this.d,i-=r[0]),r[2]>0&&(r[2]+=this.d,i-=r[2]),this.c.a=n.Math.max(0,i),this.c.d=e.d+t.d+(this.c.a-i)/2,r[1]=n.Math.max(r[1],i),X5(this,Gie,e.d+t.d+r[0]-(r[1]-i)/2,r)},TWt.b=null,TWt.d=0,TWt.e=!1,TWt.f=!1,TWt.g=!1;var Xie,Vie,Qie,Jie=0,tre=0;mZ(nQt,"GridContainerCell",1473),pDt(461,22,{3:1,35:1,22:1,461:1},UT);var ere,nre=qnt(nQt,"HorizontalLabelAlignment",461,Zte,y1,bj);pDt(306,212,{212:1,306:1},vQ,pet,RV),TWt.Re=function(){return Wq(this)},TWt.Se=function(){return Kq(this)},TWt.a=0,TWt.c=!1;var ire,rre,are,ore=mZ(nQt,"LabelCell",306);pDt(244,326,{212:1,326:1,244:1},Mbt),TWt.Re=function(){return TIt(this)},TWt.Se=function(){return CIt(this)},TWt.Te=function(){$$t(this)},TWt.Ue=function(){G$t(this)},TWt.b=0,TWt.c=0,TWt.d=!1,mZ(nQt,"StripContainerCell",244),pDt(1626,1,FKt,kt),TWt.Mb=function(t){return Xv(zz(t,212))},mZ(nQt,"StripContainerCell/lambda$0$Type",1626),pDt(1627,1,{},_t),TWt.Fe=function(t){return zz(t,212).Se()},mZ(nQt,"StripContainerCell/lambda$1$Type",1627),pDt(1628,1,FKt,At),TWt.Mb=function(t){return Vv(zz(t,212))},mZ(nQt,"StripContainerCell/lambda$2$Type",1628),pDt(1629,1,{},Et),TWt.Fe=function(t){return zz(t,212).Re()},mZ(nQt,"StripContainerCell/lambda$3$Type",1629),pDt(462,22,{3:1,35:1,22:1,462:1},GT);var sre,cre,ure,lre,hre,fre,dre,gre,pre,bre,wre,mre,yre,vre,xre,kre,_re,Are,Ere,Tre,Cre,Sre,Ire,Mre=qnt(nQt,"VerticalLabelAlignment",462,Zte,v1,wj);pDt(789,1,{},iYt),TWt.c=0,TWt.d=0,TWt.k=0,TWt.s=0,TWt.t=0,TWt.v=!1,TWt.w=0,TWt.D=!1,mZ(lQt,"NodeContext",789),pDt(1471,1,TVt,Tt),TWt.ue=function(t,e){return VM(zz(t,61),zz(e,61))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(lQt,"NodeContext/0methodref$comparePortSides$Type",1471),pDt(1472,1,TVt,Ct),TWt.ue=function(t,e){return ZAt(zz(t,111),zz(e,111))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(lQt,"NodeContext/1methodref$comparePortContexts$Type",1472),pDt(159,22,{3:1,35:1,22:1,159:1},uat);var Dre,Ore,Lre,Nre,Pre,Bre,Fre,Rre=qnt(lQt,"NodeLabelLocation",159,Zte,nwt,mj);pDt(111,1,{111:1},TMt),TWt.a=!1,mZ(lQt,"PortContext",111),pDt(1476,1,dKt,St),TWt.td=function(t){S_(zz(t,306))},mZ(dQt,gQt,1476),pDt(1477,1,FKt,It),TWt.Mb=function(t){return!!zz(t,111).c},mZ(dQt,pQt,1477),pDt(1478,1,dKt,Mt),TWt.td=function(t){S_(zz(t,111).c)},mZ(dQt,"LabelPlacer/lambda$2$Type",1478),pDt(1475,1,dKt,Ot),TWt.td=function(t){HB(),Vw(zz(t,111))},mZ(dQt,"NodeLabelAndSizeUtilities/lambda$0$Type",1475),pDt(790,1,dKt,Oj),TWt.td=function(t){FE(this.b,this.c,this.a,zz(t,181))},TWt.a=!1,TWt.c=!1,mZ(dQt,"NodeLabelCellCreator/lambda$0$Type",790),pDt(1474,1,dKt,Sg),TWt.td=function(t){Im(this.a,zz(t,181))},mZ(dQt,"PortContextCreator/lambda$0$Type",1474),pDt(1829,1,{},Lt),mZ(wQt,"GreedyRectangleStripOverlapRemover",1829),pDt(1830,1,TVt,Dt),TWt.ue=function(t,e){return $N(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1830),pDt(1786,1,{},Jm),TWt.a=5,TWt.e=0,mZ(wQt,"RectangleStripOverlapRemover",1786),pDt(1787,1,TVt,Pt),TWt.ue=function(t,e){return zN(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1787),pDt(1789,1,TVt,Bt),TWt.ue=function(t,e){return QY(zz(t,222),zz(e,222))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(wQt,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1789),pDt(406,22,{3:1,35:1,22:1,406:1},YT);var jre,$re,zre,qre,Hre,Ure=qnt(wQt,"RectangleStripOverlapRemover/OverlapRemovalDirection",406,Zte,V2,yj);pDt(222,1,{222:1},PU),mZ(wQt,"RectangleStripOverlapRemover/RectangleNode",222),pDt(1788,1,dKt,Ig),TWt.td=function(t){Iyt(this.a,zz(t,222))},mZ(wQt,"RectangleStripOverlapRemover/lambda$1$Type",1788),pDt(1304,1,TVt,Ft),TWt.ue=function(t,e){return Yqt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1304),pDt(1307,1,{},Rt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1307),pDt(1308,1,FKt,jt),TWt.Mb=function(t){return zz(t,323).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1308),pDt(1309,1,FKt,$t),TWt.Mb=function(t){return zz(t,323).a},mZ(yQt,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1309),pDt(1302,1,TVt,zt),TWt.ue=function(t,e){return KFt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1302),pDt(1305,1,{},Nt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1305),pDt(767,1,TVt,qt),TWt.ue=function(t,e){return Zot(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinNumOfExtensionsComparator",767),pDt(1300,1,TVt,Ht),TWt.ue=function(t,e){return Vit(zz(t,321),zz(e,321))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinPerimeterComparator",1300),pDt(1301,1,TVt,Ut),TWt.ue=function(t,e){return smt(zz(t,321),zz(e,321))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/MinPerimeterComparatorWithShape",1301),pDt(1303,1,TVt,Gt),TWt.ue=function(t,e){return qRt(zz(t,167),zz(e,167))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(yQt,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1303),pDt(1306,1,{},Yt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1306),pDt(777,1,{},BT),TWt.Ce=function(t,e){return M2(this,zz(t,46),zz(e,167))},mZ(yQt,"SuccessorCombination",777),pDt(644,1,{},Zt),TWt.Ce=function(t,e){var n;return WIt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorJitter",644),pDt(643,1,{},Wt),TWt.Ce=function(t,e){var n;return gPt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorLineByLine",643),pDt(568,1,{},Kt),TWt.Ce=function(t,e){var n;return fOt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorManhattan",568),pDt(1356,1,{},Xt),TWt.Ce=function(t,e){var n;return _Nt((n=zz(t,46),zz(e,167),n))},mZ(yQt,"SuccessorMaxNormWindingInMathPosSense",1356),pDt(400,1,{},Mg),TWt.Ce=function(t,e){return zY(this,t,e)},TWt.c=!1,TWt.d=!1,TWt.e=!1,TWt.f=!1,mZ(yQt,"SuccessorQuadrantsGeneric",400),pDt(1357,1,{},Vt),TWt.Kb=function(t){return zz(t,324).a},mZ(yQt,"SuccessorQuadrantsGeneric/lambda$0$Type",1357),pDt(323,22,{3:1,35:1,22:1,323:1},jT),TWt.a=!1;var Gre,Yre=qnt(AQt,EQt,323,Zte,t3,vj);pDt(1298,1,{}),TWt.Ib=function(){var t,e,n,i,r,a;for(n=" ",t=rft(0),r=0;r=0?"b"+t+"["+s5(this.a)+"]":"b["+s5(this.a)+"]":"b_"+CN(this)},mZ(oJt,"FBendpoint",559),pDt(282,134,{3:1,282:1,94:1,134:1},IF),TWt.Ib=function(){return s5(this)},mZ(oJt,"FEdge",282),pDt(231,134,{3:1,231:1,94:1,134:1},v6);var Sae,Iae,Mae,Dae,Oae,Lae,Nae,Pae,Bae,Fae,Rae=mZ(oJt,"FGraph",231);pDt(447,357,{3:1,447:1,357:1,94:1,134:1},y4),TWt.Ib=function(){return null==this.b||0==this.b.length?"l["+s5(this.a)+"]":"l_"+this.b},mZ(oJt,"FLabel",447),pDt(144,357,{3:1,144:1,357:1,94:1,134:1},HZ),TWt.Ib=function(){return w0(this)},TWt.b=0,mZ(oJt,"FNode",144),pDt(2003,1,{}),TWt.bf=function(t){l$t(this,t)},TWt.cf=function(){Uyt(this)},TWt.d=0,mZ(cJt,"AbstractForceModel",2003),pDt(631,2003,{631:1},Not),TWt.af=function(t,e){var i,r,a,o;return nIt(this.f,t,e),a=ZF(zO(e.d),t.d),o=n.Math.sqrt(a.a*a.a+a.b*a.b),r=n.Math.max(0,o-fW(t.e)/2-fW(e.e)/2),xL(a,((i=Uct(this.e,t,e))>0?-jY(r,this.c)*i:PP(r,this.b)*zz(vEt(t,(fFt(),Jae)),19).a)/o),a},TWt.bf=function(t){l$t(this,t),this.a=zz(vEt(t,(fFt(),Hae)),19).a,this.c=Uv(EB(vEt(t,aoe))),this.b=Uv(EB(vEt(t,eoe)))},TWt.df=function(t){return t0&&(o-=Tv(r,this.a)*i),xL(a,o*this.b/s),a},TWt.bf=function(t){var e,i,r,a,o,s,c;for(l$t(this,t),this.b=Uv(EB(vEt(t,(fFt(),ooe)))),this.c=this.b/zz(vEt(t,Hae),19).a,r=t.e.c.length,o=0,a=0,c=new Wd(t.e);c.a0},TWt.a=0,TWt.b=0,TWt.c=0,mZ(cJt,"FruchtermanReingoldModel",632),pDt(849,1,VVt,Gl),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,uJt),""),"Force Model"),"Determines the model for force calculation."),Mae),(SCt(),bEe)),Ooe),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,lJt),""),"Iterations"),"The number of iterations on the force model."),rft(300)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,hJt),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,fJt),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),dJt),pEe),See),edt(lEe)))),o2(t,fJt,uJt,Pae),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,gJt),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),pEe),See),edt(lEe)))),o2(t,gJt,uJt,Oae),mYt((new Yl,t))},mZ(pJt,"ForceMetaDataProvider",849),pDt(424,22,{3:1,35:1,22:1,424:1},ZT);var jae,$ae,zae,qae,Hae,Uae,Gae,Yae,Zae,Wae,Kae,Xae,Vae,Qae,Jae,toe,eoe,noe,ioe,roe,aoe,ooe,soe,coe,uoe,loe,hoe,foe,doe,goe,poe,boe,woe,moe,yoe,voe,xoe,koe,_oe,Aoe,Eoe,Toe,Coe,Soe,Ioe,Moe,Doe,Ooe=qnt(pJt,"ForceModelStrategy",424,Zte,oQ,_j);pDt(988,1,VVt,Yl),TWt.Qe=function(t){mYt(t)},mZ(pJt,"ForceOptions",988),pDt(989,1,{},ge),TWt.$e=function(){return new Um},TWt._e=function(t){},mZ(pJt,"ForceOptions/ForceFactory",989),pDt(850,1,VVt,Zl),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,PJt),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(lN(),!1)),(SCt(),gEe)),kee),edt((awt(),uEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,BJt),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),pEe),See),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[sEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,FJt),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),doe),bEe),qoe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,RJt),""),"Stress Epsilon"),"Termination criterion for the iterative process."),dJt),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,jJt),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),rft(FWt)),mEe),Oee),edt(lEe)))),ZUt((new Wl,t))},mZ(pJt,"StressMetaDataProvider",850),pDt(992,1,VVt,Wl),TWt.Qe=function(t){ZUt(t)},mZ(pJt,"StressOptions",992),pDt(993,1,{},pe),TWt.$e=function(){return new MF},TWt._e=function(t){},mZ(pJt,"StressOptions/StressFactory",993),pDt(1128,209,PQt,MF),TWt.Ze=function(t,e){var n,i,r,a;for(DAt(e,zJt,1),Hv(AB(tOt(t,(axt(),xoe))))?Hv(AB(tOt(t,Coe)))||kQ(new Ag((UE(),new Bv(t)))):yLt(new Um,t,vat(e,1)),i=fct(t),a=(n=H$t(this.a,i)).Kc();a.Ob();)(r=zz(a.Pb(),231)).e.c.length<=1||(Hqt(this.b,r),rOt(this.b),Det(r.d,new be));CYt(i=GYt(n)),HTt(e)},mZ(HJt,"StressLayoutProvider",1128),pDt(1129,1,dKt,be),TWt.td=function(t){$zt(zz(t,447))},mZ(HJt,"StressLayoutProvider/lambda$0$Type",1129),pDt(990,1,{},Am),TWt.c=0,TWt.e=0,TWt.g=0,mZ(HJt,"StressMajorization",990),pDt(379,22,{3:1,35:1,22:1,379:1},WT);var Loe,Noe,Poe,Boe,Foe,Roe,joe,$oe,zoe,qoe=qnt(HJt,"StressMajorization/Dimension",379,Zte,k1,Aj);pDt(991,1,TVt,Pg),TWt.ue=function(t,e){return TR(this.a,zz(t,144),zz(e,144))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(HJt,"StressMajorization/lambda$0$Type",991),pDt(1229,1,{},B0),mZ(GJt,"ElkLayered",1229),pDt(1230,1,dKt,we),TWt.td=function(t){RIt(zz(t,37))},mZ(GJt,"ElkLayered/lambda$0$Type",1230),pDt(1231,1,dKt,Bg),TWt.td=function(t){CR(this.a,zz(t,37))},mZ(GJt,"ElkLayered/lambda$1$Type",1231),pDt(1263,1,{},OO),mZ(GJt,"GraphConfigurator",1263),pDt(759,1,dKt,Fg),TWt.td=function(t){XEt(this.a,zz(t,10))},mZ(GJt,"GraphConfigurator/lambda$0$Type",759),pDt(760,1,{},me),TWt.Kb=function(t){return nkt(),new FH(null,new g1(zz(t,29).a,16))},mZ(GJt,"GraphConfigurator/lambda$1$Type",760),pDt(761,1,dKt,Rg),TWt.td=function(t){XEt(this.a,zz(t,10))},mZ(GJt,"GraphConfigurator/lambda$2$Type",761),pDt(1127,209,PQt,Ym),TWt.Ze=function(t,e){var n;n=Czt(new ey,t),UI(tOt(t,(HZt(),ube)))===UI((cht(),wSe))?agt(this.a,n,e):pMt(this.a,n,e),wYt(new Xl,n)},mZ(GJt,"LayeredLayoutProvider",1127),pDt(356,22,{3:1,35:1,22:1,356:1},KT);var Hoe,Uoe,Goe,Yoe=qnt(GJt,"LayeredPhases",356,Zte,u5,Ej);pDt(1651,1,{},yit),TWt.i=0,mZ(YJt,"ComponentsToCGraphTransformer",1651),pDt(1652,1,{},ye),TWt.ef=function(t,e){return n.Math.min(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},TWt.ff=function(t,e){return n.Math.min(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},mZ(YJt,"ComponentsToCGraphTransformer/1",1652),pDt(81,1,{81:1}),TWt.i=0,TWt.k=!0,TWt.o=jXt;var Zoe,Woe,Koe,Xoe=mZ(ZJt,"CNode",81);pDt(460,81,{460:1,81:1},NN,Cbt),TWt.Ib=function(){return""},mZ(YJt,"ComponentsToCGraphTransformer/CRectNode",460),pDt(1623,1,{},ve),mZ(YJt,"OneDimensionalComponentsCompaction",1623),pDt(1624,1,{},xe),TWt.Kb=function(t){return PJ(zz(t,46))},TWt.Fb=function(t){return this===t},mZ(YJt,"OneDimensionalComponentsCompaction/lambda$0$Type",1624),pDt(1625,1,{},ke),TWt.Kb=function(t){return Agt(zz(t,46))},TWt.Fb=function(t){return this===t},mZ(YJt,"OneDimensionalComponentsCompaction/lambda$1$Type",1625),pDt(1654,1,{},zZ),mZ(ZJt,"CGraph",1654),pDt(189,1,{189:1},Sbt),TWt.b=0,TWt.c=0,TWt.e=0,TWt.g=!0,TWt.i=jXt,mZ(ZJt,"CGroup",189),pDt(1653,1,{},Te),TWt.ef=function(t,e){return n.Math.max(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},TWt.ff=function(t,e){return n.Math.max(null!=t.a?Uv(t.a):t.c.i,null!=e.a?Uv(e.a):e.c.i)},mZ(ZJt,DVt,1653),pDt(1655,1,{},lMt),TWt.d=!1;var Voe=mZ(ZJt,BVt,1655);pDt(1656,1,{},Ce),TWt.Kb=function(t){return xE(),lN(),0!=zz(zz(t,46).a,81).d.e},TWt.Fb=function(t){return this===t},mZ(ZJt,FVt,1656),pDt(823,1,{},TH),TWt.a=!1,TWt.b=!1,TWt.c=!1,TWt.d=!1,mZ(ZJt,RVt,823),pDt(1825,1,{},BU),mZ(WJt,jVt,1825);var Qoe=dH(KJt,SVt);pDt(1826,1,{369:1},fV),TWt.Ke=function(t){GPt(this,zz(t,466))},mZ(WJt,$Vt,1826),pDt(1827,1,TVt,Se),TWt.ue=function(t,e){return cX(zz(t,81),zz(e,81))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(WJt,zVt,1827),pDt(466,1,{466:1},hC),TWt.a=!1,mZ(WJt,qVt,466),pDt(1828,1,TVt,Ie),TWt.ue=function(t,e){return ekt(zz(t,466),zz(e,466))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(WJt,HVt,1828),pDt(140,1,{140:1},pC,yq),TWt.Fb=function(t){var e;return null!=t&&ise==nut(t)&&(e=zz(t,140),aK(this.c,e.c)&&aK(this.d,e.d))},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[this.c,this.d]))},TWt.Ib=function(){return"("+this.c+zWt+this.d+(this.a?"cx":"")+this.b+")"},TWt.a=!0,TWt.c=0,TWt.d=0;var Joe,tse,ese,nse,ise=mZ(KJt,"Point",140);pDt(405,22,{3:1,35:1,22:1,405:1},XT);var rse,ase,ose,sse,cse,use,lse,hse,fse,dse,gse,pse=qnt(KJt,"Point/Quadrant",405,Zte,e3,Tj);pDt(1642,1,{},Km),TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,TWt.f=null,mZ(KJt,"RectilinearConvexHull",1642),pDt(574,1,{369:1},Ewt),TWt.Ke=function(t){j7(this,zz(t,140))},TWt.b=0,mZ(KJt,"RectilinearConvexHull/MaximalElementsEventHandler",574),pDt(1644,1,TVt,Ae),TWt.ue=function(t,e){return BK(EB(t),EB(e))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1644),pDt(1643,1,{369:1},fet),TWt.Ke=function(t){SNt(this,zz(t,140))},TWt.a=0,TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,mZ(KJt,"RectilinearConvexHull/RectangleEventHandler",1643),pDt(1645,1,TVt,Ee),TWt.ue=function(t,e){return s0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$0$Type",1645),pDt(1646,1,TVt,_e),TWt.ue=function(t,e){return c0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$1$Type",1646),pDt(1647,1,TVt,Me),TWt.ue=function(t,e){return l0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$2$Type",1647),pDt(1648,1,TVt,De),TWt.ue=function(t,e){return u0(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$3$Type",1648),pDt(1649,1,TVt,Oe),TWt.ue=function(t,e){return _Et(zz(t,140),zz(e,140))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(KJt,"RectilinearConvexHull/lambda$4$Type",1649),pDt(1650,1,{},MJ),mZ(KJt,"Scanline",1650),pDt(2005,1,{}),mZ(XJt,"AbstractGraphPlacer",2005),pDt(325,1,{325:1},ZP),TWt.mf=function(t){return!!this.nf(t)&&(JIt(this.b,zz(vEt(t,(hWt(),Zhe)),21),t),!0)},TWt.nf=function(t){var e,n,i;for(e=zz(vEt(t,(hWt(),Zhe)),21),i=zz(l6(hse,e),21).Kc();i.Ob();)if(n=zz(i.Pb(),21),!zz(l6(this.b,n),15).dc())return!1;return!0},mZ(XJt,"ComponentGroup",325),pDt(765,2005,{},Xm),TWt.of=function(t){var e;for(e=new Wd(this.a);e.ad&&(x=0,k+=f+a,f=0),tRt(s,x+(b=s.c).a,k+b.b),xM(b),i=n.Math.max(i,x+m.a),f=n.Math.max(f,m.b),x+=m.a+a;if(e.f.a=i,e.f.b=k+f,Hv(AB(vEt(o,Epe)))){for(jZt(r=new Le,t,a),h=t.Kc();h.Ob();)YF(xM(zz(h.Pb(),37).c),r.e);YF(xM(e.f),r.a)}p7(e,t)}else(y=zz(t.Xb(0),37))!=e&&(e.a.c=P8(Ote,HWt,1,0,5,1),LRt(e,y,0,0),Uot(e,y),xX(e.d,y.d),e.f.a=y.f.a,e.f.b=y.f.b)},mZ(XJt,"SimpleRowGraphPlacer",1291),pDt(1292,1,TVt,Be),TWt.ue=function(t,e){return Yot(zz(t,37),zz(e,37))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(XJt,"SimpleRowGraphPlacer/1",1292),pDt(1262,1,UVt,Fe),TWt.Lb=function(t){var e;return!!(e=zz(vEt(zz(t,243).b,(HZt(),mbe)),74))&&0!=e.b},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){var e;return!!(e=zz(vEt(zz(t,243).b,(HZt(),mbe)),74))&&0!=e.b},mZ(t1t,"CompoundGraphPostprocessor/1",1262),pDt(1261,1,e1t,ny),TWt.pf=function(t,e){vmt(this,zz(t,37),e)},mZ(t1t,"CompoundGraphPreprocessor",1261),pDt(441,1,{441:1},Yht),TWt.c=!1,mZ(t1t,"CompoundGraphPreprocessor/ExternalPort",441),pDt(243,1,{243:1},Lj),TWt.Ib=function(){return pP(this.c)+":"+DIt(this.b)},mZ(t1t,"CrossHierarchyEdge",243),pDt(763,1,TVt,jg),TWt.ue=function(t,e){return Xvt(this,zz(t,243),zz(e,243))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(t1t,"CrossHierarchyEdgeComparator",763),pDt(299,134,{3:1,299:1,94:1,134:1}),TWt.p=0,mZ(n1t,"LGraphElement",299),pDt(17,299,{3:1,17:1,299:1,94:1,134:1},gV),TWt.Ib=function(){return DIt(this)};var vse=mZ(n1t,"LEdge",17);pDt(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},vit),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Wd(this.b)},TWt.Ib=function(){return 0==this.b.c.length?"G-unlayered"+NEt(this.a):0==this.a.c.length?"G-layered"+NEt(this.b):"G[layerless"+NEt(this.a)+", layers"+NEt(this.b)+"]"};var xse,kse=mZ(n1t,"LGraph",37);pDt(657,1,{}),TWt.qf=function(){return this.e.n},TWt.We=function(t){return vEt(this.e,t)},TWt.rf=function(){return this.e.o},TWt.sf=function(){return this.e.p},TWt.Xe=function(t){return LP(this.e,t)},TWt.tf=function(t){this.e.n.a=t.a,this.e.n.b=t.b},TWt.uf=function(t){this.e.o.a=t.a,this.e.o.b=t.b},TWt.vf=function(t){this.e.p=t},mZ(n1t,"LGraphAdapters/AbstractLShapeAdapter",657),pDt(577,1,{839:1},$g),TWt.wf=function(){var t,e;if(!this.b)for(this.b=uP(this.a.b.c.length),e=new Wd(this.a.b);e.a0&&Flt((d1(e-1,t.length),t.charCodeAt(e-1)),l1t);)--e;if(r> ",t),mvt(n)),cM(sM((t.a+="[",t),n.i),"]")),t.a},TWt.c=!0,TWt.d=!1;var $se,zse,qse,Hse,Use=mZ(n1t,"LPort",11);pDt(397,1,mKt,qg),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Hg(new Wd(this.a.e))},mZ(n1t,"LPort/1",397),pDt(1290,1,VWt,Hg),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(t0(this.a),17).c},TWt.Ob=function(){return vO(this.a)},TWt.Qb=function(){DY(this.a)},mZ(n1t,"LPort/1/1",1290),pDt(359,1,mKt,Ug),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Gg(new Wd(this.a.g))},mZ(n1t,"LPort/2",359),pDt(762,1,VWt,Gg),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(t0(this.a),17).d},TWt.Ob=function(){return vO(this.a)},TWt.Qb=function(){DY(this.a)},mZ(n1t,"LPort/2/1",762),pDt(1283,1,mKt,lC),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new y6(this)},mZ(n1t,"LPort/CombineIter",1283),pDt(201,1,VWt,y6),TWt.Nb=function(t){hY(this,t)},TWt.Qb=function(){s_()},TWt.Ob=function(){return GN(this)},TWt.Pb=function(){return vO(this.a)?t0(this.a):t0(this.b)},mZ(n1t,"LPort/CombineIter/1",201),pDt(1285,1,UVt,$e),TWt.Lb=function(t){return DG(t)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),0!=zz(t,11).e.c.length},mZ(n1t,"LPort/lambda$0$Type",1285),pDt(1284,1,UVt,ze),TWt.Lb=function(t){return OG(t)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),0!=zz(t,11).g.c.length},mZ(n1t,"LPort/lambda$1$Type",1284),pDt(1286,1,UVt,qe),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),uIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),uIe)},mZ(n1t,"LPort/lambda$2$Type",1286),pDt(1287,1,UVt,He),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),cIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),cIe)},mZ(n1t,"LPort/lambda$3$Type",1287),pDt(1288,1,UVt,Ue),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),TIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),TIe)},mZ(n1t,"LPort/lambda$4$Type",1288),pDt(1289,1,UVt,Ge),TWt.Lb=function(t){return wat(),zz(t,11).j==(kYt(),SIe)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return wat(),zz(t,11).j==(kYt(),SIe)},mZ(n1t,"LPort/lambda$5$Type",1289),pDt(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},qZ),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new Wd(this.a)},TWt.Ib=function(){return"L_"+_9(this.b.b,this,0)+NEt(this.a)},mZ(n1t,"Layer",29),pDt(1342,1,{},ey),mZ(b1t,w1t,1342),pDt(1346,1,{},Ye),TWt.Kb=function(t){return SAt(zz(t,82))},mZ(b1t,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1346),pDt(1349,1,{},Ze),TWt.Kb=function(t){return SAt(zz(t,82))},mZ(b1t,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1349),pDt(1343,1,dKt,Yg),TWt.td=function(t){SMt(this.a,zz(t,118))},mZ(b1t,m1t,1343),pDt(1344,1,dKt,Zg),TWt.td=function(t){SMt(this.a,zz(t,118))},mZ(b1t,y1t,1344),pDt(1345,1,{},We),TWt.Kb=function(t){return new FH(null,new g1(wK(zz(t,79)),16))},mZ(b1t,v1t,1345),pDt(1347,1,FKt,Wg),TWt.Mb=function(t){return jD(this.a,zz(t,33))},mZ(b1t,x1t,1347),pDt(1348,1,{},Ke),TWt.Kb=function(t){return new FH(null,new g1(mK(zz(t,79)),16))},mZ(b1t,"ElkGraphImporter/lambda$5$Type",1348),pDt(1350,1,FKt,Kg),TWt.Mb=function(t){return $D(this.a,zz(t,33))},mZ(b1t,"ElkGraphImporter/lambda$7$Type",1350),pDt(1351,1,FKt,Xe),TWt.Mb=function(t){return DX(zz(t,79))},mZ(b1t,"ElkGraphImporter/lambda$8$Type",1351),pDt(1278,1,{},Xl),mZ(b1t,"ElkGraphLayoutTransferrer",1278),pDt(1279,1,FKt,Xg),TWt.Mb=function(t){return QF(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$0$Type",1279),pDt(1280,1,dKt,Vg),TWt.td=function(t){yE(),Wz(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$1$Type",1280),pDt(1281,1,FKt,Qg),TWt.Mb=function(t){return YB(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$2$Type",1281),pDt(1282,1,dKt,Jg),TWt.td=function(t){yE(),Wz(this.a,zz(t,17))},mZ(b1t,"ElkGraphLayoutTransferrer/lambda$3$Type",1282),pDt(1485,1,e1t,Ve),TWt.pf=function(t,e){Xrt(zz(t,37),e)},mZ(_1t,"CommentNodeMarginCalculator",1485),pDt(1486,1,{},Qe),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"CommentNodeMarginCalculator/lambda$0$Type",1486),pDt(1487,1,dKt,Je),TWt.td=function(t){nqt(zz(t,10))},mZ(_1t,"CommentNodeMarginCalculator/lambda$1$Type",1487),pDt(1488,1,e1t,tn),TWt.pf=function(t,e){sBt(zz(t,37),e)},mZ(_1t,"CommentPostprocessor",1488),pDt(1489,1,e1t,en),TWt.pf=function(t,e){cYt(zz(t,37),e)},mZ(_1t,"CommentPreprocessor",1489),pDt(1490,1,e1t,nn),TWt.pf=function(t,e){_Lt(zz(t,37),e)},mZ(_1t,"ConstraintsPostprocessor",1490),pDt(1491,1,e1t,rn),TWt.pf=function(t,e){oot(zz(t,37),e)},mZ(_1t,"EdgeAndLayerConstraintEdgeReverser",1491),pDt(1492,1,e1t,an),TWt.pf=function(t,e){Ggt(zz(t,37),e)},mZ(_1t,"EndLabelPostprocessor",1492),pDt(1493,1,{},on),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelPostprocessor/lambda$0$Type",1493),pDt(1494,1,FKt,sn),TWt.Mb=function(t){return EV(zz(t,10))},mZ(_1t,"EndLabelPostprocessor/lambda$1$Type",1494),pDt(1495,1,dKt,cn),TWt.td=function(t){ikt(zz(t,10))},mZ(_1t,"EndLabelPostprocessor/lambda$2$Type",1495),pDt(1496,1,e1t,un),TWt.pf=function(t,e){tSt(zz(t,37),e)},mZ(_1t,"EndLabelPreprocessor",1496),pDt(1497,1,{},ln),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelPreprocessor/lambda$0$Type",1497),pDt(1498,1,dKt,Bj),TWt.td=function(t){RE(this.a,this.b,this.c,zz(t,10))},TWt.a=0,TWt.b=0,TWt.c=!1,mZ(_1t,"EndLabelPreprocessor/lambda$1$Type",1498),pDt(1499,1,FKt,hn),TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),ZCe))},mZ(_1t,"EndLabelPreprocessor/lambda$2$Type",1499),pDt(1500,1,dKt,tp),TWt.td=function(t){Bq(this.a,zz(t,70))},mZ(_1t,"EndLabelPreprocessor/lambda$3$Type",1500),pDt(1501,1,FKt,fn),TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),YCe))},mZ(_1t,"EndLabelPreprocessor/lambda$4$Type",1501),pDt(1502,1,dKt,ep),TWt.td=function(t){Bq(this.a,zz(t,70))},mZ(_1t,"EndLabelPreprocessor/lambda$5$Type",1502),pDt(1551,1,e1t,Kl),TWt.pf=function(t,e){Ift(zz(t,37),e)},mZ(_1t,"EndLabelSorter",1551),pDt(1552,1,TVt,dn),TWt.ue=function(t,e){return Hbt(zz(t,456),zz(e,456))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"EndLabelSorter/1",1552),pDt(456,1,{456:1},AX),mZ(_1t,"EndLabelSorter/LabelGroup",456),pDt(1553,1,{},gn),TWt.Kb=function(t){return _E(),new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"EndLabelSorter/lambda$0$Type",1553),pDt(1554,1,FKt,pn),TWt.Mb=function(t){return _E(),zz(t,10).k==(cTt(),Sse)},mZ(_1t,"EndLabelSorter/lambda$1$Type",1554),pDt(1555,1,dKt,bn),TWt.td=function(t){uTt(zz(t,10))},mZ(_1t,"EndLabelSorter/lambda$2$Type",1555),pDt(1556,1,FKt,wn),TWt.Mb=function(t){return _E(),UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),YCe))},mZ(_1t,"EndLabelSorter/lambda$3$Type",1556),pDt(1557,1,FKt,mn),TWt.Mb=function(t){return _E(),UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),ZCe))},mZ(_1t,"EndLabelSorter/lambda$4$Type",1557),pDt(1503,1,e1t,yn),TWt.pf=function(t,e){Mqt(this,zz(t,37))},TWt.b=0,TWt.c=0,mZ(_1t,"FinalSplineBendpointsCalculator",1503),pDt(1504,1,{},vn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$0$Type",1504),pDt(1505,1,{},xn),TWt.Kb=function(t){return new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$1$Type",1505),pDt(1506,1,FKt,kn),TWt.Mb=function(t){return!d5(zz(t,17))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$2$Type",1506),pDt(1507,1,FKt,_n),TWt.Mb=function(t){return LP(zz(t,17),(hWt(),Nfe))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$3$Type",1507),pDt(1508,1,dKt,np),TWt.td=function(t){YRt(this.a,zz(t,128))},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$4$Type",1508),pDt(1509,1,dKt,An),TWt.td=function(t){JCt(zz(t,17).a)},mZ(_1t,"FinalSplineBendpointsCalculator/lambda$5$Type",1509),pDt(792,1,e1t,ip),TWt.pf=function(t,e){XHt(this,zz(t,37),e)},mZ(_1t,"GraphTransformer",792),pDt(511,22,{3:1,35:1,22:1,511:1},JT);var Gse,Yse,Zse,Wse=qnt(_1t,"GraphTransformer/Mode",511,Zte,sQ,ez);pDt(1510,1,e1t,En),TWt.pf=function(t,e){iPt(zz(t,37),e)},mZ(_1t,"HierarchicalNodeResizingProcessor",1510),pDt(1511,1,e1t,Tn),TWt.pf=function(t,e){drt(zz(t,37),e)},mZ(_1t,"HierarchicalPortConstraintProcessor",1511),pDt(1512,1,TVt,Cn),TWt.ue=function(t,e){return Mwt(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortConstraintProcessor/NodeComparator",1512),pDt(1513,1,e1t,Sn),TWt.pf=function(t,e){_zt(zz(t,37),e)},mZ(_1t,"HierarchicalPortDummySizeProcessor",1513),pDt(1514,1,e1t,In),TWt.pf=function(t,e){JBt(this,zz(t,37),e)},TWt.a=0,mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter",1514),pDt(1515,1,TVt,Mn),TWt.ue=function(t,e){return jN(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter/1",1515),pDt(1516,1,TVt,Dn),TWt.ue=function(t,e){return C7(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"HierarchicalPortOrthogonalEdgeRouter/2",1516),pDt(1517,1,e1t,On),TWt.pf=function(t,e){AEt(zz(t,37),e)},mZ(_1t,"HierarchicalPortPositionProcessor",1517),pDt(1518,1,e1t,Vl),TWt.pf=function(t,e){aZt(this,zz(t,37))},TWt.a=0,TWt.c=0,mZ(_1t,"HighDegreeNodeLayeringProcessor",1518),pDt(571,1,{571:1},Ln),TWt.b=-1,TWt.d=-1,mZ(_1t,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",571),pDt(1519,1,{},Nn),TWt.Kb=function(t){return Hj(),fdt(zz(t,10))},TWt.Fb=function(t){return this===t},mZ(_1t,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1519),pDt(1520,1,{},Pn),TWt.Kb=function(t){return Hj(),ddt(zz(t,10))},TWt.Fb=function(t){return this===t},mZ(_1t,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1520),pDt(1526,1,e1t,Bn),TWt.pf=function(t,e){b$t(this,zz(t,37),e)},mZ(_1t,"HyperedgeDummyMerger",1526),pDt(793,1,{},Fj),TWt.a=!1,TWt.b=!1,TWt.c=!1,mZ(_1t,"HyperedgeDummyMerger/MergeState",793),pDt(1527,1,{},Fn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"HyperedgeDummyMerger/lambda$0$Type",1527),pDt(1528,1,{},Rn),TWt.Kb=function(t){return new FH(null,new g1(zz(t,10).j,16))},mZ(_1t,"HyperedgeDummyMerger/lambda$1$Type",1528),pDt(1529,1,dKt,jn),TWt.td=function(t){zz(t,11).p=-1},mZ(_1t,"HyperedgeDummyMerger/lambda$2$Type",1529),pDt(1530,1,e1t,$n),TWt.pf=function(t,e){g$t(zz(t,37),e)},mZ(_1t,"HypernodesProcessor",1530),pDt(1531,1,e1t,zn),TWt.pf=function(t,e){p$t(zz(t,37),e)},mZ(_1t,"InLayerConstraintProcessor",1531),pDt(1532,1,e1t,qn),TWt.pf=function(t,e){Nat(zz(t,37),e)},mZ(_1t,"InnermostNodeMarginCalculator",1532),pDt(1533,1,e1t,Hn),TWt.pf=function(t,e){XGt(this,zz(t,37))},TWt.a=jXt,TWt.b=jXt,TWt.c=RXt,TWt.d=RXt;var Kse,Xse,Vse,Qse,Jse,tce,ece,nce,ice,rce,ace,oce,sce,cce,uce,lce,hce,fce,dce,gce,pce,bce,wce,mce,yce,vce,xce,kce,_ce,Ace,Ece,Tce,Cce,Sce,Ice,Mce,Dce,Oce,Lce,Nce,Pce,Bce,Fce,Rce,jce,$ce,zce,qce,Hce,Uce,Gce,Yce,Zce,Wce,Kce,Xce,Vce,Qce=mZ(_1t,"InteractiveExternalPortPositioner",1533);pDt(1534,1,{},Un),TWt.Kb=function(t){return zz(t,17).d.i},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$0$Type",1534),pDt(1535,1,{},rp),TWt.Kb=function(t){return HN(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$1$Type",1535),pDt(1536,1,{},Gn),TWt.Kb=function(t){return zz(t,17).c.i},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$2$Type",1536),pDt(1537,1,{},ap),TWt.Kb=function(t){return UN(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$3$Type",1537),pDt(1538,1,{},op),TWt.Kb=function(t){return WF(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$4$Type",1538),pDt(1539,1,{},sp),TWt.Kb=function(t){return KF(this.a,EB(t))},TWt.Fb=function(t){return this===t},mZ(_1t,"InteractiveExternalPortPositioner/lambda$5$Type",1539),pDt(77,22,{3:1,35:1,22:1,77:1,234:1},tC),TWt.Kf=function(){switch(this.g){case 15:return new pa;case 22:return new ba;case 47:return new ya;case 28:case 35:return new ni;case 32:return new Ve;case 42:return new tn;case 1:return new en;case 41:return new nn;case 56:return new ip((Crt(),Hse));case 0:return new ip((Crt(),qse));case 2:return new rn;case 54:return new an;case 33:return new un;case 51:return new yn;case 55:return new En;case 13:return new Tn;case 38:return new Sn;case 44:return new In;case 40:return new On;case 9:return new Vl;case 49:return new cP;case 37:return new Bn;case 43:return new $n;case 27:return new zn;case 30:return new qn;case 3:return new Hn;case 18:return new Zn;case 29:return new Wn;case 5:return new Ql;case 50:return new Yn;case 34:return new Jl;case 36:return new ii;case 52:return new Kl;case 11:return new ai;case 7:return new eh;case 39:return new oi;case 45:return new si;case 16:return new ci;case 10:return new ui;case 48:return new hi;case 21:return new fi;case 23:return new Nv((uit(),Dye));case 8:return new gi;case 12:return new bi;case 4:return new wi;case 19:return new ah;case 17:return new Ci;case 53:return new Si;case 6:return new zi;case 25:return new oy;case 46:return new Ni;case 31:return new PF;case 14:return new Ki;case 26:return new Ta;case 20:return new tr;case 24:return new Nv((uit(),Oye));default:throw qw(new jv(T1t+(null!=this.f?this.f:""+this.g)))}};var Jce,tue,eue,nue,iue,rue,aue,oue,sue=qnt(_1t,C1t,77,Zte,ANt,tz);pDt(1540,1,e1t,Zn),TWt.pf=function(t,e){JGt(zz(t,37),e)},mZ(_1t,"InvertedPortProcessor",1540),pDt(1541,1,e1t,Wn),TWt.pf=function(t,e){NRt(zz(t,37),e)},mZ(_1t,"LabelAndNodeSizeProcessor",1541),pDt(1542,1,FKt,Kn),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"LabelAndNodeSizeProcessor/lambda$0$Type",1542),pDt(1543,1,FKt,Xn),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Ese)},mZ(_1t,"LabelAndNodeSizeProcessor/lambda$1$Type",1543),pDt(1544,1,dKt,Rj),TWt.td=function(t){jE(this.b,this.a,this.c,zz(t,10))},TWt.a=!1,TWt.c=!1,mZ(_1t,"LabelAndNodeSizeProcessor/lambda$2$Type",1544),pDt(1545,1,e1t,Ql),TWt.pf=function(t,e){fGt(zz(t,37),e)},mZ(_1t,"LabelDummyInserter",1545),pDt(1546,1,UVt,Vn),TWt.Lb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),GCe))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return UI(vEt(zz(t,70),(HZt(),Vpe)))===UI((Ret(),GCe))},mZ(_1t,"LabelDummyInserter/1",1546),pDt(1547,1,e1t,Yn),TWt.pf=function(t,e){SHt(zz(t,37),e)},mZ(_1t,"LabelDummyRemover",1547),pDt(1548,1,FKt,Qn),TWt.Mb=function(t){return Hv(AB(vEt(zz(t,70),(HZt(),Xpe))))},mZ(_1t,"LabelDummyRemover/lambda$0$Type",1548),pDt(1359,1,e1t,Jl),TWt.pf=function(t,e){EUt(this,zz(t,37),e)},TWt.a=null,mZ(_1t,"LabelDummySwitcher",1359),pDt(286,1,{286:1},oRt),TWt.c=0,TWt.d=null,TWt.f=0,mZ(_1t,"LabelDummySwitcher/LabelDummyInfo",286),pDt(1360,1,{},Jn),TWt.Kb=function(t){return Mrt(),new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"LabelDummySwitcher/lambda$0$Type",1360),pDt(1361,1,FKt,ti),TWt.Mb=function(t){return Mrt(),zz(t,10).k==(cTt(),Tse)},mZ(_1t,"LabelDummySwitcher/lambda$1$Type",1361),pDt(1362,1,{},lp),TWt.Kb=function(t){return ZB(this.a,zz(t,10))},mZ(_1t,"LabelDummySwitcher/lambda$2$Type",1362),pDt(1363,1,dKt,hp),TWt.td=function(t){VZ(this.a,zz(t,286))},mZ(_1t,"LabelDummySwitcher/lambda$3$Type",1363),pDt(1364,1,TVt,ei),TWt.ue=function(t,e){return LG(zz(t,286),zz(e,286))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"LabelDummySwitcher/lambda$4$Type",1364),pDt(791,1,e1t,ni),TWt.pf=function(t,e){V6(zz(t,37),e)},mZ(_1t,"LabelManagementProcessor",791),pDt(1549,1,e1t,ii),TWt.pf=function(t,e){PPt(zz(t,37),e)},mZ(_1t,"LabelSideSelector",1549),pDt(1550,1,FKt,ri),TWt.Mb=function(t){return Hv(AB(vEt(zz(t,70),(HZt(),Xpe))))},mZ(_1t,"LabelSideSelector/lambda$0$Type",1550),pDt(1558,1,e1t,ai),TWt.pf=function(t,e){Azt(zz(t,37),e)},mZ(_1t,"LayerConstraintPostprocessor",1558),pDt(1559,1,e1t,eh),TWt.pf=function(t,e){aOt(zz(t,37),e)},mZ(_1t,"LayerConstraintPreprocessor",1559),pDt(360,22,{3:1,35:1,22:1,360:1},eC);var cue,uue,lue,hue,fue,due,gue,pue,bue,wue=qnt(_1t,"LayerConstraintPreprocessor/HiddenNodeConnections",360,Zte,n3,Gj);pDt(1560,1,e1t,oi),TWt.pf=function(t,e){AHt(zz(t,37),e)},mZ(_1t,"LayerSizeAndGraphHeightCalculator",1560),pDt(1561,1,e1t,si),TWt.pf=function(t,e){OLt(zz(t,37),e)},mZ(_1t,"LongEdgeJoiner",1561),pDt(1562,1,e1t,ci),TWt.pf=function(t,e){Kqt(zz(t,37),e)},mZ(_1t,"LongEdgeSplitter",1562),pDt(1563,1,e1t,ui),TWt.pf=function(t,e){SUt(this,zz(t,37),e)},TWt.d=0,TWt.e=0,TWt.i=0,TWt.j=0,TWt.k=0,TWt.n=0,mZ(_1t,"NodePromotion",1563),pDt(1564,1,{},li),TWt.Kb=function(t){return zz(t,46),lN(),!0},TWt.Fb=function(t){return this===t},mZ(_1t,"NodePromotion/lambda$0$Type",1564),pDt(1565,1,{},cp),TWt.Kb=function(t){return oK(this.a,zz(t,46))},TWt.Fb=function(t){return this===t},TWt.a=0,mZ(_1t,"NodePromotion/lambda$1$Type",1565),pDt(1566,1,{},up),TWt.Kb=function(t){return sK(this.a,zz(t,46))},TWt.Fb=function(t){return this===t},TWt.a=0,mZ(_1t,"NodePromotion/lambda$2$Type",1566),pDt(1567,1,e1t,hi),TWt.pf=function(t,e){WYt(zz(t,37),e)},mZ(_1t,"NorthSouthPortPostprocessor",1567),pDt(1568,1,e1t,fi),TWt.pf=function(t,e){TYt(zz(t,37),e)},mZ(_1t,"NorthSouthPortPreprocessor",1568),pDt(1569,1,TVt,di),TWt.ue=function(t,e){return tst(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"NorthSouthPortPreprocessor/lambda$0$Type",1569),pDt(1570,1,e1t,gi),TWt.pf=function(t,e){Ljt(zz(t,37),e)},mZ(_1t,"PartitionMidprocessor",1570),pDt(1571,1,FKt,pi),TWt.Mb=function(t){return LP(zz(t,10),(HZt(),Wbe))},mZ(_1t,"PartitionMidprocessor/lambda$0$Type",1571),pDt(1572,1,dKt,fp),TWt.td=function(t){OX(this.a,zz(t,10))},mZ(_1t,"PartitionMidprocessor/lambda$1$Type",1572),pDt(1573,1,e1t,bi),TWt.pf=function(t,e){pNt(zz(t,37),e)},mZ(_1t,"PartitionPostprocessor",1573),pDt(1574,1,e1t,wi),TWt.pf=function(t,e){PMt(zz(t,37),e)},mZ(_1t,"PartitionPreprocessor",1574),pDt(1575,1,FKt,mi),TWt.Mb=function(t){return LP(zz(t,10),(HZt(),Wbe))},mZ(_1t,"PartitionPreprocessor/lambda$0$Type",1575),pDt(1576,1,{},yi),TWt.Kb=function(t){return new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(_1t,"PartitionPreprocessor/lambda$1$Type",1576),pDt(1577,1,FKt,vi),TWt.Mb=function(t){return Nbt(zz(t,17))},mZ(_1t,"PartitionPreprocessor/lambda$2$Type",1577),pDt(1578,1,dKt,xi),TWt.td=function(t){Rst(zz(t,17))},mZ(_1t,"PartitionPreprocessor/lambda$3$Type",1578),pDt(1579,1,e1t,ah),TWt.pf=function(t,e){cjt(zz(t,37),e)},mZ(_1t,"PortListSorter",1579),pDt(1580,1,{},ki),TWt.Kb=function(t){return Yut(),zz(t,11).e},mZ(_1t,"PortListSorter/lambda$0$Type",1580),pDt(1581,1,{},_i),TWt.Kb=function(t){return Yut(),zz(t,11).g},mZ(_1t,"PortListSorter/lambda$1$Type",1581),pDt(1582,1,TVt,Ai),TWt.ue=function(t,e){return A4(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$2$Type",1582),pDt(1583,1,TVt,Ei),TWt.ue=function(t,e){return Dvt(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$3$Type",1583),pDt(1584,1,TVt,Ti),TWt.ue=function(t,e){return e$t(zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"PortListSorter/lambda$4$Type",1584),pDt(1585,1,e1t,Ci),TWt.pf=function(t,e){KDt(zz(t,37),e)},mZ(_1t,"PortSideProcessor",1585),pDt(1586,1,e1t,Si),TWt.pf=function(t,e){MFt(zz(t,37),e)},mZ(_1t,"ReversedEdgeRestorer",1586),pDt(1591,1,e1t,oy),TWt.pf=function(t,e){Qyt(this,zz(t,37),e)},mZ(_1t,"SelfLoopPortRestorer",1591),pDt(1592,1,{},Ii),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopPortRestorer/lambda$0$Type",1592),pDt(1593,1,FKt,Mi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopPortRestorer/lambda$1$Type",1593),pDt(1594,1,FKt,Di),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopPortRestorer/lambda$2$Type",1594),pDt(1595,1,{},Oi),TWt.Kb=function(t){return zz(vEt(zz(t,10),(hWt(),Mfe)),403)},mZ(_1t,"SelfLoopPortRestorer/lambda$3$Type",1595),pDt(1596,1,dKt,dp),TWt.td=function(t){CTt(this.a,zz(t,403))},mZ(_1t,"SelfLoopPortRestorer/lambda$4$Type",1596),pDt(794,1,dKt,Li),TWt.td=function(t){eCt(zz(t,101))},mZ(_1t,"SelfLoopPortRestorer/lambda$5$Type",794),pDt(1597,1,e1t,Ni),TWt.pf=function(t,e){Nwt(zz(t,37),e)},mZ(_1t,"SelfLoopPostProcessor",1597),pDt(1598,1,{},Pi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopPostProcessor/lambda$0$Type",1598),pDt(1599,1,FKt,Bi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopPostProcessor/lambda$1$Type",1599),pDt(1600,1,FKt,Fi),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopPostProcessor/lambda$2$Type",1600),pDt(1601,1,dKt,Ri),TWt.td=function(t){Nkt(zz(t,10))},mZ(_1t,"SelfLoopPostProcessor/lambda$3$Type",1601),pDt(1602,1,{},ji),TWt.Kb=function(t){return new FH(null,new g1(zz(t,101).f,1))},mZ(_1t,"SelfLoopPostProcessor/lambda$4$Type",1602),pDt(1603,1,dKt,gp),TWt.td=function(t){o3(this.a,zz(t,409))},mZ(_1t,"SelfLoopPostProcessor/lambda$5$Type",1603),pDt(1604,1,FKt,$i),TWt.Mb=function(t){return!!zz(t,101).i},mZ(_1t,"SelfLoopPostProcessor/lambda$6$Type",1604),pDt(1605,1,dKt,pp),TWt.td=function(t){Av(this.a,zz(t,101))},mZ(_1t,"SelfLoopPostProcessor/lambda$7$Type",1605),pDt(1587,1,e1t,zi),TWt.pf=function(t,e){tLt(zz(t,37),e)},mZ(_1t,"SelfLoopPreProcessor",1587),pDt(1588,1,{},qi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,101).f,1))},mZ(_1t,"SelfLoopPreProcessor/lambda$0$Type",1588),pDt(1589,1,{},Hi),TWt.Kb=function(t){return zz(t,409).a},mZ(_1t,"SelfLoopPreProcessor/lambda$1$Type",1589),pDt(1590,1,dKt,Ui),TWt.td=function(t){HO(zz(t,17))},mZ(_1t,"SelfLoopPreProcessor/lambda$2$Type",1590),pDt(1606,1,e1t,PF),TWt.pf=function(t,e){lTt(this,zz(t,37),e)},mZ(_1t,"SelfLoopRouter",1606),pDt(1607,1,{},Gi),TWt.Kb=function(t){return new FH(null,new g1(zz(t,29).a,16))},mZ(_1t,"SelfLoopRouter/lambda$0$Type",1607),pDt(1608,1,FKt,Yi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SelfLoopRouter/lambda$1$Type",1608),pDt(1609,1,FKt,Zi),TWt.Mb=function(t){return LP(zz(t,10),(hWt(),Mfe))},mZ(_1t,"SelfLoopRouter/lambda$2$Type",1609),pDt(1610,1,{},Wi),TWt.Kb=function(t){return zz(vEt(zz(t,10),(hWt(),Mfe)),403)},mZ(_1t,"SelfLoopRouter/lambda$3$Type",1610),pDt(1611,1,dKt,nC),TWt.td=function(t){XK(this.a,this.b,zz(t,403))},mZ(_1t,"SelfLoopRouter/lambda$4$Type",1611),pDt(1612,1,e1t,Ki),TWt.pf=function(t,e){fPt(zz(t,37),e)},mZ(_1t,"SemiInteractiveCrossMinProcessor",1612),pDt(1613,1,FKt,Xi),TWt.Mb=function(t){return zz(t,10).k==(cTt(),Sse)},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1613),pDt(1614,1,FKt,Vi),TWt.Mb=function(t){return UH(zz(t,10))._b((HZt(),uwe))},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1614),pDt(1615,1,TVt,Qi),TWt.ue=function(t,e){return brt(zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1615),pDt(1616,1,{},Ji),TWt.Ce=function(t,e){return ZX(zz(t,10),zz(e,10))},mZ(_1t,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1616),pDt(1618,1,e1t,tr),TWt.pf=function(t,e){Tzt(zz(t,37),e)},mZ(_1t,"SortByInputModelProcessor",1618),pDt(1619,1,FKt,er),TWt.Mb=function(t){return 0!=zz(t,11).g.c.length},mZ(_1t,"SortByInputModelProcessor/lambda$0$Type",1619),pDt(1620,1,dKt,bp),TWt.td=function(t){fCt(this.a,zz(t,11))},mZ(_1t,"SortByInputModelProcessor/lambda$1$Type",1620),pDt(1693,803,{},wrt),TWt.Me=function(t){var e,n,i,r;switch(this.c=t,this.a.g){case 2:e=new Nw,QA(DK(new FH(null,new g1(this.c.a.b,16)),new pr),new sC(this,e)),mSt(this,new rr),Det(e,new ar),e.c=P8(Ote,HWt,1,0,5,1),QA(DK(new FH(null,new g1(this.c.a.b,16)),new or),new mp(e)),mSt(this,new sr),Det(e,new cr),e.c=P8(Ote,HWt,1,0,5,1),n=kO(rat(LK(new FH(null,new g1(this.c.a.b,16)),new yp(this))),new ur),QA(new FH(null,new g1(this.c.a.a,16)),new rC(n,e)),mSt(this,new hr),Det(e,new nr),e.c=P8(Ote,HWt,1,0,5,1);break;case 3:i=new Nw,mSt(this,new ir),r=kO(rat(LK(new FH(null,new g1(this.c.a.b,16)),new wp(this))),new lr),QA(DK(new FH(null,new g1(this.c.a.b,16)),new fr),new oC(r,i)),mSt(this,new dr),Det(i,new gr),i.c=P8(Ote,HWt,1,0,5,1);break;default:throw qw(new xm)}},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation",1693),pDt(1694,1,UVt,ir),TWt.Lb=function(t){return aL(zz(t,57).g,145)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1694),pDt(1695,1,{},wp),TWt.Fe=function(t){return GSt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1695),pDt(1703,1,RKt,iC),TWt.Vd=function(){zxt(this.a,this.b,-1)},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1703),pDt(1705,1,UVt,rr),TWt.Lb=function(t){return aL(zz(t,57).g,145)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1705),pDt(1706,1,dKt,ar),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1706),pDt(1707,1,FKt,or),TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1707),pDt(1709,1,dKt,mp),TWt.td=function(t){Adt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1709),pDt(1708,1,RKt,fC),TWt.Vd=function(){zxt(this.b,this.a,-1)},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1708),pDt(1710,1,UVt,sr),TWt.Lb=function(t){return aL(zz(t,57).g,10)},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1710),pDt(1711,1,dKt,cr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1711),pDt(1712,1,{},yp),TWt.Fe=function(t){return YSt(this.a,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1712),pDt(1713,1,{},ur),TWt.De=function(){return 0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1713),pDt(1696,1,{},lr),TWt.De=function(){return 0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1696),pDt(1715,1,dKt,rC),TWt.td=function(t){qU(this.a,this.b,zz(t,307))},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1715),pDt(1714,1,RKt,aC),TWt.Vd=function(){XDt(this.a,this.b,-1)},TWt.b=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1714),pDt(1716,1,UVt,hr),TWt.Lb=function(t){return zz(t,57),!0},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return zz(t,57),!0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1716),pDt(1717,1,dKt,nr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1717),pDt(1697,1,FKt,fr),TWt.Mb=function(t){return aL(zz(t,57).g,10)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1697),pDt(1699,1,dKt,oC),TWt.td=function(t){HU(this.a,this.b,zz(t,57))},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1699),pDt(1698,1,RKt,dC),TWt.Vd=function(){zxt(this.b,this.a,-1)},TWt.a=0,mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1698),pDt(1700,1,UVt,dr),TWt.Lb=function(t){return zz(t,57),!0},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return zz(t,57),!0},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1700),pDt(1701,1,dKt,gr),TWt.td=function(t){zz(t,365).Vd()},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1701),pDt(1702,1,FKt,pr),TWt.Mb=function(t){return aL(zz(t,57).g,145)},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1702),pDt(1704,1,dKt,sC),TWt.td=function(t){Eet(this.a,this.b,zz(t,57))},mZ(O1t,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1704),pDt(1521,1,e1t,cP),TWt.pf=function(t,e){oHt(this,zz(t,37),e)},mZ(O1t,"HorizontalGraphCompactor",1521),pDt(1522,1,{},vp),TWt.Oe=function(t,e){var n,i;return J9(t,e)?0:(n=h2(t),i=h2(e),n&&n.k==(cTt(),Ese)||i&&i.k==(cTt(),Ese)?0:YN(zz(vEt(this.a.a,(hWt(),Dfe)),304),n?n.k:(cTt(),Cse),i?i.k:(cTt(),Cse)))},TWt.Pe=function(t,e){var n,i;return J9(t,e)?1:(n=h2(t),i=h2(e),ZN(zz(vEt(this.a.a,(hWt(),Dfe)),304),n?n.k:(cTt(),Cse),i?i.k:(cTt(),Cse)))},mZ(O1t,"HorizontalGraphCompactor/1",1522),pDt(1523,1,{},br),TWt.Ne=function(t,e){return EE(),0==t.a.i},mZ(O1t,"HorizontalGraphCompactor/lambda$0$Type",1523),pDt(1524,1,{},xp),TWt.Ne=function(t,e){return jX(this.a,t,e)},mZ(O1t,"HorizontalGraphCompactor/lambda$1$Type",1524),pDt(1664,1,{},I9),mZ(O1t,"LGraphToCGraphTransformer",1664),pDt(1672,1,FKt,wr),TWt.Mb=function(t){return null!=t},mZ(O1t,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1672),pDt(1665,1,{},mr),TWt.Kb=function(t){return Uj(),qdt(vEt(zz(zz(t,57).g,10),(hWt(),pfe)))},mZ(O1t,"LGraphToCGraphTransformer/lambda$0$Type",1665),pDt(1666,1,{},yr),TWt.Kb=function(t){return Uj(),vht(zz(zz(t,57).g,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$1$Type",1666),pDt(1675,1,FKt,vr),TWt.Mb=function(t){return Uj(),aL(zz(t,57).g,10)},mZ(O1t,"LGraphToCGraphTransformer/lambda$10$Type",1675),pDt(1676,1,dKt,xr),TWt.td=function(t){RX(zz(t,57))},mZ(O1t,"LGraphToCGraphTransformer/lambda$11$Type",1676),pDt(1677,1,FKt,kr),TWt.Mb=function(t){return Uj(),aL(zz(t,57).g,145)},mZ(O1t,"LGraphToCGraphTransformer/lambda$12$Type",1677),pDt(1681,1,dKt,_r),TWt.td=function(t){yht(zz(t,57))},mZ(O1t,"LGraphToCGraphTransformer/lambda$13$Type",1681),pDt(1678,1,dKt,kp),TWt.td=function(t){sD(this.a,zz(t,8))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$14$Type",1678),pDt(1679,1,dKt,_p),TWt.td=function(t){uD(this.a,zz(t,110))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$15$Type",1679),pDt(1680,1,dKt,Ap),TWt.td=function(t){cD(this.a,zz(t,8))},TWt.a=0,mZ(O1t,"LGraphToCGraphTransformer/lambda$16$Type",1680),pDt(1682,1,{},Ar),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$17$Type",1682),pDt(1683,1,FKt,Er),TWt.Mb=function(t){return Uj(),d5(zz(t,17))},mZ(O1t,"LGraphToCGraphTransformer/lambda$18$Type",1683),pDt(1684,1,dKt,Ep),TWt.td=function(t){Ttt(this.a,zz(t,17))},mZ(O1t,"LGraphToCGraphTransformer/lambda$19$Type",1684),pDt(1668,1,dKt,Tp),TWt.td=function(t){f0(this.a,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$2$Type",1668),pDt(1685,1,{},Tr),TWt.Kb=function(t){return Uj(),new FH(null,new g1(zz(t,29).a,16))},mZ(O1t,"LGraphToCGraphTransformer/lambda$20$Type",1685),pDt(1686,1,{},Cr),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$21$Type",1686),pDt(1687,1,{},Sr),TWt.Kb=function(t){return Uj(),zz(vEt(zz(t,17),(hWt(),Nfe)),15)},mZ(O1t,"LGraphToCGraphTransformer/lambda$22$Type",1687),pDt(1688,1,FKt,Ir),TWt.Mb=function(t){return eP(zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$23$Type",1688),pDt(1689,1,dKt,Cp),TWt.td=function(t){SSt(this.a,zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$24$Type",1689),pDt(1667,1,dKt,cC),TWt.td=function(t){q3(this.a,this.b,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$3$Type",1667),pDt(1669,1,{},Mr),TWt.Kb=function(t){return Uj(),new FH(null,new g1(zz(t,29).a,16))},mZ(O1t,"LGraphToCGraphTransformer/lambda$4$Type",1669),pDt(1670,1,{},Dr),TWt.Kb=function(t){return Uj(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(O1t,"LGraphToCGraphTransformer/lambda$5$Type",1670),pDt(1671,1,{},Or),TWt.Kb=function(t){return Uj(),zz(vEt(zz(t,17),(hWt(),Nfe)),15)},mZ(O1t,"LGraphToCGraphTransformer/lambda$6$Type",1671),pDt(1673,1,dKt,Sp),TWt.td=function(t){jIt(this.a,zz(t,15))},mZ(O1t,"LGraphToCGraphTransformer/lambda$8$Type",1673),pDt(1674,1,dKt,uC),TWt.td=function(t){PO(this.a,this.b,zz(t,145))},mZ(O1t,"LGraphToCGraphTransformer/lambda$9$Type",1674),pDt(1663,1,{},Lr),TWt.Le=function(t){var e,n,i,r,a;for(this.a=t,this.d=new $m,this.c=P8(Hie,HWt,121,this.a.a.a.c.length,0,1),this.b=0,n=new Wd(this.a.a.a);n.a=b&&(Wz(o,rft(h)),y=n.Math.max(y,v[h-1]-f),c+=p,w+=v[h-1]-w,f=v[h-1],p=u[h]),p=n.Math.max(p,u[h]),++h;c+=p}(g=n.Math.min(1/y,1/e.b/c))>r&&(r=g,i=o)}return i},TWt.Wf=function(){return!1},mZ($1t,"MSDCutIndexHeuristic",802),pDt(1617,1,e1t,Ta),TWt.pf=function(t,e){gzt(zz(t,37),e)},mZ($1t,"SingleEdgeGraphWrapper",1617),pDt(227,22,{3:1,35:1,22:1,227:1},kC);var rle,ale,ole,sle=qnt(z1t,"CenterEdgeLabelPlacementStrategy",227,Zte,J8,Wj);pDt(422,22,{3:1,35:1,22:1,422:1},_C);var cle,ule,lle,hle,fle=qnt(z1t,"ConstraintCalculationStrategy",422,Zte,UV,Kj);pDt(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},AC),TWt.Kf=function(){return lIt(this)},TWt.Xf=function(){return lIt(this)};var dle,gle,ple,ble,wle=qnt(z1t,"CrossingMinimizationStrategy",314,Zte,A1,Xj);pDt(337,22,{3:1,35:1,22:1,337:1},EC);var mle,yle,vle,xle,kle,_le,Ale=qnt(z1t,"CuttingStrategy",337,Zte,E1,Jj);pDt(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},TC),TWt.Kf=function(){return RDt(this)},TWt.Xf=function(){return RDt(this)};var Ele,Tle,Cle,Sle=qnt(z1t,"CycleBreakingStrategy",335,Zte,L5,t$);pDt(419,22,{3:1,35:1,22:1,419:1},CC);var Ile,Mle,Dle,Ole,Lle=qnt(z1t,"DirectionCongruency",419,Zte,HV,e$);pDt(450,22,{3:1,35:1,22:1,450:1},SC);var Nle,Ple,Ble,Fle,Rle,jle,$le,zle=qnt(z1t,"EdgeConstraint",450,Zte,T1,n$);pDt(276,22,{3:1,35:1,22:1,276:1},IC);var qle,Hle,Ule,Gle=qnt(z1t,"EdgeLabelSideSelection",276,Zte,i7,i$);pDt(479,22,{3:1,35:1,22:1,479:1},MC);var Yle,Zle,Wle,Kle,Xle,Vle,Qle,Jle=qnt(z1t,"EdgeStraighteningStrategy",479,Zte,qV,r$);pDt(274,22,{3:1,35:1,22:1,274:1},DC);var the,ehe,nhe,ihe,rhe,ahe,ohe,she=qnt(z1t,"FixedAlignment",274,Zte,e7,a$);pDt(275,22,{3:1,35:1,22:1,275:1},OC);var che,uhe,lhe,hhe,fhe,dhe,ghe,phe,bhe,whe,mhe,yhe=qnt(z1t,"GraphCompactionStrategy",275,Zte,t7,o$);pDt(256,22,{3:1,35:1,22:1,256:1},LC);var vhe,xhe,khe,_he,Ahe=qnt(z1t,"GraphProperties",256,Zte,gat,s$);pDt(292,22,{3:1,35:1,22:1,292:1},NC);var Ehe,The,Che,She,Ihe=qnt(z1t,"GreedySwitchType",292,Zte,I1,c$);pDt(303,22,{3:1,35:1,22:1,303:1},PC);var Mhe,Dhe,Ohe,Lhe=qnt(z1t,"InLayerConstraint",303,Zte,S1,u$);pDt(420,22,{3:1,35:1,22:1,420:1},BC);var Nhe,Phe,Bhe,Fhe,Rhe,jhe,$he,zhe,qhe,Hhe,Uhe,Ghe,Yhe,Zhe,Whe,Khe,Xhe,Vhe,Qhe,Jhe,tfe,efe,nfe,ife,rfe,afe,ofe,sfe,cfe,ufe,lfe,hfe,ffe,dfe,gfe,pfe,bfe,wfe,mfe,yfe,vfe,xfe,kfe,_fe,Afe,Efe,Tfe,Cfe,Sfe,Ife,Mfe,Dfe,Ofe,Lfe,Nfe,Pfe,Bfe,Ffe,Rfe,jfe,$fe,zfe,qfe,Hfe,Ufe=qnt(z1t,"InteractiveReferencePoint",420,Zte,GV,l$);pDt(163,22,{3:1,35:1,22:1,163:1},zC);var Gfe,Yfe,Zfe,Wfe,Kfe,Xfe,Vfe,Qfe,Jfe,tde,ede,nde,ide,rde,ade,ode,sde,cde,ude,lde,hde,fde,dde,gde,pde,bde,wde,mde,yde,vde,xde,kde,_de,Ade,Ede,Tde,Cde,Sde,Ide,Mde,Dde,Ode,Lde,Nde,Pde,Bde,Fde,Rde,jde,$de,zde,qde,Hde,Ude,Gde,Yde,Zde,Wde,Kde,Xde,Vde,Qde,Jde,tge,ege,nge,ige,rge,age,oge,sge,cge,uge,lge,hge,fge,dge,gge,pge,bge,wge,mge,yge,vge,xge,kge,_ge,Age,Ege,Tge,Cge,Sge,Ige,Mge,Dge,Oge,Lge,Nge,Pge,Bge,Fge,Rge,jge,$ge,zge,qge,Hge,Uge,Gge,Yge,Zge,Wge,Kge,Xge,Vge,Qge,Jge,tpe,epe,npe,ipe,rpe,ape,ope,spe,cpe,upe,lpe,hpe,fpe,dpe,gpe,ppe,bpe,wpe,mpe,ype,vpe,xpe,kpe,_pe,Ape,Epe,Tpe,Cpe,Spe,Ipe,Mpe,Dpe,Ope,Lpe,Npe,Ppe,Bpe,Fpe,Rpe,jpe,$pe,zpe,qpe,Hpe,Upe,Gpe,Ype,Zpe,Wpe,Kpe,Xpe,Vpe,Qpe,Jpe,tbe,ebe,nbe,ibe,rbe,abe,obe,sbe,cbe,ube,lbe,hbe,fbe,dbe,gbe,pbe,bbe,wbe,mbe,ybe,vbe,xbe,kbe,_be,Abe,Ebe,Tbe,Cbe,Sbe,Ibe,Mbe,Dbe,Obe,Lbe,Nbe,Pbe,Bbe,Fbe,Rbe,jbe,$be,zbe,qbe,Hbe,Ube,Gbe,Ybe,Zbe,Wbe,Kbe,Xbe,Vbe,Qbe,Jbe,twe,ewe,nwe,iwe,rwe,awe,owe,swe,cwe,uwe,lwe,hwe,fwe,dwe,gwe,pwe,bwe,wwe,mwe,ywe,vwe,xwe,kwe,_we,Awe,Ewe,Twe,Cwe,Swe,Iwe,Mwe,Dwe,Owe,Lwe,Nwe,Pwe,Bwe,Fwe,Rwe,jwe,$we,zwe,qwe,Hwe,Uwe,Gwe,Ywe,Zwe,Wwe,Kwe,Xwe,Vwe,Qwe,Jwe,tme,eme,nme,ime=qnt(z1t,"LayerConstraint",163,Zte,B5,h$);pDt(848,1,VVt,uh),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z1t),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),Cde),(SCt(),bEe)),Lle),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W1t),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(lN(),!1)),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K1t),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),Xde),bEe),Ufe),edt(lEe)))),o2(t,K1t,i0t,Qde),o2(t,K1t,d0t,Vde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X1t),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,V1t),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Ck(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q1t),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),gEe),kee),edt(hEe)),Sst(Ux(Vee,1),lKt,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J1t),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),Pge),bEe),Gme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,t0t),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),rft(7)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e0t),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n0t),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i0t),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),Ede),bEe),Sle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,r0t),f2t),"Node Layering Strategy"),"Strategy for node layering."),dge),bEe),cme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,a0t),f2t),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),ige),bEe),ime),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,o0t),f2t),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,s0t),f2t),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c0t),d2t),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),rft(4)),mEe),Oee),edt(lEe)))),o2(t,c0t,r0t,oge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u0t),d2t),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),rft(2)),mEe),Oee),edt(lEe)))),o2(t,u0t,r0t,cge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l0t),g2t),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),hge),bEe),Bme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,h0t),g2t),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),rft(0)),mEe),Oee),edt(lEe)))),o2(t,h0t,l0t,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,f0t),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),rft(FWt)),mEe),Oee),edt(lEe)))),o2(t,f0t,r0t,tge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,d0t),p2t),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),_de),bEe),wle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,g0t),p2t),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,p0t),p2t),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),pEe),See),edt(lEe)))),o2(t,p0t,b2t,wde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,b0t),p2t),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),gEe),kee),edt(lEe)))),o2(t,b0t,d0t,xde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,w0t),p2t),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,m0t),p2t),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),rft(-1)),mEe),Oee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y0t),w2t),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),rft(40)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v0t),w2t),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),gde),bEe),Ihe),edt(lEe)))),o2(t,v0t,d0t,pde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x0t),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),lde),bEe),Ihe),edt(lEe)))),o2(t,x0t,d0t,hde),o2(t,x0t,b2t,fde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,k0t),m2t),"Node Placement Strategy"),"Strategy for node placement."),Lge),bEe),Dme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,_0t),m2t),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),gEe),kee),edt(lEe)))),o2(t,_0t,k0t,_ge),o2(t,_0t,k0t,Age),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,A0t),y2t),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),wge),bEe),Jle),edt(lEe)))),o2(t,A0t,k0t,mge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,E0t),y2t),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),vge),bEe),she),edt(lEe)))),o2(t,E0t,k0t,xge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,T0t),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),pEe),See),edt(lEe)))),o2(t,T0t,k0t,Tge),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,C0t),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),bEe),xme),edt(uEe)))),o2(t,C0t,k0t,Dge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,S0t),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),Ige),bEe),xme),edt(lEe)))),o2(t,S0t,k0t,Mge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,I0t),v2t),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),Pde),bEe),tye),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,M0t),v2t),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),Fde),bEe),aye),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,D0t),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),jde),bEe),lye),edt(lEe)))),o2(t,D0t,x2t,$de),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,O0t),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),pEe),See),edt(lEe)))),o2(t,O0t,x2t,qde),o2(t,O0t,D0t,Hde),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,L0t),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),pEe),See),edt(lEe)))),o2(t,L0t,x2t,Lde),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,N0t),k2t),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,P0t),k2t),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,B0t),k2t),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,F0t),k2t),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,R0t),_2t),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,j0t),_2t),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,$0t),_2t),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),rft(0)),mEe),Oee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,z0t),A2t),FQt),"Tries to further compact components (disconnected sub-graphs)."),!1),gEe),kee),edt(lEe)))),o2(t,z0t,kJt,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,q0t),E2t),"Post Compaction Strategy"),T2t),Vfe),bEe),yhe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,H0t),E2t),"Post Compaction Constraint Calculation"),T2t),Kfe),bEe),fle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,U0t),C2t),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,G0t),C2t),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),rft(16)),mEe),Oee),edt(lEe)))),o2(t,G0t,U0t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Y0t),C2t),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),rft(5)),mEe),Oee),edt(lEe)))),o2(t,Y0t,U0t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z0t),S2t),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),dpe),bEe),Tye),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W0t),S2t),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),pEe),See),edt(lEe)))),o2(t,W0t,Z0t,Yge),o2(t,W0t,Z0t,Zge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K0t),S2t),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),pEe),See),edt(lEe)))),o2(t,K0t,Z0t,Kge),o2(t,K0t,Z0t,Xge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X0t),I2t),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),ipe),bEe),Ale),edt(lEe)))),o2(t,X0t,Z0t,rpe),o2(t,X0t,Z0t,ape),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,V0t),I2t),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),yEe),Rte),edt(lEe)))),o2(t,V0t,X0t,Qge),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q0t),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),tpe),mEe),Oee),edt(lEe)))),o2(t,Q0t,X0t,epe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J0t),M2t),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),mpe),bEe),pye),edt(lEe)))),o2(t,J0t,Z0t,ype),o2(t,J0t,Z0t,vpe),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,t2t),M2t),"Valid Indices for Wrapping"),null),yEe),Rte),edt(lEe)))),o2(t,t2t,Z0t,ppe),o2(t,t2t,Z0t,bpe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e2t),D2t),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),gEe),kee),edt(lEe)))),o2(t,e2t,Z0t,upe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n2t),D2t),"Distance Penalty When Improving Cuts"),null),2),pEe),See),edt(lEe)))),o2(t,n2t,Z0t,spe),o2(t,n2t,e2t,!0),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i2t),D2t),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),gEe),kee),edt(lEe)))),o2(t,i2t,Z0t,hpe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,r2t),O2t),"Edge Label Side Selection"),"Method to decide on edge label sides."),Dde),bEe),Gle),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,a2t),O2t),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),Ide),bEe),sle),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,o2t),L2t),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),ode),bEe),$me),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,s2t),L2t),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c2t),L2t),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),Jfe),bEe),yse),edt(lEe)))),o2(t,c2t,kJt,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u2t),L2t),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),ide),bEe),gme),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l2t),L2t),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),pEe),See),edt(lEe)))),o2(t,l2t,o2t,null),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,h2t),L2t),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),pEe),See),edt(lEe)))),o2(t,h2t,o2t,null),yWt((new fh,t))},mZ(z1t,"LayeredMetaDataProvider",848),pDt(986,1,VVt,fh),TWt.Qe=function(t){yWt(t)},mZ(z1t,"LayeredOptions",986),pDt(987,1,{},Sa),TWt.$e=function(){return new Ym},TWt._e=function(t){},mZ(z1t,"LayeredOptions/LayeredFactory",987),pDt(1372,1,{}),TWt.a=0,mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder",1372),pDt(779,1372,{},cgt),mZ(z1t,"LayeredSpacings/LayeredSpacingsBuilder",779),pDt(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},FC),TWt.Kf=function(){return aLt(this)},TWt.Xf=function(){return aLt(this)};var rme,ame,ome,sme,cme=qnt(z1t,"LayeringStrategy",313,Zte,n7,f$);pDt(378,22,{3:1,35:1,22:1,378:1},RC);var ume,lme,hme,fme,dme,gme=qnt(z1t,"LongEdgeOrderingStrategy",378,Zte,_1,d$);pDt(197,22,{3:1,35:1,22:1,197:1},jC);var pme,bme,wme,mme,yme,vme,xme=qnt(z1t,"NodeFlexibility",197,Zte,x3,g$);pDt(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},$C),TWt.Kf=function(){return FDt(this)},TWt.Xf=function(){return FDt(this)};var kme,_me,Ame,Eme,Tme,Cme,Sme,Ime,Mme,Dme=qnt(z1t,"NodePlacementStrategy",315,Zte,O5,v$);pDt(260,22,{3:1,35:1,22:1,260:1},qC);var Ome,Lme,Nme,Pme,Bme=qnt(z1t,"NodePromotionStrategy",260,Zte,qet,b$);pDt(339,22,{3:1,35:1,22:1,339:1},HC);var Fme,Rme,jme,$me=qnt(z1t,"OrderingStrategy",339,Zte,D1,w$);pDt(421,22,{3:1,35:1,22:1,421:1},UC);var zme,qme,Hme,Ume,Gme=qnt(z1t,"PortSortingStrategy",421,Zte,YV,m$);pDt(452,22,{3:1,35:1,22:1,452:1},GC);var Yme,Zme,Wme,Kme,Xme=qnt(z1t,"PortType",452,Zte,M1,p$);pDt(375,22,{3:1,35:1,22:1,375:1},YC);var Vme,Qme,Jme,tye=qnt(z1t,"SelfLoopDistributionStrategy",375,Zte,O1,y$);pDt(376,22,{3:1,35:1,22:1,376:1},ZC);var eye,nye,iye,rye,aye=qnt(z1t,"SelfLoopOrderingStrategy",376,Zte,zV,x$);pDt(304,1,{304:1},lUt),mZ(z1t,"Spacings",304),pDt(336,22,{3:1,35:1,22:1,336:1},WC);var oye,sye,cye,uye,lye=qnt(z1t,"SplineRoutingMode",336,Zte,N1,k$);pDt(338,22,{3:1,35:1,22:1,338:1},KC);var hye,fye,dye,gye,pye=qnt(z1t,"ValidifyStrategy",338,Zte,P1,_$);pDt(377,22,{3:1,35:1,22:1,377:1},XC);var bye,wye,mye,yye,vye,xye,kye,_ye,Aye,Eye,Tye=qnt(z1t,"WrappingStrategy",377,Zte,L1,A$);pDt(1383,1,A3t,dh),TWt.Yf=function(t){return zz(t,37),wye},TWt.pf=function(t,e){Jqt(this,zz(t,37),e)},mZ(E3t,"DepthFirstCycleBreaker",1383),pDt(782,1,A3t,RU),TWt.Yf=function(t){return zz(t,37),mye},TWt.pf=function(t,e){ZZt(this,zz(t,37),e)},TWt.Zf=function(t){return zz(PH(t,mmt(this.d,t.c.length)),10)},mZ(E3t,"GreedyCycleBreaker",782),pDt(1386,782,A3t,AI),TWt.Zf=function(t){var e,n,i,r;for(r=null,e=FWt,i=new Wd(t);i.a1&&(Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),(HZt(),Ppe))))?ROt(t,this.d,zz(this,660)):(TX(),yO(t,this.d)),qot(this.e,t))},TWt.Sf=function(t,e,n,i){var r,a,o,s,c,u,l;for(e!=QH(n,t.length)&&(a=t[e-(n?1:-1)],U6(this.f,a,n?(sit(),Hme):(sit(),qme))),r=t[e][0],l=!i||r.k==(cTt(),Ese),u=s6(t[e]),this.ag(u,l,!1,n),o=0,c=new Wd(u);c.a"),t0?sJ(this.a,t[e-1],t[e]):!n&&e1&&(Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),(HZt(),Ppe))))?ROt(t,this.d,this):(TX(),yO(t,this.d)),Hv(AB(vEt(mW((f1(0,t.c.length),zz(t.c[0],10))),Ppe)))||qot(this.e,t))},mZ(I3t,"ModelOrderBarycenterHeuristic",660),pDt(1803,1,TVt,Wp),TWt.ue=function(t,e){return jTt(this.a,zz(t,10),zz(e,10))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(I3t,"ModelOrderBarycenterHeuristic/lambda$0$Type",1803),pDt(1403,1,A3t,xh),TWt.Yf=function(t){var e;return zz(t,37),pH(e=xD(Bye),(xEt(),joe),(dWt(),zce)),e},TWt.pf=function(t,e){yV((zz(t,37),e))},mZ(I3t,"NoCrossingMinimizer",1403),pDt(796,402,C3t,Fk),TWt.$f=function(t,e,n){var i,r,a,o,s,c,u,l,h,f,d;switch(h=this.g,n.g){case 1:for(r=0,a=0,l=new Wd(t.j);l.a1&&(r.j==(kYt(),cIe)?this.b[t]=!0:r.j==SIe&&t>0&&(this.b[t-1]=!0))},TWt.f=0,mZ(N1t,"AllCrossingsCounter",1798),pDt(587,1,{},vrt),TWt.b=0,TWt.d=0,mZ(N1t,"BinaryIndexedTree",587),pDt(524,1,{},XR),mZ(N1t,"CrossingsCounter",524),pDt(1906,1,TVt,Kp),TWt.ue=function(t,e){return ZH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$0$Type",1906),pDt(1907,1,TVt,Xp),TWt.ue=function(t,e){return WH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$1$Type",1907),pDt(1908,1,TVt,Vp),TWt.ue=function(t,e){return KH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$2$Type",1908),pDt(1909,1,TVt,Qp),TWt.ue=function(t,e){return XH(this.a,zz(t,11),zz(e,11))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(N1t,"CrossingsCounter/lambda$3$Type",1909),pDt(1910,1,dKt,Jp),TWt.td=function(t){w9(this.a,zz(t,11))},mZ(N1t,"CrossingsCounter/lambda$4$Type",1910),pDt(1911,1,FKt,tb),TWt.Mb=function(t){return vI(this.a,zz(t,11))},mZ(N1t,"CrossingsCounter/lambda$5$Type",1911),pDt(1912,1,dKt,eb),TWt.td=function(t){yI(this,t)},mZ(N1t,"CrossingsCounter/lambda$6$Type",1912),pDt(1913,1,dKt,JC),TWt.td=function(t){var e;lq(),p3(this.b,(e=this.a,zz(t,11),e))},mZ(N1t,"CrossingsCounter/lambda$7$Type",1913),pDt(826,1,UVt,Pa),TWt.Lb=function(t){return lq(),LP(zz(t,11),(hWt(),_fe))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return lq(),LP(zz(t,11),(hWt(),_fe))},mZ(N1t,"CrossingsCounter/lambda$8$Type",826),pDt(1905,1,{},nb),mZ(N1t,"HyperedgeCrossingsCounter",1905),pDt(467,1,{35:1,467:1},BF),TWt.wd=function(t){return ybt(this,zz(t,467))},TWt.b=0,TWt.c=0,TWt.e=0,TWt.f=0;var $ye=mZ(N1t,"HyperedgeCrossingsCounter/Hyperedge",467);pDt(362,1,{35:1,362:1},HK),TWt.wd=function(t){return dOt(this,zz(t,362))},TWt.b=0,TWt.c=0;var zye,qye,Hye=mZ(N1t,"HyperedgeCrossingsCounter/HyperedgeCorner",362);pDt(523,22,{3:1,35:1,22:1,523:1},QC);var Uye,Gye,Yye,Zye,Wye,Kye=qnt(N1t,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",523,Zte,ZV,T$);pDt(1405,1,A3t,hh),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Gye:null},TWt.pf=function(t,e){dkt(this,zz(t,37),e)},mZ(M3t,"InteractiveNodePlacer",1405),pDt(1406,1,A3t,lh),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Yye:null},TWt.pf=function(t,e){_yt(this,zz(t,37),e)},mZ(M3t,"LinearSegmentsNodePlacer",1406),pDt(257,1,{35:1,257:1},ry),TWt.wd=function(t){return sk(this,zz(t,257))},TWt.Fb=function(t){var e;return!!aL(t,257)&&(e=zz(t,257),this.b==e.b)},TWt.Hb=function(){return this.b},TWt.Ib=function(){return"ls"+NEt(this.e)},TWt.a=0,TWt.b=0,TWt.c=-1,TWt.d=-1,TWt.g=0;var Xye,Vye=mZ(M3t,"LinearSegmentsNodePlacer/LinearSegment",257);pDt(1408,1,A3t,jU),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Xye:null},TWt.pf=function(t,e){CZt(this,zz(t,37),e)},TWt.b=0,TWt.g=0,mZ(M3t,"NetworkSimplexPlacer",1408),pDt(1427,1,TVt,Ba),TWt.ue=function(t,e){return _O(zz(t,19).a,zz(e,19).a)},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(M3t,"NetworkSimplexPlacer/0methodref$compare$Type",1427),pDt(1429,1,TVt,Fa),TWt.ue=function(t,e){return _O(zz(t,19).a,zz(e,19).a)},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(M3t,"NetworkSimplexPlacer/1methodref$compare$Type",1429),pDt(649,1,{649:1},tS);var Qye=mZ(M3t,"NetworkSimplexPlacer/EdgeRep",649);pDt(401,1,{401:1},UK),TWt.b=!1;var Jye,tve,eve,nve=mZ(M3t,"NetworkSimplexPlacer/NodeRep",401);pDt(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},sy),mZ(M3t,"NetworkSimplexPlacer/Path",508),pDt(1409,1,{},Ra),TWt.Kb=function(t){return zz(t,17).d.i.k},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$0$Type",1409),pDt(1410,1,FKt,ja),TWt.Mb=function(t){return zz(t,267)==(cTt(),Cse)},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$1$Type",1410),pDt(1411,1,{},$a),TWt.Kb=function(t){return zz(t,17).d.i},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$2$Type",1411),pDt(1412,1,FKt,ib),TWt.Mb=function(t){return qB(npt(zz(t,10)))},mZ(M3t,"NetworkSimplexPlacer/Path/lambda$3$Type",1412),pDt(1413,1,FKt,za),TWt.Mb=function(t){return lH(zz(t,11))},mZ(M3t,"NetworkSimplexPlacer/lambda$0$Type",1413),pDt(1414,1,dKt,eS),TWt.td=function(t){BO(this.a,this.b,zz(t,11))},mZ(M3t,"NetworkSimplexPlacer/lambda$1$Type",1414),pDt(1423,1,dKt,rb),TWt.td=function(t){KSt(this.a,zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$10$Type",1423),pDt(1424,1,{},qa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$11$Type",1424),pDt(1425,1,dKt,ab),TWt.td=function(t){qBt(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$12$Type",1425),pDt(1426,1,{},Ha),TWt.Kb=function(t){return zJ(),rft(zz(t,121).e)},mZ(M3t,"NetworkSimplexPlacer/lambda$13$Type",1426),pDt(1428,1,{},Ua),TWt.Kb=function(t){return zJ(),rft(zz(t,121).e)},mZ(M3t,"NetworkSimplexPlacer/lambda$15$Type",1428),pDt(1430,1,FKt,Ga),TWt.Mb=function(t){return zJ(),zz(t,401).c.k==(cTt(),Sse)},mZ(M3t,"NetworkSimplexPlacer/lambda$17$Type",1430),pDt(1431,1,FKt,Ya),TWt.Mb=function(t){return zJ(),zz(t,401).c.j.c.length>1},mZ(M3t,"NetworkSimplexPlacer/lambda$18$Type",1431),pDt(1432,1,dKt,GK),TWt.td=function(t){ogt(this.c,this.b,this.d,this.a,zz(t,401))},TWt.c=0,TWt.d=0,mZ(M3t,"NetworkSimplexPlacer/lambda$19$Type",1432),pDt(1415,1,{},Za),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$2$Type",1415),pDt(1433,1,dKt,ob),TWt.td=function(t){NO(this.a,zz(t,11))},TWt.a=0,mZ(M3t,"NetworkSimplexPlacer/lambda$20$Type",1433),pDt(1434,1,{},Wa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$21$Type",1434),pDt(1435,1,dKt,sb),TWt.td=function(t){pL(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$22$Type",1435),pDt(1436,1,FKt,Ka),TWt.Mb=function(t){return qB(t)},mZ(M3t,"NetworkSimplexPlacer/lambda$23$Type",1436),pDt(1437,1,{},Xa),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$24$Type",1437),pDt(1438,1,FKt,cb),TWt.Mb=function(t){return _M(this.a,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$25$Type",1438),pDt(1439,1,dKt,nS),TWt.td=function(t){TCt(this.a,this.b,zz(t,10))},mZ(M3t,"NetworkSimplexPlacer/lambda$26$Type",1439),pDt(1440,1,FKt,Va),TWt.Mb=function(t){return zJ(),!d5(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$27$Type",1440),pDt(1441,1,FKt,Qa),TWt.Mb=function(t){return zJ(),!d5(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$28$Type",1441),pDt(1442,1,{},ub),TWt.Ce=function(t,e){return uL(this.a,zz(t,29),zz(e,29))},mZ(M3t,"NetworkSimplexPlacer/lambda$29$Type",1442),pDt(1416,1,{},Ja),TWt.Kb=function(t){return zJ(),new FH(null,new GY(new cG(JL(ddt(zz(t,10)).a.Kc(),new l))))},mZ(M3t,"NetworkSimplexPlacer/lambda$3$Type",1416),pDt(1417,1,FKt,to),TWt.Mb=function(t){return zJ(),e2(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$4$Type",1417),pDt(1418,1,dKt,lb),TWt.td=function(t){rzt(this.a,zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$5$Type",1418),pDt(1419,1,{},eo),TWt.Kb=function(t){return zJ(),new FH(null,new g1(zz(t,29).a,16))},mZ(M3t,"NetworkSimplexPlacer/lambda$6$Type",1419),pDt(1420,1,FKt,no),TWt.Mb=function(t){return zJ(),zz(t,10).k==(cTt(),Sse)},mZ(M3t,"NetworkSimplexPlacer/lambda$7$Type",1420),pDt(1421,1,{},io),TWt.Kb=function(t){return zJ(),new FH(null,new GY(new cG(JL(hdt(zz(t,10)).a.Kc(),new l))))},mZ(M3t,"NetworkSimplexPlacer/lambda$8$Type",1421),pDt(1422,1,FKt,ro),TWt.Mb=function(t){return zJ(),Yq(zz(t,17))},mZ(M3t,"NetworkSimplexPlacer/lambda$9$Type",1422),pDt(1404,1,A3t,Ch),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?Jye:null},TWt.pf=function(t,e){kqt(zz(t,37),e)},mZ(M3t,"SimpleNodePlacer",1404),pDt(180,1,{180:1},URt),TWt.Ib=function(){var t;return t="",this.c==(bQ(),eve)?t+=sQt:this.c==tve&&(t+=oQt),this.o==(cJ(),rve)?t+=mQt:this.o==ave?t+="UP":t+="BALANCED",t},mZ(L3t,"BKAlignedLayout",180),pDt(516,22,{3:1,35:1,22:1,516:1},aS);var ive,rve,ave,ove=qnt(L3t,"BKAlignedLayout/HDirection",516,Zte,KV,C$);pDt(515,22,{3:1,35:1,22:1,515:1},rS);var sve,cve,uve,lve,hve,fve,dve,gve,pve,bve,wve,mve,yve,vve,xve,kve,_ve,Ave,Eve,Tve=qnt(L3t,"BKAlignedLayout/VDirection",515,Zte,XV,S$);pDt(1634,1,{},iS),mZ(L3t,"BKAligner",1634),pDt(1637,1,{},Jvt),mZ(L3t,"BKCompactor",1637),pDt(654,1,{654:1},ao),TWt.a=0,mZ(L3t,"BKCompactor/ClassEdge",654),pDt(458,1,{458:1},ay),TWt.a=null,TWt.b=0,mZ(L3t,"BKCompactor/ClassNode",458),pDt(1407,1,A3t,kI),TWt.Yf=function(t){return zz(vEt(zz(t,37),(hWt(),Jhe)),21).Hc((gBt(),fhe))?cve:null},TWt.pf=function(t,e){aWt(this,zz(t,37),e)},TWt.d=!1,mZ(L3t,"BKNodePlacer",1407),pDt(1635,1,{},oo),TWt.d=0,mZ(L3t,"NeighborhoodInformation",1635),pDt(1636,1,TVt,hb),TWt.ue=function(t,e){return Tet(this,zz(t,46),zz(e,46))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(L3t,"NeighborhoodInformation/NeighborComparator",1636),pDt(808,1,{}),mZ(L3t,"ThresholdStrategy",808),pDt(1763,808,{},py),TWt.bg=function(t,e,n){return this.a.o==(cJ(),ave)?RXt:jXt},TWt.cg=function(){},mZ(L3t,"ThresholdStrategy/NullThresholdStrategy",1763),pDt(579,1,{579:1},oS),TWt.c=!1,TWt.d=!1,mZ(L3t,"ThresholdStrategy/Postprocessable",579),pDt(1764,808,{},by),TWt.bg=function(t,e,n){var i,r,a;return r=e==n,i=this.a.a[n.p]==e,r||i?(a=t,this.a.c,bQ(),r&&(a=Eqt(this,e,!0)),!isNaN(a)&&!isFinite(a)&&i&&(a=Eqt(this,n,!1)),a):t},TWt.cg=function(){for(var t,e,n;0!=this.d.b;)(e=o$t(this,n=zz(CQ(this.d),579))).a&&(t=e.a,(Hv(this.a.f[this.a.g[n.b.p].p])||d5(t)||t.c.i.c!=t.d.i.c)&&(gOt(this,n)||rD(this.e,n)));for(;0!=this.e.a.c.length;)gOt(this,zz(nlt(this.e),579))},mZ(L3t,"ThresholdStrategy/SimpleThresholdStrategy",1764),pDt(635,1,{635:1,246:1,234:1},so),TWt.Kf=function(){return Eot(this)},TWt.Xf=function(){return Eot(this)},mZ(N3t,"EdgeRouterFactory",635),pDt(1458,1,A3t,Sh),TWt.Yf=function(t){return ZPt(zz(t,37))},TWt.pf=function(t,e){Fqt(zz(t,37),e)},mZ(N3t,"OrthogonalEdgeRouter",1458),pDt(1451,1,A3t,_I),TWt.Yf=function(t){return Akt(zz(t,37))},TWt.pf=function(t,e){DYt(this,zz(t,37),e)},mZ(N3t,"PolylineEdgeRouter",1451),pDt(1452,1,UVt,co),TWt.Lb=function(t){return Vot(zz(t,10))},TWt.Fb=function(t){return this===t},TWt.Mb=function(t){return Vot(zz(t,10))},mZ(N3t,"PolylineEdgeRouter/1",1452),pDt(1809,1,FKt,uo),TWt.Mb=function(t){return zz(t,129).c==(M6(),Ave)},mZ(P3t,"HyperEdgeCycleDetector/lambda$0$Type",1809),pDt(1810,1,{},lo),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$1$Type",1810),pDt(1811,1,FKt,ho),TWt.Mb=function(t){return zz(t,129).c==(M6(),Ave)},mZ(P3t,"HyperEdgeCycleDetector/lambda$2$Type",1811),pDt(1812,1,{},fo),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$3$Type",1812),pDt(1813,1,{},go),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$4$Type",1813),pDt(1814,1,{},po),TWt.Ge=function(t){return zz(t,129).d},mZ(P3t,"HyperEdgeCycleDetector/lambda$5$Type",1814),pDt(112,1,{35:1,112:1},zot),TWt.wd=function(t){return ck(this,zz(t,112))},TWt.Fb=function(t){var e;return!!aL(t,112)&&(e=zz(t,112),this.g==e.g)},TWt.Hb=function(){return this.g},TWt.Ib=function(){var t,e,n,i;for(t=new fN("{"),i=new Wd(this.n);i.a"+this.b+" ("+gP(this.c)+")"},TWt.d=0,mZ(P3t,"HyperEdgeSegmentDependency",129),pDt(520,22,{3:1,35:1,22:1,520:1},sS);var Cve,Sve,Ive,Mve,Dve,Ove,Lve,Nve,Pve=qnt(P3t,"HyperEdgeSegmentDependency/DependencyType",520,Zte,WV,I$);pDt(1815,1,{},fb),mZ(P3t,"HyperEdgeSegmentSplitter",1815),pDt(1816,1,{},Gk),TWt.a=0,TWt.b=0,mZ(P3t,"HyperEdgeSegmentSplitter/AreaRating",1816),pDt(329,1,{329:1},xz),TWt.a=0,TWt.b=0,TWt.c=0,mZ(P3t,"HyperEdgeSegmentSplitter/FreeArea",329),pDt(1817,1,TVt,_o),TWt.ue=function(t,e){return MR(zz(t,112),zz(e,112))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$0$Type",1817),pDt(1818,1,dKt,ZK),TWt.td=function(t){t4(this.a,this.d,this.c,this.b,zz(t,112))},TWt.b=0,mZ(P3t,"HyperEdgeSegmentSplitter/lambda$1$Type",1818),pDt(1819,1,{},Ao),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).e,16))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$2$Type",1819),pDt(1820,1,{},Eo),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).j,16))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$3$Type",1820),pDt(1821,1,{},To),TWt.Fe=function(t){return Uv(EB(t))},mZ(P3t,"HyperEdgeSegmentSplitter/lambda$4$Type",1821),pDt(655,1,{},hZ),TWt.a=0,TWt.b=0,TWt.c=0,mZ(P3t,"OrthogonalRoutingGenerator",655),pDt(1638,1,{},Co),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).e,16))},mZ(P3t,"OrthogonalRoutingGenerator/lambda$0$Type",1638),pDt(1639,1,{},So),TWt.Kb=function(t){return new FH(null,new g1(zz(t,112).j,16))},mZ(P3t,"OrthogonalRoutingGenerator/lambda$1$Type",1639),pDt(661,1,{}),mZ(B3t,"BaseRoutingDirectionStrategy",661),pDt(1807,661,{},wy),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e+t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(f,o=h),Bq(s.a,r),zjt(this,s,a,r,!1),(d=t.r)&&(r=new PS(g=Uv(EB(Fwt(d.e,0))),o),Bq(s.a,r),zjt(this,s,a,r,!1),a=d,r=new PS(g,o=e+d.o*i),Bq(s.a,r),zjt(this,s,a,r,!1)),r=new PS(b,o),Bq(s.a,r),zjt(this,s,a,r,!1)))},TWt.eg=function(t){return t.i.n.a+t.n.a+t.a.a},TWt.fg=function(){return kYt(),TIe},TWt.gg=function(){return kYt(),uIe},mZ(B3t,"NorthToSouthRoutingStrategy",1807),pDt(1808,661,{},my),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e-t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(f,o=h),Bq(s.a,r),zjt(this,s,a,r,!1),(d=t.r)&&(r=new PS(g=Uv(EB(Fwt(d.e,0))),o),Bq(s.a,r),zjt(this,s,a,r,!1),a=d,r=new PS(g,o=e-d.o*i),Bq(s.a,r),zjt(this,s,a,r,!1)),r=new PS(b,o),Bq(s.a,r),zjt(this,s,a,r,!1)))},TWt.eg=function(t){return t.i.n.a+t.n.a+t.a.a},TWt.fg=function(){return kYt(),uIe},TWt.gg=function(){return kYt(),TIe},mZ(B3t,"SouthToNorthRoutingStrategy",1808),pDt(1806,661,{},yy),TWt.dg=function(t,e,i){var r,a,o,s,c,u,l,h,f,d,g,p,b;if(!t.r||t.q)for(h=e+t.o*i,l=new Wd(t.n);l.adJt&&(a=t,r=new PS(o=h,f),Bq(s.a,r),zjt(this,s,a,r,!0),(d=t.r)&&(r=new PS(o,g=Uv(EB(Fwt(d.e,0)))),Bq(s.a,r),zjt(this,s,a,r,!0),a=d,r=new PS(o=e+d.o*i,g),Bq(s.a,r),zjt(this,s,a,r,!0)),r=new PS(o,b),Bq(s.a,r),zjt(this,s,a,r,!0)))},TWt.eg=function(t){return t.i.n.b+t.n.b+t.a.b},TWt.fg=function(){return kYt(),cIe},TWt.gg=function(){return kYt(),SIe},mZ(B3t,"WestToEastRoutingStrategy",1806),pDt(813,1,{},uzt),TWt.Ib=function(){return NEt(this.a)},TWt.b=0,TWt.c=!1,TWt.d=!1,TWt.f=0,mZ(R3t,"NubSpline",813),pDt(407,1,{407:1},APt,gQ),mZ(R3t,"NubSpline/PolarCP",407),pDt(1453,1,A3t,hvt),TWt.Yf=function(t){return aAt(zz(t,37))},TWt.pf=function(t,e){oZt(this,zz(t,37),e)},mZ(R3t,"SplineEdgeRouter",1453),pDt(268,1,{268:1},T6),TWt.Ib=function(){return this.a+" ->("+this.c+") "+this.b},TWt.c=0,mZ(R3t,"SplineEdgeRouter/Dependency",268),pDt(455,22,{3:1,35:1,22:1,455:1},cS);var Bve,Fve,Rve,jve,$ve,zve=qnt(R3t,"SplineEdgeRouter/SideToProcess",455,Zte,VV,M$);pDt(1454,1,FKt,xo),TWt.Mb=function(t){return wPt(),!zz(t,128).o},mZ(R3t,"SplineEdgeRouter/lambda$0$Type",1454),pDt(1455,1,{},vo),TWt.Ge=function(t){return wPt(),zz(t,128).v+1},mZ(R3t,"SplineEdgeRouter/lambda$1$Type",1455),pDt(1456,1,dKt,uS),TWt.td=function(t){iH(this.a,this.b,zz(t,46))},mZ(R3t,"SplineEdgeRouter/lambda$2$Type",1456),pDt(1457,1,dKt,lS),TWt.td=function(t){rH(this.a,this.b,zz(t,46))},mZ(R3t,"SplineEdgeRouter/lambda$3$Type",1457),pDt(128,1,{35:1,128:1},nSt,hHt),TWt.wd=function(t){return uk(this,zz(t,128))},TWt.b=0,TWt.e=!1,TWt.f=0,TWt.g=0,TWt.j=!1,TWt.k=!1,TWt.n=0,TWt.o=!1,TWt.p=!1,TWt.q=!1,TWt.s=0,TWt.u=0,TWt.v=0,TWt.F=0,mZ(R3t,"SplineSegment",128),pDt(459,1,{459:1},ko),TWt.a=0,TWt.b=!1,TWt.c=!1,TWt.d=!1,TWt.e=!1,TWt.f=0,mZ(R3t,"SplineSegment/EdgeInformation",459),pDt(1234,1,{},bo),mZ(H3t,rJt,1234),pDt(1235,1,TVt,wo),TWt.ue=function(t,e){return MIt(zz(t,135),zz(e,135))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(H3t,aJt,1235),pDt(1233,1,{},D_),mZ(H3t,"MrTree",1233),pDt(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},hS),TWt.Kf=function(){return OIt(this)},TWt.Xf=function(){return OIt(this)};var qve,Hve=qnt(H3t,"TreeLayoutPhases",393,Zte,k3,D$);pDt(1130,209,PQt,jF),TWt.Ze=function(t,e){var n,i,r,a,o,s;for(Hv(AB(tOt(t,(IDt(),Sxe))))||kQ(new Ag((UE(),new Bv(t)))),Uot(o=new C6,t),hct(o,(UHt(),uxe),t),yjt(t,o,s=new Pw),Kjt(t,o,s),a=o,i=new Wd(r=Bjt(this.a,a));i.a"+b0(this.c):"e_"+eut(this)},mZ(U3t,"TEdge",188),pDt(135,134,{3:1,135:1,94:1,134:1},C6),TWt.Ib=function(){var t,e,n,i,r;for(r=null,i=lwt(this.b,0);i.b!=i.d.c;)r+=(null==(n=zz(d3(i),86)).c||0==n.c.length?"n_"+n.g:"n_"+n.c)+"\n";for(e=lwt(this.a,0);e.b!=e.d.c;)r+=((t=zz(d3(e),188)).b&&t.c?b0(t.b)+"->"+b0(t.c):"e_"+eut(t))+"\n";return r};var Uve=mZ(U3t,"TGraph",135);pDt(633,502,{3:1,502:1,633:1,94:1,134:1}),mZ(U3t,"TShape",633),pDt(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},out),TWt.Ib=function(){return b0(this)};var Gve,Yve,Zve,Wve,Kve,Xve,Vve=mZ(U3t,"TNode",86);pDt(255,1,mKt,db),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return new gb(lwt(this.a.d,0))},mZ(U3t,"TNode/2",255),pDt(358,1,VWt,gb),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(d3(this.a),188).c},TWt.Ob=function(){return __(this.a)},TWt.Qb=function(){vet(this.a)},mZ(U3t,"TNode/2/1",358),pDt(1840,1,e1t,RF),TWt.pf=function(t,e){B$t(this,zz(t,135),e)},mZ(G3t,"FanProcessor",1840),pDt(327,22,{3:1,35:1,22:1,327:1,234:1},fS),TWt.Kf=function(){switch(this.g){case 0:return new Xy;case 1:return new RF;case 2:return new Do;case 3:return new Io;case 4:return new Lo;case 5:return new No;default:throw qw(new jv(T1t+(null!=this.f?this.f:""+this.g)))}};var Qve,Jve,txe,exe,nxe,ixe,rxe,axe,oxe,sxe,cxe,uxe,lxe,hxe,fxe,dxe,gxe,pxe,bxe,wxe,mxe,yxe,vxe,xxe,kxe,_xe,Axe,Exe,Txe,Cxe,Sxe,Ixe,Mxe,Dxe,Oxe,Lxe,Nxe,Pxe,Bxe,Fxe,Rxe,jxe=qnt(G3t,C1t,327,Zte,r7,O$);pDt(1843,1,e1t,Io),TWt.pf=function(t,e){cOt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"LevelHeightProcessor",1843),pDt(1844,1,mKt,Mo),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return TX(),LA(),dne},mZ(G3t,"LevelHeightProcessor/1",1844),pDt(1841,1,e1t,Do),TWt.pf=function(t,e){VCt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"NeighborsProcessor",1841),pDt(1842,1,mKt,Oo),TWt.Jc=function(t){n5(this,t)},TWt.Kc=function(){return TX(),LA(),dne},mZ(G3t,"NeighborsProcessor/1",1842),pDt(1845,1,e1t,Lo),TWt.pf=function(t,e){sOt(this,zz(t,135),e)},TWt.a=0,mZ(G3t,"NodePositionProcessor",1845),pDt(1839,1,e1t,Xy),TWt.pf=function(t,e){tHt(this,zz(t,135))},mZ(G3t,"RootProcessor",1839),pDt(1846,1,e1t,No),TWt.pf=function(t,e){bft(zz(t,135))},mZ(G3t,"Untreeifyer",1846),pDt(851,1,VVt,Th),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W3t),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),xxe),(SCt(),bEe)),Hxe),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K3t),""),"Search Order"),"Which search order to use when computing a spanning tree."),yxe),bEe),Qxe),edt(lEe)))),jUt((new Eh,t))},mZ(X3t,"MrTreeMetaDataProvider",851),pDt(994,1,VVt,Eh),TWt.Qe=function(t){jUt(t)},mZ(X3t,"MrTreeOptions",994),pDt(995,1,{},Po),TWt.$e=function(){return new jF},TWt._e=function(t){},mZ(X3t,"MrTreeOptions/MrtreeFactory",995),pDt(480,22,{3:1,35:1,22:1,480:1},dS);var $xe,zxe,qxe,Hxe=qnt(X3t,"OrderWeighting",480,Zte,JV,L$);pDt(425,22,{3:1,35:1,22:1,425:1},gS);var Uxe,Gxe,Yxe,Zxe,Wxe,Kxe,Xxe,Vxe,Qxe=qnt(X3t,"TreeifyingOrder",425,Zte,QV,P$);pDt(1459,1,A3t,bh),TWt.Yf=function(t){return zz(t,135),Gxe},TWt.pf=function(t,e){xat(this,zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1459),pDt(1460,1,A3t,wh),TWt.Yf=function(t){return zz(t,135),Yxe},TWt.pf=function(t,e){fSt(this,zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p2order","NodeOrderer",1460),pDt(1461,1,A3t,ph),TWt.Yf=function(t){return zz(t,135),Zxe},TWt.pf=function(t,e){eFt(this,zz(t,135),e)},TWt.a=0,mZ("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1461),pDt(1462,1,A3t,mh),TWt.Yf=function(t){return zz(t,135),Wxe},TWt.pf=function(t,e){Bxt(zz(t,135),e)},mZ("org.eclipse.elk.alg.mrtree.p4route","EdgeRouter",1462),pDt(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},pS),TWt.Kf=function(){return ggt(this)},TWt.Xf=function(){return ggt(this)};var Jxe,tke,eke,nke,ike=qnt(J3t,"RadialLayoutPhases",495,Zte,tQ,N$);pDt(1131,209,PQt,M_),TWt.Ze=function(t,e){var n,i,r;if(DAt(e,"Radial layout",ASt(this,t).c.length),Hv(AB(tOt(t,(Zvt(),Dke))))||kQ(new Ag((UE(),new Bv(t)))),r=cAt(t),Qwt(t,(gB(),Kxe),r),!r)throw qw(new jv("The given graph is not a tree!"));for(0==(n=Uv(EB(tOt(t,Bke))))&&(n=fIt(t)),Qwt(t,Bke,n),i=new Wd(ASt(this,t));i.a0&&Blt((d1(e-1,t.length),t.charCodeAt(e-1)),l1t);)--e;if(n>=e)throw qw(new jv("The given string does not contain any numbers."));if(2!=(i=kRt(t.substr(n,e-n),",|;|\r|\n")).length)throw qw(new jv("Exactly two numbers are expected, "+i.length+" were found."));try{this.a=gTt(REt(i[0])),this.b=gTt(REt(i[1]))}catch(t){throw aL(t=dst(t),127)?qw(new jv(h1t+t)):qw(t)}},TWt.Ib=function(){return"("+this.a+","+this.b+")"},TWt.a=0,TWt.b=0;var CEe=mZ(f1t,"KVector",8);pDt(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},xy,Rk,YP),TWt.Pc=function(){return Xut(this)},TWt.Jf=function(t){var e,n,i,r,a;n=kRt(t,",|;|\\(|\\)|\\[|\\]|\\{|\\}| |\t|\n"),vX(this);try{for(e=0,r=0,i=0,a=0;e0&&(r%2==0?i=gTt(n[e]):a=gTt(n[e]),r>0&&r%2!=0&&Bq(this,new PS(i,a)),++r),++e}catch(t){throw aL(t=dst(t),127)?qw(new jv("The given string does not match the expected format for vectors."+t)):qw(t)}},TWt.Ib=function(){var t,e,n;for(t=new fN("("),e=lwt(this,0);e.b!=e.d.c;)cM(t,(n=zz(d3(e),8)).a+","+n.b),e.b!=e.d.c&&(t.a+="; ");return(t.a+=")",t).a};var SEe,IEe,MEe,DEe,OEe,LEe,NEe=mZ(f1t,"KVectorChain",74);pDt(248,22,{3:1,35:1,22:1,248:1},BS);var PEe,BEe,FEe,REe,jEe,$Ee,zEe,qEe,HEe,UEe,GEe,YEe,ZEe,WEe,KEe,XEe,VEe,QEe,JEe,tTe=qnt(h5t,"Alignment",248,Zte,Q8,Q$);pDt(979,1,VVt,Oh),TWt.Qe=function(t){Gjt(t)},mZ(h5t,"BoxLayouterOptions",979),pDt(980,1,{},Bs),TWt.$e=function(){return new Gs},TWt._e=function(t){},mZ(h5t,"BoxLayouterOptions/BoxFactory",980),pDt(291,22,{3:1,35:1,22:1,291:1},FS);var eTe,nTe,iTe,rTe,aTe,oTe,sTe,cTe,uTe,lTe,hTe,fTe,dTe,gTe,pTe,bTe,wTe,mTe,yTe,vTe,xTe,kTe,_Te,ATe,ETe,TTe,CTe,STe,ITe,MTe,DTe,OTe,LTe,NTe,PTe,BTe,FTe,RTe,jTe,$Te,zTe,qTe,HTe,UTe,GTe,YTe,ZTe,WTe,KTe,XTe,VTe,QTe,JTe,tCe,eCe,nCe,iCe,rCe,aCe,oCe,sCe,cCe,uCe,lCe,hCe,fCe,dCe,gCe,pCe,bCe,wCe,mCe,yCe,vCe,xCe,kCe,_Ce,ACe,ECe,TCe,CCe,SCe,ICe,MCe,DCe,OCe,LCe,NCe,PCe,BCe,FCe,RCe,jCe,$Ce,zCe,qCe,HCe=qnt(h5t,"ContentAlignment",291,Zte,V8,J$);pDt(684,1,VVt,Lh),TWt.Qe=function(t){Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,p5t),""),"Layout Algorithm"),"Select a specific layout algorithm."),(SCt(),vEe)),Vee),edt((awt(),lEe))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,b5t),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),yEe),oEe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,K2t),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),rTe),bEe),tTe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,XQt),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,w5t),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),yEe),NEe),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,c3t),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),hTe),wEe),HCe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,W2t),""),"Debug Mode"),"Whether additional debug information shall be generated."),(lN(),!1)),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,J2t),""),EQt),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),gTe),bEe),WCe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x2t),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),yTe),bEe),cSe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,O4t),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,b2t),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),ATe),bEe),TSe),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,VQt),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),WTe),yEe),jse),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,_Jt),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v3t),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,TJt),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,AJt),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),cCe),bEe),oIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,w3t),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),yEe),CEe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,mJt),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),mEe),Oee),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,xJt),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,kJt),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,u3t),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),DTe),yEe),NEe),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,f3t),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,d3t),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,m5t),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),yEe),RNe),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,m3t),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),LTe),yEe),_se),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Y2t),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),gEe),kee),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe,hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y5t),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),pEe),See),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,v5t),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,x5t),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),rft(100)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,k5t),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,_5t),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),rft(4e3)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,A5t),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),rft(400)),mEe),Oee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,E5t),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,T5t),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,C5t),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,S5t),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,g5t),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),cTe),bEe),aMe),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,N2t),k2t),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,P2t),k2t),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,WQt),k2t),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,B2t),k2t),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,vJt),k2t),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,F2t),k2t),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,R2t),k2t),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,z2t),k2t),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,j2t),k2t),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,$2t),k2t),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,yJt),k2t),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,q2t),k2t),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),pEe),See),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,H2t),k2t),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),pEe),See),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,U2t),k2t),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),yEe),lMe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[sEe,hEe,cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,y3t),k2t),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),BCe),yEe),_se),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,b3t),O5t),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),mEe),Oee),_U(lEe,Sst(Ux(kEe,1),LKt,175,0,[uEe]))))),o2(t,b3t,p3t,QTe),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,p3t),O5t),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),XTe),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,t3t),L5t),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),PTe),yEe),jse),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,IJt),L5t),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),FTe),wEe),USe),_U(uEe,Sst(Ux(kEe,1),LKt,175,0,[cEe]))))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,i3t),N5t),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),tCe),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,r3t),N5t),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,a3t),N5t),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,o3t),N5t),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,s3t),N5t),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),bEe),QSe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,SJt),P5t),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),jTe),wEe),VIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,CJt),P5t),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),UTe),wEe),iMe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,qJt),P5t),"Node Size Minimum"),"The minimal size to which a node can be reduced."),qTe),yEe),CEe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Q2t),P5t),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),gEe),kee),edt(lEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,l3t),O2t),"Edge Label Placement"),"Gives a hint on where to put edge labels."),wTe),bEe),tSe),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,EJt),O2t),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),gEe),kee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,I5t),"font"),"Font Name"),"Font name used for a label."),vEe),Vee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,M5t),"font"),"Font Size"),"Font size used for a label."),mEe),Oee),edt(cEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,g3t),B5t),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),yEe),CEe),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,h3t),B5t),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),mEe),Oee),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,Z2t),B5t),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),pCe),bEe),$Ie),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(_k(Sk(Ek(Tk(new zs,G2t),B5t),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),pEe),See),edt(hEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,MJt),F5t),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),fCe),wEe),IIe),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,e3t),F5t),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,n3t),F5t),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,X2t),R5t),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),gEe),kee),edt(uEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,V2t),R5t),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),gEe),kee),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,KQt),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),pEe),See),edt(sEe)))),Odt(t,new gCt(Mk(Ik(Dk(Ak(_k(Sk(Ek(Tk(new zs,D5t),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),xTe),bEe),vSe),edt(sEe)))),PE(t,new YJ(vk(kk(xk(new ms,p1t),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.orthogonal"),"Orthogonal"),'Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia \'86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.'))),PE(t,new YJ(vk(kk(xk(new ms,wJt),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),PE(t,new YJ(vk(kk(xk(new ms,Q3t),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),PE(t,new YJ(vk(kk(xk(new ms,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),PE(t,new YJ(vk(kk(xk(new ms,p4t),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),gRt((new Nh,t)),Gjt((new Oh,t)),RBt((new Ph,t))},mZ(h5t,"CoreOptions",684),pDt(103,22,{3:1,35:1,22:1,103:1},RS);var UCe,GCe,YCe,ZCe,WCe=qnt(h5t,EQt,103,Zte,S5,nz);pDt(272,22,{3:1,35:1,22:1,272:1},jS);var KCe,XCe,VCe,QCe,JCe,tSe=qnt(h5t,"EdgeLabelPlacement",272,Zte,H1,iz);pDt(218,22,{3:1,35:1,22:1,218:1},$S);var eSe,nSe,iSe,rSe,aSe,oSe,sSe,cSe=qnt(h5t,"EdgeRouting",218,Zte,T3,rz);pDt(312,22,{3:1,35:1,22:1,312:1},zS);var uSe,lSe,hSe,fSe,dSe,gSe,pSe,bSe,wSe,mSe,ySe,vSe=qnt(h5t,"EdgeType",312,Zte,o7,az);pDt(977,1,VVt,Nh),TWt.Qe=function(t){gRt(t)},mZ(h5t,"FixedLayouterOptions",977),pDt(978,1,{},Xs),TWt.$e=function(){return new Hs},TWt._e=function(t){},mZ(h5t,"FixedLayouterOptions/FixedFactory",978),pDt(334,22,{3:1,35:1,22:1,334:1},qS);var xSe,kSe,_Se,ASe,ESe,TSe=qnt(h5t,"HierarchyHandling",334,Zte,q1,oz);pDt(285,22,{3:1,35:1,22:1,285:1},HS);var CSe,SSe,ISe,MSe,DSe,OSe,LSe,NSe,PSe,BSe,FSe=qnt(h5t,"LabelSide",285,Zte,E3,sz);pDt(93,22,{3:1,35:1,22:1,93:1},US);var RSe,jSe,$Se,zSe,qSe,HSe,USe=qnt(h5t,"NodeLabelPlacement",93,Zte,knt,cz);pDt(249,22,{3:1,35:1,22:1,249:1},GS);var GSe,YSe,ZSe,WSe,KSe,XSe,VSe,QSe=qnt(h5t,"PortAlignment",249,Zte,I5,uz);pDt(98,22,{3:1,35:1,22:1,98:1},YS);var JSe,tIe,eIe,nIe,iIe,rIe,aIe,oIe=qnt(h5t,"PortConstraints",98,Zte,T8,lz);pDt(273,22,{3:1,35:1,22:1,273:1},ZS);var sIe,cIe,uIe,lIe,hIe,fIe,dIe,gIe,pIe,bIe,wIe,mIe,yIe,vIe,xIe,kIe,_Ie,AIe,EIe,TIe,CIe,SIe,IIe=qnt(h5t,"PortLabelPlacement",273,Zte,a7,hz);pDt(61,22,{3:1,35:1,22:1,61:1},WS);var MIe,DIe,OIe,LIe,NIe,PIe,BIe,FIe,RIe,jIe,$Ie=qnt(h5t,"PortSide",61,Zte,l5,gz);pDt(981,1,VVt,Ph),TWt.Qe=function(t){RBt(t)},mZ(h5t,"RandomLayouterOptions",981),pDt(982,1,{},Vs),TWt.$e=function(){return new ec},TWt._e=function(t){},mZ(h5t,"RandomLayouterOptions/RandomFactory",982),pDt(374,22,{3:1,35:1,22:1,374:1},KS);var zIe,qIe,HIe,UIe,GIe,YIe,ZIe,WIe,KIe,XIe,VIe=qnt(h5t,"SizeConstraint",374,Zte,A3,fz);pDt(259,22,{3:1,35:1,22:1,259:1},XS);var QIe,JIe,tMe,eMe,nMe,iMe=qnt(h5t,"SizeOptions",259,Zte,Ait,dz);pDt(370,1,{1949:1},Zy),TWt.b=!1,TWt.c=0,TWt.d=-1,TWt.e=null,TWt.f=null,TWt.g=-1,TWt.j=!1,TWt.k=!1,TWt.n=!1,TWt.o=0,TWt.q=0,TWt.r=0,mZ(x3t,"BasicProgressMonitor",370),pDt(972,209,PQt,Gs),TWt.Ze=function(t,e){var n,i,r,a,o,s,c,u,l;DAt(e,"Box layout",2),r=Gv(EB(tOt(t,(CEt(),ZEe)))),a=zz(tOt(t,UEe),116),n=Hv(AB(tOt(t,jEe))),i=Hv(AB(tOt(t,$Ee))),0===zz(tOt(t,FEe),311).g?(s=new ej((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a)),TX(),yO(s,new Tb(i)),o=s,c=WCt(t),(null==(u=EB(tOt(t,BEe)))||(xW(u),u<=0))&&(u=1.3),jYt(t,(l=HYt(o,r,a,c.a,c.b,n,(xW(u),u))).a,l.b,!1,!0)):kHt(t,r,a,n),HTt(e)},mZ(x3t,"BoxLayoutProvider",972),pDt(973,1,TVt,Tb),TWt.ue=function(t,e){return hNt(this,zz(t,33),zz(e,33))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},TWt.a=!1,mZ(x3t,"BoxLayoutProvider/1",973),pDt(157,1,{157:1},Get,GP),TWt.Ib=function(){return this.c?YFt(this.c):NEt(this.b)},mZ(x3t,"BoxLayoutProvider/Group",157),pDt(311,22,{3:1,35:1,22:1,311:1},VS);var rMe,aMe=qnt(x3t,"BoxLayoutProvider/PackingMode",311,Zte,C3,pz);pDt(974,1,TVt,Ys),TWt.ue=function(t,e){return BX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$0$Type",974),pDt(975,1,TVt,Zs),TWt.ue=function(t,e){return aX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$1$Type",975),pDt(976,1,TVt,Ws),TWt.ue=function(t,e){return oX(zz(t,157),zz(e,157))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(x3t,"BoxLayoutProvider/lambda$2$Type",976),pDt(1365,1,{831:1},Ks),TWt.qg=function(t,e){return DE(),!aL(e,160)||T_((Pst(),zz(t,160)),e)},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1365),pDt(1366,1,dKt,Cb),TWt.td=function(t){Jut(this.a,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1366),pDt(1367,1,dKt,Us),TWt.td=function(t){zz(t,94),DE()},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1367),pDt(1371,1,dKt,Sb),TWt.td=function(t){Drt(this.a,zz(t,94))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1371),pDt(1369,1,FKt,QS),TWt.Mb=function(t){return Xct(this.a,this.b,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1369),pDt(1368,1,FKt,JS),TWt.Mb=function(t){return OP(this.a,this.b,zz(t,831))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1368),pDt(1370,1,dKt,tI),TWt.td=function(t){$G(this.a,this.b,zz(t,146))},mZ(x3t,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1370),pDt(935,1,{},qs),TWt.Kb=function(t){return vD(t)},TWt.Fb=function(t){return this===t},mZ(x3t,"ElkUtil/lambda$0$Type",935),pDt(936,1,dKt,eI),TWt.td=function(t){aMt(this.a,this.b,zz(t,79))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$1$Type",936),pDt(937,1,dKt,nI),TWt.td=function(t){_v(this.a,this.b,zz(t,202))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$2$Type",937),pDt(938,1,dKt,iI),TWt.td=function(t){eO(this.a,this.b,zz(t,137))},TWt.a=0,TWt.b=0,mZ(x3t,"ElkUtil/lambda$3$Type",938),pDt(939,1,dKt,Ib),TWt.td=function(t){aH(this.a,zz(t,469))},mZ(x3t,"ElkUtil/lambda$4$Type",939),pDt(342,1,{35:1,342:1},Ow),TWt.wd=function(t){return mL(this,zz(t,236))},TWt.Fb=function(t){var e;return!!aL(t,342)&&(e=zz(t,342),this.a==e.a)},TWt.Hb=function(){return SQ(this.a)},TWt.Ib=function(){return this.a+" (exclusive)"},TWt.a=0,mZ(x3t,"ExclusiveBounds/ExclusiveLowerBound",342),pDt(1138,209,PQt,Hs),TWt.Ze=function(t,e){var i,r,a,o,s,c,u,h,f,d,g,p,b,w,m,y,v,x,k,_,A;for(DAt(e,"Fixed Layout",1),o=zz(tOt(t,(lWt(),mTe)),218),d=0,g=0,m=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));m.e!=m.i.gc();){for(b=zz(kwt(m),33),(A=zz(tOt(b,(Wut(),bSe)),8))&&(TD(b,A.a,A.b),zz(tOt(b,hSe),174).Hc((vpt(),BIe))&&(p=zz(tOt(b,dSe),8)).a>0&&p.b>0&&jYt(b,p.a,p.b,!0,!0)),d=n.Math.max(d,b.i+b.g),g=n.Math.max(g,b.j+b.f),h=new DL((!b.n&&(b.n=new nY(GMe,b,1,7)),b.n));h.e!=h.i.gc();)c=zz(kwt(h),137),(A=zz(tOt(c,bSe),8))&&TD(c,A.a,A.b),d=n.Math.max(d,b.i+c.i+c.g),g=n.Math.max(g,b.j+c.j+c.f);for(x=new DL((!b.c&&(b.c=new nY(ZMe,b,9,9)),b.c));x.e!=x.i.gc();)for(v=zz(kwt(x),118),(A=zz(tOt(v,bSe),8))&&TD(v,A.a,A.b),k=b.i+v.i,_=b.j+v.j,d=n.Math.max(d,k+v.g),g=n.Math.max(g,_+v.f),u=new DL((!v.n&&(v.n=new nY(GMe,v,1,7)),v.n));u.e!=u.i.gc();)c=zz(kwt(u),137),(A=zz(tOt(c,bSe),8))&&TD(c,A.a,A.b),d=n.Math.max(d,k+c.i+c.g),g=n.Math.max(g,_+c.j+c.f);for(a=new cG(JL(bLt(b).a.Kc(),new l));bDt(a);)f=$Yt(i=zz(Y5(a),79)),d=n.Math.max(d,f.a),g=n.Math.max(g,f.b);for(r=new cG(JL(pLt(b).a.Kc(),new l));bDt(r);)QQ(SEt(i=zz(Y5(r),79)))!=t&&(f=$Yt(i),d=n.Math.max(d,f.a),g=n.Math.max(g,f.b))}if(o==(Tdt(),XCe))for(w=new DL((!t.a&&(t.a=new nY(YMe,t,10,11)),t.a));w.e!=w.i.gc();)for(r=new cG(JL(bLt(b=zz(kwt(w),33)).a.Kc(),new l));bDt(r);)0==(s=a$t(i=zz(Y5(r),79))).b?Qwt(i,MTe,null):Qwt(i,MTe,s);Hv(AB(tOt(t,(Wut(),fSe))))||jYt(t,d+(y=zz(tOt(t,gSe),116)).b+y.c,g+y.d+y.a,!0,!0),HTt(e)},mZ(x3t,"FixedLayoutProvider",1138),pDt(373,134,{3:1,414:1,373:1,94:1,134:1},Qs,rtt),TWt.Jf=function(t){var e,n,i,r,a,o,s;if(t)try{for(o=kRt(t,";,;"),r=0,a=(i=o).length;r>16&VKt|t^(n&VKt)<<16},TWt.Kc=function(){return new Mb(this)},TWt.Ib=function(){return null==this.a&&null==this.b?"pair(null,null)":null==this.a?"pair(null,"+qdt(this.b)+")":null==this.b?"pair("+qdt(this.a)+",null)":"pair("+qdt(this.a)+","+qdt(this.b)+")"},mZ(x3t,"Pair",46),pDt(983,1,VWt,Mb),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return!this.c&&(!this.b&&null!=this.a.a||null!=this.a.b)},TWt.Pb=function(){if(!this.c&&!this.b&&null!=this.a.a)return this.b=!0,this.a.a;if(!this.c&&null!=this.a.b)return this.c=!0,this.a.b;throw qw(new vm)},TWt.Qb=function(){throw this.c&&null!=this.a.b?this.a.b=null:this.b&&null!=this.a.a&&(this.a.a=null),qw(new pm)},TWt.b=!1,TWt.c=!1,mZ(x3t,"Pair/1",983),pDt(448,1,{448:1},KK),TWt.Fb=function(t){return aK(this.a,zz(t,448).a)&&aK(this.c,zz(t,448).c)&&aK(this.d,zz(t,448).d)&&aK(this.b,zz(t,448).b)},TWt.Hb=function(){return flt(Sst(Ux(Ote,1),HWt,1,5,[this.a,this.c,this.d,this.b]))},TWt.Ib=function(){return"("+this.a+zWt+this.c+zWt+this.d+zWt+this.b+")"},mZ(x3t,"Quadruple",448),pDt(1126,209,PQt,ec),TWt.Ze=function(t,e){var n;DAt(e,"Random Layout",1),0!=(!t.a&&(t.a=new nY(YMe,t,10,11)),t.a).i?(rYt(t,(n=zz(tOt(t,(ypt(),NIe)),19))&&0!=n.a?new S4(n.a):new ldt,Gv(EB(tOt(t,DIe))),Gv(EB(tOt(t,PIe))),zz(tOt(t,OIe),116)),HTt(e)):HTt(e)},mZ(x3t,"RandomLayoutProvider",1126),pDt(553,1,{}),TWt.qf=function(){return new PS(this.f.i,this.f.j)},TWt.We=function(t){return _V(t,(lWt(),oCe))?tOt(this.f,dMe):tOt(this.f,t)},TWt.rf=function(){return new PS(this.f.g,this.f.f)},TWt.sf=function(){return this.g},TWt.Xe=function(t){return C8(this.f,t)},TWt.tf=function(t){Snt(this.f,t.a),Int(this.f,t.b)},TWt.uf=function(t){Cnt(this.f,t.a),Tnt(this.f,t.b)},TWt.vf=function(t){this.g=t},TWt.g=0,mZ(H5t,"ElkGraphAdapters/AbstractElkGraphElementAdapter",553),pDt(554,1,{839:1},Db),TWt.wf=function(){var t,e;if(!this.b)for(this.b=S2(yK(this.a).i),e=new DL(yK(this.a));e.e!=e.i.gc();)t=zz(kwt(e),137),Wz(this.b,new Fv(t));return this.b},TWt.b=null,mZ(H5t,"ElkGraphAdapters/ElkEdgeAdapter",554),pDt(301,553,{},Bv),TWt.xf=function(){return ivt(this)},TWt.a=null,mZ(H5t,"ElkGraphAdapters/ElkGraphAdapter",301),pDt(630,553,{181:1},Fv),mZ(H5t,"ElkGraphAdapters/ElkLabelAdapter",630),pDt(629,553,{680:1},QN),TWt.wf=function(){return evt(this)},TWt.Af=function(){var t;return!(t=zz(tOt(this.f,(lWt(),OTe)),142))&&(t=new fy),t},TWt.Cf=function(){return nvt(this)},TWt.Ef=function(t){var e;e=new Dj(t),Qwt(this.f,(lWt(),OTe),e)},TWt.Ff=function(t){Qwt(this.f,(lWt(),ZTe),new Mj(t))},TWt.yf=function(){return this.d},TWt.zf=function(){var t,e;if(!this.a)for(this.a=new Nw,e=new cG(JL(pLt(zz(this.f,33)).a.Kc(),new l));bDt(e);)t=zz(Y5(e),79),Wz(this.a,new Db(t));return this.a},TWt.Bf=function(){var t,e;if(!this.c)for(this.c=new Nw,e=new cG(JL(bLt(zz(this.f,33)).a.Kc(),new l));bDt(e);)t=zz(Y5(e),79),Wz(this.c,new Db(t));return this.c},TWt.Df=function(){return 0!=VX(zz(this.f,33)).i||Hv(AB(zz(this.f,33).We((lWt(),TTe))))},TWt.Gf=function(){j9(this,(UE(),fMe))},TWt.a=null,TWt.b=null,TWt.c=null,TWt.d=null,TWt.e=null,mZ(H5t,"ElkGraphAdapters/ElkNodeAdapter",629),pDt(1266,553,{838:1},cw),TWt.wf=function(){return kvt(this)},TWt.zf=function(){var t,e;if(!this.a)for(this.a=uP(zz(this.f,118).xg().i),e=new DL(zz(this.f,118).xg());e.e!=e.i.gc();)t=zz(kwt(e),79),Wz(this.a,new Db(t));return this.a},TWt.Bf=function(){var t,e;if(!this.c)for(this.c=uP(zz(this.f,118).yg().i),e=new DL(zz(this.f,118).yg());e.e!=e.i.gc();)t=zz(kwt(e),79),Wz(this.c,new Db(t));return this.c},TWt.Hf=function(){return zz(zz(this.f,118).We((lWt(),gCe)),61)},TWt.If=function(){var t,e,n,i,r,a,o;for(i=WQ(zz(this.f,118)),n=new DL(zz(this.f,118).yg());n.e!=n.i.gc();)for(o=new DL((!(t=zz(kwt(n),79)).c&&(t.c=new lR(RMe,t,5,8)),t.c));o.e!=o.i.gc();){if(Iet(SAt(a=zz(kwt(o),82)),i))return!0;if(SAt(a)==i&&Hv(AB(tOt(t,(lWt(),CTe)))))return!0}for(e=new DL(zz(this.f,118).xg());e.e!=e.i.gc();)for(r=new DL((!(t=zz(kwt(e),79)).b&&(t.b=new lR(RMe,t,4,7)),t.b));r.e!=r.i.gc();)if(Iet(SAt(zz(kwt(r),82)),i))return!0;return!1},TWt.a=null,TWt.b=null,TWt.c=null,mZ(H5t,"ElkGraphAdapters/ElkPortAdapter",1266),pDt(1267,1,TVt,nc),TWt.ue=function(t,e){return GFt(zz(t,118),zz(e,118))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(H5t,"ElkGraphAdapters/PortComparator",1267);var pMe,bMe,wMe,mMe,yMe,vMe,xMe,kMe,_Me,AMe,EMe,TMe,CMe,SMe,IMe,MMe,DMe,OMe,LMe=dH(U5t,"EObject"),NMe=dH(G5t,Y5t),PMe=dH(G5t,Z5t),BMe=dH(G5t,W5t),FMe=dH(G5t,"ElkShape"),RMe=dH(G5t,K5t),jMe=dH(G5t,X5t),$Me=dH(G5t,V5t),zMe=dH(U5t,Q5t),qMe=dH(U5t,"EFactory"),HMe=dH(U5t,J5t),UMe=dH(U5t,"EPackage"),GMe=dH(G5t,t6t),YMe=dH(G5t,e6t),ZMe=dH(G5t,n6t);pDt(90,1,i6t),TWt.Jg=function(){return this.Kg(),null},TWt.Kg=function(){return null},TWt.Lg=function(){return this.Kg(),!1},TWt.Mg=function(){return!1},TWt.Ng=function(t){got(this,t)},mZ(r6t,"BasicNotifierImpl",90),pDt(97,90,f6t),TWt.nh=function(){return yD(this)},TWt.Og=function(t,e){return t},TWt.Pg=function(){throw qw(new wm)},TWt.Qg=function(t){var e;return e=Imt(zz(iet(this.Tg(),this.Vg()),18)),this.eh().ih(this,e.n,e.f,t)},TWt.Rg=function(t,e){throw qw(new wm)},TWt.Sg=function(t,e,n){return Ejt(this,t,e,n)},TWt.Tg=function(){var t;return this.Pg()&&(t=this.Pg().ck())?t:this.zh()},TWt.Ug=function(){return oDt(this)},TWt.Vg=function(){throw qw(new wm)},TWt.Wg=function(){var t,e;return!(e=this.ph().dk())&&this.Pg().ik((XE(),e=null==(t=fQ(U$t(this.Tg())))?NOe:new XN(this,t))),e},TWt.Xg=function(t,e){return t},TWt.Yg=function(t){return t.Gj()?t.aj():Ogt(this.Tg(),t)},TWt.Zg=function(){var t;return(t=this.Pg())?t.fk():null},TWt.$g=function(){return this.Pg()?this.Pg().ck():null},TWt._g=function(t,e,n){return tmt(this,t,e,n)},TWt.ah=function(t){return T7(this,t)},TWt.bh=function(t,e){return K5(this,t,e)},TWt.dh=function(){var t;return!!(t=this.Pg())&&t.gk()},TWt.eh=function(){throw qw(new wm)},TWt.fh=function(){return Qpt(this)},TWt.gh=function(t,e,n,i){return Pwt(this,t,e,i)},TWt.hh=function(t,e,n){return zz(iet(this.Tg(),e),66).Nj().Qj(this,this.yh(),e-this.Ah(),t,n)},TWt.ih=function(t,e,n,i){return cQ(this,t,e,i)},TWt.jh=function(t,e,n){return zz(iet(this.Tg(),e),66).Nj().Rj(this,this.yh(),e-this.Ah(),t,n)},TWt.kh=function(){return!!this.Pg()&&!!this.Pg().ek()},TWt.lh=function(t){return ywt(this,t)},TWt.mh=function(t){return JQ(this,t)},TWt.oh=function(t){return $Ht(this,t)},TWt.ph=function(){throw qw(new wm)},TWt.qh=function(){return this.Pg()?this.Pg().ek():null},TWt.rh=function(){return Qpt(this)},TWt.sh=function(t,e){xSt(this,t,e)},TWt.th=function(t){this.ph().hk(t)},TWt.uh=function(t){this.ph().kk(t)},TWt.vh=function(t){this.ph().jk(t)},TWt.wh=function(t,e){var n,i,r,a;return(a=this.Zg())&&t&&(e=$wt(a.Vk(),this,e),a.Zk(this)),(i=this.eh())&&(0!=(wRt(this,this.eh(),this.Vg()).Bb&qXt)?(r=i.fh())&&(t?!a&&r.Zk(this):r.Yk(this)):(e=(n=this.Vg())>=0?this.Qg(e):this.eh().ih(this,-1-n,null,e),e=this.Sg(null,-1,e))),this.uh(t),e},TWt.xh=function(t){var e,n,i,r,a,o,s;if((a=Ogt(n=this.Tg(),t))>=(e=this.Ah()))return zz(t,66).Nj().Uj(this,this.yh(),a-e);if(a<=-1){if(!(o=zHt((MCt(),JOe),n,t)))throw qw(new jv(a6t+t.ne()+c6t));if(JE(),zz(o,66).Oj()||(o=J1(z9(JOe,o))),r=zz((i=this.Yg(o))>=0?this._g(i,!0,!0):oMt(this,o,!0),153),(s=o.Zj())>1||-1==s)return zz(zz(r,215).hl(t,!1),76)}else if(t.$j())return zz((i=this.Yg(t))>=0?this._g(i,!1,!0):oMt(this,t,!1),76);return new II(this,t)},TWt.yh=function(){return X9(this)},TWt.zh=function(){return(XZ(),eOe).S},TWt.Ah=function(){return dZ(this.zh())},TWt.Bh=function(t){vCt(this,t)},TWt.Ib=function(){return SOt(this)},mZ(d6t,"BasicEObjectImpl",97),pDt(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1}),TWt.Ch=function(t){return V9(this)[t]},TWt.Dh=function(t,e){OZ(V9(this),t,e)},TWt.Eh=function(t){OZ(V9(this),t,null)},TWt.Jg=function(){return zz(xot(this,4),126)},TWt.Kg=function(){throw qw(new wm)},TWt.Lg=function(){return 0!=(4&this.Db)},TWt.Pg=function(){throw qw(new wm)},TWt.Fh=function(t){hbt(this,2,t)},TWt.Rg=function(t,e){this.Db=e<<16|255&this.Db,this.Fh(t)},TWt.Tg=function(){return kV(this)},TWt.Vg=function(){return this.Db>>16},TWt.Wg=function(){var t;return XE(),null==(t=fQ(U$t(zz(xot(this,16),26)||this.zh())))?NOe:new XN(this,t)},TWt.Mg=function(){return 0==(1&this.Db)},TWt.Zg=function(){return zz(xot(this,128),1935)},TWt.$g=function(){return zz(xot(this,16),26)},TWt.dh=function(){return 0!=(32&this.Db)},TWt.eh=function(){return zz(xot(this,2),49)},TWt.kh=function(){return 0!=(64&this.Db)},TWt.ph=function(){throw qw(new wm)},TWt.qh=function(){return zz(xot(this,64),281)},TWt.th=function(t){hbt(this,16,t)},TWt.uh=function(t){hbt(this,128,t)},TWt.vh=function(t){hbt(this,64,t)},TWt.yh=function(){return fbt(this)},TWt.Db=0,mZ(d6t,"MinimalEObjectImpl",114),pDt(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt.Fh=function(t){this.Cb=t},TWt.eh=function(){return this.Cb},mZ(d6t,"MinimalEObjectImpl/Container",115),pDt(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Avt(this,t,e,n)},TWt.jh=function(t,e,n){return iTt(this,t,e,n)},TWt.lh=function(t){return y0(this,t)},TWt.sh=function(t,e){aut(this,t,e)},TWt.zh=function(){return IZt(),CMe},TWt.Bh=function(t){Yst(this,t)},TWt.Ve=function(){return dwt(this)},TWt.We=function(t){return tOt(this,t)},TWt.Xe=function(t){return C8(this,t)},TWt.Ye=function(t,e){return Qwt(this,t,e)},mZ(g6t,"EMapPropertyHolderImpl",1985),pDt(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ac),TWt._g=function(t,e,n){switch(t){case 0:return this.a;case 1:return this.b}return tmt(this,t,e,n)},TWt.lh=function(t){switch(t){case 0:return 0!=this.a;case 1:return 0!=this.b}return ywt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return void _nt(this,Uv(EB(e)));case 1:return void Ant(this,Uv(EB(e)))}xSt(this,t,e)},TWt.zh=function(){return IZt(),wMe},TWt.Bh=function(t){switch(t){case 0:return void _nt(this,0);case 1:return void Ant(this,0)}vCt(this,t)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):((t=new hN(SOt(this))).a+=" (x: ",m_(t,this.a),t.a+=", y: ",m_(t,this.b),t.a+=")",t.a)},TWt.a=0,TWt.b=0,mZ(g6t,"ElkBendPointImpl",567),pDt(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return $ht(this,t,e,n)},TWt.hh=function(t,e,n){return zAt(this,t,e,n)},TWt.jh=function(t,e,n){return ast(this,t,e,n)},TWt.lh=function(t){return Aot(this,t)},TWt.sh=function(t,e){Gkt(this,t,e)},TWt.zh=function(){return IZt(),xMe},TWt.Bh=function(t){uht(this,t)},TWt.zg=function(){return this.k},TWt.Ag=function(){return yK(this)},TWt.Ib=function(){return Qft(this)},TWt.k=null,mZ(g6t,"ElkGraphElementImpl",723),pDt(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Rdt(this,t,e,n)},TWt.lh=function(t){return fgt(this,t)},TWt.sh=function(t,e){Ykt(this,t,e)},TWt.zh=function(){return IZt(),TMe},TWt.Bh=function(t){Fgt(this,t)},TWt.Bg=function(){return this.f},TWt.Cg=function(){return this.g},TWt.Dg=function(){return this.i},TWt.Eg=function(){return this.j},TWt.Fg=function(t,e){ED(this,t,e)},TWt.Gg=function(t,e){TD(this,t,e)},TWt.Hg=function(t){Snt(this,t)},TWt.Ig=function(t){Int(this,t)},TWt.Ib=function(){return vTt(this)},TWt.f=0,TWt.g=0,TWt.i=0,TWt.j=0,mZ(g6t,"ElkShapeImpl",724),pDt(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),TWt._g=function(t,e,n){return Hmt(this,t,e,n)},TWt.hh=function(t,e,n){return bkt(this,t,e,n)},TWt.jh=function(t,e,n){return wkt(this,t,e,n)},TWt.lh=function(t){return Gct(this,t)},TWt.sh=function(t,e){NDt(this,t,e)},TWt.zh=function(){return IZt(),mMe},TWt.Bh=function(t){Bwt(this,t)},TWt.xg=function(){return!this.d&&(this.d=new lR(jMe,this,8,5)),this.d},TWt.yg=function(){return!this.e&&(this.e=new lR(jMe,this,7,4)),this.e},mZ(g6t,"ElkConnectableShapeImpl",725),pDt(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},rc),TWt.Qg=function(t){return Txt(this,t)},TWt._g=function(t,e,n){switch(t){case 3:return ZQ(this);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),this.b;case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),this.c;case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),this.a;case 7:return lN(),!this.b&&(this.b=new lR(RMe,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new lR(RMe,this,5,8)),this.c.i<=1));case 8:return lN(),!!eDt(this);case 9:return lN(),!!VIt(this);case 10:return lN(),!this.b&&(this.b=new lR(RMe,this,4,7)),0!=this.b.i&&(!this.c&&(this.c=new lR(RMe,this,5,8)),0!=this.c.i)}return $ht(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 3:return this.Cb&&(n=(i=this.Db>>16)>=0?Txt(this,n):this.Cb.ih(this,-1-i,null,n)),KB(this,zz(t,33),n);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),Qgt(this.b,t,n);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),Qgt(this.c,t,n);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),Qgt(this.a,t,n)}return zAt(this,t,e,n)},TWt.jh=function(t,e,n){switch(e){case 3:return KB(this,null,n);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),$wt(this.b,t,n);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),$wt(this.c,t,n);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),$wt(this.a,t,n)}return ast(this,t,e,n)},TWt.lh=function(t){switch(t){case 3:return!!ZQ(this);case 4:return!!this.b&&0!=this.b.i;case 5:return!!this.c&&0!=this.c.i;case 6:return!!this.a&&0!=this.a.i;case 7:return!this.b&&(this.b=new lR(RMe,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new lR(RMe,this,5,8)),this.c.i<=1));case 8:return eDt(this);case 9:return VIt(this);case 10:return!this.b&&(this.b=new lR(RMe,this,4,7)),0!=this.b.i&&(!this.c&&(this.c=new lR(RMe,this,5,8)),0!=this.c.i)}return Aot(this,t)},TWt.sh=function(t,e){switch(t){case 3:return void HLt(this,zz(e,33));case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),lHt(this.b),!this.b&&(this.b=new lR(RMe,this,4,7)),void wZ(this.b,zz(e,14));case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),lHt(this.c),!this.c&&(this.c=new lR(RMe,this,5,8)),void wZ(this.c,zz(e,14));case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),lHt(this.a),!this.a&&(this.a=new nY($Me,this,6,6)),void wZ(this.a,zz(e,14))}Gkt(this,t,e)},TWt.zh=function(){return IZt(),yMe},TWt.Bh=function(t){switch(t){case 3:return void HLt(this,null);case 4:return!this.b&&(this.b=new lR(RMe,this,4,7)),void lHt(this.b);case 5:return!this.c&&(this.c=new lR(RMe,this,5,8)),void lHt(this.c);case 6:return!this.a&&(this.a=new nY($Me,this,6,6)),void lHt(this.a)}uht(this,t)},TWt.Ib=function(){return dqt(this)},mZ(g6t,"ElkEdgeImpl",352),pDt(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},oc),TWt.Qg=function(t){return lxt(this,t)},TWt._g=function(t,e,n){switch(t){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new OL(PMe,this,5)),this.a;case 6:return KQ(this);case 7:return e?Smt(this):this.i;case 8:return e?Cmt(this):this.f;case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),this.g;case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),this.e;case 11:return this.d}return Avt(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?lxt(this,n):this.Cb.ih(this,-1-i,null,n)),XB(this,zz(t,79),n);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),Qgt(this.g,t,n);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),Qgt(this.e,t,n)}return zz(iet(zz(xot(this,16),26)||(IZt(),vMe),e),66).Nj().Qj(this,fbt(this),e-dZ((IZt(),vMe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 5:return!this.a&&(this.a=new OL(PMe,this,5)),$wt(this.a,t,n);case 6:return XB(this,null,n);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),$wt(this.g,t,n);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),$wt(this.e,t,n)}return iTt(this,t,e,n)},TWt.lh=function(t){switch(t){case 1:return 0!=this.j;case 2:return 0!=this.k;case 3:return 0!=this.b;case 4:return 0!=this.c;case 5:return!!this.a&&0!=this.a.i;case 6:return!!KQ(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&0!=this.g.i;case 10:return!!this.e&&0!=this.e.i;case 11:return null!=this.d}return y0(this,t)},TWt.sh=function(t,e){switch(t){case 1:return void Mnt(this,Uv(EB(e)));case 2:return void Ont(this,Uv(EB(e)));case 3:return void Ent(this,Uv(EB(e)));case 4:return void Dnt(this,Uv(EB(e)));case 5:return!this.a&&(this.a=new OL(PMe,this,5)),lHt(this.a),!this.a&&(this.a=new OL(PMe,this,5)),void wZ(this.a,zz(e,14));case 6:return void zLt(this,zz(e,79));case 7:return void Pit(this,zz(e,82));case 8:return void Nit(this,zz(e,82));case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),lHt(this.g),!this.g&&(this.g=new lR($Me,this,9,10)),void wZ(this.g,zz(e,14));case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),lHt(this.e),!this.e&&(this.e=new lR($Me,this,10,9)),void wZ(this.e,zz(e,14));case 11:return void ort(this,TB(e))}aut(this,t,e)},TWt.zh=function(){return IZt(),vMe},TWt.Bh=function(t){switch(t){case 1:return void Mnt(this,0);case 2:return void Ont(this,0);case 3:return void Ent(this,0);case 4:return void Dnt(this,0);case 5:return!this.a&&(this.a=new OL(PMe,this,5)),void lHt(this.a);case 6:return void zLt(this,null);case 7:return void Pit(this,null);case 8:return void Nit(this,null);case 9:return!this.g&&(this.g=new lR($Me,this,9,10)),void lHt(this.g);case 10:return!this.e&&(this.e=new lR($Me,this,10,9)),void lHt(this.e);case 11:return void ort(this,null)}Yst(this,t)},TWt.Ib=function(){return RMt(this)},TWt.b=0,TWt.c=0,TWt.d=null,TWt.j=0,TWt.k=0,mZ(g6t,"ElkEdgeSectionImpl",439),pDt(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),TWt._g=function(t,e,n){return 0==t?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab):Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){return 0==e?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n)):zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){return 0==e?(!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n)):zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){return 0==t?!!this.Ab&&0!=this.Ab.i:M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.oh=function(t){return hYt(this,t)},TWt.sh=function(t,e){if(0===t)return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.uh=function(t){hbt(this,128,t)},TWt.zh=function(){return wWt(),dOe},TWt.Bh=function(t){if(0===t)return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){this.Bb|=1},TWt.Hh=function(t){return Pjt(this,t)},TWt.Bb=0,mZ(d6t,"EModelElementImpl",150),pDt(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},Bh),TWt.Ih=function(t,e){return UUt(this,t,e)},TWt.Jh=function(t){var e,n,i,r;if(this.a!=Zet(t)||0!=(256&t.Bb))throw qw(new jv(v6t+t.zb+w6t));for(n=xV(t);0!=o4(n.a).i;){if(rvt(e=zz(iUt(n,0,aL(r=zz(Ket(o4(n.a),0),87).c,88)?zz(r,26):(wWt(),pOe)),26)))return zz(i=Zet(e).Nh().Jh(e),49).th(t),i;n=xV(e)}return"java.util.Map$Entry"==(null!=t.D?t.D:t.B)?new hH(t):new kq(t)},TWt.Kh=function(t,e){return BZt(this,t,e)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.a}return Y7(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t),e,n)},TWt.hh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 1:return this.a&&(n=zz(this.a,49).ih(this,4,UMe,n)),Jlt(this,zz(t,235),n)}return zz(iet(zz(xot(this,16),26)||(wWt(),lOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),lOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 1:return Jlt(this,null,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),lOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),lOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return!!this.a}return M3(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void BEt(this,zz(e,235))}Ndt(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t),e)},TWt.zh=function(){return wWt(),lOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void BEt(this,null)}Uht(this,t-dZ((wWt(),lOe)),iet(zz(xot(this,16),26)||lOe,t))},mZ(d6t,"EFactoryImpl",704),pDt(k6t,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},sc),TWt.Ih=function(t,e){switch(t.yj()){case 12:return zz(e,146).tg();case 13:return qdt(e);default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 4:return new cc;case 6:return new ky;case 7:return new _y;case 8:return new rc;case 9:return new ac;case 10:return new oc;case 11:return new lc;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){switch(t.yj()){case 13:case 12:return null;default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(g6t,"ElkGraphFactoryImpl",k6t),pDt(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),TWt.Wg=function(){var t;return null==(t=fQ(U$t(zz(xot(this,16),26)||this.zh())))?(XE(),XE(),NOe):new WP(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.ne()}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void this.Lh(TB(e))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),gOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void this.Lh(null)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.ne=function(){return this.zb},TWt.Lh=function(t){Prt(this,t)},TWt.Ib=function(){return kht(this)},TWt.zb=null,mZ(d6t,"ENamedElementImpl",438),pDt(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},mV),TWt.Qg=function(t){return pxt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),this.rb;case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),this.vb;case 7:return e?this.Db>>16==7?zz(this.Cb,235):null:XQ(this)}return Y7(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 4:return this.sb&&(n=zz(this.sb,49).ih(this,1,qMe,n)),_ht(this,zz(t,471),n);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),Qgt(this.rb,t,n);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),Qgt(this.vb,t,n);case 7:return this.Cb&&(n=(i=this.Db>>16)>=0?pxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,7,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),mOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),mOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 4:return _ht(this,null,n);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),$wt(this.rb,t,n);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),$wt(this.vb,t,n);case 7:return Ejt(this,null,7,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),mOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),mOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.yb;case 3:return null!=this.xb;case 4:return!!this.sb;case 5:return!!this.rb&&0!=this.rb.i;case 6:return!!this.vb&&0!=this.vb.i;case 7:return!!XQ(this)}return M3(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t))},TWt.oh=function(t){return NNt(this,t)||hYt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Frt(this,TB(e));case 3:return void Brt(this,TB(e));case 4:return void rTt(this,zz(e,471));case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),lHt(this.rb),!this.rb&&(this.rb=new QG(this,qDe,this)),void wZ(this.rb,zz(e,14));case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),lHt(this.vb),!this.vb&&(this.vb=new nR(UMe,this,6,7)),void wZ(this.vb,zz(e,14))}Ndt(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t),e)},TWt.vh=function(t){var e,n;if(t&&this.rb)for(n=new DL(this.rb);n.e!=n.i.gc();)aL(e=kwt(n),351)&&(zz(e,351).w=null);hbt(this,64,t)},TWt.zh=function(){return wWt(),mOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Frt(this,null);case 3:return void Brt(this,null);case 4:return void rTt(this,null);case 5:return!this.rb&&(this.rb=new QG(this,qDe,this)),void lHt(this.rb);case 6:return!this.vb&&(this.vb=new nR(UMe,this,6,7)),void lHt(this.vb)}Uht(this,t-dZ((wWt(),mOe)),iet(zz(xot(this,16),26)||mOe,t))},TWt.Gh=function(){Evt(this)},TWt.Mh=function(){return!this.rb&&(this.rb=new QG(this,qDe,this)),this.rb},TWt.Nh=function(){return this.sb},TWt.Oh=function(){return this.ub},TWt.Ph=function(){return this.xb},TWt.Qh=function(){return this.yb},TWt.Rh=function(t){this.ub=t},TWt.Ib=function(){var t;return 0!=(64&this.Db)?kht(this):((t=new hN(kht(this))).a+=" (nsURI: ",aM(t,this.yb),t.a+=", nsPrefix: ",aM(t,this.xb),t.a+=")",t.a)},TWt.xb=null,TWt.yb=null,mZ(d6t,"EPackageImpl",179),pDt(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},lDt),TWt.q=!1,TWt.r=!1;var WMe=!1;mZ(g6t,"ElkGraphPackageImpl",555),pDt(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},cc),TWt.Qg=function(t){return hxt(this,t)},TWt._g=function(t,e,n){switch(t){case 7:return VQ(this);case 8:return this.a}return Rdt(this,t,e,n)},TWt.hh=function(t,e,n){var i;return 7===e?(this.Cb&&(n=(i=this.Db>>16)>=0?hxt(this,n):this.Cb.ih(this,-1-i,null,n)),KU(this,zz(t,160),n)):zAt(this,t,e,n)},TWt.jh=function(t,e,n){return 7==e?KU(this,null,n):ast(this,t,e,n)},TWt.lh=function(t){switch(t){case 7:return!!VQ(this);case 8:return!yR("",this.a)}return fgt(this,t)},TWt.sh=function(t,e){switch(t){case 7:return void MNt(this,zz(e,160));case 8:return void Bit(this,TB(e))}Ykt(this,t,e)},TWt.zh=function(){return IZt(),kMe},TWt.Bh=function(t){switch(t){case 7:return void MNt(this,null);case 8:return void Bit(this,"")}Fgt(this,t)},TWt.Ib=function(){return oCt(this)},TWt.a="",mZ(g6t,"ElkLabelImpl",354),pDt(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},ky),TWt.Qg=function(t){return Cxt(this,t)},TWt._g=function(t,e,n){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),this.c;case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),this.a;case 11:return QQ(this);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),this.b;case 13:return lN(),!this.a&&(this.a=new nY(YMe,this,10,11)),this.a.i>0}return Hmt(this,t,e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),Qgt(this.c,t,n);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),Qgt(this.a,t,n);case 11:return this.Cb&&(n=(i=this.Db>>16)>=0?Cxt(this,n):this.Cb.ih(this,-1-i,null,n)),GF(this,zz(t,33),n);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),Qgt(this.b,t,n)}return bkt(this,t,e,n)},TWt.jh=function(t,e,n){switch(e){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),$wt(this.c,t,n);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),$wt(this.a,t,n);case 11:return GF(this,null,n);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),$wt(this.b,t,n)}return wkt(this,t,e,n)},TWt.lh=function(t){switch(t){case 9:return!!this.c&&0!=this.c.i;case 10:return!!this.a&&0!=this.a.i;case 11:return!!QQ(this);case 12:return!!this.b&&0!=this.b.i;case 13:return!this.a&&(this.a=new nY(YMe,this,10,11)),this.a.i>0}return Gct(this,t)},TWt.sh=function(t,e){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),lHt(this.c),!this.c&&(this.c=new nY(ZMe,this,9,9)),void wZ(this.c,zz(e,14));case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),lHt(this.a),!this.a&&(this.a=new nY(YMe,this,10,11)),void wZ(this.a,zz(e,14));case 11:return void eNt(this,zz(e,33));case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),lHt(this.b),!this.b&&(this.b=new nY(jMe,this,12,3)),void wZ(this.b,zz(e,14))}NDt(this,t,e)},TWt.zh=function(){return IZt(),_Me},TWt.Bh=function(t){switch(t){case 9:return!this.c&&(this.c=new nY(ZMe,this,9,9)),void lHt(this.c);case 10:return!this.a&&(this.a=new nY(YMe,this,10,11)),void lHt(this.a);case 11:return void eNt(this,null);case 12:return!this.b&&(this.b=new nY(jMe,this,12,3)),void lHt(this.b)}Bwt(this,t)},TWt.Ib=function(){return YFt(this)},mZ(g6t,"ElkNodeImpl",239),pDt(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},_y),TWt.Qg=function(t){return fxt(this,t)},TWt._g=function(t,e,n){return 9==t?WQ(this):Hmt(this,t,e,n)},TWt.hh=function(t,e,n){var i;return 9===e?(this.Cb&&(n=(i=this.Db>>16)>=0?fxt(this,n):this.Cb.ih(this,-1-i,null,n)),VB(this,zz(t,33),n)):bkt(this,t,e,n)},TWt.jh=function(t,e,n){return 9==e?VB(this,null,n):wkt(this,t,e,n)},TWt.lh=function(t){return 9==t?!!WQ(this):Gct(this,t)},TWt.sh=function(t,e){9!==t?NDt(this,t,e):qLt(this,zz(e,33))},TWt.zh=function(){return IZt(),AMe},TWt.Bh=function(t){9!==t?Bwt(this,t):qLt(this,null)},TWt.Ib=function(){return ZFt(this)},mZ(g6t,"ElkPortImpl",186);var KMe=dH(q6t,"BasicEMap/Entry");pDt(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},lc),TWt.Fb=function(t){return this===t},TWt.cd=function(){return this.b},TWt.Hb=function(){return CN(this)},TWt.Uh=function(t){Fit(this,zz(t,146))},TWt._g=function(t,e,n){switch(t){case 0:return this.b;case 1:return this.c}return tmt(this,t,e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.b;case 1:return null!=this.c}return ywt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return void Fit(this,zz(e,146));case 1:return void $it(this,e)}xSt(this,t,e)},TWt.zh=function(){return IZt(),EMe},TWt.Bh=function(t){switch(t){case 0:return void Fit(this,null);case 1:return void $it(this,null)}vCt(this,t)},TWt.Sh=function(){var t;return-1==this.a&&(t=this.b,this.a=t?eut(t):0),this.a},TWt.dd=function(){return this.c},TWt.Th=function(t){this.a=t},TWt.ed=function(t){var e;return e=this.c,$it(this,t),e},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):(cM(cM(cM(t=new Sx,this.b?this.b.tg():YWt),i1t),xN(this.c)),t.a)},TWt.a=-1,TWt.c=null;var XMe,VMe,QMe,JMe,tDe,eDe,nDe,iDe,rDe=mZ(g6t,"ElkPropertyToValueMapEntryImpl",1092);pDt(984,1,{},dc),mZ(G6t,"JsonAdapter",984),pDt(210,60,qKt,nx),mZ(G6t,"JsonImportException",210),pDt(857,1,{},bxt),mZ(G6t,"JsonImporter",857),pDt(891,1,{},oI),mZ(G6t,"JsonImporter/lambda$0$Type",891),pDt(892,1,{},sI),mZ(G6t,"JsonImporter/lambda$1$Type",892),pDt(900,1,{},Ob),mZ(G6t,"JsonImporter/lambda$10$Type",900),pDt(902,1,{},cI),mZ(G6t,"JsonImporter/lambda$11$Type",902),pDt(903,1,{},uI),mZ(G6t,"JsonImporter/lambda$12$Type",903),pDt(909,1,{},hX),mZ(G6t,"JsonImporter/lambda$13$Type",909),pDt(908,1,{},lX),mZ(G6t,"JsonImporter/lambda$14$Type",908),pDt(904,1,{},lI),mZ(G6t,"JsonImporter/lambda$15$Type",904),pDt(905,1,{},hI),mZ(G6t,"JsonImporter/lambda$16$Type",905),pDt(906,1,{},fI),mZ(G6t,"JsonImporter/lambda$17$Type",906),pDt(907,1,{},dI),mZ(G6t,"JsonImporter/lambda$18$Type",907),pDt(912,1,{},Lb),mZ(G6t,"JsonImporter/lambda$19$Type",912),pDt(893,1,{},Nb),mZ(G6t,"JsonImporter/lambda$2$Type",893),pDt(910,1,{},Pb),mZ(G6t,"JsonImporter/lambda$20$Type",910),pDt(911,1,{},Bb),mZ(G6t,"JsonImporter/lambda$21$Type",911),pDt(915,1,{},Fb),mZ(G6t,"JsonImporter/lambda$22$Type",915),pDt(913,1,{},Rb),mZ(G6t,"JsonImporter/lambda$23$Type",913),pDt(914,1,{},jb),mZ(G6t,"JsonImporter/lambda$24$Type",914),pDt(917,1,{},$b),mZ(G6t,"JsonImporter/lambda$25$Type",917),pDt(916,1,{},zb),mZ(G6t,"JsonImporter/lambda$26$Type",916),pDt(918,1,dKt,gI),TWt.td=function(t){_7(this.b,this.a,TB(t))},mZ(G6t,"JsonImporter/lambda$27$Type",918),pDt(919,1,dKt,pI),TWt.td=function(t){A7(this.b,this.a,TB(t))},mZ(G6t,"JsonImporter/lambda$28$Type",919),pDt(920,1,{},bI),mZ(G6t,"JsonImporter/lambda$29$Type",920),pDt(896,1,{},qb),mZ(G6t,"JsonImporter/lambda$3$Type",896),pDt(921,1,{},wI),mZ(G6t,"JsonImporter/lambda$30$Type",921),pDt(922,1,{},Hb),mZ(G6t,"JsonImporter/lambda$31$Type",922),pDt(923,1,{},Ub),mZ(G6t,"JsonImporter/lambda$32$Type",923),pDt(924,1,{},Gb),mZ(G6t,"JsonImporter/lambda$33$Type",924),pDt(925,1,{},Yb),mZ(G6t,"JsonImporter/lambda$34$Type",925),pDt(859,1,{},Zb),mZ(G6t,"JsonImporter/lambda$35$Type",859),pDt(929,1,{},Ez),mZ(G6t,"JsonImporter/lambda$36$Type",929),pDt(926,1,dKt,Wb),TWt.td=function(t){V4(this.a,zz(t,469))},mZ(G6t,"JsonImporter/lambda$37$Type",926),pDt(927,1,dKt,TI),TWt.td=function(t){fM(this.a,this.b,zz(t,202))},mZ(G6t,"JsonImporter/lambda$38$Type",927),pDt(928,1,dKt,CI),TWt.td=function(t){dM(this.a,this.b,zz(t,202))},mZ(G6t,"JsonImporter/lambda$39$Type",928),pDt(894,1,{},Kb),mZ(G6t,"JsonImporter/lambda$4$Type",894),pDt(930,1,dKt,Xb),TWt.td=function(t){Q4(this.a,zz(t,8))},mZ(G6t,"JsonImporter/lambda$40$Type",930),pDt(895,1,{},Vb),mZ(G6t,"JsonImporter/lambda$5$Type",895),pDt(899,1,{},Qb),mZ(G6t,"JsonImporter/lambda$6$Type",899),pDt(897,1,{},Jb),mZ(G6t,"JsonImporter/lambda$7$Type",897),pDt(898,1,{},tw),mZ(G6t,"JsonImporter/lambda$8$Type",898),pDt(901,1,{},ew),mZ(G6t,"JsonImporter/lambda$9$Type",901),pDt(948,1,dKt,nw),TWt.td=function(t){tW(this.a,new UZ(TB(t)))},mZ(G6t,"JsonMetaDataConverter/lambda$0$Type",948),pDt(949,1,dKt,iw),TWt.td=function(t){jZ(this.a,zz(t,237))},mZ(G6t,"JsonMetaDataConverter/lambda$1$Type",949),pDt(950,1,dKt,rw),TWt.td=function(t){e1(this.a,zz(t,149))},mZ(G6t,"JsonMetaDataConverter/lambda$2$Type",950),pDt(951,1,dKt,aw),TWt.td=function(t){$Z(this.a,zz(t,175))},mZ(G6t,"JsonMetaDataConverter/lambda$3$Type",951),pDt(237,22,{3:1,35:1,22:1,237:1},EI);var aDe,oDe=qnt(MQt,"GraphFeature",237,Zte,jet,wz);pDt(13,1,{35:1,146:1},sw,iF,OM,ZD),TWt.wd=function(t){return wL(this,zz(t,146))},TWt.Fb=function(t){return _V(this,t)},TWt.wg=function(){return vwt(this)},TWt.tg=function(){return this.b},TWt.Hb=function(){return ymt(this.b)},TWt.Ib=function(){return this.b},mZ(MQt,"Property",13),pDt(818,1,TVt,ow),TWt.ue=function(t,e){return $ft(this,zz(t,94),zz(e,94))},TWt.Fb=function(t){return this===t},TWt.ve=function(){return new tg(this)},mZ(MQt,"PropertyHolderComparator",818),pDt(695,1,VWt,uw),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return D7(this)},TWt.Qb=function(){s_()},TWt.Ob=function(){return!!this.a},mZ(o8t,"ElkGraphUtil/AncestorIterator",695);var sDe=dH(q6t,"EList");pDt(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1}),TWt.Vc=function(t,e){lft(this,t,e)},TWt.Fc=function(t){return h7(this,t)},TWt.Wc=function(t,e){return uct(this,t,e)},TWt.Gc=function(t){return wZ(this,t)},TWt.Zh=function(){return new oP(this)},TWt.$h=function(){return new sP(this)},TWt._h=function(t){return lit(this,t)},TWt.ai=function(){return!0},TWt.bi=function(t,e){},TWt.ci=function(){},TWt.di=function(t,e){L8(this,t,e)},TWt.ei=function(t,e,n){},TWt.fi=function(t,e){},TWt.gi=function(t,e,n){},TWt.Fb=function(t){return VBt(this,t)},TWt.Hb=function(){return Tst(this)},TWt.hi=function(){return!1},TWt.Kc=function(){return new DL(this)},TWt.Yc=function(){return new aP(this)},TWt.Zc=function(t){var e;if(e=this.gc(),t<0||t>e)throw qw(new eR(t,e));return new UY(this,t)},TWt.ji=function(t,e){this.ii(t,this.Xc(e))},TWt.Mc=function(t){return utt(this,t)},TWt.li=function(t,e){return e},TWt._c=function(t,e){return umt(this,t,e)},TWt.Ib=function(){return Jdt(this)},TWt.ni=function(){return!0},TWt.oi=function(t,e){return But(this,e)},mZ(q6t,"AbstractEList",67),pDt(63,67,h8t,bc,wet,_at),TWt.Vh=function(t,e){return qAt(this,t,e)},TWt.Wh=function(t){return gyt(this,t)},TWt.Xh=function(t,e){Mht(this,t,e)},TWt.Yh=function(t){a6(this,t)},TWt.pi=function(t){return $7(this,t)},TWt.$b=function(){o6(this)},TWt.Hc=function(t){return Ckt(this,t)},TWt.Xb=function(t){return Ket(this,t)},TWt.qi=function(t){var e,n,i;++this.j,t>(n=null==this.g?0:this.g.length)&&(i=this.g,(e=n+(n/2|0)+4)=0&&(this.$c(e),!0)},TWt.mi=function(t,e){return this.Ui(t,this.oi(t,e))},TWt.gc=function(){return this.Vi()},TWt.Pc=function(){return this.Wi()},TWt.Qc=function(t){return this.Xi(t)},TWt.Ib=function(){return this.Yi()},mZ(q6t,"DelegatingEList",1995),pDt(1996,1995,e7t),TWt.Vh=function(t,e){return c$t(this,t,e)},TWt.Wh=function(t){return this.Vh(this.Vi(),t)},TWt.Xh=function(t,e){iDt(this,t,e)},TWt.Yh=function(t){DMt(this,t)},TWt.ai=function(){return!this.bj()},TWt.$b=function(){yHt(this)},TWt.Zi=function(t,e,n,i,r){return new NV(this,t,e,n,i,r)},TWt.$i=function(t){got(this.Ai(),t)},TWt._i=function(){return null},TWt.aj=function(){return-1},TWt.Ai=function(){return null},TWt.bj=function(){return!1},TWt.cj=function(t,e){return e},TWt.dj=function(t,e){return e},TWt.ej=function(){return!1},TWt.fj=function(){return!this.Ri()},TWt.ii=function(t,e){var n,i;return this.ej()?(i=this.fj(),n=OEt(this,t,e),this.$i(this.Zi(7,rft(e),n,t,i)),n):OEt(this,t,e)},TWt.$c=function(t){var e,n,i,r;return this.ej()?(n=null,i=this.fj(),e=this.Zi(4,r=gH(this,t),null,t,i),this.bj()&&r?(n=this.dj(r,n))?(n.Ei(e),n.Fi()):this.$i(e):n?(n.Ei(e),n.Fi()):this.$i(e),r):(r=gH(this,t),this.bj()&&r&&(n=this.dj(r,null))&&n.Fi(),r)},TWt.mi=function(t,e){return u$t(this,t,e)},mZ(r6t,"DelegatingNotifyingListImpl",1996),pDt(143,1,n7t),TWt.Ei=function(t){return j_t(this,t)},TWt.Fi=function(){O9(this)},TWt.xi=function(){return this.d},TWt._i=function(){return null},TWt.gj=function(){return null},TWt.yi=function(t){return-1},TWt.zi=function(){return RPt(this)},TWt.Ai=function(){return null},TWt.Bi=function(){return jPt(this)},TWt.Ci=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},TWt.hj=function(){return!1},TWt.Di=function(t){var e,n,i,r,a,o,s,c;switch(this.d){case 1:case 2:switch(t.xi()){case 1:case 2:if(UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null))return this.g=t.zi(),1==t.xi()&&(this.d=1),!0}case 4:if(4===t.xi()&&UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null))return o=nUt(this),a=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,i=t.Ci(),this.d=6,c=new wet(2),a<=i?(h7(c,this.n),h7(c,t.Bi()),this.g=Sst(Ux(DNe,1),hXt,25,15,[this.o=a,i+1])):(h7(c,t.Bi()),h7(c,this.n),this.g=Sst(Ux(DNe,1),hXt,25,15,[this.o=i,a])),this.n=c,o||(this.o=-2-this.o-1),!0;break;case 6:if(4===t.xi()&&UI(t.Ai())===UI(this.Ai())&&this.yi(null)==t.yi(null)){for(o=nUt(this),i=t.Ci(),s=zz(this.g,48),n=P8(DNe,hXt,25,s.length+1,15,1),e=0;e>>0).toString(16))).a+=" (eventType: ",this.d){case 1:n.a+="SET";break;case 2:n.a+="UNSET";break;case 3:n.a+="ADD";break;case 5:n.a+="ADD_MANY";break;case 4:n.a+="REMOVE";break;case 6:n.a+="REMOVE_MANY";break;case 7:n.a+="MOVE";break;case 8:n.a+="REMOVING_ADAPTER";break;case 9:n.a+="RESOLVE";break;default:y_(n,this.d)}if(dRt(this)&&(n.a+=", touch: true"),n.a+=", position: ",y_(n,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),n.a+=", notifier: ",rM(n,this.Ai()),n.a+=", feature: ",rM(n,this._i()),n.a+=", oldValue: ",rM(n,jPt(this)),n.a+=", newValue: ",6==this.d&&aL(this.g,48)){for(e=zz(this.g,48),n.a+="[",t=0;t10?(this.b&&this.c.j==this.a||(this.b=new OH(this),this.a=this.j),$A(this.b,t)):Ckt(this,t)},TWt.ni=function(){return!0},TWt.a=0,mZ(q6t,"AbstractEList/1",953),pDt(295,73,PXt,eR),mZ(q6t,"AbstractEList/BasicIndexOutOfBoundsException",295),pDt(40,1,VWt,DL),TWt.Nb=function(t){hY(this,t)},TWt.mj=function(){if(this.i.j!=this.f)throw qw(new mm)},TWt.nj=function(){return kwt(this)},TWt.Ob=function(){return this.e!=this.i.gc()},TWt.Pb=function(){return this.nj()},TWt.Qb=function(){Vkt(this)},TWt.e=0,TWt.f=0,TWt.g=-1,mZ(q6t,"AbstractEList/EIterator",40),pDt(278,40,oKt,aP,UY),TWt.Qb=function(){Vkt(this)},TWt.Rb=function(t){upt(this,t)},TWt.oj=function(){var t;try{return t=this.d.Xb(--this.e),this.mj(),this.g=this.e,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.pj=function(t){kyt(this,t)},TWt.Sb=function(){return 0!=this.e},TWt.Tb=function(){return this.e},TWt.Ub=function(){return this.oj()},TWt.Vb=function(){return this.e-1},TWt.Wb=function(t){this.pj(t)},mZ(q6t,"AbstractEList/EListIterator",278),pDt(341,40,VWt,oP),TWt.nj=function(){return _wt(this)},TWt.Qb=function(){throw qw(new wm)},mZ(q6t,"AbstractEList/NonResolvingEIterator",341),pDt(385,278,oKt,sP,FR),TWt.Rb=function(t){throw qw(new wm)},TWt.nj=function(){var t;try{return t=this.c.ki(this.e),this.mj(),this.g=this.e++,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.oj=function(){var t;try{return t=this.c.ki(--this.e),this.mj(),this.g=this.e,t}catch(t){throw aL(t=dst(t),73)?(this.mj(),qw(new vm)):qw(t)}},TWt.Qb=function(){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(q6t,"AbstractEList/NonResolvingEListIterator",385),pDt(1982,67,a7t),TWt.Vh=function(t,e){var n,i,r,a,o,s,c,u,l;if(0!=(i=e.gc())){for(n=Sut(this,(u=null==(c=zz(xot(this.a,4),126))?0:c.length)+i),(l=u-t)>0&&sqt(c,t,n,t+i,l),s=e.Kc(),a=0;an)throw qw(new eR(t,n));return new zW(this,t)},TWt.$b=function(){var t,e;++this.j,e=null==(t=zz(xot(this.a,4),126))?0:t.length,zbt(this,null),L8(this,e,t)},TWt.Hc=function(t){var e,n,i,r;if(null!=(e=zz(xot(this.a,4),126)))if(null!=t){for(i=0,r=(n=e).length;i=(n=null==(e=zz(xot(this.a,4),126))?0:e.length))throw qw(new eR(t,n));return e[t]},TWt.Xc=function(t){var e,n,i;if(null!=(e=zz(xot(this.a,4),126)))if(null!=t){for(n=0,i=e.length;nn)throw qw(new eR(t,n));return new $W(this,t)},TWt.ii=function(t,e){var n,i,r;if(t>=(r=null==(n=Lpt(this))?0:n.length))throw qw(new Dv(c8t+t+u8t+r));if(e>=r)throw qw(new Dv(l8t+e+u8t+r));return i=n[e],t!=e&&(t0&&sqt(t,0,e,0,n),e},TWt.Qc=function(t){var e,n;return(n=null==(e=zz(xot(this.a,4),126))?0:e.length)>0&&(t.lengthn&&OZ(t,n,null),t},mZ(q6t,"ArrayDelegatingEList",1982),pDt(1038,40,VWt,E5),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},TWt.Qb=function(){Vkt(this),this.a=zz(xot(this.b.a,4),126)},mZ(q6t,"ArrayDelegatingEList/EIterator",1038),pDt(706,278,oKt,XG,$W),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},TWt.pj=function(t){kyt(this,t),this.a=zz(xot(this.b.a,4),126)},TWt.Qb=function(){Vkt(this),this.a=zz(xot(this.b.a,4),126)},mZ(q6t,"ArrayDelegatingEList/EListIterator",706),pDt(1039,341,VWt,T5),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},mZ(q6t,"ArrayDelegatingEList/NonResolvingEIterator",1039),pDt(707,385,oKt,VG,zW),TWt.mj=function(){if(this.b.j!=this.f||UI(zz(xot(this.b.a,4),126))!==UI(this.a))throw qw(new mm)},mZ(q6t,"ArrayDelegatingEList/NonResolvingEListIterator",707),pDt(606,295,PXt,LM),mZ(q6t,"BasicEList/BasicIndexOutOfBoundsException",606),pDt(696,63,h8t,BI),TWt.Vc=function(t,e){throw qw(new wm)},TWt.Fc=function(t){throw qw(new wm)},TWt.Wc=function(t,e){throw qw(new wm)},TWt.Gc=function(t){throw qw(new wm)},TWt.$b=function(){throw qw(new wm)},TWt.qi=function(t){throw qw(new wm)},TWt.Kc=function(){return this.Zh()},TWt.Yc=function(){return this.$h()},TWt.Zc=function(t){return this._h(t)},TWt.ii=function(t,e){throw qw(new wm)},TWt.ji=function(t,e){throw qw(new wm)},TWt.$c=function(t){throw qw(new wm)},TWt.Mc=function(t){throw qw(new wm)},TWt._c=function(t,e){throw qw(new wm)},mZ(q6t,"BasicEList/UnmodifiableEList",696),pDt(705,1,{3:1,20:1,14:1,15:1,58:1,589:1}),TWt.Vc=function(t,e){XO(this,t,zz(e,42))},TWt.Fc=function(t){return oB(this,zz(t,42))},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return zz(Ket(this.c,t),133)},TWt.ii=function(t,e){return zz(this.c.ii(t,e),42)},TWt.ji=function(t,e){VO(this,t,zz(e,42))},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return zz(this.c.$c(t),42)},TWt._c=function(t,e){return sZ(this,t,zz(e,42))},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.Wc=function(t,e){return this.c.Wc(t,e)},TWt.Gc=function(t){return this.c.Gc(t)},TWt.$b=function(){this.c.$b()},TWt.Hc=function(t){return this.c.Hc(t)},TWt.Ic=function(t){return ust(this.c,t)},TWt.qj=function(){var t,e;if(null==this.d){for(this.d=P8(cDe,o7t,63,2*this.f+1,0,1),e=this.e,this.f=0,t=this.c.Kc();t.e!=t.i.gc();)Mmt(this,zz(t.nj(),133));this.e=e}},TWt.Fb=function(t){return NR(this,t)},TWt.Hb=function(){return Tst(this.c)},TWt.Xc=function(t){return this.c.Xc(t)},TWt.rj=function(){this.c=new lw(this)},TWt.dc=function(){return 0==this.f},TWt.Kc=function(){return this.c.Kc()},TWt.Yc=function(){return this.c.Yc()},TWt.Zc=function(t){return this.c.Zc(t)},TWt.sj=function(){return D8(this)},TWt.tj=function(t,e,n){return new Tz(t,e,n)},TWt.uj=function(){return new mc},TWt.Mc=function(t){return hit(this,t)},TWt.gc=function(){return this.f},TWt.bd=function(t,e){return new u1(this.c,t,e)},TWt.Pc=function(){return this.c.Pc()},TWt.Qc=function(t){return this.c.Qc(t)},TWt.Ib=function(){return Jdt(this.c)},TWt.e=0,TWt.f=0,mZ(q6t,"BasicEMap",705),pDt(1033,63,h8t,lw),TWt.bi=function(t,e){Dm(this,zz(e,133))},TWt.ei=function(t,e,n){var i;++(i=this,zz(e,133),i).a.e},TWt.fi=function(t,e){Om(this,zz(e,133))},TWt.gi=function(t,e,n){KN(this,zz(e,133),zz(n,133))},TWt.di=function(t,e){sot(this.a)},mZ(q6t,"BasicEMap/1",1033),pDt(1034,63,h8t,mc),TWt.ri=function(t){return P8(mDe,s7t,612,t,0,1)},mZ(q6t,"BasicEMap/2",1034),pDt(1035,eKt,nKt,hw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){return apt(this.a,t)},TWt.Kc=function(){return 0==this.a.f?(pB(),wDe.a):new zk(this.a)},TWt.Mc=function(t){var e;return e=this.a.f,Kpt(this.a,t),this.a.f!=e},TWt.gc=function(){return this.a.f},mZ(q6t,"BasicEMap/3",1035),pDt(1036,28,tKt,fw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){return QBt(this.a,t)},TWt.Kc=function(){return 0==this.a.f?(pB(),wDe.a):new qk(this.a)},TWt.gc=function(){return this.a.f},mZ(q6t,"BasicEMap/4",1036),pDt(1037,eKt,nKt,dw),TWt.$b=function(){this.a.c.$b()},TWt.Hc=function(t){var e,n,i,r,a,o,s,c,u;if(this.a.f>0&&aL(t,42)&&(this.a.qj(),r=null==(s=(c=zz(t,42)).cd())?0:eut(s),a=nF(this.a,r),e=this.a.d[a]))for(n=zz(e.g,367),u=e.i,o=0;o"+this.c},TWt.a=0;var wDe,mDe=mZ(q6t,"BasicEMap/EntryImpl",612);pDt(536,1,{},uc),mZ(q6t,"BasicEMap/View",536),pDt(768,1,{}),TWt.Fb=function(t){return PDt((TX(),lne),t)},TWt.Hb=function(){return zct((TX(),lne))},TWt.Ib=function(){return NEt((TX(),lne))},mZ(q6t,"ECollections/BasicEmptyUnmodifiableEList",768),pDt(1312,1,oKt,yc),TWt.Nb=function(t){hY(this,t)},TWt.Rb=function(t){throw qw(new wm)},TWt.Ob=function(){return!1},TWt.Sb=function(){return!1},TWt.Pb=function(){throw qw(new vm)},TWt.Tb=function(){return 0},TWt.Ub=function(){throw qw(new vm)},TWt.Vb=function(){return-1},TWt.Qb=function(){throw qw(new wm)},TWt.Wb=function(t){throw qw(new wm)},mZ(q6t,"ECollections/BasicEmptyUnmodifiableEList/1",1312),pDt(1310,768,{20:1,14:1,15:1,58:1},Ay),TWt.Vc=function(t,e){N_()},TWt.Fc=function(t){return P_()},TWt.Wc=function(t,e){return B_()},TWt.Gc=function(t){return F_()},TWt.$b=function(){R_()},TWt.Hc=function(t){return!1},TWt.Ic=function(t){return!1},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return vM((TX(),t)),null},TWt.Xc=function(t){return-1},TWt.dc=function(){return!0},TWt.Kc=function(){return this.a},TWt.Yc=function(){return this.a},TWt.Zc=function(t){return this.a},TWt.ii=function(t,e){return j_()},TWt.ji=function(t,e){$_()},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return z_()},TWt.Mc=function(t){return q_()},TWt._c=function(t,e){return H_()},TWt.gc=function(){return 0},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.bd=function(t,e){return TX(),new u1(lne,t,e)},TWt.Pc=function(){return aG((TX(),lne))},TWt.Qc=function(t){return TX(),Ayt(lne,t)},mZ(q6t,"ECollections/EmptyUnmodifiableEList",1310),pDt(1311,768,{20:1,14:1,15:1,58:1,589:1},Ey),TWt.Vc=function(t,e){N_()},TWt.Fc=function(t){return P_()},TWt.Wc=function(t,e){return B_()},TWt.Gc=function(t){return F_()},TWt.$b=function(){R_()},TWt.Hc=function(t){return!1},TWt.Ic=function(t){return!1},TWt.Jc=function(t){n5(this,t)},TWt.Xb=function(t){return vM((TX(),t)),null},TWt.Xc=function(t){return-1},TWt.dc=function(){return!0},TWt.Kc=function(){return this.a},TWt.Yc=function(){return this.a},TWt.Zc=function(t){return this.a},TWt.ii=function(t,e){return j_()},TWt.ji=function(t,e){$_()},TWt.Lc=function(){return new FH(null,new g1(this,16))},TWt.$c=function(t){return z_()},TWt.Mc=function(t){return q_()},TWt._c=function(t,e){return H_()},TWt.gc=function(){return 0},TWt.ad=function(t){$rt(this,t)},TWt.Nc=function(){return new g1(this,16)},TWt.Oc=function(){return new FH(null,new g1(this,16))},TWt.bd=function(t,e){return TX(),new u1(lne,t,e)},TWt.Pc=function(){return aG((TX(),lne))},TWt.Qc=function(t){return TX(),Ayt(lne,t)},TWt.sj=function(){return TX(),TX(),hne},mZ(q6t,"ECollections/EmptyUnmodifiableEMap",1311);var yDe,vDe=dH(q6t,"Enumerator");pDt(281,1,{281:1},aFt),TWt.Fb=function(t){var e;return this===t||!!aL(t,281)&&(e=zz(t,281),this.f==e.f&&mU(this.i,e.i)&&wU(this.a,0!=(256&this.f)?0!=(256&e.f)?e.a:null:0!=(256&e.f)?null:e.a)&&wU(this.d,e.d)&&wU(this.g,e.g)&&wU(this.e,e.e)&&Cwt(this,e))},TWt.Hb=function(){return this.f},TWt.Ib=function(){return Tjt(this)},TWt.f=0;var xDe,kDe,_De,ADe=0,EDe=0,TDe=0,CDe=0,SDe=0,IDe=0,MDe=0,DDe=0,ODe=0,LDe=0,NDe=0,PDe=0,BDe=0;mZ(q6t,"URI",281),pDt(1091,43,nVt,Ty),TWt.zc=function(t,e){return zz(yJ(this,TB(t),zz(e,281)),281)},mZ(q6t,"URI/URICache",1091),pDt(497,63,h8t,fc,rU),TWt.hi=function(){return!0},mZ(q6t,"UniqueEList",497),pDt(581,60,qKt,L9),mZ(q6t,"WrappedException",581);var FDe,RDe=dH(U5t,l7t),jDe=dH(U5t,h7t),$De=dH(U5t,f7t),zDe=dH(U5t,d7t),qDe=dH(U5t,g7t),HDe=dH(U5t,"EClass"),UDe=dH(U5t,"EDataType");pDt(1183,43,nVt,Cy),TWt.xc=function(t){return ZI(t)?TQ(this,t):HI(DV(this.f,t))},mZ(U5t,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1183);var GDe,YDe,ZDe=dH(U5t,"EEnum"),WDe=dH(U5t,p7t),KDe=dH(U5t,b7t),XDe=dH(U5t,w7t),VDe=dH(U5t,m7t),QDe=dH(U5t,y7t);pDt(1029,1,{},hc),TWt.Ib=function(){return"NIL"},mZ(U5t,"EStructuralFeature/Internal/DynamicValueHolder/1",1029),pDt(1028,43,nVt,Sy),TWt.xc=function(t){return ZI(t)?TQ(this,t):HI(DV(this.f,t))},mZ(U5t,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1028);var JDe,tOe,eOe,nOe,iOe,rOe,aOe,oOe,sOe,cOe,uOe,lOe,hOe,fOe,dOe,gOe,pOe,bOe,wOe,mOe,yOe,vOe,xOe,kOe,_Oe,AOe,EOe,TOe,COe,SOe,IOe,MOe=dH(U5t,v7t),DOe=dH(U5t,"EValidator/PatternMatcher"),OOe=dH(x7t,"FeatureMap/Entry");pDt(535,1,{72:1},SI),TWt.ak=function(){return this.a},TWt.dd=function(){return this.b},mZ(d6t,"BasicEObjectImpl/1",535),pDt(1027,1,k7t,II),TWt.Wj=function(t){return K5(this.a,this.b,t)},TWt.fj=function(){return JQ(this.a,this.b)},TWt.Wb=function(t){NQ(this.a,this.b,t)},TWt.Xj=function(){CW(this.a,this.b)},mZ(d6t,"BasicEObjectImpl/4",1027),pDt(1983,1,{108:1}),TWt.bk=function(t){this.e=0==t?EOe:P8(Ote,HWt,1,t,5,1)},TWt.Ch=function(t){return this.e[t]},TWt.Dh=function(t,e){this.e[t]=e},TWt.Eh=function(t){this.e[t]=null},TWt.ck=function(){return this.c},TWt.dk=function(){throw qw(new wm)},TWt.ek=function(){throw qw(new wm)},TWt.fk=function(){return this.d},TWt.gk=function(){return null!=this.e},TWt.hk=function(t){this.c=t},TWt.ik=function(t){throw qw(new wm)},TWt.jk=function(t){throw qw(new wm)},TWt.kk=function(t){this.d=t},mZ(d6t,"BasicEObjectImpl/EPropertiesHolderBaseImpl",1983),pDt(185,1983,{108:1},Fh),TWt.dk=function(){return this.a},TWt.ek=function(){return this.b},TWt.ik=function(t){this.a=t},TWt.jk=function(t){this.b=t},mZ(d6t,"BasicEObjectImpl/EPropertiesHolderImpl",185),pDt(506,97,f6t,vc),TWt.Kg=function(){return this.f},TWt.Pg=function(){return this.k},TWt.Rg=function(t,e){this.g=t,this.i=e},TWt.Tg=function(){return 0==(2&this.j)?this.zh():this.ph().ck()},TWt.Vg=function(){return this.i},TWt.Mg=function(){return 0!=(1&this.j)},TWt.eh=function(){return this.g},TWt.kh=function(){return 0!=(4&this.j)},TWt.ph=function(){return!this.k&&(this.k=new Fh),this.k},TWt.th=function(t){this.ph().hk(t),t?this.j|=2:this.j&=-3},TWt.vh=function(t){this.ph().jk(t),t?this.j|=4:this.j&=-5},TWt.zh=function(){return(XZ(),eOe).S},TWt.i=0,TWt.j=1,mZ(d6t,"EObjectImpl",506),pDt(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},kq),TWt.Ch=function(t){return this.e[t]},TWt.Dh=function(t,e){this.e[t]=e},TWt.Eh=function(t){this.e[t]=null},TWt.Tg=function(){return this.d},TWt.Yg=function(t){return Ogt(this.d,t)},TWt.$g=function(){return this.d},TWt.dh=function(){return null!=this.e},TWt.ph=function(){return!this.k&&(this.k=new xc),this.k},TWt.th=function(t){this.d=t},TWt.yh=function(){var t;return null==this.e&&(t=dZ(this.d),this.e=0==t?TOe:P8(Ote,HWt,1,t,5,1)),this},TWt.Ah=function(){return 0},mZ(d6t,"DynamicEObjectImpl",780),pDt(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},hH),TWt.Fb=function(t){return this===t},TWt.Hb=function(){return CN(this)},TWt.th=function(t){this.d=t,this.b=PNt(t,"key"),this.c=PNt(t,A6t)},TWt.Sh=function(){var t;return-1==this.a&&(t=Q9(this,this.b),this.a=null==t?0:eut(t)),this.a},TWt.cd=function(){return Q9(this,this.b)},TWt.dd=function(){return Q9(this,this.c)},TWt.Th=function(t){this.a=t},TWt.Uh=function(t){NQ(this,this.b,t)},TWt.ed=function(t){var e;return e=Q9(this,this.c),NQ(this,this.c,t),e},TWt.a=0,mZ(d6t,"DynamicEObjectImpl/BasicEMapEntry",1376),pDt(1377,1,{108:1},xc),TWt.bk=function(t){throw qw(new wm)},TWt.Ch=function(t){throw qw(new wm)},TWt.Dh=function(t,e){throw qw(new wm)},TWt.Eh=function(t){throw qw(new wm)},TWt.ck=function(){throw qw(new wm)},TWt.dk=function(){return this.a},TWt.ek=function(){return this.b},TWt.fk=function(){return this.c},TWt.gk=function(){throw qw(new wm)},TWt.hk=function(t){throw qw(new wm)},TWt.ik=function(t){this.a=t},TWt.jk=function(t){this.b=t},TWt.kk=function(t){this.c=t},mZ(d6t,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1377),pDt(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},kc),TWt.Qg=function(t){return gxt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.d;case 2:return n?(!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),this.b):(!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),D8(this.b));case 3:return dJ(this);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),this.a;case 5:return!this.c&&(this.c=new FL(LMe,this,5)),this.c}return Y7(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 3:return this.Cb&&(n=(i=this.Db>>16)>=0?gxt(this,n):this.Cb.ih(this,-1-i,null,n)),XU(this,zz(t,147),n)}return zz(iet(zz(xot(this,16),26)||(wWt(),nOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),nOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),zR(this.b,t,n);case 3:return XU(this,null,n);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),nOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),nOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.d;case 2:return!!this.b&&0!=this.b.f;case 3:return!!dJ(this);case 4:return!!this.a&&0!=this.a.i;case 5:return!!this.c&&0!=this.c.i}return M3(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void wH(this,TB(e));case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),void not(this.b,e);case 3:return void DNt(this,zz(e,147));case 4:return!this.a&&(this.a=new OL(LMe,this,4)),lHt(this.a),!this.a&&(this.a=new OL(LMe,this,4)),void wZ(this.a,zz(e,14));case 5:return!this.c&&(this.c=new FL(LMe,this,5)),lHt(this.c),!this.c&&(this.c=new FL(LMe,this,5)),void wZ(this.c,zz(e,14))}Ndt(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t),e)},TWt.zh=function(){return wWt(),nOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void qit(this,null);case 2:return!this.b&&(this.b=new QP((wWt(),xOe),ZOe,this)),void this.b.c.$b();case 3:return void DNt(this,null);case 4:return!this.a&&(this.a=new OL(LMe,this,4)),void lHt(this.a);case 5:return!this.c&&(this.c=new FL(LMe,this,5)),void lHt(this.c)}Uht(this,t-dZ((wWt(),nOe)),iet(zz(xot(this,16),26)||nOe,t))},TWt.Ib=function(){return Xht(this)},TWt.d=null,mZ(d6t,"EAnnotationImpl",510),pDt(151,705,_7t,v7),TWt.Xh=function(t,e){tO(this,t,zz(e,42))},TWt.lk=function(t,e){return $R(this,zz(t,42),e)},TWt.pi=function(t){return zz(zz(this.c,69).pi(t),133)},TWt.Zh=function(){return zz(this.c,69).Zh()},TWt.$h=function(){return zz(this.c,69).$h()},TWt._h=function(t){return zz(this.c,69)._h(t)},TWt.mk=function(t,e){return zR(this,t,e)},TWt.Wj=function(t){return zz(this.c,76).Wj(t)},TWt.rj=function(){},TWt.fj=function(){return zz(this.c,76).fj()},TWt.tj=function(t,e,n){var i;return(i=zz(Zet(this.b).Nh().Jh(this.b),133)).Th(t),i.Uh(e),i.ed(n),i},TWt.uj=function(){return new Iw(this)},TWt.Wb=function(t){not(this,t)},TWt.Xj=function(){zz(this.c,76).Xj()},mZ(x7t,"EcoreEMap",151),pDt(158,151,_7t,QP),TWt.qj=function(){var t,e,n,i,r;if(null==this.d){for(r=P8(cDe,o7t,63,2*this.f+1,0,1),n=this.c.Kc();n.e!=n.i.gc();)!(t=r[i=((e=zz(n.nj(),133)).Sh()&FWt)%r.length])&&(t=r[i]=new Iw(this)),t.Fc(e);this.d=r}},mZ(d6t,"EAnnotationImpl/1",158),pDt(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1}),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!this.$j();case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return this.$j();case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i)}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void this.Lh(TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void this.ok(zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi())}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),_Oe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void this.Lh(null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void this.ok(1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi())}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){Mxt(this),this.Bb|=1},TWt.Yj=function(){return Mxt(this)},TWt.Zj=function(){return this.t},TWt.$j=function(){var t;return(t=this.t)>1||-1==t},TWt.hi=function(){return 0!=(512&this.Bb)},TWt.nk=function(t,e){return Sht(this,t,e)},TWt.ok=function(t){Pnt(this,t)},TWt.Ib=function(){return jMt(this)},TWt.s=0,TWt.t=1,mZ(d6t,"ETypedElementImpl",284),pDt(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1}),TWt.Qg=function(t){return Pvt(this,t)},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!this.$j();case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this)}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 17:return this.Cb&&(n=(i=this.Db>>16)>=0?Pvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,17,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 17:return Ejt(this,null,17,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return this.$j();case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this)}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void this.ok(zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),kOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void this.ok(1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.Gh=function(){xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.Gj=function(){return this.f},TWt.zj=function(){return ULt(this)},TWt.Hj=function(){return pJ(this)},TWt.Lj=function(){return null},TWt.pk=function(){return this.k},TWt.aj=function(){return this.n},TWt.Mj=function(){return u_t(this)},TWt.Nj=function(){var t,e,n,i,r,a,o,s,c;return this.p||((null==(n=pJ(this)).i&&U$t(n),n.i).length,(i=this.Lj())&&dZ(pJ(i)),t=(o=(r=Mxt(this)).Bj())?0!=(1&o.i)?o==ONe?kee:o==DNe?Oee:o==BNe?Iee:o==PNe?See:o==LNe?Ree:o==FNe?$ee:o==NNe?Eee:Cee:o:null,e=ULt(this),s=r.zj(),gdt(this),0!=(this.Bb&hKt)&&((a=vkt((MCt(),JOe),n))&&a!=this||(a=J1(z9(JOe,this))))?this.p=new DI(this,a):this.$j()?this.rk()?i?0!=(this.Bb&E7t)?t?this.sk()?this.p=new fX(47,t,this,i):this.p=new fX(5,t,this,i):this.sk()?this.p=new g4(46,this,i):this.p=new g4(4,this,i):t?this.sk()?this.p=new fX(49,t,this,i):this.p=new fX(7,t,this,i):this.sk()?this.p=new g4(48,this,i):this.p=new g4(6,this,i):0!=(this.Bb&E7t)?t?t==Hte?this.p=new Cz(50,KMe,this):this.sk()?this.p=new Cz(43,t,this):this.p=new Cz(1,t,this):this.sk()?this.p=new FV(42,this):this.p=new FV(0,this):t?t==Hte?this.p=new Cz(41,KMe,this):this.sk()?this.p=new Cz(45,t,this):this.p=new Cz(3,t,this):this.sk()?this.p=new FV(44,this):this.p=new FV(2,this):aL(r,148)?t==OOe?this.p=new FV(40,this):0!=(512&this.Bb)?0!=(this.Bb&E7t)?this.p=t?new Cz(9,t,this):new FV(8,this):this.p=t?new Cz(11,t,this):new FV(10,this):0!=(this.Bb&E7t)?this.p=t?new Cz(13,t,this):new FV(12,this):this.p=t?new Cz(15,t,this):new FV(14,this):i?(c=i.t)>1||-1==c?this.sk()?0!=(this.Bb&E7t)?this.p=t?new fX(25,t,this,i):new g4(24,this,i):this.p=t?new fX(27,t,this,i):new g4(26,this,i):0!=(this.Bb&E7t)?this.p=t?new fX(29,t,this,i):new g4(28,this,i):this.p=t?new fX(31,t,this,i):new g4(30,this,i):this.sk()?0!=(this.Bb&E7t)?this.p=t?new fX(33,t,this,i):new g4(32,this,i):this.p=t?new fX(35,t,this,i):new g4(34,this,i):0!=(this.Bb&E7t)?this.p=t?new fX(37,t,this,i):new g4(36,this,i):this.p=t?new fX(39,t,this,i):new g4(38,this,i):this.sk()?0!=(this.Bb&E7t)?this.p=t?new Cz(17,t,this):new FV(16,this):this.p=t?new Cz(19,t,this):new FV(18,this):0!=(this.Bb&E7t)?this.p=t?new Cz(21,t,this):new FV(20,this):this.p=t?new Cz(23,t,this):new FV(22,this):this.qk()?this.sk()?this.p=new Sz(zz(r,26),this,i):this.p=new yQ(zz(r,26),this,i):aL(r,148)?t==OOe?this.p=new FV(40,this):0!=(this.Bb&E7t)?this.p=t?new tG(e,s,this,(qgt(),o==DNe?HOe:o==ONe?ROe:o==LNe?UOe:o==BNe?qOe:o==PNe?zOe:o==FNe?YOe:o==NNe?jOe:o==MNe?$Oe:GOe)):new pX(zz(r,148),e,s,this):this.p=t?new JU(e,s,this,(qgt(),o==DNe?HOe:o==ONe?ROe:o==LNe?UOe:o==BNe?qOe:o==PNe?zOe:o==FNe?YOe:o==NNe?jOe:o==MNe?$Oe:GOe)):new gX(zz(r,148),e,s,this):this.rk()?i?0!=(this.Bb&E7t)?this.sk()?this.p=new Nz(zz(r,26),this,i):this.p=new Lz(zz(r,26),this,i):this.sk()?this.p=new Oz(zz(r,26),this,i):this.p=new Iz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.sk()?this.p=new nB(zz(r,26),this):this.p=new eB(zz(r,26),this):this.sk()?this.p=new tB(zz(r,26),this):this.p=new JP(zz(r,26),this):this.sk()?i?0!=(this.Bb&E7t)?this.p=new Pz(zz(r,26),this,i):this.p=new Mz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.p=new rB(zz(r,26),this):this.p=new iB(zz(r,26),this):i?0!=(this.Bb&E7t)?this.p=new Bz(zz(r,26),this,i):this.p=new Dz(zz(r,26),this,i):0!=(this.Bb&E7t)?this.p=new aB(zz(r,26),this):this.p=new aU(zz(r,26),this)),this.p},TWt.Ij=function(){return 0!=(this.Bb&k6t)},TWt.qk=function(){return!1},TWt.rk=function(){return!1},TWt.Jj=function(){return 0!=(this.Bb&hKt)},TWt.Oj=function(){return ltt(this)},TWt.sk=function(){return!1},TWt.Kj=function(){return 0!=(this.Bb&E7t)},TWt.tk=function(t){this.k=t},TWt.Lh=function(t){QJ(this,t)},TWt.Ib=function(){return AFt(this)},TWt.e=!1,TWt.n=0,mZ(d6t,"EStructuralFeatureImpl",449),pDt(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},My),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),!!PIt(this);case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this);case 18:return lN(),0!=(this.Bb&h6t);case 19:return e?cst(this):P6(this)}return Y7(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return PIt(this);case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this);case 18:return 0!=(this.Bb&h6t);case 19:return!!P6(this)}return M3(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Yk(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)));case 18:return void Gft(this,Hv(AB(e)))}Ndt(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t),e)},TWt.zh=function(){return wWt(),iOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return this.b=0,void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1);case 18:return void Gft(this,!1)}Uht(this,t-dZ((wWt(),iOe)),iet(zz(xot(this,16),26)||iOe,t))},TWt.Gh=function(){cst(this),xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.$j=function(){return PIt(this)},TWt.nk=function(t,e){return this.b=0,this.a=null,Sht(this,t,e)},TWt.ok=function(t){Yk(this,t)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?AFt(this):((t=new hN(AFt(this))).a+=" (iD: ",v_(t,0!=(this.Bb&h6t)),t.a+=")",t.a)},TWt.b=0,mZ(d6t,"EAttributeImpl",322),pDt(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1}),TWt.uk=function(t){return t.Tg()==this},TWt.Qg=function(t){return fvt(this,t)},TWt.Rg=function(t,e){this.w=null,this.Db=e<<16|255&this.Db,this.Cb=t},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return null!=this.D?this.D:this.B;case 3:return rvt(this);case 4:return this.zj();case 5:return this.F;case 6:return e?Zet(this):gJ(this);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),this.A}return Y7(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Qj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n)}return zz(iet(zz(xot(this,16),26)||this.zh(),e),66).Nj().Rj(this,fbt(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return null!=this.zj();case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i}return M3(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14))}Ndt(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t),e)},TWt.zh=function(){return wWt(),aOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A)}Uht(this,t-dZ(this.zh()),iet(zz(xot(this,16),26)||this.zh(),t))},TWt.yj=function(){var t;return-1==this.G&&(this.G=(t=Zet(this))?cmt(t.Mh(),this):-1),this.G},TWt.zj=function(){return null},TWt.Aj=function(){return Zet(this)},TWt.vk=function(){return this.v},TWt.Bj=function(){return rvt(this)},TWt.Cj=function(){return null!=this.D?this.D:this.B},TWt.Dj=function(){return this.F},TWt.wj=function(t){return C$t(this,t)},TWt.wk=function(t){this.v=t},TWt.xk=function(t){Zrt(this,t)},TWt.yk=function(t){this.C=t},TWt.Lh=function(t){JJ(this,t)},TWt.Ib=function(){return Igt(this)},TWt.C=null,TWt.D=null,TWt.G=-1,mZ(d6t,"EClassifierImpl",351),pDt(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},Rh),TWt.uk=function(t){return XF(this,t.Tg())},TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return null!=this.D?this.D:this.B;case 3:return rvt(this);case 4:return null;case 5:return this.F;case 6:return e?Zet(this):gJ(this);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),this.A;case 8:return lN(),0!=(256&this.Bb);case 9:return lN(),0!=(512&this.Bb);case 10:return xV(this);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),this.q;case 12:return Qzt(this);case 13:return Rzt(this);case 14:return Rzt(this),this.r;case 15:return Qzt(this),this.k;case 16:return KCt(this);case 17:return wzt(this);case 18:return U$t(this);case 19:return ILt(this);case 20:return Qzt(this),this.o;case 21:return!this.s&&(this.s=new nY($De,this,21,17)),this.s;case 22:return o4(this);case 23:return HBt(this)}return Y7(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 6:return this.Cb&&(n=(i=this.Db>>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),Qgt(this.q,t,n);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),Qgt(this.s,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),rOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),rOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n);case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),$wt(this.q,t,n);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),$wt(this.s,t,n);case 22:return $wt(o4(this),t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),rOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),rOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return!1;case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i;case 8:return 0!=(256&this.Bb);case 9:return 0!=(512&this.Bb);case 10:return!(!this.u||0==o4(this.u.a).i||this.n&&Rmt(this.n));case 11:return!!this.q&&0!=this.q.i;case 12:return 0!=Qzt(this).i;case 13:return 0!=Rzt(this).i;case 14:return Rzt(this),0!=this.r.i;case 15:return Qzt(this),0!=this.k.i;case 16:return 0!=KCt(this).i;case 17:return 0!=wzt(this).i;case 18:return 0!=U$t(this).i;case 19:return 0!=ILt(this).i;case 20:return Qzt(this),!!this.o;case 21:return!!this.s&&0!=this.s.i;case 22:return!!this.n&&Rmt(this.n);case 23:return 0!=HBt(this).i}return M3(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t))},TWt.oh=function(t){return(null==this.i||this.q&&0!=this.q.i?null:PNt(this,t))||hYt(this,t)},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14));case 8:return void Jht(this,Hv(AB(e)));case 9:return void nft(this,Hv(AB(e)));case 10:return yHt(xV(this)),void wZ(xV(this),zz(e,14));case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),lHt(this.q),!this.q&&(this.q=new nY(XDe,this,11,10)),void wZ(this.q,zz(e,14));case 21:return!this.s&&(this.s=new nY($De,this,21,17)),lHt(this.s),!this.s&&(this.s=new nY($De,this,21,17)),void wZ(this.s,zz(e,14));case 22:return lHt(o4(this)),void wZ(o4(this),zz(e,14))}Ndt(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t),e)},TWt.zh=function(){return wWt(),rOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A);case 8:return void Jht(this,!1);case 9:return void nft(this,!1);case 10:return void(this.u&&yHt(this.u));case 11:return!this.q&&(this.q=new nY(XDe,this,11,10)),void lHt(this.q);case 21:return!this.s&&(this.s=new nY($De,this,21,17)),void lHt(this.s);case 22:return void(this.n&&lHt(this.n))}Uht(this,t-dZ((wWt(),rOe)),iet(zz(xot(this,16),26)||rOe,t))},TWt.Gh=function(){var t,e;if(Qzt(this),Rzt(this),KCt(this),wzt(this),U$t(this),ILt(this),HBt(this),o6(Zz(C5(this))),this.s)for(t=0,e=this.s.i;t=0;--e)Ket(this,e);return Vgt(this,t)},TWt.Xj=function(){lHt(this)},TWt.oi=function(t,e){return $nt(this,t,e)},mZ(x7t,"EcoreEList",622),pDt(496,622,R7t,vq),TWt.ai=function(){return!1},TWt.aj=function(){return this.c},TWt.bj=function(){return!1},TWt.Fk=function(){return!0},TWt.hi=function(){return!0},TWt.li=function(t,e){return e},TWt.ni=function(){return!1},TWt.c=0,mZ(x7t,"EObjectEList",496),pDt(85,496,R7t,OL),TWt.bj=function(){return!0},TWt.Dk=function(){return!1},TWt.rk=function(){return!0},mZ(x7t,"EObjectContainmentEList",85),pDt(545,85,R7t,LL),TWt.ci=function(){this.b=!0},TWt.fj=function(){return this.b},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.b,this.b=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.b=!1},TWt.b=!1,mZ(x7t,"EObjectContainmentEList/Unsettable",545),pDt(1140,545,R7t,VU),TWt.ii=function(t,e){var n,i;return n=zz(Mft(this,t,e),87),yD(this.e)&&Lm(this,new k7(this.a,7,(wWt(),oOe),rft(e),aL(i=n.c,88)?zz(i,26):pOe,t)),n},TWt.jj=function(t,e){return tpt(this,zz(t,87),e)},TWt.kj=function(t,e){return Jgt(this,zz(t,87),e)},TWt.lj=function(t,e,n){return $kt(this,zz(t,87),zz(e,87),n)},TWt.Zi=function(t,e,n,i,r){switch(t){case 3:return vJ(this,t,e,n,i,this.i>1);case 5:return vJ(this,t,e,n,i,this.i-zz(n,15).gc()>0);default:return new N9(this.e,t,this.c,e,n,i,!0)}},TWt.ij=function(){return!0},TWt.fj=function(){return Rmt(this)},TWt.Xj=function(){lHt(this)},mZ(d6t,"EClassImpl/1",1140),pDt(1154,1153,t7t),TWt.ui=function(t){var e,n,i,r,a,o,s;if(8!=(n=t.xi())){if(0==(i=swt(t)))switch(n){case 1:case 9:null!=(s=t.Bi())&&(!(e=C5(zz(s,473))).c&&(e.c=new zc),utt(e.c,t.Ai())),null!=(o=t.zi())&&0==(1&(r=zz(o,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 3:null!=(o=t.zi())&&0==(1&(r=zz(o,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 5:if(null!=(o=t.zi()))for(a=zz(o,14).Kc();a.Ob();)0==(1&(r=zz(a.Pb(),473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),h7(e.c,zz(t.Ai(),26)));break;case 4:null!=(s=t.Bi())&&0==(1&(r=zz(s,473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),utt(e.c,t.Ai()));break;case 6:if(null!=(s=t.Bi()))for(a=zz(s,14).Kc();a.Ob();)0==(1&(r=zz(a.Pb(),473)).Bb)&&(!(e=C5(r)).c&&(e.c=new zc),utt(e.c,t.Ai()))}this.Hk(i)}},TWt.Hk=function(t){bFt(this,t)},TWt.b=63,mZ(d6t,"ESuperAdapter",1154),pDt(1155,1154,t7t,pw),TWt.Hk=function(t){OSt(this,t)},mZ(d6t,"EClassImpl/10",1155),pDt(1144,696,R7t),TWt.Vh=function(t,e){return qAt(this,t,e)},TWt.Wh=function(t){return gyt(this,t)},TWt.Xh=function(t,e){Mht(this,t,e)},TWt.Yh=function(t){a6(this,t)},TWt.pi=function(t){return $7(this,t)},TWt.mi=function(t,e){return ctt(this,t,e)},TWt.lk=function(t,e){throw qw(new wm)},TWt.Zh=function(){return new oP(this)},TWt.$h=function(){return new sP(this)},TWt._h=function(t){return lit(this,t)},TWt.mk=function(t,e){throw qw(new wm)},TWt.Wj=function(t){return this},TWt.fj=function(){return 0!=this.i},TWt.Wb=function(t){throw qw(new wm)},TWt.Xj=function(){throw qw(new wm)},mZ(x7t,"EcoreEList/UnmodifiableEList",1144),pDt(319,1144,R7t,NM),TWt.ni=function(){return!1},mZ(x7t,"EcoreEList/UnmodifiableEList/FastCompare",319),pDt(1147,319,R7t,bct),TWt.Xc=function(t){var e,n;if(aL(t,170)&&-1!=(e=zz(t,170).aj()))for(n=this.i;e4){if(!this.wj(t))return!1;if(this.rk()){if(o=(e=(n=zz(t,49)).Ug())==this.b&&(this.Dk()?n.Og(n.Vg(),zz(iet(kV(this.b),this.aj()).Yj(),26).Bj())==Imt(zz(iet(kV(this.b),this.aj()),18)).n:-1-n.Vg()==this.aj()),this.Ek()&&!o&&!e&&n.Zg())for(i=0;i1||-1==n)},TWt.Dk=function(){var t;return!!aL(t=iet(kV(this.b),this.aj()),99)&&!!Imt(zz(t,18))},TWt.Ek=function(){var t;return!!aL(t=iet(kV(this.b),this.aj()),99)&&0!=(zz(t,18).Bb&qXt)},TWt.Xc=function(t){var e,n,i;if((n=this.Qi(t))>=0)return n;if(this.Fk())for(e=0,i=this.Vi();e=0;--t)iUt(this,t,this.Oi(t));return this.Wi()},TWt.Qc=function(t){var e;if(this.Ek())for(e=this.Vi()-1;e>=0;--e)iUt(this,e,this.Oi(e));return this.Xi(t)},TWt.Xj=function(){yHt(this)},TWt.oi=function(t,e){return z7(this,t,e)},mZ(x7t,"DelegatingEcoreEList",742),pDt(1150,742,H7t,sF),TWt.Hi=function(t,e){fB(this,t,zz(e,26))},TWt.Ii=function(t){nO(this,zz(t,26))},TWt.Oi=function(t){var e;return aL(e=zz(Ket(o4(this.a),t),87).c,88)?zz(e,26):(wWt(),pOe)},TWt.Ti=function(t){var e;return aL(e=zz(fBt(o4(this.a),t),87).c,88)?zz(e,26):(wWt(),pOe)},TWt.Ui=function(t,e){return byt(this,t,zz(e,26))},TWt.ai=function(){return!1},TWt.Zi=function(t,e,n,i,r){return null},TWt.Ji=function(){return new ww(this)},TWt.Ki=function(){lHt(o4(this.a))},TWt.Li=function(t){return Zht(this,t)},TWt.Mi=function(t){var e;for(e=t.Kc();e.Ob();)if(!Zht(this,e.Pb()))return!1;return!0},TWt.Ni=function(t){var e,n,i;if(aL(t,15)&&(i=zz(t,15)).gc()==o4(this.a).i){for(e=i.Kc(),n=new DL(this);e.Ob();)if(UI(e.Pb())!==UI(kwt(n)))return!1;return!0}return!1},TWt.Pi=function(){var t,e,n,i;for(e=1,t=new DL(o4(this.a));t.e!=t.i.gc();)e=31*e+((n=aL(i=zz(kwt(t),87).c,88)?zz(i,26):(wWt(),pOe))?CN(n):0);return e},TWt.Qi=function(t){var e,n,i,r;for(i=0,n=new DL(o4(this.a));n.e!=n.i.gc();){if(e=zz(kwt(n),87),UI(t)===UI(aL(r=e.c,88)?zz(r,26):(wWt(),pOe)))return i;++i}return-1},TWt.Ri=function(){return 0==o4(this.a).i},TWt.Si=function(){return null},TWt.Vi=function(){return o4(this.a).i},TWt.Wi=function(){var t,e,n,i,r,a;for(a=o4(this.a).i,r=P8(Ote,HWt,1,a,5,1),n=0,e=new DL(o4(this.a));e.e!=e.i.gc();)t=zz(kwt(e),87),r[n++]=aL(i=t.c,88)?zz(i,26):(wWt(),pOe);return r},TWt.Xi=function(t){var e,n,i,r;for(r=o4(this.a).i,t.lengthr&&OZ(t,r,null),n=0,e=new DL(o4(this.a));e.e!=e.i.gc();)OZ(t,n++,aL(i=zz(kwt(e),87).c,88)?zz(i,26):(wWt(),pOe));return t},TWt.Yi=function(){var t,e,n,i,r;for((r=new Tx).a+="[",t=o4(this.a),e=0,i=o4(this.a).i;e>16)>=0?fvt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,6,n);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),Qgt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),cOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),cOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 6:return Ejt(this,null,6,n);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),$wt(this.A,t,n);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),cOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),cOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return null!=this.D&&this.D==this.F;case 3:return!!rvt(this);case 4:return!!Vut(this);case 5:return null!=this.F&&this.F!=this.D&&this.F!=this.B;case 6:return!!gJ(this);case 7:return!!this.A&&0!=this.A.i;case 8:return 0==(256&this.Bb);case 9:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void JJ(this,TB(e));case 2:return void ID(this,TB(e));case 5:return void QHt(this,TB(e));case 7:return!this.A&&(this.A=new NL(MOe,this,7)),lHt(this.A),!this.A&&(this.A=new NL(MOe,this,7)),void wZ(this.A,zz(e,14));case 8:return void tft(this,Hv(AB(e)));case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),lHt(this.a),!this.a&&(this.a=new nY(WDe,this,9,5)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t),e)},TWt.zh=function(){return wWt(),cOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,179)&&(zz(this.Cb,179).tb=null),void Prt(this,null);case 2:return Fut(this,null),void Bnt(this,this.D);case 5:return void QHt(this,null);case 7:return!this.A&&(this.A=new NL(MOe,this,7)),void lHt(this.A);case 8:return void tft(this,!0);case 9:return!this.a&&(this.a=new nY(WDe,this,9,5)),void lHt(this.a)}Uht(this,t-dZ((wWt(),cOe)),iet(zz(xot(this,16),26)||cOe,t))},TWt.Gh=function(){var t,e;if(this.a)for(t=0,e=this.a.i;t>16==5?zz(this.Cb,671):null}return Y7(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 5:return this.Cb&&(n=(i=this.Db>>16)>=0?dxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,5,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),uOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),uOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 5:return Ejt(this,null,5,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),uOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),uOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0!=this.d;case 3:return!!this.b;case 4:return null!=this.c;case 5:return!(this.Db>>16!=5||!zz(this.Cb,671))}return M3(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Lnt(this,zz(e,19).a);case 3:return void wMt(this,zz(e,1940));case 4:return void zit(this,TB(e))}Ndt(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t),e)},TWt.zh=function(){return wWt(),uOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Lnt(this,0);case 3:return void wMt(this,null);case 4:return void zit(this,null)}Uht(this,t-dZ((wWt(),uOe)),iet(zz(xot(this,16),26)||uOe,t))},TWt.Ib=function(){var t;return null==(t=this.c)?this.zb:t},TWt.b=null,TWt.c=null,TWt.d=0,mZ(d6t,"EEnumLiteralImpl",573);var LOe,NOe,POe,BOe=dH(d6t,"EFactoryImpl/InternalEDateTimeFormat");pDt(489,1,{2015:1},mw),mZ(d6t,"EFactoryImpl/1ClientInternalEDateTimeFormat",489),pDt(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},Rw),TWt.Sg=function(t,e,n){var i;return n=Ejt(this,t,e,n),this.e&&aL(t,170)&&(i=kLt(this,this.e))!=this.c&&(n=sGt(this,i,n)),n},TWt._g=function(t,e,n){switch(t){case 0:return this.f;case 1:return!this.d&&(this.d=new OL(KDe,this,1)),this.d;case 2:return e?d$t(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return e?Umt(this):this.a}return Y7(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return eht(this,null,n);case 1:return!this.d&&(this.d=new OL(KDe,this,1)),$wt(this.d,t,n);case 3:return tht(this,null,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),hOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),hOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.f;case 1:return!!this.d&&0!=this.d.i;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return M3(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t))},TWt.sh=function(t,e){switch(t){case 0:return void __t(this,zz(e,87));case 1:return!this.d&&(this.d=new OL(KDe,this,1)),lHt(this.d),!this.d&&(this.d=new OL(KDe,this,1)),void wZ(this.d,zz(e,14));case 3:return void k_t(this,zz(e,87));case 4:return void FEt(this,zz(e,836));case 5:return void ont(this,zz(e,138))}Ndt(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t),e)},TWt.zh=function(){return wWt(),hOe},TWt.Bh=function(t){switch(t){case 0:return void __t(this,null);case 1:return!this.d&&(this.d=new OL(KDe,this,1)),void lHt(this.d);case 3:return void k_t(this,null);case 4:return void FEt(this,null);case 5:return void ont(this,null)}Uht(this,t-dZ((wWt(),hOe)),iet(zz(xot(this,16),26)||hOe,t))},TWt.Ib=function(){var t;return(t=new fN(SOt(this))).a+=" (expression: ",gqt(this,t),t.a+=")",t.a},mZ(d6t,"EGenericTypeImpl",241),pDt(1969,1964,U7t),TWt.Xh=function(t,e){tF(this,t,e)},TWt.lk=function(t,e){return tF(this,this.gc(),t),e},TWt.pi=function(t){return Fwt(this.Gi(),t)},TWt.Zh=function(){return this.$h()},TWt.Gi=function(){return new Cw(this)},TWt.$h=function(){return this._h(0)},TWt._h=function(t){return this.Gi().Zc(t)},TWt.mk=function(t,e){return xgt(this,t,!0),e},TWt.ii=function(t,e){var n;return n=nxt(this,e),this.Zc(t).Rb(n),n},TWt.ji=function(t,e){xgt(this,e,!0),this.Zc(t).Rb(e)},mZ(x7t,"AbstractSequentialInternalEList",1969),pDt(486,1969,U7t,XN),TWt.pi=function(t){return Fwt(this.Gi(),t)},TWt.Zh=function(){return null==this.b?(VE(),VE(),POe):this.Jk()},TWt.Gi=function(){return new BM(this.a,this.b)},TWt.$h=function(){return null==this.b?(VE(),VE(),POe):this.Jk()},TWt._h=function(t){var e,n;if(null==this.b){if(t<0||t>1)throw qw(new Dv(i7t+t+", size=0"));return VE(),VE(),POe}for(n=this.Jk(),e=0;e0;)if(e=this.c[--this.d],(!this.e||e.Gj()!=NMe||0!=e.aj())&&(!this.Mk()||this.b.mh(e)))if(a=this.b.bh(e,this.Lk()),this.f=(JE(),zz(e,66).Oj()),this.f||e.$j()){if(this.Lk()?(i=zz(a,15),this.k=i):(i=zz(a,69),this.k=this.j=i),aL(this.k,54)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j._h(this.k.gc()):this.k.Zc(this.k.gc()),this.p?_Ct(this,this.p):pSt(this))return r=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?((t=zz(r,72)).ak(),n=t.dd(),this.i=n):(n=r,this.i=n),this.g=-3,!0}else if(null!=a)return this.k=null,this.p=null,n=a,this.i=n,this.g=-2,!0;return this.k=null,this.p=null,this.g=-1,!1}},TWt.Pb=function(){return Tot(this)},TWt.Tb=function(){return this.a},TWt.Ub=function(){var t;if(this.g<-1||this.Sb())return--this.a,this.g=0,t=this.i,this.Sb(),t;throw qw(new vm)},TWt.Vb=function(){return this.a-1},TWt.Qb=function(){throw qw(new wm)},TWt.Lk=function(){return!1},TWt.Wb=function(t){throw qw(new wm)},TWt.Mk=function(){return!0},TWt.a=0,TWt.d=0,TWt.f=!1,TWt.g=0,TWt.n=0,TWt.o=0,mZ(x7t,"EContentsEList/FeatureIteratorImpl",279),pDt(697,279,G7t,KP),TWt.Lk=function(){return!0},mZ(x7t,"EContentsEList/ResolvingFeatureIteratorImpl",697),pDt(1157,697,G7t,VP),TWt.Mk=function(){return!1},mZ(d6t,"ENamedElementImpl/1/1",1157),pDt(1158,279,G7t,XP),TWt.Mk=function(){return!1},mZ(d6t,"ENamedElementImpl/1/2",1158),pDt(36,143,n7t,h4,f4,tY,x7,N9,e6,Hnt,T0,Unt,C0,Q5,S0,Znt,I0,J5,M0,Gnt,D0,eY,k7,UX,Ynt,O0,t6,L0),TWt._i=function(){return l7(this)},TWt.gj=function(){var t;return(t=l7(this))?t.zj():null},TWt.yi=function(t){return-1==this.b&&this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj())),this.c.Og(this.b,t)},TWt.Ai=function(){return this.c},TWt.hj=function(){var t;return!!(t=l7(this))&&t.Kj()},TWt.b=-1,mZ(d6t,"ENotificationImpl",36),pDt(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},Oy),TWt.Qg=function(t){return Sxt(this,t)},TWt._g=function(t,e,n){var i;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(i=this.t)>1||-1==i;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?zz(this.Cb,26):null;case 11:return!this.d&&(this.d=new NL(MOe,this,11)),this.d;case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),this.c;case 13:return!this.a&&(this.a=new cF(this,this)),this.a;case 14:return q9(this)}return Y7(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 10:return this.Cb&&(n=(i=this.Db>>16)>=0?Sxt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,10,n);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),Qgt(this.c,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),bOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),bOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 10:return Ejt(this,null,10,n);case 11:return!this.d&&(this.d=new NL(MOe,this,11)),$wt(this.d,t,n);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),$wt(this.c,t,n);case 14:return $wt(q9(this),t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),bOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),bOe)),t,n)},TWt.lh=function(t){var e;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(e=this.t)>1||-1==e;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return!(this.Db>>16!=10||!zz(this.Cb,26));case 11:return!!this.d&&0!=this.d.i;case 12:return!!this.c&&0!=this.c.i;case 13:return!(!this.a||0==q9(this.a.a).i||this.b&&jmt(this.b));case 14:return!!this.b&&jmt(this.b)}return M3(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Pnt(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 11:return!this.d&&(this.d=new NL(MOe,this,11)),lHt(this.d),!this.d&&(this.d=new NL(MOe,this,11)),void wZ(this.d,zz(e,14));case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),lHt(this.c),!this.c&&(this.c=new nY(VDe,this,12,10)),void wZ(this.c,zz(e,14));case 13:return!this.a&&(this.a=new cF(this,this)),yHt(this.a),!this.a&&(this.a=new cF(this,this)),void wZ(this.a,zz(e,14));case 14:return lHt(q9(this)),void wZ(q9(this),zz(e,14))}Ndt(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t),e)},TWt.zh=function(){return wWt(),bOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 11:return!this.d&&(this.d=new NL(MOe,this,11)),void lHt(this.d);case 12:return!this.c&&(this.c=new nY(VDe,this,12,10)),void lHt(this.c);case 13:return void(this.a&&yHt(this.a));case 14:return void(this.b&&lHt(this.b))}Uht(this,t-dZ((wWt(),bOe)),iet(zz(xot(this,16),26)||bOe,t))},TWt.Gh=function(){var t,e;if(this.c)for(t=0,e=this.c.i;ti&&OZ(t,i,null),n=0,e=new DL(q9(this.a));e.e!=e.i.gc();)OZ(t,n++,zz(kwt(e),87).c||(wWt(),fOe));return t},TWt.Yi=function(){var t,e,n,i;for((i=new Tx).a+="[",t=q9(this.a),e=0,n=q9(this.a).i;e1);case 5:return vJ(this,t,e,n,i,this.i-zz(n,15).gc()>0);default:return new N9(this.e,t,this.c,e,n,i,!0)}},TWt.ij=function(){return!0},TWt.fj=function(){return jmt(this)},TWt.Xj=function(){lHt(this)},mZ(d6t,"EOperationImpl/2",1341),pDt(498,1,{1938:1,498:1},MI),mZ(d6t,"EPackageImpl/1",498),pDt(16,85,R7t,nY),TWt.zk=function(){return this.d},TWt.Ak=function(){return this.b},TWt.Dk=function(){return!0},TWt.b=0,mZ(x7t,"EObjectContainmentWithInverseEList",16),pDt(353,16,R7t,nR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentWithInverseEList/Resolving",353),pDt(298,353,R7t,QG),TWt.ci=function(){this.a.tb=null},mZ(d6t,"EPackageImpl/2",298),pDt(1228,1,{},Mc),mZ(d6t,"EPackageImpl/3",1228),pDt(718,43,nVt,Ny),TWt._b=function(t){return ZI(t)?nV(this,t):!!DV(this.f,t)},mZ(d6t,"EPackageRegistryImpl",718),pDt(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},Ly),TWt.Qg=function(t){return Ixt(this,t)},TWt._g=function(t,e,n){var i;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(i=this.t)>1||-1==i;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?zz(this.Cb,59):null}return Y7(this,t-dZ((wWt(),yOe)),iet(zz(xot(this,16),26)||yOe,t),e,n)},TWt.hh=function(t,e,n){var i;switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),Qgt(this.Ab,t,n);case 10:return this.Cb&&(n=(i=this.Db>>16)>=0?Ixt(this,n):this.Cb.ih(this,-1-i,null,n)),Ejt(this,t,10,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),yOe),e),66).Nj().Qj(this,fbt(this),e-dZ((wWt(),yOe)),t,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 9:return bZ(this,n);case 10:return Ejt(this,null,10,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),yOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),yOe)),t,n)},TWt.lh=function(t){var e;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(e=this.t)>1||-1==e;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return!(this.Db>>16!=10||!zz(this.Cb,59))}return M3(this,t-dZ((wWt(),yOe)),iet(zz(xot(this,16),26)||yOe,t))},TWt.zh=function(){return wWt(),yOe},mZ(d6t,"EParameterImpl",509),pDt(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},wB),TWt._g=function(t,e,n){var i,r;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return lN(),0!=(256&this.Bb);case 3:return lN(),0!=(512&this.Bb);case 4:return rft(this.s);case 5:return rft(this.t);case 6:return lN(),(r=this.t)>1||-1==r;case 7:return lN(),this.s>=1;case 8:return e?Mxt(this):this.r;case 9:return this.q;case 10:return lN(),0!=(this.Bb&k6t);case 11:return lN(),0!=(this.Bb&T7t);case 12:return lN(),0!=(this.Bb&$Xt);case 13:return this.j;case 14:return ULt(this);case 15:return lN(),0!=(this.Bb&E7t);case 16:return lN(),0!=(this.Bb&hKt);case 17:return pJ(this);case 18:return lN(),0!=(this.Bb&h6t);case 19:return lN(),!(!(i=Imt(this))||0==(i.Bb&h6t));case 20:return lN(),0!=(this.Bb&qXt);case 21:return e?Imt(this):this.b;case 22:return e?Mct(this):R5(this);case 23:return!this.a&&(this.a=new FL(zDe,this,23)),this.a}return Y7(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t),e,n)},TWt.lh=function(t){var e,n;switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return 0==(256&this.Bb);case 3:return 0==(512&this.Bb);case 4:return 0!=this.s;case 5:return 1!=this.t;case 6:return(n=this.t)>1||-1==n;case 7:return this.s>=1;case 8:return!!this.r&&!this.q.e&&0==vW(this.q).i;case 9:return!(!this.q||this.r&&!this.q.e&&0==vW(this.q).i);case 10:return 0==(this.Bb&k6t);case 11:return 0!=(this.Bb&T7t);case 12:return 0!=(this.Bb&$Xt);case 13:return null!=this.j;case 14:return null!=ULt(this);case 15:return 0!=(this.Bb&E7t);case 16:return 0!=(this.Bb&hKt);case 17:return!!pJ(this);case 18:return 0!=(this.Bb&h6t);case 19:return!!(e=Imt(this))&&0!=(e.Bb&h6t);case 20:return 0==(this.Bb&qXt);case 21:return!!this.b;case 22:return!!R5(this);case 23:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t))},TWt.sh=function(t,e){var n;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void QJ(this,TB(e));case 2:return void Qht(this,Hv(AB(e)));case 3:return void eft(this,Hv(AB(e)));case 4:return void Nnt(this,zz(e,19).a);case 5:return void Pnt(this,zz(e,19).a);case 8:return void Mlt(this,zz(e,138));case 9:return void((n=HAt(this,zz(e,87),null))&&n.Fi());case 10:return void Oft(this,Hv(AB(e)));case 11:return void Pft(this,Hv(AB(e)));case 12:return void Lft(this,Hv(AB(e)));case 13:return void jI(this,TB(e));case 15:return void Nft(this,Hv(AB(e)));case 16:return void Uft(this,Hv(AB(e)));case 18:return void VJ(this,Hv(AB(e)));case 20:return void Zft(this,Hv(AB(e)));case 21:return void art(this,zz(e,18));case 23:return!this.a&&(this.a=new FL(zDe,this,23)),lHt(this.a),!this.a&&(this.a=new FL(zDe,this,23)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t),e)},TWt.zh=function(){return wWt(),vOe},TWt.Bh=function(t){var e;switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),4),void Prt(this,null);case 2:return void Qht(this,!0);case 3:return void eft(this,!0);case 4:return void Nnt(this,0);case 5:return void Pnt(this,1);case 8:return void Mlt(this,null);case 9:return void((e=HAt(this,null,null))&&e.Fi());case 10:return void Oft(this,!0);case 11:return void Pft(this,!1);case 12:return void Lft(this,!1);case 13:return this.i=null,void srt(this,null);case 15:return void Nft(this,!1);case 16:return void Uft(this,!1);case 18:return Yft(this,!1),void(aL(this.Cb,88)&&OSt(C5(zz(this.Cb,88)),2));case 20:return void Zft(this,!0);case 21:return void art(this,null);case 23:return!this.a&&(this.a=new FL(zDe,this,23)),void lHt(this.a)}Uht(this,t-dZ((wWt(),vOe)),iet(zz(xot(this,16),26)||vOe,t))},TWt.Gh=function(){Mct(this),xK(z9((MCt(),JOe),this)),Mxt(this),this.Bb|=1},TWt.Lj=function(){return Imt(this)},TWt.qk=function(){var t;return!!(t=Imt(this))&&0!=(t.Bb&h6t)},TWt.rk=function(){return 0!=(this.Bb&h6t)},TWt.sk=function(){return 0!=(this.Bb&qXt)},TWt.nk=function(t,e){return this.c=null,Sht(this,t,e)},TWt.Ib=function(){var t;return 0!=(64&this.Db)?AFt(this):((t=new hN(AFt(this))).a+=" (containment: ",v_(t,0!=(this.Bb&h6t)),t.a+=", resolveProxies: ",v_(t,0!=(this.Bb&qXt)),t.a+=")",t.a)},mZ(d6t,"EReferenceImpl",99),pDt(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},Dc),TWt.Fb=function(t){return this===t},TWt.cd=function(){return this.b},TWt.dd=function(){return this.c},TWt.Hb=function(){return CN(this)},TWt.Uh=function(t){mH(this,TB(t))},TWt.ed=function(t){return Oq(this,TB(t))},TWt._g=function(t,e,n){switch(t){case 0:return this.b;case 1:return this.c}return Y7(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t),e,n)},TWt.lh=function(t){switch(t){case 0:return null!=this.b;case 1:return null!=this.c}return M3(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t))},TWt.sh=function(t,e){switch(t){case 0:return void yH(this,TB(e));case 1:return void jit(this,TB(e))}Ndt(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t),e)},TWt.zh=function(){return wWt(),xOe},TWt.Bh=function(t){switch(t){case 0:return void Rit(this,null);case 1:return void jit(this,null)}Uht(this,t-dZ((wWt(),xOe)),iet(zz(xot(this,16),26)||xOe,t))},TWt.Sh=function(){var t;return-1==this.a&&(t=this.b,this.a=null==t?0:ymt(t)),this.a},TWt.Th=function(t){this.a=t},TWt.Ib=function(){var t;return 0!=(64&this.Db)?SOt(this):((t=new hN(SOt(this))).a+=" (key: ",aM(t,this.b),t.a+=", value: ",aM(t,this.c),t.a+=")",t.a)},TWt.a=-1,TWt.b=null,TWt.c=null;var FOe,ROe,jOe,$Oe,zOe,qOe,HOe,UOe,GOe,YOe,ZOe=mZ(d6t,"EStringToStringMapEntryImpl",548),WOe=dH(x7t,"FeatureMap/Entry/Internal");pDt(565,1,Y7t),TWt.Ok=function(t){return this.Pk(zz(t,49))},TWt.Pk=function(t){return this.Ok(t)},TWt.Fb=function(t){var e,n;return this===t||!!aL(t,72)&&(e=zz(t,72)).ak()==this.c&&(null==(n=this.dd())?null==e.dd():Pht(n,e.dd()))},TWt.ak=function(){return this.c},TWt.Hb=function(){var t;return t=this.dd(),eut(this.c)^(null==t?0:eut(t))},TWt.Ib=function(){var t,e;return e=Zet((t=this.c).Hj()).Ph(),t.ne(),(null!=e&&0!=e.length?e+":"+t.ne():t.ne())+"="+this.dd()},mZ(d6t,"EStructuralFeatureImpl/BasicFeatureMapEntry",565),pDt(776,565,Y7t,rF),TWt.Pk=function(t){return new rF(this.c,t)},TWt.dd=function(){return this.a},TWt.Qk=function(t,e,n){return Cat(this,t,this.a,e,n)},TWt.Rk=function(t,e,n){return Sat(this,t,this.a,e,n)},mZ(d6t,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",776),pDt(1314,1,{},DI),TWt.Pj=function(t,e,n,i,r){return zz(T7(t,this.b),215).nl(this.a).Wj(i)},TWt.Qj=function(t,e,n,i,r){return zz(T7(t,this.b),215).el(this.a,i,r)},TWt.Rj=function(t,e,n,i,r){return zz(T7(t,this.b),215).fl(this.a,i,r)},TWt.Sj=function(t,e,n){return zz(T7(t,this.b),215).nl(this.a).fj()},TWt.Tj=function(t,e,n,i){zz(T7(t,this.b),215).nl(this.a).Wb(i)},TWt.Uj=function(t,e,n){return zz(T7(t,this.b),215).nl(this.a)},TWt.Vj=function(t,e,n){zz(T7(t,this.b),215).nl(this.a).Xj()},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1314),pDt(89,1,{},Cz,fX,FV,g4),TWt.Pj=function(t,e,n,i,r){var a;if(null==(a=e.Ch(n))&&e.Dh(n,a=rWt(this,t)),!r)switch(this.e){case 50:case 41:return zz(a,589).sj();case 40:return zz(a,215).kl()}return a},TWt.Qj=function(t,e,n,i,r){var a;return null==(a=e.Ch(n))&&e.Dh(n,a=rWt(this,t)),zz(a,69).lk(i,r)},TWt.Rj=function(t,e,n,i,r){var a;return null!=(a=e.Ch(n))&&(r=zz(a,69).mk(i,r)),r},TWt.Sj=function(t,e,n){var i;return null!=(i=e.Ch(n))&&zz(i,76).fj()},TWt.Tj=function(t,e,n,i){var r;!(r=zz(e.Ch(n),76))&&e.Dh(n,r=rWt(this,t)),r.Wb(i)},TWt.Uj=function(t,e,n){var i;return null==(i=e.Ch(n))&&e.Dh(n,i=rWt(this,t)),aL(i,76)?zz(i,76):new _w(zz(e.Ch(n),15))},TWt.Vj=function(t,e,n){var i;!(i=zz(e.Ch(n),76))&&e.Dh(n,i=rWt(this,t)),i.Xj()},TWt.b=0,TWt.e=0,mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateMany",89),pDt(504,1,{}),TWt.Qj=function(t,e,n,i,r){throw qw(new wm)},TWt.Rj=function(t,e,n,i,r){throw qw(new wm)},TWt.Uj=function(t,e,n){return new dX(this,t,e,n)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingle",504),pDt(1331,1,k7t,dX),TWt.Wj=function(t){return this.a.Pj(this.c,this.d,this.b,t,!0)},TWt.fj=function(){return this.a.Sj(this.c,this.d,this.b)},TWt.Wb=function(t){this.a.Tj(this.c,this.d,this.b,t)},TWt.Xj=function(){this.a.Vj(this.c,this.d,this.b)},TWt.b=0,mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1331),pDt(769,504,{},yQ),TWt.Pj=function(t,e,n,i,r){return wRt(t,t.eh(),t.Vg())==this.b?this.sk()&&i?oDt(t):t.eh():null},TWt.Qj=function(t,e,n,i,r){var a,o;return t.eh()&&(r=(a=t.Vg())>=0?t.Qg(r):t.eh().ih(t,-1-a,null,r)),o=Ogt(t.Tg(),this.e),t.Sg(i,o,r)},TWt.Rj=function(t,e,n,i,r){var a;return a=Ogt(t.Tg(),this.e),t.Sg(null,a,r)},TWt.Sj=function(t,e,n){var i;return i=Ogt(t.Tg(),this.e),!!t.eh()&&t.Vg()==i},TWt.Tj=function(t,e,n,i){var r,a,o,s,c;if(null!=i&&!C$t(this.a,i))throw qw(new Rv(Z7t+(aL(i,56)?b_t(zz(i,56).Tg()):set(nut(i)))+W7t+this.a+"'"));if(r=t.eh(),o=Ogt(t.Tg(),this.e),UI(i)!==UI(r)||t.Vg()!=o&&null!=i){if(yxt(t,zz(i,56)))throw qw(new jv(p6t+t.Ib()));c=null,r&&(c=(a=t.Vg())>=0?t.Qg(c):t.eh().ih(t,-1-a,null,c)),(s=zz(i,49))&&(c=s.gh(t,Ogt(s.Tg(),this.b),null,c)),(c=t.Sg(s,o,c))&&c.Fi()}else t.Lg()&&t.Mg()&&got(t,new tY(t,1,o,i,i))},TWt.Vj=function(t,e,n){var i,r,a;t.eh()?(a=(i=t.Vg())>=0?t.Qg(null):t.eh().ih(t,-1-i,null,null),r=Ogt(t.Tg(),this.e),(a=t.Sg(null,r,a))&&a.Fi()):t.Lg()&&t.Mg()&&got(t,new eY(t,1,this.e,null,null))},TWt.sk=function(){return!1},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",769),pDt(1315,769,{},Sz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1315),pDt(563,504,{}),TWt.Pj=function(t,e,n,i,r){var a;return null==(a=e.Ch(n))?this.b:UI(a)===UI(FOe)?null:a},TWt.Sj=function(t,e,n){var i;return null!=(i=e.Ch(n))&&(UI(i)===UI(FOe)||!Pht(i,this.b))},TWt.Tj=function(t,e,n,i){var r,a;t.Lg()&&t.Mg()?(r=null==(a=e.Ch(n))?this.b:UI(a)===UI(FOe)?null:a,null==i?null!=this.c?(e.Dh(n,null),i=this.b):null!=this.b?e.Dh(n,FOe):e.Dh(n,null):(this.Sk(i),e.Dh(n,i)),got(t,this.d.Tk(t,1,this.e,r,i))):null==i?null!=this.c?e.Dh(n,null):null!=this.b?e.Dh(n,FOe):e.Dh(n,null):(this.Sk(i),e.Dh(n,i))},TWt.Vj=function(t,e,n){var i,r;t.Lg()&&t.Mg()?(i=null==(r=e.Ch(n))?this.b:UI(r)===UI(FOe)?null:r,e.Eh(n),got(t,this.d.Tk(t,1,this.e,i,this.b))):e.Eh(n)},TWt.Sk=function(t){throw qw(new dm)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",563),pDt(K7t,1,{},Oc),TWt.Tk=function(t,e,n,i,r){return new eY(t,e,n,i,r)},TWt.Uk=function(t,e,n,i,r,a){return new UX(t,e,n,i,r,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",K7t),pDt(1332,K7t,{},Lc),TWt.Tk=function(t,e,n,i,r){return new t6(t,e,n,Hv(AB(i)),Hv(AB(r)))},TWt.Uk=function(t,e,n,i,r,a){return new L0(t,e,n,Hv(AB(i)),Hv(AB(r)),a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1332),pDt(1333,K7t,{},Nc),TWt.Tk=function(t,e,n,i,r){return new Hnt(t,e,n,zz(i,217).a,zz(r,217).a)},TWt.Uk=function(t,e,n,i,r,a){return new T0(t,e,n,zz(i,217).a,zz(r,217).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1333),pDt(1334,K7t,{},Pc),TWt.Tk=function(t,e,n,i,r){return new Unt(t,e,n,zz(i,172).a,zz(r,172).a)},TWt.Uk=function(t,e,n,i,r,a){return new C0(t,e,n,zz(i,172).a,zz(r,172).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1334),pDt(1335,K7t,{},Bc),TWt.Tk=function(t,e,n,i,r){return new Q5(t,e,n,Uv(EB(i)),Uv(EB(r)))},TWt.Uk=function(t,e,n,i,r,a){return new S0(t,e,n,Uv(EB(i)),Uv(EB(r)),a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1335),pDt(1336,K7t,{},Fc),TWt.Tk=function(t,e,n,i,r){return new Znt(t,e,n,zz(i,155).a,zz(r,155).a)},TWt.Uk=function(t,e,n,i,r,a){return new I0(t,e,n,zz(i,155).a,zz(r,155).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1336),pDt(1337,K7t,{},Rc),TWt.Tk=function(t,e,n,i,r){return new J5(t,e,n,zz(i,19).a,zz(r,19).a)},TWt.Uk=function(t,e,n,i,r,a){return new M0(t,e,n,zz(i,19).a,zz(r,19).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1337),pDt(1338,K7t,{},jc),TWt.Tk=function(t,e,n,i,r){return new Gnt(t,e,n,zz(i,162).a,zz(r,162).a)},TWt.Uk=function(t,e,n,i,r,a){return new D0(t,e,n,zz(i,162).a,zz(r,162).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1338),pDt(1339,K7t,{},$c),TWt.Tk=function(t,e,n,i,r){return new Ynt(t,e,n,zz(i,184).a,zz(r,184).a)},TWt.Uk=function(t,e,n,i,r,a){return new O0(t,e,n,zz(i,184).a,zz(r,184).a,a)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1339),pDt(1317,563,{},gX),TWt.Sk=function(t){if(!this.a.wj(t))throw qw(new Rv(Z7t+nut(t)+W7t+this.a+"'"))},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1317),pDt(1318,563,{},JU),TWt.Sk=function(t){},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1318),pDt(770,563,{}),TWt.Sj=function(t,e,n){return null!=e.Ch(n)},TWt.Tj=function(t,e,n,i){var r,a;t.Lg()&&t.Mg()?(r=!0,null==(a=e.Ch(n))?(r=!1,a=this.b):UI(a)===UI(FOe)&&(a=null),null==i?null!=this.c?(e.Dh(n,null),i=this.b):e.Dh(n,FOe):(this.Sk(i),e.Dh(n,i)),got(t,this.d.Uk(t,1,this.e,a,i,!r))):null==i?null!=this.c?e.Dh(n,null):e.Dh(n,FOe):(this.Sk(i),e.Dh(n,i))},TWt.Vj=function(t,e,n){var i,r;t.Lg()&&t.Mg()?(i=!0,null==(r=e.Ch(n))?(i=!1,r=this.b):UI(r)===UI(FOe)&&(r=null),e.Eh(n),got(t,this.d.Uk(t,2,this.e,r,this.b,i))):e.Eh(n)},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",770),pDt(1319,770,{},pX),TWt.Sk=function(t){if(!this.a.wj(t))throw qw(new Rv(Z7t+nut(t)+W7t+this.a+"'"))},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1319),pDt(1320,770,{},tG),TWt.Sk=function(t){},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1320),pDt(398,504,{},aU),TWt.Pj=function(t,e,n,i,r){var a,o,s,c,u;if(u=e.Ch(n),this.Kj()&&UI(u)===UI(FOe))return null;if(this.sk()&&i&&null!=u){if((s=zz(u,49)).kh()&&s!=(c=nht(t,s))){if(!C$t(this.a,c))throw qw(new Rv(Z7t+nut(c)+W7t+this.a+"'"));e.Dh(n,u=c),this.rk()&&(a=zz(c,49),o=s.ih(t,this.b?Ogt(s.Tg(),this.b):-1-Ogt(t.Tg(),this.e),null,null),!a.eh()&&(o=a.gh(t,this.b?Ogt(a.Tg(),this.b):-1-Ogt(t.Tg(),this.e),null,o)),o&&o.Fi()),t.Lg()&&t.Mg()&&got(t,new eY(t,9,this.e,s,c))}return u}return u},TWt.Qj=function(t,e,n,i,r){var a,o;return UI(o=e.Ch(n))===UI(FOe)&&(o=null),e.Dh(n,i),this.bj()?UI(o)!==UI(i)&&null!=o&&(r=(a=zz(o,49)).ih(t,Ogt(a.Tg(),this.b),null,r)):this.rk()&&null!=o&&(r=zz(o,49).ih(t,-1-Ogt(t.Tg(),this.e),null,r)),t.Lg()&&t.Mg()&&(!r&&(r=new $k(4)),r.Ei(new eY(t,1,this.e,o,i))),r},TWt.Rj=function(t,e,n,i,r){var a;return UI(a=e.Ch(n))===UI(FOe)&&(a=null),e.Eh(n),t.Lg()&&t.Mg()&&(!r&&(r=new $k(4)),this.Kj()?r.Ei(new eY(t,2,this.e,a,null)):r.Ei(new eY(t,1,this.e,a,null))),r},TWt.Sj=function(t,e,n){return null!=e.Ch(n)},TWt.Tj=function(t,e,n,i){var r,a,o,s,c;if(null!=i&&!C$t(this.a,i))throw qw(new Rv(Z7t+(aL(i,56)?b_t(zz(i,56).Tg()):set(nut(i)))+W7t+this.a+"'"));s=null!=(c=e.Ch(n)),this.Kj()&&UI(c)===UI(FOe)&&(c=null),o=null,this.bj()?UI(c)!==UI(i)&&(null!=c&&(o=(r=zz(c,49)).ih(t,Ogt(r.Tg(),this.b),null,o)),null!=i&&(o=(r=zz(i,49)).gh(t,Ogt(r.Tg(),this.b),null,o))):this.rk()&&UI(c)!==UI(i)&&(null!=c&&(o=zz(c,49).ih(t,-1-Ogt(t.Tg(),this.e),null,o)),null!=i&&(o=zz(i,49).gh(t,-1-Ogt(t.Tg(),this.e),null,o))),null==i&&this.Kj()?e.Dh(n,FOe):e.Dh(n,i),t.Lg()&&t.Mg()?(a=new UX(t,1,this.e,c,i,this.Kj()&&!s),o?(o.Ei(a),o.Fi()):got(t,a)):o&&o.Fi()},TWt.Vj=function(t,e,n){var i,r,a,o,s;o=null!=(s=e.Ch(n)),this.Kj()&&UI(s)===UI(FOe)&&(s=null),a=null,null!=s&&(this.bj()?a=(i=zz(s,49)).ih(t,Ogt(i.Tg(),this.b),null,a):this.rk()&&(a=zz(s,49).ih(t,-1-Ogt(t.Tg(),this.e),null,a))),e.Eh(n),t.Lg()&&t.Mg()?(r=new UX(t,this.Kj()?2:1,this.e,s,null,o),a?(a.Ei(r),a.Fi()):got(t,r)):a&&a.Fi()},TWt.bj=function(){return!1},TWt.rk=function(){return!1},TWt.sk=function(){return!1},TWt.Kj=function(){return!1},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",398),pDt(564,398,{},JP),TWt.rk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",564),pDt(1323,564,{},tB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1323),pDt(772,564,{},eB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",772),pDt(1325,772,{},nB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1325),pDt(640,564,{},Iz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",640),pDt(1324,640,{},Oz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1324),pDt(773,640,{},Lz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",773),pDt(1326,773,{},Nz),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1326),pDt(641,398,{},iB),TWt.sk=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",641),pDt(1327,641,{},rB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1327),pDt(774,641,{},Mz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",774),pDt(1328,774,{},Pz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1328),pDt(1321,398,{},aB),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1321),pDt(771,398,{},Dz),TWt.bj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",771),pDt(1322,771,{},Bz),TWt.Kj=function(){return!0},mZ(d6t,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1322),pDt(775,565,Y7t,oW),TWt.Pk=function(t){return new oW(this.a,this.c,t)},TWt.dd=function(){return this.b},TWt.Qk=function(t,e,n){return B8(this,t,this.b,n)},TWt.Rk=function(t,e,n){return F8(this,t,this.b,n)},mZ(d6t,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",775),pDt(1329,1,k7t,_w),TWt.Wj=function(t){return this.a},TWt.fj=function(){return aL(this.a,95)?zz(this.a,95).fj():!this.a.dc()},TWt.Wb=function(t){this.a.$b(),this.a.Gc(zz(t,15))},TWt.Xj=function(){aL(this.a,95)?zz(this.a,95).Xj():this.a.$b()},mZ(d6t,"EStructuralFeatureImpl/SettingMany",1329),pDt(1330,565,Y7t,b4),TWt.Ok=function(t){return new aF((ZHt(),$Le),this.b.Ih(this.a,t))},TWt.dd=function(){return null},TWt.Qk=function(t,e,n){return n},TWt.Rk=function(t,e,n){return n},mZ(d6t,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1330),pDt(642,565,Y7t,aF),TWt.Ok=function(t){return new aF(this.c,t)},TWt.dd=function(){return this.a},TWt.Qk=function(t,e,n){return n},TWt.Rk=function(t,e,n){return n},mZ(d6t,"EStructuralFeatureImpl/SimpleFeatureMapEntry",642),pDt(391,497,h8t,zc),TWt.ri=function(t){return P8(HDe,HWt,26,t,0,1)},TWt.ni=function(){return!1},mZ(d6t,"ESuperAdapter/1",391),pDt(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},qc),TWt._g=function(t,e,n){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new oU(this,KDe,this)),this.a}return Y7(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),$wt(this.Ab,t,n);case 2:return!this.a&&(this.a=new oU(this,KDe,this)),$wt(this.a,t,n)}return zz(iet(zz(xot(this,16),26)||(wWt(),AOe),e),66).Nj().Rj(this,fbt(this),e-dZ((wWt(),AOe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.Ab&&0!=this.Ab.i;case 1:return null!=this.zb;case 2:return!!this.a&&0!=this.a.i}return M3(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t))},TWt.sh=function(t,e){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),lHt(this.Ab),!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void wZ(this.Ab,zz(e,14));case 1:return void Prt(this,TB(e));case 2:return!this.a&&(this.a=new oU(this,KDe,this)),lHt(this.a),!this.a&&(this.a=new oU(this,KDe,this)),void wZ(this.a,zz(e,14))}Ndt(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t),e)},TWt.zh=function(){return wWt(),AOe},TWt.Bh=function(t){switch(t){case 0:return!this.Ab&&(this.Ab=new nY(RDe,this,0,3)),void lHt(this.Ab);case 1:return void Prt(this,null);case 2:return!this.a&&(this.a=new oU(this,KDe,this)),void lHt(this.a)}Uht(this,t-dZ((wWt(),AOe)),iet(zz(xot(this,16),26)||AOe,t))},mZ(d6t,"ETypeParameterImpl",444),pDt(445,85,R7t,oU),TWt.cj=function(t,e){return NAt(this,zz(t,87),e)},TWt.dj=function(t,e){return PAt(this,zz(t,87),e)},mZ(d6t,"ETypeParameterImpl/1",445),pDt(634,43,nVt,Py),TWt.ec=function(){return new Aw(this)},mZ(d6t,"ETypeParameterImpl/2",634),pDt(556,eKt,nKt,Aw),TWt.Fc=function(t){return VF(this,zz(t,87))},TWt.Gc=function(t){var e,n,i;for(i=!1,n=t.Kc();n.Ob();)e=zz(n.Pb(),87),null==KW(this.a,e,"")&&(i=!0);return i},TWt.$b=function(){OY(this.a)},TWt.Hc=function(t){return lY(this.a,t)},TWt.Kc=function(){return new Ew(new cut(new Cd(this.a).a))},TWt.Mc=function(t){return j6(this,t)},TWt.gc=function(){return NA(this.a)},mZ(d6t,"ETypeParameterImpl/2/1",556),pDt(557,1,VWt,Ew),TWt.Nb=function(t){hY(this,t)},TWt.Pb=function(){return zz(nnt(this.a).cd(),87)},TWt.Ob=function(){return this.a.b},TWt.Qb=function(){c7(this.a)},mZ(d6t,"ETypeParameterImpl/2/1/1",557),pDt(1276,43,nVt,By),TWt._b=function(t){return ZI(t)?nV(this,t):!!DV(this.f,t)},TWt.xc=function(t){var e;return aL(e=ZI(t)?TQ(this,t):HI(DV(this.f,t)),837)?(e=zz(e,837)._j(),KW(this,zz(t,235),e),e):null!=e?e:null==t?(QE(),rLe):null},mZ(d6t,"EValidatorRegistryImpl",1276),pDt(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},Hc),TWt.Ih=function(t,e){switch(t.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return null==e?null:qdt(e);case 25:return Wet(e);case 27:return Z7(e);case 28:return W7(e);case 29:return null==e?null:qO(IMe[0],zz(e,199));case 41:return null==e?"":t_(zz(e,290));case 42:return qdt(e);case 50:return TB(e);default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 0:return new My;case 1:return new kc;case 2:return new Rh;case 4:return new _m;case 5:return new Dy;case 6:return new km;case 7:return new Bh;case 10:return new vc;case 11:return new Oy;case 12:return new mV;case 13:return new Ly;case 14:return new wB;case 17:return new Dc;case 18:return new Rw;case 19:return new qc;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){switch(t.yj()){case 20:return null==e?null:new g_(e);case 21:return null==e?null:new OD(e);case 23:case 22:return null==e?null:tbt(e);case 26:case 24:return null==e?null:Ctt(djt(e,-128,127)<<24>>24);case 25:return bOt(e);case 27:return Cvt(e);case 28:return Svt(e);case 29:return wEt(e);case 32:case 31:return null==e?null:gTt(e);case 38:case 37:return null==e?null:new Bm(e);case 40:case 39:return null==e?null:rft(djt(e,$Kt,FWt));case 41:case 42:return null;case 44:case 43:return null==e?null:_bt(aYt(e));case 49:case 48:return null==e?null:aft(djt(e,V7t,32767)<<16>>16);case 50:return e;default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(d6t,"EcoreFactoryImpl",1313),pDt(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},YW),TWt.gb=!1,TWt.hb=!1;var KOe,XOe=!1;mZ(d6t,"EcorePackageImpl",547),pDt(1184,1,{837:1},Uc),TWt._j=function(){return uN(),aLe},mZ(d6t,"EcorePackageImpl/1",1184),pDt(1193,1,l9t,Gc),TWt.wj=function(t){return aL(t,147)},TWt.xj=function(t){return P8(zMe,HWt,147,t,0,1)},mZ(d6t,"EcorePackageImpl/10",1193),pDt(1194,1,l9t,Yc),TWt.wj=function(t){return aL(t,191)},TWt.xj=function(t){return P8(HMe,HWt,191,t,0,1)},mZ(d6t,"EcorePackageImpl/11",1194),pDt(1195,1,l9t,Zc),TWt.wj=function(t){return aL(t,56)},TWt.xj=function(t){return P8(LMe,HWt,56,t,0,1)},mZ(d6t,"EcorePackageImpl/12",1195),pDt(1196,1,l9t,Wc),TWt.wj=function(t){return aL(t,399)},TWt.xj=function(t){return P8(XDe,B7t,59,t,0,1)},mZ(d6t,"EcorePackageImpl/13",1196),pDt(1197,1,l9t,Kc),TWt.wj=function(t){return aL(t,235)},TWt.xj=function(t){return P8(UMe,HWt,235,t,0,1)},mZ(d6t,"EcorePackageImpl/14",1197),pDt(1198,1,l9t,Xc),TWt.wj=function(t){return aL(t,509)},TWt.xj=function(t){return P8(VDe,HWt,2017,t,0,1)},mZ(d6t,"EcorePackageImpl/15",1198),pDt(1199,1,l9t,Vc),TWt.wj=function(t){return aL(t,99)},TWt.xj=function(t){return P8(QDe,P7t,18,t,0,1)},mZ(d6t,"EcorePackageImpl/16",1199),pDt(1200,1,l9t,Qc),TWt.wj=function(t){return aL(t,170)},TWt.xj=function(t){return P8($De,P7t,170,t,0,1)},mZ(d6t,"EcorePackageImpl/17",1200),pDt(1201,1,l9t,Jc),TWt.wj=function(t){return aL(t,472)},TWt.xj=function(t){return P8(jDe,HWt,472,t,0,1)},mZ(d6t,"EcorePackageImpl/18",1201),pDt(1202,1,l9t,tu),TWt.wj=function(t){return aL(t,548)},TWt.xj=function(t){return P8(ZOe,s7t,548,t,0,1)},mZ(d6t,"EcorePackageImpl/19",1202),pDt(1185,1,l9t,eu),TWt.wj=function(t){return aL(t,322)},TWt.xj=function(t){return P8(zDe,P7t,34,t,0,1)},mZ(d6t,"EcorePackageImpl/2",1185),pDt(1203,1,l9t,nu),TWt.wj=function(t){return aL(t,241)},TWt.xj=function(t){return P8(KDe,q7t,87,t,0,1)},mZ(d6t,"EcorePackageImpl/20",1203),pDt(1204,1,l9t,iu),TWt.wj=function(t){return aL(t,444)},TWt.xj=function(t){return P8(MOe,HWt,836,t,0,1)},mZ(d6t,"EcorePackageImpl/21",1204),pDt(1205,1,l9t,ru),TWt.wj=function(t){return GI(t)},TWt.xj=function(t){return P8(kee,lKt,476,t,8,1)},mZ(d6t,"EcorePackageImpl/22",1205),pDt(1206,1,l9t,au),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(d6t,"EcorePackageImpl/23",1206),pDt(1207,1,l9t,ou),TWt.wj=function(t){return aL(t,217)},TWt.xj=function(t){return P8(Eee,lKt,217,t,0,1)},mZ(d6t,"EcorePackageImpl/24",1207),pDt(1208,1,l9t,su),TWt.wj=function(t){return aL(t,172)},TWt.xj=function(t){return P8(Cee,lKt,172,t,0,1)},mZ(d6t,"EcorePackageImpl/25",1208),pDt(1209,1,l9t,cu),TWt.wj=function(t){return aL(t,199)},TWt.xj=function(t){return P8(vee,lKt,199,t,0,1)},mZ(d6t,"EcorePackageImpl/26",1209),pDt(1210,1,l9t,uu),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8(jNe,HWt,2110,t,0,1)},mZ(d6t,"EcorePackageImpl/27",1210),pDt(1211,1,l9t,lu),TWt.wj=function(t){return YI(t)},TWt.xj=function(t){return P8(See,lKt,333,t,7,1)},mZ(d6t,"EcorePackageImpl/28",1211),pDt(1212,1,l9t,hu),TWt.wj=function(t){return aL(t,58)},TWt.xj=function(t){return P8(sDe,eJt,58,t,0,1)},mZ(d6t,"EcorePackageImpl/29",1212),pDt(1186,1,l9t,fu),TWt.wj=function(t){return aL(t,510)},TWt.xj=function(t){return P8(RDe,{3:1,4:1,5:1,1934:1},590,t,0,1)},mZ(d6t,"EcorePackageImpl/3",1186),pDt(1213,1,l9t,du),TWt.wj=function(t){return aL(t,573)},TWt.xj=function(t){return P8(vDe,HWt,1940,t,0,1)},mZ(d6t,"EcorePackageImpl/30",1213),pDt(1214,1,l9t,gu),TWt.wj=function(t){return aL(t,153)},TWt.xj=function(t){return P8(cLe,eJt,153,t,0,1)},mZ(d6t,"EcorePackageImpl/31",1214),pDt(1215,1,l9t,pu),TWt.wj=function(t){return aL(t,72)},TWt.xj=function(t){return P8(OOe,h9t,72,t,0,1)},mZ(d6t,"EcorePackageImpl/32",1215),pDt(1216,1,l9t,bu),TWt.wj=function(t){return aL(t,155)},TWt.xj=function(t){return P8(Iee,lKt,155,t,0,1)},mZ(d6t,"EcorePackageImpl/33",1216),pDt(1217,1,l9t,wu),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(d6t,"EcorePackageImpl/34",1217),pDt(1218,1,l9t,mu),TWt.wj=function(t){return aL(t,290)},TWt.xj=function(t){return P8(Lte,HWt,290,t,0,1)},mZ(d6t,"EcorePackageImpl/35",1218),pDt(1219,1,l9t,yu),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(d6t,"EcorePackageImpl/36",1219),pDt(1220,1,l9t,vu),TWt.wj=function(t){return aL(t,83)},TWt.xj=function(t){return P8(Pte,HWt,83,t,0,1)},mZ(d6t,"EcorePackageImpl/37",1220),pDt(1221,1,l9t,xu),TWt.wj=function(t){return aL(t,591)},TWt.xj=function(t){return P8(iLe,HWt,591,t,0,1)},mZ(d6t,"EcorePackageImpl/38",1221),pDt(1222,1,l9t,ku),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8($Ne,HWt,2111,t,0,1)},mZ(d6t,"EcorePackageImpl/39",1222),pDt(1187,1,l9t,_u),TWt.wj=function(t){return aL(t,88)},TWt.xj=function(t){return P8(HDe,HWt,26,t,0,1)},mZ(d6t,"EcorePackageImpl/4",1187),pDt(1223,1,l9t,Au),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(d6t,"EcorePackageImpl/40",1223),pDt(1224,1,l9t,Eu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(d6t,"EcorePackageImpl/41",1224),pDt(1225,1,l9t,Tu),TWt.wj=function(t){return aL(t,588)},TWt.xj=function(t){return P8(uDe,HWt,588,t,0,1)},mZ(d6t,"EcorePackageImpl/42",1225),pDt(1226,1,l9t,Cu),TWt.wj=function(t){return!1},TWt.xj=function(t){return P8(zNe,lKt,2112,t,0,1)},mZ(d6t,"EcorePackageImpl/43",1226),pDt(1227,1,l9t,Su),TWt.wj=function(t){return aL(t,42)},TWt.xj=function(t){return P8(Hte,kKt,42,t,0,1)},mZ(d6t,"EcorePackageImpl/44",1227),pDt(1188,1,l9t,Iu),TWt.wj=function(t){return aL(t,138)},TWt.xj=function(t){return P8(qDe,HWt,138,t,0,1)},mZ(d6t,"EcorePackageImpl/5",1188),pDt(1189,1,l9t,Mu),TWt.wj=function(t){return aL(t,148)},TWt.xj=function(t){return P8(UDe,HWt,148,t,0,1)},mZ(d6t,"EcorePackageImpl/6",1189),pDt(1190,1,l9t,Du),TWt.wj=function(t){return aL(t,457)},TWt.xj=function(t){return P8(ZDe,HWt,671,t,0,1)},mZ(d6t,"EcorePackageImpl/7",1190),pDt(1191,1,l9t,Ou),TWt.wj=function(t){return aL(t,573)},TWt.xj=function(t){return P8(WDe,HWt,678,t,0,1)},mZ(d6t,"EcorePackageImpl/8",1191),pDt(1192,1,l9t,Lu),TWt.wj=function(t){return aL(t,471)},TWt.xj=function(t){return P8(qMe,HWt,471,t,0,1)},mZ(d6t,"EcorePackageImpl/9",1192),pDt(1025,1982,a7t,Pv),TWt.bi=function(t,e){Oht(this,zz(e,415))},TWt.fi=function(t,e){iSt(this,t,zz(e,415))},mZ(d6t,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1025),pDt(1026,143,n7t,sW),TWt.Ai=function(){return this.a.a},mZ(d6t,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1026),pDt(1053,1052,{},cO),mZ("org.eclipse.emf.ecore.plugin","EcorePlugin",1053);var VOe,QOe,JOe,tLe,eLe,nLe,iLe=dH(f9t,"Resource");pDt(781,1378,d9t),TWt.Yk=function(t){},TWt.Zk=function(t){},TWt.Vk=function(){return!this.a&&(this.a=new Tw(this)),this.a},TWt.Wk=function(t){var e,n,i,r,a;if((i=t.length)>0){if(d1(0,t.length),47==t.charCodeAt(0)){for(a=new Q6(4),r=1,e=1;e0&&(t=t.substr(0,n))}return _It(this,t)},TWt.Xk=function(){return this.c},TWt.Ib=function(){return t_(this.gm)+"@"+(eut(this)>>>0).toString(16)+" uri='"+this.d+"'"},TWt.b=!1,mZ(g9t,"ResourceImpl",781),pDt(1379,781,d9t,Sw),mZ(g9t,"BinaryResourceImpl",1379),pDt(1169,694,f8t),TWt.si=function(t){return aL(t,56)?AV(this,zz(t,56)):aL(t,591)?new DL(zz(t,591).Vk()):UI(t)===UI(this.f)?zz(t,14).Kc():(pB(),wDe.a)},TWt.Ob=function(){return gMt(this)},TWt.a=!1,mZ(x7t,"EcoreUtil/ContentTreeIterator",1169),pDt(1380,1169,f8t,rY),TWt.si=function(t){return UI(t)===UI(this.f)?zz(t,15).Kc():new $2(zz(t,56))},mZ(g9t,"ResourceImpl/5",1380),pDt(648,1994,F7t,Tw),TWt.Hc=function(t){return this.i<=4?Ckt(this,t):aL(t,49)&&zz(t,49).Zg()==this.a},TWt.bi=function(t,e){t==this.i-1&&(this.a.b||(this.a.b=!0))},TWt.di=function(t,e){0==t?this.a.b||(this.a.b=!0):L8(this,t,e)},TWt.fi=function(t,e){},TWt.gi=function(t,e,n){},TWt.aj=function(){return 2},TWt.Ai=function(){return this.a},TWt.bj=function(){return!0},TWt.cj=function(t,e){return e=zz(t,49).wh(this.a,e)},TWt.dj=function(t,e){return zz(t,49).wh(null,e)},TWt.ej=function(){return!1},TWt.hi=function(){return!0},TWt.ri=function(t){return P8(LMe,HWt,56,t,0,1)},TWt.ni=function(){return!1},mZ(g9t,"ResourceImpl/ContentsEList",648),pDt(957,1964,NKt,Cw),TWt.Zc=function(t){return this.a._h(t)},TWt.gc=function(){return this.a.gc()},mZ(x7t,"AbstractSequentialInternalEList/1",957),pDt(624,1,{},Tq),mZ(x7t,"BasicExtendedMetaData",624),pDt(1160,1,{},OI),TWt.$k=function(){return null},TWt._k=function(){return-2==this.a&&cd(this,sEt(this.d,this.b)),this.a},TWt.al=function(){return null},TWt.bl=function(){return TX(),TX(),lne},TWt.ne=function(){return this.c==I9t&&ld(this,Abt(this.d,this.b)),this.c},TWt.cl=function(){return 0},TWt.a=-2,TWt.c=I9t,mZ(x7t,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1160),pDt(1161,1,{},j0),TWt.$k=function(){return this.a==(F5(),eLe)&&ud(this,yNt(this.f,this.b)),this.a},TWt._k=function(){return 0},TWt.al=function(){return this.c==(F5(),eLe)&&hd(this,vNt(this.f,this.b)),this.c},TWt.bl=function(){return!this.d&&fd(this,CRt(this.f,this.b)),this.d},TWt.ne=function(){return this.e==I9t&&dd(this,Abt(this.f,this.b)),this.e},TWt.cl=function(){return-2==this.g&&gd(this,Q_t(this.f,this.b)),this.g},TWt.e=I9t,TWt.g=-2,mZ(x7t,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1161),pDt(1159,1,{},FI),TWt.b=!1,TWt.c=!1,mZ(x7t,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1159),pDt(1162,1,{},R0),TWt.c=-2,TWt.e=I9t,TWt.f=I9t,mZ(x7t,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1162),pDt(585,622,R7t,Eq),TWt.aj=function(){return this.c},TWt.Fk=function(){return!1},TWt.li=function(t,e){return e},TWt.c=0,mZ(x7t,"EDataTypeEList",585);var rLe,aLe,oLe,sLe,cLe=dH(x7t,"FeatureMap");pDt(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},Aat),TWt.Vc=function(t,e){dNt(this,t,zz(e,72))},TWt.Fc=function(t){return cLt(this,zz(t,72))},TWt.Yh=function(t){pZ(this,zz(t,72))},TWt.cj=function(t,e){return qR(this,zz(t,72),e)},TWt.dj=function(t,e){return HR(this,zz(t,72),e)},TWt.ii=function(t,e){return sjt(this,t,e)},TWt.li=function(t,e){return hUt(this,t,zz(e,72))},TWt._c=function(t,e){return SPt(this,t,zz(e,72))},TWt.jj=function(t,e){return UR(this,zz(t,72),e)},TWt.kj=function(t,e){return GR(this,zz(t,72),e)},TWt.lj=function(t,e,n){return w_t(this,zz(t,72),zz(e,72),n)},TWt.oi=function(t,e){return lAt(this,t,zz(e,72))},TWt.dl=function(t,e){return BRt(this,t,e)},TWt.Wc=function(t,e){var n,i,r,a,o,s,c,u,l;for(u=new wet(e.gc()),r=e.Kc();r.Ob();)if(a=(i=zz(r.Pb(),72)).ak(),LPt(this.e,a))(!a.hi()||!U3(this,a,i.dd())&&!Ckt(u,i))&&h7(u,i);else{for(l=sPt(this.e.Tg(),a),n=zz(this.g,119),o=!0,s=0;s=0;)if(e=t[this.c],this.k.rl(e.ak()))return this.j=this.f?e:e.dd(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},mZ(x7t,"BasicFeatureMap/FeatureEIterator",410),pDt(662,410,oKt,PM),TWt.Lk=function(){return!0},mZ(x7t,"BasicFeatureMap/ResolvingFeatureEIterator",662),pDt(955,486,U7t,GO),TWt.Gi=function(){return this},mZ(x7t,"EContentsEList/1",955),pDt(956,486,U7t,BM),TWt.Lk=function(){return!1},mZ(x7t,"EContentsEList/2",956),pDt(954,279,G7t,YO),TWt.Nk=function(t){},TWt.Ob=function(){return!1},TWt.Sb=function(){return!1},mZ(x7t,"EContentsEList/FeatureIteratorImpl/1",954),pDt(825,585,R7t,RL),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EDataTypeEList/Unsettable",825),pDt(1849,585,R7t,jL),TWt.hi=function(){return!0},mZ(x7t,"EDataTypeUniqueEList",1849),pDt(1850,825,R7t,$L),TWt.hi=function(){return!0},mZ(x7t,"EDataTypeUniqueEList/Unsettable",1850),pDt(139,85,R7t,NL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentEList/Resolving",139),pDt(1163,545,R7t,PL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentEList/Unsettable/Resolving",1163),pDt(748,16,R7t,iR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectContainmentWithInverseEList/Unsettable",748),pDt(1173,748,R7t,rR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1173),pDt(743,496,R7t,BL),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectEList/Unsettable",743),pDt(328,496,R7t,FL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectResolvingEList",328),pDt(1641,743,R7t,zL),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectResolvingEList/Unsettable",1641),pDt(1381,1,{},Nu),mZ(x7t,"EObjectValidator",1381),pDt(546,496,R7t,iY),TWt.zk=function(){return this.d},TWt.Ak=function(){return this.b},TWt.bj=function(){return!0},TWt.Dk=function(){return!0},TWt.b=0,mZ(x7t,"EObjectWithInverseEList",546),pDt(1176,546,R7t,aR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseEList/ManyInverse",1176),pDt(625,546,R7t,oR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EObjectWithInverseEList/Unsettable",625),pDt(1175,625,R7t,cR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseEList/Unsettable/ManyInverse",1175),pDt(749,546,R7t,sR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectWithInverseResolvingEList",749),pDt(31,749,R7t,lR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseResolvingEList/ManyInverse",31),pDt(750,625,R7t,uR),TWt.Ek=function(){return!0},TWt.li=function(t,e){return GMt(this,t,zz(e,56))},mZ(x7t,"EObjectWithInverseResolvingEList/Unsettable",750),pDt(1174,750,R7t,hR),TWt.Ck=function(){return!0},mZ(x7t,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1174),pDt(1164,622,R7t),TWt.ai=function(){return 0==(1792&this.b)},TWt.ci=function(){this.b|=1},TWt.Bk=function(){return 0!=(4&this.b)},TWt.bj=function(){return 0!=(40&this.b)},TWt.Ck=function(){return 0!=(16&this.b)},TWt.Dk=function(){return 0!=(8&this.b)},TWt.Ek=function(){return 0!=(this.b&T7t)},TWt.rk=function(){return 0!=(32&this.b)},TWt.Fk=function(){return 0!=(this.b&k6t)},TWt.wj=function(t){return this.d?P3(this.d,t):this.ak().Yj().wj(t)},TWt.fj=function(){return 0!=(2&this.b)?0!=(1&this.b):0!=this.i},TWt.hi=function(){return 0!=(128&this.b)},TWt.Xj=function(){var t;lHt(this),0!=(2&this.b)&&(yD(this.e)?(t=0!=(1&this.b),this.b&=-2,Lm(this,new e6(this.e,2,Ogt(this.e.Tg(),this.ak()),t,!1))):this.b&=-2)},TWt.ni=function(){return 0==(1536&this.b)},TWt.b=0,mZ(x7t,"EcoreEList/Generic",1164),pDt(1165,1164,R7t,GX),TWt.ak=function(){return this.a},mZ(x7t,"EcoreEList/Dynamic",1165),pDt(747,63,h8t,Iw),TWt.ri=function(t){return Fnt(this.a.a,t)},mZ(x7t,"EcoreEMap/1",747),pDt(746,85,R7t,JG),TWt.bi=function(t,e){Mmt(this.b,zz(e,133))},TWt.di=function(t,e){sot(this.b)},TWt.ei=function(t,e,n){var i;++(i=this.b,zz(e,133),i).e},TWt.fi=function(t,e){Dft(this.b,zz(e,133))},TWt.gi=function(t,e,n){Dft(this.b,zz(n,133)),UI(n)===UI(e)&&zz(n,133).Th(aO(zz(e,133).cd())),Mmt(this.b,zz(e,133))},mZ(x7t,"EcoreEMap/DelegateEObjectContainmentEList",746),pDt(1171,151,_7t,xit),mZ(x7t,"EcoreEMap/Unsettable",1171),pDt(1172,746,R7t,fR),TWt.ci=function(){this.a=!0},TWt.fj=function(){return this.a},TWt.Xj=function(){var t;lHt(this),yD(this.e)?(t=this.a,this.a=!1,got(this.e,new e6(this.e,2,this.c,t,!1))):this.a=!1},TWt.a=!1,mZ(x7t,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1172),pDt(1168,228,nVt,fZ),TWt.a=!1,TWt.b=!1,mZ(x7t,"EcoreUtil/Copier",1168),pDt(745,1,VWt,$2),TWt.Nb=function(t){hY(this,t)},TWt.Ob=function(){return cpt(this)},TWt.Pb=function(){var t;return cpt(this),t=this.b,this.b=null,t},TWt.Qb=function(){this.a.Qb()},mZ(x7t,"EcoreUtil/ProperContentIterator",745),pDt(1382,1381,{},jh),mZ(x7t,"EcoreValidator",1382),dH(x7t,"FeatureMapUtil/Validator"),pDt(1260,1,{1942:1},Pu),TWt.rl=function(t){return!0},mZ(x7t,"FeatureMapUtil/1",1260),pDt(757,1,{1942:1},oYt),TWt.rl=function(t){var e;return this.c==t||(null==(e=AB(FZ(this.a,t)))?BFt(this,t)?(r6(this.a,t,(lN(),yee)),!0):(r6(this.a,t,(lN(),mee)),!1):e==(lN(),yee))},TWt.e=!1,mZ(x7t,"FeatureMapUtil/BasicValidator",757),pDt(758,43,nVt,ZO),mZ(x7t,"FeatureMapUtil/BasicValidator/Cache",758),pDt(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},PI),TWt.Vc=function(t,e){OPt(this.c,this.b,t,e)},TWt.Fc=function(t){return BRt(this.c,this.b,t)},TWt.Wc=function(t,e){return _qt(this.c,this.b,t,e)},TWt.Gc=function(t){return JO(this,t)},TWt.Xh=function(t,e){het(this.c,this.b,t,e)},TWt.lk=function(t,e){return SFt(this.c,this.b,t,e)},TWt.pi=function(t){return rqt(this.c,this.b,t,!1)},TWt.Zh=function(){return kD(this.c,this.b)},TWt.$h=function(){return _D(this.c,this.b)},TWt._h=function(t){return O8(this.c,this.b,t)},TWt.mk=function(t,e){return eF(this,t,e)},TWt.$b=function(){Nm(this)},TWt.Hc=function(t){return U3(this.c,this.b,t)},TWt.Ic=function(t){return Tat(this.c,this.b,t)},TWt.Xb=function(t){return rqt(this.c,this.b,t,!0)},TWt.Wj=function(t){return this},TWt.Xc=function(t){return G3(this.c,this.b,t)},TWt.dc=function(){return qI(this)},TWt.fj=function(){return!spt(this.c,this.b)},TWt.Kc=function(){return att(this.c,this.b)},TWt.Yc=function(){return ott(this.c,this.b)},TWt.Zc=function(t){return dft(this.c,this.b,t)},TWt.ii=function(t,e){return v$t(this.c,this.b,t,e)},TWt.ji=function(t,e){X6(this.c,this.b,t,e)},TWt.$c=function(t){return sCt(this.c,this.b,t)},TWt.Mc=function(t){return IRt(this.c,this.b,t)},TWt._c=function(t,e){return W$t(this.c,this.b,t,e)},TWt.Wb=function(t){OMt(this.c,this.b),JO(this,zz(t,15))},TWt.gc=function(){return jft(this.c,this.b)},TWt.Pc=function(){return U1(this.c,this.b)},TWt.Qc=function(t){return Y3(this.c,this.b,t)},TWt.Ib=function(){var t,e;for((e=new Tx).a+="[",t=kD(this.c,this.b);jut(t);)aM(e,xN(omt(t))),jut(t)&&(e.a+=zWt);return e.a+="]",e.a},TWt.Xj=function(){OMt(this.c,this.b)},mZ(x7t,"FeatureMapUtil/FeatureEList",501),pDt(627,36,n7t,d4),TWt.yi=function(t){return ift(this,t)},TWt.Di=function(t){var e,n,i,r;switch(this.d){case 1:case 2:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.g=t.zi(),1==t.xi()&&(this.d=1),!0;break;case 3:if(3===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=5,h7(e=new wet(2),this.g),h7(e,t.zi()),this.g=e,!0;break;case 5:if(3===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return zz(this.g,14).Fc(t.zi()),!0;break;case 4:switch(t.xi()){case 3:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=1,this.g=t.zi(),!0;break;case 4:if(UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return this.d=6,h7(r=new wet(2),this.n),h7(r,t.Bi()),this.n=r,i=Sst(Ux(DNe,1),hXt,25,15,[this.o,t.Ci()]),this.g=i,!0}break;case 6:if(4===t.xi()&&UI(t.Ai())===UI(this.c)&&ift(this,null)==t.yi(null))return zz(this.n,14).Fc(t.Bi()),sqt(i=zz(this.g,48),0,n=P8(DNe,hXt,25,i.length+1,15,1),0,i.length),n[i.length]=t.Ci(),this.g=n,!0}return!1},mZ(x7t,"FeatureMapUtil/FeatureENotificationImpl",627),pDt(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},fH),TWt.dl=function(t,e){return BRt(this.c,t,e)},TWt.el=function(t,e,n){return SFt(this.c,t,e,n)},TWt.fl=function(t,e,n){return tqt(this.c,t,e,n)},TWt.gl=function(){return this},TWt.hl=function(t,e){return aqt(this.c,t,e)},TWt.il=function(t){return zz(rqt(this.c,this.b,t,!1),72).ak()},TWt.jl=function(t){return zz(rqt(this.c,this.b,t,!1),72).dd()},TWt.kl=function(){return this.a},TWt.ll=function(t){return!spt(this.c,t)},TWt.ml=function(t,e){Tqt(this.c,t,e)},TWt.nl=function(t){return Yit(this.c,t)},TWt.ol=function(t){jyt(this.c,t)},mZ(x7t,"FeatureMapUtil/FeatureFeatureMap",552),pDt(1259,1,k7t,RI),TWt.Wj=function(t){return rqt(this.b,this.a,-1,t)},TWt.fj=function(){return!spt(this.b,this.a)},TWt.Wb=function(t){Tqt(this.b,this.a,t)},TWt.Xj=function(){OMt(this.b,this.a)},mZ(x7t,"FeatureMapUtil/FeatureValue",1259);var uLe,lLe,hLe,fLe,dLe,gLe=dH(D9t,"AnyType");pDt(666,60,qKt,ix),mZ(D9t,"InvalidDatatypeValueException",666);var pLe,bLe,wLe,mLe,yLe,vLe,xLe,kLe,_Le,ALe,ELe,TLe,CLe,SLe,ILe,MLe,DLe,OLe,LLe,NLe,PLe,BLe,FLe,RLe,jLe,$Le,zLe,qLe,HLe,ULe,GLe=dH(D9t,O9t),YLe=dH(D9t,L9t),ZLe=dH(D9t,N9t);pDt(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},Fy),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.c&&(this.c=new Aat(this,0)),this.c):(!this.c&&(this.c=new Aat(this,0)),this.c.b);case 1:return n?(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)):(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).kl();case 2:return n?(!this.b&&(this.b=new Aat(this,2)),this.b):(!this.b&&(this.b=new Aat(this,2)),this.b.b)}return Y7(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.c&&(this.c=new Aat(this,0)),ERt(this.c,t,n);case 1:return(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),69)).mk(t,n);case 2:return!this.b&&(this.b=new Aat(this,2)),ERt(this.b,t,n)}return zz(iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),e),66).Nj().Rj(this,X9(this),e-dZ(this.zh()),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.c&&0!=this.c.i;case 1:return!(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).dc();case 2:return!!this.b&&0!=this.b.i}return M3(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void eZ(this.c,e);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).Wb(e);case 2:return!this.b&&(this.b=new Aat(this,2)),void eZ(this.b,e)}Ndt(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),wLe},TWt.Bh=function(t){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void lHt(this.c);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).$b();case 2:return!this.b&&(this.b=new Aat(this,2)),void lHt(this.b)}Uht(this,t-dZ(this.zh()),iet(0==(2&this.j)?this.zh():(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (mixed: ",rM(t,this.c),t.a+=", anyAttribute: ",rM(t,this.b),t.a+=")",t.a)},mZ(P9t,"AnyTypeImpl",830),pDt(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},Fu),TWt._g=function(t,e,n){switch(t){case 0:return this.a;case 1:return this.b}return Y7(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return null!=this.a;case 1:return null!=this.b}return M3(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return void xd(this,TB(e));case 1:return void kd(this,TB(e))}Ndt(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),MLe},TWt.Bh=function(t){switch(t){case 0:return void(this.a=null);case 1:return void(this.b=null)}Uht(this,t-dZ((ZHt(),MLe)),iet(0==(2&this.j)?MLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (data: ",aM(t,this.a),t.a+=", target: ",aM(t,this.b),t.a+=")",t.a)},TWt.a=null,TWt.b=null,mZ(P9t,"ProcessingInstructionImpl",667),pDt(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},jy),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.c&&(this.c=new Aat(this,0)),this.c):(!this.c&&(this.c=new Aat(this,0)),this.c.b);case 1:return n?(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)):(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).kl();case 2:return n?(!this.b&&(this.b=new Aat(this,2)),this.b):(!this.b&&(this.b=new Aat(this,2)),this.b.b);case 3:return!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0));case 4:return bR(this.a,(!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0))));case 5:return this.a}return Y7(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.lh=function(t){switch(t){case 0:return!!this.c&&0!=this.c.i;case 1:return!(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).dc();case 2:return!!this.b&&0!=this.b.i;case 3:return!this.c&&(this.c=new Aat(this,0)),null!=TB(aqt(this.c,(ZHt(),LLe),!0));case 4:return null!=bR(this.a,(!this.c&&(this.c=new Aat(this,0)),TB(aqt(this.c,(ZHt(),LLe),!0))));case 5:return!!this.a}return M3(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void eZ(this.c,e);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(zz(t1(this.c,(ZHt(),mLe)),153),215)).Wb(e);case 2:return!this.b&&(this.b=new Aat(this,2)),void eZ(this.b,e);case 3:return void $0(this,TB(e));case 4:return void $0(this,wR(this.a,e));case 5:return void _d(this,zz(e,148))}Ndt(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),OLe},TWt.Bh=function(t){switch(t){case 0:return!this.c&&(this.c=new Aat(this,0)),void lHt(this.c);case 1:return void(!this.c&&(this.c=new Aat(this,0)),zz(t1(this.c,(ZHt(),mLe)),153)).$b();case 2:return!this.b&&(this.b=new Aat(this,2)),void lHt(this.b);case 3:return!this.c&&(this.c=new Aat(this,0)),void Tqt(this.c,(ZHt(),LLe),null);case 4:return void $0(this,wR(this.a,null));case 5:return void(this.a=null)}Uht(this,t-dZ((ZHt(),OLe)),iet(0==(2&this.j)?OLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},mZ(P9t,"SimpleAnyTypeImpl",668),pDt(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},Ry),TWt._g=function(t,e,n){switch(t){case 0:return n?(!this.a&&(this.a=new Aat(this,0)),this.a):(!this.a&&(this.a=new Aat(this,0)),this.a.b);case 1:return n?(!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),this.b):(!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),D8(this.b));case 2:return n?(!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),this.c):(!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),D8(this.c));case 3:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),BLe));case 4:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),FLe));case 5:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),jLe));case 6:return!this.a&&(this.a=new Aat(this,0)),t1(this.a,(ZHt(),$Le))}return Y7(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e,n)},TWt.jh=function(t,e,n){switch(e){case 0:return!this.a&&(this.a=new Aat(this,0)),ERt(this.a,t,n);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),zR(this.b,t,n);case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),zR(this.c,t,n);case 5:return!this.a&&(this.a=new Aat(this,0)),eF(t1(this.a,(ZHt(),jLe)),t,n)}return zz(iet(0==(2&this.j)?(ZHt(),PLe):(!this.k&&(this.k=new Fh),this.k).ck(),e),66).Nj().Rj(this,X9(this),e-dZ((ZHt(),PLe)),t,n)},TWt.lh=function(t){switch(t){case 0:return!!this.a&&0!=this.a.i;case 1:return!!this.b&&0!=this.b.f;case 2:return!!this.c&&0!=this.c.f;case 3:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),BLe)));case 4:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),FLe)));case 5:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),jLe)));case 6:return!this.a&&(this.a=new Aat(this,0)),!qI(t1(this.a,(ZHt(),$Le)))}return M3(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.sh=function(t,e){switch(t){case 0:return!this.a&&(this.a=new Aat(this,0)),void eZ(this.a,e);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),void not(this.b,e);case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),void not(this.c,e);case 3:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),BLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,BLe),zz(e,14));case 4:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),FLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,FLe),zz(e,14));case 5:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),jLe))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,jLe),zz(e,14));case 6:return!this.a&&(this.a=new Aat(this,0)),Nm(t1(this.a,(ZHt(),$Le))),!this.a&&(this.a=new Aat(this,0)),void JO(t1(this.a,$Le),zz(e,14))}Ndt(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t),e)},TWt.zh=function(){return ZHt(),PLe},TWt.Bh=function(t){switch(t){case 0:return!this.a&&(this.a=new Aat(this,0)),void lHt(this.a);case 1:return!this.b&&(this.b=new v7((wWt(),xOe),ZOe,this,1)),void this.b.c.$b();case 2:return!this.c&&(this.c=new v7((wWt(),xOe),ZOe,this,2)),void this.c.c.$b();case 3:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),BLe)));case 4:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),FLe)));case 5:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),jLe)));case 6:return!this.a&&(this.a=new Aat(this,0)),void Nm(t1(this.a,(ZHt(),$Le)))}Uht(this,t-dZ((ZHt(),PLe)),iet(0==(2&this.j)?PLe:(!this.k&&(this.k=new Fh),this.k).ck(),t))},TWt.Ib=function(){var t;return 0!=(4&this.j)?SOt(this):((t=new hN(SOt(this))).a+=" (mixed: ",rM(t,this.a),t.a+=")",t.a)},mZ(P9t,"XMLTypeDocumentRootImpl",669),pDt(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},Bu),TWt.Ih=function(t,e){switch(t.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return null==e?null:qdt(e);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return TB(e);case 6:return yB(zz(e,190));case 12:case 47:case 49:case 11:return UUt(this,t,e);case 13:return null==e?null:Gzt(zz(e,240));case 15:case 14:return null==e?null:FY(Uv(EB(e)));case 17:return A_t((ZHt(),e));case 18:return A_t(e);case 21:case 20:return null==e?null:RY(zz(e,155).a);case 27:return vB(zz(e,190));case 30:return $yt((ZHt(),zz(e,15)));case 31:return $yt(zz(e,15));case 40:return kB((ZHt(),e));case 42:return E_t((ZHt(),e));case 43:return E_t(e);case 59:case 48:return xB((ZHt(),e));default:throw qw(new jv(b6t+t.ne()+w6t))}},TWt.Jh=function(t){var e;switch(-1==t.G&&(t.G=(e=Zet(t))?cmt(e.Mh(),t):-1),t.G){case 0:return new Fy;case 1:return new Fu;case 2:return new jy;case 3:return new Ry;default:throw qw(new jv(v6t+t.zb+w6t))}},TWt.Kh=function(t,e){var n,i,r,a,o,s,c,u,l,h,f,d,g,p,b,w;switch(t.yj()){case 5:case 52:case 4:return e;case 6:return xwt(e);case 8:case 7:return null==e?null:$_t(e);case 9:return null==e?null:Ctt(djt((i=zzt(e,!0)).length>0&&(d1(0,i.length),43==i.charCodeAt(0))?i.substr(1):i,-128,127)<<24>>24);case 10:return null==e?null:Ctt(djt((r=zzt(e,!0)).length>0&&(d1(0,r.length),43==r.charCodeAt(0))?r.substr(1):r,-128,127)<<24>>24);case 11:return TB(BZt(this,(ZHt(),xLe),e));case 12:return TB(BZt(this,(ZHt(),kLe),e));case 13:return null==e?null:new g_(zzt(e,!0));case 15:case 14:return wLt(e);case 16:return TB(BZt(this,(ZHt(),_Le),e));case 17:return Hpt((ZHt(),e));case 18:return Hpt(e);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return zzt(e,!0);case 21:case 20:return MLt(e);case 22:return TB(BZt(this,(ZHt(),ALe),e));case 23:return TB(BZt(this,(ZHt(),ELe),e));case 24:return TB(BZt(this,(ZHt(),TLe),e));case 25:return TB(BZt(this,(ZHt(),CLe),e));case 26:return TB(BZt(this,(ZHt(),SLe),e));case 27:return twt(e);case 30:return Upt((ZHt(),e));case 31:return Upt(e);case 32:return null==e?null:rft(djt((l=zzt(e,!0)).length>0&&(d1(0,l.length),43==l.charCodeAt(0))?l.substr(1):l,$Kt,FWt));case 33:return null==e?null:new OD((h=zzt(e,!0)).length>0&&(d1(0,h.length),43==h.charCodeAt(0))?h.substr(1):h);case 34:return null==e?null:rft(djt((f=zzt(e,!0)).length>0&&(d1(0,f.length),43==f.charCodeAt(0))?f.substr(1):f,$Kt,FWt));case 36:return null==e?null:_bt(aYt((d=zzt(e,!0)).length>0&&(d1(0,d.length),43==d.charCodeAt(0))?d.substr(1):d));case 37:return null==e?null:_bt(aYt((g=zzt(e,!0)).length>0&&(d1(0,g.length),43==g.charCodeAt(0))?g.substr(1):g));case 40:return Xgt((ZHt(),e));case 42:return Gpt((ZHt(),e));case 43:return Gpt(e);case 44:return null==e?null:new OD((p=zzt(e,!0)).length>0&&(d1(0,p.length),43==p.charCodeAt(0))?p.substr(1):p);case 45:return null==e?null:new OD((b=zzt(e,!0)).length>0&&(d1(0,b.length),43==b.charCodeAt(0))?b.substr(1):b);case 46:return zzt(e,!1);case 47:return TB(BZt(this,(ZHt(),ILe),e));case 59:case 48:return Kgt((ZHt(),e));case 49:return TB(BZt(this,(ZHt(),DLe),e));case 50:return null==e?null:aft(djt((w=zzt(e,!0)).length>0&&(d1(0,w.length),43==w.charCodeAt(0))?w.substr(1):w,V7t,32767)<<16>>16);case 51:return null==e?null:aft(djt((a=zzt(e,!0)).length>0&&(d1(0,a.length),43==a.charCodeAt(0))?a.substr(1):a,V7t,32767)<<16>>16);case 53:return TB(BZt(this,(ZHt(),NLe),e));case 55:return null==e?null:aft(djt((o=zzt(e,!0)).length>0&&(d1(0,o.length),43==o.charCodeAt(0))?o.substr(1):o,V7t,32767)<<16>>16);case 56:return null==e?null:aft(djt((s=zzt(e,!0)).length>0&&(d1(0,s.length),43==s.charCodeAt(0))?s.substr(1):s,V7t,32767)<<16>>16);case 57:return null==e?null:_bt(aYt((c=zzt(e,!0)).length>0&&(d1(0,c.length),43==c.charCodeAt(0))?c.substr(1):c));case 58:return null==e?null:_bt(aYt((u=zzt(e,!0)).length>0&&(d1(0,u.length),43==u.charCodeAt(0))?u.substr(1):u));case 60:return null==e?null:rft(djt((n=zzt(e,!0)).length>0&&(d1(0,n.length),43==n.charCodeAt(0))?n.substr(1):n,$Kt,FWt));case 61:return null==e?null:rft(djt(zzt(e,!0),$Kt,FWt));default:throw qw(new jv(b6t+t.ne()+w6t))}},mZ(P9t,"XMLTypeFactoryImpl",1919),pDt(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},GW),TWt.N=!1,TWt.O=!1;var WLe,KLe,XLe,VLe,QLe,JLe=!1;mZ(P9t,"XMLTypePackageImpl",586),pDt(1852,1,{837:1},Ru),TWt._j=function(){return f$t(),ANe},mZ(P9t,"XMLTypePackageImpl/1",1852),pDt(1861,1,l9t,ju),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/10",1861),pDt(1862,1,l9t,$u),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/11",1862),pDt(1863,1,l9t,zu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/12",1863),pDt(1864,1,l9t,qu),TWt.wj=function(t){return YI(t)},TWt.xj=function(t){return P8(See,lKt,333,t,7,1)},mZ(P9t,"XMLTypePackageImpl/13",1864),pDt(1865,1,l9t,Hu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/14",1865),pDt(1866,1,l9t,Uu),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/15",1866),pDt(1867,1,l9t,Gu),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/16",1867),pDt(1868,1,l9t,Yu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/17",1868),pDt(1869,1,l9t,Zu),TWt.wj=function(t){return aL(t,155)},TWt.xj=function(t){return P8(Iee,lKt,155,t,0,1)},mZ(P9t,"XMLTypePackageImpl/18",1869),pDt(1870,1,l9t,Wu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/19",1870),pDt(1853,1,l9t,Ku),TWt.wj=function(t){return aL(t,843)},TWt.xj=function(t){return P8(gLe,HWt,843,t,0,1)},mZ(P9t,"XMLTypePackageImpl/2",1853),pDt(1871,1,l9t,Xu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/20",1871),pDt(1872,1,l9t,Vu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/21",1872),pDt(1873,1,l9t,Qu),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/22",1873),pDt(1874,1,l9t,Ju),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/23",1874),pDt(1875,1,l9t,tl),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(P9t,"XMLTypePackageImpl/24",1875),pDt(1876,1,l9t,el),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/25",1876),pDt(1877,1,l9t,nl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/26",1877),pDt(1878,1,l9t,il),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/27",1878),pDt(1879,1,l9t,rl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/28",1879),pDt(1880,1,l9t,al),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/29",1880),pDt(1854,1,l9t,ol),TWt.wj=function(t){return aL(t,667)},TWt.xj=function(t){return P8(GLe,HWt,2021,t,0,1)},mZ(P9t,"XMLTypePackageImpl/3",1854),pDt(1881,1,l9t,sl),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(P9t,"XMLTypePackageImpl/30",1881),pDt(1882,1,l9t,cl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/31",1882),pDt(1883,1,l9t,ul),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(P9t,"XMLTypePackageImpl/32",1883),pDt(1884,1,l9t,ll),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/33",1884),pDt(1885,1,l9t,hl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/34",1885),pDt(1886,1,l9t,fl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/35",1886),pDt(1887,1,l9t,dl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/36",1887),pDt(1888,1,l9t,gl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/37",1888),pDt(1889,1,l9t,pl),TWt.wj=function(t){return aL(t,15)},TWt.xj=function(t){return P8(Rte,eJt,15,t,0,1)},mZ(P9t,"XMLTypePackageImpl/38",1889),pDt(1890,1,l9t,bl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/39",1890),pDt(1855,1,l9t,wl),TWt.wj=function(t){return aL(t,668)},TWt.xj=function(t){return P8(YLe,HWt,2022,t,0,1)},mZ(P9t,"XMLTypePackageImpl/4",1855),pDt(1891,1,l9t,ml),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/40",1891),pDt(1892,1,l9t,yl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/41",1892),pDt(1893,1,l9t,vl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/42",1893),pDt(1894,1,l9t,xl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/43",1894),pDt(1895,1,l9t,kl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/44",1895),pDt(1896,1,l9t,_l),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(P9t,"XMLTypePackageImpl/45",1896),pDt(1897,1,l9t,Al),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/46",1897),pDt(1898,1,l9t,El),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/47",1898),pDt(1899,1,l9t,Tl),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/48",1899),pDt(lXt,1,l9t,Cl),TWt.wj=function(t){return aL(t,184)},TWt.xj=function(t){return P8($ee,lKt,184,t,0,1)},mZ(P9t,"XMLTypePackageImpl/49",lXt),pDt(1856,1,l9t,Sl),TWt.wj=function(t){return aL(t,669)},TWt.xj=function(t){return P8(ZLe,HWt,2023,t,0,1)},mZ(P9t,"XMLTypePackageImpl/5",1856),pDt(1901,1,l9t,Il),TWt.wj=function(t){return aL(t,162)},TWt.xj=function(t){return P8(Ree,lKt,162,t,0,1)},mZ(P9t,"XMLTypePackageImpl/50",1901),pDt(1902,1,l9t,Ml),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/51",1902),pDt(1903,1,l9t,Dl),TWt.wj=function(t){return aL(t,19)},TWt.xj=function(t){return P8(Oee,lKt,19,t,0,1)},mZ(P9t,"XMLTypePackageImpl/52",1903),pDt(1857,1,l9t,Ol),TWt.wj=function(t){return ZI(t)},TWt.xj=function(t){return P8(Vee,lKt,2,t,6,1)},mZ(P9t,"XMLTypePackageImpl/6",1857),pDt(1858,1,l9t,Ll),TWt.wj=function(t){return aL(t,190)},TWt.xj=function(t){return P8(NNe,lKt,190,t,0,2)},mZ(P9t,"XMLTypePackageImpl/7",1858),pDt(1859,1,l9t,Nl),TWt.wj=function(t){return GI(t)},TWt.xj=function(t){return P8(kee,lKt,476,t,8,1)},mZ(P9t,"XMLTypePackageImpl/8",1859),pDt(1860,1,l9t,Pl),TWt.wj=function(t){return aL(t,217)},TWt.xj=function(t){return P8(Eee,lKt,217,t,0,1)},mZ(P9t,"XMLTypePackageImpl/9",1860),pDt(50,60,qKt,ox),mZ(ste,"RegEx/ParseException",50),pDt(820,1,{},Bl),TWt.sl=function(t){return t16*n)throw qw(new ox(kWt((sO(),H8t))));n=16*n+r}if(125!=this.a)throw qw(new ox(kWt((sO(),U8t))));if(n>cte)throw qw(new ox(kWt((sO(),G8t))));t=n}else{if(r=0,0!=this.c||(r=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(n=r,VZt(this),0!=this.c||(r=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));t=n=16*n+r}break;case 117:if(i=0,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));t=e=16*e+i;break;case 118:if(VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if(e=16*e+i,VZt(this),0!=this.c||(i=Gmt(this.a))<0)throw qw(new ox(kWt((sO(),q8t))));if((e=16*e+i)>cte)throw qw(new ox(kWt((sO(),"parser.descappe.4"))));t=e;break;case 65:case 90:case 122:throw qw(new ox(kWt((sO(),Y8t))))}return t},TWt.ul=function(t){var e;switch(t){case 100:e=32==(32&this.e)?tZt("Nd",!0):(pWt(),sNe);break;case 68:e=32==(32&this.e)?tZt("Nd",!1):(pWt(),fNe);break;case 119:e=32==(32&this.e)?tZt("IsWord",!0):(pWt(),xNe);break;case 87:e=32==(32&this.e)?tZt("IsWord",!1):(pWt(),gNe);break;case 115:e=32==(32&this.e)?tZt("IsSpace",!0):(pWt(),bNe);break;case 83:e=32==(32&this.e)?tZt("IsSpace",!1):(pWt(),dNe);break;default:throw qw(new pv(ute+t.toString(16)))}return e},TWt.vl=function(t){var e,n,i,r,a,o,s,c,u,l,h;for(this.b=1,VZt(this),e=null,0==this.c&&94==this.a?(VZt(this),t?(pWt(),pWt(),u=new E0(5)):(pWt(),pWt(),QPt(e=new E0(4),0,cte),u=new E0(4))):(pWt(),pWt(),u=new E0(4)),r=!0;1!=(h=this.c)&&(0!=h||93!=this.a||r);){if(r=!1,n=this.a,i=!1,10==h)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:lqt(u,this.ul(n)),i=!0;break;case 105:case 73:case 99:case 67:(n=this.Ll(u,n))<0&&(i=!0);break;case 112:case 80:if(!(l=FIt(this,n)))throw qw(new ox(kWt((sO(),D8t))));lqt(u,l),i=!0;break;default:n=this.tl()}else if(20==h){if((a=fP(this.i,58,this.d))<0)throw qw(new ox(kWt((sO(),O8t))));if(o=!0,94==hK(this.i,this.d)&&(++this.d,o=!1),!(s=d7(hP(this.i,this.d,a),o,512==(512&this.e))))throw qw(new ox(kWt((sO(),N8t))));if(lqt(u,s),i=!0,a+1>=this.j||93!=hK(this.i,a+1))throw qw(new ox(kWt((sO(),O8t))));this.d=a+2}if(VZt(this),!i)if(0!=this.c||45!=this.a)QPt(u,n,n);else{if(VZt(this),1==(h=this.c))throw qw(new ox(kWt((sO(),L8t))));0==h&&93==this.a?(QPt(u,n,n),QPt(u,45,45)):(c=this.a,10==h&&(c=this.tl()),VZt(this),QPt(u,n,c))}(this.e&k6t)==k6t&&0==this.c&&44==this.a&&VZt(this)}if(1==this.c)throw qw(new ox(kWt((sO(),L8t))));return e&&(KUt(e,u),u=e),EOt(u),Uqt(u),this.b=0,VZt(this),u},TWt.wl=function(){var t,e,n,i;for(n=this.vl(!1);7!=(i=this.c);){if(t=this.a,(0!=i||45!=t&&38!=t)&&4!=i)throw qw(new ox(kWt((sO(),$8t))));if(VZt(this),9!=this.c)throw qw(new ox(kWt((sO(),j8t))));if(e=this.vl(!1),4==i)lqt(n,e);else if(45==t)KUt(n,e);else{if(38!=t)throw qw(new pv("ASSERT"));kUt(n,e)}}return VZt(this),n},TWt.xl=function(){var t,e;return t=this.a-48,pWt(),pWt(),e=new mQ(12,null,t),!this.g&&(this.g=new jm),Sm(this.g,new Mw(t)),VZt(this),e},TWt.yl=function(){return VZt(this),pWt(),wNe},TWt.zl=function(){return VZt(this),pWt(),pNe},TWt.Al=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Bl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Cl=function(){return VZt(this),fut()},TWt.Dl=function(){return VZt(this),pWt(),yNe},TWt.El=function(){return VZt(this),pWt(),kNe},TWt.Fl=function(){var t;if(this.d>=this.j||64!=(65504&(t=hK(this.i,this.d++))))throw qw(new ox(kWt((sO(),C8t))));return VZt(this),pWt(),pWt(),new cU(0,t-64)},TWt.Gl=function(){return VZt(this),R$t()},TWt.Hl=function(){return VZt(this),pWt(),_Ne},TWt.Il=function(){var t;return pWt(),pWt(),t=new cU(0,105),VZt(this),t},TWt.Jl=function(){return VZt(this),pWt(),vNe},TWt.Kl=function(){return VZt(this),pWt(),mNe},TWt.Ll=function(t,e){return this.tl()},TWt.Ml=function(){return VZt(this),pWt(),lNe},TWt.Nl=function(){var t,e,n,i,r;if(this.d+1>=this.j)throw qw(new ox(kWt((sO(),A8t))));if(i=-1,e=null,49<=(t=hK(this.i,this.d))&&t<=57){if(i=t-48,!this.g&&(this.g=new jm),Sm(this.g,new Mw(i)),++this.d,41!=hK(this.i,this.d))throw qw(new ox(kWt((sO(),x8t))));++this.d}else switch(63==t&&--this.d,VZt(this),(e=DZt(this)).e){case 20:case 21:case 22:case 23:break;case 8:if(7!=this.c)throw qw(new ox(kWt((sO(),x8t))));break;default:throw qw(new ox(kWt((sO(),E8t))))}if(VZt(this),n=null,2==(r=Xpt(this)).e){if(2!=r.em())throw qw(new ox(kWt((sO(),T8t))));n=r.am(1),r=r.am(0)}if(7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),pWt(),pWt(),new ktt(i,e,r,n)},TWt.Ol=function(){return VZt(this),pWt(),hNe},TWt.Pl=function(){var t;if(VZt(this),t=sY(24,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Ql=function(){var t;if(VZt(this),t=sY(20,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Rl=function(){var t;if(VZt(this),t=sY(22,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Sl=function(){var t,e,n,i,r;for(t=0,n=0,e=-1;this.d=this.j)throw qw(new ox(kWt((sO(),k8t))));if(45==e){for(++this.d;this.d=this.j)throw qw(new ox(kWt((sO(),k8t))))}if(58==e){if(++this.d,VZt(this),i=DZ(Xpt(this),t,n),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));VZt(this)}else{if(41!=e)throw qw(new ox(kWt((sO(),_8t))));++this.d,VZt(this),i=DZ(Xpt(this),t,n)}return i},TWt.Tl=function(){var t;if(VZt(this),t=sY(21,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Ul=function(){var t;if(VZt(this),t=sY(23,Xpt(this)),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Vl=function(){var t,e;if(VZt(this),t=this.f++,e=cY(Xpt(this),t),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),e},TWt.Wl=function(){var t;if(VZt(this),t=cY(Xpt(this),0),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Xl=function(t){return VZt(this),5==this.c?(VZt(this),bU(t,(pWt(),pWt(),new l4(9,t)))):bU(t,(pWt(),pWt(),new l4(3,t)))},TWt.Yl=function(t){var e;return VZt(this),pWt(),pWt(),e=new rO(2),5==this.c?(VZt(this),nHt(e,uNe),nHt(e,t)):(nHt(e,t),nHt(e,uNe)),e},TWt.Zl=function(t){return VZt(this),5==this.c?(VZt(this),pWt(),pWt(),new l4(9,t)):(pWt(),pWt(),new l4(3,t))},TWt.a=0,TWt.b=0,TWt.c=0,TWt.d=0,TWt.e=0,TWt.f=1,TWt.g=null,TWt.j=0,mZ(ste,"RegEx/RegexParser",820),pDt(1824,820,{},$y),TWt.sl=function(t){return!1},TWt.tl=function(){return UBt(this)},TWt.ul=function(t){return bjt(t)},TWt.vl=function(t){return tWt(this)},TWt.wl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.xl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.yl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.zl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Al=function(){return VZt(this),bjt(67)},TWt.Bl=function(){return VZt(this),bjt(73)},TWt.Cl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Dl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.El=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Fl=function(){return VZt(this),bjt(99)},TWt.Gl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Hl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Il=function(){return VZt(this),bjt(105)},TWt.Jl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Kl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ll=function(t,e){return lqt(t,bjt(e)),-1},TWt.Ml=function(){return VZt(this),pWt(),pWt(),new cU(0,94)},TWt.Nl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ol=function(){return VZt(this),pWt(),pWt(),new cU(0,36)},TWt.Pl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ql=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Rl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Sl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Tl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Ul=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Vl=function(){var t;if(VZt(this),t=cY(Xpt(this),0),7!=this.c)throw qw(new ox(kWt((sO(),x8t))));return VZt(this),t},TWt.Wl=function(){throw qw(new ox(kWt((sO(),Z8t))))},TWt.Xl=function(t){return VZt(this),bU(t,(pWt(),pWt(),new l4(3,t)))},TWt.Yl=function(t){var e;return VZt(this),pWt(),pWt(),nHt(e=new rO(2),t),nHt(e,uNe),e},TWt.Zl=function(t){return VZt(this),pWt(),pWt(),new l4(3,t)};var tNe=null,eNe=null;mZ(ste,"RegEx/ParserForXMLSchema",1824),pDt(117,1,xte,Dw),TWt.$l=function(t){throw qw(new pv("Not supported."))},TWt._l=function(){return-1},TWt.am=function(t){return null},TWt.bm=function(){return null},TWt.cm=function(t){},TWt.dm=function(t){},TWt.em=function(){return 0},TWt.Ib=function(){return this.fm(0)},TWt.fm=function(t){return 11==this.e?".":""},TWt.e=0;var nNe,iNe,rNe,aNe,oNe,sNe,cNe,uNe,lNe,hNe,fNe,dNe,gNe,pNe,bNe,wNe,mNe,yNe,vNe,xNe,kNe,_Ne,ANe,ENe,TNe=null,CNe=null,SNe=null,INe=mZ(ste,"RegEx/Token",117);pDt(136,117,{3:1,136:1,117:1},E0),TWt.fm=function(t){var e,n,i;if(4==this.e)if(this==cNe)n=".";else if(this==sNe)n="\\d";else if(this==xNe)n="\\w";else if(this==bNe)n="\\s";else{for((i=new Tx).a+="[",e=0;e0&&(i.a+=","),this.b[e]===this.b[e+1]?aM(i,szt(this.b[e])):(aM(i,szt(this.b[e])),i.a+="-",aM(i,szt(this.b[e+1])));i.a+="]",n=i.a}else if(this==fNe)n="\\D";else if(this==gNe)n="\\W";else if(this==dNe)n="\\S";else{for((i=new Tx).a+="[^",e=0;e0&&(i.a+=","),this.b[e]===this.b[e+1]?aM(i,szt(this.b[e])):(aM(i,szt(this.b[e])),i.a+="-",aM(i,szt(this.b[e+1])));i.a+="]",n=i.a}return n},TWt.a=!1,TWt.c=!1,mZ(ste,"RegEx/RangeToken",136),pDt(584,1,{584:1},Mw),TWt.a=0,mZ(ste,"RegEx/RegexParser/ReferencePosition",584),pDt(583,1,{3:1,583:1},Z_),TWt.Fb=function(t){var e;return null!=t&&!!aL(t,583)&&(e=zz(t,583),yR(this.b,e.b)&&this.a==e.a)},TWt.Hb=function(){return ymt(this.b+"/"+nPt(this.a))},TWt.Ib=function(){return this.c.fm(this.a)},TWt.a=0,mZ(ste,"RegEx/RegularExpression",583),pDt(223,117,xte,cU),TWt._l=function(){return this.a},TWt.fm=function(t){var e,n;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:n="\\"+CF(this.a&VKt);break;case 12:n="\\f";break;case 10:n="\\n";break;case 13:n="\\r";break;case 9:n="\\t";break;case 27:n="\\e";break;default:n=this.a>=qXt?"\\v"+hP(e="0"+(this.a>>>0).toString(16),e.length-6,e.length):""+CF(this.a&VKt)}break;case 8:n=this==lNe||this==hNe?""+CF(this.a&VKt):"\\"+CF(this.a&VKt);break;default:n=null}return n},TWt.a=0,mZ(ste,"RegEx/Token/CharToken",223),pDt(309,117,xte,l4),TWt.am=function(t){return this.a},TWt.cm=function(t){this.b=t},TWt.dm=function(t){this.c=t},TWt.em=function(){return 1},TWt.fm=function(t){var e;if(3==this.e)if(this.c<0&&this.b<0)e=this.a.fm(t)+"*";else if(this.c==this.b)e=this.a.fm(t)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)e=this.a.fm(t)+"{"+this.c+","+this.b+"}";else{if(!(this.c>=0&&this.b<0))throw qw(new pv("Token#toString(): CLOSURE "+this.c+zWt+this.b));e=this.a.fm(t)+"{"+this.c+",}"}else if(this.c<0&&this.b<0)e=this.a.fm(t)+"*?";else if(this.c==this.b)e=this.a.fm(t)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)e=this.a.fm(t)+"{"+this.c+","+this.b+"}?";else{if(!(this.c>=0&&this.b<0))throw qw(new pv("Token#toString(): NONGREEDYCLOSURE "+this.c+zWt+this.b));e=this.a.fm(t)+"{"+this.c+",}?"}return e},TWt.b=0,TWt.c=0,mZ(ste,"RegEx/Token/ClosureToken",309),pDt(821,117,xte,YY),TWt.am=function(t){return 0==t?this.a:this.b},TWt.em=function(){return 2},TWt.fm=function(t){return 3==this.b.e&&this.b.am(0)==this.a?this.a.fm(t)+"+":9==this.b.e&&this.b.am(0)==this.a?this.a.fm(t)+"+?":this.a.fm(t)+""+this.b.fm(t)},mZ(ste,"RegEx/Token/ConcatToken",821),pDt(1822,117,xte,ktt),TWt.am=function(t){if(0==t)return this.d;if(1==t)return this.b;throw qw(new pv("Internal Error: "+t))},TWt.em=function(){return this.b?2:1},TWt.fm=function(t){var e;return e=this.c>0?"(?("+this.c+")":8==this.a.e?"(?("+this.a+")":"(?"+this.a,this.b?e+=this.d+"|"+this.b+")":e+=this.d+")",e},TWt.c=0,mZ(ste,"RegEx/Token/ConditionToken",1822),pDt(1823,117,xte,A0),TWt.am=function(t){return this.b},TWt.em=function(){return 1},TWt.fm=function(t){return"(?"+(0==this.a?"":nPt(this.a))+(0==this.c?"":nPt(this.c))+":"+this.b.fm(t)+")"},TWt.a=0,TWt.c=0,mZ(ste,"RegEx/Token/ModifierToken",1823),pDt(822,117,xte,aW),TWt.am=function(t){return this.a},TWt.em=function(){return 1},TWt.fm=function(t){var e;switch(e=null,this.e){case 6:e=0==this.b?"(?:"+this.a.fm(t)+")":"("+this.a.fm(t)+")";break;case 20:e="(?="+this.a.fm(t)+")";break;case 21:e="(?!"+this.a.fm(t)+")";break;case 22:e="(?<="+this.a.fm(t)+")";break;case 23:e="(?"+this.a.fm(t)+")"}return e},TWt.b=0,mZ(ste,"RegEx/Token/ParenToken",822),pDt(521,117,{3:1,117:1,521:1},mQ),TWt.bm=function(){return this.b},TWt.fm=function(t){return 12==this.e?"\\"+this.a:rDt(this.b)},TWt.a=0,mZ(ste,"RegEx/Token/StringToken",521),pDt(465,117,xte,rO),TWt.$l=function(t){nHt(this,t)},TWt.am=function(t){return zz(dW(this.a,t),117)},TWt.em=function(){return this.a?this.a.a.c.length:0},TWt.fm=function(t){var e,n,i,r,a;if(1==this.e){if(2==this.a.a.c.length)e=zz(dW(this.a,0),117),r=3==(n=zz(dW(this.a,1),117)).e&&n.am(0)==e?e.fm(t)+"+":9==n.e&&n.am(0)==e?e.fm(t)+"+?":e.fm(t)+""+n.fm(t);else{for(a=new Tx,i=0;i=this.c.b:this.a<=this.c.b},TWt.Sb=function(){return this.b>0},TWt.Tb=function(){return this.b},TWt.Vb=function(){return this.b-1},TWt.Qb=function(){throw qw(new ex(Cte))},TWt.a=0,TWt.b=0,mZ(Ate,"ExclusiveRange/RangeIterator",254);var MNe=FW(S7t,"C"),DNe=FW(D7t,"I"),ONe=FW(LWt,"Z"),LNe=FW(O7t,"J"),NNe=FW(C7t,"B"),PNe=FW(I7t,"D"),BNe=FW(M7t,"F"),FNe=FW(L7t,"S"),RNe=dH("org.eclipse.elk.core.labels","ILabelManager"),jNe=dH(q6t,"DiagnosticChain"),$Ne=dH(f9t,"ResourceSet"),zNe=mZ(q6t,"InvocationTargetException",null),qNe=(Bx(),h5),HNe=HNe=h_t;tit(Xw),lat("permProps",[[[Ste,Ite],[Mte,"gecko1_8"]],[[Ste,Ite],[Mte,"ie10"]],[[Ste,Ite],[Mte,"ie8"]],[[Ste,Ite],[Mte,"ie9"]],[[Ste,Ite],[Mte,"safari"]]]),HNe(null,"elk",null)}).call(this)}).call(this,void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(e){function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,n);var a=Object.assign({},e),o=!1;try{t.resolve("web-worker"),o=!0}catch(t){}if(e.workerUrl)if(o){var s=t("web-worker");a.workerFactory=function(t){return new s(t)}}else console.warn("Web worker requested but 'web-worker' package not installed. \nConsider installing the package or pass your own 'workerFactory' to ELK's constructor.\n... Falling back to non-web worker version.");if(!a.workerFactory){var c=t("./elk-worker.min.js").Worker;a.workerFactory=function(t){return new c(t)}}return r(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,a))}return a(n,e),n}(t("./elk-api.js").default);Object.defineProperty(e.exports,"__esModule",{value:!0}),e.exports=o,o.default=o},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(t,e,n){e.exports=Worker},{}]},{},[3])(3)},5539:function(t){var e;e=function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.i=function(t){return t},n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=26)}([function(t,e,n){"use strict";function i(){}i.QUALITY=1,i.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,i.DEFAULT_INCREMENTAL=!1,i.DEFAULT_ANIMATION_ON_LAYOUT=!0,i.DEFAULT_ANIMATION_DURING_LAYOUT=!1,i.DEFAULT_ANIMATION_PERIOD=50,i.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,i.DEFAULT_GRAPH_MARGIN=15,i.NODE_DIMENSIONS_INCLUDE_LABELS=!1,i.SIMPLE_NODE_SIZE=40,i.SIMPLE_NODE_HALF_SIZE=i.SIMPLE_NODE_SIZE/2,i.EMPTY_COMPOUND_NODE_SIZE=40,i.MIN_EDGE_LENGTH=1,i.WORLD_BOUNDARY=1e6,i.INITIAL_WORLD_BOUNDARY=i.WORLD_BOUNDARY/1e3,i.WORLD_CENTER_X=1200,i.WORLD_CENTER_Y=900,t.exports=i},function(t,e,n){"use strict";var i=n(2),r=n(8),a=n(9);function o(t,e,n){i.call(this,n),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=n,this.bendpoints=[],this.source=t,this.target=e}for(var s in o.prototype=Object.create(i.prototype),i)o[s]=i[s];o.prototype.getSource=function(){return this.source},o.prototype.getTarget=function(){return this.target},o.prototype.isInterGraph=function(){return this.isInterGraph},o.prototype.getLength=function(){return this.length},o.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},o.prototype.getBendpoints=function(){return this.bendpoints},o.prototype.getLca=function(){return this.lca},o.prototype.getSourceInLca=function(){return this.sourceInLca},o.prototype.getTargetInLca=function(){return this.targetInLca},o.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},o.prototype.getOtherEndInGraph=function(t,e){for(var n=this.getOtherEnd(t),i=e.getGraphManager().getRoot();;){if(n.getOwner()==e)return n;if(n.getOwner()==i)break;n=n.getOwner().getParent()}return null},o.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},o.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=o},function(t,e,n){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,n){"use strict";var i=n(2),r=n(10),a=n(13),o=n(0),s=n(16),c=n(4);function u(t,e,n,o){null==n&&null==o&&(o=e),i.call(this,o),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=o,this.edges=[],this.graphManager=t,this.rect=null!=n&&null!=e?new a(e.x,e.y,n.width,n.height):new a}for(var l in u.prototype=Object.create(i.prototype),i)u[l]=i[l];u.prototype.getEdges=function(){return this.edges},u.prototype.getChild=function(){return this.child},u.prototype.getOwner=function(){return this.owner},u.prototype.getWidth=function(){return this.rect.width},u.prototype.setWidth=function(t){this.rect.width=t},u.prototype.getHeight=function(){return this.rect.height},u.prototype.setHeight=function(t){this.rect.height=t},u.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},u.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},u.prototype.getCenter=function(){return new c(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},u.prototype.getLocation=function(){return new c(this.rect.x,this.rect.y)},u.prototype.getRect=function(){return this.rect},u.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},u.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},u.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},u.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},u.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},u.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},u.prototype.getEdgeListToNode=function(t){var e=[],n=this;return n.edges.forEach((function(i){if(i.target==t){if(i.source!=n)throw"Incorrect edge source!";e.push(i)}})),e},u.prototype.getEdgesBetween=function(t){var e=[],n=this;return n.edges.forEach((function(i){if(i.source!=n&&i.target!=n)throw"Incorrect edge source and/or target";i.target!=t&&i.source!=t||e.push(i)})),e},u.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach((function(n){if(n.source==e)t.add(n.target);else{if(n.target!=e)throw"Incorrect incidency!";t.add(n.source)}})),t},u.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),n=0;ne&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>n&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-n)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-n),this.setHeight(this.labelHeight))}}},u.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},u.prototype.transform=function(t){var e=this.rect.x;e>o.WORLD_BOUNDARY?e=o.WORLD_BOUNDARY:e<-o.WORLD_BOUNDARY&&(e=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var i=new c(e,n),r=t.inverseTransformPoint(i);this.setLocation(r.x,r.y)},u.prototype.getLeft=function(){return this.rect.x},u.prototype.getRight=function(){return this.rect.x+this.rect.width},u.prototype.getTop=function(){return this.rect.y},u.prototype.getBottom=function(){return this.rect.y+this.rect.height},u.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=u},function(t,e,n){"use strict";function i(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}i.prototype.getX=function(){return this.x},i.prototype.getY=function(){return this.y},i.prototype.setX=function(t){this.x=t},i.prototype.setY=function(t){this.y=t},i.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},i.prototype.getCopy=function(){return new i(this.x,this.y)},i.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=i},function(t,e,n){"use strict";var i=n(2),r=n(10),a=n(0),o=n(6),s=n(3),c=n(1),u=n(13),l=n(12),h=n(11);function f(t,e,n){i.call(this,n),this.estimatedSize=r.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof o?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in f.prototype=Object.create(i.prototype),i)f[d]=i[d];f.prototype.getNodes=function(){return this.nodes},f.prototype.getEdges=function(){return this.edges},f.prototype.getGraphManager=function(){return this.graphManager},f.prototype.getParent=function(){return this.parent},f.prototype.getLeft=function(){return this.left},f.prototype.getRight=function(){return this.right},f.prototype.getTop=function(){return this.top},f.prototype.getBottom=function(){return this.bottom},f.prototype.isConnected=function(){return this.isConnected},f.prototype.add=function(t,e,n){if(null==e&&null==n){var i=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(i)>-1)throw"Node already in graph!";return i.owner=this,this.getNodes().push(i),i}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(n)>-1))throw"Source or target not in graph!";if(e.owner!=n.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=n.owner?null:(r.source=e,r.target=n,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),n!=e&&n.edges.push(r),r)},f.prototype.remove=function(t){var e=t;if(t instanceof s){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var n=e.edges.slice(),i=n.length,r=0;r-1&&l>-1))throw"Source and/or target doesn't know this edge!";if(a.source.edges.splice(u,1),a.target!=a.source&&a.target.edges.splice(l,1),-1==(o=a.source.owner.getEdges().indexOf(a)))throw"Not in owner's edge list!";a.source.owner.getEdges().splice(o,1)}},f.prototype.updateLeftTop=function(){for(var t,e,n,i=r.MAX_VALUE,a=r.MAX_VALUE,o=this.getNodes(),s=o.length,c=0;c(t=u.getTop())&&(i=t),a>(e=u.getLeft())&&(a=e)}return i==r.MAX_VALUE?null:(n=null!=o[0].getParent().paddingLeft?o[0].getParent().paddingLeft:this.margin,this.left=a-n,this.top=i-n,new l(this.left,this.top))},f.prototype.updateBounds=function(t){for(var e,n,i,a,o,s=r.MAX_VALUE,c=-r.MAX_VALUE,l=r.MAX_VALUE,h=-r.MAX_VALUE,f=this.nodes,d=f.length,g=0;g(e=p.getLeft())&&(s=e),c<(n=p.getRight())&&(c=n),l>(i=p.getTop())&&(l=i),h<(a=p.getBottom())&&(h=a)}var b=new u(s,l,c-s,h-l);s==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),o=null!=f[0].getParent().paddingLeft?f[0].getParent().paddingLeft:this.margin,this.left=b.x-o,this.right=b.x+b.width+o,this.top=b.y-o,this.bottom=b.y+b.height+o},f.calculateBounds=function(t){for(var e,n,i,a,o=r.MAX_VALUE,s=-r.MAX_VALUE,c=r.MAX_VALUE,l=-r.MAX_VALUE,h=t.length,f=0;f(e=d.getLeft())&&(o=e),s<(n=d.getRight())&&(s=n),c>(i=d.getTop())&&(c=i),l<(a=d.getBottom())&&(l=a)}return new u(o,c,s-o,l-c)},f.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},f.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},f.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,n=e.length,i=0;i=this.nodes.length){var c=0;r.forEach((function(e){e.owner==t&&c++})),c==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=f},function(t,e,n){"use strict";var i,r=n(1);function a(t){i=n(5),this.layout=t,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),n=this.add(t,e);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(t,e,n,i,r){if(null==n&&null==i&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=n,n=t;var a=(i=e).getOwner(),o=r.getOwner();if(null==a||a.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==o||o.getGraphManager()!=this)throw"Target not in this graph mgr!";if(a==o)return n.isInterGraph=!1,a.add(n,i,r);if(n.isInterGraph=!0,n.source=i,n.target=r,this.edges.indexOf(n)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(n),null==n.source||null==n.target)throw"Edge source and/or target is null!";if(-1!=n.source.edges.indexOf(n)||-1!=n.target.edges.indexOf(n))throw"Edge already in source and/or target incidency list!";return n.source.edges.push(n),n.target.edges.push(n),n},a.prototype.remove=function(t){if(t instanceof i){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var n,a=[],o=(a=a.concat(e.getEdges())).length,s=0;s=e.getRight()?n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var a=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=i,n[1]=c,n[2]=a,n[3]=y,!1;if(ra)return n[0]=s,n[1]=r,n[2]=w,n[3]=o,!1;if(ia?(n[0]=l,n[1]=h,_=!0):(n[0]=u,n[1]=c,_=!0):E===C&&(i>a?(n[0]=s,n[1]=c,_=!0):(n[0]=f,n[1]=h,_=!0)),-T===C?a>i?(n[2]=m,n[3]=y,A=!0):(n[2]=w,n[3]=b,A=!0):T===C&&(a>i?(n[2]=p,n[3]=b,A=!0):(n[2]=v,n[3]=y,A=!0)),_&&A)return!1;if(i>a?r>o?(S=this.getCardinalDirection(E,C,4),I=this.getCardinalDirection(T,C,2)):(S=this.getCardinalDirection(-E,C,3),I=this.getCardinalDirection(-T,C,1)):r>o?(S=this.getCardinalDirection(-E,C,1),I=this.getCardinalDirection(-T,C,3)):(S=this.getCardinalDirection(E,C,2),I=this.getCardinalDirection(T,C,4)),!_)switch(S){case 1:D=c,M=i+-g/C,n[0]=M,n[1]=D;break;case 2:M=f,D=r+d*C,n[0]=M,n[1]=D;break;case 3:D=h,M=i+g/C,n[0]=M,n[1]=D;break;case 4:M=l,D=r+-d*C,n[0]=M,n[1]=D}if(!A)switch(I){case 1:L=b,O=a+-k/C,n[2]=O,n[3]=L;break;case 2:O=v,L=o+x*C,n[2]=O,n[3]=L;break;case 3:L=y,O=a+k/C,n[2]=O,n[3]=L;break;case 4:O=m,L=o+-x*C,n[2]=O,n[3]=L}}return!1},r.getCardinalDirection=function(t,e,n){return t>e?n:1+n%4},r.getIntersection=function(t,e,n,r){if(null==r)return this.getIntersection2(t,e,n);var a,o,s,c,u,l,h,f=t.x,d=t.y,g=e.x,p=e.y,b=n.x,w=n.y,m=r.x,y=r.y;return 0==(h=(a=p-d)*(c=b-m)-(o=y-w)*(s=f-g))?null:new i((s*(l=m*w-b*y)-c*(u=g*d-f*p))/h,(o*u-a*l)/h)},r.angleOfVector=function(t,e,n,i){var r=void 0;return t!==n?(r=Math.atan((i-e)/(n-t)),n0?1:t<0?-1:0},i.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},i.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=i},function(t,e,n){"use strict";function i(){}i.MAX_VALUE=2147483647,i.MIN_VALUE=-2147483648,t.exports=i},function(t,e,n){"use strict";var i=function(){function t(t,e){for(var n=0;n0&&e;){for(s.push(u[0]);s.length>0&&e;){var l=s[0];s.splice(0,1),o.add(l);var h=l.getEdges();for(a=0;a-1&&u.splice(p,1)}o=new Set,c=new Map}else t=[]}return t},f.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],n=t.source,i=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r0){for(var r=this.edgeToDummyNodes.get(n),a=0;a=0&&e.splice(h,1),l.getNeighborsList().forEach((function(t){if(n.indexOf(t)<0){var e=i.get(t)-1;1==e&&c.push(t),i.set(t,e)}}))}n=n.concat(c),1!=e.length&&2!=e.length||(r=!0,a=e[0])}return a},f.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=f},function(t,e,n){"use strict";function i(){}i.seed=1,i.x=0,i.nextDouble=function(){return i.x=1e4*Math.sin(i.seed++),i.x-Math.floor(i.x)},t.exports=i},function(t,e,n){"use strict";var i=n(4);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,n=this.lworldExtX;return 0!=n&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/n),e},r.prototype.transformY=function(t){var e=0,n=this.lworldExtY;return 0!=n&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/n),e},r.prototype.inverseTransformX=function(t){var e=0,n=this.ldeviceExtX;return 0!=n&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/n),e},r.prototype.inverseTransformY=function(t){var e=0,n=this.ldeviceExtY;return 0!=n&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/n),e},r.prototype.inverseTransformPoint=function(t){return new i(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,n){"use strict";var i=n(15),r=n(7),a=n(0),o=n(8),s=n(9);function c(){i.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=r.DEFAULT_EDGE_LENGTH,this.springConstant=r.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=r.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var u in c.prototype=Object.create(i.prototype),i)c[u]=i[u];c.prototype.initParameters=function(){i.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},c.prototype.calcIdealEdgeLengths=function(){for(var t,e,n,i,o,s,c=this.getGraphManager().getAllEdges(),u=0;ur.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},c.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),n=0;n0&&void 0!==arguments[0])||arguments[0],s=arguments.length>1&&void 0!==arguments[1]&&arguments[1],c=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&o&&this.updateGrid(),a=new Set,t=0;t(c=e.getEstimatedSize()*this.gravityRangeFactor)||s>c)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*a):(o>(c=e.getEstimatedSize()*this.compoundGravityRangeFactor)||s>c)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant)},c.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=s.length||u>=s[0].length))for(var l=0;lt}}]),t}();t.exports=a},function(t,e,n){"use strict";var i=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;r(this,t),this.sequence1=e,this.sequence2=n,this.match_score=i,this.mismatch_penalty=a,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=n.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;n--){var i=this.listeners[n];i.event===t&&i.callback===e&&this.listeners.splice(n,1)}},r.emit=function(t,e){for(var n=0;n-1}(u))return u;var l=u.match(o);if(!l)return u;var h=l[0];return n.test(h)?e.Rq:u}},4881:function(t){t.exports=function(){function t(e,n,i){function r(o,s){if(!n[o]){if(!e[o]){if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};e[o][0].call(u.exports,(function(t){return r(e[o][1][t]||t)}),u,u.exports,t,e,n,i)}return n[o].exports}for(var a=void 0,o=0;o=0,wasm:e.indexOf("wasm")>=0};r.call(this,n),this.features={js:n.js,wasm:n.wasm&&this.has_wasm()},this.use(a),this.use(o)}i(s,r),s.prototype.resizeAndUnsharp=function(t,e){var n=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(n,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),n},e.exports=s},{"./mm_resize":4,"./mm_unsharp_mask":9,inherits:19,multimath:20}],2:[function(t,e,n){"use strict";function i(t){return t<0?0:t>255?255:t}function r(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}function a(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}e.exports={convolveHorizontally:r,convolveVertically:a}},{}],3:[function(t,e,n){"use strict";e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs="},{}],4:[function(t,e,n){"use strict";e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,n){"use strict";var i=t("./resize_filter_gen"),r=t("./convolve").convolveHorizontally,a=t("./convolve").convolveVertically;function o(t,e,n){for(var i=3,r=e*n*4|0;i>1]+=a(1-m),v=0;v0&&0===d[x];)x--;if(k=u+v,_=x-v+1,I[M++]=k,I[M++]=_,D)for(b=v;b<=x;b++)I[M++]=d[b];else I.set(d.subarray(v,x+1),M),M+=_}else I[M++]=0,I[M++]=0}return I}},{"./resize_filter_info":7}],7:[function(t,e,n){"use strict";e.exports=[{win:.5,filter:function(t){return t>=-.5&&t<.5?1:0}},{win:1,filter:function(t){if(t<=-1||t>=1)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},{win:2,filter:function(t){if(t<=-2||t>=2)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},{win:3,filter:function(t){if(t<=-3||t>=3)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}}]},{}],8:[function(t,e,n){"use strict";var i=t("./resize_filter_gen");function r(t,e,n){for(var i=3,r=e*n*4|0;i>8&255}}e.exports=function(t){var e=t.src,n=t.width,a=t.height,o=t.toWidth,c=t.toHeight,u=t.scaleX||t.toWidth/t.width,l=t.scaleY||t.toHeight/t.height,h=t.offsetX||0,f=t.offsetY||0,d=t.dest||new Uint8Array(o*c*4),g=void 0===t.quality?3:t.quality,p=t.alpha||!1,b=i(g,n,o,u,h),w=i(g,a,c,l,f),m=0,y=this.__align(m+Math.max(e.byteLength,d.byteLength)),v=this.__align(y+a*o*4),x=this.__align(v+b.byteLength),k=x+w.byteLength,_=this.__instance("resize",k),A=new Uint8Array(this.__memory.buffer),E=new Uint32Array(this.__memory.buffer),T=new Uint32Array(e.buffer);return E.set(T),s(b,A,v),s(w,A,x),(_.exports.convolveHV||_.exports._convolveHV)(v,x,y,n,a,o,c),new Uint32Array(d.buffer).set(new Uint32Array(this.__memory.buffer,0,c*o)),p||r(d,o,c),d}},{"./resize_filter_gen":6}],9:[function(t,e,n){"use strict";e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,n){"use strict";var i=t("glur/mono16");function r(t,e,n){for(var i,r,a,o,s=e*n,c=new Uint16Array(s),u=0;u=r&&i>=a?i:r>=a&&r>=i?r:a,c[u]=o<<8;return c}e.exports=function(t,e,n,a,o,s){var c,u,l,h,f;if(!(0===a||o<.5)){o>2&&(o=2);var d=r(t,e,n),g=new Uint16Array(d);i(g,e,n,o);for(var p=a/100*4096+.5|0,b=s<<8,w=e*n,m=0;m=b&&(l=((u=(u=(u=c+(p*h+2048>>12))>65280?65280:u)<0?0:u)<<12)/(c=0!==c?c:1)|0,t[f=4*m]=t[f]*l+2048>>12,t[f+1]=t[f+1]*l+2048>>12,t[f+2]=t[f+2]*l+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,n){"use strict";e.exports=function(t,e,n,i,r,a){if(!(0===i||r<.5)){r>2&&(r=2);var o=e*n,s=4*o,c=2*o,u=2*o,l=4*Math.max(e,n),h=32,f=0,d=s,g=d+c,p=g+u,b=p+u,w=b+l,m=this.__instance("unsharp_mask",s+c+2*u+l+h,{exp:Math.exp}),y=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(y);var v=m.exports.hsv_v16||m.exports._hsv_v16;v(f,d,e,n),(v=m.exports.blurMono16||m.exports._blurMono16)(d,g,p,b,w,e,n,r),(v=m.exports.unsharp||m.exports._unsharp)(f,f,d,g,e,n,i,a),y.set(new Uint32Array(this.__memory.buffer,0,o))}}},{}],12:[function(t,e,n){"use strict";e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAE0B2AAAGAEf39/fwBgBn9/f39/fwBgCH9/f39/f39/AGAIf39/f39/f30AYAJ9fwBgAXwBfAIZAgNlbnYDZXhwAAYDZW52Bm1lbW9yeQIAAAMHBgAFAgQBAwYGAX8AQQALB4oBCBFfX3dhc21fY2FsbF9jdG9ycwABFl9fYnVpbGRfZ2F1c3NpYW5fY29lZnMAAg5fX2dhdXNzMTZfbGluZQADCmJsdXJNb25vMTYABAdoc3ZfdjE2AAUHdW5zaGFycAAGDF9fZHNvX2hhbmRsZQMAGF9fd2FzbV9hcHBseV9kYXRhX3JlbG9jcwABCsUMBgMAAQvWAQEHfCABRNuGukOCGvs/IAC7oyICRAAAAAAAAADAohAAIgW2jDgCFCABIAKaEAAiAyADoCIGtjgCECABRAAAAAAAAPA/IAOhIgQgBKIgAyACIAKgokQAAAAAAADwP6AgBaGjIgS2OAIAIAEgBSAEmqIiB7Y4AgwgASADIAJEAAAAAAAA8D+gIASioiIItjgCCCABIAMgAkQAAAAAAADwv6AgBKKiIgK2OAIEIAEgByAIoCAFRAAAAAAAAPA/IAahoCIDo7Y4AhwgASAEIAKgIAOjtjgCGAuGBQMGfwl8An0gAyoCDCEVIAMqAgghFiADKgIUuyERIAMqAhC7IRACQCAEQQFrIghBAEgiCQRAIAIhByAAIQYMAQsgAiAALwEAuCIPIAMqAhi7oiIMIBGiIg0gDCAQoiAPIAMqAgS7IhOiIhQgAyoCALsiEiAPoqCgoCIOtjgCACACQQRqIQcgAEECaiEGIAhFDQAgCEEBIAhBAUgbIgpBf3MhCwJ/IAQgCmtBAXFFBEAgDiENIAgMAQsgAiANIA4gEKIgFCASIAAvAQK4Ig+ioKCgIg22OAIEIAJBCGohByAAQQRqIQYgDiEMIARBAmsLIQIgC0EAIARrRg0AA0AgByAMIBGiIA0gEKIgDyAToiASIAYvAQC4Ig6ioKCgIgy2OAIAIAcgDSARoiAMIBCiIA4gE6IgEiAGLwECuCIPoqCgoCINtjgCBCAHQQhqIQcgBkEEaiEGIAJBAkohACACQQJrIQIgAA0ACwsCQCAJDQAgASAFIAhsQQF0aiIAAn8gBkECay8BACICuCINIBW7IhKiIA0gFrsiE6KgIA0gAyoCHLuiIgwgEKKgIAwgEaKgIg8gB0EEayIHKgIAu6AiDkQAAAAAAADwQWMgDkQAAAAAAAAAAGZxBEAgDqsMAQtBAAs7AQAgCEUNACAGQQRrIQZBACAFa0EBdCEBA0ACfyANIBKiIAJB//8DcbgiDSAToqAgDyIOIBCioCAMIBGioCIPIAdBBGsiByoCALugIgxEAAAAAAAA8EFjIAxEAAAAAAAAAABmcQRAIAyrDAELQQALIQMgBi8BACECIAAgAWoiACADOwEAIAZBAmshBiAIQQFKIQMgDiEMIAhBAWshCCADDQALCwvRAgIBfwd8AkAgB0MAAAAAWw0AIARE24a6Q4Ia+z8gB0MAAAA/l7ujIglEAAAAAAAAAMCiEAAiDLaMOAIUIAQgCZoQACIKIAqgIg22OAIQIAREAAAAAAAA8D8gCqEiCyALoiAKIAkgCaCiRAAAAAAAAPA/oCAMoaMiC7Y4AgAgBCAMIAuaoiIOtjgCDCAEIAogCUQAAAAAAADwP6AgC6KiIg+2OAIIIAQgCiAJRAAAAAAAAPC/oCALoqIiCbY4AgQgBCAOIA+gIAxEAAAAAAAA8D8gDaGgIgqjtjgCHCAEIAsgCaAgCqO2OAIYIAYEQANAIAAgBSAIbEEBdGogAiAIQQF0aiADIAQgBSAGEAMgCEEBaiIIIAZHDQALCyAFRQ0AQQAhCANAIAIgBiAIbEEBdGogASAIQQF0aiADIAQgBiAFEAMgCEEBaiIIIAVHDQALCwtxAQN/IAIgA2wiBQRAA0AgASAAKAIAIgRBEHZB/wFxIgIgAiAEQQh2Qf8BcSIDIAMgBEH/AXEiBEkbIAIgA0sbIgYgBiAEIAIgBEsbIAMgBEsbQQh0OwEAIAFBAmohASAAQQRqIQAgBUEBayIFDQALCwuZAgIDfwF8IAQgBWwhBAJ/IAazQwAAgEWUQwAAyEKVu0QAAAAAAADgP6AiC5lEAAAAAAAA4EFjBEAgC6oMAQtBgICAgHgLIQUgBARAIAdBCHQhCUEAIQYDQCAJIAIgBkEBdCIHai8BACIBIAMgB2ovAQBrIgcgB0EfdSIIaiAIc00EQCAAIAZBAnQiCGoiCiAFIAdsQYAQakEMdSABaiIHQYD+AyAHQYD+A0gbIgdBACAHQQBKG0EMdCABQQEgARtuIgEgCi0AAGxBgBBqQQx2OgAAIAAgCEEBcmoiByABIActAABsQYAQakEMdjoAACAAIAhBAnJqIgcgASAHLQAAbEGAEGpBDHY6AAALIAZBAWoiBiAERw0ACwsL"},{}],13:[function(t,e,n){"use strict";var i=100;function r(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}r.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},r.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),i))},r.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(n){return!(e-n.lastUsed>t.idle&&(n.destroy(),1))})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),i):this.timeoutId=0},e.exports=r},{}],14:[function(t,e,n){"use strict";var i=2;e.exports=function(t,e,n,r,a,o){var s=n/t,c=r/e,u=(2*o+i+1)/a;if(u>.5)return[[n,r]];var l=Math.ceil(Math.log(Math.min(s,c))/Math.log(u));if(l<=1)return[[n,r]];for(var h=[],f=0;f=t.toWidth&&(s=t.toWidth-e),(n=o-t.destTileBorder)<0&&(n=0),n+(c=o+f+t.destTileBorder-n)>=t.toHeight&&(c=t.toHeight-n),d={toX:e,toY:n,toWidth:s,toHeight:c,toInnerX:i,toInnerY:o,toInnerWidth:h,toInnerHeight:f,offsetX:e/u-r(e/u),offsetY:n/l-r(n/l),scaleX:u,scaleY:l,x:r(e/u),y:r(n/l),width:a(s/u),height:a(c/l)},g.push(d);return g}},{}],16:[function(t,e,n){"use strict";function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,n=[];function i(){e=0;p--)c=s*b+o*w+u*m+l*y,l=u,u=c,o=s,s=t[h],e[f]=n[d]+u,h--,d--,f-=a}}function h(t,e,n,i){if(i){var r=new Uint16Array(t.length),a=new Float32Array(Math.max(e,n)),o=u(i);l(t,r,a,o,e,n,i),l(r,t,a,o,n,e,i)}}e.exports=h},{}],19:[function(t,e,n){"function"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},{}],20:[function(t,e,n){"use strict";var i=t("object-assign"),r=t("./lib/base64decode"),a=t("./lib/wa_detect"),o={js:!0,wasm:!0};function s(t){if(!(this instanceof s))return new s(t);var e=i({},o,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}s.prototype.has_wasm=a,s.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},s.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var n=t.__modules[e];return t.options.wasm&&t.has_wasm()&&n.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(n.wasm_src)).then((function(n){t.__wasm[e]=n})):null}))).then((function(){return t})),this.__init_promise},s.prototype.__base64decode=r,s.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e>2),a=0,o=0,s=0;s>16&255,r[o++]=a>>8&255,r[o++]=255&a),a=a<<6|i.indexOf(e.charAt(s));var c=n%4*6;return 0===c?(r[o++]=a>>16&255,r[o++]=a>>8&255,r[o++]=255&a):18===c?(r[o++]=a>>10&255,r[o++]=a>>2&255):12===c&&(r[o++]=a>>4&255),r}},{}],22:[function(t,e,n){"use strict";var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],23:[function(t,e,n){"use strict";var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function o(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function s(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}e.exports=s()?Object.assign:function(t,e){for(var n,s,c=o(t),u=1;ut.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0)}catch(t){}var y=1;"undefined"!=typeof navigator&&(y=Math.min(navigator.hardwareConcurrency||1,4));var v={tile:1024,concurrency:y,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var n=document.createElement("canvas");return n.width=t,n.height=e,n}},x={quality:3,alpha:!1,unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},k=!1,_=!1,A=!1,E=!1,T=!1;function C(){return{value:l(g),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function S(t){if(!(this instanceof S))return new S(t);this.options=u({},v,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=w[e]||d.limiter(this.options.concurrency),w[e]||(w[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}S.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),k=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?_=!0:this.debug("ImageBitmap does not support .close(), disabled"));var n=this.options.features.slice();if(n.indexOf("all")>=0&&(n=["cib","wasm","js","ww"]),this.__requested_features=n,this.__mathlib=new h(n),n.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));w[i]?this.__workersPool=w[i]:(this.__workersPool=new f(C,this.options.idle),w[i]=this.__workersPool)}catch(t){}var r,a,o=this.__mathlib.init().then((function(t){u(e.features,t.features)}));r=_?d.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&n.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):n.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),A=d.can_use_canvas(this.options.createCanvas),a=(a=_&&k&&-1!==n.indexOf("ww")?d.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){E=t}));var s=d.cib_can_use_region().then((function(t){T=t}));return this.__initPromise=Promise.all([o,r,a,s]).then((function(){return e})),this.__initPromise},S.prototype.__invokeResize=function(t,e){var n=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return n.features.ww?new Promise((function(i,r){var a=n.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return r(t)})),a.value.onmessage=function(t){a.release(),t.data.err?r(t.data.err):i(t.data)};var o=[];t.src&&o.push(t.src.buffer),t.srcBitmap&&o.push(t.srcBitmap),a.value.postMessage({opts:t,features:n.__requested_features,preload:{wasm_nodule:n.__mathlib.__}},o)})):{data:n.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},S.prototype.__extractTileData=function(t,e,n,i,r){if(this.features.ww&&E&&(d.isCanvas(e)||T))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return r.srcBitmap=t,r}));if(d.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d",{alpha:Boolean(n.alpha)})),this.debug("Get tile pixel data"),r.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,r;this.debug("Draw tile imageBitmap/image to temporary canvas");var a=this.options.createCanvas(t.width,t.height),o=a.getContext("2d",{alpha:Boolean(n.alpha)});return o.globalCompositeOperation="copy",o.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),r.src=o.getImageData(0,0,t.width,t.height).data,a.width=a.height=0,r},S.prototype.__landTileData=function(t,e,n){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return n.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(k)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=n.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var r=i.data.length-1;r>=0;r--)i.data[r]=e.data[r];return this.debug("Draw tile"),m?n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},S.prototype.__tileAndResize=function(t,e,n){var i=this,r={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null},a=function(e){return i.__limit((function(){if(n.canceled)return n.cancelToken;var a={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,quality:n.quality,alpha:n.alpha,unsharpAmount:n.unsharpAmount,unsharpRadius:n.unsharpRadius,unsharpThreshold:n.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(a).then((function(a){return i.__extractTileData(e,t,n,r,a)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,n)})).then((function(t){return n.canceled?n.cancelToken:(r.srcImageData=null,i.__landTileData(e,t,r))}))}))};return Promise.resolve().then((function(){if(r.toCtx=e.getContext("2d",{alpha:Boolean(n.alpha)}),d.isCanvas(t))return null;if(d.isImageBitmap(t))return r.srcImageBitmap=t,r.isImageBitmapReused=!0,null;if(d.isImage(t))return _?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){r.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(n.canceled)return n.cancelToken;i.debug("Calculate tiles");var t=b({width:n.width,height:n.height,srcTileSize:i.options.tile,toWidth:n.toWidth,toHeight:n.toHeight,destTileBorder:n.__destTileBorder}).map((function(t){return a(t)}));function o(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(t).then((function(){return i.debug("Finished!"),o(r),e}),(function(t){throw o(r),t}))}))},S.prototype.__processStages=function(t,e,n,r){var a=this;if(r.canceled)return r.cancelToken;var o,s=i(t.shift(),2),c=s[0],l=s[1],h=0===t.length;return r=u({},r,{toWidth:c,toHeight:l,quality:h?r.quality:Math.min(1,r.quality)}),h||(o=this.options.createCanvas(c,l)),this.__tileAndResize(e,h?n:o,r).then((function(){return h?n:(r.width=c,r.height=l,a.__processStages(t,o,n,r))})).then((function(t){return o&&(o.width=o.height=0),t}))},S.prototype.__resizeViaCreateImageBitmap=function(t,e,n){var i=this,r=e.getContext("2d",{alpha:Boolean(n.alpha)});return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:n.toWidth,resizeHeight:n.toHeight,resizeQuality:d.cib_quality_name(n.quality)}).then((function(t){if(n.canceled)return n.cancelToken;if(!n.unsharpAmount)return r.drawImage(t,0,0),t.close(),r=null,i.debug("Finished!"),e;i.debug("Unsharp result");var a=i.options.createCanvas(n.toWidth,n.toHeight),o=a.getContext("2d",{alpha:Boolean(n.alpha)});o.drawImage(t,0,0),t.close();var s=o.getImageData(0,0,n.toWidth,n.toHeight);return i.__mathlib.unsharp_mask(s.data,n.toWidth,n.toHeight,n.unsharpAmount,n.unsharpRadius,n.unsharpThreshold),r.putImageData(s,0,0),a.width=a.height=0,s=o=a=r=null,i.debug("Finished!"),e}))},S.prototype.resize=function(t,e,n){var i=this;this.debug("Start resize...");var r=u({},x);if(isNaN(n)?n&&(r=u(r,n)):r=u(r,{quality:n}),r.toWidth=e.width,r.toHeight=e.height,r.width=t.naturalWidth||t.width,r.height=t.naturalHeight||t.height,0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));r.unsharpRadius>2&&(r.unsharpRadius=2),r.canceled=!1,r.cancelToken&&(r.cancelToken=r.cancelToken.then((function(t){throw r.canceled=!0,t}),(function(t){throw r.canceled=!0,t})));var a=3;return r.__destTileBorder=Math.ceil(Math.max(a,2.5*r.unsharpRadius|0)),this.init().then((function(){if(r.canceled)return r.cancelToken;if(i.features.cib)return i.__resizeViaCreateImageBitmap(t,e,r);if(!A){var n=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw n.code="ERR_GET_IMAGE_DATA",n}var a=p(r.width,r.height,r.toWidth,r.toHeight,i.options.tile,r.__destTileBorder);return i.__processStages(a,t,e,r)}))},S.prototype.resizeBuffer=function(t){var e=this,n=u({},x,t);return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(n)}))},S.prototype.toBlob=function(t,e,n){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,n);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:n}));else{for(var r=atob(t.toDataURL(e,n).split(",")[1]),a=r.length,o=new Uint8Array(a),s=0;sthis.converter(t,{...e,fontSize:e.fontSize||20}),this.converter=t}}var a,o,s;!function(t){t.ROUND="round",t.STADIUM="stadium",t.DOUBLECIRCLE="doublecircle",t.CIRCLE="circle",t.DIAMOND="diamond"}(a||(a={})),function(t){t.COLOR="color"}(o||(o={})),function(t){t.FILL="fill",t.STROKE="stroke",t.STROKE_WIDTH="stroke-width",t.STROKE_DASHARRAY="stroke-dasharray"}(s||(s={}));var c=n(5030);const u={arrow_circle:{endArrowhead:"dot"},arrow_cross:{endArrowhead:"bar"},double_arrow_circle:{endArrowhead:"dot",startArrowhead:"dot"},double_arrow_cross:{endArrowhead:"bar",startArrowhead:"bar"},double_arrow_point:{endArrowhead:"arrow",startArrowhead:"arrow"}},l=t=>{let e=t.text;return"markdown"===t.labelType&&(e=(0,c.K)(t.text)),h(e)},h=t=>t.replace(/\s?(fa|fab):[a-zA-Z0-9-]+/g,""),f=new r({converter:(t,e)=>{const n=[],i=e.fontSize,{getGroupIds:r,getParentId:c}=(t=>{const e={};t.subGraphs.map((n=>{n.nodeIds.forEach((i=>{e[n.id]={id:n.id,parent:null,isLeaf:!1},e[i]={id:i,parent:n.id,isLeaf:void 0!==t.vertices[i]}}))}));const n={};return[...Object.keys(t.vertices),...t.subGraphs.map((t=>t.id))].forEach((t=>{if(!e[t])return;let i=e[t];const r=[];for(i.isLeaf||r.push(`subgraph_group_${i.id}`);i.parent;)r.push(`subgraph_group_${i.parent}`),i=e[i.parent];n[t]=r})),{getGroupIds:t=>n[t]||[],getParentId:t=>e[t]?e[t].parent:null}})(t);return t.subGraphs.reverse().forEach((t=>{const e=r(t.id),a={id:t.id,type:"rectangle",groupIds:e,x:t.x,y:t.y,width:t.width,height:t.height,label:{groupIds:e,text:l(t),fontSize:i,verticalAlign:"top"}};n.push(a)})),Object.values(t.vertices).forEach((t=>{if(!t)return;const e=r(t.id),c=(t=>{const e={};return Object.keys(t).forEach((n=>{switch(n){case s.FILL:e.backgroundColor=t[n],e.fillStyle="solid";break;case s.STROKE:e.strokeColor=t[n];break;case s.STROKE_WIDTH:e.strokeWidth=Number(t[n]?.split("px")[0]);break;case s.STROKE_DASHARRAY:e.strokeStyle="dashed"}})),e})(t.containerStyle),u=(t=>{const e={};return Object.keys(t).forEach((n=>{n===o.COLOR&&(e.strokeColor=t[n])})),e})(t.labelStyle);let h={id:t.id,type:"rectangle",groupIds:e,x:t.x,y:t.y,width:t.width,height:t.height,strokeWidth:2,label:{groupIds:e,text:l(t),fontSize:i,...u},link:t.link||null,...c};switch(t.type){case a.STADIUM:case a.ROUND:h={...h,roundness:{type:3}};break;case a.DOUBLECIRCLE:{const r=5;e.push(`doublecircle_${t.id}}`);const a={type:"ellipse",groupIds:e,x:t.x+r,y:t.y+r,width:t.width-2*r,height:t.height-2*r,strokeWidth:2,roundness:{type:3},label:{groupIds:e,text:l(t),fontSize:i}};h={...h,groupIds:e,type:"ellipse"},n.push(a);break}case a.CIRCLE:h.type="ellipse";break;case a.DIAMOND:h.type="diamond"}n.push(h)})),t.edges.forEach((t=>{let e=[];const a=c(t.start),o=c(t.end);a&&a===o&&(e=r(a));const{startX:s,startY:h,reflectionPoints:f}=t,d=f.map((t=>[t.x-f[0].x,t.y-f[0].y])),g=(p=t.type,u[p]);var p;const b={id:`${t.start}_${t.end}`,type:"arrow",groupIds:e,x:s,y:h,strokeWidth:"thick"===t.stroke?4:2,strokeStyle:"dotted"===t.stroke?"dashed":void 0,points:d,...t.text?{label:{text:l(t),fontSize:i,groupIds:e}}:{},roundness:{type:2},...g},w=n.find((e=>e.id===t.start)),m=n.find((e=>e.id===t.end));w&&m&&(b.start={id:w.id||""},b.end={id:m.id||""},n.push(b))})),{elements:n}}});let d=(t=21)=>crypto.getRandomValues(new Uint8Array(t)).reduce(((t,e)=>t+=(e&=63)<36?e.toString(36):e<62?(e-26).toString(36).toUpperCase():e>62?"-":"_"),"");const g=new r({converter:t=>{const e=d(),{width:n,height:i}=t,r={type:"image",x:0,y:0,width:n,height:i,status:"saved",fileId:e};return{files:{[e]:{id:e,mimeType:t.mimeType,dataURL:t.dataURL}},elements:[r]}}}),p={SOLID:"solid",DOTTED:"dotted",SOLID_CROSS:"solid",DOTTED_CROSS:"dotted",SOLID_OPEN:"solid",DOTTED_OPEN:"dotted",SOLID_POINT:"solid",DOTTED_POINT:"dotted"},b=t=>{const e={type:"line",x:t.startX,y:t.startY,points:[[0,0],[t.endX-t.startX,t.endY-t.startY]],width:t.endX-t.startX,height:t.endY-t.startY,strokeStyle:t.strokeStyle||"solid",strokeColor:t.strokeColor||"#000",strokeWidth:t.strokeWidth||1};return t.groupId&&Object.assign(e,{groupIds:[t.groupId]}),t.id&&Object.assign(e,{id:t.id}),e},w=t=>{const e={type:"text",x:t.x,y:t.y,width:t.width,height:t.height,text:t.text||"",fontSize:t.fontSize,verticalAlign:"middle"};return t.groupId&&Object.assign(e,{groupIds:[t.groupId]}),t.id&&Object.assign(e,{id:t.id}),e},m=t=>{let e={};"rectangle"===t.type&&"activation"===t.subtype&&(e={backgroundColor:"#e9ecef",fillStyle:"solid"});const n={id:t.id,type:t.type,x:t.x,y:t.y,width:t.width,height:t.height,label:{text:t?.label?.text||"",fontSize:t?.label?.fontSize,verticalAlign:"middle",strokeColor:t.label?.color||"#000"},strokeStyle:t?.strokeStyle,strokeWidth:t?.strokeWidth,strokeColor:t?.strokeColor,backgroundColor:t?.bgColor,fillStyle:"solid",...e};return t.groupId&&Object.assign(n,{groupIds:[t.groupId]}),n},y=new r({converter:t=>{const e=[],n=[];if(Object.values(t.nodes).forEach((t=>{t&&t.length&&t.forEach((t=>{let i;switch(t.type){case"line":i=b(t);break;case"rectangle":case"ellipse":i=m(t);break;case"text":i=w(t);break;default:throw`unknown type ${t.type}`}"rectangle"===t.type&&"activation"===t?.subtype?n.push(i):e.push(i)}))})),Object.values(t.lines).forEach((t=>{t&&e.push(b(t))})),Object.values(t.arrows).forEach((t=>{t&&(e.push((t=>{const e=p[t.strokeStyle],n={type:"arrow",x:t.startX,y:t.startY,points:t.points||[[0,0],[t.endX-t.startX,t.endY-t.startY]],width:t.endX-t.startX,height:t.endY-t.startY,strokeStyle:e,endArrowhead:"SOLID_OPEN"===t.strokeStyle||"DOTTED_OPEN"===t.strokeStyle?null:"arrow",label:{text:t?.label?.text||"",fontSize:16},roundness:{type:2}};return t.groupId&&Object.assign(n,{groupIds:[t.groupId]}),n})(t)),t.sequenceNumber&&e.push(m(t.sequenceNumber)))})),e.push(...n),t.loops){const{lines:n,texts:i,nodes:r}=t.loops;n.forEach((t=>{e.push(b(t))})),i.forEach((t=>{e.push(w(t))})),r.forEach((t=>{e.push(m(t))}))}return t.groups&&t.groups.forEach((t=>{const{actorKeys:n,name:i}=t;let r=1/0,a=1/0,o=0,s=0;if(!n.length)return;e.filter((t=>{if(t.id){const e=t.id.indexOf("-"),i=t.id.substring(0,e);return n.includes(i)}})).forEach((t=>{if(void 0===t.x||void 0===t.y||void 0===t.width||void 0===t.height)throw new Error(`Actor attributes missing ${t}`);r=Math.min(r,t.x),a=Math.min(a,t.y),o=Math.max(o,t.x+t.width),s=Math.max(s,t.y+t.height)}));const c=r-10,u=a-10,l=o-r+20,h=s-a+20,f=d(),g=m({type:"rectangle",x:c,y:u,width:l,height:h,bgColor:t.fill,id:f});e.unshift(g);const p=d(),b=[f];e.forEach((t=>{if("frame"!==t.type){if(void 0===t.x||void 0===t.y||void 0===t.width||void 0===t.height)throw new Error(`Element attributes missing ${t}`);if(t.x>=r&&t.x+t.width<=o&&t.y>=a&&t.y+t.height<=s){const e=t.id||d();t.id||Object.assign(t,{id:e}),b.push(e)}}}));const w={type:"frame",id:p,name:i,children:b};e.push(w)})),{elements:e}}});var v=n(8540);const x=t=>{const e=(t=_(t)).replace(/#(\d+);/g,"&#$1;").replace(/#([a-z]+);/g,"&$1;"),n=document.createElement("textarea");return n.innerHTML=e,n.value},k=t=>{const e=t.getAttribute("transform")?.match(/translate\(([\d.-]+),\s*([\d.-]+)\)/);let n=0,i=0;return e&&(n=Number(e[1]),i=Number(e[2])),{transformX:n,transformY:i}},_=function(t){return t.replace(/fl°°/g,"#").replace(/fl°/g,"&").replace(/¶ß/g,";")},A=(t,e)=>{if(!t)throw new Error("Element not found");let n=t.parentElement?.parentElement;const i=t.childNodes[0];let r={x:0,y:0};if(i){const{transformX:t,transformY:e}=k(i),n=i.getBBox();r={x:Number(i.getAttribute("x"))||t+n.x||0,y:Number(i.getAttribute("y"))||e+n.y||0}}const{transformX:a,transformY:o}=k(t),s={x:a+r.x,y:o+r.y};for(;n&&n.id!==e.id;){if("root"===n.classList.value&&n.hasAttribute("transform")){const{transformX:t,transformY:e}=k(n);s.x+=t,s.y+=e}n=n.parentElement}return s},E=(t,e={x:0,y:0})=>{if("path"!==t.tagName.toLowerCase())throw new Error(`Invalid input: Expected an HTMLElement of tag "path", got ${t.tagName}`);const n=t.getAttribute("d");if(!n)throw new Error('Path element does not contain a "d" attribute');const i=n.split(/(?=[LM])/),r=i[0].substring(1).split(",").map((t=>parseFloat(t))),a=i[i.length-1].substring(1).split(",").map((t=>parseFloat(t))),o=i.map((t=>{const e=t.substring(1).split(",").map((t=>parseFloat(t)));return{x:e[0],y:e[1]}})).filter(((t,e,n)=>{if(e===n.length-1)return!0;const i=n[e-1];return 0===e||t.x!==i.x&&t.y!==i.y})).map((t=>({x:t.x+e.x,y:t.y+e.y})));return{startX:r[0]+e.x,startY:r[1]+e.y,endX:a[0]+e.x,endY:a[1]+e.y,reflectionPoints:o}},T=(t,e)=>{t.parse();const n=t.parser.yy,i=n.getVertices();Object.keys(i).forEach((t=>{i[t]=((t,e)=>{const n=e.querySelector(`[id*="flowchart-${t.id}-"]`);if(!n)return;let i;"a"===n.parentElement?.tagName.toLowerCase()&&(i=n.parentElement.getAttribute("xlink:href"));const r=A(i?n.parentElement:n,e),a=n.getBBox(),o={width:a.width,height:a.height},s=n.querySelector(".label-container")?.getAttribute("style"),c=n.querySelector(".label")?.getAttribute("style"),u={};s?.split(";").forEach((t=>{if(!t)return;const e=t.split(":")[0].trim(),n=t.split(":")[1].trim();u[e]=n}));const l={};return c?.split(";").forEach((t=>{if(!t)return;const e=t.split(":")[0].trim(),n=t.split(":")[1].trim();l[e]=n})),{id:t.id,labelType:t.labelType,text:x(t.text),type:t.type,link:i||void 0,...r,...o,containerStyle:u,labelStyle:l}})(i[t],e)}));const r=n.getEdges().map((t=>((t,e)=>{const n=e.querySelector(`[id*="L-${t.start}-${t.end}"]`);if(!n)throw new Error("Edge element not found");const i=A(n,e),r=E(n,i);return t.length=void 0,{...t,...r,text:x(t.text)}})(t,e))),a=n.getSubGraphs().map((t=>((t,e)=>{const n=t.nodes.map((t=>t.startsWith("flowchart-")?t.split("-")[1]:t)),i=e.querySelector(`[id='${t.id}']`);if(!i)throw new Error("SubGraph element not found");const r=A(i,e),a=i.getBBox(),o={width:a.width,height:a.height};return t.classes=void 0,t.dir=void 0,{...t,nodeIds:n,...r,...o,text:x(t.title)}})(t,e)));return{type:"flowchart",subGraphs:a,vertices:i,edges:r}},C={0:"SOLID",1:"DOTTED",3:"SOLID_CROSS",4:"DOTTED_CROSS",5:"SOLID_OPEN",6:"DOTTED_OPEN",24:"SOLID_POINT",25:"DOTTED_POINT"},S=2,I=27,M=(t,e,n={})=>{const i={};i.type=e;const{text:r,subtype:a,id:o,groupId:s}=n;i.id=o,s&&(i.groupId=s),r&&(i.label={text:x(r),fontSize:16});const c=t.getBBox();switch(i.x=c.x,i.y=c.y,i.width=c.width,i.height=c.height,i.subtype=a,a){case"highlight":const e=t.getAttribute("fill");e&&(i.bgColor=e);break;case"note":i.strokeStyle="dashed"}return i},D=(t,e,n)=>{const i={},r=Number(t.getAttribute("x")),a=Number(t.getAttribute("y"));i.type="text",i.text=x(e),n?.id&&(i.id=n.id),n?.groupId&&(i.groupId=n.groupId);const o=t.getBBox();i.width=o.width,i.height=o.height,i.x=r-o.width/2,i.y=a;const s=parseInt(getComputedStyle(t).fontSize);return i.fontSize=s,i},O=(t,e,n,i,r,a)=>{const o={};return o.startX=e,o.startY=n,o.endX=i,a?.groupId&&(o.groupId=a.groupId),a?.id&&(o.id=a.id),o.endY=r,o.strokeColor=t.getAttribute("stroke"),o.strokeWidth=Number(t.getAttribute("stroke-width")),o.type="line",o},L=(t,e,n)=>{if(!t)throw"root node not found";const r=d(),a=Array.from(t.children),o=[];return a.forEach(((t,a)=>{const s=`${n?.id}-${a}`;let c;switch(t.tagName){case"line":const n=Number(t.getAttribute("x1")),a=Number(t.getAttribute("y1")),o=Number(t.getAttribute("x2")),u=Number(t.getAttribute("y2"));c=O(t,n,a,o,u,{groupId:r,id:s});break;case"text":c=D(t,e,{groupId:r,id:s});break;case"circle":c=M(t,"ellipse",{text:t.textContent||void 0,groupId:r,id:s});default:c=M(t,i[t.tagName],{text:t.textContent||void 0,groupId:r,id:s})}o.push(c)})),o},N=(t,e)=>{const n=[],i=Array.from(e.querySelectorAll('[class*="messageLine"]')),r=Object.keys(C),a=t.filter((t=>r.includes(t.type.toString())));return i.forEach(((t,e)=>{const i=((t,e)=>{const n={};n.label={text:x(e.message),fontSize:16};const i=t.tagName;if("line"===i)n.startX=Number(t.getAttribute("x1")),n.startY=Number(t.getAttribute("y1")),n.endX=Number(t.getAttribute("x2")),n.endY=Number(t.getAttribute("y2"));else if("path"===i){const e=t.getAttribute("d");if(!e)throw new Error('Path element does not contain a "d" attribute');const i=e.split(/(?=[LC])/),r=i[0].substring(1).split(",").map((t=>parseFloat(t))),a=[];i.forEach((t=>{const e=t.substring(1).trim().split(" ").map((t=>{const[e,n]=t.split(",");return[parseFloat(e)-r[0],parseFloat(n)-r[1]]}));a.push(...e)}));const o=a[a.length-1];n.startX=r[0],n.startY=r[1],n.endX=o[0],n.endY=o[1],n.points=a}if(e){const t=10;n.startY=n.startY-t,n.endY=n.endY-t}if(t.nextElementSibling?.classList.contains("sequenceNumber")){const e=t.nextElementSibling?.textContent;if(!e)throw new Error("sequence number not present");const i=30,r=i/2,a=10,o={type:"rectangle",x:n.startX-a,y:n.startY-r,label:{text:e,fontSize:14},bgColor:"#e9ecef",height:i,subtype:"sequence"};n.sequenceNumber=o}return n.strokeColor=t.getAttribute("stroke"),n.strokeWidth=Number(t.getAttribute("stroke-width")),n.type="arrow",n.strokeStyle=C[e.type],n})(t,a[e]);n.push(i)})),n},P=(t,e)=>{t.parse();const n=t.parser.yy,i=[],r=n.getBoxes(),a=(t=>{const e=Array.from(t.querySelectorAll(".rect")).filter((t=>"g"!==t.parentElement?.tagName)),n=[];return e.forEach((t=>{const e=M(t,"rectangle",{text:"",subtype:"highlight"});n.push(e)})),n})(e),o=n.getActors(),{nodes:s,lines:c}=((t,e)=>{const n=Array.from(e.querySelectorAll(".actor")).filter((t=>"text"===t.tagName)).map((t=>"text"===t.tagName&&t.parentElement)),i=[],r=[],a=Object.keys(t).length;return Object.values(t).forEach(((t,e)=>{const o=n[e],s=n[a+e];if(!o)throw"root not found";const c=t.description;if("participant"===t.type){const e=M(o.firstChild,"rectangle",{id:`${t.name}-top`,text:c,subtype:"actor"});if(!e)throw"Top Node element not found!";i.push([e]);const n=M(s.firstChild,"rectangle",{id:`${t.name}-bottom`,text:c,subtype:"actor"});i.push([n]);const a=o.previousElementSibling;if("line"!==a?.tagName)throw"Line not found";const u=Number(a.getAttribute("x1"));if(!e.height)throw"Top node element height is null";const l=e.y+e.height,h=n.y,f=Number(a.getAttribute("x2")),d=O(a,u,l,f,h);r.push(d)}else if("actor"===t.type){const e=L(o,c,{id:`${t.name}-top`});i.push(e);const n=L(s,c,{id:`${t.name}-bottom`});i.push(n);const a=o.previousElementSibling;if("line"!==a?.tagName)throw"Line not found";const u=Number(a.getAttribute("x1")),l=Number(a.getAttribute("y1")),h=Number(a.getAttribute("x2")),f=n.find((t=>"ellipse"===t.type));if(f){const t=f.y,e=O(a,u,l,h,t);r.push(e)}}})),{nodes:i,lines:r}})(o,e),u=n.getMessages(),l=N(u,e),h=((t,e)=>{const n=Array.from(e.querySelectorAll(".note")).map((t=>t.parentElement)),i=t.filter((t=>t.type===S)),r=[];return n.forEach(((t,e)=>{if(!t)return;const n=t.firstChild,a=i[e].message,o=M(n,"rectangle",{text:a,subtype:"note"});r.push(o)})),r})(u,e),f=(t=>{const e=Array.from(t.querySelectorAll("[class*=activation]")),n=[];return e.forEach((t=>{const e=M(t,"rectangle",{text:"",subtype:"activation"});n.push(e)})),n})(e),d=((t,e)=>{const n=Array.from(e.querySelectorAll(".loopLine")),i=[],r=[],a=[];n.forEach((t=>{const e=Number(t.getAttribute("x1")),n=Number(t.getAttribute("y1")),r=Number(t.getAttribute("x2")),a=Number(t.getAttribute("y2")),o=O(t,e,n,r,a);o.strokeStyle="dotted",o.strokeColor="#adb5bd",o.strokeWidth=2,i.push(o)}));const o=Array.from(e.querySelectorAll(".loopText")),s=t.filter((t=>t.type===I)).map((t=>t.message));o.forEach((t=>{const e=t.textContent||"",n=D(t,e),i=e.match(/\[(.*?)\]/)?.[1]||"";s.includes(i)&&(n.x+=16),r.push(n)}));const c=Array.from(e?.querySelectorAll(".labelBox")),u=Array.from(e?.querySelectorAll(".labelText"));return c.forEach(((t,e)=>{const n=u[e]?.textContent||"",i=M(t,"rectangle",{text:n});i.strokeColor="#adb5bd",i.bgColor="#e9ecef",i.width=void 0,a.push(i)})),{lines:i,texts:r,nodes:a}})(u,e);return i.push(a),i.push(...s),i.push(h),i.push(f),{type:"sequence",lines:c,arrows:l,nodes:i,loops:d,groups:r}},B=async t=>{v.K.initialize({startOnLoad:!1,flowchart:{curve:"linear"},themeVariables:{fontSize:"25px"}});const e=await v.K.mermaidAPI.getDiagramFromText((t=>{let e=t;return e=e.replace(/style.*:\S*#.*;/g,(t=>t.substring(0,t.length-1))),e=e.replace(/classDef.*:\S*#.*;/g,(t=>t.substring(0,t.length-1))),e=e.replace(/#\w+;/g,(t=>{const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?`fl°°${e}¶ß`:`fl°${e}¶ß`})),e})(t)),{svg:n}=await v.K.render("mermaid-to-excalidraw",t),i=document.createElement("div");let r;switch(i.setAttribute("style","opacity: 0; position: relative; z-index: -1;"),i.innerHTML=n,i.id="mermaid-diagram",document.body.appendChild(i),e.type){case"flowchart-v2":r=T(e,i);break;case"sequence":r=P(e,i);break;default:r=(t=>{const e=t.querySelector("svg");if(!e)throw new Error("SVG element not found");const n=e.getBoundingClientRect(),i=n.width,r=n.height;e.setAttribute("width",`${i}`),e.setAttribute("height",`${r}`);const a=unescape(encodeURIComponent(e.outerHTML));return{type:"graphImage",mimeType:"image/svg+xml",dataURL:`data:image/svg+xml;base64,${btoa(a)}`,width:i,height:r}})(i)}return i.remove(),r},F=async(t,e={})=>{const n=((t,e={})=>{switch(t.type){case"graphImage":return g.convert(t,e);case"flowchart":return f.convert(t,e);case"sequence":return y.convert(t,e);default:throw new Error(`graphToExcalidraw: unknown graph type "${t.type}, only flowcharts are supported!"`)}})(await B(t),e);return n}},1504:function(t,e,n){"use strict";function i(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n=r)&&(n=r)}return n}function r(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}function a(t){return t}n.d(e,{Nb1:function(){return os},LLu:function(){return g},F5q:function(){return d},$0Z:function(){return ys},Dts:function(){return xs},WQY:function(){return _s},qpX:function(){return Es},u93:function(){return Ts},tFB:function(){return Ss},YY7:function(){return Ds},OvA:function(){return Ls},dCK:function(){return Ps},zgE:function(){return Rs},fGX:function(){return $s},$m7:function(){return qs},c_6:function(){return us},fxm:function(){return Us},FdL:function(){return Qs},ak_:function(){return Js},SxZ:function(){return nc},eA_:function(){return rc},jsv:function(){return oc},iJ:function(){return ac},JHv:function(){return fi},jvg:function(){return fs},Fp7:function(){return i},VV$:function(){return r},ve8:function(){return ps},BYU:function(){return ar},PKp:function(){return fr},Xf:function(){return Io},Ys:function(){return Mo},td_:function(){return Do},YPS:function(){return Zn},rr1:function(){return Ir},i$Z:function(){return sa},WQD:function(){return Cr},Z_i:function(){return Er},F0B:function(){return Wr},NGh:function(){return Lr}});var o=1e-6;function s(t){return"translate("+t+",0)"}function c(t){return"translate(0,"+t+")"}function u(t){return e=>+t(e)}function l(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function h(){return!this.__axis}function f(t,e){var n=[],i=null,r=null,f=6,d=6,g=3,p="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,b=1===t||4===t?-1:1,w=4===t||2===t?"x":"y",m=1===t||3===t?s:c;function y(s){var c=null==i?e.ticks?e.ticks.apply(e,n):e.domain():i,y=null==r?e.tickFormat?e.tickFormat.apply(e,n):a:r,v=Math.max(f,0)+g,x=e.range(),k=+x[0]+p,_=+x[x.length-1]+p,A=(e.bandwidth?l:u)(e.copy(),p),E=s.selection?s.selection():s,T=E.selectAll(".domain").data([null]),C=E.selectAll(".tick").data(c,e).order(),S=C.exit(),I=C.enter().append("g").attr("class","tick"),M=C.select("line"),D=C.select("text");T=T.merge(T.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),C=C.merge(I),M=M.merge(I.append("line").attr("stroke","currentColor").attr(w+"2",b*f)),D=D.merge(I.append("text").attr("fill","currentColor").attr(w,b*v).attr("dy",1===t?"0em":3===t?"0.71em":"0.32em")),s!==E&&(T=T.transition(s),C=C.transition(s),M=M.transition(s),D=D.transition(s),S=S.transition(s).attr("opacity",o).attr("transform",(function(t){return isFinite(t=A(t))?m(t+p):this.getAttribute("transform")})),I.attr("opacity",o).attr("transform",(function(t){var e=this.parentNode.__axis;return m((e&&isFinite(e=e(t))?e:A(t))+p)}))),S.remove(),T.attr("d",4===t||2===t?d?"M"+b*d+","+k+"H"+p+"V"+_+"H"+b*d:"M"+p+","+k+"V"+_:d?"M"+k+","+b*d+"V"+p+"H"+_+"V"+b*d:"M"+k+","+p+"H"+_),C.attr("opacity",1).attr("transform",(function(t){return m(A(t)+p)})),M.attr(w+"2",b*f),D.attr(w,b*v).text(y),E.filter(h).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===t?"start":4===t?"end":"middle"),E.each((function(){this.__axis=A}))}return y.scale=function(t){return arguments.length?(e=t,y):e},y.ticks=function(){return n=Array.from(arguments),y},y.tickArguments=function(t){return arguments.length?(n=null==t?[]:Array.from(t),y):n.slice()},y.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),y):i&&i.slice()},y.tickFormat=function(t){return arguments.length?(r=t,y):r},y.tickSize=function(t){return arguments.length?(f=d=+t,y):f},y.tickSizeInner=function(t){return arguments.length?(f=+t,y):f},y.tickSizeOuter=function(t){return arguments.length?(d=+t,y):d},y.tickPadding=function(t){return arguments.length?(g=+t,y):g},y.offset=function(t){return arguments.length?(p=+t,y):p},y}function d(t){return f(1,t)}function g(t){return f(3,t)}function p(){}function b(t){return null==t?p:function(){return this.querySelector(t)}}function w(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function m(){return[]}function y(t){return null==t?m:function(){return this.querySelectorAll(t)}}function v(t){return function(){return this.matches(t)}}function x(t){return function(e){return e.matches(t)}}var k=Array.prototype.find;function _(){return this.firstElementChild}var A=Array.prototype.filter;function E(){return Array.from(this.children)}function T(t){return new Array(t.length)}function C(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function S(t){return function(){return t}}function I(t,e,n,i,r,a){for(var o,s=0,c=e.length,u=a.length;se?1:t>=e?0:NaN}C.prototype={constructor:C,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var N="http://www.w3.org/1999/xhtml",P={svg:"http://www.w3.org/2000/svg",xhtml:N,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function B(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),P.hasOwnProperty(e)?{space:P[e],local:t}:t}function F(t){return function(){this.removeAttribute(t)}}function R(t){return function(){this.removeAttributeNS(t.space,t.local)}}function j(t,e){return function(){this.setAttribute(t,e)}}function $(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function z(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function q(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function H(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function U(t){return function(){this.style.removeProperty(t)}}function G(t,e,n){return function(){this.style.setProperty(t,e,n)}}function Y(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function Z(t,e){return t.style.getPropertyValue(e)||H(t).getComputedStyle(t,null).getPropertyValue(e)}function W(t){return function(){delete this[t]}}function K(t,e){return function(){this[t]=e}}function X(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function V(t){return t.trim().split(/^|\s+/)}function Q(t){return t.classList||new J(t)}function J(t){this._node=t,this._names=V(t.getAttribute("class")||"")}function tt(t,e){for(var n=Q(t),i=-1,r=e.length;++i=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function xt(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Tt=[null];function Ct(t,e){this._groups=t,this._parents=e}function St(){return new Ct([[document.documentElement]],Tt)}Ct.prototype=St.prototype={constructor:Ct,select:function(t){"function"!=typeof t&&(t=b(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r=x&&(x=v+1);!(y=b[x])&&++x=0;)(i=r[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=L);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a1?this.each((null==e?U:"function"==typeof e?Y:G)(t,e,null==n?"":n)):Z(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?W:"function"==typeof e?X:K)(t,e)):this.node()[t]},classed:function(t,e){var n=V(t+"");if(arguments.length<2){for(var i=Q(this.node()),r=-1,a=n.length;++r{}};function Dt(){for(var t,e=0,n=arguments.length,i={};e=0&&(n=t.slice(i+1),t=t.slice(0,i)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function Nt(t,e){for(var n,i=0,r=t.length;i0)for(var n,i,r=new Array(n),a=0;a=0&&e._call.call(void 0,t),e=e._next;--jt}()}finally{jt=0,function(){var t,e,n=Bt,i=1/0;for(;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Bt=e);Ft=t,Jt(i)}(),Ht=0}}function Qt(){var t=Gt.now(),e=t-qt;e>1e3&&(Ut-=e,qt=t)}function Jt(t){jt||($t&&($t=clearTimeout($t)),t-Ht>24?(t<1/0&&($t=setTimeout(Vt,t-Gt.now()-Ut)),zt&&(zt=clearInterval(zt))):(zt||(qt=Gt.now(),zt=setInterval(Qt,1e3)),jt=1,Yt(Vt)))}function te(t,e,n){var i=new Kt;return e=null==e?0:+e,i.restart((n=>{i.stop(),t(n+e)}),e,n),i}Kt.prototype=Xt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Zt():+n)+(null==e?0:+e),this._next||Ft===this||(Ft?Ft._next=this:Bt=this,Ft=this),this._call=t,this._time=n,Jt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Jt())}};var ee=Rt("start","end","cancel","interrupt"),ne=[];function ie(t,e,n,i,r,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(t){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=t&&o(t-n.delay)}function o(a){var u,l,h,f;if(1!==n.state)return c();for(u in r)if((f=r[u]).name===n.name){if(3===f.state)return te(o);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete r[u]):+u0)throw new Error("too late; already scheduled");return n}function ae(t,e){var n=oe(t,e);if(n.state>3)throw new Error("too late; already running");return n}function oe(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function se(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var ce,ue=180/Math.PI,le={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function he(t,e,n,i,r,a){var o,s,c;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(c=t*n+e*i)&&(n-=t*c,i-=e*c),(s=Math.sqrt(n*n+i*i))&&(n/=s,i/=s,c/=s),t*i180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:se(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,o.rotate,s,c),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:se(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,o.skewX,s,c),function(t,e,n,i,a,o){if(t!==n||e!==i){var s=a.push(r(a)+"scale(",null,",",null,")");o.push({i:s-4,x:se(t,n)},{i:s-2,x:se(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,c),a=o=null,function(t){for(var e,n=-1,i=c.length;++n>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Re(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Re(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ce.exec(t))?new ze(e[1],e[2],e[3],1):(e=Se.exec(t))?new ze(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ie.exec(t))?Re(e[1],e[2],e[3],e[4]):(e=Me.exec(t))?Re(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=De.exec(t))?Ze(e[1],e[2]/100,e[3]/100,1):(e=Oe.exec(t))?Ze(e[1],e[2]/100,e[3]/100,e[4]):Le.hasOwnProperty(t)?Fe(Le[t]):"transparent"===t?new ze(NaN,NaN,NaN,0):null}function Fe(t){return new ze(t>>16&255,t>>8&255,255&t,1)}function Re(t,e,n,i){return i<=0&&(t=e=n=NaN),new ze(t,e,n,i)}function je(t){return t instanceof ve||(t=Be(t)),t?new ze((t=t.rgb()).r,t.g,t.b,t.opacity):new ze}function $e(t,e,n,i){return 1===arguments.length?je(t):new ze(t,e,n,null==i?1:i)}function ze(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function qe(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function He(){const t=Ue(this.opacity);return`${1===t?"rgb(":"rgba("}${Ge(this.r)}, ${Ge(this.g)}, ${Ge(this.b)}${1===t?")":`, ${t})`}`}function Ue(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Ge(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Ge(t))<16?"0":"")+t.toString(16)}function Ze(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Ke(t,e,n,i)}function We(t){if(t instanceof Ke)return new Ke(t.h,t.s,t.l,t.opacity);if(t instanceof ve||(t=Be(t)),!t)return new Ke;if(t instanceof Ke)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),o=NaN,s=a-r,c=(a+r)/2;return s?(o=e===a?(n-i)/s+6*(n0&&c<1?0:o,new Ke(o,s,c,t.opacity)}function Ke(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Xe(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function Qe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Je(t,e,n,i,r){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*i+o*r)/6}me(ve,Be,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ne,formatHex:Ne,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return We(this).formatHsl()},formatRgb:Pe,toString:Pe}),me(ze,$e,ye(ve,{brighter(t){return t=null==t?ke:Math.pow(ke,t),new ze(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?xe:Math.pow(xe,t),new ze(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ze(Ge(this.r),Ge(this.g),Ge(this.b),Ue(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:qe,formatHex:qe,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:He,toString:He})),me(Ke,(function(t,e,n,i){return 1===arguments.length?We(t):new Ke(t,e,n,null==i?1:i)}),ye(ve,{brighter(t){return t=null==t?ke:Math.pow(ke,t),new Ke(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?xe:Math.pow(xe,t),new Ke(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new ze(Qe(t>=240?t-240:t+120,r,i),Qe(t,r,i),Qe(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new Ke(Xe(this.h),Ve(this.s),Ve(this.l),Ue(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ue(this.opacity);return`${1===t?"hsl(":"hsla("}${Xe(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));var tn=t=>()=>t;function en(t,e){return function(n){return t+n*e}}function nn(t){return 1==(t=+t)?rn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):tn(isNaN(e)?n:e)}}function rn(t,e){var n=e-t;return n?en(t,n):tn(isNaN(t)?e:t)}var an=function t(e){var n=nn(e);function i(t,e){var i=n((t=$e(t)).r,(e=$e(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),o=rn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function on(t){return function(e){var n,i,r=e.length,a=new Array(r),o=new Array(r),s=new Array(r);for(n=0;n=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],o=i>0?t[i-1]:2*r-a,s=ia&&(r=e.slice(a,r),s[o]?s[o]+=r:s[++o]=r),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:se(n,i)})),a=cn.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?re:ae;return function(){var o=a(this,t),s=o.on;s!==i&&(r=(i=s).copy()).on(e,n),o.on=r}}var Cn=It.prototype.constructor;function Sn(t){return function(){this.style.removeProperty(t)}}function In(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}function Mn(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&In(t,a,n)),i}return a._value=e,a}function Dn(t){return function(e){this.textContent=t.call(this,e)}}function On(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&Dn(i)),e}return i._value=t,i}var Ln=0;function Nn(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Pn(){return++Ln}var Bn=It.prototype;Nn.prototype=function(t){return It().transition(t)}.prototype={constructor:Nn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=b(t));for(var i=this._groups,r=i.length,a=new Array(r),o=0;o2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):o=!1;o&&delete t.__transition}}(this,t)}))},It.prototype.transition=function(t){var e,n;t instanceof Nn?(e=t._id,t=t._name):(e=Pn(),(n=Fn).time=Zt(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;afunction(t,e){return fetch(t,e).then(Gn)}(e,n).then((e=>(new DOMParser).parseFromString(e,t)))}Yn("application/xml"),Yn("text/html");var Zn=Yn("image/svg+xml");const Wn=Math.PI/180,Kn=180/Math.PI,Xn=.96422,Vn=.82521,Qn=4/29,Jn=6/29,ti=3*Jn*Jn;function ei(t){if(t instanceof ni)return new ni(t.l,t.a,t.b,t.opacity);if(t instanceof ui)return li(t);t instanceof ze||(t=je(t));var e,n,i=oi(t.r),r=oi(t.g),a=oi(t.b),o=ii((.2225045*i+.7168786*r+.0606169*a)/1);return i===r&&r===a?e=n=o:(e=ii((.4360747*i+.3850649*r+.1430804*a)/Xn),n=ii((.0139322*i+.0971045*r+.7141733*a)/Vn)),new ni(116*o-16,500*(e-o),200*(o-n),t.opacity)}function ni(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function ii(t){return t>.008856451679035631?Math.pow(t,1/3):t/ti+Qn}function ri(t){return t>Jn?t*t*t:ti*(t-Qn)}function ai(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function oi(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function si(t){if(t instanceof ui)return new ui(t.h,t.c,t.l,t.opacity);if(t instanceof ni||(t=ei(t)),0===t.a&&0===t.b)return new ui(NaN,0180||n<-180?n-360*Math.round(n/360):n):tn(isNaN(t)?e:t)}));hi(rn);const di=Math.sqrt(50),gi=Math.sqrt(10),pi=Math.sqrt(2);function bi(t,e,n){const i=(e-t)/Math.max(0,n),r=Math.floor(Math.log10(i)),a=i/Math.pow(10,r),o=a>=di?10:a>=gi?5:a>=pi?2:1;let s,c,u;return r<0?(u=Math.pow(10,-r)/o,s=Math.round(t*u),c=Math.round(e*u),s/ue&&--c,u=-u):(u=Math.pow(10,r)*o,s=Math.round(t/u),c=Math.round(e/u),s*ue&&--c),ce?1:t>=e?0:NaN}function vi(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function xi(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<0?r=e+1:a=e}while(ryi(t(e),n),i=(e,n)=>t(e)-n):(e=t===yi||t===vi?t:ki,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const o=r(t,e,n,a-1);return o>n&&i(t[o-1],e)>-i(t[o],e)?o-1:o},right:function(t,i,r=0,a=t.length){if(r>>1;n(t[e],i)<=0?r=e+1:a=e}while(re&&(n=t,t=e,e=n),u=function(n){return Math.max(t,Math.min(e,n))}),i=c>2?Fi:Bi,r=a=null,h}function h(e){return null==e||isNaN(e=+e)?n:(r||(r=i(o.map(t),s,c)))(t(u(e)))}return h.invert=function(n){return u(e((a||(a=i(s,o.map(t),se)))(n)))},h.domain=function(t){return arguments.length?(o=Array.from(t,Oi),l()):o.slice()},h.range=function(t){return arguments.length?(s=Array.from(t),l()):s.slice()},h.rangeRound=function(t){return s=Array.from(t),c=Di,l()},h.clamp=function(t){return arguments.length?(u=!!t||Ni,l()):u!==Ni},h.interpolate=function(t){return arguments.length?(c=t,l()):c},h.unknown=function(t){return arguments.length?(n=t,h):n},function(n,i){return t=n,e=i,l()}}function $i(){return ji()(Ni,Ni)}function zi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}var qi,Hi=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ui(t){if(!(e=Hi.exec(t)))throw new Error("invalid format: "+t);var e;return new Gi({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Gi(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Yi(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Zi(t){return(t=Yi(Math.abs(t)))?t[1]:NaN}function Wi(t,e){var n=Yi(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Ui.prototype=Gi.prototype,Gi.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ki={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Wi(100*t,e),r:Wi,s:function(t,e){var n=Yi(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(qi=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Yi(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Xi(t){return t}var Vi,Qi,Ji,tr=Array.prototype.map,er=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function nr(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?Xi:(e=tr.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],o=0,s=e[0],c=0;r>0&&s>0&&(c+s+1>i&&(s=Math.max(1,i-c)),a.push(t.substring(r-=s,r+s)),!((c+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Xi:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(tr.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",u=void 0===t.minus?"−":t.minus+"",l=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=Ui(t)).fill,n=t.align,h=t.sign,f=t.symbol,d=t.zero,g=t.width,p=t.comma,b=t.precision,w=t.trim,m=t.type;"n"===m?(p=!0,m="g"):Ki[m]||(void 0===b&&(b=12),w=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var y="$"===f?r:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",v="$"===f?a:/[%p]/.test(m)?c:"",x=Ki[m],k=/[defgprs%]/.test(m);function _(t){var r,a,c,f=y,_=v;if("c"===m)_=x(t)+_,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?l:x(Math.abs(t),b),w&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),f=(A?"("===h?h:u:"-"===h||"("===h?"":h)+f,_=("s"===m?er[8+qi/3]:"")+_+(A&&"("===h?")":""),k)for(r=-1,a=t.length;++r(c=t.charCodeAt(r))||c>57){_=(46===c?o+t.slice(r+1):t.slice(r))+_,t=t.slice(0,r);break}}p&&!d&&(t=i(t,1/0));var E=f.length+t.length+_.length,T=E>1)+f+t+_+T.slice(E);break;default:t=T+f+t+_}return s(t)}return b=void 0===b?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),_.toString=function(){return t+""},_}return{format:h,formatPrefix:function(t,e){var n=h(((t=Ui(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Zi(e)/3))),r=Math.pow(10,-i),a=er[8+i/3];return function(t){return n(r*t)+a}}}}function ir(t,e,n,i){var r,a=mi(t,e,n);switch((i=Ui(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zi(e)/3)))-Zi(Math.abs(t)))}(a,o))||(i.precision=r),Ji(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Zi(e)-Zi(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Zi(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return Qi(i)}function rr(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const i=e=r))return[];const s=a-r+1,c=new Array(s);if(i)if(o<0)for(let t=0;t0;){if((r=wi(c,u,n))===i)return a[o]=c,a[s]=u,e(a);if(r>0)c=Math.floor(c/r)*r,u=Math.ceil(u/r)*r;else{if(!(r<0))break;c=Math.ceil(c*r)/r,u=Math.floor(u*r)/r}i=r}return t},t}function ar(){var t=$i();return t.copy=function(){return Ri(t,ar())},zi.apply(t,arguments),rr(t)}Vi=nr({thousands:",",grouping:[3],currency:["$",""]}),Qi=Vi.format,Ji=Vi.formatPrefix;class or extends Map{constructor(t,e=lr){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[e,n]of t)this.set(e,n)}get(t){return super.get(sr(this,t))}has(t){return super.has(sr(this,t))}set(t,e){return super.set(cr(this,t),e)}delete(t){return super.delete(ur(this,t))}}Set;function sr({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):n}function cr({_intern:t,_key:e},n){const i=e(n);return t.has(i)?t.get(i):(t.set(i,n),n)}function ur({_intern:t,_key:e},n){const i=e(n);return t.has(i)&&(n=t.get(i),t.delete(i)),n}function lr(t){return null!==t&&"object"==typeof t?t.valueOf():t}const hr=Symbol("implicit");function fr(){var t=new or,e=[],n=[],i=hr;function r(r){let a=t.get(r);if(void 0===a){if(i!==hr)return i;t.set(r,a=e.push(r)-1)}return n[a%n.length]}return r.domain=function(n){if(!arguments.length)return e.slice();e=[],t=new or;for(const i of n)t.has(i)||t.set(i,e.push(i)-1);return r},r.range=function(t){return arguments.length?(n=Array.from(t),r):n.slice()},r.unknown=function(t){return arguments.length?(i=t,r):i},r.copy=function(){return fr(e,n).unknown(i)},zi.apply(r,arguments),r}const dr=1e3,gr=6e4,pr=36e5,br=864e5,wr=6048e5,mr=2592e6,yr=31536e6,vr=new Date,xr=new Date;function kr(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=e=>(t(e=new Date(+e)),e),r.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),r.round=t=>{const e=r(t),n=r.ceil(t);return t-e(e(t=new Date(+t),null==n?1:Math.floor(n)),t),r.range=(n,i,a)=>{const o=[];if(n=r.ceil(n),a=null==a?1:Math.floor(a),!(n0))return o;let s;do{o.push(s=new Date(+n)),e(n,a),t(n)}while(skr((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})),n&&(r.count=(e,i)=>(vr.setTime(+e),xr.setTime(+i),t(vr),t(xr),Math.floor(n(vr,xr))),r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?e=>i(e)%t==0:e=>r.count(0,e)%t==0):r:null)),r}const _r=kr((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));_r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?kr((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):_r:null);_r.range;const Ar=kr((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*dr)}),((t,e)=>(e-t)/dr),(t=>t.getUTCSeconds())),Er=(Ar.range,kr((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*dr)}),((t,e)=>{t.setTime(+t+e*gr)}),((t,e)=>(e-t)/gr),(t=>t.getMinutes()))),Tr=(Er.range,kr((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*gr)}),((t,e)=>(e-t)/gr),(t=>t.getUTCMinutes()))),Cr=(Tr.range,kr((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*dr-t.getMinutes()*gr)}),((t,e)=>{t.setTime(+t+e*pr)}),((t,e)=>(e-t)/pr),(t=>t.getHours()))),Sr=(Cr.range,kr((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*pr)}),((t,e)=>(e-t)/pr),(t=>t.getUTCHours()))),Ir=(Sr.range,kr((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*gr)/br),(t=>t.getDate()-1))),Mr=(Ir.range,kr((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/br),(t=>t.getUTCDate()-1))),Dr=(Mr.range,kr((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/br),(t=>Math.floor(t/br))));Dr.range;function Or(t){return kr((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*gr)/wr))}const Lr=Or(0),Nr=Or(1),Pr=Or(2),Br=Or(3),Fr=Or(4),Rr=Or(5),jr=Or(6);Lr.range,Nr.range,Pr.range,Br.range,Fr.range,Rr.range,jr.range;function $r(t){return kr((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/wr))}const zr=$r(0),qr=$r(1),Hr=$r(2),Ur=$r(3),Gr=$r(4),Yr=$r(5),Zr=$r(6),Wr=(zr.range,qr.range,Hr.range,Ur.range,Gr.range,Yr.range,Zr.range,kr((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),Kr=(Wr.range,kr((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),Xr=(Kr.range,kr((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));Xr.every=t=>isFinite(t=Math.floor(t))&&t>0?kr((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null;Xr.range;const Vr=kr((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));Vr.every=t=>isFinite(t=Math.floor(t))&&t>0?kr((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null;Vr.range;function Qr(t,e,n,i,r,a){const o=[[Ar,1,dr],[Ar,5,5e3],[Ar,15,15e3],[Ar,30,3e4],[a,1,gr],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,pr],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,br],[i,2,1728e5],[n,1,wr],[e,1,mr],[e,3,7776e6],[t,1,yr]];function s(e,n,i){const r=Math.abs(n-e)/i,a=xi((([,,t])=>t)).right(o,r);if(a===o.length)return t.every(mi(e/yr,n/yr,i));if(0===a)return _r.every(Math.max(mi(e,n,i),1));const[s,c]=o[r/o[a-1][2][t.toLowerCase(),e])))}function ba(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function wa(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function ma(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function ya(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function va(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function xa(t,e,n){var i=ua.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function ka(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function _a(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function Aa(t,e,n){var i=ua.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function Ea(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function Ta(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function Ca(t,e,n){var i=ua.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Sa(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function Ia(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ma(t,e,n){var i=ua.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function Da(t,e,n){var i=ua.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Oa(t,e,n){var i=ua.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function La(t,e,n){var i=la.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function Na(t,e,n){var i=ua.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Pa(t,e,n){var i=ua.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Ba(t,e){return fa(t.getDate(),e,2)}function Fa(t,e){return fa(t.getHours(),e,2)}function Ra(t,e){return fa(t.getHours()%12||12,e,2)}function ja(t,e){return fa(1+Ir.count(Xr(t),t),e,3)}function $a(t,e){return fa(t.getMilliseconds(),e,3)}function za(t,e){return $a(t,e)+"000"}function qa(t,e){return fa(t.getMonth()+1,e,2)}function Ha(t,e){return fa(t.getMinutes(),e,2)}function Ua(t,e){return fa(t.getSeconds(),e,2)}function Ga(t){var e=t.getDay();return 0===e?7:e}function Ya(t,e){return fa(Lr.count(Xr(t)-1,t),e,2)}function Za(t){var e=t.getDay();return e>=4||0===e?Fr(t):Fr.ceil(t)}function Wa(t,e){return t=Za(t),fa(Fr.count(Xr(t),t)+(4===Xr(t).getDay()),e,2)}function Ka(t){return t.getDay()}function Xa(t,e){return fa(Nr.count(Xr(t)-1,t),e,2)}function Va(t,e){return fa(t.getFullYear()%100,e,2)}function Qa(t,e){return fa((t=Za(t)).getFullYear()%100,e,2)}function Ja(t,e){return fa(t.getFullYear()%1e4,e,4)}function to(t,e){var n=t.getDay();return fa((t=n>=4||0===n?Fr(t):Fr.ceil(t)).getFullYear()%1e4,e,4)}function eo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+fa(e/60|0,"0",2)+fa(e%60,"0",2)}function no(t,e){return fa(t.getUTCDate(),e,2)}function io(t,e){return fa(t.getUTCHours(),e,2)}function ro(t,e){return fa(t.getUTCHours()%12||12,e,2)}function ao(t,e){return fa(1+Mr.count(Vr(t),t),e,3)}function oo(t,e){return fa(t.getUTCMilliseconds(),e,3)}function so(t,e){return oo(t,e)+"000"}function co(t,e){return fa(t.getUTCMonth()+1,e,2)}function uo(t,e){return fa(t.getUTCMinutes(),e,2)}function lo(t,e){return fa(t.getUTCSeconds(),e,2)}function ho(t){var e=t.getUTCDay();return 0===e?7:e}function fo(t,e){return fa(zr.count(Vr(t)-1,t),e,2)}function go(t){var e=t.getUTCDay();return e>=4||0===e?Gr(t):Gr.ceil(t)}function po(t,e){return t=go(t),fa(Gr.count(Vr(t),t)+(4===Vr(t).getUTCDay()),e,2)}function bo(t){return t.getUTCDay()}function wo(t,e){return fa(qr.count(Vr(t)-1,t),e,2)}function mo(t,e){return fa(t.getUTCFullYear()%100,e,2)}function yo(t,e){return fa((t=go(t)).getUTCFullYear()%100,e,2)}function vo(t,e){return fa(t.getUTCFullYear()%1e4,e,4)}function xo(t,e){var n=t.getUTCDay();return fa((t=n>=4||0===n?Gr(t):Gr.ceil(t)).getUTCFullYear()%1e4,e,4)}function ko(){return"+0000"}function _o(){return"%"}function Ao(t){return+t}function Eo(t){return Math.floor(+t/1e3)}function To(t){return new Date(t)}function Co(t){return t instanceof Date?+t:+new Date(+t)}function So(t,e,n,i,r,a,o,s,c,u){var l=$i(),h=l.invert,f=l.domain,d=u(".%L"),g=u(":%S"),p=u("%I:%M"),b=u("%I %p"),w=u("%a %d"),m=u("%b %d"),y=u("%B"),v=u("%Y");function x(t){return(c(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Ao,s:Eo,S:Ua,u:Ga,U:Ya,V:Wa,w:Ka,W:Xa,x:null,X:null,y:Va,Y:Ja,Z:eo,"%":_o},v={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:no,e:no,f:so,g:yo,G:xo,H:io,I:ro,j:ao,L:oo,m:co,M:uo,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Ao,s:Eo,S:lo,u:ho,U:fo,V:po,w:bo,W:wo,x:null,X:null,y:mo,Y:vo,Z:ko,"%":_o},x={a:function(t,e,n){var i=d.exec(e.slice(n));return i?(t.w=g.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=h.exec(e.slice(n));return i?(t.w=f.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=w.exec(e.slice(n));return i?(t.m=m.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=p.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return A(t,e,n,i)},d:Ta,e:Ta,f:Oa,g:ka,G:xa,H:Sa,I:Sa,j:Ca,L:Da,m:Ea,M:Ia,p:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.p=l.get(i[0].toLowerCase()),n+i[0].length):-1},q:Aa,Q:Na,s:Pa,S:Ma,u:wa,U:ma,V:ya,w:ba,W:va,x:function(t,e,i){return A(t,n,e,i)},X:function(t,e,n){return A(t,i,e,n)},y:ka,Y:xa,Z:_a,"%":La};function k(t,e){return function(n){var i,r,a,o=[],s=-1,c=0,u=t.length;for(n instanceof Date||(n=new Date(+n));++s53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=ra(aa(a.y,0,1))).getUTCDay(),i=r>4||0===r?qr.ceil(i):qr(i),i=Mr.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=ia(aa(a.y,0,1))).getDay(),i=r>4||0===r?Nr.ceil(i):Nr(i),i=Ir.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?ra(aa(a.y,0,1)).getUTCDay():ia(aa(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ra(a)):ia(a)}}function A(t,e,n,i){for(var r,a,o=0,s=e.length,c=n.length;o=c)return-1;if(37===(r=e.charCodeAt(o++))){if(r=e.charAt(o++),!(a=x[r in ca?e.charAt(o++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return y.x=k(n,y),y.X=k(i,y),y.c=k(e,y),v.x=k(n,v),v.X=k(i,v),v.c=k(e,v),{format:function(t){var e=k(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=k(t+="",v);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),sa=oa.format,oa.parse,oa.utcFormat,oa.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Lo=Math.abs,No=Math.atan2,Po=Math.cos,Bo=Math.max,Fo=Math.min,Ro=Math.sin,jo=Math.sqrt,$o=1e-12,zo=Math.PI,qo=zo/2,Ho=2*zo;function Uo(t){return t>1?0:t<-1?zo:Math.acos(t)}function Go(t){return t>=1?qo:t<=-1?-qo:Math.asin(t)}const Yo=Math.PI,Zo=2*Yo,Wo=1e-6,Ko=Zo-Wo;function Xo(t){this._+=t[0];for(let e=1,n=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Xo;const n=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;eWo)if(Math.abs(l*s-c*u)>Wo&&r){let f=n-a,d=i-o,g=s*s+c*c,p=f*f+d*d,b=Math.sqrt(g),w=Math.sqrt(h),m=r*Math.tan((Yo-Math.acos((g+h-p)/(2*b*w)))/2),y=m/w,v=m/b;Math.abs(y-1)>Wo&&this._append`L${t+y*u},${e+y*l}`,this._append`A${r},${r},0,0,${+(l*f>u*d)},${this._x1=t+v*s},${this._y1=e+v*c}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,n,i,r,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let o=n*Math.cos(i),s=n*Math.sin(i),c=t+o,u=e+s,l=1^a,h=a?i-r:r-i;null===this._x1?this._append`M${c},${u}`:(Math.abs(this._x1-c)>Wo||Math.abs(this._y1-u)>Wo)&&this._append`L${c},${u}`,n&&(h<0&&(h=h%Zo+Zo),h>Ko?this._append`A${n},${n},0,1,${l},${t-o},${e-s}A${n},${n},0,1,${l},${this._x1=c},${this._y1=u}`:h>Wo&&this._append`A${n},${n},0,${+(h>=Yo)},${l},${this._x1=t+n*Math.cos(r)},${this._y1=e+n*Math.sin(r)}`)}rect(t,e,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Qo(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Vo(e)}function Jo(t){return t.innerRadius}function ts(t){return t.outerRadius}function es(t){return t.startAngle}function ns(t){return t.endAngle}function is(t){return t&&t.padAngle}function rs(t,e,n,i,r,a,o,s){var c=n-t,u=i-e,l=o-r,h=s-a,f=h*c-l*u;if(!(f*f<$o))return[t+(f=(l*(e-a)-h*(t-r))/f)*c,e+f*u]}function as(t,e,n,i,r,a,o){var s=t-n,c=e-i,u=(o?a:-a)/jo(s*s+c*c),l=u*c,h=-u*s,f=t+l,d=e+h,g=n+l,p=i+h,b=(f+g)/2,w=(d+p)/2,m=g-f,y=p-d,v=m*m+y*y,x=r-a,k=f*p-g*d,_=(y<0?-1:1)*jo(Bo(0,x*x*v-k*k)),A=(k*y-m*_)/v,E=(-k*m-y*_)/v,T=(k*y+m*_)/v,C=(-k*m+y*_)/v,S=A-b,I=E-w,M=T-b,D=C-w;return S*S+I*I>M*M+D*D&&(A=T,E=C),{cx:A,cy:E,x01:-l,y01:-h,x11:A*(r/x-1),y11:E*(r/x-1)}}function os(){var t=Jo,e=ts,n=Oo(0),i=null,r=es,a=ns,o=is,s=null,c=Qo(u);function u(){var u,l,h=+t.apply(this,arguments),f=+e.apply(this,arguments),d=r.apply(this,arguments)-qo,g=a.apply(this,arguments)-qo,p=Lo(g-d),b=g>d;if(s||(s=u=c()),f$o)if(p>Ho-$o)s.moveTo(f*Po(d),f*Ro(d)),s.arc(0,0,f,d,g,!b),h>$o&&(s.moveTo(h*Po(g),h*Ro(g)),s.arc(0,0,h,g,d,b));else{var w,m,y=d,v=g,x=d,k=g,_=p,A=p,E=o.apply(this,arguments)/2,T=E>$o&&(i?+i.apply(this,arguments):jo(h*h+f*f)),C=Fo(Lo(f-h)/2,+n.apply(this,arguments)),S=C,I=C;if(T>$o){var M=Go(T/h*Ro(E)),D=Go(T/f*Ro(E));(_-=2*M)>$o?(x+=M*=b?1:-1,k-=M):(_=0,x=k=(d+g)/2),(A-=2*D)>$o?(y+=D*=b?1:-1,v-=D):(A=0,y=v=(d+g)/2)}var O=f*Po(y),L=f*Ro(y),N=h*Po(k),P=h*Ro(k);if(C>$o){var B,F=f*Po(v),R=f*Ro(v),j=h*Po(x),$=h*Ro(x);if(p$o?I>$o?(w=as(j,$,O,L,f,I,b),m=as(F,R,N,P,f,I,b),s.moveTo(w.cx+w.x01,w.cy+w.y01),I$o&&_>$o?S>$o?(w=as(N,P,F,R,h,-S,b),m=as(O,L,j,$,h,-S,b),s.lineTo(w.cx+w.x01,w.cy+w.y01),St?1:e>=t?0:NaN}function gs(t){return t}function ps(){var t=gs,e=ds,n=null,i=Oo(0),r=Oo(Ho),a=Oo(0);function o(o){var s,c,u,l,h,f=(o=ss(o)).length,d=0,g=new Array(f),p=new Array(f),b=+i.apply(this,arguments),w=Math.min(Ho,Math.max(-Ho,r.apply(this,arguments)-b)),m=Math.min(Math.abs(w)/f,a.apply(this,arguments)),y=m*(w<0?-1:1);for(s=0;s0&&(d+=h);for(null!=e?g.sort((function(t,n){return e(p[t],p[n])})):null!=n&&g.sort((function(t,e){return n(o[t],o[e])})),s=0,u=d?(w-f*y)/d:0;s0?h*u:0)+y,p[c]={data:o[c],index:s,value:h,startAngle:b,endAngle:l,padAngle:m};return p}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:Oo(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Oo(+t),o):i},o.endAngle=function(t){return arguments.length?(r="function"==typeof t?t:Oo(+t),o):r},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Oo(+t),o):a},o}function bs(){}function ws(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function ms(t){this._context=t}function ys(t){return new ms(t)}function vs(t){this._context=t}function xs(t){return new vs(t)}function ks(t){this._context=t}function _s(t){return new ks(t)}cs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},ms.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:ws(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},vs.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ks.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,i):this._context.moveTo(n,i);break;case 3:this._point=4;default:ws(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class As{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Es(t){return new As(t,!0)}function Ts(t){return new As(t,!1)}function Cs(t,e){this._basis=new ms(t),this._beta=e}Cs.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var i,r=t[0],a=e[0],o=t[n]-r,s=e[n]-a,c=-1;++c<=n;)i=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(r+i*o),this._beta*e[c]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Ss=function t(e){function n(t){return 1===e?new ms(t):new Cs(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function Is(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function Ms(t,e){this._context=t,this._k=(1-e)/6}Ms.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Is(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ds=function t(e){function n(t){return new Ms(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Os(t,e){this._context=t,this._k=(1-e)/6}Os.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ls=function t(e){function n(t){return new Os(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Ns(t,e){this._context=t,this._k=(1-e)/6}Ns.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Is(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ps=function t(e){function n(t){return new Ns(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Bs(t,e,n){var i=t._x1,r=t._y1,a=t._x2,o=t._y2;if(t._l01_a>$o){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,r=(r*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>$o){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/l,o=(o*u+t._y1*t._l23_2a-n*t._l12_2a)/l}t._context.bezierCurveTo(i,r,a,o,t._x2,t._y2)}function Fs(t,e){this._context=t,this._alpha=e}Fs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Rs=function t(e){function n(t){return e?new Fs(t,e):new Ms(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function js(t,e){this._context=t,this._alpha=e}js.prototype={areaStart:bs,areaEnd:bs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var $s=function t(e){function n(t){return e?new js(t,e):new Os(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function zs(t,e){this._context=t,this._alpha=e}zs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var qs=function t(e){function n(t){return e?new zs(t,e):new Ns(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Hs(t){this._context=t}function Us(t){return new Hs(t)}function Gs(t){return t<0?-1:1}function Ys(t,e,n){var i=t._x1-t._x0,r=e-t._x1,a=(t._y1-t._y0)/(i||r<0&&-0),o=(n-t._y1)/(r||i<0&&-0),s=(a*r+o*i)/(i+r);return(Gs(a)+Gs(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Zs(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function Ws(t,e,n){var i=t._x0,r=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,r+s*e,a-s,o-s*n,a,o)}function Ks(t){this._context=t}function Xs(t){this._context=new Vs(t)}function Vs(t){this._context=t}function Qs(t){return new Ks(t)}function Js(t){return new Xs(t)}function tc(t){this._context=t}function ec(t){var e,n,i=t.length-1,r=new Array(i),a=new Array(i),o=new Array(i);for(r[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)r[e]=(o[e]-r[e+1])/a[e];for(a[i-1]=(t[i]+r[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},sc.prototype={constructor:sc,scale:function(t){return 1===t?this:new sc(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new sc(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new sc(1,0,0);sc.prototype},8137:function(t,e,n){"use strict";n.d(e,{a:function(){return r}});var i=n(6421);function r(t,e){var n=t.append("foreignObject").attr("width","100000"),r=n.append("xhtml:div");r.attr("xmlns","http://www.w3.org/1999/xhtml");var a=e.label;switch(typeof a){case"function":r.insert(a);break;case"object":r.insert((function(){return a}));break;default:r.html(a)}i.bg(r,e.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap");var o=r.node().getBoundingClientRect();return n.attr("width",o.width).attr("height",o.height),n}},6421:function(t,e,n){"use strict";n.d(e,{$p:function(){return l},O1:function(){return o},WR:function(){return h},bF:function(){return a},bg:function(){return u}});var i=n(3862),r=n(3200);function a(t,e){return!!t.children(e).length}function o(t){return c(t.v)+":"+c(t.w)+":"+c(t.name)}var s=/:/g;function c(t){return t?String(t).replace(s,"\\:"):""}function u(t,e){e&&t.attr("style",e)}function l(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))}function h(t,e){var n=e.graph();if(i.Z(n)){var a=n.transition;if(r.Z(a))return a(t)}return t}},1768:function(t,e,n){"use strict";n.d(e,{bK:function(){return Ke}});var i=n(6227),r=n(7474),a=n(4734),o=n(2399),s=n(1849),c=n(8076),u=n(6460),l=n(8066);class h{constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,e=t._prev;if(e!==t)return f(e),e}enqueue(t){var e=this._sentinel;t._prev&&t._next&&f(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e}toString(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,d)),n=n._prev;return"["+t.join(", ")+"]"}}function f(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function d(t,e){if("_next"!==t&&"_prev"!==t)return e}var g=o.Z(1);function p(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new l.k,r=0,a=0;i.Z(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),i.Z(t.edges(),(function(t){var i=n.edge(t.v,t.w)||0,o=e(t),s=i+o;n.setEdge(t.v,t.w,s),a=Math.max(a,n.node(t.v).out+=o),r=Math.max(r,n.node(t.w).in+=o)}));var o=u.Z(a+r+3).map((function(){return new h})),s=r+1;return i.Z(n.nodes(),(function(t){w(o,s,n.node(t))})),{graph:n,buckets:o,zeroIdx:s}}(t,e||g),r=function(t,e,n){var i,r=[],a=e[e.length-1],o=e[0];for(;t.nodeCount();){for(;i=o.dequeue();)b(t,e,n,i);for(;i=a.dequeue();)b(t,e,n,i);if(t.nodeCount())for(var s=e.length-2;s>0;--s)if(i=e[s].dequeue()){r=r.concat(b(t,e,n,i,!0));break}}return r}(n.graph,n.buckets,n.zeroIdx);return s.Z(c.Z(r,(function(e){return t.outEdges(e.v,e.w)})))}function b(t,e,n,r,a){var o=a?[]:void 0;return i.Z(t.inEdges(r.v),(function(i){var r=t.edge(i),s=t.node(i.v);a&&o.push({v:i.v,w:i.w}),s.out-=r,w(e,n,s)})),i.Z(t.outEdges(r.v),(function(i){var r=t.edge(i),a=i.w,o=t.node(a);o.in-=r,w(e,n,o)})),t.removeNode(r.v),o}function w(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}function m(t){var e="greedy"===t.graph().acyclicer?p(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},r={};function o(s){a.Z(r,s)||(r[s]=!0,n[s]=!0,i.Z(t.outEdges(s),(function(t){a.Z(n,t.w)?e.push(t):o(t.w)})),delete n[s])}return i.Z(t.nodes(),o),e}(t);i.Z(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,r.Z("rev"))}))}var y=n(675),v=n(1250),x=n(8670);var k=function(t,e,n){(void 0!==n&&!(0,x.Z)(t[e],n)||void 0===n&&!(e in t))&&(0,v.Z)(t,e,n)},_=n(1405),A=n(9053),E=n(9178),T=n(7855),C=n(7734),S=n(175),I=n(6575),M=n(5214),D=n(7840),O=n(3200),L=n(7275),N=n(3862),P=n(4161);var B=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]},F=n(3617),R=n(4027);var j=function(t){return(0,F.Z)(t,(0,R.Z)(t))};var $=function(t,e,n,i,r,a,o){var s=B(t,n),c=B(e,n),u=o.get(c);if(u)k(t,n,u);else{var l=a?a(s,c,n+"",t,e,o):void 0,h=void 0===l;if(h){var f=(0,I.Z)(c),d=!f&&(0,D.Z)(c),g=!f&&!d&&(0,P.Z)(c);l=c,f||d||g?(0,I.Z)(s)?l=s:(0,M.Z)(s)?l=(0,T.Z)(s):d?(h=!1,l=(0,A.Z)(c,!0)):g?(h=!1,l=(0,E.Z)(c,!0)):l=[]:(0,N.Z)(c)||(0,S.Z)(c)?(l=s,(0,S.Z)(s)?l=j(s):(0,L.Z)(s)&&!(0,O.Z)(s)||(l=(0,C.Z)(c))):h=!1}h&&(o.set(c,l),r(l,c,i,a,o),o.delete(c)),k(t,n,l)}};var z=function t(e,n,i,r,a){e!==n&&(0,_.Z)(n,(function(o,s){if(a||(a=new y.Z),(0,L.Z)(o))$(e,n,s,i,t,r,a);else{var c=r?r(B(e,s),o,s+"",e,n,a):void 0;void 0===c&&(c=o),k(e,s,c)}}),R.Z)},q=n(155),H=n(9597);var U=function(t){return(0,q.Z)((function(e,n){var i=-1,r=n.length,a=r>1?n[r-1]:void 0,o=r>2?n[2]:void 0;for(a=t.length>3&&"function"==typeof a?(r--,a):void 0,o&&(0,H.Z)(n[0],n[1],o)&&(a=r<3?void 0:a,r=1),e=Object(e);++ie},X=n(1116);var V=function(t){return t&&t.length?W(t,X.Z,K):void 0};var Q=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0},J=n(8878),tt=n(5350);var et=function(t,e){var n={};return e=(0,tt.Z)(e,3),(0,J.Z)(t,(function(t,i,r){(0,v.Z)(n,i,e(t,i,r))})),n},nt=n(9789);var it=function(t,e){return tMath.abs(o)*u?(s<0&&(u=-u),n=u*o/s,i=u):(o<0&&(c=-c),n=c,i=c*s/o),{x:r+n,y:a+i}}function lt(t){var e=c.Z(u.Z(ft(t)+1),(function(){return[]}));return i.Z(t.nodes(),(function(n){var i=t.node(n),r=i.rank;nt.Z(r)||(e[r][i.order]=n)})),e}function ht(t,e,n,i){var r={width:0,height:0};return arguments.length>=4&&(r.rank=n,r.order=i),st(t,"border",r,e)}function ft(t){return V(c.Z(t.nodes(),(function(e){var n=t.node(e).rank;if(!nt.Z(n))return n})))}function dt(t,e){var n=ot();try{return e()}finally{console.log(t+" time: "+(ot()-n)+"ms")}}function gt(t,e){return e()}function pt(t,e,n,i,r,a){var o={width:0,height:0,rank:a,borderType:e},s=r[e][a-1],c=st(t,"border",o,n);r[e][a]=c,t.setParent(c,i),s&&t.setEdge(s,c,{weight:1})}function bt(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){i.Z(t.nodes(),(function(e){yt(t.node(e))})),i.Z(t.edges(),(function(e){var n=t.edge(e);i.Z(n.points,yt),a.Z(n,"y")&&yt(n)}))}(t),"lr"!==e&&"rl"!==e||(!function(t){i.Z(t.nodes(),(function(e){vt(t.node(e))})),i.Z(t.edges(),(function(e){var n=t.edge(e);i.Z(n.points,vt),a.Z(n,"x")&&vt(n)}))}(t),wt(t))}function wt(t){i.Z(t.nodes(),(function(e){mt(t.node(e))})),i.Z(t.edges(),(function(e){mt(t.edge(e))}))}function mt(t){var e=t.width;t.width=t.height,t.height=e}function yt(t){t.y=-t.y}function vt(t){var e=t.x;t.x=t.y,t.y=e}function xt(t){t.graph().dummyChains=[],i.Z(t.edges(),(function(e){!function(t,e){var n,i,r,a=e.v,o=t.node(a).rank,s=e.w,c=t.node(s).rank,u=e.name,l=t.edge(e),h=l.labelRank;if(c===o+1)return;for(t.removeEdge(e),r=0,++o;o-1?r[a?e[o]:o]:void 0}},Ot=n(1758),Lt=n(5473);var Nt=function(t){var e=(0,Lt.Z)(t),n=e%1;return e==e?n?e-n:e:0},Pt=Math.max;var Bt=Dt((function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var r=null==n?0:Nt(n);return r<0&&(r=Pt(i+r,0)),(0,Ot.Z)(t,(0,tt.Z)(e,3),r)})),Ft=n(3555);o.Z(1);o.Z(1);n(9295),n(9035),n(963),n(4897);(0,n(7381).Z)("length"),RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Rt="[\\ud800-\\udfff]",jt="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",$t="\\ud83c[\\udffb-\\udfff]",zt="[^\\ud800-\\udfff]",qt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",Ut="(?:"+jt+"|"+$t+")"+"?",Gt="[\\ufe0e\\ufe0f]?",Yt=Gt+Ut+("(?:\\u200d(?:"+[zt,qt,Ht].join("|")+")"+Gt+Ut+")*"),Zt="(?:"+[zt+jt+"?",jt,qt,Ht,Rt].join("|")+")";RegExp($t+"(?="+$t+")|"+Zt+Yt,"g");function Wt(){}function Kt(t,e,n){I.Z(e)||(e=[e]);var r=(t.isDirected()?t.successors:t.neighbors).bind(t),a=[],o={};return i.Z(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);Xt(t,e,"post"===n,o,r,a)})),a}function Xt(t,e,n,r,o,s){a.Z(r,e)||(r[e]=!0,n||s.push(e),i.Z(o(e),(function(e){Xt(t,e,n,r,o,s)})),n&&s.push(e))}Wt.prototype=new Error;n(8612);function Vt(t){t=function(t){var e=(new l.k).setGraph(t.graph());return i.Z(t.nodes(),(function(n){e.setNode(n,t.node(n))})),i.Z(t.edges(),(function(n){var i=e.edge(n.v,n.w)||{weight:0,minlen:1},r=t.edge(n);e.setEdge(n.v,n.w,{weight:i.weight+r.weight,minlen:Math.max(i.minlen,r.minlen)})})),e}(t),_t(t);var e,n=Et(t);for(te(n),Qt(n,t);e=ne(n);)re(n,t,e,ie(n,t,e))}function Qt(t,e){var n=function(t,e){return Kt(t,e,"post")}(t,t.nodes());n=n.slice(0,n.length-1),i.Z(n,(function(n){!function(t,e,n){var i=t.node(n).parent;t.edge(n,i).cutvalue=Jt(t,e,n)}(t,e,n)}))}function Jt(t,e,n){var r=t.node(n).parent,a=!0,o=e.edge(n,r),s=0;return o||(a=!1,o=e.edge(r,n)),s=o.weight,i.Z(e.nodeEdges(n),(function(i){var o,c,u=i.v===n,l=u?i.w:i.v;if(l!==r){var h=u===a,f=e.edge(i).weight;if(s+=h?f:-f,o=n,c=l,t.hasEdge(o,c)){var d=t.edge(n,l).cutvalue;s+=h?-d:d}}})),s}function te(t,e){arguments.length<2&&(e=t.nodes()[0]),ee(t,{},1,e)}function ee(t,e,n,r,o){var s=n,c=t.node(r);return e[r]=!0,i.Z(t.neighbors(r),(function(i){a.Z(e,i)||(n=ee(t,e,n,i,r))})),c.low=s,c.lim=n++,o?c.parent=o:delete c.parent,n}function ne(t){return Bt(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function ie(t,e,n){var i=n.v,r=n.w;e.hasEdge(i,r)||(i=n.w,r=n.v);var a=t.node(i),o=t.node(r),s=a,c=!1;a.lim>o.lim&&(s=o,c=!0);var u=Ft.Z(e.edges(),(function(e){return c===ae(t,t.node(e.v),s)&&c!==ae(t,t.node(e.w),s)}));return kt(u,(function(t){return At(e,t)}))}function re(t,e,n,r){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(r.v,r.w,{}),te(t),Qt(t,e),function(t,e){var n=Bt(t.nodes(),(function(t){return!e.node(t).parent})),r=function(t,e){return Kt(t,e,"pre")}(t,n);r=r.slice(1),i.Z(r,(function(n){var i=t.node(n).parent,r=e.edge(n,i),a=!1;r||(r=e.edge(i,n),a=!0),e.node(n).rank=e.node(i).rank+(a?r.minlen:-r.minlen)}))}(t,e)}function ae(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}function oe(t){switch(t.graph().ranker){case"network-simplex":default:ce(t);break;case"tight-tree":!function(t){_t(t),Et(t)}(t);break;case"longest-path":se(t)}}Vt.initLowLimValues=te,Vt.initCutValues=Qt,Vt.calcCutValue=Jt,Vt.leaveEdge=ne,Vt.enterEdge=ie,Vt.exchangeEdges=re;var se=_t;function ce(t){Vt(t)}var ue=n(2855),le=n(9886);function he(t){var e=st(t,"root",{},"_root"),n=function(t){var e={};function n(r,a){var o=t.children(r);o&&o.length&&i.Z(o,(function(t){n(t,a+1)})),e[r]=a}return i.Z(t.children(),(function(t){n(t,1)})),e}(t),r=V(ue.Z(n))-1,a=2*r+1;t.graph().nestingRoot=e,i.Z(t.edges(),(function(e){t.edge(e).minlen*=a}));var o=function(t){return le.Z(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;i.Z(t.children(),(function(i){fe(t,e,a,o,r,n,i)})),t.graph().nodeRankFactor=a}function fe(t,e,n,r,a,o,s){var c=t.children(s);if(c.length){var u=ht(t,"_bt"),l=ht(t,"_bb"),h=t.node(s);t.setParent(u,s),h.borderTop=u,t.setParent(l,s),h.borderBottom=l,i.Z(c,(function(i){fe(t,e,n,r,a,o,i);var c=t.node(i),h=c.borderTop?c.borderTop:i,f=c.borderBottom?c.borderBottom:i,d=c.borderTop?r:2*r,g=h!==f?1:a-o[s]+1;t.setEdge(u,h,{weight:d,minlen:g,nestingEdge:!0}),t.setEdge(f,l,{weight:d,minlen:g,nestingEdge:!0})})),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:a+o[s]})}else s!==e&&t.setEdge(e,s,{weight:0,minlen:n})}var de=n(6833);var ge=function(t){return(0,de.Z)(t,5)};function pe(t,e,n){var o=function(t){var e;for(;t.hasNode(e=r.Z("_root")););return e}(t),s=new l.k({compound:!0}).setGraph({root:o}).setDefaultNodeLabel((function(e){return t.node(e)}));return i.Z(t.nodes(),(function(r){var c=t.node(r),u=t.parent(r);(c.rank===e||c.minRank<=e&&e<=c.maxRank)&&(s.setNode(r),s.setParent(r,u||o),i.Z(t[n](r),(function(e){var n=e.v===r?e.w:e.v,i=s.edge(n,r),a=nt.Z(i)?0:i.weight;s.setEdge(n,r,{weight:t.edge(e).weight+a})})),a.Z(c,"minRank")&&s.setNode(r,{borderLeft:c.borderLeft[e],borderRight:c.borderRight[e]}))})),s}var be=n(9616);var we=function(t,e,n){for(var i=-1,r=t.length,a=e.length,o={};++ie||a&&o&&c&&!s&&!u||i&&o&&c||!n&&c||!r)return 1;if(!i&&!a&&!u&&t=s?c:c*("desc"==n[i]?-1:1)}return t.index-e.index};var Ce=function(t,e,n){e=e.length?(0,ve.Z)(e,(function(t){return(0,I.Z)(t)?function(e){return(0,xe.Z)(e,1===t.length?t[0]:t)}:t})):[X.Z];var i=-1;e=(0,ve.Z)(e,(0,Ae.Z)(tt.Z));var r=(0,ke.Z)(t,(function(t,n,r){return{criteria:(0,ve.Z)(e,(function(e){return e(t)})),index:++i,value:t}}));return _e(r,(function(t,e){return Te(t,e,n)}))},Se=(0,q.Z)((function(t,e){if(null==t)return[];var n=e.length;return n>1&&(0,H.Z)(t,e[0],e[1])?e=[]:n>2&&(0,H.Z)(e[0],e[1],e[2])&&(e=[e[0]]),Ce(t,(0,ye.Z)(e,1),[])}));function Ie(t,e){for(var n=0,i=1;i0;)e%2&&(n+=l[e+1]),l[e=e-1>>1]+=t.weight;h+=t.weight*n}))),h}function De(t,e){var n={};return i.Z(t,(function(t,e){var i=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};nt.Z(t.barycenter)||(i.barycenter=t.barycenter,i.weight=t.weight)})),i.Z(e.edges(),(function(t){var e=n[t.v],i=n[t.w];nt.Z(e)||nt.Z(i)||(i.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){e.merged||(nt.Z(e.barycenter)||nt.Z(t.barycenter)||e.barycenter>=t.barycenter)&&function(t,e){var n=0,i=0;t.weight&&(n+=t.barycenter*t.weight,i+=t.weight);e.weight&&(n+=e.barycenter*e.weight,i+=e.weight);t.vs=e.vs.concat(t.vs),t.barycenter=n/i,t.weight=i,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function r(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),i.Z(a.in.reverse(),n(a)),i.Z(a.out,r(a))}return c.Z(Ft.Z(e,(function(t){return!t.merged})),(function(t){return G.Z(t,["vs","i","barycenter","weight"])}))}(Ft.Z(n,(function(t){return!t.indegree})))}function Oe(t,e){var n,r=function(t,e){var n={lhs:[],rhs:[]};return i.Z(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n}(t,(function(t){return a.Z(t,"barycenter")})),o=r.lhs,c=Se(r.rhs,(function(t){return-t.i})),u=[],l=0,h=0,f=0;o.sort((n=!!e,function(t,e){return t.barycentere.barycenter?1:n?e.i-t.i:t.i-e.i})),f=Le(u,c,f),i.Z(o,(function(t){f+=t.vs.length,u.push(t.vs),l+=t.barycenter*t.weight,h+=t.weight,f=Le(u,c,f)}));var d={vs:s.Z(u)};return h&&(d.barycenter=l/h,d.weight=h),d}function Le(t,e,n){for(var i;e.length&&(i=Q(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}function Ne(t,e,n,r){var o=t.children(e),u=t.node(e),l=u?u.borderLeft:void 0,h=u?u.borderRight:void 0,f={};l&&(o=Ft.Z(o,(function(t){return t!==l&&t!==h})));var d=function(t,e){return c.Z(e,(function(e){var n=t.inEdges(e);if(n.length){var i=le.Z(n,(function(e,n){var i=t.edge(n),r=t.node(n.v);return{sum:e.sum+i.weight*r.order,weight:e.weight+i.weight}}),{sum:0,weight:0});return{v:e,barycenter:i.sum/i.weight,weight:i.weight}}return{v:e}}))}(t,o);i.Z(d,(function(e){if(t.children(e.v).length){var i=Ne(t,e.v,n,r);f[e.v]=i,a.Z(i,"barycenter")&&(o=e,s=i,nt.Z(o.barycenter)?(o.barycenter=s.barycenter,o.weight=s.weight):(o.barycenter=(o.barycenter*o.weight+s.barycenter*s.weight)/(o.weight+s.weight),o.weight+=s.weight))}var o,s}));var g=De(d,n);!function(t,e){i.Z(t,(function(t){t.vs=s.Z(t.vs.map((function(t){return e[t]?e[t].vs:t})))}))}(g,f);var p=Oe(g,r);if(l&&(p.vs=s.Z([l,p.vs,h]),t.predecessors(l).length)){var b=t.node(t.predecessors(l)[0]),w=t.node(t.predecessors(h)[0]);a.Z(p,"barycenter")||(p.barycenter=0,p.weight=0),p.barycenter=(p.barycenter*p.weight+b.order+w.order)/(p.weight+2),p.weight+=2}return p}function Pe(t){var e=ft(t),n=Be(t,u.Z(1,e+1),"inEdges"),r=Be(t,u.Z(e-1,-1,-1),"outEdges"),o=function(t){var e={},n=Ft.Z(t.nodes(),(function(e){return!t.children(e).length})),r=V(c.Z(n,(function(e){return t.node(e).rank}))),o=c.Z(u.Z(r+1),(function(){return[]})),s=Se(n,(function(e){return t.node(e).rank}));return i.Z(s,(function n(r){if(!a.Z(e,r)){e[r]=!0;var s=t.node(r);o[s.rank].push(r),i.Z(t.successors(r),n)}})),o}(t);Re(t,o);for(var s,l=Number.POSITIVE_INFINITY,h=0,f=0;f<4;++h,++f){Fe(h%2?n:r,h%4>=2);var d=Ie(t,o=lt(t));dc||u>e[r].lim));a=r,r=i;for(;(r=t.parent(r))!==a;)s.push(r);return{path:o.concat(s.reverse()),lca:a}}(t,e,r.v,r.w),o=a.path,s=a.lca,c=0,u=o[c],l=!0;n!==r.w;){if(i=t.node(n),l){for(;(u=o[c])!==s&&t.node(u).maxRankn){var i=e;e=n,n=i}var r=t[e];r||(t[e]=r={}),r[n]=!0}function Ge(t,e,n){if(e>n){var i=e;e=n,n=i}return a.Z(t[e],n)}function Ye(t,e,n,r,o){var s={},c=function(t,e,n,r){var o=new l.k,s=t.graph(),c=function(t,e,n){return function(i,r,o){var s,c=i.node(r),u=i.node(o),l=0;if(l+=c.width/2,a.Z(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":s=-c.width/2;break;case"r":s=c.width/2}if(s&&(l+=n?s:-s),s=0,l+=(c.dummy?e:t)/2,l+=(u.dummy?e:t)/2,l+=u.width/2,a.Z(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":s=u.width/2;break;case"r":s=-u.width/2}return s&&(l+=n?s:-s),s=0,l}}(s.nodesep,s.edgesep,r);return i.Z(e,(function(e){var r;i.Z(e,(function(e){var i=n[e];if(o.setNode(i),r){var a=n[r],s=o.edge(a,i);o.setEdge(a,i,Math.max(c(t,e,r),s||0))}r=e}))})),o}(t,e,n,o),u=o?"borderLeft":"borderRight";function h(t,e){for(var n=c.nodes(),i=n.pop(),r={};i;)r[i]?t(i):(r[i]=!0,n.push(i),n=n.concat(e(i))),i=n.pop()}return h((function(t){s[t]=c.inEdges(t).reduce((function(t,e){return Math.max(t,s[e.v]+c.edge(e))}),0)}),c.predecessors.bind(c)),h((function(e){var n=c.outEdges(e).reduce((function(t,e){return Math.min(t,s[e.w]-c.edge(e))}),Number.POSITIVE_INFINITY),i=t.node(e);n!==Number.POSITIVE_INFINITY&&i.borderType!==u&&(s[e]=Math.max(s[e],n))}),c.successors.bind(c)),i.Z(r,(function(t){s[t]=s[n[t]]})),s}function Ze(t){var e,n=lt(t),r=U(He(t,n),function(t,e){var n={};function r(e,r,a,o,s){var c;i.Z(u.Z(r,a),(function(r){c=e[r],t.node(c).dummy&&i.Z(t.predecessors(c),(function(e){var i=t.node(e);i.dummy&&(i.orders)&&Ue(n,e,c)}))}))}return le.Z(e,(function(e,n){var a,o=-1,s=0;return i.Z(n,(function(i,c){if("border"===t.node(i).dummy){var u=t.predecessors(i);u.length&&(a=t.node(u[0]).order,r(n,s,c,o,a),s=c,o=a)}r(n,s,n.length,a,e.length)})),n})),n}(t,n)),a={};i.Z(["u","d"],(function(o){e="u"===o?n:ue.Z(n).reverse(),i.Z(["l","r"],(function(n){"r"===n&&(e=c.Z(e,(function(t){return ue.Z(t).reverse()})));var s=("u"===o?t.predecessors:t.successors).bind(t),u=function(t,e,n,r){var a={},o={},s={};return i.Z(e,(function(t){i.Z(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),i.Z(e,(function(t){var e=-1;i.Z(t,(function(t){var i=r(t);if(i.length){i=Se(i,(function(t){return s[t]}));for(var c=(i.length-1)/2,u=Math.floor(c),l=Math.ceil(c);u<=l;++u){var h=i[u];o[t]===t&&e-1};var y=function(t,e,n){for(var i=-1,r=null==t?0:t.length;++i=200){var u=e?null:E(t);if(u)return(0,_.Z)(u);o=!1,r=v.Z,c=new d.Z}else c=e?[]:s;t:for(;++i1?i.setNode(t,e):i.setNode(t)})),this}setNode(t,e){return i.Z(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=D,this._children[t]={},this._children["\0"][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return i.Z(this._nodes,t)}removeNode(t){var e=this;if(i.Z(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],u.Z(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),u.Z(o.Z(this._in[t]),n),delete this._in[t],delete this._preds[t],u.Z(o.Z(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(l.Z(e))e=D;else{for(var n=e+="";!l.Z(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==D)return e}}children(t){if(l.Z(t)&&(t=D),this._isCompound){var e=this._children[t];if(e)return o.Z(e)}else{if(t===D)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return o.Z(e)}successors(t){var e=this._sucs[t];if(e)return o.Z(e)}neighbors(t){var e=this.predecessors(t);if(e)return S(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;u.Z(this._nodes,(function(n,i){t(i)&&e.setNode(i,n)})),u.Z(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};function r(t){var a=n.parent(t);return void 0===a||e.hasNode(a)?(i[t]=a,a):a in i?i[a]:r(a)}return this._isCompound&&u.Z(e.nodes(),(function(t){e.setParent(t,r(t))})),e}setDefaultEdgeLabel(t){return a.Z(t)||(t=r.Z(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return I.Z(this._edgeObjs)}setPath(t,e){var n=this,i=arguments;return M.Z(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this}setEdge(){var t,e,n,r,a=!1,o=arguments[0];"object"==typeof o&&null!==o&&"v"in o?(t=o.v,e=o.w,n=o.name,2===arguments.length&&(r=arguments[1],a=!0)):(t=o,e=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],a=!0)),t=""+t,e=""+e,l.Z(n)||(n=""+n);var s=P(this._isDirected,t,e,n);if(i.Z(this._edgeLabels,s))return a&&(this._edgeLabels[s]=r),this;if(!l.Z(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[s]=a?r:this._defaultEdgeLabelFn(t,e,n);var c=function(t,e,n,i){var r=""+e,a=""+n;if(!t&&r>a){var o=r;r=a,a=o}var s={v:r,w:a};i&&(s.name=i);return s}(this._isDirected,t,e,n);return t=c.v,e=c.w,Object.freeze(c),this._edgeObjs[s]=c,L(this._preds[e],t),L(this._sucs[t],e),this._in[e][s]=c,this._out[t][s]=c,this._edgeCount++,this}edge(t,e,n){var i=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n);return this._edgeLabels[i]}hasEdge(t,e,n){var r=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n);return i.Z(this._edgeLabels,r)}removeEdge(t,e,n){var i=1===arguments.length?B(this._isDirected,arguments[0]):P(this._isDirected,t,e,n),r=this._edgeObjs[i];return r&&(t=r.v,e=r.w,delete this._edgeLabels[i],delete this._edgeObjs[i],N(this._preds[e],t),N(this._sucs[t],e),delete this._in[e][i],delete this._out[t][i],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var i=I.Z(n);return e?s.Z(i,(function(t){return t.v===e})):i}}outEdges(t,e){var n=this._out[t];if(n){var i=I.Z(n);return e?s.Z(i,(function(t){return t.w===e})):i}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}function L(t,e){t[e]?t[e]++:t[e]=1}function N(t,e){--t[e]||delete t[e]}function P(t,e,n,i){var r=""+e,a=""+n;if(!t&&r>a){var o=r;r=a,a=o}return r+""+a+""+(l.Z(i)?"\0":i)}function B(t,e){return P(t,e.v,e.w,e.name)}O.prototype._nodeCount=0,O.prototype._edgeCount=0},8066:function(t,e,n){"use strict";n.d(e,{k:function(){return i.k}});var i=n(8612)},835:function(t,e,n){"use strict";n.d(e,{c:function(){return s}});var i=n(9789),r=n(6833);var a=function(t){return(0,r.Z)(t,4)},o=n(8076);n(8612);function s(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:c(t),edges:u(t)};return i.Z(t.graph())||(e.value=a(t.graph())),e}function c(t){return o.Z(t.nodes(),(function(e){var n=t.node(e),r=t.parent(e),a={v:e};return i.Z(n)||(a.value=n),i.Z(r)||(a.parent=r),a}))}function u(t){return o.Z(t.edges(),(function(e){var n=t.edge(e),r={v:e.v,w:e.w};return i.Z(e.name)||(r.name=e.name),i.Z(n)||(r.value=n),r}))}},5446:function(t,e,n){"use strict";n.r(e);function i(t,e){var n={};return e.forEach((function(e){Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e])})),n}var r={assign:function(t){for(var e,n=1;n=0,wasm:e.indexOf("wasm")>=0};r.call(this,n),this.features={js:n.js,wasm:n.wasm&&this.has_wasm()},this.use(a),this.use(o)}i(s,r),s.prototype.resizeAndUnsharp=function(t,e){var n=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(n,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),n},e.exports=s},{"./mm_resize":4,"./mm_unsharp_mask":9,inherits:19,multimath:20}],2:[function(t,e,n){function i(t){return t<0?0:t>255?255:t}function r(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}function a(t,e,n,r,a,o){var s,c,u,l,h,f,d,g,p,b,w,m=0,y=0;for(p=0;p0;d--)l=l+(w=o[h++])*t[g+3]|0,u=u+w*t[g+2]|0,c=c+w*t[g+1]|0,s=s+w*t[g]|0,g=g+4|0;e[y+3]=i(l+8192>>14),e[y+2]=i(u+8192>>14),e[y+1]=i(c+8192>>14),e[y]=i(s+8192>>14),y=y+4*r|0}y=4*(p+1)|0,m=(p+1)*n*4|0}}e.exports={convolveHorizontally:r,convolveVertically:a}},{}],3:[function(t,e,n){e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs="},{}],4:[function(t,e,n){e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,n){var i=t("./resize_filter_gen"),r=t("./convolve").convolveHorizontally,a=t("./convolve").convolveVertically;function o(t,e,n){for(var i=3,r=e*n*4|0;i>1]+=a(1-m),v=0;v0&&0===d[x];)x--;if(k=u+v,_=x-v+1,I[M++]=k,I[M++]=_,D)for(b=v;b<=x;b++)I[M++]=d[b];else I.set(d.subarray(v,x+1),M),M+=_}else I[M++]=0,I[M++]=0}return I}},{"./resize_filter_info":7}],7:[function(t,e,n){e.exports=[{win:.5,filter:function(t){return t>=-.5&&t<.5?1:0}},{win:1,filter:function(t){if(t<=-1||t>=1)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},{win:2,filter:function(t){if(t<=-2||t>=2)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},{win:3,filter:function(t){if(t<=-3||t>=3)return 0;if(t>-1.1920929e-7&&t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}}]},{}],8:[function(t,e,n){var i=t("./resize_filter_gen");function r(t,e,n){for(var i=3,r=e*n*4|0;i>8&255}}e.exports=function(t){var e=t.src,n=t.width,a=t.height,o=t.toWidth,c=t.toHeight,u=t.scaleX||t.toWidth/t.width,l=t.scaleY||t.toHeight/t.height,h=t.offsetX||0,f=t.offsetY||0,d=t.dest||new Uint8Array(o*c*4),g=void 0===t.quality?3:t.quality,p=t.alpha||!1,b=i(g,n,o,u,h),w=i(g,a,c,l,f),m=0,y=this.__align(m+Math.max(e.byteLength,d.byteLength)),v=this.__align(y+a*o*4),x=this.__align(v+b.byteLength),k=x+w.byteLength,_=this.__instance("resize",k),A=new Uint8Array(this.__memory.buffer),E=new Uint32Array(this.__memory.buffer),T=new Uint32Array(e.buffer);return E.set(T),s(b,A,v),s(w,A,x),(_.exports.convolveHV||_.exports._convolveHV)(v,x,y,n,a,o,c),new Uint32Array(d.buffer).set(new Uint32Array(this.__memory.buffer,0,c*o)),p||r(d,o,c),d}},{"./resize_filter_gen":6}],9:[function(t,e,n){e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,n){var i=t("glur/mono16");function r(t,e,n){for(var i,r,a,o,s=e*n,c=new Uint16Array(s),u=0;u=r&&i>=a?i:r>=a&&r>=i?r:a,c[u]=o<<8;return c}e.exports=function(t,e,n,a,o,s){var c,u,l,h,f;if(!(0===a||o<.5)){o>2&&(o=2);var d=r(t,e,n),g=new Uint16Array(d);i(g,e,n,o);for(var p=a/100*4096+.5|0,b=s<<8,w=e*n,m=0;m=b&&(l=((u=(u=(u=c+(p*h+2048>>12))>65280?65280:u)<0?0:u)<<12)/(c=0!==c?c:1)|0,t[f=4*m]=t[f]*l+2048>>12,t[f+1]=t[f+1]*l+2048>>12,t[f+2]=t[f+2]*l+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,n){e.exports=function(t,e,n,i,r,a){if(!(0===i||r<.5)){r>2&&(r=2);var o=e*n,s=4*o,c=2*o,u=2*o,l=4*Math.max(e,n),h=32,f=0,d=s,g=d+c,p=g+u,b=p+u,w=b+l,m=this.__instance("unsharp_mask",s+c+2*u+l+h,{exp:Math.exp}),y=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(y);var v=m.exports.hsv_v16||m.exports._hsv_v16;v(f,d,e,n),(v=m.exports.blurMono16||m.exports._blurMono16)(d,g,p,b,w,e,n,r),(v=m.exports.unsharp||m.exports._unsharp)(f,f,d,g,e,n,i,a),y.set(new Uint32Array(this.__memory.buffer,0,o))}}},{}],12:[function(t,e,n){e.exports="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"},{}],13:[function(t,e,n){var i=100;function r(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}r.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},r.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),i))},r.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(n){return!(e-n.lastUsed>t.idle&&(n.destroy(),1))})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),i):this.timeoutId=0},e.exports=r},{}],14:[function(t,e,n){var i=2;e.exports=function(t,e,n,r,a,o){var s=n/t,c=r/e,u=(2*o+i+1)/a;if(u>.5)return[[n,r]];var l=Math.ceil(Math.log(Math.min(s,c))/Math.log(u));if(l<=1)return[[n,r]];for(var h=[],f=0;f=t.toWidth&&(s=t.toWidth-e),(n=o-t.destTileBorder)<0&&(n=0),n+(c=o+f+t.destTileBorder-n)>=t.toHeight&&(c=t.toHeight-n),d={toX:e,toY:n,toWidth:s,toHeight:c,toInnerX:i,toInnerY:o,toInnerWidth:h,toInnerHeight:f,offsetX:e/u-r(e/u),offsetY:n/l-r(n/l),scaleX:u,scaleY:l,x:r(e/u),y:r(n/l),width:a(s/u),height:a(c/l)},g.push(d);return g}},{}],16:[function(t,e,n){function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,n=[];function i(){e=0;p--)c=s*b+o*w+u*m+l*y,l=u,u=c,o=s,s=t[h],e[f]=n[d]+u,h--,d--,f-=a}}function h(t,e,n,i){if(i){var r=new Uint16Array(t.length),a=new Float32Array(Math.max(e,n)),o=u(i);l(t,r,a,o,e,n),l(r,t,a,o,n,e)}}e.exports=h},{}],19:[function(t,e,n){"function"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},{}],20:[function(t,e,n){var i=t("object-assign"),r=t("./lib/base64decode"),a=t("./lib/wa_detect"),o={js:!0,wasm:!0};function s(t){if(!(this instanceof s))return new s(t);var e=i({},o,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}s.prototype.has_wasm=a,s.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},s.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var n=t.__modules[e];return t.options.wasm&&t.has_wasm()&&n.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(n.wasm_src)).then((function(n){t.__wasm[e]=n})):null}))).then((function(){return t})),this.__init_promise},s.prototype.__base64decode=r,s.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e>2),a=0,o=0,s=0;s>16&255,r[o++]=a>>8&255,r[o++]=255&a),a=a<<6|i.indexOf(e.charAt(s));var c=n%4*6;return 0===c?(r[o++]=a>>16&255,r[o++]=a>>8&255,r[o++]=255&a):18===c?(r[o++]=a>>10&255,r[o++]=a>>2&255):12===c&&(r[o++]=a>>4&255),r}},{}],22:[function(t,e,n){var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],23:[function(t,e,n){var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function o(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function s(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}e.exports=s()?Object.assign:function(t,e){for(var n,s,c=o(t),u=1;ut.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0)}catch(t){}var y=1;"undefined"!=typeof navigator&&(y=Math.min(navigator.hardwareConcurrency||1,4));var v={tile:1024,concurrency:y,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var n=document.createElement("canvas");return n.width=t,n.height=e,n}},x={quality:3,alpha:!1,unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},k=!1,_=!1,A=!1,E=!1,T=!1;function C(){return{value:l(g),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function S(t){if(!(this instanceof S))return new S(t);this.options=u({},v,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=w[e]||d.limiter(this.options.concurrency),w[e]||(w[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}S.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),k=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?_=!0:this.debug("ImageBitmap does not support .close(), disabled"));var n=this.options.features.slice();if(n.indexOf("all")>=0&&(n=["cib","wasm","js","ww"]),this.__requested_features=n,this.__mathlib=new h(n),n.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));w[i]?this.__workersPool=w[i]:(this.__workersPool=new f(C,this.options.idle),w[i]=this.__workersPool)}catch(t){}var r,a,o=this.__mathlib.init().then((function(t){u(e.features,t.features)}));r=_?d.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&n.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):n.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),A=d.can_use_canvas(this.options.createCanvas),a=(a=_&&k&&-1!==n.indexOf("ww")?d.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){E=t}));var s=d.cib_can_use_region().then((function(t){T=t}));return this.__initPromise=Promise.all([o,r,a,s]).then((function(){return e})),this.__initPromise},S.prototype.__invokeResize=function(t,e){var n=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return n.features.ww?new Promise((function(i,r){var a=n.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return r(t)})),a.value.onmessage=function(t){a.release(),t.data.err?r(t.data.err):i(t.data)};var o=[];t.src&&o.push(t.src.buffer),t.srcBitmap&&o.push(t.srcBitmap),a.value.postMessage({opts:t,features:n.__requested_features,preload:{wasm_nodule:n.__mathlib.__}},o)})):{data:n.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},S.prototype.__extractTileData=function(t,e,n,i,r){if(this.features.ww&&E&&(d.isCanvas(e)||T))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return r.srcBitmap=t,r}));if(d.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d",{alpha:Boolean(n.alpha)})),this.debug("Get tile pixel data"),r.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,r;this.debug("Draw tile imageBitmap/image to temporary canvas");var a=this.options.createCanvas(t.width,t.height),o=a.getContext("2d",{alpha:Boolean(n.alpha)});return o.globalCompositeOperation="copy",o.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),r.src=o.getImageData(0,0,t.width,t.height).data,a.width=a.height=0,r},S.prototype.__landTileData=function(t,e,n){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return n.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(k)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=n.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var r=i.data.length-1;r>=0;r--)i.data[r]=e.data[r];return this.debug("Draw tile"),m?n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):n.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},S.prototype.__tileAndResize=function(t,e,n){var i=this,r={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null},a=function(e){return i.__limit((function(){if(n.canceled)return n.cancelToken;var a={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,quality:n.quality,alpha:n.alpha,unsharpAmount:n.unsharpAmount,unsharpRadius:n.unsharpRadius,unsharpThreshold:n.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(a).then((function(a){return i.__extractTileData(e,t,n,r,a)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,n)})).then((function(t){return n.canceled?n.cancelToken:(r.srcImageData=null,i.__landTileData(e,t,r))}))}))};return Promise.resolve().then((function(){if(r.toCtx=e.getContext("2d",{alpha:Boolean(n.alpha)}),d.isCanvas(t))return null;if(d.isImageBitmap(t))return r.srcImageBitmap=t,r.isImageBitmapReused=!0,null;if(d.isImage(t))return _?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){r.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(n.canceled)return n.cancelToken;i.debug("Calculate tiles");var t=b({width:n.width,height:n.height,srcTileSize:i.options.tile,toWidth:n.toWidth,toHeight:n.toHeight,destTileBorder:n.__destTileBorder}).map((function(t){return a(t)}));function o(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(t).then((function(){return i.debug("Finished!"),o(r),e}),(function(t){throw o(r),t}))}))},S.prototype.__processStages=function(t,e,n,r){var a=this;if(r.canceled)return r.cancelToken;var o,s=i(t.shift(),2),c=s[0],l=s[1],h=0===t.length;return r=u({},r,{toWidth:c,toHeight:l,quality:h?r.quality:Math.min(1,r.quality)}),h||(o=this.options.createCanvas(c,l)),this.__tileAndResize(e,h?n:o,r).then((function(){return h?n:(r.width=c,r.height=l,a.__processStages(t,o,n,r))})).then((function(t){return o&&(o.width=o.height=0),t}))},S.prototype.__resizeViaCreateImageBitmap=function(t,e,n){var i=this,r=e.getContext("2d",{alpha:Boolean(n.alpha)});return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:n.toWidth,resizeHeight:n.toHeight,resizeQuality:d.cib_quality_name(n.quality)}).then((function(t){if(n.canceled)return n.cancelToken;if(!n.unsharpAmount)return r.drawImage(t,0,0),t.close(),r=null,i.debug("Finished!"),e;i.debug("Unsharp result");var a=i.options.createCanvas(n.toWidth,n.toHeight),o=a.getContext("2d",{alpha:Boolean(n.alpha)});o.drawImage(t,0,0),t.close();var s=o.getImageData(0,0,n.toWidth,n.toHeight);return i.__mathlib.unsharp_mask(s.data,n.toWidth,n.toHeight,n.unsharpAmount,n.unsharpRadius,n.unsharpThreshold),r.putImageData(s,0,0),a.width=a.height=0,s=o=a=r=null,i.debug("Finished!"),e}))},S.prototype.resize=function(t,e,n){var i=this;this.debug("Start resize...");var r=u({},x);if(isNaN(n)?n&&(r=u(r,n)):r=u(r,{quality:n}),r.toWidth=e.width,r.toHeight=e.height,r.width=t.naturalWidth||t.width,r.height=t.naturalHeight||t.height,0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));r.unsharpRadius>2&&(r.unsharpRadius=2),r.canceled=!1,r.cancelToken&&(r.cancelToken=r.cancelToken.then((function(t){throw r.canceled=!0,t}),(function(t){throw r.canceled=!0,t})));var a=3;return r.__destTileBorder=Math.ceil(Math.max(a,2.5*r.unsharpRadius|0)),this.init().then((function(){if(r.canceled)return r.cancelToken;if(i.features.cib)return i.__resizeViaCreateImageBitmap(t,e,r);if(!A){var n=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw n.code="ERR_GET_IMAGE_DATA",n}var a=p(r.width,r.height,r.toWidth,r.toHeight,i.options.tile,r.__destTileBorder);return i.__processStages(a,t,e,r)}))},S.prototype.resizeBuffer=function(t){var e=this,n=u({},x,t);return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(n)}))},S.prototype.toBlob=function(t,e,n){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,n);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:n}));else{for(var r=atob(t.toDataURL(e,n).split(",")[1]),a=r.length,o=new Uint8Array(a),s=0;s0;n--)e="0"+e;return"0x"+e}function i(t){try{return decodeURIComponent(escape(t))}catch(e){return t}}function r(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}function a(t,n,i){this.input=t.subarray(n,i),this.start=n;var r=String.fromCharCode.apply(null,this.input.subarray(0,4));if("II*\0"!==r&&"MM\0*"!==r)throw e("invalid TIFF signature","EBADDATA");this.big_endian="M"===r[0]}a.prototype.each=function(t){this.aborted=!1;var e=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:e}];this.ifds_to_read.length>0&&!this.aborted;){var n=this.ifds_to_read.shift();n.offset&&this.scan_ifd(n.id,n.offset,t)}},a.prototype.filter=function(t){var n={ifd0:{id:0,entries:[]}};this.each((function(e){(!1!==t(e)||e.is_subifd_link)&&(e.is_subifd_link&&1!==e.count&&4!==e.format||(n["ifd"+e.ifd]||(n["ifd"+e.ifd]={id:e.ifd,entries:[]}),n["ifd"+e.ifd].entries.push(e)))})),delete n.ifd1;var i=8;Object.keys(n).forEach((function(t){i+=2,n[t].entries.forEach((function(t){i+=12+(t.data_length>4?2*Math.ceil(t.data_length/2):0)})),i+=4})),this.output=new Uint8Array(i),this.output[0]=this.output[1]=(this.big_endian?"M":"I").charCodeAt(0),this.write_uint16(2,42);var r=8,a=this;if(this.write_uint32(4,r),Object.keys(n).forEach((function(t){n[t].written_offset=r;var e=r,i=e+2+12*n[t].entries.length+4;r=i,a.write_uint16(e,n[t].entries.length),n[t].entries.sort((function(t,e){return t.tag-e.tag})).forEach((function(t,i){var o=e+2+12*i;a.write_uint16(o,t.tag),a.write_uint16(o+2,t.format),a.write_uint32(o+4,t.count),t.is_subifd_link?n["ifd"+t.tag]&&(n["ifd"+t.tag].link_offset=o+8):t.data_length<=4?a.output.set(a.input.subarray(t.data_offset-a.start,t.data_offset-a.start+4),o+8):(a.write_uint32(o+8,r),a.output.set(a.input.subarray(t.data_offset-a.start,t.data_offset-a.start+t.data_length),r),r+=2*Math.ceil(t.data_length/2))}));var o=n["ifd"+(n[t].id+1)];o&&(o.link_offset=i-4)})),Object.keys(n).forEach((function(t){n[t].written_offset&&n[t].link_offset&&a.write_uint32(n[t].link_offset,n[t].written_offset)})),this.output.length!==r)throw e("internal error: incorrect buffer size allocated");return this.output},a.prototype.read_uint16=function(t){var n=this.input;if(t+2>n.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?256*n[t]+n[t+1]:n[t]+256*n[t+1]},a.prototype.read_uint32=function(t){var n=this.input;if(t+4>n.length)throw e("unexpected EOF","EBADDATA");return this.big_endian?16777216*n[t]+65536*n[t+1]+256*n[t+2]+n[t+3]:n[t]+256*n[t+1]+65536*n[t+2]+16777216*n[t+3]},a.prototype.write_uint16=function(t,e){var n=this.output;this.big_endian?(n[t]=e>>>8&255,n[t+1]=255&e):(n[t]=255&e,n[t+1]=e>>>8&255)},a.prototype.write_uint32=function(t,e){var n=this.output;this.big_endian?(n[t]=e>>>24&255,n[t+1]=e>>>16&255,n[t+2]=e>>>8&255,n[t+3]=255&e):(n[t]=255&e,n[t+1]=e>>>8&255,n[t+2]=e>>>16&255,n[t+3]=e>>>24&255)},a.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},a.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},a.prototype.exif_format_read=function(t,e){var n;switch(t){case 1:case 2:return n=this.input[e];case 6:return(n=this.input[e])|33554430*(128&n);case 3:return n=this.read_uint16(e);case 8:return(n=this.read_uint16(e))|131070*(32768&n);case 4:return n=this.read_uint32(e);case 9:return 0|(n=this.read_uint32(e));default:return null}},a.prototype.scan_ifd=function(t,n,r){var a=this.read_uint16(n);n+=2;for(var o=0;othis.input.length)throw e("unexpected EOF","EBADDATA");for(var g=[],p=f,b=0;b0&&(this.ifds_to_read.push({id:s,offset:g[0]}),d=!0),!1===r({is_big_endian:this.big_endian,ifd:t,tag:s,format:c,count:u,entry_offset:n+this.start,data_length:h,data_offset:f+this.start,value:g,is_subifd_link:d}))return void(this.aborted=!0);n+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(n)})},t.exports.is_jpeg=function(t){return t.length>=4&&255===t[0]&&216===t[1]&&255===t[2]},t.exports.jpeg_segments_each=function(i,a){if(!r(i))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof a)throw e("Invalid argument (on_segment), Function expected","EINVAL");if(!t.exports.is_jpeg(i))throw e("Unknown file format","ENOTJPEG");for(var o=0,s=i.length,c=!1;;){var u,l;if(o+1>=s)throw e("Unexpected EOF","EBADDATA");var h=i[o],f=i[o+1];if(255===h&&255===f)u=255,l=1;else if(255===h&&0!==f){if(l=2,208<=(u=f)&&u<=217||1===u);else{if(o+3>=s)throw e("Unexpected EOF","EBADDATA");if((l+=256*i[o+2]+i[o+3])<2)throw e("Invalid segment length","EBADDATA");if(o+l-1>=s)throw e("Unexpected EOF","EBADDATA")}c&&(u>=208&&u<=215||(c=!1)),218===u&&(c=!0)}else{if(!c)throw e("Unexpected byte at segment start: "+n(h)+" (offset "+n(o)+")","EBADDATA");for(var d=o+1;;d++){if(d>=s)throw e("Unexpected EOF","EBADDATA");if(255===i[d]){if(d+1>=s)throw e("Unexpected EOF","EBADDATA");if(0!==i[d+1]){u=0,l=d-o;break}}}}if(!1===a({code:u,offset:o,length:l}))break;if(217===u)break;o+=l}},t.exports.jpeg_segments_filter=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_segment), Function expected","EINVAL");var a=[],o=0;t.exports.jpeg_segments_each(n,(function(t){var e=i(t);if(r(e))a.push({data:e}),o+=e.length;else if(Array.isArray(e))e.filter(r).forEach((function(t){a.push({data:t}),o+=t.length}));else if(!1!==e){var n={start:t.offset,end:t.offset+t.length};a.length>0&&a[a.length-1].end===n.start?a[a.length-1].end=n.end:a.push(n),o+=t.length}}));var s=new Uint8Array(o),c=0;return a.forEach((function(t){var e=t.data||n.subarray(t.start,t.end);s.set(e,c),c+=e.length})),s},t.exports.jpeg_exif_tags_each=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_exif_entry), Function expected","EINVAL");t.exports.jpeg_segments_each(n,(function(t){return 218!==t.code&&(225===t.code&&t.length>=10&&69===n[t.offset+4]&&120===n[t.offset+5]&&105===n[t.offset+6]&&102===n[t.offset+7]&&0===n[t.offset+8]&&0===n[t.offset+9]?(new a(n,t.offset+10,t.offset+t.length).each(i),!1):void 0)}))},t.exports.jpeg_exif_tags_filter=function(n,i){if(!r(n))throw e("Invalid argument (jpeg_bin), Uint8Array expected","EINVAL");if("function"!=typeof i)throw e("Invalid argument (on_exif_entry), Function expected","EINVAL");var o=!1;return t.exports.jpeg_segments_filter(n,(function(t){if(!o&&(218===t.code&&(o=!0),225===t.code&&t.length>=10&&69===n[t.offset+4]&&120===n[t.offset+5]&&105===n[t.offset+6]&&102===n[t.offset+7]&&0===n[t.offset+8]&&0===n[t.offset+9])){var e=new a(n,t.offset+10,t.offset+t.length).filter(i);if(!e)return!1;var r=new Uint8Array(10);return r.set(n.slice(t.offset,t.offset+10)),r[2]=e.length+8>>>8&255,r[3]=e.length+8&255,o=!0,[r,e]}}))},t.exports.jpeg_add_comment=function(e,n){var i=!1,r=0;return t.exports.jpeg_segments_filter(e,(function(t){if(!(1===++r&&216===t.code||2===r&&224===t.code||i)){n=function(t){try{return unescape(encodeURIComponent(t))}catch(e){return t}}(n);var a=new Uint8Array(5+n.length),o=0;return a[o++]=255,a[o++]=254,a[o++]=n.length+3>>>8&255,a[o++]=n.length+3&255,n.split("").forEach((function(t){a[o++]=255&t.charCodeAt(0)})),a[o++]=0,i=!0,[a,e.subarray(t.offset,t.offset+t.length)]}}))}}));function u(t){return this._getUint8Array(t.blob).then((function(e){if(t.is_jpeg=c.is_jpeg(e),!t.is_jpeg)return Promise.resolve(t);t.orig_blob=t.blob;try{var n,i;if(c.jpeg_exif_tags_each(e,(function(e){if(0===e.ifd&&274===e.tag&&Array.isArray(e.value))return t.orientation=e.value[0]||1,n=e.is_big_endian,i=e.data_offset,!1})),i){var r=n?new Uint8Array([0,1]):new Uint8Array([1,0]);t.blob=new Blob([e.slice(0,i),r,e.slice(i+2)],{type:"image/jpeg"})}}catch(t){}return t}))}function l(t){if(!t.is_jpeg)return Promise.resolve(t);var e,n=t.orientation-1;if(!n)return Promise.resolve(t);var i=(e=4&n?this.pica.options.createCanvas(t.out_canvas.height,t.out_canvas.width):this.pica.options.createCanvas(t.out_canvas.width,t.out_canvas.height)).getContext("2d");return i.save(),1&n&&i.transform(-1,0,0,1,e.width,0),2&n&&i.transform(-1,0,0,-1,e.width,e.height),4&n&&i.transform(0,1,1,0,0,0),i.drawImage(t.out_canvas,0,0),i.restore(),t.out_canvas.width=t.out_canvas.height=0,t.out_canvas=e,Promise.resolve(t)}function h(t){return t.is_jpeg?Promise.all([this._getUint8Array(t.blob),this._getUint8Array(t.out_blob)]).then((function(e){var n=e[0],i=e[1];if(!c.is_jpeg(n))return Promise.resolve(t);var r=[];return c.jpeg_segments_each(n,(function(t){if(218===t.code)return!1;r.push(t)})),r=r.filter((function(t){return 226!==t.code&&(t.code>=224&&t.code<240||254===t.code)})).map((function(t){return n.slice(t.offset,t.offset+t.length)})),t.out_blob=new Blob([i.slice(0,2)].concat(r).concat([i.slice(20)]),{type:"image/jpeg"}),t})):Promise.resolve(t)}var f={jpeg_patch_exif:u,jpeg_rotate_canvas:l,jpeg_attach_orig_segments:h,assign:function(t){t.before("_blob_to_image",u),t.after("_transform",l),t.after("_create_blob",h)}};function d(t){if(!(this instanceof d))return new d(t);t=t||{},this.pica=t.pica||s({}),this.initialized=!1,this.utils=r}d.prototype.use=function(t){var e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},d.prototype.init=function(){this.use(f.assign)},d.prototype.toBlob=function(t,e){var n={blob:t,opts:r.assign({max:1/0},e)};return this.initialized||(this.init(),this.initialized=!0),Promise.resolve(n).then(this._blob_to_image).then(this._calculate_size).then(this._transform).then(this._cleanup).then(this._create_blob).then((function(t){return t.out_canvas.width=t.out_canvas.height=0,t.out_blob}))},d.prototype.toCanvas=function(t,e){var n={blob:t,opts:r.assign({max:1/0},e)};return this.initialized||(this.init(),this.initialized=!0),Promise.resolve(n).then(this._blob_to_image).then(this._calculate_size).then(this._transform).then(this._cleanup).then((function(t){return t.out_canvas}))},d.prototype.before=function(t,e){if(!this[t])throw new Error('Method "'+t+'" does not exist');if("function"!=typeof e)throw new Error('Invalid argument "fn", function expected');var n=this[t],i=this;return this[t]=function(t){return e.call(i,t).then((function(t){return n.call(i,t)}))},this},d.prototype.after=function(t,e){if(!this[t])throw new Error('Method "'+t+'" does not exist');if("function"!=typeof e)throw new Error('Invalid argument "fn", function expected');var n=this[t],i=this;return this[t]=function(t){return n.call(i,t).then((function(t){return e.call(i,t)}))},this},d.prototype._blob_to_image=function(t){var e=window.URL||window.webkitURL||window.mozURL||window.msURL;return t.image=document.createElement("img"),t.image_url=e.createObjectURL(t.blob),t.image.src=t.image_url,new Promise((function(e,n){t.image.onerror=function(){n(new Error("ImageBlobReduce: failed to create Image() from blob"))},t.image.onload=function(){e(t)}}))},d.prototype._calculate_size=function(t){var e=t.opts.max/Math.max(t.image.width,t.image.height);return e>1&&(e=1),t.transform_width=Math.max(Math.round(t.image.width*e),1),t.transform_height=Math.max(Math.round(t.image.height*e),1),t.scale_factor=e,Promise.resolve(t)},d.prototype._transform=function(t){t.out_canvas=this.pica.options.createCanvas(t.transform_width,t.transform_height),t.transform_width=null,t.transform_height=null;var e={alpha:"image/png"===t.blob.type};return this.utils.assign(e,this.utils.pick_pica_resize_options(t.opts)),this.pica.resize(t.image,t.out_canvas,e).then((function(){return t}))},d.prototype._cleanup=function(t){t.image.src="",t.image=null;var e=window.URL||window.webkitURL||window.mozURL||window.msURL;return e.revokeObjectURL&&e.revokeObjectURL(t.image_url),t.image_url=null,Promise.resolve(t)},d.prototype._create_blob=function(t){return this.pica.toBlob(t.out_canvas,t.blob.type).then((function(e){return t.out_blob=e,t}))},d.prototype._getUint8Array=function(t){return t.arrayBuffer?t.arrayBuffer().then((function(t){return new Uint8Array(t)})):new Promise((function(e,n){var i=new FileReader;i.readAsArrayBuffer(t),i.onload=function(){e(new Uint8Array(i.result))},i.onerror=function(){n(new Error("ImageBlobReduce: failed to load data from input blob")),i.abort()},i.onabort=function(){n(new Error("ImageBlobReduce: failed to load data from input blob (aborted)"))}}))},d.pica=s;var g=d;e.default=g},8318:function(t,e,n){"use strict";n.d(e,{Z:function(){return o}});var i=n(1022),r=n(898);var a=class{constructor(){this.type=r.w.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=r.w.ALL}is(t){return this.type===t}};var o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=r.w.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:n,l:r}=t;void 0===e&&(t.h=i.Z.channel.rgb2hsl(t,"h")),void 0===n&&(t.s=i.Z.channel.rgb2hsl(t,"s")),void 0===r&&(t.l=i.Z.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:n,b:r}=t;void 0===e&&(t.r=i.Z.channel.hsl2rgb(t,"r")),void 0===n&&(t.g=i.Z.channel.hsl2rgb(t,"g")),void 0===r&&(t.b=i.Z.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(r.w.HSL)||void 0===e?(this._ensureHSL(),i.Z.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(r.w.RGB)||void 0===e?(this._ensureRGB(),i.Z.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(r.w.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(r.w.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(r.w.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(r.w.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(r.w.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(r.w.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},9297:function(t,e,n){"use strict";n.d(e,{Z:function(){return p}});var i=n(8318),r=n(898);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const n=e[1],r=parseInt(n,16),o=n.length,s=o%4==0,c=o>4,u=c?1:17,l=c?8:4,h=s?0:-1,f=c?255:15;return i.Z.set({r:(r>>l*(h+3)&f)*u,g:(r>>l*(h+2)&f)*u,b:(r>>l*(h+1)&f)*u,a:s?(r&f)*u/255:1},t)},stringify:t=>{const{r:e,g:n,b:i,a:a}=t;return a<1?`#${r.Q[Math.round(e)]}${r.Q[Math.round(n)]}${r.Q[Math.round(i)]}${r.Q[Math.round(255*a)]}`:`#${r.Q[Math.round(e)]}${r.Q[Math.round(n)]}${r.Q[Math.round(i)]}`}};var o=a,s=n(1022);const c={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(c.hueRe);if(e){const[,t,n]=e;switch(n){case"grad":return s.Z.channel.clamp.h(.9*parseFloat(t));case"rad":return s.Z.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.Z.channel.clamp.h(360*parseFloat(t))}}return s.Z.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const n=t.match(c.re);if(!n)return;const[,r,a,o,u,l]=n;return i.Z.set({h:c._hue2deg(r),s:s.Z.channel.clamp.s(parseFloat(a)),l:s.Z.channel.clamp.l(parseFloat(o)),a:u?s.Z.channel.clamp.a(l?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{h:e,s:n,l:i,a:r}=t;return r<1?`hsla(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}%, ${s.Z.lang.round(i)}%, ${r})`:`hsl(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}%, ${s.Z.lang.round(i)}%)`}};var u=c;const l={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",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:"#ff00ff",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:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",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:"#ff0000",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",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=l.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const t in l.colors)if(l.colors[t]===e)return t}};var h=l;const f={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const n=t.match(f.re);if(!n)return;const[,r,a,o,c,u,l,h,d]=n;return i.Z.set({r:s.Z.channel.clamp.r(a?2.55*parseFloat(r):parseFloat(r)),g:s.Z.channel.clamp.g(c?2.55*parseFloat(o):parseFloat(o)),b:s.Z.channel.clamp.b(l?2.55*parseFloat(u):parseFloat(u)),a:h?s.Z.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:n,b:i,a:r}=t;return r<1?`rgba(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}, ${s.Z.lang.round(i)}, ${s.Z.lang.round(r)})`:`rgb(${s.Z.lang.round(e)}, ${s.Z.lang.round(n)}, ${s.Z.lang.round(i)})`}};var d=f;const g={format:{keyword:l,hex:o,rgb:f,rgba:f,hsl:c,hsla:c},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||d.parse(t)||u.parse(t)||h.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(r.w.HSL)||void 0===t.data.r?u.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?d.stringify(t):o.stringify(t)};var p=g},898:function(t,e,n){"use strict";n.d(e,{Q:function(){return r},w:function(){return a}});var i=n(1022);const r={};for(let t=0;t<=255;t++)r[t]=i.Z.unit.dec2hex(t);const a={ALL:0,RGB:1,HSL:2}},3836:function(t,e,n){"use strict";var i=n(1022),r=n(9297);e.Z=(t,e,n)=>{const a=r.Z.parse(t),o=a[e],s=i.Z.channel.clamp[e](o+n);return o!==s&&(a[e]=s),r.Z.stringify(a)}},5571:function(t,e,n){"use strict";var i=n(1022),r=n(9297);e.Z=(t,e)=>{const n=r.Z.parse(t);for(const t in e)n[t]=i.Z.channel.clamp[t](e[t]);return r.Z.stringify(n)}},733:function(t,e,n){"use strict";var i=n(3836);e.Z=(t,e)=>(0,i.Z)(t,"l",-e)},7471:function(t,e,n){"use strict";n.d(e,{Z:function(){return s}});var i=n(1022),r=n(9297);var a=t=>{const{r:e,g:n,b:a}=r.Z.parse(t),o=.2126*i.Z.channel.toLinear(e)+.7152*i.Z.channel.toLinear(n)+.0722*i.Z.channel.toLinear(a);return i.Z.lang.round(o)};var o=t=>a(t)>=.5;var s=t=>!o(t)},1778:function(t,e,n){"use strict";var i=n(3836);e.Z=(t,e)=>(0,i.Z)(t,"l",e)},852:function(t,e,n){"use strict";var i=n(1022),r=n(8318),a=n(9297),o=n(5571);e.Z=(t,e,n=0,s=1)=>{if("number"!=typeof t)return(0,o.Z)(t,{a:e});const c=r.Z.set({r:i.Z.channel.clamp.r(t),g:i.Z.channel.clamp.g(e),b:i.Z.channel.clamp.b(n),a:i.Z.channel.clamp.a(s)});return a.Z.stringify(c)}},1022:function(t,e,n){"use strict";n.d(e,{Z:function(){return r}});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t),hsl2rgb:({h:t,s:e,l:n},r)=>{if(!e)return 2.55*n;t/=360,e/=100;const a=(n/=100)<.5?n*(1+e):n+e-n*e,o=2*n-a;switch(r){case"r":return 255*i.hue2rgb(o,a,t+1/3);case"g":return 255*i.hue2rgb(o,a,t);case"b":return 255*i.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:n},i)=>{t/=255,e/=255,n/=255;const r=Math.max(t,e,n),a=Math.min(t,e,n),o=(r+a)/2;if("l"===i)return 100*o;if(r===a)return 0;const s=r-a;if("s"===i)return 100*(o>.5?s/(2-r-a):s/(r+a));switch(r){case t:return 60*((e-n)/s+(ee>n?Math.min(e,Math.max(n,t)):Math.min(n,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},3679:function(t,e,n){"use strict";n.d(e,{Z:function(){return f}});var i=function(){this.__data__=[],this.size=0},r=n(8670);var a=function(t,e){for(var n=t.length;n--;)if((0,r.Z)(t[n][0],e))return n;return-1},o=Array.prototype.splice;var s=function(t){var e=this.__data__,n=a(e,t);return!(n<0)&&(n==e.length-1?e.pop():o.call(e,n,1),--this.size,!0)};var c=function(t){var e=this.__data__,n=a(e,t);return n<0?void 0:e[n][1]};var u=function(t){return a(this.__data__,t)>-1};var l=function(t,e){var n=this.__data__,i=a(n,t);return i<0?(++this.size,n.push([t,e])):n[i][1]=e,this};function h(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0&&r(l)?n>1?t(l,n-1,r,a,o):(0,i.Z)(o,l):a||(o[o.length]=l)}return o}},1405:function(t,e,n){"use strict";n.d(e,{Z:function(){return i}});var i=function(t){return function(e,n,i){for(var r=-1,a=Object(e),o=i(e),s=o.length;s--;){var c=o[t?s:++r];if(!1===n(a[c],c,a))break}return e}}()},8878:function(t,e,n){"use strict";var i=n(1405),r=n(825);e.Z=function(t,e){return t&&(0,i.Z)(t,e,r.Z)}},7106:function(t,e,n){"use strict";var i=n(9864),r=n(199);e.Z=function(t,e){for(var n=0,a=(e=(0,i.Z)(e,t)).length;null!=t&&nl))return!1;var f=c.get(t),d=c.get(e);if(f&&d)return f==e&&d==t;var g=-1,p=!0,b=2&n?new r.Z:void 0;for(c.set(t,e),c.set(e,t);++g-1&&t%1==0&&t0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}},u=c(o)},199:function(t,e,n){"use strict";var i=n(54);e.Z=function(t){if("string"==typeof t||(0,i.Z)(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},9441:function(t,e){"use strict";var n=Function.prototype.toString;e.Z=function(t){if(null!=t){try{return n.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},2399:function(t,e){"use strict";e.Z=function(t){return function(){return t}}},9999:function(t,e,n){"use strict";var i=n(155),r=n(8670),a=n(9597),o=n(4027),s=Object.prototype,c=s.hasOwnProperty,u=(0,i.Z)((function(t,e){t=Object(t);var n=-1,i=e.length,u=i>2?e[2]:void 0;for(u&&(0,a.Z)(e[0],e[1],u)&&(i=1);++n-1&&t%1==0&&t<=9007199254740991}},7275:function(t,e){"use strict";e.Z=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},4897:function(t,e){"use strict";e.Z=function(t){return null!=t&&"object"==typeof t}},3862:function(t,e,n){"use strict";var i=n(963),r=n(4003),a=n(4897),o=Function.prototype,s=Object.prototype,c=o.toString,u=s.hasOwnProperty,l=c.call(Object);e.Z=function(t){if(!(0,a.Z)(t)||"[object Object]"!=(0,i.Z)(t))return!1;var e=(0,r.Z)(t);if(null===e)return!0;var n=u.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==l}},54:function(t,e,n){"use strict";var i=n(963),r=n(4897);e.Z=function(t){return"symbol"==typeof t||(0,r.Z)(t)&&"[object Symbol]"==(0,i.Z)(t)}},4161:function(t,e,n){"use strict";n.d(e,{Z:function(){return h}});var i=n(963),r=n(3492),a=n(4897),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;var s=function(t){return(0,a.Z)(t)&&(0,r.Z)(t.length)&&!!o[(0,i.Z)(t)]},c=n(7133),u=n(9801),l=u.Z&&u.Z.isTypedArray,h=l?(0,c.Z)(l):s},9789:function(t,e){"use strict";e.Z=function(t){return void 0===t}},825:function(t,e,n){"use strict";var i=n(1931),r=n(9295),a=n(6905);e.Z=function(t){return(0,a.Z)(t)?(0,i.Z)(t):(0,r.Z)(t)}},4027:function(t,e,n){"use strict";n.d(e,{Z:function(){return l}});var i=n(1931),r=n(7275),a=n(9494);var o=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e},s=Object.prototype.hasOwnProperty;var c=function(t){if(!(0,r.Z)(t))return o(t);var e=(0,a.Z)(t),n=[];for(var i in t)("constructor"!=i||!e&&s.call(t,i))&&n.push(i);return n},u=n(6905);var l=function(t){return(0,u.Z)(t)?(0,i.Z)(t,!0):c(t)}},8076:function(t,e,n){"use strict";var i=n(2363),r=n(5350),a=n(8998),o=n(6575);e.Z=function(t,e){return((0,o.Z)(t)?i.Z:a.Z)(t,(0,r.Z)(e,3))}},9828:function(t,e,n){"use strict";var i=n(2717);function r(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var n=function(){var i=arguments,r=e?e.apply(this,i):i[0],a=n.cache;if(a.has(r))return a.get(r);var o=t.apply(this,i);return n.cache=a.set(r,o)||a,o};return n.cache=new(r.Cache||i.Z),n}r.Cache=i.Z,e.Z=r},9980:function(t,e,n){"use strict";n.d(e,{Z:function(){return b}});var i=n(7106),r=n(9616),a=n(9864),o=n(5313),s=n(7275),c=n(199);var u=function(t,e,n,i){if(!(0,s.Z)(t))return t;for(var u=-1,l=(e=(0,a.Z)(e,t)).length,h=l-1,f=t;null!=f&&++ul&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},bt={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),18;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 10;case 5:return this.begin("type_directive"),19;case 6:return this.popState(),this.begin("arg_directive"),16;case 7:return this.popState(),this.popState(),21;case 8:return 20;case 9:return 32;case 10:return 33;case 11:return this.begin("acc_title"),34;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),36;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 78:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 21:case 75:break;case 19:c;break;case 20:return 15;case 22:return 22;case 23:return 25;case 24:return 26;case 25:return 27;case 26:return 28;case 27:return this.begin("person_ext"),55;case 28:return this.begin("person"),54;case 29:return this.begin("system_ext_queue"),61;case 30:return this.begin("system_ext_db"),60;case 31:return this.begin("system_ext"),59;case 32:return this.begin("system_queue"),58;case 33:return this.begin("system_db"),57;case 34:return this.begin("system"),56;case 35:return this.begin("boundary"),47;case 36:return this.begin("enterprise_boundary"),44;case 37:return this.begin("system_boundary"),46;case 38:return this.begin("container_ext_queue"),67;case 39:return this.begin("container_ext_db"),66;case 40:return this.begin("container_ext"),65;case 41:return this.begin("container_queue"),64;case 42:return this.begin("container_db"),63;case 43:return this.begin("container"),62;case 44:return this.begin("container_boundary"),48;case 45:return this.begin("component_ext_queue"),73;case 46:return this.begin("component_ext_db"),72;case 47:return this.begin("component_ext"),71;case 48:return this.begin("component_queue"),70;case 49:return this.begin("component_db"),69;case 50:return this.begin("component"),68;case 51:case 52:return this.begin("node"),49;case 53:return this.begin("node_l"),50;case 54:return this.begin("node_r"),51;case 55:return this.begin("rel"),74;case 56:return this.begin("birel"),75;case 57:case 58:return this.begin("rel_u"),76;case 59:case 60:return this.begin("rel_d"),77;case 61:case 62:return this.begin("rel_l"),78;case 63:case 64:return this.begin("rel_r"),79;case 65:return this.begin("rel_b"),80;case 66:return this.begin("rel_index"),81;case 67:return this.begin("update_el_style"),82;case 68:return this.begin("update_rel_style"),83;case 69:return this.begin("update_layout_config"),84;case 70:return"EOF_IN_STRUCT";case 71:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 72:this.begin("attribute");break;case 73:case 84:this.popState(),this.popState();break;case 74:case 76:return 90;case 77:this.begin("string");break;case 79:case 85:return"STR";case 80:this.begin("string_kv");break;case 81:return this.begin("string_kv_key"),"STR_KEY";case 82:this.popState(),this.begin("string_kv_value");break;case 83:return"STR_VALUE";case 86:return"LBRACE";case 87:return"RBRACE";case 88:return"SPACE";case 89:return"EOL";case 90:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[7,8],inclusive:!1},type_directive:{rules:[6,7],inclusive:!1},open_directive:{rules:[5],inclusive:!1},string_kv_value:{rules:[83,84],inclusive:!1},string_kv_key:{rules:[82],inclusive:!1},string_kv:{rules:[81],inclusive:!1},string:{rules:[78,79],inclusive:!1},attribute:{rules:[73,74,75,76,77,80,85],inclusive:!1},update_layout_config:{rules:[70,71,72,73],inclusive:!1},update_rel_style:{rules:[70,71,72,73],inclusive:!1},update_el_style:{rules:[70,71,72,73],inclusive:!1},rel_b:{rules:[70,71,72,73],inclusive:!1},rel_r:{rules:[70,71,72,73],inclusive:!1},rel_l:{rules:[70,71,72,73],inclusive:!1},rel_d:{rules:[70,71,72,73],inclusive:!1},rel_u:{rules:[70,71,72,73],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[70,71,72,73],inclusive:!1},node_r:{rules:[70,71,72,73],inclusive:!1},node_l:{rules:[70,71,72,73],inclusive:!1},node:{rules:[70,71,72,73],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[70,71,72,73],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[70,71,72,73],inclusive:!1},component_ext:{rules:[70,71,72,73],inclusive:!1},component_queue:{rules:[70,71,72,73],inclusive:!1},component_db:{rules:[70,71,72,73],inclusive:!1},component:{rules:[70,71,72,73],inclusive:!1},container_boundary:{rules:[70,71,72,73],inclusive:!1},container_ext_queue:{rules:[],inclusive:!1},container_ext_db:{rules:[70,71,72,73],inclusive:!1},container_ext:{rules:[70,71,72,73],inclusive:!1},container_queue:{rules:[70,71,72,73],inclusive:!1},container_db:{rules:[70,71,72,73],inclusive:!1},container:{rules:[70,71,72,73],inclusive:!1},birel:{rules:[70,71,72,73],inclusive:!1},system_boundary:{rules:[70,71,72,73],inclusive:!1},enterprise_boundary:{rules:[70,71,72,73],inclusive:!1},boundary:{rules:[70,71,72,73],inclusive:!1},system_ext_queue:{rules:[70,71,72,73],inclusive:!1},system_ext_db:{rules:[70,71,72,73],inclusive:!1},system_ext:{rules:[70,71,72,73],inclusive:!1},system_queue:{rules:[70,71,72,73],inclusive:!1},system_db:{rules:[70,71,72,73],inclusive:!1},system:{rules:[70,71,72,73],inclusive:!1},person_ext:{rules:[70,71,72,73],inclusive:!1},person:{rules:[70,71,72,73],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,86,87,88,89,90],inclusive:!0}}};function wt(){this.yy={}}return pt.lexer=bt,wt.prototype=pt,pt.Parser=wt,new wt}());s.parser=s;const u=s;let l=[],h=[""],f="global",d="",g=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],p=[],b="",w=!1,m=4,y=2;var v;const x=function(t){return null==t?l:l.filter((e=>e.parentBoundary===t))},k=function(){return w},_={addPersonOrSystem:function(t,e,n,i,r,a,o){if(null===e||null===n)return;let s={};const c=l.find((t=>t.alias===e));if(c&&e===c.alias?s=c:(s.alias=e,l.push(s)),s.label=null==n?{text:""}:{text:n},null==i)s.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]={text:e}}else s.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];s[t]=e}else s.sprite=r;if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=e}else s.tags=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];s[t]=e}else s.link=o;s.typeC4Shape={text:t},s.parentBoundary=f,s.wrap=k()},addPersonOrSystemBoundary:function(t,e,n,i,r){if(null===t||null===e)return;let a={};const o=g.find((e=>e.alias===t));if(o&&t===o.alias?a=o:(a.alias=t,g.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"system"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.tags=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.link=r;a.parentBoundary=f,a.wrap=k(),d=f,f=t,h.push(d)},addContainer:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=l.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,l.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]=e}else c.sprite=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.wrap=k(),c.typeC4Shape={text:t},c.parentBoundary=f},addContainerBoundary:function(t,e,n,i,r){if(null===t||null===e)return;let a={};const o=g.find((e=>e.alias===t));if(o&&t===o.alias?a=o:(a.alias=t,g.push(a)),a.label=null==e?{text:""}:{text:e},null==n)a.type={text:"container"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];a[t]={text:e}}else a.type={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];a[t]=e}else a.tags=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];a[t]=e}else a.link=r;a.parentBoundary=f,a.wrap=k(),d=f,f=t,h.push(d)},addComponent:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=l.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,l.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof a){let[t,e]=Object.entries(a)[0];c[t]=e}else c.sprite=a;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.wrap=k(),c.typeC4Shape={text:t},c.parentBoundary=f},addDeploymentNode:function(t,e,n,i,r,a,o,s){if(null===e||null===n)return;let c={};const u=g.find((t=>t.alias===e));if(u&&e===u.alias?c=u:(c.alias=e,g.push(c)),c.label=null==n?{text:""}:{text:n},null==i)c.type={text:"node"};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.type={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.tags=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.link=s;c.nodeType=t,c.parentBoundary=f,c.wrap=k(),d=f,f=e,h.push(d)},popBoundaryParseStack:function(){f=d,h.pop(),d=h.pop(),h.push(d)},addRel:function(t,e,n,i,r,a,o,s,c){if(null==t||null==e||null==n||null==i)return;let u={};const l=p.find((t=>t.from===e&&t.to===n));if(l?u=l:p.push(u),u.type=t,u.from=e,u.to=n,u.label={text:i},null==r)u.techn={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];u[t]={text:e}}else u.techn={text:r};if(null==a)u.descr={text:""};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];u[t]={text:e}}else u.descr={text:a};if("object"==typeof o){let[t,e]=Object.entries(o)[0];u[t]=e}else u.sprite=o;if("object"==typeof s){let[t,e]=Object.entries(s)[0];u[t]=e}else u.tags=s;if("object"==typeof c){let[t,e]=Object.entries(c)[0];u[t]=e}else u.link=c;u.wrap=k()},updateElStyle:function(t,e,n,i,r,a,o,s,c,u,h){let f=l.find((t=>t.alias===e));if(void 0!==f||(f=g.find((t=>t.alias===e)),void 0!==f)){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];f[t]=e}else f.bgColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];f[t]=e}else f.fontColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];f[t]=e}else f.borderColor=r;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];f[t]=e}else f.shadowing=a;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];f[t]=e}else f.shape=o;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];f[t]=e}else f.sprite=s;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];f[t]=e}else f.techn=c;if(null!=u)if("object"==typeof u){let[t,e]=Object.entries(u)[0];f[t]=e}else f.legendText=u;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];f[t]=e}else f.legendSprite=h}},updateRelStyle:function(t,e,n,i,r,a,o){const s=p.find((t=>t.from===e&&t.to===n));if(void 0!==s){if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];s[t]=e}else s.textColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];s[t]=e}else s.lineColor=r;if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];s[t]=parseInt(e)}else s.offsetX=parseInt(a);if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];s[t]=parseInt(e)}else s.offsetY=parseInt(o)}},updateLayoutConfig:function(t,e,n){let i=m,r=y;if("object"==typeof e){const t=Object.values(e)[0];i=parseInt(t)}else i=parseInt(e);if("object"==typeof n){const t=Object.values(n)[0];r=parseInt(t)}else r=parseInt(n);i>=1&&(m=i),r>=1&&(y=r)},autoWrap:k,setWrap:function(t){w=t},getC4ShapeArray:x,getC4Shape:function(t){return l.find((e=>e.alias===t))},getC4ShapeKeys:function(t){return Object.keys(x(t))},getBoundarys:function(t){return null==t?g:g.filter((e=>e.parentBoundary===t))},getCurrentBoundaryParse:function(){return f},getParentBoundaryParse:function(){return d},getRels:function(){return p},getTitle:function(){return b},getC4Type:function(){return v},getC4ShapeInRow:function(){return m},getC4BoundaryInRow:function(){return y},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().c4,clear:function(){l=[],g=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],d="",f="global",h=[""],p=[],h=[""],b="",w=!1,m=4,y=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(t){let e=(0,i.d)(t,(0,i.c)());b=e},setC4Type:function(t){let e=(0,i.d)(t,(0,i.c)());v=e}},A=function(t,e){return(0,a.d)(t,e)},E=function(t,e,n,i,r,a){const s=t.append("image");s.attr("width",e),s.attr("height",n),s.attr("x",i),s.attr("y",r);let c=a.startsWith("data:image/png;base64")?a:(0,o.Nm)(a);s.attr("xlink:href",c)},T=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),C=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,a,o,s,c,u){const{fontSize:l,fontFamily:h,fontWeight:f}=u,d=t.split(i.e.lineBreakRegex);for(let t=0;t>"),e.typeC4Shape.text){case"person":case"external_person":E(u,48,48,e.x+e.width/2-24,e.y+e.image.Y,c)}let f=n[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=s,C(n)(e.label.text,u,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},f),f=n[e.typeC4Shape.text+"Font"](),f.fontColor=s,e.techn&&""!==(null==(i=e.techn)?void 0:i.text)?C(n)(e.techn.text,u,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},f):e.type&&""!==e.type.text&&C(n)(e.type.text,u,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},f),e.descr&&""!==e.descr.text&&(f=n.personFont(),f.fontColor=s,C(n)(e.descr.text,u,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},f)),e.height},M=(t,e,n)=>{const i=t.append("g");let r=0;for(let t of e){let e=t.textColor?t.textColor:"#444444",a=t.lineColor?t.lineColor:"#444444",o=t.offsetX?parseInt(t.offsetX):0,s=t.offsetY?parseInt(t.offsetY):0,c="";if(0===r){let e=i.append("line");e.attr("x1",t.startPoint.x),e.attr("y1",t.startPoint.y),e.attr("x2",t.endPoint.x),e.attr("y2",t.endPoint.y),e.attr("stroke-width","1"),e.attr("stroke",a),e.style("fill","none"),"rel_b"!==t.type&&e.attr("marker-end","url("+c+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+c+"#arrowend)"),r=-1}else{let e=i.append("path");e.attr("fill","none").attr("stroke-width","1").attr("stroke",a).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",t.startPoint.x).replaceAll("starty",t.startPoint.y).replaceAll("controlx",t.startPoint.x+(t.endPoint.x-t.startPoint.x)/2-(t.endPoint.x-t.startPoint.x)/4).replaceAll("controly",t.startPoint.y+(t.endPoint.y-t.startPoint.y)/2).replaceAll("stopx",t.endPoint.x).replaceAll("stopy",t.endPoint.y)),"rel_b"!==t.type&&e.attr("marker-end","url("+c+"#arrowhead)"),"birel"!==t.type&&"rel_b"!==t.type||e.attr("marker-start","url("+c+"#arrowend)")}let u=n.messageFont();C(n)(t.label.text,i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+o,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+s,t.label.width,t.label.height,{fill:e},u),t.techn&&""!==t.techn.text&&(u=n.messageFont(),C(n)("["+t.techn.text+"]",i,Math.min(t.startPoint.x,t.endPoint.x)+Math.abs(t.endPoint.x-t.startPoint.x)/2+o,Math.min(t.startPoint.y,t.endPoint.y)+Math.abs(t.endPoint.y-t.startPoint.y)/2+n.messageFontSize+5+s,Math.max(t.label.width,t.techn.width),t.techn.height,{fill:e,"font-style":"italic"},u))}},D=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},O=function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},L=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},N=function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},P=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},B=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},F=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")};let R=0,j=0,$=4,z=2;s.yy=_;let q={};class H{constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,U(t.db.getConfig())}setData(t,e,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=e,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let e=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+2*t.margin,n=e+t.width,i=this.nextData.starty+2*t.margin,r=i+t.height;(e>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>$)&&(e=this.nextData.startx+t.margin+q.nextLinePaddingX,i=this.nextData.stopy+2*t.margin,this.nextData.stopx=n=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=r=i+t.height,this.nextData.cnt=1),t.x=e,t.y=i,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",r,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",r,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},U(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const U=function(t){(0,i.f)(q,t),t.fontFamily&&(q.personFontFamily=q.systemFontFamily=q.messageFontFamily=t.fontFamily),t.fontSize&&(q.personFontSize=q.systemFontSize=q.messageFontSize=t.fontSize),t.fontWeight&&(q.personFontWeight=q.systemFontWeight=q.messageFontWeight=t.fontWeight)},G=(t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),Y=t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight});function Z(t,e,n,r,a){if(!e[t].width)if(n)e[t].text=(0,i.w)(e[t].text,a,r),e[t].textLines=e[t].text.split(i.e.lineBreakRegex).length,e[t].width=a,e[t].height=(0,i.j)(e[t].text,r);else{let n=e[t].text.split(i.e.lineBreakRegex);e[t].textLines=n.length;let a=0;e[t].height=0,e[t].width=0;for(const o of n)e[t].width=Math.max((0,i.h)(o,r),e[t].width),a=(0,i.j)(o,r),e[t].height=e[t].height+a}}const W=function(t,e,n){e.x=n.data.startx,e.y=n.data.starty,e.width=n.data.stopx-n.data.startx,e.height=n.data.stopy-n.data.starty,e.label.y=q.c4ShapeMargin-35;let r=e.wrap&&q.wrap,a=Y(q);a.fontSize=a.fontSize+2,a.fontWeight="bold",Z("label",e,r,a,(0,i.h)(e.label.text,a)),S(t,e,q)},K=function(t,e,n,r){let a=0;for(const o of r){a=0;const r=n[o];let s=G(q,r.typeC4Shape.text);switch(s.fontSize=s.fontSize-2,r.typeC4Shape.width=(0,i.h)("<<"+r.typeC4Shape.text+">>",s),r.typeC4Shape.height=s.fontSize+2,r.typeC4Shape.Y=q.c4ShapePadding,a=r.typeC4Shape.Y+r.typeC4Shape.height-4,r.image={width:0,height:0,Y:0},r.typeC4Shape.text){case"person":case"external_person":r.image.width=48,r.image.height=48,r.image.Y=a,a=r.image.Y+r.image.height}r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=a,a=r.image.Y+r.image.height);let c=r.wrap&&q.wrap,u=q.width-2*q.c4ShapePadding,l=G(q,r.typeC4Shape.text);if(l.fontSize=l.fontSize+2,l.fontWeight="bold",Z("label",r,c,l,u),r.label.Y=a+8,a=r.label.Y+r.label.height,r.type&&""!==r.type.text){r.type.text="["+r.type.text+"]",Z("type",r,c,G(q,r.typeC4Shape.text),u),r.type.Y=a+5,a=r.type.Y+r.type.height}else if(r.techn&&""!==r.techn.text){r.techn.text="["+r.techn.text+"]",Z("techn",r,c,G(q,r.techn.text),u),r.techn.Y=a+5,a=r.techn.Y+r.techn.height}let h=a,f=r.label.width;if(r.descr&&""!==r.descr.text){Z("descr",r,c,G(q,r.typeC4Shape.text),u),r.descr.Y=a+20,a=r.descr.Y+r.descr.height,f=Math.max(r.label.width,r.descr.width),h=a-5*r.descr.textLines}f+=q.c4ShapePadding,r.width=Math.max(r.width||q.width,f,q.width),r.height=Math.max(r.height||q.height,h,q.height),r.margin=r.margin||q.c4ShapeMargin,t.insert(r),I(e,r,q)}t.bumpLastMargin(q.c4ShapeMargin)};class X{constructor(t,e){this.x=t,this.y=e}}let V=function(t,e){let n=t.x,i=t.y,r=e.x,a=e.y,o=n+t.width/2,s=i+t.height/2,c=Math.abs(n-r),u=Math.abs(i-a),l=u/c,h=t.height/t.width,f=null;return i==a&&nr?f=new X(n,s):n==r&&ia&&(f=new X(o,i)),n>r&&i=l?new X(n,s+l*t.width/2):new X(o-c/u*t.height/2,i+t.height):n=l?new X(n+t.width,s+l*t.width/2):new X(o+c/u*t.height/2,i+t.height):na?f=h>=l?new X(n+t.width,s-l*t.width/2):new X(o+t.height/2*c/u,i):n>r&&i>a&&(f=h>=l?new X(n,s-t.width/2*l):new X(o-t.height/2*c/u,i)),f},Q=function(t,e){let n={x:0,y:0};n.x=e.x+e.width/2,n.y=e.y+e.height/2;let i=V(t,n);return n.x=t.x+t.width/2,n.y=t.y+t.height/2,{startPoint:i,endPoint:V(e,n)}};function J(t,e,n,i,r){let a=new H(r);a.data.widthLimit=n.data.widthLimit/Math.min(z,i.length);for(let[o,s]of i.entries()){let i=0;s.image={width:0,height:0,Y:0},s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let c=s.wrap&&q.wrap,u=Y(q);if(u.fontSize=u.fontSize+2,u.fontWeight="bold",Z("label",s,c,u,a.data.widthLimit),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&""!==s.type.text){s.type.text="["+s.type.text+"]",Z("type",s,c,Y(q),a.data.widthLimit),s.type.Y=i+5,i=s.type.Y+s.type.height}if(s.descr&&""!==s.descr.text){let t=Y(q);t.fontSize=t.fontSize-2,Z("descr",s,c,t,a.data.widthLimit),s.descr.Y=i+20,i=s.descr.Y+s.descr.height}if(0==o||o%z==0){let t=n.data.startx+q.diagramMarginX,e=n.data.stopy+q.diagramMarginY+i;a.setData(t,t,e,e)}else{let t=a.data.stopx!==a.data.startx?a.data.stopx+q.diagramMarginX:a.data.startx,e=a.data.starty;a.setData(t,t,e,e)}a.name=s.alias;let l=r.db.getC4ShapeArray(s.alias),h=r.db.getC4ShapeKeys(s.alias);h.length>0&&K(a,t,l,h),e=s.alias;let f=r.db.getBoundarys(e);f.length>0&&J(t,e,a,f,r),"global"!==s.alias&&W(t,s,a),n.data.stopy=Math.max(a.data.stopy+q.c4ShapeMargin,n.data.stopy),n.data.stopx=Math.max(a.data.stopx+q.c4ShapeMargin,n.data.stopx),R=Math.max(R,n.data.stopx),j=Math.max(j,n.data.stopy)}}const tt={drawPersonOrSystemArray:K,drawBoundary:W,setConf:U,draw:function(t,e,n,a){q=(0,i.c)().c4;const o=(0,i.c)().securityLevel;let s;"sandbox"===o&&(s=(0,r.Ys)("#i"+e));const c="sandbox"===o?(0,r.Ys)(s.nodes()[0].contentDocument.body):(0,r.Ys)("body");let u=a.db;a.db.setWrap(q.wrap),$=u.getC4ShapeInRow(),z=u.getC4BoundaryInRow(),i.l.debug(`C:${JSON.stringify(q,null,2)}`);const l="sandbox"===o?c.select(`[id="${e}"]`):(0,r.Ys)(`[id="${e}"]`);B(l),P(l),F(l);let h=new H(a);h.setData(q.diagramMarginX,q.diagramMarginX,q.diagramMarginY,q.diagramMarginY),h.data.widthLimit=screen.availWidth,R=q.diagramMarginX,j=q.diagramMarginY;const f=a.db.getTitle();J(l,"",h,a.db.getBoundarys(""),a),D(l),O(l),N(l),L(l),function(t,e,n,r){let a=0;for(let t of e){a+=1;let e=t.wrap&&q.wrap,s={fontFamily:(o=q).messageFontFamily,fontSize:o.messageFontSize,fontWeight:o.messageFontWeight};"C4Dynamic"===r.db.getC4Type()&&(t.label.text=a+": "+t.label.text);let c=(0,i.h)(t.label.text,s);Z("label",t,e,s,c),t.techn&&""!==t.techn.text&&(c=(0,i.h)(t.techn.text,s),Z("techn",t,e,s,c)),t.descr&&""!==t.descr.text&&(c=(0,i.h)(t.descr.text,s),Z("descr",t,e,s,c));let u=n(t.from),l=n(t.to),h=Q(u,l);t.startPoint=h.startPoint,t.endPoint=h.endPoint}var o;M(t,e,q)}(l,a.db.getRels(),a.db.getC4Shape,a),h.data.stopx=R,h.data.stopy=j;const d=h.data;let g=d.stopy-d.starty+2*q.diagramMarginY;const p=d.stopx-d.startx+2*q.diagramMarginX;f&&l.append("text").text(f).attr("x",(d.stopx-d.startx)/2-4*q.diagramMarginX).attr("y",d.starty+q.diagramMarginY),(0,i.i)(l,g,p,q.useMaxWidth);const b=f?60:0;l.attr("viewBox",d.startx-q.diagramMarginX+" -"+(q.diagramMarginY+b)+" "+p+" "+(g+b)),i.l.debug("models:",d)}},et={parser:u,db:_,renderer:tt,styles:t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`,init:t=>{tt.setConf(t.c4)}}},6956:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return f}});var i=n(5349),r=n(1504),a=n(1768),o=n(8066),s=n(8540),c=n(3148);n(7530),n(2510),n(6951);let u={};const l=function(t){const e=Object.entries(u).find((e=>e[1].label===t));if(e)return e[0]},h={draw:function(t,e,n,i){const h=(0,s.c)().class;u={},s.l.info("Rendering diagram "+t);const f=(0,s.c)().securityLevel;let d;"sandbox"===f&&(d=(0,r.Ys)("#i"+e));const g="sandbox"===f?(0,r.Ys)(d.nodes()[0].contentDocument.body):(0,r.Ys)("body"),p=g.select(`[id='${e}']`);var b;(b=p).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),b.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),b.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),b.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");const w=new o.k({multigraph:!0});w.setGraph({isMultiGraph:!0}),w.setDefaultEdgeLabel((function(){return{}}));const m=i.db.getClasses(),y=Object.keys(m);for(const t of y){const e=m[t],n=c.s.drawClass(p,e,h,i);u[n.id]=n,w.setNode(n.id,n),s.l.info("Org height: "+n.height)}i.db.getRelations().forEach((function(t){s.l.info("tjoho"+l(t.id1)+l(t.id2)+JSON.stringify(t)),w.setEdge(l(t.id1),l(t.id2),{relation:t},t.title||"DEFAULT")}));i.db.getNotes().forEach((function(t){s.l.debug(`Adding note: ${JSON.stringify(t)}`);const e=c.s.drawNote(p,t,h,i);u[e.id]=e,w.setNode(e.id,e),t.class&&t.class in m&&w.setEdge(t.id,l(t.class),{relation:{id1:t.id,id2:t.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")})),(0,a.bK)(w),w.nodes().forEach((function(t){void 0!==t&&void 0!==w.node(t)&&(s.l.debug("Node "+t+": "+JSON.stringify(w.node(t))),g.select("#"+(i.db.lookUpDomId(t)||t)).attr("transform","translate("+(w.node(t).x-w.node(t).width/2)+","+(w.node(t).y-w.node(t).height/2)+" )"))})),w.edges().forEach((function(t){void 0!==t&&void 0!==w.edge(t)&&(s.l.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(w.edge(t))),c.s.drawEdge(p,w.edge(t),w.edge(t).relation,h,i))}));const v=p.node().getBBox(),x=v.width+40,k=v.height+40;(0,s.i)(p,k,x,h.useMaxWidth);const _=`${v.x-20} ${v.y-20} ${x} ${k}`;s.l.debug(`viewBox ${_}`),p.attr("viewBox",_)}},f={parser:i.p,db:i.d,renderer:h,styles:i.s,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},9582:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return d}});var i=n(5349),r=n(1504),a=n(8066),o=n(8540),s=n(113);n(7530),n(2510),n(6951),n(1768),n(835);const c=t=>o.e.sanitizeText(t,(0,o.c)());let u={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const l=function(t,e,n,i,r){const a=Object.keys(t);o.l.info("keys:",a),o.l.info(t),a.forEach((function(n){var a,s;const u=t[n];let l="";u.cssClasses.length>0&&(l=l+" "+u.cssClasses.join(" "));const h="",f="",d=u.label??u.id,g={labelStyle:h,shape:"class_box",labelText:c(d),classData:u,rx:0,ry:0,class:l,style:f,id:u.id,domId:u.domId,tooltip:i.db.getTooltip(u.id,r)||"",haveCallback:u.haveCallback,link:u.link,width:"group"===u.type?500:void 0,type:u.type,padding:(null==(a=(0,o.c)().flowchart)?void 0:a.padding)??(null==(s=(0,o.c)().class)?void 0:s.padding)};e.setNode(u.id,g),r&&e.setParent(u.id,r),o.l.info("setNode",g)}))};function h(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}const f={setConf:function(t){u={...u,...t}},draw:async function(t,e,n,i){o.l.info("Drawing class - ",e);const f=(0,o.c)().flowchart??(0,o.c)().class,d=(0,o.c)().securityLevel;o.l.info("config:",f);const g=(null==f?void 0:f.nodeSpacing)??50,p=(null==f?void 0:f.rankSpacing)??50,b=new a.k({multigraph:!0,compound:!0}).setGraph({rankdir:i.db.getDirection(),nodesep:g,ranksep:p,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),w=i.db.getNamespaces(),m=i.db.getClasses(),y=i.db.getRelations(),v=i.db.getNotes();let x;o.l.info(y),function(t,e,n,i){const r=Object.keys(t);o.l.info("keys:",r),o.l.info(t),r.forEach((function(r){var a,s;const u=t[r],h={shape:"rect",id:u.id,domId:u.domId,labelText:c(u.id),labelStyle:"",style:"fill: none; stroke: black",padding:(null==(a=(0,o.c)().flowchart)?void 0:a.padding)??(null==(s=(0,o.c)().class)?void 0:s.padding)};e.setNode(u.id,h),l(u.classes,e,n,i,u.id),o.l.info("setNode",h)}))}(w,b,e,i),l(m,b,e,i),function(t,e){const n=(0,o.c)().flowchart;let i=0;t.forEach((function(t){var a;i++;const s={classes:"relation",pattern:1==t.relation.lineType?"dashed":"solid",id:"id"+i,arrowhead:"arrow_open"===t.type?"none":"normal",startLabelRight:"none"===t.relationTitle1?"":t.relationTitle1,endLabelLeft:"none"===t.relationTitle2?"":t.relationTitle2,arrowTypeStart:h(t.relation.type1),arrowTypeEnd:h(t.relation.type2),style:"fill:none",labelStyle:"",curve:(0,o.o)(null==n?void 0:n.curve,r.c_6)};if(o.l.info(s,t),void 0!==t.style){const e=(0,o.k)(t.style);s.style=e.style,s.labelStyle=e.labelStyle}t.text=t.title,void 0===t.text?void 0!==t.style&&(s.arrowheadStyle="fill: #333"):(s.arrowheadStyle="fill: #333",s.labelpos="c",(null==(a=(0,o.c)().flowchart)?void 0:a.htmlLabels)??(0,o.c)().htmlLabels?(s.labelType="html",s.label=''+t.text+""):(s.labelType="text",s.label=t.text.replace(o.e.lineBreakRegex,"\n"),void 0===t.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:"))),e.setEdge(t.id1,t.id2,s,i)}))}(y,b),function(t,e,n,i){o.l.info(t),t.forEach((function(t,a){var s,l;const h=t,f="",d="",g=h.text,p={labelStyle:f,shape:"note",labelText:c(g),noteData:h,rx:0,ry:0,class:"",style:d,id:h.id,domId:h.id,tooltip:"",type:"note",padding:(null==(s=(0,o.c)().flowchart)?void 0:s.padding)??(null==(l=(0,o.c)().class)?void 0:l.padding)};if(e.setNode(h.id,p),o.l.info("setNode",p),!h.class||!(h.class in i))return;const b=n+a,w={id:`edgeNote${b}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:(0,o.o)(u.curve,r.c_6)};e.setEdge(h.id,h.class,w,b)}))}(v,b,y.length+1,m),"sandbox"===d&&(x=(0,r.Ys)("#i"+e));const k="sandbox"===d?(0,r.Ys)(x.nodes()[0].contentDocument.body):(0,r.Ys)("body"),_=k.select(`[id="${e}"]`),A=k.select("#"+e+" g");if(await(0,s.r)(A,b,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",e),o.u.insertTitle(_,"classTitleText",(null==f?void 0:f.titleTopMargin)??5,i.db.getDiagramTitle()),(0,o.p)(b,_,null==f?void 0:f.diagramPadding,null==f?void 0:f.useMaxWidth),!(null==f?void 0:f.htmlLabels)){const t="sandbox"===d?x.nodes()[0].contentDocument:document,n=t.querySelectorAll('[id="'+e+'"] .edgeLabel .label');for(const e of n){const n=e.getBBox(),i=t.createElementNS("http://www.w3.org/2000/svg","rect");i.setAttribute("rx",0),i.setAttribute("ry",0),i.setAttribute("width",n.width),i.setAttribute("height",n.height),e.insertBefore(i,e.firstChild)}}}},d={parser:i.p,db:i.d,renderer:f,styles:i.s,init:t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},1524:function(t,e,n){"use strict";n.d(e,{c:function(){return ne}});var i={};n.r(i),n.d(i,{attentionMarkers:function(){return Nt},contentInitial:function(){return St},disable:function(){return Pt},document:function(){return Ct},flow:function(){return Mt},flowInitial:function(){return It},insideSpan:function(){return Lt},string:function(){return Dt},text:function(){return Ot}});var r=n(8540);const a={};function o(t,e,n){if(function(t){return Boolean(t&&"object"==typeof t)}(t)){if("value"in t)return"html"!==t.type||n?t.value:"";if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return s(t.children,e,n)}return Array.isArray(t)?s(t,e,n):""}function s(t,e,n){const i=[];let r=-1;for(;++rr?0:r+e:e>r?r:e,n=n>0?n:0,i.length<1e4)a=Array.from(i),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);o0?(c(t,t.length,0,e),t):e}const l={}.hasOwnProperty;function h(t,e){let n;for(n in e){const i=(l.call(t,n)?t[n]:void 0)||(t[n]={}),r=e[n];let a;if(r)for(a in r){l.call(i,a)||(i[a]=[]);const t=r[a];f(i[a],Array.isArray(t)?t:t?[t]:[])}}}function f(t,e){let n=-1;const i=[];for(;++na))return;const n=e.events.length;let r,s,u=n;for(;u--;)if("exit"===e.events[u][0]&&"chunkFlow"===e.events[u][1].type){if(r){s=e.events[u][1].end;break}r=!0}for(m(o),t=n;ti;){const i=n[r];e.containerState=i[1],i[0].exit.call(e,t)}n.length=i}function y(){i.write([null]),r=void 0,i=void 0,e.containerState._closeFlow=void 0}}},I={tokenize:function(t,e,n){return T(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}};const M={tokenize:function(t,e,n){return function(e){return k(e)?T(t,i,"linePrefix")(e):i(e)};function i(t){return null===t||v(t)?e(t):n(t)}},partial:!0};function D(t){const e={};let n,i,r,a,o,s,u,l=-1;for(;++l=4?e(r):t.interrupt(i.parser.constructs.flow,n,e)(r)}},partial:!0};const P={tokenize:function(t){const e=this,n=t.attempt(M,(function(i){if(null===i)return void t.consume(i);return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}),t.attempt(this.parser.constructs.flowInitial,i,T(t,t.attempt(this.parser.constructs.flow,i,t.attempt(L,i)),"linePrefix")));return n;function i(i){if(null!==i)return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n;t.consume(i)}}};const B={resolveAll:$()},F=j("string"),R=j("text");function j(t){return{tokenize:function(e){const n=this,i=this.parser.constructs[t],r=e.attempt(i,a,o);return a;function a(t){return c(t)?r(t):o(t)}function o(t){if(null!==t)return e.enter("data"),e.consume(t),s;e.consume(t)}function s(t){return c(t)?(e.exit("data"),r(t)):(e.consume(t),s)}function c(t){if(null===t)return!0;const e=i[t];let r=-1;if(e)for(;++r-1){const t=o[0];"string"==typeof t?o[0]=t.slice(i):o.shift()}a>0&&o.push(t[r].slice(0,a))}return o}(o,t)}function b(){const{line:t,column:e,offset:n,_index:r,_bufferIndex:a}=i;return{line:t,column:e,offset:n,_index:r,_bufferIndex:a}}function w(){let t;for(;i._index=3&&(null===a||v(a))?(t.exit("thematicBreak"),e(a)):n(a)}function o(e){return e===i?(t.consume(e),r++,o):(t.exit("thematicBreakSequence"),k(e)?T(t,a,"whitespace")(e):a(e))}}};const G={name:"list",tokenize:function(t,e,n){const i=this,r=i.events[i.events.length-1];let a=r&&"linePrefix"===r[1].type?r[2].sliceSerialize(r[1],!0).length:0,o=0;return function(e){const r=i.containerState.type||(42===e||43===e||45===e?"listUnordered":"listOrdered");if("listUnordered"===r?!i.containerState.marker||e===i.containerState.marker:w(e)){if(i.containerState.type||(i.containerState.type=r,t.enter(r,{_container:!0})),"listUnordered"===r)return t.enter("listItemPrefix"),42===e||45===e?t.check(U,n,c)(e):c(e);if(!i.interrupt||49===e)return t.enter("listItemPrefix"),t.enter("listItemValue"),s(e)}return n(e)};function s(e){return w(e)&&++o<10?(t.consume(e),s):(!i.interrupt||o<2)&&(i.containerState.marker?e===i.containerState.marker:41===e||46===e)?(t.exit("listItemValue"),c(e)):n(e)}function c(e){return t.enter("listItemMarker"),t.consume(e),t.exit("listItemMarker"),i.containerState.marker=i.containerState.marker||e,t.check(M,i.interrupt?n:u,t.attempt(Y,h,l))}function u(t){return i.containerState.initialBlankLine=!0,a++,h(t)}function l(e){return k(e)?(t.enter("listItemPrefixWhitespace"),t.consume(e),t.exit("listItemPrefixWhitespace"),h):n(e)}function h(n){return i.containerState.size=a+i.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(n)}},continuation:{tokenize:function(t,e,n){const i=this;return i.containerState._closeFlow=void 0,t.check(M,(function(n){return i.containerState.furtherBlankLines=i.containerState.furtherBlankLines||i.containerState.initialBlankLine,T(t,e,"listItemIndent",i.containerState.size+1)(n)}),(function(n){if(i.containerState.furtherBlankLines||!k(n))return i.containerState.furtherBlankLines=void 0,i.containerState.initialBlankLine=void 0,r(n);return i.containerState.furtherBlankLines=void 0,i.containerState.initialBlankLine=void 0,t.attempt(Z,e,r)(n)}));function r(r){return i.containerState._closeFlow=!0,i.interrupt=void 0,T(t,t.attempt(G,e,n),"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(r)}}},exit:function(t){t.exit(this.containerState.type)}},Y={tokenize:function(t,e,n){const i=this;return T(t,(function(t){const r=i.events[i.events.length-1];return!k(t)&&r&&"listItemPrefixWhitespace"===r[1].type?e(t):n(t)}),"listItemPrefixWhitespace",i.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},Z={tokenize:function(t,e,n){const i=this;return T(t,(function(t){const r=i.events[i.events.length-1];return r&&"listItemIndent"===r[1].type&&r[2].sliceSerialize(r[1],!0).length===i.containerState.size?e(t):n(t)}),"listItemIndent",i.containerState.size+1)},partial:!0};const W={name:"blockQuote",tokenize:function(t,e,n){const i=this;return function(e){if(62===e){const n=i.containerState;return n.open||(t.enter("blockQuote",{_container:!0}),n.open=!0),t.enter("blockQuotePrefix"),t.enter("blockQuoteMarker"),t.consume(e),t.exit("blockQuoteMarker"),r}return n(e)};function r(n){return k(n)?(t.enter("blockQuotePrefixWhitespace"),t.consume(n),t.exit("blockQuotePrefixWhitespace"),t.exit("blockQuotePrefix"),e):(t.exit("blockQuotePrefix"),e(n))}},continuation:{tokenize:function(t,e,n){const i=this;return function(e){if(k(e))return T(t,r,"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(e);return r(e)};function r(i){return t.attempt(W,e,n)(i)}}},exit:function(t){t.exit("blockQuote")}};function K(t,e,n,i,r,a,o,s,c){const u=c||Number.POSITIVE_INFINITY;let l=0;return function(e){if(60===e)return t.enter(i),t.enter(r),t.enter(a),t.consume(e),t.exit(a),h;if(null===e||32===e||41===e||b(e))return n(e);return t.enter(i),t.enter(o),t.enter(s),t.enter("chunkString",{contentType:"string"}),g(e)};function h(n){return 62===n?(t.enter(a),t.consume(n),t.exit(a),t.exit(r),t.exit(i),e):(t.enter(s),t.enter("chunkString",{contentType:"string"}),f(n))}function f(e){return 62===e?(t.exit("chunkString"),t.exit(s),h(e)):null===e||60===e||v(e)?n(e):(t.consume(e),92===e?d:f)}function d(e){return 60===e||62===e||92===e?(t.consume(e),f):f(e)}function g(r){return l||null!==r&&41!==r&&!x(r)?l999||null===h||91===h||93===h&&!s||94===h&&!c&&"_hiddenFootnoteSupport"in o.parser.constructs?n(h):93===h?(t.exit(a),t.enter(r),t.consume(h),t.exit(r),t.exit(i),e):v(h)?(t.enter("lineEnding"),t.consume(h),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),l(h))}function l(e){return null===e||91===e||93===e||v(e)||c++>999?(t.exit("chunkString"),u(e)):(t.consume(e),s||(s=!k(e)),92===e?h:l)}function h(e){return 91===e||92===e||93===e?(t.consume(e),c++,l):l(e)}}function V(t,e,n,i,r,a){let o;return function(e){if(34===e||39===e||40===e)return t.enter(i),t.enter(r),t.consume(e),t.exit(r),o=40===e?41:e,s;return n(e)};function s(n){return n===o?(t.enter(r),t.consume(n),t.exit(r),t.exit(i),e):(t.enter(a),c(n))}function c(e){return e===o?(t.exit(a),s(o)):null===e?n(e):v(e)?(t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),T(t,c,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(e))}function u(e){return e===o||null===e||v(e)?(t.exit("chunkString"),c(e)):(t.consume(e),92===e?l:u)}function l(e){return e===o||92===e?(t.consume(e),u):u(e)}}function Q(t,e){let n;return function i(r){if(v(r))return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),n=!0,i;if(k(r))return T(t,i,n?"linePrefix":"lineSuffix")(r);return e(r)}}function J(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const tt={name:"definition",tokenize:function(t,e,n){const i=this;let r;return function(e){return t.enter("definition"),function(e){return X.call(i,t,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(e)}(e)};function a(e){return r=J(i.sliceSerialize(i.events[i.events.length-1][1]).slice(1,-1)),58===e?(t.enter("definitionMarker"),t.consume(e),t.exit("definitionMarker"),o):n(e)}function o(e){return x(e)?Q(t,s)(e):s(e)}function s(e){return K(t,c,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(e)}function c(e){return t.attempt(et,u,u)(e)}function u(e){return k(e)?T(t,l,"whitespace")(e):l(e)}function l(a){return null===a||v(a)?(t.exit("definition"),i.parser.defined.push(r),e(a)):n(a)}}},et={tokenize:function(t,e,n){return function(e){return x(e)?Q(t,i)(e):n(e)};function i(e){return V(t,r,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(e)}function r(e){return k(e)?T(t,a,"whitespace")(e):a(e)}function a(t){return null===t||v(t)?e(t):n(t)}},partial:!0};const nt={name:"codeIndented",tokenize:function(t,e,n){const i=this;return function(e){return t.enter("codeIndented"),T(t,r,"linePrefix",5)(e)};function r(t){const e=i.events[i.events.length-1];return e&&"linePrefix"===e[1].type&&e[2].sliceSerialize(e[1],!0).length>=4?a(t):n(t)}function a(e){return null===e?s(e):v(e)?t.attempt(it,a,s)(e):(t.enter("codeFlowValue"),o(e))}function o(e){return null===e||v(e)?(t.exit("codeFlowValue"),a(e)):(t.consume(e),o)}function s(n){return t.exit("codeIndented"),e(n)}}},it={tokenize:function(t,e,n){const i=this;return r;function r(e){return i.parser.lazy[i.now().line]?n(e):v(e)?(t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r):T(t,a,"linePrefix",5)(e)}function a(t){const a=i.events[i.events.length-1];return a&&"linePrefix"===a[1].type&&a[2].sliceSerialize(a[1],!0).length>=4?e(t):v(t)?r(t):n(t)}},partial:!0};const rt={name:"headingAtx",tokenize:function(t,e,n){let i=0;return function(e){return t.enter("atxHeading"),function(e){return t.enter("atxHeadingSequence"),r(e)}(e)};function r(e){return 35===e&&i++<6?(t.consume(e),r):null===e||x(e)?(t.exit("atxHeadingSequence"),a(e)):n(e)}function a(n){return 35===n?(t.enter("atxHeadingSequence"),o(n)):null===n||v(n)?(t.exit("atxHeading"),e(n)):k(n)?T(t,a,"whitespace")(n):(t.enter("atxHeadingText"),s(n))}function o(e){return 35===e?(t.consume(e),o):(t.exit("atxHeadingSequence"),a(e))}function s(e){return null===e||35===e||x(e)?(t.exit("atxHeadingText"),a(e)):(t.consume(e),s)}},resolve:function(t,e){let n,i,r=t.length-2,a=3;"whitespace"===t[a][1].type&&(a+=2);r-2>a&&"whitespace"===t[r][1].type&&(r-=2);"atxHeadingSequence"===t[r][1].type&&(a===r-1||r-4>a&&"whitespace"===t[r-2][1].type)&&(r-=a+1===r?2:4);r>a&&(n={type:"atxHeadingText",start:t[a][1].start,end:t[r][1].end},i={type:"chunkText",start:t[a][1].start,end:t[r][1].end,contentType:"text"},c(t,a,r-a+1,[["enter",n,e],["enter",i,e],["exit",i,e],["exit",n,e]]));return t}};const at={name:"setextUnderline",tokenize:function(t,e,n){const i=this;let r;return function(e){let o,s=i.events.length;for(;s--;)if("lineEnding"!==i.events[s][1].type&&"linePrefix"!==i.events[s][1].type&&"content"!==i.events[s][1].type){o="paragraph"===i.events[s][1].type;break}if(!i.parser.lazy[i.now().line]&&(i.interrupt||o))return t.enter("setextHeadingLine"),r=e,function(e){return t.enter("setextHeadingLineSequence"),a(e)}(e);return n(e)};function a(e){return e===r?(t.consume(e),a):(t.exit("setextHeadingLineSequence"),k(e)?T(t,o,"lineSuffix")(e):o(e))}function o(i){return null===i||v(i)?(t.exit("setextHeadingLine"),e(i)):n(i)}},resolveTo:function(t,e){let n,i,r,a=t.length;for(;a--;)if("enter"===t[a][0]){if("content"===t[a][1].type){n=a;break}"paragraph"===t[a][1].type&&(i=a)}else"content"===t[a][1].type&&t.splice(a,1),r||"definition"!==t[a][1].type||(r=a);const o={type:"setextHeading",start:Object.assign({},t[i][1].start),end:Object.assign({},t[t.length-1][1].end)};t[i][1].type="setextHeadingText",r?(t.splice(i,0,["enter",o,e]),t.splice(r+1,0,["exit",t[n][1],e]),t[n][1].end=Object.assign({},t[r][1].end)):t[n][1]=o;return t.push(["exit",o,e]),t}};const ot=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],st=["pre","script","style","textarea"],ct={name:"htmlFlow",tokenize:function(t,e,n){const i=this;let r,a,o,s,c;return function(e){return function(e){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(e),u}(e)};function u(s){return 33===s?(t.consume(s),l):47===s?(t.consume(s),a=!0,p):63===s?(t.consume(s),r=3,i.interrupt?e:j):d(s)?(t.consume(s),o=String.fromCharCode(s),b):n(s)}function l(a){return 45===a?(t.consume(a),r=2,h):91===a?(t.consume(a),r=5,s=0,f):d(a)?(t.consume(a),r=4,i.interrupt?e:j):n(a)}function h(r){return 45===r?(t.consume(r),i.interrupt?e:j):n(r)}function f(r){const a="CDATA[";return r===a.charCodeAt(s++)?(t.consume(r),s===a.length?i.interrupt?e:D:f):n(r)}function p(e){return d(e)?(t.consume(e),o=String.fromCharCode(e),b):n(e)}function b(s){if(null===s||47===s||62===s||x(s)){const c=47===s,u=o.toLowerCase();return c||a||!st.includes(u)?ot.includes(o.toLowerCase())?(r=6,c?(t.consume(s),w):i.interrupt?e(s):D(s)):(r=7,i.interrupt&&!i.parser.lazy[i.now().line]?n(s):a?m(s):y(s)):(r=1,i.interrupt?e(s):D(s))}return 45===s||g(s)?(t.consume(s),o+=String.fromCharCode(s),b):n(s)}function w(r){return 62===r?(t.consume(r),i.interrupt?e:D):n(r)}function m(e){return k(e)?(t.consume(e),m):I(e)}function y(e){return 47===e?(t.consume(e),I):58===e||95===e||d(e)?(t.consume(e),_):k(e)?(t.consume(e),y):I(e)}function _(e){return 45===e||46===e||58===e||95===e||g(e)?(t.consume(e),_):A(e)}function A(e){return 61===e?(t.consume(e),E):k(e)?(t.consume(e),A):y(e)}function E(e){return null===e||60===e||61===e||62===e||96===e?n(e):34===e||39===e?(t.consume(e),c=e,T):k(e)?(t.consume(e),E):C(e)}function T(e){return e===c?(t.consume(e),c=null,S):null===e||v(e)?n(e):(t.consume(e),T)}function C(e){return null===e||34===e||39===e||47===e||60===e||61===e||62===e||96===e||x(e)?A(e):(t.consume(e),C)}function S(t){return 47===t||62===t||k(t)?y(t):n(t)}function I(e){return 62===e?(t.consume(e),M):n(e)}function M(e){return null===e||v(e)?D(e):k(e)?(t.consume(e),M):n(e)}function D(e){return 45===e&&2===r?(t.consume(e),P):60===e&&1===r?(t.consume(e),B):62===e&&4===r?(t.consume(e),$):63===e&&3===r?(t.consume(e),j):93===e&&5===r?(t.consume(e),R):!v(e)||6!==r&&7!==r?null===e||v(e)?(t.exit("htmlFlowData"),O(e)):(t.consume(e),D):(t.exit("htmlFlowData"),t.check(ut,z,O)(e))}function O(e){return t.check(lt,L,z)(e)}function L(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),N}function N(e){return null===e||v(e)?O(e):(t.enter("htmlFlowData"),D(e))}function P(e){return 45===e?(t.consume(e),j):D(e)}function B(e){return 47===e?(t.consume(e),o="",F):D(e)}function F(e){if(62===e){const n=o.toLowerCase();return st.includes(n)?(t.consume(e),$):D(e)}return d(e)&&o.length<8?(t.consume(e),o+=String.fromCharCode(e),F):D(e)}function R(e){return 93===e?(t.consume(e),j):D(e)}function j(e){return 62===e?(t.consume(e),$):45===e&&2===r?(t.consume(e),j):D(e)}function $(e){return null===e||v(e)?(t.exit("htmlFlowData"),z(e)):(t.consume(e),$)}function z(n){return t.exit("htmlFlow"),e(n)}},resolveTo:function(t){let e=t.length;for(;e--&&("enter"!==t[e][0]||"htmlFlow"!==t[e][1].type););e>1&&"linePrefix"===t[e-2][1].type&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2));return t},concrete:!0},ut={tokenize:function(t,e,n){return function(i){return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),t.attempt(M,e,n)}},partial:!0},lt={tokenize:function(t,e,n){const i=this;return function(e){if(v(e))return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r;return n(e)};function r(t){return i.parser.lazy[i.now().line]?n(t):e(t)}},partial:!0};const ht={tokenize:function(t,e,n){const i=this;return function(e){if(null===e)return n(e);return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),r};function r(t){return i.parser.lazy[i.now().line]?n(t):e(t)}},partial:!0},ft={name:"codeFenced",tokenize:function(t,e,n){const i=this,r={tokenize:function(t,e,n){let r=0;return o;function o(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),c}function c(e){return t.enter("codeFencedFence"),k(e)?T(t,u,"linePrefix",i.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(e):u(e)}function u(e){return e===a?(t.enter("codeFencedFenceSequence"),l(e)):n(e)}function l(e){return e===a?(r++,t.consume(e),l):r>=s?(t.exit("codeFencedFenceSequence"),k(e)?T(t,h,"whitespace")(e):h(e)):n(e)}function h(i){return null===i||v(i)?(t.exit("codeFencedFence"),e(i)):n(i)}},partial:!0};let a,o=0,s=0;return function(e){return function(e){const n=i.events[i.events.length-1];return o=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,a=e,t.enter("codeFenced"),t.enter("codeFencedFence"),t.enter("codeFencedFenceSequence"),c(e)}(e)};function c(e){return e===a?(s++,t.consume(e),c):s<3?n(e):(t.exit("codeFencedFenceSequence"),k(e)?T(t,u,"whitespace")(e):u(e))}function u(n){return null===n||v(n)?(t.exit("codeFencedFence"),i.interrupt?e(n):t.check(ht,d,m)(n)):(t.enter("codeFencedFenceInfo"),t.enter("chunkString",{contentType:"string"}),l(n))}function l(e){return null===e||v(e)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),u(e)):k(e)?(t.exit("chunkString"),t.exit("codeFencedFenceInfo"),T(t,h,"whitespace")(e)):96===e&&e===a?n(e):(t.consume(e),l)}function h(e){return null===e||v(e)?u(e):(t.enter("codeFencedFenceMeta"),t.enter("chunkString",{contentType:"string"}),f(e))}function f(e){return null===e||v(e)?(t.exit("chunkString"),t.exit("codeFencedFenceMeta"),u(e)):96===e&&e===a?n(e):(t.consume(e),f)}function d(e){return t.attempt(r,m,g)(e)}function g(e){return t.enter("lineEnding"),t.consume(e),t.exit("lineEnding"),p}function p(e){return o>0&&k(e)?T(t,b,"linePrefix",o+1)(e):b(e)}function b(e){return null===e||v(e)?t.check(ht,d,m)(e):(t.enter("codeFlowValue"),w(e))}function w(e){return null===e||v(e)?(t.exit("codeFlowValue"),b(e)):(t.consume(e),w)}function m(n){return t.exit("codeFenced"),e(n)}},concrete:!0};const dt=document.createElement("i");function gt(t){const e="&"+t+";";dt.innerHTML=e;const n=dt.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===t)&&(n!==e&&n)}const pt={name:"characterReference",tokenize:function(t,e,n){const i=this;let r,a,o=0;return function(e){return t.enter("characterReference"),t.enter("characterReferenceMarker"),t.consume(e),t.exit("characterReferenceMarker"),s};function s(e){return 35===e?(t.enter("characterReferenceMarkerNumeric"),t.consume(e),t.exit("characterReferenceMarkerNumeric"),c):(t.enter("characterReferenceValue"),r=31,a=g,u(e))}function c(e){return 88===e||120===e?(t.enter("characterReferenceMarkerHexadecimal"),t.consume(e),t.exit("characterReferenceMarkerHexadecimal"),t.enter("characterReferenceValue"),r=6,a=m,u):(t.enter("characterReferenceValue"),r=7,a=w,u(e))}function u(s){if(59===s&&o){const r=t.exit("characterReferenceValue");return a!==g||gt(i.sliceSerialize(r))?(t.enter("characterReferenceMarker"),t.consume(s),t.exit("characterReferenceMarker"),t.exit("characterReference"),e):n(s)}return a(s)&&o++1&&t[f][1].end.offset-t[f][1].start.offset>1?2:1;const d=Object.assign({},t[n][1].end),g=Object.assign({},t[f][1].start);At(d,-s),At(g,s),a={type:s>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},t[n][1].end)},o={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},t[f][1].start),end:g},r={type:s>1?"strongText":"emphasisText",start:Object.assign({},t[n][1].end),end:Object.assign({},t[f][1].start)},i={type:s>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},o.end)},t[n][1].end=Object.assign({},a.start),t[f][1].start=Object.assign({},o.end),l=[],t[n][1].end.offset-t[n][1].start.offset&&(l=u(l,[["enter",t[n][1],e],["exit",t[n][1],e]])),l=u(l,[["enter",i,e],["enter",a,e],["exit",a,e],["enter",r,e]]),l=u(l,q(e.parser.constructs.insideSpan.null,t.slice(n+1,f),e)),l=u(l,[["exit",r,e],["enter",o,e],["exit",o,e],["exit",i,e]]),t[f][1].end.offset-t[f][1].start.offset?(h=2,l=u(l,[["enter",t[f][1],e],["exit",t[f][1],e]])):h=0,c(t,n-1,f-n+3,l),f=n+l.length-h-2;break}f=-1;for(;++f13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535==(65535&n)||65534==(65535&n)||n>1114111?"�":String.fromCharCode(n)}const jt=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function $t(t,e,n){if(e)return e;if(35===n.charCodeAt(0)){const t=n.charCodeAt(1),e=120===t||88===t;return Rt(n.slice(e?2:1),e?16:10)}return gt(n)||t}function zt(t){return t&&"object"==typeof t?"position"in t||"type"in t?Ht(t.position):"start"in t||"end"in t?Ht(t):"line"in t||"column"in t?qt(t):"":""}function qt(t){return Ut(t&&t.line)+":"+Ut(t&&t.column)}function Ht(t){return qt(t&&t.start)+"-"+qt(t&&t.end)}function Ut(t){return t&&"number"==typeof t?t:1}const Gt={}.hasOwnProperty,Yt=function(t,e,n){return"string"!=typeof e&&(n=e,e=void 0),function(t){const e={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(at),autolinkProtocol:I,autolinkEmail:I,atxHeading:u(et),blockQuote:u(K),characterEscape:I,characterReference:I,codeFenced:u(X),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(X,l),codeText:u(V,l),codeTextData:I,data:I,codeFlowValue:I,definition:u(Q),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(tt),hardBreakEscape:u(nt),hardBreakTrailing:u(nt),htmlFlow:u(it,l),htmlFlowData:I,htmlText:u(it,l),htmlTextData:I,image:u(rt),label:l,link:u(at),listItem:u(st),listItemValue:b,listOrdered:u(ot,p),listUnordered:u(ot),paragraph:u(ct),reference:H,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u(et),strong:u(ut),thematicBreak:u(ht)},exit:{atxHeading:f(),atxHeadingSequence:E,autolink:f(),autolinkEmail:W,autolinkProtocol:Z,blockQuote:f(),characterEscapeValue:M,characterReferenceMarkerHexadecimal:G,characterReferenceMarkerNumeric:G,characterReferenceValue:Y,codeFenced:f(v),codeFencedFence:y,codeFencedFenceInfo:w,codeFencedFenceMeta:m,codeFlowValue:M,codeIndented:f(x),codeText:f(P),codeTextData:M,data:M,definition:f(),definitionDestinationString:A,definitionLabelString:k,definitionTitleString:_,emphasis:f(),hardBreakEscape:f(O),hardBreakTrailing:f(O),htmlFlow:f(L),htmlFlowData:M,htmlText:f(N),htmlTextData:M,image:f(F),label:j,labelText:R,lineEnding:D,link:f(B),listItem:f(),listOrdered:f(),listUnordered:f(),paragraph:f(),referenceString:U,resourceDestinationString:$,resourceTitleString:z,resource:q,setextHeading:f(S),setextHeadingLineSequence:C,setextHeadingText:T,strong:f(),thematicBreak:f()}};Wt(e,(t||{}).mdastExtensions||[]);const n={};return i;function i(t){let n={type:"root",children:[]};const i={stack:[n],tokenStack:[],config:e,enter:h,exit:d,buffer:l,resume:g,setData:s,getData:c},a=[];let o=-1;for(;++o0){const t=i.tokenStack[i.tokenStack.length-1];(t[1]||Xt).call(i,void 0,t[0])}for(n.position={start:Zt(t.length>0?t[0][1].start:{line:1,column:1,offset:0}),end:Zt(t.length>0?t[t.length-2][1].end:{line:1,column:1,offset:0})},o=-1;++o{0!==n&&(r++,i.push([])),t.split(" ").forEach((t=>{t&&i[r].push({content:t,type:e})}))}))}else"strong"!==t.type&&"emphasis"!==t.type||t.children.forEach((e=>{a(e,t.type)}))}return n.forEach((t=>{"paragraph"===t.type&&t.children.forEach((t=>{a(t)}))})),i}function Jt(t,e,n){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*n-.1+"em").attr("dy",n+"em")}function te(t,e,n){const i=t.append("text"),r=Jt(i,1,e);ee(r,[{content:n,type:"normal"}]);const a=r.node().getComputedTextLength();return i.remove(),a}function ee(t,e){t.text(""),e.forEach(((e,n)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===n?i.text(e.content):i.text(" "+e.content)}))}const ne=(t,e="",{style:n="",isTitle:i=!1,classes:a="",useHtmlLabels:o=!0,isNode:s=!0,width:c,addSvgBackground:u=!1}={})=>{if(r.l.info("createText",e,n,i,a,o,s,u),o){const i=function(t){const{children:e}=Yt(t);return e.map((function t(e){return"text"===e.type?e.value.replace(/\n/g,"
"):"strong"===e.type?`${e.children.map(t).join("")}`:"emphasis"===e.type?`${e.children.map(t).join("")}`:"paragraph"===e.type?`

${e.children.map(t).join("")}

`:`Unsupported markdown: ${e.type}`})).join("")}(e);let o=function(t,e,n,i,r=!1){const a=t.append("foreignObject"),o=a.append("xhtml:div"),s=e.label,c=e.isNode?"nodeLabel":"edgeLabel";var u,l;o.html(`\n "+s+""),u=o,(l=e.labelStyle)&&u.attr("style",l),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("max-width",n+"px"),o.attr("xmlns","http://www.w3.org/1999/xhtml"),r&&o.attr("class","labelBkg");let h=o.node().getBoundingClientRect();return h.width===n&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",n+"px"),h=o.node().getBoundingClientRect()),a.style("width",h.width),a.style("height",h.height),a.node()}(t,{isNode:s,label:(0,r.H)(i).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``)),labelStyle:n.replace("fill:","color:")},c,a,u);return o}{const n=function(t,e,n,i=!1){const a=e.append("g");let o=a.insert("rect").attr("class","background");const s=a.append("text").attr("y","-10.1");let c=0;if(n.forEach((e=>{let n=e.map((t=>t.content)).join(" "),i="",o=[],u=0;if(te(a,1.1,n)<=t)o.push(n);else{for(let e=0;e<=n.length;e++)if(i=n.slice(u,e),r.l.info(i,u,e),te(a,1.1,i)>t){const t=n.slice(u,e).lastIndexOf(" ");t>-1&&(e=u+t+1),o.push(n.slice(u,e).trim()),u=e,i=null}null!=i&&o.push(i)}const l=o.map((t=>({content:t,type:e.type})));for(const t of l)ee(Jt(s,c,1.1),[t]),c++})),i){const t=s.node().getBBox(),e=2;return o.attr("x",-e).attr("y",-e).attr("width",t.width+2*e).attr("height",t.height+2*e),a.node()}return s.node()}(c,t,Qt(e),u);return n}}},3430:function(t,e,n){"use strict";n.d(e,{a:function(){return c},b:function(){return E},c:function(){return u},d:function(){return I},e:function(){return _},f:function(){return M},g:function(){return N},h:function(){return O},i:function(){return b},l:function(){return l},p:function(){return T},s:function(){return A},u:function(){return h}});var i=n(8540),r=n(1504),a=n(1524),o=n(3148);const s={extension:(t,e,n)=>{i.l.trace("Making markers for ",n),t.append("defs").append("marker").attr("id",e+"-extensionStart").attr("class","marker extension "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-compositionStart").attr("class","marker composition "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","white").attr("cx",6).attr("cy",7).attr("r",6)},point:(t,e)=>{t.append("marker").attr("id",e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",10).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(t,e)=>{t.append("marker").attr("id",e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(t,e)=>{t.append("marker").attr("id",e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(t,e)=>{t.append("defs").append("marker").attr("id",e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},c=(t,e,n,i)=>{e.forEach((e=>{s[e](t,n,i)}))};const u=(t,e,n,a)=>{let o=t||"";if("object"==typeof o&&(o=o[0]),(0,i.n)((0,i.c)().flowchart.htmlLabels)){o=o.replace(/\\n|\n/g,"
"),i.l.info("vertexText"+o);let t=function(t){const e=(0,r.Ys)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=e.append("xhtml:div"),i=t.label,a=t.isNode?"nodeLabel":"edgeLabel";var o,s;return n.html('"+i+""),o=n,(s=t.labelStyle)&&o.attr("style",s),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}({isNode:a,label:(0,i.H)(o).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``)),labelStyle:e.replace("fill:","color:")});return t}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let i=[];i="string"==typeof o?o.split(/\\n|\n|/gi):Array.isArray(o)?o:[];for(const e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),n?i.setAttribute("class","title-row"):i.setAttribute("class","row"),i.textContent=e.trim(),t.appendChild(i)}return t}},l=async(t,e,n,o)=>{let s;const c=e.useHtmlLabels||(0,i.n)((0,i.c)().flowchart.htmlLabels);s=n||"node default";const l=t.insert("g").attr("class",s).attr("id",e.domId||e.id),h=l.insert("g").attr("class","label").attr("style",e.labelStyle);let f;f=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const d=h.node();let g;g="markdown"===e.labelType?(0,a.c)(h,(0,i.d)((0,i.H)(f),(0,i.c)()),{useHtmlLabels:c,width:e.width||(0,i.c)().flowchart.wrappingWidth,classes:"markdown-node-label"}):d.appendChild(u((0,i.d)((0,i.H)(f),(0,i.c)()),e.labelStyle,!1,o));let p=g.getBBox();const b=e.padding/2;if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=g.children[0],e=(0,r.Ys)(g),n=t.getElementsByTagName("img");if(n){const t=""===f.replace(/]*>/g,"").trim();await Promise.all([...n].map((e=>new Promise((n=>e.addEventListener("load",(function(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,i.c)().fontSize?(0,i.c)().fontSize:window.getComputedStyle(document.body).fontSize,n=5;e.style.width=parseInt(t,10)*n+"px"}else e.style.width="100%";n(e)})))))))}p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return c?h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):h.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&h.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),h.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:b,label:h}},h=(t,e)=>{const n=e.node().getBBox();t.width=n.width,t.height=n.height};function f(t,e,n,i){return t.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+n/2+")")}function d(t,e,n,i){var r=t.x,a=t.y,o=r-i.x,s=a-i.y,c=Math.sqrt(e*e*s*s+n*n*o*o),u=Math.abs(e*n*o/c);i.x0}const b=(t,e)=>{var n,i,r=t.x,a=t.y,o=e.x-r,s=e.y-a,c=t.width/2,u=t.height/2;return Math.abs(s)*c>Math.abs(o)*u?(s<0&&(u=-u),n=0===s?0:u*o/s,i=u):(o<0&&(c=-c),n=c,i=0===o?0:c*s/o),{x:r+n,y:a+i}},w={node:function(t,e){return t.intersect(e)},circle:function(t,e,n){return d(t,e,e,n)},ellipse:d,polygon:function(t,e,n){var i=t.x,r=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));for(var c=i-t.width/2-o,u=r-t.height/2-s,l=0;l1&&a.sort((function(t,e){var i=t.x-n.x,r=t.y-n.y,a=Math.sqrt(i*i+r*r),o=e.x-n.x,s=e.y-n.y,c=Math.sqrt(o*o+s*s);return a{const{shapeSvg:n,bbox:r}=await l(t,e,void 0,!0),a=r.width+e.padding+(r.height+e.padding),o=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];i.l.info("Question main (Circle)");const s=f(n,a,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return i.l.warn("Intersect called"),w.polygon(e,o,t)},n};function y(t,e,n,r){const a=[],o=t=>{a.push(t,0)},s=t=>{a.push(0,t)};e.includes("t")?(i.l.debug("add top border"),o(n)):s(n),e.includes("r")?(i.l.debug("add right border"),o(r)):s(r),e.includes("b")?(i.l.debug("add bottom border"),o(n)):s(n),e.includes("l")?(i.l.debug("add left border"),o(r)):s(r),t.attr("stroke-dasharray",a.join(" "))}const v=(t,e,n)=>{const i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let r=70,a=10;"LR"===n&&(r=10,a=70);const o=i.append("rect").attr("x",-1*r/2).attr("y",-1*a/2).attr("width",r).attr("height",a).attr("class","fork-join");return h(e,o),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return w.rect(e,t)},i},x={rhombus:m,question:m,rect:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,"node "+e.classes,!0),o=n.insert("rect",":first-child"),s=r.width+e.padding,c=r.height+e.padding;if(o.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-a).attr("y",-r.height/2-a).attr("width",s).attr("height",c),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(y(o,e.props.borders,s,c),t.delete("borders")),t.forEach((t=>{i.l.warn(`Unknown node property ${t}`)}))}return h(e,o),e.intersect=function(t){return w.rect(e,t)},n},labelRect:async(t,e)=>{const{shapeSvg:n}=await l(t,e,"label",!0);i.l.trace("Classes = ",e.classes);const r=n.insert("rect",":first-child");if(r.attr("width",0).attr("height",0),n.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(y(r,e.props.borders,0,0),t.delete("borders")),t.forEach((t=>{i.l.warn(`Unknown node property ${t}`)}))}return h(e,r),e.intersect=function(t){return w.rect(e,t)},n},rectWithTitle:(t,e)=>{let n;n=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),o=a.insert("rect",":first-child"),s=a.insert("line"),c=a.insert("g").attr("class","label"),l=e.labelText.flat?e.labelText.flat():e.labelText;let f="";f="object"==typeof l?l[0]:l,i.l.info("Label text abc79",f,l,"object"==typeof l);const d=c.node().appendChild(u(f,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=d.children[0],e=(0,r.Ys)(d);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}i.l.info("Text 2",l);const p=l.slice(1,l.length);let b=d.getBBox();const m=c.node().appendChild(u(p.join?p.join("
"):p,e.labelStyle,!0,!0));if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=m.children[0],e=(0,r.Ys)(m);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const y=e.padding/2;return(0,r.Ys)(m).attr("transform","translate( "+(g.width>b.width?0:(b.width-g.width)/2)+", "+(b.height+y+5)+")"),(0,r.Ys)(d).attr("transform","translate( "+(g.width{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return n.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return w.circle(e,14,t)},n},circle:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,void 0,!0),o=n.insert("circle",":first-child");return o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),i.l.info("Circle main"),h(e,o),e.intersect=function(t){return i.l.info("Circle intersect",e,r.width/2+a,t),w.circle(e,r.width/2+a,t)},n},doublecircle:async(t,e)=>{const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,void 0,!0),o=n.insert("g",":first-child"),s=o.insert("circle"),c=o.insert("circle");return s.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a+5).attr("width",r.width+e.padding+10).attr("height",r.height+e.padding+10),c.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",r.width/2+a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),i.l.info("DoubleCircle main"),h(e,s),e.intersect=function(t){return i.l.info("DoubleCircle intersect",e,r.width/2+a+5,t),w.circle(e,r.width/2+a+5,t)},n},stadium:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.height+e.padding,a=i.width+r/4+e.padding,o=n.insert("rect",":first-child").attr("style",e.style).attr("rx",r/2).attr("ry",r/2).attr("x",-a/2).attr("y",-r/2).attr("width",a).attr("height",r);return h(e,o),e.intersect=function(t){return w.rect(e,t)},n},hexagon:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.height+e.padding,a=r/4,o=i.width+2*a+e.padding,s=[{x:a,y:0},{x:o-a,y:0},{x:o,y:-r/2},{x:o-a,y:-r},{x:a,y:-r},{x:0,y:-r/2}],c=f(n,o,r,s);return c.attr("style",e.style),h(e,c),e.intersect=function(t){return w.polygon(e,s,t)},n},rect_left_inv_arrow:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-a/2,y:0},{x:r,y:0},{x:r,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return f(n,r,a,o).attr("style",e.style),e.width=r+a,e.height=a,e.intersect=function(t){return w.polygon(e,o,t)},n},lean_right:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-2*a/6,y:0},{x:r-a/6,y:0},{x:r+2*a/6,y:-a},{x:a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},lean_left:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:2*a/6,y:0},{x:r+a/6,y:0},{x:r-2*a/6,y:-a},{x:-a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},trapezoid:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:-2*a/6,y:0},{x:r+2*a/6,y:0},{x:r-a/6,y:-a},{x:a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},inv_trapezoid:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:a/6,y:0},{x:r-a/6,y:0},{x:r+2*a/6,y:-a},{x:-2*a/6,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},rect_right_inv_arrow:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:0,y:0},{x:r+a/2,y:0},{x:r,y:-a/2},{x:r+a/2,y:-a},{x:0,y:-a}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},cylinder:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=r/2,o=a/(2.5+r/50),s=i.height+o+e.padding,c="M 0,"+o+" a "+a+","+o+" 0,0,0 "+r+" 0 a "+a+","+o+" 0,0,0 "+-r+" 0 l 0,"+s+" a "+a+","+o+" 0,0,0 "+r+" 0 l 0,"+-s,u=n.attr("label-offset-y",o).insert("path",":first-child").attr("style",e.style).attr("d",c).attr("transform","translate("+-r/2+","+-(s/2+o)+")");return h(e,u),e.intersect=function(t){const n=w.rect(e,t),i=n.x-e.x;if(0!=a&&(Math.abs(i)e.height/2-o)){let r=o*o*(1-i*i/(a*a));0!=r&&(r=Math.sqrt(r)),r=o-r,t.y-e.y>0&&(r=-r),n.y+=r}return n},n},start:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=n.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),h(e,i),e.intersect=function(t){return w.circle(e,7,t)},n},end:(t,e)=>{const n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=n.insert("circle",":first-child"),r=n.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),i.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),h(e,r),e.intersect=function(t){return w.circle(e,7,t)},n},note:async(t,e)=>{e.useHtmlLabels||(0,i.c)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:n,bbox:r,halfPadding:a}=await l(t,e,"node "+e.classes,!0);i.l.info("Classes = ",e.classes);const o=n.insert("rect",":first-child");return o.attr("rx",e.rx).attr("ry",e.ry).attr("x",-r.width/2-a).attr("y",-r.height/2-a).attr("width",r.width+e.padding).attr("height",r.height+e.padding),h(e,o),e.intersect=function(t){return w.rect(e,t)},n},subroutine:async(t,e)=>{const{shapeSvg:n,bbox:i}=await l(t,e,void 0,!0),r=i.width+e.padding,a=i.height+e.padding,o=[{x:0,y:0},{x:r,y:0},{x:r,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:r+8,y:0},{x:r+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],s=f(n,r,a,o);return s.attr("style",e.style),h(e,s),e.intersect=function(t){return w.polygon(e,o,t)},n},fork:v,join:v,class_box:(t,e)=>{const n=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),c=s.insert("rect",":first-child"),l=s.insert("line"),f=s.insert("line");let d=0,g=4;const p=s.insert("g").attr("class","label");let b=0;const m=e.classData.annotations&&e.classData.annotations[0],y=e.classData.annotations[0]?"«"+e.classData.annotations[0]+"»":"",v=p.node().appendChild(u(y,e.labelStyle,!0,!0));let x=v.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=v.children[0],e=(0,r.Ys)(v);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(g+=x.height+4,d+=x.width);let k=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,i.c)().flowchart.htmlLabels?k+="<"+e.classData.type+">":k+="<"+e.classData.type+">");const _=p.node().appendChild(u(k,e.labelStyle,!0,!0));(0,r.Ys)(_).attr("class","classTitle");let A=_.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=_.children[0],e=(0,r.Ys)(_);A=t.getBoundingClientRect(),e.attr("width",A.width),e.attr("height",A.height)}g+=A.height+4,A.width>d&&(d=A.width);const E=[];e.classData.members.forEach((t=>{const n=(0,o.p)(t);let a=n.displayText;(0,i.c)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=p.node().appendChild(u(a,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let c=s.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=s.children[0],e=(0,r.Ys)(s);c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}c.width>d&&(d=c.width),g+=c.height+4,E.push(s)})),g+=8;const T=[];if(e.classData.methods.forEach((t=>{const n=(0,o.p)(t);let a=n.displayText;(0,i.c)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=p.node().appendChild(u(a,n.cssStyle?n.cssStyle:e.labelStyle,!0,!0));let c=s.getBBox();if((0,i.n)((0,i.c)().flowchart.htmlLabels)){const t=s.children[0],e=(0,r.Ys)(s);c=t.getBoundingClientRect(),e.attr("width",c.width),e.attr("height",c.height)}c.width>d&&(d=c.width),g+=c.height+4,T.push(s)})),g+=8,m){let t=(d-x.width)/2;(0,r.Ys)(v).attr("transform","translate( "+(-1*d/2+t)+", "+-1*g/2+")"),b=x.height+4}let C=(d-A.width)/2;return(0,r.Ys)(_).attr("transform","translate( "+(-1*d/2+C)+", "+(-1*g/2+b)+")"),b+=A.height+4,l.attr("class","divider").attr("x1",-d/2-n).attr("x2",d/2+n).attr("y1",-g/2-n+8+b).attr("y2",-g/2-n+8+b),b+=8,E.forEach((t=>{(0,r.Ys)(t).attr("transform","translate( "+-d/2+", "+(-1*g/2+b+4)+")"),b+=A.height+4})),b+=8,f.attr("class","divider").attr("x1",-d/2-n).attr("x2",d/2+n).attr("y1",-g/2-n+8+b).attr("y2",-g/2-n+8+b),b+=8,T.forEach((t=>{(0,r.Ys)(t).attr("transform","translate( "+-d/2+", "+(-1*g/2+b)+")"),b+=A.height+4})),c.attr("class","outer title-state").attr("x",-d/2-n).attr("y",-g/2-n).attr("width",d+e.padding).attr("height",g+e.padding),h(e,c),e.intersect=function(t){return w.rect(e,t)},s}};let k={};const _=async(t,e,n)=>{let r,a;if(e.link){let o;"sandbox"===(0,i.c)().securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),r=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o),a=await x[e.shape](r,e,n)}else a=await x[e.shape](t,e,n),r=a;return e.tooltip&&a.attr("title",e.tooltip),e.class&&a.attr("class","node default "+e.class),k[e.id]=r,e.haveCallback&&k[e.id].attr("class",k[e.id].attr("class")+" clickable"),r},A=(t,e)=>{k[e.id]=t},E=()=>{k={}},T=t=>{const e=k[t.id];i.l.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n};let C={},S={};const I=()=>{C={},S={}},M=(t,e)=>{const n=(0,i.n)((0,i.c)().flowchart.htmlLabels),o="markdown"===e.labelType?(0,a.c)(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0}):u(e.label,e.labelStyle);i.l.info("abc82",e,e.labelType);const s=t.insert("g").attr("class","edgeLabel"),c=s.insert("g").attr("class","label");c.node().appendChild(o);let l,h=o.getBBox();if(n){const t=o.children[0],e=(0,r.Ys)(o);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}if(c.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),C[e.id]=s,e.width=h.width,e.height=h.height,e.startLabelLeft){const n=u(e.startLabelLeft,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),S[e.id]||(S[e.id]={}),S[e.id].startLeft=i,D(l,e.startLabelLeft)}if(e.startLabelRight){const n=u(e.startLabelRight,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=i.node().appendChild(n),r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),S[e.id]||(S[e.id]={}),S[e.id].startRight=i,D(l,e.startLabelRight)}if(e.endLabelLeft){const n=u(e.endLabelLeft,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),i.node().appendChild(n),S[e.id]||(S[e.id]={}),S[e.id].endLeft=i,D(l,e.endLabelLeft)}if(e.endLabelRight){const n=u(e.endLabelRight,e.labelStyle),i=t.insert("g").attr("class","edgeTerminals"),r=i.insert("g").attr("class","inner");l=r.node().appendChild(n);const a=n.getBBox();r.attr("transform","translate("+-a.width/2+", "+-a.height/2+")"),i.node().appendChild(n),S[e.id]||(S[e.id]={}),S[e.id].endRight=i,D(l,e.endLabelRight)}return o};function D(t,e){(0,i.c)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}const O=(t,e)=>{i.l.info("Moving label abc78 ",t.id,t.label,C[t.id]);let n=e.updatedPath?e.updatedPath:e.originalPath;if(t.label){const r=C[t.id];let a=t.x,o=t.y;if(n){const r=i.u.calcLabelPosition(n);i.l.info("Moving label "+t.label+" from (",a,",",o,") to (",r.x,",",r.y,") abc78"),e.updatedPath&&(a=r.x,o=r.y)}r.attr("transform","translate("+a+", "+o+")")}if(t.startLabelLeft){const e=S[t.id].startLeft;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.startLabelRight){const e=S[t.id].startRight;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.endLabelLeft){const e=S[t.id].endLeft;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}if(t.endLabelRight){const e=S[t.id].endRight;let r=t.x,a=t.y;if(n){const e=i.u.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",n);r=e.x,a=e.y}e.attr("transform","translate("+r+", "+a+")")}},L=(t,e)=>{i.l.warn("abc88 cutPathAtIntersect",t,e);let n=[],r=t[0],a=!1;return t.forEach((t=>{if(i.l.info("abc88 checking point",t,e),((t,e)=>{const n=t.x,i=t.y,r=Math.abs(e.x-n),a=Math.abs(e.y-i),o=t.width/2,s=t.height/2;return r>=o||a>=s})(e,t)||a)i.l.warn("abc88 outside",t,r),r=t,a||n.push(t);else{const o=((t,e,n)=>{i.l.warn(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(n)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const r=t.x,a=t.y,o=Math.abs(r-n.x),s=t.width/2;let c=n.xMath.abs(r-e.x)*u){let t=n.y{s=s||t.x===o.x&&t.y===o.y})),n.some((t=>t.x===o.x&&t.y===o.y))?i.l.warn("abc88 no intersect",o,n):n.push(o),a=!0}})),i.l.warn("abc88 returning points",n),n},N=function(t,e,n,a,o,s){let c=n.points,u=!1;const l=s.node(e.v);var h=s.node(e.w);i.l.info("abc88 InsertEdge: ",n),h.intersect&&l.intersect&&(c=c.slice(1,n.points.length-1),c.unshift(l.intersect(c[0])),i.l.info("Last point",c[c.length-1],h,h.intersect(c[c.length-1])),c.push(h.intersect(c[c.length-1]))),n.toCluster&&(i.l.info("to cluster abc88",a[n.toCluster]),c=L(n.points,a[n.toCluster].node),u=!0),n.fromCluster&&(i.l.info("from cluster abc88",a[n.fromCluster]),c=L(c.reverse(),a[n.fromCluster].node).reverse(),u=!0);const f=c.filter((t=>!Number.isNaN(t.y)));let d;d=("graph"===o||"flowchart"===o)&&n.curve||r.$0Z;const g=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(d);let p;switch(n.thickness){case"normal":p="edge-thickness-normal";break;case"thick":case"invisible":p="edge-thickness-thick";break;default:p=""}switch(n.pattern){case"solid":p+=" edge-pattern-solid";break;case"dotted":p+=" edge-pattern-dotted";break;case"dashed":p+=" edge-pattern-dashed"}const b=t.append("path").attr("d",g(f)).attr("id",n.id).attr("class"," "+p+(n.classes?" "+n.classes:"")).attr("style",n.style);let w="";switch(((0,i.c)().flowchart.arrowMarkerAbsolute||(0,i.c)().state.arrowMarkerAbsolute)&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),i.l.info("arrowTypeStart",n.arrowTypeStart),i.l.info("arrowTypeEnd",n.arrowTypeEnd),n.arrowTypeStart){case"arrow_cross":b.attr("marker-start","url("+w+"#"+o+"-crossStart)");break;case"arrow_point":b.attr("marker-start","url("+w+"#"+o+"-pointStart)");break;case"arrow_barb":b.attr("marker-start","url("+w+"#"+o+"-barbStart)");break;case"arrow_circle":b.attr("marker-start","url("+w+"#"+o+"-circleStart)");break;case"aggregation":b.attr("marker-start","url("+w+"#"+o+"-aggregationStart)");break;case"extension":b.attr("marker-start","url("+w+"#"+o+"-extensionStart)");break;case"composition":b.attr("marker-start","url("+w+"#"+o+"-compositionStart)");break;case"dependency":b.attr("marker-start","url("+w+"#"+o+"-dependencyStart)");break;case"lollipop":b.attr("marker-start","url("+w+"#"+o+"-lollipopStart)")}switch(n.arrowTypeEnd){case"arrow_cross":b.attr("marker-end","url("+w+"#"+o+"-crossEnd)");break;case"arrow_point":b.attr("marker-end","url("+w+"#"+o+"-pointEnd)");break;case"arrow_barb":b.attr("marker-end","url("+w+"#"+o+"-barbEnd)");break;case"arrow_circle":b.attr("marker-end","url("+w+"#"+o+"-circleEnd)");break;case"aggregation":b.attr("marker-end","url("+w+"#"+o+"-aggregationEnd)");break;case"extension":b.attr("marker-end","url("+w+"#"+o+"-extensionEnd)");break;case"composition":b.attr("marker-end","url("+w+"#"+o+"-compositionEnd)");break;case"dependency":b.attr("marker-end","url("+w+"#"+o+"-dependencyEnd)");break;case"lollipop":b.attr("marker-end","url("+w+"#"+o+"-lollipopEnd)")}let m={};return u&&(m.updatedPath=c),m.originalPath=n.points,m}},6787:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return O}});var i=n(8540),r=n(8066),a=n(1504),o=n(1768);const s=[];for(let t=0;t<256;++t)s.push((t+256).toString(16).slice(1));function c(t,e=0){return(s[t[e+0]]+s[t[e+1]]+s[t[e+2]]+s[t[e+3]]+"-"+s[t[e+4]]+s[t[e+5]]+"-"+s[t[e+6]]+s[t[e+7]]+"-"+s[t[e+8]]+s[t[e+9]]+"-"+s[t[e+10]]+s[t[e+11]]+s[t[e+12]]+s[t[e+13]]+s[t[e+14]]+s[t[e+15]]).toLowerCase()}var u=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;var l=function(t){return"string"==typeof t&&u.test(t)};var h=function(t){if(!l(t))throw TypeError("Invalid UUID");let e;const n=new Uint8Array(16);return n[0]=(e=parseInt(t.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n};function f(t,e,n,i){switch(t){case 0:return e&n^~e&i;case 1:case 3:return e^n^i;case 2:return e&n^e&i^n&i}}function d(t,e){return t<>>32-e}var g=function(t,e,n){function i(t,i,r,a){var o;if("string"==typeof t&&(t=function(t){t=unescape(encodeURIComponent(t));const e=[];for(let n=0;n>>0;u=c,c=s,s=d(o,30)>>>0,o=r,r=a}n[0]=n[0]+r>>>0,n[1]=n[1]+o>>>0,n[2]=n[2]+s>>>0,n[3]=n[3]+c>>>0,n[4]=n[4]+u>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]})),p=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,23,25,27,29,30,31,52],r=[1,17],a=[1,18],o=[1,19],s=[1,20],c=[1,21],u=[1,22],l=[1,25],h=[1,30],f=[1,31],d=[1,32],g=[1,33],p=[1,34],b=[6,9,11,15,20,23,25,27,29,30,31,44,45,46,47,48,52],w=[1,46],m=[30,31,49,50],y=[4,6,9,11,23,25,27,29,30,31,52],v=[44,45,46,47,48],x=[22,37],k=[1,66],_=[1,65],A=[22,37,39,41],E={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,title:23,title_value:24,acc_title:25,acc_title_value:26,acc_descr:27,acc_descr_value:28,acc_descr_multiline_value:29,ALPHANUM:30,ENTITY_NAME:31,attribute:32,attributeType:33,attributeName:34,attributeKeyTypeList:35,attributeComment:36,ATTRIBUTE_WORD:37,attributeKeyType:38,COMMA:39,ATTRIBUTE_KEY:40,COMMENT:41,cardinality:42,relType:43,ZERO_OR_ONE:44,ZERO_OR_MORE:45,ONE_OR_MORE:46,ONLY_ONE:47,MD_PARENT:48,NON_IDENTIFYING:49,IDENTIFYING:50,WORD:51,open_directive:52,type_directive:53,arg_directive:54,close_directive:55,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"title",24:"title_value",25:"acc_title",26:"acc_title_value",27:"acc_descr",28:"acc_descr_value",29:"acc_descr_multiline_value",30:"ALPHANUM",31:"ENTITY_NAME",37:"ATTRIBUTE_WORD",39:"COMMA",40:"ATTRIBUTE_KEY",41:"COMMENT",44:"ZERO_OR_ONE",45:"ZERO_OR_MORE",46:"ONE_OR_MORE",47:"ONLY_ONE",48:"MD_PARENT",49:"NON_IDENTIFYING",50:"IDENTIFYING",51:"WORD",52:"open_directive",53:"type_directive",54:"arg_directive",55:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[10,2],[10,2],[10,2],[10,1],[17,1],[17,1],[21,1],[21,2],[32,2],[32,3],[32,3],[32,4],[33,1],[34,1],[35,1],[35,3],[38,1],[36,1],[18,3],[42,1],[42,1],[42,1],[42,1],[42,1],[43,1],[43,1],[19,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:break;case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:case 20:case 44:case 28:case 29:case 32:this.$=a[s];break;case 12:i.addEntity(a[s-4]),i.addEntity(a[s-2]),i.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 13:i.addEntity(a[s-3]),i.addAttributes(a[s-3],a[s-1]);break;case 14:i.addEntity(a[s-2]);break;case 15:i.addEntity(a[s]);break;case 16:case 17:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 21:case 42:case 43:case 33:this.$=a[s].replace(/"/g,"");break;case 22:case 30:this.$=[a[s]];break;case 23:a[s].push(a[s-1]),this.$=a[s];break;case 24:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 25:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeKeyTypeList:a[s]};break;case 26:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeComment:a[s]};break;case 27:this.$={attributeType:a[s-3],attributeName:a[s-2],attributeKeyTypeList:a[s-1],attributeComment:a[s]};break;case 31:a[s-2].push(a[s]),this.$=a[s-2];break;case 34:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 35:this.$=i.Cardinality.ZERO_OR_ONE;break;case 36:this.$=i.Cardinality.ZERO_OR_MORE;break;case 37:this.$=i.Cardinality.ONE_OR_MORE;break;case 38:this.$=i.Cardinality.ONLY_ONE;break;case 39:this.$=i.Cardinality.MD_PARENT;break;case 40:this.$=i.Identification.NON_IDENTIFYING;break;case 41:this.$=i.Identification.IDENTIFYING;break;case 45:i.parseDirective("%%{","open_directive");break;case 46:i.parseDirective(a[s],"type_directive");break;case 47:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 48:i.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:e,7:3,12:4,52:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,52:n},{13:8,53:[1,9]},{53:[2,45]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:r,25:a,27:o,29:s,30:c,31:u,52:n},{1:[2,2]},{14:23,15:[1,24],55:l},t([15,55],[2,46]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:15,10:26,12:4,17:16,23:r,25:a,27:o,29:s,30:c,31:u,52:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),t(i,[2,15],{18:27,42:29,20:[1,28],44:h,45:f,46:d,47:g,48:p}),{24:[1,35]},{26:[1,36]},{28:[1,37]},t(i,[2,19]),t(b,[2,20]),t(b,[2,21]),{11:[1,38]},{16:39,54:[1,40]},{11:[2,48]},t(i,[2,5]),{17:41,30:c,31:u},{21:42,22:[1,43],32:44,33:45,37:w},{43:47,49:[1,48],50:[1,49]},t(m,[2,35]),t(m,[2,36]),t(m,[2,37]),t(m,[2,38]),t(m,[2,39]),t(i,[2,16]),t(i,[2,17]),t(i,[2,18]),t(y,[2,9]),{14:50,55:l},{55:[2,47]},{15:[1,51]},{22:[1,52]},t(i,[2,14]),{21:53,22:[2,22],32:44,33:45,37:w},{34:54,37:[1,55]},{37:[2,28]},{42:56,44:h,45:f,46:d,47:g,48:p},t(v,[2,40]),t(v,[2,41]),{11:[1,57]},{19:58,30:[1,61],31:[1,60],51:[1,59]},t(i,[2,13]),{22:[2,23]},t(x,[2,24],{35:62,36:63,38:64,40:k,41:_}),t([22,37,40,41],[2,29]),t([30,31],[2,34]),t(y,[2,10]),t(i,[2,12]),t(i,[2,42]),t(i,[2,43]),t(i,[2,44]),t(x,[2,25],{36:67,39:[1,68],41:_}),t(x,[2,26]),t(A,[2,30]),t(x,[2,33]),t(A,[2,32]),t(x,[2,27]),{38:69,40:k},t(A,[2,31])],defaultActions:{5:[2,45],7:[2,2],25:[2,48],40:[2,47],46:[2,28],53:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},T={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("acc_title"),25;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),27;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.begin("open_directive"),52;case 8:return this.begin("type_directive"),53;case 9:return this.popState(),this.begin("arg_directive"),15;case 10:return this.popState(),this.popState(),55;case 11:return 54;case 12:return 11;case 13:case 20:case 25:break;case 14:return 9;case 15:return 31;case 16:return 51;case 17:return 4;case 18:return this.begin("block"),20;case 19:return 39;case 21:return 40;case 22:case 23:return 37;case 24:return 41;case 26:return this.popState(),22;case 27:case 57:return e.yytext[0];case 28:case 32:case 33:case 46:return 44;case 29:case 30:case 31:case 39:case 41:case 48:return 46;case 34:case 35:case 36:case 37:case 38:case 40:case 47:return 45;case 42:case 43:case 44:case 45:return 47;case 49:return 48;case 50:case 53:case 54:case 55:return 49;case 51:case 52:return 50;case 56:return 30;case 58:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},open_directive:{rules:[8],inclusive:!1},type_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[10,11],inclusive:!1},block:{rules:[19,20,21,22,23,24,25,26,27],inclusive:!1},INITIAL:{rules:[0,2,4,7,12,13,14,15,16,17,18,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],inclusive:!0}}};function C(){this.yy={}}return E.lexer=T,C.prototype=E,E.Parser=C,new C}());p.parser=p;const b=p;let w={},m=[];const y=function(t){return void 0===w[t]&&(w[t]={attributes:[]},i.l.info("Added new entity :",t)),w[t]},v={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().er,addEntity:y,addAttributes:function(t,e){let n,r=y(t);for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),i.l.debug("Added attribute ",e[n].attributeName)},getEntities:()=>w,addRelationship:function(t,e,n,r){let a={entityA:t,roleA:e,entityB:n,relSpec:r};m.push(a),i.l.debug("Added new relationship :",a)},getRelationships:()=>m,clear:function(){w={},m=[],(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,setDiagramTitle:i.r,getDiagramTitle:i.t},x={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},k=x,_=function(t,e){let n;t.append("defs").append("marker").attr("id",x.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",x.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",x.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",x.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",x.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",x.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),n=t.append("defs").append("marker").attr("id",x.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),n.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},A=/[^\dA-Za-z](\W)*/g;let E={},T=new Map;const C=function(t,e,n){let r;return Object.keys(e).forEach((function(a){const o=function(t="",e=""){const n=t.replace(A,"");return`${D(e)}${D(n)}${g(t,M)}`}(a,"entity");T.set(a,o);const s=t.append("g").attr("id",o);r=void 0===r?o:r;const c="text-"+o,u=s.append("text").classed("er entityLabel",!0).attr("id",c).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",E.fontSize+"px").text(a),{width:l,height:h}=((t,e,n)=>{const r=E.entityPadding/3,a=E.entityPadding/3,o=.85*E.fontSize,s=e.node().getBBox(),c=[];let u=!1,l=!1,h=0,f=0,d=0,g=0,p=s.height+2*r,b=1;n.forEach((t=>{void 0!==t.attributeKeyTypeList&&t.attributeKeyTypeList.length>0&&(u=!0),void 0!==t.attributeComment&&(l=!0)})),n.forEach((n=>{const a=`${e.node().id}-attr-${b}`;let s=0;const w=(0,i.x)(n.attributeType),m=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(w),y=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(n.attributeName),v={};v.tn=m,v.nn=y;const x=m.node().getBBox(),k=y.node().getBBox();if(h=Math.max(h,x.width),f=Math.max(f,k.width),s=Math.max(x.height,k.height),u){const e=void 0!==n.attributeKeyTypeList?n.attributeKeyTypeList.join(","):"",r=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(e);v.kn=r;const c=r.node().getBBox();d=Math.max(d,c.width),s=Math.max(s,c.height)}if(l){const e=t.append("text").classed("er entityLabel",!0).attr("id",`${a}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",(0,i.c)().fontFamily).style("font-size",o+"px").text(n.attributeComment||"");v.cn=e;const r=e.node().getBBox();g=Math.max(g,r.width),s=Math.max(s,r.height)}v.height=s,c.push(v),p+=s+2*r,b+=1}));let w=4;u&&(w+=2),l&&(w+=2);const m=h+f+d+g,y={width:Math.max(E.minEntityWidth,Math.max(s.width+2*E.entityPadding,m+a*w)),height:n.length>0?p:Math.max(E.minEntityHeight,s.height+2*E.entityPadding)};if(n.length>0){const n=Math.max(0,(y.width-m-a*w)/(w/2));e.attr("transform","translate("+y.width/2+","+(r+s.height/2)+")");let i=s.height+2*r,o="attributeBoxOdd";c.forEach((e=>{const s=i+r+e.height/2;e.tn.attr("transform","translate("+a+","+s+")");const c=t.insert("rect","#"+e.tn.node().id).classed(`er ${o}`,!0).attr("x",0).attr("y",i).attr("width",h+2*a+n).attr("height",e.height+2*r),p=parseFloat(c.attr("x"))+parseFloat(c.attr("width"));e.nn.attr("transform","translate("+(p+a)+","+s+")");const b=t.insert("rect","#"+e.nn.node().id).classed(`er ${o}`,!0).attr("x",p).attr("y",i).attr("width",f+2*a+n).attr("height",e.height+2*r);let w=parseFloat(b.attr("x"))+parseFloat(b.attr("width"));if(u){e.kn.attr("transform","translate("+(w+a)+","+s+")");const c=t.insert("rect","#"+e.kn.node().id).classed(`er ${o}`,!0).attr("x",w).attr("y",i).attr("width",d+2*a+n).attr("height",e.height+2*r);w=parseFloat(c.attr("x"))+parseFloat(c.attr("width"))}l&&(e.cn.attr("transform","translate("+(w+a)+","+s+")"),t.insert("rect","#"+e.cn.node().id).classed(`er ${o}`,"true").attr("x",w).attr("y",i).attr("width",g+2*a+n).attr("height",e.height+2*r)),i+=e.height+2*r,o="attributeBoxOdd"===o?"attributeBoxEven":"attributeBoxOdd"}))}else y.height=Math.max(E.minEntityHeight,p),e.attr("transform","translate("+y.width/2+","+y.height/2+")");return y})(s,u,e[a].attributes),f=s.insert("rect","#"+c).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",l).attr("height",h).node().getBBox();n.setNode(o,{width:f.width,height:f.height,shape:"rect",id:o})})),r},S=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")};let I=0;const M="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function D(t=""){return t.length>0?`${t}-`:""}const O={parser:b,db:v,renderer:{setConf:function(t){const e=Object.keys(t);for(const n of e)E[n]=t[n]},draw:function(t,e,n,s){E=(0,i.c)().er,i.l.info("Drawing ER diagram");const c=(0,i.c)().securityLevel;let u;"sandbox"===c&&(u=(0,a.Ys)("#i"+e));const l=("sandbox"===c?(0,a.Ys)(u.nodes()[0].contentDocument.body):(0,a.Ys)("body")).select(`[id='${e}']`);let h;_(l,E),h=new r.k({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:E.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));const f=C(l,s.db.getEntities(),h),d=function(t,e){return t.forEach((function(t){e.setEdge(T.get(t.entityA),T.get(t.entityB),{relationship:t},S(t))})),t}(s.db.getRelationships(),h);var g,p;(0,o.bK)(h),g=l,(p=h).nodes().forEach((function(t){void 0!==t&&void 0!==p.node(t)&&g.select("#"+t).attr("transform","translate("+(p.node(t).x-p.node(t).width/2)+","+(p.node(t).y-p.node(t).height/2)+" )")})),d.forEach((function(t){!function(t,e,n,r,o){I++;const s=n.edge(T.get(e.entityA),T.get(e.entityB),S(e)),c=(0,a.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.$0Z),u=t.insert("path","#"+r).classed("er relationshipLine",!0).attr("d",c(s.points)).style("stroke",E.stroke).style("fill","none");e.relSpec.relType===o.db.Identification.NON_IDENTIFYING&&u.attr("stroke-dasharray","8,8");let l="";switch(E.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),e.relSpec.cardA){case o.db.Cardinality.ZERO_OR_ONE:u.attr("marker-end","url("+l+"#"+k.ZERO_OR_ONE_END+")");break;case o.db.Cardinality.ZERO_OR_MORE:u.attr("marker-end","url("+l+"#"+k.ZERO_OR_MORE_END+")");break;case o.db.Cardinality.ONE_OR_MORE:u.attr("marker-end","url("+l+"#"+k.ONE_OR_MORE_END+")");break;case o.db.Cardinality.ONLY_ONE:u.attr("marker-end","url("+l+"#"+k.ONLY_ONE_END+")");break;case o.db.Cardinality.MD_PARENT:u.attr("marker-end","url("+l+"#"+k.MD_PARENT_END+")")}switch(e.relSpec.cardB){case o.db.Cardinality.ZERO_OR_ONE:u.attr("marker-start","url("+l+"#"+k.ZERO_OR_ONE_START+")");break;case o.db.Cardinality.ZERO_OR_MORE:u.attr("marker-start","url("+l+"#"+k.ZERO_OR_MORE_START+")");break;case o.db.Cardinality.ONE_OR_MORE:u.attr("marker-start","url("+l+"#"+k.ONE_OR_MORE_START+")");break;case o.db.Cardinality.ONLY_ONE:u.attr("marker-start","url("+l+"#"+k.ONLY_ONE_START+")");break;case o.db.Cardinality.MD_PARENT:u.attr("marker-start","url("+l+"#"+k.MD_PARENT_START+")")}const h=u.node().getTotalLength(),f=u.node().getPointAtLength(.5*h),d="rel"+I,g=t.append("text").classed("er relationshipLabel",!0).attr("id",d).attr("x",f.x).attr("y",f.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",(0,i.c)().fontFamily).style("font-size",E.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+d).classed("er relationshipLabelBox",!0).attr("x",f.x-g.width/2).attr("y",f.y-g.height/2).attr("width",g.width).attr("height",g.height)}(l,t,h,f,s)}));const b=E.diagramPadding;i.u.insertTitle(l,"entityTitleText",E.titleTopMargin,s.db.getDiagramTitle());const w=l.node().getBBox(),m=w.width+2*b,y=w.height+2*b;(0,i.i)(l,y,m,E.useMaxWidth),l.attr("viewBox",`${w.x-b} ${w.y-b} ${m} ${y}`)}},styles:t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${t.attributeBackgroundColorOdd};\n stroke: ${t.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${t.attributeBackgroundColorEven};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n \n`}},895:function(t,e,n){"use strict";n.d(e,{d:function(){return it},f:function(){return nt},p:function(){return o}});var i=n(1504),r=n(8540),a=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,9],n=[1,7],i=[1,6],r=[1,8],a=[1,20,21,22,23,38,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],o=[2,10],s=[1,20],c=[1,21],u=[1,22],l=[1,23],h=[1,30],f=[1,32],d=[1,33],g=[1,34],p=[1,62],b=[1,48],w=[1,52],m=[1,36],y=[1,37],v=[1,38],x=[1,39],k=[1,40],_=[1,56],A=[1,63],E=[1,51],T=[1,53],C=[1,55],S=[1,59],I=[1,60],M=[1,41],D=[1,42],O=[1,43],L=[1,44],N=[1,61],P=[1,50],B=[1,54],F=[1,57],R=[1,58],j=[1,49],$=[1,66],z=[1,71],q=[1,20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],H=[1,75],U=[1,74],G=[1,76],Y=[20,21,23,81,82],Z=[1,99],W=[1,104],K=[1,107],X=[1,108],V=[1,101],Q=[1,106],J=[1,109],tt=[1,102],et=[1,114],nt=[1,113],it=[1,103],rt=[1,105],at=[1,110],ot=[1,111],st=[1,112],ct=[1,115],ut=[20,21,22,23,81,82],lt=[20,21,22,23,53,81,82],ht=[20,21,22,23,40,52,53,55,57,59,61,63,65,66,67,69,71,73,74,76,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],ft=[20,21,23],dt=[20,21,23,52,66,67,81,82,92,96,106,107,110,112,113,123,124,125,126,127,128],gt=[1,12,20,21,22,23,24,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],pt=[52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],bt=[1,150],wt=[1,158],mt=[1,159],yt=[1,160],vt=[1,161],xt=[1,145],kt=[1,146],_t=[1,141],At=[1,142],Et=[1,153],Tt=[1,154],Ct=[1,155],St=[1,156],It=[1,157],Mt=[1,162],Dt=[1,163],Ot=[1,148],Lt=[1,151],Nt=[1,147],Pt=[1,144],Bt=[20,21,22,23,38,42,44,46,48,52,66,67,87,88,89,90,91,92,96,106,107,110,112,113,119,120,121,122,123,124,125,126,127,128],Ft=[1,166],Rt=[20,21,22,23,26,52,66,67,92,106,107,110,112,113,123,124,125,126,127,128],jt=[20,21,22,23,24,26,38,40,41,42,52,56,58,60,62,64,66,67,68,70,72,73,75,77,81,82,87,88,89,90,91,92,93,96,106,107,110,112,113,114,115,123,124,125,126,127,128],$t=[12,21,22,24],zt=[22,107],qt=[1,251],Ht=[1,246],Ut=[1,247],Gt=[1,255],Yt=[1,252],Zt=[1,249],Wt=[1,248],Kt=[1,250],Xt=[1,253],Vt=[1,254],Qt=[1,256],Jt=[1,274],te=[20,21,23,107],ee=[20,21,22,23,66,67,87,103,106,107,110,111,112,113,114],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,direction:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,link:49,node:50,vertex:51,AMP:52,STYLE_SEPARATOR:53,idString:54,DOUBLECIRCLESTART:55,DOUBLECIRCLEEND:56,PS:57,PE:58,"(-":59,"-)":60,STADIUMSTART:61,STADIUMEND:62,SUBROUTINESTART:63,SUBROUTINEEND:64,VERTEX_WITH_PROPS_START:65,ALPHA:66,COLON:67,PIPE:68,CYLINDERSTART:69,CYLINDEREND:70,DIAMOND_START:71,DIAMOND_STOP:72,TAGEND:73,TRAPSTART:74,TRAPEND:75,INVTRAPSTART:76,INVTRAPEND:77,linkStatement:78,arrowText:79,TESTSTR:80,START_LINK:81,LINK:82,textToken:83,STR:84,MD_STR:85,keywords:86,STYLE:87,LINKSTYLE:88,CLASSDEF:89,CLASS:90,CLICK:91,DOWN:92,UP:93,textNoTags:94,textNoTagsToken:95,DEFAULT:96,stylesOpt:97,alphaNum:98,CALLBACKNAME:99,CALLBACKARGS:100,HREF:101,LINK_TARGET:102,HEX:103,numList:104,INTERPOLATE:105,NUM:106,COMMA:107,style:108,styleComponent:109,MINUS:110,UNIT:111,BRKT:112,DOT:113,PCT:114,TAGSTART:115,alphaNumToken:116,idStringToken:117,alphaNumStatement:118,direction_tb:119,direction_bt:120,direction_rl:121,direction_lr:122,PUNCTUATION:123,UNICODE_TEXT:124,PLUS:125,EQUALS:126,MULT:127,UNDERSCORE:128,graphCodeTokens:129,ARROW_CROSS:130,ARROW_POINT:131,ARROW_CIRCLE:132,ARROW_OPEN:133,QUOTE:134,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",52:"AMP",53:"STYLE_SEPARATOR",55:"DOUBLECIRCLESTART",56:"DOUBLECIRCLEEND",57:"PS",58:"PE",59:"(-",60:"-)",61:"STADIUMSTART",62:"STADIUMEND",63:"SUBROUTINESTART",64:"SUBROUTINEEND",65:"VERTEX_WITH_PROPS_START",66:"ALPHA",67:"COLON",68:"PIPE",69:"CYLINDERSTART",70:"CYLINDEREND",71:"DIAMOND_START",72:"DIAMOND_STOP",73:"TAGEND",74:"TRAPSTART",75:"TRAPEND",76:"INVTRAPSTART",77:"INVTRAPEND",80:"TESTSTR",81:"START_LINK",82:"LINK",84:"STR",85:"MD_STR",87:"STYLE",88:"LINKSTYLE",89:"CLASSDEF",90:"CLASS",91:"CLICK",92:"DOWN",93:"UP",96:"DEFAULT",99:"CALLBACKNAME",100:"CALLBACKARGS",101:"HREF",102:"LINK_TARGET",103:"HEX",105:"INTERPOLATE",106:"NUM",107:"COMMA",110:"MINUS",111:"UNIT",112:"BRKT",113:"DOT",114:"PCT",115:"TAGSTART",119:"direction_tb",120:"direction_bt",121:"direction_rl",122:"direction_lr",123:"PUNCTUATION",124:"UNICODE_TEXT",125:"PLUS",126:"EQUALS",127:"MULT",128:"UNDERSCORE",130:"ARROW_CROSS",131:"ARROW_POINT",132:"ARROW_CIRCLE",133:"ARROW_OPEN",134:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[19,2],[19,2],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[50,1],[50,5],[50,3],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,8],[51,4],[51,4],[51,4],[51,6],[51,4],[51,4],[51,4],[51,4],[51,4],[51,1],[49,2],[49,3],[49,3],[49,1],[49,3],[78,1],[79,3],[39,1],[39,2],[39,1],[39,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[86,1],[94,1],[94,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[104,1],[104,3],[97,1],[97,3],[108,1],[108,2],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[95,1],[95,1],[95,1],[95,1],[54,1],[54,2],[98,1],[98,2],[118,1],[118,1],[118,1],[118,1],[43,1],[43,1],[43,1],[43,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1],[129,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 5:i.parseDirective("%%{","open_directive");break;case 6:i.parseDirective(a[s],"type_directive");break;case 7:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 8:i.parseDirective("}%%","close_directive","flowchart");break;case 10:case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 11:(!Array.isArray(a[s])||a[s].length>0)&&a[s-1].push(a[s]),this.$=a[s-1];break;case 12:case 97:case 153:case 155:case 156:case 78:case 151:this.$=a[s];break;case 19:i.setDirection("TB"),this.$="TB";break;case 20:i.setDirection(a[s-1]),this.$=a[s-1];break;case 35:this.$=a[s-1].nodes;break;case 41:this.$=i.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 42:this.$=i.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 43:this.$=i.addSubGraph(void 0,a[s-1],void 0);break;case 45:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 46:case 47:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 51:i.addLink(a[s-2].stmt,a[s],a[s-1]),this.$={stmt:a[s],nodes:a[s].concat(a[s-2].nodes)};break;case 52:i.addLink(a[s-3].stmt,a[s-1],a[s-2]),this.$={stmt:a[s-1],nodes:a[s-1].concat(a[s-3].nodes)};break;case 53:this.$={stmt:a[s-1],nodes:a[s-1]};break;case 54:this.$={stmt:a[s],nodes:a[s]};break;case 55:case 124:case 126:this.$=[a[s]];break;case 56:this.$=a[s-4].concat(a[s]);break;case 57:this.$=[a[s-2]],i.setClass(a[s-2],a[s]);break;case 58:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"square");break;case 59:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"doublecircle");break;case 60:this.$=a[s-5],i.addVertex(a[s-5],a[s-2],"circle");break;case 61:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"ellipse");break;case 62:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"stadium");break;case 63:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"subroutine");break;case 64:this.$=a[s-7],i.addVertex(a[s-7],a[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[a[s-5],a[s-3]]]));break;case 65:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"cylinder");break;case 66:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"round");break;case 67:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"diamond");break;case 68:this.$=a[s-5],i.addVertex(a[s-5],a[s-2],"hexagon");break;case 69:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"odd");break;case 70:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"trapezoid");break;case 71:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 72:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"lean_right");break;case 73:this.$=a[s-3],i.addVertex(a[s-3],a[s-1],"lean_left");break;case 74:this.$=a[s],i.addVertex(a[s]);break;case 75:a[s-1].text=a[s],this.$=a[s-1];break;case 76:case 77:a[s-2].text=a[s-1],this.$=a[s-2];break;case 79:var c=i.destructLink(a[s],a[s-2]);this.$={type:c.type,stroke:c.stroke,length:c.length,text:a[s-1]};break;case 80:c=i.destructLink(a[s]);this.$={type:c.type,stroke:c.stroke,length:c.length};break;case 81:this.$=a[s-1];break;case 82:case 84:this.$={text:a[s],type:"text"};break;case 83:this.$={text:a[s-1].text+""+a[s],type:a[s-1].type};break;case 85:this.$={text:a[s],type:"markdown"};break;case 98:case 154:case 152:this.$=a[s-1]+""+a[s];break;case 99:case 100:this.$=a[s-4],i.addClass(a[s-2],a[s]);break;case 101:this.$=a[s-4],i.setClass(a[s-2],a[s]);break;case 102:case 110:this.$=a[s-1],i.setClickEvent(a[s-1],a[s]);break;case 103:case 111:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-2]),i.setTooltip(a[s-3],a[s]);break;case 104:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 105:this.$=a[s-4],i.setClickEvent(a[s-4],a[s-3],a[s-2]),i.setTooltip(a[s-4],a[s]);break;case 106:case 112:this.$=a[s-1],i.setLink(a[s-1],a[s]);break;case 107:case 113:this.$=a[s-3],i.setLink(a[s-3],a[s-2]),i.setTooltip(a[s-3],a[s]);break;case 108:case 114:this.$=a[s-3],i.setLink(a[s-3],a[s-2],a[s]);break;case 109:case 115:this.$=a[s-5],i.setLink(a[s-5],a[s-4],a[s]),i.setTooltip(a[s-5],a[s-2]);break;case 116:this.$=a[s-4],i.addVertex(a[s-2],void 0,void 0,a[s]);break;case 117:case 119:this.$=a[s-4],i.updateLink(a[s-2],a[s]);break;case 118:this.$=a[s-4],i.updateLink([a[s-2]],a[s]);break;case 120:this.$=a[s-8],i.updateLinkInterpolate([a[s-6]],a[s-2]),i.updateLink([a[s-6]],a[s]);break;case 121:this.$=a[s-8],i.updateLinkInterpolate(a[s-6],a[s-2]),i.updateLink(a[s-6],a[s]);break;case 122:this.$=a[s-6],i.updateLinkInterpolate([a[s-4]],a[s]);break;case 123:this.$=a[s-6],i.updateLinkInterpolate(a[s-4],a[s]);break;case 125:case 127:a[s-2].push(a[s]),this.$=a[s-2];break;case 129:this.$=a[s-1]+a[s];break;case 157:this.$="v";break;case 158:this.$="-";break;case 159:this.$={stmt:"dir",value:"TB"};break;case 160:this.$={stmt:"dir",value:"BT"};break;case 161:this.$={stmt:"dir",value:"RL"};break;case 162:this.$={stmt:"dir",value:"LR"}}},table:[{3:1,4:2,5:3,6:5,12:e,16:4,21:n,22:i,24:r},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:e,16:4,21:n,22:i,24:r},t(a,o,{17:11}),{7:12,13:[1,13]},{16:14,21:n,22:i,24:r},{16:15,21:n,22:i,24:r},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{8:64,10:[1,65],15:$},t([10,15],[2,6]),t(a,[2,17]),t(a,[2,18]),t(a,[2,19]),{20:[1,68],21:[1,69],22:z,27:67,30:70},t(q,[2,11]),t(q,[2,12]),t(q,[2,13]),t(q,[2,14]),t(q,[2,15]),t(q,[2,16]),{9:72,20:H,21:U,23:G,49:73,78:77,81:[1,78],82:[1,79]},{9:80,20:H,21:U,23:G},{9:81,20:H,21:U,23:G},{9:82,20:H,21:U,23:G},{9:83,20:H,21:U,23:G},{9:84,20:H,21:U,23:G},{9:86,20:H,21:U,22:[1,85],23:G},t(q,[2,44]),{45:[1,87]},{47:[1,88]},t(q,[2,47]),t(Y,[2,54],{30:89,22:z}),{22:[1,90]},{22:[1,91]},{22:[1,92]},{22:[1,93]},{26:Z,52:W,66:K,67:X,84:[1,97],92:V,98:96,99:[1,94],101:[1,95],106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(q,[2,159]),t(q,[2,160]),t(q,[2,161]),t(q,[2,162]),t(ut,[2,55],{53:[1,116]}),t(lt,[2,74],{117:129,40:[1,117],52:p,55:[1,118],57:[1,119],59:[1,120],61:[1,121],63:[1,122],65:[1,123],66:b,67:w,69:[1,124],71:[1,125],73:[1,126],74:[1,127],76:[1,128],92:_,96:A,106:E,107:T,110:C,112:S,113:I,123:N,124:P,125:B,126:F,127:R,128:j}),t(ht,[2,151]),t(ht,[2,176]),t(ht,[2,177]),t(ht,[2,178]),t(ht,[2,179]),t(ht,[2,180]),t(ht,[2,181]),t(ht,[2,182]),t(ht,[2,183]),t(ht,[2,184]),t(ht,[2,185]),t(ht,[2,186]),t(ht,[2,187]),t(ht,[2,188]),t(ht,[2,189]),t(ht,[2,190]),t(ht,[2,191]),{9:130,20:H,21:U,23:G},{11:131,14:[1,132]},t(ft,[2,8]),t(a,[2,20]),t(a,[2,26]),t(a,[2,27]),{21:[1,133]},t(dt,[2,34],{30:134,22:z}),t(q,[2,35]),{50:135,51:45,52:p,54:46,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},t(gt,[2,48]),t(gt,[2,49]),t(gt,[2,50]),t(pt,[2,78],{79:136,68:[1,138],80:[1,137]}),{22:bt,24:wt,26:mt,38:yt,39:139,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t([52,66,67,68,80,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,80]),t(q,[2,36]),t(q,[2,37]),t(q,[2,38]),t(q,[2,39]),t(q,[2,40]),{22:bt,24:wt,26:mt,38:yt,39:164,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(Bt,o,{17:165}),t(q,[2,45]),t(q,[2,46]),t(Y,[2,53],{52:Ft}),{26:Z,52:W,66:K,67:X,92:V,98:167,103:[1,168],106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{96:[1,169],104:170,106:[1,171]},{26:Z,52:W,66:K,67:X,92:V,96:[1,172],98:173,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{26:Z,52:W,66:K,67:X,92:V,98:174,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,102],{22:[1,175],100:[1,176]}),t(ft,[2,106],{22:[1,177]}),t(ft,[2,110],{116:100,118:179,22:[1,178],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,112],{22:[1,180]}),t(Rt,[2,153]),t(Rt,[2,155]),t(Rt,[2,156]),t(Rt,[2,157]),t(Rt,[2,158]),t(jt,[2,163]),t(jt,[2,164]),t(jt,[2,165]),t(jt,[2,166]),t(jt,[2,167]),t(jt,[2,168]),t(jt,[2,169]),t(jt,[2,170]),t(jt,[2,171]),t(jt,[2,172]),t(jt,[2,173]),t(jt,[2,174]),t(jt,[2,175]),{52:p,54:181,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},{22:bt,24:wt,26:mt,38:yt,39:182,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:183,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:185,42:vt,52:W,57:[1,184],66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:186,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:187,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:188,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{66:[1,189]},{22:bt,24:wt,26:mt,38:yt,39:190,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:191,42:vt,52:W,66:K,67:X,71:[1,192],73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:193,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:194,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:195,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ht,[2,152]),t($t,[2,3]),{8:196,15:$},{15:[2,7]},t(a,[2,28]),t(dt,[2,33]),t(Y,[2,51],{30:197,22:z}),t(pt,[2,75],{22:[1,198]}),{22:[1,199]},{22:bt,24:wt,26:mt,38:yt,39:200,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,81:kt,82:[1,201],83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(jt,[2,82]),t(jt,[2,84]),t(jt,[2,85]),t(jt,[2,141]),t(jt,[2,142]),t(jt,[2,143]),t(jt,[2,144]),t(jt,[2,145]),t(jt,[2,146]),t(jt,[2,147]),t(jt,[2,148]),t(jt,[2,149]),t(jt,[2,150]),t(jt,[2,86]),t(jt,[2,87]),t(jt,[2,88]),t(jt,[2,89]),t(jt,[2,90]),t(jt,[2,91]),t(jt,[2,92]),t(jt,[2,93]),t(jt,[2,94]),t(jt,[2,95]),t(jt,[2,96]),{9:204,20:H,21:U,22:bt,23:G,24:wt,26:mt,38:yt,40:[1,203],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,205],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{22:z,30:206},{22:[1,207],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:[1,208]},{22:[1,209]},{22:[1,210],107:[1,211]},t(zt,[2,124]),{22:[1,212]},{22:[1,213],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:[1,214],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:179,123:it,124:rt,125:at,126:ot,127:st,128:ct},{84:[1,215]},t(ft,[2,104],{22:[1,216]}),{84:[1,217],102:[1,218]},{84:[1,219]},t(Rt,[2,154]),{84:[1,220],102:[1,221]},t(ut,[2,57],{117:129,52:p,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,123:N,124:P,125:B,126:F,127:R,128:j}),{22:bt,24:wt,26:mt,38:yt,41:[1,222],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,56:[1,223],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:224,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,58:[1,225],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,60:[1,226],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,62:[1,227],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,64:[1,228],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{67:[1,229]},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,70:[1,230],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,72:[1,231],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,39:232,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,41:[1,233],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,75:[1,234],77:[1,235],81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,73:xt,75:[1,237],77:[1,236],81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{9:238,20:H,21:U,23:G},t(Y,[2,52],{52:Ft}),t(pt,[2,77]),t(pt,[2,76]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,68:[1,239],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(pt,[2,79]),t(jt,[2,83]),{22:bt,24:wt,26:mt,38:yt,39:240,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(Bt,o,{17:241}),t(q,[2,43]),{51:242,52:p,54:46,66:b,67:w,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,123:N,124:P,125:B,126:F,127:R,128:j},{22:qt,66:Ht,67:Ut,87:Gt,97:243,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:257,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:258,103:Yt,105:[1,259],106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:260,103:Yt,105:[1,261],106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{106:[1,262]},{22:qt,66:Ht,67:Ut,87:Gt,97:263,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:264,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{26:Z,52:W,66:K,67:X,92:V,98:265,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,103]),{84:[1,266]},t(ft,[2,107],{22:[1,267]}),t(ft,[2,108]),t(ft,[2,111]),t(ft,[2,113],{22:[1,268]}),t(ft,[2,114]),t(lt,[2,58]),t(lt,[2,59]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,58:[1,269],66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,66]),t(lt,[2,61]),t(lt,[2,62]),t(lt,[2,63]),{66:[1,270]},t(lt,[2,65]),t(lt,[2,67]),{22:bt,24:wt,26:mt,38:yt,42:vt,52:W,66:K,67:X,72:[1,271],73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,72]),t(lt,[2,71]),t(lt,[2,73]),t($t,[2,4]),t([22,52,66,67,92,96,106,107,110,112,113,123,124,125,126,127,128],[2,81]),{22:bt,24:wt,26:mt,38:yt,41:[1,272],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,273],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},t(ut,[2,56]),t(ft,[2,116],{107:Jt}),t(te,[2,126],{109:275,22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt}),t(ee,[2,128]),t(ee,[2,130]),t(ee,[2,131]),t(ee,[2,132]),t(ee,[2,133]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ft,[2,117],{107:Jt}),t(ft,[2,118],{107:Jt}),{22:[1,276]},t(ft,[2,119],{107:Jt}),{22:[1,277]},t(zt,[2,125]),t(ft,[2,99],{107:Jt}),t(ft,[2,100],{107:Jt}),t(ft,[2,101],{116:100,118:179,26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,105]),{102:[1,278]},{102:[1,279]},{58:[1,280]},{68:[1,281]},{72:[1,282]},{9:283,20:H,21:U,23:G},t(q,[2,42]),{22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,108:284,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},t(ee,[2,129]),{26:Z,52:W,66:K,67:X,92:V,98:285,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},{26:Z,52:W,66:K,67:X,92:V,98:286,106:Q,107:J,110:tt,112:et,113:nt,116:100,118:98,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(ft,[2,109]),t(ft,[2,115]),t(lt,[2,60]),{22:bt,24:wt,26:mt,38:yt,39:287,42:vt,52:W,66:K,67:X,73:xt,81:kt,83:140,84:_t,85:At,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},t(lt,[2,68]),t(Bt,o,{17:288}),t(te,[2,127],{109:275,22:qt,66:Ht,67:Ut,87:Gt,103:Yt,106:Zt,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt}),t(ft,[2,122],{116:100,118:179,22:[1,289],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),t(ft,[2,123],{116:100,118:179,22:[1,290],26:Z,52:W,66:K,67:X,92:V,106:Q,107:J,110:tt,112:et,113:nt,123:it,124:rt,125:at,126:ot,127:st,128:ct}),{22:bt,24:wt,26:mt,38:yt,41:[1,291],42:vt,52:W,66:K,67:X,73:xt,81:kt,83:202,86:152,87:Et,88:Tt,89:Ct,90:St,91:It,92:Mt,93:Dt,95:143,96:Ot,106:Q,107:J,110:Lt,112:et,113:nt,114:Nt,115:Pt,116:149,123:it,124:rt,125:at,126:ot,127:st,128:ct},{18:18,19:19,20:s,21:c,22:u,23:l,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,292],43:31,44:f,46:d,48:g,50:35,51:45,52:p,54:46,66:b,67:w,87:m,88:y,89:v,90:x,91:k,92:_,96:A,106:E,107:T,110:C,112:S,113:I,117:47,119:M,120:D,121:O,122:L,123:N,124:P,125:B,126:F,127:R,128:j},{22:qt,66:Ht,67:Ut,87:Gt,97:293,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},{22:qt,66:Ht,67:Ut,87:Gt,97:294,103:Yt,106:Zt,108:244,109:245,110:Wt,111:Kt,112:Xt,113:Vt,114:Qt},t(lt,[2,64]),t(q,[2,41]),t(ft,[2,120],{107:Jt}),t(ft,[2,121],{107:Jt})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],132:[2,7]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},ie={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:return this.begin("acc_title"),44;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),46;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 14:case 16:case 25:case 28:case 31:case 34:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:this.begin("md_string");break;case 13:return"MD_STR";case 15:this.begin("string");break;case 17:return"STR";case 18:return 87;case 19:return 96;case 20:return 88;case 21:return 105;case 22:return 89;case 23:return 90;case 24:this.begin("href");break;case 26:return 101;case 27:this.begin("callbackname");break;case 29:this.popState(),this.begin("callbackargs");break;case 30:return 99;case 32:return 100;case 33:this.begin("click");break;case 35:return 91;case 36:case 37:case 38:return t.lex.firstGraph()&&this.begin("dir"),24;case 39:return 38;case 40:return 42;case 41:case 42:case 43:case 44:return 102;case 45:return this.popState(),25;case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:return this.popState(),26;case 56:return 119;case 57:return 120;case 58:return 121;case 59:return 122;case 60:return 106;case 61:return 112;case 62:return 53;case 63:return 67;case 64:return 52;case 65:return 20;case 66:return 107;case 67:return 127;case 68:case 69:case 70:case 71:return 82;case 72:case 73:case 74:return 81;case 75:return 59;case 76:return 60;case 77:return 61;case 78:return 62;case 79:return 63;case 80:return 64;case 81:return 65;case 82:return 69;case 83:return 70;case 84:return 55;case 85:return 56;case 86:return 110;case 87:return 113;case 88:return 128;case 89:return 125;case 90:return 114;case 91:case 92:return 126;case 93:return 115;case 94:return 73;case 95:return 93;case 96:return"SEP";case 97:return 92;case 98:return 66;case 99:return 75;case 100:return 74;case 101:return 77;case 102:return 76;case 103:return 123;case 104:return 124;case 105:return 68;case 106:return 57;case 107:return 58;case 108:return 40;case 109:return 41;case 110:return 71;case 111:return 72;case 112:return 134;case 113:return 21;case 114:return 22;case 115:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\])/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[31,32],inclusive:!1},callbackname:{rules:[28,29,30],inclusive:!1},href:{rules:[25,26],inclusive:!1},click:{rules:[34,35],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[45,46,47,48,49,50,51,52,53,54,55],inclusive:!1},acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},md_string:{rules:[13,14],inclusive:!1},string:{rules:[16,17],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,15,18,19,20,21,22,23,24,27,33,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],inclusive:!0}}};function re(){this.yy={}}return ne.lexer=ie,re.prototype=ne,ne.Parser=re,new re}();a.parser=a;const o=a;let s,c,u=0,l=(0,r.c)(),h={},f=[],d={},g=[],p={},b={},w=0,m=!0,y=[];const v=t=>r.e.sanitizeText(t,l),x=function(t,e,n){r.m.parseDirective(this,t,e,n)},k=function(t){const e=Object.keys(h);for(const n of e)if(h[n].id===t)return h[n].domId;return t},_=function(t,e,n,i,a,o,s={}){let c,f=t;void 0!==f&&0!==f.trim().length&&(void 0===h[f]&&(h[f]={id:f,labelType:"text",domId:"flowchart-"+f+"-"+u,styles:[],classes:[]}),u++,void 0!==e?(l=(0,r.c)(),c=v(e.text.trim()),h[f].labelType=e.type,'"'===c[0]&&'"'===c[c.length-1]&&(c=c.substring(1,c.length-1)),h[f].text=c):void 0===h[f].text&&(h[f].text=t),void 0!==n&&(h[f].type=n),null!=i&&i.forEach((function(t){h[f].styles.push(t)})),null!=a&&a.forEach((function(t){h[f].classes.push(t)})),void 0!==o&&(h[f].dir=o),void 0===h[f].props?h[f].props=s:void 0!==s&&Object.assign(h[f].props,s))},A=function(t,e,n){const i={start:t,end:e,type:void 0,text:"",labelType:"text"};r.l.info("abc78 Got edge...",i);const a=n.text;void 0!==a&&(i.text=v(a.text.trim()),'"'===i.text[0]&&'"'===i.text[i.text.length-1]&&(i.text=i.text.substring(1,i.text.length-1)),i.labelType=a.type),void 0!==n&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length),f.push(i)},E=function(t,e,n){let i,a;for(r.l.info("addLink (abc78)",t,e,n),i=0;i/)&&(s="LR"),s.match(/.*v/)&&(s="TB"),"TD"===s&&(s="TB")},M=function(t,e){t.split(",").forEach((function(t){let n=t;void 0!==h[n]&&h[n].classes.push(e),void 0!==p[n]&&p[n].classes.push(e)}))},D=function(t,e,n){t.split(",").forEach((function(t){void 0!==h[t]&&(h[t].link=r.u.formatUrl(e,l),h[t].linkTarget=n)})),M(t,"clickable")},O=function(t){return b[t]},L=function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){let i=k(t);if("loose"!==(0,r.c)().securityLevel)return;if(void 0===e)return;let a=[];if("string"==typeof n){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,i.Ys)(this).classed("hover",!1)}))};y.push(j);const $=function(t="gen-1"){h={},d={},f=[],y=[j],g=[],p={},w=0,b=[],m=!0,c=t,(0,r.v)()},z=t=>{c=t||"gen-2"},q=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},H=function(t,e,n){let i=t.text.trim(),a=n.text;t===n&&n.text.match(/\s/)&&(i=void 0);let o=[];const{nodeList:s,dir:u}=function(t){const e={boolean:{},number:{},string:{}},n=[];let i;return{nodeList:t.filter((function(t){const r=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(r in e?!e[r].hasOwnProperty(t)&&(e[r][t]=!0):!n.includes(t)&&n.push(t))})),dir:i}}(o.concat.apply(o,e));if(o=s,"gen-1"===c)for(let t=0;t2e3)return;if(Y[G]=e,g[e].id===t)return{result:!0,count:0};let i=0,r=1;for(;i=0){const n=Z(t,e);if(n.result)return{result:!0,count:r+n.count};r+=n.count}i+=1}return{result:!1,count:r}},W=function(t){return Y[t]},K=function(){G=-1,g.length>0&&Z("none",g.length-1)},X=function(){return g},V=()=>!!m&&(m=!1,!0),Q=(t,e)=>{const n=(t=>{const e=t.trim();let n=e.slice(0,-1),i="arrow_open";switch(e.slice(-1)){case"x":i="arrow_cross","x"===e[0]&&(i="double_"+i,n=n.slice(1));break;case">":i="arrow_point","<"===e[0]&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle","o"===e[0]&&(i="double_"+i,n=n.slice(1))}let r="normal",a=n.length-1;"="===n[0]&&(r="thick"),"~"===n[0]&&(r="invisible");let o=((t,e)=>{const n=e.length;let i=0;for(let r=0;r{let e=t.trim(),n="arrow_open";switch(e[0]){case"<":n="arrow_point",e=e.slice(1);break;case"x":n="arrow_cross",e=e.slice(1);break;case"o":n="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:n,stroke:i}})(e),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=n.length,i}return n},J=(t,e)=>{let n=!1;return t.forEach((t=>{t.nodes.indexOf(e)>=0&&(n=!0)})),n},tt=(t,e)=>{const n=[];return t.nodes.forEach(((i,r)=>{J(e,i)||n.push(t.nodes[r])})),{nodes:n}},et={firstGraph:V},nt={parseDirective:x,defaultConfig:()=>r.G.flowchart,setAccTitle:r.s,getAccTitle:r.g,getAccDescription:r.a,setAccDescription:r.b,addVertex:_,lookUpDomId:k,addLink:E,updateLinkInterpolate:T,updateLink:C,addClass:S,setDirection:I,setClass:M,setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(b["gen-1"===c?k(t):t]=v(e))}))},getTooltip:O,setClickEvent:L,setLink:D,bindFunctions:N,getDirection:P,getVertices:B,getEdges:F,getClasses:R,clear:$,setGen:z,defaultStyle:q,addSubGraph:H,getDepthFirstPos:W,indexNodes:K,getSubGraphs:X,destructLink:Q,lex:et,exists:J,makeUniq:tt,setDiagramTitle:r.r,getDiagramTitle:r.t},it=Object.freeze(Object.defineProperty({__proto__:null,addClass:S,addLink:E,addSingleLink:A,addSubGraph:H,addVertex:_,bindFunctions:N,clear:$,default:nt,defaultStyle:q,destructLink:Q,firstGraph:V,getClasses:R,getDepthFirstPos:W,getDirection:P,getEdges:F,getSubGraphs:X,getTooltip:O,getVertices:B,indexNodes:K,lex:et,lookUpDomId:k,parseDirective:x,setClass:M,setClickEvent:L,setDirection:I,setGen:z,setLink:D,updateLink:C,updateLinkInterpolate:T},Symbol.toStringTag,{value:"Module"}))},797:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return c}});var i=n(895),r=(n(8066),n(1504));n(8540),n(4734),n(9999),n(6227),n(1768),n(6421);n(8137);n(7474),n(6460);n(9980);r.c_6;var a=n(8489);n(7530),n(2510),n(6951),n(835);const o={},s=function(t){const e=Object.keys(t);for(const n of e)o[n]=t[n]},c={parser:i.p,db:i.f,renderer:a.f,styles:a.a,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,s(t.flowchart),i.f.clear(),i.f.setGen("gen-1")}}},8832:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return o}});var i=n(895),r=n(8489),a=n(8540);n(1504),n(8066),n(1768),n(835),n(7530),n(2510),n(6951);const o={parser:i.p,db:i.f,renderer:r.f,styles:r.a,init:t=>{t.flowchart||(t.flowchart={}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,a.q)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),r.f.setConf(t.flowchart),i.f.clear(),i.f.setGen("gen-2")}}},5248:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return x}});var i=n(895),r=n(1504),a=n(3430),o=n(8540),s=n(7697);n(7530),n(2510),n(6951);const c=new s;let u={};const l={};let h={};const f=(t,e,n)=>{const i={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return i.TD=i.TB,o.l.info("abc88",n,e,t),i[n][e][t]},d=(t,e,n)=>{if(o.l.info("getNextPort abc88",{node:t,edgeDirection:e,graphDirection:n}),!u[t])switch(n){case"TB":case"TD":u[t]={inPosition:"north",outPosition:"south"};break;case"BT":u[t]={inPosition:"south",outPosition:"north"};break;case"RL":u[t]={inPosition:"east",outPosition:"west"};break;case"LR":u[t]={inPosition:"west",outPosition:"east"}}const i="in"===e?u[t].inPosition:u[t].outPosition;return"in"===e?u[t].inPosition=f(u[t].inPosition,e,n):u[t].outPosition=f(u[t].outPosition,e,n),i},g=function(t,e,n,i){o.l.info("abc78 edges = ",t);const s=i.insert("g").attr("class","edgeLabels");let c,u,f={},g=e.db.getDirection();if(void 0!==t.defaultStyle){const e=(0,o.k)(t.defaultStyle);c=e.style,u=e.labelStyle}return t.forEach((function(e){const i="L-"+e.start+"-"+e.end;void 0===f[i]?(f[i]=0,o.l.info("abc78 new entry",i,f[i])):(f[i]++,o.l.info("abc78 new entry",i,f[i]));let p=i+"-"+f[i];o.l.info("abc78 new link id to be used is",i,p,f[i]);const b="LS-"+e.start,w="LE-"+e.end,m={style:"",labelStyle:""};switch(m.minlen=e.length||1,"arrow_open"===e.type?m.arrowhead="none":m.arrowhead="normal",m.arrowTypeStart="arrow_open",m.arrowTypeEnd="arrow_open",e.type){case"double_arrow_cross":m.arrowTypeStart="arrow_cross";case"arrow_cross":m.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":m.arrowTypeStart="arrow_point";case"arrow_point":m.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":m.arrowTypeStart="arrow_circle";case"arrow_circle":m.arrowTypeEnd="arrow_circle"}let y="",v="";switch(e.stroke){case"normal":y="fill:none;",void 0!==c&&(y=c),void 0!==u&&(v=u),m.thickness="normal",m.pattern="solid";break;case"dotted":m.thickness="normal",m.pattern="dotted",m.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":m.thickness="thick",m.pattern="solid",m.style="stroke-width: 3.5px;fill:none;"}if(void 0!==e.style){const t=(0,o.k)(e.style);y=t.style,v=t.labelStyle}m.style=m.style+=y,m.labelStyle=m.labelStyle+=v,void 0!==e.interpolate?m.curve=(0,o.o)(e.interpolate,r.c_6):void 0!==t.defaultInterpolate?m.curve=(0,o.o)(t.defaultInterpolate,r.c_6):m.curve=(0,o.o)(l.curve,r.c_6),void 0===e.text?void 0!==e.style&&(m.arrowheadStyle="fill: #333"):(m.arrowheadStyle="fill: #333",m.labelpos="c"),m.labelType=e.labelType,m.label=e.text.replace(o.e.lineBreakRegex,"\n"),void 0===e.style&&(m.style=m.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),m.labelStyle=m.labelStyle.replace("color:","fill:"),m.id=p,m.classes="flowchart-link "+b+" "+w;const x=(0,a.f)(s,m),{source:k,target:_,sourceId:A,targetId:E}=((t,e)=>{let n=t.start,i=t.end;const r=n,a=i,o=h[n],s=h[i];return o&&s?("diamond"===o.type&&(n=`${n}-${d(n,"out",e)}`),"diamond"===s.type&&(i=`${i}-${d(i,"in",e)}`),{source:n,target:i,sourceId:r,targetId:a}):{source:n,target:i}})(e,g);o.l.debug("abc78 source and target",k,_),n.edges.push({id:"e"+e.start+e.end,sources:[k],targets:[_],sourceId:A,targetId:E,labelEl:x,labels:[{width:m.width,height:m.height,orgWidth:m.width,orgHeight:m.height,text:m.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:m})})),n},p=function(t,e,n){const i=((t,e,n)=>{const{parentById:i}=n,r=new Set;let a=t;for(;a;){if(r.add(a),a===e)return a;a=i[a]}for(a=e;a;){if(r.has(a))return a;a=i[a]}return"root"})(t,e,n);if(void 0===i||"root"===i)return{x:0,y:0};const r=h[i].offset;return{x:r.posX,y:r.posY}},b=function(t,e,n,i,a){const o=p(e.sourceId,e.targetId,a),s=e.sections[0].startPoint,c=e.sections[0].endPoint,u=(e.sections[0].bendPoints?e.sections[0].bendPoints:[]).map((t=>[t.x+o.x,t.y+o.y])),l=[[s.x+o.x,s.y+o.y],...u,[c.x+o.x,c.y+o.y]],h=(0,r.jvg)().curve(r.c_6),f=t.insert("path").attr("d",h(l)).attr("class","path "+n.classes).attr("fill","none"),d=t.insert("g").attr("class","edgeLabel"),g=(0,r.Ys)(d.node().appendChild(e.labelEl)),b=g.node().firstChild.getBoundingClientRect();g.attr("width",b.width),g.attr("height",b.height),d.attr("transform",`translate(${e.labels[0].x+o.x}, ${e.labels[0].y+o.y})`),function(t,e,n,i){let r="";switch(i&&(r=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,r=r.replace(/\(/g,"\\("),r=r.replace(/\)/g,"\\)")),e.arrowTypeStart){case"arrow_cross":t.attr("marker-start","url("+r+"#"+n+"-crossStart)");break;case"arrow_point":t.attr("marker-start","url("+r+"#"+n+"-pointStart)");break;case"arrow_barb":t.attr("marker-start","url("+r+"#"+n+"-barbStart)");break;case"arrow_circle":t.attr("marker-start","url("+r+"#"+n+"-circleStart)");break;case"aggregation":t.attr("marker-start","url("+r+"#"+n+"-aggregationStart)");break;case"extension":t.attr("marker-start","url("+r+"#"+n+"-extensionStart)");break;case"composition":t.attr("marker-start","url("+r+"#"+n+"-compositionStart)");break;case"dependency":t.attr("marker-start","url("+r+"#"+n+"-dependencyStart)");break;case"lollipop":t.attr("marker-start","url("+r+"#"+n+"-lollipopStart)")}switch(e.arrowTypeEnd){case"arrow_cross":t.attr("marker-end","url("+r+"#"+n+"-crossEnd)");break;case"arrow_point":t.attr("marker-end","url("+r+"#"+n+"-pointEnd)");break;case"arrow_barb":t.attr("marker-end","url("+r+"#"+n+"-barbEnd)");break;case"arrow_circle":t.attr("marker-end","url("+r+"#"+n+"-circleEnd)");break;case"aggregation":t.attr("marker-end","url("+r+"#"+n+"-aggregationEnd)");break;case"extension":t.attr("marker-end","url("+r+"#"+n+"-extensionEnd)");break;case"composition":t.attr("marker-end","url("+r+"#"+n+"-compositionEnd)");break;case"dependency":t.attr("marker-end","url("+r+"#"+n+"-dependencyEnd)");break;case"lollipop":t.attr("marker-end","url("+r+"#"+n+"-lollipopEnd)")}}(f,n,i.type,i.arrowMarkerAbsolute)},w=(t,e)=>{t.forEach((t=>{t.children||(t.children=[]);const n=e.childrenById[t.id];n&&n.forEach((e=>{t.children.push(h[e])})),w(t.children,e)}))},m=(t,e,n,i,r,a,s)=>{n.forEach((function(n){if(n)if(h[n.id].offset={posX:n.x+t,posY:n.y+e,x:t,y:e,depth:s,width:n.width,height:n.height},"group"===n.type){const i=r.insert("g").attr("class","subgraph");i.insert("rect").attr("class","subgraph subgraph-lvl-"+s%5+" node").attr("x",n.x+t).attr("y",n.y+e).attr("width",n.width).attr("height",n.height);const a=i.insert("g").attr("class","label"),c=(0,o.c)().flowchart.htmlLabels?n.labelData.width/2:0;a.attr("transform",`translate(${n.labels[0].x+t+n.x+c}, ${n.labels[0].y+e+n.y+3})`),a.node().appendChild(n.labelData.labelNode),o.l.info("Id (UGH)= ",n.type,n.labels)}else o.l.info("Id (UGH)= ",n.id),n.el.attr("transform",`translate(${n.x+t+n.width/2}, ${n.y+e+n.height/2})`)})),n.forEach((function(n){n&&"group"===n.type&&m(t+n.x,e+n.y,n.children,i,r,a,s+1)}))},y={getClasses:function(t,e){o.l.info("Extracting classes"),e.db.clear("ver-2");try{return e.parse(t),e.db.getClasses()}catch(t){return{}}},draw:async function(t,e,n,i){var s;i.db.clear(),h={},u={},i.db.setGen("gen-2"),i.parser.parse(t);const l=(0,r.Ys)("body").append("div").attr("style","height:400px").attr("id","cy");let f={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(o.l.info("Drawing flowchart using v3 renderer",c),i.db.getDirection()){case"BT":f.layoutOptions["elk.direction"]="UP";break;case"TB":f.layoutOptions["elk.direction"]="DOWN";break;case"LR":f.layoutOptions["elk.direction"]="RIGHT";break;case"RL":f.layoutOptions["elk.direction"]="LEFT"}const{securityLevel:d,flowchart:p}=(0,o.c)();let y;"sandbox"===d&&(y=(0,r.Ys)("#i"+e));const v="sandbox"===d?(0,r.Ys)(y.nodes()[0].contentDocument.body):(0,r.Ys)("body"),x="sandbox"===d?y.nodes()[0].contentDocument:document,k=v.select(`[id="${e}"]`);(0,a.a)(k,["point","circle","cross"],i.type,i.arrowMarkerAbsolute);const _=i.db.getVertices();let A;const E=i.db.getSubGraphs();o.l.info("Subgraphs - ",E);for(let t=E.length-1;t>=0;t--)A=E[t],i.db.addVertex(A.id,{text:A.title,type:A.labelType},"group",void 0,A.classes,A.dir);const T=k.insert("g").attr("class","subgraphs"),C=function(t){const e={parentById:{},childrenById:{}},n=t.getSubGraphs();return o.l.info("Subgraphs - ",n),n.forEach((function(t){t.nodes.forEach((function(n){e.parentById[n]=t.id,void 0===e.childrenById[t.id]&&(e.childrenById[t.id]=[]),e.childrenById[t.id].push(n)}))})),n.forEach((function(t){t.id,void 0!==e.parentById[t.id]&&e.parentById[t.id]})),e}(i.db);f=await async function(t,e,n,i,r,s,c){const u=n.select(`[id="${e}"]`).insert("g").attr("class","nodes"),l=Object.keys(t);return await Promise.all(l.map((async function(e){const n=t[e];let c="default";n.classes.length>0&&(c=n.classes.join(" ")),c+=" flowchart-label";const l=(0,o.k)(n.styles);let f=void 0!==n.text?n.text:n.id;const d={width:0,height:0},g=[{id:n.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:n.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:n.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:n.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let p=0,b="",w={};switch(n.type){case"round":p=5,b="rect";break;case"square":case"group":default:b="rect";break;case"diamond":b="question",w={portConstraints:"FIXED_SIDE"};break;case"hexagon":b="hexagon";break;case"odd":case"odd_right":b="rect_left_inv_arrow";break;case"lean_right":b="lean_right";break;case"lean_left":b="lean_left";break;case"trapezoid":b="trapezoid";break;case"inv_trapezoid":b="inv_trapezoid";break;case"circle":b="circle";break;case"ellipse":b="ellipse";break;case"stadium":b="stadium";break;case"subroutine":b="subroutine";break;case"cylinder":b="cylinder";break;case"doublecircle":b="doublecircle"}const m={labelStyle:l.labelStyle,shape:b,labelText:f,labelType:n.labelType,rx:p,ry:p,class:c,style:l.style,id:n.id,link:n.link,linkTarget:n.linkTarget,tooltip:r.db.getTooltip(n.id)||"",domId:r.db.lookUpDomId(n.id),haveCallback:n.haveCallback,width:"group"===n.type?500:void 0,dir:n.dir,type:n.type,props:n.props,padding:(0,o.c)().flowchart.padding};let y,v;if("group"!==m.type)v=await(0,a.e)(u,m,n.dir),y=v.node().getBBox();else{i.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:t,bbox:e}=await(0,a.l)(u,m,void 0,!0);d.width=e.width,d.wrappingWidth=(0,o.c)().flowchart.wrappingWidth,d.height=e.height,d.labelNode=t.node(),m.labelData=d}const x={id:n.id,ports:"diamond"===n.type?g:[],layoutOptions:w,labelText:f,labelData:d,domId:r.db.lookUpDomId(n.id),width:null==y?void 0:y.width,height:null==y?void 0:y.height,type:n.type,el:v,parent:s.parentById[n.id]};h[m.id]=x}))),c}(_,e,v,x,i,C,f);const S=k.insert("g").attr("class","edges edgePath"),I=i.db.getEdges();f=g(I,i,f,k);Object.keys(h).forEach((t=>{const e=h[t];e.parent||f.children.push(e),void 0!==C.childrenById[t]&&(e.labels=[{text:e.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:e.labelData.width,height:e.labelData.height}],delete e.x,delete e.y,delete e.width,delete e.height)})),w(f.children,C),o.l.info("after layout",JSON.stringify(f,null,2));const M=await c.layout(f);m(0,0,M.children,k,T,i,0),o.l.info("after layout",M),null==(s=M.edges)||s.map((t=>{b(S,t,t.edgeData,i,C)})),(0,o.p)({},k,p.diagramPadding,p.useMaxWidth),l.remove()}},v=t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.85;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n .subgraph {\n stroke-width:2;\n rx:3;\n }\n // .subgraph-lvl-1 {\n // fill:#ccc;\n // // stroke:black;\n // }\n\n .flowchart-label text {\n text-anchor: middle;\n }\n\n ${(t=>{let e="";for(let n=0;n<5;n++)e+=`\n .subgraph-lvl-${n} {\n fill: ${t[`surface${n}`]};\n stroke: ${t[`surfacePeer${n}`]};\n }\n `;return e})(t)}\n`,x={db:i.d,renderer:y,parser:i.p,styles:v}},2418:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return W}});var i=n(2510),r=n(7530),a=n(7547),o=n(5466),s=n(7664),c=n(8540),u=n(1504),l=(n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,21],h=[1,22],f=[1,23],d=[1,24],g=[1,25],p=[1,26],b=[1,27],w=[1,29],m=[1,31],y=[1,34],v=[5,7,9,11,12,13,14,15,16,17,18,19,20,21,23,25,26,28,35,40],x={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,tickInterval:16,excludes:17,includes:18,todayMarker:19,title:20,acc_title:21,acc_title_value:22,acc_descr:23,acc_descr_value:24,acc_descr_multiline_value:25,section:26,clickStatement:27,taskTxt:28,taskData:29,openDirective:30,typeDirective:31,closeDirective:32,":":33,argDirective:34,click:35,callbackname:36,callbackargs:37,href:38,clickStatementDebug:39,open_directive:40,type_directive:41,arg_directive:42,close_directive:43,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"tickInterval",17:"excludes",18:"includes",19:"todayMarker",20:"title",21:"acc_title",22:"acc_title_value",23:"acc_descr",24:"acc_descr_value",25:"acc_descr_multiline_value",26:"section",28:"taskTxt",29:"taskData",33:":",35:"click",36:"callbackname",37:"callbackargs",38:"href",40:"open_directive",41:"type_directive",42:"arg_directive",43:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[27,2],[27,3],[27,3],[27,4],[27,3],[27,4],[27,2],[39,2],[39,3],[39,3],[39,4],[39,3],[39,4],[39,2],[30,1],[31,1],[34,1],[32,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 2:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 9:i.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 10:i.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 11:i.TopAxis(),this.$=a[s].substr(8);break;case 12:i.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 13:i.setTickInterval(a[s].substr(13)),this.$=a[s].substr(13);break;case 14:i.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 15:i.setIncludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 16:i.setTodayMarker(a[s].substr(12)),this.$=a[s].substr(12);break;case 17:i.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 18:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 19:case 20:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 21:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 23:i.addTask(a[s-1],a[s]),this.$="task";break;case 27:this.$=a[s-1],i.setClickEvent(a[s-1],a[s],null);break;case 28:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 29:this.$=a[s-2],i.setClickEvent(a[s-2],a[s-1],null),i.setLink(a[s-2],a[s]);break;case 30:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-2],a[s-1]),i.setLink(a[s-3],a[s]);break;case 31:this.$=a[s-2],i.setClickEvent(a[s-2],a[s],null),i.setLink(a[s-2],a[s-1]);break;case 32:this.$=a[s-3],i.setClickEvent(a[s-3],a[s-1],a[s]),i.setLink(a[s-3],a[s-2]);break;case 33:this.$=a[s-1],i.setLink(a[s-1],a[s]);break;case 34:case 40:this.$=a[s-1]+" "+a[s];break;case 35:case 36:case 38:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 37:case 39:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s];break;case 41:i.parseDirective("%%{","open_directive");break;case 42:i.parseDirective(a[s],"type_directive");break;case 43:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 44:i.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:e,30:4,40:n},{1:[3]},{3:6,4:2,5:e,30:4,40:n},t(i,[2,3],{6:7}),{31:8,41:[1,9]},{41:[2,41]},{1:[2,1]},{4:30,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:r,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:d,23:g,25:p,26:b,27:28,28:w,30:4,35:m,40:n},{32:32,33:[1,33],43:y},t([33,43],[2,42]),t(i,[2,8],{1:[2,2]}),t(i,[2,4]),{4:30,10:35,12:r,13:a,14:o,15:s,16:c,17:u,18:l,19:h,20:f,21:d,23:g,25:p,26:b,27:28,28:w,30:4,35:m,40:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),t(i,[2,12]),t(i,[2,13]),t(i,[2,14]),t(i,[2,15]),t(i,[2,16]),t(i,[2,17]),{22:[1,36]},{24:[1,37]},t(i,[2,20]),t(i,[2,21]),t(i,[2,22]),{29:[1,38]},t(i,[2,24]),{36:[1,39],38:[1,40]},{11:[1,41]},{34:42,42:[1,43]},{11:[2,44]},t(i,[2,5]),t(i,[2,18]),t(i,[2,19]),t(i,[2,23]),t(i,[2,27],{37:[1,44],38:[1,45]}),t(i,[2,33],{36:[1,46]}),t(v,[2,25]),{32:47,43:y},{43:[2,43]},t(i,[2,28],{38:[1,48]}),t(i,[2,29]),t(i,[2,31],{37:[1,49]}),{11:[1,50]},t(i,[2,30]),t(i,[2,32]),t(v,[2,26])],defaultActions:{5:[2,41],6:[2,1],34:[2,44],43:[2,43]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),40;case 1:return this.begin("type_directive"),41;case 2:return this.popState(),this.begin("arg_directive"),33;case 3:return this.popState(),this.popState(),43;case 4:return 42;case 5:return this.begin("acc_title"),21;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),23;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 20:case 23:case 26:case 29:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:case 13:case 14:case 16:case 17:case 18:break;case 15:return 11;case 19:this.begin("href");break;case 21:return 38;case 22:this.begin("callbackname");break;case 24:this.popState(),this.begin("callbackargs");break;case 25:return 36;case 27:return 37;case 28:this.begin("click");break;case 30:return 35;case 31:return 5;case 32:return 12;case 33:return 13;case 34:return 14;case 35:return 15;case 36:return 16;case 37:return 18;case 38:return 17;case 39:return 19;case 40:return"date";case 41:return 20;case 42:return"accDescription";case 43:return 26;case 44:return 28;case 45:return 29;case 46:return 33;case 47:return 7;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[26,27],inclusive:!1},callbackname:{rules:[23,24,25],inclusive:!1},href:{rules:[20,21],inclusive:!1},click:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,22,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};function _(){this.yy={}}return x.lexer=k,_.prototype=x,x.Parser=_,new _}());l.parser=l;const h=l;r.extend(a),r.extend(o),r.extend(s);let f,d="",g="",p="",b=[],w=[],m={},y=[],v=[],x="",k="";const _=["active","done","crit","milestone"];let A=[],E=!1,T=!1,C=0;const S=function(t,e,n,i){return!i.includes(t.format(e.trim()))&&(!!(t.isoWeekday()>=6&&n.includes("weekends"))||(!!n.includes(t.format("dddd").toLowerCase())||n.includes(t.format(e.trim()))))},I=function(t,e,n,i){if(!n.length||t.manualEndTime)return;let a,o;a=t.startTime instanceof Date?r(t.startTime):r(t.startTime,e,!0),a=a.add(1,"d"),o=t.endTime instanceof Date?r(t.endTime):r(t.endTime,e,!0);const[s,c]=M(a,o,e,n,i);t.endTime=s.toDate(),t.renderEndTime=c},M=function(t,e,n,i,r){let a=!1,o=null;for(;t<=e;)a||(o=e.toDate()),a=S(t,n,i,r),a&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,o]},D=function(t,e,n){n=n.trim();const i=/^after\s+([\d\w- ]+)/.exec(n.trim());if(null!==i){let t=null;if(i[1].split(" ").forEach((function(e){let n=$(e);void 0!==n&&(t?n.endTime>t.endTime&&(t=n):t=n)})),t)return t.endTime;{const t=new Date;return t.setHours(0,0,0,0),t}}let a=r(n,e.trim(),!0);if(a.isValid())return a.toDate();{c.l.debug("Invalid date:"+n),c.l.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}},O=function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},L=function(t,e,n,i=!1){n=n.trim();let a=r(n,e.trim(),!0);if(a.isValid())return i&&(a=a.add(1,"d")),a.toDate();let o=r(t);const[s,c]=O(n);if(!Number.isNaN(s)){const t=o.add(s,c);t.isValid()&&(o=t)}return o.toDate()};let N=0;const P=function(t){return void 0===t?(N+=1,"task"+N):t};let B,F,R=[];const j={},$=function(t){const e=j[t];return R[e]},z=function(){const t=function(t){const e=R[t];let n="";switch(R[t].raw.startTime.type){case"prevTaskEnd":{const t=$(e.prevTaskId);e.startTime=t.endTime;break}case"getStartDate":n=D(0,d,R[t].raw.startTime.startData),n&&(R[t].startTime=n)}return R[t].startTime&&(R[t].endTime=L(R[t].startTime,d,R[t].raw.endTime.data,E),R[t].endTime&&(R[t].processed=!0,R[t].manualEndTime=r(R[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),I(R[t],d,w,b))),R[t].processed};let e=!0;for(const[n,i]of R.entries())t(n),e=e&&i.processed;return e},q=function(t,e){t.split(",").forEach((function(t){let n=$(t);void 0!==n&&n.classes.push(e)}))},H=function(t,e){A.push((function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",(function(){e()}))}),(function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",(function(){e()}))}))},U={parseDirective:function(t,e,n){c.m.parseDirective(this,t,e,n)},getConfig:()=>(0,c.c)().gantt,clear:function(){y=[],v=[],x="",A=[],N=0,B=void 0,F=void 0,R=[],d="",g="",k="",f=void 0,p="",b=[],w=[],E=!1,T=!1,C=0,m={},(0,c.v)()},setDateFormat:function(t){d=t},getDateFormat:function(){return d},enableInclusiveEndDates:function(){E=!0},endDatesAreInclusive:function(){return E},enableTopAxis:function(){T=!0},topAxisEnabled:function(){return T},setAxisFormat:function(t){g=t},getAxisFormat:function(){return g},setTickInterval:function(t){f=t},getTickInterval:function(){return f},setTodayMarker:function(t){p=t},getTodayMarker:function(){return p},setAccTitle:c.s,getAccTitle:c.g,setDiagramTitle:c.r,getDiagramTitle:c.t,setDisplayMode:function(t){k=t},getDisplayMode:function(){return k},setAccDescription:c.b,getAccDescription:c.a,addSection:function(t){x=t,y.push(t)},getSections:function(){return y},getTasks:function(){let t=z();let e=0;for(;!t&&e<10;)t=z(),e++;return v=R,v},addTask:function(t,e){const n={section:x,type:x,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},i=function(t,e){let n;n=":"===e.substr(0,1)?e.substr(1,e.length):e;const i=n.split(","),r={};G(i,r,_);for(let t=0;t{c.u.runFunc(e,...i)}))}(t,e,n)})),q(t,"clickable")},setLink:function(t,e){let n=e;"loose"!==(0,c.c)().securityLevel&&(n=(0,i.Nm)(e)),t.split(",").forEach((function(t){void 0!==$(t)&&(H(t,(()=>{window.open(n,"_self")})),m[t]=n)})),q(t,"clickable")},getLinks:function(){return m},bindFunctions:function(t){A.forEach((function(e){e(t)}))},parseDuration:O,isInvalidDate:S};function G(t,e,n){let i=!0;for(;i;)i=!1,n.forEach((function(n){const r=new RegExp("^\\s*"+n+"\\s*$");t[0].match(r)&&(e[n]=!0,t.shift(1),i=!0)}))}const Y=(t,e)=>{let n=[...t].map((()=>-1/0)),i=[...t].sort(((t,e)=>t.startTime-e.startTime||t.order-e.order)),r=0;for(const t of i)for(let i=0;i=n[i]){n[i]=t.endTime,t.order=i+e,i>r&&(r=i);break}return r};let Z;const W={parser:h,db:U,renderer:{setConf:function(){c.l.debug("Something is calling, setConf, remove the call")},draw:function(t,e,n,i){const a=(0,c.c)().gantt,o=(0,c.c)().securityLevel;let s;"sandbox"===o&&(s=(0,u.Ys)("#i"+e));const l="sandbox"===o?(0,u.Ys)(s.nodes()[0].contentDocument.body):(0,u.Ys)("body"),h="sandbox"===o?s.nodes()[0].contentDocument:document,f=h.getElementById(e);Z=f.parentElement.offsetWidth,void 0===Z&&(Z=1200),void 0!==a.useWidth&&(Z=a.useWidth);const d=i.db.getTasks();let g=[];for(const t of d)g.push(t.type);g=function(t){const e={},n=[];for(let i=0,r=t.length;ie.type===t)).length}f.setAttribute("viewBox","0 0 "+Z+" "+b);const w=l.select(`[id="${e}"]`),m=(0,u.Xf)().domain([(0,u.VV$)(d,(function(t){return t.startTime})),(0,u.Fp7)(d,(function(t){return t.endTime}))]).rangeRound([0,Z-a.leftPadding-a.rightPadding]);d.sort((function(t,e){const n=t.startTime,i=e.startTime;let r=0;return n>i?r=1:nt?Math.min(t,e):e),0),f=c.reduce(((t,{endTime:e})=>t?Math.max(t,e):e),0),d=i.db.getDateFormat();if(!h||!f)return;const g=[];let p=null,b=r(h);for(;b.valueOf()<=f;)i.db.isInvalidDate(b,d,u,l)?p?p.end=b:p={start:b,end:b}:p&&(g.push(p),p=null),b=b.add(1,"d");w.append("g").selectAll("rect").data(g).enter().append("rect").attr("id",(function(t){return"exclude-"+t.start.format("YYYY-MM-DD")})).attr("x",(function(t){return m(t.start)+n})).attr("y",a.gridLineStartPadding).attr("width",(function(t){const e=t.end.add(1,"day");return m(e)-m(t.start)})).attr("height",s-e-a.gridLineStartPadding).attr("transform-origin",(function(e,i){return(m(e.start)+n+.5*(m(e.end)-m(e.start))).toString()+"px "+(i*t+.5*s).toString()+"px"})).attr("class","exclude-range")})(l,f,d,0,o,t,i.db.getExcludes(),i.db.getIncludes()),function(t,e,n,r){let o=(0,u.LLu)(m).tickSize(-r+e+a.gridLineStartPadding).tickFormat((0,u.i$Z)(i.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));const s=/^([1-9]\d*)(minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==s){const t=s[1];switch(s[2]){case"minute":o.ticks(u.Z_i.every(t));break;case"hour":o.ticks(u.WQD.every(t));break;case"day":o.ticks(u.rr1.every(t));break;case"week":o.ticks(u.NGh.every(t));break;case"month":o.ticks(u.F0B.every(t))}}if(w.append("g").attr("class","grid").attr("transform","translate("+t+", "+(r-50)+")").call(o).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,u.F5q)(m).tickSize(-r+e+a.gridLineStartPadding).tickFormat((0,u.i$Z)(i.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));if(null!==s){const t=s[1];switch(s[2]){case"minute":n.ticks(u.Z_i.every(t));break;case"hour":n.ticks(u.WQD.every(t));break;case"day":n.ticks(u.rr1.every(t));break;case"week":n.ticks(u.NGh.every(t));break;case"month":n.ticks(u.F0B.every(t))}}w.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(d,f,0,o),function(t,n,r,o,s,l,h){const f=[...new Set(t.map((t=>t.order)))].map((e=>t.find((t=>t.order===e))));w.append("g").selectAll("rect").data(f).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*n+r-2})).attr("width",(function(){return h-a.rightPadding/2})).attr("height",n).attr("class",(function(t){for(const[e,n]of g.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"}));const d=w.append("g").selectAll("rect").data(t).enter(),p=i.db.getLinks();d.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?m(t.startTime)+o+.5*(m(t.endTime)-m(t.startTime))-.5*s:m(t.startTime)+o})).attr("y",(function(t,e){return t.order*n+r})).attr("width",(function(t){return t.milestone?s:m(t.renderEndTime||t.endTime)-m(t.startTime)})).attr("height",s).attr("transform-origin",(function(t,e){return e=t.order,(m(t.startTime)+o+.5*(m(t.endTime)-m(t.startTime))).toString()+"px "+(e*n+r+.5*s).toString()+"px"})).attr("class",(function(t){const e="task";let n="";t.classes.length>0&&(n=t.classes.join(" "));let i=0;for(const[e,n]of g.entries())t.type===n&&(i=e%a.numberSectionStyles);let r="";return t.active?t.crit?r+=" activeCrit":r=" active":t.done?r=t.crit?" doneCrit":" done":t.crit&&(r+=" crit"),0===r.length&&(r=" task"),t.milestone&&(r=" milestone "+r),r+=i,r+=" "+n,e+r})),d.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",a.fontSize).attr("x",(function(t){let e=m(t.startTime),n=m(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(m(t.endTime)-m(t.startTime))-.5*s),t.milestone&&(n=e+s);const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>h?e+o-5:n+o+5:(n-e)/2+e+o})).attr("y",(function(t,e){return t.order*n+a.barHeight/2+(a.fontSize/2-2)+r})).attr("text-height",s).attr("class",(function(t){const e=m(t.startTime);let n=m(t.endTime);t.milestone&&(n=e+s);const i=this.getBBox().width;let r="";t.classes.length>0&&(r=t.classes.join(" "));let o=0;for(const[e,n]of g.entries())t.type===n&&(o=e%a.numberSectionStyles);let c="";return t.active&&(c=t.crit?"activeCritText"+o:"activeText"+o),t.done?c=t.crit?c+" doneCritText"+o:c+" doneText"+o:t.crit&&(c=c+" critText"+o),t.milestone&&(c+=" milestoneText"),i>n-e?n+i+1.5*a.leftPadding>h?r+" taskTextOutsideLeft taskTextOutside"+o+" "+c:r+" taskTextOutsideRight taskTextOutside"+o+" "+c+" width-"+i:r+" taskText taskText"+o+" "+c+" width-"+i}));if("sandbox"===(0,c.c)().securityLevel){let t;t=(0,u.Ys)("#i"+e);const n=t.nodes()[0].contentDocument;d.filter((function(t){return void 0!==p[t.id]})).each((function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const r=e.parentNode;var a=n.createElement("a");a.setAttribute("xlink:href",p[t.id]),a.setAttribute("target","_top"),r.appendChild(a),a.appendChild(e),a.appendChild(i)}))}}(t,l,f,d,s,0,n),function(t,e){let n=0;const i=Object.keys(p).map((t=>[t,p[t]]));w.append("g").selectAll("text").data(i).enter().append((function(t){const e=t[0].split(c.e.lineBreakRegex),n=-(e.length-1)/2,i=h.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[t,n]of e.entries()){const e=h.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttribute("alignment-baseline","central"),e.setAttribute("x","10"),t>0&&e.setAttribute("dy","1em"),e.textContent=n,i.appendChild(e)}return i})).attr("x",10).attr("y",(function(r,a){if(!(a>0))return r[1]*t/2+e;for(let o=0;o`\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${t.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${t.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${t.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`}},8787:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return R}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,4],n=[1,7],i=[1,5],r=[1,9],a=[1,6],o=[2,6],s=[1,16],c=[6,8,14,20,22,24,25,27,29,32,37,40,50,55],u=[8,14,20,22,24,25,27,29,32,37,40],l=[8,13,14,20,22,24,25,27,29,32,37,40],h=[1,26],f=[6,8,14,50,55],d=[8,14,55],g=[1,53],p=[1,52],b=[8,14,30,33,35,38,55],w=[1,67],m=[1,68],y=[1,69],v=[8,14,33,35,42,55],x={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,GG:6,document:7,EOF:8,":":9,DIR:10,options:11,body:12,OPT:13,NL:14,line:15,statement:16,commitStatement:17,mergeStatement:18,cherryPickStatement:19,acc_title:20,acc_title_value:21,acc_descr:22,acc_descr_value:23,acc_descr_multiline_value:24,section:25,branchStatement:26,CHECKOUT:27,ref:28,BRANCH:29,ORDER:30,NUM:31,CHERRY_PICK:32,COMMIT_ID:33,STR:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,openDirective:46,typeDirective:47,closeDirective:48,argDirective:49,open_directive:50,type_directive:51,arg_directive:52,close_directive:53,ID:54,";":55,$accept:0,$end:1},terminals_:{2:"error",6:"GG",8:"EOF",9:":",10:"DIR",13:"OPT",14:"NL",20:"acc_title",21:"acc_title_value",22:"acc_descr",23:"acc_descr_value",24:"acc_descr_multiline_value",25:"section",27:"CHECKOUT",29:"BRANCH",30:"ORDER",31:"NUM",32:"CHERRY_PICK",33:"COMMIT_ID",34:"STR",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",50:"open_directive",51:"type_directive",52:"arg_directive",53:"close_directive",54:"ID",55:";"},productions_:[0,[3,2],[3,2],[3,3],[3,4],[3,5],[7,0],[7,2],[11,2],[11,1],[12,0],[12,2],[15,2],[15,1],[16,1],[16,1],[16,1],[16,2],[16,2],[16,1],[16,1],[16,1],[16,2],[26,2],[26,4],[19,3],[19,5],[19,5],[19,5],[19,5],[18,2],[18,4],[18,4],[18,4],[18,6],[18,6],[18,6],[18,6],[18,6],[18,6],[18,8],[18,8],[18,8],[18,8],[18,8],[18,8],[17,2],[17,3],[17,3],[17,5],[17,5],[17,3],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,3],[17,5],[17,5],[17,5],[17,5],[17,5],[17,5],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,7],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[17,9],[41,0],[41,1],[39,1],[39,1],[39,1],[5,3],[5,5],[46,1],[47,1],[49,1],[48,1],[28,1],[28,1],[4,1],[4,1],[4,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 3:return a[s];case 4:return a[s-1];case 5:return i.setDirection(a[s-3]),a[s-1];case 7:i.setOptions(a[s-1]),this.$=a[s];break;case 8:a[s-1]+=a[s],this.$=a[s-1];break;case 10:this.$=[];break;case 11:a[s-1].push(a[s]),this.$=a[s-1];break;case 12:this.$=a[s-1];break;case 17:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 18:case 19:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 20:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 22:i.checkout(a[s]);break;case 23:i.branch(a[s]);break;case 24:i.branch(a[s-2],a[s]);break;case 25:i.cherryPick(a[s],"",void 0);break;case 26:i.cherryPick(a[s-2],"",a[s]);break;case 27:case 29:i.cherryPick(a[s-2],"","");break;case 28:i.cherryPick(a[s],"",a[s-2]);break;case 30:i.merge(a[s],"","","");break;case 31:i.merge(a[s-2],a[s],"","");break;case 32:i.merge(a[s-2],"",a[s],"");break;case 33:i.merge(a[s-2],"","",a[s]);break;case 34:i.merge(a[s-4],a[s],"",a[s-2]);break;case 35:i.merge(a[s-4],"",a[s],a[s-2]);break;case 36:i.merge(a[s-4],"",a[s-2],a[s]);break;case 37:i.merge(a[s-4],a[s-2],a[s],"");break;case 38:i.merge(a[s-4],a[s-2],"",a[s]);break;case 39:i.merge(a[s-4],a[s],a[s-2],"");break;case 40:i.merge(a[s-6],a[s-4],a[s-2],a[s]);break;case 41:i.merge(a[s-6],a[s],a[s-4],a[s-2]);break;case 42:i.merge(a[s-6],a[s-4],a[s],a[s-2]);break;case 43:i.merge(a[s-6],a[s-2],a[s-4],a[s]);break;case 44:i.merge(a[s-6],a[s],a[s-2],a[s-4]);break;case 45:i.merge(a[s-6],a[s-2],a[s],a[s-4]);break;case 46:i.commit(a[s]);break;case 47:i.commit("","",i.commitType.NORMAL,a[s]);break;case 48:i.commit("","",a[s],"");break;case 49:i.commit("","",a[s],a[s-2]);break;case 50:i.commit("","",a[s-2],a[s]);break;case 51:i.commit("",a[s],i.commitType.NORMAL,"");break;case 52:i.commit("",a[s-2],i.commitType.NORMAL,a[s]);break;case 53:i.commit("",a[s],i.commitType.NORMAL,a[s-2]);break;case 54:i.commit("",a[s-2],a[s],"");break;case 55:i.commit("",a[s],a[s-2],"");break;case 56:i.commit("",a[s-4],a[s-2],a[s]);break;case 57:i.commit("",a[s-4],a[s],a[s-2]);break;case 58:i.commit("",a[s-2],a[s-4],a[s]);break;case 59:i.commit("",a[s],a[s-4],a[s-2]);break;case 60:i.commit("",a[s],a[s-2],a[s-4]);break;case 61:i.commit("",a[s-2],a[s],a[s-4]);break;case 62:i.commit(a[s],"",i.commitType.NORMAL,"");break;case 63:i.commit(a[s],"",i.commitType.NORMAL,a[s-2]);break;case 64:i.commit(a[s-2],"",i.commitType.NORMAL,a[s]);break;case 65:i.commit(a[s-2],"",a[s],"");break;case 66:i.commit(a[s],"",a[s-2],"");break;case 67:i.commit(a[s],a[s-2],i.commitType.NORMAL,"");break;case 68:i.commit(a[s-2],a[s],i.commitType.NORMAL,"");break;case 69:i.commit(a[s-4],"",a[s-2],a[s]);break;case 70:i.commit(a[s-4],"",a[s],a[s-2]);break;case 71:i.commit(a[s-2],"",a[s-4],a[s]);break;case 72:i.commit(a[s],"",a[s-4],a[s-2]);break;case 73:i.commit(a[s],"",a[s-2],a[s-4]);break;case 74:i.commit(a[s-2],"",a[s],a[s-4]);break;case 75:i.commit(a[s-4],a[s],a[s-2],"");break;case 76:i.commit(a[s-4],a[s-2],a[s],"");break;case 77:i.commit(a[s-2],a[s],a[s-4],"");break;case 78:i.commit(a[s],a[s-2],a[s-4],"");break;case 79:i.commit(a[s],a[s-4],a[s-2],"");break;case 80:i.commit(a[s-2],a[s-4],a[s],"");break;case 81:i.commit(a[s-4],a[s],i.commitType.NORMAL,a[s-2]);break;case 82:i.commit(a[s-4],a[s-2],i.commitType.NORMAL,a[s]);break;case 83:i.commit(a[s-2],a[s],i.commitType.NORMAL,a[s-4]);break;case 84:i.commit(a[s],a[s-2],i.commitType.NORMAL,a[s-4]);break;case 85:i.commit(a[s],a[s-4],i.commitType.NORMAL,a[s-2]);break;case 86:i.commit(a[s-2],a[s-4],i.commitType.NORMAL,a[s]);break;case 87:i.commit(a[s-6],a[s-4],a[s-2],a[s]);break;case 88:i.commit(a[s-6],a[s-4],a[s],a[s-2]);break;case 89:i.commit(a[s-6],a[s-2],a[s-4],a[s]);break;case 90:i.commit(a[s-6],a[s],a[s-4],a[s-2]);break;case 91:i.commit(a[s-6],a[s-2],a[s],a[s-4]);break;case 92:i.commit(a[s-6],a[s],a[s-2],a[s-4]);break;case 93:i.commit(a[s-4],a[s-6],a[s-2],a[s]);break;case 94:i.commit(a[s-4],a[s-6],a[s],a[s-2]);break;case 95:i.commit(a[s-2],a[s-6],a[s-4],a[s]);break;case 96:i.commit(a[s],a[s-6],a[s-4],a[s-2]);break;case 97:i.commit(a[s-2],a[s-6],a[s],a[s-4]);break;case 98:i.commit(a[s],a[s-6],a[s-2],a[s-4]);break;case 99:i.commit(a[s],a[s-4],a[s-2],a[s-6]);break;case 100:i.commit(a[s-2],a[s-4],a[s],a[s-6]);break;case 101:i.commit(a[s],a[s-2],a[s-4],a[s-6]);break;case 102:i.commit(a[s-2],a[s],a[s-4],a[s-6]);break;case 103:i.commit(a[s-4],a[s-2],a[s],a[s-6]);break;case 104:i.commit(a[s-4],a[s],a[s-2],a[s-6]);break;case 105:i.commit(a[s-2],a[s-4],a[s-6],a[s]);break;case 106:i.commit(a[s],a[s-4],a[s-6],a[s-2]);break;case 107:i.commit(a[s-2],a[s],a[s-6],a[s-4]);break;case 108:i.commit(a[s],a[s-2],a[s-6],a[s-4]);break;case 109:i.commit(a[s-4],a[s-2],a[s-6],a[s]);break;case 110:i.commit(a[s-4],a[s],a[s-6],a[s-2]);break;case 111:this.$="";break;case 112:this.$=a[s];break;case 113:this.$=i.commitType.NORMAL;break;case 114:this.$=i.commitType.REVERSE;break;case 115:this.$=i.commitType.HIGHLIGHT;break;case 118:i.parseDirective("%%{","open_directive");break;case 119:i.parseDirective(a[s],"type_directive");break;case 120:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 121:i.parseDirective("}%%","close_directive","gitGraph")}},table:[{3:1,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{1:[3]},{3:10,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{3:11,4:2,5:3,6:e,8:n,14:i,46:8,50:r,55:a},{7:12,8:o,9:[1,13],10:[1,14],11:15,14:s},t(c,[2,124]),t(c,[2,125]),t(c,[2,126]),{47:17,51:[1,18]},{51:[2,118]},{1:[2,1]},{1:[2,2]},{8:[1,19]},{7:20,8:o,11:15,14:s},{9:[1,21]},t(u,[2,10],{12:22,13:[1,23]}),t(l,[2,9]),{9:[1,25],48:24,53:h},t([9,53],[2,119]),{1:[2,3]},{8:[1,27]},{7:28,8:o,11:15,14:s},{8:[2,7],14:[1,31],15:29,16:30,17:32,18:33,19:34,20:[1,35],22:[1,36],24:[1,37],25:[1,38],26:39,27:[1,40],29:[1,44],32:[1,43],37:[1,42],40:[1,41]},t(l,[2,8]),t(f,[2,116]),{49:45,52:[1,46]},t(f,[2,121]),{1:[2,4]},{8:[1,47]},t(u,[2,11]),{4:48,8:n,14:i,55:a},t(u,[2,13]),t(d,[2,14]),t(d,[2,15]),t(d,[2,16]),{21:[1,49]},{23:[1,50]},t(d,[2,19]),t(d,[2,20]),t(d,[2,21]),{28:51,34:g,54:p},t(d,[2,111],{41:54,33:[1,57],34:[1,59],35:[1,55],38:[1,56],42:[1,58]}),{28:60,34:g,54:p},{33:[1,61],35:[1,62]},{28:63,34:g,54:p},{48:64,53:h},{53:[2,120]},{1:[2,5]},t(u,[2,12]),t(d,[2,17]),t(d,[2,18]),t(d,[2,22]),t(b,[2,122]),t(b,[2,123]),t(d,[2,46]),{34:[1,65]},{39:66,43:w,44:m,45:y},{34:[1,70]},{34:[1,71]},t(d,[2,112]),t(d,[2,30],{33:[1,72],35:[1,74],38:[1,73]}),{34:[1,75]},{34:[1,76],36:[1,77]},t(d,[2,23],{30:[1,78]}),t(f,[2,117]),t(d,[2,47],{33:[1,80],38:[1,79],42:[1,81]}),t(d,[2,48],{33:[1,83],35:[1,82],42:[1,84]}),t(v,[2,113]),t(v,[2,114]),t(v,[2,115]),t(d,[2,51],{35:[1,85],38:[1,86],42:[1,87]}),t(d,[2,62],{33:[1,90],35:[1,88],38:[1,89]}),{34:[1,91]},{39:92,43:w,44:m,45:y},{34:[1,93]},t(d,[2,25],{35:[1,94]}),{33:[1,95]},{33:[1,96]},{31:[1,97]},{39:98,43:w,44:m,45:y},{34:[1,99]},{34:[1,100]},{34:[1,101]},{34:[1,102]},{34:[1,103]},{34:[1,104]},{39:105,43:w,44:m,45:y},{34:[1,106]},{34:[1,107]},{39:108,43:w,44:m,45:y},{34:[1,109]},t(d,[2,31],{35:[1,111],38:[1,110]}),t(d,[2,32],{33:[1,113],35:[1,112]}),t(d,[2,33],{33:[1,114],38:[1,115]}),{34:[1,116],36:[1,117]},{34:[1,118]},{34:[1,119]},t(d,[2,24]),t(d,[2,49],{33:[1,120],42:[1,121]}),t(d,[2,53],{38:[1,122],42:[1,123]}),t(d,[2,63],{33:[1,125],38:[1,124]}),t(d,[2,50],{33:[1,126],42:[1,127]}),t(d,[2,55],{35:[1,128],42:[1,129]}),t(d,[2,66],{33:[1,131],35:[1,130]}),t(d,[2,52],{38:[1,132],42:[1,133]}),t(d,[2,54],{35:[1,134],42:[1,135]}),t(d,[2,67],{35:[1,137],38:[1,136]}),t(d,[2,64],{33:[1,139],38:[1,138]}),t(d,[2,65],{33:[1,141],35:[1,140]}),t(d,[2,68],{35:[1,143],38:[1,142]}),{39:144,43:w,44:m,45:y},{34:[1,145]},{34:[1,146]},{34:[1,147]},{34:[1,148]},{39:149,43:w,44:m,45:y},t(d,[2,26]),t(d,[2,27]),t(d,[2,28]),t(d,[2,29]),{34:[1,150]},{34:[1,151]},{39:152,43:w,44:m,45:y},{34:[1,153]},{39:154,43:w,44:m,45:y},{34:[1,155]},{34:[1,156]},{34:[1,157]},{34:[1,158]},{34:[1,159]},{34:[1,160]},{34:[1,161]},{39:162,43:w,44:m,45:y},{34:[1,163]},{34:[1,164]},{34:[1,165]},{39:166,43:w,44:m,45:y},{34:[1,167]},{39:168,43:w,44:m,45:y},{34:[1,169]},{34:[1,170]},{34:[1,171]},{39:172,43:w,44:m,45:y},{34:[1,173]},t(d,[2,37],{35:[1,174]}),t(d,[2,38],{38:[1,175]}),t(d,[2,36],{33:[1,176]}),t(d,[2,39],{35:[1,177]}),t(d,[2,34],{38:[1,178]}),t(d,[2,35],{33:[1,179]}),t(d,[2,60],{42:[1,180]}),t(d,[2,73],{33:[1,181]}),t(d,[2,61],{42:[1,182]}),t(d,[2,84],{38:[1,183]}),t(d,[2,74],{33:[1,184]}),t(d,[2,83],{38:[1,185]}),t(d,[2,59],{42:[1,186]}),t(d,[2,72],{33:[1,187]}),t(d,[2,58],{42:[1,188]}),t(d,[2,78],{35:[1,189]}),t(d,[2,71],{33:[1,190]}),t(d,[2,77],{35:[1,191]}),t(d,[2,57],{42:[1,192]}),t(d,[2,85],{38:[1,193]}),t(d,[2,56],{42:[1,194]}),t(d,[2,79],{35:[1,195]}),t(d,[2,80],{35:[1,196]}),t(d,[2,86],{38:[1,197]}),t(d,[2,70],{33:[1,198]}),t(d,[2,81],{38:[1,199]}),t(d,[2,69],{33:[1,200]}),t(d,[2,75],{35:[1,201]}),t(d,[2,76],{35:[1,202]}),t(d,[2,82],{38:[1,203]}),{34:[1,204]},{39:205,43:w,44:m,45:y},{34:[1,206]},{34:[1,207]},{39:208,43:w,44:m,45:y},{34:[1,209]},{34:[1,210]},{34:[1,211]},{34:[1,212]},{39:213,43:w,44:m,45:y},{34:[1,214]},{39:215,43:w,44:m,45:y},{34:[1,216]},{34:[1,217]},{34:[1,218]},{34:[1,219]},{34:[1,220]},{34:[1,221]},{34:[1,222]},{39:223,43:w,44:m,45:y},{34:[1,224]},{34:[1,225]},{34:[1,226]},{39:227,43:w,44:m,45:y},{34:[1,228]},{39:229,43:w,44:m,45:y},{34:[1,230]},{34:[1,231]},{34:[1,232]},{39:233,43:w,44:m,45:y},t(d,[2,40]),t(d,[2,42]),t(d,[2,41]),t(d,[2,43]),t(d,[2,45]),t(d,[2,44]),t(d,[2,101]),t(d,[2,102]),t(d,[2,99]),t(d,[2,100]),t(d,[2,104]),t(d,[2,103]),t(d,[2,108]),t(d,[2,107]),t(d,[2,106]),t(d,[2,105]),t(d,[2,110]),t(d,[2,109]),t(d,[2,98]),t(d,[2,97]),t(d,[2,96]),t(d,[2,95]),t(d,[2,93]),t(d,[2,94]),t(d,[2,92]),t(d,[2,91]),t(d,[2,90]),t(d,[2,89]),t(d,[2,87]),t(d,[2,88])],defaultActions:{9:[2,118],10:[2,1],11:[2,2],19:[2,3],27:[2,4],46:[2,120],47:[2,5]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),50;case 1:return this.begin("type_directive"),51;case 2:return this.popState(),this.begin("arg_directive"),9;case 3:return this.popState(),this.popState(),53;case 4:return 52;case 5:return this.begin("acc_title"),20;case 6:return this.popState(),"acc_title_value";case 7:return this.begin("acc_descr"),22;case 8:return this.popState(),"acc_descr_value";case 9:this.begin("acc_descr_multiline");break;case 10:case 34:case 38:this.popState();break;case 11:return"acc_descr_multiline_value";case 12:return 14;case 13:case 14:break;case 15:return 6;case 16:return 40;case 17:return 33;case 18:return 38;case 19:return 42;case 20:return 43;case 21:return 44;case 22:return 45;case 23:return 35;case 24:return 29;case 25:return 30;case 26:return 37;case 27:return 32;case 28:return 27;case 29:case 30:return 10;case 31:return 9;case 32:return"CARET";case 33:this.begin("options");break;case 35:return 13;case 36:return 36;case 37:this.begin("string");break;case 39:return 34;case 40:return 31;case 41:return 54;case 42:return 8}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[10,11],inclusive:!1},acc_descr:{rules:[8],inclusive:!1},acc_title:{rules:[6],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},options:{rules:[34,35],inclusive:!1},string:{rules:[38,39],inclusive:!1},INITIAL:{rules:[0,5,7,9,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,36,37,40,41,42,43],inclusive:!0}}};function _(){this.yy={}}return x.lexer=k,_.prototype=x,x.Parser=_,new _}());a.parser=a;const o=a;let s=(0,i.c)().gitGraph.mainBranchName,c=(0,i.c)().gitGraph.mainBranchOrder,u={},l=null,h={};h[s]={name:s,order:c};let f={};f[s]=l;let d=s,g="LR",p=0;function b(){return(0,i.y)({length:7})}let w={};const m=function(t){if(t=i.e.sanitizeText(t,(0,i.c)()),void 0===f[t]){let e=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+t+'")');throw e.hash={text:"checkout "+t,token:"checkout "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+t+'"']},e}{d=t;const e=f[d];l=u[e]}};function y(t,e,n){const i=t.indexOf(e);-1===i?t.push(n):t.splice(i,1,n)}function v(t){const e=t.reduce(((t,e)=>t.seq>e.seq?t:e),t[0]);let n="";t.forEach((function(t){n+=t===e?"\t*":"\t|"}));const r=[n,e.id,e.seq];for(let t in f)f[t]===e.id&&r.push(t);if(i.l.debug(r.join(" ")),e.parents&&2==e.parents.length){const n=u[e.parents[0]];y(t,e,n),t.push(u[e.parents[1]])}else{if(0==e.parents.length)return;{const n=u[e.parents];y(t,e,n)}}v(t=function(t,e){const n=Object.create(null);return t.reduce(((t,i)=>{const r=e(i);return n[r]||(n[r]=!0,t.push(i)),t}),[])}(t,(t=>t.id)))}const x=function(){const t=Object.keys(u).map((function(t){return u[t]}));return t.forEach((function(t){i.l.debug(t.id)})),t.sort(((t,e)=>t.seq-e.seq)),t},k={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},_={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().gitGraph,setDirection:function(t){g=t},setOptions:function(t){i.l.debug("options str",t),t=(t=t&&t.trim())||"{}";try{w=JSON.parse(t)}catch(t){i.l.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return w},commit:function(t,e,n,r){i.l.debug("Entering commit:",t,e,n,r),e=i.e.sanitizeText(e,(0,i.c)()),t=i.e.sanitizeText(t,(0,i.c)()),r=i.e.sanitizeText(r,(0,i.c)());const a={id:e||p+"-"+b(),message:t,seq:p++,type:n||k.NORMAL,tag:r||"",parents:null==l?[]:[l.id],branch:d};l=a,u[a.id]=a,f[d]=a.id,i.l.debug("in pushCommit "+a.id)},branch:function(t,e){if(t=i.e.sanitizeText(t,(0,i.c)()),void 0!==f[t]){let e=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+t+'")');throw e.hash={text:"branch "+t,token:"branch "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+t+'"']},e}f[t]=null!=l?l.id:null,h[t]={name:t,order:e?parseInt(e,10):null},m(t),i.l.debug("in createBranch")},merge:function(t,e,n,r){t=i.e.sanitizeText(t,(0,i.c)()),e=i.e.sanitizeText(e,(0,i.c)());const a=u[f[d]],o=u[f[t]];if(d===t){let e=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(void 0===a||!a){let e=new Error('Incorrect usage of "merge". Current branch ('+d+")has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},e}if(void 0===f[t]){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+t]},e}if(void 0===o||!o){let e=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},e}if(a===o){let e=new Error('Incorrect usage of "merge". Both branches have same head');throw e.hash={text:"merge "+t,token:"merge "+t,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},e}if(e&&void 0!==u[e]){let i=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom Id");throw i.hash={text:"merge "+t+e+n+r,token:"merge "+t+e+n+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+t+" "+e+"_UNIQUE "+n+" "+r]},i}const s={id:e||p+"-"+b(),message:"merged branch "+t+" into "+d,seq:p++,parents:[null==l?null:l.id,f[t]],branch:d,type:k.MERGE,customType:n,customId:!!e,tag:r||""};l=s,u[s.id]=s,f[d]=s.id,i.l.debug(f),i.l.debug("in mergeBranch")},cherryPick:function(t,e,n){if(i.l.debug("Entering cherryPick:",t,e,n),t=i.e.sanitizeText(t,(0,i.c)()),e=i.e.sanitizeText(e,(0,i.c)()),n=i.e.sanitizeText(n,(0,i.c)()),!t||void 0===u[t]){let n=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}let r=u[t],a=r.branch;if(r.type===k.MERGE){let n=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}if(!e||void 0===u[e]){if(a===d){let n=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const o=u[f[d]];if(void 0===o||!o){let n=new Error('Incorrect usage of "cherry-pick". Current branch ('+d+")has no commits");throw n.hash={text:"cherryPick "+t+" "+e,token:"cherryPick "+t+" "+e,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},n}const s={id:p+"-"+b(),message:"cherry-picked "+r+" into "+d,seq:p++,parents:[null==l?null:l.id,r.id],branch:d,type:k.CHERRY_PICK,tag:n??"cherry-pick:"+r.id};l=s,u[s.id]=s,f[d]=s.id,i.l.debug(f),i.l.debug("in cherryPick")}},checkout:m,prettyPrint:function(){i.l.debug(u);v([x()[0]])},clear:function(){u={},l=null;let t=(0,i.c)().gitGraph.mainBranchName,e=(0,i.c)().gitGraph.mainBranchOrder;f={},f[t]=null,h={},h[t]={name:t,order:e},d=t,p=0,(0,i.v)()},getBranchesAsObjArray:function(){return Object.values(h).map(((t,e)=>null!==t.order?t:{...t,order:parseFloat(`0.${e}`,10)})).sort(((t,e)=>t.order-e.order)).map((({name:t})=>({name:t})))},getBranches:function(){return f},getCommits:function(){return u},getCommitsArray:x,getCurrentBranch:function(){return d},getDirection:function(){return g},getHead:function(){return l},setAccTitle:i.s,getAccTitle:i.g,getAccDescription:i.a,setAccDescription:i.b,setDiagramTitle:i.r,getDiagramTitle:i.t,commitType:k};let A={};const E=0,T=1,C=2,S=3,I=4;let M={},D={},O=[],L=0;const N=(t,e,n)=>{const r=(0,i.z)().gitGraph,a=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let s=0;Object.keys(e).sort(((t,n)=>e[t].seq-e[n].seq)).forEach((t=>{const i=e[t],c=M[i.branch].pos,u=s+10;if(n){let t,e=void 0!==i.customType&&""!==i.customType?i.customType:i.type;switch(e){case E:t="commit-normal";break;case T:t="commit-reverse";break;case C:t="commit-highlight";break;case S:t="commit-merge";break;case I:t="commit-cherry-pick";break;default:t="commit-normal"}if(e===C){const e=a.append("rect");e.attr("x",u-10),e.attr("y",c-10),e.attr("height",20),e.attr("width",20),e.attr("class",`commit ${i.id} commit-highlight${M[i.branch].index%8} ${t}-outer`),a.append("rect").attr("x",u-6).attr("y",c-6).attr("height",12).attr("width",12).attr("class",`commit ${i.id} commit${M[i.branch].index%8} ${t}-inner`)}else if(e===I)a.append("circle").attr("cx",u).attr("cy",c).attr("r",10).attr("class",`commit ${i.id} ${t}`),a.append("circle").attr("cx",u-3).attr("cy",c+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${t}`),a.append("circle").attr("cx",u+3).attr("cy",c+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${t}`),a.append("line").attr("x1",u+3).attr("y1",c+1).attr("x2",u).attr("y2",c-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${t}`),a.append("line").attr("x1",u-3).attr("y1",c+1).attr("x2",u).attr("y2",c-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${t}`);else{const n=a.append("circle");if(n.attr("cx",u),n.attr("cy",c),n.attr("r",i.type===S?9:10),n.attr("class",`commit ${i.id} commit${M[i.branch].index%8}`),e===S){const e=a.append("circle");e.attr("cx",u),e.attr("cy",c),e.attr("r",6),e.attr("class",`commit ${t} ${i.id} commit${M[i.branch].index%8}`)}if(e===T){a.append("path").attr("d",`M ${u-5},${c-5}L${u+5},${c+5}M${u-5},${c+5}L${u+5},${c-5}`).attr("class",`commit ${t} ${i.id} commit${M[i.branch].index%8}`)}}}if(D[i.id]={x:s+10,y:c},n){const t=4,e=2;if(i.type!==I&&(i.customId&&i.type===S||i.type!==S)&&r.showCommitLabel){const t=o.append("g"),n=t.insert("rect").attr("class","commit-label-bkg"),a=t.append("text").attr("x",s).attr("y",c+25).attr("class","commit-label").text(i.id);let u=a.node().getBBox();if(n.attr("x",s+10-u.width/2-e).attr("y",c+13.5).attr("width",u.width+2*e).attr("height",u.height+2*e),a.attr("x",s+10-u.width/2),r.rotateCommitLabel){let e=-7.5-(u.width+10)/25*9.5,n=10+u.width/25*8.5;t.attr("transform","translate("+e+", "+n+") rotate(-45, "+s+", "+c+")")}}if(i.tag){const n=o.insert("polygon"),r=o.append("circle"),a=o.append("text").attr("y",c-16).attr("class","tag-label").text(i.tag);let u=a.node().getBBox();a.attr("x",s+10-u.width/2);const l=u.height/2,h=c-19.2;n.attr("class","tag-label-bkg").attr("points",`\n ${s-u.width/2-t/2},${h+e}\n ${s-u.width/2-t/2},${h-e}\n ${s+10-u.width/2-t},${h-l-e}\n ${s+10+u.width/2+t},${h-l-e}\n ${s+10+u.width/2+t},${h+l+e}\n ${s+10-u.width/2-t},${h+l+e}`),r.attr("cx",s-u.width/2+t/2).attr("cy",h).attr("r",1.5).attr("class","tag-hole")}}s+=50,s>L&&(L=s)}))},P=(t,e,n=0)=>{const i=t+Math.abs(t-e)/2;if(n>5)return i;if(O.every((t=>Math.abs(t-i)>=10)))return O.push(i),i;const r=Math.abs(t-e);return P(t,e-r/5,n+1)},B=(t,e,n,i)=>{const r=D[e.id],a=D[n.id],o=((t,e,n)=>Object.keys(n).filter((i=>n[i].branch===e.branch&&n[i].seq>t.seq&&n[i].seq0)(e,n,i);let s,c="",u="",l=0,h=0,f=M[n.branch].index;if(o){c="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",l=10,h=10,f=M[n.branch].index;const t=r.ya.y&&(c="A 20 20, 0, 0, 0,",l=20,h=20,f=M[e.branch].index,s=`M ${r.x} ${r.y} L ${a.x-l} ${r.y} ${c} ${a.x} ${r.y-h} L ${a.x} ${a.y}`),r.y===a.y&&(f=M[e.branch].index,s=`M ${r.x} ${r.y} L ${r.x} ${a.y-l} ${c} ${r.x+h} ${a.y} L ${a.x} ${a.y}`);t.append("path").attr("d",s).attr("class","arrow arrow"+f%8)},F=(t,e)=>{const n=(0,i.z)().gitGraph,r=t.append("g");e.forEach(((t,e)=>{const i=e%8,a=M[t.name].pos,o=r.append("line");o.attr("x1",0),o.attr("y1",a),o.attr("x2",L),o.attr("y2",a),o.attr("class","branch branch"+i),O.push(a);const s=(t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","text");let n=[];n="string"==typeof t?t.split(/\\n|\n|/gi):Array.isArray(t)?t:[];for(const t of n){const n=document.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),n.setAttribute("dy","1em"),n.setAttribute("x","0"),n.setAttribute("class","row"),n.textContent=t.trim(),e.appendChild(n)}return e})(t.name),c=r.insert("rect"),u=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+i);u.node().appendChild(s);let l=s.getBBox();c.attr("class","branchLabelBkg label"+i).attr("rx",4).attr("ry",4).attr("x",-l.width-4-(!0===n.rotateCommitLabel?30:0)).attr("y",-l.height/2+8).attr("width",l.width+18).attr("height",l.height+4),u.attr("transform","translate("+(-l.width-14-(!0===n.rotateCommitLabel?30:0))+", "+(a-l.height/2-1)+")"),c.attr("transform","translate(-19, "+(a-l.height/2)+")")}))},R={parser:o,db:_,renderer:{draw:function(t,e,n,a){M={},D={},A={},L=0,O=[];const o=(0,i.z)(),s=o.gitGraph;i.l.debug("in gitgraph renderer",t+"\n","id:",e,n),A=a.db.getCommits();const c=a.db.getBranchesAsObjArray();let u=0;c.forEach(((t,e)=>{M[t.name]={pos:u,index:e},u+=50+(s.rotateCommitLabel?40:0)}));const l=(0,r.Ys)(`[id="${e}"]`);N(l,A,!1),s.showBranches&&F(l,c),((t,e)=>{const n=t.append("g").attr("class","commit-arrows");Object.keys(e).forEach((t=>{const i=e[t];i.parents&&i.parents.length>0&&i.parents.forEach((t=>{B(n,e[t],i,e)}))}))})(l,A),N(l,A,!0),i.u.insertTitle(l,"gitTitleText",s.titleTopMargin,a.db.getDiagramTitle()),(0,i.A)(void 0,l,s.diagramPadding,s.useMaxWidth??o.useMaxWidth)}},styles:t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map((e=>`\n .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; }\n .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; }\n .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; }\n .label${e} { fill: ${t["git"+e]}; }\n .arrow${e} { stroke: ${t["git"+e]}; }\n `)).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`}},113:function(t,e,n){"use strict";n.d(e,{r:function(){return _}});var i=n(1768),r=n(835),a=n(3430),o=n(8540),s=n(8066),c=n(1524),u=n(1504);let l={},h={},f={};const d=(t,e)=>(o.l.trace("In isDecendant",e," ",t," = ",h[e].includes(t)),!!h[e].includes(t)),g=(t,e,n,i)=>{o.l.warn("Copying children of ",t,"root",i,"data",e.node(t),i);const r=e.children(t)||[];t!==i&&r.push(t),o.l.warn("Copying (nodes) clusterId",t,"nodes",r),r.forEach((r=>{if(e.children(r).length>0)g(r,e,n,i);else{const a=e.node(r);o.l.info("cp ",r," to ",i," with parent ",t),n.setNode(r,a),i!==e.parent(r)&&(o.l.warn("Setting parent",r,e.parent(r)),n.setParent(r,e.parent(r))),t!==i&&r!==t?(o.l.debug("Setting parent",r,t),n.setParent(r,t)):(o.l.info("In copy ",t,"root",i,"data",e.node(t),i),o.l.debug("Not Setting parent for node=",r,"cluster!==rootId",t!==i,"node!==clusterId",r!==t));const s=e.edges(r);o.l.debug("Copying Edges",s),s.forEach((r=>{o.l.info("Edge",r);const a=e.edge(r.v,r.w,r.name);o.l.info("Edge data",a,i);try{((t,e)=>(o.l.info("Decendants of ",e," is ",h[e]),o.l.info("Edge is ",t),t.v!==e&&t.w!==e&&(h[e]?h[e].includes(t.v)||d(t.v,e)||d(t.w,e)||h[e].includes(t.w):(o.l.debug("Tilt, ",e,",not in decendants"),!1))))(r,i)?(o.l.info("Copying as ",r.v,r.w,a,r.name),n.setEdge(r.v,r.w,a,r.name),o.l.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):o.l.info("Skipping copy of edge ",r.v,"--\x3e",r.w," rootId: ",i," clusterId:",t)}catch(t){o.l.error(t)}}))}o.l.debug("Removing node",r),e.removeNode(r)}))},p=(t,e)=>{const n=e.children(t);let i=[...n];for(const r of n)f[r]=t,i=[...i,...p(r,e)];return i},b=(t,e)=>{o.l.trace("Searching",t);const n=e.children(t);if(o.l.trace("Searching children of id ",t,n),n.length<1)return o.l.trace("This is a valid node",t),t;for(const i of n){const n=b(i,e);if(n)return o.l.trace("Found replacement for",t," => ",n),n}},w=t=>l[t]&&l[t].externalConnections&&l[t]?l[t].id:t,m=(t,e)=>{if(o.l.warn("extractor - ",e,r.c(t),t.children("D")),e>10)return void o.l.error("Bailing out");let n=t.nodes(),i=!1;for(const e of n){const n=t.children(e);i=i||n.length>0}if(i){o.l.debug("Nodes = ",n,e);for(const i of n)if(o.l.debug("Extracting node",i,l,l[i]&&!l[i].externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),l[i])if(!l[i].externalConnections&&t.children(i)&&t.children(i).length>0){o.l.warn("Cluster without external connections, without a parent and with children",i,e);let n="TB"===t.graph().rankdir?"LR":"TB";l[i]&&l[i].clusterData&&l[i].clusterData.dir&&(n=l[i].clusterData.dir,o.l.warn("Fixing dir",l[i].clusterData.dir,n));const a=new s.k({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));o.l.warn("Old graph before copy",r.c(t)),g(i,t,a,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:l[i].clusterData,labelText:l[i].labelText,graph:a}),o.l.warn("New graph after copy node: (",i,")",r.c(a)),o.l.debug("Old graph after copy",r.c(t))}else o.l.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!l[i].externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),o.l.debug(l);else o.l.debug("Not a cluster",i,e);n=t.nodes(),o.l.warn("New list of nodes",n);for(const i of n){const n=t.node(i);o.l.warn(" Now next level",i,n),n.clusterNode&&m(n.graph,e+1)}}else o.l.debug("Done, no node has children",t.nodes())},y=(t,e)=>{if(0===e.length)return[];let n=Object.assign(e);return e.forEach((e=>{const i=t.children(e),r=y(t,i);n=[...n,...r]})),n},v={rect:(t,e)=>{o.l.info("Creating subgraph rect for ",e.id,e);const n=t.insert("g").attr("class","cluster"+(e.class?" "+e.class:"")).attr("id",e.id),i=n.insert("rect",":first-child"),r=(0,o.n)((0,o.c)().flowchart.htmlLabels),s=n.insert("g").attr("class","cluster-label"),l="markdown"===e.labelType?(0,c.c)(s,e.labelText,{style:e.labelStyle,useHtmlLabels:r}):s.node().appendChild((0,a.c)(e.labelText,e.labelStyle,void 0,!0));let h=l.getBBox();if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t=l.children[0],e=(0,u.Ys)(l);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}const f=0*e.padding,d=f/2,g=e.width<=h.width+f?h.width+f:e.width;e.width<=h.width+f?e.diff=(h.width-e.width)/2-e.padding/2:e.diff=-e.padding/2,o.l.trace("Data ",e,JSON.stringify(e)),i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-g/2).attr("y",e.y-e.height/2-d).attr("width",g).attr("height",e.height+f),r?s.attr("transform","translate("+(e.x-h.width/2)+", "+(e.y-e.height/2)+")"):s.attr("transform","translate("+e.x+", "+(e.y-e.height/2)+")");const p=i.node().getBBox();return e.width=p.width,e.height=p.height,e.intersect=function(t){return(0,a.i)(e,t)},n},roundedWithTitle:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),i=n.insert("rect",":first-child"),r=n.insert("g").attr("class","cluster-label"),s=n.append("rect"),c=r.node().appendChild((0,a.c)(e.labelText,e.labelStyle,void 0,!0));let l=c.getBBox();if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t=c.children[0],e=(0,u.Ys)(c);l=t.getBoundingClientRect(),e.attr("width",l.width),e.attr("height",l.height)}l=c.getBBox();const h=0*e.padding,f=h/2,d=e.width<=l.width+e.padding?l.width+e.padding:e.width;e.width<=l.width+e.padding?e.diff=(l.width+0*e.padding-e.width)/2:e.diff=-e.padding/2,i.attr("class","outer").attr("x",e.x-d/2-f).attr("y",e.y-e.height/2-f).attr("width",d+h).attr("height",e.height+h),s.attr("class","inner").attr("x",e.x-d/2-f).attr("y",e.y-e.height/2-f+l.height-1).attr("width",d+h).attr("height",e.height+h-l.height-3),r.attr("transform","translate("+(e.x-l.width/2)+", "+(e.y-e.height/2-e.padding/3+((0,o.n)((0,o.c)().flowchart.htmlLabels)?5:3))+")");const g=i.node().getBBox();return e.height=g.height,e.intersect=function(t){return(0,a.i)(e,t)},n},noteGroup:(t,e)=>{const n=t.insert("g").attr("class","note-cluster").attr("id",e.id),i=n.insert("rect",":first-child"),r=0*e.padding,o=r/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-o).attr("y",e.y-e.height/2-o).attr("width",e.width+r).attr("height",e.height+r).attr("fill","none");const s=i.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(t){return(0,a.i)(e,t)},n},divider:(t,e)=>{const n=t.insert("g").attr("class",e.classes).attr("id",e.id),i=n.insert("rect",":first-child"),r=0*e.padding,o=r/2;i.attr("class","divider").attr("x",e.x-e.width/2-o).attr("y",e.y-e.height/2).attr("width",e.width+r).attr("height",e.height+r);const s=i.node().getBBox();return e.width=s.width,e.height=s.height,e.diff=-e.padding/2,e.intersect=function(t){return(0,a.i)(e,t)},n}};let x={};const k=async(t,e,n,s)=>{o.l.info("Graph in recursive render: XXX",r.c(e),s);const c=e.graph().rankdir;o.l.trace("Dir in recursive render - dir:",c);const u=t.insert("g").attr("class","root");e.nodes()?o.l.info("Recursive render XXX",e.nodes()):o.l.info("No nodes found for",e),e.edges().length>0&&o.l.trace("Recursive edges",e.edge(e.edges()[0]));const h=u.insert("g").attr("class","clusters"),f=u.insert("g").attr("class","edgePaths"),d=u.insert("g").attr("class","edgeLabels"),g=u.insert("g").attr("class","nodes");await Promise.all(e.nodes().map((async function(t){const i=e.node(t);if(void 0!==s){const n=JSON.parse(JSON.stringify(s.clusterData));o.l.info("Setting data for cluster XXX (",t,") ",n,s),e.setNode(s.id,n),e.parent(t)||(o.l.trace("Setting parent",t,s.id),e.setParent(t,s.id,n))}if(o.l.info("(Insert) Node XXX"+t+": "+JSON.stringify(e.node(t))),i&&i.clusterNode){o.l.info("Cluster identified",t,i.width,e.node(t));const r=await k(g,i.graph,n,e.node(t)),s=r.elem;(0,a.u)(i,s),i.diff=r.diff||0,o.l.info("Node bounds (abc123)",t,i,i.width,i.x,i.y),(0,a.s)(s,i),o.l.warn("Recursive render complete ",s,i)}else e.children(t).length>0?(o.l.info("Cluster - the non recursive path XXX",t,i.id,i,e),o.l.info(b(i.id,e)),l[i.id]={id:b(i.id,e),node:i}):(o.l.info("Node - the non recursive path",t,i.id,i),await(0,a.e)(g,e.node(t),c))}))),e.edges().forEach((function(t){const n=e.edge(t.v,t.w,t.name);o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),o.l.info("Edge "+t.v+" -> "+t.w+": ",t," ",JSON.stringify(e.edge(t))),o.l.info("Fix",l,"ids:",t.v,t.w,"Translateing: ",l[t.v],l[t.w]),(0,a.f)(d,n)})),e.edges().forEach((function(t){o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t))})),o.l.info("#############################################"),o.l.info("### Layout ###"),o.l.info("#############################################"),o.l.info(e),(0,i.bK)(e),o.l.info("Graph after layout:",r.c(e));let p=0;return(t=>y(t,t.children()))(e).forEach((function(t){const n=e.node(t);o.l.info("Position "+t+": "+JSON.stringify(e.node(t))),o.l.info("Position "+t+": ("+n.x,","+n.y,") width: ",n.width," height: ",n.height),n&&n.clusterNode?(0,a.p)(n):e.children(t).length>0?(((t,e)=>{o.l.trace("Inserting cluster");const n=e.shape||"rect";x[e.id]=v[n](t,e)})(h,n),l[n.id].node=n):(0,a.p)(n)})),e.edges().forEach((function(t){const i=e.edge(t);o.l.info("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(i),i);const r=(0,a.g)(f,t,i,l,n,e);(0,a.h)(i,r)})),e.nodes().forEach((function(t){const n=e.node(t);o.l.info(t,n.type,n.diff),"group"===n.type&&(p=n.diff)})),{elem:u,diff:p}},_=async(t,e,n,i,s)=>{(0,a.a)(t,n,i,s),(0,a.b)(),(0,a.d)(),x={},h={},f={},l={},o.l.warn("Graph at first:",r.c(e)),((t,e)=>{!t||e>10?o.l.debug("Opting out, no graph "):(o.l.debug("Opting in, graph "),t.nodes().forEach((function(e){t.children(e).length>0&&(o.l.warn("Cluster identified",e," Replacement id in edges: ",b(e,t)),h[e]=p(e,t),l[e]={id:b(e,t),clusterData:t.node(e)})})),t.nodes().forEach((function(e){const n=t.children(e),i=t.edges();n.length>0?(o.l.debug("Cluster identified",e,h),i.forEach((t=>{t.v!==e&&t.w!==e&&d(t.v,e)^d(t.w,e)&&(o.l.warn("Edge: ",t," leaves cluster ",e),o.l.warn("Decendants of XXX ",e,": ",h[e]),l[e].externalConnections=!0)}))):o.l.debug("Not a cluster ",e,h)})),t.edges().forEach((function(e){const n=t.edge(e);o.l.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),o.l.warn("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t.edge(e)));let i=e.v,r=e.w;if(o.l.warn("Fix XXX",l,"ids:",e.v,e.w,"Translating: ",l[e.v]," --- ",l[e.w]),l[e.v]&&l[e.w]&&l[e.v]===l[e.w]){o.l.warn("Fixing and trixing link to self - removing XXX",e.v,e.w,e.name),o.l.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),i=w(e.v),r=w(e.w),t.removeEdge(e.v,e.w,e.name);const a=e.w+"---"+e.v;t.setNode(a,{domId:a,id:a,labelStyle:"",labelText:n.label,padding:0,shape:"labelRect",style:""});const s=JSON.parse(JSON.stringify(n)),c=JSON.parse(JSON.stringify(n));s.label="",s.arrowTypeEnd="none",c.label="",s.fromCluster=e.v,c.toCluster=e.v,t.setEdge(i,a,s,e.name+"-cyclic-special"),t.setEdge(a,r,c,e.name+"-cyclic-special")}else(l[e.v]||l[e.w])&&(o.l.warn("Fixing and trixing - removing XXX",e.v,e.w,e.name),i=w(e.v),r=w(e.w),t.removeEdge(e.v,e.w,e.name),i!==e.v&&(n.fromCluster=e.v),r!==e.w&&(n.toCluster=e.w),o.l.warn("Fix Replacing with XXX",i,r,e.name),t.setEdge(i,r,n,e.name))})),o.l.warn("Adjusted Graph",r.c(t)),m(t,0),o.l.trace(l))})(e),o.l.warn("Graph after:",r.c(e)),await k(t,e,i)}},5891:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return c}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,i,r,a,o){switch(a.length,r){case 1:return i;case 4:break;case 6:i.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},i={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function r(){this.yy={}}return n.lexer=i,r.prototype=n,n.Parser=r,new r}());a.parser=a;var o="",s=!1;const c={parser:a,db:{setMessage:t=>{i.l.debug("Setting message to: "+t),o=t},getMessage:()=>o,setInfo:t=>{s=t},getInfo:()=>s,clear:i.v},renderer:{draw:(t,e,n)=>{try{i.l.debug("Rendering info diagram\n"+t);const a=(0,i.c)().securityLevel;let o;"sandbox"===a&&(o=(0,r.Ys)("#i"+e));const s=("sandbox"===a?(0,r.Ys)(o.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),s.attr("height",100),s.attr("width",400)}catch(t){i.l.error("Error while rendering info diagram"),i.l.error(t.message)}}},styles:()=>""}},7e3:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return L}});var i=n(8540),r=n(1504),a=n(2699),o=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,17,18,20,22,23,24,26],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,20],l=[1,24],h=[4,6,9,11,17,18,20,22,23,24,26],f={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,taskName:24,taskData:25,open_directive:26,type_directive:27,arg_directive:28,close_directive:29,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",24:"taskName",25:"taskData",26:"open_directive",27:"type_directive",28:"arg_directive",29:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 11:i.setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 15:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 16:i.addTask(a[s-1],a[s]),this.$="task";break;case 18:i.parseDirective("%%{","open_directive");break;case 19:i.parseDirective(a[s],"type_directive");break;case 20:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 21:i.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:e,7:3,12:4,26:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,26:n},{13:8,27:[1,9]},{27:[2,18]},{6:[1,10],7:21,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:a,20:o,22:s,23:c,24:u,26:n},{1:[2,2]},{14:22,15:[1,23],29:l},t([15,29],[2,19]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:21,10:25,12:4,17:r,18:a,20:o,22:s,23:c,24:u,26:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),{19:[1,26]},{21:[1,27]},t(i,[2,14]),t(i,[2,15]),{25:[1,28]},t(i,[2,17]),{11:[1,29]},{16:30,28:[1,31]},{11:[2,21]},t(i,[2,5]),t(i,[2,12]),t(i,[2,13]),t(i,[2,16]),t(h,[2,9]),{14:32,29:l},{29:[2,20]},{11:[1,33]},t(h,[2,10])],defaultActions:{5:[2,18],7:[2,2],24:[2,21],31:[2,20]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),26;case 1:return this.begin("type_directive"),27;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),29;case 4:return 28;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 24;case 21:return 25;case 22:return 15;case 23:return 6;case 24:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23,24],inclusive:!0}}};function g(){this.yy={}}return f.lexer=d,g.prototype=f,f.Parser=g,new g}());o.parser=o;const s=o;let c="";const u=[],l=[],h=[],f=function(){let t=!0;for(const[e,n]of h.entries())h[e].processed,t=t&&n.processed;return t},d={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().journey,clear:function(){u.length=0,l.length=0,c="",h.length=0,(0,i.v)()},setDiagramTitle:i.r,getDiagramTitle:i.t,setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,addSection:function(t){c=t,u.push(t)},getSections:function(){return u},getTasks:function(){let t=f();let e=0;for(;!t&&e<100;)t=f(),e++;return l.push(...h),l},addTask:function(t,e){const n=e.substr(1).split(":");let i=0,r=[];1===n.length?(i=Number(n[0]),r=[]):(i=Number(n[0]),r=n[1].split(","));const a=r.map((t=>t.trim())),o={section:c,type:c,people:a,task:t,score:i};h.push(o)},addTaskOrg:function(t){const e={section:c,type:c,description:t,task:t,classes:[]};l.push(e)},getActors:function(){return function(){const t=[];return l.forEach((e=>{e.people&&t.push(...e.people)})),[...new Set(t)].sort()}()}},g=t=>`.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n`,p=function(t,e){return(0,a.d)(t,e)},b=function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n},w=function(t,e){return(0,a.f)(t,e)};let m=-1;const y=function(){function t(t,e,n,r,a,o,s,c){i(e.append("text").attr("x",n+a/2).attr("y",r+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,r,a,o,s,c,u){const{taskFontSize:l,taskFontFamily:h}=c,f=t.split(//gi);for(let t=0;t3?function(t){const i=(0,r.Nb1)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}(a):e.score<3?function(t){const i=(0,r.Nb1)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}(a):a.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(o,{cx:i,cy:300+30*(5-e.score),score:e.score});const s=(0,a.g)();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,p(o,s);let c=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,i={cx:c,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};b(o,i),c+=10})),y(n)(e.task,o,s.x,s.y,s.width,s.height,{class:"task"},n,e.colour)},A=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},E={};const T=(0,i.c)().journey,C=T.leftMargin,S={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},updateBounds:function(t,e,n,r){const a=(0,i.c)().journey,o=this;let s=0;var c;this.sequenceItems.forEach((function(i){s++;const u=o.sequenceItems.length-s+1;o.updateVal(i,"starty",e-u*a.boxMargin,Math.min),o.updateVal(i,"stopy",r+u*a.boxMargin,Math.max),o.updateVal(S.data,"startx",t-u*a.boxMargin,Math.min),o.updateVal(S.data,"stopx",n+u*a.boxMargin,Math.max),"activation"!==c&&(o.updateVal(i,"startx",t-u*a.boxMargin,Math.min),o.updateVal(i,"stopx",n+u*a.boxMargin,Math.max),o.updateVal(S.data,"starty",e-u*a.boxMargin,Math.min),o.updateVal(S.data,"stopy",r+u*a.boxMargin,Math.max))}))},insert:function(t,e,n,i){const r=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,i),s=Math.max(e,i);this.updateVal(S.data,"startx",r,Math.min),this.updateVal(S.data,"starty",o,Math.min),this.updateVal(S.data,"stopx",a,Math.max),this.updateVal(S.data,"stopy",s,Math.max),this.updateBounds(r,o,a,s)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},I=T.sectionFills,M=T.sectionColours,D=function(t,e,n){const r=(0,i.c)().journey;let a="";const o=n+(2*r.height+r.diagramMarginY);let s=0,c="#CCC",u="black",l=0;for(const[n,i]of e.entries()){if(a!==i.section){c=I[s%I.length],l=s%I.length,u=M[s%M.length];let o=0;const h=i.section;for(let t=n;t(E[e]&&(t[e]=E[e]),t)),{});i.x=n*r.taskMargin+n*r.width+C,i.y=o,i.width=r.diagramMarginX,i.height=r.diagramMarginY,i.colour=u,i.fill=c,i.num=l,i.actors=h,_(t,i,r),S.insert(i.x,i.y,i.x+i.width+r.taskMargin,450)}},O={setConf:function(t){Object.keys(t).forEach((function(e){T[e]=t[e]}))},draw:function(t,e,n,a){const o=(0,i.c)().journey;a.db.clear(),a.parser.parse(t+"\n");const s=(0,i.c)().securityLevel;let c;"sandbox"===s&&(c=(0,r.Ys)("#i"+e));const u="sandbox"===s?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body");S.init();const l=u.select("#"+e);A(l);const h=a.db.getTasks(),f=a.db.getDiagramTitle(),d=a.db.getActors();for(const t in E)delete E[t];let g=0;d.forEach((t=>{E[t]={color:o.actorColours[g%o.actorColours.length],position:g},g++})),function(t){const e=(0,i.c)().journey;let n=60;Object.keys(E).forEach((i=>{const r=E[i].color,a={cx:20,cy:n,r:7,fill:r,stroke:"#000",pos:E[i].position};v(t,a);const o={x:40,y:n+7,fill:"#666",text:i,textMargin:5|e.boxTextMargin};k(t,o),n+=20}))}(l),S.insert(0,0,C,50*Object.keys(E).length),D(l,h,0);const p=S.getBounds();f&&l.append("text").text(f).attr("x",C).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const b=p.stopy-p.starty+2*o.diagramMarginY,w=C+p.stopx+2*o.diagramMarginX;(0,i.i)(l,b,w,o.useMaxWidth),l.append("line").attr("x1",C).attr("y1",4*o.height).attr("x2",w-C-4).attr("y2",4*o.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const m=f?70:0;l.attr("viewBox",`${p.startx} -25 ${w} ${b+m}`),l.attr("preserveAspectRatio","xMinYMin meet"),l.attr("height",b+m+25)}},L={parser:s,db:d,renderer:O,styles:g,init:t=>{O.setConf(t.journey),d.clear()}}},8540:function(t,e,n){"use strict";n.d(e,{A:function(){return $n},B:function(){return yi},C:function(){return xt},D:function(){return Ct},E:function(){return lr},F:function(){return si},G:function(){return tn},H:function(){return gr},I:function(){return On},J:function(){return Nn},K:function(){return Ir},Z:function(){return Qn},a:function(){return Sn},b:function(){return Cn},c:function(){return un},d:function(){return ft},e:function(){return wt},f:function(){return Je},g:function(){return Tn},h:function(){return di},i:function(){return bn},j:function(){return fi},k:function(){return ai},l:function(){return ot},m:function(){return yr},n:function(){return pt},o:function(){return ii},p:function(){return wn},q:function(){return cn},r:function(){return In},s:function(){return En},t:function(){return Mn},u:function(){return vi},v:function(){return An},w:function(){return li},x:function(){return bt},y:function(){return ci},z:function(){return Rn}});var i=n(9632),r=n(7530),a=n(2510),o=n(1504),s=n(6951),c=n(9297),u=n(5571);var l=(t,e)=>{const n=c.Z.parse(t),i={};for(const t in e)e[t]&&(i[t]=n[t]+e[t]);return(0,u.Z)(t,i)},h=n(852);var f=(t,e,n=50)=>{const{r:i,g:r,b:a,a:o}=c.Z.parse(t),{r:s,g:u,b:l,a:f}=c.Z.parse(e),d=n/100,g=2*d-1,p=o-f,b=((g*p==-1?g:(g+p)/(1+g*p))+1)/2,w=1-b,m=i*b+s*w,y=r*b+u*w,v=a*b+l*w,x=o*d+f*(1-d);return(0,h.Z)(m,y,v,x)};var d=(t,e=100)=>{const n=c.Z.parse(t);return n.r=255-n.r,n.g=255-n.g,n.b=255-n.b,f(n,t,e)},g=n(733),p=n(1778),b=n(7471),w=n(9828),m="comm",y="rule",v="decl",x=Math.abs,k=String.fromCharCode;Object.assign;function _(t){return t.trim()}function A(t,e,n){return t.replace(e,n)}function E(t,e){return t.indexOf(e)}function T(t,e){return 0|t.charCodeAt(e)}function C(t,e,n){return t.slice(e,n)}function S(t){return t.length}function I(t,e){return e.push(t),t}function M(t,e){for(var n="",i=0;i0?T(F,--P):0,L--,10===B&&(L=1,O--),B}function $(){return B=P2||U(B)>3?"":" "}function K(t,e){for(;--e&&$()&&!(B<48||B>102||B>57&&B<65||B>70&&B<97););return H(t,q()+(e<6&&32==z()&&32==$()))}function X(t){for(;$();)switch(B){case t:return P;case 34:case 39:34!==t&&39!==t&&X(B);break;case 40:41===t&&X(t);break;case 92:$()}return P}function V(t,e){for(;$()&&t+B!==57&&(t+B!==84||47!==z()););return"/*"+H(e,P-1)+"*"+k(47===t?t:$())}function Q(t){for(;!U(z());)$();return H(t,P)}function J(t){return Y(tt("",null,null,null,[""],t=G(t),0,[0],t))}function tt(t,e,n,i,r,a,o,s,c){for(var u=0,l=0,h=o,f=0,d=0,g=0,p=1,b=1,w=1,m=0,y="",v=r,x=a,_=i,C=y;b;)switch(g=m,m=$()){case 40:if(108!=g&&58==T(C,h-1)){-1!=E(C+=A(Z(m),"&","&\f"),"&\f")&&(w=-1);break}case 34:case 39:case 91:C+=Z(m);break;case 9:case 10:case 13:case 32:C+=W(g);break;case 92:C+=K(q()-1,7);continue;case 47:switch(z()){case 42:case 47:I(nt(V($(),q()),e,n,c),c);break;default:C+="/"}break;case 123*p:s[u++]=S(C)*w;case 125*p:case 59:case 0:switch(m){case 0:case 125:b=0;case 59+l:-1==w&&(C=A(C,/\f/g,"")),d>0&&S(C)-h&&I(d>32?it(C+";",i,n,h-1,c):it(A(C," ","")+";",i,n,h-2,c),c);break;case 59:C+=";";default:if(I(_=et(C,e,n,u,l,r,s,y,v=[],x=[],h,a),a),123===m)if(0===l)tt(C,e,_,_,v,a,h,s,x);else switch(99===f&&110===T(C,3)?100:f){case 100:case 108:case 109:case 115:tt(t,_,_,i&&I(et(t,_,_,0,0,r,s,y,r,v=[],h,x),x),r,x,h,s,i?v:x);break;default:tt(C,_,_,_,[""],x,0,s,x)}}u=l=d=0,p=w=1,y=C="",h=o;break;case 58:h=1+S(C),d=g;default:if(p<1)if(123==m)--p;else if(125==m&&0==p++&&125==j())continue;switch(C+=k(m),m*p){case 38:w=l>0?1:(C+="\f",-1);break;case 44:s[u++]=(S(C)-1)*w,w=1;break;case 64:45===z()&&(C+=Z($())),f=z(),l=h=S(y=C+=Q(q())),m++;break;case 45:45===g&&2==S(C)&&(p=0)}}return a}function et(t,e,n,i,r,a,o,s,c,u,l,h){for(var f=r-1,d=0===r?a:[""],g=function(t){return t.length}(d),p=0,b=0,w=0;p0?d[m]+" "+v:A(v,/&\f/g,d[m])))&&(c[w++]=k);return R(t,e,n,0===r?y:s,c,u,l,h)}function nt(t,e,n,i){return R(t,e,n,m,k(B),C(t,2,-2),0,i)}function it(t,e,n,i,r){return R(t,e,n,v,C(t,0,i),C(t,i+1,-1),i,r)}var rt=n(8403);const at={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},ot={trace:(...t)=>{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},st=function(t="fatal"){let e=at.fatal;"string"==typeof t?(t=t.toLowerCase())in at&&(e=at[t]):"number"==typeof t&&(e=t),ot.trace=()=>{},ot.debug=()=>{},ot.info=()=>{},ot.warn=()=>{},ot.error=()=>{},ot.fatal=()=>{},e<=at.fatal&&(ot.fatal=console.error?console.error.bind(console,ct("FATAL"),"color: orange"):console.log.bind(console,"",ct("FATAL"))),e<=at.error&&(ot.error=console.error?console.error.bind(console,ct("ERROR"),"color: orange"):console.log.bind(console,"",ct("ERROR"))),e<=at.warn&&(ot.warn=console.warn?console.warn.bind(console,ct("WARN"),"color: orange"):console.log.bind(console,"",ct("WARN"))),e<=at.info&&(ot.info=console.info?console.info.bind(console,ct("INFO"),"color: lightblue"):console.log.bind(console,"",ct("INFO"))),e<=at.debug&&(ot.debug=console.debug?console.debug.bind(console,ct("DEBUG"),"color: lightgreen"):console.log.bind(console,"",ct("DEBUG"))),e<=at.trace&&(ot.trace=console.debug?console.debug.bind(console,ct("TRACE"),"color: lightgreen"):console.log.bind(console,"",ct("TRACE")))},ct=t=>`%c${r().format("ss.SSS")} : ${t} : `,ut=//gi,lt=t=>s.sanitize(t),ht=(t,e)=>{var n;if(!1!==(null==(n=e.flowchart)?void 0:n.htmlLabels)){const n=e.securityLevel;"antiscript"===n||"strict"===n?t=lt(t):"loose"!==n&&(t=(t=(t=gt(t)).replace(//g,">")).replace(/=/g,"="),t=dt(t))}return t},ft=(t,e)=>t?t=e.dompurifyConfig?s.sanitize(ht(t,e),e.dompurifyConfig).toString():s.sanitize(ht(t,e),{FORBID_TAGS:["style"]}).toString():t,dt=t=>t.replace(/#br#/g,"
"),gt=t=>t.replace(ut,"#br#"),pt=t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase()),bt=function(t){let e=t;if(t.split("~").length-1>=2){let t=e;do{e=t,t=e.replace(/~([^\s,:;]+)~/,"<$1>")}while(t!=e);return bt(t)}return e},wt={getRows:t=>{if(!t)return[""];return gt(t).replace(/\\n/g,"#br#").split("#br#")},sanitizeText:ft,sanitizeTextOrArray:(t,e)=>"string"==typeof t?ft(t,e):t.flat().map((t=>ft(t,e))),hasBreaks:t=>ut.test(t),splitBreaks:t=>t.split(ut),lineBreakRegex:ut,removeScript:lt,getUrl:t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},evaluate:pt,getMax:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.max(...e)},getMin:function(...t){const e=t.filter((t=>!isNaN(t)));return Math.min(...e)}},mt=(t,e)=>l(t,e?{s:-40,l:10}:{s:-40,l:-10}),yt="#ffffff",vt="#f2f2f2";const xt=t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=l(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=(0,h.Z)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,g.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,g.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e};class kt{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,p.Z)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,p.Z)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,p.Z)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}}const _t={base:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||l(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||l(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||mt(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||mt(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||d(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||d(this.tertiaryColor),this.lineColor=this.lineColor||d(this.background),this.arrowheadColor=this.arrowheadColor||d(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,g.Z)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,g.Z)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||d(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,p.Z)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.darkMode)for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},dark:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,p.Z)(this.primaryColor,16),this.tertiaryColor=l(this.primaryColor,{h:-160}),this.primaryBorderColor=d(this.background),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.tertiaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,p.Z)(d("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=(0,h.Z)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,g.Z)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,g.Z)(this.sectionBkgColor,10),this.taskBorderColor=(0,h.Z)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,h.Z)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,p.Z)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,p.Z)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,p.Z)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=l(this.primaryColor,{h:64}),this.fillType3=l(this.secondaryColor,{h:64}),this.fillType4=l(this.primaryColor,{h:-64}),this.fillType5=l(this.secondaryColor,{h:-64}),this.fillType6=l(this.primaryColor,{h:128}),this.fillType7=l(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},default:{getThemeVariables:xt},forest:{getThemeVariables:t=>{const e=new class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,p.Z)("#cde498",10),this.primaryBorderColor=mt(this.primaryColor,this.darkMode),this.secondaryBorderColor=mt(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=mt(this.tertiaryColor,this.darkMode),this.primaryTextColor=d(this.primaryColor),this.secondaryTextColor=d(this.secondaryColor),this.tertiaryTextColor=d(this.primaryColor),this.lineColor=d(this.background),this.textColor=d(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,g.Z)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||l(this.primaryColor,{h:30}),this.cScale4=this.cScale4||l(this.primaryColor,{h:60}),this.cScale5=this.cScale5||l(this.primaryColor,{h:90}),this.cScale6=this.cScale6||l(this.primaryColor,{h:120}),this.cScale7=this.cScale7||l(this.primaryColor,{h:150}),this.cScale8=this.cScale8||l(this.primaryColor,{h:210}),this.cScale9=this.cScale9||l(this.primaryColor,{h:270}),this.cScale10=this.cScale10||l(this.primaryColor,{h:300}),this.cScale11=this.cScale11||l(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,g.Z)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,g.Z)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}};return e.calculate(t),e}},neutral:{getThemeVariables:t=>{const e=new kt;return e.calculate(t),e}}},At={theme:"default",themeVariables:_t.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,displayMode:"",axisFormat:"%Y-%m-%d",tickInterval:void 0,useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},timeline:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},class:{titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},state:{titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0,defaultRenderer:"dagre-wrapper"},er:{titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0,textPosition:.75},quadrantChart:{chartWidth:500,chartHeight:500,titlePadding:10,titleFontSize:20,quadrantPadding:5,quadrantTextTopPadding:5,quadrantLabelFontSize:16,quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2,xAxisLabelPadding:5,xAxisLabelFontSize:16,xAxisPosition:"top",yAxisLabelPadding:5,yAxisLabelFontSize:16,yAxisPosition:"left",pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},gitGraph:{titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0},c4:{useWidth:void 0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,useMaxWidth:!0,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},fontSize:16};At.class&&(At.class.arrowMarkerAbsolute=At.arrowMarkerAbsolute),At.gitGraph&&(At.gitGraph.arrowMarkerAbsolute=At.arrowMarkerAbsolute);const Et=(t,e="")=>Object.keys(t).reduce(((n,i)=>Array.isArray(t[i])?n:"object"==typeof t[i]&&null!==t[i]?[...n,e+i,...Et(t[i],"")]:[...n,e+i]),[]),Tt=Et(At,""),Ct=At;function St(t){return null==t}var It={isNothing:St,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:St(t)?[]:[t]},repeat:function(t,e){var n,i="";for(n=0;ns&&(e=i-s+(a=" ... ").length),n-i>s&&(n=i+s-(o=" ...").length),{str:a+t.slice(e,n).replace(/\t/g,"→")+o,pos:i-e+a.length}}function Nt(t,e){return It.repeat(" ",e-t.length)+t}var Pt=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var n,i=/\r?\n|\r|\0/g,r=[0],a=[],o=-1;n=i.exec(t.buffer);)a.push(n.index),r.push(n.index+n[0].length),t.position<=n.index&&o<0&&(o=r.length-2);o<0&&(o=r.length-1);var s,c,u="",l=Math.min(t.line+e.linesAfter,a.length).toString().length,h=e.maxLength-(e.indent+l+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)c=Lt(t.buffer,r[o-s],a[o-s],t.position-(r[o]-r[o-s]),h),u=It.repeat(" ",e.indent)+Nt((t.line-s+1).toString(),l)+" | "+c.str+"\n"+u;for(c=Lt(t.buffer,r[o],a[o],t.position,h),u+=It.repeat(" ",e.indent)+Nt((t.line+1).toString(),l)+" | "+c.str+"\n",u+=It.repeat("-",e.indent+l+3+c.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)c=Lt(t.buffer,r[o+s],a[o+s],t.position-(r[o]-r[o+s]),h),u+=It.repeat(" ",e.indent)+Nt((t.line+s+1).toString(),l)+" | "+c.str+"\n";return u.replace(/\n$/,"")},Bt=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Ft=["scalar","sequence","mapping"];var Rt=function(t,e){var n,i;if(e=e||{},Object.keys(e).forEach((function(e){if(-1===Bt.indexOf(e))throw new Ot('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=(n=e.styleAliases||null,i={},null!==n&&Object.keys(n).forEach((function(t){n[t].forEach((function(e){i[String(e)]=t}))})),i),-1===Ft.indexOf(this.kind))throw new Ot('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function jt(t,e){var n=[];return t[e].forEach((function(t){var e=n.length;n.forEach((function(n,i){n.tag===t.tag&&n.kind===t.kind&&n.multi===t.multi&&(e=i)})),n[e]=t})),n}function $t(t){return this.extend(t)}$t.prototype.extend=function(t){var e=[],n=[];if(t instanceof Rt)n.push(t);else if(Array.isArray(t))n=n.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new Ot("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof Rt))throw new Ot("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new Ot("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new Ot("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(t){if(!(t instanceof Rt))throw new Ot("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var i=Object.create($t.prototype);return i.implicit=(this.implicit||[]).concat(e),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=jt(i,"implicit"),i.compiledExplicit=jt(i,"explicit"),i.compiledTypeMap=function(){var t,e,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function i(t){t.multi?(n.multi[t.kind].push(t),n.multi.fallback.push(t)):n[t.kind][t.tag]=n.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Wt=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var Kt=/^[-+]?[0-9]+e/;var Xt=new Rt("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!Wt.test(t)||"_"===t[t.length-1])},construct:function(t){var e,n;return n="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:n*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||It.isNegativeZero(t))},represent:function(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(It.isNegativeZero(t))return"-0.0";return n=t.toString(10),Kt.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),Vt=zt.extend({implicit:[qt,Ht,Zt,Xt]}),Qt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Jt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var te=new Rt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==Qt.exec(t)||null!==Jt.exec(t))},construct:function(t){var e,n,i,r,a,o,s,c,u=0,l=null;if(null===(e=Qt.exec(t))&&(e=Jt.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(l=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(l=-l)),c=new Date(Date.UTC(n,i,r,a,o,s,u)),l&&c.setTime(c.getTime()-l),c},instanceOf:Date,represent:function(t){return t.toISOString()}});var ee=new Rt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),ne="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var ie=new Rt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,n,i=0,r=t.length,a=ne;for(n=0;n64)){if(e<0)return!1;i+=6}return i%8==0},construct:function(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,a=ne,o=0,s=[];for(e=0;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(i.charAt(e));return 0===(n=r%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===n?(s.push(o>>10&255),s.push(o>>2&255)):12===n&&s.push(o>>4&255),new Uint8Array(s)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,n,i="",r=0,a=t.length,o=ne;for(e=0;e>18&63],i+=o[r>>12&63],i+=o[r>>6&63],i+=o[63&r]),r=(r<<8)+t[e];return 0===(n=a%3)?(i+=o[r>>18&63],i+=o[r>>12&63],i+=o[r>>6&63],i+=o[63&r]):2===n?(i+=o[r>>10&63],i+=o[r>>4&63],i+=o[r<<2&63],i+=o[64]):1===n&&(i+=o[r>>2&63],i+=o[r<<4&63],i+=o[64],i+=o[64]),i}}),re=Object.prototype.hasOwnProperty,ae=Object.prototype.toString;var oe=new Rt("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,n,i,r,a,o=[],s=t;for(e=0,n=s.length;e>10),56320+(t-65536&1023))}for(var Se=new Array(256),Ie=new Array(256),Me=0;Me<256;Me++)Se[Me]=Te(Me)?1:0,Ie[Me]=Te(Me);function De(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||he,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Oe(t,e){var n={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return n.snippet=Pt(n),new Ot(e,n)}function Le(t,e){throw Oe(t,e)}function Ne(t,e){t.onWarning&&t.onWarning.call(null,Oe(t,e))}var Pe={YAML:function(t,e,n){var i,r,a;null!==t.version&&Le(t,"duplication of %YAML directive"),1!==n.length&&Le(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&Le(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),a=parseInt(i[2],10),1!==r&&Le(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Ne(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&Le(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],be.test(i)||Le(t,"ill-formed tag handle (first argument) of the TAG directive"),fe.call(t.tagMap,i)&&Le(t,'there is a previously declared suffix for "'+i+'" tag handle'),we.test(r)||Le(t,"ill-formed tag prefix (second argument) of the TAG directive");try{r=decodeURIComponent(r)}catch(e){Le(t,"tag prefix is malformed: "+r)}t.tagMap[i]=r}};function Be(t,e,n,i){var r,a,o,s;if(e1&&(t.result+=It.repeat("\n",e-1))}function He(t,e){var n,i,r=t.tag,a=t.anchor,o=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),i=t.input.charCodeAt(t.position);0!==i&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Le(t,"tab characters must not be used in indentation")),45===i)&&xe(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,$e(t,!0,-1)&&t.lineIndent<=e)o.push(null),i=t.input.charCodeAt(t.position);else if(n=t.line,Ye(t,e,3,!1,!0),o.push(t.result),$e(t,!0,-1),i=t.input.charCodeAt(t.position),(t.line===n||t.lineIndent>e)&&0!==i)Le(t,"bad indentation of a sequence entry");else if(t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndente?g=1:t.lineIndent===e?g=0:t.lineIndente)&&(w&&(o=t.line,s=t.lineStart,c=t.position),Ye(t,e,4,!0,r)&&(w?p=t.result:b=t.result),w||(Re(t,f,d,g,p,b,o,s,c),g=p=b=null),$e(t,!0,-1),u=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==u)Le(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===r?Le(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Le(t,"repeat of an indentation width identifier"):(u=e+r-1,c=!0)}if(ve(a)){do{a=t.input.charCodeAt(++t.position)}while(ve(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!ye(a)&&0!==a)}for(;0!==a;){for(je(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!c||t.lineIndentu&&(u=t.lineIndent),ye(a))l++;else{if(t.lineIndent0){for(r=o,a=0;r>0;r--)(o=_e(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Le(t,"expected hexadecimal character");t.result+=Ce(a),t.position++}else Le(t,"unknown escape sequence");n=i=t.position}else ye(s)?(Be(t,n,i,!0),qe(t,$e(t,!1,e)),n=i=t.position):t.position===t.lineStart&&ze(t)?Le(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Le(t,"unexpected end of the stream within a double quoted scalar")}(t,f)?b=!0:!function(t){var e,n,i;if(42!==(i=t.input.charCodeAt(t.position)))return!1;for(i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!xe(i)&&!ke(i);)i=t.input.charCodeAt(++t.position);return t.position===e&&Le(t,"name of an alias node must contain at least one character"),n=t.input.slice(e,t.position),fe.call(t.anchorMap,n)||Le(t,'unidentified alias "'+n+'"'),t.result=t.anchorMap[n],$e(t,!0,-1),!0}(t)?function(t,e,n){var i,r,a,o,s,c,u,l,h=t.kind,f=t.result;if(xe(l=t.input.charCodeAt(t.position))||ke(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(xe(i=t.input.charCodeAt(t.position+1))||n&&ke(i)))return!1;for(t.kind="scalar",t.result="",r=a=t.position,o=!1;0!==l;){if(58===l){if(xe(i=t.input.charCodeAt(t.position+1))||n&&ke(i))break}else if(35===l){if(xe(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&ze(t)||n&&ke(l))break;if(ye(l)){if(s=t.line,c=t.lineStart,u=t.lineIndent,$e(t,!1,-1),t.lineIndent>=e){o=!0,l=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=c,t.lineIndent=u;break}}o&&(Be(t,r,a,!1),qe(t,t.line-s),r=a=t.position,o=!1),ve(l)||(a=t.position+1),l=t.input.charCodeAt(++t.position)}return Be(t,r,a,!1),!!t.result||(t.kind=h,t.result=f,!1)}(t,f,1===n)&&(b=!0,null===t.tag&&(t.tag="?")):(b=!0,null===t.tag&&null===t.anchor||Le(t,"alias node should not have any properties")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===g&&(b=s&&He(t,d))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Le(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),c=0,u=t.implicitTypes.length;c"),null!==t.result&&h.kind!==t.kind&&Le(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result,t.tag)?(t.result=h.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Le(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||b}function Ze(t){var e,n,i,r,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(r=t.input.charCodeAt(t.position))&&($e(t,!0,-1),r=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==r));){for(o=!0,r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!xe(r);)r=t.input.charCodeAt(++t.position);for(i=[],(n=t.input.slice(e,t.position)).length<1&&Le(t,"directive name must not be less than one character in length");0!==r;){for(;ve(r);)r=t.input.charCodeAt(++t.position);if(35===r){do{r=t.input.charCodeAt(++t.position)}while(0!==r&&!ye(r));break}if(ye(r))break;for(e=t.position;0!==r&&!xe(r);)r=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==r&&je(t),fe.call(Pe,n)?Pe[n](t,n,i):Ne(t,'unknown document directive "'+n+'"')}$e(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,$e(t,!0,-1)):o&&Le(t,"directives end mark is expected"),Ye(t,t.lineIndent-1,4,!1,!0),$e(t,!0,-1),t.checkLineBreaks&&ge.test(t.input.slice(a,t.position))&&Ne(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&ze(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,$e(t,!0,-1)):t.positionQe(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||i<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(r||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=Qe(t[n],e[n],{depth:i-1,clobber:r}))})),t)},Je=Qe,tn=Object.freeze(Ct);let en,nn=Je({},tn),rn=[],an=Je({},tn);const on=(t,e)=>{let n=Je({},t),i={};for(const t of e)ln(t),i=Je(i,t);if(n=Je(n,i),i.theme&&i.theme in _t){const t=Je({},en),e=Je(t.themeVariables||{},i.themeVariables);n.theme&&n.theme in _t&&(n.themeVariables=_t[n.theme].getThemeVariables(e))}return an=n,pn(an),an},sn=()=>Je({},nn),cn=t=>(pn(t),Je(an,t),un()),un=()=>Je({},an),ln=t=>{["secure",...nn.secure??[]].forEach((e=>{void 0!==t[e]&&(ot.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{0===e.indexOf("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&ln(t[e])}))},hn=t=>{t.fontFamily&&(t.themeVariables&&t.themeVariables.fontFamily||(t.themeVariables={fontFamily:t.fontFamily})),rn.push(t),on(nn,rn)},fn=(t=nn)=>{rn=[],on(t,rn)};var dn=(t=>(t.LAZY_LOAD_DEPRECATED="The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",t))(dn||{});const gn={},pn=t=>{var e;t&&((t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&(gn[e="LAZY_LOAD_DEPRECATED"]||(ot.warn(dn[e]),gn[e]=!0)))},bn=function(t,e,n,i){const r=function(t,e,n){let i=new Map;return n?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i}(e,n,i);!function(t,e){for(let n of e)t.attr(n[0],n[1])}(t,r)},wn=function(t,e,n,i){const r=e.node().getBBox(),a=r.width,o=r.height;ot.info(`SVG bounds: ${a}x${o}`,r);let s=0,c=0;ot.info(`Graph bounds: ${s}x${c}`,t),s=a+2*n,c=o+2*n,ot.info(`Calculated bounds: ${s}x${c}`),bn(e,c,s,i);const u=`${r.x-n} ${r.y-n} ${r.width+2*n} ${r.height+2*n}`;e.attr("viewBox",u)},mn={},yn=(t,e,n)=>{let i="";return t in mn&&mn[t]?i=mn[t](n):ot.warn(`No theme found for ${t}`),` & {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n fill: ${n.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${n.errorBkgColor};\n }\n & .error-text {\n fill: ${n.errorTextColor};\n stroke: ${n.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${n.lineColor};\n stroke: ${n.lineColor};\n }\n & .marker.cross {\n stroke: ${n.lineColor};\n }\n\n & svg {\n font-family: ${n.fontFamily};\n font-size: ${n.fontSize};\n }\n\n ${i}\n\n ${e}\n`};let vn="",xn="",kn="";const _n=t=>ft(t,un()),An=function(){vn="",kn="",xn=""},En=function(t){vn=_n(t).replace(/^\s+/g,"")},Tn=function(){return vn||xn},Cn=function(t){kn=_n(t).replace(/\n\s+/g,"\n")},Sn=function(){return kn},In=function(t){xn=_n(t)},Mn=function(){return xn},Dn={getAccTitle:Tn,setAccTitle:En,getDiagramTitle:Mn,setDiagramTitle:In,getAccDescription:Sn,setAccDescription:Cn,clear:An},On=Object.freeze(Object.defineProperty({__proto__:null,clear:An,default:Dn,getAccDescription:Sn,getAccTitle:Tn,getDiagramTitle:Mn,setAccDescription:Cn,setAccTitle:En,setDiagramTitle:In},Symbol.toStringTag,{value:"Module"}));let Ln={};const Nn=function(t,e,n,i){ot.debug("parseDirective is being called",e,n,i);try{if(void 0!==e)switch(e=e.trim(),n){case"open_directive":Ln={};break;case"type_directive":if(!Ln)throw new Error("currentDirective is undefined");Ln.type=e.toLowerCase();break;case"arg_directive":if(!Ln)throw new Error("currentDirective is undefined");Ln.args=JSON.parse(e);break;case"close_directive":Pn(t,Ln,i),Ln=void 0}}catch(t){ot.error(`Error while rendering sequenceDiagram directive: ${e} jison context: ${n}`),ot.error(t.message)}},Pn=function(t,e,n){switch(ot.info(`Directive type=${e.type} with args:`,e.args),e.type){case"init":case"initialize":["config"].forEach((t=>{void 0!==e.args[t]&&("flowchart-v2"===n&&(n="flowchart"),e.args[n]=e.args[t],delete e.args[t])})),ot.info("sanitize in handleDirective",e.args),bi(e.args),ot.info("sanitize in handleDirective (done)",e.args),hn(e.args);break;case"wrap":case"nowrap":t&&t.setWrap&&t.setWrap("wrap"===e.type);break;case"themeCss":ot.warn("themeCss encountered");break;default:ot.warn(`Unhandled directive: source: '%%{${e.type}: ${JSON.stringify(e.args?e.args:{})}}%%`,e)}},Bn=ot,Fn=st,Rn=un,jn=t=>ft(t,Rn()),$n=wn,zn=(t,e,n,i)=>Nn(t,e,n,i),qn={},Hn=(t,e,n)=>{if(qn[t])throw new Error(`Diagram ${t} already registered.`);var i,r;qn[t]=e,n&&Vn(t,n),i=t,r=e.styles,mn[i]=r,e.injectUtils&&e.injectUtils(Bn,Fn,Rn,jn,$n,On,zn)},Un=t=>{if(t in qn)return qn[t];throw new Error(`Diagram ${t} not found.`)};class Gn extends Error{constructor(t){super(t),this.name="UnknownDiagramError"}}const Yn=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Zn=/\s*%%.*\n/gm,Wn={},Kn=function(t,e){t=t.replace(Ve,"").replace(Yn,"").replace(Zn,"\n");for(const[n,{detector:i}]of Object.entries(Wn)){if(i(t,e))return n}throw new Gn(`No diagram type detected matching given configuration for text: ${t}`)},Xn=(...t)=>{for(const{id:e,detector:n,loader:i}of t)Vn(e,n,i)},Vn=(t,e,n)=>{Wn[t]?ot.error(`Detector with key ${t} already exists`):Wn[t]={detector:e,loader:n},ot.debug(`Detector with key ${t} added${n?" with loader":""}`)},Qn="​",Jn={curveBasis:o.$0Z,curveBasisClosed:o.Dts,curveBasisOpen:o.WQY,curveBumpX:o.qpX,curveBumpY:o.u93,curveBundle:o.tFB,curveCardinalClosed:o.OvA,curveCardinalOpen:o.dCK,curveCardinal:o.YY7,curveCatmullRomClosed:o.fGX,curveCatmullRomOpen:o.$m7,curveCatmullRom:o.zgE,curveLinear:o.c_6,curveLinearClosed:o.fxm,curveMonotoneX:o.FdL,curveMonotoneY:o.ak_,curveNatural:o.SxZ,curveStep:o.eA_,curveStepAfter:o.jsv,curveStepBefore:o.iJ},ti=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ei=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ni=function(t,e=null){try{const n=new RegExp(`[%]{2}(?![{]${ei.source})(?=[}][%]{2}).*\n`,"ig");let i;t=t.trim().replace(n,"").replace(/'/gm,'"'),ot.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const r=[];for(;null!==(i=ti.exec(t));)if(i.index===ti.lastIndex&&ti.lastIndex++,i&&!e||e&&i[1]&&i[1].match(e)||e&&i[2]&&i[2].match(e)){const t=i[1]?i[1]:i[2],e=i[3]?i[3].trim():i[4]?JSON.parse(i[4].trim()):null;r.push({type:t,args:e})}return 0===r.length&&r.push({type:t,args:null}),1===r.length?r[0]:r}catch(n){return ot.error(`ERROR: ${n.message} - Unable to parse directive\n ${null!==e?" type:"+e:""} based on the text:${t}`),{type:null,args:null}}};function ii(t,e){if(!t)return e;const n=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return Jn[n]||e}function ri(t,e){return t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0}function ai(t){let e="",n="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?n=n+i+";":e=e+i+";");return{style:e,labelStyle:n}}let oi=0;const si=()=>(oi++,"id-"+Math.random().toString(36).substr(2,12)+"-"+oi);const ci=t=>function(t){let e="";const n="0123456789abcdef",i=n.length;for(let r=0;r{if(!t)return t;if(n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},n),wt.lineBreakRegex.test(t))return t;const i=t.split(" "),r=[];let a="";return i.forEach(((t,o)=>{const s=di(`${t} `,n),c=di(a,n);if(s>e){const{hyphenatedStrings:i,remainingWord:o}=hi(t,e,"-",n);r.push(a,...i),a=o}else c+s>=e?(r.push(a),a=t):a=[a,t].filter(Boolean).join(" ");o+1===i.length&&r.push(a)})),r.filter((t=>""!==t)).join(n.joinWith)}),((t,e,n)=>`${t}${e}${n.fontSize}${n.fontWeight}${n.fontFamily}${n.joinWith}`)),hi=(0,w.Z)(((t,e,n="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const r=[...t],a=[];let o="";return r.forEach(((t,s)=>{const c=`${o}${t}`;if(di(c,i)>=e){const t=s+1,e=r.length===t,i=`${c}${n}`;a.push(e?c:i),o=""}else o=c})),{hyphenatedStrings:a,remainingWord:o}}),((t,e,n="-",i)=>`${t}${e}${n}${i.fontSize}${i.fontWeight}${i.fontFamily}`));function fi(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},e),gi(t,e).height}function di(t,e){return e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e),gi(t,e).width}const gi=(0,w.Z)(((t,e)=>{e=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},e);const{fontSize:n,fontFamily:i,fontWeight:r}=e;if(!t)return{width:0,height:0};const[,a]=yi(n),s=["sans-serif",i],c=t.split(wt.lineBreakRegex),u=[],l=(0,o.Ys)("body");if(!l.remove)return{width:0,height:0,lineHeight:0};const h=l.append("svg");for(const t of s){let e=0;const n={width:0,height:0,lineHeight:0};for(const i of c){const o={x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0};o.text=i||Qn;const s=ui(h,o).style("font-size",a).style("font-weight",r).style("font-family",t),c=(s._groups||s)[0][0].getBBox();if(0===c.width&&0===c.height)throw new Error("svg element not in render tree");n.width=Math.round(Math.max(n.width,c.width)),e=Math.round(c.height),n.height+=e,n.lineHeight=Math.round(Math.max(n.lineHeight,e))}u.push(n)}h.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`));let pi;const bi=t=>{if(ot.debug("directiveSanitizer called with",t),"object"==typeof t&&(t.length?t.forEach((t=>bi(t))):Object.keys(t).forEach((e=>{ot.debug("Checking key",e),e.startsWith("__")&&(ot.debug("sanitize deleting __ option",e),delete t[e]),e.includes("proto")&&(ot.debug("sanitize deleting proto option",e),delete t[e]),e.includes("constr")&&(ot.debug("sanitize deleting constr option",e),delete t[e]),e.includes("themeCSS")&&(ot.debug("sanitizing themeCss option"),t[e]=wi(t[e])),e.includes("fontFamily")&&(ot.debug("sanitizing fontFamily option"),t[e]=wi(t[e])),e.includes("altFontFamily")&&(ot.debug("sanitizing altFontFamily option"),t[e]=wi(t[e])),Tt.includes(e)?"object"==typeof t[e]&&(ot.debug("sanitize deleting object",e),bi(t[e])):(ot.debug("sanitize deleting option",e),delete t[e])}))),t.themeVariables){const e=Object.keys(t.themeVariables);for(const n of e){const e=t.themeVariables[n];e&&e.match&&!e.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[n]="")}}ot.debug("After sanitization",t)},wi=t=>{let e=0,n=0;for(const i of t){if(e{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t,10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},vi={assignWithDepth:Je,wrapLabel:li,calculateTextHeight:fi,calculateTextWidth:di,calculateTextDimensions:gi,detectInit:function(t,e){const n=ni(t,/(?:init\b)|(?:initialize\b)/);let i={};if(Array.isArray(n)){const t=n.map((t=>t.args));bi(t),i=Je(i,[...t])}else i=n.args;if(i){let n=Kn(t,e);["config"].forEach((t=>{void 0!==i[t]&&("flowchart-v2"===n&&(n="flowchart"),i[n]=i[t],delete i[t])}))}return i},detectDirective:ni,isSubstringInArray:function(t,e){for(const[n,i]of e.entries())if(i.match(t))return n;return-1},interpolateToCurve:ii,calcLabelPosition:function(t){return 1===t.length?t[0]:function(t){let e,n=0;t.forEach((t=>{n+=ri(t,e),e=t}));let i,r=n/2;return e=void 0,t.forEach((t=>{if(e&&!i){const n=ri(t,e);if(n=1&&(i={x:t.x,y:t.y}),a>0&&a<1&&(i={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t})),i}(t)},calcCardinalityPosition:(t,e,n)=>{let i;ot.info(`our points ${JSON.stringify(e)}`),e[0]!==n&&(e=e.reverse());let r,a=25;i=void 0,e.forEach((t=>{if(i&&!r){const e=ri(t,i);if(e=1&&(r={x:t.x,y:t.y}),n>0&&n<1&&(r={x:(1-n)*i.x+n*t.x,y:(1-n)*i.y+n*t.y})}}i=t}));const o=t?10:5,s=Math.atan2(e[0].y-r.y,e[0].x-r.x),c={x:0,y:0};return c.x=Math.sin(s)*o+(e[0].x+r.x)/2,c.y=-Math.cos(s)*o+(e[0].y+r.y)/2,c},calcTerminalLabelPosition:function(t,e,n){let i,r=JSON.parse(JSON.stringify(n));ot.info("our points",r),"start_left"!==e&&"start_right"!==e&&(r=r.reverse()),r.forEach((t=>{i=t}));let a,o=25+t;i=void 0,r.forEach((t=>{if(i&&!a){const e=ri(t,i);if(e=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*i.x+n*t.x,y:(1-n)*i.y+n*t.y})}}i=t}));const s=10+.5*t,c=Math.atan2(r[0].y-a.y,r[0].x-a.x),u={x:0,y:0};return u.x=Math.sin(c)*s+(r[0].x+a.x)/2,u.y=-Math.cos(c)*s+(r[0].y+a.y)/2,"start_left"===e&&(u.x=Math.sin(c+Math.PI)*s+(r[0].x+a.x)/2,u.y=-Math.cos(c+Math.PI)*s+(r[0].y+a.y)/2),"end_right"===e&&(u.x=Math.sin(c-Math.PI)*s+(r[0].x+a.x)/2-5,u.y=-Math.cos(c-Math.PI)*s+(r[0].y+a.y)/2-5),"end_left"===e&&(u.x=Math.sin(c)*s+(r[0].x+a.x)/2-5,u.y=-Math.cos(c)*s+(r[0].y+a.y)/2-5),u},formatUrl:function(t,e){const n=t.trim();if(n)return"loose"!==e.securityLevel?(0,a.Nm)(n):n},getStylesFromArray:ai,generateId:si,random:ci,runFunc:(t,...e)=>{const n=t.split("."),i=n.length-1,r=n[i];let a=window;for(let t=0;t{if(!i)return;const r=t.node().getBBox();t.append("text").text(i).attr("x",r.x+r.width/2).attr("y",-n).attr("class",e)},parseFontSize:yi},xi="10.2.3",ki={id:"c4",detector:t=>null!==t.match(/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,4946));return{id:"c4",diagram:t}}},_i="flowchart",Ai={id:_i,detector:(t,e)=>{var n,i;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&"elk"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&null!==t.match(/^\s*graph/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,797));return{id:_i,diagram:t}}},Ei="flowchart-v2",Ti={id:Ei,detector:(t,e)=>{var n,i,r;return"dagre-d3"!==(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer)&&"elk"!==(null==(i=null==e?void 0:e.flowchart)?void 0:i.defaultRenderer)&&(null!==t.match(/^\s*graph/)&&"dagre-wrapper"===(null==(r=null==e?void 0:e.flowchart)?void 0:r.defaultRenderer)||null!==t.match(/^\s*flowchart/))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8832));return{id:Ei,diagram:t}}},Ci={id:"er",detector:t=>null!==t.match(/^\s*erDiagram/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6787));return{id:"er",diagram:t}}},Si="gitGraph",Ii={id:Si,detector:t=>null!==t.match(/^\s*gitGraph/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8787));return{id:Si,diagram:t}}},Mi="gantt",Di={id:Mi,detector:t=>null!==t.match(/^\s*gantt/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,2418));return{id:Mi,diagram:t}}},Oi="info",Li={id:Oi,detector:t=>null!==t.match(/^\s*info/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5891));return{id:Oi,diagram:t}}},Ni={id:"pie",detector:t=>null!==t.match(/^\s*pie/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,431));return{id:"pie",diagram:t}}},Pi="quadrantChart",Bi={id:Pi,detector:t=>null!==t.match(/^\s*quadrantChart/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,722));return{id:Pi,diagram:t}}},Fi="requirement",Ri={id:Fi,detector:t=>null!==t.match(/^\s*requirement(Diagram)?/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,927));return{id:Fi,diagram:t}}},ji="sequence",$i={id:ji,detector:t=>null!==t.match(/^\s*sequenceDiagram/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5123));return{id:ji,diagram:t}}},zi="class",qi={id:zi,detector:(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*classDiagram/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6956));return{id:zi,diagram:t}}},Hi="classDiagram",Ui={id:Hi,detector:(t,e)=>{var n;return null!==t.match(/^\s*classDiagram/)&&"dagre-wrapper"===(null==(n=null==e?void 0:e.class)?void 0:n.defaultRenderer)||null!==t.match(/^\s*classDiagram-v2/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,9582));return{id:Hi,diagram:t}}},Gi="state",Yi={id:Gi,detector:(t,e)=>{var n;return"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer)&&null!==t.match(/^\s*stateDiagram/)},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,2809));return{id:Gi,diagram:t}}},Zi="stateDiagram",Wi={id:Zi,detector:(t,e)=>{var n,i;return null!==t.match(/^\s*stateDiagram-v2/)||(!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(n=null==e?void 0:e.state)?void 0:n.defaultRenderer))||!(!t.match(/^\s*stateDiagram/)||"dagre-wrapper"!==(null==(i=null==e?void 0:e.state)?void 0:i.defaultRenderer)))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,6185));return{id:Zi,diagram:t}}},Ki="journey",Xi={id:Ki,detector:t=>null!==t.match(/^\s*journey/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,7e3));return{id:Ki,diagram:t}}},Vi={setConf:function(){},draw:(t,e,n)=>{try{ot.debug("Renering svg for syntax error\n");const t=(0,o.Ys)("#"+e),i=t.append("g");i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+n),t.attr("height",100),t.attr("width",500),t.attr("viewBox","768 0 912 512")}catch(t){ot.error("Error while rendering info diagram"),ot.error((i=t)instanceof Error?i.message:String(i))}var i}},Qi={db:{clear:()=>{}},styles:()=>"",renderer:Vi,parser:{parser:{yy:{}},parse:()=>{}},init:()=>{}},Ji="flowchart-elk",tr={id:Ji,detector:(t,e)=>{var n;return!!(t.match(/^\s*flowchart-elk/)||t.match(/^\s*flowchart|graph/)&&"elk"===(null==(n=null==e?void 0:e.flowchart)?void 0:n.defaultRenderer))},loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,5248));return{id:Ji,diagram:t}}},er="timeline",nr={id:er,detector:t=>null!==t.match(/^\s*timeline/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,315));return{id:er,diagram:t}}},ir="mindmap",rr={id:ir,detector:t=>null!==t.match(/^\s*mindmap/),loader:async()=>{const{diagram:t}=await n.e(4736).then(n.bind(n,8455));return{id:ir,diagram:t}}};let ar=!1;const or=()=>{ar||(ar=!0,Hn("error",Qi,(t=>"error"===t.toLowerCase().trim())),Hn("---",{db:{clear:()=>{}},styles:{},renderer:{},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},(t=>t.toLowerCase().trimStart().startsWith("---"))),Xn(ki,Ui,qi,Ci,Di,Li,Ni,Ri,$i,tr,Ti,Ai,rr,nr,Ii,Wi,Yi,Xi,Bi))};class sr{constructor(t){var e,n;this.text=t,this.type="graph",this.text+="\n";const i=un();try{this.type=Kn(t,i)}catch(t){this.type="error",this.detectError=t}const r=Un(this.type);ot.debug("Type "+this.type),this.db=r.db,null==(n=(e=this.db).clear)||n.call(e),this.renderer=r.renderer,this.parser=r.parser;const a=this.parser.parse.bind(this.parser);this.parser.parse=t=>a((t=>t.trimStart().replace(/^\s*%%(?!{)[^\n]+\n?/gm,""))(function(t,e){var n,i;const r=t.match(Ve);if(r){const a=Xe(r[1],{schema:Ke});return(null==a?void 0:a.title)&&(null==(n=e.setDiagramTitle)||n.call(e,a.title)),(null==a?void 0:a.displayMode)&&(null==(i=e.setDisplayMode)||i.call(e,a.displayMode)),t.slice(r[0].length)}return t}(t,this.db))),this.parser.parser.yy=this.db,r.init&&(r.init(i),ot.info("Initialized diagram "+this.type,i)),this.parse()}parse(){var t,e;if(this.detectError)throw this.detectError;null==(e=(t=this.db).clear)||e.call(t),this.parser.parse(this.text)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}}const cr=async t=>{const e=Kn(t,un());try{Un(e)}catch(t){const n=Wn[e].loader;if(!n)throw new Gn(`Diagram ${e} not found.`);const{id:i,diagram:r}=await n();Hn(i,r)}return new sr(t)};let ur=[];const lr=t=>{ur.push(t)};const hr=["graph","flowchart","flowchart-v2","flowchart-elk","stateDiagram","stateDiagram-v2"],fr=["foreignobject"],dr=["dominant-baseline"];const gr=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},pr=(t,e,n=[])=>`\n.${t} ${e} { ${n.join(" !important; ")} !important; }`,br=(t,e,n,i)=>{const r=((t,e,n={})=>{var i;let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!(0,rt.Z)(n)&&hr.includes(e)){const e=["> *","span"],a=["rect","polygon","ellipse","circle","path"],o=t.htmlLabels||(null==(i=t.flowchart)?void 0:i.htmlLabels)?e:a;for(const t in n){const e=n[t];(0,rt.Z)(e.styles)||o.forEach((t=>{r+=pr(e.id,t,e.styles)})),(0,rt.Z)(e.textStyles)||(r+=pr(e.id,"tspan",e.textStyles))}}return r})(t,e,n);return M(J(`${i}{${yn(e,r,t.themeVariables)}}`),D)},wr=(t,e,n,i,r)=>{const a=t.append("div");a.attr("id",n),i&&a.attr("style",i);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return r&&o.attr("xmlns:xlink",r),o.append("g"),t};function mr(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const yr=Object.freeze({render:async function(t,e,n){var i,r,a,c;or(),fn();const u=vi.detectInit(e);u&&(bi(u),hn(u));const l=un();ot.debug(l),e.length>((null==l?void 0:l.maxTextSize)??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),e=(e=e.replace(/\r\n?/g,"\n")).replace(/<(\w+)([^>]*)>/g,((t,e,n)=>"<"+e+n.replace(/="([^"]*)"/g,"='$1'")+">"));const h="#"+t,f="i"+t,d="#"+f,g="d"+t,p="#"+g;let b=(0,o.Ys)("body");const w="sandbox"===l.securityLevel,m="loose"===l.securityLevel,y=l.fontFamily;if(void 0!==n){if(n&&(n.innerHTML=""),w){const t=mr((0,o.Ys)(n),f);b=(0,o.Ys)(t.nodes()[0].contentDocument.body),b.node().style.margin=0}else b=(0,o.Ys)(n);wr(b,t,g,`font-family: ${y}`,"http://www.w3.org/1999/xlink")}else{if(((t,e,n,i)=>{var r,a,o;null==(r=t.getElementById(e))||r.remove(),null==(a=t.getElementById(n))||a.remove(),null==(o=t.getElementById(i))||o.remove()})(document,t,g,f),w){const t=mr((0,o.Ys)("body"),f);b=(0,o.Ys)(t.nodes()[0].contentDocument.body),b.node().style.margin=0}else b=(0,o.Ys)("body");wr(b,t,g)}let v,x;e=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"fl°°"+e+"¶ß":"fl°"+e+"¶ß"})),e}(e);try{v=await cr(e)}catch(t){v=new sr("error"),x=t}const k=b.select(p).node(),_=v.type,A=k.firstChild,E=A.firstChild,T=hr.includes(_)?v.renderer.getClasses(e,v):{},C=br(l,_,T,h),S=document.createElement("style");S.innerHTML=C,A.insertBefore(S,E);try{await v.renderer.draw(e,t,xi,v)}catch(n){throw Vi.draw(e,t,xi),n}!function(t,e,n,i){(function(t,e){t.attr("role","graphics-document document"),(0,rt.Z)(e)||t.attr("aria-roledescription",e)})(e,t),function(t,e,n,i){if(void 0!==t.insert&&(e||n)){if(n){const e="chart-desc-"+i;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(n)}if(e){const n="chart-title-"+i;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}(e,n,i,e.attr("id"))}(_,b.select(`${p} svg`),null==(r=(i=v.db).getAccTitle)?void 0:r.call(i),null==(c=(a=v.db).getAccDescription)?void 0:c.call(a)),b.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let I=b.select(p).node().innerHTML;if(ot.debug("config.arrowMarkerAbsolute",l.arrowMarkerAbsolute),I=((t="",e,n)=>{let i=t;return n||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=gr(i),i=i.replace(/
/g,"
"),i})(I,w,pt(l.arrowMarkerAbsolute)),w){I=((t="",e)=>``)(I,b.select(p+" svg").node())}else m||(I=s.sanitize(I,{ADD_TAGS:fr,ADD_ATTR:dr}));if(ur.forEach((t=>{t()})),ur=[],x)throw x;const M=w?d:p,D=(0,o.Ys)(M).node();return D&&"remove"in D&&D.remove(),{svg:I,bindFunctions:v.db.bindFunctions}},parse:async function(t,e){or();try{(await cr(t)).parse()}catch(t){if(null==e?void 0:e.suppressErrors)return!1;throw t}return!0},parseDirective:Nn,getDiagramFromText:cr,initialize:function(t={}){var e;(null==t?void 0:t.fontFamily)&&!(null==(e=t.themeVariables)?void 0:e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),en=Je({},t),(null==t?void 0:t.theme)&&t.theme in _t?t.themeVariables=_t[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=_t.default.getThemeVariables(t.themeVariables));const n="object"==typeof t?(t=>(nn=Je({},tn),nn=Je(nn,t),t.theme&&_t[t.theme]&&(nn.themeVariables=_t[t.theme].getThemeVariables(t.themeVariables)),on(nn,rn),nn))(t):sn();st(n.logLevel),or()},getConfig:un,setConfig:cn,getSiteConfig:sn,updateSiteConfig:t=>(nn=Je(nn,t),on(nn,rn),nn),reset:()=>{fn()},globalReset:()=>{fn(tn)},defaultConfig:tn});st(un().logLevel),fn(un());const vr=(t,e,n)=>{ot.warn(t),mi(t)?(n&&n(t.str,t.hash),e.push({...t,message:t.str,error:t})):(n&&n(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},xr=async function(t={querySelector:".mermaid"}){try{await kr(t)}catch(e){if(mi(e)&&ot.error(e.str),Ir.parseError&&Ir.parseError(e),!t.suppressErrors)throw ot.error("Use the suppressErrors option to suppress these errors"),e}},kr=async function({postRenderCallback:t,querySelector:e,nodes:n}={querySelector:".mermaid"}){const r=yr.getConfig();let a;if(ot.debug((t?"":"No ")+"Callback function found"),n)a=n;else{if(!e)throw new Error("Nodes and querySelector are both undefined");a=document.querySelectorAll(e)}ot.debug(`Found ${a.length} diagrams`),void 0!==(null==r?void 0:r.startOnLoad)&&(ot.debug("Start On Load: "+(null==r?void 0:r.startOnLoad)),yr.updateSiteConfig({startOnLoad:null==r?void 0:r.startOnLoad}));const o=new vi.initIdGenerator(r.deterministicIds,r.deterministicIDSeed);let s;const c=[];for(const e of Array.from(a)){if(ot.info("Rendering diagram: "+e.id),e.getAttribute("data-processed"))continue;e.setAttribute("data-processed","true");const n=`mermaid-${o.next()}`;s=e.innerHTML,s=(0,i.Z)(vi.entityDecode(s)).trim().replace(//gi,"
");const r=vi.detectInit(s);r&&ot.debug("Detected early reinit: ",r);try{const{svg:i,bindFunctions:r}=await Sr(n,s,e);e.innerHTML=i,t&&await t(n),r&&r(e)}catch(t){vr(t,c,Ir.parseError)}}if(c.length>0)throw c[0]},_r=function(t){yr.initialize(t)},Ar=function(){if(Ir.startOnLoad){const{startOnLoad:t}=yr.getConfig();t&&Ir.run().catch((t=>ot.error("Mermaid failed to initialize",t)))}};"undefined"!=typeof document&&window.addEventListener("load",Ar,!1);const Er=[];let Tr=!1;const Cr=async()=>{if(!Tr){for(Tr=!0;Er.length>0;){const t=Er.shift();if(t)try{await t()}catch(t){ot.error("Error executing queue",t)}}Tr=!1}},Sr=(t,e,n)=>new Promise(((i,r)=>{Er.push((()=>new Promise(((a,o)=>{yr.render(t,e,n).then((t=>{a(t),i(t)}),(t=>{var e;ot.error("Error parsing",t),null==(e=Ir.parseError)||e.call(Ir,t),o(t),r(t)}))})))),Cr().catch(r)})),Ir={startOnLoad:!0,mermaidAPI:yr,parse:async(t,e)=>new Promise(((n,i)=>{Er.push((()=>new Promise(((r,a)=>{yr.parse(t,e).then((t=>{r(t),n(t)}),(t=>{var e;ot.error("Error parsing",t),null==(e=Ir.parseError)||e.call(Ir,t),a(t),i(t)}))})))),Cr().catch(i)})),render:Sr,init:async function(t,e,n){ot.warn("mermaid.init is deprecated. Please use run instead."),t&&_r(t);const i={postRenderCallback:n,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await xr(i)},run:xr,registerExternalDiagrams:async(t,{lazyLoad:e=!0}={})=>{Xn(...t),!1===e&&await(async()=>{ot.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(Wn).map((async([t,{detector:e,loader:n}])=>{if(n)try{Un(t)}catch(i){try{const{diagram:t,id:i}=await n();Hn(i,t,e)}catch(e){throw ot.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete Wn[t],e}}})))).filter((t=>"rejected"===t.status));if(t.length>0){ot.error(`Failed to load ${t.length} external diagrams`);for(const e of t)ot.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}})()},initialize:_r,parseError:void 0,contentLoaded:Ar,setParseErrorHandler:function(t){Ir.parseError=t},detectType:Kn}},8455:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return S}});var i=n(8540),r=n(1504),a=n(1524),o=n(87),s=n(3539),c=n(7471),u=n(1778),l=n(733),h=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,4],n=[1,13],i=[1,12],r=[1,15],a=[1,16],o=[1,20],s=[1,19],c=[6,7,8],u=[1,26],l=[1,24],h=[1,25],f=[6,7,11],d=[1,6,13,15,16,19,22],g=[1,33],p=[1,34],b=[1,6,7,11,13,15,16,19,22],w={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",a[s].id),i.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 16:i.getLogger().trace("Icon: ",a[s]),i.decorateNode({icon:a[s]});break;case 17:case 21:i.decorateNode({class:a[s]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",a[s].id),i.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 20:i.decorateNode({icon:a[s]});break;case 25:i.getLogger().trace("node found ..",a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:i.getType(a[s-2],a[s])};break;case 26:this.$={id:a[s],descr:a[s],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:i.getType(a[s-2],a[s])}}},table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},t(c,[2,3]),{1:[2,2]},t(c,[2,4]),t(c,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},{6:n,9:22,12:11,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},{6:u,7:l,10:23,11:h},t(f,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:s}),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,23]),t(f,[2,24]),t(f,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:l,10:32,11:h},{1:[2,7],6:n,12:21,13:i,14:14,15:r,16:a,17:17,18:18,19:o,22:s},t(d,[2,14],{7:g,11:p}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(f,[2,15]),t(f,[2,16]),t(f,[2,17]),{20:[1,35]},{21:[1,36]},t(d,[2,13],{7:g,11:p}),t(b,[2,11]),t(b,[2,12]),{21:[1,37]},t(f,[2,25]),t(f,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},m={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\-\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};function y(){this.yy={}}return w.lexer=m,y.prototype=w,w.Parser=y,new y}());h.parser=h;const f=h,d=t=>(0,i.d)(t,(0,i.c)());let g=[],p=0,b={};const w={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},m=(t,e)=>{b[t]=e},y=t=>{switch(t){case w.DEFAULT:return"no-border";case w.RECT:return"rect";case w.ROUNDED_RECT:return"rounded-rect";case w.CIRCLE:return"circle";case w.CLOUD:return"cloud";case w.BANG:return"bang";case w.HEXAGON:return"hexgon";default:return"no-border"}};let v;const x=t=>b[t],k=Object.freeze(Object.defineProperty({__proto__:null,addNode:(t,e,n,r)=>{i.l.info("addNode",t,e,n,r);const a=(0,i.c)(),o={id:p++,nodeId:d(e),level:t,descr:d(n),type:r,children:[],width:(0,i.c)().mindmap.maxNodeWidth};switch(o.type){case w.ROUNDED_RECT:case w.RECT:case w.HEXAGON:o.padding=2*a.mindmap.padding;break;default:o.padding=a.mindmap.padding}const s=function(t){for(let e=g.length-1;e>=0;e--)if(g[e].level{g=[],p=0,b={}},decorateNode:t=>{const e=g[g.length-1];t&&t.icon&&(e.icon=d(t.icon)),t&&t.class&&(e.class=d(t.class))},getElementById:x,getLogger:()=>i.l,getMindmap:()=>g.length>0?g[0]:null,getNodeById:t=>g[t],getType:(t,e)=>{switch(i.l.debug("In get type",t,e),t){case"[":return w.RECT;case"(":return")"===e?w.ROUNDED_RECT:w.CLOUD;case"((":return w.CIRCLE;case")":return w.CLOUD;case"))":return w.BANG;case"{{":return w.HEXAGON;default:return w.DEFAULT}},nodeType:w,get parseError(){return v},sanitizeText:d,setElementForId:m,setErrorHandler:t=>{v=t},type2Str:y},Symbol.toStringTag,{value:"Module"}));const _=function(t,e,n,i){const r=i.htmlLabels,o=n%11,s=t.append("g");e.section=o;let c="section-"+o;o<0&&(c+=" section-root"),s.attr("class",(e.class?e.class+" ":"")+"mindmap-node "+c);const u=s.append("g"),l=s.append("g"),h=e.descr.replace(/()/g,"\n");(0,a.c)(l,h,{useHtmlLabels:r,width:e.width,classes:"mindmap-node-label"}),r||l.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const f=l.node().getBBox(),d=i.fontSize.replace?i.fontSize.replace("px",""):i.fontSize;if(e.height=f.height+1.1*d*.5+e.padding,e.width=f.width+2*e.padding,e.icon)if(e.type===w.CIRCLE){e.height+=50,e.width+=50;s.append("foreignObject").attr("height","50px").attr("width",e.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+o+" "+e.icon),l.attr("transform","translate("+e.width/2+", "+(e.height/2-1.5*e.padding)+")")}else{e.width+=50;const t=e.height;e.height=Math.max(t,60);const n=Math.abs(e.height-t);s.append("foreignObject").attr("width","60px").attr("height",e.height).attr("style","text-align: center;margin-top:"+n/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+o+" "+e.icon),l.attr("transform","translate("+(25+e.width/2)+", "+(n/2+e.padding/2)+")")}else if(r){const t=(e.width-f.width)/2,n=(e.height-f.height)/2;l.attr("transform","translate("+t+", "+n+")")}else{const t=e.width/2,n=e.padding/2;l.attr("transform","translate("+t+", "+n+")")}switch(e.type){case w.DEFAULT:!function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)}(u,e,o);break;case w.ROUNDED_RECT:!function(t,e){t.append("rect").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("height",e.height).attr("rx",e.padding).attr("ry",e.padding).attr("width",e.width)}(u,e);break;case w.RECT:!function(t,e){t.append("rect").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("height",e.height).attr("width",e.width)}(u,e);break;case w.CIRCLE:u.attr("transform","translate("+e.width/2+", "+ +e.height/2+")"),function(t,e){t.append("circle").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("r",e.width/2)}(u,e);break;case w.CLOUD:!function(t,e){const n=e.width,i=e.height,r=.15*n,a=.25*n,o=.35*n,s=.2*n;t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 0 a${r},${r} 0 0,1 ${.25*n},${-1*n*.1}\n a${o},${o} 1 0,1 ${.4*n},${-1*n*.1}\n a${a},${a} 1 0,1 ${.35*n},${1*n*.2}\n\n a${r},${r} 1 0,1 ${.15*n},${1*i*.35}\n a${s},${s} 1 0,1 ${-1*n*.15},${1*i*.65}\n\n a${a},${r} 1 0,1 ${-1*n*.25},${.15*n}\n a${o},${o} 1 0,1 ${-1*n*.5},0\n a${r},${r} 1 0,1 ${-1*n*.25},${-1*n*.15}\n\n a${r},${r} 1 0,1 ${-1*n*.1},${-1*i*.35}\n a${s},${s} 1 0,1 ${.1*n},${-1*i*.65}\n\n H0 V0 Z`)}(u,e);break;case w.BANG:!function(t,e){const n=e.width,i=e.height,r=.15*n;t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+y(e.type)).attr("d",`M0 0 a${r},${r} 1 0,0 ${.25*n},${-1*i*.1}\n a${r},${r} 1 0,0 ${.25*n},0\n a${r},${r} 1 0,0 ${.25*n},0\n a${r},${r} 1 0,0 ${.25*n},${1*i*.1}\n\n a${r},${r} 1 0,0 ${.15*n},${1*i*.33}\n a${.8*r},${.8*r} 1 0,0 0,${1*i*.34}\n a${r},${r} 1 0,0 ${-1*n*.15},${1*i*.33}\n\n a${r},${r} 1 0,0 ${-1*n*.25},${.15*i}\n a${r},${r} 1 0,0 ${-1*n*.25},0\n a${r},${r} 1 0,0 ${-1*n*.25},0\n a${r},${r} 1 0,0 ${-1*n*.25},${-1*i*.15}\n\n a${r},${r} 1 0,0 ${-1*n*.1},${-1*i*.33}\n a${.8*r},${.8*r} 1 0,0 0,${-1*i*.34}\n a${r},${r} 1 0,0 ${.1*n},${-1*i*.33}\n\n H0 V0 Z`)}(u,e);break;case w.HEXAGON:!function(t,e){const n=e.height,i=n/4,r=e.width-e.padding+2*i;!function(t,e,n,i,r){t.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+(r.width-e)/2+", "+n+")")}(t,r,n,[{x:i,y:0},{x:r-i,y:0},{x:r,y:-n/2},{x:r-i,y:-n},{x:i,y:-n},{x:0,y:-n/2}],e)}(u,e)}return m(e.id,s),e.height},A=function(t){const e=x(t.id),n=t.x||0,i=t.y||0;e.attr("transform","translate("+n+","+i+")")};function E(t,e,n,i){_(t,e,n,i),e.children&&e.children.forEach(((e,r)=>{E(t,e,n<0?r:n,i)}))}function T(t,e,n,i){e.add({group:"nodes",data:{id:t.id,labelText:t.descr,height:t.height,width:t.width,level:i,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach((r=>{T(r,e,n,i+1),e.add({group:"edges",data:{id:`${t.id}_${r.id}`,source:t.id,target:r.id,depth:i,section:r.section}})}))}function C(t,e){return new Promise((n=>{const a=(0,r.Ys)("body").append("div").attr("id","cy").attr("style","display:none"),s=o({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});a.remove(),T(t,s,e,0),s.nodes().forEach((function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}})),s.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),s.ready((t=>{i.l.info("Ready",t),n(s)}))}))}o.use(s);const S={db:k,renderer:{draw:async(t,e,n,a)=>{const o=(0,i.c)();o.htmlLabels=!1,a.db.clear(),a.parser.parse(t),i.l.debug("Rendering mindmap diagram\n"+t,a.parser);const s=(0,i.c)().securityLevel;let c;"sandbox"===s&&(c=(0,r.Ys)("#i"+e));const u=("sandbox"===s?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);u.append("g");const l=a.db.getMindmap(),h=u.append("g");h.attr("class","mindmap-edges");const f=u.append("g");f.attr("class","mindmap-nodes"),E(f,l,-1,o);const d=await C(l,o);!function(t,e){e.edges().map(((e,n)=>{const r=e.data();if(e[0]._private.bodyBounds){const a=e[0]._private.rscratch;i.l.trace("Edge: ",n,r),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+r.section+" edge-depth-"+r.depth)}}))}(h,d),function(t){t.nodes().map(((t,e)=>{const n=t.data();n.x=t.position().x,n.y=t.position().y,A(n);const r=x(n.nodeId);i.l.info("Id:",e,"Position: (",t.position().x,", ",t.position().y,")",n),r.attr("transform",`translate(${t.position().x-n.width/2}, ${t.position().y-n.height/2})`),r.attr("attr",`apa-${e})`)}))}(d),(0,i.p)(void 0,u,o.mindmap.padding,o.mindmap.useMaxWidth)}},parser:f,styles:t=>`\n .edge {\n stroke-width: 3;\n }\n ${(t=>{let e="";for(let e=0;el&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},v={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),29;case 1:return this.begin("type_directive"),30;case 2:return this.popState(),this.begin("arg_directive"),24;case 3:return this.popState(),this.popState(),32;case 4:return 31;case 5:case 6:case 8:case 9:break;case 7:return 26;case 10:return this.begin("title"),13;case 11:return this.popState(),"title_value";case 12:return this.begin("acc_title"),15;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),17;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:case 20:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:this.begin("string");break;case 21:return"txt";case 22:return 6;case 23:return 8;case 24:return"value";case 25:return 28}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[20,21],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,14,16,19,22,23,24,25],inclusive:!0}}};function x(){this.yy={}}return y.lexer=v,x.prototype=y,y.Parser=x,new x}());a.parser=a;const o=a;let s={},c=!1;const u={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().pie,addSection:function(t,e){t=i.e.sanitizeText(t,(0,i.c)()),void 0===s[t]&&(s[t]=e,i.l.debug("Added new section :",t))},getSections:()=>s,cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){s={},c=!1,(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setDiagramTitle:i.r,getDiagramTitle:i.t,setShowData:function(t){c=t},getShowData:function(){return c},getAccDescription:i.a,setAccDescription:i.b},l=t=>`\n .pieCircle{\n stroke: ${t.pieStrokeColor};\n stroke-width : ${t.pieStrokeWidth};\n opacity : ${t.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${t.pieOuterStrokeColor};\n stroke-width: ${t.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${t.pieTitleTextSize};\n fill: ${t.pieTitleTextColor};\n font-family: ${t.fontFamily};\n }\n .slice {\n font-family: ${t.fontFamily};\n fill: ${t.pieSectionTextColor};\n font-size:${t.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${t.pieLegendTextColor};\n font-family: ${t.fontFamily};\n font-size: ${t.pieLegendTextSize};\n }\n`;let h,f=(0,i.c)();const d=450,g={parser:o,db:u,renderer:{draw:(t,e,n,a)=>{var o;try{f=(0,i.c)(),i.l.debug("Rendering info diagram\n"+t);const n=(0,i.c)().securityLevel;let k;"sandbox"===n&&(k=(0,r.Ys)("#i"+e));const _="sandbox"===n?(0,r.Ys)(k.nodes()[0].contentDocument.body):(0,r.Ys)("body"),A="sandbox"===n?k.nodes()[0].contentDocument:document;a.db.clear(),a.parser.parse(t),i.l.debug("Parsed info diagram");const E=A.getElementById(e);h=E.parentElement.offsetWidth,void 0===h&&(h=1200),void 0!==f.useWidth&&(h=f.useWidth),void 0!==f.pie.useWidth&&(h=f.pie.useWidth);const T=_.select("#"+e);(0,i.i)(T,d,h,f.pie.useMaxWidth),E.setAttribute("viewBox","0 0 "+h+" "+d);var s=18,c=Math.min(h,d)/2-40,u=T.append("g").attr("transform","translate("+h/2+",225)"),l=a.db.getSections(),g=0;Object.keys(l).forEach((function(t){g+=l[t]}));const C=f.themeVariables;var p=[C.pie1,C.pie2,C.pie3,C.pie4,C.pie5,C.pie6,C.pie7,C.pie8,C.pie9,C.pie10,C.pie11,C.pie12];const S=(null==(o=f.pie)?void 0:o.textPosition)??.75;let[I]=(0,i.B)(C.pieOuterStrokeWidth);I??(I=2);var b=(0,r.PKp)().range(p),w=Object.entries(l).map((function(t,e){return{order:e,name:t[0],value:t[1]}})),m=(0,r.ve8)().value((function(t){return t.value})).sort((function(t,e){return t.order-e.order}))(w),y=(0,r.Nb1)().innerRadius(0).outerRadius(c),v=(0,r.Nb1)().innerRadius(c*S).outerRadius(c*S);u.append("circle").attr("cx",0).attr("cy",0).attr("r",c+I/2).attr("class","pieOuterCircle"),u.selectAll("mySlices").data(m).enter().append("path").attr("d",y).attr("fill",(function(t){return b(t.data.name)})).attr("class","pieCircle"),u.selectAll("mySlices").data(m).enter().append("text").text((function(t){return(t.data.value/g*100).toFixed(0)+"%"})).attr("transform",(function(t){return"translate("+v.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice"),u.append("text").text(a.db.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var x=u.selectAll(".legend").data(b.domain()).enter().append("g").attr("class","legend").attr("transform",(function(t,e){return"translate(216,"+(22*e-22*b.domain().length/2)+")"}));x.append("rect").attr("width",s).attr("height",s).style("fill",b).style("stroke",b),x.data(m).append("text").attr("x",22).attr("y",14).text((function(t){return a.db.getShowData()||f.showData||f.pie.showData?t.data.name+" ["+t.data.value+"]":t.data.name}))}catch(t){i.l.error("Error while rendering info diagram"),i.l.error(t)}}},styles:l}},722:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return h}});var i=n(8540),r=n(1504),a=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[1,6],r=[1,7],a=[1,8],o=[1,10],s=[1,5,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],c=[1,5,7,14,16,18,20,21,26,28,29,30,31,32,38,39,40,41,47,48,50,51,52,53,54,55,56,57,58,59,60],u=[38,39,40],l=[2,8],h=[1,19],f=[1,23],d=[1,24],g=[1,25],p=[1,26],b=[1,27],w=[1,29],m=[1,30],y=[1,31],v=[1,32],x=[1,33],k=[1,34],_=[1,37],A=[1,38],E=[1,39],T=[1,40],C=[1,41],S=[1,42],I=[1,43],M=[1,44],D=[1,45],O=[1,46],L=[1,47],N=[1,48],P=[1,49],B=[1,52],F=[1,67],R=[1,68],j=[5,23,27,38,39,40,50,51,52,53,54,55,56,57,58,59,60,61],$=[5,7,38,39,40,41],z={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,directive:6,QUADRANT:7,document:8,line:9,statement:10,axisDetails:11,quadrantDetails:12,points:13,title:14,title_value:15,acc_title:16,acc_title_value:17,acc_descr:18,acc_descr_value:19,acc_descr_multiline_value:20,section:21,text:22,point_start:23,point_x:24,point_y:25,"X-AXIS":26,"AXIS-TEXT-DELIMITER":27,"Y-AXIS":28,QUADRANT_1:29,QUADRANT_2:30,QUADRANT_3:31,QUADRANT_4:32,openDirective:33,typeDirective:34,closeDirective:35,":":36,argDirective:37,NEWLINE:38,SEMI:39,EOF:40,open_directive:41,type_directive:42,arg_directive:43,close_directive:44,alphaNumToken:45,textNoTagsToken:46,STR:47,MD_STR:48,alphaNum:49,PUNCTUATION:50,AMP:51,NUM:52,ALPHA:53,COMMA:54,PLUS:55,EQUALS:56,MULT:57,DOT:58,BRKT:59,UNDERSCORE:60,MINUS:61,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",7:"QUADRANT",14:"title",15:"title_value",16:"acc_title",17:"acc_title_value",18:"acc_descr",19:"acc_descr_value",20:"acc_descr_multiline_value",21:"section",23:"point_start",24:"point_x",25:"point_y",26:"X-AXIS",27:"AXIS-TEXT-DELIMITER",28:"Y-AXIS",29:"QUADRANT_1",30:"QUADRANT_2",31:"QUADRANT_3",32:"QUADRANT_4",36:":",38:"NEWLINE",39:"SEMI",40:"EOF",41:"open_directive",42:"type_directive",43:"arg_directive",44:"close_directive",47:"STR",48:"MD_STR",50:"PUNCTUATION",51:"AMP",52:"NUM",53:"ALPHA",54:"COMMA",55:"PLUS",56:"EQUALS",57:"MULT",58:"DOT",59:"BRKT",60:"UNDERSCORE",61:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[10,0],[10,2],[10,1],[10,1],[10,1],[10,2],[10,2],[10,2],[10,1],[10,1],[10,1],[13,4],[11,4],[11,3],[11,2],[11,4],[11,3],[11,2],[12,2],[12,2],[12,2],[12,2],[6,3],[6,5],[4,1],[4,1],[4,1],[33,1],[34,1],[37,1],[35,1],[22,1],[22,2],[22,1],[22,1],[49,1],[49,2],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[46,1],[46,1],[46,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 13:this.$=a[s].trim(),i.setDiagramTitle(this.$);break;case 14:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 15:case 16:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 17:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 19:i.addPoint(a[s-3],a[s-1],a[s]);break;case 20:i.setXAxisLeftText(a[s-2]),i.setXAxisRightText(a[s]);break;case 21:a[s-1].text+=" ⟶ ",i.setXAxisLeftText(a[s-1]);break;case 22:i.setXAxisLeftText(a[s]);break;case 23:i.setYAxisBottomText(a[s-2]),i.setYAxisTopText(a[s]);break;case 24:a[s-1].text+=" ⟶ ",i.setYAxisBottomText(a[s-1]);break;case 25:i.setYAxisBottomText(a[s]);break;case 26:i.setQuadrant1Text(a[s]);break;case 27:i.setQuadrant2Text(a[s]);break;case 28:i.setQuadrant3Text(a[s]);break;case 29:i.setQuadrant4Text(a[s]);break;case 35:i.parseDirective("%%{","open_directive");break;case 36:i.parseDirective(a[s],"type_directive");break;case 37:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 38:i.parseDirective("}%%","close_directive","quadrantChart");break;case 39:case 41:this.$={text:a[s],type:"text"};break;case 40:this.$={text:a[s-1].text+""+a[s],type:a[s-1].type};break;case 42:this.$={text:a[s],type:"markdown"};break;case 43:this.$=a[s];break;case 44:this.$=a[s-1]+""+a[s]}},table:[{3:1,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{1:[3]},{3:11,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{3:12,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},{3:13,4:2,5:e,6:4,7:n,33:9,38:i,39:r,40:a,41:o},t(s,[2,5],{8:14}),t(c,[2,32]),t(c,[2,33]),t(c,[2,34]),{34:15,42:[1,16]},{42:[2,35]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(u,l,{33:9,9:17,10:18,11:20,12:21,13:22,6:28,22:35,45:36,1:[2,4],5:h,14:f,16:d,18:g,20:p,21:b,26:w,28:m,29:y,30:v,31:x,32:k,41:o,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),{35:50,36:[1,51],44:B},t([36,44],[2,36]),t(s,[2,6]),{4:53,38:i,39:r,40:a},t(u,l,{33:9,11:20,12:21,13:22,6:28,22:35,45:36,10:54,5:h,14:f,16:d,18:g,20:p,21:b,26:w,28:m,29:y,30:v,31:x,32:k,41:o,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),{15:[1,55]},{17:[1,56]},{19:[1,57]},t(u,[2,16]),t(u,[2,17]),t(u,[2,18]),{22:58,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:59,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:60,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:61,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:62,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{22:63,45:36,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P},{5:F,23:[1,64],45:66,46:65,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R},t(j,[2,39]),t(j,[2,41]),t(j,[2,42]),t(j,[2,45]),t(j,[2,46]),t(j,[2,47]),t(j,[2,48]),t(j,[2,49]),t(j,[2,50]),t(j,[2,51]),t(j,[2,52]),t(j,[2,53]),t(j,[2,54]),t(j,[2,55]),t($,[2,30]),{37:69,43:[1,70]},t($,[2,38]),t(s,[2,7]),t(u,[2,9]),t(u,[2,13]),t(u,[2,14]),t(u,[2,15]),t(u,[2,22],{46:65,45:66,5:F,27:[1,71],50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,25],{46:65,45:66,5:F,27:[1,72],50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,26],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,27],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,28],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,29],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),{24:[1,73]},t(j,[2,40]),t(j,[2,56]),t(j,[2,57]),t(j,[2,58]),{35:74,44:B},{44:[2,37]},t(u,[2,21],{45:36,22:75,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),t(u,[2,24],{45:36,22:76,47:_,48:A,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P}),{25:[1,77]},t($,[2,31]),t(u,[2,20],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,23],{46:65,45:66,5:F,50:E,51:T,52:C,53:S,54:I,55:M,56:D,57:O,58:L,59:N,60:P,61:R}),t(u,[2,19])],defaultActions:{10:[2,35],11:[2,1],12:[2,2],13:[2,3],70:[2,37]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},q={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),41;case 1:return this.begin("type_directive"),42;case 2:return this.popState(),this.begin("arg_directive"),36;case 3:return this.popState(),this.popState(),44;case 4:return 43;case 5:case 6:case 8:break;case 7:return 38;case 9:return this.begin("title"),14;case 10:return this.popState(),"title_value";case 11:return this.begin("acc_title"),16;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),18;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 27:case 29:case 33:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:return 26;case 19:return 28;case 20:return 27;case 21:return 29;case 22:return 30;case 23:return 31;case 24:return 32;case 25:this.begin("md_string");break;case 26:return"MD_STR";case 28:this.begin("string");break;case 30:return"STR";case 31:return this.begin("point_start"),23;case 32:return this.begin("point_x"),24;case 34:this.popState(),this.begin("point_y");break;case 35:return this.popState(),25;case 36:return 7;case 37:return 53;case 38:return"COLON";case 39:return 55;case 40:return 54;case 41:case 42:return 56;case 43:return 57;case 44:return 59;case 45:return 60;case 46:return 58;case 47:return 51;case 48:return 61;case 49:return 52;case 50:return 5;case 51:return 39;case 52:return 50;case 53:return 40}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[35],inclusive:!1},point_x:{rules:[34],inclusive:!1},point_start:{rules:[32,33],inclusive:!1},acc_descr_multiline:{rules:[16,17],inclusive:!1},acc_descr:{rules:[14],inclusive:!1},acc_title:{rules:[12],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[10],inclusive:!1},md_string:{rules:[26,27],inclusive:!1},string:{rules:[29,30],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,11,13,15,18,19,20,21,22,23,24,25,28,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],inclusive:!0}}};function H(){this.yy={}}return z.lexer=q,H.prototype=z,z.Parser=H,new H}());a.parser=a;const o=a,s=(0,i.C)();const c=(0,i.c)();function u(t){return(0,i.d)(t.trim(),c)}const l=new class{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var t,e,n,r,a,o,s,c,u,l,h,f,d,g,p,b,w,m;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:(null==(t=i.D.quadrantChart)?void 0:t.chartWidth)||500,chartWidth:(null==(e=i.D.quadrantChart)?void 0:e.chartHeight)||500,titlePadding:(null==(n=i.D.quadrantChart)?void 0:n.titlePadding)||10,titleFontSize:(null==(r=i.D.quadrantChart)?void 0:r.titleFontSize)||20,quadrantPadding:(null==(a=i.D.quadrantChart)?void 0:a.quadrantPadding)||5,xAxisLabelPadding:(null==(o=i.D.quadrantChart)?void 0:o.xAxisLabelPadding)||5,yAxisLabelPadding:(null==(s=i.D.quadrantChart)?void 0:s.yAxisLabelPadding)||5,xAxisLabelFontSize:(null==(c=i.D.quadrantChart)?void 0:c.xAxisLabelFontSize)||16,yAxisLabelFontSize:(null==(u=i.D.quadrantChart)?void 0:u.yAxisLabelFontSize)||16,quadrantLabelFontSize:(null==(l=i.D.quadrantChart)?void 0:l.quadrantLabelFontSize)||16,quadrantTextTopPadding:(null==(h=i.D.quadrantChart)?void 0:h.quadrantTextTopPadding)||5,pointTextPadding:(null==(f=i.D.quadrantChart)?void 0:f.pointTextPadding)||5,pointLabelFontSize:(null==(d=i.D.quadrantChart)?void 0:d.pointLabelFontSize)||12,pointRadius:(null==(g=i.D.quadrantChart)?void 0:g.pointRadius)||5,xAxisPosition:(null==(p=i.D.quadrantChart)?void 0:p.xAxisPosition)||"top",yAxisPosition:(null==(b=i.D.quadrantChart)?void 0:b.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:(null==(w=i.D.quadrantChart)?void 0:w.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:(null==(m=i.D.quadrantChart)?void 0:m.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:s.quadrant1Fill,quadrant2Fill:s.quadrant2Fill,quadrant3Fill:s.quadrant3Fill,quadrant4Fill:s.quadrant4Fill,quadrant1TextFill:s.quadrant1TextFill,quadrant2TextFill:s.quadrant2TextFill,quadrant3TextFill:s.quadrant3TextFill,quadrant4TextFill:s.quadrant4TextFill,quadrantPointFill:s.quadrantPointFill,quadrantPointTextFill:s.quadrantPointTextFill,quadrantXAxisTextFill:s.quadrantXAxisTextFill,quadrantYAxisTextFill:s.quadrantYAxisTextFill,quadrantTitleFill:s.quadrantTitleFill,quadrantInternalBorderStrokeFill:s.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:s.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),i.l.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}setConfig(t){i.l.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){i.l.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,n,i){const r=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,a={top:"top"===t&&e?r:0,bottom:"bottom"===t&&e?r:0},o=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,s={left:"left"===this.config.yAxisPosition&&n?o:0,right:"right"===this.config.yAxisPosition&&n?o:0},c=this.config.titleFontSize+2*this.config.titlePadding,u={top:i?c:0},l=this.config.quadrantPadding+s.left,h=this.config.quadrantPadding+a.top+u.top,f=this.config.chartWidth-2*this.config.quadrantPadding-s.left-s.right,d=this.config.chartHeight-2*this.config.quadrantPadding-a.top-a.bottom-u.top;return{xAxisSpace:a,yAxisSpace:s,titleSpace:u,quadrantSpace:{quadrantLeft:l,quadrantTop:h,quadrantWidth:f,quadrantHalfWidth:f/2,quadrantHeight:d,quadrantHalfHeight:d/2}}}getAxisLabels(t,e,n,i){const{quadrantSpace:r,titleSpace:a}=i,{quadrantHalfHeight:o,quadrantHeight:s,quadrantLeft:c,quadrantHalfWidth:u,quadrantTop:l,quadrantWidth:h}=r,f=0===this.data.points.length,d=[];return this.data.xAxisLeftText&&e&&d.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:c+(f?u/2:0),y:"top"===t?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+l+s+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&d.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:c+u+(f?u/2:0),y:"top"===t?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+l+s+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&d.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+c+h+this.config.quadrantPadding,y:l+s-(f?o/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&d.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+c+h+this.config.quadrantPadding,y:l+o-(f?o/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),d}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:r,quadrantTop:a}=e,o=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+r,y:a,width:r,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:a,width:r,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:a+n,width:r,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+r,y:a+n,width:r,height:n,fill:this.themeConfig.quadrant4Fill}];for(const t of o)t.text.x=t.x+t.width/2,0===this.data.points.length?(t.text.y=t.y+t.height/2,t.text.horizontalPos="middle"):(t.text.y=t.y+this.config.quadrantTextTopPadding,t.text.horizontalPos="top");return o}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:o}=e,s=(0,r.BYU)().domain([0,1]).range([i,o+i]),c=(0,r.BYU)().domain([0,1]).range([n+a,a]);return this.data.points.map((t=>({x:s(t.x),y:c(t.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:s(t.x),y:c(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}})))}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=t,{quadrantHalfHeight:i,quadrantHeight:r,quadrantLeft:a,quadrantHalfWidth:o,quadrantTop:s,quadrantWidth:c}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:s,x2:a+c+e,y2:s},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a+c,y1:s+e,x2:a+c,y2:s+r-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:s+r,x2:a+c+e,y2:s+r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a,y1:s+e,x2:a,y2:s+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+o,y1:s+e,x2:a+o,y2:s+r-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+e,y1:s+i,x2:a+c-e,y2:s+i}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,r=this.calculateSpace(i,t,e,n);return{points:this.getQuadrantPoints(r),quadrants:this.getQuadrants(r),axisLabels:this.getAxisLabels(i,t,e,r),borderLines:this.getBorders(r),title:this.getTitle(n)}}};const h={parser:o,db:{setWidth:function(t){l.setConfig({chartWidth:t})},setHeight:function(t){l.setConfig({chartHeight:t})},setQuadrant1Text:function(t){l.setData({quadrant1Text:u(t.text)})},setQuadrant2Text:function(t){l.setData({quadrant2Text:u(t.text)})},setQuadrant3Text:function(t){l.setData({quadrant3Text:u(t.text)})},setQuadrant4Text:function(t){l.setData({quadrant4Text:u(t.text)})},setXAxisLeftText:function(t){l.setData({xAxisLeftText:u(t.text)})},setXAxisRightText:function(t){l.setData({xAxisRightText:u(t.text)})},setYAxisTopText:function(t){l.setData({yAxisTopText:u(t.text)})},setYAxisBottomText:function(t){l.setData({yAxisBottomText:u(t.text)})},addPoint:function(t,e,n){l.addPoints([{x:e,y:n,text:u(t.text)}])},getQuadrantData:function(){const t=(0,i.c)(),{themeVariables:e,quadrantChart:n}=t;return n&&l.setConfig(n),l.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),l.setData({titleText:(0,i.t)()}),l.build()},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},clear:function(){l.clear(),(0,i.v)()},setAccTitle:i.s,getAccTitle:i.g,setDiagramTitle:i.r,getDiagramTitle:i.t,getAccDescription:i.a,setAccDescription:i.b},renderer:{draw:(t,e,n,a)=>{var o,s,c;function u(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}const f=(0,i.c)();i.l.debug("Rendering quadrant chart\n"+t);const d=f.securityLevel;let g;"sandbox"===d&&(g=(0,r.Ys)("#i"+e));const p=("sandbox"===d?(0,r.Ys)(g.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select(`[id="${e}"]`),b=p.append("g").attr("class","main"),w=(null==(o=f.quadrantChart)?void 0:o.chartWidth)||500,m=(null==(s=f.quadrantChart)?void 0:s.chartHeight)||500;(0,i.i)(p,m,w,(null==(c=f.quadrantChart)?void 0:c.useMaxWidth)||!0),p.attr("viewBox","0 0 "+w+" "+m),a.db.setHeight(m),a.db.setWidth(w);const y=a.db.getQuadrantData(),v=b.append("g").attr("class","quadrants"),x=b.append("g").attr("class","border"),k=b.append("g").attr("class","data-points"),_=b.append("g").attr("class","labels"),A=b.append("g").attr("class","title");y.title&&A.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",u(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",(t=>t.x1)).attr("y1",(t=>t.y1)).attr("x2",(t=>t.x2)).attr("y2",(t=>t.y2)).style("stroke",(t=>t.strokeFill)).style("stroke-width",(t=>t.strokeWidth));const E=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");E.append("rect").attr("x",(t=>t.x)).attr("y",(t=>t.y)).attr("width",(t=>t.width)).attr("height",(t=>t.height)).attr("fill",(t=>t.fill)),E.append("text").attr("x",0).attr("y",0).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>u(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text))).text((t=>t.text.text));_.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text((t=>t.text)).attr("fill",(t=>t.fill)).attr("font-size",(t=>t.fontSize)).attr("dominant-baseline",(t=>u(t.horizontalPos))).attr("text-anchor",(t=>l(t.verticalPos))).attr("transform",(t=>h(t)));const T=k.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");T.append("circle").attr("cx",(t=>t.x)).attr("cy",(t=>t.y)).attr("r",(t=>t.radius)).attr("fill",(t=>t.fill)),T.append("text").attr("x",0).attr("y",0).text((t=>t.text.text)).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>u(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text)))}},styles:()=>""}},927:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return E}});var i=n(8540),r=n(1504),a=n(1768),o=n(8066),s=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,3],n=[1,5],i=[1,6],r=[1,7],a=[1,8],o=[5,6,8,14,16,18,19,40,41,42,43,44,45,53,71,72],s=[1,22],c=[2,13],u=[1,26],l=[1,27],h=[1,28],f=[1,29],d=[1,30],g=[1,31],p=[1,24],b=[1,32],w=[1,33],m=[1,36],y=[71,72],v=[5,8,14,16,18,19,40,41,42,43,44,45,53,60,62,71,72],x=[1,56],k=[1,57],_=[1,58],A=[1,59],E=[1,60],T=[1,61],C=[1,62],S=[62,63],I=[1,74],M=[1,70],D=[1,71],O=[1,72],L=[1,73],N=[1,75],P=[1,79],B=[1,80],F=[1,77],R=[1,78],j=[5,8,14,16,18,19,40,41,42,43,44,45,53,71,72],$={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,requirementDef:23,elementDef:24,relationshipDef:25,requirementType:26,requirementName:27,STRUCT_START:28,requirementBody:29,ID:30,COLONSEP:31,id:32,TEXT:33,text:34,RISK:35,riskLevel:36,VERIFYMTHD:37,verifyType:38,STRUCT_STOP:39,REQUIREMENT:40,FUNCTIONAL_REQUIREMENT:41,INTERFACE_REQUIREMENT:42,PERFORMANCE_REQUIREMENT:43,PHYSICAL_REQUIREMENT:44,DESIGN_CONSTRAINT:45,LOW_RISK:46,MED_RISK:47,HIGH_RISK:48,VERIFY_ANALYSIS:49,VERIFY_DEMONSTRATION:50,VERIFY_INSPECTION:51,VERIFY_TEST:52,ELEMENT:53,elementName:54,elementBody:55,TYPE:56,type:57,DOCREF:58,ref:59,END_ARROW_L:60,relationship:61,LINE:62,END_ARROW_R:63,CONTAINS:64,COPIES:65,DERIVES:66,SATISFIES:67,VERIFIES:68,REFINES:69,TRACES:70,unqString:71,qString:72,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",12:":",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",28:"STRUCT_START",30:"ID",31:"COLONSEP",33:"TEXT",35:"RISK",37:"VERIFYMTHD",39:"STRUCT_STOP",40:"REQUIREMENT",41:"FUNCTIONAL_REQUIREMENT",42:"INTERFACE_REQUIREMENT",43:"PERFORMANCE_REQUIREMENT",44:"PHYSICAL_REQUIREMENT",45:"DESIGN_CONSTRAINT",46:"LOW_RISK",47:"MED_RISK",48:"HIGH_RISK",49:"VERIFY_ANALYSIS",50:"VERIFY_DEMONSTRATION",51:"VERIFY_INSPECTION",52:"VERIFY_TEST",53:"ELEMENT",56:"TYPE",58:"DOCREF",60:"END_ARROW_L",62:"LINE",63:"END_ARROW_R",64:"CONTAINS",65:"COPIES",66:"DERIVES",67:"SATISFIES",68:"VERIFIES",69:"REFINES",70:"TRACES",71:"unqString",72:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,3],[4,5],[4,2],[4,2],[4,1],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[23,5],[29,5],[29,5],[29,5],[29,5],[29,2],[29,1],[26,1],[26,1],[26,1],[26,1],[26,1],[26,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[24,5],[55,5],[55,5],[55,2],[55,1],[25,5],[25,5],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[61,1],[27,1],[27,1],[32,1],[32,1],[34,1],[34,1],[54,1],[54,1],[57,1],[57,1],[59,1],[59,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 6:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 7:case 8:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 9:i.parseDirective("%%{","open_directive");break;case 10:i.parseDirective(a[s],"type_directive");break;case 11:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 12:i.parseDirective("}%%","close_directive","pie");break;case 13:this.$=[];break;case 19:i.addRequirement(a[s-3],a[s-4]);break;case 20:i.setNewReqId(a[s-2]);break;case 21:i.setNewReqText(a[s-2]);break;case 22:i.setNewReqRisk(a[s-2]);break;case 23:i.setNewReqVerifyMethod(a[s-2]);break;case 26:this.$=i.RequirementType.REQUIREMENT;break;case 27:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 28:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 29:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 30:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 32:this.$=i.RiskLevel.LOW_RISK;break;case 33:this.$=i.RiskLevel.MED_RISK;break;case 34:this.$=i.RiskLevel.HIGH_RISK;break;case 35:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 36:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 37:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 38:this.$=i.VerifyType.VERIFY_TEST;break;case 39:i.addElement(a[s-3]);break;case 40:i.setNewElementType(a[s-2]);break;case 41:i.setNewElementDocRef(a[s-2]);break;case 44:i.addRelationship(a[s-2],a[s],a[s-4]);break;case 45:i.addRelationship(a[s-2],a[s-4],a[s]);break;case 46:this.$=i.Relationships.CONTAINS;break;case 47:this.$=i.Relationships.COPIES;break;case 48:this.$=i.Relationships.DERIVES;break;case 49:this.$=i.Relationships.SATISFIES;break;case 50:this.$=i.Relationships.VERIFIES;break;case 51:this.$=i.Relationships.REFINES;break;case 52:this.$=i.Relationships.TRACES}},table:[{3:1,4:2,6:e,9:4,14:n,16:i,18:r,19:a},{1:[3]},{3:10,4:2,5:[1,9],6:e,9:4,14:n,16:i,18:r,19:a},{5:[1,11]},{10:12,20:[1,13]},{15:[1,14]},{17:[1,15]},t(o,[2,8]),{20:[2,9]},{3:16,4:2,6:e,9:4,14:n,16:i,18:r,19:a},{1:[2,2]},{4:21,5:s,7:17,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{11:34,12:[1,35],22:m},t([12,22],[2,10]),t(o,[2,6]),t(o,[2,7]),{1:[2,1]},{8:[1,37]},{4:21,5:s,7:38,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:39,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:40,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:41,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{4:21,5:s,7:42,8:c,9:4,14:n,16:i,18:r,19:a,23:18,24:19,25:20,26:23,32:25,40:u,41:l,42:h,43:f,44:d,45:g,53:p,71:b,72:w},{27:43,71:[1,44],72:[1,45]},{54:46,71:[1,47],72:[1,48]},{60:[1,49],62:[1,50]},t(y,[2,26]),t(y,[2,27]),t(y,[2,28]),t(y,[2,29]),t(y,[2,30]),t(y,[2,31]),t(v,[2,55]),t(v,[2,56]),t(o,[2,4]),{13:51,21:[1,52]},t(o,[2,12]),{1:[2,3]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{8:[2,17]},{8:[2,18]},{28:[1,53]},{28:[2,53]},{28:[2,54]},{28:[1,54]},{28:[2,59]},{28:[2,60]},{61:55,64:x,65:k,66:_,67:A,68:E,69:T,70:C},{61:63,64:x,65:k,66:_,67:A,68:E,69:T,70:C},{11:64,22:m},{22:[2,11]},{5:[1,65]},{5:[1,66]},{62:[1,67]},t(S,[2,46]),t(S,[2,47]),t(S,[2,48]),t(S,[2,49]),t(S,[2,50]),t(S,[2,51]),t(S,[2,52]),{63:[1,68]},t(o,[2,5]),{5:I,29:69,30:M,33:D,35:O,37:L,39:N},{5:P,39:B,55:76,56:F,58:R},{32:81,71:b,72:w},{32:82,71:b,72:w},t(j,[2,19]),{31:[1,83]},{31:[1,84]},{31:[1,85]},{31:[1,86]},{5:I,29:87,30:M,33:D,35:O,37:L,39:N},t(j,[2,25]),t(j,[2,39]),{31:[1,88]},{31:[1,89]},{5:P,39:B,55:90,56:F,58:R},t(j,[2,43]),t(j,[2,44]),t(j,[2,45]),{32:91,71:b,72:w},{34:92,71:[1,93],72:[1,94]},{36:95,46:[1,96],47:[1,97],48:[1,98]},{38:99,49:[1,100],50:[1,101],51:[1,102],52:[1,103]},t(j,[2,24]),{57:104,71:[1,105],72:[1,106]},{59:107,71:[1,108],72:[1,109]},t(j,[2,42]),{5:[1,110]},{5:[1,111]},{5:[2,57]},{5:[2,58]},{5:[1,112]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[1,113]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[2,38]},{5:[1,114]},{5:[2,61]},{5:[2,62]},{5:[1,115]},{5:[2,63]},{5:[2,64]},{5:I,29:116,30:M,33:D,35:O,37:L,39:N},{5:I,29:117,30:M,33:D,35:O,37:L,39:N},{5:I,29:118,30:M,33:D,35:O,37:L,39:N},{5:I,29:119,30:M,33:D,35:O,37:L,39:N},{5:P,39:B,55:120,56:F,58:R},{5:P,39:B,55:121,56:F,58:R},t(j,[2,20]),t(j,[2,21]),t(j,[2,22]),t(j,[2,23]),t(j,[2,40]),t(j,[2,41])],defaultActions:{8:[2,9],10:[2,2],16:[2,1],37:[2,3],38:[2,14],39:[2,15],40:[2,16],41:[2,17],42:[2,18],44:[2,53],45:[2,54],47:[2,59],48:[2,60],52:[2,11],93:[2,57],94:[2,58],96:[2,32],97:[2,33],98:[2,34],100:[2,35],101:[2,36],102:[2,37],103:[2,38],105:[2,61],106:[2,62],108:[2,63],109:[2,64]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},z={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),19;case 1:return this.begin("type_directive"),20;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),22;case 4:return 21;case 5:return"title";case 6:return this.begin("acc_title"),14;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),16;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 53:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 5;case 14:case 15:case 16:break;case 17:return 8;case 18:return 6;case 19:return 28;case 20:return 39;case 21:return 31;case 22:return 30;case 23:return 33;case 24:return 35;case 25:return 37;case 26:return 40;case 27:return 41;case 28:return 42;case 29:return 43;case 30:return 44;case 31:return 45;case 32:return 46;case 33:return 47;case 34:return 48;case 35:return 49;case 36:return 50;case 37:return 51;case 38:return 52;case 39:return 53;case 40:return 64;case 41:return 65;case 42:return 66;case 43:return 67;case 44:return 68;case 45:return 69;case 46:return 70;case 47:return 56;case 48:return 58;case 49:return 60;case 50:return 63;case 51:return 62;case 52:this.begin("string");break;case 54:return"qString";case 55:return e.yytext=e.yytext.trim(),71}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[53,54],inclusive:!1},INITIAL:{rules:[0,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55],inclusive:!0}}};function q(){this.yy={}}return $.lexer=z,q.prototype=$,$.Parser=q,new q}());s.parser=s;const c=s;let u=[],l={},h={},f={},d={};const g={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().req,addRequirement:(t,e)=>(void 0===h[t]&&(h[t]={name:t,type:e,id:l.id,text:l.text,risk:l.risk,verifyMethod:l.verifyMethod}),l={},h[t]),getRequirements:()=>h,setNewReqId:t=>{void 0!==l&&(l.id=t)},setNewReqText:t=>{void 0!==l&&(l.text=t)},setNewReqRisk:t=>{void 0!==l&&(l.risk=t)},setNewReqVerifyMethod:t=>{void 0!==l&&(l.verifyMethod=t)},setAccTitle:i.s,getAccTitle:i.g,setAccDescription:i.b,getAccDescription:i.a,addElement:t=>(void 0===d[t]&&(d[t]={name:t,type:f.type,docRef:f.docRef},i.l.info("Added new requirement: ",t)),f={},d[t]),getElements:()=>d,setNewElementType:t=>{void 0!==f&&(f.type=t)},setNewElementDocRef:t=>{void 0!==f&&(f.docRef=t)},addRelationship:(t,e,n)=>{u.push({type:t,src:e,dst:n})},getRelationships:()=>u,clear:()=>{u=[],l={},h={},f={},d={},(0,i.v)()}},p={CONTAINS:"contains",ARROW:"arrow"},b=p,w=(t,e)=>{let n=t.append("defs").append("marker").attr("id",p.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");n.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),n.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),n.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",p.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0\n L${e.line_height},${e.line_height/2}\n M${e.line_height},${e.line_height/2}\n L0,${e.line_height}`).attr("stroke-width",1)};let m={},y=0;const v=(t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",m.rect_min_width+"px").attr("height",m.rect_min_height+"px"),x=(t,e,n)=>{let i=m.rect_min_width/2,r=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",i).attr("y",m.rect_padding).attr("dominant-baseline","hanging"),a=0;n.forEach((t=>{0==a?r.append("tspan").attr("text-anchor","middle").attr("x",m.rect_min_width/2).attr("dy",0).text(t):r.append("tspan").attr("text-anchor","middle").attr("x",m.rect_min_width/2).attr("dy",.75*m.line_height).text(t),a++}));let o=1.5*m.rect_padding+a*m.line_height*.75;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",m.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:r,y:o}},k=(t,e,n,i)=>{let r=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",m.rect_padding).attr("y",i).attr("dominant-baseline","hanging"),a=0;let o=[];return n.forEach((t=>{let e=t.length;for(;e>30&&a<3;){let n=t.substring(0,30);e=(t=t.substring(30,t.length)).length,o[o.length]=n,a++}if(3==a){let t=o[o.length-1];o[o.length-1]=t.substring(0,t.length-4)+"..."}else o[o.length]=t;a=0})),o.forEach((t=>{r.append("tspan").attr("x",m.rect_padding).attr("dy",m.line_height).text(t)})),r},_=function(t,e,n,a,o){const s=n.edge(A(e.src),A(e.dst)),c=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})),u=t.insert("path","#"+a).attr("class","er relationshipLine").attr("d",c(s.points)).attr("fill","none");e.type==o.db.Relationships.CONTAINS?u.attr("marker-start","url("+i.e.getUrl(m.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(u.attr("stroke-dasharray","10,7"),u.attr("marker-end","url("+i.e.getUrl(m.arrowMarkerAbsolute)+"#"+b.ARROW+"_line_ending)")),((t,e,n,i)=>{const r=e.node().getTotalLength(),a=e.node().getPointAtLength(.5*r),o="rel"+y;y++;const s=t.append("text").attr("class","req relationshipLabel").attr("id",o).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(i).node().getBBox();t.insert("rect","#"+o).attr("class","req reqLabelBox").attr("x",a.x-s.width/2).attr("y",a.y-s.height/2).attr("width",s.width).attr("height",s.height).attr("fill","white").attr("fill-opacity","85%")})(t,u,0,`<<${e.type}>>`)},A=t=>t.replace(/\s/g,"").replace(/\./g,"_"),E={parser:c,db:g,renderer:{draw:(t,e,n,s)=>{m=(0,i.c)().requirement,s.db.clear(),s.parser.parse(t);const c=m.securityLevel;let u;"sandbox"===c&&(u=(0,r.Ys)("#i"+e));const l=("sandbox"===c?(0,r.Ys)(u.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select(`[id='${e}']`);w(l,m);const h=new o.k({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:m.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));let f=s.db.getRequirements(),d=s.db.getElements(),g=s.db.getRelationships();var p,b,y;p=f,b=h,y=l,Object.keys(p).forEach((t=>{let e=p[t];t=A(t),i.l.info("Added new requirement: ",t);const n=y.append("g").attr("id",t),r=v(n,"req-"+t);let a=x(n,t+"_title",[`<<${e.type}>>`,`${e.name}`]);k(n,t+"_body",[`Id: ${e.id}`,`Text: ${e.text}`,`Risk: ${e.risk}`,`Verification: ${e.verifyMethod}`],a.y);const o=r.node().getBBox();b.setNode(t,{width:o.width,height:o.height,shape:"rect",id:t})})),((t,e,n)=>{Object.keys(t).forEach((i=>{let r=t[i];const a=A(i),o=n.append("g").attr("id",a),s="element-"+a,c=v(o,s);let u=x(o,s+"_title",["<>",`${i}`]);k(o,s+"_body",[`Type: ${r.type||"Not Specified"}`,`Doc Ref: ${r.docRef||"None"}`],u.y);const l=c.node().getBBox();e.setNode(a,{width:l.width,height:l.height,shape:"rect",id:a})}))})(d,h,l),((t,e)=>{t.forEach((function(t){let n=A(t.src),i=A(t.dst);e.setEdge(n,i,{relationship:t})}))})(g,h),(0,a.bK)(h),function(t,e){e.nodes().forEach((function(n){void 0!==n&&void 0!==e.node(n)&&(t.select("#"+n),t.select("#"+n).attr("transform","translate("+(e.node(n).x-e.node(n).width/2)+","+(e.node(n).y-e.node(n).height/2)+" )"))}))}(l,h),g.forEach((function(t){_(l,t,h,e,s)}));const E=m.rect_padding,T=l.node().getBBox(),C=T.width+2*E,S=T.height+2*E;(0,i.i)(l,S,C,m.useMaxWidth),l.attr("viewBox",`${T.x-E} ${T.y-E} ${C} ${S}`)}},styles:t=>`\n\n marker {\n fill: ${t.relationColor};\n stroke: ${t.relationColor};\n }\n\n marker.cross {\n stroke: ${t.lineColor};\n }\n\n svg {\n font-family: ${t.fontFamily};\n font-size: ${t.fontSize};\n }\n\n .reqBox {\n fill: ${t.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${t.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${t.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${t.requirementBorderColor};\n stroke-width: ${t.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${t.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${t.relationLabelColor};\n }\n\n`}},5123:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return nt}});var i=n(8540),r=n(1504),a=n(2699),o=n(2510),s=(n(7530),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,3],i=[1,5],r=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,19],u=[1,21],l=[1,22],h=[1,23],f=[1,29],d=[1,30],g=[1,31],p=[1,32],b=[1,33],w=[1,34],m=[1,35],y=[1,36],v=[1,37],x=[1,38],k=[1,39],_=[1,40],A=[1,41],E=[1,43],T=[1,44],C=[1,46],S=[1,47],I=[1,48],M=[1,49],D=[1,50],O=[1,51],L=[1,54],N=[1,4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,53,54,55,57,58,63,64,65,66,74,84],P=[4,5,21,55,57],B=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,55,57,58,63,64,65,66,74,84],F=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,54,55,57,58,63,64,65,66,74,84],R=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,53,55,57,58,63,64,65,66,74,84],j=[4,5,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,55,57,58,63,64,65,66,74,84],$=[72,73,74],z=[1,128],q=[1,4,5,7,19,21,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,52,53,54,55,57,58,63,64,65,66,74,84],H={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,box_section:11,box_line:12,participant_statement:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,box:19,restOfLine:20,end:21,signal:22,autonumber:23,NUM:24,off:25,activate:26,actor:27,deactivate:28,note_statement:29,links_statement:30,link_statement:31,properties_statement:32,details_statement:33,title:34,legacy_title:35,acc_title:36,acc_title_value:37,acc_descr:38,acc_descr_value:39,acc_descr_multiline_value:40,loop:41,rect:42,opt:43,alt:44,else_sections:45,par:46,par_sections:47,par_over:48,critical:49,option_sections:50,break:51,option:52,and:53,else:54,participant:55,AS:56,participant_actor:57,note:58,placement:59,text2:60,over:61,actor_pair:62,links:63,link:64,properties:65,details:66,spaceList:67,",":68,left_of:69,right_of:70,signaltype:71,"+":72,"-":73,ACTOR:74,SOLID_OPEN_ARROW:75,DOTTED_OPEN_ARROW:76,SOLID_ARROW:77,DOTTED_ARROW:78,SOLID_CROSS:79,DOTTED_CROSS:80,SOLID_POINT:81,DOTTED_POINT:82,TXT:83,open_directive:84,type_directive:85,arg_directive:86,close_directive:87,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",17:":",19:"box",20:"restOfLine",21:"end",23:"autonumber",24:"NUM",25:"off",26:"activate",28:"deactivate",34:"title",35:"legacy_title",36:"acc_title",37:"acc_title_value",38:"acc_descr",39:"acc_descr_value",40:"acc_descr_multiline_value",41:"loop",42:"rect",43:"opt",44:"alt",46:"par",48:"par_over",49:"critical",51:"break",52:"option",53:"and",54:"else",55:"participant",56:"AS",57:"participant_actor",58:"note",61:"over",63:"links",64:"link",65:"properties",66:"details",68:",",69:"left_of",70:"right_of",72:"+",73:"-",74:"ACTOR",75:"SOLID_OPEN_ARROW",76:"DOTTED_OPEN_ARROW",77:"SOLID_ARROW",78:"DOTTED_ARROW",79:"SOLID_CROSS",80:"DOTTED_CROSS",81:"SOLID_POINT",82:"DOTTED_POINT",83:"TXT",84:"open_directive",85:"type_directive",86:"arg_directive",87:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[11,0],[11,2],[12,2],[12,1],[12,1],[6,4],[6,6],[10,1],[10,4],[10,2],[10,4],[10,3],[10,3],[10,2],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,1],[10,1],[10,2],[10,2],[10,1],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[50,1],[50,4],[47,1],[47,4],[45,1],[45,4],[13,5],[13,3],[13,5],[13,3],[29,4],[29,4],[30,3],[31,3],[32,3],[33,3],[67,2],[67,1],[62,3],[62,1],[59,1],[59,1],[22,5],[22,5],[22,4],[27,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[71,1],[60,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:return i.apply(a[s]),a[s];case 5:case 10:case 9:case 14:this.$=[];break;case 6:case 11:a[s-1].push(a[s]),this.$=a[s-1];break;case 7:case 8:case 12:case 13:case 64:this.$=a[s];break;case 18:a[s-1].unshift({type:"boxStart",boxData:i.parseBoxData(a[s-2])}),a[s-1].push({type:"boxEnd",boxText:a[s-2]}),this.$=a[s-1];break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-2]),sequenceIndexStep:Number(a[s-1]),sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceIndex:Number(a[s-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:i.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:i.LINETYPE.AUTONUMBER};break;case 24:this.$={type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 25:this.$={type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 31:i.setDiagramTitle(a[s].substring(6)),this.$=a[s].substring(6);break;case 32:i.setDiagramTitle(a[s].substring(7)),this.$=a[s].substring(7);break;case 33:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 34:case 35:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 36:a[s-1].unshift({type:"loopStart",loopText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:i.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 37:a[s-1].unshift({type:"rectStart",color:i.parseMessage(a[s-2]),signalType:i.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:i.parseMessage(a[s-2]),signalType:i.LINETYPE.RECT_END}),this.$=a[s-1];break;case 38:a[s-1].unshift({type:"optStart",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.OPT_END}),this.$=a[s-1];break;case 39:a[s-1].unshift({type:"altStart",altText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:i.LINETYPE.ALT_END}),this.$=a[s-1];break;case 40:a[s-1].unshift({type:"parStart",parText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=a[s-1];break;case 41:a[s-1].unshift({type:"parStart",parText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.PAR_OVER_START}),a[s-1].push({type:"parEnd",signalType:i.LINETYPE.PAR_END}),this.$=a[s-1];break;case 42:a[s-1].unshift({type:"criticalStart",criticalText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.CRITICAL_START}),a[s-1].push({type:"criticalEnd",signalType:i.LINETYPE.CRITICAL_END}),this.$=a[s-1];break;case 43:a[s-1].unshift({type:"breakStart",breakText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.BREAK_START}),a[s-1].push({type:"breakEnd",optText:i.parseMessage(a[s-2]),signalType:i.LINETYPE.BREAK_END}),this.$=a[s-1];break;case 46:this.$=a[s-3].concat([{type:"option",optionText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.CRITICAL_OPTION},a[s]]);break;case 48:this.$=a[s-3].concat([{type:"and",parText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.PAR_AND},a[s]]);break;case 50:this.$=a[s-3].concat([{type:"else",altText:i.parseMessage(a[s-1]),signalType:i.LINETYPE.ALT_ELSE},a[s]]);break;case 51:a[s-3].type="addParticipant",a[s-3].description=i.parseMessage(a[s-1]),this.$=a[s-3];break;case 52:a[s-1].type="addParticipant",this.$=a[s-1];break;case 53:a[s-3].type="addActor",a[s-3].description=i.parseMessage(a[s-1]),this.$=a[s-3];break;case 54:a[s-1].type="addActor",this.$=a[s-1];break;case 55:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 56:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:i.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 57:this.$=[a[s-1],{type:"addLinks",actor:a[s-1].actor,text:a[s]}];break;case 58:this.$=[a[s-1],{type:"addALink",actor:a[s-1].actor,text:a[s]}];break;case 59:this.$=[a[s-1],{type:"addProperties",actor:a[s-1].actor,text:a[s]}];break;case 60:this.$=[a[s-1],{type:"addDetails",actor:a[s-1].actor,text:a[s]}];break;case 63:this.$=[a[s-2],a[s]];break;case 65:this.$=i.PLACEMENT.LEFTOF;break;case 66:this.$=i.PLACEMENT.RIGHTOF;break;case 67:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:i.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 68:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:i.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 69:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 70:this.$={type:"addParticipant",actor:a[s]};break;case 71:this.$=i.LINETYPE.SOLID_OPEN;break;case 72:this.$=i.LINETYPE.DOTTED_OPEN;break;case 73:this.$=i.LINETYPE.SOLID;break;case 74:this.$=i.LINETYPE.DOTTED;break;case 75:this.$=i.LINETYPE.SOLID_CROSS;break;case 76:this.$=i.LINETYPE.DOTTED_CROSS;break;case 77:this.$=i.LINETYPE.SOLID_POINT;break;case 78:this.$=i.LINETYPE.DOTTED_POINT;break;case 79:this.$=i.parseMessage(a[s].trim().substring(1));break;case 80:i.parseDirective("%%{","open_directive");break;case 81:i.parseDirective(a[s],"type_directive");break;case 82:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 83:i.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:e,5:n,6:4,7:i,14:6,84:r},{1:[3]},{3:8,4:e,5:n,6:4,7:i,14:6,84:r},{3:9,4:e,5:n,6:4,7:i,14:6,84:r},{3:10,4:e,5:n,6:4,7:i,14:6,84:r},t([1,4,5,19,23,26,28,34,35,36,38,40,41,42,43,44,46,48,49,51,55,57,58,63,64,65,66,74,84],a,{8:11}),{15:12,85:[1,13]},{85:[2,80]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{16:52,17:[1,53],87:L},t([17,87],[2,81]),t(N,[2,6]),{6:42,10:55,13:18,14:6,19:c,22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},t(N,[2,8]),t(N,[2,9]),t(N,[2,17]),{20:[1,56]},{5:[1,57]},{5:[1,60],24:[1,58],25:[1,59]},{27:61,74:O},{27:62,74:O},{5:[1,63]},{5:[1,64]},{5:[1,65]},{5:[1,66]},{5:[1,67]},t(N,[2,31]),t(N,[2,32]),{37:[1,68]},{39:[1,69]},t(N,[2,35]),{20:[1,70]},{20:[1,71]},{20:[1,72]},{20:[1,73]},{20:[1,74]},{20:[1,75]},{20:[1,76]},{20:[1,77]},t(N,[2,44]),{27:78,74:O},{27:79,74:O},{71:80,75:[1,81],76:[1,82],77:[1,83],78:[1,84],79:[1,85],80:[1,86],81:[1,87],82:[1,88]},{59:89,61:[1,90],69:[1,91],70:[1,92]},{27:93,74:O},{27:94,74:O},{27:95,74:O},{27:96,74:O},t([5,56,68,75,76,77,78,79,80,81,82,83],[2,70]),{5:[1,97]},{18:98,86:[1,99]},{5:[2,83]},t(N,[2,7]),t(P,[2,10],{11:100}),t(N,[2,19]),{5:[1,102],24:[1,101]},{5:[1,103]},t(N,[2,23]),{5:[1,104]},{5:[1,105]},t(N,[2,26]),t(N,[2,27]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,33]),t(N,[2,34]),t(B,a,{8:106}),t(B,a,{8:107}),t(B,a,{8:108}),t(F,a,{45:109,8:110}),t(R,a,{47:111,8:112}),t(R,a,{8:112,47:113}),t(j,a,{50:114,8:115}),t(B,a,{8:116}),{5:[1,118],56:[1,117]},{5:[1,120],56:[1,119]},{27:123,72:[1,121],73:[1,122],74:O},t($,[2,71]),t($,[2,72]),t($,[2,73]),t($,[2,74]),t($,[2,75]),t($,[2,76]),t($,[2,77]),t($,[2,78]),{27:124,74:O},{27:126,62:125,74:O},{74:[2,65]},{74:[2,66]},{60:127,83:z},{60:129,83:z},{60:130,83:z},{60:131,83:z},t(q,[2,15]),{16:132,87:L},{87:[2,82]},{4:[1,135],5:[1,137],12:134,13:136,21:[1,133],55:E,57:T},{5:[1,138]},t(N,[2,21]),t(N,[2,22]),t(N,[2,24]),t(N,[2,25]),{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,139],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,140],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,141],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,142]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,49],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,54:[1,143],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,144]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,47],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,53:[1,145],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{21:[1,146]},{21:[1,147]},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[2,45],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,52:[1,148],55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{4:o,5:s,6:42,9:14,10:16,13:18,14:6,19:c,21:[1,149],22:20,23:u,26:l,27:45,28:h,29:24,30:25,31:26,32:27,33:28,34:f,35:d,36:g,38:p,40:b,41:w,42:m,43:y,44:v,46:x,48:k,49:_,51:A,55:E,57:T,58:C,63:S,64:I,65:M,66:D,74:O,84:r},{20:[1,150]},t(N,[2,52]),{20:[1,151]},t(N,[2,54]),{27:152,74:O},{27:153,74:O},{60:154,83:z},{60:155,83:z},{60:156,83:z},{68:[1,157],83:[2,64]},{5:[2,57]},{5:[2,79]},{5:[2,58]},{5:[2,59]},{5:[2,60]},{5:[1,158]},t(N,[2,18]),t(P,[2,11]),{13:159,55:E,57:T},t(P,[2,13]),t(P,[2,14]),t(N,[2,20]),t(N,[2,36]),t(N,[2,37]),t(N,[2,38]),t(N,[2,39]),{20:[1,160]},t(N,[2,40]),{20:[1,161]},t(N,[2,41]),t(N,[2,42]),{20:[1,162]},t(N,[2,43]),{5:[1,163]},{5:[1,164]},{60:165,83:z},{60:166,83:z},{5:[2,69]},{5:[2,55]},{5:[2,56]},{27:167,74:O},t(q,[2,16]),t(P,[2,12]),t(F,a,{8:110,45:168}),t(R,a,{8:112,47:169}),t(j,a,{8:115,50:170}),t(N,[2,51]),t(N,[2,53]),{5:[2,67]},{5:[2,68]},{83:[2,63]},{21:[2,50]},{21:[2,48]},{21:[2,46]}],defaultActions:{7:[2,80],8:[2,1],9:[2,2],10:[2,3],54:[2,83],91:[2,65],92:[2,66],99:[2,82],127:[2,57],128:[2,79],129:[2,58],130:[2,59],131:[2,60],154:[2,69],155:[2,55],156:[2,56],165:[2,67],166:[2,68],167:[2,63],168:[2,50],169:[2,48],170:[2,46]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},U={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),84;case 1:return this.begin("type_directive"),85;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),87;case 4:return 86;case 5:case 54:case 67:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return 24;case 12:return this.begin("LINE"),19;case 13:return this.begin("ID"),55;case 14:return this.begin("ID"),57;case 15:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),74;case 16:return this.popState(),this.popState(),this.begin("LINE"),56;case 17:return this.popState(),this.popState(),5;case 18:return this.begin("LINE"),41;case 19:return this.begin("LINE"),42;case 20:return this.begin("LINE"),43;case 21:return this.begin("LINE"),44;case 22:return this.begin("LINE"),54;case 23:return this.begin("LINE"),46;case 24:return this.begin("LINE"),48;case 25:return this.begin("LINE"),53;case 26:return this.begin("LINE"),49;case 27:return this.begin("LINE"),52;case 28:return this.begin("LINE"),51;case 29:return this.popState(),20;case 30:return 21;case 31:return 69;case 32:return 70;case 33:return 63;case 34:return 64;case 35:return 65;case 36:return 66;case 37:return 61;case 38:return 58;case 39:return this.begin("ID"),26;case 40:return this.begin("ID"),28;case 41:return 34;case 42:return 35;case 43:return this.begin("acc_title"),36;case 44:return this.popState(),"acc_title_value";case 45:return this.begin("acc_descr"),38;case 46:return this.popState(),"acc_descr_value";case 47:this.begin("acc_descr_multiline");break;case 48:this.popState();break;case 49:return"acc_descr_multiline_value";case 50:return 7;case 51:return 23;case 52:return 25;case 53:return 68;case 55:return e.yytext=e.yytext.trim(),74;case 56:return 77;case 57:return 78;case 58:return 75;case 59:return 76;case 60:return 79;case 61:return 80;case 62:return 81;case 63:return 82;case 64:return 83;case 65:return 72;case 66:return 73;case 68:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[48,49],inclusive:!1},acc_descr:{rules:[46],inclusive:!1},acc_title:{rules:[44],inclusive:!1},open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,15],inclusive:!1},ALIAS:{rules:[7,8,16,17],inclusive:!1},LINE:{rules:[7,8,29],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,45,47,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68],inclusive:!0}}};function G(){this.yy={}}return H.lexer=U,G.prototype=H,H.Parser=G,new G}());s.parser=s;const c=s;let u,l,h,f={},d=[],g=[],p=!1;const b=function(t,e,n,i){let r=h;const a=f[t];if(a){if(h&&a.box&&h!==a.box)throw new Error("A same participant should only be defined in one Box: "+a.name+" can't be in '"+a.box.name+"' and in '"+h.name+"' at the same time.");if(r=a.box?a.box:h,a.box=r,a&&e===a.name&&null==n)return}null!=n&&null!=n.text||(n={text:e,wrap:null,type:i}),null!=i&&null!=n.text||(n={text:e,wrap:null,type:i}),f[t]={box:r,name:e,description:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,prevActor:u,links:{},properties:{},actorCnt:null,rectData:null,type:i||"participant"},u&&f[u]&&(f[u].nextActor=t),h&&h.actorKeys.push(t),u=t},w=function(t,e,n={text:void 0,wrap:void 0},i){if(i===v.ACTIVE_END){if((t=>{let e,n=0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return g.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,type:i}),!0},m=function(t){return f[t]},y=()=>void 0!==l?l:(0,i.c)().sequence.wrap,v={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},x=function(t,e,n){n.text,void 0===n.wrap&&y()||n.wrap;const i=[].concat(t,t);g.push({from:i[0],to:i[1],message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,type:v.NOTE,placement:e})},k=function(t,e){const n=m(t);try{let t=(0,i.d)(e.text,(0,i.c)());t=t.replace(/&/g,"&"),t=t.replace(/=/g,"=");_(n,JSON.parse(t))}catch(t){i.l.error("error while parsing actor link text",t)}};function _(t,e){if(null==t.links)t.links=e;else for(let n in e)t.links[n]=e[n]}const A=function(t,e){const n=m(t);try{let t=(0,i.d)(e.text,(0,i.c)());E(n,JSON.parse(t))}catch(t){i.l.error("error while parsing actor properties text",t)}};function E(t,e){if(null==t.properties)t.properties=e;else for(let n in e)t.properties[n]=e[n]}const T=function(t,e){const n=m(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&E(n,e.properties),e.links&&_(n,e.links)}catch(t){i.l.error("error while parsing actor details text",t)}},C=function(t){if(Array.isArray(t))t.forEach((function(t){C(t)}));else switch(t.type){case"sequenceIndex":g.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":b(t.actor,t.actor,t.description,"participant");break;case"addActor":b(t.actor,t.actor,t.description,"actor");break;case"activeStart":case"activeEnd":w(t.actor,void 0,void 0,t.signalType);break;case"addNote":x(t.actor,t.placement,t.text);break;case"addLinks":k(t.actor,t.text);break;case"addALink":!function(t,e){const n=m(t);try{const t={};let s=(0,i.d)(e.text,(0,i.c)());var r=s.indexOf("@");s=s.replace(/&/g,"&"),s=s.replace(/=/g,"=");var a=s.slice(0,r-1).trim(),o=s.slice(r+1).trim();t[a]=o,_(n,t)}catch(t){i.l.error("error while parsing actor link text",t)}}(t.actor,t.text);break;case"addProperties":A(t.actor,t.text);break;case"addDetails":T(t.actor,t.text);break;case"addMessage":w(t.from,t.to,t.msg,t.signalType);break;case"boxStart":e=t.boxData,d.push({name:e.text,wrap:void 0===e.wrap&&y()||!!e.wrap,fill:e.color,actorKeys:[]}),h=d.slice(-1)[0];break;case"boxEnd":h=void 0;break;case"loopStart":w(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":w(void 0,void 0,void 0,t.signalType);break;case"rectStart":w(void 0,void 0,t.color,t.signalType);break;case"optStart":w(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":w(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,i.s)(t.text);break;case"parStart":case"and":w(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":w(void 0,void 0,t.criticalText,t.signalType);break;case"option":w(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":w(void 0,void 0,t.breakText,t.signalType)}var e},S={addActor:b,addMessage:function(t,e,n,i){g.push({from:t,to:e,message:n.text,wrap:void 0===n.wrap&&y()||!!n.wrap,answer:i})},addSignal:w,addLinks:k,addDetails:T,addProperties:A,autoWrap:y,setWrap:function(t){l=t},enableSequenceNumbers:function(){p=!0},disableSequenceNumbers:function(){p=!1},showSequenceNumbers:()=>p,getMessages:function(){return g},getActors:function(){return f},getActor:m,getActorKeys:function(){return Object.keys(f)},getActorProperty:function(t,e){if(void 0!==t&&void 0!==t.properties)return t.properties[e]},getAccTitle:i.g,getBoxes:function(){return d},getDiagramTitle:i.t,setDiagramTitle:i.r,parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().sequence,clear:function(){f={},d=[],g=[],p=!1,(0,i.v)()},parseMessage:function(t){const e=t.trim(),n={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:null!==e.match(/^:?wrap:/)||null===e.match(/^:?nowrap:/)&&void 0};return i.l.debug("parseMessage:",n),n},parseBoxData:function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let n=null!=e&&e[1]?e[1].trim():"transparent",r=null!=e&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",n)||(n="transparent",r=t.trim());else{const e=(new Option).style;e.color=n,e.color!==n&&(n="transparent",r=t.trim())}return{color:n,text:void 0!==r?(0,i.d)(r.replace(/^:?(?:no)?wrap:/,""),(0,i.c)()):void 0,wrap:void 0!==r?null!==r.match(/^:?wrap:/)||null===r.match(/^:?nowrap:/)&&void 0:void 0}},LINETYPE:v,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:x,setAccTitle:i.s,apply:C,setAccDescription:i.b,getAccDescription:i.a,hasAtLeastOneBox:function(){return d.length>0},hasAtLeastOneBoxWithTitle:function(){return d.some((t=>t.name))}},I=t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n`,M=function(t,e){return(0,a.d)(t,e)},D=(t,e)=>{(0,i.E)((()=>{const n=document.querySelectorAll(t);0!==n.length&&(n[0].addEventListener("mouseover",(function(){O("actor"+e+"_popup")})),n[0].addEventListener("mouseout",(function(){L("actor"+e+"_popup")})))}))},O=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="block")},L=function(t){var e=document.getElementById(t);null!=e&&(e.style.display="none")},N=function(t,e){let n=0,r=0;const a=e.text.split(i.e.lineBreakRegex),[o,s]=(0,i.B)(e.fontSize);let c=[],u=0,l=()=>e.y;if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":l=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":l=()=>Math.round(e.y+(n+r+e.textMargin)/2);break;case"bottom":case"end":l=()=>Math.round(e.y+(n+r+2*e.textMargin)-e.textMargin)}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[h,f]of a.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==o&&(u=h*o);const a=t.append("text");a.attr("x",e.x),a.attr("y",l()),void 0!==e.anchor&&a.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&a.style("font-family",e.fontFamily),void 0!==s&&a.style("font-size",s),void 0!==e.fontWeight&&a.style("font-weight",e.fontWeight),void 0!==e.fill&&a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class),void 0!==e.dy?a.attr("dy",e.dy):0!==u&&a.attr("dy",u);const d=f||i.Z;if(e.tspan){const t=a.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(d)}else a.text(d);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(a._groups||a)[0][0].getBBox().height,n=r),c.push(a)}return c},P=function(t,e){const n=t.append("polygon");var i,r,a,o,s;return n.attr("points",(i=e.x,r=e.y,a=e.width,o=e.height,i+","+r+" "+(i+a)+","+r+" "+(i+a)+","+(r+o-(s=7))+" "+(i+a-1.2*s)+","+(r+o)+" "+i+","+(r+o))),n.attr("class","labelBox"),e.y=e.y+e.height/2,N(t,e),n};let B=-1;const F=(t,e)=>{t.selectAll&&t.selectAll(".actor-line").attr("class","200").attr("y2",e-55)},R=function(t,e){(0,a.a)(t,e)},j=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},$=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,a,o,s,c,u){const{actorFontSize:l,actorFontFamily:h,actorFontWeight:f}=u,[d,g]=(0,i.B)(l),p=t.split(i.e.lineBreakRegex);for(let t=0;tn?c.width:n;const d=l.append("rect");if(d.attr("class","actorPopupMenuPanel"+h),d.attr("x",c.x),d.attr("y",c.height),d.attr("fill",c.fill),d.attr("stroke",c.stroke),d.attr("width",f),d.attr("height",c.height),d.attr("rx",c.rx),d.attr("ry",c.ry),null!=a){var g=20;for(let t in a){var p=l.append("a"),b=(0,o.Nm)(a[t]);p.attr("xlink:href",b),p.attr("target","_blank"),z(i)(t,p,c.x+10,c.height+g,f,20,{class:"actor"},i),g+=30}}return d.attr("height",g),{height:c.height+g,width:f}},anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,i,r){const o=(0,a.g)(),s=e.anchored;o.x=e.startx,o.y=e.starty,o.class="activation"+r%3,o.width=e.stopx-e.startx,o.height=n-e.starty,M(s,o)},drawLoop:function(t,e,n,i){const{boxMargin:r,boxTextMargin:o,labelBoxHeight:s,labelBoxWidth:c,messageFontFamily:u,messageFontSize:l,messageFontWeight:h}=i,f=t.append("g"),d=function(t,e,n,i){return f.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",i).attr("class","loopLine")};d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){d(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let g=(0,a.e)();g.text=n,g.x=e.startx,g.y=e.starty,g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=c||50,g.height=s||20,g.textMargin=o,g.class="labelText",P(f,g),g=j(),g.text=e.title,g.x=e.startx+c/2+(e.stopx-e.startx)/2,g.y=e.starty+r+o,g.anchor="middle",g.valign="middle",g.textMargin=o,g.class="loopText",g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.wrap=!0;let p=N(f,g);return void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){if(t.message){g.text=t.message,g.x=e.startx+(e.stopx-e.startx)/2,g.y=e.sections[n].y+r+o,g.class="loopText",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=u,g.fontSize=l,g.fontWeight=h,g.wrap=e.wrap,p=N(f,g);let i=Math.round(p.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[n].height+=i-(r+o)}})),e.height=Math.round(e.stopy-e.starty),f},drawBackgroundRect:R,insertArrowHead:function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},insertArrowFilledHead:function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},insertSequenceNumber:function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},insertArrowCrossHead:function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},insertDatabaseIcon:function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},insertComputerIcon:function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},insertClockIcon:function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},getTextObj:j,getNoteRect:function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},popupMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'block'; }"},popdownMenu:function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'none'; }"},fixLifeLineHeights:F,sanitizeUrl:o.Nm};let H={};const U={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((t=>t.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,X((0,i.c)())},updateVal:function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])},updateBounds:function(t,e,n,i){const r=this;let a=0;function o(o){return function(s){a++;const c=r.sequenceItems.length-a+1;r.updateVal(s,"starty",e-c*H.boxMargin,Math.min),r.updateVal(s,"stopy",i+c*H.boxMargin,Math.max),r.updateVal(U.data,"startx",t-c*H.boxMargin,Math.min),r.updateVal(U.data,"stopx",n+c*H.boxMargin,Math.max),"activation"!==o&&(r.updateVal(s,"startx",t-c*H.boxMargin,Math.min),r.updateVal(s,"stopx",n+c*H.boxMargin,Math.max),r.updateVal(U.data,"starty",e-c*H.boxMargin,Math.min),r.updateVal(U.data,"stopy",i+c*H.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){const a=i.e.getMin(t,n),o=i.e.getMax(t,n),s=i.e.getMin(e,r),c=i.e.getMax(e,r);this.updateVal(U.data,"startx",a,Math.min),this.updateVal(U.data,"starty",s,Math.min),this.updateVal(U.data,"stopx",o,Math.max),this.updateVal(U.data,"stopy",c,Math.max),this.updateBounds(a,s,o,c)},newActivation:function(t,e,n){const i=n[t.from.actor],r=V(t.from.actor).length||0,a=i.x+i.width/2+(r-1)*H.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+H.activationWidth,stopy:void 0,actor:t.from.actor,anchored:q.anchorElement(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:U.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=i.e.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},G=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),Y=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),Z=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});const W=function(t,e,n,r,a,o,s){if(!0===a.hideUnusedParticipants){const t=new Set;o.forEach((e=>{t.add(e.from),t.add(e.to)})),n=n.filter((e=>t.has(e)))}let c,u=0,l=0,h=0;for(const a of n){const n=e[a],o=n.box;c&&c!=o&&(s||U.models.addBox(c),l+=H.boxMargin+c.margin),o&&o!=c&&(s||(o.x=u+l,o.y=r),l+=o.margin),n.width=n.width||H.width,n.height=i.e.getMax(n.height||H.height,H.height),n.margin=n.margin||H.actorMargin,n.x=u+l,n.y=U.getVerticalPos();const f=q.drawActor(t,n,H,s);h=i.e.getMax(h,f),U.insert(n.x,r,n.x+n.width,n.height),u+=n.width+l,n.box&&(n.box.width=u+o.margin-n.box.x),l=n.margin,c=n.box,U.models.addActor(n)}c&&!s&&U.models.addBox(c),U.bumpVerticalPos(h)},K=function(t,e,n,i){let r=0,a=0;for(const o of n){const n=e[o],s=tt(n),c=q.drawPopup(t,n,s,H,H.forceMenus,i);c.height>r&&(r=c.height),c.width+n.x>a&&(a=c.width+n.x)}return{maxHeight:r,maxWidth:a}},X=function(t){(0,i.f)(H,t),t.fontFamily&&(H.actorFontFamily=H.noteFontFamily=H.messageFontFamily=t.fontFamily),t.fontSize&&(H.actorFontSize=H.noteFontSize=H.messageFontSize=t.fontSize),t.fontWeight&&(H.actorFontWeight=H.noteFontWeight=H.messageFontWeight=t.fontWeight)},V=function(t){return U.activations.filter((function(e){return e.actor===t}))},Q=function(t,e){const n=e[t],r=V(t);return[r.reduce((function(t,e){return i.e.getMin(t,e.startx)}),n.x+n.width/2),r.reduce((function(t,e){return i.e.getMax(t,e.stopx)}),n.x+n.width/2)]};function J(t,e,n,r,a){U.bumpVerticalPos(n);let o=r;if(e.id&&e.message&&t[e.id]){const n=t[e.id].width,a=G(H);e.message=i.u.wrapLabel(`[${e.message}]`,n-2*H.wrapPadding,a),e.width=n,e.wrap=!0;const s=i.u.calculateTextDimensions(e.message,a),c=i.e.getMax(s.height,H.labelBoxHeight);o=r+c,i.l.debug(`${c} - ${e.message}`)}a(e),U.bumpVerticalPos(o)}const tt=function(t){let e=0;const n=Z(H);for(const r in t.links){const t=i.u.calculateTextDimensions(r,n).width+2*H.wrapPadding+2*H.boxMargin;et.actor)).lastIndexOf(t.from.actor);delete U.activations.splice(e,1)[0]}}void 0!==t.placement?(c=function(t,e,n){const r=e[t.from].x,a=e[t.to].x,o=t.wrap&&t.message;let s=i.u.calculateTextDimensions(o?i.u.wrapLabel(t.message,H.width,Y(H)):t.message,Y(H));const c={width:o?H.width:i.e.getMax(H.width,s.width+2*H.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===n.db.PLACEMENT.RIGHTOF?(c.width=o?i.e.getMax(H.width,s.width):i.e.getMax(e[t.from].width/2+e[t.to].width/2,s.width+2*H.noteMargin),c.startx=r+(e[t.from].width+H.actorMargin)/2):t.placement===n.db.PLACEMENT.LEFTOF?(c.width=o?i.e.getMax(H.width,s.width+2*H.noteMargin):i.e.getMax(e[t.from].width/2+e[t.to].width/2,s.width+2*H.noteMargin),c.startx=r-c.width+(e[t.from].width-H.actorMargin)/2):t.to===t.from?(s=i.u.calculateTextDimensions(o?i.u.wrapLabel(t.message,i.e.getMax(H.width,e[t.from].width),Y(H)):t.message,Y(H)),c.width=o?i.e.getMax(H.width,e[t.from].width):i.e.getMax(e[t.from].width,H.width,s.width+2*H.noteMargin),c.startx=r+(e[t.from].width-c.width)/2):(c.width=Math.abs(r+e[t.from].width/2-(a+e[t.to].width/2))+H.actorMargin,c.startx=r{s=t,s.from=i.e.getMin(s.from,c.startx),s.to=i.e.getMax(s.to,c.startx+c.width),s.width=i.e.getMax(s.width,Math.abs(s.from-s.to))-H.labelBoxWidth}))):(u=function(t,e,n){let r=!1;if([n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(r=!0),!r)return{};const a=Q(t.from,e),o=Q(t.to,e),s=a[0]<=o[0]?1:0,c=a[0]0&&o.forEach((n=>{if(s=n,u.startx===u.stopx){const n=e[t.from],r=e[t.to];s.from=i.e.getMin(n.x-u.width/2,n.x-n.width/2,s.from),s.to=i.e.getMax(r.x+u.width/2,r.x+n.width/2,s.to),s.width=i.e.getMax(s.width,Math.abs(s.to-s.from))-H.labelBoxWidth}else s.from=i.e.getMin(u.startx,s.from),s.to=i.e.getMax(u.stopx,s.to),s.width=i.e.getMax(s.width,u.width)-H.labelBoxWidth})))})),U.activations=[],i.l.debug("Loop type widths:",a),a},nt={parser:c,db:S,renderer:{bounds:U,drawActors:W,drawActorsPopup:K,setConf:X,draw:function(t,e,n,o){const{securityLevel:s,sequence:c}=(0,i.c)();let u;H=c,o.db.clear(),o.parser.parse(t),"sandbox"===s&&(u=(0,r.Ys)("#i"+e));const l="sandbox"===s?(0,r.Ys)(u.nodes()[0].contentDocument.body):(0,r.Ys)("body"),h="sandbox"===s?u.nodes()[0].contentDocument:document;U.init(),i.l.debug(o.db);const f="sandbox"===s?l.select(`[id="${e}"]`):(0,r.Ys)(`[id="${e}"]`),d=o.db.getActors(),g=o.db.getBoxes(),p=o.db.getActorKeys(),b=o.db.getMessages(),w=o.db.getDiagramTitle(),m=o.db.hasAtLeastOneBox(),y=o.db.hasAtLeastOneBoxWithTitle(),v=function(t,e,n){const r={};return e.forEach((function(e){if(t[e.to]&&t[e.from]){const a=t[e.to];if(e.placement===n.db.PLACEMENT.LEFTOF&&!a.prevActor)return;if(e.placement===n.db.PLACEMENT.RIGHTOF&&!a.nextActor)return;const o=void 0!==e.placement,s=!o,c=o?Y(H):G(H),u=e.wrap?i.u.wrapLabel(e.message,H.width-2*H.wrapPadding,c):e.message,l=i.u.calculateTextDimensions(u,c).width+2*H.wrapPadding;s&&e.from===a.nextActor?r[e.to]=i.e.getMax(r[e.to]||0,l):s&&e.from===a.prevActor?r[e.from]=i.e.getMax(r[e.from]||0,l):s&&e.from===e.to?(r[e.from]=i.e.getMax(r[e.from]||0,l/2),r[e.to]=i.e.getMax(r[e.to]||0,l/2)):e.placement===n.db.PLACEMENT.RIGHTOF?r[e.from]=i.e.getMax(r[e.from]||0,l):e.placement===n.db.PLACEMENT.LEFTOF?r[a.prevActor]=i.e.getMax(r[a.prevActor]||0,l):e.placement===n.db.PLACEMENT.OVER&&(a.prevActor&&(r[a.prevActor]=i.e.getMax(r[a.prevActor]||0,l/2)),a.nextActor&&(r[e.from]=i.e.getMax(r[e.from]||0,l/2)))}})),i.l.debug("maxMessageWidthPerActor:",r),r}(d,b,o);H.height=function(t,e,n){let r=0;Object.keys(t).forEach((e=>{const n=t[e];n.wrap&&(n.description=i.u.wrapLabel(n.description,H.width-2*H.wrapPadding,Z(H)));const a=i.u.calculateTextDimensions(n.description,Z(H));n.width=n.wrap?H.width:i.e.getMax(H.width,a.width+2*H.wrapPadding),n.height=n.wrap?i.e.getMax(a.height,H.height):H.height,r=i.e.getMax(r,n.height)}));for(const n in e){const r=t[n];if(!r)continue;const a=t[r.nextActor];if(!a){const t=e[n]+H.actorMargin-r.width/2;r.margin=i.e.getMax(t,H.actorMargin);continue}const o=e[n]+H.actorMargin-r.width/2-a.width/2;r.margin=i.e.getMax(o,H.actorMargin)}let a=0;return n.forEach((e=>{const n=G(H);let r=e.actorKeys.reduce(((e,n)=>e+(t[n].width+(t[n].margin||0))),0);r-=2*H.boxTextMargin,e.wrap&&(e.name=i.u.wrapLabel(e.name,r-2*H.wrapPadding,n));const o=i.u.calculateTextDimensions(e.name,n);a=i.e.getMax(o.height,a);const s=i.e.getMax(r,o.width+2*H.wrapPadding);if(e.margin=H.boxTextMargin,rt.textMaxHeight=a)),i.e.getMax(r,H.height)}(d,v,g),q.insertComputerIcon(f),q.insertDatabaseIcon(f),q.insertClockIcon(f),m&&(U.bumpVerticalPos(H.boxMargin),y&&U.bumpVerticalPos(g[0].textMaxHeight)),W(f,d,p,0,H,b,!1);const x=et(b,d,v,o);q.insertArrowHead(f),q.insertArrowCrossHead(f),q.insertArrowFilledHead(f),q.insertSequenceNumber(f);let k=1,_=1;const A=[];b.forEach((function(t){let e,n,r;switch(t.type){case o.db.LINETYPE.NOTE:U.resetVerticalPos(),n=t.noteModel,function(t,e){U.bumpVerticalPos(H.boxMargin),e.height=H.boxMargin,e.starty=U.getVerticalPos();const n=(0,a.g)();n.x=e.startx,n.y=e.starty,n.width=e.width||H.width,n.class="note";const i=t.append("g"),r=q.drawRect(i,n),o=(0,a.e)();o.x=e.startx,o.y=e.starty,o.width=n.width,o.dy="1em",o.text=e.message,o.class="noteText",o.fontFamily=H.noteFontFamily,o.fontSize=H.noteFontSize,o.fontWeight=H.noteFontWeight,o.anchor=H.noteAlign,o.textMargin=H.noteMargin,o.valign="center";const s=N(i,o),c=Math.round(s.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));r.attr("height",c+2*H.noteMargin),e.height+=c+2*H.noteMargin,U.bumpVerticalPos(c+2*H.noteMargin),e.stopy=e.starty+c+2*H.noteMargin,e.stopx=e.startx+n.width,U.insert(e.startx,e.starty,e.stopx,e.stopy),U.models.addNote(e)}(f,n);break;case o.db.LINETYPE.ACTIVE_START:U.newActivation(t,f,d);break;case o.db.LINETYPE.ACTIVE_END:!function(t,e){const n=U.endActivation(t);n.starty+18>e&&(n.starty=e-6,e+=12),q.drawActivation(f,n,e,H,V(t.from.actor).length),U.insert(n.startx,e-10,n.stopx,e)}(t,U.getVerticalPos());break;case o.db.LINETYPE.LOOP_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.LOOP_END:e=U.endLoop(),q.drawLoop(f,e,"loop",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.RECT_START:J(x,t,H.boxMargin,H.boxMargin,(t=>U.newLoop(void 0,t.message)));break;case o.db.LINETYPE.RECT_END:e=U.endLoop(),q.drawBackgroundRect(f,e),U.models.addLoop(e),U.bumpVerticalPos(e.stopy-U.getVerticalPos());break;case o.db.LINETYPE.OPT_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.OPT_END:e=U.endLoop(),q.drawLoop(f,e,"opt",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.ALT_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.ALT_ELSE:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.ALT_END:e=U.endLoop(),q.drawLoop(f,e,"alt",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.PAR_START:case o.db.LINETYPE.PAR_OVER_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t))),U.saveVerticalPos();break;case o.db.LINETYPE.PAR_AND:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.PAR_END:e=U.endLoop(),q.drawLoop(f,e,"par",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.AUTONUMBER:k=t.message.start||k,_=t.message.step||_,t.message.visible?o.db.enableSequenceNumbers():o.db.disableSequenceNumbers();break;case o.db.LINETYPE.CRITICAL_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.CRITICAL_OPTION:J(x,t,H.boxMargin+H.boxTextMargin,H.boxMargin,(t=>U.addSectionToLoop(t)));break;case o.db.LINETYPE.CRITICAL_END:e=U.endLoop(),q.drawLoop(f,e,"critical",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;case o.db.LINETYPE.BREAK_START:J(x,t,H.boxMargin,H.boxMargin+H.boxTextMargin,(t=>U.newLoop(t)));break;case o.db.LINETYPE.BREAK_END:e=U.endLoop(),q.drawLoop(f,e,"break",H),U.bumpVerticalPos(e.stopy-U.getVerticalPos()),U.models.addLoop(e);break;default:try{U.resetVerticalPos(),r=t.msgModel,r.starty=U.getVerticalPos(),r.sequenceIndex=k,r.sequenceVisible=o.db.showSequenceNumbers();const e=function(t,e){U.bumpVerticalPos(10);const{startx:n,stopx:r,message:a}=e,o=i.e.splitBreaks(a).length,s=i.u.calculateTextDimensions(a,G(H)),c=s.height/o;let u;e.height+=c,U.bumpVerticalPos(c);let l=s.height-10;const h=s.width;if(n===r){u=U.getVerticalPos()+l,H.rightAngles||(l+=H.boxMargin,u=U.getVerticalPos()+l),l+=30;const t=i.e.getMax(h/2,H.width/2);U.insert(n-t,U.getVerticalPos()-10+l,r+t,U.getVerticalPos()+30+l)}else l+=H.boxMargin,u=U.getVerticalPos()+l,U.insert(n,u-10,r,u);return U.bumpVerticalPos(l),e.height+=l,e.stopy=e.starty+e.height,U.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),u}(0,r);A.push({messageModel:r,lineStartY:e}),U.models.addMessage(r)}catch(t){i.l.error("error while drawing message",t)}}[o.db.LINETYPE.SOLID_OPEN,o.db.LINETYPE.DOTTED_OPEN,o.db.LINETYPE.SOLID,o.db.LINETYPE.DOTTED,o.db.LINETYPE.SOLID_CROSS,o.db.LINETYPE.DOTTED_CROSS,o.db.LINETYPE.SOLID_POINT,o.db.LINETYPE.DOTTED_POINT].includes(t.type)&&(k+=_)})),A.forEach((t=>function(t,e,n,r){const{startx:o,stopx:s,starty:c,message:u,type:l,sequenceIndex:h,sequenceVisible:f}=e,d=i.u.calculateTextDimensions(u,G(H)),g=(0,a.e)();g.x=o,g.y=c+10,g.width=s-o,g.class="messageText",g.dy="1em",g.text=u,g.fontFamily=H.messageFontFamily,g.fontSize=H.messageFontSize,g.fontWeight=H.messageFontWeight,g.anchor=H.messageAlign,g.valign="center",g.textMargin=H.wrapPadding,g.tspan=!1,N(t,g);const p=d.width;let b;o===s?b=H.rightAngles?t.append("path").attr("d",`M ${o},${n} H ${o+i.e.getMax(H.width/2,p/2)} V ${n+25} H ${o}`):t.append("path").attr("d","M "+o+","+n+" C "+(o+60)+","+(n-10)+" "+(o+60)+","+(n+30)+" "+o+","+(n+20)):(b=t.append("line"),b.attr("x1",o),b.attr("y1",n),b.attr("x2",s),b.attr("y2",n)),l===r.db.LINETYPE.DOTTED||l===r.db.LINETYPE.DOTTED_CROSS||l===r.db.LINETYPE.DOTTED_POINT||l===r.db.LINETYPE.DOTTED_OPEN?(b.style("stroke-dasharray","3, 3"),b.attr("class","messageLine1")):b.attr("class","messageLine0");let w="";H.arrowMarkerAbsolute&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),b.attr("stroke-width",2),b.attr("stroke","none"),b.style("fill","none"),l!==r.db.LINETYPE.SOLID&&l!==r.db.LINETYPE.DOTTED||b.attr("marker-end","url("+w+"#arrowhead)"),l!==r.db.LINETYPE.SOLID_POINT&&l!==r.db.LINETYPE.DOTTED_POINT||b.attr("marker-end","url("+w+"#filled-head)"),l!==r.db.LINETYPE.SOLID_CROSS&&l!==r.db.LINETYPE.DOTTED_CROSS||b.attr("marker-end","url("+w+"#crosshead)"),(f||H.showSequenceNumbers)&&(b.attr("marker-start","url("+w+"#sequencenumber)"),t.append("text").attr("x",o).attr("y",n+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(h))}(f,t.messageModel,t.lineStartY,o))),H.mirrorActors&&(U.bumpVerticalPos(2*H.boxMargin),W(f,d,p,U.getVerticalPos(),H,b,!0),U.bumpVerticalPos(H.boxMargin),F(f,U.getVerticalPos())),U.models.boxes.forEach((function(t){t.height=U.getVerticalPos()-t.y,U.insert(t.x,t.y,t.x+t.width,t.height),t.startx=t.x,t.starty=t.y,t.stopx=t.startx+t.width,t.stopy=t.starty+t.height,t.stroke="rgb(0,0,0, 0.5)",q.drawBox(f,t,H)})),m&&U.bumpVerticalPos(H.boxMargin);const E=K(f,d,p,h),{bounds:T}=U.getBounds();i.l.debug("For line height fix Querying: #"+e+" .actor-line");(0,r.td_)("#"+e+" .actor-line").attr("y2",T.stopy);let C=T.stopy-T.starty;C{c[t]=e},l=(t,e)=>{const n=t.append("text").attr("x",2*(0,s.c)().state.padding).attr("y",(0,s.c)().state.textHeight+1.3*(0,s.c)().state.padding).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),i=n.height,r=t.append("text").attr("x",(0,s.c)().state.padding).attr("y",i+.4*(0,s.c)().state.padding+(0,s.c)().state.dividerMargin+(0,s.c)().state.textHeight).attr("class","state-description");let a=!0,o=!0;e.descriptions.forEach((function(t){a||(!function(t,e,n){const i=t.append("tspan").attr("x",2*(0,s.c)().state.padding).text(e);n||i.attr("dy",(0,s.c)().state.textHeight)}(r,t,o),o=!1),a=!1}));const c=t.append("line").attr("x1",(0,s.c)().state.padding).attr("y1",(0,s.c)().state.padding+i+(0,s.c)().state.dividerMargin/2).attr("y2",(0,s.c)().state.padding+i+(0,s.c)().state.dividerMargin/2).attr("class","descr-divider"),u=r.node().getBBox(),l=Math.max(u.width,n.width);return c.attr("x2",l+3*(0,s.c)().state.padding),t.insert("rect",":first-child").attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding).attr("width",l+2*(0,s.c)().state.padding).attr("height",u.height+i+2*(0,s.c)().state.padding).attr("rx",(0,s.c)().state.radius),t},h=(t,e,n)=>{const i=(0,s.c)().state.padding,r=2*(0,s.c)().state.padding,a=t.node().getBBox(),o=a.width,c=a.x,u=t.append("text").attr("x",0).attr("y",(0,s.c)().state.titleShift).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.id),l=u.node().getBBox().width+r;let h,f=Math.max(l,o);f===o&&(f+=r);const d=t.node().getBBox();e.doc,h=c-i,l>o&&(h=(o-f)/2+i),Math.abs(c-d.x)o&&(h=c-(l-o)/2);const g=1-(0,s.c)().state.textHeight;return t.insert("rect",":first-child").attr("x",h).attr("y",g).attr("class",n?"alt-composit":"composit").attr("width",f).attr("height",d.height+(0,s.c)().state.textHeight+(0,s.c)().state.titleShift+1).attr("rx","0"),u.attr("x",h+i),l<=o&&u.attr("x",c+(f-r)/2-l/2+i),t.insert("rect",":first-child").attr("x",h).attr("y",(0,s.c)().state.titleShift-(0,s.c)().state.textHeight-(0,s.c)().state.padding).attr("width",f).attr("height",3*(0,s.c)().state.textHeight).attr("rx",(0,s.c)().state.radius),t.insert("rect",":first-child").attr("x",h).attr("y",(0,s.c)().state.titleShift-(0,s.c)().state.textHeight-(0,s.c)().state.padding).attr("width",f).attr("height",d.height+3+2*(0,s.c)().state.textHeight).attr("rx",(0,s.c)().state.radius),t},f=(t,e)=>{e.attr("class","state-note");const n=e.append("rect").attr("x",0).attr("y",(0,s.c)().state.padding),i=e.append("g"),{textWidth:r,textHeight:a}=((t,e,n,i)=>{let r=0;const a=i.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let o=t.replace(/\r\n/g,"
");o=o.replace(/\n/g,"
");const c=o.split(s.e.lineBreakRegex);let u=1.25*(0,s.c)().state.noteMargin;for(const t of c){const i=t.trim();if(i.length>0){const t=a.append("tspan");t.text(i),0===u&&(u+=t.node().getBBox().height),r+=u,t.attr("x",e+(0,s.c)().state.noteMargin),t.attr("y",n+r+1.25*(0,s.c)().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:r}})(t,0,0,i);return n.attr("height",a+2*(0,s.c)().state.noteMargin),n.attr("width",r+2*(0,s.c)().state.noteMargin),n},d=function(t,e){const n=e.id,i={id:n,label:e.id,width:0,height:0},r=t.append("g").attr("id",n).attr("class","stateGroup");"start"===e.type&&(t=>{t.append("circle").attr("class","start-state").attr("r",(0,s.c)().state.sizeUnit).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit)})(r),"end"===e.type&&(t=>{t.append("circle").attr("class","end-state-outer").attr("r",(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+(0,s.c)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,s.c)().state.sizeUnit).attr("cx",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+2).attr("cy",(0,s.c)().state.padding+(0,s.c)().state.sizeUnit+2)})(r),"fork"!==e.type&&"join"!==e.type||((t,e)=>{let n=(0,s.c)().state.forkWidth,i=(0,s.c)().state.forkHeight;if(e.parentId){let t=n;n=i,i=t}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",i).attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding)})(r,e),"note"===e.type&&f(e.note.text,r),"divider"===e.type&&(t=>{t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,s.c)().state.textHeight).attr("class","divider").attr("x2",2*(0,s.c)().state.textHeight).attr("y1",0).attr("y2",0)})(r),"default"===e.type&&0===e.descriptions.length&&((t,e)=>{const n=t.append("text").attr("x",2*(0,s.c)().state.padding).attr("y",(0,s.c)().state.textHeight+2*(0,s.c)().state.padding).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.id),i=n.node().getBBox();t.insert("rect",":first-child").attr("x",(0,s.c)().state.padding).attr("y",(0,s.c)().state.padding).attr("width",i.width+2*(0,s.c)().state.padding).attr("height",i.height+2*(0,s.c)().state.padding).attr("rx",(0,s.c)().state.radius)})(r,e),"default"===e.type&&e.descriptions.length>0&&l(r,e);const a=r.node().getBBox();return i.width=a.width+2*(0,s.c)().state.padding,i.height=a.height+2*(0,s.c)().state.padding,u(n,i),i};let g=0;let p;const b={},w=(t,e,n,c,u,l,f)=>{const m=new o.k({compound:!0,multigraph:!0});let y,v=!0;for(y=0;y{const e=t.parentElement;let n=0,i=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",n-i-8)}))}else s.l.debug("No Node "+t+": "+JSON.stringify(m.node(t)))}));let T=E.getBBox();m.edges().forEach((function(t){void 0!==t&&void 0!==m.edge(t)&&(s.l.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(m.edge(t))),function(t,e,n){e.points=e.points.filter((t=>!Number.isNaN(t.y)));const a=e.points,o=(0,r.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(r.$0Z),c=t.append("path").attr("d",o(a)).attr("id","edge"+g).attr("class","transition");let u="";if((0,s.c)().state.arrowMarkerAbsolute&&(u=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,u=u.replace(/\(/g,"\\("),u=u.replace(/\)/g,"\\)")),c.attr("marker-end","url("+u+"#"+function(t){switch(t){case i.d.relationType.AGGREGATION:return"aggregation";case i.d.relationType.EXTENSION:return"extension";case i.d.relationType.COMPOSITION:return"composition";case i.d.relationType.DEPENDENCY:return"dependency"}}(i.d.relationType.DEPENDENCY)+"End)"),void 0!==n.title){const i=t.append("g").attr("class","stateLabel"),{x:r,y:a}=s.u.calcLabelPosition(e.points),o=s.e.getRows(n.title);let c=0;const u=[];let l=0,h=0;for(let t=0;t<=o.length;t++){const e=i.append("text").attr("text-anchor","middle").text(o[t]).attr("x",r).attr("y",a+c),n=e.node().getBBox();if(l=Math.max(l,n.width),h=Math.min(h,n.x),s.l.info(n.x,r,a+c),0===c){const t=e.node().getBBox();c=t.height,s.l.info("Title height",c,a)}u.push(e)}let f=c*o.length;if(o.length>1){const t=(o.length-1)*c*.5;u.forEach(((e,n)=>e.attr("y",a+n*c-t))),f=c*o.length}const d=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",r-l/2-(0,s.c)().state.padding/2).attr("y",a-f/2-(0,s.c)().state.padding/2-3.5).attr("width",l+(0,s.c)().state.padding).attr("height",f+(0,s.c)().state.padding),s.l.info(d)}g++}(e,m.edge(t),m.edge(t).relation))})),T=E.getBBox();const C={id:n||"root",label:n||"root",width:0,height:0};return C.width=T.width+2*p.padding,C.height=T.height+2*p.padding,s.l.debug("Doc rendered",C,m),C},m={setConf:function(){},draw:function(t,e,n,i){p=(0,s.c)().state;const a=(0,s.c)().securityLevel;let c;"sandbox"===a&&(c=(0,r.Ys)("#i"+e));const u="sandbox"===a?(0,r.Ys)(c.nodes()[0].contentDocument.body):(0,r.Ys)("body"),l="sandbox"===a?c.nodes()[0].contentDocument:document;s.l.debug("Rendering diagram "+t);const h=u.select(`[id='${e}']`);h.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z");new o.k({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));const f=i.db.getRootDoc();w(f,h,void 0,!1,u,l,i);const d=p.padding,g=h.node().getBBox(),b=g.width+2*d,m=g.height+2*d,y=1.75*b;(0,s.i)(h,m,y,p.useMaxWidth),h.attr("viewBox",`${g.x-p.padding} ${g.y-p.padding} `+b+" "+m)}},y={parser:i.p,db:i.d,renderer:m,styles:i.s,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},6185:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return T}});var i=n(328),r=n(8066),a=n(1504),o=n(8540),s=n(113);n(7530),n(2510),n(6951),n(1768),n(835);const c="rect",u="rectWithTitle",l="statediagram",h="transition",f="parent",d="note",g="----parent",p="fill:none",b="fill: #333",w="text",m="normal";let y={},v=0;function x(t="",e=0,n="",i="----"){return`state-${t}${null!==n&&n.length>0?`${i}${n}`:""}-${e}`}const k=(t,e,n,r,a,s)=>{const l=n.id,h=null==(k=r[l])?"":k.classes?k.classes.join(" "):"";var k;if("root"!==l){let e=c;!0===n.start&&(e="start"),!1===n.start&&(e="end"),n.type!==i.D&&(e=n.type),y[l]||(y[l]={id:l,shape:e,description:o.e.sanitizeText(l,(0,o.c)()),classes:`${h} statediagram-state`});const r=y[l];n.description&&(Array.isArray(r.description)?(r.shape=u,r.description.push(n.description)):r.description.length>0?(r.shape=u,r.description===l?r.description=[n.description]:r.description=[r.description,n.description]):(r.shape=c,r.description=n.description),r.description=o.e.sanitizeTextOrArray(r.description,(0,o.c)())),1===r.description.length&&r.shape===u&&(r.shape=c),!r.type&&n.doc&&(o.l.info("Setting cluster for ",l,A(n)),r.type="group",r.dir=A(n),r.shape=n.type===i.a?"divider":"roundedWithTitle",r.classes=r.classes+" statediagram-cluster "+(s?"statediagram-cluster-alt":""));const a={labelStyle:"",shape:r.shape,labelText:r.description,classes:r.classes,style:"",id:l,dir:r.dir,domId:x(l,v),type:r.type,padding:15,centerLabel:!0};if(n.note){const e={labelStyle:"",shape:"note",labelText:n.note.text,classes:"statediagram-note",style:"",id:l+"----note-"+v,domId:x(l,v,d),type:r.type,padding:15},i={labelStyle:"",shape:"noteGroup",labelText:n.note.text,classes:r.classes,style:"",id:l+g,domId:x(l,v,f),type:"group",padding:0};v++;const o=l+g;t.setNode(o,i),t.setNode(e.id,e),t.setNode(l,a),t.setParent(l,o),t.setParent(e.id,o);let s=l,c=e.id;"left of"===n.note.position&&(s=e.id,c=l),t.setEdge(s,c,{arrowhead:"none",arrowType:"",style:p,labelStyle:"",classes:"transition note-edge",arrowheadStyle:b,labelpos:"c",labelType:w,thickness:m})}else t.setNode(l,a)}e&&"root"!==e.id&&(o.l.trace("Setting node ",l," to be child of its parent ",e.id),t.setParent(l,e.id)),n.doc&&(o.l.trace("Adding nodes children "),_(t,n,n.doc,r,a,!s))},_=(t,e,n,r,a,s)=>{o.l.trace("items",n),n.forEach((n=>{switch(n.stmt){case i.b:case i.D:k(t,e,n,r,a,s);break;case i.S:{k(t,e,n.state1,r,a,s),k(t,e,n.state2,r,a,s);const i={id:"edge"+v,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:p,labelStyle:"",label:o.e.sanitizeText(n.description,(0,o.c)()),arrowheadStyle:b,labelpos:"c",labelType:w,thickness:m,classes:h};t.setEdge(n.state1.id,n.state2.id,i,v),v++}}}))},A=(t,e=i.c)=>{let n=e;if(t.doc)for(let e=0;e{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,i.d.clear()}}},8489:function(t,e,n){"use strict";n.d(e,{a:function(){return w},f:function(){return b}});var i=n(8066),r=n(1504),a=n(895),o=n(8540),s=n(113),c=n(8137),u=n(1022),l=n(9297);var h=(t,e)=>u.Z.lang.round(l.Z.parse(t)[e]),f=n(852);const d={},g=function(t,e,n,i,r,a){const s=i.select(`[id="${n}"]`);Object.keys(t).forEach((function(n){const i=t[n];let u="default";i.classes.length>0&&(u=i.classes.join(" ")),u+=" flowchart-label";const l=(0,o.k)(i.styles);let h,f=void 0!==i.text?i.text:i.id;if(o.l.info("vertex",i,i.labelType),"markdown"===i.labelType)o.l.info("vertex",i,i.labelType);else if((0,o.n)((0,o.c)().flowchart.htmlLabels)){const t={label:f.replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``))};h=(0,c.a)(s,t).node(),h.parentNode.removeChild(h)}else{const t=r.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",l.labelStyle.replace("color:","fill:"));const e=f.split(o.e.lineBreakRegex);for(const n of e){const e=r.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","1"),e.textContent=n,t.appendChild(e)}h=t}let d=0,g="";switch(i.type){case"round":d=5,g="rect";break;case"square":case"group":default:g="rect";break;case"diamond":g="question";break;case"hexagon":g="hexagon";break;case"odd":case"odd_right":g="rect_left_inv_arrow";break;case"lean_right":g="lean_right";break;case"lean_left":g="lean_left";break;case"trapezoid":g="trapezoid";break;case"inv_trapezoid":g="inv_trapezoid";break;case"circle":g="circle";break;case"ellipse":g="ellipse";break;case"stadium":g="stadium";break;case"subroutine":g="subroutine";break;case"cylinder":g="cylinder";break;case"doublecircle":g="doublecircle"}e.setNode(i.id,{labelStyle:l.labelStyle,shape:g,labelText:f,labelType:i.labelType,rx:d,ry:d,class:u,style:l.style,id:i.id,link:i.link,linkTarget:i.linkTarget,tooltip:a.db.getTooltip(i.id)||"",domId:a.db.lookUpDomId(i.id),haveCallback:i.haveCallback,width:"group"===i.type?500:void 0,dir:i.dir,type:i.type,props:i.props,padding:(0,o.c)().flowchart.padding}),o.l.info("setNode",{labelStyle:l.labelStyle,labelType:i.labelType,shape:g,labelText:f,rx:d,ry:d,class:u,style:l.style,id:i.id,domId:a.db.lookUpDomId(i.id),width:"group"===i.type?500:void 0,type:i.type,dir:i.dir,props:i.props,padding:(0,o.c)().flowchart.padding})}))},p=function(t,e,n){o.l.info("abc78 edges = ",t);let i,a,s=0,c={};if(void 0!==t.defaultStyle){const e=(0,o.k)(t.defaultStyle);i=e.style,a=e.labelStyle}t.forEach((function(n){s++;const u="L-"+n.start+"-"+n.end;void 0===c[u]?(c[u]=0,o.l.info("abc78 new entry",u,c[u])):(c[u]++,o.l.info("abc78 new entry",u,c[u]));let l=u+"-"+c[u];o.l.info("abc78 new link id to be used is",u,l,c[u]);const h="LS-"+n.start,f="LE-"+n.end,g={style:"",labelStyle:""};switch(g.minlen=n.length||1,"arrow_open"===n.type?g.arrowhead="none":g.arrowhead="normal",g.arrowTypeStart="arrow_open",g.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":g.arrowTypeStart="arrow_cross";case"arrow_cross":g.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":g.arrowTypeStart="arrow_point";case"arrow_point":g.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":g.arrowTypeStart="arrow_circle";case"arrow_circle":g.arrowTypeEnd="arrow_circle"}let p="",b="";switch(n.stroke){case"normal":p="fill:none;",void 0!==i&&(p=i),void 0!==a&&(b=a),g.thickness="normal",g.pattern="solid";break;case"dotted":g.thickness="normal",g.pattern="dotted",g.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":g.thickness="thick",g.pattern="solid",g.style="stroke-width: 3.5px;fill:none;";break;case"invisible":g.thickness="invisible",g.pattern="solid",g.style="stroke-width: 0;fill:none;"}if(void 0!==n.style){const t=(0,o.k)(n.style);p=t.style,b=t.labelStyle}g.style=g.style+=p,g.labelStyle=g.labelStyle+=b,void 0!==n.interpolate?g.curve=(0,o.o)(n.interpolate,r.c_6):void 0!==t.defaultInterpolate?g.curve=(0,o.o)(t.defaultInterpolate,r.c_6):g.curve=(0,o.o)(d.curve,r.c_6),void 0===n.text?void 0!==n.style&&(g.arrowheadStyle="fill: #333"):(g.arrowheadStyle="fill: #333",g.labelpos="c"),g.labelType=n.labelType,g.label=n.text.replace(o.e.lineBreakRegex,"\n"),void 0===n.style&&(g.style=g.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),g.labelStyle=g.labelStyle.replace("color:","fill:"),g.id=l,g.classes="flowchart-link "+h+" "+f,e.setEdge(n.start,n.end,g,s)}))},b={setConf:function(t){const e=Object.keys(t);for(const n of e)d[n]=t[n]},addVertices:g,addEdges:p,getClasses:function(t,e){o.l.info("Extracting classes"),e.db.clear();try{return e.parse(t),e.db.getClasses()}catch(t){return}},draw:async function(t,e,n,c){o.l.info("Drawing flowchart"),c.db.clear(),a.f.setGen("gen-2"),c.parser.parse(t);let u=c.db.getDirection();void 0===u&&(u="TD");const{securityLevel:l,flowchart:h}=(0,o.c)(),f=h.nodeSpacing||50,d=h.rankSpacing||50;let b;"sandbox"===l&&(b=(0,r.Ys)("#i"+e));const w="sandbox"===l?(0,r.Ys)(b.nodes()[0].contentDocument.body):(0,r.Ys)("body"),m="sandbox"===l?b.nodes()[0].contentDocument:document,y=new i.k({multigraph:!0,compound:!0}).setGraph({rankdir:u,nodesep:f,ranksep:d,marginx:0,marginy:0}).setDefaultEdgeLabel((function(){return{}}));let v;const x=c.db.getSubGraphs();o.l.info("Subgraphs - ",x);for(let t=x.length-1;t>=0;t--)v=x[t],o.l.info("Subgraph - ",v),c.db.addVertex(v.id,{text:v.title,type:v.labelType},"group",void 0,v.classes,v.dir);const k=c.db.getVertices(),_=c.db.getEdges();o.l.info("Edges",_);let A=0;for(A=x.length-1;A>=0;A--){v=x[A],(0,r.td_)("cluster").append("text");for(let t=0;t`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${((t,e)=>{const n=h,i=n(t,"r"),r=n(t,"g"),a=n(t,"b");return f.Z(i,r,a,e)})(t.edgeLabelBackground,.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`},5349:function(t,e,n){"use strict";n.d(e,{d:function(){return A},p:function(){return o},s:function(){return E}});var i=n(1504),r=n(8540),a=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,34],n=[1,35],i=[1,36],r=[1,37],a=[1,9],o=[1,8],s=[1,19],c=[1,20],u=[1,21],l=[1,40],h=[1,41],f=[1,27],d=[1,25],g=[1,26],p=[1,32],b=[1,33],w=[1,28],m=[1,29],y=[1,30],v=[1,31],x=[1,45],k=[1,42],_=[1,43],A=[1,44],E=[1,46],T=[1,24],C=[1,16,24],S=[1,60],I=[1,61],M=[1,62],D=[1,63],O=[1,64],L=[1,65],N=[1,66],P=[1,16,24,52],B=[1,77],F=[1,16,24,27,28,36,50,52,55,68,69,70,71,72,73,74,79,81],R=[1,16,24,27,28,34,36,50,52,55,59,68,69,70,71,72,73,74,79,81,94,96,97,98,99],j=[1,86],$=[28,94,96,97,98,99],z=[28,73,74,94,96,97,98,99],q=[28,68,69,70,71,72,94,96,97,98,99],H=[1,99],U=[1,16,24,50,52,55],G=[1,16,24,36],Y=[8,9,10,11,19,23,44,46,48,53,57,58,60,61,63,65,75,76,78,82,94,96,97,98,99],Z={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,statements:6,direction:7,direction_tb:8,direction_bt:9,direction_rl:10,direction_lr:11,graphConfig:12,openDirective:13,typeDirective:14,closeDirective:15,NEWLINE:16,":":17,argDirective:18,open_directive:19,type_directive:20,arg_directive:21,close_directive:22,CLASS_DIAGRAM:23,EOF:24,statement:25,classLabel:26,SQS:27,STR:28,SQE:29,namespaceName:30,alphaNumToken:31,className:32,classLiteralName:33,GENERICTYPE:34,relationStatement:35,LABEL:36,namespaceStatement:37,classStatement:38,methodStatement:39,annotationStatement:40,clickStatement:41,cssClassStatement:42,noteStatement:43,acc_title:44,acc_title_value:45,acc_descr:46,acc_descr_value:47,acc_descr_multiline_value:48,namespaceIdentifier:49,STRUCT_START:50,classStatements:51,STRUCT_STOP:52,NAMESPACE:53,classIdentifier:54,STYLE_SEPARATOR:55,members:56,CLASS:57,ANNOTATION_START:58,ANNOTATION_END:59,MEMBER:60,SEPARATOR:61,relation:62,NOTE_FOR:63,noteText:64,NOTE:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,CSSCLASS:82,commentToken:83,textToken:84,graphCodeTokens:85,textNoTagsToken:86,TAGSTART:87,TAGEND:88,"==":89,"--":90,PCT:91,DEFAULT:92,SPACE:93,MINUS:94,keywords:95,UNICODE_TEXT:96,NUM:97,ALPHA:98,BQUOTE_STR:99,$accept:0,$end:1},terminals_:{2:"error",8:"direction_tb",9:"direction_bt",10:"direction_rl",11:"direction_lr",16:"NEWLINE",17:":",19:"open_directive",20:"type_directive",21:"arg_directive",22:"close_directive",23:"CLASS_DIAGRAM",24:"EOF",27:"SQS",28:"STR",29:"SQE",34:"GENERICTYPE",36:"LABEL",44:"acc_title",45:"acc_title_value",46:"acc_descr",47:"acc_descr_value",48:"acc_descr_multiline_value",50:"STRUCT_START",52:"STRUCT_STOP",53:"NAMESPACE",55:"STYLE_SEPARATOR",57:"CLASS",58:"ANNOTATION_START",59:"ANNOTATION_END",60:"MEMBER",61:"SEPARATOR",63:"NOTE_FOR",65:"NOTE",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"CSSCLASS",85:"graphCodeTokens",87:"TAGSTART",88:"TAGEND",89:"==",90:"--",91:"PCT",92:"DEFAULT",93:"SPACE",94:"MINUS",95:"keywords",96:"UNICODE_TEXT",97:"NUM",98:"ALPHA",99:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[3,1],[7,1],[7,1],[7,1],[7,1],[4,1],[5,4],[5,6],[13,1],[14,1],[18,1],[15,1],[12,4],[6,1],[6,2],[6,3],[26,3],[30,1],[30,2],[32,1],[32,1],[32,2],[32,2],[32,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,2],[25,2],[25,1],[37,4],[37,5],[49,2],[51,1],[51,2],[51,3],[38,1],[38,3],[38,4],[38,6],[54,2],[54,3],[40,4],[56,1],[56,2],[39,1],[39,2],[39,1],[39,1],[35,3],[35,4],[35,4],[35,5],[43,3],[43,2],[62,3],[62,2],[62,2],[62,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[41,3],[41,4],[41,3],[41,4],[41,4],[41,5],[41,3],[41,4],[41,4],[41,5],[41,3],[41,4],[41,4],[41,5],[42,3],[83,1],[83,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[86,1],[86,1],[86,1],[86,1],[31,1],[31,1],[31,1],[31,1],[33,1],[64,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:i.setDirection("TB");break;case 5:i.setDirection("BT");break;case 6:i.setDirection("RL");break;case 7:i.setDirection("LR");break;case 11:i.parseDirective("%%{","open_directive");break;case 12:i.parseDirective(a[s],"type_directive");break;case 13:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 14:i.parseDirective("}%%","close_directive","class");break;case 19:this.$=a[s-1];break;case 20:case 22:case 23:this.$=a[s];break;case 21:case 24:this.$=a[s-1]+a[s];break;case 25:case 26:this.$=a[s-1]+"~"+a[s]+"~";break;case 27:i.addRelation(a[s]);break;case 28:a[s-1].title=i.cleanupLabel(a[s]),i.addRelation(a[s-1]);break;case 37:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 40:i.addClassesToNamespace(a[s-3],a[s-1]);break;case 41:i.addClassesToNamespace(a[s-4],a[s-1]);break;case 42:this.$=a[s],i.addNamespace(a[s]);break;case 43:case 53:this.$=[a[s]];break;case 44:this.$=[a[s-1]];break;case 45:a[s].unshift(a[s-2]),this.$=a[s];break;case 47:i.setCssClass(a[s-2],a[s]);break;case 48:i.addMembers(a[s-3],a[s-1]);break;case 49:i.setCssClass(a[s-5],a[s-3]),i.addMembers(a[s-5],a[s-1]);break;case 50:this.$=a[s],i.addClass(a[s]);break;case 51:this.$=a[s-1],i.addClass(a[s-1]),i.setClassLabel(a[s-1],a[s]);break;case 52:i.addAnnotation(a[s],a[s-2]);break;case 54:a[s].push(a[s-1]),this.$=a[s];break;case 55:case 57:case 58:break;case 56:i.addMember(a[s-1],i.cleanupLabel(a[s]));break;case 59:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 60:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 61:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 62:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 63:i.addNote(a[s],a[s-1]);break;case 64:i.addNote(a[s]);break;case 65:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 66:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 67:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 68:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 69:this.$=i.relationType.AGGREGATION;break;case 70:this.$=i.relationType.EXTENSION;break;case 71:this.$=i.relationType.COMPOSITION;break;case 72:this.$=i.relationType.DEPENDENCY;break;case 73:this.$=i.relationType.LOLLIPOP;break;case 74:this.$=i.lineType.LINE;break;case 75:this.$=i.lineType.DOTTED_LINE;break;case 76:case 82:this.$=a[s-2],i.setClickEvent(a[s-1],a[s]);break;case 77:case 83:this.$=a[s-3],i.setClickEvent(a[s-2],a[s-1]),i.setTooltip(a[s-2],a[s]);break;case 78:case 86:this.$=a[s-2],i.setLink(a[s-1],a[s]);break;case 79:case 87:this.$=a[s-3],i.setLink(a[s-2],a[s-1],a[s]);break;case 80:case 88:this.$=a[s-3],i.setLink(a[s-2],a[s-1]),i.setTooltip(a[s-2],a[s]);break;case 81:case 89:this.$=a[s-4],i.setLink(a[s-3],a[s-2],a[s]),i.setTooltip(a[s-3],a[s-1]);break;case 84:this.$=a[s-3],i.setClickEvent(a[s-2],a[s-1],a[s]);break;case 85:this.$=a[s-4],i.setClickEvent(a[s-3],a[s-2],a[s-1]),i.setTooltip(a[s-3],a[s]);break;case 90:i.setCssClass(a[s-1],a[s])}},table:[{3:1,4:2,5:3,6:4,7:18,8:e,9:n,10:i,11:r,12:5,13:6,19:a,23:o,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},{1:[3]},{1:[2,1]},{3:47,4:2,5:3,6:4,7:18,8:e,9:n,10:i,11:r,12:5,13:6,19:a,23:o,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},{1:[2,3]},{1:[2,8]},{14:48,20:[1,49]},t(T,[2,16],{16:[1,50]}),{16:[1,51]},{20:[2,11]},t(C,[2,27],{36:[1,52]}),t(C,[2,29]),t(C,[2,30]),t(C,[2,31]),t(C,[2,32]),t(C,[2,33]),t(C,[2,34]),t(C,[2,35]),t(C,[2,36]),{45:[1,53]},{47:[1,54]},t(C,[2,39]),t(C,[2,55],{62:55,66:58,67:59,28:[1,56],36:[1,57],68:S,69:I,70:M,71:D,72:O,73:L,74:N}),{50:[1,67]},t(P,[2,46],{50:[1,69],55:[1,68]}),t(C,[2,57]),t(C,[2,58]),{31:70,94:x,96:k,97:_,98:A},{31:38,32:71,33:39,94:x,96:k,97:_,98:A,99:E},{31:38,32:72,33:39,94:x,96:k,97:_,98:A,99:E},{31:38,32:73,33:39,94:x,96:k,97:_,98:A,99:E},{28:[1,74]},{31:38,32:75,33:39,94:x,96:k,97:_,98:A,99:E},{28:B,64:76},t(C,[2,4]),t(C,[2,5]),t(C,[2,6]),t(C,[2,7]),t(F,[2,22],{31:38,33:39,32:78,34:[1,79],94:x,96:k,97:_,98:A,99:E}),t(F,[2,23],{34:[1,80]}),{30:81,31:82,94:x,96:k,97:_,98:A},{31:38,32:83,33:39,94:x,96:k,97:_,98:A,99:E},t(R,[2,104]),t(R,[2,105]),t(R,[2,106]),t(R,[2,107]),t([1,16,24,27,28,34,36,50,52,55,68,69,70,71,72,73,74,79,81],[2,108]),{1:[2,2]},{15:84,17:[1,85],22:j},t([17,22],[2,12]),t(T,[2,17],{25:7,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,7:18,32:22,49:23,54:24,31:38,33:39,6:87,8:e,9:n,10:i,11:r,44:s,46:c,48:u,53:l,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E}),{6:88,7:18,8:e,9:n,10:i,11:r,25:7,31:38,32:22,33:39,35:10,37:11,38:12,39:13,40:14,41:15,42:16,43:17,44:s,46:c,48:u,49:23,53:l,54:24,57:h,58:f,60:d,61:g,63:p,65:b,75:w,76:m,78:y,82:v,94:x,96:k,97:_,98:A,99:E},t(C,[2,28]),t(C,[2,37]),t(C,[2,38]),{28:[1,90],31:38,32:89,33:39,94:x,96:k,97:_,98:A,99:E},{62:91,66:58,67:59,68:S,69:I,70:M,71:D,72:O,73:L,74:N},t(C,[2,56]),{67:92,73:L,74:N},t($,[2,68],{66:93,68:S,69:I,70:M,71:D,72:O}),t(z,[2,69]),t(z,[2,70]),t(z,[2,71]),t(z,[2,72]),t(z,[2,73]),t(q,[2,74]),t(q,[2,75]),{16:[1,95],38:96,51:94,54:24,57:h},{31:97,94:x,96:k,97:_,98:A},{56:98,60:H},{59:[1,100]},{28:[1,101]},{28:[1,102]},{79:[1,103],81:[1,104]},{31:105,94:x,96:k,97:_,98:A},{28:B,64:106},t(C,[2,64]),t(C,[2,109]),t(F,[2,24]),t(F,[2,25]),t(F,[2,26]),{50:[2,42]},{30:107,31:82,50:[2,20],94:x,96:k,97:_,98:A},t(U,[2,50],{26:108,27:[1,109]}),{16:[1,110]},{18:111,21:[1,112]},{16:[2,14]},t(T,[2,18]),{24:[1,113]},t(G,[2,59]),{31:38,32:114,33:39,94:x,96:k,97:_,98:A,99:E},{28:[1,116],31:38,32:115,33:39,94:x,96:k,97:_,98:A,99:E},t($,[2,67],{66:117,68:S,69:I,70:M,71:D,72:O}),t($,[2,66]),{52:[1,118]},{38:96,51:119,54:24,57:h},{16:[1,120],52:[2,43]},t(P,[2,47],{50:[1,121]}),{52:[1,122]},{52:[2,53],56:123,60:H},{31:38,32:124,33:39,94:x,96:k,97:_,98:A,99:E},t(C,[2,76],{28:[1,125]}),t(C,[2,78],{28:[1,127],77:[1,126]}),t(C,[2,82],{28:[1,128],80:[1,129]}),t(C,[2,86],{28:[1,131],77:[1,130]}),t(C,[2,90]),t(C,[2,63]),{50:[2,21]},t(U,[2,51]),{28:[1,132]},t(Y,[2,9]),{15:133,22:j},{22:[2,13]},{1:[2,15]},t(G,[2,61]),t(G,[2,60]),{31:38,32:134,33:39,94:x,96:k,97:_,98:A,99:E},t($,[2,65]),t(C,[2,40]),{52:[1,135]},{38:96,51:136,52:[2,44],54:24,57:h},{56:137,60:H},t(P,[2,48]),{52:[2,54]},t(C,[2,52]),t(C,[2,77]),t(C,[2,79]),t(C,[2,80],{77:[1,138]}),t(C,[2,83]),t(C,[2,84],{28:[1,139]}),t(C,[2,87]),t(C,[2,88],{77:[1,140]}),{29:[1,141]},{16:[1,142]},t(G,[2,62]),t(C,[2,41]),{52:[2,45]},{52:[1,143]},t(C,[2,81]),t(C,[2,85]),t(C,[2,89]),t(U,[2,19]),t(Y,[2,10]),t(P,[2,49])],defaultActions:{2:[2,1],4:[2,3],5:[2,8],9:[2,11],47:[2,2],81:[2,42],86:[2,14],107:[2,21],112:[2,13],113:[2,15],123:[2,54],136:[2,45]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},W={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),19;case 1:return 8;case 2:return 9;case 3:return 10;case 4:return 11;case 5:return this.begin("type_directive"),20;case 6:return this.popState(),this.begin("arg_directive"),17;case 7:return this.popState(),this.popState(),22;case 8:return 21;case 9:case 10:case 19:case 25:case 30:case 34:case 41:break;case 11:return this.begin("acc_title"),44;case 12:return this.popState(),"acc_title_value";case 13:return this.begin("acc_descr"),46;case 14:return this.popState(),"acc_descr_value";case 15:this.begin("acc_descr_multiline");break;case 16:case 52:case 55:case 58:case 60:case 63:case 66:this.popState();break;case 17:return"acc_descr_multiline_value";case 18:case 29:return 16;case 20:case 21:return 23;case 22:case 31:case 39:return"EDGE_STATE";case 23:return this.begin("namespace"),53;case 24:case 33:return this.popState(),16;case 26:return this.begin("namespace-body"),50;case 27:case 37:return this.popState(),52;case 28:case 38:return"EOF_IN_STRUCT";case 32:return this.begin("class"),57;case 35:return this.popState(),this.popState(),52;case 36:return this.begin("class-body"),50;case 40:return"OPEN_IN_STRUCT";case 42:return"MEMBER";case 43:return 82;case 44:return 75;case 45:return 76;case 46:return 78;case 47:return 63;case 48:return 65;case 49:return 58;case 50:return 59;case 51:this.begin("href");break;case 53:return 81;case 54:this.begin("callback_name");break;case 56:this.popState(),this.begin("callback_args");break;case 57:return 79;case 59:return 80;case 61:return"GENERICTYPE";case 62:this.begin("generic");break;case 64:return"STR";case 65:this.begin("string");break;case 67:return"BQUOTE_STR";case 68:this.begin("bqstring");break;case 69:case 70:case 71:case 72:return 77;case 73:case 74:return 69;case 75:case 76:return 71;case 77:return 70;case 78:return 68;case 79:return 72;case 80:return 73;case 81:return 74;case 82:return 36;case 83:return 55;case 84:return 94;case 85:return"DOT";case 86:return"PLUS";case 87:return 91;case 88:case 89:return"EQUALS";case 90:return 98;case 91:return 27;case 92:return 29;case 93:return"PUNCTUATION";case 94:return 97;case 95:return 96;case 96:return 93;case 97:return 24}},rules:[/^(?:%%\{)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[~])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[27,28,29,30,31,32,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},namespace:{rules:[23,24,25,26,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},"class-body":{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},class:{rules:[33,34,35,36,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_descr_multiline:{rules:[16,17,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_descr:{rules:[14,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},acc_title:{rules:[12,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},arg_directive:{rules:[7,8,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},type_directive:{rules:[6,7,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},open_directive:{rules:[5,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},callback_args:{rules:[43,44,45,46,47,48,49,50,51,54,58,59,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},callback_name:{rules:[43,44,45,46,47,48,49,50,51,54,55,56,57,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},href:{rules:[43,44,45,46,47,48,49,50,51,52,53,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},struct:{rules:[43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},generic:{rules:[43,44,45,46,47,48,49,50,51,54,60,61,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},bqstring:{rules:[43,44,45,46,47,48,49,50,51,54,62,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},string:{rules:[43,44,45,46,47,48,49,50,51,54,62,63,64,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,9,10,11,13,15,18,19,20,21,22,23,32,43,44,45,46,47,48,49,50,51,54,62,65,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};function K(){this.yy={}}return Z.lexer=W,K.prototype=Z,Z.Parser=K,new K}();a.parser=a;const o=a,s="classId-";let c=[],u={},l=[],h=0,f={},d=0,g=[];const p=t=>r.e.sanitizeText(t,(0,r.c)()),b=function(t){let e="",n=t;if(t.indexOf("~")>0){const i=t.split("~");n=p(i[0]),e=p(i[1])}return{className:n,type:e}},w=function(t){const e=b(t);void 0===u[e.className]&&(u[e.className]={id:e.className,type:e.type,label:e.className,cssClasses:[],methods:[],members:[],annotations:[],domId:s+e.className+"-"+h},h++)},m=function(t){if(t in u)return u[t].domId;throw new Error("Class not found: "+t)},y=function(t,e){const n=b(t).className,i=u[n];if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(p(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(p(t)):t&&i.members.push(p(t))}},v=function(t,e){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n=s+n),void 0!==u[n]&&u[n].cssClasses.push(e)}))},x=function(t,e,n){if("loose"!==(0,r.c)().securityLevel)return;if(void 0===e)return;const i=t;if(void 0!==u[i]){const t=m(i);let a=[];if("string"==typeof n){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t")),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0);(0,i.Ys)(this).classed("hover",!1)}))};g.push(k);let _="TB";const A={parseDirective:function(t,e,n){r.m.parseDirective(this,t,e,n)},setAccTitle:r.s,getAccTitle:r.g,getAccDescription:r.a,setAccDescription:r.b,getConfig:()=>(0,r.c)().class,addClass:w,bindFunctions:function(t){g.forEach((function(e){e(t)}))},clear:function(){c=[],u={},l=[],g=[],g.push(k),f={},d=0,(0,r.v)()},getClass:function(t){return u[t]},getClasses:function(){return u},getNotes:function(){return l},addAnnotation:function(t,e){const n=b(t).className;u[n].annotations.push(e)},addNote:function(t,e){const n={id:`note${l.length}`,class:e,text:t};l.push(n)},getRelations:function(){return c},addRelation:function(t){r.l.debug("Adding relation: "+JSON.stringify(t)),w(t.id1),w(t.id2),t.id1=b(t.id1).className,t.id2=b(t.id2).className,t.relationTitle1=r.e.sanitizeText(t.relationTitle1.trim(),(0,r.c)()),t.relationTitle2=r.e.sanitizeText(t.relationTitle2.trim(),(0,r.c)()),c.push(t)},getDirection:()=>_,setDirection:t=>{_=t},addMember:y,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((e=>y(t,e))))},cleanupLabel:function(t){return t.startsWith(":")&&(t=t.substring(1)),p(t.trim())},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){x(t,e,n),u[t].haveCallback=!0})),v(t,"clickable")},setCssClass:v,setLink:function(t,e,n){const i=(0,r.c)();t.split(",").forEach((function(t){let a=t;t[0].match(/\d/)&&(a=s+a),void 0!==u[a]&&(u[a].link=r.u.formatUrl(e,i),"sandbox"===i.securityLevel?u[a].linkTarget="_top":u[a].linkTarget="string"==typeof n?p(n):"_blank")})),v(t,"clickable")},getTooltip:function(t,e){return e?f[e].classes[t].tooltip:u[t].tooltip},setTooltip:function(t,e){t.split(",").forEach((function(t){void 0!==e&&(u[t].tooltip=p(e))}))},lookUpDomId:m,setDiagramTitle:r.r,getDiagramTitle:r.t,setClassLabel:function(t,e){e&&(e=p(e));const{className:n}=b(t);u[n].label=e},addNamespace:function(t){void 0===f[t]&&(f[t]={id:t,classes:{},children:{},domId:s+t+"-"+d},d++)},addClassesToNamespace:function(t,e){void 0!==f[t]&&e.map((e=>{f[t].classes[e]=u[e],delete u[e],h--}))},getNamespace:function(t){return f[t]},getNamespaces:function(){return f}},E=t=>`g.classGroup text {\n fill: ${t.nodeBorder};\n fill: ${t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n.edgeLabel .label span {\n background: ${t.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`},328:function(t,e,n){"use strict";n.d(e,{D:function(){return u},S:function(){return c},a:function(){return l},b:function(){return s},c:function(){return o},d:function(){return P},p:function(){return a},s:function(){return B}});var i=n(8540),r=function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,3],i=[1,5],r=[1,7],a=[2,5],o=[1,15],s=[1,17],c=[1,21],u=[1,22],l=[1,23],h=[1,24],f=[1,37],d=[1,25],g=[1,26],p=[1,27],b=[1,28],w=[1,29],m=[1,32],y=[1,33],v=[1,34],x=[1,35],k=[1,36],_=[1,39],A=[1,40],E=[1,41],T=[1,42],C=[1,38],S=[1,45],I=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],M=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],D=[1,4,5,7,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],O=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],L={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,classDefStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,class:42,CLASSENTITY_IDS:43,STYLECLASS:44,openDirective:45,typeDirective:46,closeDirective:47,":":48,argDirective:49,direction_tb:50,direction_bt:51,direction_rl:52,direction_lr:53,eol:54,";":55,EDGE_STATE:56,STYLE_SEPARATOR:57,left_of:58,right_of:59,open_directive:60,type_directive:61,arg_directive:62,close_directive:63,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"class",43:"CLASSENTITY_IDS",44:"STYLECLASS",48:":",50:"direction_tb",51:"direction_bt",52:"direction_rl",53:"direction_lr",55:";",56:"EDGE_STATE",57:"STYLE_SEPARATOR",58:"left_of",59:"right_of",60:"open_directive",61:"type_directive",62:"arg_directive",63:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[10,2],[10,2],[10,1],[11,3],[11,3],[12,3],[6,3],[6,5],[32,1],[32,1],[32,1],[32,1],[54,1],[54,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1],[45,1],[46,1],[49,1],[47,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 4:return i.setRootDoc(a[s]),a[s];case 5:this.$=[];break;case 6:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 7:case 8:case 12:this.$=a[s];break;case 9:this.$="nl";break;case 13:const t=a[s-1];t.description=i.trimColon(a[s]),this.$=t;break;case 14:this.$={stmt:"relation",state1:a[s-2],state2:a[s]};break;case 15:const e=i.trimColon(a[s]);this.$={stmt:"relation",state1:a[s-3],state2:a[s-1],description:e};break;case 19:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 20:var c=a[s],u=a[s-2].trim();if(a[s].match(":")){var l=a[s].split(":");c=l[0],u=[u,l[1]]}this.$={stmt:"state",id:c,type:"default",description:u};break;case 21:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 22:this.$={stmt:"state",id:a[s],type:"fork"};break;case 23:this.$={stmt:"state",id:a[s],type:"join"};break;case 24:this.$={stmt:"state",id:a[s],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 30:this.$=a[s].trim(),i.setAccTitle(this.$);break;case 31:case 32:this.$=a[s].trim(),i.setAccDescription(this.$);break;case 33:case 34:this.$={stmt:"classDef",id:a[s-1].trim(),classes:a[s].trim()};break;case 35:this.$={stmt:"applyClass",id:a[s-1].trim(),styleClass:a[s].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:a[s].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:a[s-2].trim(),classes:[a[s].trim()],type:"default",description:""};break;case 50:i.parseDirective("%%{","open_directive");break;case 51:i.parseDirective(a[s],"type_directive");break;case 52:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 53:i.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:e,5:n,6:4,7:i,45:6,60:r},{1:[3]},{3:8,4:e,5:n,6:4,7:i,45:6,60:r},{3:9,4:e,5:n,6:4,7:i,45:6,60:r},{3:10,4:e,5:n,6:4,7:i,45:6,60:r},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,50,51,52,53,56,60],a,{8:11}),{46:12,61:[1,13]},{61:[2,50]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},{47:43,48:[1,44],63:S},t([48,63],[2,51]),t(I,[2,6]),{6:30,10:46,11:18,12:19,13:20,16:c,17:u,19:l,22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,8]),t(I,[2,9]),t(I,[2,10]),t(I,[2,11]),t(I,[2,12],{14:[1,47],15:[1,48]}),t(I,[2,16]),{18:[1,49]},t(I,[2,18],{20:[1,50]}),{23:[1,51]},t(I,[2,22]),t(I,[2,23]),t(I,[2,24]),t(I,[2,25]),{30:52,31:[1,53],58:[1,54],59:[1,55]},t(I,[2,28]),t(I,[2,29]),{34:[1,56]},{36:[1,57]},t(I,[2,32]),{39:[1,58],41:[1,59]},{43:[1,60]},t(M,[2,44],{57:[1,61]}),t(M,[2,45],{57:[1,62]}),t(I,[2,38]),t(I,[2,39]),t(I,[2,40]),t(I,[2,41]),t(D,[2,36]),{49:63,62:[1,64]},t(D,[2,53]),t(I,[2,7]),t(I,[2,13]),{13:65,24:f,56:C},t(I,[2,17]),t(O,a,{8:66}),{24:[1,67]},{24:[1,68]},{23:[1,69]},{24:[2,48]},{24:[2,49]},t(I,[2,30]),t(I,[2,31]),{40:[1,70]},{40:[1,71]},{44:[1,72]},{24:[1,73]},{24:[1,74]},{47:75,63:S},{63:[2,52]},t(I,[2,14],{14:[1,76]}),{4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,21:[1,77],22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,20],{20:[1,78]}),{31:[1,79]},{24:[1,80]},t(I,[2,33]),t(I,[2,34]),t(I,[2,35]),t(M,[2,46]),t(M,[2,47]),t(D,[2,37]),t(I,[2,15]),t(I,[2,19]),t(O,a,{8:81}),t(I,[2,26]),t(I,[2,27]),{4:o,5:s,6:30,9:14,10:16,11:18,12:19,13:20,16:c,17:u,19:l,21:[1,82],22:h,24:f,25:d,26:g,27:p,28:b,29:w,32:31,33:m,35:y,37:v,38:x,42:k,45:6,50:_,51:A,52:E,53:T,56:C,60:r},t(I,[2,21])],defaultActions:{7:[2,50],8:[2,1],9:[2,2],10:[2,3],54:[2,48],55:[2,49],64:[2,52]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},N={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return 41;case 1:case 44:return 50;case 2:case 45:return 51;case 3:case 46:return 52;case 4:case 47:return 53;case 5:return this.begin("open_directive"),60;case 6:return this.begin("type_directive"),61;case 7:return this.popState(),this.begin("arg_directive"),48;case 8:return this.popState(),this.popState(),63;case 9:return 62;case 10:case 11:case 13:case 14:case 15:case 16:case 56:case 58:case 64:break;case 12:case 79:return 5;case 17:case 34:return this.pushState("SCALE"),17;case 18:case 35:return 18;case 19:case 25:case 36:case 51:case 54:this.popState();break;case 20:return this.begin("acc_title"),33;case 21:return this.popState(),"acc_title_value";case 22:return this.begin("acc_descr"),35;case 23:return this.popState(),"acc_descr_value";case 24:this.begin("acc_descr_multiline");break;case 26:return"acc_descr_multiline_value";case 27:return this.pushState("CLASSDEF"),38;case 28:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 29:return this.popState(),this.pushState("CLASSDEFID"),39;case 30:return this.popState(),40;case 31:return this.pushState("CLASS"),42;case 32:return this.popState(),this.pushState("CLASS_STYLE"),43;case 33:return this.popState(),44;case 37:this.pushState("STATE");break;case 38:case 41:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 48:this.pushState("STATE_STRING");break;case 49:return this.pushState("STATE_ID"),"AS";case 50:case 66:return this.popState(),"ID";case 52:return"STATE_DESCR";case 53:return 19;case 55:return this.popState(),this.pushState("struct"),20;case 57:return this.popState(),21;case 59:return this.begin("NOTE"),29;case 60:return this.popState(),this.pushState("NOTE_ID"),58;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:this.popState(),this.pushState("FLOATING_NOTE");break;case 63:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 65:return"NOTE_TEXT";case 67:return this.popState(),this.pushState("NOTE_TEXT"),24;case 68:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 69:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 70:case 71:return 7;case 72:return 16;case 73:return 56;case 74:return 24;case 75:return e.yytext=e.yytext.trim(),14;case 76:return 15;case 77:return 28;case 78:return 57;case 80:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[14,15],inclusive:!1},close_directive:{rules:[14,15],inclusive:!1},arg_directive:{rules:[8,9,14,15],inclusive:!1},type_directive:{rules:[7,8,14,15],inclusive:!1},open_directive:{rules:[6,14,15],inclusive:!1},struct:{rules:[14,15,27,31,37,44,45,46,47,56,57,58,59,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[66],inclusive:!1},FLOATING_NOTE:{rules:[63,64,65],inclusive:!1},NOTE_TEXT:{rules:[68,69],inclusive:!1},NOTE_ID:{rules:[67],inclusive:!1},NOTE:{rules:[60,61,62],inclusive:!1},CLASS_STYLE:{rules:[33],inclusive:!1},CLASS:{rules:[32],inclusive:!1},CLASSDEFID:{rules:[30],inclusive:!1},CLASSDEF:{rules:[28,29],inclusive:!1},acc_descr_multiline:{rules:[25,26],inclusive:!1},acc_descr:{rules:[23],inclusive:!1},acc_title:{rules:[21],inclusive:!1},SCALE:{rules:[18,19,35,36],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[50],inclusive:!1},STATE_STRING:{rules:[51,52],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[14,15,38,39,40,41,42,43,48,49,53,54,55],inclusive:!1},ID:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,10,11,12,13,15,16,17,20,22,24,27,31,34,37,55,59,70,71,72,73,74,75,76,78,79,80],inclusive:!0}}};function P(){this.yy={}}return L.lexer=N,P.prototype=L,L.Parser=P,new P}();r.parser=r;const a=r,o="TB",s="state",c="relation",u="default",l="divider",h="[*]",f="start",d="color",g="fill";let p="LR",b=[],w={};let m={root:{relations:[],states:{},documents:{}}},y=m.root,v=0,x=0;const k=t=>JSON.parse(JSON.stringify(t)),_=(t,e,n)=>{if(e.stmt===c)_(t,e.state1,!0),_(t,e.state2,!1);else if(e.stmt===s&&("[*]"===e.id?(e.id=n?t.id+"_start":t.id+"_end",e.start=n):e.id=e.id.trim()),e.doc){const t=[];let n,r=[];for(n=0;n0&&r.length>0){const n={stmt:s,id:(0,i.F)(),type:"divider",doc:k(r)};t.push(k(n)),e.doc=t}e.doc.forEach((t=>_(e,t,!0)))}},A=function(t,e=u,n=null,r=null,a=null,o=null,s=null,c=null){const l=null==t?void 0:t.trim();if(void 0===y.states[l]?(i.l.info("Adding state ",l,r),y.states[l]={id:l,descriptions:[],type:e,doc:n,note:a,classes:[],styles:[],textStyles:[]}):(y.states[l].doc||(y.states[l].doc=n),y.states[l].type||(y.states[l].type=e)),r&&(i.l.info("Setting state description",l,r),"string"==typeof r&&M(l,r.trim()),"object"==typeof r&&r.forEach((t=>M(l,t.trim())))),a&&(y.states[l].note=a,y.states[l].note.text=i.e.sanitizeText(y.states[l].note.text,(0,i.c)())),o){i.l.info("Setting state classes",l,o);("string"==typeof o?[o]:o).forEach((t=>O(l,t.trim())))}if(s){i.l.info("Setting state styles",l,s);("string"==typeof s?[s]:s).forEach((t=>L(l,t.trim())))}if(c){i.l.info("Setting state styles",l,s);("string"==typeof c?[c]:c).forEach((t=>N(l,t.trim())))}},E=function(t){m={root:{relations:[],states:{},documents:{}}},y=m.root,v=0,w={},t||(0,i.v)()},T=function(t){return y.states[t]};function C(t=""){let e=t;return t===h&&(v++,e=`start${v}`),e}function S(t="",e=u){return t===h?f:e}const I=function(t,e,n){if("object"==typeof t)!function(t,e,n){let r=C(t.id.trim()),a=S(t.id.trim(),t.type),o=C(e.id.trim()),s=S(e.id.trim(),e.type);A(r,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),A(o,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),y.relations.push({id1:r,id2:o,relationTitle:i.e.sanitizeText(n,(0,i.c)())})}(t,e,n);else{const r=C(t.trim()),a=S(t),o=function(t=""){let e=t;return"[*]"===t&&(v++,e=`end${v}`),e}(e.trim()),s=function(t="",e=u){return"[*]"===t?"end":e}(e);A(r,a),A(o,s),y.relations.push({id1:r,id2:o,title:i.e.sanitizeText(n,(0,i.c)())})}},M=function(t,e){const n=y.states[t],r=e.startsWith(":")?e.replace(":","").trim():e;n.descriptions.push(i.e.sanitizeText(r,(0,i.c)()))},D=function(t,e=""){void 0===w[t]&&(w[t]={id:t,styles:[],textStyles:[]});const n=w[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(d)){const t=e.replace(g,"bgFill").replace(d,g);n.textStyles.push(t)}n.styles.push(e)}))},O=function(t,e){t.split(",").forEach((function(t){let n=T(t);if(void 0===n){const e=t.trim();A(e),n=T(e)}n.classes.push(e)}))},L=function(t,e){const n=T(t);void 0!==n&&n.textStyles.push(e)},N=function(t,e){const n=T(t);void 0!==n&&n.textStyles.push(e)},P={parseDirective:function(t,e,n){i.m.parseDirective(this,t,e,n)},getConfig:()=>(0,i.c)().state,addState:A,clear:E,getState:T,getStates:function(){return y.states},getRelations:function(){return y.relations},getClasses:function(){return w},getDirection:()=>p,addRelation:I,getDividerId:()=>(x++,"divider-id-"+x),setDirection:t=>{p=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){i.l.info("Documents = ",m)},getRootDoc:()=>b,setRootDoc:t=>{i.l.info("Setting root doc",t),b=t},getRootDocV2:()=>(_({id:"root"},{id:"root",doc:b},!0),{id:"root",doc:b}),extract:t=>{let e;e=t.doc?t.doc:t,i.l.info(e),E(!0),i.l.info("Extract",e),e.forEach((t=>{switch(t.stmt){case s:A(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case c:I(t.state1,t.state2,t.description);break;case"classDef":D(t.id.trim(),t.classes);break;case"applyClass":O(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:i.g,setAccTitle:i.s,getAccDescription:i.a,setAccDescription:i.b,addStyleClass:D,setCssClass:O,addDescription:M,setDiagramTitle:i.r,getDiagramTitle:i.t},B=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`},3148:function(t,e,n){"use strict";n.d(e,{p:function(){return s},s:function(){return l}});var i=n(1504),r=n(8540);let a=0;const o=function(t){let e=t.id;return t.type&&(e+="<"+t.type+">"),e},s=function(t){let e="",n="",i="",a="",o=t.substring(0,1),s=t.substring(t.length-1,t.length);o.match(/[#+~-]/)&&(a=o);let c=/[\s\w)~]/;s.match(c)||(n=u(s));const l=""===a?0:1;let h=""===n?t.length:t.length-1;const f=(t=t.substring(l,h)).indexOf("("),d=t.indexOf(")");if(f>1&&d>f&&d<=t.length){let o=t.substring(0,f).trim();const s=t.substring(f+1,d);if(e=a+o+"("+(0,r.x)(s.trim())+")",d0&&(x+=e.cssClasses.join(" "));const k=u.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*n.padding).attr("height",v.height+n.padding+.5*n.dividerMargin).attr("class",x).node().getBBox().width;return l.node().childNodes.forEach((function(t){t.setAttribute("x",(k-t.getBBox().width)/2)})),e.tooltip&&l.insert("title").text(e.tooltip),p.attr("x2",k),m.attr("x2",k),s.width=k,s.height=v.height+n.padding+.5*n.dividerMargin,s},drawEdge:function(t,e,n,o,s){const c=function(t){switch(t){case s.db.relationType.AGGREGATION:return"aggregation";case s.db.relationType.EXTENSION:return"extension";case s.db.relationType.COMPOSITION:return"composition";case s.db.relationType.DEPENDENCY:return"dependency";case s.db.relationType.LOLLIPOP:return"lollipop"}};e.points=e.points.filter((t=>!Number.isNaN(t.y)));const u=e.points,l=(0,i.jvg)().x((function(t){return t.x})).y((function(t){return t.y})).curve(i.$0Z),h=t.append("path").attr("d",l(u)).attr("id","edge"+a).attr("class","relation");let f,d,g="";o.arrowMarkerAbsolute&&(g=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,g=g.replace(/\(/g,"\\("),g=g.replace(/\)/g,"\\)")),1==n.relation.lineType&&h.attr("class","relation dashed-line"),10==n.relation.lineType&&h.attr("class","relation dotted-line"),"none"!==n.relation.type1&&h.attr("marker-start","url("+g+"#"+c(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&h.attr("marker-end","url("+g+"#"+c(n.relation.type2)+"End)");const p=e.points.length;let b,w,m,y,v=r.u.calcLabelPosition(e.points);if(f=v.x,d=v.y,p%2!=0&&p>1){let t=r.u.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),i=r.u.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[p-1]);r.l.debug("cardinality_1_point "+JSON.stringify(t)),r.l.debug("cardinality_2_point "+JSON.stringify(i)),b=t.x,w=t.y,m=i.x,y=i.y}if(void 0!==n.title){const e=t.append("g").attr("class","classLabel"),i=e.append("text").attr("class","label").attr("x",f).attr("y",d).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=i;const r=i.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",r.x-o.padding/2).attr("y",r.y-o.padding/2).attr("width",r.width+o.padding).attr("height",r.height+o.padding)}if(r.l.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1){t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",b).attr("y",w).attr("fill","black").attr("font-size","6").text(n.relationTitle1)}if(void 0!==n.relationTitle2&&"none"!==n.relationTitle2){t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",m).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2)}a++},drawNote:function(t,e,n,i){r.l.debug("Rendering note ",e,n);const a=e.id,o={id:a,text:e.text,width:0,height:0},s=t.append("g").attr("id",a).attr("class","classGroup");let c=s.append("text").attr("y",n.textHeight+n.padding).attr("x",0);const u=JSON.parse(`"${e.text}"`).split("\n");u.forEach((function(t){r.l.debug(`Adding line: ${t}`),c.append("tspan").text(t).attr("class","title").attr("dy",n.textHeight)}));const l=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",l.width+2*n.padding).attr("height",l.height+u.length*n.textHeight+n.padding+.5*n.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach((function(t){t.setAttribute("x",(h-t.getBBox().width)/2)})),o.width=h,o.height=l.height+u.length*n.textHeight+n.padding+.5*n.dividerMargin,o},parseMember:s}},2699:function(t,e,n){"use strict";n.d(e,{a:function(){return a},b:function(){return c},c:function(){return s},d:function(){return r},e:function(){return l},f:function(){return o},g:function(){return u}});var i=n(2510);const r=function(t,e){const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),"undefined"!==e.attrs&&null!==e.attrs)for(let t in e.attrs)n.attr(t,e.attrs[t]);return"undefined"!==e.class&&n.attr("class",e.class),n},a=function(t,e){r(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"}).lower()},o=function(t,e){const n=e.text.replace(//gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),i},s=function(t,e,n,r){const a=t.append("image");a.attr("x",e),a.attr("y",n);var o=(0,i.Nm)(r);a.attr("xlink:href",o)},c=function(t,e,n,r){const a=t.append("use");a.attr("x",e),a.attr("y",n);const o=(0,i.Nm)(r);a.attr("xlink:href","#"+o)},u=function(){return{x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}},l=function(){return{x:0,y:0,width:100,height:100,fill:void 0,anchor:void 0,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}}},315:function(t,e,n){"use strict";n.r(e),n.d(e,{diagram:function(){return N}});var i=n(8540),r=n(1504),a=n(7471),o=n(1778),s=n(733),c=(n(7530),n(2510),n(6951),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[1,2],n=[1,5],i=[6,9,11,17,18,20,22,23,26,27,28],r=[1,15],a=[1,16],o=[1,17],s=[1,18],c=[1,19],u=[1,23],l=[1,24],h=[1,27],f=[4,6,9,11,17,18,20,22,23,26,27,28],d={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,acc_title:18,acc_title_value:19,acc_descr:20,acc_descr_value:21,acc_descr_multiline_value:22,section:23,period_statement:24,event_statement:25,period:26,event:27,open_directive:28,type_directive:29,arg_directive:30,close_directive:31,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"acc_title",19:"acc_title_value",20:"acc_descr",21:"acc_descr_value",22:"acc_descr_multiline_value",23:"section",26:"period",27:"event",28:"open_directive",29:"type_directive",30:"arg_directive",31:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,2],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[24,1],[25,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(t,e,n,i,r,a,o){var s=a.length-1;switch(r){case 1:return a[s-1];case 3:case 7:case 8:this.$=[];break;case 4:a[s-1].push(a[s]),this.$=a[s-1];break;case 5:case 6:this.$=a[s];break;case 11:i.getCommonDb().setDiagramTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 12:this.$=a[s].trim(),i.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=a[s].trim(),i.getCommonDb().setAccDescription(this.$);break;case 15:i.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 19:i.addTask(a[s],0,""),this.$=a[s];break;case 20:i.addEvent(a[s].substr(2)),this.$=a[s];break;case 21:i.parseDirective("%%{","open_directive");break;case 22:i.parseDirective(a[s],"type_directive");break;case 23:a[s]=a[s].trim().replace(/'/g,'"'),i.parseDirective(a[s],"arg_directive");break;case 24:i.parseDirective("}%%","close_directive","timeline")}},table:[{3:1,4:e,7:3,12:4,28:n},{1:[3]},t(i,[2,3],{5:6}),{3:7,4:e,7:3,12:4,28:n},{13:8,29:[1,9]},{29:[2,21]},{6:[1,10],7:22,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:a,20:o,22:s,23:c,24:20,25:21,26:u,27:l,28:n},{1:[2,2]},{14:25,15:[1,26],31:h},t([15,31],[2,22]),t(i,[2,8],{1:[2,1]}),t(i,[2,4]),{7:22,10:28,12:4,17:r,18:a,20:o,22:s,23:c,24:20,25:21,26:u,27:l,28:n},t(i,[2,6]),t(i,[2,7]),t(i,[2,11]),{19:[1,29]},{21:[1,30]},t(i,[2,14]),t(i,[2,15]),t(i,[2,16]),t(i,[2,17]),t(i,[2,18]),t(i,[2,19]),t(i,[2,20]),{11:[1,31]},{16:32,30:[1,33]},{11:[2,24]},t(i,[2,5]),t(i,[2,12]),t(i,[2,13]),t(f,[2,9]),{14:34,31:h},{31:[2,23]},{11:[1,35]},t(f,[2,10])],defaultActions:{5:[2,21],7:[2,2],27:[2,24],33:[2,23]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,s="",c=0,u=0,l=2,h=1,f=a.slice.call(arguments,1),d=Object.create(this.lexer),g={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(g.yy[p]=this.yy[p]);d.setInput(t,g.yy),g.yy.lexer=d,g.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var b=d.yylloc;a.push(b);var w=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||h)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,v,x,k,_,A,E,T,C={};;){if(v=n[n.length-1],this.defaultActions[v]?x=this.defaultActions[v]:(null==y&&(y=m()),x=o[v]&&o[v][y]),void 0===x||!x.length||!x[0]){var S="";for(_ in T=[],o[v])this.terminals_[_]&&_>l&&T.push("'"+this.terminals_[_]+"'");S=d.showPosition?"Parse error on line "+(c+1)+":\n"+d.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==h?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(S,{text:d.match,token:this.terminals_[y]||y,line:d.yylineno,loc:b,expected:T})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+y);switch(x[0]){case 1:n.push(y),r.push(d.yytext),a.push(d.yylloc),n.push(x[1]),y=null,u=d.yyleng,s=d.yytext,c=d.yylineno,b=d.yylloc;break;case 2:if(A=this.productions_[x[1]][1],C.$=r[r.length-A],C._$={first_line:a[a.length-(A||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(A||1)].first_column,last_column:a[a.length-1].last_column},w&&(C._$.range=[a[a.length-(A||1)].range[0],a[a.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[s,u,c,g.yy,x[1],r,a].concat(f))))return k;A&&(n=n.slice(0,-1*A*2),r=r.slice(0,-1*A),a=a.slice(0,-1*A)),n.push(this.productions_[x[1]][0]),r.push(C.$),a.push(C._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},g={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in r)this[a]=r[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),a=0;ae[0].length)){if(e=n,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,r[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,r[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),28;case 1:return this.begin("type_directive"),29;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),31;case 4:return 30;case 5:case 6:case 8:case 9:break;case 7:return 11;case 10:return 4;case 11:return 17;case 12:return this.begin("acc_title"),18;case 13:return this.popState(),"acc_title_value";case 14:return this.begin("acc_descr"),20;case 15:return this.popState(),"acc_descr_value";case 16:this.begin("acc_descr_multiline");break;case 17:this.popState();break;case 18:return"acc_descr_multiline_value";case 19:return 23;case 20:return 27;case 21:return 26;case 22:return 6;case 23:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},acc_descr_multiline:{rules:[17,18],inclusive:!1},acc_descr:{rules:[15],inclusive:!1},acc_title:{rules:[13],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,14,16,19,20,21,22,23],inclusive:!0}}};function p(){this.yy={}}return d.lexer=g,p.prototype=d,d.Parser=p,new p}());c.parser=c;const u=c;let l="",h=0;const f=[],d=[],g=[],p=()=>i.I,b=(t,e,n)=>{(0,i.J)(globalThis,t,e,n)},w=function(){f.length=0,d.length=0,l="",g.length=0,(0,i.v)()},m=function(t){l=t,f.push(t)},y=function(){return f},v=function(){let t=A();let e=0;for(;!t&&e<100;)t=A(),e++;return d.push(...g),d},x=function(t,e,n){const i={id:h++,section:l,type:l,task:t,score:e||0,events:n?[n]:[]};g.push(i)},k=function(t){g.find((t=>t.id===h-1)).events.push(t)},_=function(t){const e={section:l,type:l,description:t,task:t,classes:[]};d.push(e)},A=function(){let t=!0;for(const[e,n]of g.entries())g[e].processed,t=t&&n.processed;return t},E={clear:w,getCommonDb:p,addSection:m,getSections:y,getTasks:v,addTask:x,addTaskOrg:_,addEvent:k,parseDirective:b},T=Object.freeze(Object.defineProperty({__proto__:null,addEvent:k,addSection:m,addTask:x,addTaskOrg:_,clear:w,default:E,getCommonDb:p,getSections:y,getTasks:v,parseDirective:b},Symbol.toStringTag,{value:"Module"}));!function(){function t(t,e,n,r,a,o,s,c){i(e.append("text").attr("x",n+a/2).attr("y",r+o/2+5).style("font-color",c).style("text-anchor","middle").text(t),s)}function e(t,e,n,r,a,o,s,c,u){const{taskFontSize:l,taskFontFamily:h}=c,f=t.split(//gi);for(let t=0;t)/).reverse(),a=[],o=n.attr("y"),s=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",o).attr("dy",s+"em");for(let r=0;re||"
"===t)&&(a.pop(),c.text(a.join(" ").trim()),a="
"===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",o).attr("dy","1.1em").text(t))}))}const S=function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)},I=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")},M=function(t,e,n,i){const r=n%12-1,a=t.append("g");e.section=r,a.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+r);const o=a.append("g"),s=a.append("g"),c=s.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(C,e.width).node().getBBox(),u=i.fontSize&&i.fontSize.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*u*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,s.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),S(o,e,r),e},D=function(t,e,n){const i=t.append("g"),r=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(C,e.width).node().getBBox(),a=n.fontSize&&n.fontSize.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),r.height+1.1*a*.5+e.padding},O=function(t,e,n,r,a,o,s,c,u,l,h){var f;for(const c of e){const e={descr:c.task,section:n,number:n,width:150,padding:20,maxHeight:o};i.l.debug("taskNode",e);const d=t.append("g").attr("class","taskWrapper"),g=M(d,e,n,s).height;if(i.l.debug("taskHeight after draw",g),d.attr("transform",`translate(${r}, ${a})`),o=Math.max(o,g),c.events){const e=t.append("g").attr("class","lineWrapper");let i=o;a+=100,i+=L(t,c.events,n,r,a,s),a-=100,e.append("line").attr("x1",r+95).attr("y1",a+o).attr("x2",r+95).attr("y2",a+o+(h?o:l)+u+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}r+=200,h&&!(null==(f=s.timeline)?void 0:f.disableMulticolor)&&n++}a-=10},L=function(t,e,n,r,a,o){let s=0;const c=a;a+=100;for(const c of e){const e={descr:c,section:n,number:n,width:150,padding:20,maxHeight:50};i.l.debug("eventNode",e);const u=t.append("g").attr("class","eventWrapper"),l=M(u,e,n,o).height;s+=l,u.attr("transform",`translate(${r}, ${a})`),a=a+10+l}return a=c,s},N={db:T,renderer:{setConf:()=>{},draw:function(t,e,n,a){var o,s,c,u;const l=(0,i.c)(),h=l.leftMargin??50;null==(s=(o=a.db).clear)||s.call(o),a.parser.parse(t+"\n"),i.l.debug("timeline",a.db);const f=l.securityLevel;let d;"sandbox"===f&&(d=(0,r.Ys)("#i"+e));const g=("sandbox"===f?(0,r.Ys)(d.nodes()[0].contentDocument.body):(0,r.Ys)("body")).select("#"+e);g.append("g");const p=a.db.getTasks(),b=a.db.getCommonDb().getDiagramTitle();i.l.debug("task",p),I(g);const w=a.db.getSections();i.l.debug("sections",w);let m=0,y=0,v=0,x=0,k=50+h,_=50;x=50;let A=0,E=!0;w.forEach((function(t){const e=D(g,{number:A,descr:t,section:A,width:150,padding:20,maxHeight:m},l);i.l.debug("sectionHeight before draw",e),m=Math.max(m,e+20)}));let T=0,C=0;i.l.debug("tasks.length",p.length);for(const[t,e]of p.entries()){const n={number:t,descr:e,section:e.section,width:150,padding:20,maxHeight:y},r=D(g,n,l);i.l.debug("taskHeight before draw",r),y=Math.max(y,r+20),T=Math.max(T,e.events.length);let a=0;for(let t=0;t0?w.forEach((t=>{const e=p.filter((e=>e.section===t)),n={number:A,descr:t,section:A,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:m};i.l.debug("sectionNode",n);const r=g.append("g"),a=M(r,n,A,l);i.l.debug("sectionNode output",a),r.attr("transform",`translate(${k}, 50)`),_+=m+50,e.length>0&&O(g,e,A,k,_,y,l,T,C,m,!1),k+=200*Math.max(e.length,1),_=50,A++})):(E=!1,O(g,p,A,k,_,y,l,T,C,m,!0));const S=g.node().getBBox();i.l.debug("bounds",S),b&&g.append("text").text(b).attr("x",S.width/2-h).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),v=E?m+y+150:y+100;g.append("g").attr("class","lineWrapper").append("line").attr("x1",h).attr("y1",v).attr("x2",S.width+3*h).attr("y2",v).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.p)(void 0,g,(null==(c=l.timeline)?void 0:c.padding)??50,(null==(u=l.timeline)?void 0:u.useMaxWidth)??!1)}},parser:u,styles:t=>`\n .edge {\n stroke-width: 3;\n }\n ${(t=>{let e="";for(let e=0;e0&&void 0!==n[0]?n[0]:[{}],t.abrupt("return",(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((function(t,n){var i=document.createElement("input");i.type="file",i.webkitdirectory=!0;var r=function(e){"function"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(r,(function(){return a(n)}),i);i.addEventListener("change",(function(){var t=Array.from(i.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter((function(t){return t.webkitRelativePath.split("/").every((function(t){return!e[0].skipDirectory({name:t,kind:"directory"})}))}))):t=t.filter((function(t){return 2===t.webkitRelativePath.split("/").length})),r(t)})),i.click()}))));case 2:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},4036:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return c}});var i=n(1930),r=n(8950),a=n(2975);function o(t){function e(t){if(Object(t)!==t)return Promise.reject(new TypeError(t+" is not an object."));var e=t.done;return Promise.resolve(t.value).then((function(t){return{value:t,done:e}}))}return(o=function(t){this.s=t,this.n=t.next}).prototype={s:null,n:null,next:function(){return e(this.n.apply(this.s,arguments))},return:function(t){var n=this.s.return;return void 0===n?Promise.resolve({value:t,done:!0}):e(n.apply(this.s,arguments))},throw:function(t){var n=this.s.return;return void 0===n?Promise.reject(t):e(n.apply(this.s,arguments))}},new o(t)}var s=function(){var t=(0,r.Z)(a.mark((function t(e,n){var r,c,u,l,h,f,d,g,p,b,w=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=w.length>2&&void 0!==w[2]?w[2]:e.name,c=w.length>3?w[3]:void 0,u=[],l=[],f=!1,d=!1,t.prev=4,g=function(){var t=p.value,i="".concat(r,"/").concat(t.name);"file"===t.kind?l.push(t.getFile().then((function(n){return n.directoryHandle=e,n.handle=t,Object.defineProperty(n,"webkitRelativePath",{configurable:!0,enumerable:!0,get:function(){return i}})}))):"directory"!==t.kind||!n||c&&c(t)||u.push(s(t,n,i,c))},b=function(t){var e,n,i,r=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,i=Symbol.iterator);r--;){if(n&&null!=(e=t[n]))return e.call(t);if(i&&null!=(e=t[i]))return new o(e.call(t));n="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}(e.values());case 7:return t.next=9,b.next();case 9:if(!(f=!(p=t.sent).done)){t.next=14;break}g();case 11:f=!1,t.next=7;break;case 14:t.next=19;break;case 16:t.prev=16,t.t0=t.catch(4),d=!0,h=t.t0;case 19:if(t.prev=19,t.prev=20,t.t1=f&&null!=b.return,!t.t1){t.next=25;break}return t.next=25,b.return();case 25:if(t.prev=25,!d){t.next=28;break}throw h;case 28:return t.finish(25);case 29:return t.finish(19);case 30:return t.t2=[],t.t3=i.Z,t.next=34,Promise.all(u);case 34:return t.t4=t.sent.flat(),t.t5=(0,t.t3)(t.t4),t.t6=i.Z,t.next=39,Promise.all(l);case 39:return t.t7=t.sent,t.t8=(0,t.t6)(t.t7),t.abrupt("return",t.t2.concat.call(t.t2,t.t5,t.t8));case 42:case"end":return t.stop()}}),t,null,[[4,16,19,30],[20,,25,29]])})));return function(e,n){return t.apply(this,arguments)}}(),c=function(){var t=(0,r.Z)(a.mark((function t(){var e,n,i=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return(e=i.length>0&&void 0!==i[0]?i[0]:{}).recursive=e.recursive||!1,t.next=4,window.showDirectoryPicker({id:e.id,startIn:e.startIn});case 4:return n=t.sent,t.abrupt("return",s(n,e.recursive,void 0,e.skipDirectory));case 6:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},7464:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return o}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.getFile();case 2:return n=t.sent,t.abrupt("return",(n.handle=e,n));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),o=function(){var t=(0,i.Z)(r.mark((function t(){var e,n,i,o,s=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=s.length>0&&void 0!==s[0]?s[0]:[{}],Array.isArray(e)||(e=[e]),n=[],e.forEach((function(t,e){n[e]={description:t.description||"",accept:{}},t.mimeTypes?t.mimeTypes.map((function(i){n[e].accept[i]=t.extensions||[]})):n[e].accept["*/*"]=t.extensions||[]})),t.next=6,window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:n,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1});case 6:return i=t.sent,t.next=9,Promise.all(i.map(a));case 9:return o=t.sent,t.abrupt("return",e[0].multiple?o:o[0]);case 11:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},3948:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return o}});var i=n(1930),r=n(8950),a=n(2975),o=function(){var t=(0,r.Z)(a.mark((function t(){var e,n=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=n.length>0&&void 0!==n[0]?n[0]:[{}],t.abrupt("return",(Array.isArray(e)||(e=[e]),new Promise((function(t,n){var r=document.createElement("input");r.type="file";var a=[].concat((0,i.Z)(e.map((function(t){return t.mimeTypes||[]}))),(0,i.Z)(e.map((function(t){return t.extensions||[]})))).join();r.multiple=e[0].multiple||!1,r.accept=a||"";var o=function(e){"function"==typeof s&&s(),t(e)},s=e[0].legacySetup&&e[0].legacySetup(o,(function(){return s(n)}),r);r.addEventListener("change",(function(){o(r.multiple?Array.from(r.files):r.files[0])})),r.click()}))));case 2:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}()},341:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return a}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n,a,o,s,c,u=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=u.length>1&&void 0!==u[1]?u[1]:{},Array.isArray(n)&&(n=n[0]),a=document.createElement("a"),o=e,t.t0="body"in e,!t.t0){t.next=9;break}return t.next=8,function(){var t=(0,i.Z)(r.mark((function t(e,n){var a,o,s,c;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=e.getReader(),o=new ReadableStream({start:function(t){return function(){var e=(0,i.Z)(r.mark((function e(){return r.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.read().then((function(e){var i=e.done,r=e.value;if(!i)return t.enqueue(r),n();t.close()})));case 1:case"end":return e.stop()}}),e)})));function n(){return e.apply(this,arguments)}return n}()()}}),s=new Response(o),t.next=5,s.blob();case 5:return c=t.sent,t.abrupt("return",(a.releaseLock(),new Blob([c],{type:n})));case 7:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}()(e.body,e.headers.get("content-type"));case 8:o=t.sent;case 9:return a.download=n.fileName||"Untitled",t.t1=URL,t.next=13,o;case 13:return t.t2=t.sent,a.href=t.t1.createObjectURL.call(t.t1,t.t2),s=function(){"function"==typeof c&&c()},c=n.legacySetup&&n.legacySetup(s,(function(){return c(reject)}),a),t.abrupt("return",(a.addEventListener("click",(function(){setTimeout((function(){return URL.revokeObjectURL(a.href)}),3e4),s()})),a.click(),null));case 17:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()},357:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return a}});var i=n(8950),r=n(2975),a=function(){var t=(0,i.Z)(r.mark((function t(e){var n,i,a,o,s,c,u,l,h,f=arguments;return r.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=f.length>1&&void 0!==f[1]?f[1]:[{}],i=f.length>2&&void 0!==f[2]?f[2]:null,a=f.length>3&&void 0!==f[3]&&f[3],o=f.length>4&&void 0!==f[4]?f[4]:null,Array.isArray(n)||(n=[n]),n[0].fileName=n[0].fileName||"Untitled",s=[],c=null,e instanceof Blob&&e.type?c=e.type:e.headers&&e.headers.get("content-type")&&(c=e.headers.get("content-type")),n.forEach((function(t,e){s[e]={description:t.description||"",accept:{}},t.mimeTypes?(0===e&&c&&t.mimeTypes.push(c),t.mimeTypes.map((function(n){s[e].accept[n]=t.extensions||[]}))):c&&(s[e].accept[c]=t.extensions||[])})),!i){t.next=17;break}return t.prev=8,t.next=11,i.getFile();case 11:t.next=17;break;case 13:if(t.prev=13,t.t0=t.catch(8),i=null,!a){t.next=17;break}throw t.t0;case 17:if(t.t1=i,t.t1){t.next=22;break}return t.next=21,window.showSaveFilePicker({suggestedName:n[0].fileName,id:n[0].id,startIn:n[0].startIn,types:s,excludeAcceptAllOption:n[0].excludeAcceptAllOption||!1});case 21:t.t1=t.sent;case 22:return u=t.t1,!i&&o&&o(),t.next=26,u.createWritable();case 26:if(l=t.sent,!("stream"in e)){t.next=32;break}return h=e.stream(),t.next=31,h.pipeTo(l);case 31:return t.abrupt("return",u);case 32:if(!("body"in e)){t.next=38;break}return t.next=35,e.body.pipeTo(l);case 35:t.t2=u,t.next=47;break;case 38:return t.t3=l,t.next=41,e;case 41:return t.t4=t.sent,t.next=44,t.t3.write.call(t.t3,t.t4);case 44:return t.next=46,l.close();case 46:t.t2=u;case 47:return t.abrupt("return",t.t2);case 48:case"end":return t.stop()}}),t,null,[[8,13]])})));return function(e){return t.apply(this,arguments)}}()}}]); \ No newline at end of file diff --git a/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt new file mode 100644 index 0000000..705cfa1 --- /dev/null +++ b/public/excalidraw/excalidraw-assets/vendor-677e88ca78c86bddf13d.js.LICENSE.txt @@ -0,0 +1,32 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/*! + +pica +https://github.com/nodeca/pica + +*/ + +/*! + * Wait for document loaded before starting the execution + */ + +/*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + */ + +/*! @license DOMPurify 3.0.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.3/LICENSE */ + +/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/*! Check if previously processed */ + +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */